diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e06150f575..f9317e3102 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -511,9 +511,11 @@ jobs: - run: node scripts/i18n/check-ui-keys-coverage.mjs --threshold=65 # Real-translation ratchet: a leaf copied verbatim from en.json passes key # parity above but is still English to the user (es shipped 55% English). - # Advisory in PR-0; flipped to blocking once the backlog is retranslated (PR-4). - - name: i18n real-translation ratio (advisory) - run: node scripts/i18n/check-translation-ratio.mjs --warn + # Blocking since PR-4 retranslated the verbatim-English backlog: the share of + # untranslated leaves per locale may only fall (ratchet baseline in + # config/quality/i18n-translation-baseline.json; `npm run i18n:check-ratio:update`). + - name: i18n real-translation ratio + run: node scripts/i18n/check-translation-ratio.mjs # #8463: a rewritten English value used to leave its 39 translations behind # silently (googleOAuthWarning shipped wrong copy in 39 locales for months). # Key parity above cannot see it — a stale translation counts as covered. diff --git a/changelog.d/fixes/13782-i18n-retranslate-english-leaves.md b/changelog.d/fixes/13782-i18n-retranslate-english-leaves.md new file mode 100644 index 0000000000..c45123f480 --- /dev/null +++ b/changelog.d/fixes/13782-i18n-retranslate-english-leaves.md @@ -0,0 +1 @@ +- **fix(i18n):** retranslate the English strings that had been copied verbatim into the locale catalogs (Spanish alone carried 7,142) and turn the real-translation ratio gate into a blocking ratchet. (#13782) diff --git a/config/quality/i18n-translation-baseline.json b/config/quality/i18n-translation-baseline.json index f265f95843..d80ec90e32 100644 --- a/config/quality/i18n-translation-baseline.json +++ b/config/quality/i18n-translation-baseline.json @@ -2,70 +2,70 @@ "_comment": "Catraca de tradução real (valor idêntico ao en.json, placeholder ou ausente, fora do allowlist untranslatable-keys.json) em % por locale. Só pode cair. Atualize via `npm run i18n:check-ratio:update` quando um locale melhora. Valores medidos, nunca chutados.", "slack": 0.5, "locales": { - "am": 1.8, - "ar": 4, - "az": 48.8, - "bg": 24.7, - "bn": 44.1, - "cs": 22.7, - "da": 27.9, - "de": 26, - "el": 3.2, - "es": 56.2, - "et": 2.4, - "fa": 43.8, - "fi": 25.1, - "fr": 25.9, - "ga": 2.7, - "gu": 43.5, - "ha": 2.8, - "he": 25.4, - "hi": 25.8, - "hr": 3.5, - "hu": 27, - "hy": 1.6, - "id": 27.2, - "ig": 2.8, - "it": 26.9, - "ja": 25.6, - "ka": 1.7, - "km": 2.1, - "kn": 2, - "ko": 26.8, - "lt": 2.1, - "lv": 2.6, - "ml": 1.9, - "mr": 44, - "ms": 26.8, - "mt": 3.5, - "my": 3.5, - "ne": 1.8, - "nl": 28.6, - "no": 28.4, - "or": 1.8, - "pa": 1.8, - "phi": 33.4, - "pl": 10.5, - "pt": 5.5, - "pt-BR": 16.9, - "ro": 28.4, - "ru": 20.3, - "si": 1.9, - "sk": 27.3, - "sl": 2.4, - "sr": 2.8, - "sv": 27.6, - "sw": 44, - "ta": 43.7, - "te": 43.2, - "th": 25.4, - "tr": 22.4, - "uk-UA": 23.4, - "ur": 43.6, - "uz": 2.7, - "vi": 4.9, - "yo": 2.1, - "zh-CN": 3.7, - "zh-TW": 4.3 + "am": 1.4, + "ar": 0.9, + "az": 2.2, + "bg": 1.2, + "bn": 1.2, + "cs": 2.1, + "da": 3.6, + "de": 3, + "el": 1.5, + "es": 2.1, + "et": 1.8, + "fa": 1.1, + "fi": 1.5, + "fr": 3.4, + "ga": 1.5, + "gu": 1.2, + "ha": 1.5, + "he": 1.1, + "hi": 1, + "hr": 2.2, + "hu": 1.6, + "hy": 1.3, + "id": 2.5, + "ig": 1.6, + "it": 2.6, + "ja": 1.1, + "ka": 1.4, + "km": 1.4, + "kn": 1.3, + "ko": 1.3, + "lt": 1.5, + "lv": 1.6, + "ml": 1.4, + "mr": 1.3, + "ms": 2.4, + "mt": 2.3, + "my": 1.5, + "ne": 1.4, + "nl": 3.8, + "no": 2.5, + "or": 1.4, + "pa": 1.4, + "phi": 3.2, + "pl": 2.4, + "pt": 2, + "pt-BR": 2.5, + "ro": 2.7, + "ru": 1, + "si": 1.4, + "sk": 2, + "sl": 1.8, + "sr": 1.4, + "sv": 2.7, + "sw": 1.5, + "ta": 1.3, + "te": 1.2, + "th": 1.1, + "tr": 1.6, + "uk-UA": 1.2, + "ur": 1.2, + "uz": 2.2, + "vi": 1.5, + "yo": 1.4, + "zh-CN": 1, + "zh-TW": 1.1 } } diff --git a/scripts/i18n/sync-ui-keys.mjs b/scripts/i18n/sync-ui-keys.mjs index a7b86beff9..b0c61a718c 100755 --- a/scripts/i18n/sync-ui-keys.mjs +++ b/scripts/i18n/sync-ui-keys.mjs @@ -93,12 +93,14 @@ function parseArgs(argv) { locales: null, dryRun: false, translateMarkers: false, + retranslateIdentical: false, concurrency: null, batchSize: 1, }; for (const arg of argv.slice(2)) { if (arg === "--dry-run" || arg === "--dryrun") opts.dryRun = true; else if (arg === "--translate-markers") opts.translateMarkers = true; + else if (arg === "--retranslate-identical") opts.retranslateIdentical = true; else if (arg.startsWith("--locale=")) { opts.locales = arg .slice(9) @@ -123,6 +125,9 @@ function parseArgs(argv) { "Usage: node scripts/i18n/sync-ui-keys.mjs [options]", "", " --locale= Target locales (default: all except `en`)", + " --retranslate-identical Flag leaves still identical to English (outside", + " untranslatable-keys.json) as __MISSING__ so they get", + " retranslated — only meaningful with --translate-markers", " --dry-run Report what would change, write nothing", " --translate-markers Call the translation backend to translate every", " __MISSING__: placeholder", @@ -156,6 +161,34 @@ function isPlainObject(value) { return value !== null && typeof value === "object" && !Array.isArray(value); } +/** + * PR-4 of the locale expansion: a leaf whose value is byte-identical to the English source is + * an untranslated copy unless `untranslatable-keys.json` says otherwise. Swap each one for a + * `__MISSING__:` placeholder so `translatePlaceholders` picks it up, and return how many + * were flagged. Existing placeholders, real translations, empty strings and shape mismatches + * are left untouched. Mutates `merged` in place. + */ +export function markIdenticalAsMissing(merged, source, untranslatable, prefix = "") { + let count = 0; + for (const [key, sourceValue] of Object.entries(source)) { + if (FORBIDDEN_KEYS.has(key)) continue; + const fullKey = prefix ? `${prefix}.${key}` : key; + const targetValue = merged[key]; + if (isPlainObject(sourceValue) && isPlainObject(targetValue)) { + count += markIdenticalAsMissing(targetValue, sourceValue, untranslatable, fullKey); + } else if ( + typeof sourceValue === "string" && + sourceValue !== "" && + targetValue === sourceValue && + !untranslatable.has(fullKey) + ) { + merged[key] = `${PLACEHOLDER_PREFIX}${sourceValue}`; + count += 1; + } + } + return count; +} + // Defensive: reject any key that could traverse into the object prototype // chain when we copy/merge values across JSON trees. Our inputs are // authored JSON we already control, but excluding these keys is a cheap @@ -357,6 +390,13 @@ async function processLocale(locale, source, config, opts, backend) { } const { merged, addedPaths } = mergeMissing(source, target); + if (opts.retranslateIdentical && locale !== SOURCE_LOCALE) { + const allow = new Set( + (await loadJson(path.join(SCRIPT_DIR, "untranslatable-keys.json"))).keys ?? [] + ); + const flagged = markIdenticalAsMissing(merged, source, allow); + logInfo(`${locale}: ${flagged} English leaves flagged for retranslation`); + } const placeholderCountBefore = countPlaceholders(merged); let translateStats = { translated: 0, failed: 0 }; diff --git a/scripts/i18n/untranslatable-keys.json b/scripts/i18n/untranslatable-keys.json index 2caf6a61fd..053ad00c7b 100644 --- a/scripts/i18n/untranslatable-keys.json +++ b/scripts/i18n/untranslatable-keys.json @@ -1,11 +1,11 @@ { "description": "Keys that should remain untranslated (technical terms, brand names, ICU formats, placeholders, etc.)", "keys": [ - "apiManager.modelsCount", "a2aDashboard.metadata", "a2aDashboard.ok", "a2aDashboard.smokeSendSuccess", "a2aDashboard.url", + "apiManager.modelsCount", "cache.behaviorTwoTier", "cache.dbEntriesSub", "cache.model", @@ -64,6 +64,7 @@ "endpoint.cloudflaredTitle", "endpoint.mcpCardTitle", "endpoint.rerank", + "featureFlags.definitions.SERVER_OWNED_TOOL_LOOP_ENABLED.label", "header.a2a", "header.mcp", "health.cpu", @@ -87,29 +88,29 @@ "landing.github", "landing.npm", "legal.listSeparator", - "legal.terms", "legal.privacy", + "legal.terms", "loggers.inputTokens", "loggers.modelAZ", "loggers.modelZA", "loggers.outputTokens", "loggers.proxy", - "logs.notAvailable", - "logs.endpoint", - "logs.proxy", - "logs.console", - "logs.request", "logs.audit", + "logs.console", + "logs.endpoint", + "logs.notAvailable", + "logs.proxy", + "logs.request", "mcpDashboard.apiKeyIdPlaceholder", "mcpDashboard.offline", "mcpDashboard.online", "mcpDashboard.pid", "mcpDashboard.tableAudit", + "media.interpolation", "media.model", "media.prompt", - "media.interpolation", - "media.upscale", "media.samples", + "media.upscale", "modals.awsBuilderId", "modals.awsIamIdentity", "modals.awsRegion", @@ -126,8 +127,8 @@ "providers.chatPathPlaceholder", "providers.codexAuthAppliedLocal", "providers.codexAuthApplyFailed", - "providers.codexAuthExported", "providers.codexAuthExportFailed", + "providers.codexAuthExported", "providers.compatProtocolClaude", "providers.compatProtocolOpenAI", "providers.compatProtocolOpenAIResponses", @@ -136,17 +137,17 @@ "providers.messagesApi", "providers.messagesPath", "providers.millisecondsAbbr", - "providers.modelsPathPlaceholder", "providers.modeTest", - "providers.oauthLabel", + "providers.modelsPathPlaceholder", "providers.oauth2Label", + "providers.oauthLabel", "providers.okShort", + "providers.openRouterModelPlaceholder", "providers.openai", "providers.openaiBaseUrlPlaceholder", "providers.openaiCompatibleModelPlaceholder", "providers.openaiCompatibleName", "providers.openaiPrefixPlaceholder", - "providers.openRouterModelPlaceholder", "providers.prefixLabel", "providers.proxy", "providers.proxyConfiguredBySource", @@ -154,50 +155,59 @@ "providers.responsesApi", "providers.responsesPath", "search.domainPlaceholder", + "search.fileSearch", "search.rawJson", "search.rerank", - "search.searchTypeWeb", "search.search", "search.searchTools", + "search.searchTypeWeb", "search.webSearch", - "search.fileSearch", "settings.ai", "settings.aliasPatternPlaceholder", "settings.aliasTargetPlaceholder", "settings.auto", + "settings.currency", + "settings.language", "settings.model", "settings.modelNamePlaceholder", "settings.ms", + "settings.p2c", "settings.providersCommaSeparatedPlaceholder", "settings.proxy", - "settings.p2c", "settings.reasoning", "settings.roundRobin", "settings.rpm", "settings.status", - "settings.whitelabeling", "settings.theme", - "settings.language", - "settings.currency", "settings.timezone", + "settings.whitelabeling", "sidebar.cache", "sidebar.cacheShort", + "sidebar.cliCode", "sidebar.cliSection", + "sidebar.compressionStudio", + "sidebar.contextAggressive", + "sidebar.contextHeadroom", + "sidebar.contextLite", + "sidebar.contextSessionDedup", "sidebar.debug", "sidebar.debugSection", "sidebar.helpSection", "sidebar.primarySection", "sidebar.systemSection", + "sidebar.trafficInspector", "sidebar.version", + "stats.errors", + "stats.latency", "stats.requests", "stats.tokens", - "stats.latency", - "stats.errors", "themesPage.dark", "themesPage.light", "themesPage.system", "translator.auto", "translator.chatTester", + "translator.detect", + "translator.detectedLanguage", "translator.millisecondsShort", "translator.model", "translator.notAvailableSymbol", @@ -208,21 +218,25 @@ "translator.translate", "translator.translateFrom", "translator.translateTo", - "translator.detect", - "translator.detectedLanguage", + "usage.cacheReadTokens", + "usage.cacheWriteTokens", "usage.columnModel", "usage.columnStatus", + "usage.completionTokens", "usage.detailsRegex", "usage.durationHoursShort", "usage.durationMillisecondsShort", "usage.durationMinutesShort", "usage.durationSecondsShort", + "usage.inputTokens", "usage.latencyP50", "usage.latencyP95", "usage.latencyP99", "usage.notApplicable", "usage.notAvailableSymbol", + "usage.outputTokens", "usage.passSuffix", + "usage.promptTokens", "usage.proxyTab", "usage.reasonSeparator", "usage.tierPlus", @@ -230,12 +244,6 @@ "usage.tierUltra", "usage.totalRequests", "usage.totalTokens", - "usage.inputTokens", - "usage.outputTokens", - "usage.promptTokens", - "usage.completionTokens", - "usage.cacheReadTokens", - "usage.cacheWriteTokens", "usage.warningThresholdPlaceholder" ] } diff --git a/src/i18n/messages/am.json b/src/i18n/messages/am.json index fdae2f38f0..af92b74156 100644 --- a/src/i18n/messages/am.json +++ b/src/i18n/messages/am.json @@ -703,7 +703,7 @@ "noAnomaliesDetected": "ምንም ያልተለመደ ሁኔታ አልተገኘም", "apiKey": "API ቁልፍ", "xpLastHour": "XP (1 ሰዓት)", - "zScore": "Z-Score", + "zScore": "Z-ውጤት", "suspicious": "አጠራጣሪ", "tokensCommunityServers": "የማህበረሰብ አገልጋዮች", "tokensServerNamePlaceholder": "የአገልጋይ ስም", @@ -832,7 +832,7 @@ "wizardStep3Validate": "አረጋግጥ", "wizardStep4Cost": "ወጪ እና ፍጠር", "wizardProviderLabel": "አቅራቢ", - "wizardEndpointLabel": "Endpoint", + "wizardEndpointLabel": "መጨረሻ ነጥብ", "wizardModelLabel": "ሞዴል", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (እኛ እንቀይረዋለን)", @@ -901,7 +901,7 @@ "batchListRemoveCompleted": "ማስወገድ ተጠናቋል", "batchListTableStatus": "ሁኔታ", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "መጨረሻ ነጥብ", "batchListTableModel": "ሞዴል", "batchListTableProgress": "ሂደት", "batchListTableCreated": "የተፈጠረበት", @@ -992,6 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "የClaude Code ጌትዌይ ሞዴል ፍለጋ Claude ያልሆኑ ሞዴሎችን እንዲዘረዝር፣ የclaude/<provider>/<model> መስታወት መለያዎችን በ/v1/models ላይ ያስተዋውቁ። ማስጠንቀቂያ፦ በዓለም አቀፍ ደረጃ ሲነቃ ለሁሉም ደንበኞች የካታሎግ ግቤቶችን በእጥፍ ያደርጋል።", "featureFlagNoThinkingAliasEnabledDescription": "ለno-think/<provider>/<model> ጌትዌይ ተለዋጭ ስሞች ዋና ማብሪያ/ማጥፊያ። ሲበራ (ነባሪ)፦ /v1/models ለእያንዳንዱ ብቁ የማሰብ ችሎታ ያለው Claude ሞዴል የማያስብ ልዩነትን ያስተዋውቃል፤ እንዲሁም በጥያቄ የተላከ no-think/ መለያ የማመዛዘን ባህሪው ታፍኖ ወደ እውነተኛው ሞዴል ይመለሳል። ሲጠፋ፦ ምንም ልዩነቶች አይተዋወቁም፣ እና no-think/ መለያ እንደ ማንኛውም ሌላ ያልታወቀ የሞዴል መለያ ይቆጠራል። ይህ ሲበራም የእያንዳንዱ ሞዴል ModelSpec.noThinkingAlias የመርጦ መግባት/መውጣት ቅንብር እንደተገበረ ይቆያል።", "featureFlagChatVirtualLanesEnabledDescription": "ለአቅራቢ ማሰራጨት በተከራይ ደረጃ የሚላመዱ ምናባዊ የመቀበያ መስመሮችን ያንቁ (#9654)፦ የአንድ ተከራይ ድንገተኛ ጭማሪ ከእንግዲህ በሌላው ላይ 503 ስህተት አያስከትልም። የOMNIROUTE_CHAT_VIRTUAL_LANES የአካባቢ ተለዋዋጭ ከዚህ የዳሽቦርድ ማሻሻያ ቅድሚያ ይኖረዋል፤ ለውጦች አገልጋዩ ዳግም ሲጀመር ተግባራዊ ይሆናሉ።", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "የዳሽቦርድ አቅራቢ ገጾች፦ ነፃ ባጁን አቅራቢው በሚያከብራቸው ምልክቶች ላይ ብቻ ያሳዩ — የማሳያ ስም ግምታዊ ደንብን፣ ቡሊያን ያልሆኑ የነፃ መስኮችን እና ሰነድ የተደረገለት ነፃ ደረጃ በሌላቸው የተመዘገቡ አቅራቢዎች ላይ ያሉ :free ቅጥያዎችን ያስወግዳል። ማጥፋት ታሪካዊውን የባጅ ደንብ ይጠብቃል።", + "featureFlagProxySkipRecentlyFailedDescription": "የፕሮክሲ ፑሎች እና የ opencode የየመለያው ዙር ምርጫ፣ አሁን ያልተሳካን ፕሮክሲ (ውድቅ የተደረገ TCP ሙከራ ወይም በእሱ በኩል የተቀበለ 429) በድጋሚ እንዳያቀርቡ ያደርጋሉ፤ ይህም በእያንዳንዱ ድግግሞሽ እስከ ከፍተኛው ገደብ ድረስ በእጥፍ ለሚጨምር የየሂደቱ ጊዜ ነው። ምንም የፕሮክሲ ሁኔታ አይጻፍም፤ እያንዳንዱ እጩ ወደ ጎን ሲቀመጥ ምርጫው አይለወጥም። በነባሪ ጠፍቷል፦ የምርጫው ቅደም ተከተል ከተለመደው ዙር ምርጫ ጋር በትክክል አንድ ነው።", + "featureFlagProxyPoolEgressObservationDescription": "በዳሽቦርዱ ውስጥ ከፕሮክሲ ፑል ሥር፣ ባለፉት 24 ሰዓታት ምን ያህል የታዩ የመውጫ IPዎች አባላቱን እንዳገለገሉ፣ ምን ያህል ግንኙነቶች እንደተጠቀሙባቸው እና ከአንድ IP ጀርባ የታየውን ከፍተኛ ቁጥር አሳይ። ለንባብ ብቻ ነው፣ ከፕሮክሲ ሎጉ ይሰላል፣ ለማዞሪያም ፈጽሞ ጥቅም ላይ አይውልም። በነባሪ ጠፍቷል፦ የፑሉ አርታዒ አይለወጥም፣ የምልከታ መስመሩም null ይመልሳል።", + "featureFlagProxyHealthBlockedResetsStreakDescription": "በፕሮክሲ ጤና ፍተሻ ውስጥ፣ ዒላማው ውድቅ ያደረገው ሙከራ (401/403/429፦ ፕሮክሲው አስተላልፏል፣ መዳረሻው ግን ይህን የመውጫ IP ውድቅ አድርጓል) ልክ እንደተሳካ ሙከራ የፕሮክሲውን ተከታታይ የውድቀት ቆጠራ ዳግም እንዲጀምር ፍቀድ። በነባሪ ጠፍቷል፦ ውድቅ መደረጉ ገለልተኛ ሆኖ ይቆያል እና ቆጠራውን እንዳለ ያቆያል። 5xx በሁለቱም ሁኔታ የማያረጋግጥ ሆኖ ይቆያል፣ እና ውድቅ መደረግ ፕሮክሲን ፈጽሞ አያስወግድም፣ አያሰናክልም ወይም ዳግም አያነቃም።", "sidebar": { "home": "መነሻ", "dashboard": "ዳሽቦርድ", @@ -1025,7 +1029,7 @@ "embeddedServices": "የተካተቱ አገልግሎቶች", "embeddedServicesSubtitle": "አማራጭ አካባቢያዊ አገልግሎቶች", "logs": "ምዝግቦች", - "webhooks": "Webhooks", + "webhooks": "የድር መንጠቆዎች", "webhooksSubtitle": "ስለ ክስተቶች ማሳወቂያ ያግኙ", "logExport": "ምዝግብ ወደ ውጭ መላክ", "logExportSubtitle": "የጥሪ ምዝግቦችን ወደ ውጭ ይላኩ", @@ -1271,7 +1275,7 @@ "systemGroup": "ስርዓት", "costsOverview": "አጠቃላይ እይታ", "costsOverviewSubtitle": "የተጠቃለለ የወጪ ትንተና", - "agentBridge": "Agent Bridge", + "agentBridge": "የወኪል ድልድይ", "agentBridgeSubtitle": "የIDE ወኪል ትራፊክን ጣልቃ ገብቶ ያዝ", "trafficInspector": "የትራፊክ መርማሪ", "trafficInspectorSubtitle": "ከመተግበሪያዎችዎ የሚመጣውን የጥያቄ እና የምላሽ ትራፊክ ይመርምሩ", @@ -1314,7 +1318,7 @@ "noResults": "ምንም ውጤት የለም" }, "webhooks": { - "title": "Webhooks", + "title": "የድር መንጠቆዎች", "description": "ለስርዓት ክስተቶች የHTTP መልሶ ጥሪዎችን ያዋቅሩ።", "configuredWebhooks": "የተዋቀሩ Webhooks", "configuredWebhooksDesc": "የማድረሻ መጨረሻ ነጥቦችን፣ የተመዘገቡ ክስተቶችን፣ ሁኔታን እና የሙከራ ልከቶችን ያስተዳድሩ።", @@ -1418,30 +1422,30 @@ "invalidUrl": "ልክ ያልሆነ የURL ቅርጸት" }, "custom": { - "endpointUrl": "Endpoint URL", + "endpointUrl": "የመጨረሻ ነጥብ URL", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", "secretKey": "ሚስጥራዊ ቁልፍ", "secretKeyPlaceholder": "ሚስጥራዊ ቁልፍ ያስገቡ ወይም በራስ-ሰር እንዲፈጠር ባዶውን ይተዉት", "secretKeyHint": "ለማረጋገጫ የpayload ራስጌውን ለመፈረም ያገለግላል።" }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "የDiscord የድር መንጠቆ URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "ከDiscord ቻናልዎ የውህደት ቅንብሮች የተቀዳው webhook URL።", "tutorial": "Discord webhook እንዴት እንደሚፈጠር፦" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "የSlack የድር መንጠቆ URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "ከSlack Incoming Webhooks ውህደትዎ የተቀዳው webhook URL።", "tutorial": "Slack webhook እንዴት እንደሚፈጠር፦" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "የTelegram ቦት ቶከን", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "ቦትዎን ሲፈጥሩ ከ@BotFather የተቀበሉት HTTP API token።", "chatId": "Telegram Chat ID / ቻናል", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 ወይም @channelname", "chatIdHint": "የውይይቱ/ቻናሉ ልዩ የቁጥር መለያ ወይም ይፋዊ የተጠቃሚ ስም።", "tutorial": "Telegram webhook እንዴት እንደሚዋቀር፦" } @@ -1811,7 +1815,7 @@ "topologyLegendRecent": "የቅርብ ጊዜ", "topologyLegendError": "ስህተት", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", + "apiKeyLabel": "የAPI ቁልፍ", "requestsShort": "{count} ጥያቄዎች", "providerModelsTitle": "{provider} - ሞዴሎች", "copiedModel": "ተቀድቷል፦ {model}", @@ -3984,7 +3988,7 @@ "modelsCount": "{count, plural, one {# ሞዴል} other {# ሞዴሎች}}", "sectionTitle": "የውህደት በይነገጽ", "sectionDescription": "ከOpenAI ጋር ተኳሃኝ የሆኑ APIs እና የአሠራር ፕሮቶኮል የመጨረሻ ነጥቦች", - "tabApis": "APIs", + "tabApis": "APIዎች", "tabProtocols": "ፕሮቶኮሎች", "tabsAria": "የመጨረሻ ነጥብ ክፍሎች", "protocolsTitle": "ፕሮቶኮሎች", @@ -4045,7 +4049,7 @@ "tailscaleUrlNotice": "የTailscale .ts.net አድራሻዎን ይጠቀማል። ለመጀመሪያ ጊዜ ሲጠቀሙ መግባት እና የFunnel ፈቃድ ሊያስፈልግ ይችላል።", "tailscaleTitle": "Tailscale Funnel", "tailscaleNeedsLoginHint": "ይህን ማሽን በTailscale ያረጋግጡ፣ ከዚያም Funnelን ያንቁ።", - "tailscaleBinaryPath": "Binary: {path}", + "tailscaleBinaryPath": "ሁለትዮሽ፦ {path}", "tailscaleLastError": "የመጨረሻው ስህተት፦ {error}", "tailscaleInstallTitle": "Tailscaleን ጫን", "tailscaleInstallIntro": "Tailscaleን በዚህ ማሽን ላይ ይጭናል እና OmniRoute Funnelን እንዲያነቃ ያዘጋጃል።", @@ -4123,19 +4127,19 @@ "vscodeAliasDescriptionError": "በዚህ ክፍለ ጊዜ የCLI ቁልፎችን መጫን ስላልተቻለ ጊዜያዊ ምልክት የያዙ URLs እየታዩ ነው።", "vscodeAliasDescriptionLoading": "የCLI ቁልፎች በመጫን ላይ ናቸው። ቁልፍ እስኪገኝ ድረስ ጊዜያዊ ምልክት የያዙ URLs ይታያሉ።", "vscodeAliasDescriptionPlaceholder": "ጊዜያዊ ምልክት የያዙ URLs እየታዩ ነው። TOKENን ለመተካት በCLI Tools ውስጥ የAPI ቁልፍ ይፍጠሩ ወይም ያግብሩ።", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "የCLI መሣሪያዎች", "vscodeAliasBaseLabel": "VS Code መሠረታዊ", "vscodeAliasModelsLabel": "VS Code ሞዴሎች", "vscodeAliasChatLabel": "VS Code ውይይት", "localServer": "አካባቢያዊ አገልጋይ", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "የደመና OmniRoute", "copyUrl": "URL ቅዳ", "badgeLoopbackTooltip": "ይህ መዳረሻ በአካባቢው ብቻ ሊደረስበት ይችላል (loopback ብቻ)", "badgeAlwaysProtectedTooltip": "ይህ መዳረሻ ሁልጊዜ የተጠበቀ ሲሆን ፈቃድ ይጠይቃል", "badgeInternalTooltip": "ይህ ውስጣዊ የስርዓት መዳረሻ ነው", "tierAll": "ሁሉም", "tierAuth": "ማንነቱ የተረጋገጠ", - "tierLoopback": "Loopback", + "tierLoopback": "ሉፕባክ", "tierAlwaysProtected": "ሁልጊዜ የተጠበቀ", "tierPublic": "ይፋዊ", "hideInternal": "ውስጣዊውን ደብቅ", @@ -4172,7 +4176,7 @@ "obsidianDisable": "ያሰናክሉ", "obsidianConfigureMobile": "Obsidian ሞባይልን ያዋቅሩ", "obsidianMobileInstructions": "በObsidian ሞባይል ውስጥ፦ ቅንብሮች → ማመሳሰል → WebDAV → የሚከተለውን ያስገቡ፦", - "obsidianWebdavUrl": "WebDAV URL", + "obsidianWebdavUrl": "የWebDAV URL", "obsidianUsername": "የተጠቃሚ ስም", "obsidianPassword": "የይለፍ ቃል", "obsidianTailscaleHint": "ከሞባይል የሚገናኙ ከሆነ በlocalhost ምትክ የTailscale IPዎን ይጠቀሙ። ሁለቱም መሣሪያዎች በተመሳሳይ Tailscale አውታረ መረብ ላይ መሆን አለባቸው።", @@ -4603,7 +4607,7 @@ "enabledSkills": "ነቅቷል", "totalExecutions": "አፈጻጸሞች", "successRate": "የስኬት መጠን", - "marketplaceTab": "Marketplace", + "marketplaceTab": "የመተግበሪያዎች ገበያ", "applyFilters": "ማጣሪያዎችን ተግብር", "popularDefaultsLabel": "ለተመረጠው አቅራቢ በነባሪነት ታዋቂ፦", "onMode": "በርቷል", @@ -4646,7 +4650,7 @@ "uptime": "የሥራ ጊዜ", "memory": "ማህደረ ትውስታ", "memoryRss": "ማህደረ ትውስታ (RSS)", - "heap": "Heap", + "heap": "ሂፕ", "cpu": "CPU", "database": "የውሂብ ጎታ", "version": "ስሪት", @@ -5206,7 +5210,7 @@ "selectProvider": "አቅራቢ ይምረጡ", "selectedProvider": "የተመረጠ አቅራቢ", "authMethod": "የማረጋገጫ ዘዴ", - "apiKeyLabel": "API Key", + "apiKeyLabel": "API ቁልፍ", "apiKeyRequired": "API Key ያስፈልጋል", "selectProviderRequired": "እባክዎ አቅራቢ ይምረጡ", "enterApiKey": "የእርስዎን API Key ያስገቡ", @@ -5800,7 +5804,7 @@ "ccCompatibleLabel": "ከCC ጋር ተኳሃኝ", "ccCompatibleModelsDescription": "ከCC ጋር ተኳሃኝ ማስተላለፊያዎች የሞዴል ዝርዝርን አያቀርቡም። ማስተላለፊያዎ የሚቀበላቸውን የClaude ሞዴል መለያዎች ያክሉ።", "ccCompatibleNameHint": "ለዚህ ለClaude Code ብቻ የሚያገለግል ማስተላለፊያ የማሳያ ስም።", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay ፕሮዳክሽን", "ccCompatiblePrefixHint": "እንደ prefix/model-id ባሉ የሞዴል ተለዋጭ ስሞች ውስጥ ይጠቀማል።", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "ይህን አቅራቢ ለClaude Code ደንበኞች ብቻ ለሚያገለግሉ ማስተላለፊያዎች ይጠቀሙ። OmniRoute እነዚያ ማስተላለፊያዎች እንዲቀበሉት ማንኛውንም ገቢ ጥያቄ ከClaude Code ጋር ወደሚስማማ የሽቦ ቅርጸት ይቀይራል። Claude Code CLIን ብቻ መጠቀም ከፈለጉ ወይም ይህ የማስተላለፊያ ዓይነት ምን ማለት እንደሆነ እርግጠኛ ካልሆኑ፣ በምትኩ መደበኛ ከAnthropic ጋር ተኳሃኝ አቅራቢ ይጠቀሙ።", @@ -5862,7 +5866,7 @@ "antigravityClientProfileCli": "CLI", "codexFastTierActiveChip": "Codex Fast ደረጃ ንቁ ነው", "tierFast": "ፈጣን", - "antigravityProjectIdLabel": "Google Cloud Project ID", + "antigravityProjectIdLabel": "Google Cloud የፕሮጀክት መታወቂያ", "antigravityProjectIdPlaceholder": "my-gcp-project-id", "grokWebCookiePlaceholder": "Grok Web ኩኪ ቦታ ያዥ", "herokuBaseUrlHint": "Heroku መሠረታዊ URL ፍንጭ", @@ -6363,15 +6367,15 @@ "checkWebToken": "ቶከኑን አረጋግጥ", "huggingchatLabel": "HuggingChat (ነፃ)", "huggingchatDesc": "በhuggingface.co/chat በኩል ነፃ የLLM ውይይት", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe ድር", "poeWebDesc": "በpoe.com በኩል የብዙ ሞዴሎች ውይይት", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice ድር", "veniceWebDesc": "በግላዊነት ላይ ያተኮረ የAI ውይይት", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel ድር", "v0VercelWebDesc": "በv0.dev በኩል የAI ኮድ ማመንጨት", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi ድር", "kimiWebDesc": "በwww.kimi.com በኩል የMoonshot AI የተጠቃሚዎች ውይይት (ዓለም አቀፍ፣ Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola ድር", "doubaoWebDesc": "በdola.com በኩል የByteDance AI ውይይት", "overrideBaseUrlAdvanced": "የላቀ፦ መሠረታዊ URLን ተካ", "overrideBaseUrlHint": "የላቀ፦ ይህን አብሮ የተካተተ አቅራቢ ወደ ብጁ መጨረሻ ነጥብ ያመልክቱ። ነባሪውን ለመጠቀም ባዶውን ይተዉት።", @@ -6452,7 +6456,7 @@ "failedUpdateCodexServiceMode": "የCodex አገልግሎት ሁነታን ማዘመን አልተሳካም", "filterByMedia": "ሚዲያ", "freeBadge": "ነጻ", - "kimiCodeApiKeyLabel": "Kimi Code API Key", + "kimiCodeApiKeyLabel": "Kimi Code API ቁልፍ", "modelTestFailed": "የሞዴል ሙከራው አልተሳካም", "modelTestNetworkError": "ሞዴሉን ሲፈተን የአውታረ መረብ ስህተት ተከስቷል", "networkError": "የአውታረ መረብ ስህተት", @@ -6745,11 +6749,11 @@ "themeSystem": "ስርዓት", "endpointTunnelVisibility": "የEndpoint ቱነል ታይነት", "endpointTunnelVisibilityDesc": "የቱነሉን ሁኔታ ሳይቀይሩ የቱነል መቆጣጠሪያዎችን ከEndpoint ገጽ ደብቅ።", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Cloudflare ፈጣን ቱነል", "showCloudflareTunnelDesc": "የCloudflare Quick Tunnel መቆጣጠሪያዎችን በEndpoint ገጽ ላይ አሳይ።", "showTailscaleFunnel": "Tailscale Funnel", "showTailscaleFunnelDesc": "የTailscale Funnel መቆጣጠሪያዎችን በEndpoint ገጽ ላይ አሳይ።", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "ngrok ቱነል", "showNgrokTunnelDesc": "የngrok Tunnel መቆጣጠሪያዎችን በEndpoint ገጽ ላይ አሳይ።", "sidebarVisibility": "የጎን አሞሌ ንጥሎችን ደብቅ", "sidebarVisibilityDesc": "ምንም ባህሪያትን ሳያሰናክሉ የእይታ መጨናነቅን ለመቀነስ ማንኛውንም የጎን አሞሌ የአሰሳ ግቤት ደብቅ", @@ -7074,7 +7078,7 @@ "stickyLimitDesc": "ዓለም አቀፉ የመለያ አማራጭ Round Robin ሲጠቀም፣ ከመቀየሩ በፊት በእያንዳንዱ መለያ የሚደረጉ ጥሪዎች", "routingStrategyTitle": "የማስተላለፊያ ስልት", "routingStrategySubtitle": "ከ9router ጋር አዛምድ፦ የመለያ Round Robin፣ የቋሚነት ገደቦች እና የጥምረት ማዞር", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "ተራ በተራ", "accountRoundRobinDesc": "ጭነቱን ለማከፋፈል በመለያዎች መካከል በተራ ዙር", "comboRoundRobin": "የጥምረት Round Robin", "comboRoundRobinDesc": "ሁልጊዜ ከመጀመሪያው ከመጀመር ይልቅ በጥምረት ኢላማዎች መካከል በተራ ዙር", @@ -7139,7 +7143,7 @@ "ipModeWhitelist": "ነጭ ዝርዝር", "ipModeWhitelistPriority": "የነጭ ዝርዝር ቅድሚያ", "addIpAddress": "IP አድራሻ ጨምር", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 ወይም 10.0.*.*", "block": "+ አግድ", "allow": "+ ፍቀድ", "blocked": "የታገዱ ({count})", @@ -8347,9 +8351,9 @@ "oneproxyClearAllConfirm": "ሁሉንም የ1proxy ፕሮክሲዎች ይጽዱ?", "memorySkillsSkillsmpDescription": "ከገበያው ላይ ክህሎቶችን ለማግኘትና ለመጫን ከSkillsMP ጋር ይገናኙ።", "memorySkillsActiveProviderDescription": "የክህሎቶች ገጹ ለፍለጋና ለመጫን የሚጠቀምበትን አቅራቢ ይምረጡ።", - "memorySkillsSkillsmpProviderTitle": "SkillsMP Marketplace", + "memorySkillsSkillsmpProviderTitle": "SkillsMP የገበያ ቦታ", "memorySkillsSkillsmpProviderDescription": "ማንነት ማረጋገጥ የሚፈልግ የገበያ ቦታ (የSkillsMP API ቁልፍዎን ይጠቀማል)።", - "memorySkillsSkillsshProviderTitle": "skills.sh Directory", + "memorySkillsSkillsshProviderTitle": "skills.sh ማውጫ", "memorySkillsSkillsshProviderDescription": "ይፋዊ ማውጫ አቅራቢ (የAPI ቁልፍ አያስፈልግም)።", "routingCcBridgeCatalogName": "ከAnthropic ጋር ተኳሃኝ የCC ድልድይ", "routingClaudeProviderName": "Claude (OAuth)", @@ -9339,7 +9343,7 @@ "evaluateStepDescription": "ምላሾች ከሚጠበቁት መስፈርቶች ጋር ይነጻጸራሉ። የምላሽ መዘግየት መለኪያዎችን እና ዝርዝር ግብረመልስን ጨምሮ የእያንዳንዱን ኬዝ ማለፍ/አለማለፍ ይመልከቱ።", "evalsStrategyContainsLabel": "ይዟል", "evalsStrategyExactLabel": "ትክክለኛ ማዛመድ", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "መደበኛ አገላለጽ", "evalsStrategyCustomLabel": "ብጁ አመክንዮ", "evalsStrategyContainsDescription": "የLLM ውጤቱ የሚጠበቀውን ንዑስ ሕብረቁምፊ መያዙን ይፈትሻል።", "evalsStrategyExactDescription": "የLLM ውጤቱ ከሚጠበቀው እሴት ጋር በትክክል መዛመዱን ይፈትሻል።", @@ -9996,7 +10000,7 @@ "documentation": "ሰነዶች", "npm": "NPM", "legal": "ሕጋዊ", - "mitLicense": "MIT License", + "mitLicense": "MIT ፈቃድ", "footerTagline": "ለAI ማመንጨት የተዋሐደ የመዳረሻ ነጥብ። የAI አቅራቢዎችዎን በቀላሉ ያገናኙ፣ ያዘዋውሩ እና ያስተዳድሩ።", "copyright": "© {year} OmniRoute። መብቶች ሁሉ የተጠበቁ ናቸው።", "flowToolClaudeCode": "Claude Code", @@ -10298,7 +10302,7 @@ "policyLastUpdatedDate": "ፌብሩዋሪ 13፣ 2026", "listSeparator": "-", "questionsVisit": "ጥያቄዎች አሉዎት? የእኛን ይጎብኙ", - "githubRepository": "GitHub repository", + "githubRepository": "GitHub ማከማቻ", "privacySection1Title": "1. በአካባቢያዊ አሠራር ላይ ያተኮረ ንድፈ ሕንፃ", "privacySection1Text": "OmniRoute በአካባቢያዊ አሠራር ላይ ያተኮረ መተግበሪያ ሆኖ ተነድፏል። ሁሉም የውሂብ ሂደትና ማከማቻ ሙሉ በሙሉ በእርስዎ ማሽን ላይ ይከናወናል። መረጃዎን የሚሰበስብ ማዕከላዊ ሰርቨር የለም።", "privacySection2Title": "2. የምናከማቸው ውሂቦች", @@ -10698,7 +10702,7 @@ "password": "የይለፍ ቃል", "passwordPlaceholder": "የይለፍ ቃል", "connected": "ተገናኝቷል", - "ip": "IP:", + "ip": "IP፦", "connectionFailed": "ግንኙነቱ አልተሳካም", "testConnection": "ግንኙነትን ይፈትሹ", "clear": "አጽዳ", @@ -10915,7 +10919,7 @@ "assignmentsCount": "{count} ምደባዎች", "noData": "—", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency}ሚሴ", "testFailure": "✗ {error}", "repair": "ጠግን", "relayAuthMissing": "ማረጋገጫ ይጎድላል", @@ -10964,16 +10968,16 @@ "strategyLatency": "በመዘግየት የተመቻቸ", "poolMembersLabel": "የፑል አባላት ({count})", "poolNoMembers": "እስካሁን በዚህ ፑል ውስጥ ምንም ፕሮክሲ የለም።", + "poolEgressObservation": "{connections, plural, one {# ግንኙነት} other {# ግንኙነቶች}} {exits, plural, one {# መውጫን} other {# መውጫዎችን}} ተጠቅመዋል · በአንድ መውጫ ላይ እስከ {max} · የመጨረሻዎቹ {hours} ሰዓታት", + "poolEgressObservationEmpty": "ባለፉት {hours} ሰዓታት ውስጥ ምንም ትራፊክ አልታየም", + "poolEgressObservationHint": "በተወሰነው የጊዜ ክልል ውስጥ ከፕሮክሲ ምዝግብ የተቆጠሩት፦ ለዚህ ፑል አባላት የታዩ የተለያዩ የወጪ IPዎች እና እነሱን የተጠቀሙ OmniRoute ግንኙነቶች። \"በአንድ መውጫ ላይ\" ማለት በተወሰነው የጊዜ ክልል ውስጥ ማለት ነው፤ በተመሳሳይ ጊዜ ማለት አይደለም። የእያንዳንዱ IP የ429 እገዳ የሚያቆመው የተመሳሳይ የአቅራቢ ቤተሰብ ግንኙነቶችን ብቻ ነው።", "poolRemove": "አስወግድ", "poolRemoveFailed": "ፕሮክሲውን ከፑሉ ማስወገድ አልተሳካም", "poolAddLabel": "ፕሮክሲ ጨምር", "poolAddMember": "ጨምር", "poolAddFailed": "ፕሮክሲውን ወደ ጥምረቱ ማከል አልተሳካም", "poolSelectProxy": "ፕሮክሲ ይምረጡ…", - "poolSaveFailed": "የጥምረት ምደባውን ማስቀመጥ አልተሳካም", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family." + "poolSaveFailed": "የጥምረት ምደባውን ማስቀመጥ አልተሳካም" }, "playground": { "title": "የሞዴል መሞከሪያ", @@ -11124,11 +11128,11 @@ "jsonMode": "JSON ሁነታ", "jsonModeDescription": "response_format: json_schema እንዲሆን ያስገድዳል", "schemaName": "የSchema ስም", - "jsonSchema": "JSON schema", + "jsonSchema": "JSON መርሃ ግብር", "jsonSchemaEditor": "የJSON schema አርታዒ", "schemaValidated": "Schema ተረጋግጧል", "validateSchema": "Schemaን አረጋግጥ", - "seed": "Seed", + "seed": "መነሻ እሴት", "stopSequences": "የማቆሚያ ቅደም ተከተሎች", "stopSequencesPlaceholder": "ለምሳሌ \"\\n\\n\" ወይም \"END\"", "autoProvider": "ራስ-ሰር", @@ -11240,7 +11244,7 @@ "searchResultFallback": "ውጤት {number}", "noKeysFound": "ምንም የAPI ቁልፎች አልተገኙም። በቁልፎች ክፍል ውስጥ አንድ ያክሉ።", "exampleLabel": "ምሳሌ", - "latency": "{ms}ms", + "latency": "{ms}ሚሴ", "statsLine": "{ms}ms · {tokensIn} ገቢ / {tokensOut} ወጪ ቶከኖች", "defaultKey": "(ነባሪ)", "clear": "አጽዳ", @@ -11446,9 +11450,9 @@ "allLevels": "ሁሉም ደረጃዎች", "allProviders": "ሁሉም አቅራቢዎች", "total": "ጠቅላላ", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "ok": "እሺ", + "err": "ስህተት", + "timeoutShort": "ጊዜው አልፏል", "direct": "ቀጥታ", "newest": "አዲሱ ቀድሞ", "oldest": "አሮጌው ቀድሞ", @@ -11480,7 +11484,7 @@ "droid": "Droid", "codex": "Codex", "claude": "Claude", - "kilo": "Kilo" + "kilo": "ኪሎ" }, "runtime": { "title": "የአሂድ ጊዜ", @@ -11675,7 +11679,7 @@ "endpointsCollapse": "ሰብስብ", "endpointsExpand": "ዘርጋ", "endpointsAnthropicNote": "Anthropic-ቤተኛ", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsResponsesNote": "OpenAI ምላሾች — codex/github", "endpointsWsNote": "WebSocket — codex ብቻ", "betaText": "የኮታ ድርሻ ይሠራል፣ ነገር ግን ስህተቶች ሊኖሩ ይችላሉ። አንድ አግኝተዋል? እባክዎ ሪፖርት ያድርጉት።", "betaReportLink": "ችግር ሪፖርት አድርግ", @@ -11732,7 +11736,7 @@ "verified": "የተረጋገጠ", "install": "ጫን", "installedFromMarketplace": "Plugin {name} ተጭኗል!", - "hooks": "Hooks" + "hooks": "ማያያዣዎች" }, "quotaPlans": { "title": "ዕቅዶች እና ኮታዎች", @@ -12168,7 +12172,7 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "የCLI ኮድ", "phrase": "ወደ OmniRoute የሚያመለክቷቸው የኮድ መሣሪያዎች", "flow": "እርስዎ → CLI Code → OmniRoute → አቅራቢ", "seeOther": "ይመልከቱ →" @@ -12373,11 +12377,11 @@ "description": "የስርዓት ምትኬዎችን ያስጀምሩ፣ ከምትኬ ፋይሎች ወደነበረበት ይመልሱ እና የSQLite የውሂብ ጎታ የሕይወት ዑደትን ያስተዳድሩ። ወደ ውጭ መላክን፣ ማስመጣትን እና ጭማሪያዊ የቅጽበተ ገጽ ዕይታ ስልቶችን ይደግፋል።" }, "omni-webhooks": { - "name": "Webhooks", + "name": "ዌብሁኮች", "description": "የwebhook endpointsን ይመዝግቡ፣ ይዘርዝሩ፣ ይሞክሩ እና ያስወግዱ። የክስተት ምዝገባዎችን (request.completed, request.failed, quota.exceeded, ወዘተ) ያዋቅሩ እና የማድረስ ዳግም ሙከራዎችን ያስተዳድሩ።" }, "omni-mcp": { - "name": "MCP Server", + "name": "MCP አገልጋይ", "description": "ከOmniRoute MCP server (110 መሣሪያዎች፣ 3 መጓጓዣዎች፦ SSE/stdio/HTTP) ጋር ይገናኙ። በ33 የፈቃድ ወሰኖች ውስጥ የማዘዋወር፣ የመሸጎጫ፣ የመጭመቅ፣ የማስታወሻ፣ የክህሎት፣ የአቅራቢ እና የኦዲት መሣሪያዎችን ይሸፍናል።" }, "omni-agents-a2a": { @@ -12519,7 +12523,7 @@ "storage": { "label": "ማከማቻ", "agent": "ተለዋዋጭ ካታሎግ (/api/agent-skills) → SKILL.md በGitHub ላይ", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / አካባቢያዊ)" }, "tagline": { "label": "መፈክር", @@ -12987,6 +12991,12 @@ "STREAM_RECOVERY_MIDSTREAM_ENABLED": { "description": "ባይቶች ወደ ደንበኛው ከደረሱ በኋላም የዥረት መልሶ ማግኘት ምላሹን እንደገና እንዲጠይቅ እና እንዲያያይዘው ፍቀድ።" }, + "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { + "description": "በዥረት መሃል የሚደረግ ቀጣይነት ለመሣሪያ ጥሪ ደህንነቱ የተጠበቀ ይሁን፦ የመሣሪያ ጥሪ ከተላከ በኋላ (አሁንም በሂደት ላይ ቢሆንም ወይም ቀድሞውኑ ቢጠናቀቅም) የተቋረጠ ዥረትን ፈጽሞ አትቀጥል፤ እንዲሁም ሙሉውን የድጋሚ ሙከራ ገደብ ከመጠቀም ይልቅ አንድ ባዶ ቀጣይነት ካጋጠመ በኋላ አቁም።" + }, + "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { + "description": "ዥረት ምንም ጠቃሚ ፍሬም ሳያወጣ ሲዘጋ እና የተገደበው የተመሳሳይ ግንኙነት ዳግም ሙከራ ሲያልቅ፣ ወደ ተመሳሳይ ደረጃ ያለው ሌላ ግንኙነት አንድ ጊዜ ቀይር። ጥቅም ላይ ሊውል የሚችል ሌላ ግንኙነት ከሌለ፣ የመጀመሪያው የearly-EOF ስህተት ይመለሳል። ጠፍቷል፦ ከዳግም ሙከራው በኋላ early-EOF የመጨረሻ ስህተት ሆኖ ይቆያል።" + }, "MODEL_CATALOG_INCLUDE_NAMES": { "description": "በ/v1/models ምላሾች ውስጥ ለእይታ ምቹ የስም መስኮችን አካትት። የሞዴል ID-ዎችን ብቻ ለሚቀበሉ ደንበኞች ይህን አሰናክል።" }, @@ -13025,18 +13035,12 @@ "description": "ሞዴሉ በደንበኛው ሊጠቀምበት የሚችል ምላሽ እስኪመልስ ድረስ በአገልጋዩ የሚተዳደሩ ተከታታይ ያልሆኑ የመሣሪያ ጥሪዎችን ቀጥል።" }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths.", - "label": "__MISSING__:Retry-After Provenance" + "label": "የRetry-After ምንጭ", + "description": "በተዋሃዱ የ429/503 አይገኝም ምላሾች ላይ፣ የተወሰነ የወደፊት ድጋሚ ሙከራ ጊዜ ካልታወቀ ሰው ሠራሽ 1 ሰከንድ ከመላክ ይልቅ Retry-Afterን አትጨምር፤ error.retry_after_provenanceን ጨምር፣ እና በcombo drain መንገዶች ላይ በጽሑፍ የተገለጹ የድጋሚ ሙከራ ፍንጮችን አንብብ።" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip.", - "label": "__MISSING__:Protected-Priority Infra Stops as 502" - }, - "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." - }, - "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { - "description": "__MISSING__:Fail over once to a sibling connection when a stream closes before emitting any useful frame and the bounded same-connection retry is spent. With no usable sibling, the original early-EOF error is returned. Off: early-EOF stays terminal after the retry." + "label": "የተጠበቀ ቅድሚያ ያላቸው የመሠረተ ልማት ማቆሚያዎች እንደ 502", + "description": "በኮታ ብቻ የመጠባበቂያ አማራጭ የሆነ ቅድሚያ ያለው ዒላማ፣ ምክንያቱ ኮታ አለመሆኑ በእርግጠኝነት ሊረጋገጥ ለሚችል ሁኔታ—ክፍት የአቅራቢ circuit breaker ወይም ትንበያዊ የመዘግየት መዝለል—comboውን ሲያቆም፣ ከ503 ይልቅ 502 መልስ።" } } }, @@ -13650,6 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "የታለመው ሞዴል አስፈላጊ ችሎታዎች (ምስል፣ መሣሪያዎች፣ የተዋቀረ ውጤት፣ የአውድ መስኮት) ሲጎድሉት፣ ጥያቄዎች ከመላካቸው በፊት ውድቅ አድርግ። ይህ የጥምር-ንብርብር ተኳኋኝነት ማጣሪያን የሚያልፉ ቀጥተኛ የአንድ-አቅራቢ ጥያቄዎችን ይጠብቃል።", "featureFlagDisableContextWindowChecksDescription": "ለቀጥተኛ የአንድ-ሞዴል ጥያቄዎች የOmniRouteን አካባቢያዊ የአውድ-መስኮት እና ከፍተኛ-የግቤት-ቶከን ማረጋገጫ ዝለል። የላይኛው ደረጃ አቅራቢዎች እውነተኛ ገደቦቻቸውን አሁንም ያስፈጽማሉ። የጥያቄ መጭመቅ እና የውጤት-ቶከን ገደቦች እንደነቁ ይቆያሉ።", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "የፍለጋ ስታቲስቲክስ እና የቅርብ ጊዜ ፍለጋዎች አሁንም ንቁ ግንኙነት ያላቸውን አቅራቢዎች ብቻ ይቆጥራሉ (እንደ duckduckgo-free ያሉ ቁልፍ የማይፈልጉ አቅራቢዎች ሁልጊዜ ይቆጠራሉ)። ማጥፋት እያንዳንዱን የተቀመጠ የፍለጋ ረድፍ ከአቅራቢ መታወቂያ ጋር ያቆየዋል።", "publicSystem": { "notFound": { "title": "ገጹ አልተገኘም", @@ -13973,7 +13978,7 @@ "runners": "አስኪያጆች", "tasks": "ተግባራት", "colName": "ስም", - "colClis": "CLIs", + "colClis": "CLIዎች", "colStatus": "ሁኔታ", "colTask": "ተግባር", "colMode": "ሁነታ", @@ -14046,9 +14051,9 @@ "filterSources": "ምንጮች", "filterProviders": "አቅራቢዎች", "clearFilters": "ማጣሪያዎችን አጽዳ", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "የደመና ወኪል", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "አስተባባሪ", "sourceStale": "ከ{since} ጀምሮ ያልታደሰ", "sourceOffline": "ከመስመር ውጭ", "sourceCollapse": "ሰብስብ", @@ -14160,10 +14165,5 @@ "partnerLinkNote": "የአጋር አገናኝ", "dismissAriaLabel": "ዝጋ" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "በ/v1/models ካታሎግ ውስጥ የአስተሳሰብ ደረጃ ተለዋጮችን (ለምሳሌ -low, -medium, -high) ማመንጨትን አሰናክል።", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "__MISSING__:Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "__MISSING__:Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "በ/v1/models ካታሎግ ውስጥ የአስተሳሰብ ደረጃ ተለዋጮችን (ለምሳሌ -low, -medium, -high) ማመንጨትን አሰናክል።" } diff --git a/src/i18n/messages/ar.json b/src/i18n/messages/ar.json index 41df367baa..1d7e80a0c0 100644 --- a/src/i18n/messages/ar.json +++ b/src/i18n/messages/ar.json @@ -131,7 +131,7 @@ "resolve_connection_id": "حل معرف الاتصال", "scope_id": "معرف النطاق", "scopeId": "معرف النطاق", - "jwtSecret": "JWT Secret", + "jwtSecret": "سر JWT", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", @@ -199,7 +199,7 @@ "audioProvidersHeading": "موفرو الصوت", "cloudAgentProviders": "موفرو الوكيل السحابي", "minutesAgo": "منذ دقائق", - "a": "A", + "a": "أ", "liveAutoRefreshing": "مباشر — تحديث تلقائي", "webSearch": "بحث الويب", "anthropicPrefixPlaceholder": "ac-prod", @@ -704,7 +704,7 @@ "apiKey": "مفتاح واجهة برمجة التطبيقات", "xpLastHour": "XP (ساعة واحدة)", "zScore": "Z-النتيجة", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "مشبوه", "tokensCommunityServers": "خوادم المجتمع", "tokensServerNamePlaceholder": "اسم الخادم", "tokensApiKeyPlaceholder": "مفتاح واجهة برمجة التطبيقات", @@ -807,13 +807,13 @@ "batchConceptBenefit50pct": "خصم 50% على رموز الإدخال والإخراج", "batchConceptAsync24h": "غير متزامن مع نافذة إكمال لمدة 24 ساعة", "batchConceptUseCases": "الأفضل للتصنيف المجمع والتقييمات والتضمينات", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", + "batchHeaderSubtitle": "تشغيل عدة طلبات كمهمة واحدة", + "batchStep1": "1 · تحميل JSONL", + "batchStep1Desc": "إضافة طلبات", + "batchStep2": "2 · إنشاء دفعة", + "batchStep2Desc": "تشغيل المهمة", + "batchStep3": "3 · الحصول على النتائج", + "batchStep3Desc": "تنزيل المخرجات", "filesConceptTitle": "ملفات دفعة", "filesConceptSubtitle": "ملفات JSONL المستخدمة بواسطة الدفعات: طلبات الإدخال والنتائج والأخطاء.", "filesConceptInput": "الإدخال - JSONL الخاص بك مع طلب واحد في كل سطر", @@ -988,14 +988,14 @@ "disabled": "معطل", "featureFlagOmnirouteEmergencyFallbackDescription": "توجيه الطلبات التي استنفدت الميزانية إلى موفر/نموذج الاحتياط المجاني للطوارئ.", "featureFlagArenaEloSyncEnabledDescription": "تمكين المزامنة الدورية لتصنيف ELO للوحة صدارة Arena AI لتصنيفات ذكاء النماذج.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "إنشاء ملخصات للمحادثات وإدراجها عند تبديل النماذج بواسطة التوجيه المركّب. عطّل هذا الخيار للتعامل مع عمليات تبديل النماذج بشكل مستقل ومنع طلبات التسليم في الخلفية لجميع التركيبات الحالية والمستقبلية.", "featureFlagExposeCcDiscoveryAliasesDescription": "اعلن عن معرفات مرآة claude/<provider>/<model> على /v1/models حتى تظهر قائمة اكتشاف نماذج بوابة Claude Code نماذج غير Claude. تحذير: يؤدي إلى تكرار إدخالات الكتالوج لجميع العملاء عند تفعيله عالميًا.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "المفتاح الرئيسي للأسماء المستعارة لبوابة no-think/<provider>/<model>. عند التشغيل (افتراضيًا): يعرض /v1/models إصدارًا بلا تفكير لكل نموذج Claude مؤهل يدعم التفكير، ويُحل معرّف no-think/ المُرسل في الطلب إلى النموذج الحقيقي مع تعطيل الاستدلال. عند الإيقاف: لا تُعرض أي إصدارات، ويُعامل معرّف no-think/ مثل أي معرّف نموذج آخر غير معروف. يظل الاشتراك أو إلغاء الاشتراك لكل نموذج عبر ModelSpec.noThinkingAlias ساريًا أثناء تشغيل هذا الخيار.", "featureFlagChatVirtualLanesEnabledDescription": "فعّل مسارات القبول الافتراضية التكيفية لكل مستأجر (tenant) لتوزيع المزودين (#9654): لم يعد انفجار حركة أحد المستأجرين يسبب خطأ 503 لمستأجر آخر. متغير البيئة OMNIROUTE_CHAT_VIRTUAL_LANES له الأولوية على هذا الإعداد في لوحة التحكم؛ تصبح التغييرات سارية بعد إعادة تشغيل الخادم.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "صفحات مزوّدي لوحة المعلومات: اعرض شارة «مجاني» فقط استنادًا إلى الإشارات التي يعتمدها المزوّد — مع إلغاء أسلوب الاستدلال المستند إلى اسم العرض، وحقول المجانية غير المنطقية، واللواحق :free لدى المزوّدين المسجّلين الذين ليست لديهم فئة مجانية موثّقة. عند التعطيل، تُستخدم قاعدة الشارة السابقة.", + "featureFlagProxySkipRecentlyFailedDescription": "تمنع مجموعات الوكلاء والتناوب لكل حساب في opencode إعادة استخدام وكيل فشل للتو (رفض فحص TCP، أو تم تلقي 429 من خلاله) لمدة خاصة بكل عملية تتضاعف مع كل تكرار، حتى حد أقصى. لا تُكتب أي حالة للوكيل؛ وعند استبعاد جميع المرشحين، يظل الاختيار دون تغيير. معطّل افتراضيًا: ترتيب الاختيار هو بالضبط التناوب العادي.", + "featureFlagProxyPoolEgressObservationDescription": "اعرض، أسفل مجموعة وكلاء في لوحة المعلومات، عدد عناوين IP الصادرة المرصودة التي خدمت أعضاءها خلال آخر 24 ساعة، وعدد الاتصالات التي استخدمتها، وأكبر عدد شوهد خلف عنوان IP واحد. للقراءة فقط، ويُحتسب من سجل الوكيل، ولا يُستخدم مطلقًا للتوجيه. معطّل افتراضيًا: يظل محرر المجموعة دون تغيير ويُرجع مسار الرصد null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "في فحص سلامة الوكلاء، اسمح للفحص الذي رفضه الهدف (401/403/429: قام الوكيل بالترحيل، لكن الوجهة رفضت عنوان IP الصادر هذا) بإعادة تعيين سلسلة حالات الفشل المتتالية للوكيل، كما لو كان فحصًا تمت خدمته. معطّل افتراضيًا: يظل الرفض محايدًا ويحافظ على السلسلة. تظل استجابة 5xx غير حاسمة في كلتا الحالتين، ولا يؤدي الرفض مطلقًا إلى إزالة وكيل أو تعطيله أو إعادة تنشيطه.", "sidebar": { "home": "الصفحة الرئيسية", "dashboard": "لوحة القيادة", @@ -1180,10 +1180,10 @@ "providerQuota": "حصة المزود", "runtime": "وقت التشغيل", "consoleLogs": "سجلات وحدة التحكم", - "logsTimeline": "Timeline", + "logsTimeline": "الخط الزمني", "logsTimelineSubtitle": "جدول زمني للطلبات المرئية", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", + "conversations": "المحادثات", + "conversationsSubtitle": "محادثات وكيلة متعددة الأدوار", "globalRouting": "التوجيه العام", "mitmProxy": "بروكسي MITM", "oneProxy": "1Proxy", @@ -1213,11 +1213,11 @@ "leaderboard": "لوحة المتصدرين", "profile": "الملف الشخصي", "tokens": "الرموز", - "gamificationAdmin": "__MISSING__:Gamification Admin", + "gamificationAdmin": "إدارة التلعيب", "leaderboardSubtitle": "التصنيفات والإنجازات", "profileSubtitle": "الحساب والتفضيلات", "tokensSubtitle": "استخدام الرموز والميزانيات", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", + "gamificationAdminSubtitle": "مراقبة الحالات الشاذة ومكافحة الغش", "usageSubtitle": "إحصاءات حركة المرور والاستخدام", "analyticsComboHealthSubtitle": "موثوقية أهداف المجموعة", "analyticsUtilizationSubtitle": "استخدام المزود", @@ -1278,8 +1278,8 @@ "agentBridge": "جسر الوكيل", "agentBridgeSubtitle": "اعتراض حركة مرور وكيل IDE", "trafficInspector": "مفتش حركة المرور", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "فحص حركة الطلبات والاستجابات من تطبيقاتك", + "trafficInspectorPurpose": "اطّلع بدقة على ما يرسله تطبيقك إلى مزوّدي الذكاء الاصطناعي وما يتلقاه منهم. يعمل مع أي عميل متوافق مع OpenAI.", "cliCode": "كود CLI", "cliCodeSubtitle": "أدوات الكود التي تشير إلى OmniRoute", "cliAgents": "وكلاء CLI", @@ -1761,8 +1761,8 @@ "quotaShare": "مشاركة الحصة", "discovery": "الاستكشاف", "freeProviderRankings": "تصنيفات المزودين المجانيين", - "radar": "Radar", - "setup": "Setup", + "radar": "الرادار", + "setup": "الإعداد", "freeTiers": "الفئات المجانية", "gamification": "التلعيب", "leaderboard": "لوحة الصدارة", @@ -1826,11 +1826,11 @@ "updateStarted": "بدأ التحديث...", "reloadingPageAutomatically": "جارٍ إعادة تحميل الصفحة تلقائيًا...", "providerTopology": "طوبولوجيا الموفر", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "الطلبات الأخيرة", + "recentRequestsEmpty": "لا توجد طلبات بعد.", + "recentRequestsModel": "النموذج", + "recentRequestsTokens": "الوارد / الصادر", + "recentRequestsWhen": "الوقت", "downloadDmg": "تحميل DMG (macOS)", "downloadDmgDescription": "يتوفر إصدار جديد من تطبيق OmniRoute لسطح المكتب. يرجى تنزيل وتثبيت مثبت DMG لنظام macOS للتحديث (الحالي: v{version}).", "downloadExe": "تحميل EXE (ويندوز)", @@ -1888,15 +1888,15 @@ "releaseNotes": "ملاحظات الإصدار", "readMore": "اقرأ المزيد", "noAuthLabel": "لا يوجد مصادقة", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "استعد للتوجيه", + "readinessTitle": "أرسل طلبك الأول", + "readinessSubtitle": "أربع خطوات بسيطة. يتحقق OmniRoute من الجاهزية أثناء تقدمك.", + "readinessStep1": "ربط موفر", + "readinessStep2": "إعداد مصادقة نقطة النهاية", + "readinessStep3": "نسخ نقطة النهاية", + "readinessStep4": "إرسال طلب اختباري", + "readinessContinue": "متابعة الإعداد", + "readinessDismiss": "تجاهل الآن" }, "analytics": { "title": "التحليلات", @@ -1963,11 +1963,11 @@ "rangeCancel": "إلغاء", "rangeApply": "تطبيق", "rangeErrorInvalid": "يجب أن تكون البداية قبل النهاية", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "يوم واحد", + "period7D": "7 أيام", + "period30D": "30 يومًا", + "period90D": "90 يومًا", + "periodYTD": "منذ بداية العام", "periodAll": "الكل", "totalTokens": "إجمالي الرموز", "inputTokens": "رموز الإدخال", @@ -2258,9 +2258,9 @@ "fullAccess": "الوصول الكامل", "keyManagement": "إدارة مفاتيح API", "keyManagementDesc": "قم بإنشاء وإدارة مفاتيح API لمصادقة الطلبات إلى نقطة النهاية الخاصة بك", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "يرسل تطبيقك الطلبات إلى OmniRoute باستخدام مفتاح API", + "requestFlowYourApp": "تطبيقك", + "requestFlowApiKey": "مفتاح API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "مجموع المفاتيح", "restricted": "مقيد", @@ -2303,7 +2303,7 @@ "savePermissions": "حفظ الأذونات", "endpointRestrictions": "نقاط النهاية المسموح بها", "allEndpointsAllowed": "يمكن لهذا المفتاح الوصول إلى جميع نقاط نهاية API.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", + "endpointsRestricted": "مقيّد إلى {count} من نقاط النهاية{count, plural, one {} other {s}}.", "autoResolve": "الحل التلقائي", "autoResolveDesc": "حل أسماء النماذج الغامضة تلقائيًا للموفر الأصلي لمفتاح واجهة برمجة التطبيقات (API) هذا.", "streamDefaultMode": "التوافق الافتراضي للبث", @@ -2382,8 +2382,8 @@ "allowedCombos": "التركيبات المسموح بها", "allCombosAllowed": "يمكن لهذا المفتاح استخدام أي تركيبة.", "restrictedComboCount": "مقتصر على {count, plural, one {# تركيبة} other {# تركيبات}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {هناك إدخال واحد مخزّن} other {هناك # إدخالات مخزّنة}} غير موجودة في هذه القائمة المنسدلة (مثل قواعد التوجيه)، وسيُحتفظ بها كما حُفظت.", + "preservedComboRuleHint": "تم الاحتفاظ به كما هو مخزّن. هذا الإدخال ليس خيارًا في القائمة المنسدلة أعلاه، لذا لا يمكن تغييره إلا من خلال API.", "apiManagerCustomRateLimits": "حدود معدل الطلبات المخصصة لمدير الـ API", "apiManagerCustomRateLimitsDesc": "تجاوز الحدود الافتراضية العالمية. اتركه فارغًا لاستخدام الإعدادات الافتراضية.", "apiManagerRateLimitRequestsPlaceholder": "الطلبات", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "يسمح لهذا المفتاح بتجاهل سياسة إيقاف المزود/الحساب المصدر أثناء التوجيه. لا تزال حصص مفتاح API بالدولار الأمريكي سارية.", "quotaPill": "الحصة", "quotaModeOnly": "qtSd فقط", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "عقد إيجار حصري", + "exclusiveLeaseNoticeTitle": "تأجير حصري", + "exclusiveLeaseNoticeDesc": "يمتلك مفتاح API هذا أذونات تأجير حصرية لتوجيه الاتصالات المخصصة.", + "allConnections": "جميع الاتصالات", + "onlySelectedConnections": "الاتصالات المحددة فقط", + "selectAtLeastOneConnection": "حدّد اتصالًا واحدًا على الأقل أو اختر جميع الاتصالات.", + "allConnectionsDesc": "يمكن لهذا المفتاح استخدام أي اتصال نشط.", + "restrictedToConnections": "مقيّد بـ {count, plural, one {اتصال واحد} other {# اتصالات}}." }, "auditLog": { "title": "سجل التدقيق", @@ -2950,7 +2950,7 @@ "interpreter": "واجهة خط أوامر عميل البرمجة المستقل Open Interpreter", "omp": "عميل برمجة الطرفية Oh My Pi", "letta": "عميل Letta CLI بذاكرة مستمرة واستخدام للأدوات", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — بيئة برمجة RLM ذاتية التحسين تدعم موفّري الخدمات المتوافقين مع OpenAI", "warp": "طرفية Warp AI مع دعم لمزودي الخدمة المخصصين", "agent-deck": "منسق الوكلاء المتعددين Agent Deck", "5dive": "5dive — أسطول ذاتي الاستضافة من وكلاء البرمجة؛ ملف اعتماد واحد يوجّهها جميعًا إلى OmniRoute" @@ -3265,10 +3265,10 @@ "randomDesc": "اختيار عشوائي موحد، ثم الرجوع إلى النماذج المتبقية", "leastUsedDesc": "يختار النموذج الذي يحتوي على أقل عدد من الطلبات، مع موازنة الحمل مع مرور الوقت", "costOptimizedDesc": "يوجّه أولًا إلى النموذج الأقل تكلفة استنادًا إلى الأسعار", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "يوجّه كل بادئة مطالبة قابلة لإعادة الاستخدام باستمرار إلى حساب موفّر الخدمة نفسه", "resetAware": "توزيع دوري مراعي لإعادة التعيين", "resetAwareDesc": "يوازن الحصة المتبقية بين نافذتي إعادة التعيين لخمس ساعات ولأسبوع، ثم يناوب بين النتائج المتقاربة", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "مرجّح حسب الحصة", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "عشوائي صارم", "strictRandomDesc": "يخلط الترتيب ويستخدم كل نموذج مرة واحدة قبل إعادة الخلط", @@ -3543,7 +3543,7 @@ "weightTaskFit": "تناسب المهمة", "weightStability": "الاستقرار", "weightTierPriority": "الطبقة", - "weightCacheAffinity": "Cache Hit Affinity", + "weightCacheAffinity": "تقارب إصابات ذاكرة التخزين المؤقت", "weightSessionAvailability": "توفر الجلسة", "reviewIntelligentTitle": "تكوين التوجيه الذكي", "strategyRecommendations": { @@ -3664,10 +3664,10 @@ "wizardStep3Desc": "اختر كيفية توزيع الطلبات على نماذجك؛ تتوفر 13 استراتيجية", "wizardStep4Title": "المراجعة والحفظ", "wizardStep4Desc": "راجع التكوين وفعّل المجموعة", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", + "usageGuideInvokeTitle": "كيفية استدعاء هذه المجموعة", + "usageGuideInvokeDesc": "أرسل الاسم الدقيق للمجموعة بوصفه النموذج، مثل model: \"my-combo\" (أو combo/my-combo).", + "usageGuideInvokeAutoNote": "يمثّل auto وauto/* موجّهًا منفصلًا لا يتطلب إعدادًا ولا يستخدم مجموعاتك (إلا إذا كانت هناك مجموعة اسمها حرفيًا auto).", + "usageGuideInvokeOpenrouterNote": "إن openrouter/auto منتج حقيقي مدفوع من OpenRouter‏ (Auto Best Available)، وليس اسمًا مستعارًا في OmniRoute — استبعده عبر الإعدادات ← التوجيه ← إخفاء النماذج المدفوعة.", "emailVisibilityStateOn": "تشغيل", "emailVisibilityStateOff": "إيقاف", "reorderHandle": "اسحب لإعادة الترتيب", @@ -3805,8 +3805,8 @@ "rangeAll": "كل الوقت", "spend30d": "أنفق30 د", "activeModels": "نماذج نشطة", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", + "flatRateEstimateNotice": "يتضمن تقديرات أسعار الرموز المميزة للاشتراكات ذات السعر الثابت، وليس التكلفة المفوترة.", + "flatRateEstimateForecast": "يتضمن التقدير المتوقع تقديرات السعر الثابت.", "selectedWindow": "النافذة المحددة", "activeProviders": "مقدمو الخدمات النشطون", "overviewTitle": "عنوان نظرة عامة", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "نقطة نهاية واجهة برمجة التطبيقات", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "استخدم نقطة النهاية المتوافقة مع OpenAI مع معظم حزم SDK والأدوات.", + "testEndpoint": "اختبار نقطة النهاية ←", + "advancedProtocols": "البروتوكولات المتقدمة", "available": "نقاط النهاية المتاحة", "cloudProxy": "بروكسي السحابي", "disableConfirm": "هل أنت متأكد أنك تريد تعطيل الوكيل السحابي؟", @@ -4665,13 +4665,13 @@ "retry": "أعد المحاولة", "allOperational": "جميع الأنظمة قيد التشغيل", "issuesDetected": "تم اكتشاف مشاكل في النظام", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute جاهز", + "healthVerdictActionRequired": "يلزم اتخاذ إجراء لاستعادة التشغيل الكامل", + "healthVerdictCoolingDown": "في فترة تهدئة بعد التغييرات الأخيرة", + "healthSubtitle": "فحص سلامة النظام", + "advancedDiagnosticsTitle": "التشخيصات المتقدمة", + "hide": "إخفاء", + "show": "إظهار", "updatedAt": "تم التحديث {time}", "latency": "الكمون", "latencyP50": "ص50", @@ -4893,7 +4893,7 @@ "eventPayload": "حمولة الحدث", "requestId": "معرف الطلب", "providerWarningDesc": "حدث تحذير متعلق بالمزوّد.", - "a": "A", + "a": "أ", "offset": "إزاحة", "limit": "الحد", "status": "الحالة", @@ -4987,9 +4987,9 @@ "multiProvider": "متعدد الموفر", "usageTracking": "تتبع الاستخدام", "securityDesc": "قم بتعيين كلمة مرور لحماية لوحة المعلومات الخاصة بك، أو قم بالتخطي الآن.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ بدون كلمة مرور، لن تتمكن من إضافة موفّري الخدمة أثناء الإعداد. يمكنك إضافتهم لاحقًا من لوحة المعلومات بعد تعيين كلمة مرور.", "providerDesc": "قم بتوصيل مزود الذكاء الاصطناعي الأول الخاص بك. يمكنك إضافة المزيد لاحقا.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "يجب تعيين كلمة مرور أولًا لإضافة موفّري الخدمة. يُرجى الرجوع إلى خطوة الأمان وتعيين كلمة مرور، أو إضافة موفّري الخدمة لاحقًا من لوحة المعلومات.", "apiKeyRequired": "مفتاح واجهة برمجة التطبيقات (مطلوب)", "customUrlOptional": "عنوان URL المخصص (اختياري)", "testDesc": "دعونا نتحقق من أن اتصال المزود الخاص بك يعمل.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "جاري الاستيراد...", "importFromFileImport": "استيراد {count} من موفري الخدمة", "importFromFileResult": "تم استيراد {success} من موفري الخدمة (فشل {failed})", + "importFromFileDownloadTemplate": "تنزيل قالب CSV", + "importFromFileMoreErrors": "+{count} إضافية", + "importFromFileSchemaHint": "أعمدة CSV موضعية: provider، name، apiKey، baseUrl (اختياري)، priority (اختياري). يجب أن يكون عمود provider معرّف موفّر مُدار موجودًا أو معرّف عقدة مسجّلة مسبقًا ومتوافقة مع OpenAI/Anthropic — لا تؤدي عملية الاستيراد هذه إلى إنشاء عقد نقاط نهاية جديدة.", "adaptaTutorial": { "title": "كيفية الاتصال بـ Adapta Web", "introPrefix": "تتم مصادقة Adapta عبر Clerk. الرمز المميز", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "لقد تم إهمال هذا المزود", "riskNotice": { "title": "قبل المتابعة", - "detailsTitle": "Usage caveats", + "detailsTitle": "تنبيهات الاستخدام", "tooltip": "مزوّد له محاذير استخدام — انقر لعرض التفاصيل", "oauth": "يستخدم هذا المزوّد جلسة المنتج الرسمية أو OAuth، وهي غير مصرّح بها للاستخدام مع الوكيل أو الموجّه. لا نوصي بالاستخدام المكثف للوكلاء المستقلين (مثل OpenCloud والتدفقات الطويلة متعددة الخطوات والدُفعات الكبيرة)، فقد يقيّد مزوّد المنبع الحساب أو يحظره. استخدمه على مسؤوليتك.", "webCookie": "يصادق هذا المزوّد عبر ملفات تعريف ارتباط جلسة الويب. قد تُبطل خدمة المنبع الجلسة في أي وقت، ما يتطلب تسجيل الدخول مجددًا. لا يُنصح به للعمليات الطويلة غير المراقبة. استخدمه على مسؤوليتك.", @@ -5188,9 +5191,9 @@ "cancel": "إلغاء" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "تم وضع علامة على {count} من الاتصالات — ما يصل إلى {maxFailures} من حالات الفشل الأخيرة{lastFailureSuffix}. انقر لعرض حالة الاتصال.", + "lastFailureSuffix": "(آخر فشل {time})", + "ariaLabel": "عرض تفاصيل حالة الاتصال، {count} من التحذيرات" }, "disabled": "معطل", "enableProvider": "تمكين المزود", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "عنوان URL للأيقونة", "iconUrlHint": "اختياري. عنوان URL للصورة المعروضة كأيقونة لهذا المزود.", "iconUrlInvalid": "رابط الأيقونة غير صالح. استخدم http(s):// أو data:image/*;base64 رابط.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "المنطقة الزمنية لإعادة تعيين الحصة اليومية", + "dailyQuotaResetTimezoneHint": "منطقة زمنية اختيارية وفق IANA تُستخدم عندما يحذف المصدر العلوي X-RateLimit-Reset. اتركها فارغة للإبقاء على فترة تهدئة قصيرة.", + "dailyQuotaResetHourLabel": "ساعة إعادة تعيين الحصة اليومية", + "dailyQuotaResetHourHint": "الساعة المحلية من 0 إلى 23 في المنطقة الزمنية أعلاه. تركها فارغة يعني عدم وجود ساعة على مستوى العقدة.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5292,7 +5295,7 @@ "filterError": "خطأ", "filterBanned": "محظور", "filterCreditsExhausted": "نفدت الأرصدة", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "البحث في الحسابات…", "noFilteredConnections": "لا توجد اتصالات تطابق عامل التصفية الحالي.", "failedSetAlias": "فشل في تعيين الاسم المستعار", "setAliasSuccess": "تم تعيين الاسم المستعار {alias}", @@ -5534,18 +5537,18 @@ "interceptFetchHint": "إعادة كتابة استدعاءات أداة web_fetch الأصلية إلى /v1/web/fetch الخاصة بـ OmniRoute.", "interceptionLoadError": "فشل تحميل إعدادات الاعتراض: {error}", "interceptionSaveError": "فشل حفظ إعدادات الاعتراض: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", + "ccAliasSectionTitle": "الإظهار في Claude Code ‏(claude/…)", + "ccAliasSectionHint": "أعلِن عن نماذج موفّر الخدمة هذا باستخدام معرّفات مرآة claude/<provider>/<model> كي يتمكن اكتشاف نماذج البوابة في Claude Code من إدراجها. هذا الخيار معطّل افتراضيًا — ويؤدي تمكينه إلى مضاعفة إدخالات الكتالوج لجميع العملاء.", + "ccAliasProviderLevelLabel": "الإعداد الافتراضي لموفّر الخدمة", + "ccAliasModelOverridesLabel": "تجاوزات لكل نموذج", + "ccAliasModelOverrideAriaLabel": "تجاوز لـ {modelId}", + "ccAliasStateInherit": "توريث", + "ccAliasStateOn": "تشغيل", + "ccAliasStateOff": "إيقاف", + "ccAliasAddModelPlaceholder": "معرّف النموذج (مثل gpt-4o)", + "ccAliasAddModelButton": "إضافة تجاوز", + "ccAliasLoadError": "فشل تحميل إعدادات الأسماء المستعارة للاكتشاف: {error}", + "ccAliasSaveError": "فشل حفظ إعداد الاسم المستعار للاكتشاف: {error}", "compatUpstreamHeadersLabel": "ترويسات المنبع الإضافية", "compatUpstreamHeadersHint": "إعداد عالي الصلاحيات — يعامل معاملة بيانات اعتماد API الخاصة بالمزود، لذا لا ينبغي استخدامه إلا من مسؤولين موثوقين. تُدمج الترويسات بعد أن يضيف OmniRoute المصادقة. إذا استخدمت ترويسة مخصصة الاسم نفسه لترويسة موجودة (مثل Authorization)، فستستبدل قيمتك الترويسة المنشأة تلقائيًا بالكامل، بما فيها رمز Bearer. قد يؤدي الإعداد الخاطئ إلى خطأ 401 أو تعطّل مصادقة المنبع. أضف ترويسة واحدة في كل صف. تُحفظ القيمة عند فقدان التركيز أو إغلاق اللوحة.", "compatUpstreamHeaderName": "اسم الترويسة", @@ -5750,7 +5753,7 @@ "statusCreditsExhausted": "رصيد غير كافي / الحصة استنفدت", "showEmails": "إظهار كافة رسائل البريد الإلكتروني", "hideEmails": "إخفاء كافة رسائل البريد الإلكتروني", - "a": "A", + "a": "أ", "accountConcurrencyCapHint": "الحد الأقصى للطلبات المتزامنة لهذا الحساب", "accountConcurrencyCapLabel": "حد تزامن الحساب", "accountIdHint": "معرّف الحساب لدى المزود", @@ -5904,8 +5907,8 @@ "rateLimitOverridesSection": "تجاوزات حد المعدل", "rateLimitOverridesMaxConcurrentHint": "تجاوز الحد الأقصى للطلبات المتزامنة لهذا الاتصال. يتجاوز الحد الأقصى على مستوى الحساب.", "rateLimitOverridesMaxConcurrentLabel": "الحد الأقصى للتزامن (حد المعدل)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "أقصى مدة (بالمللي ثانية) يمكن أن ينتظرها الطلب للحصول على خانة ضمن حد المعدّل قبل أن يفشل. يتجاوز إعداد «المرونة» العام لهذا الاتصال فقط.", + "rateLimitOverridesMaxWaitMsLabel": "الحد الأقصى لانتظار قائمة الانتظار (بالمللي ثانية)", "rateLimitOverridesMinTimeHint": "الحد الأدنى للوقت (مللي ثانية) بين الطلبات. يتجاوز تأخير محدد المعدل الافتراضي.", "rateLimitOverridesMinTimeLabel": "الحد الأدنى للفاصل الزمني (مللي ثانية)", "rateLimitOverridesRpdHint": "الحد الأقصى للطلبات في اليوم لهذا الاتصال. يتجاوز الإعداد الافتراضي للمزود.", @@ -5978,7 +5981,7 @@ "zedImportHint": "استيراد إعدادات المزودين من Zed", "zedImportNetworkError": "خطأ في الشبكة أثناء الاستيراد من Zed", "zedImportNone": "لا شيء لاستيراده من Zed", - "zedImportSuccess": "Imported {credentials} credential(s) from Zed for {providers} provider(s)", + "zedImportSuccess": "تم استيراد {credentials} من بيانات الاعتماد من Zed لصالح {providers} من موفّري الخدمة", "zedImporting": "جارٍ الاستيراد من Zed...", "zedNoCredentials": "لم يتم العثور على بيانات اعتماد Zed في سلسلة المفاتيح", "zedUnsupportedCredentials": "تم العثور على {count} من بيانات اعتماد سلسلة المفاتيح، ولكن لم يتطابق أي منها مع الموفرين المدعومين", @@ -6175,7 +6178,7 @@ "freeaiapikey": "بروكسي API مخفض لأكثر من 40 نموذجًا بما في ذلك GPT-5 و Claude Opus 4.6 و Claude Sonnet 4.6 و Qwen 3.5. احصل على مفتاح API الخاص بك من https://freeaiapikey.com/dashboard. عنوان URL الأساسي: https://freeaiapikey.com/v1.", "freemodel-dev": "احصل على رصيد API مجاني بقيمة 300 دولار على https://freemodel.dev — لا يلزم إدخال معلومات الدفع. نقطة نهاية متوافقة مع OpenAI. تتوفر نماذج GPT-5.4 و GPT-5.5.", "friendliai": "فئة مجانية للاستدلال بدون خادم — لا يلزم وجود بطاقة ائتمان", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "فئة مجانية عبر Google AI Studio؛ لم تعد الحصص لكل نموذج منشورة (تحقق من صفحة الحصص في AI Studio) — لا حاجة إلى بطاقة ائتمان.", "gigachat": "ربط GigaChat (Sber) بمفتاح API.", "gitlab": "رمز وصول شخصي لـ GitLab لواجهة برمجة تطبيقات مقترحات الأكواد العامة. قم بتكوين عنوان URL أساسي مستضاف ذاتيًا عند عدم استخدام gitlab.com.", "gitlawb-gmi": "احصل على مفتاح API الخاص بك من لوحة تحكم Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "ربط GLM Coding (الصين) بمفتاح API.", "glmt": "ملف تعريف GLM مسبق الضبط بميزانية رموز أعلى، وتمكين التفكير، ومهلة أطول.", "getgoapi": "ربط GoAPI بمفتاح API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "الخطة المجانية: حدود لكل نموذج (200K رمز مميز يوميًا لكل نموذج محادثة؛ راجع console.groq.com/docs/rate-limits لمعرفة RPM/RPD) — لا توجد وسيلة دفع مسجّلة.", "haiper": "احصل على مفتاح API من haiper.ai/haiper-api", "heroku": "ربط Heroku AI بمفتاح API.", "hcnsec": "احصل على مفتاح API من api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "أنشئ مفتاح API على https://app.requesty.ai، ثم الصقه هنا كرمز Bearer. نقطة نهاية متوافقة مع OpenAI على https://router.requesty.ai/v1، مع كتالوج /v1/models مباشر.", "runwayml": "يعتمد توليد الفيديو في Runway على المهام. يرسل OmniRoute وظائف تحويل النص إلى فيديو أو الصورة إلى فيديو، ويستعلم من /v1/tasks/[id]، ويقوم بتطبيع مخرجات الفيديو النهائية مرة أخرى إلى استجابة /v1/videos/generations الشبيهة بـ OpenAI.", "sambanova": "رصيد مجاني بقيمة 5$ عند التسجيل (صلاحية 30 يومًا)، لا يتطلب بطاقة ائتمان", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "أنشئ مفتاح API على https://seekai.cc، ثم الصقه هنا كرمز Bearer. عنوان URL الأساسي المتوافق مع OpenAI: https://seekai.cc/v1.", "sap": "يستخدم اكتشاف النماذج /v2/lm/scenarios/foundation-models/models على AI_API_URL. تستخدم طلبات الدردشة deploymentUrl/chat/completions وتتطلب AI-Resource-Group.", "sarvam": "سارفام AI متوافق مع OpenAI على /v1. يقوم OmniRoute بفحص /v1/models ويوجه حركة الدردشة إلى /v1/chat/completions. تم ضبط النماذج للغات الهندية.", "scaleway": "1 مليون رمز مميز مجاني للحسابات الجديدة — متوافق مع الاتحاد الأوروبي/GDPR (باريس)، Qwen3 235B وLlama 70B", @@ -6309,7 +6312,7 @@ "claude": "ربط Claude Code باستخدام تدفق OAuth الحالي.", "cline": "ربط Cline باستخدام تدفق OAuth الحالي.", "cursor": "ربط Cursor IDE باستخدام تدفق OAuth الحالي.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "اربط Cursor باستخدام مفتاح API للمستخدم (crsr_...) من cursor.com/dashboard/api؛ لا حاجة إلى جلسة IDE.", "github": "ربط GitHub Copilot باستخدام تدفق OAuth الحالي.", "gitlab-duo": "تطبيق OAuth بنطاقات ai_features + read_user. قم بتكوين GITLAB_DUO_OAUTH_CLIENT_ID واختياريًا GITLAB_DUO_OAUTH_CLIENT_SECRET على مثيل OmniRoute هذا.", "kilocode": "ربط Kilo Code باستخدام تدفق OAuth الحالي.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "انسخ بيانات الاعتماد المطلوبة من المجال الخاص بالموفر. بالنسبة لملفات تعريف الارتباط، انسخ فقط قيمة رأس ملف تعريف الارتباط واحذف ملف تعريف الارتباط:.", "webSessionGuideStep3Manual": "المسار اليدوي: افتح أدوات مطور المتصفح (F12 → الشبكة)، قم بتحديث الصفحة، افتح طلبًا مصادقًا، وانسخ قيمة رأس الكوكي من رؤوس الطلب — احذف بادئة Cookie: .", "webSessionGuideStep4": "الصقها هنا وتحقق من الاتصال. إذا توقفت عن العمل، قم بتسجيل الدخول مرة أخرى واستبدلها بقيمة جديدة.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "استيراد ملف .har", + "harImportButtonBusy": "جارٍ الاستيراد…", + "harImportButtonHint": "صدّره من علامة تبويب Network في DevTools بعد إرسال رسالة دردشة واحدة على الأقل.", + "harImportStatusValid": "تم الاستيراد — صالح لمدة ~{minutes} د.", + "harImportStatusExpiringSoon": "تم الاستيراد — لم يتبقَّ من صلاحيته سوى ~{minutes} د.", + "harImportStatusExpired": "تم الاستيراد، لكن انتهت صلاحية هذا الرمز بالفعل (منذ {minutes} د) — صدّر ملف HAR جديدًا.", + "harImportStatusUnknownExpiry": "تم الاستيراد. تعذّرت قراءة وقت انتهاء صلاحيته.", + "harImportErrorNotJson": "هذا الملف ليس JSON صالحًا — هل هو بالفعل ملف .har تم تصديره؟", + "harImportErrorNoEntries": "لا يحتوي ملف HAR هذا على أي إدخالات شبكة مسجّلة.", + "harImportErrorNoChathubUrl": "لم يُعثر على اتصال دردشة Copilot في ملف HAR هذا. أرسل رسالة دردشة واحدة على الأقل في m365.cloud.microsoft قبل التصدير.", + "harImportErrorUnparsableUrl": "عُثر على اتصال الدردشة، ولكن تعذّرت قراءة عنوان URL الخاص به.", + "harImportErrorMissingFields": "عُثر على اتصال الدردشة، لكن الرمز كان مفقودًا منه.", + "harImportErrorReadFailed": "تعذّرت قراءة هذا الملف.", + "harImportErrorUnknown": "تعذّر استخراج بيانات اعتماد من ملف HAR هذا.", "webSessionSecurityHint": "تعامل مع هذا ككلمة مرور: فقد يصل إلى حساب الويب الذي قمت بتسجيل الدخول إليه حتى تنتهي صلاحيته أو يتم إبطاله.", "webNoAuthGuideTitle": "لا توجد بيانات الاعتماد المطلوبة", "webNoAuthGuideBody": "{provider} لا يحتاج إلى مفتاح API أو ملف تعريف الارتباط. احفظ الاتصال لاستخدام نقطة نهاية الويب المجانية الخاصة به.", @@ -6364,15 +6367,15 @@ "checkWebToken": "رمز التحقق", "huggingchatLabel": "HuggingChat (مجاني)", "huggingchatDesc": "دردشة LLM مجانية عبر huggingface.co/chat", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe على الويب", "poeWebDesc": "دردشة متعددة النماذج عبر poe.com", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice على الويب", "veniceWebDesc": "درشبة ذكاء اصطناعي تركز على الخصوصية", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel على الويب", "v0VercelWebDesc": "توليد كود الذكاء الاصطناعي عبر v0.dev", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi على الويب", "kimiWebDesc": "دردشة المستهلك Moonshot AI عبر www.kimi.com (دولية، Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola على الويب", "doubaoWebDesc": "دردشة الذكاء الاصطناعي من ByteDance عبر dola.com", "overrideBaseUrlAdvanced": "متقدم: تجاوز عنوان URL الأساسي", "overrideBaseUrlHint": "متقدم: توجيه هذا المزود المدمج إلى نقطة نهاية مخصصة. اتركه فارغًا لاستخدام الافتراضي.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "انتهت صلاحية رمز الأمر", "commandCodeConnected": "تم الاتصال برمز الأمر", "commandCodeConnectionAdded": "تم إضافة اتصال رمز الأمر", + "clearConnectionCooldown": "مسح فترة التهدئة", + "clearConnectionCooldownInProgress": "جارٍ المسح…", + "clearConnectionCooldownTitle": "امسح فترة التهدئة الآن — استخدم هذا عندما تكون الحصة قد تجددت بالفعل لدى المزوّد الأساسي", "commandCodeLinkExpired": "رابط كود الأمر منتهي الصلاحية", "commandCodeOpeningStudio": "فتح كود ستوديو الأوامر…", "commandCodePopupBlocked": "تم حظر النافذة المنبثقة. يرجى السماح بالنوافذ المنبثقة والمحاولة مرة أخرى باستخدام Command Code Connect.", "commandCodeStartFailed": "فشل في بدء الأمر Code auth", "connectionDeleted": "تم حذف الاتصال", "connectionFallback": "الاتصال", + "connectionCooldownCleared": "تم مسح فترة التهدئة — عاد الاتصال إلى التوجيه", "coolingConnectionsDescription": "هذه الاتصالات في فترة تبريد بعد آخر طلب. ستتخطاها OmniRoute حتى ينتهي المؤقت — لا حاجة للتعطيل اليدوي.", "coolingConnectionsTitle": "التبريد الحالي ({count})", + "failedClearConnectionCooldown": "فشل مسح فترة التهدئة", "failedDeleteAlias": "فشل في حذف الاسم المستعار", "failedDeleteConnection": "فشل في حذف الاتصال", "failedDistributeProxies": "فشل في توزيع الوكلاء.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "إعدادات نقطة نهاية النموذج المحفوظ", "searchByModelAria": "البحث حسب الطراز", "selectSupportedEndpoint": "اختر نقطة نهاية مدعومة واحدة على الأقل", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "الإعدادات", @@ -6694,12 +6697,12 @@ "autoDisableDescription": "قم بوضع علامة على اتصالات الموفر على أنها معطلة بشكل دائم إذا أعادت إشارات حظر طرفية محددة (على سبيل المثال، HTTP 403 \"التحقق من حسابك\"). يؤدي هذا إلى إزالتها من دوران التحرير والسرد.", "autoDisableThreshold": "عتبة الحظر", "autoDisableThresholdDesc": "إشارات الحظر المتتالية مطلوبة قبل التعطيل الدائم.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedScope": "تطبيق التعطيل التلقائي على", + "autoDisableBannedScopeDesc": "قد تُقفَل حسابات تسجيل الدخول (الاشتراكات المدفوعة والحسابات المجانية) من قِبل المزوّد الأساسي إذا واصل OmniRoute إعادة المحاولة بعد الحظر. لا تواجه مفاتيح API المدفوعة مسبقًا هذه المخاطرة — اتركها في المجموعة كي تتمكن استراتيجية الملء أولًا من استخدام المفتاح التالي.", + "autoDisableBannedScopeAll": "جميع الاتصالات", + "autoDisableBannedScopeAllDesc": "عطّل كل اتصال يعيد إشارة حظر دائم، بما في ذلك مفاتيح API المدفوعة مسبقًا.", + "autoDisableBannedScopeSubscription": "حسابات تسجيل الدخول / الاشتراك فقط", + "autoDisableBannedScopeSubscriptionDesc": "عطّل حسابات OAuth وملفات تعريف الارتباط والجلسات وتسجيل الدخول عبر الويب (المدفوعة أو المجانية). تظل مفاتيح API المدفوعة مسبقًا نشطة حتى يتمكن التوجيه من الانتقال إلى اتصال بديل.", "customBannedSignals": "الكلمات المفتاحية المحظورة", "customBannedSignalsDesc": "كلمات مفتاحية إضافية تؤدي إلى اكتشاف حظر الحساب الدائم. تنطبق الكلمات المفتاحية المدمجة دائمًا.", "customBannedSignalsPlaceholder": "على سبيل المثال: api key revoked", @@ -6746,27 +6749,27 @@ "themeSystem": "النظام", "endpointTunnelVisibility": "رؤية نفق نقطة النهاية", "endpointTunnelVisibilityDesc": "إخفاء عناصر التحكم في النفق من صفحة نقطة النهاية دون تغيير حالة النفق.", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "نفق Cloudflare السريع", "showCloudflareTunnelDesc": "إظهار عناصر تحكم Cloudflare Quick Tunnel في صفحة نقطة النهاية.", "showTailscaleFunnel": "Tailscale Funnel", "showTailscaleFunnelDesc": "إظهار عناصر تحكم Tailscale Funnel في صفحة نقطة النهاية.", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "نفق ngrok", "showNgrokTunnelDesc": "إظهار عناصر تحكم ngrok Tunnel في صفحة نقطة النهاية.", "sidebarVisibility": "إخفاء عناصر الشريط الجانبي", "sidebarVisibilityDesc": "قم بإخفاء أي إدخال للتنقل في الشريط الجانبي لتقليل الفوضى المرئية.", "sidebarVisibilityHint": "يتم إخفاء أي قسم من الشريط الجانبي تلقائيًا عند...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "الكل", + "presetAllDesc": "إظهار كل شيء", + "presetEssentials": "الأساسيات", + "presetEssentialsDesc": "مسار المبتدئين - تظل الأدوات المتقدمة قابلة للبحث", + "presetMinimal": "الحد الأدنى", + "presetMinimalDesc": "الصفحات الأساسية فقط", + "presetDeveloper": "المطور", + "presetDeveloperDesc": "أدوات التطوير والوكيل", + "presetAdmin": "المسؤول", + "presetAdminDesc": "المراقبة والتدقيق", + "settingsSidebarTitle": "تخصيص الشريط الجانبي", + "settingsSidebarDesc": "اختر عناصر الشريط الجانبي التي تريد إظهارها. يُبقي وضع «الأساسيات» الأدوات المتقدمة قابلة للبحث.", "hideHealthLogs": "إخفاء سجلات التحقق من الصحة", "hideHealthLogsDesc": "عند التشغيل، قم بمنع رسائل [HealthCheck] في وحدة تحكم الخادم", "themeAccent": "لون السمة", @@ -6910,7 +6913,7 @@ "healthcheckLatency": "زمن الاستجابة", "proxyDocumentationScopeTitle": "تحديد نطاق البروكسي", "proxyDocumentationScopeDescBefore": "يقوم OmniRoute بتحديد البروكسي الصادر بترتيب الأولوية التالي:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "التركيبة → الحساب → المزوّد → عام", "proxyDocumentationScopeDescAfter": ". النطاق الأكثر تحديدًا هو الذي يفوز.", "proxyDocumentationAddTitle": "إضافة بروكسي مخصص", "proxyDocumentationAddDescBefore": "انتقل إلى", @@ -6934,7 +6937,7 @@ "proxyFreePoolFilterProtocol": "التصفية حسب البروتوكول", "proxyFreePoolProtocol": "البروتوكول", "proxyFreePoolCountryPlaceholder": "البلد (مثل US)", - "proxyFreePoolFilterCountry": "Filter by country", + "proxyFreePoolFilterCountry": "التصفية حسب البلد", "proxyFreePoolMinQualityPlaceholder": "الحد الأدنى للجودة", "proxyFreePoolMinQualityLabel": "الحد الأدنى لدرجة الجودة", "proxyFreePoolSyncAll": "مزامنة الكل", @@ -7067,7 +7070,7 @@ "costOptDesc": "تفضيل أرخص حساب متاح", "resetAware": "تناوب دوري واعٍ بإعادة الضبط", "resetAwareDesc": "تفضيل الحسابات ذات الحصة السليمة المتبقية وأقرب وقت لإعادة الضبط", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "مرجّح حسب الحصة", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "عشوائي صارم", "strictRandomDesc": "يخلط المجموعة ويستخدم كل حساب مرة قبل إعادة الخلط", @@ -7089,14 +7092,14 @@ "providerAccountRoutingDesc": "تجاوز استراتيجية الحساب العامة لمزود الخدمة هذا (تكافؤ 9router).", "providerRoutingStrategy": "استراتيجية الحساب", "providerRoutingInheritGlobal": "وراثة الإعداد الافتراضي العام", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "حد الفحص المسبق للحصة", + "quotaPreflightSubtitle": "تخطّي الحسابات التي نفدت حصتها قبل إرسال الطلب إلى الخادم الرئيسي", + "quotaPreflightEnable": "تفعيل الفحص المسبق للحصة", + "quotaPreflightEnableDesc": "قبل كل طلب، تحقّق من الحصة المتبقية للحساب (نوافذ 5 ساعات / أسبوعية / شهرية). تُتخطّى الحسابات التي بلغت الحد أو انخفضت دونه من دون إجراء اتصال بالخادم الرئيسي. وتكون لحدود كل نافذة المحددة في صفحة حصة المزوّد الأولوية دائمًا على الإعداد الافتراضي هنا.", + "quotaPreflightCutoff": "الحد العام (الحد الأدنى للنسبة المتبقية %)", + "quotaPreflightCutoffDesc": "توقّف عن استخدام الحساب عندما تنخفض حصته المتبقية إلى هذه النسبة المئوية أو دونها، وذلك لكل نافذة ليس لها حد خاص بها. يتطابق هذا مع أشرطة النسبة المئوية المتبقية في صفحة حصة المزوّد.", + "quotaPreflightWindowsHint": "لا تتأثر بهذا الإعداد الافتراضي النوافذ التي لها حد خاص بكل نافذة أو بكل مزوّد (يُضبط في نافذة «الحد» ضمن صفحة حصة المزوّد).", + "quotaPreflightLoadFailed": "تعذّر تحميل إعدادات الفحص المسبق للحصة.", "modelAliases": "الأسماء المستعارة النموذجية", "modelAliasesTitle": "أسماء بديلة للنماذج", "modelAliasesDesc": "أعد تعيين أسماء النماذج باستخدام مطابقات تامة أو أنماط أحرف بدل.", @@ -7329,7 +7332,7 @@ "configured": "مُهيأ", "none": "بلا", "modelOverrideValuePlaceholder": "قيمة رقمية", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "قيم إنجليزية مفصولة بفواصل، مثل low, medium, high", "addKeyValue": "إضافة مفتاح وقيمة", "noModelOverrides": "لم يتم تكوين أي تجاوزات لهذا النموذج.", "modelOverrideLoadFailed": "فشل تحميل تجاوزات النموذج", @@ -7415,8 +7418,8 @@ "resetting": "جارٍ إعادة التعيين...", "contextOpt": "محسّن للسياق", "contextOptDesc": "يوجّه استنادًا إلى متطلبات نافذة السياق وطول المحادثة", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", + "cacheOpt": "محسّن للتخزين المؤقت", + "cacheOptDesc": "يُبقي بادئة المطالبة القابلة لإعادة الاستخدام نفسها على حساب المزوّد نفسه", "priorityDesc": "تراجع تسلسلي: يجرّب المزوّد الأول، ثم الثاني، وهكذا", "weightedDesc": "يوزّع حركة المرور بين المزوّدين حسب أوزان نسبية", "modelRoutingTitle": "قواعد توجيه النماذج", @@ -7549,8 +7552,8 @@ "minutes": "دقائق", "compressionModeRtk": "رتك", "compressionModeRtkDesc": "تصفية مخرجات الأداة المدركة للأوامر", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", + "compressionModeCodexResponses": "مخرجات أداة Responses", + "compressionModeCodexResponsesDesc": "ضغط متحفّظ لمخرجات الصدفة والتصحيحات والبحث والبناء وJSON المؤهلة", "compressionModeStacked": "مكدسة", "compressionModeStackedDesc": "تصفية مخرجات أداة RTK متبوعة بضغط رسائل Caveman", "qdrantTitle": "Qdrant (الذاكرة المتجهة)", @@ -7605,8 +7608,8 @@ "resilienceRequestsPerMinute": "الطلبات في الدقيقة", "resilienceMinTimeBetweenRequests": "الحد الأدنى من الوقت بين الطلبات", "resilienceConcurrentRequests": "الطلبات المتزامنة", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceConnectionScopeConcurrentRequests": "الطلبات المتزامنة لكل اتصال/نطاق حصة", + "resilienceGlobalConcurrentRequests": "إجمالي الطلبات المتزامنة إلى الخادم الرئيسي (0 = معطّل)", "resilienceMaxQueueWaitTime": "الحد الأقصى لوقت الانتظار في قائمة الانتظار", "resilienceBaseCooldown": "التهدئة الأساسية", "resilienceUseUpstreamRetryHints": "استخدم تلميحات إعادة المحاولة الأولية", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "تم استيراد JSON القديم بنجاح!", "jsonImportFailed": "فشل استيراد JSON", "jsonImportError": "خطأ أثناء استيراد JSON", + "jsonImportAuthRequired": "المصادقة مطلوبة لاستيراد إعداد JSON قديم. يُرجى تسجيل الدخول أو إكمال الإعداد أولًا.", + "databaseSettingsAuthRequiredTitle": "المصادقة مطلوبة", + "databaseSettingsAuthRequiredBody": "لا تتوفر إعدادات قاعدة البيانات واستيراد JSON إلا لمسؤول مُصادَق عليه. سجّل الدخول أو أكمل الإعداد لعرضها وتعديلها.", + "databaseSettingsAuthRequiredCta": "تسجيل الدخول", "storagePurgeData": "تطهير البيانات", "storagePurgeDataDesc": "حذف جميع السجلات فوراً دون تطبيق عمليات التحقق من الاحتفاظ. يُستخدم بحذر.", "storageRetentionCleanup": "إعدادات الاحتفاظ", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "الوضع: {mode}", "compressionAdaptiveOff": "ميزانية السياق التكيفية: معطلة (المشغل التلقائي القديم)", "compressionAdaptiveTarget": "تكيفي ({mode}، السياسة: {policy}) — الهدف ≈ {target, number} رمز (لنافذة من {contextLimit, number} رمز)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "ميزانية سياق تكيفية", + "compressionAdaptiveModeOff": "إيقاف (التشغيل التلقائي القديم)", + "compressionAdaptiveModeFloor": "الحد الأدنى (ضمان الملاءمة دائمًا)", + "compressionAdaptiveModeReplace": "استبدال التشغيل التلقائي", + "compressionAdaptivePolicy": "سياسة الميزانية", + "compressionAdaptivePolicyReserve": "حجز للمخرجات", + "compressionAdaptivePolicyPercentage": "النسبة المئوية من نافذة السياق", + "compressionAdaptivePolicyAbsolute": "ميزانية الرموز المطلقة", "compressionOutputStylesDescription": "حقن تعليمات تشكيل الاستجابة دون إعادة كتابة مخرجات المزود. ادمج بحرية.", "mcpAccessibilityDescription": "يحدد نطاق مخرجات أداة MCP (مخزن منفصل).", "compressionStylesTileSummary": "{tokens, number} رمز تم توفيره · {runs, plural, one {# تشغيل تم تنسيقه} other {# تشغيلات تم تنسيقها}}", @@ -7866,8 +7873,8 @@ "description": "تصفية مخرجات الأوامر." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "مخرجات أداة Responses", + "description": "ضغط متحفظ لمخرجات أداة Responses المدعومة." }, "headroom": { "label": "مساحة احتياطية", @@ -7908,12 +7915,12 @@ "description": "سلم YAGNI: أصغر تغيير فعال، بدون تجريدات غير مطلوبة." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (مطوّر خبير كسول)", + "description": "نهج المطوّر الخبير الكسول: اصعد سُلّم YAGNI، وأصلح السبب الجذري، واستخدم أصغر فرق تغييرات يعمل." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "لدي اضطراب فرط الحركة وتشتت الانتباه (التنفيذ أولًا)", + "description": "مخرجات تركّز على التنفيذ أولًا: يبدأ الإخراج بالإجراء التالي، والخطوات مرقّمة، مع خطوة تالية عملية واحدة ومن دون مقدمة." }, "terse-cjk": { "label": "CJK مقتضب (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI الاحتياطي", "cliproxyapiEnableFallback": "استخدم خيار CLIPProxyAPI الاحتياطي", "cliproxyapiUrl": "عنوان URL لـ CLIProxyAPI", + "headroomProxyTitle": "وكيل Headroom", + "headroomProxyDesc": "عنوان URL لوكيل Headroom الاختياري لتوفير الرموز. إذا تُرك فارغًا، فسيُستخدم HEADROOM_URL أو http://localhost:8787.", + "headroomProxyUrl": "عنوان URL لـ Headroom", + "headroomProxyUrlHint": "يمكن تشغيل عناوين URL للاسترجاع الحلقي من هذه الصفحة. أما عناوين URL الخارجية فيقتصر التعامل معها على فحصها.", + "headroomProxySave": "حفظ", + "headroomProxyStart": "بدء", + "headroomProxyStop": "إيقاف", + "headroomProxyExternalHint": "عنوان URL هذا ليس للاسترجاع الحلقي، لذلك لن يشغّل OmniRoute واجهة CLI المحلية.", "cliproxyapiStatus": "حالة cli بروكسيابي", "cliproxyapiNotDetected": "لم يتم الكشف عنها", "cliproxyapiImportAuthTitle": "استيراد الحسابات من CLIProxyAPI", @@ -8170,7 +8185,7 @@ "cloudflareRelayApiTokenLabel": "رمز Cloudflare API", "cloudflareRelayApiTokenHint": "يتطلب إذن \"نصوص Workers البرمجية: تعديل\". يتم استخدام الرمز فقط في وقت النشر ولا يتم تخزينه مطلقاً.", "cloudflareRelayProjectNameLabel": "اسم الـ Worker", - "cloudflareRelayFreeTierNote": "Free tier: 100,000 requests/day per Cloudflare account.", + "cloudflareRelayFreeTierNote": "الفئة المجانية: 100,000 طلب يوميًا لكل حساب Cloudflare.", "cloudflareRelayDeploying": "جارٍ النشر...", "cloudflareRelayDeploy": "نشر", "cloudflareRelayCredsRequired": "معرّف الحساب ورمز API المميز مطلوبان", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "الحد الأقصى لعدد خطوات التراجع قبل أن تتوقف فترة التهدئة عن الزيادة. يتم الوصول إلى حد فترة التهدئة القصوى أولاً في معظم التكوينات، مما يجعل هذا سقف أمان عند رفع فترة التهدئة القصوى.", "disableSessionStickiness": "تعطيل ثبات الجلسة", "disableSessionStickinessDesc": "تنتقل مجموعات التناوب الدائري (Round-robin) والمجموعات العشوائية إلى اتصال مختلف في كل طلب بدلاً من تثبيت محادثة كاملة باتصال واحد بواسطة هاش الرسالة الأولى. اتركها معطلة للحفاظ على إصابات prompt-cache للمحادثات متعددة الأدوار. عمليات التجاوز الخاصة بكل مجموعة لها الأسبقية.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "التوجيه وفقًا لموضع ذاكرة التخزين المؤقت للموجّه", + "promptCacheAffinityDesc": "تفضيل حساب المزوّد نفسه عند تطابق مفاتيح ذاكرة التخزين المؤقت للموجّه، مع الحفاظ على التحويل عند التعطل استنادًا إلى السلامة والحصة.", + "reasoningTokenBuffer": "هامش رموز الاستدلال", + "reasoningTokenBufferDesc": "السماح للتوجيه المدمج بإضافة هامش إلى max_tokens لنماذج الاستدلال المعروفة فقط عندما يتسع الهامش الكامل ضمن حد مخرجات معروف.", + "zeroLatencyOptimizations": "تحسينات زمن الوصول الصفري", + "zeroLatencyOptimizationsDesc": "الاشتراك في التحوّط، والتجاوزات التنبؤية لـ TTFT، والضغط الاستباقي للطلبات الاحتياطية. اتركه معطّلًا لمنع ميزات زمن الوصول هذه من تسابق الوجهات أو ضغط الطلبات الاحتياطية.", "credentialRedaction": "تنقيح بيانات الاعتماد", "credentialRedactionDesc": "تنقيح مفاتيح API والرموز المميزة والأسرار من السياق المرسل إلى الموفرين ومن الاستجابات.", "enableCredentialRedaction": "تمكين تنقيح بيانات الاعتماد", "enableCredentialRedactionDesc": "يزيل مفاتيح API والرموز المميزة والمفاتيح الخاصة وJWTs من الرسائل واستدعاءات الأدوات والاستجابات.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "المزامنة التلقائية معطّلة", + "pricingAutoSyncEnabled": "المزامنة التلقائية مفعّلة", "modalityBridgeIntro": "حوّل المحتوى متعدد الوسائط إلى نص قبل وصوله إلى النماذج النصية فقط. جسور الرؤية والصوت والفيديو متاحة وقابلة للتهيئة.", "modalityBridgeVisionTab": "رؤية", "modalityBridgeAudioTab": "صوت", @@ -8364,15 +8379,7 @@ "cliproxyapiHealth": "الصحة", "cliproxyapiPort": "منفذ", "qdrantHost": "مضيف", - "qdrantCollection": "مجموعة", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "مجموعة" }, "contextRtk": { "title": "محرك آر تي كيه", @@ -8661,6 +8668,8 @@ "contextEditingNote": "متاح حاليًا لـ Claude (Anthropic) فقط. إنه وضع مفوض: يقوم المزود بمسح كتل استخدام الأدوات القديمة من جانب الخادم — نحن لا نعيد كتابة الرسالة. ولا يؤثر ذلك على المزودين الآخرين.", "namedCombos": "التوليفات المسماة", "namedCombosDescription": "احفظ مسارات عمل مختلفة واخصصها لتوليفات توجيه محددة.", + "activeProfileMasterSwitchOffWarning": "لن يعمل ملف التعريف النشط أدناه حتى يتم تشغيل مفتاح \"ضغط الموجّه\" الرئيسي.", + "activeProfileMasterSwitchOffCta": "شغّله في الإعدادات", "comboNamePlaceholder": "اسم التوليفة", "descriptionPlaceholder": "الوصف", "nameRequired": "أدخل اسم التوليفة قبل الحفظ.", @@ -8674,9 +8683,7 @@ "languagePacksList": "حزم اللغات: {packs}", "dragToReorder": "اسحب لإعادة ترتيب الخطوة", "engine": "المحرك", - "intensity": "الشدة", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "الشدة" }, "compressionStudio": { "noRun": "لا يوجد تشغيل ضغط متاح.", @@ -8705,7 +8712,7 @@ "run": "تشغيل", "laneRejected": "تم الرفض: {reason}", "error": "خطأ", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "فشلت معاينة مسار المعالجة المدمج: {reason}", "combinedFlow": "التدفق المدمج", "eachLayer": "كل طبقة على حدة", "diff": "الفرق", @@ -8780,27 +8787,27 @@ }, "enableTitle": "تمكين المحرك", "enableDescription": "يعمل في نهاية المكدس (بعد أن يقوم RTK/Caveman بتنظيف النص، ويقوم OmniGlyph بتحويل المتبقي إلى صور) ويعمل أيضًا بشكل مستقل عبر وضع omniglyph. هذه نسخة معاينة وتظل معطلة افتراضيًا حتى تكتمل عملية التحقق الشاملة من البداية للنهاية.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "ملف تعريف الضغط", + "profileDescription": "ملف التعريف حدّ أقصى وليس حدًا أدنى: لا يمكن لتجاوز خاص بخطوة أن يخفف قيود ملف تعريف أكثر صرامة. وفقًا للقياسات على قاعدة الشفرة هذه: عند استخدام الوضع الآمن للبرمجة أو المتوازن، لا تُضغط أي بيانات في جلسة لم يتراكم فيها سجل بعد، لأن كليهما يرفع الحد الأدنى لعدد المحارف ويبقي موجّه النظام ومخططات الأدوات ونتائج الأدوات بصيغتها الأصلية.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "قوي (افتراضي)", + "description": "السياسة التي قاستها الإيصالات المنشورة. تحوّل موجّه النظام ووثائق الأدوات والسجل الكثيف إلى صور." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "متوازن", + "description": "يُبقي الحالة النشطة بصيغتها الأصلية ويحمي آخر 8 جولات؛ ولا يختزل سوى السجل المغلق الأقدم." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "آمن للبرمجة", + "description": "يُبقي الصلاحيات ومخططات الأدوات ومخرجات الأدوات المباشرة بصيغتها الأصلية، مع حماية آخر 12 دورًا. لا يضغط أي شيء حتى تتراكم المحفوظات في الجلسة." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "تمرير مباشر", + "description": "يوجّه الطلب دون تحويله. يتم تجاوز المحرك وإعادة توجيه الطلب دون أي تعديل." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "حدّد ملف تعريف الضغط OmniGlyph", "saved": "تم الحفظ.", "saveFailed": "تعذر الحفظ.", "enableAria": "تمكين محرك OmniGlyph", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "المتبقي", "kiloPassRenews": "يتجدد خلال {count} أيام", "kiloPassUsageLabel": "استخدام هذا الشهر", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "أرصدة الاستخدام الإضافية", + "kimiExtraUsage": "الاستخدام الإضافي", + "kimiExtraUsageEnabled": "مفعّل", + "kimiExtraUsageDisabled": "معطّل", + "kimiExtraUsageFrozen": "مجمّد", + "kimiExtraUsageUnavailable": "غير متاح", + "kimiMonthlyUsed": "المستخدم هذا الشهر", + "kimiMonthlyLimit": "الحد الشهري", + "kimiMonthlyLimitUnlimited": "غير محدود", + "kimiAdditionalCredits": "أرصدة إضافية", "loggerTab": "المسجل", "proxyTab": "بروكسي", "budgetManagement": "إدارة الميزانية", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "تتم مقارنة الاستجابات بالمعايير المتوقعة. راجع النجاح/الفشل لكل حالة باستخدام مقاييس زمن الاستجابة والتعليقات التفصيلية.", "evalsStrategyContainsLabel": "يحتوي على", "evalsStrategyExactLabel": "مطابقة تامة", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "تعبير نمطي", "evalsStrategyCustomLabel": "منطق مخصص", "evalsStrategyContainsDescription": "يتحقق مما إذا كان إخراج LLM يحتوي على السلسلة الفرعية المتوقعة.", "evalsStrategyExactDescription": "يتحقق من مطابقة إخراج LLM للقيمة المتوقعة تمامًا.", @@ -9575,7 +9582,7 @@ "suiteBuilderBuiltInBadge": "مدمج", "suiteBuilderCaseCardTitle": "حالة الاختبار", "suiteBuilderDuplicateCase": "مكررة", - "weeklyLimitPlaceholder": "e.g. 50.00", + "weeklyLimitPlaceholder": "مثال: 50.00", "suiteBuilderCaseTagsHint": "علامات مفصولة بفواصل لتنظيم حالات الاختبار.", "notifyEvalRunFailedWithReason": "فشل التقييم: {reason}", "weekly": "أسبوعيا", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "ربط IDE Cursor", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "تسجيل الدخول باستخدام Cursor", + "tabImport": "استيراد الرمز المميز", + "loginDescription": "يفتح صفحة تسجيل الدخول إلى Cursor في المتصفح. يعمل في Docker — وافق عبر متصفح جهازك المضيف، ثم عُد إلى هنا.", + "loginWithCursor": "تسجيل الدخول باستخدام Cursor", + "startingLogin": "جارٍ البدء…", + "waitingApproval": "في انتظار الموافقة على تسجيل الدخول إلى Cursor…", + "openUrlHint": "إذا لم يُفتح المتصفح:", + "openLoginLink": "فتح صفحة تسجيل الدخول", + "cancelLogin": "إلغاء تسجيل الدخول", "autoDetecting": "الكشف التلقائي عن الرموز...", "readingFromCursor": "القراءة من Cursor IDE أو وكيل Cursor", "tokensAutoDetected": "تم اكتشاف الرموز المميزة تلقائيًا من Cursor IDE!", "cursorNotDetected": "لم يتم الكشف عن IDE للمؤشر. يرجى لصق الرمز المميز الخاص بك يدويًا.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "هل تعمل في Docker؟ يُفضّل تسجيل الدخول باستخدام Cursor. عادةً لا يتوفر الاستيراد التلقائي من بيئة التطوير المتكاملة وcursor-agent داخل الحاوية. راجع docs/providers/CURSOR-DOCKER.md.", "accessToken": "رمز الوصول", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "رمز التحديث", + "refreshTokenPlaceholder": "اختياري — يتيح التحديث التلقائي للرمز", "required": "*", "accessTokenPlaceholder": "سيتم ملء رمز الوصول تلقائيًا...", "machineId": "معرف الآلة", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "فشل الكشف التلقائي عن الرموز المميزة", "errorEnterToken": "الرجاء إدخال رمز الوصول", "errorImportFailed": "فشل الاستيراد", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "فشل بدء تسجيل الدخول إلى Cursor", + "errorLoginPoll": "فشل تسجيل الدخول إلى Cursor", + "errorLoginTimeout": "انتهت مهلة تسجيل الدخول إلى Cursor — حاول مرة أخرى" }, "pricingModal": { "title": "تكوين التسعير", @@ -10912,7 +10919,7 @@ "assignmentsCount": "{count} المهام", "noData": "لا توجد بيانات", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} مللي ثانية", "testFailure": "✗ {error}", "repair": "إصلاح", "relayAuthMissing": "المصادقة مفقودة", @@ -10961,9 +10968,9 @@ "strategyLatency": "محسن لزمن الاستجابة", "poolMembersLabel": "أعضاء التجمع ({count})", "poolNoMembers": "لا توجد وكلاء في هذا التجمع بعد.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "تم استخدام {exits, plural, one {منفذ خروج واحد} other {# منافذ خروج}} بواسطة {connections, plural, one {اتصال واحد} other {# اتصالات}} · حتى {max} على منفذ خروج واحد · آخر {hours} ساعة", + "poolEgressObservationEmpty": "لم تُرصد أي حركة مرور خلال آخر {hours} ساعة", + "poolEgressObservationHint": "يُحتسب من سجل الوكيل خلال النافذة الزمنية: عناوين IP الصادرة المميزة التي رُصدت لأعضاء هذه المجموعة، واتصالات OmniRoute التي استخدمتها. تعني «على منفذ خروج واحد» خلال النافذة الزمنية، وليس في الوقت نفسه. يؤدي حظر 429 الخاص بكل عنوان IP إلى إيقاف اتصالات عائلة المزوّد نفسها مؤقتًا فقط.", "poolRemove": "إزالة", "poolRemoveFailed": "فشل إزالة الوكيل من التجمع", "poolAddLabel": "إضافة وكيل", @@ -11020,7 +11027,7 @@ "typeMessagePlaceholder": "اكتب رسالة... (Shift+Enter للسطر الجديد)", "tabChat": "الدردشة", "tabCompare": "المقارنة", - "tabApi": "API", + "tabApi": "واجهة برمجة التطبيقات", "tabBuild": "الإنشاء", "configPane": "التكوين", "systemPrompt": "موجه النظام", @@ -11237,7 +11244,7 @@ "searchResultFallback": "النتيجة {number}", "noKeysFound": "لم يتم العثور على مفاتيح API. أضف واحدًا في قسم المفاتيح.", "exampleLabel": "مثال", - "latency": "{ms}ms", + "latency": "{ms} مللي ثانية", "statsLine": "{ms}ms · {tokensIn} إدخال / {tokensOut} إخراج", "defaultKey": "(افتراضي)", "clear": "مسح", @@ -11310,7 +11317,7 @@ "tps": "TPS", "duration": "المدة", "time": "الوقت", - "conversation": "Conversation", + "conversation": "المحادثة", "ttft": "TTFT" }, "loadingLogs": "جارٍ تحميل السجلات...", @@ -11417,8 +11424,8 @@ "correlationId": "معرف الترابط", "correlationIdValue": "معرّف الارتباط: {id}", "detailedPayloadInfo": "قم بتمكين تسجيل الدخول التفصيلي أولاً إذا كنت ترغب في عرض الحمولة من أربعة مراحل للعميل/المزود للطلبات الجديدة.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "نسخ الكل", + "copiedAll": "تم نسخ الكل" } }, "proxyLogger": { @@ -11681,8 +11688,8 @@ "deleteGroupHasPools": "لا تزال هذه المجموعة تحتوي على مجمعات — أعد تعيينها أو احذفها أولاً.", "ungroupedTitle": "غير مجمع", "ungroupedHint": "هذه المجمعات غير مخصصة لمجموعة معروفة. قم بتحرير مجمع لنقله إلى مجموعة حقيقية.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "تعذّرت إزالة هذا المجمّع.", + "dismiss": "تجاهل" }, "plugins": { "title": "الإضافات", @@ -12179,7 +12186,7 @@ "acp": { "title": "وكلاء ACP", "phrase": "واجهات CLI التي يقوم OmniRoute بإنشائها كخلفية تنفيذ (تدفق عكسي)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "يمكن لمعظم المستخدمين تجاهل هذا — استخدمه فقط عندما يتطلبه أحد عمليات التكامل.", "flow": "العميل → OmniRoute → إنشاء CLI (stdio/ACP) → الاستجابة", "seeOther": "عرض →" } @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "خطافات الويب", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "سجّل نقاط نهاية webhook واعرضها واختبرها وأزلها. اضبط اشتراكات الأحداث (request.completed وrequest.failed وquota.exceeded، وغيرها) وأدِر محاولات إعادة التسليم." }, "omni-mcp": { "name": "خادم MCP", @@ -12575,7 +12582,7 @@ "colScore": "الدرجة", "colAvgScore": "متوسط الدرجة", "colModels": "النماذج", - "colType": "Type", + "colType": "النوع", "filterConfiguredOnly": "المهيأة فقط", "filterAvailableOnly": "المتاحة فقط", "filterAvailableOnlyHelp": "إخفاء موفري الخدمة الذين تم تقييد معدل جميع اتصالاتهم أو نفدت حصتهم.", @@ -12589,14 +12596,14 @@ "typeApikey": "مفتاح واجهة برمجة التطبيقات", "sortTypeFirst": "الأسهل أولاً", "sortTypeFirstHelp": "التجميع حسب سهولة البدء (من دون تسجيل ← تسجيل دخول OAuth ← مفتاح API)، مع الحفاظ على ترتيب الجودة داخل كل مجموعة", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "الأكثر موثوقية أولًا", + "sortByReliabilityHelp": "رتّب المزوّدين حسب نسبة الاستدعاءات الناجحة ضمن الفترة المحددة. يحتفظ المزوّدون الذين لديهم استدعاءات أقل من أن تكفي لتحديد معدل بترتيب درجاتهم، أسفل المزوّدين الذين تم قياسهم.", "typeLegend": "من دون تسجيل = لا إعداد مطلوب · تسجيل دخول OAuth = سجّل الدخول بحسابك · مفتاح API = استخدم مفتاحك أو الخطة المجانية للمزود", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "الموثوقية", + "colReliabilityHelp": "نسبة الاستدعاءات التي استجاب لها هذا المزوّد فعليًا خلال آخر 24 ساعة. تعني الشرطة أنه تعامل مع حركة مرور أقل من أن تكفي لتحديد معدل.", + "reliabilitySample": "نجح {successes} من أصل {requests} استدعاء خلال آخر {hours} ساعة", + "reliabilityTooFew": "فقط {requests} استدعاء خلال آخر {hours} ساعة — عدد أقل من أن يكفي لتحديد معدل", + "reliabilityNoTraffic": "لم تُسجّل أي استدعاءات خلال آخر 24 ساعة" }, "discovery": { "title": "اكتشاف موفري الخدمة", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "داعم Radar", + "description": "تم التحقق من موجز مباشر لداعمي OmniRoute Radar", + "criteria": "تحقّق من موجز مباشر وموقّع لداعمي Radar." }, "first-token": { "name": "الرمز الأول", @@ -12948,8 +12955,8 @@ "description": "السماح باتصالات متعددة لكل عقدة توافق." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "تعطيل عمليات التحقق من نافذة السياق", + "description": "تجاوز تحقق OmniRoute المحلي من نافذة السياق والحد الأقصى لرموز الإدخال للطلبات المباشرة ذات النموذج الواحد. يظل المزوّدون المنبعون يفرضون حدودهم الفعلية. ويظل ضغط المطالبات وحدود رموز الإخراج مفعّلين." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "إزالة عناصر مخرجات مرحلة التعليقات الداخلية من تدفقات التمرير الخاصة بـ Responses API قبل إعادة توجيهها إلى العملاء. عطل هذه العلامة لتلقي تعليقات المصدر الأولية." @@ -12985,7 +12992,7 @@ "description": "السماح لاسترداد التدفق بطلب الاستجابة مرة أخرى ودمجها بعد وصول البايتات بالفعل إلى العميل." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "اجعل متابعة منتصف التدفق آمنة لاستدعاءات الأدوات: لا تستأنف أبدًا تدفقًا منقطعًا بعد إرسال استدعاء أداة (سواء كان لا يزال قيد التنفيذ أو انتهى بالفعل)، وتوقف بعد متابعة فارغة واحدة بدلًا من استنفاد كامل ميزانية إعادة المحاولة." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "الانتقال مرة واحدة إلى اتصال شقيق عندما يُغلق التدفق قبل إرسال أي إطار مفيد وتُستنفد إعادة المحاولة المحدودة على الاتصال نفسه. إذا لم يتوفر اتصال شقيق صالح، يُعاد خطأ early-EOF الأصلي. عند التعطيل: يبقى early-EOF نهائيًا بعد إعادة المحاولة." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "تمكين الوصول إلى الشبكة في بيئة اختبار المهارات المعزولة." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "حلقة الأدوات المملوكة للخادم", + "description": "تابع استدعاءات الأدوات غير المتدفقة والمملوكة للخادم حتى يعيد النموذج استجابة قابلة للاستخدام من جانب العميل." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "مصدر Retry-After", + "description": "في استجابات عدم التوفر المجمّعة 429/503، احذف Retry-After عندما لا يكون هناك وقت مستقبلي محدد معروف لإعادة المحاولة بدلًا من إرسال قيمة اصطناعية قدرها 1s، وأضف error.retry_after_provenance، واقرأ تلميحات إعادة المحاولة النصية في مسارات تفريغ المجموعة." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "توقفات البنية التحتية ذات الأولوية المحمية كـ 502", + "description": "أعِد 502 بدلًا من 503 عندما يوقف هدف ذو أولوية واحتياطي مخصص للحصة فقط المجموعة لسبب يمكن إثبات أنه ليس متعلقًا بالحصة: قاطع دائرة مفتوح لمزود أو تخطٍ تنبؤي بسبب زمن الاستجابة." } } }, @@ -13171,7 +13182,7 @@ "segmentHint": "كل شريحة = مجمع مجاني واحد · مجمع مفرود من التكرار، عدّ صادق (بدون حدود قصوى مضخمة لمعدل الطلبات).", "boost": "افتح حوالي {tokens} إضافية/شهرياً بشحن رصيد OpenRouter لمرة واحدة بقيمة 10$ (50 ← 1000 طلب/يوم)", "uncapped": "مجاني بشكل دائم، بدون حد أقصى معلن (محدود بمعدل الطلبات) — وصول حقيقي، لا يُحتسب في العنوان الرئيسي:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "نحو {tokens}/شهر إضافية خلف فحص هوية إقليمي (مثل التحقق بالاسم الحقيقي في برّ الصين الرئيسي) — حصة فعلية غير محتسبة في الرقم الرئيسي:", "tosRestricted": "{count, plural, one {# نموذج تم وضع علامة عليه كمقيد بشروط الخدمة} other {# نماذج تم وضع علامة عليها كمقيدة بشروط الخدمة}} — القرار لك", "provider": "المزود", "model": "النموذج", @@ -13424,92 +13435,92 @@ "tierLive": "مباشر (في الوقت الحقيقي)", "tierCommunity": "مجتمع (تأخير 30 يومًا)", "activateTitle": "تفعيل الرادار", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "قارن بين وصول Community والوصول المباشر، وافهم ما تتبادله عملية التثبيت لديك، ثم اختر كيفية تفعيل Radar.", + "accessScaleTitle": "افهم وصول Radar قبل التفعيل", + "accessScaleIntro": "يظل Radar غير نشط شبكيًا حتى تختار الاشتراك. اختر وصول Community أو فعّل مفتاح داعم شخصيًا بعد مراجعة هذه القواعد.", + "accessCommunityRule": "Community — لا يلزم مفتاح: الكتالوج الكامل بتأخير قدره 30 يومًا.", + "accessSingleUseRule": "ضع نجمة + تابع — بعد أن يتحقق GitHub OAuth من كليهما، يتلقى حسابك على GitHub قراءة واحدة مباشرة للكتالوج؛ ثم يعود الوصول إلى Community. لا يمكن إعادة إصدار هذا الوصول لمرة واحدة لذلك الحساب.", + "accessContributorRule": "المساهمون — تحدد طلبات PR المدمجة والالتزامات والأسطر ترتيب التصنيف الأسبوعي فقط. يحصل أفضل 10 على 365 يومًا؛ وتحصل المراتب 11–100 على 90 يومًا؛ ولا يحصل المساهمون خارج أفضل 100 على أي منحة بغض النظر عن عدد طلبات PR. ولا تؤدي مغادرة التصنيف أبدًا إلى تقصير المدة الممنوحة بالفعل.", + "accessSupporterRule": "الداعمون — تمنح عمليات الشراء لمرة واحدة 6 أشهر أو سنة واحدة أو مدى الحياة دون تجديد تلقائي. تتراكم عمليات الشراء والتبرعات وفترات المساهمين والمنح اليدوية؛ ويسود الوصول مدى الحياة دائمًا.", + "accessUseTitle": "الاستخدام الشخصي والاسترداد والمراجعة", + "accessInstallationRule": "ترخيص شخصي — استخدم المفتاح على عملية تثبيت نشطة واحدة في كل مرة. لا يأخذ OmniRoute بصمة للأجهزة. يؤدي الاسترداد إلى إبطال المفتاح المفقود واستبداله دون إعادة ضبط تاريخ انتهاء صلاحيته.", + "accessAbuseRule": "مراجعة إساءة الاستخدام — يؤدي عنوان IP المميز الرابع خلال 24 ساعة إلى إنشاء علامة للمراجعة اليدوية فقط؛ ولا يحظر المفتاح أو يبطله تلقائيًا مطلقًا.", + "accessOffersRule": "تُنسّق العروض المباشرة يدويًا وقد تتغير أو تنتهي صلاحيتها.", + "privacyTitle": "ما يتبادله Radar", + "privacyDownloadsRule": "التنزيلات — تتلقى عملية التثبيت لديك بيانات وصفية للكتالوج والإحالات موقّعة تشفيريًا؛ كما يتيح مفتاح مباشر صالح العروض الموقّعة وIntel.", + "privacySendsRule": "الإرسال — ترسل المزامنة من جانب الخادم مفتاح الداعم بوصفه رمز Bearer، وتتلقى بنية HTTPS الأساسية عنوان IP للاتصال. لا تخزّن محاسبة طلبات الموجز أيًا من القيمتين بصورتها الخام؛ بل تحتفظ بتجزئات المفاتيح والاستخدام الإجمالي وHMAC مبتور لعنوان IP يتغير يوميًا لمراجعة إساءة الاستخدام.", + "privacyNeverRule": "لا تُجمع مطلقًا — لا تُرسل المطالبات أو الاستجابات أو المحادثات أو بيانات اعتماد المزوّدين أو حركة مرور النماذج أو مدة التشغيل أو زمن الاستجابة أو إعدادات المزوّد المحلي إلى Radar مطلقًا.", + "activateButton": "تفعيل Community", "activating": "جارٍ التفعيل...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "هل لديك مفتاح داعم بالفعل؟", + "keyInvalidFormatError": "تنسيق المفتاح غير صالح. يجب أن يبدأ بـ \"omr_\" متبوعًا بـ 40 محرفًا سداسيًا عشريًا.", + "activateWithKeyButton": "تفعيل الداعم", + "changeKeyButton": "تغيير المفتاح", + "claimSectionTitle": "ليس لديك مفتاح داعم بعد؟", + "contributorButton": "أنا مساهم", + "contributorHint": "يتحقق GitHub OAuth من التصنيف الأسبوعي الحالي: يحصل أصحاب المراكز العشرة الأولى على 365 يومًا، ويحصل أصحاب المراكز من 11 إلى 100 على 90 يومًا. لا يمنح عدد طلبات PR وحده إمكانية الوصول مطلقًا خارج أفضل 100.", + "supporterButton": "دعم المشروع", + "supporterHint": "لا تتضمن خيارات الستة أشهر والسنة الواحدة ومدى الحياة، التي تُدفع مرة واحدة، تجديدًا تلقائيًا؛ وتتراكم الفترات المؤهلة، فيما تكون الأولوية لخيار مدى الحياة.", "colProvider": "المزود", "colModel": "النموذج", "colQuota": "الحصة", + "colLimits": "حدود المعدل", + "trainsOnPrompts": "يدرّب على المطالبات", + "trainsOnPromptsHelp": "تنص شروط هذا المزوّد على أنه قد يدرّب على المطالبات التي ترسلها. أما النماذج التي لا تحمل هذه الشارة، فإما أنها تنص على أنها لا تفعل ذلك، أو لا توثّق هذا الأمر — وغياب التصريح ليس ضمانًا.", + "limitsUnknownHelp": "الحدود المُبلغ عنها من موجز Radar فقط؛ لا توجد حدود منشورة لهذا الإدخال", + "contextUnknownHelp": "نافذة السياق غير معروفة لهذا الإدخال", + "capabilityUnknownHelp": "الإمكانات غير مُبلغ عنها في الموجز", "colContext": "السياق", "colCapabilities": "القدرات", "colTos": "مخاطر شروط الخدمة", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "جديد", "setupGuide": "دليل الإعداد", "disabledByFeed": "معطل بواسطة تغذية الرادار", "capTools": "الأدوات", "capVision": "الرؤية", "capThinking": "التفكير", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "الكتالوج", + "freeCreditsTab": "أرصدة مجانية", + "freeCreditsSubtitle": "روابط إحالة من مزوّدين يتتبعهم Radar — استخدامها لا يكلّفك أي مبلغ إضافي ويساعد في دعم OmniRoute.", + "fixedLinksEmpty": "لا تتوفر روابط إحالة بعد. زامِن Radar للتحقق من وجود تحديثات.", + "requiredActionLabel": "ما يجب فعله:", + "claimButton": "المطالبة بالأرصدة", + "campaignsTitle": "حملات محدودة المدة", + "campaignsEmpty": "لا توجد حملات نشطة حاليًا — تحقّق مجددًا لاحقًا.", + "campaignsUpsellCommunity": "الحملات محدودة المدة ميزة إضافية للداعمين. تظل جميع الروابط الثابتة في هذه الصفحة مجانية للجميع.", + "campaignsValidUntil": "صالح حتى {date}", + "colActions": "الإجراءات", + "localBadge": "محلي", + "editModel": "تعديل", + "saveModel": "حفظ", + "cancelEdit": "إلغاء", + "resetModel": "إعادة تعيين التغييرات المحلية", + "hideModel": "إخفاء", + "restoreModel": "استعادة", + "hiddenModelsTitle": "النماذج المخفية", + "modelDisplayName": "اسم العرض المحلي", + "modelEnabled": "مُمكّن محليًا", + "localStateSaveFailed": "فشل حفظ إعدادات Radar المحلية", + "guidedCombos": "توليفات موجّهة", + "offers": "العروض", + "intel": "معلومات" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "توليفات Radar الموجّهة", + "subtitle": "أنشئ بدائل احتياطية حسب الأولوية من نماذج مجانية مكافئة منتقاة بواسطة Radar.", + "backToRadar": "العودة إلى Radar", + "loading": "جارٍ تحميل اقتراحات التركيبات...", + "familyLabel": "عائلة النماذج", + "modelsLabel": "ترتيب الأولوية", + "strategyReason": "تستخدم الأولوية أكبر ميزانية مجانية متكررة أولًا، ثم تنتقل إلى المزوّدين النشطين الآخرين عند الحاجة.", + "generateButton": "إنشاء تركيبة", + "generating": "جارٍ الإنشاء...", + "alreadyCreated": "تم إنشاؤها بالفعل", + "created": "تم إنشاء التركيبة", + "noSuggestions": "لا توجد حاليًا عائلة نماذج مؤهلة لديها اتصالات نشطة بمزوّدين اثنين على الأقل.", + "catalogRequired": "زامن كتالوج Radar أولًا لتحميل عائلات النماذج المنسّقة.", + "loadFailed": "فشل تحميل اقتراحات تركيبات Radar.", + "createFailed": "فشل إنشاء التركيبة. راجع اتصالات المزوّدين لديك وحاول مرة أخرى." }, "radarSetupPage": { "title": "إعداد المزود", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "مرونة الاتصال", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "تتعافى اتصالاتك تلقائيًا", + "reassuranceDetail": "لا يلزم اتخاذ أي إجراء عادةً. يوقف OmniRoute الاتصال مؤقتًا بعد حالات الفشل، ثم يعيد تجربته بأمان.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "يمكن إرسال الطلبات", + "coolingDown": "ستتم المحاولة مجددًا قريبًا", + "lockedOut": "يتطلب انتباهك" }, "table": { "status": "الحالة", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "رفض الطلبات قبل الإرسال عندما يفتقر النموذج المستهدف إلى القدرات المطلوبة (الرؤية، الأدوات، المخرجات المنظمة، نافذة السياق). يحمي الطلبات المباشرة من مزود واحد التي تتجاوز فلتر توافق الطبقة المجمعة.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "تخطي فحص OmniRoute المحلي لنافذة السياق والحد الأقصى لرموز الإدخال للطلبات المباشرة ذات النموذج الواحد. لا يزال المزوّدون الخارجيون يفرضون حدودهم الفعلية. يظل ضغط المطالبات والحد الأقصى لرموز الإخراج مفعّلين.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "لا تشمل إحصاءات البحث وعمليات البحث الأخيرة إلا المزوّدين الذين لا يزال لديهم اتصال نشط (أما المزوّدون الذين لا يحتاجون إلى مفتاح، مثل duckduckgo-free، فيتم احتسابهم دائمًا). يؤدي إيقاف هذا الخيار إلى الاحتفاظ بكل صف بحث محفوظ يتضمن معرّف مزوّد.", "publicSystem": { "notFound": { "title": "الصفحة غير موجودة", @@ -13853,7 +13864,7 @@ "authorizeImportant": "مهم: يجب أن تكون مسجلاً الدخول إلى trae.ai في هذا المتصفح أولاً. صفحة التفويض تؤكد فقط وجود جلسة حالية - لا يمكنها تسجيل دخولك. إذا رأيت \"فشل تسجيل الدخول\"، انقر على \"فتح solo.trae.ai\"، سجل الدخول، ثم عد إلى هنا.", "waitingForAuthorization": "انتظار trae.ai…", "authorizeWithBrowser": "تفويض باستخدام المتصفح", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "فتح solo.trae.ai", "orPasteManually": "أو لصق رمز يدويًا", "manualInstructions": "قم بتسجيل الدخول إلى solo.trae.ai، افتح أدوات المطور → الشبكة، أرسل أي رسالة دردشة، وانسخ JWT من Authorization: Cloud-IDE-JWT {tokenPlaceholder} رأس الطلب. مدة صلاحية JWT حوالي 14 يومًا. تأتي حقول الهوية الاختيارية من common_params في نفس جسم الطلب.", "accessTokenLabel": "رمز الوصول (Cloud-IDE-JWT)", @@ -14070,11 +14081,11 @@ "actionApprove": "الموافقة على الخطة", "actionCancel": "إلغاء", "actionSeeInGraph": "عرض في الرسم البياني", + "actionRepeat": "تكرار", "actionDone": "تم تطبيق الإجراء", "actionFailed": "فشل الإجراء: {error}", "detailFailed": "فشل تحميل التفاصيل: {error}", "mirroredInA2A": "معكوس في A2A", - "actionRepeat": "تكرار", "repeatConfirm": "انقر مرة أخرى للتأكيد", "repeatDone": "تم إنشاء تشغيل جديد", "repeatUnavailable": "المُدخل الأصلي غير متاح" @@ -14082,63 +14093,63 @@ "cliproxyProviderExposure": { "title": "تعرض المزود", "description": "تعريض نماذج CLIProxyAPI كهدف توجيه تحت بادئة cliproxyapi/.", - "label": "Expose as cliproxyapi/...", + "label": "عرضه باسم cliproxyapi/...", "hint": "عند التمكين، تظهر النماذج المكتشفة في اختيارات المزود عبر OmniRoute.", "updateFailed": "فشل في التحديث (HTTP {status})", "networkError": "خطأ في الشبكة - لم يتمكن من تحديث إعدادات تعرض المزود" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "عروض الداعمين", + "subtitle": "خصومات وأرصدة وفترات تجريبية رسمية ومزايا شركاء خضعت للمراجعة من Radar.", + "backToRadar": "العودة إلى Radar", + "loading": "جارٍ تحميل العروض...", + "refresh": "تحديث العروض", + "refreshing": "جارٍ التحديث...", + "loadFailed": "تعذر تحديث العروض. تم الاحتفاظ بآخر ذاكرة تخزين مؤقت محلية تم التحقق منها.", + "empty": "لا تتوفر عروض نشطة حاليًا.", + "keyRequiredTitle": "مفتاح داعم مطلوب", + "keyRequiredDescription": "العروض ميزة مباشرة من Radar. أضف مفتاح داعم موجودًا على شاشة Radar، أو تحقق من حالة مساهمتك، أو ادعم المشروع للحصول على مفتاح.", + "contributorButton": "أنا مساهم", + "supporterButton": "دعم المشروع", + "partnerBadge": "شريك", + "officialBadge": "رسمي", + "conditionsLabel": "الشروط:", + "validUntil": "صالح حتى {date}", + "noExpiry": "لم يُعلن عن تاريخ انتهاء", + "openOffer": "عرض العرض", + "trialDays": "{days, plural, one {يوم واحد} other {# أيام}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "معلومات Radar", + "subtitle": "تصنيفات ELO المملوكة لـ Radar والحركة الفعلية للكتالوج.", + "backToRadar": "العودة إلى Radar", + "loading": "جارٍ تحميل المعلومات...", + "refresh": "تحديث المعلومات", + "syncing": "جارٍ التحديث...", + "loadFailed": "تعذر علينا تحديث المعلومات. تم الاحتفاظ بآخر نسخة محلية مخزنة ومُتحقق منها.", + "empty": "لا تتوفر بعد لقطة معلومات مُتحقق منها.", + "supporterBadge": "داعم Radar", + "methodology": "المنهجية", + "eloMethod": "ELO، القيمة الأولية {initial}، K={factor}", + "freshness": "حداثة الكتالوج", + "ageDays": "{days, plural, one {بعمر يوم واحد} other {بعمر # أيام}}", + "trend": "اتجاه الكتالوج", + "modelDelta": "{current} نموذجًا، +{added} / -{removed}", + "ranking": "ترتيب النماذج", + "noRankings": "لا تتوفر بعد أي مقارنات مؤكدة.", + "model": "النموذج", + "category": "الفئة", + "rating": "التقييم", + "matches": "المطابقات", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "حديث", + "aging": "متقادم", + "stale": "قديم" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "متنامٍ", + "stable": "مستقر", + "shrinking": "متقلص" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "تجاوز الطلب نافذة سياق المزود" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference صديق مفتوح المصدر لـ OmniRoute", + "description": "بوابة مرتبة حسب التكلفة تعيد بيع عشرات النماذج الرائدة من خلال نقطة نهاية واحدة متوافقة مع OpenAI — وتوجّه كل طلب إلى أرخص مزود مؤهل، من دون تجاوز السعر المُعلن مطلقًا.", + "cta": "الحصول على مفتاح API", + "partnerLinkNote": "رابط الشريك", + "dismissAriaLabel": "تجاهل" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "تعطيل إنشاء متغيرات مستوى التفكير (مثل -low و-medium- و-high-) في كتالوج /v1/models." } diff --git a/src/i18n/messages/az.json b/src/i18n/messages/az.json index 81972d8d4d..f6ca25914a 100644 --- a/src/i18n/messages/az.json +++ b/src/i18n/messages/az.json @@ -1,15 +1,15 @@ { "common": { - "save": "Save", - "cancel": "Cancel", - "delete": "Delete", - "loading": "Loading...", + "save": "Yadda saxla", + "cancel": "Ləğv et", + "delete": "Sil", + "loading": "Yüklənir...", "selectOption": "Bir seçim edin", - "error": "An error occurred", - "success": "Success", - "confirm": "Are you sure?", - "refresh": "Refresh", - "close": "Close", + "error": "Xəta baş verdi", + "success": "Uğurlu", + "confirm": "Əminsiniz?", + "refresh": "Yenilə", + "close": "Bağla", "previousPage": "Əvvəlki səhifə", "nextPage": "Növbəti səhifə", "capsLockOn": "Caps Lock aktivdir", @@ -17,142 +17,142 @@ "toggleColumns": "Sütunları dəyişdir", "confirmTitle": "Təsdiq et", "confirmAction": "Təsdiq et", - "add": "Add", - "edit": "Edit", - "search": "Search", - "back": "Back", - "next": "Next", - "submit": "Submit", - "reset": "Reset", - "copy": "Copy", - "copied": "Copied!", - "enabled": "Enabled", - "disabled": "Disabled", - "active": "Active", - "inactive": "Inactive", - "noData": "No data available", - "nothingHere": "Nothing here yet", - "configure": "Configure", + "add": "Əlavə et", + "edit": "Redaktə et", + "search": "Axtar", + "back": "Geri", + "next": "Növbəti", + "submit": "Göndər", + "reset": "Sıfırla", + "copy": "Kopyala", + "copied": "Kopyalandı!", + "enabled": "Aktiv edilib", + "disabled": "Deaktiv edilib", + "active": "Aktiv", + "inactive": "Qeyri-aktiv", + "noData": "Məlumat mövcud deyil", + "nothingHere": "Hələlik burada heç nə yoxdur", + "configure": "Konfiqurasiya et", "manualConfig": "Əl ilə konfiqurasiya", - "manage": "Manage", - "name": "Name", - "actions": "Actions", - "status": "Status", - "type": "Type", + "manage": "İdarə et", + "name": "Ad", + "actions": "Əməliyyatlar", + "status": "Vəziyyət", + "type": "Növ", "model": "Model", - "models": "models", - "provider": "Provider", + "models": "modellər", + "provider": "Provayder", "unknownProvider": "Naməlum provayder", - "account": "Account", - "time": "Time", - "details": "Details", - "created": "Created", - "lastUsed": "Last Refreshed", - "loadMore": "Load More", - "noResults": "No results found", - "reloadPage": "Reload Page", - "connected": "Connected", - "disconnected": "Disconnected", - "notConfigured": "Not configured", - "testConnection": "Test Connection", - "enable": "Enable", - "disable": "Disable", - "columns": "Columns", - "newest": "Newest", - "oldest": "Oldest", - "all": "All", - "none": "None", - "yes": "Yes", - "no": "No", + "account": "Hesab", + "time": "Vaxt", + "details": "Təfərrüatlar", + "created": "Yaradılıb", + "lastUsed": "Son yenilənmə", + "loadMore": "Daha çox yüklə", + "noResults": "Nəticə tapılmadı", + "reloadPage": "Səhifəni yenidən yüklə", + "connected": "Qoşulub", + "disconnected": "Bağlantı kəsilib", + "notConfigured": "Konfiqurasiya edilməyib", + "testConnection": "Bağlantını yoxla", + "enable": "Aktivləşdir", + "disable": "Deaktivləşdir", + "columns": "Sütunlar", + "newest": "Ən yeni", + "oldest": "Ən köhnə", + "all": "Hamısı", + "none": "Heç biri", + "yes": "Bəli", + "no": "Xeyr", "on": "AÇIQ", "off": "QAPALI", - "warning": "Warning", - "note": "Note", - "free": "Free", - "skipToContent": "Skip to content", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", - "accept": "Accept", - "accountId": "Account ID", + "warning": "Xəbərdarlıq", + "note": "Qeyd", + "free": "Pulsuz", + "skipToContent": "Məzmuna keç", + "maintenanceServerIssues": "Serverdə problemlər var. Bəzi funksiyalar əlçatan olmaya bilər.", + "maintenanceServerUnreachable": "Serverə qoşulmaq mümkün deyil. Yenidən qoşulur...", + "accept": "Qəbul et", + "accountId": "Hesab ID-si", "alias": "Alias", - "apiKeyId": "API Key ID", - "apiKeyName": "API Key Name", - "apiKeySecret": "API Key Secret", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "apiKeyId": "API açarının ID-si", + "apiKeyName": "API açarının adı", + "apiKeySecret": "API açarının məxfi dəyəri", + "authorization": "Avtorizasiya", + "content-type": "Məzmun növü", + "content-length": "Məzmun uzunluğu", "cookie": "Cookie", - "file": "File", + "file": "Fayl", "host": "Host", "id": "ID", - "import": "Import", + "import": "İdxal et", "limit": "Limit", "offset": "Offset", - "open": "Open", - "origin": "Origin", - "promptTokens": "Prompt Tokens", - "completionTokens": "Completion Tokens", - "totalTokens": "Total Tokens", - "rawModel": "Raw Model", - "scope": "Scope", - "skill": "Skill", - "sortBy": "Sort By", - "sortOrder": "Sort Order", - "tab": "Tab", + "open": "Aç", + "origin": "Mənşə", + "promptTokens": "Sorğu tokenləri", + "completionTokens": "Tamamlama tokenləri", + "totalTokens": "Ümumi tokenlər", + "rawModel": "Xam model", + "scope": "Əhatə dairəsi", + "skill": "Bacarıq", + "sortBy": "Sıralama meyarı", + "sortOrder": "Sıralama qaydası", + "tab": "Vərəq", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "Mətn sahəsi", + "tool": "Alət", + "toolId": "Alət ID-si", "web": "Web", - "whereUsed": "Where Used", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "resolve": "Resolve", - "force": "Force", + "whereUsed": "İstifadə olunduğu yerlər", + "whitelist": "İcazə siyahısı", + "blacklist": "Qadağa siyahısı", + "resolve": "Həll et", + "force": "Məcburi", "base64url": "Base64 URL", "hex": "Hex", - "range": "Range", - "component": "Component", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", - "code": "Code", - "compatible": "Compatible", - "chat-completions": "Chat Completions", + "range": "Aralıq", + "component": "Komponent", + "redirect_uri": "Yönləndirmə URI-si", + "idempotency-key": "İdempotentlik açarı", + "error_description": "Xətanın təsviri", + "code": "Kod", + "compatible": "Uyğun", + "chat-completions": "Çat tamamlamaları", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", - "hours": "Hours", + "auth_token": "Autentifikasiya tokeni", + "crypto": "Kripto", + "hours": "Saat", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", - "resolveConnectionId": "Resolve Connection ID", - "resolve_connection_id": "Resolve Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "proxy_id": "Proksi ID-si", + "proxyId": "Proksi ID-si", + "connectionId": "Bağlantı ID-si", + "resolveConnectionId": "Bağlantı ID-sini həll et", + "resolve_connection_id": "Bağlantı ID-sini həll et", + "scope_id": "Əhatə dairəsi ID-si", + "scopeId": "Əhatə dairəsi ID-si", + "jwtSecret": "JWT sirri", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", "builder-id": "Builder ID", - "musicDesc": "Music Description", - "musicGeneration": "Music Generation", + "musicDesc": "Musiqinin təsviri", + "musicGeneration": "Musiqi generasiyası", "idc": "IDC", - "cloud-status-changed": "Cloud status changed", - "where_used": "Where Used", - "windowMs": "Window (ms)", + "cloud-status-changed": "Bulud statusu dəyişdi", + "where_used": "İstifadə olunduğu yerlər", + "windowMs": "Pəncərə (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", - "Failed to save pricing": "Failed to save pricing", - "Failed to reset pricing": "Failed to reset pricing", - "apikey": "API Key", + "TOOL_ALLOWLIST": "Alətlər üçün icazə siyahısı", + "TOOL_DENYLIST": "Alətlər üçün qadağa siyahısı", + "Failed to save pricing": "Qiymətləri yadda saxlamaq alınmadı", + "Failed to reset pricing": "Qiymətləri sıfırlamaq alınmadı", + "apikey": "API açarı", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "İdarəetmə panelinə keç", + "checkSystemStatus": "Sistem statusunu yoxla", + "selectModel": "Model seçin", "addModel": "Model əlavə et", "effortNone": "Heç biri", "effortLow": "Aşağı", @@ -164,10 +164,10 @@ "reasoningEffort": "Mühakimə səyi", "wireApi": "Wire API", "modelAliases": "Model təxəllüsləri", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Kombinasiyalar", + "noModelsFound": "Heç bir model tapılmadı", + "clear": "Təmizlə", + "done": "Hazırdır", "selectAll": "Hamısını seç", "unselectAll": "Seçimi ləğv et", "visibleModels": "görünən", @@ -184,519 +184,519 @@ "selectAllProviders": "Bütün təminatçıları yoxlayın", "clearProviderSelection": "Təchizatçıları seçimi ləğv et", "providersSelectedCount": "{count} təminatçı yoxlanıldı", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", - "cloudAgentProviders": "Cloud Agent Providers", - "minutesAgo": "Minutes Ago", + "errorOccurred": "Xəta baş verdi", + "comboDeleted": "Kombinasiya silindi", + "hide": "Gizlət", + "creating": "Yaradılır", + "comboCreated": "Kombinasiya yaradıldı", + "swapFormats": "Formatların yerini dəyiş", + "daysAgo": "Gün əvvəl", + "retries": "Təkrar cəhdlər", + "errorDuringRestore": "Bərpa zamanı xəta", + "eventsAppearHint": "Hadisələrin görünməsi haqqında ipucu", + "noLockouts": "Bloklanma yoxdur", + "webSearchDesc": "Veb axtarışının təsviri", + "audioProvidersHeading": "Audio provayderləri", + "cloudAgentProviders": "Bulud agenti provayderləri", + "minutesAgo": "Dəqiqə əvvəl", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", + "liveAutoRefreshing": "Canlı avtomatik yenilənmə", + "webSearch": "Veb axtarışı", + "anthropicPrefixPlaceholder": "Anthropic prefiksi üçün yer tutucu", + "addModelToCombo": "Kombinasiyaya model əlavə et", + "failedToLoad": "Yükləmək mümkün olmadı", + "categoryMedia": "Media kateqoriyası", + "enableCloud": "Buludu aktivləşdir", + "expirationBannerExpiringSoon": "Müddətin tezliklə bitməsi banneri", + "retry": "Yenidən cəhd et", + "embeddings": "Vektor təsvirləri", + "errorCount": "Xətaların sayı", + "backupReasonManual": "Yedəkləmə səbəbi: əl ilə", + "safeSearchModerate": "Orta səviyyəli təhlükəsiz axtarış", + "activeLimiters": "Aktiv məhdudlaşdırıcılar", + "a2aCardTitle": "A2A kartının başlığı", + "cloudWorkerUnreachable": "Bulud işçisi əlçatan deyil", + "testFailed": "Test uğursuz oldu", + "compatibleBaseUrlHint": "Uyğun baza URL-i üçün ipucu", + "usageTracking": "İstifadənin izlənməsi", + "disableCloudTitle": "Buludu deaktiv etmə başlığı", + "noConnections": "Bağlantı yoxdur", + "providerHealth": "Provayderin vəziyyəti", + "confirmDbImport": "DB idxalını təsdiqlə", + "notAvailableSymbol": "Əlçatan deyil simvolu", + "backupsAvailable": "Mövcud ehtiyat nüsxələr", + "providerAuto": "Avtomatik provayder", + "newProviderNamePlaceholder": "Yeni provayder adı üçün yer tutucu", + "a2aQuickStartStep2": "A2A sürətli başlanğıcının 2-ci addımı", + "ok": "Oldu", + "available": "Əlçatandır", + "noBackupYet": "Hələ ehtiyat nüsxə yoxdur", + "more": "Daha çox", + "noCompatibleYet": "Hələ uyğun olan yoxdur", + "multiProvider": "Çoxsaylı provayder", + "repairEnvHint": "Mühiti bərpa etmək üçün ipucu", + "disablingCloud": "Bulud deaktiv edilir", + "testBench": "Sınaq stendi", + "valid": "Etibarlıdır", + "cloudBenefitShare": "Bulud üstünlüklərinin paylaşılması", + "mcpCardTitle": "MCP kartının başlığı", + "disableConfirm": "Deaktiv etməni təsdiqlə", + "filters": "Filtrlər", + "expirationBannerExpiredDesc": "Müddəti bitmiş bannerin təsviri", + "saveComboDefaults": "Kombinasiyanın standartlarını yadda saxla", + "cloudConnectedVerified": "Bulud bağlantısı təsdiqlənib", + "uptime": "Fasiləsiz işləmə müddəti", + "compatibleProdPlaceholder": "Uyğun istehsal mühiti üçün yer tutucu", + "fallbackChainsTitle": "Ehtiyat keçid zəncirlərinin başlığı", + "oauthLabel": "OAuth etiketi", + "a2aCardDescription": "A2A kartının təsviri", + "okShort": "OK", + "maintenance": "Texniki xidmət", + "formatConverter": "Format çeviricisi", + "zedImportNetworkError": "Zed idxalı zamanı şəbəkə xətası", + "apiKeyLabel": "API açarı etiketi", + "noModelsForProvider": "Provayder üçün model yoxdur", + "mcpCardDescription": "MCP kartının təsviri", + "apiTypeLabel": "API növü etiketi", + "configuredProvidersLabel": "Konfiqurasiya edilmiş provayderlər etiketi", + "maxRetriesLabel": "Maksimum təkrar cəhd sayı etiketi", + "title": "Başlıq", + "output": "Çıxış", + "prefixHint": "Prefiks üçün ipucu", + "skipWizard": "Quraşdırma sehrbazını keç", + "failedCount": "Uğursuz əməliyyatların sayı", + "confirmDbImportDesc": "Verilənlər bazasının idxalını təsdiqləmə təsviri", + "entries": "Qeydlər", + "until": "Qədər", + "disableCombo": "Kombinasiyanı deaktiv et", + "liveMonitorDescriptionPrefix": "Canlı monitorinq təsvirinin prefiksi", + "runningCount": "İşləyənlərin sayı", + "noActiveConnectionsInGroup": "Qrupda aktiv bağlantı yoxdur", + "savedSuccessfully": "Uğurla yadda saxlanıldı", + "systemStorage": "Sistem yaddaşı", + "videoDesc": "Video təsviri", + "maxResults": "Maksimum nəticə sayı", + "timeRangeMonth": "Vaxt aralığı: ay", + "testSummary": "Test xülasəsi", + "failedSetPassword": "Parol təyin edilə bilmədi", "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", - "addCcCompatible": "Add CC Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "restore": "Bərpa et", + "disableWarning": "Xəbərdarlığı deaktiv et", + "moderationsDesc": "Moderasiya təsviri", + "providerHealthStatusAria": "Provayderin sağlamlıq vəziyyəti üçün ARIA etiketi", + "modelNamePlaceholder": "Model adı üçün yer tutucu", + "mcpQuickStartStep2": "MCP sürətli başlanğıcının 2-ci addımı", + "quickStart": "Sürətli başlanğıc", + "fullExportFailedWithError": "Tam ixrac xəta ilə uğursuz oldu", + "loadingBackups": "Ehtiyat nüsxələri yüklənir", + "anthropicBaseUrlPlaceholder": "Anthropic əsas URL-i üçün yer tutucu", + "description": "Təsvir", + "noProviderFound": "Provayder tapılmadı", + "auto": "Avtomatik", + "protocolsDescription": "Protokolların təsviri", + "cloudSessionNote": "Bulud sessiyası qeydi", + "advancedSettings": "Qabaqcıl parametrlər", + "defaultStrategy": "Standart strategiya", + "purgeExpiredLogs": "Müddəti bitmiş jurnalları təmizlə", + "justNow": "İndicə", + "providerTestFailed": "Provayder testi uğursuz oldu", + "openaiBaseUrlPlaceholder": "OpenAI əsas URL yer tutucusu", + "image": "Şəkil", + "failedCreateChain": "Zəncir yaratmaq alınmadı", + "importDatabase": "Verilənlər bazasını idxal et", + "allDataLocal": "Bütün məlumatlar lokaldır", + "sectionTitle": "Bölmə başlığı", + "failedToggle": "Dəyişdirmək alınmadı", + "editCombo": "Kombinasiyanı redaktə et", + "testResults": "Test nəticələri", + "searchQuery": "Axtarış sorğusu", + "addCcCompatible": "CC ilə uyğun olanı əlavə et", + "duplicate": "Dublikat yarat", + "createCombo": "Kombinasiya yarat", + "searchTypeWeb": "Axtarış növü: Veb", + "addChain": "Zəncir əlavə et", + "prefixLabel": "Prefiks etiketi", + "listModelsDesc": "Modellərin siyahısının təsviri", + "databaseSize": "Verilənlər bazasının ölçüsü", + "chainCreated": "Zəncir yaradıldı", + "providerTestTimeout": "Provayder testinin vaxtı bitdi", + "routingStrategy": "Marşrutlaşdırma strategiyası", + "translateAction": "Tərcümə et", + "exportFailed": "İxrac uğursuz oldu", + "connectedVerificationPending": "Qoşulub, doğrulama gözlənilir", + "a2aQuickStartTitle": "A2A sürətli başlanğıc başlığı", + "couldNotTest": "Test etmək mümkün olmadı", + "testAllCompatible": "Bütün uyğun olanları test et", + "anthropicCompatibleName": "Anthropic ilə uyğun ad", + "disabling": "Deaktiv edilir", + "failedEnable": "Aktivləşdirmək alınmadı", + "categoryUtility": "Kateqoriya: Utilitlər", + "customUrlOptional": "Fərdi URL (istəyə bağlı)", + "localProviders": "Lokal provayderlər", + "comboNamePlaceholder": "Kombinasiya adı yer tutucusu", + "memoryRss": "RSS yaddaşı", + "disableProvider": "Provayderi deaktiv et", + "welcomeDesc": "Qarşılama təsviri", + "nameLabel": "Ad etiketi", + "allOperational": "Bütün sistemlər işləkdir", + "backupNow": "İndi ehtiyat nüsxə yaradın", + "providerMaxRetriesAria": "Provayderin maksimum təkrar cəhdləri üçün ARIA", + "textToSpeechDesc": "Mətndən nitqə çevirmənin təsviri", + "machineId": "Maşın ID-si", + "globalProxy": "Qlobal proksi", + "hitsMisses": "Uğurlu və uğursuz sorğular", + "testDesc": "Test təsviri", + "chatDesc": "Çat təsviri", + "importSuccess": "İdxal uğurla tamamlandı", + "chat": "Çat", + "a2aQuickStartStep1": "A2A sürətli başlanğıc addımı 1", + "importFailed": "İdxal uğursuz oldu", + "inputPlaceholder": "Daxiletmə üçün yer tutucu", + "providerModelsTitle": "Provayder modelləri", + "lastBackup": "Son ehtiyat nüsxə", + "yourEndpoint": "Sizin son nöqtəniz", + "autoDisableThresholdDesc": "Avtomatik deaktivasiya həddinin təsviri", + "rerankDesc": "Yenidən sıralama təsviri", + "modelsPathPlaceholder": "Model yolu üçün yer tutucu", + "noCombosYet": "Hələ heç bir kombinasiya yoxdur", + "connectedVerificationPendingWithError": "Qoşulub, xəta səbəbindən doğrulama gözlənilir", + "comboDefaultsGuideHint1": "Kombinasiya standartları üzrə təlimat ipucu 1", + "enableCloudTitle": "Buludu aktivləşdirin", + "configuredProvidersHint": "Konfiqurasiya edilmiş provayderlər üçün ipucu", + "paused": "Dayandırılıb", + "llmProviders": "LLM provayderləri", + "enableCombo": "Kombinasiyanı aktivləşdirin", + "removeProviderOverrideAria": "Provayder əvəzləməsini silmək üçün ARIA", + "nodeVersion": "Node versiyası", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", - "compatibleLabel": "Compatible", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", - "testBenchTab": "Test Bench", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "exportFailedWithError": "İxrac xəta ilə uğursuz oldu", + "proxyConfigured": "Proksi konfiqurasiya edilib", + "concurrencyPerModel": "Hər model üzrə paralel sorğu sayı", + "protocolTasksLabel": "Protokol tapşırıqları etiketi", + "oauthProviders": "OAuth provayderləri", + "lockedCount": "Kilidlənmişlərin sayı", + "deleteChainConfirm": "Zəncirin silinməsini təsdiqləyin", + "recentTranslations": "Son tərcümələr", + "zedImportButton": "Zed İdxal Düyməsi", + "responsesDesc": "Cavabların Təsviri", + "testedCount": "Sınaqdan Keçirilənlərin Sayı", + "providersCommaSeparatedPlaceholder": "Provayderlər üçün Vergüllə Ayrılmış Dəyərlər", + "signatureDefaults": "Defolt İmza Parametrləri", + "errorCreating": "Yaradılma Xətası", + "timeRangeYear": "Vaxt Aralığı: İl", + "compatibleLabel": "Uyğundur", + "cloudDisabledSuccess": "Bulud Uğurla Deaktiv Edildi", + "deleteConfirm": "Silməni Təsdiqləyin", + "check": "Yoxla", + "safeSearch": "Təhlükəsiz Axtarış", + "protocolLastActivity": "Protokolun Son Aktivliyi", + "openMcpDashboard": "Mcp İdarəetmə Panelini Aç", + "testBenchTab": "Sınaq Stendi", + "chatPathLabel": "Söhbət Yolu Etiketi", + "retryDelay": "Yenidən Cəhd Gecikməsi", + "errorUpdating": "Yenilənmə Xətası", + "ideCliIntegrations": "IDE və CLI İnteqrasiyaları", + "imageGeneration": "Şəkil Yaratma", + "apiKeyRequired": "API Açarı Tələb Olunur", + "resetAllTitle": "Hamısını Sıfırlayın", + "connectionError": "Bağlantı Xətası", + "modelName": "Modelin Adı", + "apiKeyForCheck": "Yoxlama üçün API Açarı", + "cloudRequestTimeout": "Bulud Sorğusunun Vaxtı Bitdi", + "showConfiguredOnly": "Yalnız Konfiqurasiya Edilənləri Göstər", "showFreeOnly": "Yalnız pulsuz", "addFirstProvider": "İlk provayderinizi əlavə edin", "addFirstProviderDesc": "OmniRoute vasitəsilə sorğuların yönləndirilməsinə başlamaq üçün AI provayderini birləşdirin. Siz pulsuz provayderlərdən, API açarlarından və ya OAuth hesablarından istifadə edə bilərsiniz.", "learnMore": "Ətraflı məlumat əldə edin", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Domenləri Daxil Et", + "promptCache": "Sorğu Keşi", + "cloudConnected": "Buluda Qoşulub", + "deleteChain": "Zənciri Sil", + "chatPathPlaceholder": "Söhbət Yolu üçün Dəyər", + "databasePath": "Verilənlər Bazası Yolu", + "usingLocalServer": "Lokal Serverdən İstifadə Edilir", + "globalComboConfig": "Qlobal Kombinasiya Konfiqurasiyası", + "backupFailed": "Ehtiyat Nüsxələmə Uğursuz Oldu", + "tabProtocols": "Protokollar Tabı", + "continue": "Davam Et", + "categorySearch": "Kateqoriya Axtarışı", + "rateLimitStatus": "Sorğu Tezliyi Limitinin Statusu", + "repairEnvSuccess": "Mühitin bərpası uğurla tamamlandı", + "nameRequired": "Ad tələb olunur", + "country": "Ölkə", + "trackMetricsDesc": "Metriklərin izlənməsinin təsviri", + "durationSecondsShort": "Müddət (san.)", + "formatConverterDescription": "Format çeviricisinin təsviri", + "cloudBenefitAccess": "Bulud üstünlüklərinə giriş", + "maxRetries": "Maksimum təkrar cəhd sayı", + "queueTimeout": "Növbənin vaxt limiti", "queueDepth": "Növbə dərinliyi", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Provayder əlavə edin", + "realtime": "Real vaxt rejimi", + "totalTranslations": "Ümumi tərcümə sayı", + "protocolActiveStreamsLabel": "Protokolun aktiv axınları", + "repairEnv": "Mühiti bərpa edin", + "modelsCount": "Model sayı", + "viewBackups": "Ehtiyat nüsxələrə baxın", + "responsesApi": "Responses API-si", + "copyComboName": "Kombinasiya adını kopyalayın", + "failures": "Xətalar", + "failedUpdate": "Yeniləmə uğursuz oldu", + "imageDesc": "Şəklin təsviri", + "failedCreate": "Yaratma uğursuz oldu", + "remainingOfLimit": "Limitdən qalan", + "protocolsTitle": "Protokollar", + "expirationBannerExpiringSoonDesc": "Müddətin tezliklə bitməsi barədə bannerin təsviri", + "source": "Mənbə", + "failed": "Uğursuz oldu", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", - "ccCompatibleLabel": "CC Compatible", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", - "chatTesterTab": "Chat Tester", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "mcpQuickStartStep1": "MCP sürətli başlanğıc — 1-ci addım", + "runTest": "Testi başladın", + "loadingFallbackChains": "Ehtiyat keçid zəncirləri yüklənir", + "healthy": "Sağlam", + "version": "Versiya", + "saveBlockWeighted": "Çəkili bloku yadda saxlayın", + "zedImportNone": "Zed idxalı yoxdur", + "noBackupsYet": "Hələ ehtiyat nüsxə yoxdur", + "noGlobalProxy": "Qlobal proksi yoxdur", + "noModels": "Model yoxdur", + "stickyLimit": "Sabit limit", + "passedCount": "Uğurla keçənlərin sayı", + "zedImportFailed": "Zed idxalı uğursuz oldu", + "saving": "Yadda saxlanılır", + "testAll": "Hamısını sınaqdan keçir", + "globalProxyDesc": "Qlobal proksi təsviri", + "latencyP99": "Gecikmə P99", + "connectingToCloud": "Buluda qoşulur", + "responses": "Cavablar", + "errorDeleting": "Silinmə xətası", + "openaiPrefixPlaceholder": "Openai prefiksi üçün yer tutucu", + "enterPassword": "Parolu daxil edin", + "openA2aDashboard": "A2A idarəetmə panelini aç", + "enableProvider": "Provayderi aktivləşdir", + "modeTest": "Sınaq rejimi", + "failedDeleteChain": "Zənciri silmək alınmadı", + "providerDesc": "Provayder təsviri", + "templateLoadHint": "Şablonun yüklənməsi üçün ipucu", + "lastFailure": "Son uğursuzluq", + "moveDown": "Aşağı köçür", + "providerLabel": "Provayder etiketi", + "clearCacheFailed": "Keşi təmizləmək alınmadı", + "imagesGenerations": "Şəkil generasiyaları", + "repairEnvWorking": "Mühitin bərpası işləyir", + "millisecondsShort": "ms", + "globalLabel": "Qlobal etiket", + "failuresPlural": "Uğursuzluqlar", + "completionsLegacyDesc": "Köhnə tamamlama funksiyasının təsviri", + "searchProviders": "Provayderləri axtar", + "chatPathHint": "Söhbət yolu üçün ipucu", + "defaultStrategyDesc": "Standart strategiyanın təsviri", + "latencyP95": "Gecikmə P95", + "textToSpeech": "Mətndən nitqə", + "searchType": "Axtarış növü", + "messages": "Mesajlar", + "aggregatorsGateways": "Aqreqatorlar və şlüzlər", + "comboStrategyAria": "Kombinə edilmiş strategiya Aria", + "input": "Giriş", + "testingConnection": "Bağlantı sınaqdan keçirilir", + "excludeDomains": "Domenləri istisna et", + "webCookieProviders": "Veb kuki provayderləri", + "allTestsPassed": "Bütün sınaqlar uğurla keçdi", + "openaiCompatibleName": "Openai ilə uyğun ad", + "warningCostOptimizedPartialPricing": "Xəbərdarlıq: Xərclərə görə optimallaşdırılmış qismən qiymətləndirmə", + "comboDefaultsGuideTitle": "Kombinə edilmiş standartlar üzrə bələdçinin başlığı", + "hoursAgo": "Saat əvvəl", + "notAvailable": "Mövcud deyil", + "skipAndContinue": "Keç və davam et", + "moderations": "Moderasiya", + "proxyConfig": "Proksi konfiqurasiyası", + "upstreamProxyProviders": "Yuxarı axın proksi provayderləri", + "exportAll": "Hamısını ixrac et", + "queuedCount": "Növbədəkilərin sayı", + "resetAll": "Hamısını sıfırla", + "noTranslations": "Tərcümə yoxdur", + "avgLatency": "Orta gecikmə", + "throttleStatus": "Məhdudlaşdırma statusu", + "backupRetentionDesc": "Ehtiyat nüsxələrin saxlanmasının təsviri", + "noCBData": "Cb məlumatı yoxdur", + "chainDeleted": "Zəncir silindi", + "timeLeft": "Qalan vaxt", + "expirationBannerExpired": "Müddətin bitməsi banneri: Müddət bitib", + "language": "Dil", + "invalidFileType": "Yanlış fayl növü", + "monitoredProviders": "İzlənilən provayderlər", + "errors": "Xətalar", + "heap": "Yığın", + "chatCompletions": "Söhbət tamamlamaları", + "exampleTemplatesHint": "Nümunə şablonları üçün ipucu", + "retryDelayLabel": "Yenidən cəhd gecikməsi etiketi", + "audioTranscription": "Audio transkripsiyası", + "fallbackChainsDesc": "Ehtiyat zəncirlərinin təsviri", + "exampleTemplates": "Nümunə şablonları", + "connectionsCount": "Bağlantıların sayı", + "modelsPathLabel": "Modellər yolunun etiketi", + "activeProvidersHint": "Aktiv provayderlər üçün ipucu", + "activeLockouts": "Aktiv bloklamalar", + "invalid": "Yanlışdır", + "skipPassword": "Parolu keç", + "moveUp": "Yuxarı daşı", + "timeRange": "Vaxt aralığı", + "stickyLimitDesc": "Sabit limitin təsviri", + "cloudBenefitEdge": "Buludun Edge üstünlüyü", + "custom": "Fərdi", + "verifying": "Yoxlanılır", + "baseUrlLabel": "Əsas URL etiketi", + "setPassword": "Parol təyin et", + "safeSearchStrict": "Sərt təhlükəsiz axtarış", + "noChangesSinceBackup": "Yedəkləmədən sonra dəyişiklik yoxdur", + "modelsPathHint": "Modellər yolu üçün ipucu", + "audioTranscriptions": "Audio transkripsiyaları", + "testCombo": "Kombinasiyanı sına", + "mcpQuickStartTitle": "MCP sürətli başlanğıc başlığı", + "comboUpdated": "Kombinasiya yeniləndi", + "weighted": "Çəkili", + "providers": "Provayderlər", + "ccCompatibleLabel": "CC ilə uyğun", + "noFallbackChainsDesc": "Ehtiyat keçid zəncirləri yoxdur — təsvir", + "yesImport": "Bəli, idxal et", + "lockoutsAutoRefreshHint": "Bloklanmaların avtomatik yenilənməsi üçün ipucu", + "tabApis": "API-lər nişanı", + "sectionDescription": "Bölmənin təsviri", + "filter": "Filtr", + "purgeLogsFailed": "Jurnalları təmizləmək alınmadı", + "latency": "Gecikmə", + "testAllOAuth": "Bütün OAuth-ları sına", + "mcpQuickStartStep3": "MCP sürətli başlanğıc — 3-cü addım", + "repairEnvFailed": "Mühiti bərpa etmək alınmadı", + "zedImportHint": "Zed idxalı üçün ipucu", + "modelsAcrossEndpoints": "Son nöqtələr üzrə modellər", + "autoDisableBannedAccounts": "Qadağan edilmiş hesabları avtomatik deaktiv et", + "securityDesc": "Təhlükəsizliyin təsviri", + "listModels": "Modelləri sadala", + "backupRestore": "Yedəkləmə və bərpa", + "target": "Hədəf", + "zedImportSuccess": "Zed idxalı uğurlu oldu", + "lastHeaderUpdate": "Başlığın son yenilənməsi", + "categoryCore": "Əsas kateqoriya", + "noFallbackChains": "Ehtiyat keçid zəncirləri yoxdur", + "noSearchProviders": "Axtarış provayderləri yoxdur", + "autoBalance": "Avtomatik balanslaşdırma", + "noModelsYet": "Hələ model yoxdur", + "signatureFamily": "İmza ailəsi", + "externalApiCalls": "Xarici API çağırışları", + "providerOverridesDesc": "Provayder əvəzləmələrinin təsviri", + "signatureTool": "İmza aləti", + "connectionFailed": "Bağlantı uğursuz oldu", + "activeLimitersPlural": "Aktiv məhdudlaşdırıcılar", + "doneDesc": "Tamamlandı təsviri", + "down": "İşləmir", + "noDataYet": "Hələ məlumat yoxdur", + "activeProviders": "Aktiv provayderlər", + "nameInvalid": "Ad etibarsızdır", + "skip": "Keç", + "createChain": "Zəncir yarat", + "audioSpeech": "Audio nitq", + "cacheCleared": "Keş təmizləndi", + "searchTypeNews": "Axtarış növü: Xəbərlər", + "durationMillisecondsShort": "ms", + "addOpenAICompatible": "Open Ai uyğun provayderi əlavə et", + "chatTesterTab": "Çat sınaq aləti", + "queued": "Növbədədir", + "domainPlaceholder": "Domen üçün yer tutucu", + "durationMinutesShort": "dəq", + "verifyingConnection": "Bağlantı yoxlanılır", + "imageProviders": "Şəkil provayderləri", + "protocolToolsLabel": "Protokol alətləri etiketi", + "queryPlaceholder": "Sorğu üçün yer tutucu", + "videoGeneration": "Video yaratma", + "timeRangeWeek": "Vaxt aralığı: Həftə", + "limitExhausted": "Limit tükənib", + "failedDisable": "Deaktiv etmək alınmadı", + "inMemoryNote": "Yaddaşdaxili qeyd", + "compatibleHint": "Uyğunluq ipucu", + "errorShort": "Xəta", + "advancedHint": "Qabaqcıl ipucu", + "restoreFailed": "Bərpa etmək alınmadı", + "searchProvidersHeading": "Axtarış provayderləri", + "comboName": "Kombinasiya adı", + "autoDisableDescription": "Avtomatik deaktiv etmənin təsviri", + "embeddingsDesc": "Vektor təsvirlərinin açıqlaması", + "operational": "İşləkdir", + "testAllApiKey": "Bütün API açarlarını sınaqdan keçir", + "backupCreated": "Yedəkləmə yaradıldı", + "errorDuringImport": "İdxal zamanı xəta", + "comboDefaultsGuideHint2": "Kombinasiya standartları üzrə təlimat ipucu 2", + "connecting": "Qoşulur", + "fillModelAndProviders": "Model və provayderləri doldurun", + "syncing": "Sinxronlaşdırılır", + "resetConfirm": "Sıfırlamanı təsdiqləyin", + "trackMetrics": "Göstəriciləri izləyin", + "successful": "Uğurlu", + "recovering": "Bərpa edilir", + "autoDisableThreshold": "Avtomatik deaktivləşdirmə həddi", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Məlumatlar sinxronlaşdırılır", + "cloudBenefitPorts": "Bulud üstünlüyü portları", + "compatibleProviders": "Uyğun provayderlər", "freeTierProviders": "Pulsuz səviyyəli provayderlər", "freeTierLabel": "Pulsuz səviyyə mövcuddur", "freeTierProvidersDesc": "Pulsuz səviyyələri olan provayderlər - bəziləri API açarı qeydiyyatını tələb edir, digərləri isə ümumiyyətlə etimadnaməyə ehtiyac duymur.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Keşi təmizləyin", + "reqs": "Sorğular", + "addAnthropicCompatible": "Anthropic ilə uyğun provayder əlavə edin", + "apiKeyProviders": "API açarı provayderləri", + "tabsAria": "Vərəqlər üçün ARIA", + "resetting": "Sıfırlanır", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Bərpadan əvvəl yedəkləmə səbəbi", + "disableCloud": "Buludu deaktiv edin", + "newProviderNameAria": "Yeni provayder adı üçün ARIA", + "passwordsMismatch": "Parollar uyğun gəlmir", + "a2aQuickStartStep3": "A2A sürətli başlanğıc — 3-cü addım", + "liveMonitorDescriptionSuffix": "Canlı monitor təsvirinin şəkilçisi", + "failedAddProvider": "Provayder əlavə edilmədi", + "addAtLeastOneProvider": "Ən azı bir provayder əlavə edin", + "reasonSeparator": "Səbəb ayırıcısı", + "zedImporting": "Zed idxal edir", + "confirmPasswordPlaceholder": "Parolu təsdiqləyin", + "whatYouGet": "Nə əldə edirsiniz", + "signatureSession": "Sessiya imzası", + "errorCountNoCode": "Kodsuz xəta sayı", + "testing": "Sınaqdan keçirilir", + "providersCommaSeparated": "Vergüllə ayrılmış provayderlər", + "exportDatabase": "Verilənlər bazasını ixrac edin", + "hitRate": "Keşə düşmə faizi", + "completionsLegacy": "Köhnə tamamlamalar", + "removeModel": "Modeli sil", + "timeRangeDay": "Vaxt aralığı: gün", + "cloudRequestFailed": "Bulud sorğusu uğursuz oldu", + "updatedAt": "Yenilənmə vaxtı", + "monitoredProvidersHint": "İzlənilən provayderlər üçün ipucu", + "connectionSuccessful": "Bağlantı uğurla quruldu", + "latencyP50": "Gecikmə P50", + "logsDeleted": "Jurnallar silindi", + "chatTester": "Söhbət test aləti", + "safeSearchOff": "Təhlükəsiz axtarış deaktivdir", + "nameHint": "Ad üçün ipucu", + "debugToggle": "Sazlama keçidi", + "embedding": "Vektorlaşdırma", + "issuesLabel": "Problemlər etiketi", + "optionAny": "İstənilən seçim", + "maxNestingDepth": "Maksimum iç-içə yerləşmə dərinliyi", + "rerank": "Yenidən sıralama", + "checking": "Yoxlanılır", + "getStarted": "Başlayın", + "restoreSuccess": "Bərpa uğurla tamamlandı", + "issuesDetected": "Problemlər aşkarlandı", + "signatureCache": "İmza keşi", + "modelLockouts": "Model bloklanmaları", + "usingCloudProxy": "Bulud proksisindən istifadə edilir", + "loadingHealth": "Sağlamlıq vəziyyəti yüklənir", + "providerOverrides": "Provayder əvəzləmələri", + "audioTranscriptionDesc": "Audio transkripsiyasının təsviri", + "learnedFromHeaders": "Başlıqlardan öyrənilib", + "totalRequests": "Ümumi sorğular", + "cloudUnstableNote": "Buludun qeyri-sabitliyi barədə qeyd", "gamificationAdmin": "Oyunlaşdırma Admin", "monitorAnomaliesAndHealth": "Anomaliyaları və sistem sağlamlığını izləyin", "flaggedAnomalies": "İşarələnmiş Anomaliyalar", @@ -704,7 +704,7 @@ "apiKey": "API Açarı", "xpLastHour": "XP (1 saat)", "zScore": "Z-Balı", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Şübhəli", "tokensCommunityServers": "İcma serverləri", "tokensServerNamePlaceholder": "Server adı", "tokensApiKeyPlaceholder": "API açarı", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Daha çox yüklənir...", "recommended": "Tövsiyə olunur", "understand": "Anladım", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", + "batchConceptTitle": "Paket emalı", + "batchConceptSubtitle": "Minlərlə sorğunu xərclərin təxminən 50%-i ilə asinxron şəkildə emal edin (24 saatlıq müddət). Qiymətləndirmə, təsnifat və vektorlaşdırma üçün idealdır.", + "batchConceptHowItWorks": "Necə işləyir", + "batchConceptBenefit50pct": "Giriş və çıxış tokenlərinə 50% endirim", + "batchConceptAsync24h": "24 saatlıq tamamlanma müddəti ilə asinxron", + "batchConceptUseCases": "Kütləvi təsnifat, qiymətləndirmə və vektorlaşdırma üçün ən uyğundur", + "batchHeaderSubtitle": "Çoxsaylı sorğuları bir tapşırıq kimi icra edin", + "batchStep1": "1 · JSONL yükləyin", + "batchStep1Desc": "Sorğular əlavə edin", + "batchStep2": "2 · Paket yaradın", + "batchStep2Desc": "Tapşırığı başladın", + "batchStep3": "3 · Nəticələri əldə edin", + "batchStep3Desc": "Çıxış faylını endirin", + "filesConceptTitle": "Paket faylları", + "filesConceptSubtitle": "Paketlərdə istifadə olunan JSONL faylları: giriş sorğuları, nəticələr və xətalar.", + "filesConceptInput": "Giriş — hər sətirdə bir sorğu olan JSONL faylınız", + "filesConceptOutput": "Çıxış — tamamlanmış sorğuların nəticələri", + "filesConceptError": "Xətalar — uğursuz olmuş sorğular", + "filesConceptRetention": "Saxlanma müddəti: standart olaraq 30 gün (Anthropic-də 29 gün)", + "wizardTitle": "Yeni paket", + "wizardClose": "Bağlayın", + "wizardNext": "Növbəti", + "wizardBack": "Geri", + "wizardCancel": "Ləğv edin", + "wizardCreate": "Paket yaradın", + "wizardCreating": "Yaradılır…", + "wizardStep1Destination": "Təyinat yeri", + "wizardStep2Input": "Giriş", + "wizardStep3Validate": "Yoxlayın", + "wizardStep4Cost": "Qiymət və yaratma", + "wizardProviderLabel": "Provayder", + "wizardEndpointLabel": "Son nöqtə", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (çevirəcəyik)", + "wizardDropOrPick": "Faylı buraya atın və ya seçmək üçün klikləyin", + "wizardCsvMappingTitle": "CSV sütunlarını → sorğu sahələri ilə uyğunlaşdırın", + "wizardCsvMappingAddField": "Sahə əlavə edin", "wizardCsvNoColumns": "CSV başlığında heç bir sütun aşkar edilmədi.", "wizardCsvIgnoreColumn": "— nəzərə alma —", "wizardCsvCustomIdMapped": "custom_id uyğunlaşdırıldı", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} sətir təhlil edildi", "wizardCsvRowsSkipped": "{count} sətir ötürüldü", "wizardCsvRowError": "Sətir {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Bütün sətirlər etibarlıdır", "wizardValidating": "Yoxlanılır…", "wizardValidationParseFailed": "Doğrulama uğursuz oldu — məzmun təhlil edilə bilmədi.", "wizardValidationSummary": "{lines} sətir · {ids} unikal custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Təkrarlanan custom_ids aşkar edildi:", "wizardValidationFirstErrors": "Xətalar (ilk {count}):", "wizardValidationLine": "Sətir {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Yoxlama xətaları", + "wizardValidationPreview": "Önizləmə (ilk 5 sorğu)", + "wizardValidationSamplingNote": "Fayl böyükdür — nümunə götürülərək yoxlanılıb (ilk 1000 + son 100 sətir). Tam yoxlama server tərəfində aparılır.", + "wizardCostSync": "Sinxron qiymət", + "wizardCostBatch": "Paket qiyməti (-50%)", + "wizardCostSavings": "Qənaət", + "wizardCostEstimatedNotice": "Təxmini qiymət — faktiki hesablaşma fərqli ola bilər.", + "wizardErrorUpload": "Faylı yükləmək alınmadı. Yenidən cəhd edin.", + "wizardErrorCreate": "Paket yaradıla bilmədi. Yenidən cəhd edin.", + "wizardEmptyProviders": "Paket yaratmaq üçün paket dəstəyi olan provayderi (OpenAI, Anthropic və ya Gemini) qoşun.", + "uploadModalTitle": "Paket faylını yükləyin", + "uploadModalDropOrPick": ".jsonl faylını buraya atın və ya seçmək üçün klikləyin", + "uploadModalUpload": "Yüklə", + "uploadModalCancel": "Ləğv et", + "uploadModalError": "Yükləmə uğursuz oldu. Yenidən cəhd edin.", + "uploadModalSuccess": "Yükləndi", + "uploadModalSizeLimit": "Maks. 512 MB", + "batchListNewButton": "Yeni paket", + "batchListAutoRefresh": "Hər 30 san. avtomatik yenilə", + "batchListCostColumn": "Xərc", + "batchActionCancel": "Ləğv et", + "batchActionDownloadOutput": "Nəticəni endir", + "batchActionDownloadErrors": "Xətaları endir", + "batchActionRetry": "Uğursuz sorğuları yenidən sına", + "batchActionRetryConfirm": "Uğursuz olmuş {n} sorğu yenidən sınansın? Yekun xərc faktiki istifadə olunan tokenlərdən asılıdır.", + "expirationBadgeCritical": "Kritik", + "expirationBadgeWarning": "Tezliklə", + "expirationBadgeNormal": "Gözləmədədir", + "expirationBadgeExpired": "Müddəti bitib", + "filesListUploadButton": "Yüklə", + "filesListUsedByColumn": "İstifadə edən", + "filesListUsedByNone": "Heç biri", + "filesListUsedByRoleInput": "giriş", + "filesListUsedByRoleOutput": "çıxış", + "filesListUsedByRoleError": "xəta", + "filesListSizeColumn": "Ölçü", + "batchListProgressPartial": "(qismən)", + "batchListProviderColumn": "Provayder", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "Digər", + "batchListTitle": "Paketlər", + "batchListCount": "{count} paket", + "batchListRemovingCompleted": "Silinir…", + "batchListRemoveCompleted": "Tamamlanmışları sil", + "batchListTableStatus": "Vəziyyət", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Son nöqtə", "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableProgress": "Gedişat", + "batchListTableCreated": "Yaradılıb", + "batchListTableExpires": "Müddəti bitir", + "batchListLoading": "Yüklənir…", + "batchListEmpty": "Heç bir paket tapılmadı", + "batchListValidating": "Yoxlanılır…", + "batchStatusAll": "Bütün statuslar", + "batchStatusInProgress": "Davam edir", + "batchStatusValidating": "Yoxlanılır", + "batchStatusFinalizing": "Tamamlanır", + "batchStatusCompleted": "Tamamlandı", + "batchStatusFailed": "Uğursuz oldu", + "batchStatusCancelled": "Ləğv edildi", + "batchStatusCancelling": "Ləğv edilir", + "batchStatusExpired": "Müddəti bitib", + "batchStatusCompletedWithFailures": "xətalarla tamamlandı", + "batchStatusInProgressWithFailures": "davam edir (xətalarla)", + "batchStatusFinalizingWithFailures": "tamamlanır (xətalarla)", + "batchStatusCancelledWithFailures": "xətalarla ləğv edildi", + "batchStatusExpiredWithFailures": "müddəti bitib (qismən)", + "wizardCostEstimating": "Xərc hesablanır…", + "wizardCostRequests": "Sorğular", + "wizardCostInputTok": "giriş tokeni", + "wizardCostOutputTok": "çıxış tokeni", + "wizardCostWindow": "Müddət", + "wizardDestinationSelectProvider": "Provayder seçin…", + "wizardDestinationSelectModel": "Model seçin…", + "wizardDestinationConnectProvider": "Provayderə qoşulun", + "batchListBatchCreated": "{id} paketi yaradıldı — siyahı yenilənir…", + "batchListBatchCreatedDismiss": "Bağla", + "batchListRefreshing": "Yenilənir…", + "batchListRefresh": "Yenilə", + "uploadFileModalRemove": "Sil", + "uploadFileModalUploading": "Yüklənir…", + "wizardInputReading": "Fayl oxunur…", + "wizardInputReady": "Hazırdır", + "wizardInputLargeFileLabel": "Böyük fayl — seçmə üsulu ilə yoxlanılır", + "wizardInputCsvJsonlReady": "JSONL yaradıldı — yoxlamaya hazırdır.", + "wizardInputLargeFileWarning": "Böyük fayl aşkarlandı — yoxlama seçmə üsulu ilə aparılır (ilk 5 MB + son 100 KB). Tam yoxlama server tərəfində həyata keçirilir.", + "wizardCostWindow24h": "24 saatlıq tamamlanma müddəti", + "wizardValidationFieldsOk": "tələb olunan sahələr etibarlıdır", + "filesListDelete": "Sil", + "filesListDownload": "Endir", + "batchDetailActionCancel": "Paketi ləğv et", + "batchDetailActionRetry": "Uğursuz sorğuları yenidən sına", + "batchDetailCancelling": "Ləğv edilir…", + "batchDetailRetrying": "Yenidən sınaq hazırlanır…", + "batchDetailCancelConfirm": "Bu paket ləğv edilsin? Davam edən sorğular dayandırılacaq.", + "batchActionCancelError": "Paketi ləğv etmək alınmadı. Yenidən cəhd edin.", + "batchActionRetryError": "Uğursuz sorğuları yenidən sınamaq alınmadı. Yenidən cəhd edin.", + "batchConceptRetentionNote": "Nəticə və xəta faylları 30 gün saxlanılır (Anthropic: 29 gün)", "batchFilesSizeColumn": "Ölçü", "toggleNoAuthProvider": "No-Auth Provayderini Dəyişdirin", "loadingModels": "Modellər yüklənir…", @@ -988,48 +988,48 @@ "disabled": "Deaktiv", "featureFlagOmnirouteEmergencyFallbackDescription": "Büdcəsi tükənmiş sorğuları təcili pulsuz ehtiyat təminatçıya/modelə yönləndirin.", "featureFlagArenaEloSyncEnabledDescription": "Model intellekti reytinqləri üçün dövri Arena AI liderlər cədvəli ELO sinxronizasiyasını aktivləşdirin.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Kombinə edilmiş marşrutlaşdırma modelləri dəyişdikdə söhbət xülasələrini yaradın və əlavə edin. Model dəyişikliklərini müstəqil şəkildə idarə etmək və bütün mövcud və gələcək kombinasiyalar üçün fonda ötürmə sorğularının qarşısını almaq üçün bunu deaktiv edin.", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models üzərində claude/<provider>/<model> güzgü id-lərini reklam edin ki, Claude Code keçid modeli kəşfiyyatında qeyri-Claude modelləri siyahıya alsın. Diqqət: qlobal olaraq aktivləşdirildikdə bütün müştərilər üçün kataloq girişlərini ikiqat artırır.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> şlüz ləqəbləri üçün əsas keçid. Aktiv (standart): /v1/models düşünmə qabiliyyətinə malik hər uyğun Claude modeli üçün düşünməsiz variantı göstərir və sorğuda göndərilən no-think/ identifikatoru əsaslandırma söndürülməklə yenidən real modelə uyğunlaşdırılır. Deaktiv: heç bir variant göstərilmir və no-think/ identifikatoru hər hansı digər naməlum model identifikatoru kimi qəbul edilir. Bu aktiv olduqda hər model üzrə ModelSpec.noThinkingAlias seçim imkanı yenə də qüvvədə qalır.", "featureFlagChatVirtualLanesEnabledDescription": "Təchizatçı göndərişi üçün hər bir icarəçi (tenant) üzrə adaptiv virtual qəbul zolaqlarını aktivləşdirin (#9654): bir icarəçinin ani yükü artıq digərinə 503 qaytarmır. OMNIROUTE_CHAT_VIRTUAL_LANES mühit dəyişəni bu idarəetmə paneli ayarından üstündür; dəyişikliklər server yenidən işə salındıqda qüvvəyə minir.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "İdarə panelindəki provayder səhifələri: Pulsuz nişanını yalnız provayderin nəzərə aldığı siqnallarda göstərin — sənədləşdirilmiş pulsuz səviyyəsi olmayan qeydiyyatdan keçmiş provayderlər üçün göstərilən ad evristikasını, Boolean tipli olmayan pulsuz sahələri və :free şəkilçilərini nəzərə almır. Söndürüldükdə tarixi nişan qaydası saxlanılır.", + "featureFlagProxySkipRecentlyFailedDescription": "Proksi hovuzları və opencode-un hər hesab üzrə rotasiyası yenicə uğursuz olmuş proksini (TCP yoxlaması rədd edilib və ya onun vasitəsilə 429 cavabı alınıb) hər təkrarda ikiqat artan, lakin maksimum hədlə məhdudlaşan proses üzrə müddət ərzində yenidən təqdim etmir. Heç bir proksi statusu yazılmır; bütün namizədlər kənara qoyulduqda seçim dəyişməz qalır. Defolt olaraq deaktivdir: seçim sırası adi rotasiya ilə tam eynidir.", + "featureFlagProxyPoolEgressObservationDescription": "İdarə panelində proksi hovuzunun altında son 24 saat ərzində müşahidə edilmiş neçə çıxış IP-sinin onun üzvlərinə xidmət etdiyini, neçə bağlantının onlardan istifadə etdiyini və bir IP arxasında müşahidə edilən ən yüksək sayını göstərin. Yalnız oxuma üçündür, proksi jurnalından hesablanır və marşrutlaşdırma üçün heç vaxt istifadə edilmir. Defolt olaraq deaktivdir: hovuz redaktoru dəyişməz qalır və müşahidə marşrutu null cavabı verir.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Proksinin sağlamlıq yoxlamasında hədəfin rədd etdiyi yoxlamanın (401/403/429: proksi sorğunu ötürüb, təyinat nöqtəsi bu çıxış IP-sini rədd edib) xidmət göstərilmiş yoxlama kimi proksinin ardıcıl uğursuzluq sayğacını sıfırlamasına icazə verin. Defolt olaraq deaktivdir: rədd cavabı neytral qalır və ardıcıllığı saxlayır. 5xx hər iki halda qeyri-müəyyən qalır və rədd cavabı heç vaxt proksini silmir, deaktiv etmir və ya yenidən aktivləşdirmir.", "sidebar": { - "home": "Home", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "usage": "Usage", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", - "proxy": "Proxy", + "home": "Əsas səhifə", + "dashboard": "İdarə paneli", + "providers": "Provayderlər", + "combos": "Kombinasiyalar", + "usage": "İstifadə", + "analytics": "Analitika", + "costs": "Xərclər", + "health": "Sağlamlıq", + "proxy": "Proksi", "limits": "Limits & Quotas", - "cliTools": "CLI Tools", + "cliTools": "CLI alətləri", "media": "Media", - "settings": "Settings", - "translator": "Translator", - "playground": "Playground", - "searchTools": "Search Tools", - "agents": "Agents", - "cloudAgents": "Cloud Agents", - "memory": "Memory", - "skills": "Skills", + "settings": "Parametrlər", + "translator": "Tərcüməçi", + "playground": "Sınaq meydançası", + "searchTools": "Axtarış alətləri", + "agents": "Agentlər", + "cloudAgents": "Bulud agentləri", + "memory": "Yaddaş", + "skills": "Bacarıqlar", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", "chaosConfig": "Xaos Rejimi", - "docs": "Docs", - "issues": "Issues", - "endpoints": "Endpoints", + "docs": "Sənədlər", + "issues": "Problemlər", + "endpoints": "Son nöqtələr", "endpointsSubtitle": "AI bağlantı URL-ləriniz", - "apiManager": "API Keys", + "apiManager": "API açarları", "apiManagerSubtitle": "API açarlarını və girişi idarə edin", "embeddedServices": "Daxili Xidmətlər", "embeddedServicesSubtitle": "Lokal proksi xidmətlərini idarə edin", - "logs": "Logs", - "webhooks": "Webhooks", + "logs": "Jurnallar", + "webhooks": "Vebhuklar", "webhooksSubtitle": "Hadisələrdən xəbərdar olun", "logExport": "Jurnal ixracı", "logExportSubtitle": "Zəng jurnallarını kənara göndərin", @@ -1037,82 +1037,82 @@ "batchSubtitle": "Çoxsaylı sorğuları emal edin", "contextCavemanSubtitle": "Tez sıxılma", "contextRtkSubtitle": "Çıxış filtri", - "auditLog": "Audit Log", - "shutdown": "Shutdown", - "restart": "Restart", - "shutdownConfirm": "Shut down OmniRoute?", - "restartConfirm": "Restart OmniRoute?", + "auditLog": "Audit jurnalı", + "shutdown": "Söndür", + "restart": "Yenidən başlat", + "shutdownConfirm": "OmniRoute söndürülsün?", + "restartConfirm": "OmniRoute yenidən başlatılsın?", "version": "v{version}", "debug": "Debug", - "system": "System", - "help": "Help", + "system": "Sistem", + "help": "Kömək", "primarySection": "Main", "cliSection": "CLI", "debugSection": "Debug", "systemSection": "System", "helpSection": "Help", - "serverDisconnected": "Server Disconnected", - "serverDisconnectedMsg": "The proxy server has been stopped or is restarting.", - "expandSidebar": "Expand sidebar", - "collapseSidebar": "Collapse sidebar", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", - "cliToolsShort": "Tools", + "serverDisconnected": "Serverlə əlaqə kəsildi", + "serverDisconnectedMsg": "Proksi server dayandırılıb və ya yenidən başladılır.", + "expandSidebar": "Yan paneli genişləndir", + "collapseSidebar": "Yan paneli yığışdır", + "themes": "Temalar", + "presetColors": "Populyar rənglər", + "createTheme": "Tema yarat", + "chooseColor": "Bir rəng seçin", + "themeCoral": "Mərcan", + "themeBlue": "Mavi", + "themeRed": "Qırmızı", + "themeGreen": "Yaşıl", + "themeViolet": "Bənövşəyi", + "themeOrange": "Narıncı", + "themeCyan": "Firuzəyi", + "cliToolsShort": "Alətlər", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Paket tapşırıqları", + "themeSystem": "Tema sistemi", + "whitelabelingDesc": "Fərdi brendləşdirmənin təsviri", + "switchThemes": "Temaları dəyiş", + "themeAccentDesc": "Tema vurğusunun təsviri", + "uploadFavicon": "Favikon yüklə", + "themeDark": "Tünd tema", + "customLogoDesc": "Fərdi loqonun təsviri", + "sidebarVisibilityToggle": "Yan panelin görünüşünü dəyiş", + "themeAccent": "Tema vurğusu", + "resetFavicon": "Favikonu sıfırla", + "whitelabeling": "Fərdi brendləşdirmə", + "darkMode": "Tünd rejim", + "uploadLogo": "Loqo yüklə", + "themeLight": "Açıq tema", + "appName": "Tətbiqin adı", + "appNameDesc": "Tətbiq adının təsviri", + "resetLogo": "Loqonu sıfırla", + "customFavicon": "Fərdi favikon", + "hideHealthLogs": "Sağlamlıq jurnallarını gizlət", + "customLogo": "Fərdi loqo", + "appearance": "Görünüş", + "themeSelectionAria": "Mövzu seçimi üçün ARIA", + "themeCreate": "Mövzu yarat", + "customFaviconDesc": "Fərdi favikonun təsviri", + "logoPreview": "Loqonun önizləməsi", + "themeCustom": "Fərdi mövzu", + "hideHealthLogsDesc": "Sağlamlıq jurnallarını gizlətmə təsviri", + "faviconPreview": "Favikonun önizləməsi", + "changelog": "Dəyişiklik jurnalı", + "contextSection": "Kontekst və keş", + "contextCaveman": "Mağara adamı", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Mühərrik kombinasiyaları", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Sıxılma parametrləri", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Kombinasiya studiyası", "combosLiveSubtitle": "Canlı marşrutlaşdırma kaskadı", "compressionStudio": "Compression Studio", "compressionExclusions": "İstisnalar", @@ -1136,11 +1136,11 @@ "costsSection": "Xərclər", "monitoringSection": "Monitorinq", "auditSecuritySection": "Audit və Təhlükəsizlik", - "devtoolsSection": "Dev Tools", + "devtoolsSection": "Tərtibatçı alətləri", "configurationSection": "Konfiqurasiya", "aiFeaturesSection": "AI Xüsusiyyətləri", - "mcp": "MCP Server", - "a2a": "A2A Server", + "mcp": "MCP Serveri", + "a2a": "A2A Serveri", "plugins": "Plaqinlər", "apiEndpoints": "API son nöqtələri", "batchFiles": "Fayllar", @@ -1170,7 +1170,7 @@ "settingsAccessTokens": "Giriş Tokenləri", "settingsFeatureFlags": "Xüsusiyyət Bayraqları", "settingsCache": "Keş", - "settingsAuthz": "Authz", + "settingsAuthz": "Avtorizasiya", "settingsRouting": "Marşrutlaşdırma", "settingsResilience": "Dözümlülük", "modelLockout": "Model Kilidlənməsi", @@ -1180,93 +1180,93 @@ "providerQuota": "Provayder Kvota", "runtime": "İcra müddəti", "consoleLogs": "Konsol qeydləri", - "logsTimeline": "Timeline", + "logsTimeline": "Zaman xətti", "logsTimelineSubtitle": "Vizual tələb zaman cədvəli", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", + "conversations": "Söhbətlər", + "conversationsSubtitle": "Çoxmərhələli agent söhbətləri", "globalRouting": "Qlobal marşrutlaşdırma", "mitmProxy": "MITM Proksi", "oneProxy": "1 Proksi", "agenticFeaturesSection": "Agentlik Xüsusiyyətləri", "otherFeaturesSection": "Digər Xüsusiyyətlər", "compressionContextGroup": "Sıxılma konteksti", - "gamificationGroup": "Gamification", + "gamificationGroup": "Oyunlaşdırma", "toolsGroup": "Alətlər", "integrationsGroup": "İnteqrasiyalar", "proxyGroup": "Proksi", "costsParametersGroup": "Xərclər Parametrləri", "auditGroup": "Audit", "batchGroup": "Dəstə", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "homeSubtitle": "İdarə panelinə ümumi baxış", + "providersSubtitle": "Süni intellekt provayderlərini idarə et", + "quotaTrackerSubtitle": "İstifadə limitlərini izləyin", + "providerQuotaSubtitle": "Provayder istifadə limitlərini izləyin", + "runtimeSubtitle": "Real vaxt dayanıqlığı və sessiyalar", + "contextCombosSubtitle": "Sıxılma mühərriklərini birləşdirin", + "cliToolsSubtitle": "CLI icra mühitlərini konfiqurasiya edin", + "agentsSubtitle": "Lokal agentləri idarə edin", + "cloudAgentsSubtitle": "Bulud əsaslı agentləri idarə edin", + "apiEndpointsSubtitle": "Fərdi son nöqtələri əlçatan edin", + "proxySubtitle": "HTTP proksi parametrləri", + "mitmProxySubtitle": "MITM ələ keçirməsi", + "oneProxySubtitle": "İctimai proksi şlüzü", + "leaderboard": "Liderlər cədvəli", + "profile": "Profil", + "tokens": "Tokenlər", + "gamificationAdmin": "Oyunlaşdırma administratoru", + "leaderboardSubtitle": "Reytinqlər və nailiyyətlər", + "profileSubtitle": "Hesab və seçimlər", + "tokensSubtitle": "Token istifadəsi və büdcələr", + "gamificationAdminSubtitle": "Anomaliyaların monitorinqi və fırıldaqçılığa qarşı müdafiə", + "usageSubtitle": "Trafik və istifadə statistikası", + "analyticsComboHealthSubtitle": "Kombinə edilmiş hədəf etibarlılığı", + "analyticsUtilizationSubtitle": "Provayderdən istifadə səviyyəsi", + "costsSubtitle": "Xərc bölgüsü", + "cacheSubtitle": "Keşə düşmə göstəriciləri", + "analyticsCompressionSubtitle": "Token qənaəti statistikası", + "analyticsSearchSubtitle": "Axtarış aləti analitikası", + "analyticsEvalsSubtitle": "Qiymətləndirmə dəsti nəticələri", "providerStats": "Təminatçı Statistikası", "providerStatsSubtitle": "Gecikmə və performans metrikləri", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", + "logsSubtitle": "Tətbiq jurnalları", + "logsProxySubtitle": "Proksi trafik jurnalları", + "consoleLogsSubtitle": "Konsol çıxışı", + "logsActivitySubtitle": "İstifadəçi fəaliyyəti jurnalı", + "healthSubtitle": "Sistemin vəziyyətinin yoxlanılması", + "costsPricingSubtitle": "Model üzrə qiymətləndirmə qaydaları", + "costsBudgetSubtitle": "Büdcə limitləri", "costsQuotaShareSubtitle": "Provayder kvotalarını açarlar arasında paylaşın", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "auditLogSubtitle": "Avtorizasiya auditi", + "auditMcpSubtitle": "MCP server auditi", + "auditA2aSubtitle": "A2A protokolu auditi", + "translatorSubtitle": "Format çevrilməsi", + "playgroundSubtitle": "Sorğuları canlı sınaqdan keçirin", + "searchToolsSubtitle": "Axtarış alətləri reyestri", + "memorySubtitle": "Davamlı agent yaddaşı", + "omniSkillsSubtitle": "Sandbox bacarıq reyestri", + "agentSkillsSubtitle": "A2A bacarıq reyestri", + "mcpSubtitle": "MCP server idarəetmələri", + "a2aSubtitle": "A2A protokol serveri", "pluginsSubtitle": "Plaqin bazarı & quraşdırmalar", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Keşlənmiş media faylları", + "batchFilesSubtitle": "Paket giriş/çıxış faylları", + "settingsSubtitle": "Bütün parametrlər", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Mövzu və tərtibat", + "settingsAiSubtitle": "Defolt AI davranışı", + "globalRoutingSubtitle": "Qlobal marşrutlaşdırma qaydaları", + "settingsResilienceSubtitle": "Təkrar cəhdlər və kəsicilər", + "settingsAdvancedSubtitle": "Təcrübəli istifadəçi seçimləri", + "settingsSecuritySubtitle": "Autentifikasiya və şifrələmə", "settingsAccessTokensSubtitle": "Uzaq rejim üçün məhdud əhatəli CLI tokenləri", "settingsFeatureFlagsSubtitle": "Sistem imkanlarını dəyişdirin", "settingsCacheSubtitle": "Model kataloqu və cavab keşlənməsi", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Yan panel", + "settingsSidebarSubtitle": "Yan panel tərtibatını fərdiləşdirin", "settingsAuthzSubtitle": "Marşrut inventarı və yan keçmə siyasəti", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Sənədlər", + "issuesSubtitle": "Xəta barədə məlumat verin", + "changelogSubtitle": "Buraxılış qeydləri", "costsQuotaPlans": "Planlar & Kvotalar", "costsQuotaPlansSubtitle": "Planları təminatçıya görə konfiqurasiya edin", "activity": "Fəaliyyət", @@ -1278,8 +1278,8 @@ "agentBridge": "Agent Körpüsü", "agentBridgeSubtitle": "IDE agenti trafikini ələ keçirin", "trafficInspector": "Trafik İnspektoru", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Tətbiqlərinizdən gələn sorğu və cavab trafikini yoxlayın", + "trafficInspectorPurpose": "Tətbiqinizin AI provayderlərinə nə göndərdiyini və onlardan nə aldığını dəqiq görün. OpenAI ilə uyğun istənilən klientlə işləyir.", "cliCode": "CLI Kodu", "cliCodeSubtitle": "OmniRoute-a yönəlmiş kod alətləri", "cliAgents": "CLI Agentləri", @@ -1318,50 +1318,50 @@ "noResults": "Heç bir nəticə yoxdur" }, "webhooks": { - "title": "Webhooks", - "description": "Configure HTTP callbacks for system events.", - "configuredWebhooks": "Configured Webhooks", - "configuredWebhooksDesc": "Manage delivery endpoints, subscribed events, status, and test sends.", - "addWebhook": "Add Webhook", - "editWebhook": "Edit Webhook", - "name": "Name", - "namePlaceholder": "Production monitoring", - "unnamedWebhook": "Unnamed webhook", - "url": "Endpoint URL", - "events": "Events", - "allEvents": "All events", - "secret": "Secret", - "secretPlaceholder": "Leave blank to auto-generate a secret", - "secretEditPlaceholder": "Leave blank to keep the current secret", - "status": "Status", - "active": "Active", - "inactive": "Inactive", - "errored": "Errored", - "total": "Total", - "lastTriggered": "Last Triggered", - "actions": "Actions", - "enabled": "Enabled", - "enabledDesc": "Disabled webhooks remain saved but do not receive deliveries.", - "refresh": "Refresh", - "loading": "Loading webhooks...", - "never": "Never", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", - "testWebhook": "Send Test", - "testSuccess": "Test webhook sent successfully.", - "testFailed": "Test webhook failed.", - "saveSuccess": "Webhook saved successfully.", - "saveFailed": "Failed to save webhook.", - "loadFailed": "Failed to load webhooks.", - "delete": "Delete", - "deleteConfirm": "Are you sure you want to delete this webhook?", - "deleteSuccess": "Webhook deleted successfully.", - "deleteFailed": "Failed to delete webhook.", - "edit": "Edit", - "enable": "Enable", - "disable": "Disable", - "noWebhooks": "No webhooks configured yet.", - "signatureTitle": "Webhook Signatures", - "signatureDescription": "Each delivery includes an X-Webhook-Signature header signed with HMAC-SHA256 using the webhook secret. Verify the signature before trusting the payload.", + "title": "Vebhuklar", + "description": "Sistem hadisələri üçün HTTP geri çağırışlarını konfiqurasiya edin.", + "configuredWebhooks": "Konfiqurasiya edilmiş vebhuklar", + "configuredWebhooksDesc": "Çatdırılma son nöqtələrini, abunə olunmuş hadisələri, statusu və sınaq göndərişlərini idarə edin.", + "addWebhook": "Vebhuk əlavə edin", + "editWebhook": "Vebhuku redaktə edin", + "name": "Ad", + "namePlaceholder": "İstehsal mühitinin monitorinqi", + "unnamedWebhook": "Adsız vebhuk", + "url": "Son nöqtə URL-i", + "events": "Hadisələr", + "allEvents": "Bütün hadisələr", + "secret": "Məxfi açar", + "secretPlaceholder": "Məxfi açarın avtomatik yaradılması üçün boş saxlayın", + "secretEditPlaceholder": "Cari məxfi açarı saxlamaq üçün boş saxlayın", + "status": "Vəziyyət", + "active": "Aktiv", + "inactive": "Qeyri-aktiv", + "errored": "Xətalı", + "total": "Ümumi", + "lastTriggered": "Son işə salınma", + "actions": "Əməliyyatlar", + "enabled": "Aktivdir", + "enabledDesc": "Deaktiv vebhuklar yadda saxlanılır, lakin göndərişləri qəbul etmir.", + "refresh": "Yenilə", + "loading": "Vebhuklar yüklənir...", + "never": "Heç vaxt", + "failureCount": "{count, plural, =0 {xəta yoxdur} one {# xəta} other {# xəta}}", + "testWebhook": "Test göndər", + "testSuccess": "Test vebhuku uğurla göndərildi.", + "testFailed": "Test vebhukunu göndərmək alınmadı.", + "saveSuccess": "Vebhuk uğurla yadda saxlanıldı.", + "saveFailed": "Vebhuku yadda saxlamaq alınmadı.", + "loadFailed": "Vebhukları yükləmək alınmadı.", + "delete": "Sil", + "deleteConfirm": "Bu vebhuku silmək istədiyinizə əminsiniz?", + "deleteSuccess": "Vebhuk uğurla silindi.", + "deleteFailed": "Vebhuku silmək alınmadı.", + "edit": "Redaktə et", + "enable": "Aktivləşdir", + "disable": "Deaktivləşdir", + "noWebhooks": "Hələ heç bir vebhuk konfiqurasiya edilməyib.", + "signatureTitle": "Vebhuk imzaları", + "signatureDescription": "Hər göndərişə vebhuk sirrindən istifadə etməklə HMAC-SHA256 ilə imzalanmış X-Webhook-Signature başlığı daxil edilir. Faydalı yükə etibar etməzdən əvvəl imzanı doğrulayın.", "wizard": { "cancel": "Ləğv et", "step1Title": "İnteqrasiyanı Seçin", @@ -1391,7 +1391,7 @@ "title": "Çatdırılma qeydləri", "loadFailed": "Webhook çatdırılma qeydlərini yükləmək mümkün olmadı.", "empty": "Hələ heç bir çatdırılma qeydə alınmayıb. Bir hadisəni işə salın və ya test payload-u göndərin.", - "status": "Status", + "status": "Vəziyyət", "event": "Hadisə", "latency": "Gecikmə", "at": "Göndərilmə vaxtı" @@ -1422,20 +1422,20 @@ "invalidUrl": "Yanlış URL formatı" }, "custom": { - "endpointUrl": "Endpoint URL", + "endpointUrl": "Son nöqtə URL-si", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", "secretKey": "Gizli açar", "secretKeyPlaceholder": "Gizli açarı daxil edin və ya avtomatik generasiya üçün boş buraxın", "secretKeyHint": "Autentifikasiya üçün payload başlığını imzalamaq üçün istifadə olunur." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "Discord vebhuk URL-si", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "Discord kanal inteqrasiyası parametrlərindən kopyalanmış webhook URL-i.", "tutorial": "Discord webhook-u necə yaradılır:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "Slack vebhuk URL-si", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "Slack Incoming Webhooks inteqrasiyanızdan kopyalanmış webhook URL-i.", "tutorial": "Slack webhook-u necə yaradılır:" @@ -1452,54 +1452,54 @@ }, "compliance": { "auditTitle": "Audit", - "auditDescription": "Review compliance events and MCP tool calls from one operational view.", - "complianceTab": "Compliance", - "mcpTab": "MCP Audit", - "title": "Compliance Audit", - "description": "Policy, access, provider, and security events recorded by the compliance audit log.", - "eventType": "Event Type", - "eventTypePlaceholder": "Filter by action or event type", - "severity": "Severity", - "allSeverities": "All severities", - "info": "Info", - "warning": "Warning", - "critical": "Critical", - "sourceIp": "Source IP", - "userOrKey": "User / Key", - "action": "Action", - "result": "Result", - "details": "Details", - "timestamp": "Timestamp", - "from": "From", - "to": "To", - "refresh": "Refresh", - "export": "Export", - "clearFilters": "Clear filters", - "loading": "Loading audit events...", - "showing": "Showing {count} of {total} events", - "policyViolation": "Policy Violation", - "accessDenied": "Access Denied", - "injectionBlocked": "Injection Blocked", - "noEvents": "No compliance events recorded.", - "failedFetch": "Failed to fetch compliance audit log.", - "viewDetails": "View details", - "closeDetails": "Close details", + "auditDescription": "Uyğunluq hadisələrini və MCP alət çağırışlarını vahid əməliyyat görünüşündə nəzərdən keçirin.", + "complianceTab": "Uyğunluq", + "mcpTab": "MCP Auditi", + "title": "Uyğunluq Auditi", + "description": "Uyğunluq auditi jurnalında qeydə alınmış siyasət, giriş, provayder və təhlükəsizlik hadisələri.", + "eventType": "Hadisə növü", + "eventTypePlaceholder": "Əməl və ya hadisə növünə görə filtrləyin", + "severity": "Ciddilik", + "allSeverities": "Bütün ciddilik səviyyələri", + "info": "Məlumat", + "warning": "Xəbərdarlıq", + "critical": "Kritik", + "sourceIp": "Mənbə IP", + "userOrKey": "İstifadəçi / Açar", + "action": "Əməl", + "result": "Nəticə", + "details": "Təfərrüatlar", + "timestamp": "Vaxt möhürü", + "from": "Başlanğıc", + "to": "Son", + "refresh": "Yenilə", + "export": "İxrac et", + "clearFilters": "Filtrləri təmizlə", + "loading": "Audit hadisələri yüklənir...", + "showing": "{total} hadisədən {count} ədədi göstərilir", + "policyViolation": "Siyasət pozuntusu", + "accessDenied": "Giriş rədd edildi", + "injectionBlocked": "İnyeksiya bloklandı", + "noEvents": "Heç bir uyğunluq hadisəsi qeydə alınmayıb.", + "failedFetch": "Uyğunluq auditi jurnalını əldə etmək alınmadı.", + "viewDetails": "Təfərrüatlara bax", + "closeDetails": "Təfərrüatları bağla", "notAvailable": "—", - "system": "system", - "previous": "Previous", - "next": "Next", - "mcpAudit": "MCP Audit", - "mcpAuditDesc": "Tool call audit entries recorded by the MCP server.", - "failedFetchMcpAudit": "Failed to fetch MCP audit log.", - "tool": "Tool", - "toolPlaceholder": "Filter by tool name", - "duration": "Duration", - "apiKey": "API Key", - "output": "Output", - "allResults": "All results", - "success": "Success", - "failure": "Failure", - "noMcpEvents": "No MCP audit events recorded.", + "system": "sistem", + "previous": "Əvvəlki", + "next": "Növbəti", + "mcpAudit": "MCP Auditi", + "mcpAuditDesc": "MCP serveri tərəfindən qeydə alınmış alət çağırışı auditi qeydləri.", + "failedFetchMcpAudit": "MCP auditi jurnalını əldə etmək alınmadı.", + "tool": "Alət", + "toolPlaceholder": "Alət adına görə filtrləyin", + "duration": "Müddət", + "apiKey": "API açarı", + "output": "Çıxış", + "allResults": "Bütün nəticələr", + "success": "Uğurlu", + "failure": "Uğursuz", + "noMcpEvents": "Heç bir MCP audit hadisəsi qeydə alınmayıb.", "a2aAudit": "A2A Auditi", "a2aAuditDesc": "A2A serveri tərəfindən qeydə alınan tapşırığın icrası audit izi.", "a2aShowingTasks": "{total} tapşırıqdan {count} göstərilir", @@ -1563,48 +1563,48 @@ "mcpMetricTopTool": "Ən Yaxşı Alət" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "Temalar", + "description": "Hazır tema seçin və ya bir rənglə öz temanızı yaradın", + "presetColors": "Populyar rənglər", + "customTheme": "Fərdi tema", + "customThemeDesc": "Tema yarat düyməsinə klikləyin və bir rəng seçin", + "createTheme": "Tema yarat", + "activePreset": "Aktiv tema" }, "header": { - "logout": "Logout", + "logout": "Çıxış", "quickNavigation": "Sürətli naviqasiya", "quickNavigationTitle": "Sürətli naviqasiya (⌘K / Ctrl+K)", "openQuickNavigation": "Sürətli naviqasiyanı açın", "switchToLightMode": "Açıq rejimə keçin", "switchToDarkMode": "Tünd rejimə keçin", - "language": "Language", - "providers": "Providers", - "providerDescription": "Manage your AI provider connections", - "combos": "Combos", - "comboDescription": "Model combos with fallback", - "usage": "Usage & Analytics", - "usageDescription": "Monitor your API usage, token consumption, and request logs", - "analytics": "Analytics", - "analyticsDescription": "Charts, trends, and evaluation insights", - "cliTools": "CLI Tools", - "cliToolsDescription": "Configure CLI tools", - "home": "Home", - "homeDescription": "Welcome to OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "language": "Dil", + "providers": "Provayderlər", + "providerDescription": "AI provayder bağlantılarınızı idarə edin", + "combos": "Kombinasiyalar", + "comboDescription": "Ehtiyat variantlı model kombinasiyaları", + "usage": "İstifadə və analitika", + "usageDescription": "API istifadənizi, token sərfiyyatınızı və sorğu jurnallarınızı izləyin", + "analytics": "Analitika", + "analyticsDescription": "Qrafiklər, tendensiyalar və qiymətləndirmə təhlilləri", + "cliTools": "CLI alətləri", + "cliToolsDescription": "CLI alətlərini konfiqurasiya edin", + "home": "Əsas səhifə", + "homeDescription": "OmniRoute-a xoş gəlmisiniz", + "endpoint": "Son nöqtələr", + "endpointDescription": "Proksi son nöqtələrini, MCP, A2A və API son nöqtələrini idarə edin", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol serverlərinin və alətlərinin idarə edilməsi", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", - "settings": "Settings", - "settingsDescription": "Manage your preferences", - "openaiCompatible": "OpenAI Compatible", - "anthropicCompatible": "Anthropic Compatible", + "a2aDescription": "Agent-to-Agent protokolu tapşırıqları və müşahidəolunma", + "settings": "Parametrlər", + "settingsDescription": "Tərcihlərinizi idarə edin", + "openaiCompatible": "OpenAI ilə uyğun", + "anthropicCompatible": "Anthropic ilə uyğun", "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", + "mediaDescription": "Şəkillər, videolar və musiqi yaradın", + "themes": "Temalar", + "themesDescription": "Bütün idarəetmə paneli üçün rəng teması seçin", "costsDescription": "Xərcləri izləyin, tendensiyaları təhlil edin və AI büdcənizi bütün provayderlər arasında idarə edin", "cacheDescription": "Provayderin operativ keş səmərəliliyinə və yerli semantik cavabın təkrar istifadəsinə nəzarət edin.", "limitsDescription": "API açarı və provayder üçün tarif limitlərini və kvotaları konfiqurasiya edin", @@ -1708,7 +1708,7 @@ "console": "Konsol", "logger": "Loqqer", "translator": "Tərcüməçi", - "playground": "Playground", + "playground": "Sınaq meydançası", "add": "Əlavə et", "edit": "Redaktə et", "apiKeys": "API Açarları", @@ -1716,7 +1716,7 @@ "cliCode": "CLI Kodu", "cliAgents": "CLI Agentləri", "acpAgents": "ACP Agentləri", - "endpoint": "Endpoint", + "endpoint": "Son nöqtə", "apiManager": "API Meneceri", "context": "Kontekst", "compression": "Sıxılma", @@ -1724,7 +1724,7 @@ "analytics": "Analitika", "costs": "Xərclər", "health": "Sağlamlıq", - "runtime": "Runtime", + "runtime": "İcra mühiti", "webhooks": "Veb-huklar", "home": "Ana Səhifə", "activity": "Fəaliyyət", @@ -1762,7 +1762,7 @@ "discovery": "Kəşf", "freeProviderRankings": "Pulsuz provayder reytinqləri", "radar": "Radar", - "setup": "Setup", + "setup": "Quraşdırma", "freeTiers": "Pulsuz səviyyələr", "gamification": "Oyunlaşdırma", "leaderboard": "Liderlər cədvəli", @@ -1784,53 +1784,53 @@ "orchestration": "Orkestrasiya" }, "home": { - "quickStart": "Quick Start", - "quickStartDesc": "Get up and running in 4 steps. Connect providers, route models, monitor everything.", - "fullDocs": "Full Docs", - "step1Title": "1. Create API key", + "quickStart": "Sürətli başlanğıc", + "quickStartDesc": "4 addımda işə başlayın. Provayderləri qoşun, modelləri marşrutlaşdırın və hər şeyi izləyin.", + "fullDocs": "Tam sənədlər", + "step1Title": "1. API açarı yaradın", "step1Desc": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "step2Title": "2. Connect providers", - "step2Desc": "Add accounts in Providers. Supports OAuth, API Key, and free tiers.", - "step3Title": "3. Point your client", - "step3Desc": "Set base URL to {url} in your IDE or API client.", - "step4Title": "4. Monitor & optimize", - "step4Desc": "Track tokens, cost and errors in Request Logs and Analytics.", - "providersOverview": "Providers Overview", - "configuredOf": "{configured} configured of {total} available providers", - "noModelsAvailable": "No models available for this provider.", + "step2Title": "2. Provayderləri qoşun", + "step2Desc": "Hesabları Provayderlər bölməsində əlavə edin. OAuth, API açarı və pulsuz tariflər dəstəklənir.", + "step3Title": "3. Müştərinizi yönləndirin", + "step3Desc": "IDE və ya API müştərinizdə baza URL-ni {url} olaraq təyin edin.", + "step4Title": "4. İzləyin və optimallaşdırın", + "step4Desc": "Tokenləri, xərcləri və xətaları Sorğu jurnallarıAnalitika bölmələrində izləyin.", + "providersOverview": "Provayderlərə ümumi baxış", + "configuredOf": "Mövcud {total} provayderdən {configured} ədədi konfiqurasiya edilib", + "noModelsAvailable": "Bu provayder üçün heç bir model mövcud deyil.", "noProvidersConfigured": "Hələ heç bir provayder konfiqurasiya edilməyib", "addProvider": "Provayder əlavə edin", - "configureFirst": "Configure a connection first in {providers}", - "configureProvider": "Configure Provider", - "modelAvailable": "{count} model available", - "modelsAvailable": "{count} models available", - "connectionsActive": "{count} connection active", - "connectionsActivePlural": "{count} connections active", - "copyModelName": "Copy model name", - "documentation": "Documentation", - "healthMonitor": "Health Monitor", - "reportIssue": "Report issue", - "activeError": "{active} active · {errors} error", - "topologyLegendActive": "__MISSING__:Active", - "topologyLegendRecent": "__MISSING__:Recent", - "topologyLegendError": "__MISSING__:Error", + "configureFirst": "Əvvəlcə {providers} bölməsində bağlantını konfiqurasiya edin", + "configureProvider": "Provayderi konfiqurasiya edin", + "modelAvailable": "{count} model mövcuddur", + "modelsAvailable": "{count} model mövcuddur", + "connectionsActive": "{count} aktiv bağlantı", + "connectionsActivePlural": "{count} aktiv bağlantı", + "copyModelName": "Model adını kopyala", + "documentation": "Sənədlər", + "healthMonitor": "Sağlamlıq monitoru", + "reportIssue": "Problem barədə məlumat ver", + "activeError": "{active} aktiv · {errors} xəta", + "topologyLegendActive": "Aktiv", + "topologyLegendRecent": "Son", + "topologyLegendError": "Xəta", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", - "requestsShort": "{count} reqs", - "providerModelsTitle": "{provider} - Models", - "copiedModel": "Copied: {model}", + "apiKeyLabel": "API açarı", + "requestsShort": "{count} sorğu", + "providerModelsTitle": "{provider} - Modellər", + "copiedModel": "Kopyalandı: {model}", "aliasLabel": "alias", - "updateNow": "Update Now", - "updating": "Updating...", - "updateAvailableDesc": "A new version is available. Click to update.", - "updateStarted": "Update started...", + "updateNow": "İndi yenilə", + "updating": "Yenilənir...", + "updateAvailableDesc": "Yeni versiya mövcuddur. Yeniləmək üçün klikləyin.", + "updateStarted": "Yeniləmə başladı...", "reloadingPageAutomatically": "Səhifə avtomatik yenidən yüklənir...", "providerTopology": "Provayder Topologiyası", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Son sorğular", + "recentRequestsEmpty": "Hələ sorğu yoxdur.", + "recentRequestsModel": "Model", + "recentRequestsTokens": "Giriş / Çıxış", + "recentRequestsWhen": "Vaxt", "downloadDmg": "DMG-ni Yükləyin (macOS)", "downloadDmgDescription": "OmniRoute masaüstü tətbiqinin yeni versiyası mövcuddur. Zəhmət olmasa, yeniləmək üçün macOS DMG quraşdırıcısını yükləyin və quraşdırın (hazırkı: v{version}).", "downloadExe": "EXE-ni Yükləyin (Windows)", @@ -1887,19 +1887,19 @@ "directDownloadHint": "Yaxud müvafiq quraşdırıcı formatını birbaşa yükləyin:", "releaseNotes": "Buraxılış Qeydləri", "readMore": "Daha Çox Oxu", - "noAuthLabel": "No Auth", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "noAuthLabel": "Autentifikasiya yoxdur", + "readinessEyebrow": "Yönləndirməyə hazırlaşın", + "readinessTitle": "İlk sorğunuzu göndərin", + "readinessSubtitle": "Dörd kiçik addım. OmniRoute proses boyunca hazırlıq vəziyyətini yoxlayır.", + "readinessStep1": "Provayderə qoşulun", + "readinessStep2": "Son nöqtə autentifikasiyasını konfiqurasiya edin", + "readinessStep3": "Son nöqtənizi kopyalayın", + "readinessStep4": "Sınaq sorğusu göndərin", + "readinessContinue": "Quraşdırmaya davam edin", + "readinessDismiss": "Hələlik bağla" }, "analytics": { - "title": "Analytics", + "title": "Analitika", "usageAnalyticsTitle": "İstifadə analitikası", "diversityScoreTitle": "Provayder Müxtəlifliyi", "diversityScoreDesc": "Son trafik pəncərəsi üçün provayder konsentrasiyasının anlıq görüntüsü.", @@ -1990,27 +1990,27 @@ "highlightsDiversity": "Müxtəliflik", "highlightsFallbackRate": "Fallback dərəcəsi", "customRange": "Fərdi", - "overviewDescription": "Monitor your API usage patterns, token consumption, costs, and activity trends across all providers and models.", - "evalsDescription": "Run evaluation suites to test and validate your LLM endpoints. Compare model quality, detect regressions, and benchmark latency.", - "overview": "Overview", - "evals": "Evals", + "overviewDescription": "Bütün provayderlər və modellər üzrə API istifadə nümunələrinizi, token sərfiyyatını, xərcləri və aktivlik tendensiyalarını izləyin.", + "evalsDescription": "LLM son nöqtələrinizi sınaqdan keçirmək və doğrulamaq üçün qiymətləndirmə paketlərini işə salın. Model keyfiyyətini müqayisə edin, geriləmələri aşkarlayın və gecikməni müqayisəli şəkildə ölçün.", + "overview": "Ümumi baxış", + "evals": "Qiymətləndirmələr", "search": "Axtarış", - "utilization": "Utilization", + "utilization": "İstifadə səviyyəsi", "routeTrace": "Marşrut izləmə", "sectionsAria": "Analitika bölmələri", - "utilizationDescription": "Provider quota usage trends and rate limit tracking", - "modelStatus": "Model Status", - "modelStatusCooldown": "Cooldown", - "modelStatusUnavailable": "Unavailable", - "modelStatusError": "Error", - "comboHealth": "Combo Health", - "comboHealthDescription": "Combo-level quota, usage distribution, and performance metrics", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "utilizationDescription": "Provayder kvotasından istifadə tendensiyaları və sorğu tezliyi limitinin izlənməsi", + "modelStatus": "Model statusu", + "modelStatusCooldown": "Gözləmə müddəti", + "modelStatusUnavailable": "Əlçatan deyil", + "modelStatusError": "Xəta", + "comboHealth": "Kombinasiyanın vəziyyəti", + "comboHealthDescription": "Kombinasiya səviyyəsində kvota, istifadə bölgüsü və performans göstəriciləri", + "compressionAnalyticsTitle": "Sıxılma analitikası", + "compressionAnalyticsDescription": "Sıxılma analitikası — token qənaəti, rejim bölgüsü və provayder statistikası.", "autoRoutingTotalAutoRequests": "Ümumi Avto İstəklər", "autoRoutingAvgSelectionScore": "Orta Seçim Balı", "autoRoutingExplorationRate": "Kəşfiyyat dərəcəsi", - "autoRoutingLkgpHitRate": "LKGP Hit Rate", + "autoRoutingLkgpHitRate": "LKGP uyğunluq nisbəti", "autoRoutingRequestsByVariant": "Variant tərəfindən sorğular", "autoRoutingTopRoutedProviders": "Ən Yönləndirilmiş Provayderlər", "comboHealthWorstQuotaLeft": "Ən pis kvota qalıb", @@ -2094,7 +2094,7 @@ "comboHealthExecutionTargetsDescription": "Strukturlaşdırılmış kombo hədəfləri üçün addım səviyyəsində icra vaxtı metrikləri və kvota görünürlüyü.", "comboHealthRequestShort": "{count} sorğu", "comboHealthQuotaScope": "Kvota sahəsi: {scope}", - "comboHealthTrendValue": "Trend: {trend}", + "comboHealthTrendValue": "Tendensiya: {trend}", "comboHealthFetchFailed": "Kombo sağlamlıq məlumatlarını əldə etmək mümkün olmadı", "unknownError": "Naməlum xəta", "comboHealthIntro": "Kombo üzrə kvota təzyiqini, qeyri-bərabər model istifadəsini və çatdırılma performansını izləyin.", @@ -2110,7 +2110,7 @@ "compressionAnalyticsAvgSavings": "Orta qənaət", "compressionAnalyticsAvgDuration": "Orta Müddət", "compressionAnalyticsReceipts": "Qəbzlər", - "compressionAnalyticsFallbacks": "Fallbacks", + "compressionAnalyticsFallbacks": "Ehtiyat keçidlər", "compressionAnalyticsPromptTokens": "Tez işarələr", "compressionAnalyticsCompletionTokens": "Tamamlama nişanları", "compressionAnalyticsTotalTokens": "Ümumi tokenlər", @@ -2137,7 +2137,7 @@ "compressionAnalyticsStartTracking": "Sıxılma analitikasını izləməyə başlamaq üçün sıxılma konfiqurasiyası ilə POST /v1/chat/completions istifadə edin.", "compressionAnalyticsInfo": "Sıxılma analitikası: Token qənaəti rejim (off, lite, standard, aggressive, ultra, RTK, stacked), mühərrik, sıxılma kombosu və provayder üzrə izlənilir. Təfərrüatlar üçün kursoru qrafiklərin üzərinə gətirin. Fərqli vaxt dövrlərinə baxmaq üçün vaxt seçicisindən istifadə edin.", "searchAnalyticsTotalSearches": "Ümumi Axtarışlar", - "searchAnalyticsCacheHitRate": "Cache Hit Rate", + "searchAnalyticsCacheHitRate": "Keş uyğunluq nisbəti", "searchAnalyticsTotalCost": "Ümumi Xərc", "searchAnalyticsAvgResponse": "Orta Cavab", "searchAnalyticsNoSearchesYet": "Hələ axtarış yoxdur", @@ -2188,7 +2188,7 @@ "routeRuntimeScoreNow": "Hazırkı runtime xalı", "routeWouldSelectNow": "İndi seçərdi", "routeNoRecomputeCandidates": "Bu sorğu üçün heç bir kombo namizəd sıralaması yenidən hesablana bilməz.", - "runtime": "Runtime", + "runtime": "İcra mühiti", "routeTopNow": "İndi ən yaxşı", "routeFetchLogsFailed": "Sorğu jurnallarını əldə etmək mümkün olmadı", "routeExplainFailed": "Marşrutu izah etmək mümkün olmadı", @@ -2210,7 +2210,7 @@ "combo": "Kombo", "routeStep": "Addım", "tokens": "Tokenlər", - "notAvailable": "n/a", + "notAvailable": "m/y", "routeTokenCounts": "{input} giriş · {output} çıxış", "routeEvidence": "Sübut", "routeFactors": "Marşrutlaşdırma amilləri", @@ -2237,55 +2237,55 @@ "freeTierAvailable": "Pulsuz səviyyə mövcuddur" }, "apiManager": { - "title": "API Keys", - "createKey": "Create API Key", - "key": "Key", - "revokeKey": "Revoke Key", - "revokeConfirm": "Are you sure you want to revoke this API key?", - "noKeys": "No API keys yet", - "noKeysDesc": "Create your first API key to authenticate requests to your endpoint", - "keyLabel": "Key Label", - "permissions": "Permissions", - "expiresAt": "Expires", - "never": "Never", - "revoke": "Revoke", - "showKey": "Show Key", - "hideKey": "Hide Key", - "copyKey": "Copy API Key", - "allModels": "All models", - "selectedModels": "Selected Models", - "readOnly": "Read Only", - "fullAccess": "Full Access", - "keyManagement": "API Key Management", - "keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "title": "API açarları", + "createKey": "API açarı yarat", + "key": "Açar", + "revokeKey": "Açarı ləğv et", + "revokeConfirm": "Bu API açarını ləğv etmək istədiyinizə əminsiniz?", + "noKeys": "Hələ heç bir API açarı yoxdur", + "noKeysDesc": "Endpoint-inizə göndərilən sorğuların autentifikasiyası üçün ilk API açarınızı yaradın", + "keyLabel": "Açar etiketi", + "permissions": "İcazələr", + "expiresAt": "Etibarlılıq müddəti", + "never": "Heç vaxt", + "revoke": "Ləğv et", + "showKey": "Açarı göstər", + "hideKey": "Açarı gizlət", + "copyKey": "API açarını kopyala", + "allModels": "Bütün modellər", + "selectedModels": "Seçilmiş modellər", + "readOnly": "Yalnız oxuma", + "fullAccess": "Tam giriş", + "keyManagement": "API açarlarının idarə edilməsi", + "keyManagementDesc": "Endpoint-inizə göndərilən sorğuların autentifikasiyası üçün API açarları yaradın və idarə edin", + "requestFlowAria": "Tətbiqiniz sorğuları API açarı vasitəsilə OmniRoute-a göndərir", + "requestFlowYourApp": "Tətbiqiniz", + "requestFlowApiKey": "API açarı", "requestFlowOmniRoute": "OmniRoute", - "totalKeys": "Total Keys", - "restricted": "Restricted", - "totalRequests": "Total Requests", - "modelsAvailable": "Models Available", - "registeredKeys": "Registered Keys", - "keysRegistered": "{count} keys registered", - "keyRegistered": "{count} key registered", - "keysSecurityNote": "Each key isolates usage tracking and can be revoked independently. Keys are masked after creation for security.", - "createFirstKey": "Create Your First Key", - "name": "Name", - "usage": "Usage", - "created": "Created", - "actions": "Actions", - "reqs": "reqs", - "neverUsed": "Never used", - "deleteConfirm": "Delete this API key?", - "usageTips": "Usage Tips", - "tipAuth": "Use API keys in the Authorization header as Bearer YOUR_KEY", - "tipSecure": "Keys are only shown once during creation — store them securely", - "tipSeparate": "Create separate keys for different clients or environments", - "tipRestrict": "Restrict keys to specific models for better security and cost control", - "keyName": "Key Name", - "keyNamePlaceholder": "e.g. Production Key", - "keyNameDesc": "Choose a descriptive name to identify this key's purpose", + "totalKeys": "Ümumi açar sayı", + "restricted": "Məhdudlaşdırılmış", + "totalRequests": "Ümumi sorğu sayı", + "modelsAvailable": "Mövcud modellər", + "registeredKeys": "Qeydiyyatdan keçmiş açarlar", + "keysRegistered": "{count} açar qeydiyyatdan keçib", + "keyRegistered": "{count} açar qeydiyyatdan keçib", + "keysSecurityNote": "Hər açar istifadə izləməsini ayrıca saxlayır və müstəqil şəkildə ləğv edilə bilər. Təhlükəsizlik məqsədilə açarlar yaradıldıqdan sonra maskalanır.", + "createFirstKey": "İlk açarınızı yaradın", + "name": "Ad", + "usage": "İstifadə", + "created": "Yaradılma tarixi", + "actions": "Əməliyyatlar", + "reqs": "sorğu", + "neverUsed": "Heç vaxt istifadə edilməyib", + "deleteConfirm": "Bu API açarı silinsin?", + "usageTips": "İstifadə məsləhətləri", + "tipAuth": "API açarlarını Authorization başlığında Bearer YOUR_KEY formatında istifadə edin", + "tipSecure": "Açarlar yaradılarkən yalnız bir dəfə göstərilir — onları təhlükəsiz şəkildə saxlayın", + "tipSeparate": "Müxtəlif müştərilər və ya mühitlər üçün ayrıca açarlar yaradın", + "tipRestrict": "Daha yaxşı təhlükəsizlik və xərc nəzarəti üçün açarları konkret modellərlə məhdudlaşdırın", + "keyName": "Açarın adı", + "keyNamePlaceholder": "məs., İstehsal açarı", + "keyNameDesc": "Bu açarın təyinatını müəyyən etmək üçün açıqlayıcı ad seçin", "managementAccessDesc": "Bu API açarına OmniRoute konfiqurasiyasını idarə etməyə icazə ver.", "selfServiceVisibility": "Özünəxidmət görünürlüğü", "selfServiceVisibilityDesc": "Bu açarın öz istifadəsi və paylaşılan yuxarı axın kvotası haqqında nələri görə biləcəyini idarə edin.", @@ -2296,83 +2296,83 @@ "localUsageCommand": "Yerli istifadə əmrinə icazə verin", "localUsageCommandDesc": "Bu API açarına yuxarı axın provayderinə müraciət etmədən keşlənmiş istifadə və kvota məlumatlarını əldə etmək üçün @@om-usage istifadə etməyə icazə verir.", "localUsageCommandBadge": "İstifadə əmri", - "keyCreated": "API Key Created", - "keyCreatedSuccess": "Key created successfully!", - "keyCreatedNote": "Copy and store this key now — it won't be shown again.", - "done": "Done", - "savePermissions": "Save Permissions", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "keyCreated": "API açarı yaradıldı", + "keyCreatedSuccess": "Açar uğurla yaradıldı!", + "keyCreatedNote": "Bu açarı indi kopyalayıb saxlayın — bir daha göstərilməyəcək.", + "done": "Hazırdır", + "savePermissions": "İcazələri yadda saxla", + "endpointRestrictions": "İcazə verilən son nöqtələr", + "allEndpointsAllowed": "Bu açar bütün API son nöqtələrinə daxil ola bilər.", + "endpointsRestricted": "{count} son nöqtə{count, plural, one {} other {s}} ilə məhdudlaşdırılıb.", + "autoResolve": "Avtomatik müəyyənləşdirmə", + "autoResolveDesc": "Bu API açarı üçün qeyri-müəyyən model adlarını avtomatik olaraq yerli provayderə uyğunlaşdırın.", "streamDefaultMode": "Stream standart uyğunluğu", "streamDefaultModeDesc": "Bu açar üçün buraxılmış `stream` bayraqlarına nəzarət edir. JSON rejimi müştəri açıq şəkildə SSE tələb etmədiyi təqdirdə qeyri-stream cavablar qaytarır.", "streamDefaultLegacy": "Köhnə", "streamDefaultJson": "JSON uyğun", "streamDefaultBadge": "JSON stream standartı", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", - "allowAll": "Allow All", - "restrict": "Restrict", - "allowAllInfo": "This key can access all available models.", - "restrictInfo": "This key can access {selected} of {total} models.", - "selected": "{count} selected", - "all": "All", - "clear": "Clear", - "searchModels": "Search models by name or provider...", - "noModelsFound": "No models found", - "keyNameRequired": "Key name is required", - "keyNameTooLong": "Key name must be {max} characters or less", - "keyNameInvalid": "Key name can only contain letters, numbers, spaces, hyphens, and underscores", - "invalidKeyName": "Invalid key name", - "failedCreateKey": "Failed to create key", - "failedCreateKeyRetry": "Failed to create key. Please try again.", - "invalidKeyId": "Invalid key ID", - "failedDeleteKey": "Failed to delete key", - "failedDeleteKeyRetry": "Failed to delete key. Please try again.", - "invalidModelsSelection": "Invalid models selection", - "cannotSelectMoreThanModels": "Cannot select more than {max} models", - "failedUpdatePermissions": "Failed to update permissions", - "failedUpdatePermissionsRetry": "Failed to update permissions. Please try again.", - "unknownProvider": "unknown", - "copyMaskedKey": "Copy masked key", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyActive": "Açar aktivdir", + "keyActiveDesc": "Bu API açarını aktivləşdirin və ya deaktiv edin. Deaktiv edilmiş açarlar dərhal 403 xətası ilə rədd edilir.", + "accessSchedule": "Giriş cədvəli", + "accessScheduleDesc": "Girişi həftənin müəyyən saatları və günləri ilə məhdudlaşdırın.", + "scheduleFrom": "Başlanğıc", + "scheduleUntil": "Qədər", + "scheduleDays": "Günlər", + "scheduleTimezone": "Saat qurşağı", + "scheduleTimezoneHint": "IANA saat qurşağı adlarından istifadə edin, məsələn, America/New_York, Europe/Berlin", + "scheduleActive": "Cədvəl", + "disabled": "Deaktiv edilib", + "daySun": "Baz", + "dayMon": "B.e.", + "dayTue": "Ç.a.", + "dayWed": "Ç.", + "dayThu": "C.a.", + "dayFri": "C.", + "daySat": "Ş.", + "allowAll": "Hamısına icazə ver", + "restrict": "Məhdudlaşdır", + "allowAllInfo": "Bu açar bütün mövcud modellərə daxil ola bilər.", + "restrictInfo": "Bu açar {total} modeldən {selected} modelə daxil ola bilər.", + "selected": "{count} seçilib", + "all": "Hamısı", + "clear": "Təmizlə", + "searchModels": "Modelləri ada və ya provayderə görə axtarın...", + "noModelsFound": "Heç bir model tapılmadı", + "keyNameRequired": "Açarın adı tələb olunur", + "keyNameTooLong": "Açarın adı ən çox {max} simvoldan ibarət olmalıdır", + "keyNameInvalid": "Açarın adında yalnız hərflər, rəqəmlər, boşluqlar, defislər və alt xətlər ola bilər", + "invalidKeyName": "Açarın adı etibarsızdır", + "failedCreateKey": "Açarı yaratmaq alınmadı", + "failedCreateKeyRetry": "Açarı yaratmaq alınmadı. Yenidən cəhd edin.", + "invalidKeyId": "Açar ID-si etibarsızdır", + "failedDeleteKey": "Açarı silmək alınmadı", + "failedDeleteKeyRetry": "Açarı silmək alınmadı. Yenidən cəhd edin.", + "invalidModelsSelection": "Model seçimi etibarsızdır", + "cannotSelectMoreThanModels": "{max} modeldən çox seçmək olmaz", + "failedUpdatePermissions": "İcazələri yeniləmək alınmadı", + "failedUpdatePermissionsRetry": "İcazələri yeniləmək alınmadı. Yenidən cəhd edin.", + "unknownProvider": "naməlum", + "copyMaskedKey": "Maskalanmış açarı kopyala", + "keyOnlyAvailableAtCreation": "Tam açar yalnız yaradılma zamanı əlçatan olur — açarı ilk dəfə yaratdığınız zaman onu kopyalayın", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# cihaz} other {# cihaz}}", "devicesTooltip": "{count, plural, one {bu açarla görünən # fərqli IP/User-Agent cihazı (son 30 dəq)} other {bu açarla görünən # fərqli IP/User-Agent cihazı (son 30 dəq)}}", - "lastUsedOn": "Last: {date}", + "lastUsedOn": "Son: {date}", "viewCostsFor": "{name} üçün xərclərə baxın", - "editPermissions": "Edit permissions", - "deleteKey": "Delete key", - "regenerateKey": "Regenerate key", - "regenerateConfirm": "Are you sure you want to regenerate this API key? The old key will be immediately invalidated.", - "failedRegenerateKey": "Failed to regenerate API key", - "failedRegenerateKeyRetry": "Failed to regenerate API key. Please try again.", + "editPermissions": "İcazələri redaktə et", + "deleteKey": "Açarı sil", + "regenerateKey": "Açarı yenidən yarat", + "regenerateConfirm": "Bu API açarını yenidən yaratmaq istədiyinizə əminsiniz? Köhnə açar dərhal etibarsız olacaq.", + "failedRegenerateKey": "API açarını yenidən yaratmaq alınmadı", + "failedRegenerateKeyRetry": "API açarını yenidən yaratmaq alınmadı. Lütfən, yenidən cəhd edin.", "model": "{count} model", - "models": "{count} models", - "permissionsTitle": "Permissions: {name}", - "allowAllDesc": "This key can access all available models.", + "models": "{count} model", + "permissionsTitle": "İcazələr: {name}", + "allowAllDesc": "Bu açar bütün mövcud modellərə daxil ola bilər.", "restrictLoading": "Model kataloqu yüklənir…", "restrictCatalogUnavailable": "Model kataloqu əlçatmazdır; bu açarda {selectedCount} seçilmiş model məhdudiyyəti var.", - "restrictDesc": "This key can access {selectedCount} of {totalModels} models.", - "selectedCount": "{count} selected", + "restrictDesc": "Bu açar {totalModels} modeldən {selectedCount} modelə daxil ola bilər.", + "selectedCount": "{count} seçilib", "maxActiveSessions": "Maksimum Aktiv Sessiyalar", "maxActiveSessionsDescription": "0 = limitsiz. Bu açar eyni vaxtda olan sticky seansları keçdikdə 429 qaytarın.", "throttleDelay": "Throttle gecikməsi", @@ -2382,8 +2382,8 @@ "allowedCombos": "İcazə verilən kombinasiyalar", "allCombosAllowed": "Bu açar istənilən kombinasiyanı istifadə edə bilər.", "restrictedComboCount": "{count, plural, one {# kombinasiya} other {# kombinasiya}} ilə məhdudlaşdırılıb.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "Bu kombinasiya siyahısında olmayan {count, plural, one {# saxlanmış qeyd} other {# saxlanmış qeyd}} (məsələn, marşrutlaşdırma qaydaları) saxlanıldığı kimi qorunacaq.", + "preservedComboRuleHint": "Saxlanıldığı kimi qorunur. Bu qeyd yuxarıdakı siyahıda yer alan kombinasiya deyil, buna görə də yalnız API vasitəsilə dəyişdirilə bilər.", "apiManagerCustomRateLimits": "Fərdi tarif limitləri", "apiManagerCustomRateLimitsDesc": "Qlobal standart limitləri ləğv edin. Defoltları istifadə etmək üçün boş buraxın.", "apiManagerRateLimitRequestsPlaceholder": "Sorğular", @@ -2399,7 +2399,7 @@ "allowedConnections": "İcazəli Bağlantılar", "searchPlaceholder": "Ad və ya tokenlə axtarın...", "activeOnly": "Yalnız aktivlər", - "filterStatus": "STATUS", + "filterStatus": "VƏZİYYƏT", "filterType": "NÖV", "filterAll": "Hamısı", "filterStatusActive": "Aktiv", @@ -2420,53 +2420,53 @@ "bypassProviderQuotaDescription": "Bu açara marşrutlaşdırma zamanı yuxarı provayder/hesab məhdudiyyət siyasətinə məhəl qoymamağa icazə verir. API açarı USD kvotaları hələ də tətbiq olunur.", "quotaPill": "KVOTA", "quotaModeOnly": "Yalnız qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Eksklüziv icarə", + "exclusiveLeaseNoticeTitle": "Eksklüziv icarə", + "exclusiveLeaseNoticeDesc": "Bu API açarı xüsusi bağlantı marşrutlaşdırması üçün eksklüziv icarə icazələrinə malikdir.", + "allConnections": "Bütün bağlantılar", + "onlySelectedConnections": "Yalnız seçilmiş bağlantılar", + "selectAtLeastOneConnection": "Ən azı bir bağlantı seçin və ya Bütün bağlantılar seçimini edin.", + "allConnectionsDesc": "Bu açar istənilən aktiv bağlantıdan istifadə edə bilər.", + "restrictedToConnections": "{count, plural, one {# bağlantı} other {# bağlantı}} ilə məhdudlaşdırılıb." }, "auditLog": { - "title": "Audit Log", - "searchPlaceholder": "Search actions...", - "action": "Action", - "actor": "Actor", - "target": "Target", - "ipAddress": "IP Address", - "timestamp": "Timestamp", - "noEntries": "No audit entries found", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", + "title": "Audit jurnalı", + "searchPlaceholder": "Əməliyyatları axtarın...", + "action": "Əməliyyat", + "actor": "İcraçı", + "target": "Hədəf", + "ipAddress": "IP ünvanı", + "timestamp": "Vaxt möhürü", + "noEntries": "Audit qeydi tapılmadı", + "filterByAction": "Əməliyyata görə filtrləyin...", + "filterByActor": "İcraçıya görə filtrləyin...", + "filterEntriesAria": "Audit jurnalı qeydlərini filtrləyin", + "filterByActionTypeAria": "Əməliyyat növünə görə filtrləyin", + "filterByActorAria": "İcraçıya görə filtrləyin", + "refreshAuditLogAria": "Audit jurnalını yeniləyin", + "tableAria": "Audit jurnalı qeydləri", + "failedFetchAuditLog": "Audit jurnalını əldə etmək alınmadı", "notAvailable": "—", - "description": "Administrative actions and security events", - "showing": "Showing {count} entries (offset {offset})", - "previous": "Previous" + "description": "İnzibati əməliyyatlar və təhlükəsizlik hadisələri", + "showing": "{count} qeyd göstərilir (ofset {offset})", + "previous": "Əvvəlki" }, "media": { - "title": "Media Playground", - "subtitle": "Generate images, videos, and music", + "title": "Media Sınaq Meydanı", + "subtitle": "Şəkillər, videolar və musiqi yaradın", "model": "Model", "prompt": "Prompt", - "generate": "Generate", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generate": "Yarat", + "generating": "Yaradılır...", + "loadingModels": "Mövcud modellər yüklənir...", + "noModels": "Heç bir model mövcud deyil. Əvvəlcə media imkanlarına malik provayderləri konfiqurasiya edin.", + "error": "Yaratma uğursuz oldu", + "result": "Nəticə", + "imageDescription": "OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI və digər vasitələrdən istifadə edərək mətn sorğuları əsasında şəkillər yaradın.", + "videoDescription": "ComfyUI və ya SD WebUI vasitəsilə AnimateDiff, Stable Video Diffusion ilə videolar yaradın.", + "musicDescription": "ComfyUI vasitəsilə Stable Audio Open və ya MusicGen istifadə edərək musiqi bəstələyin.", "kinds": { - "embedding": "Embedding", + "embedding": "Vektor təqdimatı", "image": "Şəkil", "imageToText": "Şəkildən mətnə", "tts": "Mətndən nitqə", @@ -2542,114 +2542,114 @@ "openrouterSttDescription": "OpenRouter nitqdan mətbəx modelləri sizin konfiqurasiya edilmiş OpenRouter bağlantınızı istifadə edir. Ayrı bir etimadnaməyə ehtiyac yoxdur." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Axtarış sorğusu", + "searchResults": "Axtarış nəticələri", + "cachedResult": "Keşlənib", + "searchCost": "Xərc", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Provayderlərin müqayisəsi ilə təkmil axtarış sınağı", + "compareProviders": "Provayderləri müqayisə et", + "rerankResults": "Nəticələri yenidən sırala", + "searchHistory": "Axtarış tarixçəsi", + "urlOverlap": "URL üst-üstə düşməsi", + "noSearchProviders": "Heç bir axtarış provayderi konfiqurasiya edilməyib. Parametrlərdə provayderlər əlavə edin.", + "noRerankModels": "Yenidən sıralama modeli mövcud deyil", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Provayder", + "searchType": "Axtarış növü", + "maxResults": "Maksimum nəticə sayı", + "filters": "Filtrlər", + "country": "Ölkə", + "language": "Dil", + "timeRange": "Vaxt aralığı", + "includeDomains": "Daxil ediləcək domenlər", + "excludeDomains": "İstisna ediləcək domenlər", + "safeSearch": "Təhlükəsiz axtarış", + "safeSearchOff": "Söndürülüb", + "safeSearchModerate": "Orta", + "safeSearchStrict": "Sərt", + "queryPlaceholder": "Axtarış sorğusunu daxil edin...", + "providerAuto": "avtomatik (ən ucuz)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "xəbərlər", + "optionAny": "istənilən", + "timeRangeDay": "Son gün", + "timeRangeWeek": "Son həftə", + "timeRangeMonth": "Son ay", + "timeRangeYear": "Son il", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Sorğunun vaxtı bitdi ({seconds}s)", + "networkError": "Şəbəkə xətası", + "formatted": "Formatlanmış", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "keşdə yoxdur", + "cacheHit": "keşdə var", + "latency": "Gecikmə", + "cost": "Xərc", + "results": "Nəticələr", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Yenidən sıralama modeli", + "positionDelta": "Mövqe dəyişikliyi", + "emptyState": "Nəticələri görmək üçün axtarış sorğusu göndərin", "copy": "Kopyalayın", "resetToDefault": "Standarta sıfırlayın", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Axtarış", + "tabScrape": "Məzmunu çıxar", + "tabCompare": "Müqayisə", + "modalitiesGuide": "Rejimlər üzrə bələdçi", + "searchConceptTitle": "Axtarış", + "searchConceptDesc": "Axtarış = veb-nəticələrin siyahısını əldə edir (başlıq, URL, fraqment, uyğunluq xalı)", + "scrapeConceptTitle": "Məzmunu çıxar", + "scrapeConceptDesc": "Məzmunu çıxar = URL-in tam məzmununu çıxarır (markdown, mətn və ya HTML)", + "compareConceptTitle": "Müqayisə", + "compareConceptDesc": "Müqayisə = gecikməni, xərci və nəticələrin üst-üstə düşməsini müqayisə etmək üçün eyni sorğunu N provayder üzrə paralel icra edir", + "rerankConceptTitle": "Yenidən sırala", + "rerankConceptDesc": "Yenidən sırala = sorğu əsasında uyğunluğu yaxşılaşdırmaq üçün nəticələrin sırasını LLM vasitəsilə dəyişir", + "autoConceptTitle": "Avtomatik (ən ucuz)", + "autoConceptDesc": "Avtomatik (ən ucuz) = konfiqurasiya edilmiş giriş məlumatları olan mövcud provayderlərdən ən ucuzunu avtomatik seçir", + "providerCatalogTitle": "Provayder kataloqu", + "kindSearch": "Axtarış", + "kindFetch": "Əldə et/Məzmunu çıxar", + "statusConfigured": "Konfiqurasiya edilib", + "statusMissing": "Giriş məlumatı yoxdur", + "statusRateLimited": "Sorğu tezliyi məhdudlaşdırılıb", + "configureProvider": "Provayderlərdə konfiqurasiya edin", + "loadingProviders": "Provayderlər yüklənir…", + "failedToLoadProviders": "Provayderləri yükləmək mümkün olmadı", + "costPerQuery": "Sorğu başına xərc", + "freeQuota": "Pulsuz kvota/ay", + "scrapeUrl": "Məlumat çıxarılacaq URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL tələb olunur", "scrapeUrlInvalid": "Yanlış URL — http:// və ya https:// ilə başlamalıdır", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", + "scrapeExtract": "Çıxar", + "scrapeExtracting": "Çıxarılır…", + "scrapeFullPage": "Tam səhifə", "scrapeFormat": "Format", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Mətn", + "scrapePreview": "Önizləmə", + "scrapeRaw": "Xam", + "scrapeContentTruncated": "(qısaldılıb, xam versiyaya baxın)", + "scrapeMetadata": "Metaməlumat", + "scrapeProvider": "Provayder", + "scrapeSize": "Ölçü", "scrapeEmptyState": "Məzmununu çıxarmaq üçün URL daxil edin", "scrapeProvidersAvailable": "Mövcud provayderlər: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Müqayisə et", + "compareRunning": "Müqayisə edilir…", + "autoProvider": "Avtomatik (ən ucuz)", + "configuredStatus": "Konfiqurasiya edilib", + "rateLimitedStatus": "Sorğu limiti tətbiq edilib", + "noCredential": "Giriş məlumatı yoxdur", + "searchTypeLabel": "Növ", + "rerankModelLabel": "Yenidən sıralama modeli", + "noneOption": "Heç biri", + "size": "Ölçü", "configurationPane": "Konfiqurasiya paneli", "configuration": "Konfiqurasiya", - "status": "Status", + "status": "Vəziyyət", "compareProviderHint": "Onları yanaşı müqayisə etmək üçün Müqayisə tabında 4-ə qədər provayder seçin.", "history": "Tarixçə", "historyHint": "Tarixçə Axtarış tabında mövcuddur.", @@ -2664,7 +2664,7 @@ "httpError": "Xəta {status}", "failed": "Uğursuz oldu", "requestFailed": "Sorğu uğursuz oldu", - "embedding": "Embedding", + "embedding": "Vektorlaşdırma", "embeddingSample": "Salam, dünya!", "image": "Şəkil", "imageSample": "Qürub çağında dağlar olan sakit mənzərə", @@ -2701,7 +2701,7 @@ "compareEmptyDescription": "Nəticələr gecikmə, xərc və URL üst-üstə düşməsi ilə yanaşı göstəriləcək" }, "cliTools": { - "title": "CLI Tools", + "title": "CLI alətləri", "classifierCompatTitle": "Avtomatik icazə təsnifatçısı uyğunluğu", "classifierCompatDescription": "Ehtiyat marşrutların qapalı vəziyyətdə xəta verməməsi üçün Claude Code-un --permission-mode auto təhlükəsizlik təsnifatçısını sintetik icazə cavabı ilə yan keçin. Standart olaraq qeyri-aktivdir.", "classifierCompatCycle": "Dövr: qeyri-aktiv → avtomatik → həmişə", @@ -2727,14 +2727,14 @@ "codexProfilesDescription": "Model aşkar edildikdən sonra ~/.codex/*.config.toml faylını yenidən yaradın.", "claudeProfiles": "Claude Code profilləri", "claudeProfilesDescription": "Model aşkar edildikdən sonra hər bir ~/.claude/profiles/…/settings.json faylını yenidən yaradın.", - "noActiveProviders": "No active providers", - "noActiveProvidersDesc": "Please add and connect providers first to configure CLI tools.", - "mapModels": "Map Models", - "testConnection": "Test Connection", - "connectionStatus": "Connection Status", - "configureEndpoint": "Configure Endpoint", - "instructions": "Instructions", - "modelMapping": "Model Mapping", + "noActiveProviders": "Aktiv provayder yoxdur", + "noActiveProvidersDesc": "CLI alətlərini konfiqurasiya etmək üçün əvvəlcə provayderlər əlavə edib qoşun.", + "mapModels": "Modelləri uyğunlaşdır", + "testConnection": "Bağlantını sına", + "connectionStatus": "Bağlantı statusu", + "configureEndpoint": "Son nöqtəni konfiqurasiya et", + "instructions": "Təlimatlar", + "modelMapping": "Model uyğunlaşdırılması", "reasoningEffort": "{model} üçün mühakimə səyi", "effortNone": "Yoxdur", "effortLow": "Aşağı", @@ -2747,62 +2747,62 @@ "modelAliases": "Model aliasları", "addModel": "Model əlavə et", "routeModelPlaceholder": "{model} modelini yönləndir...", - "baseUrl": "Base URL", - "apiKey": "API Key", - "configured": "Configured", - "notConfigured": "Not configured", - "notInstalled": "Not installed", - "custom": "Custom", - "unknown": "Unknown", - "lastSavedAt": "Last saved: {date}", - "never": "Never", - "justNow": "just now", - "minutesAgoShort": "{count}m ago", - "hoursAgoShort": "{count}h ago", - "daysAgoShort": "{count}d ago", - "monthsAgoShort": "{count}mo ago", - "yearsAgoShort": "{count}y ago", - "runtimeCheckFailed": "Runtime check failed", + "baseUrl": "Baza URL-i", + "apiKey": "API açarı", + "configured": "Konfiqurasiya edilib", + "notConfigured": "Konfiqurasiya edilməyib", + "notInstalled": "Quraşdırılmayıb", + "custom": "Fərdi", + "unknown": "Naməlum", + "lastSavedAt": "Son saxlanma: {date}", + "never": "Heç vaxt", + "justNow": "indicə", + "minutesAgoShort": "{count} dəq. əvvəl", + "hoursAgoShort": "{count} saat əvvəl", + "daysAgoShort": "{count} gün əvvəl", + "monthsAgoShort": "{count} ay əvvəl", + "yearsAgoShort": "{count} il əvvəl", + "runtimeCheckFailed": "İcra mühiti yoxlaması uğursuz oldu", "yourApiKeyPlaceholder": "your-api-key", "modelPlaceholder": "provider/model-id", - "configurationSaved": "Configuration saved successfully.", - "failedToSave": "Failed to save configuration.", - "noApiKeysCreateOne": "No API keys - Create one in Keys page", - "defaultOmnirouteKey": "sk_omniroute (default)", - "selectModel": "Select Model", - "selectModelForAlias": "Select model for {alias}", - "selectModelForTool": "Select Model for {tool}", - "select": "Select", - "clear": "Clear", - "comingSoon": "Coming soon", - "checkingRuntime": "Checking runtime status...", - "guideOnlyIntegration": "Guide-only integration (no local runtime required)", - "cliRuntimeDetected": "CLI runtime detected and ready", - "cliFoundNotRunnable": "CLI found but not runnable{reason}", - "cliRuntimeNotDetected": "CLI runtime not detected", - "binary": "Binary", - "configPath": "Config path", - "configPathShort": "Config", - "failedCheckRuntimeStatus": "Failed to check runtime status.", - "copy": "Copy", - "copied": "Copied", - "copyConfig": "Copy Config", - "saveConfig": "Save Config", - "selectionSaved": "Selection saved", - "guide": "Guide", - "detected": "Detected", - "notReady": "Not ready", - "active": "Active", - "inactive": "Inactive", + "configurationSaved": "Konfiqurasiya uğurla saxlanıldı.", + "failedToSave": "Konfiqurasiyanı saxlamaq mümkün olmadı.", + "noApiKeysCreateOne": "API açarı yoxdur — Açarlar səhifəsində yaradın", + "defaultOmnirouteKey": "sk_omniroute (standart)", + "selectModel": "Model seçin", + "selectModelForAlias": "{alias} üçün model seçin", + "selectModelForTool": "{tool} üçün model seçin", + "select": "Seçin", + "clear": "Təmizlə", + "comingSoon": "Tezliklə", + "checkingRuntime": "İcra mühitinin statusu yoxlanılır...", + "guideOnlyIntegration": "Yalnız təlimat üzrə inteqrasiya (lokal icra mühiti tələb olunmur)", + "cliRuntimeDetected": "CLI icra mühiti aşkarlandı və hazırdır", + "cliFoundNotRunnable": "CLI tapıldı, lakin işə salına bilmir{reason}", + "cliRuntimeNotDetected": "CLI icra mühiti aşkar edilmədi", + "binary": "Binar fayl", + "configPath": "Konfiqurasiya yolu", + "configPathShort": "Konfiqurasiya", + "failedCheckRuntimeStatus": "İcra mühiti statusunu yoxlamaq alınmadı.", + "copy": "Kopyala", + "copied": "Kopyalandı", + "copyConfig": "Konfiqurasiyanı kopyala", + "saveConfig": "Konfiqurasiyanı yadda saxla", + "selectionSaved": "Seçim yadda saxlanıldı", + "guide": "Təlimat", + "detected": "Aşkarlandı", + "notReady": "Hazır deyil", + "active": "Aktiv", + "inactive": "Qeyri-aktiv", "startMitm": "Start MITM", "stopMitm": "Stop MITM", - "mitmStarted": "MITM started successfully!", - "mitmStopped": "MITM stopped successfully!", - "failedStart": "Failed to start MITM", - "failedStop": "Failed to stop MITM", - "saveMappings": "Save Mappings", - "mappingsSaved": "Mappings saved!", - "failedSaveMappings": "Failed to save mappings", + "mitmStarted": "MITM uğurla başladıldı!", + "mitmStopped": "MITM uğurla dayandırıldı!", + "failedStart": "MITM-i başlatmaq alınmadı", + "failedStop": "MITM-i dayandırmaq alınmadı", + "saveMappings": "Xəritələndirmələri yadda saxla", + "mappingsSaved": "Xəritələndirmələr yadda saxlanıldı!", + "failedSaveMappings": "Xəritələndirmələri yadda saxlamaq alınmadı", "reasoningEffortDefault": "Standart", "reasoningEffortHint": "Standart seçim agent tərəfindən göndərilən mühakimə səyini qoruyur", "reasoningEffortTier": { @@ -2812,130 +2812,130 @@ "high": "Yüksək", "xhigh": "XYüksək" }, - "howItWorks": "How it works:", - "antigravityHowWorksDesc": "Antigravity sends requests to Google's endpoint. MITM intercepts and redirects them to OmniRoute.", - "antigravityStep1": "1. Start MITM to route requests through OmniRoute.", - "antigravityStep2Prefix": "2. Add", - "antigravityStep2Suffix": "to your hosts file as 127.0.0.1.", - "antigravityStep3": "3. Open Antigravity and requests will be proxied.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", - "sudoPasswordRequiredTitle": "Sudo Password Required", - "sudoPasswordHint": "Administrator password is required to modify hosts file and system proxy settings.", - "enterSudoPassword": "Enter sudo password", - "sudoPasswordRequiredError": "Sudo password is required.", - "cancel": "Cancel", - "confirm": "Confirm", - "settingsApplied": "Settings applied successfully!", - "failedApplySettings": "Failed to apply settings", - "settingsReset": "Settings reset successfully!", - "failedResetSettings": "Failed to reset settings", - "backupRestored": "Backup restored!", - "failedRestore": "Failed to restore", - "checkingCli": "Checking {tool} CLI...", - "cliNotRunnable": "{tool} CLI installed but not runnable", - "cliNotInstalled": "{tool} CLI not installed", - "cliNotDetected": "{tool} CLI not detected", - "cliDetectedReady": "{tool} CLI detected and ready", - "cliFoundFailedHealthcheck": "{tool} CLI was found but failed runtime healthcheck{reason}.", - "installCliPrompt": "Please install {tool} CLI to use this feature.", - "installCodexPrompt": "Please install Codex CLI to use auto-apply feature.", - "hide": "Hide", - "howToInstall": "How to Install", - "installationGuide": "Installation Guide", + "howItWorks": "İş prinsipi:", + "antigravityHowWorksDesc": "Antigravity sorğuları Google-un son nöqtəsinə göndərir. MITM onları ələ keçirərək OmniRoute-a yönləndirir.", + "antigravityStep1": "1. Sorğuları OmniRoute vasitəsilə yönləndirmək üçün MITM-i başladın.", + "antigravityStep2Prefix": "2. Bunu", + "antigravityStep2Suffix": "hosts faylınıza 127.0.0.1 kimi əlavə edin.", + "antigravityStep3": "3. Antigravity-ni açın və sorğular proksi vasitəsilə ötürüləcək.", + "mitmHowWorksDesc": "{toolName} sorğuları öz provayderinin son nöqtəsinə göndərir. MITM onları ələ keçirərək OmniRoute-a yönləndirir.", + "mitmStep1": "1. Sorğuları OmniRoute vasitəsilə yönləndirmək üçün MITM-i başladın.", + "mitmStep2Prefix": "2. Bunu", + "mitmStep2Suffix": "hosts faylınıza 127.0.0.1 kimi əlavə edin.", + "mitmStep3": "3. {toolName} alətini açın və sorğular proksi vasitəsilə ötürüləcək.", + "sudoPasswordRequiredTitle": "Sudo parolu tələb olunur", + "sudoPasswordHint": "hosts faylını və sistem proksi parametrlərini dəyişdirmək üçün administrator parolu tələb olunur.", + "enterSudoPassword": "Sudo parolunu daxil edin", + "sudoPasswordRequiredError": "Sudo parolu tələb olunur.", + "cancel": "Ləğv et", + "confirm": "Təsdiq et", + "settingsApplied": "Parametrlər uğurla tətbiq edildi!", + "failedApplySettings": "Parametrləri tətbiq etmək alınmadı", + "settingsReset": "Parametrlər uğurla sıfırlandı!", + "failedResetSettings": "Parametrləri sıfırlamaq alınmadı", + "backupRestored": "Ehtiyat nüsxə bərpa edildi!", + "failedRestore": "Bərpa etmək alınmadı", + "checkingCli": "{tool} CLI yoxlanılır...", + "cliNotRunnable": "{tool} CLI quraşdırılıb, lakin işə salına bilmir", + "cliNotInstalled": "{tool} CLI quraşdırılmayıb", + "cliNotDetected": "{tool} CLI aşkarlanmadı", + "cliDetectedReady": "{tool} CLI aşkarlandı və hazırdır", + "cliFoundFailedHealthcheck": "{tool} CLI tapıldı, lakin icra mühiti sağlamlıq yoxlamasından keçmədi{reason}.", + "installCliPrompt": "Bu funksiyadan istifadə etmək üçün {tool} CLI-ni quraşdırın.", + "installCodexPrompt": "Avtomatik tətbiq funksiyasından istifadə etmək üçün Codex CLI-ni quraşdırın.", + "hide": "Gizlət", + "howToInstall": "Necə quraşdırmalı", + "installationGuide": "Quraşdırma təlimatı", "platforms": "macOS / Linux / Windows:", - "afterInstallationRun": "After installation, run", - "toVerify": "to verify.", - "current": "Current", + "afterInstallationRun": "Quraşdırmadan sonra yoxlamaq üçün", + "toVerify": "əmrini icra edin.", + "current": "Cari", "baseUrlPlaceholder": "https://.../v1", - "resetToDefault": "Reset to default", + "resetToDefault": "Standart vəziyyətə sıfırla", "providerModelPlaceholder": "provider/model-id", - "apply": "Apply", - "reset": "Reset", - "manualConfig": "Manual Config", - "backups": "Backups", - "configBackups": "Config Backups", - "noBackupsYet": "No backups yet. Backups are created automatically before each Apply or Reset.", - "restore": "Restore", - "backupRestoredReloading": "Backup restored! Reloading status...", - "failedRestoreBackup": "Failed to restore backup", - "applied": "Applied!", - "failed": "Failed", - "resetDone": "Reset!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute is configured as OpenAI-compatible provider", - "provider": "Provider", + "apply": "Tətbiq et", + "reset": "Sıfırla", + "manualConfig": "Əl ilə konfiqurasiya", + "backups": "Yedəklər", + "configBackups": "Konfiqurasiya yedəkləri", + "noBackupsYet": "Hələ heç bir yedək yoxdur. Hər Tətbiq et və ya Sıfırla əməliyyatından əvvəl yedəklər avtomatik yaradılır.", + "restore": "Bərpa et", + "backupRestoredReloading": "Yedək bərpa edildi! Status yenidən yüklənir...", + "failedRestoreBackup": "Yedəyi bərpa etmək alınmadı", + "applied": "Tətbiq edildi!", + "failed": "Uğursuz oldu", + "resetDone": "Sıfırlandı!", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute OpenAI ilə uyğun provayder kimi konfiqurasiya edilib", + "provider": "Provayder", "model": "Model", - "providers": "Providers", - "auth": "Auth", - "noApiKeysAvailable": "No API keys available", - "usingDefaultOmniroute": "Using default: sk_omniroute", - "updateConfig": "Update Config", - "applyConfig": "Apply Config", - "noBackupsAvailable": "No backups available.", - "profileSaved": "Profile \"{name}\" saved!", - "failedSaveProfile": "Failed to save profile", - "profileActivated": "Profile activated!", - "failedActivateProfile": "Failed to activate profile", - "profiles": "Profiles", - "savedProfiles": "Saved Profiles", - "noProfilesYet": "No profiles saved yet. Save current config as a profile below.", - "activate": "Activate", - "deleteProfile": "Delete profile", - "profileNamePlaceholder": "Profile name (e.g. Personal Account)", - "saveCurrent": "Save Current", - "codexAuthNotePrefix": "Codex uses", - "codexAuthNoteMiddle": "with", - "codexAuthNoteSuffix": "Click \"Apply\" to auto-configure.", - "claudeManualConfiguration": "Claude CLI - Manual Configuration", - "codexManualConfiguration": "Codex CLI - Manual Configuration", - "droidManualConfiguration": "Factory Droid - Manual Configuration", - "openClawManualConfiguration": "Open Claw - Manual Configuration", - "clineManualConfiguration": "Cline Manual Configuration", - "kiloManualConfiguration": "Kilo Code Manual Configuration", - "whenToUseLabel": "When to use", - "openToolDocs": "Open tool docs", + "providers": "Provayderlər", + "auth": "Autentifikasiya", + "noApiKeysAvailable": "Heç bir API açarı mövcud deyil", + "usingDefaultOmniroute": "Standart istifadə olunur: sk_omniroute", + "updateConfig": "Konfiqurasiyanı yenilə", + "applyConfig": "Konfiqurasiyanı tətbiq et", + "noBackupsAvailable": "Heç bir yedək mövcud deyil.", + "profileSaved": "\"{name}\" profili yadda saxlanıldı!", + "failedSaveProfile": "Profili yadda saxlamaq alınmadı", + "profileActivated": "Profil aktivləşdirildi!", + "failedActivateProfile": "Profili aktivləşdirmək mümkün olmadı", + "profiles": "Profillər", + "savedProfiles": "Yadda saxlanılmış profillər", + "noProfilesYet": "Hələ heç bir profil yadda saxlanılmayıb. Aşağıda cari konfiqurasiyanı profil kimi yadda saxlayın.", + "activate": "Aktivləşdir", + "deleteProfile": "Profili sil", + "profileNamePlaceholder": "Profil adı (məsələn, Şəxsi hesab)", + "saveCurrent": "Carini yadda saxla", + "codexAuthNotePrefix": "Codex istifadə edir", + "codexAuthNoteMiddle": "ilə", + "codexAuthNoteSuffix": "Avtomatik konfiqurasiya etmək üçün \"Tətbiq et\" düyməsinə klikləyin.", + "claudeManualConfiguration": "Claude CLI — Əl ilə konfiqurasiya", + "codexManualConfiguration": "Codex CLI — Əl ilə konfiqurasiya", + "droidManualConfiguration": "Factory Droid — Əl ilə konfiqurasiya", + "openClawManualConfiguration": "Open Claw — Əl ilə konfiqurasiya", + "clineManualConfiguration": "Cline üçün əl ilə konfiqurasiya", + "kiloManualConfiguration": "Kilo Code üçün əl ilə konfiqurasiya", + "whenToUseLabel": "Nə vaxt istifadə edilməlidir", + "openToolDocs": "Alətin sənədlərini aç", "toolUseCases": { - "claude": "Use when you want strong planning workflows and long multi-file refactors with Claude Code.", - "codex": "Use when your team is standardized on OpenAI Codex CLI flows and profile-based auth.", - "droid": "Use when you need a lightweight terminal agent focused on fast coding and command execution loops.", - "openclaw": "Use when you want an Open Claw style coding agent but routed through OmniRoute policies.", - "cline": "Use when you configure coding agents inside editors and want guided setup with OmniRoute models.", - "kilo": "Use when your workflow depends on Kilo Code commands and fast iterative edits.", - "cursor": "Use when coding in Cursor and you need custom OpenAI-compatible models through OmniRoute.", - "continue": "Use when running Continue in IDEs and you need portable JSON-based provider configuration.", - "opencode": "Use when you prefer terminal-native agent runs and scripted automation via OpenCode.", - "kiro": "Use when integrating Kiro and controlling model routing centrally from OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", - "antigravity": "Use when Antigravity/Kiro traffic must be intercepted through MITM and routed to OmniRoute.", - "copilot": "Use when you want Copilot chat style UX while enforcing OmniRoute keys and routing rules.", - "amp": "Use when you want Amp shorthand workflows but still need OmniRoute alias and routing rules enforcement.", - "hermes": "Use when you need a lightweight terminal-native AI assistant for quick tasks.", + "claude": "Claude Code ilə güclü planlaşdırma iş axınlarına və bir neçə faylı əhatə edən uzunmüddətli refaktorinqə ehtiyacınız olduqda istifadə edin.", + "codex": "Komandanız OpenAI Codex CLI iş axınları və profil əsaslı autentifikasiya üzrə standartlaşdırıldıqda istifadə edin.", + "droid": "Sürətli kodlaşdırmaya və əmrlərin ardıcıl icrasına yönəlmiş yüngül terminal agentinə ehtiyacınız olduqda istifadə edin.", + "openclaw": "Open Claw üslublu kodlaşdırma agenti istədikdə, lakin onu OmniRoute siyasətləri vasitəsilə yönləndirmək lazım olduqda istifadə edin.", + "cline": "Redaktorlarda kodlaşdırma agentlərini konfiqurasiya etdikdə və OmniRoute modelləri ilə istiqamətləndirilən quraşdırma istədikdə istifadə edin.", + "kilo": "İş axınınız Kilo Code əmrlərindən və sürətli iterativ redaktələrdən asılı olduqda istifadə edin.", + "cursor": "Cursor-da kod yazarkən və OmniRoute vasitəsilə xüsusi OpenAI-uyğun modellərə ehtiyacınız olduqda istifadə edin.", + "continue": "Continue-ni IDE-lərdə işlətdikdə və daşına bilən JSON əsaslı provayder konfiqurasiyasına ehtiyacınız olduqda istifadə edin.", + "opencode": "Terminala uyğun agent icralarına və OpenCode vasitəsilə skriptləşdirilmiş avtomatlaşdırmaya üstünlük verdikdə istifadə edin.", + "kiro": "Kiro-nu inteqrasiya edərkən və model yönləndirməsini OmniRoute-dan mərkəzləşdirilmiş qaydada idarə etmək istədikdə istifadə edin.", + "windsurf": "Codeium/Windsurf modelləri OmniRoute vasitəsilə yönləndirilən, süni intellekt yönümlü IDE istədikdə istifadə edin.", + "antigravity": "Antigravity/Kiro trafiki MITM vasitəsilə ələ keçirilməli və OmniRoute-a yönləndirilməli olduqda istifadə edin.", + "copilot": "OmniRoute açarlarını və yönləndirmə qaydalarını tətbiq etməklə yanaşı, Copilot söhbəti üslubunda istifadəçi təcrübəsi istədikdə istifadə edin.", + "amp": "Amp qısaldılmış iş axınlarından istifadə etmək istədikdə, lakin OmniRoute alias və yönləndirmə qaydalarının tətbiqinə də ehtiyacınız olduqda istifadə edin.", + "hermes": "Sürətli tapşırıqlar üçün yüngül, terminala uyğun süni intellekt köməkçisinə ehtiyacınız olduqda istifadə edin.", "hermes-agent": "OmniRoute vasitəsilə yönləndirilən standart, nümayəndəlik, görmə və köməkçi modelləri olan Hermes Agent (Nousresearch tərəfindən) lazım olduqda istifadə edin.", - "custom": "Use for custom tool implementations or generic OpenAI-compatible configurations." + "custom": "Fərdi alət tətbiqləri və ya ümumi OpenAI-uyğun konfiqurasiyalar üçün istifadə edin." }, "toolDescriptions": { - "antigravity": "Google Antigravity IDE with MITM", + "antigravity": "MITM ilə Google Antigravity IDE", "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "Fərdi provayder dəstəyi olan xAI Grok Build TUI kodlaşdırma agenti", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Factory Droid süni intellekt köməkçisi", + "openclaw": "Open Claw süni intellekt köməkçisi", + "cline": "Cline süni intellekt kodlaşdırma köməkçisi CLI", + "kilo": "Kilo Code AI köməkçisi CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "continue": "Continue AI köməkçisi", + "opencode": "OpenCode AI kodlaşdırma agenti (Terminal)", + "kiro": "Amazon Kiro — AI ilə işləyən IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp kodlaşdırma köməkçisi CLI", + "hermes": "Hermes AI terminal köməkçisi", "hermes-agent": "Hermes Agent (Nousresearch tərəfindən) - Çoxmodelli dəstəyə malik qabaqcıl terminal AI (nümayəndəlik, görmə, sıxılma və s.)", - "custom": "Generic OpenAI-compatible CLI or SDK configuration generator", + "custom": "Ümumi OpenAI-uyğun CLI və ya SDK konfiqurasiya generatoru", "aider": "OpenAI ilə uyğun baza URL-i olan Aider AI cüt proqramlaşdırma CLI-si", "forge": "Fərdi provayderi olan ForgeCode kodlaşdırma agenti CLI-si", "cursor-cli": "Headless agent rejimində Cursor Agent CLI", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter avtonom kodlaşdırma agenti CLI-si", "omp": "Oh My Pi terminal kodlaşdırma agenti", "letta": "Davamlı yaddaşa və alət istifadəsinə malik Letta CLI agenti", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI-uyğun provayder dəstəyi ilə özünü təkmilləşdirən RLM kodlaşdırma sistemi", "warp": "Fərdi provayder dəstəyinə malik Warp AI terminalı", "agent-deck": "Agent Deck çoxagentli orkestratoru", "5dive": "5dive — öz serverinizdə işləyən kodlaşdırma agentləri parkı; bir auth profili hamısını OmniRoute-a yönəldir" @@ -2958,134 +2958,134 @@ "guides": { "cursor": { "notes": { - "0": "Requires Cursor Pro account to use this feature.", - "1": "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings." + "0": "Bu funksiyadan istifadə etmək üçün Cursor Pro hesabı tələb olunur.", + "1": "Cursor sorğuları öz serveri vasitəsilə yönləndirir, buna görə də lokal son nöqtə dəstəklənmir. Lütfən, Parametrlərdə Bulud son nöqtəsini aktivləşdirin." }, "steps": { "1": { - "title": "Open Settings", - "desc": "Go to Settings -> Models" + "title": "Parametrləri açın", + "desc": "Parametrlər -> Modellər bölməsinə keçin" }, "2": { - "title": "Enable OpenAI API", - "desc": "Enable \"OpenAI API key\" option" + "title": "OpenAI API-ni aktivləşdirin", + "desc": "\"OpenAI API key\" seçimini aktivləşdirin" }, "3": { - "title": "Base URL" + "title": "Baza URL" }, "4": { - "title": "API Key" + "title": "API açarı" }, "5": { - "title": "Add Custom Model", - "desc": "Click \"View All Model\" -> \"Add Custom Model\"" + "title": "Fərdi model əlavə edin", + "desc": "\"View All Model\" -> \"Add Custom Model\" üzərinə klikləyin" }, "6": { - "title": "Select Model" + "title": "Model seçin" } } }, "continue": { "steps": { "1": { - "title": "Open Config", - "desc": "Open Continue configuration file" + "title": "Konfiqurasiyanı açın", + "desc": "Continue konfiqurasiya faylını açın" }, "2": { - "title": "API Key" + "title": "API açarı" }, "3": { - "title": "Select Model" + "title": "Model seçin" }, "4": { - "title": "Add Model Config", - "desc": "Add the following configuration to your models array:" + "title": "Model konfiqurasiyası əlavə edin", + "desc": "Aşağıdakı konfiqurasiyanı models massivinizə əlavə edin:" } }, "notes": { - "0": "Continue uses JSON config file." + "0": "Continue JSON konfiqurasiya faylından istifadə edir." } }, "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCode-u quraşdırın", + "desc": "npm vasitəsilə quraşdırın: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API açarı" }, "3": { - "title": "Set Base URL", + "title": "Baza URL-ni təyin edin", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Model seçin" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Düşünmə variantından istifadə edin", + "desc": "Düşünmə modelləri üçün --variant high/low/max ilə işə salın (nümunə əmr aşağıdadır)." } }, "notes": { - "0": "OpenCode requires API key configuration.", - "1": "Set the base URL to your OmniRoute endpoint." + "0": "OpenCode API açarı konfiqurasiyası tələb edir.", + "1": "Baza URL-ni OmniRoute son nöqtənizə təyin edin." } }, "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro parametrlərini açın", + "desc": "Parametrlər → AI provayderi bölməsinə keçin" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Baza URL", + "desc": "OmniRoute son nöqtə URL-nizi yapışdırın" }, "3": { - "title": "API Key" + "title": "API açarı" }, "4": { - "title": "Select Model" + "title": "Model seçin" } }, "notes": { - "0": "Kiro requires Amazon account." + "0": "Kiro Amazon hesabı tələb edir." } }, "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI parametrlərini açın", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Fərdi provayder əlavə edin", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Baza URL-i", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API açarı", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Model seçin", + "desc": "Açılan siyahıdan model seçin" } } } }, - "autoConfiguredTab": "Auto-Configured", - "toolCategoriesDesc": "Configure AI coding assistants to route through OmniRoute", - "allToolsTab": "All Tools", - "guidedClientsTab": "Guided Clients", - "mitmClientsTab": "MITM Clients", - "customCliTab": "Custom CLI", - "toolCategories": "Tool Categories", - "visibleToolsCount": "{count} tools available", + "autoConfiguredTab": "Avtomatik konfiqurasiya edilib", + "toolCategoriesDesc": "AI kodlaşdırma köməkçilərini OmniRoute üzərindən yönləndirmək üçün konfiqurasiya edin", + "allToolsTab": "Bütün alətlər", + "guidedClientsTab": "Addım-addım qurulan klientlər", + "mitmClientsTab": "MITM klientləri", + "customCliTab": "Fərdi CLI", + "toolCategories": "Alət kateqoriyaları", + "visibleToolsCount": "{count} alət mövcuddur", "customCliBuilderTitle": "OpenAI-a uyğun CLI qurucusu", "customCliBuilderDescription": "OpenAI-a uyğun əsas URL, API açarı və model ID-ni qəbul edən istənilən CLI və ya SDK üçün env varsları və JSON fraqmentləri yaradın.", "customCliNoModels": "Model seçicilərini doldurmaq üçün ən azı bir provayderi birləşdirin.", @@ -3132,7 +3132,7 @@ "hermesRoleTtsAudioTagsDesc": "TTS audio etiketi yaradılması", "hermesRoleTriageSpecifier": "Triage Təyin Edici", "hermesRoleTriageSpecifierDesc": "Məsələ və PR triage spesifikasiyası", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Kanban dekompozitoru", "hermesRoleKanbanDecomposerDesc": "Kanban tapşırıq parçalanması", "hermesRoleProfileDescriber": "Profil Təsvirçisi", "hermesRoleProfileDescriberDesc": "İstifadəçi profili təsviri", @@ -3140,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Məqsədin yerinə yetirilməsinin qiymətləndirilməsi", "hermesRoleCurator": "Kürator", "hermesRoleCuratorDesc": "Bacarıq və yaddaşın tənzimlənməsi", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Monitorinq", "hermesRoleMonitorDesc": "Arxa plan monitorinqi", "hermesRoleBackgroundReview": "Arxa Planın İcmalı", "hermesRoleBackgroundReviewDesc": "Arxa plan kodu icmalı", @@ -3203,75 +3203,75 @@ "cliproxyapiVersion": "Versiya" }, "combos": { - "title": "Combos", - "description": "Create model combos with weighted routing and fallback support", + "title": "Kombinasiyalar", + "description": "Çəkili yönləndirmə və ehtiyat keçid dəstəyi ilə model kombinasiyaları yaradın", "autoCatalogTitle": "Avtomatik marşrutlaşdırma kataloqu", "autoCatalogTemplateCount": "{count} şablonları", "autoCatalogDescription": "Daxili avtomatik/* kombinasiyaları əlaqəli provayderlərdən dinamik şəkildə həll edilir. Model sahəsi kimi bu identifikatorlardan hər hansı birini istifadə edin – quraşdırmaya ehtiyac yoxdur.", "autoCatalogExpand": "Avtomatik marşrutlaşdırma kataloqunu genişləndirin", "autoCatalogCollapse": "Avtomatik marşrutlaşdırma kataloqunu yığcamlaşdırın", - "createCombo": "Create Combo", - "editCombo": "Edit Combo", - "deleteCombo": "Delete Combo", - "noModels": "No models", - "noModelsYet": "No models added yet", - "addModel": "Add Model", - "addModelToCombo": "Add Model to Combo", - "routingStrategy": "Routing Strategy", - "maxRetries": "Max Retries", - "timeout": "Timeout (ms)", - "healthcheck": "Healthcheck", - "priority": "Priority", - "fallback": "Fallback", + "createCombo": "Kombinasiya yaradın", + "editCombo": "Kombinasiyanı redaktə edin", + "deleteCombo": "Kombinasiyanı silin", + "noModels": "Model yoxdur", + "noModelsYet": "Hələ heç bir model əlavə edilməyib", + "addModel": "Model əlavə edin", + "addModelToCombo": "Kombinasiyaya model əlavə edin", + "routingStrategy": "Yönləndirmə strategiyası", + "maxRetries": "Maksimum təkrar cəhd sayı", + "timeout": "Taym-aut (ms)", + "healthcheck": "Sağlamlıq yoxlaması", + "priority": "Prioritet", + "fallback": "Ehtiyat keçid", "roundRobin": "Round Robin", - "random": "Random", - "leastLatency": "Least Latency", - "comboName": "Combo Name", - "comboNamePlaceholder": "my-combo", + "random": "Təsadüfi", + "leastLatency": "Ən aşağı gecikmə", + "comboName": "Kombinasiyanın adı", + "comboNamePlaceholder": "mənim-kombinasiyam", "comboDescription": "Təsvir", "comboDescriptionPlaceholder": "Bu kombinasiyanı təsvir edən istəyə bağlı qeyd", - "deleteConfirm": "Delete this combo?", - "noCombosYet": "No combos yet", - "comboCreated": "Combo created successfully", - "comboUpdated": "Combo updated successfully", - "comboDeleted": "Combo deleted", - "failedCreate": "Failed to create combo", - "failedUpdate": "Failed to update combo", - "errorCreating": "Error creating combo", - "errorUpdating": "Error updating combo", - "errorDeleting": "Error deleting combo", - "testFailed": "Test request failed", - "failedToggle": "Failed to toggle combo", - "testResults": "Test Results — {name}", - "resolvedBy": "Resolved by:", - "more": "+{count} more", - "reqs": "reqs", - "success": "success", - "proxyConfigured": "Proxy configured", - "copyComboName": "Copy combo name", - "enableCombo": "Enable combo", - "disableCombo": "Disable combo", - "testCombo": "Test combo", - "duplicate": "Duplicate", - "proxyConfig": "Proxy configuration", - "nameRequired": "Name is required", - "nameInvalid": "Only letters, numbers, -, _, / and . allowed", - "nameHint": "Letters, numbers, -, _, / and . allowed", - "priorityDesc": "Sequential fallback: tries model 1 first, then 2, etc.", - "weightedDesc": "Distributes traffic by weight percentage with fallback", - "roundRobinDesc": "Circular distribution: each request goes to the next model in rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", - "randomDesc": "Uniform random selection, then fallback to remaining models", - "leastUsedDesc": "Picks the model with fewest requests, balancing load over time", - "costOptimizedDesc": "Routes to the cheapest model first based on pricing", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", - "resetAwareDesc": "Balances remaining quota against 5h and weekly resets, then round-robins similar scores", - "quotaWeighted": "Quota-Weighted", + "deleteConfirm": "Bu kombinasiya silinsin?", + "noCombosYet": "Hələ heç bir kombinasiya yoxdur", + "comboCreated": "Kombinasiya uğurla yaradıldı", + "comboUpdated": "Kombinasiya uğurla yeniləndi", + "comboDeleted": "Kombinasiya silindi", + "failedCreate": "Kombinasiya yaradıla bilmədi", + "failedUpdate": "Kombinasiya yenilənə bilmədi", + "errorCreating": "Kombinasiya yaradılarkən xəta baş verdi", + "errorUpdating": "Kombinasiya yenilənərkən xəta baş verdi", + "errorDeleting": "Kombinasiya silinərkən xəta baş verdi", + "testFailed": "Test sorğusu uğursuz oldu", + "failedToggle": "Kombinasiyanın vəziyyəti dəyişdirilə bilmədi", + "testResults": "Test nəticələri — {name}", + "resolvedBy": "Həll edən:", + "more": "+{count} daha", + "reqs": "sorğu", + "success": "uğurlu", + "proxyConfigured": "Proksi konfiqurasiya edilib", + "copyComboName": "Kombinasiya adını kopyala", + "enableCombo": "Kombinasiyanı aktivləşdir", + "disableCombo": "Kombinasiyanı deaktivləşdir", + "testCombo": "Kombinasiyanı sına", + "duplicate": "Dublikatını yarat", + "proxyConfig": "Proksi konfiqurasiyası", + "nameRequired": "Ad tələb olunur", + "nameInvalid": "Yalnız hərflər, rəqəmlər, -, _, / və . simvollarına icazə verilir", + "nameHint": "Hərflər, rəqəmlər, -, _, / və . simvollarına icazə verilir", + "priorityDesc": "Ardıcıl ehtiyat keçidi: əvvəlcə 1-ci modeli, sonra 2-cini və s. sınayır", + "weightedDesc": "Trafiki çəki faizinə görə paylayır və ehtiyat keçidini təmin edir", + "roundRobinDesc": "Dairəvi paylama: hər sorğu növbə ilə növbəti modelə yönləndirilir", + "contextRelay": "Kontekst ötürülməsi", + "contextRelayDesc": "Hesablar növbələndikdə ötürmə xülasələri vasitəsilə sessiyanın davamlılığını qoruyur", + "randomDesc": "Bərabər ehtimallı təsadüfi seçim edir, sonra qalan modellərə ehtiyat keçidi edir", + "leastUsedDesc": "Ən az sorğu almış modeli seçərək yükü zamanla balanslaşdırır", + "costOptimizedDesc": "Qiymətlərə əsasən əvvəlcə ən ucuz modelə yönləndirir", + "cacheOptimizedDesc": "Hər təkrar istifadə edilə bilən sorğu prefiksini ardıcıl olaraq eyni provayder hesabına yönləndirir", + "resetAware": "Sıfırlanmanı nəzərə alan dairəvi paylama", + "resetAwareDesc": "Qalan kvotanı 5 saatlıq və həftəlik sıfırlanmalara əsasən balanslaşdırır, sonra oxşar xalları dairəvi qaydada növbələndirir", + "quotaWeighted": "Kvotaya görə çəkili", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Tam təsadüfi", + "strictRandomDesc": "Qarışdırılmış dəst — yenidən qarışdırmazdan əvvəl hər modeldən bir dəfə istifadə edir", "fusion": "Birləşmə", "fusionDesc": "Sorğunu paralel olaraq hər bir panel modelinə göndərir, sonra isə hakim model bir yekun cavab sintez edir", "fusionJudgeModel": "Hakim model", @@ -3282,27 +3282,27 @@ "fusionStragglerGraceMsHelp": "Kvorum əldə edildikdən sonra yavaş panel modellərinin nə qədər gözləniləcəyi (standart 8000).", "fusionPanelHardTimeoutMs": "Panelin qəti vaxt aşımı (ms)", "fusionPanelHardTimeoutMsHelp": "Bir donmuş modelin bütün paneli ləngitməməsi üçün mütləq limit (standart 90000).", - "models": "Models", - "autoBalance": "Auto-balance", - "advancedSettings": "Advanced Settings", - "retryDelay": "Retry Delay (ms)", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", - "advancedHint": "Leave empty to use global defaults. These override per-provider settings.", + "models": "Modellər", + "autoBalance": "Avtomatik balanslaşdırma", + "advancedSettings": "Qabaqcıl parametrlər", + "retryDelay": "Təkrar cəhd gecikməsi (ms)", + "concurrencyPerModel": "Model üzrə paralellik", + "queueTimeout": "Növbənin gözləmə müddəti (ms)", + "contextRelayHandoffThreshold": "Ötürmə həddi", + "contextRelayHandoffThresholdHelp": "Kvota istifadəsi bu həddə çatdıqda, aktiv hesabın limiti tükənməzdən əvvəl OmniRoute strukturlaşdırılmış ötürmə xülasəsi yaradır.", + "contextRelayMaxMessages": "Xülasə üçün maksimum mesaj sayı", + "contextRelayMaxMessagesHelp": "Son tarixçənin nə qədər hissəsinin ötürmə xülasəsində yığcamlaşdırılacağını məhdudlaşdırır.", + "contextRelaySummaryModel": "Xülasə modeli", + "contextRelaySummaryModelHelp": "Yalnız ötürmə xülasəsini yaratmaq üçün istifadə olunan, istəyə bağlı alternativ model. Aktiv kombinasiya modelindən təkrar istifadə etmək üçün boş saxlayın.", + "contextRelayProviderNote": "Context Relay hazırda Codex hesablarının rotasiyası üçün ötürmələr yaradır. Ən yaxşı davamlılıq üçün onu eyni provayderə aid bir neçə hesabla birlikdə istifadə edin.", + "advancedHint": "Qlobal standart parametrlərdən istifadə etmək üçün boş saxlayın. Bunlar hər provayder üzrə parametrləri əvəz edir.", "failoverBeforeRetry": "Yenidən cəhd etməzdən əvvəl yüklənmə", "maxSetRetries": "Maksimum Set Yenidən Sınaqlar", "setRetryDelayMs": "Yenidən Sınaq Gecikməsini təyin edin (ms)", - "moveUp": "Move up", - "moveDown": "Move down", - "removeModel": "Remove", - "saving": "Saving...", + "moveUp": "Yuxarı daşı", + "moveDown": "Aşağı daşı", + "removeModel": "Sil", + "saving": "Yadda saxlanılır...", "liveNoProviders": "Hələ heç bir provayder müşahidə edilməyib.", "liveFleetDataHint": "Donanma məlumatları canlı kombo hadisələri vasitəsilə daxil olur.", "liveActiveCount": "Aktiv ({count})", @@ -3342,148 +3342,148 @@ "playgroundEmptyHint": "Marşrutlaşdırma yolunu görmək üçün bir kombo seçin və Marşrutu Simulyasiya Et düyməsinə klikləyin.", "playgroundNoCombosYet": "Hələ heç bir kombo konfiqurasiya edilməyib.", "playgroundCreateFirst": "Əvvəlcə birini yaradın", - "weighted": "Weighted", - "leastUsed": "Least-Used", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "weighted": "Çəkili", + "leastUsed": "Ən az istifadə olunan", + "costOpt": "Xərc optimallaşdırması", + "strategyGuideTitle": "Bu strategiyadan necə istifadə etməli", + "strategyGuideWhen": "Nə vaxt istifadə etməli", + "strategyGuideAvoid": "Bu hallarda istifadə etməyin", + "strategyGuideExample": "Nümunə", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "Bir üstünlük verdiyiniz modeliniz var və yalnız xəta baş verdikdə ehtiyat modelə keçmək istəyirsiniz.", + "avoid": "Sorğuları modellər arasında paylamaq lazımdır.", + "example": "Əsas kodlaşdırma modeli və fasilələr üçün daha ucuz ehtiyat model." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Trafikin modellər arasında nəzarətli şəkildə bölünməsi lazımdır.", + "avoid": "Zamanla dəqiq çəkiləri qoruyub saxlaya bilmirsiniz.", + "example": "80% stabil model + 20% sınaq modelinin mərhələli tətbiqi." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Proqnozlaşdırıla bilən və bərabər paylanma istəyirsiniz.", + "avoid": "Modellər gecikmə və ya xərc baxımından həddindən artıq fərqlənir.", + "example": "Yükü paylamaq üçün bir neçə hesabda eyni model." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Minimal quraşdırma ilə sadə paylanma istəyirsiniz.", + "avoid": "Trafik üzrə ciddi təminatlar lazımdır.", + "example": "Ekvivalent modellərlə sürətli prototipləşdirmə." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Cari tələbə əsaslanan adaptiv balanslaşdırma istəyirsiniz.", + "avoid": "İstifadəyə əsaslanan balanslaşdırmadan faydalanmaq üçün trafik çox azdır.", + "example": "Bir modelin tez-tez həddindən artıq yükləndiyi qarışıq iş yükləri." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Xərclərin azaldılması sizin əsas prioritetinizdir.", + "avoid": "Qiymət məlumatları yoxdur və ya köhnəlib.", + "example": "Daha aşağı xərcə üstünlük verilən fon və ya paket tapşırıqları." }, "reset-aware": { - "when": "You route across multiple accounts with quota telemetry and different reset windows.", - "avoid": "Quota telemetry is unavailable for most accounts.", - "example": "Prefer a 60% weekly account resetting tomorrow over an 80% account resetting later." + "when": "Kvota telemetriyası və fərqli sıfırlanma intervalları olan bir neçə hesab arasında marşrutlaşdırma aparırsınız.", + "avoid": "Əksər hesablar üçün kvota telemetriyası əlçatan deyil.", + "example": "Daha gec sıfırlanan 80%-lik hesab əvəzinə sabah sıfırlanan 60%-lik həftəlik hesaba üstünlük verin." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Tamamilə bərabər paylanma istədikdə istifadə edin — təkrarlanmadan əvvəl hər model bir dəfə istifadə olunur.", + "avoid": "Modellərin keyfiyyəti və ya gecikməsi fərqli olduqda və sıra əhəmiyyət daşıdıqda istifadə etməyin.", + "example": "Nümunə: İstifadəni bərabər paylamaq üçün eyni modelin bir neçə hesabı." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Power-of-Two-Choices alqoritmindən istifadə edərək aşağı gecikməli seçim istədikdə istifadə edin.", + "avoid": "2 və ya daha az modeli olan kiçik kombinasiyalar üçün istifadə etməyin — round-robin ilə müqayisədə heç bir üstünlüyü yoxdur.", + "example": "Nümunə: 4 və ya daha çox ekvivalent model son nöqtəsi arasında yüksək ötürmə qabiliyyətli inferensiya." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Uzun sessiyalar işlək konteksti itirmədən hesab rotasiyasından keçməli olduqda istifadə edin.", + "avoid": "Hesab dəyişdirmə nadir olduqda və ya əlavə xülasələşdirmə sorğuları istəmədikdə istifadə etməyin.", + "example": "Nümunə: Kvota tükənməsinə yaxın bir neçə hesab arasında rotasiya edilən Codex sessiyaları." }, "fill-first": { - "when": "Use when you want to fully exhaust one provider's quota before moving to the next.", - "avoid": "Avoid when you need request-level load balancing across providers.", - "example": "Example: Use all $200 Deepgram credits before falling back to Groq." + "when": "Növbəti provayderə keçməzdən əvvəl bir provayderin kvotasını tamamilə tükətmək istədikdə istifadə edin.", + "avoid": "Provayderlər arasında sorğu səviyyəsində yük balanslaşdırmasına ehtiyacınız olduqda istifadə etməyin.", + "example": "Nümunə: Groq-a keçməzdən əvvəl bütün $200 Deepgram kreditindən istifadə edin." }, "auto": { - "when": "Use when you need multi-factor scoring routing based on cost, latency, and quality.", - "avoid": "Avoid when you need strict priority ordering or historical persistence.", - "example": "Example: Balance requests across models with different strengths." + "when": "Xərc, gecikmə və keyfiyyət əsasında çoxamilli qiymətləndirmə ilə marşrutlaşdırmaya ehtiyacınız olduqda istifadə edin.", + "avoid": "Sərt prioritet sıralamasına və ya tarixi davamlılığa ehtiyacınız olduqda istifadə etməyin.", + "example": "Nümunə: Sorğuları fərqli güclü tərəflərə malik modellər arasında balanslaşdırın." }, "lkgp": { - "when": "Use when you want to route based on historical success rates and performance.", - "avoid": "Avoid when historical data is limited or unreliable.", - "example": "Example: Route to models with a good track record on specific tasks." + "when": "Tarixi uğur göstəriciləri və performans əsasında marşrutlaşdırmaq istədikdə istifadə edin.", + "avoid": "Tarixi məlumatlar məhdud və ya etibarsız olduqda istifadə etməyin.", + "example": "Nümunə: Sorğuları konkret tapşırıqlarda yaxşı nəticə tarixçəsinə malik modellərə yönləndirin." }, "context-optimized": { - "when": "Use when you need to optimize context window usage across models.", - "avoid": "Avoid when models have similar context lengths or tasks are simple.", - "example": "Example: Distribute long conversations across models with larger context windows." + "when": "Modellər arasında kontekst pəncərəsindən istifadəni optimallaşdırmağa ehtiyacınız olduqda istifadə edin.", + "avoid": "Modellərin kontekst uzunluqları oxşar olduqda və ya tapşırıqlar sadə olduqda istifadə etməyin.", + "example": "Nümunə: Uzun söhbətləri daha böyük kontekst pəncərələrinə malik modellər arasında paylayın." } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Sorğu uğursuz hesab edilməzdən əvvəl neçə təkrar cəhdin ediləcəyi.", + "retryDelay": "Təkrar cəhdlər arasındakı ilkin gözləmə müddəti. Daha yüksək dəyərlər ani yükü azaldır.", + "timeout": "Ləğv edilməzdən əvvəl sorğunun maksimum müddəti.", + "healthcheck": "Nasaz modelləri/provayderləri marşrutlaşdırma qərarlarından kənarlaşdırır.", + "concurrencyPerModel": "Round-robin rejimində hər model üçün icazə verilən maksimum eyni vaxtlı sorğu sayı.", + "queueTimeout": "Vaxt limiti bitməzdən əvvəl sorğunun növbədə nə qədər gözləyə biləcəyi.", "failoverBeforeRetry": "Aktivləşdirildikdə, istənilən yuxarı xəta bütün təkrar cəhdləri və ehtiyat URL-ləri atlayaraq, dərhal növbəti kombinasiya hədəfinə keçidi tetikler.", "maxSetRetries": "Hər hədəf uğursuz olduqda tam hədəf setini yenidən sınamaq üçün neçə dəfə. 0 = müəyyən səviyyəli təkrar cəhd yoxdur.", "setRetryDelayMs": "Müəyyən səviyyəli təkrar cəhdlər arasında gecikmə, keçici məsələlərin həlli üçün vaxt verir.", "disableSessionStickiness": "Bütün söhbəti ilk mesajın heşinə görə bir bağlantıya bağlamaq əvəzinə, hər sorğuda fərqli bir bağlantıya keçin. Qlobal standartı üstələyir. Çoxdönüşlü söhbətlər üçün prompt-cache hitlərini qorumaq üçün İrsi olaraq saxlayın." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "Sürətli şablonlar", + "templatesDescription": "Başlanğıc profilini tətbiq edin, sonra modelləri və konfiqurasiyanı tənzimləyin.", + "templateApply": "Şablonu tətbiq et", + "templateHighAvailability": "Yüksək əlçatanlıq", + "templateHighAvailabilityDesc": "Sağlamlıq yoxlamaları və təhlükəsiz təkrar cəhdlərlə prioritet marşrutlaşdırma.", + "templateCostSaver": "Xərcə qənaət", + "templateCostSaverDesc": "Büdcənin ön planda olduğu iş yükləri üçün xərc baxımından optimallaşdırılmış marşrutlaşdırma.", + "templateBalanced": "Balanslaşdırılmış yük", + "templateBalancedDesc": "Tələbi zaman üzrə bölüşdürmək üçün ən az istifadə edilən marşrutlaşdırma.", + "usageGuideHide": "Gizlət", + "usageGuideDontShowAgain": "Bir daha göstərmə", + "usageGuideShow": "Təlimatı göstər", + "quickTestTitle": "Kombinasiya yoxlanmağa hazırdır", + "quickTestDescription": "Ehtiyat keçidinin və gecikmənin davranışını təsdiqləmək üçün indi sınaq başladın.", + "testNow": "İndi sınaqdan keçir", + "pricingCoverage": "Qiymət əhatəsi", + "pricingCoverageHint": "Xərc baxımından optimallaşdırılmış strategiya bütün kombinasiya modellərinin qiyməti olduqda daha yaxşı işləyir.", + "pricingAvailable": "Qiymət mövcuddur", + "pricingMissing": "Qiymət yoxdur", + "pricingAvailableShort": "qiymətli", + "pricingMissingShort": "qiymətsiz", "fallbackOnlyOnQuotaExhaustion": "Yalnız kvota tükənməsi zamanı irəliləyin", "fallbackOnlyOnQuotaExhaustionShort": "yalnız kvota ehtiyatı", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", - "readinessCheckPricing": "Pricing data is available", - "readinessCheckPricingOptional": "Pricing rule not required", - "saveBlockedTitle": "Save is blocked until the following items are fixed:", - "saveBlockName": "Define a combo name.", - "saveBlockModels": "Add at least one model.", - "saveBlockWeighted": "Set weights to 100% (current: {total}%).", - "saveBlockPricing": "Add pricing for at least one model or choose a different strategy.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "warningRoundRobinSingleModel": "Dairəvi marşrutlaşdırma ən azı 2 model olduqda daha faydalıdır.", + "warningCostOptimizedPartialPricing": "{total} modeldən yalnız {priced} modelin qiyməti var. Marşrutlaşdırma xərcləri qismən nəzərə ala bilər.", + "warningCostOptimizedNoPricing": "Bu kombinasiya üçün qiymət məlumatı tapılmadı. Xərc baxımından optimallaşdırılmış strategiya gözlənilməz marşrutlaşdıra bilər.", + "filterAll": "Hamısı", + "filterIntelligent": "Ağıllı", + "filterDeterministic": "Deterministik", + "filterEmptyTitle": "Bu strategiya filtrinə uyğun kombinasiya yoxdur.", + "filterEmptyIntelligentDescription": "Ağıllı marşrutlaşdırma idarə panelini doldurmaq üçün avtomatik və ya LKGP kombinasiyası yaradın.", + "filterEmptyDeterministicDescription": "Hazırda yalnız avtomatik və LKGP kombinasiyaları mövcuddur. Hamısı seçiminə qayıdın və ya deterministik kombinasiya yaradın.", + "readinessTitle": "Yadda saxlamağa hazırsınız?", + "readinessDescription": "Bu kombinasiyanı yaratmazdan və ya yeniləməzdən əvvəl yoxlama siyahısını nəzərdən keçirin.", + "readinessCheckName": "Kombinasiya adı etibarlıdır", + "readinessCheckModels": "Ən azı bir model seçilib", + "readinessCheckWeights": "Çəkilərin cəmi 100%-dir", + "readinessCheckWeightsOptional": "Çəki qaydası tələb olunmur", + "readinessCheckPricing": "Qiymət məlumatı mövcuddur", + "readinessCheckPricingOptional": "Qiymət qaydası tələb olunmur", + "saveBlockedTitle": "Aşağıdakı problemlər aradan qaldırılanadək yadda saxlamaq mümkün deyil:", + "saveBlockName": "Kombinasiya adı təyin edin.", + "saveBlockModels": "Ən azı bir model əlavə edin.", + "saveBlockWeighted": "Çəkiləri 100%-ə təyin edin (hazırda: {total}%).", + "saveBlockPricing": "Ən azı bir model üçün qiymət əlavə edin və ya başqa strategiya seçin.", + "recommendationsLabel": "Tövsiyə olunan quraşdırma", + "applyRecommendations": "Tövsiyələri tətbiq et", + "recommendationsUpdated": "Tövsiyələr {strategy} üçün yeniləndi.", + "recommendationsApplied": "Tövsiyələr bu kombinasiyaya tətbiq edildi.", + "intelligentPanelTitle": "Ağıllı Marşrutlaşdırma İdarə Paneli", + "intelligentPanelDesc": "Bu avtomatik marşrutlaşdırma kombinasiyası üçün real vaxt rejimində qiymətləndirmə və sağlamlıq vəziyyəti.", "configOnlyStatus": "Konfiqurasiya görünüşü", "configOnlyHint": "Bu panel yalnız marşrutlaşdırma daxiletmələrini göstərir. Canlı breaker vəziyyəti Sağlamlıq səhifəsində mövcuddur.", "routingInputs": "Marşrutlaşdırma daxiletmələri", @@ -3505,247 +3505,247 @@ "manualModelUnknownProvider": "Naməlum provayder prefiksi.", "builderDynamicAccountShort": "Dinamik hesab", "builderNeedValidName": "Davam etməzdən əvvəl etibarlı kombo adı təyin edin.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Vəziyyətə İcmal", + "normalOperation": "Normal İş Rejimi", + "allProvidersHealthy": "Provayderlər marşrutlaşdırma şərtlərinin qənaətbəxş olduğunu bildirir.", + "incidentMode": "İnsident Rejimi", + "highCircuitBreakerRate": "Qoruyucu açarın yüksək işə düşmə tezliyi aşkarlandı.", + "activeModePack": "Aktiv Rejim Paketi", + "modePackUpdated": "Rejim paketi {pack} olaraq yeniləndi.", + "modePackHint": "Kombinasiyanı yenidən qurmadan marşrutlaşdırma mühərrikinin üstünlüklərini dəyişmək üçün əvvəlcədən təyin edilmiş parametrləri dəyişin.", + "providerScores": "Provayder Xalları", + "allProvidersEvaluated": "Namizəd hovuzu konfiqurasiya edilməyib. Bütün aktiv provayderlər icra zamanı qiymətləndirilir.", + "excludedProviders": "İstisna Edilmiş Provayderlər", + "excludedProvidersHint": "Qoruyucu açarı OPEN vəziyyətində olan provayderlər marşrutlaşdırmadan müvəqqəti olaraq istisna edilir.", + "noExcludedProviders": "Hazırda heç bir provayder istisna edilməyib.", + "cooldownMinutes": "Gözləmə müddəti: {minutes} dəq.", + "builderIntelligentTitle": "Ağıllı Marşrutlaşdırma Konfiqurasiyası", + "builderIntelligentDesc": "Bu avtomatik marşrutlaşdırma kombinasiyası üçün çoxamilli qiymətləndirmə mühərrikini konfiqurasiya edin.", + "candidatePoolLabel": "Namizəd Hovuzu", + "candidatePoolHint": "Bu mühərrikin hansı provayderləri qiymətləndirməli olduğunu seçin. Bütün aktiv provayderlərdən istifadə etmək üçün boş saxlayın.", + "candidatePoolEmpty": "Hələlik aktiv provayder yoxdur.", + "candidatePoolAllProviders": "Bütün provayderlər", + "modePackLabel": "Rejim Paketi", + "routerStrategyLabel": "Marşrutlaşdırıcı Strategiyası", + "strategyRules": "Qaydalar (6 Amilli Qiymətləndirmə)", + "explorationRateLabel": "Araşdırma Dərəcəsi", + "explorationRateHint": "Sorğuların {percent}%-i optimal olmayan provayderləri sınaqdan keçirə bilər.", + "budgetCapLabel": "Büdcə Limiti (USD / sorğu)", + "budgetCapPlaceholder": "Limit yoxdur", + "advancedWeightsTitle": "Qabaqcıl: Qiymətləndirmə Çəkiləri", "nestedComboFlatten": "İç-içə komboları düzləşdirin", "nestedComboExecute": "İç-içə komboları hədəf kimi icra edin", "effectiveRoutingShare": "Effektiv marşrutlaşdırma payı (çəki ÷ cəmi)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kvota", + "weightHealth": "Sağlamlıq", + "weightCostInv": "Xərc", + "weightLatencyInv": "Gecikmə", + "weightTaskFit": "Tapşırığa Uyğunluq", + "weightStability": "Sabitlik", + "weightTierPriority": "Səviyyə", + "weightCacheAffinity": "Keşə Düşmə Meyli", "weightSessionAvailability": "Sessiya Mövcudluğu", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Ağıllı Marşrutlaşdırma Konfiqurasiyası", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Nasazlığa davamlı baza səviyyəsi", + "description": "Bir əsas modeldən istifadə edin və ehtiyat zəncirini qısa və etibarlı saxlayın.", + "tip1": "Ən etibarlı modelinizi birinci yerləşdirin.", + "tip2": "Oxşar keyfiyyətə malik 1-2 ehtiyat model saxlayın.", + "tip3": "Provayderin müvəqqəti nasazlıqlarını aradan qaldırmaq üçün təhlükəsiz təkrar cəhdlərdən istifadə edin." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Nəzarətli trafik bölgüsü", + "description": "Kanareyka buraxılışları və modellər arasında mərhələli keçid üçün əladır.", + "tip1": "90/10 kimi ehtiyatlı bölgü ilə başlayın.", + "tip2": "Cəmi 100% səviyyəsində saxlayın və dəyişikliklərdən sonra avtomatik balanslaşdırın.", + "tip3": "Kanareykanın payını artırmazdan əvvəl uğur göstəricisini və gecikməni izləyin." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Proqnozlaşdırıla bilən yük bölgüsü", + "description": "Modellər ekvivalent olduqda və yükü rəvan bölüşdürmək lazım gəldikdə ən yaxşı seçimdir.", + "tip1": "Ən azı 2 modeldən istifadə edin.", + "tip2": "Ani yük artımının yaratdığı həddən artıq yüklənmənin qarşısını almaq üçün paralellik limitləri təyin edin.", + "tip3": "Sistem tam yükləndikdə tez xəta vermək üçün növbə gözləmə müddətindən istifadə edin." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Az quraşdırma ilə sürətli bölgü", + "description": "Ciddi zəmanətlər olmadan sadə bölgüyə ehtiyacınız olduqda istifadə edin.", + "tip1": "Oxşar gecikmə profilinə malik modellərdən istifadə edin.", + "tip2": "Təsadüfi uğursuzluqları aradan qaldırmaq üçün təkrar cəhdləri aktiv saxlayın.", + "tip3": "Bunu ciddi SLA-lar üçün deyil, eksperimentlər üçün seçin." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Adaptiv balanslaşdırma", + "description": "Zamanla qaynar nöqtələri azaltmaq üçün sorğuları daha az istifadə olunan modellərə yönləndirir.", + "tip1": "Davamlı trafik şəraitində daha yaxşı işləyir.", + "tip2": "Daha təhlükəsiz balanslaşdırma üçün sistem vəziyyəti yoxlamaları ilə birlikdə istifadə edin.", + "tip3": "Bölgü üzrə qazancları təsdiqləmək üçün hər model üzrə istifadəni izləyin." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Büdcə prioritetli marşrutlaşdırma", + "description": "Qiymət metadatası mövcud olduqda sorğuları daha aşağı xərcli modellərə yönləndirir.", + "tip1": "Seçilmiş bütün modellər üçün qiymət məlumatlarının mövcudluğunu təmin edin.", + "tip2": "Çətin sorğular üçün keyfiyyətli ehtiyat model saxlayın.", + "tip3": "Xərcin əsas KPI olduğu paket və fon tapşırıqları üçün istifadə edin." }, "reset-aware": { - "title": "Reset-aware account rotation", - "description": "Balances remaining provider quota against reset timing.", - "tip1": "Use explicit account steps or account-tag routing for providers with quota telemetry.", - "tip2": "Tune session vs weekly weights when short-term exhaustion is more risky.", - "tip3": "Keep the tie band small so equivalent accounts still rotate fairly." + "title": "Sıfırlanmanı nəzərə alan hesab rotasiyası", + "description": "Provayderin qalan kvotasını sıfırlanma vaxtına əsasən balanslaşdırır.", + "tip1": "Kvota telemetriyası olan provayderlər üçün açıq hesab addımlarından və ya hesab teqlərinə əsaslanan marşrutlaşdırmadan istifadə edin.", + "tip2": "Qısamüddətli tükənmə daha riskli olduqda sessiya və həftəlik çəkiləri tənzimləyin.", + "tip3": "Ekvivalent hesabların ədalətli şəkildə növbələnməsinə imkan vermək üçün bərabərlik diapazonunu kiçik saxlayın." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Qarışdırılan dəst üzrə bölgü", + "description": "Yenidən qarışdırılmadan əvvəl hər dövr ərzində hər modeldən dəqiq bir dəfə istifadə olunur.", + "tip1": "Mənalı bölgü üçün ən azı 2 modeldən istifadə edin.", + "tip2": "Ekvivalent performanslı modellərlə ən yaxşı şəkildə işləyir.", + "tip3": "Bir neçə API hesabı arasında yük balanslaşdırması üçün idealdır." }, "fill-first": { - "description": "Exhaust provider quotas sequentially before falling back.", - "tip1": "Use for quota-based routing with clear fallback chains.", - "tip2": "Set quotas accurately to avoid premature fallback.", - "tip3": "Works best with providers offering free tiers or credit buckets.", - "title": "Quota Exhaustion" + "description": "Ehtiyat varianta keçməzdən əvvəl provayder kvotalarını ardıcıl şəkildə tükədin.", + "tip1": "Aydın ehtiyat keçid zəncirləri ilə kvota əsaslı yönləndirmə üçün istifadə edin.", + "tip2": "Vaxtından əvvəl ehtiyat keçidin qarşısını almaq üçün kvotaları dəqiq təyin edin.", + "tip3": "Pulsuz tariflər və ya kredit paketləri təklif edən provayderlərlə ən yaxşı işləyir.", + "title": "Kvotanın Tükənməsi" }, "auto": { - "description": "Route based on real-time scoring for cost, latency, quality, and health.", - "tip1": "Let the engine balance multiple factors automatically.", - "tip2": "Monitor which factors drive routing decisions in logs.", - "tip3": "Use for complex workloads where no single factor dominates.", - "title": "Multi-Factor Optimization" + "description": "Xərc, gecikmə, keyfiyyət və işləkliyə görə real vaxt qiymətləndirməsi əsasında yönləndirin.", + "tip1": "Mühərrikə bir neçə amili avtomatik tarazlaşdırmağa imkan verin.", + "tip2": "Jurnallarda yönləndirmə qərarlarına hansı amillərin təsir etdiyini izləyin.", + "tip3": "Heç bir amilin üstünlük təşkil etmədiyi mürəkkəb iş yükləri üçün istifadə edin.", + "title": "Çoxamilli Optimallaşdırma" }, "lkgp": { - "description": "Route based on historical performance and success patterns.", - "tip1": "Requires sufficient request history for accurate predictions.", - "tip2": "Good for workloads with consistent model performance patterns.", - "tip3": "Monitor prediction accuracy and adjust weights as needed.", - "title": "History-Based Routing" + "description": "Tarixi performans və uğur nümunələri əsasında yönləndirin.", + "tip1": "Dəqiq proqnozlar üçün kifayət qədər sorğu tarixçəsi tələb olunur.", + "tip2": "Ardıcıl model performansı nümunələrinə malik iş yükləri üçün uyğundur.", + "tip3": "Proqnoz dəqiqliyini izləyin və çəkiləri lazım gəldikdə tənzimləyin.", + "title": "Tarixçə Əsaslı Yönləndirmə" }, "context-optimized": { - "description": "Optimize routing based on context window usage and token efficiency.", - "tip1": "Route long conversations to models with larger context windows.", - "tip2": "Monitor context utilization to avoid token waste.", - "tip3": "Best for conversational AI requiring extensive context retention.", - "title": "Context Optimization" + "description": "Kontekst pəncərəsinin istifadəsi və token səmərəliliyi əsasında yönləndirməni optimallaşdırın.", + "tip1": "Uzun söhbətləri daha böyük kontekst pəncərələri olan modellərə yönləndirin.", + "tip2": "Token israfının qarşısını almaq üçün kontekstdən istifadəni izləyin.", + "tip3": "Geniş kontekstin saxlanmasını tələb edən danışıq süni intellekti üçün ən uyğundur.", + "title": "Kontekstin Optimallaşdırılması" }, "context-relay": { - "description": "Best when account rotation is expected and the next account must inherit a simplified task summary.", - "tip1": "Use with providers rotating accounts for the same model family.", - "tip2": "Set handoff threshold below hard quota cutoffs for summary generation time.", - "tip3": "Only set a dedicated summary model if the primary is too expensive or unstable.", - "title": "Session Continuity Priority" + "description": "Hesab rotasiyası gözlənildikdə və növbəti hesab sadələşdirilmiş tapşırıq xülasəsini qəbul etməli olduqda ən uyğundur.", + "tip1": "Eyni model ailəsi üçün hesabları rotasiya edən provayderlərlə istifadə edin.", + "tip2": "Xülasə yaratmağa vaxt qalması üçün ötürmə həddini sərt kvota limitlərindən aşağı təyin edin.", + "tip3": "Yalnız əsas model çox bahalı və ya qeyri-sabitdirsə, ayrıca xülasə modeli təyin edin.", + "title": "Sessiyanın Davamlılığı Prioriteti" }, "p2c": { - "description": "Route to the provider with the lowest current load based on real-time metrics.", - "tip1": "Monitor provider health metrics for accurate load assessment.", - "tip2": "Works best with homogeneous provider pools.", - "tip3": "Adjust sensitivity to avoid oscillation during traffic spikes.", - "title": "Power of Two Choices" + "description": "Real vaxt göstəricilərinə əsasən cari yükü ən az olan provayderə yönləndirin.", + "tip1": "Yükü dəqiq qiymətləndirmək üçün provayderin işləkliyini göstərən metrikaları izləyin.", + "tip2": "Homogen provayder hovuzları ilə ən yaxşı işləyir.", + "tip3": "Trafik sıçrayışları zamanı tərəddüdün qarşısını almaq üçün həssaslığı tənzimləyin.", + "title": "İki Seçimin Gücü" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", - "auto": "Intelligent Auto", - "autoDesc": "Self-healing smart routing pool with multi-factor scoring", - "lkgp": "LKGP Mode", - "lkgpDesc": "Prioritizes the last provider that successfully completed a request", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", - "wizardStep3Desc": "Pick how requests are distributed across your models - 14 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "templateFreeStack": "Pulsuz Paket ($0)", + "templateFreeStackDesc": "Bütün pulsuz provayderlər arasında növbəli yönləndirmə: Kiro (Claude), Qoder (5 model), Qwen (4 model). Sıfır xərc, kodlaşdırma heç vaxt dayanmır.", + "auto": "Ağıllı Avtomatik Rejim", + "autoDesc": "Çoxamilli qiymətləndirməyə malik, özünü bərpa edən ağıllı yönləndirmə hovuzu", + "lkgp": "LKGP Rejimi", + "lkgpDesc": "Sorğunu sonuncu dəfə uğurla tamamlayan provayderə üstünlük verir", + "wizardGuideTitle": "Kombinasiyalarla İşə Başlama", + "wizardGuideDesc": "Süni intellekt trafikini ağıllı şəkildə yönləndirmək üçün model kombinasiyaları yaradın", + "wizardGuideHint": "və ya yuxarıdakı + Kombinasiya Yarat düyməsinə klikləyin", + "createFirstCombo": "İlk Kombinasiyanızı Yaradın", + "wizardStep1Title": "Kombinasiyanızı Adlandırın", + "wizardStep1Desc": "Marşrutlaşdırma qaydalarında müəyyən etmək üçün kombonuza unikal ad verin", + "wizardStep2Title": "Modellər əlavə edin", + "wizardStep2Desc": "Süni intellekt modellərini seçin və onların ehtiyat prioritet sırasını tənzimləyin", + "wizardStep3Title": "Strategiya seçin", + "wizardStep3Desc": "Sorğuların modelləriniz arasında necə paylanacağını seçin — 14 strategiya mövcuddur", + "wizardStep4Title": "Nəzərdən keçirin və yadda saxlayın", + "wizardStep4Desc": "Konfiqurasiyanızı nəzərdən keçirin və kombonu aktivləşdirin", + "usageGuideInvokeTitle": "Bu kombonu necə çağırmalı", + "usageGuideInvokeDesc": "Model kimi kombonun dəqiq adını göndərin, məsələn, model: \"my-combo\" (və ya combo/my-combo).", + "usageGuideInvokeAutoNote": "auto və auto/* kombolarınızdan istifadə etməyən ayrıca, sıfır konfiqurasiyalı marşrutlaşdırıcıdır (kombolardan biri sözün əsl mənasında auto adlandırılmayıbsa).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto OmniRoute aliası deyil, real ödənişli OpenRouter məhsuludur (Auto Best Available) — onu Parametrlər → Marşrutlaşdırma → Ödənişli modelləri gizlət vasitəsilə istisna edin.", + "emailVisibilityStateOn": "Aktiv", + "emailVisibilityStateOff": "Deaktiv", + "reorderHandle": "Sıranı dəyişmək üçün sürükləyin", + "failedReorder": "Modellərin sırasını dəyişmək alınmadı", + "builderFlowTitle": "Kombo qurucusunun iş axını", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Əsaslar", + "description": "Ad və başlanğıc şablonu" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Addımlar", + "description": "Provayder, model və hesab seçimi" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategiya", + "description": "Marşrutlaşdırma davranışı və təkmil parametrlər" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Ağıllı marşrutlaşdırma", + "description": "Avtomatik marşrutlaşdırma üçün namizəd hovuzu, əvvəlcədən təyin edilmiş seçimlər və qiymətləndirmə" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Nəzərdən keçirmə", + "description": "Yadda saxlamazdan əvvəl yekun yoxlama" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", + "builderStageVisited": "Mərhələ tamamlandı", + "builderStageCurrent": "Cari mərhələ", + "builderStagePending": "Gözləmədədir", + "builderStageLocked": "Kilidlənib — əvvəlcə əvvəlki mərhələni tamamlayın", + "builderTitle": "Kombo yaradın", + "builderBrowseCatalog": "Kataloqa baxın", + "builderProvider": "Provayder", + "builderLoadingProviders": "Provayderlər yüklənir...", + "builderSelectProvider": "Provayder seçin", "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", - "builderDuplicateExact": "This exact provider/model/account step is already in the combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", - "builderStagesDescription": "Complete each stage in order to define combos, build steps, select routing strategy, and review results.", - "builderStepsDescription": "Build each combo step in order: provider, model, then account. This allows reusing the same provider and model across different accounts.", - "selectProvider": "Select Provider", - "selectProviderPlaceholder": "Select a provider", - "selectModel": "Select Model", - "selectModelPlaceholder": "Select a provider first", - "selectAccount": "Select Account", - "selectComboToReference": "Select combo to reference", - "comboReference": "Combo Reference", - "addComboReference": "Add Combo Reference", - "addStepBeforeContinue": "Please add at least one step before proceeding to the next stage.", - "previewNextStep": "Preview next step", - "autoSelectAccount": "Automatically select account at runtime", - "modePackBalanced": "Balanced", - "modePackBudget": "Budget", - "modePackPerformance": "Performance", - "modePackCustom": "Custom", - "browseLegacyCatalog": "Browse legacy combo catalog", - "agentFeaturesTitle": "Agent Features", - "agentFeaturesDescription": "Enable advanced features for agents using this combo", + "builderSelectModel": "Model seçin", + "builderProviderFirst": "Əvvəlcə provayder seçin", + "builderAccount": "Hesab", + "builderPreview": "Önizləmə", + "builderAddStep": "Addım əlavə et", + "builderDuplicateExact": "Bu dəqiq provayder/model/hesab addımı artıq kombinasiyadadır.", + "builderComboRef": "Kombinasiya istinadı", + "builderAddComboRef": "Kombinasiya istinadı əlavə et", + "builderComboRefStep": "Kombinasiya istinadı əlavə et", + "builderPinnedAccount": "Bərkidilmiş hesab", + "builderLegacyEntry": "Köhnə qeyd", + "reviewName": "Ad", + "reviewStrategy": "Strategiya", + "reviewSteps": "Addımlar", + "reviewAccounts": "Hesablar", + "reviewProviders": "Provayderlər", + "reviewComboRefs": "Kombinasiya istinadları", + "reviewAdvanced": "Qabaqcıl parametrlər", + "reviewAgentFlags": "Agent bayraqları", + "reviewSequence": "Model ardıcıllığı", + "reviewNoSteps": "Heç bir addım konfiqurasiya edilməyib", + "builderStagesDescription": "Kombinasiyaları müəyyənləşdirmək, addımları yaratmaq, marşrutlaşdırma strategiyasını seçmək və nəticələri nəzərdən keçirmək üçün hər mərhələni ardıcıllıqla tamamlayın.", + "builderStepsDescription": "Hər kombinasiya addımını bu ardıcıllıqla yaradın: provayder, model, sonra hesab. Bu, eyni provayder və modeldən müxtəlif hesablarda yenidən istifadə etməyə imkan verir.", + "selectProvider": "Provayder seçin", + "selectProviderPlaceholder": "Provayder seçin", + "selectModel": "Model seçin", + "selectModelPlaceholder": "Əvvəlcə provayder seçin", + "selectAccount": "Hesab seçin", + "selectComboToReference": "İstinad ediləcək kombinasiyanı seçin", + "comboReference": "Kombinasiya istinadı", + "addComboReference": "Kombinasiya istinadı əlavə et", + "addStepBeforeContinue": "Növbəti mərhələyə keçməzdən əvvəl ən azı bir addım əlavə edin.", + "previewNextStep": "Növbəti addıma önbaxış", + "autoSelectAccount": "İcra zamanı hesabı avtomatik seç", + "modePackBalanced": "Balanslaşdırılmış", + "modePackBudget": "Büdcə", + "modePackPerformance": "Performans", + "modePackCustom": "Fərdi", + "browseLegacyCatalog": "Köhnə kombinasiya kataloquna baxın", + "agentFeaturesTitle": "Agent funksiyaları", + "agentFeaturesDescription": "Bu kombinasiyadan istifadə edən agentlər üçün qabaqcıl funksiyaları aktivləşdirin", "responseValidationTitle": "Cavabın yoxlanılması", "responseValidationHelp": "200 OK gövdəsi bu yoxlamalardan keçmədikdə növbəti hədəfə keçid edin (assistent məzmunu).", "responseValidationForbidden": "Qadağan olunmuş alt sətirlər (hər sətirdə bir dənə)", @@ -3753,18 +3753,18 @@ "responseValidationMinLength": "Minimum məzmun uzunluğu (simvol)", "responseValidationJsonPaths": "JSON-path yoxlamaları", "responseValidationAddCheck": "+ Yoxlama əlavə et", - "agentFeaturesSystemMessageOverride": "Override system message", - "agentFeaturesSystemMessagePlaceholder": "You are an expert assistant...", - "agentFeaturesSystemMessageHint": "System message override for agents", + "agentFeaturesSystemMessageOverride": "Sistem mesajını əvəz et", + "agentFeaturesSystemMessagePlaceholder": "Siz ekspert köməkçisiniz...", + "agentFeaturesSystemMessageHint": "Agentlər üçün sistem mesajının əvəzlənməsi", "agentFeaturesToolFilterRegex": "/regex-pattern/", - "agentFeaturesToolFilterHint": "Tool filter regex for agents", - "agentFeaturesContextCacheHint": "Enable in-context cache for agent tools", - "agentFeaturesContextCacheProtection": "Protect cache from agent tool mutations", - "agentFeaturesContextLength": "Context length", - "agentFeaturesContextLengthPlaceholder": "e.g. 128000", - "agentFeaturesContextLengthHint": "Defines the context window for this combo in /v1/models.", - "agentFeaturesContextLengthErrorInteger": "Context length must be a valid integer", - "agentFeaturesContextLengthErrorRange": "Context length must be between 1000 and 2000000", + "agentFeaturesToolFilterHint": "Agentlər üçün alət filtri regex-i", + "agentFeaturesContextCacheHint": "Agent alətləri üçün kontekstdaxili keşi aktivləşdir", + "agentFeaturesContextCacheProtection": "Keşi agent alətlərinin dəyişikliklərindən qoru", + "agentFeaturesContextLength": "Kontekst uzunluğu", + "agentFeaturesContextLengthPlaceholder": "məs. 128000", + "agentFeaturesContextLengthHint": "/v1/models daxilində bu kombinasiya üçün kontekst pəncərəsini müəyyən edir.", + "agentFeaturesContextLengthErrorInteger": "Kontekst uzunluğu etibarlı tam ədəd olmalıdır", + "agentFeaturesContextLengthErrorRange": "Kontekst uzunluğu 1000 ilə 2000000 arasında olmalıdır", "compressionOverride": "Sıxılmanın ləğvi", "modePack": "Rejim Paketi", "disableSessionStickiness": "Sessiya yapışqanlığını söndürün", @@ -3788,292 +3788,292 @@ "duplicateAutoComboTitle": "{name}-dan statik kombo yarat" }, "costs": { - "title": "Costs", - "pageDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "overview": "Overview", - "budget": "Budget", - "totalCost": "Total Cost", - "breakdown": "Cost Breakdown", - "noData": "No cost data", - "byModel": "By Model", - "byProvider": "By Provider", - "range7d": "7 Days", - "range30d": "30 Days", - "range90d": "90 Days", - "range180d": "180 Days", - "range365d": "365 Days", - "rangeAll": "All Time", - "spend30d": "Spend 30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", - "overviewTitle": "Cost Overview", - "spend7d": "Spend 7D", - "avgCostPerRequest": "Avg Cost / Request", - "noCostDataDescription": "Start making requests to see cost data appear here. Costs are tracked automatically for all providers.", - "spendToday": "Spend Today", - "overviewLoadFailed": "Failed to load cost overview", - "overviewDescription": "Real-time spending breakdown across all connected providers and models", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", - "noCostDataTitle": "No cost data yet", - "topModels": "Top Models", - "requestsInWindow": "Requests in Window", - "tokenUsage": "Token Usage", - "totalTokens": "Total Tokens", - "inputTokens": "Input Tokens", - "outputTokens": "Output Tokens", - "inputOutputRatio": "Input/Output Ratio", - "tokens": "tokens", - "routingEfficiency": "Routing Efficiency", - "fallbackCount": "Fallback Requests", - "fallbackRate": "Fallback Rate", - "modelCoverage": "Model Coverage", - "modelCoverageDesc": "% of requests with explicit model", - "outOfRequests": "out of {total} requests", - "costByApiKey": "Cost by API Key", - "costByAccount": "Cost by Account", - "apiKeyName": "API Key", - "account": "Account", - "requests": "Requests", - "cost": "Cost", - "dayStreak": "day streak", - "weeklyUsagePattern": "Weekly Usage Pattern", - "activityHeatmap": "Activity (365 days)", - "less": "Less", - "more": "More", - "monthlyForecast": "Monthly Forecast", - "forecastBasis": "Based on last {days} days", - "avgDailyCost": "Avg. daily cost", - "daysRemaining": "{days} days remaining", - "periodComparison": "Period Comparison", - "previousPeriod": "Previous Half", - "currentPeriod": "Current Half", - "exportCSV": "Export as CSV", - "exportJSON": "Export as JSON", + "title": "Xərclər", + "pageDescription": "Bütün provayderlər üzrə xərcləri izləyin, tendensiyaları təhlil edin və AI büdcənizi idarə edin", + "overview": "İcmal", + "budget": "Büdcə", + "totalCost": "Ümumi xərc", + "breakdown": "Xərclərin bölgüsü", + "noData": "Xərc məlumatı yoxdur", + "byModel": "Model üzrə", + "byProvider": "Provayder üzrə", + "range7d": "7 gün", + "range30d": "30 gün", + "range90d": "90 gün", + "range180d": "180 gün", + "range365d": "365 gün", + "rangeAll": "Bütün dövr", + "spend30d": "30 günlük xərc", + "activeModels": "Aktiv modellər", + "flatRateEstimateNotice": "Sabit tarifli abunəliklər üçün faktiki hesablanmış xərc deyil, token qiyməti təxminləri daxildir.", + "flatRateEstimateForecast": "Proqnoza sabit tarif üzrə təxminlər daxildir.", + "selectedWindow": "Seçilmiş dövr", + "activeProviders": "Aktiv provayderlər", + "overviewTitle": "Xərclərə baxış", + "spend7d": "7 günlük xərc", + "avgCostPerRequest": "Sorğu üzrə orta xərc", + "noCostDataDescription": "Xərc məlumatlarının burada görünməsi üçün sorğular göndərməyə başlayın. Xərclər bütün provayderlər üçün avtomatik izlənilir.", + "spendToday": "Bugünkü xərc", + "overviewLoadFailed": "Xərclərə baxışı yükləmək alınmadı", + "overviewDescription": "Bütün qoşulmuş provayderlər və modellər üzrə real vaxt rejimində xərc bölgüsü", + "providerShare": "Provayder payı", + "topProviders": "Ən çox istifadə olunan provayderlər", + "costTrend": "Xərc tendensiyası", + "noCostDataTitle": "Hələ xərc məlumatı yoxdur", + "topModels": "Ən yaxşı modellər", + "requestsInWindow": "Zaman aralığındakı sorğular", + "tokenUsage": "Token istifadəsi", + "totalTokens": "Ümumi token sayı", + "inputTokens": "Giriş tokenləri", + "outputTokens": "Çıxış tokenləri", + "inputOutputRatio": "Giriş/çıxış nisbəti", + "tokens": "token", + "routingEfficiency": "Marşrutlaşdırma səmərəliliyi", + "fallbackCount": "Ehtiyat sorğular", + "fallbackRate": "Ehtiyat marşrutlaşdırma faizi", + "modelCoverage": "Model əhatəsi", + "modelCoverageDesc": "Açıq şəkildə model göstərilən sorğuların faizi", + "outOfRequests": "cəmi {total} sorğudan", + "costByApiKey": "API açarı üzrə xərc", + "costByAccount": "Hesab üzrə xərc", + "apiKeyName": "API açarı", + "account": "Hesab", + "requests": "Sorğular", + "cost": "Xərc", + "dayStreak": "günlük ardıcıllıq", + "weeklyUsagePattern": "Həftəlik istifadə nümunəsi", + "activityHeatmap": "Aktivlik (365 gün)", + "less": "Az", + "more": "Çox", + "monthlyForecast": "Aylıq proqnoz", + "forecastBasis": "Son {days} gün əsasında", + "avgDailyCost": "Orta gündəlik xərc", + "daysRemaining": "{days} gün qalıb", + "periodComparison": "Dövrlərin müqayisəsi", + "previousPeriod": "Əvvəlki yarı", + "currentPeriod": "Cari yarı", + "exportCSV": "CSV kimi ixrac et", + "exportJSON": "JSON kimi ixrac et", "legacyFreeLabel": "Köhnə / Pulsuz", - "costExplorerTitle": "Cost Explorer", - "costExplorerDescription": "Explore spend by provider, model, API key, account, or service tier.", - "groupProvider": "Provider", + "costExplorerTitle": "Xərc təhlili", + "costExplorerDescription": "Provayder, model, API açarı, hesab və ya xidmət səviyyəsi üzrə xərcləri araşdırın.", + "groupProvider": "Provayder", "groupModel": "Model", - "groupApiKey": "API Key", - "groupAccount": "Account", - "groupServiceTier": "Service Tier", + "groupApiKey": "API açarı", + "groupAccount": "Hesab", + "groupServiceTier": "Xidmət səviyyəsi", "serviceTierFast": "Sürətli", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Çevik", "serviceTierStandard": "Standart", "serviceTierBreakdownTitle": "Xidmət səviyyəsi", "serviceTierBreakdownSubtitle": "Sürətli / Flex / Standart bölgüsü", "serviceTierUsageSaved": "istifadə yadda saxlanıldı", "serviceTierCostSaved": "yadda saxlanıldı", "serviceTierCostShareSuffix": "xərcin", - "dimension": "Dimension", - "share": "Share", - "legacyOrFree": "Legacy / Free", - "filterRows": "Filter rows…", - "filterCostExplorerRows": "Filter Cost Explorer rows", - "noMatchingCostRows": "No matching cost rows", - "noMatchingCostRowsDescription": "Adjust the search text, grouping, or selected time window.", - "showingCostRows": "Showing {shown} of {total} matching rows.", - "showingTopCostRows": "Showing {shown} of {total} matching rows (top 50)." + "dimension": "Ölçü", + "share": "Pay", + "legacyOrFree": "Köhnə / Pulsuz", + "filterRows": "Sətirləri filtrləyin…", + "filterCostExplorerRows": "Cost Explorer sətirlərini filtrləyin", + "noMatchingCostRows": "Uyğun xərc sətri yoxdur", + "noMatchingCostRowsDescription": "Axtarış mətnini, qruplaşdırmanı və ya seçilmiş vaxt aralığını dəyişdirin.", + "showingCostRows": "Uyğun {total} sətirdən {shown} ədədi göstərilir.", + "showingTopCostRows": "Uyğun {total} sətirdən {shown} ədədi göstərilir (ilk 50)." }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", - "available": "Available Endpoints", + "title": "API son nöqtəsi", + "subtitle": "Əksər SDK və alətlərlə OpenAI uyğun son nöqtədən istifadə edin.", + "testEndpoint": "Son nöqtəni sınaqdan keçirin →", + "advancedProtocols": "Qabaqcıl protokollar", + "available": "Mövcud son nöqtələr", "cloudProxy": "Cloud Proxy", - "disableConfirm": "Are you sure you want to disable cloud proxy?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", - "registeredKeys": "Registered Keys", + "disableConfirm": "Bulud proksisini deaktiv etmək istədiyinizə əminsiniz?", + "baseUrl": "Baza URL-i", + "apiKeyLabel": "API açarı", + "registeredKeys": "Qeydiyyatdan keçmiş açarlar", "chatCompletions": "Chat Completions", - "responses": "Responses", - "listModels": "List Models", - "usingCloudProxy": "Using Cloud Proxy", - "usingLocalServer": "Using Local Server", - "machineId": "Machine ID: {id}...", - "disableCloud": "Disable Cloud", - "enableCloud": "Enable Cloud", - "modelsAcrossEndpoints": "{models} models across {endpoints} endpoints", - "loadingModels": "Loading available models...", - "chatDesc": "Streaming & non-streaming chat with all providers", - "embeddings": "Embeddings", - "embeddingsDesc": "Text embeddings for search & RAG pipelines", - "imageGeneration": "Image Generation", - "imageDesc": "Generate images from text prompts", + "responses": "Cavablar", + "listModels": "Modelləri sadalayın", + "usingCloudProxy": "Bulud proksisindən istifadə olunur", + "usingLocalServer": "Lokal serverdən istifadə olunur", + "machineId": "Maşın ID-si: {id}...", + "disableCloud": "Buludu deaktiv edin", + "enableCloud": "Buludu aktiv edin", + "modelsAcrossEndpoints": "{endpoints} son nöqtədə {models} model", + "loadingModels": "Mövcud modellər yüklənir...", + "chatDesc": "Bütün provayderlərlə axınlı və axınsız söhbət", + "embeddings": "Vektor təsvirləri", + "embeddingsDesc": "Axtarış və RAG konveyerləri üçün mətnin vektor təsvirləri", + "imageGeneration": "Şəkil yaratma", + "imageDesc": "Mətn sorğularından şəkillər yaradın", "rerank": "Rerank", - "rerankDesc": "Rerank documents by relevance to a query", - "audioTranscription": "Audio Transcription", - "audioTranscriptionDesc": "Transcribe audio files to text (Whisper)", - "textToSpeech": "Text to Speech", - "textToSpeechDesc": "Convert text to natural-sounding speech", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", - "moderations": "Moderations", - "moderationsDesc": "Content moderation and safety classification", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", - "categoryCore": "Core APIs", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", - "categoryUtility": "Utility & Management", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", - "enableCloudTitle": "Enable Cloud Proxy", - "whatYouGet": "What you will get", - "cloudBenefitAccess": "Access your API from anywhere in the world", - "cloudBenefitShare": "Share endpoint with your team easily", - "cloudBenefitPorts": "No need to open ports or configure firewall", - "cloudBenefitEdge": "Fast global edge network", - "cloudSessionNote": "Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted.", - "cloudUnstableNote": "Cloud is currently unstable with Claude Code OAuth in some cases.", - "cloudConnected": "Cloud Proxy connected!", - "connectingToCloud": "Connecting to cloud...", - "verifyingConnection": "Verifying connection...", - "connecting": "Connecting...", - "verifying": "Verifying...", - "connected": "Connected!", - "disableCloudTitle": "Disable Cloud Proxy", - "disableWarning": "All auth sessions will be deleted from cloud.", - "syncingData": "Syncing latest data...", - "disablingCloud": "Disabling cloud...", - "syncing": "Syncing...", - "disabling": "Disabling...", - "cloudConnectedVerified": "Cloud Proxy connected and verified!", - "connectedVerificationPending": "Connected — verification pending", - "connectedVerificationPendingWithError": "Connected — verification pending: {error}", - "cloudDisabledSuccess": "Cloud disabled successfully", - "syncedSuccess": "Synced successfully", - "failedDisable": "Failed to disable cloud", - "failedEnable": "Failed to enable cloud", - "cloudRequestTimeout": "Cloud request timeout", - "cloudRequestFailed": "Cloud request failed", - "cloudWorkerUnreachable": "Could not reach cloud worker. Make sure the cloud service is running (npm run dev in /cloud).", - "connectionFailed": "Connection failed", - "syncFailed": "Failed to sync cloud data", + "rerankDesc": "Sənədləri sorğuya uyğunluğuna görə yenidən sıralayın", + "audioTranscription": "Audio transkripsiyası", + "audioTranscriptionDesc": "Audio faylları mətnə çevirin (Whisper)", + "textToSpeech": "Mətndən nitqə", + "textToSpeechDesc": "Mətni təbii səslənən nitqə çevirin", + "musicGeneration": "Musiqi generasiyası", + "musicDesc": "ComfyUI (Stable Audio, MusicGen) vasitəsilə musiqi və audio treklər yaradın", + "moderations": "Moderasiya", + "moderationsDesc": "Məzmunun moderasiyası və təhlükəsizlik üzrə təsnifatı", + "responsesDesc": "Codex və qabaqcıl agent əsaslı iş axınları üçün OpenAI Responses API", + "listModelsDesc": "Bütün qoşulmuş provayderlərdə mövcud olan bütün modelləri siyahılayın", + "settingsApiDesc": "API vasitəsilə OmniRoute konfiqurasiyasını oxuyun və dəyişdirin", + "settingsApi": "Parametrlər API-si", + "categoryCore": "Əsas API-lər", + "categoryMedia": "Media və multimodal", + "categorySearch": "Axtarış və kəşf", + "categoryUtility": "Köməkçi alətlər və idarəetmə", + "webSearch": "Veb axtarışı", + "webSearchDesc": "Avtomatik ehtiyat provayderə keçid və keşləmə ilə bir neçə provayder üzrə vahid veb axtarışı", + "searchProvider": "Axtarış provayderi", + "searchProviderDesc": "Bu provayder POST /v1/search vasitəsilə veb axtarışı üçün istifadə olunur. Model konfiqurasiyasına ehtiyac yoxdur — API açarı qoşulduqdan sonra axtarış provayderləri istifadəyə hazır olur.", + "enableCloudTitle": "Bulud proksisini aktivləşdirin", + "whatYouGet": "Əldə edəcəkləriniz", + "cloudBenefitAccess": "API-nizə dünyanın istənilən yerindən daxil olun", + "cloudBenefitShare": "Son nöqtəni komandanızla asanlıqla paylaşın", + "cloudBenefitPorts": "Portları açmağa və ya təhlükəsizlik divarını konfiqurasiya etməyə ehtiyac yoxdur", + "cloudBenefitEdge": "Sürətli qlobal kənar şəbəkə", + "cloudSessionNote": "Bulud autentifikasiya sessiyanızı 1 gün saxlayacaq. İstifadə edilməzsə, avtomatik silinəcək.", + "cloudUnstableNote": "Hazırda bulud bəzi hallarda Claude Code OAuth ilə qeyri-sabit işləyir.", + "cloudConnected": "Bulud proksisi qoşuldu!", + "connectingToCloud": "Buluda qoşulur...", + "verifyingConnection": "Bağlantı yoxlanılır...", + "connecting": "Qoşulur...", + "verifying": "Yoxlanılır...", + "connected": "Qoşuldu!", + "disableCloudTitle": "Bulud proksisini deaktiv edin", + "disableWarning": "Bütün autentifikasiya sessiyaları buluddan silinəcək.", + "syncingData": "Ən son məlumatlar sinxronlaşdırılır...", + "disablingCloud": "Bulud deaktiv edilir...", + "syncing": "Sinxronlaşdırılır...", + "disabling": "Deaktiv edilir...", + "cloudConnectedVerified": "Bulud proksisi qoşuldu və yoxlanıldı!", + "connectedVerificationPending": "Qoşuldu — yoxlama gözlənilir", + "connectedVerificationPendingWithError": "Qoşuldu — yoxlama gözlənilir: {error}", + "cloudDisabledSuccess": "Bulud uğurla deaktiv edildi", + "syncedSuccess": "Uğurla sinxronlaşdırıldı", + "failedDisable": "Buludu deaktiv etmək mümkün olmadı", + "failedEnable": "Buludu aktiv etmək mümkün olmadı", + "cloudRequestTimeout": "Bulud sorğusunun vaxtı bitdi", + "cloudRequestFailed": "Bulud sorğusu uğursuz oldu", + "cloudWorkerUnreachable": "Bulud işçisinə qoşulmaq mümkün olmadı. Bulud xidmətinin işlədiyinə əmin olun (npm run dev in /cloud).", + "connectionFailed": "Bağlantı uğursuz oldu", + "syncFailed": "Bulud məlumatlarını sinxronlaşdırmaq mümkün olmadı", "cloudflaredTitle": "Cloudflare Quick Tunnel", - "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredDescription": "Bu son nöqtə üçün Cloudflare Quick Tunnel yaradın.", + "cloudflaredUrlNotice": "Müvəqqəti Cloudflare Quick Tunnel yaradır. URL hər yenidən başladıldıqdan sonra dəyişir.", + "cloudflaredEnable": "Tuneli aktivləşdir", + "cloudflaredInstallAndEnable": "Quraşdır və aktivləşdir", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "İşləyir", + "cloudflaredStarting": "Başladılır", + "cloudflaredStoppedState": "Dayandırılıb", + "cloudflaredNotInstalled": "Quraşdırılmayıb", + "cloudflaredUnsupported": "Dəstəklənmir", + "cloudflaredError": "Xəta", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", - "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after every restart.", - "cloudflaredUnsupportedNote": "This platform is not supported for managed installs. Install cloudflared manually or point CLOUDFLARED_BIN to an existing binary.", + "cloudflaredTemporaryNote": "Quick Tunnel URL-ləri müvəqqətidir və hər yenidən başladıldıqdan sonra dəyişəcək.", + "cloudflaredUnsupportedNote": "Bu platformada idarə olunan quraşdırmalar dəstəklənmir. cloudflared-i əl ilə quraşdırın və ya CLOUDFLARED_BIN-i mövcud binar fayla yönəldin.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", - "providerModelsTitle": "{provider} — Models", - "noModelsForProvider": "No models available for this provider.", + "cloudflaredLastError": "Son xəta: {error}", + "providerModelsTitle": "{provider} — Modellər", + "noModelsForProvider": "Bu provayder üçün əlçatan model yoxdur.", "chat": "Chat", - "embedding": "Embedding", - "image": "Image", - "custom": "custom", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "embedding": "Vektorlaşdırma", + "image": "Şəkil", + "custom": "xüsusi", + "modelsCount": "{count, plural, one {# model} other {# model}}", + "sectionTitle": "İnteqrasiya səthi", + "sectionDescription": "OpenAI ilə uyğun API-lər və əməliyyat protokolu son nöqtələri", "tabApis": "API-lər", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "Protokollar", + "tabsAria": "Son nöqtə bölmələri", + "protocolsTitle": "Protokollar", + "protocolsDescription": "MCP və A2A xüsusi müşahidə imkanları və idarəetmə vasitələri olan əsas son nöqtələrdir.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "stdio üzərindən Model Context Protocol", + "a2aCardTitle": "A2A Serveri", + "a2aCardDescription": "Agent2Agent JSON-RPC son nöqtəsi", + "protocolToolsLabel": "Alətlər", + "protocolTasksLabel": "Tapşırıqlar", + "protocolActiveStreamsLabel": "Aktiv axınlar", + "protocolLastActivity": "Son fəaliyyət", + "quickStart": "Sürətli başlanğıc", + "openMcpDashboard": "MCP idarəetməsini aç", + "openA2aDashboard": "A2A idarəetməsini aç", + "mcpQuickStartTitle": "MCP üzrə sürətli başlanğıc", + "mcpQuickStartStep1": "MCP serverini `omniroute --mcp` vasitəsilə işə salın.", + "mcpQuickStartStep2": "MCP müştərinizi stdio nəqliyyatı üzərindən qoşulmaq üçün konfiqurasiya edin.", + "mcpQuickStartStep3": "`omniroute_get_health` və `omniroute_list_combos` kimi alətləri çağırın.", + "a2aQuickStartTitle": "A2A üzrə sürətli başlanğıc", + "a2aQuickStartStep1": "Agent kartını `/.well-known/agent.json` ünvanında aşkarlayın.", + "a2aQuickStartStep2": "`message/send` və ya `message/stream` istifadə edərək `POST /a2a` ünvanına JSON-RPC sorğuları göndərin.", + "a2aQuickStartStep3": "`tasks/get` və `tasks/cancel` istifadə edərək tapşırıqları izləyin və idarə edin.", + "completionsLegacy": "Tamamlamalar (köhnə)", + "completionsLegacyDesc": "Köhnə OpenAI mətn tamamlamaları — həm prompt sətri, həm də messages massivi formatını qəbul edir", "messagesApi": "Mesajlar", "messagesApiDesc": "Claude uyğun provayderlər üçün Native Anthropic Messages API formatı", "imageEdits": "Şəkil Redaktələri", "imageEditsDesc": "AI ilə mövcud şəkilləri redaktə edin və dəyişdirin (rəngləmə, rəngləmə, varyasyonlar)", "batchApi": "Toplu API", "batchApiDesc": "Böyük sorğu qruplarını asinxron şəkildə emal edin (OpenAI-a uyğun)", - "filesApi": "Files API", + "filesApi": "Fayllar API-si", "filesApiDesc": "Toplu emal üçün faylları yükləyin və idarə edin", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Video generasiyası", + "videoDesc": "ComfyUI və Stable Video Diffusion kimi AI modellərindən istifadə edərək videolar yaradın.", + "tailscaleRequestFailed": "Tailscale statusunu yükləmək mümkün olmadı", + "tailscaleEnableFailed": "Tailscale Funnel-i aktivləşdirmək mümkün olmadı", + "tailscaleWaitingForLogin": "Açılmış brauzer vərəqində Tailscale girişini tamamlayın. OmniRoute avtomatik olaraq yenidən cəhd edəcək.", + "tailscaleLoginTimedOut": "Tailscale girişini gözləyərkən vaxt bitdi", + "tailscaleWaitingForFunnel": "Açılmış brauzer vərəqində bu cihaz üçün Funnel-i aktivləşdirin. OmniRoute yoxlamağa davam edəcək.", + "tailscaleFunnelTimedOut": "Tailscale Funnel-in aktivləşdirilməsini gözləyərkən vaxt bitdi", + "tailscaleStarted": "Tailscale Funnel aktivləşdirildi", + "tailscaleDisableFailed": "Tailscale Funnel-i deaktiv etmək mümkün olmadı", + "tailscaleStopped": "Tailscale Funnel deaktiv edildi", + "tailscaleInstallFailed": "Tailscale-i quraşdırmaq mümkün olmadı", + "tailscaleInstallProgress": "İcra olunur...", + "tailscaleInstalled": "Tailscale uğurla quraşdırıldı", + "tailscaleRunning": "İşləyir", + "tailscaleNeedsLogin": "Giriş tələb olunur", + "tailscaleStoppedState": "Dayandırılıb", + "tailscaleNotInstalled": "Quraşdırılmayıb", + "tailscaleUnsupported": "Dəstəklənmir", + "tailscaleError": "Xəta", + "tailscaleDisable": "Funnel-i dayandır", + "tailscaleInstallAndEnable": "Quraşdır və aktivləşdir", + "tailscaleLoginAndEnable": "Daxil ol və aktivləşdir", + "tailscaleEnable": "Funnel-i aktivləşdir", + "tailscaleUrlNotice": "Tailscale .ts.net ünvanınızdan istifadə edir. İlk istifadə zamanı giriş və Funnel təsdiqi tələb oluna bilər.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", - "tailscaleSudoLabel": "Sudo Password (required on macOS/Linux)", - "ngrokTitle": "ngrok Tunnel", - "ngrokRunning": "Running", - "ngrokStarting": "Starting", - "ngrokStoppedState": "Stopped", - "ngrokNeedsAuth": "Needs Auth", - "ngrokNotInstalled": "Not installed", - "ngrokUnsupported": "Unsupported", - "ngrokError": "Error", - "ngrokEnable": "Enable Tunnel", - "ngrokDisable": "Stop Tunnel", - "ngrokUrlNotice": "Creates a public ngrok tunnel.", - "ngrokAuthTokenLabel": "Authtoken (Required if NGROK_AUTHTOKEN not set)", - "ngrokAuthTokenPlaceholder": "Enter your ngrok authtoken", - "ngrokLastError": "Last error: {error}", - "ngrokStarted": "ngrok tunnel started", - "ngrokStopped": "ngrok tunnel stopped", - "ngrokRequestFailed": "Failed to update ngrok tunnel", + "tailscaleNeedsLoginHint": "Bu maşını Tailscale ilə autentifikasiya edin, sonra Funnel-i aktivləşdirin.", + "tailscaleBinaryPath": "Binar fayl: {path}", + "tailscaleLastError": "Son xəta: {error}", + "tailscaleInstallTitle": "Tailscale-i quraşdırın", + "tailscaleInstallIntro": "Tailscale-i bu maşında quraşdırır və OmniRoute-u Funnel-i aktivləşdirmək üçün hazırlayır.", + "tailscaleInstallPasswordHint": "macOS və Linux-da paketin quraşdırılması və demonun işə salınması üçün sudo tələb oluna bilər.", + "tailscaleSudoPlaceholder": "İstəyə bağlı sudo parolu", + "tailscaleInstalling": "Quraşdırılır", + "tailscaleSudoLabel": "Sudo parolu (macOS/Linux-da tələb olunur)", + "ngrokTitle": "ngrok tuneli", + "ngrokRunning": "İşləyir", + "ngrokStarting": "Başladılır", + "ngrokStoppedState": "Dayandırılıb", + "ngrokNeedsAuth": "Autentifikasiya tələb olunur", + "ngrokNotInstalled": "Quraşdırılmayıb", + "ngrokUnsupported": "Dəstəklənmir", + "ngrokError": "Xəta", + "ngrokEnable": "Tuneli aktivləşdirin", + "ngrokDisable": "Tuneli dayandırın", + "ngrokUrlNotice": "İctimai ngrok tuneli yaradır.", + "ngrokAuthTokenLabel": "Authtoken (NGROK_AUTHTOKEN təyin edilməyibsə tələb olunur)", + "ngrokAuthTokenPlaceholder": "ngrok authtoken-inizi daxil edin", + "ngrokLastError": "Son xəta: {error}", + "ngrokStarted": "ngrok tuneli başladıldı", + "ngrokStopped": "ngrok tuneli dayandırıldı", + "ngrokRequestFailed": "ngrok tunelini yeniləmək mümkün olmadı", "apiEndpointsCatalogUnavailable": "API kataloqu mövcud deyil", "apiEndpointsSearchPlaceholder": "Son nöqtələri axtarın...", "apiEndpointsRequiresAuth": "Auth tələb edir", @@ -4108,7 +4108,7 @@ "all": "Hamısı", "more": "+{count} daha", "showInternalTooltip": "Daxili marşrutları göstərin və ya gizlədin (defolt olaraq gizlidir)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Bearer autentifikasiyası", "requestBody": "Sorğu gövdəsi", "close": "Bağla", "tryIt": "Sınayın", @@ -4139,14 +4139,14 @@ "badgeInternalTooltip": "Bu, daxili sistem son nöqtəsidir", "tierAll": "Hamısı", "tierAuth": "Autentifikasiya olunmuş", - "tierLoopback": "Loopback", + "tierLoopback": "Geri dövrə", "tierAlwaysProtected": "Həmişə Qorunan", "tierPublic": "İctimai", "hideInternal": "Daxililəri Gizlət", "showInternal": "Daxililəri Göstər", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Fərdi sistem promptu", + "customSystemPromptDescription": "Hər model sorğusuna fərdi sistem promptu əlavə edin", + "customSystemPromptPlaceholder": "məs., Həmişə pirat kimi danış...", "obsidianEnterToken": "Zəhmət olmasa, Obsidian API tokeni daxil edin", "obsidianConnectFailed": "Bağlantı qurulmadı", "obsidianConnectionFailed": "Bağlantı uğursuz oldu", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "Token konfiqurasiya edilib. Notion alətləri MCP vasitəsilə mövcuddur." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Son nöqtə proksisi", + "tabApiEndpoints": "API son nöqtələri", + "apiEndpointsTitle": "API son nöqtələri", + "apiEndpointsDescription": "Digər tətbiq və xidmətlər tərəfindən istifadə edilə bilən backend API son nöqtələri. Bu bölmədə sənədləşdirmə və sınaq imkanları ilə birlikdə bütün mövcud REST API-lər göstəriləcək.", + "comingSoon": "Tezliklə", + "plannedFeatures": "Planlaşdırılan funksiyalar", + "featureRestApi": "İnteraktiv sənədləşdirmə ilə REST API son nöqtələri kataloqu", + "featureWebhooks": "Webhook konfiqurasiyası və hadisə abunəlikləri", + "featureSwagger": "OpenAPI / Swagger spesifikasiyasının avtomatik yaradılması", + "featureAuth": "Hər son nöqtə üçün API açarı və OAuth əhatə dairəsinin idarə edilməsi" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP idarə paneli yüklənir...", + "activate": "aktivləşdir", + "deactivate": "deaktivləşdir", + "confirmSwitchCombo": "\"{combo}\" kombinasiyasını {action}?", + "switchComboFailed": "Kombinasiyanın vəziyyətini dəyişmək alınmadı.", + "switchComboSuccess": "\"{combo}\" kombinasiyası yeniləndi.", + "confirmApplyProfile": "\"{profile}\" dayanıqlılıq profili tətbiq edilsin?", + "applyProfileFailed": "Dayanıqlılıq profilini tətbiq etmək alınmadı.", + "applyProfileSuccess": "\"{profile}\" profili tətbiq edildi.", + "confirmResetBreakers": "Bütün dövrə qoruyucuları sıfırlansın?", + "resetBreakersFailed": "Dövrə qoruyucularını sıfırlamaq alınmadı.", + "resetBreakersSuccess": "Dövrə qoruyucuları sıfırlandı.", + "processStatus": "Prosesin vəziyyəti", "online": "Online", "offline": "Offline", "disableLabel": "{label} deaktiv et", @@ -4237,119 +4237,119 @@ "mcpStep2": "MCP müştərinizi stdio ötürməsi üzərindən qoşulmaq üçün konfiqurasiya edin.", "mcpStep3": "{code1} və {code2} kimi alətləri çağırın.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "Sessiyanın işləmə müddəti", + "lastHeartbeat": "Son nəbz siqnalı", + "activity24h": "Fəaliyyət (24 saat)", + "totalCalls": "Ümumi çağırış sayı", + "successRate": "Uğur faizi", + "avgLatency": "Orta gecikmə", + "topTools": "Ən çox istifadə olunan alətlər", + "noToolCalls24h": "Son 24 saat ərzində heç bir alət çağırışı olmayıb.", + "runtimeDetails": "İcra mühiti təfərrüatları", + "transport": "Nəqliyyat", + "scopesEnforced": "Əhatə dairələri məcburi tətbiq olunur", + "yes": "bəli", + "no": "xeyr", + "lastCall": "Son çağırış", + "heartbeatPath": "Nəbz siqnalının yolu", + "operationalControls": "Əməliyyat idarəetmələri", + "switchCombo": "Kombinasiyanı dəyiş", + "inactive": "qeyri-aktiv", + "active": "aktiv", + "activateCombo": "Kombinasiyanı aktivləşdir", + "deactivateCombo": "Kombinasiyanı deaktivləşdir", + "applyResilienceProfile": "Dayanıqlılıq profilini tətbiq et", + "profileAggressive": "aqressiv", + "profileBalanced": "balanslaşdırılmış", + "profileConservative": "mühafizəkar", + "applyProfile": "Profili tətbiq et", + "resetCircuitBreakers": "Dövrə kəsicilərini sıfırla", + "resetCircuitBreakersHelp": "Provayderlər üçün cari kəsici vəziyyətini və uğursuzluq sayğaclarını təmizləyir.", + "resetAllBreakers": "Bütün kəsiciləri sıfırla", + "toolsAndScopes": "Alətlər və icazə sahələri", + "tableTool": "Alət", + "tableScopes": "İcazə sahələri", + "tablePhase": "Mərhələ", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Audit jurnalı", + "auditSummary": "Çağırışlar: {total} | {totalPages} səhifədən {page}-ci", + "allTools": "Bütün alətlər", + "allResults": "Bütün nəticələr", + "success": "Uğurlu", + "failure": "Uğursuz", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", + "loadingAuditEntries": "Audit qeydləri yüklənir...", + "noAuditEntriesForFilters": "Cari filtrlər üzrə audit qeydi tapılmadı.", + "tableTimestamp": "Vaxt möhürü", + "tableDuration": "Müddət", + "tableResult": "Nəticə", + "tableApiKey": "API açarı", + "failed": "uğursuz oldu", + "previous": "Əvvəlki", + "next": "Növbəti", + "apiKeyId": "API açarının ID-si", + "offset": "Başlanğıc mövqeyi", "limit": "Limit", - "tool": "Tool" + "tool": "Alət" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A idarə paneli yüklənir...", + "confirmCancelTask": "{taskId} tapşırığı ləğv edilsin?", + "cancelTaskFailed": "Tapşırığı ləğv etmək mümkün olmadı.", + "cancelTaskSuccess": "{taskId} tapşırığı ləğv edildi.", + "smokeSendFailed": "message/send smoke testi uğursuz oldu.", + "smokeSendSuccessWithTask": "message/send uğurludur (tapşırıq {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream smoke testi uğursuz oldu.", + "smokeStreamSuccessWithTask": "message/stream uğurludur (tapşırıq {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream tapşırıq ID-si olmadan tamamlandı.", + "health": "Sağlamlıq vəziyyəti", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "Ümumi tapşırıqlar", + "activeStreams": "Aktiv axınlar", + "lastTask": "Son tapşırıq", + "taskStateOverview": "Tapşırıq vəziyyətinə ümumi baxış", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "göndərilib", + "working": "icra olunur", + "completed": "tamamlanıb", + "failed": "uğursuz olub", + "cancelled": "ləğv edilib" }, - "agentCard": "Agent card", + "agentCard": "Agent kartı", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "Versiya", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "İmkanlar", + "agentCardNotAvailable": "Agent kartı mövcud deyil.", + "quickValidation": "Sürətli yoxlama", + "quickValidationDescription": "Canlı `/a2a` son nöqtəsi vasitəsilə sınaq sorğularını icra edir.", + "runMessageSend": "message/send sorğusunu icra et", + "runMessageStream": "message/stream sorğusunu icra et", + "taskManagement": "Tapşırıqların idarə edilməsi", + "taskSummary": "{total} tapşırıq | {totalPages} səhifədən {page}-ci səhifə", + "allStates": "hamısı", + "allSkills": "bütün bacarıqlar", + "loadingTasks": "Tapşırıqlar yüklənir...", + "noTasksForFilters": "Cari filtrlərə uyğun tapşırıq tapılmadı.", + "tableTask": "Tapşırıq", + "tableSkill": "Bacarıq", + "tableState": "Vəziyyət", + "tableUpdated": "Yenilənib", + "tableActions": "Əməliyyatlar", + "view": "Bax", + "cancel": "Ləğv et", + "previous": "Əvvəlki", + "next": "Növbəti", + "taskDetail": "Tapşırıq təfərrüatları", + "close": "Bağla", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", + "events": "Hadisələr", + "artifacts": "Artefaktlar", + "tablePhase": "Cədvəl mərhələsi", + "offset": "Yerdəyişmə", "limit": "Limit", - "skill": "Skill", + "skill": "Bacarıq", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "mesaj/göndər", "rpcMethodStream": "mesaj/axın", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Əməliyyatlar", + "addMemory": "Yaddaş əlavə et", + "allTypes": "Bütün növlər", "cancel": "Ləğv et", "checkHealth": "Sağlamlığı yoxlayın", "checkingHealth": "Yoxlanır...", @@ -4382,17 +4382,17 @@ "howWorksToggle": "Necə işləyir", "howWorksContent": "1. Avtomatik çıxarış: hər cavabın sonunda faktlar və epizodlar avtomatik olaraq aşkar edilir və yadda saxlanılır.\n2. Axtarış: hər cavabdan əvvəl ən uyğun yaddaşlar FTS5 (dəqiq), vektor (semantik) və ya hibrid RRF vasitəsilə axtarılır.\n3. Daxiletmə: cavab keyfiyyətini artırmaq üçün müvafiq yaddaşlar assistent kontekstinə daxil edilir.\n4. İdarəetmə: köhnə yaddaşlara baxmaq, redaktə etmək, ixrac etmək və sıxlaşdırmaq üçün bu səhifədən istifadə edin." }, - "content": "Content", + "content": "Məzmun", "contentPlaceholder": "Yadda saxlamaq üçün dəyər və ya JSON məzmunu", - "created": "Created", - "delete": "Delete", + "created": "Yaradılma tarixi", + "delete": "Sil", "deleteConfirmDesc": "Bu əməliyyat geri qaytarıla bilməz. Yaddaş birdəfəlik silinəcək.", "deleteConfirmTitle": "Yaddaş silinsin?", - "description": "View and manage stored memory entries", + "description": "Saxlanılmış yaddaş qeydlərinə baxın və onları idarə edin", "editMemory": "Yaddaşı redaktə et", "editModal": { "title": "Yaddaşı Redaktə Et", - "metadataLabel": "Metadata (JSON)", + "metadataLabel": "Metaməlumatlar (JSON)", "metadataInvalid": "Yanlış JSON", "saveFailed": "Yaddaşı saxlamaq mümkün olmadı" }, @@ -4433,7 +4433,7 @@ "reindexFailed": "Yenidən indeksləşdirməni başlatmaq mümkün olmadı", "keywordLabel": "Açar söz (FTS5)", "keywordReason": "Açar sözlə axtarış həmişə mövcuddur", - "embeddingLabel": "Embedding", + "embeddingLabel": "Vektorlaşdırma", "vectorStoreLabel": "Vektor Anbarı", "qdrantLabel": "Qdrant", "rerankLabel": "Yenidən sıralama", @@ -4444,20 +4444,20 @@ "configureCta": "Konfiqurasiya et", "vectorStoreInstallHint": "Vektor axtarışını aktivləşdirmək üçün: npm install sqlite-vec (yerli Node.js tələb olunur, WASM yox), sonra yenidən başladın." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Epizodik", + "export": "İxrac et", + "factual": "Faktoloji", "healthUnknown": "Sağlamlıq məlum deyil", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Uyğunluq faizi", + "import": "İdxal et", "importError": "Faylı idxal etmək alınmadı", "importResult": "{imported} idxal edildi, {skipped} buraxıldı", - "key": "Key", + "key": "Açar", "keyPlaceholder": "məs. istifadəçi.tercihlər.mövzu", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Yaddaş qeydləri", "next": "Sonrakı", - "noMemories": "No memories found", + "noMemories": "Yaddaş qeydi tapılmadı", "pageInfo": "{page} səhifədən {totalPages} (cəmi {total})", "pipelineError": "Boru kəməri xətası", "pipelineOk": "Boru kəməri OK ({latencyMs}ms)", @@ -4474,7 +4474,7 @@ "simulate": "Simulyasiya et", "resultsTitle": "{count} nəticə", "resolutionTitle": "Axtarışın həlli", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Vektorlaşdırma", "resolutionStore": "Vektor anbarı", "resolutionStrategy": "İstifadə olunan strategiya", "rerankApplied": "Yenidən sıralama tətbiq edildi", @@ -4485,7 +4485,7 @@ "errorFetch": "Önbaxışı əldə etmək alınmadı" }, "previous": "Əvvəlki", - "procedural": "Procedural", + "procedural": "Prosedur", "qdrant": { "title": "Qdrant (Vektor Anbarı Səviyyə 2)", "description": "Ölçülə bilən semantik axtarış üçün istəyə bağlı Qdrant inteqrasiyası", @@ -4534,8 +4534,8 @@ }, "save": "Saxla", "saving": "Yadda saxlanılır...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Yaddaşda axtar...", + "semantic": "Semantik", "summarize": { "title": "Köhnə yaddaşları yığcamlaşdır", "noCandidates": "Yığcamlaşdırma üçün uyğun yaddaş yoxdur (meyar: >30 gün köhnə).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Yaddaşlar", - "playground": "Playground", - "engine": "Engine" + "playground": "Sınaq meydançası", + "engine": "Mühərrik" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Yaddaşın idarə edilməsi", + "tokensUsed": "İstifadə edilmiş tokenlər", "tooltip": { "totalEntries": "Bu API açarı üçün saxlanılan ümumi yaddaşlar", "tokensUsed": "Aktiv yaddaşlar tərəfindən tutulan təxmini ümumi tokenlər", @@ -4558,15 +4558,15 @@ "procedural": "Köməkçinin əməl etməli olduğu prosedurlar, iş axınları və təlimatlar", "semantic": "Konseptlər, üstünlüklər və domen bilikləri" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Ümumi qeydlər", + "type": "Növ", "memoryEnabled": "Yaddaş aktivdir" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Bacarıqlar", + "description": "Süni intellekt bacarıqlarını idarə və monitorinq edin", + "skillsTab": "Bacarıqlar", + "executionsTab": "İcralar", "selectSkillToInspect": "Yoxlamaq üçün soldan bir bacarıq seçin.", "schemaTab": "Sxem", "handlerTab": "İşləyici", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Testi işə sal (yer tutucu)", "setModeAria": "Rejimi {mode} olaraq təyin et", "uninstallSkill": "Bacarığı quraşdırmadan çıxar", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "İzolyasiya edilmiş mühit", + "loading": "Bacarıqlar yüklənir...", + "noSkills": "Heç bir bacarıq tapılmadı", + "noExecutions": "Heç bir icra tapılmadı", + "enabled": "Aktiv", + "disabled": "Deaktiv", "delete": "Sil", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "Versiya", + "tableDescription": "Təsvir", + "skill": "Bacarıq", + "status": "Vəziyyət", + "duration": "Müddət", + "time": "Vaxt", + "sandboxConfig": "Sandbox konfiqurasiyası", + "cpuLimit": "CPU limiti", + "cpuLimitDesc": "Hər bacarıq üçün maksimum icra müddəti", + "memoryLimit": "Yaddaş limiti", + "memoryLimitDesc": "Maksimum yaddaş ayrılması", + "timeout": "Taymaut", + "timeoutDesc": "Cavab üçün maksimum gözləmə müddəti", + "networkAccess": "Şəbəkə girişi", + "networkAccessDesc": "Xarici şəbəkə sorğularına icazə ver", + "mode": "Rejim", "q": "Q", "filterSkillsPlaceholder": "Bacarıqları ad, təsvir və ya etiketlə süzün", "allModes": "Bütün rejimlər", @@ -4607,7 +4607,7 @@ "enabledSkills": "Aktivdir", "totalExecutions": "İcralar", "successRate": "Uğur dərəcəsi", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Bazar", "applyFilters": "Filtrləri tətbiq et", "popularDefaultsLabel": "Seçilmiş provayder üçün standart olaraq populyar:", "onMode": "AÇIQ", @@ -4642,93 +4642,93 @@ "installSkill": "Bacarıq quraşdırın" }, "health": { - "title": "System Health", - "description": "Real-time monitoring of your OmniRoute instance", - "healthy": "Healthy", - "degraded": "Degraded", - "down": "Down", - "uptime": "Uptime", - "memory": "Memory", - "memoryRss": "Memory (RSS)", - "heap": "Heap", + "title": "Sistemin vəziyyəti", + "description": "OmniRoute instansiyanızın real vaxt rejimində monitorinqi", + "healthy": "Sağlam", + "degraded": "Qismən nasaz", + "down": "İşləmir", + "uptime": "Fasiləsiz işləmə müddəti", + "memory": "Yaddaş", + "memoryRss": "Yaddaş (RSS)", + "heap": "Yığın yaddaşı", "cpu": "CPU", - "database": "Database", - "version": "Version", - "lastCheck": "Last Check", - "providerHealth": "Provider Health", - "systemMetrics": "System Metrics", - "tokenHealth": "Token Health", - "refreshAll": "Refresh All", - "checkNow": "Check Now", - "loadingHealth": "Loading health data...", - "failedToLoad": "Failed to load health data: {error}", - "retry": "Retry", - "allOperational": "All systems operational", - "issuesDetected": "System issues detected", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", - "updatedAt": "Updated {time}", - "latency": "Latency", + "database": "Verilənlər bazası", + "version": "Versiya", + "lastCheck": "Son yoxlama", + "providerHealth": "Provayderlərin vəziyyəti", + "systemMetrics": "Sistem metrikaları", + "tokenHealth": "Tokenlərin vəziyyəti", + "refreshAll": "Hamısını yenilə", + "checkNow": "İndi yoxla", + "loadingHealth": "Vəziyyət məlumatları yüklənir...", + "failedToLoad": "Vəziyyət məlumatlarını yükləmək alınmadı: {error}", + "retry": "Yenidən cəhd et", + "allOperational": "Bütün sistemlər işləkdir", + "issuesDetected": "Sistem problemləri aşkarlandı", + "healthVerdictReady": "OmniRoute hazırdır", + "healthVerdictActionRequired": "Tam fəaliyyəti bərpa etmək üçün tədbir tələb olunur", + "healthVerdictCoolingDown": "Son dəyişikliklərdən sonra soyuma gedir", + "healthSubtitle": "Sistemin sağlamlıq yoxlaması", + "advancedDiagnosticsTitle": "Qabaqcıl diaqnostika", + "hide": "Gizlət", + "show": "Göstər", + "updatedAt": "{time} tarixində yeniləndi", + "latency": "Gecikmə", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", "millisecondsShort": "{value}ms", "notAvailable": "—", - "totalRequests": "Total requests", - "noDataYet": "No data yet", - "promptCache": "Prompt Cache", - "entries": "Entries", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "signatureCache": "Signature Cache", - "signatureDefaults": "Defaults", - "signatureTool": "Tool", - "signatureFamily": "Family", - "signatureSession": "Session", - "recovering": "Recovering", - "noCBData": "No circuit breaker data available. Make some requests first.", - "providerHealthStatusAria": "Provider health status", - "issuesLabel": "Issues Detected", - "operational": "Operational", - "providers": "Providers", - "configuredProvidersLabel": "Configured in dashboard", - "configuredProvidersHint": "Providers with credentials saved in /dashboard/providers, regardless of runtime state.", - "activeProviders": "{count} active", - "activeProvidersHint": "Configured providers currently enabled for routing requests.", - "monitoredProviders": "{count} monitored", - "monitoredProvidersHint": "Providers currently tracked by circuit-breaker health monitors.", - "healthyCount": "{count} healthy", + "totalRequests": "Ümumi sorğu sayı", + "noDataYet": "Hələ məlumat yoxdur", + "promptCache": "Sorğu keş yaddaşı", + "entries": "Qeydlər", + "hitRate": "Keşə düşmə faizi", + "hitsMisses": "Uğurlu / uğursuz keş axtarışları", + "signatureCache": "İmza keş yaddaşı", + "signatureDefaults": "Standart dəyərlər", + "signatureTool": "Alət", + "signatureFamily": "Ailə", + "signatureSession": "Sessiya", + "recovering": "Bərpa olunur", + "noCBData": "Avtomatik qoruma mexanizmi haqqında məlumat yoxdur. Əvvəlcə bir neçə sorğu göndərin.", + "providerHealthStatusAria": "Provayderlərin sağlamlıq vəziyyəti", + "issuesLabel": "Problemlər aşkarlandı", + "operational": "İşləkdir", + "providers": "Provayderlər", + "configuredProvidersLabel": "İdarəetmə panelində konfiqurasiya edilib", + "configuredProvidersHint": "İcra vəziyyətindən asılı olmayaraq, etimadnamələri /dashboard/providers bölməsində saxlanılan provayderlər.", + "activeProviders": "{count} aktiv", + "activeProvidersHint": "Hazırda sorğuların yönləndirilməsi üçün aktiv edilmiş konfiqurasiyalı provayderlər.", + "monitoredProviders": "{count} izlənilir", + "monitoredProvidersHint": "Hazırda avtomatik qoruma mexanizminin sağlamlıq monitorları tərəfindən izlənilən provayderlər.", + "healthyCount": "{count} sağlam", "nodeVersion": "Node {version}", - "failures": "{count} failure", - "failuresPlural": "{count} failures", - "lastFailure": "Last", - "rateLimitStatus": "Rate Limit Status", - "activeLimiters": "{count} active limiter", - "activeLimitersPlural": "{count} active limiters", - "queued": "Queued", - "queuedCount": "{count} queued", - "running": "running", - "runningCount": "{count} running", + "failures": "{count} xəta", + "failuresPlural": "{count} xəta", + "lastFailure": "Sonuncu", + "rateLimitStatus": "Sorğu tezliyi limitinin vəziyyəti", + "activeLimiters": "{count} aktiv məhdudlaşdırıcı", + "activeLimitersPlural": "{count} aktiv məhdudlaşdırıcı", + "queued": "Növbədədir", + "queuedCount": "{count} növbədədir", + "running": "işləyir", + "runningCount": "{count} işləyir", "ok": "OK", - "activeLockouts": "Active Lockouts", - "resetConfirm": "Reset all circuit breakers to healthy state? This will clear all failure counts and restore all providers to operational status.", - "resetAllTitle": "Reset all circuit breakers to healthy state", - "resetting": "Resetting...", - "resetAll": "Reset All", - "until": "Until {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "activeLockouts": "Aktiv bloklamalar", + "resetConfirm": "Bütün dövrə açarları sağlam vəziyyətə sıfırlansın? Bu, bütün nasazlıq saylarını təmizləyəcək və bütün provayderləri işlək vəziyyətə qaytaracaq.", + "resetAllTitle": "Bütün dövrə açarlarını sağlam vəziyyətə sıfırla", + "resetting": "Sıfırlanır...", + "resetAll": "Hamısını sıfırla", + "until": "{time} vaxtınadək", + "limitExhausted": "Tükənib", + "learnedFromHeaders": "Başlıqlardan öyrənilib", + "remainingOfLimit": "{remaining}/{limit} qalıb", + "throttleStatus": "Məhdudlaşdırma: {value}", + "lastHeaderUpdate": "Başlıq yeniləməsi: {age}", "databaseHealth": "Verilənlər Bazasının Sağlamlığı", "databaseHealthDescription": "Köhnəlmiş kvota/domen sətirlərini və xətalı kombinasiya istinadlarını diaqnostika və təmir edin.", - "status": "Status", + "status": "Vəziyyət", "attentionNeeded": "Diqqət tələb olunur", "repairs": "Təmirlər", "repairing": "Təmir edilir...", @@ -4785,131 +4785,131 @@ "lastError": "Son xəta" }, "telemetry": { - "title": "System Telemetry", - "description": "Rolling request, runtime, session, and memory signals from this OmniRoute process.", - "uptime": "Uptime", - "totalRequests": "Total Requests", - "avgLatency": "Avg Latency", - "errorRate": "Error Rate", - "activeConnections": "Active Connections", - "memoryUsage": "Memory Usage", - "latencyTrend": "Latency trend", - "throughputTrend": "Throughput trend", - "memoryTrend": "Memory trend", - "refresh": "Refresh", - "updatedAt": "Updated {time}", - "loadFailed": "Failed to load telemetry.", - "partialData": "Telemetry is partially available: {error}" + "title": "Sistem telemetriyası", + "description": "Bu OmniRoute prosesindən sorğular, icra müddəti, sessiya və yaddaş üzrə davamlı yenilənən siqnallar.", + "uptime": "İşləmə müddəti", + "totalRequests": "Ümumi sorğu sayı", + "avgLatency": "Orta gecikmə", + "errorRate": "Xəta faizi", + "activeConnections": "Aktiv bağlantılar", + "memoryUsage": "Yaddaş istifadəsi", + "latencyTrend": "Gecikmə tendensiyası", + "throughputTrend": "Ötürmə qabiliyyəti tendensiyası", + "memoryTrend": "Yaddaş tendensiyası", + "refresh": "Yenilə", + "updatedAt": "{time} tarixində yeniləndi", + "loadFailed": "Telemetriyanı yükləmək alınmadı.", + "partialData": "Telemetriya qismən əlçatandır: {error}" }, "mitm": { - "title": "MITM Proxy", - "description": "Transparent proxy for intercepting and routing client requests.", - "enable": "Enable MITM Proxy", - "enableDesc": "Start or stop the local interception process and DNS override.", - "status": "Status", - "running": "Running", - "stopped": "Stopped", - "start": "Start", - "stop": "Stop", - "refresh": "Refresh", - "port": "Proxy Port", - "apiKey": "Router API Key", - "apiKeyPlaceholder": "Optional; falls back to a local key", - "sudoPassword": "Sudo Password", - "cachedPassword": "Cached for this process", - "saveSettings": "Save Settings", - "settingsSaved": "MITM settings saved.", - "startedSuccess": "MITM proxy started.", - "stoppedSuccess": "MITM proxy stopped.", - "saveFailed": "Failed to update MITM settings.", - "loadFailed": "Failed to load MITM settings.", - "invalidPort": "Transparent MITM interception currently requires port 443.", - "certificate": "CA Certificate", - "certificateReady": "Certificate is available for client trust installation.", - "certificateMissing": "Certificate has not been generated yet.", - "available": "Available", - "missing": "Missing", - "downloadCert": "Download CA Certificate", - "regenerateCert": "Regenerate Certificate", - "regenerateConfirm": "This will invalidate existing client trust. Continue?", - "regenerateSuccess": "MITM certificate regenerated.", - "regenerateFailed": "Failed to regenerate MITM certificate.", - "targetRoutes": "Target Routes", - "interceptedRequests": "Intercepted Requests", - "activeConnections": "Active Connections", - "dnsConfigured": "DNS Configured", + "title": "MITM Proksi", + "description": "Müştəri sorğularını ələ keçirmək və yönləndirmək üçün şəffaf proksi.", + "enable": "MITM Proksini aktivləşdir", + "enableDesc": "Lokal ələ keçirmə prosesini və DNS əvəzləməsini başladın və ya dayandırın.", + "status": "Vəziyyət", + "running": "İşləyir", + "stopped": "Dayandırılıb", + "start": "Başlat", + "stop": "Dayandır", + "refresh": "Yenilə", + "port": "Proksi portu", + "apiKey": "Router API açarı", + "apiKeyPlaceholder": "İstəyə bağlıdır; olmadıqda lokal açardan istifadə edilir", + "sudoPassword": "Sudo parolu", + "cachedPassword": "Bu proses üçün keşlənib", + "saveSettings": "Parametrləri yadda saxla", + "settingsSaved": "MITM parametrləri yadda saxlanıldı.", + "startedSuccess": "MITM proksisi başladıldı.", + "stoppedSuccess": "MITM proksisi dayandırıldı.", + "saveFailed": "MITM parametrlərini yeniləmək alınmadı.", + "loadFailed": "MITM parametrlərini yükləmək alınmadı.", + "invalidPort": "Şəffaf MITM ələ keçirməsi hazırda 443 portunu tələb edir.", + "certificate": "CA sertifikatı", + "certificateReady": "Sertifikat müştəri etimadının quraşdırılması üçün əlçatandır.", + "certificateMissing": "Sertifikat hələ yaradılmayıb.", + "available": "Əlçatandır", + "missing": "Mövcud deyil", + "downloadCert": "CA sertifikatını endir", + "regenerateCert": "Sertifikatı yenidən yarat", + "regenerateConfirm": "Bu, mövcud müştəri etimadını etibarsız edəcək. Davam edilsin?", + "regenerateSuccess": "MITM sertifikatı yenidən yaradıldı.", + "regenerateFailed": "MITM sertifikatını yenidən yaratmaq alınmadı.", + "targetRoutes": "Hədəf marşrutları", + "interceptedRequests": "Ələ keçirilmiş sorğular", + "activeConnections": "Aktiv bağlantılar", + "dnsConfigured": "DNS konfiqurasiya edilib", "pid": "PID", - "lastIntercept": "Last Intercept", - "target": "Target", + "lastIntercept": "Son ələ keçirmə", + "target": "Hədəf", "host": "Host", - "localPort": "Local Port", - "endpoints": "Endpoints", - "enabled": "Enabled", - "configured": "Configured", - "yes": "Yes", - "no": "No", - "noTargets": "No target routes configured." + "localPort": "Lokal port", + "endpoints": "Son nöqtələr", + "enabled": "Aktivdir", + "configured": "Konfiqurasiya edilib", + "yes": "Bəli", + "no": "Xeyr", + "noTargets": "Heç bir hədəf marşrut konfiqurasiya edilməyib." }, "limits": { - "title": "Limits & Quotas", - "rateLimit": "Rate Limit", - "remaining": "Remaining", - "requestsPerMinute": "Requests/min", - "tokensPerMinute": "Tokens/min", - "dailyLimit": "Daily Limit" + "title": "Limitlər və kvotalar", + "rateLimit": "Sürət limiti", + "remaining": "Qalıq", + "requestsPerMinute": "Sorğu/dəq", + "tokensPerMinute": "Token/dəq", + "dailyLimit": "Gündəlik limit" }, "logs": { - "title": "Logs", - "requestLogs": "Request Logs", - "proxyLogs": "Proxy Logs", - "auditLog": "Audit Log", + "title": "Jurnallar", + "requestLogs": "Sorğu jurnalları", + "proxyLogs": "Proksi jurnalları", + "auditLog": "Audit jurnalı", "console": "Console", - "auditLogDesc": "Administrative actions and security events", - "loading": "Loading...", - "refresh": "Refresh", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", - "showing": "Showing {count} entries (offset {offset})", - "search": "Search", - "timestamp": "Timestamp", - "action": "Action", - "actor": "Actor", - "target": "Target", - "details": "Details", - "ipAddress": "IP Address", + "auditLogDesc": "İnzibati əməliyyatlar və təhlükəsizlik hadisələri", + "loading": "Yüklənir...", + "refresh": "Yenilə", + "filterByAction": "Əməliyyata görə filtrlə...", + "filterByActor": "İcraçıya görə filtrlə...", + "filterEntriesAria": "Audit jurnalı qeydlərini filtrlə", + "filterByActionTypeAria": "Əməliyyat növünə görə filtrlə", + "filterByActorAria": "İcraçıya görə filtrlə", + "refreshAuditLogAria": "Audit jurnalını yenilə", + "tableAria": "Audit jurnalı qeydləri", + "failedFetchAuditLog": "Audit jurnalını əldə etmək mümkün olmadı", + "showing": "{count} qeyd göstərilir (yerdəyişmə {offset})", + "search": "Axtar", + "timestamp": "Vaxt möhürü", + "action": "Əməliyyat", + "actor": "İcraçı", + "target": "Hədəf", + "details": "Təfərrüatlar", + "ipAddress": "IP ünvanı", "notAvailable": "—", - "noEntries": "No audit log entries found", - "previous": "Previous", - "next": "Next", - "providerWarningTitle": "Provider Warnings", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", - "providerWarningDesc": "Some providers returned warnings during request processing", + "noEntries": "Audit jurnalı qeydi tapılmadı", + "previous": "Əvvəlki", + "next": "Növbəti", + "providerWarningTitle": "Provayder xəbərdarlıqları", + "viewDetails": "Təfərrüatlara bax", + "eventMetadata": "Hadisə metadatası", + "eventPayload": "Hadisə məlumatları", + "requestId": "Sorğu ID-si", + "providerWarningDesc": "Sorğunun emalı zamanı bəzi provayderlər xəbərdarlıq qaytardı", "a": "A", - "offset": "Offset", + "offset": "Ofset", "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", - "auditModalSubtitle": "Event details and metadata", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "status": "Vəziyyət", + "resourceType": "Resurs növü", + "totalEntries": "Ümumi qeydlər", + "tab": "Vərəq", + "auditModalSubtitle": "Hadisə təfərrüatları və metadatası", + "close": "Bağla", + "runningRequests": "Aktiv sorğular", + "runningRequestsDesc": "Hazırda icra olunan yuxarı axın sorğularının real vaxt görünüşü", "clearAll": "Hamısını Sil", "confirmClearActiveRequests": "Bütün aktiv sorğular silinsin?", "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "provider": "Provayder", + "account": "Hesab", + "elapsed": "Keçən vaxt", "activeStage": "Mərhələ", "activeStageUnknown": "Hələ upstream-ə göndərilməyib", "activeStageRegistered": "Qeydə alındı", @@ -4919,99 +4919,99 @@ "activeStageRateLimitSlotAcquired": "Rate limit slotu əldə edildi", "activeStageSendingToProvider": "Upstream-ə göndərilir", "activeStageProviderResponseStarted": "Upstream cavabı başladı", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Say", + "payloads": "Faydalı yüklər", + "viewPayloads": "Bax", + "activeCount": "{count} aktiv", + "clientPayload": "Müştəri sorğusunun faydalı yükü", + "upstreamPayload": "Yuxarı axın provayderinin faydalı yükü", + "upstreamNotSentYet": "Hələ yuxarı axına göndərilməyib", + "runningRequestDetailMeta": "Hesab: {account} — Keçən vaxt: {elapsed}", + "export": "İxrac et", + "exporting": "İxrac edilir...", + "exportFailed": "İxrac uğursuz oldu", "cleanHistoryButton": "Tarixçəni təmizlə", "cleanHistoryTitle": "Jurnal tarixçəsi təmizlənsin?", "cleanHistoryMessage": "Bu, DATA_DIR/call_logs altındakı bütün sorğu jurnalı sətirlərini, köhnə təfərrüat sətirlərini və yerli artefakt fayllarını həmişəlik təmizləyir. Canlı səhifə təmizləmədən sonra yenilənəcək.", "cleanHistoryConfirm": "Tarixçəni təmizlə", "cleanHistoryCancel": "Ləğv et", "cleanHistorySuccess": "{deleted} jurnal qeydi, {deletedArtifacts} artefakt və {deletedDetailedLogs} köhnə təfərrüat sətri təmizləndi.", - "cleanHistoryEmpty": "No request log history was found.", - "cleanHistoryFailed": "Failed to clean log history.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "cleanHistoryEmpty": "Sorğu jurnalı tarixçəsi tapılmadı.", + "cleanHistoryFailed": "Jurnal tarixçəsini təmizləmək alınmadı.", + "timeRange": "Vaxt aralığı", + "lastNHours": "Son {hours}", + "defaultRange": "standart", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", - "filterByLevel": "Filter by log level", - "searchPlaceholder": "Search logs…", - "searchAria": "Search log entries", - "disableAutoScroll": "Disable auto-scroll", - "enableAutoScroll": "Enable auto-scroll", - "autoScroll": "Auto-scroll", - "entryCount": "{count, plural, one {# entry} other {# entries}}", - "lastHour": "Last 1h", - "updatedAt": "Updated {time}", - "fileLoggingRequired": "Make sure the application is writing logs to a file (APP_LOG_TO_FILE=true)", - "consoleAria": "Application console logs", - "applicationConsole": "Application Console", - "emptyFileLoggingHint": "Ensure APP_LOG_TO_FILE=true is set in your .env file" + "fetchFailed": "Jurnalları əldə etmək alınmadı", + "copyFailed": "Jurnal qeydini kopyalamaq alınmadı", + "copyLogEntry": "Jurnal qeydini kopyala", + "filterByLevel": "Jurnal səviyyəsinə görə filtrlə", + "searchPlaceholder": "Jurnallarda axtar…", + "searchAria": "Jurnal qeydlərini axtar", + "disableAutoScroll": "Avtomatik sürüşdürməni deaktiv et", + "enableAutoScroll": "Avtomatik sürüşdürməni aktiv et", + "autoScroll": "Avtomatik sürüşdürmə", + "entryCount": "{count, plural, one {# qeyd} other {# qeyd}}", + "lastHour": "Son 1 saat", + "updatedAt": "{time} tarixində yeniləndi", + "fileLoggingRequired": "Tətbiqin jurnalları fayla yazdığından əmin olun (APP_LOG_TO_FILE=true)", + "consoleAria": "Tətbiq konsolu jurnalları", + "applicationConsole": "Tətbiq Konsolu", + "emptyFileLoggingHint": ".env faylınızda APP_LOG_TO_FILE=true parametrinin təyin edildiyinə əmin olun" }, - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", - "tokens": "tokens" + "compressionLogTitle": "Sıxılma Jurnalı", + "compressionLogEmpty": "Hələ sıxılmış sorğu yoxdur. Sorğular sıxılma aktiv halda emal edildikdə sıxılma statistikası burada görünəcək.", + "tokens": "tokenlər" }, "onboarding": { - "welcome": "Welcome", - "tiers": "Tiers", - "security": "Security", + "welcome": "Xoş gəlmisiniz", + "tiers": "Səviyyələr", + "security": "Təhlükəsizlik", "test": "Test", - "ready": "Ready!", - "setPassword": "Set Password", - "addProvider": "Add your first provider", - "getStarted": "Get Started", - "skip": "Skip", - "skipWizard": "Skip wizard entirely", - "skipPassword": "Skip password setup", - "skipAndContinue": "Skip & Continue", - "passwordLabel": "Password", - "confirmPassword": "Confirm Password", - "enterPassword": "Enter password", - "confirmPasswordPlaceholder": "Confirm password", - "passwordsMismatch": "Passwords do not match", - "setupComplete": "Setup Complete!", - "goToDashboard": "Go to Dashboard →", - "welcomeDesc": "OmniRoute is your local AI API proxy. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "multiProvider": "Multi-Provider", - "usageTracking": "Usage Tracking", - "securityDesc": "Set a password to protect your dashboard, or skip for now.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", - "providerDesc": "Connect your first AI provider. You can add more later.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", - "apiKeyRequired": "API Key (required)", - "customUrlOptional": "Custom URL (optional)", - "testDesc": "Let's verify your provider connection works.", - "runTest": "Run Connection Test", - "testingConnection": "Testing connection...", - "connectionSuccessful": "Connection successful! Your provider is ready.", - "noProviderFound": "No provider found. You can add one from the dashboard later.", - "testFailed": "Test failed, but you can configure this later.", - "couldNotTest": "Could not test right now. You can test from the dashboard.", - "doneDesc": "You're all set! Your OmniRoute instance is configured and ready to proxy AI requests.", - "yourEndpoint": "Your endpoint:", - "continue": "Continue", - "retry": "Retry", - "failedSetPassword": "Failed to set password. Try again.", - "failedAddProvider": "Failed to add provider. Try again.", - "connectionError": "Connection error. Please try again.", - "provider": "Provider", + "ready": "Hazırdır!", + "setPassword": "Parol təyin edin", + "addProvider": "İlk provayderinizi əlavə edin", + "getStarted": "Başlayın", + "skip": "Keçin", + "skipWizard": "Quraşdırma köməkçisini tamamilə keçin", + "skipPassword": "Parol quraşdırmasını keçin", + "skipAndContinue": "Keçin və davam edin", + "passwordLabel": "Parol", + "confirmPassword": "Parolu təsdiqləyin", + "enterPassword": "Parolu daxil edin", + "confirmPasswordPlaceholder": "Parolu təsdiqləyin", + "passwordsMismatch": "Parollar uyğun gəlmir", + "setupComplete": "Quraşdırma tamamlandı!", + "goToDashboard": "İdarəetmə panelinə keçin →", + "welcomeDesc": "OmniRoute yerli AI API proksinizdir. O, yük balanslaşdırması, nasazlıq zamanı ehtiyat keçid və istifadə izləməsi ilə sorğuları bir neçə AI provayderinə yönləndirir.", + "multiProvider": "Çoxsaylı provayder", + "usageTracking": "İstifadənin izlənməsi", + "securityDesc": "İdarəetmə panelinizi qorumaq üçün parol təyin edin və ya hələlik keçin.", + "securityDescSkipWarning": "⚠️ Parol olmadan quraşdırma zamanı provayder əlavə edə bilməyəcəksiniz. Parol təyin etdikdən sonra onları idarəetmə panelindən əlavə edə bilərsiniz.", + "providerDesc": "İlk AI provayderinizə qoşulun. Daha sonra əlavə provayderlər əlavə edə bilərsiniz.", + "providerRequiresPassword": "Provayder əlavə etmək üçün əvvəlcə parol təyin etməlisiniz. Təhlükəsizlik mərhələsinə qayıdıb parol təyin edin və ya provayderləri daha sonra idarəetmə panelindən əlavə edin.", + "apiKeyRequired": "API açarı (tələb olunur)", + "customUrlOptional": "Fərdi URL (istəyə bağlı)", + "testDesc": "Gəlin provayder bağlantınızın işlədiyini yoxlayaq.", + "runTest": "Bağlantı testini başladın", + "testingConnection": "Bağlantı yoxlanılır...", + "connectionSuccessful": "Bağlantı uğurla quruldu! Provayderiniz hazırdır.", + "noProviderFound": "Heç bir provayder tapılmadı. Daha sonra idarəetmə panelindən provayder əlavə edə bilərsiniz.", + "testFailed": "Sınaq uğursuz oldu, lakin bunu daha sonra konfiqurasiya edə bilərsiniz.", + "couldNotTest": "Hazırda sınaqdan keçirmək mümkün olmadı. İdarəetmə panelindən sınaqdan keçirə bilərsiniz.", + "doneDesc": "Hər şey hazırdır! OmniRoute instansiyanız konfiqurasiya edilib və AI sorğularını proksi etməyə hazırdır.", + "yourEndpoint": "Son nöqtəniz:", + "continue": "Davam et", + "retry": "Yenidən cəhd et", + "failedSetPassword": "Parolu təyin etmək alınmadı. Yenidən cəhd edin.", + "failedAddProvider": "Provayderi əlavə etmək alınmadı. Yenidən cəhd edin.", + "connectionError": "Bağlantı xətası. Yenidən cəhd edin.", + "provider": "Provayder", "apiKeyHelp": "API açarı AI xidmətləri üçün paroldur. Provayderinizin veb saytından birini əldə edin (məsələn, platform.openai.com, console.anthropic.com).", "tier": { "subtitle": "OmniRoute provayderləri üç pillədə təşkil edir ki, marşrutlaşdırma əvvəlcə ən etibarlı, ən ucuz yola üstünlük verir.", - "flowCaption": "Requests flow through your subscription quotas first, then pay-per-token cheap providers, then free-tier providers — automatic, zero-config.", - "afterSetup": "after setup.", + "flowCaption": "Sorğular əvvəlcə abunəlik kvotalarınızdan, sonra tokenə görə ödənişli ucuz provayderlərdən, daha sonra isə pulsuz tarifli provayderlərdən keçir — avtomatik, konfiqurasiya tələb olunmadan.", + "afterSetup": "quraşdırmadan sonra.", "tier1": { "label": "Premium müştərilər", "description": "Doğma auth axınları və əsaslandırma modelləri ilə birinci dərəcəli CLI-lər." @@ -5049,33 +5049,36 @@ } }, "providers": { - "title": "Providers", - "Account Deactivated": "Account Deactivated", + "title": "Provayderlər", + "Account Deactivated": "Hesab deaktiv edilib", "allProviders": "Bütün Provayderlər", "audioProviders": "Audio Provayderlər", "showFreeOnly": "Yalnız pulsuz", - "addProvider": "Add Provider", + "addProvider": "Provayder əlavə et", "addFirstProvider": "İlk provayderinizi əlavə edin", "addFirstProviderDesc": "OmniRoute vasitəsilə sorğuların yönləndirilməsinə başlamaq üçün AI provayderini birləşdirin. Siz pulsuz provayderlərdən, API açarlarından və ya OAuth hesablarından istifadə edə bilərsiniz.", "learnMore": "Ətraflı məlumat əldə edin", - "importFromFile": "Import from file", - "importFromFileTitle": "Import providers from file", - "importFromFileDescription": "Upload a CSV or JSON file listing multiple providers (each row can be a different provider type). Review the parsed rows below and pick which ones to import.", - "importFromFileChoose": "Choose file", - "importFromFileSelectHint": "{count} of {total} selected", - "importFromFileColProvider": "Provider", - "importFromFileColName": "Name", - "importFromFileColBaseUrl": "Base URL", - "importFromFileErrorLine": "Row {line}: {reason}", - "importErrorMissingProvider": "missing provider", - "importErrorMissingName": "missing name", - "importErrorMissingApiKey": "missing API key", - "importErrorInvalidPriority": "invalid priority (must be 1-100)", - "importErrorMalformedRow": "malformed row", - "importErrorNotArray": "file must contain a JSON array", - "importFromFileImporting": "Importing…", - "importFromFileImport": "Import {count} providers", - "importFromFileResult": "Imported {success} providers ({failed} failed)", + "importFromFile": "Fayldan idxal et", + "importFromFileTitle": "Provayderləri fayldan idxal et", + "importFromFileDescription": "Bir neçə provayderin siyahısını ehtiva edən CSV və ya JSON faylı yükləyin (hər sətir fərqli provayder növü ola bilər). Aşağıda təhlil edilmiş sətirləri nəzərdən keçirin və idxal ediləcəkləri seçin.", + "importFromFileChoose": "Fayl seçin", + "importFromFileSelectHint": "{total} elementdən {count} seçilib", + "importFromFileColProvider": "Provayder", + "importFromFileColName": "Ad", + "importFromFileColBaseUrl": "Baza URL-i", + "importFromFileErrorLine": "Sətir {line}: {reason}", + "importErrorMissingProvider": "provayder yoxdur", + "importErrorMissingName": "ad yoxdur", + "importErrorMissingApiKey": "API açarı yoxdur", + "importErrorInvalidPriority": "prioritet yanlışdır (1–100 arasında olmalıdır)", + "importErrorMalformedRow": "sətirin formatı yanlışdır", + "importErrorNotArray": "faylda JSON massivi olmalıdır", + "importFromFileImporting": "İdxal edilir…", + "importFromFileImport": "{count} provayderi idxal et", + "importFromFileResult": "{success} provayder idxal edildi ({failed} uğursuz oldu)", + "importFromFileDownloadTemplate": "CSV şablonunu endir", + "importFromFileMoreErrors": "daha +{count}", + "importFromFileSchemaHint": "CSV sütunları mövqeyə görə sıralanır: provider, name, apiKey, baseUrl (istəyə bağlı), priority (istəyə bağlı). provider sütununda mövcud idarə olunan provayder identifikatoru və ya artıq qeydiyyatdan keçmiş OpenAI/Anthropic-uyğun qovşaq identifikatoru olmalıdır — bu idxal yeni son nöqtə qovşaqları yaratmır.", "adaptaTutorial": { "title": "Adapta Web-ə necə qoşulmaq olar", "introPrefix": "Adapta Clerk vasitəsilə autentifikasiyadan keçir. Token", @@ -5103,31 +5106,31 @@ "tipPrefix": "Həmin", "tipSuffix": "kukisi uzunömürlüdür, adətən aylarla etibarlıdır. Yalnız sistemdən çıxış etdikdə və ya Adapta sessiyanı ləğv etdikdə onu yeniləməlisiniz." }, - "editProvider": "Edit Provider", - "deleteProvider": "Delete Provider", - "noProviders": "No providers configured", - "modelAvailability": "Model Availability", - "accounts": "Accounts", - "newAccount": "New Account", - "deleteConfirm": "Are you sure you want to delete this provider?", - "testing": "Testing...", - "testConnection": "Test Connection", - "testSuccess": "Connection successful", - "testFailed": "Connection failed", - "available": "Available", - "cooldown": "Cooldown", - "unavailable": "Unavailable", - "unknown": "Unknown", + "editProvider": "Provayderi redaktə et", + "deleteProvider": "Provayderi sil", + "noProviders": "Heç bir provayder konfiqurasiya edilməyib", + "modelAvailability": "Model əlçatanlığı", + "accounts": "Hesablar", + "newAccount": "Yeni hesab", + "deleteConfirm": "Bu provayderi silmək istədiyinizə əminsiniz?", + "testing": "Sınaqdan keçirilir...", + "testConnection": "Bağlantını sınaqdan keçir", + "testSuccess": "Bağlantı uğurla quruldu", + "testFailed": "Bağlantı uğursuz oldu", + "available": "Əlçatandır", + "cooldown": "Gözləmə müddəti", + "unavailable": "Əlçatan deyil", + "unknown": "Naməlum", "oauthLabel": "OAuth", - "compatibleLabel": "Compatible", + "compatibleLabel": "Uyğundur", "chat": "Chat", "responses": "Responses", "messages": "Messages", - "oauthProviders": "OAuth Providers", - "freeProviders": "Free Providers", - "apiKeyProviders": "API Key Providers", - "compatibleProviders": "API Key Compatible Providers", - "testAll": "Test All", + "oauthProviders": "OAuth provayderləri", + "freeProviders": "Pulsuz provayderlər", + "apiKeyProviders": "API açarı provayderləri", + "compatibleProviders": "API açarı ilə uyğun provayderlər", + "testAll": "Hamısını sınaqdan keçir", "reorderByAvailability": "Yenidən sırala", "reorderByAvailabilityTitle": "Bağlantıları əlçatanlığa görə yenidən sırala", "reorderByAvailabilityError": "Bağlantıları əlçatanlığa görə yenidən sıralamaq alınmadı", @@ -5135,10 +5138,10 @@ "distributing": "Paylanır...", "selectedCount": "{count, plural, one {# seçilib} other {# seçilib}}", "accountsCount": "{count, plural, one {# hesab} other {# hesab}}", - "testAllOAuth": "Test all OAuth connections", - "testAllFree": "Test all Free connections", - "testAllApiKey": "Test all API Key connections", - "testAllCompatible": "Test all Compatible connections", + "testAllOAuth": "Bütün OAuth bağlantılarını sınaqdan keçir", + "testAllFree": "Bütün pulsuz bağlantıları sınaqdan keçir", + "testAllApiKey": "Bütün API açarı bağlantılarını sınaqdan keçir", + "testAllCompatible": "Bütün uyğun bağlantıları sınaqdan keçir", "testAllModels": "Bütün modelləri test edin", "testAllModelsConfirm": "Bütün görünən modellər test edilsin? Avtomatik gizlətmə aktivdirsə, xətalı modellər gizlədiləcək.", "testingAllModels": "{done}/{total} test edilir...", @@ -5154,9 +5157,9 @@ "filterByVisibility": "Görünürlüyə görə filtrlə", "autoHideFailed": "Uğursuz modelləri avtomatik gizlət", "autoHideFailedHint": "Aktiv edildikdə, 'Hamısını sınaqdan keçir' /v1/models kimi ictimai kataloqlardan qeyri-müvəqqəti xətaları gizlədir. Tək model sınaqları heç vaxt avtomatik gizlədilmir.", - "connected": "{count} Connected", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", + "connected": "{count} qoşulub", + "errorCount": "{count} xəta ({code})", + "errorCountNoCode": "{count} xəta", "testAllCompleted": "{total} model sınaqdan keçirildi: {ok} OK, {failed} uğursuz", "modelAutoHidden": "{model} modeli avtomatik gizlədildi (sınaq uğursuz oldu)", "filterAll": "Hamısı", @@ -5164,21 +5167,21 @@ "filterHidden": "Yalnız gizlədilənlər", "modelsHiddenCount": "{count} gizli", "warningCount": "{count} Xəbərdarlıq", - "noConnections": "No connections", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", - "freeTier": "Free Tier", - "freeTierAvailable": "Free tier available", + "noConnections": "Bağlantı yoxdur", + "expiredBadge": "Müddəti bitib", + "expiringSoonBadge": "Müddəti tezliklə bitəcək", + "freeTier": "Pulsuz tarif", + "freeTierAvailable": "Pulsuz tarif mövcuddur", "hasFreeTooltip": "Pulsuz paket mövcuddur", "noAuthLabel": "Autentifikasiyasız", "noAuthProviders": "Autentifikasiyasız provayderlər", "upstreamProxyLabel": "Upstream Proksi", "freeAggregated": "Pulsuz paketi olan bütün provayderlər (həmçinin öz əsas kateqoriyalarında göstərilir)", - "deprecated": "Deprecated", - "deprecatedProvider": "This provider has been deprecated", + "deprecated": "Köhnəlib", + "deprecatedProvider": "Bu provayder köhnəlmiş elan edilib", "riskNotice": { "title": "Davam etməzdən əvvəl", - "detailsTitle": "Usage caveats", + "detailsTitle": "İstifadə ilə bağlı qeydlər", "tooltip": "İstifadə xəbərdarlıqları olan provayder — ətraflı məlumat üçün klikləyin", "oauth": "Bu provayder proksi/router istifadəsi üçün icazə verilməyən rəsmi məhsul sessiyanızdan/OAuth-dan istifadə edir. İntensiv avtonom agent istifadəsini (OpenCloud tərzi, uzun çoxmərhələli axınlar, böyük paketlər) tövsiyə etmirik — upstream xidmət hesabı məhdudlaşdırmaqla və ya bloklamaqla reaksiya verə bilər. Riski öz üzərinizə götürərək istifadə edin.", "webCookie": "Bu provayder veb sessiya kukiləriniz vasitəsilə autentifikasiya edir. Upstream xidmət istənilən vaxt sessiyanı ləğv edə bilər və bu da yenidən daxil olmağınızı tələb edər. Uzunmüddətli nəzarətsiz əməliyyatlar üçün tövsiyə edilmir. Riski öz üzərinizə götürərək istifadə edin.", @@ -5188,95 +5191,95 @@ "cancel": "Ləğv et" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} bağlantı işarələnib — son {maxFailures} nasazlığadək{lastFailureSuffix}. Bağlantı vəziyyətinə baxmaq üçün klikləyin.", + "lastFailureSuffix": "(son nasazlıq {time})", + "ariaLabel": "Bağlantı vəziyyətinin təfərrüatlarına baxın, {count} xəbərdarlıq" }, - "disabled": "Disabled", - "enableProvider": "Enable provider", - "disableProvider": "Disable provider", - "testResults": "Test Results", - "noCompatibleYet": "No compatible providers added yet", - "compatibleHint": "Use the buttons above to add OpenAI or Anthropic compatible endpoints", - "addOpenAICompatible": "Add OpenAI Compatible", - "addAnthropicCompatible": "Add Anthropic Compatible", - "addNewProvider": "Add New Provider", - "backToProviders": "Back to Providers", - "configureNewProvider": "Configure a new AI provider to use with your applications.", - "providerLabel": "Provider", - "selectProvider": "Select a provider", - "selectedProvider": "Selected provider", - "authMethod": "Authentication Method", - "apiKeyLabel": "API Key", - "apiKeyRequired": "API Key is required", - "selectProviderRequired": "Please select a provider", - "enterApiKey": "Enter your API key", - "apiKeySecure": "Your API key will be encrypted and stored securely.", - "oauth2Connect": "Connect with OAuth2", + "disabled": "Deaktiv edilib", + "enableProvider": "Provayderi aktivləşdir", + "disableProvider": "Provayderi deaktiv et", + "testResults": "Sınaq nəticələri", + "noCompatibleYet": "Hələ heç bir uyğun provayder əlavə edilməyib", + "compatibleHint": "OpenAI və ya Anthropic ilə uyğun endpointlər əlavə etmək üçün yuxarıdakı düymələrdən istifadə edin", + "addOpenAICompatible": "OpenAI ilə uyğun provayder əlavə et", + "addAnthropicCompatible": "Anthropic ilə uyğun provayder əlavə et", + "addNewProvider": "Yeni provayder əlavə et", + "backToProviders": "Provayderlərə qayıt", + "configureNewProvider": "Tətbiqlərinizlə istifadə etmək üçün yeni AI provayderi konfiqurasiya edin.", + "providerLabel": "Provayder", + "selectProvider": "Provayder seçin", + "selectedProvider": "Seçilmiş provayder", + "authMethod": "Doğrulama üsulu", + "apiKeyLabel": "API açarı", + "apiKeyRequired": "API açarı tələb olunur", + "selectProviderRequired": "Provayder seçin", + "enterApiKey": "API açarınızı daxil edin", + "apiKeySecure": "API açarınız şifrələnəcək və təhlükəsiz şəkildə saxlanılacaq.", + "oauth2Connect": "OAuth2 ilə qoşul", "oauth2Label": "OAuth2", - "oauth2Desc": "Connect your account using OAuth2 authentication.", - "displayName": "Display Name", - "displayNamePlaceholder": "e.g., Production API, Dev Environment", - "displayNameHint": "Optional. A friendly name to identify this configuration.", - "active": "Active", - "activeDescription": "Enable this provider for use in your applications", - "cancel": "Cancel", - "createProvider": "Create Provider", - "failedCreate": "Failed to create provider", - "errorOccurred": "An error occurred. Please try again.", - "modelStatus": "Model Status", - "showConfiguredOnly": "Configured only", - "allModelsOperational": "All models operational", - "modelsWithIssues": "{count} model(s) with issues", - "allModelsNormal": "All models are responding normally.", - "cooldownCleared": "Cooldown cleared for {model}", - "failedClearCooldown": "Failed to clear cooldown", - "loadingAvailability": "Loading model availability...", - "clearCooldown": "Clear", - "clearing": "Clearing...", - "until": "Until {time}", - "providerTestFailed": "Provider test failed", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "oauth2Desc": "OAuth2 autentifikasiyasından istifadə edərək hesabınızı qoşun.", + "displayName": "Görünən ad", + "displayNamePlaceholder": "məs., İstehsal API-si, İnkişaf mühiti", + "displayNameHint": "İstəyə bağlıdır. Bu konfiqurasiyanı müəyyən etmək üçün anlaşılan ad.", + "active": "Aktiv", + "activeDescription": "Tətbiqlərinizdə istifadə etmək üçün bu provayderi aktivləşdirin", + "cancel": "Ləğv et", + "createProvider": "Provayder yarat", + "failedCreate": "Provayder yaratmaq alınmadı", + "errorOccurred": "Xəta baş verdi. Yenidən cəhd edin.", + "modelStatus": "Model statusu", + "showConfiguredOnly": "Yalnız konfiqurasiya edilmişlər", + "allModelsOperational": "Bütün modellər işləkdir", + "modelsWithIssues": "{count} modeldə problem var", + "allModelsNormal": "Bütün modellər normal cavab verir.", + "cooldownCleared": "{model} üçün gözləmə müddəti sıfırlandı", + "failedClearCooldown": "Gözləmə müddətini sıfırlamaq alınmadı", + "loadingAvailability": "Modellərin əlçatanlığı yüklənir...", + "clearCooldown": "Təmizlə", + "clearing": "Təmizlənir...", + "until": "{time} vaxtınadək", + "providerTestFailed": "Provayder sınağı uğursuz oldu", + "providerTestTimeout": "Provayder sınağının vaxtı bitdi — eyni anda sınaqdan keçirmək üçün həddindən artıq çox bağlantı var", "modeTest": "{mode} Test", - "passedCount": "{count} passed", - "failedCount": "{count} failed", - "testedCount": "{count} tested", + "passedCount": "{count} uğurlu", + "failedCount": "{count} uğursuz", + "testedCount": "{count} sınaqdan keçirildi", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", - "noActiveConnectionsInGroup": "No active connections found for this group.", - "allTestsPassed": "All {total} tests passed", - "testSummary": "{passed}/{total} passed, {failed} failed", - "nameLabel": "Name", + "errorShort": "XƏTA", + "noActiveConnectionsInGroup": "Bu qrup üçün aktiv bağlantı tapılmadı.", + "allTestsPassed": "Bütün {total} sınaq uğurla keçdi", + "testSummary": "{passed}/{total} uğurlu, {failed} uğursuz", + "nameLabel": "Ad", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", - "apiTypeLabel": "API Type", - "prefixHint": "Required. Unique prefix for model names.", - "nameHint": "Required. A friendly label for this node.", - "baseUrlHint": "Required. Provider API base URL.", + "baseUrlLabel": "Baza URL", + "apiTypeLabel": "API növü", + "prefixHint": "Mütləqdir. Model adları üçün unikal prefiks.", + "nameHint": "Mütləqdir. Bu qovşaq üçün anlaşılan etiket.", + "baseUrlHint": "Mütləqdir. Provayder API-sinin baza URL-i.", "iconUrlLabel": "İkon URL-i", "iconUrlHint": "İstəyə bağlı. Bu provayderin ikonu kimi göstərilən şəkil URL-i.", "iconUrlInvalid": "Yanlış ikon URL-si. http(s):// və ya data:image/*;base64 URL istifadə edin.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Gündəlik kvotanın sıfırlanma saat qurşağı", + "dailyQuotaResetTimezoneHint": "Yuxarı axın X-RateLimit-Reset parametrini təqdim etmədikdə istifadə olunan ixtiyari IANA saat qurşağı. Qısa gözləmə müddətini saxlamaq üçün boş buraxın.", + "dailyQuotaResetHourLabel": "Gündəlik kvotanın sıfırlanma saatı", + "dailyQuotaResetHourHint": "Yuxarıdakı saat qurşağında 0-23 arası yerli saat. Boş buraxıldıqda qovşaq səviyyəsində vaxt təyin edilmir.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", - "validateConnection": "Validate Connection", - "validating": "Validating...", - "connectionValid": "Connection is valid!", - "connectionFailed": "Connection failed. Check URL and key.", - "testKeyLabel": "Test API Key", - "testKeyPlaceholder": "sk-... (for validation only)", - "providerNotFound": "Provider not found", - "deleteConnectionConfirm": "Delete this connection?", + "validateConnection": "Bağlantını yoxla", + "validating": "Yoxlanılır...", + "connectionValid": "Bağlantı etibarlıdır!", + "connectionFailed": "Bağlantı uğursuz oldu. URL-i və açarı yoxlayın.", + "testKeyLabel": "API açarını sınaqdan keçir", + "testKeyPlaceholder": "sk-... (yalnız yoxlama üçün)", + "providerNotFound": "Provayder tapılmadı", + "deleteConnectionConfirm": "Bu bağlantı silinsin?", "deleteConnectionConfirmNamed": "{name} silmək istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla bilməz.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Seçilənləri sil ({count})", + "batchDeleteConfirm": "{count} bağlantı silinsin? Bu əməliyyatı geri qaytarmaq mümkün deyil.", + "batchDeleteSuccess": "{count} bağlantı silindi", "batchActivateSelected": "Aktivləşdir", "batchDeactivateSelected": "Deaktiv et", "batchRetestSelected": "Yenidən sınaqdan keçir", @@ -5292,32 +5295,32 @@ "filterError": "Xəta", "filterBanned": "Qadağan edilib", "filterCreditsExhausted": "Kreditlər bitib", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Hesablarda axtarış…", "noFilteredConnections": "Cari filtrə uyğun gələn heç bir bağlantı yoxdur.", - "failedSetAlias": "Failed to set alias", + "failedSetAlias": "Ləqəbi təyin etmək alınmadı", "setAliasSuccess": "Alias {alias} təyin edildi", "deleteAliasSuccess": "Alias {alias} silindi", - "failedSaveConnection": "Failed to save connection", - "failedSaveConnectionRetry": "Failed to save connection. Please try again.", - "failedRetestConnection": "Failed to retest connection", - "deleteCompatibleNodeConfirm": "Delete this {type} Compatible node?", - "anthropicCompatibleDetails": "Anthropic Compatible Details", - "openaiCompatibleDetails": "OpenAI Compatible Details", + "failedSaveConnection": "Bağlantını saxlamaq alınmadı", + "failedSaveConnectionRetry": "Bağlantını saxlamaq alınmadı. Yenidən cəhd edin.", + "failedRetestConnection": "Bağlantını yenidən sınaqdan keçirmək alınmadı", + "deleteCompatibleNodeConfirm": "Bu {type} Compatible qovşağı silinsin?", + "anthropicCompatibleDetails": "Anthropic Compatible təfərrüatları", + "openaiCompatibleDetails": "OpenAI Compatible təfərrüatları", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Vektor təsvirləri", + "audioTranscriptions": "Audio transkripsiyaları", + "audioSpeech": "Audio nitq", + "imagesGenerations": "Şəkil generasiyaları", "chatCompletions": "Chat Completions", - "importingModels": "Importing...", - "importFromModels": "Import from /models", - "modelsImported": "{count} models imported", - "allModelsAlreadyImported": "All models already imported", - "noNewModelsToImport": "No new models to import — all models are already in the registry or custom models list", - "skippingExistingModels": "Skipping {count} existing models", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "importingModels": "İdxal edilir...", + "importFromModels": "/models-dən idxal et", + "modelsImported": "{count} model idxal edildi", + "allModelsAlreadyImported": "Bütün modellər artıq idxal edilib", + "noNewModelsToImport": "İdxal ediləcək yeni model yoxdur — bütün modellər artıq reyestrdə və ya fərdi modellər siyahısındadır", + "skippingExistingModels": "Mövcud {count} model ötürülür", + "autoSync": "Avtomatik sinxronizasiya", + "autoSyncShort": "Sinxronizasiya et", "autoFetchModels": "Avtomatik olaraq yuxarı axın modellərini əldə et", "autoFetchModelsTooltip": "Tələb olunduqda yuxarıdakı modelləri əldə et və keşlə.", "autoFetchModelsEnabled": "Yuxarı axın modelinin avtomatik yüklənməsi aktivdir", @@ -5329,52 +5332,52 @@ "resetToUpstreamDefaults": "Yuxarı axın standartlarını bərpa et", "resetToUpstreamDefaultsSuccess": "Yuxarı axın modelinin standart parametrləri bərpa edildi", "resetToUpstreamDefaultsFailed": "Yuxarı axın modelinin standartlarını bərpa etmək mümkün olmadı", - "autoSyncTooltip": "Automatically refresh model list every 24h (configurable via MODEL_SYNC_INTERVAL_HOURS)", - "autoSyncEnabled": "Auto-sync enabled — models will refresh periodically", - "autoSyncDisabled": "Auto-sync disabled", - "autoSyncToggleFailed": "Failed to toggle auto-sync", - "autoSyncPartialFailure": "Auto-sync updated for some connections, but not all", - "clearAllModels": "Clear All Models", - "clearAllModelsConfirm": "Are you sure you want to remove all models for this provider? This cannot be undone.", - "clearAllModelsSuccess": "All models cleared", - "clearAllModelsFailed": "Failed to clear models", - "addConnectionToImport": "Add a connection to enable importing.", - "noModelsConfigured": "No models configured", - "connectionCount": "{count} connection(s)", - "fetchingModels": "Fetching available models...", - "failedFetchModels": "Failed to fetch models", + "autoSyncTooltip": "Model siyahısını hər 24 saatdan bir avtomatik yenilə (MODEL_SYNC_INTERVAL_HOURS vasitəsilə konfiqurasiya edilə bilər)", + "autoSyncEnabled": "Avtomatik sinxronizasiya aktivdir — modellər vaxtaşırı yenilənəcək", + "autoSyncDisabled": "Avtomatik sinxronizasiya deaktivdir", + "autoSyncToggleFailed": "Avtomatik sinxronizasiya dəyişdirilə bilmədi", + "autoSyncPartialFailure": "Avtomatik sinxronizasiya bəzi bağlantılar üçün yeniləndi, lakin hamısı üçün deyil", + "clearAllModels": "Bütün modelləri təmizlə", + "clearAllModelsConfirm": "Bu provayder üçün bütün modelləri silmək istədiyinizə əminsiniz? Bu əməliyyatı geri qaytarmaq mümkün deyil.", + "clearAllModelsSuccess": "Bütün modellər təmizləndi", + "clearAllModelsFailed": "Modelləri təmizləmək mümkün olmadı", + "addConnectionToImport": "İdxalı aktivləşdirmək üçün bağlantı əlavə edin.", + "noModelsConfigured": "Heç bir model konfiqurasiya edilməyib", + "connectionCount": "{count} bağlantı", + "fetchingModels": "Mövcud modellər əldə edilir...", + "failedFetchModels": "Modelləri əldə etmək mümkün olmadı", "noFreeModelsFound": "Bu provayder üçün pulsuz model tapılmadı — heç nə idxal edilmədi.", "fetchModelsSuccess": "{count} yeni model tapıldı", "fetchModelsFailed": "Modelləri avtomatik əldə etmək mümkün olmadı (parametrlərdən yenidən cəhd edə bilərsiniz)", - "noModelsFound": "No models found", - "importFailed": "Import failed", - "noNewModelsAdded": "No new models were added.", + "noModelsFound": "Heç bir model tapılmadı", + "importFailed": "İdxal baş tutmadı", + "noNewModelsAdded": "Heç bir yeni model əlavə edilmədi.", "adding": "Adding...", - "close": "Close", - "importingModelsTitle": "Importing Models", - "copyModel": "Copy model", - "filterModels": "Filter models...", + "close": "Bağla", + "importingModelsTitle": "Modellərin idxalı", + "copyModel": "Modeli kopyala", + "filterModels": "Modelləri filtrlə...", "testAllRateLimited": "Sorğu limitinə çatıldı, vaxtından əvvəl dayandırıldı", "hideFailedAuto": "Uğursuz modelləri avtomatik gizlət", - "selectAllModels": "Select all", + "selectAllModels": "Hamısını seç", "hideAllModels": "Hamısını gizlət", - "modelsActive": "Active", - "showModel": "Show model", - "hideModel": "Hide model", - "removeModel": "Remove model", - "rateLimitProtected": "Protected", - "rateLimitUnprotected": "Unprotected", + "modelsActive": "Aktiv", + "showModel": "Modeli göstər", + "hideModel": "Modeli gizlət", + "removeModel": "Modeli sil", + "rateLimitProtected": "Qorunur", + "rateLimitUnprotected": "Qorunmur", "providerQuotaShort": "Kvota", "hideConnectionFromProviderQuota": "Bu hesabı Provayder Kvotasından gizlət", "showConnectionInProviderQuota": "Bu hesabı Provayder Kvotasında göstər", "quotaVisibilityUpdateFailed": "Provayder Kvotası görünürlüyünü yeniləmək mümkün olmadı", - "enableRateLimitProtection": "Click to enable rate limit protection", - "disableRateLimitProtection": "Click to disable rate limit protection", + "enableRateLimitProtection": "Sorğu tezliyi limiti qorumasını aktivləşdirmək üçün klikləyin", + "disableRateLimitProtection": "Sorğu tezliyi limiti qorumasını deaktivləşdirmək üçün klikləyin", "testAllProgress": "Yoxlanıldı: {done}/{total}", "testAllFailedHidden": "{count} uğursuz model gizlədildi", "testAllDone": "Bütün modellər yoxlanıldı", - "productionKey": "Production Key", - "enterNewApiKey": "Enter new API key", + "productionKey": "İstehsal açarı", + "enterNewApiKey": "Yeni API açarını daxil edin", "codexApplyModalTitle": "Yerli Kodeksə müraciət edin", "codexApplyTargetLabel": "Hədəf yolu", "codexApplyBackupLabel": "Yedəkləmələr", @@ -5386,77 +5389,77 @@ "bulkAddFormatHint": "Hər sətirdə bir açar. Format: ad|apiKey və ya sadəcə apiKey (indeks ilə avtomatik adlandırılır).", "bulkValidateKeys": "Saxlamadan əvvəl hər bir açarı yoxlayın (daha yavaş)", "bulkAddAllKeys": "Bütün açarları əlavə edin", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", - "optional": "Optional", + "bulkAddedCount": "{count, plural, one {# açar əlavə edildi} other {# açar əlavə edildi}}", + "bulkFailedCount": "{count, plural, one {# uğursuz oldu} other {# uğursuz oldu}}", + "optional": "İstəyə bağlı", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", "compatibleDefaultModelLabel": "Standart Model", "compatibleDefaultModelHint": "Model ID-sini uyğun son nöqtənizin gözlədiyi kimi dəqiq daxil edin. Bu model bağlantı üçün standart olaraq saxlanılacaq.", - "failedImportModels": "Failed to import models", - "noModelsReturnedFromEndpoint": "No models returned from /models endpoint.", - "importingModelsProgress": "Importing {current} of {total} models...", - "foundModelsStartingImport": "Found {count} models. Starting import...", - "importingModelById": "Importing {modelId}...", - "importSuccessCount": "Successfully imported {count, plural, one {# model} other {# models}}!", - "noNewModelsAddedExisting": "No new models were added (all already exist).", - "importDoneCount": "✓ Done! {count, plural, one {# model imported.} other {# models imported.}}", - "unexpectedErrorOccurred": "An unexpected error occurred", + "failedImportModels": "Modelləri idxal etmək alınmadı", + "noModelsReturnedFromEndpoint": "/models son nöqtəsindən heç bir model qaytarılmadı.", + "importingModelsProgress": "{total} modeldən {current}-cisi idxal edilir...", + "foundModelsStartingImport": "{count} model tapıldı. İdxal başlayır...", + "importingModelById": "{modelId} idxal edilir...", + "importSuccessCount": "{count, plural, one {# model uğurla idxal edildi!} other {# model uğurla idxal edildi!}}", + "noNewModelsAddedExisting": "Heç bir yeni model əlavə edilmədi (hamısı artıq mövcuddur).", + "importDoneCount": "✓ Hazırdır! {count, plural, one {# model idxal edildi.} other {# model idxal edildi.}}", + "unexpectedErrorOccurred": "Gözlənilməz xəta baş verdi", "getApiKey": "API açarını alın", "getApiKeyDescription": "API açarı üçün qeydiyyatdan keçin və ya qeyd olun.", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# bağlantı} other {# bağlantı}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", - "add": "Add", - "edit": "Edit", - "delete": "Delete", + "add": "Əlavə et", + "edit": "Redaktə et", + "delete": "Sil", "anthropic": "Anthropic", "openai": "OpenAI", - "singleConnectionPerCompatible": "Only one connection is allowed per compatible node. Add another node if you need more connections.", - "connections": "Connections", - "providerProxyTitleConfigured": "Provider proxy: {host}", - "configured": "configured", - "providerProxyConfigureHint": "Configure proxy for all connections of this provider", - "providerProxy": "Provider Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", - "noConnectionsYet": "No connections yet", - "addFirstConnectionHint": "Add your first connection to get started", - "addConnection": "Add Connection", - "availableModels": "Available Models", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", - "pageAutoRefresh": "Page will refresh automatically...", - "statusDisabled": "disabled", - "statusConnected": "connected", - "statusRuntimeIssue": "runtime issue", - "statusAuthFailed": "auth failed", - "statusRateLimited": "rate limited", - "statusNetworkIssue": "network issue", - "statusTestUnsupported": "test unsupported", - "statusUnavailable": "unavailable", - "statusFailed": "failed", - "statusError": "error", - "oauthAccount": "OAuth Account", - "errorTypeRuntime": "Local runtime", - "errorTypeUpstreamAuth": "Upstream auth", - "errorTypeMissingCredential": "Missing credential", - "errorTypeRefreshFailed": "Refresh failed", - "errorTypeTokenExpired": "Token expired", - "errorTypeRateLimited": "Rate limited", - "errorTypeUpstreamUnavailable": "Upstream unavailable", - "errorTypeNetworkError": "Network error", - "errorTypeTestUnsupported": "Test unsupported", - "errorTypeUpstreamError": "Upstream error", + "singleConnectionPerCompatible": "Hər uyğun qovşaq üçün yalnız bir bağlantıya icazə verilir. Daha çox bağlantıya ehtiyacınız varsa, başqa qovşaq əlavə edin.", + "connections": "Bağlantılar", + "providerProxyTitleConfigured": "Provayder proksisi: {host}", + "configured": "konfiqurasiya edilib", + "providerProxyConfigureHint": "Bu provayderin bütün bağlantıları üçün proksini konfiqurasiya edin", + "providerProxy": "Provayder proksisi", + "repairEnv": "env faylını bərpa et", + "repairEnvWorking": "Bərpa edilir...", + "repairEnvHint": "Mövcud dəyərlərin üzərinə yazmadan çatışmayan OAuth standartlarını .env faylına bərpa edin.", + "repairEnvSuccess": "OAuth standartları bərpa edildi", + "repairEnvFailed": ".env faylını bərpa etmək alınmadı", + "noConnectionsYet": "Hələ heç bir bağlantı yoxdur", + "addFirstConnectionHint": "Başlamaq üçün ilk bağlantınızı əlavə edin", + "addConnection": "Bağlantı əlavə et", + "availableModels": "Mövcud modellər", + "builtInModels": "Daxili modellər", + "builtInModelsHint": "Bu provayder üçün reyestr modelləri. Uyğunluq seçimlərini təyin etmək üçün karandaş işarəsindən istifadə edin.", + "pageAutoRefresh": "Səhifə avtomatik yenilənəcək...", + "statusDisabled": "deaktiv edilib", + "statusConnected": "qoşulub", + "statusRuntimeIssue": "icra mühiti problemi", + "statusAuthFailed": "identifikasiya uğursuz oldu", + "statusRateLimited": "sorğu limiti aşılıb", + "statusNetworkIssue": "şəbəkə problemi", + "statusTestUnsupported": "test dəstəklənmir", + "statusUnavailable": "əlçatan deyil", + "statusFailed": "uğursuz oldu", + "statusError": "xəta", + "oauthAccount": "OAuth hesabı", + "errorTypeRuntime": "Lokal icra mühiti", + "errorTypeUpstreamAuth": "Yuxarı axın autentifikasiyası", + "errorTypeMissingCredential": "Giriş məlumatı çatışmır", + "errorTypeRefreshFailed": "Yeniləmə uğursuz oldu", + "errorTypeTokenExpired": "Tokenin müddəti bitib", + "errorTypeRateLimited": "Sorğu limiti aşılıb", + "errorTypeUpstreamUnavailable": "Yuxarı axın əlçatan deyil", + "errorTypeNetworkError": "Şəbəkə xətası", + "errorTypeTestUnsupported": "Test dəstəklənmir", + "errorTypeUpstreamError": "Yuxarı axın xətası", "errorTypeCreditsExhausted": "Kredit yoxdur", "errorTypeBanned": "403 Bloklandı", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", - "proxySourceKey": "Key", + "proxySourceGlobal": "Qlobal", + "proxySourceProvider": "Provayder", + "proxySourceKey": "Açar", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "Proksi Açıqdır", "proxyOff": "Birbaşa (proksidən yan keç)", @@ -5468,31 +5471,31 @@ "perKeyProxyDisabledTitle": "Bu provayder üçün açar üzrə proksi təyinatı deaktivdir", "autoPriority": "Auto: {priority}", "proxy": "Proxy", - "retestAuthentication": "Retest authentication", - "retest": "Retest", - "disableConnection": "Disable connection", - "enableConnection": "Enable connection", - "reauthenticateConnection": "Re-authenticate this connection", - "proxyConfig": "Proxy config", - "aliasExistsAlert": "Alias \"{alias}\" already exists. Please use a different model or edit existing alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter supports any model. Add models and create aliases for quick access.", - "modelIdFromOpenRouter": "Model ID (from OpenRouter)", + "retestAuthentication": "Autentifikasiyanı yenidən sınaqdan keçirin", + "retest": "Yenidən sınaqdan keçirin", + "disableConnection": "Bağlantını deaktiv edin", + "enableConnection": "Bağlantını aktiv edin", + "reauthenticateConnection": "Bu bağlantı üçün yenidən autentifikasiya edin", + "proxyConfig": "Proksi konfiqurasiyası", + "aliasExistsAlert": "\"{alias}\" ləqəbi artıq mövcuddur. Fərqli model istifadə edin və ya mövcud ləqəbi redaktə edin.", + "aliasInputPlaceholder": "ləqəb adı", + "clickToSetAlias": "Ləqəb təyin etmək üçün klikləyin", + "clickToEditAlias": "Ləqəb: {alias} (redaktə etmək üçün klikləyin)", + "openRouterAnyModelHint": "OpenRouter istənilən modeli dəstəkləyir. Sürətli giriş üçün modellər əlavə edin və ləqəblər yaradın.", + "modelIdFromOpenRouter": "Model ID-si (OpenRouter-dən)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", - "customModels": "Custom Models", - "customModelsHint": "Add model IDs not in the default list. These will be available for routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "customModels": "Fərdi modellər", + "customModelsHint": "Standart siyahıda olmayan model ID-lərini əlavə edin. Bunlar marşrutlaşdırma üçün əlçatan olacaq.", + "normalizeToolCallIdLabel": "Alət çağırışı ID-lərini 9 simvola normallaşdırın (məs., Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responses developer rolunu saxlayın (system roluna uyğunlaşdırmayın)", + "compatAdjustmentsTitle": "Uyğunluq", + "compatButtonLabel": "Uyğunluq", + "compatToolIdShort": "Alət ID-si 9", + "compatDeveloperShort": "Developer rolu", + "compatDoNotPreserveDeveloper": "Developer rolunu saxlamayın", + "compatBadgeNoPreserve": "Saxlamayın", + "compatProtocolLabel": "Müştəri sorğusu protokolu", + "compatProtocolHint": "Bu seçimlər OmniRoute bu sorğu formatını (OpenAI Chat, Responses API və ya Anthropic Messages) aşkar etdikdə tətbiq olunur.", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,84 +5537,84 @@ "interceptFetchHint": "Yerli web_fetch alət çağırışlarını OmniRoute-un /v1/web/fetch ünvanına yenidən yazın.", "interceptionLoadError": "Ələ keçirmə parametrlərini yükləmək mümkün olmadı: {error}", "interceptionSaveError": "Ələ keçirmə parametrlərini yadda saxlamaq mümkün olmadı: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", - "perModelQuotaLabel": "Per-Model Quota", - "perModelQuotaDescription": "When enabled, 429/404 errors only lock the specific model, not the entire connection. Use for providers with per-model rate limits (e.g., ModelScope).", + "ccAliasSectionTitle": "Claude Code-da göstər (claude/…)", + "ccAliasSectionHint": "Bu provayderin modellərini claude/<provider>/<model> güzgü ID-ləri altında təqdim edin ki, Claude Code şlüzünün model aşkarlama funksiyası onları siyahıya ala bilsin. Defolt olaraq deaktivdir — bunu aktivləşdirmək bütün müştərilər üçün kataloq qeydlərinin sayını ikiqat artırır.", + "ccAliasProviderLevelLabel": "Provayderin defolt ayarı", + "ccAliasModelOverridesLabel": "Model üzrə fərdi ayarlar", + "ccAliasModelOverrideAriaLabel": "{modelId} üçün fərdi ayar", + "ccAliasStateInherit": "Miras al", + "ccAliasStateOn": "Aktiv", + "ccAliasStateOff": "Deaktiv", + "ccAliasAddModelPlaceholder": "Model ID-si (məs., gpt-4o)", + "ccAliasAddModelButton": "Fərdi ayar əlavə et", + "ccAliasLoadError": "Aşkarlama ləqəbi ayarlarını yükləmək alınmadı: {error}", + "ccAliasSaveError": "Aşkarlama ləqəbi ayarını saxlamaq alınmadı: {error}", + "compatUpstreamHeadersLabel": "Əlavə yuxarı axın başlıqları", + "compatUpstreamHeadersHint": "Yüksək imtiyazlı ayardır — provayderin API giriş məlumatlarını redaktə etməklə eyni etibar səviyyəsinə malikdir; bundan yalnız etibarlı administratorlar istifadə etməlidir. OmniRoute provayderin API açarından autentifikasiya məlumatını əlavə etdikdən sonra birləşdirilir. Fərdi başlıq mövcud başlıqla eyni addan istifadə edərsə (məs., Authorization), daxil etdiyiniz dəyər avtomatik yaradılmış başlığı (Bearer tokeni daxil olmaqla) tamamilə əvəz edir — yuxarı axın yalnız yazdığınızı görür, ayarlardakı açarı deyil. Yanlış konfiqurasiya 401 xətasına və ya yuxarı axın autentifikasiyasının pozulmasına səbəb ola bilər. Hər başlıq üçün bir sətir (məs., bəzi şlüzlər üçün əlavə Authentication). Önizləmək üçün göstəricini dəyərin üzərinə gətirin və ya ona fokuslanın. Fokus itirildikdə, panelin xaricinə kliklədikdə və ya bu panel bağlandıqda yadda saxlanılır.", + "compatUpstreamHeaderName": "Başlığın adı", + "compatUpstreamHeaderValue": "Dəyər", + "compatUpstreamAddRow": "Başlıq əlavə et", + "compatUpstreamRemoveRow": "Sətri sil", + "compatBadgeUpstreamHeaders": "Başlıqlar", + "perModelQuotaLabel": "Model üzrə kvota", + "perModelQuotaDescription": "Aktiv olduqda, 429/404 xətaları bütün bağlantını deyil, yalnız konkret modeli kilidləyir. Model üzrə sürət məhdudiyyəti olan provayderlər (məs., ModelScope) üçün istifadə edin.", "importFreeModelsOnlyLabel": "Yalnız pulsuz modelləri idxal et", "importFreeModelsOnlyHint": "Aktiv edildikdə, yalnız bu provayderin pulsuz modelləri idxal edilir. Ödənişli modellər buraxılır.", - "perModelQuotaToggle": "Per-Model Quota Toggle", - "modelId": "Model ID", - "customModelPlaceholder": "e.g. gpt-4.5-turbo", - "loading": "Loading...", - "removeCustomModel": "Remove custom model", - "noCustomModels": "No custom models added yet.", - "allSuggestedAliasesExist": "All suggested aliases already exist. Please choose a different model or remove conflicting aliases.", - "failedSaveCustomModel": "Failed to save custom model", - "modelAddedSuccess": "Model {modelId} added successfully", - "failedAddModelTryAgain": "Failed to add model. Please try again.", - "failedSaveImportedModel": "Failed to save imported model to custom database", - "failedImportModelsTryAgain": "Failed to import models. Please try again.", - "failedRemoveModelFromDatabase": "Failed to remove model from database", - "modelRemovedSuccess": "Model removed successfully", - "failedDeleteModelTryAgain": "Failed to delete model. Please try again.", - "compatibleModelsDescription": "Add {type}-compatible models manually or import them from the /models endpoint.", + "perModelQuotaToggle": "Model üzrə kvota keçidi", + "modelId": "Model ID-si", + "customModelPlaceholder": "məs., gpt-4.5-turbo", + "loading": "Yüklənir...", + "removeCustomModel": "Fərdi modeli sil", + "noCustomModels": "Hələ heç bir fərdi model əlavə edilməyib.", + "allSuggestedAliasesExist": "Təklif olunan bütün ləqəblər artıq mövcuddur. Fərqli model seçin və ya ziddiyyət yaradan ləqəbləri silin.", + "failedSaveCustomModel": "Fərdi modeli saxlamaq alınmadı", + "modelAddedSuccess": "{modelId} modeli uğurla əlavə edildi", + "failedAddModelTryAgain": "Modeli əlavə etmək alınmadı. Yenidən cəhd edin.", + "failedSaveImportedModel": "İdxal edilmiş modeli fərdi verilənlər bazasında saxlamaq alınmadı", + "failedImportModelsTryAgain": "Modelləri idxal etmək alınmadı. Yenidən cəhd edin.", + "failedRemoveModelFromDatabase": "Modeli verilənlər bazasından silmək alınmadı", + "modelRemovedSuccess": "Model uğurla silindi", + "failedDeleteModelTryAgain": "Modeli silmək alınmadı. Yenidən cəhd edin.", + "compatibleModelsDescription": "{type} ilə uyğun modelləri əl ilə əlavə edin və ya onları /models son nöqtəsindən idxal edin.", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API key validation failed. Please check your key and try again.", - "addProviderApiKeyTitle": "Add {provider} API Key", - "checking": "Checking...", - "check": "Check", - "valid": "Valid", - "invalid": "Invalid", - "creating": "Creating...", - "validationChecksAnthropicCompatible": "Validation checks {provider} by verifying the API key.", - "validationChecksOpenAiCompatible": "Validation checks {provider} via /models on your base URL.", - "priorityLabel": "Priority", - "saving": "Saving...", - "save": "Save", - "editConnection": "Edit Connection", - "accountName": "Account name", + "apiKeyValidationFailed": "API açarının doğrulanması uğursuz oldu. Açarınızı yoxlayın və yenidən cəhd edin.", + "addProviderApiKeyTitle": "{provider} API açarı əlavə edin", + "checking": "Yoxlanılır...", + "check": "Yoxla", + "valid": "Etibarlıdır", + "invalid": "Etibarsızdır", + "creating": "Yaradılır...", + "validationChecksAnthropicCompatible": "Doğrulama API açarını yoxlayaraq {provider} xidmətini yoxlayır.", + "validationChecksOpenAiCompatible": "Doğrulama əsas URL-nizdəki /models vasitəsilə {provider} xidmətini yoxlayır.", + "priorityLabel": "Prioritet", + "saving": "Yadda saxlanılır...", + "save": "Yadda saxla", + "editConnection": "Bağlantını redaktə et", + "accountName": "Hesab adı", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "Sağlamlıq yoxlaması (dəq)", "healthCheckHint": "Proactive token refresh interval. 0 = disabled.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", - "failedTestConnection": "Failed to test connection", - "failed": "Failed", - "leaveBlankKeepCurrentApiKey": "Leave blank to keep the current API key.", - "editCompatibleTitle": "Edit {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", - "apiKeyForCheck": "API Key (for Check)", + "deselectAllModels": "Bütün seçimləri ləğv et", + "modelsActiveCount": "{active}/{total} aktiv", + "noModelsMatch": "Heç bir model \"{filter}\" filtrinə uyğun gəlmir", + "groupLabel": "Mühit", + "groupPlaceholder": "məs., eKaizen, Şəxsi", + "failedTestConnection": "Bağlantının sınaqdan keçirilməsi uğursuz oldu", + "failed": "Uğursuz oldu", + "leaveBlankKeepCurrentApiKey": "Cari API açarını saxlamaq üçün boş buraxın.", + "editCompatibleTitle": "{type} ilə uyğunluğu redaktə et", + "compatibleBaseUrlHint": "{type} ilə uyğun API-nizin kök URL-i. Fərdi son nöqtə yolları üçün Qabaqcıl parametrlərdən istifadə edin.", + "apiKeyForCheck": "API açarı (yoxlama üçün)", "testModelIdLabel": "Model ID-si (istəyə bağlı)", "testModelIdPlaceholder": "məs. my-model-id", "testModelIdHint": "Əgər provayderin /models son nöqtəsi yoxdursa, bunun əvəzinə /chat/completions vasitəsilə yoxlamaq üçün model ID-si daxil edin.", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "{type} ilə uyğun (Prod)", + "tokenRefreshed": "Token uğurla yeniləndi", + "tokenRefreshFailed": "Tokenin yenilənməsi uğursuz oldu", "cursorSessionUnchanged": "Sessiya artıq aktivdir", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Autentifikasiyanı tətbiq et", + "exportCodexAuthFile": "Autentifikasiyanı ixrac et", "applyClaudeAuthLocal": "Doğrulama tətbiq edin", "exportClaudeAuthFile": "İxrac avtorizasiyası", "importClaudeAuth": "İdxal avtorizasiyası", @@ -5626,7 +5629,7 @@ "claudeAuthApplyFailed": "Claude authunu yerli olaraq tətbiq etmək alınmadı", "claudeAuthExported": "Klod auth faylı ixrac edildi", "claudeAuthExportFailed": "Klod doğrulama faylını ixrac etmək alınmadı", - "claudeImportModalTitle": "Import Claude Auth", + "claudeImportModalTitle": "Claude autentifikasiyasını idxal et", "claudeImportTabSingle": "Subay", "claudeImportTabBulk": "Toplu", "claudeImportTabUpload": "Fayl yükləyin", @@ -5704,7 +5707,7 @@ "codexExternalLinkConnected": "Codex hesabı xarici link vasitəsilə qoşuldu.", "codexExternalLinkExpired": "Tamamlanmadan əvvəl linkin etibarlılıq müddəti bitdi.", "importCodexAuth": "İdxal avtorizasiyası", - "codexImportModalTitle": "Import Codex Auth", + "codexImportModalTitle": "Codex autentifikasiyasını idxal et", "codexImportTabSingle": "Subay", "codexImportTabBulk": "Toplu", "codexImportTabUpload": "Fayl yükləyin", @@ -5736,91 +5739,91 @@ "codexImportBulkFailed": "{count} alınmadı", "codexImportBulkZipExtracting": "ZIP çıxarılır...", "codexImportBulkZipError": "ZIP çıxarmaq alınmadı", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Qabaqcıl parametrlər", + "chatPathLabel": "Söhbət son nöqtəsinin yolu", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Qeyri-standart API-ləri olan provayderlər üçün fərdi söhbət yolu (məs., /v4/chat/completions)", + "modelsPathLabel": "Modellər son nöqtəsinin yolu", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Doğrulama üçün fərdi model yolu (məs., /v4/models)", "clientIdentityLabel": "Müştəri Kimliyi", - "clientIdentityHint": "Optional. Adds client fingerprint headers (e.g. User-Agent) matching a known CLI for compatible gateways that expect one.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "clientIdentityHint": "İstəyə bağlıdır. Belə başlıq gözləyən uyğun şlüzlər üçün tanınmış CLI ilə eyni olan müştəri rəqəmsal izi başlıqlarını (məs., User-Agent) əlavə edir.", + "statusDeactivated": "Deaktiv edilib (Əl ilə)", + "statusBanned": "Qadağan edilib / Sandbox qaydalarının pozulması", + "statusCreditsExhausted": "Balans kifayət deyil / Kvota tükənib", + "showEmails": "Bütün e-poçt ünvanlarını göstər", + "hideEmails": "Bütün e-poçt ünvanlarını gizlət", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", - "addCcCompatible": "Add CC Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "addAnotherApiKey": "Başqa API açarı əlavə edin və ya bir neçə açarı yapışdırın", + "addCcCompatible": "CC Uyğun əlavə et", + "aggregatorsGateways": "Aqreqator şlüzləri", + "enterpriseCloud": "Korporativ və bulud", + "apiFormatLabel": "API formatı etiketi", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", + "apiRegionChina": "API regionu: Çin", + "apiRegionHint": "API regionu ipucu", + "apiRegionInternational": "API regionu: Beynəlxalq", + "apiRegionLabel": "API regionu etiketi", + "apikey": "API açarı", "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", - "cloudAgentProviders": "Cloud Agent Providers", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioProvidersHeading": "Audio provayderləri başlığı", + "cloudAgentProviders": "Bulud agenti provayderləri", + "audioShortLabel": "Audio qısa etiketi", + "azureOpenAiBaseUrlHint": "Azure Open Ai əsas URL ipucu", + "bailianBaseUrlHint": "Bailian əsas URL ipucu", + "claudeWebCookieHint": "claude.ai saytını açın → DevTools → Application → Cookies → claude.ai bölməsinə keçin və 'sessionKey' dəyərini kopyalayın. Cloudflare üçün həmçinin cf_clearance, __cf_bm, _cfuvid tələb olunur.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web kukisi üçün ipucu", + "blackboxWebCookiePlaceholder": "Blackbox Web kukisi üçün yer tutucu", "t3ChatWebCookieHint": "t3.chat → DevTools → Proqram → Yerli Yaddaş → https://t3.chat açın, 'convex-session-id' kopyalayın. Sonra DevTools → Network açın, istənilən söhbət sorğusundan tam kuki başlığını kopyalayın. Hər iki dəyəri aşağıdakı sahələrə yapışdırın.", "t3ChatWebCookiePlaceholder": "konveks-sessiya-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web kukisi üçün ipucu", "blockClaudeExtraUsageDescription": "Aktiv edildikdə, OmniRoute bu Claude bağlantısını istifadənin API-si sıralanan əlavə istifadəni bildirdiyi anda istifadəyə yararsız olaraq işarələyir, beləliklə, ehtiyat başqa bir bağlantıya keçid edir, ödənişə görə əlavə ödəniş etməyə davam etmək əvəzinə.", "blockClaudeExtraUsageLabel": "Əlavə Claude istifadəsini bloklayın", "disableCoolingDescription": "Müvəqqəti soyuma müddətini atlayın ki, bu bağlantı bərpa edilə bilən xətalardan sonra belə uyğun qalsın (bloklanmış/vaxtı keçmiş kimi terminal vəziyyətlər hələ də tətbiq olunur).", "disableCoolingLabel": "Bu bağlantı üçün soyuma müddətini söndürün", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", - "ccCompatibleBaseUrlHint": "Base URL for a Claude Code-only relay. Do not include /messages.", + "bulkPasteAdded": "{count, plural, one {1 açar əlavə edildi} other {# açar əlavə edildi}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 dublikat ötürüldü} other {# dublikat ötürüldü}}", + "bulkPasteHint": "Hər sətirə bir API açarı yapışdırın. Boş sətirlər nəzərə alınmır, dublikat açarlar isə ötürülür.", + "ccCompatibleBaseUrlHint": "Yalnız Claude Code üçün nəzərdə tutulmuş retranslyatorun əsas URL-i. /messages daxil etməyin.", "ccCompatibleBaseUrlPlaceholder": "https://relay.example.com/v1", - "ccCompatibleChatPathHint": "Defaults to Claude Code's strict Messages API path. Change only if your relay documents a different path.", - "ccCompatibleContext1mDescription": "Adds the context-1m beta header when the selected Claude model supports it.", - "ccCompatibleContext1mLabel": "Enable 1M context beta", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", - "ccCompatibleDetailsTitle": "CC-compatible relay details", - "ccCompatibleLabel": "CC Compatible", - "ccCompatibleModelsDescription": "CC-compatible relays do not expose model listing. Add the Claude model IDs your relay accepts.", - "ccCompatibleNameHint": "Display name for this Claude Code-only relay.", - "ccCompatibleNamePlaceholder": "CC Relay Production", - "ccCompatiblePrefixHint": "Used in model aliases such as prefix/model-id.", + "ccCompatibleChatPathHint": "Defolt olaraq Claude Code-un ciddi Messages API yolu istifadə olunur. Yalnız retranslyatorunuzun sənədlərində fərqli yol göstərilibsə dəyişdirin.", + "ccCompatibleContext1mDescription": "Seçilmiş Claude modeli bunu dəstəklədikdə context-1m beta başlığını əlavə edir.", + "ccCompatibleContext1mLabel": "1M kontekst beta versiyasını aktivləşdir", + "ccCompatibleRedactThinkingDescription": "Gizli Claude düşünmə axınları tələb edən CC Uyğun yuxarı axınlar üçün redact-thinking beta başlığını əlavə edir.", + "ccCompatibleRedactThinkingLabel": "redact-thinking beta versiyasını aktivləşdir", + "ccCompatibleSummarizeThinkingDescription": "Dəstəklənən Claude modellərinin görünən düşünmə deltalarını axınla ötürməsi üçün CC Uyğun düşünmə sorğularına `display: \"summarized\"` əlavə edir.", + "ccCompatibleSummarizeThinkingLabel": "Ümumiləşdirilmiş düşünmə görünüşünü aktivləşdir", + "ccCompatibleDetailsTitle": "CC uyğun retranslyator təfərrüatları", + "ccCompatibleLabel": "CC ilə uyğun", + "ccCompatibleModelsDescription": "CC ilə uyğun retranslyatorlar model siyahısını göstərmir. Retranslyatorunuzun qəbul etdiyi Claude model ID-lərini əlavə edin.", + "ccCompatibleNameHint": "Yalnız Claude Code üçün nəzərdə tutulmuş bu retranslyatorun görünən adı.", + "ccCompatibleNamePlaceholder": "CC İstehsal Retranslyatoru", + "ccCompatiblePrefixHint": "prefix/model-id kimi model ləqəblərində istifadə olunur.", "ccCompatiblePrefixPlaceholder": "cc", - "ccCompatibleValidationHint": "Use this provider only for relays that serve Claude Code clients exclusively. OmniRoute rewrites any incoming request into the Claude Code-compatible wire format so those relays accept it. If you only want to use Claude Code CLI, or you are not sure what this relay type means, use a regular Anthropic-compatible provider instead.", - "claudeExtraUsageShort": "Extra usage", - "claudeExtraUsageToggleTitle": "Block Claude extra usage accounting for this connection", - "codex5hToggleTitle": "Track Codex 5-hour quota for this connection", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", - "codexWeeklyToggleTitle": "Track Codex weekly quota for this connection", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "ccCompatibleValidationHint": "Bu provayderdən yalnız Claude Code müştərilərinə xidmət edən retranslyatorlar üçün istifadə edin. OmniRoute bütün daxil olan sorğuları Claude Code ilə uyğun ötürmə formatına çevirir ki, həmin retranslyatorlar onları qəbul etsin. Yalnız Claude Code CLI istifadə etmək istəyirsinizsə və ya bu retranslyator növünün nə demək olduğuna əmin deyilsinizsə, əvəzinə adi Anthropic ilə uyğun provayderdən istifadə edin.", + "claudeExtraUsageShort": "Əlavə istifadə", + "claudeExtraUsageToggleTitle": "Bu bağlantı üçün Claude əlavə istifadə uçotunu bloklayın", + "codex5hToggleTitle": "Bu bağlantı üçün Codex-in 5 saatlıq kvotasını izləyin", + "codexFastServiceTierDescription": "Mümkün olduqda Codex sorğuları üçün prioritet xidmət səviyyəsindən istifadə edin.", + "codexFastServiceTierLabel": "Codex sürətli xidmət səviyyəsi", + "codexWeeklyToggleTitle": "Bu bağlantı üçün Codex-in həftəlik kvotasını izləyin", + "compatUpstreamHeaderNamePlaceholder": "Uyğun yuxarı axın başlığı adının doldurucusu", + "compatUpstreamHeaderValuePlaceholder": "Uyğun yuxarı axın başlığı dəyərinin doldurucusu", + "compatible": "Uyğun", + "configuredCount": "Konfiqurasiya edilmiş say", + "consoleApiKeyOracleHint": "Konsol API açarı Oracle ipucu", + "consoleApiKeyOracleLabel": "Konsol API açarı Oracle etiketi", + "consoleApiKeyOraclePlaceholder": "Konsol API açarı Oracle doldurucusu", + "newApiUserIdLabel": "New-API istifadəçi ID-si", + "newApiUserIdPlaceholder": "məs., 12345", + "newApiUserIdHint": "Kvota balansını əldə etmək üçün konsol API açarı ilə birlikdə istifadə olunan AgentRouter New-Api-User başlıq dəyəri.", "newApiAggregatorToggleLabel": "Toplanma Qapısı", "newApiAggregatorToggleHint": "Yeni-API / Bir-API / Sub2API toplayıcı düyünləri üçün balans aşkar etməni aktivləşdirin. İdarəetmə paneli balans nişanını göstərəcək və kvota-preflight yönləndirməsi tükənmiş hesabları atlayacaq.", "newApiAggregatorConsoleApiKeyHint": "Toplayıcının /api/user/self son nöqtəsi üçün Sistem Giriş Tokeni. Yönləndirmə API açarı deyil.", @@ -5828,55 +5831,55 @@ "newApiAggregatorQuotaPerUnitLabel": "Vahid Başına Kotа", "newApiAggregatorQuotaPerUnitHint": "Yeni-API kredit vahidləri $1 üçün (default: 500000). Əgər sizin toplayıcınız fərqli bir dərəcə istifadə edirsə, üstələyin.", "featureFlagNewApiAggregatorBalanceDescription": "Yeni-API / Bir-API / Sub2API toplayıcı ilə uyğun düyünlər üçün balans aşkar etməni aktivləşdirin", - "cpaModeDisabledTitle": "CLIProxyAPI compatibility mode is disabled", - "cpaModeEnabledTitle": "CLIProxyAPI compatibility mode is enabled", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", - "antigravityProjectIdHint": "Optional override for Antigravity Cloud Code requests. Leave blank to use the project discovered during Google OAuth.", + "cpaModeDisabledTitle": "CLIProxyAPI uyğunluq rejimi deaktivdir", + "cpaModeEnabledTitle": "CLIProxyAPI uyğunluq rejimi aktivdir", + "customUserAgentHint": "Fərdi User Agent ipucu", + "customUserAgentLabel": "Fərdi User Agent etiketi", + "databricksBaseUrlHint": "Databricks əsas URL ipucu", + "defaultThinkingStrengthHint": "Sorğuda düşünmə səyi göstərilmədikdə istifadə olunur.", + "defaultThinkingStrengthLabel": "Defolt düşünmə gücü", + "deleteAllExtraApiKeys": "Hamısını sil", + "excludedModelsHint": "İstisna edilmiş modellər üçün ipucu", + "excludedModelsLabel": "İstisna edilmiş modellər etiketi", + "excludedModelsPlaceholder": "İstisna edilmiş modellər üçün doldurucu", + "expirationBannerExpired": "Müddət bitib", + "expirationBannerExpiredDesc": "Müddətin bitməsi haqqında bannerin açıqlaması", + "expirationBannerExpiringSoon": "Müddət tezliklə bitəcək", + "expirationBannerExpiringSoonDesc": "Müddətin tezliklə bitməsi haqqında bannerin açıqlaması", + "extraApiKeyMasked": "Açar {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Əlavə API açarları üçün ipucu", + "extraApiKeysLabel": "Əlavə API açarları etiketi", + "apiKeyHealthLabel": "API açarının vəziyyəti", + "apiKeyStatusActive": "Aktiv", + "apiKeyStatusWarning": "Xəbərdarlıq ({count} uğursuzluq)", + "apiKeyStatusInvalid": "Etibarsız", + "primaryKey": "Əsas açar", + "apiKeyInvalidAlert": "{connections} bağlantılarındakı autentifikasiya uğursuzluqlarına görə {count} API açarı etibarsız kimi işarələnib. Rotasiya zamanı onlar ötürüləcək. Nəzərdən keçirmək üçün klikləyin.", + "apiKeyInvalidAlertTitle": "API açarının vəziyyəti barədə xəbərdarlıq", + "apiKeyWarningAlert": "{connections} bağlantılarında yüksək uğursuzluq tezliyinə görə {count} API açarı xəbərdarlıq vəziyyətindədir. Rotasiya problemlərinin qarşısını almaq üçün nəzərdən keçirin.", + "apiKeyWarningAlertTitle": "API açarı xəbərdarlığı", + "googlePseInfo": "Google PSE məlumatı", + "antigravityProjectIdHint": "Antigravity Cloud Code sorğuları üçün istəyə bağlı əvəzləmə. Google OAuth zamanı aşkar edilmiş layihədən istifadə etmək üçün boş saxlayın.", "antigravityClientProfileLabel": "Müştəri profili", "antigravityClientProfileHint": "OmniRoute-un API-yə hansı Antigravity müştəri kimliyini təqdim edəcəyini seçin.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Codex Fast səviyyəsi aktivdir", "tierFast": "Sürətli", - "antigravityProjectIdLabel": "Google Cloud Project ID", + "antigravityProjectIdLabel": "Google Cloud layihə ID-si", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", - "videoProviders": "Video Generation", - "embeddingRerankProviders": "Embeddings & Rerank", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "grokWebCookiePlaceholder": "Grok veb kukisi üçün yer tutucu", + "herokuBaseUrlHint": "Heroku əsas URL-i üçün ipucu", + "hideEmail": "E-poçtu gizlət", + "imageProviders": "Şəkil provayderləri", + "videoProviders": "Video generasiyası", + "embeddingRerankProviders": "Vektor yerləşdirmələri və yenidən sıralama", + "imagesShortLabel": "Şəkillər üçün qısa etiket", + "llmProviders": "LLM provayderləri", + "localProviderApiKeyOptionalHint": "Lokal provayderin istəyə bağlı API açarı üçün ipucu", + "localProviderBaseUrlHint": "Lokal provayderin əsas URL-i üçün ipucu", + "localProviders": "Lokal provayderlər", + "maxConcurrentWholeNumberError": "Maksimum paralel sorğu sayı tam ədəd olmalıdır", "m365TierLabel": "Copilot səviyyəsi", "m365TierHint": "Bu bağlantının hansı Microsoft 365 Copilot interfeysindən istifadə edəcəyini seçin. Fərdi standart istehlakçı BizChat-dır; Təhsil və Müəssisə (iş) öz tenant interfeyslərini seçirlər.", "m365TierIndividualOption": "Fərdi (standart)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Ucuz", "tierOverridePremium": "Premium", "tierOverrideHelpText": "OmniRoute-un bunu model qiymətlərindən çıxarmasına icazə vermək əvəzinə, bu provayderi marşrutlaşdırma səviyyəsinə bərkidyin.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark veb kukisi üçün ipucu", + "museSparkWebCookiePlaceholder": "Muse Spark veb kukisi üçün yer tutucu", + "oauth": "OAuth", + "openCliTools": "CLI alətlərini aç", + "openSettings": "Parametrləri aç", + "openaiResponsesStoreDescription": "Uyğun Responses API sorğularına saxlanmış cavab vəziyyətini qorumağa icazə verin.", + "openaiResponsesStoreLabel": "OpenAI Responses yaddaşı", + "perplexitySearchSharedKeyInfo": "Perplexity Search ortaq açarı haqqında məlumat", + "perplexityWebCookieHint": "Perplexity veb kukisi üçün ipucu", + "perplexityWebCookiePlaceholder": "Perplexity veb kukisi üçün yer tutucu", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Sorğu Limiti Üstələmələri", "rateLimitOverridesMaxConcurrentHint": "Bu bağlantı üçün maksimum eyni vaxtda olan sorğuların üstələnməsi. Hesab səviyyəsindəki limiti üstələyir.", "rateLimitOverridesMaxConcurrentLabel": "Maksimum Eyni Vaxtda (Sorğu Limiti)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Sorğunun uğursuz olmadan əvvəl sürət məhdudiyyəti növbəsində gözləyə biləcəyi maksimum müddət (ms). Yalnız bu bağlantı üçün qlobal Resilience parametrini əvəz edir.", + "rateLimitOverridesMaxWaitMsLabel": "Maksimum növbə gözləmə müddəti (ms)", "rateLimitOverridesMinTimeHint": "Sorğular arasındakı minimum vaxt (ms). Standart sorğu limiti gecikməsini üstələyir.", "rateLimitOverridesMinTimeLabel": "Min İnterval (ms)", "rateLimitOverridesRpdHint": "Bu bağlantı üçün gündəlik maksimum sorğu sayı. Təminatçı standartını ləğv edir.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Token/gün)", "rateLimitOverridesTpmHint": "Bu bağlantı üçün dəqiqədə maksimum token sayı. Provayderin standart dəyərini üstələyir.", "rateLimitOverridesTpmLabel": "TPM (Token/dəq)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", - "searchProviders": "Search Providers", + "refreshOauthTokenTitle": "OAuth tokenini yeniləmə başlığı", + "regionHint": "Region ipucu", + "regionLabel": "Region etiketi", + "removeThisKey": "Bu açarı sil", + "routingTagsHint": "Marşrutlaşdırma teqləri üçün ipucu", + "routingTagsLabel": "Marşrutlaşdırma teqlərinin etiketi", + "routingTagsPlaceholder": "Marşrutlaşdırma teqləri üçün yer tutucu", + "search": "Axtarış", + "searchEngineIdHint": "Axtarış mühərriki ID-si üçün ipucu", + "searchEngineIdLabel": "Axtarış mühərriki ID-sinin etiketi", + "searchEngineIdRequired": "Axtarış mühərriki ID-si tələb olunur", + "searchProvider": "Axtarış provayderi", + "searchProviderDesc": "Axtarış provayderinin təsviri", + "searchProviders": "Axtarış provayderləri", "searchByModel": "Modelə görə axtar…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Axtarış provayderləri başlığı", + "searxngBaseUrlHint": "Searxng baza URL-si üçün ipucu", + "searxngInfo": "Searxng məlumatı", + "sessionCookieLabel": "Sessiya kukisinin etiketi", + "showEmail": "E-poçtu göstər", + "snowflakeBaseUrlHint": "Snowflake baza URL-si üçün ipucu", "supportedEndpointAudio": "Audio", - "supportedEndpointChat": "Chat", - "supportedEndpointEmbeddings": "Embeddings", - "supportedEndpointImages": "Images", - "supportedEndpointsLabel": "Supported endpoints", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "supportedEndpointChat": "Çat", + "supportedEndpointEmbeddings": "Vektor təqdimatları", + "supportedEndpointImages": "Şəkillər", + "supportedEndpointsLabel": "Dəstəklənən son nöqtələr", + "tagGroupHint": "Teq qrupu üçün ipucu", + "tagGroupLabel": "Teq qrupunun etiketi", + "tagGroupPlaceholder": "Teq qrupu üçün yer tutucu", + "testModel": "Modeli sına", + "testingModel": "Model sınaqdan keçirilir", "modelTestQuotaTooltip": "Kvota bitdi — sabah sıfırlanır və ya əlavə yüklemə tələb olunur", - "toggleOffShort": "Off", - "toggleOnShort": "On", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "toggleOffShort": "Söndürülüb", + "toggleOnShort": "Aktivdir", + "tokenExpiredBadge": "Tokenin müddətinin bitməsi nişanı", + "tokenExpiredTitle": "Tokenin müddəti bitib başlığı", + "tokenExpiresSoonTitle": "Tokenin müddəti tezliklə bitəcək başlığı", + "tokenShort": "Qısa token", + "totalKeysRotating": "{count, plural, one {1 açar növbələnir} other {# açar növbələnir}}", + "unhideModel": "Modeli yenidən göstər", + "upstreamProxyProviders": "Yuxarı axın proksi provayderləri", "validationModelIdHint": "API açarını yoxlamaq üçün istifadə olunan model. Provayderin ilk mövcud modelindən istifadə etmək üçün boş buraxın.", "validationModelIdLabel": "Doğrulama modeli", "validationModelIdPlaceholder": "məs. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Xidmət Hesabı JSON-unuzu ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) və ya OAuth access_token-i yapışdırın", + "webCookieProviders": "Veb kuki provayderləri", + "weeklyShort": "Həftəlik qısa", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo əsas URL ipucu", "globalCodexServiceMode": "Qlobal Codex xidmət rejimi", "connect": "Bağlan", "manualApiKey": "Əl ilə API açarı", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Zed IDE tərəfindən OS keychain-də saxlanılan AI provayder etibarnamələrini (OpenAI, Anthropic, Google, Mistral, xAI) aşkar edin və onları bağlantı kimi idxal edin. Zed IDE bu cihazda quraşdırılmalıdır.", "zedImportButton": "Zed-dən İdxal Et", "zedImportFailed": "Zed idxalı uğursuz oldu", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed idxalı üçün ipucu", + "zedImportNetworkError": "Zed idxalı zamanı şəbəkə xətası", + "zedImportNone": "Zed idxalı yoxdur", "zedImportSuccess": "{providers} provayder(lar) üçün Zed-dən {credentials} etibarnamə(ni) idxal edildi", "zedImporting": "İdxal edilir…", "zedNoCredentials": "Keychain-də heç bir Zed etibarnaməsi tapılmadı", @@ -6016,7 +6019,7 @@ "providerDetailFastTierTooltip": "Defolt olaraq bütün Codex bağlantılarına Codex Fast səviyyəsini tətbiq edin", "providerDetailFastDefaultLabel": "Tez standart", "providerDetailBrowserManualConnect": "Brauzer/əl ilə əlaqə", - "providerDetailAuthUrl": "Auth URL", + "providerDetailAuthUrl": "Doğrulama URL-i", "providerDetailCallbackUrl": "Geri zəng URL", "providerDetailValidClaudeCredentialsFile": "Etibarlı Klod etimadnaməsi faylı", "providerDetailPathAutoDetectedAllOs": "Yol OS (Linux/Mac/Windows) üzrə avtomatik aşkarlanır.", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "giriş {number}", "claudeImportParseError": "təhlil xətası", "claudeImportNoValidEntries": "İdxal ediləcək etibarlı giriş tapılmadı", - "webFetch": "Web Fetch", + "webFetch": "Vebdən əldə etmə", "webFetchTooltip": "Veb URL-lərdən məzmun çıxaran provayderlər (HTML → Markdown, skreypinq, skrinşot)", "webFetchProvidersHeading": "Web Fetch Provayderləri", "compatibleProvidersDesc": "Sizin host etdiyiniz və ya konfiqurasiya etdiyiniz OpenAI-uyğun və Anthropic-uyğun son nöqtələr. Hər hansı bir OpenAI SDK-nı öz URL-inizə yönləndirin və sorğuları bura marşrutlaşdırın.", @@ -6052,7 +6055,7 @@ "imageProvidersDesc": "Təsvir yaratma və vizual analiz provayderləri — mətndən şəkillər yaradın və ya mövcud olanları analiz edin.", "videoProvidersDesc": "Video yaratma provayderləri. Mətn sorğularından və ya şəkillərdən qısa video çarxlar yaradın.", "onboardingWizard": "Provayderə qoşulma sehrbazı", - "onboardingWizardShort": "Onboarding Wizard", + "onboardingWizardShort": "İlkin quraşdırma sehrbazı", "onboardingWizardDescription": "Doğrulama, davamlılıq və dərhal əlaqə testi ilə API açarı, fərdi uyğun və OAuth provayderlərini birləşdirin.", "onboardingStepType": "Növ", "onboardingStepProvider": "Provayder", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5 daxil olmaqla 40-dan çox model üçün endirimli API proksisi. API açarınızı https://freeaiapikey.com/dashboard ünvanından əldə edin. Baza URL: https://freeaiapikey.com/v1.", "freemodel-dev": "https://freemodel.dev ünvanında $300 pulsuz API krediti əldə edin — ödəniş məlumatı tələb olunmur. OpenAI ilə uyğun son nöqtə. GPT-5.4 və GPT-5.5 modelləri mövcuddur.", "friendliai": "Serverless çıxarış üçün pulsuz tarif — kredit kartı tələb olunmur", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio vasitəsilə pulsuz səviyyə; model üzrə kvotalar artıq dərc edilmir (AI Studio-da kvota səhifəsini yoxlayın) — kredit kartı tələb olunmur.", "gigachat": "GigaChat (Sber)-ı API açarı ilə qoşun.", "gitlab": "İctimai Code Suggestions API üçün GitLab şəxsi giriş tokeni. gitlab.com istifadə etmədikdə, self-hosted baza URL-i konfiqurasiya edin.", "gitlawb-gmi": "API açarınızı Gitlawb Opengateway idarəetmə panelindən əldə edin.", @@ -6184,7 +6187,7 @@ "glm-cn": "GLM Coding (China)-i API açarı ilə qoşun.", "glmt": "Daha yüksək token büdcəsi, düşünmə aktivləşdirilmiş və daha uzun vaxt aşımı olan hazır GLM profili.", "getgoapi": "GoAPI-ni API açarı ilə qoşun.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Pulsuz plan: model üzrə limitlər (hər çat modeli üçün gündə 200K token; RPM/RPD üçün console.groq.com/docs/rate-limits səhifəsinə baxın) — hesabda ödəniş üsulu yoxdur.", "haiper": "API açarını haiper.ai/haiper-api ünvanından əldə edin", "heroku": "Heroku AI-ı API açarı ilə qoşun.", "hcnsec": "API açarını api.hcnsec.cn ünvanından əldə edin", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.ai ünvanında API açarı yaradın, sonra onu bura Bearer tokeni kimi yapışdırın. OpenAI ilə uyğun son nöqtə canlı /v1/models kataloqu ilə https://router.requesty.ai/v1 ünvanındadır.", "runwayml": "Runway video yaradılması tapşırıq əsaslıdır. OmniRoute mətndən-videoya və ya şəkildən-videoya tapşırıqlarını təqdim edir, /v1/tasks/[id] ünvanını sorğulayır və tamamlanmış video çıxışlarını yenidən OpenAI tipli /v1/videos/generations cavabına normallaşdırır.", "sambanova": "Qeydiyyatdan keçdikdə $5 pulsuz kredit (30 gün etibarlılıq müddəti), kredit kartı tələb olunmur", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.cc ünvanında API açarı yaradın, sonra onu Bearer tokeni kimi buraya yapışdırın. OpenAI ilə uyğun əsas URL: https://seekai.cc/v1.", "sap": "Model kəşfi AI_API_URL üzərində /v2/lm/scenarios/foundation-models/models istifadə edir. Söhbət sorğuları deploymentUrl/chat/completions istifadə edir və AI-Resource-Group tələb edir.", "sarvam": "Sarvam AI OpenAI ilə uyğun gəlir /v1. OmniRoute /v1/models-i yoxlayır və söhbət trafikini /v1/chat/completions-a yönləndirir. Modellər Hind dilləri üçün tənzimlənmişdir.", "scaleway": "Yeni hesablar üçün 1M pulsuz token — Aİ/GDPR uyğun (Paris), Qwen3 235B və Llama 70B", @@ -6309,21 +6312,21 @@ "claude": "Claude Code-u mövcud OAuth axını ilə qoşun.", "cline": "Cline-ı mövcud OAuth axını ilə qoşun.", "cursor": "Cursor IDE-ni mövcud OAuth axını ilə qoşun.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Cursor-u cursor.com/dashboard/api ünvanından əldə edilən istifadəçi API açarı (crsr_...) ilə qoşun; IDE sessiyasına ehtiyac yoxdur.", "github": "GitHub Copilot-u mövcud OAuth axını ilə qoşun.", "gitlab-duo": "ai_features + read_user əhatə dairələri olan OAuth tətbiqi. Bu OmniRoute instansiyasında GITLAB_DUO_OAUTH_CLIENT_ID və istəyə bağlı olaraq GITLAB_DUO_OAUTH_CLIENT_SECRET konfiqurasiya edin.", "kilocode": "Kilo Code-u mövcud OAuth axını ilə qoşun.", "kimi-coding": "Kimi Coding-i mövcud OAuth axını ilə qoşun.", - "kiro": "Free tier: 50 credits/month (~25K–100K tokens). ⚠️ Kiro ToS prohibits third-party proxy/harness use.", - "codex": "Connect OpenAI Codex with the existing OAuth flow.", - "qwen": "Connect Qwen Code with the existing OAuth flow.", + "kiro": "Pulsuz səviyyə: ayda 50 kredit (~25K–100K token). ⚠️ Kiro istifadə şərtləri üçüncü tərəf proksi/alətlər sistemlərindən istifadəni qadağan edir.", + "codex": "OpenAI Codex-i mövcud OAuth axını ilə qoşun.", + "qwen": "Qwen Code-u mövcud OAuth axını ilə qoşun.", "github-models": "github.com/settings/tokens ünvanında 'models: read' əhatə dairəsi ilə GitHub PAT yaradın" }, "passthroughModelsDescription": "{provider} provayderin yerli model identifikatorlarını qəbul edir. /modellərdən idxal edin və ya marşrutlaşdırma üçün fərdi identifikatorlar əlavə edin.", "bedrockModelsDescription": "Amazon Bedrock modelləri AWS bölgəsi tərəfindən əhatə olunur. /modellərdən idxal edin və ya seçilmiş regionda aktivləşdirilmiş Bedrock model ID-lərini əlavə edin.", "bedrockModelPlaceholder": "antropik.claude-sonnet-4-6", "addProviderSessionCookieTitle": "{provider} sessiya kukisini əlavə edin", - "openWebProviderSite": "Open {host}", + "openWebProviderSite": "{host} ünvanını açın", "addProviderWebTokenTitle": "{provider} veb nişanı əlavə edin", "addProviderConnectionTitle": "{provider} əlaqə əlavə edin", "webTokenCredentialLabel": "Veb sessiya nişanı", @@ -6342,45 +6345,45 @@ "webSessionGuideStep3": "Tələb olunan etimadnaməni provayderin öz domenindən kopyalayın. Kukilər üçün yalnız Kuki başlıq dəyərini kopyalayın və Kuki: buraxın.", "webSessionGuideStep3Manual": "Əl ilə yol: brauzerin inkişaf etdirici alətlərini açın (F12 → Şəbəkə), səhifəni yeniləyin, təsdiqlənmiş sorğunu açın və İstək Başlıqlarından Cookie başlıq dəyərini kopyalayın — Cookie: prefiksini atlayın.", "webSessionGuideStep4": "Bura yapışdırın və əlaqəni yoxlayın. Əgər işləməyi dayandırarsa, yenidən daxil olun və onu təzə dəyərlə əvəz edin.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har faylını idxal edin", + "harImportButtonBusy": "İdxal edilir…", + "harImportButtonHint": "Ən azı bir çat mesajı göndərdikdən sonra DevTools-un Network bölməsindən ixrac edin.", + "harImportStatusValid": "İdxal edildi — təxminən {minutes} dəqiqə etibarlıdır.", + "harImportStatusExpiringSoon": "İdxal edildi — cəmi təxminən {minutes} dəqiqə daha etibarlıdır.", + "harImportStatusExpired": "İdxal edildi, lakin bu tokenin müddəti artıq bitib ({minutes} dəqiqə əvvəl) — yeni HAR ixrac edin.", + "harImportStatusUnknownExpiry": "İdxal edildi. Onun etibarlılıq müddətini oxumaq mümkün olmadı.", + "harImportErrorNotJson": "Bu fayl düzgün JSON deyil — həqiqətən .har ixracıdır?", + "harImportErrorNoEntries": "Bu HAR-da heç bir şəbəkə qeydi yoxdur.", + "harImportErrorNoChathubUrl": "Bu HAR-da Copilot çat bağlantısı tapılmadı. İxrac etməzdən əvvəl m365.cloud.microsoft saytında ən azı bir çat mesajı göndərin.", + "harImportErrorUnparsableUrl": "Çat bağlantısı tapıldı, lakin onun URL-i oxuna bilmədi.", + "harImportErrorMissingFields": "Çat bağlantısı tapıldı, lakin orada token yox idi.", + "harImportErrorReadFailed": "Həmin faylı oxumaq mümkün olmadı.", + "harImportErrorUnknown": "Həmin HAR faylından giriş məlumatını çıxarmaq mümkün olmadı.", "webSessionSecurityHint": "Bunu parol kimi qəbul edin: müddəti bitənə və ya ləğv edilənə qədər o, daxil olduğunuz veb hesabınıza daxil ola bilər.", "webNoAuthGuideTitle": "Etibarnamə tələb olunmur", "webNoAuthGuideBody": "{provider} üçün API açarı və ya kuki tələb olunmur. Pulsuz veb son nöqtəsindən istifadə etmək üçün əlaqəni yadda saxlayın.", "webSessionCredentialValidationFailed": "Sessiya etimadnaməsinin yoxlanılması uğursuz oldu. Yenidən daxil olun, yeni etimadnaməsini kopyalayın və yenidən cəhd edin.", "checkCookie": "Kuki yoxlayın", "checkWebToken": "Tokeni yoxlayın", - "huggingchatLabel": "HuggingChat (Free)", - "huggingchatDesc": "Free LLM chat via huggingface.co/chat", - "poeWebLabel": "Poe Web", - "poeWebDesc": "Multi-model chat via poe.com", - "veniceWebLabel": "Venice Web", - "veniceWebDesc": "Privacy-focused AI chat", - "v0VercelWebLabel": "v0 Vercel Web", - "v0VercelWebDesc": "AI code generation via v0.dev", + "huggingchatLabel": "HuggingChat (Pulsuz)", + "huggingchatDesc": "huggingface.co/chat vasitəsilə pulsuz LLM çatı", + "poeWebLabel": "Poe Veb", + "poeWebDesc": "poe.com vasitəsilə çoxmodelli çat", + "veniceWebLabel": "Venice Veb", + "veniceWebDesc": "Məxfiliyə yönəlmiş süni intellekt çatı", + "v0VercelWebLabel": "v0 Vercel Veb", + "v0VercelWebDesc": "v0.dev vasitəsilə süni intellektlə kod yaratma", "kimiWebLabel": "Kimi Web", - "kimiWebDesc": "Moonshot AI consumer chat via www.kimi.com (international, Connect-RPC API)", + "kimiWebDesc": "www.kimi.com vasitəsilə Moonshot AI istehlakçı çat xidməti (beynəlxalq, Connect-RPC API)", "doubaoWebLabel": "Dola Web", - "doubaoWebDesc": "ByteDance AI chat via dola.com", - "overrideBaseUrlAdvanced": "Advanced: override base URL", - "overrideBaseUrlHint": "Advanced: point this built-in provider at a custom endpoint. Leave blank to use the default.", + "doubaoWebDesc": "dola.com vasitəsilə ByteDance AI çat xidməti", + "overrideBaseUrlAdvanced": "Qabaqcıl: əsas URL-i dəyişdirin", + "overrideBaseUrlHint": "Qabaqcıl: bu daxili provayderi fərdi son nöqtəyə yönəldin. Standart dəyərdən istifadə etmək üçün boş saxlayın.", "apiProtocolLabel": "API protokolu", "apiProtocolDefault": "OpenAI-uyğun (defolt)", "apiProtocolHint": "Bəzi təminatçılar eyni modelləri bir neçə protokol üzrə yayımlayır. Alternativə ehtiyacınız olmadıqca, standartı saxlayın.", - "bulkAddFormatHintCloudflare": "One key per line. Format: name|accountId|apiKey (Cloudflare account ID + API token).", - "lmarenaWebCookieHint": "Open arena.ai, sign in, then copy the full Cookie header from a Network request. Include arena-auth-prod-v1.0 and arena-auth-prod-v1.1 (and further chunks if present), preferably with cf_clearance. Do not paste only the empty arena-auth-prod-v1 cookie. Optional: providerSpecificData.recaptchaV3Token if create-evaluation still returns 403.", + "bulkAddFormatHintCloudflare": "Hər sətirdə bir açar. Format: name|accountId|apiKey (Cloudflare hesab ID-si + API tokeni).", + "lmarenaWebCookieHint": "arena.ai saytını açın, daxil olun, sonra Network sorğusundan tam Cookie başlığını kopyalayın. arena-auth-prod-v1.0 və arena-auth-prod-v1.1 dəyərlərini (mövcuddursa, sonrakı hissələri də), tercihen cf_clearance ilə birlikdə daxil edin. Yalnız boş arena-auth-prod-v1 kukisini yerləşdirməyin. İstəyə bağlı: create-evaluation hələ də 403 qaytarırsa, providerSpecificData.recaptchaV3Token.", "kimiOfficialSupporterBadge": "Təsisçi Dost", "kimiOfficialSupporterTooltip": "Kimi (Moonshot AI) OmniRoute-un təsisçi Açıq Mənbə Dostudur", "cheaperInferenceSupporterBadge": "Açıq Mənbə Dostu", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Codex xidmət rejimi yeniləndi", "codexServiceTierActive": "Codex {tier} xidmət səviyyəsi aktivdir", "codexTierFastLabel": "Tez", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Çevik", "commandCodeApplyFailed": "Komanda Kodu auth tətbiq etmək mümkün olmadı", "commandCodeApplyingApproval": "Brauzer təsdiqləndi, tətbiq edilir…", "commandCodeApplyingKey": "Brauzer tərəfindən təsdiqlənmiş açar tətbiq edilir…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Komanda Kodu auth müddəti bitdi", "commandCodeConnected": "Əmr Kodu qoşuldu", "commandCodeConnectionAdded": "Komanda Kodu bağlantısı əlavə edildi", + "clearConnectionCooldown": "Gözləmə müddətini sıfırla", + "clearConnectionCooldownInProgress": "Sıfırlanır…", + "clearConnectionCooldownTitle": "Gözləmə müddətini indi sıfırlayın — yuxarı mənbədə kvota artıq yenilənibsə istifadə edin", "commandCodeLinkExpired": "Əmr Kodu bağlantısı müddəti bitdi", "commandCodeOpeningStudio": "Komanda Kod Studiyasını Açır…", "commandCodePopupBlocked": "Pop-up bloklandı. Zəhmət olmasa, pop-uplara icazə verin və Command Code Connect-i yenidən cəhd edin.", "commandCodeStartFailed": "Komanda Kodu auth başlamaqda uğursuz oldu", "connectionDeleted": "Bağlantı silindi", "connectionFallback": "bağlantı", + "connectionCooldownCleared": "Gözləmə müddəti sıfırlandı — bağlantı yenidən marşrutlaşdırmaya qoşuldu", "coolingConnectionsDescription": "Bu bağlantılar son sorğudan sonra soyumaqdadır. OmniRoute taymer bitənə qədər onları atlayacaq — əl ilə söndürmək lazım deyil.", "coolingConnectionsTitle": "Hazırda soyudulur ({count})", + "failedClearConnectionCooldown": "Gözləmə müddətini sıfırlamaq alınmadı", "failedDeleteAlias": "Alias silinmədi", "failedDeleteConnection": "Bağlantını silmək mümkün olmadı", "failedDistributeProxies": "Proksiləri paylamaq mümkün olmadı.", @@ -6470,21 +6478,16 @@ "savedModelEndpointSettings": "Saxlanmış model son nöqtəsi parametrləri", "searchByModelAria": "Model üzrə axtarış edin", "selectSupportedEndpoint": "Ən azı bir dəstəklənən son nöqtəni seçin", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Test sistemi / CLI" }, "settings": { - "title": "Settings", - "general": "General", - "security": "Security", - "appearance": "Appearance", - "routing": "Routing", - "cache": "Cache", - "resilience": "Resilience", + "title": "Parametrlər", + "general": "Ümumi", + "security": "Təhlükəsizlik", + "appearance": "Görünüş", + "routing": "Marşrutlaşdırma", + "cache": "Keş", + "resilience": "Dayanıqlılıq", "description": "Təsvir", "enable": "Aktivləşdir", "disable": "Deaktiv et", @@ -6527,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "tərkibində bunlar olan paraqrafları sil: {items}", "routingSummarizeDropParagraphStartsWith": "bunlarla başlayan paraqrafları sil: {items}", "routingSummarizeReplaceText": "əvəz et \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "müntəzəm ifadə /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "tərkibində bunlar olan blokları sil: {items}", "routingSummarizePrependSystemBlock": "bloku əvvələ əlavə et: \"{text}\"", "routingSummarizeAppendSystemBlock": "bloku sona əlavə et: \"{text}\"", @@ -6551,25 +6554,25 @@ "routingOpStatusSeparator": " ·", "resilienceSettingsIntro": "Provayderlər uğursuz olduqda avtomatik yenidən cəhd, soyuma və geri qaytarma.", "aiSettingsIntro": "Düşüncə büdcəsi, model davranışı və sıxılma üçün süni intellektə xüsusi parametrlər.", - "systemPrompt": "System Prompt", - "thinkingBudget": "Thinking Budget", + "systemPrompt": "Sistem təlimatı", + "thinkingBudget": "Düşünmə büdcəsi", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP proksisi", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Proksi bölmələri", + "requestBodyLimitTitle": "Sorğu gövdəsi limiti", + "requestBodyLimitDescription": "Sorğu gövdəsi emal edilməzdən əvvəl qəbul edilən maksimum API faydalı yük ölçüsü. Xüsusi yükləmə marşrutları ən azı daxili 100 MB limitini saxlayır.", + "requestBodyLimitInputLabel": "Sorğu gövdəsi limiti, MB ilə", + "requestBodyLimitEmptyError": "MB ilə limit daxil edin", + "requestBodyLimitWholeNumberError": "Tam ədəd istifadə edin", + "requestBodyLimitMinimumError": "Minimum {min} MB-dir", + "requestBodyLimitMaximumError": "Maksimum {max} MB-dir", + "requestBodyLimitLoadFailed": "Sorğu limiti parametrlərini yükləmək alınmadı", + "requestBodyLimitSaveSuccess": "Sorğu gövdəsi limiti yadda saxlanıldı", + "requestBodyLimitSaveFailed": "Sorğu gövdəsi limitini yadda saxlamaq alınmadı", + "requestBodyLimitSaving": "Yadda saxlanılır...", + "requestBodyLimitSave": "Yadda saxla", + "requestBodyLimitCurrent": "Cari: {value}", "cacheConfigLoadFailed": "Keş parametrlərini yükləmək mümkün olmadı", "cacheConfigSaveSuccess": "Keş parametrləri saxlanıldı", "cacheConfigSaveFailed": "Keş parametrlərini saxlamaq mümkün olmadı", @@ -6582,70 +6585,70 @@ "modelCatalogCacheTtlSaving": "Saxlanılır...", "modelCatalogCacheTtlSave": "Saxla", "modelCatalogCacheTtlCurrent": "Cari: {value} ms", - "mitmProxy": "MITM Proxy", - "pricing": "Pricing", - "storage": "Storage", - "policies": "Policies", - "ipFilter": "IP Filter", - "comboDefaults": "Combo Defaults", - "fallbackChains": "Fallback Chains", - "changePassword": "Change Password", - "enablePassword": "Enable Password", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "mitmProxy": "MITM Proksi", + "pricing": "Qiymətləndirmə", + "storage": "Yaddaş", + "policies": "Siyasətlər", + "ipFilter": "IP filtri", + "comboDefaults": "Kombinasiya üçün standartlar", + "fallbackChains": "Ehtiyat zəncirləri", + "changePassword": "Şifrəni dəyiş", + "enablePassword": "Şifrəni aktivləşdir", + "darkMode": "Qaranlıq rejim", + "lightMode": "İşıqlı rejim", + "memoryTitle": "Yaddaş", + "memoryDesc": "Sessiyalar arasında davamlı danışıq yaddaşı", + "memoryEnabled": "Yaddaşı aktivləşdir", + "memoryEnabledDesc": "Aktiv olduqda, OmniRoute keçmişdən uyğun konteksti əlavə edəcək.", "memoryTokenCostWarning": "Diqqət: yaddaş aktiv olduqda, OmniRoute hər çat sorğusuna əldə edilmiş kontekstdən {tokens} tokenə qədər daxil edir — bu, token istifadəsini və xərci artırır. Müəyyən bir sorğu üçün daxiletməni ötürmək üçün \"x-omniroute-no-memory: true\" başlığını göndərin.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", - "justNow": "Just now", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", - "providers": "Providers", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", - "systemTheme": "System Theme", - "debugToggle": "Enable Debug Mode", + "maxTokens": "Maksimum token sayı", + "retentionDays": "Saxlama müddəti", + "recent": "Son", + "recentDesc": "Xronoloji pəncərə", + "semantic": "Semantik", + "semanticDesc": "Vektor axtarışı", + "hybrid": "Hibrid", + "hybridDesc": "Son + Semantik", + "skillsTitle": "Bacarıqlar", + "skillsDesc": "Modellər üçün alətlər", + "skillsEnabled": "Bacarıqları aktivləşdir", + "skillsEnabledDesc": "Agentlərə funksiyaları işə salmağa imkan verir.", + "skillsComingSoon": "Bacarıqlar marketpleysi tezliklə istifadəyə veriləcək.", + "memorySkillsTitle": "Yaddaş və Bacarıqlar", + "memorySkillsDesc": "Davamlı kontekst və imkanlar", + "modelsDevTitle": "Model verilənlər bazası", + "modelsDevDesc": "Qiymətləri, imkanları və spesifikasiyaları models.dev saytından avtomatik sinxronlaşdırın", + "modelsDevEnabled": "models.dev sinxronizasiyasını aktivləşdir", + "modelsDevEnabledDesc": "Model qiymətlərini, imkanlarını və spesifikasiyalarını açıq mənbəli models.dev verilənlər bazasından əldə edin", + "modelsDevInterval": "Sinxronizasiya intervalı", + "syncNow": "İndi sinxronlaşdır", + "syncing": "Sinxronlaşdırılır...", + "lastSync": "Son sinxronizasiya", + "never": "Heç vaxt", + "justNow": "İndicə", + "modelsDevStats": "Sinxronizasiya statistikası", + "modelsDevStatsDesc": "Cari models.dev məlumat əhatəsi", + "providers": "Provayderlər", + "modelsWithPricing": "Qiymətləndirməsi olan modellər", + "capabilities": "İmkanlar", + "lastSyncCount": "Son sinxronizasiya sayı", + "lastSyncFull": "Son tam sinxronizasiya", + "modelsDevInfo": "Necə işləyir", + "modelsDevInfoDesc": "models.dev, SST/OpenCode komandası tərəfindən idarə olunan, süni intellekt modellərinin spesifikasiyalarını ehtiva edən açıq mənbəli verilənlər bazasıdır. O, 100-dən çox provayder üzrə 4.000-dən çox model üçün qiymətlər, imkanlar, kontekst limitləri və modallıqlar təqdim edir.", + "modelsDevInfoResolution": "Qiymətin müəyyənləşdirilməsi ardıcıllığı (ən yüksək prioritetdən başlayaraq):", + "modelsDevInfoOrder": "İstifadəçi təyinatı → models.dev → LiteLLM → Sərt kodlaşdırılmış standart dəyər", + "systemTheme": "Sistem mövzusu", + "debugToggle": "Sazlama rejimini aktivləşdir", "logToolSourcesToggle": "Alət mənbələrini qeydə al", "logToolSourcesDescription": "Hər sorğu üçün alət sayını və MCP/hosted/client mənbə bölgüsünü xülasə edən diaqnostik loq sətri çıxarın.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Məlumatı ana səhifəyə bərkid", "homePinnedSectionsDesc": "Əsas səhifənin yuxarısına hansı bölmələrin bərkidiləcəyini seçin.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Provayder kvota limitləri", + "homeProviderQuotaLimitsDesc": "Provayder kvotasının status konteynerini («Hamısını yenilə» düyməsi ilə) Ana səhifənin yuxarısına bərkidin.", + "homeQuickStart": "Sürətli başlanğıc", + "homeQuickStartDesc": "Ana səhifədə Sürətli başlanğıc panelini göstərin.", + "homeProviderTopology": "Provayder topologiyası", + "homeProviderTopologyDesc": "Ana səhifədə Provayder topologiyasını göstərin.", "accountEmailVisibility": "Hesab e-poçtunun görünürlüyü", "accountEmailVisibilityDesc": "Provayderlər, kombolar, loqlar, kvota və playground ekranlarında tam hesab e-poçtlarını göstərin. Onları standart olaraq maskalamaq üçün bunu söndürün.", "comboConfigMode": "Kombo konfiqurasiya rejimi", @@ -6661,138 +6664,138 @@ "providerQuotaAutoRefreshInterval": "Yeniləmə intervalı", "providerQuotaAutoRefreshIntervalDesc": "Kvota görünüşünün nə qədər tez-tez yenilənməli olduğu (saniyə ilə).", "seconds": "saniyə", - "sidebarVisibilityToggle": "Show Sidebar Items", - "enableCache": "Enable Cache", - "cacheTTL": "Cache TTL", - "maxCacheSize": "Max Cache Size", - "clearCache": "Clear Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", - "cacheHits": "Cache Hits", - "cacheMisses": "Cache Misses", - "hitRate": "Hit Rate", - "cacheEntries": "Cache Entries", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "sidebarVisibilityToggle": "Yan panel elementlərini göstər", + "enableCache": "Keşi aktivləşdir", + "cacheTTL": "Keşin TTL müddəti", + "maxCacheSize": "Maksimum keş ölçüsü", + "clearCache": "Keşi təmizlə", + "cacheCleared": "Keş uğurla təmizləndi", + "clearCacheFailed": "Keşi təmizləmək mümkün olmadı", + "cacheHits": "Keş uyğunluqları", + "cacheMisses": "Keş uyğunsuzluqları", + "hitRate": "Uyğunluq faizi", + "cacheEntries": "Keş qeydləri", + "cacheSettings": "Keş parametrləri", + "semanticCache": "Semantik keş", + "maxEntries": "Maksimum qeyd sayı", + "ttlMinutes": "TTL (dəqiqə)", + "promptCache": "Sorğu keşi", + "strategy": "Strategiya", + "preserveClientCache": "Müştəri keşini qoruyub saxla", + "enabled": "Aktivdir", "loading": "Loading...", - "saving": "Saving...", - "save": "Save", - "circuitBreaker": "Circuit Breaker", - "retryPolicy": "Retry Policy", - "maxRetries": "Max Retries", - "retryDelay": "Retry Delay", - "timeoutMs": "Timeout (ms)", - "enableSystemPrompt": "Enable System Prompt", - "systemPromptText": "System Prompt Text", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "saving": "Yadda saxlanılır...", + "save": "Yadda saxla", + "circuitBreaker": "Dövrə qoruyucusu", + "retryPolicy": "Təkrar cəhd siyasəti", + "maxRetries": "Maksimum təkrar cəhd sayı", + "retryDelay": "Təkrar cəhd gecikməsi", + "timeoutMs": "Taymaut (ms)", + "enableSystemPrompt": "Sistem promptunu aktivləşdir", + "systemPromptText": "Sistem promptunun mətni", + "autoDisableBannedAccounts": "Bloklanmış hesabları avtomatik deaktiv et", + "autoDisableDescription": "Xüsusi yekun bloklanma siqnalları (məsələn, HTTP 403 'hesabınızı təsdiqləyin') qaytaran provayder bağlantılarını həmişəlik deaktiv edilmiş kimi işarələyin. Bu, onları kombinasiya rotasiyasından çıxarır.", + "autoDisableThreshold": "Bloklanma həddi", + "autoDisableThresholdDesc": "Həmişəlik deaktivləşdirmədən əvvəl tələb olunan ardıcıl bloklanma siqnallarının sayı.", + "autoDisableBannedScope": "Avtomatik deaktivləşdirməni bunlara tətbiq et", + "autoDisableBannedScopeDesc": "OmniRoute bloklanmadan sonra təkrar cəhdlərə davam edərsə, giriş yerləri (ödənişli abunəliklər və pulsuz hesablar) yuxarı axın xidməti tərəfindən kilidlənə bilər. Ödənişli, əvvəlcədən ödənilmiş API açarlarında bu risk yoxdur — onları hovuzda saxlayın ki, fill-first növbəti açardan istifadə edə bilsin.", + "autoDisableBannedScopeAll": "Bütün bağlantılar", + "autoDisableBannedScopeAllDesc": "Əvvəlcədən ödənilmiş API açarları daxil olmaqla, daimi bloklanma siqnalı qaytaran hər bir bağlantını deaktiv edin.", + "autoDisableBannedScopeSubscription": "Yalnız giriş / abunəlik hesabları", + "autoDisableBannedScopeSubscriptionDesc": "OAuth, kuki, sessiya və veb-giriş yerlərini (ödənişli və ya pulsuz) deaktiv edin. Əvvəlcədən ödənilmiş API açarları aktiv qalır ki, marşrutlaşdırma alternativə keçə bilsin.", "customBannedSignals": "Qadağan olunmuş açar sözlər", "customBannedSignalsDesc": "Hesabın daimi bloklanmasının aşkarlanmasını işə salan əlavə açar sözlər. Daxili açar sözlər həmişə tətbiq olunur.", "customBannedSignalsPlaceholder": "məs., api key revoked", "noCustomBannedSignals": "Xüsusi açar söz yoxdur. Yalnız daxili açar sözlər aktivdir.", - "resilienceStructureTitle": "Resilience Structure", - "resilienceStructureDesc": "This page only configures behavior. Live breaker state is shown on the Health page. Combo-specific retry and round-robin slot control remain on combo settings.", - "enableThinking": "Enable Thinking", - "maxThinkingTokens": "Max Thinking Tokens", - "enableProxy": "Enable Proxy", + "resilienceStructureTitle": "Dayanıqlılıq strukturu", + "resilienceStructureDesc": "Bu səhifə yalnız davranışı konfiqurasiya edir. Dövrə qoruyucusunun cari vəziyyəti Sağlamlıq səhifəsində göstərilir. Kombinasiyaya xas təkrar cəhd və dairəvi slot idarəetməsi kombinasiya ayarlarında qalır.", + "enableThinking": "Düşünməni aktivləşdir", + "maxThinkingTokens": "Maksimum düşünmə tokenlərinin sayı", + "enableProxy": "Proksini aktivləşdir", "perKeyProxyEnabled": "Hər açar üçün proksi təyinatını aktivləşdirin", "perKeyProxyEnabledDesc": "Aktiv olduqda, hər provayder bağlantısı öz proksi təyinatından istifadə edə bilər", - "proxyUrl": "Proxy URL", - "pricingRates": "Pricing Rates Format", - "currentPricing": "Current Pricing Overview", - "loadingPricing": "Loading pricing data...", - "noPricing": "No pricing data available", - "input": "Input", - "output": "Output", - "cached": "Cached", + "proxyUrl": "Proksi URL-i", + "pricingRates": "Qiymət tariflərinin formatı", + "currentPricing": "Cari qiymətlərə ümumi baxış", + "loadingPricing": "Qiymət məlumatları yüklənir...", + "noPricing": "Qiymət məlumatı mövcud deyil", + "input": "Giriş", + "output": "Çıxış", + "cached": "Keşlənmiş", "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "customPricing": "Custom Pricing", - "databaseSize": "Database Size", - "backupDb": "Backup Database", - "restoreDb": "Restore Database", - "exportData": "Export Data", - "importData": "Import Data", - "clearData": "Clear All Data", - "clearDataConfirm": "This will permanently delete all data. Are you sure?", - "enableRequestLogs": "Enable Request Logs", - "logRetention": "Log Retention", - "ipWhitelist": "IP Whitelist", - "ipBlacklist": "IP Blacklist", - "addIP": "Add IP", - "savedSuccessfully": "Settings saved successfully", + "cacheCreation": "Keşin yaradılması", + "customPricing": "Fərdi qiymətləndirmə", + "databaseSize": "Verilənlər bazasının ölçüsü", + "backupDb": "Verilənlər bazasının ehtiyat nüsxəsini yarat", + "restoreDb": "Verilənlər bazasını bərpa et", + "exportData": "Məlumatları ixrac et", + "importData": "Məlumatları idxal et", + "clearData": "Bütün məlumatları sil", + "clearDataConfirm": "Bu əməliyyat bütün məlumatları həmişəlik siləcək. Əminsiniz?", + "enableRequestLogs": "Sorğu jurnallarını aktivləşdir", + "logRetention": "Jurnalların saxlanma müddəti", + "ipWhitelist": "IP ağ siyahısı", + "ipBlacklist": "IP qara siyahısı", + "addIP": "IP əlavə et", + "savedSuccessfully": "Parametrlər uğurla yadda saxlanıldı", "ai": "AI", - "advanced": "Advanced", - "localMode": "Local Mode — All data stored on your machine", - "settingsSectionsAria": "Settings sections", - "switchThemes": "Switch between light and dark themes", - "themeSelectionAria": "Theme selection", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", - "endpointTunnelVisibility": "Endpoint tunnel visibility", - "endpointTunnelVisibilityDesc": "Hide tunnel controls from the Endpoint page without changing tunnel state.", + "advanced": "Qabaqcıl", + "localMode": "Lokal rejim — Bütün məlumatlar cihazınızda saxlanılır", + "settingsSectionsAria": "Parametr bölmələri", + "switchThemes": "Açıq və tünd mövzular arasında keçid edin", + "themeSelectionAria": "Mövzu seçimi", + "themeLight": "Açıq", + "themeDark": "Tünd", + "themeSystem": "Sistem", + "endpointTunnelVisibility": "Endpoint tunelinin görünməsi", + "endpointTunnelVisibilityDesc": "Tunelin vəziyyətini dəyişmədən Endpoint səhifəsində tunel idarəetmələrini gizlədin.", "showCloudflareTunnel": "Cloudflare Quick Tunnel", - "showCloudflareTunnelDesc": "Show Cloudflare Quick Tunnel controls on the Endpoint page.", + "showCloudflareTunnelDesc": "Endpoint səhifəsində Cloudflare Quick Tunnel idarəetmələrini göstərin.", "showTailscaleFunnel": "Tailscale Funnel", - "showTailscaleFunnelDesc": "Show Tailscale Funnel controls on the Endpoint page.", + "showTailscaleFunnelDesc": "Endpoint səhifəsində Tailscale Funnel idarəetmələrini göstərin.", "showNgrokTunnel": "ngrok Tunnel", - "showNgrokTunnelDesc": "Show ngrok Tunnel controls on the Endpoint page.", - "sidebarVisibility": "Hide sidebar items", - "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter without disabling any features", - "sidebarVisibilityHint": "Any sidebar section is hidden automatically when all of its entries are hidden", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", + "showNgrokTunnelDesc": "Endpoint səhifəsində ngrok Tunnel idarəetmələrini göstərin.", + "sidebarVisibility": "Yan panel elementlərini gizlət", + "sidebarVisibilityDesc": "Heç bir funksiyanı deaktiv etmədən vizual qarışıqlığı azaltmaq üçün istənilən yan panel naviqasiya elementini gizlədin", + "sidebarVisibilityHint": "Bütün elementləri gizlədildikdə istənilən yan panel bölməsi avtomatik olaraq gizlədilir", + "presetAll": "Hamısı", + "presetAllDesc": "Hər şeyi göstər", + "presetEssentials": "Əsaslar", + "presetEssentialsDesc": "Başlanğıc yolu — Qabaqcıl alətlər axtarışda əlçatan qalır", "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", - "hideHealthLogs": "Hide Health Check Logs", - "hideHealthLogsDesc": "When ON, suppress [HealthCheck] messages in server console", - "themeAccent": "Theme color", - "themeAccentDesc": "Choose a preset color or create your own theme with one color", - "themeCreate": "Create theme", - "themeCustom": "Custom theme", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "presetMinimalDesc": "Yalnız əsas səhifələr", + "presetDeveloper": "Tərtibatçı", + "presetDeveloperDesc": "Tərtibatçı və proksi alətləri", + "presetAdmin": "İnzibatçı", + "presetAdminDesc": "Monitorinq və audit", + "settingsSidebarTitle": "Yan panelin fərdiləşdirilməsi", + "settingsSidebarDesc": "Göstəriləcək yan panel elementlərini seçin. Əsaslar seçimi Qabaqcıl alətləri axtarışda əlçatan saxlayır.", + "hideHealthLogs": "Sağlamlıq yoxlaması jurnallarını gizlət", + "hideHealthLogsDesc": "AKTİV olduqda, server konsolunda [HealthCheck] mesajlarını göstərmə", + "themeAccent": "Mövzu rəngi", + "themeAccentDesc": "Hazır rəng seçin və ya bir rənglə öz mövzunuzu yaradın", + "themeCreate": "Mövzu yarat", + "themeCustom": "Fərdi mövzu", + "themeBlue": "Mavi", + "themeRed": "Qırmızı", + "themeGreen": "Yaşıl", + "themeViolet": "Bənövşəyi", + "themeOrange": "Narıncı", + "themeCyan": "Firuzəyi", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Tətbiqin adını və loqosunu fərdiləşdirin", + "appName": "Tətbiqin adı", + "appNameDesc": "Yan paneldə və brauzer nişanında göstərilən ad", + "customLogo": "Fərdi loqo URL-si", + "customLogoDesc": "Fərdi loqo şəklinizin URL-si", + "uploadLogo": "Loqo yüklə", + "resetLogo": "Standart parametrlərə sıfırla", + "logoPreview": "Önizləmə", + "customFavicon": "Brauzer favikonu", + "customFaviconDesc": "Fərdi favikonunuzun URL-si (brauzer nişanında göstərilir)", + "uploadFavicon": "Favikon yüklə", + "resetFavicon": "Favikonu sıfırla", + "faviconPreview": "Favikonun önizləməsi", "logoFileTooLarge": "Loqo faylı 500KB-dan az olmalıdır", "faviconFileTooLarge": "Favikon faylı 50KB-dan az olmalıdır", "invalidLogoFileType": "Yanlış fayl növü. Zəhmət olmasa PNG, JPG, SVG, GIF və ya WebP yükləyin.", @@ -6800,15 +6803,15 @@ "failedToReadFile": "Faylı oxumaq mümkün olmadı", "startOnLogin": "Sistemə daxil olduqda başlat", "startOnLoginDesc": "Sistem işə düşərkən OmniRoute-u avtomatik başladın və fonda sistem treyində səssiz rejimdə işlədin.", - "flushCache": "Flush Cache", - "flushing": "Flushing…", - "size": "Size", - "hits": "Hits", - "evictions": "Evictions", - "loadingCacheStats": "Loading cache stats…", - "globalProxy": "Global Proxy", - "globalProxyDesc": "Configure a global outbound proxy for all API calls. Individual providers, combos, and keys can override this.", - "noGlobalProxy": "No global proxy configured", + "flushCache": "Keşi təmizlə", + "flushing": "Təmizlənir…", + "size": "Ölçü", + "hits": "Sorğular", + "evictions": "Çıxarılmalar", + "loadingCacheStats": "Keş statistikası yüklənir…", + "globalProxy": "Qlobal proksi", + "globalProxyDesc": "Bütün API çağırışları üçün qlobal çıxış proksisini konfiqurasiya edin. Ayrı-ayrı provayderlər, kombinasiyalar və açarlar bunu əvəz edə bilər.", + "noGlobalProxy": "Qlobal proksi konfiqurasiya edilməyib", "proxyPool": "Proksi hovuzu", "freePool": "Pulsuz hovuz", "proxyDocumentation": "Proksi sənədləri", @@ -6896,21 +6899,21 @@ "refreshInterval": "Təzələmə Aralığı", "ruleModeDescription": "Qayda Rejimi Təsviri" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", + "bulkHealthcheck": "Kütləvi sağlamlıq yoxlaması", + "bulkHealthcheckDesc": "Hansılarının işlədiyini müəyyən etmək üçün bütün konfiqurasiya edilmiş proksiləri hədəf URL ilə sınaqdan keçirin.", + "healthcheckTesting": "Sınaqdan keçirilir...", + "healthcheckAll": "Hamısının sağlamlığını yoxla", + "healthcheckFailed": "Sağlamlıq yoxlamasını işə salmaq alınmadı", + "healthcheckTestingAll": "Bütün proksilər paralel olaraq yoxlanılır...", + "healthcheckTotal": "Cəmi", + "healthcheckWorking": "İşlək", + "healthcheckFailedLabel": "Uğursuz", "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "healthcheckProxyUrl": "Proksi URL-i", + "healthcheckLatency": "Gecikmə", "proxyDocumentationScopeTitle": "Proksi əhatə dairəsinin təyini", "proxyDocumentationScopeDescBefore": "OmniRoute çıxan proksini prioritet sırası ilə təyin edir:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "combo → hesab → provayder → qlobal", "proxyDocumentationScopeDescAfter": ". Ən spesifik əhatə dairəsi üstünlük təşkil edir.", "proxyDocumentationAddTitle": "Fərdi proksinin əlavə edilməsi", "proxyDocumentationAddDescBefore": "Keçin:", @@ -6966,22 +6969,22 @@ "proxyFreePoolLoadMore": "Daha çox yüklə", "close": "Bağla", "cancel": "Ləğv et", - "globalLabel": "Global", - "configure": "Configure", - "globalSystemPrompt": "Global System Prompt", - "saved": "Saved", + "globalLabel": "Qlobal", + "configure": "Konfiqurasiya et", + "globalSystemPrompt": "Qlobal Sistem Sorğusu", + "saved": "Yadda saxlanıldı", "beforePromptLabel": "Promptdan əvvəl", "beforePromptDesc": "Agent/provayder sistem təlimatlarından əvvəl daxil edilir", "beforePromptPlaceholder": "Agent/provayder promptundan əvvəl daxil edilən təlimatlar...", "afterPromptLabel": "Promptdan sonra", "afterPromptDesc": "Agent/provayder sistem təlimatlarından sonra daxil edilir", "afterPromptPlaceholder": "Agent/provayder promptundan sonra daxil edilən təlimatlar...", - "chars": "{count} chars", - "thinkingBudgetTitle": "Thinking Budget", + "chars": "{count} simvol", + "thinkingBudgetTitle": "Düşünmə Büdcəsi", "thinkingBudgetDesc": "Control AI reasoning token usage across all requests", "thinkingBudgetIndependenceHint": "Sıxma, yönləndirmə və token-limit xüsusiyyətləri hər bir rejimdə işləməyə davam edir. Auto \"avtomatik düşüncə göstərmək\" demək deyil - bu, müştəri düşüncə sahələrini çıxarır.", - "passthrough": "Passthrough", - "passthroughDesc": "No changes — client controls thinking budget", + "passthrough": "Dəyişikliksiz ötürmə", + "passthroughDesc": "Dəyişiklik yoxdur — düşünmə büdcəsini müştəri idarə edir", "thinkingModePassthrough": "Keçid", "thinkingModePassthroughDesc": "Müştəri səbəblərini dəyişməz saxlayın (səy, xülasə, düşüncə blokları). Codex/Desktop görünən düşüncə üçün tələb olunur. Varsayılan.", "thinkingModeAuto": "Avtomatik (zolaq)", @@ -6991,54 +6994,54 @@ "thinkingModeAdaptive": "Uyğunlaşan", "thinkingModeAdaptiveDesc": "Mesaj sayı, alətlər və təklif uzunluğundan istifadə edərək əsas səydən düşüncə büdcəsini ölçün.", "auto": "Auto Combo", - "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "custom": "Custom", - "customDesc": "Set a fixed token budget for all requests", - "adaptive": "Adaptive", - "adaptiveDesc": "Scale budget based on request complexity", - "effortNone": "None (0 tokens)", - "effortLow": "Low (1K tokens)", - "effortMedium": "Medium (10K tokens)", - "effortHigh": "High (128K tokens)", - "tokenBudget": "Token Budget", - "tokens": "tokens", - "baseEffortLevel": "Base Effort Level", + "autoDesc": "Özünü bərpa edən ağıllı marşrutlaşdırma hovuzu (Performans üçün optimallaşdırılıb)", + "custom": "Fərdi", + "customDesc": "Bütün sorğular üçün sabit token büdcəsi təyin edin", + "adaptive": "Adaptiv", + "adaptiveDesc": "Büdcəni sorğunun mürəkkəbliyinə əsasən miqyaslandırın", + "effortNone": "Yoxdur (0 token)", + "effortLow": "Aşağı (1K token)", + "effortMedium": "Orta (10K token)", + "effortHigh": "Yüksək (128K token)", + "tokenBudget": "Token Büdcəsi", + "tokens": "token", + "baseEffortLevel": "Baza Səy Səviyyəsi", "adaptiveHint": "Adaptive mode scales from this base level based on message count, tool usage, and prompt length.", - "requireLogin": "Require login", - "requireLoginDesc": "When ON, dashboard requires password. When OFF, access without login.", - "currentPassword": "Current Password", - "enterCurrentPassword": "Enter current password", - "newPassword": "New Password", - "enterNewPassword": "Enter new password", - "confirmPassword": "Confirm New Password", - "confirmPasswordPlaceholder": "Confirm new password", - "passwordsNoMatch": "Passwords do not match", - "passwordUpdated": "Password updated successfully", - "failedUpdatePassword": "Failed to update password", - "errorOccurred": "An error occurred", - "updatePassword": "Update Password", - "setPassword": "Set Password", - "apiEndpointProtection": "API Endpoint Protection", - "requireAuthModels": "Require API key for /models", - "requireAuthModelsDesc": "When ON, the /v1/models endpoint returns 404 for unauthenticated requests. Prevents model discovery by unauthorized users.", - "authModelHeading": "Active authorization model", - "authModelClient": "Client API endpoints (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) require a Bearer API key.", - "authModelManagement": "Management endpoints (/dashboard, /api/*) require a dashboard session or management credential.", - "authModelPublic": "Only login, health, and bootstrap routes are public.", - "bruteForceProtection": "Login brute-force protection", - "bruteForceProtectionDesc": "Throttle and lock /api/auth/login after repeated failures from the same IP.", - "corsAllowedOrigins": "CORS allowed origins", - "corsAllowedOriginsDesc": "Comma-separated list of browser origins permitted to call this server. Empty list = no browser CORS access (server-to-server still works). Use CORS_ALLOW_ALL=true env var only for development.", - "blockedProviders": "Blocked Providers", - "blockedProvidersDesc": "Hide specific providers from the /v1/models response. Blocked providers will not appear in model listings.", - "providersBlocked": "{count} provider(s) blocked from /models", - "blockProviderTitle": "Block {provider}", - "unblockProviderTitle": "Unblock {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "requireLogin": "Giriş tələb et", + "requireLoginDesc": "AKTİV olduqda idarə paneli parol tələb edir. DEAKTİV olduqda giriş etmədən istifadə mümkündür.", + "currentPassword": "Cari Parol", + "enterCurrentPassword": "Cari parolu daxil edin", + "newPassword": "Yeni Parol", + "enterNewPassword": "Yeni parolu daxil edin", + "confirmPassword": "Yeni Parolu Təsdiqləyin", + "confirmPasswordPlaceholder": "Yeni parolu təsdiqləyin", + "passwordsNoMatch": "Parollar uyğun gəlmir", + "passwordUpdated": "Parol uğurla yeniləndi", + "failedUpdatePassword": "Parolu yeniləmək mümkün olmadı", + "errorOccurred": "Xəta baş verdi", + "updatePassword": "Parolu yenilə", + "setPassword": "Parol təyin et", + "apiEndpointProtection": "API son nöqtələrinin qorunması", + "requireAuthModels": "/models üçün API açarı tələb et", + "requireAuthModelsDesc": "AKTİV olduqda, /v1/models son nöqtəsi autentifikasiyadan keçməmiş sorğular üçün 404 qaytarır. İcazəsiz istifadəçilərin modelləri aşkar etməsinin qarşısını alır.", + "authModelHeading": "Aktiv avtorizasiya modeli", + "authModelClient": "Müştəri API son nöqtələri (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) Bearer API açarı tələb edir.", + "authModelManagement": "İdarəetmə son nöqtələri (/dashboard, /api/*) idarə paneli sessiyası və ya idarəetmə giriş məlumatı tələb edir.", + "authModelPublic": "Yalnız giriş, sağlamlıq yoxlaması və ilkin quraşdırma marşrutları ictimaidir.", + "bruteForceProtection": "Giriş zamanı kobud güc hücumlarından qorunma", + "bruteForceProtectionDesc": "Eyni IP-dən təkrarlanan uğursuz cəhdlərdən sonra /api/auth/login sorğularını məhdudlaşdır və kilidlə.", + "corsAllowedOrigins": "CORS üçün icazə verilən mənbələr", + "corsAllowedOriginsDesc": "Bu serverə müraciət etməsinə icazə verilən brauzer mənbələrinin vergüllə ayrılmış siyahısı. Boş siyahı = brauzerdən CORS girişi yoxdur (serverlərarası əlaqə işləməyə davam edir). CORS_ALLOW_ALL=true mühit dəyişənini yalnız proqram təminatının hazırlanması zamanı istifadə edin.", + "blockedProviders": "Bloklanmış provayderlər", + "blockedProvidersDesc": "Müəyyən provayderləri /v1/models cavabında gizlədin. Bloklanmış provayderlər model siyahılarında görünməyəcək.", + "providersBlocked": "{count} provayder /models siyahısından bloklanıb", + "blockProviderTitle": "{provider} provayderini blokla", + "unblockProviderTitle": "{provider} provayderinin blokunu ləğv et", + "cliFingerprint": "CLI rəqəmsal izinin uyğunlaşdırılması", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} provayder üçün CLI rəqəmsal izi aktivdir", + "enableFingerprintTitle": "{provider} üçün rəqəmsal izi aktivləşdir", + "disableFingerprintTitle": "{provider} üçün rəqəmsal izi deaktiv et", "systemTransforms": "Sistem blokunun Transform Boru Kəməri", "systemTransformsDesc": "Hər provayder yönləndirilməzdən əvvəl sorğu orqanına tətbiq edilən transformasiya boru kəmərini sifariş etdi. İstənilən provayder ID-ni dəstəkləyir.", "systemTransformsAddProvider": "Provayder əlavə edin", @@ -7049,33 +7052,33 @@ "systemTransformsOpMoveUp": "Yuxarı hərəkət edin", "systemTransformsOpMoveDown": "Aşağı hərəkət edin", "systemTransformsOpDelete": "Silin op", - "routingStrategy": "Routing Strategy", - "routingAdvancedGuideTitle": "Advanced routing guidance", + "routingStrategy": "Marşrutlaşdırma strategiyası", + "routingAdvancedGuideTitle": "Qabaqcıl marşrutlaşdırma təlimatı", "routingAdvancedGuideHint1": "Use Fill First for predictable priority, Round Robin for fairness, and P2C for latency resilience.", "routingAdvancedGuideHint2": "If providers vary in quality/cost, start with Cost Opt for background work and Least Used for balanced wear.", - "fillFirst": "Fill First", - "fillFirstDesc": "Use accounts in priority order", + "fillFirst": "Əvvəlcə doldur", + "fillFirstDesc": "Hesablardan prioritet sırasına görə istifadə et", "roundRobin": "Round Robin", - "roundRobinDesc": "Cycle through all accounts", + "roundRobinDesc": "Bütün hesabları növbə ilə istifadə et", "p2c": "P2C", - "p2cDesc": "Pick 2 random, use the healthier one", - "random": "Random", - "randomDesc": "Random account each request", - "leastUsed": "Least Used", - "leastUsedDesc": "Pick least recently used account", - "costOpt": "Cost Opt", - "costOptDesc": "Prefer cheapest available account", - "resetAware": "Reset-Aware RR", - "resetAwareDesc": "Prefer accounts with healthy remaining quota and nearer resets", - "quotaWeighted": "Quota-Weighted", + "p2cDesc": "Təsadüfi 2 hesab seç və daha sağlam olanı istifadə et", + "random": "Təsadüfi", + "randomDesc": "Hər sorğu üçün təsadüfi hesab", + "leastUsed": "Ən az istifadə edilən", + "leastUsedDesc": "Ən uzun müddətdir istifadə edilməyən hesabı seç", + "costOpt": "Xərc optimallaşdırması", + "costOptDesc": "Ən ucuz əlçatan hesaba üstünlük ver", + "resetAware": "Sıfırlanmanı nəzərə alan dövri seçim", + "resetAwareDesc": "Sağlam qalıq kvotası olan və sıfırlanma vaxtı daha yaxın hesablara üstünlük ver", + "quotaWeighted": "Kvotaya görə çəkili", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "Ciddi təsadüfi seçim", + "strictRandomDesc": "Kolodan təsadüfi seçim — yenidən qarışdırmazdan əvvəl hər hesabdan bir dəfə istifadə edir", + "stickyLimit": "Sabit limit", "stickyLimitDesc": "Calls per account before switching", "routingStrategyTitle": "Marşrutlaşdırma strategiyası", "routingStrategySubtitle": "9router ilə uyğunlaşdır: hesabların round-robin paylanması, stiki limitlər və kombo rotasiyası", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Növbəli paylaşdırma", "accountRoundRobinDesc": "Yükü bölüşdürmək üçün hesablar arasında dövr et", "comboRoundRobin": "Kombo Round Robin", "comboRoundRobinDesc": "Həmişə birincidən başlamaq əvəzinə kombo hədəfləri arasında dövr et", @@ -7089,225 +7092,225 @@ "providerAccountRoutingDesc": "Bu provayder üçün qlobal hesab strategiyasını yenidən təyin et (9router uyğunluğu).", "providerRoutingStrategy": "Hesab strategiyası", "providerRoutingInheritGlobal": "Qlobal standartı miras al", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", - "modelAliases": "Model Aliases", - "modelAliasesTitle": "Model Aliases", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", - "addCustomAlias": "Add Custom Alias", - "deprecatedModelId": "Deprecated model ID", - "newModelId": "New model ID", - "customAliases": "Custom Aliases", - "builtInAliases": "Built-in Aliases", - "backgroundDegradationTitle": "Background Task Degradation", - "backgroundDegradationDesc": "Auto-detect background tasks (titles, summaries) and route to cheaper models", - "enableDegradation": "Enable Background Degradation", - "enableDegradationHint": "When enabled, background tasks like title generation and summarization are routed to cheaper models automatically", - "tasksDetected": "Tasks detected", - "degradationMap": "Model Degradation Map", + "quotaPreflightTitle": "Kvotanın ilkin yoxlama həddi", + "quotaPreflightSubtitle": "Sorğunu yuxarı xidmətə göndərməzdən əvvəl kvotası bitmiş hesabları ötürün", + "quotaPreflightEnable": "Kvotanın ilkin yoxlanmasını aktivləşdirin", + "quotaPreflightEnableDesc": "Hər sorğudan əvvəl hesabın qalan kvotasını yoxlayın (5 saatlıq / həftəlik / aylıq dövrlər). Həddə çatan və ya ondan aşağı olan hesablar yuxarı xidmətə sorğu göndərilmədən ötürülür. Provider Quota səhifəsində hər dövr üçün təyin olunan hədlər həmişə buradakı standart dəyərdən üstün tutulur.", + "quotaPreflightCutoff": "Qlobal hədd (minimum qalıq %)", + "quotaPreflightCutoffDesc": "Ayrıca həddi olmayan bütün dövrlər üçün hesabın qalan kvotası bu faizə və ya daha aşağı səviyyəyə düşdükdə ondan istifadəni dayandırın. Provider Quota səhifəsindəki qalıq faiz göstəricilərinə uyğundur.", + "quotaPreflightWindowsHint": "Öz dövr və ya provayder üzrə həddi olan dövrlərə (Provider Quota səhifəsindəki Cutoff pəncərəsində təyin edilir) bu standart dəyər təsir etmir.", + "quotaPreflightLoadFailed": "Kvotanın ilkin yoxlama parametrlərini yükləmək mümkün olmadı.", + "modelAliases": "Model ləqəbləri", + "modelAliasesTitle": "Model ləqəbləri", + "modelAliasesDesc": "Dəqiq uyğunluqlar və ya şablon nümunələri ilə model adlarını yenidən uyğunlaşdırın.", + "addCustomAlias": "Fərdi ləqəb əlavə edin", + "deprecatedModelId": "Köhnəlmiş model ID-si", + "newModelId": "Yeni model ID-si", + "customAliases": "Fərdi ləqəblər", + "builtInAliases": "Daxili ləqəblər", + "backgroundDegradationTitle": "Fon tapşırıqlarının daha sadə modelə keçirilməsi", + "backgroundDegradationDesc": "Fon tapşırıqlarını (başlıqlar, xülasələr) avtomatik aşkarlayın və daha ucuz modellərə yönləndirin", + "enableDegradation": "Fon tapşırıqlarının daha sadə modelə keçirilməsini aktivləşdirin", + "enableDegradationHint": "Aktiv olduqda, başlıq yaratma və xülasələşdirmə kimi fon tapşırıqları avtomatik olaraq daha ucuz modellərə yönləndirilir", + "tasksDetected": "Aşkarlanan tapşırıqlar", + "degradationMap": "Model sadələşdirmə xəritəsi", "premiumModel": "Premium model", - "cheapModel": "Cheap model", - "detectionPatterns": "Detection Patterns", - "newPattern": "e.g. \"generate a title\"", + "cheapModel": "Ucuz model", + "detectionPatterns": "Aşkarlama nümunələri", + "newPattern": "məs., \"başlıq yarat\"", "aliasPatternPlaceholder": "claude-sonnet-*", "aliasTargetPlaceholder": "claude-sonnet-4-20250514", - "pattern": "Pattern", - "targetModel": "Target Model", - "add": "+ Add", - "session": "Session", - "sessionDetailsAria": "Session details", + "pattern": "Nümunə", + "targetModel": "Hədəf model", + "add": "+ Əlavə et", + "session": "Sessiya", + "sessionDetailsAria": "Sessiya təfərrüatları", "status": "Status", - "authenticated": "Authenticated", - "guest": "Guest", - "loginTime": "Login Time", - "sessionAge": "Session Age", - "browser": "Browser", - "clearLocalData": "Clear Local Data", - "logout": "Logout", - "clearLocalDataConfirm": "Clear all local data? This will reset your preferences.", - "unknown": "Unknown", - "systemActor": "system", - "ipAccessControl": "IP Access Control", - "ipAccessControlDesc": "Block or allow specific IP addresses", - "ipModeDisabled": "Disabled", - "ipModeBlacklist": "Blacklist", - "ipModeWhitelist": "Whitelist", - "ipModeWhitelistPriority": "WL Priority", - "addIpAddress": "Add IP Address", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", - "block": "+ Block", - "allow": "+ Allow", - "blocked": "Blocked ({count})", - "allowed": "Allowed ({count})", - "temporaryBans": "Temporary Bans ({count})", - "minLeft": "{min}m left", - "auditLog": "Audit Log", - "searchAuditLogs": "Search audit logs...", - "failedLoadAuditLog": "Failed to load audit log", - "noAuditEvents": "No audit events found", - "action": "Action", - "actor": "Actor", - "details": "Details", - "time": "Time", - "fallbackChainsTitle": "Fallback Chains", - "fallbackChainsDesc": "Define provider fallback order per model", - "addChain": "+ Add Chain", - "modelName": "Model Name", + "authenticated": "Doğrulanmış", + "guest": "Qonaq", + "loginTime": "Giriş vaxtı", + "sessionAge": "Sessiyanın müddəti", + "browser": "Brauzer", + "clearLocalData": "Lokal məlumatları təmizlə", + "logout": "Çıxış", + "clearLocalDataConfirm": "Bütün lokal məlumatlar silinsin? Bu, seçimlərinizi sıfırlayacaq.", + "unknown": "Naməlum", + "systemActor": "sistem", + "ipAccessControl": "IP Girişinə Nəzarət", + "ipAccessControlDesc": "Müəyyən IP ünvanlarını bloklayın və ya icazə verin", + "ipModeDisabled": "Deaktivdir", + "ipModeBlacklist": "Qara siyahı", + "ipModeWhitelist": "Ağ siyahı", + "ipModeWhitelistPriority": "Ağ siyahı prioriteti", + "addIpAddress": "IP ünvanı əlavə et", + "ipAddressPlaceholder": "192.168.1.0/24 və ya 10.0.*.*", + "block": "+ Blokla", + "allow": "+ İcazə ver", + "blocked": "Bloklanmış ({count})", + "allowed": "İcazə verilmiş ({count})", + "temporaryBans": "Müvəqqəti qadağalar ({count})", + "minLeft": "{min} dəq qalıb", + "auditLog": "Audit jurnalı", + "searchAuditLogs": "Audit jurnallarında axtarın...", + "failedLoadAuditLog": "Audit jurnalını yükləmək alınmadı", + "noAuditEvents": "Heç bir audit hadisəsi tapılmadı", + "action": "Əməliyyat", + "actor": "İcraçı", + "details": "Təfərrüatlar", + "time": "Vaxt", + "fallbackChainsTitle": "Ehtiyat zəncirləri", + "fallbackChainsDesc": "Hər model üçün provayderlərin ehtiyat sırasını müəyyən edin", + "addChain": "+ Zəncir əlavə et", + "modelName": "Model adı", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "Providers (comma-separated, in priority order)", + "providersCommaSeparated": "Provayderlər (vergüllə ayrılmış, prioritet sırası ilə)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", - "createChain": "Create Chain", - "noFallbackChains": "No Fallback Chains", - "noFallbackChainsDesc": "Create a chain to define provider fallback order for a model.", - "loadingFallbackChains": "Loading fallback chains...", - "deleteChainConfirm": "Delete fallback chain for \"{model}\"?", - "chainCreated": "Chain created for {model}", - "chainDeleted": "Chain deleted for {model}", - "failedCreateChain": "Failed to create chain", - "failedDeleteChain": "Failed to delete chain", - "deleteChain": "Delete chain", - "fillModelAndProviders": "Please fill model name and providers", - "addAtLeastOneProvider": "Add at least one provider", - "comboDefaultsTitle": "Combo Defaults", - "comboDefaultsGuideTitle": "How to tune combo defaults", - "comboDefaultsGuideHint1": "Keep retries low in low-latency flows; increase timeout only for long generation tasks.", - "comboDefaultsGuideHint2": "Use provider overrides when one provider needs different timeout/retry behavior than global defaults.", - "globalComboConfig": "Global combo configuration", + "createChain": "Zəncir yarat", + "noFallbackChains": "Ehtiyat zənciri yoxdur", + "noFallbackChainsDesc": "Model üçün provayderlərin ehtiyat sırasını müəyyən etmək məqsədilə zəncir yaradın.", + "loadingFallbackChains": "Ehtiyat zəncirləri yüklənir...", + "deleteChainConfirm": "\"{model}\" üçün ehtiyat zənciri silinsin?", + "chainCreated": "{model} üçün zəncir yaradıldı", + "chainDeleted": "{model} üçün zəncir silindi", + "failedCreateChain": "Zəncir yaratmaq alınmadı", + "failedDeleteChain": "Zənciri silmək alınmadı", + "deleteChain": "Zənciri sil", + "fillModelAndProviders": "Zəhmət olmasa, model adını və provayderləri daxil edin", + "addAtLeastOneProvider": "Ən azı bir provayder əlavə edin", + "comboDefaultsTitle": "Kombinasiya üçün standart parametrlər", + "comboDefaultsGuideTitle": "Kombinasiya üçün standart parametrləri necə tənzimləməli", + "comboDefaultsGuideHint1": "Aşağı gecikməli axınlarda təkrar cəhdlərin sayını az saxlayın; taymautu yalnız uzun generasiya tapşırıqları üçün artırın.", + "comboDefaultsGuideHint2": "Provayderlərdən biri üçün qlobal standartlardan fərqli taymaut və ya təkrar cəhd davranışı tələb olunduqda provayder üzrə əvəzləmələrdən istifadə edin.", + "globalComboConfig": "Qlobal kombinasiya konfiqurasiyası", "moveUp": "Yuxarı daşı", "moveDown": "Aşağı daşı", "allProvidersAdded": "Bütün provayderlər əlavə edildi", "noProvidersFound": "Heç bir provayder tapılmadı", - "defaultStrategy": "Default Strategy", + "defaultStrategy": "Standart strategiya", "defaultStrategyDesc": "Applied to new combos without explicit strategy", - "comboStrategyAria": "Combo strategy", - "priority": "Priority", - "weighted": "Weighted", - "contextRelay": "Context Relay", - "contextRelayDesc": "Priority-style routing with automatic context handoffs when account rotation happens", - "maxRetriesLabel": "Max Retries", - "retryDelayLabel": "Retry Delay (ms)", - "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", - "healthCheckDesc": "Pre-check provider availability", - "trackMetrics": "Track Metrics", - "trackMetricsDesc": "Record per-combo request metrics", - "providerOverrides": "Provider Overrides", - "providerOverridesDesc": "Override timeout and retries per provider. Provider settings override global defaults.", - "providerMaxRetriesAria": "{provider} max retries", - "providerTimeoutAria": "{provider} timeout ms", - "removeProviderOverrideAria": "Remove {provider} override", + "comboStrategyAria": "Kombinasiya strategiyası", + "priority": "Prioritet", + "weighted": "Çəkili", + "contextRelay": "Kontekst ötürülməsi", + "contextRelayDesc": "Hesab rotasiyası baş verdikdə kontekstin avtomatik ötürülməsi ilə prioritet əsaslı yönləndirmə", + "maxRetriesLabel": "Maksimum təkrar cəhd sayı", + "retryDelayLabel": "Təkrar cəhd gecikməsi (ms)", + "timeoutLabel": "Taymaut (ms)", + "healthCheck": "Sağlamlıq yoxlaması", + "healthCheckDesc": "Provayderin əlçatanlığını əvvəlcədən yoxlayın", + "trackMetrics": "Metrikaları izləyin", + "trackMetricsDesc": "Hər kombinasiya üzrə sorğu metrikalarını qeydə alın", + "providerOverrides": "Provayder üzrə əvəzləmələr", + "providerOverridesDesc": "Hər provayder üçün taymautu və təkrar cəhdləri əvəzləyin. Provayder parametrləri qlobal standartları əvəzləyir.", + "providerMaxRetriesAria": "{provider} üçün maksimum təkrar cəhd sayı", + "providerTimeoutAria": "{provider} üçün taymaut, ms", + "removeProviderOverrideAria": "{provider} əvəzləməsini sil", "selectProviderPlaceholder": "Provayder seçin...", "searchProviderPlaceholder": "Provayderləri axtarın...", "searchProviderAria": "Provayderləri axtarın", - "newProviderNamePlaceholder": "e.g. google, openai...", - "newProviderNameAria": "New provider name", - "retries": "retries", + "newProviderNamePlaceholder": "məs., google, openai...", + "newProviderNameAria": "Yeni provayderin adı", + "retries": "təkrar cəhdlər", "ms": "ms", - "saveComboDefaults": "Save Combo Defaults", - "maxNestingDepth": "Max Nesting Depth", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", + "saveComboDefaults": "Kombinasiya standartlarını yadda saxla", + "maxNestingDepth": "Maksimum iç-içə yerləşmə dərinliyi", + "concurrencyPerModel": "Paralellik / Model", + "queueTimeout": "Növbə taymautu (ms)", "queueDepth": "Növbə dərinliyi", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", - "providerProfiles": "Provider Profiles", - "providerProfilesDesc": "Separate resilience settings for OAuth (session-based) and API Key (metered) providers. OAuth providers have stricter thresholds due to lower rate limits.", - "oauthProviders": "OAuth Providers", - "apiKeyProviders": "API Key Providers", - "transientCooldown": "Transient Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", - "cbThreshold": "CB Threshold", - "cbResetTime": "CB Reset Time", - "rateLimiting": "Rate Limiting", - "rateLimitingDesc": "API Key providers are automatically rate-limited with safe defaults. Limits are learned from response headers and adapt over time.", - "defaultSafetyNet": "Default Safety Net", + "contextRelayHandoffThreshold": "Ötürmə həddi", + "contextRelayMaxMessages": "Xülasə üçün maksimum mesaj sayı", + "contextRelaySummaryModel": "Xülasə modeli", + "contextRelayProviderNote": "Kontekst ötürülməsi hazırda Codex hesabları üçün ötürmələr yaradır və bu dəyərləri yeni və ya konfiqurasiya edilməmiş kombinasiyalar üçün qlobal standartlar kimi istifadə edir.", + "providerProfiles": "Provayder profilləri", + "providerProfilesDesc": "OAuth (sessiya əsaslı) və API Key (ölçülən) provayderləri üçün ayrıca dayanıqlılıq parametrləri. OAuth provayderlərində daha aşağı sürət limitlərinə görə daha sərt hədlər var.", + "oauthProviders": "OAuth provayderləri", + "apiKeyProviders": "API Açarı Provayderləri", + "transientCooldown": "Müvəqqəti Soyuma Müddəti", + "rateLimitCooldown": "Sorğu Tezliyi Limiti üzrə Soyuma Müddəti", + "maxBackoffLevel": "Maksimum Geriçəkilmə Səviyyəsi", + "cbThreshold": "CB Həddi", + "cbResetTime": "CB Sıfırlama Müddəti", + "rateLimiting": "Sorğu Tezliyinin Məhdudlaşdırılması", + "rateLimitingDesc": "API açarı provayderləri təhlükəsiz standart parametrlərlə avtomatik olaraq sorğu tezliyi limitinə tabe edilir. Limitlər cavab başlıqlarından öyrənilir və zamanla uyğunlaşdırılır.", + "defaultSafetyNet": "Standart Təhlükəsizlik Mexanizmi", "rpm": "RPM", - "minGap": "Min Gap", - "maxConcurrent": "Max Concurrent", - "activeLimiters": "Active Limiters", - "noActiveLimiters": "No active rate limiters yet.", - "reservoir": "Reservoir", - "running": "Running", - "queued": "Queued", - "circuitBreakers": "Circuit Breakers", - "breakerStateClosed": "Closed", - "breakerStateOpen": "Open", - "breakerStateHalfOpen": "Half-Open", - "tripped": "{count} tripped", - "healthy": "{count} healthy", - "resetAll": "Reset All", - "noCircuitBreakers": "No circuit breakers active yet. They are created automatically when requests flow through the combo pipeline.", - "failures": "{count} failure(s)", - "policiesLocked": "Policies & Locked Identifiers", - "allOperational": "All systems operational — no lockouts or tripped breakers", - "loadingPolicies": "Loading policies...", - "lockedIdentifiers": "Locked Identifiers", - "unlockedIdentifier": "Unlocked: {identifier}", - "sinceDate": "since {date}", - "forceUnlock": "Force Unlock", - "unlocking": "Unlocking...", - "failedUnlock": "Failed to unlock", - "failedLoadWithStatus": "Failed to load: {status}", - "failedLoadResilience": "Failed to load resilience status", - "saveFailed": "Save failed", - "resetFailed": "Reset failed", - "loadingResilience": "Loading resilience status...", - "retry": "Retry", + "minGap": "Minimum Fasilə", + "maxConcurrent": "Maksimum Paralel Sorğu", + "activeLimiters": "Aktiv Məhdudlaşdırıcılar", + "noActiveLimiters": "Hələ aktiv sorğu tezliyi məhdudlaşdırıcısı yoxdur.", + "reservoir": "Ehtiyat", + "running": "İcra Olunur", + "queued": "Növbədədir", + "circuitBreakers": "Dövrə Qırıcıları", + "breakerStateClosed": "Qapalı", + "breakerStateOpen": "Açıq", + "breakerStateHalfOpen": "Yarıaçıq", + "tripped": "{count} işə düşüb", + "healthy": "{count} sağlamdır", + "resetAll": "Hamısını Sıfırla", + "noCircuitBreakers": "Hələ aktiv dövrə qırıcısı yoxdur. Sorğular kombinasiya konveyerindən keçdikdə onlar avtomatik yaradılır.", + "failures": "{count} uğursuzluq", + "policiesLocked": "Siyasətlər və Kilidlənmiş İdentifikatorlar", + "allOperational": "Bütün sistemlər işləkdir — heç bir kilidlənmə və ya işə düşmüş dövrə qırıcısı yoxdur", + "loadingPolicies": "Siyasətlər yüklənir...", + "lockedIdentifiers": "Kilidlənmiş İdentifikatorlar", + "unlockedIdentifier": "Kilid açıldı: {identifier}", + "sinceDate": "{date} tarixindən bəri", + "forceUnlock": "Məcburi Kilidi Aç", + "unlocking": "Kilid açılır...", + "failedUnlock": "Kilidi açmaq mümkün olmadı", + "failedLoadWithStatus": "Yükləmək mümkün olmadı: {status}", + "failedLoadResilience": "Dayanıqlılıq statusunu yükləmək mümkün olmadı", + "saveFailed": "Yadda saxlamaq mümkün olmadı", + "resetFailed": "Sıfırlamaq mümkün olmadı", + "loadingResilience": "Dayanıqlılıq statusu yüklənir...", + "retry": "Yenidən Cəhd Et", "systemStorage": "System & Storage", - "allDataLocal": "All data stored locally on your machine", - "databasePath": "Database Path", + "allDataLocal": "Bütün məlumatlar lokal olaraq kompüterinizdə saxlanılır", + "databasePath": "Verilənlər bazasının yolu", "export": "İxrac et", - "exportDatabase": "Export Database", - "exportAll": "Export All (.tar.gz)", - "importDatabase": "Import Database", - "confirmDbImport": "Confirm Database Import", - "confirmDbImportDesc": "This will replace all current data with the content from {file}. A backup will be created automatically before the import.", - "yesImport": "Yes, Import", - "lastBackup": "Last Backup", - "noBackupYet": "No backup yet", - "backupNow": "Backup Now", - "backupRestore": "Backup & Restore", - "viewBackups": "View Backups", - "hide": "Hide", - "backupRetentionDesc": "Database snapshots are created automatically before restore and every 15 minutes when data changes. Retention: 24 hourly + 30 daily backups with smart rotation.", - "loadingBackups": "Loading backups...", - "noBackupsYet": "No backups available yet. Backups will be created automatically when data changes.", - "backupsAvailable": "{count} backup(s) available", - "refresh": "Refresh", - "confirm": "Confirm?", - "yes": "Yes", - "no": "No", - "restore": "Restore", - "invalidFileType": "Invalid file type. Only .sqlite files are accepted.", - "exportFailed": "Export failed", - "exportFailedWithError": "Export failed: {error}", - "fullExportFailedWithError": "Full export failed: {error}", - "backupCreated": "Backup created: {file}", - "restoreSuccess": "Restored! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "importSuccess": "Database imported! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "minutesAgo": "{count}m ago", - "hoursAgo": "{count}h ago", - "daysAgo": "{count}d ago", - "backupReasonManual": "manual", - "backupReasonPreRestore": "pre-restore", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", - "noChangesSinceBackup": "No changes since last backup", - "backupFailed": "Backup failed", - "restoreFailed": "Restore failed", - "importFailed": "Import failed", - "errorDuringRestore": "An error occurred during restore", - "errorDuringImport": "An error occurred during import", - "modelPricing": "Model Pricing", - "modelPricingDesc": "Configure cost rates per model • All rates in $/1M tokens", + "exportDatabase": "Verilənlər bazasını ixrac et", + "exportAll": "Hamısını ixrac et (.tar.gz)", + "importDatabase": "Verilənlər bazasını idxal et", + "confirmDbImport": "Verilənlər bazasının idxalını təsdiqləyin", + "confirmDbImportDesc": "Bu əməliyyat bütün cari məlumatları {file} faylının məzmunu ilə əvəz edəcək. İdxaldan əvvəl avtomatik olaraq ehtiyat nüsxə yaradılacaq.", + "yesImport": "Bəli, idxal et", + "lastBackup": "Son ehtiyat nüsxə", + "noBackupYet": "Hələ ehtiyat nüsxə yoxdur", + "backupNow": "İndi ehtiyat nüsxə yarat", + "backupRestore": "Ehtiyat nüsxələmə və bərpa", + "viewBackups": "Ehtiyat nüsxələrə bax", + "hide": "Gizlət", + "backupRetentionDesc": "Verilənlər dəyişdikdə hər 15 dəqiqədən bir və bərpadan əvvəl verilənlər bazasının anlıq surətləri avtomatik yaradılır. Saxlama müddəti: ağıllı rotasiya ilə 24 saatlıq + 30 gündəlik ehtiyat nüsxə.", + "loadingBackups": "Ehtiyat nüsxələr yüklənir...", + "noBackupsYet": "Hələ əlçatan ehtiyat nüsxə yoxdur. Verilənlər dəyişdikdə ehtiyat nüsxələr avtomatik yaradılacaq.", + "backupsAvailable": "{count} ehtiyat nüsxə mövcuddur", + "refresh": "Yenilə", + "confirm": "Təsdiqləyirsiniz?", + "yes": "Bəli", + "no": "Xeyr", + "restore": "Bərpa et", + "invalidFileType": "Fayl növü yanlışdır. Yalnız .sqlite faylları qəbul edilir.", + "exportFailed": "İxrac uğursuz oldu", + "exportFailedWithError": "İxrac uğursuz oldu: {error}", + "fullExportFailedWithError": "Tam ixrac uğursuz oldu: {error}", + "backupCreated": "Ehtiyat nüsxə yaradıldı: {file}", + "restoreSuccess": "Bərpa edildi! {connections} bağlantı, {nodes} qovşaq, {combos} kombinasiya, {apiKeys} API açarı.", + "importSuccess": "Verilənlər bazası idxal edildi! {connections} bağlantı, {nodes} qovşaq, {combos} kombinasiya, {apiKeys} API açarı.", + "minutesAgo": "{count} dəq əvvəl", + "hoursAgo": "{count} saat əvvəl", + "daysAgo": "{count} gün əvvəl", + "backupReasonManual": "əl ilə", + "backupReasonPreRestore": "bərpadan əvvəl", + "connectionsCount": "{count, plural, one {# bağlantı} other {# bağlantı}}", + "noChangesSinceBackup": "Son ehtiyat nüsxədən bəri dəyişiklik yoxdur", + "backupFailed": "Ehtiyat nüsxələmə uğursuz oldu", + "restoreFailed": "Bərpa uğursuz oldu", + "importFailed": "İdxal uğursuz oldu", + "errorDuringRestore": "Bərpa zamanı xəta baş verdi", + "errorDuringImport": "İdxal zamanı xəta baş verdi", + "modelPricing": "Model qiymətləri", + "modelPricingDesc": "Hər model üçün tarifləri konfiqurasiya edin • Bütün tariflər $/1M tokenlə göstərilir", "pricingCoverage": "Əhatə dairəsi", "pricingAuth": "Autentifikasiya", "pricingSort": "Sırala", @@ -7329,7 +7332,7 @@ "configured": "konfiqurasiya edilib", "none": "Heç biri", "modelOverrideValuePlaceholder": "Ədədi dəyər", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "İngilis dilində vergüllə ayrılmış, məsələn, low, medium, high", "addKeyValue": "Açar-dəyər əlavə et", "noModelOverrides": "Bu model üçün heç bir yenidən təyinetmə konfiqurasiya edilməyib.", "modelOverrideLoadFailed": "Model yenidən təyinetmələrini yükləmək mümkün olmadı", @@ -7337,66 +7340,66 @@ "modelOverrideRemoved": "Model yenidən təyinetməsi silindi", "modelOverrideSaveFailed": "Model yenidən təyinetməsini saxlamaq mümkün olmadı", "modelOverrideRemoveFailed": "Model yenidən təyinetməsini silmək mümkün olmadı", - "registry": "Registry", - "priced": "Priced", - "searchProvidersModels": "Search providers or models...", - "showAll": "Show All", - "noProvidersMatch": "No providers match your search.", - "howPricingWorks": "How Pricing Works", - "cacheWrite": "Cache Write", - "unsaved": "unsaved", + "registry": "Reyestr", + "priced": "Qiymətləndirilmiş", + "searchProvidersModels": "Provayderlər və ya modellər üzrə axtarış...", + "showAll": "Hamısını göstər", + "noProvidersMatch": "Axtarışınıza uyğun provayder yoxdur.", + "howPricingWorks": "Qiymətləndirmə necə işləyir", + "cacheWrite": "Keşə yazma", + "unsaved": "yadda saxlanılmayıb", "resetDefaults": "Sıfırlama standartları", - "saveProvider": "Save Provider", + "saveProvider": "Provayderi yadda saxla", "model": "Model", - "models": "models", - "moreProviders": "{count} more providers", - "withPricing": "with pricing configured", - "policiesCircuitBreakers": "Policies & Circuit Breakers", - "activeIssuesDetected": "Active issues detected", - "off": "Off", - "resetPricingConfirm": "Reset all pricing for {provider} to defaults?", - "pricingDescInput": "Input: tokens sent to the model", - "pricingDescOutput": "Output: tokens generated", - "pricingDescCached": "Cached: reused input (~50% of input rate)", - "pricingDescReasoning": "Reasoning: thinking tokens (falls back to Output)", - "pricingDescCacheWrite": "Cache Write: creating cache entries (falls back to Input)", - "pricingDescFormula": "Cost = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.", - "pricingSettingsTitle": "Pricing Settings", - "totalModels": "Total Models", - "active": "Active", - "costCalculation": "Cost Calculation", - "costCalculationDesc": "Costs are calculated based on token usage and pricing rates configured for each model.", - "pricingFormat": "Pricing Format", - "pricingFormatDesc": "All rates are in $/1M tokens (dollars per million tokens).", - "tokenTypes": "Token Types", - "inputTokenDesc": "Standard prompt tokens", - "outputTokenDesc": "Completion/response tokens", - "cachedTokenDesc": "Cached input tokens (typically 50% of input rate)", - "reasoningTokenDesc": "Special reasoning/thinking tokens (fallback to output rate)", - "cacheCreationTokenDesc": "Tokens used to create cache entries (fallback to input rate)", - "customPricingNote": "You can override default pricing for specific models. Custom overrides take priority over auto-detected pricing.", - "editPricing": "Edit Pricing", - "viewFullDetails": "View Full Details", + "models": "model", + "moreProviders": "daha {count} provayder", + "withPricing": "üçün qiymətlər konfiqurasiya edilib", + "policiesCircuitBreakers": "Siyasətlər və dövrə kəsiciləri", + "activeIssuesDetected": "Aktiv problemlər aşkarlandı", + "off": "Söndürülüb", + "resetPricingConfirm": "{provider} üçün bütün qiymətləri standart dəyərlərə sıfırlamaq istəyirsiniz?", + "pricingDescInput": "Giriş: modelə göndərilən tokenlər", + "pricingDescOutput": "Çıxış: yaradılan tokenlər", + "pricingDescCached": "Keşlənmiş: təkrar istifadə olunan giriş (~giriş tarifinin 50%-i)", + "pricingDescReasoning": "Məntiqi emal: düşünmə tokenləri (Çıxış tarifindən istifadə edir)", + "pricingDescCacheWrite": "Keşə yazma: keş qeydlərinin yaradılması (Giriş tarifindən istifadə edir)", + "pricingDescFormula": "Xərc = (giriş × giriş_tarifi) + (çıxış × çıxış_tarifi) + (keşlənmiş × keş_tarifi), hər milyon token üçün.", + "pricingSettingsTitle": "Qiymət ayarları", + "totalModels": "Ümumi model sayı", + "active": "Aktiv", + "costCalculation": "Xərcin hesablanması", + "costCalculationDesc": "Xərclər token istifadəsinə və hər model üçün konfiqurasiya edilmiş qiymət tariflərinə əsasən hesablanır.", + "pricingFormat": "Qiymət formatı", + "pricingFormatDesc": "Bütün tariflər $/1M tokenlədir (hər milyon token üçün dollar).", + "tokenTypes": "Token növləri", + "inputTokenDesc": "Standart sorğu tokenləri", + "outputTokenDesc": "Tamamlama/cavab tokenləri", + "cachedTokenDesc": "Keşlənmiş giriş tokenləri (adətən giriş tarifinin 50%-i)", + "reasoningTokenDesc": "Xüsusi məntiqi emal/düşünmə tokenləri (ehtiyat olaraq çıxış tarifindən istifadə edilir)", + "cacheCreationTokenDesc": "Keş qeydləri yaratmaq üçün istifadə olunan tokenlər (ehtiyat olaraq giriş tarifindən istifadə edilir)", + "customPricingNote": "Müəyyən modellər üçün standart qiymətləri əvəz edə bilərsiniz. Fərdi qiymət əvəzləmələri avtomatik aşkarlanan qiymətlərdən üstündür.", + "editPricing": "Qiymətləri redaktə et", + "viewFullDetails": "Tam təfərrüatlara bax", "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Adaptiv həcm yönləndirməsi", + "adaptiveVolumeRoutingDesc": "Faydalı yükün həcminə və ötürmə qabiliyyəti təzyiqinə əsasən bağlantıları dinamik şəkildə miqyaslandırın.", + "lkgpToggleTitle": "Son məlum uğurlu provayder (LKGP)", + "lkgpToggleDesc": "Aktiv edildikdə, yönləndirici son uğurlu cavabı hansı provayderin təqdim etdiyini yadda saxlayır və sonrakı sorğularda əvvəlcə onu sınayır.", "echoRequestedModelTitle": "Cavablarda sorğu edilən model adını əks etdir", "echoRequestedModelDesc": "Aktiv edildikdə, cavabın `model` sahəsi yuxarı axın model adı əvəzinə müştərinin tələb etdiyi ləqəb və ya kombo adını əks etdirir. Modeli sorğu ilə uyğun gəlməyən cavabı rədd edən sərt müştərilərdəki (məsələn, Claude Desktop) xətanı düzəldir.", "webSearchRouteTitle": "Veb axtarış yönləndirməsi", "webSearchRouteDesc": "Sorğuya yerli web_search aləti daxil olduqda, bütün sorğunu standart model əvəzinə bu modelə yönləndirin — Anthropic-in web_search server alətini tətbiq etməyən provayderlər üçün faydalıdır. Deaktiv etmək üçün boş buraxın.", "webSearchRoutePlaceholder": "Model axtarın və ya seçin…", "paidModelPatternWarning": "Bu şablon yalnız ödənişli modellərə uyğun gəlir — ödənişli modelləri aktiv edin və ya şablonu tənzimləyin.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP keşini təmizlə", + "lkgpCacheCleared": "LKGP keşi uğurla təmizləndi", + "lkgpCacheClearFailed": "LKGP keşini təmizləmək mümkün olmadı", + "days": "Gün", + "lkgp": "LKGP rejimi", + "lkgpDesc": "Son məlum uğurlu provayder (Proqnozlaşdırıla bilən dayanıqlılıq)", + "maintenance": "Texniki xidmət", + "purgeExpiredLogs": "Müddəti bitmiş jurnalları təmizlə", + "purgeLogsFailed": "Jurnalları təmizləmək mümkün olmadı", "logsDeleted": "{count, plural, =0 {Müddəti bitmiş heç bir jurnal təmizlənmədi} one {# müddəti bitmiş jurnal təmizləndi} other {# müddəti bitmiş jurnal təmizləndi}}", "resetUsageData": "İstifadə Məlumatlarını Sıfırla", "resetUsageDataDesc": "İstifadə, sorğu jurnalları və analitika məlumatlarını nə qədər geriyə silmək istədiyinizi seçin. Provayder konfiqurasiyası, bağlantılar, API açarları, kombolar və parametrlər qorunub saxlanılır. Bu əməliyyat geri qaytarıla bilməz.", @@ -7413,63 +7416,63 @@ "resetUsageFailed": "İstifadə məlumatlarını sıfırlamaq mümkün olmadı", "reset": "Sıfırla", "resetting": "Sıfırlanır...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", - "pricingSourceLiteLLM": "LiteLLM (Community)", - "clearSyncedPricingConfirm": "Clear all synced pricing data? Provider defaults will be used instead.", - "clearSyncedPricingFailed": "Failed to clear synced pricing", - "pricingSourceUser": "User Override", - "pageDescription": "Manage application settings, model aliases, pricing, and routing rules", - "pricingSyncStatus": "Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", - "pricingLoadFailed": "Failed to load pricing data", - "pricingSyncDescription": "Automatically sync model pricing from external sources to keep cost calculations accurate", - "clearSyncedPricingSuccess": "Synced pricing data cleared", - "clearSyncedPricingFailedWithReason": "Failed to clear pricing: {reason}", - "pricingSourceDefault": "Built-in Default", - "pricingSyncSuccess": "Pricing synced successfully", - "enableSyncError": "Failed to toggle pricing sync", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "contextOpt": "Kontekstə görə optimallaşdırılıb", + "contextOptDesc": "Kontekst pəncərəsi tələblərinə və söhbətin uzunluğuna əsasən yönləndirir", + "cacheOpt": "Keşə görə optimallaşdırılıb", + "cacheOptDesc": "Eyni təkrar istifadə edilə bilən sorğu prefiksini eyni provayder hesabında saxlayır", + "priorityDesc": "Ardıcıl ehtiyat keçid — əvvəlcə 1-ci provayderi, sonra 2-ci provayderi və bu qaydada digərlərini sınayır", + "weightedDesc": "Trafiki provayderlər arasında faiz çəkilərinə əsasən paylayır", + "modelRoutingTitle": "Model yönləndirmə qaydaları", + "modelRoutingDesc": "Glob şablonlarından istifadə edərək modelləri avtomatik olaraq müəyyən kombinasiyalara yönləndirin", + "addRule": "Qayda əlavə et", + "routeToCombo": "Kombinasiyaya yönləndir", + "selectCombo": "Kombinasiya seçin...", + "priorityHint": "Daha yüksək dəyər = daha əvvəl yoxlanılır. Xüsusi şablonlar üçün 10+ istifadə edin.", + "patternHint": "İstənilən simvollar üçün *, tək simvol üçün ? istifadə edin. Böyük-kiçik hərfə həssas deyil.", + "noRoutingRules": "Heç bir yönləndirmə qaydası konfiqurasiya edilməyib. Sorğular standart olaraq qlobal kombinasiyadan istifadə edir.", + "routingRuleHint": "Sorğuları avtomatik yönləndirmək üçün claude-opus* -> frontier-combo kimi bir qayda əlavə edin.", + "deleteRoutingRule": "Bu model yönləndirmə qaydası silinsin?", + "exactMatchMode": "Dəqiq uyğunluq", + "wildcardPatternMode": "Əvəzedici simvollu şablon", + "exactMatchModeDesc": "Köhnəlmiş və ya adı dəyişdirilmiş model ID-ləri üçün dəqiq ləqəblərdən istifadə edin.", + "wildcardPatternModeDesc": "Model ailəsini bir hədəflə əlaqələndirmək üçün * və ? işarələri olan əvəzedici simvollu ləqəblərdən istifadə edin.", + "noExactAliasesConfigured": "Heç bir dəqiq uyğunluq ləqəbi konfiqurasiya edilməyib.", + "wildcardRulesTitle": "Əvəzedici simvol qaydaları", + "noWildcardAliasesConfigured": "Heç bir əvəzedici simvollu ləqəb konfiqurasiya edilməyib.", + "overview": "Ümumi baxış", + "unknownError": "Naməlum xəta", + "pricingSourceLiteLLM": "LiteLLM (İcma)", + "clearSyncedPricingConfirm": "Bütün sinxronlaşdırılmış qiymət məlumatları silinsin? Əvəzində provayderin standart dəyərləri istifadə olunacaq.", + "clearSyncedPricingFailed": "Sinxronlaşdırılmış qiymət məlumatlarını silmək mümkün olmadı", + "pricingSourceUser": "İstifadəçi tərəfindən dəyişdirilib", + "pageDescription": "Tətbiq ayarlarını, model ləqəblərini, qiymətləri və marşrutlaşdırma qaydalarını idarə edin", + "pricingSyncStatus": "Sinxronizasiya statusu", + "whitelist": "İcazə siyahısı", + "syncDisabled": "Sinxronizasiya deaktivdir", + "pricingLoadFailed": "Qiymət məlumatlarını yükləmək mümkün olmadı", + "pricingSyncDescription": "Xərc hesablamalarının dəqiqliyini qorumaq üçün model qiymətlərini xarici mənbələrdən avtomatik sinxronlaşdırın", + "clearSyncedPricingSuccess": "Sinxronlaşdırılmış qiymət məlumatları silindi", + "clearSyncedPricingFailedWithReason": "Qiymətləri silmək mümkün olmadı: {reason}", + "pricingSourceDefault": "Daxili standart dəyər", + "pricingSyncSuccess": "Qiymətlər uğurla sinxronlaşdırıldı", + "enableSyncError": "Qiymət sinxronizasiyasını dəyişdirmək mümkün olmadı", + "syncEnabled": "Sinxronizasiya aktivdir", + "blacklist": "Qara siyahı", "pricingSourceModelsDev": "Models.dev", - "syncedModels": "Synced Models", - "budget": "Budget", - "pricingSyncTitle": "Pricing Sync", - "pricingResetFailedWithReason": "Failed to reset pricing: {reason}", - "tab": "Tab", - "pricingSavedProvider": "Pricing saved for {provider}", - "pricingSyncFailed": "Pricing sync failed", - "pricingSaveFailedWithReason": "Failed to save pricing: {reason}", - "pricingResetProvider": "Pricing reset for {provider}", - "nextSync": "Next Sync", - "pricingSyncFailedWithReason": "Pricing sync failed: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "syncedModels": "Sinxronlaşdırılmış modellər", + "budget": "Büdcə", + "pricingSyncTitle": "Qiymət sinxronizasiyası", + "pricingResetFailedWithReason": "Qiymətləri sıfırlamaq mümkün olmadı: {reason}", + "tab": "Vərəq", + "pricingSavedProvider": "{provider} üçün qiymətlər yadda saxlanıldı", + "pricingSyncFailed": "Qiymət sinxronizasiyası uğursuz oldu", + "pricingSaveFailedWithReason": "Qiymətləri yadda saxlamaq mümkün olmadı: {reason}", + "pricingResetProvider": "{provider} üçün qiymətlər sıfırlandı", + "nextSync": "Növbəti sinxronizasiya", + "pricingSyncFailedWithReason": "Qiymət sinxronizasiyası uğursuz oldu: {reason}", + "clearSyncedPricing": "Sinxronlaşdırılmış qiymətləri sil", + "compressionTitle": "Sorğu sıxışdırılması", + "compressionDesc": "Sorğuları provayderlərə göndərməzdən əvvəl sıxışdıraraq token istifadəsini azaldın", "compressionGuidanceFullGuideLink": "Tam sıxılma bələdçisi", "compressionGuidanceShow": "Təfərrüatlar", "compressionGuidanceHide": "Təfərrüatları gizlət", @@ -7485,41 +7488,41 @@ "tokenSaverInputCompressionDesc": "Kodu, URL-ləri və niyyəti qoruyaraq uyğun söhbət tarixçəsini yenidən yazın.", "tokenSaverFineTunePrefix": "Hər mühərriki burada incə tənzimləyin", "tokenSaverFineTuneSuffix": "və ya hər sorğu üzrə mühərrikləri burada birləşdirin", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Sıxışdırma rejimi", + "compressionModeOff": "Söndürülüb", + "compressionModeOffDesc": "Sıxışdırma tətbiq edilmir", + "compressionModeLite": "Yüngül", + "compressionModeLiteDesc": "Boşluqların və boş sətirlərin azaldılması", + "compressionModeStandard": "Standart (Caveman)", + "compressionModeStandardDesc": "30-dan çox şablonla qayda əsaslı sıxılma, kod bloklarını və URL-ləri qoruyur", + "compressionModeAggressive": "Aqressiv", + "compressionModeAggressiveDesc": "Maksimum qənaət üçün xülasələmə + alət nəticələrinin sıxılması + mərhələli köhnəlmə", "compressionModeUltra": "Ultra", - "compressionModeUltraDesc": "Heuristic token pruning with optional local SLM fallback", - "compressionAggressiveConfig": "Aggressive Engine Configuration", - "compressionAggressiveConfigDesc": "Fine-tune summarization, tool compression, and aging thresholds", - "compressionUltraConfig": "Ultra Engine Configuration", - "compressionUltraConfigDesc": "Fine-tune heuristic pruning, SLM fallback, and per-message thresholds", - "compressionUltraRate": "Keep Rate", - "compressionUltraMinScore": "Minimum Score Threshold", - "compressionUltraSlmFallback": "Fallback to Aggressive", - "compressionUltraModelPath": "SLM Model Path", + "compressionModeUltraDesc": "İstəyə bağlı lokal SLM ehtiyat variantı ilə evristik token seyrəltməsi", + "compressionAggressiveConfig": "Aqressiv mühərrik konfiqurasiyası", + "compressionAggressiveConfigDesc": "Xülasələmə, alət sıxılması və köhnəlmə hədlərini dəqiq tənzimləyin", + "compressionUltraConfig": "Ultra mühərrik konfiqurasiyası", + "compressionUltraConfigDesc": "Evristik seyrəltmə, SLM ehtiyat variantı və hər mesaj üzrə hədləri dəqiq tənzimləyin", + "compressionUltraRate": "Saxlanma nisbəti", + "compressionUltraMinScore": "Minimum bal həddi", + "compressionUltraSlmFallback": "Aqressiv rejimə keçid", + "compressionUltraModelPath": "SLM modelinin yolu", "compressionUltraEngine": "Ultra səviyyəsi", "compressionUltraEngineHeuristic": "Evristik (Tier-A, standart)", "compressionUltraEngineSlm": "SLM (LLMLingua-2, istəyə bağlı)", "compressionUltraSlmHint": "SLM ilk istifadədə (soyuq işəsalma) kiçik bir ONNX modelini endirir və vaxt bitdikdə və ya əlçatmaz olduqda şəffaf şəkildə evristik üsula qayıdır.", "compressionUltraSlmPrewarm": "Aktivləşdirdikdə SLM modelini öncədən qızdır", - "compressionSummarizerEnabled": "Enable Summarizer", - "compressionMaxTokensPerMessage": "Max Tokens Per Message", - "compressionMinSavings": "Min Savings Threshold", - "compressionAgingThresholds": "Aging Thresholds", - "compressionAgingThresholdsDesc": "Number of recent messages kept at each aging tier (higher = more preserved)", - "compressionToolStrategies": "Tool Result Strategies", - "compressionToolStrategiesDesc": "Toggle compression strategies for different tool result types", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionSummarizerEnabled": "Xülasələyicini aktivləşdirin", + "compressionMaxTokensPerMessage": "Hər mesaj üçün maksimum token sayı", + "compressionMinSavings": "Minimum qənaət həddi", + "compressionAgingThresholds": "Köhnəlmə hədləri", + "compressionAgingThresholdsDesc": "Hər köhnəlmə səviyyəsində saxlanılan son mesajların sayı (daha yüksək = daha çoxu qorunur)", + "compressionToolStrategies": "Alət nəticəsi strategiyaları", + "compressionToolStrategiesDesc": "Müxtəlif alət nəticəsi növləri üçün sıxılma strategiyalarını aktivləşdirin və ya deaktiv edin", + "compressionGeneral": "Ümumi parametrlər", + "compressionAutoTrigger": "Avtomatik işə düşmə həddi", + "compressionCacheTTL": "Keş TTL-i", + "compressionPreserveSystem": "Sistem sorğusunu qoruyun", "compressionPreserveSystemAlways": "Həmişə", "compressionPreserveSystemWhenNoCache": "Keş olmadıqda", "compressionPreserveSystemNever": "Heç vaxt", @@ -7532,87 +7535,87 @@ "compressionExclusionsSaved": "Saxlanıldı", "compressionExclusionsCount": "{count, plural, one {# istisna} other {# istisnalar}} konfiqurasiya edilib", "compressionExclusionsEmpty": "Heç bir istisna konfiqurasiya edilməyib — hər bir model/endpoint sıxılma üçün uyğun gəlir (default davranış).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman mühərrikinin konfiqurasiyası", + "compressionCavemanConfigDesc": "Qayda əsaslı sıxılma mühərrikini dəqiq tənzimləyin", "compressionCavemanPanelHint": "Onun aktiv/deaktiv edilməsi və səviyyəsi paneldə təyin olunur:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", - "minutes": "minutes", + "compressionRoles": "Mesaj rollarını sıxın", + "compressionRoleUser": "İstifadəçi", + "compressionRoleAssistant": "Assistent", + "compressionRoleSystem": "Sistem", + "compressionMinLength": "Minimum mesaj uzunluğu", + "compressionSkipRules": "Sıxılma qaydalarını ötürün", + "compressionSkipRulesDesc": "Sıxılma zamanı ötürmək üçün qaydaların üzərinə klikləyin", + "compressionPreservePatterns": "Qorunacaq şablonlar", + "compressionPreservePatternsDesc": "Heç vaxt sıxılmayan regex şablonları (hər sətirdə bir ədəd)", + "compressionLogTitle": "Sıxılma jurnalı", + "compressionLogEmpty": "Hələ heç bir sorğu sıxılmayıb. Sıxılma aktiv olduqda sorğular emal edilərkən sıxılma statistikası burada görünəcək.", + "minutes": "dəqiqə", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Əmrləri nəzərə alan alət çıxışı filtrasiyası", + "compressionModeCodexResponses": "Responses alətinin çıxışı", + "compressionModeCodexResponsesDesc": "Uyğun shell, patch, axtarış, build və JSON çıxışları üçün konservativ sıxışdırma", + "compressionModeStacked": "Yığılmış", + "compressionModeStackedDesc": "RTK alət çıxışı filtrləməsi, ardınca Caveman mesaj sıxışdırması", + "qdrantTitle": "Qdrant (Vektor yaddaşı)", + "qdrantDesc": "İstəyə bağlıdır. Daha sürətli əldə etmək üçün semantik yaddaşları xarici vektor verilənlər bazasında indeksləşdirir.", + "qdrantStatusActive": "Aktiv", + "qdrantStatusError": "Xəta", + "qdrantStatusDisabled": "Deaktiv edilib", + "qdrantEnable": "Qdrant-ı aktivləşdir", + "qdrantEnableDesc": "Aktivləşdirildikdə, semantik/hibrid strategiya yaddaşları əldə etmək üçün Qdrant-dan istifadə edə bilər.", + "qdrantTesting": "Sınaqdan keçirilir...", + "qdrantTestConnection": "Bağlantını sınaqdan keçir", + "qdrantSaved": "Konfiqurasiya yadda saxlanıldı", + "qdrantSaveError": "Konfiqurasiyanı yadda saxlamaq alınmadı", + "qdrantHostHint": "Portsuz. Nümunə: 127.0.0.1 və ya http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Qdrant standartı: 6333", + "qdrantCollectionHint": "Yaddaş nöqtələrinin saxlanacağı yer.", + "qdrantEmbeddingModel": "Embedding modeli", + "qdrantHelpTitle": "Sürətli quraşdırma yardımı", + "qdrantHelpQuickTitle": "Sürətli quraşdırma (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Kolleksiya: omniroute_memory.", + "qdrantHelpStep2": "2. nvidia/llama-nemotron-embed-vl-1b-v2:free istifadə edilirsə, kolleksiya ölçüsü kimi 2048 seçin.", + "qdrantHelpStep3": "3. Model sahəsi: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Yadda saxlayın, bağlantını, sonra isə axtarışı sınaqdan keçirin.", + "qdrantEmbeddingQuickSelect": "Aşkarlanmış modellərdən sürətli seçim edin...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", - "optional": "Optional", - "current": "Current", - "remove": "Remove", - "search": "Search", + "qdrantEmbeddingHint": "Format: provider/model. Provayderin giriş məlumatları konfiqurasiya edilməlidir.", + "qdrantApiKeyPlaceholderKeep": "(cari açarı saxlamaq üçün boş buraxın)", + "qdrantApiKeyPlaceholderOptional": "(istifadə edilmirsə, boş buraxın)", + "qdrantSaveHint": "İpucu: host/port/collection/model məlumatlarını redaktə edin və Yadda saxla düyməsinə klikləyin. API açarı istəyə bağlıdır.", + "qdrantSearchTestTitle": "Axtarış sınağı", + "qdrantSearchTestDesc": "Embedding yaradır və Qdrant-da axtarış aparır.", + "qdrantSearchPlaceholder": "Nümunə: istifadəçi seçimləri, tarixçə və s.", + "qdrantNoResults": "Nəticə yoxdur (və ya Qdrant konfiqurasiya edilməyib).", + "qdrantCleanupTitle": "Saxlama müddəti və təmizləmə", + "qdrantCleanupDesc": "Müddəti bitmiş və köhnə nöqtələri bunlara əsasən silir:", + "searching": "Axtarılır...", + "cleaning": "Təmizlənir...", + "cleanNow": "İndi təmizlə", + "optional": "İstəyə bağlı", + "current": "Cari", + "remove": "Sil", + "search": "Axtar", "oneproxyTitle": "1proxy Pulsuz Proksi Marketplace", "oneproxyTotalProxies": "Ümumi Proksilər", "oneproxyAvgQuality": "Orta keyfiyyət", "resilienceScope": "Əhatə dairəsi:", "resilienceTrigger": "Tətik:", "resilienceEffect": "Effekt:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Sorğu növbəsi və tezliyi", + "resilienceAutoEnableApiKeyProviders": "API açarı təminatçıları üçün avtomatik aktivləşdir", + "resilienceRequestsPerMinute": "Dəqiqədə sorğular", + "resilienceMinTimeBetweenRequests": "Sorğular arasındakı minimum vaxt", + "resilienceConcurrentRequests": "Paralel sorğular", + "resilienceConnectionScopeConcurrentRequests": "Hər bağlantı/kvota əhatəsi üzrə paralel sorğular", + "resilienceGlobalConcurrentRequests": "Qlobal paralel yuxarı axın sorğuları (0 = deaktivdir)", "resilienceMaxQueueWaitTime": "Maksimum növbə gözləmə müddəti", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Əsas gözləmə müddəti", + "resilienceUseUpstreamRetryHints": "Yuxarı axının təkrar cəhd göstərişlərindən istifadə et", + "resilienceDefaultPerProvider": "Defolt (hər təminatçı üzrə)", + "resilienceAlwaysOn": "Həmişə aktiv", + "resilienceAlwaysOff": "Həmişə deaktiv", "routingRemoveEntry": "Girişi silin", "routingNeedlesSubstrings": "İğnələr (uyğunlaşan alt simlər)", "routingCaseSensitive": "Hərflərə həssasdır", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "Çıxarılmış təsvir orijinal sorğuya yenidən daxil edilməzdən əvvəl görüntü modelinə göndərilir.", "visionBridgeTimeoutMs": "Zaman aşımı (ms)", "visionBridgeMaxImagesPerRequest": "İstək Başına Maksimum Şəkillər", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Maksimum geriçəkilmə addımları", + "resilienceProviderBreakerTitle": "Hər təminatçı üzrə dövrə açarı", + "resilienceFailureThreshold": "Xəta həddi", + "resilienceDegradationThreshold": "Deqradasiya həddi", "resilienceResetTimeout": "Vaxt aşımını sıfırlayın", "resilienceFailureThresholdLabel": "Uğursuzluq həddi", "resilienceResetTimeoutLabel": "Vaxt aşımını sıfırlayın", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Bağlantının gözləmə müddəti", "resilienceUseUpstreamRetryHintsLabel": "Yuxarı təkrar cəhd göstərişlərindən istifadə edin", "resilienceUseUpstream429BreakerLabel": "Upstream 429 göstərişlərdən istifadə edin (kesici)", "resilienceMaxBackoffStepsLabel": "Maksimum geri çəkilmə addımları", "resilienceYes": "Bəli", "resilienceNo": "yox", - "resilienceDefault": "Default", + "resilienceDefault": "Defolt", "storageDatabaseBackupRetention": "Verilənlər bazasının ehtiyat nüsxəsinin saxlanması", "storageDatabaseBackups": "Verilənlər bazası nüsxələri", "storageBackupRetentionDescription": "Avtomatik SQLite ehtiyat nüsxələri burada saxlanılır:", @@ -7729,64 +7732,68 @@ "storageDatabaseStatistics": "Verilənlər bazası statistikası", "storageIntegrityNotChecked": "Yoxlanılmayıb", "backupRetentionSaved": "Ehtiyat nüsxəsinin saxlama müddəti yadda saxlanıldı.", - "backupRetentionSaveFailed": "Failed to save backup retention", - "backupCleanupSuccess": "Deleted {backups} backup set(s) and {files} file(s).", - "backupCleanupFailed": "Failed to clean database backups", - "purgeQuotaSnapshotsSuccess": "Purged {count} quota snapshots", - "purgeQuotaSnapshotsFailed": "Failed to purge quota snapshots", - "purgeCallLogsSuccess": "Purged {count} call logs", - "purgeCallLogsFailed": "Failed to purge call logs", - "purgeDetailedLogsSuccess": "Purged {count} detailed logs", - "purgeDetailedLogsFailed": "Failed to purge detailed logs", - "vacuumCompleted": "VACUUM completed", - "vacuumFailed": "VACUUM failed", - "jsonExportFailed": "JSON export failed", - "invalidJsonFileType": "Invalid file type. Only .json files are allowed.", - "legacyJsonImportSuccess": "Legacy JSON imported successfully!", - "jsonImportFailed": "Failed to import JSON", - "jsonImportError": "Error during JSON import", + "backupRetentionSaveFailed": "Yedəkləmələrin saxlanma parametrini yadda saxlamaq alınmadı", + "backupCleanupSuccess": "{backups} yedəkləmə dəsti və {files} fayl silindi.", + "backupCleanupFailed": "Verilənlər bazası yedəkləmələrini təmizləmək alınmadı", + "purgeQuotaSnapshotsSuccess": "{count} kvota ani görüntüsü təmizləndi", + "purgeQuotaSnapshotsFailed": "Kvota ani görüntülərini təmizləmək alınmadı", + "purgeCallLogsSuccess": "{count} çağırış jurnalı təmizləndi", + "purgeCallLogsFailed": "Çağırış jurnallarını təmizləmək alınmadı", + "purgeDetailedLogsSuccess": "{count} ətraflı jurnal təmizləndi", + "purgeDetailedLogsFailed": "Ətraflı jurnalları təmizləmək alınmadı", + "vacuumCompleted": "VACUUM tamamlandı", + "vacuumFailed": "VACUUM uğursuz oldu", + "jsonExportFailed": "JSON ixracı uğursuz oldu", + "invalidJsonFileType": "Yanlış fayl növü. Yalnız .json fayllarına icazə verilir.", + "legacyJsonImportSuccess": "Köhnə formatlı JSON uğurla idxal edildi!", + "jsonImportFailed": "JSON-u idxal etmək alınmadı", + "jsonImportError": "JSON idxalı zamanı xəta baş verdi", + "jsonImportAuthRequired": "Köhnə JSON konfiqurasiyasını idxal etmək üçün autentifikasiya tələb olunur. Zəhmət olmasa, əvvəlcə daxil olun və ya quraşdırmanı tamamlayın.", + "databaseSettingsAuthRequiredTitle": "Autentifikasiya tələb olunur", + "databaseSettingsAuthRequiredBody": "Verilənlər bazası parametrləri və JSON idxalı yalnız autentifikasiyadan keçmiş administrator üçün əlçatandır. Onlara baxmaq və redaktə etmək üçün daxil olun və ya quraşdırmanı tamamlayın.", + "databaseSettingsAuthRequiredCta": "Daxil olun", "storagePurgeData": "Məlumatların təmizlənməsi", - "storagePurgeDataDesc": "Immediately delete all records without applying retention checks. Use with caution.", - "storageRetentionCleanup": "Retention Settings", - "storageRetentionCleanupDesc": "Configure operational record retention and database backup cleanup.", - "retentionCallDays": "Call {count}d", - "retentionAppDays": "App {count}d", - "retentionRows": "{count} rows", + "storagePurgeDataDesc": "Saxlama müddəti yoxlamalarını tətbiq etmədən bütün qeydləri dərhal silin. Ehtiyatla istifadə edin.", + "storageRetentionCleanup": "Saxlama müddəti parametrləri", + "storageRetentionCleanupDesc": "Əməliyyat qeydlərinin saxlanma müddətini və verilənlər bazası ehtiyat nüsxələrinin təmizlənməsini konfiqurasiya edin.", + "retentionCallDays": "Zəng {count} gün", + "retentionAppDays": "Tətbiq {count} gün", + "retentionRows": "{count} sətir", "retentionQuotaSnapshots": "Kvota Snapshotları (günlər)", - "retentionCompressionAnalytics": "Compression Analytics (days)", + "retentionCompressionAnalytics": "Sıxılma analitikası (gün)", "retentionMcpAudit": "MCP Auditi (günlər)", "retentionA2aEvents": "A2A Hadisələri (günlər)", "retentionCallLogs": "Zəng qeydləri (günlər)", "retentionUsageHistory": "İstifadə Tarixçəsi (günlər)", "retentionMemoryEntries": "Yaddaş Girişləri (günlər)", - "retentionXpAuditLog": "XP Audit Log (days)", - "saveRetentionSettings": "Save retention settings", + "retentionXpAuditLog": "XP audit jurnalı (gün)", + "saveRetentionSettings": "Saxlama müddəti parametrlərini yadda saxlayın", "storageAutoVacuumMode": "Avtomatik vakuum rejimi", "storageScheduledVacuum": "Planlaşdırılmış vakuum", "storageVacuumHour": "Vakuum Saatı (0-23)", "storagePageSize": "Səhifə ölçüsü (bayt)", - "storageOptimizationSettings": "Optimization Settings", - "storageJournalModeNone": "None", - "storageJournalModeFull": "Full", - "storageJournalModeIncremental": "Incremental", - "storageVacuumNever": "Never", - "storageVacuumDaily": "Daily", - "storageVacuumWeekly": "Weekly", - "storageVacuumMonthly": "Monthly", - "storageCacheSizeKb": "Cache Size (KB)", - "storageOptimizeOnStartup": "Optimize on Startup", - "storageSaveOptimization": "Save Optimization Settings", - "storageCompressionAggregation": "Compression & Aggregation Settings", - "storageEnableAggregation": "Enable Data Aggregation", - "storageRawDataRetention": "Raw Data Retention (days)", - "storageGranularity": "Granularity", + "storageOptimizationSettings": "Optimallaşdırma parametrləri", + "storageJournalModeNone": "Heç biri", + "storageJournalModeFull": "Tam", + "storageJournalModeIncremental": "Artımlı", + "storageVacuumNever": "Heç vaxt", + "storageVacuumDaily": "Gündəlik", + "storageVacuumWeekly": "Həftəlik", + "storageVacuumMonthly": "Aylıq", + "storageCacheSizeKb": "Keş ölçüsü (KB)", + "storageOptimizeOnStartup": "Başlanğıcda optimallaşdır", + "storageSaveOptimization": "Optimallaşdırma parametrlərini yadda saxlayın", + "storageCompressionAggregation": "Sıxılma və aqreqasiya parametrləri", + "storageEnableAggregation": "Verilənlərin aqreqasiyasını aktivləşdirin", + "storageRawDataRetention": "Xam verilənlərin saxlanma müddəti (gün)", + "storageGranularity": "Dənəvərlik", "storageHourly": "Saatlıq", "storageDaily": "Günlük", "storageWeekly": "Həftəlik", "storageSaveAggregation": "Aqreqasiya parametrlərini yadda saxla", "exportJson": "JSON-u ixrac et", "importJson": "JSON-u idxal et", - "manualVacuum": "Manual VACUUM", + "manualVacuum": "Əl ilə VACUUM", "purgeQuotaSnapshots": "Kvota anlıq görüntülərini təmizlə", "purgeCallLogs": "Zəng qeydlərini təmizlə", "purgeDetailedLogs": "Ətraflı qeydləri təmizlə", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "rejim: {mode}", "compressionAdaptiveOff": "Adaptiv kontekst büdcəsi: qapalı (köhnə avtomatik tətikləyici)", "compressionAdaptiveTarget": "Adaptiv ({mode}, siyasət: {policy}) — hədəf ≈ {target, number} token ({contextLimit, number}-tokenlik pəncərə üçün)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Adaptiv kontekst büdcəsi", + "compressionAdaptiveModeOff": "Söndürülüb (köhnə avtomatik işəsalma)", + "compressionAdaptiveModeFloor": "Minimum hədd (həmişə sığmanı təmin et)", + "compressionAdaptiveModeReplace": "Avtomatik işəsalmanı əvəz et", + "compressionAdaptivePolicy": "Büdcə siyasəti", + "compressionAdaptivePolicyReserve": "Çıxış üçün ehtiyat", + "compressionAdaptivePolicyPercentage": "Pəncərənin faizi", + "compressionAdaptivePolicyAbsolute": "Mütləq token büdcəsi", "compressionOutputStylesDescription": "Provayder çıxışını yenidən yazmadan cavab-formalaşdıran təlimatları daxil edin. Sərbəst şəkildə birləşdirin.", "mcpAccessibilityDescription": "MCP alət çıxışlarını əhatə edir (ayrıca depo).", "compressionStylesTileSummary": "{tokens, number} tokenə qənaət edilib · {runs, plural, one {# işəsalma üslublaşdırılıb} other {# işəsalma üslublaşdırılıb}}", @@ -7844,8 +7851,8 @@ "minimal": "Minimal", "standard": "Standart", "aggressive": "Aqressiv", - "lite": "Lite", - "full": "Full", + "lite": "Yüngül", + "full": "Tam", "ultra": "Ultra" }, "compressionEngine": { @@ -7858,7 +7865,7 @@ "description": "Məzmun ünvanlı axtarış markerləri." }, "lite": { - "label": "Lite", + "label": "Yüngül", "description": "Boşluq və format təmizlənməsi." }, "rtk": { @@ -7866,11 +7873,11 @@ "description": "Komanda çıxışının filtrlənməsi." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses alətinin çıxışı", + "description": "Dəstəklənən Responses aləti çıxışları üçün konservativ sıxılma." }, "headroom": { - "label": "Headroom", + "label": "Ehtiyat payı", "description": "Cədvəl formalı JSON sıxışdırılması." }, "relevance": { @@ -7878,7 +7885,7 @@ "description": "Son istifadəçi sorğusuna əsasən ekstraktiv cümlə qiymətləndirilməsi." }, "caveman": { - "label": "Caveman", + "label": "Mağara adamı", "description": "Qaydalara əsaslanan nəsr sıxılması." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "YAGNI pilləkəni: ən kiçik işlək dəyişiklik, tələb olunmayan mücərrədliklər olmadan." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "At quyruğu (tənbəl baş proqramçı)", + "description": "Tənbəl baş proqramçı intizamı: YAGNI pilləkəni ilə qalxın, əsas səbəbi aradan qaldırın, işləyən ən kiçik fərqi tətbiq edin." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Məndə ADHD var (əvvəlcə əməl)", + "description": "Əvvəlcə əməl formatında çıxış: növbəti əməl öndə verilir, addımlar nömrələnir, bir konkret növbəti addım göstərilir, giriş verilmir." }, "terse-cjk": { "label": "Yığcam CJK (文言)", @@ -7924,13 +7931,21 @@ "resilienceEnableServerSideWait": "Server tərəfində gözləməyi aktivləşdirin", "resilienceMaximumRetries": "Maksimum təkrar cəhdlər", "resilienceMaximumWaitPerRetry": "Hər təkrar cəhd üçün maksimum gözləmə", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "SkillsMP Marketi", "memorySkillsFailedToSave": "Yadda saxlamaq alınmadı", "memorySkillsApiKey": "API Açarı", "memorySkillsActiveSkillsProvider": "Aktiv Bacarıqlar Provayderi", - "cliproxyapiFallback": "CLIProxyAPI Fallback", + "cliproxyapiFallback": "CLIProxyAPI ehtiyat variantı", "cliproxyapiEnableFallback": "CLIProxyAPI Fallback-i aktivləşdirin", - "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiUrl": "CLIProxyAPI URL-i", + "headroomProxyTitle": "Headroom proksisi", + "headroomProxyDesc": "İstəyə bağlı Headroom token qənaətçisi proksisinin URL-i. Boş saxlanarsa, HEADROOM_URL və ya http://localhost:8787 istifadə olunur.", + "headroomProxyUrl": "Headroom URL-i", + "headroomProxyUrlHint": "Geri döngə URL-ləri bu səhifədən başladıla bilər. Xarici URL-lər yalnız yoxlanılır.", + "headroomProxySave": "Yadda saxla", + "headroomProxyStart": "Başlat", + "headroomProxyStop": "Dayandır", + "headroomProxyExternalHint": "Bu URL geri döngə ünvanı deyil, buna görə OmniRoute yerli CLI-ni işə salmayacaq.", "cliproxyapiStatus": "CLIProxyAPI Vəziyyəti", "cliproxyapiNotDetected": "Aşkarlanmadı", "cliproxyapiImportAuthTitle": "Hesabları CLIProxyAPI-dən idxal edin", @@ -7985,23 +8000,23 @@ "responsesStateModePreserve": "Qoru", "responsesStateHint": "Bağlantı OpenAI Responses yaddaşını açıq şəkildə aktivləşdirmədikdə, Avtomatik rejim previous_response_id-ni silir. Sil rejimi VS Code Custom Endpoint kimi vəziyyətsiz müştərilər üçün ən təhlükəsizidir; bu halda kontekst müştərinin tam tarixçəni göndərməsindən asılı olur.", "responsesStateSaveError": "Cavabların vəziyyəti parametrini yeniləmək mümkün olmadı", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Codex sürətli səviyyəsi", "codexFastTierDesc": "Qlobal olaraq OpenAI Codex sorğuları üçün service_tier=priority daxil edin.", "codexFastTierHint": "Aktivləşdirildikdə, OmniRoute artıq səviyyəni təyin etməyən bağlantılar üçün gedən Kodeks sorğularına service_tier=priority əlavə edir. Prioritet səviyyəsi OpenAI Enterprise API açarı və ya ChatGPT-auth Codex yolunu tələb edir; digər açar növləri OpenAI-dən səviyyə ilə bağlı xəta alacaq. Codex provayder səhifəsində hər bir əlaqə parametrləri üstünlük təşkil edir.", "codexFastTierSaveError": "Codex Fast Tier ayarını yeniləmək alınmadı", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex kvotasının avtomatik yoxlanması", + "codexAutoPingDesc": "Hər bağlantı üçün ayrıca aktivləşdirilir: Codex sessiya pəncərəsi sıfırlandıqdan dərhal sonra kiçik bir sorğu göndərir ki, ehtiyacınız olanda soyuq vəziyyətdə olmasın.", + "codexAutoPingWarning": "Hər yoxlamada az miqdarda real Codex kvotası sərf olunur. Defolt olaraq söndürülüb — yalnız aktiv şəkildə etibar etdiyiniz bağlantılar üçün qoşun.", + "codexAutoPingSaveError": "Codex avtomatik yoxlama ayarını yeniləmək alınmadı", + "codexAutoPingToggleAria": "{connection} üçün Codex kvotasının avtomatik yoxlanmasını dəyişdirin", "codexFastTierTierLabel": "Xidmət səviyyəsi", "codexFastTierTierPriority": "Prioritet", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Çevik", "codexFastTierTierDefault": "Defolt", "codexFastTierModelsLabel": "Fast-tier modelləri", "codexFastTierModelsHint": "Fast Tier aktiv olduqda, yalnız seçilmiş modellər service_tier qəbul edir.", "codexFastTierModelCheckbox": "{model} üçün Fast Tier-i aktiv et", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Claude sürətli rejimi", "claudeFastModeDesc": "Seçilmiş Klod sorğularını Antropik Sürətli Rejimə seçin (sürət: \"sürətli\").", "claudeFastModeHint": "Anthropic rəsmi olaraq SDK tipli müştərilər üçün Sürətli rejimi dəstəkləmir. Aktivləşdirildikdə, OmniRoute X-CPA-Force-Fast-Mode başlığını yönləndirir ki, qoşalaşmış CLIProxyAPI quruluşu giriş nöqtəsini saxtalaşdıra bilsin. Yalnız sadalanan Opus modelləri Anthropic-in müştəri tərəfi yoxlamasından keçir. Abunəlik səviyyəsi, Maksimum plan və Sürətli Rejim kredit balansı hələ də server tərəfində tətbiq edilir — Anthropic keçid aktiv olduqda belə, kreditdən kənara qayıda bilər.", "claudeFastModeModelsLabel": "Modellərə tətbiq olunur ({count})", @@ -8022,13 +8037,13 @@ "LOCAL_ONLY": "Yalnız lokal", "ALWAYS_PROTECTED": "Həmişə qorunur", "MANAGEMENT": "İdarəetmə", - "CLIENT_API": "Client API", + "CLIENT_API": "Müştəri API-si", "PUBLIC": "Açıq" }, "bypass": { - "section": "Manage-scope bypass", + "section": "İdarəetmə əhatəsinin yan keçilməsi", "kill_switch": { - "label": "Bypass kill-switch", + "label": "Fövqəladə dayandırma mexanizmindən yan keçmə", "desc": "Əsas keçid. Sönülü olduqda, hər prefiks siyahısından asılı olmayaraq, qeyri-loopback-dən heç bir LOCAL_ONLY prefiksinə əlçatanlıq olmur." }, "prefix": { @@ -8058,7 +8073,7 @@ "auth_required": "Autentifikasiya tələb olunur", "public": "Açıq", "always_protected": "Həmişə qorunur", - "spawn_capable": "Spawn-capable" + "spawn_capable": "Proses başlatma imkanlı" }, "error": { "PASSWORD_REQUIRED": "Bu dəyişiklikləri tətbiq etmək üçün cari şifrə tələb olunur.", @@ -8070,40 +8085,40 @@ "remove": "Silin" }, "resilienceBaseCooldownLabel": "Baza soyutma", - "scopeLabel": "Scope", - "triggerLabel": "Trigger", - "effectLabel": "Effect", - "statusEnabled": "Enabled", - "statusDisabled": "Disabled", - "resilienceRequestQueueScope": "Per request queue", - "resilienceRequestQueueTrigger": "Before sending to the upstream", - "resilienceRequestQueueEffect": "Queues requests, limits concurrency, and spaces out calls", - "resilienceRequestQueueDesc": "This layer only controls queueing and pacing. It does not store cooldowns or open circuit breakers.", - "resilienceAutoEnableApiKeyProvidersDesc": "Enables queue protection by default for active API key connections.", - "resilienceMaxQueueWait": "Maximum queue wait time", + "scopeLabel": "Əhatə dairəsi", + "triggerLabel": "Tətikləyici", + "effectLabel": "Təsir", + "statusEnabled": "Aktivdir", + "statusDisabled": "Deaktivdir", + "resilienceRequestQueueScope": "Hər sorğu üçün növbə", + "resilienceRequestQueueTrigger": "Yuxarı axına göndərməzdən əvvəl", + "resilienceRequestQueueEffect": "Sorğuları növbəyə alır, paralelliyi məhdudlaşdırır və çağırışlar arasında fasilə yaradır", + "resilienceRequestQueueDesc": "Bu qat yalnız növbəyə alma və tempin tənzimlənməsini idarə edir. Gözləmə müddətlərini saxlamır və dövrə kəsicilərini açmır.", + "resilienceAutoEnableApiKeyProvidersDesc": "Aktiv API açarı bağlantıları üçün növbə qorunmasını standart olaraq aktivləşdirir.", + "resilienceMaxQueueWait": "Maksimum növbə gözləmə müddəti", "resilienceMaxExecutionWait": "İcra vaxt limiti (sürət limiti ehtiyat həddi)", - "resilienceConnectionCooldownScope": "Individual connection", - "resilienceConnectionCooldownTrigger": "When a connection returns a transient upstream failure", - "resilienceConnectionCooldownEffect": "Temporarily skips that connection and increases backoff for repeated failures", - "resilienceConnectionCooldownDesc": "The base cooldown covers transient connection failures. When upstream retry hints are enabled, the provider's explicit window overrides the local cooldown.", - "resilienceUseUpstreamRetryHintsDesc": "Uses retry-after/reset values from the upstream provider when available.", - "resilienceUseUpstream429BreakerHints": "Use upstream 429 hints for breaker cooldown", - "resilienceUseUpstream429BreakerHintsShort": "Use upstream 429 hints", - "resilienceUseUpstream429BreakerHintsDesc": "Apply Retry-After / quota-exhausted signals from 429 responses to the circuit-breaker cooldown duration. Default uses a per-provider policy: direct cloud providers default on; reverse-proxy, self-hosted, and CLI-backed providers default off. Independent of \"Use upstream retry hints\".", - "resilienceProviderBreakerScope": "Entire provider", - "resilienceProviderBreakerTrigger": "Final transport/server failures after connection fallback is exhausted", - "resilienceProviderBreakerEffect": "Temporarily blocks that provider until the reset time expires", - "resilienceProviderBreakerDesc": "Live breaker state appears only on the Health page. Connection-scoped 429 rate limits stay in Connection Cooldown and do not trip the provider breaker.", - "resilienceResetTime": "Reset time", - "resilienceWaitForCooldownTitle": "Wait For Cooldown", - "resilienceWaitForCooldownScope": "Current client request", - "resilienceWaitForCooldownTrigger": "When all candidate connections are already cooling down", - "resilienceWaitForCooldownEffect": "Waits on the server and retries when the first cooldown expires", - "resilienceWaitForCooldownDesc": "This only affects the current request. It does not store connection or provider state.", - "resilienceEnableServerWait": "Enable server-side wait", - "resilienceEnableServerWaitDesc": "When enabled, OmniRoute waits for the first cooldown to expire and retries automatically.", - "resilienceMaxAttempts": "Maximum attempts", - "resilienceMaxWaitPerAttempt": "Maximum wait per attempt", + "resilienceConnectionCooldownScope": "Fərdi bağlantı", + "resilienceConnectionCooldownTrigger": "Bağlantı yuxarı axından müvəqqəti xəta qaytardıqda", + "resilienceConnectionCooldownEffect": "Həmin bağlantını müvəqqəti olaraq ötürür və təkrarlanan xətalar üçün geri çəkilmə müddətini artırır", + "resilienceConnectionCooldownDesc": "Baza gözləmə müddəti müvəqqəti bağlantı xətalarını əhatə edir. Yuxarı axının təkrar cəhd göstərişləri aktiv olduqda, provayderin açıq şəkildə göstərdiyi müddət yerli gözləmə müddətini əvəz edir.", + "resilienceUseUpstreamRetryHintsDesc": "Mövcud olduqda yuxarı axın provayderinin retry-after/reset dəyərlərindən istifadə edir.", + "resilienceUseUpstream429BreakerHints": "Kəsicinin gözləmə müddəti üçün yuxarı axının 429 göstərişlərindən istifadə et", + "resilienceUseUpstream429BreakerHintsShort": "Yuxarı axının 429 göstərişlərindən istifadə et", + "resilienceUseUpstream429BreakerHintsDesc": "429 cavablarındakı Retry-After / quota-exhausted siqnallarını dövrə kəsicisinin gözləmə müddətinə tətbiq edin. Standart olaraq hər provayder üçün ayrıca siyasət istifadə olunur: birbaşa bulud provayderlərində standart olaraq aktivdir; əks-proksi, öz serverində yerləşdirilən və CLI əsaslı provayderlərdə isə standart olaraq deaktivdir. \"Yuxarı axının təkrar cəhd göstərişlərindən istifadə et\" parametrindən asılı deyil.", + "resilienceProviderBreakerScope": "Bütün provayder", + "resilienceProviderBreakerTrigger": "Bağlantı üzrə alternativlər tükəndikdən sonra yaranan yekun ötürmə/server xətaları", + "resilienceProviderBreakerEffect": "Sıfırlama vaxtı bitənədək həmin provayderi müvəqqəti olaraq bloklayır", + "resilienceProviderBreakerDesc": "Kəsicinin cari vəziyyəti yalnız Sağlamlıq səhifəsində göstərilir. Bağlantı səviyyəli 429 tezlik məhdudiyyətləri Bağlantının gözləmə müddətində qalır və provayder kəsicisini işə salmır.", + "resilienceResetTime": "Sıfırlama vaxtı", + "resilienceWaitForCooldownTitle": "Gözləmə müddətinin bitməsini gözlə", + "resilienceWaitForCooldownScope": "Cari müştəri sorğusu", + "resilienceWaitForCooldownTrigger": "Bütün uyğun bağlantılar artıq gözləmə müddətində olduqda", + "resilienceWaitForCooldownEffect": "Serverdə gözləyir və ilk gözləmə müddəti bitdikdə yenidən cəhd edir", + "resilienceWaitForCooldownDesc": "Bu, yalnız cari sorğuya təsir edir. Bağlantı və ya provayder vəziyyətini saxlamır.", + "resilienceEnableServerWait": "Server tərəfində gözləməni aktivləşdir", + "resilienceEnableServerWaitDesc": "Aktiv olduqda, OmniRoute ilk gözləmə müddətinin bitməsini gözləyir və avtomatik olaraq yenidən cəhd edir.", + "resilienceMaxAttempts": "Maksimum cəhd sayı", + "resilienceMaxWaitPerAttempt": "Hər cəhd üçün maksimum gözləmə müddəti", "resilienceComboCooldownWaitTitle": "Quota-share kombo soyuma gözləməsi", "resilienceComboCooldownWaitDesc": "Yalnız quota-share komboları üçün: dərhal 429 qaytarmaq əvəzinə qısa keçici soyuma müddətini gözləyin və yenidən göndərin. Heç vaxt quota_exhausted zamanı gözləmir.", "resilienceComboCooldownWaitToggleDesc": "Yalnız quota-share komboları; heç vaxt quota_exhausted zamanı gözləmir.", @@ -8151,12 +8166,12 @@ "vercelRelayDeploying": "Quraşdırılır...", "vercelRelayDeploy": "Quraşdır", "deployRelayButton": "Relay Quraşdır", - "denoRelayButton": "Deploy Deno Relay", - "denoRelayModalTitle": "Deploy Deno Relay", + "denoRelayButton": "Deno Relay-i yerləşdir", + "denoRelayModalTitle": "Deno Relay-i yerləşdir", "denoRelayWarning": "Xəbərdarlıq: Deno Deploy təşkilat tokeni tələb olunur. Bu token yalnız relay tətbiqini yaratmaq üçün istifadə olunacaq və heç vaxt OmniRoute tərəfindən saxlanılmayacaq.", "denoRelayTokenLabel": "Deno Deploy Təşkilat Tokeni", - "denoRelayOrgDomainLabel": "Organization Domain", - "denoRelayProjectNameLabel": "Deno App Name", + "denoRelayOrgDomainLabel": "Təşkilat domeni", + "denoRelayProjectNameLabel": "Deno tətbiqinin adı", "denoRelayFreeTierNote": "Deno Deploy v2 qlobal edge şəbəkəsində işləyir. Pulsuz paket: ayda 1M sorğu və 100GiB çıxış trafiki, sorğu başına CPU limiti yoxdur, 20-yə qədər aktiv tətbiq və 50 fərdi domen.", "denoRelayDeploying": "Yerləşdirilir...", "denoRelayDeploy": "Yerləşdir", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "Soyuma müddətinin artması dayanmazdan əvvəl maksimum geri çəkilmə addımlarının sayı. Əksər konfiqurasiyalarda ilk olaraq Maksimum Soyuma limitinə çatılır, bu da Maksimum Soyuma artırıldıqda bunu təhlükəsizlik tavanı edir.", "disableSessionStickiness": "Sessiya bağlılığını söndür", "disableSessionStickinessDesc": "Round-robin və təsadüfi kombinasiyalar, bütün söhbəti ilk mesajın heşinə görə bir bağlantıya bağlamaq əvəzinə, hər sorğuda fərqli bir bağlantıya keçid edir. Çoxmərhələli söhbətlər üçün prompt-cache hitlərini qorumaq üçün bunu söndürülmüş saxlayın. Hər kombinasiya üçün üstünlüklər prioritet təşkil edir.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Prompt keşinin lokallığına əsaslanan marşrutlaşdırma", + "promptCacheAffinityDesc": "Sağlamlıq və kvota üzrə alternativə keçidi qorumaqla uyğun prompt keşi açarları üçün eyni provayder hesabına üstünlük verin.", + "reasoningTokenBuffer": "Düşünmə tokeni buferi", + "reasoningTokenBufferDesc": "Tam bufer məlum çıxış limitinə sığdıqda, kombinə edilmiş marşrutlaşdırmaya yalnız məlum əsaslandırma modelləri üçün max_tokens ehtiyatı əlavə etməyə icazə verin.", + "zeroLatencyOptimizations": "Sıfır gecikmə optimallaşdırmaları", + "zeroLatencyOptimizationsDesc": "Hedcinqi, proqnozlaşdırıcı TTFT keçidlərini və proaktiv ehtiyat sorğu sıxılmasını aktivləşdirin. Bu gecikmə funksiyalarının hədəflərlə yarışmasının və ya ehtiyat sorğuları sıxmasının qarşısını almaq üçün deaktiv saxlayın.", "credentialRedaction": "Kimlik məlumatlarının gizlədilməsi", "credentialRedactionDesc": "Provayderlərə göndərilən kontekstdən və cavablardan API açarlarını, tokenləri və gizli məlumatları gizlədin.", "enableCredentialRedaction": "Kimlik məlumatlarının gizlədilməsini aktivləşdirin", "enableCredentialRedactionDesc": "Mesajlardan, alət çağırışlarından və cavablardan API açarlarını, tokenləri, şəxsi açarları və JWT-ləri təmizləyir.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Avtomatik sinxronizasiya deaktivdir", + "pricingAutoSyncEnabled": "Avtomatik sinxronizasiya aktivdir", "modalityBridgeIntro": "Multimodal məzmunu yalnız mətn modellərinə çatmazdan əvvəl mətnə çevirin. Görüntü, Audio və Video körpüləri əlçatandır və konfiqurasiya edilə bilər.", "modalityBridgeVisionTab": "Görmə", "modalityBridgeAudioTab": "Səs", @@ -8309,7 +8324,7 @@ "oneproxyCountry": "Oneproxy Ölkəsi", "oneproxyDelete": "Oneproxy Silin", "oneproxyEmpty": "Oneproxy Boşdur", - "oneproxyHost": "Oneproxy Host", + "oneproxyHost": "Oneproxy hostu", "oneproxyLatency": "Oneproxy Gecikməsi", "oneproxyProtocol": "Oneproxy Protokolu", "oneproxyQuality": "Oneproxy Keyfiyyəti", @@ -8364,60 +8379,52 @@ "cliproxyapiHealth": "Sağlamlıq", "cliproxyapiPort": "Port", "qdrantHost": "Ev sahibi", - "qdrantCollection": "Kolleksiya", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Kolleksiya" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", + "title": "RTK Mühərriki", + "description": "Alət çıxışı, terminal jurnalları və qurma nəticələri üçün əmrləri nəzərə alan sıxılma.", + "enabled": "Aktivdir", + "intensity": "İntensivlik", "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "intensityStandard": "Standart", + "intensityAggressive": "Aqressiv", + "toolResults": "Alət nəticələri", + "assistantMessages": "Assistent mesajları", + "codeBlocks": "Kod blokları", "filterCatalog": "Filtr kataloqu", "filterCatalogDesc": "Kateqoriya üzrə mövcud çıxış filtrləri", "guidedConfig": "Konfiqurasiya", "guidedConfigDesc": "RTK-nın terminal çıxışınızı necə filtrlədiyini tənzimləyin", - "maxLines": "Max lines", - "maxChars": "Max chars", - "deduplicateThreshold": "Deduplicate threshold", - "customFilters": "Custom filters", + "maxLines": "Maksimum sətir sayı", + "maxChars": "Maksimum simvol sayı", + "deduplicateThreshold": "Dublikatların silinməsi həddi", + "customFilters": "Fərdi filtrlər", "detectedType": "Aşkar edilmiş növ", "confidence": "Güvən", "beforeAfter": "Əvvəl / Sonra", - "trustProjectFilters": "Trust project filters", - "rawOutputRetention": "Raw output retention", - "rawOutputNever": "Never", - "rawOutputFailures": "Failures", - "rawOutputAlways": "Always", - "rawOutputMaxBytes": "Raw output max bytes", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "trustProjectFilters": "Layihə filtrlərinə etibar edin", + "rawOutputRetention": "Xam çıxışın saxlanması", + "rawOutputNever": "Heç vaxt", + "rawOutputFailures": "Uğursuzluqlar", + "rawOutputAlways": "Həmişə", + "rawOutputMaxBytes": "Xam çıxışın maksimum bayt sayı", + "filterTesting": "Filtrlərin sınaqdan keçirilməsi", + "pasteOutput": "Filtrləməni sınaqdan keçirmək üçün alət çıxışını yapışdırın...", "presetHigh": "Aqressiv", "presetLow": "İşıq", "presetMaxChars": "Maksimum çıxış simvolları", "presetMaxLines": "Maksimum çıxış xətləri", "presetMedium": "Standart", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "İşə salın", + "result": "Nəticə", + "previewEmpty": "RTK çıxışına önizləmə etmək üçün nümunəni işə salın.", + "detected": "Aşkarlandı", "masterSwitchOffAlert": "Token Saver əsas açarı QAPALIDIR — Endpoint səhifəsindən onu aktivləşdirməyənə qədər bu parametrlər sorğulara təsir etməyəcək.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Filtrlənmiş tokenlər", + "filtersActive": "Aktiv filtrlər", + "requests": "Sorğular", + "avgSavings": "Orta qənaət", "simpleMode": "Sadə", "advancedMode": "Qabaqcıl", "searchFilters": "Axtarış filtrləri...", @@ -8499,7 +8506,7 @@ "description": "Aşkar sətir sayı markerləri olan bircinsli JSON massivlərinin itkisiz cədvəl sıxılması." }, "session-dedup": { - "name": "Session Dedup", + "name": "Sessiya deduplifikasiyası", "description": "Bərpa oluna bilən məzmun markerləri ilə növbələrarası blok deduplikasiyası." }, "ccr": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Sıxılma kombinasiyaları", + "description": "Müxtəlif marşrutlaşdırma ssenariləri üçün mühərriklərin necə birləşdiriləcəyini müəyyənləşdirin.", + "createCombo": "Sıxılma kombinasiyası yaradın", + "editCombo": "Redaktə et", + "deleteCombo": "Sil", + "deleteConfirm": "Bu sıxılma kombinasiyası silinsin?", + "pipeline": "Emal ardıcıllığı", + "addStep": "Addım əlavə et", + "removeStep": "Sil", + "name": "Ad", + "descriptionField": "Təsvir", + "languagePacks": "Dil paketləri", + "outputMode": "Çıxış rejimi", + "assignToRouting": "Marşrutlaşdırma kombinasiyalarına təyin et", + "noAssignments": "Heç bir marşrutlaşdırma kombinasiyası mövcud deyil", + "default": "Defolt", + "setAsDefault": "Defolt olaraq təyin et", + "save": "Yadda saxla", + "cancel": "Ləğv et", + "enabled": "Aktivdir", "loading": "Yüklənir…", "hubTitle": "Sıxılma Mərkəzi", "hubDescription": "Qlobal olaraq hansı sıxılma profilinin işləyəcəyini seçin.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "Hazırda yalnız Claude (Anthropic) üçün əlçatandır. Bu, həvalə edilmiş rejimdir: provayder server tərəfində köhnə alət istifadəsi bloklarını təmizləyir — biz mesajı yenidən yazmırıq. Digər provayderlərə təsir etmir.", "namedCombos": "Adlı kombinasiyalar", "namedCombosDescription": "Müxtəlif konveyerləri yadda saxlayın və onları xüsusi marşrutlaşdırma kombinasiyalarına təyin edin.", + "activeProfileMasterSwitchOffWarning": "Əsas \"Sorğu sıxılması\" keçidi aktiv edilməyənədək aşağıdakı aktiv profil işləməyəcək.", + "activeProfileMasterSwitchOffCta": "Parametrlərdə aktiv edin", "comboNamePlaceholder": "Kombinasiya adı", "descriptionPlaceholder": "Təsvir", "nameRequired": "Yadda saxlamazdan əvvəl kombinasiya adını daxil edin.", @@ -8674,9 +8683,7 @@ "languagePacksList": "Dil paketləri: {packs}", "dragToReorder": "Addımın sırasını dəyişmək üçün sürükləyin", "engine": "Mühərrik", - "intensity": "İntensivlik", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "İntensivlik" }, "compressionStudio": { "noRun": "Heç bir sıxılma icrası mövcud deyil.", @@ -8705,7 +8712,7 @@ "run": "İcra et", "laneRejected": "rədd edildi: {reason}", "error": "xəta", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Birləşdirilmiş emal ardıcıllığına önbaxış uğursuz oldu: {reason}", "combinedFlow": "Kombinə edilmiş axın", "eachLayer": "Hər qat ayrıca", "diff": "Fərq", @@ -8763,7 +8770,7 @@ "why": "Yalnız Fable 5 sıx səhifələri 100% dəqiqliklə oxuyur (ölçülmüş, n=30). GPT-5.5 və Gemini 2.5 Flash bloklanıb." }, "transport": { - "label": "Transport", + "label": "Ötürmə", "pass": "birbaşa Anthropic", "why": "Aqreqatorlar şəkilləri yenidən nümunələyir və oxunaqlılığı pozur — yalnız birbaşa marşrut etibarlıdır." }, @@ -8780,27 +8787,27 @@ }, "enableTitle": "Mühərriki aktivləşdir", "enableDescription": "Yığında ən son işləyir (RTK/Caveman mətni təmizlədikdən sonra OmniGlyph qalan hissəni şəkillərə çevirir) və həmçinin omniglyph rejimi vasitəsilə müstəqil işləyir. Bu, ilkin baxışdır və başdan-başa yoxlama tamamlanana qədər standart olaraq söndürülmüş qalır.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Sıxılma profili", + "profileDescription": "Profil aşağı hədd deyil, yuxarı həddir: daha sərt profil hər addım üzrə ləğvetmə ilə yenidən yumşaldıla bilməz. Bu kod bazasında aparılan ölçmələrə görə, Kodlaşdırma üçün təhlükəsiz və ya Balanslaşdırılmış profil seçildikdə, hələ tarixçə toplamamış sessiyada heç nə sıxılmır, çünki hər ikisi minimum simvol həddini artırır və sistem promptunu, alət sxemlərini və alət nəticələrini orijinal formada saxlayır.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Aqressiv (standart)", + "description": "Dərc edilmiş hesabatlarda ölçülən siyasət. Sistem promptunu, alət sənədlərini və sıx tarixçəni təsvirə çevirir." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Balanslaşdırılmış", + "description": "Aktiv vəziyyəti orijinal formada saxlayır və son 8 gedişi qoruyur; yalnız daha köhnə, bağlanmış tarixçəni yığcamlaşdırır." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Kodlaşdırma üçün təhlükəsiz", + "description": "Səlahiyyət məlumatlarını, alət sxemlərini və aktiv alət çıxışını orijinal formada saxlayaraq son 12 gedişi qoruyur. Sessiya tarixçə toplayana qədər heç nəyi sıxmır." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Dəyişmədən ötürmə", + "description": "Heç bir çevrilmə aparmadan yönləndirir. Mühərrik keçilir və sorğu toxunulmadan ötürülür." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph sıxılma profilini seçin", "saved": "Saxlanıldı.", "saveFailed": "Saxlamaq mümkün olmadı.", "enableAria": "OmniGlyph mühərrikini aktivləşdir", @@ -8902,38 +8909,38 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Qaydalara əsaslanan mesaj sıxılması, dil paketləri, analitika və çıxış rejimi idarəetmələri.", "advancedConfig": "Qabaqcıl Konfiqurasiya", "advancedConfigDesc": "Sıxılma davranışını incə tənzimləyin", "aggressiveSettings": "Aqressiv Parametrlər", "aggressiveSettingsDesc": "Potensial keyfiyyət dəyişikliyi ilə maksimum sıxılma", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Sorğular", + "tokensSaved": "Qənaət edilən tokenlər", + "savingsPercent": "Qənaət %", + "avgLatency": "Orta gecikmə", + "languagePacks": "Dil paketləri", + "languagePacksDesc": "Müəyyən dillər üçün sıxılma qaydalarını aktivləşdirin.", "labelAutoTrigger": "Kontekst aşdıqda avtomatik sıxın", "labelCompressionRate": "Sıxılma gücü", "labelMaxTokens": "Mesaj başına hədəf nişanları", "labelMinLength": "Minimum mesaj uzunluğu", "labelMinSavings": "Saxlamaq üçün minimum nişanlar", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Aktivdir", + "autoDetect": "Dili avtomatik aşkarlayın", + "rulesCount": "{count} qayda", "inputCompressionTitle": "Girişin sıxılması", "inputCompressionDesc": "Söhbət tarixçəsini daha qısa ifadələrlə yenidən yazın. Giriş tokenlərini təxminən 50% azaldır.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Sıxılma analitikası", + "noAnalytics": "Hələ sıxılma analitikası yoxdur.", "masterDisabledWarning": "Token Saver əsas açarı QAPALIDIR — Sıxılma Parametrlərindən onu aktivləşdirənə və ya buradan dəyişdirənə qədər bu parametrlər sorğulara təsir etməyəcək.", "outputMode": "Çıxış rejimi", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Çıxış rejimi", "quickSettings": "Sürətli Parametrlər", "quickSettingsDesc": "Başlamaq üçün əsas sıxılma parametrləri", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", - "bypassConditionsList": "security, irreversible, clarification, order-sensitive", + "autoClarity": "Avtomatik aydınlıq keçidi", + "bypassConditions": "Keçid şərtləri", + "bypassConditionsList": "təhlükəsizlik, geri dönməzlik, aydınlaşdırma, ardıcıllıqdan asılılıq", "simpleMode": "Sadə", "advancedMode": "Qabaqcıl", "tooltipAutoTrigger": "Kontekst bu ölçüsü keçdikdə avtomatik sıxın.", @@ -8944,147 +8951,147 @@ "ultraSettings": "Ultra Parametrlər", "ultraSettingsDesc": "SLM ilə dəstəklənən semantik sıxılma", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Yığcam cavab verin. Texniki terminləri, kodu, xətaları, URL-ləri və identifikatorları qoruyun.", + "full": "Qısa və yığcam cavab verin. Bütün texniki məzmunu qoruyun.", + "ultra": "Ümumi texniki ixtisarlardan istifadə edərək son dərəcə qısa cavab verin. Simvolları olduğu kimi qoruyun." } }, "translator": { - "title": "Translator", - "metaTitle": "Translator Playground | OmniRoute", - "metaDescription": "Debug, test, and visualize API format translations between providers", - "playgroundTitle": "Translator Playground", - "playground": "Playground", - "realtime": "Real-Time Translation Activity", + "title": "Tərcüməçi", + "metaTitle": "Tərcüməçi sınaq meydançası | OmniRoute", + "metaDescription": "Provayderlər arasında API formatı çevirmələrini sazlayın, sınaqdan keçirin və vizuallaşdırın", + "playgroundTitle": "Tərcüməçi sınaq meydançası", + "playground": "Sınaq meydançası", + "realtime": "Real vaxt rejimində tərcümə fəaliyyəti", "chatTester": "Chat Tester", - "testBench": "Test Bench", - "liveMonitor": "Live Monitor", - "modeDescriptionPlayground": "Paste any API request body and see how OmniRoute translates it between provider formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", - "modeDescriptionChatTester": "Send real chat requests through OmniRoute and inspect the full round-trip: input, translated request, provider response, and translated output.", - "modeDescriptionTestBench": "Run predefined scenarios and compare compatibility across providers and models.", - "modeDescriptionLiveMonitor": "Watch translation events in real time as requests flow through OmniRoute.", - "modeDescriptionFallback": "Debug, test, and visualize how OmniRoute translates API requests between providers.", - "recentTranslations": "Recent Translations", - "noTranslations": "No translations yet", - "source": "Source", - "target": "Target", - "time": "Time", + "testBench": "Sınaq stendi", + "liveMonitor": "Canlı Monitorinq", + "modeDescriptionPlayground": "İstənilən API sorğusunun gövdəsini yapışdırın və OmniRoute-un onu provayder formatları arasında necə çevirdiyinə baxın (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", + "modeDescriptionChatTester": "Real çat sorğularını OmniRoute vasitəsilə göndərin və tam gediş-gəlişi yoxlayın: giriş, çevrilmiş sorğu, provayder cavabı və çevrilmiş çıxış.", + "modeDescriptionTestBench": "Əvvəlcədən müəyyən edilmiş ssenariləri işə salın və provayderlər və modellər üzrə uyğunluğu müqayisə edin.", + "modeDescriptionLiveMonitor": "Sorğular OmniRoute-dan keçərkən çevirmə hadisələrini real vaxtda izləyin.", + "modeDescriptionFallback": "OmniRoute-un API sorğularını provayderlər arasında necə çevirdiyini sazlayın, sınaqdan keçirin və vizuallaşdırın.", + "recentTranslations": "Son Çevirmələr", + "noTranslations": "Hələ heç bir çevirmə yoxdur", + "source": "Mənbə", + "target": "Hədəf", + "time": "Vaxt", "model": "Model", "status": "Status", - "latency": "Latency", - "totalTranslations": "Total Translations", - "successful": "Successful", - "errors": "Errors", - "avgLatency": "Avg Latency", + "latency": "Gecikmə", + "totalTranslations": "Ümumi Çevirmələr", + "successful": "Uğurlu", + "errors": "Xətalar", + "avgLatency": "Orta Gecikmə", "millisecondsShort": "{value}ms", "notAvailableSymbol": "—", - "liveAutoRefreshing": "Live — Auto-refreshing", - "paused": "Paused", - "eventsAppearHint": "Translation events appear here as requests flow through OmniRoute. Use any of these methods to generate events:", - "chatTesterTab": "Chat Tester tab", - "testBenchTab": "Test Bench tab", - "externalApiCalls": "External API calls", - "ideCliIntegrations": "IDE/CLI integrations", - "inMemoryNote": "Note: Events are stored in-memory and reset when the server restarts.", + "liveAutoRefreshing": "Canlı — Avtomatik yenilənir", + "paused": "Dayandırılıb", + "eventsAppearHint": "Sorğular OmniRoute-dan keçərkən çevirmə hadisələri burada görünür. Hadisələr yaratmaq üçün bu üsullardan hər hansı birini istifadə edin:", + "chatTesterTab": "Çat Sınaqçısı vərəqi", + "testBenchTab": "Sınaq Stendi vərəqi", + "externalApiCalls": "Xarici API çağırışları", + "ideCliIntegrations": "IDE/CLI inteqrasiyaları", + "inMemoryNote": "Qeyd: Hadisələr yaddaşda saxlanılır və server yenidən başladıldıqda sıfırlanır.", "ok": "OK", - "errorShort": "ERR", - "formatConverter": "Format Converter", - "formatConverterDescription": "Paste or type a JSON request body. The translator will auto-detect the source format and convert it to the target format. Use this to debug how OmniRoute translates requests between formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", - "translationPathHubSpoke": "{source} → OpenAI (intermediate) → {target}", - "translationPathDirect": "{source} → {target} (direct translator)", - "translationPathPassthrough": "Same format — no translation needed", - "openaiIntermediatePanel": "OpenAI Intermediate", - "autoFeaturesTitle": "What OmniRoute does automatically", - "autoFeaturesCount": "8 features", - "featureReasoningCache": "Reasoning Cache", - "featureReasoningCacheDesc": "Re-injects cached reasoning_content for thinking-mode models (DeepSeek V4, Kimi K2, Qwen) when clients omit it from conversation history.", - "featureSchemaCoercion": "Schema Coercion", - "featureSchemaCoercionDesc": "Fixes broken tool schemas: adds missing additionalProperties, sanitizes long descriptions, normalizes nested objects.", - "featureRoleNormalization": "Role Normalization", - "featureRoleNormalizationDesc": "Maps developer→system for non-OpenAI targets. Maps system→user for models that don't support system role.", - "featureToolCallIds": "Tool Call ID Normalization", - "featureToolCallIdsDesc": "Generates unique tool_call IDs when missing. Normalizes to 9-char format for providers like Mistral.", - "featureMissingToolResponse": "Tool Response Injection", - "featureMissingToolResponseDesc": "Injects empty tool_result messages when clients send tool_calls without corresponding responses.", - "featureThinkingBudget": "Thinking Budget", + "errorShort": "XƏTA", + "formatConverter": "Format Çeviricisi", + "formatConverterDescription": "JSON sorğusunun gövdəsini yapışdırın və ya yazın. Çevirici mənbə formatını avtomatik müəyyən edib onu hədəf formata çevirəcək. OmniRoute-un sorğuları formatlar arasında necə çevirdiyini sazlamaq üçün bundan istifadə edin (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", + "translationPathHubSpoke": "{source} → OpenAI (aralıq) → {target}", + "translationPathDirect": "{source} → {target} (birbaşa çevirici)", + "translationPathPassthrough": "Eyni format — çevirməyə ehtiyac yoxdur", + "openaiIntermediatePanel": "OpenAI Aralıq Formatı", + "autoFeaturesTitle": "OmniRoute-un avtomatik etdikləri", + "autoFeaturesCount": "8 funksiya", + "featureReasoningCache": "Məntiqi Düşünmə Keşi", + "featureReasoningCacheDesc": "Müştərilər onu söhbət tarixçəsinə daxil etmədikdə düşünmə rejimli modellər (DeepSeek V4, Kimi K2, Qwen) üçün keşlənmiş reasoning_content məlumatını yenidən əlavə edir.", + "featureSchemaCoercion": "Sxemin Məcburi Uyğunlaşdırılması", + "featureSchemaCoercionDesc": "Pozulmuş alət sxemlərini düzəldir: çatışmayan additionalProperties əlavə edir, uzun təsvirləri təmizləyir, iç-içə obyektləri normallaşdırır.", + "featureRoleNormalization": "Rolun Normallaşdırılması", + "featureRoleNormalizationDesc": "OpenAI olmayan hədəflər üçün developer→system uyğunlaşdırmasını aparır. system rolunu dəstəkləməyən modellər üçün system→user uyğunlaşdırmasını aparır.", + "featureToolCallIds": "Alət Çağırışı ID-sinin Normallaşdırılması", + "featureToolCallIdsDesc": "Çatışmadıqda unikal tool_call ID-ləri yaradır. Mistral kimi provayderlər üçün 9 simvolluq formata normallaşdırır.", + "featureMissingToolResponse": "Alət cavabının əlavə edilməsi", + "featureMissingToolResponseDesc": "Müştərilər uyğun cavablar olmadan tool_calls göndərdikdə boş tool_result mesajları əlavə edir.", + "featureThinkingBudget": "Düşünmə büdcəsi", "featureThinkingBudgetDesc": "Automatically manages thinking config. Removes thinking parameters when the last message is not from the user.", - "featureDirectPaths": "Direct Translation Paths", - "featureDirectPathsDesc": "Some format pairs (Claude→Gemini) have direct translators that bypass the OpenAI hub, producing more accurate output.", - "featureImageMapping": "Image Size Mapping", - "featureImageMappingDesc": "Translates image dimension conventions between API formats (e.g., OpenAI detail levels → Gemini dimensions).", - "input": "Input", - "output": "Output", + "featureDirectPaths": "Birbaşa tərcümə yolları", + "featureDirectPathsDesc": "Bəzi format cütlərinin (Claude→Gemini) OpenAI mərkəzindən yan keçən və daha dəqiq nəticə yaradan birbaşa tərcüməçiləri var.", + "featureImageMapping": "Şəkil ölçüsünün uyğunlaşdırılması", + "featureImageMappingDesc": "API formatları arasında şəkil ölçüsü qaydalarını çevirir (məs., OpenAI detal səviyyələri → Gemini ölçüləri).", + "input": "Giriş", + "output": "Çıxış", "auto": "Auto", - "swapFormats": "Swap formats", - "translateAction": "Translate", - "clear": "Clear", - "inputPlaceholder": "Paste a request body here or select a template below...", - "exampleTemplates": "Example Templates", - "exampleTemplatesHint": "— Click to load", - "templateLoadHint": "Template loads the request in {format} format. Change Source Format to load in a different format.", - "compatibilityTester": "Compatibility Tester", - "compatibilityReport": "Compatibility Report", - "testBenchDescription": "Run predefined scenarios (Simple Chat, Tool Calling, etc.) to verify translation and provider compatibility. Select a source format and target provider, then run all tests to see a compatibility percentage. Use this to find which features work across providers.", - "targetProvider": "Target Provider", - "runAllTests": "Run All Tests", - "runTest": "Run Test", - "reRun": "Re-run", - "running": "Running...", - "passed": "passed", - "failed": "failed", - "passedIconLabel": "✅ Passed", - "chunks": "chunks", - "scenarioSimpleChat": "Simple Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "swapFormats": "Formatların yerini dəyiş", + "translateAction": "Tərcümə et", + "clear": "Təmizlə", + "inputPlaceholder": "Sorğunun gövdəsini buraya yapışdırın və ya aşağıdan bir şablon seçin...", + "exampleTemplates": "Nümunə şablonlar", + "exampleTemplatesHint": "— Yükləmək üçün klikləyin", + "templateLoadHint": "Şablon sorğunu {format} formatında yükləyir. Fərqli formatda yükləmək üçün Mənbə formatını dəyişin.", + "compatibilityTester": "Uyğunluq test aləti", + "compatibilityReport": "Uyğunluq hesabatı", + "testBenchDescription": "Tərcümə və provayder uyğunluğunu yoxlamaq üçün əvvəlcədən təyin edilmiş ssenariləri (Sadə söhbət, Alət çağırışı və s.) işə salın. Mənbə formatını və hədəf provayderi seçin, sonra uyğunluq faizini görmək üçün bütün testləri işə salın. Provayderlər arasında hansı funksiyaların işlədiyini müəyyən etmək üçün bundan istifadə edin.", + "targetProvider": "Hədəf provayder", + "runAllTests": "Bütün testləri işə sal", + "runTest": "Testi işə sal", + "reRun": "Yenidən işə sal", + "running": "İcra olunur...", + "passed": "keçdi", + "failed": "uğursuz oldu", + "passedIconLabel": "✅ Keçdi", + "chunks": "fraqment", + "scenarioSimpleChat": "Sadə söhbət", + "scenarioToolCalling": "Alət çağırışı", + "scenarioMultiTurn": "Çoxmərhələli", "scenarioThinking": "Thinking", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "Sistem təlimatı", + "scenarioStreaming": "Axınlı ötürmə", "templateNames": { - "simple-chat": "Simple Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "Sadə söhbət", + "tool-calling": "Alət çağırışı", + "multi-turn": "Çoxmərhələli", "thinking": "Thinking", - "system-prompt": "System Prompt", - "streaming": "Streaming", + "system-prompt": "Sistem təlimatı", + "streaming": "Axınlı ötürmə", "vision": "Görmə", "schema-coercion": "Sxem məcburiyyəti" }, "templateDescriptions": { - "simple-chat": "Basic text message", - "tool-calling": "Function/tool invocation", - "multi-turn": "Conversation with history", - "thinking": "Extended thinking / reasoning", - "system-prompt": "Complex system instructions", - "streaming": "SSE streaming request", + "simple-chat": "Sadə mətn mesajı", + "tool-calling": "Funksiya/alət çağırışı", + "multi-turn": "Söhbət tarixçəsi olan dialoq", + "thinking": "Genişləndirilmiş düşünmə / əsaslandırma", + "system-prompt": "Mürəkkəb sistem təlimatları", + "streaming": "SSE axın sorğusu", "vision": "Şəkil daxiletməsi ilə multimodal sorğu", "schema-coercion": "Strukturlaşdırılmış çıxış / JSON sxeminin tətbiqi" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful assistant.", - "userGreeting": "Hello! How are you today?" + "system": "Siz faydalı bir köməkçisiniz.", + "userGreeting": "Salam! Bu gün necəsiniz?" }, "toolCalling": { - "userWeather": "What's the weather in São Paulo?", - "toolDescription": "Get current weather for a location", - "cityNameDescription": "City name" + "userWeather": "São Pauloda hava necədir?", + "toolDescription": "Məkan üçün cari hava məlumatını əldə edin", + "cityNameDescription": "Şəhər adı" }, "multiTurn": { - "system": "You are a coding assistant.", - "userInitial": "Write a function to sort an array in Python.", - "assistantExample": "Here's a simple sort function: ```python\ndef sort_array(arr): return sorted(arr)\n```", - "userFollowUp": "Now make it sort in descending order." + "system": "Siz proqramlaşdırma üzrə köməkçisiniz.", + "userInitial": "Python-da massivi çeşidləmək üçün funksiya yazın.", + "assistantExample": "Budur sadə bir çeşidləmə funksiyası: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userFollowUp": "İndi onu azalan sıra ilə çeşidləyin." }, "thinking": { - "question": "What is the sum of the first 100 prime numbers?" + "question": "İlk 100 sadə ədədin cəmi nədir?" }, "systemPrompt": { - "systemInstruction": "You are a senior software engineer specializing in distributed systems. Answer questions concisely using industry best practices. Always provide code examples when relevant. Format your responses using markdown.", - "question": "How do I implement a circuit breaker pattern?" + "systemInstruction": "Siz paylanmış sistemlər üzrə ixtisaslaşmış baş proqram mühəndisisiniz. Suallara sənayenin ən yaxşı təcrübələrindən istifadə edərək qısa cavab verin. Uyğun olduqda həmişə kod nümunələri təqdim edin. Cavablarınızı markdown istifadə edərək formatlayın.", + "question": "Dövrə qırıcı nümunəsini necə tətbiq edə bilərəm?" }, "streaming": { - "prompt": "Tell me a short story about a robot learning to paint." + "prompt": "Rəsm çəkməyi öyrənən robot haqqında qısa hekayə danışın." }, "vision": { "system": "Siz şəkilləri dəqiq təsvir edən köməkçisiniz.", @@ -9097,12 +9104,12 @@ "cityDescription": "Sorğu ediləcək şəhər, məs. \"Tokio\" və ya \"Nyu York\"." } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", - "noTemplateForFormat": "No template for this format", - "translationFailed": "Translation failed: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "openaiCompatibleLabel": "OpenAI ilə uyğun", + "anthropicCompatibleLabel": "Anthropic ilə uyğun", + "noTemplateForFormat": "Bu format üçün şablon yoxdur", + "translationFailed": "Tərcümə uğursuz oldu: {error}", + "pipelineDebugger": "Konveyer sazlayıcısı", + "translationPipeline": "Tərcümə konveyeri", "loading": "Yüklənir…", "compressionOriginal": "Orijinal", "compressionCompressed": "Sıxılmış", @@ -9111,44 +9118,44 @@ "pipelineStepsAria": "Pipeline addımları", "copyIntermediateJson": "Aralıq JSON-u kopyalayın", "copyOutputJson": "Çıxış JSON-unu kopyalayın", - "pipelineVisualization": "Pipeline visualization", - "pipelineVisualizationHint": "Send a message to see how your request flows through detection → translation → provider call.", - "chatTesterDescription": "Send messages as a specific client format and inspect each step of the translation pipeline.", - "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response", - "clickStepToInspect": "Click any step to inspect the data at that stage.", - "clientFormat": "Client Format", - "provider": "Provider", - "modelPlaceholder": "Select or type a model name...", - "sendMessageToSeePipeline": "Send a message to see the translation pipeline", - "chatMessageHintPrefix": "Your message will be formatted as a", - "chatMessageHintSuffix": "request, translated through the pipeline, and sent to the selected provider.", - "youWithFormat": "You ({format})", - "assistant": "Assistant", - "typeMessage": "Type a message...", - "send": "Send", - "clientRequest": "Client Request", - "clientRequestDescription": "The request body as your client would send it", - "formatDetected": "Format Detected", - "formatDetectedDescription": "OmniRoute auto-detects the API format from the request structure", - "openaiIntermediate": "OpenAI Intermediate", - "openaiIntermediateDescription": "All formats are first normalized to OpenAI format (the universal bridge)", - "providerFormat": "Provider Format", - "providerFormatDescription": "OpenAI format is translated to the provider's native format", - "providerResponse": "Provider Response", - "providerResponseRawDescription": "The raw response from the provider API", - "providerResponseSseDescription": "The raw SSE stream from the provider API", - "unexpectedError": "An unexpected error occurred", - "error": "Error", - "errorMessage": "Error: {message}", - "requestFailed": "Request failed", - "noTextExtracted": "(No text extracted)", - "liveMonitorMemoryNote": "Events are stored in memory and lost on restart.", - "liveMonitorMemoryCapNote": "Max 200 events retained.", - "eventSourcesLabel": "Event sources:", - "eventSourceTranslatorPage": "• Translator page (Chat Tester, Test Bench)", - "eventSourceMainPipeline": "• Main request pipeline (CLI/IDE/API traffic)", - "liveMonitorDescriptionPrefix": "Shows translation events as API calls flow through OmniRoute. Events come from the in-memory buffer (resets on restart). Use", - "liveMonitorDescriptionSuffix": ", or external API calls to generate events.", + "pipelineVisualization": "Konveyerin vizuallaşdırılması", + "pipelineVisualizationHint": "Sorğunuzun aşkarlama → tərcümə → provayder çağırışı mərhələlərindən necə keçdiyini görmək üçün mesaj göndərin.", + "chatTesterDescription": "Mesajları müəyyən müştəri formatında göndərin və tərcümə konveyerinin hər bir mərhələsini yoxlayın.", + "chatTesterFlow": "Müştəri sorğusu → Formatın aşkarlanması → OpenAI aralıq formatı → Provayder formatı → Cavab", + "clickStepToInspect": "Həmin mərhələdəki məlumatları yoxlamaq üçün istənilən mərhələyə klikləyin.", + "clientFormat": "Müştəri formatı", + "provider": "Provayder", + "modelPlaceholder": "Model adını seçin və ya daxil edin...", + "sendMessageToSeePipeline": "Tərcümə konveyerini görmək üçün mesaj göndərin", + "chatMessageHintPrefix": "Mesajınız", + "chatMessageHintSuffix": "sorğusu kimi formatlanacaq, konveyer vasitəsilə tərcümə ediləcək və seçilmiş provayderə göndəriləcək.", + "youWithFormat": "Siz ({format})", + "assistant": "Köməkçi", + "typeMessage": "Mesaj yazın...", + "send": "Göndər", + "clientRequest": "Müştəri sorğusu", + "clientRequestDescription": "Müştərinizin göndərəcəyi sorğu gövdəsi", + "formatDetected": "Aşkarlanan format", + "formatDetectedDescription": "OmniRoute sorğunun strukturuna əsasən API formatını avtomatik aşkarlayır", + "openaiIntermediate": "OpenAI aralıq formatı", + "openaiIntermediateDescription": "Bütün formatlar əvvəlcə OpenAI formatına (universal körpüyə) normallaşdırılır", + "providerFormat": "Provayder formatı", + "providerFormatDescription": "OpenAI formatı provayderin yerli formatına çevrilir", + "providerResponse": "Provayder cavabı", + "providerResponseRawDescription": "Provayder API-sindən gələn xam cavab", + "providerResponseSseDescription": "Provayder API-sindən gələn xam SSE axını", + "unexpectedError": "Gözlənilməz xəta baş verdi", + "error": "Xəta", + "errorMessage": "Xəta: {message}", + "requestFailed": "Sorğu uğursuz oldu", + "noTextExtracted": "(Heç bir mətn çıxarılmadı)", + "liveMonitorMemoryNote": "Hadisələr yaddaşda saxlanılır və yenidən başladıldıqda itirilir.", + "liveMonitorMemoryCapNote": "Maksimum 200 hadisə saxlanılır.", + "eventSourcesLabel": "Hadisə mənbələri:", + "eventSourceTranslatorPage": "• Tərcüməçi səhifəsi (Söhbət testeri, Test stendi)", + "eventSourceMainPipeline": "• Əsas sorğu emalı xətti (CLI/IDE/API trafiki)", + "liveMonitorDescriptionPrefix": "API çağırışları OmniRoute-dan keçərkən tərcümə hadisələrini göstərir. Hadisələr yaddaşdakı buferdən gəlir (yenidən başladıldıqda sıfırlanır). Hadisələr yaratmaq üçün istifadə edin", + "liveMonitorDescriptionSuffix": ", və ya xarici API çağırışlarından istifadə edin.", "streamTransformer": "Axın transformatoru", "modeDescriptionStreamTransformer": "Cavablar transformatoru vasitəsilə söhbət tamamlamalarını SSE axınlarını işə salın.", "streamTransformerTitle": "Cavab axını transformatoru", @@ -9157,7 +9164,7 @@ "loadToolSample": "Alət çağırışı nümunəsini yükləyin", "transformToResponses": "Cavablara çevirin", "rawChatSseInput": "Raw chat tamamlayır SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "Çevrilmiş Responses API SSE", "noResultsYet": "Hələ nəticə yoxdur", "transformedEvents": "Dəyişdirilmiş hadisələr", "uniqueEventTypes": "Unikal hadisə növləri", @@ -9170,7 +9177,7 @@ "comboRouted": "Kombo yönləndirildi", "uniqueEndpoints": "Unikal son nöqtələr", "routeDetails": "Marşrut təfərrüatları", - "comboBadge": "Combo", + "comboBadge": "Kombinə edilmiş", "routeEndpointLabel": "Son nöqtə", "routeConnectionLabel": "Əlaqə", "scenarioVision": "Vizyon (şəkil anlayışı)", @@ -9181,12 +9188,12 @@ "conceptHeadline": "Tətbiqiniz bir API-nin \"dilində\" danışır. Tərcüməçi onu başqa provayderdən istifadə etmək üçün çevirir.", "conceptDiagramAppLabel": "Tətbiqiniz", "conceptDiagramSourceLabel": "Mənbə formatı", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (mərkəz)", "conceptDiagramTargetLabel": "Hədəf provayder", "conceptDiagramExampleApp": "məs. Anthropic SDK", "conceptDiagramExampleSource": "claude", "conceptDiagramExampleTarget": "Gemini", - "conceptHowItWorksToggle": "How it works", + "conceptHowItWorksToggle": "İş prinsipi", "conceptHowItWorksBody": "Tətbiqiniz sorğunu öz formatında göndərir. Translator formatı müəyyən edir, onu aralıq qovşaq kimi OpenAI vasitəsilə (və ya birbaşa tərcüməçi mövcud olduqda birbaşa) çevirir, seçilmiş provayderə göndərir və cavabı tətbiqinizin formatına geri çevirərək qaytarır.", "tabTranslate": "Tərcümə", "tabMonitor": "Monitorinq", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "JSON sorğusunu yapışdırın; format avtomatik olaraq aşkar edilir.", "advancedPipelineTitle": "OpenAI aralıq pipeline-ı", "advancedPipelineSubtitle": "Hər bir tərcümə addımını vizuallaşdırın (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Axın çeviricisi (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Chat Completions SSE-ni Responses API-yə çevirir.", "advancedTestBenchTitle": "Test stendi (8 ssenari)", "advancedTestBenchSubtitle": "Bütün ssenariləri işə salır və uğurlu/uğursuz statusunu + uyğunluq %-ni hesabat verir.", @@ -9259,13 +9266,13 @@ "streamTransformFailed": "Axını çevirmək mümkün olmadı" }, "usage": { - "title": "Usage", + "title": "İstifadə", "grokExtraUsageCredits": "Əlavə İstifadə Krediti", "grokAutoTopUp": "Avtomatik Yükləmə", "grokAutoTopUpUnavailable": "Mövcud deyil", "grokAutoTopUpEnabled": "Aktivdir", "grokAutoTopUpDisabled": "Deaktiv edilmiş", - "grokAutoTopUpAt": "at", + "grokAutoTopUpAt": "tarixində", "grokAutoTopUpAdd": "əlavə et", "grokAutoTopUpMax": "maksimum", "grokAutoTopUpMonth": "ay", @@ -9277,66 +9284,66 @@ "kiloPassRemaining": "Qalan", "kiloPassRenews": "{count} gündən sonra yenilənir", "kiloPassUsageLabel": "Bu ayın istifadəsi", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Əlavə istifadə kreditləri", + "kimiExtraUsage": "Əlavə istifadə", + "kimiExtraUsageEnabled": "Aktivdir", + "kimiExtraUsageDisabled": "Deaktivdir", + "kimiExtraUsageFrozen": "Dondurulub", + "kimiExtraUsageUnavailable": "Əlçatan deyil", + "kimiMonthlyUsed": "Bu ay istifadə edilib", + "kimiMonthlyLimit": "Aylıq limit", + "kimiMonthlyLimitUnlimited": "Limitsiz", + "kimiAdditionalCredits": "Əlavə kreditlər", + "loggerTab": "Jurnal", "proxyTab": "Proxy", - "budgetManagement": "Budget Management", - "budgetSaved": "Budget limits saved", - "budgetSaveFailed": "Failed to save budget", - "loadingBudgetData": "Loading budget data...", - "noApiKeysTitle": "No API Keys", - "noApiKeysDescription": "Add API keys first to set up budget limits.", - "apiKey": "API Key", - "todaysSpend": "Today's Spend", - "thisMonth": "This Month", - "setLimits": "Set Limits", - "dailyLimitUsd": "Daily Limit (USD)", - "monthlyLimitUsd": "Monthly Limit (USD)", - "warningThresholdPercent": "Warning Threshold (%)", - "dailyLimitPlaceholder": "e.g. 5.00", - "monthlyLimitPlaceholder": "e.g. 50.00", + "budgetManagement": "Büdcənin idarə edilməsi", + "budgetSaved": "Büdcə limitləri yadda saxlanıldı", + "budgetSaveFailed": "Büdcəni yadda saxlamaq alınmadı", + "loadingBudgetData": "Büdcə məlumatları yüklənir...", + "noApiKeysTitle": "API açarı yoxdur", + "noApiKeysDescription": "Büdcə limitlərini təyin etmək üçün əvvəlcə API açarları əlavə edin.", + "apiKey": "API açarı", + "todaysSpend": "Bugünkü xərc", + "thisMonth": "Bu ay", + "setLimits": "Limitləri təyin edin", + "dailyLimitUsd": "Gündəlik limit (USD)", + "monthlyLimitUsd": "Aylıq limit (USD)", + "warningThresholdPercent": "Xəbərdarlıq həddi (%)", + "dailyLimitPlaceholder": "məs. 5.00", + "monthlyLimitPlaceholder": "məs. 50.00", "warningThresholdPlaceholder": "80", - "saveLimits": "Save Limits", - "budgetOk": "Budget OK — {remaining} remaining", - "budgetExceeded": "Budget exceeded — requests may be blocked", + "saveLimits": "Limitləri yadda saxlayın", + "budgetOk": "Büdcə qaydasındadır — {remaining} qalıb", + "budgetExceeded": "Büdcə aşılıb — sorğular bloklana bilər", "totalRequests": "Total requests", - "noDataYet": "No data yet", - "latency": "Latency", + "noDataYet": "Hələ məlumat yoxdur", + "latency": "Gecikmə", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", - "systemHealth": "System Health", - "entries": "Entries", - "activeCount": "{count} active", - "openCircuitBreakersDetected": "Open circuit breakers detected", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "circuitBreakers": "Circuit Breakers", - "lockedIPs": "Locked IPs", - "lockoutsAutoRefreshHint": "Per-model rate limit locks • Auto-refresh 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", - "timeLeft": "{time} left", - "howItWorks": "How It Works", - "howItWorksSubtitle": "Learn how evaluations validate your LLM responses", - "define": "Define", - "defineStepDescription": "Create test cases with input prompts and expected output criteria using strategies like contains, regex, or exact match.", - "run": "Run", - "runStepDescription": "Execute test cases against your LLM endpoints through OmniRoute. Each case is sent as a real API request.", - "evaluate": "Evaluate", - "evaluateStepDescription": "Responses are compared against expected criteria. See pass/fail for each case with latency metrics and detailed feedback.", + "promptCache": "Prompt keşi", + "systemHealth": "Sistem vəziyyəti", + "entries": "Qeydlər", + "activeCount": "{count} aktiv", + "openCircuitBreakersDetected": "Açıq dövrə kəsiciləri aşkarlandı", + "hitRate": "Uyğunluq faizi", + "hitsMisses": "Uyğunluqlar / Uyğunsuzluqlar", + "circuitBreakers": "Dövrə kəsiciləri", + "lockedIPs": "Bloklanmış IP-lər", + "lockoutsAutoRefreshHint": "Model üzrə sürət limiti kilidləri • Avtomatik yenilənmə: 10 san.", + "lockedCount": "{count, plural, one {# kilidlənib} other {# kilidlənib}}", + "timeLeft": "{time} qalıb", + "howItWorks": "Necə işləyir", + "howItWorksSubtitle": "Qiymətləndirmələrin LLM cavablarınızı necə yoxladığını öyrənin", + "define": "Müəyyən edin", + "defineStepDescription": "«Daxildir», müntəzəm ifadə və ya dəqiq uyğunluq kimi strategiyalardan istifadə edərək giriş promptları və gözlənilən çıxış meyarları ilə test nümunələri yaradın.", + "run": "İşə sal", + "runStepDescription": "OmniRoute vasitəsilə test ssenarilərini LLM son nöqtələrinizdə icra edin. Hər bir ssenari real API sorğusu kimi göndərilir.", + "evaluate": "Qiymətləndir", + "evaluateStepDescription": "Cavablar gözlənilən meyarlarla müqayisə edilir. Gecikmə göstəriciləri və ətraflı rəylə birlikdə hər bir ssenarinin uğurlu/uğursuz nəticəsini görün.", "evalsStrategyContainsLabel": "İçərir", "evalsStrategyExactLabel": "Dəqiq uyğunluq", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Müntəzəm ifadə", "evalsStrategyCustomLabel": "Fərdi məntiq", "evalsStrategyContainsDescription": "LLM çıxışının gözlənilən alt-satri ehtiva edib-etmədiyini yoxlayır.", "evalsStrategyExactDescription": "LLM çıxışının gözlənilən dəyərlə dəqiq uyğun gəlib-gəlmədiyini yoxlayır.", @@ -9347,126 +9354,126 @@ "historyColumnPassRate": "Keçid dərəcəsi", "historyColumnAvgLatencyMs": "Ortalama gecikmə", "historyColumnCreatedAt": "İcra edildi", - "evalSuites": "Evaluation Suites", - "evalSuitesHint": "Click a suite to view test cases, then run to evaluate your LLM endpoints", - "evalsLoading": "Loading eval suites...", - "noEvalSuitesFound": "No Eval Suites Found", - "noEvalSuitesDescription": "Eval suites can be defined via the API or in code. They test model outputs against expected results using strategies like contains, regex, exact match, and custom functions.", - "columnCase": "Case", + "evalSuites": "Qiymətləndirmə dəstləri", + "evalSuitesHint": "Test ssenarilərinə baxmaq üçün dəstə klikləyin, sonra LLM son nöqtələrinizi qiymətləndirmək üçün işə salın", + "evalsLoading": "Qiymətləndirmə dəstləri yüklənir...", + "noEvalSuitesFound": "Qiymətləndirmə dəsti tapılmadı", + "noEvalSuitesDescription": "Qiymətləndirmə dəstləri API vasitəsilə və ya kodda müəyyən edilə bilər. Onlar model nəticələrini «ehtiva edir», müntəzəm ifadə, dəqiq uyğunluq və fərdi funksiyalar kimi strategiyalardan istifadə etməklə gözlənilən nəticələrə qarşı yoxlayır.", + "columnCase": "Ssenari", "columnStatus": "Status", - "columnLatency": "Latency", - "columnDetails": "Details", + "columnLatency": "Gecikmə", + "columnDetails": "Təfərrüatlar", "columnModel": "Model", - "columnStrategy": "Strategy", - "columnExpected": "Expected", - "statsSuites": "Suites", - "statsTestCases": "Test Cases", - "statsModels": "Models", - "statsCoverage": "Coverage", - "statsStrategiesCount": "{count} strategies", - "evaluationStrategies": "Evaluation Strategies", - "modelsUnderTest": "Models Under Test", - "searchSuitesPlaceholder": "Search suites...", + "columnStrategy": "Strategiya", + "columnExpected": "Gözlənilən", + "statsSuites": "Dəstlər", + "statsTestCases": "Test ssenariləri", + "statsModels": "Modellər", + "statsCoverage": "Əhatə dairəsi", + "statsStrategiesCount": "{count} strategiya", + "evaluationStrategies": "Qiymətləndirmə strategiyaları", + "modelsUnderTest": "Sınaqdan keçirilən modellər", + "searchSuitesPlaceholder": "Dəstlərdə axtarın...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", - "runEval": "Run Eval", - "runAllSuites": "Run All", - "runAllRunning": "Running all...", - "runAllProgress": "Running {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", - "runAllCompleted": "Ran {suites} suites — {passed} passed, {failed} failed", - "runAllCompletedWithFailures": "Ran {completed} suites; {failedSuites} failed to complete", - "runningProgress": "Running {current}/{total}...", - "passRate": "pass rate", - "summaryBreakdown": "{passed} passed · {failed} failed · {total} total", - "passedIconLabel": "✅ Passed", - "failedIconLabel": "❌ Failed", - "resultPassed": "Passed", - "resultFailed": "Failed", - "expandResult": "Expand result details", - "collapseResult": "Collapse result details", - "detailsContains": "Contains: \"{term}\"", + "casesCount": "{count, plural, one {# ssenari} other {# ssenari}}", + "runEval": "Qiymətləndirməni işə sal", + "runAllSuites": "Hamısını işə sal", + "runAllRunning": "Hamısı işə salınır...", + "runAllProgress": "İcra olunur {current}/{total}: {name}", + "runAllFailedSuites": "{count, plural, one {# dəst uğursuz oldu} other {# dəst uğursuz oldu}}", + "runAllCompleted": "{suites} dəst icra edildi — {passed} uğurlu, {failed} uğursuz", + "runAllCompletedWithFailures": "{completed} dəst icra edildi; {failedSuites} dəstin icrası tamamlanmadı", + "runningProgress": "İcra olunur {current}/{total}...", + "passRate": "uğur faizi", + "summaryBreakdown": "{passed} uğurlu · {failed} uğursuz · cəmi {total}", + "passedIconLabel": "✅ Uğurlu", + "failedIconLabel": "❌ Uğursuz", + "resultPassed": "Uğurlu", + "resultFailed": "Uğursuz", + "expandResult": "Nəticə təfərrüatlarını genişləndir", + "collapseResult": "Nəticə təfərrüatlarını yığcamlaşdır", + "detailsContains": "Tərkibində var: \"{term}\"", "detailsRegex": "Regex: {pattern}", - "detailsExpected": "Expected: \"{expected}\"", - "expectedOutputLabel": "Expected Output", - "noResultsYet": "No results yet", - "testCasesCount": "Test Cases ({count})", - "noTestCasesDefined": "No test cases defined", - "runEvalHint": "Click \"Run Eval\" to execute all cases against your LLM endpoint. Each test sends a real request through OmniRoute.", - "notifyNoTestCases": "No test cases defined for this suite", - "notifyAllCasesPassed": "All {total} cases passed ✅", - "notifySomeCasesFailed": "{passed}/{total} passed, {failed} failed", - "notifyEvalRunFailed": "Eval run failed", - "notifyEvalTitle": "Eval: {name}", - "modelEvals": "Model Evaluations", - "evalsHeroDescription": "Test and validate your LLM endpoints by running predefined evaluation suites. Each suite contains test cases that send real prompts through OmniRoute and compare responses against expected criteria — helping you detect regressions, compare models, and ensure response quality across providers.", - "qualityValidation": "Quality Validation", - "modelComparison": "Model Comparison", - "regressionDetection": "Regression Detection", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", - "noLockouts": "No models currently locked", - "activeSessions": "Active Sessions", - "noSessions": "No active sessions", - "sessionsHint": "Sessions appear as requests flow through the proxy", - "sessionsTrackedHint": "Tracked via request fingerprinting • Auto-refresh 5s", - "session": "Session", - "age": "Age", - "requests": "Requests", - "connection": "Connection", + "detailsExpected": "Gözlənilən: \"{expected}\"", + "expectedOutputLabel": "Gözlənilən çıxış", + "noResultsYet": "Hələ nəticə yoxdur", + "testCasesCount": "Test halları ({count})", + "noTestCasesDefined": "Heç bir test halı müəyyən edilməyib", + "runEvalHint": "Bütün halları LLM son nöqtənizdə icra etmək üçün \"Qiymətləndirməni işə sal\" düyməsinə klikləyin. Hər test OmniRoute vasitəsilə real sorğu göndərir.", + "notifyNoTestCases": "Bu dəst üçün heç bir test halı müəyyən edilməyib", + "notifyAllCasesPassed": "Bütün {total} hal uğurla keçdi ✅", + "notifySomeCasesFailed": "{passed}/{total} keçdi, {failed} uğursuz oldu", + "notifyEvalRunFailed": "Qiymətləndirmə uğursuz oldu", + "notifyEvalTitle": "Qiymətləndirmə: {name}", + "modelEvals": "Model qiymətləndirmələri", + "evalsHeroDescription": "Əvvəlcədən müəyyən edilmiş qiymətləndirmə dəstlərini işə salaraq LLM son nöqtələrinizi test və təsdiq edin. Hər dəstdə OmniRoute vasitəsilə real sorğular göndərən və cavabları gözlənilən meyarlarla müqayisə edən test halları var — bu, reqressiyaları aşkarlamağa, modelləri müqayisə etməyə və provayderlər üzrə cavab keyfiyyətini təmin etməyə kömək edir.", + "qualityValidation": "Keyfiyyətin yoxlanılması", + "modelComparison": "Modellərin müqayisəsi", + "regressionDetection": "Reqressiyanın aşkarlanması", + "latencyBenchmarks": "Gecikmə göstəriciləri", + "modelLockouts": "Model bloklamaları", + "noLockouts": "Hazırda bloklanmış model yoxdur", + "activeSessions": "Aktiv sessiyalar", + "noSessions": "Aktiv sessiya yoxdur", + "sessionsHint": "Sorğular proksi vasitəsilə keçdikcə sessiyalar burada görünür", + "sessionsTrackedHint": "Sorğu barmaq izi ilə izlənilir • Hər 5 saniyədən bir avtomatik yenilənir", + "session": "Sessiya", + "age": "Müddət", + "requests": "Sorğular", + "connection": "Bağlantı", "durationMillisecondsShort": "{value}ms", "durationSecondsShort": "{value}s", "durationMinutesShort": "{value}m", "durationHoursShort": "{value}h", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "Provider Limits", - "noProviders": "No Providers Connected", - "connectProvidersForQuota": "Connect to providers with OAuth to track your API quota limits and usage.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", - "filteredFromCount": "(filtered from {count})", - "autoRefresh": "Auto-refresh", - "refreshAll": "Refresh All", - "loadingQuotas": "Loading...", + "providerLimits": "Provayder limitləri", + "noProviders": "Heç bir provayder qoşulmayıb", + "connectProvidersForQuota": "API kvota limitlərinizi və istifadənizi izləmək üçün OAuth vasitəsilə provayderlərə qoşulun.", + "accountsCount": "{count, plural, one {# hesab} other {# hesab}}", + "filteredFromCount": "({count} nəticədən filtrlənib)", + "autoRefresh": "Avtomatik yeniləmə", + "refreshAll": "Hamısını yenilə", + "loadingQuotas": "Yüklənir...", "showMoreQuotas": "Daha {count} göstər", "showLessQuotas": "Daha az göstər", "hideQuotaRow": "Bu kvota sətrini gizlət", "showQuotaRow": "Bu kvota sətrini göstər", "hiddenQuotaRowsLabel": "Gizlədilib:", "quotaVisibilityUpdateFailed": "Kvota görünürlüyünü yeniləmək mümkün olmadı", - "account": "Account", - "modelQuotas": "Model Quotas", - "lastUsed": "Last Refreshed", - "actions": "Actions", - "refreshQuota": "Refresh quota", - "today": "Today", - "tomorrow": "Tomorrow", + "account": "Hesab", + "modelQuotas": "Model kvotaları", + "lastUsed": "Son yenilənmə", + "actions": "Əməliyyatlar", + "refreshQuota": "Kvotanı yenilə", + "today": "Bu gün", + "tomorrow": "Sabah", "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "inDuration": "{duration} sonra", "notApplicable": "N/A", - "rawPlanWithValue": "Raw plan: {plan}", - "noPlanFromProvider": "No plan from provider", + "rawPlanWithValue": "Xam plan: {plan}", + "noPlanFromProvider": "Provayderdən plan yoxdur", "tokenExpiresIn": "Tokenin vaxtı {time} sonra bitir", "tokenExpired": "Tokenin istifadə müddəti bitib", - "noQuotaData": "No quota data", + "noQuotaData": "Kvota məlumatı yoxdur", "cardExpand": "Genişləndir", "cardCollapse": "Yığcamlaşdır", "moreQuotas": "+{count} daha çox", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", - "noQuotaDataAvailable": "No quota data available", - "noAccountsForTierFilter": "No accounts found for tier filter", - "tierAll": "All", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "ungrouped": "Qruplaşdırılmamış", + "viewFlat": "Düz", + "viewByEnvironment": "Mühitə görə", + "noQuotaDataAvailable": "Kvota məlumatı mövcud deyil", + "noAccountsForTierFilter": "Tarif filtri üçün hesab tapılmadı", + "tierAll": "Hamısı", + "tierEnterprise": "Korporativ", + "tierTeam": "Komanda", + "tierBusiness": "Biznes", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", - "tierLite": "Lite", - "tierUnknown": "Unknown", + "tierFree": "Pulsuz", + "tierLite": "Yüngül", + "tierUnknown": "Naməlum", "statTotal": "Ümumi", "statCritical": "Kritik", "statAlert": "Xəbərdarlıq", @@ -9475,7 +9482,7 @@ "filterTierLabel": "Səviyyə", "purchaseAll": "Hamısı", "purchaseOauthSub": "Abunəlik", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "OAuth Pulsuz", "purchaseApiKey": "API açarı", "creditsLabel": "Kreditlər", "creditBalanceHint": "Qalıq balans", @@ -9504,117 +9511,117 @@ "confirmRedeemResetCreditButton": "Krediti istifadə et", "resetCreditRedeemed": "Sıfırlama istifadə edildi", "resetCreditRedeemFailed": "Sıfırlama kreditini istifadə etmək mümkün olmadı", - "suiteBuilderSaveFailed": "Failed to save suite", - "clone": "Clone", - "exportSuite": "Export", - "importSuite": "Import", - "suiteExported": "Suite exported", - "suiteExportFailed": "Failed to export suite", - "suiteImportReady": "Suite import loaded for review", - "suiteImportFailed": "Failed to import suite", - "suiteImportInvalid": "Invalid eval suite JSON", - "suiteBuilderCloneSuffix": "copy", - "suiteBuilderImportedSuite": "Imported Suite", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", + "suiteBuilderSaveFailed": "Dəsti saxlamaq mümkün olmadı", + "clone": "Klonla", + "exportSuite": "İxrac et", + "importSuite": "İdxal et", + "suiteExported": "Dəst ixrac edildi", + "suiteExportFailed": "Dəsti ixrac etmək mümkün olmadı", + "suiteImportReady": "Dəstin idxalı nəzərdən keçirmək üçün yükləndi", + "suiteImportFailed": "Dəsti idxal etmək mümkün olmadı", + "suiteImportInvalid": "Qiymətləndirmə dəstinin JSON-u etibarsızdır", + "suiteBuilderCloneSuffix": "nüsxə", + "suiteBuilderImportedSuite": "İdxal edilmiş dəst", + "scorecardTitle": "Qiymətləndirmə cədvəli", + "evalApiKey": "API Açarı", + "scorecardPassRate": "Keçid faizi", "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", - "suiteBuilderCaseExpectedPlaceholderContains": "e.g. def fibonacci", - "suiteBuilderCaseExpectedPlaceholderExact": "Paste the exact expected response", - "suiteBuilderCaseExpectedPlaceholderRegex": "e.g. ^\\\\s*\\\\{.*\\\\}\\\\s*$", - "suiteBuilderCaseExpectedHintRegex": "Use a JavaScript regular expression without wrapping slashes.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", - "suiteBuilderDuplicateCase": "Duplicate", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "actualOutputLabel": "Faktiki çıxış", + "evalTargetHint": "Qiymətləndirmək üçün model və ya kombinasiya seçin.", + "suiteBuilderDeleted": "Dəst uğurla silindi", + "suiteBuilderCaseCardHint": "Giriş sorğusunu və gözlənilən çıxış meyarlarını müəyyənləşdirin.", + "nextResetUtc": "Növbəti sıfırlanma (UTC)", + "scorecardHint": "Bütün qiymətləndirmə paketləri üzrə ümumiləşdirilmiş keçid faizləri.", + "suiteLatestRunsHint": "Bu paket üçün ən son qiymətləndirmə icraları.", + "saving": "Yadda saxlanılır", + "suiteBuilderCaseModelLabel": "Model (istəyə bağlı)", + "evalControlsTitle": "Qiymətləndirmə idarəetmələri", + "suiteBuilderEditTitle": "Qiymətləndirmə paketini redaktə et", + "suiteBuilderCaseStrategyLabel": "Doğrulama strategiyası", + "notifySelectDifferentCompareTarget": "Müqayisə üçün fərqli bir hədəf seçin", + "recentRunsHint": "Ən son qiymətləndirmə icraları göstərilir. Ətraflı nəticələrə baxmaq üçün icraya klikləyin.", + "evalCompareHint": "Nəticələri istəyə bağlı olaraq ikinci hədəflə müqayisə edin.", + "suiteBuilderCaseInvalid": "Bu nümunədə doğrulama xətaları var. Yadda saxlamazdan əvvəl onları düzəldin.", + "historyEmpty": "Hələ qiymətləndirmə tarixçəsi yoxdur", + "suiteBuilderUpdated": "Paket uğurla yeniləndi", + "resetInterval": "Sıfırlama intervalı", + "suiteBuilderCreateTitle": "Qiymətləndirmə paketi yarat", + "activePeriodSpend": "Aktiv dövr üzrə xərc", + "evalApiKeyHint": "Qiymətləndirmə sorğuları üçün istifadə ediləcək API açarını seçin.", + "evalCompareOptional": "Müqayisə et (istəyə bağlı)", + "suiteBuilderDeleteFailed": "Paketi silmək alınmadı", + "suiteBuilderCaseSystemPromptPlaceholder": "İstəyə bağlı sistem təlimatları...", + "scorecardCases": "Nümunələr", + "runCompletedWithScore": "Qiymətləndirmə tamamlandı — keçid faizi: {score}%", + "suiteBuilderCustomBadge": "Fərdi", + "targetSuiteDefaults": "Paketin standart parametrləri", + "suiteBuilderDeleteConfirm": "Bu paketi silmək istədiyinizə əminsiniz? Bu əməliyyatı geri qaytarmaq mümkün deyil.", + "suiteBuilderNameLabel": "Paketin adı", + "scorecardSuites": "Paketlər", + "evalCompareTarget": "Müqayisə hədəfi", + "suiteBuilderCaseModelPlaceholder": "məs., gpt-4o-mini", + "evalControlsHint": "Qiymətləndirmə hədəfinizi və API açarınızı konfiqurasiya edin, sonra modelin keyfiyyətini yoxlamaq üçün paketləri işə salın.", + "recentRunsTitle": "Son icralar", + "suiteBuilderCaseSystemPromptLabel": "Sistem promptu", + "suiteBuilderCaseExpectedPlaceholder": "məs., def fibonacci", + "suiteBuilderCaseExpectedPlaceholderContains": "məs., def fibonacci", + "suiteBuilderCaseExpectedPlaceholderExact": "Gözlənilən dəqiq cavabı daxil edin", + "suiteBuilderCaseExpectedPlaceholderRegex": "məs., ^\\\\s*\\\\{.*\\\\}\\\\s*$", + "suiteBuilderCaseExpectedHintRegex": "Əhatə edən əyri xətlər olmadan JavaScript müntəzəm ifadəsindən istifadə edin.", + "suiteBuilderNamePlaceholder": "məs., Kodlaşdırma keyfiyyəti paketi", + "suiteBuilderAddCase": "Nümunə əlavə et", + "cancel": "Ləğv et", + "evalTarget": "Hədəf", + "suiteBuilderCaseNameLabel": "Ssenari adı", + "weeklyLimitUsd": "Həftəlik limit (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "məs., Python-da fibonacci funksiyası yazın", + "suiteBuilderNameRequired": "Dəst adı tələb olunur", + "suiteBuilderCaseUserPromptLabel": "İstifadəçi sorğusu", + "daily": "Gündəlik", + "resultErrorLabel": "Xəta", + "suiteBuilderBuiltInBadge": "Daxili", + "suiteBuilderCaseCardTitle": "Test ssenarisi", + "suiteBuilderDuplicateCase": "Dublikat yarat", + "weeklyLimitPlaceholder": "məs., 50.00", + "suiteBuilderCaseTagsHint": "Test ssenarilərini təşkil etmək üçün vergüllə ayrılmış teqlər.", + "notifyEvalRunFailedWithReason": "Qiymətləndirmə uğursuz oldu: {reason}", + "weekly": "Həftəlik", + "runEvalRunning": "Qiymətləndirmə aparılır...", + "delete": "Sil", + "resetTimeUtc": "Sıfırlanma vaxtı (UTC)", + "evalApiKeyAuto": "Avtomatik (standartı istifadə et)", + "suiteBuilderDescriptionPlaceholder": "Bu dəstin nəyi test etdiyinə dair istəyə bağlı təsvir...", + "targetComparisonTitle": "Hədəflərin müqayisəsi", + "save": "Yadda saxla", + "suiteBuilderCreated": "Dəst uğurla yaradıldı", + "suiteLatestRuns": "Son icralar", + "suiteBuilderCaseExpectedLabel": "Gözlənilən dəyər", + "historyLatency": "Gecikmə", + "suiteBuilderCaseTagsPlaceholder": "məs., kodlaşdırma, python", + "targetTypeCombo": "Kombinə edilmiş", + "scorecardPassed": "Keçdi", + "suiteBuilderCaseTagsLabel": "Teqlər", + "suiteBuilderNewSuite": "Yeni dəst", + "notifyEvalLoadFailed": "Qiymətləndirmə məlumatlarını yükləmək alınmadı", + "notConfigured": "Konfiqurasiya edilməyib", + "suiteBuilderCaseNamePlaceholder": "məs., Python fibonacci testi", + "intervalLabel": "İnterval", + "suiteBuilderCreateAction": "Dəst yarat", + "suiteBuilderCasesHint": "Hər ssenari bir sorğu göndərir və cavabı yoxlayır.", + "suiteBuilderUpdatedAt": "Yeniləndi", + "errorBadge": "Xəta", + "suiteBuilderCasesTitle": "Test halları", + "edit": "Redaktə et", + "monthly": "Aylıq", + "suiteBuilderCasesRequired": "Ən azı bir test halı tələb olunur", + "weeklyLimitSummary": "Həftəlik büdcə limitinin xülasəsi", + "suiteBuilderDescriptionLabel": "Təsvir", + "targetComparisonHint": "Hədəflər üzrə qiymətləndirmə nəticələrinin yan-yana müqayisəsi.", + "compareCompletedWithScore": "Müqayisə tamamlandı — keçid faizi {score}%", + "staleQuotaTooltip": "Son yeniləmə uğursuz oldu — keşlənmiş məlumatlar göstərilir", "quotaThresholdLabel": "Cutoff", "quotaCutoffsColumnHelp": "Stop using this account when any window's remaining quota drops to its cutoff. Numbers match the dashboard bars (remaining %).", - "quotaCutoffsButtonDefault": "Default", + "quotaCutoffsButtonDefault": "Defolt", "quotaCutoffsButtonHelp": "Click to set per-window cutoffs for this account (in remaining %).", "quotaCutoffsButtonDisabled": "Quota data hasn't loaded yet — refresh this row to enable cutoffs.", "deactivateAccount": "Hesabı deaktiv et (yönləndirməni dayandır)", @@ -9625,7 +9632,7 @@ "quotaCutoffsTitle": "Quota cutoffs — {name} ({provider})", "quotaCutoffsExplainer": "Stop using this account when any window's REMAINING quota drops to the value below — same units as the dashboard bars. Empty inherits the resilience-settings default.", "quotaCutoffsDefaultHint": "Default: stop at {default}% remaining", - "quotaCutoffsResetAll": "Reset all", + "quotaCutoffsResetAll": "Hamısını sıfırla", "quotaCutoffsNoWindows": "This provider has no registered quota windows.", "quotaThresholdInvalid": "Enter an integer 0–100, or leave blank to inherit the default.", "budgetKpiToday": "Bu gün", @@ -9650,8 +9657,8 @@ "budgetTemplateApplied": "\"{template}\" {count, plural, one {# açara} other {# açara}} tətbiq edildi", "budgetTemplateApplyFailed": "Şablonu tətbiq etmək mümkün olmadı", "budgetTemplateNames": { - "tpl-prod": "Production", - "tpl-dev": "Development", + "tpl-prod": "İstehsal", + "tpl-dev": "İnkişaf", "tpl-ci": "CI" }, "budgetStatus": { @@ -9704,70 +9711,70 @@ "providerQuotaHomeHint": "Qoşulmuş hesablar üzrə canlı status" }, "modals": { - "waitingAuth": "Waiting for Authorization", - "verificationUrl": "Verification URL", - "yourCode": "Your Code", - "remoteAccess": "Remote access:", - "connectedSuccess": "Connected Successfully!", - "connectionFailed": "Connection Failed", - "chooseAuthMethod": "Choose your authentication method:", + "waitingAuth": "Avtorizasiya gözlənilir", + "verificationUrl": "Doğrulama URL-i", + "yourCode": "Kodunuz", + "remoteAccess": "Uzaqdan giriş:", + "connectedSuccess": "Uğurla qoşuldu!", + "connectionFailed": "Qoşulma uğursuz oldu", + "chooseAuthMethod": "Autentifikasiya üsulunuzu seçin:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", - "importToken": "Import Token", - "pasteToken": "Paste refresh token from Kiro IDE.", + "googleAccount": "Google Hesabı", + "githubAccount": "GitHub Hesabı", + "importToken": "Tokeni idxal et", + "pasteToken": "Kiro IDE-dən yeniləmə tokenini yapışdırın.", "awsRegion": "AWS Region", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCache": "Reading from AWS SSO cache", - "readingFromCursor": "Reading from Cursor IDE database", - "initializing": "Initializing...", - "pricingConfig": "Pricing Configuration", - "loadingPricing": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "noPricingData": "No pricing data available", - "noModelsFound": "No models found" + "autoDetecting": "Tokenlər avtomatik aşkarlanır...", + "readingFromCache": "AWS SSO keşindən oxunur", + "readingFromCursor": "Cursor IDE verilənlər bazasından oxunur", + "initializing": "Başladılır...", + "pricingConfig": "Qiymət konfiqurasiyası", + "loadingPricing": "Qiymət məlumatları yüklənir...", + "pricingRatesFormat": "Qiymət tariflərinin formatı", + "noPricingData": "Qiymət məlumatı mövcud deyil", + "noModelsFound": "Heç bir model tapılmadı" }, "loggers": { - "allProviders": "All Providers", - "allModels": "All Models", - "allAccounts": "All Accounts", - "allApiKeys": "All API Keys", - "allTypes": "All Types", - "allLevels": "All Levels", + "allProviders": "Bütün Provayderlər", + "allModels": "Bütün Modellər", + "allAccounts": "Bütün Hesablar", + "allApiKeys": "Bütün API Açarları", + "allTypes": "Bütün Növlər", + "allLevels": "Bütün səviyyələr", "modelAZ": "Model A-Z", "modelZA": "Model Z-A", - "loadingLogs": "Loading logs...", - "loadingProxyLogs": "Loading proxy logs...", - "noLogEntries": "No log entries found", - "noPayloadData": "No payload data available for this log entry.", - "proxyEvent": "Proxy Event", + "loadingLogs": "Jurnallar yüklənir...", + "loadingProxyLogs": "Proksi jurnalları yüklənir...", + "noLogEntries": "Heç bir jurnal qeydi tapılmadı", + "noPayloadData": "Bu jurnal qeydi üçün heç bir faydalı yük məlumatı mövcud deyil.", + "proxyEvent": "Proksi hadisəsi", "proxy": "Proxy", - "level": "Level", - "directNative": "Direct (native)", - "combo": "Combo", + "level": "Səviyyə", + "directNative": "Birbaşa (yerli)", + "combo": "Kombinə edilmiş", "inputTokens": "I:", "outputTokens": "O:" }, "stats": { - "usageOverview": "Usage Overview", - "outputTokens": "Output Tokens", - "totalCost": "Total Cost", - "usageByModel": "Usage by Model", - "usageByAccount": "Usage by Account", - "failedToLoad": "Failed to load usage statistics.", - "tokenHealth": "Token Health", - "totalOAuth": "Total OAuth", - "healthy": "Healthy", - "warning": "Warning", - "errored": "Errored", - "lastCheck": "Last check", - "noData": "No data", - "share": "Share", - "unableToLoad": "Unable to load system metrics", - "product": "Product", - "resources": "Resources", - "company": "Company", + "usageOverview": "İstifadəyə ümumi baxış", + "outputTokens": "Çıxış tokenləri", + "totalCost": "Ümumi xərc", + "usageByModel": "Model üzrə istifadə", + "usageByAccount": "Hesab üzrə istifadə", + "failedToLoad": "İstifadə statistikasını yükləmək mümkün olmadı.", + "tokenHealth": "Tokenlərin vəziyyəti", + "totalOAuth": "Ümumi OAuth", + "healthy": "Sağlam", + "warning": "Xəbərdarlıq", + "errored": "Xətalı", + "lastCheck": "Son yoxlama", + "noData": "Məlumat yoxdur", + "share": "Paylaş", + "unableToLoad": "Sistem göstəricilərini yükləmək mümkün deyil", + "product": "Məhsul", + "resources": "Resurslar", + "company": "Şirkət", "tokenHealthTooltips": { "allHealthy": "Bütün tokenlər sağlamdır", "needsAttention": "Bəzi tokenlərə diqqət yetirilməlidir", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Sistem metrikaları", "memory": "Yaddaş", - "memoryShort": "mem", + "memoryShort": "yaddaş", "uptime": "İşləmə müddəti", "ariaLabel": "Sistem Monitorinqi", "title": "Sistem Monitoru", @@ -9812,70 +9819,70 @@ "noAccountUsage": "Hələlik hesab spesifik istifadəsi qeydə alınmayıb. Məlumatları burada görmək üçün OAuth hesabları ilə sorğular edin." }, "auth": { - "welcome": "Welcome", - "signIn": "Sign in", - "enterPassword": "Enter your password to continue", - "password": "Password", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", - "unifiedAiApiProxyDesc": "Route requests to multiple AI providers through a single endpoint. Load balancing, failover, and usage tracking built in.", - "passwordNotEnabled": "Password protection is not enabled", - "loading": "Loading...", - "invalidPassword": "Invalid password", - "errorOccurredRetry": "An error occurred. Please try again.", - "configureInstance": "Let's get your OmniRoute instance configured", - "runOnboardingWizard": "Run the onboarding wizard to set up your password and connect your first AI provider.", - "startOnboarding": "Start Onboarding", - "secureYourInstance": "Secure Your Instance", - "setPasswordDescription": "Set a password to protect your dashboard and secure your API endpoints from unauthorized access.", - "configurePassword": "Configure Password", - "continue": "Continue", - "windowWillClose": "This window will close automatically...", - "closeTabNow": "You can close this tab now.", - "copyUrlManual": "Please copy the URL from the address bar and paste it in the application.", - "accessDeniedDescription": "You don't have permission to access this resource. Check your API key or contact the administrator.", - "goToDashboard": "Go to Dashboard", - "featureMultiProviderTitle": "Multi-Provider", - "featureMultiProviderDesc": "OpenAI, Anthropic, Google, and more", - "featureLoadBalancingTitle": "Load Balancing", - "featureLoadBalancingDesc": "Distribute requests intelligently", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Monitor costs and tokens", - "resetPassword": "Reset Password", - "resetDescription": "Choose a method to recover access to your dashboard", - "stopServer": "Stop the OmniRoute server", - "processing": "Processing...", - "pleaseWait": "Please wait while we complete the authorization.", - "authSuccess": "Authorization Successful!", - "copyUrl": "Copy This URL", - "accessDenied": "Access Denied", - "methodCliTitle": "Method 1: CLI Reset", - "methodCliDescription": "Run the following command on the server where OmniRoute is running:", - "methodCliHint": "This will prompt you to set a new password. The server must be stopped first.", - "methodManualTitle": "Method 2: Manual Reset", - "methodManualDescription": "Delete the password from the database and set a new one on startup:", - "setPasswordInYour": "Set a new password in your", - "fileLabelSuffix": "file:", + "welcome": "Xoş gəlmisiniz", + "signIn": "Daxil olun", + "enterPassword": "Davam etmək üçün parolunuzu daxil edin", + "password": "Parol", + "unifiedProxy": "Vahid AI API proksisi", + "unifiedAiApiProxy": "Vahid AI API proksisi", + "unifiedAiApiProxyDesc": "Sorğuları vahid son nöqtə vasitəsilə bir neçə AI provayderinə yönləndirin. Yük balanslaşdırılması, nasazlıq zamanı keçid və istifadə izlənməsi daxildir.", + "passwordNotEnabled": "Parol qorunması aktiv deyil", + "loading": "Yüklənir...", + "invalidPassword": "Yanlış parol", + "errorOccurredRetry": "Xəta baş verdi. Zəhmət olmasa, yenidən cəhd edin.", + "configureInstance": "Gəlin OmniRoute instansiyanızı konfiqurasiya edək", + "runOnboardingWizard": "Parolunuzu təyin etmək və ilk AI provayderinizi qoşmaq üçün ilkin quraşdırma sehrbazını başladın.", + "startOnboarding": "İlkin quraşdırmaya başlayın", + "secureYourInstance": "İnstansiyanızın təhlükəsizliyini təmin edin", + "setPasswordDescription": "İdarəetmə panelinizi qorumaq və API son nöqtələrinizi icazəsiz girişdən mühafizə etmək üçün parol təyin edin.", + "configurePassword": "Parolu konfiqurasiya edin", + "continue": "Davam edin", + "windowWillClose": "Bu pəncərə avtomatik bağlanacaq...", + "closeTabNow": "İndi bu tabı bağlaya bilərsiniz.", + "copyUrlManual": "Lütfən, URL-i ünvan sətrindən kopyalayıb tətbiqə yapışdırın.", + "accessDeniedDescription": "Bu resursa giriş icazəniz yoxdur. API açarınızı yoxlayın və ya administratorla əlaqə saxlayın.", + "goToDashboard": "İdarəetmə panelinə keçin", + "featureMultiProviderTitle": "Çoxsaylı provayderlər", + "featureMultiProviderDesc": "OpenAI, Anthropic, Google və digərləri", + "featureLoadBalancingTitle": "Yük balanslaşdırılması", + "featureLoadBalancingDesc": "Sorğuları ağıllı şəkildə paylayın", + "featureUsageTrackingTitle": "İstifadənin izlənməsi", + "featureUsageTrackingDesc": "Xərcləri və tokenləri izləyin", + "resetPassword": "Parolu sıfırlayın", + "resetDescription": "İdarəetmə panelinizə girişi bərpa etmək üçün üsul seçin", + "stopServer": "OmniRoute serverini dayandırın", + "processing": "Emal edilir...", + "pleaseWait": "Avtorizasiyanı tamamlayana qədər gözləyin.", + "authSuccess": "Avtorizasiya uğurla tamamlandı!", + "copyUrl": "Bu URL-i kopyalayın", + "accessDenied": "Giriş rədd edildi", + "methodCliTitle": "Üsul 1: CLI vasitəsilə sıfırlama", + "methodCliDescription": "OmniRoute-un işlədiyi serverdə aşağıdakı əmri icra edin:", + "methodCliHint": "Bu, sizdən yeni parol təyin etməyinizi istəyəcək. Əvvəlcə server dayandırılmalıdır.", + "methodManualTitle": "Üsul 2: Əl ilə sıfırlama", + "methodManualDescription": "Parolu verilənlər bazasından silin və işə salınarkən yenisini təyin edin:", + "setPasswordInYour": "Yeni parolu", + "fileLabelSuffix": "faylınızda təyin edin:", "newPasswordPlaceholder": "your_new_password", - "deleteSettingsFile": "Delete", - "orRemovePasswordHashField": "or remove the passwordHash field", - "restartServerWithNewPassword": "Restart the server - it will use the new password", - "backToLogin": "Back to Login", - "forgotPassword": "Forgot password?", + "deleteSettingsFile": "Silin", + "orRemovePasswordHashField": "və ya passwordHash sahəsini silin", + "restartServerWithNewPassword": "Serveri yenidən başladın — yeni paroldan istifadə ediləcək", + "backToLogin": "Giriş səhifəsinə qayıdın", + "forgotPassword": "Parolu unutmusunuz?", "continueWithOidc": "OIDC ilə davam et", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", - "Authorization": "Authorization", - "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "defaultPasswordHint": "Standart parol: CHANGEME (INITIAL_PASSWORD təyin edilməyibsə)", + "Authorization": "Avtorizasiya", + "Content-Disposition": "Məzmunun yerləşdirilməsi", + "waitingForAuthorization": "Avtorizasiya gözlənilir...", + "waitingForGoogleAuthorization": "Google avtorizasiyası gözlənilir...", + "waitingForOpenAIAuthorization": "OpenAI avtorizasiyası gözlənilir...", + "waitingForAntigravityAuthorization": "Antigravity avtorizasiyası gözlənilir...", + "waitingForQoderAuthorization": "Qoder avtorizasiyası gözlənilir...", + "exchangingCodeForTokens": "Kod tokenlərlə dəyişdirilir...", + "nodeIncompatibleTitle": "Uyğun olmayan Node.js versiyası", + "nodeIncompatibleDesc": "İstifadə etdiyiniz Node.js {version} versiyası OmniRoute-un dəstəklədiyi təhlükəsiz icra mühiti siyasətinə uyğun deyil. Təhlükəsizlik yeniləmələri tətbiq edilmiş Node.js 20.x və ya 22.x LTS buraxılışından istifadə edin.", + "nodeIncompatibleFixLabel": "Həll: təhlükəsizlik yeniləmələri tətbiq edilmiş Node.js 22 LTS buraxılışını quraşdırın", + "nodeIncompatibleHint": "OmniRoute üçün Node.js 22.22.2+ (22.x LTS) və ya 24.0.0+ (24.x LTS) tələb olunur. Node 24 LTS tövsiyə edilir.", "resetViaAppDataTitle": "Tətbiq Məlumatı İlə Sıfırlayın", "resetViaAppDataDescription": "Şifrənizi sıfırlamaq üçün tətbiq məlumatları qovluğundan konfiqurasiya faylını silin:", "quitDesktopApp": "OmniRoute masaüstü tətbiqini tamamilə bağlayın", @@ -9930,72 +9937,72 @@ }, "landing": { "brandName": "OmniRoute", - "navigateHome": "Navigate to home", - "toggleMenu": "Toggle menu", - "featuresLink": "Features", - "docsLink": "Docs", + "navigateHome": "Ana səhifəyə keçin", + "toggleMenu": "Menyunu açın/bağlayın", + "featuresLink": "İmkanlar", + "docsLink": "Sənədlər", "github": "GitHub", - "versionLive": "v1.0 is now live", - "oneEndpoint": "One Endpoint for", - "allProviders": "All AI Providers", - "heroDescription": "AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.", - "getStarted": "Get Started", - "viewOnGithub": "View on GitHub", - "powerfulFeatures": "Powerful Features", - "featuresSubtitle": "Everything you need to manage your AI infrastructure in one place, built for scale.", - "featureUnifiedEndpointTitle": "Unified Endpoint", - "featureUnifiedEndpointDesc": "Access all providers via a single standard API URL.", - "featureEasySetupTitle": "Easy Setup", - "featureEasySetupDesc": "Get up and running in minutes with npx command.", - "featureModelFallbackTitle": "Model Fallback", - "featureModelFallbackDesc": "Automatically switch providers on failure or high latency.", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Detailed analytics and cost monitoring across all models.", - "featureOAuthApiKeysTitle": "OAuth & API Keys", - "featureOAuthApiKeysDesc": "Securely manage credentials in one vault.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncDesc": "Sync your configurations across devices instantly.", - "featureCliSupportTitle": "CLI Support", - "featureCliSupportDesc": "Works with Claude Code, Codex, Cline, Cursor, and more.", - "featureDashboardTitle": "Dashboard", - "featureDashboardDesc": "Visual dashboard for real-time traffic analysis.", - "howItWorks": "How OmniRoute Works", - "howItWorksDescription": "Data flows seamlessly from your application through our intelligent routing layer to the best provider for the job.", - "howItWorksStep1Title": "1. CLI & SDKs", - "howItWorksStep1Description": "Your requests start from your favorite tools or our unified SDK. Just change the base URL.", + "versionLive": "v1.0 artıq istifadəyə verilib", + "oneEndpoint": "Bir giriş nöqtəsi ilə", + "allProviders": "Bütün AI provayderləri", + "heroDescription": "Veb idarəetmə panelinə malik AI giriş nöqtəsi proksisi — CLIProxyAPI-nin JavaScript portu. Claude Code, OpenAI Codex, Cline, RooCode və digər CLI alətləri ilə problemsiz işləyir.", + "getStarted": "Başlayın", + "viewOnGithub": "GitHub-da baxın", + "powerfulFeatures": "Güclü imkanlar", + "featuresSubtitle": "AI infrastrukturunuzu bir yerdən idarə etmək üçün lazım olan hər şey — miqyaslanma nəzərə alınaraq hazırlanıb.", + "featureUnifiedEndpointTitle": "Vahid giriş nöqtəsi", + "featureUnifiedEndpointDesc": "Bütün provayderlərə vahid standart API URL-i vasitəsilə daxil olun.", + "featureEasySetupTitle": "Asan quraşdırma", + "featureEasySetupDesc": "npx əmri ilə bir neçə dəqiqə ərzində işə başlayın.", + "featureModelFallbackTitle": "Ehtiyat modelə keçid", + "featureModelFallbackDesc": "Nasazlıq və ya yüksək gecikmə zamanı avtomatik olaraq başqa provayderə keçin.", + "featureUsageTrackingTitle": "İstifadənin izlənməsi", + "featureUsageTrackingDesc": "Bütün modellər üzrə ətraflı analitika və xərc monitorinqi.", + "featureOAuthApiKeysTitle": "OAuth və API açarları", + "featureOAuthApiKeysDesc": "Giriş məlumatlarını vahid seyfdə təhlükəsiz şəkildə idarə edin.", + "featureCloudSyncTitle": "Bulud sinxronizasiyası", + "featureCloudSyncDesc": "Konfiqurasiyalarınızı cihazlar arasında dərhal sinxronlaşdırın.", + "featureCliSupportTitle": "CLI dəstəyi", + "featureCliSupportDesc": "Claude Code, Codex, Cline, Cursor və digər alətlərlə işləyir.", + "featureDashboardTitle": "İdarəetmə paneli", + "featureDashboardDesc": "Real vaxt trafik təhlili üçün vizual idarəetmə paneli.", + "howItWorks": "OmniRoute necə işləyir", + "howItWorksDescription": "Məlumatlar tətbiqinizdən ağıllı marşrutlaşdırma qatımız vasitəsilə müvafiq tapşırıq üçün ən yaxşı provayderə fasiləsiz ötürülür.", + "howItWorksStep1Title": "1. CLI və SDK-lar", + "howItWorksStep1Description": "Sorğularınız sevimli alətlərinizdən və ya vahid SDK-mızdan başlayır. Sadəcə əsas URL-i dəyişdirin.", "howItWorksStep2Title": "2. OmniRoute Hub", - "howItWorksStep2Description": "Our engine analyzes the prompt, checks provider health, and routes for lowest latency or cost.", - "howItWorksStep3Title": "3. AI Providers", - "howItWorksStep3Description": "The request is fulfilled by OpenAI, Anthropic, Gemini, or others instantly.", - "getStartedIn30Seconds": "Get Started in 30 Seconds", - "getStartedDescription": "Install OmniRoute, configure your providers via web dashboard, and start routing AI requests.", - "installOmniRoute": "Install OmniRoute", - "installStepDescription": "Run npx command to start the server instantly", - "openDashboard": "Open Dashboard", - "openDashboardStepDescription": "Configure providers and API keys via web interface", - "routeRequests": "Route Requests", - "routeRequestsStepDescription": "Point your CLI tools to {endpoint}", + "howItWorksStep2Description": "Mühərrikimiz sorğunu təhlil edir, provayderin vəziyyətini yoxlayır və ən aşağı gecikmə və ya xərc üçün marşrutlaşdırır.", + "howItWorksStep3Title": "3. Süni intellekt provayderləri", + "howItWorksStep3Description": "Sorğu OpenAI, Anthropic, Gemini və ya digərləri tərəfindən dərhal yerinə yetirilir.", + "getStartedIn30Seconds": "30 saniyəyə başlayın", + "getStartedDescription": "OmniRoute-u quraşdırın, provayderlərinizi veb idarəetmə paneli vasitəsilə konfiqurasiya edin və süni intellekt sorğularını marşrutlaşdırmağa başlayın.", + "installOmniRoute": "OmniRoute-u quraşdırın", + "installStepDescription": "Serveri dərhal işə salmaq üçün npx əmrini icra edin", + "openDashboard": "İdarəetmə panelini açın", + "openDashboardStepDescription": "Provayderləri və API açarlarını veb interfeysi vasitəsilə konfiqurasiya edin", + "routeRequests": "Sorğuları marşrutlaşdırın", + "routeRequestsStepDescription": "CLI alətlərinizi {endpoint} ünvanına yönləndirin", "terminal": "terminal", - "copy": "Copy", - "copied": "✓ Copied", - "startingOmniRoute": "Starting OmniRoute...", - "serverRunningOnLabel": "Server running on", - "dashboardLabel": "Dashboard", - "readyToRoute": "Ready to route! ✓", - "configureProvidersNote": "📝 Configure providers in dashboard or use environment variables", - "dataLocation": "Data Location:", + "copy": "Kopyala", + "copied": "✓ Kopyalandı", + "startingOmniRoute": "OmniRoute işə salınır...", + "serverRunningOnLabel": "Server bu ünvanda işləyir:", + "dashboardLabel": "İdarəetmə paneli", + "readyToRoute": "Marşrutlaşdırmaya hazırdır! ✓", + "configureProvidersNote": "📝 Provayderləri idarəetmə panelində konfiqurasiya edin və ya mühit dəyişənlərindən istifadə edin", + "dataLocation": "Məlumatların yerləşdiyi yer:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", - "product": "Product", - "dashboardLink": "Dashboard", - "changelog": "Changelog", - "resources": "Resources", - "documentation": "Documentation", + "product": "Məhsul", + "dashboardLink": "İdarəetmə paneli", + "changelog": "Dəyişiklik jurnalı", + "resources": "Resurslar", + "documentation": "Sənədlər", "npm": "NPM", - "legal": "Legal", - "mitLicense": "MIT License", - "footerTagline": "The unified endpoint for AI generation. Connect, route, and manage your AI providers with ease.", - "copyright": "© {year} OmniRoute. All rights reserved.", + "legal": "Hüquqi məlumat", + "mitLicense": "MIT Lisenziyası", + "footerTagline": "Süni intellekt generasiyası üçün vahid son nöqtə. Süni intellekt provayderlərinizi asanlıqla qoşun, marşrutlaşdırın və idarə edin.", + "copyright": "© {year} OmniRoute. Bütün hüquqlar qorunur.", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", "flowToolCline": "Cline", @@ -10004,17 +10011,17 @@ "flowProviderAnthropic": "Anthropic", "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", - "interactiveDiagram": "Interactive diagram visible on desktop", - "ctaTitle": "Ready to Simplify Your AI Infrastructure?", - "ctaDescription": "Join developers who are streamlining their AI integrations with OmniRoute. Open source and free to start.", - "startFree": "Start Free", - "readDocumentation": "Read Documentation", + "interactiveDiagram": "İnteraktiv diaqram masaüstü cihazlarda görünür", + "ctaTitle": "Süni intellekt infrastrukturunuzu sadələşdirməyə hazırsınız?", + "ctaDescription": "OmniRoute ilə süni intellekt inteqrasiyalarını optimallaşdıran tərtibatçılara qoşulun. Açıq mənbəlidir və başlamaq pulsuzdur.", + "startFree": "Pulsuz başlayın", + "readDocumentation": "Sənədləri oxuyun", "company": "Şirkət", "pricing": "Qiymətləndirmə", "apiReference": "API İstinadı", "helpCenter": "Yardım Mərkəzi", "about": "Haqqında", - "blog": "Blog", + "blog": "Bloq", "contact": "Əlaqə", "terms": "Şərtlər", "privacy": "Məxfilik", @@ -10023,213 +10030,213 @@ "communityDiscussions": "İcma Müzakirələri" }, "docs": { - "title": "Documentation", - "quickStart": "Quick Start", - "deploymentGuides": "Deployment Guides", - "features": "Features", - "supportedProviders": "Supported Providers", - "supportedProvidersToc": "Providers", - "commonUseCases": "Common Use Cases", - "clientCompatibility": "Client Compatibility", - "protocolsToc": "Protocols", - "apiReference": "API Reference", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", - "method": "Method", - "path": "Path", - "notes": "Notes", - "modelPrefixes": "Model Prefixes", - "prefix": "Prefix", - "troubleshooting": "Troubleshooting", - "supportsChat": "Supports both chat and responses endpoints.", - "oauthAutoRefresh": "OAuth connection with automatic token refresh.", - "fullStreaming": "Full streaming support for all models.", - "docsLabel": "Docs", - "docsHeroDescription": "AI gateway for multi-provider LLMs. One endpoint for OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor, and 20+ more providers.", - "openDashboard": "Open Dashboard", - "endpointPage": "Endpoint Page", + "title": "Sənədlər", + "quickStart": "Sürətli başlanğıc", + "deploymentGuides": "Yerləşdirmə təlimatları", + "features": "Xüsusiyyətlər", + "supportedProviders": "Dəstəklənən provayderlər", + "supportedProvidersToc": "Provayderlər", + "commonUseCases": "Ümumi istifadə halları", + "clientCompatibility": "Klient uyğunluğu", + "protocolsToc": "Protokollar", + "apiReference": "API arayışı", + "managementApiReference": "İdarəetmə API-si üzrə arayış", + "managementApiDescription": "Proksi reyestri, əhatə dairəsi təyinatları və köhnə proksilərin miqrasiyası üçün avtomatlaşdırma son nöqtələri.", + "method": "Metod", + "path": "Yol", + "notes": "Qeydlər", + "modelPrefixes": "Model prefiksləri", + "prefix": "Prefiks", + "troubleshooting": "Problemlərin aradan qaldırılması", + "supportsChat": "Həm söhbət, həm də cavab son nöqtələrini dəstəkləyir.", + "oauthAutoRefresh": "Tokenin avtomatik yenilənməsi ilə OAuth bağlantısı.", + "fullStreaming": "Bütün modellər üçün tam axın dəstəyi.", + "docsLabel": "Sənədlər", + "docsHeroDescription": "Çoxsaylı provayderlərin LLM-ləri üçün AI şlüzü. OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor və daha 20-dən çox provayder üçün vahid son nöqtə.", + "openDashboard": "İdarəetmə panelini açın", + "endpointPage": "Son nöqtə səhifəsi", "github": "GitHub", - "reportIssue": "Report Issue", - "onThisPage": "On this page", - "documentationVersion": "Documentation - v{version}", - "quickStartStep1Title": "1. Install and run", - "quickStartStep1Prefix": "Run", - "quickStartStep1Middle": "or clone from GitHub and run", - "quickStartStep2Title": "2. Create API key", - "quickStartStep2Text": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "quickStartStep3Title": "3. Connect providers", - "quickStartStep3Text": "Add provider accounts via OAuth login, API key, or free-tier auto-connect.", - "quickStartStep4Title": "4. Set client base URL", - "quickStartStep4Prefix": "Point your IDE or API client to", - "quickStartStep4Suffix": "Use provider prefix, for example", - "deploySetupTitle": "Setup Guide", - "deploySetupText": "Step-by-step installation, environment configuration, and first-run walkthrough for OmniRoute.", - "deployElectronTitle": "Electron Desktop", - "deployElectronText": "Run OmniRoute as a native desktop application on Windows, macOS, and Linux.", + "reportIssue": "Problem bildirin", + "onThisPage": "Bu səhifədə", + "documentationVersion": "Sənədlər — v{version}", + "quickStartStep1Title": "1. Quraşdırın və işə salın", + "quickStartStep1Prefix": "İşə salın", + "quickStartStep1Middle": "və ya GitHub-dan klonlayıb işə salın", + "quickStartStep2Title": "2. API açarı yaradın", + "quickStartStep2Text": "Endpoint -> Registered Keys bölməsinə keçin. Hər mühit üçün bir açar yaradın.", + "quickStartStep3Title": "3. Provayderləri qoşun", + "quickStartStep3Text": "OAuth girişi, API açarı və ya pulsuz səviyyəyə avtomatik qoşulma vasitəsilə provayder hesabları əlavə edin.", + "quickStartStep4Title": "4. Klientin baza URL-sini təyin edin", + "quickStartStep4Prefix": "IDE-nizi və ya API klientinizi bu ünvana yönəldin:", + "quickStartStep4Suffix": "Provayder prefiksindən istifadə edin, məsələn", + "deploySetupTitle": "Quraşdırma təlimatı", + "deploySetupText": "OmniRoute üçün addım-addım quraşdırma, mühit konfiqurasiyası və ilk işəsalma üzrə təlimat.", + "deployElectronTitle": "Electron masaüstü tətbiqi", + "deployElectronText": "OmniRoute-u Windows, macOS və Linux-da yerli masaüstü tətbiqi kimi işlədin.", "deployDockerTitle": "Docker", - "deployDockerText": "Containerized deployment with Docker Compose; ready for production stacks and Kubernetes.", - "deployVmTitle": "Virtual Machine", - "deployVmText": "Self-host on any Linux VM. Includes systemd unit, log rotation, and backup tooling.", + "deployDockerText": "Docker Compose ilə konteynerləşdirilmiş yerləşdirmə; istehsal stekləri və Kubernetes üçün hazırdır.", + "deployVmTitle": "Virtual maşın", + "deployVmText": "İstənilən Linux VM-də özünüz hostinq edin. systemd vahidi, jurnal rotasiyası və ehtiyat nüsxələmə alətləri daxildir.", "deployFlyTitle": "Fly.io", - "deployFlyText": "Deploy to Fly.io edge runtime with one fly.toml and a single deploy command.", + "deployFlyText": "Bir fly.toml faylı və tək yerləşdirmə əmri ilə Fly.io kənar icra mühitinə yerləşdirin.", "deployPwaTitle": "PWA", - "deployPwaText": "Install OmniRoute as a Progressive Web App on Android, iOS, and desktop browsers.", + "deployPwaText": "OmniRoute-u Android, iOS və masaüstü brauzerlərdə Proqressiv Veb Tətbiqi kimi quraşdırın.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", - "featureRoutingTitle": "Multi-Provider Routing", - "featureRoutingText": "Route requests to 30+ AI providers through a single OpenAI-compatible endpoint. Supports chat, responses, audio, and image APIs.", - "featureCombosTitle": "Combos and Balancing", - "featureCombosText": "Create model combos with fallback chains and balancing strategies: round-robin, priority, random, least-used, and cost-optimized.", - "featureUsageTitle": "Usage and Cost Tracking", - "featureUsageText": "Real-time token counting, cost calculation per provider/model, and detailed usage breakdown by API key and account.", - "featureAnalyticsTitle": "Analytics Dashboard", - "featureAnalyticsText": "Visual analytics with charts for requests, tokens, errors, latency, costs, and model popularity over time.", - "featureHealthTitle": "Health Monitoring", - "featureHealthText": "Live health checks, provider status, circuit breaker states, and automatic rate limit detection with exponential backoff.", - "featureCliTitle": "CLI Tools", - "featureCliText": "Manage IDE configurations, export/import backups, discover codex profiles, and configure settings from the dashboard.", - "featureSecurityTitle": "Security and Policies", - "featureSecurityText": "API key authentication, IP filtering, prompt injection guard, domain policies, session management, and audit logging.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncText": "Sync your configuration to Cloudflare Workers for remote access with encrypted credentials and automatic failover.", - "providersAcrossConnectionTypes": "{count} providers across three connection types.", - "manageProviders": "Manage Providers", - "providersCount": "{count} providers", - "providerTypeFree": "Free Tier", + "deployTermuxText": "OmniRoute-u Termux vasitəsilə Android-də başsız rejimdə işlədin. İdarəetmə panelinə mobil brauzerinizdən daxil olun.", + "featureRoutingTitle": "Çoxprovayderli marşrutlaşdırma", + "featureRoutingText": "Sorğuları OpenAI ilə uyğun vahid son nöqtə vasitəsilə 30-dan çox AI provayderinə yönləndirin. Söhbət, cavab, audio və şəkil API-lərini dəstəkləyir.", + "featureCombosTitle": "Kombinasiyalar və balanslaşdırma", + "featureCombosText": "Ehtiyat keçid zəncirləri və balanslaşdırma strategiyaları ilə model kombinasiyaları yaradın: növbəli, prioritet, təsadüfi, ən az istifadə olunan və xərc baxımından optimallaşdırılmış.", + "featureUsageTitle": "İstifadə və xərclərin izlənməsi", + "featureUsageText": "Real vaxt rejimində tokenlərin sayılması, hər provayder/model üzrə xərclərin hesablanması və API açarı və hesab üzrə ətraflı istifadə bölgüsü.", + "featureAnalyticsTitle": "Analitika paneli", + "featureAnalyticsText": "Zaman üzrə sorğular, tokenlər, xətalar, gecikmə, xərclər və modellərin populyarlığı üçün qrafiklərlə vizual analitika.", + "featureHealthTitle": "Sağlamlıq monitorinqi", + "featureHealthText": "Canlı sağlamlıq yoxlamaları, provayder statusu, dövrə kəsicisinin vəziyyətləri və eksponensial geri çəkilmə ilə sürət məhdudiyyətinin avtomatik aşkarlanması.", + "featureCliTitle": "CLI alətləri", + "featureCliText": "IDE konfiqurasiyalarını idarə edin, ehtiyat nüsxələri ixrac/idxal edin, codex profillərini aşkar edin və parametrləri idarəetmə panelindən konfiqurasiya edin.", + "featureSecurityTitle": "Təhlükəsizlik və siyasətlər", + "featureSecurityText": "API açarı ilə autentifikasiya, IP filtrasiyası, prompt inyeksiyasından qorunma, domen siyasətləri, sessiyaların idarə edilməsi və audit jurnallarının aparılması.", + "featureCloudSyncTitle": "Buludla sinxronizasiya", + "featureCloudSyncText": "Şifrələnmiş giriş məlumatları və avtomatik ehtiyat keçidlə uzaqdan giriş üçün konfiqurasiyanızı Cloudflare Workers ilə sinxronlaşdırın.", + "providersAcrossConnectionTypes": "Üç bağlantı növü üzrə {count} provayder.", + "manageProviders": "Provayderləri idarə edin", + "providersCount": "{count} provayder", + "providerTypeFree": "Pulsuz səviyyə", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", - "useCaseSingleEndpointTitle": "Single endpoint for many providers", - "useCaseSingleEndpointText": "Point clients to one base URL and route by model prefix (for example: gh/, cc/, kr/, openai/).", - "useCaseFallbackTitle": "Fallback and model switching with combos", - "useCaseFallbackText": "Create combo models in Dashboard and keep client config stable while providers rotate internally.", - "useCaseUsageVisibilityTitle": "Usage, cost and debug visibility", - "useCaseUsageVisibilityText": "Track tokens and cost by provider, account, and API key in Usage and Analytics tabs.", + "providerTypeApiKey": "API açarı", + "useCaseSingleEndpointTitle": "Çoxsaylı provayderlər üçün vahid son nöqtə", + "useCaseSingleEndpointText": "Klientləri bir əsas URL-ə yönəldin və model prefiksinə görə marşrutlaşdırın (məsələn: gh/, cc/, kr/, openai/).", + "useCaseFallbackTitle": "Kombinasiyalarla ehtiyat keçid və model dəyişdirmə", + "useCaseFallbackText": "Dashboard-da model kombinasiyaları yaradın və provayderlər daxildə dəyişdirilərkən klient konfiqurasiyasını sabit saxlayın.", + "useCaseUsageVisibilityTitle": "İstifadə, xərc və sazlama görünürlüğü", + "useCaseUsageVisibilityText": "İstifadə və Analitika tablarında tokenləri və xərcləri provayder, hesab və API açarı üzrə izləyin.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", - "modelRecommendationLabel": "Model recommendation: explicit prefix", - "clientCodexTitle": "Codex / GitHub Copilot Models", - "clientCodexBullet1": "Use model IDs with", - "clientCodexBullet2": "Codex-family models auto-route to", - "clientCodexBullet3": "Non-Codex models continue on", + "baseUrlLabel": "Əsas URL", + "chatEndpointLabel": "Çat son nöqtəsi", + "modelRecommendationLabel": "Model tövsiyəsi: açıq prefiks", + "clientCodexTitle": "Codex / GitHub Copilot Modelləri", + "clientCodexBullet1": "Model ID-lərini bununla istifadə edin:", + "clientCodexBullet2": "Codex ailəsinə aid modellər avtomatik olaraq buraya yönləndirilir:", + "clientCodexBullet3": "Codex olmayan modellər burada davam edir:", "clientCursorTitle": "Cursor IDE", - "clientCursorBullet1": "Use", - "clientCursorBullet1Suffix": "prefix for Cursor models.", - "clientCursorBullet2": "OAuth connection - login from the Providers page.", + "clientCursorBullet1": "İstifadə edin:", + "clientCursorBullet1Suffix": "Cursor modelləri üçün prefiks.", + "clientCursorBullet2": "OAuth bağlantısı — Provayderlər səhifəsindən daxil olun.", "clientClaudeTitle": "Claude Code / Antigravity", - "clientClaudeBullet1Prefix": "Use", - "clientClaudeBullet1Middle": "(Claude) or", - "clientClaudeBullet1Suffix": "(Antigravity) prefix.", + "clientClaudeBullet1Prefix": "İstifadə edin:", + "clientClaudeBullet1Middle": "(Claude) və ya", + "clientClaudeBullet1Suffix": "(Antigravity) prefiksi.", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "Use OmniRoute as an OpenAI-compatible base URL and keep explicit provider prefixes for deterministic routing.", - "clientWindsurfBullet2": "Point models to `/v1/chat/completions` for general traffic and preserve `/v1/responses` for Codex-style flows.", - "clientWindsurfBullet3": "Use Dashboard -> CLI Tools for a ready-made Windsurf configuration guide.", + "clientWindsurfBullet1": "OmniRoute-u OpenAI ilə uyğun əsas URL kimi istifadə edin və deterministik yönləndirmə üçün açıq provayder prefikslərini saxlayın.", + "clientWindsurfBullet2": "Ümumi trafik üçün modelləri `/v1/chat/completions` ünvanına yönəldin və Codex üslublu axınlar üçün `/v1/responses` ünvanını saxlayın.", + "clientWindsurfBullet3": "Hazır Windsurf konfiqurasiya təlimatı üçün İdarəetmə paneli -> CLI Alətləri bölməsindən istifadə edin.", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline works best with explicit provider/model prefixes so the router never has to guess the backend.", - "clientClineBullet2": "Use `/v1/chat/completions` for general models and reuse the same OmniRoute base URL across different accounts.", - "clientClineBullet3": "Use the Providers dashboard to validate OAuth/API key before debugging Cline runtime issues.", + "clientClineBullet1": "Cline açıq provayder/model prefiksləri ilə daha yaxşı işləyir, beləliklə, yönləndiricinin arxa sistemi təxmin etməsinə ehtiyac qalmır.", + "clientClineBullet2": "Ümumi modellər üçün `/v1/chat/completions` istifadə edin və eyni OmniRoute əsas URL-sini müxtəlif hesablar arasında təkrar istifadə edin.", + "clientClineBullet3": "Cline icra mühiti problemlərini sazlamadan əvvəl OAuth/API açarını yoxlamaq üçün Provayderlər idarəetmə panelindən istifadə edin.", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "Use OmniRoute as a stable base URL while rotating accounts or provider combos underneath.", - "clientKimiBullet2": "Prefer prefixed models in coding flows so fallback and audit trail remain explicit.", - "clientKimiBullet3": "Use `/v1/responses` when you want native Responses-style routing for tool-using clients.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "clientKimiBullet1": "Arxa planda hesabları və ya provayder kombinasiyalarını dəyişərkən OmniRoute-u sabit əsas URL kimi istifadə edin.", + "clientKimiBullet2": "Kodlaşdırma axınlarında prefiksli modellərə üstünlük verin ki, ehtiyat yönləndirmə və audit izi açıq şəkildə qalsın.", + "clientKimiBullet3": "Alətlərdən istifadə edən müştərilər üçün yerli Responses üslublu yönləndirmə istədikdə `/v1/responses` istifadə edin.", + "protocolsTitle": "Protokollar: MCP və A2A", + "protocolsDescription": "OmniRoute, OpenAI ilə uyğun API-lərə əlavə olaraq iki əməliyyat protokolunu təqdim edir: alətlərin icrası üçün MCP və agentlərarası iş axınları üçün A2A.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Müştərilərin audit görünürlüğü ilə OmniRoute alətlərini aşkarlayıb çağırmasına imkan vermək üçün stdio üzərindən MCP istifadə edin.", + "protocolMcpStep1": "MCP nəqlini `omniroute --mcp` ilə başladın.", + "protocolMcpStep2": "MCP müştərinizi stdio nəqlinə yönəldin.", + "protocolMcpStep3": "Bağlantını yoxlamaq üçün `omniroute_get_health` və `omniroute_list_combos` çağırın.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", - "endpointChatNote": "OpenAI-compatible chat endpoint (default).", - "endpointResponsesNote": "Responses API endpoint (Codex, o-series).", - "endpointModelsNote": "Model catalog for all connected providers.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", - "endpointSpeechNote": "Text-to-speech generation (ElevenLabs, OpenAI TTS).", - "endpointEmbeddingsNote": "Text embedding generation (OpenAI, Cohere, Voyage).", - "endpointImagesNote": "Image generation (NanoBanana).", - "endpointRewriteChatNote": "Rewrite helper for clients without /v1.", - "endpointRewriteResponsesNote": "Rewrite helper for Responses without /v1.", - "endpointRewriteModelsNote": "Rewrite helper for model discovery without /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", - "modelPrefixesDescriptionStart": "Use the provider prefix before the model name to route to a specific provider. Example:", - "modelPrefixesDescriptionEnd": "routes to GitHub Copilot.", - "provider": "Provider", - "type": "Type", - "troubleshootingModelRouting": "If the client fails with model routing, use explicit provider/model (for example: gh/gpt-5.1-codex).", - "troubleshootingAmbiguousModels": "If you receive ambiguous model errors, pick a provider prefix instead of a bare model ID.", - "troubleshootingCodexFamily": "For GitHub Codex-family models, keep model as gh/codex-model; router selects /responses automatically.", - "troubleshootingTestConnection": "Use Dashboard > Providers > Test Connection before testing from IDEs or external clients.", - "troubleshootingCircuitBreaker": "If a provider shows circuit breaker open, wait for the cooldown or check Health page for details.", - "troubleshootingOAuth": "For OAuth providers, re-authenticate if tokens expire. Check the provider card status indicator.", - "endpointCompletionsNote": "Legacy completions endpoint for text generation.", - "endpointModerationsNote": "Content moderation and safety classification.", - "endpointRerankNote": "Document reranking for retrieval-augmented generation (Cohere, Jina).", - "endpointSearchNote": "Web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity).", - "endpointSearchAnalyticsNote": "Analytics and metrics for search requests.", - "endpointVideoNote": "Video generation (ComfyUI, SD WebUI workflows).", - "endpointMusicNote": "Music generation via ComfyUI workflows.", - "endpointMessagesNote": "Anthropic-native messages endpoint.", - "endpointCountTokensNote": "Count tokens for a given message payload.", - "endpointFilesNote": "File upload for multimodal inputs.", - "endpointBatchesNote": "Batch processing for bulk API requests.", - "endpointWsNote": "WebSocket endpoint for real-time streaming.", - "mgmtProvidersListNote": "List all registered provider connections.", - "mgmtProvidersCreateNote": "Create a new provider connection.", - "mgmtProvidersUpdateNote": "Update an existing provider connection.", - "mgmtProvidersDeleteNote": "Delete a provider connection.", - "mgmtProvidersTestNote": "Test connectivity and authentication for a provider.", - "mgmtProvidersModelsNote": "List available models for a specific provider.", - "mgmtSettingsGetNote": "Retrieve current application settings.", - "mgmtSettingsUpdateNote": "Update application settings.", - "mgmtPayloadRulesGetNote": "Get payload transformation rules.", - "mgmtPayloadRulesUpdateNote": "Update payload transformation rules.", - "mcpToolsTitle": "MCP Tools", - "mcpToolsDescription": "OmniRoute exposes {count} tools via Model Context Protocol for agent orchestration.", - "mcpToolsCount": "{count} tools", - "mcpToolsToc": "MCP Tools", - "mcpToolsRoutingTitle": "Routing & Discovery", - "mcpToolsRoutingDesc": "Health checks, combo management, quota monitoring, cost reporting, and model catalog access.", - "mcpToolsOperationsTitle": "Operations & Strategy", - "mcpToolsOperationsDesc": "Route simulation, budget guards, strategy switching, resilience profiles, and provider metrics.", - "mcpToolsCacheTitle": "Cache Management", - "mcpToolsCacheDesc": "View cache statistics and flush semantic or signature caches.", - "mcpToolsCompressionTitle": "Compression Engines", - "mcpToolsCompressionDesc": "Configure RTK/Brotli compression, swap engines, and inspect compression analytics by combo.", - "mcpToolsOneProxyTitle": "1Proxy / Tunnels", - "mcpToolsOneProxyDesc": "Manage outbound proxies, rotate residential IPs, and inspect proxy health.", - "mcpToolsMemoryTitle": "Memory", - "mcpToolsMemoryDesc": "Search, add, and clear persistent conversational memory entries.", - "mcpToolsSkillsTitle": "Skills", - "mcpToolsSkillsDesc": "List, enable, execute, and monitor custom skill executions.", - "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "Automatically create optimized combos based on your connected providers, usage patterns, and model capabilities.", - "featureSearchTitle": "Web Search", - "featureSearchText": "Integrated web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity) including analytics and cost tracking.", - "featureMemoryTitle": "Memory System", - "featureMemoryText": "Persistent conversational memory with extraction, injection, retrieval, and summarization across sessions.", - "featureSkillsTitle": "Skills Framework", - "featureSkillsText": "Extensible skill system with built-in and custom skills, sandbox execution, request interception, and context injection.", - "featureAcpTitle": "Agent Communication", - "featureAcpText": "Agent Communication Protocol (ACP) registry for managing agent-to-agent workflows and tool orchestration.", - "protocolAcpTitle": "ACP (Agent Communication)", - "protocolAcpDesc": "Register and manage agents via the ACP registry for inter-agent communication and tool sharing.", - "protocolAcpStep1": "Navigate to Dashboard → Agents to view registered ACP agents.", - "protocolAcpStep2": "Register new agents with capabilities and endpoint configuration.", - "protocolAcpStep3": "Use CLI Tools to configure agent communication channels.", + "protocolA2aDesc": "Tapşırıqları sinxron şəkildə və ya SSE axını vasitəsilə göndərmək üçün A2A JSON-RPC istifadə edin.", + "protocolA2aStep1": "Agentin aşkarlanması üçün `/.well-known/agent.json` faylını oxuyun.", + "protocolA2aStep2": "`POST /a2a` ünvanına `message/send` və ya `message/stream` sorğuları göndərin.", + "protocolA2aStep3": "Tapşırığın həyat dövrünü `tasks/get` və `tasks/cancel` ilə idarə edin.", + "protocolTroubleshootingTitle": "Protokol problemlərinin aradan qaldırılması", + "protocolTroubleshooting1": "MCP statusu oflayndırsa, stdio prosesinin işlədiyini və heartbeat faylının yeniləndiyini yoxlayın.", + "protocolTroubleshooting2": "A2A tapşırıqları `working` vəziyyətində qalarsa, yekun vəziyyəti müəyyən etmək üçün `/api/a2a/tasks/:id` ünvanını və axın hadisələrini yoxlayın.", + "protocolTroubleshooting3": "Əməliyyat idarəetməsi və audit görünürlüğü üçün `/dashboard/mcp` və `/dashboard/a2a` istifadə edin.", + "endpointChatNote": "OpenAI ilə uyğun söhbət son nöqtəsi (standart).", + "endpointResponsesNote": "Responses API son nöqtəsi (Codex, o-seriyası).", + "endpointModelsNote": "Bütün qoşulmuş provayderlər üçün model kataloqu.", + "endpointAudioNote": "Audio transkripsiyası (Deepgram, AssemblyAI).", + "endpointSpeechNote": "Mətndən nitqə generasiya (ElevenLabs, OpenAI TTS).", + "endpointEmbeddingsNote": "Mətn embeddinqlərinin generasiyası (OpenAI, Cohere, Voyage).", + "endpointImagesNote": "Şəkil generasiyası (NanoBanana).", + "endpointRewriteChatNote": "/v1 dəstəyi olmayan müştərilər üçün yenidən yazma köməkçisi.", + "endpointRewriteResponsesNote": "/v1 dəstəyi olmayan Responses üçün yenidən yazma köməkçisi.", + "endpointRewriteModelsNote": "/v1 dəstəyi olmayan model aşkarlanması üçün yenidən yazma köməkçisi.", + "mgmtProxiesListNote": "Saxlanılmış proksi reyestri elementlərini siyahılayın (səhifələməni dəstəkləyir).", + "mgmtProxiesCreateNote": "Reyestrdə təkrar istifadə edilə bilən proksi elementi yaradın.", + "mgmtProxiesHealthNote": "Proksi jurnallarından hər saxlanılmış proksi üzrə 24 saatlıq/sürüşən sağlamlıq metrikalarını əldə edin.", + "mgmtProxiesBulkAssignNote": "Bir sorğuda çoxsaylı əhatə dairəsi ID-lərinə bir proksi təyin edin və ya onu silin.", + "mgmtAssignmentsListNote": "Proksi təyinatlarını scope, scope_id və ya proxy_id üzrə siyahılayın.", + "mgmtAssignmentsUpdateNote": "Qlobal/provayder/hesab/kombinasiya əhatə dairəsi üçün proksi təyin edin və ya silin.", + "mgmtLegacyMigrationNote": "Köhnə proxyConfig xəritələrini reyestr təyinatlarına idxal edin.", + "modelPrefixesDescriptionStart": "Konkret provayderə yönləndirmək üçün model adından əvvəl provayder prefiksindən istifadə edin. Nümunə:", + "modelPrefixesDescriptionEnd": "GitHub Copilot-a yönləndirir.", + "provider": "Provayder", + "type": "Növ", + "troubleshootingModelRouting": "Müştəridə model yönləndirilməsi uğursuz olarsa, provayder/modeli açıq şəkildə göstərin (məsələn: gh/gpt-5.1-codex).", + "troubleshootingAmbiguousModels": "Qeyri-müəyyən model xətaları alsanız, yalnız model ID-si əvəzinə provayder prefiksini seçin.", + "troubleshootingCodexFamily": "GitHub Codex ailəsi modelləri üçün modeli gh/codex-model kimi saxlayın; yönləndirici /responses son nöqtəsini avtomatik seçir.", + "troubleshootingTestConnection": "IDE-lərdən və ya xarici müştərilərdən sınaqdan keçirməzdən əvvəl Dashboard > Providers > Test Connection istifadə edin.", + "troubleshootingCircuitBreaker": "Provayderdə dövrə açarının açıq olduğu göstərilirsə, soyuma müddətinin bitməsini gözləyin və ya təfərrüatlar üçün Health səhifəsini yoxlayın.", + "troubleshootingOAuth": "OAuth provayderləri üçün tokenlərin müddəti bitdikdə yenidən autentifikasiya edin. Provayder kartındakı status indikatorunu yoxlayın.", + "endpointCompletionsNote": "Mətn generasiyası üçün köhnə tamamlama son nöqtəsi.", + "endpointModerationsNote": "Məzmun moderasiyası və təhlükəsizlik təsnifatı.", + "endpointRerankNote": "Axtarışla zənginləşdirilmiş generasiya üçün sənədlərin yenidən sıralanması (Cohere, Jina).", + "endpointSearchNote": "5 provayderlə veb axtarışı (Serper, Brave, Exa, Tavily, Perplexity).", + "endpointSearchAnalyticsNote": "Axtarış sorğuları üçün analitika və metrikalar.", + "endpointVideoNote": "Video generasiyası (ComfyUI, SD WebUI iş axınları).", + "endpointMusicNote": "ComfyUI iş axınları vasitəsilə musiqi generasiyası.", + "endpointMessagesNote": "Anthropic-ə məxsus mesajlar son nöqtəsi.", + "endpointCountTokensNote": "Verilmiş mesaj məlumat yükü üçün tokenləri hesablayın.", + "endpointFilesNote": "Multimodal girişlər üçün fayl yükləmə.", + "endpointBatchesNote": "Kütləvi API sorğuları üçün paket emalı.", + "endpointWsNote": "Real vaxt rejimində axın üçün WebSocket son nöqtəsi.", + "mgmtProvidersListNote": "Bütün qeydiyyatdan keçmiş provayder bağlantılarını siyahıya alın.", + "mgmtProvidersCreateNote": "Yeni provayder bağlantısı yaradın.", + "mgmtProvidersUpdateNote": "Mövcud provayder bağlantısını yeniləyin.", + "mgmtProvidersDeleteNote": "Provayder bağlantısını silin.", + "mgmtProvidersTestNote": "Provayder üçün bağlantını və autentifikasiyanı yoxlayın.", + "mgmtProvidersModelsNote": "Konkret provayder üçün mövcud modelləri siyahıya alın.", + "mgmtSettingsGetNote": "Cari tətbiq parametrlərini əldə edin.", + "mgmtSettingsUpdateNote": "Tətbiq parametrlərini yeniləyin.", + "mgmtPayloadRulesGetNote": "Faydalı yükün transformasiya qaydalarını əldə edin.", + "mgmtPayloadRulesUpdateNote": "Faydalı yükün transformasiya qaydalarını yeniləyin.", + "mcpToolsTitle": "MCP Alətləri", + "mcpToolsDescription": "OmniRoute agentlərin orkestrasiyası üçün Model Context Protocol vasitəsilə {count} alət təqdim edir.", + "mcpToolsCount": "{count} alət", + "mcpToolsToc": "MCP Alətləri", + "mcpToolsRoutingTitle": "Marşrutlaşdırma və Aşkarlama", + "mcpToolsRoutingDesc": "Sağlamlıq yoxlamaları, kombinasiya idarəetməsi, kvota monitorinqi, xərc hesabatları və model kataloquna giriş.", + "mcpToolsOperationsTitle": "Əməliyyatlar və Strategiya", + "mcpToolsOperationsDesc": "Marşrut simulyasiyası, büdcə məhdudiyyətləri, strategiya dəyişdirmə, dayanıqlılıq profilləri və provayder göstəriciləri.", + "mcpToolsCacheTitle": "Keş İdarəetməsi", + "mcpToolsCacheDesc": "Keş statistikasına baxın və semantik və ya imza keşlərini təmizləyin.", + "mcpToolsCompressionTitle": "Sıxışdırma Mühərrikləri", + "mcpToolsCompressionDesc": "RTK/Brotli sıxışdırmasını konfiqurasiya edin, mühərrikləri dəyişdirin və kombinasiyalar üzrə sıxışdırma analitikasını nəzərdən keçirin.", + "mcpToolsOneProxyTitle": "1Proxy / Tunellər", + "mcpToolsOneProxyDesc": "Çıxış proksilərini idarə edin, rezident IP-ləri rotasiya edin və proksi vəziyyətini yoxlayın.", + "mcpToolsMemoryTitle": "Yaddaş", + "mcpToolsMemoryDesc": "Davamlı söhbət yaddaşı qeydlərini axtarın, əlavə edin və təmizləyin.", + "mcpToolsSkillsTitle": "Bacarıqlar", + "mcpToolsSkillsDesc": "Fərdi bacarıq icralarını siyahıya alın, aktivləşdirin, icra edin və izləyin.", + "featureAutoComboTitle": "Avtomatik Kombinasiya", + "featureAutoComboText": "Qoşulmuş provayderləriniz, istifadə nümunələriniz və model imkanları əsasında optimallaşdırılmış kombinasiyaları avtomatik yaradın.", + "featureSearchTitle": "Veb Axtarışı", + "featureSearchText": "Analitika və xərc izləməsi daxil olmaqla 5 provayderlə (Serper, Brave, Exa, Tavily, Perplexity) inteqrasiya olunmuş veb axtarışı.", + "featureMemoryTitle": "Yaddaş Sistemi", + "featureMemoryText": "Sessiyalar arasında çıxarış, daxil etmə, əldə etmə və ümumiləşdirmə imkanlarına malik davamlı söhbət yaddaşı.", + "featureSkillsTitle": "Bacarıqlar Çərçivəsi", + "featureSkillsText": "Daxili və fərdi bacarıqlar, qum qutusu mühitində icra, sorğuların ələ keçirilməsi və kontekst daxil edilməsi imkanlarına malik genişləndirilə bilən bacarıq sistemi.", + "featureAcpTitle": "Agent Kommunikasiyası", + "featureAcpText": "Agentlərarası iş axınlarını və alət orkestrasiyasını idarə etmək üçün Agent Communication Protocol (ACP) reyestri.", + "protocolAcpTitle": "ACP (Agent Kommunikasiyası)", + "protocolAcpDesc": "Agentlərarası kommunikasiya və alət paylaşımı üçün ACP reyestri vasitəsilə agentləri qeydiyyatdan keçirin və idarə edin.", + "protocolAcpStep1": "Qeydiyyatdan keçmiş ACP agentlərinə baxmaq üçün İdarəetmə paneli → Agentlər bölməsinə keçin.", + "protocolAcpStep2": "İmkanları və son nöqtə konfiqurasiyası ilə yeni agentləri qeydiyyatdan keçirin.", + "protocolAcpStep3": "Agentlərin kommunikasiya kanallarını konfiqurasiya etmək üçün CLI Alətlərindən istifadə edin.", "metadataTitleTemplate": "%s — OmniRoute Sənədləri", "metadataDefaultTitle": "OmniRoute Sənədləri", "metadataDescription": "OmniRoute AI qapısı üçün ətraflı sənədləşmə — qurma, API, sıxma, yerləşdirmə və daha çox.", @@ -10257,7 +10264,7 @@ "apiExplorerDescription": "OmniRoute son nöqtələrini canlı sınayın. Bir son nöqtə seçin, tələbinizi konfiqurasiya edin və cavabı real vaxtda görün.", "apiExplorerSseStarted": "SSE axını başladı — real vaxt çıxışı üçün terminal/devtools-u yoxlayın.", "apiExplorerError": "Xəta: {message}", - "apiExplorerAuth": "auth", + "apiExplorerAuth": "autentifikasiya", "apiExplorerResponseLabel": "Cavab", "apiExplorerSelectEndpoint": "Araşdırmaq üçün bir son nöqtə seçin", "apiExplorerChooseApi": "Yan menyudan bir API seçin, detalları görmək və onu canlı sınaqdan keçirmək üçün", @@ -10276,128 +10283,128 @@ } }, "legal": { - "privacyPolicy": "Privacy Policy", - "termsOfService": "Terms of Service", - "providerConfigurations": "Provider configurations", - "apiKeys": "API keys", - "usageLogs": "Usage logs", - "applicationSettings": "Application settings", - "viewExportAnalytics": "View and export usage analytics", - "clearHistory": "Clear usage history at any time", - "configureRetention": "Configure log retention policies", - "backupRestore": "Back up and restore your database", - "privacyMetadataTitle": "Privacy Policy | OmniRoute", - "privacyMetadataDescription": "Privacy policy for the OmniRoute AI API proxy router.", - "termsMetadataTitle": "Terms of Service | OmniRoute", - "termsMetadataDescription": "Terms of service for the OmniRoute AI API proxy router.", - "backToHome": "Back to home", - "lastUpdated": "Last updated: {date}", - "policyLastUpdatedDate": "February 13, 2026", + "privacyPolicy": "Məxfilik Siyasəti", + "termsOfService": "Xidmət Şərtləri", + "providerConfigurations": "Provayder konfiqurasiyaları", + "apiKeys": "API açarları", + "usageLogs": "İstifadə jurnalları", + "applicationSettings": "Tətbiq parametrləri", + "viewExportAnalytics": "İstifadə analitikasına baxın və onu ixrac edin", + "clearHistory": "İstifadə tarixçəsini istənilən vaxt təmizləyin", + "configureRetention": "Jurnalların saxlanma siyasətlərini konfiqurasiya edin", + "backupRestore": "Verilənlər bazanızın ehtiyat nüsxəsini yaradın və bərpa edin", + "privacyMetadataTitle": "Məxfilik Siyasəti | OmniRoute", + "privacyMetadataDescription": "OmniRoute AI API proksi marşrutlayıcısı üçün məxfilik siyasəti.", + "termsMetadataTitle": "Xidmət Şərtləri | OmniRoute", + "termsMetadataDescription": "OmniRoute AI API proksi marşrutlayıcısı üçün xidmət şərtləri.", + "backToHome": "Ana səhifəyə qayıt", + "lastUpdated": "Son yenilənmə: {date}", + "policyLastUpdatedDate": "13 fevral 2026-cı il", "listSeparator": "-", - "questionsVisit": "Questions? Visit our", - "githubRepository": "GitHub repository", - "privacySection1Title": "1. Local-First Architecture", - "privacySection1Text": "OmniRoute is designed as a local-first application. All data processing and storage occurs entirely on your machine. There is no centralized server collecting your information.", - "privacySection2Title": "2. Data We Store", - "privacyDataStoredIn": "The following data is stored locally in", - "privacyDataProviderConfigurationsDesc": "connection URLs, provider types, and priority settings", - "privacyDataApiKeysDesc": "encrypted and stored locally for authenticating with AI providers", - "privacyDataUsageLogsDesc": "request counts, token usage, model names, timestamps, and response times", - "privacyDataApplicationSettingsDesc": "theme preferences, routing strategy, and combo configurations", - "privacySection3Title": "3. No Telemetry", - "privacySection3Text": "OmniRoute does not collect telemetry, analytics, or crash reports. No data is sent to us or any third party. Your usage patterns, API calls, and configurations remain entirely private.", - "privacySection4Title": "4. Third-Party AI Providers", - "privacySection4Text": "When you make API calls through OmniRoute, your requests are forwarded to the AI providers you have configured (for example: OpenAI, Anthropic, Google). These providers have their own privacy policies that govern how they handle your data. Please review:", - "privacyOpenAiPolicy": "OpenAI Privacy Policy", - "privacyAnthropicPolicy": "Anthropic Privacy Policy", - "privacyGooglePolicy": "Google Privacy Policy", - "privacySection5Title": "5. Cloud Sync (Optional)", - "privacySection5Text": "If you enable the optional cloud sync feature, provider configurations and API keys may be transmitted to a configured cloud endpoint. This feature is disabled by default and requires explicit opt-in.", - "privacySection6Title": "6. Logging", - "privacyLoggingIntro": "Request logs can be configured through the dashboard settings. You can:", - "privacySection7Title": "7. Your Rights", - "privacySection7TextStart": "Since all data is stored locally, you have full control. You can delete your data at any time by removing the", - "privacySection7TextEnd": "directory or using the database backup and restore features in the dashboard.", - "termsSection1Title": "1. Overview", - "termsSection1Text": "OmniRoute is a local-first AI API proxy router that operates entirely on your machine. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "termsSection2Title": "2. User Responsibilities", - "termsResponsibilityApiKeys": "You are solely responsible for managing your own API keys and credentials for third-party AI providers (OpenAI, Anthropic, Google, etc.).", - "termsResponsibilityCompliance": "You must comply with the terms of service of each AI provider whose API you access through OmniRoute.", - "termsResponsibilitySecurity": "You are responsible for the security of your local OmniRoute installation, including setting a password and restricting network access.", - "termsSection3Title": "3. How It Works", - "termsSection3Text": "OmniRoute acts as an intermediary proxy. API calls sent to OmniRoute are translated and forwarded to your configured AI providers. OmniRoute does not modify the content of your requests or responses beyond the necessary protocol translation.", - "termsSection4Title": "4. Data Handling", - "termsDataStoredLocally": "All data is stored locally on your machine in a SQLite database.", - "termsNoTransmission": "OmniRoute does not transmit any data to external servers unless you explicitly enable cloud sync features.", - "termsDataLocationText": "Usage logs, API keys, and configuration are stored in", - "termsSection5Title": "5. Disclaimer", - "termsSection5Text": "OmniRoute is provided \"as is\" without warranty of any kind. We are not responsible for any costs incurred through API usage, service disruptions, or data loss. Always maintain backups of your configuration.", - "termsSection6Title": "6. Open Source", - "termsSection6Text": "OmniRoute is open-source software. You are free to inspect, modify, and distribute it under the terms of its license." + "questionsVisit": "Suallarınız var? Ziyarət edin:", + "githubRepository": "GitHub repozitoriyamız", + "privacySection1Title": "1. Lokal-prioritetli arxitektura", + "privacySection1Text": "OmniRoute lokal-prioritetli tətbiq kimi hazırlanıb. Bütün məlumatların emalı və saxlanması tamamilə sizin cihazınızda həyata keçirilir. Məlumatlarınızı toplayan mərkəzləşdirilmiş server yoxdur.", + "privacySection2Title": "2. Saxladığımız məlumatlar", + "privacyDataStoredIn": "Aşağıdakı məlumatlar lokal olaraq burada saxlanılır:", + "privacyDataProviderConfigurationsDesc": "bağlantı URL-ləri, provayder növləri və prioritet parametrləri", + "privacyDataApiKeysDesc": "şifrələnir və AI provayderlərində autentifikasiya üçün lokal olaraq saxlanılır", + "privacyDataUsageLogsDesc": "sorğu sayları, token istifadəsi, model adları, vaxt möhürləri və cavab müddətləri", + "privacyDataApplicationSettingsDesc": "mövzu tərcihləri, marşrutlaşdırma strategiyası və kombinasiya konfiqurasiyaları", + "privacySection3Title": "3. Telemetriya yoxdur", + "privacySection3Text": "OmniRoute telemetriya, analitika və ya qəza hesabatları toplamır. Bizə və ya hər hansı üçüncü tərəfə heç bir məlumat göndərilmir. İstifadə nümunələriniz, API çağırışlarınız və konfiqurasiyalarınız tamamilə məxfi qalır.", + "privacySection4Title": "4. Üçüncü tərəf AI provayderləri", + "privacySection4Text": "OmniRoute vasitəsilə API çağırışları etdiyiniz zaman sorğularınız konfiqurasiya etdiyiniz AI provayderlərinə (məsələn: OpenAI, Anthropic, Google) yönləndirilir. Bu provayderlərin məlumatlarınızı necə idarə etdiklərini tənzimləyən öz məxfilik siyasətləri var. Zəhmət olmasa, nəzərdən keçirin:", + "privacyOpenAiPolicy": "OpenAI Məxfilik Siyasəti", + "privacyAnthropicPolicy": "Anthropic Məxfilik Siyasəti", + "privacyGooglePolicy": "Google Məxfilik Siyasəti", + "privacySection5Title": "5. Bulud Sinxronizasiyası (İstəyə bağlı)", + "privacySection5Text": "İstəyə bağlı bulud sinxronizasiyası funksiyasını aktivləşdirsəniz, provayder konfiqurasiyaları və API açarları konfiqurasiya edilmiş bulud son nöqtəsinə ötürülə bilər. Bu funksiya standart olaraq deaktivdir və açıq şəkildə razılıq verilməsini tələb edir.", + "privacySection6Title": "6. Jurnallaşdırma", + "privacyLoggingIntro": "Sorğu jurnallarını idarəetmə panelinin parametrləri vasitəsilə konfiqurasiya edə bilərsiniz. Siz bunları edə bilərsiniz:", + "privacySection7Title": "7. Hüquqlarınız", + "privacySection7TextStart": "Bütün məlumatlar lokal olaraq saxlandığı üçün tam nəzarət sizdədir. Məlumatlarınızı istənilən vaxt", + "privacySection7TextEnd": "qovluğunu silməklə və ya idarəetmə panelində verilənlər bazasının ehtiyat nüsxələmə və bərpa funksiyalarından istifadə etməklə silə bilərsiniz.", + "termsSection1Title": "1. Ümumi baxış", + "termsSection1Text": "OmniRoute tamamilə cihazınızda işləyən, ilk növbədə lokal istifadəyə əsaslanan süni intellekt API proksi marşrutlaşdırıcısıdır. O, yük balanslaşdırması, nasazlıq zamanı ehtiyat mexanizmə keçid və istifadə izləməsi ilə sorğuları bir neçə süni intellekt provayderinə yönləndirir.", + "termsSection2Title": "2. İstifadəçinin öhdəlikləri", + "termsResponsibilityApiKeys": "Üçüncü tərəf süni intellekt provayderləri (OpenAI, Anthropic, Google və s.) üçün öz API açarlarınızı və giriş məlumatlarınızı idarə etməyə yalnız siz cavabdehsiniz.", + "termsResponsibilityCompliance": "OmniRoute vasitəsilə API-sinə daxil olduğunuz hər bir süni intellekt provayderinin xidmət şərtlərinə əməl etməlisiniz.", + "termsResponsibilitySecurity": "Parol təyin etmək və şəbəkə girişini məhdudlaşdırmaq da daxil olmaqla, lokal OmniRoute quraşdırmanızın təhlükəsizliyinə siz cavabdehsiniz.", + "termsSection3Title": "3. İş prinsipi", + "termsSection3Text": "OmniRoute vasitəçi proksi kimi fəaliyyət göstərir. OmniRoute-a göndərilən API çağırışları çevrilir və konfiqurasiya etdiyiniz süni intellekt provayderlərinə yönləndirilir. OmniRoute zəruri protokol çevirməsindən əlavə, sorğu və ya cavablarınızın məzmununu dəyişdirmir.", + "termsSection4Title": "4. Məlumatların emalı", + "termsDataStoredLocally": "Bütün məlumatlar cihazınızdakı SQLite verilənlər bazasında lokal olaraq saxlanılır.", + "termsNoTransmission": "Bulud sinxronlaşdırma funksiyalarını açıq şəkildə aktivləşdirmədiyiniz halda, OmniRoute heç bir məlumatı xarici serverlərə ötürmür.", + "termsDataLocationText": "İstifadə jurnalları, API açarları və konfiqurasiya burada saxlanılır:", + "termsSection5Title": "5. İmtina bildirişi", + "termsSection5Text": "OmniRoute heç bir zəmanət verilmədən \"olduğu kimi\" təqdim edilir. API istifadəsi nəticəsində yaranan xərclərə, xidmət fasilələrinə və ya məlumat itkisinə görə məsuliyyət daşımırıq. Konfiqurasiyanızın ehtiyat nüsxələrini həmişə saxlayın.", + "termsSection6Title": "6. Açıq mənbə", + "termsSection6Text": "OmniRoute açıq mənbəli proqram təminatıdır. Lisenziyasının şərtlərinə uyğun olaraq onu yoxlamaq, dəyişdirmək və yaymaqda sərbəstsiniz." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", - "cliToolsRedirectTitle": "Looking to configure your IDE?", - "cliToolsRedirectDesc": "If you want to point Claude Code, Cursor, Codex, or any IDE at OmniRoute as a proxy, go to CLI Tools instead. This page is for the reverse — using local CLI binaries as execution targets that OmniRoute can spawn and route requests through.", - "spawnArgsPlaceholder": "e.g., --quiet, --json, --no-auto-commits", - "binaryNamePlaceholder": "e.g., my-agent or /usr/local/bin/llm-cli", - "versionCommandPlaceholder": "e.g., my-agent --version", - "architectureTitle": "How Agent Targets Work", - "flowLocalBinary": "3 · CLI process with its own auth", - "flowOmniRoute": "1 · Request arrives at OmniRoute", - "agentNamePlaceholder": "e.g., My Custom Agent", - "architectureDescription": "When a request arrives, OmniRoute can spawn a local CLI binary (e.g., claude, codex, goose) and pipe the request through it. The CLI processes the request using its own credentials and returns the result back through OmniRoute.", - "flowExecute": "4 · Response returned to client", - "flowSpawn": "2 · OmniRoute spawns local binary", - "cliToolsRedirectCta": "Go to CLI Tools →", - "comparisonTitle": "CLI Tools vs Agent Targets — What's the Difference?", - "comparisonCliToolsLabel": "CLI Tools page", - "comparisonCliToolsTitle": "Your IDE sends requests through OmniRoute", - "comparisonCliToolsDesc": "Configure Claude Code, Codex, Cursor, and other IDEs to use OmniRoute as their API base URL. OmniRoute acts as a proxy, routing requests to your configured providers.", - "comparisonAgentsLabel": "This page (Agent Targets)", - "comparisonAgentsTitle": "OmniRoute sends requests into local CLI tools", - "comparisonAgentsDesc": "OmniRoute can spawn local CLI binaries (claude, codex, goose) as execution backends. The CLI tool processes the request using its own authentication and returns the result.", - "comparisonSummary": "In short: CLI Tools = you configure tools to point at OmniRoute. Agent Targets = OmniRoute uses tools as its endpoints.", - "agentUseCaseHint": "Can be used as an execution target via ACP protocol", - "flowDiagramClient": "Client App", - "flowDiagramClientDesc": "SDK, API, or upstream service", + "title": "CLI agentləri", + "description": "Sisteminizdə quraşdırılmış CLI agentlərini aşkar edin. Avtomatik aşkarlama üçün fərdi agentlər əlavə edin.", + "refresh": "Yenilə", + "installed": "Quraşdırılıb", + "notFound": "Tapılmadı", + "builtIn": "Daxili", + "custom": "Fərdi", + "remove": "Sil", + "addCustomAgent": "Fərdi agent əlavə et", + "addCustomAgentDesc": "Aşkarlama üçün istənilən CLI alətini qeydiyyatdan keçirin. Yeniləmə zamanı o, avtomatik skan ediləcək.", + "agentName": "Agentin adı", + "binaryName": "Binar faylın adı", + "versionCommand": "Versiya əmri", + "spawnArgs": "İşəsalma arqumentləri", + "addAgent": "Agent əlavə et", + "scanning": "Sistem CLI agentləri üçün skan edilir...", + "opencodeIntegration": "OpenCode inteqrasiyası", + "opencodeDetected": "opencode {version} aşkarlandı", + "opencodeDesc": "OmniRoute əsas URL-iniz və bütün mövcud modellərlə istifadəyə hazır {configFile} yaradın — onu layihənizin kök qovluğuna yerləşdirin və {command} əmrini icra edin.", + "downloadConfig": "{file} faylını endir", + "downloaded": "Endirildi!", + "setupGuideTitle": "Quraşdırma təlimatı", + "openCliTools": "CLI Alətlərini aç", + "setupGuideDetectCliTitle": "Quraşdırılmış CLI-ləri aşkar et", + "setupGuideDetectCliDesc": "CLI quraşdırdıqdan və ya yenilədikdən sonra OmniRoute-un binar faylları və versiyaları yenidən skan etməsi üçün Yenilə düyməsinə klikləyin.", + "setupGuideCustomAgentTitle": "Fərdi binar faylı qeydiyyatdan keçir", + "setupGuideCustomAgentDesc": "CLI-niz daxili siyahıda olmadıqda Fərdi Agent Əlavə Et seçimindən istifadə edin. Binar faylın adını və versiya əmrini daxil edin.", + "setupGuideCommandMissingTitle": "'command not found' xətasını düzəlt", + "setupGuideCommandMissingDesc": "CLI əmrinin PATH-də mövcud olduğuna əmin olun, yeni terminal sessiyası açın və Yenilə əmrini yenidən işə salın.", + "cliToolsRedirectTitle": "IDE-nizi konfiqurasiya etmək istəyirsiniz?", + "cliToolsRedirectDesc": "Claude Code, Cursor, Codex və ya hər hansı IDE-ni proksi kimi OmniRoute-a yönəltmək istəyirsinizsə, bunun əvəzinə CLI Alətlərinə keçin. Bu səhifə əks məqsəd üçündür — yerli CLI binar fayllarından OmniRoute-un işə sala və sorğuları onların üzərindən yönləndirə biləcəyi icra hədəfləri kimi istifadə etmək.", + "spawnArgsPlaceholder": "məs., --quiet, --json, --no-auto-commits", + "binaryNamePlaceholder": "məs., my-agent və ya /usr/local/bin/llm-cli", + "versionCommandPlaceholder": "məs., my-agent --version", + "architectureTitle": "Agent Hədəfləri Necə İşləyir", + "flowLocalBinary": "3 · Öz autentifikasiyası olan CLI prosesi", + "flowOmniRoute": "1 · Sorğu OmniRoute-a daxil olur", + "agentNamePlaceholder": "məs., Mənim Fərdi Agentim", + "architectureDescription": "Sorğu daxil olduqda OmniRoute yerli CLI binar faylını (məs., claude, codex, goose) işə sala və sorğunu onun üzərindən ötürə bilər. CLI sorğunu öz giriş məlumatlarından istifadə edərək emal edir və nəticəni OmniRoute vasitəsilə geri qaytarır.", + "flowExecute": "4 · Cavab müştəriyə qaytarılır", + "flowSpawn": "2 · OmniRoute yerli binar faylı işə salır", + "cliToolsRedirectCta": "CLI Alətlərinə keç →", + "comparisonTitle": "CLI Alətləri və Agent Hədəfləri — Fərq Nədir?", + "comparisonCliToolsLabel": "CLI Alətləri səhifəsi", + "comparisonCliToolsTitle": "IDE-niz sorğuları OmniRoute vasitəsilə göndərir", + "comparisonCliToolsDesc": "Claude Code, Codex, Cursor və digər IDE-ləri API baza URL-i kimi OmniRoute-dan istifadə etmək üçün konfiqurasiya edin. OmniRoute proksi kimi fəaliyyət göstərərək sorğuları konfiqurasiya etdiyiniz provayderlərə yönləndirir.", + "comparisonAgentsLabel": "Bu səhifə (Agent Hədəfləri)", + "comparisonAgentsTitle": "OmniRoute sorğuları yerli CLI alətlərinə göndərir", + "comparisonAgentsDesc": "OmniRoute yerli CLI binar fayllarını (claude, codex, goose) icra mexanizmləri kimi işə sala bilər. CLI aləti sorğunu öz autentifikasiyasından istifadə edərək emal edir və nəticəni qaytarır.", + "comparisonSummary": "Qısaca: CLI Alətləri = alətləri OmniRoute-a yönələcək şəkildə konfiqurasiya edirsiniz. Agent Hədəfləri = OmniRoute alətlərdən son nöqtələri kimi istifadə edir.", + "agentUseCaseHint": "ACP protokolu vasitəsilə icra hədəfi kimi istifadə edilə bilər", + "flowDiagramClient": "Müştəri Tətbiqi", + "flowDiagramClientDesc": "SDK, API və ya yuxarı səviyyəli xidmət", "flowDiagramOmniRoute": "OmniRoute", - "flowDiagramOmniRouteDesc": "Receives request and selects target", - "flowDiagramSpawn": "Spawn Process", - "flowDiagramSpawnDesc": "Launches CLI binary via stdio", - "flowDiagramCli": "CLI Agent", - "flowDiagramCliDesc": "Processes with own auth/model", - "fingerprintSettingsHint": "CLI Fingerprint matching (disguise requests as specific CLI tools) can be configured in", - "settingsRoutingLink": "Settings/Routing", - "openSettings": "Settings", + "flowDiagramOmniRouteDesc": "Sorğunu qəbul edir və hədəfi seçir", + "flowDiagramSpawn": "Prosesi İşə Sal", + "flowDiagramSpawnDesc": "CLI binar faylını stdio vasitəsilə işə salır", + "flowDiagramCli": "CLI Agenti", + "flowDiagramCliDesc": "Öz autentifikasiyası/modeli ilə emal edir", + "fingerprintSettingsHint": "CLI barmaq izi uyğunluğu (sorğuları xüsusi CLI alətləri kimi maskalamaq) burada konfiqurasiya edilə bilər:", + "settingsRoutingLink": "Parametrlər/Marşrutlaşdırma", + "openSettings": "Parametrlər", "copyRawUrlTitle": "Xam URL-ni panoya kopyalayın", "copied": "Kopyalandı!", "copyUrl": "URL-i kopyalayın", @@ -10416,22 +10423,22 @@ "howToUseStep3": "Agent SKILL.md faylını əldə edir və OmniRoute-un API və ya CLI-sını öyrənir — heç bir mexaniki sənədləşməyə ehtiyac yoxdur." }, "cloudAgents": { - "title": "Cloud Agents", - "description": "Manage autonomous coding agents (Jules, Devin, Codex Cloud)", - "loading": "Loading tasks...", - "aboutTitle": "About Cloud Agents", - "aboutDescription": "Cloud agents are remote AI coding assistants that can execute tasks autonomously. They work differently from local CLI agents - you interact with them through OmniRoute's API.", - "howItWorksTitle": "How it works:", - "howItWorksDesc": "Create a task → Agent analyzes and proposes a plan → You approve → Agent executes → Results returned", - "newTaskTitle": "Create New Task", - "newTaskDescription": "Start a new task with a cloud agent", - "selectAgent": "Select Agent", - "taskDescription": "Task Description", - "taskDescriptionPlaceholder": "Describe what you want the agent to do...", - "startTask": "Start Task", - "tasks": "Tasks", - "taskDetail": "Task Detail", - "noTasks": "No tasks yet. Create one to get started.", + "title": "Bulud agentləri", + "description": "Avtonom kodlaşdırma agentlərini (Jules, Devin, Codex Cloud) idarə edin", + "loading": "Tapşırıqlar yüklənir...", + "aboutTitle": "Bulud agentləri haqqında", + "aboutDescription": "Bulud agentləri tapşırıqları avtonom şəkildə yerinə yetirə bilən uzaq AI kodlaşdırma köməkçiləridir. Onlar yerli CLI agentlərindən fərqli işləyir — onlarla OmniRoute API-si vasitəsilə qarşılıqlı əlaqə qurursunuz.", + "howItWorksTitle": "İş prinsipi:", + "howItWorksDesc": "Tapşırıq yaradın → Agent təhlil edib plan təklif edir → Siz təsdiqləyirsiniz → Agent icra edir → Nəticələr qaytarılır", + "newTaskTitle": "Yeni tapşırıq yaradın", + "newTaskDescription": "Bulud agenti ilə yeni tapşırığa başlayın", + "selectAgent": "Agent seçin", + "taskDescription": "Tapşırığın təsviri", + "taskDescriptionPlaceholder": "Agentin nə etməsini istədiyinizi təsvir edin...", + "startTask": "Tapşırığı başladın", + "tasks": "Tapşırıqlar", + "taskDetail": "Tapşırıq təfərrüatları", + "noTasks": "Hələ tapşırıq yoxdur. Başlamaq üçün birini yaradın.", "noTasksTitle": "Hələ ki tapşırıq yoxdur", "noTasksDesc": "Başlamaq üçün ilk tapşırığınızı yaradın.", "tasksTab": "Tapşırıqlar", @@ -10454,24 +10461,24 @@ "settingAutoPRDesc": "Tapşırıq tamamlandıqda, dəyişikliklərlə birlikdə avtomatik olaraq Pull Request yaradın.", "settingRequireApproval": "Planın təsdiqlənməsini tələb et", "settingRequireApprovalDesc": "Agent təklif olunan planı icra etməzdən əvvəl həmişə əl ilə təsdiqləməni gözləyin.", - "untitledTask": "Untitled Task", - "created": "Created", - "conversation": "Conversation", - "result": "Result", - "error": "Error", - "planReady": "Plan Ready for Approval", - "approvePlan": "Approve Plan", - "rejectPlan": "Reject & Cancel", - "sendMessagePlaceholder": "Send a message to the agent...", - "cancel": "Cancel", - "delete": "Delete", - "selectTaskPrompt": "Select a task to view details", - "statusPending": "Pending", - "statusRunning": "Running", - "statusWaitingApproval": "Waiting Approval", - "statusCompleted": "Completed", - "statusFailed": "Failed", - "statusCancelled": "Cancelled", + "untitledTask": "Adsız tapşırıq", + "created": "Yaradıldı", + "conversation": "Söhbət", + "result": "Nəticə", + "error": "Xəta", + "planReady": "Plan təsdiq üçün hazırdır", + "approvePlan": "Planı təsdiqləyin", + "rejectPlan": "Rədd edin və ləğv edin", + "sendMessagePlaceholder": "Agentə mesaj göndərin...", + "cancel": "Ləğv edin", + "delete": "Silin", + "selectTaskPrompt": "Təfərrüatlara baxmaq üçün tapşırıq seçin", + "statusPending": "Gözləyir", + "statusRunning": "İcra olunur", + "statusWaitingApproval": "Təsdiq gözləyir", + "statusCompleted": "Tamamlandı", + "statusFailed": "Uğursuz oldu", + "statusCancelled": "Ləğv edildi", "repositoryName": "Repozitor adı", "repositoryUrl": "Repozitor URL", "branch": "Filial", @@ -10491,175 +10498,175 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "Sadə söhbət", + "streaming": "Axın rejimi", + "system-prompt": "Sistem təlimatı", + "thinking": "Düşünmə", + "tool-calling": "Alət çağırışı", + "multi-turn": "Çoxnövbəli", "vision": "Görmə", "schema-coercion": "Sxem məcburiyyəti" }, "templateDescriptions": { - "simple-chat": "Basic chat template with system message", - "streaming": "Template for streaming responses", - "system-prompt": "Template with custom system prompt", - "thinking": "Template with reasoning/thinking budget", - "tool-calling": "Template for tool/function calling", - "multi-turn": "Template for multi-turn conversations", + "simple-chat": "Sistem mesajı ilə əsas söhbət şablonu", + "streaming": "Axın şəklində cavablar üçün şablon", + "system-prompt": "Fərdi sistem təlimatı ilə şablon", + "thinking": "Əsaslandırma/düşünmə büdcəsi olan şablon", + "tool-calling": "Alət/funksiya çağırışı üçün şablon", + "multi-turn": "Çoxnövbəli söhbətlər üçün şablon", "vision": "Şəkil daxiletməsi ilə multimodal şablon", "schema-coercion": "Strukturlaşdırılmış çıxış / JSON sxeminin tətbiqi" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful AI assistant.", - "userGreeting": "Hello! How can I help you today?" + "system": "Siz kömək etməyə hazır olan süni intellekt köməkçisisiniz.", + "userGreeting": "Salam! Bu gün sizə necə kömək edə bilərəm?" }, "streaming": { - "prompt": "Write a story about" + "prompt": "Haqqında hekayə yazın:" }, "systemPrompt": { - "question": "What is the meaning of life?", - "systemInstruction": "Provide a thoughtful, philosophical answer." + "question": "Həyatın mənası nədir?", + "systemInstruction": "Düşünülmüş, fəlsəfi cavab verin." }, "thinking": { - "question": "Explain quantum computing" + "question": "Kvant hesablamasını izah edin" }, "toolCalling": { - "cityNameDescription": "The name of the city to get weather for", - "toolDescription": "Get current weather for a location", - "userWeather": "What's the weather in Tokyo?" + "cityNameDescription": "Hava məlumatının əldə ediləcəyi şəhərin adı", + "toolDescription": "Məkan üçün cari hava məlumatını əldə edin", + "userWeather": "Tokioda hava necədir?" }, "multiTurn": { - "system": "You are a helpful assistant.", - "assistantExample": "I'd be happy to help you with that.", - "userInitial": "I need help with", - "userFollowUp": "Can you elaborate on that?" + "system": "Siz kömək etməyə hazır olan köməkçisiniz.", + "assistantExample": "Bu məsələdə sizə kömək etməkdən məmnun olaram.", + "userInitial": "Bu mövzuda köməyə ehtiyacım var:", + "userFollowUp": "Bunu daha ətraflı izah edə bilərsiniz?" } }, "cache": { - "title": "Cache Management", - "description": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "refresh": "Refresh", - "clearAll": "Clear Semantic Cache", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "title": "Keşin idarə edilməsi", + "description": "Provayder sorğu keşinin səmərəliliyini və yerli semantik cavabların təkrar istifadəsini izləyin.", + "refresh": "Yenilə", + "clearAll": "Semantik keşi təmizlə", + "memoryEntries": "Yaddaşdakı qeydlər", + "memoryEntriesSub": "Operativ yaddaşdakı LRU", + "dbEntries": "Verilənlər bazasındakı qeydlər", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Keş uyğunluqları", + "cacheHitsSub": "cəmi {total} qeyddən", + "tokensSaved": "Qənaət edilən tokenlər", + "tokensSavedSub": "Uyğunluqlar əsasında təxmin edilib", + "hitRate": "Uyğunluq faizi", + "performance": "Keşin performansı", + "autoRefresh": "Hər {seconds} saniyədən bir avtomatik yenilənir", + "hits": "Uyğunluqlar", + "misses": "Uyğunsuzluqlar", + "total": "Cəmi", + "behavior": "Keş davranışı", + "behaviorDeterministic": "Yalnız temperature=0 olan axınsız sorğular keşlənir.", + "behaviorBypass": "{header} başlığı ilə yan keçin.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", - "clearSuccess": "Semantic cache cleared. {count} entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "behaviorTtl": "Standart TTL: 30 dəqiqə. {envVar} vasitəsilə konfiqurasiya edin.", + "idempotency": "İdempotentlik qatı", + "activeDedupKeys": "Aktiv dublikatlaşdırmanın qarşısını alma açarları", + "dedupWindow": "Dublikatlaşdırmanın qarşısını alma müddəti", + "clearSuccess": "Semantik keş təmizləndi. {count} qeyd silindi.", + "clearError": "Keşi təmizləmək alınmadı.", + "unavailable": "Keş əlçatan deyil", + "unavailableDesc": "Keş statistikasını əldə etmək mümkün olmadı. Serverin işlədiyinə əmin olun.", "loadingCacheAria": "Keş yüklənir", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", - "cachedTokens": "Cache Read Tokens", - "cacheCreationTokens": "Cache Write Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", - "cachedTokensRead": "Read from cache", - "cacheCreationWrite": "Written to cache", - "cacheReuseRatio": "Cache Reuse Ratio", - "cacheReuseRatioDesc": "Cache read tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "promptCache": "Sorğu keşi (provayder tərəfində)", + "semanticCache": "Semantik keş", + "promptCacheSectionDesc": "Keşə nəzarətin harada aktiv olduğunu və giriş məlumatlarının nə qədər təkrar istifadə edildiyini görməyiniz üçün istifadə tarixçəsindəki provayder tərəfli sorğu keşləmə fəaliyyətini göstərir.", + "promptTrendDesc": "Son 24 saat üzrə saatlıq sorğu həcmi, keş əhatəsi və keşdən oxuma həcmi.", + "cachedRequests": "Keşlənmiş sorğular", + "cachedRequests24h": "Keşlənmiş sorğular (24 saat)", + "cacheHitRate": "Keşə düşmə faizi", + "cacheRate": "Keş faizi", + "cacheRateDesc": "ümumi sorğuların", + "cachedTokens": "Keşdən oxunan tokenlər", + "cacheCreationTokens": "Keşə yazılan tokenlər", + "cacheMetrics": "Sorğu keşi göstəriciləri", + "withCacheControl": "Keşə nəzarət ilə", + "cachedTokensRead": "Keşdən oxundu", + "cacheCreationWrite": "Keşə yazıldı", + "cacheReuseRatio": "Keşin təkrar istifadə nisbəti", + "cacheReuseRatioDesc": "Keşdən oxunan tokenlər / Ümumi giriş tokenləri", + "estCostSaved": "Təxmini qənaət edilən xərc", + "lastUpdated": "Son yenilənmə", + "hoursTracked": "izlənilən saat", + "busiestHour": "Ən sıx saat", + "peakCacheRate": "Ən yüksək keş faizi", + "trendHour": "Saat", + "activityVolume": "Fəaliyyət", + "requestsShort": "sorğu", + "inputShort": "Giriş", + "cachedShort": "Keşlənib", + "writeShort": "Yazma", + "resetting": "Sıfırlanır...", + "resetMetrics": "Metrikaları sıfırla", + "byProvider": "Provayder üzrə bölgü", + "providerCacheRateDesc": "Hər bir provayder ümumi giriş tokenlərini, keşdən oxunan tokenləri və keşə yazılan tokenləri göstərir ki, təkrar istifadə nisbətini ilkin ümumi göstəricilərlə müqayisə edə biləsiniz.", "provider": "Provider", - "requests": "Requests", - "inputTokens": "Total Input Tokens", - "cachedTokensCol": "Cache Read", - "cacheCreation": "Cache Write", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "requests": "Sorğular", + "inputTokens": "Ümumi giriş tokenləri", + "cachedTokensCol": "Keşdən oxuma", + "cacheCreation": "Keşə yazma", + "trend24h": "Keş tendensiyası (24 saat)", + "peakCached": "Keşlənən maksimum", + "cached": "Keşlənib", + "overview": "İcmal", "tableProvider": "Provayder", "tableModel": "Model", "performanceTitle": "Performans", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoute-un öz deterministik cavab keşi. Aktiv olduqda, təkrarlanan, axınsız temperature=0 sorğuları yuxarı axın provayderinə müraciət etmədən lokal olaraq cavablandırıla bilər.", + "semanticCacheDisabledDesc": "Semantik keş deaktivdir. Ayarlarda onu yenidən aktiv edənədək OmniRoute lokal cavabların təkrar istifadəsini ötürəcək.", + "semanticEntriesDesc": "Hazırda SQLite-da saxlanılan qalıcı semantik keş qeydləri. Provayder tərəfli prompt keşi fəaliyyəti burada göstərilmir.", + "searchEntries": "Qeydləri axtarın...", + "search": "Axtarış", + "loading": "Yüklənir...", + "entriesLoadError": "Semantik keş qeydlərini yükləmək alınmadı.", + "noEntries": "Keş qeydi tapılmadı", + "noPromptCacheData": "Hələ heç bir provayder tərəfli prompt keşi fəaliyyəti qeydə alınmayıb.", + "noTrendData": "Son 24 saat ərzində heç bir prompt keşi fəaliyyəti qeydə alınmayıb.", + "signature": "İmza", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", - "reasoningCache": "Reasoning Replay", - "reasoningCacheDesc": "Preserves model thinking for multi-turn tool calling flows", - "reasoningEntries": "Active Entries", - "reasoningReplayRate": "Replay Rate", - "reasoningReplays": "Total Replays", - "reasoningCharsCached": "Characters Cached", - "reasoningMisses": "Cache Misses", - "reasoningByProvider": "By Provider", - "reasoningByModel": "By Model", - "reasoningRecentEntries": "Recent Entries", - "reasoningToolCallId": "Tool Call ID", - "reasoningChars": "Characters", - "reasoningAge": "Age", - "reasoningView": "View", - "reasoningDetail": "Reasoning Content", - "reasoningBehavior": "Behavior", - "reasoningBehaviorCapture": "Captures reasoning_content from streaming responses", - "reasoningBehaviorReplay": "Re-injects on next turn when client omits it", - "reasoningBehaviorFallback": "Memory-first with SQLite fallback for crash recovery", - "reasoningBehaviorTtl": "TTL: 2 hours | Max entries: 2,000 (memory)", - "reasoningBehaviorModels": "Supported: DeepSeek, Kimi, Qwen-Thinking, GLM", - "reasoningClearAll": "Clear Reasoning Cache", - "reasoningClearSuccess": "Cleared {count} reasoning cache entries", - "reasoningClearError": "Failed to clear reasoning cache", - "reasoningNoData": "No reasoning entries cached yet. Entries appear when thinking models use tool calling.", + "created": "Yaradılıb", + "expires": "Bitmə vaxtı", + "actions": "Əməliyyatlar", + "deduplicatedRequests": "Dublikatları aradan qaldırılmış sorğular", + "savedCalls": "Qənaət edilmiş API çağırışları", + "totalProcessed": "Emal edilmiş ümumi sorğular", + "disabled": "Deaktivdir", + "totalRequests": "Ümumi sorğular", + "reasoningCache": "Məntiqi düşünmənin təkrar oynadılması", + "reasoningCacheDesc": "Çoxaddımlı alət çağırışı axınlarında modelin düşünmə prosesini qoruyur", + "reasoningEntries": "Aktiv qeydlər", + "reasoningReplayRate": "Təkrar oynatma nisbəti", + "reasoningReplays": "Ümumi təkrar oynatmalar", + "reasoningCharsCached": "Keşlənmiş simvollar", + "reasoningMisses": "Keş buraxılmaları", + "reasoningByProvider": "Provayder üzrə", + "reasoningByModel": "Model üzrə", + "reasoningRecentEntries": "Son qeydlər", + "reasoningToolCallId": "Alət çağırışı ID-si", + "reasoningChars": "Simvollar", + "reasoningAge": "Yaş", + "reasoningView": "Baxış", + "reasoningDetail": "Əsaslandırma məzmunu", + "reasoningBehavior": "Davranış", + "reasoningBehaviorCapture": "Axın cavablarından reasoning_content-i əldə edir", + "reasoningBehaviorReplay": "Müştəri onu buraxdıqda növbəti gedişdə yenidən daxil edir", + "reasoningBehaviorFallback": "Qəza sonrası bərpa üçün SQLite ehtiyatı ilə əvvəlcə yaddaşdan istifadə edir", + "reasoningBehaviorTtl": "TTL: 2 saat | Maks. qeyd sayı: 2,000 (yaddaşda)", + "reasoningBehaviorModels": "Dəstəklənir: DeepSeek, Kimi, Qwen-Thinking, GLM", + "reasoningClearAll": "Əsaslandırma keşini təmizlə", + "reasoningClearSuccess": "Əsaslandırma keşinin {count} qeydi təmizləndi", + "reasoningClearError": "Əsaslandırma keşini təmizləmək alınmadı", + "reasoningNoData": "Hələ heç bir əsaslandırma qeydi keşlənməyib. Düşünmə modelləri alət çağırışından istifadə etdikdə qeydlər görünəcək.", "cachePerformanceRetry": "Yenidən cəhd edin", - "cachePerformanceHitRate": "Hit Rate", + "cachePerformanceHitRate": "Uyğunluq faizi", "cachePerformanceAvgLatency": "Orta gecikmə (ms)", "cachePerformanceP95Latency": "p95 Gecikmə (ms)", "retry": "Yenidən cəhd edin", @@ -10669,56 +10676,56 @@ "minutesAgo": "{minutes} dəq əvvəl", "hoursAgo": "{hours} saat əvvəl", "daysAgo": "{days} gün əvvəl", - "entries": "Entries" + "entries": "Qeydlər" }, "proxyConfigModal": { - "levelGlobal": "Global", - "levelProvider": "Provider", - "levelCombo": "Combo", - "levelKey": "Key", - "levelDirect": "Direct (no proxy)", - "titleGlobal": "Global Proxy Configuration", - "titleLevel": "{level} Proxy — {label}", - "loading": "Loading proxy configuration...", - "inheritingFrom": "Inheriting from", - "source": "Source", - "savedProxy": "Saved Proxy", - "custom": "Custom", - "selectSavedProxyPlaceholder": "Select saved proxy...", - "proxyType": "Proxy Type", + "levelGlobal": "Qlobal", + "levelProvider": "Provayder", + "levelCombo": "Kombinasiya", + "levelKey": "Açar", + "levelDirect": "Birbaşa (proksisiz)", + "titleGlobal": "Qlobal proksi konfiqurasiyası", + "titleLevel": "{level} proksisi — {label}", + "loading": "Proksi konfiqurasiyası yüklənir...", + "inheritingFrom": "Miras alınır:", + "source": "Mənbə", + "savedProxy": "Yadda saxlanmış proksi", + "custom": "Fərdi", + "selectSavedProxyPlaceholder": "Yadda saxlanmış proksini seçin...", + "proxyType": "Proksi növü", "host": "Host", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", + "hostPlaceholder": "1.2.3.4 və ya proxy.example.com", "port": "Port", - "authOptional": "Authentication (optional)", - "username": "Username", - "usernamePlaceholder": "Username", - "password": "Password", - "passwordPlaceholder": "Password", - "connected": "Connected", + "authOptional": "Autentifikasiya (istəyə bağlı)", + "username": "İstifadəçi adı", + "usernamePlaceholder": "İstifadəçi adı", + "password": "Parol", + "passwordPlaceholder": "Parol", + "connected": "Qoşuldu", "ip": "IP:", - "connectionFailed": "Connection failed", - "testConnection": "Test connection", - "clear": "Clear", - "cancel": "Cancel", - "save": "Save", - "errorSelectSavedProxy": "Please select a saved proxy first.", - "errorSelectProxyFirst": "Please select a proxy first.", - "errorProxyNotFound": "Selected proxy not found.", - "errorClearSavedProxy": "Failed to clear saved proxy", - "errorSaveProxy": "Failed to save proxy configuration", - "errorClearProxy": "Failed to clear proxy configuration", - "errorSocks5Hidden": "SOCKS5 is configured but hidden because NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false." + "connectionFailed": "Bağlantı uğursuz oldu", + "testConnection": "Bağlantını yoxla", + "clear": "Təmizlə", + "cancel": "Ləğv et", + "save": "Yadda saxla", + "errorSelectSavedProxy": "Əvvəlcə yadda saxlanmış proksi seçin.", + "errorSelectProxyFirst": "Əvvəlcə proksi seçin.", + "errorProxyNotFound": "Seçilmiş proksi tapılmadı.", + "errorClearSavedProxy": "Yadda saxlanmış proksini təmizləmək mümkün olmadı", + "errorSaveProxy": "Proksi konfiqurasiyasını yadda saxlamaq mümkün olmadı", + "errorClearProxy": "Proksi konfiqurasiyasını təmizləmək mümkün olmadı", + "errorSocks5Hidden": "SOCKS5 konfiqurasiya edilib, lakin NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false olduğu üçün gizlədilib." }, "oauthModal": { - "title": "Connect {providerName}", - "waiting": "Waiting for authorization", - "completeAuthInPopup": "Complete authorization in popup.", + "title": "{providerName} ilə qoşul", + "waiting": "Avtorizasiya gözlənilir", + "completeAuthInPopup": "Avtorizasiyanı açılan pəncərədə tamamlayın.", "popupClosedHint": "If the popup closed without redirecting back (e.g. Qoder), this dialog will auto-switch to manual URL entry mode.", - "popupBlocked": "Popup blocked? Enter URL manually", - "deviceCodeVisitUrl": "Visit the URL below and enter code:", - "deviceCodeVerificationUrl": "Verification URL", - "deviceCodeYourCode": "Your code", - "deviceCodeWaiting": "Waiting for authorization...", + "popupBlocked": "Açılan pəncərə bloklanıb? URL-ni əl ilə daxil edin", + "deviceCodeVisitUrl": "Aşağıdakı URL-yə keçin və kodu daxil edin:", + "deviceCodeVerificationUrl": "Doğrulama URL-si", + "deviceCodeYourCode": "Kodunuz", + "deviceCodeWaiting": "Avtorizasiya gözlənilir...", "googleLoopbackTitle": "Google ilə daxil olma bu ünvandan tamamlana bilmir", "googleLoopbackWhatHappens": "Google yalnızca avtorizasiya kodunu {redirectUri} brauzerdən daxil olan giriş təsdiq edildikdə buraxır. Burada bu ünvan bu kompüterə işarə edir, OmniRoute serverinə deyil — buna görə də razılıq ekranı yönləndirilmir və kopyalanacaq geri çağırma URL-si yoxdur.", "googleLoopbackRecommended": "Tövsiyə olunur — bunu öz kompüterinizdə işlədin, sonra nəticəni aşağıda yapışdırın:", @@ -10726,7 +10733,7 @@ "googleLoopbackTunnelLabel": "Yoxsa SSH üzərindən panel portunu irəliləyin və OmniRoute-u tunel vasitəsilə yenidən yükləyin:", "googleLoopbackTunnelNote": "{userPlaceholder} yerinə SSH istifadəçi adınızı daxil edin, terminalı açıq saxlayın, sonra {localUrl} ünvanını açın və oradan yenidən qoşulun.", "googleLoopbackHeadlessAlt": "Tamamilə başsız istifadə üçün heç bir yerli geri çağırma olmadan, öz Google OAuth akreditasiyalarınızı və bir ictimai əsas URL-i konfiqurasiya edin.", - "remoteAccessInfo": "Remote access: Since you're accessing OmniRoute remotely, after authorization you'll see an error page (localhost not found). This is normal — just copy the full URL from your browser address bar and paste it below.", + "remoteAccessInfo": "Uzaqdan giriş: OmniRoute-a uzaqdan daxil olduğunuz üçün avtorizasiyadan sonra xəta səhifəsi görəcəksiniz (localhost tapılmadı). Bu normaldır — sadəcə brauzerinizin ünvan sətrindən tam URL-ni kopyalayıb aşağıya yapışdırın.", "loopbackMismatchTitle": "Bu ünvandan daxil olmaq mümkün deyil.", "loopbackMismatchWhatHappened": "Nə baş verir", "loopbackMismatchExplanation": "Girişinizi təsdiqlədikdən sonra, {providerName} həmişə brauzeri {redirectUri} ünvanına geri göndərir. Bu ünvan bu brauzeri işlədən kompüterə işarə edir, OmniRoute serverinə deyil — buna görə də, avtorizasiya kodu OmniRoute-a çatmır və provayder səhv mesajı göstərmədən daxil olmağı uğursuz edir.", @@ -10736,17 +10743,17 @@ "loopbackMismatchStep2": "Bu brauzerdə OmniRoute-u tunel vasitəsilə yenidən açın:", "loopbackMismatchStep3": "Sonra yeni tabdan {providerName} ilə yenidən qoşulun. İndi geri çağırma serverə çatır və giriş normal şəkildə tamamlanır.", "loopbackMismatchAlternative": "SSH girişiniz yoxdur? Əgər bu təminatçı token idxalı sekmesini təklif edirsə, token ilə qoşulun — bu yol döngə geri çağırma istifadə etmir.", - "step1OpenUrl": "Step 1: Open this URL in your browser", - "copy": "Copy", - "step2PasteCallback": "Step 2: Paste callback URL or authorization code here", - "step2Hint": "After authorization, paste the full callback URL. For Claude Code and Cline, you can also paste the authentication code directly, e.g. code#state.", - "connect": "Connect", - "cancel": "Cancel", - "success": "Connection successful!", - "successMessage": "Your {providerName} account has been connected.", - "done": "Done", - "error": "Connection failed", - "tryAgain": "Try again", + "step1OpenUrl": "Addım 1: Bu URL-ni brauzerinizdə açın", + "copy": "Kopyala", + "step2PasteCallback": "Addım 2: Geri çağırış URL-sini və ya avtorizasiya kodunu buraya yapışdırın", + "step2Hint": "Avtorizasiyadan sonra tam geri çağırış URL-sini yapışdırın. Claude Code və Cline üçün autentifikasiya kodunu da birbaşa yapışdıra bilərsiniz, məsələn, code#state.", + "connect": "Qoşul", + "cancel": "Ləğv et", + "success": "Bağlantı uğurla quruldu!", + "successMessage": "{providerName} hesabınız qoşuldu.", + "done": "Hazırdır", + "error": "Bağlantı uğursuz oldu", + "tryAgain": "Yenidən cəhd edin", "errorSessionIncomplete": "OAuth sessiyası tamamlanmayıb (yenidən yönləndirmə URI və ya kod təsdiqləyici yoxdur). Bağlantını yenidən başladın və yenidən cəhd edin.", "errorExchangeFailed": "Mübadilə baş tutmadı", "errorGoogleRedirectMismatch": "redirect_uri_mismatch: Default Google OAuth kimlik bilgileri yalnızca localhost-da işləyir. Uzaqdan istifadə üçün öz OAuth kimlik bilgilerinizi mühit dəyişənləri vasitəsilə konfiqurasiya edin: ANTIGRAVITY_OAUTH_CLIENT_ID və ANTIGRAVITY_OAUTH_CLIENT_SECRET. 'Uzaq Serverdə OAuth' README bölməsinə baxın.", @@ -10776,7 +10783,7 @@ "saveConnection": "Bağlantını Saxla", "gheDescription": "GitHub Enterprise instansiyanızın əsas URL-sini daxil edin (məsələn, https://ghe.yourcompany.com).", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "GitHub Enterprise URL-si", "gheUrlRequired": "GitHub Enterprise URL tələb olunur", "gitlabDuoSetupTitle": "GitLab Duo OAuth qurulması", "gitlabDuoSetupMessage": "GitLab Duo OAuth konfiqurasiya edilməyib. {applicationsUrl} ünvanında yönləndirmə URI {redirectUri} və \"scopes\" \"{scopes}\" ilə OAuth tətbiqi qeydiyyatdan keçirin, sonra {clientIdEnv} (və istəyə bağlı olaraq {clientSecretEnv}) təyin edin və yenidən başladın.", @@ -10785,82 +10792,82 @@ }, "cursorAuthModal": { "title": "Connect Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCursor": "Reading from Cursor IDE or cursor-agent", - "tokensAutoDetected": "Tokens successfully auto-detected from Cursor IDE!", + "tabLogin": "Cursor ilə daxil olun", + "tabImport": "Tokenu idxal et", + "loginDescription": "Cursor brauzer girişini açır. Docker-də işləyir — host brauzerinizdə təsdiqləyin, sonra buraya qayıdın.", + "loginWithCursor": "Cursor ilə daxil ol", + "startingLogin": "Başladılır…", + "waitingApproval": "Cursor girişinin təsdiqlənməsi gözlənilir…", + "openUrlHint": "Brauzer açılmadısa:", + "openLoginLink": "Giriş səhifəsini aç", + "cancelLogin": "Girişi ləğv et", + "autoDetecting": "Tokenlər avtomatik aşkarlanır...", + "readingFromCursor": "Cursor IDE və ya cursor-agent-dən oxunur", + "tokensAutoDetected": "Tokenlər Cursor IDE-dən uğurla avtomatik aşkarlandı!", "cursorNotDetected": "Cursor IDE not detected. Please manually paste your token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Docker-də işləyirsiniz? Cursor ilə daxil olmağı üstün tutun. IDE-dən avtomatik idxal və cursor-agent adətən konteyner daxilində əlçatan olmur. docs/providers/CURSOR-DOCKER.md sənədinə baxın.", + "accessToken": "Giriş tokeni", + "refreshToken": "Yeniləmə tokeni", + "refreshTokenPlaceholder": "İstəyə bağlıdır — tokenin avtomatik yenilənməsini aktivləşdirir", "required": "*", - "accessTokenPlaceholder": "Access token will auto-populate...", - "machineId": "Machine ID", - "optional": "(optional)", - "machineIdPlaceholder": "Machine ID will auto-populate...", - "importing": "Importing...", - "importToken": "Import Token", - "cancel": "Cancel", - "errorAutoDetect": "Unable to auto-detect tokens", - "errorAutoDetectFailed": "Auto-detect tokens failed", - "errorEnterToken": "Please enter access token", - "errorImportFailed": "Import failed", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "accessTokenPlaceholder": "Giriş tokeni avtomatik doldurulacaq...", + "machineId": "Maşın ID-si", + "optional": "(istəyə bağlı)", + "machineIdPlaceholder": "Maşın ID-si avtomatik doldurulacaq...", + "importing": "İdxal edilir...", + "importToken": "Tokenu idxal et", + "cancel": "Ləğv et", + "errorAutoDetect": "Tokenləri avtomatik aşkarlamaq mümkün olmadı", + "errorAutoDetectFailed": "Tokenlərin avtomatik aşkarlanması uğursuz oldu", + "errorEnterToken": "Lütfən, giriş tokenini daxil edin", + "errorImportFailed": "İdxal uğursuz oldu", + "errorLoginStart": "Cursor girişini başlatmaq mümkün olmadı", + "errorLoginPoll": "Cursor girişi uğursuz oldu", + "errorLoginTimeout": "Cursor girişinin vaxtı bitdi — yenidən cəhd edin" }, "pricingModal": { - "title": "Pricing Configuration", - "loading": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "ratesDescription": "All rates are in dollars per million tokens ($/1M tokens). Example: Input rate of 2.50 means $2.50 per 1,000,000 input tokens.", + "title": "Qiymət konfiqurasiyası", + "loading": "Qiymət məlumatları yüklənir...", + "pricingRatesFormat": "Qiymət tariflərinin formatı", + "ratesDescription": "Bütün tariflər bir milyon token üçün dollarla göstərilir ($/1M token). Məsələn: 2.50 giriş tarifi 1.000.000 giriş tokeni üçün $2.50 deməkdir.", "model": "Model", - "input": "Input", - "output": "Output", - "cached": "Cached", - "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "noPricingData": "No pricing data available", - "resetToDefaults": "Reset to defaults", - "cancel": "Cancel", - "saving": "Saving...", - "saveChanges": "Save changes", - "resetConfirm": "Reset all pricing to defaults? This cannot be undone.", - "errorSaveFailed": "Failed to save pricing", - "errorResetFailed": "Failed to reset pricing" + "input": "Giriş", + "output": "Çıxış", + "cached": "Keşlənmiş", + "reasoning": "Əsaslandırma", + "cacheCreation": "Keşin yaradılması", + "noPricingData": "Qiymət məlumatı mövcud deyil", + "resetToDefaults": "Standart parametrlərə sıfırla", + "cancel": "Ləğv et", + "saving": "Yadda saxlanılır...", + "saveChanges": "Dəyişiklikləri yadda saxla", + "resetConfirm": "Bütün qiymətlər standart dəyərlərə sıfırlansın? Bu əməliyyatı geri qaytarmaq mümkün deyil.", + "errorSaveFailed": "Qiymətləri yadda saxlamaq alınmadı", + "errorResetFailed": "Qiymətləri sıfırlamaq alınmadı" }, "proxyRegistry": { "selectAllProxies": "Bütün proksiləri seçin", "selectProxy": "{name} seçin", - "title": "Proxy Registry", - "description": "Store reusable proxies and track assignments.", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", - "loading": "Loading proxies...", - "noProxies": "No saved proxies yet.", - "tableName": "Name", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", - "tableHealth": "Health (24h)", - "tableUsage": "Usage", - "tableActions": "Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", - "modalCreateTitle": "Create Proxy", - "modalEditTitle": "Edit Proxy", - "labelName": "Name", - "labelType": "Type", + "title": "Proksi reyestri", + "description": "Təkrar istifadə edilə bilən proksiləri saxlayın və təyinatları izləyin.", + "importLegacy": "Köhnə məlumatları idxal et", + "bulkAssign": "Kütləvi təyin et", + "addProxy": "Proksi əlavə et", + "loading": "Proksilər yüklənir...", + "noProxies": "Hələ saxlanmış proksi yoxdur.", + "tableName": "Ad", + "tableEndpoint": "Son nöqtə", + "tableStatus": "Vəziyyət", + "tableHealth": "Sağlamlıq (24 saat)", + "tableUsage": "İstifadə", + "tableActions": "Əməliyyatlar", + "test": "Sına", + "edit": "Redaktə et", + "delete": "Sil", + "modalCreateTitle": "Proksi yarat", + "modalEditTitle": "Proksini redaktə et", + "labelName": "Ad", + "labelType": "Növ", "labelFamily": "IP ailəsi", "familyAuto": "Avtomatik (dual-stack)", "familyIpv4": "Yalnız IPv4", @@ -10868,48 +10875,48 @@ "familyHint": "Çıxış ünvanı ailəsi. Avtomatik dual-stack saxlayır; IPv4/IPv6 bu proksini həmin ailəyə bağlayır (yalnız IPv6 proksisi altında v4 sızmasının qarşısını alır).", "labelHost": "Host", "labelPort": "Port", - "labelUsername": "Username", - "labelPassword": "Password", + "labelUsername": "İstifadəçi adı", + "labelPassword": "Şifrə", "labelRegion": "Region", - "labelStatus": "Status", - "labelNotes": "Notes", - "usernamePlaceholderEdit": "Leave blank to keep current username", - "passwordPlaceholderEdit": "Leave blank to keep current password", - "statusActive": "Active", - "statusInactive": "Inactive", - "cancel": "Cancel", - "save": "Save", - "bulkModalTitle": "Bulk Proxy Assignment", - "bulkLabelScope": "Scope", - "bulkLabelProxy": "Proxy", - "bulkClearAssignment": "(Clear assignment)", - "bulkLabelScopeIds": "Scope IDs (comma or newline separated)", + "labelStatus": "Vəziyyət", + "labelNotes": "Qeydlər", + "usernamePlaceholderEdit": "Cari istifadəçi adını saxlamaq üçün boş buraxın", + "passwordPlaceholderEdit": "Cari şifrəni saxlamaq üçün boş buraxın", + "statusActive": "Aktiv", + "statusInactive": "Qeyri-aktiv", + "cancel": "Ləğv et", + "save": "Yadda saxla", + "bulkModalTitle": "Kütləvi proksi təyinatı", + "bulkLabelScope": "Əhatə dairəsi", + "bulkLabelProxy": "Proksi", + "bulkClearAssignment": "(Təyinatı sil)", + "bulkLabelScopeIds": "Əhatə dairəsi ID-ləri (vergül və ya yeni sətirlə ayrılmış)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", - "bulkApply": "Apply", + "bulkApply": "Tətbiq et", "labelScope": "Əhatə dairəsi", "labelProxy": "Proksi", "scopeGlobal": "qlobal", "scopeProvider": "provayder", "scopeAccount": "hesab", "scopeCombo": "kombo", - "bulkImportErrorMissingName": "Missing NAME", - "bulkImportErrorMissingHost": "Missing HOST", - "bulkImportErrorInvalidPort": "Invalid PORT (must be 1-65535)", - "bulkImportErrorInvalidType": "Invalid TYPE (use http, https, or socks5)", - "bulkImportErrorInvalidStatus": "Invalid STATUS (use active or inactive)", - "errorLoadFailed": "Failed to load proxy registry", - "errorNameHostRequired": "Name and host are required", - "errorSaveFailed": "Failed to save proxy", - "errorDeleteFailed": "Failed to delete proxy", - "errorForceDeleteConfirm": "This proxy is still assigned. Force delete and remove all assignments?", - "errorMigrateFailed": "Failed to migrate legacy proxy config", - "errorBulkFailed": "Failed to execute bulk assignment", + "bulkImportErrorMissingName": "NAME çatışmır", + "bulkImportErrorMissingHost": "HOST çatışmır", + "bulkImportErrorInvalidPort": "Yanlış PORT (1-65535 arasında olmalıdır)", + "bulkImportErrorInvalidType": "Yanlış TYPE (http, https və ya socks5 istifadə edin)", + "bulkImportErrorInvalidStatus": "Yanlış STATUS (active və ya inactive istifadə edin)", + "errorLoadFailed": "Proksi reyestrini yükləmək alınmadı", + "errorNameHostRequired": "Ad və host tələb olunur", + "errorSaveFailed": "Proksini yadda saxlamaq alınmadı", + "errorDeleteFailed": "Proksini silmək alınmadı", + "errorForceDeleteConfirm": "Bu proksi hələ də təyin olunub. Məcburi silinsin və bütün təyinatlar ləğv edilsin?", + "errorMigrateFailed": "Köhnə proksi konfiqurasiyasını köçürmək alınmadı", + "errorBulkFailed": "Kütləvi təyinatı icra etmək alınmadı", "success": "✓", "failure": "✗", - "failed": "Failed", - "successRate": "{rate}% success", - "avgLatency": "{latency}ms average", - "assignmentsCount": "{count} assignments", + "failed": "Uğursuz oldu", + "successRate": "{rate}% uğurlu", + "avgLatency": "Orta hesabla {latency}ms", + "assignmentsCount": "{count} təyinat", "noData": "—", "testSuccess": "✓ {ip}", "testLatency": "{latency}ms", @@ -10921,20 +10928,20 @@ "relayRepairFailed": "Relay təmiri uğursuz oldu", "relayRepairError": "təmir uğursuz oldu", "relayProbeSummary": "Relay zondları: {alive}/{tested} aktivdir", - "bulkImport": "Bulk Import", - "bulkImportTitle": "Bulk Import Proxies", + "bulkImport": "Kütləvi idxal", + "bulkImportTitle": "Proksilərin kütləvi idxalı", "bulkImportDescription": "Paste proxy profiles using pipe-delimited format. One proxy per line. Existing proxies (same host + port) will be updated.", - "bulkImportParse": "Parse", - "bulkImportImport": "Import {count} Proxies", - "bulkImportImporting": "Importing...", - "bulkImportParsed": "{count} proxies parsed", - "bulkImportSkipped": "{count} lines skipped", - "bulkImportParseErrors": "{count} errors", - "bulkImportNoValidEntries": "No valid entries found. Check the format and try again.", - "bulkImportSuccess": "Import complete: {created} created, {updated} updated, {failed} failed", - "bulkImportErrorLine": "Line {line}: {reason}", - "bulkImportMaxExceeded": "Maximum 100 proxies per import", - "bulkImportPreview": "Preview", + "bulkImportParse": "Təhlil et", + "bulkImportImport": "{count} proksini idxal et", + "bulkImportImporting": "İdxal edilir...", + "bulkImportParsed": "{count} proksi təhlil edildi", + "bulkImportSkipped": "{count} sətir ötürüldü", + "bulkImportParseErrors": "{count} xəta", + "bulkImportNoValidEntries": "Etibarlı qeyd tapılmadı. Formatı yoxlayıb yenidən cəhd edin.", + "bulkImportSuccess": "İdxal tamamlandı: {created} yaradıldı, {updated} yeniləndi, {failed} uğursuz oldu", + "bulkImportErrorLine": "Sətir {line}: {reason}", + "bulkImportMaxExceeded": "Hər idxal üçün maksimum 100 proksi", + "bulkImportPreview": "Önizləmə", "clearAssignment": "(aydın tapşırıq)", "bulkProxyAssignment": "Toplu Proksi Təyinatı", "testAll": "Hamısını test et", @@ -10947,7 +10954,7 @@ "managePool": "Hovuzu idarə et", "poolTitle": "Proksi hovuzu və rotasiyası", "poolDescription": "Çoxsaylı proksiləri bir scope-a qoşun və çıxış IP-lərini onlar arasında rotasiya edin. Tək proksisi olan scope tamamilə adi təyinat kimi davranır.", - "poolScopeIdLabel": "Scope ID", + "poolScopeIdLabel": "Əhatə dairəsi ID-si", "poolScopeIdPlaceholder": "provayder ID / bağlantı ID / kombo ID", "poolScopeIdRequired": "Provayder, hesab və ya kombo scope-u üçün scope ID-si tələb olunur.", "poolLoad": "Hovuzu yüklə", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Rotasiya strategiyası", "poolStrategyHint": "round-robin üzvləri növbə ilə dövr etdirir; random bərabər şəkildə seçir; sticky bir üzvü müəyyən pəncərə üçün saxlayır; latency-optimized isə loqlara əsasən ən sürətlisini seçir.", "poolStrategyFailed": "Rotasiya strategiyasını yeniləmək mümkün olmadı", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Növbəli", "strategyRandom": "Təsadüfi", - "strategySticky": "Sticky", + "strategySticky": "Sabit", "strategyLatency": "Gecikməyə görə optimallaşdırılmış", "poolMembersLabel": "Hovuz üzvləri ({count})", "poolNoMembers": "Bu hovuzda hələ proksi yoxdur.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# çıxış} other {# çıxış}}, {connections, plural, one {# bağlantı} other {# bağlantı}} tərəfindən istifadə edilib · bir çıxışda maksimum {max} · son {hours} saat", + "poolEgressObservationEmpty": "Son {hours} saat ərzində trafik müşahidə edilməyib", + "poolEgressObservationHint": "Bu zaman intervalı üzrə proksi jurnalından hesablanıb: bu hovuzun üzvləri üçün müşahidə edilən fərqli çıxış IP-ləri və onlardan istifadə edən OmniRoute bağlantıları. \"Bir çıxışda\" eyni anda deyil, zaman intervalı ərzində deməkdir. Hər IP üzrə 429 bloklanması yalnız eyni provayder ailəsinə aid bağlantıları müvəqqəti dayandırır.", "poolRemove": "Çıxar", "poolRemoveFailed": "Proksini hovuzdan çıxarmaq mümkün olmadı", "poolAddLabel": "Proksi əlavə et", @@ -10973,96 +10980,96 @@ "poolSaveFailed": "Hovuz təyinatını yadda saxlamaq mümkün olmadı" }, "playground": { - "title": "Model Playground", - "description": "Test any model directly from the dashboard. Select provider, model, and endpoint type, then send a request to see the raw response.", - "endpoint": "Endpoint", - "provider": "Provider", + "title": "Model Sınaq Meydanı", + "description": "İstənilən modeli birbaşa idarəetmə panelindən sınaqdan keçirin. Provayderi, modeli və son nöqtə növünü seçin, sonra xam cavabı görmək üçün sorğu göndərin.", + "endpoint": "Son nöqtə", + "provider": "Provayder", "model": "Model", - "accountKey": "Account / Key", - "autoAccounts": "Auto ({count} accounts)", - "noAccounts": "No accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", - "attachImages": "Attach Images (Vision)", + "accountKey": "Hesab / Açar", + "autoAccounts": "Avtomatik ({count} hesab)", + "noAccounts": "Hesab yoxdur", + "send": "Göndər", + "cancel": "Ləğv et", + "audioFile": "Audio fayl", + "attachImages": "Şəkillər əlavə et (Vision)", "multipartFormData": "multipart/form-data", - "upToImages": "Up to 4 images", - "selectAudioFile": "Select audio file for transcription (mp3, wav, m4a, ogg, flac…)", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", - "resetToDefault": "Reset to default", - "downloadAudio": "Download audio", - "copyText": "Copy text", - "transcriptionHint": "Transcription uses multipart/form-data. Upload the audio file above — the JSON below controls extra parameters (model, language).", - "imagesGenerated": "Generated {count} images", - "generatedImage": "Generated image {index}", - "save": "Save", + "upToImages": "4-dək şəkil", + "selectAudioFile": "Transkripsiya üçün audio fayl seçin (mp3, wav, m4a, ogg, flac…)", + "clearAll": "Hamısını təmizlə", + "request": "Sorğu", + "response": "Cavab", + "transcription": "Transkripsiya", + "copy": "Kopyala", + "resetToDefault": "Standart vəziyyətə sıfırla", + "downloadAudio": "Audionu endir", + "copyText": "Mətni kopyala", + "transcriptionHint": "Transkripsiya multipart/form-data istifadə edir. Audio faylı yuxarıda yükləyin — aşağıdakı JSON əlavə parametrləri (model, dil) idarə edir.", + "imagesGenerated": "{count} şəkil yaradıldı", + "generatedImage": "Yaradılmış şəkil {index}", + "save": "Saxla", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", + "chat": "Söhbət tamamlamaları", + "responses": "Cavablar", "completions": "Tamamlamalar", - "images": "Image generation", - "embeddings": "Embeddings", - "speech": "Text-to-speech", - "transcription": "Audio transcription", - "video": "Video generation", - "music": "Music generation", + "images": "Şəkil yaratma", + "embeddings": "Vektor təsvirləri", + "speech": "Mətndən nitqə", + "transcription": "Audio transkripsiya", + "video": "Video generasiyası", + "music": "Musiqi generasiyası", "moderations": "Moderasiyalar", - "rerank": "Rerank", - "search": "Web search", + "rerank": "Yenidən sıralama", + "search": "Veb axtarış", "webFetch": "Veb gətirmə" }, "conversationalChat": "Danışıq Söhbəti", "clearChat": "Söhbəti təmizləyin", "typeMessagePlaceholder": "Mesaj yazın... (yeni sətir üçün Shift+Enter)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Söhbət", + "tabCompare": "Müqayisə et", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Yarat", + "configPane": "Konfiqurasiya", + "systemPrompt": "Sistem təlimatı", + "systemPromptPlaceholder": "Siz faydalı bir köməkçisiniz.", + "modelPlaceholder": "məs. openai/gpt-4o", + "endpointLabel": "Son nöqtə", + "parametersLabel": "Parametrlər", + "collapseConfig": "Konfiqurasiya panelini yığışdır", + "expandConfig": "Konfiqurasiya panelini genişləndir", + "temperature": "Temperatur", + "maxTokens": "Maksimum token sayı", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Mövcudluq cəriməsi", + "frequencyPenalty": "Tezlik cəriməsi", "reasoningLabel": "Mühakimə", "thinking": "Düşünmə", "effort": "Səy", "effortDefault": "Standart", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Təsadüfi (boş saxlayın)", + "presetsLabel": "Hazır ayarlar", + "loadPreset": "Hazır ayarı yüklə", + "savePreset": "Hazır ayarı yadda saxla", + "noPresets": "Hazır ayar yoxdur", + "presetNamePlaceholder": "Hazır ayarın adı", + "savingPreset": "Yadda saxlanılır…", + "nameRequired": "Ad tələb olunur", + "failedToSavePreset": "Hazır ayarı yadda saxlamaq mümkün olmadı", + "improvePrompt": "Sorğunu təkmilləşdir", + "improvingPrompt": "Təkmilləşdirilir…", + "improvePromptTitle": "Sorğunuzu AI ilə təkmilləşdirin", + "setModelFirst": "Əvvəlcə model təyin edin", "setModelInConfigFirst": "Əvvəlcə Konfiqurasiya panelində model təyin edin.", "improvePromptFailed": "Promptun təkmilləşdirilməsi uğursuz oldu.", "improvePromptAria": "AI ilə promptu təkmilləşdir", "confirmImprovePrompt": "Promptun təkmilləşdirilməsini təsdiqlə", "improvePromptDescription": "Bu, təkmilləşdirilmiş versiya yaratmaq üçün cari sistem promptunuzu modelinə göndərəcək.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Bu, Konfiqurasiyada təyin edilmiş modelin kvotasından istifadə edəcək.", + "improveConfirm": "Təkmilləşdir", + "exportCode": "Kodu ixrac et", + "exportCodeTitle": "Kodu ixrac et", "exportShort": "İxrac", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "İxrac etmək üçün heç bir sınaq mühiti vəziyyəti mövcud deyil.", "closeExportModal": "İxrac pəncərəsini bağla", "close": "Bağla", "exportRealKeyWarning": "Təhlükəsizlik xəbərdarlığı: ixrac bloklandı — çıxışda real API açarı aşkar edildi. Zəhmət olmasa, API açarınızı sıfırlayın və yenidən cəhd edin.", @@ -11071,15 +11078,15 @@ "copyLangCode": "{language} kodunu kopyala", "loadingPresets": "Yüklənir…", "loadPresetPlaceholder": "Hazır şablonu yüklə…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", + "copyCode": "Kopyala", + "copiedCode": "Kopyalandı!", + "addModel": "+ Model əlavə et", + "runAll": "Hamısını işə sal", + "cancelAll": "Hamısını ləğv et", + "maxColumnsReached": "Maksimum {max} sütun", "modelPlaceholderCompare": "Model (Cmd+K)…", "noModel": "Model yoxdur", - "statusLabel": "Status: {status}", + "statusLabel": "Vəziyyət: {status}", "status": { "idle": "gözləmədə", "streaming": "axın edilir", @@ -11095,29 +11102,29 @@ "waitingForResponse": "Cavab gözlənilir…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "müştəri tərəfli təxmin", + "tokensLabel": "Tokenlər", + "costLabel": "Xərc", + "costEstimated": "(təxmini)", "ttftTitle": "İlk tokenə qədər vaxt (müştəri tərəfi təxmini)", "tpsTitle": "Saniyədə token sayı (müştəri tərəfi təxmini)", "tokenCountsTitle": "Prompt tokenləri ↑ / Tamamlama tokenləri ↓", "estimatedCostTitle": "Təxmini xərc (dəqiqliyinə zəmanət verilmir)", - "toolsLabel": "Tools", + "toolsLabel": "Alətlər", "toolsCount": "Alətlər ({count})", - "addTool": "Add tool", + "addTool": "Alət əlavə et", "editTool": "{name} alətini redaktə et", "removeTool": "{name} alətini sil", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Funksiya adı", "toolNameRequiredPlaceholder": "Funksiya adı *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Təsvir (ixtiyari)", "toolParamsLabel": "Parametrlər (JSON sxemi)", "toolParamsJsonSchema": "Parametrlər üçün JSON sxemi", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parametrlər etibarlı JSON olmalıdır", + "structuredOutputLabel": "Strukturlaşdırılmış çıxış", + "enableJsonMode": "JSON rejimini aktivləşdir", + "disableJsonMode": "JSON rejimini deaktivləşdir", + "invalidJson": "Etibarsız JSON", "jsonMode": "JSON rejimi", "jsonModeDescription": "response_format: json_schema məcbur edir", "schemaName": "Sxem adı", @@ -11125,7 +11132,7 @@ "jsonSchemaEditor": "JSON sxem redaktoru", "schemaValidated": "Sxem yoxlanıldı", "validateSchema": "Sxemi yoxla", - "seed": "Seed", + "seed": "Başlanğıc dəyəri", "stopSequences": "Dayandırma ardıcıllıqları", "stopSequencesPlaceholder": "məs. \"\\n\\n\" və ya \"END\"", "autoProvider": "Avtomatik", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} sütun", "addModelToCompare": "Müqayisə etmək üçün model sütunu əlavə edin", "modelsSimultaneously": "Eyni vaxtda {max} modelə qədər", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "İcra olunur…", + "runLabel": "İşə sal", + "enterToolResult": "Alət nəticəsini daxil edin…", "build": { "step1Label": "Nə test edilsin?", "step2Label": "Konfiqurasiya et", @@ -11179,7 +11186,7 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Son nöqtə", "apiKey": "API açarı", "model": "Model", "voice": "Səs", @@ -11198,7 +11205,7 @@ "tunnel": "Tunel", "send": "Göndər", "selectKey": "Açar seçin", - "testLabel": "Test", + "testLabel": "Sınaq", "expandTest": "Testi genişləndir", "collapseTest": "Testi yığcamlaşdır", "revealKey": "Açarı göstər", @@ -11221,7 +11228,7 @@ "noAudioUrl": "Cavaba audio URL daxil edilməyib: {response}", "music": "Musiqi", "embeddingSample": "OmniRoute AI sorğularını bir neçə provayder arasında yönləndirir.", - "embedding": "Embedding", + "embedding": "Vektor təsviri", "imageSample": "Qürub çağında futuristik şəhər, kinematoqrafik işıqlandırma", "image": "Şəkil", "ttsSample": "OmniRoute-dan salamlar. Bu, mətndən nitqə sınağıdır.", @@ -11250,73 +11257,73 @@ "stop": "Dayandır" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", + "recording": "Yazılır", + "paused": "Dayandırılıb", + "pipelineLogsOn": "Konveyer jurnalları aktivdir", + "pipelineLogsOff": "Konveyer jurnalları deaktivdir", + "updatingPipelineLogs": "Konveyer jurnalları yenilənir...", + "updatePipelineFailed": "Pipeline jurnalını yeniləmək alınmadı", + "capturePipeline": "Yeni sorğular üçün pipeline faydalı yüklərini qeydə al", + "searchPlaceholder": "Modelləri, provayderləri, hesabları, API açarlarını, kombinasiyaları axtarın...", + "allProviders": "Bütün provayderlər", + "allModels": "Bütün modellər", + "allAccounts": "Bütün hesablar", + "allApiKeys": "Bütün API açarları", + "total": "Cəmi", + "ok": "Uğurlu", + "err": "Xəta", + "combo": "Kombinasiya", + "keys": "Açarlar", + "shown": "Göstərilən", + "sortNewest": "Ən yeni", + "sortOldest": "Ən köhnə", + "sortTokensDesc": "Tokenlər ↓", + "sortTokensAsc": "Tokenlər ↑", + "sortDurationDesc": "Müddət ↓", + "sortDurationAsc": "Müddət ↑", + "sortStatusDesc": "Vəziyyət ↓", + "sortStatusAsc": "Vəziyyət ↑", "sortModelAsc": "Model A-Z", "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortLogs": "Jurnalları çeşidlə", + "refresh": "Yenilə", + "columnsLabel": "Sütunlar", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semantic": "Semantik", + "upstream": "Yuxarı axın", + "semanticCacheHit": "Semantik keş uyğunluğu (OmniRoute tərəfindən təqdim edilib)", + "upstreamResponse": "Yuxarı axın provayderinin cavabı", + "noApiKey": "API açarı yoxdur", + "requestedRoutedTitle": "{requested} tələb edildi, {routed} kimi yönləndirildi", "statusFilters": { - "all": "All", - "error": "Error", - "success": "Success", - "combo": "Combo" + "all": "Hamısı", + "error": "Xəta", + "success": "Uğurlu", + "combo": "Kombinasiya" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", + "status": "Vəziyyət", + "cacheSource": "Keş mənbəyi", "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", - "compressed": "Compression", + "requested": "Tələb edilən", + "provider": "Provayder", + "protocol": "Sorğu protokolu", + "account": "Hesab", + "apiKey": "API açarı", + "combo": "Kombinasiya", + "tokens": "Tokenlər", + "compressed": "Sıxılma", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Müddət", + "time": "Vaxt", + "conversation": "Söhbət", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Jurnallar yüklənir...", + "noLogs": "Hələ jurnal yoxdur. Onları burada görmək üçün bir neçə API çağırışı edin.", + "noMatchingLogs": "Cari filtrlərə uyğun jurnal yoxdur.", + "callLogsInfo": "Çağırış jurnalları həmçinin JSON faylları kimi {dataDir} qovluğunda saxlanılır və {retentionDays} və {maxEntries} əsasında rotasiya edilir.", "loadMore": "Daha çox yüklə", "loadingMore": "Daha çox yüklənir...", "correlationId": "Korrelyasiya ID-si", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Bu log girişinə aid ətraflı yük artefaktı artıq mövcud deyil.", "payloadCorrupt": "Ətraflı yük artefaktı təhlil oluna bilmədi.", - "notAvailable": "N/A", + "notAvailable": "Mövcud deyil", "semanticCache": "Semantik (OmniRoute)", "upstreamCache": "Yuxarı axın (Təchizatçı)", "ariaLabel": "Sorğu logunun detalları", @@ -11394,7 +11401,7 @@ "requestedModel": "Tələb Olunan Model", "requestProtocol": "Req Protokolu", "cacheSource": "Keş Mənbəyi", - "modelPinning": "Model Pinning", + "modelPinning": "Modelin bərkidilməsi", "activeModelPinning": "Aktiv — sessiya sabitlənməsi vasitəsilə seçilmiş model", "rotated": "Dönmüşdür: {initial} -> {final}", "apiKey": "API Açarı", @@ -11417,59 +11424,59 @@ "correlationId": "Korrelyasiya ID-si", "correlationIdValue": "Korrelyasiya ID: {id}", "detailedPayloadInfo": "Əvvəlcə ətraflı qeydiyyatı aktiv edin, əgər yeni tələblər üçün dörd mərhələli müştəri/təchizatçı yük görünüşünü istəyirsinizsə.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Hamısını kopyala", + "copiedAll": "Hamısı kopyalandı" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "Hamısı", + "filterErrors": "Xətalar", + "filterSuccess": "Uğurlu", + "filterTimeout": "Vaxt aşımı", + "colStatus": "Vəziyyət", + "colProxy": "Proksi", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "Növ", + "colLevel": "Səviyyə", + "colProvider": "Provayder", + "colTarget": "Hədəf", + "colLatency": "Gecikmə", + "colClientIp": "Müştəri IP-si", + "colTime": "Vaxt", + "recording": "Qeyd edilir", + "paused": "Dayandırılıb", + "searchPlaceholder": "Host, provayder, hədəf, IP axtarın...", + "allTypes": "Bütün növlər", + "allLevels": "Bütün səviyyələr", + "allProviders": "Bütün provayderlər", + "total": "cəmi", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "XƏTA", + "timeoutShort": "VAXT AŞIMI", + "direct": "birbaşa", + "newest": "Ən yeni", + "oldest": "Ən köhnə", + "latencyDesc": "Gecikmə ↓", + "latencyAsc": "Gecikmə ↑", + "refresh": "Yenilə", + "columns": "Sütunlar", + "loadingProxyLogs": "Proksi jurnalları yüklənir...", + "noProxyLogs": "Hələ proksi jurnalı yoxdur. Onları burada görmək üçün proksiləri konfiqurasiya edin və API çağırışları edin.", + "noMatchingLogs": "Cari filtrlərə uyğun jurnal yoxdur.", + "tlsFingerprint": "Chrome 124 TLS barmaq izi", "colPublicIp": "İctimai IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "speech": "Nitq", + "search": "Axtarış", + "images": "Şəkillər", + "chat": "Söhbət", + "music": "Musiqi", + "responses": "Cavablar", + "rerank": "Yenidən sıralama", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Vektor təsvirləri", + "transcription": "Transkripsiya" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "İcra mühiti", + "description": "Real vaxtda müşahidə — 3 səviyyəli dayanıqlılıq + sessiyalar + kvota xəbərdarlıqları", + "pause": "Fasilə ver", + "resume": "Davam et", + "refreshNow": "İndi yenilə", + "kpiSessions": "Sessiyalar", + "kpiCircuits": "Dövrələr", + "kpiCooldowns": "Soyuma müddətləri", + "kpiLockouts": "Bloklamalar", + "hintStickyBound": "{count} sabit bağlanmış", + "hintRecovering": "{count} bərpa olunur", + "hintAllHealthy": "hamısı sağlamdır", + "hintOpen": "açıq", + "hintConnsCooling": "bağlantı soyuyur", + "hintModelsBlocked": "model bloklanıb", + "resilienceTitle": "3 səviyyəli dayanıqlılıq", + "resilienceSubtitle": "Sənədləşdirilmiş dayanıqlılıq modelini əks etdirir", + "providersHealthy": "Provayderlərin {percent}%-i sağlamdır", + "layer": "Səviyyə {n}", + "layer1Title": "Provayder dövrə açarları", + "layer1Desc": "Yuxarı axın səviyyəsində nasazlıq yaşayan provayderlərə trafiki dayandırın", + "layer2Title": "Bağlantıların soyuma müddətləri", + "layer2Desc": "Bir nasaz hesabı/açarı ötürün; digər bağlantılar xidmət göstərməyə davam etsin", + "layer3Title": "Model bloklamaları", + "layer3Desc": "Hər model üzrə sorğu tezliyi limiti blokları; eyni bağlantı digər modellərə xidmət göstərməyə davam edir", + "badgeAffectedOf": "{total} elementdən {affected}-i təsirlənib", + "badgeCooling": "{count} soyuyur", + "badgeLocked": "{count} bloklanıb", + "emptyCircuits": "Hələ aktiv dövrə açarı yoxdur", + "emptyCooldowns": "Aktiv bağlantı soyuma müddəti yoxdur", + "emptyLockouts": "Model bloklaması yoxdur", + "moreCooldowns": "+{count} əlavə soyuma müddəti", + "moreLockouts": "+{count} əlavə bloklama", + "feedTitle": "Canlı lent", + "feedSubtitle": "Son {count} hadisə", + "feedFilterAll": "Hamısı", + "feedFilterCircuits": "Dövrələr", + "feedFilterCooldowns": "Soyuma müddətləri", + "feedFilterLockouts": "Bloklamalar", + "feedFilterSessions": "Sessiyalar", + "feedFilterQuotas": "Kvotalar", + "feedClear": "Təmizlə", + "feedEmptyWaiting": "Hadisələr gözlənilir... (hər 5 saniyədən bir sorğulanır)", + "feedEmptyFiltered": "Bu filtrə uyğun hadisə yoxdur", + "sessionsTitle": "Aktiv sessiyalar", + "sessionsSubtitle": "Sabit bağlanmış sorğu barmaq izləri (canlı)", + "sessionsActive": "{count} aktiv", + "sessionsEmptyTitle": "Aktiv sessiya yoxdur", + "sessionsEmptyHint": "Sorğular proksi üzərindən keçdikcə sessiyalar burada görünəcək", + "tblSession": "Sessiya", + "tblAge": "Müddət", + "tblIdle": "Boş qalma", + "tblReqs": "Sorğular", + "tblBoundTo": "Bağlandığı", + "topApiKeys": "Ən çox istifadə olunan API açarları", + "quotaMonitorsTitle": "Kvota monitorları", + "quotaMonitorsSubtitle": "Hər hesab pəncərəsi üzrə real vaxt kvota vəziyyəti", + "openQuota": "Kvotanı aç", + "allQuotasHealthy": "Bütün kvotalar normaldır", + "statusExhausted": "TÜKƏNİB", + "statusAlerting": "XƏBƏRDARLIQ VAR", + "statusError": "XƏTA", + "moreSuffix": "+{count} əlavə" }, "quotaShare": { "weightPercent": "Çəki %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Kvota paylaşımı", + "description": "Provayder kvotalarını %-lik limitlərlə API açarları arasında paylaşın", + "newPool": "Yeni hovuz", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Konfiqurasiya localStorage-da saxlanılır (hələ serverdə qalıcı saxlanılmır). Hər sorğu üzrə limitin tətbiqi hələ proksi emal xəttinə qoşulmayıb. Bu ekran kvota bölgüsünü layihələndirməyə və vizuallaşdırmağa imkan verir; faktiki tətbiq DB-də qalıcı saxlama və yuxarı axın çağırışlarının tutulması ilə gələcək versiyada əlavə ediləcək.", + "kpiActivePools": "Aktiv hovuzlar", + "kpiKeysAllocated": "Ayrılmış açarlar", + "kpiAvgUnallocated": "Orta ayrılmamış hissə", + "kpiProvidersWithQuota": "Kvotası olan provayderlər", + "emptyTitle": "Heç bir hovuz konfiqurasiya edilməyib", + "emptyDescription": "API açarlarına provayderin kvota pəncərəsini %-lik paylarla bölüşdürmək üçün hovuz yaradın.", + "loading": "Yüklənir…", + "removePool": "Hovuzu sil", + "removeConfirm": "Bu hovuz silinsin?", + "pool": "Hovuz", + "used": "istifadə edilib", + "allocationsCount": "Paylamalar ({count})", + "allocatedFree": "{allocated}% ayrılıb · {free}% boşdur", + "noAllocations": "Hələ heç bir açar ayrılmayıb", + "capLabel": "limit {value}", + "notTrackedYet": "(hələ izlənilmir)", + "policy": "Siyasət", "apiKeyColumn": "API açarı", "weightColumn": "Çəki", "fairShareShort": "ədalətli", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "sərt", + "policySoft": "yumşaq", + "policyBurst": "ani artım", + "policyHardHint": "Açar ayrılmış limiti tükətdikdə blokla", + "policySoftHint": "Limiti aşmağa icazə ver, yalnız xəbərdarlıq et", + "policyBurstHint": "Boş hovuzdan ani istifadəyə icazə ver", + "editAllocations": "Payları redaktə et", + "newPoolTitle": "Yeni kvota hovuzu", + "providerConnection": "Provayder bağlantısı (hesab)", + "selectConnection": "Bağlantı seçin…", + "noEligibleConnections": "Kvota məlumatı olan bağlantı yoxdur. Əvvəlcə /dashboard/quota səhifəsindən yeniləyin.", + "quotaWindow": "Kvota intervalı", + "selectWindow": "İnterval seçin…", + "alreadyUsedSuffix": "(artıq istifadə olunub)", + "windowReset": "Sıfırlama", + "duplicatePoolError": "Bu bağlantı və interval üçün hovuz artıq mövcuddur", + "cancel": "Ləğv et", + "createPool": "Hovuz yarat", + "editTitle": "Payları redaktə et", + "noKeysAdded": "Heç bir açar ayrılmayıb. Aşağıdan əlavə edin.", + "totalLabel": "Cəmi: {percent}%", + "totalExceeded": "⚠ 100%-i aşır", + "addKey": "+ Açar əlavə et…", + "equalSplit": "Bərabər bölüşdür", + "save": "Payları yadda saxla", "betaPreviewLabel": "Beta — UI önizləməsi.", "betaConfigSavedPrefix": "Konfiqurasiya yaddaşda saxlanılır", "betaConfigSavedSuffix": "(hələ serverdə qalmayıb). Hər sorğu üzrə məhdudiyyətin tətbiqi hələ proksi boru xəttinə qoşulmayıb. Bu ekran sizə kvotanın bölünməsini dizayn etməyə və vizuallaşdırmağa imkan verir; real icra DB əzmkarlığı və yuxarı zənglərin tutulması ilə gələcək iterasiyaya düşəcək.", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "Əsas URL", "endpointsCollapse": "Yığcamlaşdırın", "endpointsExpand": "Genişləndirin", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-doğma", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — yalnız codex", "betaText": "Quota Share funksionaldır, lakin xətalar gözlənilir. Birini tapdınız? Zəhmət olmasa bildirin.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Bu qrupda hələ də hovuzlar var — ilk öncə onları yenidən təyin edin və ya silin.", "ungroupedTitle": "Qruplaşdırılmamış", "ungroupedHint": "Bu hovuzlar məlum bir qrupa təyin edilməyib. Hovuzu real qrupa köçürmək üçün onu redaktə edin.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Bu hovuzu silmək mümkün olmadı.", + "dismiss": "Bağla" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Plaginlər", + "description": "OmniRoute funksionallığını genişləndirmək üçün plaginləri quraşdırın və idarə edin", + "loading": "Plaginlər yüklənir...", + "scanning": "Skan edilir...", + "scanForPlugins": "Plaginləri skan et", + "noPlugins": "Heç bir plagin quraşdırılmayıb", + "noPluginsDescription": "Plagin qovluqlarını ~/.omniroute/plugins/ daxilində yerləşdirin və Skan et düyməsinə klikləyin.", + "activate": "Aktivləşdir", + "deactivate": "Deaktivləşdir", + "uninstall": "Sil", + "uninstallConfirm": "\"{name}\" plagini silinsin?", + "pluginScanComplete": "Plaginlərin skan edilməsi tamamlandı", + "pluginScanFailed": "Plaginlərin skan edilməsi uğursuz oldu", + "activated": "{name} aktivləşdirildi", + "deactivated": "{name} deaktivləşdirildi", + "activateFailed": "{name} aktivləşdirilə bilmədi", + "deactivateFailed": "{name} deaktivləşdirilə bilmədi", + "uninstalled": "{name} silindi", + "uninstallFailed": "{name} silinə bilmədi", + "configure": "Konfiqurasiya et: {name}", + "configurePlugin": "Konfiqurasiya et", + "noConfigSettings": "Bu plaginin konfiqurasiya edilə bilən parametrləri yoxdur.", + "saving": "Yadda saxlanılır...", + "saveConfiguration": "Konfiqurasiyanı yadda saxla", + "configurationSaved": "Konfiqurasiya yadda saxlanıldı", + "saveConfigurationFailed": "Konfiqurasiyanı yadda saxlamaq mümkün olmadı", + "pluginNotFound": "Plagin tapılmadı", + "version": "Versiya", + "author": "Müəllif", + "description_label": "Təsvir", + "status": "Vəziyyət", + "enabled": "Aktivdir", + "disabled": "Deaktivdir", "installedTab": "Quraşdırılıb", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Marketpleys", "marketplaceUrlLabel": "Fərdi Marketplace URL-i", "marketplaceUrlPlaceholder": "Rəsmi Omniroute reyestri üçün boş buraxın", "saveMarketplaceUrl": "Yadda saxla və Yenidən yüklə", @@ -11729,7 +11736,7 @@ "verified": "Təsdiqlənib", "install": "Quraşdır", "installedFromMarketplace": "{name} plagini quraşdırıldı!", - "hooks": "Hooks" + "hooks": "Huklar" }, "quotaPlans": { "title": "Planlar və Kvotalar", @@ -12040,7 +12047,7 @@ "agentBridgeModeDesc": "Bütün qoşulmuş IDE agentlərindən gələn trafiki yaxalayın", "customHostsMode": "Xüsusi Hostlar", "customHostsModeDesc": "Yaxalamaq üçün xüsusi hostlar əlavə edin", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "HTTP Proksi", "httpProxyModeDesc": "HTTP_PROXY mühit dəyişənindən istifadə edin", "systemWideMode": "Sistem miqyasında", "systemWideModeDesc": "Bütün sistem trafikini yaxalayın (qabaqcıl)", @@ -12052,13 +12059,13 @@ "profileAll": "Hamısı", "filterHost": "Hostu filtrlə…", "filterAgent": "Agent", - "filterStatus": "Status", + "filterStatus": "Vəziyyət", "pauseBtn": "Fasilə ver", "resumeBtn": "Davam et", "clearBtn": "Təmizlə", "exportHar": ".har ixrac et", "recordSession": "REC", - "stopSession": "Stop", + "stopSession": "Dayandır", "liveBadge": "canlı", "offlineBadge": "oflayn", "noRequests": "Hələ heç bir sorğu tutulmayıb.", @@ -12123,7 +12130,7 @@ "timingTotalLatency": "Ümumi gecikmə", "timingTimestamp": "Zaman damğası", "timingMethod": "Metod", - "timingStatus": "Status", + "timingStatus": "Vəziyyət", "timingRequestSize": "Sorğu ölçüsü", "timingResponseSize": "Cavab ölçüsü", "pausedNewBadge": "{count} yeni", @@ -12165,7 +12172,7 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "CLI kodu", "phrase": "OmniRoute-a yönləndirdiyiniz kod alətləri", "flow": "Siz → CLI Code → OmniRoute → Provayder", "seeOther": "Bax →" @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP Agentləri", "phrase": "OmniRoute-un icra backend-i kimi başlatdığı CLI-lar (əks axın)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Əksər istifadəçilər bunu nəzərə almaya bilər — yalnız inteqrasiya tələb etdikdə istifadə edin.", "flow": "Klient → OmniRoute → CLI başlat (stdio/ACP) → cavab", "seeOther": "Bax →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "Omni tərəfindən backend kimi istifadə olunan CLI", "desc": "Tərs icra", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → CLI-ni işə sal → cavab", "examples": "məs.: claude, codex (ACP)" } }, @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Vebhuklar", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Webhook son nöqtələrini qeydiyyatdan keçirin, siyahıya alın, sınaqdan keçirin və silin. Hadisə abunəliklərini (request.completed, request.failed, quota.exceeded və s.) konfiqurasiya edin və çatdırılma üzrə təkrar cəhdləri idarə edin." }, "omni-mcp": { "name": "MCP Serveri", @@ -12390,11 +12397,11 @@ "description": "Əsas OpenAI ilə uyğun inferensiya son nöqtələri: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank və Responses API. AI agentləri üçün əsas inteqrasiya sahəsi." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Xidmət göstərmə", "description": "OmniRoute serverini CLI-dan başladın, dayandırın və yenidən başladın. Demon rejimini, port konfiqurasiyasını, avtomatik bərpanı, sistem trey inteqrasiyasını və idarə paneli açma qısayolunu idarə edin." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Sağlamlıq", "description": "CLI-dan server vəziyyətini, komponent statusunu və canlı metrikləri yoxlayın. Qoruyucu açarların və provayder statusunun real vaxt idarə paneli üçün `health`, `health components` və `health watch` əmrlərini icra edin." }, "cli-providers": { @@ -12582,21 +12589,21 @@ "configuredOnly": "Yalnız Konfiqurasiya Edilmişlər", "configuredOnlyHint": "Yalnız aktiv qoşulmaları olan provayderləri göstər", "noConfiguredProviders": "Konfiqurasiya edilmiş provayder tapılmadı. Əvvəlcə provayder qoşulması əlavə edin.", - "colConfigured": "Status", + "colConfigured": "Vəziyyət", "typeAll": "Bütün növlər", "typeNoauth": "Qeydiyyatsız", "typeOauth": "OAuth ilə giriş", "typeApikey": "API açarı", "sortTypeFirst": "Əvvəlcə ən asanlar", "sortTypeFirstHelp": "Qeydiyyat çətinliyinə görə qruplaşdırın (Qeydiyyatsız → OAuth ilə giriş → API açarı), hər qrup daxilində keyfiyyət ardıcıllığını qoruyun", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Əvvəlcə ən etibarlılar", + "sortByReliabilityHelp": "Provayderləri seçilmiş zaman aralığında uğurla tamamlanan çağırışların payına görə sıralayın. Göstərici müəyyən etmək üçün kifayət qədər çağırışı olmayan provayderlər ölçülmüş provayderlərin altında öz xal sıralamasını qoruyur.", "typeLegend": "Qeydiyyatsız = sıfır quraşdırma · OAuth ilə giriş = öz hesabınızla daxil olun · API açarı = öz açarınızı gətirin və ya həmin provayderin pulsuz paketindən istifadə edin", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Etibarlılıq", + "colReliabilityHelp": "Bu provayderin son 24 saat ərzində faktiki cavablandırdığı çağırışların payı. Tire işarəsi göstərici müəyyən etmək üçün çox az trafikə xidmət etdiyini bildirir.", + "reliabilitySample": "Son {hours} saatda {requests} çağırışdan {successes} uğurla tamamlandı", + "reliabilityTooFew": "Son {hours} saatda cəmi {requests} çağırış — göstərici müəyyən etmək üçün çox azdır", + "reliabilityNoTraffic": "Son 24 saatda heç bir çağırış qeydə alınmayıb" }, "discovery": { "title": "Provayder kəşfi", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar dəstəkçisi", + "description": "Canlı OmniRoute Radar dəstəkçi axını təsdiqlənib", + "criteria": "İmzalanmış canlı Radar dəstəkçi axınını təsdiqləyin." }, "first-token": { "name": "İlk Token", @@ -12846,7 +12853,7 @@ "security": "Təhlükəsizlik", "network": "Şəbəkə", "policies": "Siyasətlər", - "runtime": "Runtime", + "runtime": "İcra mühiti", "cli": "CLI", "health": "Sağlamlıq", "requiresRestart": "Yenidən Başlatma Tələb Olunur" @@ -12886,7 +12893,7 @@ "redact": "Maskala", "disabled": "Deaktiv edilib", "dual": "İkili", - "alias": "Alias", + "alias": "Ləqəb", "canonical": "Kanonik" }, "definitions": { @@ -12948,8 +12955,8 @@ "description": "Hər bir uyğunluq qovşağı üçün çoxlu bağlantıya icazə verin." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Kontekst pəncərəsi yoxlamalarını deaktiv edin", + "description": "Birbaşa tək model sorğuları üçün OmniRoute-un lokal kontekst pəncərəsi və maksimum giriş tokeni yoxlamasını keçin. Yuxarı axın provayderləri yenə də öz faktiki limitlərini tətbiq edir. Sorğu sıxışdırması və çıxış tokeni məhdudiyyətləri aktiv qalır." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Müştərilərə yönləndirməzdən əvvəl Responses API tranzit axınlarından daxili şərh mərhələsi çıxış elementlərini silin. Xam upstream şərhlərini qəbul etmək üçün bu bayrağı sıradan çıxarın." @@ -12985,7 +12992,7 @@ "description": "Baytlar artıq müştəriyə çatdıqdan sonra axının bərpasına cavabı yenidən sorğulamağa və onu birləşdirməyə icazə verin." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Axının ortasında davam etməni alət çağırışları üçün təhlükəsiz edin: alət çağırışı göndərildikdən sonra (hələ davam edirsə və ya artıq tamamlanıbsa) kəsilmiş axını heç vaxt bərpa etməyin və bütün təkrar cəhd limitindən istifadə etmək əvəzinə bir boş davam cəhdindən sonra dayandırın." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Axın heç bir faydalı çərçivə göndərmədən bağlandıqda və eyni bağlantıda məhdud təkrar cəhd tükəndikdə bir dəfə qardaş bağlantıya keçin. Uyğun qardaş bağlantı yoxdursa, ilkin early-EOF xətası qaytarılır. Söndürülüb: early-EOF təkrar cəhddən sonra son nəticə olaraq qalır." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Bacarıqlar sandbox-unda şəbəkəyə girişi aktivləşdirin." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Serverə məxsus alət dövrəsi", + "description": "Model müştərinin istifadə edə biləcəyi cavab qaytaranadək serverə məxsus yayımsız alət çağırışlarını davam etdirin." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After mənşəyi", + "description": "Birləşdirilmiş 429/503 əlçatmazlıq cavablarında konkret gələcək təkrar cəhd vaxtı məlum olmadıqda sintetik 1 saniyə göndərmək əvəzinə Retry-After parametrini buraxın, error.retry_after_provenance əlavə edin və combo boşaltma yollarında mətn şəklində təkrar cəhd göstərişlərini oxuyun." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Qorunan prioritetli infrastruktur dayanmaları 502 kimi", + "description": "Yalnız kvota üzrə ehtiyat variant olan prioritet hədəf combo-nu kvota ilə əlaqəli olmadığı sübuta yetirilən səbəbdən — açıq provayder dövrəqırıcısı və ya proqnozlaşdırılmış gecikməyə görə keçid — dayandırdıqda 503 əvəzinə 502 cavabı verin." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Kombo vəziyyəti", "callLogs": "Çağırış qeydləri", "costs": "Xərclər", - "playground": "Playground", + "playground": "Sınaq meydançası", "nestedCombo": "İç-içə kombo", "modelTarget": "Model hədəfi", "weight": "{value}% çəki", @@ -13171,7 +13182,7 @@ "segmentHint": "Hər seqment = bir pulsuz hovuz · hovuz üzrə təkrarlanmayan, dürüst sayım (şişirdilmiş sorğu limiti tavanları olmadan).", "boost": "Birdəfəlik $10 OpenRouter balans artımı ilə ayda ~{tokens} daha çox əldə edin (50 → 1000 sorğu/gün)", "uncapped": "Həmişəlik pulsuz, dərc edilmiş limit yoxdur (sorğu sayı məhdudlaşdırılıb) — real giriş, əsas göstəricidə sayılmır:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "Regional şəxsiyyət yoxlamasından sonra ayda təxminən {tokens} daha çox (məsələn, materik Çində həqiqi adla təsdiqləmə) — real kvotadır, əsas göstəriciyə daxil edilmir:", "tosRestricted": "{count, plural, one {# model} other {# model}} ToS ilə məhdudlaşdırılmış kimi qeyd edilib — qərar sizindir", "provider": "Provayder", "model": "Model", @@ -13205,7 +13216,7 @@ "actionApplied": "{action} tətbiq edildi.", "actionFailed": "Avtopilot əməliyyatı uğursuz oldu", "refresh": "Yenilə", - "status": "Status", + "status": "Vəziyyət", "issues": "Problemlər", "actions": "Əməliyyatlar", "connections": "Bağlantılar", @@ -13270,80 +13281,80 @@ "viewFullHistory": "GitHub-da tam tarixçəyə baxın" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", + "title": "Düşünmə marşrutlaşdırma siyasətləri", + "apiKeyTitle": "Bu API açarı üçün düşünmə marşrutlaşdırması", + "subtitle": "Müştəri dəstəyi tələb etmədən modelləri və düşünmə səviyyəsini yenidən marşrutlaşdırın. Heç bir qayda uyğun gəlmədikdə sorğular dəyişməz qalır.", + "loadError": "Düşünmə qaydalarını yükləmək mümkün olmadı.", + "saveError": "Qayda etibarsızdır və ya yadda saxlanıla bilmədi.", + "saved": "Düşünmə qaydası yadda saxlanıldı.", + "deleteConfirm": "Bu düşünmə qaydası silinsin?", + "deleteError": "Düşünmə qaydasını silmək mümkün olmadı.", + "empty": "Uyğun düşünmə qaydaları konfiqurasiya edilməyib.", + "all": "Hamısı", + "any": "İstənilən", + "enabled": "Aktivdir", + "disabled": "Deaktivdir", + "filterSearch": "Qaydaları axtarın", + "filterScope": "Əhatə dairəsinə görə filtrləyin", + "filterStatus": "Statusa görə filtrləyin", + "allModels": "bütün modellər", + "keepModel": "Modeli saxla", + "otherModel": "Digər model", + "combo": "Kombinasiya", + "priorityShort": "prioritet {value}", + "toggleAria": "{name} aktivləşdir", + "edit": "Redaktə et", + "delete": "Sil", + "name": "Ad", + "description": "Təsvir", + "scopeLabel": "Əhatə dairəsi", + "apiKey": "API açarı", + "sourceCombo": "Mənbə kombinasiyası", + "connection": "Bağlantı", + "sourceModel": "Mənbə modeli və ya əvəzedici simvol", + "sourceModelOptional": "Boş = bütün modellər", + "sourceModelExample": "məs., gpt-5*", + "sourceEffort": "Mənbə düşünmə səviyyəsi", + "missing": "Göstərilməyib", + "signalOnly": "Diskret olmayan düşünmə siqnalı", + "requestTags": "Sorğu teqləri", + "requestTagsExample": "kodlaşdırma, daxili", + "tagMode": "Teqlərin uyğunlaşdırılması", + "effortMode": "Düşünmə səviyyəsi rejimi", + "targetEffort": "Hədəf səy", + "routingTarget": "Marşrutlaşdırma hədəfi", + "targetModel": "Hədəf model", + "targetCombo": "Hədəf kombinasiya", + "budgetAction": "Düşünmə büdcəsi", + "budgetTokens": "Büdcə tokenləri", + "priority": "Prioritet", + "saveChanges": "Dəyişiklikləri yadda saxla", + "add": "Qayda əlavə et", + "cancel": "Ləğv et", + "simulateTitle": "Qaydanı simulyasiya et", "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "effort": "Səy", + "transport": "Nəqliyyat", + "simulate": "Yuxarı axın olmadan simulyasiya et", + "extendedComboWarning": "Max/Ultra marşrutlaşdırma zamanı hər bir kombinasiya hədəfi üçün ayrıca yoxlanılır.", + "extendedUnknownWarning": "Max/Ultra dəstəyini yoxlamaq üçün hədəf model daxil edin.", + "extendedUnsupportedWarning": "Max/Ultra dəstəyinin yalnız uyğun Codex GPT-5.6 modellərində olduğu məlumdur. Naməlum fərdi modellər server tərəfindən xəbərdarlıqla qəbul edilir.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", + "global": "Qlobal", + "apiKey": "API açarı", + "combo": "Kombinasiya", "model": "Model", - "connection": "Connection" + "connection": "Bağlantı" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Müştəridən miras al", + "default": "Standart dəyərdən istifadə et", + "force": "Məcbur et" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Qoru", + "remove": "Sil", + "set": "Sabit dəyər təyin et" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "Canlı (real vaxt)", "tierCommunity": "İcma (30 günlük gecikmə)", "activateTitle": "Radarı aktivləşdir", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Community və canlı girişi müqayisə edin, quraşdırmanızın hansı məlumatları mübadilə etdiyini anlayın və sonra Radar-ı necə aktivləşdirəcəyinizi seçin.", + "accessScaleTitle": "Aktivləşdirmədən əvvəl Radar girişini anlayın", + "accessScaleIntro": "Siz razılıq verməyənədək Radar şəbəkədə qeyri-aktiv qalır. Bu qaydaları nəzərdən keçirdikdən sonra Community girişini seçin və ya şəxsi dəstəkçi açarını aktivləşdirin.", + "accessCommunityRule": "Community — açar tələb olunmur: 30 günlük gecikmə ilə tam kataloq.", + "accessSingleUseRule": "Ulduzla + izlə — GitHub OAuth hər ikisini təsdiqlədikdən sonra GitHub hesabınız canlı kataloqu bir dəfə oxumaq imkanı əldə edir; sonra giriş yenidən Community rejiminə qayıdır. Bu birdəfəlik giriş həmin hesab üçün təkrar verilə bilməz.", + "accessContributorRule": "Töhfə verənlər — birləşdirilmiş PR-lər, commit-lər və sətirlər yalnız həftəlik sıralamanı müəyyən edir. İlk 10 yerə 365 gün, 11–100-cü yerlərə 90 gün verilir; ilk 100-lükdən kənarda qalan töhfə verənlər PR sayından asılı olmayaraq heç bir giriş müddəti əldə etmirlər. Sıralamadan çıxmaq artıq verilmiş müddəti heç vaxt azaltmır.", + "accessSupporterRule": "Dəstəkçilər — birdəfəlik satınalmalar avtomatik yenilənmə olmadan 6 aylıq, 1 illik və ya ömürlük giriş verir. Satınalmalar, ianələr, töhfəçi müddətləri və əl ilə verilən müddətlər toplanır; ömürlük giriş həmişə üstün sayılır.", + "accessUseTitle": "Şəxsi istifadə, bərpa və yoxlama", + "accessInstallationRule": "Şəxsi lisenziya — açarı eyni anda yalnız bir aktiv quraşdırmada istifadə edin. OmniRoute avadanlığın rəqəmsal izini çıxarmır. Bərpa itirilmiş açarın müddətini sıfırlamadan onu ləğv edir və yenisi ilə əvəzləyir.", + "accessAbuseRule": "Sui-istifadənin yoxlanması — 24 saat ərzində 4-cü fərqli IP yalnız əl ilə yoxlama işarəsi yaradır; bu, açarı heç vaxt avtomatik bloklamır və ya ləğv etmir.", + "accessOffersRule": "Canlı təkliflər əl ilə seçilir və dəyişdirilə və ya müddəti bitə bilər.", + "privacyTitle": "Radar hansı məlumatları mübadilə edir", + "privacyDownloadsRule": "Endirir — quraşdırmanız kriptoqrafik imzalanmış kataloq və yönləndirmə metadatasını qəbul edir; etibarlı canlı açar həmçinin imzalanmış təkliflərə və Intel-ə giriş imkanı yaradır.", + "privacySendsRule": "Göndərir — server tərəfli sinxronizasiya dəstəkçi açarını Bearer token kimi göndərir və HTTPS infrastrukturu bağlantının IP ünvanını qəbul edir. Lent sorğularının uçotu heç bir dəyəri xam şəkildə saxlamır: açar heşlərini, ümumi istifadə göstəricilərini və sui-istifadənin yoxlanılması üçün hər gün dəyişən, qısaldılmış IP HMAC-ını saxlayır.", + "privacyNeverRule": "Heç vaxt toplanmır — sorğular, cavablar, söhbətlər, provayder giriş məlumatları, model trafiki, işlək qalma müddəti, gecikmə və yerli provayder konfiqurasiyası heç vaxt Radar-a göndərilmir.", + "activateButton": "Community-ni aktivləşdir", "activating": "Aktivləşdirilir...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Artıq dəstəkçi açarınız var?", + "keyInvalidFormatError": "Açar formatı yanlışdır. O, \"omr_\" ilə başlamalı və ardınca 40 onaltılıq simvol gəlməlidir.", + "activateWithKeyButton": "Dəstəkçini aktivləşdir", + "changeKeyButton": "Açarı dəyiş", + "claimSectionTitle": "Hələ dəstəkçi açarınız yoxdur?", + "contributorButton": "Mən töhfəçiyəm", + "contributorHint": "GitHub OAuth cari həftəlik reytinqi yoxlayır: ilk 10-luqda olanlar 365 gün, 11–100-cü yerlərdə olanlar isə 90 gün əldə edir. Təkcə PR sayı ilk 100-lükdən kənarda heç vaxt giriş hüququ vermir.", + "supporterButton": "Layihəni dəstəklə", + "supporterHint": "Birdəfəlik 6 aylıq, 1 illik və ömürlük seçimlər avtomatik yenilənmir; uyğun müddətlər toplanır və ömürlük seçim üstün sayılır.", "colProvider": "Təchizatçı", "colModel": "Model", "colQuota": "Kvota", + "colLimits": "Sorğu limitləri", + "trainsOnPrompts": "Sorğular əsasında öyrədilir", + "trainsOnPromptsHelp": "Bu provayderin şərtlərində göndərdiyiniz sorğular əsasında təlim apara biləcəyi qeyd olunur. Bu nişanı olmayan modellər ya bunu etmədiklərini bildirir, ya da bunu sənədləşdirmir — belə bir bəyanatın olmaması zəmanət deyil.", + "limitsUnknownHelp": "Limitlər yalnız Radar lenti tərəfindən bildirilib; bu qeyd üçün dərc edilmiş limit yoxdur", + "contextUnknownHelp": "Bu qeyd üçün kontekst pəncərəsi məlum deyil", + "capabilityUnknownHelp": "İmkan lent tərəfindən bildirilməyib", "colContext": "Kontekst", "colCapabilities": "İmkanlar", "colTos": "ToS Riski", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "yeni", "setupGuide": "Quraşdırma bələdçisi", "disabledByFeed": "Radar axını tərəfindən deaktiv edilmişdir", "capTools": "Alətlər", "capVision": "Görmə", "capThinking": "Düşünmə", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Kataloq", + "freeCreditsTab": "Pulsuz kreditlər", + "freeCreditsSubtitle": "Radar tərəfindən izlənilən provayderlərin yönləndirmə keçidləri — onlardan istifadə sizə əlavə xərc yaratmır və OmniRoute-u dəstəkləməyə kömək edir.", + "fixedLinksEmpty": "Hələlik yönləndirmə keçidi yoxdur. Yenilikləri yoxlamaq üçün Radar-ı sinxronlaşdırın.", + "requiredActionLabel": "Nə etməli:", + "claimButton": "Kreditləri əldə et", + "campaignsTitle": "Məhdud müddətli kampaniyalar", + "campaignsEmpty": "Hazırda aktiv kampaniya yoxdur — daha sonra yenidən yoxlayın.", + "campaignsUpsellCommunity": "Məhdud müddətli kampaniyalar dəstəkçilər üçün əlavə imkandır. Bu səhifədəki sabit keçidlərdə olan hər şey hamı üçün pulsuz qalır.", + "campaignsValidUntil": "{date} tarixinədək etibarlıdır", + "colActions": "Əməliyyatlar", + "localBadge": "yerli", + "editModel": "Redaktə et", + "saveModel": "Yadda saxla", + "cancelEdit": "Ləğv et", + "resetModel": "Yerli dəyişiklikləri sıfırla", + "hideModel": "Gizlət", + "restoreModel": "Bərpa et", + "hiddenModelsTitle": "Gizli modellər", + "modelDisplayName": "Lokal ekran adı", + "modelEnabled": "Lokal olaraq aktivdir", + "localStateSaveFailed": "Lokal Radar ayarlarını saxlamaq mümkün olmadı", + "guidedCombos": "Yönləndirilən kombinasiyalar", + "offers": "Təkliflər", + "intel": "Məlumat" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar tərəfindən yönləndirilən kombinasiyalar", + "subtitle": "Radar tərəfindən seçilmiş ekvivalent pulsuz modellərdən prioritet ehtiyat variantları yaradın.", + "backToRadar": "Radar-a qayıt", + "loading": "Kombinasiya təklifləri yüklənir...", + "familyLabel": "Model ailəsi", + "modelsLabel": "Prioritet sırası", + "strategyReason": "Prioritet əvvəlcə ən böyük təkrarlanan pulsuz büdcədən istifadə edir, sonra isə aktiv provayderlər arasında ehtiyat variantlara keçir.", + "generateButton": "Kombinasiya yarat", + "generating": "Yaradılır...", + "alreadyCreated": "Artıq yaradılıb", + "created": "Kombinasiya yaradıldı", + "noSuggestions": "Hazırda uyğun model ailələrinin heç birinin ən azı iki provayderlə aktiv bağlantısı yoxdur.", + "catalogRequired": "Seçilmiş model ailələrini yükləmək üçün əvvəlcə Radar kataloqunu sinxronlaşdırın.", + "loadFailed": "Radar kombinasiya təkliflərini yükləmək mümkün olmadı.", + "createFailed": "Kombinasiyanı yaratmaq mümkün olmadı. Provayder bağlantılarınızı yoxlayın və yenidən cəhd edin." }, "radarSetupPage": { "title": "Təchizatçı Quraşdırması", @@ -13538,15 +13549,15 @@ }, "resilienceConnections": { "title": "Bağlantı Davamlılığı", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Bağlantılarınız avtomatik bərpa olunur", + "reassuranceDetail": "Adətən heç bir əməliyyat tələb olunmur. OmniRoute nasazlıqlardan sonra bağlantını müvəqqəti olaraq dayandırır, sonra onu təhlükəsiz şəkildə yenidən sınayır.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Sorğular göndərilə bilər", + "coolingDown": "Tezliklə yenidən sınanacaq", + "lockedOut": "Diqqətinizi tələb edir" }, "table": { - "status": "Status", + "status": "Vəziyyət", "provider": "Provayder", "connectionId": "Bağlantı", "authType": "Autentifikasiya", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Tələb olunan imkanlar (görmə, alətlər, strukturlaşdırılmış çıxış, kontekst pəncərəsi) olmayan hədəf modelində göndərilmədən əvvəl tələbləri rədd edin. Kombinasiya qatının uyğunluq filtrini keçən birbaşa tək təminatçı tələblərini qoruyur.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Birbaşa tək model sorğuları üçün OmniRoute-un lokal kontekst pəncərəsi və maksimum giriş tokeni yoxlamasını keçin. Yuxarı səviyyəli provayderlər faktiki limitlərini yenə də tətbiq edirlər. Sorğu sıxışdırması və çıxış tokeni limitləri aktiv qalır.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Axtarış statistikası və son axtarışlar yalnız hələ də aktiv bağlantısı olan provayderləri nəzərə alır (duckduckgo-free kimi açarsız provayderlər həmişə nəzərə alınır). Söndürüldükdə provayder ID-si olan bütün saxlanılmış axtarış sətirləri qorunur.", "publicSystem": { "notFound": { "title": "Səhifə tapılmadı", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "Baxım Məlumatı", "service": "Xidmət", "unknown": "naməlum", - "notAvailable": "n/a", + "notAvailable": "tətbiq edilmir", "providersTracked": "İzlənən Təchizatçılar", "circuitBreakerState": "Təchizatçı Dövrə Qırıcı Vəziyyəti", "lastUpdate": "Son yeniləmə: {timestamp}", @@ -13799,7 +13810,7 @@ "idcStartUrl": "IDC Başlanğıc URL", "idcStartUrlPlaceholder": "https://your-org.awsapps.com/start", "idcStartUrlDescription": "Sizin təşkilatınızın AWS IAM İdentlik Mərkəzi URL-i", - "awsRegion": "AWS Region", + "awsRegion": "AWS regionu", "regionPlaceholder": "us-east-1", "idcRegionDescription": "Kimlik Mərkəziniz üçün AWS bölgəsi (default: us-east-1)", "continue": "Davam et", @@ -13853,10 +13864,10 @@ "authorizeImportant": "Əhəmiyyətli: əvvəlcə trae.ai saytına bu brauzerdə daxil olmalısınız. Təsdiq səhifəsi yalnız mövcud sessiyanı təsdiqləyir — sizi daxil edə bilmir. \"Daxil Olma Uğursuz Oldu\" mesajını görsəniz, \"solo.trae.ai aç\" düyməsini basın, daxil olun, sonra bura qayıdın.", "waitingForAuthorization": "trae.ai üçün gözləyir…", "authorizeWithBrowser": "Brauzer ilə Təsdiqləyin", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai saytını aç", "orPasteManually": "və ya token-i əl ilə yapışdırın", "manualInstructions": "solo.trae.ai saytına daxil olun, DevTools → Şəbəkə bölməsini açın, istənilən çat mesajını göndərin və Authorization: Cloud-IDE-JWT {tokenPlaceholder} sorğu başlığından JWT-ni kopyalayın. JWT-nin ömrü ~14 gündür. İstəyə bağlı şəxsiyyət sahələri eyni sorğu bədənindəki common_params -dan gəlir.", - "accessTokenLabel": "Access Token (Cloud-IDE-JWT)", + "accessTokenLabel": "Giriş tokeni (Cloud-IDE-JWT)", "webId": "Veb ID", "optional": "isteğe bağlı", "bizUserId": "Biz İstifadəçi ID-si", @@ -13876,7 +13887,7 @@ } }, "providerTest": { - "dialogLabel": "Test {provider}", + "dialogLabel": "{provider} sınağı", "deprecated": "istifadədən çıxmış", "risk": "risk", "close": "Bağla", @@ -13886,7 +13897,7 @@ "clearConversation": "Söhbəti təmizlə", "clear": "Təmizlə", "tabs": { - "test": "Test", + "test": "Sınaq", "logs": "Girişlər" }, "loadingLogs": "Yüklənir qeydlər…", @@ -13935,7 +13946,7 @@ "followDescription": "Ox sürüşdürülür, İNDİ xətti 75%-də qalır", "now": "İndi", "nowDescription": "Cari vaxta keçid, İNDİ xətti mərkəzə sıfırlanır", - "pan": "Pan", + "pan": "Panorama", "panDescription": "Sürüşdürərək kəşf edin, fon donmuşdur" }, "reset": "Sıfırla", @@ -13956,7 +13967,7 @@ "metadata": { "compressionTitle": "Sıxma", "compressionDescription": "Kontekst sıxma parametrlərini tənzimləyin ki, token istifadəsini və xərcləri azaltsın.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — Relay Proksiləri", "relayDescription": "Serverless relay proxy son nöqtələri sizin AI infrastrukturunuz üçün", "trafficInspectorTitle": "Trafik Müfəttişi — OmniRoute", "trafficInspectorDescription": "LLM çağrılarını izləyin + hər hansı bir tətbiqin HTTPS trafikini düzəldin" @@ -13967,14 +13978,14 @@ "runners": "İdmançılar", "tasks": "Tapşırıqlar", "colName": "Ad", - "colClis": "CLIs", + "colClis": "CLI-lər", "colStatus": "Status", "colTask": "Tapşırıq", "colMode": "Rejim", "colRunner": "İcraçı", "colSummary": "Xülasə", "online": "onlayn", - "offline": "offline", + "offline": "oflayn", "draining": "boşaltma", "hubOffline": "İdarəedici mərkəzi offline və ya konfiqurasiya edilməyib (CONDUCTOR_HUB_URL) — köhnəlmiş məlumatlar əvəzinə heç nə göstərmir.", "noRunners": "Heç bir iştirakçı qeydiyyatdan keçməyib", @@ -14070,11 +14081,11 @@ "actionApprove": "Planı təsdiqlə", "actionCancel": "Ləğv et", "actionSeeInGraph": "Qrafikdə bax", + "actionRepeat": "Təkrarla", "actionDone": "Əməliyyat tətbiq edildi", "actionFailed": "Əməliyyat uğursuz oldu: {error}", "detailFailed": "Detallar yüklənmədi: {error}", "mirroredInA2A": "A2A-da əks olunub", - "actionRepeat": "Təkrarla", "repeatConfirm": "Təsdiqləmək üçün yenidən klikləyin", "repeatDone": "Yeni icra yaradıldı", "repeatUnavailable": "Orijinal giriş mövcud deyil" @@ -14088,57 +14099,57 @@ "networkError": "Şəbəkə xətası — təminatçı açıq parametrlərini yeniləmək mümkün olmadı" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Dəstəkçi təklifləri", + "subtitle": "Radar-dan rəsmi endirimlər, kreditlər, sınaq müddətləri və nəzərdən keçirilmiş tərəfdaş üstünlükləri.", + "backToRadar": "Radar-a qayıt", + "loading": "Təkliflər yüklənir...", + "refresh": "Təklifləri yenilə", + "refreshing": "Yenilənir...", + "loadFailed": "Təklifləri yeniləyə bilmədik. Son təsdiqlənmiş lokal keş saxlanılıb.", + "empty": "Hazırda aktiv təklif yoxdur.", + "keyRequiredTitle": "Dəstəkçi açarı tələb olunur", + "keyRequiredDescription": "Təkliflər Radar-ın canlı üstünlüyüdür. Radar ekranında mövcud dəstəkçi açarını əlavə edin, töhfəçi statusunuzu təsdiqləyin və ya açar əldə etmək üçün layihəni dəstəkləyin.", + "contributorButton": "Mən töhfəçiyəm", + "supporterButton": "Layihəni dəstəklə", + "partnerBadge": "Tərəfdaş", + "officialBadge": "Rəsmi", + "conditionsLabel": "Şərtlər:", + "validUntil": "{date} tarixinədək etibarlıdır", + "noExpiry": "Bitmə tarixi elan edilməyib", + "openOffer": "Təklifə bax", + "trialDays": "{days, plural, one {# gün} other {# gün}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", + "title": "Radar Analitikası", + "subtitle": "Radar-a məxsus ELO reytinqləri və kataloqdakı faktiki dəyişikliklər.", + "backToRadar": "Radar-a qayıt", + "loading": "Analitika yüklənir...", + "refresh": "Analitikanı yenilə", + "syncing": "Yenilənir...", + "loadFailed": "Analitikanı yeniləyə bilmədik. Son təsdiqlənmiş lokal keş saxlanılıb.", + "empty": "Hələlik təsdiqlənmiş Intel snapshot-ı mövcud deyil.", + "supporterBadge": "Radar dəstəkçisi", + "methodology": "Metodologiya", + "eloMethod": "ELO, ilkin {initial}, K={factor}", + "freshness": "Kataloqun yeniliyi", + "ageDays": "{days, plural, one {# günlük} other {# günlük}}", + "trend": "Kataloq tendensiyası", + "modelDelta": "{current} model, +{added} / -{removed}", + "ranking": "Model reytinqi", + "noRankings": "Hələlik təsdiqlənmiş müqayisələr mövcud deyil.", "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "category": "Kateqoriya", + "rating": "Reytinq", + "matches": "Qarşılaşmalar", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Yeni", + "aging": "Köhnələn", + "stale": "Köhnəlmiş" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Artan", + "stable": "Sabit", + "shrinking": "Azalan" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Sorğu təminatçının kontekst pəncərəsini aşır" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference OmniRoute Açıq Mənbə Dostudur", + "description": "Onlarla qabaqcıl modeli OpenAI ilə uyğun vahid endpoint vasitəsilə yenidən satan, qiymətə görə sıralanmış şlüz — hər sorğunu siyahı qiymətini heç vaxt aşmadan uyğun provayderlər arasında ən ucuzuna yönləndirir.", + "cta": "API açarı əldə edin", + "partnerLinkNote": "Tərəfdaş keçidi", + "dismissAriaLabel": "Bağla" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models kataloqunda düşünmə səviyyəsi variantlarının (məsələn, -low, -medium, -high) yaradılmasını deaktiv edin." } diff --git a/src/i18n/messages/bg.json b/src/i18n/messages/bg.json index ba02624d17..5ea8ef1e4c 100644 --- a/src/i18n/messages/bg.json +++ b/src/i18n/messages/bg.json @@ -31,7 +31,7 @@ "active": "Активен", "inactive": "Неактивен", "noData": "Няма налични данни", - "nothingHere": "Nothing here yet", + "nothingHere": "Все още няма нищо тук", "configure": "Конфигуриране", "manualConfig": "Ръчна конфигурация", "manage": "Управлявайте", @@ -47,7 +47,7 @@ "time": "време", "details": "Подробности", "created": "Създаден", - "lastUsed": "Last Refreshed", + "lastUsed": "Последно обновяване", "loadMore": "Зареди още", "noResults": "Няма намерени резултати", "reloadPage": "Презареди страницата", @@ -70,14 +70,14 @@ "note": "Забележка", "free": "безплатно", "skipToContent": "Преминете към съдържанието", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Сървърът изпитва затруднения. Някои функции може да не са достъпни.", + "maintenanceServerUnreachable": "Сървърът е недостъпен. Повторно свързване...", "accept": "Приеми", "accountId": "ID на акаунта", "alias": "Псевдоним", "apiKeyId": "ID на API ключ", "apiKeyName": "Име на API ключ", - "apiKeySecret": "API Key Secret", + "apiKeySecret": "Таен API ключ", "authorization": "Упълномощаване", "content-type": "Тип съдържание", "content-length": "Дължина на съдържанието", @@ -131,7 +131,7 @@ "resolve_connection_id": "Разрешете ИД на връзката", "scope_id": "ID на обхвата", "scopeId": "ID на обхвата", - "jwtSecret": "JWT Secret", + "jwtSecret": "JWT тайна", "keytar": "Keytar", "better-sqlite3": "по-добре-sqlite3", "undici": "undici", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Неуспешно нулиране на цените", "apikey": "API ключ", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Към таблото за управление", + "checkSystemStatus": "Проверка на състоянието на системата", + "selectModel": "Изберете модел", "addModel": "Добавяне на модел", "effortNone": "Няма", "effortLow": "Ниско", @@ -162,12 +162,12 @@ "effortMax": "Максимално", "effortUltra": "Ултра", "reasoningEffort": "Усилие за разсъждение", - "wireApi": "Wire API", + "wireApi": "Свързване на API", "modelAliases": "Псевдоними на модели", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Комбинации", + "noModelsFound": "Няма намерени модели", + "clear": "Изчистване", + "done": "Готово", "selectAll": "Избери всички", "unselectAll": "Отмени избора", "visibleModels": "видими", @@ -184,519 +184,519 @@ "selectAllProviders": "Проверете всички доставчици", "clearProviderSelection": "Премахнете отметката от доставчиците", "providersSelectedCount": "Проверени {count} доставчици", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Възникна грешка", + "comboDeleted": "Комбинацията е изтрита", + "hide": "Скриване", + "creating": "Създаване", + "comboCreated": "Комбинацията е създадена", + "swapFormats": "Размяна на форматите", + "daysAgo": "Преди дни", + "retries": "Повторни опити", + "errorDuringRestore": "Грешка при възстановяването", + "eventsAppearHint": "Подсказка за показване на събития", + "noLockouts": "Няма блокирания", + "webSearchDesc": "Описание на уеб търсенето", + "audioProvidersHeading": "Заглавие на доставчиците на аудио", "cloudAgentProviders": "Доставчици на облачни агенти", - "minutesAgo": "Minutes Ago", - "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "minutesAgo": "Преди минути", + "a": "А", + "liveAutoRefreshing": "Автоматично обновяване на живо", + "webSearch": "Уеб търсене", + "anthropicPrefixPlaceholder": "Заместващ текст за префикс на Anthropic", + "addModelToCombo": "Добавяне на модел към комбинацията", + "failedToLoad": "Неуспешно зареждане", + "categoryMedia": "Категория „Медия“", + "enableCloud": "Активиране на облака", + "expirationBannerExpiringSoon": "Банер за предстоящо изтичане", + "retry": "Повторен опит", + "embeddings": "Векторни представяния", + "errorCount": "Брой грешки", + "backupReasonManual": "Причина за архивиране: ръчно", + "safeSearchModerate": "Умерено безопасно търсене", + "activeLimiters": "Активни ограничители", + "a2aCardTitle": "Заглавие на A2A картата", + "cloudWorkerUnreachable": "Облачният работник е недостъпен", + "testFailed": "Тестът е неуспешен", + "compatibleBaseUrlHint": "Подсказка за съвместим базов URL", + "usageTracking": "Проследяване на използването", + "disableCloudTitle": "Заглавие за деактивиране на облака", + "noConnections": "Няма връзки", + "providerHealth": "Състояние на доставчика", + "confirmDbImport": "Потвърждаване на импортирането на базата данни", + "notAvailableSymbol": "Символ за недостъпност", + "backupsAvailable": "Налични резервни копия", + "providerAuto": "Автоматичен избор на доставчик", + "newProviderNamePlaceholder": "Заместващ текст за името на новия доставчик", + "a2aQuickStartStep2": "Стъпка 2 от бързото начало за A2A", + "ok": "Добре", + "available": "Налично", + "noBackupYet": "Все още няма резервно копие", + "more": "Още", + "noCompatibleYet": "Все още няма съвместими", + "multiProvider": "Множество доставчици", + "repairEnvHint": "Подсказка за поправка на средата", + "disablingCloud": "Деактивиране на облака", + "testBench": "Тестова среда", + "valid": "Валидно", + "cloudBenefitShare": "Споделяне на предимствата на облака", + "mcpCardTitle": "Заглавие на Mcp картата", + "disableConfirm": "Потвърждение за деактивиране", + "filters": "Филтри", + "expirationBannerExpiredDesc": "Описание на банера за изтекъл срок", + "saveComboDefaults": "Запазване на настройките по подразбиране за комбинацията", + "cloudConnectedVerified": "Облачната връзка е потвърдена", + "uptime": "Време на работа", + "compatibleProdPlaceholder": "Заместващ текст за съвместима продукционна среда", + "fallbackChainsTitle": "Вериги за резервно превключване", + "oauthLabel": "Етикет за OAuth", + "a2aCardDescription": "Описание на A2A картата", + "okShort": "ОК", + "maintenance": "Поддръжка", + "formatConverter": "Конвертор на формати", + "zedImportNetworkError": "Мрежова грешка при импортиране от Zed", + "apiKeyLabel": "Етикет за API ключ", + "noModelsForProvider": "Няма модели за доставчика", + "mcpCardDescription": "Описание на MCP картата", + "apiTypeLabel": "Етикет за типа на API", + "configuredProvidersLabel": "Етикет за конфигурираните доставчици", + "maxRetriesLabel": "Етикет за максималния брой повторни опити", + "title": "Заглавие", + "output": "Резултат", + "prefixHint": "Подсказка за префикс", + "skipWizard": "Пропускане на съветника", + "failedCount": "Брой неуспешни", + "confirmDbImportDesc": "Описание за потвърждение на импортирането на базата данни", + "entries": "Записи", + "until": "До", + "disableCombo": "Деактивиране на комбинацията", + "liveMonitorDescriptionPrefix": "Префикс на описанието за наблюдение в реално време", + "runningCount": "Брой изпълняващи се", + "noActiveConnectionsInGroup": "Няма активни връзки в групата", + "savedSuccessfully": "Запазено успешно", + "systemStorage": "Системно хранилище", + "videoDesc": "Описание на видеото", + "maxResults": "Максимален брой резултати", + "timeRangeMonth": "Времеви диапазон: месец", + "testSummary": "Обобщение на теста", + "failedSetPassword": "Задаването на парола е неуспешно", + "audio": "Аудио", + "restore": "Възстановяване", + "disableWarning": "Предупреждение при деактивиране", + "moderationsDesc": "Описание на модерациите", + "providerHealthStatusAria": "ARIA етикет за състоянието на доставчика", + "modelNamePlaceholder": "Заместващ текст за името на модела", + "mcpQuickStartStep2": "Стъпка 2 от бързото стартиране на MCP", + "quickStart": "Бързо стартиране", + "fullExportFailedWithError": "Пълното експортиране е неуспешно поради грешка", + "loadingBackups": "Зареждане на резервни копия", + "anthropicBaseUrlPlaceholder": "Заместващ текст за основния URL адрес на Anthropic", + "description": "Описание", + "noProviderFound": "Не е намерен доставчик", + "auto": "Автоматично", + "protocolsDescription": "Описание на протоколите", + "cloudSessionNote": "Бележка за облачната сесия", + "advancedSettings": "Разширени настройки", + "defaultStrategy": "Стратегия по подразбиране", + "purgeExpiredLogs": "Изчистване на изтеклите регистрационни файлове", + "justNow": "Току-що", + "providerTestFailed": "Тестът на доставчика е неуспешен", + "openaiBaseUrlPlaceholder": "Заместващ текст за основния URL адрес на Openai", + "image": "Изображение", + "failedCreateChain": "Неуспешно създаване на верига", + "importDatabase": "Импортиране на база данни", + "allDataLocal": "Всички данни са локални", + "sectionTitle": "Заглавие на раздела", + "failedToggle": "Неуспешно превключване", + "editCombo": "Редактиране на комбинация", + "testResults": "Резултати от теста", + "searchQuery": "Заявка за търсене", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "Дублиране", + "createCombo": "Създаване на комбинация", + "searchTypeWeb": "Тип търсене: уеб", + "addChain": "Добавяне на верига", + "prefixLabel": "Етикет на префикса", + "listModelsDesc": "Описание на списъка с модели", + "databaseSize": "Размер на базата данни", + "chainCreated": "Веригата е създадена", + "providerTestTimeout": "Времето за тест на доставчика изтече", + "routingStrategy": "Стратегия за маршрутизиране", + "translateAction": "Действие за превод", + "exportFailed": "Неуспешно експортиране", + "connectedVerificationPending": "Свързано, предстои проверка", + "a2aQuickStartTitle": "Заглавие на бързото ръководство за A2A", + "couldNotTest": "Тестът не можа да бъде извършен", + "testAllCompatible": "Тестване на всички съвместими", + "anthropicCompatibleName": "Име на съвместимия с Anthropic доставчик", + "disabling": "Деактивиране", + "failedEnable": "Неуспешно активиране", + "categoryUtility": "Категория: помощни инструменти", + "customUrlOptional": "Персонализиран URL адрес (незадължително)", + "localProviders": "Локални доставчици", + "comboNamePlaceholder": "Заместващ текст за име на комбинацията", + "memoryRss": "Резидентна памет", + "disableProvider": "Деактивиране на доставчика", + "welcomeDesc": "Описание на приветствието", + "nameLabel": "Етикет за име", + "allOperational": "Всички работят нормално", + "backupNow": "Архивиране сега", + "providerMaxRetriesAria": "ARIA етикет за максимален брой повторни опити на доставчика", + "textToSpeechDesc": "Описание на преобразуването на текст в реч", + "machineId": "Идентификатор на машината", + "globalProxy": "Глобален прокси сървър", + "hitsMisses": "Попадения и пропуски", + "testDesc": "Описание на теста", + "chatDesc": "Описание на чата", + "importSuccess": "Успешно импортиране", + "chat": "Чат", + "a2aQuickStartStep1": "Стъпка 1 от бързото стартиране на A2A", + "importFailed": "Неуспешно импортиране", + "inputPlaceholder": "Заместващ текст за полето за въвеждане", + "providerModelsTitle": "Заглавие на моделите на доставчика", + "lastBackup": "Последно архивиране", + "yourEndpoint": "Вашата крайна точка", + "autoDisableThresholdDesc": "Описание на прага за автоматично деактивиране", + "rerankDesc": "Описание на преподреждането", + "modelsPathPlaceholder": "Заместващ текст за пътя до моделите", + "noCombosYet": "Все още няма комбинации", + "connectedVerificationPendingWithError": "Свързано, предстои проверка, с грешка", + "comboDefaultsGuideHint1": "Подсказка 1 от ръководството за настройки по подразбиране на комбинациите", + "enableCloudTitle": "Заглавие за активиране на облака", + "configuredProvidersHint": "Подсказка за конфигурираните доставчици", + "paused": "Поставено на пауза", + "llmProviders": "Доставчици на LLM", + "enableCombo": "Активиране на комбинацията", + "removeProviderOverrideAria": "ARIA етикет за премахване на персоналната настройка на доставчика", + "nodeVersion": "Версия на Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Неуспешно експортиране с грешка", + "proxyConfigured": "Прокси сървърът е конфигуриран", + "concurrencyPerModel": "Паралелни заявки за модел", + "protocolTasksLabel": "Етикет за задачи на протокола", + "oauthProviders": "OAuth доставчици", + "lockedCount": "Брой заключени", + "deleteChainConfirm": "Потвърждение за изтриване на веригата", + "recentTranslations": "Скорошни преводи", + "zedImportButton": "Бутон за импортиране от Zed", + "responsesDesc": "Описание на отговорите", + "testedCount": "Брой тествани", + "providersCommaSeparatedPlaceholder": "Заместващ текст за доставчици, разделени със запетаи", + "signatureDefaults": "Стойности по подразбиране за подписа", + "errorCreating": "Грешка при създаването", + "timeRangeYear": "Времеви диапазон: година", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Облакът е деактивиран успешно", + "deleteConfirm": "Потвърждение за изтриване", + "check": "Проверка", + "safeSearch": "Безопасно търсене", + "protocolLastActivity": "Последна активност на протокола", + "openMcpDashboard": "Отваряне на таблото за управление на MCP", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Етикет за пътя на чата", + "retryDelay": "Забавяне преди повторен опит", + "errorUpdating": "Грешка при актуализирането", + "ideCliIntegrations": "Интеграции с IDE и CLI", + "imageGeneration": "Генериране на изображения", + "apiKeyRequired": "Изисква се API ключ", + "resetAllTitle": "Нулиране на всичко", + "connectionError": "Грешка при свързването", + "modelName": "Име на модела", + "apiKeyForCheck": "API ключ за проверка", + "cloudRequestTimeout": "Изтече времето за облачната заявка", + "showConfiguredOnly": "Показване само на конфигурираните", "showFreeOnly": "Само безплатно", "addFirstProvider": "Добавете първия си доставчик", "addFirstProviderDesc": "Свържете доставчик на AI, за да започнете да маршрутизирате заявки през OmniRoute. Можете да използвате безплатни доставчици, API ключове или OAuth акаунти.", "learnMore": "Научете повече", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Включване на домейни", + "promptCache": "Кеш на подканите", + "cloudConnected": "Облакът е свързан", + "deleteChain": "Изтриване на веригата", + "chatPathPlaceholder": "Заместващ текст за пътя на чата", + "databasePath": "Път до базата данни", + "usingLocalServer": "Използване на локален сървър", + "globalComboConfig": "Глобална комбинирана конфигурация", + "backupFailed": "Неуспешно архивиране", + "tabProtocols": "Раздел „Протоколи“", + "continue": "Продължи", + "categorySearch": "Търсене по категория", + "rateLimitStatus": "Състояние на ограничението на заявките", + "repairEnvSuccess": "Успешно възстановяване на средата", + "nameRequired": "Името е задължително", + "country": "Държава", + "trackMetricsDesc": "Проследяване на показателите — описание", + "durationSecondsShort": "Продължителност в секунди (кратко)", + "formatConverterDescription": "Описание на конвертора на формати", + "cloudBenefitAccess": "Достъп до предимствата на облака", + "maxRetries": "Максимален брой повторни опити", + "queueTimeout": "Време за изчакване на опашката", "queueDepth": "Дълбочина на опашката", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Добавяне на доставчик", + "realtime": "В реално време", + "totalTranslations": "Общо преводи", + "protocolActiveStreamsLabel": "Етикет за активните потоци на протокола", + "repairEnv": "Възстановяване на средата", + "modelsCount": "Брой модели", + "viewBackups": "Преглед на резервните копия", + "responsesApi": "API за отговори", + "copyComboName": "Копиране на името на комбинацията", + "failures": "Неуспехи", + "failedUpdate": "Неуспешно актуализиране", + "imageDesc": "Описание на изображението", + "failedCreate": "Неуспешно създаване", + "remainingOfLimit": "Оставащи от лимита", + "protocolsTitle": "Заглавие на протоколите", + "expirationBannerExpiringSoonDesc": "Описание на банера за предстоящо изтичане", + "source": "Източник", + "failed": "Неуспешно", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "Стъпка 1 от бързото начало за MCP", + "runTest": "Изпълнение на тест", + "loadingFallbackChains": "Зареждане на резервните вериги", + "healthy": "Изправно", + "version": "Версия", + "saveBlockWeighted": "Запазване на претегления блок", + "zedImportNone": "Няма импортиране от Zed", + "noBackupsYet": "Все още няма резервни копия", + "noGlobalProxy": "Няма глобален прокси сървър", + "noModels": "Няма модели", + "stickyLimit": "Постоянен лимит", + "passedCount": "Брой успешни", + "zedImportFailed": "Неуспешно импортиране от Zed", + "saving": "Запазване", + "testAll": "Тестване на всички", + "globalProxyDesc": "Описание на глобалния прокси сървър", + "latencyP99": "Латентност P99", + "connectingToCloud": "Свързване с облака", + "responses": "Отговори", + "errorDeleting": "Грешка при изтриване", + "openaiPrefixPlaceholder": "Заместващ текст за префикса на Openai", + "enterPassword": "Въведете парола", + "openA2aDashboard": "Отваряне на таблото A2A", + "enableProvider": "Активиране на доставчика", + "modeTest": "Тестов режим", + "failedDeleteChain": "Неуспешно изтриване на веригата", + "providerDesc": "Описание на доставчика", + "templateLoadHint": "Подсказка за зареждане на шаблон", + "lastFailure": "Последен неуспех", + "moveDown": "Преместване надолу", + "providerLabel": "Етикет на доставчика", + "clearCacheFailed": "Неуспешно изчистване на кеша", + "imagesGenerations": "Генериране на изображения", + "repairEnvWorking": "Поправяне на работната среда", + "millisecondsShort": "мс", + "globalLabel": "Глобален етикет", + "failuresPlural": "Неуспехи", + "completionsLegacyDesc": "Описание на наследените довършвания", + "searchProviders": "Търсене на доставчици", + "chatPathHint": "Подсказка за пътя за чат", + "defaultStrategyDesc": "Описание на стратегията по подразбиране", + "latencyP95": "Латентност P95", + "textToSpeech": "Преобразуване на текст в реч", + "searchType": "Тип търсене", + "messages": "Съобщения", + "aggregatorsGateways": "Агрегатори и шлюзове", + "comboStrategyAria": "Комбинирана стратегия Aria", + "input": "Вход", + "testingConnection": "Тестване на връзката", + "excludeDomains": "Изключване на домейни", + "webCookieProviders": "Доставчици на уеб бисквитки", + "allTestsPassed": "Всички тестове са успешни", + "openaiCompatibleName": "Име за съвместимост с OpenAI", + "warningCostOptimizedPartialPricing": "Предупреждение за частично ценообразуване с оптимизирани разходи", + "comboDefaultsGuideTitle": "Заглавие на ръководството за настройки по подразбиране на комбинациите", + "hoursAgo": "часа по-рано", + "notAvailable": "Не е налично", + "skipAndContinue": "Пропускане и продължаване", + "moderations": "Модериране", + "proxyConfig": "Конфигурация на прокси", + "upstreamProxyProviders": "Доставчици на прокси нагоре по веригата", + "exportAll": "Експортиране на всички", + "queuedCount": "Брой в опашката", + "resetAll": "Нулиране на всички", + "noTranslations": "Няма преводи", + "avgLatency": "Средна латентност", + "throttleStatus": "Състояние на ограничаването", + "backupRetentionDesc": "Описание на срока за съхранение на резервни копия", + "noCBData": "Няма данни за Cb", + "chainDeleted": "Веригата е изтрита", + "timeLeft": "Оставащо време", + "expirationBannerExpired": "Банер за изтекъл срок", + "language": "Език", + "invalidFileType": "Невалиден тип файл", + "monitoredProviders": "Наблюдавани доставчици", + "errors": "Грешки", + "heap": "Динамична памет", + "chatCompletions": "Завършвания на чат", + "exampleTemplatesHint": "Подсказка за примерни шаблони", + "retryDelayLabel": "Етикет за забавяне при повторен опит", + "audioTranscription": "Транскрибиране на аудио", + "fallbackChainsDesc": "Описание на резервните вериги", + "exampleTemplates": "Примерни шаблони", + "connectionsCount": "Брой връзки", + "modelsPathLabel": "Етикет за пътя до моделите", + "activeProvidersHint": "Подсказка за активните доставчици", + "activeLockouts": "Активни блокировки", + "invalid": "Невалидно", + "skipPassword": "Пропускане на паролата", + "moveUp": "Преместване нагоре", + "timeRange": "Времеви диапазон", + "stickyLimitDesc": "Описание на постоянния лимит", + "cloudBenefitEdge": "Предимство на облака Edge", + "custom": "Персонализирано", + "verifying": "Проверява се", + "baseUrlLabel": "Етикет за основния URL", + "setPassword": "Задаване на парола", + "safeSearchStrict": "Строго безопасно търсене", + "noChangesSinceBackup": "Няма промени след архивирането", + "modelsPathHint": "Подсказка за пътя към моделите", + "audioTranscriptions": "Аудиотранскрипции", + "testCombo": "Тестване на комбинацията", + "mcpQuickStartTitle": "Заглавие за бърз старт на MCP", + "comboUpdated": "Комбинацията е актуализирана", + "weighted": "Претеглено", + "providers": "Доставчици", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Описание при липса на резервни вериги", + "yesImport": "Да, импортиране", + "lockoutsAutoRefreshHint": "Подсказка за автоматично обновяване на блокиранията", + "tabApis": "Раздел „API“", + "sectionDescription": "Описание на раздела", + "filter": "Филтър", + "purgeLogsFailed": "Неуспешно изчистване на регистрационните файлове", + "latency": "Закъснение", + "testAllOAuth": "Тестване на всички OAuth", + "mcpQuickStartStep3": "Стъпка 3 от бързия старт на MCP", + "repairEnvFailed": "Неуспешно възстановяване на средата", + "zedImportHint": "Подсказка за импортиране от Zed", + "modelsAcrossEndpoints": "Модели в различните крайни точки", + "autoDisableBannedAccounts": "Автоматично деактивиране на блокирани акаунти", + "securityDesc": "Описание на сигурността", + "listModels": "Списък с модели", + "backupRestore": "Архивиране и възстановяване", + "target": "Цел", + "zedImportSuccess": "Успешно импортиране от Zed", + "lastHeaderUpdate": "Последна актуализация на заглавката", + "categoryCore": "Основна категория", + "noFallbackChains": "Няма резервни вериги", + "noSearchProviders": "Няма доставчици за търсене", + "autoBalance": "Автоматично балансиране", + "noModelsYet": "Все още няма модели", + "signatureFamily": "Семейство подписи", + "externalApiCalls": "Външни API извиквания", + "providerOverridesDesc": "Описание на замените за доставчика", + "signatureTool": "Инструмент за подписване", + "connectionFailed": "Неуспешно свързване", + "activeLimitersPlural": "Активни ограничители", + "doneDesc": "Описание на завършването", + "down": "Не работи", + "noDataYet": "Все още няма данни", + "activeProviders": "Активни доставчици", + "nameInvalid": "Невалидно име", + "skip": "Пропускане", + "createChain": "Създаване на верига", + "audioSpeech": "Аудиореч", + "cacheCleared": "Кешът е изчистен", + "searchTypeNews": "Тип търсене: новини", + "durationMillisecondsShort": "Продължителност (мс)", + "addOpenAICompatible": "Добавяне на OpenAI-съвместим доставчик", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "На опашката", + "domainPlaceholder": "Заместващ текст за домейн", + "durationMinutesShort": "Продължителност (мин)", + "verifyingConnection": "Проверка на връзката", + "imageProviders": "Доставчици на изображения", + "protocolToolsLabel": "Етикет за протоколни инструменти", + "queryPlaceholder": "Заместващ текст за заявка", + "videoGeneration": "Генериране на видео", + "timeRangeWeek": "Период: седмица", + "limitExhausted": "Лимитът е изчерпан", + "failedDisable": "Неуспешно деактивиране", + "inMemoryNote": "Бележка за съхранение в паметта", + "compatibleHint": "Съвет за съвместимост", + "errorShort": "Грешка", + "advancedHint": "Съвет за разширени настройки", + "restoreFailed": "Неуспешно възстановяване", + "searchProvidersHeading": "Доставчици за търсене", + "comboName": "Име на комбинацията", + "autoDisableDescription": "Описание на автоматичното деактивиране", + "embeddingsDesc": "Описание на векторните представяния", + "operational": "Работи", + "testAllApiKey": "Тестване на всички API ключове", + "backupCreated": "Архивното копие е създадено", + "errorDuringImport": "Грешка по време на импортирането", + "comboDefaultsGuideHint2": "Подсказка 2 от ръководството за комбинирани настройки по подразбиране", + "connecting": "Свързване", + "fillModelAndProviders": "Попълнете модела и доставчиците", + "syncing": "Синхронизиране", + "resetConfirm": "Потвърждение за нулиране", + "trackMetrics": "Проследяване на показатели", + "successful": "Успешно", + "recovering": "Възстановяване", + "autoDisableThreshold": "Праг за автоматично деактивиране", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Синхронизиране на данни", + "cloudBenefitPorts": "Предимства на облака: портове", + "compatibleProviders": "Съвместими доставчици", "freeTierProviders": "Доставчици на безплатни нива", "freeTierLabel": "Налично безплатно ниво", "freeTierProvidersDesc": "Доставчици с безплатни нива — някои изискват регистрация на API ключ, други изобщо не се нуждаят от идентификационни данни.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Изчистване на кеша", + "reqs": "Заявки", + "addAnthropicCompatible": "Добавяне на доставчик, съвместим с Anthropic", + "apiKeyProviders": "Доставчици на API ключове", + "tabsAria": "ARIA за раздели", + "resetting": "Нулиране", + "millisecondsAbbr": "мс", + "backupReasonPreRestore": "Причина за архивиране преди възстановяване", + "disableCloud": "Деактивиране на облака", + "newProviderNameAria": "ARIA за име на нов доставчик", + "passwordsMismatch": "Паролите не съвпадат", + "a2aQuickStartStep3": "Стъпка 3 от бързото ръководство за A2A", + "liveMonitorDescriptionSuffix": "Суфикс към описанието на наблюдението в реално време", + "failedAddProvider": "Неуспешно добавяне на доставчик", + "addAtLeastOneProvider": "Добавете поне един доставчик", + "reasonSeparator": "Разделител за причината", + "zedImporting": "Импортиране на Zed", + "confirmPasswordPlaceholder": "Потвърдете паролата", + "whatYouGet": "Какво получавате", + "signatureSession": "Подпис на сесията", + "errorCountNoCode": "Брой грешки без код", + "testing": "Тестване", + "providersCommaSeparated": "Доставчици, разделени със запетаи", + "exportDatabase": "Експортиране на базата данни", + "hitRate": "Процент попадения", + "completionsLegacy": "Остарели довършвания", + "removeModel": "Премахване на модел", + "timeRangeDay": "Времеви диапазон: ден", + "cloudRequestFailed": "Неуспешна облачна заявка", + "updatedAt": "Актуализирано на", + "monitoredProvidersHint": "Подсказка за наблюдаваните доставчици", + "connectionSuccessful": "Успешна връзка", + "latencyP50": "Латентност P50", + "logsDeleted": "Регистрационните файлове са изтрити", + "chatTester": "Тестер за чат", + "safeSearchOff": "Безопасното търсене е изключено", + "nameHint": "Подсказка за име", + "debugToggle": "Превключвател за отстраняване на грешки", + "embedding": "Векторно представяне", + "issuesLabel": "Етикет за проблеми", + "optionAny": "Опция „Всички“", + "maxNestingDepth": "Максимална дълбочина на влагане", + "rerank": "Преранжиране", + "checking": "Проверка", + "getStarted": "Първи стъпки", + "restoreSuccess": "Успешно възстановяване", + "issuesDetected": "Открити проблеми", + "signatureCache": "Кеш за подписи", + "modelLockouts": "Блокирания на модели", + "usingCloudProxy": "Използва се облачно прокси", + "loadingHealth": "Зареждане на състоянието", + "providerOverrides": "Заместващи настройки за доставчици", + "audioTranscriptionDesc": "Описание на аудиотранскрипцията", + "learnedFromHeaders": "Научено от заглавките", + "totalRequests": "Общо заявки", + "cloudUnstableNote": "Бележка за нестабилност на облачната услуга", "gamificationAdmin": "Администратор на Gamification", "monitorAnomaliesAndHealth": "Наблюдавайте аномалии и изправност на системата", "flaggedAnomalies": "Маркирани аномалии", @@ -704,7 +704,7 @@ "apiKey": "API ключ", "xpLastHour": "XP (1 ч)", "zScore": "Z-резултат", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Подозрително", "tokensCommunityServers": "Общностни сървъри", "tokensServerNamePlaceholder": "Име на сървъра", "tokensApiKeyPlaceholder": "API ключ", @@ -738,7 +738,7 @@ "tokensSent": "Изпратено", "tokensReceived": "Получено", "tokensCreatingInvite": "Създаване...", - "tokensCreateInvite": "Create Invite", + "tokensCreateInvite": "Създаване на покана", "tokensInviteCreated": "Кодът за покана е създаден", "tokensRedeeming": "Активиране...", "tokensRedeem": "Активиране", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Зареждат се още...", "recommended": "Препоръчително", "understand": "Разбирам", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "Пакетна обработка", + "batchConceptSubtitle": "Обработвайте асинхронно хиляди заявки на ~50% от цената (в рамките на 24 часа). Идеално за оценки, класификация и векторни представяния.", + "batchConceptHowItWorks": "Как работи", + "batchConceptBenefit50pct": "50% отстъпка за входни + изходни токени", + "batchConceptAsync24h": "Асинхронно, с 24-часов срок за завършване", + "batchConceptUseCases": "Най-подходящо за масова класификация, оценки и векторни представяния", + "batchHeaderSubtitle": "Изпълнете много заявки като една задача", + "batchStep1": "1 · Качване на JSONL", + "batchStep1Desc": "Добавяне на заявки", + "batchStep2": "2 · Създаване на пакет", + "batchStep2Desc": "Изпълнение на задачата", + "batchStep3": "3 · Получаване на резултатите", + "batchStep3Desc": "Изтегляне на резултатите", + "filesConceptTitle": "Пакетни файлове", + "filesConceptSubtitle": "JSONL файлове, използвани от пакетите: входни заявки, резултати и грешки.", + "filesConceptInput": "Вход — вашият JSONL с по една заявка на ред", + "filesConceptOutput": "Изход — резултати от завършените заявки", + "filesConceptError": "Грешки — неуспешни заявки", + "filesConceptRetention": "Срок на съхранение: 30 дни по подразбиране (29 дни при Anthropic)", + "wizardTitle": "Нов пакет", + "wizardClose": "Затваряне", + "wizardNext": "Напред", + "wizardBack": "Назад", + "wizardCancel": "Отказ", + "wizardCreate": "Създаване на пакет", + "wizardCreating": "Създаване…", + "wizardStep1Destination": "Местоназначение", + "wizardStep2Input": "Вход", + "wizardStep3Validate": "Валидиране", + "wizardStep4Cost": "Цена и създаване", + "wizardProviderLabel": "Доставчик", + "wizardEndpointLabel": "Крайна точка", + "wizardModelLabel": "Модел", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (ще го преобразуваме)", + "wizardDropOrPick": "Пуснете файл тук или щракнете, за да изберете", + "wizardCsvMappingTitle": "Съпоставяне на колоните в CSV → полета на заявката", + "wizardCsvMappingAddField": "Добавяне на поле", "wizardCsvNoColumns": "Не са открити колони в заглавната част на CSV файла.", "wizardCsvIgnoreColumn": "— игнориране —", "wizardCsvCustomIdMapped": "custom_id е съпоставен", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} реда са анализирани", "wizardCsvRowsSkipped": "{count} реда са прескочени", "wizardCsvRowError": "Ред {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Всички редове са валидни", "wizardValidating": "Валидиране…", "wizardValidationParseFailed": "Валидирането неуспешно — съдържанието не може да бъде анализирано.", "wizardValidationSummary": "{lines} реда · {ids} уникални custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Открити са дублиращи се custom_ids:", "wizardValidationFirstErrors": "Грешки (първите {count}):", "wizardValidationLine": "Ред {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Грешки при валидирането", + "wizardValidationPreview": "Преглед (първите 5 заявки)", + "wizardValidationSamplingNote": "Файлът е голям — валидиран е чрез извадка (първите 1000 + последните 100 реда). Пълното валидиране се извършва на сървъра.", + "wizardCostSync": "Цена при синхронно изпълнение", + "wizardCostBatch": "Цена за пакет (-50%)", + "wizardCostSavings": "Спестявания", + "wizardCostEstimatedNotice": "Прогнозна цена — действителното таксуване може да се различава.", + "wizardErrorUpload": "Неуспешно качване на файла. Опитайте отново.", + "wizardErrorCreate": "Неуспешно създаване на партидата. Опитайте отново.", + "wizardEmptyProviders": "Свържете доставчик с поддръжка на партиди (OpenAI, Anthropic или Gemini), за да създадете партида.", + "uploadModalTitle": "Качване на файл за партида", + "uploadModalDropOrPick": "Пуснете .jsonl файл тук или щракнете, за да изберете", + "uploadModalUpload": "Качване", + "uploadModalCancel": "Отказ", + "uploadModalError": "Качването не бе успешно. Опитайте отново.", + "uploadModalSuccess": "Качено", + "uploadModalSizeLimit": "Макс. 512 MB", + "batchListNewButton": "Нова партида", + "batchListAutoRefresh": "Автоматично опресняване на 30 сек.", + "batchListCostColumn": "Цена", + "batchActionCancel": "Отказ", + "batchActionDownloadOutput": "Изтегляне на резултата", + "batchActionDownloadErrors": "Изтегляне на грешките", + "batchActionRetry": "Повторен опит за неуспешните", + "batchActionRetryConfirm": "Да се изпратят ли отново {n} неуспешни заявки? Крайната цена зависи от действително използваните токени.", + "expirationBadgeCritical": "Критично", + "expirationBadgeWarning": "Скоро", + "expirationBadgeNormal": "Изчаква", + "expirationBadgeExpired": "Изтекло", + "filesListUploadButton": "Качване", + "filesListUsedByColumn": "Използва се от", + "filesListUsedByNone": "Няма", + "filesListUsedByRoleInput": "вход", + "filesListUsedByRoleOutput": "изход", + "filesListUsedByRoleError": "грешка", + "filesListSizeColumn": "Размер", + "batchListProgressPartial": "(частично)", + "batchListProviderColumn": "Доставчик", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", - "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListProviderOther": "Други", + "batchListTitle": "Партиди", + "batchListCount": "{count} партиди", + "batchListRemovingCompleted": "Премахване…", + "batchListRemoveCompleted": "Премахване на завършените", + "batchListTableStatus": "Състояние", + "batchListTableId": "ИД", + "batchListTableEndpoint": "Крайна точка", + "batchListTableModel": "Модел", + "batchListTableProgress": "Напредък", + "batchListTableCreated": "Създадено", + "batchListTableExpires": "Изтича", + "batchListLoading": "Зареждане…", + "batchListEmpty": "Няма намерени пакети", + "batchListValidating": "Проверка…", + "batchStatusAll": "Всички състояния", + "batchStatusInProgress": "В процес", + "batchStatusValidating": "Проверява се", + "batchStatusFinalizing": "Финализиране", + "batchStatusCompleted": "Завършено", + "batchStatusFailed": "Неуспешно", + "batchStatusCancelled": "Отменено", + "batchStatusCancelling": "Отменяне", + "batchStatusExpired": "Изтекло", + "batchStatusCompletedWithFailures": "завършено с неуспешни заявки", + "batchStatusInProgressWithFailures": "в процес (с неуспешни заявки)", + "batchStatusFinalizingWithFailures": "финализиране (с неуспешни заявки)", + "batchStatusCancelledWithFailures": "отменено с неуспешни заявки", + "batchStatusExpiredWithFailures": "изтекло (частично)", + "wizardCostEstimating": "Изчисляване на разходите…", + "wizardCostRequests": "Заявки", + "wizardCostInputTok": "входни токени", + "wizardCostOutputTok": "изходни токени", + "wizardCostWindow": "Прозорец", + "wizardDestinationSelectProvider": "Изберете доставчик…", + "wizardDestinationSelectModel": "Изберете модел…", + "wizardDestinationConnectProvider": "Свързване на доставчик", + "batchListBatchCreated": "Пакетът {id} е създаден — списъкът се обновява…", + "batchListBatchCreatedDismiss": "Отхвърляне", + "batchListRefreshing": "Обновяване…", + "batchListRefresh": "Обновяване", + "uploadFileModalRemove": "Премахване", + "uploadFileModalUploading": "Качване…", + "wizardInputReading": "Четене на файла…", + "wizardInputReady": "Готово", + "wizardInputLargeFileLabel": "Голям файл — проверка чрез извадка", + "wizardInputCsvJsonlReady": "JSONL е генериран — готов за проверка.", + "wizardInputLargeFileWarning": "Открит е голям файл — проверката се извършва чрез извадка (първите 5 MB + последните 100 KB). Пълната проверка се извършва от страна на сървъра.", + "wizardCostWindow24h": "24-часов срок за завършване", + "wizardValidationFieldsOk": "задължителните полета са валидни", + "filesListDelete": "Изтриване", + "filesListDownload": "Изтегляне", + "batchDetailActionCancel": "Отказване на пакета", + "batchDetailActionRetry": "Повторен опит за неуспешните заявки", + "batchDetailCancelling": "Отказване…", + "batchDetailRetrying": "Подготовка за повторен опит…", + "batchDetailCancelConfirm": "Да се откаже ли този пакет? Изпълняваните заявки ще бъдат спрени.", + "batchActionCancelError": "Пакетът не можа да бъде отказан. Опитайте отново.", + "batchActionRetryError": "Неуспешните заявки не можаха да бъдат изпратени повторно. Опитайте отново.", + "batchConceptRetentionNote": "Файловете с резултати и грешки се съхраняват 30 дни (Anthropic: 29 дни)", "batchFilesSizeColumn": "Размер", "toggleNoAuthProvider": "Превключване на доставчик без удостоверяване", "loadingModels": "Зареждане на модели…", @@ -988,14 +988,14 @@ "disabled": "Деактивирано", "featureFlagOmnirouteEmergencyFallbackDescription": "Маршрутизиране на заявки с изчерпан бюджет към аварийния безплатен резервен доставчик/модел.", "featureFlagArenaEloSyncEnabledDescription": "Активиране на периодична синхронизация на ELO от класацията на Arena AI за класиране на интелигентността на моделите.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Генериране и вмъкване на обобщения на разговорите, когато комбинираното маршрутизиране превключва между модели. Деактивирайте, за да третирате превключванията между модели независимо и да предотвратите фонови заявки за предаване за всички съществуващи и бъдещи комбинации.", "featureFlagExposeCcDiscoveryAliasesDescription": "Рекламирайте claude/<provider>/<model> mirror идентификатори на /v1/models, така че списъкът с модели на Claude Code gateway да включва неклаудови модели. Внимание: удвоява записите в каталога за всички клиенти, когато е активирано глобално.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Главен превключвател за псевдонимите на шлюза no-think/<provider>/<model>. Включено (по подразбиране): /v1/models показва вариант без разсъждение за всеки отговарящ на условията модел Claude с възможност за разсъждение, а идентификатор no-think/, изпратен в заявка, се преобразува обратно към реалния модел с потиснато разсъждение. Изключено: не се показват варианти и идентификатор no-think/ се третира като всеки друг неизвестен идентификатор на модел. Индивидуалната настройка за включване/изключване ModelSpec.noThinkingAlias за всеки модел продължава да се прилага, докато тази опция е включена.", "featureFlagChatVirtualLanesEnabledDescription": "Активирайте адаптивни виртуални ленти за допускане за всеки наемател (tenant) при изпращане към доставчици (#9654): скокът в натоварването на един наемател вече не връща 503 на друг. Променливата на средата OMNIROUTE_CHAT_VIRTUAL_LANES има предимство пред тази настройка в таблото; промените влизат в сила след рестартиране на сървъра.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Страници на доставчиците в таблото: показва значката „Безплатно“ само при сигнали, които доставчикът зачита — премахва евристиката за показваното име, небулевите полета за безплатен достъп и суфиксите :free при регистрирани доставчици без документиран безплатен план. При „Изкл.“ се запазва предишното правило за значката.", + "featureFlagProxySkipRecentlyFailedDescription": "Пуловете от проксита и ротацията на opencode за всеки акаунт временно спират повторното използване на прокси, което току-що е дало грешка (отказана TCP проверка или получен чрез него отговор 429), за период в рамките на процеса, който се удвоява при всяко повторение до достигане на максимална стойност. Не се записва състояние на проксито; ако всички кандидати бъдат временно изключени, изборът остава непроменен. Изключено по подразбиране: редът на избор е точно този на обикновената ротация.", + "featureFlagProxyPoolEgressObservationDescription": "Показва под пул от проксита в таблото колко наблюдавани изходящи IP адреса са обслужвали членовете му през последните 24 ч., колко връзки са ги използвали и най-големия брой връзки зад един IP адрес. Само за четене, изчислява се от дневника на проксито и никога не се използва за маршрутизиране. Изключено по подразбиране: редакторът на пула остава непроменен, а маршрутът за наблюдение връща null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "При проверката на състоянието на прокситата позволява на проверка, отказана от целта (401/403/429: проксито е препратило заявката, но местоназначението е отказало този изходящ IP адрес), да нулира поредицата от последователни неуспехи на проксито, както при успешно обслужена проверка. Изключено по подразбиране: отказът остава неутрален и запазва поредицата. Отговор 5xx остава неубедителен и в двата случая, а отказът никога не премахва, деактивира или активира повторно прокси.", "sidebar": { "home": "Начало", "dashboard": "Табло", @@ -1012,11 +1012,11 @@ "settings": "Настройки", "translator": "Преводач", "playground": "Площадка", - "searchTools": "Search Tools", + "searchTools": "Инструменти за търсене", "agents": "Агенти", "cloudAgents": "Облачни агенти", - "memory": "Memory", - "skills": "Skills", + "memory": "Памет", + "skills": "Умения", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", "chaosConfig": "Режим Хаос", @@ -1069,50 +1069,50 @@ "cliToolsShort": "Инструменти", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "Пакетни задачи", + "themeSystem": "Система за теми", + "whitelabelingDesc": "Описание на персонализираното брандиране", + "switchThemes": "Превключване на темите", + "themeAccentDesc": "Описание на акцентния цвят на темата", + "uploadFavicon": "Качване на икона на сайта", + "themeDark": "Тъмна тема", + "customLogoDesc": "Описание на персонализираното лого", + "sidebarVisibilityToggle": "Превключване на видимостта на страничната лента", + "themeAccent": "Акцентен цвят на темата", + "resetFavicon": "Нулиране на иконата на сайта", + "whitelabeling": "Персонализирано брандиране", + "darkMode": "Тъмен режим", + "uploadLogo": "Качване на лого", + "themeLight": "Светла тема", + "appName": "Име на приложението", + "appNameDesc": "Описание на името на приложението", + "resetLogo": "Нулиране на логото", + "customFavicon": "Персонализирана икона на сайта", + "hideHealthLogs": "Скриване на журналите за състоянието", + "customLogo": "Персонализирано лого", + "appearance": "Външен вид", + "themeSelectionAria": "ARIA етикет за избор на тема", + "themeCreate": "Създаване на тема", + "customFaviconDesc": "Описание на персонализираната фавикона", + "logoPreview": "Преглед на логото", + "themeCustom": "Персонализирана тема", + "hideHealthLogsDesc": "Описание за скриване на журналите за състоянието", + "faviconPreview": "Преглед на фавиконата", + "changelog": "Списък с промени", + "contextSection": "Контекст и кеш", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Комбинации от енджини", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "Ултра", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Настройки за компресиране", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Студио за комбинации", "combosLiveSubtitle": "Каскада на маршрутизиране в реално време", "compressionStudio": "Compression Studio", "compressionExclusions": "Изключения", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Каскада на двигатели в реално време", "compressionExclusionsSubtitle": "Заобикаляне на всеки модел/краен пункт", "chaosConfigSubtitle": "Паралелно изпълнение на множество модели", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Маршрутизиране", + "protocolsSection": "Протоколи", + "agentsAiSection": "Агенти и ИИ", + "cacheContextSection": "Кеш и контекст", + "analyticsSection": "Анализи", + "costsSection": "Разходи", + "monitoringSection": "Наблюдение", + "auditSecuritySection": "Одит и сигурност", + "devtoolsSection": "Инструменти за разработчици", + "configurationSection": "Конфигурация", + "aiFeaturesSection": "Функции с ИИ", "mcp": "MCP", "a2a": "A2A", "plugins": "Плъгини", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "Крайни точки на API", + "batchFiles": "Файлове", + "analyticsEvals": "Оценки", + "analyticsSearch": "Търсене", + "analyticsUtilization": "Използване", + "analyticsComboHealth": "Състояние на комбинациите", + "analyticsCompression": "Компресия", + "costsBudget": "Бюджет", "costsFreeTiers": "Бюджет за безплатния план", "costsFreeTiersSubtitle": "Месечни лимити за безплатни токени", "freeProviderRankings": "Класация на безплатните доставчици", "freeProviderRankingsSubtitle": "Най-добрите безплатни доставчици, класирани по ELO резултати на моделите", "radar": "Каталог на радара", "radarSubtitle": "Безплатен модел каталог, обогатен от общността", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Споделяне на квота", + "costsPricing": "Ценообразуване", + "logsProxy": "Логове на проксито", + "logsConsole": "Конзола", + "logsActivity": "Активност", + "auditMcp": "Одит на MCP", "auditA2a": "A2A одит", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Външен вид", + "settingsAi": "Настройки на AI", + "settingsSecurity": "Сигурност", "settingsAccessTokens": "Токени за достъп", "settingsFeatureFlags": "Флагове за функции", "settingsCache": "Кеш", "settingsAuthz": "Авторизация", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsRouting": "Маршрутизиране", + "settingsResilience": "Устойчивост", "modelLockout": "Блокиране на модел", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Разширени", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Квота на доставчика", + "providerQuota": "Квота на доставчика", + "runtime": "Среда за изпълнение", + "consoleLogs": "Конзолни логове", + "logsTimeline": "Хронология", "logsTimelineSubtitle": "Визуален времеви график на заявките", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Разговори", + "conversationsSubtitle": "Многоходови агентни разговори", + "globalRouting": "Глобално маршрутизиране", + "mitmProxy": "MITM прокси", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "Агентни функции", + "otherFeaturesSection": "Други функции", + "compressionContextGroup": "Компресия на контекста", + "gamificationGroup": "Геймификация", + "toolsGroup": "Инструменти", + "integrationsGroup": "Интеграции", + "proxyGroup": "Прокси", + "costsParametersGroup": "Параметри на разходите", + "auditGroup": "Одит", + "batchGroup": "Пакетна обработка", + "homeSubtitle": "Общ преглед на таблото", + "providersSubtitle": "Управление на доставчиците на AI", + "quotaTrackerSubtitle": "Проследяване на ограниченията за използване", + "providerQuotaSubtitle": "Проследяване на ограниченията за използване при доставчика", + "runtimeSubtitle": "Устойчивост в реално време и сесии", + "contextCombosSubtitle": "Комбиниране на механизми за компресиране", + "cliToolsSubtitle": "Конфигуриране на среди за изпълнение на CLI", + "agentsSubtitle": "Управление на локални агенти", + "cloudAgentsSubtitle": "Управление на облачни агенти", + "apiEndpointsSubtitle": "Предоставяне на персонализирани крайни точки", + "proxySubtitle": "Настройки на HTTP прокси", + "mitmProxySubtitle": "MITM прихващане", + "oneProxySubtitle": "Публичен прокси шлюз", + "leaderboard": "Класация", + "profile": "Профил", + "tokens": "Токени", + "gamificationAdmin": "Администриране на геймификацията", + "leaderboardSubtitle": "Класации и постижения", + "profileSubtitle": "Акаунт и предпочитания", + "tokensSubtitle": "Използване на токени и бюджети", + "gamificationAdminSubtitle": "Наблюдение за аномалии и предотвратяване на измами", + "usageSubtitle": "Статистика за трафика и използването", + "analyticsComboHealthSubtitle": "Надеждност на комбинираната цел", + "analyticsUtilizationSubtitle": "Използване на доставчиците", + "costsSubtitle": "Разбивка на разходите", + "cacheSubtitle": "Процент попадения в кеша", + "analyticsCompressionSubtitle": "Статистика за спестените токени", + "analyticsSearchSubtitle": "Анализи на инструмента за търсене", + "analyticsEvalsSubtitle": "Резултати от набора за оценяване", "providerStats": "Статистика на доставчиците", "providerStatsSubtitle": "Метрики за латентност и производителност", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Регистрационни файлове на приложението", + "logsProxySubtitle": "Регистрационни файлове за прокси трафика", + "consoleLogsSubtitle": "Изход от конзолата", + "logsActivitySubtitle": "Дневник на потребителската активност", + "healthSubtitle": "Проверка на състоянието на системата", + "costsPricingSubtitle": "Правила за ценообразуване по модели", + "costsBudgetSubtitle": "Бюджетни лимити", + "costsQuotaShareSubtitle": "Споделяне на квотите на доставчика между ключовете", + "auditLogSubtitle": "Одит на оторизацията", + "auditMcpSubtitle": "Одит на MCP сървъра", + "auditA2aSubtitle": "Одит на A2A протокола", + "translatorSubtitle": "Преобразуване на формати", + "playgroundSubtitle": "Тестване на подкани в реално време", + "searchToolsSubtitle": "Регистър на инструменти за търсене", + "memorySubtitle": "Постоянна памет на агента", + "omniSkillsSubtitle": "Регистър на уменията в Sandbox", + "agentSkillsSubtitle": "Регистър на A2A уменията", + "mcpSubtitle": "Контроли за MCP сървъра", + "a2aSubtitle": "Сървър за протокола A2A", "pluginsSubtitle": "Магазин за плъгини и инсталации", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Кеширани мултимедийни файлове", + "batchFilesSubtitle": "Файлове за пакетен вход/изход", + "settingsSubtitle": "Всички настройки", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Тема и оформление", + "settingsAiSubtitle": "Настройки по подразбиране за поведението на AI", + "globalRoutingSubtitle": "Глобални правила за маршрутизиране", + "settingsResilienceSubtitle": "Повторни опити и прекъсвачи", + "settingsAdvancedSubtitle": "Опции за напреднали потребители", + "settingsSecuritySubtitle": "Удостоверяване и шифроване", "settingsAccessTokensSubtitle": "Ограничени CLI токени за отдалечен режим", "settingsFeatureFlagsSubtitle": "Превключване на системните възможности", "settingsCacheSubtitle": "Каталог на модели и кеширане на отговори", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Странична лента", + "settingsSidebarSubtitle": "Персонализиране на оформлението на страничната лента", "settingsAuthzSubtitle": "Инвентар на маршрутите и политика за заобикаляне", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Документация", + "issuesSubtitle": "Докладване на грешка", + "changelogSubtitle": "Бележки по изданието", "costsQuotaPlans": "Планове и квоти", "costsQuotaPlansSubtitle": "Конфигуриране на планове по доставчик", "activity": "Активност", @@ -1278,8 +1278,8 @@ "agentBridge": "Agent Bridge", "agentBridgeSubtitle": "Прихващане на трафик от IDE агенти", "trafficInspector": "Инспектор на трафика", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Преглеждайте трафика на заявките и отговорите от приложенията си", + "trafficInspectorPurpose": "Вижте точно какво изпраща приложението ви до доставчиците на AI и какво получава от тях. Работи с всеки клиент, съвместим с OpenAI.", "cliCode": "CLI код", "cliCodeSubtitle": "Инструменти за код, насочени към OmniRoute", "cliAgents": "CLI агенти", @@ -1345,7 +1345,7 @@ "refresh": "Опресняване", "loading": "Уеб кукичките се зареждат...", "never": "Никога", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {няма неуспехи} one {# неуспех} other {# неуспеха}}", "testWebhook": "Изпрати тест", "testSuccess": "Тестовата уебкукичка е изпратена успешно.", "testFailed": "Тестът на уеб кукичката е неуспешен.", @@ -1378,64 +1378,64 @@ "step3": "Проверете конфигурацията, като изпратите тестови данни (payload), за да се уверите, че крайната точка ги получава.", "step4": "Защитете вашата крайна точка, като валидирате заглавката X-Webhook-Signature HMAC-SHA256 с помощта на тайната на уебхука.", "title": "Как работят уебхуковете", - "customOnly": "Only applicable for custom endpoint integrations.", - "hmacRecipeTitle": "HMAC Verification Recipe", - "hmacRecipe": "To verify webhook payloads in Node.js, compute the HMAC-SHA256 of the raw request body using your secret key. Compare it to the X-Webhook-Signature header using timingSafeEqual.", - "timeoutNote": "Webhook deliveries have a timeout of 10 seconds.", - "retryNote": "Failed deliveries are retried up to 5 times with exponential backoff.", - "docsLink": "Read the full Webhooks developer guide", - "hmacRecipePython": "Python HMAC verification: hmac.new(secret, body, hashlib.sha256).hexdigest()", - "hmacRecipeBash": "Bash HMAC verification: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" + "customOnly": "Приложимо е само за интеграции с персонализирани крайни точки.", + "hmacRecipeTitle": "Рецепта за проверка с HMAC", + "hmacRecipe": "За да проверите полезните данни на уебхук в Node.js, изчислете HMAC-SHA256 на необработеното тяло на заявката, като използвате тайния си ключ. Сравнете го със заглавката X-Webhook-Signature чрез timingSafeEqual.", + "timeoutNote": "Доставките на уебхукове имат време за изчакване от 10 секунди.", + "retryNote": "Неуспешните доставки се опитват повторно до 5 пъти с експоненциално увеличаване на интервала.", + "docsLink": "Прочетете пълното ръководство за разработчици за Webhooks", + "hmacRecipePython": "Проверка на HMAC с Python: hmac.new(secret, body, hashlib.sha256).hexdigest()", + "hmacRecipeBash": "Проверка на HMAC с Bash: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" }, "deliveries": { - "title": "Delivery Logs", - "loadFailed": "Failed to load webhook delivery logs.", - "empty": "No deliveries recorded yet. Trigger an event or send a test payload.", - "status": "Status", - "event": "Event", - "latency": "Latency", - "at": "Sent At" + "title": "Регистри на доставките", + "loadFailed": "Регистрите за доставките на уебхукове не можаха да се заредят.", + "empty": "Все още няма регистрирани доставки. Задействайте събитие или изпратете тестови полезни данни.", + "status": "Състояние", + "event": "Събитие", + "latency": "Закъснение", + "at": "Изпратено на" }, "kinds": { - "comingSoon": "Coming Soon", + "comingSoon": "Очаквайте скоро", "slack": "Slack", - "slackDesc": "Post system events directly into a Slack channel", + "slackDesc": "Публикувайте системни събития директно в канал в Slack", "telegram": "Telegram", - "telegramDesc": "Send event messages using a Telegram bot", + "telegramDesc": "Изпращайте съобщения за събития чрез Telegram бот", "discord": "Discord", - "discordDesc": "Deliver real-time updates directly to a Discord server", - "custom": "Custom Webhook", - "customDesc": "Deliver system event payloads to any HTTPS endpoint", - "email": "Email Notification", - "emailDesc": "Receive summary updates via email", + "discordDesc": "Доставяйте актуализации в реално време директно до Discord сървър", + "custom": "Персонализиран Webhook", + "customDesc": "Доставяйте данни за системни събития до всяка HTTPS крайна точка", + "email": "Известие по имейл", + "emailDesc": "Получавайте обобщени актуализации по имейл", "pagerduty": "PagerDuty", - "pagerdutyDesc": "Trigger alerts on PagerDuty for critical system issues", + "pagerdutyDesc": "Задействайте сигнали в PagerDuty при критични системни проблеми", "teams": "Microsoft Teams", - "teamsDesc": "Forward system notifications to Microsoft Teams channels" + "teamsDesc": "Препращайте системни известия към канали в Microsoft Teams" }, - "testPayloadSent": "Test Payload Sent", - "testResponse": "Test Response", + "testPayloadSent": "Тестовите данни са изпратени", + "testResponse": "Тестов отговор", "validateUrl": { - "checking": "Checking URL...", - "ok": "URL is valid", - "blockedPrivate": "URL is a blocked private address", - "invalidUrl": "Invalid URL format" + "checking": "Проверка на URL...", + "ok": "URL адресът е валиден", + "blockedPrivate": "URL адресът е блокиран частен адрес", + "invalidUrl": "Невалиден формат на URL адреса" }, "custom": { - "endpointUrl": "Endpoint URL", + "endpointUrl": "URL адрес на крайната точка", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", - "secretKey": "Secret Key", - "secretKeyPlaceholder": "Enter secret key or leave blank to auto-generate", + "secretKey": "Таен ключ", + "secretKeyPlaceholder": "Въведете таен ключ или оставете празно за автоматично генериране", "secretKeyHint": "Използва се за подписване на заглавката на полезния товар за удостоверяване." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "URL адрес на Discord Webhook", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "URL адресът на уебхука, копиран от настройките за интеграция на вашия Discord канал.", "tutorial": "Как да създадете Discord уебхук:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "URL адрес на Slack Webhook", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "URL адресът на уебхука, копиран от вашата интеграция на Slack Incoming Webhooks.", "tutorial": "Как да създадете Slack уебхук:" @@ -1591,12 +1591,12 @@ "cliToolsDescription": "Конфигурирайте CLI инструменти", "home": "Начало", "homeDescription": "Добре дошли в OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Крайни точки", + "endpointDescription": "Управлявайте прокси крайни точки, MCP, A2A и API крайни точки", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Управление и инструменти за сървъра на Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Задачи и наблюдаемост на протокола Agent-to-Agent", "settings": "Настройки", "settingsDescription": "Управлявайте вашите предпочитания", "openaiCompatible": "Съвместим с OpenAI", @@ -1605,49 +1605,49 @@ "mediaDescription": "Генериране на изображения, видеоклипове и музика", "themes": "Теми", "themesDescription": "Изберете цветова тема за целия панел на таблото", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "costsDescription": "Проследявайте разходите, анализирайте тенденциите и управлявайте бюджета си за ИИ за всички доставчици", + "cacheDescription": "Наблюдавайте ефективността на кеша за подкани на доставчиците и локалното семантично повторно използване на отговори.", + "limitsDescription": "Конфигурирайте ограничения на честотата и квоти за всеки API ключ и доставчик", + "runtimeDescription": "Наблюдаемост на изпълнението в реално време — прекъсвачи на вериги, периоди на изчакване, блокиране на модели, сесии и сигнали за квоти", + "apiManagerDescription": "Управлявайте API ключовете и контрола на достъпа за вашия екземпляр на OmniRoute", + "batchDescription": "Обработвайте асинхронно големи обеми заявки чрез групирани API извиквания", + "contextCavemanDescription": "Компресиране на съобщения въз основа на правила, езикови пакети, анализи и контроли на режима на изхода.", + "contextRtkDescription": "Компресиране, съобразено с командите, за изходни данни от инструменти, терминални журнали и резултати от компилации.", + "contextCombosDescription": "Определете как се комбинират енджините за различни сценарии на маршрутизиране.", + "changelogDescription": "Бъдете в крак с най-новите функции и съобщения за платформата.", + "agentsDescription": "Управлявайте и конфигурирайте инструменти за AI агенти: Codex, Devin, Jules и персонализирани агенти", + "cloudAgentsDescription": "Оркестрирайте облачно базирани AI агенти с проследяване на задачите в реално време и одобрение на планове", + "memoryDescription": "Постоянна памет за разговори със семантично търсене и FTS5 пълнотекстово индексиране", + "skillsDescription": "Инсталирайте и управлявайте умения в изолирана среда за автоматизирано изпълнение на подкани и инструменти", + "agentSkillsDescription": "Каталог с умения за агенти и копиране на URL с едно щракване за интеграция с AI клиенти", + "translatorDescription": "Превеждайте и тествайте подкани между API формати: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Тествайте подкани интерактивно с отговори от доставчиците в реално време и преглед на формата", + "searchToolsDescription": "Анализи на търсенето, разбивка по доставчици, нива на попадения в кеша и проследяване на разходите", + "logsDescription": "Регистри на заявките в реално време, трасировки на грешки и инспектор на поточни събития", + "auditDescription": "Одитна следа за съответствие при използването на API ключове, извикванията на MCP инструменти и събитията, свързани с правилата", + "webhooksDescription": "Конфигурирайте webhook крайни точки за получаване на известия за събития в реално време", + "healthDescription": "Общ преглед на състоянието на системата: доставчици, прекъсвачи на вериги, ограничения на честотата и база данни", + "proxyDescription": "Конфигурирайте настройките на прокси сървъра нагоре по веригата за изходящи връзки към доставчици", + "apiEndpointsDescription": "Управлявайте персонализирани конфигурации на API крайни точки и замествания на маршрутизирането", + "batchFilesDescription": "Преглеждайте и управлявайте изходните файлове и резултатите от пакетни задания", + "analyticsEvalsDescription": "Резултати от оценяване на модели и сравнителни показатели за производителност", + "analyticsSearchDescription": "Анализи на заявките за търсене, нива на попадения в кеша и проследяване на разходите", + "analyticsUtilizationDescription": "Показатели за използването на доставчиците и планиране на капацитета", + "analyticsComboHealthDescription": "Състояние и производителност в реално време на конфигурациите за комбинирано маршрутизиране", + "analyticsCompressionDescription": "Анализи на компресирането на контекста и спестяванията на токени", + "costsBudgetDescription": "Бюджетни ограничения и предупреждения за разходи по API ключ и доставчик", + "costsPricingDescription": "Персонализирана конфигурация на ценообразуването за изчисляване на разходите за токени", + "logsProxyDescription": "Регистри на заявките към прокси сървъра нагоре по веригата и инспектиране на трафика", + "logsConsoleDescription": "Изходни данни от конзолата на приложението и регистри за отстраняване на грешки", + "logsActivityDescription": "Одитна следа на действията на потребителите и системните събития", + "auditMcpDescription": "Одитна следа на извикванията на MCP инструменти и записи за съответствие", "auditA2a": "A2A одит", "auditA2aDescription": "Одитна пътека за изпълнение на задачи A2A, преходи на състояния и записи за извикване на умения", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Тема, брандиране и визуално персонализиране", + "settingsAiDescription": "Поведение на AI, бюджети за мисловен процес, визуални възможности и настройки на паметта", "settingsCacheDescription": "TTL за кеш записи на моделния каталог", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Настройки за удостоверяване, оторизация и контрол на достъпа", "featureFlags": "Флагове за функции", "featureFlagsDescription": "Възможности на системата за управление и експериментални функции", "featureFlagsActive": "{count} активен", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Няма знамена, които отговарят на вашето търсене", "featureFlagsSaved": "Знамето е актуализирано", "featureFlagsError": "Неуспешно актуализиране на флага", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Правила за маршрутизиране, псевдоними на модели, настройки по подразбиране за комбинации и настройки за деградация", + "settingsResilienceDescription": "Конфигурация на прекъсвача на веригата, повторните опити и резервните варианти", + "settingsAdvancedDescription": "Разширени правила за полезния товар, ограничения на заявките и настройки на прокси API", + "mitmProxyDescription": "Конфигурирайте настройките на MITM прокси сървъра за инспектиране на трафика и отстраняване на грешки", + "oneProxyDescription": "Конфигурирайте настройките на 1Proxy за разширено свързване на прокси сървъри във верига", "omniSkillsDescription": "Инсталиране и управление на умения в пясъчник за автоматизирано изпълнение на подкани и инструменти" }, "cloudSyncStatus": { @@ -1708,7 +1708,7 @@ "console": "Конзола", "logger": "Логър", "translator": "Преводач", - "playground": "Playground", + "playground": "Тестова среда", "add": "Добавяне", "edit": "Редактиране", "apiKeys": "API ключове", @@ -1762,7 +1762,7 @@ "discovery": "Откриване", "freeProviderRankings": "Класации на безплатни доставчици", "radar": "Radar", - "setup": "Setup", + "setup": "Настройка", "freeTiers": "Безплатни нива", "gamification": "Геймификация", "leaderboard": "Класация", @@ -1812,7 +1812,7 @@ "reportIssue": "Докладвайте за проблем", "activeError": "{active} активен · {errors} грешка", "topologyLegendActive": "Активен", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Скорошни", "topologyLegendError": "Грешка", "oauthLabel": "OAuth", "apiKeyLabel": "API ключ", @@ -1826,11 +1826,11 @@ "updateStarted": "Актуализацията започна...", "reloadingPageAutomatically": "Страницата се презарежда автоматично...", "providerTopology": "Топология на доставчика", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Скорошни заявки", + "recentRequestsEmpty": "Все още няма заявки.", + "recentRequestsModel": "Модел", + "recentRequestsTokens": "Вход / Изход", + "recentRequestsWhen": "Кога", "downloadDmg": "Изтеглете DMG (macOS)", "downloadDmgDescription": "Налична е нова версия на настолната апликация OmniRoute. Моля, изтеглете и инсталирайте DMG инсталатора за macOS, за да актуализирате (текуща: v{version}).", "downloadExe": "Изтеглете EXE (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "Бележки за изданието", "readMore": "Прочетете повече", "noAuthLabel": "Без удостоверяване", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Пригответе се за маршрутизиране", + "readinessTitle": "Изпратете първата си заявка", + "readinessSubtitle": "Четири кратки стъпки. OmniRoute проверява готовността ви в движение.", + "readinessStep1": "Свържете доставчик", + "readinessStep2": "Конфигурирайте удостоверяването на крайната точка", + "readinessStep3": "Копирайте крайната си точка", + "readinessStep4": "Изпратете тестова заявка", + "readinessContinue": "Продължете настройката", + "readinessDismiss": "Отхвърлете засега" }, "analytics": { "title": "Анализ", @@ -1967,7 +1967,7 @@ "period7D": "7Д", "period30D": "30Д", "period90D": "90Д", - "periodYTD": "YTD", + "periodYTD": "От началото на годината", "periodAll": "Всички", "totalTokens": "Общо токени", "inputTokens": "Входящи токени", @@ -2005,8 +2005,8 @@ "modelStatusError": "Грешка", "comboHealth": "Здраве на комбинацията", "comboHealthDescription": "Квота на ниво комбинация, разпределение на използването и метрики на производителността", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Анализ на компресията", + "compressionAnalyticsDescription": "Анализ на компресията — спестени токени, разбивка по режими и статистика за доставчиците.", "autoRoutingTotalAutoRequests": "Общ брой автоматични заявки", "autoRoutingAvgSelectionScore": "Ср. резултат за избор", "autoRoutingExplorationRate": "Степен на проучване", @@ -2258,9 +2258,9 @@ "fullAccess": "Пълен достъп", "keyManagement": "Управление на API ключове", "keyManagementDesc": "Създавайте и управлявайте API ключове за удостоверяване на заявки към вашата крайна точка", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Приложението ви изпраща заявки към OmniRoute чрез API ключ", + "requestFlowYourApp": "Вашето приложение", + "requestFlowApiKey": "API ключ", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Общо ключове", "restricted": "Ограничен", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Копирайте и запазете този ключ сега — няма да се показва отново.", "done": "Готово", "savePermissions": "Запазване на разрешенията", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Разрешени крайни точки", + "allEndpointsAllowed": "Този ключ има достъп до всички API крайни точки.", + "endpointsRestricted": "{count, plural, one {Ограничено до {count} крайна точка.} other {Ограничено до {count} крайни точки.}}", + "autoResolve": "Автоматично определяне", + "autoResolveDesc": "Автоматично съпоставяне на двусмислени имена на модели с техния основен доставчик за този API ключ.", "streamDefaultMode": "Съвместимост на потока по подразбиране", "streamDefaultModeDesc": "Контролира пропуснатите флагове `stream` за този ключ. Режимът JSON връща непоточни отговори, освен ако клиентът изрично не поиска SSE.", "streamDefaultLegacy": "Наследен", "streamDefaultJson": "Съвместим с JSON", "streamDefaultBadge": "Поток по подразбиране за JSON", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Ключът е активен", + "keyActiveDesc": "Активирайте или деактивирайте този API ключ. Деактивираните ключове се отхвърлят незабавно с код 403.", + "accessSchedule": "График за достъп", + "accessScheduleDesc": "Ограничете достъпа до определени часове и дни от седмицата.", + "scheduleFrom": "От", + "scheduleUntil": "До", + "scheduleDays": "Дни", + "scheduleTimezone": "Часова зона", + "scheduleTimezoneHint": "Използвайте имена на часови зони по IANA, напр. America/New_York, Europe/Berlin", + "scheduleActive": "График", + "disabled": "Деактивирано", + "daySun": "Нед", + "dayMon": "Пон", + "dayTue": "Вто", + "dayWed": "Сря", + "dayThu": "Чет", + "dayFri": "Пет", + "daySat": "Съб", "allowAll": "Разреши всички", "restrict": "Ограничете", "allowAllInfo": "Този ключ има достъп до всички налични модели.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Неуспешно актуализиране на разрешенията. Моля, опитайте отново.", "unknownProvider": "неизвестен", "copyMaskedKey": "Копиране на маскиран ключ", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Пълният ключ е наличен само при създаването — копирайте го, когато създадете ключа за първи път", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# устройство} other {# устройства}}", "devicesTooltip": "{count, plural, one {# уникално IP/User-Agent устройство, видяно с този ключ (последните 30 мин)} other {# уникални IP/User-Agent устройства, видени с този ключ (последните 30 мин)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Разрешени комбинации", "allCombosAllowed": "Този ключ може да използва всяка комбинация.", "restrictedComboCount": "Ограничено до {count, plural, one {# комбинация} other {# комбинации}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# съхранен запис не е} other {# съхранени записа не са}} в този комбиниран списък (например правила за маршрутизиране) и ще бъдат запазени във вида, в който са съхранени.", + "preservedComboRuleHint": "Запазено във вида, в който е съхранено. Този запис не е опция в комбинирания списък по-горе, така че може да бъде променен само чрез API.", "apiManagerCustomRateLimits": "Персонализирани ограничения на скоростта", "apiManagerCustomRateLimitsDesc": "Замяна на глобалните ограничения по подразбиране. Оставете празно, за да използвате настройките по подразбиране.", "apiManagerRateLimitRequestsPlaceholder": "Заявки", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Позволява на този ключ да игнорира политиката за ограничаване на вънния доставчик/акаунт по време на маршрутизиране. Квотите в USD за API ключа все още се прилагат.", "quotaPill": "КВОТА", "quotaModeOnly": "само qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Ексклузивен наем", + "exclusiveLeaseNoticeTitle": "Ексклузивен наем", + "exclusiveLeaseNoticeDesc": "Този API ключ има разрешения за ексклузивен наем за маршрутизиране чрез специално предназначена връзка.", + "allConnections": "Всички връзки", + "onlySelectedConnections": "Само избраните връзки", + "selectAtLeastOneConnection": "Изберете поне една връзка или изберете „Всички връзки“.", + "allConnectionsDesc": "Този ключ може да използва всяка активна връзка.", + "restrictedToConnections": "Ограничено до {count, plural, one {# връзка} other {# връзки}}." }, "auditLog": { "title": "Дневник за одит", @@ -2457,14 +2457,14 @@ "model": "Model", "prompt": "Prompt", "generate": "Генерирай", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Генериране...", + "loadingModels": "Зареждане на наличните модели...", + "noModels": "Няма налични модели. Първо конфигурирайте доставчици с мултимедийни възможности.", + "error": "Генерирането е неуспешно", + "result": "Резултат", + "imageDescription": "Генерирайте изображения от текстови подкани с OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI и други.", + "videoDescription": "Създавайте видеоклипове с AnimateDiff, Stable Video Diffusion чрез ComfyUI или SD WebUI.", + "musicDescription": "Композирайте музика със Stable Audio Open или MusicGen чрез ComfyUI.", "kinds": { "embedding": "Вграждане", "image": "Изображение", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "Моделите за преобразуване на реч в текст на OpenRouter използват вашата конфигурирана връзка с OpenRouter. Не се изискват отделни удостоверения." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Заявка за търсене", + "searchResults": "Резултати от търсенето", + "cachedResult": "Кеширано", + "searchCost": "Цена", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Разширено тестване на търсенето със сравнение на доставчици", + "compareProviders": "Сравняване на доставчици", + "rerankResults": "Преранжиране на резултатите", + "searchHistory": "История на търсенията", + "urlOverlap": "Припокриване на URL адреси", + "noSearchProviders": "Няма конфигурирани доставчици на търсене. Добавете доставчици в „Настройки“.", + "noRerankModels": "Няма наличен модел за преранжиране", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Доставчик", + "searchType": "Тип търсене", + "maxResults": "Максимален брой резултати", + "filters": "Филтри", + "country": "Държава", + "language": "Език", + "timeRange": "Времеви период", + "includeDomains": "Включени домейни", + "excludeDomains": "Изключени домейни", + "safeSearch": "Безопасно търсене", + "safeSearchOff": "Изключено", + "safeSearchModerate": "Умерено", + "safeSearchStrict": "Строго", + "queryPlaceholder": "Въведете заявка за търсене...", + "providerAuto": "автоматично (най-евтино)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "новини", + "optionAny": "всички", + "timeRangeDay": "Последното денонощие", + "timeRangeWeek": "Последната седмица", + "timeRangeMonth": "Последният месец", + "timeRangeYear": "Последната година", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Времето за заявката изтече ({seconds} сек.)", + "networkError": "Мрежова грешка", + "formatted": "Форматирано", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "няма попадение в кеша", + "cacheHit": "попадение в кеша", + "latency": "Латентност", + "cost": "Цена", + "results": "Резултати", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Модел за преранжиране", + "positionDelta": "Промяна на позицията", + "emptyState": "Изпратете заявка за търсене, за да видите резултатите", "copy": "копие", "resetToDefault": "Възстановяване по подразбиране", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Търсене", + "tabScrape": "Извличане", + "tabCompare": "Сравняване", + "modalitiesGuide": "Ръководство за режимите", + "searchConceptTitle": "Търсене", + "searchConceptDesc": "Търсене = извлича списък с уеб резултати (заглавие, URL, откъс, оценка за релевантност)", + "scrapeConceptTitle": "Извличане", + "scrapeConceptDesc": "Извличане = извлича цялото съдържание на URL (Markdown, текст или HTML)", + "compareConceptTitle": "Сравняване", + "compareConceptDesc": "Сравняване = изпълнява една и съща заявка паралелно при N доставчика, за да сравни времето за отговор, разходите и припокриването на резултатите", + "rerankConceptTitle": "Пренареждане", + "rerankConceptDesc": "Пренареждане = пренарежда резултатите чрез LLM, за да подобри релевантността им спрямо заявката", + "autoConceptTitle": "Автоматично (най-евтино)", + "autoConceptDesc": "Автоматично (най-евтино) = автоматично избира най-евтиния наличен доставчик с конфигурирани идентификационни данни", + "providerCatalogTitle": "Каталог с доставчици", + "kindSearch": "Търсене", + "kindFetch": "Извличане/обхождане", + "statusConfigured": "Конфигуриран", + "statusMissing": "Няма идентификационни данни", + "statusRateLimited": "Ограничена честота на заявките", + "configureProvider": "Конфигуриране в „Доставчици“", + "loadingProviders": "Зареждане на доставчиците…", + "failedToLoadProviders": "Неуспешно зареждане на доставчиците", + "costPerQuery": "Цена/заявка", + "freeQuota": "Безплатна квота/мес.", + "scrapeUrl": "URL за извличане", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "Изисква се URL адрес", "scrapeUrlInvalid": "Невалиден URL адрес — трябва да започва с http:// или https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Извличане", + "scrapeExtracting": "Извличане…", + "scrapeFullPage": "Цяла страница", + "scrapeFormat": "Формат", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Текст", + "scrapePreview": "Преглед", + "scrapeRaw": "Необработен вид", + "scrapeContentTruncated": "(съкратено, вижте необработения вид)", + "scrapeMetadata": "Метаданни", + "scrapeProvider": "Доставчик", + "scrapeSize": "Размер", "scrapeEmptyState": "Въведете URL адрес, за да извлечете съдържанието му", "scrapeProvidersAvailable": "Налични доставчици: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Сравняване", + "compareRunning": "Сравняване…", + "autoProvider": "Автоматично (най-евтиното)", + "configuredStatus": "Конфигурирано", + "rateLimitedStatus": "Ограничена честота на заявките", + "noCredential": "Няма идентификационни данни", + "searchTypeLabel": "Тип", + "rerankModelLabel": "Модел за преподреждане", + "noneOption": "Няма", + "size": "Размер", "configurationPane": "Панел за конфигуриране", "configuration": "Конфигурация", "status": "Статус", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Добавете", "antigravityStep2Suffix": "към вашия хост файл като 127.0.0.1.", "antigravityStep3": "3. Отворете Antigravity и заявките ще бъдат проксиирани.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} изпраща заявки към крайната точка на своя доставчик. MITM ги прихваща и пренасочва към OmniRoute.", + "mitmStep1": "1. Стартирайте MITM, за да насочите заявките през OmniRoute.", + "mitmStep2Prefix": "2. Добавете", + "mitmStep2Suffix": "към hosts файла си като 127.0.0.1.", + "mitmStep3": "3. Отворете {toolName} и заявките ще преминават през прокси сървър.", "sudoPasswordRequiredTitle": "Изисква се парола за Sudo", "sudoPasswordHint": "Необходима е администраторска парола, за да промените настройките на хост файла и системния прокси.", "enterSudoPassword": "Въведете sudo парола", @@ -2908,7 +2908,7 @@ "continue": "Използвайте, когато изпълнявате Continue в IDE и имате нужда от преносима JSON-базирана конфигурация на доставчик.", "opencode": "Използвайте, когато предпочитате нативни за терминални агенти и скриптова автоматизация чрез OpenCode.", "kiro": "Използвайте, когато интегрирате Kiro и контролирате маршрутизирането на модела централно от OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Използвайте, когато искате IDE с фокус върху ИИ, в която моделите Codeium/Windsurf се маршрутизират през OmniRoute.", "antigravity": "Използвайте, когато трафикът на Antigravity/Kiro трябва да бъде прихванат чрез MITM и насочен към OmniRoute.", "copilot": "Използвайте, когато искате UX в стил на чат Copilot, като същевременно налагате OmniRoute ключове и правила за маршрутизиране.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2922,18 +2922,18 @@ "codex": "OpenAI Codex CLI", "grok-build": "xAI Grok Build TUI агент за програмиране с поддръжка на персонализиран доставчик", "droid": "Фабричен Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "openclaw": "Отворете Claw AI Assistant", + "cline": "Cline AI асистент за програмиране CLI", + "kilo": "Kilo Code AI асистент CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", "continue": "Продължете AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode AI агент за програмиране (терминал)", + "kiro": "Amazon Kiro — IDE с възможности за ИИ", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp асистент за програмиране CLI", + "hermes": "Hermes AI терминален асистент", "hermes-agent": "Hermes Agent (от Nousresearch) - усъвършенстван терминален изкуствен интелект с поддръжка на множество модели (делегиране, компютърно зрение, компресия и др.)", "custom": "Generic OpenAI-съвместим CLI или SDK генератор на конфигурация", "aider": "Aider AI CLI за съвместно програмиране с базов URL адрес, съвместим с OpenAI", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter CLI автономен агент за програмиране", "omp": "Oh My Pi терминален агент за програмиране", "letta": "Letta CLI агент с постоянна памет и използване на инструменти", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — самоусъвършенстваща се RLM среда за програмиране с поддръжка на доставчици, съвместими с OpenAI", "warp": "Warp AI терминал с поддръжка на персонализиран доставчик", "agent-deck": "Agent Deck мултиагентен оркестратор", "5dive": "5dive — самостоятелно хостван флот от кодиращи агенти; един auth профил насочва всички към OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Инсталирайте OpenCode", + "desc": "Инсталирайте чрез npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API ключ" }, "3": { - "title": "Set Base URL", + "title": "Задайте основния URL адрес", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Изберете модел" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Използвайте вариант с разсъждение", + "desc": "За модели с разсъждение стартирайте с --variant high/low/max (примерна команда по-долу)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Отворете настройките на Kiro", + "desc": "Отидете в Настройки → Доставчик на ИИ" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Основен URL адрес", + "desc": "Поставете URL адреса на крайната си точка в OmniRoute" }, "3": { - "title": "API Key" + "title": "API ключ" }, "4": { - "title": "Select Model" + "title": "Изберете модел" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Отворете настройките за ИИ", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Добавете персонализиран доставчик", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Основен URL адрес", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API ключ", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Избор на модел", + "desc": "Изберете модел от падащото меню" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Персонализиран CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Категории инструменти", "visibleToolsCount": "{count} налични инструменти", "customCliBuilderTitle": "CLI създател, съвместим с OpenAI", "customCliBuilderDescription": "Генерирайте env vars и JSON фрагменти за всеки CLI или SDK, който приема OpenAI-съвместим основен URL, API ключ и ID на модела.", @@ -3110,7 +3110,7 @@ "refreshAll": "Опресняване на всички", "hermesRoleDefault": "По подразбиране (основен)", "hermesRoleDefaultDesc": "Основен модел за разговор", - "hermesRoleDelegation": "Delegation (subagents)", + "hermesRoleDelegation": "Делегиране (подагенти)", "hermesRoleDelegationDesc": "Модел с оркестратор и подагенти", "hermesRoleVision": "Зрение", "hermesRoleVisionDesc": "Разбиране на изображения и екранни снимки", @@ -3159,7 +3159,7 @@ "hermesRolesWillUpdate": "{count, plural, one {# роля ще бъде актуализирана} other {# роли ще бъдат актуализирани}}", "hermesPreviewPath": "Предварителен преглед — ще се запише в ~/.hermes/config.yaml", "hermesSaveDescription": "Запазва избрания модел за всяка роля в", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "Генератор на конфигурация за GitHub Copilot", "copilotGeneratorDescriptionPrefix": "Генерира", "copilotGeneratorDescriptionSuffix": "блок за VS Code GitHub Copilot, използвайки модела на Azure доставчик. Изберете моделите, които искате, след което копирайте JSON кода във вашия конфигурационен файл.", "copilotCompatibilityWarning": "Тази конфигурация използва заобиколното решение за Azure доставчик за персонализирани списъци с модели. Тествано с VS Code ≥ 1.109 и GitHub Copilot Chat ≥ v0.37. Бъдещи актуализации на разширението може да променят това поведение.", @@ -3260,18 +3260,18 @@ "priorityDesc": "Последователен резервен вариант: първо се опитва модел 1, след това 2 и т.н.", "weightedDesc": "Разпределя трафика по тегловни проценти с резервен вариант", "roundRobinDesc": "Кръгово разпределение: всяка заявка отива към следващия модел на ротация", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Предаване на контекста", + "contextRelayDesc": "Запазва непрекъснатостта на сесията чрез обобщения при предаване, когато акаунтите се сменят", "randomDesc": "Единен случаен избор, след което се връща към останалите модели", "leastUsedDesc": "Избира модела с най-малко заявки, като балансира натоварването във времето", "costOptimizedDesc": "Първо маршрути към най-евтиния модел въз основа на ценообразуването", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Насочва последователно всеки повторно използваем префикс на подкана към един и същ акаунт на доставчика", + "resetAware": "Циклично разпределение с отчитане на нулирането", "resetAwareDesc": "Балансира оставащата квота спрямо 5 часа и седмично нулиране, след което кръгови робини подобни резултати", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Претеглено според квотата", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Строго произволно", + "strictRandomDesc": "Разбъркване на тестето — използва всеки модел веднъж преди ново разбъркване", "fusion": "Сливане", "fusionDesc": "Разпраща подканата към всеки модел от панела паралелно, след което модел-съдия синтезира един краен отговор", "fusionJudgeModel": "Модел-съдия", @@ -3288,13 +3288,13 @@ "retryDelay": "Забавяне при повторен опит (ms)", "concurrencyPerModel": "Паралелност / Модел", "queueTimeout": "Време за изчакване на опашката (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Праг за предаване", + "contextRelayHandoffThresholdHelp": "Когато използването на квотата достигне този праг, OmniRoute генерира структурирано обобщение за предаване, преди квотата на активния акаунт да бъде изчерпана.", + "contextRelayMaxMessages": "Максимален брой съобщения за обобщението", + "contextRelayMaxMessagesHelp": "Ограничава каква част от скорошната хронология се съкращава в обобщението за предаване.", + "contextRelaySummaryModel": "Модел за обобщение", + "contextRelaySummaryModelHelp": "Незадължителен заместващ модел, използван само за генериране на обобщението за предаване. Оставете празно, за да използвате отново активния модел от комбинацията.", + "contextRelayProviderNote": "В момента предаването на контекста генерира предавания при смяна на Codex акаунти. Комбинирайте го с няколко акаунта от един и същ доставчик за най-добра непрекъснатост.", "advancedHint": "Оставете празно, за да използвате глобалните настройки по подразбиране. Те заменят настройките за всеки доставчик.", "failoverBeforeRetry": "Отказ преди повторен опит", "maxSetRetries": "Макс. задаване на повторни опити", @@ -3344,7 +3344,7 @@ "playgroundCreateFirst": "Първо създайте една", "weighted": "Претеглени", "leastUsed": "Най-малко използван", - "costOpt": "Cost-Opt", + "costOpt": "Оптимизация на разходите", "strategyGuideTitle": "Как да използвате тази стратегия", "strategyGuideWhen": "Кога да използва!", "strategyGuideAvoid": "Избягвайте кога", @@ -3386,19 +3386,19 @@ "example": "Предпочитайте 60% седмично нулиране на акаунта утре пред 80% нулиране на акаунта по-късно." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Използвайте, когато искате напълно равномерно разпределение — всеки модел се използва веднъж преди повторение.", + "avoid": "Избягвайте, когато моделите се различават по качество или латентност и редът е от значение.", + "example": "Пример: Няколко акаунта на един и същ модел за равномерно разпределяне на използването." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Използвайте, когато искате избор с ниска латентност чрез алгоритъма Power-of-Two-Choices.", + "avoid": "Избягвайте при малки комбинации с 2 или по-малко модела — няма предимство пред цикличното разпределение.", + "example": "Пример: Извеждане с висока пропускателна способност чрез 4 или повече равностойни крайни точки на модели." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Използвайте, когато дългите сесии трябва да продължат при смяна на акаунти, без да губят работния контекст.", + "avoid": "Избягвайте, когато акаунтите се сменят рядко или когато не желаете допълнителни заявки за обобщаване.", + "example": "Пример: Codex сесии, които се прехвърлят между няколко акаунта при наближаване на изчерпването на квотата." }, "fill-first": { "when": "Използвайте, когато искате да изчерпите напълно квотата на един доставчик, преди да преминете към следващия.", @@ -3459,12 +3459,12 @@ "warningRoundRobinSingleModel": "Round - robin е най - полезен с поне 2 модела.", "warningCostOptimizedPartialPricing": "Само {priced} от {total} моделите имат ценообразуване. Маршрутизирането може да бъде частично съобразено с разходите.", "warningCostOptimizedNoPricing": "Няма намерени данни за ценообразуване за тази комбинация. Оптимизираният по отношение на разходите маршрут може да е неочакван.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterAll": "Всички", + "filterIntelligent": "Интелигентни", + "filterDeterministic": "Детерминистични", + "filterEmptyTitle": "Няма комбинации, съответстващи на този филтър за стратегия.", + "filterEmptyIntelligentDescription": "Създайте автоматична или LKGP комбинация, за да попълните таблото за интелигентно маршрутизиране.", + "filterEmptyDeterministicDescription": "В момента съществуват само автоматични и LKGP комбинации. Върнете се към „Всички“ или създайте детерминистична комбинация.", "readinessTitle": "Готови ли сте да запазите?", "readinessDescription": "Прегледайте контролния списък, преди да създадете или актуализирате тази комбинация.", "readinessCheckName": "Комбо името е валидно", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Добавете поне един модел.", "saveBlockWeighted": "Задайте тегла на 100% (текущо: {total}%).", "saveBlockPricing": "Добавете цена за поне един модел или изберете различна стратегия.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Препоръчителна настройка", + "applyRecommendations": "Прилагане на препоръките", + "recommendationsUpdated": "Препоръките за {strategy} са актуализирани.", + "recommendationsApplied": "Препоръките са приложени към тази комбинация.", + "intelligentPanelTitle": "Табло за интелигентно маршрутизиране", + "intelligentPanelDesc": "Оценяване в реално време и състояние на изправност за тази комбинация с автоматично маршрутизиране.", "configOnlyStatus": "Изглед на конфигурацията", "configOnlyHint": "Този панел показва само входните данни за маршрутизиране. Състоянието на прекъсвача в реално време е достъпно на страницата „Здраве“.", "routingInputs": "Входни данни за маршрутизиране", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Неизвестен префикс на доставчик.", "builderDynamicAccountShort": "Динамичен акаунт", "builderNeedValidName": "Дефинирайте валидно име на комбинация, преди да продължите.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Преглед на състоянието", + "normalOperation": "Нормална работа", + "allProvidersHealthy": "Доставчиците отчитат нормални условия за маршрутизиране.", + "incidentMode": "Режим при инцидент", + "highCircuitBreakerRate": "Открита е висока честота на задействане на прекъсвача на веригата.", + "activeModePack": "Активен пакет за режим", + "modePackUpdated": "Пакетът за режим е актуализиран на {pack}.", + "modePackHint": "Сменяйте предварителните настройки, за да насочвате механизма за маршрутизиране, без да създавате комбинацията отново.", + "providerScores": "Оценки на доставчиците", + "allProvidersEvaluated": "Не е конфигуриран набор от кандидати. Всички активни доставчици се оценяват по време на изпълнение.", + "excludedProviders": "Изключени доставчици", + "excludedProvidersHint": "Доставчиците с ОТВОРЕН прекъсвач на веригата са временно изключени от маршрутизирането.", + "noExcludedProviders": "В момента няма изключени доставчици.", + "cooldownMinutes": "Период на изчакване: {minutes} мин.", + "builderIntelligentTitle": "Конфигурация за интелигентно маршрутизиране", + "builderIntelligentDesc": "Конфигурирайте многофакторния механизъм за оценяване за тази комбинация с автоматично маршрутизиране.", + "candidatePoolLabel": "Набор от кандидати", + "candidatePoolHint": "Изберете кои доставчици да оценява този механизъм. Оставете празно, за да използвате всички активни доставчици.", + "candidatePoolEmpty": "Все още няма налични активни доставчици.", + "candidatePoolAllProviders": "Всички доставчици", + "modePackLabel": "Пакет за режим", + "routerStrategyLabel": "Стратегия на маршрутизатора", + "strategyRules": "Правила (6-факторно оценяване)", + "explorationRateLabel": "Дял на проучване", + "explorationRateHint": "{percent}% от заявките могат да изпробват неоптимални доставчици.", + "budgetCapLabel": "Бюджетен лимит (USD/заявка)", + "budgetCapPlaceholder": "Без ограничение", + "advancedWeightsTitle": "Разширени настройки: тегла за оценяване", "nestedComboFlatten": "Изравняване на вложени комбинации", "nestedComboExecute": "Изпълнение на вложени комбинации като цели", "effectiveRoutingShare": "Ефективен дял на маршрутизиране (тегло ÷ общо)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Квота", + "weightHealth": "Изправност", + "weightCostInv": "Цена", + "weightLatencyInv": "Латентност", + "weightTaskFit": "Пригодност за задачата", + "weightStability": "Стабилност", + "weightTierPriority": "Ниво", + "weightCacheAffinity": "Предпочитание при попадение в кеша", "weightSessionAvailability": "Наличност на сесията", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Конфигурация за интелигентно маршрутизиране", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Базова отказоустойчива конфигурация", + "description": "Използвайте един основен модел и поддържайте веригата за резервно превключване кратка и надеждна.", + "tip1": "Поставете най-надеждния си модел на първо място.", + "tip2": "Поддържайте 1–2 резервни модела със сходно качество.", + "tip3": "Използвайте безопасни повторни опити, за да компенсирате временни сривове при доставчика." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Контролирано разпределение на трафика", + "description": "Отлично решение за поетапни внедрявания тип canary и постепенна миграция между модели.", + "tip1": "Започнете с консервативно разпределение, например 90/10.", + "tip2": "Поддържайте общия сбор на 100% и автоматично балансирайте след промени.", + "tip3": "Наблюдавайте успеваемостта и латентността, преди да увеличите дела на canary модела." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Предвидимо споделяне на натоварването", + "description": "Най-подходящо е, когато моделите са еквивалентни и се нуждаете от плавно разпределение.", + "tip1": "Използвайте поне 2 модела.", + "tip2": "Задайте ограничения за паралелните заявки, за да избегнете претоварване при пикове.", + "tip3": "Използвайте време за изчакване на опашката, за да прекратявате бързо заявките при насищане." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Бързо разпределение с минимална настройка", + "description": "Използвайте, когато се нуждаете от лесно разпределение без строги гаранции.", + "tip1": "Използвайте модели със сходни профили на латентност.", + "tip2": "Оставете повторните опити активирани, за да компенсирате случайни пропуски.", + "tip3": "Предпочитайте този подход за експериментиране, а не за строги SLA." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Адаптивно балансиране", + "description": "Насочва заявките към по-малко използвани модели, за да намали горещите точки с течение на времето.", + "tip1": "Работи по-добре при непрекъснат трафик.", + "tip2": "Комбинирайте с проверки на състоянието за по-безопасно балансиране.", + "tip3": "Проследявайте използването на всеки модел, за да потвърдите ползите от разпределението." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Маршрутизиране с приоритет на бюджета", + "description": "Насочва заявките към модели с по-ниска цена, когато са налични метаданни за ценообразуването.", + "tip1": "Осигурете данни за цените на всички избрани модели.", + "tip2": "Поддържайте качествен резервен модел за трудни заявки.", + "tip3": "Използвайте за пакетни или фонови задачи, при които разходите са основният KPI." }, "reset-aware": { "title": "Ротация на акаунти с нулиране", @@ -3597,11 +3597,11 @@ "tip3": "Дръжте обвързващата лента малка, така че еквивалентните сметки все още да се въртят справедливо." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Разпределение чрез разбъркване", + "description": "Всеки модел се използва точно веднъж на цикъл преди следващото разбъркване.", + "tip1": "Използвайте поне 2 модела за ефективно разпределение.", + "tip2": "Работи най-добре с модели с еквивалентна производителност.", + "tip3": "Идеално за балансиране на натоварването между множество API акаунти." }, "fill-first": { "description": "Изчерпвайте квотите на доставчика последователно, преди да се върнете.", @@ -3646,86 +3646,86 @@ "title": "Силата на двата избора" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Безплатен пакет ($0)", + "templateFreeStackDesc": "Round-robin разпределение между всички безплатни доставчици: Kiro (Claude), Qoder (5 модела), Qwen (4 модела). Без разходи и без прекъсване на програмирането.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "Режим LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Първи стъпки с комбинациите", + "wizardGuideDesc": "Създавайте комбинации от модели за интелигентно маршрутизиране на AI трафика", + "wizardGuideHint": "или щракнете върху + Създаване на комбинация по-горе", + "createFirstCombo": "Създайте първата си комбинация", + "wizardStep1Title": "Наименувайте комбинацията си", + "wizardStep1Desc": "Дайте на комбинацията си уникално име, за да я разпознавате в правилата за маршрутизиране", + "wizardStep2Title": "Добавяне на модели", + "wizardStep2Desc": "Изберете AI модели и подредете приоритета им за резервно превключване", + "wizardStep3Title": "Избор на стратегия", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Преглед и запазване", + "wizardStep4Desc": "Прегледайте конфигурацията си и активирайте комбинацията", + "usageGuideInvokeTitle": "Как да извикате тази комбинация", + "usageGuideInvokeDesc": "Изпратете точното име на комбинацията като модел, напр. model: \"my-combo\" (или combo/my-combo).", + "usageGuideInvokeAutoNote": "auto и auto/* са отделен маршрутизатор с нулева конфигурация, който не използва вашите комбинации (освен ако някоя комбинация не е буквално наименувана auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto е реален платен продукт на OpenRouter (Auto Best Available), а не псевдоним на OmniRoute — изключете го чрез Настройки → Маршрутизиране → Скриване на платените модели.", + "emailVisibilityStateOn": "Включено", + "emailVisibilityStateOff": "Изключено", + "reorderHandle": "Плъзнете, за да пренаредите", + "failedReorder": "Неуспешно пренареждане на моделите", + "builderFlowTitle": "Процес за създаване на комбинация", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Основни настройки", + "description": "Име и начален шаблон" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Стъпки", + "description": "Избор на доставчик, модел и акаунт" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Стратегия", + "description": "Поведение при маршрутизиране и разширени настройки" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Интелигентно маршрутизиране", + "description": "Набор от кандидати, готови конфигурации и оценяване за автоматично маршрутизиране" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Преглед", + "description": "Окончателна проверка преди запазване" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Етапът е завършен", + "builderStageCurrent": "Текущ етап", + "builderStagePending": "Предстои", + "builderStageLocked": "Заключено — първо завършете предишния етап", + "builderTitle": "Създаване на комбинация", + "builderBrowseCatalog": "Преглед на каталога", + "builderProvider": "Доставчик", + "builderLoadingProviders": "Зареждане на доставчиците...", + "builderSelectProvider": "Изберете доставчик", + "builderModel": "Модел", + "builderSelectModel": "Изберете модел", + "builderProviderFirst": "Първо изберете доставчик", + "builderAccount": "Акаунт", + "builderPreview": "Преглед", + "builderAddStep": "Добавяне на стъпка", "builderDuplicateExact": "Тази точна стъпка доставчик/модел/акаунт вече е в комбинацията.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Комбинирана препратка", + "builderAddComboRef": "Добавяне на комбинирана препратка", + "builderComboRefStep": "Добавяне на комбинирана препратка", + "builderPinnedAccount": "Закачен акаунт", + "builderLegacyEntry": "Остарял запис", + "reviewName": "Име", + "reviewStrategy": "Стратегия", + "reviewSteps": "Стъпки", + "reviewAccounts": "Акаунти", + "reviewProviders": "Доставчици", + "reviewComboRefs": "Комбинирани препратки", + "reviewAdvanced": "Разширени настройки", + "reviewAgentFlags": "Флагове на агента", + "reviewSequence": "Последователност от модели", + "reviewNoSteps": "Няма конфигурирани стъпки", "builderStagesDescription": "Завършете всеки етап, за да дефинирате комбинации, да изградите стъпки, да изберете стратегия за маршрутизиране и да прегледате резултатите.", "builderStepsDescription": "Създайте всяка комбинирана стъпка в ред: доставчик, модел, след това акаунт. Това позволява повторно използване на същия доставчик и модел в различни акаунти.", "selectProvider": "Изберете Доставчик", @@ -3800,27 +3800,27 @@ "range7d": "7 дни", "range30d": "30 дни", "range90d": "90 дни", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 дни", + "range365d": "365 дни", "rangeAll": "Всички времена", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Активни модели", + "flatRateEstimateNotice": "Включва приблизителни цени за токени при абонаменти с фиксирана такса, а не фактурираните разходи.", + "flatRateEstimateForecast": "Прогнозата включва приблизителни стойности за фиксирани такси.", + "selectedWindow": "Избран период", + "activeProviders": "Активни доставчици", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Разходи днес", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Дял на доставчика", + "topProviders": "Водещи доставчици", + "costTrend": "Тенденция на разходите", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Водещи модели", "requestsInWindow": "Requests In Window", "tokenUsage": "Използване на токени", "totalTokens": "Общо токени", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "Крайна точка на API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Използвайте съвместимата с OpenAI крайна точка с повечето SDK пакети и инструменти.", + "testEndpoint": "Тестване на крайната точка →", + "advancedProtocols": "Разширени протоколи", "available": "Налични крайни точки", "cloudProxy": "Облачен прокси", "disableConfirm": "Сигурни ли сте, че искате да деактивирате облачното прокси?", @@ -3900,7 +3900,7 @@ "disableCloud": "Деактивиране на облака", "enableCloud": "Активиране на облака", "modelsAcrossEndpoints": "{models} модели в {endpoints} крайни точки", - "loadingModels": "Loading available models...", + "loadingModels": "Зареждане на наличните модели...", "chatDesc": "Поточно и нестрийминг чат с всички доставчици", "embeddings": "Вграждания", "embeddingsDesc": "Текстови вграждания за търсене и RAG тръбопроводи", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Транскрибирайте аудио файлове в текст (Whisper)", "textToSpeech": "Преобразуване на текст в реч", "textToSpeechDesc": "Преобразувайте текст в естествено звучаща реч", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Генериране на музика", + "musicDesc": "Генерирайте музика и аудиозаписи чрез ComfyUI (Stable Audio, MusicGen)", "moderations": "Модерации", "moderationsDesc": "Модериране на съдържанието и класификация за безопасност", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API за Codex и разширени агентни работни процеси", + "listModelsDesc": "Показване на всички налични модели от всички свързани доставчици", + "settingsApiDesc": "Преглеждайте и променяйте конфигурацията на OmniRoute чрез API", + "settingsApi": "API за настройки", "categoryCore": "Основни API", "categoryMedia": "Медии и мултимодални", - "categorySearch": "Search & Discovery", + "categorySearch": "Търсене и откриване", "categoryUtility": "Помощни средства и управление", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Търсене в мрежата", + "webSearchDesc": "Унифицирано търсене в мрежата чрез множество доставчици с автоматично превключване при отказ и кеширане", + "searchProvider": "Доставчик за търсене", + "searchProviderDesc": "Този доставчик се използва за търсене в мрежата чрез POST /v1/search. Не е необходимо конфигуриране на модел — доставчиците за търсене са готови за използване веднага след свързването на API ключ.", "enableCloudTitle": "Активиране на облачен прокси", "whatYouGet": "Какво ще получите", "cloudBenefitAccess": "Достъп до вашия API от всяка точка на света", @@ -3963,29 +3963,29 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Активиране на тунела", + "cloudflaredInstallAndEnable": "Инсталиране и активиране", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Работи", + "cloudflaredStarting": "Стартира се", + "cloudflaredStoppedState": "Спряно", + "cloudflaredNotInstalled": "Не е инсталирано", + "cloudflaredUnsupported": "Не се поддържа", + "cloudflaredError": "Грешка", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Последна грешка: {error}", "providerModelsTitle": "{provider} — Модели", "noModelsForProvider": "Няма налични модели за този доставчик.", "chat": "Чат", "embedding": "Вграждане", "image": "Изображение", "custom": "обичай", - "modelsCount": "{count, plural, one {# model} other {# models}}", + "modelsCount": "{count, plural, one {# модел} other {# модела}}", "sectionTitle": "Интеграционна повърхност", "sectionDescription": "Съвместими с OpenAI API и крайни точки на оперативния протокол", "tabApis": "API-та", @@ -4012,8 +4012,8 @@ "a2aQuickStartStep1": "Открийте картата на агента на @@PH0 @@.", "a2aQuickStartStep2": "Изпратете JSON - RPC заявки до@@ PH0 @@, като използвате @@ PH1 @@ или @@ PH2 @@.", "a2aQuickStartStep3": "Проследяване и контрол на задачите с помощта на @@ PH0 @@ и @@ PH1 @@.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Довършвания (остаряла функционалност)", + "completionsLegacyDesc": "Остарели текстови довършвания на OpenAI — приема както формат с низ за подкана, така и формат с масив от съобщения", "messagesApi": "Съобщения", "messagesApiDesc": "Native Anthropic Messages API формат за доставчици, съвместими с Claude", "imageEdits": "Редакции на изображения", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Обработвайте големи партиди заявки асинхронно (съвместимо с OpenAI)", "filesApi": "API за файлове", "filesApiDesc": "Качвайте и управлявайте файлове за групова обработка", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Генериране на видео", + "videoDesc": "Генерирайте видеоклипове с помощта на модели с изкуствен интелект като ComfyUI и Stable Video Diffusion.", + "tailscaleRequestFailed": "Неуспешно зареждане на състоянието на Tailscale", + "tailscaleEnableFailed": "Неуспешно активиране на Tailscale Funnel", + "tailscaleWaitingForLogin": "Завършете влизането в Tailscale в отворения раздел на браузъра. OmniRoute ще опита отново автоматично.", + "tailscaleLoginTimedOut": "Времето за изчакване за влизане в Tailscale изтече", + "tailscaleWaitingForFunnel": "Активирайте Funnel за това устройство в отворения раздел на браузъра. OmniRoute ще продължи да проверява.", + "tailscaleFunnelTimedOut": "Времето за изчакване за активиране на Tailscale Funnel изтече", + "tailscaleStarted": "Tailscale Funnel е активиран", + "tailscaleDisableFailed": "Неуспешно деактивиране на Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel е деактивиран", + "tailscaleInstallFailed": "Неуспешно инсталиране на Tailscale", + "tailscaleInstallProgress": "Обработва се...", + "tailscaleInstalled": "Tailscale е инсталиран успешно", + "tailscaleRunning": "Работи", + "tailscaleNeedsLogin": "Изисква влизане", + "tailscaleStoppedState": "Спряно", + "tailscaleNotInstalled": "Не е инсталирано", + "tailscaleUnsupported": "Не се поддържа", + "tailscaleError": "Грешка", + "tailscaleDisable": "Спиране на Funnel", + "tailscaleInstallAndEnable": "Инсталиране и активиране", + "tailscaleLoginAndEnable": "Влизане и активиране", + "tailscaleEnable": "Активиране на Funnel", + "tailscaleUrlNotice": "Използва вашия Tailscale адрес .ts.net. При първото използване може да са необходими вход и одобрение за Funnel.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Удостоверете тази машина с Tailscale, след което активирайте Funnel.", + "tailscaleBinaryPath": "Двоичен файл: {path}", + "tailscaleLastError": "Последна грешка: {error}", + "tailscaleInstallTitle": "Инсталиране на Tailscale", + "tailscaleInstallIntro": "Инсталира Tailscale на тази машина и подготвя OmniRoute за активиране на Funnel.", + "tailscaleInstallPasswordHint": "В macOS и Linux може да е необходим sudo за инсталирането на пакета и стартирането на демона.", + "tailscaleSudoPlaceholder": "Незадължителна парола за sudo", + "tailscaleInstalling": "Инсталиране", "tailscaleSudoLabel": "Парола за Sudo (изисква се за macOS/Linux)", "ngrokTitle": "тунел ngrok", "ngrokRunning": "бягане", @@ -4132,21 +4132,21 @@ "vscodeAliasModelsLabel": "VS Code модели", "vscodeAliasChatLabel": "VS Code чат", "localServer": "Локален сървър", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "Облачен OmniRoute", "copyUrl": "Копиране на URL", "badgeLoopbackTooltip": "Тази крайна точка е достъпна само локално (само loopback)", "badgeAlwaysProtectedTooltip": "Тази крайна точка винаги е защитена и изисква оторизация", "badgeInternalTooltip": "Това е вътрешна системна крайна точка", "tierAll": "Всички", "tierAuth": "Удостоверени", - "tierLoopback": "Loopback", + "tierLoopback": "Обратна връзка", "tierAlwaysProtected": "Винаги защитени", "tierPublic": "Публични", "hideInternal": "Скриване на вътрешните", "showInternal": "Показване на вътрешните", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Персонализирана системна подкана", + "customSystemPromptDescription": "Вмъкване на персонализирана системна подкана във всяка заявка към модел", + "customSystemPromptPlaceholder": "напр. Винаги отговаряй като пират...", "obsidianEnterToken": "Моля, въведете API токен за Obsidian", "obsidianConnectFailed": "Неуспешно свързване", "obsidianConnectionFailed": "Връзката е неуспешна", @@ -4176,7 +4176,7 @@ "obsidianDisable": "Деактивиране", "obsidianConfigureMobile": "Конфигуриране на Obsidian Mobile", "obsidianMobileInstructions": "В Obsidian mobile: Настройки → Синхронизиране → WebDAV → въведете следното:", - "obsidianWebdavUrl": "WebDAV URL", + "obsidianWebdavUrl": "WebDAV URL адрес", "obsidianUsername": "Потребителско име", "obsidianPassword": "Парола", "obsidianTailscaleHint": "Използвайте вашия Tailscale IP адрес вместо localhost, ако се свързвате от мобилно устройство. И двете устройства трябва да са в една и съща Tailscale мрежа.", @@ -4195,16 +4195,16 @@ "notionTokenConfigured": "Токенът е конфигуриран. Инструментите на Notion са налични чрез MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Прокси за крайни точки", + "tabApiEndpoints": "API крайни точки", + "apiEndpointsTitle": "API крайни точки", + "apiEndpointsDescription": "Крайни точки на backend API, които могат да се използват от други приложения и услуги. Този раздел ще съдържа списък с всички налични REST API с документация и възможности за тестване.", + "comingSoon": "Очаквайте скоро", + "plannedFeatures": "Планирани функции", + "featureRestApi": "Каталог на REST API крайни точки с интерактивна документация", + "featureWebhooks": "Конфигуриране на webhook и абонаменти за събития", + "featureSwagger": "Автоматично генериране на OpenAPI / Swagger спецификация", + "featureAuth": "Управление на API ключове и OAuth обхвати за всяка крайна точка" }, "mcpDashboard": { "loading": "Зареждане на таблото за управление на MCP...", @@ -4287,10 +4287,10 @@ "failed": "неуспешно", "previous": "Предишна", "next": "Следващ", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "apiKeyId": "ИД на API ключ", + "offset": "Отместване", + "limit": "Лимит", + "tool": "Инструмент" }, "a2aDashboard": { "loading": "Зареждане на таблото за управление на A2A...", @@ -4346,10 +4346,10 @@ "metadata": "Метаданни", "events": "Събития", "artifacts": "Артефакти", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "tablePhase": "Фаза на таблицата", + "offset": "Отместване", + "limit": "Лимит", + "skill": "Умение", "rpcEndpoint": "ПУБЛИКАЦИЯ /a2a", "rpcMethodSend": "съобщение/изпрати", "rpcMethodStream": "съобщение/поток", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Действия", + "addMemory": "Добавяне на памет", + "allTypes": "Всички типове", "cancel": "Отказ", "checkHealth": "Проверете здравето", "checkingHealth": "Проверка...", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Как работи", "howWorksContent": "1. Автоматично извличане: в края на всеки отговор фактите и епизодите се откриват и запазват автоматично.\n2. Извличане: преди всеки отговор най-подходящите спомени се търсят чрез FTS5 (точно), векторно (семантично) или хибридно RRF.\n3. Вмъкване: съответните спомени се вмъкват в контекста на асистента за подобряване на качеството на отговорите.\n4. Управление: използвайте тази страница за преглед, редактиране, експортиране и компактиране на стари спомени." }, - "content": "Content", + "content": "Съдържание", "contentPlaceholder": "Стойност или JSON съдържание за запомняне", - "created": "Created", - "delete": "Delete", + "created": "Създадено", + "delete": "Изтриване", "deleteConfirmDesc": "Това действие не може да бъде отменено. Споменът ще бъде премахнат за постоянно.", "deleteConfirmTitle": "Изтриване на спомен?", - "description": "View and manage stored memory entries", + "description": "Преглед и управление на съхранените записи в паметта", "editMemory": "Редактиране на спомен", "editModal": { "title": "Редактиране на спомен", @@ -4444,20 +4444,20 @@ "configureCta": "Конфигуриране", "vectorStoreInstallHint": "За да активирате векторно търсене: npm install sqlite-vec (изисква нативен Node.js, а не WASM), след което рестартирайте." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Епизодична", + "export": "Експортиране", + "factual": "Фактологична", "healthUnknown": "Здравето не е известно", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Процент на попаденията", + "import": "Импортиране", "importError": "Неуспешно импортиране на файла", "importResult": "{imported} импортирани, {skipped} пропуснати", - "key": "Key", + "key": "Ключ", "keyPlaceholder": "напр. user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Записи в паметта", "next": "Следваща", - "noMemories": "No memories found", + "noMemories": "Не са намерени записи в паметта", "pageInfo": "Страница {page} от {totalPages} (общо {total})", "pipelineError": "Грешка в тръбопровода", "pipelineOk": "Тръбопроводът е ОК ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "Неуспешно извличане на предварителния преглед" }, "previous": "Предишен", - "procedural": "Procedural", + "procedural": "Процедурна", "qdrant": { "title": "Qdrant (Векторно хранилище Ниво 2)", "description": "Опционална интеграция с Qdrant за мащабируемо семантично търсене", @@ -4534,8 +4534,8 @@ }, "save": "Запазване", "saving": "Запазване...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Търсене в паметта...", + "semantic": "Семантична", "summarize": { "title": "Компактиране на стари спомени", "noCandidates": "Няма спомени, отговарящи на условията за компактиране (критерий: >30 дни).", @@ -4547,8 +4547,8 @@ "playground": "Тестова среда", "engine": "Двигател" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Управление на паметта", + "tokensUsed": "Използвани токени", "tooltip": { "totalEntries": "Общ брой съхранени спомени за този API ключ", "tokensUsed": "Приблизителен общ брой токени, заети от активни спомени", @@ -4558,15 +4558,15 @@ "procedural": "Процедури, работни процеси и инструкции, които асистентът трябва да следва", "semantic": "Концепции, предпочитания и познания в областта" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Общо записи", + "type": "Тип", "memoryEnabled": "Паметта е активирана" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Умения", + "description": "Управление и наблюдение на уменията на ИИ", + "skillsTab": "Умения", + "executionsTab": "Изпълнения", "selectSkillToInspect": "Изберете умение отляво, за да го прегледате.", "schemaTab": "Схема", "handlerTab": "Обработчик", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Стартиране на тест (заместващ текст)", "setModeAria": "Задаване на режим {mode}", "uninstallSkill": "Деинсталиране на умение", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Изолирана среда", + "loading": "Зареждане на уменията...", + "noSkills": "Не са намерени умения", + "noExecutions": "Не са намерени изпълнения", + "enabled": "Активирано", + "disabled": "Деактивирано", "delete": "Изтриване", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "Версия", + "tableDescription": "Описание", + "skill": "Умение", + "status": "Състояние", + "duration": "Продължителност", + "time": "Време", + "sandboxConfig": "Конфигурация на пясъчната среда", + "cpuLimit": "Ограничение на процесора", + "cpuLimitDesc": "Максимално време за изпълнение на умение", + "memoryLimit": "Ограничение на паметта", + "memoryLimitDesc": "Максимално разпределение на паметта", + "timeout": "Време за изчакване", + "timeoutDesc": "Максимално време за изчакване на отговор", + "networkAccess": "Мрежов достъп", + "networkAccessDesc": "Разрешаване на изходящи мрежови заявки", + "mode": "Режим", "q": "Q", "filterSkillsPlaceholder": "Филтрирайте уменията по име, описание или етикет", "allModes": "Всички режими", @@ -4665,13 +4665,13 @@ "retry": "Опитайте отново", "allOperational": "Всички системи работят", "issuesDetected": "Открити са системни проблеми", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute е готов", + "healthVerdictActionRequired": "Необходимо е действие за възстановяване на пълната функционалност", + "healthVerdictCoolingDown": "Период на изчакване след скорошни промени", + "healthSubtitle": "Проверка на състоянието на системата", + "advancedDiagnosticsTitle": "Разширена диагностика", + "hide": "Скриване", + "show": "Показване", "updatedAt": "Актуализиран {time}", "latency": "Латентност", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "Доставчици", "configuredProvidersLabel": "Конфигуриран в таблото за управление", "configuredProvidersHint": "Доставчици с идентификационни данни, записани в /dashboard/providers, независимо от състоянието на изпълнение.", - "activeProviders": "{count} active", + "activeProviders": "{count} активни", "activeProvidersHint": "Конфигурираните доставчици в момента са активирани за заявки за маршрутизиране.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} наблюдавани", "monitoredProvidersHint": "Доставчиците в момента се проследяват от монитори за изправност на прекъсвачи.", "healthyCount": "{count} здрав", "nodeVersion": "Възел {version}", @@ -4721,11 +4721,11 @@ "resetting": "Нулиране...", "resetAll": "Нулиране на всички", "until": "До {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Изчерпано", + "learnedFromHeaders": "Извлечено от заглавките", + "remainingOfLimit": "Остават {remaining}/{limit}", + "throttleStatus": "Ограничение: {value}", + "lastHeaderUpdate": "Актуализация на заглавката: {age}", "databaseHealth": "Здраве на базата данни", "databaseHealthDescription": "Диагностициране и поправка на остарели редове за квоти/домейни и счупени референции за комбинации.", "status": "Статус", @@ -4888,28 +4888,28 @@ "previous": "Предишен", "next": "Следваща", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Преглед на подробностите", + "eventMetadata": "Метаданни на събитието", + "eventPayload": "Данни на събитието", + "requestId": "Идентификатор на заявката", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "Отместване", + "limit": "Лимит", + "status": "Състояние", + "resourceType": "Тип ресурс", + "totalEntries": "Общ брой записи", + "tab": "Раздел", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Затваряне", + "runningRequests": "Активни заявки", + "runningRequestsDesc": "Преглед в реално време на изпълняваните в момента заявки към външни услуги", "clearAll": "Изчистване на всички", "confirmClearActiveRequests": "Изчистване на всички активни заявки?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "Модел", + "provider": "Доставчик", + "account": "Акаунт", + "elapsed": "Изминало време", "activeStage": "Етап", "activeStageUnknown": "Все още не е изпратено към upstream", "activeStageRegistered": "Регистриран", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Получен rate limit слот", "activeStageSendingToProvider": "Изпращане към upstream", "activeStageProviderResponseStarted": "Започна отговор от upstream", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Брой", + "payloads": "Полезни товари", + "viewPayloads": "Преглед", + "activeCount": "{count} активни", + "clientPayload": "Полезен товар на клиентската заявка", + "upstreamPayload": "Полезен товар към външния доставчик", + "upstreamNotSentYet": "Все още не е изпратено към външния доставчик", + "runningRequestDetailMeta": "Акаунт: {account} — Изминало време: {elapsed}", + "export": "Експортиране", + "exporting": "Експортиране...", + "exportFailed": "Експортирането е неуспешно", "cleanHistoryButton": "Изчистване на историята", "cleanHistoryTitle": "Изчистване на историята на логовете?", "cleanHistoryMessage": "Това ще изтрие за постоянно всички редове с логове на заявки, наследени редове с детайли и локални файлове с артефакти в DATA_DIR/call_logs. Страницата в реално време ще се опресни след изчистването.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Изчистени са {deleted} записа в лога, {deletedArtifacts} артефакта и {deletedDetailedLogs} наследени реда с детайли.", "cleanHistoryEmpty": "Не беше намерена история на лога със заявки.", "cleanHistoryFailed": "Неуспешно изчистване на историята на лога.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Времеви диапазон", + "lastNHours": "Последните {hours}", + "defaultRange": "по подразбиране", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Извличането на регистрационните файлове е неуспешно", + "copyFailed": "Копирането на записа от регистрационния файл е неуспешно", + "copyLogEntry": "Копиране на запис от регистрационния файл", "filterByLevel": "Филтриране по ниво на лога", "searchPlaceholder": "Търсене в логовете…", "searchAria": "Търсене на записи в лога", @@ -4987,9 +4987,9 @@ "multiProvider": "Мулти-доставчик", "usageTracking": "Проследяване на използването", "securityDesc": "Задайте парола, за да защитите таблото си за управление, или пропуснете засега.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Без парола няма да можете да добавяте доставчици по време на настройването. Можете да ги добавите по-късно от таблото за управление, след като зададете парола.", "providerDesc": "Свържете първия си доставчик на AI. Можете да добавите още по-късно.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Първо трябва да зададете парола, за да добавяте доставчици. Върнете се към стъпката за сигурност и задайте парола или добавете доставчици по-късно от таблото за управление.", "apiKeyRequired": "API ключ (задължително)", "customUrlOptional": "Персонализиран URL (по избор)", "testDesc": "Нека проверим дали връзката ви с доставчика работи.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Импортиране…", "importFromFileImport": "Импортиране на {count} доставчици", "importFromFileResult": "Импортирани са {success} доставчици ({failed} неуспешни)", + "importFromFileDownloadTemplate": "Изтегляне на CSV шаблон", + "importFromFileMoreErrors": "+още {count}", + "importFromFileSchemaHint": "CSV колоните са позиционни: provider, name, apiKey, baseUrl (незадължително), priority (незадължително). Колоната provider трябва да съдържа идентификатор на съществуващ управляван доставчик или на вече регистриран възел, съвместим с OpenAI/Anthropic — това импортиране не създава нови възли на крайни точки.", "adaptaTutorial": { "title": "Как да свържете Adapta Web", "introPrefix": "Adapta се удостоверява чрез Clerk. Токенът", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} скрити", "warningCount": "{count} Предупреждение", "noConnections": "Никакви връзки", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Изтекъл срок", + "expiringSoonBadge": "Изтича скоро", "freeTier": "Безплатно ниво", "freeTierAvailable": "Налично безплатно ниво", "hasFreeTooltip": "Наличен безплатен план", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Този доставчик е отхвърлен", "riskNotice": { "title": "Преди да продължите", - "detailsTitle": "Usage caveats", + "detailsTitle": "Уточнения за използването", "tooltip": "Доставчик с предупреждения за употреба — щракнете за подробности", "oauth": "Този доставчик използва вашата официална продуктова сесия/OAuth, която не е оторизирана за използване като прокси/рутер. Не препоръчваме интензивно използване на автономни агенти (в стил OpenCloud, дълги многостъпкови процеси, големи партиди) — upstream услугата може да реагира чрез ограничаване или блокиране на акаунта. Използвайте на свой собствен риск.", "webCookie": "Този доставчик се удостоверява чрез бисквитките на вашата уеб сесия. Upstream услугата може да анулира сесията по всяко време, което ще изисква да се влезете отново. Не се препоръчва за дълги операции без надзор. Използвайте на свой собствен риск.", @@ -5188,9 +5191,9 @@ "cancel": "Отказ" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "Маркирани са {count} връзки — до {maxFailures} скорошни неуспешни опита{lastFailureSuffix}. Щракнете, за да видите състоянието на връзките.", + "lastFailureSuffix": "(последен неуспешен опит {time})", + "ariaLabel": "Преглед на подробностите за състоянието на връзките, {count} предупреждения" }, "disabled": "Забранено", "enableProvider": "Активиране на доставчика", @@ -5225,7 +5228,7 @@ "failedCreate": "Неуспешно създаване на доставчик", "errorOccurred": "Възникна грешка. Моля, опитайте отново.", "modelStatus": "Статус на модела", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Само конфигурирани", "allModelsOperational": "Всички модели работещи", "modelsWithIssues": "{count} модел(а) с проблеми", "allModelsNormal": "Всички модели реагират нормално.", @@ -5236,7 +5239,7 @@ "clearing": "Изчистване...", "until": "До {time}", "providerTestFailed": "Тестът на доставчика е неуспешен", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Времето за тестване на доставчика изтече — твърде много връзки за едновременно тестване", "modeTest": "{mode} Тествайте", "passedCount": "{count} премина", "failedCount": "{count} неуспешно", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL адрес на икона", "iconUrlHint": "По избор. URL адрес на изображение, показвано като икона на този доставчик.", "iconUrlInvalid": "Невалиден URL на иконата. Използвайте http(s):// или data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Часова зона за нулиране на дневната квота", + "dailyQuotaResetTimezoneHint": "Незадължителна часова зона по IANA, използвана, когато външният доставчик не предоставя X-RateLimit-Reset. Оставете празно, за да запазите кратък период на изчакване.", + "dailyQuotaResetHourLabel": "Час за нулиране на дневната квота", + "dailyQuotaResetHourHint": "Местен час от 0 до 23 в часовата зона по-горе. Празно означава, че няма часовник на ниво възел.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Доставчикът не е намерен", "deleteConnectionConfirm": "Изтриване на тази връзка?", "deleteConnectionConfirmNamed": "Сигурни ли сте, че искате да изтриете {name}? Това действие не може да бъде отменено.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Изтриване на избраните ({count})", + "batchDeleteConfirm": "Да се изтрият ли {count} връзки? Това действие не може да бъде отменено.", + "batchDeleteSuccess": "Изтрити връзки: {count}", "batchActivateSelected": "Активиране", "batchDeactivateSelected": "Деактивиране", "batchRetestSelected": "Повторно тестване", @@ -5292,7 +5295,7 @@ "filterError": "Грешка", "filterBanned": "Блокиран", "filterCreditsExhausted": "Изчерпани кредити", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Търсене на акаунти…", "noFilteredConnections": "Няма връзки, съвпадащи с текущия филтър.", "failedSetAlias": "Неуспешно задаване на псевдоним", "setAliasSuccess": "Зададен е псевдоним {alias}", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "Подробности за съвместимост с OpenAI", "messagesApi": "API за съобщения", "responsesApi": "API за отговори", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Векторни представяния", + "audioTranscriptions": "Транскрибиране на аудио", + "audioSpeech": "Синтез на реч", + "imagesGenerations": "Генериране на изображения", "chatCompletions": "Чат завършвания", "importingModels": "Импортиране...", "importFromModels": "Импортиране от /models", - "modelsImported": "{count} models imported", + "modelsImported": "Импортирани модели: {count}", "allModelsAlreadyImported": "Всички модели вече са импортирани", "noNewModelsToImport": "Няма нови модели за импортиране — всички модели вече са в регистъра или списъка с персонализирани модели", "skippingExistingModels": "Пропускане на {count} съществуващи модела", @@ -5345,34 +5348,34 @@ "failedFetchModels": "Неуспешно извличане на модели", "noFreeModelsFound": "Не са намерени безплатни модели за този доставчик — нищо не е импортирано.", "fetchModelsSuccess": "Намерени са {count} нови модела", - "fetchModelsFailed": "Could not auto-fetch models (you can retry from settings)", + "fetchModelsFailed": "Моделите не можаха да бъдат извлечени автоматично (можете да опитате отново от настройките)", "noModelsFound": "Няма намерени модели", "importFailed": "Неуспешно импортиране", "noNewModelsAdded": "Няма добавени нови модели.", "adding": "Добавяне...", - "close": "Close", + "close": "Затваряне", "importingModelsTitle": "Импортиране на модели", "copyModel": "Копиране на модел", "filterModels": "Филтриране на модели…", - "testAllRateLimited": "Rate limit reached, stopped early", - "hideFailedAuto": "Auto-hide failed models", - "selectAllModels": "Select all", - "hideAllModels": "Hide all", + "testAllRateLimited": "Достигнато е ограничението на заявките, процесът е спрян преждевременно", + "hideFailedAuto": "Автоматично скриване на неуспешните модели", + "selectAllModels": "Избиране на всички", + "hideAllModels": "Скриване на всички", "modelsActive": "активни", "showModel": "Показване на модел", "hideModel": "Скриване на модел", "removeModel": "Премахване на модела", "rateLimitProtected": "Защитен", "rateLimitUnprotected": "Незащитен", - "providerQuotaShort": "Quota", - "hideConnectionFromProviderQuota": "Hide this account from Provider Quota", - "showConnectionInProviderQuota": "Show this account in Provider Quota", - "quotaVisibilityUpdateFailed": "Failed to update Provider Quota visibility", + "providerQuotaShort": "Квота", + "hideConnectionFromProviderQuota": "Скриване на този акаунт от квотата на доставчика", + "showConnectionInProviderQuota": "Показване на този акаунт в квотата на доставчика", + "quotaVisibilityUpdateFailed": "Видимостта в квотата на доставчика не можа да бъде актуализирана", "enableRateLimitProtection": "Щракнете, за да активирате защитата на ограничението на скоростта", "disableRateLimitProtection": "Щракнете, за да деактивирате защитата на ограничението на скоростта", - "testAllProgress": "Tested {done}/{total}", - "testAllFailedHidden": "{count} failed models hidden", - "testAllDone": "All models tested", + "testAllProgress": "Тествани: {done}/{total}", + "testAllFailedHidden": "Скрити неуспешни модели: {count}", + "testAllDone": "Всички модели са тествани", "productionKey": "Производствен ключ", "enterNewApiKey": "Въведете нов API ключ", "codexApplyModalTitle": "Кандидатствайте в местния кодекс", @@ -5386,13 +5389,13 @@ "bulkAddFormatHint": "Един ключ на ред. Формат: име|apiKey или само apiKey (автоматично именуван по индекс).", "bulkValidateKeys": "Проверка на всеки ключ преди запазване (по-бавно)", "bulkAddAllKeys": "Добавете всички ключове", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {Добавен е # ключ} other {Добавени са # ключа}}", + "bulkFailedCount": "{count, plural, one {# неуспешен} other {# неуспешни}}", "optional": "Не е задължително", "anthropicCompatibleName": "Антропно съвместим", "openaiCompatibleName": "Съвместим с OpenAI", - "compatibleDefaultModelLabel": "Default Model", - "compatibleDefaultModelHint": "Enter the model ID exactly as your compatible endpoint expects it. This model will be saved as the connection default.", + "compatibleDefaultModelLabel": "Модел по подразбиране", + "compatibleDefaultModelHint": "Въведете идентификатора на модела точно както го очаква съвместимата ви крайна точка. Този модел ще бъде запазен като модел по подразбиране за връзката.", "failedImportModels": "Неуспешно импортиране на модели", "noModelsReturnedFromEndpoint": "Няма върнати модели от /models endpoint.", "importingModelsProgress": "Импортиране на {current} от {total} модели...", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Възникна неочаквана грешка", "getApiKey": "Вземете API ключа", "getApiKeyDescription": "Регистрирайте се или се запишете за API ключ", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# връзка} other {# връзки}}", "messagesPath": "съобщения", "responsesPath": "отговори", "chatCompletionsPath": "чат/завършвания", @@ -5419,17 +5422,17 @@ "configured": "конфигуриран", "providerProxyConfigureHint": "Конфигурирайте прокси за всички връзки на този доставчик", "providerProxy": "Прокси доставчик", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Поправяне на env", + "repairEnvWorking": "Поправяне...", + "repairEnvHint": "Възстановете липсващите стойности по подразбиране за OAuth в .env, без да презаписвате съществуващите стойности.", + "repairEnvSuccess": "Стойностите по подразбиране за OAuth са възстановени", + "repairEnvFailed": ".env не можа да бъде поправен", "noConnectionsYet": "Все още няма връзки", "addFirstConnectionHint": "Добавете първата си връзка, за да започнете", "addConnection": "Добавяне на връзка", "availableModels": "Налични модели", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Вградени модели", + "builtInModelsHint": "Модели от регистъра за този доставчик. Използвайте молива, за да зададете опциите за съвместимост.", "pageAutoRefresh": "Страницата ще се обнови автоматично...", "statusDisabled": "деактивиран", "statusConnected": "свързан", @@ -5443,7 +5446,7 @@ "statusError": "грешка", "oauthAccount": "OAuth акаунт", "errorTypeRuntime": "Локално време за изпълнение", - "errorTypeUpstreamAuth": "Upstream auth", + "errorTypeUpstreamAuth": "Удостоверяване към изходния доставчик", "errorTypeMissingCredential": "Липсват идентификационни данни", "errorTypeRefreshFailed": "Опресняването не бе успешно", "errorTypeTokenExpired": "Токенът е изтекъл", @@ -5452,7 +5455,7 @@ "errorTypeNetworkError": "Мрежова грешка", "errorTypeTestUnsupported": "Тестът не се поддържа", "errorTypeUpstreamError": "Грешка нагоре по веригата", - "errorTypeCreditsExhausted": "No credits", + "errorTypeCreditsExhausted": "Няма кредити", "errorTypeBanned": "403 Забранен", "proxySourceGlobal": "Глобален", "proxySourceProvider": "Доставчик", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Повторно удостоверяване на тази връзка", "proxyConfig": "Прокси конфигурация", "aliasExistsAlert": "Псевдонимът „{alias}“ вече съществува. Моля, използвайте различен модел или редактирайте съществуващ псевдоним.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "име на псевдонима", + "clickToSetAlias": "Щракнете, за да зададете псевдоним", + "clickToEditAlias": "Псевдоним: {alias} (щракнете за редактиране)", "openRouterAnyModelHint": "OpenRouter поддържа всеки модел. Добавете модели и създайте псевдоними за бърз достъп.", "modelIdFromOpenRouter": "ID на модела (от OpenRouter)", "openRouterModelPlaceholder": "антропичен/claude-3-opus", "customModels": "Персонализирани модели", "customModelsHint": "Добавете идентификатори на модели, които не са в списъка по подразбиране. Те ще бъдат достъпни за маршрутизиране.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Нормализиране на идентификаторите на извикванията на инструменти до 9 знака (напр. Mistral)", + "preserveDeveloperRoleLabel": "Запазване на ролята developer на OpenAI Responses (без преобразуване в system)", + "compatAdjustmentsTitle": "Съвместимост", + "compatButtonLabel": "Съвместимост", + "compatToolIdShort": "ИД на инструмент 9", + "compatDeveloperShort": "Роля „developer“", + "compatDoNotPreserveDeveloper": "Да не се запазва ролята „developer“", + "compatBadgeNoPreserve": "Без запазване", + "compatProtocolLabel": "Протокол на клиентската заявка", + "compatProtocolHint": "Тези опции се прилагат, когато OmniRoute открие този формат на заявка (OpenAI Chat, Responses API или Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Пренаписване на повикванията на вградения инструмент web_fetch към /v1/web/fetch на OmniRoute.", "interceptionLoadError": "Неуспешно зареждане на настройките за прихващане: {error}", "interceptionSaveError": "Неуспешно запазване на настройките за прихващане: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Показване в Claude Code (claude/…)", + "ccAliasSectionHint": "Обявява моделите на този доставчик с огледални идентификатори claude/<provider>/<model>, така че откриването на модели от шлюза на Claude Code да може да ги показва. Изключено по подразбиране — активирането на тази опция удвоява записите в каталога за всички клиенти.", + "ccAliasProviderLevelLabel": "По подразбиране за доставчика", + "ccAliasModelOverridesLabel": "Замени за отделни модели", + "ccAliasModelOverrideAriaLabel": "Замяна за {modelId}", + "ccAliasStateInherit": "Наследяване", + "ccAliasStateOn": "Вкл.", + "ccAliasStateOff": "Изкл.", + "ccAliasAddModelPlaceholder": "ИД на модел (напр. gpt-4o)", + "ccAliasAddModelButton": "Добавяне на замяна", + "ccAliasLoadError": "Неуспешно зареждане на настройките за псевдоними при откриване: {error}", + "ccAliasSaveError": "Неуспешно запазване на настройката за псевдоним при откриване: {error}", + "compatUpstreamHeadersLabel": "Допълнителни заглавки към услугата нагоре по веригата", + "compatUpstreamHeadersHint": "Настройка с високи привилегии — със същото ниво на доверие като редактирането на API идентификационните данни на доставчика; трябва да се използва само от доверени администратори. Обединява се, след като OmniRoute добави удостоверяването чрез API ключа на доставчика. Ако персонализирана заглавка използва същото име като съществуваща такава (напр. Authorization), вашата стойност напълно заменя автоматично генерираната заглавка (включително Bearer токена) — услугата нагоре по веригата вижда само въведеното от вас, а не ключа от настройките. Неправилната конфигурация може да причини грешка 401 или да наруши удостоверяването към услугата нагоре по веригата. По един ред за всяка заглавка (напр. допълнителна Authentication за някои шлюзове). Задръжте курсора върху стойността или я фокусирайте, за да я прегледате. Запазва се при загуба на фокус, щракване извън полето или затваряне на този панел.", + "compatUpstreamHeaderName": "Име на заглавката", + "compatUpstreamHeaderValue": "Стойност", + "compatUpstreamAddRow": "Добавяне на заглавка", + "compatUpstreamRemoveRow": "Премахване на реда", + "compatBadgeUpstreamHeaders": "Заглавки", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Импортиране само на безплатни модели", @@ -5592,26 +5595,26 @@ "email": "Имейл", "healthCheckMinutes": "Проверка на здравето (мин.)", "healthCheckHint": "Интервал за опресняване на проактивен токен. 0 = забранено.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Премахване на всички отметки", + "modelsActiveCount": "{active}/{total} активни", + "noModelsMatch": "Няма модели, съответстващи на „{filter}“", + "groupLabel": "Среда", + "groupPlaceholder": "напр. eKaizen, Лична", "failedTestConnection": "Неуспешно тестване на връзката", "failed": "Неуспешно", "leaveBlankKeepCurrentApiKey": "Оставете празно, за да запазите текущия API ключ.", "editCompatibleTitle": "Редактиране {type} Съвместим", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "Основен URL адрес на вашия API, съвместим с {type}. Използвайте „Разширени настройки“ за персонализирани пътища до крайните точки.", "apiKeyForCheck": "API ключ (за проверка)", "testModelIdLabel": "Идентификатор на модел (по избор)", "testModelIdPlaceholder": "напр. my-model-id", "testModelIdHint": "Ако доставчикът няма крайна точка /models, въведете идентификатор на модел, за да се валидира чрез /chat/completions вместо това.", "compatibleProdPlaceholder": "{type} Съвместим (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Токенът е обновен успешно", + "tokenRefreshFailed": "Обновяването на токена е неуспешно", "cursorSessionUnchanged": "Сесията вече е активна", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Прилагане на удостоверяването", + "exportCodexAuthFile": "Експортиране на удостоверяването", "applyClaudeAuthLocal": "Прилагане на авт", "exportClaudeAuthFile": "Експортиране на удостоверяване", "importClaudeAuth": "Импортиране на удостоверяване", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} неуспешно", "codexImportBulkZipExtracting": "Извлича се ZIP...", "codexImportBulkZipError": "Неуспешно извличане на ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Разширени настройки", + "chatPathLabel": "Път до крайната точка за чат", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Персонализиран път за чат за доставчици с нестандартни API (напр. /v4/chat/completions)", + "modelsPathLabel": "Път до крайната точка за модели", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Персонализиран път до моделите за валидиране (напр. /v4/models)", "clientIdentityLabel": "Идентичност на клиента", "clientIdentityHint": "Незадължително. Добавя хедъри за клиентски отпечатък (напр. User-Agent), съответстващи на известен CLI за съвместими гейтуеи, които очакват такъв.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Деактивиран (ръчно)", + "statusBanned": "Блокиран / Нарушение в тестовата среда", + "statusCreditsExhausted": "Недостатъчен баланс / Изчерпана квота", + "showEmails": "Показване на всички имейл адреси", + "hideEmails": "Скриване на всички имейл адреси", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Добавете друг API ключ или поставете няколко ключа", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Шлюзове за агрегатори", "enterpriseCloud": "Предприятие и облак", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Етикет за формата на API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "Китай", + "apiRegionHint": "Подсказка за региона на API", + "apiRegionInternational": "Международен", + "apiRegionLabel": "Етикет за региона на API", + "apikey": "API ключ", + "audio": "Аудио", + "audioProvidersHeading": "Заглавие на доставчиците на аудио", "cloudAgentProviders": "Доставчици на облачни агенти", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Кратък етикет за аудио", + "azureOpenAiBaseUrlHint": "Подсказка за основния URL адрес на Azure Open Ai", + "bailianBaseUrlHint": "Подсказка за основния URL адрес на Bailian", + "claudeWebCookieHint": "Отворете claude.ai → DevTools → Application → Cookies → claude.ai и копирайте стойността на „sessionKey“. Необходими са също cf_clearance, __cf_bm и _cfuvid за Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Подсказка за бисквитката на Blackbox Web", + "blackboxWebCookiePlaceholder": "Заместващ текст за бисквитката на Blackbox Web", "t3ChatWebCookieHint": "Отворете t3.chat → DevTools → Приложение → Локално хранилище → https://t3.chat, копирайте 'convex-session-id'. След това отворете DevTools → Network, копирайте пълния хедър на Cookie от всяка заявка за чат. Поставете и двете стойности в полетата по-долу.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Подсказка за бисквитката на Grok Web", "blockClaudeExtraUsageDescription": "Когато е активирано, OmniRoute маркира това Claude свързване като недостъпно веднага щом API-то за използване докладва опашка с допълнително използване, така че резервното копие да премине към друга връзка вместо да продължи с допълнителното таксуване на база \"плащай колкото ползваш\".", "blockClaudeExtraUsageLabel": "Блокирайте допълнителната употреба на Claude", "disableCoolingDescription": "Пропускане на временния период на изчакване, така че тази връзка да остане допустима дори след възстановими грешки (терминалните състояния като блокиран/изтекъл все още се прилагат).", "disableCoolingLabel": "Деактивиране на периода на изчакване за тази връзка", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {Добавен е 1 ключ} other {Добавени са # ключа}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {Пропуснат е 1 дублиран ключ} other {Пропуснати са # дублирани ключа}}", + "bulkPasteHint": "Поставете по един API ключ на ред. Празните редове се игнорират, а дублираните ключове се пропускат.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Добавя бета заглавката redact-thinking за CC Compatible сървъри, които изискват скрити потоци с разсъждения на Claude.", + "ccCompatibleRedactThinkingLabel": "Активиране на бета функцията redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Добавя `display: \"summarized\"` към заявките за разсъждения на CC Compatible, така че поддържаните модели Claude да предават видими части от разсъжденията в поток.", + "ccCompatibleSummarizeThinkingLabel": "Активиране на обобщеното показване на разсъжденията", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Използва приоритетното ниво на услугата за заявки към Codex, когато е налично.", + "codexFastServiceTierLabel": "Бързо ниво на услугата за Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Заместващ текст за името на заглавката към съвместимия сървър", + "compatUpstreamHeaderValuePlaceholder": "Заместващ текст за стойността на заглавката към съвместимия сървър", + "compatible": "Съвместим", + "configuredCount": "Брой конфигурирани", + "consoleApiKeyOracleHint": "Подсказка за API ключа за конзолата на Oracle", + "consoleApiKeyOracleLabel": "API ключ за конзолата на Oracle", + "consoleApiKeyOraclePlaceholder": "Въведете API ключа за конзолата на Oracle", + "newApiUserIdLabel": "Потребителски ID за New-API", + "newApiUserIdPlaceholder": "напр. 12345", + "newApiUserIdHint": "Стойност на заглавката AgentRouter New-Api-User, използвана заедно с API ключа за конзолата за извличане на оставащата квота.", "newApiAggregatorToggleLabel": "Агрегаторен шлюз", "newApiAggregatorToggleHint": "Активирайте откритие на баланс за New-API / One-API / Sub2API агрегаторни възли. Таблото за управление ще показва значка за баланс, а маршрутизацията за предварителна проверка на квотата ще пропуска изчерпаните акаунти.", "newApiAggregatorConsoleApiKeyHint": "Токен за достъп до системата за крайна точка /api/user/self на агрегатора. Не е ключът за маршрутизиране на API.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Активирайте откритие на баланс за съвместими възли New-API / One-API / Sub2API агрегатор", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Подсказка за персонализирания потребителски агент", + "customUserAgentLabel": "Персонализиран потребителски агент", + "databricksBaseUrlHint": "Подсказка за основния URL адрес на Databricks", + "defaultThinkingStrengthHint": "Използва се, когато в заявката не е посочено ниво на задълбоченост на разсъжденията.", + "defaultThinkingStrengthLabel": "Ниво на мисловно усилие по подразбиране", + "deleteAllExtraApiKeys": "Изтриване на всички", + "excludedModelsHint": "Подсказка за изключените модели", + "excludedModelsLabel": "Изключени модели", + "excludedModelsPlaceholder": "Въведете изключени модели", + "expirationBannerExpired": "Срокът е изтекъл", + "expirationBannerExpiredDesc": "Срокът на валидност е изтекъл.", + "expirationBannerExpiringSoon": "Срокът изтича скоро", + "expirationBannerExpiringSoonDesc": "Срокът на валидност изтича скоро.", + "extraApiKeyMasked": "Ключ {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Подсказка за допълнителните API ключове", + "extraApiKeysLabel": "Допълнителни API ключове", + "apiKeyHealthLabel": "Състояние на API ключовете", + "apiKeyStatusActive": "Активен", + "apiKeyStatusWarning": "Предупреждение ({count} неуспешни опита)", + "apiKeyStatusInvalid": "Невалиден", + "primaryKey": "Основен ключ", + "apiKeyInvalidAlert": "{count} API ключ(а) са маркирани като невалидни поради неуспешно удостоверяване във връзките: {connections}. Те ще бъдат пропускани при ротацията. Щракнете, за да ги прегледате.", + "apiKeyInvalidAlertTitle": "Сигнал за състоянието на API ключовете", + "apiKeyWarningAlert": "{count} API ключ(а) са в състояние на предупреждение поради повишен процент на неуспешни опити във връзките: {connections}. Прегледайте ги, за да предотвратите проблеми с ротацията.", + "apiKeyWarningAlertTitle": "Предупреждение за API ключ", + "googlePseInfo": "Информация за Google Pse", "antigravityProjectIdHint": "Незадължителна отмяна за заявки за Antigravity Cloud Code. Оставете празно, за да използвате проекта, открит по време на Google OAuth.", "antigravityClientProfileLabel": "Профил на клиента", "antigravityClientProfileHint": "Изберете коя клиентска идентичност на Antigravity да представя OmniRoute пред API.", @@ -5865,18 +5868,18 @@ "tierFast": "Бърз", "antigravityProjectIdLabel": "Идентификационен номер на Google Cloud Project", "antigravityProjectIdPlaceholder": "my-gcp-идентификатор на проект", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Въведете бисквитката за Grok Web", + "herokuBaseUrlHint": "Подсказка за основния URL адрес на Heroku", + "hideEmail": "Скриване на имейла", + "imageProviders": "Доставчици на изображения", "videoProviders": "Генериране на видео", "embeddingRerankProviders": "Вграждания и прекласиране", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Изображения", + "llmProviders": "Доставчици на LLM", + "localProviderApiKeyOptionalHint": "Незадължителен API ключ за локалния доставчик", + "localProviderBaseUrlHint": "Подсказка за базовия URL на локалния доставчик", + "localProviders": "Локални доставчици", + "maxConcurrentWholeNumberError": "Максималният брой едновременни заявки трябва да е цяло число", "m365TierLabel": "Ниво на Copilot", "m365TierHint": "Изберете кой интерфейс на Microsoft 365 Copilot да използва тази връзка. Индивидуалният е потребителският BizChat по подразбиране; Образователният и Корпоративният (за работа) се насочват към интерфейсите на техния тенант.", "m365TierIndividualOption": "Индивидуален (по подразбиране)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Евтино", "tierOverridePremium": "Премиум", "tierOverrideHelpText": "Фиксиране на този доставчик към ниво на маршрутизиране, вместо да се оставя OmniRoute да го определи от ценообразуването на модела.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Подсказка за уеб бисквитката на Muse Spark", + "museSparkWebCookiePlaceholder": "Уеб бисквитка на Muse Spark", + "oauth": "OAuth", + "openCliTools": "Отваряне на CLI инструментите", + "openSettings": "Отваряне на настройките", + "openaiResponsesStoreDescription": "Позволяване на съвместими заявки към Responses API да запазват състоянието на съхранения отговор.", + "openaiResponsesStoreLabel": "Хранилище на OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Информация за споделения ключ за Perplexity Search", + "perplexityWebCookieHint": "Подсказка за уеб бисквитката на Perplexity", + "perplexityWebCookiePlaceholder": "Уеб бисквитка на Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Предефиниране на ограниченията на скоростта", "rateLimitOverridesMaxConcurrentHint": "Предефиниране на максималния брой едновременни заявки за тази връзка. Предефинира ограничението на ниво акаунт.", "rateLimitOverridesMaxConcurrentLabel": "Макс. едновременни (Ограничение на скоростта)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Максималното време (ms), през което заявката може да изчаква свободно място според ограничението на честотата, преди да бъде прекратена. Заменя глобалната настройка за устойчивост само за тази връзка.", + "rateLimitOverridesMaxWaitMsLabel": "Максимално изчакване в опашката (ms)", "rateLimitOverridesMinTimeHint": "Минимално време (ms) между заявките. Предефинира закъснението по подразбиране на ограничителя на скоростта.", "rateLimitOverridesMinTimeLabel": "Мин. интервал (ms)", "rateLimitOverridesRpdHint": "Максимален брой заявки на ден за тази връзка. Замества настройката по подразбиране на доставчика.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Токени/ден)", "rateLimitOverridesTpmHint": "Максимален брой токени в минута за тази връзка. Предефинира стойността по подразбиране на доставчика.", "rateLimitOverridesTpmLabel": "TPM (Токени/мин)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Обновяване на OAuth токена", + "regionHint": "Подсказка за региона", + "regionLabel": "Регион", + "removeThisKey": "Премахване на този ключ", + "routingTagsHint": "Подсказка за етикетите за маршрутизиране", + "routingTagsLabel": "Етикети за маршрутизиране", + "routingTagsPlaceholder": "Етикети за маршрутизиране", + "search": "Търсене", + "searchEngineIdHint": "Подсказка за идентификатора на търсачката", + "searchEngineIdLabel": "Идентификатор на търсачката", + "searchEngineIdRequired": "Изисква се идентификатор на търсачката", + "searchProvider": "Доставчик за търсене", + "searchProviderDesc": "Описание на доставчика за търсене", "searchProviders": "Търсете доставчици...", "searchByModel": "Търсене по модел…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Доставчици за търсене", + "searxngBaseUrlHint": "Подсказка за базовия URL на SearXNG", + "searxngInfo": "Информация за SearXNG", + "sessionCookieLabel": "Бисквитка за сесията", + "showEmail": "Показване на имейла", + "snowflakeBaseUrlHint": "Подсказка за базовия URL на Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Подсказка за групата етикети", + "tagGroupLabel": "Група етикети", + "tagGroupPlaceholder": "Група етикети", + "testModel": "Тестов модел", + "testingModel": "Тестване на модела", "modelTestQuotaTooltip": "Квотата е изчерпана — нулира се утре или е необходима допълнителна сума", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Значка за изтекъл токен", + "tokenExpiredTitle": "Заглавие за изтекъл токен", + "tokenExpiresSoonTitle": "Заглавие за скоро изтичащ токен", + "tokenShort": "Токен", + "totalKeysRotating": "{count, plural, one {1 ключ се сменя} other {# ключа се сменят}}", + "unhideModel": "Покажи модела", + "upstreamProxyProviders": "Доставчици на прокси към изходни услуги", "validationModelIdHint": "Модел, използван за проверка на API ключа. Оставете празно, за да се използва първият наличен модел на доставчика.", "validationModelIdLabel": "Модел за валидиране", "validationModelIdPlaceholder": "напр. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Поставете JSON за вашия Service Account ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) или OAuth access_token", + "webCookieProviders": "Доставчици с уеб бисквитки", + "weeklyShort": "Седм.", + "xiaomiMimoBaseUrlHint": "Подсказка за основния URL на Xiaomi Mimo", "globalCodexServiceMode": "Глобален режим на услугата Codex", "connect": "Свързване", "manualApiKey": "Ръчен API ключ", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Открийте идентификационни данни за AI доставчици (OpenAI, Anthropic, Google, Mistral, xAI), съхранени от Zed IDE в ключодържателя на ОС, и ги импортирайте като връзки. Zed IDE трябва да бъде инсталиран на тази машина.", "zedImportButton": "Импорт от Zed", "zedImportFailed": "Неуспешен импорт на Zed", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Подсказка за импортиране от Zed", + "zedImportNetworkError": "Мрежова грешка при импортиране от Zed", + "zedImportNone": "Няма данни за импортиране от Zed", "zedImportSuccess": "Импортирaни {credentials} удостоверение(я) от Zed за {providers} доставчик(и)", "zedImporting": "Импортиране…", "zedNoCredentials": "В ключодържателя не са намерени идентификационни данни за Zed", @@ -6175,7 +6178,7 @@ "freeaiapikey": "API прокси с отстъпка за над 40 модела, включително GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Вземете своя API ключ на https://freeaiapikey.com/dashboard. Базов URL адрес: https://freeaiapikey.com/v1.", "freemodel-dev": "Вземете $300 безплатни API кредити на https://freemodel.dev — не се изисква информация за плащане. Съвместима с OpenAI крайна точка. Налични са модели GPT-5.4 и GPT-5.5.", "friendliai": "Безплатен план за serverless inference — не се изисква кредитна карта", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Безплатно ниво чрез Google AI Studio; квотите за отделните модели вече не се публикуват (проверете страницата за квоти в AI Studio) — не е необходима кредитна карта.", "gigachat": "Свържете GigaChat (Sber) с API ключ.", "gitlab": "Личен токен за достъп на GitLab за публичния Code Suggestions API. Конфигурирайте self-hosted базов URL адрес, когато не използвате gitlab.com.", "gitlawb-gmi": "Вземете своя API ключ от таблото за управление на Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Свържете GLM Coding (China) с API ключ.", "glmt": "Предварително зададен GLM профил с по-висок бюджет за токени, активирано мислене и по-дълъг таймаут.", "getgoapi": "Свържете GoAPI с API ключ.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Безплатен план: ограничения за отделните модели (200K токена/ден за всеки чат модел; вижте console.groq.com/docs/rate-limits за RPM/RPD) — няма добавен метод на плащане.", "haiper": "Вземете API ключ на haiper.ai/haiper-api", "heroku": "Свържете Heroku AI с API ключ.", "hcnsec": "Вземете API ключ на api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Създайте API ключ на https://app.requesty.ai, след което го поставете тук като Bearer токен. Съвместима с OpenAI крайна точка на https://router.requesty.ai/v1 с каталог на живо за /v1/models.", "runwayml": "Генерирането на видео в Runway е базирано на задачи. OmniRoute изпраща задачи за text-to-video или image-to-video, проверява периодично /v1/tasks/[id] и нормализира готовите видео резултати обратно в наподобяващ OpenAI отговор на /v1/videos/generations.", "sambanova": "$5 безплатни кредити при регистрация (валидност 30 дни), не се изисква кредитна карта", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Създайте API ключ на https://seekai.cc, след което го поставете тук като Bearer токен. Съвместим с OpenAI основен URL: https://seekai.cc/v1.", "sap": "Откриването на модели използва /v2/lm/scenarios/foundation-models/models на AI_API_URL. Заявките за чат използват deploymentUrl/chat/completions и изискват AI-Resource-Group.", "sarvam": "Sarvam AI е съвместим с OpenAI на /v1. OmniRoute проучва /v1/models и маршрутизира чат трафика към /v1/chat/completions. Моделите са настроени за индийски езици.", "scaleway": "1M безплатни токена за нови акаунти — съвместимо с EU/GDPR (Париж), Qwen3 235B и Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Свържете Claude Code със съществуващия OAuth поток.", "cline": "Свържете Cline със съществуващия OAuth поток.", "cursor": "Свържете Cursor IDE със съществуващия OAuth поток.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Свържете Cursor с потребителски API ключ (crsr_...) от cursor.com/dashboard/api; не е необходима IDE сесия.", "github": "Свържете GitHub Copilot със съществуващия OAuth поток.", "gitlab-duo": "OAuth приложение с обхвати ai_features + read_user. Конфигурирайте GITLAB_DUO_OAUTH_CLIENT_ID и по избор GITLAB_DUO_OAUTH_CLIENT_SECRET на тази инстанция на OmniRoute.", "kilocode": "Свържете Kilo Code със съществуващия OAuth поток.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Копирайте необходимите идентификационни данни от собствения домейн на доставчика. За бисквитки копирайте само стойността на заглавката на бисквитката и пропуснете Cookie:.", "webSessionGuideStep3Manual": "Ръчен път: отворете инструментите за разработчици на браузъра (F12 → Network), обновете страницата, отворете удостоверена заявка и копирайте стойността на заглавката Cookie от заглавките на заявката — пропуснете префикса Cookie:.", "webSessionGuideStep4": "Поставете го тук и проверете връзката. Ако спре да работи, влезте отново и го заменете с нова стойност.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Импортиране на .har файл", + "harImportButtonBusy": "Импортиране…", + "harImportButtonHint": "Експортирайте от раздела Network на DevTools, след като изпратите поне едно съобщение в чата.", + "harImportStatusValid": "Импортирано — валидно за ~{minutes} мин.", + "harImportStatusExpiringSoon": "Импортирано — валидно само още ~{minutes} мин.", + "harImportStatusExpired": "Импортирано, но този токен вече е изтекъл (преди {minutes} мин.) — експортирайте нов HAR.", + "harImportStatusUnknownExpiry": "Импортирано. Срокът му на валидност не можа да бъде прочетен.", + "harImportErrorNotJson": "Този файл не е валиден JSON — наистина ли е експортиран .har файл?", + "harImportErrorNoEntries": "В този HAR няма записани мрежови заявки.", + "harImportErrorNoChathubUrl": "В този HAR не е намерена чат връзка с Copilot. Изпратете поне едно съобщение в чата на m365.cloud.microsoft, преди да експортирате.", + "harImportErrorUnparsableUrl": "Чат връзката е намерена, но URL адресът ѝ не можа да бъде прочетен.", + "harImportErrorMissingFields": "Чат връзката е намерена, но токенът липсваше в нея.", + "harImportErrorReadFailed": "Файлът не можа да бъде прочетен.", + "harImportErrorUnknown": "Не можа да бъде извлечено удостоверение от този HAR файл.", "webSessionSecurityHint": "Отнасяйте се към това като към парола: тя може да осъществява достъп до вашия уеб акаунт, в който сте влезли, докато не изтече или бъде отменена.", "webNoAuthGuideTitle": "Не се изискват идентификационни данни", "webNoAuthGuideBody": "{provider} не се нуждае от API ключ или бисквитка. Запазете връзката, за да използвате нейната безплатна уеб крайна точка.", @@ -6364,15 +6367,15 @@ "checkWebToken": "Чек токен", "huggingchatLabel": "HuggingChat (Безплатно)", "huggingchatDesc": "Безплатен LLM чат чрез huggingface.co/chat", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe уеб", "poeWebDesc": "Мултимоделен чат чрез poe.com", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice уеб", "veniceWebDesc": "Чат с изкуствен интелект с фокус върху поверителността", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel уеб", "v0VercelWebDesc": "Генериране на код с ИИ чрез v0.dev", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi уеб", "kimiWebDesc": "Потребителски чат с Moonshot AI чрез www.kimi.com (международен, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola уеб", "doubaoWebDesc": "Чат с ИИ на ByteDance чрез dola.com", "overrideBaseUrlAdvanced": "Разширени: презаписване на базовия URL адрес", "overrideBaseUrlHint": "Разширени: насочване на този вграден доставчик към персонализирана крайна точка. Оставете празно за използване на стойността по подразбиране.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Кодът на командата auth е изтекъл", "commandCodeConnected": "Командният код е свързан", "commandCodeConnectionAdded": "Добавена е връзка с командния код", + "clearConnectionCooldown": "Изчистване на периода на изчакване", + "clearConnectionCooldownInProgress": "Изчистване…", + "clearConnectionCooldownTitle": "Изчистете периода на изчакване сега — използвайте, когато квотата вече е обновена при доставчика", "commandCodeLinkExpired": "Връзката за командния код е изтекла", "commandCodeOpeningStudio": "Отваряне на Command Code Studio…", "commandCodePopupBlocked": "Изскачащите прозорци са блокирани. Моля, разрешете изскачащите прозорци и опитайте отново Command Code Connect.", "commandCodeStartFailed": "Неуспешно стартиране на Command Code auth", "connectionDeleted": "Връзката е изтрита", "connectionFallback": "връзка", + "connectionCooldownCleared": "Периодът на изчакване е изчистен — връзката отново е включена в маршрутизирането", "coolingConnectionsDescription": "Тези връзки се охлаждат след последната заявка. OmniRoute ще ги пропусне, докато таймерът изтече — не е нужно ръчно изключване.", "coolingConnectionsTitle": "В момента охлаждане ({count})", + "failedClearConnectionCooldown": "Неуспешно изчистване на периода на изчакване", "failedDeleteAlias": "Неуспешно изтриване на псевдоним", "failedDeleteConnection": "Неуспешно изтриване на връзката", "failedDistributeProxies": "Неуспешно разпределение на проксита.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Настройки на крайна точка на запазен модел", "searchByModelAria": "Търсене по модел", "selectSupportedEndpoint": "Изберете поне една поддържана крайна точка", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Тестова среда / CLI" }, "settings": { "title": "Настройки", @@ -6527,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "премахване на абзаци, съдържащи: {items}", "routingSummarizeDropParagraphStartsWith": "премахване на абзаци, започващи с: {items}", "routingSummarizeReplaceText": "замяна на \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "регулярен израз /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "премахване на блокове, съдържащи: {items}", "routingSummarizePrependSystemBlock": "добавяне на блок в началото: \"{text}\"", "routingSummarizeAppendSystemBlock": "добавяне на блок в края: \"{text}\"", @@ -6554,22 +6557,22 @@ "systemPrompt": "Системен ред", "thinkingBudget": "Мислен бюджет", "proxy": "Прокси", - "httpProxy": "HTTP Proxy", - "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "httpProxy": "HTTP прокси", + "1proxy": "1 прокси", + "proxySubTabsAria": "Секции за прокси", + "requestBodyLimitTitle": "Ограничение за тялото на заявката", + "requestBodyLimitDescription": "Максималният размер на API данните, приеман преди анализирането на тялото на заявката. Специализираните маршрути за качване запазват поне вграденото си ограничение от 100 MB.", + "requestBodyLimitInputLabel": "Ограничение за тялото на заявката в MB", + "requestBodyLimitEmptyError": "Въведете ограничение в MB", + "requestBodyLimitWholeNumberError": "Използвайте цяло число", + "requestBodyLimitMinimumError": "Минимумът е {min} MB", + "requestBodyLimitMaximumError": "Максимумът е {max} MB", + "requestBodyLimitLoadFailed": "Неуспешно зареждане на настройките за ограничение на заявките", + "requestBodyLimitSaveSuccess": "Ограничението за тялото на заявката е запазено", + "requestBodyLimitSaveFailed": "Неуспешно запазване на ограничението за тялото на заявката", + "requestBodyLimitSaving": "Запазване...", + "requestBodyLimitSave": "Запазване", + "requestBodyLimitCurrent": "Текущо: {value}", "cacheConfigLoadFailed": "Неуспешно зареждане на настройките за кеша", "cacheConfigSaveSuccess": "Настройки на кеша запазени", "cacheConfigSaveFailed": "Неуспешно запазване на настройките за кеша", @@ -6593,59 +6596,59 @@ "enablePassword": "Активиране на парола", "darkMode": "Тъмен режим", "lightMode": "Светлинен режим", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Памет", + "memoryDesc": "Постоянна разговорна памет между сесиите", + "memoryEnabled": "Активиране на паметта", + "memoryEnabledDesc": "Когато е активирана, OmniRoute ще добавя подходящ контекст от минали разговори.", "memoryTokenCostWarning": "Внимание: при активирана памет OmniRoute вмъква до {tokens} токена от извлечения контекст във всяка чат заявка — това увеличава използването на токени и цената. За да пропуснете вмъкването за конкретна заявка, изпратете заглавката \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Максимален брой токени", + "retentionDays": "Период на съхранение", + "recent": "Скорошни", + "recentDesc": "Хронологичен прозорец", + "semantic": "Семантично", + "semanticDesc": "Векторно търсене", + "hybrid": "Хибридно", + "hybridDesc": "Скорошни + семантично", + "skillsTitle": "Умения", + "skillsDesc": "Инструменти за модели", + "skillsEnabled": "Активиране на уменията", + "skillsEnabledDesc": "Позволява на агентите да задействат функции.", + "skillsComingSoon": "Пазарът за умения очаквайте скоро.", + "memorySkillsTitle": "Памет и умения", + "memorySkillsDesc": "Постоянен контекст и възможности", + "modelsDevTitle": "База данни с модели", + "modelsDevDesc": "Автоматично синхронизиране на цени, възможности и спецификации от models.dev", + "modelsDevEnabled": "Активиране на синхронизирането с models.dev", + "modelsDevEnabledDesc": "Извличане на цени, възможности и спецификации на моделите от базата данни с отворен код models.dev", + "modelsDevInterval": "Интервал на синхронизиране", + "syncNow": "Синхронизиране сега", + "syncing": "Синхронизиране...", + "lastSync": "Последно синхронизиране", + "never": "Никога", "justNow": "точно сега", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Статистика за синхронизирането", + "modelsDevStatsDesc": "Текущо покритие на данните от models.dev", "providers": "Доставчици", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Модели с информация за цени", + "capabilities": "Възможности", + "lastSyncCount": "Брой при последното синхронизиране", + "lastSyncFull": "Последно пълно синхронизиране", + "modelsDevInfo": "Как работи", + "modelsDevInfoDesc": "models.dev е база данни с отворен код за спецификации на AI модели, поддържана от екипа на SST/OpenCode. Тя предоставя информация за цени, възможности, ограничения на контекста и модалности за над 4 000 модела от над 100 доставчика.", + "modelsDevInfoResolution": "Ред за определяне на цените (първо най-високият приоритет):", + "modelsDevInfoOrder": "Потребителско заместване → models.dev → LiteLLM → Твърдо зададена стойност по подразбиране", "systemTheme": "Системна тема", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Активиране на режима за отстраняване на грешки", "logToolSourcesToggle": "Логване на източниците на инструменти", "logToolSourcesDescription": "Генериране на диагностичен лог ред за всяка заявка, обобщаващ броя на инструментите и разпределението на източниците (MCP/хоствани/клиентски).", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Закачане на информация към началната страница", "homePinnedSectionsDesc": "Изберете кои раздели да бъдат закачени в горната част на началната страница.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Квотни ограничения на доставчиците", + "homeProviderQuotaLimitsDesc": "Закачане на панела за състоянието на квотите на доставчиците (с бутон „Обновяване на всички“) в горната част на началната страница.", + "homeQuickStart": "Бърз старт", + "homeQuickStartDesc": "Показване на панела „Бърз старт“ на началната страница.", + "homeProviderTopology": "Топология на доставчиците", + "homeProviderTopologyDesc": "Показване на топологията на доставчиците на началната страница.", "accountEmailVisibility": "Видимост на имейла на акаунта", "accountEmailVisibilityDesc": "Показване на пълните имейли на акаунтите в екраните за доставчици, комбота, логове, квоти и тестова среда (playground). Изключете това, за да ги маскирате по подразбиране.", "comboConfigMode": "Режим на конфигуриране на комбо", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Интервал на опресняване", "providerQuotaAutoRefreshIntervalDesc": "Колко често да се опреснява изгледът за квоти, в секунди.", "seconds": "секунди", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Показване на елементите в страничната лента", "enableCache": "Активиране на кеша", "cacheTTL": "Кеш TTL", "maxCacheSize": "Макс. размер на кеша", "clearCache": "Изчистване на кеша", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Кешът е изчистен успешно", + "clearCacheFailed": "Неуспешно изчистване на кеша", "cacheHits": "Попадения в кеша", "cacheMisses": "Кеш пропуски", "hitRate": "Процент на попадения", "cacheEntries": "Записи в кеша", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Настройки на кеша", + "semanticCache": "Семантичен кеш", + "maxEntries": "Максимален брой записи", + "ttlMinutes": "TTL (минути)", "promptCache": "Кеш на подканите", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Стратегия", + "preserveClientCache": "Запазване на кеша на клиента", + "enabled": "Активирано", "loading": "Loading...", "saving": "Запазва се...", - "save": "Save", + "save": "Запазване", "circuitBreaker": "Прекъсвач", "retryPolicy": "Правила за повторен опит", "maxRetries": "Макс. повторни опити", @@ -6690,21 +6693,21 @@ "timeoutMs": "Изчакване (ms)", "enableSystemPrompt": "Активиране на системна подкана", "systemPromptText": "Текст на системната подкана", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Автоматично деактивиране на блокирани акаунти", + "autoDisableDescription": "Окончателно маркиране на връзките към доставчици като деактивирани, ако върнат конкретни сигнали за окончателно блокиране (напр. HTTP 403 „verify your account“). Това ги премахва от комбинираната ротация.", + "autoDisableThreshold": "Праг за блокиране", + "autoDisableThresholdDesc": "Брой последователни сигнали за блокиране, необходими преди окончателно деактивиране.", + "autoDisableBannedScope": "Прилагане на автоматично деактивиране към", + "autoDisableBannedScopeDesc": "Акаунтите за вход (платени абонаменти и безплатни акаунти) могат да бъдат заключени от доставчика, ако OmniRoute продължи да опитва след блокиране. Платените предплатени API ключове не са изложени на този риск — оставете ги в пула, за да може fill-first да използва следващия ключ.", + "autoDisableBannedScopeAll": "Всички връзки", + "autoDisableBannedScopeAllDesc": "Деактивиране на всяка връзка, която връща сигнал за окончателно блокиране, включително предплатените API ключове.", + "autoDisableBannedScopeSubscription": "Само акаунти за вход / абонамент", + "autoDisableBannedScopeSubscriptionDesc": "Деактивиране на OAuth, бисквитки, сесии и акаунти за вход през уеб (платени или безплатни). Предплатените API ключове остават активни, за да може маршрутизирането да превключи към резервен вариант.", "customBannedSignals": "Забранени ключови думи", "customBannedSignalsDesc": "Допълнителни ключови думи, които задействат откриване за постоянен бан на акаунта. Вградените ключови думи се прилагат винаги.", "customBannedSignalsPlaceholder": "напр. api key revoked", "noCustomBannedSignals": "Няма персонализирани ключови думи. Активни са само вградените ключови думи.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Структура за устойчивост", "resilienceStructureDesc": "Тази страница само конфигурира поведение. Състоянието на прекъсвача на живо се показва на страницата Здраве. Специфичният за комбинация повторен опит и контролът на кръговия слот остават в настройките на комбинацията.", "enableThinking": "Активиране на мисленето", "maxThinkingTokens": "Макс жетони за мислене", @@ -6746,27 +6749,27 @@ "themeSystem": "система", "endpointTunnelVisibility": "Видимост на крайния тунел", "endpointTunnelVisibilityDesc": "Скрийте контролите на тунела от страницата Крайна точка, без да променяте състоянието на тунела.", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Бърз тунел на Cloudflare", "showCloudflareTunnelDesc": "Показване на контролите за бърз тунел на Cloudflare на страницата Крайна точка.", "showTailscaleFunnel": "Фуния от опашка", "showTailscaleFunnelDesc": "Показване на контролите на фунията на Tailscale на страницата Крайна точка.", "showNgrokTunnel": "тунел ngrok", "showNgrokTunnelDesc": "Показване на контролите на ngrok Tunnel на страницата Endpoint.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Скриване на елементи от страничната лента", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Всички", + "presetAllDesc": "Показване на всичко", + "presetEssentials": "Основни", + "presetEssentialsDesc": "За начинаещи — разширените инструменти остават достъпни чрез търсене", + "presetMinimal": "Минимален", + "presetMinimalDesc": "Само основните страници", + "presetDeveloper": "Разработчик", + "presetDeveloperDesc": "Инструменти за разработка и прокси", + "presetAdmin": "Администратор", + "presetAdminDesc": "Наблюдение и одит", + "settingsSidebarTitle": "Персонализиране на страничната лента", + "settingsSidebarDesc": "Изберете кои елементи да се показват в страничната лента. При „Основни“ разширените инструменти остават достъпни чрез търсене.", "hideHealthLogs": "Скриване на журналите за проверка на здравето", "hideHealthLogsDesc": "Когато е ВКЛЮЧЕНО, потиска съобщенията [HealthCheck] в сървърната конзола", "themeAccent": "Цвят на темата", @@ -6780,19 +6783,19 @@ "themeOrange": "Оранжев", "themeCyan": "Циан", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Персонализирайте името и логото на приложението", + "appName": "Име на приложението", + "appNameDesc": "Показвано име в страничната лента и раздела на браузъра", + "customLogo": "URL адрес на персонализирано лого", + "customLogoDesc": "URL адрес към изображението на персонализираното ви лого", + "uploadLogo": "Качване на лого", + "resetLogo": "Възстановяване на стандартните настройки", + "logoPreview": "Преглед", + "customFavicon": "Икона на браузъра", + "customFaviconDesc": "URL адрес към персонализираната ви икона (показва се в раздела на браузъра)", + "uploadFavicon": "Качване на икона", + "resetFavicon": "Нулиране на иконата", + "faviconPreview": "Преглед на иконата", "logoFileTooLarge": "Файлът с логото трябва да бъде по-малък от 500KB", "faviconFileTooLarge": "Файлът с фавиконата трябва да бъде по-малък от 50KB", "invalidLogoFileType": "Невалиден тип файл. Моля, качете PNG, JPG, SVG, GIF или WebP.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Интервал за опресняване", "ruleModeDescription": "Описание на режима на правило" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "Групова проверка на изправността", + "bulkHealthcheckDesc": "Тествайте всички конфигурирани проксита спрямо целеви URL адрес, за да установите кои работят.", + "healthcheckTesting": "Тестване...", + "healthcheckAll": "Проверка на състоянието на всички", + "healthcheckFailed": "Неуспешно изпълнение на проверката на състоянието", + "healthcheckTestingAll": "Тестване на всички прокси сървъри паралелно...", + "healthcheckTotal": "Общо", + "healthcheckWorking": "Работещи", + "healthcheckFailedLabel": "Неуспешни", + "healthcheckStatus": "Състояние", + "healthcheckProxyUrl": "URL на прокси сървъра", + "healthcheckLatency": "Латентност", "proxyDocumentationScopeTitle": "Определяне на обхвата на проксито", "proxyDocumentationScopeDescBefore": "OmniRoute определя изходящото прокси по ред на приоритет:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "комбинация → акаунт → доставчик → глобално", "proxyDocumentationScopeDescAfter": ". Най-специфичният обхват печели.", "proxyDocumentationAddTitle": "Добавяне на персонализирано прокси", "proxyDocumentationAddDescBefore": "Отидете на", @@ -7018,7 +7021,7 @@ "errorOccurred": "Възникна грешка", "updatePassword": "Актуализиране на паролата", "setPassword": "Задайте парола", - "apiEndpointProtection": "API Endpoint Protection", + "apiEndpointProtection": "Защита на API крайната точка", "requireAuthModels": "Изискване на API ключ за /models", "requireAuthModelsDesc": "Когато е ВКЛЮЧЕНО, крайната точка /v1/models връща 404 за неупълномощени заявки. Предотвратява откриването на модел от неоторизирани потребители.", "authModelHeading": "Активен модел на оторизация", @@ -7034,21 +7037,21 @@ "providersBlocked": "{count} доставчик(и) е блокиран от /models", "blockProviderTitle": "Блокиране на {provider}", "unblockProviderTitle": "Отблокиране на {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Съпоставяне на CLI отпечатъци", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} доставчик(а) с активен CLI отпечатък", + "enableFingerprintTitle": "Активиране на отпечатъка за {provider}", + "disableFingerprintTitle": "Деактивиране на отпечатъка за {provider}", "systemTransforms": "Системен блок Трансформационен тръбопровод", "systemTransformsDesc": "Поръчан от доставчик конвейер от трансформации, приложен към тялото на заявката преди препращане. Поддържа всеки идентификатор на доставчик.", "systemTransformsAddProvider": "Добавяне на доставчик", - "systemTransformsAddProviderPlaceholder": "Select a provider…", + "systemTransformsAddProviderPlaceholder": "Изберете доставчик…", "systemTransformsAddProviderAllConfigured": "Всички доставчици вече са конфигурирани", "systemTransformsRemoveProvider": "Премахване на доставчика", "systemTransformsNoProviders": "Няма конфигурирани доставчици. Добавете доставчик, за да започнете.", "systemTransformsOpMoveUp": "Придвижете се нагоре", "systemTransformsOpMoveDown": "Придвижете се надолу", - "systemTransformsOpDelete": "Delete op", + "systemTransformsOpDelete": "Изтриване на операцията", "routingStrategy": "Стратегия за маршрутизиране", "routingAdvancedGuideTitle": "Разширено ръководство за маршрутизиране", "routingAdvancedGuideHint1": "Използвайте Fill First за предвидим приоритет, Round Robin за справедливост и P2C за устойчивост на забавяне.", @@ -7065,12 +7068,12 @@ "leastUsedDesc": "Изберете най-малко използван акаунт", "costOpt": "Цена Опт", "costOptDesc": "Предпочитайте най-евтиния наличен акаунт", - "resetAware": "Reset-Aware RR", + "resetAware": "RR с отчитане на нулирането", "resetAwareDesc": "Предпочитайте акаунти със стабилна оставаща квота и по-близки нулирания", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Претеглено според квотата", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Строго случайно", + "strictRandomDesc": "Разбъркване на тестето — използва всеки акаунт по веднъж преди повторно разбъркване", "stickyLimit": "Лепкава граница", "stickyLimitDesc": "Обаждания на акаунт преди превключване", "routingStrategyTitle": "Стратегия за маршрутизиране", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Презаписване на глобалната стратегия за акаунти за този доставчик (съвместимост с 9router).", "providerRoutingStrategy": "Стратегия за акаунта", "providerRoutingInheritGlobal": "Наследяване на глобалната стойност по подразбиране", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Праг за предварителна проверка на квотата", + "quotaPreflightSubtitle": "Пропускане на акаунтите с изчерпана квота, преди заявката да бъде изпратена нагоре по веригата", + "quotaPreflightEnable": "Активиране на предварителната проверка на квотата", + "quotaPreflightEnableDesc": "Преди всяка заявка проверявайте оставащата квота на акаунта (прозорци от 5 ч. / седмичен / месечен). Акаунтите, които са достигнали или са под прага, се пропускат без извикване нагоре по веригата. Праговете за отделните прозорци, зададени на страницата „Квота на доставчика“, винаги са с предимство пред тази стойност по подразбиране.", + "quotaPreflightCutoff": "Глобален праг (мин. оставащи %)", + "quotaPreflightCutoffDesc": "Спрете да използвате даден акаунт, когато оставащата му квота спадне до този процент или по-ниско, за всеки прозорец без собствен праг. Съответства на лентите за оставащ процент на страницата „Квота на доставчика“.", + "quotaPreflightWindowsHint": "Прозорците със собствен праг за отделния прозорец или доставчик (зададен в модалния прозорец „Праг“ на страницата „Квота на доставчика“) не се влияят от тази стойност по подразбиране.", + "quotaPreflightLoadFailed": "Настройките за предварителна проверка на квотата не могат да бъдат заредени.", "modelAliases": "Псевдоними на модела", "modelAliasesTitle": "Псевдоними на модели", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Преобразувайте имената на моделите чрез точни съвпадения или шаблони със заместващи символи.", "addCustomAlias": "Добави потребителски псевдоним", "deprecatedModelId": "Остарял ID на модел", "newModelId": "Нов ID на модел", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Комбо стратегия", "priority": "Приоритет", "weighted": "Претеглени", - "contextRelay": "Context Relay", + "contextRelay": "Предаване на контекста", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Макс. повторни опити", "retryDelayLabel": "Забавяне при повторен опит (ms)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Паралелност / Модел", "queueTimeout": "Време за изчакване на опашката (ms)", "queueDepth": "Дълбочина на опашката", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Праг за предаване", + "contextRelayMaxMessages": "Максимален брой съобщения за обобщението", + "contextRelaySummaryModel": "Модел за обобщение", + "contextRelayProviderNote": "В момента „Предаване на контекста“ генерира предавания за акаунти в Codex и използва тези стойности като глобални настройки по подразбиране за нови или неконфигурирани комбинации.", "providerProfiles": "Профили на доставчици", "providerProfilesDesc": "Отделни настройки за устойчивост за доставчици на OAuth (базиран на сесия) и API ключ (измерен). Доставчиците на OAuth имат по-строги прагове поради по-ниските лимити на скоростта.", "oauthProviders": "Доставчици на OAuth", @@ -7299,7 +7302,7 @@ "daysAgo": "преди {count}d", "backupReasonManual": "ръководство", "backupReasonPreRestore": "предварително възстановяване", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# връзка} other {# връзки}}", "noChangesSinceBackup": "Няма промени от последното архивиране", "backupFailed": "Неуспешно архивиране", "restoreFailed": "Възстановяването не бе успешно", @@ -7329,7 +7332,7 @@ "configured": "конфигуриран", "none": "Няма", "modelOverrideValuePlaceholder": "Числова стойност", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Разделени със запетаи стойности на английски, напр. low, medium, high", "addKeyValue": "Добавяне на ключ-стойност", "noModelOverrides": "Няма конфигурирани предефинирания за този модел.", "modelOverrideLoadFailed": "Неуспешно зареждане на предефиниранията на модела", @@ -7378,25 +7381,25 @@ "editPricing": "Редактиране на цените", "viewFullDetails": "Вижте пълните подробности", "themeCoral": "Корал", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Адаптивно маршрутизиране според обема", + "adaptiveVolumeRoutingDesc": "Динамично мащабиране на връзките въз основа на обема на полезния товар и натоварването на пропускателната способност.", + "lkgpToggleTitle": "Последен известен работещ доставчик (LKGP)", + "lkgpToggleDesc": "Когато е активирано, маршрутизаторът запомня кой доставчик последно е върнал успешен отговор и първо опитва него при следващите заявки.", "echoRequestedModelTitle": "Връщане на името на заявения модел в отговорите", - "echoRequestedModelDesc": "When enabled, the response `model` field echoes the alias or combo name the client requested instead of the upstream model name. Fixes strict clients (e.g. Claude Desktop) that reject a response whose model does not match the request.", + "echoRequestedModelDesc": "Когато е активирано, полето `model` в отговора повтаря псевдонима или името на комбинацията, заявени от клиента, вместо името на модела от доставчика. Това коригира проблеми със стриктни клиенти (напр. Claude Desktop), които отхвърлят отговор, чийто модел не съвпада със заявката.", "webSearchRouteTitle": "Маршрутизиране на уеб търсене", "webSearchRouteDesc": "Когато заявката включва вграден инструмент web_search, маршрутизирайте цялата заявка към този модел вместо към стандартния — полезно за доставчици, които не внедряват сървърния инструмент web_search на Anthropic. Оставете празно за деактивиране.", "webSearchRoutePlaceholder": "Търсене или избор на модел…", "paidModelPatternWarning": "Този шаблон съвпада само с платени модели — активирайте платените модели или коригирайте шаблона.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Изчистване на LKGP кеша", + "lkgpCacheCleared": "LKGP кешът е изчистен успешно", + "lkgpCacheClearFailed": "Неуспешно изчистване на LKGP кеша", + "days": "Дни", + "lkgp": "Режим LKGP", + "lkgpDesc": "Последен известен надежден доставчик (предвидима устойчивост)", + "maintenance": "Поддръжка", + "purgeExpiredLogs": "Изчистване на изтеклите регистрационни записи", + "purgeLogsFailed": "Неуспешно изчистване на регистрационните записи", "logsDeleted": "{count, plural, =0 {Няма изчистени изтекли логове} one {Изчистен е # изтекъл лог} other {Изчистени са # изтекли логове}}", "resetUsageData": "Нулиране на данните за потреблението", "resetUsageDataDesc": "Изберете колко назад във времето искате да изтриете данните за потреблението, логовете на заявките и аналитичните данни. Конфигурацията на доставчиците, връзките, API ключовете, комботата и настройките се запазват. Това действие не може да бъде отменено.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Неуспешно нулиране на данните за потреблението", "reset": "Нулиране", "resetting": "Нулиране...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Оптимизирано за контекста", + "contextOptDesc": "Маршрутизира въз основа на изискванията за контекстния прозорец и дължината на разговора", + "cacheOpt": "Оптимизирано за кеширане", + "cacheOptDesc": "Запазва един и същ повторно използваем префикс на подканата в същия акаунт на доставчик", + "priorityDesc": "Последователно резервно превключване — първо опитва доставчик 1, след това доставчик 2 и т.н.", + "weightedDesc": "Разпределя трафика между доставчиците според процентни тегла", + "modelRoutingTitle": "Правила за маршрутизиране на модели", + "modelRoutingDesc": "Автоматично маршрутизира модели към конкретни комбинации чрез glob шаблони", + "addRule": "Добавяне на правило", + "routeToCombo": "Маршрутизиране към комбинация", + "selectCombo": "Изберете комбинация...", + "priorityHint": "По-висока стойност = проверява се първо. Използвайте 10+ за конкретни шаблони.", + "patternHint": "Използвайте * за произволни знаци и ? за един знак. Не се прави разлика между главни и малки букви.", + "noRoutingRules": "Няма конфигурирани правила за маршрутизиране. По подразбиране заявките използват глобалната комбинация.", + "routingRuleHint": "Добавете правило като claude-opus* -> frontier-combo, за да маршрутизирате автоматично заявките.", + "deleteRoutingRule": "Да се изтрие ли това правило за маршрутизиране на модели?", + "exactMatchMode": "Точно съвпадение", + "wildcardPatternMode": "Шаблон със заместващи знаци", + "exactMatchModeDesc": "Използвайте точни псевдоними за остарели или преименувани идентификатори на модели.", + "wildcardPatternModeDesc": "Използвайте псевдоними със заместващи знаци * и ?, когато семейство от модели трябва да се съпостави с една цел.", + "noExactAliasesConfigured": "Няма конфигурирани псевдоними с точно съвпадение.", + "wildcardRulesTitle": "Правила със заместващи знаци", + "noWildcardAliasesConfigured": "Няма конфигурирани псевдоними със заместващи знаци.", + "overview": "Общ преглед", + "unknownError": "Неизвестна грешка", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Списък с разрешени", + "syncDisabled": "Синхронизирането е деактивирано", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Синхронизирането е активирано", + "blacklist": "Списък с блокирани", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Синхронизирани модели", + "budget": "Бюджет", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Неуспешно нулиране на цените: {reason}", - "tab": "Tab", + "tab": "Раздел", "pricingSavedProvider": "Ценообразуването е запазено за {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Неуспешно запазване на цената: {reason}", "pricingResetProvider": "Нулиране на цените за {provider}", - "nextSync": "Next Sync", + "nextSync": "Следваща синхронизация", "pricingSyncFailedWithReason": "Синхронизирането на цените не бе успешно: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Изчистване на синхронизираните цени", + "compressionTitle": "Компресиране на подканите", + "compressionDesc": "Намалете използването на токени чрез компресиране на подканите, преди да ги изпратите към доставчиците", "compressionGuidanceFullGuideLink": "Пълно ръководство за компресиране", "compressionGuidanceShow": "Подробности", "compressionGuidanceHide": "Скриване на подробностите", @@ -7485,16 +7488,16 @@ "tokenSaverInputCompressionDesc": "Пренаписване на подходящата история на чата, като се запазват кодът, URL адресите и намерението.", "tokenSaverFineTunePrefix": "Фино настройване на всеки двигател на", "tokenSaverFineTuneSuffix": "или комбиниране на двигатели за всяка заявка на", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", - "compressionModeUltra": "Ultra", + "compressionMode": "Режим на компресиране", + "compressionModeOff": "Изключено", + "compressionModeOffDesc": "Не се прилага компресиране", + "compressionModeLite": "Леко", + "compressionModeLiteDesc": "Намаляване на празните пространства и празните редове", + "compressionModeStandard": "Стандартно (Caveman)", + "compressionModeStandardDesc": "Компресиране въз основа на правила с над 30 шаблона, което запазва блоковете с код и URL адресите", + "compressionModeAggressive": "Агресивно", + "compressionModeAggressiveDesc": "Обобщаване + компресиране на резултатите от инструментите + прогресивно остаряване за максимални икономии", + "compressionModeUltra": "Ултра", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Агресивна конфигурация на двигателя", "compressionAggressiveConfigDesc": "Фина настройка на обобщаването, компресията на инструмента и праговете за стареене", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Брой скорошни съобщения, съхранявани на всяко ниво на стареене (по-високо = по-запазени)", "compressionToolStrategies": "Инструмент Стратегии за резултати", "compressionToolStrategiesDesc": "Превключвайте стратегиите за компресия за различни типове резултати на инструмента", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Общи настройки", + "compressionAutoTrigger": "Праг за автоматично задействане", + "compressionCacheTTL": "TTL на кеша", + "compressionPreserveSystem": "Запазване на системната подкана", "compressionPreserveSystemAlways": "Винаги", "compressionPreserveSystemWhenNoCache": "При липса на кеш", "compressionPreserveSystemNever": "Никога", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Запазено", "compressionExclusionsCount": "Конфигурирани {count, plural, one {# изключение} other {# изключения}}", "compressionExclusionsEmpty": "Няма конфигурирани изключения — всеки модел/краен пункт е допустим за компресия (по подразбиране).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Конфигурация на механизма Caveman", + "compressionCavemanConfigDesc": "Фина настройка на механизма за компресиране въз основа на правила", "compressionCavemanPanelHint": "Неговото включване/изключване и ниво се настройват в панела:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Компресиране на ролите на съобщенията", + "compressionRoleUser": "Потребител", + "compressionRoleAssistant": "Асистент", + "compressionRoleSystem": "Система", + "compressionMinLength": "Минимална дължина на съобщението", + "compressionSkipRules": "Правила за пропускане при компресиране", + "compressionSkipRulesDesc": "Щракнете върху правилата, за да бъдат пропуснати по време на компресирането", + "compressionPreservePatterns": "Шаблони за запазване", + "compressionPreservePatternsDesc": "Регулярни изрази, които никога не се компресират (по един на ред)", + "compressionLogTitle": "Дневник на компресирането", + "compressionLogEmpty": "Все още няма компресирани заявки. Статистиката за компресирането ще се покаже тук, когато бъдат обработени заявки с активирано компресиране.", "minutes": "минути", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "Филтриране на изхода от инструменти с отчитане на командите", + "compressionModeCodexResponses": "Изход от инструмента Responses", + "compressionModeCodexResponsesDesc": "Консервативно компресиране за подходящи изходи от обвивката, корекции, търсене, компилации и JSON", + "compressionModeStacked": "Комбинирано", + "compressionModeStackedDesc": "Филтриране на изхода от инструменти чрез RTK, последвано от компресиране на съобщенията чрез Caveman", + "qdrantTitle": "Qdrant (векторна памет)", + "qdrantDesc": "По избор. Индексира семантични спомени във външна векторна база данни за по-бързо извличане.", + "qdrantStatusActive": "Активно", + "qdrantStatusError": "Грешка", + "qdrantStatusDisabled": "Деактивирано", + "qdrantEnable": "Активиране на Qdrant", + "qdrantEnableDesc": "Когато е активирано, семантичната/хибридната стратегия може да използва Qdrant за извличане на спомени.", + "qdrantTesting": "Тестване...", + "qdrantTestConnection": "Тестване на връзката", + "qdrantSaved": "Конфигурацията е запазена", + "qdrantSaveError": "Неуспешно запазване на конфигурацията", + "qdrantHostHint": "Без порт. Пример: 127.0.0.1 или http://qdrant", + "qdrantPort": "Порт", + "qdrantPortHint": "По подразбиране за Qdrant: 6333", + "qdrantCollectionHint": "Къде ще се съхраняват точките на паметта.", + "qdrantEmbeddingModel": "Модел за вграждане", + "qdrantHelpTitle": "Помощ за бърза настройка", + "qdrantHelpQuickTitle": "Бърза настройка (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Хост: IP адрес/URL на Qdrant, порт: 6333, колекция: omniroute_memory.", + "qdrantHelpStep2": "2. Ако използвате nvidia/llama-nemotron-embed-vl-1b-v2:free, задайте размерност на колекцията 2048.", + "qdrantHelpStep3": "3. Поле за модел: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Запазете, тествайте връзката, след което тествайте търсенето.", + "qdrantEmbeddingQuickSelect": "Бърз избор от откритите модели...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Формат: provider/model. Данните за удостоверяване на доставчика трябва да са конфигурирани.", + "qdrantApiKeyPlaceholderKeep": "(оставете празно, за да запазите текущия ключ)", + "qdrantApiKeyPlaceholderOptional": "(оставете празно, ако не се използва)", + "qdrantSaveHint": "Съвет: редактирайте хоста/порта/колекцията/модела и щракнете върху „Запазване“. API ключът не е задължителен.", + "qdrantSearchTestTitle": "Тест на търсенето", + "qdrantSearchTestDesc": "Генерира вграждане и извършва търсене в Qdrant.", + "qdrantSearchPlaceholder": "Пример: потребителски предпочитания, история и т.н.", + "qdrantNoResults": "Няма резултати (или Qdrant не е конфигуриран).", + "qdrantCleanupTitle": "Срок на съхранение и почистване", + "qdrantCleanupDesc": "Премахва изтеклите и старите точки въз основа на", + "searching": "Търсене...", + "cleaning": "Почистване...", + "cleanNow": "Почистване сега", "optional": "Не е задължително", "current": "Текущ", "remove": "Премахнете", @@ -7600,19 +7603,19 @@ "resilienceScope": "Обхват:", "resilienceTrigger": "Тригер:", "resilienceEffect": "Ефект:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Опашка и честота на заявките", + "resilienceAutoEnableApiKeyProviders": "Автоматично активиране за доставчици с API ключ", + "resilienceRequestsPerMinute": "Заявки в минута", + "resilienceMinTimeBetweenRequests": "Минимално време между заявките", + "resilienceConcurrentRequests": "Едновременни заявки", + "resilienceConnectionScopeConcurrentRequests": "Едновременни заявки за връзка/обхват на квотата", + "resilienceGlobalConcurrentRequests": "Общ брой едновременни заявки към доставчиците (0 = деактивирано)", "resilienceMaxQueueWaitTime": "Максимално време за изчакване на опашка", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Базов период на изчакване", + "resilienceUseUpstreamRetryHints": "Използване на указанията за повторен опит от доставчика", + "resilienceDefaultPerProvider": "По подразбиране (за всеки доставчик)", + "resilienceAlwaysOn": "Винаги включено", + "resilienceAlwaysOff": "Винаги изключено", "routingRemoveEntry": "Премахване на запис", "routingNeedlesSubstrings": "Игли (поднизове за съвпадение)", "routingCaseSensitive": "Чувствителни към главни и малки букви", @@ -7695,25 +7698,25 @@ "visionBridgeModel": "Модел мост", "visionBridgeModelPlaceholder": "openai/gpt-4o-mini", "visionBridgeModelHint": "Всеки OmniRoute идентификатор на модел, който поддържа зрение, може да бъде използван тук.", - "visionBridgePrompt": "Bridge Prompt", + "visionBridgePrompt": "Подкана за Bridge", "visionBridgePromptPlaceholder": "Опишете това изображение накратко.", "visionBridgePromptHint": "Изпраща се към модела за зрение, преди извлеченото описание да бъде инжектирано обратно в първоначалната заявка.", "visionBridgeTimeoutMs": "Изчакване (ms)", "visionBridgeMaxImagesPerRequest": "Макс. изображения на заявка", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Максимален брой стъпки за отложен повторен опит", + "resilienceProviderBreakerTitle": "Прекъсвач на веригата за всеки доставчик", + "resilienceFailureThreshold": "Праг на неуспехите", + "resilienceDegradationThreshold": "Праг на влошаване", "resilienceResetTimeout": "Нулиране на времето за изчакване", "resilienceFailureThresholdLabel": "Праг на повреда", "resilienceResetTimeoutLabel": "Нулиране на времето за изчакване", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Период на изчакване за връзката", "resilienceUseUpstreamRetryHintsLabel": "Използвайте съвети за повторен опит нагоре по веригата", "resilienceUseUpstream429BreakerLabel": "Използвайте подсказки нагоре по веригата 429 (прекъсвач)", "resilienceMaxBackoffStepsLabel": "Максимални стъпки на отстъпление", "resilienceYes": "да", "resilienceNo": "не", - "resilienceDefault": "Default", + "resilienceDefault": "По подразбиране", "storageDatabaseBackupRetention": "Запазване на резервно копие на база данни", "storageDatabaseBackups": "Резервни копия на базата данни", "storageBackupRetentionDescription": "Автоматичните SQLite резервни копия се съхраняват в", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "Наследеният JSON беше импортиран успешно!", "jsonImportFailed": "Неуспешно импортиране на JSON", "jsonImportError": "Грешка при импортирането на JSON", + "jsonImportAuthRequired": "За импортиране на наследена JSON конфигурация се изисква удостоверяване. Моля, влезте или първо завършете настройката.", + "databaseSettingsAuthRequiredTitle": "Изисква се удостоверяване", + "databaseSettingsAuthRequiredBody": "Настройките на базата данни и импортирането на JSON са достъпни само за удостоверен администратор. Влезте или завършете настройката, за да ги преглеждате и редактирате.", + "databaseSettingsAuthRequiredCta": "Влизане", "storagePurgeData": "Изчистване на данни", "storagePurgeDataDesc": "Незабавно изтриване на всички записи без прилагане на проверки за съхранение. Използвайте с повишено внимание.", "storageRetentionCleanup": "Настройки за съхранение", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "режим: {mode}", "compressionAdaptiveOff": "Адаптивен бюджет за контекст: изключен (наследено автоматично задействане)", "compressionAdaptiveTarget": "Адаптивен ({mode}, политика: {policy}) — цел ≈ {target, number} токена (за прозорец от {contextLimit, number} токена)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Адаптивен бюджет на контекста", + "compressionAdaptiveModeOff": "Изключено (наследено автоматично задействане)", + "compressionAdaptiveModeFloor": "Минимум (винаги гарантира побиране)", + "compressionAdaptiveModeReplace": "Замяна на автоматичното задействане", + "compressionAdaptivePolicy": "Политика за бюджета", + "compressionAdaptivePolicyReserve": "Резервиране за изхода", + "compressionAdaptivePolicyPercentage": "Процент от прозореца", + "compressionAdaptivePolicyAbsolute": "Абсолютен бюджет от токени", "compressionOutputStylesDescription": "Вмъкване на инструкции за оформяне на отговора без пренаписване на изхода от доставчика. Комбинирайте свободно.", "mcpAccessibilityDescription": "Ограничава обхвата на изходите от MCP инструменти (отделно хранилище).", "compressionStylesTileSummary": "{tokens, number} спестени токена · {runs, plural, one {# стилизирано изпълнение} other {# стилизирани изпълнения}}", @@ -7844,9 +7851,9 @@ "minimal": "Минимален", "standard": "Стандартен", "aggressive": "Агресивен", - "lite": "Lite", - "full": "Full", - "ultra": "Ultra" + "lite": "Олекотен", + "full": "Пълен", + "ultra": "Ултра" }, "compressionEngine": { "session-dedup": { @@ -7858,7 +7865,7 @@ "description": "Маркери за извличане, адресирани по съдържание." }, "lite": { - "label": "Lite", + "label": "Олекотен", "description": "Изчистване на интервали и форматиране." }, "rtk": { @@ -7866,8 +7873,8 @@ "description": "Филтриране на изхода от команди." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Изход от инструмента Responses", + "description": "Консервативно компресиране за поддържаните изходи от инструмента Responses." }, "headroom": { "label": "Резерв", @@ -7890,7 +7897,7 @@ "description": "Семантично подрязване (ONNX)." }, "ultra": { - "label": "Ultra", + "label": "Ултра", "description": "Евристично подрязване на токени с незадължителен SLM." }, "omniglyph": { @@ -7908,12 +7915,12 @@ "description": "YAGNI стълбица: най-малката работеща промяна, без непоискани абстракции." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Конска опашка (мързелив старши разработчик)", + "description": "Дисциплина на мързелив старши разработчик: изкачвай стълбата на YAGNI, отстранявай първопричината, прави най-малката работеща промяна." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Имам ADHD (първо действие)", + "description": "Резултат с действие на първо място: започва със следващото действие, стъпките са номерирани, една конкретна следваща стъпка, без увод." }, "terse-cjk": { "label": "Сбит CJK (文言)", @@ -7930,7 +7937,15 @@ "memorySkillsActiveSkillsProvider": "Доставчик на активни умения", "cliproxyapiFallback": "Резервен CLIProxyAPI", "cliproxyapiEnableFallback": "Активирайте CLIProxyAPI Fallback", - "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiUrl": "URL на CLIProxyAPI", + "headroomProxyTitle": "Headroom прокси", + "headroomProxyDesc": "URL на незадължителното Headroom прокси за пестене на токени. Ако е празно, се използва HEADROOM_URL или http://localhost:8787.", + "headroomProxyUrl": "URL на Headroom", + "headroomProxyUrlHint": "Локалните URL адреси могат да бъдат стартирани от тази страница. Външните URL адреси само се проверяват.", + "headroomProxySave": "Запазване", + "headroomProxyStart": "Стартиране", + "headroomProxyStop": "Спиране", + "headroomProxyExternalHint": "Този URL не е локален, затова OmniRoute няма да стартира локалния CLI.", "cliproxyapiStatus": "Състояние на CLIProxyAPI", "cliproxyapiNotDetected": "Не е открит", "cliproxyapiImportAuthTitle": "Импортиране на акаунти от CLIProxyAPI", @@ -7943,60 +7958,60 @@ "payloadRuleOverrideTitle": "презаписване", "payloadRuleOverrideDesc": "Принудително задава стойности в полезния товар, замествайки всичко, което вече съществува на този път.", "payloadRuleFilterTitle": "филтър", - "payloadRuleFilterDesc": "Removes blocked params from the payload before the upstream request is sent.", + "payloadRuleFilterDesc": "Премахва блокираните параметри от полезния товар, преди заявката да бъде изпратена към услугата нагоре по веригата.", "payloadRuleDefaultRawTitle": "defaultRaw", - "payloadRuleDefaultRawDesc": "Like default, but string values are parsed as JSON first when possible. The legacy input alias default-raw is also accepted on save.", - "payloadEditorTitle": "Editor", - "payloadEditorDesc": "Use the runtime schema shape: default, override, filter, defaultRaw. The API also accepts the legacy input key default-raw.", - "payloadEditorReady": "Ready", - "payloadResetInfo": "Editor reset to the neutral template. Save to apply it.", - "payloadSaveSuccess": "Payload rules saved and hot reloaded.", - "payloadJsonParseError": "JSON parse error: {error}", - "payloadMustBeObject": "Payload rules must be a JSON object.", - "payloadInvalidJson": "Invalid JSON payload.", - "payloadValidJsonRequired": "Payload rules must be valid JSON before saving.", - "savePayloadRules": "Save Payload Rules", - "requestLimitsTitle": "Request Limits", - "requestLimitsDesc": "Configure global request limits and concurrency guards.", - "maxRequestSizeLabel": "Max Request Size (MB)", - "maxRequestSizeDesc": "Maximum allowed size for incoming API requests.", - "maxResponseSizeLabel": "Max Response Size (MB)", - "maxResponseSizeDesc": "Maximum allowed size for outgoing API responses.", - "maxRequestTokensLabel": "Max Request Tokens", - "maxRequestTokensDesc": "Maximum total tokens allowed in a single request.", - "maxResponseTokensLabel": "Max Response Tokens", - "maxResponseTokensDesc": "Maximum total tokens allowed in a single response.", + "payloadRuleDefaultRawDesc": "Като default, но когато е възможно, стойностите от тип низ първо се анализират като JSON. Остарелият входен псевдоним default-raw също се приема при запазване.", + "payloadEditorTitle": "Редактор", + "payloadEditorDesc": "Използвайте структурата на схемата по време на изпълнение: default, override, filter, defaultRaw. API приема и остарелия входен ключ default-raw.", + "payloadEditorReady": "Готово", + "payloadResetInfo": "Редакторът е нулиран до неутралния шаблон. Запазете, за да го приложите.", + "payloadSaveSuccess": "Правилата за полезния товар са запазени и презаредени динамично.", + "payloadJsonParseError": "Грешка при анализиране на JSON: {error}", + "payloadMustBeObject": "Правилата за полезния товар трябва да бъдат JSON обект.", + "payloadInvalidJson": "Невалиден JSON полезен товар.", + "payloadValidJsonRequired": "Правилата за полезния товар трябва да съдържат валиден JSON преди запазване.", + "savePayloadRules": "Запазване на правилата за полезния товар", + "requestLimitsTitle": "Ограничения на заявките", + "requestLimitsDesc": "Конфигурирайте глобалните ограничения на заявките и защитите за паралелно изпълнение.", + "maxRequestSizeLabel": "Максимален размер на заявката (MB)", + "maxRequestSizeDesc": "Максимално разрешен размер за входящи API заявки.", + "maxResponseSizeLabel": "Максимален размер на отговора (MB)", + "maxResponseSizeDesc": "Максимално разрешен размер за изходящи API отговори.", + "maxRequestTokensLabel": "Максимален брой токени в заявка", + "maxRequestTokensDesc": "Максималният общ брой токени, разрешен в една заявка.", + "maxResponseTokensLabel": "Максимален брой токени в отговор", + "maxResponseTokensDesc": "Максималният общ брой токени, разрешен в един отговор.", "modelCooldownsTitle": "Модели в разхлаждане", "modelCooldownsEmpty": "Няма модели в изчакване в момента.", - "modelCooldownsDescription": "Models temporarily isolated after a failure. When the cooldown expires they come back automatically.", - "modelCooldownsLoadFailed": "Failed to load cooldowns", - "modelCooldownReactivated": "Model reactivated: {model}", - "modelCooldownClearFailed": "Failed to clear cooldown", - "modelCooldownsAllReactivated": "All models in cooldown have been reactivated.", - "modelCooldownsClearFailed": "Failed to clear cooldowns", - "modelCooldownsReactivateAll": "Reactivate all", - "modelCooldownsReasonRemaining": "reason: {reason} • remaining: {remaining}", - "modelCooldownsReactivate": "Reactivate", - "responsesStateTitle": "Responses State", - "responsesStateDesc": "Control how OmniRoute forwards previous_response_id.", - "responsesStateModeLabel": "previous_response_id handling", - "responsesStateModeAuto": "Auto", - "responsesStateModeStrip": "Strip", - "responsesStateModePreserve": "Preserve", - "responsesStateHint": "Auto strips previous_response_id unless a connection explicitly enables OpenAI Responses storage. Strip is safest for stateless clients such as VS Code Custom Endpoint; context then depends on the client sending full history.", - "responsesStateSaveError": "Failed to update Responses state setting", - "codexFastTierTitle": "Codex Fast Tier", + "modelCooldownsDescription": "Модели, временно изолирани след грешка. Когато периодът на изчакване изтече, те се връщат автоматично.", + "modelCooldownsLoadFailed": "Неуспешно зареждане на периодите на изчакване", + "modelCooldownReactivated": "Моделът е активиран отново: {model}", + "modelCooldownClearFailed": "Неуспешно премахване на периода на изчакване", + "modelCooldownsAllReactivated": "Всички модели в период на изчакване бяха активирани отново.", + "modelCooldownsClearFailed": "Неуспешно премахване на периодите на изчакване", + "modelCooldownsReactivateAll": "Активиране на всички отново", + "modelCooldownsReasonRemaining": "причина: {reason} • оставащо време: {remaining}", + "modelCooldownsReactivate": "Активиране отново", + "responsesStateTitle": "Състояние на Responses", + "responsesStateDesc": "Управлявайте как OmniRoute препраща previous_response_id.", + "responsesStateModeLabel": "Обработка на previous_response_id", + "responsesStateModeAuto": "Автоматично", + "responsesStateModeStrip": "Премахване", + "responsesStateModePreserve": "Запазване", + "responsesStateHint": "В автоматичен режим previous_response_id се премахва, освен ако дадена връзка изрично не активира съхранението на OpenAI Responses. Премахването е най-безопасно за клиенти без състояние, като VS Code Custom Endpoint; тогава контекстът зависи от това дали клиентът изпраща пълната хронология.", + "responsesStateSaveError": "Неуспешно актуализиране на настройката за състоянието на Responses", + "codexFastTierTitle": "Бързо ниво на Codex", "codexFastTierDesc": "Глобално инжектиране на service_tier=приоритет за OpenAI Codex заявки.", "codexFastTierHint": "Когато е активиран, OmniRoute добавя service_tier=priority към изходящи заявки на Codex за връзки, които все още не посочват ниво. Приоритетното ниво изисква OpenAI Enterprise API ключ или пътя на ChatGPT-auth Codex; други типове ключове ще получат грешка, свързана с ниво, от OpenAI. Настройките за всяка връзка на страницата на доставчика на Codex имат предимство.", "codexFastTierSaveError": "Неуспешно актуализиране на настройката на Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Автоматично проследяване на квотата на Codex", + "codexAutoPingDesc": "Активира се по избор за всяка връзка: изпраща малка заявка веднага след нулирането на прозореца на сесията на Codex, за да е готов, когато ви потрябва.", + "codexAutoPingWarning": "При всяко проследяване се изразходва малко количество от реалната квота на Codex. По подразбиране е изключено — активирайте го само за връзки, на които разчитате активно.", + "codexAutoPingSaveError": "Неуспешно актуализиране на настройката за автоматично проследяване на Codex", + "codexAutoPingToggleAria": "Превключване на автоматичното проследяване на квотата на Codex за {connection}", "codexFastTierTierLabel": "Ниво на услугата", "codexFastTierTierPriority": "Приоритет", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Гъвкав", "codexFastTierTierDefault": "По подразбиране", "codexFastTierModelsLabel": "Модели от бързо ниво", "codexFastTierModelsHint": "Само отметнатите модели получават service_tier, когато Бързо ниво е активирано.", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Глобален интервал на проверка", "resilienceCredentialHealthEveryMinutes": "На всеки {minutes} мин", "resilienceCredentialHealthHint": "0 изключва фоновото сканиране (макс. 1440 мин = 24 ч). Връзки със собствена стойност за проверка на здравето игнорират този глобален по подразбиране; 0 за дадена връзка я изключва дори когато глобалното сканиране е включено.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Винаги е активирано за {provider} — необходимо е за сигурността на OAuth акаунта и не може да бъде изключено.", + "forcedFingerprintBadge": "Задължително", "sessionAffinityTitle": "Сесиен афинитет", "sessionAffinityDesc": "Запазва един разговор в същия акаунт за толкова секунди, за всеки доставчик. 0 го деактивира.", "sessionAffinityTtl": "TTL на афинитет (секунди)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "Максимален брой стъпки на отстъпление, преди изчакването да спре да расте. Ограничението за максимално изчакване (Max Cooldown) се достига първо в повечето конфигурации, което прави това предпазен таван, когато Max Cooldown бъде увеличен.", "disableSessionStickiness": "Деактивиране на лепкавостта на сесиите", "disableSessionStickinessDesc": "Комбинациите от тип Round-robin и random се ротират към различна връзка при всяка заявка, вместо да обвързват целия разговор към една връзка чрез хеша на първото съобщение. Оставете изключено, за да запазите съвпаденията в кеша на подканите (prompt-cache) за многостъпкови чатове. Персонализираните настройки за всяка комбинация имат предимство.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Маршрутизиране според локалността на кеша за подкани", + "promptCacheAffinityDesc": "Предпочитане на един и същ акаунт на доставчик при съвпадащи ключове за кеша на подкани, като се запазва превключването при проблеми със състоянието и квотата.", + "reasoningTokenBuffer": "Буфер за токени за разсъждение", + "reasoningTokenBufferDesc": "Позволяване на комбинираното маршрутизиране да добавя резерв към max_tokens само за известни модели за разсъждение, когато целият буфер се побира в известно ограничение за изхода.", + "zeroLatencyOptimizations": "Оптимизации за нулева латентност", + "zeroLatencyOptimizationsDesc": "Активирайте по избор паралелни заявки, предвиждащо пропускане според TTFT и проактивна компресия при превключване. Оставете изключено, за да не позволите на тези функции за намаляване на латентността да изпращат конкурентни заявки към целите или да компресират резервните заявки.", "credentialRedaction": "Скриване на идентификационни данни", "credentialRedactionDesc": "Скриване на API ключове, токени и тайни от контекста, изпратен към доставчиците, и от отговорите.", "enableCredentialRedaction": "Активиране на скриването на идентификационни данни", "enableCredentialRedactionDesc": "Изчиства API ключове, токени, частни ключове и JWT от съобщения, повиквания на инструменти и отговори.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Автоматичната синхронизация е деактивирана", + "pricingAutoSyncEnabled": "Автоматичната синхронизация е активирана", "modalityBridgeIntro": "Преобразувайте мултимодалното съдържание в текст, преди да достигне до модели само за текст. Мостовете за зрение, аудио и видео са налични и могат да се конфигурират.", "modalityBridgeVisionTab": "Визия", "modalityBridgeAudioTab": "Аудио", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Здраве", "cliproxyapiPort": "Порт", "qdrantHost": "Хост", - "qdrantCollection": "Колекция", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Колекция" }, "contextRtk": { "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "description": "Компресия, съобразена с командите, за изхода от инструменти, терминални журнали и резултати от компилации.", + "enabled": "Активирано", + "intensity": "Интензивност", + "intensityMinimal": "Минимална", + "intensityStandard": "Стандартна", + "intensityAggressive": "Агресивно", + "toolResults": "Резултати от инструментите", + "assistantMessages": "Съобщения на асистента", + "codeBlocks": "Кодови блокове", "filterCatalog": "Филтър каталог", "filterCatalogDesc": "Наличните изходни филтри по категория", "guidedConfig": "Конфигурация", "guidedConfigDesc": "Регулирайте как RTK филтрира изхода на вашия терминал", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Макс. редове", + "maxChars": "Макс. знаци", "deduplicateThreshold": "Праг за дедупликация", "customFilters": "Персонализирани филтри", "detectedType": "Открит тип", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Провали", "rawOutputAlways": "Винаги", "rawOutputMaxBytes": "Необработени изходни макс. байтове", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Тестване на филтрите", + "pasteOutput": "Поставете изхода от инструмента, за да тествате филтрирането...", "presetHigh": "Агресивен", "presetLow": "светлина", "presetMaxChars": "Макс. изходни знаци", "presetMaxLines": "Максимални изходни линии", "presetMedium": "Стандартен", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Изпълни", + "result": "Резултат", + "previewEmpty": "Изпълнете пример, за да прегледате изхода на RTK.", + "detected": "Открити", "masterSwitchOffAlert": "Главният превключвател на Token Saver е ИЗКЛЮЧЕН — тези настройки няма да повлияят на заявките, докато не го включите от страницата Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Филтрирани токени", + "filtersActive": "Активни филтри", + "requests": "Заявки", + "avgSavings": "Средно спестяване", "simpleMode": "просто", "advancedMode": "Разширено", "searchFilters": "Филтри за търсене...", @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Комбинации за компресиране", + "description": "Определете как да се комбинират енджините при различни сценарии за маршрутизиране.", + "createCombo": "Създаване на комбинация за компресиране", + "editCombo": "Редактиране", + "deleteCombo": "Изтриване", + "deleteConfirm": "Да се изтрие ли тази комбинация за компресиране?", + "pipeline": "Конвейер", + "addStep": "Добавяне на стъпка", + "removeStep": "Премахване", + "name": "Име", + "descriptionField": "Описание", + "languagePacks": "Езикови пакети", + "outputMode": "Режим на извеждане", + "assignToRouting": "Присвояване към комбинации за маршрутизиране", + "noAssignments": "Няма налични комбинации за маршрутизиране", + "default": "По подразбиране", + "setAsDefault": "Задаване по подразбиране", + "save": "Запазване", + "cancel": "Отказ", + "enabled": "Активирано", "loading": "Зареждане…", "hubTitle": "Център за компресиране", "hubDescription": "Изберете кой профил за компресиране да се изпълнява глобално.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "В момента е налично само за Claude (Anthropic). Това е делегиран режим: доставчикът изчиства стари блокове за използване на инструменти от страна на сървъра — ние не пренаписваме съобщението. Това не засяга други доставчици.", "namedCombos": "Именовани комбинации", "namedCombosDescription": "Запазвайте различни конвейери и ги присвоявайте на конкретни комбинации за маршрутизиране.", + "activeProfileMasterSwitchOffWarning": "Активният профил по-долу няма да се изпълнява, докато главният превключвател „Компресиране на подкани“ не бъде включен.", + "activeProfileMasterSwitchOffCta": "Включете го в настройките", "comboNamePlaceholder": "Име на комбинацията", "descriptionPlaceholder": "Описание", "nameRequired": "Въведете име на комбинацията преди запазване.", @@ -8674,9 +8683,7 @@ "languagePacksList": "Езикови пакети: {packs}", "dragToReorder": "Плъзнете, за да пренаредите стъпката", "engine": "Двигател", - "intensity": "Интензивност", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Интензивност" }, "compressionStudio": { "noRun": "Няма налично изпълнение на компресиране.", @@ -8705,7 +8712,7 @@ "run": "Стартиране", "laneRejected": "отхвърлено: {reason}", "error": "грешка", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Неуспешен преглед на комбинирания конвейер: {reason}", "combinedFlow": "Комбиниран поток", "eachLayer": "Всеки слой поотделно", "diff": "Разлика", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Активиране на енджина", "enableDescription": "Изпълнява се последен в стека (след като RTK/Caveman изчисти текста, OmniGlyph конвертира остатъка в изображения) и също така работи самостоятелно чрез режим omniglyph. Това е предварителна версия и остава изключена по подразбиране, докато не приключи цялостната валидация.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Профил за компресиране", + "profileDescription": "Профилът е горна, а не долна граница: по-строг профил не може да бъде разхлабен чрез замяна на настройката за отделна стъпка. Измерено в тази кодова база: при coding-safe или balanced сесия, която все още няма натрупана история, не компресира нищо, защото и двата профила повишават минималния праг за брой знаци и запазват системната подкана, схемите на инструментите и резултатите от инструментите в оригинален вид.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Агресивен (по подразбиране)", + "description": "Политиката, измерена в публикуваните отчети. Превръща в изображения системната подкана, документацията на инструментите и наситената история." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Балансиран", + "description": "Запазва активното състояние в оригинален вид и защитава последните 8 хода; свива само по-старата приключена история." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Безопасен за програмен код", + "description": "Запазва указанията с приоритет, схемите на инструментите и активния изход от инструментите в оригинален вид, като защитава последните 12 хода. Не компресира нищо, докато сесията не натрупа история." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Директно предаване", + "description": "Маршрутизира без преобразуване. Енджинът се пропуска и заявката се препраща непроменена." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Изберете профила за компресиране на OmniGlyph", "saved": "Запазено.", "saveFailed": "Неуспешно запазване.", "enableAria": "Активиране на енджина OmniGlyph", @@ -8885,7 +8892,7 @@ "fallbackRouting": "Резервно маршрутизиране", "fallbackRoutingDescription": "Повторен опит за неуспешни заявки към доставчика чрез CLIProxyAPI", "enableFallback": "Активиране на резервен вариант", - "cliproxyUrl": "CLIProxyAPI URL", + "cliproxyUrl": "URL адрес на CLIProxyAPI", "fallbackCodes": "Кодове на състоянието за резервен вариант (разделени със запетая)", "invalidUrl": "Невалиден URL адрес — трябва да започва с http:// или https://", "saved": "Запазено", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Компресиране на съобщения въз основа на правила, езикови пакети, анализи и контроли за режима на изхода.", "advancedConfig": "Разширена конфигурация", "advancedConfigDesc": "Фина настройка на поведението на компресия", "aggressiveSettings": "Агресивни настройки", "aggressiveSettingsDesc": "Максимална компресия с потенциални компромиси в качеството", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Заявки", + "tokensSaved": "Спестени токени", + "savingsPercent": "Спестяване в %", + "avgLatency": "Средна латентност", + "languagePacks": "Езикови пакети", + "languagePacksDesc": "Активирайте правилата за компресиране за определени езици.", "labelAutoTrigger": "Автоматично компресиране, когато контекстът надвишава", "labelCompressionRate": "Сила на натиск", "labelMaxTokens": "Целеви токени на съобщение", "labelMinLength": "Минимална дължина на съобщението", "labelMinSavings": "Минимум токени за запазване", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Активирано", + "autoDetect": "Автоматично разпознаване на езика", + "rulesCount": "{count} правила", "inputCompressionTitle": "Компресиране на входа", "inputCompressionDesc": "Пренаписване на хронологията на чата с по-кратки формулировки. Намалява входящите токени с ~50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Анализи на компресирането", + "noAnalytics": "Все още няма анализи на компресирането.", "masterDisabledWarning": "Главният превключвател на Token Saver е ИЗКЛЮЧЕН — тези настройки няма да повлияят на заявките, докато не го включите от Настройки за компресиране или не го промените тук.", "outputMode": "Изходен режим", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Режим на изхода", "quickSettings": "Бързи настройки", "quickSettingsDesc": "Основни настройки за компресиране, за да започнете", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Автоматично заобикаляне за яснота", + "bypassConditions": "Условия за заобикаляне", "bypassConditionsList": "сигурност, необратим, изясняване, чувствителен към ред", "simpleMode": "просто", "advancedMode": "Разширено", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ултра настройки", "ultraSettingsDesc": "Захранвана от SLM семантична компресия", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Отговаряй кратко. Запазвай техническите термини, кода, грешките, URL адресите и идентификаторите.", + "full": "Отговаряй лаконично и стегнато. Запазвай цялото техническо съдържание.", + "ultra": "Отговаряй свръхлаконично с общоприети технически съкращения. Запазвай точните символи." } }, "translator": { @@ -9181,7 +9188,7 @@ "conceptHeadline": "Вашето приложение говори „езика“ на един API. Преводачът го преобразува, за да използва друг доставчик.", "conceptDiagramAppLabel": "Вашето приложение", "conceptDiagramSourceLabel": "Формат на източника", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (централен възел)", "conceptDiagramTargetLabel": "Целеви доставчик", "conceptDiagramExampleApp": "напр. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Поставете JSON заявка; форматът се разпознава автоматично.", "advancedPipelineTitle": "Междинен пайплайн на OpenAI", "advancedPipelineSubtitle": "Визуализирайте всяка стъпка от превода (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Потоков трансформатор (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Преобразува Chat Completions SSE в Responses API.", "advancedTestBenchTitle": "Тестов стенд (8 сценария)", "advancedTestBenchSubtitle": "Изпълнява всички сценарии и отчита успех/неуспех + % съвместимост.", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Оставащо", "kiloPassRenews": "Подновява се след {count} дни", "kiloPassUsageLabel": "Потребление за този месец", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Допълнителни кредити за използване", + "kimiExtraUsage": "Допълнително използване", + "kimiExtraUsageEnabled": "Активирано", + "kimiExtraUsageDisabled": "Деактивирано", + "kimiExtraUsageFrozen": "Замразено", + "kimiExtraUsageUnavailable": "Недостъпно", + "kimiMonthlyUsed": "Използвано този месец", + "kimiMonthlyLimit": "Месечен лимит", + "kimiMonthlyLimitUnlimited": "Неограничено", + "kimiAdditionalCredits": "Допълнителни кредити", "loggerTab": "Дървосекач", "proxyTab": "Прокси", "budgetManagement": "Управление на бюджета", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Автоматични прекъсвачи", "lockedIPs": "Заключени IP адреси", "lockoutsAutoRefreshHint": "Заключвания на ограничение на скоростта за модел • Автоматично опресняване 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# заключен} other {# заключени}}", "timeLeft": "Остава {time}", "howItWorks": "Как работи", "howItWorksSubtitle": "Научете как оценките валидират вашите LLM отговори", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Тествани модели", "searchSuitesPlaceholder": "Търсене на апартаменти...", "passSuffix": "пас", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# случай} other {# случая}}", "runEval": "Стартирайте Eval", "runAllSuites": "Пусни всички", "runAllRunning": "Изпълнява се всичко...", "runAllProgress": "Работи {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# неуспешен набор} other {# неуспешни набора}}", "runAllCompleted": "Изпълних {suites} пакети — {passed} премина, {failed} не успя", "runAllCompletedWithFailures": "Изпълних {completed} пакети; {failedSuites} не успя да завърши", "runningProgress": "Изпълнява се {current}/{total}...", @@ -9423,7 +9430,7 @@ "providerLimits": "Ограничения на доставчика", "noProviders": "Няма свързани доставчици", "connectProvidersForQuota": "Свържете се с доставчици с OAuth, за да проследите вашите ограничения на квотата и използването на API.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# акаунт} other {# акаунта}}", "filteredFromCount": "(филтриран от {count})", "autoRefresh": "Автоматично опресняване", "refreshAll": "Опресни всички", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Неуспешно актуализиране на видимостта на квотата", "account": "акаунт", "modelQuotas": "Моделни квоти", - "lastUsed": "Last Refreshed", + "lastUsed": "Последно обновяване", "actions": "Действия", "refreshQuota": "Опресняване на квотата", "today": "Днес", @@ -9452,9 +9459,9 @@ "cardExpand": "Разгъване", "cardCollapse": "Свиване", "moreQuotas": "+ още {count}", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Негрупирани", + "viewFlat": "Плосък списък", + "viewByEnvironment": "По среда", "noQuotaDataAvailable": "Няма налични данни за квота", "noAccountsForTierFilter": "Няма намерени акаунти за филтър за ниво", "tierAll": "Всички", @@ -9465,7 +9472,7 @@ "tierPro": "Професионалист", "tierPlus": "плюс", "tierFree": "безплатно", - "tierLite": "Lite", + "tierLite": "Олекотен", "tierUnknown": "неизвестен", "statTotal": "Общо", "statCritical": "Критично", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Осребряване на кредит", "resetCreditRedeemed": "Нулирането е осребрено", "resetCreditRedeemFailed": "Неуспешно осребряване на кредита за нулиране", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Неуспешно запазване на набора", "clone": "Клонинг", "exportSuite": "Експортиране", "importSuite": "Импортиране", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Невалиден JSON пакет за оценка", "suiteBuilderCloneSuffix": "копие", "suiteBuilderImportedSuite": "Импортиран пакет", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Карта с резултати", + "evalApiKey": "API ключ", + "scorecardPassRate": "Процент на успеваемост", + "targetTypeModel": "Модел", + "actualOutputLabel": "Действителен резултат", + "evalTargetHint": "Изберете модел или комбинация за оценяване.", + "suiteBuilderDeleted": "Наборът е изтрит успешно", + "suiteBuilderCaseCardHint": "Дефинирайте входната подкана и критериите за очаквания резултат.", + "nextResetUtc": "Следващо нулиране (UTC)", + "scorecardHint": "Обобщени проценти на успеваемост за всички набори за оценяване.", + "suiteLatestRunsHint": "Най-скорошните оценъчни изпълнения за този набор.", + "saving": "Запазване", + "suiteBuilderCaseModelLabel": "Модел (незадължително)", + "evalControlsTitle": "Контроли за оценяване", + "suiteBuilderEditTitle": "Редактиране на набора за оценяване", + "suiteBuilderCaseStrategyLabel": "Стратегия за валидиране", + "notifySelectDifferentCompareTarget": "Моля, изберете друга цел за сравнение", + "recentRunsHint": "Показани са най-скорошните оценъчни изпълнения. Щракнете върху изпълнение, за да видите подробни резултати.", + "evalCompareHint": "По избор сравнете резултатите с втора цел.", + "suiteBuilderCaseInvalid": "Този случай има грешки при валидирането. Моля, коригирайте ги, преди да запазите.", + "historyEmpty": "Все още няма история на оценяванията", + "suiteBuilderUpdated": "Пакетът е актуализиран успешно", + "resetInterval": "Нулиране на интервала", + "suiteBuilderCreateTitle": "Създаване на пакет за оценяване", + "activePeriodSpend": "Разходи за активния период", + "evalApiKeyHint": "Изберете кой API ключ да се използва за заявките за оценяване.", + "evalCompareOptional": "Сравнение (по избор)", + "suiteBuilderDeleteFailed": "Неуспешно изтриване на пакета", + "suiteBuilderCaseSystemPromptPlaceholder": "Незадължителни системни инструкции...", + "scorecardCases": "Случаи", + "runCompletedWithScore": "Оценяването завърши — {score}% успеваемост", + "suiteBuilderCustomBadge": "Персонализиран", + "targetSuiteDefaults": "Настройки по подразбиране на пакета", + "suiteBuilderDeleteConfirm": "Сигурни ли сте, че искате да изтриете този пакет? Това действие не може да бъде отменено.", + "suiteBuilderNameLabel": "Име на пакета", + "scorecardSuites": "Пакети", + "evalCompareTarget": "Цел за сравнение", + "suiteBuilderCaseModelPlaceholder": "напр. gpt-4o-mini", + "evalControlsHint": "Конфигурирайте целта за оценяване и API ключа, след което изпълнете пакетите, за да проверите качеството на модела.", + "recentRunsTitle": "Скорошни изпълнения", + "suiteBuilderCaseSystemPromptLabel": "Системна подкана", + "suiteBuilderCaseExpectedPlaceholder": "напр. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "напр. дефиниция на фибоначи", "suiteBuilderCaseExpectedPlaceholderExact": "Поставете точния очакван отговор", "suiteBuilderCaseExpectedPlaceholderRegex": "напр. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Използвайте регулярен израз на JavaScript без обвиване на наклонени черти.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "напр. Пакет за оценка на качеството на кода", + "suiteBuilderAddCase": "Добавяне на случай", + "cancel": "Отказ", + "evalTarget": "Цел", + "suiteBuilderCaseNameLabel": "Име на случая", + "weeklyLimitUsd": "Седмичен лимит (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "напр. Напиши функция за Fibonacci на Python", + "suiteBuilderNameRequired": "Името на пакета е задължително", + "suiteBuilderCaseUserPromptLabel": "Потребителска подкана", + "daily": "Ежедневно", + "resultErrorLabel": "Грешка", + "suiteBuilderBuiltInBadge": "Вграден", + "suiteBuilderCaseCardTitle": "Тестов случай", "suiteBuilderDuplicateCase": "Дубликат", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "напр. 50.00", + "suiteBuilderCaseTagsHint": "Тагове, разделени със запетаи, за организиране на тестовите случаи.", + "notifyEvalRunFailedWithReason": "Оценяването е неуспешно: {reason}", + "weekly": "Ежеседмично", + "runEvalRunning": "Изпълнява се оценяване...", + "delete": "Изтриване", + "resetTimeUtc": "Час на нулиране (UTC)", + "evalApiKeyAuto": "Автоматично (използване на стойността по подразбиране)", + "suiteBuilderDescriptionPlaceholder": "Незадължително описание на това, което тества този набор...", + "targetComparisonTitle": "Сравнение на цели", + "save": "Запазване", + "suiteBuilderCreated": "Наборът е създаден успешно", + "suiteLatestRuns": "Последни изпълнения", + "suiteBuilderCaseExpectedLabel": "Очаквана стойност", + "historyLatency": "Латентност", + "suiteBuilderCaseTagsPlaceholder": "напр. coding, python", + "targetTypeCombo": "Комбинирано", + "scorecardPassed": "Успешно", + "suiteBuilderCaseTagsLabel": "Етикети", + "suiteBuilderNewSuite": "Нов набор", + "notifyEvalLoadFailed": "Неуспешно зареждане на данните за оценяване", + "notConfigured": "Не е конфигурирано", + "suiteBuilderCaseNamePlaceholder": "напр. тест на Фибоначи с Python", + "intervalLabel": "Интервал", + "suiteBuilderCreateAction": "Създаване на набор", + "suiteBuilderCasesHint": "Всеки тестов случай изпраща подкана и валидира отговора.", + "suiteBuilderUpdatedAt": "Актуализирано", + "errorBadge": "Грешка", + "suiteBuilderCasesTitle": "Тестови случаи", + "edit": "Редактиране", + "monthly": "Ежемесечно", + "suiteBuilderCasesRequired": "Необходим е поне един тестов случай", + "weeklyLimitSummary": "Обобщение на седмичния бюджетен лимит", + "suiteBuilderDescriptionLabel": "Описание", + "targetComparisonHint": "Паралелно сравнение на резултатите от оценяването между целите.", + "compareCompletedWithScore": "Сравнението завърши — {score}% успеваемост", + "staleQuotaTooltip": "Последното опресняване беше неуспешно — показват се кеширани данни", "quotaThresholdLabel": "Остава мин", "quotaCutoffsColumnHelp": "Спрете заявките, когато оставащата квота падне до този процент или по-малко.", "quotaCutoffsButtonDefault": "По подразбиране", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Системни метрики", "memory": "Памет", - "memoryShort": "mem", + "memoryShort": "памет", "uptime": "Наличност", "ariaLabel": "Системно наблюдение", "title": "Системен Монитор", @@ -9863,7 +9870,7 @@ "backToLogin": "Назад към Вход", "forgotPassword": "Забравена парола?", "continueWithOidc": "Продължете с OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Парола по подразбиране: CHANGEME (освен ако не е зададена INITIAL_PASSWORD)", "Authorization": "Упълномощаване", "Content-Disposition": "Съдържание-разположение", "waitingForAuthorization": "Чака се оторизация...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Изчаква се разрешение за антигравитация...", "waitingForQoderAuthorization": "Изчаква се разрешение за Qoder...", "exchangingCodeForTokens": "Размяна на код за токени...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Несъвместима версия на Node.js", + "nodeIncompatibleDesc": "Използвате Node.js {version}, която е извън политиката на OmniRoute за поддържани защитени среди за изпълнение. Използвайте коригирана LTS версия на Node.js 20.x или 22.x.", + "nodeIncompatibleFixLabel": "Решение: инсталирайте коригирана LTS версия на Node.js 22", + "nodeIncompatibleHint": "OmniRoute изисква Node.js 22.22.2+ (22.x LTS) или 24.0.0+ (24.x LTS). Препоръчва се Node 24 LTS.", "resetViaAppDataTitle": "Нулиране чрез данни на приложението", "resetViaAppDataDescription": "Изтрийте файла с настройки от директорията на приложението, за да нулирате паролата си:", "quitDesktopApp": "Напуснете напълно настолното приложение OmniRoute", @@ -10033,8 +10040,8 @@ "clientCompatibility": "Съвместимост на клиента", "protocolsToc": "Протоколи", "apiReference": "Справка за API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Справочник за API за управление", + "managementApiDescription": "Крайни точки за автоматизация на регистъра на прокси сървъри, присвояването на обхвати и миграцията на наследени прокси конфигурации.", "method": "Метод", "path": "Пътека", "notes": "Бележки", @@ -10064,7 +10071,7 @@ "quickStartStep4Suffix": "Използвайте например префикс на доставчика", "deploySetupTitle": "Ръководство за настройка", "deploySetupText": "Стъпка по стъпка инсталация, конфигуриране на средата и ръководство за първи път за OmniRoute.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Настолно приложение Electron", "deployElectronText": "Стартирайте OmniRoute като собствено настолно приложение на Windows, macOS и Linux.", "deployDockerTitle": "Докер", "deployDockerText": "Разгръщане в контейнери с Docker Compose; готови за производство стекове и Kubernetes.", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Инсталирайте OmniRoute като прогресивно уеб приложение на Android, iOS и настолни браузъри.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Стартирайте OmniRoute без графичен интерфейс на Android чрез Termux. Отворете таблото за управление от мобилния си браузър.", "featureRoutingTitle": "Маршрутизиране с множество доставчици", "featureRoutingText": "Насочвайте заявки към 30+ доставчици на AI чрез една крайна точка, съвместима с OpenAI. Поддържа API за чат, отговори, аудио и изображения.", "featureCombosTitle": "Комбинации и балансиране", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Помощник за пренаписване за клиенти без /v1.", "endpointRewriteResponsesNote": "Помощник за пренаписване за отговори без /v1.", "endpointRewriteModelsNote": "Помощник за пренаписване за откриване на модел без /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Показване на запазените елементи в регистъра на прокси сървъри (поддържа страниране).", + "mgmtProxiesCreateNote": "Създаване на многократно използваем елемент за прокси сървър в регистъра.", + "mgmtProxiesHealthNote": "Получаване на здравни показатели за 24 часа/подвижен период за всеки запазен прокси сървър от регистрационните файлове.", + "mgmtProxiesBulkAssignNote": "Присвояване или премахване на един прокси сървър за множество идентификатори на обхвати с една заявка.", + "mgmtAssignmentsListNote": "Показване на присвояванията на прокси сървъри по обхват, scope_id или proxy_id.", + "mgmtAssignmentsUpdateNote": "Присвояване или премахване на прокси сървър за глобален обхват, доставчик, акаунт или комбинация.", + "mgmtLegacyMigrationNote": "Импортиране на наследени съпоставяния proxyConfig в присвояванията в регистъра.", "modelPrefixesDescriptionStart": "Използвайте префикса на доставчика преди името на модела, за да насочите към конкретен доставчик. Пример:", "modelPrefixesDescriptionEnd": "маршрути към GitHub Copilot.", "provider": "Доставчик", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute е софтуер с отворен код. Вие сте свободни да го инспектирате, модифицирате и разпространявате съгласно условията на неговия лиценз." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI агенти", + "description": "Открийте инсталираните CLI агенти в системата си. Добавете персонализирани агенти за автоматично откриване.", + "refresh": "Опресняване", + "installed": "Инсталиран", + "notFound": "Не е намерен", + "builtIn": "Вграден", + "custom": "Персонализиран", + "remove": "Премахване", + "addCustomAgent": "Добавяне на персонализиран агент", + "addCustomAgentDesc": "Регистрирайте произволен CLI инструмент за откриване. Той ще бъде сканиран автоматично при опресняване.", + "agentName": "Име на агента", + "binaryName": "Име на изпълнимия файл", + "versionCommand": "Команда за версията", + "spawnArgs": "Аргументи за стартиране", + "addAgent": "Добавяне на агент", + "scanning": "Системата се сканира за CLI агенти...", + "opencodeIntegration": "Интеграция с OpenCode", + "opencodeDetected": "Открит е opencode {version}", + "opencodeDesc": "Генерирайте готов за използване {configFile} с основния URL адрес на OmniRoute и всички налични модели — поставете го в основната директория на проекта си и изпълнете {command}.", + "downloadConfig": "Изтегляне на {file}", + "downloaded": "Изтеглено!", + "setupGuideTitle": "Ръководство за настройка", + "openCliTools": "Отваряне на CLI инструментите", + "setupGuideDetectCliTitle": "Откриване на инсталираните CLI инструменти", + "setupGuideDetectCliDesc": "Щракнете върху „Обновяване“, след като инсталирате или актуализирате CLI инструмент, за да може OmniRoute отново да сканира изпълнимите файлове и версиите.", + "setupGuideCustomAgentTitle": "Регистриране на персонализиран изпълним файл", + "setupGuideCustomAgentDesc": "Използвайте „Добавяне на персонализиран агент“, когато вашият CLI инструмент не е във вградения списък. Посочете името на изпълнимия файл и командата за проверка на версията.", + "setupGuideCommandMissingTitle": "Отстраняване на грешката „командата не е намерена“", + "setupGuideCommandMissingDesc": "Уверете се, че CLI командата съществува в PATH, отворете нова терминална сесия и стартирайте отново „Обновяване“.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Управление на кеша", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Обновяване", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Записи в паметта", + "memoryEntriesSub": "LRU в паметта", + "dbEntries": "Записи в базата данни", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Попадения в кеша", + "cacheHitsSub": "от общо {total}", + "tokensSaved": "Спестени токени", + "tokensSavedSub": "Прогнозно въз основа на попаденията", + "hitRate": "Процент попадения", + "performance": "Производителност на кеша", + "autoRefresh": "Автоматично обновяване на всеки {seconds} сек.", + "hits": "Попадения", + "misses": "Пропуски", + "total": "Общо", + "behavior": "Поведение на кеша", + "behaviorDeterministic": "Кешират се само заявки без поточно предаване и с temperature=0.", + "behaviorBypass": "Заобикаляне чрез заглавката {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "TTL по подразбиране: 30 минути. Конфигурирайте чрез {envVar}.", + "idempotency": "Слой за идемпотентност", + "activeDedupKeys": "Активни ключове за дедупликация", + "dedupWindow": "Прозорец за дедупликация", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Неуспешно изчистване на кеша.", + "unavailable": "Кешът не е достъпен", + "unavailableDesc": "Статистическите данни за кеша не можаха да бъдат извлечени. Уверете се, че сървърът работи.", "loadingCacheAria": "Зареждане на кеша", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Кеш на подканите (от страна на доставчика)", + "semanticCache": "Семантичен кеш", + "promptCacheSectionDesc": "Показва активността по кеширане на подкани от страна на доставчика въз основа на хронологията на използване, за да можете да видите къде е активно управлението на кеша и каква част от входните данни се използва повторно.", + "promptTrendDesc": "Почасов обем на заявките, покритие на кеша и обем на прочетените от кеша данни през последните 24 часа.", + "cachedRequests": "Кеширани заявки", + "cachedRequests24h": "Кеширани заявки (24 ч.)", + "cacheHitRate": "Процент попадения в кеша", + "cacheRate": "Процент кеширане", + "cacheRateDesc": "от общия брой заявки", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Показатели за кеша на промптове", + "withCacheControl": "С управление на кеша", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Коефициент на повторно използване на кеша", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Прогнозно спестени разходи", + "lastUpdated": "Последно обновяване", + "hoursTracked": "проследени часа", + "busiestHour": "Най-натоварен час", + "peakCacheRate": "Пиков процент на кеширане", + "trendHour": "Час", + "activityVolume": "Активност", + "requestsShort": "заявки", + "inputShort": "Входящи", + "cachedShort": "Кеширани", + "writeShort": "Запис", + "resetting": "Нулиране...", + "resetMetrics": "Нулиране на показателите", + "byProvider": "Разбивка по доставчик", + "providerCacheRateDesc": "Всеки доставчик показва общия брой входни токени, токените, прочетени от кеша, и токените, записани в кеша, за да можете да сверите коефициента на повторно използване със суровите общи стойности.", "provider": "Provider", - "requests": "Requests", + "requests": "Заявки", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Тенденция на кеша (24 ч.)", + "peakCached": "Пиково кеширане", + "cached": "Кеширани", + "overview": "Общ преглед", "tableProvider": "Доставчик", "tableModel": "Модел", "performanceTitle": "Производителност", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "Собственият детерминиран кеш за отговори на OmniRoute. Когато е активиран, повтарящите се заявки без поточно предаване с temperature=0 могат да се обслужват локално, без да достигат до външния доставчик.", + "semanticCacheDisabledDesc": "Семантичният кеш е деактивиран. OmniRoute ще пропуска локалното повторно използване на отговори, докато не го активирате отново в настройките.", + "semanticEntriesDesc": "Текущо съхранявани в SQLite записи на семантичния кеш. Активността на кеша за промптове от страна на доставчика не е показана тук.", + "searchEntries": "Търсене в записите...", + "search": "Търсене", + "loading": "Зареждане...", + "entriesLoadError": "Зареждането на записите от семантичния кеш бе неуспешно.", + "noEntries": "Не са намерени записи в кеша", + "noPromptCacheData": "Все още не е регистрирана активност на кеша за промптове от страна на доставчика.", + "noTrendData": "През последните 24 часа не е регистрирана активност на кеша за промптове.", + "signature": "Сигнатура", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Създадено", + "expires": "Изтича", + "actions": "Действия", + "deduplicatedRequests": "Дедупликирани заявки", + "savedCalls": "Спестени API извиквания", + "totalProcessed": "Общо обработени заявки", + "disabled": "Деактивирано", + "totalRequests": "Общо заявки", "reasoningCache": "Повторение на разсъждението", "reasoningCacheDesc": "Запазва моделното мислене за потоците за извикване на многооборотни инструменти", "reasoningEntries": "Активни записи", @@ -10669,7 +10676,7 @@ "minutesAgo": "преди {minutes} мин.", "hoursAgo": "преди {hours} ч.", "daysAgo": "преди {days} дни", - "entries": "Entries" + "entries": "Записи" }, "proxyConfigModal": { "levelGlobal": "Глобален", @@ -10776,7 +10783,7 @@ "saveConnection": "Запази връзката", "gheDescription": "Въведете основния URL адрес на вашия GitHub Enterprise инстанция (напр. https://ghe.yourcompany.com).", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "URL адрес на GitHub Enterprise", "gheUrlRequired": "Изисква се URL адрес на GitHub Enterprise", "gitlabDuoSetupTitle": "Настройка на GitLab Duo OAuth", "gitlabDuoSetupMessage": "GitLab Duo OAuth не е конфигуриран. Регистрирайте OAuth приложение на {applicationsUrl} с URI за пренасочване {redirectUri} и обхвати \"{scopes}\", след което задайте {clientIdEnv} (и по желание {clientSecretEnv}) и рестартирайте.", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Свържете Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Вход с Cursor", + "tabImport": "Импортиране на токен", + "loginDescription": "Отваря страницата за вход на Cursor в браузъра. Работи в Docker — потвърдете в браузъра на хост системата си, след което се върнете тук.", + "loginWithCursor": "Вход с Cursor", + "startingLogin": "Стартиране…", + "waitingApproval": "Изчакване на потвърждение за вход в Cursor…", + "openUrlHint": "Ако браузърът не се е отворил:", + "openLoginLink": "Отваряне на страницата за вход", + "cancelLogin": "Отказ от влизането", "autoDetecting": "Автоматично откриване на токени...", "readingFromCursor": "Четене от Cursor IDE или cursor-agent", "tokensAutoDetected": "Токените са успешно автоматично открити от Cursor IDE!", "cursorNotDetected": "IDE на курсора не е открит. Моля, поставете ръчно вашето означение.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Работите в Docker? Препоръчваме „Вход с Cursor“. Автоматичното импортиране от IDE и cursor-agent обикновено не са налични в контейнера. Вижте docs/providers/CURSOR-DOCKER.md.", "accessToken": "Токен за достъп", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Токен за опресняване", + "refreshTokenPlaceholder": "Незадължително — активира автоматичното опресняване на токена", "required": "*", "accessTokenPlaceholder": "Токенът за достъп ще се попълни автоматично...", "machineId": "ID на машината", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Автоматичното откриване на токени не бе успешно", "errorEnterToken": "Моля, въведете токен за достъп", "errorImportFailed": "Неуспешно импортиране", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Неуспешно стартиране на входа в Cursor", + "errorLoginPoll": "Неуспешен вход в Cursor", + "errorLoginTimeout": "Времето за вход в Cursor изтече — опитайте отново" }, "pricingModal": { "title": "Конфигурация на цените", @@ -10843,9 +10850,9 @@ "selectProxy": "Избиране на {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Импортиране от стара версия", + "bulkAssign": "Групово присвояване", + "addProxy": "Добавяне на прокси", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Тестване", + "edit": "Редактиране", + "delete": "Изтриване", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Неуспешно", "successRate": "{rate}% успех", "avgLatency": "{latency}ms средно", "assignmentsCount": "{count} задачи", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} мс", "testFailure": "✗ {error}", "repair": "Поправка", "relayAuthMissing": "липсва удостоверяване", @@ -10942,7 +10949,7 @@ "batchSelectedCount": "{count} избрани", "batchDeleteSelected": "Изтриване на {count} избрани", "batchActivateSelected": "Активиране на {count} избрани", - "testPassed": "✓ OK", + "testPassed": "✓ ОК", "close": "Затваряне", "managePool": "Управление на пула", "poolTitle": "Пул от проксита и ротация", @@ -10961,9 +10968,9 @@ "strategyLatency": "Оптимизирано по латентност (Latency-optimized)", "poolMembersLabel": "Членове на пула ({count})", "poolNoMembers": "Все още няма проксита в този пул.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "Използвани са {exits, plural, one {# изход} other {# изхода}} от {connections, plural, one {# връзка} other {# връзки}} · до {max} на един изход · последните {hours} ч", + "poolEgressObservationEmpty": "Не е наблюдаван трафик през последните {hours} ч", + "poolEgressObservationHint": "Изчислено от регистрационния файл на прокси сървъра за периода: отделните изходящи IP адреси, наблюдавани за членовете на този пул, и връзките на OmniRoute, които са ги използвали. „На един изход“ означава за целия период, а не едновременно. Блокирането за 429 за отделен IP адрес поставя на пауза само връзките от същото семейство доставчици.", "poolRemove": "Премахване", "poolRemoveFailed": "Неуспешно премахване на проксито от пула", "poolAddLabel": "Добавяне на прокси", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Крайна точка", + "provider": "Доставчик", + "model": "Модел", "accountKey": "Account Key", "autoAccounts": "Автоматично ({count} акаунта)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Изпращане", + "cancel": "Отказ", + "audioFile": "Аудиофайл", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Изчистване на всичко", + "request": "Заявка", + "response": "Отговор", + "transcription": "Транскрипция", + "copy": "Копиране", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Генерирани {count} изображения", "generatedImage": "Генерирано изображение {index}", - "save": "Save", + "save": "Запазване", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Отговори", "completions": "Довършвания", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Вграждания", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Модерации", - "rerank": "Rerank", + "rerank": "Преранжиране", "search": "Search", "webFetch": "Уеб извличане" }, "conversationalChat": "Разговорен чат", "clearChat": "Изчистване на чата", "typeMessagePlaceholder": "Въведете съобщение... (Shift+Enter за нов ред)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Чат", + "tabCompare": "Сравняване", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Изграждане", + "configPane": "Конфигурация", + "systemPrompt": "Системна подкана", + "systemPromptPlaceholder": "Вие сте полезен асистент.", + "modelPlaceholder": "напр. openai/gpt-4o", + "endpointLabel": "Крайна точка", + "parametersLabel": "Параметри", + "collapseConfig": "Свиване на панела за конфигурация", + "expandConfig": "Разгъване на панела за конфигурация", + "temperature": "Температура", + "maxTokens": "Максимален брой токени", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Наказание за присъствие", + "frequencyPenalty": "Наказание за честота", "reasoningLabel": "Разсъждение", "thinking": "Мислене", "effort": "Усилие", "effortDefault": "По подразбиране", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Произволно (оставете празно)", + "presetsLabel": "Предварителни настройки", + "loadPreset": "Зареждане на предварителна настройка", + "savePreset": "Запазване на предварителна настройка", + "noPresets": "Няма предварителни настройки", + "presetNamePlaceholder": "Име на предварителната настройка", + "savingPreset": "Запазване…", + "nameRequired": "Името е задължително", + "failedToSavePreset": "Неуспешно запазване на предварителната настройка", + "improvePrompt": "Подобряване на подканата", + "improvingPrompt": "Подобряване…", + "improvePromptTitle": "Подобрете подканата си с AI", + "setModelFirst": "Първо задайте модел", "setModelInConfigFirst": "Първо задайте модел в панела за конфигуриране.", "improvePromptFailed": "Неуспешно подобряване на подканата.", "improvePromptAria": "Подобряване на подканата с AI", "confirmImprovePrompt": "Потвърждаване на подобряването на подканата", "improvePromptDescription": "Това ще изпрати текущата ви системна подкана към , за да генерира подобрена версия.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Това ще използва квота от модела, конфигуриран в Config.", + "improveConfirm": "Подобри", + "exportCode": "Експортиране на код", + "exportCodeTitle": "Експортиране на код", "exportShort": "Експортиране", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Няма налично състояние на playground за експортиране.", "closeExportModal": "Затваряне на модалния прозорец за експортиране", "close": "Затваряне", "exportRealKeyWarning": "Предупреждение за сигурност: експортирането е блокирано — в изходните данни беше открит реален API ключ. Моля, нулирайте своя API ключ и опитайте отново.", @@ -11071,13 +11078,13 @@ "copyLangCode": "Копиране на {language} код", "loadingPresets": "Зареждане…", "loadPresetPlaceholder": "Зареждане на предварителна настройка…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Копирай", + "copiedCode": "Копирано!", + "addModel": "+ Добавяне на модел", + "runAll": "Стартирай всички", + "cancelAll": "Отмени всички", + "maxColumnsReached": "Максимум {max} колони", + "modelPlaceholderCompare": "Модел (Cmd+K)…", "noModel": "Няма модел", "statusLabel": "Статус: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "Изчакване на отговор…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "оценка от страна на клиента", + "tokensLabel": "Токени", + "costLabel": "Цена", + "costEstimated": "(приблизителна)", "ttftTitle": "Време до първия токен (оценка от страна на клиента)", "tpsTitle": "Токени в секунда (оценка от страна на клиента)", "tokenCountsTitle": "Токени на подканата ↑ / Токени на отговора ↓", "estimatedCostTitle": "Прогнозна цена (не се гарантира точност)", - "toolsLabel": "Tools", + "toolsLabel": "Инструменти", "toolsCount": "Инструменти ({count})", - "addTool": "Add tool", + "addTool": "Добавяне на инструмент", "editTool": "Редактиране на инструмент {name}", "removeTool": "Премахване на инструмент {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Име на функцията", "toolNameRequiredPlaceholder": "Име на функция *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Описание (по избор)", "toolParamsLabel": "Параметри (JSON схема)", "toolParamsJsonSchema": "JSON схема за параметри", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Параметрите трябва да са валиден JSON", + "structuredOutputLabel": "Структуриран изход", + "enableJsonMode": "Активиране на JSON режим", + "disableJsonMode": "Деактивиране на JSON режим", + "invalidJson": "Невалиден JSON", "jsonMode": "JSON режим", "jsonModeDescription": "Принудително задава response_format: json_schema", "schemaName": "Име на схемата", @@ -11125,7 +11132,7 @@ "jsonSchemaEditor": "Редактор на JSON схема", "schemaValidated": "Схемата е валидирана", "validateSchema": "Валидиране на схема", - "seed": "Seed", + "seed": "Начална стойност", "stopSequences": "Спиращи последователности", "stopSequencesPlaceholder": "напр. \"\\n\\n\" или \"END\"", "autoProvider": "Автоматично", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} колони", "addModelToCompare": "Добавяне на колона за модел за сравнение", "modelsSimultaneously": "До {max} модела едновременно", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Изпълнява се…", + "runLabel": "Стартирай", + "enterToolResult": "Въведете резултата от инструмента…", "build": { "step1Label": "Какво да се тества?", "step2Label": "Конфигуриране", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Резултат {number}", "noKeysFound": "Няма намерени API ключове. Добавете такъв в секцията „Ключове“.", "exampleLabel": "Пример", - "latency": "{ms}ms", + "latency": "{ms} мс", "statsLine": "{ms}ms · {tokensIn} входящи / {tokensOut} изходящи токена", "defaultKey": "(по подразбиране)", "clear": "Изчистване", @@ -11250,73 +11257,73 @@ "stop": "Спиране" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "Записване", + "paused": "На пауза", + "pipelineLogsOn": "Регистрирането на логове за конвейера е включено", + "pipelineLogsOff": "Регистрирането на логове за конвейера е изключено", + "updatingPipelineLogs": "Актуализиране на логовете на конвейера...", + "updatePipelineFailed": "Неуспешно актуализиране на регистрирането на логове за конвейера", + "capturePipeline": "Записване на данните от конвейера за нови заявки", + "searchPlaceholder": "Търсене на модели, доставчици, акаунти, API ключове, комбинации...", + "allProviders": "Всички доставчици", + "allModels": "Всички модели", + "allAccounts": "Всички акаунти", + "allApiKeys": "Всички API ключове", + "total": "Общо", + "ok": "Успешни", + "err": "Грешка", + "combo": "Комбинация", + "keys": "Ключове", + "shown": "Показани", + "sortNewest": "Най-нови", + "sortOldest": "Най-стари", + "sortTokensDesc": "Токени ↓", + "sortTokensAsc": "Токени ↑", + "sortDurationDesc": "Продължителност ↓", + "sortDurationAsc": "Продължителност ↑", + "sortStatusDesc": "Състояние ↓", + "sortStatusAsc": "Състояние ↑", + "sortModelAsc": "Модел А-Я", + "sortModelDesc": "Модел Я-А", + "sortLogs": "Сортиране на логовете", + "refresh": "Опресняване", + "columnsLabel": "Колони", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semantic": "Семантичен", + "upstream": "Външен доставчик", + "semanticCacheHit": "Попадение в семантичния кеш (обслужено от OmniRoute)", + "upstreamResponse": "Отговор от външния доставчик", + "noApiKey": "Няма API ключ", + "requestedRoutedTitle": "Заявен {requested}, маршрутизиран като {routed}", "statusFilters": { - "all": "All", + "all": "Всички", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Успех", + "combo": "Комбинация" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "Състояние", + "cacheSource": "Източник на кеша", + "model": "Модел", + "requested": "Заявен", + "provider": "Доставчик", + "protocol": "Протокол на заявката", + "account": "Акаунт", + "apiKey": "API ключ", + "combo": "Комбинация", + "tokens": "Токени", "compressed": "Компресия", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Продължителност", + "time": "Време", + "conversation": "Разговор", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Зареждане на регистрационните записи...", + "noLogs": "Все още няма регистрационни записи. Направете няколко API повиквания, за да ги видите тук.", + "noMatchingLogs": "Няма регистрационни записи, съответстващи на текущите филтри.", + "callLogsInfo": "Регистрационните записи за повикванията се запазват и като JSON файлове в {dataDir} и се ротират въз основа на {retentionDays} и {maxEntries}.", "loadMore": "Зареждане на още", "loadingMore": "Зареждане на още...", "correlationId": "Идентификатор на корелацията", @@ -11367,12 +11374,12 @@ }, "payloadMissing": "Подробният артефакт на полезния товар вече не е наличен за този запис на лог.", "payloadCorrupt": "Неуспешно парсиране на детайлен артефакт на полезния товар.", - "notAvailable": "N/A", + "notAvailable": "Няма данни", "semanticCache": "Семантичен (OmniRoute)", "upstreamCache": "Възходящо (Доставчик)", "ariaLabel": "Детайли на логовете на заявките", "completed": "Завършено", - "upstreamStatus": "Upstream: {status}", + "upstreamStatus": "Външен сървър: {status}", "statusDiscrepancy": "OmniRoute върна {status}, въпреки че доставчикът върна {provider}", "previousRequest": "Предишна заявка", "nextRequest": "Следваща заявка", @@ -11417,59 +11424,59 @@ "correlationId": "Идентификатор на корелацията", "correlationIdValue": "Идентификатор на корелация: {id}", "detailedPayloadInfo": "Първо активирайте подробното регистриране, ако искате изгледа на четирите етапа на клиент/доставчик за нови заявки.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Копиране на всички", + "copiedAll": "Всички са копирани" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "Всички", + "filterErrors": "Грешки", + "filterSuccess": "Успешни", + "filterTimeout": "Изтекло време", + "colStatus": "Състояние", + "colProxy": "Прокси", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "Тип", + "colLevel": "Ниво", + "colProvider": "Доставчик", + "colTarget": "Цел", + "colLatency": "Закъснение", + "colClientIp": "IP на клиента", + "colTime": "Време", + "recording": "Записване", + "paused": "На пауза", + "searchPlaceholder": "Търсене по хост, доставчик, цел, IP...", + "allTypes": "Всички типове", + "allLevels": "Всички нива", + "allProviders": "Всички доставчици", + "total": "общо", + "ok": "ОК", + "err": "ГРЕШКА", + "timeoutShort": "ИЗТЕКЛО ВРЕМЕ", + "direct": "директно", + "newest": "Най-нови", + "oldest": "Най-стари", + "latencyDesc": "Латентност ↓", + "latencyAsc": "Латентност ↑", + "refresh": "Опресняване", + "columns": "Колони", + "loadingProxyLogs": "Зареждане на прокси регистрационните файлове...", + "noProxyLogs": "Все още няма прокси регистрационни файлове. Конфигурирайте проксита и изпратете API заявки, за да ги видите тук.", + "noMatchingLogs": "Няма регистрационни файлове, съответстващи на текущите филтри.", + "tlsFingerprint": "TLS отпечатък на Chrome 124", "colPublicIp": "Публичен IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "Реч", + "search": "Търсене", + "images": "Изображения", + "chat": "Чат", + "music": "Музика", + "responses": "Отговори", + "rerank": "Преподреждане", + "video": "Видео", + "embeddings": "Векторни представяния", + "transcription": "Транскрипция" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Среда за изпълнение", + "description": "Наблюдаемост в реално време — 3-слойна устойчивост + сесии + предупреждения за квоти", + "pause": "Поставяне на пауза", + "resume": "Продължаване", + "refreshNow": "Обновяване сега", + "kpiSessions": "Сесии", + "kpiCircuits": "Прекъсвачи", + "kpiCooldowns": "Периоди на изчакване", + "kpiLockouts": "Блокировки", + "hintStickyBound": "{count} с фиксирана обвързаност", + "hintRecovering": "{count} във възстановяване", + "hintAllHealthy": "всички са изправни", + "hintOpen": "отворени", + "hintConnsCooling": "връзки в период на изчакване", + "hintModelsBlocked": "блокирани модели", + "resilienceTitle": "3-слойна устойчивост", + "resilienceSubtitle": "Следва документирания модел за устойчивост", + "providersHealthy": "{percent}% от доставчиците са изправни", + "layer": "Слой {n}", + "layer1Title": "Прекъсвачи на доставчиците", + "layer1Desc": "Спиране на трафика към доставчици с неизправности на по-горното ниво", + "layer2Title": "Периоди на изчакване за връзките", + "layer2Desc": "Пропускане на един неизправен акаунт/ключ; останалите връзки продължават да обслужват", + "layer3Title": "Блокировки на модели", + "layer3Desc": "Блокировки поради ограничение на заявките за отделните модели; същата връзка продължава да обслужва други модели", + "badgeAffectedOf": "Засегнати: {affected} от {total}", + "badgeCooling": "{count} в период на изчакване", + "badgeLocked": "{count} блокирани", + "emptyCircuits": "Все още няма активни прекъсвачи", + "emptyCooldowns": "Няма активни периоди на изчакване за връзките", + "emptyLockouts": "Няма блокировки на модели", + "moreCooldowns": "+още {count} периода на изчакване", + "moreLockouts": "+още {count} блокировки", + "feedTitle": "Поток на живо", + "feedSubtitle": "Последните {count} събития", + "feedFilterAll": "Всички", + "feedFilterCircuits": "Прекъсвачи", + "feedFilterCooldowns": "Периоди на изчакване", + "feedFilterLockouts": "Блокировки", + "feedFilterSessions": "Сесии", + "feedFilterQuotas": "Квоти", + "feedClear": "Изчистване", + "feedEmptyWaiting": "Изчакване на събития... (проверка на всеки 5 сек.)", + "feedEmptyFiltered": "Няма събития, съответстващи на този филтър", + "sessionsTitle": "Активни сесии", + "sessionsSubtitle": "Отпечатъци на заявки с фиксирано обвързване (на живо)", + "sessionsActive": "{count} активни", + "sessionsEmptyTitle": "Няма активни сесии", + "sessionsEmptyHint": "Сесиите се появяват, когато заявките преминават през проксито", + "tblSession": "Сесия", + "tblAge": "Възраст", + "tblIdle": "Неактивност", + "tblReqs": "Заявки", + "tblBoundTo": "Обвързана с", + "topApiKeys": "Водещи API ключове", + "quotaMonitorsTitle": "Наблюдение на квотите", + "quotaMonitorsSubtitle": "Състояние на квотата в реално време за всеки прозорец на акаунт", + "openQuota": "Отваряне на квотата", + "allQuotasHealthy": "Всички квоти са в норма", + "statusExhausted": "ИЗЧЕРПАНА", + "statusAlerting": "ПРЕДУПРЕЖДЕНИЕ", + "statusError": "ГРЕШКА", + "moreSuffix": "+още {count}" }, "quotaShare": { "weightPercent": "Тегло %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Споделяне на квоти", + "description": "Споделяйте квотите на доставчиците между API ключове с процентни ограничения", + "newPool": "Нов пул", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Конфигурацията се запазва в localStorage (все още не се съхранява на сървъра). Налагането на лимит за всяка заявка все още не е свързано с прокси конвейера. Този екран ви позволява да проектирате и визуализирате разпределението на квотата; реалното налагане ще бъде добавено в бъдеща итерация със съхранение в БД и прихващане на изходящите повиквания.", + "kpiActivePools": "Активни пулове", + "kpiKeysAllocated": "Разпределени ключове", + "kpiAvgUnallocated": "Средно неразпределени", + "kpiProvidersWithQuota": "Доставчици с квота", + "emptyTitle": "Няма конфигурирани пулове", + "emptyDescription": "Създайте пул, за да зададете API ключове, които да споделят квотния прозорец на доставчик с процентно разпределение.", + "loading": "Зареждане…", + "removePool": "Премахване на пула", + "removeConfirm": "Да се премахне ли този пул?", + "pool": "Пул", + "used": "използвано", + "allocationsCount": "Разпределения ({count})", + "allocatedFree": "{allocated}% разпределени · {free}% свободни", + "noAllocations": "Все още няма разпределени ключове", + "capLabel": "лимит {value}", + "notTrackedYet": "(все още не се проследява)", + "policy": "Политика", "apiKeyColumn": "API ключ", "weightColumn": "Тегло", "fairShareShort": "справедливо", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "твърдо", + "policySoft": "меко", + "policyBurst": "пиково", + "policyHardHint": "Блокиране при изчерпване на разпределението за ключа", + "policySoftHint": "Разрешаване на превишаването, само с предупреждение", + "policyBurstHint": "Разрешаване на пиково използване от свободния пул", + "editAllocations": "Редактиране на разпределенията", + "newPoolTitle": "Нов пул с квоти", + "providerConnection": "Връзка с доставчик (акаунт)", + "selectConnection": "Изберете връзка…", + "noEligibleConnections": "Няма връзки с данни за квоти. Първо обновете от /dashboard/quota.", + "quotaWindow": "Период на квотата", + "selectWindow": "Изберете период…", + "alreadyUsedSuffix": "(вече се използва)", + "windowReset": "Нулиране", + "duplicatePoolError": "Вече съществува пул за тази връзка и период", + "cancel": "Отказ", + "createPool": "Създаване на пул", + "editTitle": "Редактиране на разпределенията", + "noKeysAdded": "Няма разпределени ключове. Добавете ключ по-долу.", + "totalLabel": "Общо: {percent}%", + "totalExceeded": "⚠ надвишава 100%", + "addKey": "+ Добавяне на ключ…", + "equalSplit": "Равномерно разпределение", + "save": "Запазване на разпределенията", "betaPreviewLabel": "Бета — преглед на потребителския интерфейс.", "betaConfigSavedPrefix": "Конфигурацията се записва в", "betaConfigSavedSuffix": "(все още не се запазва на сървъра). Налагането на ограничение за всяка заявка все още не е свързано към прокси конвейера. Този екран ви позволява да проектирате и визуализирате разделянето на квотата; реалното прилагане ще се приземи в бъдеща итерация с постоянство на DB и прихващане на повиквания нагоре.", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "Базов URL адрес", "endpointsCollapse": "Свиване", "endpointsExpand": "Разширяване", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Нативен за Anthropic", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — само codex", "betaText": "Quota Share е функционален, но се очакват бъгове. Намерихте ли такъв? Моля, докладвайте го.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "Тази група все още има пулове — първо ги преназначете или изтрийте.", "ungroupedTitle": "Негрупирани", "ungroupedHint": "Тези пулове не са присвоени към позната група. Редактирайте пул, за да го преместите в реална група.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Този пул не можа да бъде премахнат.", + "dismiss": "Затваряне" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Приставки", + "description": "Инсталирайте и управлявайте приставки за разширяване на функционалността на OmniRoute", + "loading": "Зареждане на приставките...", + "scanning": "Сканиране...", + "scanForPlugins": "Сканиране за приставки", + "noPlugins": "Няма инсталирани приставки", + "noPluginsDescription": "Поставете директориите на приставките в ~/.omniroute/plugins/ и щракнете върху „Сканиране“.", + "activate": "Активиране", + "deactivate": "Деактивиране", + "uninstall": "Деинсталиране", + "uninstallConfirm": "Да се деинсталира ли приставката „{name}“?", + "pluginScanComplete": "Сканирането за приставки завърши", + "pluginScanFailed": "Сканирането за приставки не бе успешно", + "activated": "{name} е активирана", + "deactivated": "{name} е деактивирана", + "activateFailed": "Неуспешно активиране на {name}", + "deactivateFailed": "Неуспешно деактивиране на {name}", + "uninstalled": "{name} е деинсталирана", + "uninstallFailed": "Неуспешно деинсталиране на {name}", + "configure": "Конфигуриране: {name}", + "configurePlugin": "Конфигуриране", + "noConfigSettings": "Тази приставка няма настройки за конфигуриране.", + "saving": "Запазване...", + "saveConfiguration": "Запазване на конфигурацията", + "configurationSaved": "Конфигурацията е запазена", + "saveConfigurationFailed": "Неуспешно запазване на конфигурацията", + "pluginNotFound": "Приставката не е намерена", + "version": "Версия", + "author": "Автор", + "description_label": "Описание", + "status": "Състояние", + "enabled": "Активирано", + "disabled": "Деактивирано", "installedTab": "Инсталирани", "marketplaceTab": "Маркетплейс", "marketplaceUrlLabel": "Персонализиран URL за Маркетплейс", @@ -11729,7 +11736,7 @@ "verified": "Потвърден", "install": "Инсталиране", "installedFromMarketplace": "Плъгинът {name} е инсталиран!", - "hooks": "Hooks" + "hooks": "Точки за прихващане" }, "quotaPlans": { "title": "Планове и квоти", @@ -11758,7 +11765,7 @@ "useCatalogButton": "Използване на каталога", "saveOverrideButton": "Запазване на презаписването", "revertToCatalogButton": "Връщане към каталога", - "unknownProviderNotice": "Select a provider on the left to configure its quota plan.", + "unknownProviderNotice": "Изберете доставчик отляво, за да конфигурирате плана му за квоти.", "catalogTitle": "Известен каталог", "catalogDescription": "Автоматично засечени планове за следните доставчици:" }, @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP агенти", "phrase": "CLI, които OmniRoute стартира като бекенд за изпълнение (обратен поток)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Повечето потребители могат да пренебрегнат това — използвайте го само когато дадена интеграция го изисква.", "flow": "Клиент → OmniRoute → стартиране на CLI (stdio/ACP) → отговор", "seeOther": "Вижте →" } @@ -12355,161 +12362,161 @@ }, "omni-cli-tools": { "name": "CLI инструменти", - "description": "Manage CLI tool integrations exposed via the API. List, configure, and invoke CLI tool plugins that extend OmniRoute's automation surface." + "description": "Управлявайте интеграциите с CLI инструменти, достъпни чрез API. Преглеждайте, конфигурирайте и извиквайте приставки за CLI инструменти, които разширяват възможностите за автоматизация на OmniRoute." }, "omni-tunnels": { "name": "Тунели", - "description": "Create and manage secure tunnels (ngrok, Cloudflare Tunnel, custom) to expose OmniRoute to the internet or share access with remote agents and CI pipelines." + "description": "Създавайте и управлявайте защитени тунели (ngrok, Cloudflare Tunnel, персонализирани), за да направите OmniRoute достъпен през интернет или да споделяте достъп с отдалечени агенти и CI конвейери." }, "omni-sync-cloud": { "name": "Облачна синхронизация", - "description": "Synchronise OmniRoute configuration, provider connections, and settings to/from cloud storage. Manage cloud worker authentication and remote backup targets." + "description": "Синхронизирайте конфигурацията, връзките с доставчици и настройките на OmniRoute към/от облачно хранилище. Управлявайте удостоверяването на облачни работни процеси и отдалечените цели за архивиране." }, "omni-db-backups": { "name": "База данни и архиви", - "description": "Trigger system backups, restore from backup files, and manage the SQLite database lifecycle. Supports export, import, and incremental snapshot strategies." + "description": "Задействайте архивиране на системата, възстановявайте от архивни файлове и управлявайте жизнения цикъл на базата данни SQLite. Поддържат се стратегии за експортиране, импортиране и инкрементални моментни снимки." }, "omni-webhooks": { "name": "Уебхукове", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Регистрирайте, изброявайте, тествайте и премахвайте webhook крайни точки. Конфигурирайте абонаменти за събития (request.completed, request.failed, quota.exceeded и др.) и управлявайте повторните опити за доставка." }, "omni-mcp": { "name": "MCP сървър", - "description": "Connect to the OmniRoute MCP server (110 tools, 3 transports: SSE/stdio/HTTP). Covers routing, cache, compression, memory, skills, providers, and audit tools across 33 permission scopes." + "description": "Свържете се с OmniRoute MCP сървъра (110 инструмента, 3 транспорта: SSE/stdio/HTTP). Обхваща инструменти за маршрутизиране, кеширане, компресиране, памет, умения, доставчици и одит в рамките на 33 обхвата на разрешения." }, "omni-agents-a2a": { "name": "Агенти и A2A протокол", - "description": "Interact with OmniRoute via JSON-RPC 2.0 agent-to-agent protocol. 6 built-in A2A skills: smart-routing, quota-management, provider-discovery, cost-analysis, health-report, list-capabilities." + "description": "Взаимодействайте с OmniRoute чрез протокола JSON-RPC 2.0 за комуникация между агенти. 6 вградени A2A умения: smart-routing, quota-management, provider-discovery, cost-analysis, health-report, list-capabilities." }, "omni-version-manager": { "name": "Мениджър на версии", - "description": "Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints." + "description": "Инсталирайте, стартирайте, спирайте, рестартирайте и актуализирайте вградени услуги (9Router, CLIProxyAPI). Наблюдавайте състоянието на услугите, извличайте регистрационни файлове и конфигурирайте автоматично стартиране за крайни точки на услуги, достъпни само локално." }, "omni-inference": { "name": "Инференция (OpenAI-съвместима)", - "description": "The core OpenAI-compatible inference endpoints: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank, and the Responses API. The primary integration surface for AI agents." + "description": "Основните съвместими с OpenAI крайни точки за инференция: довършвания на чат, вграждания, изображения, аудио (TTS/STT), модериране, преранжиране и Responses API. Основната интеграционна повърхност за AI агенти." }, "cli-serve": { - "name": "CLI: Serve", - "description": "Start, stop, and restart the OmniRoute server from the CLI. Manage daemon mode, port configuration, auto-recovery, system tray integration, and the dashboard open shortcut." + "name": "CLI: Обслужване", + "description": "Стартирайте, спирайте и рестартирайте OmniRoute сървъра от CLI. Управлявайте режима на демон, конфигурацията на порта, автоматичното възстановяване, интеграцията със системната област и клавишната комбинация за отваряне на таблото." }, "cli-health": { - "name": "CLI: Health", - "description": "Check server health, component status, and live metrics from the CLI. Run `health`, `health components`, and `health watch` for a real-time dashboard of circuit breakers and provider status." + "name": "CLI: Състояние", + "description": "Проверявайте изправността на сървъра, състоянието на компонентите и показателите в реално време от CLI. Изпълнете `health`, `health components` и `health watch` за табло в реално време за прекъсвачите на веригата и състоянието на доставчиците." }, "cli-providers": { - "name": "CLI: Providers", - "description": "Manage provider connections from the CLI: list available/configured providers, add, test, test-all, validate, rotate API keys, and view per-provider metrics." + "name": "CLI: Доставчици", + "description": "Управлявайте връзките с доставчици от CLI: изброявайте наличните/конфигурираните доставчици, добавяйте, тествайте, тествайте всички, валидирайте, сменяйте API ключове и преглеждайте показателите за всеки доставчик." }, "cli-keys": { - "name": "CLI: API Keys", - "description": "Create, list, rotate, and revoke OmniRoute API keys from the CLI. Manage OAuth flows for provider authentication and inspect key scopes and expiration." + "name": "CLI: API ключове", + "description": "Създавайте, изброявайте, сменяйте и отменяйте OmniRoute API ключове от CLI. Управлявайте OAuth потоци за удостоверяване при доставчици и проверявайте обхватите и срока на валидност на ключовете." }, "cli-models": { - "name": "CLI: Models", - "description": "Query available AI models, list model aliases, and browse the full model catalog from the CLI. Filter by provider, search by capability, and resolve model name variants." + "name": "CLI: Модели", + "description": "Заявявайте наличните AI модели, изброявайте псевдонимите на модели и разглеждайте пълния каталог с модели от CLI. Филтрирайте по доставчик, търсете по възможности и определяйте вариантите на имената на моделите." }, "cli-chat": { - "name": "CLI: Chat", - "description": "Send chat completions, stream responses, and start an interactive REPL session from the CLI. Supports all OmniRoute providers, combo routing, and system prompt configuration." + "name": "CLI: Чат", + "description": "Изпращайте довършвания на чат, предавайте поточно отговори и стартирайте интерактивна REPL сесия от CLI. Поддържа всички доставчици на OmniRoute, комбинирано маршрутизиране и конфигуриране на системни подкани." }, "cli-routing": { - "name": "CLI: Routing & Combos", - "description": "Create, list, update, and delete routing combos from the CLI. Test routing strategies, inspect combo metrics, and configure fallback chains interactively." + "name": "CLI: Маршрутизиране и комбинации", + "description": "Създавайте, изброявайте, актуализирайте и изтривайте комбинации за маршрутизиране от CLI. Тествайте стратегии за маршрутизиране, проверявайте показателите за комбинациите и конфигурирайте интерактивно резервни вериги." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", - "description": "Inspect and manage circuit-breaker states, connection cooldowns, quota limits, and backoff levels from the CLI. Reset stuck providers and configure resilience thresholds." + "name": "CLI: Устойчивост и квоти", + "description": "Проверявайте и управлявайте състоянията на прекъсвачите на веригата, периодите на изчакване за връзки, ограниченията на квотите и нивата на отстъпване от CLI. Нулирайте блокирали доставчици и конфигурирайте прагове за устойчивост." }, "cli-compression": { - "name": "CLI: Compression", - "description": "Configure and test prompt compression from the CLI. Manage RTK filters, Caveman rules, stacked compression modes, and preview compression output with real prompts." + "name": "CLI: Компресиране", + "description": "Конфигурирайте и тествайте компресирането на подкани от CLI. Управлявайте RTK филтри, правила на Caveman, наслагвани режими на компресиране и визуализирайте предварително резултата от компресирането с реални подкани." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", - "description": "Manage context engineering configurations, RTK filter sets, and conversation sessions from the CLI. Apply context-relay settings and inspect active context pipelines." + "name": "CLI: Контексти и сесии", + "description": "Управлявайте конфигурации за контекстно инженерство, набори от RTK филтри и сесии за разговори от CLI. Прилагайте настройки за предаване на контекст и проверявайте активните конвейери за контекст." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", - "description": "View cost breakdowns, token usage, and call logs from the CLI. Filter by provider, model, or date range. Export usage reports and inspect per-connection spending." + "name": "CLI: Разходи и използване", + "description": "Преглеждайте разбивки на разходите, използването на токени и регистрационните файлове на извикванията от CLI. Филтрирайте по доставчик, модел или период от време. Експортирайте отчети за използването и проверявайте разходите за всяка връзка." }, "cli-mcp": { "name": "CLI: MCP", - "description": "Inspect the MCP server status, list registered tools and scopes, run tool invocations, and manage MCP audit logs from the CLI." + "description": "Проверявайте състоянието на MCP сървъра, изброявайте регистрираните инструменти и обхвати, изпълнявайте извиквания на инструменти и управлявайте журналите за одит на MCP от CLI." }, "cli-a2a": { "name": "CLI: A2A protocol", - "description": "Interact with the OmniRoute A2A server from the CLI. Send tasks, inspect skill execution history, and test the JSON-RPC 2.0 agent-to-agent protocol interactively." + "description": "Взаимодействайте с OmniRoute A2A сървъра от CLI. Изпращайте задачи, проверявайте хронологията на изпълнение на уменията и тествайте интерактивно протокола JSON-RPC 2.0 за комуникация между агенти." }, "cli-tunnel": { - "name": "CLI: Tunnels", - "description": "Start and stop tunnel connections (ngrok, Cloudflare, custom) from the CLI. Inspect active tunnel URLs, configure authentication, and test external reachability." + "name": "CLI: Тунели", + "description": "Стартирайте и спирайте тунелни връзки (ngrok, Cloudflare, персонализирани) от CLI. Проверявайте URL адресите на активните тунели, конфигурирайте удостоверяването и тествайте външната достъпност." }, "cli-backup-sync": { - "name": "CLI: Backup & Sync", - "description": "Backup and restore OmniRoute data from the CLI. Trigger incremental snapshots, sync to cloud storage, manage backup schedules, and restore from archive files." + "name": "CLI: Архивиране и синхронизиране", + "description": "Архивирайте и възстановявайте данни на OmniRoute от CLI. Задействайте инкрементални моментни снимки, синхронизирайте с облачно хранилище, управлявайте графици за архивиране и възстановявайте от архивни файлове." }, "cli-policy-audit": { - "name": "CLI: Policy & Audit", - "description": "Inspect audit logs, manage access policies, view telemetry data, and review request history from the CLI. Filter by event type, user, or time range for compliance workflows." + "name": "CLI: Политики и одит", + "description": "Проверявайте журналите за одит, управлявайте политики за достъп, преглеждайте телеметрични данни и хронологията на заявките от CLI. Филтрирайте по тип събитие, потребител или времеви диапазон за работни процеси по съответствие." }, "cli-batches": { - "name": "CLI: Batches & Files", - "description": "Submit and monitor batch inference jobs from the CLI. Upload and manage files for batch processing, retrieve results, and integrate batch pipelines with CI/CD workflows." + "name": "CLI: Пакетни задачи и файлове", + "description": "Изпращайте и наблюдавайте пакетни задачи за инференция от CLI. Качвайте и управлявайте файлове за пакетна обработка, извличайте резултати и интегрирайте пакетни конвейери с CI/CD работни процеси." }, "cli-eval": { - "name": "CLI: Evals", - "description": "Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI." + "name": "CLI: Оценявания", + "description": "Създавайте и изпълнявайте набори за оценяване, следете напредъка на тестовете в реално време, преглеждайте карти с резултати, сравнявайте производителността на моделите и интегрирайте изпълненията на оценки с CI работни процеси от CLI." }, "cli-plugins-skills": { - "name": "CLI: Plugins, Skills & Memory", - "description": "Manage Omni Skills (list, install, test, remove), plugins (create, configure), and persistent memory (search, add, clear) from the CLI." + "name": "CLI: Плъгини, умения и памет", + "description": "Управлявайте Omni Skills (преглед, инсталиране, тестване, премахване), плъгини (създаване, конфигуриране) и постоянна памет (търсене, добавяне, изчистване) чрез CLI." }, "cli-setup": { - "name": "CLI: Setup & Config", - "description": "Run initial setup, configure global CLI settings, manage environment variables, check for updates, and configure autostart via the CLI setup and config commands." + "name": "CLI: Настройка и конфигурация", + "description": "Извършете първоначалната настройка, конфигурирайте глобалните настройки на CLI, управлявайте променливите на средата, проверявайте за актуализации и конфигурирайте автоматичното стартиране чрез командите за настройка и конфигурация на CLI." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", - "description": "Detect installed CLI coding tools (Claude Code, Codex, Cursor, Copilot, Cline and more), search GitHub for matching agent skills, and install them to the detected tools via OmniRoute's built-in APIs." + "name": "CLI: Събиране на агентски умения", + "description": "Откривайте инсталирани CLI инструменти за програмиране (Claude Code, Codex, Cursor, Copilot, Cline и други), търсете в GitHub съответстващи агентски умения и ги инсталирайте в откритите инструменти чрез вградените API на OmniRoute." }, "config-codex-cli": { - "name": "Config: Codex CLI", - "description": "Step-by-step agent workflow to configure the OpenAI Codex CLI on any machine (Linux, macOS, Windows) to use OmniRoute as an OpenAI-compatible backend. Detects OS and shell, writes config.toml and 7 named profiles, sets environment variables, and verifies the setup." + "name": "Конфигурация: Codex CLI", + "description": "Поетапен агентски работен процес за конфигуриране на OpenAI Codex CLI на всяка машина (Linux, macOS, Windows), така че да използва OmniRoute като съвместим с OpenAI бекенд. Открива операционната система и обвивката, записва config.toml и 7 именувани профила, задава променливи на средата и проверява настройката." }, "omni-github-skills": { - "name": "GitHub Skill Discovery", - "description": "Search, score, scan, and import agent skills from GitHub repositories that contain SKILL.md, CLAUDE.md, .cursorrules, and similar agent skill files. Discover community skills across 160+ provider categories, evaluate relevance with heuristic scoring, check for malware or hardcoded secrets, and install into Hermes, Claude Code, Gemini CLI, or OpenCode agent directories." + "name": "Откриване на умения в GitHub", + "description": "Търсете, оценявайте, сканирайте и импортирайте агентски умения от хранилища в GitHub, съдържащи SKILL.md, CLAUDE.md, .cursorrules и подобни файлове с агентски умения. Откривайте умения от общността в над 160 категории доставчици, оценявайте релевантността чрез евристично точкуване, проверявайте за зловреден софтуер или твърдо кодирани тайни и инсталирайте в директориите за агенти на Hermes, Claude Code, Gemini CLI или OpenCode." } }, - "pageTitle": "Agent Skills", - "pageSubtitle": "Teach your agent to operate OmniRoute — 23 API areas + 21 CLI families", + "pageTitle": "Агентски умения", + "pageSubtitle": "Научете агента си да работи с OmniRoute — 23 API области + 21 CLI семейства", "conceptCard": { "agent": { - "title": "Agent Skills — Outbound", - "description": "Agent Skills are machine-readable SKILL.md documents that external AI agents (Claude Code, Cursor, Copilot…) fetch from GitHub to learn how to operate OmniRoute via REST or CLI. They are read by the agent, not executed by OmniRoute.", - "crossLinkLabel": "Understand the difference →" + "title": "Агентски умения — изходящи", + "description": "Агентските умения са машинночетими документи SKILL.md, които външни AI агенти (Claude Code, Cursor, Copilot…) извличат от GitHub, за да се научат как да работят с OmniRoute чрез REST или CLI. Те се четат от агента, а не се изпълняват от OmniRoute.", + "crossLinkLabel": "Разберете разликата →" }, "omni": { - "title": "Omni Skills — Inbound", - "description": "Omni Skills are sandbox tools that OmniRoute injects into the model's context on every request. They are executed by OmniRoute, not read by the agent.", - "crossLinkLabel": "Understand the difference →" + "title": "Omni Skills — входящи", + "description": "Omni Skills са инструменти в защитена среда, които OmniRoute добавя към контекста на модела при всяка заявка. Те се изпълняват от OmniRoute, а не се четат от агента.", + "crossLinkLabel": "Разберете разликата →" }, "comparison": { - "colAgent": "Agent Skills", - "colOmni": "Omni Skills", + "colAgent": "Агентски умения", + "colOmni": "Omni умения", "whatIs": { - "label": "What it is", - "agent": "Machine-readable SKILL.md that teaches an external agent to operate OmniRoute", - "omni": "Executable tools that OmniRoute injects as tools into LLM requests" + "label": "Какво представлява", + "agent": "Машинночетим SKILL.md, който учи външен агент да работи с OmniRoute", + "omni": "Изпълними инструменти, които OmniRoute добавя като инструменти към заявките към LLM" }, "direction": { - "label": "Direction", - "agent": "Outbound — external agent learns to control OmniRoute", - "omni": "Inbound — OmniRoute gives tools to models passing through it" + "label": "Посока", + "agent": "Изходяща — външен агент се научава да управлява OmniRoute", + "omni": "Входяща — OmniRoute предоставя инструменти на преминаващите през него модели" }, "executor": { - "label": "Executor", + "label": "Изпълнител", "agent": "Външен агент (чете markdown → действа чрез API/CLI)", "omni": "Самият OmniRoute (прихваща tool_calls, Docker sandbox)" }, @@ -12589,14 +12596,14 @@ "typeApikey": "API ключ", "sortTypeFirst": "Най-лесните първо", "sortTypeFirstHelp": "Групиране по усилие за регистрация (Без регистрация → Вход с OAuth → API ключ), запазвайки подредбата по качество във всяка група", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Първо най-надеждните", + "sortByReliabilityHelp": "Подредете доставчиците според дела на успешните повиквания в избрания период. Доставчиците с твърде малко повиквания за определяне на процент запазват подредбата си по оценка под тези с измерени резултати.", "typeLegend": "Без регистрация = нулева настройка · Вход с OAuth = влизане със собствен акаунт · API ключ = използване на собствен ключ или безплатния план на доставчика", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Надеждност", + "colReliabilityHelp": "Дял на повикванията, на които този доставчик действително е отговорил през последните 24 часа. Тире означава, че е обслужил твърде малко трафик, за да бъде посочен процент.", + "reliabilitySample": "{successes} от {requests} повиквания бяха успешни през последните {hours} ч.", + "reliabilityTooFew": "Само {requests} повиквания през последните {hours} ч. — твърде малко за определяне на процент", + "reliabilityNoTraffic": "Няма регистрирани повиквания през последните 24 ч." }, "discovery": { "title": "Откриване на доставчици", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Поддръжник на Radar", + "description": "Потвърден активен поток от поддръжник на OmniRoute Radar", + "criteria": "Проверете подписан канал на живо за поддръжници на Radar." }, "first-token": { "name": "Първи токен", @@ -12948,8 +12955,8 @@ "description": "Разрешаване на множество връзки за всеки възел за съвместимост." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Деактивиране на проверките на контекстния прозорец", + "description": "Пропускайте локалната проверка на OmniRoute за контекстния прозорец и максималния брой входни токени при директни заявки към единичен модел. Доставчиците нагоре по веригата продължават да налагат действителните си ограничения. Компресирането на подканите и ограниченията за изходните токени остават активни." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Премахване на вътрешните изходни елементи от фазата на коментари от транзитните потоци на Responses API, преди да бъдат препратени към клиентите. Деактивирайте този флаг, за да получавате необработени коментари от източника." @@ -12985,7 +12992,7 @@ "description": "Разрешаване на възстановяването на потока да поиска отговора отново и да го съедини, след като байтовете вече са достигнали до клиента." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Направете продължаването по средата на потока безопасно за извиквания на инструменти: никога не възобновявайте прекъснат поток, след като е изпратено извикване на инструмент (все още изпълняващо се или вече завършило), и спрете след едно празно продължение, вместо да използвате целия лимит за повторни опити." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Еднократно превключване към сродна връзка, когато потокът се затвори, преди да изпрати полезен фрейм, и ограниченият повторен опит на същата връзка е изчерпан. Ако няма използваема сродна връзка, се връща оригиналната грешка early-EOF. Изключено: early-EOF остава окончателен след повторния опит." @@ -13012,7 +13019,7 @@ "description": "След синхронизиране на доставчик-модел, регенериране на ~/.codex/*.config.toml профили от каталога на живо. Това никога не променя активната или подразбиращата се конфигурация на Codex и е изключено по подразбиране." }, "OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES": { - "description": "After provider-model synchronization, regenerate ~/.claude/profiles/''/settings.json profiles from the live catalog. This never changes the active or default Claude configuration and is off by default." + "description": "След синхронизирането на моделите на доставчиците генерирайте отново профилите ~/.claude/profiles/''/settings.json от актуалния каталог. Това никога не променя активната или стандартната конфигурация на Claude и по подразбиране е изключено." }, "OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK": { "description": "Деактивиране на крайната точка за проверка на състоянието на локалния екземпляр." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Активиране на мрежов достъп в пясъчника за умения." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Управляван от сървъра цикъл за инструменти", + "description": "Продължавайте нестрийминг извикванията на инструменти, управлявани от сървъра, докато моделът върне отговор, който може да се използва от клиента." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Произход на Retry-After", + "description": "При обобщени отговори 429/503 за недостъпност пропускайте Retry-After, когато не е известно конкретно бъдещо време за повторен опит, вместо да изпращате синтетична стойност от 1s; добавете error.retry_after_provenance и разпознавайте текстови указания за повторен опит в пътищата за изчерпване на комбинацията." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Спирания на инфраструктурата с защитен приоритет като 502", + "description": "Връщайте 502 вместо 503, когато цел с приоритет и резервен вариант само при изчерпана квота спре комбинацията по причина, за която може да се докаже, че не е свързана с квота: отворен прекъсвач на веригата на доставчика или прогнозно пропускане поради латентност." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Състояние на комбинацията", "callLogs": "Логове на повикванията", "costs": "Разходи", - "playground": "Playground", + "playground": "Тестова среда", "nestedCombo": "Вложена комбинация", "modelTarget": "Цел на модела", "weight": "{value}% тегло", @@ -13171,7 +13182,7 @@ "segmentHint": "Всеки сегмент = един безплатен пул · дедупликиран пул, честно отчитане (без изкуствено завишени тавани на лимитите за скорост).", "boost": "Отключете още ~{tokens}/месец с еднократно допълване от $10 в OpenRouter (50 → 1000 заявки/ден)", "uncapped": "Постоянно безплатно, без публикуван лимит (с ограничение на скоростта) — реален достъп, който не се отчита в заглавието:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "Още ~{tokens}/месец след регионална проверка на самоличността (напр. проверка с истинско име в континентален Китай) — реална квота, която не е включена в обявената основна стойност:", "tosRestricted": "{count, plural, one {# модел е маркиран като ограничен от Условията за ползване — вие решавате} other {# модела са маркирани като ограничени от Условията за ползване — вие решавате}}", "provider": "Доставчик", "model": "Модел", @@ -13230,7 +13241,7 @@ }, "remainingSeconds": "оставащи {seconds} сек.", "errorCode": "код {code}", - "applying": "Applying...", + "applying": "Прилагане...", "issue": { "circuitOpenTitle": "Прекъсвачът на доставчика е отворен", "circuitOpenRecommendation": "Проверете възстановяването нагоре по веригата, след което нулирайте прекъсвача на доставчика или изчакайте прозореца за повторен опит.", @@ -13270,80 +13281,80 @@ "viewFullHistory": "Преглед на пълната история в GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "Правила за маршрутизиране на разсъжденията", + "apiKeyTitle": "Маршрутизиране на разсъжденията за този API ключ", + "subtitle": "Пренасочвайте моделите и степента на разсъждение, без да е необходима поддръжка от клиента. Заявките остават непроменени, когато няма съответстващо правило.", + "loadError": "Правилата за разсъждение не можаха да бъдат заредени.", + "saveError": "Правилото е невалидно или не можа да бъде запазено.", + "saved": "Правилото за разсъждение е запазено.", + "deleteConfirm": "Да се изтрие ли това правило за разсъждение?", + "deleteError": "Правилото за разсъждение не можа да бъде изтрито.", + "empty": "Няма конфигурирани съответстващи правила за разсъждение.", + "all": "Всички", + "any": "Произволно", + "enabled": "Активирано", + "disabled": "Деактивирано", + "filterSearch": "Търсене на правила", + "filterScope": "Филтриране по обхват", + "filterStatus": "Филтриране по състояние", + "allModels": "всички модели", + "keepModel": "Запазване на модела", + "otherModel": "Друг модел", + "combo": "Комбинация", + "priorityShort": "приоритет {value}", + "toggleAria": "Активиране на {name}", + "edit": "Редактиране", + "delete": "Изтриване", + "name": "Име", + "description": "Описание", + "scopeLabel": "Обхват", + "apiKey": "API ключ", + "sourceCombo": "Изходна комбинация", + "connection": "Връзка", + "sourceModel": "Модел източник или заместващ шаблон", + "sourceModelOptional": "Празно = всички модели", + "sourceModelExample": "напр. gpt-5*", + "sourceEffort": "Ниво на усилие на източника", + "missing": "Не е посочено", + "signalOnly": "Недискретен сигнал за разсъждение", + "requestTags": "Етикети на заявката", + "requestTagsExample": "програмиране, вътрешни", + "tagMode": "Съпоставяне на етикети", + "effortMode": "Режим на усилие", + "targetEffort": "Целево ниво на усилие", + "routingTarget": "Цел за маршрутизиране", + "targetModel": "Целеви модел", + "targetCombo": "Целева комбинация", + "budgetAction": "Бюджет за разсъждение", + "budgetTokens": "Токени в бюджета", + "priority": "Приоритет", + "saveChanges": "Запазване на промените", + "add": "Добавяне на правило", + "cancel": "Отказ", + "simulateTitle": "Симулиране на правило", + "model": "Модел", + "effort": "Усилие", + "transport": "Транспорт", + "simulate": "Симулиране без услуга нагоре по веригата", + "extendedComboWarning": "Max/Ultra се валидира отделно за всяка целева комбинация по време на маршрутизирането.", + "extendedUnknownWarning": "Въведете целеви модел, за да проверите поддръжката на Max/Ultra.", + "extendedUnsupportedWarning": "Известно е, че Max/Ultra се поддържа само от подходящи модели Codex GPT-5.6. Неизвестните персонализирани модели се приемат от сървъра с предупреждение.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "Глобално", + "apiKey": "API ключ", + "combo": "Комбинация", + "model": "Модел", + "connection": "Връзка" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Наследяване от клиента", + "default": "Използване на стойността по подразбиране", + "force": "Принудително задаване" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Запазване", + "remove": "Премахване", + "set": "Задаване на фиксирана стойност" } }, "chaosConfig": { @@ -13425,91 +13436,91 @@ "tierCommunity": "Общност (30-дневно закъснение)", "activateTitle": "Активирайте радара", "activateDescription": "Радарът обогатява безплатния модел каталог с информация от общността — актуализирана наличност на модели, квоти и ръководства за настройка.", + "accessScaleTitle": "Разберете условията за достъп до Radar, преди да го активирате", + "accessScaleIntro": "Radar не осъществява мрежова комуникация, докато не дадете съгласие. Изберете достъп Community или активирайте личен ключ за поддръжник, след като прегледате тези правила.", + "accessCommunityRule": "Community — не се изисква ключ: пълният каталог със закъснение от 30 дни.", + "accessSingleUseRule": "Звезда + следване — след като GitHub OAuth потвърди и двете, профилът ви в GitHub получава еднократен достъп до актуалния каталог; след това достъпът се връща към Community. Този еднократен достъп не може да бъде предоставен повторно на същия профил.", + "accessContributorRule": "Сътрудници — обединените PR-и, комитите и редовете определят единствено седмичното класиране. Първите 10 получават 365 дни; класираните от 11-о до 100-тно място получават 90 дни; сътрудниците извън първите 100 не получават достъп, независимо от броя на PR-ите. Отпадането от класацията никога не съкращава вече предоставения период.", + "accessSupporterRule": "Поддръжници — еднократните покупки предоставят 6 месеца, 1 година или доживотен достъп без автоматично подновяване. Покупките, даренията, периодите за сътрудници и ръчно предоставените периоди се натрупват; доживотният достъп винаги има предимство.", + "accessUseTitle": "Лична употреба, възстановяване и проверка", + "accessInstallationRule": "Личен лиценз — използвайте ключа само на една активна инсталация във всеки един момент. OmniRoute не снема цифров отпечатък на хардуера. Възстановяването анулира и заменя изгубен ключ, без да нулира срока му на валидност.", + "accessAbuseRule": "Проверка за злоупотреба — четвъртият различен IP адрес в рамките на 24 часа единствено създава сигнал за ръчна проверка; това никога не блокира или анулира автоматично ключа.", + "accessOffersRule": "Актуалните оферти се подбират ръчно и могат да бъдат променени или да изтекат.", + "privacyTitle": "Какви данни обменя Radar", + "privacyDownloadsRule": "Изтегля — инсталацията ви получава криптографски подписани метаданни за каталога и препоръчаните връзки; валиден ключ за актуален достъп отключва също подписани оферти и Intel.", + "privacySendsRule": "Изпраща — синхронизирането от страна на сървъра изпраща ключа за поддръжник като Bearer token, а HTTPS инфраструктурата получава IP адреса на връзката. При отчитането на заявките към емисията нито една от тези стойности не се съхранява в необработен вид: съхраняват се хешове на ключовете, обобщени данни за използването и ежедневно сменящ се съкратен IP HMAC за проверка за злоупотреба.", + "privacyNeverRule": "Никога не се събират — подканите, отговорите, разговорите, идентификационните данни за доставчиците, трафикът към моделите, времето на работа, латентността и локалната конфигурация на доставчиците никога не се изпращат към Radar.", "activateButton": "Активирайте", "activating": "Активиране...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", + "keySectionTitle": "Вече имате ключ за поддръжник?", + "keyInvalidFormatError": "Невалиден формат на ключа. Той трябва да започва с \"omr_\", последвано от 40 шестнадесетични знака.", + "activateWithKeyButton": "Активиране като поддръжник", + "changeKeyButton": "Промяна на ключа", + "claimSectionTitle": "Все още нямате ключ за поддръжник?", + "contributorButton": "Аз съм сътрудник", + "contributorHint": "GitHub OAuth проверява текущото седмично класиране: първите 10 получават 365 дни, а класираните от 11-о до 100-тно място — 90 дни. Само броят на PR-ите никога не предоставя достъп извън първите 100.", + "supporterButton": "Подкрепете проекта", "supporterHint": "Support OmniRoute to get a supporter key with the live catalog and extra perks.", "colProvider": "Доставчик", "colModel": "Модел", "colQuota": "Квота", + "colLimits": "Ограничения на заявките", + "trainsOnPrompts": "Обучава се с подканите", + "trainsOnPromptsHelp": "Условията на този доставчик посочват, че той може да обучава моделите си с изпратените от вас подкани. Моделите без тази значка или заявяват, че не го правят, или не го документират — липсата на изявление не е гаранция.", + "limitsUnknownHelp": "Ограниченията са посочени само от емисията на Radar; няма публикувани ограничения за този запис", + "contextUnknownHelp": "Контекстният прозорец за този запис е неизвестен", + "capabilityUnknownHelp": "Възможността не е посочена от емисията", "colContext": "Контекст", "colCapabilities": "Възможности", "colTos": "Риск от ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "нов", "setupGuide": "Ръководство за настройка", "disabledByFeed": "Деактивирано от фийда на радара", "capTools": "Инструменти", "capVision": "Визия", "capThinking": "Мислене", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Каталог", + "freeCreditsTab": "Безплатни кредити", + "freeCreditsSubtitle": "Препоръчани връзки от проследявани от Radar доставчици — използването им не ви струва нищо допълнително и помага за поддръжката на OmniRoute.", + "fixedLinksEmpty": "Все още няма налични препоръчани връзки. Синхронизирайте Radar, за да проверите за актуализации.", + "requiredActionLabel": "Какво да направите:", + "claimButton": "Получаване на кредити", + "campaignsTitle": "Кампании с ограничена продължителност", + "campaignsEmpty": "В момента няма активни кампании — проверете отново по-късно.", + "campaignsUpsellCommunity": "Кампаниите с ограничена продължителност са допълнително предимство за поддръжниците. Всички постоянни връзки на тази страница остават безплатни за всички.", + "campaignsValidUntil": "Валидно до {date}", + "colActions": "Действия", + "localBadge": "локално", + "editModel": "Редактиране", + "saveModel": "Запазване", + "cancelEdit": "Отказ", + "resetModel": "Нулиране на локалните промени", + "hideModel": "Скриване", + "restoreModel": "Възстановяване", + "hiddenModelsTitle": "Скрити модели", + "modelDisplayName": "Локално име за показване", + "modelEnabled": "Активирано локално", + "localStateSaveFailed": "Неуспешно запазване на локалните настройки на Radar", + "guidedCombos": "Препоръчани комбинации", + "offers": "Оферти", + "intel": "Информация" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Препоръчани от Radar комбинации", + "subtitle": "Създайте приоритетни резервни варианти от еквивалентни безплатни модели, подбрани от Radar.", + "backToRadar": "Назад към Radar", + "loading": "Зареждане на предложенията за комбинации...", + "familyLabel": "Семейство модели", + "modelsLabel": "Ред на приоритет", + "strategyReason": "Приоритетът първо използва най-големия периодично подновяван безплатен лимит, след което преминава към резервни варианти сред активните доставчици.", + "generateButton": "Генериране на комбинация", + "generating": "Генериране...", + "alreadyCreated": "Вече е създадена", + "created": "Комбинацията е създадена", + "noSuggestions": "В момента няма отговарящо на условията семейство модели с активни връзки към поне двама доставчици.", + "catalogRequired": "Първо синхронизирайте каталога на Radar, за да заредите подбраните семейства модели.", + "loadFailed": "Неуспешно зареждане на предложенията за комбинации от Radar.", + "createFailed": "Неуспешно създаване на комбинацията. Прегледайте връзките си с доставчиците и опитайте отново." }, "radarSetupPage": { "title": "Настройка на доставчика", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "Устойчивост на Връзката", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Връзките ви се възстановяват автоматично", + "reassuranceDetail": "Обикновено не е необходимо действие. След неуспешни опити OmniRoute временно поставя връзката в режим на изчакване, след което безопасно опитва отново.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Заявките могат да бъдат изпращани", + "coolingDown": "Скоро ще бъде направен нов опит", + "lockedOut": "Изисква вниманието ви" }, "table": { "status": "Статус", @@ -13598,7 +13609,7 @@ "remaining": "Оставащо", "noLockouts": "Няма активни заключвания", "provider": "Доставчик", - "id": "ID", + "id": "Идентификатор", "authType": "Тип на Удостоверяване", "priority": "Приоритет", "isActive": "Активен", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Отхвърлете заявките преди изпращане, когато целевият модел няма необходимите възможности (визия, инструменти, структурирани изходи, контекстен прозорец). Защитава директните заявки от един доставчик, които заобикалят филтъра за съвместимост на комбинирания слой.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Пропускане на локалната проверка на OmniRoute за контекстния прозорец и максималния брой входни токени при директни заявки към един модел. Външните доставчици продължават да налагат действителните си ограничения. Компресирането на подканите и ограниченията за изходните токени остават активни.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Статистиката за търсенията и скорошните търсения отчитат само доставчици, които все още имат активна връзка (доставчиците без ключ, като duckduckgo-free, винаги се отчитат). При „Изключено“ се запазва всеки съхранен запис за търсене с идентификатор на доставчик.", "publicSystem": { "notFound": { "title": "Страницата не е намерена", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "Информация за поддръжка", "service": "Услуга", "unknown": "неизвестен", - "notAvailable": "n/a", + "notAvailable": "няма", "providersTracked": "Проследявани доставчици", "circuitBreakerState": "Състояние на прекъсвача на доставчика", "lastUpdate": "Последно обновление: {timestamp}", @@ -14070,11 +14081,11 @@ "actionApprove": "Одобри плана", "actionCancel": "Отказ", "actionSeeInGraph": "Виж в графа", + "actionRepeat": "Повтори", "actionDone": "Действието е приложено", "actionFailed": "Действието се провали: {error}", "detailFailed": "Неуспешно зареждане на детайлите: {error}", "mirroredInA2A": "Отразено в A2A", - "actionRepeat": "Повтори", "repeatConfirm": "Кликнете отново, за да потвърдите", "repeatDone": "Създадено е ново изпълнение", "repeatUnavailable": "Оригиналният вход не е наличен" @@ -14088,57 +14099,57 @@ "networkError": "Грешка в мрежата — не можа да актуализира настройката за експозиция на доставчика" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Оферти за поддръжници", + "subtitle": "Официални отстъпки, кредити, пробни периоди и проверени партньорски предимства от Radar.", + "backToRadar": "Назад към Radar", + "loading": "Офертите се зареждат...", + "refresh": "Обновяване на офертите", + "refreshing": "Обновяване...", + "loadFailed": "Не успяхме да обновим офертите. Последният проверен локален кеш е запазен.", + "empty": "В момента няма активни оферти.", + "keyRequiredTitle": "Необходим е ключ за поддръжник", + "keyRequiredDescription": "Офертите са активно предимство на Radar. Добавете съществуващ ключ за поддръжник на екрана Radar, потвърдете статуса си на сътрудник или подкрепете проекта, за да получите такъв.", + "contributorButton": "Аз съм сътрудник", + "supporterButton": "Подкрепете проекта", + "partnerBadge": "Партньор", + "officialBadge": "Официално", + "conditionsLabel": "Условия:", + "validUntil": "Валидно до {date}", + "noExpiry": "Няма обявен срок на валидност", + "openOffer": "Преглед на офертата", + "trialDays": "{days, plural, one {# ден} other {# дни}}" }, "radarIntelPage": { "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "subtitle": "ELO класации, поддържани от Radar, и фактическо движение в каталога.", + "backToRadar": "Назад към Radar", + "loading": "Intel се зарежда...", + "refresh": "Обновяване на Intel", + "syncing": "Обновяване...", + "loadFailed": "Не успяхме да обновим Intel. Последният проверен локален кеш е запазен.", + "empty": "Все още няма налична проверена моментна снимка на Intel.", + "supporterBadge": "Поддръжник на Radar", + "methodology": "Методология", + "eloMethod": "ELO, начална стойност {initial}, K={factor}", + "freshness": "Актуалност на каталога", + "ageDays": "{days, plural, one {на # ден} other {на # дни}}", + "trend": "Тенденция на каталога", + "modelDelta": "{current} модела, +{added} / -{removed}", + "ranking": "Класация на моделите", + "noRankings": "Все още няма налични потвърдени сравнения.", + "model": "Модел", + "category": "Категория", + "rating": "Оценка", + "matches": "Съвпадения", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Нови", + "aging": "Остаряващи", + "stale": "Остарели" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Нарастващи", + "stable": "Стабилни", + "shrinking": "Намаляващи" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Заявката надвишава контекстния прозорец на доставчика" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference е приятел на OmniRoute с отворен код", + "description": "Шлюз с класиране по цена, който препродава десетки авангардни модели чрез една крайна точка, съвместима с OpenAI — насочвайки всяка заявка към най-евтиния допустим доставчик, без никога да надвишава каталожната цена.", + "cta": "Получаване на API ключ", + "partnerLinkNote": "Партньорска връзка", + "dismissAriaLabel": "Затваряне" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Деактивирайте генерирането на варианти за ниво на разсъждение (напр. -low, -medium, -high) в каталога /v1/models." } diff --git a/src/i18n/messages/bn.json b/src/i18n/messages/bn.json index 6ddf474014..33d5905565 100644 --- a/src/i18n/messages/bn.json +++ b/src/i18n/messages/bn.json @@ -1,15 +1,15 @@ { "common": { - "save": "Save", - "cancel": "Cancel", - "delete": "Delete", - "loading": "Loading...", + "save": "সংরক্ষণ করুন", + "cancel": "বাতিল করুন", + "delete": "মুছুন", + "loading": "লোড হচ্ছে...", "selectOption": "একটি বিকল্প নির্বাচন করুন", - "error": "An error occurred", - "success": "Success", - "confirm": "Are you sure?", - "refresh": "Refresh", - "close": "Close", + "error": "একটি ত্রুটি ঘটেছে", + "success": "সফল হয়েছে", + "confirm": "আপনি কি নিশ্চিত?", + "refresh": "রিফ্রেশ করুন", + "close": "বন্ধ করুন", "previousPage": "পূর্ববর্তী পৃষ্ঠা", "nextPage": "পরবর্তী পৃষ্ঠা", "capsLockOn": "Caps Lock চালু আছে", @@ -17,142 +17,142 @@ "toggleColumns": "কলাম টগল করুন", "confirmTitle": "নিশ্চিত করুন", "confirmAction": "নিশ্চিত করুন", - "add": "Add", - "edit": "Edit", - "search": "Search", - "back": "Back", - "next": "Next", - "submit": "Submit", - "reset": "Reset", - "copy": "Copy", - "copied": "Copied!", - "enabled": "Enabled", - "disabled": "Disabled", - "active": "Active", - "inactive": "Inactive", - "noData": "No data available", - "nothingHere": "Nothing here yet", - "configure": "Configure", + "add": "যোগ করুন", + "edit": "সম্পাদনা করুন", + "search": "অনুসন্ধান করুন", + "back": "পেছনে", + "next": "পরবর্তী", + "submit": "জমা দিন", + "reset": "রিসেট করুন", + "copy": "কপি করুন", + "copied": "কপি করা হয়েছে!", + "enabled": "সক্রিয় করা হয়েছে", + "disabled": "নিষ্ক্রিয় করা হয়েছে", + "active": "সক্রিয়", + "inactive": "নিষ্ক্রিয়", + "noData": "কোনো ডেটা নেই", + "nothingHere": "এখানে এখনো কিছু নেই", + "configure": "কনফিগার করুন", "manualConfig": "ম্যানুয়াল কনফিগ", - "manage": "Manage", - "name": "Name", - "actions": "Actions", - "status": "Status", - "type": "Type", + "manage": "পরিচালনা করুন", + "name": "নাম", + "actions": "কার্যক্রম", + "status": "স্থিতি", + "type": "ধরন", "model": "Model", - "models": "models", - "provider": "Provider", + "models": "মডেল", + "provider": "প্রদানকারী", "unknownProvider": "অজানা প্রদানকারী", - "account": "Account", - "time": "Time", - "details": "Details", - "created": "Created", - "lastUsed": "Last Refreshed", - "loadMore": "Load More", - "noResults": "No results found", - "reloadPage": "Reload Page", - "connected": "Connected", - "disconnected": "Disconnected", - "notConfigured": "Not configured", - "testConnection": "Test Connection", - "enable": "Enable", - "disable": "Disable", - "columns": "Columns", - "newest": "Newest", - "oldest": "Oldest", - "all": "All", - "none": "None", - "yes": "Yes", - "no": "No", + "account": "অ্যাকাউন্ট", + "time": "সময়", + "details": "বিস্তারিত", + "created": "তৈরি করা হয়েছে", + "lastUsed": "সর্বশেষ রিফ্রেশ", + "loadMore": "আরও লোড করুন", + "noResults": "কোনো ফলাফল পাওয়া যায়নি", + "reloadPage": "পৃষ্ঠা পুনরায় লোড করুন", + "connected": "সংযুক্ত", + "disconnected": "সংযোগ বিচ্ছিন্ন", + "notConfigured": "কনফিগার করা হয়নি", + "testConnection": "সংযোগ পরীক্ষা করুন", + "enable": "সক্রিয় করুন", + "disable": "নিষ্ক্রিয় করুন", + "columns": "কলামসমূহ", + "newest": "সর্বশেষ", + "oldest": "সবচেয়ে পুরোনো", + "all": "সব", + "none": "কোনোটিই নয়", + "yes": "হ্যাঁ", + "no": "না", "on": "চালু", "off": "বন্ধ", - "warning": "Warning", - "note": "Note", - "free": "Free", - "skipToContent": "Skip to content", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", - "accept": "Accept", - "accountId": "Account ID", + "warning": "সতর্কতা", + "note": "দ্রষ্টব্য", + "free": "বিনামূল্যে", + "skipToContent": "মূল বিষয়বস্তুতে যান", + "maintenanceServerIssues": "সার্ভারে সমস্যা হচ্ছে। কিছু ফিচার অনুপলব্ধ থাকতে পারে।", + "maintenanceServerUnreachable": "সার্ভারে পৌঁছানো যাচ্ছে না। পুনরায় সংযোগ করা হচ্ছে...", + "accept": "গ্রহণ করুন", + "accountId": "অ্যাকাউন্ট আইডি", "alias": "Alias", - "apiKeyId": "API Key ID", - "apiKeyName": "API Key Name", - "apiKeySecret": "API Key Secret", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "apiKeyId": "API কী আইডি", + "apiKeyName": "API কী-এর নাম", + "apiKeySecret": "API কী-এর গোপন মান", + "authorization": "অনুমোদন", + "content-type": "কনটেন্টের ধরন", + "content-length": "কনটেন্টের দৈর্ঘ্য", "cookie": "Cookie", - "file": "File", - "host": "Host", + "file": "ফাইল", + "host": "হোস্ট", "id": "ID", - "import": "Import", + "import": "ইমপোর্ট করুন", "limit": "Limit", "offset": "Offset", - "open": "Open", - "origin": "Origin", - "promptTokens": "Prompt Tokens", - "completionTokens": "Completion Tokens", - "totalTokens": "Total Tokens", - "rawModel": "Raw Model", - "scope": "Scope", - "skill": "Skill", - "sortBy": "Sort By", - "sortOrder": "Sort Order", - "tab": "Tab", + "open": "খুলুন", + "origin": "উৎস", + "promptTokens": "প্রম্পট টোকেন", + "completionTokens": "কমপ্লিশন টোকেন", + "totalTokens": "মোট টোকেন", + "rawModel": "র মডেল", + "scope": "পরিধি", + "skill": "দক্ষতা", + "sortBy": "যে অনুযায়ী সাজাবেন", + "sortOrder": "সাজানোর ক্রম", + "tab": "ট্যাব", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "টেক্সট এরিয়া", + "tool": "টুল", + "toolId": "টুল আইডি", "web": "Web", - "whereUsed": "Where Used", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "resolve": "Resolve", - "force": "Force", + "whereUsed": "যেখানে ব্যবহৃত", + "whitelist": "অনুমোদিত তালিকা", + "blacklist": "নিষিদ্ধ তালিকা", + "resolve": "সমাধান করুন", + "force": "বলপ্রয়োগ", "base64url": "Base64 URL", "hex": "Hex", - "range": "Range", - "component": "Component", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", - "code": "Code", - "compatible": "Compatible", - "chat-completions": "Chat Completions", + "range": "পরিসর", + "component": "কম্পোনেন্ট", + "redirect_uri": "রিডাইরেক্ট URI", + "idempotency-key": "আইডেমপোটেন্সি কী", + "error_description": "ত্রুটির বিবরণ", + "code": "কোড", + "compatible": "সামঞ্জস্যপূর্ণ", + "chat-completions": "চ্যাট কমপ্লিশনস", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", - "hours": "Hours", + "auth_token": "অথ টোকেন", + "crypto": "ক্রিপ্টো", + "hours": "ঘণ্টা", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", - "resolveConnectionId": "Resolve Connection ID", - "resolve_connection_id": "Resolve Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "proxy_id": "প্রক্সি আইডি", + "proxyId": "প্রক্সি আইডি", + "connectionId": "কানেকশন আইডি", + "resolveConnectionId": "কানেকশন আইডি সমাধান করুন", + "resolve_connection_id": "কানেকশন আইডি সমাধান করুন", + "scope_id": "স্কোপ আইডি", + "scopeId": "স্কোপ আইডি", + "jwtSecret": "JWT সিক্রেট", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", "builder-id": "Builder ID", - "musicDesc": "Music Description", - "musicGeneration": "Music Generation", + "musicDesc": "সংগীতের বিবরণ", + "musicGeneration": "সংগীত তৈরি", "idc": "IDC", - "cloud-status-changed": "Cloud status changed", - "where_used": "Where Used", - "windowMs": "Window (ms)", + "cloud-status-changed": "ক্লাউডের স্থিতি পরিবর্তিত হয়েছে", + "where_used": "যেখানে ব্যবহৃত", + "windowMs": "সময়সীমা (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", - "Failed to save pricing": "Failed to save pricing", - "Failed to reset pricing": "Failed to reset pricing", - "apikey": "API Key", + "TOOL_ALLOWLIST": "টুলের অনুমোদিত তালিকা", + "TOOL_DENYLIST": "টুলের নিষিদ্ধ তালিকা", + "Failed to save pricing": "মূল্য নির্ধারণ সংরক্ষণ করা যায়নি", + "Failed to reset pricing": "মূল্য নির্ধারণ রিসেট করা যায়নি", + "apikey": "API কী", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "ড্যাশবোর্ডে যান", + "checkSystemStatus": "সিস্টেমের স্থিতি পরীক্ষা করুন", + "selectModel": "মডেল নির্বাচন করুন", "addModel": "মডেল যোগ করুন", "effortNone": "কোনোটিই নয়", "effortLow": "নিম্ন", @@ -162,12 +162,12 @@ "effortMax": "সর্বোচ্চ", "effortUltra": "আল্ট্রা", "reasoningEffort": "রিজনিং এফোর্ট", - "wireApi": "Wire API", + "wireApi": "API সংযুক্ত করুন", "modelAliases": "মডেল অ্যালিয়াস", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "কম্বোসমূহ", + "noModelsFound": "কোনো মডেল পাওয়া যায়নি", + "clear": "মুছুন", + "done": "সম্পন্ন", "selectAll": "সব নির্বাচন করুন", "unselectAll": "নির্বাচন বাতিল করুন", "visibleModels": "দৃশ্যমান", @@ -184,519 +184,519 @@ "selectAllProviders": "সব প্রদানকারী পরীক্ষা করুন", "clearProviderSelection": "প্রোভাইডারগুলি আনচেক করুন", "providersSelectedCount": "{count} প্রদানকারী পরীক্ষা করা হয়েছে", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "ত্রুটি ঘটেছে", + "comboDeleted": "কম্বো মুছে ফেলা হয়েছে", + "hide": "লুকান", + "creating": "তৈরি করা হচ্ছে", + "comboCreated": "কম্বো তৈরি করা হয়েছে", + "swapFormats": "ফরম্যাট অদলবদল করুন", + "daysAgo": "দিন আগে", + "retries": "পুনঃপ্রচেষ্টা", + "errorDuringRestore": "পুনরুদ্ধারের সময় ত্রুটি", + "eventsAppearHint": "ইভেন্ট প্রদর্শনের ইঙ্গিত", + "noLockouts": "কোনো লকআউট নেই", + "webSearchDesc": "ওয়েব অনুসন্ধানের বিবরণ", + "audioProvidersHeading": "অডিও প্রদানকারীদের শিরোনাম", "cloudAgentProviders": "ক্লাউড এজেন্ট প্রদানকারী", - "minutesAgo": "Minutes Ago", + "minutesAgo": "মিনিট আগে", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "লাইভ স্বয়ংক্রিয় রিফ্রেশ চলছে", + "webSearch": "ওয়েব অনুসন্ধান", + "anthropicPrefixPlaceholder": "Anthropic প্রিফিক্স প্লেসহোল্ডার", + "addModelToCombo": "কম্বোতে মডেল যোগ করুন", + "failedToLoad": "লোড করতে ব্যর্থ", + "categoryMedia": "মিডিয়া বিভাগ", + "enableCloud": "ক্লাউড সক্রিয় করুন", + "expirationBannerExpiringSoon": "মেয়াদ শীঘ্রই শেষ হওয়ার ব্যানার", + "retry": "পুনরায় চেষ্টা করুন", + "embeddings": "এম্বেডিংসমূহ", + "errorCount": "ত্রুটির সংখ্যা", + "backupReasonManual": "ব্যাকআপের কারণ: ম্যানুয়াল", + "safeSearchModerate": "নিরাপদ অনুসন্ধান: মধ্যম", + "activeLimiters": "সক্রিয় সীমাকারীসমূহ", + "a2aCardTitle": "A2A কার্ডের শিরোনাম", + "cloudWorkerUnreachable": "ক্লাউড ওয়ার্কারে পৌঁছানো যাচ্ছে না", + "testFailed": "পরীক্ষা ব্যর্থ হয়েছে", + "compatibleBaseUrlHint": "সামঞ্জস্যপূর্ণ বেস URL-এর ইঙ্গিত", + "usageTracking": "ব্যবহার ট্র্যাকিং", + "disableCloudTitle": "ক্লাউড নিষ্ক্রিয় করার শিরোনাম", + "noConnections": "কোনো সংযোগ নেই", + "providerHealth": "প্রোভাইডারের স্বাস্থ্য", + "confirmDbImport": "Db আমদানি নিশ্চিত করুন", + "notAvailableSymbol": "অনুপলভ্যতার প্রতীক", + "backupsAvailable": "ব্যাকআপ উপলভ্য", + "providerAuto": "স্বয়ংক্রিয় প্রোভাইডার", + "newProviderNamePlaceholder": "নতুন প্রোভাইডারের নামের প্লেসহোল্ডার", + "a2aQuickStartStep2": "A2A দ্রুত শুরু—ধাপ ২", + "ok": "ঠিক আছে", + "available": "উপলভ্য", + "noBackupYet": "এখনও কোনো ব্যাকআপ নেই", + "more": "আরও", + "noCompatibleYet": "এখনও কোনো সামঞ্জস্যপূর্ণ বিকল্প নেই", + "multiProvider": "একাধিক প্রোভাইডার", + "repairEnvHint": "পরিবেশ মেরামতের ইঙ্গিত", + "disablingCloud": "ক্লাউড নিষ্ক্রিয় করা হচ্ছে", + "testBench": "টেস্ট বেঞ্চ", + "valid": "বৈধ", + "cloudBenefitShare": "ক্লাউডের সুবিধা শেয়ার করুন", + "mcpCardTitle": "Mcp কার্ডের শিরোনাম", + "disableConfirm": "নিষ্ক্রিয়করণ নিশ্চিত করুন", + "filters": "ফিল্টার", + "expirationBannerExpiredDesc": "মেয়াদোত্তীর্ণ ব্যানারের বিবরণ", + "saveComboDefaults": "কম্বোর ডিফল্ট মান সংরক্ষণ করুন", + "cloudConnectedVerified": "ক্লাউড সংযুক্ত ও যাচাইকৃত", + "uptime": "আপটাইম", + "compatibleProdPlaceholder": "সামঞ্জস্যপূর্ণ প্রোডাকশনের প্লেসহোল্ডার", + "fallbackChainsTitle": "ফলব্যাক চেইনের শিরোনাম", + "oauthLabel": "Oauth লেবেল", + "a2aCardDescription": "A2A কার্ডের বিবরণ", + "okShort": "ঠিক আছে", + "maintenance": "রক্ষণাবেক্ষণ", + "formatConverter": "ফরম্যাট কনভার্টার", + "zedImportNetworkError": "Zed আমদানিতে নেটওয়ার্ক ত্রুটি", + "apiKeyLabel": "Api কী-এর লেবেল", + "noModelsForProvider": "প্রোভাইডারের জন্য কোনো মডেল নেই", + "mcpCardDescription": "Mcp কার্ডের বিবরণ", + "apiTypeLabel": "Api ধরনের লেবেল", + "configuredProvidersLabel": "কনফিগার করা প্রোভাইডারের লেবেল", + "maxRetriesLabel": "সর্বোচ্চ পুনঃচেষ্টার লেবেল", + "title": "শিরোনাম", + "output": "আউটপুট", + "prefixHint": "প্রিফিক্সের ইঙ্গিত", + "skipWizard": "উইজার্ড এড়িয়ে যান", + "failedCount": "ব্যর্থতার সংখ্যা", + "confirmDbImportDesc": "DB ইমপোর্ট নিশ্চিতকরণের বিবরণ", + "entries": "এন্ট্রি", + "until": "পর্যন্ত", + "disableCombo": "কম্বো নিষ্ক্রিয় করুন", + "liveMonitorDescriptionPrefix": "লাইভ মনিটরের বিবরণের প্রিফিক্স", + "runningCount": "চলমান সংখ্যা", + "noActiveConnectionsInGroup": "গ্রুপে কোনো সক্রিয় সংযোগ নেই", + "savedSuccessfully": "সফলভাবে সংরক্ষিত হয়েছে", + "systemStorage": "সিস্টেম স্টোরেজ", + "videoDesc": "ভিডিওর বিবরণ", + "maxResults": "সর্বোচ্চ ফলাফল", + "timeRangeMonth": "সময়সীমা: মাস", + "testSummary": "পরীক্ষার সারাংশ", + "failedSetPassword": "পাসওয়ার্ড সেট করতে ব্যর্থ হয়েছে", + "audio": "অডিও", + "restore": "পুনরুদ্ধার করুন", + "disableWarning": "সতর্কতা নিষ্ক্রিয় করুন", + "moderationsDesc": "মডারেশনের বিবরণ", + "providerHealthStatusAria": "প্রোভাইডারের স্বাস্থ্যস্থিতির ARIA", + "modelNamePlaceholder": "মডেলের নামের প্লেসহোল্ডার", + "mcpQuickStartStep2": "Mcp দ্রুত শুরু: ধাপ ২", + "quickStart": "দ্রুত শুরু", + "fullExportFailedWithError": "ত্রুটিসহ সম্পূর্ণ এক্সপোর্ট ব্যর্থ হয়েছে", + "loadingBackups": "ব্যাকআপ লোড হচ্ছে", + "anthropicBaseUrlPlaceholder": "Anthropic বেস URL-এর প্লেসহোল্ডার", + "description": "বিবরণ", + "noProviderFound": "কোনো প্রোভাইডার পাওয়া যায়নি", + "auto": "স্বয়ংক্রিয়", + "protocolsDescription": "প্রোটোকলের বিবরণ", + "cloudSessionNote": "ক্লাউড সেশনের নোট", + "advancedSettings": "উন্নত সেটিংস", + "defaultStrategy": "ডিফল্ট কৌশল", + "purgeExpiredLogs": "মেয়াদোত্তীর্ণ লগ মুছে ফেলুন", + "justNow": "এইমাত্র", + "providerTestFailed": "প্রোভাইডার পরীক্ষা ব্যর্থ হয়েছে", + "openaiBaseUrlPlaceholder": "Openai বেস URL প্লেসহোল্ডার", + "image": "ছবি", + "failedCreateChain": "চেইন তৈরি করতে ব্যর্থ হয়েছে", + "importDatabase": "ডেটাবেস আমদানি করুন", + "allDataLocal": "সমস্ত ডেটা লোকাল", + "sectionTitle": "সেকশনের শিরোনাম", + "failedToggle": "টগল করতে ব্যর্থ হয়েছে", + "editCombo": "কম্বো সম্পাদনা করুন", + "testResults": "পরীক্ষার ফলাফল", + "searchQuery": "সার্চ কোয়েরি", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "অনুলিপি তৈরি করুন", + "createCombo": "কম্বো তৈরি করুন", + "searchTypeWeb": "সার্চের ধরন: ওয়েব", + "addChain": "চেইন যোগ করুন", + "prefixLabel": "প্রিফিক্স লেবেল", + "listModelsDesc": "মডেল তালিকার বিবরণ", + "databaseSize": "ডেটাবেসের আকার", + "chainCreated": "চেইন তৈরি হয়েছে", + "providerTestTimeout": "প্রোভাইডার পরীক্ষার সময়সীমা শেষ হয়েছে", + "routingStrategy": "রাউটিং কৌশল", + "translateAction": "অনুবাদ করুন", + "exportFailed": "এক্সপোর্ট ব্যর্থ হয়েছে", + "connectedVerificationPending": "সংযুক্ত—যাচাইকরণ বাকি আছে", + "a2aQuickStartTitle": "A2A দ্রুত শুরুর শিরোনাম", + "couldNotTest": "পরীক্ষা করা যায়নি", + "testAllCompatible": "সব সামঞ্জস্যপূর্ণ প্রোভাইডার পরীক্ষা করুন", + "anthropicCompatibleName": "Anthropic-সামঞ্জস্যপূর্ণ নাম", + "disabling": "নিষ্ক্রিয় করা হচ্ছে", + "failedEnable": "সক্রিয় করতে ব্যর্থ হয়েছে", + "categoryUtility": "ইউটিলিটি বিভাগ", + "customUrlOptional": "কাস্টম URL (ঐচ্ছিক)", + "localProviders": "লোকাল প্রোভাইডারসমূহ", + "comboNamePlaceholder": "কম্বো নামের প্লেসহোল্ডার", + "memoryRss": "মেমোরি RSS", + "disableProvider": "প্রোভাইডার নিষ্ক্রিয় করুন", + "welcomeDesc": "স্বাগত বার্তার বিবরণ", + "nameLabel": "নামের লেবেল", + "allOperational": "সবকিছু সচল আছে", + "backupNow": "এখনই ব্যাকআপ নিন", + "providerMaxRetriesAria": "প্রোভাইডারের সর্বোচ্চ পুনঃচেষ্টার ARIA", + "textToSpeechDesc": "টেক্সট টু স্পিচের বিবরণ", + "machineId": "মেশিন আইডি", + "globalProxy": "গ্লোবাল প্রক্সি", + "hitsMisses": "হিট ও মিস", + "testDesc": "পরীক্ষার বিবরণ", + "chatDesc": "চ্যাটের বিবরণ", + "importSuccess": "ইমপোর্ট সফল হয়েছে", + "chat": "চ্যাট", + "a2aQuickStartStep1": "A2A দ্রুত শুরুর ধাপ ১", + "importFailed": "ইমপোর্ট ব্যর্থ হয়েছে", + "inputPlaceholder": "ইনপুটের স্থানধারক", + "providerModelsTitle": "প্রোভাইডার মডেলসমূহের শিরোনাম", + "lastBackup": "সর্বশেষ ব্যাকআপ", + "yourEndpoint": "আপনার এন্ডপয়েন্ট", + "autoDisableThresholdDesc": "স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় করার সীমার বিবরণ", + "rerankDesc": "পুনঃর্যাঙ্কিংয়ের বিবরণ", + "modelsPathPlaceholder": "মডেল পাথের স্থানধারক", + "noCombosYet": "এখনও কোনো কম্বো নেই", + "connectedVerificationPendingWithError": "সংযুক্ত, যাচাইকরণ অপেক্ষমাণ, ত্রুটিসহ", + "comboDefaultsGuideHint1": "কম্বোর ডিফল্ট নির্দেশিকার ইঙ্গিত ১", + "enableCloudTitle": "ক্লাউড সক্রিয় করুন", + "configuredProvidersHint": "কনফিগার করা প্রোভাইডারগুলোর ইঙ্গিত", + "paused": "বিরতিতে আছে", + "llmProviders": "LLM প্রোভাইডারসমূহ", + "enableCombo": "কম্বো সক্রিয় করুন", + "removeProviderOverrideAria": "প্রোভাইডার ওভাররাইড অপসারণের ARIA", + "nodeVersion": "Node সংস্করণ", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "ত্রুটির কারণে এক্সপোর্ট ব্যর্থ হয়েছে", + "proxyConfigured": "প্রক্সি কনফিগার করা হয়েছে", + "concurrencyPerModel": "প্রতি মডেলের সমকালীনতা", + "protocolTasksLabel": "প্রোটোকল টাস্কের লেবেল", + "oauthProviders": "OAuth প্রোভাইডারসমূহ", + "lockedCount": "লক করা সংখ্যার পরিমাণ", + "deleteChainConfirm": "চেইন মুছে ফেলার বিষয়টি নিশ্চিত করুন", + "recentTranslations": "সাম্প্রতিক অনুবাদসমূহ", + "zedImportButton": "Zed ইমপোর্ট বোতাম", + "responsesDesc": "রেসপন্সের বিবরণ", + "testedCount": "পরীক্ষিত সংখ্যার পরিমাণ", + "providersCommaSeparatedPlaceholder": "কমা দিয়ে পৃথক করা প্রোভাইডারগুলোর প্লেসহোল্ডার", + "signatureDefaults": "স্বাক্ষরের ডিফল্ট মান", + "errorCreating": "তৈরি করতে ত্রুটি", + "timeRangeYear": "সময়সীমা: বছর", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", - "testBenchTab": "Test Bench", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "cloudDisabledSuccess": "Cloud সফলভাবে নিষ্ক্রিয় হয়েছে", + "deleteConfirm": "মুছে ফেলার নিশ্চিতকরণ", + "check": "পরীক্ষা করুন", + "safeSearch": "নিরাপদ অনুসন্ধান", + "protocolLastActivity": "প্রোটোকলের সর্বশেষ কার্যকলাপ", + "openMcpDashboard": "Mcp ড্যাশবোর্ড খুলুন", + "testBenchTab": "টেস্ট বেঞ্চ", + "chatPathLabel": "চ্যাট পাথের লেবেল", + "retryDelay": "পুনঃচেষ্টার বিলম্ব", + "errorUpdating": "আপডেট করতে ত্রুটি", + "ideCliIntegrations": "IDE CLI ইন্টিগ্রেশনসমূহ", + "imageGeneration": "ছবি তৈরি", + "apiKeyRequired": "API কী আবশ্যক", + "resetAllTitle": "সব রিসেট করুন", + "connectionError": "সংযোগ ত্রুটি", + "modelName": "মডেলের নাম", + "apiKeyForCheck": "পরীক্ষার জন্য API কী", + "cloudRequestTimeout": "Cloud অনুরোধের সময়সীমা শেষ হয়েছে", + "showConfiguredOnly": "শুধু কনফিগার করা আইটেমগুলো দেখান", "showFreeOnly": "শুধুমাত্র বিনামূল্যে", "addFirstProvider": "আপনার প্রথম প্রদানকারী যোগ করুন", "addFirstProviderDesc": "OmniRoute এর মাধ্যমে রাউটিং অনুরোধ শুরু করতে একটি AI প্রদানকারীকে সংযুক্ত করুন। আপনি বিনামূল্যে প্রদানকারী, API কী, বা OAuth অ্যাকাউন্ট ব্যবহার করতে পারেন।", "learnMore": "আরও জানুন", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "ডোমেইন অন্তর্ভুক্ত করুন", + "promptCache": "প্রম্পট ক্যাশ", + "cloudConnected": "Cloud সংযুক্ত হয়েছে", + "deleteChain": "চেইন মুছুন", + "chatPathPlaceholder": "চ্যাট পাথের প্লেসহোল্ডার", + "databasePath": "ডেটাবেস পাথ", + "usingLocalServer": "স্থানীয় সার্ভার ব্যবহার করা হচ্ছে", + "globalComboConfig": "গ্লোবাল কম্বো কনফিগ", + "backupFailed": "ব্যাকআপ ব্যর্থ হয়েছে", + "tabProtocols": "প্রোটোকল ট্যাব", + "continue": "চালিয়ে যান", + "categorySearch": "ক্যাটাগরি অনুসন্ধান", + "rateLimitStatus": "রেট লিমিটের স্থিতি", + "repairEnvSuccess": "এনভায়রনমেন্ট সফলভাবে মেরামত হয়েছে", + "nameRequired": "নাম আবশ্যক", + "country": "দেশ", + "trackMetricsDesc": "মেট্রিক্স ট্র্যাকিংয়ের বিবরণ", + "durationSecondsShort": "সময়কাল (সেকেন্ড, সংক্ষিপ্ত)", + "formatConverterDescription": "ফরম্যাট কনভার্টারের বিবরণ", + "cloudBenefitAccess": "ক্লাউড সুবিধায় অ্যাক্সেস", + "maxRetries": "সর্বোচ্চ পুনঃচেষ্টা", + "queueTimeout": "সারির সময়সীমা", "queueDepth": "কিউ ডেপথ", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "প্রোভাইডার যোগ করুন", + "realtime": "রিয়েলটাইম", + "totalTranslations": "মোট অনুবাদ", + "protocolActiveStreamsLabel": "প্রোটোকলের সক্রিয় স্ট্রিমের লেবেল", + "repairEnv": "এনভায়রনমেন্ট মেরামত করুন", + "modelsCount": "মডেলের সংখ্যা", + "viewBackups": "ব্যাকআপ দেখুন", + "responsesApi": "Responses API", + "copyComboName": "কম্বোর নাম কপি করুন", + "failures": "ব্যর্থতা", + "failedUpdate": "আপডেট ব্যর্থ হয়েছে", + "imageDesc": "ছবির বিবরণ", + "failedCreate": "তৈরি করা ব্যর্থ হয়েছে", + "remainingOfLimit": "সীমার অবশিষ্ট অংশ", + "protocolsTitle": "প্রোটোকলের শিরোনাম", + "expirationBannerExpiringSoonDesc": "মেয়াদ শীঘ্রই শেষ হওয়ার ব্যানারের বিবরণ", + "source": "উৎস", + "failed": "ব্যর্থ", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "MCP দ্রুত শুরুর ধাপ ১", + "runTest": "পরীক্ষা চালান", + "loadingFallbackChains": "ফলব্যাক চেইন লোড হচ্ছে", + "healthy": "সুস্থ", + "version": "সংস্করণ", + "saveBlockWeighted": "ওয়েটেড ব্লক সংরক্ষণ করুন", + "zedImportNone": "কোনো Zed ইমপোর্ট নেই", + "noBackupsYet": "এখনও কোনো ব্যাকআপ নেই", + "noGlobalProxy": "কোনো গ্লোবাল প্রক্সি নেই", + "noModels": "কোনো মডেল নেই", + "stickyLimit": "স্টিকি সীমা", + "passedCount": "পাসের সংখ্যা", + "zedImportFailed": "Zed ইমপোর্ট ব্যর্থ হয়েছে", + "saving": "সংরক্ষণ করা হচ্ছে", + "testAll": "সব পরীক্ষা করুন", + "globalProxyDesc": "গ্লোবাল প্রক্সির বিবরণ", + "latencyP99": "ল্যাটেন্সি P99", + "connectingToCloud": "ক্লাউডে সংযোগ করা হচ্ছে", + "responses": "প্রতিক্রিয়াসমূহ", + "errorDeleting": "মুছে ফেলতে ত্রুটি", + "openaiPrefixPlaceholder": "Openai প্রিফিক্সের স্থানধারক", + "enterPassword": "পাসওয়ার্ড লিখুন", + "openA2aDashboard": "A2A ড্যাশবোর্ড খুলুন", + "enableProvider": "প্রোভাইডার সক্রিয় করুন", + "modeTest": "পরীক্ষা মোড", + "failedDeleteChain": "চেইন মুছে ফেলতে ব্যর্থ হয়েছে", + "providerDesc": "প্রোভাইডারের বিবরণ", + "templateLoadHint": "টেমপ্লেট লোডের নির্দেশনা", + "lastFailure": "সর্বশেষ ব্যর্থতা", + "moveDown": "নিচে সরান", + "providerLabel": "প্রোভাইডারের লেবেল", + "clearCacheFailed": "ক্যাশ পরিষ্কার করতে ব্যর্থ হয়েছে", + "imagesGenerations": "ছবি তৈরি", + "repairEnvWorking": "এনভায়রনমেন্ট মেরামত চলছে", + "millisecondsShort": "মিলিসেকেন্ডের সংক্ষিপ্ত রূপ", + "globalLabel": "গ্লোবাল লেবেল", + "failuresPlural": "ব্যর্থতাসমূহ", + "completionsLegacyDesc": "লিগ্যাসি কমপ্লিশনের বিবরণ", + "searchProviders": "প্রোভাইডার খুঁজুন", + "chatPathHint": "চ্যাট পাথের নির্দেশনা", + "defaultStrategyDesc": "ডিফল্ট কৌশলের বিবরণ", + "latencyP95": "P95 ল্যাটেন্সি", + "textToSpeech": "টেক্সট থেকে স্পিচ", + "searchType": "অনুসন্ধানের ধরন", + "messages": "বার্তাসমূহ", + "aggregatorsGateways": "অ্যাগ্রিগেটর ও গেটওয়ে", + "comboStrategyAria": "Aria কম্বো কৌশল", + "input": "ইনপুট", + "testingConnection": "সংযোগ পরীক্ষা করা হচ্ছে", + "excludeDomains": "ডোমেইন বাদ দিন", + "webCookieProviders": "ওয়েব কুকি প্রোভাইডার", + "allTestsPassed": "সব পরীক্ষা সফল হয়েছে", + "openaiCompatibleName": "Openai-সামঞ্জস্যপূর্ণ নাম", + "warningCostOptimizedPartialPricing": "সতর্কতা: খরচ-অপ্টিমাইজড আংশিক মূল্যনির্ধারণ", + "comboDefaultsGuideTitle": "কম্বো ডিফল্ট নির্দেশিকার শিরোনাম", + "hoursAgo": "ঘণ্টা আগে", + "notAvailable": "উপলভ্য নয়", + "skipAndContinue": "এড়িয়ে যান এবং চালিয়ে যান", + "moderations": "মডারেশনসমূহ", + "proxyConfig": "প্রক্সি কনফিগারেশন", + "upstreamProxyProviders": "আপস্ট্রিম প্রক্সি প্রদানকারীরা", + "exportAll": "সব রপ্তানি করুন", + "queuedCount": "সারিবদ্ধ সংখ্যা", + "resetAll": "সব রিসেট করুন", + "noTranslations": "কোনো অনুবাদ নেই", + "avgLatency": "গড় ল্যাটেন্সি", + "throttleStatus": "থ্রটল স্থিতি", + "backupRetentionDesc": "ব্যাকআপ সংরক্ষণের বিবরণ", + "noCBData": "কোনো Cb ডেটা নেই", + "chainDeleted": "চেইন মুছে ফেলা হয়েছে", + "timeLeft": "অবশিষ্ট সময়", + "expirationBannerExpired": "মেয়াদোত্তীর্ণ ব্যানারের মেয়াদ শেষ হয়েছে", + "language": "ভাষা", + "invalidFileType": "অবৈধ ফাইলের ধরন", + "monitoredProviders": "পর্যবেক্ষণাধীন প্রদানকারীরা", + "errors": "ত্রুটিসমূহ", + "heap": "হিপ", + "chatCompletions": "চ্যাট কমপ্লিশন", + "exampleTemplatesHint": "উদাহরণ টেমপ্লেটের ইঙ্গিত", + "retryDelayLabel": "পুনঃচেষ্টার বিলম্বের লেবেল", + "audioTranscription": "অডিও ট্রান্সক্রিপশন", + "fallbackChainsDesc": "ফলব্যাক চেইনের বিবরণ", + "exampleTemplates": "উদাহরণ টেমপ্লেট", + "connectionsCount": "সংযোগের সংখ্যা", + "modelsPathLabel": "মডেল পাথের লেবেল", + "activeProvidersHint": "সক্রিয় প্রদানকারীর ইঙ্গিত", + "activeLockouts": "সক্রিয় লকআউটসমূহ", + "invalid": "অবৈধ", + "skipPassword": "পাসওয়ার্ড এড়িয়ে যান", + "moveUp": "উপরে সরান", + "timeRange": "সময়সীমা", + "stickyLimitDesc": "স্টিকি সীমার বিবরণ", + "cloudBenefitEdge": "ক্লাউড সুবিধা: এজ", + "custom": "কাস্টম", + "verifying": "যাচাই করা হচ্ছে", + "baseUrlLabel": "বেস URL-এর লেবেল", + "setPassword": "পাসওয়ার্ড সেট করুন", + "safeSearchStrict": "নিরাপদ অনুসন্ধান কঠোর", + "noChangesSinceBackup": "ব্যাকআপের পর থেকে কোনো পরিবর্তন নেই", + "modelsPathHint": "মডেলের পাথের ইঙ্গিত", + "audioTranscriptions": "অডিও ট্রান্সক্রিপশন", + "testCombo": "কম্বো পরীক্ষা করুন", + "mcpQuickStartTitle": "Mcp দ্রুত শুরুর শিরোনাম", + "comboUpdated": "কম্বো আপডেট হয়েছে", + "weighted": "ওজনযুক্ত", + "providers": "প্রদানকারীরা", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", - "chatTesterTab": "Chat Tester", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "noFallbackChainsDesc": "কোনো ফলব্যাক চেইন নেই—বিবরণ", + "yesImport": "হ্যাঁ, ইমপোর্ট করুন", + "lockoutsAutoRefreshHint": "লকআউট স্বয়ংক্রিয় রিফ্রেশের ইঙ্গিত", + "tabApis": "Apis ট্যাব", + "sectionDescription": "সেকশনের বিবরণ", + "filter": "ফিল্টার", + "purgeLogsFailed": "লগ মুছতে ব্যর্থ হয়েছে", + "latency": "বিলম্ব", + "testAllOAuth": "সব O Auth পরীক্ষা করুন", + "mcpQuickStartStep3": "Mcp দ্রুত শুরুর ধাপ ৩", + "repairEnvFailed": "Env মেরামত করতে ব্যর্থ হয়েছে", + "zedImportHint": "Zed ইমপোর্টের ইঙ্গিত", + "modelsAcrossEndpoints": "এন্ডপয়েন্টজুড়ে মডেল", + "autoDisableBannedAccounts": "নিষিদ্ধ অ্যাকাউন্ট স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় করুন", + "securityDesc": "নিরাপত্তার বিবরণ", + "listModels": "মডেলগুলোর তালিকা দেখুন", + "backupRestore": "ব্যাকআপ পুনরুদ্ধার", + "target": "লক্ষ্য", + "zedImportSuccess": "Zed সফলভাবে ইমপোর্ট হয়েছে", + "lastHeaderUpdate": "সর্বশেষ হেডার আপডেট", + "categoryCore": "মূল বিভাগ", + "noFallbackChains": "কোনো ফলব্যাক চেইন নেই", + "noSearchProviders": "কোনো অনুসন্ধান প্রদানকারী নেই", + "autoBalance": "স্বয়ংক্রিয় ভারসাম্য", + "noModelsYet": "এখনও কোনো মডেল নেই", + "signatureFamily": "স্বাক্ষর পরিবার", + "externalApiCalls": "বাহ্যিক Api কল", + "providerOverridesDesc": "প্রদানকারী ওভাররাইডের বিবরণ", + "signatureTool": "স্বাক্ষর টুল", + "connectionFailed": "সংযোগ ব্যর্থ হয়েছে", + "activeLimitersPlural": "সক্রিয় লিমিটারসমূহ", + "doneDesc": "সম্পন্নের বিবরণ", + "down": "নিচে", + "noDataYet": "এখনও কোনো ডেটা নেই", + "activeProviders": "সক্রিয় প্রোভাইডারসমূহ", + "nameInvalid": "নামটি অবৈধ", + "skip": "এড়িয়ে যান", + "createChain": "চেইন তৈরি করুন", + "audioSpeech": "অডিও স্পিচ", + "cacheCleared": "ক্যাশ পরিষ্কার করা হয়েছে", + "searchTypeNews": "সার্চের ধরন: সংবাদ", + "durationMillisecondsShort": "সময়কাল (মিলিসেকেন্ড)", + "addOpenAICompatible": "OpenAI-সামঞ্জস্যপূর্ণ প্রোভাইডার যোগ করুন", + "chatTesterTab": "চ্যাট পরীক্ষক", + "queued": "সারিতে রয়েছে", + "domainPlaceholder": "ডোমেইন প্লেসহোল্ডার", + "durationMinutesShort": "সময়কাল (মিনিট)", + "verifyingConnection": "সংযোগ যাচাই করা হচ্ছে", + "imageProviders": "ইমেজ প্রোভাইডারসমূহ", + "protocolToolsLabel": "প্রোটোকল টুলের লেবেল", + "queryPlaceholder": "কোয়েরি প্লেসহোল্ডার", + "videoGeneration": "ভিডিও তৈরি", + "timeRangeWeek": "সময়সীমা: এক সপ্তাহ", + "limitExhausted": "সীমা শেষ হয়ে গেছে", + "failedDisable": "নিষ্ক্রিয় করা ব্যর্থ হয়েছে", + "inMemoryNote": "ইন-মেমরি নোট", + "compatibleHint": "সামঞ্জস্যসংক্রান্ত ইঙ্গিত", + "errorShort": "সংক্ষিপ্ত ত্রুটি", + "advancedHint": "উন্নত সেটিংসের ইঙ্গিত", + "restoreFailed": "পুনরুদ্ধার ব্যর্থ হয়েছে", + "searchProvidersHeading": "সার্চ প্রোভাইডারসমূহ", + "comboName": "কম্বোর নাম", + "autoDisableDescription": "স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় করার বিবরণ", + "embeddingsDesc": "এম্বেডিংসের বিবরণ", + "operational": "কার্যকর", + "testAllApiKey": "সব API কী পরীক্ষা করুন", + "backupCreated": "ব্যাকআপ তৈরি করা হয়েছে", + "errorDuringImport": "ইমপোর্ট করার সময় ত্রুটি", + "comboDefaultsGuideHint2": "কম্বোর ডিফল্ট নির্দেশিকার ইঙ্গিত ২", + "connecting": "সংযোগ করা হচ্ছে", + "fillModelAndProviders": "মডেল ও প্রোভাইডারসমূহ পূরণ করুন", + "syncing": "সিঙ্ক হচ্ছে", + "resetConfirm": "রিসেট নিশ্চিত করুন", + "trackMetrics": "মেট্রিক্স ট্র্যাক করুন", + "successful": "সফল", + "recovering": "পুনরুদ্ধার হচ্ছে", + "autoDisableThreshold": "স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় করার সীমা", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "ডেটা সিঙ্ক হচ্ছে", + "cloudBenefitPorts": "ক্লাউড বেনিফিট পোর্টসমূহ", + "compatibleProviders": "সামঞ্জস্যপূর্ণ প্রোভাইডারসমূহ", "freeTierProviders": "বিনামূল্যে স্তর প্রদানকারী", "freeTierLabel": "বিনামূল্যে স্তর উপলব্ধ", "freeTierProvidersDesc": "বিনামূল্যের স্তর সহ প্রদানকারীরা — কিছু একটি API কী সাইনআপ প্রয়োজন, অন্যদের কোনো শংসাপত্রের প্রয়োজন নেই৷", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "ক্যাশ পরিষ্কার করুন", + "reqs": "অনুরোধসমূহ", + "addAnthropicCompatible": "Anthropic-সামঞ্জস্যপূর্ণ প্রোভাইডার যোগ করুন", + "apiKeyProviders": "API কী প্রোভাইডারসমূহ", + "tabsAria": "ট্যাবগুলোর ARIA", + "resetting": "রিসেট হচ্ছে", + "millisecondsAbbr": "মিলিসেকেন্ডের সংক্ষিপ্ত রূপ", + "backupReasonPreRestore": "পুনরুদ্ধারের আগের ব্যাকআপের কারণ", + "disableCloud": "ক্লাউড নিষ্ক্রিয় করুন", + "newProviderNameAria": "নতুন প্রোভাইডারের নামের ARIA", + "passwordsMismatch": "পাসওয়ার্ড মিলছে না", + "a2aQuickStartStep3": "A2A দ্রুত শুরু করার ধাপ ৩", + "liveMonitorDescriptionSuffix": "লাইভ মনিটরের বর্ণনার প্রত্যয়", + "failedAddProvider": "প্রোভাইডার যোগ করা ব্যর্থ হয়েছে", + "addAtLeastOneProvider": "অন্তত একটি প্রোভাইডার যোগ করুন", + "reasonSeparator": "কারণের বিভাজক", + "zedImporting": "Zed ইম্পোর্ট হচ্ছে", + "confirmPasswordPlaceholder": "পাসওয়ার্ড নিশ্চিত করুন", + "whatYouGet": "আপনি যা পাবেন", + "signatureSession": "সেশন স্বাক্ষর", + "errorCountNoCode": "কোডবিহীন ত্রুটির সংখ্যা", + "testing": "পরীক্ষা করা হচ্ছে", + "providersCommaSeparated": "কমা দিয়ে পৃথক করা প্রোভাইডারসমূহ", + "exportDatabase": "ডেটাবেস এক্সপোর্ট করুন", + "hitRate": "হিট রেট", + "completionsLegacy": "পুরোনো কমপ্লিশনসমূহ", + "removeModel": "মডেল সরান", + "timeRangeDay": "সময়সীমা: দিন", + "cloudRequestFailed": "ক্লাউড অনুরোধ ব্যর্থ হয়েছে", + "updatedAt": "আপডেটের সময়", + "monitoredProvidersHint": "মনিটর করা প্রোভাইডারগুলোর ইঙ্গিত", + "connectionSuccessful": "সংযোগ সফল হয়েছে", + "latencyP50": "ল্যাটেন্সি P50", + "logsDeleted": "লগ মুছে ফেলা হয়েছে", + "chatTester": "চ্যাট পরীক্ষক", + "safeSearchOff": "নিরাপদ অনুসন্ধান বন্ধ", + "nameHint": "নামের ইঙ্গিত", + "debugToggle": "ডিবাগ টগল", + "embedding": "এম্বেডিং", + "issuesLabel": "সমস্যার লেবেল", + "optionAny": "যেকোনো বিকল্প", + "maxNestingDepth": "সর্বোচ্চ নেস্টিং গভীরতা", + "rerank": "পুনরায় র্যাঙ্ক করুন", + "checking": "পরীক্ষা করা হচ্ছে", + "getStarted": "শুরু করুন", + "restoreSuccess": "পুনরুদ্ধার সফল হয়েছে", + "issuesDetected": "সমস্যা শনাক্ত হয়েছে", + "signatureCache": "স্বাক্ষর ক্যাশ", + "modelLockouts": "মডেল লকআউট", + "usingCloudProxy": "ক্লাউড প্রক্সি ব্যবহার করা হচ্ছে", + "loadingHealth": "স্বাস্থ্যস্থিতি লোড হচ্ছে", + "providerOverrides": "প্রোভাইডার ওভাররাইড", + "audioTranscriptionDesc": "অডিও ট্রান্সক্রিপশনের বিবরণ", + "learnedFromHeaders": "হেডার থেকে শেখা", + "totalRequests": "মোট অনুরোধ", + "cloudUnstableNote": "ক্লাউডের অস্থিতিশীলতা-সংক্রান্ত নোট", "gamificationAdmin": "গ্যামিফিকেশন অ্যাডমিন", "monitorAnomaliesAndHealth": "অসঙ্গতি এবং সিস্টেম স্বাস্থ্য নিরীক্ষণ", "flaggedAnomalies": "পতাকাঙ্কিত অসঙ্গতিগুলি৷", @@ -704,7 +704,7 @@ "apiKey": "API কী", "xpLastHour": "XP (1 ঘন্টা)", "zScore": "জেড-স্কোর", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "সন্দেহজনক", "tokensCommunityServers": "কমিউনিটি সার্ভার", "tokensServerNamePlaceholder": "সার্ভারের নাম", "tokensApiKeyPlaceholder": "API কী", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "আরো লোড হচ্ছে...", "recommended": "প্রস্তাবিত", "understand": "আমি বুঝতে পেরেছি", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "ব্যাচ প্রক্রিয়াকরণ", + "batchConceptSubtitle": "প্রায় ৫০% খরচে হাজারো অনুরোধ অ্যাসিঙ্ক্রোনাসভাবে প্রক্রিয়া করুন (২৪ ঘণ্টার সময়সীমা)। মূল্যায়ন, শ্রেণিবিন্যাস এবং এম্বেডিংয়ের জন্য আদর্শ।", + "batchConceptHowItWorks": "এটি যেভাবে কাজ করে", + "batchConceptBenefit50pct": "ইনপুট + আউটপুট টোকেনে ৫০% ছাড়", + "batchConceptAsync24h": "২৪ ঘণ্টার মধ্যে সম্পন্ন হওয়ার সময়সীমাসহ অ্যাসিঙ্ক্রোনাস", + "batchConceptUseCases": "বাল্ক শ্রেণিবিন্যাস, মূল্যায়ন এবং এম্বেডিংয়ের জন্য সেরা", + "batchHeaderSubtitle": "অনেক অনুরোধ একটি কাজ হিসেবে চালান", + "batchStep1": "১ · JSONL আপলোড করুন", + "batchStep1Desc": "অনুরোধ যোগ করুন", + "batchStep2": "২ · ব্যাচ তৈরি করুন", + "batchStep2Desc": "কাজ চালান", + "batchStep3": "৩ · ফলাফল পান", + "batchStep3Desc": "আউটপুট ডাউনলোড করুন", + "filesConceptTitle": "ব্যাচ ফাইল", + "filesConceptSubtitle": "ব্যাচে ব্যবহৃত JSONL ফাইল: ইনপুট অনুরোধ, ফলাফল এবং ত্রুটি।", + "filesConceptInput": "ইনপুট — প্রতি লাইনে একটি অনুরোধসহ আপনার JSONL", + "filesConceptOutput": "আউটপুট — সম্পন্ন অনুরোধগুলোর ফলাফল", + "filesConceptError": "ত্রুটি — ব্যর্থ হওয়া অনুরোধগুলো", + "filesConceptRetention": "সংরক্ষণকাল: ডিফল্টভাবে ৩০ দিন (Anthropic-এ ২৯ দিন)", + "wizardTitle": "নতুন ব্যাচ", + "wizardClose": "বন্ধ করুন", + "wizardNext": "পরবর্তী", + "wizardBack": "পেছনে", + "wizardCancel": "বাতিল করুন", + "wizardCreate": "ব্যাচ তৈরি করুন", + "wizardCreating": "তৈরি করা হচ্ছে…", + "wizardStep1Destination": "গন্তব্য", + "wizardStep2Input": "ইনপুট", + "wizardStep3Validate": "যাচাই করুন", + "wizardStep4Cost": "খরচ ও তৈরি", + "wizardProviderLabel": "প্রোভাইডার", + "wizardEndpointLabel": "এন্ডপয়েন্ট", + "wizardModelLabel": "মডেল", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (আমরা রূপান্তর করব)", + "wizardDropOrPick": "একটি ফাইল এখানে ছেড়ে দিন অথবা বেছে নিতে ক্লিক করুন", + "wizardCsvMappingTitle": "CSV কলাম → অনুরোধের ফিল্ডে ম্যাপ করুন", + "wizardCsvMappingAddField": "ফিল্ড যোগ করুন", "wizardCsvNoColumns": "CSV হেডারে কোনো কলাম শনাক্ত করা যায়নি।", "wizardCsvIgnoreColumn": "— উপেক্ষা করুন —", "wizardCsvCustomIdMapped": "custom_id ম্যাপ করা হয়েছে", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count}টি সারি পার্স করা হয়েছে", "wizardCsvRowsSkipped": "{count}টি সারি এড়িয়ে যাওয়া হয়েছে", "wizardCsvRowError": "সারি {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "সব লাইন বৈধ", "wizardValidating": "যাচাই করা হচ্ছে…", "wizardValidationParseFailed": "যাচাইকরণ ব্যর্থ হয়েছে — বিষয়বস্তু পার্স করা যায়নি।", "wizardValidationSummary": "{lines} লাইন · {ids} অনন্য custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "ডুপ্লিকেট custom_ids শনাক্ত হয়েছে:", "wizardValidationFirstErrors": "ত্রুটি (প্রথম {count}):", "wizardValidationLine": "লাইন {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "যাচাইকরণে ত্রুটি", + "wizardValidationPreview": "প্রিভিউ (প্রথম ৫টি অনুরোধ)", + "wizardValidationSamplingNote": "ফাইলটি বড় — নমুনার ভিত্তিতে যাচাই করা হয়েছে (প্রথম ১০০০ + শেষ ১০০ লাইন)। সম্পূর্ণ যাচাইকরণ সার্ভার-সাইডে সম্পন্ন হয়।", + "wizardCostSync": "সিঙ্ক খরচ", + "wizardCostBatch": "ব্যাচ খরচ (-৫০%)", + "wizardCostSavings": "সাশ্রয়", + "wizardCostEstimatedNotice": "আনুমানিক খরচ — প্রকৃত বিলের পরিমাণ ভিন্ন হতে পারে।", + "wizardErrorUpload": "ফাইল আপলোড করা যায়নি। আবার চেষ্টা করুন।", + "wizardErrorCreate": "ব্যাচ তৈরি করা যায়নি। আবার চেষ্টা করুন।", + "wizardEmptyProviders": "ব্যাচ তৈরি করতে ব্যাচ সমর্থন করে এমন একটি প্রোভাইডার (OpenAI, Anthropic, বা Gemini) সংযুক্ত করুন।", + "uploadModalTitle": "ব্যাচ ফাইল আপলোড করুন", + "uploadModalDropOrPick": "একটি .jsonl ফাইল এখানে ছেড়ে দিন অথবা বেছে নিতে ক্লিক করুন", + "uploadModalUpload": "আপলোড করুন", + "uploadModalCancel": "বাতিল করুন", + "uploadModalError": "আপলোড ব্যর্থ হয়েছে। আবার চেষ্টা করুন।", + "uploadModalSuccess": "আপলোড করা হয়েছে", + "uploadModalSizeLimit": "সর্বোচ্চ 512 MB", + "batchListNewButton": "নতুন ব্যাচ", + "batchListAutoRefresh": "স্বয়ংক্রিয় রিফ্রেশ 30s", + "batchListCostColumn": "খরচ", + "batchActionCancel": "বাতিল করুন", + "batchActionDownloadOutput": "আউটপুট ডাউনলোড করুন", + "batchActionDownloadErrors": "ত্রুটিগুলো ডাউনলোড করুন", + "batchActionRetry": "ব্যর্থগুলো আবার চেষ্টা করুন", + "batchActionRetryConfirm": "ব্যর্থ হওয়া {n}টি অনুরোধ আবার চেষ্টা করবেন? চূড়ান্ত খরচ প্রকৃত ব্যবহৃত টোকেনের ওপর নির্ভর করবে।", + "expirationBadgeCritical": "অতি জরুরি", + "expirationBadgeWarning": "শীঘ্রই", + "expirationBadgeNormal": "অপেক্ষমাণ", + "expirationBadgeExpired": "মেয়াদোত্তীর্ণ", + "filesListUploadButton": "আপলোড করুন", + "filesListUsedByColumn": "ব্যবহারকারী", + "filesListUsedByNone": "কোনোটিই নয়", + "filesListUsedByRoleInput": "ইনপুট", + "filesListUsedByRoleOutput": "আউটপুট", + "filesListUsedByRoleError": "ত্রুটি", + "filesListSizeColumn": "আকার", + "batchListProgressPartial": "(আংশিক)", + "batchListProviderColumn": "প্রোভাইডার", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", - "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListProviderOther": "অন্যান্য", + "batchListTitle": "ব্যাচসমূহ", + "batchListCount": "{count}টি ব্যাচ", + "batchListRemovingCompleted": "সরানো হচ্ছে…", + "batchListRemoveCompleted": "সরানো সম্পন্ন হয়েছে", + "batchListTableStatus": "স্থিতি", + "batchListTableId": "আইডি", + "batchListTableEndpoint": "এন্ডপয়েন্ট", + "batchListTableModel": "মডেল", + "batchListTableProgress": "অগ্রগতি", + "batchListTableCreated": "তৈরি করা হয়েছে", + "batchListTableExpires": "মেয়াদ শেষ হবে", + "batchListLoading": "লোড হচ্ছে…", + "batchListEmpty": "কোনো ব্যাচ পাওয়া যায়নি", + "batchListValidating": "যাচাই করা হচ্ছে…", + "batchStatusAll": "সব স্ট্যাটাস", + "batchStatusInProgress": "চলমান", + "batchStatusValidating": "যাচাই করা হচ্ছে", + "batchStatusFinalizing": "চূড়ান্ত করা হচ্ছে", + "batchStatusCompleted": "সম্পন্ন", + "batchStatusFailed": "ব্যর্থ", + "batchStatusCancelled": "বাতিল করা হয়েছে", + "batchStatusCancelling": "বাতিল করা হচ্ছে", + "batchStatusExpired": "মেয়াদোত্তীর্ণ", + "batchStatusCompletedWithFailures": "ব্যর্থতাসহ সম্পন্ন", + "batchStatusInProgressWithFailures": "চলমান (ব্যর্থতাসহ)", + "batchStatusFinalizingWithFailures": "চূড়ান্ত করা হচ্ছে (ব্যর্থতাসহ)", + "batchStatusCancelledWithFailures": "ব্যর্থতাসহ বাতিল করা হয়েছে", + "batchStatusExpiredWithFailures": "মেয়াদোত্তীর্ণ (আংশিক)", + "wizardCostEstimating": "খরচের হিসাব করা হচ্ছে…", + "wizardCostRequests": "অনুরোধ", + "wizardCostInputTok": "ইনপুট টোকেন", + "wizardCostOutputTok": "আউটপুট টোকেন", + "wizardCostWindow": "সময়সীমা", + "wizardDestinationSelectProvider": "একটি প্রোভাইডার নির্বাচন করুন…", + "wizardDestinationSelectModel": "একটি মডেল নির্বাচন করুন…", + "wizardDestinationConnectProvider": "একটি প্রোভাইডার সংযুক্ত করুন", + "batchListBatchCreated": "ব্যাচ {id} তৈরি হয়েছে — তালিকা রিফ্রেশ করা হচ্ছে…", + "batchListBatchCreatedDismiss": "খারিজ করুন", + "batchListRefreshing": "রিফ্রেশ করা হচ্ছে…", + "batchListRefresh": "রিফ্রেশ করুন", + "uploadFileModalRemove": "সরান", + "uploadFileModalUploading": "আপলোড করা হচ্ছে…", + "wizardInputReading": "ফাইল পড়া হচ্ছে…", + "wizardInputReady": "প্রস্তুত", + "wizardInputLargeFileLabel": "বড় ফাইল — নমুনা যাচাই চলছে", + "wizardInputCsvJsonlReady": "JSONL তৈরি হয়েছে — যাচাইয়ের জন্য প্রস্তুত।", + "wizardInputLargeFileWarning": "বড় ফাইল শনাক্ত হয়েছে — নমুনার ভিত্তিতে যাচাই করা হবে (প্রথম 5 MB + শেষ 100 KB)। সম্পূর্ণ যাচাই সার্ভার-সাইডে সম্পন্ন হবে।", + "wizardCostWindow24h": "24 ঘণ্টার সমাপ্তির সময়সীমা", + "wizardValidationFieldsOk": "আবশ্যক ফিল্ডগুলো বৈধ", + "filesListDelete": "মুছুন", + "filesListDownload": "ডাউনলোড করুন", + "batchDetailActionCancel": "ব্যাচ বাতিল করুন", + "batchDetailActionRetry": "ব্যর্থ অনুরোধগুলো আবার চেষ্টা করুন", + "batchDetailCancelling": "বাতিল করা হচ্ছে…", + "batchDetailRetrying": "পুনরায় চেষ্টা করার প্রস্তুতি চলছে…", + "batchDetailCancelConfirm": "এই ব্যাচটি বাতিল করবেন? চলমান অনুরোধগুলো বন্ধ হয়ে যাবে।", + "batchActionCancelError": "ব্যাচ বাতিল করা যায়নি। আবার চেষ্টা করুন।", + "batchActionRetryError": "ব্যর্থ অনুরোধগুলো পুনরায় চেষ্টা করা যায়নি। আবার চেষ্টা করুন।", + "batchConceptRetentionNote": "ফলাফল ও ত্রুটির ফাইলগুলো ৩০ দিন সংরক্ষিত থাকে (Anthropic: ২৯ দিন)", "batchFilesSizeColumn": "আকার", "toggleNoAuthProvider": "নো-অথরাইজেশন প্রদানকারী টগল করুন", "loadingModels": "মডেলগুলি লোড হচ্ছে…", @@ -988,47 +988,47 @@ "disabled": "নিষ্ক্রিয়", "featureFlagOmnirouteEmergencyFallbackDescription": "বাজেট শেষ হয়ে যাওয়া অনুরোধগুলো জরুরি ফ্রি ফলব্যাক প্রোভাইডার/মডেলে রুট করুন।", "featureFlagArenaEloSyncEnabledDescription": "মডেল ইন্টেলিজেন্স র‍্যাঙ্কিংয়ের জন্য পর্যায়ক্রমিক Arena AI লিডারবোর্ড ELO সিঙ্ক সক্ষম করুন।", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "কম্বো রাউটিংয়ে মডেল পরিবর্তন হলে কথোপকথনের সারাংশ তৈরি করে যুক্ত করুন। মডেল পরিবর্তনগুলোকে স্বতন্ত্রভাবে বিবেচনা করতে এবং বিদ্যমান ও ভবিষ্যতের সব কম্বোর জন্য ব্যাকগ্রাউন্ড হ্যান্ডঅফ অনুরোধ প্রতিরোধ করতে এটি নিষ্ক্রিয় করুন।", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models এ claude/<provider>/<model> মিরর আইডি বিজ্ঞাপন দিন যাতে Claude Code গেটওয়ে মডেল আবিষ্কার non-Claude মডেল তালিকাভুক্ত করে। সতর্কতা: এটি গ্লোবালি সক্ষম হলে সমস্ত ক্লায়েন্টের জন্য ক্যাটালগ এন্ট্রি দ্বিগুণ করে।", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> গেটওয়ে অ্যালিয়াসগুলোর প্রধান সুইচ। চালু (ডিফল্ট): /v1/models প্রতিটি যোগ্য ও চিন্তন-সক্ষম Claude মডেলের জন্য একটি চিন্তনবিহীন ভ্যারিয়েন্ট প্রদর্শন করে এবং কোনো অনুরোধে পাঠানো no-think/ আইডি রিজনিং দমন করে প্রকৃত মডেলে সমাধান হয়। বন্ধ: কোনো ভ্যারিয়েন্ট প্রদর্শিত হয় না এবং no-think/ আইডিকে অন্য যেকোনো অজানা মডেল আইডির মতো বিবেচনা করা হয়। এটি চালু থাকা অবস্থায়ও প্রতি-মডেলের ModelSpec.noThinkingAlias অপ্ট-ইন/অপ্ট-আউট প্রযোজ্য থাকে।", "featureFlagChatVirtualLanesEnabledDescription": "প্রোভাইডার ডিসপ্যাচের জন্য প্রতি-টেন্যান্ট অ্যাডাপ্টিভ ভার্চুয়াল অ্যাডমিশন লেন সক্ষম করুন (#9654): এক টেন্যান্টের বিস্ফোরণ আর অন্য টেন্যান্টে 503 ফেরায় না। OMNIROUTE_CHAT_VIRTUAL_LANES এনভায়রনমেন্ট ভেরিয়েবল এই ড্যাশবোর্ড সেটিংয়ের উপরে প্রাধান্য পায়; পরিবর্তনগুলি সার্ভার পুনরায় চালু হলে কার্যকর হয়।", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ড্যাশবোর্ডের প্রোভাইডার পেজগুলো: প্রোভাইডার যে সংকেতগুলো মেনে চলে, শুধু সেগুলোতেই ফ্রি ব্যাজ দেখান — নথিভুক্ত ফ্রি টিয়ার নেই এমন নিবন্ধিত প্রোভাইডারগুলোর ক্ষেত্রে ডিসপ্লে-নেম হিউরিস্টিক, নন-বুলিয়ান ফ্রি ফিল্ড এবং :free সাফিক্স বাদ দেয়। অফ করলে আগের ব্যাজের নিয়ম বজায় থাকে।", + "featureFlagProxySkipRecentlyFailedDescription": "প্রক্সি পুল এবং opencode-এর প্রতি-অ্যাকাউন্ট রোটেশন এমন কোনো প্রক্সিকে পুনরায় ব্যবহার করা বন্ধ রাখে, যা সদ্য ব্যর্থ হয়েছে (TCP প্রোব প্রত্যাখ্যাত হয়েছে অথবা সেটির মাধ্যমে 429 পাওয়া গেছে)। প্রতি-প্রসেসে এই বিরতির সময়কাল প্রতিবার পুনরাবৃত্তির সঙ্গে দ্বিগুণ হয়, সর্বোচ্চ সীমা পর্যন্ত। প্রক্সির কোনো স্ট্যাটাস লেখা হয় না; সব প্রার্থীকে সরিয়ে রাখলেও নির্বাচন অপরিবর্তিত থাকে। ডিফল্টভাবে বন্ধ: নির্বাচনের ক্রম হুবহু সাধারণ রোটেশনের মতো।", + "featureFlagProxyPoolEgressObservationDescription": "ড্যাশবোর্ডে একটি প্রক্সি পুলের অধীনে দেখান, গত ২৪ ঘণ্টায় পর্যবেক্ষিত কতটি egress IP তার সদস্যদের সেবা দিয়েছে, কতটি সংযোগ সেগুলো ব্যবহার করেছে এবং একটি IP-এর পেছনে সর্বাধিক কতটি দেখা গেছে। এটি শুধু পাঠযোগ্য, প্রক্সি লগ থেকে গণনা করা হয় এবং রাউটিংয়ে কখনো ব্যবহার করা হয় না। ডিফল্টভাবে বন্ধ: পুল এডিটর অপরিবর্তিত থাকে এবং পর্যবেক্ষণ রুট null প্রদান করে।", + "featureFlagProxyHealthBlockedResetsStreakDescription": "প্রক্সি হেলথ সুইপে, টার্গেট প্রত্যাখ্যান করেছে এমন কোনো প্রোবকে (401/403/429: প্রক্সি রিলে করেছে, কিন্তু গন্তব্য এই egress IP প্রত্যাখ্যান করেছে) সফলভাবে পরিবেশিত প্রোবের মতো প্রক্সির ধারাবাহিক ব্যর্থতার ধারা রিসেট করতে দিন। ডিফল্টভাবে বন্ধ: প্রত্যাখ্যান নিরপেক্ষ থাকে এবং ধারাটি বজায় রাখে। উভয় ক্ষেত্রেই 5xx অনির্ণায়ক থাকে এবং কোনো প্রত্যাখ্যান কখনোই প্রক্সিকে সরায়, নিষ্ক্রিয় করে বা পুনরায় সক্রিয় করে না।", "sidebar": { - "home": "Home", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "usage": "Usage", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", + "home": "হোম", + "dashboard": "ড্যাশবোর্ড", + "providers": "প্রোভাইডার", + "combos": "কম্বো", + "usage": "ব্যবহার", + "analytics": "বিশ্লেষণ", + "costs": "খরচ", + "health": "স্বাস্থ্য", "proxy": "প্রক্সি", "limits": "Limits & Quotas", - "cliTools": "CLI Tools", - "media": "Media", - "settings": "Settings", - "translator": "Translator", - "playground": "Playground", - "searchTools": "Search Tools", - "agents": "Agents", + "cliTools": "CLI টুলস", + "media": "মিডিয়া", + "settings": "সেটিংস", + "translator": "অনুবাদক", + "playground": "প্লেগ্রাউন্ড", + "searchTools": "সার্চ টুলস", + "agents": "এজেন্ট", "cloudAgents": "ক্লাউড এজেন্ট", - "memory": "Memory", - "skills": "Skills", + "memory": "মেমোরি", + "skills": "স্কিল", "omniSkills": "OmniSkills", "agentSkills": "এজেন্ট দক্ষতা", "chaosConfig": "ক্যাওস মোড", - "docs": "Docs", - "issues": "Issues", - "endpoints": "Endpoints", + "docs": "ডকুমেন্টেশন", + "issues": "সমস্যা", + "endpoints": "এন্ডপয়েন্ট", "endpointsSubtitle": "আপনার AI কানেকশন ইউআরএল", - "apiManager": "API Keys", + "apiManager": "API কী", "apiManagerSubtitle": "API কী এবং অ্যাক্সেস পরিচালনা করুন", "embeddedServices": "এমবেডেড সার্ভিস", "embeddedServicesSubtitle": "স্থানীয় প্রক্সি সার্ভিস পরিচালনা করুন", - "logs": "Logs", + "logs": "লগ", "webhooks": "ওয়েবহুক", "webhooksSubtitle": "ইভেন্টের বিজ্ঞপ্তি পান", "logExport": "লগ রপ্তানি", @@ -1037,82 +1037,82 @@ "batchSubtitle": "একাধিক অনুরোধ প্রক্রিয়া", "contextCavemanSubtitle": "প্রম্পট কম্প্রেশন", "contextRtkSubtitle": "আউটপুট ফিল্টারিং", - "auditLog": "Audit Log", - "shutdown": "Shutdown", - "restart": "Restart", - "shutdownConfirm": "Shut down OmniRoute?", - "restartConfirm": "Restart OmniRoute?", + "auditLog": "অডিট লগ", + "shutdown": "বন্ধ করুন", + "restart": "পুনরায় চালু করুন", + "shutdownConfirm": "OmniRoute বন্ধ করবেন?", + "restartConfirm": "OmniRoute পুনরায় চালু করবেন?", "version": "v{version}", "debug": "Debug", - "system": "System", - "help": "Help", + "system": "সিস্টেম", + "help": "সহায়তা", "primarySection": "Main", "cliSection": "CLI", "debugSection": "Debug", "systemSection": "System", "helpSection": "Help", - "serverDisconnected": "Server Disconnected", - "serverDisconnectedMsg": "The proxy server has been stopped or is restarting.", - "expandSidebar": "Expand sidebar", - "collapseSidebar": "Collapse sidebar", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", - "cliToolsShort": "Tools", + "serverDisconnected": "সার্ভার সংযোগ বিচ্ছিন্ন", + "serverDisconnectedMsg": "প্রক্সি সার্ভারটি বন্ধ করা হয়েছে অথবা পুনরায় চালু হচ্ছে।", + "expandSidebar": "সাইডবার প্রসারিত করুন", + "collapseSidebar": "সাইডবার সংকুচিত করুন", + "themes": "থিমসমূহ", + "presetColors": "জনপ্রিয় রং", + "createTheme": "থিম তৈরি করুন", + "chooseColor": "একটি রং বেছে নিন", + "themeCoral": "প্রবাল", + "themeBlue": "নীল", + "themeRed": "লাল", + "themeGreen": "সবুজ", + "themeViolet": "বেগুনি", + "themeOrange": "কমলা", + "themeCyan": "সায়ান", + "cliToolsShort": "টুলসমূহ", "cache": "Cache", "cacheShort": "Cache", "batch": "Batch Testing", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "themeSystem": "থিম সিস্টেম", + "whitelabelingDesc": "হোয়াইটলেবেলিংয়ের বিবরণ", + "switchThemes": "থিম পরিবর্তন করুন", + "themeAccentDesc": "থিম অ্যাকসেন্টের বিবরণ", + "uploadFavicon": "ফ্যাভিকন আপলোড করুন", + "themeDark": "গাঢ় থিম", + "customLogoDesc": "কাস্টম লোগোর বিবরণ", + "sidebarVisibilityToggle": "সাইডবারের দৃশ্যমানতা টগল করুন", + "themeAccent": "থিম অ্যাকসেন্ট", + "resetFavicon": "ফ্যাভিকন রিসেট করুন", + "whitelabeling": "হোয়াইটলেবেলিং", + "darkMode": "ডার্ক মোড", + "uploadLogo": "লোগো আপলোড করুন", + "themeLight": "হালকা থিম", + "appName": "অ্যাপের নাম", + "appNameDesc": "অ্যাপের নামের বিবরণ", + "resetLogo": "লোগো রিসেট করুন", + "customFavicon": "কাস্টম ফ্যাভিকন", + "hideHealthLogs": "স্বাস্থ্য লগ লুকান", + "customLogo": "কাস্টম লোগো", + "appearance": "চেহারা", + "themeSelectionAria": "থিম নির্বাচনের ARIA", + "themeCreate": "থিম তৈরি করুন", + "customFaviconDesc": "কাস্টম ফ্যাভিকনের বিবরণ", + "logoPreview": "লোগোর প্রিভিউ", + "themeCustom": "কাস্টম থিম", + "hideHealthLogsDesc": "স্বাস্থ্য লগ লুকানোর বিবরণ", + "faviconPreview": "ফ্যাভিকন প্রিভিউ", + "changelog": "পরিবর্তনের তালিকা", + "contextSection": "কনটেক্সট ও ক্যাশ", + "contextCaveman": "কেভম্যান", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "ইঞ্জিন কম্বো", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "আল্ট্রা", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "কম্প্রেশন সেটিংস", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "কম্বো স্টুডিও", "combosLiveSubtitle": "লাইভ রাউটিং ক্যাসকেড", "compressionStudio": "Compression Studio", "compressionExclusions": "বর্জনসমূহ", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "লাইভ ইঞ্জিন ক্যাসকেড", "compressionExclusionsSubtitle": "প্রতি-মডেল/এন্ডপয়েন্ট বাইপাস", "chaosConfigSubtitle": "মাল্টি-মডেল প্যারালাল এক্সিকিউশন", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "রাউটিং", + "protocolsSection": "প্রোটোকল", + "agentsAiSection": "এজেন্ট ও AI", + "cacheContextSection": "ক্যাশ ও কনটেক্সট", + "analyticsSection": "বিশ্লেষণ", + "costsSection": "খরচ", + "monitoringSection": "পর্যবেক্ষণ", + "auditSecuritySection": "অডিট ও নিরাপত্তা", + "devtoolsSection": "ডেভ টুলস", + "configurationSection": "কনফিগারেশন", + "aiFeaturesSection": "AI ফিচার", "mcp": "MCP", "a2a": "A2A", "plugins": "প্লাগইন", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "API এন্ডপয়েন্ট", + "batchFiles": "ফাইল", + "analyticsEvals": "মূল্যায়ন", + "analyticsSearch": "অনুসন্ধান", + "analyticsUtilization": "ব্যবহারমাত্রা", + "analyticsComboHealth": "কম্বোর স্বাস্থ্য", + "analyticsCompression": "কম্প্রেশন", + "costsBudget": "বাজেট", "costsFreeTiers": "ফ্রি-টিয়ার বাজেট", "costsFreeTiersSubtitle": "মাসিক ফ্রি-টোকেন বরাদ্দ", "freeProviderRankings": "ফ্রি প্রোভাইডার র‍্যাঙ্কিং", "freeProviderRankingsSubtitle": "মডেল ELO স্কোর অনুযায়ী র‍্যাঙ্ক করা সেরা ফ্রি প্রোভাইডারসমূহ", "radar": "রাডার ক্যাটালগ", "radarSubtitle": "কমিউনিটি-সমৃদ্ধ ফ্রি মডেল ক্যাটালগ", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "কোটা শেয়ারিং", + "costsPricing": "মূল্য নির্ধারণ", + "logsProxy": "প্রক্সি লগ", + "logsConsole": "কনসোল", + "logsActivity": "কার্যকলাপ", + "auditMcp": "MCP অডিট", "auditA2a": "A2A নিরীক্ষা", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "চেহারা", + "settingsAi": "AI সেটিংস", + "settingsSecurity": "নিরাপত্তা", "settingsAccessTokens": "অ্যাক্সেস টোকেন", "settingsFeatureFlags": "বৈশিষ্ট্য পতাকা", "settingsCache": "ক্যাশে", "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsRouting": "রাউটিং", + "settingsResilience": "সহনশীলতা", "modelLockout": "মডেল লকআউট", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "উন্নত", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "প্রোভাইডার কোটা", + "providerQuota": "প্রোভাইডার কোটা", + "runtime": "রানটাইম", + "consoleLogs": "কনসোল লগ", + "logsTimeline": "টাইমলাইন", "logsTimelineSubtitle": "ভিজ্যুয়াল রিকোয়েস্ট টাইমলাইন", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", + "conversations": "কথোপকথন", + "conversationsSubtitle": "বহু-পর্যায়ের এজেন্টভিত্তিক কথোপকথন", + "globalRouting": "গ্লোবাল রাউটিং", "mitmProxy": "MITM Proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "এজেন্টভিত্তিক ফিচার", + "otherFeaturesSection": "অন্যান্য ফিচার", + "compressionContextGroup": "কম্প্রেশন কনটেক্সট", + "gamificationGroup": "গেমিফিকেশন", + "toolsGroup": "টুলস", + "integrationsGroup": "ইন্টিগ্রেশন", + "proxyGroup": "প্রক্সি", + "costsParametersGroup": "খরচের প্যারামিটার", + "auditGroup": "অডিট", + "batchGroup": "ব্যাচ", + "homeSubtitle": "ড্যাশবোর্ডের সারসংক্ষেপ", + "providersSubtitle": "AI প্রোভাইডার পরিচালনা করুন", + "quotaTrackerSubtitle": "ব্যবহারের সীমা ট্র্যাক করুন", + "providerQuotaSubtitle": "প্রোভাইডারের ব্যবহারের সীমা ট্র্যাক করুন", + "runtimeSubtitle": "রিয়েল-টাইম সহনশীলতা ও সেশন", + "contextCombosSubtitle": "কম্প্রেশন ইঞ্জিনগুলো একত্রিত করুন", + "cliToolsSubtitle": "CLI রানটাইম কনফিগার করুন", + "agentsSubtitle": "স্থানীয় এজেন্ট পরিচালনা করুন", + "cloudAgentsSubtitle": "ক্লাউড-ভিত্তিক এজেন্ট পরিচালনা করুন", + "apiEndpointsSubtitle": "কাস্টম এন্ডপয়েন্ট উন্মুক্ত করুন", + "proxySubtitle": "HTTP প্রক্সি সেটিংস", + "mitmProxySubtitle": "MITM ইন্টারসেপশন", + "oneProxySubtitle": "পাবলিক প্রক্সি গেটওয়ে", + "leaderboard": "লিডারবোর্ড", + "profile": "প্রোফাইল", + "tokens": "টোকেন", + "gamificationAdmin": "গ্যামিফিকেশন অ্যাডমিন", + "leaderboardSubtitle": "র্যাঙ্কিং ও অর্জনসমূহ", + "profileSubtitle": "অ্যাকাউন্ট ও পছন্দসমূহ", + "tokensSubtitle": "টোকেন ব্যবহার ও বাজেট", + "gamificationAdminSubtitle": "অস্বাভাবিকতা পর্যবেক্ষণ ও প্রতারণা প্রতিরোধ", + "usageSubtitle": "ট্রাফিক ও ব্যবহারের পরিসংখ্যান", + "analyticsComboHealthSubtitle": "কম্বো টার্গেটের নির্ভরযোগ্যতা", + "analyticsUtilizationSubtitle": "প্রোভাইডার ব্যবহার", + "costsSubtitle": "ব্যয়ের বিশদ বিবরণ", + "cacheSubtitle": "ক্যাশ হিটের হার", + "analyticsCompressionSubtitle": "টোকেন সাশ্রয়ের পরিসংখ্যান", + "analyticsSearchSubtitle": "সার্চ টুল অ্যানালিটিক্স", + "analyticsEvalsSubtitle": "ইভ্যাল স্যুটের ফলাফল", "providerStats": "প্রোভাইডার পরিসংখ্যান", "providerStatsSubtitle": "লেটেন্সি এবং পারফরম্যান্স মেট্রিক্স", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "অ্যাপ্লিকেশন লগ", + "logsProxySubtitle": "প্রক্সি ট্রাফিক লগ", + "consoleLogsSubtitle": "কনসোল আউটপুট", + "logsActivitySubtitle": "ব্যবহারকারীর কার্যকলাপের লগ", + "healthSubtitle": "সিস্টেমের স্বাস্থ্য পরীক্ষা", + "costsPricingSubtitle": "মডেলভিত্তিক মূল্য নির্ধারণের নিয়ম", + "costsBudgetSubtitle": "বাজেটের সীমা", + "costsQuotaShareSubtitle": "কীগুলোর মধ্যে প্রোভাইডার কোটা ভাগ করুন", + "auditLogSubtitle": "অনুমোদন অডিট", + "auditMcpSubtitle": "MCP সার্ভার অডিট", + "auditA2aSubtitle": "A2A প্রোটোকল অডিট", + "translatorSubtitle": "ফরম্যাট রূপান্তর", + "playgroundSubtitle": "প্রম্পট লাইভ পরীক্ষা করুন", + "searchToolsSubtitle": "সার্চ টুল রেজিস্ট্রি", + "memorySubtitle": "স্থায়ী এজেন্ট মেমরি", + "omniSkillsSubtitle": "স্যান্ডবক্স স্কিল রেজিস্ট্রি", + "agentSkillsSubtitle": "A2A স্কিল রেজিস্ট্রি", + "mcpSubtitle": "MCP সার্ভার নিয়ন্ত্রণ", + "a2aSubtitle": "A2A প্রোটোকল সার্ভার", "pluginsSubtitle": "প্লাগইন মার্কেটপ্লেস & ইনস্টল", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "ক্যাশ করা মিডিয়া ফাইল", + "batchFilesSubtitle": "ব্যাচ ইনপুট/আউটপুট ফাইল", + "settingsSubtitle": "সব সেটিংস", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "থিম ও লেআউট", + "settingsAiSubtitle": "AI আচরণের ডিফল্ট", + "globalRoutingSubtitle": "গ্লোবাল রাউটিং নিয়ম", + "settingsResilienceSubtitle": "পুনঃচেষ্টা ও ব্রেকার", + "settingsAdvancedSubtitle": "উন্নত ব্যবহারকারীর বিকল্প", + "settingsSecuritySubtitle": "প্রমাণীকরণ ও এনক্রিপশন", "settingsAccessTokensSubtitle": "রিমোট মোডের জন্য স্কোপড CLI টোকেন", "settingsFeatureFlagsSubtitle": "সিস্টেমের ক্ষমতা টগল করুন", "settingsCacheSubtitle": "মডেল ক্যাটালগ এবং প্রতিক্রিয়া ক্যাশিং", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "সাইডবার", + "settingsSidebarSubtitle": "সাইডবারের লেআউট কাস্টমাইজ করুন", "settingsAuthzSubtitle": "রুট ইনভেন্টরি এবং বাইপাস পলিসি", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "ডকুমেন্টেশন", + "issuesSubtitle": "বাগ রিপোর্ট করুন", + "changelogSubtitle": "রিলিজ নোট", "costsQuotaPlans": "প্ল্যান & কোটা", "costsQuotaPlansSubtitle": "প্রোভাইডার অনুযায়ী প্ল্যান কনফিগার করুন", "activity": "কার্যকলাপ", @@ -1278,8 +1278,8 @@ "agentBridge": "এজেন্ট ব্রিজ", "agentBridgeSubtitle": "IDE এজেন্ট ট্র্যাফিক ইন্টারসেপ্ট করুন", "trafficInspector": "ট্র্যাফিক ইন্সপেক্টর", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "আপনার অ্যাপগুলোর অনুরোধ ও প্রতিক্রিয়ার ট্রাফিক পরিদর্শন করুন", + "trafficInspectorPurpose": "আপনার অ্যাপ্লিকেশন AI প্রদানকারীদের কাছে ঠিক কী পাঠায় এবং তাদের কাছ থেকে কী গ্রহণ করে তা দেখুন। যেকোনো OpenAI-সামঞ্জস্যপূর্ণ ক্লায়েন্টের সঙ্গে কাজ করে।", "cliCode": "CLI কোড", "cliCodeSubtitle": "OmniRoute-এর দিকে নির্দেশিত কোড টুল", "cliAgents": "CLI এজেন্ট", @@ -1345,7 +1345,7 @@ "refresh": "রিফ্রেশ", "loading": "ওয়েবহুক লোড হচ্ছে...", "never": "কখনই না", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {কোনো ব্যর্থতা নেই} one {#টি ব্যর্থতা} other {#টি ব্যর্থতা}}", "testWebhook": "পরীক্ষা পাঠান", "testSuccess": "টেস্ট ওয়েবহুক সফলভাবে পাঠানো হয়েছে।", "testFailed": "ওয়েবহুক পরীক্ষা করা যায়নি।", @@ -1542,20 +1542,20 @@ "provider.credentials.bulk_imported": "প্রোভাইডার ক্রেডেনশিয়াল বাল্ক ইম্পোর্ট করা হয়েছে", "provider.credentials.created": "প্রোভাইডার ক্রেডেনশিয়াল তৈরি করা হয়েছে", "provider.credentials.imported": "প্রোভাইডার ক্রেডেনশিয়াল ইম্পোর্ট করা হয়েছে", - "provider.credentials.revoked": "Provider Credentials Revoked", - "provider.credentials.updated": "Provider Credentials Updated", - "provider.validation.ssrf_blocked": "Provider SSRF Blocked", - "quota.plan.updated": "Quota Plan Updated", - "quota.pool.created": "Quota Pool Created", - "quota.pool.deleted": "Quota Pool Deleted", - "quota.pool.updated": "Quota Pool Updated", - "quota.store.driver_changed": "Quota Store Driver Changed", - "server.start": "Server Start", - "service.reveal_api_key": "Service API Key Revealed", - "settings.update": "Settings Updated", - "settings.update_failed": "Settings Update Failed", - "sync.token.created": "Sync Token Created", - "sync.token.revoked": "Sync Token Revoked" + "provider.credentials.revoked": "প্রদানকারীর শংসাপত্র প্রত্যাহার করা হয়েছে", + "provider.credentials.updated": "প্রদানকারীর শংসাপত্র আপডেট করা হয়েছে", + "provider.validation.ssrf_blocked": "প্রদানকারীর SSRF ব্লক করা হয়েছে", + "quota.plan.updated": "কোটা প্ল্যান আপডেট করা হয়েছে", + "quota.pool.created": "কোটা পুল তৈরি করা হয়েছে", + "quota.pool.deleted": "কোটা পুল মুছে ফেলা হয়েছে", + "quota.pool.updated": "কোটা পুল আপডেট করা হয়েছে", + "quota.store.driver_changed": "কোটা স্টোর ড্রাইভার পরিবর্তন করা হয়েছে", + "server.start": "সার্ভার চালু হয়েছে", + "service.reveal_api_key": "সার্ভিস API কী প্রকাশ করা হয়েছে", + "settings.update": "সেটিংস আপডেট করা হয়েছে", + "settings.update_failed": "সেটিংস আপডেট ব্যর্থ হয়েছে", + "sync.token.created": "সিঙ্ক টোকেন তৈরি করা হয়েছে", + "sync.token.revoked": "সিঙ্ক টোকেন প্রত্যাহার করা হয়েছে" }, "mcpMetricCalls24h": "কল (২৪ ঘণ্টা)", "mcpMetricSuccessRate": "সফলতার হার", @@ -1563,91 +1563,91 @@ "mcpMetricTopTool": "শ্রেষ্ঠ টুল" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "থিম", + "description": "একটি পূর্বনির্ধারিত থিম বেছে নিন অথবা একটি রং দিয়ে নিজের থিম তৈরি করুন", + "presetColors": "জনপ্রিয় রং", + "customTheme": "কাস্টম থিম", + "customThemeDesc": "থিম তৈরি করুন-এ ক্লিক করে একটি রং বেছে নিন", + "createTheme": "থিম তৈরি করুন", + "activePreset": "সক্রিয় থিম" }, "header": { - "logout": "Logout", - "quickNavigation": "Quick nav", - "quickNavigationTitle": "Quick navigation (⌘K / Ctrl+K)", - "openQuickNavigation": "Open quick navigation", - "switchToLightMode": "Switch to light mode", - "switchToDarkMode": "Switch to dark mode", - "language": "Language", - "providers": "Providers", - "providerDescription": "Manage your AI provider connections", - "combos": "Combos", - "comboDescription": "Model combos with fallback", - "usage": "Usage & Analytics", - "usageDescription": "Monitor your API usage, token consumption, and request logs", - "analytics": "Analytics", - "analyticsDescription": "Charts, trends, and evaluation insights", - "cliTools": "CLI Tools", - "cliToolsDescription": "Configure CLI tools", - "home": "Home", - "homeDescription": "Welcome to OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "logout": "লগআউট", + "quickNavigation": "দ্রুত নেভিগেশন", + "quickNavigationTitle": "দ্রুত নেভিগেশন (⌘K / Ctrl+K)", + "openQuickNavigation": "দ্রুত নেভিগেশন খুলুন", + "switchToLightMode": "লাইট মোডে পরিবর্তন করুন", + "switchToDarkMode": "ডার্ক মোডে পরিবর্তন করুন", + "language": "ভাষা", + "providers": "প্রোভাইডার", + "providerDescription": "আপনার AI প্রোভাইডার সংযোগগুলো পরিচালনা করুন", + "combos": "কম্বো", + "comboDescription": "ফলব্যাকসহ মডেল কম্বো", + "usage": "ব্যবহার ও বিশ্লেষণ", + "usageDescription": "আপনার API ব্যবহার, টোকেন খরচ এবং অনুরোধের লগ পর্যবেক্ষণ করুন", + "analytics": "বিশ্লেষণ", + "analyticsDescription": "চার্ট, প্রবণতা এবং মূল্যায়নসংক্রান্ত অন্তর্দৃষ্টি", + "cliTools": "CLI টুল", + "cliToolsDescription": "CLI টুল কনফিগার করুন", + "home": "হোম", + "homeDescription": "OmniRoute-এ স্বাগতম", + "endpoint": "এন্ডপয়েন্ট", + "endpointDescription": "প্রক্সি এন্ডপয়েন্ট, MCP, A2A এবং API এন্ডপয়েন্ট পরিচালনা করুন", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol সার্ভার ব্যবস্থাপনা ও টুল", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", - "settings": "Settings", - "settingsDescription": "Manage your preferences", - "openaiCompatible": "OpenAI Compatible", - "anthropicCompatible": "Anthropic Compatible", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "a2aDescription": "Agent-to-Agent প্রোটোকলের কাজ ও পর্যবেক্ষণযোগ্যতা", + "settings": "সেটিংস", + "settingsDescription": "আপনার পছন্দসমূহ পরিচালনা করুন", + "openaiCompatible": "OpenAI-এর সঙ্গে সামঞ্জস্যপূর্ণ", + "anthropicCompatible": "Anthropic-এর সঙ্গে সামঞ্জস্যপূর্ণ", + "media": "মিডিয়া", + "mediaDescription": "ছবি, ভিডিও এবং সংগীত তৈরি করুন", + "themes": "থিম", + "themesDescription": "সম্পূর্ণ ড্যাশবোর্ড প্যানেলের জন্য একটি রঙের থিম বেছে নিন", + "costsDescription": "সব প্রোভাইডারজুড়ে ব্যয় ট্র্যাক করুন, প্রবণতা বিশ্লেষণ করুন এবং আপনার AI বাজেট পরিচালনা করুন", + "cacheDescription": "প্রোভাইডারের প্রম্পট ক্যাশের দক্ষতা এবং স্থানীয় সেমান্টিক প্রতিক্রিয়ার পুনর্ব্যবহার পর্যবেক্ষণ করুন।", + "limitsDescription": "প্রতিটি API কী ও প্রোভাইডারের জন্য রেট লিমিট এবং কোটা কনফিগার করুন", + "runtimeDescription": "লাইভ রানটাইম পর্যবেক্ষণযোগ্যতা — সার্কিট ব্রেকার, কুলডাউন, মডেল লকআউট, সেশন এবং কোটা সতর্কতা", + "apiManagerDescription": "আপনার OmniRoute ইনস্ট্যান্সের API কী এবং অ্যাক্সেস নিয়ন্ত্রণ পরিচালনা করুন", + "batchDescription": "ব্যাচ করা API কলের মাধ্যমে অ্যাসিঙ্ক্রোনাসভাবে বিপুল পরিমাণ অনুরোধ প্রক্রিয়া করুন", + "contextCavemanDescription": "নিয়মভিত্তিক বার্তা সংকোচন, ভাষা প্যাক, অ্যানালিটিক্স এবং আউটপুট মোড নিয়ন্ত্রণ।", + "contextRtkDescription": "টুল আউটপুট, টার্মিনাল লগ এবং বিল্ড ফলাফলের জন্য কমান্ড-সচেতন সংকোচন।", + "contextCombosDescription": "বিভিন্ন রাউটিং পরিস্থিতিতে ইঞ্জিনগুলো কীভাবে সমন্বিত হবে তা নির্ধারণ করুন।", + "changelogDescription": "সর্বশেষ প্ল্যাটফর্ম ফিচার ও ঘোষণা সম্পর্কে হালনাগাদ থাকুন।", + "agentsDescription": "AI এজেন্ট টুল পরিচালনা ও কনফিগার করুন: Codex, Devin, Jules এবং কাস্টম এজেন্ট", + "cloudAgentsDescription": "লাইভ টাস্ক ট্র্যাকিং ও পরিকল্পনা অনুমোদনসহ ক্লাউড-ভিত্তিক AI এজেন্ট অর্কেস্ট্রেট করুন", + "memoryDescription": "সেমান্টিক সার্চ এবং FTS5 পূর্ণ-পাঠ্য ইনডেক্সিংসহ স্থায়ী কথোপকথনমূলক মেমরি", + "skillsDescription": "স্বয়ংক্রিয় প্রম্পট ও টুল নির্বাহের জন্য স্যান্ডবক্স স্কিল ইনস্টল ও পরিচালনা করুন", + "agentSkillsDescription": "AI ক্লায়েন্ট ইন্টিগ্রেশনের জন্য এক ক্লিকে URL কপি করার সুবিধাসহ এজেন্ট-প্রস্তুত স্কিল ক্যাটালগ", + "translatorDescription": "বিভিন্ন API ফরম্যাটে প্রম্পট অনুবাদ ও পরীক্ষা করুন: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "লাইভ প্রোভাইডার প্রতিক্রিয়া ও ফরম্যাট পরিদর্শনসহ ইন্টার্যাক্টিভভাবে প্রম্পট পরীক্ষা করুন", + "searchToolsDescription": "সার্চ অ্যানালিটিক্স, প্রোভাইডারভিত্তিক বিশ্লেষণ, ক্যাশ হিট রেট এবং খরচ ট্র্যাকিং", + "logsDescription": "রিয়েল-টাইম অনুরোধ লগ, ত্রুটি ট্রেস এবং স্ট্রিমিং ইভেন্ট ইন্সপেক্টর", + "auditDescription": "API কী ব্যবহার, MCP টুল কল এবং নীতিমালা ইভেন্টের কমপ্লায়েন্স অডিট ট্রেইল", + "webhooksDescription": "রিয়েল-টাইম ইভেন্ট নোটিফিকেশন পেতে ওয়েবহুক এন্ডপয়েন্ট কনফিগার করুন", + "healthDescription": "সিস্টেমের সামগ্রিক স্বাস্থ্য: প্রোভাইডার, সার্কিট ব্রেকার, রেট লিমিট এবং ডেটাবেস", + "proxyDescription": "আউটবাউন্ড প্রোভাইডার সংযোগের জন্য আপস্ট্রিম প্রক্সি সেটিংস কনফিগার করুন", + "apiEndpointsDescription": "কাস্টম API এন্ডপয়েন্ট কনফিগারেশন এবং রাউটিং ওভাররাইড পরিচালনা করুন", + "batchFilesDescription": "ব্যাচ জবের আউটপুট ফাইল ও ফলাফল ব্রাউজ এবং পরিচালনা করুন", + "analyticsEvalsDescription": "মডেল মূল্যায়নের ফলাফল এবং পারফরম্যান্স বেঞ্চমার্ক", + "analyticsSearchDescription": "সার্চ কোয়েরি অ্যানালিটিক্স, ক্যাশ হিট রেট এবং খরচ ট্র্যাকিং", + "analyticsUtilizationDescription": "প্রোভাইডার ব্যবহারমাত্রার মেট্রিক্স এবং সক্ষমতা পরিকল্পনা", + "analyticsComboHealthDescription": "কম্বো রাউটিং কনফিগারেশনের রিয়েল-টাইম স্বাস্থ্য ও পারফরম্যান্স", + "analyticsCompressionDescription": "কনটেক্সট সংকোচন অ্যানালিটিক্স এবং টোকেন সাশ্রয়", + "costsBudgetDescription": "প্রতি API কী ও প্রোভাইডারের জন্য বাজেট সীমা এবং ব্যয় সতর্কতা", + "costsPricingDescription": "টোকেন খরচ গণনার জন্য কাস্টম মূল্য কনফিগারেশন", + "logsProxyDescription": "আপস্ট্রিম প্রক্সি অনুরোধ লগ এবং ট্রাফিক পরিদর্শন", + "logsConsoleDescription": "অ্যাপ্লিকেশন কনসোল আউটপুট এবং ডিবাগ লগ", + "logsActivityDescription": "ব্যবহারকারীর কার্যকলাপ ও সিস্টেম ইভেন্টের অডিট ট্রেইল", + "auditMcpDescription": "MCP টুল আহ্বানের অডিট ট্রেইল এবং কমপ্লায়েন্স রেকর্ড", "auditA2a": "A2A নিরীক্ষা", "auditA2aDescription": "A2A টাস্ক এক্সিকিউশন অডিট ট্রেইল, স্টেট ট্রানজিশন, এবং স্কিল ইনভোকেশন রেকর্ড", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "থিম, ব্র্যান্ডিং এবং ভিজ্যুয়াল কাস্টমাইজেশন", + "settingsAiDescription": "AI আচরণ, চিন্তন বাজেট, ভিশন এবং মেমরি সেটিংস", "settingsCacheDescription": "মডেল ক্যাটালগ ক্যাশে এন্ট্রির জন্য TTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "প্রমাণীকরণ, অনুমোদন এবং অ্যাক্সেস নিয়ন্ত্রণ সেটিংস", "featureFlags": "বৈশিষ্ট্য পতাকা", "featureFlagsDescription": "নিয়ন্ত্রণ সিস্টেম ক্ষমতা এবং পরীক্ষামূলক বৈশিষ্ট্য", "featureFlagsActive": "{count} সক্রিয়", @@ -1671,36 +1671,36 @@ "featureFlagsNoResults": "কোনো পতাকা আপনার অনুসন্ধানের সাথে মেলে না", "featureFlagsSaved": "পতাকা আপডেট করা হয়েছে", "featureFlagsError": "পতাকা আপডেট করতে ব্যর্থ হয়েছে৷", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", - "omniSkillsDescription": "Install and manage sandbox skills for automated prompt and tool execution" + "settingsRoutingDescription": "রাউটিং নিয়ম, মডেল উপনাম, কম্বো ডিফল্ট এবং অবনমন সেটিংস", + "settingsResilienceDescription": "সার্কিট ব্রেকার, পুনঃচেষ্টা এবং ফলব্যাক কনফিগারেশন", + "settingsAdvancedDescription": "উন্নত পেলোড নিয়ম, অনুরোধ সীমা এবং প্রক্সি API সেটিংস", + "mitmProxyDescription": "ট্রাফিক পরিদর্শন ও ডিবাগিংয়ের জন্য MITM প্রক্সি সেটিংস কনফিগার করুন", + "oneProxyDescription": "উন্নত প্রক্সি চেইনিংয়ের জন্য 1Proxy সেটিংস কনফিগার করুন", + "omniSkillsDescription": "স্বয়ংক্রিয় প্রম্পট ও টুল এক্সিকিউশনের জন্য স্যান্ডবক্স স্কিল ইনস্টল ও পরিচালনা করুন" }, "cloudSyncStatus": { - "synced": "Synced", - "syncing": "Syncing...", - "off": "Sync off", - "error": "Sync error", - "disabled": "Disabled", - "connected": "connected", - "disconnected": "disconnected", - "lastSync": "Remote settings sync {status} — Last sync: {time}", - "statusLabel": "Remote settings sync status: {status}" + "synced": "সিঙ্ক হয়েছে", + "syncing": "সিঙ্ক হচ্ছে...", + "off": "সিঙ্ক বন্ধ", + "error": "সিঙ্ক ত্রুটি", + "disabled": "নিষ্ক্রিয়", + "connected": "সংযুক্ত", + "disconnected": "সংযোগ বিচ্ছিন্ন", + "lastSync": "রিমোট সেটিংস সিঙ্ক {status} — সর্বশেষ সিঙ্ক: {time}", + "statusLabel": "রিমোট সেটিংস সিঙ্কের অবস্থা: {status}" }, "breadcrumbs": { - "ariaLabel": "Breadcrumb", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "settings": "Settings", - "general": "General", - "appearance": "Appearance", - "ai": "AI Settings", - "routing": "Routing", - "resilience": "Resilience", - "advanced": "Advanced", + "ariaLabel": "ব্রেডক্রাম্ব", + "dashboard": "ড্যাশবোর্ড", + "providers": "প্রোভাইডারসমূহ", + "combos": "কম্বোসমূহ", + "settings": "সেটিংস", + "general": "সাধারণ", + "appearance": "চেহারা", + "ai": "AI সেটিংস", + "routing": "রাউটিং", + "resilience": "স্থিতিস্থাপকতা", + "advanced": "উন্নত", "accessTokens": "অ্যাক্সেস টোকেন", "featureFlags": "ফিচার ফ্ল্যাগ", "logs": "লগ", @@ -1761,8 +1761,8 @@ "quotaShare": "কোটা শেয়ার", "discovery": "ডিসকভারি", "freeProviderRankings": "ফ্রি প্রোভাইডার র‍্যাঙ্কিং", - "radar": "Radar", - "setup": "Setup", + "radar": "রাডার", + "setup": "সেটআপ", "freeTiers": "ফ্রি টিয়ার", "gamification": "গেমিফিকেশন", "leaderboard": "লিডারবোর্ড", @@ -1784,53 +1784,53 @@ "orchestration": "অর্কেস্ট্রেশন" }, "home": { - "quickStart": "Quick Start", - "quickStartDesc": "Get up and running in 4 steps. Connect providers, route models, monitor everything.", - "fullDocs": "Full Docs", - "step1Title": "1. Create API key", + "quickStart": "দ্রুত শুরু", + "quickStartDesc": "৪টি ধাপে চালু করুন। প্রোভাইডার সংযুক্ত করুন, মডেল রাউট করুন এবং সবকিছু পর্যবেক্ষণ করুন।", + "fullDocs": "সম্পূর্ণ ডকুমেন্টেশন", + "step1Title": "১. API কী তৈরি করুন", "step1Desc": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "step2Title": "2. Connect providers", - "step2Desc": "Add accounts in Providers. Supports OAuth, API Key, and free tiers.", - "step3Title": "3. Point your client", - "step3Desc": "Set base URL to {url} in your IDE or API client.", - "step4Title": "4. Monitor & optimize", - "step4Desc": "Track tokens, cost and errors in Request Logs and Analytics.", - "providersOverview": "Providers Overview", - "configuredOf": "{configured} configured of {total} available providers", - "noModelsAvailable": "No models available for this provider.", + "step2Title": "২. প্রোভাইডার সংযুক্ত করুন", + "step2Desc": "প্রোভাইডার-এ অ্যাকাউন্ট যোগ করুন। OAuth, API Key এবং বিনামূল্যের টিয়ার সমর্থিত।", + "step3Title": "৩. আপনার ক্লায়েন্টকে নির্দেশ করুন", + "step3Desc": "আপনার IDE বা API ক্লায়েন্টে বেস URL হিসেবে {url} সেট করুন।", + "step4Title": "৪. পর্যবেক্ষণ ও অপ্টিমাইজ করুন", + "step4Desc": "রিকোয়েস্ট লগ এবং অ্যানালিটিক্স-এ টোকেন, খরচ ও ত্রুটি ট্র্যাক করুন।", + "providersOverview": "প্রোভাইডারসমূহের সারসংক্ষেপ", + "configuredOf": "উপলভ্য {total}টি প্রোভাইডারের মধ্যে {configured}টি কনফিগার করা হয়েছে", + "noModelsAvailable": "এই প্রোভাইডারের জন্য কোনো মডেল উপলভ্য নেই।", "noProvidersConfigured": "এখনও কোন প্রদানকারী কনফিগার করা হয়নি", "addProvider": "একটি প্রদানকারী যোগ করুন", - "configureFirst": "Configure a connection first in {providers}", - "configureProvider": "Configure Provider", - "modelAvailable": "{count} model available", - "modelsAvailable": "{count} models available", - "connectionsActive": "{count} connection active", - "connectionsActivePlural": "{count} connections active", - "copyModelName": "Copy model name", - "documentation": "Documentation", - "healthMonitor": "Health Monitor", - "reportIssue": "Report issue", - "activeError": "{active} active · {errors} error", - "topologyLegendActive": "__MISSING__:Active", - "topologyLegendRecent": "__MISSING__:Recent", - "topologyLegendError": "__MISSING__:Error", + "configureFirst": "প্রথমে {providers}-এ একটি সংযোগ কনফিগার করুন", + "configureProvider": "প্রোভাইডার কনফিগার করুন", + "modelAvailable": "{count}টি মডেল উপলভ্য", + "modelsAvailable": "{count}টি মডেল উপলভ্য", + "connectionsActive": "{count}টি সংযোগ সক্রিয়", + "connectionsActivePlural": "{count}টি সংযোগ সক্রিয়", + "copyModelName": "মডেলের নাম কপি করুন", + "documentation": "ডকুমেন্টেশন", + "healthMonitor": "হেলথ মনিটর", + "reportIssue": "সমস্যা রিপোর্ট করুন", + "activeError": "{active}টি সক্রিয় · {errors}টি ত্রুটি", + "topologyLegendActive": "সক্রিয়", + "topologyLegendRecent": "সাম্প্রতিক", + "topologyLegendError": "ত্রুটি", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", - "requestsShort": "{count} reqs", - "providerModelsTitle": "{provider} - Models", - "copiedModel": "Copied: {model}", + "apiKeyLabel": "API কী", + "requestsShort": "{count}টি রিকোয়েস্ট", + "providerModelsTitle": "{provider} - মডেলসমূহ", + "copiedModel": "কপি করা হয়েছে: {model}", "aliasLabel": "alias", - "updateNow": "Update Now", - "updating": "Updating...", - "updateAvailableDesc": "A new version is available. Click to update.", - "updateStarted": "Update started...", + "updateNow": "এখনই আপডেট করুন", + "updating": "আপডেট করা হচ্ছে...", + "updateAvailableDesc": "একটি নতুন সংস্করণ উপলভ্য। আপডেট করতে ক্লিক করুন।", + "updateStarted": "আপডেট শুরু হয়েছে...", "reloadingPageAutomatically": "স্বয়ংক্রিয়ভাবে পৃষ্ঠা পুনরায় লোড হচ্ছে...", "providerTopology": "প্রদানকারী টপোলজি", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "সাম্প্রতিক রিকোয়েস্টসমূহ", + "recentRequestsEmpty": "এখনও কোনো রিকোয়েস্ট নেই।", + "recentRequestsModel": "মডেল", + "recentRequestsTokens": "ইন / আউট", + "recentRequestsWhen": "সময়", "downloadDmg": "DMG ডাউনলোড করুন (macOS)", "downloadDmgDescription": "OmniRoute ডেস্কটপ অ্যাপের একটি নতুন সংস্করণ উপলব্ধ। আপডেট করতে দয়া করে macOS DMG ইনস্টলার ডাউনলোড এবং ইনস্টল করুন (বর্তমান: v{version})।", "downloadExe": "EXE ডাউনলোড করুন (Windows)", @@ -1888,18 +1888,18 @@ "releaseNotes": "রিলিজ নোটস", "readMore": "আরও পড়ুন", "noAuthLabel": "কোন প্রমাণীকরণ নেই", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "রাউট করার জন্য প্রস্তুত হোন", + "readinessTitle": "আপনার প্রথম রিকোয়েস্ট পাঠান", + "readinessSubtitle": "চারটি ছোট ধাপ। এগোনোর সঙ্গে সঙ্গে OmniRoute প্রস্তুতি যাচাই করে।", + "readinessStep1": "একটি প্রোভাইডার সংযুক্ত করুন", + "readinessStep2": "এন্ডপয়েন্ট অথেন্টিকেশন কনফিগার করুন", + "readinessStep3": "আপনার এন্ডপয়েন্ট কপি করুন", + "readinessStep4": "একটি টেস্ট রিকোয়েস্ট পাঠান", + "readinessContinue": "সেটআপ চালিয়ে যান", + "readinessDismiss": "আপাতত বন্ধ করুন" }, "analytics": { - "title": "Analytics", + "title": "বিশ্লেষণ", "usageAnalyticsTitle": "ব্যবহারের বিশ্লেষণ", "diversityScoreTitle": "প্রদানকারী বৈচিত্র্য", "diversityScoreDesc": "সাম্প্রতিক ট্রাফিক উইন্ডোর জন্য প্রোভাইডার কনসেন্ট্রেশন স্ন্যাপশট।", @@ -1967,7 +1967,7 @@ "period7D": "৭ দিন", "period30D": "৩০ দিন", "period90D": "৯০ দিন", - "periodYTD": "YTD", + "periodYTD": "বছরের শুরু থেকে বর্তমান পর্যন্ত", "periodAll": "সব", "totalTokens": "মোট টোকেন", "inputTokens": "ইনপুট টোকেন", @@ -1990,21 +1990,21 @@ "highlightsDiversity": "বৈচিত্র্য", "highlightsFallbackRate": "ফলব্যাক হার", "customRange": "কাস্টম", - "overviewDescription": "Monitor your API usage patterns, token consumption, costs, and activity trends across all providers and models.", - "evalsDescription": "Run evaluation suites to test and validate your LLM endpoints. Compare model quality, detect regressions, and benchmark latency.", - "overview": "Overview", - "evals": "Evals", + "overviewDescription": "সব প্রোভাইডার ও মডেলজুড়ে আপনার API ব্যবহারের ধরন, টোকেন খরচ, ব্যয় এবং কার্যকলাপের প্রবণতা পর্যবেক্ষণ করুন।", + "evalsDescription": "আপনার LLM এন্ডপয়েন্ট পরীক্ষা ও যাচাই করতে মূল্যায়ন স্যুট চালান। মডেলের গুণমান তুলনা করুন, অবনতি শনাক্ত করুন এবং লেটেন্সি বেঞ্চমার্ক করুন।", + "overview": "সারসংক্ষেপ", + "evals": "মূল্যায়ন", "search": "অনুসন্ধান", - "utilization": "Utilization", + "utilization": "ব্যবহার", "routeTrace": "রুট ট্রেস", "sectionsAria": "অ্যানালিটিক্স বিভাগ", - "utilizationDescription": "Provider quota usage trends and rate limit tracking", - "modelStatus": "Model Status", - "modelStatusCooldown": "Cooldown", - "modelStatusUnavailable": "Unavailable", - "modelStatusError": "Error", - "comboHealth": "Combo Health", - "comboHealthDescription": "Combo-level quota, usage distribution, and performance metrics", + "utilizationDescription": "প্রোভাইডারের কোটা ব্যবহারের প্রবণতা ও রেট লিমিট ট্র্যাকিং", + "modelStatus": "মডেলের অবস্থা", + "modelStatusCooldown": "কুলডাউন", + "modelStatusUnavailable": "অনুপলভ্য", + "modelStatusError": "ত্রুটি", + "comboHealth": "কম্বোর স্বাস্থ্য", + "comboHealthDescription": "কম্বো-স্তরের কোটা, ব্যবহারের বণ্টন এবং পারফরম্যান্স মেট্রিক্স", "compressionAnalyticsTitle": "Compression", "compressionAnalyticsDescription": "Compression analytics - token savings, mode breakdown, and provider stats.", "autoRoutingTotalAutoRequests": "মোট স্বয়ংক্রিয় অনুরোধ", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "পারফরম্যান্স", "comboHealthPerformanceDescription": "রাউট করা কম্বো ট্রাফিকের জন্য নির্ভরযোগ্যতা এবং থ্রুপুট।", "comboHealthExecutionTargetsDescription": "স্ট্রাকচার্ড কম্বো টার্গেটের জন্য স্টেপ-লেভেল রানটাইম মেট্রিক্স এবং কোটা ভিজিবিলিটি।", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count}টি অনুরোধ", "comboHealthQuotaScope": "কোটা স্কোপ: {scope}", "comboHealthTrendValue": "ট্রেন্ড: {trend}", "comboHealthFetchFailed": "কম্বো হেলথ ডেটা আনতে ব্যর্থ হয়েছে", @@ -2237,55 +2237,55 @@ "freeTierAvailable": "ফ্রি টিয়ার উপলব্ধ" }, "apiManager": { - "title": "API Keys", - "createKey": "Create API Key", - "key": "Key", - "revokeKey": "Revoke Key", - "revokeConfirm": "Are you sure you want to revoke this API key?", - "noKeys": "No API keys yet", - "noKeysDesc": "Create your first API key to authenticate requests to your endpoint", - "keyLabel": "Key Label", - "permissions": "Permissions", - "expiresAt": "Expires", - "never": "Never", - "revoke": "Revoke", - "showKey": "Show Key", - "hideKey": "Hide Key", - "copyKey": "Copy API Key", - "allModels": "All models", - "selectedModels": "Selected Models", - "readOnly": "Read Only", - "fullAccess": "Full Access", - "keyManagement": "API Key Management", - "keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "title": "API কীসমূহ", + "createKey": "API কী তৈরি করুন", + "key": "কী", + "revokeKey": "কী প্রত্যাহার করুন", + "revokeConfirm": "আপনি কি নিশ্চিত যে এই API কীটি প্রত্যাহার করতে চান?", + "noKeys": "এখনও কোনো API কী নেই", + "noKeysDesc": "আপনার এন্ডপয়েন্টে অনুরোধ প্রমাণীকরণের জন্য প্রথম API কী তৈরি করুন", + "keyLabel": "কীর লেবেল", + "permissions": "অনুমতিসমূহ", + "expiresAt": "মেয়াদ শেষ হবে", + "never": "কখনোই নয়", + "revoke": "প্রত্যাহার করুন", + "showKey": "কী দেখান", + "hideKey": "কী লুকান", + "copyKey": "API কী কপি করুন", + "allModels": "সব মডেল", + "selectedModels": "নির্বাচিত মডেলসমূহ", + "readOnly": "শুধু পঠনযোগ্য", + "fullAccess": "সম্পূর্ণ অ্যাক্সেস", + "keyManagement": "API কী ব্যবস্থাপনা", + "keyManagementDesc": "আপনার এন্ডপয়েন্টে অনুরোধ প্রমাণীকরণের জন্য API কী তৈরি ও পরিচালনা করুন", + "requestFlowAria": "আপনার অ্যাপ একটি API কী ব্যবহার করে OmniRoute-এর মাধ্যমে অনুরোধ পাঠায়", + "requestFlowYourApp": "আপনার অ্যাপ", + "requestFlowApiKey": "API কী", "requestFlowOmniRoute": "OmniRoute", - "totalKeys": "Total Keys", - "restricted": "Restricted", - "totalRequests": "Total Requests", - "modelsAvailable": "Models Available", - "registeredKeys": "Registered Keys", - "keysRegistered": "{count} keys registered", - "keyRegistered": "{count} key registered", - "keysSecurityNote": "Each key isolates usage tracking and can be revoked independently. Keys are masked after creation for security.", - "createFirstKey": "Create Your First Key", - "name": "Name", - "usage": "Usage", - "created": "Created", - "actions": "Actions", - "reqs": "reqs", - "neverUsed": "Never used", - "deleteConfirm": "Delete this API key?", - "usageTips": "Usage Tips", - "tipAuth": "Use API keys in the Authorization header as Bearer YOUR_KEY", - "tipSecure": "Keys are only shown once during creation — store them securely", - "tipSeparate": "Create separate keys for different clients or environments", - "tipRestrict": "Restrict keys to specific models for better security and cost control", - "keyName": "Key Name", + "totalKeys": "মোট কী", + "restricted": "সীমাবদ্ধ", + "totalRequests": "মোট অনুরোধ", + "modelsAvailable": "উপলভ্য মডেল", + "registeredKeys": "নিবন্ধিত কী", + "keysRegistered": "{count}টি কী নিবন্ধিত", + "keyRegistered": "{count}টি কী নিবন্ধিত", + "keysSecurityNote": "প্রতিটি কী ব্যবহারের ট্র্যাকিং আলাদা রাখে এবং স্বতন্ত্রভাবে বাতিল করা যায়। নিরাপত্তার জন্য তৈরির পর কীগুলো আংশিকভাবে গোপন করা হয়।", + "createFirstKey": "আপনার প্রথম কী তৈরি করুন", + "name": "নাম", + "usage": "ব্যবহার", + "created": "তৈরির সময়", + "actions": "কার্যক্রম", + "reqs": "অনুরোধ", + "neverUsed": "কখনো ব্যবহার করা হয়নি", + "deleteConfirm": "এই API কী মুছবেন?", + "usageTips": "ব্যবহারের পরামর্শ", + "tipAuth": "Authorization হেডারে Bearer YOUR_KEY হিসেবে API কী ব্যবহার করুন", + "tipSecure": "তৈরির সময় কীগুলো শুধু একবার দেখানো হয় — সেগুলো নিরাপদে সংরক্ষণ করুন", + "tipSeparate": "বিভিন্ন ক্লায়েন্ট বা পরিবেশের জন্য আলাদা কী তৈরি করুন", + "tipRestrict": "উন্নত নিরাপত্তা ও খরচ নিয়ন্ত্রণের জন্য কীগুলোকে নির্দিষ্ট মডেলে সীমাবদ্ধ করুন", + "keyName": "কী-এর নাম", "keyNamePlaceholder": "e.g., Production Key, Development Key", - "keyNameDesc": "Choose a descriptive name to identify this key's purpose", + "keyNameDesc": "এই কী-এর উদ্দেশ্য শনাক্ত করতে একটি বর্ণনামূলক নাম বেছে নিন", "managementAccessDesc": "এই API কীকে OmniRoute কনফিগারেশন পরিচালনা করার অনুমতি দিন।", "selfServiceVisibility": "স্ব-পরিষেবা দৃশ্যমানতা", "selfServiceVisibilityDesc": "এই কী তার নিজস্ব ব্যবহার এবং শেয়ার করা আপস্ট্রিম কোটা সম্পর্কে কী দেখতে পারবে তা নিয়ন্ত্রণ করুন।", @@ -2295,84 +2295,84 @@ "sharedAccountQuotaVisibilityDesc": "একটি নির্দিষ্ট সংযোগ কনফিগার করা থাকলে এই কীকে শেয়ার করা আপস্ট্রিম অ্যাকাউন্ট কোটা দেখতে দিন।", "localUsageCommand": "লোকাল usage কমান্ডের অনুমতি দিন", "localUsageCommandDesc": "আপস্ট্রিম প্রোভাইডারকে কল না করেই ক্যাশ করা ব্যবহার এবং কোটার তথ্য পুনরুদ্ধার করতে এই API কী-কে @@om-usage ব্যবহারের অনুমতি দেয়।", - "localUsageCommandBadge": "Usage cmd", - "keyCreated": "API Key Created", - "keyCreatedSuccess": "Key created successfully!", - "keyCreatedNote": "Copy and store this key now — it won't be shown again.", - "done": "Done", - "savePermissions": "Save Permissions", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "localUsageCommandBadge": "ব্যবহারের কমান্ড", + "keyCreated": "API কী তৈরি হয়েছে", + "keyCreatedSuccess": "কী সফলভাবে তৈরি হয়েছে!", + "keyCreatedNote": "কীটি এখনই কপি করে সংরক্ষণ করুন — এটি আর দেখানো হবে না।", + "done": "সম্পন্ন", + "savePermissions": "অনুমতি সংরক্ষণ করুন", + "endpointRestrictions": "অনুমোদিত এন্ডপয়েন্ট", + "allEndpointsAllowed": "এই কী সব API এন্ডপয়েন্টে প্রবেশ করতে পারে।", + "endpointsRestricted": "{count}টি এন্ডপয়েন্টে সীমাবদ্ধ{count, plural, one {} other {s}}।", + "autoResolve": "স্বয়ংক্রিয় সমাধান", + "autoResolveDesc": "এই API কী-এর জন্য অস্পষ্ট মডেলের নাম স্বয়ংক্রিয়ভাবে নেটিভ প্রোভাইডারে সমাধান করুন।", "streamDefaultMode": "স্ট্রিম ডিফল্ট সামঞ্জস্য", "streamDefaultModeDesc": "এই কী-এর জন্য বাদ দেওয়া `stream` ফ্ল্যাগ নিয়ন্ত্রণ করে। ক্লায়েন্ট স্পষ্টভাবে SSE অনুরোধ না করা পর্যন্ত JSON মোড নন-স্ট্রিমিং প্রতিক্রিয়া প্রদান করে।", "streamDefaultLegacy": "লেগ্যাসি", "streamDefaultJson": "JSON সামঞ্জস্যপূর্ণ", "streamDefaultBadge": "JSON স্ট্রিম ডিফল্ট", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", - "allowAll": "Allow All", - "restrict": "Restrict", - "allowAllInfo": "This key can access all available models.", - "restrictInfo": "This key can access {selected} of {total} models.", - "selected": "{count} selected", - "all": "All", - "clear": "Clear", - "searchModels": "Search models by name or provider...", - "noModelsFound": "No models found", - "keyNameRequired": "Key name is required", - "keyNameTooLong": "Key name must be {max} characters or less", - "keyNameInvalid": "Key name can only contain letters, numbers, spaces, hyphens, and underscores", - "invalidKeyName": "Invalid key name", - "failedCreateKey": "Failed to create key", - "failedCreateKeyRetry": "Failed to create key. Please try again.", - "invalidKeyId": "Invalid key ID", - "failedDeleteKey": "Failed to delete key", - "failedDeleteKeyRetry": "Failed to delete key. Please try again.", - "invalidModelsSelection": "Invalid models selection", - "cannotSelectMoreThanModels": "Cannot select more than {max} models", - "failedUpdatePermissions": "Failed to update permissions", - "failedUpdatePermissionsRetry": "Failed to update permissions. Please try again.", - "unknownProvider": "unknown", - "copyMaskedKey": "Copy masked key", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyActive": "কী সক্রিয়", + "keyActiveDesc": "এই API কী সক্রিয় বা নিষ্ক্রিয় করুন। নিষ্ক্রিয় কীগুলো অবিলম্বে 403 দিয়ে প্রত্যাখ্যাত হয়।", + "accessSchedule": "অ্যাক্সেসের সময়সূচি", + "accessScheduleDesc": "সপ্তাহের নির্দিষ্ট দিন ও সময়ে অ্যাক্সেস সীমাবদ্ধ করুন।", + "scheduleFrom": "শুরু", + "scheduleUntil": "পর্যন্ত", + "scheduleDays": "দিন", + "scheduleTimezone": "সময় অঞ্চল", + "scheduleTimezoneHint": "IANA সময় অঞ্চলের নাম ব্যবহার করুন, যেমন America/New_York, Europe/Berlin", + "scheduleActive": "সময়সূচি", + "disabled": "নিষ্ক্রিয়", + "daySun": "রবি", + "dayMon": "সোম", + "dayTue": "মঙ্গল", + "dayWed": "বুধ", + "dayThu": "বৃহস্পতি", + "dayFri": "শুক্র", + "daySat": "শনি", + "allowAll": "সব অনুমোদন করুন", + "restrict": "সীমিত করুন", + "allowAllInfo": "এই কীটি উপলভ্য সব মডেল অ্যাক্সেস করতে পারবে।", + "restrictInfo": "এই কীটি {total}টি মডেলের মধ্যে {selected}টি অ্যাক্সেস করতে পারবে।", + "selected": "{count}টি নির্বাচিত", + "all": "সব", + "clear": "মুছুন", + "searchModels": "নাম বা প্রদানকারী দিয়ে মডেল খুঁজুন...", + "noModelsFound": "কোনো মডেল পাওয়া যায়নি", + "keyNameRequired": "কী-এর নাম আবশ্যক", + "keyNameTooLong": "কী-এর নাম অবশ্যই {max} অক্ষর বা তার কম হতে হবে", + "keyNameInvalid": "কী-এর নামে শুধুমাত্র অক্ষর, সংখ্যা, স্পেস, হাইফেন ও আন্ডারস্কোর ব্যবহার করা যাবে", + "invalidKeyName": "কী-এর নাম বৈধ নয়", + "failedCreateKey": "কী তৈরি করা যায়নি", + "failedCreateKeyRetry": "কী তৈরি করা যায়নি। আবার চেষ্টা করুন।", + "invalidKeyId": "কী ID বৈধ নয়", + "failedDeleteKey": "কী মুছে ফেলা যায়নি", + "failedDeleteKeyRetry": "কী মুছে ফেলা যায়নি। আবার চেষ্টা করুন।", + "invalidModelsSelection": "মডেল নির্বাচন বৈধ নয়", + "cannotSelectMoreThanModels": "{max}টির বেশি মডেল নির্বাচন করা যাবে না", + "failedUpdatePermissions": "অনুমতিগুলো আপডেট করা যায়নি", + "failedUpdatePermissionsRetry": "অনুমতিগুলো আপডেট করা যায়নি। আবার চেষ্টা করুন।", + "unknownProvider": "অজানা", + "copyMaskedKey": "আড়াল করা কী কপি করুন", + "keyOnlyAvailableAtCreation": "সম্পূর্ণ কীটি শুধু তৈরির সময়ই পাওয়া যায় — প্রথমবার কী তৈরি করার সময় এটি কপি করুন", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {#টি ডিভাইস} other {#টি ডিভাইস}}", "devicesTooltip": "{count, plural, one {এই কী-এর সাথে #টি স্বতন্ত্র IP/User-Agent ডিভাইস দেখা গেছে (গত 30 মিনিট)} other {এই কী-এর সাথে #টি স্বতন্ত্র IP/User-Agent ডিভাইস দেখা গেছে (গত 30 মিনিট)}}", - "lastUsedOn": "Last: {date}", + "lastUsedOn": "সর্বশেষ: {date}", "viewCostsFor": "{name}-এর খরচ দেখুন", - "editPermissions": "Edit permissions", - "deleteKey": "Delete key", + "editPermissions": "অনুমতি সম্পাদনা করুন", + "deleteKey": "কী মুছে ফেলুন", "regenerateKey": "কী পুনরায় তৈরি করুন", "regenerateConfirm": "আপনি কি এই API কী পুনরায় তৈরি করতে চান? পুরানো কী অবিলম্বে অকার্যকর করা হবে.", "failedRegenerateKey": "API কী পুনরায় তৈরি করতে ব্যর্থ হয়েছে৷", "failedRegenerateKeyRetry": "API কী পুনরায় তৈরি করতে ব্যর্থ হয়েছে৷ আবার চেষ্টা করুন.", - "model": "{count} model", - "models": "{count} models", - "permissionsTitle": "Permissions: {name}", - "allowAllDesc": "This key can access all available models.", + "model": "{count}টি মডেল", + "models": "{count}টি মডেল", + "permissionsTitle": "অনুমতিসমূহ: {name}", + "allowAllDesc": "এই কীটি উপলভ্য সব মডেল অ্যাক্সেস করতে পারে।", "restrictLoading": "মডেল ক্যাটালগ লোড হচ্ছে…", "restrictCatalogUnavailable": "মডেল ক্যাটালগ অনুপলব্ধ; এই কী-তে {selectedCount}টি নির্বাচিত মডেলের সীমাবদ্ধতা রয়েছে।", - "restrictDesc": "This key can access {selectedCount} of {totalModels} models.", - "selectedCount": "{count} selected", + "restrictDesc": "এই কীটি {totalModels}টি মডেলের মধ্যে {selectedCount}টি অ্যাক্সেস করতে পারে।", + "selectedCount": "{count}টি নির্বাচিত", "maxActiveSessions": "সর্বোচ্চ সক্রিয় অধিবেশন", "maxActiveSessionsDescription": "0 = সীমাহীন। এই কী সমসাময়িক স্টিকি সেশনের সীমা অতিক্রম করলে 429 রিটার্ন করুন।", "throttleDelay": "থ্রটল বিলম্ব", @@ -2382,8 +2382,8 @@ "allowedCombos": "অনুমোদিত কম্বো", "allCombosAllowed": "এই কী যেকোনো কম্বো ব্যবহার করতে পারে।", "restrictedComboCount": "{count, plural, one {#টি কম্বোতে} other {#টি কম্বোতে}} সীমাবদ্ধ।", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {#টি সংরক্ষিত এন্ট্রি} other {#টি সংরক্ষিত এন্ট্রি}} এই কম্বো তালিকায় নেই (যেমন রাউটিং নিয়ম) এবং সংরক্ষিত অবস্থাতেই রাখা হবে।", + "preservedComboRuleHint": "সংরক্ষিত অবস্থাতেই রাখা হয়েছে। এই এন্ট্রিটি ওপরের তালিকার কোনো কম্বো নয়, তাই এটি শুধু API-এর মাধ্যমে পরিবর্তন করা যাবে।", "apiManagerCustomRateLimits": "কাস্টম হার সীমা", "apiManagerCustomRateLimitsDesc": "বিশ্বব্যাপী ডিফল্ট সীমা ওভাররাইড করুন। ডিফল্ট ব্যবহার করতে খালি ছেড়ে দিন।", "apiManagerRateLimitRequestsPlaceholder": "অনুরোধ", @@ -2420,51 +2420,51 @@ "bypassProviderQuotaDescription": "রাউটিংয়ের সময় এই কী-কে আপস্ট্রিম প্রোভাইডার/অ্যাকাউন্ট কাটঅফ নীতি উপেক্ষা করার অনুমতি দেয়। API কী USD কোটা এখনও প্রযোজ্য থাকবে।", "quotaPill": "কোটা", "quotaModeOnly": "শুধুমাত্র qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "এক্সক্লুসিভ লিজ", + "exclusiveLeaseNoticeTitle": "এক্সক্লুসিভ লিজ", + "exclusiveLeaseNoticeDesc": "ডেডিকেটেড সংযোগ রাউটিংয়ের জন্য এই API কীটির এক্সক্লুসিভ লিজের অনুমতি রয়েছে।", + "allConnections": "সব সংযোগ", + "onlySelectedConnections": "শুধু নির্বাচিত সংযোগগুলো", + "selectAtLeastOneConnection": "অন্তত একটি সংযোগ নির্বাচন করুন অথবা সব সংযোগ বেছে নিন।", + "allConnectionsDesc": "এই কীটি যেকোনো সক্রিয় সংযোগ ব্যবহার করতে পারে।", + "restrictedToConnections": "{count, plural, one {#টি সংযোগে} other {#টি সংযোগে}} সীমাবদ্ধ।" }, "auditLog": { - "title": "Audit Log", - "searchPlaceholder": "Search actions...", - "action": "Action", - "actor": "Actor", - "target": "Target", - "ipAddress": "IP Address", - "timestamp": "Timestamp", - "noEntries": "No audit entries found", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", + "title": "অডিট লগ", + "searchPlaceholder": "অ্যাকশন খুঁজুন...", + "action": "অ্যাকশন", + "actor": "সম্পাদনকারী", + "target": "লক্ষ্য", + "ipAddress": "IP ঠিকানা", + "timestamp": "সময়চিহ্ন", + "noEntries": "কোনো অডিট এন্ট্রি পাওয়া যায়নি", + "filterByAction": "অ্যাকশন অনুযায়ী ফিল্টার করুন...", + "filterByActor": "সম্পাদনকারী অনুযায়ী ফিল্টার করুন...", + "filterEntriesAria": "অডিট লগের এন্ট্রি ফিল্টার করুন", + "filterByActionTypeAria": "অ্যাকশনের ধরন অনুযায়ী ফিল্টার করুন", + "filterByActorAria": "সম্পাদনকারী অনুযায়ী ফিল্টার করুন", + "refreshAuditLogAria": "অডিট লগ রিফ্রেশ করুন", + "tableAria": "অডিট লগের এন্ট্রি", + "failedFetchAuditLog": "অডিট লগ আনতে ব্যর্থ হয়েছে", "notAvailable": "—", - "description": "Administrative actions and security events", - "showing": "Showing {count} entries (offset {offset})", - "previous": "Previous" + "description": "প্রশাসনিক অ্যাকশন ও নিরাপত্তা-সংক্রান্ত ঘটনা", + "showing": "{count}টি এন্ট্রি দেখানো হচ্ছে (অফসেট {offset})", + "previous": "পূর্ববর্তী" }, "media": { - "title": "Media Playground", - "subtitle": "Generate images, videos, and music", + "title": "মিডিয়া প্লেগ্রাউন্ড", + "subtitle": "ছবি, ভিডিও ও সংগীত তৈরি করুন", "model": "Model", "prompt": "Prompt", - "generate": "Generate", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generate": "তৈরি করুন", + "generating": "তৈরি করা হচ্ছে...", + "loadingModels": "উপলভ্য মডেলগুলো লোড হচ্ছে...", + "noModels": "কোনো মডেল উপলভ্য নেই। প্রথমে মিডিয়া সক্ষমতাসহ প্রোভাইডার কনফিগার করুন।", + "error": "জেনারেশন ব্যর্থ হয়েছে", + "result": "ফলাফল", + "imageDescription": "OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI এবং আরও অনেক কিছু ব্যবহার করে টেক্সট প্রম্পট থেকে ছবি তৈরি করুন।", + "videoDescription": "ComfyUI বা SD WebUI-এর মাধ্যমে AnimateDiff, Stable Video Diffusion দিয়ে ভিডিও তৈরি করুন।", + "musicDescription": "ComfyUI-এর মাধ্যমে Stable Audio Open বা MusicGen ব্যবহার করে সঙ্গীত রচনা করুন।", "kinds": { "embedding": "এমবেডিং", "image": "ইমেজ", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter স্পিচ-টু-টেক্সট মডেলগুলি আপনার কনফিগার করা OpenRouter সংযোগ ব্যবহার করে। আলাদা কোনো শংসাপত্রের প্রয়োজন নেই।" }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "সার্চ কোয়েরি", + "searchResults": "সার্চের ফলাফল", + "cachedResult": "ক্যাশ করা", + "searchCost": "খরচ", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "প্রোভাইডার তুলনাসহ উন্নত সার্চ পরীক্ষা", + "compareProviders": "প্রোভাইডার তুলনা করুন", + "rerankResults": "ফলাফল পুনরায় র্যাঙ্ক করুন", + "searchHistory": "সার্চ ইতিহাস", + "urlOverlap": "URL-এর ওভারল্যাপ", + "noSearchProviders": "কোনো সার্চ প্রোভাইডার কনফিগার করা নেই। Settings-এ প্রোভাইডার যোগ করুন।", + "noRerankModels": "কোনো রির্যাঙ্ক মডেল উপলভ্য নেই", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "প্রোভাইডার", + "searchType": "সার্চের ধরন", + "maxResults": "সর্বাধিক ফলাফল", + "filters": "ফিল্টার", + "country": "দেশ", + "language": "ভাষা", + "timeRange": "সময়সীমা", + "includeDomains": "অন্তর্ভুক্ত ডোমেইন", + "excludeDomains": "বাদ দেওয়া ডোমেইন", + "safeSearch": "নিরাপদ সার্চ", + "safeSearchOff": "বন্ধ", + "safeSearchModerate": "মধ্যম", + "safeSearchStrict": "কঠোর", + "queryPlaceholder": "সার্চ কোয়েরি লিখুন...", + "providerAuto": "স্বয়ংক্রিয় (সবচেয়ে সাশ্রয়ী)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "সংবাদ", + "optionAny": "যেকোনো", + "timeRangeDay": "গত এক দিন", + "timeRangeWeek": "গত এক সপ্তাহ", + "timeRangeMonth": "গত এক মাস", + "timeRangeYear": "গত এক বছর", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "অনুরোধের সময়সীমা শেষ হয়েছে ({seconds}s)", + "networkError": "নেটওয়ার্ক ত্রুটি", + "formatted": "ফরম্যাট করা হয়েছে", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "ক্যাশ মিস", + "cacheHit": "ক্যাশ হিট", + "latency": "বিলম্ব", + "cost": "খরচ", + "results": "ফলাফল", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "রির্যাঙ্ক মডেল", + "positionDelta": "অবস্থান পরিবর্তন", + "emptyState": "ফলাফল দেখতে একটি অনুসন্ধান কুয়েরি পাঠান", "copy": "কপি", "resetToDefault": "ডিফল্টে রিসেট করুন", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "অনুসন্ধান", + "tabScrape": "স্ক্র্যাপ", + "tabCompare": "তুলনা", + "modalitiesGuide": "মোডালিটি নির্দেশিকা", + "searchConceptTitle": "অনুসন্ধান", + "searchConceptDesc": "অনুসন্ধান = ওয়েব ফলাফলের একটি তালিকা নিয়ে আসে (শিরোনাম, URL, স্নিপেট, প্রাসঙ্গিকতা স্কোর)", + "scrapeConceptTitle": "স্ক্র্যাপ", + "scrapeConceptDesc": "স্ক্র্যাপ = একটি URL-এর সম্পূর্ণ কনটেন্ট এক্সট্র্যাক্ট করে (markdown, text বা HTML)", + "compareConceptTitle": "তুলনা", + "compareConceptDesc": "তুলনা = বিলম্ব, খরচ ও ফলাফলের ওভারল্যাপ তুলনা করতে একই কুয়েরি Nটি প্রোভাইডারে পাশাপাশি চালায়", + "rerankConceptTitle": "রির্যাঙ্ক", + "rerankConceptDesc": "রির্যাঙ্ক = কুয়েরির ভিত্তিতে প্রাসঙ্গিকতা উন্নত করতে LLM-এর মাধ্যমে ফলাফল পুনর্বিন্যস্ত করে", + "autoConceptTitle": "স্বয়ংক্রিয় (সবচেয়ে সস্তা)", + "autoConceptDesc": "স্বয়ংক্রিয় (সবচেয়ে সস্তা) = কনফিগার করা ক্রেডেনশিয়ালসহ উপলভ্য সবচেয়ে সস্তা প্রোভাইডার স্বয়ংক্রিয়ভাবে বেছে নেয়", + "providerCatalogTitle": "প্রোভাইডার ক্যাটালগ", + "kindSearch": "অনুসন্ধান", + "kindFetch": "ফেচ/স্ক্র্যাপ", + "statusConfigured": "কনফিগার করা হয়েছে", + "statusMissing": "কোনো ক্রেডেনশিয়াল নেই", + "statusRateLimited": "রেট সীমিত", + "configureProvider": "প্রোভাইডারসমূহে কনফিগার করুন", + "loadingProviders": "প্রোভাইডার লোড হচ্ছে…", + "failedToLoadProviders": "প্রোভাইডার লোড করা যায়নি", + "costPerQuery": "প্রতি কুয়েরির খরচ", + "freeQuota": "বিনামূল্যের মাসিক কোটা", + "scrapeUrl": "স্ক্র্যাপ করার URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL আবশ্যক", "scrapeUrlInvalid": "অবৈধ URL — এটি অবশ্যই http:// বা https:// দিয়ে শুরু হতে হবে", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", - "formatMarkdown": "Markdown", + "scrapeExtract": "এক্সট্র্যাক্ট করুন", + "scrapeExtracting": "এক্সট্র্যাক্ট করা হচ্ছে…", + "scrapeFullPage": "সম্পূর্ণ পৃষ্ঠা", + "scrapeFormat": "ফরম্যাট", + "formatMarkdown": "মার্কডাউন", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "টেক্সট", + "scrapePreview": "প্রিভিউ", + "scrapeRaw": "অপরিশোধিত", + "scrapeContentTruncated": "(সংক্ষিপ্ত করা হয়েছে, অপরিশোধিতটি দেখুন)", + "scrapeMetadata": "মেটাডেটা", + "scrapeProvider": "প্রোভাইডার", + "scrapeSize": "আকার", "scrapeEmptyState": "কনটেন্ট এক্সট্র্যাক্ট করতে একটি URL লিখুন", "scrapeProvidersAvailable": "উপলব্ধ প্রোভাইডার: Firecrawl, Jina Reader, Tavily, TinyFish।", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "তুলনা করুন", + "compareRunning": "তুলনা করা হচ্ছে…", + "autoProvider": "স্বয়ংক্রিয় (সবচেয়ে সস্তা)", + "configuredStatus": "কনফিগার করা হয়েছে", + "rateLimitedStatus": "রেট সীমিত", + "noCredential": "কোনো ক্রেডেনশিয়াল নেই", + "searchTypeLabel": "ধরন", + "rerankModelLabel": "রির্যাঙ্ক মডেল", + "noneOption": "কোনোটিই নয়", + "size": "আকার", "configurationPane": "কনফিগারেশন প্যান", "configuration": "কনফিগারেশন", "status": "স্ট্যাটাস", @@ -2701,7 +2701,7 @@ "compareEmptyDescription": "লেটেন্সি, খরচ এবং URL ওভারল্যাপ সহ ফলাফল পাশাপাশি দেখানো হবে" }, "cliTools": { - "title": "CLI Tools", + "title": "CLI টুলসমূহ", "classifierCompatTitle": "অটো-পারমিশন ক্লাসিফায়ার সামঞ্জস্যতা", "classifierCompatDescription": "একটি সিন্থেটিক allow রেসপন্স দিয়ে Claude Code-এর --permission-mode auto সিকিউরিটি ক্লাসিফায়ারকে শর্ট-সার্কিট করুন যাতে ফলব্যাক রুটগুলি ফেইল ক্লোজড না হয়। ডিফল্টভাবে বন্ধ।", "classifierCompatCycle": "সাইকেল: off → auto → always", @@ -2727,14 +2727,14 @@ "codexProfilesDescription": "মডেল আবিষ্কারের পরে ~/.codex/*.config.toml পুনরায় তৈরি করুন।", "claudeProfiles": "Claude Code প্রোফাইল", "claudeProfilesDescription": "মডেল আবিষ্কারের পরে প্রতিটি ~/.claude/profiles/…/settings.json পুনরায় তৈরি করুন।", - "noActiveProviders": "No active providers", - "noActiveProvidersDesc": "Please add and connect providers first to configure CLI tools.", - "mapModels": "Map Models", - "testConnection": "Test Connection", - "connectionStatus": "Connection Status", - "configureEndpoint": "Configure Endpoint", - "instructions": "Instructions", - "modelMapping": "Model Mapping", + "noActiveProviders": "কোনো সক্রিয় প্রোভাইডার নেই", + "noActiveProvidersDesc": "CLI টুল কনফিগার করতে প্রথমে প্রোভাইডার যোগ করে সংযুক্ত করুন।", + "mapModels": "মডেল ম্যাপ করুন", + "testConnection": "সংযোগ পরীক্ষা করুন", + "connectionStatus": "সংযোগের স্থিতি", + "configureEndpoint": "এন্ডপয়েন্ট কনফিগার করুন", + "instructions": "নির্দেশাবলি", + "modelMapping": "মডেল ম্যাপিং", "reasoningEffort": "{model}-এর জন্য রিজনিং এফোর্ট", "effortNone": "কোনোটিই নয়", "effortLow": "কম", @@ -2747,62 +2747,62 @@ "modelAliases": "মডেল অ্যালিয়াস", "addModel": "মডেল যোগ করুন", "routeModelPlaceholder": "{model}-কে এখানে রাউট করুন...", - "baseUrl": "Base URL", - "apiKey": "API Key", - "configured": "Configured", - "notConfigured": "Not configured", - "notInstalled": "Not installed", - "custom": "Custom", - "unknown": "Unknown", - "lastSavedAt": "Last saved: {date}", - "never": "Never", - "justNow": "just now", - "minutesAgoShort": "{count}m ago", - "hoursAgoShort": "{count}h ago", - "daysAgoShort": "{count}d ago", - "monthsAgoShort": "{count}mo ago", - "yearsAgoShort": "{count}y ago", - "runtimeCheckFailed": "Runtime check failed", + "baseUrl": "বেস URL", + "apiKey": "API কী", + "configured": "কনফিগার করা হয়েছে", + "notConfigured": "কনফিগার করা হয়নি", + "notInstalled": "ইনস্টল করা নেই", + "custom": "কাস্টম", + "unknown": "অজানা", + "lastSavedAt": "সর্বশেষ সংরক্ষণ: {date}", + "never": "কখনোই নয়", + "justNow": "এইমাত্র", + "minutesAgoShort": "{count} মিনিট আগে", + "hoursAgoShort": "{count} ঘণ্টা আগে", + "daysAgoShort": "{count} দিন আগে", + "monthsAgoShort": "{count} মাস আগে", + "yearsAgoShort": "{count} বছর আগে", + "runtimeCheckFailed": "রানটাইম যাচাই ব্যর্থ হয়েছে", "yourApiKeyPlaceholder": "your-api-key", "modelPlaceholder": "provider/model-id", - "configurationSaved": "Configuration saved successfully.", - "failedToSave": "Failed to save configuration.", - "noApiKeysCreateOne": "No API keys - Create one in Keys page", - "defaultOmnirouteKey": "sk_omniroute (default)", - "selectModel": "Select Model", - "selectModelForAlias": "Select model for {alias}", - "selectModelForTool": "Select Model for {tool}", - "select": "Select", - "clear": "Clear", - "comingSoon": "Coming soon", - "checkingRuntime": "Checking runtime status...", - "guideOnlyIntegration": "Guide-only integration (no local runtime required)", - "cliRuntimeDetected": "CLI runtime detected and ready", - "cliFoundNotRunnable": "CLI found but not runnable{reason}", - "cliRuntimeNotDetected": "CLI runtime not detected", - "binary": "Binary", - "configPath": "Config path", - "configPathShort": "Config", - "failedCheckRuntimeStatus": "Failed to check runtime status.", - "copy": "Copy", - "copied": "Copied", - "copyConfig": "Copy Config", - "saveConfig": "Save Config", - "selectionSaved": "Selection saved", - "guide": "Guide", - "detected": "Detected", - "notReady": "Not ready", - "active": "Active", - "inactive": "Inactive", + "configurationSaved": "কনফিগারেশন সফলভাবে সংরক্ষিত হয়েছে।", + "failedToSave": "কনফিগারেশন সংরক্ষণ করা যায়নি।", + "noApiKeysCreateOne": "কোনো API কী নেই — Keys পৃষ্ঠায় একটি তৈরি করুন", + "defaultOmnirouteKey": "sk_omniroute (ডিফল্ট)", + "selectModel": "মডেল নির্বাচন করুন", + "selectModelForAlias": "{alias}-এর জন্য মডেল নির্বাচন করুন", + "selectModelForTool": "{tool}-এর জন্য মডেল নির্বাচন করুন", + "select": "নির্বাচন করুন", + "clear": "মুছুন", + "comingSoon": "শীঘ্রই আসছে", + "checkingRuntime": "রানটাইমের অবস্থা যাচাই করা হচ্ছে...", + "guideOnlyIntegration": "শুধু নির্দেশিকাভিত্তিক ইন্টিগ্রেশন (লোকাল রানটাইমের প্রয়োজন নেই)", + "cliRuntimeDetected": "CLI রানটাইম শনাক্ত হয়েছে এবং প্রস্তুত", + "cliFoundNotRunnable": "CLI পাওয়া গেছে, কিন্তু চালানো যাচ্ছে না{reason}", + "cliRuntimeNotDetected": "CLI রানটাইম শনাক্ত হয়নি", + "binary": "বাইনারি", + "configPath": "কনফিগ পাথ", + "configPathShort": "কনফিগ", + "failedCheckRuntimeStatus": "রানটাইমের অবস্থা যাচাই করা যায়নি।", + "copy": "কপি করুন", + "copied": "কপি করা হয়েছে", + "copyConfig": "কনফিগ কপি করুন", + "saveConfig": "কনফিগ সংরক্ষণ করুন", + "selectionSaved": "নির্বাচন সংরক্ষিত হয়েছে", + "guide": "নির্দেশিকা", + "detected": "শনাক্ত হয়েছে", + "notReady": "প্রস্তুত নয়", + "active": "সক্রিয়", + "inactive": "নিষ্ক্রিয়", "startMitm": "Start MITM", "stopMitm": "Stop MITM", - "mitmStarted": "MITM started successfully!", - "mitmStopped": "MITM stopped successfully!", - "failedStart": "Failed to start MITM", - "failedStop": "Failed to stop MITM", - "saveMappings": "Save Mappings", - "mappingsSaved": "Mappings saved!", - "failedSaveMappings": "Failed to save mappings", + "mitmStarted": "MITM সফলভাবে চালু হয়েছে!", + "mitmStopped": "MITM সফলভাবে বন্ধ হয়েছে!", + "failedStart": "MITM চালু করতে ব্যর্থ হয়েছে", + "failedStop": "MITM বন্ধ করতে ব্যর্থ হয়েছে", + "saveMappings": "ম্যাপিং সংরক্ষণ করুন", + "mappingsSaved": "ম্যাপিং সংরক্ষিত হয়েছে!", + "failedSaveMappings": "ম্যাপিং সংরক্ষণ করতে ব্যর্থ হয়েছে", "reasoningEffortDefault": "ডিফল্ট", "reasoningEffortHint": "ডিফল্ট এজেন্ট দ্বারা প্রেরিত রিজনিং এফোর্ট বজায় রাখে", "reasoningEffortTier": { @@ -2812,130 +2812,130 @@ "high": "উচ্চ", "xhigh": "XHigh" }, - "howItWorks": "How it works:", - "antigravityHowWorksDesc": "Antigravity sends requests to Google's endpoint. MITM intercepts and redirects them to OmniRoute.", - "antigravityStep1": "1. Start MITM to route requests through OmniRoute.", - "antigravityStep2Prefix": "2. Add", - "antigravityStep2Suffix": "to your hosts file as 127.0.0.1.", - "antigravityStep3": "3. Open Antigravity and requests will be proxied.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", - "sudoPasswordRequiredTitle": "Sudo Password Required", - "sudoPasswordHint": "Administrator password is required to modify hosts file and system proxy settings.", - "enterSudoPassword": "Enter sudo password", - "sudoPasswordRequiredError": "Sudo password is required.", - "cancel": "Cancel", - "confirm": "Confirm", - "settingsApplied": "Settings applied successfully!", - "failedApplySettings": "Failed to apply settings", - "settingsReset": "Settings reset successfully!", - "failedResetSettings": "Failed to reset settings", - "backupRestored": "Backup restored!", - "failedRestore": "Failed to restore", - "checkingCli": "Checking {tool} CLI...", - "cliNotRunnable": "{tool} CLI installed but not runnable", - "cliNotInstalled": "{tool} CLI not installed", - "cliNotDetected": "{tool} CLI not detected", - "cliDetectedReady": "{tool} CLI detected and ready", - "cliFoundFailedHealthcheck": "{tool} CLI was found but failed runtime healthcheck{reason}.", - "installCliPrompt": "Please install {tool} CLI to use this feature.", - "installCodexPrompt": "Please install Codex CLI to use auto-apply feature.", - "hide": "Hide", - "howToInstall": "How to Install", - "installationGuide": "Installation Guide", + "howItWorks": "এটি যেভাবে কাজ করে:", + "antigravityHowWorksDesc": "Antigravity Google-এর এন্ডপয়েন্টে অনুরোধ পাঠায়। MITM সেগুলো ইন্টারসেপ্ট করে OmniRoute-এ রিডাইরেক্ট করে।", + "antigravityStep1": "১. OmniRoute-এর মাধ্যমে অনুরোধ রাউট করতে MITM চালু করুন।", + "antigravityStep2Prefix": "২. যোগ করুন", + "antigravityStep2Suffix": "আপনার hosts ফাইলে 127.0.0.1 হিসেবে।", + "antigravityStep3": "৩. Antigravity খুলুন, এরপর অনুরোধগুলো প্রক্সি করা হবে।", + "mitmHowWorksDesc": "{toolName} তার প্রোভাইডার এন্ডপয়েন্টে অনুরোধ পাঠায়। MITM সেগুলো ইন্টারসেপ্ট করে OmniRoute-এ রিডাইরেক্ট করে।", + "mitmStep1": "১. OmniRoute-এর মাধ্যমে অনুরোধ রাউট করতে MITM চালু করুন।", + "mitmStep2Prefix": "২. যোগ করুন", + "mitmStep2Suffix": "আপনার hosts ফাইলে 127.0.0.1 হিসেবে।", + "mitmStep3": "৩. {toolName} খুলুন, এরপর অনুরোধগুলো প্রক্সি করা হবে।", + "sudoPasswordRequiredTitle": "Sudo পাসওয়ার্ড প্রয়োজন", + "sudoPasswordHint": "hosts ফাইল এবং সিস্টেম প্রক্সি সেটিংস পরিবর্তন করতে অ্যাডমিনিস্ট্রেটর পাসওয়ার্ড প্রয়োজন।", + "enterSudoPassword": "sudo পাসওয়ার্ড লিখুন", + "sudoPasswordRequiredError": "Sudo পাসওয়ার্ড প্রয়োজন।", + "cancel": "বাতিল করুন", + "confirm": "নিশ্চিত করুন", + "settingsApplied": "সেটিংস সফলভাবে প্রয়োগ করা হয়েছে!", + "failedApplySettings": "সেটিংস প্রয়োগ করতে ব্যর্থ হয়েছে", + "settingsReset": "সেটিংস সফলভাবে রিসেট করা হয়েছে!", + "failedResetSettings": "সেটিংস রিসেট করতে ব্যর্থ হয়েছে", + "backupRestored": "ব্যাকআপ পুনরুদ্ধার করা হয়েছে!", + "failedRestore": "পুনরুদ্ধার করতে ব্যর্থ হয়েছে", + "checkingCli": "{tool} CLI পরীক্ষা করা হচ্ছে...", + "cliNotRunnable": "{tool} CLI ইনস্টল করা আছে, কিন্তু চালানো যাচ্ছে না", + "cliNotInstalled": "{tool} CLI ইনস্টল করা নেই", + "cliNotDetected": "{tool} CLI শনাক্ত করা যায়নি", + "cliDetectedReady": "{tool} CLI শনাক্ত হয়েছে এবং প্রস্তুত", + "cliFoundFailedHealthcheck": "{tool} CLI পাওয়া গেছে, কিন্তু রানটাইম স্বাস্থ্য পরীক্ষা ব্যর্থ হয়েছে{reason}।", + "installCliPrompt": "এই ফিচারটি ব্যবহার করতে অনুগ্রহ করে {tool} CLI ইনস্টল করুন।", + "installCodexPrompt": "স্বয়ংক্রিয়ভাবে প্রয়োগ করার ফিচারটি ব্যবহার করতে অনুগ্রহ করে Codex CLI ইনস্টল করুন।", + "hide": "লুকান", + "howToInstall": "ইনস্টল করার পদ্ধতি", + "installationGuide": "ইনস্টলেশন নির্দেশিকা", "platforms": "macOS / Linux / Windows:", - "afterInstallationRun": "After installation, run", - "toVerify": "to verify.", - "current": "Current", + "afterInstallationRun": "ইনস্টলেশনের পরে, চালান", + "toVerify": "যাচাই করতে।", + "current": "বর্তমান", "baseUrlPlaceholder": "https://.../v1", - "resetToDefault": "Reset to default", + "resetToDefault": "ডিফল্টে রিসেট করুন", "providerModelPlaceholder": "provider/model-id", - "apply": "Apply", - "reset": "Reset", - "manualConfig": "Manual Config", - "backups": "Backups", - "configBackups": "Config Backups", - "noBackupsYet": "No backups yet. Backups are created automatically before each Apply or Reset.", - "restore": "Restore", - "backupRestoredReloading": "Backup restored! Reloading status...", - "failedRestoreBackup": "Failed to restore backup", - "applied": "Applied!", - "failed": "Failed", - "resetDone": "Reset!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute is configured as OpenAI-compatible provider", - "provider": "Provider", + "apply": "প্রয়োগ করুন", + "reset": "রিসেট করুন", + "manualConfig": "ম্যানুয়াল কনফিগ", + "backups": "ব্যাকআপসমূহ", + "configBackups": "কনফিগ ব্যাকআপসমূহ", + "noBackupsYet": "এখনও কোনো ব্যাকআপ নেই। প্রতিবার প্রয়োগ বা রিসেট করার আগে স্বয়ংক্রিয়ভাবে ব্যাকআপ তৈরি হয়।", + "restore": "পুনরুদ্ধার করুন", + "backupRestoredReloading": "ব্যাকআপ পুনরুদ্ধার করা হয়েছে! স্ট্যাটাস পুনরায় লোড হচ্ছে...", + "failedRestoreBackup": "ব্যাকআপ পুনরুদ্ধার করা যায়নি", + "applied": "প্রয়োগ করা হয়েছে!", + "failed": "ব্যর্থ হয়েছে", + "resetDone": "রিসেট করা হয়েছে!", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute-কে OpenAI-সামঞ্জস্যপূর্ণ প্রোভাইডার হিসেবে কনফিগার করা হয়েছে", + "provider": "প্রোভাইডার", "model": "Model", - "providers": "Providers", - "auth": "Auth", - "noApiKeysAvailable": "No API keys available", - "usingDefaultOmniroute": "Using default: sk_omniroute", - "updateConfig": "Update Config", - "applyConfig": "Apply Config", - "noBackupsAvailable": "No backups available.", - "profileSaved": "Profile \"{name}\" saved!", - "failedSaveProfile": "Failed to save profile", - "profileActivated": "Profile activated!", - "failedActivateProfile": "Failed to activate profile", - "profiles": "Profiles", - "savedProfiles": "Saved Profiles", - "noProfilesYet": "No profiles saved yet. Save current config as a profile below.", - "activate": "Activate", - "deleteProfile": "Delete profile", - "profileNamePlaceholder": "Profile name (e.g. Personal Account)", - "saveCurrent": "Save Current", - "codexAuthNotePrefix": "Codex uses", - "codexAuthNoteMiddle": "with", - "codexAuthNoteSuffix": "Click \"Apply\" to auto-configure.", - "claudeManualConfiguration": "Claude CLI - Manual Configuration", - "codexManualConfiguration": "Codex CLI - Manual Configuration", - "droidManualConfiguration": "Factory Droid - Manual Configuration", - "openClawManualConfiguration": "Open Claw - Manual Configuration", - "clineManualConfiguration": "Cline Manual Configuration", - "kiloManualConfiguration": "Kilo Code Manual Configuration", - "whenToUseLabel": "When to use", - "openToolDocs": "Open tool docs", + "providers": "প্রোভাইডারসমূহ", + "auth": "প্রমাণীকরণ", + "noApiKeysAvailable": "কোনো API কী উপলভ্য নেই", + "usingDefaultOmniroute": "ডিফল্ট ব্যবহার করা হচ্ছে: sk_omniroute", + "updateConfig": "কনফিগ আপডেট করুন", + "applyConfig": "কনফিগ প্রয়োগ করুন", + "noBackupsAvailable": "কোনো ব্যাকআপ উপলভ্য নেই।", + "profileSaved": "প্রোফাইল \"{name}\" সংরক্ষণ করা হয়েছে!", + "failedSaveProfile": "প্রোফাইল সংরক্ষণ করা যায়নি", + "profileActivated": "প্রোফাইল সক্রিয় করা হয়েছে!", + "failedActivateProfile": "প্রোফাইল সক্রিয় করা যায়নি", + "profiles": "প্রোফাইলসমূহ", + "savedProfiles": "সংরক্ষিত প্রোফাইলসমূহ", + "noProfilesYet": "এখনও কোনো প্রোফাইল সংরক্ষিত হয়নি। নিচে বর্তমান কনফিগটি প্রোফাইল হিসেবে সংরক্ষণ করুন।", + "activate": "সক্রিয় করুন", + "deleteProfile": "প্রোফাইল মুছুন", + "profileNamePlaceholder": "প্রোফাইলের নাম (যেমন: ব্যক্তিগত অ্যাকাউন্ট)", + "saveCurrent": "বর্তমানটি সংরক্ষণ করুন", + "codexAuthNotePrefix": "Codex ব্যবহার করে", + "codexAuthNoteMiddle": "এর সাথে", + "codexAuthNoteSuffix": "স্বয়ংক্রিয়ভাবে কনফিগার করতে \"প্রয়োগ করুন\"-এ ক্লিক করুন।", + "claudeManualConfiguration": "Claude CLI - ম্যানুয়াল কনফিগারেশন", + "codexManualConfiguration": "Codex CLI - ম্যানুয়াল কনফিগারেশন", + "droidManualConfiguration": "Factory Droid - ম্যানুয়াল কনফিগারেশন", + "openClawManualConfiguration": "Open Claw - ম্যানুয়াল কনফিগারেশন", + "clineManualConfiguration": "Cline ম্যানুয়াল কনফিগারেশন", + "kiloManualConfiguration": "Kilo Code ম্যানুয়াল কনফিগারেশন", + "whenToUseLabel": "কখন ব্যবহার করবেন", + "openToolDocs": "টুলের ডকুমেন্টেশন খুলুন", "toolUseCases": { - "claude": "Use when you want strong planning workflows and long multi-file refactors with Claude Code.", - "codex": "Use when your team is standardized on OpenAI Codex CLI flows and profile-based auth.", - "droid": "Use when you need a lightweight terminal agent focused on fast coding and command execution loops.", - "openclaw": "Use when you want an Open Claw style coding agent but routed through OmniRoute policies.", - "cline": "Use when you configure coding agents inside editors and want guided setup with OmniRoute models.", - "kilo": "Use when your workflow depends on Kilo Code commands and fast iterative edits.", - "cursor": "Use when coding in Cursor and you need custom OpenAI-compatible models through OmniRoute.", - "continue": "Use when running Continue in IDEs and you need portable JSON-based provider configuration.", - "opencode": "Use when you prefer terminal-native agent runs and scripted automation via OpenCode.", - "kiro": "Use when integrating Kiro and controlling model routing centrally from OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", - "antigravity": "Use when Antigravity/Kiro traffic must be intercepted through MITM and routed to OmniRoute.", - "copilot": "Use when you want Copilot chat style UX while enforcing OmniRoute keys and routing rules.", - "amp": "Use when you want Amp shorthand workflows but still need OmniRoute alias and routing rules enforcement.", - "hermes": "Use when you need a lightweight terminal-native AI assistant for quick tasks.", + "claude": "Claude Code-এর মাধ্যমে শক্তিশালী পরিকল্পনা ওয়ার্কফ্লো এবং দীর্ঘ মাল্টি-ফাইল রিফ্যাক্টর করতে চাইলে ব্যবহার করুন।", + "codex": "আপনার টিম OpenAI Codex CLI ফ্লো এবং প্রোফাইল-ভিত্তিক প্রমাণীকরণে মানসম্মত হলে ব্যবহার করুন।", + "droid": "দ্রুত কোডিং এবং কমান্ড এক্সিকিউশন লুপে কেন্দ্রীভূত হালকা টার্মিনাল এজেন্টের প্রয়োজন হলে ব্যবহার করুন।", + "openclaw": "Open Claw-ধাঁচের কোডিং এজেন্ট চাইলে, তবে সেটিকে OmniRoute নীতিমালার মাধ্যমে রাউট করতে হলে ব্যবহার করুন।", + "cline": "এডিটরের ভেতরে কোডিং এজেন্ট কনফিগার করার সময় OmniRoute মডেলসহ নির্দেশিত সেটআপ চাইলে ব্যবহার করুন।", + "kilo": "আপনার ওয়ার্কফ্লো Kilo Code কমান্ড এবং দ্রুত পুনরাবৃত্তিমূলক সম্পাদনার ওপর নির্ভর করলে ব্যবহার করুন।", + "cursor": "Cursor-এ কোডিং করার সময় OmniRoute-এর মাধ্যমে কাস্টম OpenAI-সামঞ্জস্যপূর্ণ মডেলের প্রয়োজন হলে ব্যবহার করুন।", + "continue": "IDE-তে Continue চালানোর সময় বহনযোগ্য JSON-ভিত্তিক প্রোভাইডার কনফিগারেশনের প্রয়োজন হলে ব্যবহার করুন।", + "opencode": "OpenCode-এর মাধ্যমে টার্মিনাল-নেটিভ এজেন্ট রান এবং স্ক্রিপ্টেড অটোমেশন পছন্দ করলে ব্যবহার করুন।", + "kiro": "Kiro ইন্টিগ্রেট করার সময় OmniRoute থেকে কেন্দ্রীয়ভাবে মডেল রাউটিং নিয়ন্ত্রণ করতে চাইলে ব্যবহার করুন।", + "windsurf": "OmniRoute-এর মাধ্যমে রাউট করা Codeium/Windsurf মডেলসহ AI-প্রধান IDE চাইলে ব্যবহার করুন।", + "antigravity": "Antigravity/Kiro ট্রাফিক MITM-এর মাধ্যমে ইন্টারসেপ্ট করে OmniRoute-এ রাউট করতে হলে ব্যবহার করুন।", + "copilot": "OmniRoute কী এবং রাউটিং নিয়ম প্রয়োগের পাশাপাশি Copilot চ্যাট-ধাঁচের UX চাইলে ব্যবহার করুন।", + "amp": "Amp শর্টহ্যান্ড ওয়ার্কফ্লো চাইলে, তবে OmniRoute অ্যালিয়াস এবং রাউটিং নিয়ম প্রয়োগেরও প্রয়োজন হলে ব্যবহার করুন।", + "hermes": "দ্রুত কাজের জন্য হালকা, টার্মিনাল-নেটিভ AI সহকারীর প্রয়োজন হলে ব্যবহার করুন।", "hermes-agent": "যখন আপনার OmniRoute-এর মাধ্যমে রাউট করা ডিফল্ট, ডেলিগেশন, ভিশন এবং অক্সিলিয়ারি মডেল সহ Hermes Agent (Nousresearch দ্বারা)-এর প্রয়োজন হবে তখন এটি ব্যবহার করুন।", - "custom": "Use for custom tool implementations or generic OpenAI-compatible configurations." + "custom": "কাস্টম টুল বাস্তবায়ন বা সাধারণ OpenAI-সামঞ্জস্যপূর্ণ কনফিগারেশনের জন্য ব্যবহার করুন।" }, "toolDescriptions": { - "antigravity": "Google Antigravity IDE with MITM", + "antigravity": "MITM-সহ Google Antigravity IDE", "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "কাস্টম প্রোভাইডার সাপোর্ট সহ xAI Grok Build TUI কোডিং এজেন্ট", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Factory Droid AI সহকারী", + "openclaw": "Open Claw AI সহকারী", + "cline": "Cline AI কোডিং সহকারী CLI", + "kilo": "Kilo Code AI সহকারী CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "continue": "Continue AI সহকারী", + "opencode": "OpenCode AI কোডিং এজেন্ট (টার্মিনাল)", + "kiro": "Amazon Kiro — AI-চালিত IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp কোডিং সহকারী CLI", + "hermes": "Hermes AI টার্মিনাল সহকারী", "hermes-agent": "Hermes Agent (Nousresearch দ্বারা) - মাল্টি-মডেল সাপোর্ট (ডেলিগেশন, ভিশন, কম্প্রেশন ইত্যাদি) সহ উন্নত টার্মিনাল AI", - "custom": "Generic OpenAI-compatible CLI or SDK configuration generator", + "custom": "সাধারণ OpenAI-সামঞ্জস্যপূর্ণ CLI বা SDK কনফিগারেশন জেনারেটর", "aider": "OpenAI-সামঞ্জস্যপূর্ণ বেস URL সহ Aider AI পেয়ার-প্রোগ্রামিং CLI", "forge": "কাস্টম প্রোভাইডার সহ ForgeCode কোডিং এজেন্ট CLI", "cursor-cli": "হেডলেস এজেন্ট মোডে Cursor Agent CLI", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter স্বায়ত্তশাসিত কোডিং এজেন্ট CLI", "omp": "Oh My Pi টার্মিনাল কোডিং এজেন্ট", "letta": "পারসিস্টেন্ট মেমরি এবং টুল ব্যবহারের সুবিধা সহ Letta CLI এজেন্ট", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI-সামঞ্জস্যপূর্ণ প্রোভাইডার সমর্থনসহ স্ব-উন্নয়নশীল RLM কোডিং হারনেস", "warp": "কাস্টম প্রোভাইডার সাপোর্ট সহ Warp AI টার্মিনাল", "agent-deck": "Agent Deck মাল্টি-এজেন্ট অর্কেস্ট্রেটর", "5dive": "5dive — নিজে হোস্ট করা কোডিং এজেন্টের বহর; একটি auth প্রোফাইল সবগুলোকে OmniRoute-এ নির্দেশ করে" @@ -2958,134 +2958,134 @@ "guides": { "cursor": { "notes": { - "0": "Requires Cursor Pro account to use this feature.", - "1": "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings." + "0": "এই ফিচারটি ব্যবহার করতে Cursor Pro অ্যাকাউন্ট প্রয়োজন।", + "1": "Cursor তার নিজস্ব সার্ভারের মাধ্যমে অনুরোধ রাউট করে, তাই লোকাল এন্ডপয়েন্ট সমর্থিত নয়। অনুগ্রহ করে Settings-এ Cloud Endpoint সক্রিয় করুন।" }, "steps": { "1": { - "title": "Open Settings", - "desc": "Go to Settings -> Models" + "title": "Settings খুলুন", + "desc": "Settings -> Models-এ যান" }, "2": { - "title": "Enable OpenAI API", - "desc": "Enable \"OpenAI API key\" option" + "title": "OpenAI API সক্ষম করুন", + "desc": "\"OpenAI API key\" বিকল্পটি সক্ষম করুন" }, "3": { - "title": "Base URL" + "title": "বেস URL" }, "4": { - "title": "API Key" + "title": "API কী" }, "5": { - "title": "Add Custom Model", - "desc": "Click \"View All Model\" -> \"Add Custom Model\"" + "title": "কাস্টম মডেল যোগ করুন", + "desc": "\"সমস্ত মডেল দেখুন\" -> \"কাস্টম মডেল যোগ করুন\"-এ ক্লিক করুন" }, "6": { - "title": "Select Model" + "title": "মডেল নির্বাচন করুন" } } }, "continue": { "steps": { "1": { - "title": "Open Config", - "desc": "Open Continue configuration file" + "title": "কনফিগ খুলুন", + "desc": "Continue কনফিগারেশন ফাইল খুলুন" }, "2": { - "title": "API Key" + "title": "API কী" }, "3": { - "title": "Select Model" + "title": "মডেল নির্বাচন করুন" }, "4": { - "title": "Add Model Config", - "desc": "Add the following configuration to your models array:" + "title": "মডেল কনফিগ যোগ করুন", + "desc": "আপনার models অ্যারেতে নিম্নলিখিত কনফিগারেশন যোগ করুন:" } }, "notes": { - "0": "Continue uses JSON config file." + "0": "Continue একটি JSON কনফিগ ফাইল ব্যবহার করে।" } }, "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCode ইনস্টল করুন", + "desc": "npm-এর মাধ্যমে ইনস্টল করুন: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API কী" }, "3": { - "title": "Set Base URL", + "title": "বেস URL সেট করুন", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "মডেল নির্বাচন করুন" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "থিঙ্কিং ভ্যারিয়েন্ট ব্যবহার করুন", + "desc": "থিঙ্কিং মডেলের জন্য --variant high/low/max দিয়ে চালান (নিচে উদাহরণ কমান্ড দেওয়া হয়েছে)।" } }, "notes": { - "0": "OpenCode requires API key configuration.", - "1": "Set the base URL to your OmniRoute endpoint." + "0": "OpenCode-এর জন্য API কী কনফিগারেশন প্রয়োজন।", + "1": "আপনার OmniRoute এন্ডপয়েন্টকে বেস URL হিসেবে সেট করুন।" } }, "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro সেটিংস খুলুন", + "desc": "সেটিংস → AI প্রদানকারী-তে যান" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "বেস URL", + "desc": "আপনার OmniRoute এন্ডপয়েন্ট URL পেস্ট করুন" }, "3": { - "title": "API Key" + "title": "API কী" }, "4": { - "title": "Select Model" + "title": "মডেল নির্বাচন করুন" } }, "notes": { - "0": "Kiro requires Amazon account." + "0": "Kiro-এর জন্য Amazon অ্যাকাউন্ট প্রয়োজন।" } }, "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI সেটিংস খুলুন", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "কাস্টম প্রদানকারী যোগ করুন", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "বেস URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API কী", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "মডেল নির্বাচন করুন", + "desc": "ড্রপডাউন থেকে একটি মডেল বেছে নিন" } } } }, - "autoConfiguredTab": "Auto-Configured", - "toolCategoriesDesc": "Configure AI coding assistants to route through OmniRoute", - "allToolsTab": "All Tools", - "guidedClientsTab": "Guided Clients", - "mitmClientsTab": "MITM Clients", + "autoConfiguredTab": "স্বয়ংক্রিয়ভাবে কনফিগার করা হয়েছে", + "toolCategoriesDesc": "OmniRoute-এর মাধ্যমে রাউট করার জন্য AI কোডিং অ্যাসিস্ট্যান্টগুলো কনফিগার করুন", + "allToolsTab": "সমস্ত টুল", + "guidedClientsTab": "নির্দেশিত ক্লায়েন্ট", + "mitmClientsTab": "MITM ক্লায়েন্ট", "customCliTab": "কাস্টম CLI", - "toolCategories": "Tool Categories", - "visibleToolsCount": "{count} tools available", + "toolCategories": "টুলের বিভাগসমূহ", + "visibleToolsCount": "{count}টি টুল উপলভ্য", "customCliBuilderTitle": "OpenAI- সামঞ্জস্যপূর্ণ CLI নির্মাতা", "customCliBuilderDescription": "যে কোনো CLI বা SDK-এর জন্য env vars এবং JSON স্নিপেট তৈরি করুন যা একটি OpenAI- সামঞ্জস্যপূর্ণ বেস URL, API কী এবং মডেল আইডি গ্রহণ করে।", "customCliNoModels": "মডেল নির্বাচকদের তৈরি করতে কমপক্ষে একটি প্রদানকারীকে সংযুক্ত করুন৷", @@ -3110,7 +3110,7 @@ "refreshAll": "সব রিফ্রেশ করুন", "hermesRoleDefault": "ডিফল্ট (প্রধান)", "hermesRoleDefaultDesc": "প্রাথমিক কথোপকথন মডেল", - "hermesRoleDelegation": "Delegation (subagents)", + "hermesRoleDelegation": "দায়িত্ব অর্পণ (সাব-এজেন্ট)", "hermesRoleDelegationDesc": "অরকেস্ট্রেটর এবং সাব-এজেন্ট মডেল", "hermesRoleVision": "ভিশন", "hermesRoleVisionDesc": "ছবি এবং স্ক্রিনশট বোঝার ক্ষমতা", @@ -3203,75 +3203,75 @@ "cliproxyapiVersion": "সংস্করণ" }, "combos": { - "title": "Combos", - "description": "Create model combos with weighted routing and fallback support", + "title": "কম্বোসমূহ", + "description": "ওজনভিত্তিক রাউটিং ও ফলব্যাক সমর্থনসহ মডেল কম্বো তৈরি করুন", "autoCatalogTitle": "স্বয়ংক্রিয়-রাউটিং ক্যাটালগ", "autoCatalogTemplateCount": "{count} টেমপ্লেট", "autoCatalogDescription": "অন্তর্নির্মিত স্বয়ংক্রিয়/* কম্বোগুলি সংযুক্ত প্রদানকারীদের থেকে গতিশীলভাবে সমাধান করা হয়েছে। মডেল ক্ষেত্র হিসাবে এই আইডিগুলির যে কোনও একটি ব্যবহার করুন — কোনও সেটআপের প্রয়োজন নেই৷", "autoCatalogExpand": "স্বয়ংক্রিয়-রাউটিং ক্যাটালগ প্রসারিত করুন", "autoCatalogCollapse": "স্বয়ংক্রিয়-রাউটিং ক্যাটালগ সঙ্কুচিত করুন", - "createCombo": "Create Combo", - "editCombo": "Edit Combo", - "deleteCombo": "Delete Combo", - "noModels": "No models", - "noModelsYet": "No models added yet", - "addModel": "Add Model", - "addModelToCombo": "Add Model to Combo", - "routingStrategy": "Routing Strategy", - "maxRetries": "Max Retries", - "timeout": "Timeout (ms)", - "healthcheck": "Healthcheck", - "priority": "Priority", - "fallback": "Fallback", + "createCombo": "কম্বো তৈরি করুন", + "editCombo": "কম্বো সম্পাদনা করুন", + "deleteCombo": "কম্বো মুছুন", + "noModels": "কোনো মডেল নেই", + "noModelsYet": "এখনও কোনো মডেল যোগ করা হয়নি", + "addModel": "মডেল যোগ করুন", + "addModelToCombo": "কম্বোতে মডেল যোগ করুন", + "routingStrategy": "রাউটিং কৌশল", + "maxRetries": "সর্বোচ্চ পুনঃচেষ্টা", + "timeout": "সময়সীমা (ms)", + "healthcheck": "স্বাস্থ্য পরীক্ষা", + "priority": "অগ্রাধিকার", + "fallback": "ফলব্যাক", "roundRobin": "Round Robin", - "random": "Random", - "leastLatency": "Least Latency", - "comboName": "Combo Name", + "random": "এলোমেলো", + "leastLatency": "সর্বনিম্ন বিলম্ব", + "comboName": "কম্বোর নাম", "comboNamePlaceholder": "my-combo", "comboDescription": "বিবরণ", "comboDescriptionPlaceholder": "এই কম্বোটি বর্ণনা করার জন্য ঐচ্ছিক নোট", - "deleteConfirm": "Delete this combo?", - "noCombosYet": "No combos yet", - "comboCreated": "Combo created successfully", - "comboUpdated": "Combo updated successfully", - "comboDeleted": "Combo deleted", - "failedCreate": "Failed to create combo", - "failedUpdate": "Failed to update combo", - "errorCreating": "Error creating combo", - "errorUpdating": "Error updating combo", - "errorDeleting": "Error deleting combo", - "testFailed": "Test request failed", - "failedToggle": "Failed to toggle combo", - "testResults": "Test Results — {name}", - "resolvedBy": "Resolved by:", - "more": "+{count} more", - "reqs": "reqs", - "success": "success", - "proxyConfigured": "Proxy configured", - "copyComboName": "Copy combo name", - "enableCombo": "Enable combo", - "disableCombo": "Disable combo", - "testCombo": "Test combo", - "duplicate": "Duplicate", - "proxyConfig": "Proxy configuration", - "nameRequired": "Name is required", - "nameInvalid": "Only letters, numbers, -, _, / and . allowed", - "nameHint": "Letters, numbers, -, _, / and . allowed", - "priorityDesc": "Sequential fallback: tries model 1 first, then 2, etc.", - "weightedDesc": "Distributes traffic by weight percentage with fallback", - "roundRobinDesc": "Circular distribution: each request goes to the next model in rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", - "randomDesc": "Uniform random selection, then fallback to remaining models", - "leastUsedDesc": "Picks the model with fewest requests, balancing load over time", - "costOptimizedDesc": "Routes to the cheapest model first based on pricing", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "deleteConfirm": "এই কম্বোটি মুছবেন?", + "noCombosYet": "এখনও কোনো কম্বো নেই", + "comboCreated": "কম্বো সফলভাবে তৈরি হয়েছে", + "comboUpdated": "কম্বো সফলভাবে হালনাগাদ হয়েছে", + "comboDeleted": "কম্বো মুছে ফেলা হয়েছে", + "failedCreate": "কম্বো তৈরি করতে ব্যর্থ হয়েছে", + "failedUpdate": "কম্বো হালনাগাদ করতে ব্যর্থ হয়েছে", + "errorCreating": "কম্বো তৈরিতে ত্রুটি", + "errorUpdating": "কম্বো হালনাগাদে ত্রুটি", + "errorDeleting": "কম্বো মুছতে ত্রুটি", + "testFailed": "পরীক্ষামূলক অনুরোধ ব্যর্থ হয়েছে", + "failedToggle": "কম্বোর অবস্থা পরিবর্তন করতে ব্যর্থ হয়েছে", + "testResults": "পরীক্ষার ফলাফল — {name}", + "resolvedBy": "সমাধান করেছে:", + "more": "+আরও {count}টি", + "reqs": "অনুরোধ", + "success": "সফল", + "proxyConfigured": "প্রক্সি কনফিগার করা হয়েছে", + "copyComboName": "কম্বোর নাম কপি করুন", + "enableCombo": "কম্বো সক্রিয় করুন", + "disableCombo": "কম্বো নিষ্ক্রিয় করুন", + "testCombo": "কম্বো পরীক্ষা করুন", + "duplicate": "অনুলিপি তৈরি করুন", + "proxyConfig": "প্রক্সি কনফিগারেশন", + "nameRequired": "নাম আবশ্যক", + "nameInvalid": "শুধু অক্ষর, সংখ্যা, -, _, / এবং . ব্যবহার করা যাবে", + "nameHint": "অক্ষর, সংখ্যা, -, _, / এবং . ব্যবহার করা যাবে", + "priorityDesc": "ক্রমিক ফলব্যাক: প্রথমে মডেল ১, তারপর ২, এভাবে চেষ্টা করে।", + "weightedDesc": "ফলব্যাকসহ ওজনের শতাংশ অনুযায়ী ট্রাফিক বণ্টন করে", + "roundRobinDesc": "চক্রাকার বণ্টন: প্রতিটি অনুরোধ পর্যায়ক্রমে পরবর্তী মডেলে যায়", + "contextRelay": "কনটেক্সট রিলে", + "contextRelayDesc": "অ্যাকাউন্ট পরিবর্তনের সময় হ্যান্ডঅফ সারাংশ ব্যবহার করে সেশনের ধারাবাহিকতা বজায় রাখে", + "randomDesc": "সমানভাবে র্যান্ডম নির্বাচন করে, তারপর অবশিষ্ট মডেলগুলোতে ফলব্যাক করে", + "leastUsedDesc": "সবচেয়ে কম অনুরোধ পাওয়া মডেলটি বেছে নিয়ে সময়ের সাথে লোডের ভারসাম্য বজায় রাখে", + "costOptimizedDesc": "মূল্যের ভিত্তিতে প্রথমে সবচেয়ে সাশ্রয়ী মডেলে রুট করে", + "cacheOptimizedDesc": "প্রতিটি পুনর্ব্যবহারযোগ্য প্রম্পট প্রিফিক্সকে ধারাবাহিকভাবে একই প্রোভাইডার অ্যাকাউন্টে রুট করে", "resetAware": "রিসেট-সচেতন RR", "resetAwareDesc": "5h এবং সাপ্তাহিক রিসেটের বিপরীতে অবশিষ্ট কোটা ব্যালেন্স করে, তারপর রাউন্ড-রবিনের অনুরূপ স্কোর", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "কোটা-ভিত্তিক ওজন", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "কঠোর র্যান্ডম", + "strictRandomDesc": "শাফল ডেক — পুনরায় শাফল করার আগে প্রতিটি মডেল একবার ব্যবহার করে", "fusion": "ফিউশন", "fusionDesc": "প্রম্পটটি সমান্তরালভাবে প্রতিটি প্যানেল মডেলে পাঠায়, তারপর একটি বিচারক মডেল একটি চূড়ান্ত উত্তর সংশ্লেষ করে", "fusionJudgeModel": "বিচারক মডেল", @@ -3282,27 +3282,27 @@ "fusionStragglerGraceMsHelp": "কোরাম পূর্ণ হওয়ার পর ধীরগতির প্যানেল মডেলগুলোর জন্য কতক্ষণ অপেক্ষা করতে হবে (ডিফল্ট ৮০০০)।", "fusionPanelHardTimeoutMs": "প্যানেল হার্ড টাইমআউট (ms)", "fusionPanelHardTimeoutMsHelp": "পরম সীমা যাতে একটি হ্যাং হওয়া মডেল পুরো প্যানেলকে স্থবির করে দিতে না পারে (ডিফল্ট ৯০০০০)।", - "models": "Models", - "autoBalance": "Auto-balance", - "advancedSettings": "Advanced Settings", - "retryDelay": "Retry Delay (ms)", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", - "advancedHint": "Leave empty to use global defaults. These override per-provider settings.", + "models": "মডেলসমূহ", + "autoBalance": "স্বয়ংক্রিয় ভারসাম্য", + "advancedSettings": "উন্নত সেটিংস", + "retryDelay": "পুনঃচেষ্টার বিলম্ব (ms)", + "concurrencyPerModel": "সমসাময়িকতা / মডেল", + "queueTimeout": "সারির সময়সীমা (ms)", + "contextRelayHandoffThreshold": "হ্যান্ডঅফ থ্রেশহোল্ড", + "contextRelayHandoffThresholdHelp": "কোটা ব্যবহার এই থ্রেশহোল্ডে পৌঁছালে, সক্রিয় অ্যাকাউন্টের কোটা শেষ হওয়ার আগেই OmniRoute একটি কাঠামোবদ্ধ হ্যান্ডঅফ সারাংশ তৈরি করে।", + "contextRelayMaxMessages": "সারাংশের জন্য সর্বোচ্চ বার্তা", + "contextRelayMaxMessagesHelp": "সাম্প্রতিক ইতিহাসের কতটুকু রিলে সারাংশে সংক্ষিপ্ত করা হবে তা সীমিত করে।", + "contextRelaySummaryModel": "সারাংশের মডেল", + "contextRelaySummaryModelHelp": "শুধু হ্যান্ডঅফ সারাংশ তৈরির জন্য ব্যবহৃত ঐচ্ছিক ওভাররাইড মডেল। সক্রিয় কম্বো মডেল পুনরায় ব্যবহার করতে খালি রাখুন।", + "contextRelayProviderNote": "কনটেক্সট রিলে বর্তমানে Codex অ্যাকাউন্ট রোটেশনের জন্য হ্যান্ডঅফ তৈরি করে। সর্বোত্তম ধারাবাহিকতার জন্য একই প্রোভাইডারের একাধিক অ্যাকাউন্টের সঙ্গে এটি ব্যবহার করুন।", + "advancedHint": "গ্লোবাল ডিফল্ট ব্যবহার করতে খালি রাখুন। এগুলো প্রতিটি প্রোভাইডারের সেটিংসকে ওভাররাইড করে।", "failoverBeforeRetry": "পুনরায় চেষ্টা করার আগে ব্যর্থতা", "maxSetRetries": "সর্বোচ্চ সেট পুনরায় চেষ্টা", "setRetryDelayMs": "পুনরায় চেষ্টা করার বিলম্ব সেট করুন (ms)", - "moveUp": "Move up", - "moveDown": "Move down", - "removeModel": "Remove", - "saving": "Saving...", + "moveUp": "উপরে সরান", + "moveDown": "নিচে সরান", + "removeModel": "সরিয়ে দিন", + "saving": "সংরক্ষণ করা হচ্ছে...", "liveNoProviders": "এখনও কোনো প্রোভাইডার দেখা যায়নি।", "liveFleetDataHint": "ফ্লিট ডেটা লাইভ কম্বো ইভেন্টের মাধ্যমে আসে।", "liveActiveCount": "সক্রিয় ({count})", @@ -3342,43 +3342,43 @@ "playgroundEmptyHint": "একটি কম্বো নির্বাচন করুন এবং রাউটিং পাথ দেখতে Simulate Route-এ ক্লিক করুন।", "playgroundNoCombosYet": "এখনও কোনো কম্বো কনফিগার করা হয়নি।", "playgroundCreateFirst": "প্রথমে একটি তৈরি করুন", - "weighted": "Weighted", - "leastUsed": "Least-Used", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "weighted": "ওজনভিত্তিক", + "leastUsed": "সর্বনিম্ন-ব্যবহৃত", + "costOpt": "খরচ-অনুকূল", + "strategyGuideTitle": "এই কৌশলটি কীভাবে ব্যবহার করবেন", + "strategyGuideWhen": "কখন ব্যবহার করবেন", + "strategyGuideAvoid": "কখন এড়িয়ে চলবেন", + "strategyGuideExample": "উদাহরণ", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "আপনার একটি পছন্দের মডেল আছে এবং শুধু ব্যর্থ হলে বিকল্প মডেল ব্যবহার করতে চান।", + "avoid": "আপনার মডেলগুলোর মধ্যে অনুরোধ বণ্টন করা প্রয়োজন।", + "example": "বিভ্রাটের সময় সাশ্রয়ী ব্যাকআপসহ প্রাথমিক কোডিং মডেল।" }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "আপনার মডেলগুলোর মধ্যে নিয়ন্ত্রিত ট্রাফিক বিভাজন প্রয়োজন।", + "avoid": "আপনি সময়ের সাথে সঠিক ওজন বজায় রাখতে পারবেন না।", + "example": "৮০% স্থিতিশীল মডেল + ২০% ক্যানারি মডেল রোলআউট।" }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "আপনি পূর্বানুমানযোগ্য ও সমান বণ্টন চান।", + "avoid": "মডেলগুলোর ল্যাটেন্সি বা খরচে অত্যধিক পার্থক্য রয়েছে।", + "example": "থ্রুপুট ছড়িয়ে দিতে একাধিক অ্যাকাউন্টে একই মডেল।" }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "আপনি ন্যূনতম সেটআপে সহজ বণ্টন চান।", + "avoid": "আপনার কঠোর ট্রাফিক নিশ্চয়তা প্রয়োজন।", + "example": "সমতুল্য মডেল দিয়ে দ্রুত প্রোটোটাইপ তৈরি।" }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "আপনি বর্তমান চাহিদার ভিত্তিতে অভিযোজিত ভারসাম্য চান।", + "avoid": "ব্যবহারভিত্তিক ভারসাম্য থেকে সুবিধা পাওয়ার জন্য ট্রাফিক অত্যন্ত কম।", + "example": "মিশ্র ওয়ার্কলোড, যেখানে একটি মডেল প্রায়ই অতিরিক্ত চাপে পড়ে।" }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "খরচ কমানো আপনার সর্বোচ্চ অগ্রাধিকার।", + "avoid": "মূল্যসংক্রান্ত ডেটা অনুপস্থিত বা পুরোনো।", + "example": "ব্যাকগ্রাউন্ড বা ব্যাচ জব, যেখানে কম খরচ অগ্রাধিকার পায়।" }, "reset-aware": { "when": "আপনি কোটা টেলিমেট্রি এবং বিভিন্ন রিসেট উইন্ডো সহ একাধিক অ্যাকাউন্ট জুড়ে রুট করেন।", @@ -3386,104 +3386,104 @@ "example": "আগামীকাল একটি 60% সাপ্তাহিক অ্যাকাউন্ট রিসেট করা পছন্দ করুন এবং পরে 80% অ্যাকাউন্ট রিসেট করুন৷" }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "যখন সম্পূর্ণ সমান বণ্টন চান তখন ব্যবহার করুন—পুনরাবৃত্তির আগে প্রতিটি মডেল একবার করে ব্যবহৃত হবে।", + "avoid": "মডেলগুলোর গুণমান বা ল্যাটেন্সি ভিন্ন এবং ক্রম গুরুত্বপূর্ণ হলে এড়িয়ে চলুন।", + "example": "উদাহরণ: ব্যবহার সমানভাবে বণ্টনের জন্য একই মডেলের একাধিক অ্যাকাউন্ট।" }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Power-of-Two-Choices অ্যালগরিদম ব্যবহার করে কম-ল্যাটেন্সির নির্বাচন চাইলে ব্যবহার করুন।", + "avoid": "২টি বা তার কম মডেলের ছোট কম্বোর ক্ষেত্রে এড়িয়ে চলুন—রাউন্ড-রবিনের তুলনায় কোনো সুবিধা নেই।", + "example": "উদাহরণ: ৪টির বেশি সমতুল্য মডেল এন্ডপয়েন্ট জুড়ে উচ্চ-থ্রুপুট ইনফারেন্স।" }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "কার্যকর প্রসঙ্গ না হারিয়ে দীর্ঘ সেশনগুলোকে অ্যাকাউন্ট রোটেশনের মধ্যেও সচল রাখতে হলে ব্যবহার করুন।", + "avoid": "অ্যাকাউন্ট বদলানো বিরল হলে বা অতিরিক্ত সারসংক্ষেপের অনুরোধ না চাইলে এড়িয়ে চলুন।", + "example": "উদাহরণ: কোটার সীমা প্রায় শেষ হয়ে এলে একাধিক অ্যাকাউন্টের মধ্যে রোটেট করা Codex সেশন।" }, "fill-first": { - "when": "Use when you want to fully exhaust one provider's quota before moving to the next.", - "avoid": "Avoid when you need request-level load balancing across providers.", - "example": "Example: Use all $200 Deepgram credits before falling back to Groq." + "when": "পরবর্তী প্রোভাইডারে যাওয়ার আগে একটি প্রোভাইডারের কোটা সম্পূর্ণ শেষ করতে চাইলে ব্যবহার করুন।", + "avoid": "প্রোভাইডারগুলোর মধ্যে অনুরোধ-স্তরের লোড ব্যালান্সিং প্রয়োজন হলে এড়িয়ে চলুন।", + "example": "উদাহরণ: Groq-এ ফলব্যাক করার আগে Deepgram-এর সম্পূর্ণ $200 ক্রেডিট ব্যবহার করুন।" }, "auto": { - "when": "Use when you need multi-factor scoring routing based on cost, latency, and quality.", - "avoid": "Avoid when you need strict priority ordering or historical persistence.", - "example": "Example: Balance requests across models with different strengths." + "when": "খরচ, ল্যাটেন্সি ও গুণমানের ভিত্তিতে বহু-ফ্যাক্টর স্কোরিং রাউটিং প্রয়োজন হলে ব্যবহার করুন।", + "avoid": "কঠোর অগ্রাধিকারক্রম বা ঐতিহাসিক স্থায়িত্ব প্রয়োজন হলে এড়িয়ে চলুন।", + "example": "উদাহরণ: বিভিন্ন সক্ষমতার মডেলগুলোর মধ্যে অনুরোধের ভারসাম্য বজায় রাখুন।" }, "lkgp": { - "when": "Use when you want to route based on historical success rates and performance.", - "avoid": "Avoid when historical data is limited or unreliable.", - "example": "Example: Route to models with a good track record on specific tasks." + "when": "ঐতিহাসিক সাফল্যের হার ও পারফরম্যান্সের ভিত্তিতে রাউট করতে চাইলে ব্যবহার করুন।", + "avoid": "ঐতিহাসিক ডেটা সীমিত বা অবিশ্বস্ত হলে এড়িয়ে চলুন।", + "example": "উদাহরণ: নির্দিষ্ট কাজে ভালো সাফল্যের রেকর্ড রয়েছে এমন মডেলে রাউট করুন।" }, "context-optimized": { - "when": "Use when you need to optimize context window usage across models.", - "avoid": "Avoid when models have similar context lengths or tasks are simple.", - "example": "Example: Distribute long conversations across models with larger context windows." + "when": "মডেলগুলোর মধ্যে কনটেক্সট উইন্ডোর ব্যবহার অপ্টিমাইজ করার প্রয়োজন হলে ব্যবহার করুন।", + "avoid": "মডেলগুলোর কনটেক্সটের দৈর্ঘ্য একই রকম হলে বা কাজগুলো সহজ হলে এড়িয়ে চলুন।", + "example": "উদাহরণ: বড় কনটেক্সট উইন্ডোসহ মডেলগুলোর মধ্যে দীর্ঘ কথোপকথন বিতরণ করুন।" } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "কোনো অনুরোধ ব্যর্থ হওয়ার আগে কতবার পুনরায় চেষ্টা করা হবে।", + "retryDelay": "পুনরায় চেষ্টার মধ্যবর্তী প্রাথমিক অপেক্ষার সময়। বেশি মান আকস্মিক চাপ কমায়।", + "timeout": "বাতিল করার আগে অনুরোধের সর্বোচ্চ সময়কাল।", + "healthcheck": "রাউটিংয়ের সিদ্ধান্ত থেকে অস্বাস্থ্যকর মডেল/প্রোভাইডার বাদ দেয়।", + "concurrencyPerModel": "রাউন্ড-রবিনে প্রতি মডেলের জন্য অনুমোদিত সর্বোচ্চ সমসাময়িক অনুরোধ।", + "queueTimeout": "টাইম আউট হওয়ার আগে একটি অনুরোধ কতক্ষণ সারিতে অপেক্ষা করতে পারবে।", "failoverBeforeRetry": "সক্রিয় করা হলে, যেকোনো আপস্ট্রিম ত্রুটি পরবর্তী কম্বো টার্গেটে অবিলম্বে ব্যর্থতা ট্রিগার করে, সমস্ত পুনঃপ্রচার এবং ফলব্যাক URL এড়িয়ে যায়।", "maxSetRetries": "প্রতিটি লক্ষ্য ব্যর্থ হলে পূর্ণ লক্ষ্য সেট করার জন্য পুনরায় চেষ্টা করার সংখ্যা। 0 = কোনো সেট-লেভেল পুনঃপ্রচেষ্টা নয়।", "setRetryDelayMs": "সেট-লেভেলের পুনঃপ্রচেষ্টার মধ্যে বিলম্ব, ক্ষণস্থায়ী সমস্যা সমাধানের জন্য সময় দেয়।", "disableSessionStickiness": "প্রথম-বার্তার হ্যাশ দ্বারা একটি সম্পূর্ণ কথোপকথনকে একটি সংযোগে পিন করার পরিবর্তে প্রতিটি অনুরোধে একটি ভিন্ন সংযোগে রোটেট করুন। গ্লোবাল ডিফল্ট ওভাররাইড করে। মাল্টি-টার্ন চ্যাটের জন্য প্রম্পট-ক্যাশ হিট সংরক্ষণ করতে Inherit-এ রেখে দিন।" }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "দ্রুত টেমপ্লেট", + "templatesDescription": "একটি প্রারম্ভিক প্রোফাইল প্রয়োগ করুন, তারপর মডেল ও কনফিগ সমন্বয় করুন।", + "templateApply": "টেমপ্লেট প্রয়োগ করুন", + "templateHighAvailability": "উচ্চ প্রাপ্যতা", + "templateHighAvailabilityDesc": "স্বাস্থ্য পরীক্ষা ও নিরাপদ পুনঃচেষ্টাসহ অগ্রাধিকারভিত্তিক রাউটিং।", + "templateCostSaver": "খরচ সাশ্রয়ী", + "templateCostSaverDesc": "বাজেট-অগ্রাধিকার ওয়ার্কলোডের জন্য খরচ-অপ্টিমাইজড রাউটিং।", + "templateBalanced": "ভারসাম্যপূর্ণ লোড", + "templateBalancedDesc": "সময়ের সাথে চাহিদা ছড়িয়ে দিতে সবচেয়ে কম ব্যবহৃত মডেলভিত্তিক রাউটিং।", + "usageGuideHide": "লুকান", + "usageGuideDontShowAgain": "আবার দেখাবেন না", + "usageGuideShow": "গাইড দেখান", + "quickTestTitle": "কম্বো যাচাইয়ের জন্য প্রস্তুত", + "quickTestDescription": "ফলব্যাক ও লেটেন্সির আচরণ নিশ্চিত করতে এখনই একটি পরীক্ষা চালান।", + "testNow": "এখনই পরীক্ষা করুন", + "pricingCoverage": "মূল্য-তথ্যের আওতা", + "pricingCoverageHint": "সব কম্বো মডেলের মূল্য-তথ্য থাকলে খরচ-অপ্টিমাইজড রাউটিং সবচেয়ে ভালো কাজ করে।", + "pricingAvailable": "মূল্য-তথ্য উপলভ্য", + "pricingMissing": "কোনো মূল্য-তথ্য নেই", + "pricingAvailableShort": "মূল্যযুক্ত", + "pricingMissingShort": "মূল্যহীন", "fallbackOnlyOnQuotaExhaustion": "কেবল কোটা শেষ হলে অগ্রসর হন", "fallbackOnlyOnQuotaExhaustionShort": "কোটার-শুধুমাত্র ব্যাকআপ", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", - "readinessCheckPricing": "Pricing data is available", - "readinessCheckPricingOptional": "Pricing rule not required", - "saveBlockedTitle": "Save is blocked until the following items are fixed:", - "saveBlockName": "Define a combo name.", - "saveBlockModels": "Add at least one model.", - "saveBlockWeighted": "Set weights to 100% (current: {total}%).", - "saveBlockPricing": "Add pricing for at least one model or choose a different strategy.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "warningRoundRobinSingleModel": "অন্তত ২টি মডেল থাকলে রাউন্ড-রবিন সবচেয়ে কার্যকর।", + "warningCostOptimizedPartialPricing": "{total}টি মডেলের মধ্যে কেবল {priced}টির মূল্য-তথ্য রয়েছে। রাউটিং আংশিকভাবে খরচ-সচেতন হতে পারে।", + "warningCostOptimizedNoPricing": "এই কম্বোর জন্য কোনো মূল্য-তথ্য পাওয়া যায়নি। খরচ-অপ্টিমাইজড রাউটিং অপ্রত্যাশিতভাবে কাজ করতে পারে।", + "filterAll": "সব", + "filterIntelligent": "বুদ্ধিমান", + "filterDeterministic": "নির্ধারিত", + "filterEmptyTitle": "এই কৌশল ফিল্টারের সঙ্গে কোনো কম্বো মেলে না।", + "filterEmptyIntelligentDescription": "ইন্টেলিজেন্ট রাউটিং ড্যাশবোর্ডে তথ্য দেখাতে একটি অটো বা LKGP কম্বো তৈরি করুন।", + "filterEmptyDeterministicDescription": "এই মুহূর্তে শুধু অটো এবং LKGP কম্বো রয়েছে। All-এ ফিরে যান অথবা একটি নির্ধারিত কম্বো তৈরি করুন।", + "readinessTitle": "সংরক্ষণ করতে প্রস্তুত?", + "readinessDescription": "এই কম্বো তৈরি বা আপডেট করার আগে চেকলিস্টটি পর্যালোচনা করুন।", + "readinessCheckName": "কম্বোর নাম বৈধ", + "readinessCheckModels": "অন্তত একটি মডেল নির্বাচিত হয়েছে", + "readinessCheckWeights": "মোট ওজন 100%", + "readinessCheckWeightsOptional": "ওজনের নিয়ম প্রয়োজন নেই", + "readinessCheckPricing": "মূল্য নির্ধারণের ডেটা উপলভ্য", + "readinessCheckPricingOptional": "মূল্য নির্ধারণের নিয়ম প্রয়োজন নেই", + "saveBlockedTitle": "নিচের বিষয়গুলো ঠিক না করা পর্যন্ত সংরক্ষণ করা যাবে না:", + "saveBlockName": "কম্বোর একটি নাম নির্ধারণ করুন।", + "saveBlockModels": "অন্তত একটি মডেল যোগ করুন।", + "saveBlockWeighted": "ওজন 100%-এ সেট করুন (বর্তমান: {total}%)।", + "saveBlockPricing": "অন্তত একটি মডেলের জন্য মূল্য যোগ করুন অথবা ভিন্ন কৌশল বেছে নিন।", + "recommendationsLabel": "প্রস্তাবিত সেটআপ", + "applyRecommendations": "সুপারিশগুলো প্রয়োগ করুন", + "recommendationsUpdated": "{strategy}-এর জন্য সুপারিশগুলো আপডেট করা হয়েছে।", + "recommendationsApplied": "এই কম্বোতে সুপারিশগুলো প্রয়োগ করা হয়েছে।", + "intelligentPanelTitle": "ইন্টেলিজেন্ট রাউটিং ড্যাশবোর্ড", + "intelligentPanelDesc": "এই অটো-রাউটিং কম্বোর রিয়েল-টাইম স্কোরিং ও স্বাস্থ্যগত অবস্থা।", "configOnlyStatus": "কনফিগারেশন ভিউ", "configOnlyHint": "এই প্যানেলটি শুধুমাত্র রাউটিং ইনপুট দেখায়। লাইভ ব্রেকার স্টেট Health পেজে উপলব্ধ।", "routingInputs": "রাউটিং ইনপুট", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "অজানা প্রোভাইডার প্রিফিক্স।", "builderDynamicAccountShort": "ডায়নামিক অ্যাকাউন্ট", "builderNeedValidName": "চালিয়ে যাওয়ার আগে একটি বৈধ কম্বো নাম নির্ধারণ করুন।", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "অবস্থার সারসংক্ষেপ", + "normalOperation": "স্বাভাবিক কার্যক্রম", + "allProvidersHealthy": "প্রোভাইডারগুলো রাউটিং পরিস্থিতি স্বাভাবিক বলে জানাচ্ছে।", + "incidentMode": "ঘটনা মোড", + "highCircuitBreakerRate": "সার্কিট ব্রেকার ট্রিপের উচ্চ হার শনাক্ত হয়েছে।", + "activeModePack": "সক্রিয় মোড প্যাক", + "modePackUpdated": "মোড প্যাক {pack}-এ আপডেট করা হয়েছে।", + "modePackHint": "কম্বো পুনর্নির্মাণ না করেই রাউটিং ইঞ্জিনকে অগ্রাধিকার দিতে প্রিসেট পরিবর্তন করুন।", + "providerScores": "প্রোভাইডার স্কোর", + "allProvidersEvaluated": "কোনো প্রার্থী পুল কনফিগার করা নেই। রানটাইমে সব সক্রিয় প্রোভাইডার মূল্যায়ন করা হয়।", + "excludedProviders": "বাদ দেওয়া প্রোভাইডার", + "excludedProvidersHint": "OPEN সার্কিট ব্রেকার থাকা প্রোভাইডারগুলোকে সাময়িকভাবে রাউটিং থেকে বাদ দেওয়া হয়েছে।", + "noExcludedProviders": "বর্তমানে কোনো প্রোভাইডার বাদ দেওয়া নেই।", + "cooldownMinutes": "কুলডাউন: {minutes}মি", + "builderIntelligentTitle": "ইন্টেলিজেন্ট রাউটিং কনফিগারেশন", + "builderIntelligentDesc": "এই অটো-রাউটিং কম্বোর জন্য মাল্টি-ফ্যাক্টর স্কোরিং ইঞ্জিন কনফিগার করুন।", + "candidatePoolLabel": "প্রার্থী পুল", + "candidatePoolHint": "এই ইঞ্জিন কোন প্রোভাইডারগুলো মূল্যায়ন করবে তা নির্বাচন করুন। সব সক্রিয় প্রোভাইডার ব্যবহার করতে এটি খালি রাখুন।", + "candidatePoolEmpty": "এখনও কোনো সক্রিয় প্রোভাইডার উপলভ্য নেই।", + "candidatePoolAllProviders": "সব প্রোভাইডার", + "modePackLabel": "মোড প্যাক", + "routerStrategyLabel": "রাউটার কৌশল", + "strategyRules": "নিয়মাবলি (৬-ফ্যাক্টর স্কোরিং)", + "explorationRateLabel": "এক্সপ্লোরেশন হার", + "explorationRateHint": "{percent}% অনুরোধ অপ্টিমাল নয় এমন প্রোভাইডার অন্বেষণ করতে পারে।", + "budgetCapLabel": "বাজেট সীমা (USD / অনুরোধ)", + "budgetCapPlaceholder": "কোনো সীমা নেই", + "advancedWeightsTitle": "উন্নত: স্কোরিংয়ের ওজন", "nestedComboFlatten": "নেস্টেড কম্বোগুলো ফ্ল্যাটেন করুন", "nestedComboExecute": "টার্গেট হিসেবে নেস্টেড কম্বোগুলো এক্সিকিউট করুন", "effectiveRoutingShare": "কার্যকর রাউটিং শেয়ার (ওজন ÷ মোট)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "কোটা", + "weightHealth": "স্বাস্থ্য", + "weightCostInv": "খরচ", + "weightLatencyInv": "ল্যাটেন্সি", + "weightTaskFit": "কাজের উপযোগিতা", + "weightStability": "স্থিতিশীলতা", + "weightTierPriority": "স্তর", + "weightCacheAffinity": "ক্যাশ হিট অ্যাফিনিটি", "weightSessionAvailability": "সেশন উপলব্ধতা", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "বুদ্ধিমান রাউটিং কনফিগারেশন", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "ফেইল-সেফ বেসলাইন", + "description": "একটি প্রাথমিক মডেল ব্যবহার করুন এবং ফলব্যাক চেইনটি সংক্ষিপ্ত ও নির্ভরযোগ্য রাখুন।", + "tip1": "আপনার সবচেয়ে নির্ভরযোগ্য মডেলটি প্রথমে রাখুন।", + "tip2": "একই মানের ১-২টি ব্যাকআপ মডেল রাখুন।", + "tip3": "প্রোভাইডারের সাময়িক ব্যর্থতা সামাল দিতে নিরাপদ পুনঃচেষ্টা ব্যবহার করুন।" }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "নিয়ন্ত্রিত ট্রাফিক বিভাজন", + "description": "ক্যানারি রোলআউট এবং মডেলগুলোর মধ্যে ধীরে ধীরে স্থানান্তরের জন্য দারুণ।", + "tip1": "৯০/১০-এর মতো রক্ষণশীল বিভাজন দিয়ে শুরু করুন।", + "tip2": "মোট পরিমাণ ১০০% রাখুন এবং পরিবর্তনের পর স্বয়ংক্রিয়ভাবে ভারসাম্য বজায় রাখুন।", + "tip3": "ক্যানারির ওজন বাড়ানোর আগে সাফল্য ও ল্যাটেন্সি পর্যবেক্ষণ করুন।" }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "অনুমানযোগ্য লোড বণ্টন", + "description": "মডেলগুলো সমতুল্য হলে এবং মসৃণ বণ্টনের প্রয়োজন হলে এটি সর্বোত্তম।", + "tip1": "অন্তত ২টি মডেল ব্যবহার করুন।", + "tip2": "হঠাৎ অতিরিক্ত চাপ এড়াতে কনকারেন্সি সীমা নির্ধারণ করুন।", + "tip3": "স্যাচুরেশনের সময় দ্রুত ব্যর্থ হতে কিউ টাইমআউট ব্যবহার করুন।" }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "কম সেটআপে দ্রুত বণ্টন", + "description": "কঠোর নিশ্চয়তা ছাড়াই সহজ বণ্টনের প্রয়োজন হলে ব্যবহার করুন।", + "tip1": "একই ধরনের ল্যাটেন্সি প্রোফাইলের মডেল ব্যবহার করুন।", + "tip2": "এলোমেলো মিস সামাল দিতে পুনঃচেষ্টা সক্রিয় রাখুন।", + "tip3": "কঠোর SLA-এর পরিবর্তে পরীক্ষামূলক কাজের জন্য এটি বেছে নিন।" }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "অভিযোজিত ভারসাম্য", + "description": "সময়ের সাথে সাথে হটস্পট কমাতে কম ব্যবহৃত মডেলগুলিতে রুট করে।", + "tip1": "ধারাবাহিক ট্রাফিকের ক্ষেত্রে আরও ভালো কাজ করে।", + "tip2": "নিরাপদ ভারসাম্যের জন্য স্বাস্থ্য পরীক্ষার সঙ্গে একত্রে ব্যবহার করুন।", + "tip3": "বণ্টনের উন্নতি যাচাই করতে প্রতিটি মডেলের ব্যবহার ট্র্যাক করুন।" }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "বাজেট-অগ্রাধিকারভিত্তিক রাউটিং", + "description": "মূল্যসংক্রান্ত মেটাডেটা উপলভ্য থাকলে কম খরচের মডেলগুলিতে রুট করে।", + "tip1": "নির্বাচিত সব মডেলের জন্য মূল্যতথ্য রয়েছে কি না নিশ্চিত করুন।", + "tip2": "কঠিন প্রম্পটের জন্য মানসম্মত একটি ফলব্যাক রাখুন।", + "tip3": "যেসব ব্যাচ/ব্যাকগ্রাউন্ড জবে খরচই প্রধান KPI, সেগুলোর জন্য ব্যবহার করুন।" }, "reset-aware": { "title": "রিসেট-সচেতন অ্যাকাউন্ট ঘূর্ণন", @@ -3597,155 +3597,155 @@ "tip3": "টাই ব্যান্ড ছোট রাখুন যাতে সমান অ্যাকাউন্টগুলি এখনও মোটামুটিভাবে ঘোরে।" }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "শাফল ডেক বণ্টন", + "description": "পুনরায় শাফল করার আগে প্রতিটি চক্রে প্রত্যেক মডেল ঠিক একবার ব্যবহার করা হয়।", + "tip1": "অর্থবহ বণ্টনের জন্য অন্তত ২টি মডেল ব্যবহার করুন।", + "tip2": "সমমানের কর্মদক্ষতাসম্পন্ন মডেলগুলোর সঙ্গে সবচেয়ে ভালো কাজ করে।", + "tip3": "একাধিক API অ্যাকাউন্টের মধ্যে লোড ব্যালান্সিংয়ের জন্য আদর্শ।" }, "fill-first": { - "description": "Exhaust provider quotas sequentially before falling back.", - "tip1": "Use for quota-based routing with clear fallback chains.", - "tip2": "Set quotas accurately to avoid premature fallback.", - "tip3": "Works best with providers offering free tiers or credit buckets.", - "title": "Quota Exhaustion" + "description": "ফলব্যাকে যাওয়ার আগে প্রোভাইডারের কোটা পর্যায়ক্রমে সম্পূর্ণ ব্যবহার করে।", + "tip1": "সুস্পষ্ট ফলব্যাক চেইনসহ কোটাভিত্তিক রাউটিংয়ের জন্য ব্যবহার করুন।", + "tip2": "অকাল ফলব্যাক এড়াতে কোটা নির্ভুলভাবে নির্ধারণ করুন।", + "tip3": "ফ্রি টিয়ার বা ক্রেডিট বাকেট প্রদানকারী প্রোভাইডারদের সঙ্গে সবচেয়ে ভালো কাজ করে।", + "title": "কোটা নিঃশেষকরণ" }, "auto": { - "description": "Route based on real-time scoring for cost, latency, quality, and health.", - "tip1": "Let the engine balance multiple factors automatically.", - "tip2": "Monitor which factors drive routing decisions in logs.", - "tip3": "Use for complex workloads where no single factor dominates.", - "title": "Multi-Factor Optimization" + "description": "খরচ, ল্যাটেন্সি, গুণমান ও স্বাস্থ্যসংক্রান্ত রিয়েল-টাইম স্কোরিংয়ের ভিত্তিতে রুট করে।", + "tip1": "ইঞ্জিনকে একাধিক বিষয় স্বয়ংক্রিয়ভাবে ভারসাম্য করতে দিন।", + "tip2": "লগে কোন বিষয়গুলো রাউটিং সিদ্ধান্তকে প্রভাবিত করে তা পর্যবেক্ষণ করুন।", + "tip3": "যেসব জটিল ওয়ার্কলোডে কোনো একক বিষয় প্রাধান্য পায় না, সেগুলোর জন্য ব্যবহার করুন।", + "title": "বহু-বিষয়ক অপ্টিমাইজেশন" }, "lkgp": { - "description": "Route based on historical performance and success patterns.", - "tip1": "Requires sufficient request history for accurate predictions.", - "tip2": "Good for workloads with consistent model performance patterns.", - "tip3": "Monitor prediction accuracy and adjust weights as needed.", - "title": "History-Based Routing" + "description": "ঐতিহাসিক কর্মদক্ষতা ও সাফল্যের প্যাটার্নের ভিত্তিতে রুট করে।", + "tip1": "নির্ভুল পূর্বাভাসের জন্য পর্যাপ্ত রিকোয়েস্ট ইতিহাস প্রয়োজন।", + "tip2": "ধারাবাহিক মডেল-পারফরম্যান্স প্যাটার্নযুক্ত ওয়ার্কলোডের জন্য উপযোগী।", + "tip3": "পূর্বাভাসের নির্ভুলতা পর্যবেক্ষণ করুন এবং প্রয়োজন অনুযায়ী ওয়েট সমন্বয় করুন।", + "title": "ইতিহাসভিত্তিক রাউটিং" }, "context-optimized": { - "description": "Optimize routing based on context window usage and token efficiency.", - "tip1": "Route long conversations to models with larger context windows.", - "tip2": "Monitor context utilization to avoid token waste.", - "tip3": "Best for conversational AI requiring extensive context retention.", - "title": "Context Optimization" + "description": "কনটেক্সট উইন্ডোর ব্যবহার ও টোকেন দক্ষতার ভিত্তিতে রাউটিং অপ্টিমাইজ করে।", + "tip1": "দীর্ঘ কথোপকথনগুলোকে বড় কনটেক্সট উইন্ডোযুক্ত মডেলে রুট করুন।", + "tip2": "টোকেনের অপচয় এড়াতে কনটেক্সটের ব্যবহার পর্যবেক্ষণ করুন।", + "tip3": "বিস্তৃত কনটেক্সট ধরে রাখা প্রয়োজন এমন কথোপকথনমূলক AI-এর জন্য সর্বোত্তম।", + "title": "কনটেক্সট অপ্টিমাইজেশন" }, "context-relay": { - "description": "Best when account rotation is expected and the next account must inherit a simplified task summary.", - "tip1": "Use with providers rotating accounts for the same model family.", - "tip2": "Set handoff threshold below hard quota cutoffs for summary generation time.", - "tip3": "Only set a dedicated summary model if the primary is too expensive or unstable.", - "title": "Session Continuity Priority" + "description": "অ্যাকাউন্ট রোটেশন প্রত্যাশিত হলে এবং পরবর্তী অ্যাকাউন্টকে কাজটির সরলীকৃত সারসংক্ষেপ গ্রহণ করতে হলে সর্বোত্তম।", + "tip1": "একই মডেল পরিবারের জন্য অ্যাকাউন্ট রোটেট করে এমন প্রোভাইডারদের সঙ্গে ব্যবহার করুন।", + "tip2": "সারসংক্ষেপ তৈরির সময় নিশ্চিত করতে হার্ড কোটা কাটঅফের নিচে হ্যান্ডঅফ থ্রেশহোল্ড নির্ধারণ করুন।", + "tip3": "প্রাইমারি মডেলটি অতিরিক্ত ব্যয়বহুল বা অস্থিতিশীল হলেই কেবল একটি ডেডিকেটেড সারাংশ মডেল নির্ধারণ করুন।", + "title": "সেশন ধারাবাহিকতার অগ্রাধিকার" }, "p2c": { - "description": "Route to the provider with the lowest current load based on real-time metrics.", - "tip1": "Monitor provider health metrics for accurate load assessment.", - "tip2": "Works best with homogeneous provider pools.", - "tip3": "Adjust sensitivity to avoid oscillation during traffic spikes.", - "title": "Power of Two Choices" + "description": "রিয়েল-টাইম মেট্রিক্সের ভিত্তিতে বর্তমানে সর্বনিম্ন লোডযুক্ত প্রোভাইডারের কাছে রুট করে।", + "tip1": "সঠিক লোড মূল্যায়নের জন্য প্রদানকারীর স্বাস্থ্যসংক্রান্ত মেট্রিক পর্যবেক্ষণ করুন।", + "tip2": "সমজাতীয় প্রদানকারী পুলের সঙ্গে সবচেয়ে ভালো কাজ করে।", + "tip3": "ট্রাফিকের আকস্মিক বৃদ্ধির সময় দোদুল্যমানতা এড়াতে সংবেদনশীলতা সামঞ্জস্য করুন।", + "title": "দুটি বিকল্পের ক্ষমতা" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", - "auto": "Intelligent Auto", - "autoDesc": "Self-healing smart routing pool with multi-factor scoring", - "lkgp": "LKGP Mode", - "lkgpDesc": "Prioritizes the last provider that successfully completed a request", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "templateFreeStack": "বিনামূল্যের স্ট্যাক ($0)", + "templateFreeStackDesc": "সব বিনামূল্যের প্রদানকারীর মধ্যে রাউন্ড-রবিন: Kiro (Claude), Qoder (5 মডেল), Qwen (4 মডেল)। কোনো খরচ নেই, কোডিং কখনো থামে না।", + "auto": "বুদ্ধিমান স্বয়ংক্রিয় ব্যবস্থা", + "autoDesc": "বহু-উপাদানভিত্তিক স্কোরিংসহ স্বয়ংক্রিয়ভাবে পুনরুদ্ধারক্ষম স্মার্ট রাউটিং পুল", + "lkgp": "LKGP মোড", + "lkgpDesc": "সর্বশেষ যে প্রদানকারী সফলভাবে একটি অনুরোধ সম্পন্ন করেছে, তাকে অগ্রাধিকার দেয়", + "wizardGuideTitle": "কম্বো ব্যবহার শুরু করুন", + "wizardGuideDesc": "AI ট্রাফিক বুদ্ধিমত্তার সঙ্গে রাউট করতে মডেল কম্বো তৈরি করুন", + "wizardGuideHint": "অথবা উপরে + কম্বো তৈরি করুন-এ ক্লিক করুন", + "createFirstCombo": "আপনার প্রথম কম্বো তৈরি করুন", + "wizardStep1Title": "আপনার কম্বোর নাম দিন", + "wizardStep1Desc": "রাউটিং নিয়মে শনাক্ত করার জন্য আপনার কম্বোকে একটি অনন্য নাম দিন", + "wizardStep2Title": "মডেল যোগ করুন", + "wizardStep2Desc": "AI মডেল নির্বাচন করুন এবং তাদের ফলব্যাক অগ্রাধিকারের ক্রম সাজান", + "wizardStep3Title": "কৌশল বেছে নিন", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "পর্যালোচনা ও সংরক্ষণ করুন", + "wizardStep4Desc": "আপনার কনফিগারেশন পর্যালোচনা করুন এবং কম্বোটি সক্রিয় করুন", + "usageGuideInvokeTitle": "এই কম্বোটি যেভাবে কল করবেন", + "usageGuideInvokeDesc": "মডেল হিসেবে কম্বোর হুবহু নাম পাঠান, যেমন model: \"my-combo\" (অথবা combo/my-combo)।", + "usageGuideInvokeAutoNote": "auto এবং auto/* হলো একটি পৃথক শূন্য-কনফিগারেশন রাউটার, যা আপনার কম্বোগুলো ব্যবহার করে না (যদি না কোনো কম্বোর নাম আক্ষরিক অর্থেই auto হয়)।", + "usageGuideInvokeOpenrouterNote": "openrouter/auto একটি প্রকৃত অর্থপ্রদত্ত OpenRouter পণ্য (Auto Best Available), OmniRoute-এর কোনো উপনাম নয় — Settings → Routing → Hide paid models-এর মাধ্যমে এটি বাদ দিন।", + "emailVisibilityStateOn": "চালু", + "emailVisibilityStateOff": "বন্ধ", + "reorderHandle": "ক্রম পরিবর্তন করতে টেনে আনুন", + "failedReorder": "মডেলগুলোর ক্রম পরিবর্তন করা যায়নি", + "builderFlowTitle": "কম্বো বিল্ডার প্রবাহ", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "মৌলিক বিষয়াবলি", + "description": "নাম ও প্রাথমিক টেমপ্লেট" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "ধাপসমূহ", + "description": "প্রদানকারী, মডেল ও অ্যাকাউন্ট নির্বাচন" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "কৌশল", + "description": "রাউটিং আচরণ ও উন্নত সেটিংস" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "স্মার্ট রাউটিং", + "description": "স্বয়ংক্রিয় রাউটিংয়ের প্রার্থী পুল, প্রিসেট ও স্কোরিং" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "পর্যালোচনা", + "description": "সংরক্ষণের আগে চূড়ান্ত যাচাই" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", - "builderDuplicateExact": "This exact provider/model/account step is already in the combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", - "builderStagesDescription": "Complete each stage in order to define combos, build steps, select routing strategy, and review results.", - "builderStepsDescription": "Build each combo step in order: provider, model, then account. This allows reusing the same provider and model across different accounts.", - "selectProvider": "Select Provider", - "selectProviderPlaceholder": "Select a provider", - "selectModel": "Select Model", - "selectModelPlaceholder": "Select a provider first", - "selectAccount": "Select Account", - "selectComboToReference": "Select combo to reference", - "comboReference": "Combo Reference", - "addComboReference": "Add Combo Reference", - "addStepBeforeContinue": "Please add at least one step before proceeding to the next stage.", - "previewNextStep": "Preview next step", - "autoSelectAccount": "Automatically select account at runtime", - "modePackBalanced": "Balanced", - "modePackBudget": "Budget", - "modePackPerformance": "Performance", - "modePackCustom": "Custom", - "browseLegacyCatalog": "Browse legacy combo catalog", - "agentFeaturesTitle": "Agent Features", - "agentFeaturesDescription": "Enable advanced features for agents using this combo", + "builderStageVisited": "ধাপ সম্পন্ন হয়েছে", + "builderStageCurrent": "বর্তমান ধাপ", + "builderStagePending": "অপেক্ষমাণ", + "builderStageLocked": "লক করা আছে — আগে পূর্ববর্তী ধাপটি সম্পন্ন করুন", + "builderTitle": "একটি কম্বো তৈরি করুন", + "builderBrowseCatalog": "ক্যাটালগ ব্রাউজ করুন", + "builderProvider": "প্রোভাইডার", + "builderLoadingProviders": "প্রোভাইডার লোড হচ্ছে...", + "builderSelectProvider": "প্রোভাইডার নির্বাচন করুন", + "builderModel": "মডেল", + "builderSelectModel": "মডেল নির্বাচন করুন", + "builderProviderFirst": "প্রথমে প্রোভাইডার নির্বাচন করুন", + "builderAccount": "অ্যাকাউন্ট", + "builderPreview": "প্রিভিউ", + "builderAddStep": "ধাপ যোগ করুন", + "builderDuplicateExact": "এই নির্দিষ্ট প্রোভাইডার/মডেল/অ্যাকাউন্ট ধাপটি ইতিমধ্যেই কম্বোতে রয়েছে।", + "builderComboRef": "কম্বো রেফারেন্স", + "builderAddComboRef": "কম্বো রেফারেন্স যোগ করুন", + "builderComboRefStep": "কম্বো রেফারেন্স যোগ করুন", + "builderPinnedAccount": "পিন করা অ্যাকাউন্ট", + "builderLegacyEntry": "লিগ্যাসি এন্ট্রি", + "reviewName": "নাম", + "reviewStrategy": "কৌশল", + "reviewSteps": "ধাপসমূহ", + "reviewAccounts": "অ্যাকাউন্টসমূহ", + "reviewProviders": "প্রোভাইডারসমূহ", + "reviewComboRefs": "কম্বো রেফারেন্সসমূহ", + "reviewAdvanced": "উন্নত সেটিংস", + "reviewAgentFlags": "এজেন্ট ফ্ল্যাগসমূহ", + "reviewSequence": "মডেলের ক্রম", + "reviewNoSteps": "কোনো ধাপ কনফিগার করা হয়নি", + "builderStagesDescription": "কম্বো নির্ধারণ, ধাপ তৈরি, রাউটিং কৌশল নির্বাচন এবং ফলাফল পর্যালোচনা করতে প্রতিটি ধাপ ক্রমানুসারে সম্পন্ন করুন।", + "builderStepsDescription": "প্রতিটি কম্বো ধাপ এই ক্রমে তৈরি করুন: প্রোভাইডার, মডেল, তারপর অ্যাকাউন্ট। এতে বিভিন্ন অ্যাকাউন্টে একই প্রোভাইডার ও মডেল পুনরায় ব্যবহার করা যায়।", + "selectProvider": "প্রোভাইডার নির্বাচন করুন", + "selectProviderPlaceholder": "একটি প্রোভাইডার নির্বাচন করুন", + "selectModel": "মডেল নির্বাচন করুন", + "selectModelPlaceholder": "প্রথমে একটি প্রোভাইডার নির্বাচন করুন", + "selectAccount": "অ্যাকাউন্ট নির্বাচন করুন", + "selectComboToReference": "রেফারেন্সের জন্য কম্বো নির্বাচন করুন", + "comboReference": "কম্বো রেফারেন্স", + "addComboReference": "কম্বো রেফারেন্স যোগ করুন", + "addStepBeforeContinue": "পরবর্তী ধাপে যাওয়ার আগে অনুগ্রহ করে অন্তত একটি ধাপ যোগ করুন।", + "previewNextStep": "পরবর্তী ধাপের পূর্বরূপ", + "autoSelectAccount": "রানটাইমে স্বয়ংক্রিয়ভাবে অ্যাকাউন্ট নির্বাচন করুন", + "modePackBalanced": "ভারসাম্যপূর্ণ", + "modePackBudget": "বাজেট", + "modePackPerformance": "পারফরম্যান্স", + "modePackCustom": "কাস্টম", + "browseLegacyCatalog": "পুরোনো কম্বো ক্যাটালগ ব্রাউজ করুন", + "agentFeaturesTitle": "এজেন্ট ফিচারসমূহ", + "agentFeaturesDescription": "এই কম্বো ব্যবহারকারী এজেন্টগুলোর জন্য উন্নত ফিচার সক্রিয় করুন", "responseValidationTitle": "রেসপন্স ভ্যালিডেশন", "responseValidationHelp": "যখন একটি 200 OK বডি এই চেকগুলোতে (অ্যাসিস্ট্যান্ট কন্টেন্ট) ব্যর্থ হয় তখন পরবর্তী টার্গেটে ফেইল ওভার করুন।", "responseValidationForbidden": "নিষিদ্ধ সাবস্ট্রিং (প্রতি লাইনে একটি)", @@ -3753,13 +3753,13 @@ "responseValidationMinLength": "সর্বনিম্ন কন্টেন্ট দৈর্ঘ্য (অক্ষর)", "responseValidationJsonPaths": "JSON-path চেকসমূহ", "responseValidationAddCheck": "+ চেক যোগ করুন", - "agentFeaturesSystemMessageOverride": "Override system message", - "agentFeaturesSystemMessagePlaceholder": "You are an expert assistant...", - "agentFeaturesSystemMessageHint": "System message override for agents", + "agentFeaturesSystemMessageOverride": "সিস্টেম মেসেজ ওভাররাইড করুন", + "agentFeaturesSystemMessagePlaceholder": "আপনি একজন বিশেষজ্ঞ সহকারী...", + "agentFeaturesSystemMessageHint": "এজেন্টদের জন্য সিস্টেম মেসেজ ওভাররাইড", "agentFeaturesToolFilterRegex": "/regex-pattern/", - "agentFeaturesToolFilterHint": "Tool filter regex for agents", - "agentFeaturesContextCacheHint": "Enable in-context cache for agent tools", - "agentFeaturesContextCacheProtection": "Protect cache from agent tool mutations", + "agentFeaturesToolFilterHint": "এজেন্টদের জন্য টুল ফিল্টার regex", + "agentFeaturesContextCacheHint": "এজেন্ট টুলগুলোর জন্য ইন-কনটেক্সট ক্যাশ সক্রিয় করুন", + "agentFeaturesContextCacheProtection": "এজেন্ট টুলের পরিবর্তন থেকে ক্যাশ সুরক্ষিত রাখুন", "agentFeaturesContextLength": "প্রসঙ্গ দৈর্ঘ্য", "agentFeaturesContextLengthPlaceholder": "যেমন 128000", "agentFeaturesContextLengthHint": "/v1/মডেলে এই কম্বোর জন্য প্রসঙ্গ উইন্ডো সংজ্ঞায়িত করে।", @@ -3788,40 +3788,40 @@ "duplicateAutoComboTitle": "{name} থেকে একটি স্ট্যাটিক কম্বো তৈরি করুন" }, "costs": { - "title": "Costs", - "pageDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "overview": "Overview", - "budget": "Budget", - "totalCost": "Total Cost", - "breakdown": "Cost Breakdown", - "noData": "No cost data", - "byModel": "By Model", - "byProvider": "By Provider", - "range7d": "7 Days", - "range30d": "30 Days", - "range90d": "90 Days", - "range180d": "180 Days", - "range365d": "365 Days", - "rangeAll": "All Time", - "spend30d": "Spend 30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", - "overviewTitle": "Cost Overview", - "spend7d": "Spend 7D", - "avgCostPerRequest": "Avg Cost / Request", - "noCostDataDescription": "Start making requests to see cost data appear here. Costs are tracked automatically for all providers.", - "spendToday": "Spend Today", - "overviewLoadFailed": "Failed to load cost overview", - "overviewDescription": "Real-time spending breakdown across all connected providers and models", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", - "noCostDataTitle": "No cost data yet", - "topModels": "Top Models", - "requestsInWindow": "Requests in Window", + "title": "খরচ", + "pageDescription": "সব প্রদানকারীর ক্ষেত্রে ব্যয় ট্র্যাক করুন, প্রবণতা বিশ্লেষণ করুন এবং আপনার AI বাজেট পরিচালনা করুন", + "overview": "সারসংক্ষেপ", + "budget": "বাজেট", + "totalCost": "মোট খরচ", + "breakdown": "খরচের বিশ্লেষণ", + "noData": "খরচের কোনো ডেটা নেই", + "byModel": "মডেল অনুযায়ী", + "byProvider": "প্রদানকারী অনুযায়ী", + "range7d": "৭ দিন", + "range30d": "৩০ দিন", + "range90d": "৯০ দিন", + "range180d": "১৮০ দিন", + "range365d": "৩৬৫ দিন", + "rangeAll": "সর্বকালীন", + "spend30d": "গত ৩০ দিনের ব্যয়", + "activeModels": "সক্রিয় মডেল", + "flatRateEstimateNotice": "ফ্ল্যাট-রেট সাবস্ক্রিপশনের জন্য টোকেন-মূল্যের আনুমানিক হিসাব অন্তর্ভুক্ত; এটি বিল করা খরচ নয়।", + "flatRateEstimateForecast": "প্রক্ষেপণে ফ্ল্যাট-রেটের আনুমানিক হিসাব অন্তর্ভুক্ত রয়েছে।", + "selectedWindow": "নির্বাচিত সময়সীমা", + "activeProviders": "সক্রিয় প্রদানকারী", + "overviewTitle": "খরচের সারসংক্ষেপ", + "spend7d": "গত ৭ দিনের ব্যয়", + "avgCostPerRequest": "প্রতি অনুরোধের গড় খরচ", + "noCostDataDescription": "খরচের ডেটা এখানে দেখতে অনুরোধ করা শুরু করুন। সব প্রদানকারীর খরচ স্বয়ংক্রিয়ভাবে ট্র্যাক করা হয়।", + "spendToday": "আজকের ব্যয়", + "overviewLoadFailed": "খরচের সারসংক্ষেপ লোড করা যায়নি", + "overviewDescription": "সংযুক্ত সব প্রদানকারী ও মডেলের রিয়েল-টাইম ব্যয়ের বিবরণ", + "providerShare": "প্রদানকারীর অংশ", + "topProviders": "শীর্ষ প্রদানকারীরা", + "costTrend": "খরচের প্রবণতা", + "noCostDataTitle": "এখনও খরচের কোনো ডেটা নেই", + "topModels": "শীর্ষ মডেলগুলো", + "requestsInWindow": "সময়সীমার মধ্যে অনুরোধ", "tokenUsage": "টোকেন ব্যবহার", "totalTokens": "মোট টোকেন", "inputTokens": "ইনপুট টোকেন", @@ -3881,139 +3881,139 @@ "showingTopCostRows": "{total}টি মিল থাকা সারির মধ্যে {shown}টি দেখানো হচ্ছে (শীর্ষ ৫০)।" }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", - "available": "Available Endpoints", + "title": "API এন্ডপয়েন্ট", + "subtitle": "বেশিরভাগ SDK ও টুলের সঙ্গে OpenAI-সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট ব্যবহার করুন।", + "testEndpoint": "এন্ডপয়েন্ট পরীক্ষা করুন →", + "advancedProtocols": "উন্নত প্রোটোকল", + "available": "উপলভ্য এন্ডপয়েন্টসমূহ", "cloudProxy": "Cloud Proxy", - "disableConfirm": "Are you sure you want to disable cloud proxy?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", - "registeredKeys": "Registered Keys", + "disableConfirm": "আপনি কি নিশ্চিত যে ক্লাউড প্রক্সি নিষ্ক্রিয় করতে চান?", + "baseUrl": "বেস URL", + "apiKeyLabel": "API কী", + "registeredKeys": "নিবন্ধিত কীসমূহ", "chatCompletions": "Chat Completions", - "responses": "Responses", - "listModels": "List Models", - "usingCloudProxy": "Using Cloud Proxy", - "usingLocalServer": "Using Local Server", - "machineId": "Machine ID: {id}...", - "disableCloud": "Disable Cloud", - "enableCloud": "Enable Cloud", - "modelsAcrossEndpoints": "{models} models across {endpoints} endpoints", - "loadingModels": "Loading available models...", - "chatDesc": "Streaming & non-streaming chat with all providers", - "embeddings": "Embeddings", - "embeddingsDesc": "Text embeddings for search & RAG pipelines", - "imageGeneration": "Image Generation", - "imageDesc": "Generate images from text prompts", + "responses": "রেসপন্স", + "listModels": "মডেলের তালিকা", + "usingCloudProxy": "ক্লাউড প্রক্সি ব্যবহার করা হচ্ছে", + "usingLocalServer": "লোকাল সার্ভার ব্যবহার করা হচ্ছে", + "machineId": "মেশিন ID: {id}...", + "disableCloud": "ক্লাউড নিষ্ক্রিয় করুন", + "enableCloud": "ক্লাউড সক্রিয় করুন", + "modelsAcrossEndpoints": "{endpoints}টি এন্ডপয়েন্টজুড়ে {models}টি মডেল", + "loadingModels": "উপলভ্য মডেলগুলো লোড হচ্ছে...", + "chatDesc": "সব প্রদানকারীর সঙ্গে স্ট্রিমিং ও নন-স্ট্রিমিং চ্যাট", + "embeddings": "এম্বেডিং", + "embeddingsDesc": "সার্চ ও RAG পাইপলাইনের জন্য টেক্সট এম্বেডিং", + "imageGeneration": "ইমেজ জেনারেশন", + "imageDesc": "টেক্সট প্রম্পট থেকে ছবি তৈরি করুন", "rerank": "Rerank", - "rerankDesc": "Rerank documents by relevance to a query", - "audioTranscription": "Audio Transcription", - "audioTranscriptionDesc": "Transcribe audio files to text (Whisper)", - "textToSpeech": "Text to Speech", - "textToSpeechDesc": "Convert text to natural-sounding speech", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", - "moderations": "Moderations", - "moderationsDesc": "Content moderation and safety classification", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", - "categoryCore": "Core APIs", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", - "categoryUtility": "Utility & Management", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", - "enableCloudTitle": "Enable Cloud Proxy", - "whatYouGet": "What you will get", - "cloudBenefitAccess": "Access your API from anywhere in the world", - "cloudBenefitShare": "Share endpoint with your team easily", - "cloudBenefitPorts": "No need to open ports or configure firewall", - "cloudBenefitEdge": "Fast global edge network", - "cloudSessionNote": "Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted.", - "cloudUnstableNote": "Cloud is currently unstable with Claude Code OAuth in some cases.", - "cloudConnected": "Cloud Proxy connected!", - "connectingToCloud": "Connecting to cloud...", - "verifyingConnection": "Verifying connection...", - "connecting": "Connecting...", - "verifying": "Verifying...", - "connected": "Connected!", - "disableCloudTitle": "Disable Cloud Proxy", - "disableWarning": "All auth sessions will be deleted from cloud.", - "syncingData": "Syncing latest data...", - "disablingCloud": "Disabling cloud...", - "syncing": "Syncing...", - "disabling": "Disabling...", - "cloudConnectedVerified": "Cloud Proxy connected and verified!", - "connectedVerificationPending": "Connected — verification pending", - "connectedVerificationPendingWithError": "Connected — verification pending: {error}", - "cloudDisabledSuccess": "Cloud disabled successfully", - "syncedSuccess": "Synced successfully", - "failedDisable": "Failed to disable cloud", - "failedEnable": "Failed to enable cloud", - "cloudRequestTimeout": "Cloud request timeout", - "cloudRequestFailed": "Cloud request failed", - "cloudWorkerUnreachable": "Could not reach cloud worker. Make sure the cloud service is running (npm run dev in /cloud).", - "connectionFailed": "Connection failed", - "syncFailed": "Failed to sync cloud data", + "rerankDesc": "কোয়েরির সঙ্গে প্রাসঙ্গিকতা অনুযায়ী ডকুমেন্ট পুনরায় র্যাঙ্ক করুন", + "audioTranscription": "অডিও ট্রান্সক্রিপশন", + "audioTranscriptionDesc": "অডিও ফাইলকে টেক্সটে ট্রান্সক্রাইব করুন (Whisper)", + "textToSpeech": "টেক্সট টু স্পিচ", + "textToSpeechDesc": "টেক্সটকে স্বাভাবিক-শ্রুতির কথনে রূপান্তর করুন", + "musicGeneration": "সঙ্গীত তৈরি", + "musicDesc": "ComfyUI-এর মাধ্যমে সঙ্গীত ও অডিও ট্র্যাক তৈরি করুন (Stable Audio, MusicGen)", + "moderations": "মডারেশন", + "moderationsDesc": "কনটেন্ট মডারেশন ও নিরাপত্তা শ্রেণিবিন্যাস", + "responsesDesc": "Codex ও উন্নত এজেন্টিক ওয়ার্কফ্লোর জন্য OpenAI Responses API", + "listModelsDesc": "সংযুক্ত সব প্রোভাইডারে উপলভ্য সমস্ত মডেলের তালিকা দেখুন", + "settingsApiDesc": "API-এর মাধ্যমে OmniRoute-এর কনফিগারেশন পড়ুন ও পরিবর্তন করুন", + "settingsApi": "সেটিংস API", + "categoryCore": "মূল API-সমূহ", + "categoryMedia": "মিডিয়া ও মাল্টি-মোডাল", + "categorySearch": "অনুসন্ধান ও আবিষ্কার", + "categoryUtility": "ইউটিলিটি ও ব্যবস্থাপনা", + "webSearch": "ওয়েব অনুসন্ধান", + "webSearchDesc": "স্বয়ংক্রিয় ফেইলওভার ও ক্যাশিংসহ একাধিক প্রোভাইডারজুড়ে সমন্বিত ওয়েব অনুসন্ধান", + "searchProvider": "অনুসন্ধান প্রোভাইডার", + "searchProviderDesc": "এই প্রোভাইডারটি POST /v1/search-এর মাধ্যমে ওয়েব অনুসন্ধানের জন্য ব্যবহৃত হয়। কোনো মডেল কনফিগারেশনের প্রয়োজন নেই — একটি API কী সংযুক্ত করলেই অনুসন্ধান প্রোভাইডারগুলো ব্যবহারের জন্য প্রস্তুত।", + "enableCloudTitle": "Cloud Proxy সক্রিয় করুন", + "whatYouGet": "আপনি যা পাবেন", + "cloudBenefitAccess": "বিশ্বের যেকোনো স্থান থেকে আপনার API অ্যাক্সেস করুন", + "cloudBenefitShare": "সহজেই আপনার দলের সঙ্গে এন্ডপয়েন্ট শেয়ার করুন", + "cloudBenefitPorts": "পোর্ট খোলা বা ফায়ারওয়াল কনফিগার করার প্রয়োজন নেই", + "cloudBenefitEdge": "দ্রুত বৈশ্বিক এজ নেটওয়ার্ক", + "cloudSessionNote": "Cloud আপনার অথ সেশন ১ দিন ধরে রাখবে। ব্যবহার না করা হলে এটি স্বয়ংক্রিয়ভাবে মুছে যাবে।", + "cloudUnstableNote": "কিছু ক্ষেত্রে Claude Code OAuth-এর সঙ্গে Cloud বর্তমানে অস্থিতিশীল।", + "cloudConnected": "Cloud Proxy সংযুক্ত হয়েছে!", + "connectingToCloud": "Cloud-এর সঙ্গে সংযোগ করা হচ্ছে...", + "verifyingConnection": "সংযোগ যাচাই করা হচ্ছে...", + "connecting": "সংযোগ করা হচ্ছে...", + "verifying": "যাচাই করা হচ্ছে...", + "connected": "সংযুক্ত হয়েছে!", + "disableCloudTitle": "Cloud Proxy নিষ্ক্রিয় করুন", + "disableWarning": "Cloud থেকে সব অথ সেশন মুছে ফেলা হবে।", + "syncingData": "সর্বশেষ ডেটা সিঙ্ক করা হচ্ছে...", + "disablingCloud": "Cloud নিষ্ক্রিয় করা হচ্ছে...", + "syncing": "সিঙ্ক করা হচ্ছে...", + "disabling": "নিষ্ক্রিয় করা হচ্ছে...", + "cloudConnectedVerified": "Cloud Proxy সংযুক্ত ও যাচাইকৃত হয়েছে!", + "connectedVerificationPending": "সংযুক্ত হয়েছে — যাচাইকরণ অপেক্ষমাণ", + "connectedVerificationPendingWithError": "সংযুক্ত হয়েছে — যাচাইকরণ অপেক্ষমাণ: {error}", + "cloudDisabledSuccess": "Cloud সফলভাবে নিষ্ক্রিয় করা হয়েছে", + "syncedSuccess": "সফলভাবে সিঙ্ক হয়েছে", + "failedDisable": "ক্লাউড নিষ্ক্রিয় করতে ব্যর্থ হয়েছে", + "failedEnable": "ক্লাউড সক্রিয় করতে ব্যর্থ হয়েছে", + "cloudRequestTimeout": "ক্লাউড অনুরোধের সময়সীমা শেষ হয়েছে", + "cloudRequestFailed": "ক্লাউড অনুরোধ ব্যর্থ হয়েছে", + "cloudWorkerUnreachable": "ক্লাউড ওয়ার্কারের সঙ্গে সংযোগ স্থাপন করা যায়নি। নিশ্চিত করুন যে ক্লাউড পরিষেবাটি চলছে (npm run dev in /cloud)।", + "connectionFailed": "সংযোগ ব্যর্থ হয়েছে", + "syncFailed": "ক্লাউড ডেটা সিঙ্ক করতে ব্যর্থ হয়েছে", "cloudflaredTitle": "Cloudflare Quick Tunnel", - "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredDescription": "এই এন্ডপয়েন্টের জন্য একটি Cloudflare Quick Tunnel তৈরি করুন।", + "cloudflaredUrlNotice": "একটি অস্থায়ী Cloudflare Quick Tunnel তৈরি করে। প্রতিবার পুনরায় চালু করার পর URL পরিবর্তিত হয়।", + "cloudflaredEnable": "টানেল সক্রিয় করুন", + "cloudflaredInstallAndEnable": "ইনস্টল ও সক্রিয় করুন", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "চলছে", + "cloudflaredStarting": "শুরু হচ্ছে", + "cloudflaredStoppedState": "বন্ধ আছে", + "cloudflaredNotInstalled": "ইনস্টল করা নেই", + "cloudflaredUnsupported": "সমর্থিত নয়", + "cloudflaredError": "ত্রুটি", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", - "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after every restart.", - "cloudflaredUnsupportedNote": "This platform is not supported for managed installs. Install cloudflared manually or point CLOUDFLARED_BIN to an existing binary.", + "cloudflaredTemporaryNote": "Quick Tunnel URL-গুলো অস্থায়ী এবং প্রতিবার পুনরায় চালু করার পর পরিবর্তিত হবে।", + "cloudflaredUnsupportedNote": "এই প্ল্যাটফর্মে পরিচালিত ইনস্টল সমর্থিত নয়। cloudflared ম্যানুয়ালি ইনস্টল করুন অথবা CLOUDFLARED_BIN-কে বিদ্যমান বাইনারির দিকে নির্দেশ করুন।", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", - "providerModelsTitle": "{provider} — Models", - "noModelsForProvider": "No models available for this provider.", + "cloudflaredLastError": "সর্বশেষ ত্রুটি: {error}", + "providerModelsTitle": "{provider} — মডেলসমূহ", + "noModelsForProvider": "এই প্রোভাইডারের জন্য কোনো মডেল উপলভ্য নেই।", "chat": "Chat", - "embedding": "Embedding", - "image": "Image", - "custom": "custom", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "embedding": "এম্বেডিং", + "image": "ছবি", + "custom": "কাস্টম", + "modelsCount": "{count, plural, one {#টি মডেল} other {#টি মডেল}}", + "sectionTitle": "ইন্টিগ্রেশন সারফেস", + "sectionDescription": "OpenAI-সামঞ্জস্যপূর্ণ API এবং পরিচালনাগত প্রোটোকল এন্ডপয়েন্ট", "tabApis": "এপিআইগুলি", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "প্রোটোকলসমূহ", + "tabsAria": "এন্ডপয়েন্ট বিভাগসমূহ", + "protocolsTitle": "প্রোটোকলসমূহ", + "protocolsDescription": "MCP এবং A2A হলো নিবেদিত পর্যবেক্ষণযোগ্যতা ও নিয়ন্ত্রণসহ প্রথম-শ্রেণির এন্ডপয়েন্ট।", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "stdio-এর মাধ্যমে Model Context Protocol", + "a2aCardTitle": "A2A সার্ভার", + "a2aCardDescription": "Agent2Agent JSON-RPC এন্ডপয়েন্ট", + "protocolToolsLabel": "টুলসমূহ", + "protocolTasksLabel": "টাস্কসমূহ", + "protocolActiveStreamsLabel": "সক্রিয় স্ট্রিমসমূহ", + "protocolLastActivity": "সর্বশেষ কার্যকলাপ", + "quickStart": "দ্রুত শুরু", + "openMcpDashboard": "MCP ব্যবস্থাপনা খুলুন", + "openA2aDashboard": "A2A ব্যবস্থাপনা খুলুন", + "mcpQuickStartTitle": "MCP দ্রুত শুরু", + "mcpQuickStartStep1": "`omniroute --mcp` ব্যবহার করে MCP সার্ভার চালান।", + "mcpQuickStartStep2": "stdio ট্রান্সপোর্টের মাধ্যমে সংযোগ করতে আপনার MCP ক্লায়েন্ট কনফিগার করুন।", + "mcpQuickStartStep3": "`omniroute_get_health` এবং `omniroute_list_combos`-এর মতো টুল ব্যবহার করুন।", + "a2aQuickStartTitle": "A2A দ্রুত শুরু", + "a2aQuickStartStep1": "`/.well-known/agent.json`-এ এজেন্ট কার্ডটি খুঁজে নিন।", + "a2aQuickStartStep2": "`message/send` অথবা `message/stream` ব্যবহার করে `POST /a2a`-তে JSON-RPC অনুরোধ পাঠান।", + "a2aQuickStartStep3": "`tasks/get` এবং `tasks/cancel` ব্যবহার করে টাস্ক ট্র্যাক ও নিয়ন্ত্রণ করুন।", + "completionsLegacy": "কমপ্লিশন (লিগ্যাসি)", + "completionsLegacyDesc": "লিগ্যাসি OpenAI টেক্সট কমপ্লিশন — prompt স্ট্রিং এবং messages অ্যারে উভয় ফরম্যাটই গ্রহণ করে", "messagesApi": "বার্তা", "messagesApiDesc": "Claude-সামঞ্জস্যপূর্ণ প্রদানকারীদের জন্য নেটিভ নৃতাত্ত্বিক বার্তা API বিন্যাস", "imageEdits": "ছবি সম্পাদনা", @@ -4022,41 +4022,41 @@ "batchApiDesc": "অ্যাসিঙ্ক্রোনাসভাবে অনুরোধের বড় ব্যাচ প্রক্রিয়া করুন (ওপেনএআই-সামঞ্জস্যপূর্ণ)", "filesApi": "ফাইল API", "filesApiDesc": "ব্যাচ প্রক্রিয়াকরণের জন্য ফাইলগুলি আপলোড এবং পরিচালনা করুন", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "ভিডিও তৈরি", + "videoDesc": "ComfyUI এবং Stable Video Diffusion-এর মতো AI মডেল ব্যবহার করে ভিডিও তৈরি করুন।", + "tailscaleRequestFailed": "Tailscale-এর স্থিতি লোড করা যায়নি", + "tailscaleEnableFailed": "Tailscale Funnel সক্রিয় করা যায়নি", + "tailscaleWaitingForLogin": "খোলা ব্রাউজার ট্যাবে Tailscale লগইন সম্পন্ন করুন। OmniRoute স্বয়ংক্রিয়ভাবে আবার চেষ্টা করবে।", + "tailscaleLoginTimedOut": "Tailscale লগইনের অপেক্ষায় সময়সীমা শেষ হয়েছে", + "tailscaleWaitingForFunnel": "খোলা ব্রাউজার ট্যাবে এই ডিভাইসের জন্য Funnel সক্রিয় করুন। OmniRoute পর্যায়ক্রমে পরীক্ষা করতে থাকবে।", + "tailscaleFunnelTimedOut": "Tailscale Funnel সক্রিয় হওয়ার অপেক্ষায় সময়সীমা শেষ হয়েছে", + "tailscaleStarted": "Tailscale Funnel সক্রিয় করা হয়েছে", + "tailscaleDisableFailed": "Tailscale Funnel নিষ্ক্রিয় করা যায়নি", + "tailscaleStopped": "Tailscale Funnel নিষ্ক্রিয় করা হয়েছে", + "tailscaleInstallFailed": "Tailscale ইনস্টল করা যায়নি", + "tailscaleInstallProgress": "কাজ চলছে...", + "tailscaleInstalled": "Tailscale সফলভাবে ইনস্টল করা হয়েছে", + "tailscaleRunning": "চলছে", + "tailscaleNeedsLogin": "লগইন প্রয়োজন", + "tailscaleStoppedState": "বন্ধ", + "tailscaleNotInstalled": "ইনস্টল করা নেই", + "tailscaleUnsupported": "সমর্থিত নয়", + "tailscaleError": "ত্রুটি", + "tailscaleDisable": "Funnel বন্ধ করুন", + "tailscaleInstallAndEnable": "ইনস্টল ও সক্রিয় করুন", + "tailscaleLoginAndEnable": "লগইন ও সক্রিয় করুন", + "tailscaleEnable": "Funnel সক্রিয় করুন", + "tailscaleUrlNotice": "আপনার Tailscale .ts.net ঠিকানা ব্যবহার করে। প্রথমবার ব্যবহারের সময় লগইন ও Funnel অনুমোদনের প্রয়োজন হতে পারে।", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", - "tailscaleSudoLabel": "Sudo Password (required on macOS/Linux)", + "tailscaleNeedsLoginHint": "Tailscale দিয়ে এই মেশিনটি প্রমাণীকরণ করুন, তারপর Funnel সক্রিয় করুন।", + "tailscaleBinaryPath": "বাইনারি: {path}", + "tailscaleLastError": "সর্বশেষ ত্রুটি: {error}", + "tailscaleInstallTitle": "Tailscale ইনস্টল করুন", + "tailscaleInstallIntro": "এই মেশিনে Tailscale ইনস্টল করে এবং Funnel সক্রিয় করার জন্য OmniRoute প্রস্তুত করে।", + "tailscaleInstallPasswordHint": "macOS এবং Linux-এ প্যাকেজ ইনস্টল ও ডেমন চালু করতে sudo প্রয়োজন হতে পারে।", + "tailscaleSudoPlaceholder": "ঐচ্ছিক sudo পাসওয়ার্ড", + "tailscaleInstalling": "ইনস্টল করা হচ্ছে", + "tailscaleSudoLabel": "Sudo পাসওয়ার্ড (macOS/Linux-এ আবশ্যক)", "ngrokTitle": "ngrok টানেল", "ngrokRunning": "চলমান", "ngrokStarting": "শুরু হচ্ছে", @@ -4108,7 +4108,7 @@ "all": "সব", "more": "আরও +{count}", "showInternalTooltip": "অভ্যন্তরীণ রুটগুলো দেখান বা লুকান (ডিফল্টরূপে লুকানো থাকে)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "বেয়ারার প্রমাণীকরণ", "requestBody": "রিকোয়েস্ট বডি", "close": "বন্ধ করুন", "tryIt": "চেষ্টা করে দেখুন", @@ -4144,9 +4144,9 @@ "tierPublic": "পাবলিক", "hideInternal": "অভ্যন্তরীণ লুকান", "showInternal": "অভ্যন্তরীণ দেখান", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "কাস্টম সিস্টেম প্রম্পট", + "customSystemPromptDescription": "প্রতিটি মডেল অনুরোধে একটি কাস্টম সিস্টেম প্রম্পট যুক্ত করুন", + "customSystemPromptPlaceholder": "যেমন: সবসময় জলদস্যুর ভাষায় উত্তর দিন...", "obsidianEnterToken": "অনুগ্রহ করে একটি Obsidian API টোকেন লিখুন", "obsidianConnectFailed": "সংযোগ করতে ব্যর্থ হয়েছে", "obsidianConnectionFailed": "সংযোগ ব্যর্থ হয়েছে", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "টোকেন কনফিগার করা হয়েছে। Notion টুলগুলি MCP এর মাধ্যমে উপলব্ধ।" }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "এন্ডপয়েন্ট প্রক্সি", + "tabApiEndpoints": "API এন্ডপয়েন্টসমূহ", + "apiEndpointsTitle": "API এন্ডপয়েন্টসমূহ", + "apiEndpointsDescription": "ব্যাকএন্ড API এন্ডপয়েন্ট, যা অন্যান্য অ্যাপ্লিকেশন ও পরিষেবা ব্যবহার করতে পারে। এই বিভাগে ডকুমেন্টেশন ও পরীক্ষার সুবিধাসহ উপলভ্য সব REST API তালিকাভুক্ত থাকবে।", + "comingSoon": "শীঘ্রই আসছে", + "plannedFeatures": "পরিকল্পিত ফিচারসমূহ", + "featureRestApi": "ইন্টার্যাক্টিভ ডকুমেন্টেশনসহ REST API এন্ডপয়েন্ট ক্যাটালগ", + "featureWebhooks": "Webhook কনফিগারেশন ও ইভেন্ট সাবস্ক্রিপশন", + "featureSwagger": "OpenAPI / Swagger স্পেসিফিকেশন স্বয়ংক্রিয়ভাবে তৈরি", + "featureAuth": "প্রতি এন্ডপয়েন্টের জন্য API কী ও OAuth স্কোপ ব্যবস্থাপনা" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP ড্যাশবোর্ড লোড হচ্ছে...", + "activate": "সক্রিয় করুন", + "deactivate": "নিষ্ক্রিয় করুন", + "confirmSwitchCombo": "কম্বো \"{combo}\" {action} করার বিষয়টি নিশ্চিত করবেন?", + "switchComboFailed": "কম্বোর অবস্থা পরিবর্তন করা যায়নি।", + "switchComboSuccess": "কম্বো \"{combo}\" আপডেট করা হয়েছে।", + "confirmApplyProfile": "স্থিতিস্থাপকতা প্রোফাইল \"{profile}\" প্রয়োগ করবেন?", + "applyProfileFailed": "স্থিতিস্থাপকতা প্রোফাইল প্রয়োগ করা যায়নি।", + "applyProfileSuccess": "প্রোফাইল \"{profile}\" প্রয়োগ করা হয়েছে।", + "confirmResetBreakers": "সব সার্কিট ব্রেকার রিসেট করবেন?", + "resetBreakersFailed": "সার্কিট ব্রেকারগুলো রিসেট করা যায়নি।", + "resetBreakersSuccess": "সার্কিট ব্রেকারগুলো রিসেট করা হয়েছে।", + "processStatus": "প্রক্রিয়ার স্থিতি", "online": "Online", "offline": "Offline", "disableLabel": "{label} নিষ্ক্রিয় করুন", @@ -4237,119 +4237,119 @@ "mcpStep2": "stdio ট্রান্সপোর্টের মাধ্যমে সংযোগ করতে আপনার MCP ক্লায়েন্ট কনফিগার করুন।", "mcpStep3": "{code1} এবং {code2}-এর মতো টুলগুলো ইনভোক করুন।", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "সেশনের সচল সময়", + "lastHeartbeat": "সর্বশেষ হার্টবিট", + "activity24h": "কার্যকলাপ (২৪ ঘণ্টা)", + "totalCalls": "মোট কল", + "successRate": "সাফল্যের হার", + "avgLatency": "গড় ল্যাটেন্সি", + "topTools": "শীর্ষ টুলসমূহ", + "noToolCalls24h": "গত ২৪ ঘণ্টায় কোনো টুল কল হয়নি।", + "runtimeDetails": "রানটাইমের বিস্তারিত", + "transport": "ট্রান্সপোর্ট", + "scopesEnforced": "স্কোপ প্রয়োগ করা হয়েছে", + "yes": "হ্যাঁ", + "no": "না", + "lastCall": "সর্বশেষ কল", + "heartbeatPath": "হার্টবিট পাথ", + "operationalControls": "পরিচালনাগত নিয়ন্ত্রণ", + "switchCombo": "কম্বো পরিবর্তন করুন", + "inactive": "নিষ্ক্রিয়", + "active": "সক্রিয়", + "activateCombo": "কম্বো সক্রিয় করুন", + "deactivateCombo": "কম্বো নিষ্ক্রিয় করুন", + "applyResilienceProfile": "রেজিলিয়েন্স প্রোফাইল প্রয়োগ করুন", + "profileAggressive": "আক্রমণাত্মক", + "profileBalanced": "ভারসাম্যপূর্ণ", + "profileConservative": "রক্ষণশীল", + "applyProfile": "প্রোফাইল প্রয়োগ করুন", + "resetCircuitBreakers": "সার্কিট ব্রেকার রিসেট করুন", + "resetCircuitBreakersHelp": "প্রোভাইডারগুলোর বর্তমান ব্রেকার স্টেট এবং ব্যর্থতার কাউন্টার মুছে দেয়।", + "resetAllBreakers": "সব ব্রেকার রিসেট করুন", + "toolsAndScopes": "টুল ও স্কোপ", + "tableTool": "টুল", + "tableScopes": "স্কোপ", + "tablePhase": "পর্যায়", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "অডিট লগ", + "auditSummary": "কল: {total} | পৃষ্ঠা {page} / {totalPages}", + "allTools": "সব টুল", + "allResults": "সব ফলাফল", + "success": "সফল", + "failure": "ব্যর্থ", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "অডিট এন্ট্রি লোড হচ্ছে...", + "noAuditEntriesForFilters": "বর্তমান ফিল্টারগুলোর জন্য কোনো অডিট এন্ট্রি পাওয়া যায়নি।", + "tableTimestamp": "টাইমস্ট্যাম্প", + "tableDuration": "সময়কাল", + "tableResult": "ফলাফল", + "tableApiKey": "API কী", + "failed": "ব্যর্থ", + "previous": "পূর্ববর্তী", + "next": "পরবর্তী", + "apiKeyId": "API কী আইডি", + "offset": "অফসেট", + "limit": "সীমা", + "tool": "টুল" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A ড্যাশবোর্ড লোড হচ্ছে...", + "confirmCancelTask": "টাস্ক {taskId} বাতিল করবেন?", + "cancelTaskFailed": "টাস্ক বাতিল করা যায়নি।", + "cancelTaskSuccess": "টাস্ক {taskId} বাতিল করা হয়েছে।", + "smokeSendFailed": "message/send স্মোক টেস্ট ব্যর্থ হয়েছে।", + "smokeSendSuccessWithTask": "message/send সফল হয়েছে (টাস্ক {taskId})।", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream স্মোক টেস্ট ব্যর্থ হয়েছে।", + "smokeStreamSuccessWithTask": "message/stream সফল হয়েছে (টাস্ক {taskId}{stateSuffix})।", + "smokeStreamNoTaskId": "টাস্ক আইডি ছাড়াই message/stream শেষ হয়েছে।", + "health": "স্বাস্থ্য", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "মোট টাস্ক", + "activeStreams": "সক্রিয় স্ট্রিম", + "lastTask": "সর্বশেষ টাস্ক", + "taskStateOverview": "টাস্কের অবস্থার সারসংক্ষেপ", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "জমা দেওয়া হয়েছে", + "working": "কাজ চলছে", + "completed": "সম্পন্ন", + "failed": "ব্যর্থ", + "cancelled": "বাতিল" }, - "agentCard": "Agent card", + "agentCard": "এজেন্ট কার্ড", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "সংস্করণ", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "সক্ষমতাসমূহ", + "agentCardNotAvailable": "এজেন্ট কার্ড উপলভ্য নয়।", + "quickValidation": "দ্রুত যাচাইকরণ", + "quickValidationDescription": "সক্রিয় `/a2a` এন্ডপয়েন্টের মাধ্যমে স্মোক কল চালায়।", + "runMessageSend": "message/send চালান", + "runMessageStream": "message/stream চালান", + "taskManagement": "টাস্ক ব্যবস্থাপনা", + "taskSummary": "{total}টি টাস্ক | {totalPages}টির মধ্যে পৃষ্ঠা {page}", + "allStates": "সব", + "allSkills": "সব দক্ষতা", + "loadingTasks": "কাজগুলো লোড হচ্ছে...", + "noTasksForFilters": "বর্তমান ফিল্টারের জন্য কোনো কাজ পাওয়া যায়নি।", + "tableTask": "কাজ", + "tableSkill": "দক্ষতা", + "tableState": "অবস্থা", + "tableUpdated": "আপডেট করা হয়েছে", + "tableActions": "অ্যাকশন", + "view": "দেখুন", + "cancel": "বাতিল করুন", + "previous": "পূর্ববর্তী", + "next": "পরবর্তী", + "taskDetail": "কাজের বিস্তারিত", + "close": "বন্ধ করুন", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "ইভেন্ট", + "artifacts": "আর্টিফ্যাক্ট", + "tablePhase": "টেবিল পর্যায়", + "offset": "অফসেট", + "limit": "সীমা", + "skill": "দক্ষতা", "rpcEndpoint": "পোস্ট /a2a", "rpcMethodSend": "বার্তা/পাঠান", "rpcMethodStream": "বার্তা/প্রবাহ", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "অ্যাকশন", + "addMemory": "মেমরি যোগ করুন", + "allTypes": "সব ধরন", "cancel": "বাতিল করুন", "checkHealth": "স্বাস্থ্য পরীক্ষা করুন", "checkingHealth": "পরীক্ষা করা হচ্ছে...", @@ -4382,13 +4382,13 @@ "howWorksToggle": "এটি যেভাবে কাজ করে", "howWorksContent": "1. স্বয়ংক্রিয় নিষ্কাশন: প্রতিটি প্রতিক্রিয়ার শেষে, তথ্য এবং পর্বগুলো স্বয়ংক্রিয়ভাবে সনাক্ত এবং সংরক্ষণ করা হয়।\n2. পুনরুদ্ধার: প্রতিটি প্রতিক্রিয়ার আগে, FTS5 (সঠিক), ভেক্টর (শব্দার্থিক), বা হাইব্রিড RRF-এর মাধ্যমে সবচেয়ে প্রাসঙ্গিক মেমরিগুলো অনুসন্ধান করা হয়।\n3. ইনজেকশন: প্রতিক্রিয়ার গুণমান উন্নত করতে প্রাসঙ্গিক মেমরিগুলো অ্যাসিস্ট্যান্টের কনটেক্সটে ইনজেক্ট করা হয়।\n4. ব্যবস্থাপনা: পুরোনো মেমরিগুলো দেখতে, সম্পাদনা করতে, রপ্তানি করতে এবং সংকুচিত করতে এই পৃষ্ঠাটি ব্যবহার করুন।" }, - "content": "Content", + "content": "বিষয়বস্তু", "contentPlaceholder": "মনে রাখতে মান বা JSON সামগ্রী", - "created": "Created", - "delete": "Delete", + "created": "তৈরি হয়েছে", + "delete": "মুছুন", "deleteConfirmDesc": "এই কাজটি পূর্বাবস্থায় ফেরানো যাবে না। মেমরি স্থায়ীভাবে মুছে ফেলা হবে।", "deleteConfirmTitle": "মেমরি মুছে ফেলবেন?", - "description": "View and manage stored memory entries", + "description": "সংরক্ষিত মেমরি এন্ট্রি দেখুন ও পরিচালনা করুন", "editMemory": "মেমরি সম্পাদনা করুন", "editModal": { "title": "মেমরি সম্পাদনা করুন", @@ -4416,7 +4416,7 @@ "customEndpointSaveFailed": "কাস্টম এম্বেডিং এন্ডপয়েন্ট সংরক্ষণ করা যায়নি।", "staticEnabledLabel": "Static Potion সক্ষম করুন", "staticEnabledDesc": "স্থানীয়ভাবে potion-base-8M মডেল ডাউনলোড এবং ব্যবহার করুন", - "transformersEnabledLabel": "Enable Transformers.js", + "transformersEnabledLabel": "Transformers.js সক্রিয় করুন", "transformersEnabledDesc": "লোকাল MiniLM-এর জন্য অপ্ট-ইন করুন (~400MB RAM, ~3s কোল্ড স্টার্ট)", "transformersWarning": "প্রথম শব্দার্থিক কোয়েরিতে ~400MB RAM এবং ~3s কোল্ড স্টার্ট প্রয়োজন।" }, @@ -4444,20 +4444,20 @@ "configureCta": "কনফিগার করুন", "vectorStoreInstallHint": "ভেক্টর অনুসন্ধান সক্ষম করতে: npm install sqlite-vec (নেটিভ Node.js প্রয়োজন, WASM নয়) রান করুন, তারপর পুনরায় চালু করুন।" }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "ঘটনাভিত্তিক", + "export": "রপ্তানি করুন", + "factual": "তথ্যভিত্তিক", "healthUnknown": "স্বাস্থ্য অজানা", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "হিট রেট", + "import": "আমদানি করুন", "importError": "ফাইল ইম্পোর্ট করতে ব্যর্থ হয়েছে", "importResult": "{imported}টি ইম্পোর্ট করা হয়েছে, {skipped}টি এড়িয়ে যাওয়া হয়েছে", - "key": "Key", + "key": "কী", "keyPlaceholder": "যেমন user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "মেমরি", "next": "পরবর্তী", - "noMemories": "No memories found", + "noMemories": "কোনো স্মৃতি পাওয়া যায়নি", "pageInfo": "পৃষ্ঠা {page} এর {totalPages} ({total} মোট)", "pipelineError": "পাইপলাইনের ত্রুটি", "pipelineOk": "পাইপলাইন ঠিক আছে ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "প্রিভিউ লোড করতে ব্যর্থ হয়েছে" }, "previous": "আগের", - "procedural": "Procedural", + "procedural": "প্রক্রিয়াগত", "qdrant": { "title": "Qdrant (ভেক্টর স্টোর টিয়ার ২)", "description": "স্কেলযোগ্য সিম্যান্টিক অনুসন্ধানের জন্য ঐচ্ছিক Qdrant ইন্টিগ্রেশন", @@ -4534,8 +4534,8 @@ }, "save": "সংরক্ষণ করুন", "saving": "সংরক্ষণ করা হচ্ছে...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "স্মৃতি খুঁজুন...", + "semantic": "অর্থগত", "summarize": { "title": "পুরোনো মেমরিগুলো কম্প্যাক্ট করুন", "noCandidates": "কম্প্যাকশনের জন্য উপযুক্ত কোনো মেমরি নেই (শর্ত: >30 দিন পুরোনো)।", @@ -4547,8 +4547,8 @@ "playground": "প্লেগ্রাউন্ড", "engine": "ইঞ্জিন" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "স্মৃতি ব্যবস্থাপনা", + "tokensUsed": "ব্যবহৃত টোকেন", "tooltip": { "totalEntries": "এই API key-এর জন্য সংরক্ষিত মোট মেমরি", "tokensUsed": "সক্রিয় মেমরি দ্বারা ব্যবহৃত আনুমানিক মোট টোকেন", @@ -4558,15 +4558,15 @@ "procedural": "সহকারীর অনুসরণ করা উচিত এমন পদ্ধতি, ওয়ার্কফ্লো এবং নির্দেশাবলী", "semantic": "ধারণা, পছন্দ এবং ডোমেন জ্ঞান" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "মোট এন্ট্রি", + "type": "ধরন", "memoryEnabled": "মেমরি সক্রিয়" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "দক্ষতাসমূহ", + "description": "AI দক্ষতা পরিচালনা ও পর্যবেক্ষণ করুন", + "skillsTab": "দক্ষতাসমূহ", + "executionsTab": "এক্সিকিউশনসমূহ", "selectSkillToInspect": "পরিদর্শন করতে বাম দিক থেকে একটি স্কিল নির্বাচন করুন।", "schemaTab": "স্কিমা", "handlerTab": "হ্যান্ডলার", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "টেস্ট চালান (প্লেসহোল্ডার)", "setModeAria": "মোড {mode} সেট করুন", "uninstallSkill": "স্কিল আনইনস্টল করুন", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "স্যান্ডবক্স", + "loading": "দক্ষতাসমূহ লোড হচ্ছে...", + "noSkills": "কোনো দক্ষতা পাওয়া যায়নি", + "noExecutions": "কোনো এক্সিকিউশন পাওয়া যায়নি", + "enabled": "সক্রিয়", + "disabled": "নিষ্ক্রিয়", "delete": "মুছুন", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "সংস্করণ", + "tableDescription": "বিবরণ", + "skill": "দক্ষতা", + "status": "অবস্থা", + "duration": "সময়কাল", + "time": "সময়", + "sandboxConfig": "স্যান্ডবক্স কনফিগারেশন", + "cpuLimit": "CPU সীমা", + "cpuLimitDesc": "প্রতি দক্ষতার সর্বোচ্চ এক্সিকিউশন সময়", + "memoryLimit": "মেমরি সীমা", + "memoryLimitDesc": "সর্বোচ্চ মেমরি বরাদ্দ", + "timeout": "টাইমআউট", + "timeoutDesc": "প্রতিক্রিয়ার জন্য সর্বোচ্চ অপেক্ষার সময়", + "networkAccess": "নেটওয়ার্ক অ্যাক্সেস", + "networkAccessDesc": "বহির্গামী নেটওয়ার্ক অনুরোধের অনুমতি দিন", + "mode": "মোড", "q": "Q", "filterSkillsPlaceholder": "নাম, বিবরণ, বা ট্যাগ দ্বারা ফিল্টার দক্ষতা", "allModes": "সব মোড", @@ -4642,90 +4642,90 @@ "installSkill": "দক্ষতা ইনস্টল করুন" }, "health": { - "title": "System Health", - "description": "Real-time monitoring of your OmniRoute instance", - "healthy": "Healthy", - "degraded": "Degraded", - "down": "Down", - "uptime": "Uptime", - "memory": "Memory", - "memoryRss": "Memory (RSS)", - "heap": "Heap", + "title": "সিস্টেমের স্বাস্থ্য", + "description": "আপনার OmniRoute ইনস্ট্যান্সের রিয়েল-টাইম পর্যবেক্ষণ", + "healthy": "সুস্থ", + "degraded": "অবনত", + "down": "অচল", + "uptime": "আপটাইম", + "memory": "মেমরি", + "memoryRss": "মেমরি (RSS)", + "heap": "হিপ", "cpu": "CPU", - "database": "Database", - "version": "Version", - "lastCheck": "Last Check", - "providerHealth": "Provider Health", - "systemMetrics": "System Metrics", - "tokenHealth": "Token Health", - "refreshAll": "Refresh All", - "checkNow": "Check Now", - "loadingHealth": "Loading health data...", - "failedToLoad": "Failed to load health data: {error}", - "retry": "Retry", - "allOperational": "All systems operational", - "issuesDetected": "System issues detected", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", - "updatedAt": "Updated {time}", - "latency": "Latency", + "database": "ডেটাবেস", + "version": "সংস্করণ", + "lastCheck": "সর্বশেষ পরীক্ষা", + "providerHealth": "প্রোভাইডারের স্বাস্থ্য", + "systemMetrics": "সিস্টেম মেট্রিক্স", + "tokenHealth": "টোকেনের স্বাস্থ্য", + "refreshAll": "সব রিফ্রেশ করুন", + "checkNow": "এখনই পরীক্ষা করুন", + "loadingHealth": "স্বাস্থ্যসংক্রান্ত ডেটা লোড হচ্ছে...", + "failedToLoad": "স্বাস্থ্যসংক্রান্ত ডেটা লোড করতে ব্যর্থ: {error}", + "retry": "পুনরায় চেষ্টা করুন", + "allOperational": "সব সিস্টেম সচল রয়েছে", + "issuesDetected": "সিস্টেমে সমস্যা শনাক্ত হয়েছে", + "healthVerdictReady": "OmniRoute প্রস্তুত", + "healthVerdictActionRequired": "সম্পূর্ণ কার্যক্রম পুনরুদ্ধার করতে পদক্ষেপ নেওয়া প্রয়োজন", + "healthVerdictCoolingDown": "সাম্প্রতিক পরিবর্তনের পর কুলডাউন চলছে", + "healthSubtitle": "সিস্টেমের স্বাস্থ্য পরীক্ষা", + "advancedDiagnosticsTitle": "উন্নত ডায়াগনস্টিকস", + "hide": "লুকান", + "show": "দেখান", + "updatedAt": "{time}-এ আপডেট করা হয়েছে", + "latency": "ল্যাটেন্সি", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", "millisecondsShort": "{value}ms", "notAvailable": "—", - "totalRequests": "Total requests", - "noDataYet": "No data yet", - "promptCache": "Prompt Cache", - "entries": "Entries", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "signatureCache": "Signature Cache", - "signatureDefaults": "Defaults", - "signatureTool": "Tool", - "signatureFamily": "Family", - "signatureSession": "Session", - "recovering": "Recovering", - "noCBData": "No circuit breaker data available. Make some requests first.", - "providerHealthStatusAria": "Provider health status", - "issuesLabel": "Issues Detected", - "operational": "Operational", - "providers": "Providers", - "configuredProvidersLabel": "Configured in dashboard", - "configuredProvidersHint": "Providers with credentials saved in /dashboard/providers, regardless of runtime state.", - "activeProviders": "{count} active", - "activeProvidersHint": "Configured providers currently enabled for routing requests.", - "monitoredProviders": "{count} monitored", - "monitoredProvidersHint": "Providers currently tracked by circuit-breaker health monitors.", - "healthyCount": "{count} healthy", + "totalRequests": "মোট অনুরোধ", + "noDataYet": "এখনও কোনো ডেটা নেই", + "promptCache": "প্রম্পট ক্যাশ", + "entries": "এন্ট্রি", + "hitRate": "হিট রেট", + "hitsMisses": "হিট / মিস", + "signatureCache": "সিগনেচার ক্যাশ", + "signatureDefaults": "ডিফল্ট", + "signatureTool": "টুল", + "signatureFamily": "ফ্যামিলি", + "signatureSession": "সেশন", + "recovering": "পুনরুদ্ধার হচ্ছে", + "noCBData": "কোনো সার্কিট ব্রেকার ডেটা উপলভ্য নেই। প্রথমে কিছু অনুরোধ করুন।", + "providerHealthStatusAria": "প্রোভাইডারের স্বাস্থ্যস্থিতি", + "issuesLabel": "সমস্যা শনাক্ত হয়েছে", + "operational": "কার্যকর", + "providers": "প্রোভাইডার", + "configuredProvidersLabel": "ড্যাশবোর্ডে কনফিগার করা হয়েছে", + "configuredProvidersHint": "রানটাইম অবস্থা নির্বিশেষে /dashboard/providers-এ সংরক্ষিত ক্রেডেনশিয়ালসহ প্রোভাইডার।", + "activeProviders": "{count}টি সক্রিয়", + "activeProvidersHint": "রাউটিং অনুরোধের জন্য বর্তমানে সক্রিয় থাকা কনফিগার করা প্রোভাইডার।", + "monitoredProviders": "{count}টি পর্যবেক্ষণাধীন", + "monitoredProvidersHint": "বর্তমানে সার্কিট-ব্রেকার হেলথ মনিটর দ্বারা পর্যবেক্ষণ করা প্রোভাইডার।", + "healthyCount": "{count}টি সুস্থ", "nodeVersion": "Node {version}", - "failures": "{count} failure", - "failuresPlural": "{count} failures", - "lastFailure": "Last", - "rateLimitStatus": "Rate Limit Status", - "activeLimiters": "{count} active limiter", - "activeLimitersPlural": "{count} active limiters", - "queued": "Queued", - "queuedCount": "{count} queued", - "running": "running", - "runningCount": "{count} running", + "failures": "{count}টি ব্যর্থতা", + "failuresPlural": "{count}টি ব্যর্থতা", + "lastFailure": "সর্বশেষ", + "rateLimitStatus": "রেট লিমিটের অবস্থা", + "activeLimiters": "{count}টি সক্রিয় লিমিটার", + "activeLimitersPlural": "{count}টি সক্রিয় লিমিটার", + "queued": "সারিতে রয়েছে", + "queuedCount": "{count}টি সারিতে রয়েছে", + "running": "চলমান", + "runningCount": "{count}টি চলমান", "ok": "OK", - "activeLockouts": "Active Lockouts", - "resetConfirm": "Reset all circuit breakers to healthy state? This will clear all failure counts and restore all providers to operational status.", - "resetAllTitle": "Reset all circuit breakers to healthy state", - "resetting": "Resetting...", - "resetAll": "Reset All", - "until": "Until {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "activeLockouts": "সক্রিয় লকআউট", + "resetConfirm": "সব সার্কিট ব্রেকারকে সুস্থ অবস্থায় রিসেট করবেন? এটি সব ব্যর্থতার সংখ্যা মুছে দেবে এবং সব প্রোভাইডারকে কার্যকর অবস্থায় ফিরিয়ে আনবে।", + "resetAllTitle": "সব সার্কিট ব্রেকারকে সুস্থ অবস্থায় রিসেট করুন", + "resetting": "রিসেট করা হচ্ছে...", + "resetAll": "সব রিসেট করুন", + "until": "{time} পর্যন্ত", + "limitExhausted": "নিঃশেষিত", + "learnedFromHeaders": "হেডার থেকে প্রাপ্ত", + "remainingOfLimit": "{remaining}/{limit} অবশিষ্ট", + "throttleStatus": "থ্রটল: {value}", + "lastHeaderUpdate": "হেডার আপডেট: {age}", "databaseHealth": "ডাটাবেস স্বাস্থ্য", "databaseHealthDescription": "পুরোনো quota/domain সারি এবং ভাঙা combo রেফারেন্স নির্ণয় ও মেরামত করুন।", "status": "স্ট্যাটাস", @@ -4851,65 +4851,65 @@ "noTargets": "কোনো টার্গেট রুট কনফিগার করা নেই।" }, "limits": { - "title": "Limits & Quotas", - "rateLimit": "Rate Limit", - "remaining": "Remaining", - "requestsPerMinute": "Requests/min", - "tokensPerMinute": "Tokens/min", - "dailyLimit": "Daily Limit" + "title": "সীমা ও কোটা", + "rateLimit": "রেট লিমিট", + "remaining": "অবশিষ্ট", + "requestsPerMinute": "অনুরোধ/মিনিট", + "tokensPerMinute": "টোকেন/মিনিট", + "dailyLimit": "দৈনিক সীমা" }, "logs": { - "title": "Logs", - "requestLogs": "Request Logs", - "proxyLogs": "Proxy Logs", - "auditLog": "Audit Log", + "title": "লগ", + "requestLogs": "অনুরোধের লগ", + "proxyLogs": "প্রক্সি লগ", + "auditLog": "অডিট লগ", "console": "Console", - "auditLogDesc": "Administrative actions and security events", - "loading": "Loading...", - "refresh": "Refresh", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", - "showing": "Showing {count} entries (offset {offset})", - "search": "Search", - "timestamp": "Timestamp", - "action": "Action", - "actor": "Actor", - "target": "Target", - "details": "Details", - "ipAddress": "IP Address", + "auditLogDesc": "প্রশাসনিক কার্যক্রম ও নিরাপত্তা ইভেন্ট", + "loading": "লোড হচ্ছে...", + "refresh": "রিফ্রেশ", + "filterByAction": "অ্যাকশন অনুযায়ী ফিল্টার করুন...", + "filterByActor": "সম্পাদনকারী অনুযায়ী ফিল্টার করুন...", + "filterEntriesAria": "অডিট লগ এন্ট্রি ফিল্টার করুন", + "filterByActionTypeAria": "অ্যাকশনের ধরন অনুযায়ী ফিল্টার করুন", + "filterByActorAria": "সম্পাদনকারী অনুযায়ী ফিল্টার করুন", + "refreshAuditLogAria": "অডিট লগ রিফ্রেশ করুন", + "tableAria": "অডিট লগ এন্ট্রি", + "failedFetchAuditLog": "অডিট লগ আনতে ব্যর্থ হয়েছে", + "showing": "{count}টি এন্ট্রি দেখানো হচ্ছে (অফসেট {offset})", + "search": "অনুসন্ধান", + "timestamp": "টাইমস্ট্যাম্প", + "action": "অ্যাকশন", + "actor": "সম্পাদনকারী", + "target": "লক্ষ্য", + "details": "বিস্তারিত", + "ipAddress": "IP ঠিকানা", "notAvailable": "—", - "noEntries": "No audit log entries found", - "previous": "Previous", - "next": "Next", - "providerWarningTitle": "Provider Warnings", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", - "providerWarningDesc": "Some providers returned warnings during request processing", + "noEntries": "কোনো অডিট লগ এন্ট্রি পাওয়া যায়নি", + "previous": "পূর্ববর্তী", + "next": "পরবর্তী", + "providerWarningTitle": "প্রোভাইডার সতর্কতা", + "viewDetails": "বিস্তারিত দেখুন", + "eventMetadata": "ইভেন্ট মেটাডেটা", + "eventPayload": "ইভেন্ট পেলোড", + "requestId": "রিকোয়েস্ট আইডি", + "providerWarningDesc": "রিকোয়েস্ট প্রক্রিয়াকরণের সময় কিছু প্রোভাইডার সতর্কতা দিয়েছে", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", - "auditModalSubtitle": "Event details and metadata", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "offset": "অফসেট", + "limit": "সীমা", + "status": "স্ট্যাটাস", + "resourceType": "রিসোর্সের ধরন", + "totalEntries": "মোট এন্ট্রি", + "tab": "ট্যাব", + "auditModalSubtitle": "ইভেন্টের বিস্তারিত ও মেটাডেটা", + "close": "বন্ধ করুন", + "runningRequests": "সক্রিয় রিকোয়েস্ট", + "runningRequestsDesc": "বর্তমানে চলমান আপস্ট্রিম অনুরোধগুলোর রিয়েল-টাইম দৃশ্য", "clearAll": "সমস্ত সাফ করুন", "confirmClearActiveRequests": "সমস্ত সক্রিয় অনুরোধ সাফ করবেন?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "মডেল", + "provider": "প্রোভাইডার", + "account": "অ্যাকাউন্ট", + "elapsed": "অতিবাহিত সময়", "activeStage": "পর্যায়", "activeStageUnknown": "এখনও আপস্ট্রিমে পাঠানো হয়নি", "activeStageRegistered": "নিবন্ধিত", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "রেট লিমিট স্লট পাওয়া গেছে", "activeStageSendingToProvider": "আপস্ট্রিমে পাঠানো হচ্ছে", "activeStageProviderResponseStarted": "আপস্ট্রিম প্রতিক্রিয়া শুরু হয়েছে", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "সংখ্যা", + "payloads": "পেলোডসমূহ", + "viewPayloads": "দেখুন", + "activeCount": "{count}টি সক্রিয়", + "clientPayload": "ক্লায়েন্ট অনুরোধের পেলোড", + "upstreamPayload": "আপস্ট্রিম প্রোভাইডারের পেলোড", + "upstreamNotSentYet": "এখনও আপস্ট্রিমে পাঠানো হয়নি", + "runningRequestDetailMeta": "অ্যাকাউন্ট: {account} — অতিবাহিত সময়: {elapsed}", + "export": "এক্সপোর্ট করুন", + "exporting": "এক্সপোর্ট করা হচ্ছে...", + "exportFailed": "এক্সপোর্ট ব্যর্থ হয়েছে", "cleanHistoryButton": "হিস্ট্রি পরিষ্কার করুন", "cleanHistoryTitle": "লগ হিস্ট্রি পরিষ্কার করবেন?", "cleanHistoryMessage": "এটি DATA_DIR/call_logs-এর অধীনে থাকা সমস্ত রিকোয়েস্ট লগ সারি, লেগ্যাসি বিস্তারিত সারি এবং লোকাল আর্টিফ্যাক্ট ফাইল স্থায়ীভাবে মুছে ফেলবে। পরিষ্কার করার পর লাইভ পেজটি রিফ্রেশ হবে।", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} টি লগ এন্ট্রি, {deletedArtifacts} টি আর্টিফ্যাক্ট এবং {deletedDetailedLogs} টি লেগ্যাসি বিস্তারিত সারি মুছে ফেলা হয়েছে।", "cleanHistoryEmpty": "কোনো রিকোয়েস্ট লগ হিস্ট্রি পাওয়া যায়নি।", "cleanHistoryFailed": "লগ হিস্ট্রি পরিষ্কার করতে ব্যর্থ হয়েছে।", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "সময়সীমা", + "lastNHours": "গত {hours}", + "defaultRange": "ডিফল্ট", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "লগ আনতে ব্যর্থ হয়েছে", + "copyFailed": "লগ এন্ট্রি কপি করতে ব্যর্থ হয়েছে", + "copyLogEntry": "লগ এন্ট্রি কপি করুন", "filterByLevel": "লগ লেভেল অনুযায়ী ফিল্টার করুন", "searchPlaceholder": "লগ খুঁজুন…", "searchAria": "লগ এন্ট্রি খুঁজুন", @@ -4964,49 +4964,49 @@ "tokens": "টোকেন" }, "onboarding": { - "welcome": "Welcome", + "welcome": "স্বাগতম", "tiers": "টিয়ার", - "security": "Security", + "security": "নিরাপত্তা", "test": "Test", - "ready": "Ready!", - "setPassword": "Set Password", - "addProvider": "Add your first provider", - "getStarted": "Get Started", - "skip": "Skip", - "skipWizard": "Skip wizard entirely", - "skipPassword": "Skip password setup", - "skipAndContinue": "Skip & Continue", - "passwordLabel": "Password", - "confirmPassword": "Confirm Password", - "enterPassword": "Enter password", - "confirmPasswordPlaceholder": "Confirm password", - "passwordsMismatch": "Passwords do not match", - "setupComplete": "Setup Complete!", - "goToDashboard": "Go to Dashboard →", - "welcomeDesc": "OmniRoute is your local AI API proxy. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "multiProvider": "Multi-Provider", - "usageTracking": "Usage Tracking", - "securityDesc": "Set a password to protect your dashboard, or skip for now.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", - "providerDesc": "Connect your first AI provider. You can add more later.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", - "apiKeyRequired": "API Key (required)", - "customUrlOptional": "Custom URL (optional)", - "testDesc": "Let's verify your provider connection works.", - "runTest": "Run Connection Test", - "testingConnection": "Testing connection...", - "connectionSuccessful": "Connection successful! Your provider is ready.", - "noProviderFound": "No provider found. You can add one from the dashboard later.", - "testFailed": "Test failed, but you can configure this later.", - "couldNotTest": "Could not test right now. You can test from the dashboard.", - "doneDesc": "You're all set! Your OmniRoute instance is configured and ready to proxy AI requests.", - "yourEndpoint": "Your endpoint:", - "continue": "Continue", - "retry": "Retry", - "failedSetPassword": "Failed to set password. Try again.", - "failedAddProvider": "Failed to add provider. Try again.", - "connectionError": "Connection error. Please try again.", - "provider": "Provider", + "ready": "প্রস্তুত!", + "setPassword": "পাসওয়ার্ড সেট করুন", + "addProvider": "আপনার প্রথম প্রোভাইডার যোগ করুন", + "getStarted": "শুরু করুন", + "skip": "এড়িয়ে যান", + "skipWizard": "সম্পূর্ণ উইজার্ড এড়িয়ে যান", + "skipPassword": "পাসওয়ার্ড সেটআপ এড়িয়ে যান", + "skipAndContinue": "এড়িয়ে গিয়ে চালিয়ে যান", + "passwordLabel": "পাসওয়ার্ড", + "confirmPassword": "পাসওয়ার্ড নিশ্চিত করুন", + "enterPassword": "পাসওয়ার্ড লিখুন", + "confirmPasswordPlaceholder": "পাসওয়ার্ড নিশ্চিত করুন", + "passwordsMismatch": "পাসওয়ার্ড দুটি মেলেনি", + "setupComplete": "সেটআপ সম্পূর্ণ হয়েছে!", + "goToDashboard": "ড্যাশবোর্ডে যান →", + "welcomeDesc": "OmniRoute হলো আপনার স্থানীয় AI API প্রক্সি। এটি লোড ব্যালেন্সিং, ফেইলওভার এবং ব্যবহার ট্র্যাকিংসহ একাধিক AI প্রোভাইডারের কাছে অনুরোধ রাউট করে।", + "multiProvider": "মাল্টি-প্রোভাইডার", + "usageTracking": "ব্যবহার ট্র্যাকিং", + "securityDesc": "আপনার ড্যাশবোর্ড সুরক্ষিত রাখতে একটি পাসওয়ার্ড সেট করুন, অথবা আপাতত এড়িয়ে যান।", + "securityDescSkipWarning": "⚠️ পাসওয়ার্ড ছাড়া, সেটআপের সময় আপনি প্রোভাইডার যোগ করতে পারবেন না। পাসওয়ার্ড সেট করার পর ড্যাশবোর্ড থেকে সেগুলো যোগ করতে পারবেন।", + "providerDesc": "আপনার প্রথম AI প্রোভাইডার সংযুক্ত করুন। পরে আরও যোগ করতে পারবেন।", + "providerRequiresPassword": "প্রোভাইডার যোগ করতে প্রথমে আপনাকে একটি পাসওয়ার্ড সেট করতে হবে। অনুগ্রহ করে নিরাপত্তা ধাপে ফিরে গিয়ে একটি পাসওয়ার্ড সেট করুন, অথবা পরে ড্যাশবোর্ড থেকে প্রোভাইডার যোগ করুন।", + "apiKeyRequired": "API কী (আবশ্যক)", + "customUrlOptional": "কাস্টম URL (ঐচ্ছিক)", + "testDesc": "চলুন যাচাই করি আপনার প্রোভাইডার সংযোগ কাজ করছে কি না।", + "runTest": "সংযোগ পরীক্ষা চালান", + "testingConnection": "সংযোগ পরীক্ষা করা হচ্ছে...", + "connectionSuccessful": "সংযোগ সফল হয়েছে! আপনার প্রোভাইডার প্রস্তুত।", + "noProviderFound": "কোনো প্রোভাইডার পাওয়া যায়নি। পরে ড্যাশবোর্ড থেকে একটি যোগ করতে পারবেন।", + "testFailed": "পরীক্ষা ব্যর্থ হয়েছে, তবে আপনি পরে এটি কনফিগার করতে পারবেন।", + "couldNotTest": "এই মুহূর্তে পরীক্ষা করা যায়নি। আপনি ড্যাশবোর্ড থেকে পরীক্ষা করতে পারবেন।", + "doneDesc": "সবকিছু প্রস্তুত! আপনার OmniRoute ইনস্ট্যান্স কনফিগার করা হয়েছে এবং AI অনুরোধ প্রক্সি করার জন্য প্রস্তুত।", + "yourEndpoint": "আপনার এন্ডপয়েন্ট:", + "continue": "চালিয়ে যান", + "retry": "আবার চেষ্টা করুন", + "failedSetPassword": "পাসওয়ার্ড সেট করা যায়নি। আবার চেষ্টা করুন।", + "failedAddProvider": "প্রোভাইডার যোগ করা যায়নি। আবার চেষ্টা করুন।", + "connectionError": "সংযোগে ত্রুটি। অনুগ্রহ করে আবার চেষ্টা করুন।", + "provider": "প্রোভাইডার", "apiKeyHelp": "একটি API কী AI পরিষেবাগুলির জন্য একটি পাসওয়ার্ড। আপনার প্রদানকারীর ওয়েবসাইট থেকে একটি পান (যেমন, platform.openai.com, console.anthropic.com)।", "tier": { "subtitle": "OmniRoute প্রদানকারীদেরকে তিনটি স্তরে সংগঠিত করে তাই রাউটিং প্রথমে সবচেয়ে নির্ভরযোগ্য, সর্বনিম্ন-খরচের পথ পছন্দ করে।", @@ -5049,12 +5049,12 @@ } }, "providers": { - "title": "Providers", + "title": "প্রোভাইডারসমূহ", "Account Deactivated": "অ্যাকাউন্ট নিষ্ক্রিয় করা হয়েছে", "allProviders": "সমস্ত প্রদানকারী", "audioProviders": "অডিও প্রদানকারী", "showFreeOnly": "শুধুমাত্র বিনামূল্যে", - "addProvider": "Add Provider", + "addProvider": "প্রোভাইডার যোগ করুন", "addFirstProvider": "আপনার প্রথম প্রদানকারী যোগ করুন", "addFirstProviderDesc": "OmniRoute এর মাধ্যমে রাউটিং অনুরোধ শুরু করতে একটি AI প্রদানকারীকে সংযুক্ত করুন। আপনি বিনামূল্যে প্রদানকারী, API কী, বা OAuth অ্যাকাউন্ট ব্যবহার করতে পারেন।", "learnMore": "আরও জানুন", @@ -5065,7 +5065,7 @@ "importFromFileSelectHint": "{total} টির মধ্যে {count} টি নির্বাচিত", "importFromFileColProvider": "প্রোভাইডার", "importFromFileColName": "নাম", - "importFromFileColBaseUrl": "Base URL", + "importFromFileColBaseUrl": "বেস URL", "importFromFileErrorLine": "সারি {line}: {reason}", "importErrorMissingProvider": "প্রোভাইডার অনুপস্থিত", "importErrorMissingName": "নাম অনুপস্থিত", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "ইম্পোর্ট করা হচ্ছে…", "importFromFileImport": "{count}টি প্রোভাইডার ইম্পোর্ট করুন", "importFromFileResult": "{success}টি প্রোভাইডার ইম্পোর্ট করা হয়েছে ({failed}টি ব্যর্থ হয়েছে)", + "importFromFileDownloadTemplate": "CSV টেমপ্লেট ডাউনলোড করুন", + "importFromFileMoreErrors": "+{count}টি আরও", + "importFromFileSchemaHint": "CSV কলামগুলো অবস্থানভিত্তিক: provider, name, apiKey, baseUrl (ঐচ্ছিক), priority (ঐচ্ছিক)। provider কলামে অবশ্যই বিদ্যমান কোনো পরিচালিত প্রোভাইডারের id অথবা ইতোমধ্যে নিবন্ধিত OpenAI/Anthropic-সামঞ্জস্যপূর্ণ নোডের id থাকতে হবে—এই ইমপোর্ট নতুন এন্ডপয়েন্ট নোড তৈরি করে না।", "adaptaTutorial": { "title": "Adapta Web কীভাবে কানেক্ট করবেন", "introPrefix": "Adapta Clerk-এর মাধ্যমে প্রমাণীকরণ করে। টোকেনটি", @@ -5103,31 +5106,31 @@ "tipPrefix": "এই", "tipSuffix": "কুকিটি দীর্ঘস্থায়ী, সাধারণত কয়েক মাসের জন্য। আপনি সাইন আউট করলে বা Adapta সেশনটি বাতিল করলেই কেবল এটি পুনর্নবীকরণ করতে হবে।" }, - "editProvider": "Edit Provider", - "deleteProvider": "Delete Provider", - "noProviders": "No providers configured", - "modelAvailability": "Model Availability", - "accounts": "Accounts", - "newAccount": "New Account", - "deleteConfirm": "Are you sure you want to delete this provider?", - "testing": "Testing...", - "testConnection": "Test Connection", - "testSuccess": "Connection successful", - "testFailed": "Connection failed", - "available": "Available", - "cooldown": "Cooldown", - "unavailable": "Unavailable", - "unknown": "Unknown", + "editProvider": "প্রোভাইডার সম্পাদনা করুন", + "deleteProvider": "প্রোভাইডার মুছুন", + "noProviders": "কোনো প্রোভাইডার কনফিগার করা নেই", + "modelAvailability": "মডেলের প্রাপ্যতা", + "accounts": "অ্যাকাউন্টসমূহ", + "newAccount": "নতুন অ্যাকাউন্ট", + "deleteConfirm": "আপনি কি নিশ্চিত যে এই প্রোভাইডারটি মুছতে চান?", + "testing": "পরীক্ষা করা হচ্ছে...", + "testConnection": "সংযোগ পরীক্ষা করুন", + "testSuccess": "সংযোগ সফল হয়েছে", + "testFailed": "সংযোগ ব্যর্থ হয়েছে", + "available": "উপলভ্য", + "cooldown": "কুলডাউন", + "unavailable": "অনুপলভ্য", + "unknown": "অজানা", "oauthLabel": "OAuth", - "compatibleLabel": "Compatible", + "compatibleLabel": "সামঞ্জস্যপূর্ণ", "chat": "Chat", "responses": "Responses", "messages": "Messages", - "oauthProviders": "OAuth Providers", - "freeProviders": "Free Providers", - "apiKeyProviders": "API Key Providers", - "compatibleProviders": "API Key Compatible Providers", - "testAll": "Test All", + "oauthProviders": "OAuth প্রদানকারী", + "freeProviders": "বিনামূল্যের প্রদানকারী", + "apiKeyProviders": "API Key প্রদানকারী", + "compatibleProviders": "API Key-সামঞ্জস্যপূর্ণ প্রদানকারী", + "testAll": "সব পরীক্ষা করুন", "reorderByAvailability": "পুনর্বিন্যাস", "reorderByAvailabilityTitle": "প্রাপ্যতা অনুসারে সংযোগ পুনর্বিন্যাস করুন", "reorderByAvailabilityError": "প্রাপ্যতা অনুসারে সংযোগ পুনর্বিন্যাস করা যায়নি", @@ -5135,10 +5138,10 @@ "distributing": "বিতরণ করা হচ্ছে...", "selectedCount": "{count, plural, one {#টি নির্বাচিত} other {#টি নির্বাচিত}}", "accountsCount": "{count, plural, one {#টি অ্যাকাউন্ট} other {#টি অ্যাকাউন্ট}}", - "testAllOAuth": "Test all OAuth connections", - "testAllFree": "Test all Free connections", - "testAllApiKey": "Test all API Key connections", - "testAllCompatible": "Test all Compatible connections", + "testAllOAuth": "সব OAuth সংযোগ পরীক্ষা করুন", + "testAllFree": "সব বিনামূল্যের সংযোগ পরীক্ষা করুন", + "testAllApiKey": "সব API Key সংযোগ পরীক্ষা করুন", + "testAllCompatible": "সব সামঞ্জস্যপূর্ণ সংযোগ পরীক্ষা করুন", "testAllModels": "সব মডেল পরীক্ষা করুন", "testAllModelsConfirm": "সব দৃশ্যমান মডেল পরীক্ষা করবেন? auto-hide সক্রিয় থাকলে ব্যর্থ মডেলগুলো লুকানো হবে।", "testingAllModels": "{done}/{total} পরীক্ষা করা হচ্ছে...", @@ -5154,9 +5157,9 @@ "filterByVisibility": "দৃশ্যমানতা দ্বারা ফিল্টার করুন", "autoHideFailed": "ব্যর্থ মডেলগুলো স্বয়ংক্রিয়ভাবে লুকান", "autoHideFailedHint": "সক্রিয় থাকলে, Test all পাবলিক ক্যাটালগ (যেমন /v1/models) থেকে স্থায়ী নয় এমন ব্যর্থতাগুলো লুকিয়ে রাখে। একক-মডেল পরীক্ষাগুলো কখনই স্বয়ংক্রিয়ভাবে লুকায় না।", - "connected": "{count} Connected", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", + "connected": "{count}টি সংযুক্ত", + "errorCount": "{count}টি ত্রুটি ({code})", + "errorCountNoCode": "{count}টি ত্রুটি", "testAllCompleted": "পরীক্ষা করা হয়েছে {total} টি মডেল: {ok} টি ঠিক আছে, {failed} টি ব্যর্থ হয়েছে", "modelAutoHidden": "মডেল {model} স্বয়ংক্রিয়ভাবে লুকানো হয়েছে (পরীক্ষা ব্যর্থ হয়েছে)", "filterAll": "সব", @@ -5164,9 +5167,9 @@ "filterHidden": "শুধুমাত্র লুকানো", "modelsHiddenCount": "{count} টি লুকানো", "warningCount": "{count} সতর্কতা", - "noConnections": "No connections", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "noConnections": "কোনো সংযোগ নেই", + "expiredBadge": "মেয়াদোত্তীর্ণ", + "expiringSoonBadge": "শীঘ্রই মেয়াদ শেষ হবে", "freeTier": "বিনামূল্যের স্তর", "freeTierAvailable": "বিনামূল্যে স্তর উপলব্ধ", "hasFreeTooltip": "ফ্রি টিয়ার উপলব্ধ", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "এই প্রদানকারীকে অবমূল্যায়ন করা হয়েছে", "riskNotice": { "title": "এগিয়ে যাওয়ার আগে", - "detailsTitle": "Usage caveats", + "detailsTitle": "ব্যবহারের সীমাবদ্ধতা", "tooltip": "ব্যবহারের সতর্কতা সহ প্রদানকারী — বিস্তারিত জানতে ক্লিক করুন", "oauth": "এই প্রদানকারীটি আপনার অফিসিয়াল প্রোডাক্ট সেশন/OAuth ব্যবহার করে, যা প্রক্সি/রাউটার ব্যবহারের জন্য অনুমোদিত নয়। আমরা নিবিড় স্বায়ত্তশাসিত এজেন্ট ব্যবহার (OpenCloud-স্টাইল, দীর্ঘ বহু-ধাপের ফ্লো, বড় ব্যাচ) সুপারিশ করি না — আপস্ট্রিম অ্যাকাউন্টটি সীমাবদ্ধ বা নিষিদ্ধ করে প্রতিক্রিয়া জানাতে পারে। নিজের ঝুঁকিতে ব্যবহার করুন।", "webCookie": "এই প্রদানকারীটি আপনার ওয়েব সেশন কুকিজের মাধ্যমে প্রমাণীকরণ করে। আপস্ট্রিম পরিষেবাটি যেকোনো সময় সেশনটি বাতিল করতে পারে, যার ফলে আপনাকে আবার লগ ইন করতে হবে। দীর্ঘ সময় ধরে অযত্নে রেখে কাজ চালানোর জন্য প্রস্তাবিত নয়। নিজের ঝুঁকিতে ব্যবহার করুন।", @@ -5188,95 +5191,95 @@ "cancel": "বাতিল করুন" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count}টি সংযোগ চিহ্নিত হয়েছে — সাম্প্রতিক সর্বোচ্চ {maxFailures}টি ব্যর্থতা{lastFailureSuffix}। সংযোগের অবস্থা দেখতে ক্লিক করুন।", + "lastFailureSuffix": "(সর্বশেষ ব্যর্থতা {time})", + "ariaLabel": "সংযোগের অবস্থার বিস্তারিত দেখুন, {count}টি সতর্কতা" }, - "disabled": "Disabled", - "enableProvider": "Enable provider", - "disableProvider": "Disable provider", - "testResults": "Test Results", - "noCompatibleYet": "No compatible providers added yet", - "compatibleHint": "Use the buttons above to add OpenAI or Anthropic compatible endpoints", - "addOpenAICompatible": "Add OpenAI Compatible", - "addAnthropicCompatible": "Add Anthropic Compatible", - "addNewProvider": "Add New Provider", - "backToProviders": "Back to Providers", - "configureNewProvider": "Configure a new AI provider to use with your applications.", - "providerLabel": "Provider", - "selectProvider": "Select a provider", - "selectedProvider": "Selected provider", - "authMethod": "Authentication Method", - "apiKeyLabel": "API Key", - "apiKeyRequired": "API Key is required", - "selectProviderRequired": "Please select a provider", - "enterApiKey": "Enter your API key", - "apiKeySecure": "Your API key will be encrypted and stored securely.", - "oauth2Connect": "Connect with OAuth2", + "disabled": "নিষ্ক্রিয়", + "enableProvider": "প্রদানকারী সক্রিয় করুন", + "disableProvider": "প্রদানকারী নিষ্ক্রিয় করুন", + "testResults": "পরীক্ষার ফলাফল", + "noCompatibleYet": "এখনও কোনো সামঞ্জস্যপূর্ণ প্রদানকারী যোগ করা হয়নি", + "compatibleHint": "OpenAI বা Anthropic-সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট যোগ করতে উপরের বোতামগুলো ব্যবহার করুন", + "addOpenAICompatible": "OpenAI-সামঞ্জস্যপূর্ণ যোগ করুন", + "addAnthropicCompatible": "Anthropic-সামঞ্জস্যপূর্ণ যোগ করুন", + "addNewProvider": "নতুন প্রদানকারী যোগ করুন", + "backToProviders": "প্রদানকারীদের তালিকায় ফিরে যান", + "configureNewProvider": "আপনার অ্যাপ্লিকেশনগুলোর সঙ্গে ব্যবহারের জন্য একটি নতুন AI প্রদানকারী কনফিগার করুন।", + "providerLabel": "প্রদানকারী", + "selectProvider": "একটি প্রদানকারী নির্বাচন করুন", + "selectedProvider": "নির্বাচিত প্রদানকারী", + "authMethod": "প্রমাণীকরণ পদ্ধতি", + "apiKeyLabel": "API কী", + "apiKeyRequired": "API কী আবশ্যক", + "selectProviderRequired": "অনুগ্রহ করে একটি প্রোভাইডার নির্বাচন করুন", + "enterApiKey": "আপনার API কী লিখুন", + "apiKeySecure": "আপনার API কী এনক্রিপ্ট করে নিরাপদে সংরক্ষণ করা হবে।", + "oauth2Connect": "OAuth2 দিয়ে সংযুক্ত করুন", "oauth2Label": "OAuth2", - "oauth2Desc": "Connect your account using OAuth2 authentication.", - "displayName": "Display Name", - "displayNamePlaceholder": "e.g., Production API, Dev Environment", - "displayNameHint": "Optional. A friendly name to identify this configuration.", - "active": "Active", - "activeDescription": "Enable this provider for use in your applications", - "cancel": "Cancel", - "createProvider": "Create Provider", - "failedCreate": "Failed to create provider", - "errorOccurred": "An error occurred. Please try again.", - "modelStatus": "Model Status", - "showConfiguredOnly": "Configured only", - "allModelsOperational": "All models operational", - "modelsWithIssues": "{count} model(s) with issues", - "allModelsNormal": "All models are responding normally.", - "cooldownCleared": "Cooldown cleared for {model}", - "failedClearCooldown": "Failed to clear cooldown", - "loadingAvailability": "Loading model availability...", - "clearCooldown": "Clear", - "clearing": "Clearing...", - "until": "Until {time}", - "providerTestFailed": "Provider test failed", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "oauth2Desc": "OAuth2 প্রমাণীকরণ ব্যবহার করে আপনার অ্যাকাউন্ট সংযুক্ত করুন।", + "displayName": "প্রদর্শিত নাম", + "displayNamePlaceholder": "যেমন, প্রোডাকশন API, ডেভ পরিবেশ", + "displayNameHint": "ঐচ্ছিক। এই কনফিগারেশনটি শনাক্ত করার জন্য একটি সহজ নাম।", + "active": "সক্রিয়", + "activeDescription": "আপনার অ্যাপ্লিকেশনগুলোতে ব্যবহারের জন্য এই প্রোভাইডারটি সক্রিয় করুন", + "cancel": "বাতিল", + "createProvider": "প্রোভাইডার তৈরি করুন", + "failedCreate": "প্রোভাইডার তৈরি করা যায়নি", + "errorOccurred": "একটি ত্রুটি ঘটেছে। অনুগ্রহ করে আবার চেষ্টা করুন।", + "modelStatus": "মডেলের স্থিতি", + "showConfiguredOnly": "শুধু কনফিগার করা মডেল", + "allModelsOperational": "সব মডেল সচল", + "modelsWithIssues": "{count}টি মডেলে সমস্যা রয়েছে", + "allModelsNormal": "সব মডেল স্বাভাবিকভাবে সাড়া দিচ্ছে।", + "cooldownCleared": "{model}-এর কুলডাউন সাফ করা হয়েছে", + "failedClearCooldown": "কুলডাউন সাফ করা যায়নি", + "loadingAvailability": "মডেলের উপলভ্যতা লোড হচ্ছে...", + "clearCooldown": "সাফ করুন", + "clearing": "সাফ করা হচ্ছে...", + "until": "{time} পর্যন্ত", + "providerTestFailed": "প্রোভাইডার পরীক্ষা ব্যর্থ হয়েছে", + "providerTestTimeout": "প্রোভাইডার পরীক্ষার সময়সীমা শেষ হয়েছে — একসঙ্গে অনেক বেশি সংযোগ পরীক্ষা করা হচ্ছে", "modeTest": "{mode} Test", - "passedCount": "{count} passed", - "failedCount": "{count} failed", - "testedCount": "{count} tested", + "passedCount": "{count}টি সফল", + "failedCount": "{count}টি ব্যর্থ", + "testedCount": "{count}টি পরীক্ষিত", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", - "noActiveConnectionsInGroup": "No active connections found for this group.", - "allTestsPassed": "All {total} tests passed", - "testSummary": "{passed}/{total} passed, {failed} failed", - "nameLabel": "Name", + "errorShort": "ত্রুটি", + "noActiveConnectionsInGroup": "এই গ্রুপের জন্য কোনো সক্রিয় সংযোগ পাওয়া যায়নি।", + "allTestsPassed": "মোট {total}টি পরীক্ষাই সফল হয়েছে", + "testSummary": "{passed}/{total}টি সফল, {failed}টি ব্যর্থ", + "nameLabel": "নাম", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", - "apiTypeLabel": "API Type", - "prefixHint": "Required. Unique prefix for model names.", - "nameHint": "Required. A friendly label for this node.", - "baseUrlHint": "Required. Provider API base URL.", + "baseUrlLabel": "বেস URL", + "apiTypeLabel": "API-এর ধরন", + "prefixHint": "আবশ্যক। মডেলের নামগুলোর জন্য একটি অনন্য উপসর্গ।", + "nameHint": "আবশ্যক। এই নোডের জন্য একটি সহজবোধ্য লেবেল।", + "baseUrlHint": "আবশ্যক। Provider API-এর বেস URL।", "iconUrlLabel": "আইকন URL", "iconUrlHint": "ঐচ্ছিক। এই প্রদানকারীর আইকন হিসেবে দেখানোর জন্য ছবির URL।", "iconUrlInvalid": "অবৈধ আইকন URL। একটি http(s):// অথবা data:image/*;base64 URL ব্যবহার করুন।", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "দৈনিক কোটা রিসেটের টাইমজোন", + "dailyQuotaResetTimezoneHint": "ঐচ্ছিক IANA টাইমজোন, যা upstream থেকে X-RateLimit-Reset না এলে ব্যবহার করা হবে। সংক্ষিপ্ত cooldown বজায় রাখতে খালি রাখুন।", + "dailyQuotaResetHourLabel": "দৈনিক কোটা রিসেটের ঘণ্টা", + "dailyQuotaResetHourHint": "উপরের টাইমজোন অনুযায়ী স্থানীয় ঘণ্টা 0-23। খালি রাখলে node-স্তরের কোনো ঘড়ি থাকবে না।", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", - "validateConnection": "Validate Connection", - "validating": "Validating...", - "connectionValid": "Connection is valid!", - "connectionFailed": "Connection failed. Check URL and key.", - "testKeyLabel": "Test API Key", - "testKeyPlaceholder": "sk-... (for validation only)", - "providerNotFound": "Provider not found", - "deleteConnectionConfirm": "Delete this connection?", + "validateConnection": "সংযোগ যাচাই করুন", + "validating": "যাচাই করা হচ্ছে...", + "connectionValid": "সংযোগটি বৈধ!", + "connectionFailed": "সংযোগ ব্যর্থ হয়েছে। URL এবং key পরীক্ষা করুন।", + "testKeyLabel": "API Key পরীক্ষা করুন", + "testKeyPlaceholder": "sk-... (শুধু যাচাইয়ের জন্য)", + "providerNotFound": "Provider পাওয়া যায়নি", + "deleteConnectionConfirm": "এই সংযোগটি মুছবেন?", "deleteConnectionConfirmNamed": "আপনি কি নিশ্চিত যে আপনি {name} মুছতে চান? এই কাজটি বাতিল করা যাবে না।", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "নির্বাচিতগুলো মুছুন ({count})", + "batchDeleteConfirm": "{count}টি সংযোগ মুছবেন? এই কাজটি পূর্বাবস্থায় ফেরানো যাবে না।", + "batchDeleteSuccess": "{count}টি সংযোগ মুছে ফেলা হয়েছে", "batchActivateSelected": "সক্রিয় করুন", "batchDeactivateSelected": "নিষ্ক্রিয় করুন", "batchRetestSelected": "পুনরায় পরীক্ষা করুন", @@ -5292,32 +5295,32 @@ "filterError": "ত্রুটি", "filterBanned": "নিষিদ্ধ", "filterCreditsExhausted": "ক্রেডিট শেষ", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "অ্যাকাউন্ট খুঁজুন…", "noFilteredConnections": "বর্তমান ফিল্টারের সাথে কোনো সংযোগ মিলছে না।", - "failedSetAlias": "Failed to set alias", + "failedSetAlias": "alias সেট করা যায়নি", "setAliasSuccess": "অ্যালিয়াস {alias} সেট করা হয়েছে", "deleteAliasSuccess": "অ্যালিয়াস {alias} মুছে ফেলা হয়েছে", - "failedSaveConnection": "Failed to save connection", - "failedSaveConnectionRetry": "Failed to save connection. Please try again.", - "failedRetestConnection": "Failed to retest connection", - "deleteCompatibleNodeConfirm": "Delete this {type} Compatible node?", - "anthropicCompatibleDetails": "Anthropic Compatible Details", - "openaiCompatibleDetails": "OpenAI Compatible Details", + "failedSaveConnection": "সংযোগ সংরক্ষণ করা যায়নি", + "failedSaveConnectionRetry": "সংযোগ সংরক্ষণ করা যায়নি। অনুগ্রহ করে আবার চেষ্টা করুন।", + "failedRetestConnection": "সংযোগ পুনরায় পরীক্ষা করা যায়নি", + "deleteCompatibleNodeConfirm": "এই {type} Compatible nodeটি মুছবেন?", + "anthropicCompatibleDetails": "Anthropic Compatible-এর বিস্তারিত", + "openaiCompatibleDetails": "OpenAI Compatible-এর বিস্তারিত", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "এম্বেডিংস", + "audioTranscriptions": "অডিও ট্রান্সক্রিপশন", + "audioSpeech": "অডিও স্পিচ", + "imagesGenerations": "ছবি তৈরি", "chatCompletions": "Chat Completions", - "importingModels": "Importing...", - "importFromModels": "Import from /models", - "modelsImported": "{count} models imported", - "allModelsAlreadyImported": "All models already imported", - "noNewModelsToImport": "No new models to import — all models are already in the registry or custom models list", - "skippingExistingModels": "Skipping {count} existing models", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "importingModels": "ইম্পোর্ট করা হচ্ছে...", + "importFromModels": "/models থেকে ইম্পোর্ট করুন", + "modelsImported": "{count}টি মডেল ইম্পোর্ট করা হয়েছে", + "allModelsAlreadyImported": "সব মডেল ইতিমধ্যেই ইম্পোর্ট করা হয়েছে", + "noNewModelsToImport": "ইম্পোর্ট করার মতো কোনো নতুন মডেল নেই — সব মডেল ইতিমধ্যেই registry বা custom models তালিকায় রয়েছে", + "skippingExistingModels": "বিদ্যমান {count}টি মডেল এড়িয়ে যাওয়া হচ্ছে", + "autoSync": "স্বয়ংক্রিয় সিঙ্ক", + "autoSyncShort": "সিঙ্ক", "autoFetchModels": "আপস্ট্রিম মডেলগুলি স্বয়ংক্রিয়ভাবে আনুন", "autoFetchModelsTooltip": "প্রয়োজন হলে আপস্ট্রিম মডেলগুলি ফেচ এবং ক্যাশ করুন", "autoFetchModelsEnabled": "আপস্ট্রিম মডেল স্বয়ংক্রিয়-ফেচ সক্ষম করা হয়েছে", @@ -5329,52 +5332,52 @@ "resetToUpstreamDefaults": "আপস্ট্রিম ডিফল্টগুলি পুনরুদ্ধার করুন", "resetToUpstreamDefaultsSuccess": "আপস্ট্রিম মডেল ডিফল্টগুলি পুনরুদ্ধার করা হয়েছে", "resetToUpstreamDefaultsFailed": "আপস্ট্রিম মডেল ডিফল্টগুলি পুনরুদ্ধার করতে ব্যর্থ হয়েছে", - "autoSyncTooltip": "Automatically refresh model list every 24h (configurable via MODEL_SYNC_INTERVAL_HOURS)", - "autoSyncEnabled": "Auto-sync enabled — models will refresh periodically", - "autoSyncDisabled": "Auto-sync disabled", - "autoSyncToggleFailed": "Failed to toggle auto-sync", - "autoSyncPartialFailure": "Auto-sync updated for some connections, but not all", - "clearAllModels": "Clear All Models", - "clearAllModelsConfirm": "Are you sure you want to remove all models for this provider? This cannot be undone.", - "clearAllModelsSuccess": "All models cleared", - "clearAllModelsFailed": "Failed to clear models", - "addConnectionToImport": "Add a connection to enable importing.", - "noModelsConfigured": "No models configured", - "connectionCount": "{count} connection(s)", - "fetchingModels": "Fetching available models...", - "failedFetchModels": "Failed to fetch models", + "autoSyncTooltip": "প্রতি 24 ঘণ্টায় স্বয়ংক্রিয়ভাবে মডেলের তালিকা রিফ্রেশ করুন (MODEL_SYNC_INTERVAL_HOURS-এর মাধ্যমে কনফিগারযোগ্য)", + "autoSyncEnabled": "স্বয়ংক্রিয় সিঙ্ক চালু আছে — মডেলগুলো নির্দিষ্ট সময় পরপর রিফ্রেশ হবে", + "autoSyncDisabled": "স্বয়ংক্রিয় সিঙ্ক বন্ধ আছে", + "autoSyncToggleFailed": "স্বয়ংক্রিয় সিঙ্কের অবস্থা পরিবর্তন করা যায়নি", + "autoSyncPartialFailure": "কিছু সংযোগের জন্য স্বয়ংক্রিয় সিঙ্ক আপডেট হয়েছে, তবে সবগুলোর জন্য নয়", + "clearAllModels": "সব মডেল মুছুন", + "clearAllModelsConfirm": "আপনি কি নিশ্চিত যে এই প্রোভাইডারের সব মডেল সরাতে চান? এটি পূর্বাবস্থায় ফেরানো যাবে না।", + "clearAllModelsSuccess": "সব মডেল মুছে ফেলা হয়েছে", + "clearAllModelsFailed": "মডেলগুলো মুছতে ব্যর্থ হয়েছে", + "addConnectionToImport": "ইমপোর্ট সক্রিয় করতে একটি সংযোগ যোগ করুন।", + "noModelsConfigured": "কোনো মডেল কনফিগার করা নেই", + "connectionCount": "{count}টি সংযোগ", + "fetchingModels": "উপলভ্য মডেলগুলো আনা হচ্ছে...", + "failedFetchModels": "মডেলগুলো আনতে ব্যর্থ হয়েছে", "noFreeModelsFound": "এই প্রদানকারীর জন্য কোনো ফ্রি মডেল পাওয়া যায়নি — কিছুই ইম্পোর্ট করা হয়নি।", "fetchModelsSuccess": "{count} টি নতুন মডেল পাওয়া গেছে", "fetchModelsFailed": "মডেলগুলি স্বয়ংক্রিয়ভাবে আনা যায়নি (আপনি সেটিংস থেকে আবার চেষ্টা করতে পারেন)", - "noModelsFound": "No models found", - "importFailed": "Import failed", - "noNewModelsAdded": "No new models were added.", + "noModelsFound": "কোনো মডেল পাওয়া যায়নি", + "importFailed": "ইমপোর্ট ব্যর্থ হয়েছে", + "noNewModelsAdded": "কোনো নতুন মডেল যোগ করা হয়নি।", "adding": "Adding...", - "close": "Close", - "importingModelsTitle": "Importing Models", - "copyModel": "Copy model", - "filterModels": "Filter models...", + "close": "বন্ধ করুন", + "importingModelsTitle": "মডেল ইমপোর্ট করা হচ্ছে", + "copyModel": "মডেল কপি করুন", + "filterModels": "মডেল ফিল্টার করুন...", "testAllRateLimited": "রেট লিমিট শেষ হয়েছে, আগেই বন্ধ করা হয়েছে", "hideFailedAuto": "ব্যর্থ মডেলগুলি স্বয়ংক্রিয়ভাবে লুকান", - "selectAllModels": "Select all", + "selectAllModels": "সব নির্বাচন করুন", "hideAllModels": "সব লুকান", - "modelsActive": "Active", - "showModel": "Show model", - "hideModel": "Hide model", - "removeModel": "Remove model", - "rateLimitProtected": "Protected", - "rateLimitUnprotected": "Unprotected", + "modelsActive": "সক্রিয়", + "showModel": "মডেল দেখান", + "hideModel": "মডেল লুকান", + "removeModel": "মডেল সরান", + "rateLimitProtected": "সুরক্ষিত", + "rateLimitUnprotected": "অসুরক্ষিত", "providerQuotaShort": "কোটা", "hideConnectionFromProviderQuota": "প্রোভাইডার কোটা থেকে এই অ্যাকাউন্টটি লুকান", "showConnectionInProviderQuota": "প্রোভাইডার কোটাতে এই অ্যাকাউন্টটি দেখান", "quotaVisibilityUpdateFailed": "প্রোভাইডার কোটার দৃশ্যমানতা আপডেট করতে ব্যর্থ হয়েছে", - "enableRateLimitProtection": "Click to enable rate limit protection", - "disableRateLimitProtection": "Click to disable rate limit protection", + "enableRateLimitProtection": "রেট লিমিট সুরক্ষা সক্রিয় করতে ক্লিক করুন", + "disableRateLimitProtection": "রেট লিমিট সুরক্ষা নিষ্ক্রিয় করতে ক্লিক করুন", "testAllProgress": "পরীক্ষিত {done}/{total}", "testAllFailedHidden": "{count}টি ব্যর্থ মডেল লুকানো হয়েছে", "testAllDone": "সমস্ত মডেল পরীক্ষা করা হয়েছে", - "productionKey": "Production Key", - "enterNewApiKey": "Enter new API key", + "productionKey": "প্রোডাকশন কী", + "enterNewApiKey": "নতুন API কী লিখুন", "codexApplyModalTitle": "স্থানীয় কোডেক্সে আবেদন করুন", "codexApplyTargetLabel": "লক্ষ্য পথ", "codexApplyBackupLabel": "ব্যাকআপ", @@ -5386,77 +5389,77 @@ "bulkAddFormatHint": "প্রতি লাইনে একটি কী। বিন্যাস: নাম|apiKey বা শুধু apiKey (সূচী দ্বারা স্বয়ংক্রিয় নামকরণ)।", "bulkValidateKeys": "সংরক্ষণ করার আগে প্রতিটি কী যাচাই করুন (ধীরে)", "bulkAddAllKeys": "সমস্ত কী যোগ করুন", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", - "optional": "Optional", + "bulkAddedCount": "{count, plural, one {#টি কী যোগ করা হয়েছে} other {#টি কী যোগ করা হয়েছে}}", + "bulkFailedCount": "{count, plural, one {#টি ব্যর্থ হয়েছে} other {#টি ব্যর্থ হয়েছে}}", + "optional": "ঐচ্ছিক", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", "compatibleDefaultModelLabel": "ডিফল্ট মডেল", "compatibleDefaultModelHint": "মডেল আইডিটি ঠিক সেভাবেই লিখুন যেভাবে আপনার সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট এটি আশা করে। এই মডেলটি সংযোগের ডিফল্ট হিসেবে সংরক্ষিত হবে।", - "failedImportModels": "Failed to import models", - "noModelsReturnedFromEndpoint": "No models returned from /models endpoint.", - "importingModelsProgress": "Importing {current} of {total} models...", - "foundModelsStartingImport": "Found {count} models. Starting import...", - "importingModelById": "Importing {modelId}...", - "importSuccessCount": "Successfully imported {count, plural, one {# model} other {# models}}!", - "noNewModelsAddedExisting": "No new models were added (all already exist).", - "importDoneCount": "✓ Done! {count, plural, one {# model imported.} other {# models imported.}}", - "unexpectedErrorOccurred": "An unexpected error occurred", + "failedImportModels": "মডেল ইমপোর্ট করতে ব্যর্থ হয়েছে", + "noModelsReturnedFromEndpoint": "/models endpoint থেকে কোনো মডেল ফেরত আসেনি।", + "importingModelsProgress": "{total}টি মডেলের মধ্যে {current}টি ইমপোর্ট করা হচ্ছে...", + "foundModelsStartingImport": "{count}টি মডেল পাওয়া গেছে। ইমপোর্ট শুরু হচ্ছে...", + "importingModelById": "{modelId} ইমপোর্ট করা হচ্ছে...", + "importSuccessCount": "সফলভাবে {count, plural, one {#টি মডেল} other {#টি মডেল}} ইমপোর্ট করা হয়েছে!", + "noNewModelsAddedExisting": "কোনো নতুন মডেল যোগ করা হয়নি (সবগুলো ইতিমধ্যেই বিদ্যমান)।", + "importDoneCount": "✓ সম্পন্ন! {count, plural, one {#টি মডেল ইমপোর্ট করা হয়েছে।} other {#টি মডেল ইমপোর্ট করা হয়েছে।}}", + "unexpectedErrorOccurred": "একটি অপ্রত্যাশিত ত্রুটি ঘটেছে", "getApiKey": "এপিআই কী পান", "getApiKeyDescription": "একটি API কী-এর জন্য নিবন্ধন করুন বা সাইন আপ করুন", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {#টি সংযোগ} other {#টি সংযোগ}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", - "add": "Add", - "edit": "Edit", - "delete": "Delete", + "add": "যোগ করুন", + "edit": "সম্পাদনা করুন", + "delete": "মুছুন", "anthropic": "Anthropic", "openai": "OpenAI", - "singleConnectionPerCompatible": "Only one connection is allowed per compatible node. Add another node if you need more connections.", - "connections": "Connections", - "providerProxyTitleConfigured": "Provider proxy: {host}", - "configured": "configured", - "providerProxyConfigureHint": "Configure proxy for all connections of this provider", - "providerProxy": "Provider Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", - "noConnectionsYet": "No connections yet", - "addFirstConnectionHint": "Add your first connection to get started", - "addConnection": "Add Connection", - "availableModels": "Available Models", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", - "pageAutoRefresh": "Page will refresh automatically...", - "statusDisabled": "disabled", - "statusConnected": "connected", - "statusRuntimeIssue": "runtime issue", - "statusAuthFailed": "auth failed", - "statusRateLimited": "rate limited", - "statusNetworkIssue": "network issue", - "statusTestUnsupported": "test unsupported", - "statusUnavailable": "unavailable", - "statusFailed": "failed", - "statusError": "error", - "oauthAccount": "OAuth Account", - "errorTypeRuntime": "Local runtime", - "errorTypeUpstreamAuth": "Upstream auth", - "errorTypeMissingCredential": "Missing credential", - "errorTypeRefreshFailed": "Refresh failed", - "errorTypeTokenExpired": "Token expired", - "errorTypeRateLimited": "Rate limited", - "errorTypeUpstreamUnavailable": "Upstream unavailable", - "errorTypeNetworkError": "Network error", - "errorTypeTestUnsupported": "Test unsupported", - "errorTypeUpstreamError": "Upstream error", + "singleConnectionPerCompatible": "প্রতিটি সামঞ্জস্যপূর্ণ নোডে শুধুমাত্র একটি সংযোগ অনুমোদিত। আরও সংযোগের প্রয়োজন হলে আরেকটি নোড যোগ করুন।", + "connections": "সংযোগসমূহ", + "providerProxyTitleConfigured": "প্রোভাইডার প্রক্সি: {host}", + "configured": "কনফিগার করা হয়েছে", + "providerProxyConfigureHint": "এই প্রোভাইডারের সব সংযোগের জন্য প্রক্সি কনফিগার করুন", + "providerProxy": "প্রোভাইডার প্রক্সি", + "repairEnv": ".env মেরামত করুন", + "repairEnvWorking": "মেরামত করা হচ্ছে...", + "repairEnvHint": "বিদ্যমান মান ওভাররাইট না করে অনুপস্থিত OAuth ডিফল্টগুলো .env-এ পুনরুদ্ধার করুন।", + "repairEnvSuccess": "OAuth ডিফল্টগুলো পুনরুদ্ধার করা হয়েছে", + "repairEnvFailed": ".env মেরামত করা যায়নি", + "noConnectionsYet": "এখনও কোনো সংযোগ নেই", + "addFirstConnectionHint": "শুরু করতে আপনার প্রথম সংযোগটি যোগ করুন", + "addConnection": "সংযোগ যোগ করুন", + "availableModels": "উপলভ্য মডেলসমূহ", + "builtInModels": "বিল্ট-ইন মডেলসমূহ", + "builtInModelsHint": "এই প্রোভাইডারের জন্য রেজিস্ট্রি মডেলসমূহ। সামঞ্জস্যতার বিকল্প নির্ধারণ করতে পেন্সিল আইকনটি ব্যবহার করুন।", + "pageAutoRefresh": "পৃষ্ঠা স্বয়ংক্রিয়ভাবে রিফ্রেশ হবে...", + "statusDisabled": "নিষ্ক্রিয়", + "statusConnected": "সংযুক্ত", + "statusRuntimeIssue": "রানটাইম সমস্যা", + "statusAuthFailed": "প্রমাণীকরণ ব্যর্থ হয়েছে", + "statusRateLimited": "রেট সীমিত", + "statusNetworkIssue": "নেটওয়ার্ক সমস্যা", + "statusTestUnsupported": "পরীক্ষা সমর্থিত নয়", + "statusUnavailable": "অনুপলভ্য", + "statusFailed": "ব্যর্থ", + "statusError": "ত্রুটি", + "oauthAccount": "OAuth অ্যাকাউন্ট", + "errorTypeRuntime": "লোকাল রানটাইম", + "errorTypeUpstreamAuth": "আপস্ট্রিম প্রমাণীকরণ", + "errorTypeMissingCredential": "ক্রেডেনশিয়াল অনুপস্থিত", + "errorTypeRefreshFailed": "রিফ্রেশ ব্যর্থ হয়েছে", + "errorTypeTokenExpired": "টোকেনের মেয়াদ শেষ হয়েছে", + "errorTypeRateLimited": "রেট সীমিত", + "errorTypeUpstreamUnavailable": "আপস্ট্রিম অনুপলভ্য", + "errorTypeNetworkError": "নেটওয়ার্ক ত্রুটি", + "errorTypeTestUnsupported": "পরীক্ষা সমর্থিত নয়", + "errorTypeUpstreamError": "আপস্ট্রিম ত্রুটি", "errorTypeCreditsExhausted": "কোনো ক্রেডিট নেই", "errorTypeBanned": "403 নিষিদ্ধ", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", - "proxySourceKey": "Key", + "proxySourceGlobal": "গ্লোবাল", + "proxySourceProvider": "প্রোভাইডার", + "proxySourceKey": "কী", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "প্রক্সি চালু", "proxyOff": "সরাসরি (প্রক্সি বাইপাস)", @@ -5468,31 +5471,31 @@ "perKeyProxyDisabledTitle": "এই প্রোভাইডারের জন্য প্রতি-কী প্রক্সি অ্যাসাইনমেন্ট নিষ্ক্রিয় করা হয়েছে", "autoPriority": "Auto: {priority}", "proxy": "Proxy", - "retestAuthentication": "Retest authentication", - "retest": "Retest", - "disableConnection": "Disable connection", - "enableConnection": "Enable connection", - "reauthenticateConnection": "Re-authenticate this connection", - "proxyConfig": "Proxy config", - "aliasExistsAlert": "Alias \"{alias}\" already exists. Please use a different model or edit existing alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter supports any model. Add models and create aliases for quick access.", - "modelIdFromOpenRouter": "Model ID (from OpenRouter)", + "retestAuthentication": "প্রমাণীকরণ পুনরায় পরীক্ষা করুন", + "retest": "পুনরায় পরীক্ষা করুন", + "disableConnection": "সংযোগ নিষ্ক্রিয় করুন", + "enableConnection": "সংযোগ সক্রিয় করুন", + "reauthenticateConnection": "এই সংযোগটি পুনরায় প্রমাণীকরণ করুন", + "proxyConfig": "প্রক্সি কনফিগারেশন", + "aliasExistsAlert": "\"{alias}\" উপনামটি ইতিমধ্যে বিদ্যমান। অনুগ্রহ করে অন্য একটি মডেল ব্যবহার করুন অথবা বিদ্যমান উপনামটি সম্পাদনা করুন।", + "aliasInputPlaceholder": "উপনামের নাম", + "clickToSetAlias": "উপনাম সেট করতে ক্লিক করুন", + "clickToEditAlias": "উপনাম: {alias} (সম্পাদনা করতে ক্লিক করুন)", + "openRouterAnyModelHint": "OpenRouter যেকোনো মডেল সমর্থন করে। দ্রুত অ্যাক্সেসের জন্য মডেল যোগ করুন এবং উপনাম তৈরি করুন।", + "modelIdFromOpenRouter": "মডেল আইডি (OpenRouter থেকে)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", - "customModels": "Custom Models", - "customModelsHint": "Add model IDs not in the default list. These will be available for routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "customModels": "কাস্টম মডেল", + "customModelsHint": "ডিফল্ট তালিকায় নেই এমন মডেল আইডি যোগ করুন। এগুলো রাউটিংয়ের জন্য উপলভ্য হবে।", + "normalizeToolCallIdLabel": "টুল কল আইডিগুলোকে ৯ অক্ষরে স্বাভাবিক করুন (যেমন Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responses-এর developer ভূমিকা বজায় রাখুন (system-এ ম্যাপ করবেন না)", + "compatAdjustmentsTitle": "সামঞ্জস্যতা", + "compatButtonLabel": "সামঞ্জস্যতা", + "compatToolIdShort": "টুল আইডি ৯", + "compatDeveloperShort": "Developer ভূমিকা", + "compatDoNotPreserveDeveloper": "Developer ভূমিকা সংরক্ষণ করবেন না", + "compatBadgeNoPreserve": "সংরক্ষণ নয়", + "compatProtocolLabel": "ক্লায়েন্ট অনুরোধ প্রোটোকল", + "compatProtocolHint": "OmniRoute যখন এই অনুরোধের ধরন শনাক্ত করে (OpenAI Chat, Responses API অথবা Anthropic Messages), তখন এই বিকল্পগুলো প্রযোজ্য হয়।", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,84 +5537,84 @@ "interceptFetchHint": "নেটিভ web_fetch টুল কলগুলিকে OmniRoute-এর /v1/web/fetch-এ রিরাইট করুন।", "interceptionLoadError": "ইন্টারসেপশন সেটিংস লোড করতে ব্যর্থ হয়েছে: {error}", "interceptionSaveError": "ইন্টারসেপশন সেটিংস সংরক্ষণ করতে ব্যর্থ হয়েছে: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", - "perModelQuotaLabel": "Per-Model Quota", - "perModelQuotaDescription": "When enabled, 429/404 errors only lock the specific model, not the entire connection. Use for providers with per-model rate limits (e.g., ModelScope).", + "ccAliasSectionTitle": "Claude Code-এ প্রকাশ করুন (claude/…)", + "ccAliasSectionHint": "এই প্রোভাইডারের মডেলগুলোকে claude/<provider>/<model> মিরর আইডির অধীনে প্রচার করুন, যাতে Claude Code-এর গেটওয়ে মডেল অনুসন্ধান সেগুলো তালিকাভুক্ত করতে পারে। ডিফল্টভাবে বন্ধ — এটি সক্রিয় করলে সব ক্লায়েন্টের জন্য ক্যাটালগ এন্ট্রির সংখ্যা দ্বিগুণ হয়।", + "ccAliasProviderLevelLabel": "প্রোভাইডারের ডিফল্ট", + "ccAliasModelOverridesLabel": "প্রতি-মডেল ওভাররাইড", + "ccAliasModelOverrideAriaLabel": "{modelId}-এর জন্য ওভাররাইড", + "ccAliasStateInherit": "উত্তরাধিকারসূত্রে নিন", + "ccAliasStateOn": "চালু", + "ccAliasStateOff": "বন্ধ", + "ccAliasAddModelPlaceholder": "মডেল আইডি (যেমন gpt-4o)", + "ccAliasAddModelButton": "ওভাররাইড যোগ করুন", + "ccAliasLoadError": "ডিসকভারি-অ্যালিয়াস সেটিংস লোড করতে ব্যর্থ হয়েছে: {error}", + "ccAliasSaveError": "ডিসকভারি-অ্যালিয়াস সেটিং সংরক্ষণ করতে ব্যর্থ হয়েছে: {error}", + "compatUpstreamHeadersLabel": "অতিরিক্ত আপস্ট্রিম হেডার", + "compatUpstreamHeadersHint": "উচ্চ-অধিকারসম্পন্ন সেটিং — প্রোভাইডারের API ক্রেডেনশিয়াল সম্পাদনার সমান আস্থার স্তর; কেবল বিশ্বস্ত অ্যাডমিনদের এটি ব্যবহার করা উচিত। প্রোভাইডারের API কী থেকে OmniRoute প্রমাণীকরণ যোগ করার পর এটি মার্জ করা হয়। কোনো কাস্টম হেডারের নাম বিদ্যমান কোনো হেডারের নামের সঙ্গে একই হলে (যেমন Authorization), আপনার মানটি স্বয়ংক্রিয়ভাবে তৈরি হেডারকে সম্পূর্ণরূপে প্রতিস্থাপন করে (Bearer টোকেনসহ) — আপস্ট্রিম কেবল আপনার টাইপ করা মানটিই দেখে, সেটিংসের কীটি নয়। ভুল কনফিগারেশনের কারণে 401 বা আপস্ট্রিম প্রমাণীকরণে সমস্যা হতে পারে। প্রতি হেডারে একটি সারি (যেমন কিছু গেটওয়ের জন্য অতিরিক্ত Authentication)। প্রিভিউ দেখতে মানটির ওপর হোভার বা ফোকাস করুন। ফোকাস সরে গেলে, বাইরে ক্লিক করলে বা এই প্যানেল বন্ধ করলে সংরক্ষিত হয়।", + "compatUpstreamHeaderName": "হেডারের নাম", + "compatUpstreamHeaderValue": "মান", + "compatUpstreamAddRow": "হেডার যোগ করুন", + "compatUpstreamRemoveRow": "সারি সরান", + "compatBadgeUpstreamHeaders": "হেডারসমূহ", + "perModelQuotaLabel": "প্রতি-মডেল কোটা", + "perModelQuotaDescription": "সক্রিয় থাকলে, 429/404 ত্রুটি কেবল নির্দিষ্ট মডেলটিকে লক করে, পুরো সংযোগটিকে নয়। প্রতি-মডেল রেট লিমিট থাকা প্রোভাইডারদের জন্য ব্যবহার করুন (যেমন ModelScope)।", "importFreeModelsOnlyLabel": "শুধুমাত্র ফ্রি মডেলগুলি ইম্পোর্ট করুন", "importFreeModelsOnlyHint": "এটি সক্রিয় থাকলে, শুধুমাত্র এই প্রোভাইডারের ফ্রি মডেলগুলি ইম্পোর্ট করা হয়। পেইড মডেলগুলি এড়িয়ে যাওয়া হয়।", - "perModelQuotaToggle": "Per-Model Quota Toggle", - "modelId": "Model ID", - "customModelPlaceholder": "e.g. gpt-4.5-turbo", - "loading": "Loading...", - "removeCustomModel": "Remove custom model", - "noCustomModels": "No custom models added yet.", - "allSuggestedAliasesExist": "All suggested aliases already exist. Please choose a different model or remove conflicting aliases.", - "failedSaveCustomModel": "Failed to save custom model", - "modelAddedSuccess": "Model {modelId} added successfully", - "failedAddModelTryAgain": "Failed to add model. Please try again.", - "failedSaveImportedModel": "Failed to save imported model to custom database", - "failedImportModelsTryAgain": "Failed to import models. Please try again.", - "failedRemoveModelFromDatabase": "Failed to remove model from database", - "modelRemovedSuccess": "Model removed successfully", - "failedDeleteModelTryAgain": "Failed to delete model. Please try again.", - "compatibleModelsDescription": "Add {type}-compatible models manually or import them from the /models endpoint.", + "perModelQuotaToggle": "প্রতি-মডেল কোটা টগল", + "modelId": "মডেল আইডি", + "customModelPlaceholder": "যেমন gpt-4.5-turbo", + "loading": "লোড হচ্ছে...", + "removeCustomModel": "কাস্টম মডেল সরান", + "noCustomModels": "এখনও কোনো কাস্টম মডেল যোগ করা হয়নি।", + "allSuggestedAliasesExist": "প্রস্তাবিত সব অ্যালিয়াস ইতিমধ্যেই বিদ্যমান। অনুগ্রহ করে অন্য একটি মডেল বেছে নিন অথবা পরস্পরবিরোধী অ্যালিয়াসগুলো সরান।", + "failedSaveCustomModel": "কাস্টম মডেল সংরক্ষণ করতে ব্যর্থ হয়েছে", + "modelAddedSuccess": "মডেল {modelId} সফলভাবে যোগ করা হয়েছে", + "failedAddModelTryAgain": "মডেল যোগ করতে ব্যর্থ হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।", + "failedSaveImportedModel": "ইমপোর্ট করা মডেলটি কাস্টম ডেটাবেসে সংরক্ষণ করতে ব্যর্থ হয়েছে", + "failedImportModelsTryAgain": "মডেল ইমপোর্ট করতে ব্যর্থ হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।", + "failedRemoveModelFromDatabase": "ডেটাবেস থেকে মডেল সরাতে ব্যর্থ হয়েছে", + "modelRemovedSuccess": "মডেল সফলভাবে সরানো হয়েছে", + "failedDeleteModelTryAgain": "মডেল মুছতে ব্যর্থ হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।", + "compatibleModelsDescription": "{type}-সামঞ্জস্যপূর্ণ মডেল ম্যানুয়ালি যোগ করুন অথবা /models এন্ডপয়েন্ট থেকে ইমপোর্ট করুন।", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API key validation failed. Please check your key and try again.", - "addProviderApiKeyTitle": "Add {provider} API Key", - "checking": "Checking...", - "check": "Check", - "valid": "Valid", - "invalid": "Invalid", - "creating": "Creating...", - "validationChecksAnthropicCompatible": "Validation checks {provider} by verifying the API key.", - "validationChecksOpenAiCompatible": "Validation checks {provider} via /models on your base URL.", - "priorityLabel": "Priority", - "saving": "Saving...", - "save": "Save", - "editConnection": "Edit Connection", - "accountName": "Account name", + "apiKeyValidationFailed": "API কী যাচাই ব্যর্থ হয়েছে। অনুগ্রহ করে আপনার কী পরীক্ষা করে আবার চেষ্টা করুন।", + "addProviderApiKeyTitle": "{provider} API কী যোগ করুন", + "checking": "পরীক্ষা করা হচ্ছে...", + "check": "পরীক্ষা করুন", + "valid": "বৈধ", + "invalid": "অবৈধ", + "creating": "তৈরি করা হচ্ছে...", + "validationChecksAnthropicCompatible": "যাচাইকরণ API কী পরীক্ষা করে {provider} যাচাই করে।", + "validationChecksOpenAiCompatible": "যাচাইকরণ আপনার বেস URL-এর /models-এর মাধ্যমে {provider} যাচাই করে।", + "priorityLabel": "অগ্রাধিকার", + "saving": "সংরক্ষণ করা হচ্ছে...", + "save": "সংরক্ষণ করুন", + "editConnection": "সংযোগ সম্পাদনা করুন", + "accountName": "অ্যাকাউন্টের নাম", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "স্বাস্থ্য পরীক্ষা (মিনিট)", "healthCheckHint": "Proactive token refresh interval. 0 = disabled.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", - "failedTestConnection": "Failed to test connection", - "failed": "Failed", - "leaveBlankKeepCurrentApiKey": "Leave blank to keep the current API key.", - "editCompatibleTitle": "Edit {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", - "apiKeyForCheck": "API Key (for Check)", + "deselectAllModels": "সব নির্বাচন বাতিল করুন", + "modelsActiveCount": "{active}/{total} সক্রিয়", + "noModelsMatch": "\"{filter}\"-এর সঙ্গে কোনো মডেল মেলেনি", + "groupLabel": "পরিবেশ", + "groupPlaceholder": "যেমন eKaizen, ব্যক্তিগত", + "failedTestConnection": "সংযোগ পরীক্ষা করা যায়নি", + "failed": "ব্যর্থ", + "leaveBlankKeepCurrentApiKey": "বর্তমান API কী রাখতে ফাঁকা রাখুন।", + "editCompatibleTitle": "{type} সামঞ্জস্যপূর্ণ সম্পাদনা করুন", + "compatibleBaseUrlHint": "আপনার {type}-সামঞ্জস্যপূর্ণ API-এর রুট URL। কাস্টম এন্ডপয়েন্ট পাথের জন্য উন্নত সেটিংস ব্যবহার করুন।", + "apiKeyForCheck": "API কী (পরীক্ষার জন্য)", "testModelIdLabel": "মডেল আইডি (ঐচ্ছিক)", "testModelIdPlaceholder": "যেমন: my-model-id", "testModelIdHint": "প্রোভাইডারের যদি কোনো /models এন্ডপয়েন্ট না থাকে, তবে পরিবর্তে /chat/completions-এর মাধ্যমে যাচাই করতে একটি মডেল আইডি লিখুন।", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "{type} সামঞ্জস্যপূর্ণ (প্রোডাকশন)", + "tokenRefreshed": "টোকেন সফলভাবে রিফ্রেশ করা হয়েছে", + "tokenRefreshFailed": "টোকেন রিফ্রেশ ব্যর্থ হয়েছে", "cursorSessionUnchanged": "সেশন ইতিমধ্যে বর্তমান", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "প্রমাণীকরণ প্রয়োগ করুন", + "exportCodexAuthFile": "প্রমাণীকরণ এক্সপোর্ট করুন", "applyClaudeAuthLocal": "প্রমাণীকরণ প্রয়োগ করুন", "exportClaudeAuthFile": "রপ্তানি অনুমোদন", "importClaudeAuth": "আমদানি অনুমোদন", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} ব্যর্থ হয়েছে৷", "codexImportBulkZipExtracting": "জিপ বের করা হচ্ছে...", "codexImportBulkZipError": "ZIP এক্সট্র্যাক্ট করা যায়নি", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "উন্নত সেটিংস", + "chatPathLabel": "চ্যাট এন্ডপয়েন্ট পাথ", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "অ-মানক API-সহ প্রদানকারীদের জন্য কাস্টম চ্যাট পাথ (যেমন /v4/chat/completions)", + "modelsPathLabel": "মডেল এন্ডপয়েন্ট পাথ", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "যাচাইকরণের জন্য কাস্টম মডেল পাথ (যেমন /v4/models)", "clientIdentityLabel": "ক্লায়েন্ট আইডেন্টিটি", "clientIdentityHint": "ঐচ্ছিক। সামঞ্জস্যপূর্ণ গেটওয়ে যা এটি আশা করে তার জন্য একটি পরিচিত CLI-এর সাথে সামঞ্জস্যপূর্ণ ক্লায়েন্ট ফিঙ্গারপ্রিন্ট হেডার (যেমন User-Agent) যোগ করে।", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "নিষ্ক্রিয় করা হয়েছে (ম্যানুয়াল)", + "statusBanned": "নিষিদ্ধ / স্যান্ডবক্স নীতি লঙ্ঘন", + "statusCreditsExhausted": "অপর্যাপ্ত ব্যালেন্স / কোটা শেষ", + "showEmails": "সব ইমেল দেখান", + "hideEmails": "সব ইমেল লুকান", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "আরেকটি API কী যোগ করুন অথবা একাধিক কী পেস্ট করুন", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "অ্যাগ্রিগেটর গেটওয়ে", "enterpriseCloud": "এন্টারপ্রাইজ এবং ক্লাউড", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API ফরম্যাট লেবেল", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API অঞ্চল চীন", + "apiRegionHint": "API অঞ্চলসংক্রান্ত ইঙ্গিত", + "apiRegionInternational": "API অঞ্চল আন্তর্জাতিক", + "apiRegionLabel": "API অঞ্চল লেবেল", + "apikey": "API কী", + "audio": "অডিও", + "audioProvidersHeading": "অডিও প্রদানকারীর শিরোনাম", "cloudAgentProviders": "ক্লাউড এজেন্ট প্রদানকারী", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "অডিওর সংক্ষিপ্ত লেবেল", + "azureOpenAiBaseUrlHint": "Azure Open Ai বেস URL-এর ইঙ্গিত", + "bailianBaseUrlHint": "Bailian বেস URL-এর ইঙ্গিত", + "claudeWebCookieHint": "claude.ai খুলুন → DevTools → Application → Cookies → claude.ai-এ যান এবং 'sessionKey' মানটি কপি করুন। Cloudflare-এর জন্য cf_clearance, __cf_bm, _cfuvid-ও প্রয়োজন।", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web কুকির ইঙ্গিত", + "blackboxWebCookiePlaceholder": "Blackbox Web কুকির স্থানধারক", "t3ChatWebCookieHint": "t3.chat → DevTools → Application → Local Storage → https://t3.chat খুলুন, 'convex-session-id' কপি করুন। তারপর DevTools → Network খুলুন, যেকোনো চ্যাট অনুরোধ থেকে সম্পূর্ণ কুকি হেডারটি কপি করুন। নীচের ক্ষেত্রগুলিতে উভয় মান আটকান।", "t3ChatWebCookiePlaceholder": "উত্তল-সেশন-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web কুকির ইঙ্গিত", "blockClaudeExtraUsageDescription": "যখন সক্ষম করা হয়, OmniRoute এই Claude সংযোগটিকে অপ্রাপ্য হিসাবে চিহ্নিত করে যত তাড়াতাড়ি ব্যবহারের API কিউড অতিরিক্ত ব্যবহারের রিপোর্ট করে, তাই ফ fallback অন্য সংযোগে পরিবর্তিত হয় পরিবর্তে পে-এজ-ইউ-গো অতিরিক্ত বিলিং চালিয়ে যাওয়ার।", "blockClaudeExtraUsageLabel": "অতিরিক্ত Claude ব্যবহার ব্লক করুন", "disableCoolingDescription": "অস্থায়ী কুলডাউন এড়িয়ে যান যাতে পুনরুদ্ধারযোগ্য ত্রুটির পরেও এই সংযোগটি যোগ্য থাকে (নিষিদ্ধ/মেয়াদোত্তীর্ণের মতো টার্মিনাল অবস্থাগুলি এখনও প্রযোজ্য)।", "disableCoolingLabel": "এই সংযোগের জন্য কুলডাউন নিষ্ক্রিয় করুন", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {১টি কী যোগ করা হয়েছে} other {#টি কী যোগ করা হয়েছে}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {১টি সদৃশ বাদ দেওয়া হয়েছে} other {#টি সদৃশ বাদ দেওয়া হয়েছে}}", + "bulkPasteHint": "প্রতি লাইনে একটি করে API কী পেস্ট করুন। ফাঁকা লাইন উপেক্ষা করা হবে এবং সদৃশ কীগুলো বাদ দেওয়া হবে।", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "যেসব CC Compatible আপস্ট্রিমে Claude-এর চিন্তন স্ট্রিম গোপন রাখা আবশ্যক, সেগুলোর জন্য redact-thinking বিটা হেডার যোগ করে।", + "ccCompatibleRedactThinkingLabel": "redact-thinking বিটা সক্রিয় করুন", + "ccCompatibleSummarizeThinkingDescription": "CC Compatible চিন্তন অনুরোধে `display: \"summarized\"` যোগ করে, যাতে সমর্থিত Claude মডেলগুলো দৃশ্যমান চিন্তন ডেল্টা স্ট্রিম করে।", + "ccCompatibleSummarizeThinkingLabel": "সংক্ষিপ্ত চিন্তন প্রদর্শন সক্রিয় করুন", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "উপলভ্য থাকলে Codex অনুরোধের জন্য অগ্রাধিকারমূলক সার্ভিস টিয়ার ব্যবহার করুন।", + "codexFastServiceTierLabel": "Codex দ্রুত সার্ভিস টিয়ার", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Compat আপস্ট্রিম হেডার নামের স্থানধারক", + "compatUpstreamHeaderValuePlaceholder": "Compat আপস্ট্রিম হেডার মানের স্থানধারক", + "compatible": "সামঞ্জস্যপূর্ণ", + "configuredCount": "কনফিগার করা সংখ্যা", + "consoleApiKeyOracleHint": "কনসোল API কী Oracle-এর ইঙ্গিত", + "consoleApiKeyOracleLabel": "কনসোল API কী Oracle-এর লেবেল", + "consoleApiKeyOraclePlaceholder": "কনসোল API কী Oracle-এর স্থানধারক", + "newApiUserIdLabel": "New-API ব্যবহারকারী ID", + "newApiUserIdPlaceholder": "যেমন 12345", + "newApiUserIdHint": "AgentRouter New-Api-User হেডারের মান, যা কোটার ব্যালেন্স আনতে কনসোল API কী-এর সঙ্গে ব্যবহৃত হয়।", "newApiAggregatorToggleLabel": "এগ্রিগেটর গেটওয়ে", "newApiAggregatorToggleHint": "নতুন-এপিআই / ওয়ান-এপিআই / সাব2এপিআই অ্যাগ্রিগেটর নোডগুলির জন্য ব্যালেন্স সনাক্তকরণ সক্ষম করুন। ড্যাশবোর্ড ব্যালেন্স ব্যাজ দেখাবে এবং কোটা-পূর্ব ফ্লাইট রাউটিং ক্লান্ত অ্যাকাউন্টগুলি বাদ দেবে।", "newApiAggregatorConsoleApiKeyHint": "এগ্রিগেটরের /api/user/self এন্ডপয়েন্টের জন্য সিস্টেম অ্যাক্সেস টোকেন। রাউটিং API কী নয়।", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "নতুন-এপিআই / ওয়ান-এপিআই / সাব2এপিআই অ্যাগ্রিগেটর সামঞ্জস্যপূর্ণ নোডগুলির জন্য ব্যালেন্স শনাক্তকরণ সক্ষম করুন", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "কাস্টম User Agent-এর ইঙ্গিত", + "customUserAgentLabel": "কাস্টম User Agent-এর লেবেল", + "databricksBaseUrlHint": "Databricks বেস URL-এর ইঙ্গিত", + "defaultThinkingStrengthHint": "কোনো অনুরোধে reasoning effort নির্দিষ্ট করা না থাকলে এটি ব্যবহৃত হয়।", + "defaultThinkingStrengthLabel": "ডিফল্ট চিন্তন শক্তি", + "deleteAllExtraApiKeys": "সব মুছুন", + "excludedModelsHint": "বাদ দেওয়া মডেলগুলোর ইঙ্গিত", + "excludedModelsLabel": "বাদ দেওয়া মডেলগুলোর লেবেল", + "excludedModelsPlaceholder": "বাদ দেওয়া মডেলগুলোর স্থানধারক", + "expirationBannerExpired": "মেয়াদোত্তীর্ণ ব্যানার", + "expirationBannerExpiredDesc": "মেয়াদোত্তীর্ণ ব্যানারের বিবরণ", + "expirationBannerExpiringSoon": "শিগগিরই মেয়াদ শেষ হওয়ার ব্যানার", + "expirationBannerExpiringSoonDesc": "মেয়াদ শেষ হওয়ার ব্যানারের শিগগিরই মেয়াদ শেষ হওয়ার বিবরণ", + "extraApiKeyMasked": "কী {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "অতিরিক্ত API কীগুলোর ইঙ্গিত", + "extraApiKeysLabel": "অতিরিক্ত API কীগুলোর লেবেল", + "apiKeyHealthLabel": "API কী-এর অবস্থা", + "apiKeyStatusActive": "সক্রিয়", + "apiKeyStatusWarning": "সতর্কতা ({count}টি ব্যর্থতা)", + "apiKeyStatusInvalid": "অবৈধ", + "primaryKey": "প্রাথমিক কী", + "apiKeyInvalidAlert": "সংযোগগুলোতে প্রমাণীকরণ ব্যর্থতার কারণে {count}টি API কী অবৈধ হিসেবে চিহ্নিত হয়েছে: {connections}। রোটেশনের সময় এগুলো এড়িয়ে যাওয়া হবে। পর্যালোচনা করতে ক্লিক করুন।", + "apiKeyInvalidAlertTitle": "API কী-এর অবস্থা-সংক্রান্ত সতর্কতা", + "apiKeyWarningAlert": "সংযোগগুলোতে ব্যর্থতার হার বেড়ে যাওয়ার কারণে {count}টি API কী সতর্কতা অবস্থায় রয়েছে: {connections}। রোটেশন-সংক্রান্ত সমস্যা এড়াতে পর্যালোচনা করুন।", + "apiKeyWarningAlertTitle": "API কী সতর্কতা", + "googlePseInfo": "Google PSE-এর তথ্য", "antigravityProjectIdHint": "অ্যান্টিগ্র্যাভিটি ক্লাউড কোড অনুরোধের জন্য ঐচ্ছিক ওভাররাইড। Google OAuth সময় আবিষ্কৃত প্রকল্প ব্যবহার করতে ফাঁকা ছেড়ে দিন।", "antigravityClientProfileLabel": "ক্লায়েন্ট প্রোফাইল", "antigravityClientProfileHint": "OmniRoute কোন Antigravity ক্লায়েন্ট পরিচয় API-এর কাছে উপস্থাপন করবে তা চয়ন করুন।", @@ -5865,47 +5868,47 @@ "tierFast": "দ্রুত", "antigravityProjectIdLabel": "Google ক্লাউড প্রকল্প আইডি", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok ওয়েব কুকির প্লেসহোল্ডার", + "herokuBaseUrlHint": "Heroku বেস URL-এর ইঙ্গিত", + "hideEmail": "ইমেল লুকান", + "imageProviders": "ছবি প্রদানকারীরা", "videoProviders": "ভিডিও জেনারেশন", "embeddingRerankProviders": "এমবেডিং এবং রির্যাঙ্ক", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "ছবি", + "llmProviders": "LLM প্রদানকারীরা", + "localProviderApiKeyOptionalHint": "স্থানীয় প্রদানকারীর API কী ঐচ্ছিক হওয়ার ইঙ্গিত", + "localProviderBaseUrlHint": "স্থানীয় প্রদানকারীর বেস URL-এর ইঙ্গিত", + "localProviders": "স্থানীয় প্রদানকারীরা", + "maxConcurrentWholeNumberError": "সর্বোচ্চ সমসাময়িক মানটি অবশ্যই একটি পূর্ণসংখ্যা হতে হবে", "m365TierLabel": "Copilot টিয়ার", "m365TierHint": "এই সংযোগটি কোন Microsoft 365 Copilot সারফেস ব্যবহার করবে তা চয়ন করুন। Individual হলো ডিফল্ট কনজিউমার BizChat; Education এবং Enterprise (work) তাদের টেন্যান্ট সারফেসে অপ্ট-ইন করে।", "m365TierIndividualOption": "Individual (ডিফল্ট)", - "m365TierEduOption": "Education", - "m365TierEnterpriseOption": "Enterprise / Work", + "m365TierEduOption": "শিক্ষা", + "m365TierEnterpriseOption": "এন্টারপ্রাইজ / কর্মক্ষেত্র", "tierOverrideLabel": "টিয়ার ওভাররাইড", "tierOverrideAuto": "স্বয়ংক্রিয় (রাউটিং নির্ধারণ করে)", "tierOverrideFree": "ফ্রি", "tierOverrideCheap": "সস্তা", "tierOverridePremium": "প্রিমিয়াম", "tierOverrideHelpText": "মডেলের মূল্য নির্ধারণ থেকে OmniRoute-কে এটি অনুমান করতে দেওয়ার পরিবর্তে এই প্রদানকারীকে একটি রাউটিং টিয়ারে পিন করুন।", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark ওয়েব কুকির ইঙ্গিত", + "museSparkWebCookiePlaceholder": "Muse Spark ওয়েব কুকির প্লেসহোল্ডার", + "oauth": "OAuth", + "openCliTools": "CLI টুল খুলুন", + "openSettings": "সেটিংস খুলুন", + "openaiResponsesStoreDescription": "সামঞ্জস্যপূর্ণ Responses API অনুরোধগুলোকে সংরক্ষিত প্রতিক্রিয়ার অবস্থা বজায় রাখার অনুমতি দিন।", + "openaiResponsesStoreLabel": "OpenAI Responses স্টোর", + "perplexitySearchSharedKeyInfo": "Perplexity Search শেয়ার্ড কী-এর তথ্য", + "perplexityWebCookieHint": "Perplexity ওয়েব কুকির ইঙ্গিত", + "perplexityWebCookiePlaceholder": "Perplexity ওয়েব কুকির প্লেসহোল্ডার", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "রেট লিমিট ওভাররাইড", "rateLimitOverridesMaxConcurrentHint": "এই সংযোগের জন্য সর্বোচ্চ সমবর্তী অনুরোধের ওভাররাইড। অ্যাকাউন্ট-স্তরের সীমা ওভাররাইড করে।", "rateLimitOverridesMaxConcurrentLabel": "সর্বোচ্চ সমবর্তী (রেট লিমিট)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "ব্যর্থ হওয়ার আগে কোনো অনুরোধ রেট-লিমিট স্লটের জন্য সর্বোচ্চ যত সময় (ms) অপেক্ষা করতে পারে। এটি শুধু এই সংযোগের জন্য গ্লোবাল Resilience সেটিং ওভাররাইড করে।", + "rateLimitOverridesMaxWaitMsLabel": "সর্বোচ্চ কিউ অপেক্ষার সময় (ms)", "rateLimitOverridesMinTimeHint": "অনুরোধগুলোর মধ্যে ন্যূনতম সময় (ms)। ডিফল্ট রেট লিমিটারের বিলম্ব ওভাররাইড করে।", "rateLimitOverridesMinTimeLabel": "ন্যূনতম ব্যবধান (ms)", "rateLimitOverridesRpdHint": "এই সংযোগের জন্য প্রতিদিন সর্বাধিক অনুরোধ। প্রদানকারীর ডিফল্ট ওভাররাইড করে।", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (টোকেন/দিন)", "rateLimitOverridesTpmHint": "এই সংযোগের জন্য প্রতি মিনিটে সর্বোচ্চ টোকেন। প্রদানকারীর ডিফল্ট ওভাররাইড করে।", "rateLimitOverridesTpmLabel": "TPM (টোকেন/মিনিট)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", - "searchProviders": "Search Providers", + "refreshOauthTokenTitle": "Oauth টোকেন রিফ্রেশের শিরোনাম", + "regionHint": "অঞ্চলের ইঙ্গিত", + "regionLabel": "অঞ্চলের লেবেল", + "removeThisKey": "এই কীটি সরান", + "routingTagsHint": "রাউটিং ট্যাগের ইঙ্গিত", + "routingTagsLabel": "রাউটিং ট্যাগের লেবেল", + "routingTagsPlaceholder": "রাউটিং ট্যাগের স্থানধারক", + "search": "অনুসন্ধান", + "searchEngineIdHint": "সার্চ ইঞ্জিন আইডির ইঙ্গিত", + "searchEngineIdLabel": "সার্চ ইঞ্জিন আইডির লেবেল", + "searchEngineIdRequired": "সার্চ ইঞ্জিন আইডি আবশ্যক", + "searchProvider": "সার্চ প্রদানকারী", + "searchProviderDesc": "সার্চ প্রদানকারীর বিবরণ", + "searchProviders": "সার্চ প্রদানকারীরা", "searchByModel": "মডেল দিয়ে খুঁজুন…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "সার্চ প্রদানকারীদের শিরোনাম", + "searxngBaseUrlHint": "Searxng বেস URL-এর ইঙ্গিত", + "searxngInfo": "Searxng-এর তথ্য", + "sessionCookieLabel": "সেশন কুকির লেবেল", + "showEmail": "ইমেইল দেখান", + "snowflakeBaseUrlHint": "Snowflake বেস URL-এর ইঙ্গিত", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "ট্যাগ গ্রুপের ইঙ্গিত", + "tagGroupLabel": "ট্যাগ গ্রুপের লেবেল", + "tagGroupPlaceholder": "ট্যাগ গ্রুপের স্থানধারক", + "testModel": "মডেল পরীক্ষা করুন", + "testingModel": "মডেল পরীক্ষা করা হচ্ছে", "modelTestQuotaTooltip": "কোটার সীমা শেষ — আগামীকাল পুনরায় সেট হবে অথবা একটি টপ-আপ প্রয়োজন", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "টোকেনের মেয়াদ শেষ ব্যাজ", + "tokenExpiredTitle": "টোকেনের মেয়াদ শেষ শিরোনাম", + "tokenExpiresSoonTitle": "টোকেনের মেয়াদ শিগগিরই শেষ হবে শিরোনাম", + "tokenShort": "টোকেন", + "totalKeysRotating": "{count, plural, one {1টি কী পর্যায়ক্রমে ব্যবহৃত হচ্ছে} other {#টি কী পর্যায়ক্রমে ব্যবহৃত হচ্ছে}}", + "unhideModel": "মডেলটি আবার দেখান", + "upstreamProxyProviders": "আপস্ট্রিম প্রক্সি প্রদানকারীরা", "validationModelIdHint": "API কী যাচাই করতে ব্যবহৃত মডেল। প্রোভাইডারের প্রথম উপলব্ধ মডেল ব্যবহার করতে ফাঁকা রাখুন।", "validationModelIdLabel": "যাচাইকরণ মডেল", "validationModelIdPlaceholder": "যেমন: meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "আপনার Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) অথবা একটি OAuth access_token পেস্ট করুন", + "webCookieProviders": "ওয়েব কুকি প্রদানকারীরা", + "weeklyShort": "সাপ্তাহিক", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo বেস URL-এর ইঙ্গিত", "globalCodexServiceMode": "গ্লোবাল Codex সার্ভিস মোড", "connect": "সংযোগ করুন", "manualApiKey": "ম্যানুয়াল API কী", @@ -5975,9 +5978,9 @@ "zedImportDescription": "OS কীচেইনে Zed IDE দ্বারা সংরক্ষিত AI প্রোভাইডার ক্রেডেনশিয়াল (OpenAI, Anthropic, Google, Mistral, xAI) খুঁজুন এবং সেগুলিকে কানেকশন হিসেবে ইম্পোর্ট করুন। এই মেশিনে Zed IDE ইনস্টল করা থাকতে হবে।", "zedImportButton": "Zed থেকে আমদানি করুন", "zedImportFailed": "Zed আমদানি ব্যর্থ হয়েছে", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed ইমপোর্টের ইঙ্গিত", + "zedImportNetworkError": "Zed ইমপোর্টে নেটওয়ার্ক ত্রুটি", + "zedImportNone": "Zed ইমপোর্টে কিছুই নেই", "zedImportSuccess": "{providers} প্রদানকারীর জন্য Zed থেকে {credentials} শংসাপত্র(গুলি) আমদানি করা হয়েছে", "zedImporting": "আমদানি হচ্ছে…", "zedNoCredentials": "কীচেইনে কোনো Zed ক্রেডেনশিয়াল পাওয়া যায়নি", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5 সহ 40+ মডেলের জন্য ডিসকাউন্টেড API প্রক্সি। https://freeaiapikey.com/dashboard থেকে আপনার API কী পান। বেস URL: https://freeaiapikey.com/v1।", "freemodel-dev": "https://freemodel.dev থেকে $300 ফ্রি API ক্রেডিট পান — কোনো পেমেন্ট তথ্যের প্রয়োজন নেই। OpenAI-সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট। GPT-5.4 and GPT-5.5 মডেলগুলো উপলব্ধ।", "friendliai": "সার্ভারলেস ইনফারেন্সের জন্য ফ্রি টিয়ার — কোনো ক্রেডিট কার্ডের প্রয়োজন নেই", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio-এর মাধ্যমে বিনামূল্যের স্তর; প্রতি-মডেলের কোটা আর প্রকাশ করা হয় না (AI Studio-এর কোটা পৃষ্ঠাটি দেখুন) — কোনো ক্রেডিট কার্ডের প্রয়োজন নেই।", "gigachat": "একটি API কী দিয়ে GigaChat (Sber) কানেক্ট করুন।", "gitlab": "পাবলিক Code Suggestions API-এর জন্য GitLab পার্সোনাল অ্যাক্সেস টোকেন। gitlab.com ব্যবহার না করার সময় একটি সেলফ-হোস্টেড বেস URL কনফিগার করুন।", "gitlawb-gmi": "Gitlawb Opengateway ড্যাশবোর্ড থেকে আপনার API কী পান।", @@ -6184,7 +6187,7 @@ "glm-cn": "একটি API কী দিয়ে GLM Coding (China) কানেক্ট করুন।", "glmt": "উচ্চতর টোকেন বাজেট, থিংকিং সক্রিয় এবং দীর্ঘতর টাইমআউট সহ প্রিসেট GLM প্রোফাইল।", "getgoapi": "একটি API কী দিয়ে GoAPI কানেক্ট করুন।", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "ফ্রি প্ল্যান: প্রতি-মডেল সীমা (প্রতি চ্যাট মডেলে দৈনিক 200K টোকেন; RPM/RPD-এর জন্য console.groq.com/docs/rate-limits দেখুন) — কোনো পেমেন্ট মেথড সংরক্ষিত নেই।", "haiper": "haiper.ai/haiper-api থেকে API কী পান", "heroku": "একটি API কী দিয়ে Heroku AI কানেক্ট করুন।", "hcnsec": "api.hcnsec.cn-এ API কী পান", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.ai-এ একটি API কী তৈরি করুন, তারপর এটি এখানে Bearer টোকেন হিসেবে পেস্ট করুন। https://router.requesty.ai/v1-এ OpenAI-সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট, সাথে একটি লাইভ /v1/models ক্যাটালগ রয়েছে।", "runwayml": "Runway ভিডিও জেনারেশন টাস্ক-ভিত্তিক। OmniRoute টেক্সট-টু-ভিডিও বা ইমেজ-টু-ভিডিও জব সাবমিট করে, /v1/tasks/[id] পোল করে এবং সমাপ্ত ভিডিও আউটপুটগুলোকে আবার OpenAI-এর মতো /v1/videos/generations রেসপন্সে নরমালাইজ করে।", "sambanova": "সাইন আপ করার সময় $5 ফ্রি ক্রেডিট (৩০ দিনের মেয়াদ), কোনো ক্রেডিট কার্ডের প্রয়োজন নেই", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.cc-এ একটি API কী তৈরি করুন, তারপর Bearer টোকেন হিসেবে সেটি এখানে পেস্ট করুন। OpenAI-সামঞ্জস্যপূর্ণ বেস URL: https://seekai.cc/v1।", "sap": "মডেল ডিসকভারি AI_API_URL-এ /v2/lm/scenarios/foundation-models/models ব্যবহার করে। চ্যাট রিকোয়েস্টগুলো deploymentUrl/chat/completions ব্যবহার করে এবং এর জন্য AI-Resource-Group প্রয়োজন।", "sarvam": "Sarvam AI OpenAI-সঙ্গত /v1-এ। OmniRoute /v1/models-এ প্রোব করে এবং চ্যাট ট্রাফিককে /v1/chat/completions-এ রাউট করে। মডেলগুলি ইন্ডিক ভাষার জন্য টিউন করা হয়েছে।", "scaleway": "নতুন অ্যাকাউন্টের জন্য 1M ফ্রি টোকেন — EU/GDPR কমপ্লায়েন্ট (প্যারিস), Qwen3 235B এবং Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "বিদ্যমান OAuth ফ্লো দিয়ে Claude Code সংযুক্ত করুন।", "cline": "বিদ্যমান OAuth ফ্লো দিয়ে Cline সংযুক্ত করুন।", "cursor": "বিদ্যমান OAuth ফ্লো দিয়ে Cursor IDE সংযুক্ত করুন।", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "cursor.com/dashboard/api থেকে একটি ব্যবহারকারী API কী (crsr_...) দিয়ে Cursor সংযুক্ত করুন; কোনো IDE সেশনের প্রয়োজন নেই।", "github": "বিদ্যমান OAuth ফ্লো দিয়ে GitHub Copilot সংযুক্ত করুন।", "gitlab-duo": "ai_features + read_user স্কোপ সহ OAuth অ্যাপ্লিকেশন। এই OmniRoute ইনস্ট্যান্সে GITLAB_DUO_OAUTH_CLIENT_ID এবং ঐচ্ছিকভাবে GITLAB_DUO_OAUTH_CLIENT_SECRET কনফিগার করুন।", "kilocode": "বিদ্যমান OAuth ফ্লো দিয়ে Kilo Code সংযুক্ত করুন।", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "প্রদানকারীর নিজস্ব ডোমেন থেকে প্রয়োজনীয় শংসাপত্রটি অনুলিপি করুন। কুকির জন্য, শুধুমাত্র কুকি হেডার মান কপি করুন এবং কুকি বাদ দিন:", "webSessionGuideStep3Manual": "ম্যানুয়াল পাথ: ব্রাউজারের ডেভেলপার টুলস খুলুন (F12 → নেটওয়ার্ক), পৃষ্ঠা রিফ্রেশ করুন, একটি প্রমাণীকৃত অনুরোধ খুলুন, এবং অনুরোধের হেডার থেকে কুকি হেডার মান কপি করুন — কুকি: প্রিফিক্সটি বাদ দিন।", "webSessionGuideStep4": "এটি এখানে পেস্ট করুন এবং সংযোগ পরীক্ষা করুন। যদি এটি কাজ করা বন্ধ করে দেয়, আবার সাইন ইন করুন এবং একটি নতুন মান দিয়ে প্রতিস্থাপন করুন।", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har ফাইল ইমপোর্ট করুন", + "harImportButtonBusy": "ইমপোর্ট করা হচ্ছে…", + "harImportButtonHint": "অন্তত একটি চ্যাট বার্তা পাঠানোর পর DevTools-এর Network ট্যাব থেকে এক্সপোর্ট করুন।", + "harImportStatusValid": "ইমপোর্ট করা হয়েছে — প্রায় {minutes} মিনিটের জন্য বৈধ।", + "harImportStatusExpiringSoon": "ইমপোর্ট করা হয়েছে — আর মাত্র প্রায় {minutes} মিনিটের জন্য বৈধ।", + "harImportStatusExpired": "ইমপোর্ট করা হয়েছে, কিন্তু এই টোকেনটির মেয়াদ ইতিমধ্যেই শেষ হয়েছে ({minutes} মিনিট আগে) — একটি নতুন HAR এক্সপোর্ট করুন।", + "harImportStatusUnknownExpiry": "ইমপোর্ট করা হয়েছে। এর মেয়াদ শেষ হওয়ার সময় পড়া যায়নি।", + "harImportErrorNotJson": "ফাইলটি বৈধ JSON নয় — এটি কি সত্যিই একটি .har এক্সপোর্ট?", + "harImportErrorNoEntries": "এই HAR-এ কোনো নেটওয়ার্ক এন্ট্রি রেকর্ড করা নেই।", + "harImportErrorNoChathubUrl": "এই HAR-এ কোনো Copilot চ্যাট সংযোগ পাওয়া যায়নি। এক্সপোর্ট করার আগে m365.cloud.microsoft-এ অন্তত একটি চ্যাট বার্তা পাঠান।", + "harImportErrorUnparsableUrl": "চ্যাট সংযোগটি পাওয়া গেছে, কিন্তু এর URL পড়া যায়নি।", + "harImportErrorMissingFields": "চ্যাট সংযোগটি পাওয়া গেছে, কিন্তু এতে টোকেনটি অনুপস্থিত ছিল।", + "harImportErrorReadFailed": "ফাইলটি পড়া যায়নি।", + "harImportErrorUnknown": "ওই HAR ফাইল থেকে কোনো ক্রেডেনশিয়াল বের করা যায়নি।", "webSessionSecurityHint": "এটিকে একটি পাসওয়ার্ডের মতো ব্যবহার করুন: এটি মেয়াদ শেষ না হওয়া বা প্রত্যাহার না হওয়া পর্যন্ত এটি আপনার সাইন-ইন করা ওয়েব অ্যাকাউন্ট অ্যাক্সেস করতে পারে৷", "webNoAuthGuideTitle": "কোন শংসাপত্র প্রয়োজন", "webNoAuthGuideBody": "{provider} এর একটি API কী বা কুকির প্রয়োজন নেই৷ এর বিনামূল্যের ওয়েব এন্ডপয়েন্ট ব্যবহার করতে সংযোগটি সংরক্ষণ করুন।", @@ -6364,15 +6367,15 @@ "checkWebToken": "টোকেন চেক করুন", "huggingchatLabel": "HuggingChat (ফ্রি)", "huggingchatDesc": "huggingface.co/chat-এর মাধ্যমে ফ্রি LLM চ্যাট", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe ওয়েব", "poeWebDesc": "poe.com-এর মাধ্যমে মাল্টি-মডেল চ্যাট", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice ওয়েব", "veniceWebDesc": "গোপনীয়তা-কেন্দ্রিক AI চ্যাট", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel ওয়েব", "v0VercelWebDesc": "v0.dev-এর মাধ্যমে AI কোড জেনারেশন", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi ওয়েব", "kimiWebDesc": "www.kimi.com-এর মাধ্যমে Moonshot AI কনজিউমার চ্যাট (আন্তর্জাতিক, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola ওয়েব", "doubaoWebDesc": "dola.com-এর মাধ্যমে ByteDance AI চ্যাট", "overrideBaseUrlAdvanced": "উন্নত: বেস URL ওভাররাইড করুন", "overrideBaseUrlHint": "উন্নত: এই বিল্ট-ইন প্রোভাইডারটিকে একটি কাস্টম এন্ডপয়েন্টে নির্দেশ করুন। ডিফল্ট ব্যবহার করতে ফাঁকা রাখুন।", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "কমান্ড কোড প্রমাণীকরণ মেয়াদ শেষ হয়েছে", "commandCodeConnected": "কমান্ড কোড সংযুক্ত হয়েছে", "commandCodeConnectionAdded": "কমান্ড কোড সংযোগ যোগ করা হয়েছে", + "clearConnectionCooldown": "কুলডাউন মুছুন", + "clearConnectionCooldownInProgress": "মোছা হচ্ছে…", + "clearConnectionCooldownTitle": "এখনই কুলডাউন মুছুন — আপস্ট্রিমে কোটা ইতিমধ্যেই রিফ্রেশ হয়ে থাকলে এটি ব্যবহার করুন", "commandCodeLinkExpired": "কমান্ড কোডের লিঙ্ক মেয়াদ শেষ হয়ে গেছে", "commandCodeOpeningStudio": "কমান্ড কোড স্টুডিও খুলছে…", "commandCodePopupBlocked": "পপআপ ব্লক করা হয়েছে। দয়া করে পপআপগুলি অনুমোদন করুন এবং আবার Command Code Connect চেষ্টা করুন।", "commandCodeStartFailed": "Command Code auth শুরু করতে ব্যর্থ হয়েছে", "connectionDeleted": "সংযোগ মুছে ফেলা হয়েছে", "connectionFallback": "সংযোগ", + "connectionCooldownCleared": "কুলডাউন মোছা হয়েছে — সংযোগটি আবার রাউটিংয়ে যুক্ত হয়েছে", "coolingConnectionsDescription": "এই সংযোগগুলি শেষ অনুরোধের পর ঠান্ডা হচ্ছে। টাইমার শেষ না হওয়া পর্যন্ত OmniRoute সেগুলি এড়িয়ে যাবে — হাতে বন্ধ করার দরকার নেই।", "coolingConnectionsTitle": "বর্তমানে শীতলকরণ ({count})", + "failedClearConnectionCooldown": "কুলডাউন মোছা যায়নি", "failedDeleteAlias": "অ্যালিয়াস মুছতে ব্যর্থ হয়েছে", "failedDeleteConnection": "সংযোগ মুছতে ব্যর্থ হয়েছে", "failedDistributeProxies": "প্রক্সি বিতরণ করতে ব্যর্থ হয়েছে।", @@ -6465,26 +6473,21 @@ "providerDetailConnectionPriorityActive": "কোডেক্স প্রায়োরিটি সার্ভিস টিয়ার এই সংযোগের জন্য সক্রিয় রয়েছে", "providerDetailGlobalFlexActive": "গ্লোবাল কোডেক্স ফ্লেক্স সার্ভিস টিয়ার সক্রিয় আছে", "providerDetailGlobalPriorityActive": "গ্লোবাল কোডেক্স প্রাধান্য সেবা স্তর সক্রিয় আছে", - "proxiesDistributed": "Distributed {assigned} proxy assignment(s) across {tagLabel}{total} connection(s).", + "proxiesDistributed": "{tagLabel}{total}টি সংযোগে {assigned}টি প্রক্সি অ্যাসাইনমেন্ট বিতরণ করা হয়েছে।", "rerankEndpoint": "পুনর্‌ক্রমবিন্যাস", "savedModelEndpointSettings": "সংরক্ষিত মডেল এন্ডপয়েন্ট সেটিংস", "searchByModelAria": "মডেল দ্বারা অনুসন্ধান করুন", "selectSupportedEndpoint": "কমপক্ষে একটি সমর্থিত এন্ডপয়েন্ট নির্বাচন করুন", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { - "title": "Settings", - "general": "General", - "security": "Security", - "appearance": "Appearance", - "routing": "Routing", - "cache": "Cache", - "resilience": "Resilience", + "title": "সেটিংস", + "general": "সাধারণ", + "security": "নিরাপত্তা", + "appearance": "চেহারা", + "routing": "রাউটিং", + "cache": "ক্যাশ", + "resilience": "স্থিতিস্থাপকতা", "description": "বিবরণ", "enable": "সক্রিয় করুন", "disable": "নিষ্ক্রিয় করুন", @@ -6551,25 +6554,25 @@ "routingOpStatusSeparator": " ·", "resilienceSettingsIntro": "প্রদানকারী ব্যর্থ হলে স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা, কুলডাউন এবং ফলব্যাক।", "aiSettingsIntro": "চিন্তা বাজেট, মডেল আচরণ এবং সংকোচনের জন্য AI-নির্দিষ্ট সেটিংস।", - "systemPrompt": "System Prompt", - "thinkingBudget": "Thinking Budget", + "systemPrompt": "সিস্টেম প্রম্পট", + "thinkingBudget": "থিংকিং বাজেট", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP প্রক্সি", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "প্রক্সি বিভাগসমূহ", + "requestBodyLimitTitle": "অনুরোধের বডির সীমা", + "requestBodyLimitDescription": "অনুরোধের বডি পার্স করার আগে গৃহীত সর্বোচ্চ API পেলোডের আকার। নির্দিষ্ট আপলোড রুটগুলোতে অন্তত তাদের অন্তর্নির্মিত 100 MB সীমা বজায় থাকে।", + "requestBodyLimitInputLabel": "অনুরোধের বডির সীমা (MB)", + "requestBodyLimitEmptyError": "MB-তে একটি সীমা লিখুন", + "requestBodyLimitWholeNumberError": "একটি পূর্ণসংখ্যা ব্যবহার করুন", + "requestBodyLimitMinimumError": "সর্বনিম্ন {min} MB", + "requestBodyLimitMaximumError": "সর্বোচ্চ {max} MB", + "requestBodyLimitLoadFailed": "অনুরোধের সীমার সেটিংস লোড করা যায়নি", + "requestBodyLimitSaveSuccess": "অনুরোধের বডির সীমা সংরক্ষিত হয়েছে", + "requestBodyLimitSaveFailed": "অনুরোধের বডির সীমা সংরক্ষণ করা যায়নি", + "requestBodyLimitSaving": "সংরক্ষণ করা হচ্ছে...", + "requestBodyLimitSave": "সংরক্ষণ করুন", + "requestBodyLimitCurrent": "বর্তমান: {value}", "cacheConfigLoadFailed": "ক্যাশ সেটিংস লোড করতে ব্যর্থ হয়েছে", "cacheConfigSaveSuccess": "ক্যাশ সেটিংস সংরক্ষিত হয়েছে", "cacheConfigSaveFailed": "ক্যাশ সেটিংস সংরক্ষণ করতে ব্যর্থ হয়েছে", @@ -6583,69 +6586,69 @@ "modelCatalogCacheTtlSave": "সংরক্ষণ করুন", "modelCatalogCacheTtlCurrent": "বর্তমান: {value} ms", "mitmProxy": "এমআইটিএম প্রক্সি", - "pricing": "Pricing", - "storage": "Storage", - "policies": "Policies", - "ipFilter": "IP Filter", - "comboDefaults": "Combo Defaults", - "fallbackChains": "Fallback Chains", - "changePassword": "Change Password", - "enablePassword": "Enable Password", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "pricing": "মূল্য নির্ধারণ", + "storage": "স্টোরেজ", + "policies": "নীতিমালা", + "ipFilter": "IP ফিল্টার", + "comboDefaults": "কম্বোর ডিফল্ট মান", + "fallbackChains": "ফলব্যাক চেইন", + "changePassword": "পাসওয়ার্ড পরিবর্তন করুন", + "enablePassword": "পাসওয়ার্ড সক্রিয় করুন", + "darkMode": "ডার্ক মোড", + "lightMode": "লাইট মোড", + "memoryTitle": "মেমোরি", + "memoryDesc": "সেশনজুড়ে স্থায়ী কথোপকথনমূলক মেমোরি", + "memoryEnabled": "মেমোরি সক্রিয় করুন", + "memoryEnabledDesc": "সক্রিয় করা হলে, OmniRoute অতীতের প্রাসঙ্গিক প্রসঙ্গ সংযোজন করবে।", "memoryTokenCostWarning": "সতর্কবার্তা: মেমরি সক্রিয় থাকলে, OmniRoute প্রতিটি চ্যাট অনুরোধে পুনরুদ্ধার করা কনটেক্সটের সর্বোচ্চ {tokens} টোকেন ইনজেক্ট করে — এটি টোকেন ব্যবহার এবং খরচ বৃদ্ধি করে। নির্দিষ্ট কোনো অনুরোধের জন্য ইনজেকশন এড়াতে, \"x-omniroute-no-memory: true\" হেডার পাঠান।", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", - "justNow": "Just now", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", - "providers": "Providers", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", - "systemTheme": "System Theme", - "debugToggle": "Enable Debug Mode", + "maxTokens": "সর্বোচ্চ টোকেন", + "retentionDays": "সংরক্ষণকাল", + "recent": "সাম্প্রতিক", + "recentDesc": "কালানুক্রমিক উইন্ডো", + "semantic": "সিমান্টিক", + "semanticDesc": "ভেক্টর অনুসন্ধান", + "hybrid": "হাইব্রিড", + "hybridDesc": "সাম্প্রতিক + সিমান্টিক", + "skillsTitle": "দক্ষতা", + "skillsDesc": "মডেলের জন্য টুলসমূহ", + "skillsEnabled": "স্কিল সক্রিয় করুন", + "skillsEnabledDesc": "এজেন্টদের ফাংশন ট্রিগার করার অনুমতি দেয়।", + "skillsComingSoon": "স্কিল মার্কেটপ্লেস শীঘ্রই আসছে।", + "memorySkillsTitle": "মেমোরি ও স্কিল", + "memorySkillsDesc": "স্থায়ী কনটেক্সট ও সক্ষমতা", + "modelsDevTitle": "মডেল ডেটাবেস", + "modelsDevDesc": "models.dev থেকে মূল্য, সক্ষমতা ও স্পেসিফিকেশন স্বয়ংক্রিয়ভাবে সিঙ্ক করুন", + "modelsDevEnabled": "models.dev সিঙ্ক সক্রিয় করুন", + "modelsDevEnabledDesc": "ওপেন-সোর্স models.dev ডেটাবেস থেকে মডেলের মূল্য, সক্ষমতা ও স্পেসিফিকেশন সংগ্রহ করুন", + "modelsDevInterval": "সিঙ্কের ব্যবধান", + "syncNow": "এখনই সিঙ্ক করুন", + "syncing": "সিঙ্ক হচ্ছে...", + "lastSync": "সর্বশেষ সিঙ্ক", + "never": "কখনও নয়", + "justNow": "এইমাত্র", + "modelsDevStats": "সিঙ্কের পরিসংখ্যান", + "modelsDevStatsDesc": "বর্তমান models.dev ডেটা কভারেজ", + "providers": "প্রোভাইডার", + "modelsWithPricing": "মূল্যসহ মডেল", + "capabilities": "সক্ষমতা", + "lastSyncCount": "সর্বশেষ সিঙ্কের সংখ্যা", + "lastSyncFull": "সর্বশেষ পূর্ণ সিঙ্ক", + "modelsDevInfo": "এটি যেভাবে কাজ করে", + "modelsDevInfoDesc": "models.dev হলো SST/OpenCode টিম দ্বারা রক্ষণাবেক্ষণ করা AI মডেল স্পেসিফিকেশনের একটি ওপেন-সোর্স ডেটাবেস। এটি 100+ প্রোভাইডারের 4,000+ মডেলের মূল্য, সক্ষমতা, কনটেক্সট সীমা ও মোডালিটি প্রদান করে।", + "modelsDevInfoResolution": "মূল্য নির্ধারণের ক্রম (সর্বোচ্চ অগ্রাধিকার প্রথমে):", + "modelsDevInfoOrder": "ব্যবহারকারীর ওভাররাইড → models.dev → LiteLLM → হার্ডকোড করা ডিফল্ট", + "systemTheme": "সিস্টেম থিম", + "debugToggle": "ডিবাগ মোড সক্রিয় করুন", "logToolSourcesToggle": "টুল সোর্স লগ করুন", "logToolSourcesDescription": "টুলের সংখ্যা এবং MCP/hosted/client সোর্সের বিভাজন সংক্ষেপে তুলে ধরে প্রতি অনুরোধে একটি ডায়াগনস্টিক লগ লাইন তৈরি করুন।", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "হোম পেজে তথ্য পিন করুন", "homePinnedSectionsDesc": "হোম পেজের শীর্ষে কোন বিভাগগুলো পিন করবেন তা বেছে নিন।", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "প্রোভাইডারের কোটা সীমা", + "homeProviderQuotaLimitsDesc": "প্রোভাইডারের কোটা স্ট্যাটাস কনটেইনারটি (Refresh All বোতামসহ) হোম পেজের শীর্ষে পিন করুন।", + "homeQuickStart": "দ্রুত শুরু", + "homeQuickStartDesc": "হোম পেজে দ্রুত শুরু প্যানেলটি দেখান।", + "homeProviderTopology": "প্রোভাইডার টপোলজি", + "homeProviderTopologyDesc": "হোম পেজে প্রোভাইডার টপোলজি দেখান।", "accountEmailVisibility": "অ্যাকাউন্ট ইমেলের দৃশ্যমানতা", "accountEmailVisibilityDesc": "প্রোভাইডার, কম্বো, লগ, কোটা এবং প্লেগ্রাউন্ড স্ক্রিন জুড়ে সম্পূর্ণ অ্যাকাউন্ট ইমেল দেখান। ডিফল্টভাবে এগুলো মাস্ক করতে এটি বন্ধ করুন।", "comboConfigMode": "কম্বো কনফিগারেশন মোড", @@ -6661,89 +6664,89 @@ "providerQuotaAutoRefreshInterval": "রিফ্রেশ ব্যবধান", "providerQuotaAutoRefreshIntervalDesc": "কোটা ভিউ কত ঘন ঘন রিফ্রেশ হওয়া উচিত, সেকেন্ডে।", "seconds": "সেকেন্ড", - "sidebarVisibilityToggle": "Show Sidebar Items", - "enableCache": "Enable Cache", - "cacheTTL": "Cache TTL", - "maxCacheSize": "Max Cache Size", - "clearCache": "Clear Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", - "cacheHits": "Cache Hits", - "cacheMisses": "Cache Misses", - "hitRate": "Hit Rate", - "cacheEntries": "Cache Entries", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "sidebarVisibilityToggle": "সাইডবারের আইটেমগুলো দেখান", + "enableCache": "ক্যাশ সক্রিয় করুন", + "cacheTTL": "ক্যাশ TTL", + "maxCacheSize": "ক্যাশের সর্বোচ্চ আকার", + "clearCache": "ক্যাশ সাফ করুন", + "cacheCleared": "ক্যাশ সফলভাবে পরিষ্কার করা হয়েছে", + "clearCacheFailed": "ক্যাশ পরিষ্কার করতে ব্যর্থ হয়েছে", + "cacheHits": "ক্যাশ হিট", + "cacheMisses": "ক্যাশ মিস", + "hitRate": "হিট রেট", + "cacheEntries": "ক্যাশ এন্ট্রি", + "cacheSettings": "ক্যাশ সেটিংস", + "semanticCache": "সেমান্টিক ক্যাশ", + "maxEntries": "সর্বাধিক এন্ট্রি", + "ttlMinutes": "TTL (মিনিট)", + "promptCache": "প্রম্পট ক্যাশ", + "strategy": "কৌশল", + "preserveClientCache": "ক্লায়েন্ট ক্যাশ সংরক্ষণ করুন", + "enabled": "সক্রিয়", "loading": "Loading...", - "saving": "Saving...", - "save": "Save", - "circuitBreaker": "Circuit Breaker", - "retryPolicy": "Retry Policy", - "maxRetries": "Max Retries", - "retryDelay": "Retry Delay", - "timeoutMs": "Timeout (ms)", - "enableSystemPrompt": "Enable System Prompt", - "systemPromptText": "System Prompt Text", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "saving": "সংরক্ষণ করা হচ্ছে...", + "save": "সংরক্ষণ করুন", + "circuitBreaker": "সার্কিট ব্রেকার", + "retryPolicy": "পুনঃচেষ্টা নীতি", + "maxRetries": "সর্বাধিক পুনঃচেষ্টা", + "retryDelay": "পুনঃচেষ্টার বিলম্ব", + "timeoutMs": "টাইমআউট (ms)", + "enableSystemPrompt": "সিস্টেম প্রম্পট সক্রিয় করুন", + "systemPromptText": "সিস্টেম প্রম্পটের টেক্সট", + "autoDisableBannedAccounts": "নিষিদ্ধ অ্যাকাউন্ট স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় করুন", + "autoDisableDescription": "প্রোভাইডার সংযোগগুলো নির্দিষ্ট চূড়ান্ত নিষেধাজ্ঞার সংকেত (যেমন HTTP 403 'verify your account') ফেরত দিলে সেগুলোকে স্থায়ীভাবে নিষ্ক্রিয় হিসেবে চিহ্নিত করুন। এটি সেগুলোকে কম্বো রোটেশন থেকে সরিয়ে দেয়।", + "autoDisableThreshold": "নিষেধাজ্ঞার সীমা", + "autoDisableThresholdDesc": "স্থায়ীভাবে নিষ্ক্রিয় করার আগে প্রয়োজনীয় ধারাবাহিক নিষেধাজ্ঞার সংকেতের সংখ্যা।", + "autoDisableBannedScope": "স্বয়ংক্রিয় নিষ্ক্রিয়করণ প্রয়োগ করুন", + "autoDisableBannedScopeDesc": "নিষেধাজ্ঞার পর OmniRoute পুনঃচেষ্টা চালিয়ে গেলে আপস্ট্রিম দ্বারা লগইন সিটগুলো (পেইড সাবস্ক্রিপশন ও ফ্রি অ্যাকাউন্ট) লক করা হতে পারে। পেইড প্রিপেইড API keys-এর ক্ষেত্রে এই ঝুঁকি নেই—সেগুলো পুলে রাখুন, যাতে fill-first পরবর্তী key ব্যবহার করতে পারে।", + "autoDisableBannedScopeAll": "সব সংযোগ", + "autoDisableBannedScopeAllDesc": "প্রিপেইড API keys-সহ স্থায়ী নিষেধাজ্ঞার সংকেত ফেরত দেওয়া প্রতিটি সংযোগ নিষ্ক্রিয় করুন।", + "autoDisableBannedScopeSubscription": "শুধু লগইন / সাবস্ক্রিপশন অ্যাকাউন্ট", + "autoDisableBannedScopeSubscriptionDesc": "OAuth, cookie, session এবং web-login সিটগুলো (পেইড বা ফ্রি) নিষ্ক্রিয় করুন। প্রিপেইড API keys সক্রিয় থাকবে, যাতে রাউটিং ফেইলওভার করতে পারে।", "customBannedSignals": "নিষিদ্ধ কীওয়ার্ড", "customBannedSignalsDesc": "অতিরিক্ত কীওয়ার্ড যা স্থায়ী অ্যাকাউন্ট ব্যান সনাক্তকরণ ট্রিগার করে। বিল্ট-ইন কীওয়ার্ড সর্বদা প্রযোজ্য।", "customBannedSignalsPlaceholder": "যেমন: api key revoked", "noCustomBannedSignals": "কোনো কাস্টম কীওয়ার্ড নেই। শুধুমাত্র বিল্ট-ইন কীওয়ার্ড সক্রিয় রয়েছে।", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "স্থিতিস্থাপকতার কাঠামো", "resilienceStructureDesc": "এই পৃষ্ঠাটি শুধুমাত্র আচরণ কনফিগার করে। স্বাস্থ্য পৃষ্ঠায় লাইভ ব্রেকার স্টেট দেখানো হয়েছে। কম্বো-নির্দিষ্ট পুনরায় চেষ্টা এবং রাউন্ড-রবিন স্লট নিয়ন্ত্রণ কম্বো সেটিংসে থাকে।", - "enableThinking": "Enable Thinking", - "maxThinkingTokens": "Max Thinking Tokens", - "enableProxy": "Enable Proxy", + "enableThinking": "চিন্তন সক্রিয় করুন", + "maxThinkingTokens": "সর্বাধিক চিন্তন টোকেন", + "enableProxy": "প্রক্সি সক্রিয় করুন", "perKeyProxyEnabled": "প্রতি-কী প্রক্সি অ্যাসাইনমেন্ট সক্ষম করুন", "perKeyProxyEnabledDesc": "সক্রিয় করা হলে, প্রতিটি প্রোভাইডার সংযোগ নিজস্ব প্রক্সি অ্যাসাইনমেন্ট ব্যবহার করতে পারে", - "proxyUrl": "Proxy URL", - "pricingRates": "Pricing Rates Format", - "currentPricing": "Current Pricing Overview", - "loadingPricing": "Loading pricing data...", - "noPricing": "No pricing data available", - "input": "Input", - "output": "Output", - "cached": "Cached", + "proxyUrl": "প্রক্সি URL", + "pricingRates": "মূল্যহারের ফরম্যাট", + "currentPricing": "বর্তমান মূল্য নির্ধারণের সারসংক্ষেপ", + "loadingPricing": "মূল্য নির্ধারণের ডেটা লোড হচ্ছে...", + "noPricing": "কোনো মূল্য নির্ধারণের ডেটা উপলভ্য নেই", + "input": "ইনপুট", + "output": "আউটপুট", + "cached": "ক্যাশ করা", "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "customPricing": "Custom Pricing", - "databaseSize": "Database Size", - "backupDb": "Backup Database", - "restoreDb": "Restore Database", - "exportData": "Export Data", - "importData": "Import Data", - "clearData": "Clear All Data", - "clearDataConfirm": "This will permanently delete all data. Are you sure?", - "enableRequestLogs": "Enable Request Logs", - "logRetention": "Log Retention", - "ipWhitelist": "IP Whitelist", - "ipBlacklist": "IP Blacklist", - "addIP": "Add IP", - "savedSuccessfully": "Settings saved successfully", + "cacheCreation": "ক্যাশ তৈরি", + "customPricing": "কাস্টম মূল্য নির্ধারণ", + "databaseSize": "ডেটাবেসের আকার", + "backupDb": "ডেটাবেস ব্যাকআপ করুন", + "restoreDb": "ডেটাবেস পুনরুদ্ধার করুন", + "exportData": "ডেটা এক্সপোর্ট করুন", + "importData": "ডেটা ইমপোর্ট করুন", + "clearData": "সমস্ত ডেটা মুছুন", + "clearDataConfirm": "এটি স্থায়ীভাবে সমস্ত ডেটা মুছে ফেলবে। আপনি কি নিশ্চিত?", + "enableRequestLogs": "রিকোয়েস্ট লগ সক্রিয় করুন", + "logRetention": "লগ সংরক্ষণের সময়কাল", + "ipWhitelist": "IP অনুমোদন তালিকা", + "ipBlacklist": "IP ব্লক তালিকা", + "addIP": "IP যোগ করুন", + "savedSuccessfully": "সেটিংস সফলভাবে সংরক্ষণ করা হয়েছে", "ai": "AI", - "advanced": "Advanced", - "localMode": "Local Mode — All data stored on your machine", - "settingsSectionsAria": "Settings sections", - "switchThemes": "Switch between light and dark themes", - "themeSelectionAria": "Theme selection", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", + "advanced": "উন্নত", + "localMode": "লোকাল মোড — সমস্ত ডেটা আপনার মেশিনে সংরক্ষিত থাকে", + "settingsSectionsAria": "সেটিংসের বিভাগসমূহ", + "switchThemes": "লাইট ও ডার্ক থিমের মধ্যে পরিবর্তন করুন", + "themeSelectionAria": "থিম নির্বাচন", + "themeLight": "লাইট", + "themeDark": "ডার্ক", + "themeSystem": "সিস্টেম", "endpointTunnelVisibility": "এন্ডপয়েন্ট টানেলের দৃশ্যমানতা", "endpointTunnelVisibilityDesc": "টানেলের অবস্থা পরিবর্তন না করে এন্ডপয়েন্ট পৃষ্ঠা থেকে টানেল নিয়ন্ত্রণ লুকান।", "showCloudflareTunnel": "ক্লাউডফ্লেয়ার কুইক টানেল", @@ -6752,47 +6755,47 @@ "showTailscaleFunnelDesc": "এন্ডপয়েন্ট পৃষ্ঠায় টেলস্কেল ফানেল নিয়ন্ত্রণগুলি দেখান৷", "showNgrokTunnel": "ngrok টানেল", "showNgrokTunnelDesc": "এন্ডপয়েন্ট পৃষ্ঠায় ngrok টানেল নিয়ন্ত্রণ দেখান।", - "sidebarVisibility": "Hide sidebar items", - "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter without disabling any features", - "sidebarVisibilityHint": "Any sidebar section is hidden automatically when all of its entries are hidden", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", - "hideHealthLogs": "Hide Health Check Logs", - "hideHealthLogsDesc": "When ON, suppress [HealthCheck] messages in server console", - "themeAccent": "Theme color", - "themeAccentDesc": "Choose a preset color or create your own theme with one color", - "themeCreate": "Create theme", - "themeCustom": "Custom theme", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "sidebarVisibility": "সাইডবারের আইটেম লুকান", + "sidebarVisibilityDesc": "কোনো ফিচার নিষ্ক্রিয় না করেই দৃশ্যমান জটিলতা কমাতে সাইডবারের যেকোনো নেভিগেশন এন্ট্রি লুকান", + "sidebarVisibilityHint": "কোনো সাইডবার বিভাগের সব এন্ট্রি লুকানো থাকলে বিভাগটি স্বয়ংক্রিয়ভাবে লুকানো হয়", + "presetAll": "সব", + "presetAllDesc": "সবকিছু দেখান", + "presetEssentials": "অপরিহার্য", + "presetEssentialsDesc": "নতুন ব্যবহারকারীর পথ - উন্নত টুলগুলো অনুসন্ধানযোগ্য থাকবে", + "presetMinimal": "ন্যূনতম", + "presetMinimalDesc": "শুধু মূল পৃষ্ঠাগুলো", + "presetDeveloper": "ডেভেলপার", + "presetDeveloperDesc": "ডেভেলপমেন্ট ও প্রক্সি টুল", + "presetAdmin": "অ্যাডমিন", + "presetAdminDesc": "পর্যবেক্ষণ ও অডিট", + "settingsSidebarTitle": "সাইডবার কাস্টমাইজেশন", + "settingsSidebarDesc": "সাইডবারে কোন আইটেমগুলো দেখানো হবে তা বেছে নিন। অপরিহার্য মোডে উন্নত টুলগুলো অনুসন্ধানযোগ্য থাকে।", + "hideHealthLogs": "স্বাস্থ্য পরীক্ষা লগ লুকান", + "hideHealthLogsDesc": "চালু থাকলে, সার্ভার কনসোলে [HealthCheck] বার্তাগুলো প্রদর্শন করা হবে না", + "themeAccent": "থিমের রং", + "themeAccentDesc": "একটি পূর্বনির্ধারিত রং বেছে নিন অথবা একটি রং দিয়ে নিজের থিম তৈরি করুন", + "themeCreate": "থিম তৈরি করুন", + "themeCustom": "কাস্টম থিম", + "themeBlue": "নীল", + "themeRed": "লাল", + "themeGreen": "সবুজ", + "themeViolet": "বেগুনি", + "themeOrange": "কমলা", + "themeCyan": "সায়ান", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "অ্যাপ্লিকেশনের নাম ও লোগো কাস্টমাইজ করুন", + "appName": "অ্যাপ্লিকেশনের নাম", + "appNameDesc": "সাইডবার ও ব্রাউজার ট্যাবে দেখানো নাম", + "customLogo": "কাস্টম লোগোর URL", + "customLogoDesc": "আপনার কাস্টম লোগো ছবির URL", + "uploadLogo": "লোগো আপলোড করুন", + "resetLogo": "ডিফল্টে রিসেট করুন", + "logoPreview": "প্রিভিউ", + "customFavicon": "ব্রাউজার ফ্যাভিকন", + "customFaviconDesc": "আপনার কাস্টম ফ্যাভিকনের URL (ব্রাউজার ট্যাবে দেখানো হয়)", + "uploadFavicon": "ফ্যাভিকন আপলোড করুন", + "resetFavicon": "ফ্যাভিকন রিসেট করুন", + "faviconPreview": "ফ্যাভিকন প্রিভিউ", "logoFileTooLarge": "লোগো ফাইল অবশ্যই 500KB-এর কম হতে হবে", "faviconFileTooLarge": "ফ্যাভিকন ফাইল অবশ্যই 50KB-এর কম হতে হবে", "invalidLogoFileType": "অবৈধ ফাইলের ধরন। অনুগ্রহ করে PNG, JPG, SVG, GIF, বা WebP আপলোড করুন।", @@ -6800,15 +6803,15 @@ "failedToReadFile": "ফাইল পড়তে ব্যর্থ হয়েছে", "startOnLogin": "লগইনে চালু করুন", "startOnLoginDesc": "সিস্টেম স্টার্টআপে স্বয়ংক্রিয়ভাবে OmniRoute চালু করুন এবং ব্যাকগ্রাউন্ড ট্রেতে নীরবে চালান।", - "flushCache": "Flush Cache", - "flushing": "Flushing…", - "size": "Size", - "hits": "Hits", - "evictions": "Evictions", - "loadingCacheStats": "Loading cache stats…", - "globalProxy": "Global Proxy", - "globalProxyDesc": "Configure a global outbound proxy for all API calls. Individual providers, combos, and keys can override this.", - "noGlobalProxy": "No global proxy configured", + "flushCache": "ক্যাশ খালি করুন", + "flushing": "খালি করা হচ্ছে…", + "size": "আকার", + "hits": "হিট", + "evictions": "উচ্ছেদ", + "loadingCacheStats": "ক্যাশের পরিসংখ্যান লোড হচ্ছে…", + "globalProxy": "গ্লোবাল প্রক্সি", + "globalProxyDesc": "সব API কলের জন্য একটি গ্লোবাল আউটবাউন্ড প্রক্সি কনফিগার করুন। পৃথক প্রোভাইডার, কম্বো ও কী এটি ওভাররাইড করতে পারে।", + "noGlobalProxy": "কোনো গ্লোবাল প্রক্সি কনফিগার করা নেই", "proxyPool": "প্রক্সি পুল", "freePool": "ফ্রি পুল", "proxyDocumentation": "প্রক্সি ডকুমেন্টেশন", @@ -6896,21 +6899,21 @@ "refreshInterval": "রিফ্রেশ ইন্টারভ্যাল", "ruleModeDescription": "নিয়ম মোড বর্ণনা" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "বাল্ক স্বাস্থ্য পরীক্ষা", + "bulkHealthcheckDesc": "কোনগুলো কাজ করে তা জানতে একটি লক্ষ্য URL-এর বিপরীতে কনফিগার করা সব প্রক্সি পরীক্ষা করুন।", + "healthcheckTesting": "পরীক্ষা করা হচ্ছে...", + "healthcheckAll": "সবগুলোর স্বাস্থ্য পরীক্ষা", + "healthcheckFailed": "স্বাস্থ্য পরীক্ষা চালানো যায়নি", + "healthcheckTestingAll": "সব প্রক্সি সমান্তরালভাবে পরীক্ষা করা হচ্ছে...", + "healthcheckTotal": "মোট", + "healthcheckWorking": "সচল", + "healthcheckFailedLabel": "ব্যর্থ", + "healthcheckStatus": "অবস্থা", + "healthcheckProxyUrl": "প্রক্সি URL", + "healthcheckLatency": "বিলম্ব", "proxyDocumentationScopeTitle": "প্রক্সি স্কোপ রেজোলিউশন", "proxyDocumentationScopeDescBefore": "OmniRoute অগ্রাধিকারের ক্রমানুসারে আউটবাউন্ড প্রক্সি সমাধান করে:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "combo → অ্যাকাউন্ট → প্রদানকারী → গ্লোবাল", "proxyDocumentationScopeDescAfter": ". সবচেয়ে নির্দিষ্ট স্কোপটি অগ্রাধিকার পায়।", "proxyDocumentationAddTitle": "একটি কাস্টম প্রক্সি যোগ করা", "proxyDocumentationAddDescBefore": "যান", @@ -6945,7 +6948,7 @@ "proxyFreePoolAddSelected": "নির্বাচিতগুলি পুলে যোগ করুন", "proxyFreePoolAddVisible": "দৃশ্যমান সবগুলি পুলে যোগ করুন", "proxyFreePoolSource": "উৎস", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "হোস্ট:পোর্ট", "proxyFreePoolType": "ধরন", "proxyFreePoolCountry": "দেশ", "proxyFreePoolQuality": "গুণমান", @@ -6966,22 +6969,22 @@ "proxyFreePoolLoadMore": "আরও লোড করুন", "close": "বন্ধ করুন", "cancel": "বাতিল করুন", - "globalLabel": "Global", - "configure": "Configure", - "globalSystemPrompt": "Global System Prompt", - "saved": "Saved", + "globalLabel": "গ্লোবাল", + "configure": "কনফিগার করুন", + "globalSystemPrompt": "গ্লোবাল সিস্টেম প্রম্পট", + "saved": "সংরক্ষিত", "beforePromptLabel": "প্রম্পটের আগে", "beforePromptDesc": "এজেন্ট/প্রোভাইডার সিস্টেম নির্দেশাবলীর আগে ইনজেক্ট করা হয়েছে", "beforePromptPlaceholder": "এজেন্ট/প্রোভাইডার প্রম্পটের আগে নির্দেশাবলী সন্নিবেশ করা হয়েছে...", "afterPromptLabel": "প্রম্পটের পরে", "afterPromptDesc": "এজেন্ট/প্রোভাইডার সিস্টেম নির্দেশাবলীর পরে ইনজেক্ট করা হয়েছে", "afterPromptPlaceholder": "এজেন্ট/প্রোভাইডার প্রম্পটের পরে নির্দেশাবলী সন্নিবেশ করা হয়েছে...", - "chars": "{count} chars", - "thinkingBudgetTitle": "Thinking Budget", + "chars": "{count} অক্ষর", + "thinkingBudgetTitle": "চিন্তন বাজেট", "thinkingBudgetDesc": "Control AI reasoning token usage across all requests", "thinkingBudgetIndependenceHint": "সংকোচন, রাউটিং, এবং টোকেন-সীমা বৈশিষ্ট্যগুলি প্রতিটি মোডে কাজ করতে থাকে। অটো মানে “অটো-শো চিন্তা” নয় — এটি ক্লায়েন্টের যুক্তি ক্ষেত্রগুলি মুছে ফেলে।", - "passthrough": "Passthrough", - "passthroughDesc": "No changes — client controls thinking budget", + "passthrough": "অপরিবর্তিতভাবে প্রেরণ", + "passthroughDesc": "কোনো পরিবর্তন নয় — ক্লায়েন্ট চিন্তন বাজেট নিয়ন্ত্রণ করে", "thinkingModePassthrough": "পাসথ্রু", "thinkingModePassthroughDesc": "ক্লায়েন্টের যুক্তি অপরিবর্তিত রাখুন (প্রয়াস, সারসংক্ষেপ, চিন্তার ব্লক)। Codex/Desktop দৃশ্যমান চিন্তার জন্য প্রয়োজনীয়। ডিফল্ট।", "thinkingModeAuto": "অটো (স্ট্রিপ)", @@ -6991,36 +6994,36 @@ "thinkingModeAdaptive": "অ্যাডাপটিভ", "thinkingModeAdaptiveDesc": "বার্তা সংখ্যা, সরঞ্জাম এবং প্রম্পট দৈর্ঘ্য ব্যবহার করে একটি ভিত্তি প্রচেষ্টার থেকে চিন্তার বাজেট স্কেল করুন।", "auto": "Auto Combo", - "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "custom": "Custom", - "customDesc": "Set a fixed token budget for all requests", - "adaptive": "Adaptive", - "adaptiveDesc": "Scale budget based on request complexity", - "effortNone": "None (0 tokens)", - "effortLow": "Low (1K tokens)", - "effortMedium": "Medium (10K tokens)", - "effortHigh": "High (128K tokens)", - "tokenBudget": "Token Budget", - "tokens": "tokens", - "baseEffortLevel": "Base Effort Level", + "autoDesc": "স্বয়ংক্রিয়ভাবে ত্রুটি সারানো স্মার্ট রাউটিং পুল (পারফরম্যান্সের জন্য অপ্টিমাইজ করা)", + "custom": "কাস্টম", + "customDesc": "সব অনুরোধের জন্য একটি নির্দিষ্ট টোকেন বাজেট সেট করুন", + "adaptive": "অভিযোজিত", + "adaptiveDesc": "অনুরোধের জটিলতার ভিত্তিতে বাজেট সমন্বয় করুন", + "effortNone": "কোনোটিই নয় (0 টোকেন)", + "effortLow": "কম (1K টোকেন)", + "effortMedium": "মাঝারি (10K টোকেন)", + "effortHigh": "উচ্চ (128K টোকেন)", + "tokenBudget": "টোকেন বাজেট", + "tokens": "টোকেন", + "baseEffortLevel": "মূল প্রচেষ্টার স্তর", "adaptiveHint": "Adaptive mode scales from this base level based on message count, tool usage, and prompt length.", - "requireLogin": "Require login", - "requireLoginDesc": "When ON, dashboard requires password. When OFF, access without login.", - "currentPassword": "Current Password", - "enterCurrentPassword": "Enter current password", - "newPassword": "New Password", - "enterNewPassword": "Enter new password", - "confirmPassword": "Confirm New Password", - "confirmPasswordPlaceholder": "Confirm new password", - "passwordsNoMatch": "Passwords do not match", - "passwordUpdated": "Password updated successfully", - "failedUpdatePassword": "Failed to update password", - "errorOccurred": "An error occurred", - "updatePassword": "Update Password", - "setPassword": "Set Password", - "apiEndpointProtection": "API Endpoint Protection", - "requireAuthModels": "Require API key for /models", - "requireAuthModelsDesc": "When ON, the /v1/models endpoint returns 404 for unauthenticated requests. Prevents model discovery by unauthorized users.", + "requireLogin": "লগইন আবশ্যক", + "requireLoginDesc": "চালু থাকলে ড্যাশবোর্ডে প্রবেশের জন্য পাসওয়ার্ড প্রয়োজন। বন্ধ থাকলে লগইন ছাড়াই প্রবেশ করা যাবে।", + "currentPassword": "বর্তমান পাসওয়ার্ড", + "enterCurrentPassword": "বর্তমান পাসওয়ার্ড লিখুন", + "newPassword": "নতুন পাসওয়ার্ড", + "enterNewPassword": "নতুন পাসওয়ার্ড লিখুন", + "confirmPassword": "নতুন পাসওয়ার্ড নিশ্চিত করুন", + "confirmPasswordPlaceholder": "নতুন পাসওয়ার্ডটি আবার লিখুন", + "passwordsNoMatch": "পাসওয়ার্ডগুলো মিলছে না", + "passwordUpdated": "পাসওয়ার্ড সফলভাবে আপডেট করা হয়েছে", + "failedUpdatePassword": "পাসওয়ার্ড আপডেট করা যায়নি", + "errorOccurred": "একটি ত্রুটি ঘটেছে", + "updatePassword": "পাসওয়ার্ড আপডেট করুন", + "setPassword": "পাসওয়ার্ড সেট করুন", + "apiEndpointProtection": "API এন্ডপয়েন্ট সুরক্ষা", + "requireAuthModels": "/models-এর জন্য API কী আবশ্যক করুন", + "requireAuthModelsDesc": "চালু থাকলে, অননুমোদিত অনুরোধের ক্ষেত্রে /v1/models এন্ডপয়েন্ট 404 ফেরত দেয়। এটি অননুমোদিত ব্যবহারকারীদের মডেল শনাক্ত করা প্রতিরোধ করে।", "authModelHeading": "সক্রিয় অনুমোদন মডেল", "authModelClient": "ক্লায়েন্ট API এন্ডপয়েন্ট (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) এর জন্য একটি Bearer API কী প্রয়োজন।", "authModelManagement": "ম্যানেজমেন্ট এন্ডপয়েন্টের (/ড্যাশবোর্ড, /api/*) একটি ড্যাশবোর্ড সেশন বা ম্যানেজমেন্ট শংসাপত্র প্রয়োজন।", @@ -7029,16 +7032,16 @@ "bruteForceProtectionDesc": "একই IP থেকে বারবার ব্যর্থতার পর থ্রোটল এবং লক /api/auth/login করুন।", "corsAllowedOrigins": "CORS অনুমোদিত উত্স", "corsAllowedOriginsDesc": "এই সার্ভারে কল করার জন্য অনুমোদিত ব্রাউজার উত্সের কমা দ্বারা পৃথক করা তালিকা৷ খালি তালিকা = কোন ব্রাউজার CORS অ্যাক্সেস নেই (সার্ভার থেকে সার্ভার এখনও কাজ করে)। শুধুমাত্র উন্নয়নের জন্য CORS_ALLOW_ALL=true env var ব্যবহার করুন।", - "blockedProviders": "Blocked Providers", - "blockedProvidersDesc": "Hide specific providers from the /v1/models response. Blocked providers will not appear in model listings.", - "providersBlocked": "{count} provider(s) blocked from /models", - "blockProviderTitle": "Block {provider}", - "unblockProviderTitle": "Unblock {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "blockedProviders": "ব্লক করা প্রোভাইডার", + "blockedProvidersDesc": "/v1/models-এর রেসপন্স থেকে নির্দিষ্ট প্রোভাইডার লুকান। ব্লক করা প্রোভাইডারগুলো মডেল তালিকায় দেখা যাবে না।", + "providersBlocked": "/models থেকে {count}টি প্রোভাইডার ব্লক করা হয়েছে", + "blockProviderTitle": "{provider}-কে ব্লক করুন", + "unblockProviderTitle": "{provider}-এর ব্লক তুলে নিন", + "cliFingerprint": "CLI ফিঙ্গারপ্রিন্ট মিলকরণ", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count}টি প্রোভাইডারের CLI ফিঙ্গারপ্রিন্ট সক্রিয়", + "enableFingerprintTitle": "{provider}-এর জন্য ফিঙ্গারপ্রিন্ট সক্রিয় করুন", + "disableFingerprintTitle": "{provider}-এর জন্য ফিঙ্গারপ্রিন্ট নিষ্ক্রিয় করুন", "systemTransforms": "সিস্টেম-ব্লক ট্রান্সফর্ম পাইপলাইন", "systemTransformsDesc": "প্রতি-প্রদানকারী ফরওয়ার্ড করার আগে অনুরোধের বডিতে প্রয়োগ করা রূপান্তরের পাইপলাইন অর্ডার করেছে। যেকোনো প্রদানকারী আইডি সমর্থন করে।", "systemTransformsAddProvider": "প্রদানকারী যোগ করুন", @@ -7049,29 +7052,29 @@ "systemTransformsOpMoveUp": "উপরে সরান", "systemTransformsOpMoveDown": "নিচে সরান", "systemTransformsOpDelete": "অপশন মুছুন", - "routingStrategy": "Routing Strategy", - "routingAdvancedGuideTitle": "Advanced routing guidance", + "routingStrategy": "রাউটিং কৌশল", + "routingAdvancedGuideTitle": "উন্নত রাউটিং নির্দেশনা", "routingAdvancedGuideHint1": "Use Fill First for predictable priority, Round Robin for fairness, and P2C for latency resilience.", "routingAdvancedGuideHint2": "If providers vary in quality/cost, start with Cost Opt for background work and Least Used for balanced wear.", - "fillFirst": "Fill First", - "fillFirstDesc": "Use accounts in priority order", + "fillFirst": "প্রথমটি পূরণ করুন", + "fillFirstDesc": "অগ্রাধিকারের ক্রমে অ্যাকাউন্ট ব্যবহার করুন", "roundRobin": "Round Robin", - "roundRobinDesc": "Cycle through all accounts", + "roundRobinDesc": "সব অ্যাকাউন্ট পর্যায়ক্রমে ব্যবহার করুন", "p2c": "P2C", - "p2cDesc": "Pick 2 random, use the healthier one", - "random": "Random", - "randomDesc": "Random account each request", - "leastUsed": "Least Used", - "leastUsedDesc": "Pick least recently used account", - "costOpt": "Cost Opt", - "costOptDesc": "Prefer cheapest available account", + "p2cDesc": "এলোমেলোভাবে ২টি বেছে নিয়ে বেশি কার্যকরটি ব্যবহার করুন", + "random": "এলোমেলো", + "randomDesc": "প্রতিটি অনুরোধে এলোমেলো অ্যাকাউন্ট", + "leastUsed": "সবচেয়ে কম ব্যবহৃত", + "leastUsedDesc": "সবচেয়ে বেশি সময় ধরে অব্যবহৃত অ্যাকাউন্টটি বেছে নিন", + "costOpt": "খরচ অনুকূলকরণ", + "costOptDesc": "সবচেয়ে সস্তা উপলভ্য অ্যাকাউন্টকে অগ্রাধিকার দিন", "resetAware": "রিসেট-সচেতন RR", "resetAwareDesc": "স্বাস্থ্যকর অবশিষ্ট কোটা এবং কাছাকাছি রিসেট সহ অ্যাকাউন্ট পছন্দ করুন", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "কোটা-ভিত্তিক ওজন", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "কঠোর এলোমেলো", + "strictRandomDesc": "ডেক শাফল—পুনরায় শাফল করার আগে প্রতিটি অ্যাকাউন্ট একবার করে ব্যবহার করে", + "stickyLimit": "স্টিকি সীমা", "stickyLimitDesc": "Calls per account before switching", "routingStrategyTitle": "রাউটিং কৌশল", "routingStrategySubtitle": "9router-এর সাথে মিল রাখুন: অ্যাকাউন্ট রাউন্ড-রবিন, স্টিকি লিমিট এবং কম্বো রোটেশন", @@ -7089,225 +7092,225 @@ "providerAccountRoutingDesc": "এই প্রোভাইডারের জন্য গ্লোবাল অ্যাকাউন্ট কৌশল ওভাররাইড করুন (9router প্যারিটি)।", "providerRoutingStrategy": "অ্যাকাউন্ট কৌশল", "providerRoutingInheritGlobal": "গ্লোবাল ডিফল্ট ইনহেরিট করুন", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", - "modelAliases": "Model Aliases", - "modelAliasesTitle": "Model Aliases", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", - "addCustomAlias": "Add Custom Alias", - "deprecatedModelId": "Deprecated model ID", - "newModelId": "New model ID", - "customAliases": "Custom Aliases", - "builtInAliases": "Built-in Aliases", - "backgroundDegradationTitle": "Background Task Degradation", - "backgroundDegradationDesc": "Auto-detect background tasks (titles, summaries) and route to cheaper models", - "enableDegradation": "Enable Background Degradation", - "enableDegradationHint": "When enabled, background tasks like title generation and summarization are routed to cheaper models automatically", - "tasksDetected": "Tasks detected", - "degradationMap": "Model Degradation Map", - "premiumModel": "Premium model", - "cheapModel": "Cheap model", - "detectionPatterns": "Detection Patterns", - "newPattern": "e.g. \"generate a title\"", + "quotaPreflightTitle": "কোটা প্রিফ্লাইট কাটঅফ", + "quotaPreflightSubtitle": "আপস্ট্রিমে অনুরোধ পাঠানোর আগে কোটা শেষ হয়ে যাওয়া অ্যাকাউন্টগুলো এড়িয়ে যান", + "quotaPreflightEnable": "কোটা প্রিফ্লাইট সক্রিয় করুন", + "quotaPreflightEnableDesc": "প্রতিটি অনুরোধের আগে অ্যাকাউন্টের অবশিষ্ট কোটা (৫ ঘণ্টা / সাপ্তাহিক / মাসিক সময়সীমা) পরীক্ষা করুন। কাটঅফের সমান বা কম থাকা অ্যাকাউন্টগুলো কোনো আপস্ট্রিম কল ছাড়াই এড়িয়ে যাওয়া হয়। Provider Quota পৃষ্ঠায় নির্ধারিত প্রতিটি সময়সীমার কাটঅফ সবসময় এখানকার ডিফল্টের ওপর অগ্রাধিকার পায়।", + "quotaPreflightCutoff": "গ্লোবাল কাটঅফ (ন্যূনতম অবশিষ্ট %)", + "quotaPreflightCutoffDesc": "নিজস্ব কাটঅফবিহীন প্রতিটি সময়সীমার ক্ষেত্রে কোনো অ্যাকাউন্টের অবশিষ্ট কোটা এই শতাংশ বা তার নিচে নেমে গেলে সেটি ব্যবহার করা বন্ধ করুন। এটি Provider Quota পৃষ্ঠার অবশিষ্ট-% বারগুলোর সঙ্গে সামঞ্জস্যপূর্ণ।", + "quotaPreflightWindowsHint": "যেসব উইন্ডোর নিজস্ব প্রতি-উইন্ডো বা প্রতি-প্রোভাইডার কাটঅফ রয়েছে (Provider Quota পৃষ্ঠার Cutoff মোডালে সেট করা), সেগুলো এই ডিফল্ট দ্বারা প্রভাবিত হয় না।", + "quotaPreflightLoadFailed": "কোটা প্রিফ্লাইট সেটিংস লোড করা যায়নি।", + "modelAliases": "মডেল উপনাম", + "modelAliasesTitle": "মডেল উপনাম", + "modelAliasesDesc": "হুবহু মিল বা ওয়াইল্ডকার্ড প্যাটার্ন ব্যবহার করে মডেলের নাম পুনরায় ম্যাপ করুন।", + "addCustomAlias": "কাস্টম উপনাম যোগ করুন", + "deprecatedModelId": "অপ্রচলিত মডেল ID", + "newModelId": "নতুন মডেল ID", + "customAliases": "কাস্টম উপনাম", + "builtInAliases": "বিল্ট-ইন উপনাম", + "backgroundDegradationTitle": "ব্যাকগ্রাউন্ড টাস্কের অবনমন", + "backgroundDegradationDesc": "ব্যাকগ্রাউন্ড টাস্ক (শিরোনাম, সারসংক্ষেপ) স্বয়ংক্রিয়ভাবে শনাক্ত করে কম খরচের মডেলে রাউট করুন", + "enableDegradation": "ব্যাকগ্রাউন্ড অবনমন সক্ষম করুন", + "enableDegradationHint": "সক্ষম করা হলে, শিরোনাম তৈরি ও সারসংক্ষেপের মতো ব্যাকগ্রাউন্ড টাস্কগুলো স্বয়ংক্রিয়ভাবে কম খরচের মডেলে রাউট করা হয়", + "tasksDetected": "শনাক্ত করা টাস্ক", + "degradationMap": "মডেল অবনমন ম্যাপ", + "premiumModel": "প্রিমিয়াম মডেল", + "cheapModel": "কম খরচের মডেল", + "detectionPatterns": "শনাক্তকরণ প্যাটার্ন", + "newPattern": "যেমন, \"একটি শিরোনাম তৈরি করুন\"", "aliasPatternPlaceholder": "claude-sonnet-*", "aliasTargetPlaceholder": "claude-sonnet-4-20250514", - "pattern": "Pattern", - "targetModel": "Target Model", - "add": "+ Add", - "session": "Session", - "sessionDetailsAria": "Session details", + "pattern": "প্যাটার্ন", + "targetModel": "লক্ষ্য মডেল", + "add": "+ যোগ করুন", + "session": "সেশন", + "sessionDetailsAria": "সেশনের বিবরণ", "status": "Status", - "authenticated": "Authenticated", - "guest": "Guest", - "loginTime": "Login Time", - "sessionAge": "Session Age", - "browser": "Browser", - "clearLocalData": "Clear Local Data", - "logout": "Logout", - "clearLocalDataConfirm": "Clear all local data? This will reset your preferences.", - "unknown": "Unknown", - "systemActor": "system", - "ipAccessControl": "IP Access Control", - "ipAccessControlDesc": "Block or allow specific IP addresses", - "ipModeDisabled": "Disabled", - "ipModeBlacklist": "Blacklist", - "ipModeWhitelist": "Whitelist", - "ipModeWhitelistPriority": "WL Priority", - "addIpAddress": "Add IP Address", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", - "block": "+ Block", - "allow": "+ Allow", - "blocked": "Blocked ({count})", - "allowed": "Allowed ({count})", - "temporaryBans": "Temporary Bans ({count})", - "minLeft": "{min}m left", - "auditLog": "Audit Log", - "searchAuditLogs": "Search audit logs...", - "failedLoadAuditLog": "Failed to load audit log", - "noAuditEvents": "No audit events found", - "action": "Action", - "actor": "Actor", - "details": "Details", - "time": "Time", - "fallbackChainsTitle": "Fallback Chains", - "fallbackChainsDesc": "Define provider fallback order per model", - "addChain": "+ Add Chain", - "modelName": "Model Name", + "authenticated": "প্রমাণীকৃত", + "guest": "অতিথি", + "loginTime": "লগইনের সময়", + "sessionAge": "সেশনের বয়স", + "browser": "ব্রাউজার", + "clearLocalData": "লোকাল ডেটা মুছুন", + "logout": "লগআউট", + "clearLocalDataConfirm": "সব লোকাল ডেটা মুছবেন? এতে আপনার পছন্দসমূহ রিসেট হবে।", + "unknown": "অজানা", + "systemActor": "সিস্টেম", + "ipAccessControl": "IP অ্যাক্সেস নিয়ন্ত্রণ", + "ipAccessControlDesc": "নির্দিষ্ট IP ঠিকানা ব্লক করুন বা অনুমতি দিন", + "ipModeDisabled": "নিষ্ক্রিয়", + "ipModeBlacklist": "ব্ল্যাকলিস্ট", + "ipModeWhitelist": "হোয়াইটলিস্ট", + "ipModeWhitelistPriority": "WL অগ্রাধিকার", + "addIpAddress": "IP ঠিকানা যোগ করুন", + "ipAddressPlaceholder": "192.168.1.0/24 বা 10.0.*.*", + "block": "+ ব্লক করুন", + "allow": "+ অনুমতি দিন", + "blocked": "ব্লক করা হয়েছে ({count})", + "allowed": "অনুমোদিত ({count})", + "temporaryBans": "অস্থায়ী নিষেধাজ্ঞা ({count})", + "minLeft": "আর {min}মি বাকি", + "auditLog": "অডিট লগ", + "searchAuditLogs": "অডিট লগ অনুসন্ধান করুন...", + "failedLoadAuditLog": "অডিট লগ লোড করা যায়নি", + "noAuditEvents": "কোনো অডিট ইভেন্ট পাওয়া যায়নি", + "action": "অ্যাকশন", + "actor": "সম্পাদনকারী", + "details": "বিস্তারিত", + "time": "সময়", + "fallbackChainsTitle": "ফলব্যাক চেইন", + "fallbackChainsDesc": "প্রতিটি মডেলের জন্য প্রদানকারীর ফলব্যাক ক্রম নির্ধারণ করুন", + "addChain": "+ চেইন যোগ করুন", + "modelName": "মডেলের নাম", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "Providers (comma-separated, in priority order)", + "providersCommaSeparated": "প্রদানকারীরা (কমা দিয়ে পৃথক করা, অগ্রাধিকারের ক্রমানুসারে)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", - "createChain": "Create Chain", - "noFallbackChains": "No Fallback Chains", - "noFallbackChainsDesc": "Create a chain to define provider fallback order for a model.", - "loadingFallbackChains": "Loading fallback chains...", - "deleteChainConfirm": "Delete fallback chain for \"{model}\"?", - "chainCreated": "Chain created for {model}", - "chainDeleted": "Chain deleted for {model}", - "failedCreateChain": "Failed to create chain", - "failedDeleteChain": "Failed to delete chain", - "deleteChain": "Delete chain", - "fillModelAndProviders": "Please fill model name and providers", - "addAtLeastOneProvider": "Add at least one provider", - "comboDefaultsTitle": "Combo Defaults", - "comboDefaultsGuideTitle": "How to tune combo defaults", - "comboDefaultsGuideHint1": "Keep retries low in low-latency flows; increase timeout only for long generation tasks.", - "comboDefaultsGuideHint2": "Use provider overrides when one provider needs different timeout/retry behavior than global defaults.", - "globalComboConfig": "Global combo configuration", + "createChain": "চেইন তৈরি করুন", + "noFallbackChains": "কোনো ফলব্যাক চেইন নেই", + "noFallbackChainsDesc": "একটি মডেলের জন্য প্রদানকারীর ফলব্যাক ক্রম নির্ধারণ করতে একটি চেইন তৈরি করুন।", + "loadingFallbackChains": "ফলব্যাক চেইন লোড হচ্ছে...", + "deleteChainConfirm": "\"{model}\"-এর ফলব্যাক চেইন মুছবেন?", + "chainCreated": "{model}-এর জন্য চেইন তৈরি করা হয়েছে", + "chainDeleted": "{model}-এর চেইন মুছে ফেলা হয়েছে", + "failedCreateChain": "চেইন তৈরি করা যায়নি", + "failedDeleteChain": "চেইন মুছে ফেলা যায়নি", + "deleteChain": "চেইন মুছুন", + "fillModelAndProviders": "অনুগ্রহ করে মডেলের নাম ও প্রদানকারীদের তথ্য পূরণ করুন", + "addAtLeastOneProvider": "অন্তত একজন প্রদানকারী যোগ করুন", + "comboDefaultsTitle": "কম্বো ডিফল্ট", + "comboDefaultsGuideTitle": "কম্বো ডিফল্ট কীভাবে সমন্বয় করবেন", + "comboDefaultsGuideHint1": "কম লেটেন্সির ফ্লোতে পুনঃচেষ্টার সংখ্যা কম রাখুন; শুধু দীর্ঘ জেনারেশন টাস্কের জন্য টাইমআউট বাড়ান।", + "comboDefaultsGuideHint2": "কোনো প্রদানকারীর জন্য গ্লোবাল ডিফল্টের চেয়ে আলাদা টাইমআউট/পুনঃচেষ্টা আচরণ প্রয়োজন হলে প্রদানকারী ওভাররাইড ব্যবহার করুন।", + "globalComboConfig": "গ্লোবাল কম্বো কনফিগারেশন", "moveUp": "উপরে সরান", "moveDown": "নিচে সরান", "allProvidersAdded": "সব প্রোভাইডার যোগ করা হয়েছে", "noProvidersFound": "কোনো প্রোভাইডার পাওয়া যায়নি", - "defaultStrategy": "Default Strategy", + "defaultStrategy": "ডিফল্ট কৌশল", "defaultStrategyDesc": "Applied to new combos without explicit strategy", - "comboStrategyAria": "Combo strategy", - "priority": "Priority", - "weighted": "Weighted", - "contextRelay": "Context Relay", - "contextRelayDesc": "Priority-style routing with automatic context handoffs when account rotation happens", - "maxRetriesLabel": "Max Retries", - "retryDelayLabel": "Retry Delay (ms)", - "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", - "healthCheckDesc": "Pre-check provider availability", - "trackMetrics": "Track Metrics", - "trackMetricsDesc": "Record per-combo request metrics", - "providerOverrides": "Provider Overrides", - "providerOverridesDesc": "Override timeout and retries per provider. Provider settings override global defaults.", - "providerMaxRetriesAria": "{provider} max retries", - "providerTimeoutAria": "{provider} timeout ms", - "removeProviderOverrideAria": "Remove {provider} override", + "comboStrategyAria": "কম্বো কৌশল", + "priority": "অগ্রাধিকার", + "weighted": "ওজনভিত্তিক", + "contextRelay": "কনটেক্সট রিলে", + "contextRelayDesc": "অ্যাকাউন্ট রোটেশন ঘটলে স্বয়ংক্রিয় কনটেক্সট হ্যান্ডঅফসহ অগ্রাধিকার-ধাঁচের রাউটিং", + "maxRetriesLabel": "সর্বোচ্চ পুনঃচেষ্টা", + "retryDelayLabel": "পুনঃচেষ্টার বিলম্ব (ms)", + "timeoutLabel": "টাইমআউট (ms)", + "healthCheck": "স্বাস্থ্য পরীক্ষা", + "healthCheckDesc": "প্রোভাইডারের উপলভ্যতা আগেই পরীক্ষা করুন", + "trackMetrics": "মেট্রিক্স ট্র্যাক করুন", + "trackMetricsDesc": "প্রতি-কম্বো অনুরোধের মেট্রিক্স রেকর্ড করুন", + "providerOverrides": "প্রোভাইডার ওভাররাইড", + "providerOverridesDesc": "প্রতিটি প্রোভাইডারের জন্য টাইমআউট ও পুনঃচেষ্টা ওভাররাইড করুন। প্রোভাইডারের সেটিংস গ্লোবাল ডিফল্টকে ওভাররাইড করে।", + "providerMaxRetriesAria": "{provider}-এর সর্বোচ্চ পুনঃচেষ্টা", + "providerTimeoutAria": "{provider}-এর টাইমআউট ms", + "removeProviderOverrideAria": "{provider} ওভাররাইড সরান", "selectProviderPlaceholder": "প্রোভাইডার নির্বাচন করুন...", "searchProviderPlaceholder": "প্রোভাইডার খুঁজুন...", "searchProviderAria": "প্রোভাইডার খুঁজুন", - "newProviderNamePlaceholder": "e.g. google, openai...", - "newProviderNameAria": "New provider name", - "retries": "retries", + "newProviderNamePlaceholder": "যেমন google, openai...", + "newProviderNameAria": "নতুন প্রোভাইডারের নাম", + "retries": "পুনঃচেষ্টা", "ms": "ms", - "saveComboDefaults": "Save Combo Defaults", - "maxNestingDepth": "Max Nesting Depth", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", + "saveComboDefaults": "কম্বোর ডিফল্ট সংরক্ষণ করুন", + "maxNestingDepth": "সর্বোচ্চ নেস্টিং গভীরতা", + "concurrencyPerModel": "সমসাময়িকতা / মডেল", + "queueTimeout": "সারির টাইমআউট (ms)", "queueDepth": "কিউ ডেপথ", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", - "providerProfiles": "Provider Profiles", - "providerProfilesDesc": "Separate resilience settings for OAuth (session-based) and API Key (metered) providers. OAuth providers have stricter thresholds due to lower rate limits.", - "oauthProviders": "OAuth Providers", - "apiKeyProviders": "API Key Providers", - "transientCooldown": "Transient Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", - "cbThreshold": "CB Threshold", - "cbResetTime": "CB Reset Time", - "rateLimiting": "Rate Limiting", - "rateLimitingDesc": "API Key providers are automatically rate-limited with safe defaults. Limits are learned from response headers and adapt over time.", - "defaultSafetyNet": "Default Safety Net", + "contextRelayHandoffThreshold": "হ্যান্ডঅফ থ্রেশহোল্ড", + "contextRelayMaxMessages": "সারাংশের জন্য সর্বোচ্চ বার্তা", + "contextRelaySummaryModel": "সারাংশ মডেল", + "contextRelayProviderNote": "Context Relay বর্তমানে Codex অ্যাকাউন্টগুলোর জন্য হ্যান্ডঅফ তৈরি করে এবং নতুন বা কনফিগার না করা কম্বোগুলোর গ্লোবাল ডিফল্ট হিসেবে এই মানগুলো ব্যবহার করে।", + "providerProfiles": "প্রোভাইডার প্রোফাইল", + "providerProfilesDesc": "OAuth (সেশন-ভিত্তিক) এবং API Key (ব্যবহার-পরিমাপভিত্তিক) প্রোভাইডারগুলোর জন্য পৃথক স্থিতিস্থাপকতা সেটিংস। কম রেট লিমিটের কারণে OAuth প্রোভাইডারগুলোর থ্রেশহোল্ড আরও কঠোর।", + "oauthProviders": "OAuth প্রোভাইডার", + "apiKeyProviders": "API Key প্রোভাইডার", + "transientCooldown": "ক্ষণস্থায়ী কুলডাউন", + "rateLimitCooldown": "রেট লিমিট কুলডাউন", + "maxBackoffLevel": "সর্বোচ্চ ব্যাকঅফ স্তর", + "cbThreshold": "CB থ্রেশহোল্ড", + "cbResetTime": "CB রিসেট সময়", + "rateLimiting": "রেট লিমিটিং", + "rateLimitingDesc": "API Key প্রোভাইডারগুলো নিরাপদ ডিফল্ট ব্যবহার করে স্বয়ংক্রিয়ভাবে রেট-লিমিট করা হয়। রেসপন্স হেডার থেকে সীমা শেখা হয় এবং সময়ের সঙ্গে তা অভিযোজিত হয়।", + "defaultSafetyNet": "ডিফল্ট সুরক্ষা ব্যবস্থা", "rpm": "RPM", - "minGap": "Min Gap", - "maxConcurrent": "Max Concurrent", - "activeLimiters": "Active Limiters", - "noActiveLimiters": "No active rate limiters yet.", - "reservoir": "Reservoir", - "running": "Running", - "queued": "Queued", - "circuitBreakers": "Circuit Breakers", - "breakerStateClosed": "Closed", - "breakerStateOpen": "Open", - "breakerStateHalfOpen": "Half-Open", - "tripped": "{count} tripped", - "healthy": "{count} healthy", - "resetAll": "Reset All", - "noCircuitBreakers": "No circuit breakers active yet. They are created automatically when requests flow through the combo pipeline.", - "failures": "{count} failure(s)", - "policiesLocked": "Policies & Locked Identifiers", - "allOperational": "All systems operational — no lockouts or tripped breakers", - "loadingPolicies": "Loading policies...", - "lockedIdentifiers": "Locked Identifiers", - "unlockedIdentifier": "Unlocked: {identifier}", - "sinceDate": "since {date}", - "forceUnlock": "Force Unlock", - "unlocking": "Unlocking...", - "failedUnlock": "Failed to unlock", - "failedLoadWithStatus": "Failed to load: {status}", - "failedLoadResilience": "Failed to load resilience status", - "saveFailed": "Save failed", - "resetFailed": "Reset failed", - "loadingResilience": "Loading resilience status...", - "retry": "Retry", + "minGap": "ন্যূনতম ব্যবধান", + "maxConcurrent": "সর্বোচ্চ সমসাময়িক", + "activeLimiters": "সক্রিয় সীমা-নিয়ন্ত্রক", + "noActiveLimiters": "এখনও কোনো সক্রিয় হার-সীমা নিয়ন্ত্রক নেই।", + "reservoir": "রিজার্ভয়ার", + "running": "চলমান", + "queued": "সারিবদ্ধ", + "circuitBreakers": "সার্কিট ব্রেকার", + "breakerStateClosed": "বন্ধ", + "breakerStateOpen": "খোলা", + "breakerStateHalfOpen": "অর্ধ-খোলা", + "tripped": "{count}টি ট্রিপ হয়েছে", + "healthy": "{count}টি সুস্থ", + "resetAll": "সব রিসেট করুন", + "noCircuitBreakers": "এখনও কোনো সার্কিট ব্রেকার সক্রিয় নেই। কম্বো পাইপলাইনের মধ্য দিয়ে অনুরোধ প্রবাহিত হলে এগুলো স্বয়ংক্রিয়ভাবে তৈরি হয়।", + "failures": "{count}টি ব্যর্থতা", + "policiesLocked": "নীতিমালা ও লক করা শনাক্তকারী", + "allOperational": "সব সিস্টেম সচল — কোনো লকআউট বা ট্রিপ হওয়া ব্রেকার নেই", + "loadingPolicies": "নীতিমালা লোড হচ্ছে...", + "lockedIdentifiers": "লক করা শনাক্তকারী", + "unlockedIdentifier": "আনলক করা হয়েছে: {identifier}", + "sinceDate": "{date} থেকে", + "forceUnlock": "জোরপূর্বক আনলক করুন", + "unlocking": "আনলক করা হচ্ছে...", + "failedUnlock": "আনলক করতে ব্যর্থ হয়েছে", + "failedLoadWithStatus": "লোড করতে ব্যর্থ হয়েছে: {status}", + "failedLoadResilience": "স্থিতিস্থাপকতার অবস্থা লোড করতে ব্যর্থ হয়েছে", + "saveFailed": "সংরক্ষণ ব্যর্থ হয়েছে", + "resetFailed": "রিসেট ব্যর্থ হয়েছে", + "loadingResilience": "স্থিতিস্থাপকতার অবস্থা লোড হচ্ছে...", + "retry": "পুনরায় চেষ্টা করুন", "systemStorage": "System & Storage", - "allDataLocal": "All data stored locally on your machine", - "databasePath": "Database Path", + "allDataLocal": "সমস্ত ডেটা আপনার মেশিনে স্থানীয়ভাবে সংরক্ষিত", + "databasePath": "ডেটাবেসের পাথ", "export": "এক্সপোর্ট", - "exportDatabase": "Export Database", - "exportAll": "Export All (.tar.gz)", - "importDatabase": "Import Database", - "confirmDbImport": "Confirm Database Import", - "confirmDbImportDesc": "This will replace all current data with the content from {file}. A backup will be created automatically before the import.", - "yesImport": "Yes, Import", - "lastBackup": "Last Backup", - "noBackupYet": "No backup yet", - "backupNow": "Backup Now", - "backupRestore": "Backup & Restore", - "viewBackups": "View Backups", - "hide": "Hide", - "backupRetentionDesc": "Database snapshots are created automatically before restore and every 15 minutes when data changes. Retention: 24 hourly + 30 daily backups with smart rotation.", - "loadingBackups": "Loading backups...", - "noBackupsYet": "No backups available yet. Backups will be created automatically when data changes.", - "backupsAvailable": "{count} backup(s) available", - "refresh": "Refresh", - "confirm": "Confirm?", - "yes": "Yes", - "no": "No", - "restore": "Restore", - "invalidFileType": "Invalid file type. Only .sqlite files are accepted.", - "exportFailed": "Export failed", - "exportFailedWithError": "Export failed: {error}", - "fullExportFailedWithError": "Full export failed: {error}", - "backupCreated": "Backup created: {file}", - "restoreSuccess": "Restored! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "importSuccess": "Database imported! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "minutesAgo": "{count}m ago", - "hoursAgo": "{count}h ago", - "daysAgo": "{count}d ago", - "backupReasonManual": "manual", - "backupReasonPreRestore": "pre-restore", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", - "noChangesSinceBackup": "No changes since last backup", - "backupFailed": "Backup failed", - "restoreFailed": "Restore failed", - "importFailed": "Import failed", - "errorDuringRestore": "An error occurred during restore", - "errorDuringImport": "An error occurred during import", - "modelPricing": "Model Pricing", - "modelPricingDesc": "Configure cost rates per model • All rates in $/1M tokens", + "exportDatabase": "ডেটাবেস এক্সপোর্ট করুন", + "exportAll": "সব এক্সপোর্ট করুন (.tar.gz)", + "importDatabase": "ডেটাবেস ইমপোর্ট করুন", + "confirmDbImport": "ডেটাবেস ইমপোর্ট নিশ্চিত করুন", + "confirmDbImportDesc": "এটি বর্তমান সব ডেটা {file}-এর বিষয়বস্তু দিয়ে প্রতিস্থাপন করবে। ইমপোর্টের আগে স্বয়ংক্রিয়ভাবে একটি ব্যাকআপ তৈরি করা হবে।", + "yesImport": "হ্যাঁ, ইমপোর্ট করুন", + "lastBackup": "সর্বশেষ ব্যাকআপ", + "noBackupYet": "এখনও কোনো ব্যাকআপ নেই", + "backupNow": "এখনই ব্যাকআপ নিন", + "backupRestore": "ব্যাকআপ ও পুনরুদ্ধার", + "viewBackups": "ব্যাকআপ দেখুন", + "hide": "লুকান", + "backupRetentionDesc": "পুনরুদ্ধারের আগে এবং ডেটা পরিবর্তিত হলে প্রতি ১৫ মিনিটে স্বয়ংক্রিয়ভাবে ডেটাবেস স্ন্যাপশট তৈরি করা হয়। সংরক্ষণকাল: স্মার্ট রোটেশনসহ ২৪টি ঘণ্টাভিত্তিক + ৩০টি দৈনিক ব্যাকআপ।", + "loadingBackups": "ব্যাকআপ লোড হচ্ছে...", + "noBackupsYet": "এখনও কোনো ব্যাকআপ উপলভ্য নেই। ডেটা পরিবর্তিত হলে স্বয়ংক্রিয়ভাবে ব্যাকআপ তৈরি করা হবে।", + "backupsAvailable": "{count}টি ব্যাকআপ উপলভ্য", + "refresh": "রিফ্রেশ করুন", + "confirm": "নিশ্চিত করবেন?", + "yes": "হ্যাঁ", + "no": "না", + "restore": "পুনরুদ্ধার করুন", + "invalidFileType": "ফাইলের ধরন সঠিক নয়। শুধু .sqlite ফাইল গ্রহণ করা হয়।", + "exportFailed": "এক্সপোর্ট ব্যর্থ হয়েছে", + "exportFailedWithError": "এক্সপোর্ট ব্যর্থ হয়েছে: {error}", + "fullExportFailedWithError": "সম্পূর্ণ এক্সপোর্ট ব্যর্থ হয়েছে: {error}", + "backupCreated": "ব্যাকআপ তৈরি হয়েছে: {file}", + "restoreSuccess": "পুনরুদ্ধার সম্পন্ন! {connections}টি সংযোগ, {nodes}টি নোড, {combos}টি কম্বো, {apiKeys}টি API কী।", + "importSuccess": "ডেটাবেস ইমপোর্ট হয়েছে! {connections}টি সংযোগ, {nodes}টি নোড, {combos}টি কম্বো, {apiKeys}টি API কী।", + "minutesAgo": "{count} মিনিট আগে", + "hoursAgo": "{count} ঘণ্টা আগে", + "daysAgo": "{count} দিন আগে", + "backupReasonManual": "ম্যানুয়াল", + "backupReasonPreRestore": "পুনরুদ্ধারের পূর্ববর্তী", + "connectionsCount": "{count, plural, one {#টি সংযোগ} other {#টি সংযোগ}}", + "noChangesSinceBackup": "শেষ ব্যাকআপের পর কোনো পরিবর্তন হয়নি", + "backupFailed": "ব্যাকআপ ব্যর্থ হয়েছে", + "restoreFailed": "পুনরুদ্ধার ব্যর্থ হয়েছে", + "importFailed": "ইমপোর্ট ব্যর্থ হয়েছে", + "errorDuringRestore": "পুনরুদ্ধারের সময় একটি ত্রুটি ঘটেছে", + "errorDuringImport": "ইমপোর্টের সময় একটি ত্রুটি ঘটেছে", + "modelPricing": "মডেলের মূল্য নির্ধারণ", + "modelPricingDesc": "প্রতি মডেলের খরচের হার কনফিগার করুন • সব হার $/1M টোকেনে", "pricingCoverage": "কভারেজ", "pricingAuth": "অথ", "pricingSort": "সর্ট করুন", @@ -7329,7 +7332,7 @@ "configured": "কনফিগার করা হয়েছে", "none": "কোনোটিই নয়", "modelOverrideValuePlaceholder": "সংখ্যাসূচক মান", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "ইংরেজিতে কমা দিয়ে আলাদা করা, যেমন low, medium, high", "addKeyValue": "কী ভ্যালু যোগ করুন", "noModelOverrides": "এই মডেলের জন্য কোনো ওভাররাইড কনফিগার করা হয়নি।", "modelOverrideLoadFailed": "মডেল ওভাররাইড লোড করতে ব্যর্থ হয়েছে", @@ -7337,66 +7340,66 @@ "modelOverrideRemoved": "মডেল ওভাররাইড সরিয়ে ফেলা হয়েছে", "modelOverrideSaveFailed": "মডেল ওভাররাইড সংরক্ষণ করতে ব্যর্থ হয়েছে", "modelOverrideRemoveFailed": "মডেল ওভাররাইড সরিয়ে ফেলতে ব্যর্থ হয়েছে", - "registry": "Registry", - "priced": "Priced", - "searchProvidersModels": "Search providers or models...", - "showAll": "Show All", - "noProvidersMatch": "No providers match your search.", - "howPricingWorks": "How Pricing Works", - "cacheWrite": "Cache Write", - "unsaved": "unsaved", + "registry": "রেজিস্ট্রি", + "priced": "মূল্য নির্ধারিত", + "searchProvidersModels": "প্রোভাইডার বা মডেল খুঁজুন...", + "showAll": "সব দেখান", + "noProvidersMatch": "আপনার অনুসন্ধানের সঙ্গে কোনো প্রদানকারী মেলেনি।", + "howPricingWorks": "মূল্য নির্ধারণ যেভাবে কাজ করে", + "cacheWrite": "ক্যাশ লেখা", + "unsaved": "অসংরক্ষিত", "resetDefaults": "ডিফল্ট রিসেট করুন", - "saveProvider": "Save Provider", + "saveProvider": "প্রদানকারী সংরক্ষণ করুন", "model": "Model", - "models": "models", - "moreProviders": "{count} more providers", - "withPricing": "with pricing configured", - "policiesCircuitBreakers": "Policies & Circuit Breakers", - "activeIssuesDetected": "Active issues detected", - "off": "Off", - "resetPricingConfirm": "Reset all pricing for {provider} to defaults?", - "pricingDescInput": "Input: tokens sent to the model", - "pricingDescOutput": "Output: tokens generated", - "pricingDescCached": "Cached: reused input (~50% of input rate)", - "pricingDescReasoning": "Reasoning: thinking tokens (falls back to Output)", - "pricingDescCacheWrite": "Cache Write: creating cache entries (falls back to Input)", - "pricingDescFormula": "Cost = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.", - "pricingSettingsTitle": "Pricing Settings", - "totalModels": "Total Models", - "active": "Active", - "costCalculation": "Cost Calculation", - "costCalculationDesc": "Costs are calculated based on token usage and pricing rates configured for each model.", - "pricingFormat": "Pricing Format", - "pricingFormatDesc": "All rates are in $/1M tokens (dollars per million tokens).", - "tokenTypes": "Token Types", - "inputTokenDesc": "Standard prompt tokens", - "outputTokenDesc": "Completion/response tokens", - "cachedTokenDesc": "Cached input tokens (typically 50% of input rate)", - "reasoningTokenDesc": "Special reasoning/thinking tokens (fallback to output rate)", - "cacheCreationTokenDesc": "Tokens used to create cache entries (fallback to input rate)", - "customPricingNote": "You can override default pricing for specific models. Custom overrides take priority over auto-detected pricing.", - "editPricing": "Edit Pricing", - "viewFullDetails": "View Full Details", + "models": "মডেল", + "moreProviders": "আরও {count}টি প্রদানকারী", + "withPricing": "মূল্য নির্ধারণ কনফিগার করা আছে", + "policiesCircuitBreakers": "নীতি ও সার্কিট ব্রেকার", + "activeIssuesDetected": "সক্রিয় সমস্যা শনাক্ত হয়েছে", + "off": "বন্ধ", + "resetPricingConfirm": "{provider}-এর সব মূল্য নির্ধারণ ডিফল্টে রিসেট করবেন?", + "pricingDescInput": "ইনপুট: মডেলে পাঠানো টোকেন", + "pricingDescOutput": "আউটপুট: তৈরি করা টোকেন", + "pricingDescCached": "ক্যাশ করা: পুনর্ব্যবহৃত ইনপুট (ইনপুট রেটের ~50%)", + "pricingDescReasoning": "রিজনিং: চিন্তন টোকেন (আউটপুটে ফলব্যাক করে)", + "pricingDescCacheWrite": "ক্যাশ লেখা: ক্যাশ এন্ট্রি তৈরি করা (ইনপুটে ফলব্যাক করে)", + "pricingDescFormula": "খরচ = (ইনপুট × ইনপুট_রেট) + (আউটপুট × আউটপুট_রেট) + (ক্যাশ করা × ক্যাশড_রেট), প্রতি দশ লক্ষ টোকেনে।", + "pricingSettingsTitle": "মূল্য নির্ধারণ সেটিংস", + "totalModels": "মোট মডেল", + "active": "সক্রিয়", + "costCalculation": "খরচ গণনা", + "costCalculationDesc": "প্রতিটি মডেলের জন্য কনফিগার করা টোকেন ব্যবহার ও মূল্যহারের ভিত্তিতে খরচ গণনা করা হয়।", + "pricingFormat": "মূল্য নির্ধারণের বিন্যাস", + "pricingFormatDesc": "সব মূল্যহার $/1M টোকেনে (প্রতি দশ লক্ষ টোকেনে ডলার) দেওয়া হয়েছে।", + "tokenTypes": "টোকেনের ধরন", + "inputTokenDesc": "স্ট্যান্ডার্ড প্রম্পট টোকেন", + "outputTokenDesc": "কমপ্লিশন/রেসপন্স টোকেন", + "cachedTokenDesc": "ক্যাশ করা ইনপুট টোকেন (সাধারণত ইনপুট রেটের 50%)", + "reasoningTokenDesc": "বিশেষ রিজনিং/চিন্তন টোকেন (আউটপুট রেটে ফলব্যাক)", + "cacheCreationTokenDesc": "ক্যাশ এন্ট্রি তৈরিতে ব্যবহৃত টোকেন (ইনপুট রেটে ফলব্যাক)", + "customPricingNote": "আপনি নির্দিষ্ট মডেলের জন্য ডিফল্ট মূল্য নির্ধারণ ওভাররাইড করতে পারেন। কাস্টম ওভাররাইড স্বয়ংক্রিয়ভাবে শনাক্ত করা মূল্য নির্ধারণের চেয়ে অগ্রাধিকার পায়।", + "editPricing": "মূল্য নির্ধারণ সম্পাদনা করুন", + "viewFullDetails": "সম্পূর্ণ বিবরণ দেখুন", "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "অভিযোজিত ভলিউম রাউটিং", + "adaptiveVolumeRoutingDesc": "পেলোডের পরিমাণ ও থ্রুপুটের চাপের ভিত্তিতে সংযোগগুলো গতিশীলভাবে স্কেল করুন।", + "lkgpToggleTitle": "সর্বশেষ কার্যকর প্রদানকারী (LKGP)", + "lkgpToggleDesc": "সক্রিয় করা হলে, রাউটারটি সর্বশেষ কোন প্রদানকারী সফল প্রতিক্রিয়া দিয়েছিল তা মনে রাখে এবং পরবর্তী অনুরোধগুলোতে প্রথমে সেটিকেই চেষ্টা করে।", "echoRequestedModelTitle": "রেসপন্সে অনুরোধকৃত মডেলের নাম ইকো করুন", "echoRequestedModelDesc": "সক্রিয় করা হলে, রেসপন্সের `model` ফিল্ডটি আপস্ট্রিম মডেল নামের পরিবর্তে ক্লায়েন্ট অনুরোধ করা অ্যালিয়াস বা কম্বো নামটি প্রতিধ্বনিত করে। এটি কঠোর ক্লায়েন্টদের (যেমন Claude Desktop) সমস্যা সমাধান করে যা এমন রেসপন্স প্রত্যাখ্যান করে যার মডেল অনুরোধের সাথে মেলে না।", "webSearchRouteTitle": "ওয়েব অনুসন্ধান রাউটিং", "webSearchRouteDesc": "যখন একটি অনুরোধে একটি নেটিভ web_search টুল অন্তর্ভুক্ত থাকে, তখন ডিফল্টের পরিবর্তে পুরো অনুরোধটি এই মডেলে রাউট করুন — এটি এমন প্রোভাইডারদের জন্য দরকারী যারা Anthropic-এর web_search সার্ভার টুল ইমপ্লিমেন্ট করে না। নিষ্ক্রিয় করতে ফাঁকা রাখুন।", "webSearchRoutePlaceholder": "একটি মডেল খুঁজুন বা নির্বাচন করুন…", "paidModelPatternWarning": "এই প্যাটার্নটি শুধুমাত্র পেইড মডেলগুলোর সাথে মেলে — পেইড মডেলগুলো সক্রিয় করুন অথবা প্যাটার্নটি সামঞ্জস্য করুন।", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP ক্যাশ পরিষ্কার করুন", + "lkgpCacheCleared": "LKGP ক্যাশ সফলভাবে সাফ করা হয়েছে", + "lkgpCacheClearFailed": "LKGP ক্যাশ সাফ করতে ব্যর্থ হয়েছে", + "days": "দিন", + "lkgp": "LKGP মোড", + "lkgpDesc": "সর্বশেষ কার্যকর প্রোভাইডার (অনুমানযোগ্য স্থিতিস্থাপকতা)", + "maintenance": "রক্ষণাবেক্ষণ", + "purgeExpiredLogs": "মেয়াদোত্তীর্ণ লগ মুছুন", + "purgeLogsFailed": "লগ মুছতে ব্যর্থ হয়েছে", "logsDeleted": "{count, plural, =0 {কোনো মেয়াদোত্তীর্ণ লগ মুছে ফেলা হয়নি} one {#টি মেয়াদোত্তীর্ণ লগ মুছে ফেলা হয়েছে} other {#টি মেয়াদোত্তীর্ণ লগ মুছে ফেলা হয়েছে}}", "resetUsageData": "ব্যবহারের ডেটা রিসেট করুন", "resetUsageDataDesc": "আপনি কতদিন আগের ব্যবহারের ডেটা, অনুরোধের লগ এবং অ্যানালিটিক্স ডেটা মুছে ফেলতে চান তা নির্বাচন করুন। প্রোভাইডার কনফিগারেশন, কানেকশন, API কী, কম্বো এবং সেটিংস সংরক্ষিত থাকবে। এই কাজটি পূর্বাবস্থায় ফেরানো যাবে না।", @@ -7413,63 +7416,63 @@ "resetUsageFailed": "ব্যবহারের ডেটা রিসেট করতে ব্যর্থ হয়েছে", "reset": "রিসেট করুন", "resetting": "রিসেট করা হচ্ছে...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", - "pricingSourceLiteLLM": "LiteLLM (Community)", - "clearSyncedPricingConfirm": "Clear all synced pricing data? Provider defaults will be used instead.", - "clearSyncedPricingFailed": "Failed to clear synced pricing", - "pricingSourceUser": "User Override", - "pageDescription": "Manage application settings, model aliases, pricing, and routing rules", - "pricingSyncStatus": "Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", - "pricingLoadFailed": "Failed to load pricing data", - "pricingSyncDescription": "Automatically sync model pricing from external sources to keep cost calculations accurate", - "clearSyncedPricingSuccess": "Synced pricing data cleared", - "clearSyncedPricingFailedWithReason": "Failed to clear pricing: {reason}", - "pricingSourceDefault": "Built-in Default", - "pricingSyncSuccess": "Pricing synced successfully", - "enableSyncError": "Failed to toggle pricing sync", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "contextOpt": "কনটেক্সটের জন্য অপ্টিমাইজ করা", + "contextOptDesc": "কনটেক্সট উইন্ডোর প্রয়োজনীয়তা এবং কথোপকথনের দৈর্ঘ্যের ভিত্তিতে রুট নির্ধারণ করে", + "cacheOpt": "ক্যাশের জন্য অপ্টিমাইজ করা", + "cacheOptDesc": "একই পুনর্ব্যবহারযোগ্য প্রম্পট প্রিফিক্স একই প্রোভাইডার অ্যাকাউন্টে রাখে", + "priorityDesc": "ক্রমিক ফলব্যাক—প্রথমে প্রোভাইডার ১, তারপর প্রোভাইডার ২ এবং এভাবে পর্যায়ক্রমে চেষ্টা করে", + "weightedDesc": "শতাংশভিত্তিক ওজন অনুযায়ী প্রোভাইডারগুলোর মধ্যে ট্রাফিক বিতরণ করে", + "modelRoutingTitle": "মডেল রাউটিং নিয়ম", + "modelRoutingDesc": "গ্লব প্যাটার্ন ব্যবহার করে মডেলগুলোকে স্বয়ংক্রিয়ভাবে নির্দিষ্ট কম্বোতে রুট করুন", + "addRule": "নিয়ম যোগ করুন", + "routeToCombo": "কম্বোতে রুট করুন", + "selectCombo": "কম্বো নির্বাচন করুন...", + "priorityHint": "মান যত বেশি, তত আগে পরীক্ষা করা হবে। নির্দিষ্ট প্যাটার্নের জন্য 10+ ব্যবহার করুন।", + "patternHint": "যেকোনো সংখ্যক অক্ষরের জন্য * এবং একটি অক্ষরের জন্য ? ব্যবহার করুন। অক্ষরের ছাঁদ সংবেদনশীল নয়।", + "noRoutingRules": "কোনো রাউটিং নিয়ম কনফিগার করা নেই। ডিফল্টভাবে অনুরোধগুলো গ্লোবাল কম্বো ব্যবহার করে।", + "routingRuleHint": "অনুরোধগুলো স্বয়ংক্রিয়ভাবে রুট করতে claude-opus* -> frontier-combo-এর মতো একটি নিয়ম যোগ করুন।", + "deleteRoutingRule": "এই মডেল রাউটিং নিয়মটি মুছবেন?", + "exactMatchMode": "হুবহু মিল", + "wildcardPatternMode": "ওয়াইল্ডকার্ড প্যাটার্ন", + "exactMatchModeDesc": "অপ্রচলিত বা নতুন নাম দেওয়া মডেল ID-গুলোর জন্য হুবহু অ্যালিয়াস ব্যবহার করুন।", + "wildcardPatternModeDesc": "একটি মডেল পরিবারের সব মডেলকে একই টার্গেটে ম্যাপ করতে * এবং ? সহ ওয়াইল্ডকার্ড অ্যালিয়াস ব্যবহার করুন।", + "noExactAliasesConfigured": "কোনো হুবহু-মিলের অ্যালিয়াস কনফিগার করা নেই।", + "wildcardRulesTitle": "ওয়াইল্ডকার্ড নিয়ম", + "noWildcardAliasesConfigured": "কোনো ওয়াইল্ডকার্ড অ্যালিয়াস কনফিগার করা নেই।", + "overview": "সংক্ষিপ্ত বিবরণ", + "unknownError": "অজানা ত্রুটি", + "pricingSourceLiteLLM": "LiteLLM (কমিউনিটি)", + "clearSyncedPricingConfirm": "সিঙ্ক করা মূল্যের সব ডেটা সাফ করবেন? এর পরিবর্তে প্রোভাইডারের ডিফল্ট মান ব্যবহার করা হবে।", + "clearSyncedPricingFailed": "সিঙ্ক করা মূল্য সাফ করতে ব্যর্থ হয়েছে", + "pricingSourceUser": "ব্যবহারকারীর ওভাররাইড", + "pageDescription": "অ্যাপ্লিকেশন সেটিংস, মডেল অ্যালিয়াস, মূল্য এবং রাউটিং নিয়ম পরিচালনা করুন", + "pricingSyncStatus": "সিঙ্কের স্থিতি", + "whitelist": "অনুমোদিত তালিকা", + "syncDisabled": "সিঙ্ক নিষ্ক্রিয়", + "pricingLoadFailed": "মূল্য নির্ধারণের ডেটা লোড করতে ব্যর্থ হয়েছে", + "pricingSyncDescription": "খরচের হিসাব নির্ভুল রাখতে বাহ্যিক উৎস থেকে মডেলের মূল্য স্বয়ংক্রিয়ভাবে সিঙ্ক করুন", + "clearSyncedPricingSuccess": "সিঙ্ক করা মূল্য নির্ধারণের ডেটা মুছে ফেলা হয়েছে", + "clearSyncedPricingFailedWithReason": "মূল্য নির্ধারণের ডেটা মুছতে ব্যর্থ হয়েছে: {reason}", + "pricingSourceDefault": "বিল্ট-ইন ডিফল্ট", + "pricingSyncSuccess": "মূল্য নির্ধারণ সফলভাবে সিঙ্ক হয়েছে", + "enableSyncError": "মূল্য সিঙ্ক টগল করতে ব্যর্থ হয়েছে", + "syncEnabled": "সিঙ্ক সক্রিয়", + "blacklist": "ব্ল্যাকলিস্ট", "pricingSourceModelsDev": "Models.dev", - "syncedModels": "Synced Models", - "budget": "Budget", - "pricingSyncTitle": "Pricing Sync", - "pricingResetFailedWithReason": "Failed to reset pricing: {reason}", - "tab": "Tab", - "pricingSavedProvider": "Pricing saved for {provider}", - "pricingSyncFailed": "Pricing sync failed", - "pricingSaveFailedWithReason": "Failed to save pricing: {reason}", - "pricingResetProvider": "Pricing reset for {provider}", - "nextSync": "Next Sync", - "pricingSyncFailedWithReason": "Pricing sync failed: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "syncedModels": "সিঙ্ক করা মডেলসমূহ", + "budget": "বাজেট", + "pricingSyncTitle": "মূল্য সিঙ্ক", + "pricingResetFailedWithReason": "মূল্য নির্ধারণ রিসেট করতে ব্যর্থ হয়েছে: {reason}", + "tab": "ট্যাব", + "pricingSavedProvider": "{provider}-এর জন্য মূল্য নির্ধারণ সংরক্ষিত হয়েছে", + "pricingSyncFailed": "মূল্য সিঙ্ক ব্যর্থ হয়েছে", + "pricingSaveFailedWithReason": "মূল্য নির্ধারণ সংরক্ষণ করতে ব্যর্থ হয়েছে: {reason}", + "pricingResetProvider": "{provider}-এর জন্য মূল্য নির্ধারণ রিসেট হয়েছে", + "nextSync": "পরবর্তী সিঙ্ক", + "pricingSyncFailedWithReason": "মূল্য সিঙ্ক ব্যর্থ হয়েছে: {reason}", + "clearSyncedPricing": "সিঙ্ক করা মূল্য নির্ধারণ মুছুন", + "compressionTitle": "প্রম্পট কম্প্রেশন", + "compressionDesc": "প্রোভাইডারদের কাছে পাঠানোর আগে প্রম্পট কম্প্রেস করে টোকেনের ব্যবহার কমান", "compressionGuidanceFullGuideLink": "সম্পূর্ণ কম্প্রেশন গাইড", "compressionGuidanceShow": "বিস্তারিত", "compressionGuidanceHide": "বিস্তারিত লুকান", @@ -7485,13 +7488,13 @@ "tokenSaverInputCompressionDesc": "কোড, URL এবং উদ্দেশ্য সংরক্ষণ করে উপযুক্ত চ্যাট ইতিহাস পুনরায় লিখুন।", "tokenSaverFineTunePrefix": "প্রতিটি ইঞ্জিন ফাইন-টিউন করুন এখানে:", "tokenSaverFineTuneSuffix": "অথবা প্রতি অনুরোধে ইঞ্জিনগুলো একত্রিত করুন এখানে:", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", + "compressionMode": "কম্প্রেশন মোড", + "compressionModeOff": "বন্ধ", + "compressionModeOffDesc": "কোনো কম্প্রেশন প্রয়োগ করা হয়নি", + "compressionModeLite": "লাইট", + "compressionModeLiteDesc": "হোয়াইটস্পেস ও ফাঁকা লাইন হ্রাস", + "compressionModeStandard": "স্ট্যান্ডার্ড (Caveman)", + "compressionModeStandardDesc": "৩০টির বেশি প্যাটার্নসহ নিয়মভিত্তিক কম্প্রেশন, যা কোড ব্লক ও URLs অপরিবর্তিত রাখে", "compressionModeAggressive": "আক্রমণাত্মক", "compressionModeAggressiveDesc": "সংক্ষিপ্তকরণ + টুল ফলাফল কম্প্রেশন + সর্বাধিক সঞ্চয়ের জন্য প্রগতিশীল বার্ধক্য", "compressionModeUltra": "আল্ট্রা", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "প্রতিটি বার্ধক্য স্তরে রাখা সাম্প্রতিক বার্তাগুলির সংখ্যা (উচ্চতর = আরও সংরক্ষিত)", "compressionToolStrategies": "টুল ফলাফল কৌশল", "compressionToolStrategiesDesc": "বিভিন্ন টুল ফলাফল প্রকারের জন্য কম্প্রেশন কৌশল টগল করুন", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "সাধারণ সেটিংস", + "compressionAutoTrigger": "স্বয়ংক্রিয়ভাবে সক্রিয় হওয়ার সীমা", + "compressionCacheTTL": "ক্যাশ TTL", + "compressionPreserveSystem": "সিস্টেম প্রম্পট অপরিবর্তিত রাখুন", "compressionPreserveSystemAlways": "সবসময়", "compressionPreserveSystemWhenNoCache": "যখন কোনো ক্যাশ নেই", "compressionPreserveSystemNever": "কখনোই নয়", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "সংরক্ষিত", "compressionExclusionsCount": "{count, plural, one {# বাদ} other {# বাদগুলো}} কনফিগার করা হয়েছে", "compressionExclusionsEmpty": "কোনো বাদ দেওয়া কনফিগার করা হয়নি — প্রতিটি মডেল/এন্ডপয়েন্ট সংকোচনের জন্য যোগ্য (ডিফল্ট আচরণ)।", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman ইঞ্জিন কনফিগারেশন", + "compressionCavemanConfigDesc": "নিয়মভিত্তিক কম্প্রেশন ইঞ্জিন সূক্ষ্মভাবে সমন্বয় করুন", "compressionCavemanPanelHint": "এর অন/অফ এবং লেভেল প্যানেলে সেট করা আছে:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "মেসেজ রোল কম্প্রেস করুন", + "compressionRoleUser": "ব্যবহারকারী", + "compressionRoleAssistant": "সহকারী", + "compressionRoleSystem": "সিস্টেম", + "compressionMinLength": "বার্তার ন্যূনতম দৈর্ঘ্য", + "compressionSkipRules": "কম্প্রেশন নিয়ম এড়িয়ে যান", + "compressionSkipRulesDesc": "কম্প্রেশনের সময় নিয়মগুলো এড়িয়ে যেতে সেগুলোতে ক্লিক করুন", + "compressionPreservePatterns": "প্যাটার্ন সংরক্ষণ করুন", + "compressionPreservePatternsDesc": "যেসব Regex প্যাটার্ন কখনো কম্প্রেস করা হয় না (প্রতি লাইনে একটি)", + "compressionLogTitle": "কম্প্রেশন লগ", + "compressionLogEmpty": "এখনও কোনো অনুরোধ কম্প্রেস করা হয়নি। কম্প্রেশন সক্রিয় রেখে অনুরোধ প্রক্রিয়া করা হলে কম্প্রেশনের পরিসংখ্যান এখানে দেখা যাবে।", "minutes": "মিনিট", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "কমান্ড-সচেতন টুল আউটপুট ফিল্টারিং", + "compressionModeCodexResponses": "Responses টুলের আউটপুট", + "compressionModeCodexResponsesDesc": "উপযুক্ত shell, patch, search, build এবং JSON আউটপুটের জন্য সতর্কতামূলক কম্প্রেশন", + "compressionModeStacked": "স্তরীকৃত", + "compressionModeStackedDesc": "RTK টুল-আউটপুট ফিল্টারিংয়ের পরে Caveman বার্তা কম্প্রেশন", + "qdrantTitle": "Qdrant (ভেক্টর মেমোরি)", + "qdrantDesc": "ঐচ্ছিক। দ্রুত পুনরুদ্ধারের জন্য একটি বাহ্যিক ভেক্টর ডেটাবেসে সেমান্টিক মেমোরিগুলো ইন্ডেক্স করে।", + "qdrantStatusActive": "সক্রিয়", + "qdrantStatusError": "ত্রুটি", + "qdrantStatusDisabled": "নিষ্ক্রিয়", + "qdrantEnable": "Qdrant সক্রিয় করুন", + "qdrantEnableDesc": "সক্রিয় থাকলে, সেমান্টিক/হাইব্রিড কৌশল মেমোরি পুনরুদ্ধার করতে Qdrant ব্যবহার করতে পারে।", + "qdrantTesting": "পরীক্ষা করা হচ্ছে...", + "qdrantTestConnection": "সংযোগ পরীক্ষা করুন", + "qdrantSaved": "কনফিগারেশন সংরক্ষিত হয়েছে", + "qdrantSaveError": "কনফিগারেশন সংরক্ষণ করা যায়নি", + "qdrantHostHint": "পোর্ট ছাড়া। উদাহরণ: 127.0.0.1 বা http://qdrant", + "qdrantPort": "পোর্ট", + "qdrantPortHint": "Qdrant-এর ডিফল্ট: 6333", + "qdrantCollectionHint": "যেখানে মেমোরি পয়েন্টগুলো সংরক্ষণ করা হবে।", + "qdrantEmbeddingModel": "এমবেডিং মডেল", + "qdrantHelpTitle": "দ্রুত সেটআপ সহায়তা", + "qdrantHelpQuickTitle": "দ্রুত সেটআপ (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. হোস্ট: Qdrant IP/URL, পোর্ট: 6333, কালেকশন: omniroute_memory।", + "qdrantHelpStep2": "2. nvidia/llama-nemotron-embed-vl-1b-v2:free ব্যবহার করলে, কালেকশনের ডাইমেনশন 2048 ব্যবহার করুন।", + "qdrantHelpStep3": "3. মডেল ফিল্ড: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free।", + "qdrantHelpStep4": "4. সংরক্ষণ করুন, সংযোগ পরীক্ষা করুন, তারপর অনুসন্ধান পরীক্ষা করুন।", + "qdrantEmbeddingQuickSelect": "শনাক্ত করা মডেলগুলো থেকে দ্রুত নির্বাচন করুন...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "ফরম্যাট: provider/model। প্রোভাইডারের ক্রেডেনশিয়াল অবশ্যই কনফিগার করা থাকতে হবে।", + "qdrantApiKeyPlaceholderKeep": "(বর্তমান কী রাখতে খালি রাখুন)", + "qdrantApiKeyPlaceholderOptional": "(ব্যবহার না করলে খালি রাখুন)", + "qdrantSaveHint": "পরামর্শ: host/port/collection/model সম্পাদনা করে Save-এ ক্লিক করুন। API key ঐচ্ছিক।", + "qdrantSearchTestTitle": "অনুসন্ধান পরীক্ষা", + "qdrantSearchTestDesc": "এম্বেডিং তৈরি করে Qdrant-এ অনুসন্ধান করে।", + "qdrantSearchPlaceholder": "উদাহরণ: ব্যবহারকারীর পছন্দ, ইতিহাস ইত্যাদি", + "qdrantNoResults": "কোনো ফলাফল নেই (অথবা Qdrant কনফিগার করা নেই)।", + "qdrantCleanupTitle": "সংরক্ষণকাল ও পরিষ্কারকরণ", + "qdrantCleanupDesc": "এর ভিত্তিতে মেয়াদোত্তীর্ণ ও পুরোনো পয়েন্ট সরিয়ে দেয়", + "searching": "অনুসন্ধান করা হচ্ছে...", + "cleaning": "পরিষ্কার করা হচ্ছে...", + "cleanNow": "এখনই পরিষ্কার করুন", "optional": "ঐচ্ছিক", "current": "কারেন্ট", "remove": "সরান", @@ -7600,19 +7603,19 @@ "resilienceScope": "সুযোগ:", "resilienceTrigger": "ট্রিগার:", "resilienceEffect": "প্রভাব:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "অনুরোধের সারি ও হার", + "resilienceAutoEnableApiKeyProviders": "API-key প্রদানকারীদের জন্য স্বয়ংক্রিয়ভাবে সক্রিয় করুন", + "resilienceRequestsPerMinute": "প্রতি মিনিটে অনুরোধ", + "resilienceMinTimeBetweenRequests": "অনুরোধগুলোর মধ্যকার সর্বনিম্ন সময়", + "resilienceConcurrentRequests": "সমসাময়িক অনুরোধ", + "resilienceConnectionScopeConcurrentRequests": "প্রতি সংযোগ/কোটা পরিসরে সমসাময়িক অনুরোধ", + "resilienceGlobalConcurrentRequests": "সার্বিক সমসাময়িক আপস্ট্রিম অনুরোধ (0 = নিষ্ক্রিয়)", "resilienceMaxQueueWaitTime": "সর্বোচ্চ সারি অপেক্ষার সময়", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "প্রাথমিক কুলডাউন", + "resilienceUseUpstreamRetryHints": "আপস্ট্রিম পুনঃচেষ্টার ইঙ্গিত ব্যবহার করুন", + "resilienceDefaultPerProvider": "ডিফল্ট (প্রতি প্রদানকারী)", + "resilienceAlwaysOn": "সর্বদা চালু", + "resilienceAlwaysOff": "সর্বদা বন্ধ", "routingRemoveEntry": "এন্ট্রি সরান", "routingNeedlesSubstrings": "সূঁচ (মেলে সাবস্ট্রিং)", "routingCaseSensitive": "কেস সংবেদনশীল", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "এক্সট্র্যাক্ট করা বিবরণটি মূল অনুরোধে পুনরায় ইনজেক্ট করার আগে ভিশন মডেলে পাঠানো হয়েছে।", "visionBridgeTimeoutMs": "টাইমআউট (মিসে)", "visionBridgeMaxImagesPerRequest": "অনুরোধ প্রতি সর্বোচ্চ ছবি", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "সর্বোচ্চ ব্যাকঅফ ধাপ", + "resilienceProviderBreakerTitle": "প্রতি প্রদানকারীর জন্য সার্কিট ব্রেকার", + "resilienceFailureThreshold": "ব্যর্থতার সীমা", + "resilienceDegradationThreshold": "অবনতির সীমা", "resilienceResetTimeout": "টাইমআউট রিসেট করুন", "resilienceFailureThresholdLabel": "ব্যর্থতার থ্রেশহোল্ড", "resilienceResetTimeoutLabel": "টাইমআউট রিসেট করুন", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "সংযোগ কুলডাউন", "resilienceUseUpstreamRetryHintsLabel": "আপস্ট্রিম পুনরায় চেষ্টা ইঙ্গিত ব্যবহার করুন", "resilienceUseUpstream429BreakerLabel": "আপস্ট্রিম 429 ইঙ্গিত ব্যবহার করুন (ব্রেকার)", "resilienceMaxBackoffStepsLabel": "সর্বোচ্চ ব্যাকঅফ পদক্ষেপ", "resilienceYes": "হ্যাঁ", "resilienceNo": "না", - "resilienceDefault": "Default", + "resilienceDefault": "ডিফল্ট", "storageDatabaseBackupRetention": "ডাটাবেস ব্যাকআপ ধরে রাখা", "storageDatabaseBackups": "ডাটাবেস ব্যাকআপ", "storageBackupRetentionDescription": "স্বয়ংক্রিয় SQLite ব্যাকআপগুলো এখানে সংরক্ষিত থাকে", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "লেগ্যাসি JSON সফলভাবে ইম্পোর্ট করা হয়েছে!", "jsonImportFailed": "JSON ইম্পোর্ট করতে ব্যর্থ হয়েছে", "jsonImportError": "JSON ইম্পোর্ট করার সময় ত্রুটি ঘটেছে", + "jsonImportAuthRequired": "একটি পুরোনো JSON কনফিগারেশন আমদানি করতে প্রমাণীকরণ আবশ্যক। অনুগ্রহ করে প্রথমে সাইন ইন করুন অথবা সেটআপ সম্পূর্ণ করুন।", + "databaseSettingsAuthRequiredTitle": "প্রমাণীকরণ আবশ্যক", + "databaseSettingsAuthRequiredBody": "ডেটাবেস সেটিংস এবং JSON আমদানি শুধু প্রমাণীকৃত অ্যাডমিনের জন্য উপলভ্য। এগুলো দেখতে ও সম্পাদনা করতে সাইন ইন করুন অথবা সেটআপ সম্পূর্ণ করুন।", + "databaseSettingsAuthRequiredCta": "সাইন ইন করুন", "storagePurgeData": "ডেটা শুদ্ধ করুন", "storagePurgeDataDesc": "রিটেনশন চেক প্রয়োগ না করেই অবিলম্বে সমস্ত রেকর্ড মুছে ফেলুন। সতর্কতার সাথে ব্যবহার করুন।", "storageRetentionCleanup": "রিটেনশন সেটিংস", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "মোড: {mode}", "compressionAdaptiveOff": "অ্যাডাপ্টিভ কনটেক্সট বাজেট: বন্ধ (লেগাসি অটো-ট্রিগার)", "compressionAdaptiveTarget": "অ্যাডাপ্টিভ ({mode}, পলিসি: {policy}) — টার্গেট ≈ {target, number} টোকেন ({contextLimit, number}-টোকেন উইন্ডোর জন্য)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "অভিযোজিত কনটেক্সট বাজেট", + "compressionAdaptiveModeOff": "বন্ধ (পুরোনো স্বয়ংক্রিয় ট্রিগার)", + "compressionAdaptiveModeFloor": "ন্যূনতম সীমা (সর্বদা ফিট হওয়া নিশ্চিত করুন)", + "compressionAdaptiveModeReplace": "স্বয়ংক্রিয় ট্রিগার প্রতিস্থাপন করুন", + "compressionAdaptivePolicy": "বাজেট নীতি", + "compressionAdaptivePolicyReserve": "আউটপুট সংরক্ষণ", + "compressionAdaptivePolicyPercentage": "উইন্ডোর শতাংশ", + "compressionAdaptivePolicyAbsolute": "নির্দিষ্ট টোকেন বাজেট", "compressionOutputStylesDescription": "প্রোভাইডার আউটপুট রিরাইট না করেই রেসপন্স-শেপিং নির্দেশাবলী ইনজেক্ট করুন। অবাধে একত্রিত করুন।", "mcpAccessibilityDescription": "MCP টুল আউটপুট স্কোপ করে (আলাদা স্টোর)।", "compressionStylesTileSummary": "{tokens, number} টোকেন সাশ্রয় হয়েছে · {runs, plural, one {#টি রান স্টাইল করা হয়েছে} other {#টি রান স্টাইল করা হয়েছে}}", @@ -7866,8 +7873,8 @@ "description": "কমান্ড-আউটপুট ফিল্টারিং।" }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses Tool আউটপুট", + "description": "সমর্থিত Responses tool আউটপুটের জন্য সতর্কতামূলক কম্প্রেশন।" }, "headroom": { "label": "হেডরুম", @@ -7908,12 +7915,12 @@ "description": "YAGNI ল্যাডার: ক্ষুদ্রতম কার্যকরী পরিবর্তন, কোনো অনুরোধহীন অ্যাবস্ট্রাকশন নয়।" }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (অলস সিনিয়র ডেভেলপার)", + "description": "অলস সিনিয়র-ডেভেলপার শৃঙ্খলা: YAGNI ধাপ বেয়ে এগোন, মূল কারণ ঠিক করুন, সবচেয়ে ছোট কার্যকর diff ব্যবহার করুন।" }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "আমার ADHD আছে (কাজ-আগে)", + "description": "কাজ-আগে আউটপুট: পরবর্তী কাজটি প্রথমে থাকবে, ধাপগুলো নম্বরযুক্ত হবে, একটি সুনির্দিষ্ট পরবর্তী ধাপ থাকবে, কোনো ভূমিকা থাকবে না।" }, "terse-cjk": { "label": "সংক্ষিপ্ত CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI ফলব্যাক", "cliproxyapiEnableFallback": "CLIProxyAPI ফলব্যাক সক্ষম করুন৷", "cliproxyapiUrl": "CLIProxyAPI URL", + "headroomProxyTitle": "Headroom প্রক্সি", + "headroomProxyDesc": "ঐচ্ছিক Headroom টোকেন-সাশ্রয়ী প্রক্সির URL। খালি রাখলে HEADROOM_URL অথবা http://localhost:8787 ব্যবহার করা হবে।", + "headroomProxyUrl": "Headroom URL", + "headroomProxyUrlHint": "লুপব্যাক URL-গুলো এই পৃষ্ঠা থেকে চালু করা যায়। বাহ্যিক URL-গুলো শুধু পরীক্ষা করা হয়।", + "headroomProxySave": "সংরক্ষণ করুন", + "headroomProxyStart": "শুরু করুন", + "headroomProxyStop": "বন্ধ করুন", + "headroomProxyExternalHint": "এই URL-টি লুপব্যাক নয়, তাই OmniRoute স্থানীয় CLI চালু করবে না।", "cliproxyapiStatus": "CLIProxyAPI স্থিতি", "cliproxyapiNotDetected": "সনাক্ত করা হয়নি", "cliproxyapiImportAuthTitle": "CLIProxyAPI থেকে অ্যাকাউন্ট ইম্পোর্ট করুন", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "ওপেনএআই কোডেক্স অনুরোধের জন্য বিশ্বব্যাপী service_tier=প্রোরিটি ইনজেক্ট করুন।", "codexFastTierHint": "যখন সক্রিয় করা হয়, OmniRoute সংযোগের জন্য আউটবাউন্ড কোডেক্স অনুরোধগুলিতে service_tier=priority যোগ করে যা ইতিমধ্যে একটি স্তর নির্দিষ্ট করে না। অগ্রাধিকার স্তরের জন্য একটি OpenAI Enterprise API কী বা ChatGPT-auth Codex পাথ প্রয়োজন; অন্যান্য কী ধরনের OpenAI থেকে একটি স্তর-সম্পর্কিত ত্রুটি পাবে। কোডেক্স প্রদানকারী পৃষ্ঠায় প্রতি-সংযোগ সেটিংস অগ্রাধিকার নেয়।", "codexFastTierSaveError": "কোডেক্স ফাস্ট টিয়ার সেটিং আপডেট করতে ব্যর্থ হয়েছে", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex কোটা অটো-পিং", + "codexAutoPingDesc": "প্রতি সংযোগে অপ্ট-ইন: Codex সেশন উইন্ডো রিসেট হওয়ার ঠিক পরে একটি ক্ষুদ্র অনুরোধ পাঠায়, যাতে প্রয়োজনের সময় এটি কোল্ড না থাকে।", + "codexAutoPingWarning": "প্রতিটি পিংয়ে অল্প পরিমাণ প্রকৃত Codex কোটা ব্যবহৃত হয়। ডিফল্টভাবে বন্ধ—শুধু যেসব সংযোগের ওপর আপনি সক্রিয়ভাবে নির্ভর করেন, সেগুলোর জন্য এটি চালু করুন।", + "codexAutoPingSaveError": "Codex অটো-পিং সেটিং আপডেট করা যায়নি", + "codexAutoPingToggleAria": "{connection}-এর জন্য Codex কোটা অটো-পিং টগল করুন", "codexFastTierTierLabel": "সার্ভিস টিয়ার", "codexFastTierTierPriority": "অগ্রাধিকার", "codexFastTierTierFlex": "ফ্লেক্স", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "বৈশ্বিক পরীক্ষার ব্যবধান", "resilienceCredentialHealthEveryMinutes": "প্রতি {minutes} মিনিট", "resilienceCredentialHealthHint": "0 পটভূমি স্ক্যান বন্ধ করে (সর্বোচ্চ 1440 মিনিট = 24 ঘণ্টা)। নিজস্ব স্বাস্থ্য পরীক্ষা মানযুক্ত সংযোগ এই বৈশ্বিক ডিফল্ট উপেক্ষা করে; কোনো সংযোগে 0 সেট করলে বৈশ্বিক স্ক্যান চালু থাকলেও সেটি বাদ পড়ে।", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "{provider}-এর জন্য সর্বদা চালু—OAuth অ্যাকাউন্টের নিরাপত্তার জন্য আবশ্যক; বন্ধ করা যাবে না।", + "forcedFingerprintBadge": "আবশ্যক", "sessionAffinityTitle": "সেশন অ্যাফিনিটি", "sessionAffinityDesc": "যেকোনো প্রোভাইডারের জন্য, এত সেকেন্ডের জন্য একই অ্যাকাউন্টে একটি কথোপকথন বজায় রাখে। 0 এটি নিষ্ক্রিয় করে।", "sessionAffinityTtl": "অ্যাফিনিটি TTL (সেকেন্ড)", @@ -8187,14 +8202,14 @@ "removeErrorCode": "{code} সরান", "addErrorCode": "এরর কোড যোগ করুন...", "suggestions": "পরামর্শ:", - "modelLockoutMaxCooldownHint": "≥ Base Cooldown — 3,600,000ms", + "modelLockoutMaxCooldownHint": "≥ বেস কুলডাউন—3,600,000ms", "modelLockoutEnabled": "মডেল লকআউট সক্ষম করুন", "modelLockoutEnabledDescription": "সক্ষম করা হলে, কনফিগার করা এরর কোড সহ ব্যর্থ হওয়া মডেলগুলি রিট্রাই লুপ প্রতিরোধ করতে সাময়িকভাবে লক করা হয়।", "modelLockoutErrorCodes": "এরর কোড", "modelLockoutErrorCodesDescription": "HTTP স্ট্যাটাস কোড যা মডেল লকআউট ট্রিগার করে। একটি কোড টাইপ করুন এবং Add ক্লিক করুন, অথবা পরামর্শ থেকে নির্বাচন করুন।", - "modelLockoutBaseCooldown": "Base Cooldown (ms)", + "modelLockoutBaseCooldown": "বেস কুলডাউন (ms)", "modelLockoutBaseCooldownDescription": "একটি মডেল পুনরায় চেষ্টা করার আগে মিলিসেকেন্ডে প্রাথমিক কুলডাউন সময়কাল।", - "modelLockoutMaxCooldown": "Max Cooldown (ms)", + "modelLockoutMaxCooldown": "সর্বোচ্চ কুলডাউন (ms)", "modelLockoutMaxCooldownDescription": "মিলিসেকেন্ডে সর্বোচ্চ কুলডাউন সময়কাল। অতিরিক্ত দীর্ঘ লকআউট প্রতিরোধ করে।", "modelLockoutExponentialBackoff": "এক্সপোনেনশিয়াল ব্যাকঅফ", "modelLockoutExponentialBackoffDescription": "সক্রিয় করা থাকলে, প্রতিটি ধারাবাহিক ব্যর্থতা কুলডাউন সময়কাল এক্সপোনেনশিয়ালি বৃদ্ধি করে।", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "কুলডাউন বৃদ্ধি বন্ধ হওয়ার আগে ব্যাকঅফ ধাপের সর্বোচ্চ সংখ্যা। বেশিরভাগ কনফিগারেশনে Max Cooldown সীমায় প্রথমে পৌঁছায়, ফলে Max Cooldown বাড়ানো হলে এটি একটি সুরক্ষা সীমা হিসেবে কাজ করে।", "disableSessionStickiness": "সেশন স্টিকিনেস নিষ্ক্রিয় করুন", "disableSessionStickinessDesc": "রাউন্ড-রবিন এবং র‍্যান্ডম কম্বোগুলি প্রথম বার্তার হ্যাশ দ্বারা একটি সম্পূর্ণ কথোপকথনকে একটি সংযোগে পিন করার পরিবর্তে প্রতিটি অনুরোধে একটি ভিন্ন সংযোগে রোটেট করে। মাল্টি-টার্ন চ্যাটের জন্য প্রম্পট-ক্যাশ হিট সংরক্ষণ করতে এটি বন্ধ রাখুন। প্রতি-কম্বো ওভাররাইড অগ্রাধিকার পাবে।", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "প্রম্পট-ক্যাশ লোক্যালিটি রাউটিং", + "promptCacheAffinityDesc": "স্বাস্থ্য ও কোটা ফেইলওভার বজায় রেখে মিলে যাওয়া প্রম্পট-ক্যাশ কিগুলোর জন্য একই প্রোভাইডার অ্যাকাউন্টকে অগ্রাধিকার দিন।", + "reasoningTokenBuffer": "রিজনিং টোকেন বাফার", + "reasoningTokenBufferDesc": "শুধু পরিচিত রিজনিং মডেলগুলোর জন্য কম্বো রাউটিংকে max_tokens হেডরুম যোগ করার অনুমতি দিন, যখন সম্পূর্ণ বাফারটি একটি পরিচিত আউটপুট সীমার মধ্যে মানানসই হয়।", + "zeroLatencyOptimizations": "শূন্য-বিলম্ব অপ্টিমাইজেশন", + "zeroLatencyOptimizationsDesc": "হেজিং, পূর্বাভাসমূলক TTFT স্কিপ এবং সক্রিয় ফলব্যাক কম্প্রেশনের জন্য অপ্ট-ইন করুন। এই লেটেন্সি ফিচারগুলোকে টার্গেটের সঙ্গে প্রতিযোগিতা করা বা ফলব্যাক অনুরোধ কম্প্রেস করা থেকে বিরত রাখতে এটি বন্ধ রাখুন।", "credentialRedaction": "ক্রেডেনশিয়াল রিডাকশন", "credentialRedactionDesc": "প্রোভাইডারদের কাছে পাঠানো কনটেক্সট এবং প্রতিক্রিয়া থেকে API কী, টোকেন এবং সিক্রেট রিডাক্ট করুন।", "enableCredentialRedaction": "ক্রেডেনশিয়াল রিডাকশন সক্রিয় করুন", "enableCredentialRedactionDesc": "বার্তা, টুল কল এবং প্রতিক্রিয়া থেকে API কী, টোকেন, প্রাইভেট কী এবং JWT মুছে ফেলে।", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "স্বয়ংক্রিয় সিঙ্ক নিষ্ক্রিয়", + "pricingAutoSyncEnabled": "স্বয়ংক্রিয় সিঙ্ক সক্রিয়", "modalityBridgeIntro": "শুধু-টেক্সট মডেলে পৌঁছানোর আগে মাল্টিমোডাল বিষয়বস্তুকে টেক্সটে রূপান্তর করুন। ভিশন, অডিও ও ভিডিও ব্রিজ উপলভ্য এবং কনফিগারযোগ্য।", "modalityBridgeVisionTab": "দৃষ্টি", "modalityBridgeAudioTab": "অডিও", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "স্বাস্থ্য", "cliproxyapiPort": "পোর্ট", "qdrantHost": "হোস্ট", - "qdrantCollection": "সংগ্রহ", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "সংগ্রহ" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "RTK ইঞ্জিন", + "description": "টুল আউটপুট, টার্মিনাল লগ এবং বিল্ড ফলাফলের জন্য কমান্ড-সচেতন কম্প্রেশন।", + "enabled": "সক্রিয়", + "intensity": "তীব্রতা", + "intensityMinimal": "ন্যূনতম", + "intensityStandard": "মানক", + "intensityAggressive": "আক্রমণাত্মক", + "toolResults": "টুলের ফলাফল", + "assistantMessages": "সহকারীর বার্তা", + "codeBlocks": "কোড ব্লক", "filterCatalog": "ফিল্টার ক্যাটালগ", "filterCatalogDesc": "বিভাগ দ্বারা উপলব্ধ আউটপুট ফিল্টার", "guidedConfig": "কনফিগারেশন", "guidedConfigDesc": "RTK কীভাবে আপনার টার্মিনাল আউটপুট ফিল্টার করে তা সামঞ্জস্য করুন", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "সর্বোচ্চ লাইন", + "maxChars": "সর্বোচ্চ অক্ষর", "deduplicateThreshold": "ডিডুপ্লিকেট থ্রেশহোল্ড", "customFilters": "কাস্টম ফিল্টার", "detectedType": "সনাক্ত করা টাইপ", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "ব্যর্থতা", "rawOutputAlways": "সর্বদা", "rawOutputMaxBytes": "কাঁচা আউটপুট সর্বোচ্চ বাইট", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "ফিল্টার পরীক্ষা", + "pasteOutput": "ফিল্টারিং পরীক্ষা করতে টুলের আউটপুট পেস্ট করুন...", "presetHigh": "আক্রমণাত্মক", "presetLow": "আলো", "presetMaxChars": "সর্বোচ্চ আউটপুট অক্ষর", "presetMaxLines": "সর্বোচ্চ আউটপুট লাইন", "presetMedium": "স্ট্যান্ডার্ড", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "চালান", + "result": "ফলাফল", + "previewEmpty": "RTK আউটপুটের প্রিভিউ দেখতে একটি নমুনা চালান।", + "detected": "শনাক্ত হয়েছে", "masterSwitchOffAlert": "Token Saver মাস্টার সুইচ OFF — আপনি Endpoint পৃষ্ঠা থেকে এটি চালু না করা পর্যন্ত এই সেটিংস অনুরোধগুলিকে প্রভাবিত করবে না।", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "ফিল্টার করা টোকেন", + "filtersActive": "সক্রিয় ফিল্টার", + "requests": "অনুরোধ", + "avgSavings": "গড় সাশ্রয়", "simpleMode": "সরল", "advancedMode": "উন্নত", "searchFilters": "ফিল্টার অনুসন্ধান করুন...", @@ -8499,7 +8506,7 @@ "description": "স্পষ্ট রো-কাউন্ট মার্কার সহ সমজাতীয় JSON অ্যারে-র লসলেস ট্যাবুলার কম্প্যাকশন." }, "session-dedup": { - "name": "Session Dedup", + "name": "সেশন ডিডুপ্লিকেশন", "description": "পুনরুদ্ধারযোগ্য কন্টেন্ট মার্কার সহ ক্রস-টার্ন ব্লক ডিডুপ্লিকেশন।" }, "ccr": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "কম্প্রেশন কম্বো", + "description": "বিভিন্ন রাউটিং পরিস্থিতিতে ইঞ্জিনগুলো কীভাবে একত্রিত হবে তা নির্ধারণ করুন।", + "createCombo": "কম্প্রেশন কম্বো তৈরি করুন", + "editCombo": "সম্পাদনা", + "deleteCombo": "মুছুন", + "deleteConfirm": "এই কম্প্রেশন কম্বোটি মুছবেন?", + "pipeline": "পাইপলাইন", + "addStep": "ধাপ যোগ করুন", + "removeStep": "সরান", + "name": "নাম", + "descriptionField": "বিবরণ", + "languagePacks": "ভাষা প্যাক", + "outputMode": "আউটপুট মোড", + "assignToRouting": "রাউটিং কম্বোতে বরাদ্দ করুন", + "noAssignments": "কোনো রাউটিং কম্বিনেশন উপলভ্য নেই", + "default": "ডিফল্ট", + "setAsDefault": "ডিফল্ট হিসেবে সেট করুন", + "save": "সংরক্ষণ করুন", + "cancel": "বাতিল করুন", + "enabled": "সক্রিয়", "loading": "লোড হচ্ছে…", "hubTitle": "কম্প্রেশন হাব", "hubDescription": "সার্বজনীনভাবে কোন কম্প্রেশন প্রোফাইল চলবে তা বেছে নিন।", @@ -8661,6 +8668,8 @@ "contextEditingNote": "বর্তমানে শুধুমাত্র Claude (Anthropic)-এর জন্য উপলব্ধ। এটি একটি ডেলিগেটেড মোড: প্রোভাইডার সার্ভার-সাইডে পুরানো টুল-ইউজ ব্লকগুলি মুছে ফেলে — আমরা মেসেজ পুনরায় লিখি না। এটি অন্যান্য প্রোভাইডারদের প্রভাবিত করে না।", "namedCombos": "নামযুক্ত কম্বো", "namedCombosDescription": "বিভিন্ন পাইপলাইন সংরক্ষণ করুন এবং নির্দিষ্ট রাউটিং কম্বোতে সেগুলি বরাদ্দ করুন।", + "activeProfileMasterSwitchOffWarning": "মূল \"Prompt Compression\" সুইচটি চালু না করা পর্যন্ত নিচের সক্রিয় প্রোফাইলটি চলবে না।", + "activeProfileMasterSwitchOffCta": "Settings-এ এটি চালু করুন", "comboNamePlaceholder": "কম্বোর নাম", "descriptionPlaceholder": "বিবরণ", "nameRequired": "সংরক্ষণ করার আগে একটি কম্বোর নাম লিখুন।", @@ -8674,9 +8683,7 @@ "languagePacksList": "ভাষা প্যাক: {packs}", "dragToReorder": "ধাপের ক্রম পরিবর্তন করতে টেনে আনুন", "engine": "ইঞ্জিন", - "intensity": "তীব্রতা", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "তীব্রতা" }, "compressionStudio": { "noRun": "কোনো কম্প্রেশন রান উপলব্ধ নেই।", @@ -8705,7 +8712,7 @@ "run": "রান করুন", "laneRejected": "প্রত্যাখ্যাত: {reason}", "error": "ত্রুটি", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "সমন্বিত পাইপলাইন প্রিভিউ ব্যর্থ হয়েছে: {reason}", "combinedFlow": "সম্মিলিত ফ্লো", "eachLayer": "প্রতিটি লেয়ার আলাদাভাবে", "diff": "পার্থক্য", @@ -8780,27 +8787,27 @@ }, "enableTitle": "ইঞ্জিনটি সক্রিয় করুন", "enableDescription": "স্ট্যাকের সবার শেষে চলে (RTK/Caveman টেক্সট পরিষ্কার করার পর, OmniGlyph বাকি অংশকে ইমেজে রূপান্তর করে) এবং omniglyph মোডের মাধ্যমে এককভাবেও চলে। এটি একটি প্রিভিউ এবং এন্ড-টু-এন্ড যাচাইকরণ সম্পন্ন না হওয়া পর্যন্ত ডিফল্টরূপে বন্ধ থাকবে।", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "কম্প্রেশন প্রোফাইল", + "profileDescription": "প্রোফাইলটি সর্বোচ্চ সীমা, সর্বনিম্ন নয়: আরও কঠোর প্রোফাইলকে প্রতি-ধাপের ওভাররাইড দিয়ে শিথিল করা যাবে না। এই কোডবেসে পরিমাপ অনুযায়ী: coding-safe বা balanced ব্যবহার করলে, যে সেশনে এখনো কোনো ইতিহাস জমেনি সেটি কিছুই কম্প্রেস করে না, কারণ উভয়ই ন্যূনতম অক্ষরের সীমা বাড়ায় এবং সিস্টেম প্রম্পট, টুল স্কিমা ও টুলের ফলাফল অপরিবর্তিত রাখে।", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "আক্রমণাত্মক (ডিফল্ট)", + "description": "প্রকাশিত রসিদগুলোতে পরিমাপ করা নীতি। সিস্টেম প্রম্পট, টুল ডকুমেন্টেশন এবং ঘন ইতিহাসের ইমেজ তৈরি করে।" }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "ভারসাম্যপূর্ণ", + "description": "লাইভ স্টেট অপরিবর্তিত রাখে এবং শেষ ৮টি টার্ন সুরক্ষিত রাখে; শুধু পুরোনো বন্ধ ইতিহাস সংকুচিত করে।" }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "কোডিং-নিরাপদ", + "description": "কর্তৃত্ব, টুল স্কিমা এবং লাইভ টুল আউটপুট অপরিবর্তিত রেখে শেষ ১২টি টার্ন সুরক্ষিত রাখে। সেশনে ইতিহাস জমা না হওয়া পর্যন্ত কিছুই কম্প্রেস করে না।" }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "পাসথ্রু", + "description": "কোনো রূপান্তর ছাড়াই রাউট করে। ইঞ্জিনটি এড়িয়ে অনুরোধটি অপরিবর্তিত অবস্থায় ফরওয়ার্ড করা হয়।" } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph কম্প্রেশন প্রোফাইল নির্বাচন করুন", "saved": "সংরক্ষিত হয়েছে।", "saveFailed": "সংরক্ষণ করা যায়নি।", "enableAria": "OmniGlyph ইঞ্জিনটি সক্রিয় করুন", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "নিয়ম-ভিত্তিক বার্তা কম্প্রেশন, ভাষা প্যাক, অ্যানালিটিক্স এবং আউটপুট মোড নিয়ন্ত্রণ।", "advancedConfig": "উন্নত কনফিগারেশন", "advancedConfigDesc": "ফাইন-টিউন কম্প্রেশন আচরণ", "aggressiveSettings": "আক্রমণাত্মক সেটিংস", "aggressiveSettingsDesc": "সম্ভাব্য মানের ট্রেড-অফ সহ সর্বাধিক কম্প্রেশন", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "অনুরোধ", + "tokensSaved": "সাশ্রয় করা টোকেন", + "savingsPercent": "সাশ্রয় %", + "avgLatency": "গড় ল্যাটেন্সি", + "languagePacks": "ভাষা প্যাক", + "languagePacksDesc": "নির্দিষ্ট ভাষার জন্য কম্প্রেশন নিয়ম সক্রিয় করুন।", "labelAutoTrigger": "প্রসঙ্গ ছাড়িয়ে গেলে স্বয়ংক্রিয়-সংকোচন করুন", "labelCompressionRate": "কম্প্রেশন শক্তি", "labelMaxTokens": "বার্তা প্রতি লক্ষ্য টোকেন", "labelMinLength": "ন্যূনতম বার্তা দৈর্ঘ্য", "labelMinSavings": "সংরক্ষণ করার জন্য ন্যূনতম টোকেন", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "সক্রিয়", + "autoDetect": "স্বয়ংক্রিয়ভাবে ভাষা শনাক্ত করুন", + "rulesCount": "{count}টি নিয়ম", "inputCompressionTitle": "ইনপুট কম্প্রেশন", "inputCompressionDesc": "চ্যাট হিস্ট্রি আরও ছোট শব্দে পুনরায় লিখুন। এটি ইনপুট টোকেন প্রায় ৫০% হ্রাস করে।", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "কম্প্রেশন অ্যানালিটিক্স", + "noAnalytics": "এখনো কোনো কম্প্রেশন অ্যানালিটিক্স নেই।", "masterDisabledWarning": "Token Saver মাস্টার সুইচটি বন্ধ রয়েছে — আপনি Compression Settings থেকে এটি চালু না করা পর্যন্ত বা এখান থেকে পরিবর্তন না করা পর্যন্ত এই সেটিংস অনুরোধগুলিকে প্রভাবিত করবে না।", "outputMode": "আউটপুট মোড", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "আউটপুট মোড", "quickSettings": "দ্রুত সেটিংস", "quickSettingsDesc": "শুরু করার জন্য প্রাথমিক কম্প্রেশন সেটিংস", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "স্বয়ংক্রিয়-স্পষ্টতা বাইপাস", + "bypassConditions": "বাইপাসের শর্তাবলি", "bypassConditionsList": "নিরাপত্তা, অপরিবর্তনীয়, স্পষ্টীকরণ, আদেশ-সংবেদনশীল", "simpleMode": "সরল", "advancedMode": "উন্নত", @@ -8944,52 +8951,52 @@ "ultraSettings": "আল্ট্রা সেটিংস", "ultraSettingsDesc": "SLM-চালিত শব্দার্থিক কম্প্রেশন", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "সংক্ষেপে উত্তর দিন। প্রযুক্তিগত পরিভাষা, কোড, ত্রুটি, URLs এবং শনাক্তকারী অপরিবর্তিত রাখুন।", + "full": "সংক্ষিপ্ত ও আঁটসাঁটভাবে উত্তর দিন। সব প্রযুক্তিগত তথ্য অক্ষুণ্ণ রাখুন।", + "ultra": "প্রচলিত প্রযুক্তিগত সংক্ষিপ্ত রূপ ব্যবহার করে অত্যন্ত সংক্ষেপে উত্তর দিন। সঠিক প্রতীকগুলো অক্ষুণ্ণ রাখুন।" } }, "translator": { - "title": "Translator", - "metaTitle": "Translator Playground | OmniRoute", - "metaDescription": "Debug, test, and visualize API format translations between providers", - "playgroundTitle": "Translator Playground", - "playground": "Playground", - "realtime": "Real-Time Translation Activity", + "title": "অনুবাদক", + "metaTitle": "অনুবাদক প্লেগ্রাউন্ড | OmniRoute", + "metaDescription": "প্রোভাইডারগুলোর মধ্যে API ফরম্যাটের অনুবাদ ডিবাগ, পরীক্ষা ও ভিজুয়ালাইজ করুন", + "playgroundTitle": "অনুবাদক প্লেগ্রাউন্ড", + "playground": "প্লেগ্রাউন্ড", + "realtime": "রিয়েল-টাইম অনুবাদ কার্যকলাপ", "chatTester": "Chat Tester", - "testBench": "Test Bench", - "liveMonitor": "Live Monitor", - "modeDescriptionPlayground": "Paste any API request body and see how OmniRoute translates it between provider formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", - "modeDescriptionChatTester": "Send real chat requests through OmniRoute and inspect the full round-trip: input, translated request, provider response, and translated output.", - "modeDescriptionTestBench": "Run predefined scenarios and compare compatibility across providers and models.", - "modeDescriptionLiveMonitor": "Watch translation events in real time as requests flow through OmniRoute.", - "modeDescriptionFallback": "Debug, test, and visualize how OmniRoute translates API requests between providers.", - "recentTranslations": "Recent Translations", - "noTranslations": "No translations yet", - "source": "Source", - "target": "Target", - "time": "Time", + "testBench": "টেস্ট বেঞ্চ", + "liveMonitor": "লাইভ মনিটর", + "modeDescriptionPlayground": "যেকোনো API রিকোয়েস্ট বডি পেস্ট করুন এবং দেখুন OmniRoute কীভাবে সেটিকে প্রোভাইডার ফরম্যাটগুলোর মধ্যে অনুবাদ করে (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", + "modeDescriptionChatTester": "OmniRoute-এর মাধ্যমে বাস্তব চ্যাট রিকোয়েস্ট পাঠান এবং সম্পূর্ণ রাউন্ড-ট্রিপ পরিদর্শন করুন: ইনপুট, অনূদিত রিকোয়েস্ট, প্রোভাইডারের রেসপন্স এবং অনূদিত আউটপুট।", + "modeDescriptionTestBench": "পূর্বনির্ধারিত দৃশ্যপট চালান এবং প্রোভাইডার ও মডেলগুলোর মধ্যে সামঞ্জস্য তুলনা করুন।", + "modeDescriptionLiveMonitor": "OmniRoute-এর মধ্য দিয়ে রিকোয়েস্ট প্রবাহিত হওয়ার সময় রিয়েল-টাইমে অনুবাদ ইভেন্ট দেখুন।", + "modeDescriptionFallback": "OmniRoute কীভাবে প্রোভাইডারগুলোর মধ্যে API রিকোয়েস্ট অনুবাদ করে তা ডিবাগ, পরীক্ষা ও ভিজুয়ালাইজ করুন।", + "recentTranslations": "সাম্প্রতিক অনুবাদ", + "noTranslations": "এখনও কোনো অনুবাদ নেই", + "source": "উৎস", + "target": "লক্ষ্য", + "time": "সময়", "model": "Model", "status": "Status", - "latency": "Latency", - "totalTranslations": "Total Translations", - "successful": "Successful", - "errors": "Errors", - "avgLatency": "Avg Latency", + "latency": "ল্যাটেন্সি", + "totalTranslations": "মোট অনুবাদ", + "successful": "সফল", + "errors": "ত্রুটি", + "avgLatency": "গড় ল্যাটেন্সি", "millisecondsShort": "{value}ms", "notAvailableSymbol": "—", - "liveAutoRefreshing": "Live — Auto-refreshing", - "paused": "Paused", - "eventsAppearHint": "Translation events appear here as requests flow through OmniRoute. Use any of these methods to generate events:", + "liveAutoRefreshing": "লাইভ — স্বয়ংক্রিয়ভাবে রিফ্রেশ হচ্ছে", + "paused": "বিরতিতে", + "eventsAppearHint": "OmniRoute-এর মধ্য দিয়ে রিকোয়েস্ট প্রবাহিত হওয়ার সময় অনুবাদ ইভেন্টগুলো এখানে দেখা যায়। ইভেন্ট তৈরি করতে নিচের যেকোনো পদ্ধতি ব্যবহার করুন:", "chatTesterTab": "Chat Tester", "testBenchTab": "Test Bench", - "externalApiCalls": "External API calls", - "ideCliIntegrations": "IDE/CLI integrations", - "inMemoryNote": "Note: Events are stored in-memory and reset when the server restarts.", + "externalApiCalls": "বাহ্যিক API কল", + "ideCliIntegrations": "IDE/CLI ইন্টিগ্রেশন", + "inMemoryNote": "দ্রষ্টব্য: ইভেন্টগুলো মেমরিতে সংরক্ষিত থাকে এবং সার্ভার রিস্টার্ট হলে রিসেট হয়।", "ok": "OK", - "errorShort": "ERR", - "formatConverter": "Format Converter", - "formatConverterDescription": "Paste or type a JSON request body. The translator will auto-detect the source format and convert it to the target format. Use this to debug how OmniRoute translates requests between formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", + "errorShort": "ত্রুটি", + "formatConverter": "ফরম্যাট কনভার্টার", + "formatConverterDescription": "একটি JSON রিকোয়েস্ট বডি পেস্ট বা টাইপ করুন। অনুবাদক স্বয়ংক্রিয়ভাবে উৎস ফরম্যাট শনাক্ত করে সেটিকে লক্ষ্য ফরম্যাটে রূপান্তর করবে। OmniRoute কীভাবে ফরম্যাটগুলোর মধ্যে রিকোয়েস্ট অনুবাদ করে তা ডিবাগ করতে এটি ব্যবহার করুন (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)।", "translationPathHubSpoke": "{source} → OpenAI (ইন্টারমিডিয়েট) → {target}", "translationPathDirect": "{source} → {target} (সরাসরি অনুবাদক)", "translationPathPassthrough": "একই বিন্যাস — কোন অনুবাদের প্রয়োজন নেই", @@ -9012,79 +9019,79 @@ "featureDirectPathsDesc": "কিছু ফরম্যাট জোড়ার (Claude→Jemini) সরাসরি অনুবাদক আছে যা OpenAI হাবকে বাইপাস করে, আরও সঠিক আউটপুট তৈরি করে।", "featureImageMapping": "ইমেজ সাইজ ম্যাপিং", "featureImageMappingDesc": "API ফরম্যাটের মধ্যে চিত্রের মাত্রা কনভেনশন অনুবাদ করে (যেমন, OpenAI বিস্তারিত মাত্রা → মিথুন মাত্রা)।", - "input": "Input", - "output": "Output", + "input": "ইনপুট", + "output": "আউটপুট", "auto": "Auto", - "swapFormats": "Swap formats", - "translateAction": "Translate", - "clear": "Clear", - "inputPlaceholder": "Paste a request body here or select a template below...", - "exampleTemplates": "Example Templates", - "exampleTemplatesHint": "— Click to load", - "templateLoadHint": "Template loads the request in {format} format. Change Source Format to load in a different format.", - "compatibilityTester": "Compatibility Tester", - "compatibilityReport": "Compatibility Report", - "testBenchDescription": "Run predefined scenarios (Simple Chat, Tool Calling, etc.) to verify translation and provider compatibility. Select a source format and target provider, then run all tests to see a compatibility percentage. Use this to find which features work across providers.", - "targetProvider": "Target Provider", - "runAllTests": "Run All Tests", - "runTest": "Run Test", - "reRun": "Re-run", - "running": "Running...", - "passed": "passed", - "failed": "failed", - "passedIconLabel": "✅ Passed", - "chunks": "chunks", - "scenarioSimpleChat": "Simple Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "swapFormats": "ফরম্যাট অদলবদল করুন", + "translateAction": "অনুবাদ করুন", + "clear": "মুছুন", + "inputPlaceholder": "এখানে একটি রিকোয়েস্ট বডি পেস্ট করুন অথবা নিচ থেকে একটি টেমপ্লেট নির্বাচন করুন...", + "exampleTemplates": "উদাহরণ টেমপ্লেট", + "exampleTemplatesHint": "— লোড করতে ক্লিক করুন", + "templateLoadHint": "টেমপ্লেটটি অনুরোধটিকে {format} ফরম্যাটে লোড করে। ভিন্ন ফরম্যাটে লোড করতে উৎস ফরম্যাট পরিবর্তন করুন।", + "compatibilityTester": "সামঞ্জস্য পরীক্ষক", + "compatibilityReport": "সামঞ্জস্য প্রতিবেদন", + "testBenchDescription": "অনুবাদ ও প্রোভাইডার সামঞ্জস্য যাচাই করতে পূর্বনির্ধারিত পরিস্থিতিগুলো (সাধারণ চ্যাট, টুল কলিং ইত্যাদি) চালান। একটি উৎস ফরম্যাট ও লক্ষ্য প্রোভাইডার নির্বাচন করুন, তারপর সামঞ্জস্যের শতাংশ দেখতে সব পরীক্ষা চালান। কোন কোন ফিচার বিভিন্ন প্রোভাইডারে কাজ করে তা জানতে এটি ব্যবহার করুন।", + "targetProvider": "লক্ষ্য প্রোভাইডার", + "runAllTests": "সব পরীক্ষা চালান", + "runTest": "পরীক্ষা চালান", + "reRun": "আবার চালান", + "running": "চলছে...", + "passed": "সফল", + "failed": "ব্যর্থ", + "passedIconLabel": "✅ সফল", + "chunks": "চাঙ্ক", + "scenarioSimpleChat": "সাধারণ চ্যাট", + "scenarioToolCalling": "টুল কলিং", + "scenarioMultiTurn": "বহু-পালা", "scenarioThinking": "Thinking", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "সিস্টেম প্রম্পট", + "scenarioStreaming": "স্ট্রিমিং", "templateNames": { - "simple-chat": "Simple Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "সাধারণ চ্যাট", + "tool-calling": "টুল কলিং", + "multi-turn": "বহু-পালা", "thinking": "Thinking", - "system-prompt": "System Prompt", - "streaming": "Streaming", + "system-prompt": "সিস্টেম প্রম্পট", + "streaming": "স্ট্রিমিং", "vision": "দৃষ্টি", "schema-coercion": "স্কিমা জবরদস্তি" }, "templateDescriptions": { - "simple-chat": "Basic text message", - "tool-calling": "Function/tool invocation", - "multi-turn": "Conversation with history", - "thinking": "Extended thinking / reasoning", - "system-prompt": "Complex system instructions", - "streaming": "SSE streaming request", + "simple-chat": "সাধারণ টেক্সট বার্তা", + "tool-calling": "ফাংশন/টুল আহ্বান", + "multi-turn": "পূর্ববর্তী কথোপকথনসহ আলাপ", + "thinking": "বিস্তৃত চিন্তাভাবনা / যুক্তি", + "system-prompt": "জটিল সিস্টেম নির্দেশনা", + "streaming": "SSE স্ট্রিমিং অনুরোধ", "vision": "ইমেজ ইনপুট সহ মাল্টিমোডাল অনুরোধ", "schema-coercion": "স্ট্রাকচার্ড-আউটপুট / JSON স্কিমা এনফোর্সমেন্ট" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful assistant.", - "userGreeting": "Hello! How are you today?" + "system": "আপনি একজন সহায়ক সহকারী।", + "userGreeting": "হ্যালো! আজ আপনি কেমন আছেন?" }, "toolCalling": { - "userWeather": "What's the weather in São Paulo?", - "toolDescription": "Get current weather for a location", - "cityNameDescription": "City name" + "userWeather": "São Paulo-এর আবহাওয়া কেমন?", + "toolDescription": "কোনো অবস্থানের বর্তমান আবহাওয়া জানুন", + "cityNameDescription": "শহরের নাম" }, "multiTurn": { - "system": "You are a coding assistant.", - "userInitial": "Write a function to sort an array in Python.", - "assistantExample": "Here's a simple sort function: ```python\ndef sort_array(arr): return sorted(arr)\n```", - "userFollowUp": "Now make it sort in descending order." + "system": "আপনি একজন কোডিং সহকারী।", + "userInitial": "Python-এ একটি অ্যারে সাজানোর জন্য একটি ফাংশন লিখুন।", + "assistantExample": "এখানে একটি সাধারণ সর্ট ফাংশন রয়েছে: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userFollowUp": "এখন এটিকে অবরোহ ক্রমে সাজানোর উপযোগী করুন।" }, "thinking": { - "question": "What is the sum of the first 100 prime numbers?" + "question": "প্রথম ১০০টি মৌলিক সংখ্যার যোগফল কত?" }, "systemPrompt": { - "systemInstruction": "You are a senior software engineer specializing in distributed systems. Answer questions concisely using industry best practices. Always provide code examples when relevant. Format your responses using markdown.", - "question": "How do I implement a circuit breaker pattern?" + "systemInstruction": "আপনি ডিস্ট্রিবিউটেড সিস্টেমে বিশেষজ্ঞ একজন সিনিয়র সফটওয়্যার ইঞ্জিনিয়ার। ইন্ডাস্ট্রির সেরা অনুশীলন অনুসরণ করে সংক্ষেপে প্রশ্নের উত্তর দিন। প্রাসঙ্গিক ক্ষেত্রে সবসময় কোডের উদাহরণ দিন। markdown ব্যবহার করে আপনার উত্তর ফরম্যাট করুন।", + "question": "আমি কীভাবে সার্কিট ব্রেকার প্যাটার্ন বাস্তবায়ন করব?" }, "streaming": { - "prompt": "Tell me a short story about a robot learning to paint." + "prompt": "ছবি আঁকা শিখছে এমন একটি রোবটকে নিয়ে একটি ছোট গল্প বলুন।" }, "vision": { "system": "আপনি একজন সহকারী যিনি চিত্রগুলিকে সুনির্দিষ্টভাবে বর্ণনা করেন৷", @@ -9097,12 +9104,12 @@ "cityDescription": "প্রশ্ন করার জন্য শহর, যেমন 'টোকিও' বা 'নিউ ইয়র্ক'।" } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", - "noTemplateForFormat": "No template for this format", - "translationFailed": "Translation failed: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "openaiCompatibleLabel": "OpenAI-এর সাথে সামঞ্জস্যপূর্ণ", + "anthropicCompatibleLabel": "Anthropic-এর সাথে সামঞ্জস্যপূর্ণ", + "noTemplateForFormat": "এই ফরম্যাটের জন্য কোনো টেমপ্লেট নেই", + "translationFailed": "অনুবাদ ব্যর্থ হয়েছে: {error}", + "pipelineDebugger": "পাইপলাইন ডিবাগার", + "translationPipeline": "অনুবাদ পাইপলাইন", "loading": "লোড হচ্ছে…", "compressionOriginal": "মূল", "compressionCompressed": "সংকুচিত", @@ -9111,44 +9118,44 @@ "pipelineStepsAria": "পাইপলাইন ধাপসমূহ", "copyIntermediateJson": "অন্তর্বর্তীকালীন JSON কপি করুন", "copyOutputJson": "আউটপুট JSON কপি করুন", - "pipelineVisualization": "Pipeline visualization", - "pipelineVisualizationHint": "Send a message to see how your request flows through detection → translation → provider call.", - "chatTesterDescription": "Send messages as a specific client format and inspect each step of the translation pipeline.", - "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response", - "clickStepToInspect": "Click any step to inspect the data at that stage.", - "clientFormat": "Client Format", - "provider": "Provider", - "modelPlaceholder": "Select or type a model name...", - "sendMessageToSeePipeline": "Send a message to see the translation pipeline", - "chatMessageHintPrefix": "Your message will be formatted as a", - "chatMessageHintSuffix": "request, translated through the pipeline, and sent to the selected provider.", - "youWithFormat": "You ({format})", - "assistant": "Assistant", - "typeMessage": "Type a message...", - "send": "Send", - "clientRequest": "Client Request", - "clientRequestDescription": "The request body as your client would send it", - "formatDetected": "Format Detected", - "formatDetectedDescription": "OmniRoute auto-detects the API format from the request structure", - "openaiIntermediate": "OpenAI Intermediate", - "openaiIntermediateDescription": "All formats are first normalized to OpenAI format (the universal bridge)", - "providerFormat": "Provider Format", - "providerFormatDescription": "OpenAI format is translated to the provider's native format", - "providerResponse": "Provider Response", - "providerResponseRawDescription": "The raw response from the provider API", - "providerResponseSseDescription": "The raw SSE stream from the provider API", - "unexpectedError": "An unexpected error occurred", - "error": "Error", - "errorMessage": "Error: {message}", - "requestFailed": "Request failed", - "noTextExtracted": "(No text extracted)", + "pipelineVisualization": "পাইপলাইন ভিজ্যুয়ালাইজেশন", + "pipelineVisualizationHint": "শনাক্তকরণ → অনুবাদ → প্রোভাইডার কলের মধ্য দিয়ে আপনার অনুরোধ কীভাবে প্রবাহিত হয় তা দেখতে একটি বার্তা পাঠান।", + "chatTesterDescription": "একটি নির্দিষ্ট ক্লায়েন্ট ফরম্যাটে বার্তা পাঠান এবং অনুবাদ পাইপলাইনের প্রতিটি ধাপ পরিদর্শন করুন।", + "chatTesterFlow": "ক্লায়েন্ট অনুরোধ → ফরম্যাট শনাক্তকরণ → OpenAI মধ্যবর্তী ফরম্যাট → প্রোভাইডার ফরম্যাট → প্রতিক্রিয়া", + "clickStepToInspect": "সেই পর্যায়ের ডেটা পরিদর্শন করতে যেকোনো ধাপে ক্লিক করুন।", + "clientFormat": "ক্লায়েন্ট ফরম্যাট", + "provider": "প্রোভাইডার", + "modelPlaceholder": "একটি মডেলের নাম নির্বাচন করুন বা লিখুন...", + "sendMessageToSeePipeline": "অনুবাদ পাইপলাইন দেখতে একটি বার্তা পাঠান", + "chatMessageHintPrefix": "আপনার বার্তাটি এই ফরম্যাটে রূপান্তরিত হবে:", + "chatMessageHintSuffix": "অনুরোধ, যা পাইপলাইনের মধ্য দিয়ে অনূদিত হয়ে নির্বাচিত প্রোভাইডারের কাছে পাঠানো হবে।", + "youWithFormat": "আপনি ({format})", + "assistant": "সহকারী", + "typeMessage": "একটি বার্তা লিখুন...", + "send": "পাঠান", + "clientRequest": "ক্লায়েন্ট অনুরোধ", + "clientRequestDescription": "আপনার ক্লায়েন্ট যেভাবে অনুরোধের বডি পাঠাবে", + "formatDetected": "শনাক্ত করা ফরম্যাট", + "formatDetectedDescription": "OmniRoute অনুরোধের কাঠামো থেকে স্বয়ংক্রিয়ভাবে API ফরম্যাট শনাক্ত করে", + "openaiIntermediate": "OpenAI মধ্যবর্তী ফরম্যাট", + "openaiIntermediateDescription": "সব ফরম্যাট প্রথমে OpenAI ফরম্যাটে স্বাভাবিকীকরণ করা হয় (সার্বজনীন সেতু)", + "providerFormat": "প্রোভাইডার ফরম্যাট", + "providerFormatDescription": "OpenAI ফরম্যাটটি প্রোভাইডারের নিজস্ব ফরম্যাটে অনুবাদ করা হয়", + "providerResponse": "প্রোভাইডারের প্রতিক্রিয়া", + "providerResponseRawDescription": "প্রোভাইডার API থেকে পাওয়া অপরিবর্তিত প্রতিক্রিয়া", + "providerResponseSseDescription": "প্রোভাইডার API থেকে পাওয়া অপরিবর্তিত SSE স্ট্রিম", + "unexpectedError": "একটি অপ্রত্যাশিত ত্রুটি ঘটেছে", + "error": "ত্রুটি", + "errorMessage": "ত্রুটি: {message}", + "requestFailed": "অনুরোধ ব্যর্থ হয়েছে", + "noTextExtracted": "(কোনো টেক্সট বের করা যায়নি)", "liveMonitorMemoryNote": "ইভেন্টগুলি মেমরিতে সংরক্ষণ করা হয় এবং পুনরায় চালু করার সময় হারিয়ে যায়।", "liveMonitorMemoryCapNote": "সর্বোচ্চ 200টি ইভেন্ট রাখা হয়েছে।", "eventSourcesLabel": "ইভেন্ট সূত্র:", "eventSourceTranslatorPage": "• অনুবাদক পৃষ্ঠা (চ্যাট টেস্টার, টেস্ট বেঞ্চ)", "eventSourceMainPipeline": "• প্রধান অনুরোধ পাইপলাইন (CLI/IDE/API ট্র্যাফিক)", - "liveMonitorDescriptionPrefix": "Shows translation events as API calls flow through OmniRoute. Events come from the in-memory buffer (resets on restart). Use", - "liveMonitorDescriptionSuffix": ", or external API calls to generate events.", + "liveMonitorDescriptionPrefix": "OmniRoute-এর মাধ্যমে API কল প্রবাহিত হওয়ার সময় অনুবাদের ইভেন্টগুলো দেখায়। ইভেন্টগুলো ইন-মেমরি বাফার থেকে আসে (পুনরায় চালু করলে রিসেট হয়)। ব্যবহার করুন", + "liveMonitorDescriptionSuffix": ", অথবা ইভেন্ট তৈরি করতে বাহ্যিক API কল ব্যবহার করুন।", "streamTransformer": "স্ট্রিম ট্রান্সফরমার", "modeDescriptionStreamTransformer": "রেসপন্স ট্রান্সফরমারের মাধ্যমে চ্যাট সমাপ্তি SSE স্ট্রীম চালান।", "streamTransformerTitle": "প্রতিক্রিয়া স্ট্রীম ট্রান্সফরমার", @@ -9181,7 +9188,7 @@ "conceptHeadline": "আপনার অ্যাপটি একটি নির্দিষ্ট API-এর \"ভাষা\" বোঝে। অনুবাদক এটিকে অন্য প্রোভাইডার ব্যবহার করার জন্য রূপান্তর করে।", "conceptDiagramAppLabel": "আপনার অ্যাপ", "conceptDiagramSourceLabel": "উৎস ফরম্যাট", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (হাব)", "conceptDiagramTargetLabel": "টার্গেট প্রোভাইডার", "conceptDiagramExampleApp": "যেমন Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9259,7 +9266,7 @@ "streamTransformFailed": "স্ট্রিম রূপান্তর করতে ব্যর্থ হয়েছে" }, "usage": { - "title": "Usage", + "title": "ব্যবহার", "grokExtraUsageCredits": "অতিরিক্ত ব্যবহার ক্রেডিট", "grokAutoTopUp": "অটো টপ-আপ", "grokAutoTopUpUnavailable": "অপলব্ধ", @@ -9277,66 +9284,66 @@ "kiloPassRemaining": "অবশিষ্ট", "kiloPassRenews": "{count} দিনের মধ্যে নবায়ন হবে", "kiloPassUsageLabel": "এই মাসের ব্যবহার", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "অতিরিক্ত ব্যবহারের ক্রেডিট", + "kimiExtraUsage": "অতিরিক্ত ব্যবহার", + "kimiExtraUsageEnabled": "সক্রিয়", + "kimiExtraUsageDisabled": "নিষ্ক্রিয়", + "kimiExtraUsageFrozen": "স্থগিত", + "kimiExtraUsageUnavailable": "অনুপলভ্য", + "kimiMonthlyUsed": "এই মাসে ব্যবহৃত", + "kimiMonthlyLimit": "মাসিক সীমা", + "kimiMonthlyLimitUnlimited": "সীমাহীন", + "kimiAdditionalCredits": "অতিরিক্ত ক্রেডিট", + "loggerTab": "লগার", "proxyTab": "Proxy", - "budgetManagement": "Budget Management", - "budgetSaved": "Budget limits saved", - "budgetSaveFailed": "Failed to save budget", - "loadingBudgetData": "Loading budget data...", - "noApiKeysTitle": "No API Keys", - "noApiKeysDescription": "Add API keys first to set up budget limits.", - "apiKey": "API Key", - "todaysSpend": "Today's Spend", - "thisMonth": "This Month", - "setLimits": "Set Limits", - "dailyLimitUsd": "Daily Limit (USD)", - "monthlyLimitUsd": "Monthly Limit (USD)", - "warningThresholdPercent": "Warning Threshold (%)", - "dailyLimitPlaceholder": "e.g. 5.00", - "monthlyLimitPlaceholder": "e.g. 50.00", + "budgetManagement": "বাজেট ব্যবস্থাপনা", + "budgetSaved": "বাজেটের সীমা সংরক্ষণ করা হয়েছে", + "budgetSaveFailed": "বাজেট সংরক্ষণ করা যায়নি", + "loadingBudgetData": "বাজেটের ডেটা লোড হচ্ছে...", + "noApiKeysTitle": "কোনো API কী নেই", + "noApiKeysDescription": "বাজেটের সীমা নির্ধারণ করতে প্রথমে API কী যোগ করুন।", + "apiKey": "API কী", + "todaysSpend": "আজকের ব্যয়", + "thisMonth": "এই মাসে", + "setLimits": "সীমা নির্ধারণ করুন", + "dailyLimitUsd": "দৈনিক সীমা (USD)", + "monthlyLimitUsd": "মাসিক সীমা (USD)", + "warningThresholdPercent": "সতর্কতার সীমা (%)", + "dailyLimitPlaceholder": "যেমন 5.00", + "monthlyLimitPlaceholder": "যেমন 50.00", "warningThresholdPlaceholder": "80", - "saveLimits": "Save Limits", - "budgetOk": "Budget OK — {remaining} remaining", - "budgetExceeded": "Budget exceeded — requests may be blocked", + "saveLimits": "সীমা সংরক্ষণ করুন", + "budgetOk": "বাজেট ঠিক আছে — {remaining} অবশিষ্ট", + "budgetExceeded": "বাজেট অতিক্রান্ত — অনুরোধগুলো ব্লক করা হতে পারে", "totalRequests": "Total requests", - "noDataYet": "No data yet", - "latency": "Latency", + "noDataYet": "এখনও কোনো ডেটা নেই", + "latency": "বিলম্ব", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", - "systemHealth": "System Health", - "entries": "Entries", - "activeCount": "{count} active", - "openCircuitBreakersDetected": "Open circuit breakers detected", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "circuitBreakers": "Circuit Breakers", - "lockedIPs": "Locked IPs", - "lockoutsAutoRefreshHint": "Per-model rate limit locks • Auto-refresh 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", - "timeLeft": "{time} left", - "howItWorks": "How It Works", - "howItWorksSubtitle": "Learn how evaluations validate your LLM responses", - "define": "Define", - "defineStepDescription": "Create test cases with input prompts and expected output criteria using strategies like contains, regex, or exact match.", - "run": "Run", - "runStepDescription": "Execute test cases against your LLM endpoints through OmniRoute. Each case is sent as a real API request.", - "evaluate": "Evaluate", - "evaluateStepDescription": "Responses are compared against expected criteria. See pass/fail for each case with latency metrics and detailed feedback.", + "promptCache": "প্রম্পট ক্যাশ", + "systemHealth": "সিস্টেমের স্বাস্থ্য", + "entries": "এন্ট্রি", + "activeCount": "{count}টি সক্রিয়", + "openCircuitBreakersDetected": "খোলা সার্কিট ব্রেকার শনাক্ত হয়েছে", + "hitRate": "হিট রেট", + "hitsMisses": "হিট / মিস", + "circuitBreakers": "সার্কিট ব্রেকার", + "lockedIPs": "লক করা IP", + "lockoutsAutoRefreshHint": "প্রতি-মডেল রেট লিমিট লক • প্রতি 10 সেকেন্ডে স্বয়ংক্রিয় রিফ্রেশ", + "lockedCount": "{count, plural, one {#টি লক করা} other {#টি লক করা}}", + "timeLeft": "{time} বাকি", + "howItWorks": "এটি যেভাবে কাজ করে", + "howItWorksSubtitle": "ইভ্যালুয়েশন কীভাবে আপনার LLM-এর প্রতিক্রিয়া যাচাই করে তা জানুন", + "define": "সংজ্ঞায়িত করুন", + "defineStepDescription": "contains, regex বা exact match-এর মতো কৌশল ব্যবহার করে ইনপুট প্রম্পট ও প্রত্যাশিত আউটপুটের মানদণ্ডসহ টেস্ট কেস তৈরি করুন।", + "run": "চালান", + "runStepDescription": "OmniRoute-এর মাধ্যমে আপনার LLM এন্ডপয়েন্টে টেস্ট কেস চালান। প্রতিটি কেস একটি বাস্তব API অনুরোধ হিসেবে পাঠানো হয়।", + "evaluate": "মূল্যায়ন করুন", + "evaluateStepDescription": "প্রতিক্রিয়াগুলো প্রত্যাশিত মানদণ্ডের সঙ্গে তুলনা করা হয়। ল্যাটেন্সি মেট্রিক ও বিস্তারিত ফিডব্যাকসহ প্রতিটি কেসের পাস/ফেল দেখুন।", "evalsStrategyContainsLabel": "রয়েছে", "evalsStrategyExactLabel": "হুবহু মিল", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "রেগেক্স", "evalsStrategyCustomLabel": "কাস্টম লজিক", "evalsStrategyContainsDescription": "LLM আউটপুটে প্রত্যাশিত সাবস্ট্রিং রয়েছে কিনা তা পরীক্ষা করে।", "evalsStrategyExactDescription": "LLM আউটপুট প্রত্যাশিত মানের সাথে হুবহু মেলে কিনা তা পরীক্ষা করে।", @@ -9347,126 +9354,126 @@ "historyColumnPassRate": "পাস রেট", "historyColumnAvgLatencyMs": "গড় লেটেন্সি", "historyColumnCreatedAt": "সম্পাদিত", - "evalSuites": "Evaluation Suites", - "evalSuitesHint": "Click a suite to view test cases, then run to evaluate your LLM endpoints", - "evalsLoading": "Loading eval suites...", - "noEvalSuitesFound": "No Eval Suites Found", - "noEvalSuitesDescription": "Eval suites can be defined via the API or in code. They test model outputs against expected results using strategies like contains, regex, exact match, and custom functions.", - "columnCase": "Case", + "evalSuites": "ইভ্যালুয়েশন স্যুট", + "evalSuitesHint": "টেস্ট কেস দেখতে একটি স্যুটে ক্লিক করুন, তারপর আপনার LLM এন্ডপয়েন্ট মূল্যায়ন করতে সেটি চালান", + "evalsLoading": "ইভ্যালুয়েশন স্যুট লোড হচ্ছে...", + "noEvalSuitesFound": "কোনো ইভ্যালুয়েশন স্যুট পাওয়া যায়নি", + "noEvalSuitesDescription": "ইভ্যালুয়েশন স্যুট API-এর মাধ্যমে বা কোডে সংজ্ঞায়িত করা যায়। এগুলো contains, regex, exact match এবং কাস্টম ফাংশনের মতো কৌশল ব্যবহার করে প্রত্যাশিত ফলাফলের বিপরীতে মডেলের আউটপুট পরীক্ষা করে।", + "columnCase": "কেস", "columnStatus": "Status", - "columnLatency": "Latency", - "columnDetails": "Details", + "columnLatency": "ল্যাটেন্সি", + "columnDetails": "বিস্তারিত", "columnModel": "Model", - "columnStrategy": "Strategy", - "columnExpected": "Expected", - "statsSuites": "Suites", - "statsTestCases": "Test Cases", - "statsModels": "Models", - "statsCoverage": "Coverage", - "statsStrategiesCount": "{count} strategies", - "evaluationStrategies": "Evaluation Strategies", - "modelsUnderTest": "Models Under Test", - "searchSuitesPlaceholder": "Search suites...", + "columnStrategy": "কৌশল", + "columnExpected": "প্রত্যাশিত", + "statsSuites": "স্যুট", + "statsTestCases": "টেস্ট কেস", + "statsModels": "মডেল", + "statsCoverage": "কভারেজ", + "statsStrategiesCount": "{count}টি কৌশল", + "evaluationStrategies": "ইভ্যালুয়েশন কৌশল", + "modelsUnderTest": "পরীক্ষাধীন মডেল", + "searchSuitesPlaceholder": "স্যুট খুঁজুন...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", - "runEval": "Run Eval", + "casesCount": "{count, plural, one {#টি কেস} other {#টি কেস}}", + "runEval": "মূল্যায়ন চালান", "runAllSuites": "সব চালান", "runAllRunning": "সব চলছে...", "runAllProgress": "চলছে {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {#টি স্যুট ব্যর্থ হয়েছে} other {#টি স্যুট ব্যর্থ হয়েছে}}", "runAllCompleted": "{suites} স্যুট চালিয়েছে — {passed} পাস করেছে, {failed} ব্যর্থ হয়েছে", "runAllCompletedWithFailures": "{completed} স্যুট চালান; {failedSuites} সম্পূর্ণ হতে ব্যর্থ হয়েছে৷", - "runningProgress": "Running {current}/{total}...", - "passRate": "pass rate", - "summaryBreakdown": "{passed} passed · {failed} failed · {total} total", - "passedIconLabel": "✅ Passed", - "failedIconLabel": "❌ Failed", + "runningProgress": "চলছে {current}/{total}...", + "passRate": "পাসের হার", + "summaryBreakdown": "{passed}টি পাস · {failed}টি ব্যর্থ · মোট {total}টি", + "passedIconLabel": "✅ পাস হয়েছে", + "failedIconLabel": "❌ ব্যর্থ হয়েছে", "resultPassed": "পাস করেছে", "resultFailed": "ব্যর্থ হয়েছে", "expandResult": "ফলাফলের বিবরণ প্রসারিত করুন", "collapseResult": "ফলাফলের বিবরণ আড়াল করুন", - "detailsContains": "Contains: \"{term}\"", + "detailsContains": "রয়েছে: \"{term}\"", "detailsRegex": "Regex: {pattern}", - "detailsExpected": "Expected: \"{expected}\"", + "detailsExpected": "প্রত্যাশিত: \"{expected}\"", "expectedOutputLabel": "প্রত্যাশিত আউটপুট", - "noResultsYet": "No results yet", - "testCasesCount": "Test Cases ({count})", - "noTestCasesDefined": "No test cases defined", - "runEvalHint": "Click \"Run Eval\" to execute all cases against your LLM endpoint. Each test sends a real request through OmniRoute.", - "notifyNoTestCases": "No test cases defined for this suite", - "notifyAllCasesPassed": "All {total} cases passed ✅", - "notifySomeCasesFailed": "{passed}/{total} passed, {failed} failed", - "notifyEvalRunFailed": "Eval run failed", - "notifyEvalTitle": "Eval: {name}", - "modelEvals": "Model Evaluations", - "evalsHeroDescription": "Test and validate your LLM endpoints by running predefined evaluation suites. Each suite contains test cases that send real prompts through OmniRoute and compare responses against expected criteria — helping you detect regressions, compare models, and ensure response quality across providers.", - "qualityValidation": "Quality Validation", - "modelComparison": "Model Comparison", - "regressionDetection": "Regression Detection", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", - "noLockouts": "No models currently locked", - "activeSessions": "Active Sessions", - "noSessions": "No active sessions", - "sessionsHint": "Sessions appear as requests flow through the proxy", - "sessionsTrackedHint": "Tracked via request fingerprinting • Auto-refresh 5s", - "session": "Session", - "age": "Age", - "requests": "Requests", - "connection": "Connection", + "noResultsYet": "এখনও কোনো ফলাফল নেই", + "testCasesCount": "টেস্ট কেস ({count})", + "noTestCasesDefined": "কোনো টেস্ট কেস নির্ধারিত নেই", + "runEvalHint": "আপনার LLM এন্ডপয়েন্টে সব কেস চালাতে \"মূল্যায়ন চালান\"-এ ক্লিক করুন। প্রতিটি টেস্ট OmniRoute-এর মাধ্যমে একটি বাস্তব অনুরোধ পাঠায়।", + "notifyNoTestCases": "এই স্যুটের জন্য কোনো টেস্ট কেস নির্ধারিত নেই", + "notifyAllCasesPassed": "সব {total}টি কেস পাস হয়েছে ✅", + "notifySomeCasesFailed": "{passed}/{total}টি পাস হয়েছে, {failed}টি ব্যর্থ হয়েছে", + "notifyEvalRunFailed": "মূল্যায়ন চালানো ব্যর্থ হয়েছে", + "notifyEvalTitle": "মূল্যায়ন: {name}", + "modelEvals": "মডেল মূল্যায়ন", + "evalsHeroDescription": "পূর্বনির্ধারিত মূল্যায়ন স্যুট চালিয়ে আপনার LLM এন্ডপয়েন্টগুলো পরীক্ষা ও যাচাই করুন। প্রতিটি স্যুটে এমন টেস্ট কেস থাকে, যেগুলো OmniRoute-এর মাধ্যমে বাস্তব প্রম্পট পাঠায় এবং প্রত্যাশিত মানদণ্ডের সঙ্গে প্রতিক্রিয়া তুলনা করে—যা আপনাকে রিগ্রেশন শনাক্ত করতে, মডেল তুলনা করতে এবং বিভিন্ন প্রোভাইডারে প্রতিক্রিয়ার গুণমান নিশ্চিত করতে সহায়তা করে।", + "qualityValidation": "গুণমান যাচাই", + "modelComparison": "মডেল তুলনা", + "regressionDetection": "রিগ্রেশন শনাক্তকরণ", + "latencyBenchmarks": "ল্যাটেন্সি বেঞ্চমার্ক", + "modelLockouts": "মডেল লকআউট", + "noLockouts": "বর্তমানে কোনো মডেল লক করা নেই", + "activeSessions": "সক্রিয় সেশন", + "noSessions": "কোনো সক্রিয় সেশন নেই", + "sessionsHint": "প্রক্সির মধ্য দিয়ে অনুরোধ প্রবাহিত হলে সেশনগুলো এখানে দেখা যাবে", + "sessionsTrackedHint": "অনুরোধের ফিঙ্গারপ্রিন্টের মাধ্যমে ট্র্যাক করা হয় • প্রতি ৫ সেকেন্ডে স্বয়ংক্রিয় রিফ্রেশ", + "session": "সেশন", + "age": "বয়স", + "requests": "অনুরোধ", + "connection": "সংযোগ", "durationMillisecondsShort": "{value}ms", "durationSecondsShort": "{value}s", "durationMinutesShort": "{value}m", "durationHoursShort": "{value}h", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "Provider Limits", - "noProviders": "No Providers Connected", - "connectProvidersForQuota": "Connect to providers with OAuth to track your API quota limits and usage.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", - "filteredFromCount": "(filtered from {count})", - "autoRefresh": "Auto-refresh", - "refreshAll": "Refresh All", - "loadingQuotas": "Loading...", + "providerLimits": "প্রোভাইডারের সীমা", + "noProviders": "কোনো প্রোভাইডার সংযুক্ত নেই", + "connectProvidersForQuota": "আপনার API কোটা সীমা ও ব্যবহার ট্র্যাক করতে OAuth-এর মাধ্যমে প্রোভাইডারদের সঙ্গে সংযোগ করুন।", + "accountsCount": "{count, plural, one {#টি অ্যাকাউন্ট} other {#টি অ্যাকাউন্ট}}", + "filteredFromCount": "({count}টি থেকে ফিল্টার করা)", + "autoRefresh": "স্বয়ংক্রিয় রিফ্রেশ", + "refreshAll": "সব রিফ্রেশ করুন", + "loadingQuotas": "লোড হচ্ছে...", "showMoreQuotas": "আরও {count}টি দেখান", "showLessQuotas": "কম দেখান", "hideQuotaRow": "এই কোটা সারিটি লুকান", "showQuotaRow": "এই কোটা সারিটি দেখান", "hiddenQuotaRowsLabel": "লুকানো:", "quotaVisibilityUpdateFailed": "কোটার দৃশ্যমানতা আপডেট করতে ব্যর্থ হয়েছে", - "account": "Account", - "modelQuotas": "Model Quotas", - "lastUsed": "Last Refreshed", - "actions": "Actions", - "refreshQuota": "Refresh quota", - "today": "Today", - "tomorrow": "Tomorrow", + "account": "অ্যাকাউন্ট", + "modelQuotas": "মডেল কোটা", + "lastUsed": "সর্বশেষ রিফ্রেশ", + "actions": "অ্যাকশন", + "refreshQuota": "কোটা রিফ্রেশ করুন", + "today": "আজ", + "tomorrow": "আগামীকাল", "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "inDuration": "{duration} পরে", "notApplicable": "N/A", - "rawPlanWithValue": "Raw plan: {plan}", - "noPlanFromProvider": "No plan from provider", + "rawPlanWithValue": "মূল প্ল্যান: {plan}", + "noPlanFromProvider": "প্রোভাইডার থেকে কোনো প্ল্যান পাওয়া যায়নি", "tokenExpiresIn": "টোকেনের মেয়াদ {time}-এর মধ্যে শেষ হবে", "tokenExpired": "টোকেনের মেয়াদ শেষ", - "noQuotaData": "No quota data", + "noQuotaData": "কোনো কোটা ডেটা নেই", "cardExpand": "প্রসারিত করুন", "cardCollapse": "সংকুচিত করুন", "moreQuotas": "+আরও {count}টি", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", - "noQuotaDataAvailable": "No quota data available", - "noAccountsForTierFilter": "No accounts found for tier filter", - "tierAll": "All", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "ungrouped": "গ্রুপবিহীন", + "viewFlat": "সমতল", + "viewByEnvironment": "এনভায়রনমেন্ট অনুযায়ী", + "noQuotaDataAvailable": "কোনো কোটা ডেটা উপলভ্য নেই", + "noAccountsForTierFilter": "টিয়ার ফিল্টারের জন্য কোনো অ্যাকাউন্ট পাওয়া যায়নি", + "tierAll": "সব", + "tierEnterprise": "এন্টারপ্রাইজ", + "tierTeam": "টিম", + "tierBusiness": "বিজনেস", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", + "tierFree": "ফ্রি", "tierLite": "লাইট", - "tierUnknown": "Unknown", + "tierUnknown": "অজানা", "statTotal": "মোট", "statCritical": "গুরুতর", "statAlert": "অ্যালার্ট", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "ক্রেডিট রিডিম করুন", "resetCreditRedeemed": "রিসেট রিডিম করা হয়েছে", "resetCreditRedeemFailed": "রিসেট ক্রেডিট রিডিম করতে ব্যর্থ হয়েছে", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "স্যুট সংরক্ষণ করা যায়নি", "clone": "ক্লোন", "exportSuite": "রপ্তানি", "importSuite": "আমদানি", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "অবৈধ eval স্যুট JSON", "suiteBuilderCloneSuffix": "অনুলিপি", "suiteBuilderImportedSuite": "আমদানিকৃত স্যুট", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "স্কোরকার্ড", + "evalApiKey": "API কী", + "scorecardPassRate": "পাসের হার", + "targetTypeModel": "মডেল", + "actualOutputLabel": "প্রকৃত আউটপুট", + "evalTargetHint": "মূল্যায়নের জন্য একটি মডেল বা কম্বো নির্বাচন করুন।", + "suiteBuilderDeleted": "স্যুট সফলভাবে মুছে ফেলা হয়েছে", + "suiteBuilderCaseCardHint": "ইনপুট প্রম্পট এবং প্রত্যাশিত আউটপুটের মানদণ্ড নির্ধারণ করুন।", + "nextResetUtc": "পরবর্তী রিসেট (UTC)", + "scorecardHint": "সমস্ত মূল্যায়ন স্যুটের সমন্বিত পাসের হার।", + "suiteLatestRunsHint": "এই স্যুটের সাম্প্রতিকতম মূল্যায়ন রানসমূহ।", + "saving": "সংরক্ষণ করা হচ্ছে", + "suiteBuilderCaseModelLabel": "মডেল (ঐচ্ছিক)", + "evalControlsTitle": "মূল্যায়ন নিয়ন্ত্রণ", + "suiteBuilderEditTitle": "ইভ্যাল স্যুট সম্পাদনা করুন", + "suiteBuilderCaseStrategyLabel": "যাচাইকরণ কৌশল", + "notifySelectDifferentCompareTarget": "তুলনার জন্য অনুগ্রহ করে একটি ভিন্ন টার্গেট নির্বাচন করুন", + "recentRunsHint": "সাম্প্রতিকতম ইভ্যালুয়েশন রানগুলো দেখানো হচ্ছে। বিস্তারিত ফলাফল দেখতে কোনো রানে ক্লিক করুন।", + "evalCompareHint": "ঐচ্ছিকভাবে দ্বিতীয় একটি টার্গেটের সঙ্গে ফলাফল তুলনা করুন।", + "suiteBuilderCaseInvalid": "এই কেসটিতে যাচাইকরণ ত্রুটি রয়েছে। সংরক্ষণ করার আগে অনুগ্রহ করে সেগুলো ঠিক করুন।", + "historyEmpty": "এখনও কোনো ইভ্যালুয়েশন ইতিহাস নেই", + "suiteBuilderUpdated": "স্যুট সফলভাবে আপডেট হয়েছে", + "resetInterval": "রিসেটের ব্যবধান", + "suiteBuilderCreateTitle": "ইভ্যাল স্যুট তৈরি করুন", + "activePeriodSpend": "সক্রিয় সময়কালের ব্যয়", + "evalApiKeyHint": "ইভ্যালুয়েশন অনুরোধের জন্য কোন API key ব্যবহার করতে হবে তা নির্বাচন করুন।", + "evalCompareOptional": "তুলনা করুন (ঐচ্ছিক)", + "suiteBuilderDeleteFailed": "স্যুট মুছতে ব্যর্থ হয়েছে", + "suiteBuilderCaseSystemPromptPlaceholder": "ঐচ্ছিক সিস্টেম নির্দেশনা...", + "scorecardCases": "কেসসমূহ", + "runCompletedWithScore": "ইভ্যালুয়েশন সম্পন্ন হয়েছে — {score}% পাসের হার", + "suiteBuilderCustomBadge": "কাস্টম", + "targetSuiteDefaults": "স্যুটের ডিফল্ট মান", + "suiteBuilderDeleteConfirm": "আপনি কি নিশ্চিত যে এই স্যুটটি মুছে ফেলতে চান? এই কাজটি পূর্বাবস্থায় ফেরানো যাবে না।", + "suiteBuilderNameLabel": "স্যুটের নাম", + "scorecardSuites": "স্যুটসমূহ", + "evalCompareTarget": "তুলনার টার্গেট", + "suiteBuilderCaseModelPlaceholder": "যেমন, gpt-4o-mini", + "evalControlsHint": "আপনার ইভ্যালুয়েশন টার্গেট এবং API key কনফিগার করুন, তারপর মডেলের গুণমান যাচাই করতে স্যুট চালান।", + "recentRunsTitle": "সাম্প্রতিক রানসমূহ", + "suiteBuilderCaseSystemPromptLabel": "সিস্টেম প্রম্পট", + "suiteBuilderCaseExpectedPlaceholder": "যেমন, def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "যেমন ডিফ ফিবোনাচি", "suiteBuilderCaseExpectedPlaceholderExact": "সঠিক প্রত্যাশিত প্রতিক্রিয়া আটকান", "suiteBuilderCaseExpectedPlaceholderRegex": "যেমন ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "স্ল্যাশগুলি মোড়ানো ছাড়াই একটি জাভাস্ক্রিপ্ট রেগুলার এক্সপ্রেশন ব্যবহার করুন।", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "যেমন, Coding Quality Suite", + "suiteBuilderAddCase": "কেস যোগ করুন", + "cancel": "বাতিল করুন", + "evalTarget": "টার্গেট", + "suiteBuilderCaseNameLabel": "কেসের নাম", + "weeklyLimitUsd": "সাপ্তাহিক সীমা (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "যেমন, Python-এ একটি fibonacci ফাংশন লিখুন", + "suiteBuilderNameRequired": "স্যুটের নাম আবশ্যক", + "suiteBuilderCaseUserPromptLabel": "ব্যবহারকারীর প্রম্পট", + "daily": "দৈনিক", + "resultErrorLabel": "ত্রুটি", + "suiteBuilderBuiltInBadge": "বিল্ট-ইন", + "suiteBuilderCaseCardTitle": "টেস্ট কেস", "suiteBuilderDuplicateCase": "ডুপ্লিকেট", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "যেমন 50.00", + "suiteBuilderCaseTagsHint": "টেস্ট কেস সংগঠিত করার জন্য কমা দিয়ে পৃথক করা ট্যাগ।", + "notifyEvalRunFailedWithReason": "মূল্যায়ন ব্যর্থ হয়েছে: {reason}", + "weekly": "সাপ্তাহিক", + "runEvalRunning": "মূল্যায়ন চলছে...", + "delete": "মুছুন", + "resetTimeUtc": "রিসেটের সময় (UTC)", + "evalApiKeyAuto": "স্বয়ংক্রিয় (ডিফল্ট ব্যবহার করুন)", + "suiteBuilderDescriptionPlaceholder": "এই স্যুটটি কী পরীক্ষা করে তার ঐচ্ছিক বিবরণ...", + "targetComparisonTitle": "লক্ষ্য তুলনা", + "save": "সংরক্ষণ করুন", + "suiteBuilderCreated": "স্যুট সফলভাবে তৈরি হয়েছে", + "suiteLatestRuns": "সর্বশেষ রানসমূহ", + "suiteBuilderCaseExpectedLabel": "প্রত্যাশিত মান", + "historyLatency": "বিলম্ব", + "suiteBuilderCaseTagsPlaceholder": "যেমন coding, python", + "targetTypeCombo": "কম্বো", + "scorecardPassed": "উত্তীর্ণ", + "suiteBuilderCaseTagsLabel": "ট্যাগ", + "suiteBuilderNewSuite": "নতুন স্যুট", + "notifyEvalLoadFailed": "মূল্যায়নের ডেটা লোড করা যায়নি", + "notConfigured": "কনফিগার করা হয়নি", + "suiteBuilderCaseNamePlaceholder": "যেমন Python fibonacci test", + "intervalLabel": "বিরতি", + "suiteBuilderCreateAction": "স্যুট তৈরি করুন", + "suiteBuilderCasesHint": "প্রতিটি কেস একটি প্রম্পট পাঠায় এবং প্রতিক্রিয়াটি যাচাই করে।", + "suiteBuilderUpdatedAt": "আপডেট করা হয়েছে", + "errorBadge": "ত্রুটি", + "suiteBuilderCasesTitle": "টেস্ট কেসসমূহ", + "edit": "সম্পাদনা করুন", + "monthly": "মাসিক", + "suiteBuilderCasesRequired": "অন্তত একটি টেস্ট কেস আবশ্যক", + "weeklyLimitSummary": "সাপ্তাহিক বাজেট সীমার সারাংশ", + "suiteBuilderDescriptionLabel": "বিবরণ", + "targetComparisonHint": "লক্ষ্যগুলোর মধ্যে মূল্যায়নের ফলাফলের পাশাপাশি তুলনা।", + "compareCompletedWithScore": "তুলনা সম্পন্ন হয়েছে — {score}% পাসের হার", + "staleQuotaTooltip": "সর্বশেষ রিফ্রেশ ব্যর্থ হয়েছে — ক্যাশে করা ডেটা দেখানো হচ্ছে", "quotaThresholdLabel": "মিনিট বাকি", "quotaCutoffsColumnHelp": "অবশিষ্ট কোটা এই শতাংশে বা তার নিচে পড়লে অনুরোধগুলি বন্ধ করুন।", "quotaCutoffsButtonDefault": "ডিফল্ট", @@ -9704,70 +9711,70 @@ "providerQuotaHomeHint": "সংযুক্ত অ্যাকাউন্টগুলোর লাইভ স্ট্যাটাস" }, "modals": { - "waitingAuth": "Waiting for Authorization", - "verificationUrl": "Verification URL", - "yourCode": "Your Code", - "remoteAccess": "Remote access:", - "connectedSuccess": "Connected Successfully!", - "connectionFailed": "Connection Failed", - "chooseAuthMethod": "Choose your authentication method:", + "waitingAuth": "অনুমোদনের জন্য অপেক্ষা করা হচ্ছে", + "verificationUrl": "যাচাইকরণ URL", + "yourCode": "আপনার কোড", + "remoteAccess": "রিমোট অ্যাক্সেস:", + "connectedSuccess": "সফলভাবে সংযুক্ত হয়েছে!", + "connectionFailed": "সংযোগ ব্যর্থ হয়েছে", + "chooseAuthMethod": "আপনার প্রমাণীকরণ পদ্ধতি বেছে নিন:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", - "importToken": "Import Token", - "pasteToken": "Paste refresh token from Kiro IDE.", + "googleAccount": "Google অ্যাকাউন্ট", + "githubAccount": "GitHub অ্যাকাউন্ট", + "importToken": "টোকেন আমদানি করুন", + "pasteToken": "Kiro IDE থেকে রিফ্রেশ টোকেন পেস্ট করুন।", "awsRegion": "AWS Region", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCache": "Reading from AWS SSO cache", - "readingFromCursor": "Reading from Cursor IDE database", - "initializing": "Initializing...", - "pricingConfig": "Pricing Configuration", - "loadingPricing": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "noPricingData": "No pricing data available", - "noModelsFound": "No models found" + "autoDetecting": "স্বয়ংক্রিয়ভাবে টোকেন শনাক্ত করা হচ্ছে...", + "readingFromCache": "AWS SSO ক্যাশ থেকে পড়া হচ্ছে", + "readingFromCursor": "Cursor IDE ডেটাবেস থেকে পড়া হচ্ছে", + "initializing": "শুরু করা হচ্ছে...", + "pricingConfig": "মূল্য নির্ধারণ কনফিগারেশন", + "loadingPricing": "মূল্য সংক্রান্ত ডেটা লোড হচ্ছে...", + "pricingRatesFormat": "মূল্যহারের ফরম্যাট", + "noPricingData": "মূল্য সংক্রান্ত কোনো ডেটা উপলভ্য নেই", + "noModelsFound": "কোনো মডেল পাওয়া যায়নি" }, "loggers": { - "allProviders": "All Providers", - "allModels": "All Models", - "allAccounts": "All Accounts", - "allApiKeys": "All API Keys", - "allTypes": "All Types", - "allLevels": "All Levels", + "allProviders": "সব প্রোভাইডার", + "allModels": "সব মডেল", + "allAccounts": "সব অ্যাকাউন্ট", + "allApiKeys": "সব API কী", + "allTypes": "সব ধরন", + "allLevels": "সব স্তর", "modelAZ": "Model A-Z", "modelZA": "Model Z-A", - "loadingLogs": "Loading logs...", - "loadingProxyLogs": "Loading proxy logs...", - "noLogEntries": "No log entries found", - "noPayloadData": "No payload data available for this log entry.", - "proxyEvent": "Proxy Event", + "loadingLogs": "লগ লোড হচ্ছে...", + "loadingProxyLogs": "প্রক্সি লগ লোড হচ্ছে...", + "noLogEntries": "কোনো লগ এন্ট্রি পাওয়া যায়নি", + "noPayloadData": "এই লগ এন্ট্রির জন্য কোনো পেলোড ডেটা উপলভ্য নেই।", + "proxyEvent": "প্রক্সি ইভেন্ট", "proxy": "Proxy", - "level": "Level", - "directNative": "Direct (native)", - "combo": "Combo", + "level": "স্তর", + "directNative": "সরাসরি (নেটিভ)", + "combo": "কম্বো", "inputTokens": "I:", "outputTokens": "O:" }, "stats": { - "usageOverview": "Usage Overview", - "outputTokens": "Output Tokens", - "totalCost": "Total Cost", - "usageByModel": "Usage by Model", - "usageByAccount": "Usage by Account", - "failedToLoad": "Failed to load usage statistics.", - "tokenHealth": "Token Health", - "totalOAuth": "Total OAuth", - "healthy": "Healthy", - "warning": "Warning", - "errored": "Errored", - "lastCheck": "Last check", - "noData": "No data", - "share": "Share", - "unableToLoad": "Unable to load system metrics", - "product": "Product", - "resources": "Resources", - "company": "Company", + "usageOverview": "ব্যবহারের সারসংক্ষেপ", + "outputTokens": "আউটপুট টোকেন", + "totalCost": "মোট খরচ", + "usageByModel": "মডেল অনুযায়ী ব্যবহার", + "usageByAccount": "অ্যাকাউন্ট অনুযায়ী ব্যবহার", + "failedToLoad": "ব্যবহারের পরিসংখ্যান লোড করা যায়নি।", + "tokenHealth": "টোকেনের অবস্থা", + "totalOAuth": "মোট OAuth", + "healthy": "স্বাভাবিক", + "warning": "সতর্কতা", + "errored": "ত্রুটিযুক্ত", + "lastCheck": "সর্বশেষ পরীক্ষা", + "noData": "কোনো ডেটা নেই", + "share": "শেয়ার করুন", + "unableToLoad": "সিস্টেম মেট্রিক্স লোড করা যায়নি", + "product": "প্রোডাক্ট", + "resources": "রিসোর্স", + "company": "কোম্পানি", "tokenHealthTooltips": { "allHealthy": "সব টোকেন স্বাস্থ্যকর", "needsAttention": "কিছু টোকেনের যত্ন নেওয়া প্রয়োজন", @@ -9812,70 +9819,70 @@ "noAccountUsage": "এখনো কোনো অ্যাকাউন্ট-নির্দিষ্ট ব্যবহার রেকর্ড করা হয়নি। এখানে ডেটা দেখতে OAuth অ্যাকাউন্ট ব্যবহার করে অনুরোধ করুন।" }, "auth": { - "welcome": "Welcome", - "signIn": "Sign in", - "enterPassword": "Enter your password to continue", - "password": "Password", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", - "unifiedAiApiProxyDesc": "Route requests to multiple AI providers through a single endpoint. Load balancing, failover, and usage tracking built in.", - "passwordNotEnabled": "Password protection is not enabled", - "loading": "Loading...", - "invalidPassword": "Invalid password", - "errorOccurredRetry": "An error occurred. Please try again.", - "configureInstance": "Let's get your OmniRoute instance configured", - "runOnboardingWizard": "Run the onboarding wizard to set up your password and connect your first AI provider.", - "startOnboarding": "Start Onboarding", - "secureYourInstance": "Secure Your Instance", - "setPasswordDescription": "Set a password to protect your dashboard and secure your API endpoints from unauthorized access.", - "configurePassword": "Configure Password", - "continue": "Continue", - "windowWillClose": "This window will close automatically...", - "closeTabNow": "You can close this tab now.", - "copyUrlManual": "Please copy the URL from the address bar and paste it in the application.", - "accessDeniedDescription": "You don't have permission to access this resource. Check your API key or contact the administrator.", - "goToDashboard": "Go to Dashboard", - "featureMultiProviderTitle": "Multi-Provider", - "featureMultiProviderDesc": "OpenAI, Anthropic, Google, and more", - "featureLoadBalancingTitle": "Load Balancing", - "featureLoadBalancingDesc": "Distribute requests intelligently", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Monitor costs and tokens", - "resetPassword": "Reset Password", - "resetDescription": "Choose a method to recover access to your dashboard", - "stopServer": "Stop the OmniRoute server", - "processing": "Processing...", - "pleaseWait": "Please wait while we complete the authorization.", - "authSuccess": "Authorization Successful!", - "copyUrl": "Copy This URL", - "accessDenied": "Access Denied", - "methodCliTitle": "Method 1: CLI Reset", - "methodCliDescription": "Run the following command on the server where OmniRoute is running:", - "methodCliHint": "This will prompt you to set a new password. The server must be stopped first.", - "methodManualTitle": "Method 2: Manual Reset", - "methodManualDescription": "Delete the password from the database and set a new one on startup:", - "setPasswordInYour": "Set a new password in your", - "fileLabelSuffix": "file:", + "welcome": "স্বাগতম", + "signIn": "সাইন ইন করুন", + "enterPassword": "চালিয়ে যেতে আপনার পাসওয়ার্ড লিখুন", + "password": "পাসওয়ার্ড", + "unifiedProxy": "ইউনিফায়েড AI API প্রক্সি", + "unifiedAiApiProxy": "ইউনিফায়েড AI API প্রক্সি", + "unifiedAiApiProxyDesc": "একটি একক এন্ডপয়েন্টের মাধ্যমে একাধিক AI প্রোভাইডারের কাছে রিকোয়েস্ট রাউট করুন। লোড ব্যালান্সিং, ফেইলওভার এবং ব্যবহার ট্র্যাকিং বিল্ট-ইন।", + "passwordNotEnabled": "পাসওয়ার্ড সুরক্ষা সক্রিয় নেই", + "loading": "লোড হচ্ছে...", + "invalidPassword": "অবৈধ পাসওয়ার্ড", + "errorOccurredRetry": "একটি ত্রুটি ঘটেছে। অনুগ্রহ করে আবার চেষ্টা করুন।", + "configureInstance": "চলুন আপনার OmniRoute ইনস্ট্যান্স কনফিগার করি", + "runOnboardingWizard": "আপনার পাসওয়ার্ড সেট আপ করতে এবং প্রথম AI প্রোভাইডার সংযুক্ত করতে অনবোর্ডিং উইজার্ড চালান।", + "startOnboarding": "অনবোর্ডিং শুরু করুন", + "secureYourInstance": "আপনার ইনস্ট্যান্স সুরক্ষিত করুন", + "setPasswordDescription": "আপনার ড্যাশবোর্ড সুরক্ষিত রাখতে এবং অননুমোদিত অ্যাক্সেস থেকে API এন্ডপয়েন্টগুলো রক্ষা করতে একটি পাসওয়ার্ড সেট করুন।", + "configurePassword": "পাসওয়ার্ড কনফিগার করুন", + "continue": "চালিয়ে যান", + "windowWillClose": "এই উইন্ডোটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে...", + "closeTabNow": "আপনি এখন এই ট্যাবটি বন্ধ করতে পারেন।", + "copyUrlManual": "অনুগ্রহ করে অ্যাড্রেস বার থেকে URL কপি করে অ্যাপ্লিকেশনে পেস্ট করুন।", + "accessDeniedDescription": "এই রিসোর্স অ্যাক্সেস করার অনুমতি আপনার নেই। আপনার API key পরীক্ষা করুন অথবা অ্যাডমিনিস্ট্রেটরের সঙ্গে যোগাযোগ করুন।", + "goToDashboard": "ড্যাশবোর্ডে যান", + "featureMultiProviderTitle": "মাল্টি-প্রোভাইডার", + "featureMultiProviderDesc": "OpenAI, Anthropic, Google এবং আরও অনেক", + "featureLoadBalancingTitle": "লোড ব্যালান্সিং", + "featureLoadBalancingDesc": "বুদ্ধিমত্তার সঙ্গে রিকোয়েস্ট বিতরণ করুন", + "featureUsageTrackingTitle": "ব্যবহার ট্র্যাকিং", + "featureUsageTrackingDesc": "খরচ এবং টোকেন পর্যবেক্ষণ করুন", + "resetPassword": "পাসওয়ার্ড রিসেট করুন", + "resetDescription": "আপনার ড্যাশবোর্ডে অ্যাক্সেস পুনরুদ্ধারের জন্য একটি পদ্ধতি বেছে নিন", + "stopServer": "OmniRoute সার্ভার বন্ধ করুন", + "processing": "প্রক্রিয়া চলছে...", + "pleaseWait": "আমরা অনুমোদন সম্পন্ন করা পর্যন্ত অনুগ্রহ করে অপেক্ষা করুন।", + "authSuccess": "অনুমোদন সফল হয়েছে!", + "copyUrl": "এই URL কপি করুন", + "accessDenied": "অ্যাক্সেস প্রত্যাখ্যাত হয়েছে", + "methodCliTitle": "পদ্ধতি ১: CLI রিসেট", + "methodCliDescription": "OmniRoute যে সার্ভারে চলছে, সেখানে নিম্নলিখিত কমান্ডটি চালান:", + "methodCliHint": "এটি আপনাকে একটি নতুন পাসওয়ার্ড সেট করতে বলবে। প্রথমে সার্ভারটি বন্ধ করতে হবে।", + "methodManualTitle": "পদ্ধতি ২: ম্যানুয়াল রিসেট", + "methodManualDescription": "ডেটাবেস থেকে পাসওয়ার্ডটি মুছে দিন এবং চালু হওয়ার সময় একটি নতুন পাসওয়ার্ড সেট করুন:", + "setPasswordInYour": "আপনার", + "fileLabelSuffix": "ফাইলে একটি নতুন পাসওয়ার্ড সেট করুন:", "newPasswordPlaceholder": "your_new_password", - "deleteSettingsFile": "Delete", - "orRemovePasswordHashField": "or remove the passwordHash field", - "restartServerWithNewPassword": "Restart the server - it will use the new password", - "backToLogin": "Back to Login", - "forgotPassword": "Forgot password?", + "deleteSettingsFile": "মুছে দিন", + "orRemovePasswordHashField": "অথবা passwordHash ফিল্ডটি সরিয়ে দিন", + "restartServerWithNewPassword": "সার্ভারটি পুনরায় চালু করুন—এটি নতুন পাসওয়ার্ড ব্যবহার করবে", + "backToLogin": "লগইনে ফিরে যান", + "forgotPassword": "পাসওয়ার্ড ভুলে গেছেন?", "continueWithOidc": "OIDC দিয়ে এগিয়ে যান", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", - "Authorization": "Authorization", + "defaultPasswordHint": "ডিফল্ট পাসওয়ার্ড: CHANGEME (যদি INITIAL_PASSWORD সেট করা না হয়ে থাকে)", + "Authorization": "অনুমোদন", "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "অনুমোদনের জন্য অপেক্ষা করা হচ্ছে...", + "waitingForGoogleAuthorization": "Google অনুমোদনের জন্য অপেক্ষা করা হচ্ছে...", + "waitingForOpenAIAuthorization": "OpenAI অনুমোদনের জন্য অপেক্ষা করা হচ্ছে...", + "waitingForAntigravityAuthorization": "Antigravity অনুমোদনের জন্য অপেক্ষা করা হচ্ছে...", + "waitingForQoderAuthorization": "Qoder অনুমোদনের জন্য অপেক্ষা করা হচ্ছে...", + "exchangingCodeForTokens": "কোডের বিনিময়ে টোকেন নেওয়া হচ্ছে...", + "nodeIncompatibleTitle": "অসামঞ্জস্যপূর্ণ Node.js সংস্করণ", + "nodeIncompatibleDesc": "আপনি Node.js {version} চালাচ্ছেন, যা OmniRoute-এর সমর্থিত নিরাপদ রানটাইম নীতির আওতার বাইরে। প্যাচ করা Node.js 20.x বা 22.x LTS রিলিজ ব্যবহার করুন।", + "nodeIncompatibleFixLabel": "সমাধান: প্যাচ করা Node.js 22 LTS রিলিজ ইনস্টল করুন", + "nodeIncompatibleHint": "OmniRoute-এর জন্য Node.js 22.22.2+ (22.x LTS) অথবা 24.0.0+ (24.x LTS) প্রয়োজন। Node 24 LTS ব্যবহারের পরামর্শ দেওয়া হয়।", "resetViaAppDataTitle": "অ্যাপ ডেটার মাধ্যমে রিসেট করুন", "resetViaAppDataDescription": "অ্যাপ ডেটা ডিরেক্টরি থেকে সেটিংস ফাইলটি মুছে ফেলুন আপনার পাসওয়ার্ড রিসেট করতে:", "quitDesktopApp": "OmniRoute ডেস্ক অ্যাপটি সম্পূর্ণরূপে বন্ধ করুন", @@ -9930,72 +9937,72 @@ }, "landing": { "brandName": "OmniRoute", - "navigateHome": "Navigate to home", - "toggleMenu": "Toggle menu", - "featuresLink": "Features", - "docsLink": "Docs", + "navigateHome": "হোমে যান", + "toggleMenu": "মেনু টগল করুন", + "featuresLink": "বৈশিষ্ট্যসমূহ", + "docsLink": "ডকুমেন্টেশন", "github": "GitHub", - "versionLive": "v1.0 is now live", - "oneEndpoint": "One Endpoint for", - "allProviders": "All AI Providers", - "heroDescription": "AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.", - "getStarted": "Get Started", - "viewOnGithub": "View on GitHub", - "powerfulFeatures": "Powerful Features", - "featuresSubtitle": "Everything you need to manage your AI infrastructure in one place, built for scale.", - "featureUnifiedEndpointTitle": "Unified Endpoint", - "featureUnifiedEndpointDesc": "Access all providers via a single standard API URL.", - "featureEasySetupTitle": "Easy Setup", - "featureEasySetupDesc": "Get up and running in minutes with npx command.", - "featureModelFallbackTitle": "Model Fallback", - "featureModelFallbackDesc": "Automatically switch providers on failure or high latency.", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Detailed analytics and cost monitoring across all models.", - "featureOAuthApiKeysTitle": "OAuth & API Keys", - "featureOAuthApiKeysDesc": "Securely manage credentials in one vault.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncDesc": "Sync your configurations across devices instantly.", - "featureCliSupportTitle": "CLI Support", - "featureCliSupportDesc": "Works with Claude Code, Codex, Cline, Cursor, and more.", - "featureDashboardTitle": "Dashboard", - "featureDashboardDesc": "Visual dashboard for real-time traffic analysis.", - "howItWorks": "How OmniRoute Works", - "howItWorksDescription": "Data flows seamlessly from your application through our intelligent routing layer to the best provider for the job.", - "howItWorksStep1Title": "1. CLI & SDKs", - "howItWorksStep1Description": "Your requests start from your favorite tools or our unified SDK. Just change the base URL.", - "howItWorksStep2Title": "2. OmniRoute Hub", - "howItWorksStep2Description": "Our engine analyzes the prompt, checks provider health, and routes for lowest latency or cost.", - "howItWorksStep3Title": "3. AI Providers", - "howItWorksStep3Description": "The request is fulfilled by OpenAI, Anthropic, Gemini, or others instantly.", - "getStartedIn30Seconds": "Get Started in 30 Seconds", - "getStartedDescription": "Install OmniRoute, configure your providers via web dashboard, and start routing AI requests.", - "installOmniRoute": "Install OmniRoute", - "installStepDescription": "Run npx command to start the server instantly", - "openDashboard": "Open Dashboard", - "openDashboardStepDescription": "Configure providers and API keys via web interface", - "routeRequests": "Route Requests", - "routeRequestsStepDescription": "Point your CLI tools to {endpoint}", - "terminal": "terminal", - "copy": "Copy", - "copied": "✓ Copied", - "startingOmniRoute": "Starting OmniRoute...", - "serverRunningOnLabel": "Server running on", - "dashboardLabel": "Dashboard", - "readyToRoute": "Ready to route! ✓", - "configureProvidersNote": "📝 Configure providers in dashboard or use environment variables", - "dataLocation": "Data Location:", + "versionLive": "v1.0 এখন লাইভ", + "oneEndpoint": "একটি এন্ডপয়েন্টে", + "allProviders": "সব AI প্রদানকারী", + "heroDescription": "ওয়েব ড্যাশবোর্ডসহ AI এন্ডপয়েন্ট প্রক্সি—CLIProxyAPI-এর একটি JavaScript পোর্ট। Claude Code, OpenAI Codex, Cline, RooCode এবং অন্যান্য CLI টুলের সঙ্গে নির্বিঘ্নে কাজ করে।", + "getStarted": "শুরু করুন", + "viewOnGithub": "GitHub-এ দেখুন", + "powerfulFeatures": "শক্তিশালী ফিচারসমূহ", + "featuresSubtitle": "আপনার AI অবকাঠামো এক জায়গায় পরিচালনার জন্য প্রয়োজনীয় সবকিছু, যা বৃহৎ পরিসরে ব্যবহারের উপযোগী করে তৈরি।", + "featureUnifiedEndpointTitle": "একীভূত এন্ডপয়েন্ট", + "featureUnifiedEndpointDesc": "একটি আদর্শ API URL-এর মাধ্যমে সব প্রদানকারী ব্যবহার করুন।", + "featureEasySetupTitle": "সহজ সেটআপ", + "featureEasySetupDesc": "npx কমান্ড ব্যবহার করে কয়েক মিনিটেই চালু করুন।", + "featureModelFallbackTitle": "মডেল ফলব্যাক", + "featureModelFallbackDesc": "ব্যর্থতা বা উচ্চ ল্যাটেন্সির ক্ষেত্রে স্বয়ংক্রিয়ভাবে প্রদানকারী পরিবর্তন করুন।", + "featureUsageTrackingTitle": "ব্যবহার ট্র্যাকিং", + "featureUsageTrackingDesc": "সব মডেলের বিস্তারিত বিশ্লেষণ ও খরচ পর্যবেক্ষণ।", + "featureOAuthApiKeysTitle": "OAuth ও API কী", + "featureOAuthApiKeysDesc": "একটি ভল্টে নিরাপদে পরিচয়পত্র পরিচালনা করুন।", + "featureCloudSyncTitle": "ক্লাউড সিঙ্ক", + "featureCloudSyncDesc": "ডিভাইসগুলোর মধ্যে আপনার কনফিগারেশন তাৎক্ষণিকভাবে সিঙ্ক করুন।", + "featureCliSupportTitle": "CLI সমর্থন", + "featureCliSupportDesc": "Claude Code, Codex, Cline, Cursor এবং আরও অনেক কিছুর সঙ্গে কাজ করে।", + "featureDashboardTitle": "ড্যাশবোর্ড", + "featureDashboardDesc": "রিয়েল-টাইম ট্রাফিক বিশ্লেষণের জন্য ভিজ্যুয়াল ড্যাশবোর্ড।", + "howItWorks": "OmniRoute যেভাবে কাজ করে", + "howItWorksDescription": "আপনার অ্যাপ্লিকেশন থেকে ডেটা আমাদের বুদ্ধিমান রাউটিং স্তরের মাধ্যমে নির্বিঘ্নে প্রবাহিত হয়ে কাজটির জন্য সেরা প্রদানকারীর কাছে পৌঁছায়।", + "howItWorksStep1Title": "১. CLI ও SDK", + "howItWorksStep1Description": "আপনার পছন্দের টুল বা আমাদের একীভূত SDK থেকে অনুরোধ শুরু হয়। শুধু বেস URL পরিবর্তন করুন।", + "howItWorksStep2Title": "২. OmniRoute হাব", + "howItWorksStep2Description": "আমাদের ইঞ্জিন প্রম্পট বিশ্লেষণ করে, প্রদানকারীর অবস্থা যাচাই করে এবং সর্বনিম্ন ল্যাটেন্সি বা খরচ অনুযায়ী রাউট করে।", + "howItWorksStep3Title": "৩. AI প্রদানকারী", + "howItWorksStep3Description": "অনুরোধটি OpenAI, Anthropic, Gemini বা অন্য কোনো প্রদানকারী তাৎক্ষণিকভাবে সম্পন্ন করে।", + "getStartedIn30Seconds": "৩০ সেকেন্ডে শুরু করুন", + "getStartedDescription": "OmniRoute ইনস্টল করুন, ওয়েব ড্যাশবোর্ডের মাধ্যমে আপনার প্রদানকারীদের কনফিগার করুন এবং AI অনুরোধ রাউট করা শুরু করুন।", + "installOmniRoute": "OmniRoute ইনস্টল করুন", + "installStepDescription": "তাৎক্ষণিকভাবে সার্ভার চালু করতে npx কমান্ড ব্যবহার করুন", + "openDashboard": "ড্যাশবোর্ড খুলুন", + "openDashboardStepDescription": "ওয়েব ইন্টারফেসের মাধ্যমে প্রদানকারী ও API কী কনফিগার করুন", + "routeRequests": "অনুরোধ রাউট করুন", + "routeRequestsStepDescription": "আপনার CLI টুলগুলোকে {endpoint}-এ নির্দেশ করুন", + "terminal": "টার্মিনাল", + "copy": "কপি করুন", + "copied": "✓ কপি করা হয়েছে", + "startingOmniRoute": "OmniRoute চালু হচ্ছে...", + "serverRunningOnLabel": "সার্ভার চলছে এখানে:", + "dashboardLabel": "ড্যাশবোর্ড", + "readyToRoute": "রাউট করার জন্য প্রস্তুত! ✓", + "configureProvidersNote": "📝 ড্যাশবোর্ডে প্রোভাইডার কনফিগার করুন অথবা এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করুন", + "dataLocation": "ডেটার অবস্থান:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", - "product": "Product", - "dashboardLink": "Dashboard", - "changelog": "Changelog", - "resources": "Resources", - "documentation": "Documentation", + "product": "প্রোডাক্ট", + "dashboardLink": "ড্যাশবোর্ড", + "changelog": "পরিবর্তনের তালিকা", + "resources": "রিসোর্স", + "documentation": "ডকুমেন্টেশন", "npm": "NPM", - "legal": "Legal", - "mitLicense": "MIT License", - "footerTagline": "The unified endpoint for AI generation. Connect, route, and manage your AI providers with ease.", - "copyright": "© {year} OmniRoute. All rights reserved.", + "legal": "আইনি তথ্য", + "mitLicense": "MIT লাইসেন্স", + "footerTagline": "AI জেনারেশনের জন্য সমন্বিত এন্ডপয়েন্ট। সহজেই আপনার AI প্রোভাইডারগুলো সংযুক্ত, রাউট ও পরিচালনা করুন।", + "copyright": "© {year} OmniRoute। সর্বস্বত্ব সংরক্ষিত।", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", "flowToolCline": "Cline", @@ -10004,11 +10011,11 @@ "flowProviderAnthropic": "Anthropic", "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", - "interactiveDiagram": "Interactive diagram visible on desktop", - "ctaTitle": "Ready to Simplify Your AI Infrastructure?", - "ctaDescription": "Join developers who are streamlining their AI integrations with OmniRoute. Open source and free to start.", - "startFree": "Start Free", - "readDocumentation": "Read Documentation", + "interactiveDiagram": "ইন্টার্যাক্টিভ ডায়াগ্রামটি ডেস্কটপে দৃশ্যমান", + "ctaTitle": "আপনার AI অবকাঠামোকে আরও সহজ করতে প্রস্তুত?", + "ctaDescription": "OmniRoute ব্যবহার করে নিজেদের AI ইন্টিগ্রেশনকে আরও কার্যকর করছেন—এমন ডেভেলপারদের সঙ্গে যোগ দিন। এটি ওপেন সোর্স এবং বিনামূল্যে শুরু করা যায়।", + "startFree": "বিনামূল্যে শুরু করুন", + "readDocumentation": "ডকুমেন্টেশন পড়ুন", "company": "কোম্পানি", "pricing": "মূল্য নির্ধারণ", "apiReference": "এপিআই রেফারেন্স", @@ -10023,45 +10030,45 @@ "communityDiscussions": "কমিউনিটি আলোচনা" }, "docs": { - "title": "Documentation", - "quickStart": "Quick Start", + "title": "ডকুমেন্টেশন", + "quickStart": "দ্রুত শুরু", "deploymentGuides": "স্থাপনার নির্দেশিকা", - "features": "Features", - "supportedProviders": "Supported Providers", - "supportedProvidersToc": "Providers", - "commonUseCases": "Common Use Cases", - "clientCompatibility": "Client Compatibility", - "protocolsToc": "Protocols", - "apiReference": "API Reference", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", - "method": "Method", - "path": "Path", - "notes": "Notes", - "modelPrefixes": "Model Prefixes", - "prefix": "Prefix", - "troubleshooting": "Troubleshooting", - "supportsChat": "Supports both chat and responses endpoints.", - "oauthAutoRefresh": "OAuth connection with automatic token refresh.", - "fullStreaming": "Full streaming support for all models.", - "docsLabel": "Docs", + "features": "ফিচারসমূহ", + "supportedProviders": "সমর্থিত প্রোভাইডার", + "supportedProvidersToc": "প্রোভাইডার", + "commonUseCases": "সাধারণ ব্যবহারের ক্ষেত্র", + "clientCompatibility": "ক্লায়েন্ট সামঞ্জস্যতা", + "protocolsToc": "প্রোটোকল", + "apiReference": "API রেফারেন্স", + "managementApiReference": "ম্যানেজমেন্ট API রেফারেন্স", + "managementApiDescription": "প্রক্সি রেজিস্ট্রি, স্কোপ অ্যাসাইনমেন্ট এবং লিগ্যাসি প্রক্সি মাইগ্রেশনের জন্য অটোমেশন এন্ডপয়েন্ট।", + "method": "মেথড", + "path": "পাথ", + "notes": "নোট", + "modelPrefixes": "মডেল প্রিফিক্স", + "prefix": "প্রিফিক্স", + "troubleshooting": "সমস্যা সমাধান", + "supportsChat": "চ্যাট এবং রেসপন্স—উভয় এন্ডপয়েন্ট সমর্থন করে।", + "oauthAutoRefresh": "স্বয়ংক্রিয় টোকেন রিফ্রেশসহ OAuth সংযোগ।", + "fullStreaming": "সব মডেলের জন্য পূর্ণ স্ট্রিমিং সমর্থন।", + "docsLabel": "ডকুমেন্টেশন", "docsHeroDescription": "AI gateway for multi-provider LLMs. One endpoint for OpenAI, Anthropic, Gemini, DeepSeek, GitHub Copilot, Claude Code, Cursor, and 100+ more providers.", - "openDashboard": "Open Dashboard", - "endpointPage": "Endpoint Page", + "openDashboard": "ড্যাশবোর্ড খুলুন", + "endpointPage": "এন্ডপয়েন্ট পৃষ্ঠা", "github": "GitHub", - "reportIssue": "Report Issue", - "onThisPage": "On this page", - "documentationVersion": "Documentation - v{version}", - "quickStartStep1Title": "1. Install and run", - "quickStartStep1Prefix": "Run", - "quickStartStep1Middle": "or clone from GitHub and run", - "quickStartStep2Title": "2. Create API key", - "quickStartStep2Text": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "quickStartStep3Title": "3. Connect providers", - "quickStartStep3Text": "Add provider accounts via OAuth login, API key, or free-tier auto-connect.", - "quickStartStep4Title": "4. Set client base URL", - "quickStartStep4Prefix": "Point your IDE or API client to", - "quickStartStep4Suffix": "Use provider prefix, for example", + "reportIssue": "সমস্যা জানান", + "onThisPage": "এই পৃষ্ঠায়", + "documentationVersion": "ডকুমেন্টেশন - v{version}", + "quickStartStep1Title": "1. ইনস্টল করুন এবং চালান", + "quickStartStep1Prefix": "চালান", + "quickStartStep1Middle": "অথবা GitHub থেকে ক্লোন করে চালান", + "quickStartStep2Title": "2. API কী তৈরি করুন", + "quickStartStep2Text": "Endpoint -> Registered Keys-এ যান। প্রতিটি এনভায়রনমেন্টের জন্য একটি করে কী তৈরি করুন।", + "quickStartStep3Title": "3. প্রোভাইডার সংযুক্ত করুন", + "quickStartStep3Text": "OAuth লগইন, API কী অথবা ফ্রি-টিয়ার স্বয়ংক্রিয় সংযোগের মাধ্যমে প্রোভাইডার অ্যাকাউন্ট যোগ করুন।", + "quickStartStep4Title": "4. ক্লায়েন্টের বেস URL সেট করুন", + "quickStartStep4Prefix": "আপনার IDE বা API ক্লায়েন্টকে এখানে নির্দেশ করুন", + "quickStartStep4Suffix": "প্রোভাইডার প্রিফিক্স ব্যবহার করুন, উদাহরণস্বরূপ", "deploySetupTitle": "সেটআপ গাইড", "deploySetupText": "ধাপে ধাপে ইনস্টলেশন, পরিবেশ কনফিগারেশন, এবং OmniRoute-এর জন্য প্রথম-রান ওয়াকথ্রু।", "deployElectronTitle": "ইলেক্ট্রন ডেস্কটপ", @@ -10075,161 +10082,161 @@ "deployPwaTitle": "পিডব্লিউএ", "deployPwaText": "Android, iOS এবং ডেস্কটপ ব্রাউজারে একটি প্রগতিশীল ওয়েব অ্যাপ হিসাবে OmniRoute ইনস্টল করুন।", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", - "featureRoutingTitle": "Multi-Provider Routing", - "featureRoutingText": "Route requests to 30+ AI providers through a single OpenAI-compatible endpoint. Supports chat, responses, audio, and image APIs.", - "featureCombosTitle": "Combos and Balancing", - "featureCombosText": "Create model combos with fallback chains and balancing strategies: round-robin, priority, random, least-used, and cost-optimized.", - "featureUsageTitle": "Usage and Cost Tracking", - "featureUsageText": "Real-time token counting, cost calculation per provider/model, and detailed usage breakdown by API key and account.", - "featureAnalyticsTitle": "Analytics Dashboard", - "featureAnalyticsText": "Visual analytics with charts for requests, tokens, errors, latency, costs, and model popularity over time.", - "featureHealthTitle": "Health Monitoring", - "featureHealthText": "Live health checks, provider status, circuit breaker states, and automatic rate limit detection with exponential backoff.", - "featureCliTitle": "CLI Tools", - "featureCliText": "Manage IDE configurations, export/import backups, discover codex profiles, and configure settings from the dashboard.", - "featureSecurityTitle": "Security and Policies", - "featureSecurityText": "API key authentication, IP filtering, prompt injection guard, domain policies, session management, and audit logging.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncText": "Sync your configuration to Cloudflare Workers for remote access with encrypted credentials and automatic failover.", - "providersAcrossConnectionTypes": "{count} providers across three connection types.", - "manageProviders": "Manage Providers", - "providersCount": "{count} providers", - "providerTypeFree": "Free Tier", + "deployTermuxText": "Termux-এর মাধ্যমে Android-এ OmniRoute হেডলেস মোডে চালান। আপনার মোবাইল ব্রাউজার থেকে ড্যাশবোর্ড অ্যাক্সেস করুন।", + "featureRoutingTitle": "মাল্টি-প্রোভাইডার রাউটিং", + "featureRoutingText": "একটি OpenAI-সামঞ্জস্যপূর্ণ এন্ডপয়েন্টের মাধ্যমে 30টিরও বেশি AI প্রোভাইডারে অনুরোধ রাউট করুন। চ্যাট, রেসপন্স, অডিও এবং ইমেজ API সমর্থন করে।", + "featureCombosTitle": "কম্বো ও ভারসাম্যকরণ", + "featureCombosText": "ফলব্যাক চেইন এবং ভারসাম্যকরণ কৌশলসহ মডেল কম্বো তৈরি করুন: রাউন্ড-রবিন, অগ্রাধিকার, র্যান্ডম, সর্বনিম্ন-ব্যবহৃত এবং খরচ-অপ্টিমাইজড।", + "featureUsageTitle": "ব্যবহার ও খরচ ট্র্যাকিং", + "featureUsageText": "রিয়েল-টাইম টোকেন গণনা, প্রতিটি প্রোভাইডার/মডেলের খরচ হিসাব এবং API কী ও অ্যাকাউন্ট অনুযায়ী ব্যবহারের বিস্তারিত বিভাজন।", + "featureAnalyticsTitle": "অ্যানালিটিক্স ড্যাশবোর্ড", + "featureAnalyticsText": "সময়ের সঙ্গে অনুরোধ, টোকেন, ত্রুটি, ল্যাটেন্সি, খরচ এবং মডেলের জনপ্রিয়তার চার্টসহ ভিজ্যুয়াল অ্যানালিটিক্স।", + "featureHealthTitle": "স্বাস্থ্য পর্যবেক্ষণ", + "featureHealthText": "লাইভ স্বাস্থ্য পরীক্ষা, প্রোভাইডারের অবস্থা, সার্কিট ব্রেকারের অবস্থা এবং এক্সপোনেনশিয়াল ব্যাকঅফসহ স্বয়ংক্রিয় রেট লিমিট শনাক্তকরণ।", + "featureCliTitle": "CLI টুলস", + "featureCliText": "IDE কনফিগারেশন পরিচালনা করুন, ব্যাকআপ এক্সপোর্ট/ইমপোর্ট করুন, codex প্রোফাইল খুঁজুন এবং ড্যাশবোর্ড থেকে সেটিংস কনফিগার করুন।", + "featureSecurityTitle": "নিরাপত্তা ও নীতিমালা", + "featureSecurityText": "API কী প্রমাণীকরণ, IP ফিল্টারিং, প্রম্পট ইনজেকশন প্রতিরোধ, ডোমেইন নীতিমালা, সেশন ব্যবস্থাপনা এবং অডিট লগিং।", + "featureCloudSyncTitle": "ক্লাউড সিঙ্ক", + "featureCloudSyncText": "এনক্রিপ্ট করা ক্রেডেনশিয়াল এবং স্বয়ংক্রিয় ফেলওভারসহ দূরবর্তী অ্যাক্সেসের জন্য আপনার কনফিগারেশন Cloudflare Workers-এ সিঙ্ক করুন।", + "providersAcrossConnectionTypes": "তিন ধরনের সংযোগজুড়ে {count}টি প্রোভাইডার।", + "manageProviders": "প্রোভাইডার পরিচালনা করুন", + "providersCount": "{count}টি প্রোভাইডার", + "providerTypeFree": "বিনামূল্যের স্তর", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", - "useCaseSingleEndpointTitle": "Single endpoint for many providers", - "useCaseSingleEndpointText": "Point clients to one base URL and route by model prefix (for example: gh/, cc/, kr/, openai/).", - "useCaseFallbackTitle": "Fallback and model switching with combos", - "useCaseFallbackText": "Create combo models in Dashboard and keep client config stable while providers rotate internally.", - "useCaseUsageVisibilityTitle": "Usage, cost and debug visibility", - "useCaseUsageVisibilityText": "Track tokens and cost by provider, account, and API key in Usage and Analytics tabs.", + "providerTypeApiKey": "API কী", + "useCaseSingleEndpointTitle": "অনেক প্রোভাইডারের জন্য একটি এন্ডপয়েন্ট", + "useCaseSingleEndpointText": "ক্লায়েন্টগুলোকে একটি বেস URL-এ নির্দেশ করুন এবং মডেল প্রিফিক্স অনুযায়ী রাউট করুন (উদাহরণ: gh/, cc/, kr/, openai/)।", + "useCaseFallbackTitle": "কম্বোর মাধ্যমে ফলব্যাক ও মডেল পরিবর্তন", + "useCaseFallbackText": "Dashboard-এ কম্বো মডেল তৈরি করুন এবং অভ্যন্তরীণভাবে প্রোভাইডার পরিবর্তিত হলেও ক্লায়েন্ট কনফিগ স্থিতিশীল রাখুন।", + "useCaseUsageVisibilityTitle": "ব্যবহার, খরচ ও ডিবাগের দৃশ্যমানতা", + "useCaseUsageVisibilityText": "Usage ও Analytics ট্যাবে প্রোভাইডার, অ্যাকাউন্ট এবং API কী অনুযায়ী টোকেন ও খরচ ট্র্যাক করুন।", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", - "modelRecommendationLabel": "Model recommendation: explicit prefix", - "clientCodexTitle": "Codex / GitHub Copilot Models", - "clientCodexBullet1": "Use model IDs with", - "clientCodexBullet2": "Codex-family models auto-route to", - "clientCodexBullet3": "Non-Codex models continue on", + "baseUrlLabel": "বেস URL", + "chatEndpointLabel": "চ্যাট এন্ডপয়েন্ট", + "modelRecommendationLabel": "মডেল সুপারিশ: সুস্পষ্ট প্রিফিক্স", + "clientCodexTitle": "Codex / GitHub Copilot মডেলসমূহ", + "clientCodexBullet1": "এই প্রিফিক্সসহ মডেল ID ব্যবহার করুন:", + "clientCodexBullet2": "Codex-পরিবারের মডেলগুলো স্বয়ংক্রিয়ভাবে এখানে রাউট হয়:", + "clientCodexBullet3": "Codex-বহির্ভূত মডেলগুলো এখানে চলতে থাকে:", "clientCursorTitle": "Cursor IDE", - "clientCursorBullet1": "Use", - "clientCursorBullet1Suffix": "prefix for Cursor models.", - "clientCursorBullet2": "OAuth connection - login from the Providers page.", + "clientCursorBullet1": "ব্যবহার করুন", + "clientCursorBullet1Suffix": "Cursor মডেলের জন্য প্রিফিক্স।", + "clientCursorBullet2": "OAuth সংযোগ—Providers পৃষ্ঠা থেকে লগইন করুন।", "clientClaudeTitle": "Claude Code / Antigravity", - "clientClaudeBullet1Prefix": "Use", - "clientClaudeBullet1Middle": "(Claude) or", - "clientClaudeBullet1Suffix": "(Antigravity) prefix.", + "clientClaudeBullet1Prefix": "ব্যবহার করুন", + "clientClaudeBullet1Middle": "(Claude) অথবা", + "clientClaudeBullet1Suffix": "(Antigravity) প্রিফিক্স।", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "Use OmniRoute as an OpenAI-compatible base URL and keep explicit provider prefixes for deterministic routing.", - "clientWindsurfBullet2": "Point models to `/v1/chat/completions` for general traffic and preserve `/v1/responses` for Codex-style flows.", - "clientWindsurfBullet3": "Use Dashboard -> CLI Tools for a ready-made Windsurf configuration guide.", + "clientWindsurfBullet1": "OmniRoute-কে OpenAI-সামঞ্জস্যপূর্ণ বেস URL হিসেবে ব্যবহার করুন এবং নির্ধারিত রাউটিংয়ের জন্য সুস্পষ্ট প্রোভাইডার প্রিফিক্স বজায় রাখুন।", + "clientWindsurfBullet2": "সাধারণ ট্রাফিকের জন্য মডেলগুলোকে `/v1/chat/completions`-এ নির্দেশ করুন এবং Codex-ধাঁচের ফ্লোর জন্য `/v1/responses` বজায় রাখুন।", + "clientWindsurfBullet3": "প্রস্তুত Windsurf কনফিগারেশন নির্দেশিকার জন্য Dashboard -> CLI Tools ব্যবহার করুন।", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline works best with explicit provider/model prefixes so the router never has to guess the backend.", - "clientClineBullet2": "Use `/v1/chat/completions` for general models and reuse the same OmniRoute base URL across different accounts.", - "clientClineBullet3": "Use the Providers dashboard to validate OAuth/API key before debugging Cline runtime issues.", + "clientClineBullet1": "সুস্পষ্ট প্রোভাইডার/মডেল প্রিফিক্সের সঙ্গে Cline সবচেয়ে ভালো কাজ করে, যাতে রাউটারকে কখনো ব্যাকএন্ড অনুমান করতে না হয়।", + "clientClineBullet2": "সাধারণ মডেলের জন্য `/v1/chat/completions` ব্যবহার করুন এবং বিভিন্ন অ্যাকাউন্টে একই OmniRoute বেস URL পুনরায় ব্যবহার করুন।", + "clientClineBullet3": "Cline রানটাইমের সমস্যা ডিবাগ করার আগে OAuth/API কী যাচাই করতে Providers ড্যাশবোর্ড ব্যবহার করুন।", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "Use OmniRoute as a stable base URL while rotating accounts or provider combos underneath.", - "clientKimiBullet2": "Prefer prefixed models in coding flows so fallback and audit trail remain explicit.", - "clientKimiBullet3": "Use `/v1/responses` when you want native Responses-style routing for tool-using clients.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "clientKimiBullet1": "অন্তর্নিহিত অ্যাকাউন্ট বা প্রোভাইডার কম্বো পরিবর্তনের সময় OmniRoute-কে একটি স্থিতিশীল বেস URL হিসেবে ব্যবহার করুন।", + "clientKimiBullet2": "কোডিং ফ্লোতে প্রিফিক্সযুক্ত মডেলকে অগ্রাধিকার দিন, যাতে ফলব্যাক ও অডিট ট্রেইল সুস্পষ্ট থাকে।", + "clientKimiBullet3": "টুল ব্যবহারকারী ক্লায়েন্টের জন্য নেটিভ Responses-ধাঁচের রাউটিং চাইলে `/v1/responses` ব্যবহার করুন।", + "protocolsTitle": "প্রোটোকল: MCP ও A2A", + "protocolsDescription": "OpenAI-সামঞ্জস্যপূর্ণ API-এর পাশাপাশি OmniRoute দুটি অপারেশনাল প্রোটোকল প্রদান করে: টুল এক্সিকিউশনের জন্য MCP এবং এজেন্ট-টু-এজেন্ট ওয়ার্কফ্লোর জন্য A2A।", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "ক্লায়েন্টগুলোকে অডিটের দৃশ্যমানতাসহ OmniRoute টুল আবিষ্কার ও কল করার সুযোগ দিতে stdio-এর মাধ্যমে MCP ব্যবহার করুন।", + "protocolMcpStep1": "`omniroute --mcp` দিয়ে MCP ট্রান্সপোর্ট চালু করুন।", + "protocolMcpStep2": "আপনার MCP ক্লায়েন্টকে stdio ট্রান্সপোর্টে নির্দেশ করুন।", + "protocolMcpStep3": "সংযোগ যাচাই করতে `omniroute_get_health` এবং `omniroute_list_combos` কল করুন।", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", - "endpointChatNote": "OpenAI-compatible chat endpoint (default).", - "endpointResponsesNote": "Responses API endpoint (Codex, o-series).", - "endpointModelsNote": "Model catalog for all connected providers.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", - "endpointSpeechNote": "Text-to-speech generation (ElevenLabs, OpenAI TTS).", - "endpointEmbeddingsNote": "Text embedding generation (OpenAI, Cohere, Voyage).", - "endpointImagesNote": "Image generation (NanoBanana).", - "endpointRewriteChatNote": "Rewrite helper for clients without /v1.", - "endpointRewriteResponsesNote": "Rewrite helper for Responses without /v1.", - "endpointRewriteModelsNote": "Rewrite helper for model discovery without /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", - "modelPrefixesDescriptionStart": "Use the provider prefix before the model name to route to a specific provider. Example:", - "modelPrefixesDescriptionEnd": "routes to GitHub Copilot.", - "provider": "Provider", - "type": "Type", - "troubleshootingModelRouting": "If the client fails with model routing, use explicit provider/model (for example: gh/gpt-5.1-codex).", - "troubleshootingAmbiguousModels": "If you receive ambiguous model errors, pick a provider prefix instead of a bare model ID.", - "troubleshootingCodexFamily": "For GitHub Codex-family models, keep model as gh/codex-model; router selects /responses automatically.", - "troubleshootingTestConnection": "Use Dashboard > Providers > Test Connection before testing from IDEs or external clients.", - "troubleshootingCircuitBreaker": "If a provider shows circuit breaker open, wait for the cooldown or check Health page for details.", - "troubleshootingOAuth": "For OAuth providers, re-authenticate if tokens expire. Check the provider card status indicator.", - "endpointCompletionsNote": "Legacy completions endpoint for text generation.", - "endpointModerationsNote": "Content moderation and safety classification.", - "endpointRerankNote": "Document reranking for retrieval-augmented generation (Cohere, Jina).", - "endpointSearchNote": "Web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity).", - "endpointSearchAnalyticsNote": "Analytics and metrics for search requests.", - "endpointVideoNote": "Video generation (ComfyUI, SD WebUI workflows).", - "endpointMusicNote": "Music generation via ComfyUI workflows.", - "endpointMessagesNote": "Anthropic-native messages endpoint.", - "endpointCountTokensNote": "Count tokens for a given message payload.", - "endpointFilesNote": "File upload for multimodal inputs.", - "endpointBatchesNote": "Batch processing for bulk API requests.", - "endpointWsNote": "WebSocket endpoint for real-time streaming.", - "mgmtProvidersListNote": "List all registered provider connections.", - "mgmtProvidersCreateNote": "Create a new provider connection.", - "mgmtProvidersUpdateNote": "Update an existing provider connection.", - "mgmtProvidersDeleteNote": "Delete a provider connection.", - "mgmtProvidersTestNote": "Test connectivity and authentication for a provider.", - "mgmtProvidersModelsNote": "List available models for a specific provider.", - "mgmtSettingsGetNote": "Retrieve current application settings.", - "mgmtSettingsUpdateNote": "Update application settings.", - "mgmtPayloadRulesGetNote": "Get payload transformation rules.", - "mgmtPayloadRulesUpdateNote": "Update payload transformation rules.", - "mcpToolsTitle": "MCP Tools", - "mcpToolsDescription": "OmniRoute exposes {count} tools via Model Context Protocol for agent orchestration.", - "mcpToolsCount": "{count} tools", - "mcpToolsToc": "MCP Tools", - "mcpToolsRoutingTitle": "Routing & Discovery", - "mcpToolsRoutingDesc": "Health checks, combo management, quota monitoring, cost reporting, and model catalog access.", - "mcpToolsOperationsTitle": "Operations & Strategy", - "mcpToolsOperationsDesc": "Route simulation, budget guards, strategy switching, resilience profiles, and provider metrics.", - "mcpToolsCacheTitle": "Cache Management", - "mcpToolsCacheDesc": "View cache statistics and flush semantic or signature caches.", + "protocolA2aDesc": "সিঙ্ক্রোনাসভাবে বা SSE স্ট্রিমিংয়ের মাধ্যমে টাস্ক জমা দিতে A2A JSON-RPC ব্যবহার করুন।", + "protocolA2aStep1": "এজেন্ট আবিষ্কারের জন্য `/.well-known/agent.json` পড়ুন।", + "protocolA2aStep2": "`POST /a2a`-এ `message/send` অথবা `message/stream` অনুরোধ পাঠান।", + "protocolA2aStep3": "`tasks/get` এবং `tasks/cancel` দিয়ে টাস্কের জীবনচক্র পরিচালনা করুন।", + "protocolTroubleshootingTitle": "প্রোটোকল সমস্যা সমাধান", + "protocolTroubleshooting1": "MCP স্ট্যাটাস অফলাইন থাকলে, stdio প্রসেসটি চলছে এবং heartbeat ফাইলটি আপডেট হচ্ছে কি না যাচাই করুন।", + "protocolTroubleshooting2": "A2A টাস্কগুলো `working` অবস্থায় আটকে থাকলে, `/api/a2a/tasks/:id` পরিদর্শন করুন এবং চূড়ান্ত অবস্থার জন্য ইভেন্ট স্ট্রিম দেখুন।", + "protocolTroubleshooting3": "অপারেশনাল নিয়ন্ত্রণ এবং অডিট দৃশ্যমানতার জন্য `/dashboard/mcp` ও `/dashboard/a2a` ব্যবহার করুন।", + "endpointChatNote": "OpenAI-সামঞ্জস্যপূর্ণ চ্যাট এন্ডপয়েন্ট (ডিফল্ট)।", + "endpointResponsesNote": "Responses API এন্ডপয়েন্ট (Codex, o-series)।", + "endpointModelsNote": "সংযুক্ত সব প্রোভাইডারের মডেল ক্যাটালগ।", + "endpointAudioNote": "অডিও ট্রান্সক্রিপশন (Deepgram, AssemblyAI)।", + "endpointSpeechNote": "টেক্সট-টু-স্পিচ তৈরি (ElevenLabs, OpenAI TTS)।", + "endpointEmbeddingsNote": "টেক্সট এমবেডিং তৈরি (OpenAI, Cohere, Voyage)।", + "endpointImagesNote": "ছবি তৈরি (NanoBanana)।", + "endpointRewriteChatNote": "/v1 ছাড়া ক্লায়েন্টগুলোর জন্য রিরাইট সহায়ক।", + "endpointRewriteResponsesNote": "/v1 ছাড়া Responses-এর জন্য রিরাইট সহায়ক।", + "endpointRewriteModelsNote": "/v1 ছাড়া মডেল আবিষ্কারের জন্য রিরাইট সহায়ক।", + "mgmtProxiesListNote": "সংরক্ষিত প্রক্সি রেজিস্ট্রি আইটেমের তালিকা দেখুন (পেজিনেশন সমর্থিত)।", + "mgmtProxiesCreateNote": "রেজিস্ট্রিতে পুনর্ব্যবহারযোগ্য একটি প্রক্সি আইটেম তৈরি করুন।", + "mgmtProxiesHealthNote": "প্রক্সি লগ থেকে প্রতিটি সংরক্ষিত প্রক্সির ২৪ ঘণ্টার/রোলিং স্বাস্থ্য মেট্রিক্স পান।", + "mgmtProxiesBulkAssignNote": "একটি অনুরোধে বহু স্কোপ ID-তে একটি প্রক্সি বরাদ্দ করুন অথবা সরিয়ে দিন।", + "mgmtAssignmentsListNote": "স্কোপ, scope_id অথবা proxy_id অনুযায়ী প্রক্সি বরাদ্দের তালিকা দেখুন।", + "mgmtAssignmentsUpdateNote": "গ্লোবাল/প্রোভাইডার/অ্যাকাউন্ট/কম্বো স্কোপের জন্য প্রক্সি বরাদ্দ করুন অথবা সরিয়ে দিন।", + "mgmtLegacyMigrationNote": "লিগ্যাসি proxyConfig ম্যাপগুলো রেজিস্ট্রি বরাদ্দে ইমপোর্ট করুন।", + "modelPrefixesDescriptionStart": "নির্দিষ্ট কোনো প্রোভাইডারে রাউট করতে মডেলের নামের আগে প্রোভাইডার প্রিফিক্স ব্যবহার করুন। উদাহরণ:", + "modelPrefixesDescriptionEnd": "GitHub Copilot-এ রাউট করে।", + "provider": "প্রোভাইডার", + "type": "ধরন", + "troubleshootingModelRouting": "মডেল রাউটিংয়ে ক্লায়েন্ট ব্যর্থ হলে, স্পষ্ট provider/model ব্যবহার করুন (উদাহরণ: gh/gpt-5.1-codex)।", + "troubleshootingAmbiguousModels": "অস্পষ্ট মডেল-সংক্রান্ত ত্রুটি পেলে, শুধু মডেল ID-এর পরিবর্তে একটি প্রোভাইডার প্রিফিক্স বেছে নিন।", + "troubleshootingCodexFamily": "GitHub Codex-পরিবারের মডেলগুলোর ক্ষেত্রে মডেলটি gh/codex-model হিসেবেই রাখুন; রাউটার স্বয়ংক্রিয়ভাবে /responses নির্বাচন করে।", + "troubleshootingTestConnection": "IDEs অথবা বাহ্যিক ক্লায়েন্ট থেকে পরীক্ষা করার আগে Dashboard > Providers > Test Connection ব্যবহার করুন।", + "troubleshootingCircuitBreaker": "কোনো প্রোভাইডারে সার্কিট ব্রেকার খোলা দেখালে, কুলডাউন শেষ হওয়া পর্যন্ত অপেক্ষা করুন অথবা বিস্তারিত জানতে Health পৃষ্ঠা দেখুন।", + "troubleshootingOAuth": "OAuth প্রোভাইডারের ক্ষেত্রে টোকেনের মেয়াদ শেষ হলে পুনরায় প্রমাণীকরণ করুন। প্রোভাইডার কার্ডের স্ট্যাটাস নির্দেশক পরীক্ষা করুন।", + "endpointCompletionsNote": "টেক্সট তৈরির জন্য লিগ্যাসি কমপ্লিশনস এন্ডপয়েন্ট।", + "endpointModerationsNote": "কনটেন্ট মডারেশন এবং নিরাপত্তা শ্রেণিবিন্যাস।", + "endpointRerankNote": "রিট্রিভাল-অগমেন্টেড জেনারেশনের জন্য ডকুমেন্ট রির্যাঙ্কিং (Cohere, Jina)।", + "endpointSearchNote": "৫টি প্রোভাইডারের মাধ্যমে ওয়েব অনুসন্ধান (Serper, Brave, Exa, Tavily, Perplexity)।", + "endpointSearchAnalyticsNote": "সার্চ অনুরোধের অ্যানালিটিক্স ও মেট্রিক্স।", + "endpointVideoNote": "ভিডিও তৈরি (ComfyUI, SD WebUI ওয়ার্কফ্লো)।", + "endpointMusicNote": "ComfyUI ওয়ার্কফ্লোর মাধ্যমে সংগীত তৈরি।", + "endpointMessagesNote": "Anthropic-এর নেটিভ মেসেজ এন্ডপয়েন্ট।", + "endpointCountTokensNote": "প্রদত্ত মেসেজ পেলোডের টোকেন গণনা করুন।", + "endpointFilesNote": "মাল্টিমোডাল ইনপুটের জন্য ফাইল আপলোড।", + "endpointBatchesNote": "বাল্ক API অনুরোধের জন্য ব্যাচ প্রসেসিং।", + "endpointWsNote": "রিয়েল-টাইম স্ট্রিমিংয়ের জন্য WebSocket এন্ডপয়েন্ট।", + "mgmtProvidersListNote": "নিবন্ধিত সব প্রোভাইডার সংযোগের তালিকা দেখুন।", + "mgmtProvidersCreateNote": "একটি নতুন প্রোভাইডার সংযোগ তৈরি করুন।", + "mgmtProvidersUpdateNote": "বিদ্যমান প্রোভাইডার সংযোগ আপডেট করুন।", + "mgmtProvidersDeleteNote": "একটি প্রোভাইডার সংযোগ মুছুন।", + "mgmtProvidersTestNote": "একটি প্রোভাইডারের সংযোগক্ষমতা ও প্রমাণীকরণ পরীক্ষা করুন।", + "mgmtProvidersModelsNote": "নির্দিষ্ট প্রোভাইডারের জন্য উপলভ্য মডেলগুলোর তালিকা দেখুন।", + "mgmtSettingsGetNote": "বর্তমান অ্যাপ্লিকেশন সেটিংস দেখুন।", + "mgmtSettingsUpdateNote": "অ্যাপ্লিকেশন সেটিংস আপডেট করুন।", + "mgmtPayloadRulesGetNote": "পেলোড রূপান্তরের নিয়মগুলো দেখুন।", + "mgmtPayloadRulesUpdateNote": "পেলোড রূপান্তরের নিয়মগুলো আপডেট করুন।", + "mcpToolsTitle": "MCP টুলসমূহ", + "mcpToolsDescription": "এজেন্ট অর্কেস্ট্রেশনের জন্য OmniRoute, Model Context Protocol-এর মাধ্যমে {count}টি টুল উন্মুক্ত করে।", + "mcpToolsCount": "{count}টি টুল", + "mcpToolsToc": "MCP টুলসমূহ", + "mcpToolsRoutingTitle": "রাউটিং ও ডিসকভারি", + "mcpToolsRoutingDesc": "স্বাস্থ্য পরীক্ষা, কম্বো ব্যবস্থাপনা, কোটা পর্যবেক্ষণ, খরচের প্রতিবেদন এবং মডেল ক্যাটালগে অ্যাক্সেস।", + "mcpToolsOperationsTitle": "অপারেশন ও কৌশল", + "mcpToolsOperationsDesc": "রুট সিমুলেশন, বাজেট গার্ড, কৌশল পরিবর্তন, রেজিলিয়েন্স প্রোফাইল এবং প্রোভাইডার মেট্রিক্স।", + "mcpToolsCacheTitle": "ক্যাশ ব্যবস্থাপনা", + "mcpToolsCacheDesc": "ক্যাশের পরিসংখ্যান দেখুন এবং সেমান্টিক বা সিগনেচার ক্যাশ খালি করুন।", "mcpToolsCompressionTitle": "কম্প্রেশন ইঞ্জিন", "mcpToolsCompressionDesc": "RTK/Brotli কম্প্রেশন কনফিগার করুন, সোয়াপ ইঞ্জিন, এবং কম্বো দ্বারা কম্প্রেশন বিশ্লেষণ পরিদর্শন করুন।", "mcpToolsOneProxyTitle": "1 প্রক্সি / টানেল", "mcpToolsOneProxyDesc": "আউটবাউন্ড প্রক্সিগুলি পরিচালনা করুন, আবাসিক আইপিগুলি ঘোরান এবং প্রক্সি স্বাস্থ্য পরিদর্শন করুন৷", - "mcpToolsMemoryTitle": "Memory", - "mcpToolsMemoryDesc": "Search, add, and clear persistent conversational memory entries.", - "mcpToolsSkillsTitle": "Skills", - "mcpToolsSkillsDesc": "List, enable, execute, and monitor custom skill executions.", - "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "Automatically create optimized combos based on your connected providers, usage patterns, and model capabilities.", - "featureSearchTitle": "Web Search", - "featureSearchText": "Integrated web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity) including analytics and cost tracking.", - "featureMemoryTitle": "Memory System", - "featureMemoryText": "Persistent conversational memory with extraction, injection, retrieval, and summarization across sessions.", - "featureSkillsTitle": "Skills Framework", - "featureSkillsText": "Extensible skill system with built-in and custom skills, sandbox execution, request interception, and context injection.", - "featureAcpTitle": "Agent Communication", - "featureAcpText": "Agent Communication Protocol (ACP) registry for managing agent-to-agent workflows and tool orchestration.", - "protocolAcpTitle": "ACP (Agent Communication)", - "protocolAcpDesc": "Register and manage agents via the ACP registry for inter-agent communication and tool sharing.", - "protocolAcpStep1": "Navigate to Dashboard → Agents to view registered ACP agents.", - "protocolAcpStep2": "Register new agents with capabilities and endpoint configuration.", - "protocolAcpStep3": "Use CLI Tools to configure agent communication channels.", + "mcpToolsMemoryTitle": "মেমোরি", + "mcpToolsMemoryDesc": "স্থায়ী কথোপকথনমূলক মেমোরি এন্ট্রি খুঁজুন, যোগ করুন এবং মুছুন।", + "mcpToolsSkillsTitle": "স্কিলসমূহ", + "mcpToolsSkillsDesc": "কাস্টম স্কিলের এক্সিকিউশন তালিকাভুক্ত, সক্রিয়, সম্পাদন এবং পর্যবেক্ষণ করুন।", + "featureAutoComboTitle": "অটো-কম্বো", + "featureAutoComboText": "আপনার সংযুক্ত প্রোভাইডার, ব্যবহারের ধরন এবং মডেলের সক্ষমতার ভিত্তিতে স্বয়ংক্রিয়ভাবে অপ্টিমাইজড কম্বো তৈরি করুন।", + "featureSearchTitle": "ওয়েব সার্চ", + "featureSearchText": "অ্যানালিটিক্স ও খরচ ট্র্যাকিংসহ ৫টি প্রোভাইডার (Serper, Brave, Exa, Tavily, Perplexity) দ্বারা সমন্বিত ওয়েব সার্চ।", + "featureMemoryTitle": "মেমোরি সিস্টেম", + "featureMemoryText": "সেশনজুড়ে এক্সট্র্যাকশন, ইনজেকশন, পুনরুদ্ধার ও সারসংক্ষেপসহ স্থায়ী কথোপকথনমূলক মেমোরি।", + "featureSkillsTitle": "স্কিল ফ্রেমওয়ার্ক", + "featureSkillsText": "বিল্ট-ইন ও কাস্টম স্কিল, স্যান্ডবক্স এক্সিকিউশন, অনুরোধ ইন্টারসেপশন এবং কনটেক্সট ইনজেকশনসহ সম্প্রসারণযোগ্য স্কিল সিস্টেম।", + "featureAcpTitle": "এজেন্ট যোগাযোগ", + "featureAcpText": "এজেন্ট-টু-এজেন্ট কর্মপ্রবাহ ও টুল অর্কেস্ট্রেশন পরিচালনার জন্য Agent Communication Protocol (ACP) রেজিস্ট্রি।", + "protocolAcpTitle": "ACP (এজেন্ট যোগাযোগ)", + "protocolAcpDesc": "এজেন্টদের মধ্যে যোগাযোগ ও টুল শেয়ারিংয়ের জন্য ACP রেজিস্ট্রির মাধ্যমে এজেন্ট নিবন্ধন ও পরিচালনা করুন।", + "protocolAcpStep1": "নিবন্ধিত ACP এজেন্ট দেখতে ড্যাশবোর্ড → এজেন্টসমূহে যান।", + "protocolAcpStep2": "সক্ষমতা ও এন্ডপয়েন্ট কনফিগারেশনসহ নতুন এজেন্ট নিবন্ধন করুন।", + "protocolAcpStep3": "এজেন্ট যোগাযোগের চ্যানেল কনফিগার করতে CLI টুলস ব্যবহার করুন।", "metadataTitleTemplate": "%s — OmniRoute ডকস", "metadataDefaultTitle": "OmniRoute ডকুমেন্টেশন", "metadataDescription": "OmniRoute AI গেটওয়ের জন্য ব্যাপক ডকুমেন্টেশন — সেটআপ, API, সংকোচন, মোতায়েন, এবং আরও অনেক কিছু।", @@ -10276,95 +10283,95 @@ } }, "legal": { - "privacyPolicy": "Privacy Policy", - "termsOfService": "Terms of Service", - "providerConfigurations": "Provider configurations", - "apiKeys": "API keys", - "usageLogs": "Usage logs", - "applicationSettings": "Application settings", - "viewExportAnalytics": "View and export usage analytics", - "clearHistory": "Clear usage history at any time", - "configureRetention": "Configure log retention policies", - "backupRestore": "Back up and restore your database", - "privacyMetadataTitle": "Privacy Policy | OmniRoute", - "privacyMetadataDescription": "Privacy policy for the OmniRoute AI API proxy router.", - "termsMetadataTitle": "Terms of Service | OmniRoute", - "termsMetadataDescription": "Terms of service for the OmniRoute AI API proxy router.", - "backToHome": "Back to home", - "lastUpdated": "Last updated: {date}", - "policyLastUpdatedDate": "February 13, 2026", + "privacyPolicy": "গোপনীয়তা নীতি", + "termsOfService": "পরিষেবার শর্তাবলি", + "providerConfigurations": "প্রোভাইডার কনফিগারেশনসমূহ", + "apiKeys": "API কীসমূহ", + "usageLogs": "ব্যবহারের লগসমূহ", + "applicationSettings": "অ্যাপ্লিকেশন সেটিংস", + "viewExportAnalytics": "ব্যবহারের বিশ্লেষণ দেখুন ও এক্সপোর্ট করুন", + "clearHistory": "যেকোনো সময় ব্যবহারের ইতিহাস মুছে ফেলুন", + "configureRetention": "লগ সংরক্ষণ নীতি কনফিগার করুন", + "backupRestore": "আপনার ডেটাবেস ব্যাকআপ ও পুনরুদ্ধার করুন", + "privacyMetadataTitle": "গোপনীয়তা নীতি | OmniRoute", + "privacyMetadataDescription": "OmniRoute AI API প্রক্সি রাউটারের গোপনীয়তা নীতি।", + "termsMetadataTitle": "পরিষেবার শর্তাবলি | OmniRoute", + "termsMetadataDescription": "OmniRoute AI API প্রক্সি রাউটারের পরিষেবার শর্তাবলি।", + "backToHome": "হোমে ফিরে যান", + "lastUpdated": "সর্বশেষ হালনাগাদ: {date}", + "policyLastUpdatedDate": "১৩ ফেব্রুয়ারি, ২০২৬", "listSeparator": "-", - "questionsVisit": "Questions? Visit our", - "githubRepository": "GitHub repository", - "privacySection1Title": "1. Local-First Architecture", - "privacySection1Text": "OmniRoute is designed as a local-first application. All data processing and storage occurs entirely on your machine. There is no centralized server collecting your information.", - "privacySection2Title": "2. Data We Store", - "privacyDataStoredIn": "The following data is stored locally in", - "privacyDataProviderConfigurationsDesc": "connection URLs, provider types, and priority settings", - "privacyDataApiKeysDesc": "encrypted and stored locally for authenticating with AI providers", - "privacyDataUsageLogsDesc": "request counts, token usage, model names, timestamps, and response times", - "privacyDataApplicationSettingsDesc": "theme preferences, routing strategy, and combo configurations", - "privacySection3Title": "3. No Telemetry", - "privacySection3Text": "OmniRoute does not collect telemetry, analytics, or crash reports. No data is sent to us or any third party. Your usage patterns, API calls, and configurations remain entirely private.", - "privacySection4Title": "4. Third-Party AI Providers", - "privacySection4Text": "When you make API calls through OmniRoute, your requests are forwarded to the AI providers you have configured (for example: OpenAI, Anthropic, Google). These providers have their own privacy policies that govern how they handle your data. Please review:", - "privacyOpenAiPolicy": "OpenAI Privacy Policy", - "privacyAnthropicPolicy": "Anthropic Privacy Policy", - "privacyGooglePolicy": "Google Privacy Policy", - "privacySection5Title": "5. Cloud Sync (Optional)", - "privacySection5Text": "If you enable the optional cloud sync feature, provider configurations and API keys may be transmitted to a configured cloud endpoint. This feature is disabled by default and requires explicit opt-in.", - "privacySection6Title": "6. Logging", - "privacyLoggingIntro": "Request logs can be configured through the dashboard settings. You can:", - "privacySection7Title": "7. Your Rights", - "privacySection7TextStart": "Since all data is stored locally, you have full control. You can delete your data at any time by removing the", - "privacySection7TextEnd": "directory or using the database backup and restore features in the dashboard.", - "termsSection1Title": "1. Overview", - "termsSection1Text": "OmniRoute is a local-first AI API proxy router that operates entirely on your machine. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "termsSection2Title": "2. User Responsibilities", - "termsResponsibilityApiKeys": "You are solely responsible for managing your own API keys and credentials for third-party AI providers (OpenAI, Anthropic, Google, etc.).", - "termsResponsibilityCompliance": "You must comply with the terms of service of each AI provider whose API you access through OmniRoute.", - "termsResponsibilitySecurity": "You are responsible for the security of your local OmniRoute installation, including setting a password and restricting network access.", - "termsSection3Title": "3. How It Works", - "termsSection3Text": "OmniRoute acts as an intermediary proxy. API calls sent to OmniRoute are translated and forwarded to your configured AI providers. OmniRoute does not modify the content of your requests or responses beyond the necessary protocol translation.", - "termsSection4Title": "4. Data Handling", - "termsDataStoredLocally": "All data is stored locally on your machine in a SQLite database.", - "termsNoTransmission": "OmniRoute does not transmit any data to external servers unless you explicitly enable cloud sync features.", - "termsDataLocationText": "Usage logs, API keys, and configuration are stored in", - "termsSection5Title": "5. Disclaimer", - "termsSection5Text": "OmniRoute is provided \"as is\" without warranty of any kind. We are not responsible for any costs incurred through API usage, service disruptions, or data loss. Always maintain backups of your configuration.", - "termsSection6Title": "6. Open Source", - "termsSection6Text": "OmniRoute is open-source software. You are free to inspect, modify, and distribute it under the terms of its license." + "questionsVisit": "কোনো প্রশ্ন আছে? আমাদের দেখুন", + "githubRepository": "GitHub রিপোজিটরি", + "privacySection1Title": "১. লোকাল-ফার্স্ট আর্কিটেকচার", + "privacySection1Text": "OmniRoute একটি লোকাল-ফার্স্ট অ্যাপ্লিকেশন হিসেবে তৈরি। সমস্ত ডেটা প্রক্রিয়াকরণ ও সংরক্ষণ সম্পূর্ণভাবে আপনার নিজস্ব মেশিনে সম্পন্ন হয়। আপনার তথ্য সংগ্রহ করে এমন কোনো কেন্দ্রীভূত সার্ভার নেই।", + "privacySection2Title": "২. আমরা যে ডেটা সংরক্ষণ করি", + "privacyDataStoredIn": "নিম্নলিখিত ডেটা স্থানীয়ভাবে সংরক্ষিত হয়", + "privacyDataProviderConfigurationsDesc": "সংযোগের URL, প্রোভাইডারের ধরন এবং অগ্রাধিকার সেটিংস", + "privacyDataApiKeysDesc": "AI প্রোভাইডারদের সঙ্গে প্রমাণীকরণের জন্য এনক্রিপ্ট করে স্থানীয়ভাবে সংরক্ষিত", + "privacyDataUsageLogsDesc": "রিকোয়েস্টের সংখ্যা, টোকেন ব্যবহার, মডেলের নাম, টাইমস্ট্যাম্প এবং রেসপন্সের সময়", + "privacyDataApplicationSettingsDesc": "থিমের পছন্দ, রাউটিং কৌশল এবং কম্বো কনফিগারেশন", + "privacySection3Title": "৩. কোনো টেলিমেট্রি নেই", + "privacySection3Text": "OmniRoute কোনো টেলিমেট্রি, অ্যানালিটিক্স বা ক্র্যাশ রিপোর্ট সংগ্রহ করে না। আমাদের বা কোনো তৃতীয় পক্ষের কাছে কোনো ডেটা পাঠানো হয় না। আপনার ব্যবহারের ধরন, API কল এবং কনফিগারেশন সম্পূর্ণ ব্যক্তিগত থাকে।", + "privacySection4Title": "৪. তৃতীয়-পক্ষের AI প্রোভাইডার", + "privacySection4Text": "আপনি OmniRoute-এর মাধ্যমে API কল করলে, আপনার রিকোয়েস্টগুলো আপনার কনফিগার করা AI প্রোভাইডারদের কাছে ফরওয়ার্ড করা হয় (উদাহরণস্বরূপ: OpenAI, Anthropic, Google)। এই প্রোভাইডারদের নিজস্ব গোপনীয়তা নীতি রয়েছে, যা তারা কীভাবে আপনার ডেটা পরিচালনা করে তা নিয়ন্ত্রণ করে। অনুগ্রহ করে পর্যালোচনা করুন:", + "privacyOpenAiPolicy": "OpenAI-এর গোপনীয়তা নীতি", + "privacyAnthropicPolicy": "Anthropic-এর গোপনীয়তা নীতি", + "privacyGooglePolicy": "Google গোপনীয়তা নীতি", + "privacySection5Title": "৫. ক্লাউড সিঙ্ক (ঐচ্ছিক)", + "privacySection5Text": "আপনি ঐচ্ছিক ক্লাউড সিঙ্ক ফিচারটি সক্রিয় করলে, প্রোভাইডার কনফিগারেশন এবং API কীগুলো কনফিগার করা কোনো ক্লাউড এন্ডপয়েন্টে পাঠানো হতে পারে। এই ফিচারটি ডিফল্টভাবে নিষ্ক্রিয় থাকে এবং এটি সক্রিয় করতে স্পষ্ট সম্মতি প্রয়োজন।", + "privacySection6Title": "৬. লগিং", + "privacyLoggingIntro": "ড্যাশবোর্ড সেটিংসের মাধ্যমে অনুরোধের লগ কনফিগার করা যায়। আপনি যা করতে পারেন:", + "privacySection7Title": "৭. আপনার অধিকার", + "privacySection7TextStart": "যেহেতু সব ডেটা স্থানীয়ভাবে সংরক্ষণ করা হয়, তাই এর ওপর আপনার পূর্ণ নিয়ন্ত্রণ রয়েছে। আপনি যেকোনো সময় নিম্নলিখিতটি অপসারণ করে আপনার ডেটা মুছতে পারেন:", + "privacySection7TextEnd": "ডিরেক্টরি, অথবা ড্যাশবোর্ডের ডেটাবেস ব্যাকআপ ও পুনরুদ্ধার ফিচার ব্যবহার করে।", + "termsSection1Title": "১. সারসংক্ষেপ", + "termsSection1Text": "OmniRoute হলো স্থানীয়ভাবে পরিচালিত একটি AI API প্রক্সি রাউটার, যা সম্পূর্ণভাবে আপনার মেশিনে কাজ করে। এটি লোড ব্যালান্সিং, ফেইলওভার এবং ব্যবহার ট্র্যাকিংসহ একাধিক AI প্রোভাইডারের কাছে অনুরোধ রাউট করে।", + "termsSection2Title": "২. ব্যবহারকারীর দায়িত্ব", + "termsResponsibilityApiKeys": "তৃতীয় পক্ষের AI প্রোভাইডারগুলোর (OpenAI, Anthropic, Google ইত্যাদি) জন্য আপনার নিজস্ব API কী ও পরিচয়পত্র পরিচালনার সম্পূর্ণ দায়িত্ব আপনার।", + "termsResponsibilityCompliance": "OmniRoute-এর মাধ্যমে যেসব AI প্রোভাইডারের API ব্যবহার করেন, তাদের প্রত্যেকের পরিষেবার শর্তাবলি আপনাকে মেনে চলতে হবে।", + "termsResponsibilitySecurity": "পাসওয়ার্ড নির্ধারণ এবং নেটওয়ার্ক অ্যাক্সেস সীমিত করাসহ আপনার স্থানীয় OmniRoute ইনস্টলেশনের নিরাপত্তার দায়িত্ব আপনার।", + "termsSection3Title": "৩. এটি যেভাবে কাজ করে", + "termsSection3Text": "OmniRoute একটি মধ্যস্থতাকারী প্রক্সি হিসেবে কাজ করে। OmniRoute-এ পাঠানো API কলগুলো রূপান্তর করে আপনার কনফিগার করা AI প্রোভাইডারদের কাছে ফরোয়ার্ড করা হয়। প্রয়োজনীয় প্রোটোকল রূপান্তর ছাড়া OmniRoute আপনার অনুরোধ বা প্রতিক্রিয়ার বিষয়বস্তু পরিবর্তন করে না।", + "termsSection4Title": "৪. ডেটা ব্যবস্থাপনা", + "termsDataStoredLocally": "সব ডেটা আপনার মেশিনের একটি SQLite ডেটাবেসে স্থানীয়ভাবে সংরক্ষণ করা হয়।", + "termsNoTransmission": "আপনি স্পষ্টভাবে ক্লাউড সিঙ্ক ফিচার সক্রিয় না করলে OmniRoute কোনো ডেটা বাহ্যিক সার্ভারে পাঠায় না।", + "termsDataLocationText": "ব্যবহারের লগ, API কী এবং কনফিগারেশন এখানে সংরক্ষণ করা হয়:", + "termsSection5Title": "৫. দায়-অস্বীকার", + "termsSection5Text": "OmniRoute কোনো ধরনের নিশ্চয়তা ছাড়াই \"যেমন আছে\" ভিত্তিতে সরবরাহ করা হয়। API ব্যবহারের ফলে সৃষ্ট কোনো খরচ, পরিষেবা বিঘ্ন বা ডেটা হারানোর জন্য আমরা দায়ী নই। সবসময় আপনার কনফিগারেশনের ব্যাকআপ রাখুন।", + "termsSection6Title": "৬. ওপেন সোর্স", + "termsSection6Text": "OmniRoute একটি ওপেন-সোর্স সফটওয়্যার। এর লাইসেন্সের শর্তাবলি অনুযায়ী আপনি এটি পরিদর্শন, পরিবর্তন এবং বিতরণ করতে পারবেন।" }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI এজেন্ট", + "description": "আপনার সিস্টেমে ইনস্টল করা CLI এজেন্টগুলো খুঁজে বের করুন। স্বয়ংক্রিয় শনাক্তকরণের জন্য কাস্টম এজেন্ট যোগ করুন।", + "refresh": "রিফ্রেশ করুন", + "installed": "ইনস্টল করা আছে", + "notFound": "পাওয়া যায়নি", + "builtIn": "বিল্ট-ইন", + "custom": "কাস্টম", + "remove": "সরান", + "addCustomAgent": "কাস্টম এজেন্ট যোগ করুন", + "addCustomAgentDesc": "শনাক্তকরণের জন্য যেকোনো CLI টুল নিবন্ধন করুন। রিফ্রেশ করলে এটি স্বয়ংক্রিয়ভাবে স্ক্যান করা হবে।", + "agentName": "এজেন্টের নাম", + "binaryName": "বাইনারির নাম", + "versionCommand": "ভার্সন কমান্ড", + "spawnArgs": "স্পন আর্গুমেন্ট", + "addAgent": "এজেন্ট যোগ করুন", + "scanning": "CLI এজেন্টের জন্য সিস্টেম স্ক্যান করা হচ্ছে...", + "opencodeIntegration": "OpenCode ইন্টিগ্রেশন", + "opencodeDetected": "opencode {version} শনাক্ত হয়েছে", + "opencodeDesc": "আপনার OmniRoute বেস URL এবং উপলভ্য সব মডেলসহ একটি ব্যবহার-উপযোগী {configFile} তৈরি করুন—এটি আপনার প্রজেক্ট রুটে রাখুন এবং {command} চালান।", + "downloadConfig": "{file} ডাউনলোড করুন", + "downloaded": "ডাউনলোড হয়েছে!", + "setupGuideTitle": "সেটআপ নির্দেশিকা", + "openCliTools": "CLI টুল খুলুন", + "setupGuideDetectCliTitle": "ইনস্টল করা CLI শনাক্ত করুন", + "setupGuideDetectCliDesc": "কোনো CLI ইনস্টল বা আপডেট করার পর Refresh-এ ক্লিক করুন, যাতে OmniRoute বাইনারি ও সংস্করণগুলো আবার স্ক্যান করতে পারে।", + "setupGuideCustomAgentTitle": "কাস্টম বাইনারি নিবন্ধন করুন", + "setupGuideCustomAgentDesc": "আপনার CLI বিল্ট-ইন তালিকায় না থাকলে Add Custom Agent ব্যবহার করুন। বাইনারির নাম ও সংস্করণ কমান্ড দিন।", + "setupGuideCommandMissingTitle": "'command not found' সমস্যার সমাধান করুন", + "setupGuideCommandMissingDesc": "CLI কমান্ডটি PATH-এ আছে কি না নিশ্চিত করুন, একটি নতুন টার্মিনাল সেশন খুলুন এবং আবার Refresh চালান।", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10491,148 +10498,148 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "সাধারণ চ্যাট", + "streaming": "স্ট্রিমিং", + "system-prompt": "সিস্টেম প্রম্পট", + "thinking": "চিন্তন", + "tool-calling": "টুল কলিং", + "multi-turn": "মাল্টি-টার্ন", "vision": "দৃষ্টি", "schema-coercion": "স্কিমা জবরদস্তি" }, "templateDescriptions": { - "simple-chat": "Basic chat template with system message", - "streaming": "Template for streaming responses", - "system-prompt": "Template with custom system prompt", - "thinking": "Template with reasoning/thinking budget", - "tool-calling": "Template for tool/function calling", - "multi-turn": "Template for multi-turn conversations", + "simple-chat": "সিস্টেম বার্তাসহ মৌলিক চ্যাট টেমপ্লেট", + "streaming": "স্ট্রিমিং প্রতিক্রিয়ার টেমপ্লেট", + "system-prompt": "কাস্টম সিস্টেম প্রম্পটসহ টেমপ্লেট", + "thinking": "যুক্তি/চিন্তন বাজেটসহ টেমপ্লেট", + "tool-calling": "টুল/ফাংশন কলিংয়ের টেমপ্লেট", + "multi-turn": "মাল্টি-টার্ন কথোপকথনের টেমপ্লেট", "vision": "ইমেজ ইনপুট সহ মাল্টিমোডাল টেমপ্লেট", "schema-coercion": "স্ট্রাকচার্ড-আউটপুট / JSON স্কিমা এনফোর্সমেন্ট" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful AI assistant.", - "userGreeting": "Hello! How can I help you today?" + "system": "আপনি একজন সহায়ক AI সহকারী।", + "userGreeting": "হ্যালো! আজ আমি আপনাকে কীভাবে সাহায্য করতে পারি?" }, "streaming": { - "prompt": "Write a story about" + "prompt": "এটি নিয়ে একটি গল্প লিখুন:" }, "systemPrompt": { - "question": "What is the meaning of life?", - "systemInstruction": "Provide a thoughtful, philosophical answer." + "question": "জীবনের অর্থ কী?", + "systemInstruction": "একটি সুচিন্তিত, দার্শনিক উত্তর দিন।" }, "thinking": { - "question": "Explain quantum computing" + "question": "কোয়ান্টাম কম্পিউটিং ব্যাখ্যা করুন" }, "toolCalling": { - "cityNameDescription": "The name of the city to get weather for", - "toolDescription": "Get current weather for a location", - "userWeather": "What's the weather in Tokyo?" + "cityNameDescription": "যে শহরের আবহাওয়া জানতে হবে, তার নাম", + "toolDescription": "কোনো স্থানের বর্তমান আবহাওয়া জানুন", + "userWeather": "Tokyo-র আবহাওয়া কেমন?" }, "multiTurn": { - "system": "You are a helpful assistant.", - "assistantExample": "I'd be happy to help you with that.", - "userInitial": "I need help with", - "userFollowUp": "Can you elaborate on that?" + "system": "আপনি একজন সহায়ক সহকারী।", + "assistantExample": "এ বিষয়ে আপনাকে সাহায্য করতে পেরে আমি আনন্দিত হব।", + "userInitial": "আমার এটি নিয়ে সাহায্য দরকার:", + "userFollowUp": "আপনি কি এ বিষয়ে আরও বিস্তারিত বলতে পারেন?" } }, "cache": { - "title": "Cache Management", - "description": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "refresh": "Refresh", - "clearAll": "Clear Semantic Cache", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "title": "ক্যাশ ব্যবস্থাপনা", + "description": "প্রোভাইডারের প্রম্পট ক্যাশের দক্ষতা এবং স্থানীয় সেমান্টিক রেসপন্স পুনঃব্যবহার পর্যবেক্ষণ করুন।", + "refresh": "রিফ্রেশ করুন", + "clearAll": "সেমান্টিক ক্যাশ সাফ করুন", + "memoryEntries": "মেমরি এন্ট্রি", + "memoryEntriesSub": "ইন-মেমরি LRU", + "dbEntries": "DB এন্ট্রি", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "ক্যাশ হিট", + "cacheHitsSub": "মোট {total}-এর মধ্যে", + "tokensSaved": "সাশ্রয় হওয়া টোকেন", + "tokensSavedSub": "হিট থেকে আনুমানিক হিসাব", + "hitRate": "হিটের হার", + "performance": "ক্যাশের কার্যক্ষমতা", + "autoRefresh": "প্রতি {seconds}s পর স্বয়ংক্রিয়ভাবে রিফ্রেশ হয়", + "hits": "হিট", + "misses": "মিস", + "total": "মোট", + "behavior": "ক্যাশের আচরণ", + "behaviorDeterministic": "শুধু temperature=0-সহ নন-স্ট্রিমিং রিকোয়েস্ট ক্যাশ করা হয়।", + "behaviorBypass": "{header} হেডার দিয়ে বাইপাস করুন।", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", - "clearSuccess": "Semantic cache cleared. {count} entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "behaviorTtl": "ডিফল্ট TTL: ৩০ মিনিট। {envVar}-এর মাধ্যমে কনফিগার করুন।", + "idempotency": "আইডেমপোটেন্সি স্তর", + "activeDedupKeys": "সক্রিয় ডিডুপ কী", + "dedupWindow": "ডিডুপ উইন্ডো", + "clearSuccess": "সেমান্টিক ক্যাশ সাফ করা হয়েছে। {count}টি এন্ট্রি সরানো হয়েছে।", + "clearError": "ক্যাশ সাফ করা যায়নি।", + "unavailable": "ক্যাশ অনুপলভ্য", + "unavailableDesc": "ক্যাশের পরিসংখ্যান আনা যায়নি। সার্ভারটি চলছে কি না নিশ্চিত করুন।", "loadingCacheAria": "ক্যাশ লোড হচ্ছে", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", - "cachedTokens": "Cache Read Tokens", - "cacheCreationTokens": "Cache Write Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", - "cachedTokensRead": "Read from cache", - "cacheCreationWrite": "Written to cache", - "cacheReuseRatio": "Cache Reuse Ratio", - "cacheReuseRatioDesc": "Cache read tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "promptCache": "প্রম্পট ক্যাশ (প্রোভাইডার-সাইড)", + "semanticCache": "সেমান্টিক ক্যাশ", + "promptCacheSectionDesc": "ব্যবহারের ইতিহাস থেকে প্রোভাইডার-সাইড প্রম্পট ক্যাশিংয়ের কার্যকলাপ দেখায়, যাতে কোথায় ক্যাশ নিয়ন্ত্রণ সক্রিয় এবং ইনপুট কতটা পুনঃব্যবহার হচ্ছে তা দেখতে পারেন।", + "promptTrendDesc": "গত ২৪ ঘণ্টার প্রতি ঘণ্টার রিকোয়েস্টের পরিমাণ, ক্যাশ কভারেজ এবং ক্যাশ রিডের পরিমাণ।", + "cachedRequests": "ক্যাশ করা রিকোয়েস্ট", + "cachedRequests24h": "ক্যাশ করা রিকোয়েস্ট (২৪ ঘণ্টা)", + "cacheHitRate": "ক্যাশ হিটের হার", + "cacheRate": "ক্যাশের হার", + "cacheRateDesc": "মোট রিকোয়েস্টের মধ্যে", + "cachedTokens": "ক্যাশ রিড টোকেন", + "cacheCreationTokens": "ক্যাশ রাইট টোকেন", + "cacheMetrics": "প্রম্পট ক্যাশের মেট্রিক্স", + "withCacheControl": "ক্যাশ নিয়ন্ত্রণসহ", + "cachedTokensRead": "ক্যাশ থেকে পড়া হয়েছে", + "cacheCreationWrite": "ক্যাশে লেখা হয়েছে", + "cacheReuseRatio": "ক্যাশ পুনর্ব্যবহারের অনুপাত", + "cacheReuseRatioDesc": "ক্যাশ থেকে পড়া টোকেন / মোট ইনপুট টোকেন", + "estCostSaved": "আনুমানিক সাশ্রয়কৃত খরচ", + "lastUpdated": "সর্বশেষ আপডেট", + "hoursTracked": "ঘণ্টা ট্র্যাক করা হয়েছে", + "busiestHour": "ব্যস্ততম ঘণ্টা", + "peakCacheRate": "সর্বোচ্চ ক্যাশ হার", + "trendHour": "ঘণ্টা", + "activityVolume": "কার্যকলাপ", + "requestsShort": "অনুরোধ", + "inputShort": "ইনপুট", + "cachedShort": "ক্যাশ করা", + "writeShort": "লেখা", + "resetting": "রিসেট করা হচ্ছে...", + "resetMetrics": "মেট্রিক্স রিসেট করুন", + "byProvider": "প্রদানকারী অনুযায়ী বিভাজন", + "providerCacheRateDesc": "প্রতিটি প্রদানকারী মোট ইনপুট টোকেন, ক্যাশ থেকে পড়া টোকেন এবং ক্যাশে লেখা টোকেন দেখায়, যাতে আপনি মূল মোট সংখ্যার সঙ্গে পুনর্ব্যবহারের অনুপাত যাচাই করতে পারেন।", "provider": "Provider", - "requests": "Requests", - "inputTokens": "Total Input Tokens", - "cachedTokensCol": "Cache Read", - "cacheCreation": "Cache Write", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "requests": "অনুরোধসমূহ", + "inputTokens": "মোট ইনপুট টোকেন", + "cachedTokensCol": "ক্যাশ থেকে পড়া", + "cacheCreation": "ক্যাশে লেখা", + "trend24h": "ক্যাশের প্রবণতা (২৪ ঘণ্টা)", + "peakCached": "সর্বোচ্চ ক্যাশ করা", + "cached": "ক্যাশ করা", + "overview": "সারসংক্ষেপ", "tableProvider": "প্রোভাইডার", "tableModel": "মডেল", "performanceTitle": "পারফরম্যান্স", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoute-এর নিজস্ব নির্ধারণমূলক রেসপন্স ক্যাশ। এটি সক্রিয় থাকলে, একই non-streaming temperature=0 অনুরোধ বারবার এলে আপস্ট্রিম প্রদানকারীর কাছে না পাঠিয়ে স্থানীয়ভাবে রেসপন্স দেওয়া যায়।", + "semanticCacheDisabledDesc": "সেমান্টিক ক্যাশ নিষ্ক্রিয় আছে। Settings-এ এটি আবার চালু না করা পর্যন্ত OmniRoute স্থানীয় রেসপন্স পুনর্ব্যবহার এড়িয়ে যাবে।", + "semanticEntriesDesc": "বর্তমানে SQLite-এ সংরক্ষিত স্থায়ী সেমান্টিক ক্যাশ রেকর্ড। প্রদানকারী-পক্ষের প্রম্পট ক্যাশ কার্যকলাপ এখানে তালিকাভুক্ত নয়।", + "searchEntries": "এন্ট্রি খুঁজুন...", + "search": "অনুসন্ধান", + "loading": "লোড হচ্ছে...", + "entriesLoadError": "সেমান্টিক ক্যাশ এন্ট্রি লোড করা যায়নি।", + "noEntries": "কোনো ক্যাশ এন্ট্রি পাওয়া যায়নি", + "noPromptCacheData": "এখনও প্রদানকারী-পক্ষের কোনো প্রম্পট ক্যাশ কার্যকলাপ রেকর্ড করা হয়নি।", + "noTrendData": "গত ২৪ ঘণ্টায় কোনো প্রম্পট ক্যাশ কার্যকলাপ রেকর্ড করা হয়নি।", + "signature": "স্বাক্ষর", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "তৈরি হয়েছে", + "expires": "মেয়াদ শেষ হবে", + "actions": "অ্যাকশনসমূহ", + "deduplicatedRequests": "অনুলিপিমুক্ত অনুরোধসমূহ", + "savedCalls": "সংরক্ষিত API কলসমূহ", + "totalProcessed": "প্রক্রিয়াকৃত মোট অনুরোধ", + "disabled": "নিষ্ক্রিয়", + "totalRequests": "মোট অনুরোধ", "reasoningCache": "রিজনিং রিপ্লে", "reasoningCacheDesc": "মাল্টি-টার্ন টুল কলিং প্রবাহের জন্য মডেল চিন্তা সংরক্ষণ করে", "reasoningEntries": "সক্রিয় এন্ট্রি", @@ -10669,56 +10676,56 @@ "minutesAgo": "{minutes}মি আগে", "hoursAgo": "{hours}ঘণ্টা আগে", "daysAgo": "{days}দিন আগে", - "entries": "Entries" + "entries": "এন্ট্রিসমূহ" }, "proxyConfigModal": { - "levelGlobal": "Global", - "levelProvider": "Provider", - "levelCombo": "Combo", - "levelKey": "Key", - "levelDirect": "Direct (no proxy)", - "titleGlobal": "Global Proxy Configuration", - "titleLevel": "{level} Proxy — {label}", - "loading": "Loading proxy configuration...", - "inheritingFrom": "Inheriting from", - "source": "Source", - "savedProxy": "Saved Proxy", - "custom": "Custom", - "selectSavedProxyPlaceholder": "Select saved proxy...", - "proxyType": "Proxy Type", - "host": "Host", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", - "port": "Port", - "authOptional": "Authentication (optional)", - "username": "Username", - "usernamePlaceholder": "Username", - "password": "Password", - "passwordPlaceholder": "Password", - "connected": "Connected", - "ip": "IP:", - "connectionFailed": "Connection failed", - "testConnection": "Test connection", - "clear": "Clear", - "cancel": "Cancel", - "save": "Save", - "errorSelectSavedProxy": "Please select a saved proxy first.", - "errorSelectProxyFirst": "Please select a proxy first.", - "errorProxyNotFound": "Selected proxy not found.", - "errorClearSavedProxy": "Failed to clear saved proxy", - "errorSaveProxy": "Failed to save proxy configuration", - "errorClearProxy": "Failed to clear proxy configuration", - "errorSocks5Hidden": "SOCKS5 is configured but hidden because NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false." + "levelGlobal": "গ্লোবাল", + "levelProvider": "প্রোভাইডার", + "levelCombo": "কম্বো", + "levelKey": "কী", + "levelDirect": "সরাসরি (প্রক্সি ছাড়া)", + "titleGlobal": "গ্লোবাল প্রক্সি কনফিগারেশন", + "titleLevel": "{level} প্রক্সি — {label}", + "loading": "প্রক্সি কনফিগারেশন লোড হচ্ছে...", + "inheritingFrom": "যেখান থেকে উত্তরাধিকারসূত্রে প্রাপ্ত", + "source": "উৎস", + "savedProxy": "সংরক্ষিত প্রক্সি", + "custom": "কাস্টম", + "selectSavedProxyPlaceholder": "সংরক্ষিত প্রক্সি নির্বাচন করুন...", + "proxyType": "প্রক্সির ধরন", + "host": "হোস্ট", + "hostPlaceholder": "1.2.3.4 অথবা proxy.example.com", + "port": "পোর্ট", + "authOptional": "প্রমাণীকরণ (ঐচ্ছিক)", + "username": "ব্যবহারকারীর নাম", + "usernamePlaceholder": "ব্যবহারকারীর নাম", + "password": "পাসওয়ার্ড", + "passwordPlaceholder": "পাসওয়ার্ড", + "connected": "সংযুক্ত", + "ip": "আইপি:", + "connectionFailed": "সংযোগ ব্যর্থ হয়েছে", + "testConnection": "সংযোগ পরীক্ষা করুন", + "clear": "মুছুন", + "cancel": "বাতিল", + "save": "সংরক্ষণ করুন", + "errorSelectSavedProxy": "অনুগ্রহ করে প্রথমে একটি সংরক্ষিত প্রক্সি নির্বাচন করুন।", + "errorSelectProxyFirst": "অনুগ্রহ করে প্রথমে একটি প্রক্সি নির্বাচন করুন।", + "errorProxyNotFound": "নির্বাচিত প্রক্সি পাওয়া যায়নি।", + "errorClearSavedProxy": "সংরক্ষিত প্রক্সি মুছতে ব্যর্থ হয়েছে", + "errorSaveProxy": "প্রক্সি কনফিগারেশন সংরক্ষণ করতে ব্যর্থ হয়েছে", + "errorClearProxy": "প্রক্সি কনফিগারেশন মুছতে ব্যর্থ হয়েছে", + "errorSocks5Hidden": "SOCKS5 কনফিগার করা আছে, তবে NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false হওয়ায় এটি লুকানো রয়েছে।" }, "oauthModal": { - "title": "Connect {providerName}", - "waiting": "Waiting for authorization", - "completeAuthInPopup": "Complete authorization in popup.", + "title": "{providerName}-এর সাথে সংযোগ করুন", + "waiting": "অনুমোদনের জন্য অপেক্ষা করা হচ্ছে", + "completeAuthInPopup": "পপআপে অনুমোদন সম্পন্ন করুন।", "popupClosedHint": "If the popup closed without redirecting back (e.g. Qoder), this dialog will auto-switch to manual URL entry mode.", - "popupBlocked": "Popup blocked? Enter URL manually", - "deviceCodeVisitUrl": "Visit the URL below and enter code:", - "deviceCodeVerificationUrl": "Verification URL", - "deviceCodeYourCode": "Your code", - "deviceCodeWaiting": "Waiting for authorization...", + "popupBlocked": "পপআপ ব্লক হয়েছে? ম্যানুয়ালি URL লিখুন", + "deviceCodeVisitUrl": "নিচের URL-এ যান এবং কোড লিখুন:", + "deviceCodeVerificationUrl": "যাচাইকরণ URL", + "deviceCodeYourCode": "আপনার কোড", + "deviceCodeWaiting": "অনুমোদনের জন্য অপেক্ষা করা হচ্ছে...", "googleLoopbackTitle": "এই ঠিকানা থেকে গুগল সাইন-ইন সম্পন্ন করা যাচ্ছে না", "googleLoopbackWhatHappens": "গুগল শুধুমাত্র অনুমোদন কোডটি প্রকাশ করে যখন {redirectUri} ব্রাউজার থেকে পৌঁছানো যায় যা সাইন-ইন অনুমোদন করে। এখানে সেই ঠিকানা এই কম্পিউটারের দিকে নির্দেশ করে, OmniRoute সার্ভারের দিকে নয় — তাই সম্মতি স্ক্রীন ঝুলে থাকে পরিবর্তে পুনঃনির্দেশিত হওয়ার, এবং কপি করার জন্য কোন কলব্যাক URL নেই।", "googleLoopbackRecommended": "প্রস্তাবিত — এটি আপনার নিজের কম্পিউটারে চালান, তারপর ফলাফলটি নিচে পেস্ট করুন:", @@ -10726,7 +10733,7 @@ "googleLoopbackTunnelLabel": "অথবা SSH এর মাধ্যমে ড্যাশবোর্ড পোর্ট ফরওয়ার্ড করুন এবং টানেলের মাধ্যমে OmniRoute পুনরায় লোড করুন:", "googleLoopbackTunnelNote": "আপনার SSH ব্যবহারকারীর নামের সাথে {userPlaceholder} প্রতিস্থাপন করুন, টার্মিনাল খোলা রাখুন, তারপর {localUrl} খুলুন এবং সেখান থেকে আবার সংযোগ করুন।", "googleLoopbackHeadlessAlt": "সম্পূর্ণ হেডলেস ব্যবহারের জন্য কোন স্থানীয় কলব্যাক ছাড়াই, আপনার নিজস্ব Google OAuth শংসাপত্র কনফিগার করুন এবং একটি পাবলিক বেস URL।", - "remoteAccessInfo": "Remote access: Since you're accessing OmniRoute remotely, after authorization you'll see an error page (localhost not found). This is normal — just copy the full URL from your browser address bar and paste it below.", + "remoteAccessInfo": "রিমোট অ্যাক্সেস: যেহেতু আপনি রিমোটভাবে OmniRoute অ্যাক্সেস করছেন, অনুমোদনের পরে আপনি একটি ত্রুটির পৃষ্ঠা দেখতে পাবেন (localhost পাওয়া যায়নি)। এটি স্বাভাবিক—শুধু আপনার ব্রাউজারের অ্যাড্রেস বার থেকে সম্পূর্ণ URL কপি করে নিচে পেস্ট করুন।", "loopbackMismatchTitle": "এই ঠিকানা থেকে সাইন-ইন সম্পন্ন করা যাচ্ছে না", "loopbackMismatchWhatHappened": "কি হচ্ছে", "loopbackMismatchExplanation": "লগইন অনুমোদন করার পর, {providerName} সর্বদা ব্রাউজারটিকে {redirectUri} এ ফিরিয়ে পাঠায়। সেই ঠিকানা এই ব্রাউজারটি চালানো কম্পিউটারের দিকে নির্দেশ করে, OmniRoute সার্ভারের দিকে নয় — তাই অনুমোদন কোড কখনো OmniRoute এ পৌঁছায় না এবং প্রদানকারী একটি ত্রুটি ছাড়াই সাইন-ইন ব্যর্থ হয়।", @@ -10736,17 +10743,17 @@ "loopbackMismatchStep2": "এই ব্রাউজারে, টানেলের মাধ্যমে OmniRoute পুনরায় খুলুন:", "loopbackMismatchStep3": "এরপর নতুন ট্যাব থেকে আবার {providerName} এর সাথে সংযোগ করুন। এখন কলব্যাক সার্ভারে পৌঁছায় এবং লগইন স্বাভাবিকভাবে সম্পন্ন হয়।", "loopbackMismatchAlternative": "SSH অ্যাক্সেস নেই? যদি এই প্রদানকারী একটি টোকেন আমদানি ট্যাব অফার করে, তাহলে একটি টোকেনের মাধ্যমে সংযোগ করুন — সেই পথটি লুপব্যাক কলব্যাক ব্যবহার করে না।", - "step1OpenUrl": "Step 1: Open this URL in your browser", - "copy": "Copy", - "step2PasteCallback": "Step 2: Paste callback URL or authorization code here", - "step2Hint": "After authorization, paste the full callback URL. For Claude Code and Cline, you can also paste the authentication code directly, e.g. code#state.", - "connect": "Connect", - "cancel": "Cancel", - "success": "Connection successful!", - "successMessage": "Your {providerName} account has been connected.", - "done": "Done", - "error": "Connection failed", - "tryAgain": "Try again", + "step1OpenUrl": "ধাপ ১: আপনার ব্রাউজারে এই URL খুলুন", + "copy": "কপি করুন", + "step2PasteCallback": "ধাপ ২: এখানে কলব্যাক URL বা অনুমোদন কোড পেস্ট করুন", + "step2Hint": "অনুমোদনের পরে সম্পূর্ণ কলব্যাক URL পেস্ট করুন। Claude Code এবং Cline-এর ক্ষেত্রে আপনি সরাসরি প্রমাণীকরণ কোডও পেস্ট করতে পারেন, যেমন code#state।", + "connect": "সংযোগ করুন", + "cancel": "বাতিল করুন", + "success": "সংযোগ সফল হয়েছে!", + "successMessage": "আপনার {providerName} অ্যাকাউন্ট সংযুক্ত হয়েছে।", + "done": "সম্পন্ন", + "error": "সংযোগ ব্যর্থ হয়েছে", + "tryAgain": "আবার চেষ্টা করুন", "errorSessionIncomplete": "OAuth সেশন অসম্পূর্ণ (পুনঃনির্দেশ URI বা কোড যাচাইকরণ অনুপস্থিত)। সংযোগটি পুনরায় শুরু করুন এবং আবার চেষ্টা করুন।", "errorExchangeFailed": "বিনিময় ব্যর্থ হয়েছে", "errorGoogleRedirectMismatch": "redirect_uri_mismatch: ডিফল্ট Google OAuth শংসাপত্রগুলি শুধুমাত্র localhost-এ কাজ করে। দূরবর্তী ব্যবহারের জন্য, পরিবেশ ভেরিয়েবলগুলির মাধ্যমে আপনার নিজস্ব OAuth শংসাপত্র কনফিগার করুন: ANTIGRAVITY_OAUTH_CLIENT_ID এবং ANTIGRAVITY_OAUTH_CLIENT_SECRET। README বিভাগের 'দূরবর্তী সার্ভারে OAuth' দেখুন।", @@ -10785,107 +10792,107 @@ }, "cursorAuthModal": { "title": "Connect Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCursor": "Reading from Cursor IDE or cursor-agent", - "tokensAutoDetected": "Tokens successfully auto-detected from Cursor IDE!", + "tabLogin": "Cursor দিয়ে লগইন করুন", + "tabImport": "টোকেন ইমপোর্ট করুন", + "loginDescription": "Cursor-এর ব্রাউজার লগইন খোলে। Docker-এ কাজ করে—আপনার হোস্ট ব্রাউজারে অনুমোদন করুন, তারপর এখানে ফিরে আসুন।", + "loginWithCursor": "Cursor দিয়ে লগইন করুন", + "startingLogin": "শুরু হচ্ছে…", + "waitingApproval": "Cursor লগইন অনুমোদনের জন্য অপেক্ষা করা হচ্ছে…", + "openUrlHint": "ব্রাউজার না খুললে:", + "openLoginLink": "লগইন পৃষ্ঠা খুলুন", + "cancelLogin": "লগইন বাতিল করুন", + "autoDetecting": "স্বয়ংক্রিয়ভাবে টোকেন শনাক্ত করা হচ্ছে...", + "readingFromCursor": "Cursor IDE বা cursor-agent থেকে পড়া হচ্ছে", + "tokensAutoDetected": "Cursor IDE থেকে টোকেন সফলভাবে স্বয়ংক্রিয়ভাবে শনাক্ত হয়েছে!", "cursorNotDetected": "Cursor IDE not detected. Please manually paste your token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Docker-এ চালাচ্ছেন? Cursor দিয়ে লগইন করাই ভালো। সাধারণত কন্টেইনারের ভিতরে IDE অটো-ইমপোর্ট এবং cursor-agent উপলভ্য থাকে না। docs/providers/CURSOR-DOCKER.md দেখুন।", + "accessToken": "অ্যাক্সেস টোকেন", + "refreshToken": "রিফ্রেশ টোকেন", + "refreshTokenPlaceholder": "ঐচ্ছিক — স্বয়ংক্রিয় টোকেন রিফ্রেশ সক্রিয় করে", "required": "*", - "accessTokenPlaceholder": "Access token will auto-populate...", - "machineId": "Machine ID", - "optional": "(optional)", - "machineIdPlaceholder": "Machine ID will auto-populate...", - "importing": "Importing...", - "importToken": "Import Token", - "cancel": "Cancel", - "errorAutoDetect": "Unable to auto-detect tokens", - "errorAutoDetectFailed": "Auto-detect tokens failed", - "errorEnterToken": "Please enter access token", - "errorImportFailed": "Import failed", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "accessTokenPlaceholder": "অ্যাক্সেস টোকেন স্বয়ংক্রিয়ভাবে পূরণ হবে...", + "machineId": "মেশিন ID", + "optional": "(ঐচ্ছিক)", + "machineIdPlaceholder": "মেশিন ID স্বয়ংক্রিয়ভাবে পূরণ হবে...", + "importing": "ইমপোর্ট করা হচ্ছে...", + "importToken": "টোকেন ইমপোর্ট করুন", + "cancel": "বাতিল", + "errorAutoDetect": "স্বয়ংক্রিয়ভাবে টোকেন শনাক্ত করা যায়নি", + "errorAutoDetectFailed": "স্বয়ংক্রিয় টোকেন শনাক্তকরণ ব্যর্থ হয়েছে", + "errorEnterToken": "অনুগ্রহ করে অ্যাক্সেস টোকেন লিখুন", + "errorImportFailed": "ইমপোর্ট ব্যর্থ হয়েছে", + "errorLoginStart": "Cursor লগইন শুরু করা যায়নি", + "errorLoginPoll": "Cursor লগইন ব্যর্থ হয়েছে", + "errorLoginTimeout": "Cursor লগইনের সময়সীমা শেষ হয়ে গেছে — আবার চেষ্টা করুন" }, "pricingModal": { - "title": "Pricing Configuration", - "loading": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "ratesDescription": "All rates are in dollars per million tokens ($/1M tokens). Example: Input rate of 2.50 means $2.50 per 1,000,000 input tokens.", - "model": "Model", - "input": "Input", - "output": "Output", - "cached": "Cached", - "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "noPricingData": "No pricing data available", - "resetToDefaults": "Reset to defaults", - "cancel": "Cancel", - "saving": "Saving...", - "saveChanges": "Save changes", - "resetConfirm": "Reset all pricing to defaults? This cannot be undone.", - "errorSaveFailed": "Failed to save pricing", - "errorResetFailed": "Failed to reset pricing" + "title": "মূল্য নির্ধারণ কনফিগারেশন", + "loading": "মূল্য নির্ধারণের ডেটা লোড হচ্ছে...", + "pricingRatesFormat": "মূল্যহারের ফরম্যাট", + "ratesDescription": "সব হার প্রতি মিলিয়ন টোকেনে ডলারে ($/1M tokens) দেওয়া হয়েছে। উদাহরণ: 2.50 ইনপুট হার মানে প্রতি 1,000,000 ইনপুট টোকেনের জন্য $2.50।", + "model": "মডেল", + "input": "ইনপুট", + "output": "আউটপুট", + "cached": "ক্যাশকৃত", + "reasoning": "যুক্তি বিশ্লেষণ", + "cacheCreation": "ক্যাশ তৈরি", + "noPricingData": "মূল্য নির্ধারণের কোনো ডেটা উপলভ্য নেই", + "resetToDefaults": "ডিফল্টে রিসেট করুন", + "cancel": "বাতিল", + "saving": "সংরক্ষণ করা হচ্ছে...", + "saveChanges": "পরিবর্তনগুলো সংরক্ষণ করুন", + "resetConfirm": "সব মূল্যহার ডিফল্টে রিসেট করবেন? এটি পূর্বাবস্থায় ফেরানো যাবে না।", + "errorSaveFailed": "মূল্য নির্ধারণ সংরক্ষণ করা যায়নি", + "errorResetFailed": "মূল্য নির্ধারণ রিসেট করা যায়নি" }, "proxyRegistry": { "selectAllProxies": "সমস্ত প্রক্সি নির্বাচন করুন", "selectProxy": "{name} নির্বাচন করুন", - "title": "Proxy Registry", - "description": "Store reusable proxies and track assignments.", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", - "loading": "Loading proxies...", - "noProxies": "No saved proxies yet.", - "tableName": "Name", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", - "tableHealth": "Health (24h)", - "tableUsage": "Usage", - "tableActions": "Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", - "modalCreateTitle": "Create Proxy", - "modalEditTitle": "Edit Proxy", - "labelName": "Name", - "labelType": "Type", + "title": "প্রক্সি রেজিস্ট্রি", + "description": "পুনর্ব্যবহারযোগ্য প্রক্সি সংরক্ষণ করুন এবং অ্যাসাইনমেন্ট ট্র্যাক করুন।", + "importLegacy": "লিগ্যাসি ইমপোর্ট করুন", + "bulkAssign": "একসাথে বরাদ্দ করুন", + "addProxy": "প্রক্সি যোগ করুন", + "loading": "প্রক্সিগুলো লোড হচ্ছে...", + "noProxies": "এখনও কোনো সংরক্ষিত প্রক্সি নেই।", + "tableName": "নাম", + "tableEndpoint": "এন্ডপয়েন্ট", + "tableStatus": "স্ট্যাটাস", + "tableHealth": "স্বাস্থ্য (২৪ ঘণ্টা)", + "tableUsage": "ব্যবহার", + "tableActions": "অ্যাকশন", + "test": "পরীক্ষা করুন", + "edit": "সম্পাদনা করুন", + "delete": "মুছুন", + "modalCreateTitle": "প্রক্সি তৈরি করুন", + "modalEditTitle": "প্রক্সি সম্পাদনা করুন", + "labelName": "নাম", + "labelType": "ধরন", "labelFamily": "IP ফ্যামিলি", "familyAuto": "স্বয়ংক্রিয় (dual-stack)", "familyIpv4": "শুধুমাত্র IPv4", "familyIpv6": "শুধুমাত্র IPv6", "familyHint": "ইগ্রেস অ্যাড্রেস ফ্যামিলি। Auto ডুয়াল-স্ট্যাক বজায় রাখে; IPv4/IPv6 এই প্রক্সিকে সেই ফ্যামিলিতে পিন করে (একটি IPv6-only প্রক্সির অধীনে v4 লিক প্রতিরোধ করে)।", - "labelHost": "Host", - "labelPort": "Port", - "labelUsername": "Username", - "labelPassword": "Password", - "labelRegion": "Region", - "labelStatus": "Status", - "labelNotes": "Notes", - "usernamePlaceholderEdit": "Leave blank to keep current username", - "passwordPlaceholderEdit": "Leave blank to keep current password", - "statusActive": "Active", - "statusInactive": "Inactive", - "cancel": "Cancel", - "save": "Save", - "bulkModalTitle": "Bulk Proxy Assignment", - "bulkLabelScope": "Scope", - "bulkLabelProxy": "Proxy", - "bulkClearAssignment": "(Clear assignment)", - "bulkLabelScopeIds": "Scope IDs (comma or newline separated)", + "labelHost": "হোস্ট", + "labelPort": "পোর্ট", + "labelUsername": "ব্যবহারকারীর নাম", + "labelPassword": "পাসওয়ার্ড", + "labelRegion": "অঞ্চল", + "labelStatus": "স্ট্যাটাস", + "labelNotes": "নোট", + "usernamePlaceholderEdit": "বর্তমান ব্যবহারকারীর নাম রাখতে ফাঁকা রাখুন", + "passwordPlaceholderEdit": "বর্তমান পাসওয়ার্ড রাখতে ফাঁকা রাখুন", + "statusActive": "সক্রিয়", + "statusInactive": "নিষ্ক্রিয়", + "cancel": "বাতিল", + "save": "সংরক্ষণ করুন", + "bulkModalTitle": "একসাথে প্রক্সি বরাদ্দ", + "bulkLabelScope": "পরিধি", + "bulkLabelProxy": "প্রক্সি", + "bulkClearAssignment": "(বরাদ্দ মুছুন)", + "bulkLabelScopeIds": "পরিধির আইডি (কমা বা নতুন লাইন দিয়ে পৃথক করা)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", - "bulkApply": "Apply", + "bulkApply": "প্রয়োগ করুন", "labelScope": "স্কোপ", "labelProxy": "প্রক্সি", "scopeGlobal": "গ্লোবাল", @@ -10897,19 +10904,19 @@ "bulkImportErrorInvalidPort": "অবৈধ PORT (1-65535 হতে হবে)", "bulkImportErrorInvalidType": "অবৈধ TYPE (http, https, বা মোজা5 ব্যবহার করুন)", "bulkImportErrorInvalidStatus": "অবৈধ স্ট্যাটাস (সক্রিয় বা নিষ্ক্রিয় ব্যবহার করুন)", - "errorLoadFailed": "Failed to load proxy registry", - "errorNameHostRequired": "Name and host are required", - "errorSaveFailed": "Failed to save proxy", - "errorDeleteFailed": "Failed to delete proxy", - "errorForceDeleteConfirm": "This proxy is still assigned. Force delete and remove all assignments?", - "errorMigrateFailed": "Failed to migrate legacy proxy config", - "errorBulkFailed": "Failed to execute bulk assignment", + "errorLoadFailed": "প্রক্সি রেজিস্ট্রি লোড করা যায়নি", + "errorNameHostRequired": "নাম এবং হোস্ট আবশ্যক", + "errorSaveFailed": "প্রক্সি সংরক্ষণ করা যায়নি", + "errorDeleteFailed": "প্রক্সি মুছে ফেলা যায়নি", + "errorForceDeleteConfirm": "এই প্রক্সিটি এখনও বরাদ্দ করা আছে। জোরপূর্বক মুছে দিয়ে সব বরাদ্দ সরাবেন?", + "errorMigrateFailed": "লিগ্যাসি প্রক্সি কনফিগ মাইগ্রেট করা যায়নি", + "errorBulkFailed": "বাল্ক বরাদ্দ সম্পাদন করা যায়নি", "success": "✓", "failure": "✗", - "failed": "Failed", - "successRate": "{rate}% success", - "avgLatency": "{latency}ms average", - "assignmentsCount": "{count} assignments", + "failed": "ব্যর্থ", + "successRate": "{rate}% সফল", + "avgLatency": "গড় {latency}ms", + "assignmentsCount": "{count}টি বরাদ্দ", "noData": "—", "testSuccess": "✓ {ip}", "testLatency": "{latency}ms", @@ -10948,7 +10955,7 @@ "poolTitle": "প্রক্সি পুল এবং রোটেশন", "poolDescription": "একটি স্কোপে একাধিক প্রক্সি সংযুক্ত করুন এবং সেগুলোর মধ্যে ইগ্রেস IP রোটেট করুন। একটি একক প্রক্সি বিশিষ্ট স্কোপ সাধারণ অ্যাসাইনমেন্টের মতোই কাজ করে।", "poolScopeIdLabel": "স্কোপ ID", - "poolScopeIdPlaceholder": "provider id / connection id / combo id", + "poolScopeIdPlaceholder": "প্রোভাইডার আইডি / সংযোগ আইডি / কম্বো আইডি", "poolScopeIdRequired": "provider, account, বা combo স্কোপের জন্য একটি স্কোপ ID প্রয়োজন।", "poolLoad": "পুল লোড করুন", "poolLoadFailed": "প্রক্সি পুল লোড করতে ব্যর্থ হয়েছে", @@ -10961,9 +10968,9 @@ "strategyLatency": "লেটেন্সি-অপ্টিমাইজড", "poolMembersLabel": "পুলের সদস্য ({count})", "poolNoMembers": "এই পুলে এখনও কোনো প্রক্সি নেই।", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{connections, plural, one {#টি সংযোগ} other {#টি সংযোগ}} দ্বারা {exits, plural, one {#টি এক্সিট} other {#টি এক্সিট}} ব্যবহৃত · একটি এক্সিটে সর্বোচ্চ {max}টি · গত {hours} ঘণ্টা", + "poolEgressObservationEmpty": "গত {hours} ঘণ্টায় কোনো ট্রাফিক দেখা যায়নি", + "poolEgressObservationHint": "নির্ধারিত সময়সীমায় প্রক্সি লগ থেকে গণনা করা হয়েছে: এই পুলের সদস্যদের জন্য পর্যবেক্ষণ করা স্বতন্ত্র ইগ্রেস IP এবং সেগুলো ব্যবহার করা OmniRoute সংযোগ। \"একটি এক্সিটে\" বলতে নির্ধারিত সময়সীমার মধ্যে বোঝায়, একই সময়ে নয়। প্রতি-IP 429 লকআউট শুধু একই প্রোভাইডার পরিবারের সংযোগগুলোকে বিরতি দেয়।", "poolRemove": "সরান", "poolRemoveFailed": "পুল থেকে প্রক্সি সরাতে ব্যর্থ হয়েছে", "poolAddLabel": "একটি প্রক্সি যোগ করুন", @@ -10973,96 +10980,96 @@ "poolSaveFailed": "পুল অ্যাসাইনমেন্ট সংরক্ষণ করতে ব্যর্থ হয়েছে" }, "playground": { - "title": "Model Playground", - "description": "Test any model directly from the dashboard. Select provider, model, and endpoint type, then send a request to see the raw response.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", - "accountKey": "Account / Key", - "autoAccounts": "Auto ({count} accounts)", - "noAccounts": "No accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", - "attachImages": "Attach Images (Vision)", + "title": "মডেল প্লেগ্রাউন্ড", + "description": "ড্যাশবোর্ড থেকে সরাসরি যেকোনো মডেল পরীক্ষা করুন। প্রদানকারী, মডেল ও এন্ডপয়েন্টের ধরন নির্বাচন করুন, তারপর অপরিবর্তিত প্রতিক্রিয়া দেখতে একটি অনুরোধ পাঠান।", + "endpoint": "এন্ডপয়েন্ট", + "provider": "প্রদানকারী", + "model": "মডেল", + "accountKey": "অ্যাকাউন্ট / কী", + "autoAccounts": "স্বয়ংক্রিয় ({count}টি অ্যাকাউন্ট)", + "noAccounts": "কোনো অ্যাকাউন্ট নেই", + "send": "পাঠান", + "cancel": "বাতিল করুন", + "audioFile": "অডিও ফাইল", + "attachImages": "ছবি সংযুক্ত করুন (ভিশন)", "multipartFormData": "multipart/form-data", - "upToImages": "Up to 4 images", - "selectAudioFile": "Select audio file for transcription (mp3, wav, m4a, ogg, flac…)", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", - "resetToDefault": "Reset to default", - "downloadAudio": "Download audio", - "copyText": "Copy text", - "transcriptionHint": "Transcription uses multipart/form-data. Upload the audio file above — the JSON below controls extra parameters (model, language).", - "imagesGenerated": "Generated {count} images", - "generatedImage": "Generated image {index}", - "save": "Save", + "upToImages": "সর্বোচ্চ ৪টি ছবি", + "selectAudioFile": "ট্রান্সক্রিপশনের জন্য অডিও ফাইল নির্বাচন করুন (mp3, wav, m4a, ogg, flac…)", + "clearAll": "সব মুছুন", + "request": "অনুরোধ", + "response": "প্রতিক্রিয়া", + "transcription": "ট্রান্সক্রিপশন", + "copy": "কপি করুন", + "resetToDefault": "ডিফল্টে রিসেট করুন", + "downloadAudio": "অডিও ডাউনলোড করুন", + "copyText": "টেক্সট কপি করুন", + "transcriptionHint": "ট্রান্সক্রিপশনে multipart/form-data ব্যবহৃত হয়। উপরে অডিও ফাইলটি আপলোড করুন — নিচের JSON অতিরিক্ত প্যারামিটার (model, language) নিয়ন্ত্রণ করে।", + "imagesGenerated": "{count}টি ছবি তৈরি হয়েছে", + "generatedImage": "তৈরি করা ছবি {index}", + "save": "সংরক্ষণ করুন", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", + "chat": "চ্যাট সম্পূর্ণকরণ", + "responses": "প্রতিক্রিয়া", "completions": "কমপ্লিশন", - "images": "Image generation", - "embeddings": "Embeddings", - "speech": "Text-to-speech", - "transcription": "Audio transcription", - "video": "Video generation", - "music": "Music generation", + "images": "ছবি তৈরি", + "embeddings": "এম্বেডিং", + "speech": "টেক্সট-টু-স্পিচ", + "transcription": "অডিও ট্রান্সক্রিপশন", + "video": "ভিডিও তৈরি", + "music": "সংগীত তৈরি", "moderations": "মডারেশন", - "rerank": "Rerank", - "search": "Web search", + "rerank": "পুনঃর্যাঙ্ক", + "search": "ওয়েব অনুসন্ধান", "webFetch": "ওয়েব ফেচ" }, "conversationalChat": "কথোপকথন চ্যাট", "clearChat": "পরিষ্কার চ্যাট", "typeMessagePlaceholder": "একটি বার্তা টাইপ করুন... (নতুন লাইনের জন্য Shift+Enter)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "চ্যাট", + "tabCompare": "তুলনা করুন", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", - "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "tabBuild": "তৈরি করুন", + "configPane": "কনফিগারেশন", + "systemPrompt": "সিস্টেম প্রম্পট", + "systemPromptPlaceholder": "আপনি একজন সহায়ক সহকারী।", + "modelPlaceholder": "যেমন openai/gpt-4o", + "endpointLabel": "এন্ডপয়েন্ট", + "parametersLabel": "প্যারামিটার", + "collapseConfig": "কনফিগারেশন প্যান সংকুচিত করুন", + "expandConfig": "কনফিগারেশন প্যান প্রসারিত করুন", + "temperature": "তাপমাত্রা", + "maxTokens": "সর্বোচ্চ টোকেন", + "topP": "টপ-p", + "presencePenalty": "প্রেজেন্স পেনাল্টি", + "frequencyPenalty": "ফ্রিকোয়েন্সি পেনাল্টি", "reasoningLabel": "যুক্তি", "thinking": "চিন্তাভাবনা", "effort": "প্রচেষ্টা", "effortDefault": "ডিফল্ট", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "এলোমেলো (খালি রাখুন)", + "presetsLabel": "প্রিসেট", + "loadPreset": "প্রিসেট লোড করুন", + "savePreset": "প্রিসেট সংরক্ষণ করুন", + "noPresets": "কোনো প্রিসেট নেই", + "presetNamePlaceholder": "প্রিসেটের নাম", + "savingPreset": "সংরক্ষণ করা হচ্ছে…", + "nameRequired": "নাম আবশ্যক", + "failedToSavePreset": "প্রিসেট সংরক্ষণ করা যায়নি", + "improvePrompt": "প্রম্পট উন্নত করুন", + "improvingPrompt": "উন্নত করা হচ্ছে…", + "improvePromptTitle": "AI দিয়ে আপনার প্রম্পট উন্নত করুন", + "setModelFirst": "প্রথমে একটি মডেল সেট করুন", "setModelInConfigFirst": "প্রথমে Config প্যানে একটি মডেল সেট করুন।", "improvePromptFailed": "প্রম্পট উন্নত করা ব্যর্থ হয়েছে।", "improvePromptAria": "AI ব্যবহার করে প্রম্পট উন্নত করুন", "confirmImprovePrompt": "প্রম্পট উন্নতকরণ নিশ্চিত করুন", "improvePromptDescription": "এটি একটি উন্নত সংস্করণ তৈরি করতে আপনার বর্তমান সিস্টেম প্রম্পটটি -এ পাঠাবে।", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "এটি Config-এ কনফিগার করা মডেলের কোটা ব্যবহার করবে।", + "improveConfirm": "উন্নত করুন", + "exportCode": "কোড এক্সপোর্ট করুন", + "exportCodeTitle": "কোড এক্সপোর্ট করুন", "exportShort": "এক্সপোর্ট", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "এক্সপোর্ট করার জন্য কোনো প্লেগ্রাউন্ড স্টেট উপলভ্য নেই।", "closeExportModal": "এক্সপোর্ট মোডাল বন্ধ করুন", "close": "বন্ধ করুন", "exportRealKeyWarning": "নিরাপত্তা সতর্কতা: এক্সপোর্ট ব্লক করা হয়েছে — আউটপুটে একটি আসল API কী শনাক্ত করা হয়েছে। অনুগ্রহ করে আপনার API কী রিসেট করুন এবং আবার চেষ্টা করুন।", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language} কোড কপি করুন", "loadingPresets": "লোড হচ্ছে…", "loadPresetPlaceholder": "প্রিসেট লোড করুন…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "কপি করুন", + "copiedCode": "কপি হয়েছে!", + "addModel": "+ মডেল যোগ করুন", + "runAll": "সব চালান", + "cancelAll": "সব বাতিল করুন", + "maxColumnsReached": "সর্বাধিক {max}টি কলাম", + "modelPlaceholderCompare": "মডেল (Cmd+K)…", "noModel": "কোনো মডেল নেই", "statusLabel": "স্ট্যাটাস: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "প্রতিক্রিয়ার জন্য অপেক্ষা করা হচ্ছে…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "ক্লায়েন্ট-সাইড আনুমানিক হিসাব", + "tokensLabel": "টোকেন", + "costLabel": "খরচ", + "costEstimated": "(আনুমানিক)", "ttftTitle": "প্রথম টোকেনের সময় (ক্লায়েন্ট-সাইড অনুমান)", "tpsTitle": "প্রতি সেকেন্ডে টোকেন (ক্লায়েন্ট-সাইড অনুমান)", "tokenCountsTitle": "প্রম্পট টোকেন ↑ / কমপ্লিশন টোকেন ↓", "estimatedCostTitle": "আনুমানিক খরচ (সঠিকতার নিশ্চয়তা নেই)", - "toolsLabel": "Tools", + "toolsLabel": "টুলসমূহ", "toolsCount": "টুলস ({count})", - "addTool": "Add tool", + "addTool": "টুল যোগ করুন", "editTool": "{name} টুল সম্পাদনা করুন", "removeTool": "{name} টুল সরান", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "ফাংশনের নাম", "toolNameRequiredPlaceholder": "ফাংশনের নাম *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "বিবরণ (ঐচ্ছিক)", "toolParamsLabel": "প্যারামিটার (JSON স্কিমা)", "toolParamsJsonSchema": "প্যারামিটারের জন্য JSON স্কিমা", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "প্যারামিটারগুলো অবশ্যই বৈধ JSON হতে হবে", + "structuredOutputLabel": "স্ট্রাকচার্ড আউটপুট", + "enableJsonMode": "JSON মোড চালু করুন", + "disableJsonMode": "JSON মোড বন্ধ করুন", + "invalidJson": "অবৈধ JSON", "jsonMode": "JSON মোড", "jsonModeDescription": "response_format: json_schema প্রয়োগ করে", "schemaName": "স্কিমার নাম", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} কলাম", "addModelToCompare": "তুলনা করার জন্য একটি মডেল কলাম যোগ করুন", "modelsSimultaneously": "একসাথে সর্বোচ্চ {max}টি মডেল", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "চলছে…", + "runLabel": "চালান", + "enterToolResult": "টুলের ফলাফল লিখুন…", "build": { "step1Label": "কী পরীক্ষা করবেন?", "step2Label": "কনফিগার করুন", @@ -11247,76 +11254,76 @@ "assistant": "সহকারী", "errorLabel": "ত্রুটি", "requestFailed": "অনুরোধ ব্যর্থ হয়েছে", - "stop": "Stop" + "stop": "থামান" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "রেকর্ড হচ্ছে", + "paused": "বিরতিতে আছে", + "pipelineLogsOn": "পাইপলাইন লগ চালু", + "pipelineLogsOff": "পাইপলাইন লগ বন্ধ", + "updatingPipelineLogs": "পাইপলাইন লগ আপডেট করা হচ্ছে...", + "updatePipelineFailed": "পাইপলাইন লগিং আপডেট করতে ব্যর্থ হয়েছে", + "capturePipeline": "নতুন অনুরোধগুলোর জন্য পাইপলাইন পেলোড ক্যাপচার করুন", + "searchPlaceholder": "মডেল, প্রদানকারী, অ্যাকাউন্ট, API কী, কম্বো অনুসন্ধান করুন...", + "allProviders": "সব প্রদানকারী", + "allModels": "সব মডেল", + "allAccounts": "সব অ্যাকাউন্ট", + "allApiKeys": "সব API কী", + "total": "মোট", + "ok": "সফল", + "err": "ত্রুটি", + "combo": "কম্বো", + "keys": "কীসমূহ", + "shown": "প্রদর্শিত", + "sortNewest": "নতুনতম", + "sortOldest": "পুরোনোতম", + "sortTokensDesc": "টোকেন ↓", + "sortTokensAsc": "টোকেন ↑", + "sortDurationDesc": "সময়কাল ↓", + "sortDurationAsc": "সময়কাল ↑", + "sortStatusDesc": "স্ট্যাটাস ↓", + "sortStatusAsc": "স্ট্যাটাস ↑", + "sortModelAsc": "মডেল A-Z", + "sortModelDesc": "মডেল Z-A", + "sortLogs": "লগ সাজান", + "refresh": "রিফ্রেশ করুন", + "columnsLabel": "কলাম", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semantic": "সেমান্টিক", + "upstream": "আপস্ট্রিম", + "semanticCacheHit": "সেমান্টিক ক্যাশ হিট (OmniRoute দ্বারা পরিবেশিত)", + "upstreamResponse": "আপস্ট্রিম প্রদানকারীর প্রতিক্রিয়া", + "noApiKey": "কোনো API কী নেই", + "requestedRoutedTitle": "অনুরোধ করা হয়েছে {requested}, {routed} হিসেবে রাউট করা হয়েছে", "statusFilters": { - "all": "All", - "error": "Error", - "success": "Success", - "combo": "Combo" + "all": "সব", + "error": "ত্রুটি", + "success": "সফল", + "combo": "কম্বো" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "স্ট্যাটাস", + "cacheSource": "ক্যাশ উৎস", + "model": "মডেল", + "requested": "অনুরোধকৃত", + "provider": "প্রোভাইডার", + "protocol": "অনুরোধ প্রোটোকল", + "account": "অ্যাকাউন্ট", + "apiKey": "API কী", + "combo": "কম্বো", + "tokens": "টোকেন", "compressed": "কম্প্রেশন", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "সময়কাল", + "time": "সময়", + "conversation": "কথোপকথন", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "লগ লোড হচ্ছে...", + "noLogs": "এখনও কোনো লগ নেই। এখানে লগ দেখতে কিছু API কল করুন।", + "noMatchingLogs": "বর্তমান ফিল্টারের সঙ্গে মেলে এমন কোনো লগ নেই।", + "callLogsInfo": "কল লগগুলো JSON ফাইল হিসেবেও {dataDir}-এ সংরক্ষিত হয় এবং {retentionDays} ও {maxEntries}-এর ভিত্তিতে রোটেট করা হয়।", "loadMore": "আরও লোড করুন", "loadingMore": "আরও লোড হচ্ছে...", "correlationId": "সংযোগ আইডি", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "এই লগ এন্ট্রির জন্য বিস্তারিত পেলোড আর্টিফ্যাক্ট আর উপলব্ধ নেই।", "payloadCorrupt": "বিস্তারিত পেলোড আর্টিফ্যাক্ট পার্স করা যায়নি।", - "notAvailable": "N/A", + "notAvailable": "প্রযোজ্য নয়", "semanticCache": "সেমান্টিক (OmniRoute)", "upstreamCache": "আপস্ট্রিম (প্রোভাইডার)", "ariaLabel": "অনুরোধ লগ বিস্তারিত", @@ -11417,59 +11424,59 @@ "correlationId": "সংযোগ আইডি", "correlationIdValue": "সংযোগ আইডি: {id}", "detailedPayloadInfo": "নতুন অনুরোধের জন্য চার-পর্যায়ের ক্লায়েন্ট/প্রদানকারী পে-লোড ভিউ পেতে হলে প্রথমে বিস্তারিত লগিং সক্ষম করুন।", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "সব কপি করুন", + "copiedAll": "সব কপি করা হয়েছে" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "সব", + "filterErrors": "ত্রুটি", + "filterSuccess": "সফল", + "filterTimeout": "টাইমআউট", + "colStatus": "স্ট্যাটাস", + "colProxy": "প্রক্সি", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "ধরন", + "colLevel": "লেভেল", + "colProvider": "প্রোভাইডার", + "colTarget": "টার্গেট", + "colLatency": "লেটেন্সি", + "colClientIp": "ক্লায়েন্ট IP", + "colTime": "সময়", + "recording": "রেকর্ডিং চলছে", + "paused": "বিরত আছে", + "searchPlaceholder": "হোস্ট, প্রোভাইডার, টার্গেট, IP খুঁজুন...", + "allTypes": "সব ধরন", + "allLevels": "সব লেভেল", + "allProviders": "সব প্রোভাইডার", + "total": "মোট", + "ok": "ঠিক আছে", + "err": "ত্রুটি", + "timeoutShort": "সময়সীমা অতিক্রান্ত", + "direct": "সরাসরি", + "newest": "নতুনতম", + "oldest": "পুরোনোতম", + "latencyDesc": "ল্যাটেন্সি ↓", + "latencyAsc": "ল্যাটেন্সি ↑", + "refresh": "রিফ্রেশ", + "columns": "কলাম", + "loadingProxyLogs": "প্রক্সি লগ লোড হচ্ছে...", + "noProxyLogs": "এখনও কোনো প্রক্সি লগ নেই। প্রক্সি কনফিগার করুন এবং এখানে সেগুলো দেখতে API কল করুন।", + "noMatchingLogs": "বর্তমান ফিল্টারের সঙ্গে কোনো লগ মেলে না।", + "tlsFingerprint": "Chrome 124 TLS ফিঙ্গারপ্রিন্ট", "colPublicIp": "পাবলিক আইপি" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "বক্তৃতা", + "search": "অনুসন্ধান", + "images": "ছবি", + "chat": "চ্যাট", + "music": "সঙ্গীত", + "responses": "প্রতিক্রিয়া", + "rerank": "পুনঃর্যাঙ্ক", + "video": "ভিডিও", + "embeddings": "এমবেডিং", + "transcription": "ট্রান্সক্রিপশন" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "রানটাইম", + "description": "রিয়েল-টাইম পর্যবেক্ষণযোগ্যতা — ৩-স্তরীয় স্থিতিস্থাপকতা + সেশন + কোটা সতর্কতা", + "pause": "বিরতি দিন", + "resume": "পুনরায় শুরু করুন", + "refreshNow": "এখনই রিফ্রেশ করুন", + "kpiSessions": "সেশন", + "kpiCircuits": "সার্কিট", + "kpiCooldowns": "কুলডাউন", + "kpiLockouts": "লকআউট", + "hintStickyBound": "{count}টি স্টিকি-বাউন্ড", + "hintRecovering": "{count}টি পুনরুদ্ধার হচ্ছে", + "hintAllHealthy": "সবগুলো সুস্থ", + "hintOpen": "খোলা", + "hintConnsCooling": "কানেকশন কুলডাউনে", + "hintModelsBlocked": "মডেল ব্লক করা হয়েছে", + "resilienceTitle": "৩-স্তরীয় স্থিতিস্থাপকতা", + "resilienceSubtitle": "নথিভুক্ত স্থিতিস্থাপকতা মডেলটির প্রতিরূপ", + "providersHealthy": "{percent}% প্রোভাইডার সুস্থ", + "layer": "স্তর {n}", + "layer1Title": "প্রোভাইডার সার্কিট ব্রেকার", + "layer1Desc": "আপস্ট্রিম স্তরে ব্যর্থ হওয়া প্রোভাইডারগুলোর কাছে ট্রাফিক পাঠানো বন্ধ করুন", + "layer2Title": "কানেকশন কুলডাউন", + "layer2Desc": "একটি ত্রুটিপূর্ণ অ্যাকাউন্ট/কী এড়িয়ে যান; অন্য কানেকশনগুলো সেবা দেওয়া চালিয়ে যাবে", + "layer3Title": "মডেল লকআউট", + "layer3Desc": "প্রতি-মডেল রেট-লিমিট লক; একই কানেকশন থেকে অন্যান্য মডেলে সেবা দেওয়া অব্যাহত থাকে", + "badgeAffectedOf": "{total}টির মধ্যে {affected}টি প্রভাবিত", + "badgeCooling": "{count}টি কুলডাউনে", + "badgeLocked": "{count}টি লক করা", + "emptyCircuits": "এখনও কোনো সার্কিট ব্রেকার সক্রিয় নেই", + "emptyCooldowns": "কোনো কানেকশন কুলডাউন সক্রিয় নেই", + "emptyLockouts": "কোনো মডেল লকআউট নেই", + "moreCooldowns": "+আরও {count}টি কুলডাউন", + "moreLockouts": "+আরও {count}টি লকআউট", + "feedTitle": "লাইভ ফিড", + "feedSubtitle": "সর্বশেষ {count}টি ইভেন্ট", + "feedFilterAll": "সব", + "feedFilterCircuits": "সার্কিট", + "feedFilterCooldowns": "কুলডাউন", + "feedFilterLockouts": "লকআউট", + "feedFilterSessions": "সেশন", + "feedFilterQuotas": "কোটা", + "feedClear": "সাফ করুন", + "feedEmptyWaiting": "ইভেন্টের জন্য অপেক্ষা করা হচ্ছে... (প্রতি ৫ সেকেন্ডে পোল করা হয়)", + "feedEmptyFiltered": "এই ফিল্টারের সঙ্গে কোনো ইভেন্ট মেলে না", + "sessionsTitle": "সক্রিয় সেশন", + "sessionsSubtitle": "স্টিকি-বাউন্ড রিকোয়েস্ট ফিঙ্গারপ্রিন্ট (লাইভ)", + "sessionsActive": "{count}টি সক্রিয়", + "sessionsEmptyTitle": "কোনো সক্রিয় সেশন নেই", + "sessionsEmptyHint": "প্রক্সির মধ্য দিয়ে অনুরোধ প্রবাহিত হলে সেশনগুলো এখানে দেখা যাবে", + "tblSession": "সেশন", + "tblAge": "বয়স", + "tblIdle": "নিষ্ক্রিয়", + "tblReqs": "অনুরোধ", + "tblBoundTo": "যার সাথে আবদ্ধ", + "topApiKeys": "শীর্ষ API কীসমূহ", + "quotaMonitorsTitle": "কোটা মনিটর", + "quotaMonitorsSubtitle": "প্রতিটি অ্যাকাউন্ট উইন্ডোর লাইভ কোটা অবস্থা", + "openQuota": "কোটা খুলুন", + "allQuotasHealthy": "সব কোটা স্বাভাবিক", + "statusExhausted": "নিঃশেষিত", + "statusAlerting": "সতর্কতা চলছে", + "statusError": "ত্রুটি", + "moreSuffix": "আরও +{count}টি" }, "quotaShare": { "weightPercent": "ওয়েট %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "কোটা শেয়ারিং", + "description": "% সীমাসহ API কীসমূহের মধ্যে প্রোভাইডারের কোটা শেয়ার করুন", + "newPool": "নতুন পুল", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "কনফিগারেশনটি localStorage-এ সংরক্ষিত হয় (এখনও সার্ভারে স্থায়ীভাবে সংরক্ষিত নয়)। প্রতি-অনুরোধ ক্যাপ প্রয়োগের ব্যবস্থা এখনও প্রক্সি পাইপলাইনে যুক্ত করা হয়নি। এই স্ক্রিনটি আপনাকে কোটা বিভাজন ডিজাইন ও দৃশ্যায়ন করতে দেয়; DB-তে স্থায়ী সংরক্ষণ এবং আপস্ট্রিম কল ইন্টারসেপশনসহ প্রকৃত প্রয়োগ ভবিষ্যতের কোনো সংস্করণে আসবে।", + "kpiActivePools": "সক্রিয় পুলসমূহ", + "kpiKeysAllocated": "বরাদ্দকৃত কীসমূহ", + "kpiAvgUnallocated": "গড় অবরাদ্দকৃত", + "kpiProvidersWithQuota": "কোটাসহ প্রোভাইডার", + "emptyTitle": "কোনো পুল কনফিগার করা নেই", + "emptyDescription": "% বরাদ্দসহ কোনো প্রোভাইডারের কোটা উইন্ডো শেয়ার করার জন্য API কীসমূহ বরাদ্দ করতে একটি পুল তৈরি করুন।", + "loading": "লোড হচ্ছে…", + "removePool": "পুল সরান", + "removeConfirm": "এই পুলটি সরাবেন?", + "pool": "পুল", + "used": "ব্যবহৃত", + "allocationsCount": "বরাদ্দসমূহ ({count})", + "allocatedFree": "{allocated}% বরাদ্দকৃত · {free}% খালি", + "noAllocations": "এখনও কোনো কী বরাদ্দ করা হয়নি", + "capLabel": "ক্যাপ {value}", + "notTrackedYet": "(এখনও ট্র্যাক করা হয়নি)", + "policy": "নীতি", "apiKeyColumn": "এপিআই কী", "weightColumn": "ওয়েট", "fairShareShort": "ন্যায্য", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "কঠোর", + "policySoft": "নমনীয়", + "policyBurst": "বার্স্ট", + "policyHardHint": "কোনো কী-এর বরাদ্দ নিঃশেষ হলে ব্লক করুন", + "policySoftHint": "ওভারফ্লো অনুমোদন করুন, শুধু সতর্ক করুন", + "policyBurstHint": "ফ্রি পুলে বার্স্ট করার অনুমতি দিন", + "editAllocations": "বরাদ্দ সম্পাদনা করুন", + "newPoolTitle": "নতুন কোটা পুল", + "providerConnection": "প্রোভাইডার সংযোগ (অ্যাকাউন্ট)", + "selectConnection": "একটি সংযোগ নির্বাচন করুন…", + "noEligibleConnections": "কোটা ডেটাসহ কোনো সংযোগ নেই। প্রথমে /dashboard/quota থেকে রিফ্রেশ করুন।", + "quotaWindow": "কোটা উইন্ডো", + "selectWindow": "একটি উইন্ডো নির্বাচন করুন…", + "alreadyUsedSuffix": "(ইতিমধ্যে ব্যবহৃত)", + "windowReset": "রিসেট", + "duplicatePoolError": "এই সংযোগ + উইন্ডোর জন্য ইতিমধ্যে একটি পুল রয়েছে", + "cancel": "বাতিল", + "createPool": "পুল তৈরি করুন", + "editTitle": "বরাদ্দ সম্পাদনা করুন", + "noKeysAdded": "কোনো কী বরাদ্দ করা হয়নি। নিচে একটি যোগ করুন।", + "totalLabel": "মোট: {percent}%", + "totalExceeded": "⚠ ১০০% অতিক্রম করেছে", + "addKey": "+ কী যোগ করুন…", + "equalSplit": "সমানভাবে ভাগ করুন", + "save": "বরাদ্দ সংরক্ষণ করুন", "betaPreviewLabel": "বিটা — UI পূর্বরূপ।", "betaConfigSavedPrefix": "কনফিগারেশন সংরক্ষিত হয়", "betaConfigSavedSuffix": "(এখনও সার্ভারে স্থায়ী হয়নি)। প্রতি-অনুরোধের ক্যাপ এনফোর্সমেন্ট এখনও প্রক্সি পাইপলাইনে সংযুক্ত করা হয়নি৷ এই স্ক্রিনটি আপনাকে কোটা বিভাজন ডিজাইন এবং কল্পনা করতে দেয়; বাস্তব প্রয়োগ ডিবি অধ্যবসায় এবং আপস্ট্রিম কল ইন্টারসেপশন সহ ভবিষ্যতের পুনরাবৃত্তিতে অবতরণ করবে।", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "বেস URL", "endpointsCollapse": "সংকুচিত করুন", "endpointsExpand": "প্রসারিত করুন", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-নেটিভ", "endpointsResponsesNote": "OpenAI রেসপন্স — codex/github", "endpointsWsNote": "WebSocket — শুধুমাত্র codex", "betaText": "কোটা শেয়ার কার্যকরী তবে বাগ প্রত্যাশিত। একটি পেয়েছেন? অনুগ্রহ করে রিপোর্ট করুন।", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "এই গ্রুপে এখনও পুল রয়েছে — প্রথমে সেগুলো পুনরায় বরাদ্দ করুন বা মুছুন।", "ungroupedTitle": "গ্রুপবিহীন", "ungroupedHint": "এই পুলগুলো কোনো পরিচিত গ্রুপে বরাদ্দ করা নেই। একটি পুলকে কোনো বাস্তব গ্রুপে স্থানান্তর করতে সেটি সম্পাদনা করুন।", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "এই পুলটি সরানো যায়নি।", + "dismiss": "খারিজ করুন" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "প্লাগইন", + "description": "OmniRoute-এর কার্যকারিতা সম্প্রসারণের জন্য প্লাগইন ইনস্টল ও পরিচালনা করুন", + "loading": "প্লাগইন লোড হচ্ছে...", + "scanning": "স্ক্যান করা হচ্ছে...", + "scanForPlugins": "প্লাগইন স্ক্যান করুন", + "noPlugins": "কোনো প্লাগইন ইনস্টল করা নেই", + "noPluginsDescription": "প্লাগইন ডিরেক্টরিগুলো ~/.omniroute/plugins/-এ রাখুন এবং স্ক্যান ক্লিক করুন।", + "activate": "সক্রিয় করুন", + "deactivate": "নিষ্ক্রিয় করুন", + "uninstall": "আনইনস্টল করুন", + "uninstallConfirm": "\"{name}\" প্লাগইনটি আনইনস্টল করবেন?", + "pluginScanComplete": "প্লাগইন স্ক্যান সম্পন্ন হয়েছে", + "pluginScanFailed": "প্লাগইন স্ক্যান ব্যর্থ হয়েছে", + "activated": "{name} সক্রিয় করা হয়েছে", + "deactivated": "{name} নিষ্ক্রিয় করা হয়েছে", + "activateFailed": "{name} সক্রিয় করা যায়নি", + "deactivateFailed": "{name} নিষ্ক্রিয় করা যায়নি", + "uninstalled": "{name} আনইনস্টল করা হয়েছে", + "uninstallFailed": "{name} আনইনস্টল করা যায়নি", + "configure": "কনফিগার করুন: {name}", + "configurePlugin": "কনফিগার করুন", + "noConfigSettings": "এই প্লাগইনে কনফিগার করার মতো কোনো সেটিংস নেই।", + "saving": "সংরক্ষণ করা হচ্ছে...", + "saveConfiguration": "কনফিগারেশন সংরক্ষণ করুন", + "configurationSaved": "কনফিগারেশন সংরক্ষণ করা হয়েছে", + "saveConfigurationFailed": "কনফিগারেশন সংরক্ষণ করা যায়নি", + "pluginNotFound": "প্লাগইন পাওয়া যায়নি", + "version": "সংস্করণ", + "author": "লেখক", + "description_label": "বিবরণ", + "status": "স্থিতি", + "enabled": "সক্রিয়", + "disabled": "নিষ্ক্রিয়", "installedTab": "ইনস্টল করা হয়েছে", "marketplaceTab": "মার্কেটপ্লেস", "marketplaceUrlLabel": "কাস্টম মার্কেটপ্লেস URL", @@ -11729,7 +11736,7 @@ "verified": "যাচাইকৃত", "install": "ইনস্টল করুন", "installedFromMarketplace": "প্লাগইন {name} ইনস্টল করা হয়েছে!", - "hooks": "Hooks" + "hooks": "হুকসমূহ" }, "quotaPlans": { "title": "প্ল্যান ও কোটা", @@ -11803,49 +11810,49 @@ "budgetThreshold": "{target}-এর জন্য বাজেট সীমা পৌঁছেছে", "settingUpdated": "{actor} সেটিং {target} আপডেট করেছেন", "authLogin": "{actor} সাইন ইন করেছেন", - "authLogout": "{actor} signed out", - "cloudAgentSession": "Cloud agent session started for {target}", - "mcpToolRegistered": "MCP tool {target} registered", - "webhookCreated": "{actor} created webhook {target}", - "webhookDeleted": "{actor} removed webhook {target}", - "quotaPoolCreated": "{actor} created quota pool {target}", - "quotaPoolUpdated": "{actor} updated quota pool {target}", - "quotaPoolDeleted": "{actor} removed quota pool {target}", - "quotaPlanUpdated": "{actor} updated quota plan {target}", - "quotaStoreDriverChanged": "QuotaStore driver changed", - "updateApplied": "Update {target} applied", - "deployCompleted": "Deploy completed", - "skillInstalled": "{actor} installed skill {target}", - "skillRemoved": "{actor} removed skill {target}", - "providerCredentialsCreated": "{actor} created credentials for {target}", - "providerCredentialsApplied": "Credentials for {target} applied", - "providerCredentialsUpdated": "{actor} updated credentials for {target}", - "providerCredentialsRevoked": "{actor} revoked credentials for {target}", - "providerCredentialsBatchRevoked": "{actor} batch-revoked credentials", - "providerCredentialsBatchUpdated": "{actor} batch-updated credentials", - "providerCredentialsBulkCreated": "{actor} bulk-created credentials", - "providerCredentialsBulkImported": "{actor} bulk-imported credentials", - "providerCredentialsImported": "{actor} imported credentials", - "providerSsrfBlocked": "SSRF attempt blocked for {target}", - "authLoginSuccess": "{actor} signed in", - "authLoginError": "Login error for {actor}", - "authLoginFailed": "Login failed for {actor}", - "authLoginLocked": "{actor} locked out after too many attempts", - "authLoginMisconfigured": "Auth configuration invalid", - "authLoginSetupRequired": "Auth setup required", - "authLogoutSuccess": "{actor} signed out", - "syncTokenCreated": "{actor} created sync token", - "syncTokenRevoked": "{actor} revoked sync token", - "settingsUpdate": "{actor} updated settings", - "settingsUpdateFailed": "Settings update failed", - "serviceRevealApiKey": "{actor} revealed API key for {target}", + "authLogout": "{actor} সাইন আউট করেছেন", + "cloudAgentSession": "{target}-এর জন্য ক্লাউড এজেন্ট সেশন শুরু হয়েছে", + "mcpToolRegistered": "MCP টুল {target} নিবন্ধিত হয়েছে", + "webhookCreated": "{actor} ওয়েবহুক {target} তৈরি করেছেন", + "webhookDeleted": "{actor} ওয়েবহুক {target} সরিয়েছেন", + "quotaPoolCreated": "{actor} কোটা পুল {target} তৈরি করেছেন", + "quotaPoolUpdated": "{actor} কোটা পুল {target} আপডেট করেছেন", + "quotaPoolDeleted": "{actor} কোটা পুল {target} সরিয়েছেন", + "quotaPlanUpdated": "{actor} কোটা প্ল্যান {target} আপডেট করেছেন", + "quotaStoreDriverChanged": "QuotaStore ড্রাইভার পরিবর্তন করা হয়েছে", + "updateApplied": "আপডেট {target} প্রয়োগ করা হয়েছে", + "deployCompleted": "ডিপ্লয় সম্পন্ন হয়েছে", + "skillInstalled": "{actor} স্কিল {target} ইনস্টল করেছেন", + "skillRemoved": "{actor} স্কিল {target} সরিয়েছেন", + "providerCredentialsCreated": "{actor} {target}-এর জন্য ক্রেডেনশিয়াল তৈরি করেছেন", + "providerCredentialsApplied": "{target}-এর ক্রেডেনশিয়াল প্রয়োগ করা হয়েছে", + "providerCredentialsUpdated": "{actor} {target}-এর ক্রেডেনশিয়াল আপডেট করেছেন", + "providerCredentialsRevoked": "{actor} {target}-এর ক্রেডেনশিয়াল বাতিল করেছেন", + "providerCredentialsBatchRevoked": "{actor} একযোগে একাধিক ক্রেডেনশিয়াল বাতিল করেছেন", + "providerCredentialsBatchUpdated": "{actor} ব্যাচে শংসাপত্র আপডেট করেছেন", + "providerCredentialsBulkCreated": "{actor} একসঙ্গে একাধিক শংসাপত্র তৈরি করেছেন", + "providerCredentialsBulkImported": "{actor} একসঙ্গে একাধিক শংসাপত্র ইমপোর্ট করেছেন", + "providerCredentialsImported": "{actor} শংসাপত্র ইমপোর্ট করেছেন", + "providerSsrfBlocked": "{target}-এর জন্য SSRF প্রচেষ্টা ব্লক করা হয়েছে", + "authLoginSuccess": "{actor} সাইন ইন করেছেন", + "authLoginError": "{actor}-এর লগইন ত্রুটি", + "authLoginFailed": "{actor}-এর লগইন ব্যর্থ হয়েছে", + "authLoginLocked": "অতিরিক্ত প্রচেষ্টার পর {actor}-কে লক আউট করা হয়েছে", + "authLoginMisconfigured": "প্রমাণীকরণ কনফিগারেশন অবৈধ", + "authLoginSetupRequired": "প্রমাণীকরণ সেটআপ প্রয়োজন", + "authLogoutSuccess": "{actor} সাইন আউট করেছেন", + "syncTokenCreated": "{actor} সিঙ্ক টোকেন তৈরি করেছেন", + "syncTokenRevoked": "{actor} সিঙ্ক টোকেন প্রত্যাহার করেছেন", + "settingsUpdate": "{actor} সেটিংস আপডেট করেছেন", + "settingsUpdateFailed": "সেটিংস আপডেট ব্যর্থ হয়েছে", + "serviceRevealApiKey": "{actor} {target}-এর API কী প্রকাশ করেছেন", "genericEvent": "{actor} {target}" } }, "agentBridge": { "title": "AgentBridge", - "subtitle": "Use IDE agents with OmniRoute models — no config required", - "riskBannerTitle": "Use at your own risk", + "subtitle": "OmniRoute মডেলের সঙ্গে IDE এজেন্ট ব্যবহার করুন — কোনো কনফিগারেশন প্রয়োজন নেই", + "riskBannerTitle": "নিজ দায়িত্বে ব্যবহার করুন", "riskBannerBody": "AgentBridge IDE এজেন্টসমূহ থেকে HTTPS ট্রাফিক ইন্টারসেপ্ট করে। এটি সক্রিয় করার মাধ্যমে আপনি প্রতিটি এজেন্টের পরিষেবার শর্তাবলী মেনে চলার দায়িত্ব স্বীকার করছেন। TLS ইন্সপেকশন নিষিদ্ধ এমন ডিভাইস বা নেটওয়ার্কে এটি কখনই ব্যবহার করবেন না।", "riskBannerDismiss": "খারিজ করুন", "serverCardTitle": "AgentBridge সার্ভার", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP এজেন্ট", "phrase": "CLI যা OmniRoute এক্সিকিউশন ব্যাকএন্ড হিসেবে স্পন করে (রিভার্স ফ্লো)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "বেশিরভাগ ব্যবহারকারী এটি উপেক্ষা করতে পারেন — কোনো ইন্টিগ্রেশনে প্রয়োজন হলেই শুধু ব্যবহার করুন।", "flow": "ক্লায়েন্ট → OmniRoute → spawn CLI (stdio/ACP) → রেসপন্স", "seeOther": "দেখুন →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "Omni দ্বারা ব্যাকএন্ড হিসেবে ব্যবহৃত CLI", "desc": "রিভার্স এক্সিকিউশন", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → CLI চালু করে → প্রতিক্রিয়া", "examples": "যেমন: claude, codex (ACP)" } }, @@ -12233,8 +12240,8 @@ "category": "ধরন", "detectionStatus": "শনাক্তকরণ", "configStatus": "কনফিগারেশন", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "বেস URL", + "apiKeyLabel": "API কী", "modelMappingLabel": "মডেল ম্যাপিং", "noActiveProviders": "কোনো সক্রিয় প্রোভাইডার নেই।", "noActiveProvidersDesc": "CLI কনফিগার করার আগে অন্তত ১টি প্রোভাইডার সংযুক্ত করতে Providers-এ যান।", @@ -12246,7 +12253,7 @@ "pageSubtitle": "OmniRoute-এর দিকে নির্দেশিত কোড টুলসমূহ", "searchPlaceholder": "CLI খুঁজুন…", "filterDetectionLabel": "শনাক্তকরণ", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "বেস URL", "detectionAll": "সব", "detectionInstalled": "ইনস্টল করা", "detectionNotFound": "পাওয়া যায়নি", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "ওয়েবহুক", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "ওয়েবহুক এন্ডপয়েন্ট নিবন্ধন করুন, তালিকা দেখুন, পরীক্ষা করুন এবং সরিয়ে ফেলুন। ইভেন্ট সাবস্ক্রিপশন (request.completed, request.failed, quota.exceeded ইত্যাদি) কনফিগার করুন এবং ডেলিভারি পুনঃপ্রচেষ্টা পরিচালনা করুন।" }, "omni-mcp": { "name": "MCP সার্ভার", @@ -12390,47 +12397,47 @@ "description": "কোর OpenAI-সামঞ্জস্যপূর্ণ ইনফারেন্স এন্ডপয়েন্টসমূহ: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank এবং Responses API। AI এজেন্টদের জন্য প্রাথমিক ইন্টিগ্রেশন সারফেস।" }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: সার্ভ", "description": "CLI থেকে OmniRoute সার্ভার স্টার্ট, স্টপ এবং রিস্টার্ট করুন। ডেমন মোড, পোর্ট কনফিগারেশন, অটো-রিকভারি, সিস্টেম ট্রে ইন্টিগ্রেশন এবং ড্যাশবোর্ড ওপেন শর্টকাট পরিচালনা করুন।" }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: হেলথ", "description": "CLI থেকে সার্ভার হেলথ, কম্পোনেন্ট স্ট্যাটাস এবং লাইভ মেট্রিক্স চেক করুন। সার্কিট ব্রেকার এবং প্রোভাইডার স্ট্যাটাসের রিয়েল-টাইম ড্যাশবোর্ডের জন্য `health`, `health components` এবং `health watch` রান করুন।" }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: প্রোভাইডার", "description": "CLI থেকে প্রোভাইডার কানেকশন পরিচালনা করুন: উপলব্ধ/কনফিগার করা প্রোভাইডার তালিকাভুক্ত করুন, add, test, test-all, validate করুন, API কী রোটেট করুন এবং প্রতি-প্রোভাইডার মেট্রিক্স দেখুন।" }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: API কী", "description": "CLI থেকে OmniRoute API কী তৈরি, তালিকাভুক্ত, রোটেট এবং রিভোক করুন। প্রোভাইডার অথেন্টিকেশনের জন্য OAuth ফ্লো পরিচালনা করুন এবং কী স্কোপ ও এক্সপায়ারেশন ইন্সপেক্ট করুন।" }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: মডেল", "description": "CLI থেকে উপলব্ধ AI মডেল কোয়েরি করুন, মডেল অ্যালিয়াস তালিকাভুক্ত করুন এবং সম্পূর্ণ মডেল ক্যাটালগ ব্রাউজ করুন। প্রোভাইডার দ্বারা ফিল্টার করুন, ক্যাপাবিলিটি দ্বারা সার্চ করুন এবং মডেল নামের ভেরিয়েন্টসমূহ রিসলভ করুন।" }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: চ্যাট", "description": "CLI থেকে চ্যাট কমপ্লিশন পাঠান, রেসপন্স স্ট্রিম করুন এবং একটি ইন্টারঅ্যাক্টিভ REPL সেশন শুরু করুন। সমস্ত OmniRoute প্রোভাইডার, কম্বো রাউটিং এবং সিস্টেম প্রম্পট কনফিগারেশন সমর্থন করে।" }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: রাউটিং ও কম্বো", "description": "CLI থেকে রাউটিং কম্বো তৈরি, তালিকাভুক্ত, আপডেট এবং ডিলিট করুন। রাউটিং স্ট্র্যাটেজি পরীক্ষা করুন, কম্বো মেট্রিক্স ইন্সপেক্ট করুন এবং ইন্টারঅ্যাক্টিভভাবে ফলব্যাক চেইন কনফিগার করুন।" }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: স্থিতিস্থাপকতা ও কোটা", "description": "CLI থেকে সার্কিট-ব্রেকার স্টেট, কানেকশন কুলডাউন, কোটা লিমিট এবং ব্যাকঅফ লেভেল ইন্সপেক্ট ও পরিচালনা করুন। আটকে থাকা প্রোভাইডার রিসেট করুন এবং রেজিলিয়েন্স থ্রেশহোল্ড কনফিগার করুন।" }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: কম্প্রেশন", "description": "CLI থেকে প্রম্পট কম্প্রেশন কনফিগার এবং পরীক্ষা করুন। RTK ফিল্টার, Caveman রুলস, স্ট্যাকড কম্প্রেশন মোড পরিচালনা করুন এবং আসল প্রম্পট সহ কম্প্রেশন আউটপুট প্রিভিউ করুন।" }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: কনটেক্সট ও সেশন", "description": "CLI থেকে কনটেক্সট ইঞ্জিনিয়ারিং কনফিগারেশন, RTK ফিল্টার সেট এবং কনভারসেশন সেশন পরিচালনা করুন। কনটেক্সট-রিলে সেটিংস প্রয়োগ করুন এবং সক্রিয় কনটেক্সট পাইপলাইন ইন্সপেক্ট করুন।" }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: খরচ ও ব্যবহার", "description": "CLI থেকে খরচ বিভাজন, টোকেন ব্যবহার এবং কল লগ দেখুন। প্রোভাইডার, মডেল বা তারিখের ব্যাপ্তি দ্বারা ফিল্টার করুন। ব্যবহারের রিপোর্ট এক্সপোর্ট করুন এবং প্রতি-কানেকশন খরচ ইন্সপেক্ট করুন।" }, "cli-mcp": { @@ -12589,14 +12596,14 @@ "typeApikey": "API কী", "sortTypeFirst": "সবচেয়ে সহজটি প্রথমে", "sortTypeFirstHelp": "সাইনআপের প্রয়াস অনুযায়ী গ্রুপ করুন (সাইনআপ ছাড়া → OAuth লগইন → API কী), প্রতিটি গ্রুপের মধ্যে গুণমানের ক্রম বজায় রেখে", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "সবচেয়ে নির্ভরযোগ্যটি প্রথমে", + "sortByReliabilityHelp": "নির্বাচিত সময়সীমায় সফল হওয়া কলের অনুপাত অনুযায়ী প্রোভাইডারগুলো সাজান। হার নির্ধারণের জন্য যেসব প্রোভাইডারের কল খুব কম, সেগুলো পরিমাপ করা প্রোভাইডারগুলোর নিচে তাদের স্কোরভিত্তিক ক্রম বজায় রাখে।", "typeLegend": "সাইনআপ ছাড়া = জিরো সেটআপ · OAuth লগইন = আপনার নিজস্ব অ্যাকাউন্ট দিয়ে সাইন ইন করুন · API কী = আপনার নিজস্ব কী ব্যবহার করুন অথবা ওই প্রোভাইডারের ফ্রি টিয়ার", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "নির্ভরযোগ্যতা", + "colReliabilityHelp": "গত ২৪ ঘণ্টায় এই প্রোভাইডার প্রকৃতপক্ষে যত শতাংশ কলের উত্তর দিয়েছে। ড্যাশের অর্থ হলো, হার নির্ধারণের জন্য এটি খুব কম ট্রাফিক পরিচালনা করেছে।", + "reliabilitySample": "গত {hours} ঘণ্টায় {requests}টি কলের মধ্যে {successes}টি সফল হয়েছে", + "reliabilityTooFew": "গত {hours} ঘণ্টায় মাত্র {requests}টি কল — হার নির্ধারণের জন্য খুব কম", + "reliabilityNoTraffic": "গত ২৪ ঘণ্টায় কোনো কল রেকর্ড করা হয়নি" }, "discovery": { "title": "প্রোভাইডার ডিসকভারি", @@ -12612,48 +12619,48 @@ "verify": "যাচাই করুন", "verifyFailed": "প্রাপ্ত ফলাফল যাচাই করতে ব্যর্থ হয়েছে।", "delete": "মুছে ফেলুন", - "deleteFailed": "Failed to delete finding.", - "deleteTitle": "Delete discovery result", - "deleteConfirm": "Delete the discovery finding for {provider}? This cannot be undone.", - "emptyTitle": "No discovery results yet", - "emptyDescription": "Run a scan above to look for free access methods on a provider.", - "risk": "Risk", - "method": "Method", - "auth": "Auth", - "feasibility": "Feasibility", - "models": "Models" + "deleteFailed": "ফাইন্ডিং মুছে ফেলা যায়নি।", + "deleteTitle": "ডিসকভারি ফলাফল মুছুন", + "deleteConfirm": "{provider}-এর ডিসকভারি ফাইন্ডিং মুছবেন? এটি পূর্বাবস্থায় ফেরানো যাবে না।", + "emptyTitle": "এখনও কোনো ডিসকভারি ফলাফল নেই", + "emptyDescription": "কোনো প্রোভাইডারে বিনামূল্যে অ্যাক্সেসের পদ্ধতি খুঁজতে উপরে একটি স্ক্যান চালান।", + "risk": "ঝুঁকি", + "method": "পদ্ধতি", + "auth": "প্রমাণীকরণ", + "feasibility": "সম্ভাব্যতা", + "models": "মডেল" }, "noAuthProvider": { - "title": "No authentication required", - "description": "This provider is ready to use immediately — no signup or API key needed.", - "accountDescription": "Ready to use — no signup needed. Add accounts for rate-limit rotation.", - "addAccount": "Add Account", - "accountName": "{provider} Account {number}", - "accounts": "Accounts ({count})", - "adding": "Adding...", - "autoGeneratedAccount": "Using an auto-generated account. Select “{addLabel}” for rate-limit rotation.", - "configureProxy": "Configure proxy", - "proxyConfigured": "Proxy configured: {host}", - "removeAccount": "Remove account", - "proxyForAccount": "Proxy for Account {number}", - "saved": "Saved", - "custom": "Custom", - "noSavedProxies": "No saved proxies — add one in Settings → Proxy", - "directConnection": "Direct (no proxy)", - "host": "Host", - "port": "Port", - "usernameOptional": "Username (optional)", - "passwordOptional": "Password (optional)", - "cancel": "Cancel", - "saving": "Saving...", - "save": "Save", - "createConnectionFailed": "Failed to create connection", - "updateConnectionFailed": "Failed to update connection", - "fetchProxiesFailed": "Failed to fetch proxies", - "noSavedProxiesError": "No saved proxies found. Add proxies in Settings → Proxy first.", - "updateProviderFailed": "Failed to update provider", - "providerEnabled": "{provider} enabled", - "providerDisabled": "{provider} disabled", + "title": "কোনো প্রমাণীকরণের প্রয়োজন নেই", + "description": "এই প্রোভাইডারটি অবিলম্বে ব্যবহারের জন্য প্রস্তুত — সাইনআপ বা API key-এর প্রয়োজন নেই।", + "accountDescription": "ব্যবহারের জন্য প্রস্তুত — সাইনআপের প্রয়োজন নেই। রেট-লিমিট রোটেশনের জন্য অ্যাকাউন্ট যোগ করুন।", + "addAccount": "অ্যাকাউন্ট যোগ করুন", + "accountName": "{provider} অ্যাকাউন্ট {number}", + "accounts": "অ্যাকাউন্ট ({count})", + "adding": "যোগ করা হচ্ছে...", + "autoGeneratedAccount": "স্বয়ংক্রিয়ভাবে তৈরি করা একটি অ্যাকাউন্ট ব্যবহার করা হচ্ছে। রেট-লিমিট রোটেশনের জন্য “{addLabel}” নির্বাচন করুন।", + "configureProxy": "প্রক্সি কনফিগার করুন", + "proxyConfigured": "প্রক্সি কনফিগার করা হয়েছে: {host}", + "removeAccount": "অ্যাকাউন্ট সরান", + "proxyForAccount": "অ্যাকাউন্ট {number}-এর জন্য প্রক্সি", + "saved": "সংরক্ষিত", + "custom": "কাস্টম", + "noSavedProxies": "কোনো সংরক্ষিত প্রক্সি নেই — Settings → Proxy-তে একটি যোগ করুন", + "directConnection": "সরাসরি (প্রক্সি ছাড়া)", + "host": "হোস্ট", + "port": "পোর্ট", + "usernameOptional": "ব্যবহারকারীর নাম (ঐচ্ছিক)", + "passwordOptional": "পাসওয়ার্ড (ঐচ্ছিক)", + "cancel": "বাতিল", + "saving": "সংরক্ষণ করা হচ্ছে...", + "save": "সংরক্ষণ করুন", + "createConnectionFailed": "সংযোগ তৈরি করা যায়নি", + "updateConnectionFailed": "সংযোগ আপডেট করা যায়নি", + "fetchProxiesFailed": "প্রক্সিগুলো আনা যায়নি", + "noSavedProxiesError": "কোনো সংরক্ষিত প্রক্সি পাওয়া যায়নি। প্রথমে Settings → Proxy-তে প্রক্সি যোগ করুন।", + "updateProviderFailed": "প্রোভাইডার আপডেট করা যায়নি", + "providerEnabled": "{provider} সক্রিয় করা হয়েছে", + "providerDisabled": "{provider} নিষ্ক্রিয় করা হয়েছে", "providerAdded": "{provider} যোগ করা হয়েছে", "add": "যোগ করুন", "manualApiKey": "একটি ম্যানুয়াল API কী ব্যবহার করুন", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar সমর্থক", + "description": "একটি সক্রিয় OmniRoute Radar সমর্থক ফিড যাচাই করা হয়েছে", + "criteria": "স্বাক্ষরিত সক্রিয় Radar সমর্থক ফিড যাচাই করুন।" }, "first-token": { "name": "প্রথম টোকেন", @@ -12948,8 +12955,8 @@ "description": "প্রতিটি সামঞ্জস্যপূর্ণ নোডের জন্য একাধিক সংযোগের অনুমতি দিন।" }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "কনটেক্সট উইন্ডো পরীক্ষা নিষ্ক্রিয় করুন", + "description": "সরাসরি একক-মডেল অনুরোধের ক্ষেত্রে OmniRoute-এর স্থানীয় কনটেক্সট-উইন্ডো এবং সর্বোচ্চ-ইনপুট-টোকেন পরীক্ষা এড়িয়ে যান। আপস্ট্রিম প্রোভাইডাররা এখনও তাদের প্রকৃত সীমা প্রয়োগ করে। প্রম্পট কম্প্রেশন এবং আউটপুট-টোকেন সীমা সক্রিয় থাকে।" }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "ক্লায়েন্টদের কাছে ফরোয়ার্ড করার আগে Responses API পাসথ্রু স্ট্রিম থেকে অভ্যন্তরীণ কমেন্টারি-ফেজ আউটপুট আইটেমগুলি সরান। র আপস্ট্রিম কমেন্টারি পেতে এই ফ্ল্যাগটি নিষ্ক্রিয় করুন।" @@ -12985,7 +12992,7 @@ "description": "ক্লায়েন্টের কাছে ইতিমধ্যে বাইট পৌঁছানোর পরে স্ট্রিম রিকভারিকে প্রতিক্রিয়ার জন্য আবার অনুরোধ করার এবং এটি যুক্ত করার অনুমতি দিন।" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "স্ট্রিমের মাঝপথে ধারাবাহিকতাকে টুল-কলের জন্য নিরাপদ করুন: কোনো টুল কল পাঠানোর পর কেটে যাওয়া স্ট্রিম কখনো পুনরায় চালু করবেন না (তা এখনও চলমান থাকুক বা ইতিমধ্যে শেষ হয়ে থাকুক), এবং সম্পূর্ণ পুনঃচেষ্টা বাজেট ব্যবহার করার পরিবর্তে একটি খালি ধারাবাহিকতার পর থামুন।" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "স্ট্রিম কোনো উপযোগী ফ্রেম পাঠানোর আগেই বন্ধ হলে এবং একই সংযোগে সীমিত পুনঃচেষ্টা শেষ হয়ে গেলে একবার একটি সহোদর সংযোগে ফেইলওভার করুন। ব্যবহারযোগ্য সহোদর সংযোগ না থাকলে মূল early-EOF ত্রুটি ফেরত দেওয়া হয়। বন্ধ থাকলে: পুনঃচেষ্টার পরে early-EOF চূড়ান্ত থাকে।" @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "স্কিল স্যান্ডবক্সে নেটওয়ার্ক অ্যাক্সেস সক্ষম করুন।" }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "সার্ভার-মালিকানাধীন টুল লুপ", + "description": "মডেল ক্লায়েন্টের ব্যবহারযোগ্য প্রতিক্রিয়া না দেওয়া পর্যন্ত নন-স্ট্রিমিং সার্ভার-মালিকানাধীন টুল কল চালিয়ে যান।" + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After-এর উৎস", + "description": "সমন্বিত 429/503 অনুপলভ্য প্রতিক্রিয়ায়, ভবিষ্যতে পুনঃচেষ্টার কোনো নির্দিষ্ট সময় জানা না থাকলে কৃত্রিম 1s পাঠানোর পরিবর্তে Retry-After বাদ দিন, error.retry_after_provenance যোগ করুন এবং combo drain পাথে গদ্যে লেখা পুনঃচেষ্টার ইঙ্গিত পড়ুন।" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "সুরক্ষিত-অগ্রাধিকার অবকাঠামোগত স্টপে 502", + "description": "শুধু-কোটা-ফলব্যাক অগ্রাধিকার টার্গেট যখন প্রমাণযোগ্যভাবে কোটা-সংক্রান্ত নয় এমন কোনো কারণে combo থামায়—যেমন খোলা provider circuit breaker বা predictive latency skip—তখন 503-এর পরিবর্তে 502 দিয়ে উত্তর দিন।" } } }, @@ -13171,7 +13182,7 @@ "segmentHint": "প্রতিটি সেগমেন্ট = একটি ফ্রি পুল · পুল-ডিডুপ্লিকেটেড, সঠিক গণনা (কোনো অতিরঞ্জিত রেট-লিমিট সিলিং নেই)।", "boost": "এককালীন $10 OpenRouter টপ-আপের মাধ্যমে প্রতি মাসে আরও ~{tokens} আনলক করুন (50 → 1000 req/day)", "uncapped": "স্থায়ীভাবে বিনামূল্যে, কোনো প্রকাশিত সীমা নেই (রেট-সীমিত) — প্রকৃত অ্যাক্সেস, হেডলাইনে গণনা করা হয়নি:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "আঞ্চলিক পরিচয় যাচাইয়ের আড়ালে প্রতি মাসে আরও ~{tokens} (যেমন, মূল ভূখণ্ড চীনের প্রকৃত-নাম যাচাইকরণ) — এটি প্রকৃত কোটা, শিরোনামে দেখানো হিসাবে গণনা করা হয়নি:", "tosRestricted": "{count, plural, one {#টি মডেল} other {#টি মডেল}} ToS-সীমাবদ্ধ হিসেবে চিহ্নিত — সিদ্ধান্ত আপনার", "provider": "প্রোভাইডার", "model": "মডেল", @@ -13270,80 +13281,80 @@ "viewFullHistory": "GitHub-এ সম্পূর্ণ ইতিহাস দেখুন" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "রিজনিং রাউটিং নীতিমালা", + "apiKeyTitle": "এই API কী-এর জন্য রিজনিং রাউটিং", + "subtitle": "ক্লায়েন্টের সহায়তার প্রয়োজন ছাড়াই মডেল ও রিজনিং প্রচেষ্টা পুনরায় রুট করুন। কোনো নিয়ম না মিললে অনুরোধ অপরিবর্তিত থাকে।", + "loadError": "রিজনিং নিয়মগুলো লোড করা যায়নি।", + "saveError": "নিয়মটি অবৈধ অথবা সংরক্ষণ করা যায়নি।", + "saved": "রিজনিং নিয়ম সংরক্ষণ করা হয়েছে।", + "deleteConfirm": "এই রিজনিং নিয়মটি মুছবেন?", + "deleteError": "রিজনিং নিয়মটি মোছা যায়নি।", + "empty": "মিলে যায় এমন কোনো রিজনিং নিয়ম কনফিগার করা নেই।", + "all": "সব", + "any": "যেকোনো", + "enabled": "সক্রিয়", + "disabled": "নিষ্ক্রিয়", + "filterSearch": "নিয়ম খুঁজুন", + "filterScope": "স্কোপ অনুযায়ী ফিল্টার করুন", + "filterStatus": "স্ট্যাটাস অনুযায়ী ফিল্টার করুন", + "allModels": "সব মডেল", + "keepModel": "মডেল অপরিবর্তিত রাখুন", + "otherModel": "অন্য মডেল", + "combo": "কম্বো", + "priorityShort": "অগ্রাধিকার {value}", + "toggleAria": "{name} সক্রিয় করুন", + "edit": "সম্পাদনা করুন", + "delete": "মুছুন", + "name": "নাম", + "description": "বিবরণ", + "scopeLabel": "স্কোপ", + "apiKey": "API কী", + "sourceCombo": "উৎস কম্বো", + "connection": "সংযোগ", + "sourceModel": "উৎস মডেল বা ওয়াইল্ডকার্ড", + "sourceModelOptional": "খালি = সব মডেল", + "sourceModelExample": "যেমন gpt-5*", + "sourceEffort": "উৎস প্রচেষ্টা", + "missing": "নির্দিষ্ট নয়", + "signalOnly": "অ-বিচ্ছিন্ন রিজনিং সংকেত", + "requestTags": "অনুরোধের ট্যাগ", + "requestTagsExample": "কোডিং, অভ্যন্তরীণ", + "tagMode": "ট্যাগ মেলানো", + "effortMode": "প্রচেষ্টা মোড", + "targetEffort": "লক্ষ্য প্রচেষ্টা", + "routingTarget": "রাউটিং লক্ষ্য", + "targetModel": "লক্ষ্য মডেল", + "targetCombo": "লক্ষ্য কম্বো", + "budgetAction": "চিন্তার বাজেট", + "budgetTokens": "বাজেট টোকেন", + "priority": "অগ্রাধিকার", + "saveChanges": "পরিবর্তনগুলো সংরক্ষণ করুন", + "add": "নিয়ম যোগ করুন", + "cancel": "বাতিল করুন", + "simulateTitle": "নিয়ম সিমুলেট করুন", + "model": "মডেল", + "effort": "প্রচেষ্টা", + "transport": "ট্রান্সপোর্ট", + "simulate": "আপস্ট্রিম ছাড়াই সিমুলেট করুন", + "extendedComboWarning": "রাউটিংয়ের সময় প্রতিটি কম্বো টার্গেটের জন্য Max/Ultra আলাদাভাবে যাচাই করা হয়।", + "extendedUnknownWarning": "Max/Ultra সমর্থন যাচাই করতে একটি টার্গেট মডেল লিখুন।", + "extendedUnsupportedWarning": "শুধু উপযুক্ত Codex GPT-5.6 মডেলগুলোই Max/Ultra সমর্থন করে বলে জানা যায়। অজানা কাস্টম মডেলগুলো সার্ভার একটি সতর্কতাসহ গ্রহণ করে।", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "গ্লোবাল", + "apiKey": "API কী", + "combo": "কম্বো", + "model": "মডেল", + "connection": "সংযোগ" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "ক্লায়েন্ট থেকে উত্তরাধিকারসূত্রে নিন", + "default": "ডিফল্ট ব্যবহার করুন", + "force": "জোরপূর্বক প্রয়োগ করুন" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "অপরিবর্তিত রাখুন", + "remove": "সরান", + "set": "নির্দিষ্ট মান সেট করুন" } }, "chaosConfig": { @@ -13425,91 +13436,91 @@ "tierCommunity": "কমিউনিটি (30-দিনের বিলম্ব)", "activateTitle": "রাডার সক্রিয় করুন", "activateDescription": "রাডার ফ্রি মডেল ক্যাটালগকে কমিউনিটি-সূত্রিত বুদ্ধিমত্তা দ্বারা সমৃদ্ধ করে — আপডেটেড মডেল উপলব্ধতা, কোটা, এবং সেটআপ গাইড।", + "accessScaleTitle": "সক্রিয় করার আগে Radar অ্যাক্সেস সম্পর্কে বুঝে নিন", + "accessScaleIntro": "আপনি সম্মতি না দেওয়া পর্যন্ত Radar নেটওয়ার্কে কোনো কার্যকলাপ করে না। এই নিয়মগুলো পর্যালোচনা করার পর কমিউনিটি অ্যাক্সেস বেছে নিন অথবা একটি ব্যক্তিগত সমর্থক কী সক্রিয় করুন।", + "accessCommunityRule": "কমিউনিটি — কোনো কী প্রয়োজন নেই: ৩০ দিনের বিলম্বসহ সম্পূর্ণ ক্যাটালগ।", + "accessSingleUseRule": "স্টার + ফলো — GitHub OAuth উভয়টি যাচাই করার পর আপনার GitHub অ্যাকাউন্ট লাইভ ক্যাটালগ একবার পড়ার সুযোগ পায়; এরপর অ্যাক্সেস আবার কমিউনিটিতে ফিরে যায়। ওই অ্যাকাউন্টের জন্য এই এককালীন অ্যাক্সেস পুনরায় দেওয়া যাবে না।", + "accessContributorRule": "অবদানকারী — মার্জ করা PR, কমিট এবং লাইন শুধু সাপ্তাহিক র্যাঙ্কিংয়ের ক্রম নির্ধারণ করে। শীর্ষ ১০ জন ৩৬৫ দিন এবং ১১–১০০ র্যাঙ্কধারীরা ৯০ দিন পান; PR-এর সংখ্যা নির্বিশেষে শীর্ষ ১০০-এর বাইরের অবদানকারীরা কোনো মেয়াদ পান না। র্যাঙ্কিং থেকে বাদ পড়লেও ইতিমধ্যে দেওয়া মেয়াদ কখনো কমে না।", + "accessSupporterRule": "সমর্থক — এককালীন কেনাকাটায় স্বয়ংক্রিয় নবায়ন ছাড়াই ৬ মাস, ১ বছর বা আজীবন মেয়াদ পাওয়া যায়। কেনাকাটা, অনুদান, অবদানকারীর মেয়াদ এবং ম্যানুয়ালি দেওয়া মেয়াদ একত্রে জমা হয়; আজীবন মেয়াদ সবসময় অগ্রাধিকার পায়।", + "accessUseTitle": "ব্যক্তিগত ব্যবহার, পুনরুদ্ধার ও পর্যালোচনা", + "accessInstallationRule": "ব্যক্তিগত লাইসেন্স — একই সময়ে একটি সক্রিয় ইনস্টলেশনে কীটি ব্যবহার করুন। OmniRoute হার্ডওয়্যারের ফিঙ্গারপ্রিন্ট নেয় না। পুনরুদ্ধারের মাধ্যমে হারানো কী বাতিল ও প্রতিস্থাপন করা হয়, তবে এর মেয়াদোত্তীর্ণের তারিখ রিসেট হয় না।", + "accessAbuseRule": "অপব্যবহার পর্যালোচনা — ২৪ ঘণ্টায় ৪র্থ স্বতন্ত্র IP শুধু ম্যানুয়াল পর্যালোচনার জন্য একটি ফ্ল্যাগ তৈরি করে; এটি কখনোই স্বয়ংক্রিয়ভাবে কোনো কী ব্লক বা বাতিল করে না।", + "accessOffersRule": "লাইভ অফারগুলো ম্যানুয়ালি বাছাই করা হয় এবং পরিবর্তিত বা মেয়াদোত্তীর্ণ হতে পারে।", + "privacyTitle": "Radar কী আদান-প্রদান করে", + "privacyDownloadsRule": "ডাউনলোড — আপনার ইনস্টলেশন ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত ক্যাটালগ ও রেফারেল মেটাডেটা গ্রহণ করে; একটি বৈধ লাইভ কী স্বাক্ষরিত অফার ও Intel-ও আনলক করে।", + "privacySendsRule": "যা পাঠায় — সার্ভার-সাইড সিঙ্ক সমর্থক কীটি Bearer token হিসেবে পাঠায় এবং HTTPS অবকাঠামো সংযোগের IP গ্রহণ করে। ফিড-অনুরোধের হিসাব রাখার সময় কোনো মানই কাঁচা অবস্থায় সংরক্ষণ করা হয় না: অপব্যবহার পর্যালোচনার জন্য কী-এর হ্যাশ, সামগ্রিক ব্যবহার এবং দৈনিক পরিবর্তনশীল সংক্ষিপ্ত IP HMAC রাখা হয়।", + "privacyNeverRule": "যা কখনো সংগ্রহ করা হয় না — প্রম্পট, উত্তর, কথোপকথন, প্রোভাইডারের শংসাপত্র, মডেল ট্রাফিক, আপটাইম, ল্যাটেন্সি এবং স্থানীয় প্রোভাইডার কনফিগারেশন কখনোই Radar-এ পাঠানো হয় না।", "activateButton": "সক্রিয় করুন", "activating": "সক্রিয় হচ্ছে...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", + "keySectionTitle": "ইতিমধ্যেই একটি সমর্থক কী আছে?", + "keyInvalidFormatError": "কী-এর ফরম্যাট অবৈধ। এটি অবশ্যই \"omr_\" দিয়ে শুরু হতে হবে, যার পরে ৪০টি হেক্স অক্ষর থাকবে।", + "activateWithKeyButton": "সমর্থক কী সক্রিয় করুন", + "changeKeyButton": "কী পরিবর্তন করুন", + "claimSectionTitle": "এখনও কোনো সমর্থক কী নেই?", + "contributorButton": "আমি একজন অবদানকারী", + "contributorHint": "GitHub OAuth বর্তমান সাপ্তাহিক র্যাঙ্কিং যাচাই করে: শীর্ষ ১০ জন ৩৬৫ দিন এবং ১১–১০০ র্যাঙ্কধারীরা ৯০ দিন পান। শুধু PR-এর সংখ্যা কখনোই শীর্ষ ১০০-এর বাইরে অ্যাক্সেস দেয় না।", + "supporterButton": "প্রকল্পটিকে সমর্থন করুন", "supporterHint": "Support OmniRoute to get a supporter key with the live catalog and extra perks.", "colProvider": "প্রদানকারী", "colModel": "মডেল", "colQuota": "কোটা", + "colLimits": "রেট সীমা", + "trainsOnPrompts": "প্রম্পটের ওপর প্রশিক্ষণ দেয়", + "trainsOnPromptsHelp": "এই প্রোভাইডারের শর্তাবলিতে বলা হয়েছে যে এটি আপনার পাঠানো প্রম্পটগুলোর ওপর প্রশিক্ষণ নিতে পারে। এই ব্যাজবিহীন মডেলগুলো হয় জানায় যে তারা তা করে না, অথবা এ বিষয়ে কোনো তথ্য দেয় না — কোনো বিবৃতি না থাকা নিশ্চয়তা নয়।", + "limitsUnknownHelp": "শুধু Radar ফিড দ্বারা জানানো সীমা; এই এন্ট্রির জন্য কোনো প্রকাশিত সীমা নেই", + "contextUnknownHelp": "এই এন্ট্রির কনটেক্সট উইন্ডো অজানা", + "capabilityUnknownHelp": "ফিডে সক্ষমতাটি জানানো হয়নি", "colContext": "প্রসঙ্গ", "colCapabilities": "সক্ষমতা", "colTos": "ToS ঝুঁকি", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "নতুন", "setupGuide": "সেটআপ গাইড", "disabledByFeed": "রাডার ফিড দ্বারা নিষ্ক্রিয়", "capTools": "টুলস", "capVision": "ভিশন", "capThinking": "চিন্তা", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "ক্যাটালগ", + "freeCreditsTab": "বিনামূল্যের ক্রেডিট", + "freeCreditsSubtitle": "Radar-ট্র্যাক করা প্রোভাইডারদের রেফারেল লিংক — এগুলো ব্যবহার করতে আপনার অতিরিক্ত কোনো খরচ হয় না এবং OmniRoute-কে সহায়তা করে।", + "fixedLinksEmpty": "এখনও কোনো রেফারেল লিংক নেই। আপডেট দেখতে Radar সিঙ্ক করুন।", + "requiredActionLabel": "যা করতে হবে:", + "claimButton": "ক্রেডিট দাবি করুন", + "campaignsTitle": "সীমিত সময়ের ক্যাম্পেইন", + "campaignsEmpty": "এই মুহূর্তে কোনো সক্রিয় ক্যাম্পেইন নেই — পরে আবার দেখুন।", + "campaignsUpsellCommunity": "সীমিত সময়ের ক্যাম্পেইনগুলো সমর্থকদের জন্য অতিরিক্ত সুবিধা। এই পৃষ্ঠার নির্দিষ্ট লিংকগুলোর সবকিছু সবার জন্য বিনামূল্যেই থাকবে।", + "campaignsValidUntil": "{date} পর্যন্ত বৈধ", + "colActions": "অ্যাকশন", + "localBadge": "লোকাল", + "editModel": "সম্পাদনা করুন", + "saveModel": "সংরক্ষণ করুন", + "cancelEdit": "বাতিল করুন", + "resetModel": "লোকাল পরিবর্তনগুলো রিসেট করুন", + "hideModel": "লুকান", + "restoreModel": "পুনরুদ্ধার করুন", + "hiddenModelsTitle": "লুকানো মডেল", + "modelDisplayName": "লোকাল প্রদর্শন নাম", + "modelEnabled": "লোকালি সক্রিয়", + "localStateSaveFailed": "লোকাল Radar সেটিংস সংরক্ষণ করা যায়নি", + "guidedCombos": "নির্দেশিত কম্বো", + "offers": "অফার", + "intel": "তথ্য" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar নির্দেশিত কম্বো", + "subtitle": "Radar দ্বারা বাছাই করা সমতুল্য বিনামূল্যের মডেল থেকে অগ্রাধিকারভিত্তিক ফলব্যাক তৈরি করুন।", + "backToRadar": "Radar-এ ফিরে যান", + "loading": "কম্বোর পরামর্শ লোড হচ্ছে...", + "familyLabel": "মডেল পরিবার", + "modelsLabel": "অগ্রাধিকারের ক্রম", + "strategyReason": "অগ্রাধিকার প্রথমে সবচেয়ে বড় পুনরাবৃত্ত বিনামূল্যের বাজেট ব্যবহার করে, তারপর সক্রিয় প্রোভাইডারগুলোর মধ্যে ফলব্যাক করে।", + "generateButton": "কম্বো তৈরি করুন", + "generating": "তৈরি করা হচ্ছে...", + "alreadyCreated": "ইতিমধ্যে তৈরি করা হয়েছে", + "created": "কম্বো তৈরি হয়েছে", + "noSuggestions": "বর্তমানে কোনো যোগ্য মডেল পরিবারের অন্তত দুইটি প্রোভাইডারের সঙ্গে সক্রিয় সংযোগ নেই।", + "catalogRequired": "বাছাইকৃত মডেল পরিবারগুলো লোড করতে প্রথমে Radar ক্যাটালগ সিঙ্ক করুন।", + "loadFailed": "Radar কম্বো পরামর্শ লোড করা যায়নি।", + "createFailed": "কম্বো তৈরি করা যায়নি। আপনার প্রোভাইডার সংযোগগুলো পর্যালোচনা করে আবার চেষ্টা করুন।" }, "radarSetupPage": { "title": "প্রদানকারী সেটআপ", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "সংযোগ স্থিতিস্থাপকতা", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "আপনার সংযোগগুলো স্বয়ংক্রিয়ভাবে পুনরুদ্ধার হয়", + "reassuranceDetail": "সাধারণত কোনো পদক্ষেপের প্রয়োজন হয় না। ব্যর্থতার পর OmniRoute সাময়িকভাবে একটি সংযোগকে বিরতি দেয়, তারপর নিরাপদে আবার চেষ্টা করে।", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "অনুরোধ পাঠানো যাবে", + "coolingDown": "শিগগিরই আবার চেষ্টা করা হবে", + "lockedOut": "আপনার মনোযোগ প্রয়োজন" }, "table": { "status": "স্ট্যাটাস", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "লক্ষ্য মডেলের প্রয়োজনীয় সক্ষমতা (দৃষ্টি, সরঞ্জাম, কাঠামোবদ্ধ আউটপুট, প্রসঙ্গ উইন্ডো) অনুপস্থিত থাকলে প্রেরণের আগে অনুরোধগুলি প্রত্যাখ্যান করুন। এটি কম্বো-লেয়ার সামঞ্জস্য ফিল্টারকে বাইপাস করা সরাসরি একক-প্রদানকারী অনুরোধগুলি রক্ষা করে।", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "সরাসরি একক-মডেল অনুরোধের জন্য OmniRoute-এর স্থানীয় কনটেক্সট-উইন্ডো এবং সর্বোচ্চ-ইনপুট-টোকেন যাচাই এড়িয়ে যান। আপস্ট্রিম প্রোভাইডাররা এখনও তাদের প্রকৃত সীমা প্রয়োগ করে। প্রম্পট কম্প্রেশন এবং আউটপুট-টোকেন সীমা সক্রিয় থাকে।", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "অনুসন্ধানের পরিসংখ্যান এবং সাম্প্রতিক অনুসন্ধানে শুধু সেইসব প্রদানকারীকে গণনা করা হয়, যাদের সংযোগ এখনও সক্রিয় রয়েছে (duckduckgo-free-এর মতো কী-বিহীন প্রদানকারীকে সবসময় গণনা করা হয়)। বন্ধ থাকলে প্রদানকারী ID-সহ সংরক্ষিত প্রতিটি অনুসন্ধান সারি রাখা হয়।", "publicSystem": { "notFound": { "title": "পৃষ্ঠা পাওয়া যায়নি", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "রক্ষণাবেক্ষণ তথ্য", "service": "সেবা", "unknown": "অজানা", - "notAvailable": "n/a", + "notAvailable": "প্রযোজ্য নয়", "providersTracked": "প্রদানকারীরা ট্র্যাক করা হয়েছে", "circuitBreakerState": "প্রোভাইডার সার্কিট ব্রেকার অবস্থান", "lastUpdate": "শেষ আপডেট: {timestamp}", @@ -13848,12 +13859,12 @@ "errorPopupClosed": "অনুমোদন উইন্ডো সম্পূর্ণ করার আগে বন্ধ হয়ে গেছে।", "errorAccessTokenRequired": "অ্যাক্সেস টোকেন প্রয়োজন।", "errorImportFailed": "আমদানি ব্যর্থ হয়েছে", - "title": "Connect Trae SOLO", + "title": "Trae SOLO সংযুক্ত করুন", "authorizeDescription": "একটি পপআপে trae.ai এর মাধ্যমে অনুমোদন করুন। টোকেন আমদানি হলে পপআপটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।", "authorizeImportant": "গুরুতর: আপনাকে প্রথমে trae.aiএই ব্রাউজারে লগ ইন করতে হবে। অনুমোদন পৃষ্ঠা কেবল একটি বিদ্যমান সেশন নিশ্চিত করে — এটি আপনাকে লগ ইন করতে পারে না। যদি আপনি \"লগইন ব্যর্থ\" দেখেন, \"solo.trae.ai খুলুন\" এ ক্লিক করুন, লগ ইন করুন, তারপর এখানে ফিরে আসুন।", "waitingForAuthorization": "trae.ai এর জন্য অপেক্ষা করা হচ্ছে…", "authorizeWithBrowser": "ব্রাউজারের মাধ্যমে অনুমোদন করুন", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai খুলুন", "orPasteManually": "অথবা একটি টোকেন ম্যানুয়ালি পেস্ট করুন", "manualInstructions": "solo.trae.ai এ সাইন ইন করুন, DevTools → Network খুলুন, যেকোনো চ্যাট বার্তা পাঠান, এবং Authorization: Cloud-IDE-JWT {tokenPlaceholder} অনুরোধ হেডার থেকে JWT কপি করুন। JWT এর আয়ু ~14 দিন। ঐচ্ছিক পরিচয় ক্ষেত্রগুলি একই অনুরোধের শরীরে common_params থেকে আসে।", "accessTokenLabel": "অ্যাক্সেস টোকেন (Cloud-IDE-JWT)", @@ -14070,11 +14081,11 @@ "actionApprove": "পরিকল্পনা অনুমোদন করুন", "actionCancel": "বাতিল করুন", "actionSeeInGraph": "গ্রাফে দেখুন", + "actionRepeat": "পুনরাবৃত্তি করুন", "actionDone": "কার্যক্রম প্রয়োগ করা হয়েছে", "actionFailed": "কার্যক্রম ব্যর্থ হয়েছে: {error}", "detailFailed": "বিবরণ লোড করতে ব্যর্থ: {error}", "mirroredInA2A": "A2A-তে প্রতিফলিত", - "actionRepeat": "পুনরাবৃত্তি করুন", "repeatConfirm": "নিশ্চিত করতে আবার ক্লিক করুন", "repeatDone": "নতুন রান তৈরি হয়েছে", "repeatUnavailable": "মূল ইনপুট উপলব্ধ নেই" @@ -14088,57 +14099,57 @@ "networkError": "নেটওয়ার্ক ত্রুটি — প্রদানকারী এক্সপোজার সেটিং আপডেট করা যায়নি" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "সমর্থকদের জন্য অফার", + "subtitle": "Radar থেকে অফিসিয়াল ছাড়, ক্রেডিট, ট্রায়াল এবং পর্যালোচিত অংশীদার সুবিধা।", + "backToRadar": "Radar-এ ফিরে যান", + "loading": "অফার লোড হচ্ছে...", + "refresh": "অফার রিফ্রেশ করুন", + "refreshing": "রিফ্রেশ করা হচ্ছে...", + "loadFailed": "আমরা অফারগুলো রিফ্রেশ করতে পারিনি। সর্বশেষ যাচাইকৃত স্থানীয় ক্যাশ সংরক্ষিত আছে।", + "empty": "এই মুহূর্তে কোনো সক্রিয় অফার নেই।", + "keyRequiredTitle": "একটি সমর্থক কী প্রয়োজন", + "keyRequiredDescription": "অফারগুলো Radar-এর একটি লাইভ সুবিধা। Radar স্ক্রিনে একটি বিদ্যমান সমর্থক কী যোগ করুন, আপনার অবদানকারীর স্ট্যাটাস যাচাই করুন অথবা একটি কী পেতে প্রকল্পটিকে সমর্থন করুন।", + "contributorButton": "আমি একজন অবদানকারী", + "supporterButton": "প্রকল্পটিকে সমর্থন করুন", + "partnerBadge": "অংশীদার", + "officialBadge": "অফিসিয়াল", + "conditionsLabel": "শর্তাবলি:", + "validUntil": "{date} পর্যন্ত বৈধ", + "noExpiry": "মেয়াদ শেষ হওয়ার কোনো তারিখ ঘোষণা করা হয়নি", + "openOffer": "অফার দেখুন", + "trialDays": "{days, plural, one {# দিন} other {# দিন}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "রাডার ইন্টেলিজেন্স", + "subtitle": "Radar-এর নিজস্ব ELO র্যাঙ্কিং এবং ক্যাটালগের তথ্যভিত্তিক পরিবর্তন।", + "backToRadar": "Radar-এ ফিরে যান", + "loading": "ইন্টেল লোড হচ্ছে...", + "refresh": "ইন্টেল রিফ্রেশ করুন", + "syncing": "রিফ্রেশ হচ্ছে...", + "loadFailed": "আমরা ইন্টেল রিফ্রেশ করতে পারিনি। সর্বশেষ যাচাইকৃত স্থানীয় ক্যাশ সংরক্ষিত রয়েছে।", + "empty": "এখনও কোনো যাচাইকৃত ইন্টেল স্ন্যাপশট উপলভ্য নেই।", + "supporterBadge": "রাডার সমর্থক", + "methodology": "পদ্ধতি", + "eloMethod": "ELO, প্রাথমিক {initial}, K={factor}", + "freshness": "ক্যাটালগের হালনাগাদ অবস্থা", + "ageDays": "{days, plural, one {# দিন পুরোনো} other {# দিন পুরোনো}}", + "trend": "ক্যাটালগের প্রবণতা", + "modelDelta": "{current}টি মডেল, +{added} / -{removed}", + "ranking": "মডেল র্যাঙ্কিং", + "noRankings": "এখনও কোনো নিশ্চিত তুলনা উপলভ্য নেই।", + "model": "মডেল", + "category": "বিভাগ", + "rating": "রেটিং", + "matches": "ম্যাচ", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "সদ্য হালনাগাদ", + "aging": "পুরোনো হচ্ছে", + "stale": "অচল" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "বাড়ছে", + "stable": "স্থিতিশীল", + "shrinking": "কমছে" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "অনুরোধটি প্রদানকারীর প্রসঙ্গ উইন্ডো অতিক্রম করেছে" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference হলো OmniRoute-এর একজন ওপেন সোর্স বন্ধু", + "description": "একটি খরচভিত্তিক র্যাঙ্ক করা গেটওয়ে, যা OpenAI-সামঞ্জস্যপূর্ণ একটি এন্ডপয়েন্টের মাধ্যমে কয়েক ডজন ফ্রন্টিয়ার মডেল পুনর্বিক্রি করে—প্রতিটি অনুরোধকে সবচেয়ে সস্তা যোগ্য প্রদানকারীর কাছে রাউট করে, কখনোই তালিকাভুক্ত মূল্যের বেশি নয়।", + "cta": "একটি API Key নিন", + "partnerLinkNote": "অংশীদার লিঙ্ক", + "dismissAriaLabel": "বন্ধ করুন" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models ক্যাটালগে চিন্তার স্তরের ভ্যারিয়েন্ট (যেমন -low, -medium, -high) তৈরি করা বন্ধ করুন।" } diff --git a/src/i18n/messages/cs.json b/src/i18n/messages/cs.json index 9abb23fe98..a6d823ccdc 100644 --- a/src/i18n/messages/cs.json +++ b/src/i18n/messages/cs.json @@ -31,7 +31,7 @@ "active": "Aktivní", "inactive": "Neaktivní", "noData": "Žádné údaje k dispozici", - "nothingHere": "Nothing here yet", + "nothingHere": "Zatím zde nic není", "configure": "Konfigurovat", "manualConfig": "Ruční konfigurace", "manage": "Spravovat", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Nepodařilo se resetovat ceny", "apikey": "API klíč", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Přejít na řídicí panel", + "checkSystemStatus": "Zkontrolovat stav systému", + "selectModel": "Vybrat model", "addModel": "Přidat model", "effortNone": "Žádný", "effortLow": "Nízká", @@ -164,10 +164,10 @@ "reasoningEffort": "Úsilí při uvažování", "wireApi": "Wire API", "modelAliases": "Aliasy modelů", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Kombinace", + "noModelsFound": "Nebyly nalezeny žádné modely", + "clear": "Vymazat", + "done": "Hotovo", "selectAll": "Vybrat vše", "unselectAll": "Zrušit výběr", "visibleModels": "viditelné", @@ -184,519 +184,519 @@ "selectAllProviders": "Zkontrolovat všechny poskytovatele", "clearProviderSelection": "Zrušit zaškrtnutí poskytovatelů", "providersSelectedCount": "Zkontrolováno {count} poskytovatelů", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Došlo k chybě", + "comboDeleted": "Kombinace byla odstraněna", + "hide": "Skrýt", + "creating": "Vytváření", + "comboCreated": "Kombinace byla vytvořena", + "swapFormats": "Prohodit formáty", + "daysAgo": "Před několika dny", + "retries": "Opakované pokusy", + "errorDuringRestore": "Chyba při obnovení", + "eventsAppearHint": "Zde se zobrazí události", + "noLockouts": "Žádná blokování", + "webSearchDesc": "Popis webového vyhledávání", + "audioProvidersHeading": "Poskytovatelé zvuku", "cloudAgentProviders": "Poskytovatelé cloudových agentů", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Před několika minutami", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "Živě, automaticky se obnovuje", + "webSearch": "Webové vyhledávání", + "anthropicPrefixPlaceholder": "Zástupný text předpony Anthropic", + "addModelToCombo": "Přidat model do kombinace", + "failedToLoad": "Načtení se nezdařilo", + "categoryMedia": "Kategorie médií", + "enableCloud": "Povolit cloud", + "expirationBannerExpiringSoon": "Platnost brzy vyprší", + "retry": "Zkusit znovu", + "embeddings": "Vektorové reprezentace", + "errorCount": "Počet chyb", + "backupReasonManual": "Ruční zálohování", + "safeSearchModerate": "Středně přísné bezpečné vyhledávání", + "activeLimiters": "Aktivní omezovače", + "a2aCardTitle": "Název karty A2A", + "cloudWorkerUnreachable": "Cloud Worker je nedostupný", + "testFailed": "Test se nezdařil", + "compatibleBaseUrlHint": "Nápověda ke kompatibilní základní URL", + "usageTracking": "Sledování využití", + "disableCloudTitle": "Název pro deaktivaci cloudu", + "noConnections": "Žádná připojení", + "providerHealth": "Stav poskytovatele", + "confirmDbImport": "Potvrdit import databáze", + "notAvailableSymbol": "Symbol nedostupnosti", + "backupsAvailable": "Dostupné zálohy", + "providerAuto": "Automatický výběr poskytovatele", + "newProviderNamePlaceholder": "Zástupný text názvu nového poskytovatele", + "a2aQuickStartStep2": "Krok 2 rychlého startu A2A", + "ok": "OK", + "available": "Dostupné", + "noBackupYet": "Zatím žádná záloha", + "more": "Více", + "noCompatibleYet": "Zatím žádný kompatibilní poskytovatel", + "multiProvider": "Více poskytovatelů", + "repairEnvHint": "Nápověda k opravě prostředí", + "disablingCloud": "Deaktivace cloudu", + "testBench": "Testovací prostředí", + "valid": "Platné", + "cloudBenefitShare": "Sdílení výhod cloudu", + "mcpCardTitle": "Název karty MCP", + "disableConfirm": "Potvrdit deaktivaci", + "filters": "Filtry", + "expirationBannerExpiredDesc": "Popis banneru po vypršení platnosti", + "saveComboDefaults": "Uložit výchozí kombinace", + "cloudConnectedVerified": "Připojení ke cloudu ověřeno", + "uptime": "Doba provozu", + "compatibleProdPlaceholder": "Zástupný text kompatibilního produkčního prostředí", + "fallbackChainsTitle": "Název řetězců náhradních poskytovatelů", + "oauthLabel": "Popisek OAuth", + "a2aCardDescription": "Popis karty A2A", + "okShort": "OK", + "maintenance": "Údržba", + "formatConverter": "Převodník formátů", + "zedImportNetworkError": "Chyba sítě při importu ze Zed", + "apiKeyLabel": "Popisek klíče API", + "noModelsForProvider": "Pro poskytovatele nejsou k dispozici žádné modely", + "mcpCardDescription": "Popis karty MCP", + "apiTypeLabel": "Popisek typu API", + "configuredProvidersLabel": "Popisek nakonfigurovaných poskytovatelů", + "maxRetriesLabel": "Popisek maximálního počtu opakování", + "title": "Název", + "output": "Výstup", + "prefixHint": "Nápověda k prefixu", + "skipWizard": "Přeskočit průvodce", + "failedCount": "Počet neúspěšných", + "confirmDbImportDesc": "Popis potvrzení importu databáze", + "entries": "Položky", + "until": "Do", + "disableCombo": "Zakázat kombinaci", + "liveMonitorDescriptionPrefix": "Prefix popisu živého monitorování", + "runningCount": "Počet spuštěných", + "noActiveConnectionsInGroup": "Ve skupině nejsou žádná aktivní připojení", + "savedSuccessfully": "Úspěšně uloženo", + "systemStorage": "Systémové úložiště", + "videoDesc": "Popis videa", + "maxResults": "Maximální počet výsledků", + "timeRangeMonth": "Časový rozsah: měsíc", + "testSummary": "Souhrn testu", + "failedSetPassword": "Nastavení hesla se nezdařilo", + "audio": "Zvuk", + "restore": "Obnovit", + "disableWarning": "Upozornění na zakázání", + "moderationsDesc": "Popis moderování", + "providerHealthStatusAria": "ARIA popisek stavu poskytovatele", + "modelNamePlaceholder": "Zástupný text názvu modelu", + "mcpQuickStartStep2": "Krok 2 rychlého spuštění MCP", + "quickStart": "Rychlé spuštění", + "fullExportFailedWithError": "Úplný export selhal s chybou", + "loadingBackups": "Načítání záloh", + "anthropicBaseUrlPlaceholder": "Zástupný text základní URL adresy Anthropic", + "description": "Popis", + "noProviderFound": "Nebyl nalezen žádný poskytovatel", + "auto": "Automaticky", + "protocolsDescription": "Popis protokolů", + "cloudSessionNote": "Poznámka ke cloudové relaci", + "advancedSettings": "Pokročilá nastavení", + "defaultStrategy": "Výchozí strategie", + "purgeExpiredLogs": "Vymazat protokoly s prošlou platností", + "justNow": "Právě teď", + "providerTestFailed": "Test poskytovatele se nezdařil", + "openaiBaseUrlPlaceholder": "Zástupný text základní URL Openai", + "image": "Obrázek", + "failedCreateChain": "Řetězec se nepodařilo vytvořit", + "importDatabase": "Importovat databázi", + "allDataLocal": "Všechna data jsou místní", + "sectionTitle": "Nadpis sekce", + "failedToggle": "Přepnutí se nezdařilo", + "editCombo": "Upravit kombinaci", + "testResults": "Výsledky testu", + "searchQuery": "Vyhledávací dotaz", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", + "duplicate": "Duplikovat", + "createCombo": "Vytvořit kombinaci", + "searchTypeWeb": "Typ vyhledávání: web", + "addChain": "Přidat řetězec", + "prefixLabel": "Popisek předpony", + "listModelsDesc": "Popis seznamu modelů", + "databaseSize": "Velikost databáze", + "chainCreated": "Řetězec byl vytvořen", + "providerTestTimeout": "Vypršel časový limit testu poskytovatele", + "routingStrategy": "Strategie směrování", + "translateAction": "Akce překladu", + "exportFailed": "Export se nezdařil", + "connectedVerificationPending": "Připojeno, čeká se na ověření", + "a2aQuickStartTitle": "Nadpis rychlého startu A2A", + "couldNotTest": "Test nebylo možné provést", + "testAllCompatible": "Otestovat všechny kompatibilní", + "anthropicCompatibleName": "Název kompatibilní s Anthropic", + "disabling": "Deaktivace", + "failedEnable": "Aktivace se nezdařila", + "categoryUtility": "Kategorie: nástroje", + "customUrlOptional": "Volitelná vlastní URL", + "localProviders": "Místní poskytovatelé", + "comboNamePlaceholder": "Zástupný text názvu kombinace", + "memoryRss": "Rezidentní paměť (RSS)", + "disableProvider": "Zakázat poskytovatele", + "welcomeDesc": "Popis uvítání", + "nameLabel": "Popisek názvu", + "allOperational": "Vše v provozu", + "backupNow": "Zálohovat nyní", + "providerMaxRetriesAria": "ARIA popisek maximálního počtu opakovaných pokusů poskytovatele", + "textToSpeechDesc": "Popis převodu textu na řeč", + "machineId": "ID zařízení", + "globalProxy": "Globální proxy", + "hitsMisses": "Zásahy a minutí", + "testDesc": "Popis testu", + "chatDesc": "Popis chatu", + "importSuccess": "Import byl úspěšný", "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", - "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "a2aQuickStartStep1": "1. krok rychlého spuštění A2A", + "importFailed": "Import se nezdařil", + "inputPlaceholder": "Zástupný text vstupu", + "providerModelsTitle": "Název modelů poskytovatele", + "lastBackup": "Poslední záloha", + "yourEndpoint": "Váš koncový bod", + "autoDisableThresholdDesc": "Popis prahové hodnoty automatického zakázání", + "rerankDesc": "Popis přeřazení", + "modelsPathPlaceholder": "Zástupný text cesty k modelům", + "noCombosYet": "Zatím žádné kombinace", + "connectedVerificationPendingWithError": "Připojeno, čeká se na ověření s chybou", + "comboDefaultsGuideHint1": "1. tip průvodce výchozím nastavením kombinace", + "enableCloudTitle": "Povolit cloud", + "configuredProvidersHint": "Nápověda ke konfigurovaným poskytovatelům", + "paused": "Pozastaveno", + "llmProviders": "Poskytovatelé LLM", + "enableCombo": "Povolit kombinaci", + "removeProviderOverrideAria": "ARIA popisek odebrání přepsání poskytovatele", + "nodeVersion": "Verze Node", + "openai": "OpenAI", + "exportFailedWithError": "Export se nezdařil s chybou", + "proxyConfigured": "Proxy je nakonfigurována", + "concurrencyPerModel": "Souběžnost na model", + "protocolTasksLabel": "Popisek úloh protokolu", + "oauthProviders": "Poskytovatelé OAuth", + "lockedCount": "Počet uzamčených", + "deleteChainConfirm": "Potvrzení odstranění řetězce", + "recentTranslations": "Nedávné překlady", + "zedImportButton": "Tlačítko importu Zed", + "responsesDesc": "Popis odpovědí", + "testedCount": "Počet otestovaných", + "providersCommaSeparatedPlaceholder": "Zástupný text pro poskytovatele oddělené čárkami", + "signatureDefaults": "Výchozí nastavení podpisu", + "errorCreating": "Chyba při vytváření", + "timeRangeYear": "Časový rozsah: rok", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Cloud byl úspěšně deaktivován", + "deleteConfirm": "Potvrzení odstranění", + "check": "Zkontrolovat", + "safeSearch": "Bezpečné vyhledávání", + "protocolLastActivity": "Poslední aktivita protokolu", + "openMcpDashboard": "Otevřít řídicí panel Mcp", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Popisek cesty chatu", + "retryDelay": "Prodleva před opakováním", + "errorUpdating": "Chyba při aktualizaci", + "ideCliIntegrations": "Integrace IDE a CLI", + "imageGeneration": "Generování obrázků", + "apiKeyRequired": "Je vyžadován klíč API", + "resetAllTitle": "Obnovit vše", + "connectionError": "Chyba připojení", + "modelName": "Název modelu", + "apiKeyForCheck": "Klíč API pro kontrolu", + "cloudRequestTimeout": "Vypršel časový limit cloudového požadavku", + "showConfiguredOnly": "Zobrazit pouze nakonfigurované", "showFreeOnly": "Pouze zdarma", "addFirstProvider": "Přidejte svého prvního poskytovatele", "addFirstProviderDesc": "Připojte poskytovatele AI a začněte směrovat požadavky přes OmniRoute. Můžete použít bezplatné poskytovatele, klíče API nebo účty OAuth.", "learnMore": "Zjistěte více", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Zahrnout domény", + "promptCache": "Mezipaměť promptů", + "cloudConnected": "Cloud je připojen", + "deleteChain": "Odstranit řetězec", + "chatPathPlaceholder": "Zástupný text cesty chatu", + "databasePath": "Cesta k databázi", + "usingLocalServer": "Používá se místní server", + "globalComboConfig": "Globální kombinovaná konfigurace", + "backupFailed": "Zálohování se nezdařilo", + "tabProtocols": "Karta Protokoly", + "continue": "Pokračovat", + "categorySearch": "Vyhledávání kategorií", + "rateLimitStatus": "Stav omezení rychlosti", + "repairEnvSuccess": "Oprava prostředí proběhla úspěšně", + "nameRequired": "Název je povinný", + "country": "Země", + "trackMetricsDesc": "Popis sledování metrik", + "durationSecondsShort": "Doba trvání (s)", + "formatConverterDescription": "Popis převodníku formátů", + "cloudBenefitAccess": "Přístup k výhodám cloudu", + "maxRetries": "Maximální počet opakování", + "queueTimeout": "Časový limit fronty", "queueDepth": "Hloubka fronty", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Přidat poskytovatele", + "realtime": "V reálném čase", + "totalTranslations": "Celkem překladů", + "protocolActiveStreamsLabel": "Aktivní streamy protokolu", + "repairEnv": "Opravit prostředí", + "modelsCount": "Počet modelů", + "viewBackups": "Zobrazit zálohy", + "responsesApi": "Responses API", + "copyComboName": "Kopírovat název kombinace", + "failures": "Selhání", + "failedUpdate": "Aktualizace se nezdařila", + "imageDesc": "Popis obrázku", + "failedCreate": "Vytvoření se nezdařilo", + "remainingOfLimit": "Zbývá z limitu", + "protocolsTitle": "Protokoly", + "expirationBannerExpiringSoonDesc": "Popis upozornění na blížící se vypršení platnosti", + "source": "Zdroj", + "failed": "Neúspěšné", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "1. krok rychlého spuštění MCP", + "runTest": "Spustit test", + "loadingFallbackChains": "Načítání záložních řetězců", + "healthy": "V pořádku", + "version": "Verze", + "saveBlockWeighted": "Uložit vážený blok", + "zedImportNone": "Žádné položky k importu ze Zed", + "noBackupsYet": "Zatím žádné zálohy", + "noGlobalProxy": "Žádný globální proxy server", + "noModels": "Žádné modely", + "stickyLimit": "Limit přidružení", + "passedCount": "Počet úspěšných", + "zedImportFailed": "Import ze Zed se nezdařil", + "saving": "Ukládání", + "testAll": "Otestovat vše", + "globalProxyDesc": "Popis globálního proxy", + "latencyP99": "Latence P99", + "connectingToCloud": "Připojování ke cloudu", + "responses": "Odpovědi", + "errorDeleting": "Chyba při odstraňování", + "openaiPrefixPlaceholder": "Zástupný text prefixu Openai", + "enterPassword": "Zadejte heslo", + "openA2aDashboard": "Otevřít řídicí panel A2A", + "enableProvider": "Povolit poskytovatele", + "modeTest": "Režim testování", + "failedDeleteChain": "Řetězec se nepodařilo odstranit", + "providerDesc": "Popis poskytovatele", + "templateLoadHint": "Nápověda k načtení šablony", + "lastFailure": "Poslední selhání", + "moveDown": "Posunout dolů", + "providerLabel": "Označení poskytovatele", + "clearCacheFailed": "Vymazání mezipaměti se nezdařilo", + "imagesGenerations": "Generování obrázků", + "repairEnvWorking": "Oprava pracovního prostředí", + "millisecondsShort": "ms", + "globalLabel": "Globální označení", + "failuresPlural": "Selhání", + "completionsLegacyDesc": "Popis staršího rozhraní completions", + "searchProviders": "Hledat poskytovatele", + "chatPathHint": "Nápověda k cestě chatu", + "defaultStrategyDesc": "Popis výchozí strategie", + "latencyP95": "Latence P95", + "textToSpeech": "Převod textu na řeč", + "searchType": "Typ vyhledávání", + "messages": "Zprávy", + "aggregatorsGateways": "Agregátory a brány", + "comboStrategyAria": "Kombinovaná strategie Aria", + "input": "Vstup", + "testingConnection": "Testování připojení", + "excludeDomains": "Vyloučit domény", + "webCookieProviders": "Poskytovatelé webových cookies", + "allTestsPassed": "Všechny testy proběhly úspěšně", + "openaiCompatibleName": "Název kompatibilní s Openai", + "warningCostOptimizedPartialPricing": "Upozornění na částečné ceny optimalizované podle nákladů", + "comboDefaultsGuideTitle": "Název průvodce výchozím nastavením kombinací", + "hoursAgo": "Před hodinami", + "notAvailable": "Není k dispozici", + "skipAndContinue": "Přeskočit a pokračovat", + "moderations": "Moderování", + "proxyConfig": "Konfigurace proxy", + "upstreamProxyProviders": "Poskytovatelé nadřazených proxy serverů", + "exportAll": "Exportovat vše", + "queuedCount": "Počet ve frontě", + "resetAll": "Obnovit vše", + "noTranslations": "Žádné překlady", + "avgLatency": "Průměrná latence", + "throttleStatus": "Stav omezení", + "backupRetentionDesc": "Popis uchovávání záloh", + "noCBData": "Žádná data CB", + "chainDeleted": "Řetězec byl odstraněn", + "timeLeft": "Zbývající čas", + "expirationBannerExpired": "Banner vypršení platnosti – platnost vypršela", + "language": "Jazyk", + "invalidFileType": "Neplatný typ souboru", + "monitoredProviders": "Sledovaní poskytovatelé", + "errors": "Chyby", + "heap": "Halda", + "chatCompletions": "Dokončování chatu", + "exampleTemplatesHint": "Nápověda k ukázkovým šablonám", + "retryDelayLabel": "Popisek zpoždění opakování", + "audioTranscription": "Přepis zvuku", + "fallbackChainsDesc": "Popis záložních řetězců", + "exampleTemplates": "Ukázkové šablony", + "connectionsCount": "Počet připojení", + "modelsPathLabel": "Popisek cesty k modelům", + "activeProvidersHint": "Nápověda k aktivním poskytovatelům", + "activeLockouts": "Aktivní blokování", + "invalid": "Neplatné", + "skipPassword": "Přeskočit heslo", + "moveUp": "Posunout nahoru", + "timeRange": "Časový rozsah", + "stickyLimitDesc": "Popis pevného limitu", + "cloudBenefitEdge": "Výhoda cloudu: Edge", + "custom": "Vlastní", + "verifying": "Ověřování", + "baseUrlLabel": "Popisek základní URL", + "setPassword": "Nastavit heslo", + "safeSearchStrict": "Přísné bezpečné vyhledávání", + "noChangesSinceBackup": "Od zálohy nedošlo k žádným změnám", + "modelsPathHint": "Nápověda k cestě k modelům", + "audioTranscriptions": "Přepisy zvuku", + "testCombo": "Otestovat kombinaci", + "mcpQuickStartTitle": "Rychlý start s MCP", + "comboUpdated": "Kombinace aktualizována", + "weighted": "Vážené", + "providers": "Poskytovatelé", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Popis chybějících záložních řetězců", + "yesImport": "Ano, importovat", + "lockoutsAutoRefreshHint": "Nápověda k automatickému obnovení blokací", + "tabApis": "Karta API", + "sectionDescription": "Popis sekce", + "filter": "Filtrovat", + "purgeLogsFailed": "Vymazání protokolů se nezdařilo", + "latency": "Latence", + "testAllOAuth": "Otestovat všechna OAuth", + "mcpQuickStartStep3": "Krok 3 rychlého startu s MCP", + "repairEnvFailed": "Oprava prostředí se nezdařila", + "zedImportHint": "Nápověda k importu ze Zed", + "modelsAcrossEndpoints": "Modely napříč koncovými body", + "autoDisableBannedAccounts": "Automaticky deaktivovat zablokované účty", + "securityDesc": "Popis zabezpečení", + "listModels": "Vypsat modely", + "backupRestore": "Zálohování a obnovení", + "target": "Cíl", + "zedImportSuccess": "Import ze Zed byl úspěšný", + "lastHeaderUpdate": "Poslední aktualizace hlavičky", + "categoryCore": "Kategorie Jádro", + "noFallbackChains": "Žádné záložní řetězce", + "noSearchProviders": "Žádní poskytovatelé vyhledávání", + "autoBalance": "Automatické vyvažování", + "noModelsYet": "Zatím žádné modely", + "signatureFamily": "Rodina podpisů", + "externalApiCalls": "Externí volání API", + "providerOverridesDesc": "Popis přepsání poskytovatelů", + "signatureTool": "Nástroj pro podpisy", + "connectionFailed": "Připojení se nezdařilo", + "activeLimitersPlural": "Aktivní omezovače", + "doneDesc": "Popis dokončení", + "down": "Mimo provoz", + "noDataYet": "Zatím žádná data", + "activeProviders": "Aktivní poskytovatelé", + "nameInvalid": "Neplatný název", + "skip": "Přeskočit", + "createChain": "Vytvořit řetězec", + "audioSpeech": "Zvuková řeč", + "cacheCleared": "Mezipaměť vymazána", + "searchTypeNews": "Typ vyhledávání: zprávy", + "durationMillisecondsShort": "Doba trvání v ms", + "addOpenAICompatible": "Přidat kompatibilní s OpenAI", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "Zařazeno do fronty", + "domainPlaceholder": "Zástupný text domény", + "durationMinutesShort": "Doba trvání v min", + "verifyingConnection": "Ověřování připojení", + "imageProviders": "Poskytovatelé obrázků", + "protocolToolsLabel": "Popisek nástrojů protokolu", + "queryPlaceholder": "Zástupný text dotazu", + "videoGeneration": "Generování videa", + "timeRangeWeek": "Časové období: týden", + "limitExhausted": "Limit vyčerpán", + "failedDisable": "Zakázání se nezdařilo", + "inMemoryNote": "Poznámka k ukládání v paměti", + "compatibleHint": "Tip ke kompatibilitě", + "errorShort": "Chyba", + "advancedHint": "Tip k pokročilým nastavením", + "restoreFailed": "Obnovení se nezdařilo", + "searchProvidersHeading": "Nadpis poskytovatelů vyhledávání", + "comboName": "Název kombinace", + "autoDisableDescription": "Popis automatického zakázání", + "embeddingsDesc": "Popis vektorových reprezentací", + "operational": "Provozuschopné", + "testAllApiKey": "Otestovat všechny klíče API", + "backupCreated": "Záloha vytvořena", + "errorDuringImport": "Chyba při importu", + "comboDefaultsGuideHint2": "Nápověda k výchozím hodnotám kombinace 2", + "connecting": "Připojování", + "fillModelAndProviders": "Vyplňte model a poskytovatele", + "syncing": "Synchronizace", + "resetConfirm": "Potvrzení obnovení", + "trackMetrics": "Sledovat metriky", + "successful": "Úspěšné", + "recovering": "Obnovování", + "autoDisableThreshold": "Prahová hodnota automatického zakázání", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Synchronizace dat", + "cloudBenefitPorts": "Výhody cloudu – porty", + "compatibleProviders": "Kompatibilní poskytovatelé", "freeTierProviders": "Poskytovatelé bezplatných úrovní", "freeTierLabel": "Volná úroveň k dispozici", "freeTierProvidersDesc": "Poskytovatelé s bezplatnými úrovněmi – někteří vyžadují registraci klíče API, jiní nepotřebují vůbec žádné přihlašovací údaje.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Vymazat mezipaměť", + "reqs": "Požadavky", + "addAnthropicCompatible": "Přidat poskytovatele kompatibilního s Anthropic", + "apiKeyProviders": "Poskytovatelé API klíčů", + "tabsAria": "ARIA karet", + "resetting": "Obnovování", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Důvod zálohy před obnovením", + "disableCloud": "Zakázat cloud", + "newProviderNameAria": "ARIA názvu nového poskytovatele", + "passwordsMismatch": "Hesla se neshodují", + "a2aQuickStartStep3": "Rychlý start A2A – krok 3", + "liveMonitorDescriptionSuffix": "Přípona popisu živého monitorování", + "failedAddProvider": "Poskytovatele se nepodařilo přidat", + "addAtLeastOneProvider": "Přidejte alespoň jednoho poskytovatele", + "reasonSeparator": "Oddělovač důvodu", + "zedImporting": "Import do Zed", + "confirmPasswordPlaceholder": "Potvrďte heslo", + "whatYouGet": "Co získáte", + "signatureSession": "Relace podpisu", + "errorCountNoCode": "Počet chyb bez kódu", + "testing": "Testování", + "providersCommaSeparated": "Poskytovatelé oddělení čárkami", + "exportDatabase": "Exportovat databázi", + "hitRate": "Míra zásahů", + "completionsLegacy": "Dokončení (zastaralé)", + "removeModel": "Odebrat model", + "timeRangeDay": "Časový rozsah: den", + "cloudRequestFailed": "Cloudový požadavek selhal", + "updatedAt": "Aktualizováno", + "monitoredProvidersHint": "Nápověda k monitorovaným poskytovatelům", + "connectionSuccessful": "Připojení bylo úspěšné", + "latencyP50": "Latence P50", + "logsDeleted": "Protokoly byly odstraněny", + "chatTester": "Tester chatu", + "safeSearchOff": "Bezpečné vyhledávání vypnuto", + "nameHint": "Nápověda k názvu", + "debugToggle": "Přepínač ladění", + "embedding": "Vkládání", + "issuesLabel": "Označení problémů", + "optionAny": "Možnost Libovolná", + "maxNestingDepth": "Maximální hloubka vnoření", + "rerank": "Přeřazení", + "checking": "Probíhá kontrola", + "getStarted": "Začít", + "restoreSuccess": "Obnovení bylo úspěšné", + "issuesDetected": "Zjištěny problémy", + "signatureCache": "Mezipaměť podpisů", + "modelLockouts": "Blokace modelů", + "usingCloudProxy": "Používá se cloudový proxy server", + "loadingHealth": "Načítání stavu", + "providerOverrides": "Přepsání nastavení poskytovatelů", + "audioTranscriptionDesc": "Popis přepisu zvuku", + "learnedFromHeaders": "Zjištěno z hlaviček", + "totalRequests": "Celkový počet požadavků", + "cloudUnstableNote": "Poznámka k nestabilitě cloudu", "gamificationAdmin": "Správce gamifikace", "monitorAnomaliesAndHealth": "Sledujte anomálie a stav systému", "flaggedAnomalies": "Označené anomálie", @@ -704,7 +704,7 @@ "apiKey": "Klíč API", "xpLastHour": "XP (1 h)", "zScore": "Z-skóre", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Podezřelé", "tokensCommunityServers": "Komunitní servery", "tokensServerNamePlaceholder": "Název serveru", "tokensApiKeyPlaceholder": "API klíč", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Načítání dalších…", "recommended": "Doporučeno", "understand": "Rozumím", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", + "batchConceptTitle": "Dávkové zpracování", + "batchConceptSubtitle": "Zpracujte tisíce požadavků asynchronně za přibližně 50 % nákladů (v rámci 24 hodin). Ideální pro vyhodnocování, klasifikaci a vkládání.", + "batchConceptHowItWorks": "Jak to funguje", + "batchConceptBenefit50pct": "50% sleva na vstupní a výstupní tokeny", + "batchConceptAsync24h": "Asynchronní zpracování s dokončením do 24 hodin", + "batchConceptUseCases": "Nejvhodnější pro hromadnou klasifikaci, vyhodnocování a vkládání", + "batchHeaderSubtitle": "Spusťte mnoho požadavků jako jednu úlohu", + "batchStep1": "1 · Nahrát JSONL", + "batchStep1Desc": "Přidat požadavky", + "batchStep2": "2 · Vytvořit dávku", + "batchStep2Desc": "Spustit úlohu", + "batchStep3": "3 · Získat výsledky", + "batchStep3Desc": "Stáhnout výstup", + "filesConceptTitle": "Dávkové soubory", + "filesConceptSubtitle": "Soubory JSONL používané dávkami: vstupní požadavky, výsledky a chyby.", + "filesConceptInput": "Vstup — váš soubor JSONL s jedním požadavkem na řádek", + "filesConceptOutput": "Výstup — výsledky dokončených požadavků", + "filesConceptError": "Chyby — požadavky, které selhaly", + "filesConceptRetention": "Uchovávání: ve výchozím nastavení 30 dní (29 dní u Anthropic)", + "wizardTitle": "Nová dávka", + "wizardClose": "Zavřít", + "wizardNext": "Další", + "wizardBack": "Zpět", + "wizardCancel": "Zrušit", + "wizardCreate": "Vytvořit dávku", + "wizardCreating": "Vytváření…", + "wizardStep1Destination": "Cíl", + "wizardStep2Input": "Vstup", + "wizardStep3Validate": "Ověřit", + "wizardStep4Cost": "Cena a vytvoření", + "wizardProviderLabel": "Poskytovatel", + "wizardEndpointLabel": "Koncový bod", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (převedeme ho)", + "wizardDropOrPick": "Přetáhněte sem soubor nebo kliknutím vyberte", + "wizardCsvMappingTitle": "Namapovat sloupce CSV → pole požadavku", + "wizardCsvMappingAddField": "Přidat pole", "wizardCsvNoColumns": "V hlavičce CSV nebyly detekovány žádné sloupce.", "wizardCsvIgnoreColumn": "— ignorovat —", "wizardCsvCustomIdMapped": "custom_id namapováno", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} řádků zpracováno", "wizardCsvRowsSkipped": "{count} řádků přeskočeno", "wizardCsvRowError": "Řádek {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Všechny řádky jsou platné", "wizardValidating": "Ověřování…", "wizardValidationParseFailed": "Ověření selhalo — nepodařilo se analyzovat obsah.", "wizardValidationSummary": "{lines} řádků · {ids} unikátních custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Detekovány duplicitní custom_ids:", "wizardValidationFirstErrors": "Chyby (prvních {count}):", "wizardValidationLine": "Řádek {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Chyby ověření", + "wizardValidationPreview": "Náhled (prvních 5 požadavků)", + "wizardValidationSamplingNote": "Soubor je velký — byl ověřen pomocí vzorku (prvních 1000 a posledních 100 řádků). Úplné ověření proběhne na serveru.", + "wizardCostSync": "Cena synchronního zpracování", + "wizardCostBatch": "Cena dávkového zpracování (-50 %)", + "wizardCostSavings": "Úspora", + "wizardCostEstimatedNotice": "Odhadovaná cena — skutečná fakturace se může lišit.", + "wizardErrorUpload": "Soubor se nepodařilo nahrát. Zkuste to znovu.", + "wizardErrorCreate": "Dávku se nepodařilo vytvořit. Zkuste to znovu.", + "wizardEmptyProviders": "Chcete-li vytvořit dávku, připojte poskytovatele s podporou dávkového zpracování (OpenAI, Anthropic nebo Gemini).", + "uploadModalTitle": "Nahrát dávkový soubor", + "uploadModalDropOrPick": "Přetáhněte sem soubor .jsonl nebo kliknutím vyberte", + "uploadModalUpload": "Nahrát", + "uploadModalCancel": "Zrušit", + "uploadModalError": "Nahrání se nezdařilo. Zkuste to znovu.", + "uploadModalSuccess": "Nahráno", + "uploadModalSizeLimit": "Max. 512 MB", + "batchListNewButton": "Nová dávka", + "batchListAutoRefresh": "Automatické obnovení po 30 s", + "batchListCostColumn": "Náklady", + "batchActionCancel": "Zrušit", + "batchActionDownloadOutput": "Stáhnout výstup", + "batchActionDownloadErrors": "Stáhnout chyby", + "batchActionRetry": "Opakovat neúspěšné", + "batchActionRetryConfirm": "Opakovat {n} neúspěšných požadavků? Konečné náklady závisí na skutečně spotřebovaných tokenech.", + "expirationBadgeCritical": "Kritické", + "expirationBadgeWarning": "Brzy", + "expirationBadgeNormal": "Čeká na vyřízení", + "expirationBadgeExpired": "Vypršelo", + "filesListUploadButton": "Nahrát", + "filesListUsedByColumn": "Používá", + "filesListUsedByNone": "Žádné", + "filesListUsedByRoleInput": "vstup", + "filesListUsedByRoleOutput": "výstup", + "filesListUsedByRoleError": "chyba", + "filesListSizeColumn": "Velikost", + "batchListProgressPartial": "(částečné)", + "batchListProviderColumn": "Poskytovatel", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "Ostatní", + "batchListTitle": "Dávky", + "batchListCount": "Počet dávek: {count}", + "batchListRemovingCompleted": "Odebírání…", + "batchListRemoveCompleted": "Odebrat dokončené", + "batchListTableStatus": "Stav", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Koncový bod", "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableProgress": "Průběh", + "batchListTableCreated": "Vytvořeno", + "batchListTableExpires": "Vyprší", + "batchListLoading": "Načítání…", + "batchListEmpty": "Nebyly nalezeny žádné dávky", + "batchListValidating": "Ověřování…", + "batchStatusAll": "Všechny stavy", + "batchStatusInProgress": "Probíhá", + "batchStatusValidating": "Ověřování", + "batchStatusFinalizing": "Dokončování", + "batchStatusCompleted": "Dokončeno", + "batchStatusFailed": "Selhalo", + "batchStatusCancelled": "Zrušeno", + "batchStatusCancelling": "Rušení", + "batchStatusExpired": "Vypršelo", + "batchStatusCompletedWithFailures": "dokončeno s chybami", + "batchStatusInProgressWithFailures": "probíhá (s chybami)", + "batchStatusFinalizingWithFailures": "dokončování (s chybami)", + "batchStatusCancelledWithFailures": "zrušeno s chybami", + "batchStatusExpiredWithFailures": "vypršelo (částečně)", + "wizardCostEstimating": "Odhad nákladů…", + "wizardCostRequests": "Požadavky", + "wizardCostInputTok": "vstupní tokeny", + "wizardCostOutputTok": "výstupní tokeny", + "wizardCostWindow": "Okno", + "wizardDestinationSelectProvider": "Vyberte poskytovatele…", + "wizardDestinationSelectModel": "Vyberte model…", + "wizardDestinationConnectProvider": "Připojit poskytovatele", + "batchListBatchCreated": "Dávka {id} byla vytvořena — aktualizace seznamu…", + "batchListBatchCreatedDismiss": "Zavřít", + "batchListRefreshing": "Aktualizace…", + "batchListRefresh": "Aktualizovat", + "uploadFileModalRemove": "Odebrat", + "uploadFileModalUploading": "Nahrávání…", + "wizardInputReading": "Načítání souboru…", + "wizardInputReady": "Připraveno", + "wizardInputLargeFileLabel": "Velký soubor — ověření vzorku", + "wizardInputCsvJsonlReady": "Soubor JSONL byl vygenerován — připraven k ověření.", + "wizardInputLargeFileWarning": "Byl zjištěn velký soubor — ověření probíhá na vzorku (prvních 5 MB + posledních 100 KB). Úplné ověření proběhne na straně serveru.", + "wizardCostWindow24h": "24hodinové okno pro dokončení", + "wizardValidationFieldsOk": "povinná pole jsou platná", + "filesListDelete": "Smazat", + "filesListDownload": "Stáhnout", + "batchDetailActionCancel": "Zrušit dávku", + "batchDetailActionRetry": "Zopakovat neúspěšné požadavky", + "batchDetailCancelling": "Rušení…", + "batchDetailRetrying": "Příprava opakování…", + "batchDetailCancelConfirm": "Zrušit tuto dávku? Probíhající požadavky budou zastaveny.", + "batchActionCancelError": "Dávku se nepodařilo zrušit. Zkuste to znovu.", + "batchActionRetryError": "Neúspěšné požadavky se nepodařilo zopakovat. Zkuste to znovu.", + "batchConceptRetentionNote": "Výsledky a soubory s chybami jsou uchovávány po dobu 30 dnů (Anthropic: 29 dnů)", "batchFilesSizeColumn": "Velikost", "toggleNoAuthProvider": "Přepnout poskytovatele bez autentizace", "loadingModels": "Načítání modelů…", @@ -988,14 +988,14 @@ "disabled": "Zakázáno", "featureFlagOmnirouteEmergencyFallbackDescription": "Směrovat požadavky s vyčerpaným rozpočtem na nouzového bezplatného záložního poskytovatele/model.", "featureFlagArenaEloSyncEnabledDescription": "Povolit periodickou synchronizaci ELO z žebříčku Arena AI pro hodnocení inteligence modelů.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Generovat a vkládat souhrny konverzací, když kombinované směrování přepíná mezi modely. Vypnutím se přepnutí modelů budou zpracovávat nezávisle a zabrání se požadavkům na předání na pozadí u všech stávajících i budoucích kombinací.", "featureFlagExposeCcDiscoveryAliasesDescription": "Inzerujte claude/<provider>/<model> zrcadlové ID na /v1/models, aby seznam objevování modelů brány Claude Code zahrnoval modely, které nejsou Claude. Upozornění: při globálním povolení zdvojuje katalogové položky pro všechny klienty.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Hlavní přepínač pro aliasy brány no-think/<provider>/<model>. Zapnuto (výchozí): /v1/models uvádí variantu bez přemýšlení pro každý podporovaný model Claude schopný přemýšlení a id no-think/ odeslané v požadavku se převede zpět na skutečný model s potlačeným uvažováním. Vypnuto: žádné varianty nejsou uváděny a id no-think/ se považuje za jakékoli jiné neznámé id modelu. Přihlášení či odhlášení jednotlivých modelů prostřednictvím ModelSpec.noThinkingAlias se uplatňuje i tehdy, když je tato možnost zapnutá.", "featureFlagChatVirtualLanesEnabledDescription": "Povolte adaptivní virtuální vstupní pruhy pro každého tenanta při odesílání poskytovatelům (#9654): špička jednoho tenanta už nezpůsobí 503 u jiného. Proměnná prostředí OMNIROUTE_CHAT_VIRTUAL_LANES má přednost před tímto nastavením na řídicím panelu; změny se projeví po restartu serveru.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Stránky poskytovatelů na řídicím panelu: zobrazí odznak Zdarma pouze u signálů, které poskytovatel respektuje — přestane používat heuristiku zobrazovaného názvu, nepravdivostní pole free a přípony :free u registrovaných poskytovatelů bez zdokumentované bezplatné úrovně. Vypnutí zachová původní pravidlo pro odznak.", + "featureFlagProxySkipRecentlyFailedDescription": "Fondy proxy serverů a rotace opencode pro jednotlivé účty dočasně přestanou znovu nabízet proxy server, který právě selhal (odmítnutá sonda TCP nebo odpověď 429 přijatá přes tento server), a to na dobu v rámci procesu, která se při každém opakování zdvojnásobí až do stanoveného maxima. Stav proxy serveru se nezapisuje; pokud jsou odloženi všichni kandidáti, volba se nemění. Ve výchozím nastavení vypnuto: pořadí výběru přesně odpovídá prosté rotaci.", + "featureFlagProxyPoolEgressObservationDescription": "Zobrazit pod fondem proxy serverů na řídicím panelu, kolik pozorovaných odchozích IP adres obsluhovalo jeho členy za posledních 24 h, kolik připojení je použilo a jaký byl nejvyšší počet připojení zaznamenaný za jednou IP adresou. Pouze pro čtení, vypočítáváno z protokolu proxy serveru a nikdy nepoužíváno ke směrování. Ve výchozím nastavení vypnuto: editor fondu zůstává beze změny a trasa pozorování vrací null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Při kontrole stavu proxy serveru umožnit, aby sonda odmítnutá cílem (401/403/429: proxy server požadavek předal, ale cíl odmítl tuto odchozí IP adresu) vynulovala řadu po sobě jdoucích selhání proxy serveru stejně jako úspěšně obsloužená sonda. Ve výchozím nastavení vypnuto: odmítnutí zůstává neutrální a řadu zachovává. Odpověď 5xx zůstává v obou případech neprůkazná a odmítnutí nikdy neodebere, nezakáže ani znovu neaktivuje proxy server.", "sidebar": { "home": "Domov", "dashboard": "Nástěnka", @@ -1069,50 +1069,50 @@ "cliToolsShort": "Nástroje", "cache": "Mezipaměť", "cacheShort": "Mezipaměť", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "Dávkové úlohy", + "themeSystem": "Systém motivů", + "whitelabelingDesc": "Popis přizpůsobení značce", + "switchThemes": "Přepínání motivů", + "themeAccentDesc": "Popis barvy zvýraznění motivu", + "uploadFavicon": "Nahrát faviconu", + "themeDark": "Tmavý motiv", + "customLogoDesc": "Popis vlastního loga", + "sidebarVisibilityToggle": "Přepínač viditelnosti postranního panelu", + "themeAccent": "Barva zvýraznění motivu", + "resetFavicon": "Obnovit faviconu", + "whitelabeling": "Přizpůsobení značce", + "darkMode": "Tmavý režim", + "uploadLogo": "Nahrát logo", + "themeLight": "Světlý motiv", + "appName": "Název aplikace", + "appNameDesc": "Popis názvu aplikace", + "resetLogo": "Obnovit logo", + "customFavicon": "Vlastní favicon", + "hideHealthLogs": "Skrýt protokoly stavu", + "customLogo": "Vlastní logo", + "appearance": "Vzhled", + "themeSelectionAria": "Popisek ARIA pro výběr motivu", + "themeCreate": "Vytvořit motiv", + "customFaviconDesc": "Popis vlastní favicony", + "logoPreview": "Náhled loga", + "themeCustom": "Vlastní motiv", + "hideHealthLogsDesc": "Popis skrytí protokolů stavu", + "faviconPreview": "Náhled favicony", + "changelog": "Přehled změn", + "contextSection": "Kontext a mezipaměť", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Kombinace enginů", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Nastavení komprese", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Studio kombinací", "combosLiveSubtitle": "Živá kaskáda směrování", "compressionStudio": "Compression Studio", "compressionExclusions": "Vyloučení", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Živá kaskáda enginů", "compressionExclusionsSubtitle": "Obcházení na základě modelu/koncového bodu", "chaosConfigSubtitle": "Paralelní spouštění více modelů", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Směrování", + "protocolsSection": "Protokoly", + "agentsAiSection": "Agenti a AI", + "cacheContextSection": "Mezipaměť a kontext", + "analyticsSection": "Analytika", + "costsSection": "Náklady", + "monitoringSection": "Monitorování", + "auditSecuritySection": "Audit a zabezpečení", + "devtoolsSection": "Vývojářské nástroje", + "configurationSection": "Konfigurace", + "aiFeaturesSection": "Funkce AI", "mcp": "MCP", "a2a": "A2A", "plugins": "Pluginy", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "Koncové body API", + "batchFiles": "Soubory", + "analyticsEvals": "Vyhodnocení", + "analyticsSearch": "Vyhledávání", + "analyticsUtilization": "Využití", + "analyticsComboHealth": "Stav kombinací", + "analyticsCompression": "Komprese", + "costsBudget": "Rozpočet", "costsFreeTiers": "Rozpočet bezplatné úrovně", "costsFreeTiersSubtitle": "Měsíční příděly bezplatných tokenů", "freeProviderRankings": "Žebříčky bezplatných poskytovatelů", "freeProviderRankingsSubtitle": "Nejlepší bezplatní poskytovatelé seřazení podle ELO skóre modelů", "radar": "Radar katalog", "radarSubtitle": "Bezplatný modelový katalog obohacený komunitou", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Sdílení kvót", + "costsPricing": "Ceny", + "logsProxy": "Protokoly proxy", + "logsConsole": "Konzole", + "logsActivity": "Aktivita", + "auditMcp": "Audit MCP", "auditA2a": "Audit A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Vzhled", + "settingsAi": "Nastavení AI", + "settingsSecurity": "Zabezpečení", "settingsAccessTokens": "Přístupové tokeny", "settingsFeatureFlags": "Příznaky funkcí", "settingsCache": "Mezipaměť", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "Autorizace", + "settingsRouting": "Směrování", + "settingsResilience": "Odolnost", "modelLockout": "Uzamčení modelů", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Pokročilé", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Kvóta poskytovatele", + "providerQuota": "Kvóta poskytovatele", + "runtime": "Běhové prostředí", + "consoleLogs": "Protokoly konzole", + "logsTimeline": "Časová osa", "logsTimelineSubtitle": "Vizualizace časové osy požadavků", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Konverzace", + "conversationsSubtitle": "Vícekolové agentní konverzace", + "globalRouting": "Globální směrování", + "mitmProxy": "MITM proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Agentní funkce", + "otherFeaturesSection": "Další funkce", + "compressionContextGroup": "Komprese kontextu", + "gamificationGroup": "Gamifikace", + "toolsGroup": "Nástroje", + "integrationsGroup": "Integrace", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", + "costsParametersGroup": "Parametry nákladů", "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "batchGroup": "Dávkové zpracování", + "homeSubtitle": "Přehled řídicího panelu", + "providersSubtitle": "Správa poskytovatelů AI", + "quotaTrackerSubtitle": "Sledování limitů využití", + "providerQuotaSubtitle": "Sledování limitů využití poskytovatelů", + "runtimeSubtitle": "Odolnost a relace v reálném čase", + "contextCombosSubtitle": "Kombinace kompresních modulů", + "cliToolsSubtitle": "Konfigurace běhových prostředí CLI", + "agentsSubtitle": "Správa místních agentů", + "cloudAgentsSubtitle": "Správa cloudových agentů", + "apiEndpointsSubtitle": "Zpřístupnění vlastních koncových bodů", + "proxySubtitle": "Nastavení HTTP proxy", + "mitmProxySubtitle": "MITM zachytávání", + "oneProxySubtitle": "Veřejná proxy brána", + "leaderboard": "Žebříček", + "profile": "Profil", + "tokens": "Tokeny", + "gamificationAdmin": "Správa gamifikace", + "leaderboardSubtitle": "Pořadí a úspěchy", + "profileSubtitle": "Účet a předvolby", + "tokensSubtitle": "Využití tokenů a rozpočty", + "gamificationAdminSubtitle": "Monitorování anomálií a ochrana proti podvádění", + "usageSubtitle": "Statistiky provozu a využití", + "analyticsComboHealthSubtitle": "Spolehlivost kombinovaných cílů", + "analyticsUtilizationSubtitle": "Využití poskytovatelů", + "costsSubtitle": "Rozpis výdajů", + "cacheSubtitle": "Míry úspěšnosti mezipaměti", + "analyticsCompressionSubtitle": "Statistiky úspor tokenů", + "analyticsSearchSubtitle": "Analytika vyhledávacího nástroje", + "analyticsEvalsSubtitle": "Výsledky evaluační sady", "providerStats": "Statistiky poskytovatelů", "providerStatsSubtitle": "Metriky latence a výkonu", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Protokoly aplikace", + "logsProxySubtitle": "Protokoly provozu proxy", + "consoleLogsSubtitle": "Výstup konzole", + "logsActivitySubtitle": "Protokol aktivity uživatelů", + "healthSubtitle": "Kontrola stavu systému", + "costsPricingSubtitle": "Cenová pravidla pro jednotlivé modely", + "costsBudgetSubtitle": "Rozpočtové limity", + "costsQuotaShareSubtitle": "Sdílení kvót poskytovatelů mezi klíči", + "auditLogSubtitle": "Audit autorizace", + "auditMcpSubtitle": "Audit serveru MCP", + "auditA2aSubtitle": "Audit protokolu A2A", + "translatorSubtitle": "Převod formátu", + "playgroundSubtitle": "Testování promptů v reálném čase", + "searchToolsSubtitle": "Registr vyhledávacích nástrojů", + "memorySubtitle": "Trvalá paměť agenta", + "omniSkillsSubtitle": "Registr dovedností sandboxu", + "agentSkillsSubtitle": "Registr dovedností A2A", + "mcpSubtitle": "Ovládací prvky serveru MCP", + "a2aSubtitle": "Server protokolu A2A", "pluginsSubtitle": "Tržiště a instalace pluginů", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Mediální soubory v mezipaměti", + "batchFilesSubtitle": "Soubory dávkového vstupu/výstupu", + "settingsSubtitle": "Všechna nastavení", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Motiv a rozvržení", + "settingsAiSubtitle": "Výchozí chování AI", + "globalRoutingSubtitle": "Globální pravidla směrování", + "settingsResilienceSubtitle": "Opakované pokusy a jističe", + "settingsAdvancedSubtitle": "Možnosti pro pokročilé uživatele", + "settingsSecuritySubtitle": "Ověřování a šifrování", "settingsAccessTokensSubtitle": "CLI tokeny s omezeným rozsahem pro vzdálený režim", "settingsFeatureFlagsSubtitle": "Přepínání možností systému", "settingsCacheSubtitle": "Katalog modelů a mezipaměť odpovědí", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Postranní panel", + "settingsSidebarSubtitle": "Přizpůsobit rozvržení postranního panelu", "settingsAuthzSubtitle": "Inventář tras a zásady obcházení", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Dokumentace", + "issuesSubtitle": "Nahlásit chybu", + "changelogSubtitle": "Poznámky k vydání", "costsQuotaPlans": "Plány a kvóty", "costsQuotaPlansSubtitle": "Konfigurovat plány podle poskytovatele", "activity": "Aktivita", @@ -1275,11 +1275,11 @@ "systemGroup": "Systém", "costsOverview": "Přehled", "costsOverviewSubtitle": "Konsolidovaná analýza nákladů", - "agentBridge": "Agent Bridge", + "agentBridge": "Most agenta", "agentBridgeSubtitle": "Zachytávat provoz agenta IDE", "trafficInspector": "Inspektor provozu", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Kontrolujte provoz požadavků a odpovědí z vašich aplikací", + "trafficInspectorPurpose": "Podívejte se přesně, co vaše aplikace odesílá poskytovatelům AI a co od nich přijímá. Funguje s jakýmkoli klientem kompatibilním s OpenAI.", "cliCode": "CLI kód", "cliCodeSubtitle": "Nástroje pro kód odkazující na OmniRoute", "cliAgents": "Agenti CLI", @@ -1345,7 +1345,7 @@ "refresh": "Obnovit", "loading": "Načítání webhooků...", "never": "Nikdy", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {žádná selhání} one {# selhání} few {# selhání} other {# selhání}}", "testWebhook": "Odeslat test", "testSuccess": "Testovací webhook byl úspěšně odeslán.", "testFailed": "Test webhooku se nezdařil.", @@ -1461,7 +1461,7 @@ "eventTypePlaceholder": "Filtrujte podle akce nebo typu události", "severity": "Závažnost", "allSeverities": "Všechny závažnosti", - "info": "Info", + "info": "Informace", "warning": "Varování", "critical": "Kritické", "sourceIp": "Zdrojová IP", @@ -1605,49 +1605,49 @@ "mediaDescription": "Generování obrázků, videí a hudby", "themes": "Motivy", "themesDescription": "Vyberte barevný motiv pro celý panel nástěnky", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "costsDescription": "Sledujte výdaje, analyzujte trendy a spravujte svůj rozpočet na AI napříč všemi poskytovateli", + "cacheDescription": "Sledujte efektivitu mezipaměti promptů poskytovatelů a místní opakované využití sémantických odpovědí.", + "limitsDescription": "Nastavte limity četnosti a kvóty pro jednotlivé klíče API a poskytovatele", + "runtimeDescription": "Sledování běhového prostředí v reálném čase — jističe, doby obnovení, blokování modelů, relace a upozornění na kvóty", + "apiManagerDescription": "Spravujte klíče API a řízení přístupu pro svou instanci OmniRoute", + "batchDescription": "Zpracovávejte velké objemy požadavků asynchronně pomocí dávkových volání API", + "contextCavemanDescription": "Komprese zpráv založená na pravidlech, jazykové balíčky, analytika a nastavení režimu výstupu.", + "contextRtkDescription": "Komprese zohledňující příkazy pro výstup nástrojů, terminálové protokoly a výsledky sestavení.", + "contextCombosDescription": "Definujte, jak se enginy kombinují pro různé scénáře směrování.", + "changelogDescription": "Mějte přehled o nejnovějších funkcích platformy a oznámeních.", + "agentsDescription": "Správa a konfigurace nástrojů AI agentů: Codex, Devin, Jules a vlastní agenti", + "cloudAgentsDescription": "Orchestrace cloudových AI agentů s živým sledováním úloh a schvalováním plánů", + "memoryDescription": "Trvalá konverzační paměť se sémantickým vyhledáváním a fulltextovým indexováním FTS5", + "skillsDescription": "Instalace a správa dovedností v sandboxu pro automatizované spouštění promptů a nástrojů", + "agentSkillsDescription": "Katalog dovedností připravených pro agenty s kopírováním URL jedním kliknutím pro integraci s AI klienty", + "translatorDescription": "Překlad a testování promptů napříč formáty API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Interaktivní testování promptů s živými odpověďmi poskytovatelů a kontrolou formátu", + "searchToolsDescription": "Analýza vyhledávání, přehled podle poskytovatelů, míra zásahů mezipaměti a sledování nákladů", + "logsDescription": "Protokoly požadavků v reálném čase, trasování chyb a inspektor streamovaných událostí", + "auditDescription": "Auditní stopa pro zajištění souladu zahrnující používání klíčů API, volání nástrojů MCP a události zásad", + "webhooksDescription": "Konfigurace koncových bodů webhooků pro příjem oznámení o událostech v reálném čase", + "healthDescription": "Přehled stavu systému: poskytovatelé, jističe, limity požadavků a databáze", + "proxyDescription": "Konfigurace nastavení nadřazeného proxy serveru pro odchozí připojení k poskytovatelům", + "apiEndpointsDescription": "Správa vlastních konfigurací koncových bodů API a přepsání směrování", + "batchFilesDescription": "Procházení a správa výstupních souborů a výsledků dávkových úloh", + "analyticsEvalsDescription": "Výsledky hodnocení modelů a výkonnostní benchmarky", + "analyticsSearchDescription": "Analýza vyhledávacích dotazů, míra zásahů mezipaměti a sledování nákladů", + "analyticsUtilizationDescription": "Metriky využití poskytovatelů a plánování kapacity", + "analyticsComboHealthDescription": "Stav a výkon kombinovaných konfigurací směrování v reálném čase", + "analyticsCompressionDescription": "Analýza komprese kontextu a úspory tokenů", + "costsBudgetDescription": "Rozpočtové limity a upozornění na výdaje pro jednotlivé klíče API a poskytovatele", + "costsPricingDescription": "Vlastní konfigurace cen pro výpočty nákladů na tokeny", + "logsProxyDescription": "Protokoly požadavků nadřazeného proxy serveru a kontrola provozu", + "logsConsoleDescription": "Výstup aplikační konzole a ladicí protokoly", + "logsActivityDescription": "Auditní stopa akcí uživatelů a systémových událostí", + "auditMcpDescription": "Auditní stopa volání nástrojů MCP a záznamy o souladu", "auditA2a": "Audit A2A", "auditA2aDescription": "Auditní záznam provádění úloh A2A, přechody stavů a záznamy vyvolání dovedností", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Motiv, branding a vizuální přizpůsobení", + "settingsAiDescription": "Chování AI, rozpočty pro uvažování, vizuální funkce a nastavení paměti", "settingsCacheDescription": "TTL pro položky mezipaměti katalogu modelů", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Nastavení ověřování, autorizace a řízení přístupu", "featureFlags": "Příznaky funkcí", "featureFlagsDescription": "Možnosti řídicího systému a experimentální funkce", "featureFlagsActive": "{count} aktivní", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Vašemu vyhledávání neodpovídají žádné příznaky", "featureFlagsSaved": "Vlajka aktualizována", "featureFlagsError": "Aktualizace příznaku se nezdařila", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Pravidla směrování, aliasy modelů, výchozí hodnoty kombinací a nastavení degradace", + "settingsResilienceDescription": "Konfigurace jističe, opakování a záložních mechanismů", + "settingsAdvancedDescription": "Pokročilá pravidla datové části, limity požadavků a nastavení proxy API", + "mitmProxyDescription": "Konfigurace nastavení MITM proxy pro kontrolu provozu a ladění", + "oneProxyDescription": "Konfigurace nastavení 1Proxy pro pokročilé řetězení proxy serverů", "omniSkillsDescription": "Instalujte a spravujte dovednosti sandboxu pro automatizované spouštění promptů a nástrojů" }, "cloudSyncStatus": { @@ -1708,7 +1708,7 @@ "console": "Konzole", "logger": "Protokolovač", "translator": "Překladač", - "playground": "Playground", + "playground": "Testovací prostředí", "add": "Přidat", "edit": "Upravit", "apiKeys": "Klíče API", @@ -1724,7 +1724,7 @@ "analytics": "Analytika", "costs": "Náklady", "health": "Stav", - "runtime": "Runtime", + "runtime": "Běhové prostředí", "webhooks": "Webhooky", "home": "Domů", "activity": "Aktivita", @@ -1762,7 +1762,7 @@ "discovery": "Průzkum", "freeProviderRankings": "Žebříčky bezplatných poskytovatelů", "radar": "Radar", - "setup": "Setup", + "setup": "Nastavení", "freeTiers": "Bezplatné tarify", "gamification": "Gamifikace", "leaderboard": "Žebříček", @@ -1778,7 +1778,7 @@ "sidebar": "Postranní panel", "tokens": "Tokeny", "tools": "Nástroje", - "agentBridge": "Agent Bridge", + "agentBridge": "Most agentů", "trafficInspector": "Inspektor provozu", "usage": "Využití", "orchestration": "Orchestrace" @@ -1812,7 +1812,7 @@ "reportIssue": "Nahlásit problém", "activeError": "{active} aktivní · {errors} chyba", "topologyLegendActive": "Aktivní", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Nedávné", "topologyLegendError": "Chyba", "oauthLabel": "OAuth", "apiKeyLabel": "API Klíč", @@ -1826,11 +1826,11 @@ "updateStarted": "Aktualizace začala...", "reloadingPageAutomatically": "Automatické opětovné načítání stránky...", "providerTopology": "Topologie poskytovatele", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Nedávné požadavky", + "recentRequestsEmpty": "Zatím žádné požadavky.", + "recentRequestsModel": "Model", + "recentRequestsTokens": "Vstup / výstup", + "recentRequestsWhen": "Kdy", "downloadDmg": "Stáhnout DMG (macOS)", "downloadDmgDescription": "Nová verze desktopové aplikace OmniRoute je k dispozici. Prosím, stáhněte a nainstalujte macOS DMG instalátor pro aktualizaci (aktuální: v{version}).", "downloadExe": "Stáhnout EXE (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "Poznámky k vydání", "readMore": "Přečíst více", "noAuthLabel": "Žádná autentizace", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Připravte se na směrování", + "readinessTitle": "Odešlete svůj první požadavek", + "readinessSubtitle": "Čtyři malé kroky. OmniRoute průběžně kontroluje připravenost.", + "readinessStep1": "Připojte poskytovatele", + "readinessStep2": "Nakonfigurujte ověřování koncového bodu", + "readinessStep3": "Zkopírujte svůj koncový bod", + "readinessStep4": "Odešlete testovací požadavek", + "readinessContinue": "Pokračovat v nastavení", + "readinessDismiss": "Prozatím skrýt" }, "analytics": { "title": "Analytika", @@ -1967,7 +1967,7 @@ "period7D": "7D", "period30D": "30D", "period90D": "90D", - "periodYTD": "YTD", + "periodYTD": "Od začátku roku", "periodAll": "Vše", "totalTokens": "Celkem tokenů", "inputTokens": "Vstupní tokeny", @@ -2000,13 +2000,13 @@ "sectionsAria": "Analytické sekce", "utilizationDescription": "Trendy využití kvót poskytovatele a sledování limitů rychlosti", "modelStatus": "Stav modelu", - "modelStatusCooldown": "Cooldown", + "modelStatusCooldown": "Doba čekání", "modelStatusUnavailable": "Není k dispozici", "modelStatusError": "Chyba", "comboHealth": "Zdraví Combo", "comboHealthDescription": "Kvóta na úrovni kombinace, distribuce využití a metriky výkonu", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Analýza komprese", + "compressionAnalyticsDescription": "Analýza komprese — úspora tokenů, přehled režimů a statistiky poskytovatelů.", "autoRoutingTotalAutoRequests": "Celkový počet automatických požadavků", "autoRoutingAvgSelectionScore": "Prům. skóre výběru", "autoRoutingExplorationRate": "Míra průzkumu", @@ -2188,7 +2188,7 @@ "routeRuntimeScoreNow": "Aktuální skóre při běhu", "routeWouldSelectNow": "Nyní by vybral", "routeNoRecomputeCandidates": "Pro tento požadavek nelze přepočítat žádné hodnocení kandidátů combo.", - "runtime": "Runtime", + "runtime": "Doba běhu", "routeTopNow": "Nyní nejlepší", "routeFetchLogsFailed": "Nepodařilo se načíst logy požadavků", "routeExplainFailed": "Nepodařilo se vysvětlit trasu", @@ -2207,10 +2207,10 @@ "model": "Model", "account": "Účet", "connection": "Připojení", - "combo": "Combo", + "combo": "Kombinace", "routeStep": "Krok", "tokens": "Tokeny", - "notAvailable": "n/a", + "notAvailable": "není k dispozici", "routeTokenCounts": "{input} vstup · {output} výstup", "routeEvidence": "Důkazy", "routeFactors": "Faktory směrování", @@ -2258,9 +2258,9 @@ "fullAccess": "Plný přístup", "keyManagement": "Správa API Klíčů", "keyManagementDesc": "Vytvářejte a spravujte API klíče pro ověřování požadavků na váš koncový bod", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Vaše aplikace odesílá požadavky prostřednictvím API klíče do OmniRoute", + "requestFlowYourApp": "Vaše aplikace", + "requestFlowApiKey": "API klíč", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Celkem Klíčů", "restricted": "Omezený", @@ -2301,14 +2301,14 @@ "keyCreatedNote": "Teď di zkopírujte a uložte tento klíč – už se vám nezobrazí.", "done": "Hotovo", "savePermissions": "Uložit oprávnění", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", + "endpointRestrictions": "Povolené koncové body", + "allEndpointsAllowed": "Tento klíč má přístup ke všem koncovým bodům API.", + "endpointsRestricted": "Omezeno na {count} {count, plural, one {koncový bod} few {koncové body} other {koncových bodů}}.", "autoResolve": "Auto-překlad", "autoResolveDesc": "Automaticky přeložit nejednoznačné názvy modelů na nativní poskytovatele pro tento API klíč.", "streamDefaultMode": "Výchozí kompatibilita streamování", "streamDefaultModeDesc": "Řídí vynechané příznaky `stream` pro tento klíč. Režim JSON vrací nestreamované odpovědi, pokud klient explicitně nepožádá o SSE.", - "streamDefaultLegacy": "Legacy", + "streamDefaultLegacy": "Zastaralé", "streamDefaultJson": "Kompatibilní s JSON", "streamDefaultBadge": "Výchozí JSON stream", "keyActive": "Aktivní Klíč", @@ -2365,7 +2365,7 @@ "regenerateConfirm": "Jste si jisti, že chcete znovu vygenerovat tento klíč API? Starý klíč bude okamžitě zneplatněn.", "failedRegenerateKey": "Klíč API se nepodařilo znovu vytvořit", "failedRegenerateKeyRetry": "Klíč API se nepodařilo znovu vytvořit. Zkuste to prosím znovu.", - "model": "{count} model", + "model": "{count} {count, plural, one {model} few {modely} other {modelů}}", "models": "{count} modelů", "permissionsTitle": "Oprávnění: {name}", "allowAllDesc": "Tento klíč umožňuje přístup ke všem dostupným modelům.", @@ -2382,8 +2382,8 @@ "allowedCombos": "Povolené kombinace", "allCombosAllowed": "Tento klíč může použít jakoukoli kombinaci.", "restrictedComboCount": "Omezeno na {count, plural, one {# kombinaci} few {# kombinace} other {# kombinací}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# uložená položka není} few {# uložené položky nejsou} other {# uložených položek není}} v tomto seznamu kombinací (například pravidla směrování) a {count, plural, one {bude zachována tak, jak je uložena} few {budou zachovány tak, jak jsou uloženy} other {budou zachovány tak, jak jsou uloženy}}.", + "preservedComboRuleHint": "Zachováno tak, jak je uloženo. Tato položka není kombinací ve výše uvedeném seznamu, takže ji lze změnit pouze prostřednictvím API.", "apiManagerCustomRateLimits": "Vlastní limity sazeb", "apiManagerCustomRateLimitsDesc": "Přepsat globální výchozí limity. Chcete-li použít výchozí hodnoty, ponechte prázdné.", "apiManagerRateLimitRequestsPlaceholder": "Žádosti", @@ -2393,7 +2393,7 @@ "apiManagerTimezonePlaceholder": "Amerika/Sao_Paulo", "noLogPayloadPrivacy": "Soukromí dat bez přihlášení", "bannedStatus": "Stav zákazu", - "managementApiAccess": "Management API Access", + "managementApiAccess": "Přístup k rozhraní Management API", "expirationDate": "Datum vypršení platnosti", "managementAccess": "Přístup pro správu", "allowedConnections": "Povolená připojení", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Umožňuje tomuto klíči ignorovat zásady limitů upstream poskytovatele/účtu během směrování. USD kvóty API klíče stále platí.", "quotaPill": "KVÓTA", "quotaModeOnly": "pouze-qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Výhradní pronájem", + "exclusiveLeaseNoticeTitle": "Výhradní pronájem", + "exclusiveLeaseNoticeDesc": "Tento API klíč má oprávnění k výhradnímu pronájmu pro směrování vyhrazených připojení.", + "allConnections": "Všechna připojení", + "onlySelectedConnections": "Pouze vybraná připojení", + "selectAtLeastOneConnection": "Vyberte alespoň jedno připojení nebo zvolte Všechna připojení.", + "allConnectionsDesc": "Tento klíč může používat libovolné aktivní připojení.", + "restrictedToConnections": "Omezeno na {count, plural, one {# připojení} few {# připojení} other {# připojení}}." }, "auditLog": { "title": "Audit Protokolů", @@ -2466,7 +2466,7 @@ "videoDescription": "Vytvářejte videa pomocí AnimateDiff, Stable Video Diffusion přes ComfyUI nebo SD WebUI.", "musicDescription": "Skládejte hudbu pomocí Stable Audio Open nebo MusicGen přes ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Vkládání", "image": "Obrázek", "imageToText": "Obrázek na text", "tts": "Text na řeč", @@ -2593,60 +2593,60 @@ "emptyState": "Odešlete vyhledávací dotaz pro zobrazení výsledků", "copy": "Kopírovat", "resetToDefault": "Obnovit výchozí", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Vyhledávání", + "tabScrape": "Extrakce", + "tabCompare": "Porovnání", + "modalitiesGuide": "Průvodce modalitami", + "searchConceptTitle": "Vyhledávání", + "searchConceptDesc": "Vyhledávání = načte seznam výsledků z webu (název, URL, úryvek, skóre relevance)", + "scrapeConceptTitle": "Extrakce", + "scrapeConceptDesc": "Extrakce = extrahuje úplný obsah URL (markdown, text nebo HTML)", + "compareConceptTitle": "Porovnání", + "compareConceptDesc": "Porovnat = spustí stejný dotaz souběžně u N poskytovatelů pro porovnání latence, nákladů a překryvu výsledků", + "rerankConceptTitle": "Přeřadit", + "rerankConceptDesc": "Přeřadit = změní pořadí výsledků pomocí LLM, aby se na základě dotazu zlepšila jejich relevance", + "autoConceptTitle": "Automaticky (nejlevnější)", + "autoConceptDesc": "Automaticky (nejlevnější) = automaticky vybere nejlevnějšího dostupného poskytovatele s nakonfigurovanými přihlašovacími údaji", + "providerCatalogTitle": "Katalog poskytovatelů", + "kindSearch": "Vyhledávání", + "kindFetch": "Načtení/scraping", + "statusConfigured": "Nakonfigurováno", + "statusMissing": "Bez přihlašovacích údajů", + "statusRateLimited": "Omezeno limitem požadavků", + "configureProvider": "Nakonfigurovat v Poskytovatelích", + "loadingProviders": "Načítání poskytovatelů…", + "failedToLoadProviders": "Poskytovatele se nepodařilo načíst", + "costPerQuery": "Cena/dotaz", + "freeQuota": "Bezplatná kvóta/měs.", + "scrapeUrl": "URL ke scrapování", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "Adresa URL je vyžadována", "scrapeUrlInvalid": "Neplatná adresa URL — musí začínat na http:// nebo https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Extrahovat", + "scrapeExtracting": "Extrahování…", + "scrapeFullPage": "Celá stránka", + "scrapeFormat": "Formát", "formatMarkdown": "Markdown", "formatHtml": "HTML", "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", + "scrapePreview": "Náhled", + "scrapeRaw": "Nezpracovaná data", + "scrapeContentTruncated": "(zkráceno, zobrazit nezpracovaná data)", "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "scrapeProvider": "Poskytovatel", + "scrapeSize": "Velikost", "scrapeEmptyState": "Zadejte adresu URL pro extrakci jejího obsahu", "scrapeProvidersAvailable": "Dostupní poskytovatelé: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Porovnat", + "compareRunning": "Porovnávání…", + "autoProvider": "Automaticky (nejlevnější)", + "configuredStatus": "Nakonfigurováno", + "rateLimitedStatus": "Omezeno limitem požadavků", + "noCredential": "Bez přihlašovacích údajů", + "searchTypeLabel": "Typ", + "rerankModelLabel": "Model pro přeřazení", + "noneOption": "Žádný", + "size": "Velikost", "configurationPane": "Panel konfigurace", "configuration": "Konfigurace", "status": "Stav", @@ -2664,7 +2664,7 @@ "httpError": "Chyba {status}", "failed": "Selhalo", "requestFailed": "Požadavek selhal", - "embedding": "Embedding", + "embedding": "Vektorová reprezentace", "embeddingSample": "Ahoj, světe!", "image": "Obrázek", "imageSample": "Klidná krajina s horami při západu slunce", @@ -2676,12 +2676,12 @@ "selectAudioFirst": "Nejprve prosím vyberte zvukový soubor.", "speechToText": "Převod řeči na text", "chooseFile": "Vybrat soubor…", - "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — max 25 MB", + "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — max. 25 MB", "textToSpeech": "Převod textu na řeč", "ttsSample": "Dobrý den, toto je test převodu textu na řeč.", "video": "Video", "videoSample": "Časosběr mraků nad pohořím", - "webFetch": "Web Fetch", + "webFetch": "Načtení webu", "webSearchSample": "Co je OmniRoute AI gateway?", "noActiveProviderDescription": "Žádný aktivní poskytovatel vyhledávání. Nakonfigurujte jej v sekci Poskytovatelé.", "configureProviders": "Nakonfigurovat poskytovatele", @@ -2708,7 +2708,7 @@ "classifierCompatLoadFailed": "Nepodařilo se načíst nastavení", "classifierCompatMode": { "off": "Vypnuto", - "auto": "Auto", + "auto": "Automaticky", "always": "Vždy" }, "ccDiscoveryInfoButton": "Jak povolit objevování v Claude Code", @@ -2908,7 +2908,7 @@ "continue": "Použijte, pokud spouštíte Continue v IDE a potřebujete přenosnou nastavení poskytovatele založenou na JSON.", "opencode": "Použijte, pokud dáváte přednost spouštění agentů nativně v terminálu a skriptované automatizaci přes OpenCode.", "kiro": "Použijte při integraci Kiro a centrálním řízení směrování modelů z OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Použijte, pokud chcete IDE zaměřené především na AI s modely Codeium/Windsurf směrovanými přes OmniRoute.", "antigravity": "Použijte, pokud musí být provoz Antigravity/Kiro zachycen prostřednictvím MITM a směrován do OmniRoute.", "copilot": "Použijte, pokud chcete uživatelské rozhraní ve stylu Copilot chat a zároveň vynutit klíče a pravidla směrování OmniRoute.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2932,8 +2932,8 @@ "kiro": "Amazon Kiro – AI poháněné IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "CLI programátorského asistenta Sourcegraph Amp", + "hermes": "Terminálový asistent Hermes AI", "hermes-agent": "Hermes Agent (od Nousresearch) - pokročilá terminálová AI s podporou více modelů (delegování, vizuální funkce, komprese atd.)", "custom": "Generický generátor konfigurace CLI nebo SDK kompatibilní s OpenAI", "aider": "CLI pro párové programování s AI Aider se základní URL kompatibilní s OpenAI", @@ -2950,7 +2950,7 @@ "interpreter": "CLI autonomního programovacího agenta Open Interpreter", "omp": "Terminálový programovací agent Oh My Pi", "letta": "CLI agent Letta s trvalou pamětí a používáním nástrojů", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — sebezdokonalující se programovací prostředí RLM s podporou poskytovatelů kompatibilních s OpenAI", "warp": "AI terminál Warp s podporou vlastních poskytovatelů", "agent-deck": "Multiagentní orchestrátor Agent Deck", "5dive": "5dive — vlastní flotila kódovacích agentů; jeden auth profil nasměruje všechny na OmniRoute" @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Vlastní CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Kategorie nástrojů", "visibleToolsCount": "Počet dostupných nástrojů: {count}", "customCliBuilderTitle": "Tvůrce CLI kompatibilní s OpenAI", "customCliBuilderDescription": "Generujte env vars a fragmenty JSON pro jakékoli rozhraní CLI nebo SDK, které akceptují základní adresu URL, klíč API a ID modelu kompatibilní s OpenAI.", @@ -3112,7 +3112,7 @@ "hermesRoleDefaultDesc": "Primární konverzační model", "hermesRoleDelegation": "Delegování (subagenti)", "hermesRoleDelegationDesc": "Model orchestrátoru a subagentů", - "hermesRoleVision": "Vision", + "hermesRoleVision": "Obrazové vstupy", "hermesRoleVisionDesc": "Porozumění obrázkům a snímkům obrazovky", "hermesRoleCompression": "Komprese", "hermesRoleCompressionDesc": "Komprese a sumarizace promptů", @@ -3132,7 +3132,7 @@ "hermesRoleTtsAudioTagsDesc": "Generování audio tagu TTS", "hermesRoleTriageSpecifier": "Specifikátor triáže", "hermesRoleTriageSpecifierDesc": "Specifikace triáže problémů a PR", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Dekompozitor Kanbanu", "hermesRoleKanbanDecomposerDesc": "Decompozice úkolů Kanban", "hermesRoleProfileDescriber": "Popisovač profilu", "hermesRoleProfileDescriberDesc": "Popis uživatelského profilu", @@ -3140,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Hodnocení dokončení cíle", "hermesRoleCurator": "Kurátor", "hermesRoleCuratorDesc": "Kurace dovedností a paměti", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Monitorování", "hermesRoleMonitorDesc": "Sledování na pozadí", "hermesRoleBackgroundReview": "Pozadí Kontroly", "hermesRoleBackgroundReviewDesc": "Kontrola kódu na pozadí", @@ -3159,7 +3159,7 @@ "hermesRolesWillUpdate": "{count, plural, one {# role bude aktualizována} few {# role budou aktualizovány} other {# rolí bude aktualizováno}}", "hermesPreviewPath": "Náhled — zapíše se do ~/.hermes/config.yaml", "hermesSaveDescription": "Uloží vybraný model pro každou roli do", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "Generátor konfigurace GitHub Copilot", "copilotGeneratorDescriptionPrefix": "Generuje", "copilotGeneratorDescriptionSuffix": "blok pro VS Code GitHub Copilot pomocí vzoru dodavatele Azure. Vyberte požadované modely a poté zkopírujte JSON do konfiguračního souboru.", "copilotCompatibilityWarning": "Tato konfigurace využívá řešení Azure vendor pro vlastní seznamy modelů. Testováno s VS Code ≥ 1.109 a GitHub Copilot Chat ≥ v0.37. Budoucí aktualizace rozšíření mohou toto chování změnit.", @@ -3168,7 +3168,7 @@ "selectAll": "Vybrat vše", "loadingModels": "Načítání modelů...", "advancedOptions": "Pokročilé možnosti", - "vision": "Vision", + "vision": "Obrazové vstupy", "copilotCopyConfigForModels": "Kopírovat konfiguraci ({count, plural, one {# model} few {# modely} other {# modelů}})", "copilotFilterModelsPlaceholder": "Modely filtrů...", "copilotMaxInputTokens": "Maximální vstupní tokeny", @@ -3177,7 +3177,7 @@ "copilotPasteInto": "Vložit do:", "copilotReloadInstruction": "Poté znovu načtěte VS Code a nastavte klíč API ve vstupním poli.", "wireApiChatCompletions": "Dokončení chatu (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiResponses": "API odpovědí (/responses)", "cliproxyapiActionFailed": "Akce selhala", "cliproxyapiActionSucceeded": "Akce byla úspěšná", "cliproxyapiCheckUpdates": "Zkontrolovat aktualizace", @@ -3260,19 +3260,19 @@ "priorityDesc": "Sekvenční záloha: nejprve se vyzkouší model 1, poté 2 atd.", "weightedDesc": "Distribuuje pro vyvážení se zálohou", "roundRobinDesc": "Kruhová distribuce: každý požadavek jde dalšímu modelu v rotaci", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Přenos kontextu", + "contextRelayDesc": "Zachovává kontinuitu relace pomocí souhrnů pro předání při střídání účtů", "randomDesc": "Rovnoměrný náhodný výběr, poté návrat ke zbývajícím modelům", "leastUsedDesc": "Vybere model s nejmenším počtem požadavků a vyrovná zátěž v průběhu času.", "costOptimizedDesc": "Trasy k nejlevnějšímu modelu na základě ceny", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Každý opakovaně použitelný prefix promptu konzistentně směruje ke stejnému účtu poskytovatele", + "resetAware": "RR zohledňující reset", "resetAwareDesc": "Vyrovnává zbývající kvótu proti 5h a týdenním resetům a poté srovnává podobná skóre", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Vážené podle kvóty", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "Přísná náhoda", "strictRandomDesc": "Zamíchejte balíček karet – každý model se před zamícháním jednou použije", - "fusion": "Fusion", + "fusion": "Sloučení", "fusionDesc": "Rozešle prompt paralelně všem modelům v panelu a model rozhodčího pak syntetizuje jednu finální odpověď", "fusionJudgeModel": "Model rozhodčího", "fusionJudgeModelHelp": "Model, který syntetizuje odpovědi panelu do jedné finální odpovědi. Ponechte prázdné pro použití prvního modelu v panelu.", @@ -3288,13 +3288,13 @@ "retryDelay": "Zpoždění opakování (ms)", "concurrencyPerModel": "Souběh / Model", "queueTimeout": "Časový limit fronty (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Prahová hodnota předání", + "contextRelayHandoffThresholdHelp": "Když využití kvóty dosáhne této prahové hodnoty, OmniRoute vygeneruje strukturovaný souhrn pro předání ještě před vyčerpáním aktivního účtu.", + "contextRelayMaxMessages": "Maximální počet zpráv pro souhrn", + "contextRelayMaxMessagesHelp": "Omezuje množství nedávné historie, které se zhustí do souhrnu pro přenos.", + "contextRelaySummaryModel": "Model pro souhrn", + "contextRelaySummaryModelHelp": "Volitelně nastavený model používaný pouze k vygenerování souhrnu pro předání. Ponechte prázdné, chcete-li znovu použít aktivní model kombinace.", + "contextRelayProviderNote": "Přenos kontextu momentálně generuje předání při střídání účtů Codex. Pro nejlepší zachování kontinuity jej používejte s více účty stejného poskytovatele.", "advancedHint": "Pro použití globálních výchozích hodnot nechte pole prázdné. Tyto hodnoty přepíší nastavení pro jednotlivé poskytovatele.", "failoverBeforeRetry": "Failover před opakováním", "maxSetRetries": "Maximální počet opakování sady", @@ -3322,7 +3322,7 @@ "playgroundStatusError": "Chyba", "playgroundStatusUnknown": "Neznámé", "playgroundNetworkError": "Chyba sítě během simulace", - "playgroundTitle": "Combo Playground", + "playgroundTitle": "Testovací prostředí kombinací", "playgroundDescription": "Simulujte, jak budou požadavky směrovány přes vaše combos", "playgroundConfiguration": "Konfigurace", "playgroundNoCombosConfigured": "Nejsou nakonfigurována žádná combo", @@ -3391,14 +3391,14 @@ "example": "Příklad: Více účtů stejného modelu pro rovnoměrné rozložení využití." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Použijte, pokud chcete výběr s nízkou latencí pomocí algoritmu Power-of-Two-Choices.", + "avoid": "Nepoužívejte pro malé kombinace se 2 nebo méně modely — oproti cyklickému výběru nepřináší žádnou výhodu.", + "example": "Příklad: Vysoce propustná inference napříč 4 nebo více rovnocennými koncovými body modelů." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Použijte, když musí dlouhé relace přežít rotaci účtů bez ztráty pracovního kontextu.", + "avoid": "Nepoužívejte, pokud k přepínání účtů dochází zřídka nebo pokud nechcete další požadavky na sumarizaci.", + "example": "Příklad: relace Codex, které při blížícím se vyčerpání kvóty rotují mezi více účty." }, "fill-first": { "when": "Použijte, když chcete plně vyčerpat kvótu jednoho poskytovatele před přechodem k dalšímu.", @@ -3459,12 +3459,12 @@ "warningRoundRobinSingleModel": "Round-robin je nejužitečnější s alespoň 2 modely.", "warningCostOptimizedPartialPricing": "Jen {priced} z {total} modelů má stanovenu cenu. Směrování může být částečně zohledněno s ohledem na cenu.", "warningCostOptimizedNoPricing": "Pro toto kombo nebyly nalezeny žádné cenové údaje. Optimalizace nákladů může vést k neočekávanému směrování.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterAll": "Vše", + "filterIntelligent": "Inteligentní", + "filterDeterministic": "Deterministické", + "filterEmptyTitle": "Tomuto filtru strategií neodpovídají žádné kombinace.", + "filterEmptyIntelligentDescription": "Vytvořte kombinaci auto nebo LKGP, aby se naplnil řídicí panel inteligentního směrování.", + "filterEmptyDeterministicDescription": "V současnosti existují pouze kombinace auto a LKGP. Přepněte zpět na Vše nebo vytvořte deterministickou kombinaci.", "readinessTitle": "Jste připraveni ušetřit?", "readinessDescription": "Před vytvořením nebo aktualizací tohoto komba si prostudujte kontrolní seznam.", "readinessCheckName": "Název komba je platný", @@ -3482,8 +3482,8 @@ "applyRecommendations": "Použít doporučení", "recommendationsUpdated": "Doporučení pro {strategy} bylo aktualizováno.", "recommendationsApplied": "Doporučení aplikováno na toto kombo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "intelligentPanelTitle": "Řídicí panel inteligentního směrování", + "intelligentPanelDesc": "Bodové hodnocení a stav dostupnosti této kombinace automatického směrování v reálném čase.", "configOnlyStatus": "Zobrazení konfigurace", "configOnlyHint": "Tento panel zobrazuje pouze vstupy směrování. Aktuální stav jističe je k dispozici na stránce Stav.", "routingInputs": "Vstupy směrování", @@ -3505,47 +3505,47 @@ "manualModelUnknownProvider": "Neznámý prefix poskytovatele.", "builderDynamicAccountShort": "Dynamický účet", "builderNeedValidName": "Před pokračováním definujte platný název kombinace.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Přehled stavu", + "normalOperation": "Běžný provoz", + "allProvidersHealthy": "Poskytovatelé hlásí bezproblémové podmínky směrování.", + "incidentMode": "Režim incidentu", + "highCircuitBreakerRate": "Byla zjištěna vysoká četnost aktivace mechanismu circuit breaker.", + "activeModePack": "Aktivní balíček režimů", + "modePackUpdated": "Balíček režimů byl aktualizován na {pack}.", + "modePackHint": "Přepínáním předvoleb upravte preference směrovacího enginu bez nutnosti znovu sestavit kombinaci.", + "providerScores": "Hodnocení poskytovatelů", + "allProvidersEvaluated": "Není nakonfigurován žádný fond kandidátů. Všichni aktivní poskytovatelé jsou vyhodnocováni za běhu.", + "excludedProviders": "Vyloučení poskytovatelé", + "excludedProvidersHint": "Poskytovatelé s mechanismem circuit breaker ve stavu OPEN jsou dočasně vyloučeni ze směrování.", + "noExcludedProviders": "Momentálně nejsou vyloučeni žádní poskytovatelé.", + "cooldownMinutes": "Doba obnovení: {minutes} min", + "builderIntelligentTitle": "Konfigurace inteligentního směrování", + "builderIntelligentDesc": "Nakonfigurujte vícefaktorový hodnoticí engine pro tuto kombinaci automatického směrování.", + "candidatePoolLabel": "Fond kandidátů", + "candidatePoolHint": "Vyberte poskytovatele, které má tento engine vyhodnocovat. Ponecháte-li pole prázdné, použijí se všichni aktivní poskytovatelé.", + "candidatePoolEmpty": "Zatím nejsou k dispozici žádní aktivní poskytovatelé.", + "candidatePoolAllProviders": "Všichni poskytovatelé", + "modePackLabel": "Balíček režimů", + "routerStrategyLabel": "Strategie routeru", + "strategyRules": "Pravidla (šestifaktorové hodnocení)", + "explorationRateLabel": "Míra průzkumu", + "explorationRateHint": "{percent} % požadavků může vyzkoušet poskytovatele, kteří nejsou optimální.", + "budgetCapLabel": "Rozpočtový limit (USD / požadavek)", + "budgetCapPlaceholder": "Bez omezení", + "advancedWeightsTitle": "Pokročilé: váhy hodnocení", "nestedComboFlatten": "Zploštit vnořené kombinace", "nestedComboExecute": "Spustit vnořené kombinace jako cíle", "effectiveRoutingShare": "Efektivní podíl směrování (váha ÷ celkem)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kvóta", + "weightHealth": "Stav", + "weightCostInv": "Cena", + "weightLatencyInv": "Latence", + "weightTaskFit": "Vhodnost pro úlohu", + "weightStability": "Stabilita", + "weightTierPriority": "Úroveň", + "weightCacheAffinity": "Afinita zásahu mezipaměti", "weightSessionAvailability": "Dostupnost relace", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Konfigurace inteligentního směrování", "strategyRecommendations": { "priority": { "title": "Základní pojistka", @@ -3652,80 +3652,80 @@ "autoDesc": "Samoopravný inteligentní směrovací pool (Optimalizovaný výkon)", "lkgp": "Režim LKGP", "lkgpDesc": "Poslední známý dobrý poskytovatel (Predikovatelná odolnost)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Začínáme s kombinacemi", + "wizardGuideDesc": "Vytvářejte kombinace modelů pro inteligentní směrování provozu AI", + "wizardGuideHint": "nebo klikněte výše na + Vytvořit kombinaci", + "createFirstCombo": "Vytvořte svou první kombinaci", + "wizardStep1Title": "Pojmenujte svou kombinaci", + "wizardStep1Desc": "Dejte své kombinaci jedinečný název, podle kterého ji rozpoznáte v pravidlech směrování", + "wizardStep2Title": "Přidat modely", + "wizardStep2Desc": "Vyberte modely AI a uspořádejte pořadí jejich priorit pro případ selhání", + "wizardStep3Title": "Zvolit strategii", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Zkontrolovat a uložit", + "wizardStep4Desc": "Zkontrolujte konfiguraci a aktivujte kombinaci", + "usageGuideInvokeTitle": "Jak tuto kombinaci volat", + "usageGuideInvokeDesc": "Odešlete přesný název kombinace jako model, např. model: \"my-combo\" (nebo combo/my-combo).", + "usageGuideInvokeAutoNote": "auto a auto/* představují samostatný bezkonfigurační router, který vaše kombinace nepoužívá (pokud není některá kombinace doslova pojmenována auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto je skutečný placený produkt OpenRouter (Auto Best Available), nikoli alias OmniRoute — vylučte jej přes Nastavení → Směrování → Skrýt placené modely.", + "emailVisibilityStateOn": "Zapnuto", + "emailVisibilityStateOff": "Vypnuto", + "reorderHandle": "Přetažením změňte pořadí", + "failedReorder": "Změna pořadí modelů se nezdařila", + "builderFlowTitle": "Postup nástroje pro tvorbu kombinací", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Základní nastavení", + "description": "Název a výchozí šablona" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Kroky", + "description": "Výběr poskytovatele, modelu a účtu" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategie", + "description": "Chování směrování a pokročilá nastavení" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Chytré směrování", + "description": "Fond kandidátů pro automatické směrování, předvolby a hodnocení" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Kontrola", + "description": "Závěrečné ověření před uložením" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", + "builderStageVisited": "Fáze dokončena", + "builderStageCurrent": "Aktuální fáze", + "builderStagePending": "Čeká na vyřízení", + "builderStageLocked": "Uzamčeno — nejprve dokončete předchozí fázi", + "builderTitle": "Vytvořit kombinaci", + "builderBrowseCatalog": "Procházet katalog", + "builderProvider": "Poskytovatel", + "builderLoadingProviders": "Načítání poskytovatelů...", + "builderSelectProvider": "Vyberte poskytovatele", "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderSelectModel": "Vyberte model", + "builderProviderFirst": "Nejprve vyberte poskytovatele", + "builderAccount": "Účet", + "builderPreview": "Náhled", + "builderAddStep": "Přidat krok", "builderDuplicateExact": "Tento přesný krok poskytovatel/model/účet je již v kombinaci.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Reference kombinace", + "builderAddComboRef": "Přidat referenci kombinace", + "builderComboRefStep": "Přidat referenci kombinace", + "builderPinnedAccount": "Připnutý účet", + "builderLegacyEntry": "Starší položka", + "reviewName": "Název", + "reviewStrategy": "Strategie", + "reviewSteps": "Kroky", + "reviewAccounts": "Účty", + "reviewProviders": "Poskytovatelé", + "reviewComboRefs": "Reference kombinací", + "reviewAdvanced": "Pokročilá nastavení", + "reviewAgentFlags": "Příznaky agenta", + "reviewSequence": "Pořadí modelů", + "reviewNoSteps": "Nejsou nakonfigurovány žádné kroky", "builderStagesDescription": "Dokončete každou fázi, abyste mohli definovat kombinace, kroky sestavení, vybrat strategii směrování a zkontrolovat výsledky.", "builderStepsDescription": "Sestavte každý kombinovaný krok v pořadí: poskytovatel, model a poté účet. To umožňuje opětovné použití stejného poskytovatele a modelu napříč různými účty.", "selectProvider": "Vyberte poskytovatele", @@ -3766,7 +3766,7 @@ "agentFeaturesContextLengthErrorInteger": "Délka kontextu musí být platné celé číslo", "agentFeaturesContextLengthErrorRange": "Délka kontextu musí být mezi 1000 a 2000000", "compressionOverride": "Přepsání komprese", - "modePack": "Mode Pack", + "modePack": "Balíček režimů", "disableSessionStickiness": "Zakázat stálost relace", "sessionStickinessEnabled": "Stálost relace zapnuta", "sessionStickinessDisabled": "Stálost relace vypnuta", @@ -3800,27 +3800,27 @@ "range7d": "7 dní", "range30d": "30 dní", "range90d": "90 dní", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 dní", + "range365d": "365 dní", "rangeAll": "Celou dobu", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Aktivní modely", + "flatRateEstimateNotice": "Zahrnuje odhady cen tokenů pro paušální předplatná, nikoli účtované náklady.", + "flatRateEstimateForecast": "Projekce zahrnuje odhady paušálních sazeb.", + "selectedWindow": "Vybrané období", + "activeProviders": "Aktivní poskytovatelé", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Dnešní útrata", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Podíl poskytovatelů", + "topProviders": "Nejvýznamnější poskytovatelé", + "costTrend": "Vývoj nákladů", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Nejlepší modely", "requestsInWindow": "Requests In Window", "tokenUsage": "Použití tokenu", "totalTokens": "Celkový počet tokenů", @@ -3862,9 +3862,9 @@ "groupApiKey": "Klíč API", "groupAccount": "Účet", "groupServiceTier": "Úroveň služby", - "serviceTierFast": "Fast", - "serviceTierFlex": "Flex", - "serviceTierStandard": "Standard", + "serviceTierFast": "Rychlé", + "serviceTierFlex": "Flexibilní", + "serviceTierStandard": "Standardní", "serviceTierBreakdownTitle": "Úroveň služeb", "serviceTierBreakdownSubtitle": "Rozdělení Fast / Flex / Standard", "serviceTierUsageSaved": "využití uloženo", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API Koncový bod", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Použijte koncový bod kompatibilní s OpenAI s většinou SDK a nástrojů.", + "testEndpoint": "Otestovat koncový bod →", + "advancedProtocols": "Pokročilé protokoly", "available": "Dostupné koncové body", "cloudProxy": "Cloud Proxy", "disableConfirm": "Opravdu chcete zakázat cloudový proxy server?", @@ -3912,8 +3912,8 @@ "audioTranscriptionDesc": "Přepis zvukových souborů na text (Whisper)", "textToSpeech": "Převod textu na řeč", "textToSpeechDesc": "Převod textu na přirozenou řeč", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Generování hudby", + "musicDesc": "Generujte hudbu a zvukové stopy prostřednictvím ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderování", "moderationsDesc": "Moderování obsahu a bezpečnostní klasifikace", "responsesDesc": "OpenAI Responses API pro Codex a pokročilé pracovní postupy s agenty", @@ -3988,7 +3988,7 @@ "modelsCount": "{count, plural, one {# model} other {# modelů}}", "sectionTitle": "Integrační plocha", "sectionDescription": "OpenAI-compatible API operační protokoly koncového bodu", - "tabApis": "APIs", + "tabApis": "API", "tabProtocols": "Protokoly", "tabsAria": "Koncové sekce", "protocolsTitle": "Protokoly", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Zpracovávat velké dávky požadavků asynchronně (kompatibilní s OpenAI)", "filesApi": "Soubory API", "filesApiDesc": "Nahrávejte a spravujte soubory pro dávkové zpracování", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Generování videa", + "videoDesc": "Generujte videa pomocí modelů AI, jako jsou ComfyUI a Stable Video Diffusion.", + "tailscaleRequestFailed": "Nepodařilo se načíst stav Tailscale", + "tailscaleEnableFailed": "Nepodařilo se povolit Tailscale Funnel", + "tailscaleWaitingForLogin": "Dokončete přihlášení k Tailscale na otevřené kartě prohlížeče. OmniRoute to automaticky zkusí znovu.", + "tailscaleLoginTimedOut": "Vypršel časový limit čekání na přihlášení k Tailscale", + "tailscaleWaitingForFunnel": "Povolte Funnel pro toto zařízení na otevřené kartě prohlížeče. OmniRoute bude stav nadále kontrolovat.", + "tailscaleFunnelTimedOut": "Vypršel časový limit čekání na povolení Tailscale Funnel", + "tailscaleStarted": "Tailscale Funnel byl povolen", + "tailscaleDisableFailed": "Nepodařilo se zakázat Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel byl zakázán", + "tailscaleInstallFailed": "Nepodařilo se nainstalovat Tailscale", + "tailscaleInstallProgress": "Probíhá...", + "tailscaleInstalled": "Tailscale byl úspěšně nainstalován", + "tailscaleRunning": "Spuštěno", + "tailscaleNeedsLogin": "Vyžaduje přihlášení", + "tailscaleStoppedState": "Zastaveno", + "tailscaleNotInstalled": "Nenainstalováno", + "tailscaleUnsupported": "Nepodporováno", + "tailscaleError": "Chyba", + "tailscaleDisable": "Zastavit Funnel", + "tailscaleInstallAndEnable": "Nainstalovat a povolit", + "tailscaleLoginAndEnable": "Přihlásit se a povolit", + "tailscaleEnable": "Povolit Funnel", + "tailscaleUrlNotice": "Používá vaši adresu Tailscale .ts.net. Při prvním použití může být vyžadováno přihlášení a schválení služby Funnel.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Ověřte tento počítač pomocí Tailscale a poté povolte Funnel.", + "tailscaleBinaryPath": "Binární soubor: {path}", + "tailscaleLastError": "Poslední chyba: {error}", + "tailscaleInstallTitle": "Nainstalovat Tailscale", + "tailscaleInstallIntro": "Nainstaluje Tailscale na tento počítač a připraví OmniRoute k povolení funkce Funnel.", + "tailscaleInstallPasswordHint": "V systémech macOS a Linux může být k instalaci balíčku a spuštění démona vyžadováno sudo.", + "tailscaleSudoPlaceholder": "Volitelné heslo pro sudo", + "tailscaleInstalling": "Instalace", "tailscaleSudoLabel": "Heslo Sudo (vyžadováno na macOS/Linux)", "ngrokTitle": "tunel ngrok", "ngrokRunning": "Běh", @@ -4108,7 +4108,7 @@ "all": "Vše", "more": "+{count} dalších", "showInternalTooltip": "Zobrazit nebo skrýt interní trasy (ve výchozím nastavení skryté)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Ověření pomocí bearer tokenu", "requestBody": "Tělo požadavku", "close": "Zavřít", "tryIt": "Vyzkoušet", @@ -4139,14 +4139,14 @@ "badgeInternalTooltip": "Toto je interní systémový koncový bod", "tierAll": "Vše", "tierAuth": "Autentizováno", - "tierLoopback": "Loopback", + "tierLoopback": "Zpětná smyčka", "tierAlwaysProtected": "Vždy chráněno", "tierPublic": "Veřejné", "hideInternal": "Skrýt interní", "showInternal": "Zobrazit interní", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Vlastní systémová výzva", + "customSystemPromptDescription": "Vložit vlastní systémovou výzvu do každého požadavku na model", + "customSystemPromptPlaceholder": "např. Vždy odpovídej jako pirát...", "obsidianEnterToken": "Zadejte prosím API token pro Obsidian", "obsidianConnectFailed": "Připojení se nezdařilo", "obsidianConnectionFailed": "Připojení selhalo", @@ -4176,7 +4176,7 @@ "obsidianDisable": "Zakázat", "obsidianConfigureMobile": "Konfigurovat mobilní Obsidian", "obsidianMobileInstructions": "V mobilním Obsidianu: Nastavení → Synchronizace → WebDAV → zadejte následující:", - "obsidianWebdavUrl": "WebDAV URL", + "obsidianWebdavUrl": "Adresa URL WebDAV", "obsidianUsername": "Uživatelské jméno", "obsidianPassword": "Heslo", "obsidianTailscaleHint": "Pokud se připojujete z mobilu, použijte svou Tailscale IP místo localhost. Obě zařízení musí být ve stejné síti Tailscale.", @@ -4287,10 +4287,10 @@ "failed": "selhal", "previous": "Předchozí", "next": "Další", - "apiKeyId": "Api Key Id", - "offset": "Offset", + "apiKeyId": "ID klíče API", + "offset": "Posun", "limit": "Limit", - "tool": "Tool" + "tool": "Nástroj" }, "a2aDashboard": { "loading": "Načítám nástěnku A2A...", @@ -4346,10 +4346,10 @@ "metadata": "Metadata", "events": "Události", "artifacts": "Artefakty", - "tablePhase": "Table Phase", - "offset": "Offset", + "tablePhase": "Fáze tabulky", + "offset": "Posun", "limit": "Limit", - "skill": "Skill", + "skill": "Dovednost", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "zprávu/odeslat", "rpcMethodStream": "zpráva/stream", @@ -4364,8 +4364,8 @@ "a2aDisabledDesc": "Povolte A2A výše pro zobrazení telemetrie úloh, podrobností o agentovi a nástrojů pro validaci.", "a2aIntro": "Koncový bod Agent2Agent JSON-RPC 2.0 — odesílání úloh, streamování odpovědí, rušení běžících úloh.", "a2aStep1": "Objevte kartu agenta na {code}.", - "a2aStep2": "Send JSON-RPC to {code1} using {code2} or {code3}.", - "a2aStep3": "Track and cancel tasks with {code1} and {code2}." + "a2aStep2": "Odesílejte JSON-RPC do {code1} pomocí {code2} nebo {code3}.", + "a2aStep3": "Sledujte a rušte úlohy pomocí {code1} a {code2}." }, "memory": { "a": "A", @@ -4375,68 +4375,68 @@ "cancel": "Zrušit", "checkHealth": "Zkontrolujte zdraví", "checkingHealth": "Kontrola…", - "compactOld": "Compact old", + "compactOld": "Kompaktovat staré", "concept": { - "title": "Conversational Memory", - "description": "OmniRoute learns from every conversation, remembering facts, episodes, procedures, and semantic concepts that make responses more accurate and context-aware.", - "howWorksToggle": "How it works", - "howWorksContent": "1. Automatic extraction: at the end of each response, facts and episodes are detected and saved automatically.\n2. Retrieval: before each response, the most relevant memories are searched via FTS5 (exact), vector (semantic), or hybrid RRF.\n3. Injection: relevant memories are injected into the assistant context to improve response quality.\n4. Management: use this page to view, edit, export, and compact old memories." + "title": "Konverzační paměť", + "description": "OmniRoute se učí z každé konverzace a pamatuje si fakta, události, postupy a sémantické koncepty, díky nimž jsou odpovědi přesnější a lépe zohledňují kontext.", + "howWorksToggle": "Jak to funguje", + "howWorksContent": "1. Automatická extrakce: na konci každé odpovědi jsou automaticky rozpoznána a uložena fakta a události.\n2. Vyhledávání: před každou odpovědí jsou nejrelevantnější vzpomínky vyhledány pomocí FTS5 (přesně), vektorového vyhledávání (sémanticky) nebo hybridního RRF.\n3. Vložení: relevantní vzpomínky jsou vloženy do kontextu asistenta, aby se zlepšila kvalita odpovědí.\n4. Správa: na této stránce můžete zobrazovat, upravovat, exportovat a kompaktovat staré vzpomínky." }, "content": "Obsah", "contentPlaceholder": "Hodnota nebo obsah JSON k zapamatování", "created": "Vytvořeno", - "delete": "Delete", - "deleteConfirmDesc": "This action cannot be undone. The memory will be permanently removed.", - "deleteConfirmTitle": "Delete memory?", + "delete": "Odstranit", + "deleteConfirmDesc": "Tuto akci nelze vrátit zpět. Vzpomínka bude trvale odstraněna.", + "deleteConfirmTitle": "Odstranit vzpomínku?", "description": "Zobrazení a správa uložených položek paměti", - "editMemory": "Edit memory", + "editMemory": "Upravit vzpomínku", "editModal": { - "title": "Edit Memory", + "title": "Upravit vzpomínku", "metadataLabel": "Metadata (JSON)", - "metadataInvalid": "Invalid JSON", - "saveFailed": "Failed to save memory" + "metadataInvalid": "Neplatný JSON", + "saveFailed": "Paměť se nepodařilo uložit" }, "embedding": { "autoLabel": "Automaticky", - "autoDesc": "Uses best available: remote provider > static > transformers", - "remoteLabel": "Remote provider", - "remoteDesc": "Uses embedding via provider API (requires API key)", - "staticLabel": "Static local (potion)", - "staticDesc": "Local embedding without WASM or external dependencies", + "autoDesc": "Použije nejlepší dostupnou možnost: vzdálený poskytovatel > statické > transformers", + "remoteLabel": "Vzdálený poskytovatel", + "remoteDesc": "Používá vektorizaci prostřednictvím API poskytovatele (vyžaduje klíč API)", + "staticLabel": "Statické lokální (potion)", + "staticDesc": "Lokální vektorizace bez WASM nebo externích závislostí", "transformersLabel": "Transformers.js (MiniLM)", - "transformersDesc": "Local embedding via @huggingface/transformers (~400MB RAM)", - "providerModelLabel": "Provider / Model", - "noRemoteProviders": "No providers with configured API key", - "selectProviderModel": "Select a model", + "transformersDesc": "Lokální vektorizace prostřednictvím @huggingface/transformers (~400MB RAM)", + "providerModelLabel": "Poskytovatel / model", + "noRemoteProviders": "Žádní poskytovatelé s nakonfigurovaným klíčem API", + "selectProviderModel": "Vyberte model", "customBaseUrlLabel": "Vlastní základní URL (volitelné)", "customModelIdLabel": "ID vlastního modelu (volitelné)", "customEndpointHelp": "Použijte OpenAI-kompatibilní /embeddings koncový bod. Místní koncové body jsou povoleny; cíle cloudových metadat jsou blokovány.", "customEndpointSave": "Použít vlastní koncový bod", "customEndpointInvalid": "Zadejte platnou základní URL HTTP(S) a ID modelu, nebo nechte obě pole prázdná.", "customEndpointSaveFailed": "Vlastní koncový bod pro vložení se nepodařilo uložit.", - "staticEnabledLabel": "Enable Static Potion", - "staticEnabledDesc": "Download and use potion-base-8M model locally", - "transformersEnabledLabel": "Enable Transformers.js", - "transformersEnabledDesc": "Opt-in for local MiniLM (~400MB RAM, ~3s cold start)", - "transformersWarning": "Requires ~400MB RAM and ~3s cold start on the first semantic query." + "staticEnabledLabel": "Povolit Static Potion", + "staticEnabledDesc": "Stáhnout a lokálně používat model potion-base-8M", + "transformersEnabledLabel": "Povolit Transformers.js", + "transformersEnabledDesc": "Přihlásit se k používání lokálního MiniLM (~400MB RAM, ~3s studený start)", + "transformersWarning": "Při prvním sémantickém dotazu vyžaduje ~400MB RAM a studený start trvající ~3s." }, "emptyState": { "title": "Zatím žádné vzpomínky", - "description": "Memories are created automatically from conversations. You can also add them manually using the button above." + "description": "Paměti se vytvářejí automaticky z konverzací. Můžete je také přidat ručně pomocí tlačítka výše." }, "engine": { - "statusTitle": "Engine Status", - "embeddingTitle": "Embedding Source", - "rerankTitle": "Rerank (optional)", - "reindexNow": "Reindex now", - "reindexStarted": "Reindexing started ({pending} pending)", - "reindexFailed": "Failed to start reindexing", - "keywordLabel": "Keyword (FTS5)", - "keywordReason": "Keyword search always available", - "embeddingLabel": "Embedding", + "statusTitle": "Stav enginu", + "embeddingTitle": "Zdroj vektorizace", + "rerankTitle": "Přeřazení (volitelné)", + "reindexNow": "Znovu indexovat", + "reindexStarted": "Opětovná indexace zahájena ({pending} čeká)", + "reindexFailed": "Opětovnou indexaci se nepodařilo zahájit", + "keywordLabel": "Klíčové slovo (FTS5)", + "keywordReason": "Vyhledávání podle klíčových slov je vždy dostupné", + "embeddingLabel": "Vektorizace", "vectorStoreLabel": "Vektorové úložiště", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Přeřazení", "qdrantDisabled": "Zakázáno", "qdrantOk": "V pořádku ({latencyMs} ms)", "qdrantError": "Chyba připojení", @@ -4462,7 +4462,7 @@ "pipelineError": "Chyba potrubí", "pipelineOk": "Potrubí OK ({latencyMs}ms)", "playground": { - "infoTitle": "Memory Playground", + "infoTitle": "Hřiště paměti", "infoDesc": "Simulujte, co by bylo načteno pro daný dotaz. Žádné paměti nejsou upravovány — náhled pouze pro čtení.", "queryLabel": "Testovací dotaz", "queryPlaceholder": "Napište otázku nebo testovací frázi...", @@ -4474,11 +4474,11 @@ "simulate": "Simulovat", "resultsTitle": "{count} výsledků", "resolutionTitle": "Vyhodnocení vyhledávání", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Vektorizace", "resolutionStore": "Vektorové úložiště", "resolutionStrategy": "Použitá strategie", "rerankApplied": "Aplikován rerank", - "fallback": "Fallback", + "fallback": "Záložní možnost", "noResults": "Pro tento dotaz nebyly nalezeny žádné paměti.", "tokensUsed": "použitých tokenů", "none": "žádné", @@ -4521,7 +4521,7 @@ "cleanNow": "Vyčistit nyní", "cleanupSuccess": "{count} bod(ů) odebráno", "cleanupFailed": "Čištění se nezdařilo", - "hostLabel": "Host", + "hostLabel": "Hostitel", "collectionLabel": "Kolekce" }, "rerank": { @@ -4544,8 +4544,8 @@ }, "tabs": { "memories": "Vzpomínky", - "playground": "Playground", - "engine": "Engine" + "playground": "Hřiště", + "engine": "Jádro" }, "title": "Správa paměti", "tokensUsed": "Použité tokeny", @@ -4569,7 +4569,7 @@ "executionsTab": "Spuštění", "selectSkillToInspect": "Vyberte dovednost vlevo pro kontrolu.", "schemaTab": "Schéma", - "handlerTab": "Handler", + "handlerTab": "Obslužná rutina", "inputSchema": "Vstupní schéma", "outputSchema": "Výstupní schéma", "handlerCode": "Kód handleru", @@ -4577,7 +4577,7 @@ "runTestPlaceholder": "Spustit test (zástupný symbol)", "setModeAria": "Nastavit režim {mode}", "uninstallSkill": "Odinstalovat dovednost", - "sandboxTab": "Sandbox", + "sandboxTab": "Izolované prostředí", "loading": "Načítám dovednosti...", "noSkills": "Nebyly nalezeny žádné dovednosti", "noExecutions": "Nebyla nalezena žádná spuštění", @@ -4599,7 +4599,7 @@ "timeoutDesc": "Maximální doba čekání na odpověď", "networkAccess": "Síťový přístup", "networkAccessDesc": "Povolit odchozí síťové požadavky", - "mode": "Mode", + "mode": "Režim", "q": "Q", "filterSkillsPlaceholder": "Filtrujte dovednosti podle názvu, popisu nebo značky", "allModes": "Všechny režimy", @@ -4607,12 +4607,12 @@ "enabledSkills": "Povoleno", "totalExecutions": "Spuštění", "successRate": "Míra úspěšnosti", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Tržiště", "applyFilters": "Použít filtry", "popularDefaultsLabel": "Ve výchozím nastavení populární pro vybraného poskytovatele:", "onMode": "ZAP", "offMode": "VYP", - "autoMode": "AUTO", + "autoMode": "AUTOMATICKY", "installSkillButton": "Instalovat dovednost", "installSkillModalTitle": "Instalovat dovednost", "installJsonPlaceholder": "Sem vložte JSON manifest dovednosti...", @@ -4623,9 +4623,9 @@ "searchMarketplacePlaceholder": "Hledat dovednosti...", "searchMarketplace": "Prohledat Marketplace", "marketplaceEmpty": "V marketplace nebyly nalezeny žádné dovednosti", - "marketplaceError": "Search failed", + "marketplaceError": "Vyhledávání se nezdařilo", "installingFromMarketplace": "Instalace z tržiště...", - "popularSkills": "Popular Skills", + "popularSkills": "Oblíbené dovednosti", "skillsMarketplace": "Trh dovedností", "searching": "Vyhledávání...", "pageInfo": "Stránka {page} z {totalPages} (celkem {total})", @@ -4665,13 +4665,13 @@ "retry": "Zkusit znovu", "allOperational": "Všechny systémy funkční", "issuesDetected": "Zjištěny problémy se systémem", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute je připraven", + "healthVerdictActionRequired": "K obnovení plného provozu je nutná akce", + "healthVerdictCoolingDown": "Čekání po nedávných změnách", + "healthSubtitle": "Kontrola stavu systému", + "advancedDiagnosticsTitle": "Pokročilá diagnostika", + "hide": "Skrýt", + "show": "Zobrazit", "updatedAt": "Aktualizováno {time}", "latency": "Latence", "latencyP50": "p50", @@ -4721,11 +4721,11 @@ "resetting": "Resetuji...", "resetAll": "Obnovit vše", "until": "Do {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Vyčerpáno", + "learnedFromHeaders": "Zjištěno z hlaviček", + "remainingOfLimit": "Zbývá {remaining}/{limit}", + "throttleStatus": "Omezení: {value}", + "lastHeaderUpdate": "Aktualizace hlavičky: {age}", "databaseHealth": "Stav databáze", "databaseHealthDescription": "Diagnostikujte a opravte zastaralé řádky kvót/domén a nefunkční odkazy na kombinace.", "status": "Stav", @@ -4773,7 +4773,7 @@ "inactive": "Neaktivní", "noConnectionId": "žádné ID připojení", "accountModelSummary": "{connectionId} · {count} modelů", - "cooldown": "cooldown", + "cooldown": "čekací doba", "durationRemaining": "zbývá {duration}", "noSyncedModelsOrTraffic": "Zatím žádné synchronizované modely ani nedávný provoz.", "providerRowSummary": "{active}/{total} aktivních účtů · {requests} pož. · {successRate} úspěšnost · {latency} prům.", @@ -4802,7 +4802,7 @@ "partialData": "Telemetrie je částečně dostupná: {error}" }, "mitm": { - "title": "MITM Proxy", + "title": "MITM proxy", "description": "Transparentní proxy pro zachycování a směrování požadavků klientů.", "enable": "Povolit MITM Proxy", "enableDesc": "Spusťte nebo zastavte proces místního zachycení a přepsání DNS.", @@ -4888,28 +4888,28 @@ "previous": "Předchozí", "next": "Další", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Zobrazit podrobnosti", + "eventMetadata": "Metadata události", + "eventPayload": "Datový obsah události", + "requestId": "ID požadavku", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", + "offset": "Posun", "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "status": "Stav", + "resourceType": "Typ prostředku", + "totalEntries": "Celkový počet položek", + "tab": "Karta", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Zavřít", + "runningRequests": "Aktivní požadavky", + "runningRequestsDesc": "Zobrazení aktuálně probíhajících upstreamových požadavků v reálném čase", "clearAll": "Vymazat vše", "confirmClearActiveRequests": "Vymazat všechny aktivní požadavky?", "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "provider": "Poskytovatel", + "account": "Účet", + "elapsed": "Uplynulý čas", "activeStage": "Fáze", "activeStageUnknown": "Zatím neodesláno na upstream", "activeStageRegistered": "Registrováno", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Získán slot omezovače rychlosti", "activeStageSendingToProvider": "Odesílání na upstream", "activeStageProviderResponseStarted": "Odpověď z upstreamu zahájena", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Počet", + "payloads": "Datové obsahy", + "viewPayloads": "Zobrazit", + "activeCount": "{count} aktivních", + "clientPayload": "Datová část požadavku klienta", + "upstreamPayload": "Datová část požadavku na upstream poskytovatele", + "upstreamNotSentYet": "Dosud neodesláno upstream poskytovateli", + "runningRequestDetailMeta": "Účet: {account} — Uplynulý čas: {elapsed}", + "export": "Exportovat", + "exporting": "Exportování...", + "exportFailed": "Export se nezdařil", "cleanHistoryButton": "Vyčistit historii", "cleanHistoryTitle": "Vyčistit historii logů?", "cleanHistoryMessage": "Tímto trvale vymažete všechny řádky logů požadavků, starší řádky podrobností a místní soubory artefaktů v DATA_DIR/call_logs. Živá stránka se po vyčištění obnoví.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Vyčištěno {deleted} záznamů logů, {deletedArtifacts} artefaktů a {deletedDetailedLogs} starších řádků podrobností.", "cleanHistoryEmpty": "Nebyla nalezena žádná historie logů požadavků.", "cleanHistoryFailed": "Nepodařilo se vyčistit historii logů.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Časový rozsah", + "lastNHours": "Posledních {hours}", + "defaultRange": "výchozí", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Nepodařilo se načíst protokoly", + "copyFailed": "Nepodařilo se zkopírovat položku protokolu", + "copyLogEntry": "Kopírovat položku protokolu", "filterByLevel": "Filtrovat podle úrovně logu", "searchPlaceholder": "Hledat v lozích…", "searchAria": "Hledat v záznamech logu", @@ -4987,9 +4987,9 @@ "multiProvider": "Více poskytovatelů", "usageTracking": "Sledování využití", "securityDesc": "Nastavte heslo pro ochranu nástěnky nebo to teď přeskočte.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Bez hesla nebudete moci během nastavení přidat poskytovatele. Můžete je přidat později z řídicího panelu po nastavení hesla.", "providerDesc": "Připojte svého prvního AI poskytovatele. Další můžete přidat později.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Chcete-li přidat poskytovatele, musíte nejprve nastavit heslo. Vraťte se prosím ke kroku zabezpečení a nastavte heslo, nebo přidejte poskytovatele později z řídicího panelu.", "apiKeyRequired": "API klíč (povinný)", "customUrlOptional": "Vlastní URL (volitelně)", "testDesc": "Ověřme, zda připojení k vašemu poskytovateli funguje.", @@ -5076,32 +5076,35 @@ "importFromFileImporting": "Importování…", "importFromFileImport": "Importovat {count} poskytovatelů", "importFromFileResult": "Importováno {success} poskytovatelů ({failed} selhalo)", + "importFromFileDownloadTemplate": "Stáhnout šablonu CSV", + "importFromFileMoreErrors": "+{count} dalších", + "importFromFileSchemaHint": "Sloupce CSV jsou poziční: provider, name, apiKey, baseUrl (volitelné), priority (volitelné). Sloupec provider musí obsahovat existující ID spravovaného poskytovatele nebo již zaregistrované ID uzlu kompatibilního s OpenAI/Anthropic — tento import nevytváří nové uzly koncových bodů.", "adaptaTutorial": { - "title": "How to connect Adapta Web", - "introPrefix": "Adapta authenticates through Clerk. The token", - "introSuffix": "is a long-lived JWT that lets OmniRoute refresh sessions automatically.", - "or": "or", - "step1Title": "Open Adapta chat", - "step1DescPrefix": "Open", - "step1DescSuffix": "and sign in with your Gold or Business account.", - "step2Title": "Open DevTools", - "step2DescPrefix": "Press", - "step2DescSuffix": "to open Developer Tools.", - "step3Title": "Go to Application → Cookies", - "step3DescPrefix": "In the", - "step3DescMiddle": "expand", - "step3DescSuffix": "and click", - "step4Title": "Copy the cookie value for", - "step4DescPrefix": "Find the cookie named", - "step4DescMiddle": "in the list. Click it and copy the content from the", - "step4DescSuffix": "column. It starts with", - "step5Title": "Paste it here and save", - "step5DescPrefix": "Click", - "step5DescMiddle": "paste the", - "step5DescSuffix": "value into the API Key field, then save. OmniRoute will refresh the session automatically.", + "title": "Jak připojit Adapta Web", + "introPrefix": "Adapta ověřuje uživatele prostřednictvím Clerk. Token", + "introSuffix": "je dlouhodobý JWT, který umožňuje OmniRoute automaticky obnovovat relace.", + "or": "nebo", + "step1Title": "Otevřít chat Adapta", + "step1DescPrefix": "Otevřete", + "step1DescSuffix": "a přihlaste se pomocí svého účtu Gold nebo Business.", + "step2Title": "Otevřete DevTools", + "step2DescPrefix": "Stisknutím", + "step2DescSuffix": "otevřete vývojářské nástroje.", + "step3Title": "Přejděte do Application → Cookies", + "step3DescPrefix": "V části", + "step3DescMiddle": "rozbalte", + "step3DescSuffix": "a klikněte na", + "step4Title": "Zkopírujte hodnotu souboru cookie pro", + "step4DescPrefix": "V seznamu vyhledejte soubor cookie s názvem", + "step4DescMiddle": "Klikněte na něj a zkopírujte obsah ze sloupce", + "step4DescSuffix": "Začíná na", + "step5Title": "Vložte jej sem a uložte", + "step5DescPrefix": "Klikněte", + "step5DescMiddle": "vložte", + "step5DescSuffix": "hodnotu do pole API Key a poté ji uložte. OmniRoute relaci automaticky obnoví.", "tipLabel": "Tip:", - "tipPrefix": "The", - "tipSuffix": "cookie is long-lived, usually for months. You only need to renew it if you sign out or Adapta invalidates the session." + "tipPrefix": "Tento", + "tipSuffix": "soubor cookie má dlouhou platnost, obvykle několik měsíců. Obnovit jej musíte pouze v případě, že se odhlásíte nebo Adapta zneplatní relaci." }, "editProvider": "Upravit poskytovatele", "deleteProvider": "Smazat poskytovatele", @@ -5131,17 +5134,17 @@ "reorderByAvailability": "Přeřadit", "reorderByAvailabilityTitle": "Seřadit připojení podle dostupnosti", "reorderByAvailabilityError": "Nepodařilo se seřadit připojení podle dostupnosti", - "distributeProxies": "Distribute Proxies", - "distributing": "Distributing...", + "distributeProxies": "Distribuovat proxy servery", + "distributing": "Distribuce...", "selectedCount": "{count, plural, one {# vybraný} few {# vybrané} other {# vybraných}}", "accountsCount": "{count, plural, one {# účet} few {# účty} other {# účtů}}", "testAllOAuth": "Test všech připojení OAuth", "testAllFree": "Test všech bezplatných připojení", "testAllApiKey": "Test všech připojení API klíči", "testAllCompatible": "Test všech kompatibilních připojení", - "testAllModels": "Test all models", - "testAllModelsConfirm": "Test all visible models? Failed models will be hidden if auto-hide is enabled.", - "testingAllModels": "Testing {done}/{total}...", + "testAllModels": "Otestovat všechny modely", + "testAllModelsConfirm": "Otestovat všechny viditelné modely? Neúspěšné modely budou skryty, pokud je zapnuto automatické skrývání.", + "testingAllModels": "Testování {done}/{total}...", "testAllResults": "{ok} z {total} modelů funguje", "noModelsToTest": "Aktuálnímu filtru neodpovídají žádné modely", "showAllModels": "Vše", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} skryto", "warningCount": "{count} Upozornění", "noConnections": "Nespojeno", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Platnost vypršela", + "expiringSoonBadge": "Platnost brzy vyprší", "freeTier": "Volná úroveň", "freeTierAvailable": "Volná úroveň k dispozici", "hasFreeTooltip": "K dispozici bezplatný tarif", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Podpora tohoto poskytovatele byla ukončena", "riskNotice": { "title": "Než budete pokračovat", - "detailsTitle": "Usage caveats", + "detailsTitle": "Omezení používání", "tooltip": "Poskytovatel s upozorněními k použití — klikněte pro podrobnosti", "oauth": "Tento poskytovatel používá vaši oficiální relaci/OAuth produktu, což není autorizováno pro použití jako proxy/router. Nedoporučujeme intenzivní používání autonomních agentů (styl OpenCloud, dlouhé vícekrokové toky, velké dávky) — upstream může reagovat omezením nebo zablokováním účtu. Používejte na vlastní riziko.", "webCookie": "Tento poskytovatel se autentizuje pomocí souborů cookie vaší webové relace. Služba upstream může relaci kdykoli zneplatnit, což bude vyžadovat opětovné přihlášení. Nedoporučuje se pro dlouhé bezobslužné operace. Používejte na vlastní riziko.", @@ -5188,9 +5191,9 @@ "cancel": "Zrušit" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "Počet označených připojení: {count} — až {maxFailures} nedávných selhání{lastFailureSuffix}. Kliknutím zobrazíte stav připojení.", + "lastFailureSuffix": "(poslední selhání {time})", + "ariaLabel": "Zobrazit podrobnosti o stavu připojení, počet upozornění: {count}" }, "disabled": "Zakázáno", "enableProvider": "Povolit poskytovatele", @@ -5225,7 +5228,7 @@ "failedCreate": "Vytvoření poskytovatele selhalo", "errorOccurred": "Došlo k chybě. Zkuste to prosím znovu.", "modelStatus": "Status modelu", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Pouze nakonfigurované", "allModelsOperational": "Všechny modely funkční", "modelsWithIssues": "{count} model(y) s problémy", "allModelsNormal": "Všechny modely reagují normálně.", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL ikony", "iconUrlHint": "Volitelné. URL obrázku zobrazeného jako ikona tohoto poskytovatele.", "iconUrlInvalid": "Neplatná URL ikony. Použijte http(s):// nebo data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Časové pásmo pro obnovení denní kvóty", + "dailyQuotaResetTimezoneHint": "Volitelné časové pásmo IANA použité v případě, že upstream neposkytne X-RateLimit-Reset. Ponecháte-li pole prázdné, bude zachována krátká prodleva.", + "dailyQuotaResetHourLabel": "Hodina obnovení denní kvóty", + "dailyQuotaResetHourHint": "Místní hodina 0–23 ve výše uvedeném časovém pásmu. Prázdná hodnota znamená, že na úrovni uzlu není nastaven čas.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Poskytovatel nenalezen", "deleteConnectionConfirm": "Smazat toto připojení?", "deleteConnectionConfirmNamed": "Opravdu chcete smazat {name}? Tuto akci nelze vrátit zpět.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Smazat vybrané ({count})", + "batchDeleteConfirm": "Smazat připojení ({count})? Tuto akci nelze vrátit zpět.", + "batchDeleteSuccess": "Smazaná připojení: {count}", "batchActivateSelected": "Aktivovat", "batchDeactivateSelected": "Deaktivovat", "batchRetestSelected": "Znovu otestovat", @@ -5292,7 +5295,7 @@ "filterError": "Chyba", "filterBanned": "Zablokováno", "filterCreditsExhausted": "Vyčerpané kredity", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Hledat účty…", "noFilteredConnections": "Aktuálnímu filtru neodpovídají žádná připojení.", "failedSetAlias": "Nastavení aliasu selhalo", "setAliasSuccess": "Alias {alias} nastaven", @@ -5305,10 +5308,10 @@ "openaiCompatibleDetails": "Podrobnosti o kompatibilitě s OpenAI", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Vektorové reprezentace", + "audioTranscriptions": "Přepisy zvuku", + "audioSpeech": "Syntéza řeči", + "imagesGenerations": "Generování obrázků", "chatCompletions": "Chat Completions", "importingModels": "Importuji...", "importFromModels": "Import z /models", @@ -5356,7 +5359,7 @@ "filterModels": "Filtrovat modely…", "testAllRateLimited": "Dosažen limit četnosti požadavků, předčasně zastaveno", "hideFailedAuto": "Automaticky skrýt neúspěšné modely", - "selectAllModels": "Select all", + "selectAllModels": "Vybrat vše", "hideAllModels": "Skrýt vše", "modelsActive": "aktivní", "showModel": "Zobrazit model", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Jeden klíč na řádek. Formát: name|apiKey nebo jen apiKey (automaticky pojmenováno podle indexu).", "bulkValidateKeys": "Před uložením ověřte každý klíč (pomalejší)", "bulkAddAllKeys": "Přidat všechny klíče", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {Přidán # klíč} other {Přidáno # klíčů}}", + "bulkFailedCount": "{count, plural, one {# selhání} other {# selhání}}", "optional": "Volitelně", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", @@ -5419,11 +5422,11 @@ "configured": "nastaveno", "providerProxyConfigureHint": "Nastavit proxy pro všechna připojení tohoto poskytovatele", "providerProxy": "Proxy poskytovatele", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Opravit env", + "repairEnvWorking": "Oprava...", + "repairEnvHint": "Obnovit chybějící výchozí hodnoty OAuth v .env bez přepsání existujících hodnot.", + "repairEnvSuccess": "Výchozí hodnoty OAuth byly obnoveny", + "repairEnvFailed": "Soubor .env se nepodařilo opravit", "noConnectionsYet": "Zatím bez spojení", "addFirstConnectionHint": "Pro začátek přidejte své první připojení", "addConnection": "Přidat připojení", @@ -5475,9 +5478,9 @@ "reauthenticateConnection": "Znovu ověřit toto připojení", "proxyConfig": "Nastavení Proxy", "aliasExistsAlert": "Alias \"​{alias}\" již existuje. Použijte prosím jiný model nebo upravte existující alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "název aliasu", + "clickToSetAlias": "Kliknutím nastavíte alias", + "clickToEditAlias": "Alias: {alias} (kliknutím upravíte)", "openRouterAnyModelHint": "OpenRouter podporuje jakýkoli model. Přidejte modely a vytvořte aliasy pro rychlý přístup.", "modelIdFromOpenRouter": "ID modelu (z OpenRouter)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", @@ -5534,18 +5537,18 @@ "interceptFetchHint": "Přepisovat nativní volání nástroje web_fetch na /v1/web/fetch v OmniRoute.", "interceptionLoadError": "Nepodařilo se načíst nastavení zachytávání: {error}", "interceptionSaveError": "Nepodařilo se uložit nastavení zachytávání: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", + "ccAliasSectionTitle": "Zpřístupnit v Claude Code (claude/…)", + "ccAliasSectionHint": "Zveřejnit modely tohoto poskytovatele pod zrcadlenými ID claude/<provider>/<model>, aby je mohla funkce zjišťování modelů brány Claude Code zobrazit. Ve výchozím nastavení vypnuto — zapnutím se zdvojnásobí počet položek katalogu pro všechny klienty.", + "ccAliasProviderLevelLabel": "Výchozí nastavení poskytovatele", + "ccAliasModelOverridesLabel": "Přepsání pro jednotlivé modely", + "ccAliasModelOverrideAriaLabel": "Přepsání pro {modelId}", + "ccAliasStateInherit": "Zdědit", + "ccAliasStateOn": "Zapnuto", + "ccAliasStateOff": "Vypnuto", + "ccAliasAddModelPlaceholder": "ID modelu (např. gpt-4o)", + "ccAliasAddModelButton": "Přidat přepsání", + "ccAliasLoadError": "Nastavení aliasů pro zjišťování se nepodařilo načíst: {error}", + "ccAliasSaveError": "Nastavení aliasu pro zjišťování se nepodařilo uložit: {error}", "compatUpstreamHeadersLabel": "Extra upstream hlavičky", "compatUpstreamHeadersHint": "Nastavení s vysokými oprávněními — stejná úroveň důvěryhodnosti jako při úpravách přihlašovacích údajů API poskytovatele; měli by jej používat pouze důvěryhodní administrátoři. Sloučeno poté, co OmniRoute přidá ověření z klíče API poskytovatele. Pokud vlastní záhlaví používá stejný název jako existující (např. Authorization), vaše hodnota zcela nahradí automaticky vygenerované záhlaví (včetně tokenu Bearer) — upstream vidí pouze to, co jste zadali, nikoli klíč z nastavení. Nesprávná nastavení může způsobit chybu 401 nebo nefunkční upstream ověření. Jeden řádek na jedno záhlaví (např. extra ověření pro některé brány). Pro náhled najděte na hodnotu nebo ji označte. Uloží se při odklonu, kliknutí mimo nebo zavření tohoto panelu.", "compatUpstreamHeaderName": "Název hlavičky", @@ -5592,9 +5595,9 @@ "email": "Email", "healthCheckMinutes": "Kontrola stavu (min)", "healthCheckHint": "Proaktivní interval obnovy tokenu. 0 = zakázáno.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", + "deselectAllModels": "Zrušit výběr všech", + "modelsActiveCount": "Aktivních: {active}/{total}", + "noModelsMatch": "Filtru „{filter}“ neodpovídají žádné modely", "groupLabel": "Prostředí", "groupPlaceholder": "např. eKaizen, Osobní", "failedTestConnection": "Test připojení selhal", @@ -5704,7 +5707,7 @@ "codexExternalLinkConnected": "Účet Codex byl propojen prostřednictvím externího odkazu.", "codexExternalLinkExpired": "Platnost odkazu vypršela před dokončením.", "importCodexAuth": "Ověření importu", - "codexImportModalTitle": "Import Codex Auth", + "codexImportModalTitle": "Importovat přihlašovací údaje Codex", "codexImportTabSingle": "Svobodný", "codexImportTabBulk": "Hromadně", "codexImportTabUpload": "Nahrajte soubor", @@ -5748,55 +5751,55 @@ "statusDeactivated": "Deaktivováno (Manuální)", "statusBanned": "Zablokováno / Porušení sandboxu", "statusCreditsExhausted": "Nedostatečný zůstatek / Kvóta vyčerpána", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "showEmails": "Zobrazit všechny e-mailové adresy", + "hideEmails": "Skrýt všechny e-mailové adresy", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Přidejte další klíč API nebo vložte více klíčů", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "aggregatorsGateways": "Agregátory a brány", + "enterpriseCloud": "Podniková a cloudová řešení", + "apiFormatLabel": "Popisek formátu API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "Oblast API: Čína", + "apiRegionHint": "Nápověda k oblasti API", + "apiRegionInternational": "Oblast API: mezinárodní", + "apiRegionLabel": "Popisek oblasti API", + "apikey": "Klíč API", + "audio": "Zvuk", + "audioProvidersHeading": "Nadpis poskytovatelů zvuku", "cloudAgentProviders": "Poskytovatelé cloudových agentů", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Krátký popisek zvuku", + "azureOpenAiBaseUrlHint": "Nápověda k základní URL Azure OpenAI", + "bailianBaseUrlHint": "Nápověda k základní URL Bailian", + "claudeWebCookieHint": "Otevřete claude.ai → DevTools → Application → Cookies → claude.ai a zkopírujte hodnotu 'sessionKey'. Pro Cloudflare jsou také potřeba cf_clearance, __cf_bm a _cfuvid.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Nápověda k souboru cookie služby Blackbox Web", + "blackboxWebCookiePlaceholder": "Zástupný text souboru cookie služby Blackbox Web", "t3ChatWebCookieHint": "Otevřete t3.chat → DevTools → Aplikace → Místní úložiště → https://t3.chat, zkopírujte 'convex-session-id'. Poté otevřete DevTools → Network, zkopírujte celou hlavičku cookie z libovolné žádosti o chat. Obě hodnoty vložte do polí níže.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Nápověda ke cookie Grok Web", "blockClaudeExtraUsageDescription": "Když je povoleno, OmniRoute označí toto spojení Claude jako nedostupné, jakmile API pro využití nahlásí zařazené dodatečné využití, takže se záložní přepne na jiné spojení místo pokračování v dodatečném účtování podle skutečného využití.", "blockClaudeExtraUsageLabel": "Zablokovat nadměrné používání Claude", "disableCoolingDescription": "Přeskočit přechodný cooldown, aby toto připojení zůstalo způsobilé i po obnovitelných chybách (konečné stavy jako zablokováno/vypršelo stále platí).", "disableCoolingLabel": "Zakázat cooldown pro toto připojení", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {Přidán 1 klíč} few {Přidány # klíče} other {Přidáno # klíčů}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {Přeskočen 1 duplikát} few {Přeskočeny # duplikáty} other {Přeskočeno # duplikátů}}", + "bulkPasteHint": "Vložte jeden API klíč na každý řádek. Prázdné řádky budou ignorovány a duplicitní klíče přeskočeny.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Přidá beta hlavičku redact-thinking pro upstreamy kompatibilní s CC, které vyžadují skryté proudy přemýšlení Claude.", + "ccCompatibleRedactThinkingLabel": "Povolit beta funkci redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Přidá `display: \"summarized\"` k požadavkům na přemýšlení kompatibilním s CC, aby podporované modely Claude mohly streamovat viditelné přírůstky přemýšlení.", + "ccCompatibleSummarizeThinkingLabel": "Povolit zobrazení shrnutého přemýšlení", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Použít prioritní úroveň služby pro požadavky Codex, pokud je dostupná.", + "codexFastServiceTierLabel": "Rychlá úroveň služby Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Zástupný text názvu hlavičky kompatibilního upstreamu", + "compatUpstreamHeaderValuePlaceholder": "Zástupný text hodnoty hlavičky kompatibilního upstreamu", + "compatible": "Kompatibilní", + "configuredCount": "Počet nakonfigurovaných položek", + "consoleApiKeyOracleHint": "Nápověda k API klíči konzole Oracle", + "consoleApiKeyOracleLabel": "API klíč konzole Oracle", + "consoleApiKeyOraclePlaceholder": "Zástupný text API klíče konzole Oracle", + "newApiUserIdLabel": "ID uživatele New-API", + "newApiUserIdPlaceholder": "např. 12345", + "newApiUserIdHint": "Hodnota hlavičky AgentRouter New-Api-User, která se používá společně s API klíčem konzole k načtení zůstatku kvóty.", "newApiAggregatorToggleLabel": "Agregátorová Brána", "newApiAggregatorToggleHint": "Povolit detekci zůstatku pro uzly agregátoru New-API / One-API / Sub2API. Dashboard zobrazí odznak zůstatku a směrování předletu kvót bude přeskočeno pro vyčerpané účty.", "newApiAggregatorConsoleApiKeyHint": "Token pro přístup k systému pro koncový bod agregátoru /api/user/self. Ne klíč API pro směrování.", @@ -5830,82 +5833,82 @@ "featureFlagNewApiAggregatorBalanceDescription": "Povolit detekci zůstatku pro uzly kompatibilní s New-API / One-API / Sub2API agregátorem", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Nápověda k vlastnímu uživatelskému agentovi", + "customUserAgentLabel": "Vlastní uživatelský agent", + "databricksBaseUrlHint": "Nápověda k základní URL Databricks", + "defaultThinkingStrengthHint": "Použije se, když požadavek neurčuje míru úsilí při uvažování.", + "defaultThinkingStrengthLabel": "Výchozí intenzita přemýšlení", + "deleteAllExtraApiKeys": "Odstranit vše", + "excludedModelsHint": "Nápověda k vyloučeným modelům", + "excludedModelsLabel": "Vyloučené modely", + "excludedModelsPlaceholder": "Zástupný text vyloučených modelů", + "expirationBannerExpired": "Platnost vypršela", + "expirationBannerExpiredDesc": "Popis upozornění na vypršení platnosti", + "expirationBannerExpiringSoon": "Platnost brzy vyprší", + "expirationBannerExpiringSoonDesc": "Popis upozornění na blížící se vypršení platnosti", + "extraApiKeyMasked": "Klíč {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Nápověda k dalším API klíčům", + "extraApiKeysLabel": "Další API klíče", + "apiKeyHealthLabel": "Stav API klíče", + "apiKeyStatusActive": "Aktivní", + "apiKeyStatusWarning": "Varování ({count} selhání)", + "apiKeyStatusInvalid": "Neplatný", + "primaryKey": "Primární klíč", + "apiKeyInvalidAlert": "{count} klíčů API bylo označeno jako neplatné kvůli selháním ověřování v připojeních: {connections}. Při rotaci budou přeskočeny. Kliknutím je zkontrolujete.", + "apiKeyInvalidAlertTitle": "Upozornění na stav klíčů API", + "apiKeyWarningAlert": "{count} klíčů API je ve stavu varování kvůli zvýšené míře selhání v připojeních: {connections}. Zkontrolujte je, abyste předešli problémům s rotací.", + "apiKeyWarningAlertTitle": "Varování klíče API", + "googlePseInfo": "Informace o Google PSE", "antigravityProjectIdHint": "Volitelné přepsání požadavků Antigravity Cloud Code. Ponechte prázdné, chcete-li použít projekt objevený během Google OAuth.", "antigravityClientProfileLabel": "Profil klienta", "antigravityClientProfileHint": "Vyberte, jakou identitu klienta Antigravity bude OmniRoute prezentovat rozhraní API.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Úroveň Codex Fast je aktivní", - "tierFast": "Fast", + "tierFast": "Rychlé", "antigravityProjectIdLabel": "ID projektu Google Cloud", "antigravityProjectIdPlaceholder": "moje-gcp-projekt-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Zástupný text webového souboru cookie Grok", + "herokuBaseUrlHint": "Nápověda k základní URL Heroku", + "hideEmail": "Skrýt e-mail", + "imageProviders": "Poskytovatelé obrázků", "videoProviders": "Generování videa", "embeddingRerankProviders": "Vložení a přehodnocení", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Obrázky", + "llmProviders": "Poskytovatelé LLM", + "localProviderApiKeyOptionalHint": "Nápověda k volitelnému klíči API místního poskytovatele", + "localProviderBaseUrlHint": "Nápověda k základní URL místního poskytovatele", + "localProviders": "Místní poskytovatelé", + "maxConcurrentWholeNumberError": "Maximální počet souběžných požadavků musí být celé číslo", "m365TierLabel": "Úroveň Copilot", "m365TierHint": "Vyberte, které rozhraní Microsoft 365 Copilot toto připojení používá. Individual je výchozí spotřebitelský BizChat; Education a Enterprise (pracovní) využívají rozhraní svého tenanta.", "m365TierIndividualOption": "Individual (výchozí)", - "m365TierEduOption": "Education", + "m365TierEduOption": "Vzdělávání", "m365TierEnterpriseOption": "Enterprise / Pracovní", "tierOverrideLabel": "Přepsání úrovně", "tierOverrideAuto": "Automaticky (rozhodne směrování)", "tierOverrideFree": "Zdarma", "tierOverrideCheap": "Levný", - "tierOverridePremium": "Premium", + "tierOverridePremium": "Prémiové", "tierOverrideHelpText": "Připnout tohoto poskytovatele k úrovni směrování namísto toho, aby ji OmniRoute odvozoval z cen modelů.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Nápověda k webovému souboru cookie Muse Spark", + "museSparkWebCookiePlaceholder": "Zástupný text webového souboru cookie Muse Spark", + "oauth": "OAuth", + "openCliTools": "Otevřít nástroje CLI", + "openSettings": "Otevřít nastavení", + "openaiResponsesStoreDescription": "Povolit kompatibilním požadavkům Responses API zachovat uložený stav odpovědi.", + "openaiResponsesStoreLabel": "Úložiště OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Informace o sdíleném klíči Perplexity Search", + "perplexityWebCookieHint": "Nápověda k webovému souboru cookie Perplexity", + "perplexityWebCookiePlaceholder": "Zástupný text webového souboru cookie Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Přepsání limitů četnosti", "rateLimitOverridesMaxConcurrentHint": "Přepsání maximálního počtu souběžných požadavků pro toto připojení. Přepisuje limit na úrovni účtu.", "rateLimitOverridesMaxConcurrentLabel": "Max. souběžných (limit četnosti)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Maximální doba (ms), po kterou může požadavek čekat na přidělení slotu omezení rychlosti, než selže. Přepíše globální nastavení odolnosti pouze pro toto připojení.", + "rateLimitOverridesMaxWaitMsLabel": "Maximální čekání ve frontě (ms)", "rateLimitOverridesMinTimeHint": "Minimální doba (ms) mezi požadavky. Přepisuje výchozí prodlevu omezovače četnosti.", "rateLimitOverridesMinTimeLabel": "Min. interval (ms)", "rateLimitOverridesRpdHint": "Maximální počet požadavků za den pro toto připojení. Přepisuje výchozí nastavení poskytovatele.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (tokeny/den)", "rateLimitOverridesTpmHint": "Maximální počet tokenů za minutu pro toto připojení. Přepisuje výchozí hodnotu poskytovatele.", "rateLimitOverridesTpmLabel": "TPM (tokeny/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Obnovit token OAuth", + "regionHint": "Nápověda k oblasti", + "regionLabel": "Oblast", + "removeThisKey": "Odebrat tento klíč", + "routingTagsHint": "Nápověda ke směrovacím štítkům", + "routingTagsLabel": "Směrovací štítky", + "routingTagsPlaceholder": "Zástupný text směrovacích štítků", + "search": "Hledat", + "searchEngineIdHint": "Tip pro ID vyhledávače", + "searchEngineIdLabel": "ID vyhledávače", + "searchEngineIdRequired": "ID vyhledávače je povinné", + "searchProvider": "Poskytovatel vyhledávání", + "searchProviderDesc": "Popis poskytovatele vyhledávání", "searchProviders": "Hledat poskytovatele...", "searchByModel": "Hledat podle modelu…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Poskytovatelé vyhledávání", + "searxngBaseUrlHint": "Tip pro základní URL Searxng", + "searxngInfo": "Informace o Searxng", + "sessionCookieLabel": "Cookie relace", + "showEmail": "Zobrazit e-mail", + "snowflakeBaseUrlHint": "Tip pro základní URL Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Tip pro skupinu štítků", + "tagGroupLabel": "Skupina štítků", + "tagGroupPlaceholder": "Zástupný text skupiny štítků", + "testModel": "Otestovat model", + "testingModel": "Testování modelu", "modelTestQuotaTooltip": "Kvóta vyčerpána — resetuje se zítra nebo je potřeba doplnění", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Platnost tokenu vypršela", + "tokenExpiredTitle": "Platnost tokenu vypršela", + "tokenExpiresSoonTitle": "Platnost tokenu brzy vyprší", + "tokenShort": "Token", + "totalKeysRotating": "{count, plural, one {Rotuje 1 klíč} few {Rotují # klíče} other {Rotuje # klíčů}}", + "unhideModel": "Odkrýt model", + "upstreamProxyProviders": "Poskytovatelé upstream proxy", "validationModelIdHint": "Model použitý k ověření API klíče. Ponechte prázdné, chcete-li použít první dostupný model poskytovatele.", "validationModelIdLabel": "Ověřovací model", "validationModelIdPlaceholder": "např. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Vložte JSON svého účtu služby ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) nebo přístupový token OAuth access_token", + "webCookieProviders": "Poskytovatelé webových cookies", + "weeklyShort": "Týdně", + "xiaomiMimoBaseUrlHint": "Tip pro základní URL Xiaomi Mimo", "globalCodexServiceMode": "Globální režim služby Codex", "connect": "Připojit", "manualApiKey": "Ruční klíč API", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Vyhledejte přihlašovací údaje poskytovatelů AI (OpenAI, Anthropic, Google, Mistral, xAI) uložené editorem Zed IDE v klíčence operačního systému a importujte je jako připojení. Na tomto počítači musí být nainstalován Zed IDE.", "zedImportButton": "Importovat ze Zed", "zedImportFailed": "Import Zed se nezdařil", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Tip pro import ze Zed", + "zedImportNetworkError": "Chyba sítě při importu ze Zed", + "zedImportNone": "Žádné položky k importu ze Zed", "zedImportSuccess": "Importováno {credentials} pověření z Zed pro {providers} poskytovatele(ů)", "zedImporting": "Importuji…", "zedNoCredentials": "V klíčence nebyly nalezeny žádné přihlašovací údaje pro Zed", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "položka {number}", "claudeImportParseError": "chyba analýzy", "claudeImportNoValidEntries": "Žádné platné položky k importu", - "webFetch": "Web Fetch", + "webFetch": "Načítání z webu", "webFetchTooltip": "Poskytovatelé, kteří extrahují obsah z webových adres URL (HTML → Markdown, scraping, snímek obrazovky)", "webFetchProvidersHeading": "Poskytovatelé Web Fetch", "compatibleProvidersDesc": "Koncové body kompatibilní s OpenAI a Anthropic, které hostujete nebo konfigurujete. Nasměrujte jakékoli OpenAI SDK na svou vlastní adresu URL a směrujte požadavky sem.", @@ -6096,7 +6099,7 @@ "onboardingApiKeyOptionalLabel": "API klíč (volitelné)", "onboardingBaseUrlOverride": "Přepsání základní adresy URL", "onboardingBaseUrlOverrideHint": "Volitelné. Uloženo jako providerSpecificData.baseUrl.", - "onboardingRegion": "Region", + "onboardingRegion": "Oblast", "onboardingSearchCx": "Hledat CX / ID motoru", "onboardingProviderSpecificIdPlaceholder": "Volitelné ID specifické pro poskytovatele", "onboardingCustomUserAgent": "Vlastní uživatelský agent", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Zlevněná API proxy pro více než 40 modelů včetně GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Získejte svůj API klíč na https://freeaiapikey.com/dashboard. Základní URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Získejte bezplatný API kredit 300 $ na https://freemodel.dev – nejsou vyžadovány žádné platební údaje. Koncový bod kompatibilní s OpenAI. K dispozici jsou modely GPT-5.4 a GPT-5.5.", "friendliai": "Bezplatná úroveň pro serverless inferenci – není vyžadována platební karta", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Bezplatná úroveň prostřednictvím Google AI Studio; kvóty pro jednotlivé modely již nejsou zveřejňovány (zkontrolujte stránku kvót v AI Studio) — bez platební karty.", "gigachat": "Připojte GigaChat (Sber) pomocí API klíče.", "gitlab": "Osobní přístupový token (PAT) GitLab pro veřejné rozhraní API Code Suggestions. Pokud nepoužíváte gitlab.com, nakonfigurujte vlastní základní URL.", "gitlawb-gmi": "Získejte svůj API klíč z nástěnky Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Připojte GLM Coding (Čína) pomocí API klíče.", "glmt": "Přednastavený profil GLM s vyšším rozpočtem tokenů, povoleným přemýšlením a delším časovým limitem.", "getgoapi": "Připojte GoAPI pomocí API klíče.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Bezplatný tarif: limity pro jednotlivé modely (200 tis. tokenů/den na každý chatovací model; limity RPM/RPD najdete na console.groq.com/docs/rate-limits) — bez uložené platební metody.", "haiper": "Získejte API klíč na haiper.ai/haiper-api", "heroku": "Připojte Heroku AI pomocí API klíče.", "hcnsec": "Získejte API klíč na api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Vytvořte API klíč na adrese https://app.requesty.ai a poté jej vložte sem jako Bearer token. Koncový bod kompatibilní s OpenAI je na adrese https://router.requesty.ai/v1, s živým katalogem /v1/models.", "runwayml": "Generování videa v Runway je založeno na úlohách. OmniRoute odesílá úlohy typu text-na-video nebo obrázek-na-video, dotazuje se na /v1/tasks/[id] a normalizuje hotové video výstupy zpět do odpovědi typu /v1/videos/generations podobné OpenAI.", "sambanova": "Bezplatný kredit 5 $ při registraci (platnost 30 dní), není vyžadována platební karta", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Vytvořte klíč API na https://seekai.cc a poté jej sem vložte jako Bearer token. Základní URL kompatibilní s OpenAI: https://seekai.cc/v1.", "sap": "Vyhledávání modelů používá /v2/lm/scenarios/foundation-models/models na AI_API_URL. Požadavky na chat používají deploymentUrl/chat/completions a vyžadují AI-Resource-Group.", "sarvam": "Sarvam AI je kompatibilní s OpenAI na /v1. OmniRoute prozkoumává /v1/models a směruje chatový provoz na /v1/chat/completions. Modely jsou laděny pro indické jazyky.", "scaleway": "1 milion bezplatných tokenů pro nové účty — v souladu s EU/GDPR (Paříž), Qwen3 235B & Llama 70B", @@ -6309,12 +6312,12 @@ "claude": "Připojte Claude Code pomocí stávajícího toku OAuth.", "cline": "Připojte Cline pomocí stávajícího toku OAuth.", "cursor": "Připojte Cursor IDE pomocí stávajícího toku OAuth.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Připojte Cursor pomocí uživatelského klíče API (crsr_...) z cursor.com/dashboard/api; relace IDE není potřeba.", "github": "Připojte GitHub Copilot pomocí stávajícího toku OAuth.", "gitlab-duo": "Aplikace OAuth s rozsahy (scopes) ai_features + read_user. Nakonfigurujte GITLAB_DUO_OAUTH_CLIENT_ID a volitelně GITLAB_DUO_OAUTH_CLIENT_SECRET na této instanci OmniRoute.", "kilocode": "Připojte Kilo Code pomocí stávajícího toku OAuth.", "kimi-coding": "Připojte Kimi Coding pomocí stávajícího toku OAuth.", - "kiro": "Free tier: 50 credits/month (~25K–100K tokens). ⚠️ Kiro ToS prohibits third-party proxy/harness use.", + "kiro": "Bezplatná úroveň: 50 kreditů/měsíc (~25–100 tis. tokenů). ⚠️ Podmínky používání Kiro zakazují použití proxy/harness třetích stran.", "codex": "Připojit OpenAI Codex pomocí stávajícího toku OAuth.", "qwen": "Připojit Qwen Code pomocí stávajícího toku OAuth.", "github-models": "Vytvořte GitHub PAT s rozsahem 'models: read' na github.com/settings/tokens" @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Zkopírujte požadované přihlašovací údaje z vlastní domény poskytovatele. U souborů cookie zkopírujte pouze hodnotu záhlaví souboru cookie a vynechejte soubor cookie:.", "webSessionGuideStep3Manual": "Ruční cesta: otevřete nástroje pro vývojáře prohlížeče (F12 → Síť), obnovte stránku, otevřete ověřený požadavek a zkopírujte hodnotu hlavičky Cookie z hlaviček požadavku — vynechte prefix Cookie:.", "webSessionGuideStep4": "Vložte jej sem a zkontrolujte připojení. Pokud přestane fungovat, přihlaste se znovu a nahraďte ji novou hodnotou.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importovat soubor .har", + "harImportButtonBusy": "Importování…", + "harImportButtonHint": "Po odeslání alespoň jedné zprávy v chatu proveďte export z karty Network v DevTools.", + "harImportStatusValid": "Importováno — platné přibližně {minutes} min.", + "harImportStatusExpiringSoon": "Importováno — platné už jen přibližně {minutes} min.", + "harImportStatusExpired": "Importováno, ale platnost tohoto tokenu již vypršela (před {minutes} min) — exportujte nový soubor HAR.", + "harImportStatusUnknownExpiry": "Importováno. Platnost se nepodařilo zjistit.", + "harImportErrorNotJson": "Tento soubor není platný JSON — je to opravdu export .har?", + "harImportErrorNoEntries": "Tento soubor HAR neobsahuje žádné zaznamenané síťové požadavky.", + "harImportErrorNoChathubUrl": "V tomto souboru HAR nebylo nalezeno žádné připojení k chatu Copilot. Před exportem odešlete alespoň jednu zprávu v chatu na m365.cloud.microsoft.", + "harImportErrorUnparsableUrl": "Připojení k chatu bylo nalezeno, ale jeho URL se nepodařilo načíst.", + "harImportErrorMissingFields": "Připojení k chatu bylo nalezeno, ale chyběl v něm token.", + "harImportErrorReadFailed": "Tento soubor se nepodařilo načíst.", + "harImportErrorUnknown": "Z tohoto souboru HAR se nepodařilo extrahovat přihlašovací údaj.", "webSessionSecurityHint": "Zacházejte s tím jako s heslem: může přistupovat k vašemu přihlášenému webovému účtu, dokud jeho platnost nevyprší nebo nebude zrušena.", "webNoAuthGuideTitle": "Nejsou vyžadovány žádné přihlašovací údaje", "webNoAuthGuideBody": "{provider} nepotřebuje klíč API ani soubor cookie. Uložte připojení, abyste mohli používat jeho bezplatný webový koncový bod.", @@ -6405,7 +6408,7 @@ "batchUpdateFailed": "Hromadná aktualizace selhala", "batchUpdateNetworkError": "Chyba sítě během hromadné aktualizace", "categoryAudio": "Zvuk", - "categoryCloudAgent": "Cloud Agent", + "categoryCloudAgent": "Cloudový agent", "categoryIde": "IDE", "categoryLocal": "Místní", "categorySearch": "Hledat", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Kód příkazu auth vypršel", "commandCodeConnected": "Příkaz Code připojený", "commandCodeConnectionAdded": "Připojení příkazu Code bylo přidáno", + "clearConnectionCooldown": "Zrušit čekací dobu", + "clearConnectionCooldownInProgress": "Rušení…", + "clearConnectionCooldownTitle": "Zrušte čekací dobu nyní — použijte, pokud již byla kvóta u poskytovatele obnovena", "commandCodeLinkExpired": "Odkaz na příkazový kód vypršel", "commandCodeOpeningStudio": "Otevírám Command Code Studio…", "commandCodePopupBlocked": "Vyskakovací okno bylo zablokováno. Prosím, povolte vyskakovací okna a zkuste příkaz Code Connect znovu.", "commandCodeStartFailed": "Nepodařilo se spustit příkaz Code auth", "connectionDeleted": "Připojení bylo smazáno", "connectionFallback": "připojení", + "connectionCooldownCleared": "Čekací doba zrušena — připojení bylo znovu zařazeno do směrování", "coolingConnectionsDescription": "Tato připojení se po posledním požadavku ochlazují. OmniRoute je přeskočí, dokud nevyprší časovač — ruční vypnutí není potřeba.", "coolingConnectionsTitle": "Aktuálně chlazení ({count})", + "failedClearConnectionCooldown": "Čekací dobu se nepodařilo zrušit", "failedDeleteAlias": "Nepodařilo se smazat alias", "failedDeleteConnection": "Nepodařilo se smazat připojení", "failedDistributeProxies": "Nepodařilo se rozdělit proxy.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Nastavení koncového bodu uloženého modelu", "searchByModelAria": "Hledat podle modelu", "selectSupportedEndpoint": "Vyberte alespoň jeden podporovaný koncový bod", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Testovací rozhraní / CLI" }, "settings": { "title": "Nastavení", @@ -6554,22 +6557,22 @@ "systemPrompt": "Systémový Prompt", "thinkingBudget": "Promýšlení rozpočtu", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP proxy", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Sekce proxy", + "requestBodyLimitTitle": "Limit těla požadavku", + "requestBodyLimitDescription": "Maximální velikost datové části API přijatá před zpracováním těla požadavku. Vyhrazené trasy pro nahrávání si zachovávají alespoň svůj vestavěný limit 100 MB.", + "requestBodyLimitInputLabel": "Limit těla požadavku v MB", + "requestBodyLimitEmptyError": "Zadejte limit v MB", + "requestBodyLimitWholeNumberError": "Použijte celé číslo", + "requestBodyLimitMinimumError": "Minimum je {min} MB", + "requestBodyLimitMaximumError": "Maximum je {max} MB", + "requestBodyLimitLoadFailed": "Nastavení limitu požadavku se nepodařilo načíst", + "requestBodyLimitSaveSuccess": "Limit těla požadavku byl uložen", + "requestBodyLimitSaveFailed": "Limit těla požadavku se nepodařilo uložit", + "requestBodyLimitSaving": "Ukládání...", + "requestBodyLimitSave": "Uložit", + "requestBodyLimitCurrent": "Aktuální: {value}", "cacheConfigLoadFailed": "Nepodařilo se načíst nastavení cache", "cacheConfigSaveSuccess": "Nastavení cache uloženo", "cacheConfigSaveFailed": "Nepodařilo se uložit nastavení cache", @@ -6582,7 +6585,7 @@ "modelCatalogCacheTtlSaving": "Ukládání...", "modelCatalogCacheTtlSave": "Uložit", "modelCatalogCacheTtlCurrent": "Aktuální: {value} ms", - "mitmProxy": "MITM Proxy", + "mitmProxy": "MITM proxy", "pricing": "Ceny", "storage": "Skladování", "policies": "Zásady", @@ -6593,66 +6596,66 @@ "enablePassword": "Povolit heslo", "darkMode": "Tmavý režim", "lightMode": "Světelný režim", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Paměť", + "memoryDesc": "Trvalá konverzační paměť napříč relacemi", + "memoryEnabled": "Povolit paměť", + "memoryEnabledDesc": "Pokud je povolena, OmniRoute vloží relevantní kontext z minulosti.", "memoryTokenCostWarning": "Upozornění: s povolenou pamětí vkládá OmniRoute do každého požadavku na chat až {tokens} tokenů načteného kontextu — to zvyšuje využití tokenů a náklady. Chcete-li vložení u konkrétního požadavku přeskočit, odešlete hlavičku \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Max. počet tokenů", + "retentionDays": "Uchovávání", + "recent": "Nedávné", + "recentDesc": "Chronologické okno", + "semantic": "Sémantické", + "semanticDesc": "Vektorové vyhledávání", + "hybrid": "Hybridní", + "hybridDesc": "Nedávné + sémantické", + "skillsTitle": "Dovednosti", + "skillsDesc": "Nástroje pro modely", + "skillsEnabled": "Povolit dovednosti", + "skillsEnabledDesc": "Umožňuje agentům spouštět funkce.", + "skillsComingSoon": "Tržiště dovedností bude brzy k dispozici.", + "memorySkillsTitle": "Paměť a dovednosti", + "memorySkillsDesc": "Trvalý kontext a funkce", + "modelsDevTitle": "Databáze modelů", + "modelsDevDesc": "Automaticky synchronizovat ceny, funkce a specifikace z models.dev", + "modelsDevEnabled": "Povolit synchronizaci s models.dev", + "modelsDevEnabledDesc": "Načítat ceny, funkce a specifikace modelů z open-source databáze models.dev", + "modelsDevInterval": "Interval synchronizace", + "syncNow": "Synchronizovat nyní", + "syncing": "Synchronizace...", + "lastSync": "Poslední synchronizace", + "never": "Nikdy", "justNow": "právě teď", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Statistiky synchronizace", + "modelsDevStatsDesc": "Aktuální pokrytí dat z models.dev", "providers": "Poskytovatelé", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modely s cenovými údaji", + "capabilities": "Funkce", + "lastSyncCount": "Počet při poslední synchronizaci", + "lastSyncFull": "Poslední úplná synchronizace", + "modelsDevInfo": "Jak to funguje", + "modelsDevInfoDesc": "models.dev je open-source databáze specifikací modelů AI spravovaná týmem SST/OpenCode. Poskytuje informace o cenách, funkcích, limitech kontextu a modalitách pro více než 4 000 modelů od více než 100 poskytovatelů.", + "modelsDevInfoResolution": "Pořadí zdrojů cen (od nejvyšší priority):", + "modelsDevInfoOrder": "Uživatelské nastavení → models.dev → LiteLLM → Pevně nastavená výchozí hodnota", "systemTheme": "Systémové motiv", "debugToggle": "Povolit režim ladění", "logToolSourcesToggle": "Protokolovat zdroje nástrojů", "logToolSourcesDescription": "Vygenerovat diagnostický řádek protokolu pro každý požadavek shrnující počet nástrojů a rozdělení zdrojů MCP/hostovaných/klientských.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Připnout informace na domovskou stránku", "homePinnedSectionsDesc": "Vyberte, které sekce chcete připnout na začátek domovské stránky.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Limity kvót poskytovatelů", + "homeProviderQuotaLimitsDesc": "Připnout panel stavu kvót poskytovatelů (s tlačítkem Obnovit vše) do horní části domovské stránky.", + "homeQuickStart": "Rychlý start", + "homeQuickStartDesc": "Zobrazit panel Rychlý start na domovské stránce.", + "homeProviderTopology": "Topologie poskytovatelů", + "homeProviderTopologyDesc": "Zobrazit topologii poskytovatelů na domovské stránce.", "accountEmailVisibility": "Viditelnost e-mailu účtu", "accountEmailVisibilityDesc": "Zobrazovat celé e-maily účtů na obrazovkách poskytovatelů, komb, protokolů, kvót a playgroundu. Vypnutím této možnosti je ve výchozím nastavení maskujete.", "comboConfigMode": "Režim konfigurace komb", "comboConfigModeDesc": "Vyberte, jak má být uspořádán dialog pro vytvoření a úpravu komb.", "comboConfigModeGuided": "S průvodcem", "comboConfigModeGuidedDesc": "Použít stávající postupný tvůrce komb.", - "comboConfigModeExpert": "Expert", + "comboConfigModeExpert": "Expertní", "comboConfigModeExpertDesc": "Zobrazit všechny možnosti komba na jedné stránce a povolit přímé zadání modelu.", "providerQuotaAutoRefresh": "Automatické obnovení kvóty poskytovatele", "providerQuotaAutoRefreshDesc": "Automaticky obnovovat zobrazení limitů poskytovatele, dokud je otevřené.", @@ -6694,17 +6697,17 @@ "autoDisableDescription": "Trvale označí připojení poskytovatele jako deaktivovaná, pokud vrátí specifické signály zablokování (např. HTTP 403 'verify your account'). Tím je odstraní z rotace komb.", "autoDisableThreshold": "Prahová hodnota zablokování", "autoDisableThresholdDesc": "Počet po sobě jdoucích signálů zablokování před trvalou deaktivací.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedScope": "Použít automatickou deaktivaci na", + "autoDisableBannedScopeDesc": "Přihlašovací účty (placená předplatná a bezplatné účty) může nadřazená služba zablokovat, pokud OmniRoute po zákazu pokračuje v opakovaných pokusech. U placených předplacených API klíčů toto riziko nehrozí — ponechte je ve fondu, aby funkce fill-first mohla použít další klíč.", + "autoDisableBannedScopeAll": "Všechna připojení", + "autoDisableBannedScopeAllDesc": "Deaktivovat každé připojení, které vrátí signál trvalého zákazu, včetně předplacených API klíčů.", + "autoDisableBannedScopeSubscription": "Pouze přihlašovací účty / účty s předplatným", + "autoDisableBannedScopeSubscriptionDesc": "Deaktivovat přístupy přes OAuth, soubory cookie, relace a webové přihlášení (placené i bezplatné). Předplacené API klíče zůstanou aktivní, aby směrování mohlo přejít na záložní variantu.", "customBannedSignals": "Zakázaná klíčová slova", "customBannedSignalsDesc": "Další klíčová slova, která spouštějí detekci trvalého zablokování účtu. Vestavěná klíčová slova platí vždy.", "customBannedSignalsPlaceholder": "např. api key revoked", "noCustomBannedSignals": "Žádná vlastní klíčová slova. Aktivní jsou pouze vestavěná klíčová slova.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Struktura odolnosti", "resilienceStructureDesc": "Tato stránka pouze konfiguruje chování. Stav živého jističe je zobrazen na stránce Zdraví. Opakování specifické pro kombo a ovládání slotu cyklicky zůstávají na nastavení komba.", "enableThinking": "Umožněte Thinking", "maxThinkingTokens": "Max Thinking Tokenů", @@ -6755,18 +6758,18 @@ "sidebarVisibility": "Skrýt položky postranního panelu", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Vše", + "presetAllDesc": "Zobrazit vše", + "presetEssentials": "Základní", + "presetEssentialsDesc": "Cesta pro začátečníky – pokročilé nástroje lze nadále vyhledat", + "presetMinimal": "Minimální", + "presetMinimalDesc": "Pouze hlavní stránky", + "presetDeveloper": "Vývojář", + "presetDeveloperDesc": "Vývojářské nástroje a nástroje proxy", + "presetAdmin": "Správce", + "presetAdminDesc": "Monitorování a audit", + "settingsSidebarTitle": "Přizpůsobení postranního panelu", + "settingsSidebarDesc": "Vyberte, které položky postranního panelu se mají zobrazit. V režimu Základní lze pokročilé nástroje nadále vyhledat.", "hideHealthLogs": "Skrýt protokoly kontrol zdraví", "hideHealthLogsDesc": "Pokud je zapnuto, potlačí zprávy [HealthCheck] v konzoli serveru", "themeAccent": "Barva motivu", @@ -6896,21 +6899,21 @@ "refreshInterval": "Interval Obnovování", "ruleModeDescription": "Popis režimu pravidel" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "Hromadná kontrola stavu", + "bulkHealthcheckDesc": "Otestovat všechny nakonfigurované proxy servery vůči cílové URL a zjistit, které fungují.", + "healthcheckTesting": "Testování...", + "healthcheckAll": "Zkontrolovat stav všech", + "healthcheckFailed": "Kontrolu stavu se nepodařilo spustit", + "healthcheckTestingAll": "Paralelní testování všech proxy serverů...", + "healthcheckTotal": "Celkem", + "healthcheckWorking": "Funkční", + "healthcheckFailedLabel": "Neúspěšné", + "healthcheckStatus": "Stav", + "healthcheckProxyUrl": "URL proxy serveru", + "healthcheckLatency": "Latence", "proxyDocumentationScopeTitle": "Vyhodnocení rozsahu proxy", "proxyDocumentationScopeDescBefore": "OmniRoute vyhodnocuje odchozí proxy v tomto pořadí priorit:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "kombinace → účet → poskytovatel → globální", "proxyDocumentationScopeDescAfter": ". Vítězí nejspecifičtější rozsah.", "proxyDocumentationAddTitle": "Přidání vlastní proxy", "proxyDocumentationAddDescBefore": "Přejděte na", @@ -6984,7 +6987,7 @@ "passthroughDesc": "Beze změny – klient kontroluje rozpočet", "thinkingModePassthrough": "Přesměrování", "thinkingModePassthroughDesc": "Nechte důvody klienta beze změny (úsilí, shrnutí, myšlenkové bloky). Povinné pro viditelné myšlení Codex/Desktop. Výchozí.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automaticky (odebrat)", "thinkingModeAutoDesc": "Odeberte všechna pole myšlení/úvah klienta (úvaha, úsilí o úvahu, myšlení Claude, myšlení Gemini_config) a nechte poskytovatele vymyslet výchozí hodnoty. Můžete skrýt panely myšlení a přerušit žádosti o shrnutí klienta.", "thinkingModeCustom": "Vlastní", "thinkingModeCustomDesc": "Přepište každou žádost s pevným rozpočtem tokenů pro myšlení, který nastavíte níže.", @@ -7065,9 +7068,9 @@ "leastUsedDesc": "Vybrat nejméně používaný účet", "costOpt": "Optimalizace nákladů", "costOptDesc": "Preferuje nejlevnější dostupný účet", - "resetAware": "Reset-Aware RR", + "resetAware": "RR zohledňující reset", "resetAwareDesc": "Preferujte účty se zdravou zbývající kvótou a bližšími resety", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Vážené podle kvóty", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "Přísná náhoda", "strictRandomDesc": "Zamíchá balíček karet – každý účet se použije jednou před zamícháním", @@ -7075,9 +7078,9 @@ "stickyLimitDesc": "Volání účtem před přepnutím", "routingStrategyTitle": "Strategie směrování", "routingStrategySubtitle": "Odpovídá 9router: střídání účtů (round-robin), fixní limity a rotace kombinací", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Cyklické střídání", "accountRoundRobinDesc": "Procházet účty dokola pro rozložení zátěže", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Round Robin kombinací", "comboRoundRobinDesc": "Procházet cíle kombinací dokola namísto neustálého začínání od prvního", "comboStickyLimit": "Fixní limit kombinace", "comboStickyLimitDesc": "Počet volání na cíl kombinace před přepnutím", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Přepsat globální strategii účtu pro tohoto poskytovatele (parita s 9router).", "providerRoutingStrategy": "Strategie účtu", "providerRoutingInheritGlobal": "Převzít globální výchozí", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Mezní hodnota předběžné kontroly kvóty", + "quotaPreflightSubtitle": "Před odesláním požadavku nadřazené službě přeskočit účty s vyčerpanou kvótou", + "quotaPreflightEnable": "Povolit předběžnou kontrolu kvóty", + "quotaPreflightEnableDesc": "Před každým požadavkem zkontroluje zbývající kvótu účtu (5hodinová / týdenní / měsíční období). Účty na mezní hodnotě nebo pod ní budou přeskočeny bez volání nadřazené služby. Mezní hodnoty pro jednotlivá období nastavené na stránce Kvóty poskytovatelů mají vždy přednost před zdejší výchozí hodnotou.", + "quotaPreflightCutoff": "Globální mezní hodnota (min. zbývající %)", + "quotaPreflightCutoffDesc": "Přestat používat účet, když jeho zbývající kvóta klesne na toto procento nebo níže, a to pro každé období bez vlastní mezní hodnoty. Odpovídá ukazatelům zbývajících procent na stránce Kvóty poskytovatelů.", + "quotaPreflightWindowsHint": "Období s vlastní mezní hodnotou pro dané období nebo poskytovatele (nastavenou v dialogu Mezní hodnota na stránce Kvóty poskytovatelů) nejsou touto výchozí hodnotou ovlivněna.", + "quotaPreflightLoadFailed": "Nastavení předběžné kontroly kvóty se nepodařilo načíst.", "modelAliases": "Aliasy modelů", "modelAliasesTitle": "Aliasy modelů", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Přemapujte názvy modelů pomocí přesných shod nebo zástupných vzorů.", "addCustomAlias": "Přidat vlastní alias", "deprecatedModelId": "ID zastupovaného modelu", "newModelId": "Nové ID modelu", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Kombinovaná strategie", "priority": "Přednost", "weighted": "Vyváženo", - "contextRelay": "Context Relay", + "contextRelay": "Předávání kontextu", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Max opakování", "retryDelayLabel": "Zpoždění opakování (ms)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Souběžnost / Model", "queueTimeout": "Časový limit fronty (ms)", "queueDepth": "Hloubka fronty", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Prahová hodnota předání", + "contextRelayMaxMessages": "Maximální počet zpráv pro shrnutí", + "contextRelaySummaryModel": "Model pro shrnutí", + "contextRelayProviderNote": "Předávání kontextu aktuálně generuje předání pro účty Codex a používá tyto hodnoty jako globální výchozí nastavení pro nové nebo nenakonfigurované kombinace.", "providerProfiles": "Profily poskytovatelů", "providerProfilesDesc": "Samostatné nastavení odolnosti pro OAuth poskytovatele (založeno na relacích) a API klíče (měřené) poskytovatele. OAuth poskytovatelé mají přísnější prahové hodnoty kvůli nižším limitům rychlosti.", "oauthProviders": "OAuth Poskytovatelé", @@ -7329,7 +7332,7 @@ "configured": "nakonfigurováno", "none": "Žádné", "modelOverrideValuePlaceholder": "Číselná hodnota", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Anglické hodnoty oddělené čárkami, např. low, medium, high", "addKeyValue": "Přidat klíč-hodnotu", "noModelOverrides": "Pro tento model nejsou nakonfigurována žádná přepsání.", "modelOverrideLoadFailed": "Nepodařilo se načíst přepsání modelů", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Nepodařilo se resetovat data o využití", "reset": "Resetovat", "resetting": "Resetování...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Optimalizováno podle kontextu", + "contextOptDesc": "Směruje podle požadavků na kontextové okno a délky konverzace", + "cacheOpt": "Optimalizováno pro mezipaměť", + "cacheOptDesc": "Zachovává stejnou opakovaně použitelnou předponu výzvy na stejném účtu poskytovatele", + "priorityDesc": "Sekvenční záložní směrování – nejprve zkusí poskytovatele 1, poté poskytovatele 2 a tak dále", + "weightedDesc": "Rozděluje provoz mezi poskytovatele podle procentuálních vah", + "modelRoutingTitle": "Pravidla směrování modelů", + "modelRoutingDesc": "Automaticky směruje modely do konkrétních kombinací pomocí glob vzorů", + "addRule": "Přidat pravidlo", + "routeToCombo": "Směrovat do kombinace", + "selectCombo": "Vyberte kombinaci...", + "priorityHint": "Vyšší hodnota = dřívější kontrola. Pro konkrétní vzory použijte 10 nebo více.", + "patternHint": "Použijte * pro libovolný počet znaků, ? pro jeden znak. Nerozlišují se malá a velká písmena.", + "noRoutingRules": "Nejsou nakonfigurována žádná pravidla směrování. Požadavky ve výchozím nastavení používají globální kombinaci.", + "routingRuleHint": "Přidejte pravidlo, například claude-opus* -> frontier-combo, pro automatické směrování požadavků.", + "deleteRoutingRule": "Smazat toto pravidlo směrování modelů?", + "exactMatchMode": "Přesná shoda", + "wildcardPatternMode": "Zástupný vzor", + "exactMatchModeDesc": "Používejte přesné aliasy pro zastaralá nebo přejmenovaná ID modelů.", + "wildcardPatternModeDesc": "Používejte aliasy se zástupnými znaky * a ?, pokud má být rodina modelů mapována na jeden cíl.", + "noExactAliasesConfigured": "Nejsou nakonfigurovány žádné aliasy s přesnou shodou.", + "wildcardRulesTitle": "Pravidla se zástupnými znaky", + "noWildcardAliasesConfigured": "Nejsou nakonfigurovány žádné aliasy se zástupnými znaky.", + "overview": "Přehled", + "unknownError": "Neznámá chyba", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Seznam povolených", + "syncDisabled": "Synchronizace zakázána", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Synchronizace povolena", + "blacklist": "Seznam zakázaných", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Synchronizované modely", + "budget": "Rozpočet", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Cenu se nepodařilo resetovat: {reason}", - "tab": "Tab", + "tab": "Karta", "pricingSavedProvider": "Cena uložena pro {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Cenu se nepodařilo uložit: {reason}", "pricingResetProvider": "Resetování cen pro {provider}", - "nextSync": "Next Sync", + "nextSync": "Další synchronizace", "pricingSyncFailedWithReason": "Synchronizace cen se nezdařila: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Vymazat synchronizované ceny", + "compressionTitle": "Komprese promptů", + "compressionDesc": "Snižte využití tokenů kompresí promptů před jejich odesláním poskytovatelům", "compressionGuidanceFullGuideLink": "Kompletní průvodce kompresí", "compressionGuidanceShow": "Podrobnosti", "compressionGuidanceHide": "Skrýt podrobnosti", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Přepsat vhodnou historii chatu při zachování kódu, URL adres a záměru.", "tokenSaverFineTunePrefix": "Doladit každý engine na", "tokenSaverFineTuneSuffix": "nebo kombinovat enginy pro jednotlivé požadavky na", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Režim komprese", + "compressionModeOff": "Vypnuto", + "compressionModeOffDesc": "Bez použití komprese", + "compressionModeLite": "Lehká", + "compressionModeLiteDesc": "Redukce mezer a prázdných řádků", + "compressionModeStandard": "Standardní (Caveman)", + "compressionModeStandardDesc": "Komprese založená na pravidlech s více než 30 vzory, která zachovává bloky kódu a URL", + "compressionModeAggressive": "Agresivní", + "compressionModeAggressiveDesc": "Shrnutí + komprese výsledků nástrojů + postupné stárnutí pro maximální úspory", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Agresivní konfigurace motoru", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Počet nedávných zpráv uchovávaných na každé vrstvě stárnutí (vyšší = zachovalejší)", "compressionToolStrategies": "Strategie výsledků nástroje", "compressionToolStrategiesDesc": "Přepínání strategií komprese pro různé typy výsledků nástrojů", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Obecná nastavení", + "compressionAutoTrigger": "Prahová hodnota automatického spuštění", + "compressionCacheTTL": "TTL mezipaměti", + "compressionPreserveSystem": "Zachovat systémový prompt", "compressionPreserveSystemAlways": "Vždy", "compressionPreserveSystemWhenNoCache": "Pokud není mezipaměť", "compressionPreserveSystemNever": "Nikdy", @@ -7532,87 +7535,87 @@ "compressionExclusionsSaved": "Uloženo", "compressionExclusionsCount": "{count, plural, one {# vyloučení} other {# vyloučení}} nakonfigurováno", "compressionExclusionsEmpty": "Žádné vyloučení není nakonfigurováno — každý model/koncový bod je způsobilý pro kompresi (výchozí chování).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Konfigurace enginu Caveman", + "compressionCavemanConfigDesc": "Jemně dolaďte kompresní engine založený na pravidlech", "compressionCavemanPanelHint": "Jeho zapnutí/vypnutí a úroveň se nastavují v panelu:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Komprimovat role zpráv", + "compressionRoleUser": "Uživatel", + "compressionRoleAssistant": "Asistent", + "compressionRoleSystem": "Systém", + "compressionMinLength": "Minimální délka zprávy", + "compressionSkipRules": "Pravidla pro přeskočení komprese", + "compressionSkipRulesDesc": "Kliknutím na pravidla je během komprese přeskočíte", + "compressionPreservePatterns": "Zachovat vzory", + "compressionPreservePatternsDesc": "Regulární výrazy, které se nikdy nekomprimují (jeden na řádek)", + "compressionLogTitle": "Protokol komprese", + "compressionLogEmpty": "Zatím nebyly komprimovány žádné požadavky. Statistiky komprese se zde zobrazí po zpracování požadavků se zapnutou kompresí.", "minutes": "minut", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Filtrování výstupu nástrojů s ohledem na příkazy", + "compressionModeCodexResponses": "Výstup nástroje Responses", + "compressionModeCodexResponsesDesc": "Konzervativní komprese vhodných výstupů shellu, oprav, vyhledávání, sestavení a JSON", + "compressionModeStacked": "Vrstvené", + "compressionModeStackedDesc": "Filtrování výstupu nástrojů pomocí RTK následované kompresí zpráv pomocí Caveman", + "qdrantTitle": "Qdrant (vektorová paměť)", + "qdrantDesc": "Volitelné. Indexuje sémantické vzpomínky v externí vektorové databázi pro rychlejší načítání.", + "qdrantStatusActive": "Aktivní", + "qdrantStatusError": "Chyba", + "qdrantStatusDisabled": "Zakázáno", + "qdrantEnable": "Povolit Qdrant", + "qdrantEnableDesc": "Je-li tato možnost povolena, může sémantická/hybridní strategie používat Qdrant k načítání vzpomínek.", + "qdrantTesting": "Testování...", + "qdrantTestConnection": "Otestovat připojení", + "qdrantSaved": "Konfigurace uložena", + "qdrantSaveError": "Konfiguraci se nepodařilo uložit", + "qdrantHostHint": "Bez portu. Příklad: 127.0.0.1 nebo http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Výchozí hodnota Qdrant: 6333", + "qdrantCollectionHint": "Místo, kam se budou ukládat body paměti.", + "qdrantEmbeddingModel": "Model vnoření", + "qdrantHelpTitle": "Rychlá nápověda k nastavení", + "qdrantHelpQuickTitle": "Rychlé nastavení (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Hostitel: IP/URL Qdrant, port: 6333, kolekce: omniroute_memory.", + "qdrantHelpStep2": "2. Pokud používáte nvidia/llama-nemotron-embed-vl-1b-v2:free, nastavte rozměr kolekce na 2048.", + "qdrantHelpStep3": "3. Pole modelu: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Uložte nastavení, otestujte připojení a poté otestujte vyhledávání.", + "qdrantEmbeddingQuickSelect": "Rychlý výběr z nalezených modelů...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Formát: provider/model. Přihlašovací údaje poskytovatele musí být nakonfigurovány.", + "qdrantApiKeyPlaceholderKeep": "(ponechte prázdné, chcete-li zachovat aktuální klíč)", + "qdrantApiKeyPlaceholderOptional": "(ponechte prázdné, pokud se nepoužívá)", + "qdrantSaveHint": "Tip: upravte hostitele/port/kolekci/model a klikněte na Uložit. Klíč API je volitelný.", + "qdrantSearchTestTitle": "Test vyhledávání", + "qdrantSearchTestDesc": "Generuje embeddingy a vyhledává v Qdrant.", + "qdrantSearchPlaceholder": "Příklad: uživatelské preference, historie atd.", + "qdrantNoResults": "Žádné výsledky (nebo Qdrant není nakonfigurován).", + "qdrantCleanupTitle": "Uchovávání a čištění", + "qdrantCleanupDesc": "Odstraňuje expirované a staré body na základě", + "searching": "Vyhledávání...", + "cleaning": "Čištění...", + "cleanNow": "Vyčistit nyní", "optional": "Volitelné", "current": "Aktuální", "remove": "Odebrat", "search": "Hledat", - "oneproxyTitle": "1proxy Free Proxy Marketplace", + "oneproxyTitle": "1proxy Bezplatné tržiště proxy serverů", "oneproxyTotalProxies": "Celkem proxy", "oneproxyAvgQuality": "Prům. kvalita", "resilienceScope": "Rozsah:", "resilienceTrigger": "Spouštěč:", "resilienceEffect": "Účinek:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Fronta požadavků a limity", + "resilienceAutoEnableApiKeyProviders": "Automaticky povolit pro poskytovatele s klíčem API", + "resilienceRequestsPerMinute": "Požadavků za minutu", + "resilienceMinTimeBetweenRequests": "Minimální doba mezi požadavky", + "resilienceConcurrentRequests": "Souběžné požadavky", + "resilienceConnectionScopeConcurrentRequests": "Souběžné požadavky na připojení/rozsah kvóty", + "resilienceGlobalConcurrentRequests": "Globální počet souběžných požadavků na upstream (0 = vypnuto)", "resilienceMaxQueueWaitTime": "Maximální doba čekání ve frontě", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Základní doba pozastavení", + "resilienceUseUpstreamRetryHints": "Použít doporučení upstreamu pro opakování", + "resilienceDefaultPerProvider": "Výchozí (pro každého poskytovatele)", + "resilienceAlwaysOn": "Vždy zapnuto", + "resilienceAlwaysOff": "Vždy vypnuto", "routingRemoveEntry": "Odebrat záznam", "routingNeedlesSubstrings": "Jehly (odpovídající podřetězce)", "routingCaseSensitive": "Rozlišují se malá a velká písmena", @@ -7669,7 +7672,7 @@ "routingAntigravitySignatureDesc": "Určuje, zda OmniRoute znovu používá pouze uložené podpisy myšlenek Gemini, nebo přijímá ověřené podpisy poskytnuté klientem v tocích volání nástrojů kompatibilních s Antigravity.", "routingAntigravitySignatureEnabledLabel": "Povoleno", "routingAntigravitySignatureEnabledDesc": "Aktuální chování. Ignorovat podpisy poskytnuté klientem a nadále používat uložený tok OmniRoute.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Obejít", "routingAntigravitySignatureBypassDesc": "Přijímat podpisy poskytnuté klientem po odlehčené validaci a v případě neplatnosti se vrátit k uloženému podpisu.", "routingAntigravitySignatureBypassStrictLabel": "Striktní bypass", "routingAntigravitySignatureBypassStrictDesc": "Před přijetím podpisu poskytnutého klientem vyžadovat úplnou validaci protobuf.", @@ -7700,26 +7703,26 @@ "visionBridgePromptHint": "Odesílá se do modelu vision předtím, než je extrahovaný popis vložen zpět do původního požadavku.", "visionBridgeTimeoutMs": "Časový limit (ms)", "visionBridgeMaxImagesPerRequest": "Maximální počet obrázků na žádost", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Maximální počet kroků exponenciálního čekání", + "resilienceProviderBreakerTitle": "Jistič pro jednotlivé poskytovatele", + "resilienceFailureThreshold": "Prahová hodnota selhání", + "resilienceDegradationThreshold": "Prahová hodnota degradace", "resilienceResetTimeout": "Resetovat časový limit", "resilienceFailureThresholdLabel": "Práh selhání", "resilienceResetTimeoutLabel": "Resetovat časový limit", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Doba pozastavení připojení", "resilienceUseUpstreamRetryHintsLabel": "Použijte upstream rady pro opakování", "resilienceUseUpstream429BreakerLabel": "Použít upstream 429 rad (přerušovač)", "resilienceMaxBackoffStepsLabel": "Maximální kroky k ústupu", "resilienceYes": "Ano", "resilienceNo": "Ne", - "resilienceDefault": "Default", + "resilienceDefault": "Výchozí", "storageDatabaseBackupRetention": "Uchovávání zálohy databáze", "storageDatabaseBackups": "Zálohy databáze", "storageBackupRetentionDescription": "Automatické zálohy SQLite jsou uloženy v", "storageBackupRetentionHelp": "Nakonfigurujte, kolik snímků chcete zachovat, a volitelně odstraňte zálohy starší než zvolený počet dní.", "storageBackupCount": "{count} záloh", - "storageBackupMaximum": "Max {count}", + "storageBackupMaximum": "Max. {count}", "storageBackupAgeRetention": "Uchovávání {count} d", "storageBackupAgeRetentionOff": "Uchovávání podle stáří vypnuto", "storageBackupKeepLatest": "Ponechat nejnovější zálohy", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "Starší JSON byl úspěšně importován!", "jsonImportFailed": "Nepodařilo se importovat JSON", "jsonImportError": "Chyba při importu JSON", + "jsonImportAuthRequired": "Pro import starší konfigurace JSON je vyžadováno ověření. Nejprve se přihlaste nebo dokončete nastavení.", + "databaseSettingsAuthRequiredTitle": "Vyžadováno ověření", + "databaseSettingsAuthRequiredBody": "Nastavení databáze a import JSON jsou dostupné pouze ověřenému správci. Chcete-li je zobrazit a upravit, přihlaste se nebo dokončete nastavení.", + "databaseSettingsAuthRequiredCta": "Přihlásit se", "storagePurgeData": "Vyčistit data", "storagePurgeDataDesc": "Okamžitě smaže všechny záznamy bez uplatnění kontrol uchovávání. Používejte s opatrností.", "storageRetentionCleanup": "Nastavení uchovávání", @@ -7792,11 +7799,11 @@ "purgeDetailedLogs": "Vymazat podrobné protokoly", "storageDatabaseSize": "Velikost databáze", "storagePageCount": "Počet stránek", - "storageFreelistCount": "Freelist Count", + "storageFreelistCount": "Počet volných stránek", "storageLastVacuum": "Poslední vakuum", "storageLastOptimization": "Poslední optimalizace", "storageIntegrityCheck": "Kontrola integrity", - "storageIntegrityOk": "✓ OK", + "storageIntegrityOk": "✓ V pořádku", "storageIntegrityError": "✗ Chyba", "storageUsageTokenBuffer": "Použití vyrovnávací paměti tokenů", "storageUsageTokenBufferDesc": "Dodatečné tokeny přidané k hlášenému využití pro zohlednění režie systémového promptu.", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "režim: {mode}", "compressionAdaptiveOff": "Adaptivní rozpočet kontextu: vypnuto (starší automatické spouštění)", "compressionAdaptiveTarget": "Adaptivní ({mode}, zásada: {policy}) — cíl ≈ {target, number} tokenů (pro okno o velikosti {contextLimit, number} tokenů)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Adaptivní rozpočet kontextu", + "compressionAdaptiveModeOff": "Vypnuto (starší automatické spouštění)", + "compressionAdaptiveModeFloor": "Minimum (vždy zaručí, že se obsah vejde)", + "compressionAdaptiveModeReplace": "Nahradit automatické spuštění", + "compressionAdaptivePolicy": "Zásady rozpočtu", + "compressionAdaptivePolicyReserve": "Rezerva pro výstup", + "compressionAdaptivePolicyPercentage": "Procento kontextového okna", + "compressionAdaptivePolicyAbsolute": "Absolutní rozpočet tokenů", "compressionOutputStylesDescription": "Vkládejte instrukce pro formování odpovědi bez přepisování výstupu poskytovatele. Libovolně kombinujte.", "mcpAccessibilityDescription": "Omezuje rozsah výstupů nástrojů MCP (samostatné úložiště).", "compressionStylesTileSummary": "{tokens, number} ušetřených tokenů · {runs, plural, one {# stylované spuštění} few {# stylovaná spuštění} other {# stylovaných spuštění}}", @@ -7866,8 +7873,8 @@ "description": "Filtrování výstupu příkazů." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Výstup nástroje Responses", + "description": "Konzervativní komprese podporovaných výstupů nástroje Responses." }, "headroom": { "label": "Rezerva", @@ -7878,7 +7885,7 @@ "description": "Extraktivní hodnocení vět vůči poslednímu dotazu uživatele." }, "caveman": { - "label": "Caveman", + "label": "Jeskynní muž", "description": "Komprese prózy založená na pravidlech." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "Žebříček YAGNI: nejmenší funkční změna, žádné nevyžádané abstrakce." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Culík (líný seniorní vývojář)", + "description": "Disciplína líného seniorního vývojáře: postupujte po žebříčku YAGNI, opravte hlavní příčinu a vytvořte nejmenší funkční změnu." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Mám ADHD (nejdřív akce)", + "description": "Výstup zaměřený na akci: začíná následující akcí, kroky jsou očíslované, obsahuje jeden konkrétní následující krok a žádný úvod." }, "terse-cjk": { "label": "Stručné CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "Záložní funkce CLIProxyAPI", "cliproxyapiEnableFallback": "Povolit CLIProxyAPI Fallback", "cliproxyapiUrl": "URL CLIProxyAPI", + "headroomProxyTitle": "Proxy Headroom", + "headroomProxyDesc": "URL volitelného proxy serveru Headroom pro úsporu tokenů. Pokud je prázdné, použije se HEADROOM_URL nebo http://localhost:8787.", + "headroomProxyUrl": "URL serveru Headroom", + "headroomProxyUrlHint": "Adresy URL zpětné smyčky lze spustit z této stránky. Externí adresy URL se pouze testují.", + "headroomProxySave": "Uložit", + "headroomProxyStart": "Spustit", + "headroomProxyStop": "Zastavit", + "headroomProxyExternalHint": "Tato adresa URL není adresou zpětné smyčky, takže OmniRoute místní CLI nespustí.", "cliproxyapiStatus": "Stav CLIProxyAPI", "cliproxyapiNotDetected": "Nezjištěno", "cliproxyapiImportAuthTitle": "Importovat účty z CLIProxyAPI", @@ -7980,20 +7995,20 @@ "responsesStateTitle": "Stav odpovědí", "responsesStateDesc": "Řízení toho, jak OmniRoute předává previous_response_id.", "responsesStateModeLabel": "Zpracování previous_response_id", - "responsesStateModeAuto": "Auto", - "responsesStateModeStrip": "Strip", - "responsesStateModePreserve": "Preserve", + "responsesStateModeAuto": "Automaticky", + "responsesStateModeStrip": "Odstranit", + "responsesStateModePreserve": "Zachovat", "responsesStateHint": "Možnost Auto odstraní previous_response_id, pokud připojení explicitně nepovolí úložiště OpenAI Responses. Možnost Strip je nejbezpečnější pro bezstavové klienty, jako je VS Code Custom Endpoint; kontext pak závisí na tom, zda klient odešle celou historii.", "responsesStateSaveError": "Nepodařilo se aktualizovat nastavení stavu odpovědí", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Rychlá úroveň Codex", "codexFastTierDesc": "Globálně vložit service_tier=priority pro požadavky OpenAI Codex.", "codexFastTierHint": "Když je povoleno, OmniRoute přidává service_tier=priority k odchozím požadavkům Codexu pro připojení, která ještě neurčují úroveň. Prioritní vrstva vyžaduje klíč OpenAI Enterprise API nebo cestu ChatGPT-auth Codex; ostatní typy klíčů obdrží od OpenAI chybu související s úrovní. Nastavení jednotlivých připojení na stránce poskytovatele Codexu mají přednost.", "codexFastTierSaveError": "Aktualizace nastavení Codex Fast Tier se nezdařila", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Automatický ping kvóty Codex", + "codexAutoPingDesc": "Volitelné pro každé připojení: ihned po obnovení okna relace Codex odešle drobný požadavek, aby relace nebyla neaktivní, až ji budete potřebovat.", + "codexAutoPingWarning": "Každý ping spotřebuje malé množství skutečné kvóty Codex. Ve výchozím nastavení je vypnuto — povolte pouze u připojení, na která aktivně spoléháte.", + "codexAutoPingSaveError": "Nastavení automatického pingu Codex se nepodařilo aktualizovat", + "codexAutoPingToggleAria": "Přepnout automatický ping kvóty Codex pro připojení {connection}", "codexFastTierTierLabel": "Úroveň služeb", "codexFastTierTierPriority": "Priorita", "codexFastTierTierFlex": "Flex", @@ -8202,24 +8217,24 @@ "modelLockoutMaxBackoffStepsDescription": "Maximální počet kroků backoffu, než se cooldown přestane prodlužovat. Ve většině konfigurací je nejprve dosaženo limitu Max Cooldown, což z tohoto nastavení činí bezpečnostní strop pro případ, kdy se Max Cooldown zvýší.", "disableSessionStickiness": "Zakázat afinitu relací", "disableSessionStickinessDesc": "Kombinace round-robin a náhodného výběru rotují na jiné připojení při každém požadavku, místo aby připnuly celou konverzaci k jednomu připojení podle hashe první zprávy. Ponechte vypnuté, chcete-li zachovat zásahy v mezipaměti promptů pro vícekrokové chaty. Přepsání pro jednotlivé kombinace mají přednost.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Směrování podle lokality mezipaměti promptů", + "promptCacheAffinityDesc": "Upřednostnit stejný účet poskytovatele pro odpovídající klíče mezipaměti promptů a zároveň zachovat převzetí služeb při selhání z důvodu stavu nebo kvóty.", + "reasoningTokenBuffer": "Rezerva tokenů pro uvažování", + "reasoningTokenBufferDesc": "Povolit kombinovanému směrování přidat rezervu k max_tokens pouze u známých modelů s uvažováním, pokud se celá rezerva vejde do známého limitu výstupu.", + "zeroLatencyOptimizations": "Optimalizace s nulovou latencí", + "zeroLatencyOptimizationsDesc": "Povolit zajišťovací požadavky, prediktivní přeskakování podle TTFT a proaktivní kompresi záložních požadavků. Ponechte vypnuté, chcete-li zabránit tomu, aby tyto funkce pro snížení latence spouštěly souběžné požadavky na cíle nebo komprimovaly záložní požadavky.", "credentialRedaction": "Redigování přihlašovacích údajů", "credentialRedactionDesc": "Redigovat klíče API, tokeny a tajné klíče z kontextu odesílaného poskytovatelům a z odpovědí.", "enableCredentialRedaction": "Povolit redigování přihlašovacích údajů", "enableCredentialRedactionDesc": "Odstraní klíče API, tokeny, soukromé klíče a JWT ze zpráv, volání nástrojů a odpovědí.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Automatická synchronizace zakázána", + "pricingAutoSyncEnabled": "Automatická synchronizace povolena", "modalityBridgeIntro": "Převeďte multimodální obsah na text dříve, než se dostane k modelům pouze pro text. Mosty pro obraz, zvuk a video jsou dostupné a konfigurovatelné.", "modalityBridgeVisionTab": "Vize", "modalityBridgeAudioTab": "Zvuk", "modalityBridgeVideoTab": "Video", "modalityBridgeSubTabsAria": "Sekce Modality Bridge", - "modalityBridgeVisionTitle": "Vision Bridge", + "modalityBridgeVisionTitle": "Most pro obraz", "modalityBridgeVisionDesc": "Popište obrázky pomocí modelu pro rozpoznávání obrazu a pokračujte s uživatelovým vybraným textovým modelem.", "modalityBridgeMode": "Režim", "modalityBridgeModeAuto": "Auto (doporučeno)", @@ -8257,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge přesunuto", "modalityBridgeMovedBody": "Nastavení Vision Bridge nyní žije na vyhrazené stránce Modality Bridge.", "modalityBridgeMovedCta": "Otevřít nastavení Modality Bridge", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "Most pro zvuk", "modalityBridgeAudioDesc": "Přepište audio pomocí modelu převodu řeči na text, než pokračujete s vybraným textovým modelem.", "modalityBridgeAudioEnabled": "Povolit Audio Bridge", "modalityBridgeAudioEnabledDesc": "Nahraďte audio části přepisy, když cílový model nemůže zpracovat audio.", @@ -8269,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge OK — {count} klip(y) přepsány pomocí {model}", "modalityBridgeAudioTestNoop": "Audio Bridge se nepodařilo aktivovat (cílové zařízení může podporovat audio, žádný poskytovatel STT není připojen, nebo je most deaktivován)", "modalityBridgeAudioTestError": "Test zvuku selhal: {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "Most pro video", "modalityBridgeVideoDesc": "Odeberte snímky z videa, popište je modelem pro zpracování obrazu a pokračujte zvoleným textovým modelem.", "modalityBridgeVideoRuntimeReady": "Běhové prostředí je připraveno", "modalityBridgeVideoRuntimeChecking": "Kontrola běhového prostředí…", @@ -8301,7 +8316,7 @@ "retry": "Zkusit znovu", "title": "Nepodařilo se načíst nastavení" }, - "host": "Host", + "host": "Hostitel", "notInstalled": "Není nainstalováno", "oneproxyActions": "Akce Oneproxy", "oneproxyActive": "Oneproxy Aktivní", @@ -8309,7 +8324,7 @@ "oneproxyCountry": "JednoProxy Země", "oneproxyDelete": "Oneproxy Smazat", "oneproxyEmpty": "Oneproxy Prázdný", - "oneproxyHost": "Oneproxy Host", + "oneproxyHost": "Hostitel Oneproxy", "oneproxyLatency": "Oneproxy Latence", "oneproxyProtocol": "Oneproxy Protokol", "oneproxyQuality": "Kvalita Oneproxy", @@ -8355,7 +8370,7 @@ "routingOpMissingKind": "Op #{index}: chybí nebo je neplatný `kind`", "routingOpUnknownKind": "Op #{index}: neznámý typ \"{kind}\"", "routingJsonEditorHide": "Skrýt editor JSON", - "routingJsonEditorImportExport": "Import / export JSON", + "routingJsonEditorImportExport": "Importovat / exportovat JSON", "routingJsonEditorLabel": "JSON (upravit a použít, nebo vložit pro import)", "routingApplyJson": "Použít JSON", "routingTransformsFootnote": "Všechny transformační operace jsou idempotentní při opětovném spuštění. Změny se projeví okamžitě při další žádosti.", @@ -8363,34 +8378,26 @@ "cliproxyapiVersion": "Verze", "cliproxyapiHealth": "Zdraví", "cliproxyapiPort": "Port", - "qdrantHost": "Host", - "qdrantCollection": "Kolekce", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantHost": "Hostitel", + "qdrantCollection": "Kolekce" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "Modul RTK", + "description": "Komprese výstupu nástrojů, terminálových protokolů a výsledků sestavení s ohledem na příkazy.", + "enabled": "Povoleno", + "intensity": "Intenzita", + "intensityMinimal": "Minimální", + "intensityStandard": "Standardní", + "intensityAggressive": "Agresivní", + "toolResults": "Výsledky nástrojů", + "assistantMessages": "Zprávy asistenta", + "codeBlocks": "Bloky kódu", "filterCatalog": "Katalog filtrů", "filterCatalogDesc": "Dostupné výstupní filtry podle kategorie", "guidedConfig": "Konfigurace", "guidedConfigDesc": "Upravte, jak RTK filtruje výstup vašeho terminálu", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Max. počet řádků", + "maxChars": "Max. počet znaků", "deduplicateThreshold": "Deduplikační práh", "customFilters": "Vlastní filtry", "detectedType": "Zjištěný typ", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Selhání", "rawOutputAlways": "Vždy", "rawOutputMaxBytes": "Nezpracovaný výstup max. bajtů", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Testování filtrování", + "pasteOutput": "Vložte výstup nástroje pro otestování filtrování...", "presetHigh": "Agresivní", "presetLow": "Světlo", "presetMaxChars": "Max výstupních znaků", "presetMaxLines": "Maximální výstupní řádky", "presetMedium": "Standardní", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Spustit", + "result": "Výsledek", + "previewEmpty": "Spusťte ukázku a zobrazte náhled výstupu RTK.", + "detected": "Zjištěno", "masterSwitchOffAlert": "Hlavní vypínač Token Saver je VYPNUTÝ — tato nastavení neovlivní požadavky, dokud jej nezapnete na stránce Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Odfiltrované tokeny", + "filtersActive": "Aktivní filtry", + "requests": "Požadavky", + "avgSavings": "Průměrná úspora", "simpleMode": "Jednoduché", "advancedMode": "Pokročilé", "searchFilters": "Hledat filtry...", @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Kombinace komprese", + "description": "Definujte, jak se enginy kombinují pro různé scénáře směrování.", + "createCombo": "Vytvořit kombinaci komprese", + "editCombo": "Upravit", + "deleteCombo": "Smazat", + "deleteConfirm": "Smazat tuto kombinaci komprese?", + "pipeline": "Kanál", + "addStep": "Přidat krok", + "removeStep": "Odebrat", + "name": "Název", + "descriptionField": "Popis", + "languagePacks": "Jazykové balíčky", + "outputMode": "Režim výstupu", + "assignToRouting": "Přiřadit ke kombinacím směrování", + "noAssignments": "Nejsou k dispozici žádné kombinace směrování", + "default": "Výchozí", + "setAsDefault": "Nastavit jako výchozí", + "save": "Uložit", + "cancel": "Zrušit", + "enabled": "Povoleno", "loading": "Načítání…", "hubTitle": "Centrum komprese", "hubDescription": "Vyberte, který kompresní profil se spustí globálně.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "Aktuálně k dispozici pouze pro Claude (Anthropic). Jedná se o delegovaný režim: poskytovatel vymaže staré bloky použití nástrojů na straně serveru – zprávu nepřepisujeme. Ostatní poskytovatele to neovlivní.", "namedCombos": "Pojmenované kombinace", "namedCombosDescription": "Ukládejte různé pipeline a přiřazujte je ke konkrétním směrovacím kombinacím.", + "activeProfileMasterSwitchOffWarning": "Níže uvedený aktivní profil se nespustí, dokud nebude zapnutý hlavní přepínač „Komprese promptů“.", + "activeProfileMasterSwitchOffCta": "Zapněte jej v Nastavení", "comboNamePlaceholder": "Název kombinace", "descriptionPlaceholder": "Popis", "nameRequired": "Před uložením zadejte název kombinace.", @@ -8674,9 +8683,7 @@ "languagePacksList": "Jazykové balíčky: {packs}", "dragToReorder": "Přetažením změňte pořadí kroku", "engine": "Modul", - "intensity": "Intenzita", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intenzita" }, "compressionStudio": { "noRun": "Není k dispozici žádný běh komprese.", @@ -8691,7 +8698,7 @@ "replay": "Přehrát", "resetReplay": "Resetovat přehrávání", "stepProgress": "krok {current}/{total}", - "inlineView": "Inline", + "inlineView": "V řádku", "splitComingSoon": "Rozdělené zobrazení (již brzy)", "inputPlaceholder": "Vložte prompt, výstup nástroje nebo kontext…", "activeCombined": "Aktivní v kombinovaném toku", @@ -8705,7 +8712,7 @@ "run": "Spustit", "laneRejected": "zamítnuto: {reason}", "error": "chyba", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Náhled kombinované pipeline se nezdařil: {reason}", "combinedFlow": "Kombinovaný tok", "eachLayer": "Každá vrstva zvlášť", "diff": "Rozdíl", @@ -8725,7 +8732,7 @@ "spent": "vyčerpáno ${spent} / ${cap}", "capReached": "limit dosažen", "loadAb": "Načíst A/B", - "engine": "Engine", + "engine": "Modul", "savings": "Úspory", "retention": "Retence", "outputTokensShort": "Výstupní tokeny", @@ -8763,7 +8770,7 @@ "why": "Pouze Fable 5 čte husté stránky se 100% přesností (měřeno, n=30). GPT-5.5 a Gemini 2.5 Flash jsou blokovány." }, "transport": { - "label": "Transport", + "label": "Přenos", "pass": "přímé Anthropic", "why": "Agregátory převzorkovávají obrázky a ničí čitelnost — autoritativní je pouze přímá trasa." }, @@ -8780,27 +8787,27 @@ }, "enableTitle": "Povolit engine", "enableDescription": "Spouští se jako poslední v zásobníku (poté, co RTK/Caveman vyčistí text a OmniGlyph převede zbytek na obrázky) a běží také samostatně v režimu omniglyph. Toto je náhled a ve výchozím nastavení zůstává vypnutý, dokud nebude dokončeno end-to-end ověření.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Profil komprese", + "profileDescription": "Profil představuje horní mez, nikoli dolní: přísnější profil nelze zmírnit přepsáním pro jednotlivý krok. Změřeno na této kódové základně: s profilem Coding-safe nebo Balanced se v relaci, ve které se dosud nenashromáždila historie, nic nekomprimuje, protože oba profily zvyšují minimální počet znaků a ponechávají systémovou výzvu, schémata nástrojů a výsledky nástrojů v původní podobě.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Aggressive (výchozí)", + "description": "Zásady použité při měření publikovaných záznamů. Převádí systémovou výzvu, dokumentaci nástrojů a obsáhlou historii na obrázky." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Vyvážený", + "description": "Ponechává aktuální stav v původní podobě a chrání posledních 8 tahů; slučuje pouze starší uzavřenou historii." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Bezpečný pro kódování", + "description": "Ponechává autoritativní pokyny, schémata nástrojů a aktuální výstup nástrojů v původní podobě a chrání posledních 12 tahů. Dokud se v relaci nenashromáždí historie, nic nekomprimuje." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Průchozí", + "description": "Směruje bez transformace. Engine se přeskočí a požadavek se předá beze změny." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Vyberte profil komprese OmniGlyph", "saved": "Uloženo.", "saveFailed": "Nepodařilo se uložit.", "enableAria": "Povolit engine OmniGlyph", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Komprese zpráv založená na pravidlech, jazykové balíčky, analytika a ovládání režimu výstupu.", "advancedConfig": "Pokročilá konfigurace", "advancedConfigDesc": "Jemné doladění kompresního chování", "aggressiveSettings": "Agresivní nastavení", "aggressiveSettingsDesc": "Maximální komprese s potenciálními kompromisy v kvalitě", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Požadavky", + "tokensSaved": "Ušetřené tokeny", + "savingsPercent": "Úspora v %", + "avgLatency": "Průměrná latence", + "languagePacks": "Jazykové balíčky", + "languagePacksDesc": "Povolte pravidla komprese pro konkrétní jazyky.", "labelAutoTrigger": "Automatická komprimace při překročení kontextu", "labelCompressionRate": "Pevnost v tlaku", "labelMaxTokens": "Cílové tokeny na zprávu", "labelMinLength": "Minimální délka zprávy", "labelMinSavings": "Minimální počet tokenů k uložení", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Povoleno", + "autoDetect": "Automaticky rozpoznat jazyk", + "rulesCount": "{count} pravidel", "inputCompressionTitle": "Komprese vstupu", "inputCompressionDesc": "Přepíše historii chatu kratší formulací. Snižuje počet vstupních tokenů o ~50 %.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Analytika komprese", + "noAnalytics": "Zatím nejsou k dispozici žádné analytické údaje o kompresi.", "masterDisabledWarning": "Hlavní přepínač Token Saver je VYPNUTÝ — tato nastavení neovlivní požadavky, dokud jej nezapnete v Nastavení komprese nebo nezměníte zde.", "outputMode": "Výstupní režim", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Režim výstupu", "quickSettings": "Rychlé nastavení", "quickSettingsDesc": "Základní nastavení komprese pro začátek", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Automatické vynechání při dostatečné srozumitelnosti", + "bypassConditions": "Podmínky vynechání", "bypassConditionsList": "zabezpečení, nevratné, objasnění, citlivá na objednávku", "simpleMode": "Jednoduché", "advancedMode": "Pokročilé", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ultra nastavení", "ultraSettingsDesc": "Sémantická komprese poháněná SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Odpovídej stručně. Zachovej technické termíny, kód, chyby, URL a identifikátory.", + "full": "Odpovídej stroze a úsporně. Zachovej veškerý technický obsah.", + "ultra": "Odpovídej maximálně stroze a používej běžné technické zkratky. Zachovej přesné symboly." } }, "translator": { @@ -9157,7 +9164,7 @@ "loadToolSample": "Načíst vzorek volání nástroje", "transformToResponses": "Transformace na odpovědi", "rawChatSseInput": "Raw chat dokončení SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "Transformované SSE Responses API", "noResultsYet": "Zatím žádné výsledky", "transformedEvents": "Transformované události", "uniqueEventTypes": "Jedinečné typy událostí", @@ -9170,7 +9177,7 @@ "comboRouted": "Combo směrováno", "uniqueEndpoints": "Jedinečné koncové body", "routeDetails": "Podrobnosti trasy", - "comboBadge": "Combo", + "comboBadge": "Kombinace", "routeEndpointLabel": "Koncový bod", "routeConnectionLabel": "Připojení", "scenarioVision": "Vize (pochopení obrazu)", @@ -9181,7 +9188,7 @@ "conceptHeadline": "Vaše aplikace mluví \"jazykem\" jednoho API. Překladač ji převede pro použití s jiným poskytovatelem.", "conceptDiagramAppLabel": "Vaše aplikace", "conceptDiagramSourceLabel": "Zdrojový formát", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (centrum)", "conceptDiagramTargetLabel": "Cílový poskytovatel", "conceptDiagramExampleApp": "např. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Vložte požadavek JSON; formát je detekován automaticky.", "advancedPipelineTitle": "Zprostředkující pipeline OpenAI", "advancedPipelineSubtitle": "Vizualizujte jednotlivé kroky překladu (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Transformátor streamu (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Převede Chat Completions SSE na Responses API.", "advancedTestBenchTitle": "Test Bench (8 scénářů)", "advancedTestBenchSubtitle": "Spustí všechny scénáře a nahlásí úspěch/neúspěch + % kompatibility.", @@ -9267,7 +9274,7 @@ "grokAutoTopUpDisabled": "Zakázáno", "grokAutoTopUpAt": "na", "grokAutoTopUpAdd": "přidat", - "grokAutoTopUpMax": "max", + "grokAutoTopUpMax": "max.", "grokAutoTopUpMonth": "měsíc", "grokAdditionalCredits": "Další kredity", "kiloAccountBalance": "Zůstatek na účtu", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Zbývá", "kiloPassRenews": "Obnovuje se za {count} dní", "kiloPassUsageLabel": "Využití za tento měsíc", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Kredity za využití navíc", + "kimiExtraUsage": "Využití navíc", + "kimiExtraUsageEnabled": "Povoleno", + "kimiExtraUsageDisabled": "Zakázáno", + "kimiExtraUsageFrozen": "Zmrazeno", + "kimiExtraUsageUnavailable": "Nedostupné", + "kimiMonthlyUsed": "Využito tento měsíc", + "kimiMonthlyLimit": "Měsíční limit", + "kimiMonthlyLimitUnlimited": "Neomezeně", + "kimiAdditionalCredits": "Dodatečné kredity", "loggerTab": "Zapisovač", "proxyTab": "Proxy", "budgetManagement": "Správa rozpočtu", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "Odpovědi jsou porovnávány s očekávanými kritérii. Pro každý případ se zobrazí výsledky s metrikami latence a podrobnou zpětnou vazbou.", "evalsStrategyContainsLabel": "Obsahuje", "evalsStrategyExactLabel": "Přesná shoda", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Regulární výraz", "evalsStrategyCustomLabel": "Vlastní logika", "evalsStrategyContainsDescription": "Kontroluje, zda výstup LLM obsahuje očekávaný podřetězec.", "evalsStrategyExactDescription": "Kontroluje, zda výstup LLM přesně odpovídá očekávané hodnotě.", @@ -9373,7 +9380,7 @@ "runAllSuites": "Spustit vše", "runAllRunning": "Vše běží...", "runAllProgress": "Běží {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# sada selhala} few {# sady selhaly} other {# sad selhalo}}", "runAllCompleted": "Proběhlo {suites} sad – {passed} úspěšně, {failed} se nezdařilo", "runAllCompletedWithFailures": "Ran {completed} apartmá; {failedSuites} se nepodařilo dokončit", "runningProgress": "Běží {current}/{total}...", @@ -9385,7 +9392,7 @@ "resultFailed": "Nepodařilo se", "expandResult": "Rozbalte podrobnosti o výsledku", "collapseResult": "Sbalit podrobnosti výsledku", - "detailsContains": "Contains: \"{term}\"", + "detailsContains": "Obsahuje: „{term}“", "detailsRegex": "Regex: {pattern}", "detailsExpected": "Očekáváno: \"{expected}\"", "expectedOutputLabel": "Očekávaný výstup", @@ -9465,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "Zdarma", - "tierLite": "Lite", + "tierLite": "Odlehčený", "tierUnknown": "Neznámý", "statTotal": "Celkem", "statCritical": "Kritické", @@ -9475,7 +9482,7 @@ "filterTierLabel": "Úroveň", "purchaseAll": "Vše", "purchaseOauthSub": "Předplatné", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "OAuth zdarma", "purchaseApiKey": "API klíč", "creditsLabel": "Kredity", "creditBalanceHint": "Zbývající zůstatek", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Uplatnit kredit", "resetCreditRedeemed": "Reset uplatněn", "resetCreditRedeemFailed": "Nepodařilo se uplatnit resetovací kredit", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Sadu se nepodařilo uložit", "clone": "Klonovat", "exportSuite": "Exportovat", "importSuite": "Importovat", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Neplatný JSON sady eval", "suiteBuilderCloneSuffix": "kopírovat", "suiteBuilderImportedSuite": "Importovaná sada", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", + "scorecardTitle": "Přehled výsledků", + "evalApiKey": "Klíč API", + "scorecardPassRate": "Úspěšnost", "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "actualOutputLabel": "Skutečný výstup", + "evalTargetHint": "Vyberte model nebo kombinaci k vyhodnocení.", + "suiteBuilderDeleted": "Sada byla úspěšně odstraněna", + "suiteBuilderCaseCardHint": "Definujte vstupní prompt a kritéria očekávaného výstupu.", + "nextResetUtc": "Další obnovení (UTC)", + "scorecardHint": "Souhrnné míry úspěšnosti napříč všemi hodnoticími sadami.", + "suiteLatestRunsHint": "Nejnovější běhy vyhodnocení této sady.", + "saving": "Ukládání", + "suiteBuilderCaseModelLabel": "Model (volitelné)", + "evalControlsTitle": "Ovládací prvky vyhodnocení", + "suiteBuilderEditTitle": "Upravit hodnoticí sadu", + "suiteBuilderCaseStrategyLabel": "Strategie validace", + "notifySelectDifferentCompareTarget": "Pro porovnání vyberte jiný cíl", + "recentRunsHint": "Zobrazují se nejnovější běhy vyhodnocení. Kliknutím na běh zobrazíte podrobné výsledky.", + "evalCompareHint": "Volitelně porovnejte výsledky s druhým cílem.", + "suiteBuilderCaseInvalid": "Tento případ obsahuje chyby validace. Před uložením je opravte.", + "historyEmpty": "Zatím žádná historie vyhodnocení", + "suiteBuilderUpdated": "Sada byla úspěšně aktualizována", + "resetInterval": "Obnovit interval", + "suiteBuilderCreateTitle": "Vytvořit sadu vyhodnocení", + "activePeriodSpend": "Útrata v aktivním období", + "evalApiKeyHint": "Vyberte klíč API, který se použije pro požadavky na vyhodnocení.", + "evalCompareOptional": "Porovnat (volitelné)", + "suiteBuilderDeleteFailed": "Sadu se nepodařilo odstranit", + "suiteBuilderCaseSystemPromptPlaceholder": "Volitelné systémové pokyny...", + "scorecardCases": "Případy", + "runCompletedWithScore": "Vyhodnocení dokončeno — úspěšnost {score} %", + "suiteBuilderCustomBadge": "Vlastní", + "targetSuiteDefaults": "Výchozí nastavení sady", + "suiteBuilderDeleteConfirm": "Opravdu chcete tuto sadu odstranit? Tuto akci nelze vrátit zpět.", + "suiteBuilderNameLabel": "Název sady", + "scorecardSuites": "Sady", + "evalCompareTarget": "Cíl porovnání", + "suiteBuilderCaseModelPlaceholder": "např. gpt-4o-mini", + "evalControlsHint": "Nakonfigurujte cíl vyhodnocení a klíč API a poté spusťte sady, abyste ověřili kvalitu modelu.", + "recentRunsTitle": "Nedávná spuštění", + "suiteBuilderCaseSystemPromptLabel": "Systémová výzva", + "suiteBuilderCaseExpectedPlaceholder": "např. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "např. def Fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Vložte přesnou očekávanou odpověď", "suiteBuilderCaseExpectedPlaceholderRegex": "např. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Použijte regulární výraz JavaScriptu bez zalamování lomítek.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "např. Sada kvality kódu", + "suiteBuilderAddCase": "Přidat případ", + "cancel": "Zrušit", + "evalTarget": "Cíl", + "suiteBuilderCaseNameLabel": "Název případu", + "weeklyLimitUsd": "Týdenní limit (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "např. Napište funkci pro výpočet Fibonacciho posloupnosti v Pythonu", + "suiteBuilderNameRequired": "Název sady je povinný", + "suiteBuilderCaseUserPromptLabel": "Uživatelská výzva", + "daily": "Denně", + "resultErrorLabel": "Chyba", + "suiteBuilderBuiltInBadge": "Vestavěné", + "suiteBuilderCaseCardTitle": "Testovací případ", "suiteBuilderDuplicateCase": "Duplicitní", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", + "weeklyLimitPlaceholder": "např. 50.00", + "suiteBuilderCaseTagsHint": "Značky oddělené čárkami pro uspořádání testovacích případů.", + "notifyEvalRunFailedWithReason": "Vyhodnocení se nezdařilo: {reason}", + "weekly": "Týdně", + "runEvalRunning": "Probíhá vyhodnocení...", + "delete": "Smazat", + "resetTimeUtc": "Čas resetování (UTC)", + "evalApiKeyAuto": "Automaticky (použít výchozí)", + "suiteBuilderDescriptionPlaceholder": "Volitelný popis toho, co tato sada testuje...", + "targetComparisonTitle": "Porovnání cílů", + "save": "Uložit", + "suiteBuilderCreated": "Sada byla úspěšně vytvořena", + "suiteLatestRuns": "Nejnovější spuštění", + "suiteBuilderCaseExpectedLabel": "Očekávaná hodnota", + "historyLatency": "Latence", + "suiteBuilderCaseTagsPlaceholder": "např. coding, python", + "targetTypeCombo": "Kombinace", + "scorecardPassed": "Úspěšné", + "suiteBuilderCaseTagsLabel": "Štítky", + "suiteBuilderNewSuite": "Nová sada", + "notifyEvalLoadFailed": "Nepodařilo se načíst data vyhodnocení", + "notConfigured": "Nenakonfigurováno", + "suiteBuilderCaseNamePlaceholder": "např. test Fibonacciho posloupnosti v Pythonu", "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "suiteBuilderCreateAction": "Vytvořit sadu", + "suiteBuilderCasesHint": "Každý případ odešle prompt a ověří odpověď.", + "suiteBuilderUpdatedAt": "Aktualizováno", + "errorBadge": "Chyba", + "suiteBuilderCasesTitle": "Testovací případy", + "edit": "Upravit", + "monthly": "Měsíčně", + "suiteBuilderCasesRequired": "Je vyžadován alespoň jeden testovací případ", + "weeklyLimitSummary": "Souhrn týdenního rozpočtového limitu", + "suiteBuilderDescriptionLabel": "Popis", + "targetComparisonHint": "Porovnání výsledků vyhodnocení mezi cíli vedle sebe.", + "compareCompletedWithScore": "Porovnání dokončeno — míra úspěšnosti {score} %", + "staleQuotaTooltip": "Poslední aktualizace selhala — zobrazují se data z mezipaměti", "quotaThresholdLabel": "Zbývá min", "quotaCutoffsColumnHelp": "Zastavit požadavky, když zbývající kvóta klesne na toto procento nebo níže.", "quotaCutoffsButtonDefault": "Výchozí", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Systémové metriky", "memory": "Paměť", - "memoryShort": "mem", + "memoryShort": "paměť", "uptime": "Dostupnost", "ariaLabel": "Sledování systému", "title": "Systémový Monitor", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Čekám na Antigravity autorizaci...", "waitingForQoderAuthorization": "Čekám na Qoder autorizaci...", "exchangingCodeForTokens": "Vyměňuji kód za tokeny...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Nekompatibilní verze Node.js", + "nodeIncompatibleDesc": "Používáte Node.js {version}, která nesplňuje zásady OmniRoute pro podporované zabezpečené běhové prostředí. Použijte opravenou verzi Node.js 20.x nebo 22.x LTS.", + "nodeIncompatibleFixLabel": "Řešení: nainstalujte opravenou verzi Node.js 22 LTS", + "nodeIncompatibleHint": "OmniRoute vyžaduje Node.js 22.22.2+ (22.x LTS) nebo 24.0.0+ (24.x LTS). Doporučuje se Node 24 LTS.", "resetViaAppDataTitle": "Obnovit přes data aplikace", "resetViaAppDataDescription": "Odstraňte soubor nastavení z adresáře dat aplikace pro resetování vašeho hesla:", "quitDesktopApp": "Úplně ukončete desktopovou aplikaci OmniRoute", @@ -10064,7 +10071,7 @@ "quickStartStep4Suffix": "Použijte například prefix poskytovatele", "deploySetupTitle": "Průvodce nastavením", "deploySetupText": "Instalace krok za krokem, konfigurace prostředí a návod k prvnímu spuštění pro OmniRoute.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron pro počítače", "deployElectronText": "Spusťte OmniRoute jako nativní desktopovou aplikaci na Windows, macOS a Linux.", "deployDockerTitle": "Docker", "deployDockerText": "Kontejnerové nasazení s Docker Compose; připravené pro produkční zásobníky a Kubernetes.", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Nainstalujte OmniRoute jako progresivní webovou aplikaci do prohlížečů Android, iOS a stolních počítačů.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Spusťte OmniRoute v režimu bez grafického rozhraní na Androidu pomocí Termuxu. K ovládacímu panelu můžete přistupovat z mobilního prohlížeče.", "featureRoutingTitle": "Směrování s více poskytovateli", "featureRoutingText": "Směrujte požadavky k více než 30 AI poskytovatelům prostřednictvím jediného koncového bodu kompatibilního s OpenAI. Podporuje chat, responses, audio i obrazová API.", "featureCombosTitle": "Kombinace a vyvažování", @@ -10215,7 +10222,7 @@ "mcpToolsMemoryDesc": "Vyhledávejte, přidávejte a mažte trvalé záznamy konverzační paměti.", "mcpToolsSkillsTitle": "Dovednosti", "mcpToolsSkillsDesc": "Seznamte, povolte, spusťte a sledujte provádění vlastních dovedností.", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "Automatická kombinace", "featureAutoComboText": "Automaticky vytvářejte optimalizovaná komba na základě vašich připojených poskytovatelů, vzorců použití a možností modelu.", "featureSearchTitle": "Vyhledávání na webu", "featureSearchText": "Integrované vyhledávání na webu s 5 poskytovateli (Serper, Brave, Exa, Tavily, Perplexity) včetně analýzy a sledování nákladů.", @@ -10225,7 +10232,7 @@ "featureSkillsText": "Rozšiřitelný systém dovedností s vestavěnými a vlastními dovednostmi, prováděním sandboxu, zachycováním požadavků a vkládáním kontextu.", "featureAcpTitle": "Komunikace agentů", "featureAcpText": "Registr Agent Communication Protocol (ACP) pro správu pracovních postupů mezi agenty a orchestraci nástrojů.", - "protocolAcpTitle": "ACP (Agent Communication)", + "protocolAcpTitle": "ACP (komunikace agentů)", "protocolAcpDesc": "Zaregistrujte a spravujte agenty prostřednictvím registru AKT pro komunikaci mezi agenty a sdílení nástrojů.", "protocolAcpStep1": "Chcete-li zobrazit registrované agenty AKT, přejděte na Dashboard → Agents.", "protocolAcpStep2": "Zaregistrujte nové agenty se schopnostmi a konfigurací koncových bodů.", @@ -10251,7 +10258,7 @@ "nonTechUsersSubtitle": "Začněte rychle — není potřeba technické zázemí", "techUsersTitle": "Pro technické uživatele", "techUsersSubtitle": "Hluboké ponoření do architektury, API a vnitřností", - "apiExplorerMetadataTitle": "API Explorer — OmniRoute Docs", + "apiExplorerMetadataTitle": "Průzkumník API — dokumentace OmniRoute", "apiExplorerMetadataDescription": "Interaktivní API prozkoumávatel — vyzkoušejte koncové body OmniRoute naživo s odpověďmi v reálném čase", "apiExplorerTitle": "API Průzkumník", "apiExplorerDescription": "Vyzkoušejte živé koncové body OmniRoute. Vyberte koncový bod, nakonfigurujte svou žádost a sledujte odpověď v reálném čase.", @@ -10446,14 +10453,14 @@ "connected": "Připojeno", "notConnected": "Nepřipojeno", "configure": "Konfigurovat", - "settingsTitle": "Cloud Agent Settings", - "settingsDesc": "Configure local preferences for cloud agents.", - "settingEnableAgents": "Enable cloud agents", - "settingEnableAgentsDesc": "Allow OmniRoute to orchestrate autonomous coding agents.", - "settingAutoPR": "Auto-create PR", - "settingAutoPRDesc": "When a task is completed, automatically create a Pull Request with the changes.", - "settingRequireApproval": "Require plan approval", - "settingRequireApprovalDesc": "Always wait for manual approval before an agent executes a proposed plan.", + "settingsTitle": "Nastavení cloudových agentů", + "settingsDesc": "Nakonfigurujte místní předvolby pro cloudové agenty.", + "settingEnableAgents": "Povolit cloudové agenty", + "settingEnableAgentsDesc": "Umožnit OmniRoute koordinovat autonomní programovací agenty.", + "settingAutoPR": "Automaticky vytvořit PR", + "settingAutoPRDesc": "Po dokončení úlohy automaticky vytvořit Pull Request s provedenými změnami.", + "settingRequireApproval": "Vyžadovat schválení plánu", + "settingRequireApprovalDesc": "Vždy počkat na ruční schválení, než agent provede navržený plán.", "untitledTask": "Úkol bez názvu", "created": "Vytvořeno", "conversation": "Konverzace", @@ -10570,14 +10577,14 @@ "unavailableDesc": "Nepodařilo se načíst statistiky mezipaměti. Ujistěte se, že server běží.", "loadingCacheAria": "Načítání mezipaměti", "promptCache": "Prompt mezipaměť (na straně poskytovatele)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", + "semanticCache": "Sémantická mezipaměť", + "promptCacheSectionDesc": "Zobrazuje aktivitu ukládání promptů do mezipaměti na straně poskytovatele z historie využití, abyste viděli, kde je řízení mezipaměti aktivní a v jaké míře se vstupy opakovaně využívají.", + "promptTrendDesc": "Hodinový objem požadavků, pokrytí mezipamětí a objem čtení z mezipaměti za posledních 24 hodin.", "cachedRequests": "Uložené požadavky", - "cachedRequests24h": "Cached Requests (24h)", + "cachedRequests24h": "Požadavky uložené v mezipaměti (24 h)", "cacheHitRate": "Míra úspěšnosti mezipaměti", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "cacheRate": "Míra využití mezipaměti", + "cacheRateDesc": "z celkového počtu požadavků", "cachedTokens": "Tokeny v mezipaměti", "cacheCreationTokens": "Tokeny vytvoření mezipaměti", "cacheMetrics": "Metriky mezipaměti promptů", @@ -10587,12 +10594,12 @@ "cacheReuseRatio": "Poměr opětovného použití", "cacheReuseRatioDesc": "Tokeny v mezipaměti / Celkem vstupních tokenů", "estCostSaved": "Odhadovaná úspora nákladů", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", + "lastUpdated": "Naposledy aktualizováno", + "hoursTracked": "sledovaných hodin", + "busiestHour": "Nejvytíženější hodina", + "peakCacheRate": "Nejvyšší míra využití mezipaměti", + "trendHour": "Hodina", + "activityVolume": "Aktivita", "requestsShort": "pož.", "inputShort": "Vstup", "cachedShort": "V mezipaměti", @@ -10600,7 +10607,7 @@ "resetting": "Resetuji...", "resetMetrics": "Resetovat metriky", "byProvider": "Rozpis podle poskytovatele", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "providerCacheRateDesc": "Každý poskytovatel uvádí celkový počet vstupních tokenů, tokenů načtených z mezipaměti a tokenů zapsaných do mezipaměti, abyste mohli ověřit poměr opakovaného využití vůči hrubým součtům.", "provider": "Provider", "requests": "Požadavky", "inputTokens": "Vstupní tokeny", @@ -10613,16 +10620,16 @@ "tableProvider": "Poskytovatel", "tableModel": "Model", "performanceTitle": "Výkon", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", + "semanticCacheSectionDesc": "Vlastní deterministická mezipaměť odpovědí OmniRoute. Je-li povolena, lze opakované požadavky bez streamování s temperature=0 obsloužit lokálně bez kontaktování nadřazeného poskytovatele.", + "semanticCacheDisabledDesc": "Sémantická mezipaměť je zakázána. OmniRoute nebude lokálně opakovaně používat odpovědi, dokud ji znovu nezapnete v Nastavení.", + "semanticEntriesDesc": "Trvalé záznamy sémantické mezipaměti aktuálně uložené v SQLite. Aktivita mezipaměti promptů na straně poskytovatele zde není uvedena.", "searchEntries": "Hledat položky...", "search": "Hledat", "loading": "Načítám...", - "entriesLoadError": "Failed to load semantic cache entries.", + "entriesLoadError": "Záznamy sémantické mezipaměti se nepodařilo načíst.", "noEntries": "Nebyly nalezeny žádné položky mezipaměti", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", + "noPromptCacheData": "Dosud nebyla zaznamenána žádná aktivita mezipaměti promptů na straně poskytovatele.", + "noTrendData": "Za posledních 24 hodin nebyla zaznamenána žádná aktivita mezipaměti promptů.", "signature": "Signatura", "model": "Model", "created": "Vytvořeno", @@ -10631,9 +10638,9 @@ "deduplicatedRequests": "Deduplikované požadavky", "savedCalls": "Uložená API volání", "totalProcessed": "Celkem zpracováno", - "disabled": "Disabled", - "totalRequests": "Total Requests", - "reasoningCache": "Reasoning Replay", + "disabled": "Zakázáno", + "totalRequests": "Celkový počet požadavků", + "reasoningCache": "Opakování uvažování", "reasoningCacheDesc": "Zachovává modelové myšlení pro toky vyvolání víceotáčkového nástroje", "reasoningEntries": "Aktivní záznamy", "reasoningReplayRate": "Rychlost přehrávání", @@ -10674,11 +10681,11 @@ "proxyConfigModal": { "levelGlobal": "Globální", "levelProvider": "Poskytovatel", - "levelCombo": "Combo", + "levelCombo": "Kombinace", "levelKey": "klíč", "levelDirect": "Přímé (bez proxy)", "titleGlobal": "Globální konfigurace proxy", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "Proxy {level} — {label}", "loading": "Načítání konfigurace proxy...", "inheritingFrom": "Dědění od", "source": "Zdroj", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "Vložte existující API klíč Devin z ověřené relace Devin. Dostupnost exportu klíče a kroky se liší podle verze a účtu Devin.", "devinPasteDescription": "Zadejte svůj WINDSURF_API_KEY (získaný pomocí `devin auth login`, nebo prostřednictvím příkazu \"Windsurf: Poskytnout Auth Token\" v IDE Windsurf).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json pro Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "API Klíč / Token", "saving": "Ukládání…", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Připojte kurzorové IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Přihlásit se pomocí Cursoru", + "tabImport": "Importovat token", + "loginDescription": "Otevře přihlášení k Cursoru v prohlížeči. Funguje v Dockeru — potvrďte přihlášení v prohlížeči hostitelského systému a poté se vraťte sem.", + "loginWithCursor": "Přihlásit se pomocí Cursoru", + "startingLogin": "Spouštění…", + "waitingApproval": "Čeká se na schválení přihlášení k Cursoru…", + "openUrlHint": "Pokud se prohlížeč neotevřel:", + "openLoginLink": "Otevřít přihlašovací stránku", + "cancelLogin": "Zrušit přihlášení", "autoDetecting": "Automatická detekce tokenů...", "readingFromCursor": "Čtení z Cursor IDE nebo kurzorového agenta", "tokensAutoDetected": "Tokeny byly úspěšně automaticky detekovány z Cursor IDE!", "cursorNotDetected": "IDE kurzoru nebylo zjištěno. Vložte prosím svůj token ručně.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Používáte Docker? Upřednostněte přihlášení pomocí Cursoru. Automatický import z IDE a cursor-agent obvykle nejsou uvnitř kontejneru dostupné. Viz docs/providers/CURSOR-DOCKER.md.", "accessToken": "Přístupový token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Obnovovací token", + "refreshTokenPlaceholder": "Volitelné — umožňuje automatické obnovování tokenu", "required": "*", "accessTokenPlaceholder": "Přístupový token se automaticky vyplní...", "machineId": "ID stroje", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Automatická detekce tokenů se nezdařila", "errorEnterToken": "Zadejte přístupový token", "errorImportFailed": "Import se nezdařil", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Přihlášení k Cursoru se nepodařilo spustit", + "errorLoginPoll": "Přihlášení k Cursoru se nezdařilo", + "errorLoginTimeout": "Časový limit přihlášení k Cursoru vypršel — zkuste to znovu" }, "pricingModal": { "title": "Konfigurace cen", @@ -10843,9 +10850,9 @@ "selectProxy": "Vybrat {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Importovat starší data", + "bulkAssign": "Hromadně přiřadit", + "addProxy": "Přidat proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,15 +10861,15 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Otestovat", + "edit": "Upravit", + "delete": "Odstranit", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", "labelType": "Typ", "labelFamily": "Rodina IP", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Automaticky (dual-stack)", "familyIpv4": "Pouze IPv4", "familyIpv6": "Pouze IPv6", "familyHint": "Rodina odchozích adres. Volba Auto zachová dual-stack; IPv4/IPv6 připne tuto proxy k dané rodině (zabraňuje úniku v4 pod proxy typu pouze IPv6).", @@ -10870,7 +10877,7 @@ "labelPort": "Port", "labelUsername": "Uživatelské jméno", "labelPassword": "Heslo", - "labelRegion": "Region", + "labelRegion": "Oblast", "labelStatus": "Stav", "labelNotes": "Poznámky", "usernamePlaceholderEdit": "Chcete-li zachovat aktuální uživatelské jméno, ponechte prázdné", @@ -10881,13 +10888,13 @@ "save": "Uložit", "bulkModalTitle": "Hromadné přiřazení proxy", "bulkLabelScope": "Rozsah", - "bulkLabelProxy": "Proxy", + "bulkLabelProxy": "Proxy server", "bulkClearAssignment": "(Vymazat zadání)", "bulkLabelScopeIds": "ID rozsahu (oddělené čárkou nebo novým řádkem)", "bulkScopeIdsPlaceholder": "poskytovatel-openai,poskytovatel-antropický", "bulkApply": "Použít", "labelScope": "Rozsah", - "labelProxy": "Proxy", + "labelProxy": "Proxy server", "scopeGlobal": "globální", "scopeProvider": "poskytovatel", "scopeAccount": "účet", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Selhalo", "successRate": "{rate} % úspěšnosti", "avgLatency": "průměr {latency} ms", "assignmentsCount": "{count} úkolů", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Opravit", "relayAuthMissing": "chybí autorizace", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Strategie rotace", "poolStrategyHint": "round-robin cyklí členy v pořadí; random vybírá rovnoměrně; sticky drží jednoho člena po určitou dobu; latency-optimized vybírá nejrychlejšího na základě protokolů.", "poolStrategyFailed": "Nepodařilo se aktualizovat strategii rotace", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Cyklicky", "strategyRandom": "Náhodně", - "strategySticky": "Sticky", + "strategySticky": "Připnuté", "strategyLatency": "Optimalizováno podle latence", "poolMembersLabel": "Členové poolu ({count})", "poolNoMembers": "V tomto poolu zatím nejsou žádné proxy.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "Použito {exits, plural, one {# výstup} other {# výstupů}} prostřednictvím {connections, plural, one {# připojení} other {# připojení}} · až {max} na jednom výstupu · za posledních {hours} h", + "poolEgressObservationEmpty": "Za posledních {hours} h nebyl zaznamenán žádný provoz", + "poolEgressObservationHint": "Počítáno z protokolu proxy za dané období: jedinečné odchozí IP adresy zaznamenané u členů tohoto fondu a připojení OmniRoute, která je použila. „Na jednom výstupu“ znamená za celé období, nikoli současně. Blokace 429 pro jednotlivé IP adresy pozastaví pouze připojení stejné rodiny poskytovatelů.", "poolRemove": "Odebrat", "poolRemoveFailed": "Nepodařilo se odebrat proxy z poolu", "poolAddLabel": "Přidat proxy", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", + "endpoint": "Koncový bod", + "provider": "Poskytovatel", "model": "Model", "accountKey": "Account Key", "autoAccounts": "Auto (počet účtů: {count})", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Odeslat", + "cancel": "Zrušit", + "audioFile": "Zvukový soubor", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Vymazat vše", + "request": "Požadavek", + "response": "Odpověď", + "transcription": "Přepis", + "copy": "Kopírovat", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Vygenerováno {count} obrázků", "generatedImage": "Vygenerovaný obrázek {index}", - "save": "Save", + "save": "Uložit", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Odpovědi", "completions": "Doplňování", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Vektorové reprezentace", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Moderování", - "rerank": "Rerank", + "rerank": "Přeřazení", "search": "Search", - "webFetch": "Web fetch" + "webFetch": "Načtení webu" }, "conversationalChat": "Konverzační chat", "clearChat": "Vymazat chat", "typeMessagePlaceholder": "Napište zprávu... (Shift+Enter pro nový řádek)", "tabChat": "Chat", - "tabCompare": "Compare", + "tabCompare": "Porovnat", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Sestavení", + "configPane": "Konfigurace", + "systemPrompt": "Systémová výzva", + "systemPromptPlaceholder": "Jste užitečný asistent.", + "modelPlaceholder": "např. openai/gpt-4o", + "endpointLabel": "Koncový bod", + "parametersLabel": "Parametry", + "collapseConfig": "Sbalit panel konfigurace", + "expandConfig": "Rozbalit panel konfigurace", + "temperature": "Teplota", + "maxTokens": "Maximum tokenů", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Penalizace přítomnosti", + "frequencyPenalty": "Penalizace frekvence", "reasoningLabel": "Uvažování", "thinking": "Přemýšlení", "effort": "Úsilí", "effortDefault": "Výchozí", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Náhodně (ponechte prázdné)", + "presetsLabel": "Předvolby", + "loadPreset": "Načíst předvolbu", + "savePreset": "Uložit předvolbu", + "noPresets": "Žádné předvolby", + "presetNamePlaceholder": "Název předvolby", + "savingPreset": "Ukládání…", + "nameRequired": "Název je povinný", + "failedToSavePreset": "Předvolbu se nepodařilo uložit", + "improvePrompt": "Vylepšit prompt", + "improvingPrompt": "Vylepšování…", + "improvePromptTitle": "Vylepšete svůj prompt pomocí AI", + "setModelFirst": "Nejprve nastavte model", "setModelInConfigFirst": "Nejprve nastavte model v panelu konfigurace.", "improvePromptFailed": "Vylepšení promptu selhalo.", "improvePromptAria": "Vylepšit prompt pomocí AI", "confirmImprovePrompt": "Potvrdit vylepšení promptu", "improvePromptDescription": "Tímto odešlete svůj aktuální systémový prompt do za účelem vygenerování vylepšené verze.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", - "exportShort": "Export", - "noStateToExport": "No playground state available to export.", + "improveQuotaWarning": "Tím se spotřebuje kvóta modelu nakonfigurovaného v Config.", + "improveConfirm": "Vylepšit", + "exportCode": "Exportovat kód", + "exportCodeTitle": "Exportovat kód", + "exportShort": "Exportovat", + "noStateToExport": "Není k dispozici žádný stav hřiště k exportu.", "closeExportModal": "Zavřít modální okno exportu", "close": "Zavřít", "exportRealKeyWarning": "Bezpečnostní varování: export byl zablokován — ve výstupu byl detekován skutečný API klíč. Resetujte prosím svůj API klíč a zkuste to znovu.", @@ -11071,12 +11078,12 @@ "copyLangCode": "Kopírovat kód v jazyce {language}", "loadingPresets": "Načítání…", "loadPresetPlaceholder": "Načíst předvolbu…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", + "copyCode": "Kopírovat", + "copiedCode": "Zkopírováno!", + "addModel": "+ Přidat model", + "runAll": "Spustit vše", + "cancelAll": "Zrušit vše", + "maxColumnsReached": "Maximálně {max} sloupců", "modelPlaceholderCompare": "Model (Cmd+K)…", "noModel": "Žádný model", "statusLabel": "Stav: {status}", @@ -11095,29 +11102,29 @@ "waitingForResponse": "Čekání na odpověď…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "odhad na straně klienta", + "tokensLabel": "Tokeny", + "costLabel": "Cena", + "costEstimated": "(odhadovaná)", "ttftTitle": "Čas do prvního tokenu (odhad na straně klienta)", "tpsTitle": "Tokeny za sekundu (odhad na straně klienta)", "tokenCountsTitle": "Prompt tokeny ↑ / Completion tokeny ↓", "estimatedCostTitle": "Odhadovaná cena (přesnost není zaručena)", - "toolsLabel": "Tools", + "toolsLabel": "Nástroje", "toolsCount": "Nástroje ({count})", - "addTool": "Add tool", + "addTool": "Přidat nástroj", "editTool": "Upravit nástroj {name}", "removeTool": "Odebrat nástroj {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Název funkce", "toolNameRequiredPlaceholder": "Název funkce *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Popis (volitelný)", "toolParamsLabel": "Parametry (JSON schéma)", "toolParamsJsonSchema": "JSON schéma pro parametry", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parametry musí být platný JSON", + "structuredOutputLabel": "Strukturovaný výstup", + "enableJsonMode": "Povolit režim JSON", + "disableJsonMode": "Zakázat režim JSON", + "invalidJson": "Neplatný JSON", "jsonMode": "Režim JSON", "jsonModeDescription": "Vynutí response_format: json_schema", "schemaName": "Název schématu", @@ -11125,10 +11132,10 @@ "jsonSchemaEditor": "Editor JSON schématu", "schemaValidated": "Schéma ověřeno", "validateSchema": "Ověřit schéma", - "seed": "Seed", + "seed": "Počáteční hodnota", "stopSequences": "Stop sekvence", "stopSequencesPlaceholder": "např. \"\\n\\n\" nebo \"END\"", - "autoProvider": "Auto", + "autoProvider": "Automaticky", "httpError": "Chyba {status}", "requestCancelled": "Požadavek zrušen", "networkError": "Chyba sítě", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} sloupců", "addModelToCompare": "Přidat sloupec modelu pro porovnání", "modelsSimultaneously": "Až {max} modelů současně", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Probíhá…", + "runLabel": "Spustit", + "enterToolResult": "Zadejte výsledek nástroje…", "build": { "step1Label": "Co testovat?", "step2Label": "Nastavit", @@ -11179,7 +11186,7 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Koncový bod", "apiKey": "API klíč", "model": "Model", "voice": "Hlas", @@ -11207,7 +11214,7 @@ "play": "Přehrát", "query": "Dotaz", "numResults": "Max. počet výsledků", - "prompt": "Prompt", + "prompt": "Výzva", "size": "Velikost", "duration": "Doba trvání", "question": "Otázka", @@ -11221,14 +11228,14 @@ "noAudioUrl": "Odpověď neobsahovala URL audia: {response}", "music": "Hudba", "embeddingSample": "OmniRoute směruje požadavky na AI přes více poskytovatelů.", - "embedding": "Embedding", + "embedding": "Vkládání", "imageSample": "Futuristické město při západu slunce, filmové osvětlení", "image": "Obrázek", "ttsSample": "Dobrý den z OmniRoute. Toto je test převodu textu na řeč.", "textToSpeech": "Převod textu na řeč", "videoSample": "Papírové letadélko letící nad futuristickým městem", "video": "Video", - "webFetch": "Web Fetch", + "webFetch": "Načtení webu", "webSearchSample": "Co je OmniRoute?", "webSearch": "Vyhledávání na webu", "documentUrl": "URL dokumentu", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Výsledek {number}", "noKeysFound": "Nebyly nalezeny žádné klíče API. Přidejte nějaký v sekci Klíče.", "exampleLabel": "Příklad", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} vstupních / {tokensOut} výstupních tokenů", "defaultKey": "(výchozí)", "clear": "Vymazat", @@ -11250,73 +11257,73 @@ "stop": "Zastavit" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "Nahrávání", + "paused": "Pozastaveno", + "pipelineLogsOn": "Protokolování pipeline zapnuto", + "pipelineLogsOff": "Protokolování pipeline vypnuto", + "updatingPipelineLogs": "Aktualizace protokolování pipeline...", + "updatePipelineFailed": "Aktualizace protokolování pipeline se nezdařila", + "capturePipeline": "Zaznamenávat data pipeline pro nové požadavky", + "searchPlaceholder": "Hledat modely, poskytovatele, účty, API klíče, kombinace...", + "allProviders": "Všichni poskytovatelé", + "allModels": "Všechny modely", + "allAccounts": "Všechny účty", + "allApiKeys": "Všechny API klíče", + "total": "Celkem", + "ok": "Úspěch", + "err": "Chyba", + "combo": "Kombinace", + "keys": "Klíče", + "shown": "Zobrazeno", + "sortNewest": "Nejnovější", + "sortOldest": "Nejstarší", + "sortTokensDesc": "Tokeny ↓", + "sortTokensAsc": "Tokeny ↑", + "sortDurationDesc": "Doba trvání ↓", + "sortDurationAsc": "Doba trvání ↑", + "sortStatusDesc": "Stav ↓", + "sortStatusAsc": "Stav ↑", + "sortModelAsc": "Model A–Z", + "sortModelDesc": "Model Z–A", + "sortLogs": "Seřadit protokoly", + "refresh": "Obnovit", + "columnsLabel": "Sloupce", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "NAHORU", + "semantic": "Sémantická", + "upstream": "Nadřazený server", + "semanticCacheHit": "Shoda v sémantické mezipaměti (obslouženo službou OmniRoute)", + "upstreamResponse": "Odpověď upstream poskytovatele", + "noApiKey": "Bez klíče API", + "requestedRoutedTitle": "Požadován {requested}, směrován jako {routed}", "statusFilters": { - "all": "All", + "all": "Vše", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Úspěch", + "combo": "Kombinace" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", + "status": "Stav", + "cacheSource": "Zdroj mezipaměti", "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "requested": "Požadovaný", + "provider": "Poskytovatel", + "protocol": "Protokol požadavku", + "account": "Účet", + "apiKey": "Klíč API", + "combo": "Kombinace", + "tokens": "Tokeny", "compressed": "Komprese", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Doba trvání", + "time": "Čas", + "conversation": "Konverzace", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Načítání protokolů...", + "noLogs": "Zatím žádné protokoly. Proveďte několik volání API a zobrazí se zde.", + "noMatchingLogs": "Žádné protokoly neodpovídají aktuálním filtrům.", + "callLogsInfo": "Protokoly volání se také ukládají jako soubory JSON do {dataDir} a obměňují se podle hodnot {retentionDays} a {maxEntries}.", "loadMore": "Načíst další", "loadingMore": "Načítání dalších...", "correlationId": "ID korelace", @@ -11367,12 +11374,12 @@ }, "payloadMissing": "Podrobný artefakt payloadu již není k dispozici pro tento záznam protokolu.", "payloadCorrupt": "Podrobný payload artefakt nebyl možné analyzovat.", - "notAvailable": "N/A", + "notAvailable": "Není k dispozici", "semanticCache": "Sémantický (OmniRoute)", "upstreamCache": "Nadřazený (Poskytovatel)", "ariaLabel": "Podrobnosti protokolu žádosti", "completed": "Dokončeno", - "upstreamStatus": "Upstream: {status}", + "upstreamStatus": "Nadřazený server: {status}", "statusDiscrepancy": "OmniRoute vrátil {status}, i když poskytovatel vrátil {provider}", "previousRequest": "Předchozí žádost", "nextRequest": "Další požadavek", @@ -11417,59 +11424,59 @@ "correlationId": "ID korelace", "correlationIdValue": "ID korelace: {id}", "detailedPayloadInfo": "Nejprve povolte podrobné protokolování, pokud chcete čtyřstupňový pohled na payload klienta/poskytovatele pro nové požadavky.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Kopírovat vše", + "copiedAll": "Vše zkopírováno" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", + "filterAll": "Vše", + "filterErrors": "Chyby", + "filterSuccess": "Úspěšné", + "filterTimeout": "Vypršení časového limitu", + "colStatus": "Stav", "colProxy": "Proxy", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "Typ", + "colLevel": "Úroveň", + "colProvider": "Poskytovatel", + "colTarget": "Cíl", + "colLatency": "Latence", + "colClientIp": "IP klienta", + "colTime": "Čas", + "recording": "Záznam", + "paused": "Pozastaveno", + "searchPlaceholder": "Hledat hostitele, poskytovatele, cíl, IP...", + "allTypes": "Všechny typy", + "allLevels": "Všechny úrovně", + "allProviders": "Všichni poskytovatelé", + "total": "celkem", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "CHYBA", + "timeoutShort": "ČAS. LIMIT", + "direct": "přímo", + "newest": "Nejnovější", + "oldest": "Nejstarší", + "latencyDesc": "Latence ↓", + "latencyAsc": "Latence ↑", + "refresh": "Obnovit", + "columns": "Sloupce", + "loadingProxyLogs": "Načítání protokolů proxy...", + "noProxyLogs": "Zatím nejsou k dispozici žádné protokoly proxy. Nakonfigurujte proxy a proveďte volání API, aby se zde zobrazily.", + "noMatchingLogs": "Aktuálním filtrům neodpovídají žádné protokoly.", + "tlsFingerprint": "Otisk TLS pro Chrome 124", "colPublicIp": "Veřejná IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", + "speech": "Řeč", + "search": "Vyhledávání", + "images": "Obrázky", "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "music": "Hudba", + "responses": "Odpovědi", + "rerank": "Přeřazení", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Vektorové reprezentace", + "transcription": "Přepis" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Běhové prostředí", + "description": "Pozorovatelnost v reálném čase — třívrstvá odolnost + relace + upozornění na kvóty", + "pause": "Pozastavit", + "resume": "Pokračovat", + "refreshNow": "Obnovit nyní", + "kpiSessions": "Relace", + "kpiCircuits": "Jističe", + "kpiCooldowns": "Doby čekání", + "kpiLockouts": "Blokace", + "hintStickyBound": "{count} s pevným přiřazením", + "hintRecovering": "{count} se zotavuje", + "hintAllHealthy": "vše je v pořádku", + "hintOpen": "otevřeno", + "hintConnsCooling": "připojení čekají na obnovení", + "hintModelsBlocked": "modely zablokovány", + "resilienceTitle": "Třívrstvá odolnost", + "resilienceSubtitle": "Odpovídá zdokumentovanému modelu odolnosti", + "providersHealthy": "{percent} % poskytovatelů je v pořádku", + "layer": "Vrstva {n}", + "layer1Title": "Jističe poskytovatelů", + "layer1Desc": "Zastaví provoz k poskytovatelům, u kterých dochází k selhání na nadřazené úrovni", + "layer2Title": "Doby čekání připojení", + "layer2Desc": "Přeskočí jeden nefunkční účet či klíč; ostatní připojení pokračují v obsluze", + "layer3Title": "Blokace modelů", + "layer3Desc": "Zámky omezení rychlosti pro jednotlivé modely; stejné připojení stále obsluhuje ostatní modely", + "badgeAffectedOf": "Ovlivněno {affected} z {total}", + "badgeCooling": "{count} v režimu cooldown", + "badgeLocked": "{count} uzamčeno", + "emptyCircuits": "Zatím nejsou aktivní žádné circuit breakery", + "emptyCooldowns": "Žádná připojení nejsou v režimu cooldown", + "emptyLockouts": "Žádné blokace modelů", + "moreCooldowns": "+{count} dalších cooldownů", + "moreLockouts": "+{count} dalších blokací", + "feedTitle": "Živý přehled", + "feedSubtitle": "Posledních {count} událostí", + "feedFilterAll": "Vše", + "feedFilterCircuits": "Circuit breakery", + "feedFilterCooldowns": "Cooldowny", + "feedFilterLockouts": "Blokace", + "feedFilterSessions": "Relace", + "feedFilterQuotas": "Kvóty", + "feedClear": "Vymazat", + "feedEmptyWaiting": "Čeká se na události... (kontrola každých 5 s)", + "feedEmptyFiltered": "Tomuto filtru neodpovídají žádné události", + "sessionsTitle": "Aktivní relace", + "sessionsSubtitle": "Otisky požadavků trvale přiřazené k relacím (živě)", + "sessionsActive": "{count} aktivních", + "sessionsEmptyTitle": "Žádné aktivní relace", + "sessionsEmptyHint": "Relace se zobrazí, jakmile začnou požadavky procházet přes proxy", + "tblSession": "Relace", + "tblAge": "Stáří", + "tblIdle": "Nečinnost", + "tblReqs": "Požadavky", + "tblBoundTo": "Přiřazeno k", + "topApiKeys": "Nejčastější klíče API", + "quotaMonitorsTitle": "Sledování kvót", + "quotaMonitorsSubtitle": "Aktuální stav kvóty pro časové okno každého účtu", + "openQuota": "Dostupná kvóta", + "allQuotasHealthy": "Všechny kvóty jsou v pořádku", + "statusExhausted": "VYČERPÁNO", + "statusAlerting": "VÝSTRAHA", + "statusError": "CHYBA", + "moreSuffix": "+{count} dalších" }, "quotaShare": { "weightPercent": "Váha %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Sdílení kvót", + "description": "Sdílejte kvóty poskytovatelů mezi klíči API pomocí procentních limitů", + "newPool": "Nový fond", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Konfigurace je uložena v localStorage (zatím není trvale uložena na serveru). Vynucování limitu pro jednotlivé požadavky zatím není zapojeno do proxy pipeline. Tato obrazovka umožňuje navrhnout a vizualizovat rozdělení kvóty; skutečné vynucování bude implementováno v některé z budoucích verzí spolu s trvalým ukládáním do DB a zachytáváním volání směrem k upstreamu.", + "kpiActivePools": "Aktivní fondy", + "kpiKeysAllocated": "Přiřazené klíče", + "kpiAvgUnallocated": "Průměrně nepřiděleno", + "kpiProvidersWithQuota": "Poskytovatelé s kvótou", + "emptyTitle": "Nejsou nakonfigurovány žádné fondy", + "emptyDescription": "Vytvořte fond a přiřaďte do něj klíče API, které budou sdílet interval kvóty poskytovatele podle procentuálního rozdělení.", + "loading": "Načítání…", + "removePool": "Odebrat fond", + "removeConfirm": "Odebrat tento fond?", + "pool": "Fond", + "used": "využito", + "allocationsCount": "Přidělení ({count})", + "allocatedFree": "Přiděleno {allocated} % · volných {free} %", + "noAllocations": "Zatím nejsou přiřazeny žádné klíče", + "capLabel": "limit {value}", + "notTrackedYet": "(zatím nesledováno)", + "policy": "Zásady", "apiKeyColumn": "Klíč API", "weightColumn": "Váha", "fairShareShort": "spravedlivé", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "pevné", + "policySoft": "měkké", + "policyBurst": "nárazové", + "policyHardHint": "Blokovat po vyčerpání přidělené kvóty klíče", + "policySoftHint": "Povolit překročení, pouze upozornit", + "policyBurstHint": "Povolit nárazové čerpání z volného fondu", + "editAllocations": "Upravit přidělení", + "newPoolTitle": "Nový fond kvót", + "providerConnection": "Připojení k poskytovateli (účet)", + "selectConnection": "Vyberte připojení…", + "noEligibleConnections": "Žádná připojení s údaji o kvótách. Nejprve je aktualizujte na /dashboard/quota.", + "quotaWindow": "Interval kvóty", + "selectWindow": "Vyberte interval…", + "alreadyUsedSuffix": "(již použito)", + "windowReset": "Obnovení", + "duplicatePoolError": "Fond pro toto připojení a interval již existuje", + "cancel": "Zrušit", + "createPool": "Vytvořit fond", + "editTitle": "Upravit přidělení", + "noKeysAdded": "Nejsou přiřazeny žádné klíče. Níže nějaký přidejte.", + "totalLabel": "Celkem: {percent}%", + "totalExceeded": "⚠ překračuje 100 %", + "addKey": "+ Přidat klíč…", + "equalSplit": "Rovnoměrně rozdělit", + "save": "Uložit přidělení", "betaPreviewLabel": "Beta — náhled uživatelského rozhraní.", "betaConfigSavedPrefix": "Konfigurace je uložena v", "betaConfigSavedSuffix": "(zatím na serveru nezůstalo). Vynucení omezení na žádost ještě není zapojeno do proxy kanálu. Tato obrazovka vám umožňuje navrhnout a vizualizovat rozdělení kvót; skutečné vymáhání přistane v budoucí iteraci s perzistencí DB a odposlechem hovorů proti proudu.", @@ -11618,7 +11625,7 @@ "burnRateExhaustsIn": "Vyčerpá se za", "dimensionResetIn": "Obnoví se za", "realConsumedColumn": "Spotřebováno", - "deficitColumn": "Deficit", + "deficitColumn": "Nedostatek", "borrowingIndicator": "půjčování", "migratedFromLocalStorageNotice": "Fondy byly úspěšně migrovány z localStorage.", "policyCapAbsoluteLabel": "Absolutní limit", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Tato skupina stále obsahuje pooly — nejprve je znovu přiřaďte nebo smažte.", "ungroupedTitle": "Bez skupiny", "ungroupedHint": "Tyto pooly nejsou přiřazeny k žádné známé skupině. Upravte pool a přesuňte jej do skutečné skupiny.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Tento fond se nepodařilo odebrat.", + "dismiss": "Zavřít" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Pluginy", + "description": "Instalujte a spravujte pluginy rozšiřující funkce OmniRoute", + "loading": "Načítání pluginů...", + "scanning": "Vyhledávání...", + "scanForPlugins": "Vyhledat pluginy", + "noPlugins": "Nejsou nainstalovány žádné pluginy", + "noPluginsDescription": "Umístěte adresáře pluginů do ~/.omniroute/plugins/ a klikněte na Vyhledat.", + "activate": "Aktivovat", + "deactivate": "Deaktivovat", + "uninstall": "Odinstalovat", + "uninstallConfirm": "Odinstalovat plugin „{name}“?", + "pluginScanComplete": "Vyhledávání pluginů dokončeno", + "pluginScanFailed": "Vyhledávání pluginů se nezdařilo", + "activated": "Plugin {name} byl aktivován", + "deactivated": "Plugin {name} byl deaktivován", + "activateFailed": "Plugin {name} se nepodařilo aktivovat", + "deactivateFailed": "Plugin {name} se nepodařilo deaktivovat", + "uninstalled": "Plugin {name} byl odinstalován", + "uninstallFailed": "Plugin {name} se nepodařilo odinstalovat", + "configure": "Konfigurovat: {name}", + "configurePlugin": "Konfigurovat", + "noConfigSettings": "Tento plugin nemá žádná konfigurovatelná nastavení.", + "saving": "Ukládání...", + "saveConfiguration": "Uložit konfiguraci", + "configurationSaved": "Konfigurace byla uložena", + "saveConfigurationFailed": "Konfiguraci se nepodařilo uložit", + "pluginNotFound": "Plugin nebyl nalezen", + "version": "Verze", + "author": "Autor", + "description_label": "Popis", + "status": "Stav", + "enabled": "Povoleno", + "disabled": "Zakázáno", "installedTab": "Nainstalováno", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Tržiště", "marketplaceUrlLabel": "Vlastní URL pro Marketplace", "marketplaceUrlPlaceholder": "Ponechte prázdné pro oficiální registr Omniroute", "saveMarketplaceUrl": "Uložit a znovu načíst", @@ -11729,7 +11736,7 @@ "verified": "Ověřeno", "install": "Instalovat", "installedFromMarketplace": "Plugin {name} byl nainstalován!", - "hooks": "Hooks" + "hooks": "Hooky" }, "quotaPlans": { "title": "Plány a kvóty", @@ -11928,47 +11935,47 @@ "wizardDnsAlreadyEnabled": "DNS je již pro tohoto agenta povoleno", "enablingDns": "Povolování…", "modelSelectorTitle": "Vybrat cílový model", - "modelSelectorSearch": "Search models…", - "noModelsFound": "No models found", - "quickLinks": "Quick links", - "quickLinkProviders": "Configure providers", - "quickLinkInspector": "View traffic in Traffic Inspector", - "unknownError": "Unknown error", - "maintenanceTitle": "Maintenance & Diagnostics", - "maintenanceSubtitle": "Self-test the capture pipeline, undo leftover system state, and move your setup between machines.", - "orphanedStateWarning": "A previous session left system state behind (DNS spoof, CA, or system proxy). Run Repair to clean it up.", - "diagnose": "Diagnose", - "diagnosing": "Diagnosing…", - "diagnoseHealthy": "Capture pipeline is healthy.", - "diagnoseUnhealthy": "Capture pipeline has problems:", - "repair": "Repair", - "repairing": "Repairing…", - "repairDone": "Repaired: {items}", - "repairNothing": "Nothing to repair — system state is clean.", - "removeCa": "Remove CA", - "removeCaConfirm": "Remove CA?", - "removeCaDone": "MITM root CA removed from the OS trust store.", - "removing": "Removing…", - "confirm": "Confirm", - "exportConfig": "Export config", - "exporting": "Exporting…", - "importConfig": "Import config", - "importing": "Importing…", - "importInvalidJson": "The selected file is not valid JSON.", - "importDone": "Imported {bypass} bypass · {hosts} hosts · {agents} agents", - "save": "Save", - "saving": "Saving…", - "cancel": "Cancel", - "back": "Back", - "next": "Next", - "done": "Done", - "loading": "Loading…", - "riskNoticeTitle": "Risk acknowledgment", - "riskNoticeBody": "AgentBridge will intercept HTTPS traffic from this agent by redirecting its API hosts via DNS. Only enable if you accept responsibility for compliance with the agent's terms of service and any applicable network policies.", + "modelSelectorSearch": "Hledat modely…", + "noModelsFound": "Nebyly nalezeny žádné modely", + "quickLinks": "Rychlé odkazy", + "quickLinkProviders": "Nastavit poskytovatele", + "quickLinkInspector": "Zobrazit provoz v Traffic Inspectoru", + "unknownError": "Neznámá chyba", + "maintenanceTitle": "Údržba a diagnostika", + "maintenanceSubtitle": "Otestujte kanál zachytávání, odstraňte zbytkový stav systému a přeneste své nastavení mezi počítači.", + "orphanedStateWarning": "Předchozí relace zanechala v systému změny (podvržení DNS, certifikační autoritu nebo systémový proxy server). Spusťte opravu, abyste je odstranili.", + "diagnose": "Diagnostikovat", + "diagnosing": "Probíhá diagnostika…", + "diagnoseHealthy": "Kanál zachytávání funguje správně.", + "diagnoseUnhealthy": "Kanál zachytávání má problémy:", + "repair": "Opravit", + "repairing": "Probíhá oprava…", + "repairDone": "Opraveno: {items}", + "repairNothing": "Není co opravovat — stav systému je čistý.", + "removeCa": "Odebrat CA", + "removeCaConfirm": "Odebrat CA?", + "removeCaDone": "Kořenová certifikační autorita MITM byla odebrána z úložiště důvěryhodných certifikátů operačního systému.", + "removing": "Probíhá odebírání…", + "confirm": "Potvrdit", + "exportConfig": "Exportovat konfiguraci", + "exporting": "Probíhá export…", + "importConfig": "Importovat konfiguraci", + "importing": "Probíhá import…", + "importInvalidJson": "Vybraný soubor není platný JSON.", + "importDone": "Importováno: {bypass} výjimek · {hosts} hostitelů · {agents} agentů", + "save": "Uložit", + "saving": "Ukládání…", + "cancel": "Zrušit", + "back": "Zpět", + "next": "Další", + "done": "Hotovo", + "loading": "Načítání…", + "riskNoticeTitle": "Potvrzení rizika", + "riskNoticeBody": "AgentBridge bude zachytávat HTTPS provoz tohoto agenta přesměrováním jeho API hostitelů prostřednictvím DNS. Tuto možnost povolte pouze v případě, že přijímáte odpovědnost za dodržování podmínek služby agenta a všech příslušných síťových zásad.", "pageMoved": { - "goNow": "Go now", - "message": "The MITM Proxy now lives under AgentBridge.", - "title": "This page has moved" + "goNow": "Přejít nyní", + "message": "MITM Proxy se nyní nachází v sekci AgentBridge.", + "title": "Tato stránka byla přesunuta" } }, "providerStats": { @@ -12040,7 +12047,7 @@ "agentBridgeModeDesc": "Zachytávat provoz ze všech připojených IDE agentů", "customHostsMode": "Vlastní hostitelé", "customHostsModeDesc": "Přidat konkrétní hostitele k zachycení", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "HTTP proxy", "httpProxyModeDesc": "Použít proměnnou prostředí HTTP_PROXY", "systemWideMode": "Celosystémový", "systemWideModeDesc": "Zachytávat veškerý systémový provoz (pokročilé)", @@ -12057,7 +12064,7 @@ "resumeBtn": "Obnovit", "clearBtn": "Vymazat", "exportHar": "Exportovat .har", - "recordSession": "REC", + "recordSession": "NAHR.", "stopSession": "Zastavit", "liveBadge": "živě", "offlineBadge": "offline", @@ -12091,7 +12098,7 @@ "llmApiKind": "Typ API", "llmModel": "Model", "llmMessages": "Zprávy", - "llmStream": "Stream", + "llmStream": "Streamování", "llmMappedTo": "Mapováno na", "llmCostEstimate": "Odhad nákladů", "systemProxyExitWarning": "Systémová proxy je stále aktivní – přesto opustit stránku?", @@ -12099,7 +12106,7 @@ "loading": "Načítání…", "copied": "Zkopírováno!", "copy": "Kopírovat", - "httpProxyTitle": "HTTP Proxy Snippet — port {port}", + "httpProxyTitle": "Ukázka HTTP Proxy — port {port}", "notRecording": "Nenahrává se", "anyStatus": "Jakýkoli stav", "liveOnly": "Živě", @@ -12160,26 +12167,26 @@ "noRequestBody": "Žádné tělo požadavku.", "noResponseBody": "Žádné tělo odpovědi.", "formatted": "Formátováno", - "raw": "Raw" + "raw": "Nezpracované" }, "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "Kód CLI", "phrase": "Kódové nástroje, které nasměrujete na OmniRoute", "flow": "Vy → CLI Code → OmniRoute → Poskytovatel", "seeOther": "Zobrazit →" }, "agent": { - "title": "CLI Agents", + "title": "Agenti CLI", "phrase": "Široce zaměření autonomní CLI agenti, které nasměrujete na OmniRoute", "flow": "Vy → CLI Agent → OmniRoute → Poskytovatel", "seeOther": "Zobrazit →" }, "acp": { - "title": "ACP Agents", + "title": "Agenti ACP", "phrase": "Rozhraní CLI, která OmniRoute spouští jako prováděcí backend (zpětný tok)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Většina uživatelů může tuto možnost ignorovat — použijte ji pouze tehdy, když ji integrace vyžaduje.", "flow": "Klient → OmniRoute → spustit CLI (stdio/ACP) → odpověď", "seeOther": "Zobrazit →" } @@ -12217,7 +12224,7 @@ "versionNotFound": "nenalezeno", "manualConfig": "Ruční konfigurace", "installGuide": "Průvodce instalací", - "endpointLabel": "Endpoint", + "endpointLabel": "Koncový bod", "baseUrlFull": "Úplná základní URL", "baseUrlPartial": "Částečná základní URL", "refreshDetection": "Obnovit detekci", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhooky", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Registrujte, zobrazujte, testujte a odebírejte koncové body webhooků. Nastavujte odběry událostí (request.completed, request.failed, quota.exceeded atd.) a spravujte opakované pokusy o doručení." }, "omni-mcp": { "name": "MCP server", @@ -12390,23 +12397,23 @@ "description": "Hlavní koncové body inference kompatibilní s OpenAI: chat completions, embeddings, images, audio (TTS/STT), moderování, rerank a Responses API. Primární integrační rozhraní pro AI agenty." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Spuštění serveru", "description": "Spouštějte, zastavujte a restartujte server OmniRoute z CLI. Spravujte režim na pozadí (daemon), konfiguraci portů, automatické obnovení, integraci do systémové lišty a klávesovou zkratku pro otevření panelu." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Stav systému", "description": "Kontrolujte stav serveru, stav komponent a živé metriky z CLI. Spusťte `health`, `health components` a `health watch` pro zobrazení panelu jističů a stavu poskytovatelů v reálném čase." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Poskytovatelé", "description": "Spravujte připojení poskytovatelů z CLI: zobrazte dostupné/nakonfigurované poskytovatele, přidávejte, testujte, testujte všechny (test-all), ověřujte, rotujte API klíče a prohlížejte metriky pro jednotlivé poskytovatele." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Klíče API", "description": "Vytvářejte, zobrazujte, rotujte a odvolávejte API klíče OmniRoute z CLI. Spravujte toky OAuth pro ověřování poskytovatelů a kontrolujte rozsahy a expiraci klíčů." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: Modely", "description": "Dotazujte se na dostupné modely AI, zobrazujte aliasy modelů a procházejte celý katalog modelů z CLI. Filtrujte podle poskytovatele, vyhledávejte podle schopností a řešte varianty názvů modelů." }, "cli-chat": { @@ -12414,23 +12421,23 @@ "description": "Odesílejte doplňování chatu, streamujte odpovědi a spusťte interaktivní relaci REPL z CLI. Podporuje všechny poskytovatele OmniRoute, kombinované směrování a konfiguraci systémové výzvy (system prompt)." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: Směrování a kombinace", "description": "Vytvářejte, zobrazujte, aktualizujte a mažte směrovací kombinace z CLI. Testujte směrovací strategie, kontrolujte metriky kombinací a interaktivně konfigurujte záložní řetězce." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: Odolnost a kvóty", "description": "Kontrolujte a spravujte stavy jističů, doby zklidnění připojení (cooldowns), limity kvót a úrovně odkladu (backoff) z CLI. Resetujte zaseknuté poskytovatele a konfigurujte prahové hodnoty odolnosti." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: Komprese", "description": "Konfigurujte a testujte kompresi promptů z CLI. Spravujte filtry RTK, pravidla Caveman, režimy skládané komprese a zobrazujte náhled výstupu komprese s reálnými prompty." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: Kontexty a relace", "description": "Spravujte konfigurace kontextového inženýrství, sady filtrů RTK a konverzační relace z CLI. Používejte nastavení context-relay a kontrolujte aktivní kontextové pipeline." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: Náklady a využití", "description": "Zobrazujte rozpisy nákladů, využití tokenů a protokoly volání z CLI. Filtrujte podle poskytovatele, modelu nebo časového období. Exportujte přehledy využití a kontrolujte výdaje na jednotlivá připojení." }, "cli-mcp": { @@ -12470,7 +12477,7 @@ "description": "Spusťte počáteční nastavení, konfigurujte globální nastavení CLI, spravujte proměnné prostředí, kontrolujte aktualizace a konfigurujte automatické spouštění pomocí příkazů CLI setup a config." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI: Sběrač dovedností agentů", "description": "Detekujte nainstalované kódovací nástroje CLI (Claude Code, Codex, Cursor, Copilot, Cline a další), vyhledávejte na GitHubu odpovídající dovednosti agentů a instalujte je do detekovaných nástrojů prostřednictvím integrovaných API OmniRoute." }, "config-codex-cli": { @@ -12482,7 +12489,7 @@ "description": "Vyhledávejte, hodnoťte, skenujte a importujte dovednosti agentů z repozitářů GitHub, které obsahují soubory SKILL.md, CLAUDE.md, .cursorrules a podobné soubory dovedností agentů. Objevujte komunitní dovednosti ve více než 160 kategoriích poskytovatelů, vyhodnocujte relevanci pomocí heuristického hodnocení, kontrolujte přítomnost malwaru nebo pevně zakódovaných tajných klíčů a instalujte je do adresářů agentů Hermes, Claude Code, Gemini CLI nebo OpenCode." } }, - "pageTitle": "Agent Skills", + "pageTitle": "Dovednosti agentů", "pageSubtitle": "Naučte svého agenta ovládat OmniRoute — 23 oblastí API + 21 rodin CLI", "conceptCard": { "agent": { @@ -12496,7 +12503,7 @@ "crossLinkLabel": "Pochopte rozdíl →" }, "comparison": { - "colAgent": "Agent Skills", + "colAgent": "Dovednosti agentů", "colOmni": "Omni Skills", "whatIs": { "label": "Co to je", @@ -12535,7 +12542,7 @@ "categoryConfig": "Konfigurace", "filterAll": "Vše", "coverageLabel": "Pokrytí", - "mcpUrl": "MCP URL", + "mcpUrl": "URL MCP", "a2aLink": "A2A", "mcpPrompt": "Přidejte tento koncový bod MCP svému agentovi a poskytněte mu 37 nástrojů OmniRoute.", "a2aPrompt": "Zaregistrujte tuto Agent Card u svého orchestrátoru pro povolení delegování úkolů A2A.", @@ -12589,14 +12596,14 @@ "typeApikey": "Klíč API", "sortTypeFirst": "Nejjednodušší jako první", "sortTypeFirstHelp": "Seskupit podle náročnosti registrace (Bez registrace → Přihlášení přes OAuth → Klíč API) při zachování pořadí kvality v rámci každé skupiny", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Nejdříve nejspolehlivější", + "sortByReliabilityHelp": "Seřadí poskytovatele podle podílu úspěšných volání ve vybraném období. Poskytovatelé s příliš malým počtem volání pro určení míry úspěšnosti si zachovají pořadí podle skóre pod poskytovateli s naměřenými hodnotami.", "typeLegend": "Bez registrace = nulové nastavení · Přihlášení přes OAuth = přihlášení vlastním účtem · Klíč API = vlastní klíč nebo bezplatný tarif poskytovatele", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Spolehlivost", + "colReliabilityHelp": "Podíl volání, na která tento poskytovatel skutečně odpověděl za posledních 24 hodin. Pomlčka znamená, že obsloužil příliš málo provozu na to, aby bylo možné určit míru úspěšnosti.", + "reliabilitySample": "Za posledních {hours} h uspělo {successes} z {requests} volání", + "reliabilityTooFew": "Za posledních {hours} h proběhlo pouze {requests} volání — příliš málo na určení míry úspěšnosti", + "reliabilityNoTraffic": "Za posledních 24 h nebyla zaznamenána žádná volání" }, "discovery": { "title": "Zjišťování poskytovatelů", @@ -12681,7 +12688,7 @@ "levelTitles": { "beginner": "Začátečník", "explorer": "Průzkumník", - "expert": "Expert", + "expert": "Odborník", "master": "Mistr", "legend": "Legenda" }, @@ -12712,16 +12719,16 @@ }, "categories": { "usage": "Využití", - "sharing": "Sharing", + "sharing": "Sdílení", "contribution": "Přispění", "streak": "Série", "rare": "Vzácné úspěchy" }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Podporovatel Radaru", + "description": "Ověřen živý kanál podporovatele OmniRoute Radar", + "criteria": "Ověřte podepsaný živý kanál podporovatele Radaru." }, "first-token": { "name": "První token", @@ -12796,7 +12803,7 @@ "weekly-warrior": { "name": "Týdenní bojovník", "description": "Aktivní po dobu 7 po sobě jdoucích dní", - "criteria": "Use OmniRoute for 7 consecutive days." + "criteria": "Používejte OmniRoute po dobu 7 po sobě jdoucích dnů." }, "monthly-master": { "name": "Měsíční mistr", @@ -12846,7 +12853,7 @@ "security": "Zabezpečení", "network": "Síť", "policies": "Zásady", - "runtime": "Runtime", + "runtime": "Běhové prostředí", "cli": "CLI", "health": "Zdraví", "requiresRestart": "Vyžaduje restart" @@ -12948,8 +12955,8 @@ "description": "Povolit více připojení pro každý uzel kompatibility." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Zakázat kontroly kontextového okna", + "description": "Přeskočí místní kontrolu kontextového okna a maximálního počtu vstupních tokenů v OmniRoute pro přímé požadavky na jeden model. Poskytovatelé na upstreamu nadále uplatňují své skutečné limity. Komprese promptů a omezení výstupních tokenů zůstávají aktivní." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Odebrat interní výstupní položky fáze komentáře z průchozích streamů Responses API před jejich předáním klientům. Zakázáním tohoto příznaku získáte nezpracovaný upstream komentář." @@ -12985,7 +12992,7 @@ "description": "Povolit obnovení streamu pro opětovné vyžádání odpovědi a její spojení poté, co bajty již dorazily ke klientovi." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Zajistit bezpečné pokračování volání nástroje uprostřed streamu: nikdy neobnovovat přerušený stream poté, co bylo odesláno volání nástroje (ať už stále probíhá, nebo již skončilo), a skončit po jednom prázdném pokračování namísto vyčerpání celého limitu opakovaných pokusů." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Jednorázově přepnout na sesterské připojení, když se stream uzavře před odesláním jakéhokoli užitečného rámce a omezený opakovaný pokus na stejném připojení je vyčerpán. Pokud není k dispozici použitelné sesterské připojení, vrátí se původní chyba early-EOF. Vypnuto: early-EOF zůstává po opakovaném pokusu konečný." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Povolit přístup k síti v sandboxu dovedností." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Serverem řízená smyčka nástrojů", + "description": "Pokračuje v nestreamovaných voláních nástrojů řízených serverem, dokud model nevrátí odpověď použitelnou klientem." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Původ hodnoty Retry-After", + "description": "U agregovaných odpovědí 429/503 o nedostupnosti vynechat Retry-After, pokud není znám žádný konkrétní budoucí čas opakování, namísto odesílání umělé hodnoty 1 s; přidat error.retry_after_provenance a číst textové pokyny k opakování na cestách vyprázdnění kombinace." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Zastavení infrastruktury s chráněnou prioritou jako 502", + "description": "Odpovědět stavem 502 namísto 503, když prioritní cíl s náhradním řešením pouze při vyčerpání kvóty zastaví kombinaci z důvodu, který prokazatelně nesouvisí s kvótou: rozpojený jistič poskytovatele nebo prediktivní přeskočení kvůli latenci." } } }, @@ -13046,7 +13057,7 @@ } }, "comboControl": { - "title": "Combo Control Center", + "title": "Řídicí centrum kombinací", "unavailable": "Ovládací centrum komb je nedostupné", "backToCombos": "Zpět na Komba", "loadFailed": "Nepodařilo se načíst ovládací centrum komb", @@ -13091,7 +13102,7 @@ }, "configuredTargets": "Nakonfigurované cíle", "configuredTargetsDescription": "Uložené kroky komba, obohacené o odpovídající údaje o stavu, jsou-li k dispozici.", - "noConfiguredTargets": "No targets configured.", + "noConfiguredTargets": "Nejsou nakonfigurovány žádné cíle.", "runtimeConfig": "Běhová konfigurace", "runtimeConfigDescription": "Vybraná pokročilá nastavení pro toto kombo.", "noRuntimeConfig": "Žádná vlastní běhová konfigurace.", @@ -13108,7 +13119,7 @@ "comboHealth": "Stav komba", "callLogs": "Protokoly volání", "costs": "Náklady", - "playground": "Playground", + "playground": "Hřiště", "nestedCombo": "Vnořené kombo", "modelTarget": "Cíl modelu", "weight": "{value}% váha", @@ -13171,7 +13182,7 @@ "segmentHint": "Každý segment = jeden bezplatný pool · deduplikovaný pool, poctivé počítání (žádné uměle navýšené stropy limitů).", "boost": "Odemkněte o ~{tokens} více/měs. jednorázovým dobitím $10 na OpenRouteru (50 → 1000 požadavků/den)", "uncapped": "Trvale zdarma, bez zveřejněného limitu (omezená rychlost) — reálný přístup, nepočítá se do hlavního přehledu:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "O ~{tokens}/měs. více za regionálním ověřením identity (např. ověřením skutečného jména v pevninské Číně) — skutečná kvóta, která se nezapočítává do hlavního údaje:", "tosRestricted": "{count, plural, one {# model označený jako omezený ToS} few {# modely označené jako omezené ToS} other {# modelů označených jako omezené ToS}} — rozhodnutí je na vás", "provider": "Poskytovatel", "model": "Model", @@ -13224,7 +13235,7 @@ "down": "nefunkční" }, "severity": { - "info": "info", + "info": "informace", "warning": "varování", "critical": "kritické" }, @@ -13270,80 +13281,80 @@ "viewFullHistory": "Zobrazit celou historii na GitHubu" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", + "title": "Zásady směrování uvažování", + "apiKeyTitle": "Směrování uvažování pro tento klíč API", + "subtitle": "Přesměrujte modely a míru uvažování bez nutnosti podpory na straně klienta. Pokud neodpovídá žádné pravidlo, požadavky zůstanou beze změny.", + "loadError": "Pravidla uvažování se nepodařilo načíst.", + "saveError": "Pravidlo je neplatné nebo jej nebylo možné uložit.", + "saved": "Pravidlo uvažování bylo uloženo.", + "deleteConfirm": "Smazat toto pravidlo uvažování?", + "deleteError": "Pravidlo uvažování se nepodařilo smazat.", + "empty": "Nejsou nakonfigurována žádná odpovídající pravidla uvažování.", + "all": "Vše", + "any": "Libovolné", + "enabled": "Povoleno", + "disabled": "Zakázáno", + "filterSearch": "Hledat pravidla", + "filterScope": "Filtrovat podle rozsahu", + "filterStatus": "Filtrovat podle stavu", + "allModels": "všechny modely", + "keepModel": "Ponechat model", + "otherModel": "Jiný model", + "combo": "Kombinace", + "priorityShort": "priorita {value}", + "toggleAria": "Povolit {name}", + "edit": "Upravit", + "delete": "Smazat", + "name": "Název", + "description": "Popis", + "scopeLabel": "Rozsah", + "apiKey": "Klíč API", + "sourceCombo": "Zdrojová kombinace", + "connection": "Připojení", + "sourceModel": "Zdrojový model nebo zástupný znak", + "sourceModelOptional": "Prázdné = všechny modely", + "sourceModelExample": "např. gpt-5*", + "sourceEffort": "Zdrojová míra uvažování", + "missing": "Neuvedeno", + "signalOnly": "Nediskrétní signál uvažování", + "requestTags": "Štítky požadavku", + "requestTagsExample": "programování, interní", + "tagMode": "Porovnávání štítků", + "effortMode": "Režim úsilí", + "targetEffort": "Cílové úsilí", + "routingTarget": "Cíl směrování", + "targetModel": "Cílový model", + "targetCombo": "Cílová kombinace", + "budgetAction": "Rozpočet na přemýšlení", + "budgetTokens": "Tokeny rozpočtu", + "priority": "Priorita", + "saveChanges": "Uložit změny", + "add": "Přidat pravidlo", + "cancel": "Zrušit", + "simulateTitle": "Simulovat pravidlo", "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "effort": "Úsilí", + "transport": "Přenos", + "simulate": "Simulovat bez nadřazeného serveru", + "extendedComboWarning": "Podpora Max/Ultra se během směrování ověřuje samostatně pro každý cíl kombinace.", + "extendedUnknownWarning": "Zadejte cílový model pro ověření podpory Max/Ultra.", + "extendedUnsupportedWarning": "Podpora Max/Ultra je potvrzena pouze u vhodných modelů Codex GPT-5.6. Neznámé vlastní modely server přijme s upozorněním.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", + "global": "Globální", + "apiKey": "Klíč API", + "combo": "Kombinace", "model": "Model", - "connection": "Connection" + "connection": "Připojení" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Převzít z klienta", + "default": "Použít výchozí", + "force": "Vynutit" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Zachovat", + "remove": "Odebrat", + "set": "Nastavit pevnou hodnotu" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "Živě (v reálném čase)", "tierCommunity": "Komunita (30denní zpoždění)", "activateTitle": "Aktivovat Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Porovnejte přístup Community a živý přístup, zjistěte, jaká data si vaše instalace vyměňuje, a poté zvolte způsob aktivace Radar.", + "accessScaleTitle": "Před aktivací se seznamte s přístupem k Radar", + "accessScaleIntro": "Radar zůstává síťově neaktivní, dokud přístup výslovně nepovolíte. Po prostudování těchto pravidel zvolte přístup Community nebo aktivujte osobní klíč podporovatele.", + "accessCommunityRule": "Community — bez nutnosti klíče: kompletní katalog se zpožděním 30 dnů.", + "accessSingleUseRule": "Hvězdička + sledování — jakmile GitHub OAuth ověří obojí, váš účet GitHub získá jedno načtení aktuálního katalogu; poté se přístup vrátí na Community. Tento jednorázový přístup nelze pro daný účet vydat znovu.", + "accessContributorRule": "Přispěvatelé — sloučené PR, commity a řádky určují pouze pořadí v týdenním žebříčku. Prvních 10 získá 365 dnů; umístění 11–100 získají 90 dnů; přispěvatelé mimo prvních 100 nezískají žádný přístup bez ohledu na počet PR. Opuštění žebříčku nikdy nezkrátí již přidělenou dobu.", + "accessSupporterRule": "Podporovatelé — jednorázové nákupy poskytují 6 měsíců, 1 rok nebo doživotní přístup bez automatického obnovení. Nákupy, dary, období za přispívání a ručně udělené doby se sčítají; doživotní přístup má vždy přednost.", + "accessUseTitle": "Osobní použití, obnovení a kontrola", + "accessInstallationRule": "Osobní licence — klíč používejte vždy jen v jedné aktivní instalaci. OmniRoute nevytváří otisk hardwaru. Obnovení zneplatní a nahradí ztracený klíč, aniž by se změnila jeho platnost.", + "accessAbuseRule": "Kontrola zneužití — 4. odlišná IP adresa během 24 hodin pouze vytvoří příznak pro ruční kontrolu; klíč nikdy automaticky nezablokuje ani nezneplatní.", + "accessOffersRule": "Aktuální nabídky jsou ručně vybírány a mohou se změnit nebo vypršet.", + "privacyTitle": "Jaká data si Radar vyměňuje", + "privacyDownloadsRule": "Stahování — vaše instalace přijímá kryptograficky podepsaný katalog a metadata doporučení; platný aktivní klíč také odemkne podepsané nabídky a Intel.", + "privacySendsRule": "Odesílání — synchronizace na straně serveru odesílá klíč podporovatele jako Bearer token a infrastruktura HTTPS přijímá IP adresu připojení. Evidence požadavků na kanál neukládá ani jednu z těchto hodnot v nezpracované podobě: uchovává hashe klíčů, souhrnné využití a denně obměňovaný zkrácený HMAC IP adresy pro kontrolu zneužití.", + "privacyNeverRule": "Nikdy neshromažďujeme — zadání, odpovědi, konverzace, přihlašovací údaje poskytovatelů, provoz modelů, dobu provozuschopnosti, latenci ani místní konfiguraci poskytovatelů nikdy neodesíláme do Radaru.", + "activateButton": "Aktivovat Community", "activating": "Aktivace...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Už máte klíč podporovatele?", + "keyInvalidFormatError": "Neplatný formát klíče. Musí začínat na \"omr_\" a za tím musí následovat 40 hexadecimálních znaků.", + "activateWithKeyButton": "Aktivovat podporovatele", + "changeKeyButton": "Změnit klíč", + "claimSectionTitle": "Ještě nemáte klíč podporovatele?", + "contributorButton": "Jsem přispěvatel", + "contributorHint": "GitHub OAuth kontroluje aktuální týdenní pořadí: prvních 10 získá 365 dní a pozice 11–100 získají 90 dní. Samotný počet PR nikdy neuděluje přístup mimo prvních 100 míst.", + "supporterButton": "Podpořit projekt", + "supporterHint": "Jednorázové varianty na 6 měsíců, 1 rok a doživotí se automaticky neobnovují; způsobilá období se sčítají a doživotní varianta má přednost.", "colProvider": "Poskytovatel", "colModel": "Model", "colQuota": "Kvóta", + "colLimits": "Limity požadavků", + "trainsOnPrompts": "Trénuje na zadáních", + "trainsOnPromptsHelp": "Podmínky tohoto poskytovatele uvádějí, že může trénovat na vámi odeslaných zadáních. Modely bez tohoto označení buď uvádějí, že tak nečiní, nebo to nemají zdokumentováno — absence takového prohlášení není zárukou.", + "limitsUnknownHelp": "Limity uváděné pouze kanálem Radaru; pro tuto položku nejsou zveřejněny žádné limity", + "contextUnknownHelp": "Kontextové okno této položky není známo", + "capabilityUnknownHelp": "Kanál tuto schopnost neuvádí", "colContext": "Kontext", "colCapabilities": "Schopnosti", "colTos": "Riziko ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "nové", "setupGuide": "Průvodce nastavením", "disabledByFeed": "Zakázáno zdrojem Radar", "capTools": "Nástroje", "capVision": "Vize", "capThinking": "Přemýšlení", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalog", + "freeCreditsTab": "Kredity zdarma", + "freeCreditsSubtitle": "Doporučující odkazy od poskytovatelů sledovaných Radarem — jejich použití vás nebude stát nic navíc a pomůže podpořit OmniRoute.", + "fixedLinksEmpty": "Zatím nejsou k dispozici žádné doporučující odkazy. Synchronizujte Radar a zkontrolujte aktualizace.", + "requiredActionLabel": "Jak postupovat:", + "claimButton": "Získat kredity", + "campaignsTitle": "Časově omezené kampaně", + "campaignsEmpty": "Momentálně nejsou aktivní žádné kampaně — vraťte se později.", + "campaignsUpsellCommunity": "Časově omezené kampaně jsou výhodou pro podporovatele. Všechny stálé odkazy na této stránce zůstávají zdarma pro všechny.", + "campaignsValidUntil": "Platí do {date}", + "colActions": "Akce", + "localBadge": "místní", + "editModel": "Upravit", + "saveModel": "Uložit", + "cancelEdit": "Zrušit", + "resetModel": "Obnovit místní změny", + "hideModel": "Skrýt", + "restoreModel": "Obnovit", + "hiddenModelsTitle": "Skryté modely", + "modelDisplayName": "Místní zobrazovaný název", + "modelEnabled": "Místně povoleno", + "localStateSaveFailed": "Nepodařilo se uložit místní nastavení Radaru", + "guidedCombos": "Doporučené kombinace", + "offers": "Nabídky", + "intel": "Přehledy" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Kombinace doporučené Radarem", + "subtitle": "Vytvářejte prioritní záložní varianty z rovnocenných bezplatných modelů vybraných Radarem.", + "backToRadar": "Zpět na Radar", + "loading": "Načítání návrhů kombinací...", + "familyLabel": "Rodina modelů", + "modelsLabel": "Pořadí priorit", + "strategyReason": "Priorita nejprve využívá největší pravidelně obnovovaný bezplatný rozpočet a poté přechází na aktivní poskytovatele.", + "generateButton": "Vygenerovat kombinaci", + "generating": "Generování...", + "alreadyCreated": "Již vytvořeno", + "created": "Kombinace vytvořena", + "noSuggestions": "Žádná způsobilá rodina modelů momentálně nemá aktivní připojení alespoň ke dvěma poskytovatelům.", + "catalogRequired": "Nejprve synchronizujte katalog Radaru, aby se načetly vybrané rodiny modelů.", + "loadFailed": "Nepodařilo se načíst návrhy kombinací Radaru.", + "createFailed": "Kombinaci se nepodařilo vytvořit. Zkontrolujte připojení k poskytovatelům a zkuste to znovu." }, "radarSetupPage": { "title": "Nastavení poskytovatele", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "Odolnost Připojení", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Vaše připojení se obnovují automaticky", + "reassuranceDetail": "Obvykle není nutná žádná akce. OmniRoute po selhání připojení dočasně pozastaví a poté jej bezpečně zkusí znovu.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Požadavky lze odesílat", + "coolingDown": "Brzy se pokusíme znovu", + "lockedOut": "Vyžaduje vaši pozornost" }, "table": { "status": "Stav", @@ -13551,11 +13562,11 @@ "connectionId": "Připojení", "authType": "Autentizace", "backoffLevel": "Odklad", - "cooldown": "Cooldown", + "cooldown": "Doba pozastavení", "lastError": "Poslední Chyba", "lockouts": "Uzamčení", "healthy": "Zdravé", - "coolingDown": "Cooldown", + "coolingDown": "Doba pozastavení", "circuitOpen": "Obvod Otevřen", "recovering": "Zotavuje se", "degraded": "Zhoršeno", @@ -13566,9 +13577,9 @@ "timeline": { "title": "Přechody Jističe", "window": "Okno", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 h", + "window6h": "6 h", + "window24h": "24 h", "empty": "Žádné přechody ve vybraném okně", "currentState": "Aktuální Stav", "state": { @@ -13589,7 +13600,7 @@ "detail": { "title": "Detail Připojení", "metadata": "Metadata", - "cooldown": "Cooldown", + "cooldown": "Doba pozastavení", "lastError": "Poslední Chyba", "breaker": "Jistič", "lockouts": "Uzamčení Modelu", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Odmítnout požadavky před odesláním, když cílový model postrádá požadované schopnosti (vidění, nástroje, strukturovaný výstup, kontextové okno). Chrání přímé požadavky od jednotlivých poskytovatelů, které obcházejí filtr kompatibility kombinované vrstvy.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Přeskočit místní kontrolu velikosti kontextového okna a maximálního počtu vstupních tokenů v OmniRoute u přímých požadavků na jeden model. Poskytovatelé stále vynucují své skutečné limity. Komprese promptů a omezení počtu výstupních tokenů zůstávají aktivní.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Statistiky vyhledávání a nedávná vyhledávání zahrnují pouze poskytovatele, kteří mají stále aktivní připojení (poskytovatelé bez klíče, jako je duckduckgo-free, se započítávají vždy). Vypnutí zachová každý uložený řádek vyhledávání s ID poskytovatele.", "publicSystem": { "notFound": { "title": "Stránka nebyla nalezena", @@ -13699,12 +13710,12 @@ "maintenanceInfo": "Informace o údržbě", "service": "Služba", "unknown": "neznámý", - "notAvailable": "n/a", + "notAvailable": "neuvedeno", "providersTracked": "Sledovaní poskytovatelé", "circuitBreakerState": "Stav Obvodu Poskytovatele", "lastUpdate": "Poslední aktualizace: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes} min", + "uptimeHoursMinutes": "{hours} h {minutes} min" }, "statusPages": { "400": { @@ -13796,10 +13807,10 @@ "importDescription": "Vložte obnovovací token exportovaný z {providerLabel}.", "apiKey": "API Klíč", "apiKeyDescription": "Vložte dlouhodobý {providerLabel} / CodeWhisperer API klíč. Je uložen jako bearer přihlašovací údaje bez refresh tokenu; objevování profilu je na nejlepší úsilí.", - "idcStartUrl": "IDC Start URL", + "idcStartUrl": "Počáteční URL IDC", "idcStartUrlPlaceholder": "https://your-org.awsapps.com/start", "idcStartUrlDescription": "URL vašeho AWS IAM Identity Center organizace", - "awsRegion": "AWS Region", + "awsRegion": "Region AWS", "regionPlaceholder": "us-east-1", "idcRegionDescription": "AWS region pro vaše Identity Center (výchozí: us-east-1)", "continue": "Pokračovat", @@ -13857,7 +13868,7 @@ "orPasteManually": "nebo vložte token ručně", "manualInstructions": "Přihlaste se na solo.trae.ai, otevřete DevTools → Síť, odešlete jakoukoli zprávu v chatu a zkopírujte JWT z Authorization: Cloud-IDE-JWT {tokenPlaceholder} hlavičky požadavku. Doba platnosti JWT je přibližně 14 dní. Volitelné identitní pole pocházejí z common_params ve stejném těle požadavku.", "accessTokenLabel": "Přístupový token (Cloud-IDE-JWT)", - "webId": "Web ID", + "webId": "Webové ID", "optional": "volitelný", "bizUserId": "ID uživatele Biz", "userUniqueId": "Jedinečné ID uživatele", @@ -13876,7 +13887,7 @@ } }, "providerTest": { - "dialogLabel": "Test {provider}", + "dialogLabel": "Otestovat {provider}", "deprecated": "zastaralý", "risk": "riziko", "close": "Zavřít", @@ -13886,7 +13897,7 @@ "clearConversation": "Vymazat konverzaci", "clear": "Vymazat", "tabs": { - "test": "Test", + "test": "Otestovat", "logs": "Protokoly" }, "loadingLogs": "Načítání protokolů…", @@ -13935,7 +13946,7 @@ "followDescription": "Osa se posouvá doleva, čára NOW zůstává na 75%", "now": "Nyní", "nowDescription": "Přejít na aktuální čas, řádek NOW se resetuje na střed", - "pan": "Pan", + "pan": "Posun", "panDescription": "Přetáhněte pro prozkoumání, pozadí je zmrazené" }, "reset": "Obnovit", @@ -13947,7 +13958,7 @@ "tokens": "Tokeny", "active": "Aktivní", "other": "Jiné", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "hodina", "day": "den", "unknownModel": "neznámý", @@ -13956,9 +13967,9 @@ "metadata": { "compressionTitle": "Komprese", "compressionDescription": "Nastavte nastavení komprese kontextu pro snížení využití tokenů a nákladů.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — Relay proxy servery", "relayDescription": "Serverless relay proxy koncové body pro vaši AI infrastrukturu", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Inspektor provozu — OmniRoute", "trafficInspectorDescription": "Sledování LLM volání + ladění HTTPS provozu jakékoli aplikace" }, "conductor": { @@ -14070,11 +14081,11 @@ "actionApprove": "Schválit plán", "actionCancel": "Zrušit", "actionSeeInGraph": "Zobrazit v grafu", + "actionRepeat": "Opakovat", "actionDone": "Akce provedena", "actionFailed": "Akce selhala: {error}", "detailFailed": "Nepodařilo se načíst podrobnosti: {error}", "mirroredInA2A": "Zrcadleno v A2A", - "actionRepeat": "Opakovat", "repeatConfirm": "Kliknutím znovu potvrdíte", "repeatDone": "Vytvořeno nové spuštění", "repeatUnavailable": "Původní vstup není k dispozici" @@ -14088,57 +14099,57 @@ "networkError": "Chyba sítě — nelze aktualizovat nastavení expozice poskytovatele" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", + "title": "Nabídky pro podporovatele", + "subtitle": "Oficiální slevy, kredity, zkušební období a prověřené partnerské výhody od Radaru.", + "backToRadar": "Zpět na Radar", + "loading": "Načítání nabídek...", + "refresh": "Obnovit nabídky", + "refreshing": "Obnovování...", + "loadFailed": "Nabídky se nepodařilo obnovit. Poslední ověřená místní mezipaměť zůstala zachována.", + "empty": "Momentálně nejsou k dispozici žádné aktivní nabídky.", + "keyRequiredTitle": "Je vyžadován klíč podporovatele", + "keyRequiredDescription": "Nabídky jsou aktuální výhodou Radaru. Přidejte existující klíč podporovatele na obrazovce Radaru, ověřte svůj status přispěvatele nebo podpořte projekt a klíč získáte.", + "contributorButton": "Jsem přispěvatel", + "supporterButton": "Podpořit projekt", "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "officialBadge": "Oficiální", + "conditionsLabel": "Podmínky:", + "validUntil": "Platí do {date}", + "noExpiry": "Bez uvedeného data vypršení platnosti", + "openOffer": "Zobrazit nabídku", + "trialDays": "{days, plural, one {# den} few {# dny} other {# dní}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", + "title": "Radarová inteligence", + "subtitle": "Žebříčky ELO spravované službou Radar a faktické změny v katalogu.", + "backToRadar": "Zpět do služby Radar", + "loading": "Načítání Intel...", + "refresh": "Obnovit Intel", + "syncing": "Obnovování...", + "loadFailed": "Intel se nepodařilo obnovit. Poslední ověřená místní mezipaměť byla zachována.", + "empty": "Zatím není k dispozici žádný ověřený snímek Intel.", + "supporterBadge": "Podporovatel služby Radar", + "methodology": "Metodika", + "eloMethod": "ELO, počáteční {initial}, K={factor}", + "freshness": "Aktuálnost katalogu", + "ageDays": "{days, plural, one {stáří # den} few {stáří # dny} other {stáří # dní}}", + "trend": "Trend katalogu", + "modelDelta": "{current} modelů, +{added} / -{removed}", + "ranking": "Žebříček modelů", + "noRankings": "Zatím nejsou k dispozici žádná potvrzená porovnání.", "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "category": "Kategorie", + "rating": "Hodnocení", + "matches": "Porovnání", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Aktuální", + "aging": "Stárnoucí", + "stale": "Zastaralé" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Rostoucí", + "stable": "Stabilní", + "shrinking": "Klesající" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Žádost překračuje kontextové okno poskytovatele" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference je přítelem open source projektu OmniRoute", + "description": "Brána seřazená podle nákladů, která zpřístupňuje desítky špičkových modelů prostřednictvím jednoho koncového bodu kompatibilního s OpenAI — každý požadavek směruje k nejlevnějšímu vhodnému poskytovateli, nikdy za cenu vyšší než ceníkovou.", + "cta": "Získat klíč API", + "partnerLinkNote": "Partnerský odkaz", + "dismissAriaLabel": "Zavřít" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Zakázat generování variant úrovně přemýšlení (např. -low, -medium, -high) v katalogu /v1/models." } diff --git a/src/i18n/messages/da.json b/src/i18n/messages/da.json index ffabe002ee..f345293d50 100644 --- a/src/i18n/messages/da.json +++ b/src/i18n/messages/da.json @@ -31,7 +31,7 @@ "active": "Aktiv", "inactive": "Inaktiv", "noData": "Ingen tilgængelige data", - "nothingHere": "Nothing here yet", + "nothingHere": "Intet her endnu", "configure": "Konfigurer", "manualConfig": "Manuel konfiguration", "manage": "Administrer", @@ -47,7 +47,7 @@ "time": "Tid", "details": "Detaljer", "created": "Oprettet", - "lastUsed": "Last Refreshed", + "lastUsed": "Senest opdateret", "loadMore": "Indlæs mere", "noResults": "Ingen resultater fundet", "reloadPage": "Genindlæs siden", @@ -70,8 +70,8 @@ "note": "Bemærk", "free": "Gratis", "skipToContent": "Gå til indhold", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Serveren oplever problemer. Nogle funktioner er muligvis ikke tilgængelige.", + "maintenanceServerUnreachable": "Serveren kan ikke nås. Opretter forbindelse igen...", "accept": "Accepter", "accountId": "Konto-id", "alias": "Alias", @@ -98,7 +98,7 @@ "skill": "Færdighed", "sortBy": "Sorter efter", "sortOrder": "Sorteringsrækkefølge", - "tab": "Tab", + "tab": "Fane", "text": "Tekst", "textarea": "Tekstområde", "tool": "Værktøj", @@ -120,12 +120,12 @@ "compatible": "Kompatibel", "chat-completions": "Chatafslutninger", "oauth": "OAuth", - "auth_token": "Auth Token", + "auth_token": "Godkendelsestoken", "crypto": "Krypto", "hours": "Timer", "selfsigned": "Selvsigneret", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", + "proxy_id": "Proxy-id", + "proxyId": "Proxy-id", "connectionId": "Forbindelses-id", "resolveConnectionId": "Løs forbindelses-id", "resolve_connection_id": "Løs forbindelses-id", @@ -147,12 +147,12 @@ "TOOL_ALLOWLIST": "Værktøjstilladelsesliste", "TOOL_DENYLIST": "Værktøj Denylist", "Failed to save pricing": "Kunne ikke gemme prisen", - "Failed to reset pricing": "Failed to reset pricing", + "Failed to reset pricing": "Kunne ikke nulstille priser", "apikey": "API nøgle", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Gå til kontrolpanel", + "checkSystemStatus": "Kontrollér systemstatus", + "selectModel": "Vælg model", "addModel": "Tilføj model", "effortNone": "Ingen", "effortLow": "Lav", @@ -164,10 +164,10 @@ "reasoningEffort": "Ræsonneringsindsats", "wireApi": "Wire API", "modelAliases": "Modelaliasser", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Kombinationer", + "noModelsFound": "Ingen modeller fundet", + "clear": "Ryd", + "done": "Færdig", "selectAll": "Vælg alle", "unselectAll": "Fravælg alle", "visibleModels": "synlige", @@ -184,533 +184,533 @@ "selectAllProviders": "Tjek alle udbydere", "clearProviderSelection": "Fjern markeringen af udbydere", "providersSelectedCount": "{count} udbydere tjekket", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Der opstod en fejl", + "comboDeleted": "Kombination slettet", + "hide": "Skjul", + "creating": "Opretter", + "comboCreated": "Kombination oprettet", + "swapFormats": "Ombyt formater", + "daysAgo": "Dage siden", + "retries": "Genforsøg", + "errorDuringRestore": "Fejl under gendannelse", + "eventsAppearHint": "Tip om visning af hændelser", + "noLockouts": "Ingen spærringer", + "webSearchDesc": "Beskrivelse af websøgning", + "audioProvidersHeading": "Overskrift for lydudbydere", "cloudAgentProviders": "Cloud Agent-udbydere", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Minutter siden", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", + "liveAutoRefreshing": "Automatisk liveopdatering", + "webSearch": "Websøgning", + "anthropicPrefixPlaceholder": "Pladsholder for Anthropic-præfiks", + "addModelToCombo": "Føj model til kombination", + "failedToLoad": "Kunne ikke indlæse", + "categoryMedia": "Kategori: Medier", + "enableCloud": "Aktivér Cloud", + "expirationBannerExpiringSoon": "Udløbsbanner: Udløber snart", + "retry": "Prøv igen", + "embeddings": "Indlejringer", + "errorCount": "Antal fejl", + "backupReasonManual": "Årsag til sikkerhedskopiering: Manuel", + "safeSearchModerate": "Safe Search: Moderat", + "activeLimiters": "Aktive begrænsere", + "a2aCardTitle": "Titel på A2A-kort", + "cloudWorkerUnreachable": "Cloud Worker kan ikke nås", + "testFailed": "Test mislykkedes", + "compatibleBaseUrlHint": "Tip til kompatibel Base URL", + "usageTracking": "Sporing af forbrug", + "disableCloudTitle": "Titel for deaktivering af Cloud", + "noConnections": "Ingen forbindelser", + "providerHealth": "Provider-status", + "confirmDbImport": "Bekræft import af database", + "notAvailableSymbol": "Symbol for ikke tilgængelig", + "backupsAvailable": "Tilgængelige sikkerhedskopier", + "providerAuto": "Automatisk provider", + "newProviderNamePlaceholder": "Pladsholder for navn på ny provider", + "a2aQuickStartStep2": "A2A-hurtigstart, trin 2", + "ok": "OK", + "available": "Tilgængelig", + "noBackupYet": "Ingen sikkerhedskopi endnu", + "more": "Mere", + "noCompatibleYet": "Ingen kompatible endnu", + "multiProvider": "Flere providere", + "repairEnvHint": "Tip til reparation af miljø", + "disablingCloud": "Deaktiverer Cloud", + "testBench": "Testbænk", + "valid": "Gyldig", + "cloudBenefitShare": "Fordel ved Cloud-deling", + "mcpCardTitle": "Titel på MCP-kort", + "disableConfirm": "Bekræft deaktivering", + "filters": "Filtre", + "expirationBannerExpiredDesc": "Beskrivelse i udløbsbanner: Udløbet", + "saveComboDefaults": "Gem standardindstillinger for kombination", + "cloudConnectedVerified": "Cloud-forbindelse bekræftet", + "uptime": "Oppetid", + "compatibleProdPlaceholder": "Pladsholder for kompatibel produktion", + "fallbackChainsTitle": "Titel på fallback-kæder", + "oauthLabel": "OAuth-etiket", + "a2aCardDescription": "Beskrivelse af A2A-kort", + "okShort": "OK", + "maintenance": "Vedligeholdelse", + "formatConverter": "Formatkonvertering", + "zedImportNetworkError": "Netværksfejl ved Zed-import", + "apiKeyLabel": "API-nøgleetiket", + "noModelsForProvider": "Ingen modeller for udbyderen", + "mcpCardDescription": "Beskrivelse af MCP-kort", + "apiTypeLabel": "Etiket for API-type", + "configuredProvidersLabel": "Etiket for konfigurerede udbydere", + "maxRetriesLabel": "Etiket for maksimalt antal genforsøg", + "title": "Titel", "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "prefixHint": "Tip til præfiks", + "skipWizard": "Spring guiden over", + "failedCount": "Antal mislykkede", + "confirmDbImportDesc": "Beskrivelse af bekræftelse af databaseimport", + "entries": "Poster", + "until": "Indtil", + "disableCombo": "Deaktiver kombination", + "liveMonitorDescriptionPrefix": "Præfiks til beskrivelse af liveovervågning", + "runningCount": "Antal kørende", + "noActiveConnectionsInGroup": "Ingen aktive forbindelser i gruppen", + "savedSuccessfully": "Gemt", + "systemStorage": "Systemlager", + "videoDesc": "Videobeskrivelse", + "maxResults": "Maksimalt antal resultater", + "timeRangeMonth": "Tidsinterval: måned", + "testSummary": "Testoversigt", + "failedSetPassword": "Kunne ikke indstille adgangskode", + "audio": "Lyd", + "restore": "Gendan", + "disableWarning": "Advarsel om deaktivering", + "moderationsDesc": "Beskrivelse af modereringer", + "providerHealthStatusAria": "ARIA-label for udbyderens sundhedsstatus", + "modelNamePlaceholder": "Pladsholder for modelnavn", + "mcpQuickStartStep2": "Mcp-hurtigstart trin 2", + "quickStart": "Hurtigstart", + "fullExportFailedWithError": "Fuld eksport mislykkedes med fejl", + "loadingBackups": "Indlæser sikkerhedskopier", + "anthropicBaseUrlPlaceholder": "Pladsholder for Anthropic-basis-URL", + "description": "Beskrivelse", + "noProviderFound": "Ingen udbyder fundet", + "auto": "Automatisk", + "protocolsDescription": "Beskrivelse af protokoller", + "cloudSessionNote": "Bemærkning om cloudsession", + "advancedSettings": "Avancerede indstillinger", + "defaultStrategy": "Standardstrategi", + "purgeExpiredLogs": "Ryd udløbne logfiler", + "justNow": "Lige nu", + "providerTestFailed": "Udbydertest mislykkedes", + "openaiBaseUrlPlaceholder": "Pladsholder for Openai-basis-URL", + "image": "Billede", + "failedCreateChain": "Kunne ikke oprette kæde", + "importDatabase": "Importér database", + "allDataLocal": "Alle data er lokale", + "sectionTitle": "Sektionstitel", + "failedToggle": "Skift mislykkedes", + "editCombo": "Rediger kombination", + "testResults": "Testresultater", + "searchQuery": "Søgeforespørgsel", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", + "duplicate": "Dupliker", + "createCombo": "Opret kombination", + "searchTypeWeb": "Søgetype: web", + "addChain": "Tilføj kæde", + "prefixLabel": "Præfiksetiket", + "listModelsDesc": "Beskrivelse af modelliste", + "databaseSize": "Databasestørrelse", + "chainCreated": "Kæde oprettet", + "providerTestTimeout": "Timeout for udbydertest", + "routingStrategy": "Routingstrategi", + "translateAction": "Oversæt handling", + "exportFailed": "Eksport mislykkedes", + "connectedVerificationPending": "Forbundet, afventer bekræftelse", + "a2aQuickStartTitle": "Titel på A2A-hurtigstart", + "couldNotTest": "Kunne ikke teste", + "testAllCompatible": "Test alle kompatible", + "anthropicCompatibleName": "Anthropic-kompatibelt navn", + "disabling": "Deaktiverer", + "failedEnable": "Aktivering mislykkedes", + "categoryUtility": "Kategori: hjælpeværktøj", + "customUrlOptional": "Brugerdefineret URL (valgfri)", + "localProviders": "Lokale udbydere", + "comboNamePlaceholder": "Pladsholder for kombinationsnavn", + "memoryRss": "Hukommelses-RSS", + "disableProvider": "Deaktiver udbyder", + "welcomeDesc": "Velkomstbeskrivelse", + "nameLabel": "Navneetiket", + "allOperational": "Alle fungerer", + "backupNow": "Sikkerhedskopiér nu", + "providerMaxRetriesAria": "ARIA for maksimalt antal genforsøg hos udbyderen", + "textToSpeechDesc": "Beskrivelse af tekst til tale", + "machineId": "Maskin-id", + "globalProxy": "Global proxy", + "hitsMisses": "Træffere og forbiere", + "testDesc": "Testbeskrivelse", + "chatDesc": "Chatbeskrivelse", + "importSuccess": "Import lykkedes", "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "a2aQuickStartStep1": "A2A-lynstart, trin 1", + "importFailed": "Import mislykkedes", + "inputPlaceholder": "Pladsholder for input", + "providerModelsTitle": "Titel på udbydermodeller", + "lastBackup": "Seneste sikkerhedskopi", + "yourEndpoint": "Dit slutpunkt", + "autoDisableThresholdDesc": "Beskrivelse af tærskel for automatisk deaktivering", + "rerankDesc": "Beskrivelse af omrangering", + "modelsPathPlaceholder": "Pladsholder for modelsti", + "noCombosYet": "Ingen kombinationer endnu", + "connectedVerificationPendingWithError": "Forbundet – afventer bekræftelse med fejl", + "comboDefaultsGuideHint1": "Tip 1 i vejledningen til standardindstillinger for kombinationer", + "enableCloudTitle": "Aktivér cloud", + "configuredProvidersHint": "Tip om konfigurerede udbydere", + "paused": "Sat på pause", + "llmProviders": "LLM-udbydere", + "enableCombo": "Aktivér kombination", + "removeProviderOverrideAria": "Fjern aria-label for udbydertilsidesættelse", + "nodeVersion": "Node-version", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Eksport mislykkedes med fejl", + "proxyConfigured": "Proxy konfigureret", + "concurrencyPerModel": "Samtidige anmodninger pr. model", + "protocolTasksLabel": "Etiket for protokolopgaver", + "oauthProviders": "OAuth-udbydere", + "lockedCount": "Antal låste", + "deleteChainConfirm": "Bekræft sletning af kæde", + "recentTranslations": "Seneste oversættelser", + "zedImportButton": "Zed-importknap", + "responsesDesc": "Beskrivelse af svar", + "testedCount": "Antal testede", + "providersCommaSeparatedPlaceholder": "Pladsholder for kommaseparerede udbydere", + "signatureDefaults": "Standardsignaturer", + "errorCreating": "Fejl under oprettelse", + "timeRangeYear": "Tidsinterval: år", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Cloud blev deaktiveret", + "deleteConfirm": "Bekræft sletning", + "check": "Kontrollér", + "safeSearch": "Sikker søgning", + "protocolLastActivity": "Seneste protokolaktivitet", + "openMcpDashboard": "Åbn MCP-dashboard", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Etiket for chatsti", + "retryDelay": "Forsinkelse før nyt forsøg", + "errorUpdating": "Fejl under opdatering", + "ideCliIntegrations": "IDE- og CLI-integrationer", + "imageGeneration": "Billedgenerering", + "apiKeyRequired": "API-nøgle påkrævet", + "resetAllTitle": "Nulstil alle", + "connectionError": "Forbindelsesfejl", + "modelName": "Modelnavn", + "apiKeyForCheck": "API-nøgle til kontrol", + "cloudRequestTimeout": "Timeout for Cloud-anmodning", + "showConfiguredOnly": "Vis kun konfigurerede", "showFreeOnly": "Kun gratis", "addFirstProvider": "Tilføj din første udbyder", "addFirstProviderDesc": "Tilslut en AI-udbyder for at starte routinganmodninger gennem OmniRoute. Du kan bruge gratis udbydere, API-nøgler eller OAuth-konti.", "learnMore": "Få flere oplysninger", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Inkluder domæner", + "promptCache": "Promptcache", + "cloudConnected": "Cloud er tilsluttet", + "deleteChain": "Slet kæde", + "chatPathPlaceholder": "Pladsholder for chatsti", + "databasePath": "Databasesti", + "usingLocalServer": "Bruger lokal server", + "globalComboConfig": "Global kombinationskonfiguration", + "backupFailed": "Sikkerhedskopiering mislykkedes", + "tabProtocols": "Protokoller", + "continue": "Fortsæt", + "categorySearch": "Kategorisøgning", + "rateLimitStatus": "Status for hastighedsbegrænsning", + "repairEnvSuccess": "Miljøet blev repareret", + "nameRequired": "Navn er påkrævet", + "country": "Land", + "trackMetricsDesc": "Beskrivelse af registrering af målinger", + "durationSecondsShort": "Varighed i sekunder (kort)", + "formatConverterDescription": "Beskrivelse af formatkonvertering", + "cloudBenefitAccess": "Adgang til cloudfordele", + "maxRetries": "Maks. antal genforsøg", + "queueTimeout": "Timeout for kø", "queueDepth": "Kødybde", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Tilføj udbyder", + "realtime": "Realtid", + "totalTranslations": "Samlet antal oversættelser", + "protocolActiveStreamsLabel": "Aktive protokolstreams", + "repairEnv": "Reparer miljø", + "modelsCount": "Antal modeller", + "viewBackups": "Vis sikkerhedskopier", + "responsesApi": "Responses API", + "copyComboName": "Kopiér kombinationsnavn", + "failures": "Fejl", + "failedUpdate": "Opdatering mislykkedes", + "imageDesc": "Billedbeskrivelse", + "failedCreate": "Oprettelse mislykkedes", + "remainingOfLimit": "Resterende af grænsen", + "protocolsTitle": "Protokoller", + "expirationBannerExpiringSoonDesc": "Beskrivelse af banner om snarligt udløb", + "source": "Kilde", + "failed": "Mislykkedes", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", + "mcpQuickStartStep1": "MCP-hurtigstart, trin 1", + "runTest": "Kør test", + "loadingFallbackChains": "Indlæser fallback-kæder", + "healthy": "Fungerer korrekt", "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", + "saveBlockWeighted": "Gem vægtet blok", + "zedImportNone": "Ingen Zed-import", + "noBackupsYet": "Ingen sikkerhedskopier endnu", + "noGlobalProxy": "Ingen global proxy", + "noModels": "Ingen modeller", + "stickyLimit": "Fast grænse", + "passedCount": "Antal beståede", + "zedImportFailed": "Zed-import mislykkedes", + "saving": "Gemmer", + "testAll": "Test alle", + "globalProxyDesc": "Beskrivelse af global proxy", + "latencyP99": "Ventetid P99", + "connectingToCloud": "Opretter forbindelse til Cloud", + "responses": "Svar", + "errorDeleting": "Fejl under sletning", + "openaiPrefixPlaceholder": "Pladsholder for Openai-præfiks", + "enterPassword": "Indtast adgangskode", + "openA2aDashboard": "Åbn A2A-dashboard", + "enableProvider": "Aktivér udbyder", + "modeTest": "Testtilstand", + "failedDeleteChain": "Kæden kunne ikke slettes", + "providerDesc": "Beskrivelse af udbyder", + "templateLoadHint": "Tip til indlæsning af skabelon", + "lastFailure": "Seneste fejl", + "moveDown": "Flyt ned", + "providerLabel": "Udbyderetiket", + "clearCacheFailed": "Rydning af cache mislykkedes", + "imagesGenerations": "Billedgenereringer", + "repairEnvWorking": "Reparation af miljø er i gang", + "millisecondsShort": "ms", + "globalLabel": "Global etiket", + "failuresPlural": "Fejl", + "completionsLegacyDesc": "Beskrivelse af ældre fuldførelser", + "searchProviders": "Søg efter udbydere", + "chatPathHint": "Tip til chatsti", + "defaultStrategyDesc": "Beskrivelse af standardstrategi", + "latencyP95": "Ventetid P95", + "textToSpeech": "Tekst til tale", + "searchType": "Søgetype", + "messages": "Beskeder", + "aggregatorsGateways": "Aggregatorgateways", + "comboStrategyAria": "Kombinationsstrategi Aria", "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", + "testingConnection": "Tester forbindelse", + "excludeDomains": "Ekskluder domæner", + "webCookieProviders": "Webcookieudbydere", + "allTestsPassed": "Alle tests bestået", + "openaiCompatibleName": "Openai-kompatibelt navn", + "warningCostOptimizedPartialPricing": "Advarsel om omkostningsoptimeret delvis prissætning", + "comboDefaultsGuideTitle": "Titel på vejledning til kombinationsstandarder", + "hoursAgo": "Timer siden", + "notAvailable": "Ikke tilgængelig", + "skipAndContinue": "Spring over og fortsæt", + "moderations": "Modereringer", + "proxyConfig": "Proxykonfiguration", + "upstreamProxyProviders": "Upstream-proxyudbydere", + "exportAll": "Eksportér alle", + "queuedCount": "Antal i kø", + "resetAll": "Nulstil alle", + "noTranslations": "Ingen oversættelser", + "avgLatency": "Gns. latenstid", + "throttleStatus": "Begrænsningsstatus", + "backupRetentionDesc": "Beskrivelse af sikkerhedskopiers opbevaringsperiode", + "noCBData": "Ingen Cb-data", + "chainDeleted": "Kæde slettet", + "timeLeft": "Resterende tid", + "expirationBannerExpired": "Udløbsbanner udløbet", + "language": "Sprog", + "invalidFileType": "Ugyldig filtype", + "monitoredProviders": "Overvågede udbydere", + "errors": "Fejl", "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "chatCompletions": "Chatfuldførelser", + "exampleTemplatesHint": "Tip til eksempelskabeloner", + "retryDelayLabel": "Etiket for forsinkelse før nyt forsøg", + "audioTranscription": "Lydtransskription", + "fallbackChainsDesc": "Beskrivelse af fallback-kæder", + "exampleTemplates": "Eksempelskabeloner", + "connectionsCount": "Antal forbindelser", + "modelsPathLabel": "Etiket for modelsti", + "activeProvidersHint": "Tip om aktive udbydere", + "activeLockouts": "Aktive spærringer", + "invalid": "Ugyldig", + "skipPassword": "Spring adgangskode over", + "moveUp": "Flyt op", + "timeRange": "Tidsinterval", + "stickyLimitDesc": "Beskrivelse af fast grænse", + "cloudBenefitEdge": "Cloud-fordel ved edge", + "custom": "Brugerdefineret", + "verifying": "Bekræfter", + "baseUrlLabel": "Etiket for basis-URL", + "setPassword": "Angiv adgangskode", + "safeSearchStrict": "Streng sikker søgning", + "noChangesSinceBackup": "Ingen ændringer siden sikkerhedskopieringen", + "modelsPathHint": "Tip om modelsti", + "audioTranscriptions": "Lydtransskriptioner", + "testCombo": "Test kombination", + "mcpQuickStartTitle": "Titel på hurtigstart til Mcp", + "comboUpdated": "Kombination opdateret", + "weighted": "Vægtet", + "providers": "Udbydere", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Beskrivelse af ingen fallback-kæder", + "yesImport": "Ja, importér", + "lockoutsAutoRefreshHint": "Tip om automatisk opdatering af spærringer", + "tabApis": "Fanen API'er", + "sectionDescription": "Sektionsbeskrivelse", + "filter": "Filtrér", + "purgeLogsFailed": "Rydning af logfiler mislykkedes", + "latency": "Ventetid", + "testAllOAuth": "Test al O Auth", + "mcpQuickStartStep3": "Trin 3 i hurtigstart til Mcp", + "repairEnvFailed": "Reparation af miljø mislykkedes", + "zedImportHint": "Tip om import fra Zed", + "modelsAcrossEndpoints": "Modeller på tværs af slutpunkter", + "autoDisableBannedAccounts": "Deaktivér automatisk udelukkede konti", + "securityDesc": "Sikkerhedsbeskrivelse", + "listModels": "Vis modeller", + "backupRestore": "Sikkerhedskopiering og gendannelse", + "target": "Mål", + "zedImportSuccess": "Zed-import lykkedes", + "lastHeaderUpdate": "Seneste headeropdatering", + "categoryCore": "Kerne-kategori", + "noFallbackChains": "Ingen fallback-kæder", + "noSearchProviders": "Ingen søgeudbydere", + "autoBalance": "Automatisk balancering", + "noModelsYet": "Ingen modeller endnu", + "signatureFamily": "Signaturfamilie", + "externalApiCalls": "Eksterne API-kald", + "providerOverridesDesc": "Beskrivelse af udbydertilsidesættelser", + "signatureTool": "Signaturværktøj", + "connectionFailed": "Forbindelsen mislykkedes", + "activeLimitersPlural": "Aktive begrænsere i flertal", + "doneDesc": "Beskrivelse af færdig", + "down": "Nede", + "noDataYet": "Ingen data endnu", + "activeProviders": "Aktive udbydere", + "nameInvalid": "Ugyldigt navn", + "skip": "Spring over", + "createChain": "Opret kæde", + "audioSpeech": "Lydtale", + "cacheCleared": "Cachen blev ryddet", + "searchTypeNews": "Søgetype: nyheder", + "durationMillisecondsShort": "Varighed i millisekunder, kort", + "addOpenAICompatible": "Tilføj Open Ai-kompatibel", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "Sat i kø", + "domainPlaceholder": "Domænepladsholder", + "durationMinutesShort": "Varighed i minutter, kort", + "verifyingConnection": "Bekræfter forbindelse", + "imageProviders": "Billedudbydere", + "protocolToolsLabel": "Etiket for protokolværktøjer", + "queryPlaceholder": "Forespørgselspladsholder", + "videoGeneration": "Videogenerering", + "timeRangeWeek": "Tidsinterval: uge", + "limitExhausted": "Grænse nået", + "failedDisable": "Deaktivering mislykkedes", + "inMemoryNote": "Bemærkning om hukommelsen", + "compatibleHint": "Tip om kompatibilitet", + "errorShort": "Kort fejlmeddelelse", + "advancedHint": "Avanceret tip", + "restoreFailed": "Gendannelse mislykkedes", + "searchProvidersHeading": "Overskrift til søgning efter udbydere", + "comboName": "Kombinationsnavn", + "autoDisableDescription": "Beskrivelse af automatisk deaktivering", + "embeddingsDesc": "Beskrivelse af embeddings", + "operational": "Driftsklar", + "testAllApiKey": "Test alle API-nøgler", + "backupCreated": "Sikkerhedskopi oprettet", + "errorDuringImport": "Fejl under import", + "comboDefaultsGuideHint2": "Tip 2 til vejledning om standardindstillinger for kombinationer", + "connecting": "Opretter forbindelse", + "fillModelAndProviders": "Udfyld model og udbydere", + "syncing": "Synkroniserer", + "resetConfirm": "Bekræft nulstilling", + "trackMetrics": "Registrer målinger", + "successful": "Gennemført", + "recovering": "Gendanner", + "autoDisableThreshold": "Tærskel for automatisk deaktivering", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Synkroniserer data", + "cloudBenefitPorts": "Fordele ved cloudporte", + "compatibleProviders": "Kompatible udbydere", "freeTierProviders": "Gratis udbydere", "freeTierLabel": "Gratis niveau tilgængelig", "freeTierProvidersDesc": "Udbydere med gratis niveauer - nogle kræver en API-nøgletilmelding, andre behøver slet ingen legitimationsoplysninger.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", - "gamificationAdmin": "Gamification Admin", + "clearCache": "Ryd cache", + "reqs": "Anmodninger", + "addAnthropicCompatible": "Tilføj Anthropic-kompatibel udbyder", + "apiKeyProviders": "API-nøgleudbydere", + "tabsAria": "ARIA for faner", + "resetting": "Nulstiller", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Årsag til sikkerhedskopiering før gendannelse", + "disableCloud": "Deaktiver cloud", + "newProviderNameAria": "ARIA for nyt udbydernavn", + "passwordsMismatch": "Adgangskoderne stemmer ikke overens", + "a2aQuickStartStep3": "Trin 3 i hurtigstart til A2A", + "liveMonitorDescriptionSuffix": "Suffiks til beskrivelse af liveovervågning", + "failedAddProvider": "Udbyderen kunne ikke tilføjes", + "addAtLeastOneProvider": "Tilføj mindst én udbyder", + "reasonSeparator": "Årsagsseparator", + "zedImporting": "Zed importerer", + "confirmPasswordPlaceholder": "Pladsholder til bekræftelse af adgangskode", + "whatYouGet": "Hvad du får", + "signatureSession": "Signatursession", + "errorCountNoCode": "Fejlantal uden kode", + "testing": "Test", + "providersCommaSeparated": "Udbydere adskilt med komma", + "exportDatabase": "Eksportér database", + "hitRate": "Træfprocent", + "completionsLegacy": "Ældre fuldførelser", + "removeModel": "Fjern model", + "timeRangeDay": "Tidsinterval: Dag", + "cloudRequestFailed": "Cloudanmodning mislykkedes", + "updatedAt": "Opdateret den", + "monitoredProvidersHint": "Tip til overvågede udbydere", + "connectionSuccessful": "Forbindelsen blev oprettet", + "latencyP50": "Latens P50", + "logsDeleted": "Logfiler slettet", + "chatTester": "Chattester", + "safeSearchOff": "Sikker søgning slået fra", + "nameHint": "Navnetip", + "debugToggle": "Fejlretning til/fra", + "embedding": "Indlejring", + "issuesLabel": "Problemfelt", + "optionAny": "Valgmulighed: Alle", + "maxNestingDepth": "Maksimal indlejringsdybde", + "rerank": "Omrangering", + "checking": "Kontrollerer", + "getStarted": "Kom i gang", + "restoreSuccess": "Gendannelse gennemført", + "issuesDetected": "Problemer registreret", + "signatureCache": "Signaturcache", + "modelLockouts": "Modelspærringer", + "usingCloudProxy": "Bruger cloudproxy", + "loadingHealth": "Indlæser status", + "providerOverrides": "Udbydertilsidesættelser", + "audioTranscriptionDesc": "Beskrivelse af lydtransskription", + "learnedFromHeaders": "Lært fra headers", + "totalRequests": "Anmodninger i alt", + "cloudUnstableNote": "Bemærkning om ustabil cloudtjeneste", + "gamificationAdmin": "Administration af gamification", "monitorAnomaliesAndHealth": "Overvåg uregelmæssigheder og systemsundhed", "flaggedAnomalies": "Markerede anomalier", "noAnomaliesDetected": "Ingen uregelmæssigheder opdaget", "apiKey": "API nøgle", "xpLastHour": "XP (1 time)", "zScore": "Z-score", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Mistænkelig", "tokensCommunityServers": "Fællesskabsservere", "tokensServerNamePlaceholder": "Servernavn", "tokensApiKeyPlaceholder": "API nøgle", "tokensTokenBalance": "Token balance", "tokensSendTokens": "Send tokens", - "tokensRecipientApiKeyId": "Recipient API Key ID", + "tokensRecipientApiKeyId": "Modtagerens API-nøgle-id", "tokensRecipientApiKeyIdPlaceholder": "Indtast modtagerens API-nøgle-id", "tokensReasonOptional": "Årsag (valgfrit)", "tokensReasonPlaceholder": "f.eks. bonus, belønning", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Indlæser mere...", "recommended": "Anbefalet", "understand": "Jeg forstår", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", + "batchConceptTitle": "Batchbehandling", + "batchConceptSubtitle": "Behandl tusindvis af anmodninger asynkront til ~50 % af prisen (24-timers vindue). Ideelt til evalueringer, klassificering og embeddings.", + "batchConceptHowItWorks": "Sådan fungerer det", + "batchConceptBenefit50pct": "50 % rabat på input- og outputtokens", + "batchConceptAsync24h": "Asynkront med et fuldførelsesvindue på 24 timer", + "batchConceptUseCases": "Bedst til masseklassificering, evalueringer og embeddings", + "batchHeaderSubtitle": "Kør mange anmodninger som ét job", "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", + "batchStep1Desc": "Tilføj anmodninger", + "batchStep2": "2 · Opret batch", + "batchStep2Desc": "Kør job", + "batchStep3": "3 · Hent resultater", + "batchStep3Desc": "Hent output", + "filesConceptTitle": "Batchfiler", + "filesConceptSubtitle": "JSONL-filer, der bruges af batches: inputanmodninger, resultater og fejl.", + "filesConceptInput": "Input — din JSONL med én anmodning pr. linje", + "filesConceptOutput": "Output — resultater fra fuldførte anmodninger", + "filesConceptError": "Fejl — anmodninger, der mislykkedes", + "filesConceptRetention": "Opbevaring: 30 dage som standard (29 dage hos Anthropic)", + "wizardTitle": "Ny batch", + "wizardClose": "Luk", + "wizardNext": "Næste", + "wizardBack": "Tilbage", + "wizardCancel": "Annuller", + "wizardCreate": "Opret batch", + "wizardCreating": "Opretter…", "wizardStep1Destination": "Destination", "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", + "wizardStep3Validate": "Valider", + "wizardStep4Cost": "Pris og oprettelse", + "wizardProviderLabel": "Udbyder", + "wizardEndpointLabel": "Slutpunkt", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (vi konverterer den)", + "wizardDropOrPick": "Slip en fil her, eller klik for at vælge", + "wizardCsvMappingTitle": "Knyt CSV-kolonner → anmodningsfelter", + "wizardCsvMappingAddField": "Tilføj felt", "wizardCsvNoColumns": "Ingen kolonner registreret i CSV-header.", "wizardCsvIgnoreColumn": "— ignorer —", "wizardCsvCustomIdMapped": "custom_id tilknyttet", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} rækker parset", "wizardCsvRowsSkipped": "{count} rækker sprunget over", "wizardCsvRowError": "Række {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Alle linjer er gyldige", "wizardValidating": "Validerer…", "wizardValidationParseFailed": "Validering mislykkedes — kunne ikke parse indhold.", "wizardValidationSummary": "{lines} linjer · {ids} unikke custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Duplikerede custom_ids registreret:", "wizardValidationFirstErrors": "Fejl (første {count}):", "wizardValidationLine": "Linje {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", + "wizardValidationErrors": "Valideringsfejl", + "wizardValidationPreview": "Forhåndsvisning (de første 5 anmodninger)", + "wizardValidationSamplingNote": "Filen er stor — valideret ved stikprøve (de første 1000 + de sidste 100 linjer). Fuld validering kører på serversiden.", + "wizardCostSync": "Pris ved synkron behandling", + "wizardCostBatch": "Pris ved batchbehandling (-50 %)", + "wizardCostSavings": "Besparelse", + "wizardCostEstimatedNotice": "Anslået pris — den faktiske fakturering kan variere.", + "wizardErrorUpload": "Filen kunne ikke uploades. Prøv igen.", + "wizardErrorCreate": "Batchen kunne ikke oprettes. Prøv igen.", + "wizardEmptyProviders": "Forbind en udbyder med understøttelse af batchbehandling (OpenAI, Anthropic eller Gemini) for at oprette en batch.", + "uploadModalTitle": "Upload batchfil", + "uploadModalDropOrPick": "Slip en .jsonl-fil her, eller klik for at vælge", "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", + "uploadModalCancel": "Annuller", + "uploadModalError": "Upload mislykkedes. Prøv igen.", + "uploadModalSuccess": "Uploadet", + "uploadModalSizeLimit": "Maks. 512 MB", + "batchListNewButton": "Ny batch", + "batchListAutoRefresh": "Automatisk opdatering hvert 30. sek.", + "batchListCostColumn": "Pris", + "batchActionCancel": "Annuller", + "batchActionDownloadOutput": "Hent output", + "batchActionDownloadErrors": "Download fejl", + "batchActionRetry": "Prøv mislykkede igen", + "batchActionRetryConfirm": "Prøv {n} mislykkede anmodning(er) igen? Den endelige pris afhænger af det faktiske antal forbrugte tokens.", + "expirationBadgeCritical": "Kritisk", + "expirationBadgeWarning": "Snart", + "expirationBadgeNormal": "Afventer", + "expirationBadgeExpired": "Udløbet", "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", + "filesListUsedByColumn": "Bruges af", + "filesListUsedByNone": "Ingen", "filesListUsedByRoleInput": "input", "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "filesListUsedByRoleError": "fejl", + "filesListSizeColumn": "Størrelse", + "batchListProgressPartial": "(delvis)", + "batchListProviderColumn": "Udbyder", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", + "batchListProviderOther": "Andet", + "batchListTitle": "Batchkørsler", + "batchListCount": "{count} batchkørsler", + "batchListRemovingCompleted": "Fjerner…", + "batchListRemoveCompleted": "Fjern fuldførte", "batchListTableStatus": "Status", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Slutpunkt", "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableProgress": "Fremdrift", + "batchListTableCreated": "Oprettet", + "batchListTableExpires": "Udløber", + "batchListLoading": "Indlæser…", + "batchListEmpty": "Ingen batchkørsler fundet", + "batchListValidating": "Validerer…", + "batchStatusAll": "Alle statusser", + "batchStatusInProgress": "I gang", + "batchStatusValidating": "Validerer", + "batchStatusFinalizing": "Færdiggør", + "batchStatusCompleted": "Fuldført", + "batchStatusFailed": "Mislykket", + "batchStatusCancelled": "Annulleret", + "batchStatusCancelling": "Annullerer", + "batchStatusExpired": "Udløbet", + "batchStatusCompletedWithFailures": "fuldført med fejl", + "batchStatusInProgressWithFailures": "i gang (med fejl)", + "batchStatusFinalizingWithFailures": "færdiggør (med fejl)", + "batchStatusCancelledWithFailures": "annulleret med fejl", + "batchStatusExpiredWithFailures": "udløbet (delvist)", + "wizardCostEstimating": "Estimerer omkostninger…", + "wizardCostRequests": "Anmodninger", + "wizardCostInputTok": "inputtokens", + "wizardCostOutputTok": "outputtokens", + "wizardCostWindow": "Vindue", + "wizardDestinationSelectProvider": "Vælg en udbyder…", + "wizardDestinationSelectModel": "Vælg en model…", + "wizardDestinationConnectProvider": "Tilslut en udbyder", + "batchListBatchCreated": "Batch {id} oprettet — opdaterer listen…", + "batchListBatchCreatedDismiss": "Luk", + "batchListRefreshing": "Opdaterer…", + "batchListRefresh": "Opdater", + "uploadFileModalRemove": "Fjern", + "uploadFileModalUploading": "Uploader…", + "wizardInputReading": "Læser fil…", + "wizardInputReady": "Klar", + "wizardInputLargeFileLabel": "Stor fil — stikprøvevalidering", + "wizardInputCsvJsonlReady": "JSONL genereret — klar til validering.", + "wizardInputLargeFileWarning": "Stor fil registreret — validering udføres ved stikprøvekontrol (de første 5 MB + de sidste 100 KB). Fuld validering foretages på serversiden.", + "wizardCostWindow24h": "24-timers frist for fuldførelse", + "wizardValidationFieldsOk": "påkrævede felter er gyldige", + "filesListDelete": "Slet", + "filesListDownload": "Hent", + "batchDetailActionCancel": "Annuller batch", + "batchDetailActionRetry": "Prøv mislykkede anmodninger igen", + "batchDetailCancelling": "Annullerer…", + "batchDetailRetrying": "Forbereder nyt forsøg…", + "batchDetailCancelConfirm": "Vil du annullere denne batch? Igangværende anmodninger stoppes.", + "batchActionCancelError": "Batchen kunne ikke annulleres. Prøv igen.", + "batchActionRetryError": "De mislykkede anmodninger kunne ikke prøves igen. Prøv igen.", + "batchConceptRetentionNote": "Resultat- og fejlfiler opbevares i 30 dage (Anthropic: 29 dage)", "batchFilesSizeColumn": "Størrelse", "toggleNoAuthProvider": "Skift til no-auth udbyder", "loadingModels": "Indlæser modeller…", @@ -988,21 +988,21 @@ "disabled": "Deaktiveret", "featureFlagOmnirouteEmergencyFallbackDescription": "Diriger budgetudtømte anmodninger til den gratis nød-fallback-udbyder/-model.", "featureFlagArenaEloSyncEnabledDescription": "Aktivér periodisk ELO-synkronisering fra Arena AI-førertavlen til rangering af modelintelligens.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Generér og indsæt samtaleresuméer, når combo-routing skifter model. Deaktiver dette for at behandle modelskift uafhængigt og forhindre baggrundsanmodninger om overdragelse for alle eksisterende og fremtidige comboer.", "featureFlagExposeCcDiscoveryAliasesDescription": "Reklamer claude/<provider>/<model> spejl-id'er på /v1/models, så Claude Code gateway modelopdagelse viser ikke-Claude modeller. Advarsel: fordobler katalogposter for alle klienter, når det er aktiveret globalt.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Hovedkontakt til gateway-aliaserne no-think/<provider>/<model>. Til (standard): /v1/models viser en variant uden ræsonnering for hver kvalificeret Claude-model med ræsonneringsfunktion, og et no-think/-id, der sendes i en anmodning, fortolkes som den rigtige model med ræsonnering deaktiveret. Fra: Der vises ingen varianter, og et no-think/-id behandles som ethvert andet ukendt model-id. Til- og fravalget ModelSpec.noThinkingAlias for hver model gælder fortsat, mens dette er slået til.", "featureFlagChatVirtualLanesEnabledDescription": "Aktivér adaptive virtuelle adgangsbaner pr. tenant til providerudlevering (#9654): en tenants burst giver ikke længere en anden 503. Miljøvariablen OMNIROUTE_CHAT_VIRTUAL_LANES har forrang over denne dashboard-indstilling; ændringer træder i kraft ved genstart af serveren.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Udbydersider i dashboardet: Vis kun Gratis-mærket for signaler, som udbyderen respekterer — dette fjerner heuristikken for visningsnavne, ikke-booleske gratis-felter og :free-suffikser hos registrerede udbydere uden et dokumenteret gratis niveau. Deaktiveret bevarer den tidligere regel for mærket.", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy-puljer og opencodes rotation pr. konto undgår i en periode pr. proces, der fordobles ved hver gentagelse op til en øvre grænse, at genbruge en proxy, som netop har fejlet (afvist TCP-probe eller en 429 modtaget gennem den). Der skrives ingen proxy-status; hvis alle kandidater sættes til side, forbliver valget uændret. Deaktiveret som standard: rækkefølgen for valg følger præcis den almindelige rotation.", + "featureFlagProxyPoolEgressObservationDescription": "Vis under en proxy-pulje i dashboardet, hvor mange observerede udgående IP-adresser der har betjent dens medlemmer inden for de seneste 24 timer, hvor mange forbindelser der brugte dem, og det højeste antal observeret bag én IP-adresse. Skrivebeskyttet, beregnet ud fra proxy-loggen og aldrig brugt til routing. Deaktiveret som standard: puljeeditoren er uændret, og observationsruten returnerer null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Lad en probe, som målet afviste (401/403/429: proxyen videresendte anmodningen, men destinationen afviste denne udgående IP-adresse), nulstille proxyens række af fortløbende fejl i proxyens helbredskontrol, ligesom en betjent probe. Deaktiveret som standard: En afvisning forbliver neutral og bevarer rækken. En 5xx forbliver uafklaret i begge tilfælde, og en afvisning fjerner, deaktiverer eller genaktiverer aldrig en proxy.", "sidebar": { "home": "Hjem", - "dashboard": "Dashboard", + "dashboard": "Kontrolpanel", "providers": "Udbydere", - "combos": "Combos", + "combos": "Comboer", "usage": "Brug", - "analytics": "Analytics", + "analytics": "Analyse", "costs": "Omkostninger", "health": "Sundhed", "proxy": "Proxy", @@ -1012,23 +1012,23 @@ "settings": "Indstillinger", "translator": "Oversætter", "playground": "Legeplads", - "searchTools": "Search Tools", + "searchTools": "Søgeværktøjer", "agents": "Agenter", "cloudAgents": "Cloud-agenter", - "memory": "Memory", - "skills": "Skills", + "memory": "Hukommelse", + "skills": "Færdigheder", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", "chaosConfig": "Kaostilstand", "docs": "Dokumenter", "issues": "Problemer", - "endpoints": "Endpoints", + "endpoints": "Slutpunkter", "endpointsSubtitle": "Dine AI-forbindelses-URL'er", - "apiManager": "API Keys", + "apiManager": "API-nøgler", "apiManagerSubtitle": "Administrer API-nøgler og adgang", "embeddedServices": "Integrerede tjenester", "embeddedServicesSubtitle": "Administrer lokale proxytjenester", - "logs": "Logs", + "logs": "Logfiler", "webhooks": "Webhooks", "webhooksSubtitle": "Få besked om begivenheder", "logExport": "Logeksport", @@ -1059,7 +1059,7 @@ "presetColors": "Populære farver", "createTheme": "Opret nyt tema...", "chooseColor": "Vælg én farve", - "themeCoral": "Coral", + "themeCoral": "Koral", "themeBlue": "Blå", "themeRed": "Rød", "themeGreen": "Grøn", @@ -1069,45 +1069,45 @@ "cliToolsShort": "Værktøjer", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Batchjob", + "themeSystem": "Temasystem", + "whitelabelingDesc": "Beskrivelse af white-labeling", + "switchThemes": "Skift temaer", + "themeAccentDesc": "Beskrivelse af temaets accentfarve", + "uploadFavicon": "Upload favicon", + "themeDark": "Mørkt tema", + "customLogoDesc": "Beskrivelse af brugerdefineret logo", + "sidebarVisibilityToggle": "Skift synlighed for sidepanel", + "themeAccent": "Temaets accentfarve", + "resetFavicon": "Nulstil favicon", + "whitelabeling": "White-labeling", + "darkMode": "Mørk tilstand", + "uploadLogo": "Upload logo", + "themeLight": "Lyst tema", + "appName": "Appnavn", + "appNameDesc": "Beskrivelse af appnavn", + "resetLogo": "Nulstil logo", + "customFavicon": "Brugerdefineret favicon", + "hideHealthLogs": "Skjul sundhedslogfiler", + "customLogo": "Brugerdefineret logo", + "appearance": "Udseende", + "themeSelectionAria": "ARIA-label til temavalg", + "themeCreate": "Opret tema", + "customFaviconDesc": "Beskrivelse af brugerdefineret favicon", + "logoPreview": "Forhåndsvisning af logo", + "themeCustom": "Brugerdefineret tema", + "hideHealthLogsDesc": "Beskrivelse af skjulning af sundhedslogfiler", + "faviconPreview": "Forhåndsvisning af favicon", + "changelog": "Ændringslog", + "contextSection": "Kontekst og cache", + "contextCaveman": "Hulemand", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Motorkombinationer", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Komprimeringsindstillinger", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", @@ -1128,27 +1128,27 @@ "compressionStudioSubtitle": "Live motorkaskade", "compressionExclusionsSubtitle": "Per-model/endpoint omgåelse", "chaosConfigSubtitle": "Parallel udførelse med flere modeller", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Rutevalg", + "protocolsSection": "Protokoller", + "agentsAiSection": "Agenter og AI", + "cacheContextSection": "Cache og kontekst", + "analyticsSection": "Analyse", + "costsSection": "Omkostninger", + "monitoringSection": "Overvågning", + "auditSecuritySection": "Revision og sikkerhed", + "devtoolsSection": "Udviklerværktøjer", + "configurationSection": "Konfiguration", + "aiFeaturesSection": "AI-funktioner", "mcp": "MCP", "a2a": "A2A", "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", + "apiEndpoints": "API-endepunkter", + "batchFiles": "Filer", + "analyticsEvals": "Evalueringer", + "analyticsSearch": "Søgning", + "analyticsUtilization": "Udnyttelse", + "analyticsComboHealth": "Combo-status", + "analyticsCompression": "Komprimering", "costsBudget": "Budget", "costsFreeTiers": "Gratisniveau-budget", "costsFreeTiersSubtitle": "Månedlige gratis token-tildelinger", @@ -1156,117 +1156,117 @@ "freeProviderRankingsSubtitle": "Bedste gratis udbydere rangeret efter model-ELO-scorer", "radar": "Radar Katalog", "radarSubtitle": "Samfundsberiget gratis modelkatalog", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Deling af kvoter", + "costsPricing": "Prissætning", + "logsProxy": "Proxylogfiler", + "logsConsole": "Konsol", + "logsActivity": "Aktivitet", + "auditMcp": "MCP-revision", "auditA2a": "A2A revision", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Udseende", + "settingsAi": "AI-indstillinger", + "settingsSecurity": "Sikkerhed", "settingsAccessTokens": "Adgangstokens", "settingsFeatureFlags": "Feature Flag", "settingsCache": "Cache", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "Godkendelse", + "settingsRouting": "Rutevalg", + "settingsResilience": "Robusthed", "modelLockout": "Modeludelukkelse", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Avanceret", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Udbyderkvote", + "providerQuota": "Udbyderkvote", + "runtime": "Kørselsmiljø", + "consoleLogs": "Konsollogfiler", + "logsTimeline": "Tidslinje", "logsTimelineSubtitle": "Visuel anmodnings tidslinje", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Samtaler", + "conversationsSubtitle": "Agentbaserede samtaler med flere runder", + "globalRouting": "Global routing", + "mitmProxy": "MITM-proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Agentbaserede funktioner", + "otherFeaturesSection": "Andre funktioner", + "compressionContextGroup": "Kontekstkomprimering", + "gamificationGroup": "Gamificering", + "toolsGroup": "Værktøjer", + "integrationsGroup": "Integrationer", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", + "costsParametersGroup": "Omkostningsparametre", + "auditGroup": "Revision", "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", + "homeSubtitle": "Oversigt over dashboard", + "providersSubtitle": "Administrer AI-udbydere", + "quotaTrackerSubtitle": "Spor forbrugsgrænser", + "providerQuotaSubtitle": "Spor udbydernes forbrugsgrænser", + "runtimeSubtitle": "Modstandsdygtighed og sessioner i realtid", + "contextCombosSubtitle": "Kombiner komprimeringsmotorer", + "cliToolsSubtitle": "Konfigurer CLI-kørselsmiljøer", + "agentsSubtitle": "Administrer lokale agenter", + "cloudAgentsSubtitle": "Administrer cloudbaserede agenter", + "apiEndpointsSubtitle": "Gør brugerdefinerede slutpunkter tilgængelige", + "proxySubtitle": "HTTP-proxyindstillinger", + "mitmProxySubtitle": "MITM-opfangning", + "oneProxySubtitle": "Offentlig proxygateway", + "leaderboard": "Rangliste", + "profile": "Profil", "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "gamificationAdmin": "Administration af gamification", + "leaderboardSubtitle": "Placeringer og præstationer", + "profileSubtitle": "Konto og præferencer", + "tokensSubtitle": "Tokenforbrug og budgetter", + "gamificationAdminSubtitle": "Overvågning af uregelmæssigheder og anti-cheat", + "usageSubtitle": "Trafik- og brugsstatistik", + "analyticsComboHealthSubtitle": "Kombinationsmålets pålidelighed", + "analyticsUtilizationSubtitle": "Udbyderudnyttelse", + "costsSubtitle": "Fordeling af udgifter", + "cacheSubtitle": "Cachetræfrater", + "analyticsCompressionSubtitle": "Statistik over tokenbesparelser", + "analyticsSearchSubtitle": "Analyse af søgeværktøj", + "analyticsEvalsSubtitle": "Resultater fra evalueringspakke", "providerStats": "Udbyderstatistik", "providerStatsSubtitle": "Latens- og ydeevnemålinger", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Applikationslogfiler", + "logsProxySubtitle": "Logfiler for proxytrafik", + "consoleLogsSubtitle": "Konsoloutput", + "logsActivitySubtitle": "Brugeraktivitetslog", + "healthSubtitle": "Systemtilstandskontrol", + "costsPricingSubtitle": "Prissætningsregler pr. model", + "costsBudgetSubtitle": "Budgetgrænser", + "costsQuotaShareSubtitle": "Del udbyderkvoter på tværs af nøgler", + "auditLogSubtitle": "Godkendelsesrevision", + "auditMcpSubtitle": "Revision af MCP-server", + "auditA2aSubtitle": "Revision af A2A-protokol", + "translatorSubtitle": "Formatkonvertering", + "playgroundSubtitle": "Test prompter live", + "searchToolsSubtitle": "Register over søgeværktøjer", + "memorySubtitle": "Permanent agenthukommelse", + "omniSkillsSubtitle": "Register over sandbox-færdigheder", + "agentSkillsSubtitle": "Register over A2A-færdigheder", + "mcpSubtitle": "MCP-serverstyring", + "a2aSubtitle": "A2A-protokolserver", "pluginsSubtitle": "Plugin-markedsplads og installationer", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Cachelagrede mediefiler", + "batchFilesSubtitle": "Batchinput-/outputfiler", + "settingsSubtitle": "Alle indstillinger", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Tema og layout", + "settingsAiSubtitle": "Standardindstillinger for AI-adfærd", + "globalRoutingSubtitle": "Globale routingregler", + "settingsResilienceSubtitle": "Gentagne forsøg og afbrydere", + "settingsAdvancedSubtitle": "Indstillinger for superbrugere", + "settingsSecuritySubtitle": "Godkendelse og kryptering", "settingsAccessTokensSubtitle": "Afgrænsede CLI-tokens til fjerntilstand", "settingsFeatureFlagsSubtitle": "Skift systemfunktioner", "settingsCacheSubtitle": "Modelkatalog og responscache", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Sidebjælke", + "settingsSidebarSubtitle": "Tilpas sidebjælkens layout", "settingsAuthzSubtitle": "Ruteoversigt og bypass-politik", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Dokumentation", + "issuesSubtitle": "Rapportér en fejl", + "changelogSubtitle": "Udgivelsesnoter", "costsQuotaPlans": "Planer og kvoter", "costsQuotaPlansSubtitle": "Konfigurer planer efter udbyder", "activity": "Aktivitet", @@ -1275,11 +1275,11 @@ "systemGroup": "System", "costsOverview": "Oversigt", "costsOverviewSubtitle": "Konsolideret omkostningsanalyse", - "agentBridge": "Agent Bridge", + "agentBridge": "Agentbro", "agentBridgeSubtitle": "Opsnap IDE-agenttrafik", "trafficInspector": "Trafikinspektør", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Undersøg anmodnings- og svartrafik fra dine apps", + "trafficInspectorPurpose": "Se præcis, hvad din applikation sender til og modtager fra AI-udbydere. Fungerer med enhver OpenAI-kompatibel klient.", "cliCode": "CLI-kode", "cliCodeSubtitle": "Kodeværktøjer, der peger på OmniRoute", "cliAgents": "CLI-agenter", @@ -1295,7 +1295,7 @@ "dragReorderItem": "Træk for at omarrangere", "cannotHide": "Dette element kan ikke skjules", "alwaysVisible": "Altid synlig", - "groupSeparatorLabel": "Separator", + "groupSeparatorLabel": "Skillelinje", "discovery": "Opdagelse", "discoverySubtitle": "Scan udbydere for gratis adgang", "conductor": "Konduktør", @@ -1327,7 +1327,7 @@ "name": "Navn", "namePlaceholder": "Produktionsovervågning", "unnamedWebhook": "Unavngiven webhook", - "url": "Endpoint URL", + "url": "Slutpunkt-URL", "events": "Begivenheder", "allEvents": "Alle arrangementer", "secret": "Hemmelighed", @@ -1345,7 +1345,7 @@ "refresh": "Opdater", "loading": "Indlæser webhooks...", "never": "Aldrig", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {ingen fejl} one {# fejl} other {# fejl}}", "testWebhook": "Send test", "testSuccess": "Testwebhook blev sendt.", "testFailed": "Test webhook mislykkedes.", @@ -1393,7 +1393,7 @@ "empty": "Ingen leveringer registreret endnu. Udløs en begivenhed eller send a test-payload.", "status": "Status", "event": "Begivenhed", - "latency": "Latency", + "latency": "Ventetid", "at": "Sendt" }, "kinds": { @@ -1455,7 +1455,7 @@ "auditDescription": "Gennemgå overholdelseshændelser og MCP-værktøjsopkald fra én operationel visning.", "complianceTab": "Overholdelse", "mcpTab": "MCP revision", - "title": "Compliance Audit", + "title": "Overholdelsesrevision", "description": "Politik-, adgangs-, udbyder- og sikkerhedshændelser registreret af overholdelsesrevisionsloggen.", "eventType": "Begivenhedstype", "eventTypePlaceholder": "Filtrer efter handling eller begivenhedstype", @@ -1581,22 +1581,22 @@ "language": "Sprog", "providers": "Udbydere", "providerDescription": "Administrer dine AI-udbyderforbindelser", - "combos": "Combos", + "combos": "Kombinationer", "comboDescription": "Modelkombinationer med fallback", "usage": "Brug & Analytics", "usageDescription": "Overvåg dit API-brug, tokenforbrug og anmodningslogfiler", - "analytics": "Analytics", + "analytics": "Analyse", "analyticsDescription": "Diagrammer, tendenser og evalueringsindsigter", "cliTools": "CLI værktøjer", "cliToolsDescription": "Konfigurer CLI-værktøjer", "home": "Hjem", "homeDescription": "Velkommen til OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Slutpunkter", + "endpointDescription": "Administrer proxy-slutpunkter, MCP-, A2A- og API-slutpunkter", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Administration af Model Context Protocol-servere og -værktøjer", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Opgaver og observerbarhed for Agent-to-Agent-protokollen", "settings": "Indstillinger", "settingsDescription": "Administrer dine præferencer", "openaiCompatible": "OpenAI-kompatibel", @@ -1605,49 +1605,49 @@ "mediaDescription": "Generer billeder, videoer og musik", "themes": "Temaer", "themesDescription": "Vælg et farvetema til hele dashboardpanelet", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "costsDescription": "Spor udgifter, analysér tendenser, og administrer dit AI-budget på tværs af alle udbydere", + "cacheDescription": "Overvåg effektiviteten af udbydernes promptcache og lokal semantisk genbrug af svar.", + "limitsDescription": "Konfigurer hastighedsbegrænsninger og kvoter pr. API-nøgle og udbyder", + "runtimeDescription": "Løbende observerbarhed i realtid — kredsløbsafbrydere, nedkølingsperioder, modelspærringer, sessioner og kvoteadvarsler", + "apiManagerDescription": "Administrer API-nøgler og adgangskontrol for din OmniRoute-instans", + "batchDescription": "Behandl store mængder anmodninger asynkront med batchvise API-kald", + "contextCavemanDescription": "Regelbaseret meddelelseskomprimering, sprogpakker, analyse og styring af outputtilstand.", + "contextRtkDescription": "Kommandobevidst komprimering af værktøjsoutput, terminallogfiler og buildresultater.", + "contextCombosDescription": "Definer, hvordan motorer kombineres i forskellige routingscenarier.", + "changelogDescription": "Hold dig opdateret om de nyeste platformsfunktioner og meddelelser.", + "agentsDescription": "Administrer og konfigurer AI-agentværktøjer: Codex, Devin, Jules og brugerdefinerede agenter", + "cloudAgentsDescription": "Orkestrer cloudbaserede AI-agenter med løbende opgavesporing og plangodkendelse", + "memoryDescription": "Vedvarende samtalehukommelse med semantisk søgning og FTS5-fuldtekstindeksering", + "skillsDescription": "Installer og administrer sandbox-færdigheder til automatiseret kørsel af prompts og værktøjer", + "agentSkillsDescription": "Agentklart katalog over færdigheder med kopiering af URL med ét klik til integration med AI-klienter", + "translatorDescription": "Oversæt og test prompts på tværs af API-formater: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Test prompts interaktivt med live-svar fra udbydere og formatinspektion", + "searchToolsDescription": "Søgeanalyse, udbyderfordeling, cachetræfrater og omkostningssporing", + "logsDescription": "Anmodningslogfiler i realtid, fejlsporing og inspektion af streaminghændelser", + "auditDescription": "Compliance-revisionsspor for brug af API-nøgler, MCP-værktøjskald og politikhændelser", + "webhooksDescription": "Konfigurer webhook-slutpunkter til at modtage hændelsesnotifikationer i realtid", + "healthDescription": "Oversigt over systemtilstand: udbydere, kredsløbsafbrydere, hastighedsgrænser og database", + "proxyDescription": "Konfigurer indstillinger for upstream-proxy til udgående udbyderforbindelser", + "apiEndpointsDescription": "Administrer brugerdefinerede konfigurationer af API-slutpunkter og routingtilsidesættelser", + "batchFilesDescription": "Gennemse og administrer outputfiler og resultater fra batchjobs", + "analyticsEvalsDescription": "Resultater af modelevaluering og ydeevnebenchmarks", + "analyticsSearchDescription": "Analyse af søgeforespørgsler, cachetræfrater og omkostningssporing", + "analyticsUtilizationDescription": "Målinger af udbyderudnyttelse og kapacitetsplanlægning", + "analyticsComboHealthDescription": "Tilstand og ydeevne i realtid for kombinerede routingkonfigurationer", + "analyticsCompressionDescription": "Analyse af kontekstkomprimering og tokenbesparelser", + "costsBudgetDescription": "Budgetgrænser og forbrugsadvarsler pr. API-nøgle og udbyder", + "costsPricingDescription": "Brugerdefineret priskonfiguration til beregning af tokenomkostninger", + "logsProxyDescription": "Anmodningslogfiler for upstream-proxy og trafikinspektion", + "logsConsoleDescription": "Konsoloutput og fejlfindingslogfiler fra applikationen", + "logsActivityDescription": "Revisionsspor for brugerhandlinger og systemhændelser", + "auditMcpDescription": "Revisionsspor for MCP-værktøjskald og compliance-registreringer", "auditA2a": "A2A revision", "auditA2aDescription": "A2A opgaveudførelse revisionsspor, tilstandsovergange og registreringer af færdighedskald", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Tema, branding og visuel tilpasning", + "settingsAiDescription": "AI-adfærd, tænkningsbudgetter, syn og hukommelsesindstillinger", "settingsCacheDescription": "TTL for modelkatalog cacheposter", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Indstillinger for godkendelse, autorisation og adgangskontrol", "featureFlags": "Feature Flag", "featureFlagsDescription": "Styresystemfunktioner og eksperimentelle funktioner", "featureFlagsActive": "{count} aktiv", @@ -1658,7 +1658,7 @@ "featureFlagsCategorySecurity": "Sikkerhed", "featureFlagsCategoryNetwork": "Netværk", "featureFlagsCategoryPolicies": "Politikker", - "featureFlagsCategoryRuntime": "Runtime", + "featureFlagsCategoryRuntime": "Kørselstid", "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "Sundhed", "featureFlagsSourceDb": "DB", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Ingen flag matcher din søgning", "featureFlagsSaved": "Flag opdateret", "featureFlagsError": "Flag kunne ikke opdateres", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Routingregler, modelaliasser, standarder for kombinationer og indstillinger for nedgradering", + "settingsResilienceDescription": "Konfiguration af kredsløbsafbryder, nye forsøg og fallback", + "settingsAdvancedDescription": "Avancerede payloadregler, anmodningsgrænser og proxy-API-indstillinger", + "mitmProxyDescription": "Konfigurer MITM-proxyindstillinger til trafikinspektion og fejlfinding", + "oneProxyDescription": "Konfigurer 1Proxy-indstillinger til avanceret proxykædning", "omniSkillsDescription": "Installer og administrer sandbox-færdigheder til automatiseret prompt- og værktøjsafvikling" }, "cloudSyncStatus": { @@ -1691,14 +1691,14 @@ }, "breadcrumbs": { "ariaLabel": "Brødkrumme", - "dashboard": "Dashboard", + "dashboard": "Kontrolpanel", "providers": "Udbydere", "combos": "Kombinationer", "settings": "Indstillinger", "general": "Generelt", "appearance": "Udseende", "ai": "AI-indstillinger", - "routing": "Routing", + "routing": "Rutevalg", "resilience": "Robusthed", "advanced": "Avanceret", "accessTokens": "Adgangstokens", @@ -1706,9 +1706,9 @@ "logs": "Logfiler", "auditLog": "Auditlog", "console": "Konsol", - "logger": "Logger", + "logger": "Logføring", "translator": "Oversætter", - "playground": "Playground", + "playground": "Testmiljø", "add": "Tilføj", "edit": "Rediger", "apiKeys": "API-nøgler", @@ -1717,14 +1717,14 @@ "cliAgents": "CLI-agenter", "acpAgents": "ACP-agenter", "endpoint": "Endepunkt", - "apiManager": "API Manager", + "apiManager": "API-administrator", "context": "Kontekst", "compression": "Komprimering", "services": "Tjenester", "analytics": "Analyse", "costs": "Omkostninger", "health": "Sundhed", - "runtime": "Runtime", + "runtime": "Kørselsmiljø", "webhooks": "Webhooks", "home": "Hjem", "activity": "Aktivitet", @@ -1734,22 +1734,22 @@ "search": "Søg", "utilization": "Udnyttelse", "apiEndpoints": "API-endepunkter", - "audit": "Audit", + "audit": "Revision", "a2a": "A2A", "mcp": "MCP", "batch": "Batch", "files": "Filer", "media": "Medier", "cache": "Cache", - "changelog": "Changelog", + "changelog": "Ændringslog", "chaos": "Kaos", "cloudAgents": "Cloud-agenter", "live": "Live", "studio": "Studio", "aggressive": "Aggressiv", - "caveman": "Caveman", + "caveman": "Hulemand", "ccr": "CCR", - "headroom": "Headroom", + "headroom": "Råderum", "lite": "Lite", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", @@ -1762,17 +1762,17 @@ "discovery": "Opdagelse", "freeProviderRankings": "Rangliste over gratis udbydere", "radar": "Radar", - "setup": "Setup", + "setup": "Opsætning", "freeTiers": "Gratis niveauer", "gamification": "Gamificering", - "leaderboard": "Leaderboard", + "leaderboard": "Rangliste", "limits": "Grænser", "profile": "Profil", "plugins": "Plugins", "providerStats": "Udbyderstatistik", "new": "Ny", "quota": "Kvote", - "relay": "Relay", + "relay": "Relæ", "searchTools": "Søgeværktøjer", "security": "Sikkerhed", "sidebar": "Sidebjælke", @@ -1812,7 +1812,7 @@ "reportIssue": "Rapportér problem", "activeError": "{active} aktiv · {errors} fejl", "topologyLegendActive": "Aktiv", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Seneste", "topologyLegendError": "Fejl", "oauthLabel": "OAuth", "apiKeyLabel": "API nøgle", @@ -1826,16 +1826,16 @@ "updateStarted": "Opdatering startet...", "reloadingPageAutomatically": "Genindlæser siden automatisk...", "providerTopology": "Udbydertopologi", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", - "downloadDmg": "Download DMG (macOS)", + "recentRequests": "Seneste anmodninger", + "recentRequestsEmpty": "Ingen anmodninger endnu.", + "recentRequestsModel": "Model", + "recentRequestsTokens": "Ind / ud", + "recentRequestsWhen": "Hvornår", + "downloadDmg": "Hent DMG (macOS)", "downloadDmgDescription": "En ny version af OmniRoute desktopappen er tilgængelig. Download og installer venligst macOS DMG-installationsprogrammet for at opdatere (nuværende: v{version}).", - "downloadExe": "Download EXE (Windows)", + "downloadExe": "Hent EXE (Windows)", "downloadExeDescription": "En ny version af OmniRoute desktop-appen er tilgængelig. Download og installer venligst Windows EXE-installationsprogrammet for at opdatere (nuværende: v{version}).", - "downloadAppImage": "Download AppImage (Linux)", + "downloadAppImage": "Hent AppImage (Linux)", "downloadAppImageDescription": "En ny version af OmniRoute desktop-appen er tilgængelig. Download venligst Linux AppImage-pakken for at opdatere (nuværende: v{version}).", "downloadUpdate": "Download Opdatering", "downloadUpdateDescription": "En ny version af OmniRoute desktop-appen er tilgængelig. Download venligst det respektive app-format til dit system for at opdatere (aktuel: v{version}).", @@ -1888,18 +1888,18 @@ "releaseNotes": "Udgivelsesnoter", "readMore": "Læs Mere", "noAuthLabel": "Ingen godkendelse", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Gør klar til at dirigere", + "readinessTitle": "Send din første anmodning", + "readinessSubtitle": "Fire små trin. OmniRoute kontrollerer undervejs, om alt er klar.", + "readinessStep1": "Forbind en udbyder", + "readinessStep2": "Konfigurer godkendelse af slutpunkt", + "readinessStep3": "Kopiér dit slutpunkt", + "readinessStep4": "Send en testanmodning", + "readinessContinue": "Fortsæt opsætningen", + "readinessDismiss": "Afvis indtil videre" }, "analytics": { - "title": "Analytics", + "title": "Analyse", "usageAnalyticsTitle": "Forbrugsanalyser", "diversityScoreTitle": "Udbyder mangfoldighed", "diversityScoreDesc": "Øjebliksbillede af udbyderkoncentration for det seneste trafikvindue.", @@ -1914,7 +1914,7 @@ "chartRequests": "Anmodninger", "chartInput": "Input", "chartOutput": "Output", - "chartTotal": "Total", + "chartTotal": "I alt", "chartCost": "Omkostninger", "chartShare": "Andel", "chartServiceTier": "Serviceniveau", @@ -1967,7 +1967,7 @@ "period7D": "7D", "period30D": "30D", "period90D": "90D", - "periodYTD": "YTD", + "periodYTD": "ÅTD", "periodAll": "Alle", "totalTokens": "Tokens i alt", "inputTokens": "Input-tokens", @@ -1993,7 +1993,7 @@ "overviewDescription": "Overvåg dine API-brugsmønstre, tokenforbrug, omkostninger og aktivitetstendenser på tværs af alle udbydere og modeller.", "evalsDescription": "Kør evalueringspakker for at teste og validere dine LLM-endepunkter. Sammenlign modelkvalitet, detekter regressioner og benchmark-forsinkelse.", "overview": "Oversigt", - "evals": "Evals", + "evals": "Evalueringer", "search": "Søg", "utilization": "Udnyttelse", "routeTrace": "Rutesporing", @@ -2005,12 +2005,12 @@ "modelStatusError": "Fejl", "comboHealth": "Kombosundhed", "comboHealthDescription": "Komboniveaudkvote, fordeling af brug og ydeevnemålinger", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Komprimeringsanalyse", + "compressionAnalyticsDescription": "Komprimeringsanalyse — tokenbesparelser, fordeling efter tilstand og udbyderstatistik.", "autoRoutingTotalAutoRequests": "Samlede automatiske anmodninger", "autoRoutingAvgSelectionScore": "Gns. selektionsscore", "autoRoutingExplorationRate": "Efterforskningshastighed", - "autoRoutingLkgpHitRate": "LKGP Hit Rate", + "autoRoutingLkgpHitRate": "LKGP-træfrate", "autoRoutingRequestsByVariant": "Forespørgsler efter variant", "autoRoutingTopRoutedProviders": "Top-rutede udbydere", "comboHealthWorstQuotaLeft": "Værste kvote tilbage", @@ -2023,7 +2023,7 @@ "comboHealthTotalRequests": "Samlet antal anmodninger", "comboHealthExecutionTargets": "Udførelsesmål", "comboHealthSuccess": "Succes", - "comboHealthLatency": "Latency", + "comboHealthLatency": "Svartid", "comboHealthQuota": "Kvote", "comboHealthTitle": "Kombineret sundhed", "comboHealthUnableToLoad": "Kan ikke indlæse combo-sundhed", @@ -2042,7 +2042,7 @@ "comboHealthTraffic": "trafik", "comboHealthProjectedQuota": "Projekteret kvote", "comboHealthPricingCoverage": "Prisdækning", - "comboHealthAutopilotTitle": "Combo Health Autopilot", + "comboHealthAutopilotTitle": "Autopilot for kombinationsstatus", "comboHealthAutopilotDescription": "Prioriterede anbefalinger fra combo-sundhed, prognoser, kvoter og udbydersundhed.", "comboHealthIssues": "Problemer", "comboHealthActionable": "{count} der kræver handling", @@ -2059,17 +2059,17 @@ "quota": "Kvote", "health": "Sundhed", "costInv": "Omkostning", - "latencyInv": "Latency", - "taskFit": "Task fit", + "latencyInv": "Svartid", + "taskFit": "Opgaveegnethed", "stability": "Stabilitet", - "tierPriority": "Tier", - "tierAffinity": "Tier fit", + "tierPriority": "Niveau", + "tierAffinity": "Niveauegnethed", "specificityMatch": "Specificitet", "contextAffinity": "Kontekst", "resetWindowAffinity": "Nulstillingsvindue" }, "comboHealthQuotaValue": "Kvote {value}", - "comboHealthLatencyValue": "Latency {value}ms", + "comboHealthLatencyValue": "Svartid {value} ms", "comboHealthIssueCount": "Problemer {count}", "comboHealthNoInspectableTargets": "Ingen inspicerbare mål for denne combo.", "comboHealthAutopilotState": { @@ -2092,9 +2092,9 @@ "comboHealthPerformance": "Ydeevne", "comboHealthPerformanceDescription": "Pålidelighed og gennemstrømning for dirigeret combo-trafik.", "comboHealthExecutionTargetsDescription": "Kørselstidsmetrikker på trinniveau og kvotesynlighed for strukturerede combo-mål.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} anm.", "comboHealthQuotaScope": "Kvoteområde: {scope}", - "comboHealthTrendValue": "Trend: {trend}", + "comboHealthTrendValue": "Tendens: {trend}", "comboHealthFetchFailed": "Kunne ikke hente sundhedsdata for combo", "unknownError": "Ukendt fejl", "comboHealthIntro": "Overvåg kvotepres, skæv modelbrug og leveringsydeevne efter combo.", @@ -2110,7 +2110,7 @@ "compressionAnalyticsAvgSavings": "Gnsn. besparelse", "compressionAnalyticsAvgDuration": "Gns. varighed", "compressionAnalyticsReceipts": "Kvitteringer", - "compressionAnalyticsFallbacks": "Fallbacks", + "compressionAnalyticsFallbacks": "Reserveløsninger", "compressionAnalyticsPromptTokens": "Spørg tokens", "compressionAnalyticsCompletionTokens": "Fuldførelsestokens", "compressionAnalyticsTotalTokens": "Samlede tokens", @@ -2188,7 +2188,7 @@ "routeRuntimeScoreNow": "Runtime-score nu", "routeWouldSelectNow": "Ville vælge nu", "routeNoRecomputeCandidates": "Ingen rangering af combo-kandidater kan genberegnes for denne anmodning.", - "runtime": "Runtime", + "runtime": "Kørselstid", "routeTopNow": "Top nu", "routeFetchLogsFailed": "Kunne ikke hente anmodningslogs", "routeExplainFailed": "Kunne ikke forklare rute", @@ -2207,7 +2207,7 @@ "model": "Model", "account": "Konto", "connection": "Forbindelse", - "combo": "Combo", + "combo": "Kombination", "routeStep": "Trin", "tokens": "Tokens", "notAvailable": "i/t", @@ -2258,9 +2258,9 @@ "fullAccess": "Fuld adgang", "keyManagement": "API nøglestyring", "keyManagementDesc": "Opret og administrer API-nøgler til godkendelse af anmodninger til dit slutpunkt", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Din app sender anmodninger via en API-nøgle til OmniRoute", + "requestFlowYourApp": "Din app", + "requestFlowApiKey": "API-nøgle", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Totalnøgler", "restricted": "Begrænset", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Kopiér og gem denne nøgle nu – den vises ikke igen.", "done": "Færdig", "savePermissions": "Gem tilladelser", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Tilladte endpoints", + "allEndpointsAllowed": "Denne nøgle har adgang til alle API-endpoints.", + "endpointsRestricted": "Begrænset til {count} endpoint{count, plural, one {} other {s}}.", + "autoResolve": "Automatisk fortolkning", + "autoResolveDesc": "Fortolk automatisk tvetydige modelnavne som den oprindelige udbyder for denne API-nøgle.", "streamDefaultMode": "Standardkompatibilitet for streaming", "streamDefaultModeDesc": "Styrer udeladte `stream`-flag for denne nøgle. JSON-tilstand returnerer ikke-streamende svar, medmindre klienten eksplicit anmoder om SSE.", - "streamDefaultLegacy": "Legacy", + "streamDefaultLegacy": "Ældre", "streamDefaultJson": "JSON-kompatibel", "streamDefaultBadge": "JSON-streamstandard", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Nøgle aktiv", + "keyActiveDesc": "Aktivér eller deaktiver denne API-nøgle. Deaktiverede nøgler afvises straks med 403.", + "accessSchedule": "Adgangsplan", + "accessScheduleDesc": "Begræns adgang til bestemte tidspunkter og ugedage.", + "scheduleFrom": "Fra", + "scheduleUntil": "Til", + "scheduleDays": "Dage", + "scheduleTimezone": "Tidszone", + "scheduleTimezoneHint": "Brug IANA-tidszonenavne, f.eks. America/New_York, Europe/Berlin", + "scheduleActive": "Tidsplan", + "disabled": "Deaktiveret", + "daySun": "Søn", + "dayMon": "Man", + "dayTue": "Tir", + "dayWed": "Ons", + "dayThu": "Tor", + "dayFri": "Fre", + "daySat": "Lør", "allowAll": "Tillad alle", "restrict": "Begræns", "allowAllInfo": "Denne nøgle kan få adgang til alle tilgængelige modeller.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Kunne ikke opdatere tilladelser. Prøv venligst igen.", "unknownProvider": "ukendt", "copyMaskedKey": "Kopiér maskeret nøgle", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Den fulde nøgle er kun tilgængelig ved oprettelsen — kopiér den, når du opretter nøglen første gang", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# enhed} other {# enheder}}", "devicesTooltip": "{count, plural, one {# unik IP/User-Agent-enhed set med denne nøgle (sidste 30 min)} other {# unikke IP/User-Agent-enheder set med denne nøgle (sidste 30 min)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Tilladte kombinationer", "allCombosAllowed": "Denne nøgle kan bruge enhver kombination.", "restrictedComboCount": "Begrænset til {count, plural, one {# kombination} other {# kombinationer}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# gemt post er} other {# gemte poster er}} ikke på denne kombinationsliste (f.eks. routingregler) og bevares som gemt.", + "preservedComboRuleHint": "Bevares som gemt. Denne post er ikke en kombination på listen ovenfor og kan derfor kun ændres via API'et.", "apiManagerCustomRateLimits": "Brugerdefinerede satsgrænser", "apiManagerCustomRateLimitsDesc": "Tilsidesæt globale standardgrænser. Lad være tom for at bruge standardindstillinger.", "apiManagerRateLimitRequestsPlaceholder": "Forespørgsler", @@ -2419,15 +2419,15 @@ "bypassProviderQuota": "Omgå udbyderens kvotegrænser", "bypassProviderQuotaDescription": "Tillader denne nøgle at ignorere upstream-udbyderens/kontoens grænsepolitik under routing. API-nøglens USD-kvoter gælder stadig.", "quotaPill": "KVOTE", - "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "quotaModeOnly": "Kun qtSd", + "exclusiveLease": "Eksklusiv leje", + "exclusiveLeaseNoticeTitle": "Eksklusiv leje", + "exclusiveLeaseNoticeDesc": "Denne API-nøgle har eksklusive lejerettigheder til dedikeret forbindelsesrouting.", + "allConnections": "Alle forbindelser", + "onlySelectedConnections": "Kun valgte forbindelser", + "selectAtLeastOneConnection": "Vælg mindst én forbindelse, eller vælg Alle forbindelser.", + "allConnectionsDesc": "Denne nøgle kan bruge enhver aktiv forbindelse.", + "restrictedToConnections": "Begrænset til {count, plural, one {# forbindelse} other {# forbindelser}}." }, "auditLog": { "title": "Revisionslog", @@ -2457,16 +2457,16 @@ "model": "Model", "prompt": "Prompt", "generate": "Generer", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Genererer...", + "loadingModels": "Indlæser tilgængelige modeller...", + "noModels": "Ingen modeller er tilgængelige. Konfigurer først udbydere med mediefunktioner.", + "error": "Generering mislykkedes", + "result": "Resultat", + "imageDescription": "Generer billeder ud fra tekstprompter med OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI og flere.", + "videoDescription": "Opret videoer med AnimateDiff, Stable Video Diffusion via ComfyUI eller SD WebUI.", + "musicDescription": "Komponer musik med Stable Audio Open eller MusicGen via ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Indlejring", "image": "Billede", "imageToText": "Billede til tekst", "tts": "Tekst til tale", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter tale-til-tekst modeller bruger din konfigurerede OpenRouter forbindelse. Ingen separate legitimationsoplysninger er nødvendige." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Søgeforespørgsel", + "searchResults": "Søgeresultater", + "cachedResult": "Cachelagret", + "searchCost": "Pris", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Avanceret søgetest med sammenligning af udbydere", + "compareProviders": "Sammenlign udbydere", + "rerankResults": "Omrangér resultater", + "searchHistory": "Søgehistorik", + "urlOverlap": "URL-overlap", + "noSearchProviders": "Ingen søgeudbydere er konfigureret. Tilføj udbydere under Indstillinger.", + "noRerankModels": "Ingen model til omrangering er tilgængelig", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Udbyder", + "searchType": "Søgetype", + "maxResults": "Maks. antal resultater", + "filters": "Filtre", + "country": "Land", + "language": "Sprog", + "timeRange": "Tidsinterval", + "includeDomains": "Inkluder domæner", + "excludeDomains": "Ekskluder domæner", + "safeSearch": "Sikker søgning", + "safeSearchOff": "Fra", + "safeSearchModerate": "Moderat", + "safeSearchStrict": "Streng", + "queryPlaceholder": "Indtast søgeforespørgsel...", + "providerAuto": "automatisk (billigst)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "nyheder", + "optionAny": "alle", + "timeRangeDay": "Seneste døgn", + "timeRangeWeek": "Seneste uge", + "timeRangeMonth": "Seneste måned", + "timeRangeYear": "Seneste år", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Anmodningen fik timeout ({seconds}s)", + "networkError": "Netværksfejl", + "formatted": "Formateret", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "ikke fundet i cache", + "cacheHit": "fundet i cache", + "latency": "Svartid", + "cost": "Pris", + "results": "Resultater", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Model til omrangering", + "positionDelta": "Ændring i placering", + "emptyState": "Send en søgeforespørgsel for at se resultater", "copy": "Kopiér", "resetToDefault": "Nulstil til standard", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Søg", + "tabScrape": "Skrab", + "tabCompare": "Sammenlign", + "modalitiesGuide": "Guide til modaliteter", + "searchConceptTitle": "Søgning", + "searchConceptDesc": "Søgning = henter en liste over webresultater (titel, URL, uddrag, relevansscore)", + "scrapeConceptTitle": "Skrabning", + "scrapeConceptDesc": "Skrabning = udtrækker hele indholdet fra en URL (markdown, tekst eller HTML)", + "compareConceptTitle": "Sammenligning", + "compareConceptDesc": "Sammenligning = kører den samme forespørgsel hos N udbydere side om side for at sammenligne svartid, pris og overlap mellem resultater", + "rerankConceptTitle": "Omrangering", + "rerankConceptDesc": "Omrangering = ændrer rækkefølgen af resultater via LLM for at forbedre relevansen baseret på forespørgslen", + "autoConceptTitle": "Automatisk (billigst)", + "autoConceptDesc": "Automatisk (billigst) = vælger automatisk den billigste tilgængelige udbyder med konfigurerede legitimationsoplysninger", + "providerCatalogTitle": "Udbyderkatalog", + "kindSearch": "Søg", + "kindFetch": "Hent/skrabe", + "statusConfigured": "Konfigureret", + "statusMissing": "Ingen legitimationsoplysninger", + "statusRateLimited": "Hastighedsbegrænset", + "configureProvider": "Konfigurer under Udbydere", + "loadingProviders": "Indlæser udbydere…", + "failedToLoadProviders": "Kunne ikke indlæse udbydere", + "costPerQuery": "Pris/forespørgsel", + "freeQuota": "Gratis kvote/md.", + "scrapeUrl": "URL, der skal skrabes", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL er påkrævet", "scrapeUrlInvalid": "Ugyldig URL — den skal starte med http:// eller https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", + "scrapeExtract": "Udtræk", + "scrapeExtracting": "Udtrækker…", + "scrapeFullPage": "Hele siden", "scrapeFormat": "Format", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", + "formatText": "Tekst", + "scrapePreview": "Forhåndsvisning", + "scrapeRaw": "Rådata", + "scrapeContentTruncated": "(afkortet, se rådata)", "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "scrapeProvider": "Udbyder", + "scrapeSize": "Størrelse", "scrapeEmptyState": "Indtast en URL for at udtrække dens indhold", "scrapeProvidersAvailable": "Tilgængelige udbydere: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", + "compareRun": "Sammenlign", + "compareRunning": "Sammenligner…", + "autoProvider": "Auto (billigst)", + "configuredStatus": "Konfigureret", + "rateLimitedStatus": "Hastighedsbegrænset", + "noCredential": "Ingen legitimationsoplysninger", "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "rerankModelLabel": "Genrangeringsmodel", + "noneOption": "Ingen", + "size": "Størrelse", "configurationPane": "Konfigurationspanel", "configuration": "Konfiguration", "status": "Status", @@ -2664,7 +2664,7 @@ "httpError": "Fejl {status}", "failed": "Mislykkedes", "requestFailed": "Anmodning mislykkedes", - "embedding": "Embedding", + "embedding": "Indlejring", "embeddingSample": "Hej, verden!", "image": "Billede", "imageSample": "Et fredfyldt landskab med bjerge ved solnedgang", @@ -2708,7 +2708,7 @@ "classifierCompatLoadFailed": "Kunne ikke indlæse indstilling", "classifierCompatMode": { "off": "Fra", - "auto": "Auto", + "auto": "Automatisk", "always": "Altid" }, "ccDiscoveryInfoButton": "Sådan aktiveres opdagelse i Claude Code", @@ -2741,7 +2741,7 @@ "effortMedium": "Mellem", "effortHigh": "Høj", "effortExtraHigh": "Ekstra høj", - "effortMax": "Max", + "effortMax": "Maks.", "effortUltra": "Ultra", "wireApi": "Wire API", "modelAliases": "Modelaliasser", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Tilføj", "antigravityStep2Suffix": "til din hosts-fil som 127.0.0.1.", "antigravityStep3": "3. Åbn Antigravity og anmodninger vil blive fuldført.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} sender anmodninger til sit provider-slutpunkt. MITM opfanger og omdirigerer dem til OmniRoute.", + "mitmStep1": "1. Start MITM for at dirigere anmodninger gennem OmniRoute.", + "mitmStep2Prefix": "2. Føj", + "mitmStep2Suffix": "til din hosts-fil som 127.0.0.1.", + "mitmStep3": "3. Åbn {toolName}, hvorefter anmodningerne videresendes via proxy.", "sudoPasswordRequiredTitle": "Sudo-adgangskode påkrævet", "sudoPasswordHint": "Administratoradgangskode er påkrævet for at ændre værtsfil- og systemproxyindstillinger.", "enterSudoPassword": "Indtast sudo adgangskode", @@ -2869,7 +2869,7 @@ "provider": "Udbyder", "model": "Model", "providers": "Udbydere", - "auth": "Auth", + "auth": "Godkendelse", "noApiKeysAvailable": "Ingen tilgængelige API-nøgler", "usingDefaultOmniroute": "Bruger standard: sk_omniroute", "updateConfig": "Opdater konfiguration", @@ -2908,7 +2908,7 @@ "continue": "Brug, når du kører Continue i IDE'er, og du har brug for bærbar JSON-baseret udbyderkonfiguration.", "opencode": "Brug, når du foretrækker terminal-native agentkørsler og scriptet automatisering via OpenCode.", "kiro": "Bruges ved integration af Kiro og styring af modelrouting centralt fra OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Brug dette, når du ønsker et AI-fokuseret IDE med Codeium/Windsurf-modeller dirigeret gennem OmniRoute.", "antigravity": "Bruges, når Antigravity/Kiro-trafik skal opsnappes gennem MITM og dirigeres til OmniRoute.", "copilot": "Brug, når du ønsker Copilot-chatstil UX, mens du håndhæver OmniRoute-nøgler og routingregler.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2921,18 +2921,18 @@ "claude": "Antropisk Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "xAI Grok Build TUI-kodningsagent med understøttelse af brugerdefineret udbyder", - "droid": "Factory Droid AI Assistant", + "droid": "Factory Droid AI-assistent", "openclaw": "Åbn Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", + "cline": "Cline AI-kodningsassistent til CLI", "kilo": "Kilokode AI Assistant CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", "continue": "Fortsæt AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode AI-kodningsagent (terminal)", + "kiro": "Amazon Kiro — AI-drevet IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "Sourcegraph Amp-kodningsassistent til CLI", "hermes": "Hermes AI terminalassistent", "hermes-agent": "Hermes Agent (af Nousresearch) - Avanceret terminal-AI med understøttelse af flere modeller (delegation, vision, komprimering osv.)", "custom": "Generisk OpenAI-kompatibel CLI- eller SDK-konfigurationsgenerator", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter autonom kodningsagent-CLI", "omp": "Oh My Pi terminal-kodningsagent", "letta": "Letta CLI-agent med persistent hukommelse og brug af værktøjer", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — selvforbedrende RLM-kodningsramme med understøttelse af OpenAI-kompatible providere", "warp": "Warp AI-terminal med understøttelse af brugerdefineret udbyder", "agent-deck": "Agent Deck multi-agent-orkestrator", "5dive": "5dive — selv-hostet flåde af kodningsagenter; én auth-profil peger dem alle mod OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Installer OpenCode", + "desc": "Installer via npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API-nøgle" }, "3": { - "title": "Set Base URL", + "title": "Angiv basis-URL", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Vælg model" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Brug tænkningsvariant", + "desc": "For tænkningsmodeller skal du køre med --variant high/low/max (se eksempelkommandoen nedenfor)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Åbn Kiro-indstillinger", + "desc": "Gå til Indstillinger → AI-provider" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Basis-URL", + "desc": "Indsæt URL'en til dit OmniRoute-slutpunkt" }, "3": { - "title": "API Key" + "title": "API-nøgle" }, "4": { - "title": "Select Model" + "title": "Vælg model" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Åbn AI-indstillinger", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Tilføj brugerdefineret provider", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Basis-URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API-nøgle", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Vælg model", + "desc": "Vælg en model i rullemenuen" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Brugerdefineret CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Værktøjskategorier", "visibleToolsCount": "{count} tilgængelige værktøjer", "customCliBuilderTitle": "OpenAI-kompatibel CLI-bygger", "customCliBuilderDescription": "Generer env vars og JSON-uddrag for enhver CLI eller SDK, der accepterer en OpenAI-kompatibel basis-URL, API-nøgle og model-id.", @@ -3102,7 +3102,7 @@ "customCliTargetModelLabel": "Målmodel", "customCliEndpointHintLabel": "Sådan tilsluttes endepunktet", "customCliEndpointHint": "Peg enhver OpenAI-kompatibel klient til OmniRoute /v1-basis-URL'en. Slutpunktet for fuldførelse af rå chat er {endpoint}. Brug JSON-blokken, når værktøjet ønsker et udbyderobjekt, eller env-scriptet, når det læser OPENAI_*-variabler.", - "customCliEnvBlockTitle": "Env / shell snippet", + "customCliEnvBlockTitle": "Miljø-/shell-kodestykke", "customCliJsonBlockTitle": "Udbyder JSON blok", "networkError": "Netværksfejl", "other": "Andet", @@ -3112,7 +3112,7 @@ "hermesRoleDefaultDesc": "Primær samtalemodel", "hermesRoleDelegation": "Delegation (subagenter)", "hermesRoleDelegationDesc": "Orkestrator- og underagentmodel", - "hermesRoleVision": "Vision", + "hermesRoleVision": "Billedforståelse", "hermesRoleVisionDesc": "Billed- og skærmbilledeforståelse", "hermesRoleCompression": "Komprimering", "hermesRoleCompressionDesc": "Prompt-komprimering og opsummering", @@ -3130,9 +3130,9 @@ "hermesRoleMemoryQueryRewriteDesc": "Hukommelsessøgning forespørgselsomskrivning", "hermesRoleTtsAudioTags": "TTS Lyd Tags", "hermesRoleTtsAudioTagsDesc": "TTS lydtaggenerering", - "hermesRoleTriageSpecifier": "Triage Specifier", + "hermesRoleTriageSpecifier": "Triage-specifikator", "hermesRoleTriageSpecifierDesc": "Specifikation for issue- og PR-triage", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Kanban-dekomponering", "hermesRoleKanbanDecomposerDesc": "Kanban opgave nedbrydning", "hermesRoleProfileDescriber": "Profilbeskriver", "hermesRoleProfileDescriberDesc": "Brugerprofilbeskrivelse", @@ -3159,7 +3159,7 @@ "hermesRolesWillUpdate": "{count, plural, one {# rolle vil blive opdateret} other {# roller vil blive opdateret}}", "hermesPreviewPath": "Forhåndsvisning — vil skrive til ~/.hermes/config.yaml", "hermesSaveDescription": "Gemmer den valgte model for hver rolle i", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "GitHub Copilot-konfigurationsgenerator", "copilotGeneratorDescriptionPrefix": "Genererer", "copilotGeneratorDescriptionSuffix": "blokken til VS Code GitHub Copilot ved hjælp af Azure-leverandørmønsteret. Vælg de modeller, du ønsker, og kopier derefter JSON-koden ind i din konfigurationsfil.", "copilotCompatibilityWarning": "Denne konfiguration bruger Azure-leverandøromvejen til brugerdefinerede modellister. Testet med VS Code ≥ 1.109 og GitHub Copilot Chat ≥ v0.37. Fremtidige opdateringer af udvidelser kan ændre denne adfærd.", @@ -3168,7 +3168,7 @@ "selectAll": "Vælg alle", "loadingModels": "Indlæser modeller...", "advancedOptions": "Avancerede indstillinger", - "vision": "Vision", + "vision": "Syn", "copilotCopyConfigForModels": "Kopier konfiguration ({count, plural, one {# model} other {# modeller}})", "copilotFilterModelsPlaceholder": "Filter modeller...", "copilotMaxInputTokens": "Max input-tokens", @@ -3177,7 +3177,7 @@ "copilotPasteInto": "Indsæt i:", "copilotReloadInstruction": "Genstart derefter VS Code, og angiv API-nøglen i inputfeltet.", "wireApiChatCompletions": "Chatafslutninger (/chat/afslutninger)", - "wireApiResponses": "Responses API (/responses)", + "wireApiResponses": "Svar-API (/responses)", "cliproxyapiActionFailed": "Handlingen mislykkedes", "cliproxyapiActionSucceeded": "Handlingen lykkedes", "cliproxyapiCheckUpdates": "Tjek Opdateringer", @@ -3203,7 +3203,7 @@ "cliproxyapiVersion": "Version" }, "combos": { - "title": "Combos", + "title": "Kombinationer", "description": "Skab modelkombinationer med vægtet routing og fallback-understøttelse", "autoCatalogTitle": "Auto-routing katalog", "autoCatalogTemplateCount": "{count} skabeloner", @@ -3219,10 +3219,10 @@ "addModelToCombo": "Tilføj Model til Combo", "routingStrategy": "Rutestrategi", "maxRetries": "Max forsøger igen", - "timeout": "Timeout (ms)", + "timeout": "Tidsgrænse (ms)", "healthcheck": "Sundhedstjek", "priority": "Prioritet", - "fallback": "Fallback", + "fallback": "Reserve", "roundRobin": "Round Robin", "random": "Tilfældig", "leastLatency": "Mindst latenstid", @@ -3251,7 +3251,7 @@ "copyComboName": "Kopiér kombinationsnavnet", "enableCombo": "Aktiver kombination", "disableCombo": "Deaktiver kombination", - "testCombo": "Test combo", + "testCombo": "Test kombination", "duplicate": "Duplikat", "proxyConfig": "Proxy konfiguration", "nameRequired": "Navn er påkrævet", @@ -3260,18 +3260,18 @@ "priorityDesc": "Sekventiel fallback: prøver model 1 først, derefter 2 osv.", "weightedDesc": "Fordeler trafik efter vægtprocent med fallback", "roundRobinDesc": "Cirkulær fordeling: hver anmodning går til den næste model i rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Kontekstoverførsel", + "contextRelayDesc": "Bevarer kontinuiteten i sessionen med overdragelsesresuméer, når der skiftes mellem konti", "randomDesc": "Ensartet tilfældig udvælgelse, derefter tilbagevenden til de resterende modeller", "leastUsedDesc": "Vælger modellen med færrest anmodninger, balancerer belastningen over tid", "costOptimizedDesc": "Ruter til den billigste model først baseret på priser", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Dirigerer konsekvent hvert genanvendeligt promptpræfiks til den samme udbyderkonto", + "resetAware": "Nulstillingsbevidst RR", "resetAwareDesc": "Afbalancerer resterende kvote mod 5 timer og ugentlige nulstillinger, og runder derefter lignende resultater", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kvotevægtet", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Strengt tilfældig", + "strictRandomDesc": "Bland kortene — bruger hver model én gang, før der blandes igen", "fusion": "Fusion", "fusionDesc": "Fordeler prompten til alle panelmodeller parallelt, hvorefter en dommermodel syntetiserer ét endeligt svar", "fusionJudgeModel": "Dommermodel", @@ -3283,18 +3283,18 @@ "fusionPanelHardTimeoutMs": "Hård timeout for panel (ms)", "fusionPanelHardTimeoutMsHelp": "Absolut grænse, så en fastlåst model ikke kan bremse hele panelet (standard 90000).", "models": "Modeller", - "autoBalance": "Auto-balance", + "autoBalance": "Automatisk balancering", "advancedSettings": "Avancerede indstillinger", "retryDelay": "Forsinkelse af forsøg igen (ms)", "concurrencyPerModel": "Samtidighed / Model", "queueTimeout": "Timeout for kø (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Overdragelsestærskel", + "contextRelayHandoffThresholdHelp": "Når kvoteforbruget når denne tærskel, genererer OmniRoute et struktureret overdragelsesresumé, før den aktive konto er opbrugt.", + "contextRelayMaxMessages": "Maks. antal beskeder til resumé", + "contextRelayMaxMessagesHelp": "Begrænser, hvor meget af den seneste historik der sammenfattes i overførselsresuméet.", + "contextRelaySummaryModel": "Resumémodel", + "contextRelaySummaryModelHelp": "Valgfri tilsidesættelsesmodel, der kun bruges til at generere overdragelsesresuméet. Lad feltet stå tomt for at genbruge den aktive kombinationsmodel.", + "contextRelayProviderNote": "Kontekstoverførsel genererer i øjeblikket overdragelser ved rotation af Codex-konti. Kombiner den med flere konti fra samme udbyder for at opnå den bedste kontinuitet.", "advancedHint": "Lad være tom for at bruge globale standardindstillinger. Disse tilsidesætter indstillinger for hver udbyder.", "failoverBeforeRetry": "Failover før forsøg igen", "maxSetRetries": "Max sæt forsøg igen", @@ -3335,7 +3335,7 @@ "playgroundStrategy": "Strategi", "playgroundEstimatedCost": "Est. omkostning", "playgroundEstimatedLatency": "Est. latens", - "playgroundFallback": "fallback", + "playgroundFallback": "reserve", "playgroundWeight": "vægt {value}", "playgroundWarningCount": "Advarsler ({count})", "playgroundErrorCount": "Fejl ({count})", @@ -3344,7 +3344,7 @@ "playgroundCreateFirst": "Opret en først", "weighted": "Vægtet", "leastUsed": "Mindst brugt", - "costOpt": "Cost-Opt", + "costOpt": "Omkostningsoptimeret", "strategyGuideTitle": "Sådan bruger du denne strategi", "strategyGuideWhen": "ANVENDELSE", "strategyGuideAvoid": "Undgå når", @@ -3386,19 +3386,19 @@ "example": "Foretrækker en 60 % ugentlig kontonulstilling i morgen frem for en 80 % kontonulstilling senere." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Brug denne, når du ønsker en helt jævn fordeling — hver model bruges én gang, før nogen gentages.", + "avoid": "Undgå denne, når modeller har forskellig kvalitet eller latenstid, og rækkefølgen er vigtig.", + "example": "Eksempel: Flere konti med den samme model for at fordele brugen jævnt." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Brug denne, når du ønsker valg med lav latenstid ved hjælp af Power-of-Two-Choices-algoritmen.", + "avoid": "Undgå denne til små kombinationer med 2 eller færre modeller — ingen fordel i forhold til round-robin.", + "example": "Eksempel: Inferens med høj kapacitet på tværs af 4+ tilsvarende modelslutpunkter." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Brug denne, når lange sessioner skal overleve kontorotation uden at miste arbejdskonteksten.", + "avoid": "Undgå denne, når der sjældent skiftes konto, eller når du ikke ønsker ekstra forespørgsler om opsummering.", + "example": "Eksempel: Codex-sessioner, der roterer mellem flere konti, når kvoten er tæt på at være opbrugt." }, "fill-first": { "when": "Bruges, når du vil opbruge en udbyders kvote fuldt ud, før du går videre til den næste.", @@ -3459,12 +3459,12 @@ "warningRoundRobinSingleModel": "Round-robin er mest nyttig med mindst 2 modeller.", "warningCostOptimizedPartialPricing": "Kun {priced} af {total}-modeller har priser. Routing kan være delvist omkostningsbevidst.", "warningCostOptimizedNoPricing": "Der blev ikke fundet nogen prisdata for denne kombination. Omkostningsoptimeret kan rute uventet.", - "filterAll": "All", + "filterAll": "Alle", "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterDeterministic": "Deterministisk", + "filterEmptyTitle": "Ingen kombinationer matcher dette strategifilter.", + "filterEmptyIntelligentDescription": "Opret en automatisk kombination eller en LKGP-kombination for at udfylde dashboardet for intelligent routing.", + "filterEmptyDeterministicDescription": "Der findes kun automatiske kombinationer og LKGP-kombinationer lige nu. Skift tilbage til Alle, eller opret en deterministisk kombination.", "readinessTitle": "Klar til at spare?", "readinessDescription": "Gennemgå tjeklisten, før du opretter eller opdaterer denne kombination.", "readinessCheckName": "Kombinationsnavnet er gyldigt", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Tilføj mindst én model.", "saveBlockWeighted": "Indstil vægte til 100 % (aktuelt: {total}%).", "saveBlockPricing": "Tilføj priser for mindst én model, eller vælg en anden strategi.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Anbefalet opsætning", + "applyRecommendations": "Anvend anbefalinger", + "recommendationsUpdated": "Anbefalingerne er opdateret for {strategy}.", + "recommendationsApplied": "Anbefalingerne er anvendt på denne kombination.", + "intelligentPanelTitle": "Dashboard for intelligent routing", + "intelligentPanelDesc": "Scoring i realtid og sundhedsstatus for denne kombination med automatisk routing.", "configOnlyStatus": "Konfigurationsvisning", "configOnlyHint": "Dette panel viser kun rute-input. Live-afbryderstatus er tilgængelig på Health-siden.", "routingInputs": "Rute-input", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Ukendt udbyderpræfiks.", "builderDynamicAccountShort": "Dynamisk konto", "builderNeedValidName": "Definer et gyldigt kombinationsnavn, før du fortsætter.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Statusoversigt", + "normalOperation": "Normal drift", + "allProvidersHealthy": "Udbyderne rapporterer om velfungerende routingforhold.", + "incidentMode": "Hændelsestilstand", + "highCircuitBreakerRate": "Der er registreret en høj aktiveringsrate for circuit breakeren.", + "activeModePack": "Aktiv tilstandspakke", + "modePackUpdated": "Tilstandspakken er opdateret til {pack}.", + "modePackHint": "Skift forudindstillinger for at justere routingmotorens prioritering uden at genopbygge kombinationen.", + "providerScores": "Udbyderscorer", + "allProvidersEvaluated": "Der er ikke konfigureret nogen kandidatpulje. Alle aktive udbydere evalueres under kørsel.", + "excludedProviders": "Udelukkede udbydere", + "excludedProvidersHint": "Udbydere med en ÅBEN circuit breaker udelukkes midlertidigt fra routing.", + "noExcludedProviders": "Ingen udbydere er udelukket i øjeblikket.", + "cooldownMinutes": "Ventetid: {minutes} min.", + "builderIntelligentTitle": "Konfiguration af intelligent routing", + "builderIntelligentDesc": "Konfigurer multifaktorscoringsmotoren for denne kombination med automatisk routing.", + "candidatePoolLabel": "Kandidatpulje", + "candidatePoolHint": "Vælg, hvilke udbydere denne motor skal evaluere. Lad feltet være tomt for at bruge alle aktive udbydere.", + "candidatePoolEmpty": "Der er endnu ingen aktive udbydere tilgængelige.", + "candidatePoolAllProviders": "Alle udbydere", + "modePackLabel": "Tilstandspakke", + "routerStrategyLabel": "Routingstrategi", + "strategyRules": "Regler (6-faktorsscoring)", + "explorationRateLabel": "Udforskningsrate", + "explorationRateHint": "{percent}% af anmodningerne kan afprøve ikke-optimale udbydere.", + "budgetCapLabel": "Budgetgrænse (USD/anmodning)", + "budgetCapPlaceholder": "Ingen grænse", + "advancedWeightsTitle": "Avanceret: Scoringsvægte", "nestedComboFlatten": "Fladgør indlejrede kombinationer", "nestedComboExecute": "Udfør indlejrede kombinationer som mål", "effectiveRoutingShare": "Effektiv ruteandel (vægt ÷ total)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kvote", + "weightHealth": "Sundhed", + "weightCostInv": "Omkostning", + "weightLatencyInv": "Ventetid", + "weightTaskFit": "Opgaveegnethed", + "weightStability": "Stabilitet", + "weightTierPriority": "Niveau", + "weightCacheAffinity": "Cachehit-affinitet", "weightSessionAvailability": "Session Tilgængelighed", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Konfiguration af intelligent routing", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Fejlsikker basislinje", + "description": "Brug én primær model, og hold fallback-kæden kort og pålidelig.", + "tip1": "Sæt din mest pålidelige model først.", + "tip2": "Brug 1-2 backupmodeller med tilsvarende kvalitet.", + "tip3": "Brug sikre genforsøg til at håndtere midlertidige udbyderfejl." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Kontrolleret trafikfordeling", + "description": "Velegnet til canary-udrulninger og gradvis migrering mellem modeller.", + "tip1": "Start med en konservativ fordeling som 90/10.", + "tip2": "Hold totalen på 100 %, og foretag automatisk afbalancering efter ændringer.", + "tip3": "Overvåg succesrate og ventetid, før canary-vægten øges." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Forudsigelig belastningsfordeling", + "description": "Bedst, når modellerne er tilsvarende, og du har brug for en jævn fordeling.", + "tip1": "Brug mindst 2 modeller.", + "tip2": "Angiv samtidighedsgrænser for at undgå overbelastning ved spidsbelastninger.", + "tip3": "Brug køtimeout til hurtigt at melde fejl ved mætning." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Hurtig fordeling med minimal opsætning", + "description": "Brug denne, når du har brug for enkel fordeling uden strenge garantier.", + "tip1": "Brug modeller med lignende ventetidsprofiler.", + "tip2": "Hold genforsøg aktiveret for at håndtere tilfældige mislykkede forsøg.", + "tip3": "Foretræk denne til eksperimenter, ikke til strenge SLA'er." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Adaptiv afbalancering", + "description": "Router til mindre anvendte modeller for at reducere flaskehalse over tid.", + "tip1": "Fungerer bedre ved kontinuerlig trafik.", + "tip2": "Kombiner med tilstandstjek for mere sikker afbalancering.", + "tip3": "Spor brugen pr. model for at bekræfte forbedringer i fordelingen." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Budgetorienteret routing", + "description": "Router til billigere modeller, når prismetadata er tilgængelige.", + "tip1": "Sørg for, at der findes prisoplysninger for alle valgte modeller.", + "tip2": "Behold en kvalitetsfallback til svære prompts.", + "tip3": "Brug denne til batch-/baggrundsjob, hvor omkostninger er den vigtigste KPI." }, "reset-aware": { "title": "Nulstil-bevidst kontorotation", @@ -3597,11 +3597,11 @@ "tip3": "Hold bindebåndet lille, så tilsvarende konti stadig roterer nogenlunde." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Fordeling som et blandet kortspil", + "description": "Hver model bruges præcis én gang pr. cyklus, før der blandes igen.", + "tip1": "Brug mindst 2 modeller for en meningsfuld fordeling.", + "tip2": "Fungerer bedst med modeller med tilsvarende ydeevne.", + "tip3": "Ideel til belastningsfordeling på tværs af flere API-konti." }, "fill-first": { "description": "Udstødningsudbyderkvoter sekventielt, før de falder tilbage.", @@ -3643,89 +3643,89 @@ "tip1": "Overvåg udbyderens helbredsmålinger for nøjagtig belastningsvurdering.", "tip2": "Fungerer bedst med homogene udbyderpuljer.", "tip3": "Juster følsomheden for at undgå svingninger under trafikstigninger.", - "title": "Power of Two Choices" + "title": "To valgmuligheders kraft" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Gratis stak ($0)", + "templateFreeStackDesc": "Round-robin på tværs af alle gratis udbydere: Kiro (Claude), Qoder (5 modeller), Qwen (4 modeller). Ingen omkostninger, fortsæt med at kode uden afbrydelser.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP-tilstand", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Kom godt i gang med kombinationer", + "wizardGuideDesc": "Opret modelkombinationer for at dirigere AI-trafik intelligent", + "wizardGuideHint": "eller klik på + Opret kombination ovenfor", + "createFirstCombo": "Opret din første kombination", + "wizardStep1Title": "Navngiv din kombination", + "wizardStep1Desc": "Giv din kombination et unikt navn, så den kan identificeres i routingregler", + "wizardStep2Title": "Tilføj modeller", + "wizardStep2Desc": "Vælg AI-modeller, og arranger deres prioritetsrækkefølge for fallback", + "wizardStep3Title": "Vælg strategi", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Gennemgå og gem", + "wizardStep4Desc": "Gennemgå din konfiguration, og aktivér kombinationen", + "usageGuideInvokeTitle": "Sådan kalder du denne kombination", + "usageGuideInvokeDesc": "Send kombinationens præcise navn som model, f.eks. model: \"my-combo\" (eller combo/my-combo).", + "usageGuideInvokeAutoNote": "auto og auto/* er en separat router uden konfiguration, som ikke bruger dine kombinationer (medmindre en kombination bogstaveligt talt hedder auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto er et reelt betalt OpenRouter-produkt (Auto Best Available), ikke et OmniRoute-alias — udeluk det via Indstillinger → Routing → Skjul betalte modeller.", + "emailVisibilityStateOn": "Til", + "emailVisibilityStateOff": "Fra", + "reorderHandle": "Træk for at ændre rækkefølgen", + "failedReorder": "Kunne ikke ændre modellernes rækkefølge", + "builderFlowTitle": "Flow til opbygning af kombinationer", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Grundlæggende", + "description": "Navn og startskabelon" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Trin", + "description": "Valg af udbyder, model og konto" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategi", + "description": "Routingadfærd og avancerede indstillinger" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Smart routing", + "description": "Kandidatpulje, forudindstillinger og scoring til automatisk routing" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Gennemgang", + "description": "Endelig validering før lagring" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", + "builderStageVisited": "Trin fuldført", + "builderStageCurrent": "Aktuelt trin", + "builderStagePending": "Afventer", + "builderStageLocked": "Låst — fuldfør først den forrige fase", + "builderTitle": "Opret en kombination", + "builderBrowseCatalog": "Gennemse katalog", + "builderProvider": "Udbyder", + "builderLoadingProviders": "Indlæser udbydere...", + "builderSelectProvider": "Vælg udbyder", "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderSelectModel": "Vælg model", + "builderProviderFirst": "Vælg først en udbyder", + "builderAccount": "Konto", + "builderPreview": "Forhåndsvisning", + "builderAddStep": "Tilføj trin", "builderDuplicateExact": "Dette nøjagtige trin for udbyder/model/konto er allerede i kombinationen.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Kombinationsreference", + "builderAddComboRef": "Tilføj kombinationsreference", + "builderComboRefStep": "Tilføj kombinationsreference", + "builderPinnedAccount": "Fastgjort konto", + "builderLegacyEntry": "Ældre post", + "reviewName": "Navn", + "reviewStrategy": "Strategi", + "reviewSteps": "Trin", + "reviewAccounts": "Konti", + "reviewProviders": "Udbydere", + "reviewComboRefs": "Kombinationsreferencer", + "reviewAdvanced": "Avancerede indstillinger", + "reviewAgentFlags": "Agentflag", + "reviewSequence": "Modelrækkefølge", + "reviewNoSteps": "Ingen trin konfigureret", "builderStagesDescription": "Gennemfør hvert trin for at definere kombinationer, bygge trin, vælge routingstrategi og gennemgå resultater.", "builderStepsDescription": "Byg hvert kombinationstrin i rækkefølge: udbyder, model og derefter konto. Dette gør det muligt at genbruge den samme udbyder og model på tværs af forskellige konti.", "selectProvider": "Vælg udbyder", @@ -3800,27 +3800,27 @@ "range7d": "7 dage", "range30d": "30 dage", "range90d": "90 dage", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 dage", + "range365d": "365 dage", "rangeAll": "Alle Tider", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Aktive modeller", + "flatRateEstimateNotice": "Omfatter estimater af tokenpriser for abonnementer med fast pris, ikke fakturerede omkostninger.", + "flatRateEstimateForecast": "Fremskrivningen omfatter estimater for faste priser.", + "selectedWindow": "Valgt periode", + "activeProviders": "Aktive udbydere", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Forbrug i dag", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Udbyderandel", + "topProviders": "Største udbydere", + "costTrend": "Omkostningsudvikling", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Mest populære modeller", "requestsInWindow": "Requests In Window", "tokenUsage": "Tokenbrug", "totalTokens": "Samlede tokens", @@ -3863,7 +3863,7 @@ "groupAccount": "Konto", "groupServiceTier": "Serviceniveau", "serviceTierFast": "Hurtig", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Fleksibel", "serviceTierStandard": "Standard", "serviceTierBreakdownTitle": "Serviceniveau", "serviceTierBreakdownSubtitle": "Fast / Flex / Standard-opdeling", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API-endepunkt", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Brug det OpenAI-kompatible slutpunkt med de fleste SDK'er og værktøjer.", + "testEndpoint": "Test slutpunkt →", + "advancedProtocols": "Avancerede protokoller", "available": "Tilgængelige endepunkter", "cloudProxy": "Cloud proxy", "disableConfirm": "Er du sikker på, at du vil deaktivere cloud-proxy?", @@ -3900,7 +3900,7 @@ "disableCloud": "Deaktiver Cloud", "enableCloud": "Aktiver Cloud", "modelsAcrossEndpoints": "{models} modeller på tværs af {endpoints} slutpunkter", - "loadingModels": "Loading available models...", + "loadingModels": "Indlæser tilgængelige modeller...", "chatDesc": "Streaming og ikke-streaming chat med alle udbydere", "embeddings": "Indlejringer", "embeddingsDesc": "Tekstindlejringer til søge- og RAG-pipelines", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Transskriber lydfiler til tekst (Whisper)", "textToSpeech": "Tekst til tale", "textToSpeechDesc": "Konverter tekst til naturligt klingende tale", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Musikgenerering", + "musicDesc": "Generér musik og lydspor via ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderationer", "moderationsDesc": "Indholdsmoderering og sikkerhedsklassificering", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API til Codex og avancerede agentbaserede arbejdsgange", + "listModelsDesc": "Vis alle tilgængelige modeller på tværs af alle tilsluttede udbydere", + "settingsApiDesc": "Læs og rediger OmniRoute-konfigurationen via API", + "settingsApi": "API til indstillinger", "categoryCore": "Kerne-API'er", "categoryMedia": "Medier & Multi-Modal", - "categorySearch": "Search & Discovery", + "categorySearch": "Søgning og opdagelse", "categoryUtility": "Værktøjer & Administration", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Websøgning", + "webSearchDesc": "Samlet websøgning på tværs af flere udbydere med automatisk failover og caching", + "searchProvider": "Søgeudbyder", + "searchProviderDesc": "Denne udbyder bruges til websøgning via POST /v1/search. Ingen modelkonfiguration er nødvendig — søgeudbydere er klar til brug, så snart en API-nøgle er tilsluttet.", "enableCloudTitle": "Aktiver Cloud Proxy", "whatYouGet": "Hvad du får", "cloudBenefitAccess": "Få adgang til din API fra hvor som helst i verden", @@ -3963,29 +3963,29 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Aktivér tunnel", + "cloudflaredInstallAndEnable": "Installér og aktivér", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Kører", + "cloudflaredStarting": "Starter", + "cloudflaredStoppedState": "Stoppet", + "cloudflaredNotInstalled": "Ikke installeret", + "cloudflaredUnsupported": "Ikke understøttet", + "cloudflaredError": "Fejl", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Seneste fejl: {error}", "providerModelsTitle": "{provider} — Modeller", "noModelsForProvider": "Ingen tilgængelige modeller for denne udbyder.", "chat": "Chat", "embedding": "Indlejring", "image": "Billede", "custom": "skik", - "modelsCount": "{count, plural, one {# model} other {# models}}", + "modelsCount": "{count, plural, one {# model} other {# modeller}}", "sectionTitle": "Integrationsoverflade", "sectionDescription": "OpenAI-kompatible API'er og operationelle protokolendepunkter", "tabApis": "API'er", @@ -4012,50 +4012,50 @@ "a2aQuickStartStep1": "Find agentkortet på`/.well-known/agent.json`.", "a2aQuickStartStep2": "Send JSON-RPC-anmodninger til`POST /a2a`vedhjælp af `message/send` eller `message/stream`.", "a2aQuickStartStep3": "Spor og kontroller opgaver ved hjælp af `tasks/get` og `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Fuldførelser (ældre)", + "completionsLegacyDesc": "Ældre OpenAI-tekstfuldførelser — accepterer både prompt-strenge og beskedarrays", "messagesApi": "Beskeder", "messagesApiDesc": "Native Anthropic Messages API-format til Claude-kompatible udbydere", "imageEdits": "Billedredigeringer", "imageEditsDesc": "Rediger og modificer eksisterende billeder med AI (inpainting, outpainting, variationer)", - "batchApi": "Batch API", + "batchApi": "Batch-API", "batchApiDesc": "Behandle store partier af anmodninger asynkront (OpenAI-kompatibel)", "filesApi": "Filer API", "filesApiDesc": "Upload og administrer filer til batchbehandling", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Videogenerering", + "videoDesc": "Generér videoer ved hjælp af AI-modeller som ComfyUI og Stable Video Diffusion.", + "tailscaleRequestFailed": "Kunne ikke indlæse Tailscale-status", + "tailscaleEnableFailed": "Kunne ikke aktivere Tailscale Funnel", + "tailscaleWaitingForLogin": "Fuldfør Tailscale-login i den åbnede browserfane. OmniRoute prøver automatisk igen.", + "tailscaleLoginTimedOut": "Tidsgrænsen blev overskredet under ventetiden på Tailscale-login", + "tailscaleWaitingForFunnel": "Aktivér Funnel for denne enhed i den åbnede browserfane. OmniRoute fortsætter med at kontrollere status.", + "tailscaleFunnelTimedOut": "Tiden udløb under ventetiden på, at Tailscale Funnel blev aktiveret", + "tailscaleStarted": "Tailscale Funnel aktiveret", + "tailscaleDisableFailed": "Kunne ikke deaktivere Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel deaktiveret", + "tailscaleInstallFailed": "Kunne ikke installere Tailscale", + "tailscaleInstallProgress": "Arbejder...", + "tailscaleInstalled": "Tailscale blev installeret", + "tailscaleRunning": "Kører", + "tailscaleNeedsLogin": "Kræver login", + "tailscaleStoppedState": "Stoppet", + "tailscaleNotInstalled": "Ikke installeret", + "tailscaleUnsupported": "Ikke understøttet", + "tailscaleError": "Fejl", + "tailscaleDisable": "Stop funnel", + "tailscaleInstallAndEnable": "Installer og aktivér", + "tailscaleLoginAndEnable": "Log ind og aktivér", + "tailscaleEnable": "Aktivér Funnel", + "tailscaleUrlNotice": "Bruger din Tailscale .ts.net-adresse. Login og godkendelse af Funnel kan være påkrævet ved første brug.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Godkend denne maskine med Tailscale, og aktivér derefter Funnel.", + "tailscaleBinaryPath": "Binær fil: {path}", + "tailscaleLastError": "Seneste fejl: {error}", + "tailscaleInstallTitle": "Installer Tailscale", + "tailscaleInstallIntro": "Installerer Tailscale på denne maskine og forbereder OmniRoute til at aktivere Funnel.", + "tailscaleInstallPasswordHint": "På macOS og Linux kan sudo være påkrævet for at installere pakken og starte daemonen.", + "tailscaleSudoPlaceholder": "Valgfri sudo-adgangskode", + "tailscaleInstalling": "Installerer", "tailscaleSudoLabel": "Sudo-adgangskode (påkrævet på macOS/Linux)", "ngrokTitle": "ngrok tunnel", "ngrokRunning": "Løb", @@ -4066,7 +4066,7 @@ "ngrokUnsupported": "Ikke understøttet", "ngrokError": "Fejl", "ngrokEnable": "Aktiver Tunnel", - "ngrokDisable": "Stop Tunnel", + "ngrokDisable": "Stop tunnel", "ngrokUrlNotice": "Opretter en offentlig ngrok-tunnel.", "ngrokAuthTokenLabel": "Authtoken (påkrævet, hvis NGROK_AUTHTOKEN ikke er indstillet)", "ngrokAuthTokenPlaceholder": "Indtast din ngrok-godkendelse", @@ -4087,7 +4087,7 @@ "activeCloud": "Cloud", "copyUrlTitle": "Kopier {url}", "statusRunning": "Kører", - "tunnels": "Tunnels", + "tunnels": "Tunneler", "activeTunnelCount": "{active} / {total} aktive", "badgeLocal": "LOKAL", "badgeProtected": "BESKYTTET", @@ -4108,7 +4108,7 @@ "all": "Alle", "more": "+{count} mere", "showInternalTooltip": "Vis eller skjul interne ruter (skjult som standard)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Bearer-godkendelse", "requestBody": "Request-body", "close": "Luk", "tryIt": "Prøv det", @@ -4118,7 +4118,7 @@ "enterManually": "Indtast manuelt", "pasteApiKey": "Indsæt din API-nøgle her", "noActiveApiKeys": "Ingen aktive API-nøgler fundet. Slå manuel indtastning til for at indsætte en.", - "requestBodyJson": "Request Body (JSON)", + "requestBodyJson": "Anmodningstekst (JSON)", "sending": "Sender...", "sendRequest": "Send anmodning", "dataSchemas": "Dataskemaer", @@ -4144,9 +4144,9 @@ "tierPublic": "Offentlig", "hideInternal": "Skjul interne", "showInternal": "Vis interne", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Brugerdefineret systemprompt", + "customSystemPromptDescription": "Indsæt en brugerdefineret systemprompt i hver modelanmodning", + "customSystemPromptPlaceholder": "f.eks. Svar altid som en pirat...", "obsidianEnterToken": "Indtast venligst et Obsidian API-token", "obsidianConnectFailed": "Forbindelse mislykkedes", "obsidianConnectionFailed": "Forbindelse mislykkedes", @@ -4195,16 +4195,16 @@ "notionTokenConfigured": "Token konfigureret. Notion-værktøjer er tilgængelige via MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Slutpunktsproxy", + "tabApiEndpoints": "API-slutpunkter", + "apiEndpointsTitle": "API-slutpunkter", + "apiEndpointsDescription": "Backend-API-slutpunkter, der kan anvendes af andre applikationer og tjenester. Dette afsnit viser alle tilgængelige REST-API'er med dokumentation og testfunktioner.", + "comingSoon": "Kommer snart", + "plannedFeatures": "Planlagte funktioner", + "featureRestApi": "Katalog over REST-API-slutpunkter med interaktiv dokumentation", + "featureWebhooks": "Konfiguration af webhooks og abonnementer på hændelser", + "featureSwagger": "Automatisk generering af OpenAPI / Swagger-specifikation", + "featureAuth": "Administration af API-nøgler og OAuth-rettigheder pr. slutpunkt" }, "mcpDashboard": { "loading": "Indlæser MCP-dashboard...", @@ -4259,7 +4259,7 @@ "activateCombo": "Aktiver combo", "deactivateCombo": "Deaktiver combo", "applyResilienceProfile": "Anvend modstandsdygtighedsprofil", - "profileAggressive": "aggressive", + "profileAggressive": "aggressiv", "profileBalanced": "afbalanceret", "profileConservative": "konservative", "applyProfile": "Anvend profil", @@ -4287,31 +4287,31 @@ "failed": "mislykkedes", "previous": "Forrige", "next": "Næste", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "apiKeyId": "API-nøgle-id", + "offset": "Forskydning", + "limit": "Grænse", + "tool": "Værktøj" }, "a2aDashboard": { "loading": "Indlæser A2A-dashboard...", "confirmCancelTask": "Vil du annullere opgave {taskId}?", "cancelTaskFailed": "Opgaven kunne ikke annulleres.", "cancelTaskSuccess": "Opgave {taskId} annulleret.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "smokeSendFailed": "message/send-røgtesten mislykkedes.", + "smokeSendSuccessWithTask": "message/send lykkedes (opgave {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream-røgtesten mislykkedes.", + "smokeStreamSuccessWithTask": "message/stream lykkedes (opgave {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream blev afsluttet uden opgave-id.", + "health": "Status", "ok": "ok", - "totalTasks": "Total tasks", + "totalTasks": "Opgaver i alt", "activeStreams": "Aktive streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "lastTask": "Seneste opgave", + "taskStateOverview": "Oversigt over opgavestatus", "state": { - "submitted": "submitted", - "working": "working", + "submitted": "indsendt", + "working": "under behandling", "completed": "afsluttet", "failed": "mislykkedes", "cancelled": "annulleret" @@ -4324,18 +4324,18 @@ "agentCardNotAvailable": "Agentkort er ikke tilgængeligt.", "quickValidation": "Hurtig validering", "quickValidationDescription": "Udfører røgopkald gennem live `/a2a` slutpunktet.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", + "runMessageSend": "Kør message/send", + "runMessageStream": "Kør message/stream", + "taskManagement": "Opgaveadministration", + "taskSummary": "{total} opgaver | side {page} af {totalPages}", + "allStates": "alle", + "allSkills": "alle færdigheder", + "loadingTasks": "Indlæser opgaver...", + "noTasksForFilters": "Der blev ikke fundet nogen opgaver for de aktuelle filtre.", + "tableTask": "Opgave", + "tableSkill": "Færdighed", + "tableState": "Status", + "tableUpdated": "Opdateret", "tableActions": "Handlinger", "view": "Udsigt", "cancel": "Ophæve", @@ -4346,10 +4346,10 @@ "metadata": "Metadata", "events": "Begivenheder", "artifacts": "Artefakter", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "tablePhase": "Tabelfase", + "offset": "Forskydning", + "limit": "Grænse", + "skill": "Færdighed", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "besked/send", "rpcMethodStream": "besked/stream", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Handlinger", + "addMemory": "Tilføj hukommelse", + "allTypes": "Alle typer", "cancel": "Annuller", "checkHealth": "Tjek sundhed", "checkingHealth": "Tjekker...", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Sådan fungerer det", "howWorksContent": "1. Automatisk udtrækning: I slutningen af hvert svar registreres og gemmes fakta og episoder automatisk.\n2. Hentning: Før hvert svar søges der efter de mest relevante erindringer via FTS5 (præcis), vektor (semantisk) eller hybrid RRF.\n3. Injektion: Relevante erindringer indsættes i assistentens kontekst for at forbedre svarkvaliteten.\n4. Administration: Brug denne side til at få vist, redigere, eksportere og kompaktere gamle erindringer." }, - "content": "Content", + "content": "Indhold", "contentPlaceholder": "Værdi eller JSON-indhold at huske", - "created": "Created", - "delete": "Delete", + "created": "Oprettet", + "delete": "Slet", "deleteConfirmDesc": "Denne handling kan ikke fortrydes. Erindringen vil blive slettet permanent.", "deleteConfirmTitle": "Slet erindring?", - "description": "View and manage stored memory entries", + "description": "Se og administrer gemte hukommelsesposter", "editMemory": "Rediger erindring", "editModal": { "title": "Rediger erindring", @@ -4433,7 +4433,7 @@ "reindexFailed": "Kunne ikke starte genindeksering", "keywordLabel": "Søgeord (FTS5)", "keywordReason": "Søgeordssøgning er altid tilgængelig", - "embeddingLabel": "Embedding", + "embeddingLabel": "Indlejring", "vectorStoreLabel": "Vektorlager", "qdrantLabel": "Qdrant", "rerankLabel": "Genrangering", @@ -4444,25 +4444,25 @@ "configureCta": "Konfigurer", "vectorStoreInstallHint": "For at aktivere vektorsøgning: npm install sqlite-vec (kræver native Node.js, ikke WASM), og genstart derefter." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodisk", + "export": "Eksportér", + "factual": "Faktuel", "healthUnknown": "Helbred ukendt", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Træfrate", + "import": "Importér", "importError": "Kunne ikke importere fil", "importResult": "{imported} importeret, {skipped} sprunget over", - "key": "Key", + "key": "Nøgle", "keyPlaceholder": "f.eks. bruger.præferencer.tema", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Hukommelser", "next": "Næste", - "noMemories": "No memories found", + "noMemories": "Ingen hukommelser fundet", "pageInfo": "Side {page} af {totalPages} ({total} i alt)", "pipelineError": "Pipeline fejl", "pipelineOk": "Rørledning OK ({latencyMs}ms)", "playground": { - "infoTitle": "Memory Playground", + "infoTitle": "Testmiljø for hukommelse", "infoDesc": "Simuler hvad der ville blive hentet for en given forespørgsel. Ingen hukommelser ændres — skrivebeskyttet forhåndsvisning.", "queryLabel": "Testforespørgsel", "queryPlaceholder": "Skriv et spørgsmål eller en testfrase...", @@ -4474,18 +4474,18 @@ "simulate": "Simuler", "resultsTitle": "{count} resultat(er)", "resolutionTitle": "Søgeopløsning", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Indlejring", "resolutionStore": "Vektorlager", "resolutionStrategy": "Anvendt strategi", "rerankApplied": "Genrangering anvendt", - "fallback": "Fallback", + "fallback": "Reserveløsning", "noResults": "Ingen hukommelser fundet for denne forespørgsel.", "tokensUsed": "tokens brugt", "none": "ingen", "errorFetch": "Kunne ikke hente forhåndsvisning" }, "previous": "Forrige", - "procedural": "Procedural", + "procedural": "Proceduremæssig", "qdrant": { "title": "Qdrant (Vektorlager Tier 2)", "description": "Valgfri Qdrant-integration til skalerbar semantisk søgning", @@ -4534,8 +4534,8 @@ }, "save": "Gem", "saving": "Gemmer...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Søg i hukommelser...", + "semantic": "Semantisk", "summarize": { "title": "Kompaktér gamle minder", "noCandidates": "Ingen minder er egnede til kompaktering (kriterie: >30 dage gamle).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Minder", - "playground": "Playground", + "playground": "Testmiljø", "engine": "Motor" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Hukommelsesadministration", + "tokensUsed": "Anvendte tokens", "tooltip": { "totalEntries": "Samlet antal hukommelser gemt for denne API-nøgle", "tokensUsed": "Estimeret samlet antal tokens optaget af aktive hukommelser", @@ -4558,18 +4558,18 @@ "procedural": "Procedurer, arbejdsgange og instruktioner, som assistenten skal følge", "semantic": "Koncepter, præferencer og domæneviden" }, - "totalEntries": "Total Entries", + "totalEntries": "Samlet antal poster", "type": "Type", "memoryEnabled": "Hukommelse aktiveret" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Færdigheder", + "description": "Administrer og overvåg AI-færdigheder", + "skillsTab": "Færdigheder", + "executionsTab": "Kørsler", "selectSkillToInspect": "Vælg en færdighed til venstre for at inspicere.", "schemaTab": "Skema", - "handlerTab": "Handler", + "handlerTab": "Behandler", "inputSchema": "Inputskema", "outputSchema": "Outputskema", "handlerCode": "Handler-kode", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Kør test (pladsholder)", "setModeAria": "Indstil tilstand {mode}", "uninstallSkill": "Afinstaller færdighed", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Sandkasse", + "loading": "Indlæser færdigheder...", + "noSkills": "Ingen færdigheder fundet", + "noExecutions": "Ingen kørsler fundet", + "enabled": "Aktiveret", + "disabled": "Deaktiveret", "delete": "Slet", "version": "Version", - "tableDescription": "Description", - "skill": "Skill", + "tableDescription": "Beskrivelse", + "skill": "Færdighed", "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "duration": "Varighed", + "time": "Tidspunkt", + "sandboxConfig": "Sandkassekonfiguration", + "cpuLimit": "CPU-grænse", + "cpuLimitDesc": "Maksimal kørselstid pr. færdighed", + "memoryLimit": "Hukommelsesgrænse", + "memoryLimitDesc": "Maksimal hukommelsestildeling", + "timeout": "Tidsgrænse", + "timeoutDesc": "Maksimal ventetid på svar", + "networkAccess": "Netværksadgang", + "networkAccessDesc": "Tillad udgående netværksanmodninger", + "mode": "Tilstand", "q": "Q", "filterSkillsPlaceholder": "Filtrer færdigheder efter navn, beskrivelse eller tag", "allModes": "Alle tilstande", @@ -4626,7 +4626,7 @@ "marketplaceError": "Søgning mislykkedes", "installingFromMarketplace": "Installerer fra markedspladsen...", "popularSkills": "Populære færdigheder", - "skillsMarketplace": "Skills Marketplace", + "skillsMarketplace": "Markedsplads for færdigheder", "searching": "Søger...", "pageInfo": "Side {page} af {totalPages} ({total} i alt)", "previous": "Forrige", @@ -4656,8 +4656,8 @@ "version": "version", "lastCheck": "Sidste kontrol", "providerHealth": "Udbyder sundhed", - "systemMetrics": "System Metrics", - "tokenHealth": "Token Health", + "systemMetrics": "Systemmålinger", + "tokenHealth": "Tokenstatus", "refreshAll": "Opdater alle", "checkNow": "Tjek nu", "loadingHealth": "Indlæser sundhedsdata...", @@ -4665,15 +4665,15 @@ "retry": "Prøv igen", "allOperational": "Alle systemer i drift", "issuesDetected": "Systemproblemer opdaget", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute er klar", + "healthVerdictActionRequired": "Handling påkrævet for at genoprette fuld drift", + "healthVerdictCoolingDown": "Afkøler efter nylige ændringer", + "healthSubtitle": "Kontrol af systemtilstand", + "advancedDiagnosticsTitle": "Avanceret diagnosticering", + "hide": "Skjul", + "show": "Vis", "updatedAt": "Opdateret {time}", - "latency": "Latency", + "latency": "Ventetid", "latencyP50": "p50", "latencyP95": "s95", "latencyP99": "s99", @@ -4684,7 +4684,7 @@ "promptCache": "Spørg cache", "entries": "Indgange", "hitRate": "Hitrate", - "hitsMisses": "Hits / Misses", + "hitsMisses": "Træffere / forbiere", "signatureCache": "Signatur cache", "signatureDefaults": "Standarder", "signatureTool": "Værktøj", @@ -4698,9 +4698,9 @@ "providers": "Udbydere", "configuredProvidersLabel": "Konfigureret i dashboard", "configuredProvidersHint": "Udbydere med legitimationsoplysninger gemt i /dashboard/udbydere, uanset køretidstilstand.", - "activeProviders": "{count} active", + "activeProviders": "{count} aktive", "activeProvidersHint": "Konfigurerede udbydere, der i øjeblikket er aktiveret for routinganmodninger.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} overvågede", "monitoredProvidersHint": "Udbydere, der i øjeblikket spores af strømafbryderens sundhedsmonitorer.", "healthyCount": "{count} sund", "nodeVersion": "Node {version}", @@ -4721,11 +4721,11 @@ "resetting": "Nulstiller...", "resetAll": "Nulstil alle", "until": "Indtil {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Opbrugt", + "learnedFromHeaders": "Lært fra headers", + "remainingOfLimit": "{remaining}/{limit} tilbage", + "throttleStatus": "Begrænsning: {value}", + "lastHeaderUpdate": "Headeropdatering: {age}", "databaseHealth": "Database sundhed", "databaseHealthDescription": "Diagnosticer og reparer forældede kvote-/domænerækker og ødelagte kombinationsreferencer.", "status": "Status", @@ -4780,7 +4780,7 @@ "cooldownCount": "{count} nedkøling", "lockoutCount": "{count} udelukkelser", "issueCount": "{count} problemer", - "score": "Score", + "score": "Resultat", "lastRequest": "Sidste anmodning", "lastError": "Sidste fejl" }, @@ -4793,7 +4793,7 @@ "errorRate": "Fejlrate", "activeConnections": "Aktive forbindelser", "memoryUsage": "Hukommelsesbrug", - "latencyTrend": "Latency trend", + "latencyTrend": "Udvikling i ventetid", "throughputTrend": "Gennemstrømningstendens", "memoryTrend": "Hukommelsestendens", "refresh": "Opdater", @@ -4802,7 +4802,7 @@ "partialData": "Telemetri er delvist tilgængelig: {error}" }, "mitm": { - "title": "MITM Proxy", + "title": "MITM-proxy", "description": "Gennemsigtig proxy til at opsnappe og dirigere klientanmodninger.", "enable": "Aktiver MITM Proxy", "enableDesc": "Start eller stop den lokale aflytning og DNS-tilsidesættelse.", @@ -4859,7 +4859,7 @@ "dailyLimit": "Daglig grænse" }, "logs": { - "title": "Logs", + "title": "Logfiler", "requestLogs": "Anmod om logs", "proxyLogs": "Proxy logs", "auditLog": "Revisionslog", @@ -4888,28 +4888,28 @@ "previous": "Forrige", "next": "Næste", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Vis detaljer", + "eventMetadata": "Hændelsesmetadata", + "eventPayload": "Hændelsesdata", + "requestId": "Anmodnings-id", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", + "offset": "Forskydning", + "limit": "Grænse", "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "resourceType": "Ressourcetype", + "totalEntries": "Poster i alt", + "tab": "Fane", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Luk", + "runningRequests": "Aktive anmodninger", + "runningRequestsDesc": "Realtidsvisning af igangværende upstream-anmodninger", "clearAll": "Ryd alle", "confirmClearActiveRequests": "Vil du slette alle aktive anmodninger?", "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "provider": "Udbyder", + "account": "Konto", + "elapsed": "Forløbet tid", "activeStage": "Fase", "activeStageUnknown": "Ikke sendt til upstream endnu", "activeStageRegistered": "Registreret", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Rate limit-plads opnået", "activeStageSendingToProvider": "Sender til upstream", "activeStageProviderResponseStarted": "Upstream-svar påbegyndt", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Antal", + "payloads": "Nyttelaster", + "viewPayloads": "Vis", + "activeCount": "{count} aktive", + "clientPayload": "Payload for klientanmodning", + "upstreamPayload": "Payload for upstream-udbyder", + "upstreamNotSentYet": "Endnu ikke sendt til upstream", + "runningRequestDetailMeta": "Konto: {account} — Forløbet tid: {elapsed}", + "export": "Eksportér", + "exporting": "Eksporterer...", + "exportFailed": "Eksport mislykkedes", "cleanHistoryButton": "Ryd historik", "cleanHistoryTitle": "Ryd loghistorik?", "cleanHistoryMessage": "Dette rydder permanent alle anmodningslogrækker, ældre detaljerækker og lokale artefaktfiler under DATA_DIR/call_logs. Livesiden opdateres efter oprydning.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Ryddede {deleted} logposter, {deletedArtifacts} artefakter og {deletedDetailedLogs} ældre detaljerækker.", "cleanHistoryEmpty": "Der blev ikke fundet nogen anmodningsloghistorik.", "cleanHistoryFailed": "Kunne ikke rydde loghistorik.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Tidsinterval", + "lastNHours": "Seneste {hours}", + "defaultRange": "standard", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Kunne ikke hente logfiler", + "copyFailed": "Kunne ikke kopiere logpost", + "copyLogEntry": "Kopiér logpost", "filterByLevel": "Filtrer efter logniveau", "searchPlaceholder": "Søg i logs…", "searchAria": "Søg i logposter", @@ -4987,9 +4987,9 @@ "multiProvider": "Multi-udbyder", "usageTracking": "Brugssporing", "securityDesc": "Indstil en adgangskode for at beskytte dit dashboard, eller spring over indtil videre.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Uden en adgangskode kan du ikke tilføje udbydere under opsætningen. Du kan tilføje dem senere fra kontrolpanelet, når du har angivet en adgangskode.", "providerDesc": "Tilslut din første AI-udbyder. Du kan tilføje flere senere.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Du skal først angive en adgangskode for at tilføje udbydere. Gå tilbage til sikkerhedstrinnet, og angiv en adgangskode, eller tilføj udbydere senere fra kontrolpanelet.", "apiKeyRequired": "API-nøgle (påkrævet)", "customUrlOptional": "Tilpasset webadresse (valgfrit)", "testDesc": "Lad os kontrollere, at din udbyderforbindelse fungerer.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Importerer…", "importFromFileImport": "Importér {count} udbydere", "importFromFileResult": "Importerede {success} udbydere ({failed} mislykkedes)", + "importFromFileDownloadTemplate": "Download CSV-skabelon", + "importFromFileMoreErrors": "+{count} mere", + "importFromFileSchemaHint": "CSV-kolonnerne er positionsbestemte: provider, name, apiKey, baseUrl (valgfri), priority (valgfri). Kolonnen provider skal være et eksisterende administreret udbyder-id eller et allerede registreret OpenAI/Anthropic-kompatibelt node-id — denne import opretter ikke nye slutpunktsnoder.", "adaptaTutorial": { "title": "Sådan opretter du forbindelse til Adapta Web", "introPrefix": "Adapta godkender via Clerk. Tokenet", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} skjulte", "warningCount": "{count} Advarsel", "noConnections": "Ingen forbindelser", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Udløbet", + "expiringSoonBadge": "Udløber snart", "freeTier": "Gratis niveau", "freeTierAvailable": "Gratis niveau tilgængelig", "hasFreeTooltip": "Gratis niveau tilgængeligt", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Denne udbyder er blevet udfaset", "riskNotice": { "title": "Før du fortsætter", - "detailsTitle": "Usage caveats", + "detailsTitle": "Forbehold ved brug", "tooltip": "Udbyder med forbehold for brug — klik for detaljer", "oauth": "Denne udbyder bruger din officielle produktsession/OAuth, som ikke er godkendt til proxy-/routerbrug. Vi anbefaler ikke intensiv brug af autonome agenter (OpenCloud-stil, lange flertrinsforløb, store batches) — upstream-tjenesten kan reagere ved at begrænse eller spærre kontoen. Brug på eget ansvar.", "webCookie": "Denne udbyder godkender via dine websessionscookies. Upstream-tjenesten kan til enhver tid gøre sessionen ugyldig, hvilket kræver, at du logger ind igen. Anbefales ikke til lange uovervågede handlinger. Brug på eget ansvar.", @@ -5188,9 +5191,9 @@ "cancel": "Annuller" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} forbindelse(r) markeret — op til {maxFailures} nylige fejl{lastFailureSuffix}. Klik for at se forbindelsestilstand.", + "lastFailureSuffix": "(seneste fejl {time})", + "ariaLabel": "Vis oplysninger om forbindelsestilstand, {count} advarsel/advarsler" }, "disabled": "Deaktiveret", "enableProvider": "Aktiver udbyder", @@ -5225,7 +5228,7 @@ "failedCreate": "Kunne ikke oprette udbyder", "errorOccurred": "Der opstod en fejl. Prøv venligst igen.", "modelStatus": "Modelstatus", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Kun konfigurerede", "allModelsOperational": "Alle modeller i drift", "modelsWithIssues": "{count} model(er) med problemer", "allModelsNormal": "Alle modeller reagerer normalt.", @@ -5236,7 +5239,7 @@ "clearing": "Rydder...", "until": "Indtil {time}", "providerTestFailed": "Providertest mislykkedes", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Test af udbyder fik timeout — for mange forbindelser blev testet på én gang", "modeTest": "{mode} Test", "passedCount": "{count} bestået", "failedCount": "{count} mislykkedes", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "Ikon-URL", "iconUrlHint": "Valgfrit. Billed-URL, der vises som denne udbyders ikon.", "iconUrlInvalid": "Ugyldig ikon-URL. Brug en http(s):// eller data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Tidszone for nulstilling af daglig kvote", + "dailyQuotaResetTimezoneHint": "Valgfri IANA-tidszone, der bruges, når upstream udelader X-RateLimit-Reset. Lad feltet være tomt for at bevare en kort nedkølingsperiode.", + "dailyQuotaResetHourLabel": "Tidspunkt for nulstilling af daglig kvote", + "dailyQuotaResetHourHint": "Lokal time 0-23 i tidszonen ovenfor. Tomt betyder intet ur på nodeniveau.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Udbyder blev ikke fundet", "deleteConnectionConfirm": "Vil du slette denne forbindelse?", "deleteConnectionConfirmNamed": "Er du sikker på, at du vil slette {name}? Denne handling kan ikke fortrydes.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Slet valgte ({count})", + "batchDeleteConfirm": "Vil du slette {count} forbindelse(r)? Denne handling kan ikke fortrydes.", + "batchDeleteSuccess": "Slettede {count} forbindelse(r)", "batchActivateSelected": "Aktiver", "batchDeactivateSelected": "Deaktiver", "batchRetestSelected": "Test igen", @@ -5292,7 +5295,7 @@ "filterError": "Fejl", "filterBanned": "Blokeret", "filterCreditsExhausted": "Kreditter opbrugt", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Søg efter konti…", "noFilteredConnections": "Ingen forbindelser matcher det aktuelle filter.", "failedSetAlias": "Aliaset kunne ikke indstilles", "setAliasSuccess": "Alias {alias} angivet", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "OpenAI-kompatible detaljer", "messagesApi": "Beskeder API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Indlejringer", + "audioTranscriptions": "Lydtransskriptioner", + "audioSpeech": "Talesyntese", + "imagesGenerations": "Billedgenereringer", "chatCompletions": "Chatafslutninger", "importingModels": "Importerer...", "importFromModels": "Importer fra /models", - "modelsImported": "{count} models imported", + "modelsImported": "{count} modeller importeret", "allModelsAlreadyImported": "Alle modeller er allerede importeret", "noNewModelsToImport": "Ingen nye modeller at importere — alle modeller findes allerede i registreret eller brugerdefineret liste", "skippingExistingModels": "Springer {count} eksisterende modeller over", @@ -5350,13 +5353,13 @@ "importFailed": "Import mislykkedes", "noNewModelsAdded": "Der blev ikke tilføjet nye modeller.", "adding": "Tilføjer...", - "close": "Close", + "close": "Luk", "importingModelsTitle": "Import af modeller", "copyModel": "Kopi model", "filterModels": "Filtrer modeller…", "testAllRateLimited": "Hastighedsbegrænsning nået, stoppede tidligt", "hideFailedAuto": "Skjul automatisk fejlbehæftede modeller", - "selectAllModels": "Select all", + "selectAllModels": "Vælg alle", "hideAllModels": "Skjul alle", "modelsActive": "aktive", "showModel": "Vis model", @@ -5381,13 +5384,13 @@ "codexApplyWarning": "Dette vil erstatte den eksisterende auth.json. Fortsætte?", "codexApplyConfirmCheckbox": "Jeg bekræfter, at jeg vil erstatte den eksisterende auth.json", "codexApply": "Ansøg", - "bulkTabSingle": "Single", + "bulkTabSingle": "Enkelt", "bulkTabBulkAdd": "Bulk Tilføj", "bulkAddFormatHint": "En nøgle pr. linje. Format: navn|apiKey eller bare apiKey (automatisk navngivet af indeks).", "bulkValidateKeys": "Valider hver nøgle, før du gemmer (langsommere)", "bulkAddAllKeys": "Tilføj alle nøgler", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# nøgle tilføjet} other {# nøgler tilføjet}}", + "bulkFailedCount": "{count, plural, one {# mislykkedes} other {# mislykkedes}}", "optional": "Valgfrit", "anthropicCompatibleName": "Antropisk kompatibel", "openaiCompatibleName": "OpenAI-kompatibel", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Der opstod en uventet fejl", "getApiKey": "Få API-nøgle", "getApiKeyDescription": "Registrer dig eller tilmeld dig for en API-nøgle", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# forbindelse} other {# forbindelser}}", "messagesPath": "beskeder", "responsesPath": "svar", "chatCompletionsPath": "chat/afslutninger", @@ -5419,17 +5422,17 @@ "configured": "konfigureret", "providerProxyConfigureHint": "Konfigurer proxy for alle forbindelser fra denne udbyder", "providerProxy": "Udbyder proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Reparer env", + "repairEnvWorking": "Reparerer...", + "repairEnvHint": "Gendan manglende OAuth-standardværdier i .env uden at overskrive eksisterende værdier.", + "repairEnvSuccess": "OAuth-standardværdier gendannet", + "repairEnvFailed": "Kunne ikke reparere .env", "noConnectionsYet": "Ingen forbindelser endnu", "addFirstConnectionHint": "Tilføj din første forbindelse for at komme i gang", "addConnection": "Tilføj forbindelse", "availableModels": "Tilgængelige modeller", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Indbyggede modeller", + "builtInModelsHint": "Registreringsmodeller for denne udbyder. Brug blyanten til at angive kompatibilitetsindstillinger.", "pageAutoRefresh": "Siden opdateres automatisk...", "statusDisabled": "deaktiveret", "statusConnected": "tilsluttet", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Genautentificer denne forbindelse", "proxyConfig": "Proxy konfiguration", "aliasExistsAlert": "Aliaset \"{alias}\" findes allerede. Brug venligst en anden model, eller rediger eksisterende alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "aliasnavn", + "clickToSetAlias": "Klik for at angive alias", + "clickToEditAlias": "Alias: {alias} (klik for at redigere)", "openRouterAnyModelHint": "OpenRouter understøtter enhver model. Tilføj modeller og opret aliaser for hurtig adgang.", "modelIdFromOpenRouter": "Model ID (fra OpenRouter)", "openRouterModelPlaceholder": "antropisk/claude-3-opus", "customModels": "Brugerdefinerede modeller", "customModelsHint": "Tilføj model-id'er, der ikke er på standardlisten. Disse vil være tilgængelige for routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normaliser værktøjskalds-id'er til 9 tegn (f.eks. Mistral)", + "preserveDeveloperRoleLabel": "Behold OpenAI Responses-udviklerrollen (knyt den ikke til system)", + "compatAdjustmentsTitle": "Kompatibilitet", + "compatButtonLabel": "Kompatibilitet", + "compatToolIdShort": "Værktøjs-id 9", + "compatDeveloperShort": "Udviklerrolle", + "compatDoNotPreserveDeveloper": "Bevar ikke udviklerrollen", + "compatBadgeNoPreserve": "Bevar ikke", + "compatProtocolLabel": "Protokol for klientanmodninger", + "compatProtocolHint": "Disse indstillinger anvendes, når OmniRoute registrerer dette anmodningsformat (OpenAI Chat, Responses API eller Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,31 +5537,31 @@ "interceptFetchHint": "Omskriv oprindelige web_fetch-værktøjskald til OmniRoutes /v1/web/fetch.", "interceptionLoadError": "Kunne ikke indlæse indstillinger for opsnapning: {error}", "interceptionSaveError": "Kunne ikke gemme indstillinger for opsnapning: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Vis i Claude Code (claude/…)", + "ccAliasSectionHint": "Annoncér denne udbyders modeller under spejl-id'erne claude/<provider>/<model>, så Claude Codes gateway-modelregistrering kan vise dem. Deaktiveret som standard — aktivering fordobler katalogposterne for alle klienter.", + "ccAliasProviderLevelLabel": "Udbyderstandard", + "ccAliasModelOverridesLabel": "Tilsidesættelser pr. model", + "ccAliasModelOverrideAriaLabel": "Tilsidesættelse for {modelId}", + "ccAliasStateInherit": "Nedarv", + "ccAliasStateOn": "Til", + "ccAliasStateOff": "Fra", + "ccAliasAddModelPlaceholder": "Model-id (f.eks. gpt-4o)", + "ccAliasAddModelButton": "Tilføj tilsidesættelse", + "ccAliasLoadError": "Kunne ikke indlæse indstillinger for discovery-alias: {error}", + "ccAliasSaveError": "Kunne ikke gemme indstilling for discovery-alias: {error}", + "compatUpstreamHeadersLabel": "Ekstra upstream-headere", + "compatUpstreamHeadersHint": "Indstilling med høje rettigheder — samme tillidsniveau som redigering af providerens API-legitimationsoplysninger; kun betroede administratorer bør bruge den. Flettes, efter at OmniRoute har tilføjet godkendelse fra providerens API-nøgle. Hvis en brugerdefineret header bruger samme navn som en eksisterende (f.eks. Authorization), erstatter din værdi den automatisk genererede header fuldstændigt (inklusive Bearer-tokenet) — upstream ser kun det, du har indtastet, ikke nøglen fra indstillingerne. Forkert konfiguration kan medføre 401-fejl eller ødelagt upstream-godkendelse. Én række pr. header (f.eks. ekstra Authentication for visse gateways). Hold markøren over værdien, eller sæt fokus på den, for at få vist en forhåndsvisning. Gemmes, når feltet mister fokus, når der klikkes udenfor, eller når dette panel lukkes.", + "compatUpstreamHeaderName": "Headernavn", + "compatUpstreamHeaderValue": "Værdi", + "compatUpstreamAddRow": "Tilføj header", + "compatUpstreamRemoveRow": "Fjern række", + "compatBadgeUpstreamHeaders": "Headere", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Importer kun gratis modeller", "importFreeModelsOnlyHint": "Når aktiveret, importeres kun denne udbyders gratis modeller. Betalte modeller springes over.", "perModelQuotaToggle": "Per-model kvoteskift", - "modelId": "Model ID", + "modelId": "Model-id", "customModelPlaceholder": "f.eks. gpt-4.5-turbo", "loading": "Indlæser...", "removeCustomModel": "Fjern brugerdefineret model", @@ -5592,26 +5595,26 @@ "email": "E-mail", "healthCheckMinutes": "Sundhedstjek (min)", "healthCheckHint": "Proaktivt token-opdateringsinterval. 0 = deaktiveret.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Fravælg alle", + "modelsActiveCount": "{active}/{total} aktive", + "noModelsMatch": "Ingen modeller matcher \"{filter}\"", + "groupLabel": "Miljø", + "groupPlaceholder": "f.eks. eKaizen, Personlig", "failedTestConnection": "Forbindelsen kunne ikke testes", "failed": "Mislykkedes", "leaveBlankKeepCurrentApiKey": "Lad stå tomt for at beholde den aktuelle API-nøgle.", "editCompatibleTitle": "Rediger {type} Kompatibel", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "Rod-URL for din {type}-kompatible API. Brug Avancerede indstillinger til brugerdefinerede endpoint-stier.", "apiKeyForCheck": "API-nøgle (til check)", "testModelIdLabel": "Model-ID (valgfrit)", "testModelIdPlaceholder": "f.eks. mit-model-id", "testModelIdHint": "Hvis udbyderen mangler et /models-endpoint, skal du indtaste et model-ID for at validere via /chat/completions i stedet.", "compatibleProdPlaceholder": "{type} Kompatibel (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Token blev opdateret", + "tokenRefreshFailed": "Tokenopdatering mislykkedes", "cursorSessionUnchanged": "Session allerede aktuel", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Anvend godkendelse", + "exportCodexAuthFile": "Eksportér godkendelse", "applyClaudeAuthLocal": "Anvend godkendelse", "exportClaudeAuthFile": "Eksporter auth", "importClaudeAuth": "Importer auth", @@ -5627,8 +5630,8 @@ "claudeAuthExported": "Claude auth-fil eksporteret", "claudeAuthExportFailed": "Kunne ikke eksportere Claude auth-fil", "claudeImportModalTitle": "Importer Claude Auth", - "claudeImportTabSingle": "Single", - "claudeImportTabBulk": "Bulk", + "claudeImportTabSingle": "Enkelt", + "claudeImportTabBulk": "Massehandling", "claudeImportTabUpload": "Upload fil", "claudeImportTabPaste": "Indsæt JSON", "claudeImportFileLabel": "Vælg .credentials.json", @@ -5659,8 +5662,8 @@ "geminiAuthExported": "Gemini godkendelsesfil eksporteret", "geminiAuthExportFailed": "Kunne ikke eksportere Gemini-godkendelsesfil", "geminiImportModalTitle": "Importer Gemini Auth", - "geminiImportTabSingle": "Single", - "geminiImportTabBulk": "Bulk", + "geminiImportTabSingle": "Enkelt", + "geminiImportTabBulk": "Massehandling", "geminiImportTabUpload": "Upload fil", "geminiImportTabPaste": "Indsæt JSON", "geminiImportFileLabel": "Vælg oauth_creds.json", @@ -5705,8 +5708,8 @@ "codexExternalLinkExpired": "Linket udløb før fuldførelse.", "importCodexAuth": "Importer auth", "codexImportModalTitle": "Importer Codex Auth", - "codexImportTabSingle": "Single", - "codexImportTabBulk": "Bulk", + "codexImportTabSingle": "Enkelt", + "codexImportTabBulk": "Massehandling", "codexImportTabUpload": "Upload fil", "codexImportTabPaste": "Indsæt JSON", "codexImportFileLabel": "Vælg auth.json", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} mislykkedes", "codexImportBulkZipExtracting": "Udpakker ZIP...", "codexImportBulkZipError": "Kunne ikke udpakke ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Avancerede indstillinger", + "chatPathLabel": "Sti til chat-endpoint", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Brugerdefineret chatsti for providere med ikke-standardiserede API'er (f.eks. /v4/chat/completions)", + "modelsPathLabel": "Sti til model-endpoint", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Brugerdefineret modelsti til validering (f.eks. /v4/models)", "clientIdentityLabel": "Klientidentitet", - "clientIdentityHint": "Optional. Adds client fingerprint headers (e.g. User-Agent) matching a known CLI for compatible gateways that expect one.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "clientIdentityHint": "Valgfrit. Tilføjer headere med klientfingeraftryk (f.eks. User-Agent), der matcher en kendt CLI, til kompatible gateways, som forventer en sådan.", + "statusDeactivated": "Deaktiveret (manuelt)", + "statusBanned": "Udelukket / overtrædelse af sandkasseregler", + "statusCreditsExhausted": "Utilstrækkelig saldo / kvote opbrugt", + "showEmails": "Vis alle e-mails", + "hideEmails": "Skjul alle e-mails", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Tilføj endnu en API-nøgle, eller indsæt flere nøgler", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "aggregatorsGateways": "Aggregator-gateways", + "enterpriseCloud": "Virksomhed og cloud", + "apiFormatLabel": "Etiket for API-format", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API-region Kina", + "apiRegionHint": "Tip til API-region", + "apiRegionInternational": "API-region International", + "apiRegionLabel": "Etiket for API-region", + "apikey": "API-nøgle", + "audio": "Lyd", + "audioProvidersHeading": "Overskrift for lydudbydere", "cloudAgentProviders": "Cloud Agent-udbydere", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Kort etiket for lyd", + "azureOpenAiBaseUrlHint": "Tip til Azure Open Ai-basis-URL", + "bailianBaseUrlHint": "Tip til Bailian-basis-URL", + "claudeWebCookieHint": "Åbn claude.ai → DevTools → Application → Cookies → claude.ai, og kopiér værdien 'sessionKey'. cf_clearance, __cf_bm og _cfuvid er også nødvendige for Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Tip til Blackbox Web-cookie", + "blackboxWebCookiePlaceholder": "Pladsholder for Blackbox Web-cookie", "t3ChatWebCookieHint": "Åbn t3.chat → DevTools → Application → Local Storage → https://t3.chat, kopier 'convex-session-id'. Åbn derefter DevTools → Netværk, kopier den fulde Cookie-header fra enhver chatanmodning. Indsæt begge værdier i felterne nedenfor.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Tip til Grok Web-cookie", "blockClaudeExtraUsageDescription": "Når aktiveret, markerer OmniRoute denne Claude-forbindelse som utilgængelig, så snart brug API'et rapporterer køet ekstra brug, så fallback skifter til en anden forbindelse i stedet for at fortsætte med pay-as-you-go ekstra fakturering.", "blockClaudeExtraUsageLabel": "Bloker ekstra Claude-brug", - "disableCoolingDescription": "Skip the transient cooldown so this connection stays eligible even after recoverable errors (terminal states like banned/expired still apply).", + "disableCoolingDescription": "Spring den midlertidige nedkølingsperiode over, så denne forbindelse forbliver tilgængelig, selv efter fejl, der kan afhjælpes (sluttilstande som udelukket/udløbet gælder stadig).", "disableCoolingLabel": "Deaktiver afkøling for denne forbindelse", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 nøgle tilføjet} other {# nøgler tilføjet}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 dublet sprunget over} other {# dubletter sprunget over}}", + "bulkPasteHint": "Indsæt én API-nøgle pr. linje. Tomme linjer ignoreres, og dublerede nøgler springes over.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Tilføjer beta-headeren redact-thinking for CC Compatible-upstreams, der kræver skjulte Claude-tænkestrømme.", + "ccCompatibleRedactThinkingLabel": "Aktivér redact-thinking-beta", + "ccCompatibleSummarizeThinkingDescription": "Tilføjer `display: \"summarized\"` til CC Compatible-tænkningsanmodninger, så understøttede Claude-modeller streamer synlige tænkningsdeltaer.", + "ccCompatibleSummarizeThinkingLabel": "Aktivér opsummeret visning af tænkning", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,20 +5811,20 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Brug prioritetsserviceniveauet til Codex-anmodninger, når det er tilgængeligt.", + "codexFastServiceTierLabel": "Hurtigt Codex-serviceniveau", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", - "newApiAggregatorToggleLabel": "Aggregator Gateway", + "compatUpstreamHeaderNamePlaceholder": "Pladsholder for headernavn til kompatibel upstream", + "compatUpstreamHeaderValuePlaceholder": "Pladsholder for headerværdi til kompatibel upstream", + "compatible": "Kompatibel", + "configuredCount": "Antal konfigurerede", + "consoleApiKeyOracleHint": "Tip til Console API-nøgle for Oracle", + "consoleApiKeyOracleLabel": "Oracle-etiket for konsollens API-nøgle", + "consoleApiKeyOraclePlaceholder": "Oracle-pladsholder for konsollens API-nøgle", + "newApiUserIdLabel": "New-API-bruger-ID", + "newApiUserIdPlaceholder": "f.eks. 12345", + "newApiUserIdHint": "AgentRouter New-Api-User-headerens værdi, der bruges sammen med konsollens API-nøgle til at hente kvotebalancen.", + "newApiAggregatorToggleLabel": "Aggregatorgateway", "newApiAggregatorToggleHint": "Aktivér balancedetektion for New-API / One-API / Sub2API aggregator-noder. Dashboardet vil vise balancebadge, og kvote-forflytning vil springe udtømte konti over.", "newApiAggregatorConsoleApiKeyHint": "System Access Token til aggregatorens /api/user/self endpoint. Ikke routing API-nøglen.", "newApiAggregatorUserIdHint": "New-Api-User header værdi brugt til at hente aggregator brugerens kvote saldo.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Aktivér balancedetektion for New-API / One-API / Sub2API aggregator-kompatible noder", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Tip til brugerdefineret brugeragent", + "customUserAgentLabel": "Etiket for brugerdefineret brugeragent", + "databricksBaseUrlHint": "Tip til Databricks-basis-URL", + "defaultThinkingStrengthHint": "Bruges, når en anmodning ikke angiver ræsonneringsindsatsen.", + "defaultThinkingStrengthLabel": "Standardstyrke for tænkning", + "deleteAllExtraApiKeys": "Slet alle", + "excludedModelsHint": "Tip til udelukkede modeller", + "excludedModelsLabel": "Etiket for udelukkede modeller", + "excludedModelsPlaceholder": "Pladsholder for udelukkede modeller", + "expirationBannerExpired": "Udløbsbanner: Udløbet", + "expirationBannerExpiredDesc": "Beskrivelse af udløbsbanner: Udløbet", + "expirationBannerExpiringSoon": "Udløbsbanner: Udløber snart", + "expirationBannerExpiringSoonDesc": "Beskrivelse af udløbsbanner: Udløber snart", + "extraApiKeyMasked": "Nøgle {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Tip til ekstra API-nøgler", + "extraApiKeysLabel": "Etiket for ekstra API-nøgler", + "apiKeyHealthLabel": "API-nøglestatus", + "apiKeyStatusActive": "Aktiv", + "apiKeyStatusWarning": "Advarsel ({count} fejl)", + "apiKeyStatusInvalid": "Ugyldig", + "primaryKey": "Primær nøgle", + "apiKeyInvalidAlert": "{count} API-nøgle(r) er markeret som ugyldige på grund af godkendelsesfejl i forbindelserne: {connections}. De springes over under rotation. Klik for at gennemgå.", + "apiKeyInvalidAlertTitle": "Advarsel om API-nøglestatus", + "apiKeyWarningAlert": "{count} API-nøgle(r) er i advarselstilstand på grund af en forhøjet fejlrate i forbindelserne: {connections}. Gennemgå dem for at undgå rotationsproblemer.", + "apiKeyWarningAlertTitle": "Advarsel om API-nøgle", + "googlePseInfo": "Oplysninger om Google Pse", "antigravityProjectIdHint": "Valgfri tilsidesættelse af anmodninger om Antigravity Cloud Code. Lad feltet stå tomt for at bruge det projekt, der blev opdaget under Google OAuth.", "antigravityClientProfileLabel": "Klientprofil", "antigravityClientProfileHint": "Vælg, hvilken Antigravity-klientidentitet OmniRoute præsenterer for API'en.", @@ -5865,18 +5868,18 @@ "tierFast": "Hurtig", "antigravityProjectIdLabel": "Google Cloud-projekt-id", "antigravityProjectIdPlaceholder": "mit-gcp-projekt-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Pladsholder for Grok-webcookie", + "herokuBaseUrlHint": "Tip til Heroku-basis-URL", + "hideEmail": "Skjul e-mail", + "imageProviders": "Billedudbydere", "videoProviders": "Videogenerering", "embeddingRerankProviders": "Indlejringer og omrangering", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Kort etiket for billeder", + "llmProviders": "LLM-udbydere", + "localProviderApiKeyOptionalHint": "Tip til valgfri API-nøgle for lokal udbyder", + "localProviderBaseUrlHint": "Tip til basis-URL for lokal udbyder", + "localProviders": "Lokale udbydere", + "maxConcurrentWholeNumberError": "Maks. antal samtidige skal være et heltal", "m365TierLabel": "Copilot-niveau", "m365TierHint": "Vælg, hvilken Microsoft 365 Copilot-flade denne forbindelse bruger. Individuel er standardforbruger-BizChat; Uddannelse og Enterprise (arbejde) tilmelder sig deres tenant-flader.", "m365TierIndividualOption": "Individuel (standard)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Billig", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Fastgør denne udbyder til et routing-niveau i stedet for at lade OmniRoute udlede det fra modelprissætningen.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Tip til Muse Spark-webcookie", + "museSparkWebCookiePlaceholder": "Pladsholder for Muse Spark-webcookie", + "oauth": "OAuth", + "openCliTools": "Åbn CLI-værktøjer", + "openSettings": "Åbn indstillinger", + "openaiResponsesStoreDescription": "Tillad kompatible Responses API-anmodninger at bevare gemt svartilstand.", + "openaiResponsesStoreLabel": "OpenAI Responses-lagring", + "perplexitySearchSharedKeyInfo": "Oplysninger om delt nøgle til Perplexity Search", + "perplexityWebCookieHint": "Tip til Perplexity-webcookie", + "perplexityWebCookiePlaceholder": "Pladsholder for Perplexity-webcookie", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Tilsidesættelser af hastighedsbegrænsning", "rateLimitOverridesMaxConcurrentHint": "Tilsidesættelse af maks. samtidige anmodninger for denne forbindelse. Tilsidesætter loftet på kontoniveau.", "rateLimitOverridesMaxConcurrentLabel": "Maks. samtidige (hastighedsbegrænsning)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Det maksimale tidsrum (ms), en anmodning må vente på en plads under hastighedsgrænsen, før den mislykkes. Tilsidesætter kun den globale robusthedsindstilling for denne forbindelse.", + "rateLimitOverridesMaxWaitMsLabel": "Maks. ventetid i kø (ms)", "rateLimitOverridesMinTimeHint": "Minimumstid (ms) mellem anmodninger. Tilsidesætter standardforsinkelsen for hastighedsbegrænseren.", "rateLimitOverridesMinTimeLabel": "Min. interval (ms)", "rateLimitOverridesRpdHint": "Maksimalt antal anmodninger pr. dag for denne forbindelse. Tilsidesætter udbyderens standard.", @@ -5915,55 +5918,55 @@ "rateLimitOverridesTpdHint": "Maks. tokens pr. dag for denne forbindelse. Tilsidesætter udbyderens standard.", "rateLimitOverridesTpdLabel": "TPD (Tokens/dag)", "rateLimitOverridesTpmHint": "Maks. tokens pr. minut for denne forbindelse. Tilsidesætter udbyderens standard.", - "rateLimitOverridesTpmLabel": "TPM (Tokens/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "rateLimitOverridesTpmLabel": "TPM (tokens/min.)", + "refreshOauthTokenTitle": "Titel til opdatering af OAuth-token", + "regionHint": "Tip til område", + "regionLabel": "Områdeetiket", + "removeThisKey": "Fjern denne nøgle", + "routingTagsHint": "Tip til routing-tags", + "routingTagsLabel": "Etiket til routing-tags", + "routingTagsPlaceholder": "Pladsholder for routing-tags", + "search": "Søg", + "searchEngineIdHint": "Tip til søgemaskine-id", + "searchEngineIdLabel": "Etiket til søgemaskine-id", + "searchEngineIdRequired": "Søgemaskine-id er påkrævet", + "searchProvider": "Søgeudbyder", + "searchProviderDesc": "Beskrivelse af søgeudbyder", "searchProviders": "Søg efter udbydere...", "searchByModel": "Søg efter model…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Overskrift for søgeudbydere", + "searxngBaseUrlHint": "Tip til Searxng-basis-URL", + "searxngInfo": "Oplysninger om Searxng", + "sessionCookieLabel": "Etiket til sessionscookie", + "showEmail": "Vis e-mail", + "snowflakeBaseUrlHint": "Tip til Snowflake-basis-URL", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Tip til taggruppe", + "tagGroupLabel": "Etiket til taggruppe", + "tagGroupPlaceholder": "Pladsholder for taggruppe", + "testModel": "Test model", + "testingModel": "Testmodel", "modelTestQuotaTooltip": "Quota opbrugt — nulstilles i morgen eller kræver en opfyldning", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Badge for udløbet token", + "tokenExpiredTitle": "Titel for udløbet token", + "tokenExpiresSoonTitle": "Titel for token, der snart udløber", + "tokenShort": "Token, kort", + "totalKeysRotating": "{count, plural, one {1 nøgle roterer} other {# nøgler roterer}}", + "unhideModel": "Vis model igen", + "upstreamProxyProviders": "Udbydere af upstream-proxy", "validationModelIdHint": "Model, der bruges til at verificere API-nøglen. Lad feltet stå tomt for at bruge udbyderens første tilgængelige model.", "validationModelIdLabel": "Valideringsmodel", "validationModelIdPlaceholder": "f.eks. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Indsæt din Service Account-JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) eller et OAuth access_token", + "webCookieProviders": "Udbydere af webcookies", + "weeklyShort": "Ugentligt, kort", + "xiaomiMimoBaseUrlHint": "Tip til Xiaomi Mimo-basis-URL", "globalCodexServiceMode": "Global Codex-tjenestetilstand", "connect": "Opret forbindelse", "manualApiKey": "Manuel API-nøgle", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Find AI-udbyderoplysninger (OpenAI, Anthropic, Google, Mistral, xAI) gemt af Zed IDE i OS-nøgleringen og importer dem som forbindelser. Zed IDE skal være installeret på denne maskine.", "zedImportButton": "Importér fra Zed", "zedImportFailed": "Zed import fejlede", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Tip til Zed-import", + "zedImportNetworkError": "Netværksfejl ved Zed-import", + "zedImportNone": "Ingen Zed-import", "zedImportSuccess": "Importerede {credentials} legitimationsoplysninger fra Zed for {providers} udbyder(e)", "zedImporting": "Importer…", "zedNoCredentials": "Ingen Zed-legitimationsoplysninger fundet i nøgleringen", @@ -6017,7 +6020,7 @@ "providerDetailFastDefaultLabel": "Hurtig standard", "providerDetailBrowserManualConnect": "Browser/manuel forbindelse", "providerDetailAuthUrl": "Godkendt URL", - "providerDetailCallbackUrl": "Callback URL", + "providerDetailCallbackUrl": "Callback-URL", "providerDetailValidClaudeCredentialsFile": "Gyldig Claude-legitimationsfil", "providerDetailPathAutoDetectedAllOs": "Stien registreres automatisk pr. OS (Linux/Mac/Windows).", "providerDetailMyClaudeAccountPlaceholder": "Min Claude-konto", @@ -6032,27 +6035,27 @@ "claudeImportEntryName": "post {number}", "claudeImportParseError": "parsefejl", "claudeImportNoValidEntries": "Ingen gyldige poster at importere", - "webFetch": "Web Fetch", + "webFetch": "Webhentning", "webFetchTooltip": "Udbydere, der udtrækker indhold fra web-URL'er (HTML → Markdown, scraping, screenshot)", "webFetchProvidersHeading": "Web Fetch-udbydere", "compatibleProvidersDesc": "OpenAI-kompatible og Anthropic-kompatible slutpunkter, du hoster eller konfigurerer. Peg ethvert OpenAI SDK mod din egen URL og videresend anmodninger hertil.", "oauthProvidersDesc": "Udbydere godkendt via OAuth — log ind én gang, og OmniRoute håndterer token-rotation automatisk.", "webCookieProvidersDesc": "Disse udbydere bruger browserwebsessioner, cookies eller webtokens i stedet for API-nøgler. Åbn en udbyder for at tilføje den nødvendige sessionslegitimationsoplysninger.", "apiKeyProvidersDesc": "Standard API-nøgleudbydere. Tilføj din nøgle én gang, og OmniRoute videresender, forsøger igen og hastighedsbegrænser på dine vegne.", - "noAuthProvidersDesc": "Open endpoints that require no credentials — ready to use immediately without any sign-up.", - "upstreamProxyProvidersDesc": "Route outbound traffic through an upstream proxy before it reaches the provider. Useful for corporate networks or traffic inspection.", - "webFetchProvidersDesc": "Providers that fetch and extract content from web URLs. Use them to ground prompts with live web data.", - "aggregatorsGatewaysDesc": "Multi-provider aggregators and AI gateways that expose a single unified API across dozens of underlying models.", - "enterpriseCloudDesc": "Enterprise-tier and cloud-hosted models with enhanced SLAs, compliance certifications, and dedicated capacity.", - "cloudAgentProvidersDesc": "Autonomous cloud agents that execute long-running tasks with plan approval and live status tracking.", - "localProvidersDesc": "Self-hosted models running on your own hardware. No data leaves your infrastructure.", - "searchProvidersDesc": "Web and document search providers. Attach them to LLM calls for Retrieval-Augmented Generation.", - "audioProvidersDesc": "Text-to-speech and speech-to-text providers for voice I/O and audio transcription pipelines.", - "embeddingRerankProvidersDesc": "Vector embedding and reranking providers for semantic search, RAG pipelines, and similarity scoring.", - "imageProvidersDesc": "Image generation and vision providers — create images from text or analyse existing ones.", - "videoProvidersDesc": "Video generation providers. Create short video clips from text prompts or images.", + "noAuthProvidersDesc": "Åbne slutpunkter, der ikke kræver legitimationsoplysninger – klar til brug med det samme uden tilmelding.", + "upstreamProxyProvidersDesc": "Diriger udgående trafik gennem en upstream-proxy, før den når udbyderen. Nyttigt til virksomhedsnetværk eller trafikinspektion.", + "webFetchProvidersDesc": "Udbydere, der henter og udtrækker indhold fra web-URL'er. Brug dem til at underbygge prompts med aktuelle webdata.", + "aggregatorsGatewaysDesc": "Aggregatorer med flere udbydere og AI-gateways, der tilbyder én samlet API på tværs af snesevis af underliggende modeller.", + "enterpriseCloudDesc": "Modeller på virksomhedsniveau og cloudhostede modeller med forbedrede SLA'er, compliancecertificeringer og dedikeret kapacitet.", + "cloudAgentProvidersDesc": "Autonome cloudagenter, der udfører langvarige opgaver med plangodkendelse og live-statussporing.", + "localProvidersDesc": "Selvhostede modeller, der kører på din egen hardware. Ingen data forlader din infrastruktur.", + "searchProvidersDesc": "Udbydere af web- og dokumentsøgning. Knyt dem til LLM-kald til Retrieval-Augmented Generation.", + "audioProvidersDesc": "Udbydere af tekst-til-tale og tale-til-tekst til stemmeinput/-output og pipelines til lydtransskription.", + "embeddingRerankProvidersDesc": "Udbydere af vektorindlejringer og genrangering til semantisk søgning, RAG-pipelines og lighedsscorer.", + "imageProvidersDesc": "Udbydere af billedgenerering og vision – opret billeder ud fra tekst, eller analysér eksisterende billeder.", + "videoProvidersDesc": "Udbydere af videogenerering. Opret korte videoklip ud fra tekstprompts eller billeder.", "onboardingWizard": "Udbyder Onboarding Wizard", - "onboardingWizardShort": "Onboarding Wizard", + "onboardingWizardShort": "Introduktionsguide", "onboardingWizardDescription": "Forbind API-nøgle, brugerdefinerede kompatible og OAuth-udbydere med validering, vedholdenhed og en øjeblikkelig forbindelsestest.", "onboardingStepType": "Type", "onboardingStepProvider": "Udbyder", @@ -6096,7 +6099,7 @@ "onboardingApiKeyOptionalLabel": "API-nøgle (valgfrit)", "onboardingBaseUrlOverride": "Tilsidesættelse af basis-URL", "onboardingBaseUrlOverrideHint": "Valgfrit. Gemt som providerSpecificData.baseUrl.", - "onboardingRegion": "Region", + "onboardingRegion": "Område", "onboardingSearchCx": "Søg CX / Engine id", "onboardingProviderSpecificIdPlaceholder": "Valgfrit udbyderspecifikt id", "onboardingCustomUserAgent": "Tilpasset bruger-agent", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Rabatbelagt API-proxy til 40+ modeller inklusive GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Hent din API-nøgle på https://freeaiapikey.com/dashboard. Base-URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Få $300 gratis API-kredit på https://freemodel.dev — ingen betalingsoplysninger påkrævet. OpenAI-kompatibelt slutpunkt. GPT-5.4- og GPT-5.5-modeller tilgængelige.", "friendliai": "Gratis niveau til serverløs inferens — intet kreditkort påkrævet", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Gratis niveau via Google AI Studio; kvoter pr. model offentliggøres ikke længere (se kvotesiden i AI Studio) – intet kreditkort påkrævet.", "gigachat": "Forbind GigaChat (Sber) med en API-nøgle.", "gitlab": "Personligt adgangstoken til GitLab til den offentlige Code Suggestions API. Konfigurer en selvhostet base-URL, når du ikke bruger gitlab.com.", "gitlawb-gmi": "Hent din API-nøgle fra Gitlawb Opengateway-dashboardet.", @@ -6184,7 +6187,7 @@ "glm-cn": "Forbind GLM Coding (Kina) med en API-nøgle.", "glmt": "Forudindstillet GLM-profil med højere token-budget, tænkning aktiveret og længere timeout.", "getgoapi": "Forbind GoAPI med en API-nøgle.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Gratis abonnement: grænser pr. model (200K tokens/dag pr. chatmodel; se console.groq.com/docs/rate-limits for RPM/RPD) – ingen betalingsmetode registreret.", "haiper": "Hent API-nøgle på haiper.ai/haiper-api", "heroku": "Forbind Heroku AI med en API-nøgle.", "hcnsec": "Få API-nøgle på api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Opret en API-nøgle på https://app.requesty.ai, og indsæt den derefter her som en Bearer-token. OpenAI-kompatibelt slutpunkt på https://router.requesty.ai/v1 med et live /v1/models-katalog.", "runwayml": "Runway-videogenerering er opgavebaseret. OmniRoute indsender tekst-til-video- eller billede-til-video-job, poller /v1/tasks/[id] og normaliserer de færdige videooutput tilbage til det OpenAI-lignende /v1/videos/generations-svar.", "sambanova": "$5 i gratis kredit ved tilmelding (30 dages gyldighed), intet kreditkort påkrævet", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Opret en API-nøgle på https://seekai.cc, og indsæt den derefter her som et Bearer-token. OpenAI-kompatibel basis-URL: https://seekai.cc/v1.", "sap": "Modelfindelse bruger /v2/lm/scenarios/foundation-models/models på AI_API_URL. Chatanmodninger bruger deploymentUrl/chat/completions og kræver AI-Resource-Group.", "sarvam": "Sarvam AI er OpenAI-kompatibel på /v1. OmniRoute undersøger /v1/models og dirigerer chattrafik til /v1/chat/completions. Modellerne er tilpasset til indiske sprog.", "scaleway": "1M gratis tokens til nye konti — EU/GDPR-kompatibel (Paris), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Forbind Claude Code med det eksisterende OAuth-flow.", "cline": "Forbind Cline med det eksisterende OAuth-flow.", "cursor": "Forbind Cursor IDE med det eksisterende OAuth-flow.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Forbind Cursor med en bruger-API-nøgle (crsr_...) fra cursor.com/dashboard/api; der kræves ingen IDE-session.", "github": "Forbind GitHub Copilot med det eksisterende OAuth-flow.", "gitlab-duo": "OAuth-applikation med ai_features + read_user-scopes. Konfigurer GITLAB_DUO_OAUTH_CLIENT_ID og valgfrit GITLAB_DUO_OAUTH_CLIENT_SECRET på denne OmniRoute-instans.", "kilocode": "Forbind Kilo Code med det eksisterende OAuth-flow.", @@ -6326,7 +6329,7 @@ "openWebProviderSite": "Åbn {host}", "addProviderWebTokenTitle": "Tilføj {provider} webtoken", "addProviderConnectionTitle": "Tilføj {provider} forbindelse", - "webTokenCredentialLabel": "Web session token", + "webTokenCredentialLabel": "Websessionstoken", "webNoAuthCredentialLabel": "Der kræves ingen legitimationsoplysninger", "webCookieCredentialHint": "Påkrævet cookie: {credential}. Indsæt cookie-headerværdien fra din egen loggede {provider} websession. Inkluder ikke Cookie:-præfikset.", "webTokenCredentialHint": "Legitimationsoplysninger: {credential}. Indsæt tokenværdien fra din egen loggede {provider}-websession eller en DevTools HAR-eksport, hvis udbyderen understøtter det.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Kopiér de påkrævede legitimationsoplysninger fra udbyderens eget domæne. For cookies skal du kun kopiere Cookie-headerværdien og udelade Cookie:.", "webSessionGuideStep3Manual": "Manuel sti: åbn browserens udviklerværktøjer (F12 → Netværk), opdater siden, åbn en godkendt anmodning, og kopier Cookie-headerens værdi fra anmodningsoverskrifterne — udelad Cookie:-præfikset.", "webSessionGuideStep4": "Indsæt det her og kontroller forbindelsen. Hvis det holder op med at fungere, skal du logge ind igen og erstatte det med en ny værdi.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importér .har-fil", + "harImportButtonBusy": "Importerer…", + "harImportButtonHint": "Eksportér fra fanen Network i DevTools efter at have sendt mindst én chatbesked.", + "harImportStatusValid": "Importeret — gyldig i ~{minutes} min.", + "harImportStatusExpiringSoon": "Importeret — kun gyldig i ~{minutes} min. endnu.", + "harImportStatusExpired": "Importeret, men dette token udløb allerede (for {minutes} min. siden) — eksportér en ny HAR.", + "harImportStatusUnknownExpiry": "Importeret. Udløbstiden kunne ikke aflæses.", + "harImportErrorNotJson": "Filen er ikke gyldig JSON — er det virkelig en .har-eksport?", + "harImportErrorNoEntries": "Denne HAR indeholder ingen registrerede netværksposter.", + "harImportErrorNoChathubUrl": "Der blev ikke fundet nogen Copilot-chatforbindelse i denne HAR. Send mindst én chatbesked i m365.cloud.microsoft før eksport.", + "harImportErrorUnparsableUrl": "Chatforbindelsen blev fundet, men dens URL kunne ikke aflæses.", + "harImportErrorMissingFields": "Chatforbindelsen blev fundet, men dens token manglede.", + "harImportErrorReadFailed": "Filen kunne ikke læses.", + "harImportErrorUnknown": "Der kunne ikke udtrækkes legitimationsoplysninger fra denne HAR-fil.", "webSessionSecurityHint": "Behandl dette som en adgangskode: den kan få adgang til din loggede webkonto, indtil den udløber eller tilbagekaldes.", "webNoAuthGuideTitle": "Der kræves ingen legitimationsoplysninger", "webNoAuthGuideBody": "{provider} behøver ikke en API-nøgle eller cookie. Gem forbindelsen for at bruge dens gratis webslutpunkt.", @@ -6405,11 +6408,11 @@ "batchUpdateFailed": "Batchopdatering mislykkedes", "batchUpdateNetworkError": "Netværksfejl under batchopdatering", "categoryAudio": "Lyd", - "categoryCloudAgent": "Cloud Agent", + "categoryCloudAgent": "Cloudagent", "categoryIde": "IDE", "categoryLocal": "Lokal", "categorySearch": "Søg", - "categoryWebCookie": "Web Cookie", + "categoryWebCookie": "Webcookie", "claudeExtraUsageBlockingDisabled": "Claude ekstra-brug blokering deaktiveret (ekstra brug er tilladt)", "claudeExtraUsageBlockingEnabled": "Claude ekstra-brug blokering aktiveret (ekstra brug vil blive blokeret)", "claudeRoutingPreferenceDisabled": "Uden præfiks Claude-modeller foretrækker ikke længere Claude Code", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Codex tjenestetilstand opdateret", "codexServiceTierActive": "Codex {tier} service niveau er aktivt", "codexTierFastLabel": "Hurtig", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Fleksibel", "commandCodeApplyFailed": "Mislykkedes med at anvende kommando kode auth", "commandCodeApplyingApproval": "Browser godkendt, anvender…", "commandCodeApplyingKey": "Anvender browser-godkendt nøgle…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Command Code auth udløbet", "commandCodeConnected": "Kommando Kode tilsluttet", "commandCodeConnectionAdded": "Command Code-forbindelse tilføjet", + "clearConnectionCooldown": "Ryd nedkølingsperiode", + "clearConnectionCooldownInProgress": "Rydder…", + "clearConnectionCooldownTitle": "Ryd nedkølingsperioden nu — brug dette, når kvoten allerede er blevet opdateret upstream", "commandCodeLinkExpired": "Command Code-linket er udløbet", "commandCodeOpeningStudio": "Åbner Command Code Studio…", "commandCodePopupBlocked": "Popup blokeret. Venligst tillad popups og prøv Command Code Connect igen.", "commandCodeStartFailed": "Mislykkedes at starte Command Code auth", "connectionDeleted": "Forbindelse slettet", "connectionFallback": "forbindelse", + "connectionCooldownCleared": "Nedkølingsperioden er ryddet — forbindelsen deltager igen i routingen", "coolingConnectionsDescription": "Disse forbindelser køler ned efter sidste anmodning. OmniRoute springer dem over, indtil timeren udløber — ingen manuel deaktivering nødvendig.", "coolingConnectionsTitle": "I øjeblikket køler ({count})", + "failedClearConnectionCooldown": "Nedkølingsperioden kunne ikke ryddes", "failedDeleteAlias": "Kunne ikke slette alias", "failedDeleteConnection": "Fejl ved sletning af forbindelse", "failedDistributeProxies": "Mislykkedes at distribuere proxyer.", @@ -6470,19 +6478,14 @@ "savedModelEndpointSettings": "Indstillinger for gemt model endpoint", "searchByModelAria": "Søg efter model", "selectSupportedEndpoint": "Vælg mindst én understøttet endpoint", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "Indstillinger", "general": "Generelt", "security": "Sikkerhed", "appearance": "Udseende", - "routing": "Routing", + "routing": "Rutevalg", "cache": "Cache", "resilience": "Modstandsdygtighed", "description": "Beskrivelse", @@ -6554,22 +6557,22 @@ "systemPrompt": "Systemprompt", "thinkingBudget": "Tænke budget", "proxy": "Fuldmagt", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP-proxy", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Proxysektioner", + "requestBodyLimitTitle": "Grænse for anmodningstekst", + "requestBodyLimitDescription": "Den maksimale API-nyttelaststørrelse, der accepteres, før en anmodningstekst fortolkes. Dedikerede uploadruter bevarer som minimum deres indbyggede grænse på 100 MB.", + "requestBodyLimitInputLabel": "Grænse for anmodningstekst i MB", + "requestBodyLimitEmptyError": "Angiv en grænse i MB", + "requestBodyLimitWholeNumberError": "Brug et helt tal", + "requestBodyLimitMinimumError": "Minimum er {min} MB", + "requestBodyLimitMaximumError": "Maksimum er {max} MB", + "requestBodyLimitLoadFailed": "Indstillingerne for anmodningsgrænsen kunne ikke indlæses", + "requestBodyLimitSaveSuccess": "Grænse for anmodningstekst gemt", + "requestBodyLimitSaveFailed": "Kunne ikke gemme grænsen for anmodningstekst", + "requestBodyLimitSaving": "Gemmer...", + "requestBodyLimitSave": "Gem", + "requestBodyLimitCurrent": "Aktuel: {value}", "cacheConfigLoadFailed": "Kunne ikke indlæse cacheindstillinger", "cacheConfigSaveSuccess": "Cacheindstillinger gemt", "cacheConfigSaveFailed": "Fejl ved gemning af cacheindstillinger", @@ -6582,7 +6585,7 @@ "modelCatalogCacheTtlSaving": "Gemmer...", "modelCatalogCacheTtlSave": "Gem", "modelCatalogCacheTtlCurrent": "Aktuel: {value} ms", - "mitmProxy": "MITM Proxy", + "mitmProxy": "MITM-proxy", "pricing": "Prissætning", "storage": "Opbevaring", "policies": "Politikker", @@ -6593,59 +6596,59 @@ "enablePassword": "Aktiver adgangskode", "darkMode": "Mørk tilstand", "lightMode": "Lys tilstand", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Hukommelse", + "memoryDesc": "Vedvarende samtalehukommelse på tværs af sessioner", + "memoryEnabled": "Aktivér hukommelse", + "memoryEnabledDesc": "Når funktionen er aktiveret, indsætter OmniRoute relevant tidligere kontekst.", "memoryTokenCostWarning": "Bemærk: Når hukommelse er aktiveret, indsætter OmniRoute op til {tokens} tokens af hentet kontekst i hver chatanmodning – dette øger tokenforbrug og omkostninger. For at springe indsættelse over for en specifik anmodning, send headeren \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", + "maxTokens": "Maks. antal tokens", + "retentionDays": "Opbevaring", + "recent": "Seneste", + "recentDesc": "Kronologisk vindue", + "semantic": "Semantisk", + "semanticDesc": "Vektorsøgning", "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "hybridDesc": "Seneste + semantisk", + "skillsTitle": "Færdigheder", + "skillsDesc": "Værktøjer til modeller", + "skillsEnabled": "Aktivér færdigheder", + "skillsEnabledDesc": "Giver agenter mulighed for at udløse funktioner.", + "skillsComingSoon": "Markedsplads for færdigheder kommer snart.", + "memorySkillsTitle": "Hukommelse og færdigheder", + "memorySkillsDesc": "Vedvarende kontekst og funktioner", + "modelsDevTitle": "Modeldatabase", + "modelsDevDesc": "Synkroniser automatisk priser, funktioner og specifikationer fra models.dev", + "modelsDevEnabled": "Aktivér synkronisering med models.dev", + "modelsDevEnabledDesc": "Hent modelpriser, funktioner og specifikationer fra open source-databasen models.dev", + "modelsDevInterval": "Synkroniseringsinterval", + "syncNow": "Synkroniser nu", + "syncing": "Synkroniserer...", + "lastSync": "Seneste synkronisering", + "never": "Aldrig", "justNow": "lige nu", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Synkroniseringsstatistik", + "modelsDevStatsDesc": "Aktuel datadækning fra models.dev", "providers": "Udbydere", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modeller med priser", + "capabilities": "Funktioner", + "lastSyncCount": "Antal ved seneste synkronisering", + "lastSyncFull": "Seneste fulde synkronisering", + "modelsDevInfo": "Sådan fungerer det", + "modelsDevInfoDesc": "models.dev er en open source-database med specifikationer for AI-modeller, som vedligeholdes af SST/OpenCode-teamet. Den indeholder priser, funktioner, kontekstgrænser og modaliteter for mere end 4.000 modeller fra mere end 100 udbydere.", + "modelsDevInfoResolution": "Rækkefølge for prisfastsættelse (højeste prioritet først):", + "modelsDevInfoOrder": "Brugertilsidesættelse → models.dev → LiteLLM → fastkodet standardværdi", "systemTheme": "System tema", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Aktivér fejlfindingstilstand", "logToolSourcesToggle": "Logfør værktøjskilder", "logToolSourcesDescription": "Udsend en diagnostisk loglinje pr. anmodning, der opsummerer antallet af værktøjer og fordelingen af MCP-/hosted-/klientkilder.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Fastgør oplysninger til startsiden", "homePinnedSectionsDesc": "Vælg, hvilke sektioner der skal fastgøres øverst på startsiden.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Udbydernes kvotegrænser", + "homeProviderQuotaLimitsDesc": "Fastgør statuspanelet for udbyderkvoter (med knappen Opdater alle) øverst på startsiden.", + "homeQuickStart": "Hurtig start", + "homeQuickStartDesc": "Vis panelet Hurtig start på startsiden.", + "homeProviderTopology": "Udbydertopologi", + "homeProviderTopologyDesc": "Vis udbydertopologien på startsiden.", "accountEmailVisibility": "Synlighed af konto-e-mail", "accountEmailVisibilityDesc": "Vis fulde konto-e-mails på tværs af udbydere, combos, logfiler, kvote- og playground-skærme. Slå dette fra for at maskere dem som standard.", "comboConfigMode": "Combo-konfigurationstilstand", @@ -6661,53 +6664,53 @@ "providerQuotaAutoRefreshInterval": "Opdateringsinterval", "providerQuotaAutoRefreshIntervalDesc": "Hvor ofte kvotevisningen skal opdateres, i sekunder.", "seconds": "sekunder", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Vis elementer i sidepanelet", "enableCache": "Aktiver cache", - "cacheTTL": "Cache TTL", + "cacheTTL": "Cache-TTL", "maxCacheSize": "Max cachestørrelse", "clearCache": "Ryd cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Cachen blev ryddet", + "clearCacheFailed": "Cachen kunne ikke ryddes", "cacheHits": "Cache hits", "cacheMisses": "Cache misses", "hitRate": "Hitrate", "cacheEntries": "Cache-indtastninger", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Cacheindstillinger", + "semanticCache": "Semantisk cache", + "maxEntries": "Maks. antal poster", + "ttlMinutes": "TTL (minutter)", "promptCache": "Spørg cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Strategi", + "preserveClientCache": "Bevar klientcache", + "enabled": "Aktiveret", "loading": "Loading...", "saving": "Gemmer...", - "save": "Save", + "save": "Gem", "circuitBreaker": "Strømafbryder", "retryPolicy": "Politik for forsøg igen", "maxRetries": "Max forsøger igen", "retryDelay": "Forsink igen", - "timeoutMs": "Timeout (ms)", + "timeoutMs": "Tidsgrænse (ms)", "enableSystemPrompt": "Aktiver systemprompt", "systemPromptText": "Systemprompttekst", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Deaktivér automatisk udelukkede konti", + "autoDisableDescription": "Markér udbyderforbindelser permanent som deaktiverede, hvis de returnerer specifikke endelige udelukkelsessignaler (f.eks. HTTP 403 'verify your account'). Dette fjerner dem fra kombinationsrotationen.", + "autoDisableThreshold": "Udelukkelsestærskel", + "autoDisableThresholdDesc": "Antal på hinanden følgende udelukkelsessignaler, der kræves før permanent deaktivering.", + "autoDisableBannedScope": "Anvend automatisk deaktivering på", + "autoDisableBannedScopeDesc": "Login-pladser (betalte abonnementer og gratis konti) kan blive låst af upstream-tjenesten, hvis OmniRoute fortsætter med at prøve igen efter en udelukkelse. Betalte forudbetalte API-nøgler har ikke denne risiko – lad dem blive i puljen, så fill-first kan bruge den næste nøgle.", + "autoDisableBannedScopeAll": "Alle forbindelser", + "autoDisableBannedScopeAllDesc": "Deaktivér alle forbindelser, der returnerer et permanent udelukkelsessignal, herunder forudbetalte API-nøgler.", + "autoDisableBannedScopeSubscription": "Kun login-/abonnementskonti", + "autoDisableBannedScopeSubscriptionDesc": "Deaktivér OAuth-, cookie-, sessions- og web-login-pladser (betalte eller gratis). Forudbetalte API-nøgler forbliver aktive, så routingen kan skifte til en reserveforbindelse.", "customBannedSignals": "Blokerede nøgleord", "customBannedSignalsDesc": "Yderligere nøgleord, der udløser registrering af permanent kontoudelukkelse. Indbyggede nøgleord gælder altid.", "customBannedSignalsPlaceholder": "f.eks. api key revoked", "noCustomBannedSignals": "Ingen brugerdefinerede nøgleord. Kun indbyggede nøgleord er aktive.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Robusthedsstruktur", "resilienceStructureDesc": "Denne side konfigurerer kun adfærd. Live breaker-tilstand vises på Sundhedssiden. Kombinationsspecifik genforsøg og round-robin slotkontrol forbliver på kombinationsindstillinger.", "enableThinking": "Aktiver tænkning", - "maxThinkingTokens": "Max Thinking Tokens", + "maxThinkingTokens": "Maks. antal thinking-tokens", "enableProxy": "Aktiver proxy", "perKeyProxyEnabled": "Aktivér proxytildeling pr. nøgle", "perKeyProxyEnabledDesc": "Når aktiveret, kan hver udbyderforbindelse bruge sin egen proxytildeling", @@ -6716,8 +6719,8 @@ "currentPricing": "Aktuel prisoversigt", "loadingPricing": "Indlæser prisdata...", "noPricing": "Ingen tilgængelige prisdata", - "input": "Input", - "output": "Output", + "input": "Inddata", + "output": "Uddata", "cached": "Cachelagret", "reasoning": "Ræsonnement", "cacheCreation": "Oprettelse af cache", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Vis Tailscale Funnel-kontroller på Endpoint-siden.", "showNgrokTunnel": "ngrok tunnel", "showNgrokTunnelDesc": "Vis ngrok Tunnel-kontroller på Endpoint-siden.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Skjul elementer i sidepanelet", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", + "presetAll": "Alle", + "presetAllDesc": "Vis alt", + "presetEssentials": "Grundlæggende", + "presetEssentialsDesc": "Begyndersti – avancerede værktøjer kan stadig findes via søgning", "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetMinimalDesc": "Kun kernesider", + "presetDeveloper": "Udvikler", + "presetDeveloperDesc": "Udvikler- og proxyværktøjer", + "presetAdmin": "Administrator", + "presetAdminDesc": "Overvågning og revision", + "settingsSidebarTitle": "Tilpasning af sidepanel", + "settingsSidebarDesc": "Vælg, hvilke elementer der skal vises i sidepanelet. Grundlæggende gør det stadig muligt at finde avancerede værktøjer via søgning.", "hideHealthLogs": "Skjul logs til sundhedstjek", "hideHealthLogsDesc": "Når ON, skal du undertrykke [HealthCheck]-meddelelser i serverkonsollen", "themeAccent": "Temafarve", @@ -6780,19 +6783,19 @@ "themeOrange": "Orange", "themeCyan": "Cyan", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Tilpas applikationens navn og logo", + "appName": "Applikationsnavn", + "appNameDesc": "Visningsnavn i sidepanelet og browserfanen", + "customLogo": "URL til brugerdefineret logo", + "customLogoDesc": "URL til dit brugerdefinerede logobillede", + "uploadLogo": "Upload logo", + "resetLogo": "Nulstil til standard", + "logoPreview": "Forhåndsvisning", + "customFavicon": "Browserfavicon", + "customFaviconDesc": "URL til dit brugerdefinerede favicon (vises i browserfanen)", + "uploadFavicon": "Upload favicon", + "resetFavicon": "Nulstil favicon", + "faviconPreview": "Forhåndsvisning af favicon", "logoFileTooLarge": "Logofilen skal være mindre end 500KB", "faviconFileTooLarge": "Favicon-filen skal være mindre end 50KB", "invalidLogoFileType": "Ugyldig filtype. Upload venligst PNG, JPG, SVG, GIF eller WebP.", @@ -6803,7 +6806,7 @@ "flushCache": "Skyl cache", "flushing": "Skyller...", "size": "Størrelse", - "hits": "Hits", + "hits": "Træffere", "evictions": "Udsættelser", "loadingCacheStats": "Indlæser cachestatistik...", "globalProxy": "Global proxy", @@ -6882,7 +6885,7 @@ "cancel": "Annuller", "configure": "Konfigurer", "copyEndpoint": "Kopier Endpoint", - "coreEndpointHint": "Core Endpoint Hint", + "coreEndpointHint": "Tip til kerneendepunkt", "coreNodesHint": "Kernerne Hint", "create": "Opret", "deleteConfirm": "Slet Bekræftelse", @@ -6896,21 +6899,21 @@ "refreshInterval": "Opdateringsinterval", "ruleModeDescription": "Regeltilstand Beskrivelse" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", + "bulkHealthcheck": "Samlet sundhedstjek", + "bulkHealthcheckDesc": "Test alle konfigurerede proxyer mod en destinations-URL for at finde ud af, hvilke der virker.", + "healthcheckTesting": "Tester...", + "healthcheckAll": "Sundhedstjek af alle", + "healthcheckFailed": "Sundhedstjekket kunne ikke køres", + "healthcheckTestingAll": "Tester alle proxyer parallelt...", + "healthcheckTotal": "I alt", + "healthcheckWorking": "Arbejder", + "healthcheckFailedLabel": "Mislykkedes", "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "healthcheckProxyUrl": "Proxy-URL", + "healthcheckLatency": "Ventetid", "proxyDocumentationScopeTitle": "Opløsning af proxy-omfang", "proxyDocumentationScopeDescBefore": "OmniRoute opløser den udgående proxy i prioritetsrækkefølge:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "kombination → konto → udbyder → global", "proxyDocumentationScopeDescAfter": ". Det mest specifikke omfang vinder.", "proxyDocumentationAddTitle": "Tilføjelse af en brugerdefineret proxy", "proxyDocumentationAddDescBefore": "Gå til", @@ -6945,7 +6948,7 @@ "proxyFreePoolAddSelected": "Tilføj valgte til pool", "proxyFreePoolAddVisible": "Tilføj alle synlige til pool", "proxyFreePoolSource": "Kilde", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Vært:Port", "proxyFreePoolType": "Type", "proxyFreePoolCountry": "Land", "proxyFreePoolQuality": "Kvalitet", @@ -6968,7 +6971,7 @@ "cancel": "Annuller", "globalLabel": "Globalt", "configure": "Konfigurer", - "globalSystemPrompt": "Global System Prompt", + "globalSystemPrompt": "Global systemprompt", "saved": "Gemt", "beforePromptLabel": "Før prompt", "beforePromptDesc": "Indsat før agent-/udbydersysteminstruktioner", @@ -6982,9 +6985,9 @@ "thinkingBudgetIndependenceHint": "Kompressions-, routing- og token-grænsefunktioner fortsætter med at fungere i alle tilstande. Auto betyder ikke \"auto-vis tænkning\" - det fjerner klientens ræsonneringsfelter.", "passthrough": "Gennemløb", "passthroughDesc": "Ingen ændringer - klienten styrer tænkebudgettet", - "thinkingModePassthrough": "Passthrough", + "thinkingModePassthrough": "Direkte videresendelse", "thinkingModePassthroughDesc": "Lad klientens ræsonnering forblive uændret (indsats, resumé, tænkeblokke). Påkrævet for Codex/Desktop synlig tænkning. Standard.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automatisk (fjern)", "thinkingModeAutoDesc": "Fjern alle klienttanker/overvejelser felter (overvejelse, overvejelse_besvær, Claude tænkning, Gemini tænkning_config) og lad udbyderen opfinde standarder. Kan skjule tænke paneler og bryde klient opsummeringsanmodninger.", "thinkingModeCustom": "Brugerdefineret", "thinkingModeCustomDesc": "Overskriv hver anmodning med et fast tænketokenbudget, du angiver nedenfor.", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} udbyder(e) blokeret fra /modeller", "blockProviderTitle": "Bloker {provider}", "unblockProviderTitle": "Fjern blokering af {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Matchning af CLI-fingeraftryk", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} udbyder(e) med aktivt CLI-fingeraftryk", + "enableFingerprintTitle": "Aktivér fingeraftryk for {provider}", + "disableFingerprintTitle": "Deaktivér fingeraftryk for {provider}", "systemTransforms": "System-blok Transform Pipeline", "systemTransformsDesc": "Pr. udbyder bestilt pipeline af transformationer anvendt på anmodningslegemet før videresendelse. Understøtter ethvert udbyder-id.", "systemTransformsAddProvider": "Tilføj udbyder", @@ -7065,13 +7068,13 @@ "leastUsedDesc": "Vælg den mindst brugte konto", "costOpt": "Omkostningsopt", "costOptDesc": "Foretrækker den billigste tilgængelige konto", - "resetAware": "Reset-Aware RR", + "resetAware": "Nulstillingsbevidst RR", "resetAwareDesc": "Foretrækker konti med sund resterende kvote og nærmere nulstillinger", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kvotevægtet", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "Strengt tilfældig", + "strictRandomDesc": "Blandet kortbunke — bruger hver konto én gang, før der blandes igen", + "stickyLimit": "Grænse for fastholdelse", "stickyLimitDesc": "Opkald pr. konto før skift", "routingStrategyTitle": "Ruteringsstrategi", "routingStrategySubtitle": "Match 9router: konto-round-robin, sticky-grænser og kombinationsrotation", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Tilsidesæt global kontostrategi for denne udbyder (9router-paritet).", "providerRoutingStrategy": "Kontostrategi", "providerRoutingInheritGlobal": "Nedarv global standard", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Grænseværdi for kvotekontrol", + "quotaPreflightSubtitle": "Spring konti uden resterende kvote over, før anmodningen sendes til upstream-tjenesten", + "quotaPreflightEnable": "Aktivér kvotekontrol", + "quotaPreflightEnableDesc": "Kontrollér før hver anmodning kontoens resterende kvote (vinduer på 5 timer/ugentligt/månedligt). Konti på eller under grænseværdien springes over uden et kald til upstream-tjenesten. Grænseværdier pr. vindue, der er angivet på siden Udbyderkvote, tilsidesætter altid standardværdien her.", + "quotaPreflightCutoff": "Global grænseværdi (min. resterende %)", + "quotaPreflightCutoffDesc": "Stop med at bruge en konto, når dens resterende kvote falder til denne procent eller derunder, for hvert vindue uden sin egen grænseværdi. Svarer til bjælkerne for resterende procent på siden Udbyderkvote.", + "quotaPreflightWindowsHint": "Vinduer med deres egen grænseværdi pr. vindue eller pr. udbyder (angivet i dialogboksen Grænseværdi på siden Udbyderkvote) påvirkes ikke af denne standardværdi.", + "quotaPreflightLoadFailed": "Indstillingerne for kvotekontrol kunne ikke indlæses.", "modelAliases": "Model aliaser", "modelAliasesTitle": "Model Aliaser", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Omdefiner modelnavne ved hjælp af nøjagtige match eller jokertegnsmønstre.", "addCustomAlias": "Tilføj Tilpasset Alias", "deprecatedModelId": "Forældet model-ID", "newModelId": "Nyt model-ID", @@ -7111,7 +7114,7 @@ "enableDegradationHint": "Når aktiveret, dirigeres baggrundsopgaver som titelgenerering og resuméer automatisk til billigere modeller", "tasksDetected": "Opgaver opdaget", "degradationMap": "Modeldegraderingsschema", - "premiumModel": "Premium model", + "premiumModel": "Premium-model", "cheapModel": "Billig model", "detectionPatterns": "Detektionsmønstre", "newPattern": "f.eks. \"generer en titel\"", @@ -7188,11 +7191,11 @@ "comboStrategyAria": "Kombinationsstrategi", "priority": "Prioritet", "weighted": "Vægtet", - "contextRelay": "Context Relay", + "contextRelay": "Kontekstoverførsel", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Max forsøger igen", "retryDelayLabel": "Forsinkelse af forsøg igen (ms)", - "timeoutLabel": "Timeout (ms)", + "timeoutLabel": "Tidsgrænse (ms)", "healthCheck": "Sundhedstjek", "healthCheckDesc": "Forhåndstjek udbyderens tilgængelighed", "trackMetrics": "Spor metrics", @@ -7200,7 +7203,7 @@ "providerOverrides": "Udbydertilsidesættelser", "providerOverridesDesc": "Tilsidesæt timeout og genforsøg pr. udbyder. Udbyderindstillinger tilsidesætter globale standardindstillinger.", "providerMaxRetriesAria": "{provider} maks. genforsøg", - "providerTimeoutAria": "{provider} timeout ms", + "providerTimeoutAria": "Timeout for {provider} i ms", "removeProviderOverrideAria": "Fjern {provider} tilsidesættelse", "selectProviderPlaceholder": "Vælg udbyder...", "searchProviderPlaceholder": "Søg efter udbydere...", @@ -7214,24 +7217,24 @@ "concurrencyPerModel": "Samtidighed / Model", "queueTimeout": "Timeout for kø (ms)", "queueDepth": "Kødybde", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Tærskel for overdragelse", + "contextRelayMaxMessages": "Maks. antal beskeder til resumé", + "contextRelaySummaryModel": "Oversigtsmodel", + "contextRelayProviderNote": "Context Relay genererer i øjeblikket overdragelser for Codex-konti og bruger disse værdier som globale standardindstillinger for nye eller ikke-konfigurerede kombinationer.", "providerProfiles": "Udbyder profiler", "providerProfilesDesc": "Separate indstillinger for modstandsdygtighed for OAuth (session-baserede) og API Key (målte) udbydere. OAuth-udbydere har strengere tærskler på grund af lavere takstgrænser.", "oauthProviders": "OAuth-udbydere", "apiKeyProviders": "API-nøgleudbydere", "transientCooldown": "Forbigående nedkøling", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", + "rateLimitCooldown": "Afkølingsperiode for hastighedsbegrænsning", + "maxBackoffLevel": "Maksimalt backoff-niveau", "cbThreshold": "CB-tærskel", "cbResetTime": "CB-nulstillingstid", "rateLimiting": "Satsbegrænsende", "rateLimitingDesc": "API-nøgleudbydere er automatisk hastighedsbegrænsede med sikre standardindstillinger. Grænser læres fra svaroverskrifter og tilpasses over tid.", "defaultSafetyNet": "Standard sikkerhedsnet", "rpm": "RPM", - "minGap": "Min Gap", + "minGap": "Minimumsinterval", "maxConcurrent": "Max samtidig", "activeLimiters": "Aktive begrænsere", "noActiveLimiters": "Ingen aktive hastighedsbegrænsere endnu.", @@ -7297,9 +7300,9 @@ "minutesAgo": "{count}m siden", "hoursAgo": "{count}t siden", "daysAgo": "{count}d siden", - "backupReasonManual": "manual", + "backupReasonManual": "manuel", "backupReasonPreRestore": "for-gendannelse", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# forbindelse} other {# forbindelser}}", "noChangesSinceBackup": "Ingen ændringer siden sidste backup", "backupFailed": "Sikkerhedskopiering mislykkedes", "restoreFailed": "Gendannelse mislykkedes", @@ -7329,7 +7332,7 @@ "configured": "konfigureret", "none": "Ingen", "modelOverrideValuePlaceholder": "Numerisk værdi", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Engelsk kommasepareret, f.eks. low, medium, high", "addKeyValue": "Tilføj nøgleværdi", "noModelOverrides": "Ingen tilsidesættelser konfigureret for denne model.", "modelOverrideLoadFailed": "Kunne ikke indlæse modeltilsidesættelser", @@ -7378,25 +7381,25 @@ "editPricing": "Rediger prissætning", "viewFullDetails": "Se alle detaljer", "themeCoral": "Koral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Adaptiv volumenrutevalg", + "adaptiveVolumeRoutingDesc": "Skaler forbindelser dynamisk baseret på datamængde og pres på gennemløbskapaciteten.", + "lkgpToggleTitle": "Sidst kendte fungerende udbyder (LKGP)", + "lkgpToggleDesc": "Når dette er aktiveret, husker routeren, hvilken udbyder der senest leverede et vellykket svar, og prøver denne først ved efterfølgende anmodninger.", "echoRequestedModelTitle": "Gentag anmodet modelnavn i svar", "echoRequestedModelDesc": "Når aktiveret, vil svarets `model`-felt afspejle det alias eller combo-navn, som klienten anmodede om, i stedet for upstream-modelnavnet. Løser problemer med strenge klienter (f.eks. Claude Desktop), der afviser et svar, hvis model ikke matcher anmodningen.", "webSearchRouteTitle": "Websøgningsrouting", "webSearchRouteDesc": "Når en anmodning indeholder et indbygget web_search-værktøj, skal hele anmodningen routes til denne model i stedet for standarden — nyttigt for udbydere, der ikke implementerer Anthropics web_search-serverværktøj. Lad feltet være tomt for at deaktivere.", "webSearchRoutePlaceholder": "Søg eller vælg en model…", "paidModelPatternWarning": "Dette mønster matcher kun betalte modeller — aktiver betalte modeller eller juster mønsteret.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Ryd LKGP-cache", + "lkgpCacheCleared": "LKGP-cachen blev ryddet", + "lkgpCacheClearFailed": "LKGP-cachen kunne ikke ryddes", + "days": "Dage", + "lkgp": "LKGP-tilstand", + "lkgpDesc": "Sidst kendte fungerende udbyder (forudsigelig robusthed)", + "maintenance": "Vedligeholdelse", + "purgeExpiredLogs": "Ryd udløbne logfiler", + "purgeLogsFailed": "Logfilerne kunne ikke ryddes", "logsDeleted": "{count, plural, =0 {Ingen udløbne logfiler ryddet} one {Ryddede # udløben logfil} other {Ryddede # udløbne logfiler}}", "resetUsageData": "Nulstil forbrugsdata", "resetUsageDataDesc": "Vælg, hvor langt tilbage du vil slette forbrug, anmodningslogfiler og analysedata. Udbyderkonfiguration, forbindelser, API-nøgler, comboer og indstillinger bevares. Denne handling kan ikke fortrydes.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Kunne ikke nulstille forbrugsdata", "reset": "Nulstil", "resetting": "Nulstiller...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Kontekstoptimeret", + "contextOptDesc": "Vælger rute baseret på krav til kontekstvinduet og samtalens længde", + "cacheOpt": "Cacheoptimeret", + "cacheOptDesc": "Beholder det samme genanvendelige promptpræfiks på den samme udbyderkonto", + "priorityDesc": "Sekventiel reserve – prøver først udbyder 1, derefter udbyder 2 osv.", + "weightedDesc": "Fordeler trafik mellem udbydere efter procentvise vægtninger", + "modelRoutingTitle": "Regler for modelrutevalg", + "modelRoutingDesc": "Send automatisk modeller til bestemte kombinationer ved hjælp af glob-mønstre", + "addRule": "Tilføj regel", + "routeToCombo": "Send til kombination", + "selectCombo": "Vælg kombination...", + "priorityHint": "Højere = kontrolleres først. Brug 10+ til specifikke mønstre.", + "patternHint": "Brug * til et vilkårligt antal tegn og ? til ét tegn. Der skelnes ikke mellem store og små bogstaver.", + "noRoutingRules": "Der er ikke konfigureret nogen regler for rutevalg. Anmodninger bruger som standard den globale kombination.", + "routingRuleHint": "Tilføj en regel som claude-opus* -> frontier-combo for automatisk at videresende anmodninger.", + "deleteRoutingRule": "Vil du slette denne regel for modelrutevalg?", + "exactMatchMode": "Præcist match", + "wildcardPatternMode": "Jokertegnsmønster", + "exactMatchModeDesc": "Brug eksakte aliasser til forældede eller omdøbte model-id'er.", + "wildcardPatternModeDesc": "Brug jokertegnsaliasser med * og ?, når en familie af modeller skal knyttes til ét mål.", + "noExactAliasesConfigured": "Ingen eksakte matchaliasser konfigureret.", + "wildcardRulesTitle": "Jokertegnsregler", + "noWildcardAliasesConfigured": "Ingen jokertegnsaliasser konfigureret.", + "overview": "Oversigt", + "unknownError": "Ukendt fejl", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Hvidliste", + "syncDisabled": "Synkronisering deaktiveret", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Synkronisering aktiveret", + "blacklist": "Sortliste", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", + "syncedModels": "Synkroniserede modeller", "budget": "Budget", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Prisen kunne ikke nulstilles: {reason}", - "tab": "Tab", + "tab": "Fane", "pricingSavedProvider": "Priser gemt for {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Prisen kunne ikke gemmes: {reason}", "pricingResetProvider": "Prisnulstilling for {provider}", - "nextSync": "Next Sync", + "nextSync": "Næste synkronisering", "pricingSyncFailedWithReason": "Prissynkronisering mislykkedes: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Ryd synkroniserede priser", + "compressionTitle": "Promptkomprimering", + "compressionDesc": "Reducer tokenforbruget ved at komprimere prompts, før de sendes til udbydere", "compressionGuidanceFullGuideLink": "Komplet komprimeringsguide", "compressionGuidanceShow": "Detaljer", "compressionGuidanceHide": "Skjul detaljer", @@ -7485,25 +7488,25 @@ "tokenSaverInputCompressionDesc": "Omskriv kvalificeret chathistorik, mens kode, URL'er og hensigt bevares.", "tokenSaverFineTunePrefix": "Finjuster hver motor på", "tokenSaverFineTuneSuffix": "eller kombiner motorer pr. anmodning på", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Komprimeringstilstand", + "compressionModeOff": "Fra", + "compressionModeOffDesc": "Ingen komprimering anvendt", + "compressionModeLite": "Let", + "compressionModeLiteDesc": "Reduktion af mellemrum og tomme linjer", + "compressionModeStandard": "Standard (Hulemand)", + "compressionModeStandardDesc": "Regelbaseret komprimering med mere end 30 mønstre, som bevarer kodeblokke og URL'er", + "compressionModeAggressive": "Aggressiv", + "compressionModeAggressiveDesc": "Opsummering + komprimering af værktøjsresultater + progressiv aldring for maksimale besparelser", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Aggressiv motorkonfiguration", "compressionAggressiveConfigDesc": "Finjuster opsummering, værktøjskomprimering og aldringstærskler", - "compressionUltraConfig": "Ultra Engine Configuration", + "compressionUltraConfig": "Konfiguration af Ultra-motoren", "compressionUltraConfigDesc": "Finjuster heuristisk beskæring, SLM fallback og tærskler pr. besked", "compressionUltraRate": "Behold sats", "compressionUltraMinScore": "Minimumsscoretærskel", "compressionUltraSlmFallback": "Fallback til aggressiv", - "compressionUltraModelPath": "SLM Model Path", + "compressionUltraModelPath": "SLM-modelsti", "compressionUltraEngine": "Ultra-niveau", "compressionUltraEngineHeuristic": "Heuristisk (Tier-A, standard)", "compressionUltraEngineSlm": "SLM (LLMLingua-2, tilvalg)", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Antallet af seneste beskeder opbevaret på hvert aldrende niveau (højere = mere bevaret)", "compressionToolStrategies": "Værktøjsresultatstrategier", "compressionToolStrategiesDesc": "Skift komprimeringsstrategier for forskellige værktøjsresultattyper", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Generelle indstillinger", + "compressionAutoTrigger": "Tærskel for automatisk aktivering", + "compressionCacheTTL": "Cache-TTL", + "compressionPreserveSystem": "Bevar systemprompt", "compressionPreserveSystemAlways": "Altid", "compressionPreserveSystemWhenNoCache": "Når ingen cache", "compressionPreserveSystemNever": "Aldrig", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Gemte", "compressionExclusionsCount": "{count, plural, one {# eksklusion} other {# eksklusioner}} konfigureret", "compressionExclusionsEmpty": "Ingen udelukkelser konfigureret — hver model/endpoint er berettiget til kompression (standardadfærd).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Konfiguration af Caveman-motoren", + "compressionCavemanConfigDesc": "Finjuster den regelbaserede komprimeringsmotor", "compressionCavemanPanelHint": "Dets til/fra og niveau indstilles i panelet:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", + "compressionRoles": "Komprimer beskedroller", + "compressionRoleUser": "Bruger", + "compressionRoleAssistant": "Assistent", "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionMinLength": "Mindste beskedlængde", + "compressionSkipRules": "Regler for at springe komprimering over", + "compressionSkipRulesDesc": "Klik på regler for at springe dem over under komprimering", + "compressionPreservePatterns": "Bevar mønstre", + "compressionPreservePatternsDesc": "Regex-mønstre, der aldrig komprimeres (ét pr. linje)", + "compressionLogTitle": "Komprimeringslog", + "compressionLogEmpty": "Ingen komprimerede anmodninger endnu. Komprimeringsstatistik vises her, når anmodninger behandles med komprimering aktiveret.", "minutes": "minutter", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Kommandoafhængig filtrering af værktøjsoutput", + "compressionModeCodexResponses": "Værktøjsoutput fra Responses", + "compressionModeCodexResponsesDesc": "Konservativ komprimering af kvalificerede shell-, patch-, søge-, build- og JSON-output", + "compressionModeStacked": "Stablet", + "compressionModeStackedDesc": "RTK-filtrering af værktøjsoutput efterfulgt af Caveman-beskedkomprimering", + "qdrantTitle": "Qdrant (vektorhukommelse)", + "qdrantDesc": "Valgfrit. Indekserer semantiske minder i en ekstern vektordatabase for hurtigere hentning.", + "qdrantStatusActive": "Aktiv", + "qdrantStatusError": "Fejl", + "qdrantStatusDisabled": "Deaktiveret", + "qdrantEnable": "Aktivér Qdrant", + "qdrantEnableDesc": "Når funktionen er aktiveret, kan den semantiske/hybride strategi bruge Qdrant til at hente minder.", + "qdrantTesting": "Tester...", + "qdrantTestConnection": "Test forbindelse", + "qdrantSaved": "Konfigurationen er gemt", + "qdrantSaveError": "Konfigurationen kunne ikke gemmes", + "qdrantHostHint": "Uden port. Eksempel: 127.0.0.1 eller http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Qdrant-standard: 6333", + "qdrantCollectionHint": "Hvor hukommelsespunkter skal gemmes.", + "qdrantEmbeddingModel": "Embedding-model", + "qdrantHelpTitle": "Hjælp til hurtig opsætning", + "qdrantHelpQuickTitle": "Hurtig opsætning (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Vært: Qdrant-IP/URL, port: 6333, samling: omniroute_memory.", + "qdrantHelpStep2": "2. Hvis du bruger nvidia/llama-nemotron-embed-vl-1b-v2:free, skal samlingen have dimensionen 2048.", + "qdrantHelpStep3": "3. Modelfelt: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Gem, test forbindelsen, og test derefter søgningen.", + "qdrantEmbeddingQuickSelect": "Vælg hurtigt blandt fundne modeller...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Format: provider/model. Udbyderens legitimationsoplysninger skal være konfigureret.", + "qdrantApiKeyPlaceholderKeep": "(lad feltet være tomt for at beholde den aktuelle nøgle)", + "qdrantApiKeyPlaceholderOptional": "(lad feltet være tomt, hvis det ikke bruges)", + "qdrantSaveHint": "Tip: Rediger vært/port/samling/model, og klik på Gem. API-nøglen er valgfri.", + "qdrantSearchTestTitle": "Søgningstest", + "qdrantSearchTestDesc": "Genererer embedding og søger i Qdrant.", + "qdrantSearchPlaceholder": "Eksempel: brugerpræferencer, historik osv.", + "qdrantNoResults": "Ingen resultater (eller Qdrant er ikke konfigureret).", + "qdrantCleanupTitle": "Opbevaring og oprydning", + "qdrantCleanupDesc": "Fjerner udløbne og gamle punkter baseret på", + "searching": "Søger...", + "cleaning": "Rydder op...", + "cleanNow": "Ryd op nu", "optional": "Valgfrit", "current": "Nuværende", "remove": "Fjern", @@ -7600,19 +7603,19 @@ "resilienceScope": "Omfang:", "resilienceTrigger": "Udløser:", "resilienceEffect": "Effekt:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Anmodningskø og hastighed", + "resilienceAutoEnableApiKeyProviders": "Aktivér automatisk for udbydere med API-nøgle", + "resilienceRequestsPerMinute": "Anmodninger pr. minut", + "resilienceMinTimeBetweenRequests": "Minimumstid mellem anmodninger", + "resilienceConcurrentRequests": "Samtidige anmodninger", + "resilienceConnectionScopeConcurrentRequests": "Samtidige anmodninger pr. forbindelse/kvoteomfang", + "resilienceGlobalConcurrentRequests": "Samlet antal samtidige upstream-anmodninger (0 = deaktiveret)", "resilienceMaxQueueWaitTime": "Maksimal ventetid i kø", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Grundlæggende nedkølingsperiode", + "resilienceUseUpstreamRetryHints": "Brug upstream-forslag til gentagne forsøg", + "resilienceDefaultPerProvider": "Standard (pr. udbyder)", + "resilienceAlwaysOn": "Altid aktiveret", + "resilienceAlwaysOff": "Altid deaktiveret", "routingRemoveEntry": "Fjern indtastning", "routingNeedlesSubstrings": "Nåle (understrenge, der passer til)", "routingCaseSensitive": "Der skelnes mellem store og små bogstaver", @@ -7632,7 +7635,7 @@ "logsSettingsTitle": "Logindstillinger", "detailedLogsLabel": "Detaljerede logfiler aktiveret", "detailedLogsDesc": "Aktiver detaljeret logning af anmodninger/svar", - "callLogPipelineLabel": "Call Log Pipeline", + "callLogPipelineLabel": "Kaldslogpipeline", "callLogPipelineDesc": "Aktiver pipeline til behandling af opkaldslog", "maxDetailSizeLabel": "Maks. detaljestørrelse (KB)", "maxDetailSizeDesc": "Maksimal størrelse for detaljerede logindtastninger", @@ -7665,11 +7668,11 @@ "oneproxySyncStatusTitle": "Synkroniseringsstatus", "oneproxySuccess": "Succes", "oneproxyFailed": "Mislykkedes", - "routingAntigravitySignatureTitle": "Antigravity Signature Cache Mode", + "routingAntigravitySignatureTitle": "Antigravity-signaturcachetilstand", "routingAntigravitySignatureDesc": "Styr, om OmniRoute kun genbruger gemte Gemini-tænkesignaturer eller accepterer validerede klientleverede signaturer i Antigravity-kompatible værktøjskaldsflow.", "routingAntigravitySignatureEnabledLabel": "Aktiveret", "routingAntigravitySignatureEnabledDesc": "Nuværende adfærd. Ignorer klientleverede signaturer og fortsæt med at bruge det gemte OmniRoute-flow.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Omgå", "routingAntigravitySignatureBypassDesc": "Accepter klientleverede signaturer efter letvægtsvalidering og fald tilbage til den gemte signatur, når den er ugyldig.", "routingAntigravitySignatureBypassStrictLabel": "Streng bypass", "routingAntigravitySignatureBypassStrictDesc": "Kræv fuld protobuf-validering før en klientleveret signatur accepteres.", @@ -7698,22 +7701,22 @@ "visionBridgePrompt": "Broprompt", "visionBridgePromptPlaceholder": "Beskriv dette billede kortfattet.", "visionBridgePromptHint": "Sendt til vision-modellen før den udtrukne beskrivelse indsættes tilbage i den oprindelige anmodning.", - "visionBridgeTimeoutMs": "Timeout (ms)", + "visionBridgeTimeoutMs": "Tidsgrænse (ms)", "visionBridgeMaxImagesPerRequest": "Max billeder pr. anmodning", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Maks. antal backoff-trin", + "resilienceProviderBreakerTitle": "Kredsløbsafbryder pr. udbyder", + "resilienceFailureThreshold": "Fejltærskel", + "resilienceDegradationThreshold": "Forringelsestærskel", "resilienceResetTimeout": "Nulstil timeout", "resilienceFailureThresholdLabel": "Fejlgrænse", "resilienceResetTimeoutLabel": "Nulstil timeout", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Nedkølingsperiode for forbindelse", "resilienceUseUpstreamRetryHintsLabel": "Brug opstrøms tip til genforsøg", "resilienceUseUpstream429BreakerLabel": "Brug upstream 429 tip (breaker)", "resilienceMaxBackoffStepsLabel": "Max tilbageskridtstrin", "resilienceYes": "Ja", "resilienceNo": "Nej", - "resilienceDefault": "Default", + "resilienceDefault": "Standard", "storageDatabaseBackupRetention": "Database backup opbevaring", "storageDatabaseBackups": "Databasesikkerhedskopier", "storageBackupRetentionDescription": "Automatiske SQLite-sikkerhedskopier gemmes i", @@ -7745,12 +7748,16 @@ "legacyJsonImportSuccess": "Legacy JSON blev importeret med succes!", "jsonImportFailed": "Kunne ikke importere JSON", "jsonImportError": "Fejl under JSON-import", + "jsonImportAuthRequired": "Godkendelse er påkrævet for at importere en ældre JSON-konfiguration. Log ind, eller fuldfør opsætningen først.", + "databaseSettingsAuthRequiredTitle": "Godkendelse påkrævet", + "databaseSettingsAuthRequiredBody": "Databaseindstillinger og JSON-import er kun tilgængelige for en godkendt administrator. Log ind, eller fuldfør opsætningen for at se og redigere dem.", + "databaseSettingsAuthRequiredCta": "Log ind", "storagePurgeData": "Rens data", "storagePurgeDataDesc": "Slet øjeblikkeligt alle registreringer uden at anvende opbevaringskontrol. Brug med forsigtighed.", "storageRetentionCleanup": "Indstillinger for opbevaring", "storageRetentionCleanupDesc": "Konfigurer opbevaring af driftsposter og oprydning af databasesikkerhedskopier.", "retentionCallDays": "Opkald {count}d", - "retentionAppDays": "App {count}d", + "retentionAppDays": "App {count} d", "retentionRows": "{count} rækker", "retentionQuotaSnapshots": "Kvote-øjebliksbilleder (dage)", "retentionCompressionAnalytics": "Komprimeringsanalyse (dage)", @@ -7798,7 +7805,7 @@ "storageIntegrityCheck": "Integritetstjek", "storageIntegrityOk": "✓ OK", "storageIntegrityError": "✗ Fejl", - "storageUsageTokenBuffer": "Usage Token Buffer", + "storageUsageTokenBuffer": "Buffer til brugte tokens", "storageUsageTokenBufferDesc": "Ekstra tokens tilføjet til det rapporterede forbrug for at tage højde for systemprompt-overhead.", "storageUsageTokenBufferHint": "Sæt til 0 for at rapportere rå token-antal fra udbyder. Standard: 2000.", "storageUsageTokenBufferCurrent": "Nuværende: {value}", @@ -7813,11 +7820,11 @@ "redisLauncherReachable": "Tilgængelig", "redisLauncherError": "Fejl: {message}", "redisLauncherHint": "Svarer til at køre `omniroute redis up`. Containeren hedder `omniroute-redis` og lytter på 127.0.0.1:6379.", - "compressionSettingsAutoTriggerMode": "Auto trigger mode", + "compressionSettingsAutoTriggerMode": "Automatisk udløsertilstand", "compressionSettingsMcpDescriptionCompression": "MCP beskrivelse komprimering", "mcpAccessibilityTitle": "MCP-tilgængelighedsoutput", "compressionSettingsCavemanIntensity": "Hulemands intensitet", - "compressionSettingsCavemanOutputMode": "Caveman output mode", + "compressionSettingsCavemanOutputMode": "Hulemands-outputtilstand", "compressionSettingsOutputStyles": "Output-stile", "compressionStylesTileTitle": "Output-stile", "compressionSettingsOutputIntensity": "Output intensitet", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "tilstand: {mode}", "compressionAdaptiveOff": "Adaptivt kontekstbudget: fra (forældet auto-trigger)", "compressionAdaptiveTarget": "Adaptiv ({mode}, politik: {policy}) — mål ≈ {target, number} tokens (for et {contextLimit, number}-token vindue)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Adaptivt kontekstbudget", + "compressionAdaptiveModeOff": "Fra (ældre automatisk udløsning)", + "compressionAdaptiveModeFloor": "Minimum (garantér altid, at det passer)", + "compressionAdaptiveModeReplace": "Erstat automatisk udløsning", + "compressionAdaptivePolicy": "Budgetpolitik", + "compressionAdaptivePolicyReserve": "Reservér output", + "compressionAdaptivePolicyPercentage": "Procentdel af vinduet", + "compressionAdaptivePolicyAbsolute": "Absolut tokenbudget", "compressionOutputStylesDescription": "Indsæt instruktioner til formning af svar uden at omskrive udbyderens output. Kombiner frit.", "mcpAccessibilityDescription": "Afgrænser MCP-værktøjsoutput (separat lager).", "compressionStylesTileSummary": "{tokens, number} tokens sparet · {runs, plural, one {# kørsel stylet} other {# kørsler stylet}}", @@ -7844,7 +7851,7 @@ "minimal": "Minimal", "standard": "Standard", "aggressive": "Aggressiv", - "lite": "Lite", + "lite": "Let", "full": "Fuld", "ultra": "Ultra" }, @@ -7854,11 +7861,11 @@ "description": "Deduplikering af blokke på tværs af omgange." }, "ccr": { - "label": "CCR (Retrieval)", + "label": "CCR (hentning)", "description": "Indholdsaddresserede retrieval-markører." }, "lite": { - "label": "Lite", + "label": "Let", "description": "Rensning af blanktegn og formatering." }, "rtk": { @@ -7866,11 +7873,11 @@ "description": "Filtrering af kommando-output." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Output fra Responses-værktøjet", + "description": "Konservativ komprimering af understøttede output fra Responses-værktøjet." }, "headroom": { - "label": "Headroom", + "label": "Sikkerhedsmargin", "description": "Tabellarisk JSON-komprimering." }, "relevance": { @@ -7908,12 +7915,12 @@ "description": "YAGNI-stige: mindste fungerende ændring, ingen uanmodede abstraktioner." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Hestehale (doven seniorudvikler)", + "description": "Disciplin som en doven seniorudvikler: Følg YAGNI-trinnene, ret den grundlæggende årsag, og lav den mindst mulige fungerende ændring." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Jeg har ADHD (handling først)", + "description": "Handlingsorienteret output: Start med næste handling, nummerér trinnene, angiv ét konkret næste trin, og undlad indledning." }, "terse-cjk": { "label": "Kortfattet CJK (文言)", @@ -7924,13 +7931,21 @@ "resilienceEnableServerSideWait": "Aktiver ventetid på serversiden", "resilienceMaximumRetries": "Maksimalt antal genforsøg", "resilienceMaximumWaitPerRetry": "Maksimal ventetid pr. genforsøg", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "SkillsMP-markedsplads", "memorySkillsFailedToSave": "Kunne ikke gemme", "memorySkillsApiKey": "API nøgle", "memorySkillsActiveSkillsProvider": "Udbyder af aktive færdigheder", - "cliproxyapiFallback": "CLIProxyAPI Fallback", + "cliproxyapiFallback": "CLIProxyAPI-reserveløsning", "cliproxyapiEnableFallback": "Aktiver CLIProxyAPI Fallback", - "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiUrl": "CLIProxyAPI-URL", + "headroomProxyTitle": "Headroom-proxy", + "headroomProxyDesc": "URL til den valgfrie Headroom-proxy, der sparer tokens. Hvis feltet er tomt, bruges HEADROOM_URL eller http://localhost:8787.", + "headroomProxyUrl": "Headroom-URL", + "headroomProxyUrlHint": "Loopback-URL'er kan startes fra denne side. Eksterne URL'er kontrolleres kun.", + "headroomProxySave": "Gem", + "headroomProxyStart": "Start", + "headroomProxyStop": "Stop", + "headroomProxyExternalHint": "Denne URL er ikke loopback, så OmniRoute starter ikke den lokale CLI.", "cliproxyapiStatus": "CLIProxyAPI-status", "cliproxyapiNotDetected": "Ikke opdaget", "cliproxyapiImportAuthTitle": "Importer konti fra CLIProxyAPI", @@ -7946,7 +7961,7 @@ "payloadRuleFilterDesc": "Fjerner blokerede parametre fra payloaden, før upstream-anmodningen sendes.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Som default, men strengværdier parses som JSON først, når det er muligt. Det forældede input-alias default-raw accepteres også ved gemning.", - "payloadEditorTitle": "Editor", + "payloadEditorTitle": "Redigeringsværktøj", "payloadEditorDesc": "Brug runtime-skemaets form: default, override, filter, defaultRaw. API'en accepterer også den forældede input-nøgle default-raw.", "payloadEditorReady": "Klar", "payloadResetInfo": "Editoren er nulstillet til den neutrale skabelon. Gem for at anvende den.", @@ -7980,28 +7995,28 @@ "responsesStateTitle": "Responses-tilstand", "responsesStateDesc": "Styr, hvordan OmniRoute videresender previous_response_id.", "responsesStateModeLabel": "Håndtering af previous_response_id", - "responsesStateModeAuto": "Auto", + "responsesStateModeAuto": "Automatisk", "responsesStateModeStrip": "Fjern", "responsesStateModePreserve": "Bevar", "responsesStateHint": "Auto fjerner previous_response_id, medmindre en forbindelse eksplicit aktiverer OpenAI Responses-lagring. Fjern er sikrest for tilstandsløse klienter såsom VS Code Custom Endpoint; konteksten afhænger derefter af, at klienten sender den fulde historik.", "responsesStateSaveError": "Kunne ikke opdatere indstillingen for Responses-tilstand", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Codex-hurtigniveau", "codexFastTierDesc": "Globalt injicer service_tier=prioritet for OpenAI Codex-anmodninger.", "codexFastTierHint": "Når det er aktiveret, tilføjer OmniRoute service_tier=prioritet til udgående Codex-anmodninger for forbindelser, der ikke allerede angiver et niveau. Prioritetsniveau kræver en OpenAI Enterprise API-nøgle eller ChatGPT-auth Codex-stien; andre nøgletyper vil modtage en tier-relateret fejl fra OpenAI. Indstillinger for hver forbindelse på Codex-udbydersiden har forrang.", "codexFastTierSaveError": "Kunne ikke opdatere Codex Fast Tier-indstillingen", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Automatisk ping af Codex-kvote", + "codexAutoPingDesc": "Tilmelding pr. forbindelse: sender en lille anmodning, umiddelbart efter at et Codex-sessionsvindue nulstilles, så det ikke er koldt, når du har brug for det.", + "codexAutoPingWarning": "Forbruger en lille mængde reel Codex-kvote ved hvert ping. Deaktiveret som standard — aktivér kun for forbindelser, du aktivt er afhængig af.", + "codexAutoPingSaveError": "Kunne ikke opdatere indstillingen for automatisk ping af Codex", + "codexAutoPingToggleAria": "Slå automatisk ping af Codex-kvote til eller fra for {connection}", "codexFastTierTierLabel": "Serviceniveau", "codexFastTierTierPriority": "Prioritet", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Fleksibel", "codexFastTierTierDefault": "Standard", "codexFastTierModelsLabel": "Fast-tier-modeller", "codexFastTierModelsHint": "Kun markerede modeller modtager service_tier, når Fast Tier er aktiveret.", "codexFastTierModelCheckbox": "Aktiver Fast Tier for {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Claude-hurtigtilstand", "claudeFastModeDesc": "Vælg udvalgte Claude-anmodninger til Antropisk hurtig tilstand (hastighed: \"hurtig\").", "claudeFastModeHint": "Anthropic understøtter ikke officielt Fast Mode for klienter i SDK-stil. Når den er aktiveret, videresender OmniRoute en X-CPA-Force-Fast-Mode-header, så en parret CLIProxyAPI-build kan tilmelde sig spoof indgangspunktet. Kun de anførte Opus-modeller er lukket af Anthropics klientside-tjek. Abonnementsniveau, Max-plan og Fast Mode-kreditsaldo er stadig håndhævet på serversiden - Anthropic kan returnere out_of_credits, selv når til/fra-knappen er slået til.", "claudeFastModeModelsLabel": "Anvendt på modeller ({count})", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Globalt kontrolinterval", "resilienceCredentialHealthEveryMinutes": "Hver {minutes} min", "resilienceCredentialHealthHint": "0 slår baggrundsscanningen fra (maks. 1440 min = 24 t). Forbindelser med egen sundhedstjek-værdi ignorerer denne globale standard; 0 på en forbindelse udelader den, selv når den globale scanning kører.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Altid aktiveret for {provider} — påkrævet af hensyn til OAuth-kontosikkerhed; kan ikke deaktiveres.", + "forcedFingerprintBadge": "Påkrævet", "sessionAffinityTitle": "Sessionsaffinitet", "sessionAffinityDesc": "Beholder én samtale på den samme konto i dette antal sekunder for enhver udbyder. 0 deaktiverer det.", "sessionAffinityTtl": "Affinitets-TTL (sekunder)", @@ -8202,20 +8217,20 @@ "modelLockoutMaxBackoffStepsDescription": "Maksimalt antal backoff-trin, før cooldown holder op med at vokse. Max Cooldown-grænsen nås først i de fleste konfigurationer, hvilket gør dette til et sikkerhedsloft, hvis Max Cooldown hæves.", "disableSessionStickiness": "Deaktiver sessionsfastholdelse", "disableSessionStickinessDesc": "Round-robin- og tilfældige kombinationer skifter til en anden forbindelse ved hver anmodning i stedet for at fastlåse en hel samtale til én forbindelse via den første meddelelses hash. Lad den være slået fra for at bevare prompt-cache-hits ved samtaler med flere ture. Tilsidesættelser pr. kombination har forrang.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Routing efter promptcache-lokalitet", + "promptCacheAffinityDesc": "Foretræk den samme udbyderkonto for matchende promptcache-nøgler, samtidig med at failover for tilstand og kvote bevares.", + "reasoningTokenBuffer": "Buffer til ræsonneringstokens", + "reasoningTokenBufferDesc": "Tillad kun kombinationsrouting at tilføje ekstra plads til max_tokens for kendte ræsonneringsmodeller, når hele bufferen kan være inden for en kendt outputgrænse.", + "zeroLatencyOptimizations": "Optimeringer uden ventetid", + "zeroLatencyOptimizationsDesc": "Tilmeld dig hedging, prædiktive TTFT-spring og proaktiv komprimering ved fallback. Lad dette være deaktiveret for at forhindre, at disse latensfunktioner konkurrerer om mål eller komprimerer fallback-anmodninger.", "credentialRedaction": "Maskering af legitimationsoplysninger", "credentialRedactionDesc": "Masker API-nøgler, tokens og hemmeligheder fra kontekst sendt til udbydere og fra svar.", "enableCredentialRedaction": "Aktivér maskering af legitimationsoplysninger", "enableCredentialRedactionDesc": "Renser API-nøgler, tokens, private nøgler og JWT'er fra meddelelser, værktøjskald og svar.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Automatisk synkronisering deaktiveret", + "pricingAutoSyncEnabled": "Automatisk synkronisering aktiveret", "modalityBridgeIntro": "Konvertér multimodalt indhold til tekst, før det når modeller, der kun håndterer tekst. Broerne til billede, lyd og video er tilgængelige og kan konfigureres.", - "modalityBridgeVisionTab": "Vision", + "modalityBridgeVisionTab": "Billede", "modalityBridgeAudioTab": "Lyd", "modalityBridgeVideoTab": "Video", "modalityBridgeSubTabsAria": "Modality Bridge sektioner", @@ -8228,13 +8243,13 @@ "modalityBridgeModeDescribeHint": "Den model, du valgte, svarer altid; billeder erstattes af tekstbeskrivelser.", "modalityBridgeModeReroute": "Altid omdirigere", "modalityBridgeModeRerouteHint": "Send hele anmodningen til den bedste vision-kapable model (fald tilbage til beskrivelse, når ingen er brugbar).", - "modalityBridgeVisionModel": "Vision model", + "modalityBridgeVisionModel": "Billedmodel", "modalityBridgeVisionModelAuto": "Auto (bedst tilgængelig)", "modalityBridgeTaskAware": "Opgavebevidst beskrivelse", "modalityBridgeTaskAwareDesc": "Inkluder brugerens spørgsmål som fokus, så visionsmodellen beskriver, hvad der betyder noget, og transkriberer synlig tekst.", "modalityBridgePrompt": "Beskrivelse prompt", "modalityBridgeAdvanced": "Avanceret", - "modalityBridgeTimeoutMs": "Timeout (ms)", + "modalityBridgeTimeoutMs": "Tidsgrænse (ms)", "modalityBridgeMaxImages": "Maks billeder pr. anmodning", "visionMaxCharsLabel": "Maksimalt antal tegn i beskrivelsen", "visionMaxCharsHint": "Begræns længden af beskrivelsen af visionsmodellen. 0 = ubegrænset — hæv for detaljerede OCR-opgaver.", @@ -8243,7 +8258,7 @@ "modalityBridgeCacheTtlMinutes": "Cache TTL (minutter)", "modalityBridgeCacheMaxEntries": "Cache maks. poster", "modalityBridgeStatsBridged": "broet", - "modalityBridgeStatsCacheHits": "cache hits", + "modalityBridgeStatsCacheHits": "cachetræffere", "modalityBridgeStatsFailures": "fejl", "modalityBridgeStatsLastUsed": "sidst brugt", "modalityBridgeStatsNever": "aldrig", @@ -8286,7 +8301,7 @@ "cliproxyapiFallbackDescription": "Cliproxyapi Fallback Beskrivelse", "cliproxyapiHealthLabel": "Cliproxyapi Sundhedsetiket", "cliproxyapiImportFailed": "Cliproxyapi Import Mislykkedes", - "cliproxyapiImportResult": "Cliproxyapi Import Result", + "cliproxyapiImportResult": "Resultat af Cliproxyapi-import", "cliproxyapiInvalidUrl": "Cliproxyapi Ugyldig URL", "cliproxyapiLifecycleNoticeAfter": "Cliproxyapi Livscyklusmeddelelse Efter", "cliproxyapiLifecycleNoticeBefore": "Cliproxyapi Livscyklusmeddelelse Før", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Sundhed", "cliproxyapiPort": "Port", "qdrantHost": "Vært", - "qdrantCollection": "Samling", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Samling" }, "contextRtk": { "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", + "description": "Kommandobevidst komprimering af værktøjsoutput, terminallogfiler og buildresultater.", + "enabled": "Aktiveret", + "intensity": "Intensitet", "intensityMinimal": "Minimal", "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "intensityAggressive": "Aggressiv", + "toolResults": "Værktøjsresultater", + "assistantMessages": "Assistentbeskeder", + "codeBlocks": "Kodeblokke", "filterCatalog": "Filterkatalog", "filterCatalogDesc": "Tilgængelige outputfiltre efter kategori", "guidedConfig": "Konfiguration", "guidedConfigDesc": "Juster, hvordan RTK filtrerer dit terminaloutput", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Maks. antal linjer", + "maxChars": "Maks. antal tegn", "deduplicateThreshold": "Deduplikatgrænse", "customFilters": "Brugerdefinerede filtre", "detectedType": "Registreret type", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Fejl", "rawOutputAlways": "Altid", "rawOutputMaxBytes": "Rå output maks. bytes", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Filtertest", + "pasteOutput": "Indsæt værktøjsoutput for at teste filtrering...", "presetHigh": "Aggressiv", "presetLow": "Lys", "presetMaxChars": "Maks. output-tegn", "presetMaxLines": "Max udgangslinjer", "presetMedium": "Standard", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Kør", + "result": "Resultat", + "previewEmpty": "Kør et eksempel for at forhåndsvise RTK-output.", + "detected": "Registreret", "masterSwitchOffAlert": "Token Saver-hovedafbryderen er SLÅET FRA — disse indstillinger påvirker ikke anmodninger, før du slår den til fra siden Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Filtrerede tokens", + "filtersActive": "Aktive filtre", + "requests": "Anmodninger", + "avgSavings": "Gns. besparelse", "simpleMode": "Simpelt", "advancedMode": "Avanceret", "searchFilters": "Søgefiltre...", @@ -8481,7 +8488,7 @@ "savings": "Besparelser", "original": "Oprindelig", "compressed": "Komprimeret", - "diff": "Diff", + "diff": "Forskel", "last7Days": "Sidste 7 dage", "noDataYet": "Ingen data endnu", "runs": "Kørsler", @@ -8499,7 +8506,7 @@ "description": "Tabsfri tabellarisk komprimering af homogene JSON-arrays med eksplicitte rækkeantalsmarkører." }, "session-dedup": { - "name": "Session Dedup", + "name": "Sessionsdeduplikering", "description": "Deduplikering af blokke på tværs af ture med genoprettelige indholdsmarkører." }, "ccr": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", + "title": "Komprimeringskombinationer", + "description": "Definer, hvordan motorer kombineres i forskellige routingscenarier.", + "createCombo": "Opret komprimeringskombination", + "editCombo": "Rediger", + "deleteCombo": "Slet", + "deleteConfirm": "Vil du slette denne komprimeringskombination?", "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "addStep": "Tilføj trin", + "removeStep": "Fjern", + "name": "Navn", + "descriptionField": "Beskrivelse", + "languagePacks": "Sprogpakker", + "outputMode": "Outputtilstand", + "assignToRouting": "Tildel til routingkombinationer", + "noAssignments": "Ingen routingkombinationer tilgængelige", + "default": "Standard", + "setAsDefault": "Angiv som standard", + "save": "Gem", + "cancel": "Annuller", + "enabled": "Aktiveret", "loading": "Indlæser…", "hubTitle": "Komprimeringshub", "hubDescription": "Vælg, hvilken komprimeringsprofil der kører globalt.", @@ -8661,37 +8668,37 @@ "contextEditingNote": "I øjeblikket kun tilgængelig for Claude (Anthropic). Det er en delegeret tilstand: udbyderen rydder gamle tool-use-blokke på serversiden — vi omskriver ikke meddelelsen. Det påvirker ikke andre udbydere.", "namedCombos": "Navngivne kombinationer", "namedCombosDescription": "Gem forskellige pipelines, og tildel dem til specifikke routingkombinationer.", + "activeProfileMasterSwitchOffWarning": "Den aktive profil nedenfor kører ikke, før hovedkontakten \"Promptkomprimering\" er slået til.", + "activeProfileMasterSwitchOffCta": "Slå den til i Indstillinger", "comboNamePlaceholder": "Kombinationsnavn", "descriptionPlaceholder": "Beskrivelse", "nameRequired": "Indtast et kombinationsnavn, før du gemmer.", "pipelineRequired": "Tilføj mindst ét pipeline-trin, før du gemmer.", "saveComboFailed": "Kunne ikke gemme kombination (HTTP {status}).", "deleteNamedConfirm": "Slet kombinationen “{name}”?", - "intensityLite": "Lite", + "intensityLite": "Let", "intensityFull": "Fuld", "intensityUltra": "Ultra", "active": "Aktiv", "languagePacksList": "Sprogpakker: {packs}", "dragToReorder": "Træk for at omarrangere trin", "engine": "Motor", - "intensity": "Intensitet", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensitet" }, "compressionStudio": { "noRun": "Ingen komprimeringskørsel tilgængelig.", "liveDataHint": "Livedata ankommer via WebSocket-komprimeringskanalen.", "cockpitView": "Cockpit-visning", - "canvas": "Canvas", + "canvas": "Lærred", "waterfall": "Vandfald", "replayDone": "Genafspilning fuldført", "pauseReplay": "Pause genafspilning", "playReplay": "Afspil genafspilning", - "pause": "Pause", + "pause": "Sæt på pause", "replay": "Genafspil", "resetReplay": "Nulstil genafspilning", "stepProgress": "trin {current}/{total}", - "inlineView": "Inline", + "inlineView": "Indlejret", "splitComingSoon": "Opdelt visning (kommer snart)", "inputPlaceholder": "Indsæt en prompt, et værktøjsoutput eller kontekst…", "activeCombined": "Aktiv i det kombinerede flow", @@ -8705,14 +8712,14 @@ "run": "Kør", "laneRejected": "afvist: {reason}", "error": "fejl", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Forhåndsvisning af den kombinerede pipeline mislykkedes: {reason}", "combinedFlow": "Kombineret flow", "eachLayer": "Hvert lag separat", "diff": "Forskel", "combined": "kombineret", "skipped": "spring over", - "input": "INPUT", - "output": "OUTPUT", + "input": "INDDATA", + "output": "UDDATA", "tokenCount": "{count, number} tokens", "tokenShort": "tok", "provider": "Udbyder", @@ -8727,15 +8734,15 @@ "loadAb": "Indlæs A/B", "engine": "Motor", "savings": "Besparelser", - "retention": "Retention", + "retention": "Bevarelse", "outputTokensShort": "Output-tokens", "fidelity": "Gengivelseskvalitet", "playTab": "Afspil", "compareTab": "Sammenlign", "encoderComparison": "Encoder A/B — {count} array(er)", "encoderWinner": "vinder: {winner}", - "encoder": "encoder", - "bytes": "bytes", + "encoder": "indkoder", + "bytes": "byte", "tokensCl100k": "tokens (cl100k)" }, "omniglyph": { @@ -8780,27 +8787,27 @@ }, "enableTitle": "Aktiver motoren", "enableDescription": "Kører sidst i stakken (efter RTK/Caveman renser teksten, konverterer OmniGlyph resten til billeder) og kører også selvstændigt via omniglyph-tilstand. Dette er en forhåndsvisning og forbliver deaktiveret som standard, indtil end-to-end-validering er fuldført.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Komprimeringsprofil", + "profileDescription": "Profilen er et loft, ikke et gulv: En strengere profil kan ikke åbnes igen af en tilsidesættelse for et enkelt trin. Målt på denne kodebase: Med coding-safe eller balanced komprimerer en session, der endnu ikke har akkumuleret historik, intet, fordi begge hæver minimumsgrænsen for antal tegn og bevarer systemprompten, værktøjsskemaerne og værktøjsresultaterne i deres oprindelige format.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Aggressiv (standard)", + "description": "Den politik, som de offentliggjorte kvitteringer målte. Omdanner systemprompten, værktøjsdokumentationen og den omfattende historik til billeder." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Balanceret", + "description": "Bevarer den aktive tilstand i oprindeligt format og beskytter de seneste 8 ture; kun ældre, afsluttet historik komprimeres." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Kodningssikker", + "description": "Bevarer autoritet, værktøjsskemaer og aktive værktøjsoutput i oprindeligt format og beskytter de seneste 12 ture. Komprimerer intet, før sessionen har akkumuleret historik." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Direkte videresendelse", + "description": "Router uden at transformere. Motoren springes over, og anmodningen videresendes uændret." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Vælg OmniGlyph-komprimeringsprofilen", "saved": "Gemt.", "saveFailed": "Kunne ikke gemme.", "enableAria": "Aktiver OmniGlyph-motoren", @@ -8830,7 +8837,7 @@ "updating": "Opdaterer…", "install": "Installer", "installing": "Installerer…", - "autoStart": "Auto-start", + "autoStart": "Automatisk start", "autoStartDescription": "Start {name} automatisk, når OmniRoute starter", "apiKey": "API-nøgle", "apiKeyDescription": "Nøgle, der bruges af OmniRoute til at godkende over for {name}", @@ -8873,11 +8880,11 @@ "providerExposureHint": "Når aktiveret, vises opdagede modeller i udbydervælgere på tværs af OmniRoute.", "providerExposureUpdateFailed": "Kunne ikke opdatere (HTTP {status})", "providerExposureNetworkFailed": "Netværksfejl — kunne ikke opdatere indstillingen for udbydereksponering", - "webUi": "9Router Web UI", + "webUi": "9Router-webbrugerflade", "openNewTab": "Åbn i ny fane", "filterLogs": "Filtrer logfiler…", "resume": "Genoptag", - "pause": "Pause", + "pause": "Sæt på pause", "clear": "Ryd", "download": "Download", "noLogs": "Ingen logudskrift endnu.", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Regelbaseret meddelelseskomprimering, sprogpakker, analyse og styring af outputtilstand.", "advancedConfig": "Avanceret konfiguration", "advancedConfigDesc": "Finjuster kompressionsadfærd", "aggressiveSettings": "Aggressive indstillinger", "aggressiveSettingsDesc": "Maksimal komprimering med potentielle kvalitetsafvejninger", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Anmodninger", + "tokensSaved": "Sparede tokens", + "savingsPercent": "Besparelse i %", + "avgLatency": "Gns. latenstid", + "languagePacks": "Sprogpakker", + "languagePacksDesc": "Aktivér komprimeringsregler for bestemte sprog.", "labelAutoTrigger": "Auto-komprimer, når konteksten overskrider", "labelCompressionRate": "Kompressionsstyrke", "labelMaxTokens": "Mål tokens pr. besked", "labelMinLength": "Minimum beskedlængde", "labelMinSavings": "Minimum tokens at gemme", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Aktiveret", + "autoDetect": "Registrér sprog automatisk", + "rulesCount": "{count} regler", "inputCompressionTitle": "Inputkomprimering", "inputCompressionDesc": "Omskriv chathistorik med kortere formuleringer. Reducerer input-tokens med ~50 %.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Komprimeringsanalyse", + "noAnalytics": "Ingen komprimeringsanalyse endnu.", "masterDisabledWarning": "Hovedafbryderen for Token Saver er deaktiveret — disse indstillinger vil ikke påvirke anmodninger, før du aktiverer den under Komprimeringsindstillinger eller ændrer det her.", "outputMode": "Udgangstilstand", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Outputtilstand", "quickSettings": "Hurtige indstillinger", "quickSettingsDesc": "Grundlæggende komprimeringsindstillinger for at komme i gang", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Automatisk omgåelse ved klarhed", + "bypassConditions": "Betingelser for omgåelse", "bypassConditionsList": "sikkerhed, irreversibel, afklaring, ordrefølsom", "simpleMode": "Simpelt", "advancedMode": "Avanceret", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ultra-indstillinger", "ultraSettingsDesc": "SLM-drevet semantisk komprimering", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Svar kortfattet. Bevar tekniske termer, kode, fejl, URLs og identifikatorer.", + "full": "Svar kort og kompakt. Bevar alt teknisk indhold.", + "ultra": "Svar ultrakort med almindelige tekniske forkortelser. Bevar de nøjagtige symboler." } }, "translator": { @@ -8958,7 +8965,7 @@ "realtime": "Oversættelsesaktivitet i realtid", "chatTester": "Chat tester", "testBench": "Test bænk", - "liveMonitor": "Live Monitor", + "liveMonitor": "Liveovervågning", "modeDescriptionPlayground": "Indsæt enhver API-anmodningstekst og se, hvordan OmniRoute oversætter den mellem udbyderformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", "modeDescriptionChatTester": "Send rigtige chatanmodninger gennem OmniRoute og inspicer hele rundrejsen: input, oversat anmodning, udbydersvar og oversat output.", "modeDescriptionTestBench": "Kør foruddefinerede scenarier og sammenlign kompatibilitet på tværs af udbydere og modeller.", @@ -8971,7 +8978,7 @@ "time": "Tid", "model": "Model", "status": "Status", - "latency": "Latency", + "latency": "Latenstid", "totalTranslations": "Samlede oversættelser", "successful": "Vellykket", "errors": "Fejl", @@ -8987,13 +8994,13 @@ "ideCliIntegrations": "IDE/CLI integrationer", "inMemoryNote": "Bemærk: Hændelser gemmes i hukommelsen og nulstilles, når serveren genstarter.", "ok": "OK", - "errorShort": "ERR", + "errorShort": "FEJL", "formatConverter": "Formatkonverter", "formatConverterDescription": "Indsæt eller skriv en JSON-anmodningstekst. Oversætteren vil automatisk registrere kildeformatet og konvertere det til målformatet. Brug dette til at fejlsøge, hvordan OmniRoute oversætter anmodninger mellem formater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (mellemliggende) → {target}", "translationPathDirect": "{source} → {target} (direkte oversætter)", "translationPathPassthrough": "Samme format - ingen oversættelse nødvendig", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "OpenAI-mellemresultat", "autoFeaturesTitle": "Hvad OmniRoute gør automatisk", "autoFeaturesCount": "8 funktioner", "featureReasoningCache": "Begrundelse Cache", @@ -9004,7 +9011,7 @@ "featureRoleNormalizationDesc": "Kortudvikler→system til ikke-OpenAI-mål. Kortsystem→bruger til modeller, der ikke understøtter systemrollen.", "featureToolCallIds": "Værktøj Call ID Normalization", "featureToolCallIdsDesc": "Genererer unikke tool_call ID'er, når de mangler. Normaliserer til 9-char format for udbydere som Mistral.", - "featureMissingToolResponse": "Tool Response Injection", + "featureMissingToolResponse": "Indsættelse af værktøjssvar", "featureMissingToolResponseDesc": "Injicerer tomme tool_result-meddelelser, når klienter sender tool_calls uden tilsvarende svar.", "featureThinkingBudget": "Tænkende budget", "featureThinkingBudgetDesc": "Administrerer automatisk tankekonfiguration. Fjerner tænkeparametre, når den sidste besked ikke er fra brugeren.", @@ -9012,8 +9019,8 @@ "featureDirectPathsDesc": "Nogle formatpar (Claude → Gemini) har direkte oversættere, der omgår OpenAI-hubben og producerer mere nøjagtigt output.", "featureImageMapping": "Kortlægning af billedstørrelse", "featureImageMappingDesc": "Oversætter billeddimensionskonventioner mellem API-formater (f.eks. OpenAI-detaljeniveauer → Gemini-dimensioner).", - "input": "Input", - "output": "Output", + "input": "Inddata", + "output": "Uddata", "auto": "Auto", "swapFormats": "Skift formater", "translateAction": "Oversæt", @@ -9047,7 +9054,7 @@ "thinking": "Tænker", "system-prompt": "Systemprompt", "streaming": "Streaming", - "vision": "Vision", + "vision": "Billedforståelse", "schema-coercion": "Skema tvang" }, "templateDescriptions": { @@ -9101,7 +9108,7 @@ "anthropicCompatibleLabel": "Antropisk kompatibel", "noTemplateForFormat": "Ingen skabelon til dette format", "translationFailed": "Oversættelse mislykkedes: {error}", - "pipelineDebugger": "Pipeline Debugger", + "pipelineDebugger": "Pipeline-fejlfinding", "translationPipeline": "Oversættelsesrørledning", "loading": "Indlæser…", "compressionOriginal": "Original", @@ -9114,7 +9121,7 @@ "pipelineVisualization": "Pipeline visualisering", "pipelineVisualizationHint": "Send en besked for at se, hvordan din anmodning flyder gennem registrering → oversættelse → udbyderopkald.", "chatTesterDescription": "Send beskeder som et specifikt klientformat og inspicér hvert trin i oversættelsespipelinen.", - "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response", + "chatTesterFlow": "Klientanmodning → Formatregistrering → OpenAI-mellemformat → Udbyderformat → Svar", "clickStepToInspect": "Klik på et trin for at inspicere dataene på det tidspunkt.", "clientFormat": "Klientformat", "provider": "Udbyder", @@ -9130,7 +9137,7 @@ "clientRequestDescription": "Anmodningslegemet, som din klient ville sende det", "formatDetected": "Format fundet", "formatDetectedDescription": "OmniRoute registrerer automatisk API-formatet fra anmodningsstrukturen", - "openaiIntermediate": "OpenAI Intermediate", + "openaiIntermediate": "OpenAI-mellemformat", "openaiIntermediateDescription": "Alle formater normaliseres først til OpenAI-format (den universelle bro)", "providerFormat": "Udbyder format", "providerFormatDescription": "OpenAI-formatet er oversat til udbyderens oprindelige format", @@ -9170,7 +9177,7 @@ "comboRouted": "Combo dirigeret", "uniqueEndpoints": "Unikke endepunkter", "routeDetails": "Rutedetaljer", - "comboBadge": "Combo", + "comboBadge": "Kombination", "routeEndpointLabel": "Slutpunkt", "routeConnectionLabel": "Forbindelse", "scenarioVision": "Vision (billedforståelse)", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Indsæt en JSON-anmodning; formatet registreres automatisk.", "advancedPipelineTitle": "OpenAI mellemliggende pipeline", "advancedPipelineSubtitle": "Visualiser hvert oversættelsestrin (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Stream-transformer (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Konverterer Chat Completions SSE til Responses API.", "advancedTestBenchTitle": "Testbænk (8 scenarier)", "advancedTestBenchSubtitle": "Kører alle scenarier og rapporterer bestået/ikke bestået + kompatibilitetsprocent.", @@ -9232,7 +9239,7 @@ "pipelineStepClientRequestDesc": "Anmodning modtaget i klientformat", "pipelineStepFormatDetected": "Format registreret", "pipelineStepFormatDetectedDesc": "Automatisk registreret kildeformat", - "pipelineStepOpenAIIntermediate": "OpenAI Intermediate", + "pipelineStepOpenAIIntermediate": "OpenAI-mellemformat", "pipelineStepOpenAIIntermediateDesc": "Oversat til OpenAI-hubformat", "pipelineStepProviderFormat": "Udbyderformat", "pipelineStepProviderFormatDesc": "Oversat til udbyderens målformat", @@ -9253,7 +9260,7 @@ "tokens": "tokens", "pauseAutoRefresh": "Pause automatisk opdatering", "resumeAutoRefresh": "Genoptag automatisk opdatering", - "live": "Live", + "live": "Direkte", "copyInput": "Kopiér input", "copyOutput": "Kopiér output", "streamTransformFailed": "Kunne ikke transformere stream" @@ -9277,17 +9284,17 @@ "kiloPassRemaining": "Tilbageværende", "kiloPassRenews": "Fornyes om {count} dage", "kiloPassUsageLabel": "Denne måneds forbrug", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Ekstra forbrugskreditter", + "kimiExtraUsage": "Ekstra forbrug", + "kimiExtraUsageEnabled": "Aktiveret", + "kimiExtraUsageDisabled": "Deaktiveret", + "kimiExtraUsageFrozen": "Frosset", + "kimiExtraUsageUnavailable": "Ikke tilgængelig", + "kimiMonthlyUsed": "Brugt denne måned", + "kimiMonthlyLimit": "Månedlig grænse", + "kimiMonthlyLimitUnlimited": "Ubegrænset", + "kimiAdditionalCredits": "Yderligere kreditter", + "loggerTab": "Logføring", "proxyTab": "Fuldmagt", "budgetManagement": "Budgetstyring", "budgetSaved": "Budgetgrænser gemt", @@ -9310,7 +9317,7 @@ "budgetExceeded": "Budget overskredet — anmodninger kan blive blokeret", "totalRequests": "Samlet antal anmodninger", "noDataYet": "Ingen data endnu", - "latency": "Latency", + "latency": "Ventetid", "latencyP50": "p50", "latencyP95": "s95", "latencyP99": "s99", @@ -9320,11 +9327,11 @@ "activeCount": "{count} aktiv", "openCircuitBreakersDetected": "Åbne afbrydere registreret", "hitRate": "Hitrate", - "hitsMisses": "Hits / Misses", + "hitsMisses": "Træffere / bommere", "circuitBreakers": "Strømafbrydere", "lockedIPs": "Låste IP'er", "lockoutsAutoRefreshHint": "Låse for hastighedsbegrænsning pr. model • Automatisk opdatering 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# låst} other {# låst}}", "timeLeft": "{time} tilbage", "howItWorks": "Hvordan det virker", "howItWorksSubtitle": "Lær, hvordan evalueringer validerer dine LLM-svar", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "Svar sammenlignes med forventede kriterier. Se bestået/ikke bestået for hver sag med latency-metrics og detaljeret feedback.", "evalsStrategyContainsLabel": "Indeholder", "evalsStrategyExactLabel": "Eksakt match", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Regulært udtryk", "evalsStrategyCustomLabel": "Brugerdefineret logik", "evalsStrategyContainsDescription": "Kontrollerer, om LLM-outputtet indeholder den forventede delstreng.", "evalsStrategyExactDescription": "Kontrollerer, om LLM-outputtet matcher den forventede værdi nøjagtigt.", @@ -9354,13 +9361,13 @@ "noEvalSuitesDescription": "Eval-suiter kan defineres via API'et eller i kode. De tester modeloutput mod forventede resultater ved hjælp af strategier som indeholder, regex, eksakt match og brugerdefinerede funktioner.", "columnCase": "Sag", "columnStatus": "Status", - "columnLatency": "Latency", + "columnLatency": "Ventetid", "columnDetails": "Detaljer", "columnModel": "Model", "columnStrategy": "Strategi", "columnExpected": "Forventet", "statsSuites": "Suiter", - "statsTestCases": "Test Cases", + "statsTestCases": "Testcases", "statsModels": "Modeller", "statsCoverage": "Dækning", "statsStrategiesCount": "{count} strategier", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Modeller under test", "searchSuitesPlaceholder": "Søg suiter...", "passSuffix": "bestå", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# testcase} other {# testcases}}", "runEval": "Kør Eval", "runAllSuites": "Kør alle", "runAllRunning": "Kører alle...", "runAllProgress": "Kører {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# testsamling mislykkedes} other {# testsamlinger mislykkedes}}", "runAllCompleted": "Kørte {suites} suiter — {passed} bestået, {failed} mislykkedes", "runAllCompletedWithFailures": "Kørte {completed} suiter; {failedSuites} kunne ikke fuldføres", "runningProgress": "Kører {current}/{total}...", @@ -9397,14 +9404,14 @@ "notifyAllCasesPassed": "Alle {total} sager bestået ✅", "notifySomeCasesFailed": "{passed}/{total} bestået, {failed} mislykkedes", "notifyEvalRunFailed": "Evalkørsel mislykkedes", - "notifyEvalTitle": "Eval: {name}", + "notifyEvalTitle": "Evaluering: {name}", "modelEvals": "Modelvurderinger", "evalsHeroDescription": "Test og valider dine LLM-endepunkter ved at køre foruddefinerede evalueringspakker. Hver suite indeholder testcases, der sender reelle prompter gennem OmniRoute og sammenligner svar med forventede kriterier - hjælper dig med at opdage regression, sammenligne modeller og sikre svarkvalitet på tværs af udbydere.", "qualityValidation": "Kvalitetsvalidering", "modelComparison": "Model sammenligning", "regressionDetection": "Regression detektion", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", + "latencyBenchmarks": "Benchmarks for ventetid", + "modelLockouts": "Modelspærringer", "noLockouts": "Ingen modeller er låst i øjeblikket", "activeSessions": "Aktive sessioner", "noSessions": "Ingen aktive sessioner", @@ -9423,7 +9430,7 @@ "providerLimits": "Udbydergrænser", "noProviders": "Ingen udbydere tilsluttet", "connectProvidersForQuota": "Opret forbindelse til udbydere med OAuth for at spore dine API-kvotegrænser og brug.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# konto} other {# konti}}", "filteredFromCount": "(filtreret fra {count})", "autoRefresh": "Automatisk opdatering", "refreshAll": "Opdater alle", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Kunne ikke opdatere kvotesynlighed", "account": "Konto", "modelQuotas": "Modelkvoter", - "lastUsed": "Last Refreshed", + "lastUsed": "Senest opdateret", "actions": "Handlinger", "refreshQuota": "Opdater kvote", "today": "I dag", @@ -9452,13 +9459,13 @@ "cardExpand": "Udvid", "cardCollapse": "Sammenfold", "moreQuotas": "+{count} flere", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Ikke-grupperet", + "viewFlat": "Flad", + "viewByEnvironment": "Efter miljø", "noQuotaDataAvailable": "Ingen tilgængelige kvotedata", "noAccountsForTierFilter": "Der blev ikke fundet nogen konti til niveaufilter", "tierAll": "Alle", - "tierEnterprise": "Enterprise", + "tierEnterprise": "Virksomhed", "tierTeam": "Team", "tierBusiness": "Forretning", "tierUltra": "Ultra", @@ -9467,7 +9474,7 @@ "tierFree": "Gratis", "tierLite": "Lite", "tierUnknown": "Ukendt", - "statTotal": "Total", + "statTotal": "I alt", "statCritical": "Kritisk", "statAlert": "Alarm", "statHealthy": "Sund", @@ -9475,7 +9482,7 @@ "filterTierLabel": "Niveau", "purchaseAll": "Alle", "purchaseOauthSub": "Abonnement", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "OAuth gratis", "purchaseApiKey": "API-nøgle", "creditsLabel": "Kreditter", "creditBalanceHint": "Resterende saldo", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Indløs kredit", "resetCreditRedeemed": "Nulstilling indløst", "resetCreditRedeemFailed": "Kunne ikke indløse nulstillingskredit", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Kunne ikke gemme testsamlingen", "clone": "Klon", "exportSuite": "Eksporter", "importSuite": "Importer", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Ugyldig eval suite JSON", "suiteBuilderCloneSuffix": "kopi", "suiteBuilderImportedSuite": "Importeret Suite", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", + "scorecardTitle": "Resultatoversigt", + "evalApiKey": "API-nøgle", + "scorecardPassRate": "Beståelsesrate", "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "actualOutputLabel": "Faktisk output", + "evalTargetHint": "Vælg en model eller kombination, der skal evalueres.", + "suiteBuilderDeleted": "Testsamlingen blev slettet", + "suiteBuilderCaseCardHint": "Definer inputprompten og kriterierne for det forventede output.", + "nextResetUtc": "Næste nulstilling (UTC)", + "scorecardHint": "Samlede beståelsesrater på tværs af alle evalueringssamlinger.", + "suiteLatestRunsHint": "De seneste evalueringskørsler for denne samling.", + "saving": "Gemmer", + "suiteBuilderCaseModelLabel": "Model (valgfri)", + "evalControlsTitle": "Evalueringsindstillinger", + "suiteBuilderEditTitle": "Rediger evalueringssamling", + "suiteBuilderCaseStrategyLabel": "Valideringsstrategi", + "notifySelectDifferentCompareTarget": "Vælg et andet mål til sammenligning", + "recentRunsHint": "Viser de seneste evalueringskørsler. Klik på en kørsel for at se detaljerede resultater.", + "evalCompareHint": "Sammenlign eventuelt resultaterne med et andet mål.", + "suiteBuilderCaseInvalid": "Denne test har valideringsfejl. Ret dem, før du gemmer.", + "historyEmpty": "Ingen evalueringshistorik endnu", + "suiteBuilderUpdated": "Evalueringssamlingen blev opdateret", + "resetInterval": "Nulstillingsinterval", + "suiteBuilderCreateTitle": "Opret evalueringssamling", + "activePeriodSpend": "Forbrug i den aktive periode", + "evalApiKeyHint": "Vælg, hvilken API-nøgle der skal bruges til evalueringsanmodninger.", + "evalCompareOptional": "Sammenlign (valgfrit)", + "suiteBuilderDeleteFailed": "Kunne ikke slette evalueringssamlingen", + "suiteBuilderCaseSystemPromptPlaceholder": "Valgfri systeminstruktioner...", + "scorecardCases": "Tests", + "runCompletedWithScore": "Evaluering fuldført — {score}% bestået", + "suiteBuilderCustomBadge": "Brugerdefineret", + "targetSuiteDefaults": "Standardindstillinger for suite", + "suiteBuilderDeleteConfirm": "Er du sikker på, at du vil slette denne suite? Denne handling kan ikke fortrydes.", + "suiteBuilderNameLabel": "Suitenavn", + "scorecardSuites": "Suiter", + "evalCompareTarget": "Sammenligningsmål", + "suiteBuilderCaseModelPlaceholder": "f.eks. gpt-4o-mini", + "evalControlsHint": "Konfigurer dit evalueringsmål og din API-nøgle, og kør derefter suiter for at validere modellens kvalitet.", + "recentRunsTitle": "Seneste kørsler", + "suiteBuilderCaseSystemPromptLabel": "Systemprompt", + "suiteBuilderCaseExpectedPlaceholder": "f.eks. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "f.eks. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Indsæt det nøjagtige forventede svar", "suiteBuilderCaseExpectedPlaceholderRegex": "f.eks. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Brug et regulært JavaScript-udtryk uden at ombryde skråstreger.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "f.eks. suite til kodekvalitet", + "suiteBuilderAddCase": "Tilføj testtilfælde", + "cancel": "Annuller", + "evalTarget": "Mål", + "suiteBuilderCaseNameLabel": "Navn på testtilfælde", + "weeklyLimitUsd": "Ugentlig grænse (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "f.eks. Skriv en fibonacci-funktion i Python", + "suiteBuilderNameRequired": "Suitenavn er påkrævet", + "suiteBuilderCaseUserPromptLabel": "Brugerprompt", + "daily": "Dagligt", + "resultErrorLabel": "Fejl", + "suiteBuilderBuiltInBadge": "Indbygget", + "suiteBuilderCaseCardTitle": "Testtilfælde", "suiteBuilderDuplicateCase": "Duplikat", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", + "weeklyLimitPlaceholder": "f.eks. 50.00", + "suiteBuilderCaseTagsHint": "Kommaseparerede tags til organisering af testtilfælde.", + "notifyEvalRunFailedWithReason": "Evaluering mislykkedes: {reason}", + "weekly": "Ugentligt", + "runEvalRunning": "Kører evaluering...", + "delete": "Slet", + "resetTimeUtc": "Nulstillingstidspunkt (UTC)", + "evalApiKeyAuto": "Automatisk (brug standard)", + "suiteBuilderDescriptionPlaceholder": "Valgfri beskrivelse af, hvad denne suite tester...", + "targetComparisonTitle": "Sammenligning af mål", + "save": "Gem", + "suiteBuilderCreated": "Suiten blev oprettet", + "suiteLatestRuns": "Seneste kørsler", + "suiteBuilderCaseExpectedLabel": "Forventet værdi", + "historyLatency": "Svartid", + "suiteBuilderCaseTagsPlaceholder": "f.eks. kodning, python", + "targetTypeCombo": "Kombination", + "scorecardPassed": "Bestået", "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", + "suiteBuilderNewSuite": "Ny suite", + "notifyEvalLoadFailed": "Kunne ikke indlæse evalueringsdata", + "notConfigured": "Ikke konfigureret", + "suiteBuilderCaseNamePlaceholder": "f.eks. Python Fibonacci-test", "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "suiteBuilderCreateAction": "Opret suite", + "suiteBuilderCasesHint": "Hver testcase sender en prompt og validerer svaret.", + "suiteBuilderUpdatedAt": "Opdateret", + "errorBadge": "Fejl", + "suiteBuilderCasesTitle": "Testcases", + "edit": "Rediger", + "monthly": "Månedligt", + "suiteBuilderCasesRequired": "Der kræves mindst én testcase", + "weeklyLimitSummary": "Oversigt over ugentlig budgetgrænse", + "suiteBuilderDescriptionLabel": "Beskrivelse", + "targetComparisonHint": "Side om side-sammenligning af evalueringsresultater mellem mål.", + "compareCompletedWithScore": "Sammenligning fuldført — {score} % bestået", + "staleQuotaTooltip": "Seneste opdatering mislykkedes — viser cachelagrede data", "quotaThresholdLabel": "Min. tilbage", "quotaCutoffsColumnHelp": "Stop anmodninger, når den resterende kvote falder til denne procentdel eller derunder.", "quotaCutoffsButtonDefault": "Standard", @@ -9745,7 +9752,7 @@ "proxy": "Fuldmagt", "level": "Niveau", "directNative": "Direkte (native)", - "combo": "Combo", + "combo": "Kombination", "inputTokens": "jeg:", "outputTokens": "O:" }, @@ -9756,7 +9763,7 @@ "usageByModel": "Brug efter model", "usageByAccount": "Brug efter konto", "failedToLoad": "Kunne ikke indlæse brugsstatistikker.", - "tokenHealth": "Token Health", + "tokenHealth": "Tokenstatus", "totalOAuth": "Samlet OAuth", "healthy": "Sundt", "warning": "Advarsel", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Systemmålinger", "memory": "Hukommelse", - "memoryShort": "mem", + "memoryShort": "huk.", "uptime": "Oppetid", "ariaLabel": "Systemovervågning", "title": "Systemovervågning", @@ -9816,8 +9823,8 @@ "signIn": "Log ind", "enterPassword": "Indtast din adgangskode for at fortsætte", "password": "Adgangskode", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", + "unifiedProxy": "Samlet AI API-proxy", + "unifiedAiApiProxy": "Samlet AI API-proxy", "unifiedAiApiProxyDesc": "Rut anmodninger til flere AI-udbydere gennem et enkelt slutpunkt. Belastningsbalancering, failover og brugssporing indbygget.", "passwordNotEnabled": "Adgangskodebeskyttelse er ikke aktiveret", "loading": "Indlæser...", @@ -9825,7 +9832,7 @@ "errorOccurredRetry": "Der opstod en fejl. Prøv venligst igen.", "configureInstance": "Lad os få konfigureret din OmniRoute-instans", "runOnboardingWizard": "Kør onboarding-guiden for at konfigurere din adgangskode og oprette forbindelse til din første AI-udbyder.", - "startOnboarding": "Start Onboarding", + "startOnboarding": "Start onboarding", "secureYourInstance": "Sikre din instans", "setPasswordDescription": "Indstil en adgangskode for at beskytte dit dashboard og sikre dine API-endepunkter mod uautoriseret adgang.", "configurePassword": "Konfigurer adgangskode", @@ -9863,7 +9870,7 @@ "backToLogin": "Tilbage til Login", "forgotPassword": "Glemt adgangskode?", "continueWithOidc": "Fortsæt med OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Standardadgangskode: CHANGEME (medmindre INITIAL_PASSWORD blev angivet)", "Authorization": "Autorisation", "Content-Disposition": "Indhold-Disposition", "waitingForAuthorization": "Venter på godkendelse...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Venter på antigravity-autorisation...", "waitingForQoderAuthorization": "Venter på Qoder-godkendelse...", "exchangingCodeForTokens": "Udveksler kode til tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Inkompatibel Node.js-version", + "nodeIncompatibleDesc": "Du kører Node.js {version}, som ikke er omfattet af OmniRoutes politik for understøttede, sikre runtime-miljøer. Brug en sikkerhedsopdateret Node.js 20.x- eller 22.x LTS-version.", + "nodeIncompatibleFixLabel": "Løsning: Installér en sikkerhedsopdateret Node.js 22 LTS-version", + "nodeIncompatibleHint": "OmniRoute kræver Node.js 22.22.2+ (22.x LTS) eller 24.0.0+ (24.x LTS). Node 24 LTS anbefales.", "resetViaAppDataTitle": "Nulstil via App Data", "resetViaAppDataDescription": "Slet indstillingsfilen fra appdata-mappen for at nulstille din adgangskode:", "quitDesktopApp": "Luk OmniRoute desktop-appen helt", @@ -9943,21 +9950,21 @@ "viewOnGithub": "Se på GitHub", "powerfulFeatures": "Kraftige funktioner", "featuresSubtitle": "Alt hvad du behøver for at administrere din AI-infrastruktur på ét sted, bygget til skala.", - "featureUnifiedEndpointTitle": "Unified Endpoint", + "featureUnifiedEndpointTitle": "Samlet slutpunkt", "featureUnifiedEndpointDesc": "Få adgang til alle udbydere via en enkelt standard API-URL.", "featureEasySetupTitle": "Nem opsætning", "featureEasySetupDesc": "Kom i gang på få minutter med npx-kommandoen.", - "featureModelFallbackTitle": "Model Fallback", + "featureModelFallbackTitle": "Model-fallback", "featureModelFallbackDesc": "Skift automatisk udbyder ved fejl eller høj latenstid.", "featureUsageTrackingTitle": "Brugssporing", "featureUsageTrackingDesc": "Detaljerede analyser og omkostningsovervågning på tværs af alle modeller.", "featureOAuthApiKeysTitle": "OAuth- og API-nøgler", "featureOAuthApiKeysDesc": "Administrer legitimationsoplysninger sikkert i én boks.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Skysynkronisering", "featureCloudSyncDesc": "Synkroniser dine konfigurationer på tværs af enheder med det samme.", "featureCliSupportTitle": "CLI support", "featureCliSupportDesc": "Fungerer med Claude Code, Codex, Cline, Cursor og mere.", - "featureDashboardTitle": "Dashboard", + "featureDashboardTitle": "Kontrolpanel", "featureDashboardDesc": "Visuelt dashboard til trafikanalyse i realtid.", "howItWorks": "Sådan fungerer OmniRoute", "howItWorksDescription": "Data flyder problemfrit fra din applikation gennem vores intelligente routing-lag til den bedste udbyder til jobbet.", @@ -9980,14 +9987,14 @@ "copied": "✓ Kopieret", "startingOmniRoute": "Starter OmniRoute...", "serverRunningOnLabel": "Server kører på", - "dashboardLabel": "Dashboard", + "dashboardLabel": "Kontrolpanel", "readyToRoute": "Klar til rute! ✓", "configureProvidersNote": "📝 Konfigurer udbydere i dashboard eller brug miljøvariabler", "dataLocation": "Dataplacering:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", "product": "Produkt", - "dashboardLink": "Dashboard", + "dashboardLink": "Kontrolpanel", "changelog": "Ændringslog", "resources": "Ressourcer", "documentation": "Dokumentation", @@ -10011,7 +10018,7 @@ "readDocumentation": "Læs dokumentation", "company": "Virksomhed", "pricing": "Priser", - "apiReference": "API Reference", + "apiReference": "API-reference", "helpCenter": "Hjælp Center", "about": "Om", "blog": "Blog", @@ -10033,8 +10040,8 @@ "clientCompatibility": "Klientkompatibilitet", "protocolsToc": "Protokoller", "apiReference": "API-reference", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Reference til administrations-API", + "managementApiDescription": "Automatiseringsslutpunkter til proxyregister, omfangstildelinger og migrering af ældre proxyer.", "method": "Metode", "path": "Sti", "notes": "Noter", @@ -10064,7 +10071,7 @@ "quickStartStep4Suffix": "Brug for eksempel udbyderpræfiks", "deploySetupTitle": "Opsætningsvejledning", "deploySetupText": "Trin-for-trin installation, miljøkonfiguration og førstegangsgennemgang for OmniRoute.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron-skrivebord", "deployElectronText": "Kør OmniRoute som en indbygget desktopapplikation på Windows, macOS og Linux.", "deployDockerTitle": "Docker", "deployDockerText": "Containeriseret udrulning med Docker Compose; klar til produktionsstabler og Kubernetes.", @@ -10075,14 +10082,14 @@ "deployPwaTitle": "PWA", "deployPwaText": "Installer OmniRoute som en progressiv webapp på Android-, iOS- og desktopbrowsere.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", - "featureRoutingTitle": "Multi-Provider Routing", + "deployTermuxText": "Kør OmniRoute headless på Android via Termux. Tilgå kontrolpanelet fra din mobilbrowser.", + "featureRoutingTitle": "Routing med flere udbydere", "featureRoutingText": "Rut anmodninger til 30+ AI-udbydere gennem et enkelt OpenAI-kompatibelt slutpunkt. Understøtter chat, svar, lyd og billed-API'er.", "featureCombosTitle": "Kombinationer og balancering", "featureCombosText": "Opret modelkombinationer med fallback-kæder og balanceringsstrategier: round-robin, prioritet, tilfældig, mindst brugt og omkostningsoptimeret.", "featureUsageTitle": "Brug og omkostningssporing", "featureUsageText": "Tokenoptælling i realtid, omkostningsberegning pr. udbyder/model og detaljeret forbrugsopdeling efter API-nøgle og konto.", - "featureAnalyticsTitle": "Analytics Dashboard", + "featureAnalyticsTitle": "Analysekontrolpanel", "featureAnalyticsText": "Visuel analyse med diagrammer for anmodninger, tokens, fejl, latens, omkostninger og modelpopularitet over tid.", "featureHealthTitle": "Sundhedsovervågning", "featureHealthText": "Live-sundhedstjek, udbyderstatus, strømafbrydertilstande og automatisk hastighedsgrænsedetektering med eksponentiel backoff.", @@ -10090,7 +10097,7 @@ "featureCliText": "Administrer IDE-konfigurationer, eksporter/importér sikkerhedskopier, find codex-profiler og konfigurer indstillinger fra dashboardet.", "featureSecurityTitle": "Sikkerhed og politikker", "featureSecurityText": "API-nøglegodkendelse, IP-filtrering, promptindsprøjtningsbeskyttelse, domænepolitikker, sessionsstyring og revisionslogning.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Skysynkronisering", "featureCloudSyncText": "Synkroniser din konfiguration med Cloudflare Workers for fjernadgang med krypterede legitimationsoplysninger og automatisk failover.", "providersAcrossConnectionTypes": "{count} udbydere på tværs af tre forbindelsestyper.", "manageProviders": "Administrer udbydere", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Omskrivehjælper til klienter uden /v1.", "endpointRewriteResponsesNote": "Omskriv hjælper til svar uden /v1.", "endpointRewriteModelsNote": "Omskrivningshjælper til modelopdagelse uden /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Vis gemte elementer i proxyregistret (understøtter paginering).", + "mgmtProxiesCreateNote": "Opret et genanvendeligt proxyelement i registret.", + "mgmtProxiesHealthNote": "Hent 24-timers/løbende tilstandsmålinger pr. gemt proxy fra proxylogfiler.", + "mgmtProxiesBulkAssignNote": "Tildel eller fjern én proxy på tværs af mange omfangs-id'er i én anmodning.", + "mgmtAssignmentsListNote": "Vis proxytildelinger efter omfang, scope_id eller proxy_id.", + "mgmtAssignmentsUpdateNote": "Tildel eller fjern proxy for globalt/udbyder-/konto-/kombinationsomfang.", + "mgmtLegacyMigrationNote": "Importér ældre proxyConfig-maps til registertildelinger.", "modelPrefixesDescriptionStart": "Brug udbyderpræfikset før modelnavnet for at rute til en bestemt udbyder. Eksempel:", "modelPrefixesDescriptionEnd": "ruter til GitHub Copilot.", "provider": "Udbyder", @@ -10233,7 +10240,7 @@ "metadataTitleTemplate": "%s — OmniRoute Doku", "metadataDefaultTitle": "OmniRoute Dokumentation", "metadataDescription": "Omfattende dokumentation for OmniRoute AI gateway — opsætning, API, komprimering, implementering og mere.", - "layoutNavTitle": "OmniRoute Docs", + "layoutNavTitle": "OmniRoute-dokumentation", "layoutHomeLink": "Dokumenter Hjem", "layoutDashboardLink": "← Tilbage til Dashboard", "homeTitle": "OmniRoute Dokumentation", @@ -10243,7 +10250,7 @@ "homeSearchHint": "Tryk på Ctrl K for at søge i dokumentationen", "featuredQuickStartTitle": "Hurtig Start", "featuredQuickStartDescription": "Få OmniRoute til at køre på 3 minutter", - "featuredAutoComboTitle": "Auto-Combo Guide", + "featuredAutoComboTitle": "Auto-Combo-vejledning", "featuredAutoComboDescription": "Lad OmniRoute vælge den bedste AI til dig", "featuredProvidersTitle": "Udbyderguide", "featuredProvidersDescription": "Forbind AI-udbydere på få minutter", @@ -10251,7 +10258,7 @@ "nonTechUsersSubtitle": "Kom hurtigt i gang — ingen teknisk baggrund nødvendig", "techUsersTitle": "For Tech Brugere", "techUsersSubtitle": "Dybdegående indblik i arkitektur, API'er og interne systemer", - "apiExplorerMetadataTitle": "API Explorer — OmniRoute Docs", + "apiExplorerMetadataTitle": "API Explorer — OmniRoute-dokumentation", "apiExplorerMetadataDescription": "Interaktiv API-udforsker — prøv OmniRoute-endepunkter live med realtids-svar", "apiExplorerTitle": "API Udforsker", "apiExplorerDescription": "Prøv OmniRoute-endepunkter live. Vælg et endepunkt, konfigurer din anmodning, og se svaret i realtid.", @@ -10332,39 +10339,39 @@ "termsDataLocationText": "Brugslogfiler, API-nøgler og konfiguration gemmes i", "termsSection5Title": "5. Ansvarsfraskrivelse", "termsSection5Text": "OmniRoute leveres \"som den er\" uden garanti af nogen art. Vi er ikke ansvarlige for omkostninger, der påløber som følge af API-brug, serviceforstyrrelser eller tab af data. Vedligehold altid sikkerhedskopier af din konfiguration.", - "termsSection6Title": "6. Open Source", + "termsSection6Title": "6. Open source", "termsSection6Text": "OmniRoute er open source-software. Du kan frit inspicere, ændre og distribuere den i henhold til licensbetingelserne." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI-agenter", + "description": "Find installerede CLI-agenter på dit system. Tilføj brugerdefinerede agenter til automatisk registrering.", + "refresh": "Opdater", + "installed": "Installeret", + "notFound": "Ikke fundet", + "builtIn": "Indbygget", + "custom": "Brugerdefineret", + "remove": "Fjern", + "addCustomAgent": "Tilføj brugerdefineret agent", + "addCustomAgentDesc": "Registrer ethvert CLI-værktøj til registrering. Det scannes automatisk ved opdatering.", + "agentName": "Agentnavn", + "binaryName": "Binært navn", + "versionCommand": "Versionskommando", + "spawnArgs": "Startargumenter", + "addAgent": "Tilføj agent", + "scanning": "Scanner systemet for CLI-agenter...", + "opencodeIntegration": "OpenCode-integration", + "opencodeDetected": "opencode {version} registreret", + "opencodeDesc": "Generér en brugsklar {configFile} med din OmniRoute-basis-URL og alle tilgængelige modeller — placér den i projektets rodmappe, og kør {command}.", + "downloadConfig": "Hent {file}", + "downloaded": "Downloadet!", + "setupGuideTitle": "Opsætningsvejledning", + "openCliTools": "Åbn CLI-værktøjer", + "setupGuideDetectCliTitle": "Registrer installerede CLI'er", + "setupGuideDetectCliDesc": "Klik på Opdater efter installation eller opdatering af en CLI, så OmniRoute kan genscanne binære filer og versioner.", + "setupGuideCustomAgentTitle": "Registrer brugerdefineret binær fil", + "setupGuideCustomAgentDesc": "Brug Tilføj brugerdefineret agent, når din CLI ikke findes på den indbyggede liste. Angiv det binære navn og versionskommandoen.", + "setupGuideCommandMissingTitle": "Ret 'kommandoen blev ikke fundet'", + "setupGuideCommandMissingDesc": "Sørg for, at CLI-kommandoen findes i PATH, åbn en ny terminalsession, og kør Opdater igen.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10473,7 +10480,7 @@ "statusFailed": "Mislykkedes", "statusCancelled": "Annulleret", "repositoryName": "Depotnavn", - "repositoryUrl": "Repository URL", + "repositoryUrl": "URL til lager", "branch": "Filial", "agentDescriptions": { "jules": "Googles autonome kodeagent", @@ -10482,7 +10489,7 @@ "cursorCloud": "Cursors baggrunds-/cloud-agenter (officiel API-nøgle)" }, "activityTypes": { - "plan": "Plan", + "plan": "Abonnement", "command": "Kommando", "code_change": "Kodeændring", "message": "Besked", @@ -10497,7 +10504,7 @@ "thinking": "Tænker", "tool-calling": "Værktøjsopkald", "multi-turn": "Multivending", - "vision": "Vision", + "vision": "Billedforståelse", "schema-coercion": "Skema tvang" }, "templateDescriptions": { @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Cacheadministration", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Opdater", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Poster i hukommelsen", + "memoryEntriesSub": "LRU i hukommelsen", + "dbEntries": "Databaseposter", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Cachetræffere", + "cacheHitsSub": "af {total} i alt", + "tokensSaved": "Sparede tokens", + "tokensSavedSub": "Estimeret ud fra hits", + "hitRate": "Hitrate", + "performance": "Cacheydeevne", + "autoRefresh": "Opdateres automatisk hvert {seconds}. sekund", + "hits": "Træffere", + "misses": "Forbier", + "total": "I alt", + "behavior": "Cacheadfærd", + "behaviorDeterministic": "Kun ikke-streamende anmodninger med temperature=0 caches.", + "behaviorBypass": "Omgå med headeren {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "Standard-TTL: 30 minutter. Konfigurer via {envVar}.", + "idempotency": "Idempotenslag", + "activeDedupKeys": "Aktive deduplikeringsnøgler", + "dedupWindow": "Deduplikeringsvindue", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Cachen kunne ikke ryddes.", + "unavailable": "Cache er ikke tilgængelig", + "unavailableDesc": "Cachestatistikken kunne ikke hentes. Kontrollér, at serveren kører.", "loadingCacheAria": "Indlæser cache", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Promptcache (hos udbyderen)", + "semanticCache": "Semantisk cache", + "promptCacheSectionDesc": "Viser aktivitet for promptcache hos udbyderen fra brugshistorikken, så du kan se, hvor cachestyring er aktiv, og hvor meget input der genbruges.", + "promptTrendDesc": "Anmodningsvolumen pr. time, cachedækning og cachelæsevolumen i løbet af de seneste 24 timer.", + "cachedRequests": "Cachede anmodninger", + "cachedRequests24h": "Cachede anmodninger (24 t.)", + "cacheHitRate": "Cachehitrate", + "cacheRate": "Cacheandel", + "cacheRateDesc": "af alle anmodninger", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Målinger for promptcache", + "withCacheControl": "Med cachestyring", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Genbrugsforhold for cache", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Estimeret besparelse", + "lastUpdated": "Senest opdateret", + "hoursTracked": "registrerede timer", + "busiestHour": "Travleste time", + "peakCacheRate": "Højeste cacheandel", + "trendHour": "Time", + "activityVolume": "Aktivitet", + "requestsShort": "anmodninger", + "inputShort": "Input", + "cachedShort": "Cachet", + "writeShort": "Skriv", + "resetting": "Nulstiller...", + "resetMetrics": "Nulstil målinger", + "byProvider": "Fordeling efter udbyder", + "providerCacheRateDesc": "Hver udbyder viser det samlede antal inputtokens, cachelæsetokens og cacheskrivetokens, så du kan kontrollere genbrugsforholdet i forhold til de rå totaler.", "provider": "Provider", - "requests": "Requests", + "requests": "Anmodninger", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Cacheudvikling (24 t.)", + "peakCached": "Maksimalt cachelagret", + "cached": "Cachelagret", + "overview": "Oversigt", "tableProvider": "Udbyder", "tableModel": "Model", "performanceTitle": "Ydeevne", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoutes egen deterministiske svarcache. Når den er aktiveret, kan gentagne ikke-streamende anmodninger med temperature=0 besvares lokalt uden at kontakte upstream-udbyderen.", + "semanticCacheDisabledDesc": "Den semantiske cache er deaktiveret. OmniRoute springer lokal genbrug af svar over, indtil du aktiverer den igen under Indstillinger.", + "semanticEntriesDesc": "Permanent gemte semantiske cacheposter, der aktuelt er lagret i SQLite. Cacheaktivitet for prompts hos udbyderen vises ikke her.", + "searchEntries": "Søg i poster...", + "search": "Søg", + "loading": "Indlæser...", + "entriesLoadError": "Kunne ikke indlæse semantiske cacheposter.", + "noEntries": "Ingen cacheposter fundet", + "noPromptCacheData": "Der er endnu ikke registreret cacheaktivitet for prompts hos udbyderen.", + "noTrendData": "Der er ikke registreret cacheaktivitet for prompts inden for de seneste 24 timer.", + "signature": "Signatur", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Oprettet", + "expires": "Udløber", + "actions": "Handlinger", + "deduplicatedRequests": "Deduplikerede anmodninger", + "savedCalls": "Sparede API-kald", + "totalProcessed": "Samlet antal behandlede anmodninger", + "disabled": "Deaktiveret", + "totalRequests": "Samlet antal anmodninger", "reasoningCache": "Begrundelse Replay", "reasoningCacheDesc": "Bevarer modeltænkning for multi-turn tool calling flows", "reasoningEntries": "Aktive poster", @@ -10669,16 +10676,16 @@ "minutesAgo": "{minutes}m siden", "hoursAgo": "{hours}t siden", "daysAgo": "{days}d siden", - "entries": "Entries" + "entries": "Poster" }, "proxyConfigModal": { "levelGlobal": "Globalt", "levelProvider": "Udbyder", - "levelCombo": "Combo", + "levelCombo": "Kombination", "levelKey": "Nøgle", "levelDirect": "Direkte (ingen proxy)", "titleGlobal": "Global proxy-konfiguration", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "{level}-proxy — {label}", "loading": "Indlæser proxy-konfiguration...", "inheritingFrom": "Arver fra", "source": "Kilde", @@ -10761,7 +10768,7 @@ "errorSessionNotInitialized": "OAuth-session ikke initialiseret. Genstart forbindelsesflowet og prøv igen.", "errorNoAuthorizationCode": "Ingen autorisationskode fundet. Indsæt callback-URL'en eller autorisationskoden.", "tabDeviceCode": "Enhedskode", - "tabBrowserLogin": "Browser Login", + "tabBrowserLogin": "Browserlogin", "tabImportAuthJson": "Importer auth.json", "tabPasteApiKey": "Indsæt API-nøgle", "windsurfPasteDescription": "I Windsurf / VS Code IDE, kør kommandoen \"Windsurf: Provide Auth Token\" fra kommando paletten (eller klik på Jupyter \"Get Windsurf Authentication Token\" knappen), kopier derefter den viste token og indsæt den nedenfor. At åbne windsurf.com/show-auth-token direkte viser kun en \"Redirecting\" side — IDE'en skal initiere flowet.", @@ -10776,7 +10783,7 @@ "saveConnection": "Gem Forbindelse", "gheDescription": "Indtast basis-URL'en til din GitHub Enterprise-instans (f.eks. https://ghe.yourcompany.com).", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "GitHub Enterprise-URL", "gheUrlRequired": "GitHub Enterprise-URL er påkrævet", "gitlabDuoSetupTitle": "GitLab Duo OAuth opsætning", "gitlabDuoSetupMessage": "GitLab Duo OAuth er ikke konfigureret. Registrer en OAuth-applikation på {applicationsUrl} med omdirigerings-URI {redirectUri} og scopes \"{scopes}\", og indstil derefter {clientIdEnv} (og valgfrit {clientSecretEnv}) og genstart.", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Tilslut Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Log ind med Cursor", + "tabImport": "Importér token", + "loginDescription": "Åbner Cursors browserlogin. Virker i Docker — godkend i browseren på din vært, og vend derefter tilbage hertil.", + "loginWithCursor": "Log ind med Cursor", + "startingLogin": "Starter…", + "waitingApproval": "Venter på godkendelse af Cursor-login…", + "openUrlHint": "Hvis browseren ikke åbnede:", + "openLoginLink": "Åbn loginside", + "cancelLogin": "Annuller login", "autoDetecting": "Automatisk registrering af tokens...", "readingFromCursor": "Læser fra Cursor IDE eller cursor-agent", "tokensAutoDetected": "Tokens blev automatisk registreret fra Cursor IDE!", "cursorNotDetected": "Markør-IDE blev ikke fundet. Indsæt venligst dit token manuelt.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Kører du i Docker? Brug helst Log ind med Cursor. Automatisk import fra IDE'en og cursor-agent er normalt ikke tilgængelige i containeren. Se docs/providers/CURSOR-DOCKER.md.", "accessToken": "Adgangstoken", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Opdateringstoken", + "refreshTokenPlaceholder": "Valgfrit — muliggør automatisk opdatering af token", "required": "*", "accessTokenPlaceholder": "Adgangstoken udfyldes automatisk...", "machineId": "Maskin-id", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Automatisk registrering af tokens mislykkedes", "errorEnterToken": "Indtast venligst adgangstoken", "errorImportFailed": "Import mislykkedes", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Cursor-login kunne ikke startes", + "errorLoginPoll": "Cursor-login mislykkedes", + "errorLoginTimeout": "Tidsfristen for Cursor-login udløb — prøv igen" }, "pricingModal": { "title": "Priskonfiguration", @@ -10843,9 +10850,9 @@ "selectProxy": "Vælg {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Importér ældre data", + "bulkAssign": "Massetildel", + "addProxy": "Tilføj proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10855,14 +10862,14 @@ "tableUsage": "Table Usage", "tableActions": "Table Actions", "test": "Test", - "edit": "Edit", - "delete": "Delete", + "edit": "Rediger", + "delete": "Slet", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", "labelType": "Type", "labelFamily": "IP-familie", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Automatisk (dual-stack)", "familyIpv4": "Kun IPv4", "familyIpv6": "Kun IPv6", "familyHint": "Egress-adressefamilie. Auto bevarer dual-stack; IPv4/IPv6 fastlåser denne proxy til den familie (forhindrer en v4-lækage under en proxy, der kun er IPv6).", @@ -10870,7 +10877,7 @@ "labelPort": "Havn", "labelUsername": "Brugernavn", "labelPassword": "Adgangskode", - "labelRegion": "Region", + "labelRegion": "Område", "labelStatus": "Status", "labelNotes": "Noter", "usernamePlaceholderEdit": "Lad stå tomt for at beholde det nuværende brugernavn", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Mislykkedes", "successRate": "{rate} % succes", "avgLatency": "{latency} ms i gennemsnit", "assignmentsCount": "{count} opgaver", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Reparer", "relayAuthMissing": "godkendelse mangler", @@ -10924,7 +10931,7 @@ "bulkImport": "Bulk import", "bulkImportTitle": "Bulk import fuldmagter", "bulkImportDescription": "Indsæt proxy-profiler ved hjælp af pipe-separeret format. En proxy pr. linje. Eksisterende proxyer (samme vært + port) vil blive opdateret.", - "bulkImportParse": "Parse", + "bulkImportParse": "Fortolk", "bulkImportImport": "Importer {count} proxyer", "bulkImportImporting": "Importerer...", "bulkImportParsed": "{count} proxyer parset", @@ -10957,13 +10964,13 @@ "poolStrategyFailed": "Kunne ikke opdatere rotationsstrategien", "strategyRoundRobin": "Round-robin", "strategyRandom": "Tilfældig", - "strategySticky": "Sticky", + "strategySticky": "Vedvarende", "strategyLatency": "Latensoptimeret", "poolMembersLabel": "Pool-medlemmer ({count})", "poolNoMembers": "Ingen proxyer i denne pool endnu.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# udgang} other {# udgange}} brugt af {connections, plural, one {# forbindelse} other {# forbindelser}} · op til {max} på én udgang · seneste {hours} t.", + "poolEgressObservationEmpty": "Ingen trafik observeret inden for de seneste {hours} t.", + "poolEgressObservationHint": "Optalt fra proxyloggen i tidsrummet: særskilte udgående IP-adresser observeret for medlemmerne af denne pulje samt de OmniRoute-forbindelser, der brugte dem. \"På én udgang\" betyder i løbet af tidsrummet, ikke på samme tid. 429-spærringen pr. IP sætter kun forbindelser fra samme udbyderfamilie på pause.", "poolRemove": "Fjern", "poolRemoveFailed": "Kunne ikke fjerne proxyen fra poolen", "poolAddLabel": "Tilføj en proxy", @@ -10975,43 +10982,43 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", + "endpoint": "Slutpunkt", + "provider": "Udbyder", "model": "Model", "accountKey": "Account Key", "autoAccounts": "Auto ({count} konti)", "noAccounts": "No Accounts", "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "cancel": "Annuller", + "audioFile": "Lydfil", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Ryd alt", + "request": "Anmodning", + "response": "Svar", + "transcription": "Transskription", + "copy": "Kopiér", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Genererede {count} billeder", "generatedImage": "Genereret billede {index}", - "save": "Save", + "save": "Gem", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Svar", "completions": "Fuldførelser", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Indlejringer", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Modereringer", - "rerank": "Rerank", + "rerank": "Genrangér", "search": "Search", "webFetch": "Webhentning" }, @@ -11019,50 +11026,50 @@ "clearChat": "Ryd chat", "typeMessagePlaceholder": "Skriv en besked... (Shift+Enter for ny linje)", "tabChat": "Chat", - "tabCompare": "Compare", + "tabCompare": "Sammenlign", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Byg", + "configPane": "Konfiguration", + "systemPrompt": "Systemprompt", + "systemPromptPlaceholder": "Du er en hjælpsom assistent.", + "modelPlaceholder": "f.eks. openai/gpt-4o", + "endpointLabel": "Slutpunkt", + "parametersLabel": "Parametre", + "collapseConfig": "Skjul konfigurationsruden", + "expandConfig": "Udvid konfigurationsruden", + "temperature": "Temperatur", + "maxTokens": "Maks. antal tokens", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Tilstedeværelsesstraf", + "frequencyPenalty": "Frekvensstraf", "reasoningLabel": "Ræsonnering", "thinking": "Tænkning", "effort": "Indsats", "effortDefault": "Standard", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Tilfældig (lad stå tomt)", + "presetsLabel": "Forudindstillinger", + "loadPreset": "Indlæs forudindstilling", + "savePreset": "Gem forudindstilling", + "noPresets": "Ingen forudindstillinger", + "presetNamePlaceholder": "Navn på forudindstilling", + "savingPreset": "Gemmer…", + "nameRequired": "Navn er påkrævet", + "failedToSavePreset": "Kunne ikke gemme forudindstilling", + "improvePrompt": "Forbedr prompt", + "improvingPrompt": "Forbedrer…", + "improvePromptTitle": "Forbedr din prompt med AI", + "setModelFirst": "Vælg først en model", "setModelInConfigFirst": "Angiv en model i panelet Konfiguration først.", "improvePromptFailed": "Forbedring af prompt mislykkedes.", "improvePromptAria": "Forbedr prompt ved hjælp af AI", "confirmImprovePrompt": "Bekræft forbedring af prompt", "improvePromptDescription": "Dette vil sende din nuværende systemprompt til for at generere en forbedret version.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Dette vil bruge kvote fra den model, der er konfigureret i Config.", + "improveConfirm": "Forbedr", + "exportCode": "Eksportér kode", + "exportCodeTitle": "Eksportér kode", "exportShort": "Eksportér", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Der er ingen playground-tilstand at eksportere.", "closeExportModal": "Luk eksportmodal", "close": "Luk", "exportRealKeyWarning": "Sikkerhedsadvarsel: eksport blokeret — en rigtig API-nøgle blev registreret i outputtet. Nulstil din API-nøgle, og prøv igen.", @@ -11071,12 +11078,12 @@ "copyLangCode": "Kopiér {language}-kode", "loadingPresets": "Indlæser…", "loadPresetPlaceholder": "Indlæs forudindstilling…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", + "copyCode": "Kopiér", + "copiedCode": "Kopieret!", + "addModel": "+ Tilføj model", + "runAll": "Kør alle", + "cancelAll": "Annuller alle", + "maxColumnsReached": "Maksimalt {max} kolonner", "modelPlaceholderCompare": "Model (Cmd+K)…", "noModel": "Ingen model", "statusLabel": "Status: {status}", @@ -11095,29 +11102,29 @@ "waitingForResponse": "Venter på svar…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", + "metricsDisclaimer": "estimat på klientsiden", "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "costLabel": "Omkostning", + "costEstimated": "(estimeret)", "ttftTitle": "Tid til første token (estimat på klientsiden)", "tpsTitle": "Tokens pr. sekund (estimat på klientsiden)", "tokenCountsTitle": "Prompt-tokens ↑ / Fuldførelsestokens ↓", "estimatedCostTitle": "Estimeret omkostning (ikke garanteret nøjagtig)", - "toolsLabel": "Tools", + "toolsLabel": "Værktøjer", "toolsCount": "Værktøjer ({count})", - "addTool": "Add tool", + "addTool": "Tilføj værktøj", "editTool": "Rediger værktøj {name}", "removeTool": "Fjern værktøj {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Funktionsnavn", "toolNameRequiredPlaceholder": "Funktionsnavn *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Beskrivelse (valgfri)", "toolParamsLabel": "Parametre (JSON-skema)", "toolParamsJsonSchema": "JSON-skema til parametre", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parametre skal være gyldig JSON", + "structuredOutputLabel": "Struktureret output", + "enableJsonMode": "Aktivér JSON-tilstand", + "disableJsonMode": "Deaktivér JSON-tilstand", + "invalidJson": "Ugyldig JSON", "jsonMode": "JSON-tilstand", "jsonModeDescription": "Gennemtvinger response_format: json_schema", "schemaName": "Skemanavn", @@ -11125,10 +11132,10 @@ "jsonSchemaEditor": "JSON-skemaeditor", "schemaValidated": "Skema valideret", "validateSchema": "Valider skema", - "seed": "Seed", + "seed": "Startværdi", "stopSequences": "Stopsekvenser", "stopSequencesPlaceholder": "f.eks. \"\\n\\n\" eller \"END\"", - "autoProvider": "Auto", + "autoProvider": "Automatisk", "httpError": "Fejl {status}", "requestCancelled": "Anmodning annulleret", "networkError": "Netværksfejl", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} kolonner", "addModelToCompare": "Tilføj en modelkolonne for at sammenligne", "modelsSimultaneously": "Op til {max} modeller samtidigt", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Kører…", + "runLabel": "Kør", + "enterToolResult": "Indtast værktøjsresultat…", "build": { "step1Label": "Hvad skal testes?", "step2Label": "Konfigurer", @@ -11179,12 +11186,12 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Slutpunkt", "apiKey": "API-nøgle", "model": "Model", "voice": "Stemme", "speed": "Hastighed", - "input": "Input", + "input": "Inddata", "url": "URL", "format": "Format", "depth": "Dybde", @@ -11221,14 +11228,14 @@ "noAudioUrl": "Svaret indeholdt ikke en lyd-URL: {response}", "music": "Musik", "embeddingSample": "OmniRoute dirigerer AI-anmodninger på tværs af flere udbydere.", - "embedding": "Embedding", + "embedding": "Indlejring", "imageSample": "En futuristisk by ved solnedgang, filmisk belysning", "image": "Billede", "ttsSample": "Hej fra OmniRoute. Dette er en tekst-til-tale-test.", "textToSpeech": "Tekst til tale", "videoSample": "Et papirfly, der flyver over en futuristisk by", "video": "Video", - "webFetch": "Web Fetch", + "webFetch": "Webhentning", "webSearchSample": "Hvad er OmniRoute?", "webSearch": "Websøgning", "documentUrl": "Dokument-URL", @@ -11250,73 +11257,73 @@ "stop": "Stop" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", + "recording": "Optager", + "paused": "Sat på pause", + "pipelineLogsOn": "Pipeline-logfiler slået til", + "pipelineLogsOff": "Pipeline-logfiler slået fra", + "updatingPipelineLogs": "Opdaterer pipeline-logfiler...", + "updatePipelineFailed": "Kunne ikke opdatere pipeline-logning", + "capturePipeline": "Registrer pipeline-data for nye anmodninger", + "searchPlaceholder": "Søg efter modeller, udbydere, konti, API-nøgler, kombinationer...", + "allProviders": "Alle udbydere", + "allModels": "Alle modeller", + "allAccounts": "Alle konti", + "allApiKeys": "Alle API-nøgler", + "total": "I alt", + "ok": "Gennemført", + "err": "Fejl", + "combo": "Kombination", + "keys": "Nøgler", + "shown": "Vist", + "sortNewest": "Nyeste", + "sortOldest": "Ældste", "sortTokensDesc": "Tokens ↓", "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", + "sortDurationDesc": "Varighed ↓", + "sortDurationAsc": "Varighed ↑", "sortStatusDesc": "Status ↓", "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortModelAsc": "Model A-Å", + "sortModelDesc": "Model Å-A", + "sortLogs": "Sortér logfiler", + "refresh": "Opdater", + "columnsLabel": "Kolonner", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "OPPE", + "semantic": "Semantisk", + "upstream": "Opstrøms", + "semanticCacheHit": "Semantisk cachetræffer (leveret af OmniRoute)", + "upstreamResponse": "Svar fra upstream-udbyder", + "noApiKey": "Ingen API-nøgle", + "requestedRoutedTitle": "Anmodede om {requested}, dirigeret som {routed}", "statusFilters": { - "all": "All", + "all": "Alle", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Vellykket", + "combo": "Kombination" }, "columns": { "status": "Status", - "cacheSource": "Cache Source", + "cacheSource": "Cachekilde", "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", + "requested": "Anmodet", + "provider": "Udbyder", + "protocol": "Anmodningsprotokol", + "account": "Konto", + "apiKey": "API-nøgle", + "combo": "Kombination", "tokens": "Tokens", "compressed": "Kompression", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Varighed", + "time": "Tidspunkt", + "conversation": "Samtale", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Indlæser logfiler...", + "noLogs": "Ingen logfiler endnu. Foretag nogle API-kald for at se dem her.", + "noMatchingLogs": "Ingen logfiler matcher de aktuelle filtre.", + "callLogsInfo": "Kaldslogfiler gemmes også som JSON-filer i {dataDir} og roteres baseret på {retentionDays} og {maxEntries}.", "loadMore": "Indlæs flere", "loadingMore": "Indlæser flere...", "correlationId": "Korrelations-ID", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Den detaljerede payload-artifact er ikke længere tilgængelig for denne logpost.", "payloadCorrupt": "Den detaljerede payload-artifact kunne ikke parses.", - "notAvailable": "N/A", + "notAvailable": "Ikke relevant", "semanticCache": "Semantisk (OmniRoute)", "upstreamCache": "Opstrøm (Udbyder)", "ariaLabel": "Anmodningslogdetalje", @@ -11394,7 +11401,7 @@ "requestedModel": "Anmodet Model", "requestProtocol": "Req Protokol", "cacheSource": "Cache Kilde", - "modelPinning": "Model Pinning", + "modelPinning": "Modelfastgørelse", "activeModelPinning": "Aktiv — model valgt via sessionsfastgørelse", "rotated": "Roteret: {initial} -> {final}", "apiKey": "API-nøgle", @@ -11417,59 +11424,59 @@ "correlationId": "Korrelations-ID", "correlationIdValue": "Korrelation ID: {id}", "detailedPayloadInfo": "Aktivér detaljeret logning først, hvis du ønsker den fire-trins klient/udbyder payload visning for nye anmodninger.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Kopiér alle", + "copiedAll": "Alle kopieret" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", + "filterAll": "Alle", + "filterErrors": "Fejl", + "filterSuccess": "Gennemført", + "filterTimeout": "Tidsgrænse", "colStatus": "Status", "colProxy": "Proxy", "colTls": "TLS", "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colLevel": "Niveau", + "colProvider": "Udbyder", + "colTarget": "Mål", + "colLatency": "Latens", + "colClientIp": "Klient-IP", + "colTime": "Tid", + "recording": "Optager", + "paused": "Sat på pause", + "searchPlaceholder": "Søg efter vært, udbyder, mål, IP...", + "allTypes": "Alle typer", + "allLevels": "Alle niveauer", + "allProviders": "Alle udbydere", + "total": "i alt", "ok": "OK", - "err": "ERR", + "err": "FEJL", "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "direct": "direkte", + "newest": "Nyeste", + "oldest": "Ældste", + "latencyDesc": "Latens ↓", + "latencyAsc": "Latens ↑", + "refresh": "Opdater", + "columns": "Kolonner", + "loadingProxyLogs": "Indlæser proxylogfiler...", + "noProxyLogs": "Ingen proxylogfiler endnu. Konfigurer proxyer, og foretag API-kald for at se dem her.", + "noMatchingLogs": "Ingen logfiler matcher de aktuelle filtre.", + "tlsFingerprint": "Chrome 124 TLS-fingeraftryk", "colPublicIp": "Offentlig IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", + "speech": "Tale", + "search": "Søgning", + "images": "Billeder", "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "music": "Musik", + "responses": "Svar", + "rerank": "Omrangering", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Indlejringer", + "transcription": "Transskription" }, "toolDescriptions": { "cline": "Cline", @@ -11480,123 +11487,123 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", + "title": "Kørselstid", + "description": "Realtidsovervågning — robusthed i 3 lag + sessioner + kvoteadvarsler", + "pause": "Sæt på pause", + "resume": "Genoptag", + "refreshNow": "Opdater nu", + "kpiSessions": "Sessioner", + "kpiCircuits": "Kredsløb", + "kpiCooldowns": "Nedkølingsperioder", + "kpiLockouts": "Blokeringer", + "hintStickyBound": "{count} sticky-bundet", + "hintRecovering": "{count} gendannes", + "hintAllHealthy": "alle fungerer", + "hintOpen": "åbne", + "hintConnsCooling": "forbindelser i nedkøling", + "hintModelsBlocked": "modeller blokeret", + "resilienceTitle": "Robusthed i 3 lag", + "resilienceSubtitle": "Afspejler den dokumenterede robusthedsmodel", + "providersHealthy": "{percent}% af udbyderne fungerer", + "layer": "Lag {n}", + "layer1Title": "Kredsløbsafbrydere for udbydere", + "layer1Desc": "Stop trafik til udbydere med fejl på upstream-niveau", + "layer2Title": "Nedkøling af forbindelser", + "layer2Desc": "Spring én defekt konto/nøgle over; andre forbindelser fortsætter med at betjene", + "layer3Title": "Modelblokeringer", + "layer3Desc": "Hastighedsbegrænsninger pr. model; den samme forbindelse betjener stadig andre modeller", + "badgeAffectedOf": "{affected} af {total} berørt", + "badgeCooling": "{count} i nedkøling", + "badgeLocked": "{count} låst", + "emptyCircuits": "Ingen aktive kredsløbsafbrydere endnu", + "emptyCooldowns": "Ingen aktive forbindelsespauser", + "emptyLockouts": "Ingen modellåsninger", + "moreCooldowns": "+{count} flere pauser", + "moreLockouts": "+{count} flere låsninger", + "feedTitle": "Live-feed", + "feedSubtitle": "Seneste {count} hændelser", + "feedFilterAll": "Alle", + "feedFilterCircuits": "Kredsløb", + "feedFilterCooldowns": "Pauser", + "feedFilterLockouts": "Låsninger", + "feedFilterSessions": "Sessioner", + "feedFilterQuotas": "Kvoter", + "feedClear": "Ryd", + "feedEmptyWaiting": "Venter på hændelser... (forespørges hvert 5. sek.)", + "feedEmptyFiltered": "Ingen hændelser matcher dette filter", + "sessionsTitle": "Aktive sessioner", + "sessionsSubtitle": "Anmodningsfingeraftryk med fast tilknytning (live)", + "sessionsActive": "{count} aktive", + "sessionsEmptyTitle": "Ingen aktive sessioner", + "sessionsEmptyHint": "Sessioner vises, efterhånden som anmodninger sendes gennem proxyen", "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "tblAge": "Alder", + "tblIdle": "Inaktiv", + "tblReqs": "Anmodninger", + "tblBoundTo": "Tilknyttet", + "topApiKeys": "Mest anvendte API-nøgler", + "quotaMonitorsTitle": "Kvotemonitorer", + "quotaMonitorsSubtitle": "Aktuel kvotestatus pr. kontovindue", + "openQuota": "Åben kvote", + "allQuotasHealthy": "Alle kvoter er i orden", + "statusExhausted": "OPBRUGT", + "statusAlerting": "ADVARSEL", + "statusError": "FEJL", + "moreSuffix": "+{count} flere" }, "quotaShare": { "weightPercent": "Vægt %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Kvotedeling", + "description": "Del udbyderkvoter på tværs af API-nøgler med grænser i %", + "newPool": "Ny pulje", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Konfigurationen gemmes i localStorage (endnu ikke permanent på serveren). Håndhævelse af grænsen pr. anmodning er endnu ikke integreret i proxyens pipeline. På denne skærm kan du designe og visualisere kvotefordelingen. Den faktiske håndhævelse kommer i en fremtidig version med permanent lagring i DB og aflytning af upstream-kald.", + "kpiActivePools": "Aktive puljer", + "kpiKeysAllocated": "Tildelte nøgler", + "kpiAvgUnallocated": "Gns. ikke-tildelt", + "kpiProvidersWithQuota": "Udbydere m/ kvote", + "emptyTitle": "Ingen puljer konfigureret", + "emptyDescription": "Opret en pulje for at tildele API-nøgler, så de deler en udbyders kvotevindue med procentvise tildelinger.", + "loading": "Indlæser…", + "removePool": "Fjern pulje", + "removeConfirm": "Vil du fjerne denne pulje?", + "pool": "Pulje", + "used": "brugt", + "allocationsCount": "Tildelinger ({count})", + "allocatedFree": "{allocated}% tildelt · {free}% ledigt", + "noAllocations": "Ingen nøgler tildelt endnu", + "capLabel": "grænse {value}", + "notTrackedYet": "(spores ikke endnu)", + "policy": "Politik", "apiKeyColumn": "API-nøgle", "weightColumn": "Vægt", - "fairShareShort": "fair", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", - "betaPreviewLabel": "Beta — UI preview.", + "fairShareShort": "retfærdig", + "policyHard": "hård", + "policySoft": "blød", + "policyBurst": "spidsbelastning", + "policyHardHint": "Bloker, når nøglen har opbrugt sin tildeling", + "policySoftHint": "Tillad overskridelse, men giv kun besked", + "policyBurstHint": "Tillad spidsbelastning via den ledige pulje", + "editAllocations": "Rediger tildelinger", + "newPoolTitle": "Ny kvotepulje", + "providerConnection": "Udbyderforbindelse (konto)", + "selectConnection": "Vælg en forbindelse…", + "noEligibleConnections": "Ingen forbindelser med kvotedata. Opdater først fra /dashboard/quota.", + "quotaWindow": "Kvotevindue", + "selectWindow": "Vælg et vindue…", + "alreadyUsedSuffix": "(allerede brugt)", + "windowReset": "Nulstil", + "duplicatePoolError": "Der findes allerede en pulje for denne forbindelse og dette vindue", + "cancel": "Annuller", + "createPool": "Opret pulje", + "editTitle": "Rediger tildelinger", + "noKeysAdded": "Ingen nøgler tildelt. Tilføj en nedenfor.", + "totalLabel": "I alt: {percent}%", + "totalExceeded": "⚠ overstiger 100 %", + "addKey": "+ Tilføj nøgle…", + "equalSplit": "Ligelig fordeling", + "save": "Gem fordelinger", + "betaPreviewLabel": "Beta — forhåndsvisning af brugergrænsefladen.", "betaConfigSavedPrefix": "Konfiguration er gemt i", "betaConfigSavedSuffix": "(endnu ikke vedvaret på serveren). Håndhævelse af grænser pr. anmodning er endnu ikke koblet til proxy-pipelinen. Denne skærm lader dig designe og visualisere kvoteopdelingen; reel håndhævelse vil lande i en fremtidig iteration med DB persistens og opstrøms opkaldsaflytning.", "policyLabel": "Politik:", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "Base-URL", "endpointsCollapse": "Fold sammen", "endpointsExpand": "Udvid", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-integreret", "endpointsResponsesNote": "OpenAI-svar — codex/github", "endpointsWsNote": "WebSocket — kun codex", "betaText": "Quota Share er funktionel, men der må forventes fejl. Har du fundet en? Rapportér den venligst.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Denne gruppe har stadig puljer — tildel dem igen eller slet dem først.", "ungroupedTitle": "Ikke grupperet", "ungroupedHint": "Disse puljer er ikke tildelt en kendt gruppe. Rediger en pulje for at flytte den til en rigtig gruppe.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Denne pulje kunne ikke fjernes.", + "dismiss": "Luk" }, "plugins": { "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", + "description": "Installer og administrer plugins for at udvide OmniRoutes funktionalitet", + "loading": "Indlæser plugins...", + "scanning": "Scanner...", + "scanForPlugins": "Scan efter plugins", + "noPlugins": "Ingen plugins installeret", + "noPluginsDescription": "Placer plugin-mapper i ~/.omniroute/plugins/, og klik på Scan.", + "activate": "Aktivér", + "deactivate": "Deaktivér", + "uninstall": "Afinstaller", + "uninstallConfirm": "Vil du afinstallere pluginet \"{name}\"?", + "pluginScanComplete": "Pluginscanning fuldført", + "pluginScanFailed": "Pluginscanning mislykkedes", + "activated": "{name} er aktiveret", + "deactivated": "{name} er deaktiveret", + "activateFailed": "Kunne ikke aktivere {name}", + "deactivateFailed": "Kunne ikke deaktivere {name}", + "uninstalled": "{name} er afinstalleret", + "uninstallFailed": "Kunne ikke afinstallere {name}", + "configure": "Konfigurer: {name}", + "configurePlugin": "Konfigurer", + "noConfigSettings": "Dette plugin har ingen konfigurerbare indstillinger.", + "saving": "Gemmer...", + "saveConfiguration": "Gem konfiguration", + "configurationSaved": "Konfigurationen er gemt", + "saveConfigurationFailed": "Kunne ikke gemme konfigurationen", + "pluginNotFound": "Pluginet blev ikke fundet", "version": "Version", - "author": "Author", - "description_label": "Description", + "author": "Forfatter", + "description_label": "Beskrivelse", "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "enabled": "Aktiveret", + "disabled": "Deaktiveret", "installedTab": "Installeret", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Markedsplads", "marketplaceUrlLabel": "Brugerdefineret Marketplace-URL", "marketplaceUrlPlaceholder": "Efterlad tom for det officielle Omniroute-register", "saveMarketplaceUrl": "Gem & genindlæs", @@ -11758,7 +11765,7 @@ "useCatalogButton": "Brug katalog", "saveOverrideButton": "Gem tilsidesættelse", "revertToCatalogButton": "Gendan til katalog", - "unknownProviderNotice": "Select a provider on the left to configure its quota plan.", + "unknownProviderNotice": "Vælg en udbyder til venstre for at konfigurere dens kvoteplan.", "catalogTitle": "Kendt katalog", "catalogDescription": "Automatisk registrerede planer for følgende udbydere:" }, @@ -11775,7 +11782,7 @@ "filterApiKeys": "API-nøgler", "filterSettings": "Indstillinger", "filterQuota": "Kvote", - "filterAuth": "Auth", + "filterAuth": "Godkendelse", "filterSystem": "System", "filterAria": "Filtrer efter hændelsestype", "refresh": "Opdater", @@ -11987,7 +11994,7 @@ "provider": "Udbyder", "requests": "Anmodninger", "success": "Succes", - "rate": "Rate", + "rate": "Hastighed", "tokensIn": "Tokens ind", "tokensOut": "Tokens ud", "ttftAfterTool": "TTFT efter værktøj", @@ -12053,22 +12060,22 @@ "filterHost": "Filtrer vært…", "filterAgent": "Agent", "filterStatus": "Status", - "pauseBtn": "Pause", + "pauseBtn": "Sæt på pause", "resumeBtn": "Genoptag", "clearBtn": "Ryd", "exportHar": "Eksporter .har", - "recordSession": "REC", + "recordSession": "OPT", "stopSession": "Stop", - "liveBadge": "live", + "liveBadge": "aktiv", "offlineBadge": "offline", "noRequests": "Ingen anmodninger registreret endnu.", "noRequestsDesc": "Sørg for, at AgentBridge kører, eller aktivér en anden optagelsestilstand.", "selectRequest": "Vælg en anmodning for at inspicere den.", "tabConversation": "Samtale", - "tabHeaders": "Headers", + "tabHeaders": "Headere", "tabRequest": "Anmodning", "tabResponse": "Svar", - "tabTiming": "Timing", + "tabTiming": "Tidsmåling", "tabLlm": "LLM", "tabStats": "Statistik", "requestHeaders": "Anmodningsheaders", @@ -12091,7 +12098,7 @@ "llmApiKind": "API-type", "llmModel": "Model", "llmMessages": "Beskeder", - "llmStream": "Stream", + "llmStream": "Strøm", "llmMappedTo": "Mappet til", "llmCostEstimate": "Omkostningsestimat", "systemProxyExitWarning": "Systemomfattende proxy er stadig aktiv — forlad siden alligevel?", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP-agenter", "phrase": "CLI'er, som OmniRoute starter som eksekveringsbackend (omvendt flow)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "De fleste brugere kan ignorere dette — brug det kun, når en integration kræver det.", "flow": "Klient → OmniRoute → spawn CLI (stdio/ACP) → svar", "seeOther": "Se →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI brugt som backend af Omni", "desc": "Omvendt udførelse", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → start CLI → svar", "examples": "f.eks.: claude, codex (ACP)" } }, @@ -12217,7 +12224,7 @@ "versionNotFound": "ikke fundet", "manualConfig": "Manuel konfiguration", "installGuide": "Installationsvejledning", - "endpointLabel": "Endpoint", + "endpointLabel": "Slutpunkt", "baseUrlFull": "Fuld base-URL", "baseUrlPartial": "Delvis base-URL", "refreshDetection": "Opdater registrering", @@ -12285,76 +12292,76 @@ "builtIn": "Indbygget", "custom": "Brugerdefineret", "agentUseCaseHint": "Tilgængelig til at starte via ACP.", - "remove": "Remove", - "addCustomAgent": "Add custom agent", - "addCustomAgentDesc": "Register a custom CLI agent to be spawned via ACP.", - "addAgent": "Add agent", - "agentName": "Name", - "agentNamePlaceholder": "e.g.: My Agent", - "binaryName": "Binary", - "binaryNamePlaceholder": "e.g.: myagent", - "versionCommand": "Version command", - "versionCommandPlaceholder": "e.g.: myagent --version", - "spawnArgs": "Spawn arguments", - "spawnArgsPlaceholder": "e.g.: --quiet, --json", - "cliCodeRedirectCta": "Open CLI Code" + "remove": "Fjern", + "addCustomAgent": "Tilføj brugerdefineret agent", + "addCustomAgentDesc": "Registrer en brugerdefineret CLI-agent, der skal startes via ACP.", + "addAgent": "Tilføj agent", + "agentName": "Navn", + "agentNamePlaceholder": "f.eks.: Min agent", + "binaryName": "Binærfil", + "binaryNamePlaceholder": "f.eks.: myagent", + "versionCommand": "Versionskommando", + "versionCommandPlaceholder": "f.eks.: myagent --version", + "spawnArgs": "Startargumenter", + "spawnArgsPlaceholder": "f.eks.: --quiet, --json", + "cliCodeRedirectCta": "Åbn CLI-kode" }, "agentSkills": { "catalog": { "omni-auth": { - "name": "Authentication", - "description": "Manage API key authentication and session tokens. Start here to authenticate requests via Bearer token, obtain session cookies, and configure login requirements for the OmniRoute API." + "name": "Godkendelse", + "description": "Administrer godkendelse med API-nøgler og sessionstokens. Start her for at godkende anmodninger via Bearer-token, hente sessionscookies og konfigurere loginkrav for OmniRoute API." }, "omni-providers": { - "name": "Providers", - "description": "Manage provider connections, API keys, OAuth flows, and connection tests via the REST API. List, add, update, remove, and test AI provider integrations (OpenAI, Anthropic, Gemini, and 160+)." + "name": "Udbydere", + "description": "Administrer udbyderforbindelser, API-nøgler, OAuth-flows og forbindelsestest via REST API. Vis, tilføj, opdater, fjern og test integrationer med AI-udbydere (OpenAI, Anthropic, Gemini og mere end 160 andre)." }, "omni-models": { - "name": "Models", - "description": "Query available AI models across all configured providers. List models, resolve model aliases, and browse the full model catalog including provider-specific variants." + "name": "Modeller", + "description": "Forespørg om tilgængelige AI-modeller på tværs af alle konfigurerede udbydere. Vis modeller, opløs modelaliasser, og gennemse hele modelkataloget inklusive udbyderspecifikke varianter." }, "omni-combos-routing": { - "name": "Combos & Routing", - "description": "Create and manage routing combos with 14 strategies (priority, weighted, round-robin, Auto-combo, etc.). Configure fallback chains, test routing outcomes, and retrieve combo metrics." + "name": "Kombinationer og routing", + "description": "Opret og administrer routingkombinationer med 14 strategier (prioritet, vægtet, round-robin, Auto-combo osv.). Konfigurer fallback-kæder, test routingresultater, og hent målinger for kombinationer." }, "omni-api-keys": { - "name": "API Keys", - "description": "Create, list, rotate, and revoke OmniRoute API keys. Control per-key scopes, spending limits, and expiration. Keys gate access to all proxy and management endpoints." + "name": "API-nøgler", + "description": "Opret, vis, roter og tilbagekald OmniRoute API-nøgler. Administrer omfang, forbrugsgrænser og udløb for hver nøgle. Nøgler styrer adgangen til alle proxy- og administrationsslutpunkter." }, "omni-usage-logs": { - "name": "Usage & Logs", - "description": "Access detailed call logs and usage analytics. Filter by provider, model, time range, status, and cost. Export logs and aggregate token usage across all connections." + "name": "Forbrug og logfiler", + "description": "Få adgang til detaljerede kaldslogfiler og forbrugsanalyser. Filtrer efter udbyder, model, tidsinterval, status og pris. Eksportér logfiler, og saml tokenforbrug på tværs af alle forbindelser." }, "omni-budget": { - "name": "Budget & Rate Limits", - "description": "Configure spending limits, token quotas, and rate-limit policies per API key or globally. Inspect current consumption and enforce cost controls across providers." + "name": "Budget og hastighedsgrænser", + "description": "Konfigurer forbrugsgrænser, tokenkvoter og politikker for hastighedsbegrænsning pr. API-nøgle eller globalt. Kontrollér det aktuelle forbrug, og håndhæv omkostningskontrol på tværs af udbydere." }, "omni-settings": { - "name": "Settings", - "description": "Read and update global application settings: system prompts, thinking budget, IP filters, payload rules, combo defaults, and require-login configuration." + "name": "Indstillinger", + "description": "Læs og opdater globale programindstillinger: systemprompter, tænkningsbudget, IP-filtre, payload-regler, standardværdier for kombinationer og konfiguration af loginkrav." }, "omni-proxies": { - "name": "Proxy Configuration", - "description": "Configure HTTP/HTTPS/SOCKS proxies for upstream provider requests. Set per-provider or global proxy rules, test connectivity, and manage proxy rotation." + "name": "Proxykonfiguration", + "description": "Konfigurer HTTP/HTTPS/SOCKS-proxyer til anmodninger til upstream-udbydere. Angiv proxypolitikker pr. udbyder eller globalt, test forbindelsen, og administrer proxyrotation." }, "omni-cache": { "name": "Cache", - "description": "Manage the LLM response cache. View cache statistics, clear entries, configure TTL policies, and control semantic-similarity caching thresholds." + "description": "Administrer cachen til LLM-svar. Se cachestatistik, ryd poster, konfigurer TTL-politikker, og styr tærskler for cachelagring baseret på semantisk lighed." }, "omni-compression": { - "name": "Compression", - "description": "Configure RTK (command output), Caveman (prose), and stacked compression modes. Manage language packs, custom rules, and test prompt compression reducing tokens by 60–90%." + "name": "Komprimering", + "description": "Konfigurer RTK- (kommandooutput), Caveman- (prosa) og stablede komprimeringstilstande. Administrer sprogpakker og brugerdefinerede regler, og test promptkomprimering, der reducerer antallet af tokens med 60–90 %." }, "omni-context-rtk": { - "name": "Context & RTK", - "description": "Configure RTK filters, context engineering rules, and context relay settings. Test compression with real prompt samples and manage context transformation pipelines." + "name": "Kontekst og RTK", + "description": "Konfigurer RTK-filtre, regler for kontekststrukturering og indstillinger for kontekstvideresendelse. Test komprimering med ægte prompteksempler, og administrer pipelines til konteksttransformation." }, "omni-resilience": { - "name": "Resilience & Monitoring", - "description": "Monitor provider health, circuit-breaker states, p50/p95/p99 latency metrics, and budget guard alerts. Inspect connection cooldowns and model lockouts in real time." + "name": "Robusthed og overvågning", + "description": "Overvåg udbydernes driftstilstand, circuit breaker-tilstande, p50/p95/p99-latenstider og advarsler om budgetgrænser. Undersøg nedkølingsperioder for forbindelser og modellåsninger i realtid." }, "omni-cli-tools": { - "name": "CLI Tools", + "name": "CLI-værktøjer", "description": "Administrer CLI-værktøjsintegrationer, der er eksponeret via API'et. List, konfigurer og kald CLI-værktøjsplugins, der udvider OmniRoutes automatiseringsflade." }, "omni-tunnels": { @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Registrer, vis, test og fjern webhook-slutpunkter. Konfigurer hændelsesabonnementer (request.completed, request.failed, quota.exceeded osv.), og administrer nye leveringsforsøg." }, "omni-mcp": { "name": "MCP-server", @@ -12390,15 +12397,15 @@ "description": "De primære OpenAI-kompatible inference-slutpunkter: chat completions, embeddings, billeder, lyd (TTS/STT), moderationer, rerank og Responses API. Den primære integrationsflade for AI-agenter." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Servér", "description": "Start, stop og genstart OmniRoute-serveren fra CLI'en. Administrer daemon-tilstand, portkonfiguration, automatisk gendannelse, systembakke-integration og genvejen til at åbne dashboardet." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Tilstand", "description": "Kontroller serverens helbred, komponentstatus og live-metrics fra CLI'en. Kør `health`, `health components` og `health watch` for at få et dashboard i realtid over kredsløbsafbrydere og udbyderstatus." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Udbydere", "description": "Administrer udbyderforbindelser fra CLI'en: list tilgængelige/konfigurerede udbydere, tilføj, test, test-all, valider, roter API-nøgler og vis metrics pr. udbyder." }, "cli-keys": { @@ -12470,7 +12477,7 @@ "description": "Kør indledende opsætning, konfigurer globale CLI-indstillinger, administrer miljøvariabler, søg efter opdateringer, og konfigurer autostart via CLI-opsætnings- og konfigurationskommandoerne." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI: Indsamler af agentfærdigheder", "description": "Registrer installerede CLI-kodningsværktøjer (Claude Code, Codex, Cursor, Copilot, Cline med flere), søg på GitHub efter matchende agent-skills, og installer dem i de registrerede værktøjer via OmniRoutes indbyggede API'er." }, "config-codex-cli": { @@ -12519,7 +12526,7 @@ "omni": "SQLite (SkillsMP / skills.sh / lokal)" }, "tagline": { - "label": "Tagline", + "label": "Slogan", "agent": "Lær din agent at bruge OmniRoute", "omni": "Giv eksekverbare værktøjer til OmniRoute-modeller" } @@ -12566,13 +12573,13 @@ "allCategories": "Alle kategorier", "categoryDefault": "Standard", "categoryCoding": "Kodning", - "categoryReview": "Review", + "categoryReview": "Gennemgå", "categoryDocumentation": "Dokumentation", "categoryDebugging": "Fejlsøgning", "colRank": "Rang", "colProvider": "Udbyder", "colTopModel": "Topmodel", - "colScore": "Score", + "colScore": "Point", "colAvgScore": "Gns. score", "colModels": "Modeller", "colType": "Type", @@ -12589,21 +12596,21 @@ "typeApikey": "API-nøgle", "sortTypeFirst": "Nemmeste først", "sortTypeFirstHelp": "Gruppér efter tilmeldingsindsats (Ingen tilmelding → OAuth-login → API-nøgle), og bevar kvalitetsrækkefølgen inden for hver gruppe", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Mest pålidelige først", + "sortByReliabilityHelp": "Sortér udbydere efter andelen af vellykkede kald i det valgte tidsrum. Udbydere med for få kald til at beregne en rate beholder deres scorerækkefølge under dem, der er målt.", "typeLegend": "Ingen tilmelding = nul opsætning · OAuth-login = log ind med din egen konto · API-nøgle = medbring din egen nøgle eller den pågældende udbyders gratisniveau", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Pålidelighed", + "colReliabilityHelp": "Andelen af kald, som denne udbyder faktisk besvarede inden for de seneste 24 timer. En tankestreg betyder, at den håndterede for lidt trafik til, at en rate kan beregnes.", + "reliabilitySample": "{successes} ud af {requests} kald lykkedes inden for de seneste {hours} t.", + "reliabilityTooFew": "Kun {requests} kald inden for de seneste {hours} t. — for få til at beregne en rate", + "reliabilityNoTraffic": "Ingen kald registreret inden for de seneste 24 t." }, "discovery": { "title": "Udbyderopdagelse", "subtitle": "Scan udbydere for gratis/ubegrænsede adgangsmetoder og gennemse resultaterne. Tilvalg, kun lokalt.", "scanLabel": "Udbyder, der skal scannes", "scanPlaceholder": "f.eks. huggingchat", - "scan": "Scan", + "scan": "Scanning", "scanning": "Scanner…", "scanQueued": "Scanning fuldført for {provider}.", "scanFailed": "Scanning mislykkedes.", @@ -12640,7 +12647,7 @@ "custom": "Brugerdefineret", "noSavedProxies": "Ingen gemte proxyer — tilføj en i Indstillinger → Proxy", "directConnection": "Direkte (ingen proxy)", - "host": "Host", + "host": "Vært", "port": "Port", "usernameOptional": "Brugernavn (valgfrit)", "passwordOptional": "Adgangskode (valgfrit)", @@ -12675,7 +12682,7 @@ "points": "point", "rank": "Rang", "name": "Navn", - "score": "Score", + "score": "Point", "leaderboardEmpty": "Ingen poster endnu for dette omfang. Begynd at bruge OmniRoute for at blive vist på ranglisten!", "profileLoadFailed": "Kunne ikke indlæse profildata", "levelTitles": { @@ -12697,7 +12704,7 @@ "levelProgress": "Niveau {current} → {next}", "totalXpEarned": "{count} samlet XP optjent", "maintainStreak": "Fortsæt med at bruge OmniRoute hver dag for at bevare din streak!", - "badgesTitle": "Badges ({earned}/{total})", + "badgesTitle": "Mærker ({earned}/{total})", "noBadges": "Ingen badges er tilgængelige endnu.", "hiddenBadge": "Skjult præstation", "earnedDate": "Optjent {date}", @@ -12714,14 +12721,14 @@ "usage": "Forbrug", "sharing": "Deling", "contribution": "Bidrag", - "streak": "Streak", + "streak": "Serie", "rare": "Sjældne præstationer" }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar-supporter", + "description": "Bekræftede et aktivt feed fra en OmniRoute Radar-supporter", + "criteria": "Bekræft et signeret, aktivt feed fra en Radar-supporter." }, "first-token": { "name": "Første token", @@ -12769,7 +12776,7 @@ "criteria": "Brug mindst 5 forskellige AI-udbydere." }, "polyglot": { - "name": "Polyglot", + "name": "Flersproget", "description": "Brugte 10 forskellige modeller", "criteria": "Brug mindst 10 forskellige AI-modeller." }, @@ -12779,7 +12786,7 @@ "criteria": "Opret 3 combo-ruter." }, "speedster": { - "name": "Speedster", + "name": "Hurtigløber", "description": "Opretholdt en gennemsnitlig latenstid på under 500 ms for 100 anmodninger", "criteria": "Hold den gennemsnitlige latenstid under 500 ms over 100 anmodninger." }, @@ -12846,7 +12853,7 @@ "security": "Sikkerhed", "network": "Netværk", "policies": "Politikker", - "runtime": "Runtime", + "runtime": "Kørselstid", "cli": "CLI", "health": "Sundhed", "requiresRestart": "Kræver genstart" @@ -12885,7 +12892,7 @@ "block": "Bloker", "redact": "Masker", "disabled": "Deaktiveret", - "dual": "Dual", + "dual": "Dobbelt", "alias": "Alias", "canonical": "Kanonisk" }, @@ -12948,8 +12955,8 @@ "description": "Tillad flere forbindelser for hver kompatibilitetsnode." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Deaktivér kontrol af kontekstvindue", + "description": "Spring OmniRoutes lokale kontrol af kontekstvindue og maksimalt antal inputtokens over for direkte anmodninger til en enkelt model. Opstrømsudbydere håndhæver stadig deres faktiske grænser. Promptkomprimering og grænser for outputtokens forbliver aktive." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Fjern interne outputelementer fra kommentarfase fra Responses API-passthrough-streams, før de videresendes til klienter. Deaktivér dette flag for at modtage rå upstream-kommentarer." @@ -12985,7 +12992,7 @@ "description": "Tillad stream-gendannelse at anmode om svaret igen og sammenføje det, efter at bytes allerede har nået klienten." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Gør fortsættelse midt i en stream sikker ved værktøjskald: Genoptag aldrig en afbrudt stream, efter at et værktøjskald er blevet sendt (uanset om det stadig er i gang eller allerede er afsluttet), og stop efter én tom fortsættelse i stedet for at bruge hele genforsøgsbudgettet." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Skift én gang over til en søsterforbindelse, når en stream lukker, før den har sendt en brugbar frame, og det begrænsede genforsøg på samme forbindelse er brugt. Uden en brugbar søsterforbindelse returneres den oprindelige early-EOF-fejl. Fra: early-EOF forbliver endelig efter genforsøget." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Aktivér netværksadgang i skills-sandkassen." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Serverstyret værktøjsløkke", + "description": "Fortsæt ikke-streamede, serverstyrede værktøjskald, indtil modellen returnerer et svar, som klienten kan bruge." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Oprindelse for Retry-After", + "description": "Ved aggregerede 429/503-svar om utilgængelighed skal Retry-After udelades, når der ikke kendes et konkret fremtidigt tidspunkt for et nyt forsøg, i stedet for at sende et syntetisk tidsrum på 1 sek., error.retry_after_provenance skal tilføjes, og tekstbaserede anvisninger om nye forsøg skal læses i kombinationens dræningsforløb." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Beskyttede prioritetsstop i infrastrukturen som 502", + "description": "Svar med 502 i stedet for 503, når et prioriteret mål med fallback kun ved kvoteproblemer stopper kombinationen af en årsag, der beviseligt ikke skyldes kvoten: en åben circuit breaker hos udbyderen eller en prædiktiv overspringning på grund af latenstid." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Combo-tilstand", "callLogs": "Kaldslogge", "costs": "Omkostninger", - "playground": "Playground", + "playground": "Testmiljø", "nestedCombo": "Indlejret combo", "modelTarget": "Modelmål", "weight": "{value}% vægt", @@ -13150,7 +13161,7 @@ "loadingUsdCosts": "Indlæser USD-omkostninger", "used": "Brugt", "quotaUsed": "Kvote brugt", - "estimatedFullQuota": "Est. 100%", + "estimatedFullQuota": "Ansl. 100 %", "rows": "Rækker", "window": "Vindue", "unknown": "ukendt", @@ -13171,7 +13182,7 @@ "segmentHint": "Hvert segment = én gratis pulje · pulje-dedupliceret, ærlig optælling (ingen oppustede hastighedsgrænselofter).", "boost": "Lås op for ~{tokens} mere/md. med en engangsoptankning på $10 hos OpenRouter (50 → 1000 anm./dag)", "uncapped": "Permanent gratis, intet offentliggjort loft (hastighedsbegrænset) — reel adgang, ikke talt med i overskriften:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/md. mere bag en regional identitetskontrol (f.eks. bekræftelse med rigtigt navn i det kinesiske fastland) — reel kvote, som ikke er medregnet i overskriften:", "tosRestricted": "{count, plural, one {# model} other {# modeller}} markeret som ToS-begrænset — du bestemmer", "provider": "Udbyder", "model": "Model", @@ -13224,7 +13235,7 @@ "down": "nede" }, "severity": { - "info": "info", + "info": "oplysninger", "warning": "advarsel", "critical": "kritisk" }, @@ -13260,7 +13271,7 @@ }, "changelogPage": { "newsTab": "Nyheder", - "changelogTab": "Changelog", + "changelogTab": "Ændringslog", "loading": "Indlæser changelog...", "announcementsLoadFailed": "Kunne ikke indlæse meddelelser. Prøv igen senere.", "noAnnouncements": "Ingen nye meddelelser på nuværende tidspunkt.", @@ -13270,84 +13281,84 @@ "viewFullHistory": "Se fuld historik på GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", + "title": "Routingpolitikker for ræsonnering", + "apiKeyTitle": "Routing af ræsonnering for denne API-nøgle", + "subtitle": "Omdiriger modeller og ræsonneringsindsats uden at kræve klientunderstøttelse. Anmodninger forbliver uændrede, når ingen regel matcher.", + "loadError": "Reglerne for ræsonnering kunne ikke indlæses.", + "saveError": "Reglen er ugyldig eller kunne ikke gemmes.", + "saved": "Reglen for ræsonnering er gemt.", + "deleteConfirm": "Vil du slette denne regel for ræsonnering?", + "deleteError": "Reglen for ræsonnering kunne ikke slettes.", + "empty": "Der er ikke konfigureret nogen matchende regler for ræsonnering.", + "all": "Alle", + "any": "Enhver", + "enabled": "Aktiveret", + "disabled": "Deaktiveret", + "filterSearch": "Søg i regler", + "filterScope": "Filtrér efter omfang", + "filterStatus": "Filtrér efter status", + "allModels": "alle modeller", + "keepModel": "Behold model", + "otherModel": "Anden model", + "combo": "Kombination", + "priorityShort": "prioritet {value}", + "toggleAria": "Aktivér {name}", + "edit": "Rediger", + "delete": "Slet", + "name": "Navn", + "description": "Beskrivelse", + "scopeLabel": "Omfang", + "apiKey": "API-nøgle", + "sourceCombo": "Kildekombination", + "connection": "Forbindelse", + "sourceModel": "Kildemodel eller jokertegn", + "sourceModelOptional": "Tom = alle modeller", + "sourceModelExample": "f.eks. gpt-5*", + "sourceEffort": "Kildeindsats", + "missing": "Ikke angivet", + "signalOnly": "Ikke-diskret ræsonneringssignal", + "requestTags": "Anmodningstags", + "requestTagsExample": "kodning, intern", + "tagMode": "Tagmatching", + "effortMode": "Indsatstilstand", + "targetEffort": "Målindsats", + "routingTarget": "Routingmål", + "targetModel": "Målmodel", + "targetCombo": "Målkombination", + "budgetAction": "Tænkebudget", + "budgetTokens": "Budgettokens", + "priority": "Prioritet", + "saveChanges": "Gem ændringer", + "add": "Tilføj regel", + "cancel": "Annuller", + "simulateTitle": "Simuler regel", "model": "Model", - "effort": "Effort", + "effort": "Indsats", "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "simulate": "Simuler uden upstream", + "extendedComboWarning": "Max/Ultra valideres separat for hvert kombinationsmål under routing.", + "extendedUnknownWarning": "Angiv en målmodel for at bekræfte understøttelse af Max/Ultra.", + "extendedUnsupportedWarning": "Max/Ultra understøttes kun med sikkerhed af egnede Codex GPT-5.6-modeller. Ukendte brugerdefinerede modeller accepteres af serveren med en advarsel.", "scope": { "global": "Global", - "apiKey": "API key", - "combo": "Combo", + "apiKey": "API-nøgle", + "combo": "Kombination", "model": "Model", - "connection": "Connection" + "connection": "Forbindelse" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Nedarv fra klient", + "default": "Brug standard", + "force": "Gennemtving" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Bevar", + "remove": "Fjern", + "set": "Angiv fast værdi" } }, "chaosConfig": { - "pageTitle": "Chaos Mode", + "pageTitle": "Kaostilstand", "pageSubtitle": "Kør flere AI-modeller parallelt eller i samarbejde om den samme opgave", "enableChaos": "Aktiver Chaos Mode", "enableChaosDesc": "Tillad API-nøgler med Chaos Mode aktiveret at bruge denne funktion", @@ -13356,7 +13367,7 @@ "modeCollaborative": "Samarbejdende", "modeParallelDesc": "Alle modeller kører samtidigt — hurtigste resultater", "modeCollaborativeDesc": "Modeller kæder output — hver ser det foregående resultat", - "timeout": "Timeout (ms)", + "timeout": "Tidsgrænse (ms)", "timeoutDesc": "Maks. tid pr. modelkald (5000-600000ms)", "systemPrompt": "Systemprompt (valgfri)", "systemPromptDesc": "Brugerdefinerede instruktioner til alle modelinstanser i kaostilstand", @@ -13418,98 +13429,98 @@ "syncFailed": "Synkronisering mislykkedes", "flagDisabled": "Radar er deaktiveret", "activationFailed": "Aktivering mislykkedes", - "feedVersion": "Feed version", + "feedVersion": "Feedversion", "feedTier": "Niveau", "feedFetched": "Sidst hentet", - "tierLive": "Live (real-time)", + "tierLive": "Live (realtid)", "tierCommunity": "Samfund (30-dages forsinkelse)", "activateTitle": "Aktiver Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Sammenlign Community- og liveadgang, forstå, hvilke data din installation udveksler, og vælg derefter, hvordan du vil aktivere Radar.", + "accessScaleTitle": "Forstå Radar-adgang før aktivering", + "accessScaleIntro": "Radar forbliver netværksinaktiv, indtil du aktivt tilmelder dig. Vælg Community-adgang, eller aktivér en personlig supporternøgle efter at have gennemgået disse regler.", + "accessCommunityRule": "Community — ingen nøgle påkrævet: hele kataloget med 30 dages forsinkelse.", + "accessSingleUseRule": "Stjernemarkering + følg — når GitHub OAuth har bekræftet begge dele, får din GitHub-konto én liveadgang til at læse kataloget. Derefter vender adgangen tilbage til Community. Denne engangsadgang kan ikke udstedes igen til den pågældende konto.", + "accessContributorRule": "Bidragydere — flettede PR'er, commits og kodelinjer bestemmer kun den ugentlige rangering. Top 10 modtager 365 dage; placeringerne 11–100 modtager 90 dage; bidragydere uden for Top 100 modtager ingen adgangsperiode, uanset antallet af PR'er. Hvis du forlader rangeringen, forkortes allerede tildelt tid aldrig.", + "accessSupporterRule": "Supportere — engangskøb giver 6 måneder, 1 år eller livstidsadgang uden automatisk fornyelse. Køb, donationer, bidragyderperioder og manuelle tildelinger lægges sammen; livstidsadgang har altid forrang.", + "accessUseTitle": "Personlig brug, gendannelse og gennemgang", + "accessInstallationRule": "Personlig licens — brug nøglen på én aktiv installation ad gangen. OmniRoute danner ikke fingeraftryk af hardware. Gendannelse tilbagekalder og erstatter en mistet nøgle uden at nulstille dens udløbsdato.", + "accessAbuseRule": "Gennemgang ved mistanke om misbrug — den 4. forskellige IP-adresse inden for 24 timer opretter kun en markering til manuel gennemgang; det blokerer eller tilbagekalder aldrig automatisk en nøgle.", + "accessOffersRule": "Live-tilbud udvælges manuelt og kan ændres eller udløbe.", + "privacyTitle": "Hvad Radar udveksler", + "privacyDownloadsRule": "Downloads — din installation modtager kryptografisk signerede katalog- og henvisningsmetadata; en gyldig live-nøgle låser også op for signerede tilbud og Intel.", + "privacySendsRule": "Sender — synkronisering på serversiden sender supporternøglen som et Bearer-token, og HTTPS-infrastrukturen modtager forbindelsens IP-adresse. Registreringen af feedanmodninger gemmer ingen af værdierne i rå form: Den gemmer nøglehashes, samlet brug og en dagligt roterende, afkortet IP-HMAC til gennemgang ved mistanke om misbrug.", + "privacyNeverRule": "Indsamles aldrig — prompts, svar, samtaler, provider-legitimationsoplysninger, modeltrafik, oppetid, svartid og lokal provider-konfiguration sendes aldrig til Radar.", + "activateButton": "Aktivér Community", "activating": "Aktiverer...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Har du allerede en supporternøgle?", + "keyInvalidFormatError": "Ugyldigt nøgleformat. Den skal begynde med \"omr_\" efterfulgt af 40 hexadecimale tegn.", + "activateWithKeyButton": "Aktivér supporteradgang", + "changeKeyButton": "Skift nøgle", + "claimSectionTitle": "Har du ikke en supporternøgle endnu?", + "contributorButton": "Jeg er bidragyder", + "contributorHint": "GitHub OAuth kontrollerer den aktuelle ugentlige rangering: Top 10 får 365 dage, og placeringerne 11–100 får 90 dage. Antallet af PR'er alene giver aldrig adgang uden for Top 100.", + "supporterButton": "Støt projektet", + "supporterHint": "Engangsløsninger på 6 måneder, 1 år og livstid har ingen automatisk fornyelse; kvalificerende perioder lægges sammen, og livstidsadgang har forrang.", "colProvider": "Udbyder", "colModel": "Model", "colQuota": "Kvote", + "colLimits": "Hastighedsgrænser", + "trainsOnPrompts": "Træner på prompts", + "trainsOnPromptsHelp": "Denne providers vilkår angiver, at den muligvis træner på de prompts, du sender. Modeller uden dette mærke angiver enten, at de ikke gør det, eller dokumenterer det ikke — fraværet af en erklæring er ingen garanti.", + "limitsUnknownHelp": "Grænser kun rapporteret af Radar-feedet; der er ingen offentliggjorte grænser for denne post", + "contextUnknownHelp": "Kontekstvinduet er ukendt for denne post", + "capabilityUnknownHelp": "Funktionaliteten er ikke rapporteret af feedet", "colContext": "Kontekst", "colCapabilities": "Funktioner", "colTos": "ToS Risiko", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "ny", "setupGuide": "Opsætningsvejledning", "disabledByFeed": "Deaktiveret af Radar feed", "capTools": "Værktøjer", - "capVision": "Vision", + "capVision": "Billedforståelse", "capThinking": "Tænkning", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalog", + "freeCreditsTab": "Gratis kreditter", + "freeCreditsSubtitle": "Henvisningslinks fra udbydere, der spores af Radar — det koster dig ikke ekstra at bruge dem og hjælper med at støtte OmniRoute.", + "fixedLinksEmpty": "Der er endnu ingen henvisningslinks. Synkroniser Radar for at søge efter opdateringer.", + "requiredActionLabel": "Sådan gør du:", + "claimButton": "Indløs kreditter", + "campaignsTitle": "Tidsbegrænsede kampagner", + "campaignsEmpty": "Der er ingen aktive kampagner lige nu — kom tilbage senere.", + "campaignsUpsellCommunity": "Tidsbegrænsede kampagner er en ekstra fordel for støtter. Alt under de faste links på denne side er fortsat gratis for alle.", + "campaignsValidUntil": "Gyldig indtil {date}", + "colActions": "Handlinger", + "localBadge": "lokal", + "editModel": "Rediger", + "saveModel": "Gem", + "cancelEdit": "Annuller", + "resetModel": "Nulstil lokale ændringer", + "hideModel": "Skjul", + "restoreModel": "Gendan", + "hiddenModelsTitle": "Skjulte modeller", + "modelDisplayName": "Lokalt visningsnavn", + "modelEnabled": "Aktiveret lokalt", + "localStateSaveFailed": "Kunne ikke gemme lokale Radar-indstillinger", + "guidedCombos": "Guidede kombinationer", + "offers": "Tilbud", + "intel": "Indsigt" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar-guidede kombinationer", + "subtitle": "Opret prioriterede reserveløsninger fra tilsvarende gratis modeller udvalgt af Radar.", + "backToRadar": "Tilbage til Radar", + "loading": "Indlæser forslag til kombinationer...", + "familyLabel": "Modelfamilie", + "modelsLabel": "Prioriteringsrækkefølge", + "strategyReason": "Prioriteringen bruger først det største tilbagevendende gratis budget og skifter derefter til aktive udbydere efter behov.", + "generateButton": "Generer kombination", + "generating": "Genererer...", + "alreadyCreated": "Allerede oprettet", + "created": "Kombination oprettet", + "noSuggestions": "Ingen kvalificeret modelfamilie har i øjeblikket aktive forbindelser til mindst to udbydere.", + "catalogRequired": "Synkroniser først Radar-kataloget for at indlæse kuraterede modelfamilier.", + "loadFailed": "Radar kunne ikke indlæse forslag til kombinationer.", + "createFailed": "Kombinationen kunne ikke oprettes. Gennemgå dine udbyderforbindelser, og prøv igen." }, "radarSetupPage": { "title": "Udbyder Opsætning", @@ -13538,28 +13549,28 @@ }, "resilienceConnections": { "title": "Forbindelsesresiliens", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Dine forbindelser genoprettes automatisk", + "reassuranceDetail": "Normalt behøver du ikke gøre noget. OmniRoute sætter midlertidigt en forbindelse på pause efter fejl og prøver den derefter sikkert igen.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Anmodninger kan sendes", + "coolingDown": "Prøver snart igen", + "lockedOut": "Kræver din opmærksomhed" }, "table": { "status": "Status", "provider": "Udbyder", "connectionId": "Forbindelse", "authType": "Godkendelse", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "backoffLevel": "Ventetid", + "cooldown": "Nedkøling", "lastError": "Seneste Fejl", - "lockouts": "Lockouts", + "lockouts": "Spærringer", "healthy": "Sund", - "coolingDown": "Cooldown", + "coolingDown": "Nedkøling", "circuitOpen": "Kredsløb Åbent", "recovering": "Gendanner", "degraded": "Forringet", - "terminal": "Terminal", + "terminal": "Permanent", "unknown": "Ukendt", "never": "-" }, @@ -13589,7 +13600,7 @@ "detail": { "title": "Forbindelsesdetalje", "metadata": "Metadata", - "cooldown": "Cooldown", + "cooldown": "Nedkøling", "lastError": "Seneste Fejl", "breaker": "Afbryder", "lockouts": "Modellåsninger", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Afvis anmodninger før afsendelse, når målmodellen mangler de nødvendige funktioner (vision, værktøjer, struktureret output, kontekstvindue). Beskytter direkte anmodninger fra en enkelt udbyder, der omgår kombinationslagets kompatibilitetsfilter.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Spring OmniRoute's lokale kontrol af kontekstvinduet og det maksimale antal inputtokens over for direkte anmodninger til en enkelt model. Opstrømsudbydere håndhæver stadig deres faktiske grænser. Promptkomprimering og grænser for outputtokens forbliver aktive.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Søgestatistik og seneste søgninger tæller kun udbydere, der stadig har en aktiv forbindelse (nøglefri udbydere såsom duckduckgo-free tæller altid med). Fra bevarer alle gemte søgerækker med et udbyder-id.", "publicSystem": { "notFound": { "title": "Siden blev ikke fundet", @@ -13697,13 +13708,13 @@ "healthCheckFailed": "Sundhedstjek Mislykkedes", "openConnectivityHelp": "Åben Connectivity Hjælp", "maintenanceInfo": "Vedligeholdelsesinfo", - "service": "Service", + "service": "Tjeneste", "unknown": "ukendt", - "notAvailable": "n/a", + "notAvailable": "ikke relevant", "providersTracked": "Sporrede Udbydere", "circuitBreakerState": "Udbyder Circuit Breaker Tilstand", "lastUpdate": "Seneste opdatering: {timestamp}", - "uptimeMinutes": "{minutes}m", + "uptimeMinutes": "{minutes} min.", "uptimeHoursMinutes": "{hours}t {minutes}m" }, "statusPages": { @@ -13796,10 +13807,10 @@ "importDescription": "Indsæt en opfrisknings-token eksporteret fra {providerLabel}.", "apiKey": "API-nøgle", "apiKeyDescription": "Indsæt en langvarig {providerLabel} / CodeWhisperer API-nøgle. Den gemmes som en bearer-legitimationsoplysning uden opdaterings-token; profilopdagelse er bedste indsats.", - "idcStartUrl": "IDC Start URL", + "idcStartUrl": "IDC-start-URL", "idcStartUrlPlaceholder": "https://your-org.awsapps.com/start", "idcStartUrlDescription": "Din organisations AWS IAM Identity Center URL", - "awsRegion": "AWS Region", + "awsRegion": "AWS-region", "regionPlaceholder": "us-east-1", "idcRegionDescription": "AWS-region for dit Identity Center (standard: us-east-1)", "continue": "Fortsæt", @@ -13887,14 +13898,14 @@ "clear": "Ryd", "tabs": { "test": "Test", - "logs": "Logs" + "logs": "Logfiler" }, "loadingLogs": "Indlæser logfiler…", "failedToLoadLogs": "Kunne ikke indlæse logs", "noLogsYet": "Ingen logs endnu", "noLogsDescription": "Send en testbesked fra Test-fanen — logfiler for denne udbyder vises her.", "openFullLogs": "Åbn fuld logside", - "live": "Live", + "live": "Aktiv", "tailingLast": "viser de sidste {count}", "refreshNow": "Opdater nu", "refresh": "Opdater", @@ -13935,7 +13946,7 @@ "followDescription": "Akse ruller til venstre, NU-linjen forbliver på 75%", "now": "Nu", "nowDescription": "Spring til nuværende tid, NU-linjen nulstilles til midten", - "pan": "Pan", + "pan": "Panorér", "panDescription": "Træk for at udforske, baggrunden er frosset" }, "reset": "Nulstil", @@ -13947,7 +13958,7 @@ "tokens": "Tokens", "active": "Aktiv", "other": "Andet", - "tenMinutes": "10min", + "tenMinutes": "10 min.", "hour": "time", "day": "dag", "unknownModel": "ukendt", @@ -13956,9 +13967,9 @@ "metadata": { "compressionTitle": "Komprimering", "compressionDescription": "Konfigurer indstillinger for kontekstkomprimering for at reducere tokenforbrug og omkostninger.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — Relay-proxyer", "relayDescription": "Serverless relay proxy-endepunkter til din AI-infrastruktur", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Trafikinspektør — OmniRoute", "trafficInspectorDescription": "Overvåg LLM-opkald + fejlfind ethvert apps HTTPS-trafik" }, "conductor": { @@ -13967,11 +13978,11 @@ "runners": "Løbere", "tasks": "Opgaver", "colName": "Navn", - "colClis": "CLIs", + "colClis": "CLI'er", "colStatus": "Status", "colTask": "Opgave", "colMode": "Tilstand", - "colRunner": "Runner", + "colRunner": "Kørselsprogram", "colSummary": "Resumé", "online": "online", "offline": "offline", @@ -14015,7 +14026,7 @@ "title": "Orkestrering", "description": "Alt hvad OmniRoute kører lige nu — agenter, flåde og routing", "tabAgents": "Agenter", - "tabRouting": "Routing", + "tabRouting": "Rutevalg", "tabOverview": "Oversigt", "tabHistory": "Historik", "historyEmpty": "Ingen afsluttede kørsler i dette interval", @@ -14070,11 +14081,11 @@ "actionApprove": "Godkend plan", "actionCancel": "Annuller", "actionSeeInGraph": "Se i graf", + "actionRepeat": "Gentag", "actionDone": "Handling udført", "actionFailed": "Handling mislykkedes: {error}", "detailFailed": "Kunne ikke indlæse detaljer: {error}", "mirroredInA2A": "Spejlet i A2A", - "actionRepeat": "Gentag", "repeatConfirm": "Klik igen for at bekræfte", "repeatDone": "Ny kørsel oprettet", "repeatUnavailable": "Oprindeligt input ikke tilgængeligt" @@ -14088,57 +14099,57 @@ "networkError": "Netværksfejl — kunne ikke opdatere udbyderens eksponeringsindstilling" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Supportertilbud", + "subtitle": "Officielle rabatter, kreditter, prøveperioder og gennemgåede partnerfordele fra Radar.", + "backToRadar": "Tilbage til Radar", + "loading": "Indlæser tilbud...", + "refresh": "Opdater tilbud", + "refreshing": "Opdaterer...", + "loadFailed": "Vi kunne ikke opdatere tilbuddene. Den senest verificerede lokale cache bevares.", + "empty": "Der er ingen aktive tilbud lige nu.", + "keyRequiredTitle": "En supporternøgle er påkrævet", + "keyRequiredDescription": "Tilbud er en aktuel Radar-fordel. Tilføj en eksisterende supporternøgle på Radar-skærmen, bekræft din bidragyderstatus, eller støt projektet for at få en.", + "contributorButton": "Jeg er bidragyder", + "supporterButton": "Støt projektet", + "partnerBadge": "Udbyder", + "officialBadge": "Officiel", + "conditionsLabel": "Betingelser:", + "validUntil": "Gyldig indtil {date}", + "noExpiry": "Ingen annonceret udløbsdato", + "openOffer": "Se tilbud", + "trialDays": "{days, plural, one {# dag} other {# dage}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", + "title": "Radar-indsigt", + "subtitle": "Radar-ejede ELO-ranglister og faktuelle ændringer i kataloget.", + "backToRadar": "Tilbage til Radar", + "loading": "Indlæser indsigt...", + "refresh": "Opdater Intel", + "syncing": "Opdaterer...", + "loadFailed": "Vi kunne ikke opdatere Intel. Den senest verificerede lokale cache bevares.", + "empty": "Der er endnu intet verificeret Intel-snapshot tilgængeligt.", + "supporterBadge": "Radar-supporter", + "methodology": "Metode", + "eloMethod": "ELO, startværdi {initial}, K={factor}", + "freshness": "Katalogets aktualitet", + "ageDays": "{days, plural, one {# dag gammel} other {# dage gammel}}", + "trend": "Katalogtendens", + "modelDelta": "{current} modeller, +{added} / -{removed}", + "ranking": "Modelrangering", + "noRankings": "Der er endnu ingen bekræftede sammenligninger tilgængelige.", "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "category": "Kategori", + "rating": "Bedømmelse", + "matches": "Kampe", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Aktuel", + "aging": "Aldrende", + "stale": "Forældet" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Voksende", + "stable": "Stabil", + "shrinking": "Faldende" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Anmodningen overskrider udbyderens kontekstvindue" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference er en af OmniRoutes open source-venner", + "description": "En prisrangeret gateway, der videresælger snesevis af førende modeller via ét OpenAI-kompatibelt endpoint — og dirigerer hver anmodning til den billigste kvalificerede udbyder, aldrig over listeprisen.", + "cta": "Få en API-nøgle", + "partnerLinkNote": "Partnerlink", + "dismissAriaLabel": "Afvis" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Deaktivér genereringen af varianter for tænkeniveau (f.eks. -low, -medium, -high) i /v1/models-kataloget." } diff --git a/src/i18n/messages/de.json b/src/i18n/messages/de.json index 65b8e9deae..e4d6ac4ce5 100644 --- a/src/i18n/messages/de.json +++ b/src/i18n/messages/de.json @@ -31,7 +31,7 @@ "active": "Aktiv", "inactive": "Inaktiv", "noData": "Keine Daten verfügbar", - "nothingHere": "Nothing here yet", + "nothingHere": "Noch nichts vorhanden", "configure": "Konfigurieren", "manualConfig": "Manuelle Konfiguration", "manage": "Verwalten", @@ -47,7 +47,7 @@ "time": "Zeit", "details": "Einzelheiten", "created": "Erstellt", - "lastUsed": "Last Refreshed", + "lastUsed": "Zuletzt aktualisiert", "loadMore": "Mehr laden", "noResults": "Keine Ergebnisse gefunden", "reloadPage": "Seite neu laden", @@ -70,8 +70,8 @@ "note": "Hinweis", "free": "Kostenlos", "skipToContent": "Zum Inhalt springen", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Der Server hat derzeit Probleme. Einige Funktionen sind möglicherweise nicht verfügbar.", + "maintenanceServerUnreachable": "Der Server ist nicht erreichbar. Verbindung wird wiederhergestellt...", "accept": "Akzeptieren", "accountId": "Konto-ID", "alias": "Alias", @@ -98,15 +98,15 @@ "skill": "Fertigkeit", "sortBy": "Sortieren nach", "sortOrder": "Sortierreihenfolge", - "tab": "Tab", + "tab": "Registerkarte", "text": "Text", "textarea": "Textfeld", "tool": "Werkzeug", "toolId": "Werkzeug-ID", "web": "Web", "whereUsed": "Wo verwendet", - "whitelist": "Whitelist", - "blacklist": "Blacklist", + "whitelist": "Positivliste", + "blacklist": "Sperrliste", "resolve": "Auflösen", "force": "Erzwingen", "base64url": "Base64 URL", @@ -150,24 +150,24 @@ "Failed to reset pricing": "Preise zurücksetzen fehlgeschlagen", "apikey": "API-Schlüssel", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Zum Dashboard", + "checkSystemStatus": "Systemstatus prüfen", + "selectModel": "Modell auswählen", "addModel": "Modell hinzufügen", "effortNone": "Keine", "effortLow": "Niedrig", "effortMedium": "Mittel", "effortHigh": "Hoch", "effortExtraHigh": "Extra hoch", - "effortMax": "Max", + "effortMax": "Max.", "effortUltra": "Ultra", "reasoningEffort": "Reasoning-Aufwand", "wireApi": "Wire-API", "modelAliases": "Modell-Aliase", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Kombinationen", + "noModelsFound": "Keine Modelle gefunden", + "clear": "Löschen", + "done": "Fertig", "selectAll": "Alle auswählen", "unselectAll": "Auswahl aufheben", "visibleModels": "sichtbar", @@ -184,527 +184,527 @@ "selectAllProviders": "Alle Anbieter überprüfen", "clearProviderSelection": "Anbieter abwählen", "providersSelectedCount": "{count} Anbieter überprüft", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Ein Fehler ist aufgetreten", + "comboDeleted": "Kombination gelöscht", + "hide": "Ausblenden", + "creating": "Wird erstellt", + "comboCreated": "Kombination erstellt", + "swapFormats": "Formate tauschen", + "daysAgo": "Vor Tagen", + "retries": "Wiederholungsversuche", + "errorDuringRestore": "Fehler beim Wiederherstellen", + "eventsAppearHint": "Hinweis zur Anzeige von Ereignissen", + "noLockouts": "Keine Sperrungen", + "webSearchDesc": "Beschreibung der Websuche", + "audioProvidersHeading": "Audioanbieter", "cloudAgentProviders": "Cloud-Agent-Anbieter", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Vor Minuten", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", + "liveAutoRefreshing": "Automatische Live-Aktualisierung", + "webSearch": "Websuche", + "anthropicPrefixPlaceholder": "Platzhalter für Anthropic-Präfix", + "addModelToCombo": "Modell zur Kombination hinzufügen", + "failedToLoad": "Laden fehlgeschlagen", + "categoryMedia": "Kategorie Medien", + "enableCloud": "Cloud aktivieren", + "expirationBannerExpiringSoon": "Ablaufbanner – läuft bald ab", + "retry": "Erneut versuchen", + "embeddings": "Einbettungen", + "errorCount": "Fehleranzahl", + "backupReasonManual": "Sicherungsgrund: Manuell", + "safeSearchModerate": "SafeSearch: Moderat", + "activeLimiters": "Aktive Begrenzer", + "a2aCardTitle": "A2A-Kartentitel", + "cloudWorkerUnreachable": "Cloud-Worker nicht erreichbar", + "testFailed": "Test fehlgeschlagen", + "compatibleBaseUrlHint": "Hinweis zur kompatiblen Basis-URL", + "usageTracking": "Nutzungsverfolgung", + "disableCloudTitle": "Titel für Cloud-Deaktivierung", + "noConnections": "Keine Verbindungen", + "providerHealth": "Anbieterstatus", + "confirmDbImport": "Datenbankimport bestätigen", + "notAvailableSymbol": "Symbol für „Nicht verfügbar“", + "backupsAvailable": "Verfügbare Sicherungen", + "providerAuto": "Anbieter automatisch auswählen", + "newProviderNamePlaceholder": "Platzhalter für neuen Anbieternamen", + "a2aQuickStartStep2": "A2A-Schnellstart – Schritt 2", + "ok": "OK", + "available": "Verfügbar", + "noBackupYet": "Noch keine Sicherung", + "more": "Mehr", + "noCompatibleYet": "Noch keine kompatiblen Anbieter", + "multiProvider": "Mehrere Anbieter", + "repairEnvHint": "Hinweis zur Reparatur der Umgebung", + "disablingCloud": "Cloud wird deaktiviert", + "testBench": "Testumgebung", + "valid": "Gültig", + "cloudBenefitShare": "Cloud-Vorteil: Teilen", + "mcpCardTitle": "MCP-Kartentitel", + "disableConfirm": "Deaktivierung bestätigen", + "filters": "Filter", + "expirationBannerExpiredDesc": "Beschreibung des Ablaufbanners – abgelaufen", + "saveComboDefaults": "Kombinationsstandards speichern", + "cloudConnectedVerified": "Cloud-Verbindung verifiziert", + "uptime": "Verfügbarkeit", + "compatibleProdPlaceholder": "Kompatibler Produktions-Platzhalter", + "fallbackChainsTitle": "Titel der Fallback-Ketten", + "oauthLabel": "OAuth-Bezeichnung", + "a2aCardDescription": "Beschreibung der A2A-Karte", + "okShort": "OK", + "maintenance": "Wartung", + "formatConverter": "Formatkonverter", + "zedImportNetworkError": "Zed-Import: Netzwerkfehler", + "apiKeyLabel": "API-Schlüssel-Bezeichnung", + "noModelsForProvider": "Keine Modelle für diesen Anbieter", + "mcpCardDescription": "Beschreibung der MCP-Karte", + "apiTypeLabel": "API-Typ-Bezeichnung", + "configuredProvidersLabel": "Bezeichnung der konfigurierten Anbieter", + "maxRetriesLabel": "Bezeichnung für maximale Wiederholungsversuche", + "title": "Titel", + "output": "Ausgabe", + "prefixHint": "Präfix-Hinweis", + "skipWizard": "Assistenten überspringen", + "failedCount": "Anzahl fehlgeschlagener Vorgänge", + "confirmDbImportDesc": "Beschreibung zur Bestätigung des DB-Imports", + "entries": "Einträge", + "until": "Bis", + "disableCombo": "Kombination deaktivieren", + "liveMonitorDescriptionPrefix": "Präfix der Live-Monitor-Beschreibung", + "runningCount": "Anzahl laufender Vorgänge", + "noActiveConnectionsInGroup": "Keine aktiven Verbindungen in der Gruppe", + "savedSuccessfully": "Erfolgreich gespeichert", + "systemStorage": "Systemspeicher", + "videoDesc": "Videobeschreibung", + "maxResults": "Maximale Ergebnisse", + "timeRangeMonth": "Zeitraum: Monat", + "testSummary": "Testzusammenfassung", + "failedSetPassword": "Passwort konnte nicht festgelegt werden", "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "restore": "Wiederherstellen", + "disableWarning": "Warnung zur Deaktivierung", + "moderationsDesc": "Beschreibung der Moderationen", + "providerHealthStatusAria": "ARIA-Label für den Anbieterstatus", + "modelNamePlaceholder": "Platzhalter für den Modellnamen", + "mcpQuickStartStep2": "Mcp-Schnellstart Schritt 2", + "quickStart": "Schnellstart", + "fullExportFailedWithError": "Vollständiger Export mit Fehler fehlgeschlagen", + "loadingBackups": "Sicherungen werden geladen", + "anthropicBaseUrlPlaceholder": "Anthropic-Basis-URL-Platzhalter", + "description": "Beschreibung", + "noProviderFound": "Kein Anbieter gefunden", + "auto": "Automatisch", + "protocolsDescription": "Beschreibung der Protokolle", + "cloudSessionNote": "Hinweis zur Cloud-Sitzung", + "advancedSettings": "Erweiterte Einstellungen", + "defaultStrategy": "Standardstrategie", + "purgeExpiredLogs": "Abgelaufene Protokolle bereinigen", + "justNow": "Gerade eben", + "providerTestFailed": "Anbietertest fehlgeschlagen", + "openaiBaseUrlPlaceholder": "Openai-Basis-URL-Platzhalter", + "image": "Bild", + "failedCreateChain": "Kette konnte nicht erstellt werden", + "importDatabase": "Datenbank importieren", + "allDataLocal": "Alle Daten lokal", + "sectionTitle": "Abschnittstitel", + "failedToggle": "Umschalten fehlgeschlagen", + "editCombo": "Kombination bearbeiten", + "testResults": "Testergebnisse", + "searchQuery": "Suchanfrage", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", + "duplicate": "Duplizieren", + "createCombo": "Kombination erstellen", + "searchTypeWeb": "Suchtyp Web", + "addChain": "Kette hinzufügen", + "prefixLabel": "Präfixbezeichnung", + "listModelsDesc": "Beschreibung der Modellauflistung", + "databaseSize": "Datenbankgröße", + "chainCreated": "Kette erstellt", + "providerTestTimeout": "Zeitüberschreitung beim Anbietertest", + "routingStrategy": "Routingstrategie", + "translateAction": "Übersetzungsaktion", + "exportFailed": "Export fehlgeschlagen", + "connectedVerificationPending": "Verbunden, Überprüfung ausstehend", + "a2aQuickStartTitle": "A2A-Schnellstarttitel", + "couldNotTest": "Test konnte nicht durchgeführt werden", + "testAllCompatible": "Alle kompatiblen testen", + "anthropicCompatibleName": "Anthropic-kompatibler Name", + "disabling": "Wird deaktiviert", + "failedEnable": "Aktivierung fehlgeschlagen", + "categoryUtility": "Kategorie: Dienstprogramm", + "customUrlOptional": "Benutzerdefinierte URL (optional)", + "localProviders": "Lokale Anbieter", + "comboNamePlaceholder": "Platzhalter für den Kombinationsnamen", + "memoryRss": "Arbeitsspeicher-RSS", + "disableProvider": "Anbieter deaktivieren", + "welcomeDesc": "Willkommensbeschreibung", + "nameLabel": "Namensbezeichnung", + "allOperational": "Alle betriebsbereit", + "backupNow": "Jetzt sichern", + "providerMaxRetriesAria": "ARIA-Label für maximale Anbieter-Wiederholungsversuche", + "textToSpeechDesc": "Beschreibung der Text-zu-Sprache-Funktion", + "machineId": "Geräte-ID", + "globalProxy": "Globaler Proxy", + "hitsMisses": "Treffer und Fehlschläge", + "testDesc": "Testbeschreibung", + "chatDesc": "Chatbeschreibung", + "importSuccess": "Import erfolgreich", "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "a2aQuickStartStep1": "A2A-Schnellstart, Schritt 1", + "importFailed": "Import fehlgeschlagen", + "inputPlaceholder": "Eingabeplatzhalter", + "providerModelsTitle": "Titel der Anbietermodelle", + "lastBackup": "Letzte Sicherung", + "yourEndpoint": "Ihr Endpunkt", + "autoDisableThresholdDesc": "Beschreibung des Schwellenwerts für die automatische Deaktivierung", + "rerankDesc": "Beschreibung des Rerankings", + "modelsPathPlaceholder": "Platzhalter für den Modellpfad", + "noCombosYet": "Noch keine Kombinationen", + "connectedVerificationPendingWithError": "Verbunden, Verifizierung mit Fehler ausstehend", + "comboDefaultsGuideHint1": "Hinweis 1 zum Leitfaden für Kombinationseinstellungen", + "enableCloudTitle": "Cloud aktivieren", + "configuredProvidersHint": "Hinweis zu konfigurierten Anbietern", + "paused": "Pausiert", + "llmProviders": "LLM-Anbieter", + "enableCombo": "Kombination aktivieren", + "removeProviderOverrideAria": "Anbieterüberschreibung entfernen – Aria", + "nodeVersion": "Node-Version", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Export mit Fehler fehlgeschlagen", + "proxyConfigured": "Proxy konfiguriert", + "concurrencyPerModel": "Gleichzeitige Anfragen pro Modell", + "protocolTasksLabel": "Protokollaufgaben-Bezeichnung", + "oauthProviders": "OAuth-Anbieter", + "lockedCount": "Anzahl gesperrter Elemente", + "deleteChainConfirm": "Löschen der Kette bestätigen", + "recentTranslations": "Kürzlich verwendete Übersetzungen", + "zedImportButton": "Zed-Importschaltfläche", + "responsesDesc": "Beschreibung der Antworten", + "testedCount": "Anzahl getesteter Elemente", + "providersCommaSeparatedPlaceholder": "Platzhalter für kommagetrennte Anbieter", + "signatureDefaults": "Standardeinstellungen für Signaturen", + "errorCreating": "Fehler beim Erstellen", + "timeRangeYear": "Zeitraum: Jahr", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Cloud erfolgreich deaktiviert", + "deleteConfirm": "Löschen bestätigen", + "check": "Prüfen", + "safeSearch": "Sichere Suche", + "protocolLastActivity": "Letzte Protokollaktivität", + "openMcpDashboard": "MCP-Dashboard öffnen", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Bezeichnung des Chatpfads", + "retryDelay": "Wiederholungsverzögerung", + "errorUpdating": "Fehler beim Aktualisieren", + "ideCliIntegrations": "IDE-/CLI-Integrationen", + "imageGeneration": "Bilderzeugung", + "apiKeyRequired": "API-Schlüssel erforderlich", + "resetAllTitle": "Titel für „Alles zurücksetzen“", + "connectionError": "Verbindungsfehler", + "modelName": "Modellname", + "apiKeyForCheck": "API-Schlüssel für die Prüfung", + "cloudRequestTimeout": "Zeitüberschreitung bei Cloud-Anfrage", + "showConfiguredOnly": "Nur konfigurierte anzeigen", "showFreeOnly": "Nur kostenlos", "addFirstProvider": "Fügen Sie Ihren ersten Anbieter hinzu", "addFirstProviderDesc": "Verbinden Sie einen KI-Anbieter, um mit der Weiterleitung von Anforderungen über OmniRoute zu beginnen. Sie können kostenlose Anbieter, API-Schlüssel oder OAuth-Konten verwenden.", "learnMore": "Erfahren Sie mehr", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Domains einschließen", + "promptCache": "Prompt-Cache", + "cloudConnected": "Cloud verbunden", + "deleteChain": "Kette löschen", + "chatPathPlaceholder": "Platzhalter für Chat-Pfad", + "databasePath": "Datenbankpfad", + "usingLocalServer": "Lokaler Server wird verwendet", + "globalComboConfig": "Globale Kombinationskonfiguration", + "backupFailed": "Sicherung fehlgeschlagen", + "tabProtocols": "Protokolle", + "continue": "Weiter", + "categorySearch": "Kategoriesuche", + "rateLimitStatus": "Ratenbegrenzungsstatus", + "repairEnvSuccess": "Umgebung erfolgreich repariert", + "nameRequired": "Name erforderlich", + "country": "Land", + "trackMetricsDesc": "Metrikverfolgungsbeschreibung", + "durationSecondsShort": "Dauer in Sekunden (kurz)", + "formatConverterDescription": "Beschreibung des Formatkonverters", + "cloudBenefitAccess": "Zugriff als Cloud-Vorteil", + "maxRetries": "Maximale Wiederholungsversuche", + "queueTimeout": "Warteschlangen-Timeout", "queueDepth": "Warteschlangentiefe", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Anbieter hinzufügen", + "realtime": "Echtzeit", + "totalTranslations": "Übersetzungen insgesamt", + "protocolActiveStreamsLabel": "Aktive Protokoll-Streams", + "repairEnv": "Umgebung reparieren", + "modelsCount": "Anzahl der Modelle", + "viewBackups": "Sicherungen anzeigen", + "responsesApi": "Responses API", + "copyComboName": "Kombinationsnamen kopieren", + "failures": "Fehler", + "failedUpdate": "Aktualisierung fehlgeschlagen", + "imageDesc": "Bildbeschreibung", + "failedCreate": "Erstellung fehlgeschlagen", + "remainingOfLimit": "Vom Limit verbleibend", + "protocolsTitle": "Protokolle", + "expirationBannerExpiringSoonDesc": "Beschreibung des Banners für baldigen Ablauf", + "source": "Quelle", + "failed": "Fehlgeschlagen", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", + "mcpQuickStartStep1": "MCP-Schnellstart – Schritt 1", + "runTest": "Test ausführen", + "loadingFallbackChains": "Fallback-Ketten werden geladen", + "healthy": "Fehlerfrei", "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", + "saveBlockWeighted": "Gewichteten Block speichern", + "zedImportNone": "Keine Zed-Importe", + "noBackupsYet": "Noch keine Sicherungen", + "noGlobalProxy": "Kein globaler Proxy", + "noModels": "Keine Modelle", + "stickyLimit": "Sticky-Limit", + "passedCount": "Anzahl bestandener Tests", + "zedImportFailed": "Zed-Import fehlgeschlagen", + "saving": "Wird gespeichert", + "testAll": "Alle testen", + "globalProxyDesc": "Beschreibung des globalen Proxys", + "latencyP99": "Latenz P99", + "connectingToCloud": "Verbindung mit der Cloud wird hergestellt", + "responses": "Antworten", + "errorDeleting": "Fehler beim Löschen", + "openaiPrefixPlaceholder": "OpenAI-Präfix-Platzhalter", + "enterPassword": "Passwort eingeben", + "openA2aDashboard": "A2A-Dashboard öffnen", + "enableProvider": "Anbieter aktivieren", + "modeTest": "Modus testen", + "failedDeleteChain": "Kette konnte nicht gelöscht werden", + "providerDesc": "Anbieterbeschreibung", + "templateLoadHint": "Hinweis zum Laden der Vorlage", + "lastFailure": "Letzter Fehler", + "moveDown": "Nach unten verschieben", + "providerLabel": "Anbieterbezeichnung", + "clearCacheFailed": "Cache konnte nicht geleert werden", + "imagesGenerations": "Bildgenerierungen", + "repairEnvWorking": "Umgebungsreparatur läuft", + "millisecondsShort": "ms", + "globalLabel": "Globale Bezeichnung", + "failuresPlural": "Fehler", + "completionsLegacyDesc": "Beschreibung der veralteten Vervollständigungen", + "searchProviders": "Anbieter suchen", + "chatPathHint": "Hinweis zum Chat-Pfad", + "defaultStrategyDesc": "Beschreibung der Standardstrategie", + "latencyP95": "Latenz P95", + "textToSpeech": "Text-to-Speech", + "searchType": "Suchtyp", + "messages": "Nachrichten", + "aggregatorsGateways": "Aggregator-Gateways", + "comboStrategyAria": "ARIA der Kombinationsstrategie", + "input": "Eingabe", + "testingConnection": "Verbindung wird getestet", + "excludeDomains": "Domains ausschließen", + "webCookieProviders": "Web-Cookie-Anbieter", + "allTestsPassed": "Alle Tests bestanden", + "openaiCompatibleName": "OpenAI-kompatibler Name", + "warningCostOptimizedPartialPricing": "Warnung: Kostenoptimierung mit unvollständigen Preisangaben", + "comboDefaultsGuideTitle": "Titel des Leitfadens zu Kombinationsstandards", + "hoursAgo": "Stunden zuvor", + "notAvailable": "Nicht verfügbar", + "skipAndContinue": "Überspringen und fortfahren", + "moderations": "Moderationen", + "proxyConfig": "Proxy-Konfiguration", + "upstreamProxyProviders": "Upstream-Proxy-Anbieter", + "exportAll": "Alle exportieren", + "queuedCount": "Anzahl in der Warteschlange", + "resetAll": "Alle zurücksetzen", + "noTranslations": "Keine Übersetzungen", + "avgLatency": "Durchschn. Latenz", + "throttleStatus": "Drosselungsstatus", + "backupRetentionDesc": "Beschreibung der Aufbewahrung von Sicherungen", + "noCBData": "Keine Leistungsschalterdaten", + "chainDeleted": "Kette gelöscht", + "timeLeft": "Verbleibende Zeit", + "expirationBannerExpired": "Ablaufbanner: Abgelaufen", + "language": "Sprache", + "invalidFileType": "Ungültiger Dateityp", + "monitoredProviders": "Überwachte Anbieter", + "errors": "Fehler", "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "chatCompletions": "Chat-Vervollständigungen", + "exampleTemplatesHint": "Hinweis zu Beispielvorlagen", + "retryDelayLabel": "Bezeichnung der Wiederholungsverzögerung", + "audioTranscription": "Audiotranskription", + "fallbackChainsDesc": "Beschreibung der Fallback-Ketten", + "exampleTemplates": "Beispielvorlagen", + "connectionsCount": "Anzahl der Verbindungen", + "modelsPathLabel": "Bezeichnung des Modellpfads", + "activeProvidersHint": "Hinweis zu aktiven Anbietern", + "activeLockouts": "Aktive Sperren", + "invalid": "Ungültig", + "skipPassword": "Passwort überspringen", + "moveUp": "Nach oben verschieben", + "timeRange": "Zeitraum", + "stickyLimitDesc": "Beschreibung des Sticky-Limits", + "cloudBenefitEdge": "Cloud-Vorteil Edge", + "custom": "Benutzerdefiniert", + "verifying": "Wird überprüft", + "baseUrlLabel": "Bezeichnung der Basis-URL", + "setPassword": "Passwort festlegen", + "safeSearchStrict": "SafeSearch: Streng", + "noChangesSinceBackup": "Keine Änderungen seit der Sicherung", + "modelsPathHint": "Hinweis zum Modellpfad", + "audioTranscriptions": "Audiotranskriptionen", + "testCombo": "Kombination testen", + "mcpQuickStartTitle": "Mcp-Schnellstarttitel", + "comboUpdated": "Kombination aktualisiert", + "weighted": "Gewichtet", + "providers": "Anbieter", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Beschreibung: Keine Fallback-Ketten", + "yesImport": "Ja, importieren", + "lockoutsAutoRefreshHint": "Hinweis zur automatischen Aktualisierung von Sperren", + "tabApis": "Tab „APIs“", + "sectionDescription": "Abschnittsbeschreibung", + "filter": "Filtern", + "purgeLogsFailed": "Protokolle konnten nicht bereinigt werden", + "latency": "Latenz", + "testAllOAuth": "Alle OAuth-Verbindungen testen", + "mcpQuickStartStep3": "Mcp-Schnellstart – Schritt 3", + "repairEnvFailed": "Reparatur der Umgebungsvariablen fehlgeschlagen", + "zedImportHint": "Hinweis zum Zed-Import", + "modelsAcrossEndpoints": "Modelle über Endpunkte hinweg", + "autoDisableBannedAccounts": "Gesperrte Konten automatisch deaktivieren", + "securityDesc": "Sicherheitsbeschreibung", + "listModels": "Modelle auflisten", + "backupRestore": "Sichern und wiederherstellen", + "target": "Ziel", + "zedImportSuccess": "Zed-Import erfolgreich", + "lastHeaderUpdate": "Letzte Header-Aktualisierung", + "categoryCore": "Kernkategorie", + "noFallbackChains": "Keine Fallback-Ketten", + "noSearchProviders": "Keine Suchanbieter", + "autoBalance": "Automatischer Lastausgleich", + "noModelsYet": "Noch keine Modelle", + "signatureFamily": "Signaturfamilie", + "externalApiCalls": "Externe API-Aufrufe", + "providerOverridesDesc": "Beschreibung der Anbieterüberschreibungen", + "signatureTool": "Signatur-Tool", + "connectionFailed": "Verbindung fehlgeschlagen", + "activeLimitersPlural": "Aktive Begrenzer", + "doneDesc": "Beschreibung für „Fertig“", + "down": "Nicht verfügbar", + "noDataYet": "Noch keine Daten", + "activeProviders": "Aktive Anbieter", + "nameInvalid": "Ungültiger Name", + "skip": "Überspringen", + "createChain": "Kette erstellen", + "audioSpeech": "Audio-Sprachausgabe", + "cacheCleared": "Cache geleert", + "searchTypeNews": "Suchtyp: Nachrichten", + "durationMillisecondsShort": "Dauer (ms)", + "addOpenAICompatible": "OpenAI-kompatiblen Anbieter hinzufügen", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "In Warteschlange", + "domainPlaceholder": "Domain-Platzhalter", + "durationMinutesShort": "Dauer (Min.)", + "verifyingConnection": "Verbindung wird überprüft", + "imageProviders": "Bildanbieter", + "protocolToolsLabel": "Protokoll-Tools", + "queryPlaceholder": "Suchanfrage-Platzhalter", + "videoGeneration": "Videogenerierung", + "timeRangeWeek": "Zeitraum: Woche", + "limitExhausted": "Limit ausgeschöpft", + "failedDisable": "Deaktivierung fehlgeschlagen", + "inMemoryNote": "Hinweis zum Arbeitsspeicher", + "compatibleHint": "Kompatibilitätshinweis", + "errorShort": "Kurze Fehlermeldung", + "advancedHint": "Erweiterter Hinweis", + "restoreFailed": "Wiederherstellung fehlgeschlagen", + "searchProvidersHeading": "Überschrift der Anbietersuche", + "comboName": "Kombinationsname", + "autoDisableDescription": "Beschreibung der automatischen Deaktivierung", + "embeddingsDesc": "Beschreibung der Einbettungen", + "operational": "Betriebsbereit", + "testAllApiKey": "Alle API-Schlüssel testen", + "backupCreated": "Sicherung erstellt", + "errorDuringImport": "Fehler beim Importieren", + "comboDefaultsGuideHint2": "Hinweis 2 zum Leitfaden für Kombinationseinstellungen", + "connecting": "Verbindung wird hergestellt", + "fillModelAndProviders": "Modell und Anbieter angeben", + "syncing": "Wird synchronisiert", + "resetConfirm": "Zurücksetzen bestätigen", + "trackMetrics": "Metriken erfassen", + "successful": "Erfolgreich", + "recovering": "Wird wiederhergestellt", + "autoDisableThreshold": "Schwellenwert für automatische Deaktivierung", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Daten werden synchronisiert", + "cloudBenefitPorts": "Vorteile der Cloud-Ports", + "compatibleProviders": "Kompatible Anbieter", "freeTierProviders": "Kostenlose Anbieter", "freeTierLabel": "Kostenloses Kontingent verfügbar", "freeTierProvidersDesc": "Anbieter mit kostenlosen Stufen – einige erfordern eine API-Schlüsselanmeldung, andere benötigen überhaupt keine Anmeldeinformationen.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Cache leeren", + "reqs": "Anforderungen", + "addAnthropicCompatible": "Anthropic-kompatiblen Anbieter hinzufügen", + "apiKeyProviders": "Anbieter von API-Schlüsseln", + "tabsAria": "ARIA für Registerkarten", + "resetting": "Wird zurückgesetzt", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Sicherungsgrund vor der Wiederherstellung", + "disableCloud": "Cloud deaktivieren", + "newProviderNameAria": "ARIA für den Namen des neuen Anbieters", + "passwordsMismatch": "Passwörter stimmen nicht überein", + "a2aQuickStartStep3": "A2A-Schnellstart – Schritt 3", + "liveMonitorDescriptionSuffix": "Suffix der Beschreibung für die Live-Überwachung", + "failedAddProvider": "Anbieter konnte nicht hinzugefügt werden", + "addAtLeastOneProvider": "Mindestens einen Anbieter hinzufügen", + "reasonSeparator": "Trennzeichen für Gründe", + "zedImporting": "Zed wird importiert", + "confirmPasswordPlaceholder": "Passwort bestätigen", + "whatYouGet": "Das erhalten Sie", + "signatureSession": "Signatursitzung", + "errorCountNoCode": "Fehleranzahl ohne Code", + "testing": "Testen", + "providersCommaSeparated": "Anbieter, durch Kommas getrennt", + "exportDatabase": "Datenbank exportieren", + "hitRate": "Trefferquote", + "completionsLegacy": "Vervollständigungen (veraltet)", + "removeModel": "Modell entfernen", + "timeRangeDay": "Zeitraum: Tag", + "cloudRequestFailed": "Cloud-Anfrage fehlgeschlagen", + "updatedAt": "Aktualisiert am", + "monitoredProvidersHint": "Hinweis zu überwachten Anbietern", + "connectionSuccessful": "Verbindung erfolgreich", + "latencyP50": "Latenz P50", + "logsDeleted": "Protokolle gelöscht", + "chatTester": "Chat-Tester", + "safeSearchOff": "SafeSearch deaktiviert", + "nameHint": "Hinweis zum Namen", + "debugToggle": "Debug-Umschalter", + "embedding": "Einbettung", + "issuesLabel": "Bezeichnung für Probleme", + "optionAny": "Option: Beliebig", + "maxNestingDepth": "Maximale Verschachtelungstiefe", + "rerank": "Neu gewichten", + "checking": "Wird überprüft", + "getStarted": "Erste Schritte", + "restoreSuccess": "Wiederherstellung erfolgreich", + "issuesDetected": "Probleme erkannt", + "signatureCache": "Signatur-Cache", + "modelLockouts": "Modellsperren", + "usingCloudProxy": "Cloud-Proxy wird verwendet", + "loadingHealth": "Systemzustand wird geladen", + "providerOverrides": "Anbieterüberschreibungen", + "audioTranscriptionDesc": "Beschreibung der Audiotranskription", + "learnedFromHeaders": "Aus Headern gelernt", + "totalRequests": "Anfragen insgesamt", + "cloudUnstableNote": "Hinweis zur Cloud-Instabilität", "gamificationAdmin": "Gamification-Administrator", "monitorAnomaliesAndHealth": "Überwachen Sie Anomalien und den Systemzustand", "flaggedAnomalies": "Gekennzeichnete Anomalien", "noAnomaliesDetected": "Keine Anomalien festgestellt", "apiKey": "API-Schlüssel", - "xpLastHour": "XP (1h)", - "zScore": "Z-Score", - "suspicious": "__MISSING__:Suspicious", + "xpLastHour": "XP (1 Std.)", + "zScore": "Z-Wert", + "suspicious": "Verdächtig", "tokensCommunityServers": "Community-Server", "tokensServerNamePlaceholder": "Servername", "tokensApiKeyPlaceholder": "API-Schlüssel", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Mehr laden…", "recommended": "Empfohlen", "understand": "Ich verstehe", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "Stapelverarbeitung", + "batchConceptSubtitle": "Verarbeiten Sie Tausende von Anfragen asynchron zu etwa 50 % der Kosten (24-Stunden-Zeitfenster). Ideal für Evaluierungen, Klassifizierungen und Embeddings.", + "batchConceptHowItWorks": "So funktioniert es", + "batchConceptBenefit50pct": "50 % Rabatt auf Eingabe- und Ausgabe-Tokens", + "batchConceptAsync24h": "Asynchrone Verarbeitung mit einem Abschlusszeitfenster von 24 Stunden", + "batchConceptUseCases": "Optimal für Massenklassifizierungen, Evaluierungen und Embeddings", + "batchHeaderSubtitle": "Viele Anfragen als einen Auftrag ausführen", + "batchStep1": "1 · JSONL hochladen", + "batchStep1Desc": "Anfragen hinzufügen", + "batchStep2": "2 · Stapel erstellen", + "batchStep2Desc": "Auftrag ausführen", + "batchStep3": "3 · Ergebnisse abrufen", + "batchStep3Desc": "Ausgabe herunterladen", + "filesConceptTitle": "Stapeldateien", + "filesConceptSubtitle": "Von Stapeln verwendete JSONL-Dateien: Eingabeanfragen, Ergebnisse und Fehler.", + "filesConceptInput": "Eingabe — Ihre JSONL-Datei mit einer Anfrage pro Zeile", + "filesConceptOutput": "Ausgabe — Ergebnisse abgeschlossener Anfragen", + "filesConceptError": "Fehler — fehlgeschlagene Anfragen", + "filesConceptRetention": "Aufbewahrung: standardmäßig 30 Tage (29 Tage bei Anthropic)", + "wizardTitle": "Neuer Stapel", + "wizardClose": "Schließen", + "wizardNext": "Weiter", + "wizardBack": "Zurück", + "wizardCancel": "Abbrechen", + "wizardCreate": "Stapel erstellen", + "wizardCreating": "Wird erstellt…", + "wizardStep1Destination": "Ziel", + "wizardStep2Input": "Eingabe", + "wizardStep3Validate": "Validieren", + "wizardStep4Cost": "Kosten prüfen und erstellen", + "wizardProviderLabel": "Anbieter", + "wizardEndpointLabel": "Endpunkt", + "wizardModelLabel": "Modell", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (wird konvertiert)", + "wizardDropOrPick": "Datei hier ablegen oder zum Auswählen klicken", + "wizardCsvMappingTitle": "CSV-Spalten den Anfragefeldern zuordnen", + "wizardCsvMappingAddField": "Feld hinzufügen", "wizardCsvNoColumns": "Keine Spalten im CSV-Header erkannt.", "wizardCsvIgnoreColumn": "— ignorieren —", "wizardCsvCustomIdMapped": "custom_id zugeordnet", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} Zeilen verarbeitet", "wizardCsvRowsSkipped": "{count} Zeilen übersprungen", "wizardCsvRowError": "Zeile {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Alle Zeilen sind gültig", "wizardValidating": "Validieren…", "wizardValidationParseFailed": "Validierung fehlgeschlagen — Inhalt konnte nicht geparst werden.", "wizardValidationSummary": "{lines} Zeilen · {ids} eindeutige custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Doppelte custom_ids erkannt:", "wizardValidationFirstErrors": "Fehler (erste {count}):", "wizardValidationLine": "Zeile {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Validierungsfehler", + "wizardValidationPreview": "Vorschau (erste 5 Anfragen)", + "wizardValidationSamplingNote": "Die Datei ist groß — die Validierung erfolgte anhand einer Stichprobe (erste 1000 + letzte 100 Zeilen). Die vollständige Validierung erfolgt serverseitig.", + "wizardCostSync": "Kosten bei synchroner Verarbeitung", + "wizardCostBatch": "Kosten bei Stapelverarbeitung (-50 %)", + "wizardCostSavings": "Ersparnis", + "wizardCostEstimatedNotice": "Geschätzte Kosten — die tatsächliche Abrechnung kann abweichen.", + "wizardErrorUpload": "Datei konnte nicht hochgeladen werden. Versuchen Sie es erneut.", + "wizardErrorCreate": "Stapel konnte nicht erstellt werden. Versuchen Sie es erneut.", + "wizardEmptyProviders": "Verbinden Sie einen Anbieter mit Unterstützung für Stapelverarbeitung (OpenAI, Anthropic oder Gemini), um einen Stapel zu erstellen.", + "uploadModalTitle": "Stapeldatei hochladen", + "uploadModalDropOrPick": ".jsonl-Datei hier ablegen oder zum Auswählen klicken", + "uploadModalUpload": "Hochladen", + "uploadModalCancel": "Abbrechen", + "uploadModalError": "Upload fehlgeschlagen. Versuchen Sie es erneut.", + "uploadModalSuccess": "Hochgeladen", + "uploadModalSizeLimit": "Max. 512 MB", + "batchListNewButton": "Neuer Stapel", + "batchListAutoRefresh": "Automatisch alle 30 s aktualisieren", + "batchListCostColumn": "Kosten", + "batchActionCancel": "Abbrechen", + "batchActionDownloadOutput": "Ausgabe herunterladen", + "batchActionDownloadErrors": "Fehler herunterladen", + "batchActionRetry": "Fehlgeschlagene erneut versuchen", + "batchActionRetryConfirm": "{n} fehlgeschlagene Anfrage(n) erneut versuchen? Die endgültigen Kosten hängen von den tatsächlich verbrauchten Tokens ab.", + "expirationBadgeCritical": "Kritisch", + "expirationBadgeWarning": "Bald", + "expirationBadgeNormal": "Ausstehend", + "expirationBadgeExpired": "Abgelaufen", + "filesListUploadButton": "Hochladen", + "filesListUsedByColumn": "Verwendet von", + "filesListUsedByNone": "Keine", + "filesListUsedByRoleInput": "Eingabe", + "filesListUsedByRoleOutput": "Ausgabe", + "filesListUsedByRoleError": "Fehler", + "filesListSizeColumn": "Größe", + "batchListProgressPartial": "(teilweise)", + "batchListProviderColumn": "Anbieter", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", + "batchListProviderOther": "Sonstiges", + "batchListTitle": "Stapel", + "batchListCount": "{count} Stapel", + "batchListRemovingCompleted": "Wird entfernt…", + "batchListRemoveCompleted": "Entfernen abgeschlossen", "batchListTableStatus": "Status", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "Endpunkt", + "batchListTableModel": "Modell", + "batchListTableProgress": "Fortschritt", + "batchListTableCreated": "Erstellt", + "batchListTableExpires": "Läuft ab", + "batchListLoading": "Wird geladen…", + "batchListEmpty": "Keine Stapel gefunden", + "batchListValidating": "Wird validiert…", + "batchStatusAll": "Alle Status", + "batchStatusInProgress": "In Bearbeitung", + "batchStatusValidating": "Wird validiert", + "batchStatusFinalizing": "Wird finalisiert", + "batchStatusCompleted": "Abgeschlossen", + "batchStatusFailed": "Fehlgeschlagen", + "batchStatusCancelled": "Abgebrochen", + "batchStatusCancelling": "Wird abgebrochen", + "batchStatusExpired": "Abgelaufen", + "batchStatusCompletedWithFailures": "mit Fehlern abgeschlossen", + "batchStatusInProgressWithFailures": "in Bearbeitung (mit Fehlern)", + "batchStatusFinalizingWithFailures": "wird finalisiert (mit Fehlern)", + "batchStatusCancelledWithFailures": "mit Fehlern abgebrochen", + "batchStatusExpiredWithFailures": "abgelaufen (teilweise)", + "wizardCostEstimating": "Kosten werden geschätzt…", + "wizardCostRequests": "Anfragen", + "wizardCostInputTok": "Eingabe-Token", + "wizardCostOutputTok": "Ausgabe-Token", + "wizardCostWindow": "Zeitfenster", + "wizardDestinationSelectProvider": "Anbieter auswählen…", + "wizardDestinationSelectModel": "Modell auswählen…", + "wizardDestinationConnectProvider": "Anbieter verbinden", + "batchListBatchCreated": "Stapel {id} erstellt — Liste wird aktualisiert…", + "batchListBatchCreatedDismiss": "Schließen", + "batchListRefreshing": "Wird aktualisiert…", + "batchListRefresh": "Aktualisieren", + "uploadFileModalRemove": "Entfernen", + "uploadFileModalUploading": "Wird hochgeladen…", + "wizardInputReading": "Datei wird gelesen…", + "wizardInputReady": "Bereit", + "wizardInputLargeFileLabel": "Große Datei — Validierung anhand von Stichproben", + "wizardInputCsvJsonlReady": "JSONL generiert — bereit zur Validierung.", + "wizardInputLargeFileWarning": "Große Datei erkannt — die Validierung erfolgt anhand von Stichproben (erste 5 MB + letzte 100 KB). Die vollständige Validierung erfolgt serverseitig.", + "wizardCostWindow24h": "24-Stunden-Zeitfenster für den Abschluss", + "wizardValidationFieldsOk": "Pflichtfelder gültig", + "filesListDelete": "Löschen", + "filesListDownload": "Herunterladen", + "batchDetailActionCancel": "Batch abbrechen", + "batchDetailActionRetry": "Fehlgeschlagene Anfragen wiederholen", + "batchDetailCancelling": "Wird abgebrochen…", + "batchDetailRetrying": "Wiederholung wird vorbereitet…", + "batchDetailCancelConfirm": "Diesen Batch abbrechen? Laufende Anfragen werden gestoppt.", + "batchActionCancelError": "Batch konnte nicht abgebrochen werden. Versuchen Sie es erneut.", + "batchActionRetryError": "Fehlgeschlagene Anfragen konnten nicht wiederholt werden. Versuchen Sie es erneut.", + "batchConceptRetentionNote": "Ergebnis- und Fehlerdateien werden 30 Tage lang aufbewahrt (Anthropic: 29 Tage)", "batchFilesSizeColumn": "Größe", "toggleNoAuthProvider": "No-Auth-Anbieter umschalten", "loadingModels": "Modelle werden geladen…", @@ -988,14 +988,14 @@ "disabled": "Deaktiviert", "featureFlagOmnirouteEmergencyFallbackDescription": "Anfragen mit erschöpftem Budget an den kostenlosen Notfall-Fallback-Anbieter/das Notfall-Fallback-Modell weiterleiten.", "featureFlagArenaEloSyncEnabledDescription": "Periodischen ELO-Abgleich der Arena AI-Bestenliste für Modell-Intelligenz-Rankings aktivieren.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Konversationszusammenfassungen generieren und einfügen, wenn beim Combo-Routing das Modell gewechselt wird. Deaktivieren Sie diese Option, um Modellwechsel unabhängig voneinander zu behandeln und Hintergrundanfragen für die Übergabe bei allen bestehenden und zukünftigen Combos zu verhindern.", "featureFlagExposeCcDiscoveryAliasesDescription": "Bewerben Sie claude/<provider>/<model> Spiegel-IDs auf /v1/models, damit die Claude Code-Gateway-Modellentdeckung Nicht-Claude-Modelle auflistet. Warnung: Verdoppelt Katalogeinträge für alle Clients, wenn global aktiviert.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Hauptschalter für die Gateway-Aliasse no-think/<provider>/<model>. Ein (Standard): /v1/models listet für jedes geeignete denkfähige Claude-Modell eine Variante ohne Denkprozess auf, und eine mit einer Anfrage gesendete no-think/-ID wird wieder zum tatsächlichen Modell aufgelöst, wobei die Schlussfolgerung unterdrückt wird. Aus: Es werden keine Varianten aufgeführt und eine no-think/-ID wird wie jede andere unbekannte Modell-ID behandelt. Die Aktivierung/Deaktivierung pro Modell über ModelSpec.noThinkingAlias gilt weiterhin, solange diese Option aktiviert ist.", "featureFlagChatVirtualLanesEnabledDescription": "Aktivieren Sie adaptive virtuelle Zulassungsspuren pro Tenant für die Provider-Zustellung (#9654): Ein Burst eines Tenants führt nicht mehr zu 503 bei einem anderen. Die Umgebungsvariable OMNIROUTE_CHAT_VIRTUAL_LANES hat Vorrang vor dieser Dashboard-Einstellung; Änderungen werden erst nach einem Serverneustart wirksam.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard-Anbieterseiten: Das Kostenlos-Badge wird nur bei Signalen angezeigt, die der Anbieter berücksichtigt — die Heuristik für Anzeigenamen, nicht boolesche Kostenlos-Felder und :free-Suffixe bei registrierten Anbietern ohne dokumentierte kostenlose Stufe werden nicht mehr verwendet. Bei deaktivierter Option gilt weiterhin die bisherige Badge-Regel.", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy-Pools und die kontobasierte Rotation von opencode verwenden einen Proxy, der gerade fehlgeschlagen ist (abgelehnte TCP-Prüfung oder darüber empfangener 429-Statuscode), für einen prozessbezogenen Zeitraum nicht erneut. Dieser Zeitraum verdoppelt sich bei jeder Wiederholung bis zu einer Obergrenze. Es wird kein Proxy-Status gespeichert; wenn alle Kandidaten zurückgestellt wurden, bleibt die Auswahl unverändert. Standardmäßig deaktiviert: Die Auswahlreihenfolge entspricht exakt der einfachen Rotation.", + "featureFlagProxyPoolEgressObservationDescription": "Zeigt im Dashboard unter einem Proxy-Pool an, wie viele beobachtete Egress-IPs dessen Mitglieder in den letzten 24 h bedient haben, wie viele Verbindungen sie verwendet haben und wie viele maximal hinter einer einzelnen IP beobachtet wurden. Schreibgeschützt, aus dem Proxy-Protokoll berechnet und niemals für das Routing verwendet. Standardmäßig deaktiviert: Der Pool-Editor bleibt unverändert und die Beobachtungsroute gibt null zurück.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Ermöglicht bei der Proxy-Zustandsprüfung, dass eine vom Ziel abgelehnte Prüfung (401/403/429: Der Proxy hat die Anfrage weitergeleitet, das Ziel hat diese Egress-IP abgelehnt) die Serie aufeinanderfolgender Fehler des Proxys zurücksetzt, wie bei einer erfolgreich beantworteten Prüfung. Standardmäßig deaktiviert: Eine Ablehnung bleibt neutral und die Serie wird beibehalten. Ein 5xx-Status bleibt in beiden Fällen nicht aussagekräftig, und eine Ablehnung entfernt, deaktiviert oder reaktiviert niemals einen Proxy.", "sidebar": { "home": "Zuhause", "dashboard": "Dashboard", @@ -1012,11 +1012,11 @@ "settings": "Einstellungen", "translator": "Übersetzer", "playground": "Spielwiese", - "searchTools": "Search Tools", + "searchTools": "Suchwerkzeuge", "agents": "Agenten", "cloudAgents": "Cloud-Agenten", - "memory": "Memory", - "skills": "Skills", + "memory": "Speicher", + "skills": "Fähigkeiten", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", "chaosConfig": "Chaos-Modus", @@ -1069,50 +1069,50 @@ "cliToolsShort": "Werkzeuge", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Batch-Aufträge", + "themeSystem": "Theme-System", + "whitelabelingDesc": "Beschreibung des Whitelabelings", + "switchThemes": "Themes wechseln", + "themeAccentDesc": "Beschreibung der Theme-Akzentfarbe", + "uploadFavicon": "Favicon hochladen", + "themeDark": "Dunkles Theme", + "customLogoDesc": "Beschreibung des benutzerdefinierten Logos", + "sidebarVisibilityToggle": "Sichtbarkeit der Seitenleiste umschalten", + "themeAccent": "Akzentfarbe des Designs", + "resetFavicon": "Favicon zurücksetzen", + "whitelabeling": "White-Labeling", + "darkMode": "Dunkelmodus", + "uploadLogo": "Logo hochladen", + "themeLight": "Helles Design", + "appName": "App-Name", + "appNameDesc": "Beschreibung des App-Namens", + "resetLogo": "Logo zurücksetzen", + "customFavicon": "Benutzerdefiniertes Favicon", + "hideHealthLogs": "Integritätsprotokolle ausblenden", + "customLogo": "Benutzerdefiniertes Logo", + "appearance": "Erscheinungsbild", + "themeSelectionAria": "ARIA-Label für die Designauswahl", + "themeCreate": "Design erstellen", + "customFaviconDesc": "Beschreibung des benutzerdefinierten Favicons", + "logoPreview": "Logo-Vorschau", + "themeCustom": "Benutzerdefiniertes Design", + "hideHealthLogsDesc": "Beschreibung zum Ausblenden von Integritätsprotokollen", + "faviconPreview": "Favicon-Vorschau", + "changelog": "Änderungsprotokoll", + "contextSection": "Kontext & Cache", + "contextCaveman": "Höhlenmensch", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Engine-Kombinationen", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Komprimierungseinstellungen", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Kombinationsstudio", "combosLiveSubtitle": "Live-Routing-Kaskade", "compressionStudio": "Compression Studio", "compressionExclusions": "Ausschlüsse", @@ -1128,27 +1128,27 @@ "compressionStudioSubtitle": "Live-Engine-Kaskade", "compressionExclusionsSubtitle": "Pro-Modell/Endpoint-Umgehung", "chaosConfigSubtitle": "Parallele Ausführung mehrerer Modelle", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Weiterleitung", + "protocolsSection": "Protokolle", + "agentsAiSection": "Agenten & KI", + "cacheContextSection": "Cache & Kontext", + "analyticsSection": "Analysen", + "costsSection": "Kosten", + "monitoringSection": "Überwachung", + "auditSecuritySection": "Audit & Sicherheit", + "devtoolsSection": "Entwicklerwerkzeuge", + "configurationSection": "Konfiguration", + "aiFeaturesSection": "KI-Funktionen", "mcp": "MCP", "a2a": "A2A", "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", + "apiEndpoints": "API-Endpunkte", + "batchFiles": "Dateien", + "analyticsEvals": "Evaluierungen", + "analyticsSearch": "Suche", + "analyticsUtilization": "Auslastung", + "analyticsComboHealth": "Kombinationsstatus", + "analyticsCompression": "Komprimierung", "costsBudget": "Budget", "costsFreeTiers": "Kostenloses Kontingent", "costsFreeTiersSubtitle": "Monatliche kostenlose Token-Guthaben", @@ -1156,130 +1156,130 @@ "freeProviderRankingsSubtitle": "Die besten kostenlosen Anbieter, bewertet nach Modell-ELO-Scores", "radar": "Radar-Katalog", "radarSubtitle": "Kostenloser Modellkatalog, angereichert mit Community-Intelligenz", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Gemeinsame Kontingentnutzung", + "costsPricing": "Preisgestaltung", + "logsProxy": "Proxy-Protokolle", + "logsConsole": "Konsole", + "logsActivity": "Aktivität", + "auditMcp": "MCP-Audit", "auditA2a": "A2A-Audit", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Darstellung", + "settingsAi": "KI-Einstellungen", + "settingsSecurity": "Sicherheit", "settingsAccessTokens": "Zugriffstoken", "settingsFeatureFlags": "Feature-Flags", "settingsCache": "Cache", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "Autorisierung", + "settingsRouting": "Weiterleitung", + "settingsResilience": "Ausfallsicherheit", "modelLockout": "Modellsperre", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Erweitert", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Anbieterkontingent", + "providerQuota": "Anbieterkontingent", + "runtime": "Laufzeit", + "consoleLogs": "Konsolenprotokolle", + "logsTimeline": "Zeitleiste", "logsTimelineSubtitle": "Visuelle Anforderungszeitleiste", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Konversationen", + "conversationsSubtitle": "Agentische Konversationen mit mehreren Gesprächsrunden", + "globalRouting": "Globales Routing", + "mitmProxy": "MITM-Proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Agentenbasierte Funktionen", + "otherFeaturesSection": "Weitere Funktionen", + "compressionContextGroup": "Kontextkomprimierung", + "gamificationGroup": "Gamifizierung", + "toolsGroup": "Werkzeuge", + "integrationsGroup": "Integrationen", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "costsParametersGroup": "Kostenparameter", + "auditGroup": "Prüfung", + "batchGroup": "Stapelverarbeitung", + "homeSubtitle": "Dashboard-Übersicht", + "providersSubtitle": "KI-Anbieter verwalten", + "quotaTrackerSubtitle": "Nutzungslimits verfolgen", + "providerQuotaSubtitle": "Nutzungslimits der Anbieter verfolgen", + "runtimeSubtitle": "Ausfallsicherheit und Sitzungen in Echtzeit", + "contextCombosSubtitle": "Komprimierungs-Engines kombinieren", + "cliToolsSubtitle": "CLI-Laufzeitumgebungen konfigurieren", + "agentsSubtitle": "Lokale Agenten verwalten", + "cloudAgentsSubtitle": "Cloudbasierte Agenten verwalten", + "apiEndpointsSubtitle": "Benutzerdefinierte Endpunkte bereitstellen", + "proxySubtitle": "HTTP-Proxy-Einstellungen", + "mitmProxySubtitle": "MITM-Abfangen", + "oneProxySubtitle": "Öffentliches Proxy-Gateway", + "leaderboard": "Bestenliste", + "profile": "Profil", + "tokens": "Token", + "gamificationAdmin": "Gamification-Administration", + "leaderboardSubtitle": "Ranglisten und Erfolge", + "profileSubtitle": "Konto und Einstellungen", + "tokensSubtitle": "Token-Nutzung und Budgets", + "gamificationAdminSubtitle": "Anomalieüberwachung und Betrugsschutz", + "usageSubtitle": "Datenverkehrs- und Nutzungsstatistiken", + "analyticsComboHealthSubtitle": "Zuverlässigkeit kombinierter Ziele", + "analyticsUtilizationSubtitle": "Anbieterauslastung", + "costsSubtitle": "Kostenaufschlüsselung", + "cacheSubtitle": "Cache-Trefferraten", + "analyticsCompressionSubtitle": "Statistiken zu Token-Einsparungen", + "analyticsSearchSubtitle": "Analysetool für Suchvorgänge", + "analyticsEvalsSubtitle": "Ergebnisse der Evaluierungssuite", "providerStats": "Anbieterstatistiken", "providerStatsSubtitle": "Latenz- und Leistungsmetriken", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Anwendungsprotokolle", + "logsProxySubtitle": "Proxy-Datenverkehrsprotokolle", + "consoleLogsSubtitle": "Konsolenausgabe", + "logsActivitySubtitle": "Benutzeraktivitätsprotokoll", + "healthSubtitle": "Systemzustandsprüfung", + "costsPricingSubtitle": "Preismodellregeln", + "costsBudgetSubtitle": "Budgetlimits", + "costsQuotaShareSubtitle": "Anbieterkontingente schlüsselübergreifend teilen", + "auditLogSubtitle": "Autorisierungsprüfung", + "auditMcpSubtitle": "MCP-Server-Prüfung", + "auditA2aSubtitle": "A2A-Protokollprüfung", + "translatorSubtitle": "Formatkonvertierung", + "playgroundSubtitle": "Prompts live testen", + "searchToolsSubtitle": "Suchtool-Verzeichnis", + "memorySubtitle": "Persistenter Agentenspeicher", + "omniSkillsSubtitle": "Sandbox-Skill-Verzeichnis", + "agentSkillsSubtitle": "A2A-Skill-Verzeichnis", + "mcpSubtitle": "MCP-Server-Steuerung", + "a2aSubtitle": "A2A-Protokollserver", "pluginsSubtitle": "Plugin-Marktplatz & Installationen", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Zwischengespeicherte Mediendateien", + "batchFilesSubtitle": "Batch-Ein-/Ausgabedateien", + "settingsSubtitle": "Alle Einstellungen", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Design und Layout", + "settingsAiSubtitle": "Standardverhalten der KI", + "globalRoutingSubtitle": "Globale Routingregeln", + "settingsResilienceSubtitle": "Wiederholungsversuche und Schutzschalter", + "settingsAdvancedSubtitle": "Optionen für erfahrene Benutzer", + "settingsSecuritySubtitle": "Authentifizierung und Verschlüsselung", "settingsAccessTokensSubtitle": "CLI-Token mit eingeschränktem Gültigkeitsbereich für den Remote-Modus", "settingsFeatureFlagsSubtitle": "Systemfunktionen umschalten", "settingsCacheSubtitle": "Modellkatalog und Antwort-Caching", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Seitenleiste", + "settingsSidebarSubtitle": "Layout der Seitenleiste anpassen", "settingsAuthzSubtitle": "Routenbestand und Bypass-Richtlinie", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Dokumentation", + "issuesSubtitle": "Fehler melden", + "changelogSubtitle": "Versionshinweise", "costsQuotaPlans": "Tarife & Kontingente", "costsQuotaPlansSubtitle": "Tarife nach Anbieter konfigurieren", "activity": "Aktivität", "activitySubtitle": "Übersichtlicher Feed der letzten Ereignisse", - "logsGroup": "Logs", + "logsGroup": "Protokolle", "systemGroup": "System", "costsOverview": "Übersicht", "costsOverviewSubtitle": "Konsolidierte Kostenanalyse", - "agentBridge": "Agent Bridge", + "agentBridge": "Agenten-Bridge", "agentBridgeSubtitle": "IDE-Agenten-Datenverkehr abfangen", "trafficInspector": "Traffic Inspector", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Anfrage- und Antwortdatenverkehr Ihrer Apps prüfen", + "trafficInspectorPurpose": "Sehen Sie genau, was Ihre Anwendung an KI-Anbieter sendet und von ihnen empfängt. Funktioniert mit jedem OpenAI-kompatiblen Client.", "cliCode": "CLI-Code", "cliCodeSubtitle": "Code-Tools, die auf OmniRoute verweisen", "cliAgents": "CLI-Agenten", @@ -1296,7 +1296,7 @@ "cannotHide": "Dieses Element kann nicht ausgeblendet werden", "alwaysVisible": "Immer sichtbar", "groupSeparatorLabel": "Trennlinie", - "discovery": "Discovery", + "discovery": "Erkennung", "discoverySubtitle": "Anbieter auf kostenlosen Zugang scannen", "conductor": "Leiter", "conductorSubtitle": "CLI-Agent-Flotte", @@ -1345,7 +1345,7 @@ "refresh": "Aktualisieren", "loading": "Webhooks werden geladen...", "never": "Niemals", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {keine Fehler} one {# Fehler} other {# Fehler}}", "testWebhook": "Test senden", "testSuccess": "Test-Webhook erfolgreich gesendet.", "testFailed": "Der Test des Webhooks ist fehlgeschlagen.", @@ -1594,9 +1594,9 @@ "endpoint": "Endpunkte", "endpointDescription": "Proxy-Endpunkte, MCP, A2A und API-Endpunkte verwalten", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Verwaltung und Tools für Model Context Protocol-Server", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Aufgaben und Beobachtbarkeit für das Agent-to-Agent-Protokoll", "settings": "Einstellungen", "settingsDescription": "Verwalten Sie Ihre Präferenzen", "openaiCompatible": "OpenAI-kompatibel", @@ -1605,49 +1605,49 @@ "mediaDescription": "Generieren Sie Bilder, Videos und Musik", "themes": "Themen", "themesDescription": "Wählen Sie ein Farbthema für das gesamte Dashboard-Panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "costsDescription": "Überwachen Sie Ausgaben, analysieren Sie Trends und verwalten Sie Ihr KI-Budget anbieterübergreifend", + "cacheDescription": "Überwachen Sie die Effizienz des Prompt-Cachings bei Anbietern und die lokale semantische Wiederverwendung von Antworten.", + "limitsDescription": "Konfigurieren Sie Ratenbegrenzungen und Kontingente pro API-Schlüssel und Anbieter", + "runtimeDescription": "Live-Laufzeitbeobachtung – Schutzschalter, Abklingzeiten, Modellsperren, Sitzungen und Kontingentwarnungen", + "apiManagerDescription": "Verwalten Sie API-Schlüssel und die Zugriffssteuerung für Ihre OmniRoute-Instanz", + "batchDescription": "Verarbeiten Sie große Mengen von Anfragen asynchron mit gebündelten API-Aufrufen", + "contextCavemanDescription": "Regelbasierte Nachrichtenkomprimierung, Sprachpakete, Analysen und Steuerung des Ausgabemodus.", + "contextRtkDescription": "Befehlsorientierte Komprimierung für Tool-Ausgaben, Terminalprotokolle und Build-Ergebnisse.", + "contextCombosDescription": "Legen Sie fest, wie Engines für verschiedene Routing-Szenarien kombiniert werden.", + "changelogDescription": "Bleiben Sie über die neuesten Plattformfunktionen und Ankündigungen auf dem Laufenden.", + "agentsDescription": "Verwalten und konfigurieren Sie Tools für KI-Agenten: Codex, Devin, Jules und benutzerdefinierte Agenten", + "cloudAgentsDescription": "Orchestrieren Sie cloudbasierte KI-Agenten mit Live-Aufgabenverfolgung und Plangenehmigung", + "memoryDescription": "Persistenter Konversationsspeicher mit semantischer Suche und FTS5-Volltextindizierung", + "skillsDescription": "Installieren und verwalten Sie Sandbox-Skills für die automatisierte Ausführung von Prompts und Tools", + "agentSkillsDescription": "Für Agenten geeigneter Skill-Katalog mit URL-Kopierfunktion für die Integration in KI-Clients per Mausklick", + "translatorDescription": "Übersetzen und testen Sie Prompts zwischen verschiedenen API-Formaten: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Testen Sie Prompts interaktiv mit Live-Antworten der Anbieter und Formatprüfung", + "searchToolsDescription": "Suchanalysen, Anbieteraufschlüsselung, Cache-Trefferraten und Kostenverfolgung", + "logsDescription": "Anfrageprotokolle in Echtzeit, Fehler-Traces und Inspektor für Streaming-Ereignisse", + "auditDescription": "Compliance-Prüfpfad für die Nutzung von API-Schlüsseln, MCP-Tool-Aufrufe und Richtlinienereignisse", + "webhooksDescription": "Webhook-Endpunkte konfigurieren, um Ereignisbenachrichtigungen in Echtzeit zu empfangen", + "healthDescription": "Übersicht über den Systemzustand: Provider, Circuit Breaker, Ratenlimits und Datenbank", + "proxyDescription": "Upstream-Proxy-Einstellungen für ausgehende Provider-Verbindungen konfigurieren", + "apiEndpointsDescription": "Benutzerdefinierte API-Endpunktkonfigurationen und Routing-Überschreibungen verwalten", + "batchFilesDescription": "Ausgabedateien und Ergebnisse von Batch-Jobs durchsuchen und verwalten", + "analyticsEvalsDescription": "Ergebnisse der Modellbewertung und Leistungsbenchmarks", + "analyticsSearchDescription": "Suchanfragenanalyse, Cache-Trefferraten und Kostenverfolgung", + "analyticsUtilizationDescription": "Metriken zur Provider-Auslastung und Kapazitätsplanung", + "analyticsComboHealthDescription": "Zustand und Leistung von Combo-Routing-Konfigurationen in Echtzeit", + "analyticsCompressionDescription": "Analysen zur Kontextkomprimierung und Token-Einsparungen", + "costsBudgetDescription": "Budgetlimits und Ausgabenwarnungen pro API-Schlüssel und Provider", + "costsPricingDescription": "Benutzerdefinierte Preiskonfiguration für Token-Kostenberechnungen", + "logsProxyDescription": "Anfrageprotokolle des Upstream-Proxys und Datenverkehrsanalyse", + "logsConsoleDescription": "Konsolenausgabe der Anwendung und Debug-Protokolle", + "logsActivityDescription": "Audit-Trail von Benutzeraktionen und Systemereignissen", + "auditMcpDescription": "Audit-Trail für MCP-Tool-Aufrufe und Compliance-Aufzeichnungen", "auditA2a": "A2A-Audit", "auditA2aDescription": "Audit-Trail zur A2A-Aufgabenausführung, Statusübergänge und Skill-Aufrufaufzeichnungen", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Design, Branding und visuelle Anpassung", + "settingsAiDescription": "KI-Verhalten, Denkbudgets, Bildverarbeitung und Speichereinstellungen", "settingsCacheDescription": "TTL für Cache-Einträge des Modellkatalogs", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Einstellungen für Authentifizierung, Autorisierung und Zugriffskontrolle", "featureFlags": "Feature-Flags", "featureFlagsDescription": "Steuerungssystemfunktionen und experimentelle Funktionen", "featureFlagsActive": "{count} aktiv", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Keine Flaggen entsprechen Ihrer Suche", "featureFlagsSaved": "Flagge aktualisiert", "featureFlagsError": "Flag konnte nicht aktualisiert werden", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Routing-Regeln, Modellaliase, Combo-Standardeinstellungen und Degradationseinstellungen", + "settingsResilienceDescription": "Konfiguration von Circuit Breaker, Wiederholungsversuchen und Fallbacks", + "settingsAdvancedDescription": "Erweiterte Payload-Regeln, Anfragelimits und Proxy-API-Einstellungen", + "mitmProxyDescription": "MITM-Proxy-Einstellungen für Datenverkehrsanalyse und Debugging konfigurieren", + "oneProxyDescription": "1Proxy-Einstellungen für erweiterte Proxy-Verkettung konfigurieren", "omniSkillsDescription": "Sandbox-Skills für die automatisierte Prompt- und Tool-Ausführung installieren und verwalten" }, "cloudSyncStatus": { @@ -1690,10 +1690,10 @@ "statusLabel": "Status der Remote-Einstellungssynchronisierung: {status}" }, "breadcrumbs": { - "ariaLabel": "Breadcrumb", + "ariaLabel": "Navigationspfad", "dashboard": "Dashboard", "providers": "Provider", - "combos": "Combos", + "combos": "Kombinationen", "settings": "Einstellungen", "general": "Allgemein", "appearance": "Erscheinungsbild", @@ -1706,9 +1706,9 @@ "logs": "Protokolle", "auditLog": "Audit-Protokoll", "console": "Konsole", - "logger": "Logger", + "logger": "Protokollierung", "translator": "Übersetzer", - "playground": "Playground", + "playground": "Testumgebung", "add": "Hinzufügen", "edit": "Bearbeiten", "apiKeys": "API-Schlüssel", @@ -1737,19 +1737,19 @@ "audit": "Audit", "a2a": "A2A", "mcp": "MCP", - "batch": "Batch", + "batch": "Stapelverarbeitung", "files": "Dateien", "media": "Medien", "cache": "Cache", - "changelog": "Changelog", + "changelog": "Änderungsprotokoll", "chaos": "Chaos", "cloudAgents": "Cloud-Agenten", "live": "Live", "studio": "Studio", "aggressive": "Aggressiv", - "caveman": "Caveman", + "caveman": "Höhlenmensch", "ccr": "CCR", - "headroom": "Headroom", + "headroom": "Spielraum", "lite": "Lite", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", @@ -1759,12 +1759,12 @@ "budget": "Budget", "pricing": "Preise", "quotaShare": "Kontingentanteil", - "discovery": "Discovery", + "discovery": "Erkennung", "freeProviderRankings": "Rangliste kostenloser Anbieter", "radar": "Radar", - "setup": "Setup", + "setup": "Einrichtung", "freeTiers": "Kostenlose Tarife", - "gamification": "Gamification", + "gamification": "Gamifizierung", "leaderboard": "Bestenliste", "limits": "Limits", "profile": "Profil", @@ -1776,8 +1776,8 @@ "searchTools": "Such-Tools", "security": "Sicherheit", "sidebar": "Seitenleiste", - "tokens": "Tokens", - "tools": "Tools", + "tokens": "Token", + "tools": "Werkzeuge", "agentBridge": "Agent-Bridge", "trafficInspector": "Traffic-Inspektor", "usage": "Nutzung", @@ -1888,15 +1888,15 @@ "releaseNotes": "Versionshinweise", "readMore": "Mehr Lesen", "noAuthLabel": "Keine Authentifizierung", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Bereit zum Routing", + "readinessTitle": "Sende deine erste Anfrage", + "readinessSubtitle": "Vier kleine Schritte. OmniRoute prüft dabei fortlaufend die Bereitschaft.", + "readinessStep1": "Anbieter verbinden", + "readinessStep2": "Endpunktauthentifizierung konfigurieren", + "readinessStep3": "Endpunkt kopieren", + "readinessStep4": "Testanfrage senden", + "readinessContinue": "Einrichtung fortsetzen", + "readinessDismiss": "Vorerst ausblenden" }, "analytics": { "title": "Analytik", @@ -1958,7 +1958,7 @@ "rangeLast14Days": "Letzte 14 Tage", "rangeThisMonth": "Dieser Monat", "rangeQuickSelect": "Schnellauswahl", - "rangeStart": "Start", + "rangeStart": "Starten", "rangeEnd": "Ende", "rangeCancel": "Abbrechen", "rangeApply": "Anwenden", @@ -1967,7 +1967,7 @@ "period7D": "7T", "period30D": "30T", "period90D": "90T", - "periodYTD": "YTD", + "periodYTD": "Seit Jahresbeginn", "periodAll": "Alle", "totalTokens": "Tokens gesamt", "inputTokens": "Input-Tokens", @@ -1978,7 +1978,7 @@ "infraProviders": "Provider", "infraApiKeys": "API-Schlüssel", "infraModels": "Modelle", - "perfTitle": "Performance", + "perfTitle": "Leistung", "perfAvgTokens": "Durchschn. Tokens/Anfrage", "perfCostReq": "Kosten/Anfrage", "perfIoRatio": "I/O-Verhältnis", @@ -2005,8 +2005,8 @@ "modelStatusError": "Fehler", "comboHealth": "Combo-Gesundheit", "comboHealthDescription": "Combo-level Kontingent, Nutzungsverteilung und Leistungsmetriken", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Komprimierungsanalyse", + "compressionAnalyticsDescription": "Komprimierungsanalyse – Token-Einsparungen, Modusaufschlüsselung und Anbieterstatistiken.", "autoRoutingTotalAutoRequests": "Gesamtzahl der automatischen Anfragen", "autoRoutingAvgSelectionScore": "Durchschnittlicher Auswahlwert", "autoRoutingExplorationRate": "Explorationsrate", @@ -2039,10 +2039,10 @@ "comboHealthWorstProjectedQuota": "Schlechtestes prognostiziertes Kontingent", "comboHealthNoDepletionEstimate": "Keine Erschöpfungsschätzung", "comboHealthDaysToExhaust": "{days}d bis zur Erschöpfung", - "comboHealthTraffic": "traffic", + "comboHealthTraffic": "Datenverkehr", "comboHealthProjectedQuota": "Prognostiziertes Kontingent", "comboHealthPricingCoverage": "Preisabdeckung", - "comboHealthAutopilotTitle": "Combo Health Autopilot", + "comboHealthAutopilotTitle": "Autopilot für den Combo-Zustand", "comboHealthAutopilotDescription": "Priorisierte Empfehlungen aus Combo-Health, Prognosen, Kontingenten und Anbieter-Health.", "comboHealthIssues": "Probleme", "comboHealthActionable": "{count} handlungsrelevant", @@ -2062,7 +2062,7 @@ "latencyInv": "Latenz", "taskFit": "Task-Fit", "stability": "Stabilität", - "tierPriority": "Tier", + "tierPriority": "Stufe", "tierAffinity": "Tier-Fit", "specificityMatch": "Spezifität", "contextAffinity": "Kontext", @@ -2089,7 +2089,7 @@ }, "comboHealthUsageSkewDescription": "Modell-Anfrageanteil und Token-Anteil innerhalb dieser Combo.", "comboHealthShareSummary": "Anfrageanteil {requests} · Token-Anteil {tokens}", - "comboHealthPerformance": "Performance", + "comboHealthPerformance": "Leistung", "comboHealthPerformanceDescription": "Zuverlässigkeit und Durchsatz für weitergeleiteten Combo-Datenverkehr.", "comboHealthExecutionTargetsDescription": "Laufzeitmetriken auf Schrittebene und Kontingentsichtbarkeit für strukturierte Combo-Ziele.", "comboHealthRequestShort": "{count} Anfr.", @@ -2207,7 +2207,7 @@ "model": "Modell", "account": "Konto", "connection": "Verbindung", - "combo": "Combo", + "combo": "Kombination", "routeStep": "Schritt", "tokens": "Token", "notAvailable": "n. v.", @@ -2258,9 +2258,9 @@ "fullAccess": "Voller Zugriff", "keyManagement": "API-Schlüsselverwaltung", "keyManagementDesc": "Erstellen und verwalten Sie API-Schlüssel zur Authentifizierung von Anfragen an Ihren Endpunkt", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Ihre App sendet Anfragen über einen API-Schlüssel an OmniRoute", + "requestFlowYourApp": "Ihre App", + "requestFlowApiKey": "API-Schlüssel", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Gesamtschlüssel", "restricted": "Eingeschränkt", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Kopieren und speichern Sie diesen Schlüssel jetzt – er wird nicht mehr angezeigt.", "done": "Fertig", "savePermissions": "Berechtigungen speichern", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Zulässige Endpunkte", + "allEndpointsAllowed": "Dieser Schlüssel kann auf alle API-Endpunkte zugreifen.", + "endpointsRestricted": "Auf {count} {count, plural, one {Endpunkt} other {Endpunkte}} beschränkt.", + "autoResolve": "Automatische Auflösung", + "autoResolveDesc": "Mehrdeutige Modellnamen für diesen API-Schlüssel automatisch dem nativen Anbieter zuordnen.", "streamDefaultMode": "Stream-Standardverhalten", "streamDefaultModeDesc": "Steuert fehlende `stream`-Angaben für diesen Schlüssel. Im JSON-Modus werden nicht-streamende Antworten zurückgegeben, außer der Client fordert SSE explizit an.", - "streamDefaultLegacy": "Legacy", + "streamDefaultLegacy": "Veraltet", "streamDefaultJson": "JSON-kompatibel", "streamDefaultBadge": "JSON-Standardstream", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Schlüssel aktiv", + "keyActiveDesc": "Diesen API-Schlüssel aktivieren oder deaktivieren. Deaktivierte Schlüssel werden sofort mit 403 abgelehnt.", + "accessSchedule": "Zugriffszeitplan", + "accessScheduleDesc": "Den Zugriff auf bestimmte Uhrzeiten und Wochentage beschränken.", + "scheduleFrom": "Von", + "scheduleUntil": "Bis", + "scheduleDays": "Tage", + "scheduleTimezone": "Zeitzone", + "scheduleTimezoneHint": "IANA-Zeitzonennamen verwenden, z. B. America/New_York, Europe/Berlin", + "scheduleActive": "Zeitplan", + "disabled": "Deaktiviert", + "daySun": "So.", + "dayMon": "Mo.", + "dayTue": "Di.", + "dayWed": "Mi.", + "dayThu": "Do.", + "dayFri": "Fr.", + "daySat": "Sa.", "allowAll": "Alle zulassen", "restrict": "Einschränken", "allowAllInfo": "Mit diesem Schlüssel kann auf alle verfügbaren Modelle zugegriffen werden.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Die Berechtigungen konnten nicht aktualisiert werden. Bitte versuchen Sie es erneut.", "unknownProvider": "unbekannt", "copyMaskedKey": "Maskierten Schlüssel kopieren", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Der vollständige Schlüssel ist nur bei der Erstellung verfügbar – kopieren Sie ihn direkt beim Erstellen", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# Gerät} other {# Geräte}}", "devicesTooltip": "{count, plural, one {# eindeutiges IP/User-Agent-Gerät, das mit diesem Schlüssel gesehen wurde (letzte 30 Min.)} other {# eindeutige IP/User-Agent-Geräte, die mit diesem Schlüssel gesehen wurden (letzte 30 Min.)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Zulässige Kombinationen", "allCombosAllowed": "Dieser Schlüssel kann jede Kombination verwenden.", "restrictedComboCount": "Beschränkt auf {count, plural, one {# Kombination} other {# Kombinationen}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# gespeicherter Eintrag ist} other {# gespeicherte Einträge sind}} nicht in dieser Kombinationsliste enthalten (zum Beispiel Routingregeln) und {count, plural, one {bleibt wie gespeichert erhalten} other {bleiben wie gespeichert erhalten}}.", + "preservedComboRuleHint": "Bleibt wie gespeichert erhalten. Dieser Eintrag ist keine Kombination aus der obigen Liste und kann daher nur über die API geändert werden.", "apiManagerCustomRateLimits": "Benutzerdefinierte Tariflimits", "apiManagerCustomRateLimitsDesc": "Überschreiben Sie globale Standardgrenzen. Lassen Sie das Feld leer, um die Standardeinstellungen zu verwenden.", "apiManagerRateLimitRequestsPlaceholder": "Anfragen", @@ -2419,15 +2419,15 @@ "bypassProviderQuota": "Anbieter-Quota-Grenzwerte umgehen", "bypassProviderQuotaDescription": "Ermöglicht es diesem Schlüssel, die Cutoff-Richtlinie des Upstream-Anbieters/Kontos beim Routing zu ignorieren. API-Schlüssel-USD-Kontingente gelten weiterhin.", "quotaPill": "KONTINGENT", - "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "quotaModeOnly": "Nur qtSd", + "exclusiveLease": "Exklusive Reservierung", + "exclusiveLeaseNoticeTitle": "Exklusive Reservierung", + "exclusiveLeaseNoticeDesc": "Dieser API-Schlüssel verfügt über Berechtigungen zur exklusiven Reservierung für das Routing dedizierter Verbindungen.", + "allConnections": "Alle Verbindungen", + "onlySelectedConnections": "Nur ausgewählte Verbindungen", + "selectAtLeastOneConnection": "Wählen Sie mindestens eine Verbindung oder „Alle Verbindungen“ aus.", + "allConnectionsDesc": "Dieser Schlüssel kann jede aktive Verbindung verwenden.", + "restrictedToConnections": "Auf {count, plural, one {# Verbindung} other {# Verbindungen}} beschränkt." }, "auditLog": { "title": "Audit-Protokoll", @@ -2457,16 +2457,16 @@ "model": "Model", "prompt": "Prompt", "generate": "Generieren", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Wird generiert...", + "loadingModels": "Verfügbare Modelle werden geladen...", + "noModels": "Keine Modelle verfügbar. Konfigurieren Sie zuerst Anbieter mit Medienfunktionen.", + "error": "Generierung fehlgeschlagen", + "result": "Ergebnis", + "imageDescription": "Generieren Sie Bilder aus Text-Prompts mit OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI und weiteren Anbietern.", + "videoDescription": "Erstellen Sie Videos mit AnimateDiff oder Stable Video Diffusion über ComfyUI oder SD WebUI.", + "musicDescription": "Komponieren Sie Musik mit Stable Audio Open oder MusicGen über ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Einbettung", "image": "Bild", "imageToText": "Bild zu Text", "tts": "Text-to-Speech", @@ -2522,7 +2522,7 @@ "maskImage": "Maskenbild", "maskImageHint": "Optional. Wird von Inpaint-Modellen verwendet, die Masken unterstützen.", "text": "Text", - "promptOptional": "Prompt (optional)", + "promptOptional": "Eingabeaufforderung (optional)", "enhancementInstructionsPlaceholder": "Optionale Verbesserungsanweisungen...", "synthesizing": "Synthetisiere...", "transcribing": "Transkribiere...", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "Die OpenRouter-Spracherkennungsmodelle verwenden Ihre konfigurierte OpenRouter-Verbindung. Es sind keine separaten Anmeldeinformationen erforderlich." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Suchanfrage", + "searchResults": "Suchergebnisse", + "cachedResult": "Zwischengespeichert", + "searchCost": "Kosten", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Erweiterte Suchtests mit Anbietervergleich", + "compareProviders": "Anbieter vergleichen", + "rerankResults": "Ergebnisse neu bewerten", + "searchHistory": "Suchverlauf", + "urlOverlap": "URL-Überschneidung", + "noSearchProviders": "Keine Suchanbieter konfiguriert. Fügen Sie unter „Einstellungen“ Anbieter hinzu.", + "noRerankModels": "Kein Modell zur Neubewertung verfügbar", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Anbieter", + "searchType": "Suchtyp", + "maxResults": "Maximale Anzahl an Ergebnissen", + "filters": "Filter", + "country": "Land", + "language": "Sprache", + "timeRange": "Zeitraum", + "includeDomains": "Domains einschließen", + "excludeDomains": "Domains ausschließen", + "safeSearch": "Sichere Suche", + "safeSearchOff": "Aus", + "safeSearchModerate": "Moderat", + "safeSearchStrict": "Streng", + "queryPlaceholder": "Suchanfrage eingeben...", + "providerAuto": "automatisch (am günstigsten)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "Nachrichten", + "optionAny": "beliebig", + "timeRangeDay": "Letzter Tag", + "timeRangeWeek": "Letzte Woche", + "timeRangeMonth": "Letzter Monat", + "timeRangeYear": "Letztes Jahr", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Zeitüberschreitung der Anfrage ({seconds}s)", + "networkError": "Netzwerkfehler", + "formatted": "Formatiert", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "Cache-Fehltreffer", + "cacheHit": "Cache-Treffer", + "latency": "Latenz", + "cost": "Kosten", + "results": "Ergebnisse", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Reranking-Modell", + "positionDelta": "Positionsänderung", + "emptyState": "Sende eine Suchanfrage, um Ergebnisse anzuzeigen", "copy": "Kopieren", "resetToDefault": "Auf Standard zurücksetzen", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Suchen", + "tabScrape": "Extrahieren", + "tabCompare": "Vergleichen", + "modalitiesGuide": "Leitfaden zu Modalitäten", + "searchConceptTitle": "Suche", + "searchConceptDesc": "Suche = ruft eine Liste von Web-Ergebnissen ab (Titel, URL, Ausschnitt, Relevanzbewertung)", + "scrapeConceptTitle": "Extraktion", + "scrapeConceptDesc": "Extraktion = extrahiert den vollständigen Inhalt einer URL (Markdown, Text oder HTML)", + "compareConceptTitle": "Vergleich", + "compareConceptDesc": "Vergleich = führt dieselbe Anfrage bei N Anbietern parallel aus, um Latenz, Kosten und Ergebnisüberschneidungen zu vergleichen", + "rerankConceptTitle": "Reranking", + "rerankConceptDesc": "Reranking = ordnet Ergebnisse mithilfe eines LLM neu, um deren Relevanz basierend auf der Anfrage zu verbessern", + "autoConceptTitle": "Automatisch (am günstigsten)", + "autoConceptDesc": "Automatisch (am günstigsten) = wählt automatisch den günstigsten verfügbaren Anbieter mit konfigurierten Zugangsdaten aus", + "providerCatalogTitle": "Anbieterkatalog", + "kindSearch": "Suchen", + "kindFetch": "Abrufen/Scrapen", + "statusConfigured": "Konfiguriert", + "statusMissing": "Keine Zugangsdaten", + "statusRateLimited": "Ratenbegrenzung erreicht", + "configureProvider": "Unter „Anbieter“ konfigurieren", + "loadingProviders": "Anbieter werden geladen…", + "failedToLoadProviders": "Anbieter konnten nicht geladen werden", + "costPerQuery": "Kosten/Abfrage", + "freeQuota": "Kostenloses Kontingent/Monat", + "scrapeUrl": "Zu scrapende URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL ist erforderlich", - "scrapeUrlInvalid": "Invalid URL — it must start with http:// or https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", + "scrapeUrlInvalid": "Ungültige URL – sie muss mit http:// oder https:// beginnen", + "scrapeExtract": "Extrahieren", + "scrapeExtracting": "Wird extrahiert…", + "scrapeFullPage": "Gesamte Seite", "scrapeFormat": "Format", "formatMarkdown": "Markdown", "formatHtml": "HTML", "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "scrapePreview": "Vorschau", + "scrapeRaw": "Rohdaten", + "scrapeContentTruncated": "(gekürzt, Rohdaten anzeigen)", + "scrapeMetadata": "Metadaten", + "scrapeProvider": "Anbieter", + "scrapeSize": "Größe", "scrapeEmptyState": "Geben Sie eine URL ein, um deren Inhalt zu extrahieren", "scrapeProvidersAvailable": "Verfügbare Anbieter: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Vergleichen", + "compareRunning": "Wird verglichen…", + "autoProvider": "Automatisch (günstigster Anbieter)", + "configuredStatus": "Konfiguriert", + "rateLimitedStatus": "Ratenbegrenzung erreicht", + "noCredential": "Keine Zugangsdaten", + "searchTypeLabel": "Typ", + "rerankModelLabel": "Reranking-Modell", + "noneOption": "Keines", + "size": "Größe", "configurationPane": "Konfigurationsbereich", "configuration": "Konfiguration", "status": "Status", @@ -2684,7 +2684,7 @@ "webFetch": "Web-Abruf", "webSearchSample": "Was ist das OmniRoute AI-Gateway?", "noActiveProviderDescription": "Kein aktiver Suchanbieter. Konfigurieren Sie einen unter „Anbieter“.", - "configureProviders": "Configure providers", + "configureProviders": "Anbieter konfigurieren", "compareQuery": "Abfrage zum Vergleichen", "compareQueryPlaceholder": "Trends der künstlichen Intelligenz 2026", "selectedProviders": "Anbieter ({count} ausgewählt):", @@ -2708,7 +2708,7 @@ "classifierCompatLoadFailed": "Einstellung konnte nicht geladen werden", "classifierCompatMode": { "off": "Aus", - "auto": "Auto", + "auto": "Automatisch", "always": "Immer" }, "ccDiscoveryInfoButton": "Wie man die Entdeckung in Claude Code aktiviert", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Hinzufügen", "antigravityStep2Suffix": "zu Ihrer Hosts-Datei als 127.0.0.1 hinzufügen.", "antigravityStep3": "3. Öffnen Sie Antigravity und Anfragen werden weitergeleitet.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} sendet Anfragen an seinen Anbieter-Endpunkt. MITM fängt sie ab und leitet sie an OmniRoute weiter.", + "mitmStep1": "1. Starten Sie MITM, um Anfragen über OmniRoute zu leiten.", + "mitmStep2Prefix": "2. Fügen Sie", + "mitmStep2Suffix": "als 127.0.0.1 zu Ihrer Hosts-Datei hinzu.", + "mitmStep3": "3. Öffnen Sie {toolName}; die Anfragen werden dann über den Proxy weitergeleitet.", "sudoPasswordRequiredTitle": "Sudo-Passwort erforderlich", "sudoPasswordHint": "Zum Ändern der Hosts-Datei und der System-Proxy-Einstellungen ist ein Administratorkennwort erforderlich.", "enterSudoPassword": "Geben Sie das Sudo-Passwort ein", @@ -2856,7 +2856,7 @@ "apply": "Bewerben", "reset": "Zurücksetzen", "manualConfig": "Manuelle Konfiguration", - "backups": "Backups", + "backups": "Sicherungen", "configBackups": "Backups konfigurieren", "noBackupsYet": "Noch keine Backups. Vor jedem Anwenden oder Zurücksetzen werden automatisch Sicherungen erstellt.", "restore": "Wiederherstellen", @@ -2869,7 +2869,7 @@ "provider": "Anbieter", "model": "Modell", "providers": "Anbieter", - "auth": "Auth", + "auth": "Authentifizierung", "noApiKeysAvailable": "Keine API-Schlüssel verfügbar", "usingDefaultOmniroute": "Standardmäßig wird verwendet: sk_omniroute", "updateConfig": "Konfiguration aktualisieren", @@ -2908,7 +2908,7 @@ "continue": "Verwenden Sie diese Option, wenn Sie Continue in IDEs ausführen und eine portable JSON-basierte Anbieterkonfiguration benötigen.", "opencode": "Verwenden Sie diese Option, wenn Sie terminalnative Agentenausführungen und Skriptautomatisierung über OpenCode bevorzugen.", "kiro": "Zur Verwendung bei der Integration von Kiro und der zentralen Steuerung des Modellroutings über OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Verwenden Sie dies, wenn Sie eine KI-orientierte IDE nutzen möchten, deren Codeium/Windsurf-Modelle über OmniRoute geleitet werden.", "antigravity": "Wird verwendet, wenn Antigravity/Kiro-Verkehr über MITM abgefangen und an OmniRoute weitergeleitet werden muss.", "copilot": "Verwenden Sie diese Option, wenn Sie eine UX im Copilot-Chat-Stil wünschen und gleichzeitig OmniRoute-Schlüssel und Routing-Regeln durchsetzen möchten.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2923,17 +2923,17 @@ "grok-build": "xAI Grok Build TUI-Coding-Agent mit Unterstützung für benutzerdefinierte Anbieter", "droid": "Fabrik-Droiden-KI-Assistent", "openclaw": "Öffnen Sie den Klauen-KI-Assistenten", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "cline": "Cline KI-Programmierassistent-CLI", + "kilo": "Kilo Code KI-Assistent-CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor-KI-Code-Editor", "continue": "Weiter AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode KI-Programmieragent (Terminal)", + "kiro": "Amazon Kiro — KI-gestützte IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp Programmierassistent-CLI", + "hermes": "Hermes KI-Terminalassistent", "hermes-agent": "Hermes Agent (von Nousresearch) - Fortschrittliche Terminal-KI mit Multi-Modell-Unterstützung (Delegation, Vision, Komprimierung etc.)", "custom": "Allgemeiner OpenAI-kompatibler CLI- oder SDK-Konfigurationsgenerator", "aider": "Aider AI Pair-Programming-CLI mit einer OpenAI-kompatiblen Basis-URL", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter CLI für autonome Coding-Agenten", "omp": "Oh My Pi Terminal-Coding-Agent", "letta": "Letta CLI-Agent mit persistentem Speicher und Tool-Nutzung", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — selbstoptimierendes RLM-Programmier-Framework mit Unterstützung für OpenAI-kompatible Anbieter", "warp": "Warp AI-Terminal mit Unterstützung für benutzerdefinierte Anbieter", "agent-deck": "Agent Deck Multi-Agenten-Orchestrator", "5dive": "5dive — selbst gehostete Flotte von Coding-Agenten; ein Auth-Profil richtet sie alle auf OmniRoute aus" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCode installieren", + "desc": "Über npm installieren: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API-Schlüssel" }, "3": { - "title": "Set Base URL", + "title": "Basis-URL festlegen", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Modell auswählen" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Thinking-Variante verwenden", + "desc": "Führen Sie Thinking-Modelle mit --variant high/low/max aus (Beispielbefehl unten)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro-Einstellungen öffnen", + "desc": "Gehen Sie zu Einstellungen → KI-Anbieter" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Basis-URL", + "desc": "Fügen Sie die URL Ihres OmniRoute-Endpunkts ein" }, "3": { - "title": "API Key" + "title": "API-Schlüssel" }, "4": { - "title": "Select Model" + "title": "Modell auswählen" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "KI-Einstellungen öffnen", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Benutzerdefinierten Anbieter hinzufügen", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Basis-URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API-Schlüssel", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Modell auswählen", + "desc": "Wählen Sie ein Modell aus dem Dropdown-Menü aus" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Benutzerdefinierte CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Tool-Kategorien", "visibleToolsCount": "{count} Tools verfügbar", "customCliBuilderTitle": "OpenAI-kompatibler CLI-Builder", "customCliBuilderDescription": "Generieren Sie Umgebungsvariablen und JSON-Snippets für jede CLI oder jedes SDK, das eine OpenAI-kompatible Basis-URL, einen API-Schlüssel und eine Modell-ID akzeptiert.", @@ -3112,7 +3112,7 @@ "hermesRoleDefaultDesc": "Primäres Konversationsmodell", "hermesRoleDelegation": "Delegation (Subagenten)", "hermesRoleDelegationDesc": "Orchestrator- und Subagenten-Modell", - "hermesRoleVision": "Vision", + "hermesRoleVision": "Bildverarbeitung", "hermesRoleVisionDesc": "Bild- und Screenshot-Verständnis", "hermesRoleCompression": "Komprimierung", "hermesRoleCompressionDesc": "Prompt-Komprimierung und -Zusammenfassung", @@ -3140,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Zielvervollständigung bewerten", "hermesRoleCurator": "Kurator", "hermesRoleCuratorDesc": "Fähigkeiten- und Gedächtnis-Kuration", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Überwachung", "hermesRoleMonitorDesc": "Hintergrundüberwachung", "hermesRoleBackgroundReview": "Hintergrundüberprüfung", "hermesRoleBackgroundReviewDesc": "Hintergrund-Codeüberprüfung", @@ -3168,7 +3168,7 @@ "selectAll": "Alle auswählen", "loadingModels": "Modelle werden geladen...", "advancedOptions": "Erweiterte Optionen", - "vision": "Vision", + "vision": "Bildanalyse", "copilotCopyConfigForModels": "Konfiguration kopieren ({count, plural, one {# Modell} other {# Modelle}})", "copilotFilterModelsPlaceholder": "Modelle filtern...", "copilotMaxInputTokens": "Max. Eingabe-Tokens", @@ -3189,13 +3189,13 @@ "cliproxyapiPort": "Port", "cliproxyapiRequestFailed": "Anfrage fehlgeschlagen", "cliproxyapiRestart": "Neustarten", - "cliproxyapiStart": "Start", + "cliproxyapiStart": "Starten", "cliproxyapiStatusError": "Fehler", "cliproxyapiStatusInstalled": "Installiert", "cliproxyapiStatusNotInstalled": "Nicht Installiert", "cliproxyapiStatusRunning": "Läuft", "cliproxyapiStatusStopped": "Gestoppt", - "cliproxyapiStop": "Stop", + "cliproxyapiStop": "Stoppen", "cliproxyapiUnhealthy": "Ungesund", "cliproxyapiUnknown": "Unbekannt", "cliproxyapiUpdate": "Aktualisieren", @@ -3219,7 +3219,7 @@ "addModelToCombo": "Modell zur Combo hinzufügen", "routingStrategy": "Routing-Strategie", "maxRetries": "Max. Wiederholungsversuche", - "timeout": "Timeout (ms)", + "timeout": "Zeitüberschreitung (ms)", "healthcheck": "Gesundheitscheck", "priority": "Priorität", "fallback": "Rückfall", @@ -3260,18 +3260,18 @@ "priorityDesc": "Sequentielles Fallback: Versucht zuerst Modell 1, dann 2 usw.", "weightedDesc": "Verteilt den Datenverkehr nach Gewichtsprozentsatz mit Fallback", "roundRobinDesc": "Zirkuläre Verteilung: Jede Anfrage wird abwechselnd an das nächste Modell weitergeleitet", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Kontextweitergabe", + "contextRelayDesc": "Bewahrt die Sitzungskontinuität durch Übergabezusammenfassungen, wenn Konten gewechselt werden", "randomDesc": "Einheitliche Zufallsauswahl, dann Rückgriff auf verbleibende Modelle", "leastUsedDesc": "Wählt das Modell mit den wenigsten Anfragen aus und gleicht die Last über die Zeit aus", "costOptimizedDesc": "Leitet basierend auf dem Preis zuerst zum günstigsten Modell weiter", "cacheOptimizedDesc": "Leitet jeden wiederverwendbaren Prompt-Präfix konsistent zum selben Provider-Konto", - "resetAware": "Reset-Aware RR", + "resetAware": "Zurücksetzungsbewusstes RR", "resetAwareDesc": "Gewichtet Restquote gegen 5h- und Wochen-Resets und rotiert ähnliche Scores per Round Robin", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kontingentgewichtet", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Strikt zufällig", + "strictRandomDesc": "Mischverfahren – verwendet jedes Modell einmal, bevor neu gemischt wird", "fusion": "Fusion", "fusionDesc": "Verteilt den Prompt parallel an jedes Panel-Modell, anschließend fasst ein Judge-Modell die Antworten zu einer finalen Antwort zusammen", "fusionJudgeModel": "Judge-Modell", @@ -3288,13 +3288,13 @@ "retryDelay": "Wiederholungsverzögerung (ms)", "concurrencyPerModel": "Parallelität / Modell", "queueTimeout": "Warteschlangen-Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Übergabeschwellenwert", + "contextRelayHandoffThresholdHelp": "Wenn die Kontingentnutzung diesen Schwellenwert erreicht, erstellt OmniRoute eine strukturierte Übergabezusammenfassung, bevor das aktive Konto ausgeschöpft ist.", + "contextRelayMaxMessages": "Maximale Nachrichtenanzahl für die Zusammenfassung", + "contextRelayMaxMessagesHelp": "Begrenzt, wie viel des jüngsten Verlaufs in der Weitergabezusammenfassung verdichtet wird.", + "contextRelaySummaryModel": "Zusammenfassungsmodell", + "contextRelaySummaryModelHelp": "Optionales Überschreibungsmodell, das nur zum Erstellen der Übergabezusammenfassung verwendet wird. Leer lassen, um das aktive Kombinationsmodell erneut zu verwenden.", + "contextRelayProviderNote": "Die Kontextweitergabe erstellt derzeit Übergaben für die Codex-Kontorotation. Kombinieren Sie sie für bestmögliche Kontinuität mit mehreren Konten desselben Anbieters.", "advancedHint": "Lassen Sie das Feld leer, um globale Standardeinstellungen zu verwenden. Diese überschreiben die Einstellungen pro Anbieter.", "failoverBeforeRetry": "Failover vor erneutem Versuch", "maxSetRetries": "Max. Set-Wiederholungen", @@ -3335,7 +3335,7 @@ "playgroundStrategy": "Strategie", "playgroundEstimatedCost": "Gesch. Kosten", "playgroundEstimatedLatency": "Gesch. Latenz", - "playgroundFallback": "fallback", + "playgroundFallback": "Fallback", "playgroundWeight": "gewichtung {value}", "playgroundWarningCount": "Warnungen ({count})", "playgroundErrorCount": "Fehler ({count})", @@ -3386,19 +3386,19 @@ "example": "Bevorzuge ein Konto mit 60 % Wochen-Restquote und Reset morgen vor 80 % mit späterem Reset." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Verwenden Sie diese Option, wenn Sie eine vollkommen gleichmäßige Verteilung wünschen – jedes Modell wird einmal verwendet, bevor es erneut ausgewählt wird.", + "avoid": "Vermeiden Sie diese Option, wenn sich Modelle hinsichtlich Qualität oder Latenz unterscheiden und die Reihenfolge wichtig ist.", + "example": "Beispiel: Mehrere Konten desselben Modells, um die Nutzung gleichmäßig zu verteilen." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Verwenden Sie diese Option, wenn Sie eine Auswahl mit niedriger Latenz mithilfe des Power-of-Two-Choices-Algorithmus wünschen.", + "avoid": "Vermeiden Sie diese Option bei kleinen Kombinationen mit höchstens 2 Modellen – sie bietet keinen Vorteil gegenüber Round-Robin.", + "example": "Beispiel: Inferenz mit hohem Durchsatz über 4 oder mehr gleichwertige Modellendpunkte hinweg." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Verwenden Sie diese Option, wenn lange Sitzungen einen Kontowechsel überstehen müssen, ohne den Arbeitskontext zu verlieren.", + "avoid": "Vermeiden Sie diese Option, wenn Konten nur selten gewechselt werden oder Sie keine zusätzlichen Zusammenfassungsanfragen wünschen.", + "example": "Beispiel: Codex-Sitzungen, die bei nahezu ausgeschöpftem Kontingent zwischen mehreren Konten wechseln." }, "fill-first": { "when": "Verwenden Sie diese Option, wenn Sie das Kontingent eines Anbieters vollständig ausschöpfen möchten, bevor Sie zum nächsten wechseln.", @@ -3423,24 +3423,24 @@ }, "advancedHelp": { "maxRetries": "Wie viele Wiederholungsversuche werden unternommen, bevor eine Anfrage fehlschlägt.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "retryDelay": "Anfängliche Wartezeit zwischen Wiederholungsversuchen. Höhere Werte reduzieren die Last durch Anfragespitzen.", + "timeout": "Maximale Anfragedauer, bevor die Anfrage abgebrochen wird.", + "healthcheck": "Schließt fehlerhafte Modelle/Anbieter von Routing-Entscheidungen aus.", + "concurrencyPerModel": "Maximale Anzahl gleichzeitiger Anfragen pro Modell bei Round-Robin.", + "queueTimeout": "Wie lange eine Anfrage in der Warteschlange verbleiben darf, bevor eine Zeitüberschreitung auftritt.", "failoverBeforeRetry": "Wenn diese Option aktiviert ist, löst jeder Upstream-Fehler ein sofortiges Failover zum nächsten Kombinationsziel aus, wobei alle Wiederholungsversuche und Fallback-URLs übersprungen werden.", "maxSetRetries": "Anzahl der Wiederholungsversuche mit dem vollständigen Zielsatz, wenn jedes Ziel fehlschlägt. 0 = kein Wiederholungsversuch auf festgelegter Ebene.", "setRetryDelayMs": "Verzögerung zwischen Wiederholungsversuchen auf Satzebene, sodass vorübergehende Probleme Zeit zur Lösung haben.", "disableSessionStickiness": "Bei jeder Anfrage zu einer anderen Verbindung wechseln, anstatt eine gesamte Konversation anhand des Hashs der ersten Nachricht an eine Verbindung zu binden. Überschreibt den globalen Standardwert. Auf „Inherit“ belassen, um Prompt-Cache-Treffer für Multi-Turn-Chats beizubehalten." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", + "templatesTitle": "Schnellvorlagen", + "templatesDescription": "Wenden Sie ein Ausgangsprofil an und passen Sie anschließend Modelle und Konfiguration an.", + "templateApply": "Vorlage anwenden", + "templateHighAvailability": "Hohe Verfügbarkeit", + "templateHighAvailabilityDesc": "Prioritätsrouting mit Zustandsprüfungen und sicheren Wiederholungsversuchen.", + "templateCostSaver": "Kostensparend", + "templateCostSaverDesc": "Kostenoptimiertes Routing für Workloads mit vorrangigem Budgetfokus.", + "templateBalanced": "Ausgewogene Last", "templateBalancedDesc": "Am wenigsten genutztes Routing, um die Nachfrage über einen längeren Zeitraum zu verteilen.", "usageGuideHide": "Verstecken", "usageGuideDontShowAgain": "Nicht mehr anzeigen", @@ -3459,12 +3459,12 @@ "warningRoundRobinSingleModel": "Round-Robin ist bei mindestens zwei Modellen am nützlichsten.", "warningCostOptimizedPartialPricing": "Nur {priced} der {total} Modelle haben Preise. Die Routenplanung kann teilweise kostenbewusst erfolgen.", "warningCostOptimizedNoPricing": "Für diese Kombination wurden keine Preisdaten gefunden. Eine kostenoptimierte Route kann unerwartet erfolgen.", - "filterAll": "All", + "filterAll": "Alle", "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterDeterministic": "Deterministisch", + "filterEmptyTitle": "Keine Kombinationen entsprechen diesem Strategiefilter.", + "filterEmptyIntelligentDescription": "Erstellen Sie eine Auto- oder LKGP-Kombination, um das Dashboard für intelligentes Routing mit Daten zu füllen.", + "filterEmptyDeterministicDescription": "Derzeit gibt es nur Auto- und LKGP-Kombinationen. Wechseln Sie zurück zu „Alle“ oder erstellen Sie eine deterministische Kombination.", "readinessTitle": "Bereit zum Speichern?", "readinessDescription": "Prüfe die Checkliste, bevor du dieses Combo erstellst oder aktualisierst.", "readinessCheckName": "Der Combo-Name ist gültig", @@ -3482,8 +3482,8 @@ "applyRecommendations": "Empfehlungen anwenden", "recommendationsUpdated": "Empfehlungen für {strategy} aktualisiert.", "recommendationsApplied": "Empfehlungen für dieses Combo wurden angewendet.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "intelligentPanelTitle": "Dashboard für intelligentes Routing", + "intelligentPanelDesc": "Echtzeitbewertung und Integritätsstatus für diese Auto-Routing-Kombination.", "configOnlyStatus": "Konfigurationsansicht", "configOnlyHint": "Dieses Panel zeigt nur Routing-Eingaben an. Der Live-Breaker-Status ist auf der Health-Seite verfügbar.", "routingInputs": "Routing-Eingaben", @@ -3505,47 +3505,47 @@ "manualModelUnknownProvider": "Unbekanntes Provider-Präfix.", "builderDynamicAccountShort": "Dynamisches Konto", "builderNeedValidName": "Definieren Sie einen gültigen Combo-Namen, bevor Sie fortfahren.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Statusübersicht", + "normalOperation": "Normalbetrieb", + "allProvidersHealthy": "Die Anbieter melden einwandfreie Routing-Bedingungen.", + "incidentMode": "Störungsmodus", + "highCircuitBreakerRate": "Hohe Auslösungsrate des Circuit Breakers erkannt.", + "activeModePack": "Aktives Moduspaket", + "modePackUpdated": "Moduspaket auf {pack} aktualisiert.", + "modePackHint": "Wechseln Sie die Voreinstellungen, um die Routing-Engine gezielt zu beeinflussen, ohne die Kombination neu zu erstellen.", + "providerScores": "Anbieterbewertungen", + "allProvidersEvaluated": "Kein Kandidatenpool konfiguriert. Alle aktiven Anbieter werden zur Laufzeit ausgewertet.", + "excludedProviders": "Ausgeschlossene Anbieter", + "excludedProvidersHint": "Anbieter mit einem OFFENEN Circuit Breaker werden vorübergehend vom Routing ausgeschlossen.", + "noExcludedProviders": "Derzeit sind keine Anbieter ausgeschlossen.", + "cooldownMinutes": "Abklingzeit: {minutes} Min.", + "builderIntelligentTitle": "Konfiguration des intelligenten Routings", + "builderIntelligentDesc": "Konfigurieren Sie die Multifaktor-Bewertungs-Engine für diese Auto-Routing-Kombination.", + "candidatePoolLabel": "Kandidatenpool", + "candidatePoolHint": "Wählen Sie aus, welche Anbieter diese Engine auswerten soll. Lassen Sie das Feld leer, um alle aktiven Anbieter zu verwenden.", + "candidatePoolEmpty": "Noch keine aktiven Anbieter verfügbar.", + "candidatePoolAllProviders": "Alle Anbieter", + "modePackLabel": "Moduspaket", + "routerStrategyLabel": "Router-Strategie", + "strategyRules": "Regeln (6-Faktor-Bewertung)", + "explorationRateLabel": "Explorationsrate", + "explorationRateHint": "{percent} % der Anfragen können nicht optimale Anbieter testen.", + "budgetCapLabel": "Budgetobergrenze (USD/Anfrage)", + "budgetCapPlaceholder": "Kein Limit", + "advancedWeightsTitle": "Erweitert: Bewertungsgewichtungen", "nestedComboFlatten": "Verschachtelte Combos auflösen", "nestedComboExecute": "Verschachtelte Combos als Ziele ausführen", "effectiveRoutingShare": "Effektiver Routing-Anteil (Gewichtung ÷ Gesamt)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", + "weightQuota": "Kontingent", + "weightHealth": "Zustand", + "weightCostInv": "Kosten", + "weightLatencyInv": "Latenz", + "weightTaskFit": "Aufgabeneignung", + "weightStability": "Stabilität", + "weightTierPriority": "Stufe", "weightCacheAffinity": "Cache-Treffer-Affinität", "weightSessionAvailability": "Session-Verfügbarkeit", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Konfiguration des intelligenten Routings", "strategyRecommendations": { "priority": { "title": "Ausfallsichere Basis", @@ -3597,11 +3597,11 @@ "tip3": "Halte das Tie-Band klein, damit gleichwertige Konten fair rotieren." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Verteilung per gemischtem Stapel", + "description": "Jedes Modell wird pro Zyklus genau einmal verwendet, bevor neu gemischt wird.", + "tip1": "Verwenden Sie mindestens 2 Modelle für eine sinnvolle Verteilung.", + "tip2": "Funktioniert am besten mit Modellen vergleichbarer Leistung.", + "tip3": "Ideal für den Lastenausgleich über mehrere API-Konten hinweg." }, "fill-first": { "description": "Erschöpfen Sie die Anbieterquoten nacheinander, bevor Sie zurückfallen.", @@ -3646,86 +3646,86 @@ "title": "Macht der zwei Möglichkeiten" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Kostenloser Stack (0 $)", + "templateFreeStackDesc": "Round-Robin über alle kostenlosen Anbieter: Kiro (Claude), Qoder (5 Modelle), Qwen (4 Modelle). Kostenlos, programmiert ohne Unterbrechung.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP-Modus", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Erste Schritte mit Combos", + "wizardGuideDesc": "Erstellen Sie Modell-Combos, um KI-Datenverkehr intelligent weiterzuleiten", + "wizardGuideHint": "oder klicken Sie oben auf „+ Combo erstellen“", + "createFirstCombo": "Erstellen Sie Ihre erste Combo", + "wizardStep1Title": "Benennen Sie Ihre Combo", + "wizardStep1Desc": "Geben Sie Ihrer Combo einen eindeutigen Namen, um sie in Routing-Regeln zu identifizieren", + "wizardStep2Title": "Modelle hinzufügen", + "wizardStep2Desc": "Wählen Sie KI-Modelle aus und legen Sie deren Fallback-Prioritätsreihenfolge fest", + "wizardStep3Title": "Strategie auswählen", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Überprüfen und speichern", + "wizardStep4Desc": "Überprüfen Sie Ihre Konfiguration und aktivieren Sie die Combo", + "usageGuideInvokeTitle": "So rufen Sie diese Combo auf", + "usageGuideInvokeDesc": "Senden Sie den exakten Namen der Combo als Modell, z. B. model: \"my-combo\" (oder combo/my-combo).", + "usageGuideInvokeAutoNote": "auto und auto/* sind ein separater konfigurationsfreier Router, der Ihre Combos nicht verwendet (es sei denn, eine Combo heißt tatsächlich auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto ist ein echtes kostenpflichtiges OpenRouter-Produkt (Auto Best Available) und kein OmniRoute-Alias – schließen Sie es über Einstellungen → Routing → Kostenpflichtige Modelle ausblenden aus.", + "emailVisibilityStateOn": "Ein", + "emailVisibilityStateOff": "Aus", + "reorderHandle": "Zum Neuanordnen ziehen", + "failedReorder": "Modelle konnten nicht neu angeordnet werden", + "builderFlowTitle": "Ablauf des Combo-Builders", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Grundlagen", + "description": "Name und Ausgangsvorlage" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Schritte", + "description": "Auswahl von Anbieter, Modell und Konto" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategie", + "description": "Routing-Verhalten und erweiterte Einstellungen" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Intelligentes Routing", + "description": "Kandidatenpool für automatisches Routing, Voreinstellungen und Bewertung" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Überprüfen", + "description": "Abschließende Validierung vor dem Speichern" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Phase abgeschlossen", + "builderStageCurrent": "Aktuelle Phase", + "builderStagePending": "Ausstehend", + "builderStageLocked": "Gesperrt — zuerst vorherige Phase abschließen", + "builderTitle": "Kombination erstellen", + "builderBrowseCatalog": "Katalog durchsuchen", + "builderProvider": "Anbieter", + "builderLoadingProviders": "Anbieter werden geladen...", + "builderSelectProvider": "Anbieter auswählen", + "builderModel": "Modell", + "builderSelectModel": "Modell auswählen", + "builderProviderFirst": "Zuerst Anbieter auswählen", + "builderAccount": "Konto", + "builderPreview": "Vorschau", + "builderAddStep": "Schritt hinzufügen", "builderDuplicateExact": "Dieser genaue Anbieter-/Modell-/Kontoschritt ist bereits in der Kombination enthalten.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", + "builderComboRef": "Kombinationsreferenz", + "builderAddComboRef": "Kombinationsreferenz hinzufügen", + "builderComboRefStep": "Kombinationsreferenz hinzufügen", + "builderPinnedAccount": "Angeheftetes Konto", + "builderLegacyEntry": "Legacy-Eintrag", "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "reviewStrategy": "Strategie", + "reviewSteps": "Schritte", + "reviewAccounts": "Konten", + "reviewProviders": "Anbieter", + "reviewComboRefs": "Kombinationsreferenzen", + "reviewAdvanced": "Erweiterte Einstellungen", + "reviewAgentFlags": "Agenten-Flags", + "reviewSequence": "Modellreihenfolge", + "reviewNoSteps": "Keine Schritte konfiguriert", "builderStagesDescription": "Schließen Sie jede Phase ab, um Kombinationen zu definieren, Schritte zu erstellen, eine Routing-Strategie auszuwählen und die Ergebnisse zu überprüfen.", "builderStepsDescription": "Erstellen Sie jeden Kombinationsschritt in der Reihenfolge: Anbieter, Modell, dann Konto. Dies ermöglicht die Wiederverwendung desselben Anbieters und Modells für verschiedene Konten.", "selectProvider": "Wählen Sie Anbieter aus", @@ -3800,27 +3800,27 @@ "range7d": "7 Tage", "range30d": "30 Tage", "range90d": "90 Tage", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 Tage", + "range365d": "365 Tage", "rangeAll": "Alle Zeit", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Aktive Modelle", + "flatRateEstimateNotice": "Enthält Schätzungen der Token-Preise für Pauschalabonnements, nicht die in Rechnung gestellten Kosten.", + "flatRateEstimateForecast": "Die Prognose enthält Pauschalpreisschätzungen.", + "selectedWindow": "Ausgewählter Zeitraum", + "activeProviders": "Aktive Anbieter", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Heutige Ausgaben", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Anbieteranteil", + "topProviders": "Top-Anbieter", + "costTrend": "Kostenentwicklung", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Top-Modelle", "requestsInWindow": "Requests In Window", "tokenUsage": "Token-Nutzung", "totalTokens": "Gesamtzahl der Token", @@ -3863,7 +3863,7 @@ "groupAccount": "Konto", "groupServiceTier": "Service-Stufe", "serviceTierFast": "Schnell", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Flexibel", "serviceTierStandard": "Standard", "serviceTierBreakdownTitle": "Service-Stufe", "serviceTierBreakdownSubtitle": "Schnell / Flex / Standard", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API-Endpunkt", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Verwenden Sie den OpenAI-kompatiblen Endpunkt mit den meisten SDKs und Tools.", + "testEndpoint": "Endpunkt testen →", + "advancedProtocols": "Erweiterte Protokolle", "available": "Verfügbare Endpunkte", "cloudProxy": "Cloud-Proxy", "disableConfirm": "Sind Sie sicher, dass Sie den Cloud-Proxy deaktivieren möchten?", @@ -3900,7 +3900,7 @@ "disableCloud": "Cloud deaktivieren", "enableCloud": "Cloud aktivieren", "modelsAcrossEndpoints": "{models} Modelle über {endpoints} Endpunkte hinweg", - "loadingModels": "Loading available models...", + "loadingModels": "Verfügbare Modelle werden geladen...", "chatDesc": "Streaming- und Nicht-Streaming-Chat mit allen Anbietern", "embeddings": "Einbettungen", "embeddingsDesc": "Texteinbettungen für Such- und RAG-Pipelines", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Audiodateien in Text umwandeln (Flüstern)", "textToSpeech": "Text-to-Speech", "textToSpeechDesc": "Wandeln Sie Text in natürlich klingende Sprache um", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Musikgenerierung", + "musicDesc": "Musik und Audiospuren über ComfyUI (Stable Audio, MusicGen) generieren", "moderations": "Moderationen", "moderationsDesc": "Inhaltsmoderation und Sicherheitsklassifizierung", "responsesDesc": "OpenAI Responses API für Codex und fortgeschrittene agentische Workflows", "listModelsDesc": "Alle verfügbaren Modelle aller verbundenen Anbieter auflisten", "settingsApiDesc": "OmniRoute-Konfiguration per API lesen und ändern", - "settingsApi": "Settings API", + "settingsApi": "Einstellungs-API", "categoryCore": "Kern-APIs", "categoryMedia": "Medien & Multi-Modal", - "categorySearch": "Search & Discovery", + "categorySearch": "Suche & Entdeckung", "categoryUtility": "Hilfsmittel & Verwaltung", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Websuche", + "webSearchDesc": "Einheitliche Websuche über mehrere Anbieter hinweg mit automatischem Failover und Caching", + "searchProvider": "Suchanbieter", + "searchProviderDesc": "Dieser Anbieter wird für die Websuche über POST /v1/search verwendet. Es ist keine Modellkonfiguration erforderlich — Suchanbieter sind einsatzbereit, sobald ein API-Schlüssel verbunden ist.", "enableCloudTitle": "Aktivieren Sie Cloud Proxy", "whatYouGet": "Was Sie bekommen werden", "cloudBenefitAccess": "Greifen Sie von überall auf der Welt auf Ihre API zu", @@ -3963,29 +3963,29 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Tunnel aktivieren", + "cloudflaredInstallAndEnable": "Installieren & aktivieren", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Wird ausgeführt", + "cloudflaredStarting": "Wird gestartet", + "cloudflaredStoppedState": "Gestoppt", + "cloudflaredNotInstalled": "Nicht installiert", + "cloudflaredUnsupported": "Nicht unterstützt", + "cloudflaredError": "Fehler", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Letzter Fehler: {error}", "providerModelsTitle": "{provider} – Modelle", "noModelsForProvider": "Für diesen Anbieter sind keine Modelle verfügbar.", "chat": "Chatten", "embedding": "Einbetten", "image": "Bild", "custom": "Brauch", - "modelsCount": "{count, plural, one {# model} other {# models}}", + "modelsCount": "{count, plural, one {# Modell} other {# Modelle}}", "sectionTitle": "Integrationsoberfläche", "sectionDescription": "OpenAI-kompatible APIs und Betriebsprotokoll-Endpunkte", "tabApis": "APIs", @@ -3999,7 +3999,7 @@ "a2aCardDescription": "Agent2Agent JSON-RPC-Endpunkt", "protocolToolsLabel": "Werkzeuge", "protocolTasksLabel": "Aufgaben", - "protocolActiveStreamsLabel": "Active streams", + "protocolActiveStreamsLabel": "Aktive Streams", "protocolLastActivity": "Letzte Aktivität", "quickStart": "Schnellstart", "openMcpDashboard": "Öffnen Sie die MCP-Verwaltung", @@ -4012,8 +4012,8 @@ "a2aQuickStartStep1": "Entdecken Sie die Agentenkarte unter `/.well-known/agent.json`.", "a2aQuickStartStep2": "Senden Sie JSON-RPC-Anfragen an `POST /a2a` mit `message/send` oder `message/stream`.", "a2aQuickStartStep3": "Verfolgen und steuern Sie Aufgaben mit `tasks/get` und `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Vervollständigungen (veraltet)", + "completionsLegacyDesc": "Veraltete OpenAI-Textvervollständigungen — akzeptiert sowohl eine Prompt-Zeichenfolge als auch das Nachrichtenarray-Format", "messagesApi": "Nachrichten", "messagesApiDesc": "Natives Anthropic Messages API-Format für Claude-kompatible Anbieter", "imageEdits": "Bildbearbeitung", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Große Anfragenmengen asynchron verarbeiten (OpenAI-kompatibel)", "filesApi": "Datei-API", "filesApiDesc": "Laden Sie Dateien für die Stapelverarbeitung hoch und verwalten Sie sie", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Videogenerierung", + "videoDesc": "Videos mit KI-Modellen wie ComfyUI und Stable Video Diffusion generieren.", + "tailscaleRequestFailed": "Tailscale-Status konnte nicht geladen werden", + "tailscaleEnableFailed": "Tailscale Funnel konnte nicht aktiviert werden", + "tailscaleWaitingForLogin": "Schließen Sie die Tailscale-Anmeldung im geöffneten Browser-Tab ab. OmniRoute versucht es automatisch erneut.", + "tailscaleLoginTimedOut": "Zeitüberschreitung beim Warten auf die Tailscale-Anmeldung", + "tailscaleWaitingForFunnel": "Aktivieren Sie Funnel für dieses Gerät im geöffneten Browser-Tab. OmniRoute fragt den Status weiterhin ab.", + "tailscaleFunnelTimedOut": "Zeitüberschreitung beim Warten auf die Aktivierung von Tailscale Funnel", + "tailscaleStarted": "Tailscale Funnel aktiviert", + "tailscaleDisableFailed": "Tailscale Funnel konnte nicht deaktiviert werden", + "tailscaleStopped": "Tailscale Funnel deaktiviert", + "tailscaleInstallFailed": "Tailscale konnte nicht installiert werden", + "tailscaleInstallProgress": "Wird ausgeführt...", + "tailscaleInstalled": "Tailscale wurde erfolgreich installiert", + "tailscaleRunning": "Wird ausgeführt", + "tailscaleNeedsLogin": "Anmeldung erforderlich", + "tailscaleStoppedState": "Angehalten", + "tailscaleNotInstalled": "Nicht installiert", + "tailscaleUnsupported": "Nicht unterstützt", + "tailscaleError": "Fehler", + "tailscaleDisable": "Funnel stoppen", + "tailscaleInstallAndEnable": "Installieren und aktivieren", + "tailscaleLoginAndEnable": "Anmelden und aktivieren", + "tailscaleEnable": "Funnel aktivieren", + "tailscaleUrlNotice": "Verwendet Ihre Tailscale-.ts.net-Adresse. Bei der ersten Verwendung sind möglicherweise eine Anmeldung und die Genehmigung von Funnel erforderlich.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Authentifizieren Sie diesen Rechner bei Tailscale und aktivieren Sie anschließend Funnel.", + "tailscaleBinaryPath": "Binärdatei: {path}", + "tailscaleLastError": "Letzter Fehler: {error}", + "tailscaleInstallTitle": "Tailscale installieren", + "tailscaleInstallIntro": "Installiert Tailscale auf diesem Rechner und bereitet OmniRoute auf die Aktivierung von Funnel vor.", + "tailscaleInstallPasswordHint": "Unter macOS und Linux ist möglicherweise sudo für die Paketinstallation und den Start des Daemons erforderlich.", + "tailscaleSudoPlaceholder": "Optionales sudo-Passwort", + "tailscaleInstalling": "Wird installiert", "tailscaleSudoLabel": "Sudo-Passwort (erforderlich unter macOS/Linux)", "ngrokTitle": "Ngrok-Tunnel", "ngrokRunning": "Laufen", @@ -4144,9 +4144,9 @@ "tierPublic": "Öffentlich", "hideInternal": "Interne ausblenden", "showInternal": "Interne anzeigen", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Benutzerdefinierter System-Prompt", + "customSystemPromptDescription": "Fügt jeder Modellanfrage einen benutzerdefinierten System-Prompt hinzu", + "customSystemPromptPlaceholder": "z. B. Antworte immer wie ein Pirat...", "obsidianEnterToken": "Bitte geben Sie ein Obsidian-API-Token ein", "obsidianConnectFailed": "Verbindung fehlgeschlagen", "obsidianConnectionFailed": "Verbindung fehlgeschlagen", @@ -4195,7 +4195,7 @@ "notionTokenConfigured": "Token konfiguriert. Notion-Tools sind über MCP verfügbar." }, "endpoints": { - "tabProxy": "Endpoint Proxy", + "tabProxy": "Endpunkt-Proxy", "tabApiEndpoints": "API-Endpunkte", "apiEndpointsTitle": "API-Endpunkte", "apiEndpointsDescription": "Backend-API-Endpunkte, die von anderen Anwendungen und Diensten genutzt werden können.", @@ -4278,43 +4278,43 @@ "success": "Erfolg", "failure": "Misserfolg", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", + "loadingAuditEntries": "Audit-Einträge werden geladen...", + "noAuditEntriesForFilters": "Für die aktuellen Filter wurden keine Audit-Einträge gefunden.", + "tableTimestamp": "Zeitstempel", + "tableDuration": "Dauer", + "tableResult": "Ergebnis", + "tableApiKey": "API-Schlüssel", + "failed": "fehlgeschlagen", + "previous": "Zurück", + "next": "Weiter", + "apiKeyId": "API-Schlüssel-ID", + "offset": "Versatz", "limit": "Limit", - "tool": "Tool" + "tool": "Werkzeug" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", + "loading": "A2A-Dashboard wird geladen...", + "confirmCancelTask": "Aufgabe {taskId} abbrechen?", + "cancelTaskFailed": "Aufgabe konnte nicht abgebrochen werden.", "cancelTaskSuccess": "Aufgabe {taskId} abgebrochen.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "smokeSendFailed": "message/send-Smoke-Test fehlgeschlagen.", + "smokeSendSuccessWithTask": "message/send erfolgreich (Aufgabe {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream-Smoke-Test fehlgeschlagen.", + "smokeStreamSuccessWithTask": "message/stream erfolgreich (Aufgabe {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream wurde ohne Aufgaben-ID beendet.", + "health": "Status", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "Aufgaben insgesamt", + "activeStreams": "Aktive Streams", + "lastTask": "Letzte Aufgabe", + "taskStateOverview": "Übersicht der Aufgabenstatus", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "eingereicht", + "working": "in Bearbeitung", + "completed": "abgeschlossen", + "failed": "fehlgeschlagen", + "cancelled": "abgebrochen" }, "agentCard": "Agentenkarte", "agentCardPath": "/.well-known/agent.json", @@ -4323,33 +4323,33 @@ "capabilities": "Fähigkeiten", "agentCardNotAvailable": "Agentenkarte nicht verfügbar.", "quickValidation": "Schnelle Validierung", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", + "quickValidationDescription": "Führt Smoke-Aufrufe über den Live-Endpunkt `/a2a` aus.", + "runMessageSend": "message/send ausführen", + "runMessageStream": "message/stream ausführen", + "taskManagement": "Aufgabenverwaltung", + "taskSummary": "{total} Aufgaben | Seite {page} von {totalPages}", + "allStates": "alle", + "allSkills": "alle Skills", + "loadingTasks": "Aufgaben werden geladen...", + "noTasksForFilters": "Keine Aufgaben für die aktuellen Filter gefunden.", + "tableTask": "Aufgabe", + "tableSkill": "Fähigkeit", + "tableState": "Status", "tableUpdated": "Aktualisiert", "tableActions": "Aktionen", "view": "Sicht", "cancel": "Stornieren", - "previous": "Previous", - "next": "Next", + "previous": "Zurück", + "next": "Weiter", "taskDetail": "Aufgabendetails", "close": "Schließen", "metadata": "Metadaten", "events": "Veranstaltungen", "artifacts": "Artefakte", - "tablePhase": "Table Phase", - "offset": "Offset", + "tablePhase": "Tabellenphase", + "offset": "Versatz", "limit": "Limit", - "skill": "Skill", + "skill": "Fähigkeit", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "Nachricht/senden", "rpcMethodStream": "Nachricht/Stream", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Aktionen", + "addMemory": "Erinnerung hinzufügen", + "allTypes": "Alle Typen", "cancel": "Abbrechen", "checkHealth": "Überprüfen Sie den Gesundheitszustand", "checkingHealth": "Überprüfen…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "So funktioniert es", "howWorksContent": "1. Automatische Extraktion: Am Ende jeder Antwort werden Fakten und Episoden automatisch erkannt und gespeichert.\n2. Abruf: Vor jeder Antwort werden die relevantesten Erinnerungen über FTS5 (exakt), Vektor (semantisch) oder hybrides RRF gesucht.\n3. Injektion: Relevante Erinnerungen werden in den Kontext des Assistenten eingefügt, um die Antwortqualität zu verbessern.\n4. Verwaltung: Verwenden Sie diese Seite, um alte Erinnerungen anzuzeigen, zu bearbeiten, zu exportieren und zu komprimieren." }, - "content": "Content", + "content": "Inhalt", "contentPlaceholder": "Wert oder JSON-Inhalt, den man sich merken sollte", - "created": "Created", - "delete": "Delete", + "created": "Erstellt", + "delete": "Löschen", "deleteConfirmDesc": "Diese Aktion kann nicht rückgängig gemacht werden. Die Erinnerung wird dauerhaft gelöscht.", "deleteConfirmTitle": "Erinnerung löschen?", - "description": "View and manage stored memory entries", + "description": "Gespeicherte Erinnerungseinträge anzeigen und verwalten", "editMemory": "Erinnerung bearbeiten", "editModal": { "title": "Erinnerung bearbeiten", @@ -4427,7 +4427,7 @@ "engine": { "statusTitle": "Engine-Status", "embeddingTitle": "Einbettungsquelle", - "rerankTitle": "Rerank (optional)", + "rerankTitle": "Neuordnung (optional)", "reindexNow": "Jetzt neu indizieren", "reindexStarted": "Neuindizierung gestartet ({pending} ausstehend)", "reindexFailed": "Starten der Neuindizierung fehlgeschlagen", @@ -4436,7 +4436,7 @@ "embeddingLabel": "Einbettung", "vectorStoreLabel": "Vektorspeicher", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Neu ordnen", "qdrantDisabled": "Deaktiviert", "qdrantOk": "Fehlerfrei ({latencyMs} ms)", "qdrantError": "Verbindungsfehler", @@ -4444,48 +4444,48 @@ "configureCta": "Konfigurieren", "vectorStoreInstallHint": "Um die Vektorsuche zu aktivieren: npm install sqlite-vec (erfordert natives Node.js, nicht WASM), dann neu starten." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodisch", + "export": "Exportieren", + "factual": "Faktisch", "healthUnknown": "Gesundheitszustand unbekannt", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Trefferquote", + "import": "Importieren", "importError": "Importieren der Datei fehlgeschlagen", "importResult": "{imported} importiert, {skipped} übersprungen", - "key": "Key", + "key": "Schlüssel", "keyPlaceholder": "z.B. user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Erinnerungen", "next": "Als nächstes", - "noMemories": "No memories found", + "noMemories": "Keine Erinnerungen gefunden", "pageInfo": "Seite {page} von {totalPages} ({total} insgesamt)", "pipelineError": "Pipelinefehler", - "pipelineOk": "Pipeline OK ({latencyMs}ms)", + "pipelineOk": "Pipeline OK ({latencyMs} ms)", "playground": { "infoTitle": "Erinnerungs-Playground", - "infoDesc": "Simulate what would be retrieved for a given query. No memories are modified — read-only preview.", - "queryLabel": "Test query", - "queryPlaceholder": "Type a question or test phrase...", - "strategyLabel": "Strategy", - "strategyExact": "Exact (FTS5)", - "strategySemantic": "Semantic (vector)", + "infoDesc": "Simulieren Sie, was für eine bestimmte Abfrage abgerufen würde. Es werden keine Erinnerungen geändert – schreibgeschützte Vorschau.", + "queryLabel": "Testabfrage", + "queryPlaceholder": "Gib eine Frage oder Testphrase ein...", + "strategyLabel": "Strategie", + "strategyExact": "Exakt (FTS5)", + "strategySemantic": "Semantisch (Vektor)", "strategyHybrid": "Hybrid (RRF)", - "budgetLabel": "Budget (tokens)", - "simulate": "Simulate", + "budgetLabel": "Budget (Tokens)", + "simulate": "Simulieren", "resultsTitle": "{count} Ergebnis(se)", "resolutionTitle": "Suchauflösung", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Einbettung", "resolutionStore": "Vektorspeicher", "resolutionStrategy": "Verwendete Strategie", "rerankApplied": "Rerank angewendet", - "fallback": "Fallback", + "fallback": "Ausweichlösung", "noResults": "Keine Erinnerungen für diese Abfrage gefunden.", "tokensUsed": "Token verwendet", "none": "keine", "errorFetch": "Vorschau konnte nicht geladen werden" }, "previous": "Zurück", - "procedural": "Procedural", + "procedural": "Prozedural", "qdrant": { "title": "Qdrant (Vektorspeicher Tier 2)", "description": "Optionale Qdrant-Integration für skalierbare semantische Suche", @@ -4507,70 +4507,70 @@ "portLabel": "Port", "embeddingModelLabel": "Embedding-Modell", "optional": "optional", - "apiKeyKeepPlaceholder": "Leave blank to keep current key", - "apiKeyOptional": "Leave blank if not using authentication", - "removeApiKey": "Remove", - "quickSelectModel": "Quick select", - "searchTestTitle": "Semantic search test", - "searchPlaceholder": "Type a test query...", - "searching": "Searching...", - "search": "Search", - "cleanupTitle": "Clean up old points", - "cleanupDesc": "Remove Qdrant points for expired memories (retention period).", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", - "cleanupSuccess": "{count} point(s) removed", - "cleanupFailed": "Cleanup failed", + "apiKeyKeepPlaceholder": "Leer lassen, um den aktuellen Schlüssel beizubehalten", + "apiKeyOptional": "Leer lassen, wenn keine Authentifizierung verwendet wird", + "removeApiKey": "Entfernen", + "quickSelectModel": "Schnellauswahl", + "searchTestTitle": "Semantischer Suchtest", + "searchPlaceholder": "Gib eine Testabfrage ein...", + "searching": "Suche läuft...", + "search": "Suchen", + "cleanupTitle": "Alte Punkte bereinigen", + "cleanupDesc": "Qdrant-Punkte für abgelaufene Erinnerungen entfernen (Aufbewahrungszeitraum).", + "cleaning": "Bereinigung läuft...", + "cleanNow": "Jetzt bereinigen", + "cleanupSuccess": "{count} Punkt(e) entfernt", + "cleanupFailed": "Bereinigung fehlgeschlagen", "hostLabel": "Host", "collectionLabel": "Sammlung" }, "rerank": { - "enableLabel": "Enable Rerank", - "enableDesc": "Reorders results with a reranking model after search", - "warning": "Rerank adds +200-500ms latency and additional cost per request. Use sparingly.", - "providerModelLabel": "Rerank Provider / Model", - "noProviderWithKey": "No provider with configured API key. Configure a provider to use rerank.", - "selectProviderModel": "Select a provider/model" + "enableLabel": "Reranking aktivieren", + "enableDesc": "Ordnet die Ergebnisse nach der Suche mithilfe eines Reranking-Modells neu", + "warning": "Reranking erhöht die Latenz um 200–500 ms und verursacht zusätzliche Kosten pro Anfrage. Sparsam verwenden.", + "providerModelLabel": "Reranking-Anbieter / Modell", + "noProviderWithKey": "Kein Anbieter mit konfiguriertem API-Schlüssel. Konfiguriere einen Anbieter, um Reranking zu verwenden.", + "selectProviderModel": "Anbieter/Modell auswählen" }, "save": "Speichern", - "saving": "Saving...", - "search": "Search memories...", - "semantic": "Semantic", + "saving": "Speichern läuft...", + "search": "Erinnerungen durchsuchen...", + "semantic": "Semantisch", "summarize": { - "title": "Compact old memories", - "noCandidates": "No memories eligible for compaction (criteria: >30 days old).", - "candidatesDesc": "{count} memories will be compacted into summaries. This action cannot be undone.", - "confirm": "Compact now" + "title": "Alte Erinnerungen komprimieren", + "noCandidates": "Keine Erinnerungen für die Komprimierung geeignet (Kriterium: älter als 30 Tage).", + "candidatesDesc": "{count} Erinnerungen werden zu Zusammenfassungen komprimiert. Diese Aktion kann nicht rückgängig gemacht werden.", + "confirm": "Jetzt komprimieren" }, "tabs": { - "memories": "Memories", - "playground": "Playground", + "memories": "Erinnerungen", + "playground": "Testumgebung", "engine": "Engine" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Erinnerungsverwaltung", + "tokensUsed": "Verwendete Tokens", "tooltip": { - "totalEntries": "Total memories stored for this API key", - "tokensUsed": "Estimated total tokens occupied by active memories", - "hitRate": "Read-by-ID cache hit rate (not semantic recall accuracy)", - "factual": "Objective, permanent facts from user context", - "episodic": "Events and experiences from conversation history", - "procedural": "Procedures, workflows, and instructions the assistant should follow", - "semantic": "Concepts, preferences, and domain knowledge" + "totalEntries": "Gesamtzahl der für diesen API-Schlüssel gespeicherten Erinnerungen", + "tokensUsed": "Geschätzte Gesamtzahl der von aktiven Erinnerungen belegten Tokens", + "hitRate": "Cache-Trefferrate beim Lesen per ID (nicht die Genauigkeit des semantischen Abrufs)", + "factual": "Objektive, dauerhafte Fakten aus dem Benutzerkontext", + "episodic": "Ereignisse und Erfahrungen aus dem Gesprächsverlauf", + "procedural": "Verfahren, Arbeitsabläufe und Anweisungen, die der Assistent befolgen soll", + "semantic": "Konzepte, Präferenzen und Fachwissen" }, - "totalEntries": "Total Entries", - "type": "Type", - "memoryEnabled": "Memory enabled" + "totalEntries": "Einträge insgesamt", + "type": "Typ", + "memoryEnabled": "Erinnerungen aktiviert" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", - "selectSkillToInspect": "Select a skill on the left to inspect.", + "title": "Fähigkeiten", + "description": "KI-Skills verwalten und überwachen", + "skillsTab": "Fähigkeiten", + "executionsTab": "Ausführungen", + "selectSkillToInspect": "Wählen Sie links einen Skill aus, um ihn zu überprüfen.", "schemaTab": "Schema", "handlerTab": "Handler", - "inputSchema": "Input Schema", + "inputSchema": "Eingabeschema", "outputSchema": "Ausgabeschema", "handlerCode": "Handler-Code", "handlerUnavailable": "Handler nicht verfügbar", @@ -4578,28 +4578,28 @@ "setModeAria": "Modus {mode} festlegen", "uninstallSkill": "Skill deinstallieren", "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "loading": "Skills werden geladen...", + "noSkills": "Keine Skills gefunden", + "noExecutions": "Keine Ausführungen gefunden", + "enabled": "Aktiviert", + "disabled": "Deaktiviert", "delete": "Löschen", "version": "Version", - "tableDescription": "Description", - "skill": "Skill", + "tableDescription": "Beschreibung", + "skill": "Fähigkeit", "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "duration": "Dauer", + "time": "Zeit", + "sandboxConfig": "Sandbox-Konfiguration", + "cpuLimit": "CPU-Limit", + "cpuLimitDesc": "Maximale Ausführungszeit pro Skill", + "memoryLimit": "Arbeitsspeicherlimit", + "memoryLimitDesc": "Maximale Arbeitsspeicherzuweisung", + "timeout": "Zeitüberschreitung", + "timeoutDesc": "Maximale Wartezeit auf eine Antwort", + "networkAccess": "Netzwerkzugriff", + "networkAccessDesc": "Ausgehende Netzwerkanfragen zulassen", + "mode": "Modus", "q": "Q", "filterSkillsPlaceholder": "Filtern Sie Fähigkeiten nach Name, Beschreibung oder Tag", "allModes": "Alle Modi", @@ -4612,7 +4612,7 @@ "popularDefaultsLabel": "Standardmäßig beliebt für ausgewählten Anbieter:", "onMode": "EIN", "offMode": "AUS", - "autoMode": "AUTO", + "autoMode": "AUTOMATISCH", "installSkillButton": "Skill installieren", "installSkillModalTitle": "Skill installieren", "installJsonPlaceholder": "Skill-Manifest-JSON hier einfügen...", @@ -4665,13 +4665,13 @@ "retry": "Versuchen Sie es noch einmal", "allOperational": "Alle Systeme betriebsbereit", "issuesDetected": "Systemprobleme erkannt", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute ist bereit", + "healthVerdictActionRequired": "Aktion erforderlich, um den vollständigen Betrieb wiederherzustellen", + "healthVerdictCoolingDown": "Abklingphase nach kürzlichen Änderungen", + "healthSubtitle": "Systemzustandsprüfung", + "advancedDiagnosticsTitle": "Erweiterte Diagnose", + "hide": "Ausblenden", + "show": "Anzeigen", "updatedAt": "Aktualisiert {time}", "latency": "Latenz", "latencyP50": "S. 50", @@ -4698,9 +4698,9 @@ "providers": "Anbieter", "configuredProvidersLabel": "Im Dashboard konfiguriert", "configuredProvidersHint": "Anbieter mit in /dashboard/providers gespeicherten Anmeldeinformationen, unabhängig vom Laufzeitstatus.", - "activeProviders": "{count} active", + "activeProviders": "{count} aktiv", "activeProvidersHint": "Konfigurierte Anbieter, die derzeit für Routing-Anfragen aktiviert sind.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} überwacht", "monitoredProvidersHint": "Anbieter, die derzeit von Leistungsschalter-Zustandsmonitoren überwacht werden.", "healthyCount": "{count} gesund", "nodeVersion": "Knoten {version}", @@ -4721,11 +4721,11 @@ "resetting": "Zurücksetzen...", "resetAll": "Alles zurücksetzen", "until": "Bis {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Aufgebraucht", + "learnedFromHeaders": "Aus Headern übernommen", + "remainingOfLimit": "{remaining}/{limit} verbleibend", + "throttleStatus": "Drosselung: {value}", + "lastHeaderUpdate": "Header-Aktualisierung: {age}", "databaseHealth": "Datenbankzustand", "databaseHealthDescription": "Veraltete Kontingent-/Domain-Zeilen und fehlerhafte Kombinationsreferenzen diagnostizieren und reparieren.", "status": "Status", @@ -4760,7 +4760,7 @@ "providerFilter": "Provider-Filter", "onlyIssues": "Nur Probleme", "refresh": "Aktualisieren", - "accounts": "Accounts", + "accounts": "Konten", "models": "Modelle", "issues": "Probleme", "loadingProviderHealthMatrix": "Provider-Health-Matrix wird geladen...", @@ -4780,7 +4780,7 @@ "cooldownCount": "{count} Cooldown", "lockoutCount": "{count} Sperren", "issueCount": "{count} Probleme", - "score": "Score", + "score": "Bewertung", "lastRequest": "Letzte Anfrage", "lastError": "Letzter Fehler" }, @@ -4888,27 +4888,27 @@ "previous": "Zurück", "next": "Als nächstes", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Details anzeigen", + "eventMetadata": "Ereignismetadaten", + "eventPayload": "Ereignisnutzlast", + "requestId": "Anfrage-ID", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", + "offset": "Versatz", "limit": "Limit", "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "resourceType": "Ressourcentyp", + "totalEntries": "Einträge insgesamt", + "tab": "Registerkarte", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Schließen", + "runningRequests": "Aktive Anfragen", + "runningRequestsDesc": "Echtzeitansicht der aktuell laufenden Upstream-Anfragen", "clearAll": "Alles löschen", "confirmClearActiveRequests": "Alle aktiven Anfragen löschen?", - "model": "Model", - "provider": "Provider", - "account": "Account", + "model": "Modell", + "provider": "Anbieter", + "account": "Konto", "elapsed": "Laufzeit", "activeStage": "Phase", "activeStageUnknown": "Noch nicht an Upstream gesendet", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Rate-Limit-Slot erhalten", "activeStageSendingToProvider": "Sendet an Upstream", "activeStageProviderResponseStarted": "Upstream-Antwort gestartet", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Anzahl", + "payloads": "Nutzdaten", + "viewPayloads": "Anzeigen", + "activeCount": "{count} aktiv", + "clientPayload": "Nutzdaten der Client-Anfrage", + "upstreamPayload": "Nutzdaten für den Upstream-Anbieter", + "upstreamNotSentYet": "Noch nicht an den Upstream gesendet", + "runningRequestDetailMeta": "Konto: {account} — Verstrichen: {elapsed}", + "export": "Exportieren", + "exporting": "Wird exportiert...", + "exportFailed": "Export fehlgeschlagen", "cleanHistoryButton": "Verlauf bereinigen", "cleanHistoryTitle": "Protokollverlauf bereinigen?", "cleanHistoryMessage": "Dies löscht dauerhaft alle Anforderungsprotokollzeilen, veralteten Detailzeilen und lokalen Artefaktdateien unter DATA_DIR/call_logs. Die Live-Seite wird nach der Bereinigung aktualisiert.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} Protokolleinträge, {deletedArtifacts} Artefakte und {deletedDetailedLogs} veraltete Detailzeilen wurden bereinigt.", "cleanHistoryEmpty": "Es wurde kein Anforderungsprotokollverlauf gefunden.", "cleanHistoryFailed": "Fehler beim Bereinigen des Protokollverlaufs.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Zeitraum", + "lastNHours": "Letzte {hours}", + "defaultRange": "Standard", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Protokolle konnten nicht abgerufen werden", + "copyFailed": "Protokolleintrag konnte nicht kopiert werden", + "copyLogEntry": "Protokolleintrag kopieren", "filterByLevel": "Nach Log-Level filtern", "searchPlaceholder": "Logs durchsuchen…", "searchAria": "Protokolleinträge durchsuchen", @@ -4965,7 +4965,7 @@ }, "onboarding": { "welcome": "Willkommen", - "tiers": "Tiers", + "tiers": "Stufen", "security": "Sicherheit", "test": "Testen", "ready": "Bereit!", @@ -4984,12 +4984,12 @@ "setupComplete": "Einrichtung abgeschlossen!", "goToDashboard": "Gehen Sie zu Dashboard →", "welcomeDesc": "OmniRoute ist Ihr lokaler AI-API-Proxy. Es leitet Anfragen mit Lastausgleich, Failover und Nutzungsverfolgung an mehrere KI-Anbieter weiter.", - "multiProvider": "Multi-Provider", + "multiProvider": "Mehrere Anbieter", "usageTracking": "Nutzungsverfolgung", "securityDesc": "Legen Sie ein Passwort fest, um Ihr Dashboard zu schützen, oder überspringen Sie es zunächst.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Ohne Passwort können Sie während der Einrichtung keine Anbieter hinzufügen. Sie können sie später über das Dashboard hinzufügen, nachdem Sie ein Passwort festgelegt haben.", "providerDesc": "Verbinden Sie Ihren ersten KI-Anbieter. Sie können später weitere hinzufügen.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Sie müssen zuerst ein Passwort festlegen, um Anbieter hinzuzufügen. Kehren Sie zum Sicherheitsschritt zurück und legen Sie ein Passwort fest, oder fügen Sie Anbieter später über das Dashboard hinzu.", "apiKeyRequired": "API-Schlüssel (erforderlich)", "customUrlOptional": "Benutzerdefinierte URL (optional)", "testDesc": "Lassen Sie uns überprüfen, ob Ihre Provider-Verbindung funktioniert.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Importieren…", "importFromFileImport": "{count} Anbieter importieren", "importFromFileResult": "{success} Anbieter importiert ({failed} fehlgeschlagen)", + "importFromFileDownloadTemplate": "CSV-Vorlage herunterladen", + "importFromFileMoreErrors": "+{count} weitere", + "importFromFileSchemaHint": "Die CSV-Spalten sind positionsabhängig: provider, name, apiKey, baseUrl (optional), priority (optional). Die Spalte provider muss die ID eines vorhandenen verwalteten Anbieters oder die ID eines bereits registrierten OpenAI-/Anthropic-kompatiblen Knotens enthalten — dieser Import erstellt keine neuen Endpunktknoten.", "adaptaTutorial": { "title": "So verbinden Sie Adapta Web", "introPrefix": "Adapta authentifiziert sich über Clerk. Das Token", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} ausgeblendet", "warningCount": "{count} Warnung", "noConnections": "Keine Verbindungen", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Abgelaufen", + "expiringSoonBadge": "Läuft bald ab", "freeTier": "Kostenloses Kontingent", "freeTierAvailable": "Kostenloses Kontingent verfügbar", "hasFreeTooltip": "Kostenlose Stufe verfügbar", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Dieser Anbieter ist veraltet", "riskNotice": { "title": "Vor dem Fortfahren", - "detailsTitle": "Usage caveats", + "detailsTitle": "Nutzungshinweise", "tooltip": "Anbieter mit Nutzungseinschränkungen — für Details klicken", "oauth": "Dieser Anbieter verwendet Ihre offizielle Produktsitzung/OAuth, die nicht für die Proxy-/Router-Nutzung autorisiert ist. Wir empfehlen keine intensive Nutzung durch autonome Agenten (im OpenCloud-Stil, lange mehrstufige Abläufe, große Batches) — der Upstream-Anbieter kann darauf reagieren, indem er das Konto einschränkt oder sperrt. Nutzung auf eigene Gefahr.", "webCookie": "Dieser Anbieter authentifiziert sich über Ihre Web-Sitzungscookies. Der Upstream-Dienst kann die Sitzung jederzeit ungültig machen, sodass Sie sich erneut anmelden müssen. Nicht empfohlen für lange unbeaufsichtigte Vorgänge. Nutzung auf eigene Gefahr.", @@ -5188,9 +5191,9 @@ "cancel": "Abbrechen" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} Verbindung(en) markiert — bis zu {maxFailures} kürzlich aufgetretene Fehler{lastFailureSuffix}. Klicken Sie, um den Verbindungsstatus anzuzeigen.", + "lastFailureSuffix": "(letzter Fehler {time})", + "ariaLabel": "Details zum Verbindungsstatus anzeigen, {count} Warnung(en)" }, "disabled": "Deaktiviert", "enableProvider": "Anbieter aktivieren", @@ -5225,7 +5228,7 @@ "failedCreate": "Anbieter konnte nicht erstellt werden", "errorOccurred": "Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.", "modelStatus": "Modellstatus", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Nur konfigurierte", "allModelsOperational": "Alle Modelle betriebsbereit", "modelsWithIssues": "{count} Modell(e) mit Problemen", "allModelsNormal": "Alle Modelle reagieren normal.", @@ -5236,7 +5239,7 @@ "clearing": "Löschen...", "until": "Bis {time}", "providerTestFailed": "Anbietertest fehlgeschlagen", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Zeitüberschreitung beim Anbietertest — zu viele Verbindungen gleichzeitig zu testen", "modeTest": "{mode} Test", "passedCount": "{count} bestanden", "failedCount": "{count} fehlgeschlagen", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "Icon-URL", "iconUrlHint": "Optional. Bild-URL, die als Icon dieses Anbieters angezeigt wird.", "iconUrlInvalid": "Ungültige Icon-URL. Verwenden Sie eine http(s):// oder data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Zeitzone für das Zurücksetzen des täglichen Kontingents", + "dailyQuotaResetTimezoneHint": "Optionale IANA-Zeitzone, die verwendet wird, wenn der Upstream X-RateLimit-Reset nicht angibt. Leer lassen, um eine kurze Abklingzeit beizubehalten.", + "dailyQuotaResetHourLabel": "Uhrzeit für das Zurücksetzen des Tageskontingents", + "dailyQuotaResetHourHint": "Lokale Stunde von 0–23 in der oben angegebenen Zeitzone. Leer bedeutet, dass keine Uhr auf Knotenebene verwendet wird.", "anthropicPrefixPlaceholder": "AC-Prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Anbieter nicht gefunden", "deleteConnectionConfirm": "Diese Verbindung löschen?", "deleteConnectionConfirmNamed": "Möchten Sie {name} wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Ausgewählte löschen ({count})", + "batchDeleteConfirm": "{count} Verbindung(en) löschen? Diese Aktion kann nicht rückgängig gemacht werden.", + "batchDeleteSuccess": "{count} Verbindung(en) gelöscht", "batchActivateSelected": "Aktivieren", "batchDeactivateSelected": "Deaktivieren", "batchRetestSelected": "Erneut testen", @@ -5292,7 +5295,7 @@ "filterError": "Fehler", "filterBanned": "Gesperrt", "filterCreditsExhausted": "Guthaben aufgebraucht", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Konten durchsuchen…", "noFilteredConnections": "Keine Verbindungen entsprechen dem aktuellen Filter.", "failedSetAlias": "Alias konnte nicht festgelegt werden", "setAliasSuccess": "Alias {alias} gesetzt", @@ -5305,19 +5308,19 @@ "openaiCompatibleDetails": "Details zur OpenAI-Kompatibilität", "messagesApi": "Nachrichten-API", "responsesApi": "Antwort-API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Einbettungen", + "audioTranscriptions": "Audiotranskriptionen", + "audioSpeech": "Sprachausgabe", + "imagesGenerations": "Bildgenerierungen", "chatCompletions": "Chat-Abschlüsse", "importingModels": "Importieren...", "importFromModels": "Import aus /models", - "modelsImported": "{count} models imported", + "modelsImported": "{count} Modelle importiert", "allModelsAlreadyImported": "Alle Modelle sind bereits importiert", "noNewModelsToImport": "Keine neuen Modelle zum Importieren — alle Modelle sind bereits in der Registry oder der Liste benutzerdefinierter Modelle", "skippingExistingModels": "Überspringe {count} vorhandene Modelle", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "autoSync": "Automatische Synchronisierung", + "autoSyncShort": "Synchronisieren", "autoFetchModels": "Automatisches Abrufen von Upstream-Modellen", "autoFetchModelsTooltip": "Abrufen und Zwischenspeichern von Upstream-Modellen bei Bedarf", "autoFetchModelsEnabled": "Upstream-Modell Auto-Fetch aktiviert", @@ -5350,13 +5353,13 @@ "importFailed": "Der Import ist fehlgeschlagen", "noNewModelsAdded": "Es wurden keine neuen Modelle hinzugefügt.", "adding": "Hinzufügen...", - "close": "Close", + "close": "Schließen", "importingModelsTitle": "Modelle importieren", "copyModel": "Modell kopieren", "filterModels": "Modelle filtern…", "testAllRateLimited": "Rate-Limit erreicht, vorzeitig abgebrochen", "hideFailedAuto": "Fehlgeschlagene Modelle automatisch ausblenden", - "selectAllModels": "Select all", + "selectAllModels": "Alle auswählen", "hideAllModels": "Alle ausblenden", "modelsActive": "aktiv", "showModel": "Modell anzeigen", @@ -5364,7 +5367,7 @@ "removeModel": "Modell entfernen", "rateLimitProtected": "Geschützt", "rateLimitUnprotected": "Ungeschützt", - "providerQuotaShort": "Quota", + "providerQuotaShort": "Kontingent", "hideConnectionFromProviderQuota": "Diesen Account auf der Seite „Provider Quota“ ausblenden", "showConnectionInProviderQuota": "Diesen Account auf der Seite „Provider Quota“ anzeigen", "quotaVisibilityUpdateFailed": "Die Sichtbarkeit unter „Provider Quota“ konnte nicht aktualisiert werden", @@ -5377,17 +5380,17 @@ "enterNewApiKey": "Geben Sie einen neuen API-Schlüssel ein", "codexApplyModalTitle": "Bewerben Sie sich beim Local Codex", "codexApplyTargetLabel": "Zielpfad", - "codexApplyBackupLabel": "Backups", + "codexApplyBackupLabel": "Sicherungen", "codexApplyWarning": "Dadurch wird die vorhandene auth.json ersetzt. Weitermachen?", "codexApplyConfirmCheckbox": "Ich bestätige, dass ich die vorhandene auth.json ersetzen möchte", "codexApply": "Bewerben", - "bulkTabSingle": "Single", + "bulkTabSingle": "Einzeln", "bulkTabBulkAdd": "Massenhinzufügung", "bulkAddFormatHint": "Ein Schlüssel pro Zeile. Format: Name|apiKey oder nur apiKey (automatisch nach Index benannt).", "bulkValidateKeys": "Überprüfen Sie jeden Schlüssel vor dem Speichern (langsamer)", "bulkAddAllKeys": "Alle Schlüssel hinzufügen", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# Schlüssel hinzugefügt} other {# Schlüssel hinzugefügt}}", + "bulkFailedCount": "{count, plural, one {# fehlgeschlagen} other {# fehlgeschlagen}}", "optional": "Optional", "anthropicCompatibleName": "Anthropisch kompatibel", "openaiCompatibleName": "OpenAI-kompatibel", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Es ist ein unerwarteter Fehler aufgetreten", "getApiKey": "API-Schlüssel abrufen", "getApiKeyDescription": "Registrieren oder anmelden für einen API-Schlüssel", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# Verbindung} other {# Verbindungen}}", "messagesPath": "Nachrichten", "responsesPath": "Antworten", "chatCompletionsPath": "Chat/Abschlüsse", @@ -5419,17 +5422,17 @@ "configured": "konfiguriert", "providerProxyConfigureHint": "Proxy für alle Verbindungen dieses Anbieters konfigurieren", "providerProxy": "Anbieter-Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Umgebung reparieren", + "repairEnvWorking": "Wird repariert...", + "repairEnvHint": "Fehlende OAuth-Standardwerte in .env wiederherstellen, ohne vorhandene Werte zu überschreiben.", + "repairEnvSuccess": "OAuth-Standardwerte wiederhergestellt", + "repairEnvFailed": "Fehler beim Reparieren von .env", "noConnectionsYet": "Noch keine Verbindungen", "addFirstConnectionHint": "Fügen Sie Ihre erste Verbindung hinzu, um loszulegen", "addConnection": "Verbindung hinzufügen", "availableModels": "Verfügbare Modelle", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Integrierte Modelle", + "builtInModelsHint": "Registry-Modelle für diesen Anbieter. Verwenden Sie den Stift, um Kompatibilitätsoptionen festzulegen.", "pageAutoRefresh": "Die Seite wird automatisch aktualisiert...", "statusDisabled": "deaktiviert", "statusConnected": "verbunden", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Authentifizieren Sie diese Verbindung erneut", "proxyConfig": "Proxy-Konfiguration", "aliasExistsAlert": "Alias „{alias}“ existiert bereits. Bitte verwenden Sie ein anderes Modell oder bearbeiten Sie den vorhandenen Alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "Aliasname", + "clickToSetAlias": "Klicken, um einen Alias festzulegen", + "clickToEditAlias": "Alias: {alias} (zum Bearbeiten klicken)", "openRouterAnyModelHint": "OpenRouter unterstützt jedes Modell. Fügen Sie Modelle hinzu und erstellen Sie Aliase für den schnellen Zugriff.", "modelIdFromOpenRouter": "Modell-ID (von OpenRouter)", "openRouterModelPlaceholder": "anthropisch/claude-3-opus", "customModels": "Benutzerdefinierte Modelle", "customModelsHint": "Fügen Sie Modell-IDs hinzu, die nicht in der Standardliste enthalten sind. Diese stehen für das Routing zur Verfügung.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Toolaufruf-IDs auf 9 Zeichen normalisieren (z. B. Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responses-Entwicklerrolle beibehalten (nicht system zuordnen)", + "compatAdjustmentsTitle": "Kompatibilität", + "compatButtonLabel": "Kompatibilität", + "compatToolIdShort": "Tool-ID 9", + "compatDeveloperShort": "Entwicklerrolle", + "compatDoNotPreserveDeveloper": "Entwicklerrolle nicht beibehalten", + "compatBadgeNoPreserve": "Nicht beibehalten", + "compatProtocolLabel": "Client-Anfrageprotokoll", + "compatProtocolHint": "Diese Optionen gelten, wenn OmniRoute dieses Anfrageformat erkennt (OpenAI Chat, Responses API oder Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Native web_fetch-Tool-Aufrufe auf /v1/web/fetch von OmniRoute umschreiben.", "interceptionLoadError": "Fehler beim Laden der Interzeptionseinstellungen: {error}", "interceptionSaveError": "Fehler beim Speichern der Interzeptionseinstellungen: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "In Claude Code anzeigen (claude/…)", + "ccAliasSectionHint": "Die Modelle dieses Anbieters unter den Spiegel-IDs claude/<provider>/<model> veröffentlichen, damit sie bei der Gateway-Modellerkennung von Claude Code aufgeführt werden können. Standardmäßig deaktiviert – durch die Aktivierung verdoppelt sich die Anzahl der Katalogeinträge für alle Clients.", + "ccAliasProviderLevelLabel": "Anbieterstandard", + "ccAliasModelOverridesLabel": "Modellspezifische Überschreibungen", + "ccAliasModelOverrideAriaLabel": "Überschreibung für {modelId}", + "ccAliasStateInherit": "Übernehmen", + "ccAliasStateOn": "Ein", + "ccAliasStateOff": "Aus", + "ccAliasAddModelPlaceholder": "Modell-ID (z. B. gpt-4o)", + "ccAliasAddModelButton": "Überschreibung hinzufügen", + "ccAliasLoadError": "Einstellungen für Discovery-Aliasse konnten nicht geladen werden: {error}", + "ccAliasSaveError": "Einstellung für Discovery-Aliasse konnte nicht gespeichert werden: {error}", + "compatUpstreamHeadersLabel": "Zusätzliche Upstream-Header", + "compatUpstreamHeadersHint": "Einstellung mit hohen Berechtigungen – dieselbe Vertrauensstufe wie beim Bearbeiten der API-Zugangsdaten des Anbieters; sie sollte nur von vertrauenswürdigen Administratoren verwendet werden. Diese Header werden zusammengeführt, nachdem OmniRoute die Authentifizierung über den API-Schlüssel des Anbieters hinzugefügt hat. Wenn ein benutzerdefinierter Header denselben Namen wie ein vorhandener Header verwendet (z. B. Authorization), ersetzt Ihr Wert den automatisch generierten Header vollständig (einschließlich des Bearer-Tokens) – der Upstream sieht nur Ihre Eingabe, nicht den Schlüssel aus den Einstellungen. Eine Fehlkonfiguration kann zu einem 401-Fehler oder einer fehlerhaften Upstream-Authentifizierung führen. Eine Zeile pro Header (z. B. zusätzliche Authentication für bestimmte Gateways). Bewegen Sie den Mauszeiger über den Wert oder fokussieren Sie ihn, um eine Vorschau anzuzeigen. Wird bei Fokusverlust, einem Klick außerhalb oder beim Schließen dieses Bereichs gespeichert.", + "compatUpstreamHeaderName": "Header-Name", + "compatUpstreamHeaderValue": "Wert", + "compatUpstreamAddRow": "Header hinzufügen", + "compatUpstreamRemoveRow": "Zeile entfernen", + "compatBadgeUpstreamHeaders": "Header", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Nur kostenlose Modelle importieren", @@ -5592,32 +5595,32 @@ "email": "E-Mail", "healthCheckMinutes": "Gesundheitscheck (Min.)", "healthCheckHint": "Proaktives Token-Aktualisierungsintervall. 0 = deaktiviert.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Auswahl aufheben", + "modelsActiveCount": "{active}/{total} aktiv", + "noModelsMatch": "Keine Modelle entsprechen „{filter}“", + "groupLabel": "Umgebung", + "groupPlaceholder": "z. B. eKaizen, Persönlich", "failedTestConnection": "Die Verbindung konnte nicht getestet werden", "failed": "Fehlgeschlagen", "leaveBlankKeepCurrentApiKey": "Lassen Sie das Feld leer, um den aktuellen API-Schlüssel beizubehalten.", "editCompatibleTitle": "Bearbeiten Sie {type} kompatibel", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "Stamm-URL Ihrer mit {type} kompatiblen API. Verwenden Sie die erweiterten Einstellungen für benutzerdefinierte Endpunktpfade.", "apiKeyForCheck": "API-Schlüssel (zur Überprüfung)", "testModelIdLabel": "Modell-ID (optional)", "testModelIdPlaceholder": "z. B. my-model-id", "testModelIdHint": "Wenn der Anbieter keinen /models-Endpunkt hat, geben Sie eine Modell-ID ein, um stattdessen über /chat/completions zu validieren.", "compatibleProdPlaceholder": "{type} Kompatibel (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Token erfolgreich aktualisiert", + "tokenRefreshFailed": "Token-Aktualisierung fehlgeschlagen", "cursorSessionUnchanged": "Sitzung bereits aktuell", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Authentifizierung anwenden", + "exportCodexAuthFile": "Authentifizierung exportieren", "applyClaudeAuthLocal": "Authentifizierung anwenden", "exportClaudeAuthFile": "Authentifizierung exportieren", "importClaudeAuth": "Authentifizierung importieren", "claudeApplyModalTitle": "Bewerben Sie sich bei Local Claude Code", "claudeApplyTargetLabel": "Zielpfad", - "claudeApplyBackupLabel": "Backups", + "claudeApplyBackupLabel": "Sicherungen", "claudeApplyMcpHint": "Der bestehende MCP-OAuth-Status bleibt erhalten.", "claudeApplyWarning": "Dadurch wird der vorhandene Abschnitt claudeAiOauth ersetzt. Weitermachen?", "claudeApplyConfirmCheckbox": "Ich bestätige, dass ich den vorhandenen Abschnitt „claudeAiOauth“ ersetzen möchte", @@ -5627,7 +5630,7 @@ "claudeAuthExported": "Claude-Authentifizierungsdatei exportiert", "claudeAuthExportFailed": "Der Export der Claude-Authentifizierungsdatei ist fehlgeschlagen", "claudeImportModalTitle": "Importieren Sie Claude Auth", - "claudeImportTabSingle": "Single", + "claudeImportTabSingle": "Einzeln", "claudeImportTabBulk": "Masse", "claudeImportTabUpload": "Datei hochladen", "claudeImportTabPaste": "JSON einfügen", @@ -5659,7 +5662,7 @@ "geminiAuthExported": "Gemini-Authentifizierungsdatei exportiert", "geminiAuthExportFailed": "Der Export der Gemini-Authentifizierungsdatei ist fehlgeschlagen", "geminiImportModalTitle": "Gemini-Auth importieren", - "geminiImportTabSingle": "Single", + "geminiImportTabSingle": "Einzeln", "geminiImportTabBulk": "Masse", "geminiImportTabUpload": "Datei hochladen", "geminiImportTabPaste": "JSON einfügen", @@ -5705,7 +5708,7 @@ "codexExternalLinkExpired": "Der Link ist vor dem Abschluss abgelaufen.", "importCodexAuth": "Authentifizierung importieren", "codexImportModalTitle": "Codex-Authentifizierung importieren", - "codexImportTabSingle": "Single", + "codexImportTabSingle": "Einzeln", "codexImportTabBulk": "Masse", "codexImportTabUpload": "Datei hochladen", "codexImportTabPaste": "JSON einfügen", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} fehlgeschlagen", "codexImportBulkZipExtracting": "ZIP extrahieren…", "codexImportBulkZipError": "ZIP konnte nicht extrahiert werden", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Erweiterte Einstellungen", + "chatPathLabel": "Chat-Endpunktpfad", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Benutzerdefinierter Chat-Pfad für Anbieter mit nicht standardmäßigen APIs (z. B. /v4/chat/completions)", + "modelsPathLabel": "Modell-Endpunktpfad", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Benutzerdefinierter Modellpfad für die Validierung (z. B. /v4/models)", "clientIdentityLabel": "Client-Identität", "clientIdentityHint": "Optional. Fügt Client-Fingerprint-Header (z. B. User-Agent) hinzu, die einer bekannten CLI für kompatible Gateways entsprechen, die einen solchen erwarten.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Deaktiviert (manuell)", + "statusBanned": "Gesperrt / Sandbox-Verstoß", + "statusCreditsExhausted": "Unzureichendes Guthaben / Kontingent ausgeschöpft", + "showEmails": "Alle E-Mail-Adressen anzeigen", + "hideEmails": "Alle E-Mail-Adressen ausblenden", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Weiteren API-Schlüssel hinzufügen oder mehrere Schlüssel einfügen", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Aggregator-Gateways", "enterpriseCloud": "Unternehmen und Cloud", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Bezeichnung des API-Formats", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", + "apiRegionChina": "API-Region China", + "apiRegionHint": "Hinweis zur API-Region", + "apiRegionInternational": "API-Region International", + "apiRegionLabel": "Bezeichnung der API-Region", + "apikey": "API-Schlüssel", "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "audioProvidersHeading": "Überschrift für Audioanbieter", "cloudAgentProviders": "Cloud-Agent-Anbieter", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Kurzbezeichnung für Audio", + "azureOpenAiBaseUrlHint": "Hinweis zur Azure Open AI-Basis-URL", + "bailianBaseUrlHint": "Hinweis zur Bailian-Basis-URL", + "claudeWebCookieHint": "Öffnen Sie claude.ai → DevTools → Application → Cookies → claude.ai und kopieren Sie den Wert von 'sessionKey'. Für Cloudflare werden außerdem cf_clearance, __cf_bm und _cfuvid benötigt.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Hinweis zum Blackbox Web-Cookie", + "blackboxWebCookiePlaceholder": "Platzhalter für das Blackbox Web-Cookie", "t3ChatWebCookieHint": "Öffnen Sie t3.chat → DevTools → Anwendung → Lokaler Speicher → https://t3.chat, kopieren Sie „convex-session-id“. Öffnen Sie dann DevTools → Netzwerk und kopieren Sie den vollständigen Cookie-Header aus jeder Chat-Anfrage. Fügen Sie beide Werte in die Felder unten ein.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Hinweis zum Grok Web-Cookie", "blockClaudeExtraUsageDescription": "Wenn aktiviert, markiert OmniRoute diese Claude-Verbindung als nicht verfügbar, sobald die Usage-API gemeldete zusätzliche Nutzung in der Warteschlange anzeigt, sodass der Fallback auf eine andere Verbindung umschaltet, anstatt mit der Abrechnung für zusätzliche Nutzung nach dem Pay-as-you-go-Prinzip fortzufahren.", "blockClaudeExtraUsageLabel": "Zusätzliche Claude-Nutzung blockieren", "disableCoolingDescription": "Vorübergehende Abklingzeit überspringen, damit diese Verbindung auch nach behebbaren Fehlern verfügbar bleibt (endgültige Zustände wie gesperrt/abgelaufen gelten weiterhin).", "disableCoolingLabel": "Abklingzeit für diese Verbindung deaktivieren", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 Schlüssel hinzugefügt} other {# Schlüssel hinzugefügt}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 Duplikat übersprungen} other {# Duplikate übersprungen}}", + "bulkPasteHint": "Fügen Sie pro Zeile einen API-Schlüssel ein. Leere Zeilen werden ignoriert und doppelte Schlüssel übersprungen.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Fügt für CC Compatible-Upstreams, die ausgeblendete Claude-Denkstreams erfordern, den Beta-Header „redact-thinking“ hinzu.", + "ccCompatibleRedactThinkingLabel": "Beta-Funktion „redact-thinking“ aktivieren", + "ccCompatibleSummarizeThinkingDescription": "Fügt CC Compatible-Denkanfragen `display: \"summarized\"` hinzu, damit unterstützte Claude-Modelle sichtbare Denk-Deltas streamen.", + "ccCompatibleSummarizeThinkingLabel": "Zusammengefasste Denkanzeige aktivieren", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Verwendet für Codex-Anfragen die priorisierte Servicestufe, sofern verfügbar.", + "codexFastServiceTierLabel": "Schnelle Codex-Servicestufe", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Platzhalter für den Header-Namen des Compat-Upstreams", + "compatUpstreamHeaderValuePlaceholder": "Platzhalter für den Header-Wert des Compat-Upstreams", + "compatible": "Kompatibel", + "configuredCount": "Anzahl konfigurierter Einträge", + "consoleApiKeyOracleHint": "Hinweis zum Oracle-API-Schlüssel für die Konsole", + "consoleApiKeyOracleLabel": "Oracle-API-Schlüssel für die Konsole", + "consoleApiKeyOraclePlaceholder": "Oracle-API-Schlüssel für die Konsole", "newApiUserIdLabel": "New-API-Benutzer-ID", "newApiUserIdPlaceholder": "z. B. 12345", "newApiUserIdHint": "Wert des New-Api-User-Headers von AgentRouter, zusammen mit dem Konsolen-API-Schlüssel verwendet, um das Kontingentguthaben abzurufen.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Aktivieren Sie die Balancerkennung für New-API / One-API / Sub2API-Aggregator-kompatible Knoten", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Hinweis zum benutzerdefinierten User-Agent", + "customUserAgentLabel": "Benutzerdefinierter User-Agent", + "databricksBaseUrlHint": "Hinweis zur Databricks-Basis-URL", + "defaultThinkingStrengthHint": "Wird verwendet, wenn in einer Anfrage kein Denkaufwand angegeben ist.", + "defaultThinkingStrengthLabel": "Standardmäßige Denkintensität", + "deleteAllExtraApiKeys": "Alle löschen", + "excludedModelsHint": "Hinweis zu ausgeschlossenen Modellen", + "excludedModelsLabel": "Ausgeschlossene Modelle", + "excludedModelsPlaceholder": "Ausgeschlossene Modelle", + "expirationBannerExpired": "Abgelaufen", + "expirationBannerExpiredDesc": "Die Gültigkeit ist abgelaufen.", + "expirationBannerExpiringSoon": "Läuft bald ab", + "expirationBannerExpiringSoonDesc": "Die Gültigkeit läuft bald ab.", + "extraApiKeyMasked": "Schlüssel {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Hinweis zu zusätzlichen API-Schlüsseln", + "extraApiKeysLabel": "Zusätzliche API-Schlüssel", + "apiKeyHealthLabel": "Status der API-Schlüssel", + "apiKeyStatusActive": "Aktiv", + "apiKeyStatusWarning": "Warnung ({count} Fehler)", + "apiKeyStatusInvalid": "Ungültig", + "primaryKey": "Primärschlüssel", + "apiKeyInvalidAlert": "{count} API-Schlüssel wurde(n) aufgrund von Authentifizierungsfehlern in folgenden Verbindungen als ungültig markiert: {connections}. Sie werden bei der Rotation übersprungen. Klicken Sie hier, um sie zu überprüfen.", + "apiKeyInvalidAlertTitle": "Warnung zum Status der API-Schlüssel", + "apiKeyWarningAlert": "{count} API-Schlüssel befindet/befinden sich aufgrund einer erhöhten Fehlerrate in folgenden Verbindungen im Warnstatus: {connections}. Überprüfen Sie sie, um Probleme bei der Rotation zu vermeiden.", + "apiKeyWarningAlertTitle": "API-Schlüsselwarnung", + "googlePseInfo": "Informationen zu Google PSE", "antigravityProjectIdHint": "Optionale Überschreibung für Antigravity Cloud Code-Anfragen. Lassen Sie das Feld leer, um das während Google OAuth erkannte Projekt zu verwenden.", "antigravityClientProfileLabel": "Client-Profil", "antigravityClientProfileHint": "Wählen Sie, welche Antigravity-Client-Identität OmniRoute der API übermittelt.", @@ -5865,47 +5868,47 @@ "tierFast": "Schnell", "antigravityProjectIdLabel": "Google Cloud-Projekt-ID", "antigravityProjectIdPlaceholder": "meine-gcp-projekt-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Platzhalter für das Grok-Web-Cookie", + "herokuBaseUrlHint": "Hinweis zur Heroku-Basis-URL", + "hideEmail": "E-Mail-Adresse ausblenden", + "imageProviders": "Bildanbieter", "videoProviders": "Videogenerierung", "embeddingRerankProviders": "Einbettungen und Neubewertung", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Bilder", + "llmProviders": "LLM-Anbieter", + "localProviderApiKeyOptionalHint": "Hinweis zum optionalen API-Schlüssel für lokale Anbieter", + "localProviderBaseUrlHint": "Hinweis zur Basis-URL des lokalen Anbieters", + "localProviders": "Lokale Anbieter", + "maxConcurrentWholeNumberError": "Fehler: Maximale Parallelität muss eine ganze Zahl sein", "m365TierLabel": "Copilot-Stufe", "m365TierHint": "Wählen Sie, welche Microsoft 365 Copilot-Oberfläche diese Verbindung verwendet. Individual ist der standardmäßige Consumer-BizChat; Education und Enterprise (Work) nutzen deren jeweilige Mandanten-Oberflächen.", "m365TierIndividualOption": "Individual (Standard)", - "m365TierEduOption": "Education", - "m365TierEnterpriseOption": "Enterprise / Work", + "m365TierEduOption": "Bildung", + "m365TierEnterpriseOption": "Unternehmen / Arbeit", "tierOverrideLabel": "Stufenüberschreibung", "tierOverrideAuto": "Automatisch (Routing entscheidet)", "tierOverrideFree": "Kostenlos", "tierOverrideCheap": "Günstig", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Diesen Provider an eine Routing-Stufe anheften, anstatt OmniRoute diese anhand der Modellpreise ableiten zu lassen.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Hinweis zum Muse Spark-Web-Cookie", + "museSparkWebCookiePlaceholder": "Platzhalter für Muse Spark-Web-Cookie", + "oauth": "OAuth", + "openCliTools": "CLI-Tools öffnen", + "openSettings": "Einstellungen öffnen", + "openaiResponsesStoreDescription": "Kompatiblen Responses API-Anfragen erlauben, den gespeicherten Antwortstatus beizubehalten.", + "openaiResponsesStoreLabel": "OpenAI Responses-Speicher", + "perplexitySearchSharedKeyInfo": "Informationen zum gemeinsam genutzten Schlüssel für die Perplexity-Suche", + "perplexityWebCookieHint": "Hinweis zum Perplexity-Web-Cookie", + "perplexityWebCookiePlaceholder": "Platzhalter für Perplexity-Web-Cookie", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Rate-Limit-Überschreibungen", "rateLimitOverridesMaxConcurrentHint": "Überschreibung der maximalen gleichzeitigen Anfragen für diese Verbindung. Überschreibt die Obergrenze auf Kontoebene.", "rateLimitOverridesMaxConcurrentLabel": "Max. gleichzeitig (Rate-Limit)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Maximale Zeit (ms), die eine Anfrage auf einen freien Platz im Ratenlimit warten darf, bevor sie fehlschlägt. Überschreibt die globale Resilience-Einstellung nur für diese Verbindung.", + "rateLimitOverridesMaxWaitMsLabel": "Max. Wartezeit in der Warteschlange (ms)", "rateLimitOverridesMinTimeHint": "Mindestzeit (ms) zwischen Anfragen. Überschreibt die standardmäßige Rate-Limiter-Verzögerung.", "rateLimitOverridesMinTimeLabel": "Min. Intervall (ms)", "rateLimitOverridesRpdHint": "Maximale Anfragen pro Tag für diese Verbindung. Überschreibt den Standardwert des Anbieters.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Token/Tag)", "rateLimitOverridesTpmHint": "Maximale Token pro Minute für diese Verbindung. Überschreibt den Standardwert des Anbieters.", "rateLimitOverridesTpmLabel": "TPM (Token/Min.)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Titel für die Aktualisierung des OAuth-Tokens", + "regionHint": "Hinweis zur Region", + "regionLabel": "Regionsbezeichnung", + "removeThisKey": "Diesen Schlüssel entfernen", + "routingTagsHint": "Hinweis zu Routing-Tags", + "routingTagsLabel": "Bezeichnung für Routing-Tags", + "routingTagsPlaceholder": "Platzhalter für Routing-Tags", + "search": "Suchen", + "searchEngineIdHint": "Hinweis zur Suchmaschinen-ID", + "searchEngineIdLabel": "Bezeichnung der Suchmaschinen-ID", + "searchEngineIdRequired": "Suchmaschinen-ID ist erforderlich", + "searchProvider": "Suchanbieter", + "searchProviderDesc": "Beschreibung des Suchanbieters", "searchProviders": "Anbieter suchen...", "searchByModel": "Nach Modell suchen…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Überschrift für Suchanbieter", + "searxngBaseUrlHint": "Hinweis zur Searxng-Basis-URL", + "searxngInfo": "Searxng-Informationen", + "sessionCookieLabel": "Bezeichnung des Sitzungscookies", + "showEmail": "E-Mail-Adresse anzeigen", + "snowflakeBaseUrlHint": "Hinweis zur Snowflake-Basis-URL", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Hinweis zur Tag-Gruppe", + "tagGroupLabel": "Bezeichnung der Tag-Gruppe", + "tagGroupPlaceholder": "Platzhalter für Tag-Gruppe", + "testModel": "Modell testen", + "testingModel": "Modell wird getestet", "modelTestQuotaTooltip": "Kontingent erschöpft — wird morgen zurückgesetzt oder benötigt eine Auffüllung", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Badge „Token abgelaufen“", + "tokenExpiredTitle": "Token abgelaufen", + "tokenExpiresSoonTitle": "Token läuft bald ab", + "tokenShort": "Token (kurz)", + "totalKeysRotating": "{count, plural, one {1 Schlüssel wird rotiert} other {# Schlüssel werden rotiert}}", + "unhideModel": "Modell wieder einblenden", + "upstreamProxyProviders": "Upstream-Proxy-Anbieter", "validationModelIdHint": "Modell, das zur Überprüfung des API-Schlüssels verwendet wird. Leer lassen, um das erste verfügbare Modell des Anbieters zu verwenden.", "validationModelIdLabel": "Validierungsmodell", "validationModelIdPlaceholder": "z. B. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Füge dein Service-Account-JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) oder ein OAuth-access_token ein", + "webCookieProviders": "Web-Cookie-Anbieter", + "weeklyShort": "Wöchentl.", + "xiaomiMimoBaseUrlHint": "Hinweis zur Xiaomi-Mimo-Basis-URL", "globalCodexServiceMode": "Globaler Codex-Dienstmodus", "connect": "Verbinden", "manualApiKey": "Manueller API-Schlüssel", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Von der Zed IDE im Betriebssystem-Schlüsselbund gespeicherte KI-Anbieter-Anmeldedaten (OpenAI, Anthropic, Google, Mistral, xAI) erkennen und als Verbindungen importieren. Die Zed IDE muss auf diesem Computer installiert sein.", "zedImportButton": "Importieren von Zed", "zedImportFailed": "Zed-Import fehlgeschlagen", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Hinweis zum Zed-Import", + "zedImportNetworkError": "Netzwerkfehler beim Zed-Import", + "zedImportNone": "Keine Zed-Importe", "zedImportSuccess": "{credentials} Anmeldeinformationen von Zed für {providers} Anbieter importiert", "zedImporting": "Importiere…", "zedNoCredentials": "Keine Zed-Anmeldedaten im Schlüsselbund gefunden", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Vergünstigter API-Proxy für über 40 Modelle, darunter GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Holen Sie sich Ihren API-Schlüssel unter https://freeaiapikey.com/dashboard. Basis-URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Holen Sie sich 300 $ kostenloses API-Guthaben unter https://freemodel.dev – keine Zahlungsinformationen erforderlich. OpenAI-kompatibler Endpunkt. GPT-5.4- und GPT-5.5-Modelle verfügbar.", "friendliai": "Kostenlose Stufe für serverlose Inferenz – keine Kreditkarte erforderlich", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Kostenloses Kontingent über Google AI Studio; Kontingente pro Modell werden nicht mehr veröffentlicht (siehe Kontingentseite in AI Studio) — keine Kreditkarte erforderlich.", "gigachat": "GigaChat (Sber) mit einem API-Schlüssel verbinden.", "gitlab": "Persönliches GitLab-Zugriffstoken für die öffentliche Code Suggestions API. Konfigurieren Sie eine selbstgehostete Basis-URL, wenn Sie nicht gitlab.com verwenden.", "gitlawb-gmi": "Holen Sie sich Ihren API-Schlüssel aus dem Gitlawb Opengateway-Dashboard.", @@ -6184,7 +6187,7 @@ "glm-cn": "GLM Coding (China) mit einem API-Schlüssel verbinden.", "glmt": "Voreingestelltes GLM-Profil mit höherem Token-Budget, aktiviertem Denken und längerem Timeout.", "getgoapi": "GoAPI mit einem API-Schlüssel verbinden.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Kostenloser Tarif: Limits pro Modell (200.000 Token/Tag pro Chatmodell; RPM/RPD siehe console.groq.com/docs/rate-limits) — keine Zahlungsmethode hinterlegt.", "haiper": "API-Schlüssel unter haiper.ai/haiper-api anfordern", "heroku": "Heroku AI mit einem API-Schlüssel verbinden.", "hcnsec": "API-Schlüssel unter api.hcnsec.cn anfordern", @@ -6252,7 +6255,7 @@ "requesty": "Erstellen Sie einen API-Schlüssel unter https://app.requesty.ai und fügen Sie ihn hier als Bearer-Token ein. OpenAI-kompatibler Endpunkt unter https://router.requesty.ai/v1 mit einem Live-Katalog unter /v1/models.", "runwayml": "Die Runway-Videogenerierung ist aufgabenbasiert. OmniRoute übermittelt Text-to-Video- oder Image-to-Video-Jobs, fragt /v1/tasks/[id] ab und normalisiert die fertigen Videoausgaben zurück in die OpenAI-ähnliche Antwort von /v1/videos/generations.", "sambanova": "5 $ kostenloses Guthaben bei Registrierung (30 Tage Gültigkeit), keine Kreditkarte erforderlich", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Erstelle unter https://seekai.cc einen API-Schlüssel und füge ihn dann hier als Bearer-Token ein. OpenAI-kompatible Basis-URL: https://seekai.cc/v1.", "sap": "Die Modellerkennung verwendet /v2/lm/scenarios/foundation-models/models auf AI_API_URL. Chat-Anfragen verwenden deploymentUrl/chat/completions und erfordern AI-Resource-Group.", "sarvam": "Sarvam AI ist OpenAI-kompatibel unter /v1. OmniRoute durchsucht /v1/models und leitet den Chat-Verkehr an /v1/chat/completions weiter. Die Modelle sind auf indische Sprachen abgestimmt.", "scaleway": "1 Mio. kostenlose Token für neue Konten — EU-DSGVO-konform (Paris), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Claude Code mit dem bestehenden OAuth-Flow verbinden.", "cline": "Cline mit dem bestehenden OAuth-Flow verbinden.", "cursor": "Cursor IDE mit dem bestehenden OAuth-Flow verbinden.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Verbinde Cursor mit einem Benutzer-API-Schlüssel (crsr_...) von cursor.com/dashboard/api; keine IDE-Sitzung erforderlich.", "github": "GitHub Copilot mit dem bestehenden OAuth-Flow verbinden.", "gitlab-duo": "OAuth-Anwendung mit den Scopes ai_features + read_user. Konfigurieren Sie GITLAB_DUO_OAUTH_CLIENT_ID und optional GITLAB_DUO_OAUTH_CLIENT_SECRET auf dieser OmniRoute-Instanz.", "kilocode": "Kilo Code mit dem bestehenden OAuth-Flow verbinden.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Kopieren Sie die erforderlichen Zugangsdaten von der Domain des Anbieters. Bei Cookies nur den Cookie-Header-Wert kopieren und Cookie: weglassen.", "webSessionGuideStep3Manual": "Manueller Pfad: Öffnen Sie die Entwicklertools des Browsers (F12 → Netzwerk), aktualisieren Sie die Seite, öffnen Sie eine authentifizierte Anfrage und kopieren Sie den Wert des Cookie-Headers aus den Anfrage-Headern — lassen Sie das Präfix Cookie: weg.", "webSessionGuideStep4": "Fügen Sie den Wert hier ein und prüfen Sie die Verbindung. Falls er nicht mehr funktioniert, melden Sie sich erneut an und ersetzen ihn durch einen frischen Wert.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har-Datei importieren", + "harImportButtonBusy": "Wird importiert…", + "harImportButtonHint": "Exportiere die Datei über die Registerkarte „Network“ in DevTools, nachdem du mindestens eine Chatnachricht gesendet hast.", + "harImportStatusValid": "Importiert — noch etwa {minutes} Min. gültig.", + "harImportStatusExpiringSoon": "Importiert — nur noch etwa {minutes} Min. gültig.", + "harImportStatusExpired": "Importiert, aber dieses Token ist bereits abgelaufen (vor {minutes} Min.) — exportiere eine neue HAR-Datei.", + "harImportStatusUnknownExpiry": "Importiert. Das Ablaufdatum konnte nicht ermittelt werden.", + "harImportErrorNotJson": "Diese Datei enthält kein gültiges JSON — handelt es sich wirklich um einen .har-Export?", + "harImportErrorNoEntries": "Diese HAR-Datei enthält keine aufgezeichneten Netzwerkeinträge.", + "harImportErrorNoChathubUrl": "In dieser HAR-Datei wurde keine Copilot-Chatverbindung gefunden. Sende mindestens eine Chatnachricht in m365.cloud.microsoft, bevor du exportierst.", + "harImportErrorUnparsableUrl": "Die Chatverbindung wurde gefunden, aber ihre URL konnte nicht ausgelesen werden.", + "harImportErrorMissingFields": "Die Chatverbindung wurde gefunden, aber das Token fehlte darin.", + "harImportErrorReadFailed": "Diese Datei konnte nicht gelesen werden.", + "harImportErrorUnknown": "Aus dieser HAR-Datei konnten keine Anmeldedaten extrahiert werden.", "webSessionSecurityHint": "Behandeln Sie dies wie ein Passwort: Es kann Zugriff auf Ihr angemeldetes Webkonto ermöglichen, bis es abläuft oder widerrufen wird.", "webNoAuthGuideTitle": "Keine Zugangsdaten erforderlich", "webNoAuthGuideBody": "{provider} benötigt keinen API-Schlüssel und kein Cookie. Speichern Sie die Verbindung, um den kostenlosen Web-Endpunkt zu verwenden.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Befehls-Code auth abgelaufen", "commandCodeConnected": "Befehlscode verbunden", "commandCodeConnectionAdded": "Befehlscode-Verbindung hinzugefügt", + "clearConnectionCooldown": "Sperrzeit aufheben", + "clearConnectionCooldownInProgress": "Wird aufgehoben…", + "clearConnectionCooldownTitle": "Sperrzeit jetzt aufheben — verwenden, wenn das Kontingent beim vorgelagerten Anbieter bereits aktualisiert wurde", "commandCodeLinkExpired": "Der Link zum Befehlscode ist abgelaufen", "commandCodeOpeningStudio": "Öffne Command Code Studio…", "commandCodePopupBlocked": "Popup blockiert. Bitte erlauben Sie Popups und versuchen Sie es erneut mit Command Code Connect.", "commandCodeStartFailed": "Fehler beim Starten des Befehls Code auth", "connectionDeleted": "Verbindung gelöscht", "connectionFallback": "Verbindung", + "connectionCooldownCleared": "Sperrzeit aufgehoben — Verbindung nimmt wieder am Routing teil", "coolingConnectionsDescription": "Diese Verbindungen kühlen nach der letzten Anfrage ab. OmniRoute überspringt sie, bis der Timer abläuft — keine manuelle Deaktivierung nötig.", "coolingConnectionsTitle": "Aktuell kühlen ({count})", + "failedClearConnectionCooldown": "Sperrzeit konnte nicht aufgehoben werden", "failedDeleteAlias": "Alias konnte nicht gelöscht werden", "failedDeleteConnection": "Verbindung konnte nicht gelöscht werden", "failedDistributeProxies": "Verteilung der Proxys fehlgeschlagen.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Einstellungen für den gespeicherten Modell-Endpunkt", "searchByModelAria": "Nach Modell suchen", "selectSupportedEndpoint": "Wählen Sie mindestens einen unterstützten Endpunkt aus", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Testsystem / CLI" }, "settings": { "title": "Einstellungen", @@ -6554,22 +6557,22 @@ "systemPrompt": "Systemaufforderung", "thinkingBudget": "Denkendes Budget", "proxy": "Stellvertreter", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP-Proxy", "1proxy": "1proxy", "proxySubTabsAria": "Proxy-Bereiche", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "requestBodyLimitTitle": "Limit für Anfragekörper", + "requestBodyLimitDescription": "Maximale Größe der akzeptierten API-Nutzlast, bevor ein Anfragekörper verarbeitet wird. Spezielle Upload-Routen behalten mindestens ihr integriertes Limit von 100 MB bei.", + "requestBodyLimitInputLabel": "Limit für Anfragekörper in MB", + "requestBodyLimitEmptyError": "Limit in MB eingeben", + "requestBodyLimitWholeNumberError": "Geben Sie eine ganze Zahl ein", + "requestBodyLimitMinimumError": "Minimum: {min} MB", + "requestBodyLimitMaximumError": "Maximum: {max} MB", + "requestBodyLimitLoadFailed": "Einstellungen für das Anfragelimit konnten nicht geladen werden", + "requestBodyLimitSaveSuccess": "Limit für Anfragekörper gespeichert", + "requestBodyLimitSaveFailed": "Limit für Anfragekörper konnte nicht gespeichert werden", + "requestBodyLimitSaving": "Wird gespeichert...", + "requestBodyLimitSave": "Speichern", + "requestBodyLimitCurrent": "Aktuell: {value}", "cacheConfigLoadFailed": "Fehler beim Laden der Cache-Einstellungen", "cacheConfigSaveSuccess": "Cache-Einstellungen gespeichert", "cacheConfigSaveFailed": "Fehler beim Speichern der Cache-Einstellungen", @@ -6593,59 +6596,59 @@ "enablePassword": "Passwort aktivieren", "darkMode": "Dunkler Modus", "lightMode": "Lichtmodus", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Gedächtnis", + "memoryDesc": "Dauerhaftes sitzungsübergreifendes Konversationsgedächtnis", + "memoryEnabled": "Gedächtnis aktivieren", + "memoryEnabledDesc": "Wenn diese Option aktiviert ist, fügt OmniRoute relevanten Kontext aus früheren Sitzungen ein.", "memoryTokenCostWarning": "Achtung: Wenn der Speicher aktiviert ist, fügt OmniRoute bis zu {tokens} Token an abgerufenem Kontext in jede Chat-Anfrage ein – dies erhöht den Token-Verbrauch und die Kosten. Um die Einfügung für eine bestimmte Anfrage zu überspringen, senden Sie den Header \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", + "maxTokens": "Max. Tokens", + "retentionDays": "Aufbewahrung", + "recent": "Neueste", + "recentDesc": "Chronologisches Fenster", + "semantic": "Semantisch", + "semanticDesc": "Vektorsuche", "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "hybridDesc": "Neueste + Semantisch", + "skillsTitle": "Fähigkeiten", + "skillsDesc": "Werkzeuge für Modelle", + "skillsEnabled": "Fähigkeiten aktivieren", + "skillsEnabledDesc": "Ermöglicht Agenten, Funktionen auszulösen.", + "skillsComingSoon": "Marktplatz für Skills demnächst verfügbar.", + "memorySkillsTitle": "Speicher & Skills", + "memorySkillsDesc": "Persistenter Kontext & Fähigkeiten", + "modelsDevTitle": "Modelldatenbank", + "modelsDevDesc": "Preise, Fähigkeiten und Spezifikationen automatisch von models.dev synchronisieren", + "modelsDevEnabled": "Synchronisierung mit models.dev aktivieren", + "modelsDevEnabledDesc": "Modellpreise, Fähigkeiten und Spezifikationen aus der Open-Source-Datenbank models.dev abrufen", + "modelsDevInterval": "Synchronisierungsintervall", + "syncNow": "Jetzt synchronisieren", + "syncing": "Synchronisierung läuft...", + "lastSync": "Letzte Synchronisierung", + "never": "Nie", "justNow": "gerade jetzt", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Synchronisierungsstatistik", + "modelsDevStatsDesc": "Aktuelle Datenabdeckung von models.dev", "providers": "Anbieter", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modelle mit Preisangaben", + "capabilities": "Fähigkeiten", + "lastSyncCount": "Anzahl bei letzter Synchronisierung", + "lastSyncFull": "Letzte vollständige Synchronisierung", + "modelsDevInfo": "Funktionsweise", + "modelsDevInfoDesc": "models.dev ist eine Open-Source-Datenbank mit Spezifikationen zu KI-Modellen, die vom SST/OpenCode-Team gepflegt wird. Sie enthält Preise, Fähigkeiten, Kontextlimits und Modalitäten für über 4.000 Modelle von mehr als 100 Anbietern.", + "modelsDevInfoResolution": "Reihenfolge der Preisermittlung (höchste Priorität zuerst):", + "modelsDevInfoOrder": "Benutzerdefinierte Überschreibung → models.dev → LiteLLM → Fest codierter Standardwert", "systemTheme": "Systemthema", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Debug-Modus aktivieren", "logToolSourcesToggle": "Tool-Quellen protokollieren", "logToolSourcesDescription": "Erzeugt eine Diagnose-Protokollzeile pro Anfrage, die die Anzahl der Tools und die Aufschlüsselung nach MCP-/gehosteten/Client-Quellen zusammenfasst.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Informationen auf der Startseite anheften", "homePinnedSectionsDesc": "Wählen Sie aus, welche Abschnitte oben auf der Startseite angeheftet werden sollen.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Kontingentgrenzen der Anbieter", + "homeProviderQuotaLimitsDesc": "Den Statusbereich für Anbieterkontingente (mit der Schaltfläche „Alle aktualisieren“) oben auf der Startseite anheften.", + "homeQuickStart": "Schnellstart", + "homeQuickStartDesc": "Den Schnellstart-Bereich auf der Startseite anzeigen.", + "homeProviderTopology": "Anbietertopologie", + "homeProviderTopologyDesc": "Die Anbietertopologie auf der Startseite anzeigen.", "accountEmailVisibility": "Sichtbarkeit der E-Mail-Adresse des Kontos", "accountEmailVisibilityDesc": "Vollständige E-Mail-Adressen des Kontos in den Ansichten für Anbieter, Combos, Protokolle, Kontingente und Playground anzeigen. Deaktivieren Sie dies, um sie standardmäßig zu maskieren.", "comboConfigMode": "Konfigurationsmodus für Combos", @@ -6661,53 +6664,53 @@ "providerQuotaAutoRefreshInterval": "Aktualisierungsintervall", "providerQuotaAutoRefreshIntervalDesc": "Wie oft die Kontingentansicht aktualisiert werden soll, in Sekunden.", "seconds": "Sekunden", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Elemente der Seitenleiste anzeigen", "enableCache": "Cache aktivieren", "cacheTTL": "Cache-TTL", "maxCacheSize": "Maximale Cache-Größe", "clearCache": "Cache leeren", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Cache erfolgreich geleert", + "clearCacheFailed": "Cache konnte nicht geleert werden", "cacheHits": "Cache-Treffer", "cacheMisses": "Cache-Fehler", "hitRate": "Trefferquote", "cacheEntries": "Cache-Einträge", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Cache-Einstellungen", + "semanticCache": "Semantischer Cache", + "maxEntries": "Maximale Einträge", + "ttlMinutes": "TTL (Minuten)", "promptCache": "Prompt-Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Strategie", + "preserveClientCache": "Client-Cache beibehalten", + "enabled": "Aktiviert", "loading": "Loading...", "saving": "Sparen...", - "save": "Save", + "save": "Speichern", "circuitBreaker": "Leistungsschalter", "retryPolicy": "Wiederholungsrichtlinie", "maxRetries": "Max. Wiederholungsversuche", "retryDelay": "Wiederholungsverzögerung", - "timeoutMs": "Timeout (ms)", + "timeoutMs": "Zeitüberschreitung (ms)", "enableSystemPrompt": "Aktivieren Sie die Systemaufforderung", "systemPromptText": "Systemaufforderungstext", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Gesperrte Konten automatisch deaktivieren", + "autoDisableDescription": "Anbieterverbindungen dauerhaft als deaktiviert markieren, wenn sie bestimmte endgültige Sperrsignale zurückgeben (z. B. HTTP 403 „verify your account“). Dadurch werden sie aus der Kombinationsrotation entfernt.", + "autoDisableThreshold": "Sperrschwellenwert", + "autoDisableThresholdDesc": "Anzahl aufeinanderfolgender Sperrsignale, die vor der dauerhaften Deaktivierung erforderlich sind.", + "autoDisableBannedScope": "Automatische Deaktivierung anwenden auf", + "autoDisableBannedScopeDesc": "Anmeldezugänge (kostenpflichtige Abonnements und kostenlose Konten) können vom vorgeschalteten Dienst gesperrt werden, wenn OmniRoute nach einer Sperre weiterhin neue Versuche unternimmt. Bei kostenpflichtigen Prepaid-API-Schlüsseln besteht dieses Risiko nicht – belassen Sie sie im Pool, damit „Fill-first“ den nächsten Schlüssel verwenden kann.", + "autoDisableBannedScopeAll": "Alle Verbindungen", + "autoDisableBannedScopeAllDesc": "Jede Verbindung deaktivieren, die ein dauerhaftes Sperrsignal zurückgibt, einschließlich Prepaid-API-Schlüsseln.", + "autoDisableBannedScopeSubscription": "Nur Anmelde-/Abonnementkonten", + "autoDisableBannedScopeSubscriptionDesc": "OAuth-, Cookie-, Sitzungs- und Webanmeldezugänge (kostenpflichtig oder kostenlos) deaktivieren. Prepaid-API-Schlüssel bleiben aktiv, damit das Routing ausweichen kann.", "customBannedSignals": "Gesperrte Keywords", "customBannedSignalsDesc": "Zusätzliche Keywords, die die Erkennung einer dauerhaften Kontosperrung auslösen. Integrierte Keywords gelten immer.", "customBannedSignalsPlaceholder": "z. B. api key revoked", "noCustomBannedSignals": "Keine benutzerdefinierten Keywords. Nur integrierte Keywords sind aktiv.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Resilienzstruktur", "resilienceStructureDesc": "Auf dieser Seite wird lediglich das Verhalten konfiguriert. Der Live-Breaker-Status wird auf der Seite „Zustand“ angezeigt. Combo-spezifische Wiederholungsversuche und Round-Robin-Slot-Steuerung bleiben in den Combo-Einstellungen.", "enableThinking": "Denken aktivieren", - "maxThinkingTokens": "Max Thinking Tokens", + "maxThinkingTokens": "Maximale Thinking-Tokens", "enableProxy": "Proxy aktivieren", "perKeyProxyEnabled": "Proxy-Zuweisung pro Schlüssel aktivieren", "perKeyProxyEnabledDesc": "Wenn aktiviert, kann jede Provider-Verbindung ihre eigene Proxy-Zuweisung verwenden", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Tailscale Funnel-Steuerelemente auf der Endpunktseite anzeigen.", "showNgrokTunnel": "Ngrok-Tunnel", "showNgrokTunnelDesc": "Ngrok-Tunnel-Steuerelemente auf der Endpunktseite anzeigen.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Elemente der Seitenleiste ausblenden", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", + "presetAll": "Alle", + "presetAllDesc": "Alles anzeigen", + "presetEssentials": "Grundfunktionen", + "presetEssentialsDesc": "Einsteigerpfad – erweiterte Werkzeuge bleiben durchsuchbar", "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetMinimalDesc": "Nur Kernseiten", + "presetDeveloper": "Entwickler", + "presetDeveloperDesc": "Entwickler- und Proxy-Werkzeuge", + "presetAdmin": "Administration", + "presetAdminDesc": "Überwachung und Audit", + "settingsSidebarTitle": "Anpassung der Seitenleiste", + "settingsSidebarDesc": "Wählen Sie aus, welche Elemente in der Seitenleiste angezeigt werden sollen. Bei „Grundfunktionen“ bleiben erweiterte Werkzeuge durchsuchbar.", "hideHealthLogs": "Gesundheitsprüfungsprotokolle ausblenden", "hideHealthLogsDesc": "Wenn diese Option aktiviert ist, werden [HealthCheck]-Meldungen in der Serverkonsole unterdrückt", "themeAccent": "Themenfarbe", @@ -6780,19 +6783,19 @@ "themeOrange": "Orange", "themeCyan": "Cyan", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Anwendungsnamen und Logo anpassen", + "appName": "Anwendungsname", + "appNameDesc": "In der Seitenleiste und im Browser-Tab angezeigter Name", + "customLogo": "Benutzerdefinierte Logo-URL", + "customLogoDesc": "URL zu Ihrem benutzerdefinierten Logo", + "uploadLogo": "Logo hochladen", + "resetLogo": "Auf Standard zurücksetzen", + "logoPreview": "Vorschau", + "customFavicon": "Browser-Favicon", + "customFaviconDesc": "URL zu Ihrem benutzerdefinierten Favicon (wird im Browser-Tab angezeigt)", + "uploadFavicon": "Favicon hochladen", + "resetFavicon": "Favicon zurücksetzen", + "faviconPreview": "Favicon-Vorschau", "logoFileTooLarge": "Logo-Datei muss kleiner als 500KB sein", "faviconFileTooLarge": "Favicon-Datei muss kleiner als 50KB sein", "invalidLogoFileType": "Ungültiger Dateityp. Bitte laden Sie PNG, JPG, SVG, GIF oder WebP hoch.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Aktualisierungsintervall", "ruleModeDescription": "Regelmodus-Beschreibung" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", + "bulkHealthcheck": "Massen-Zustandsprüfung", + "bulkHealthcheckDesc": "Alle konfigurierten Proxys anhand einer Ziel-URL testen, um festzustellen, welche funktionieren.", + "healthcheckTesting": "Test läuft...", + "healthcheckAll": "Zustand aller prüfen", + "healthcheckFailed": "Zustandsprüfung konnte nicht ausgeführt werden", + "healthcheckTestingAll": "Alle Proxys werden parallel getestet...", + "healthcheckTotal": "Gesamt", + "healthcheckWorking": "Funktionsfähig", + "healthcheckFailedLabel": "Fehlgeschlagen", "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "healthcheckProxyUrl": "Proxy-URL", + "healthcheckLatency": "Latenz", "proxyDocumentationScopeTitle": "Proxy-Scope-Auflösung", "proxyDocumentationScopeDescBefore": "OmniRoute löst den ausgehenden Proxy in folgender Prioritätsreihenfolge auf:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "Kombination → Konto → Anbieter → global", "proxyDocumentationScopeDescAfter": ". Der spezifischste Scope gewinnt.", "proxyDocumentationAddTitle": "Einen benutzerdefinierten Proxy hinzufügen", "proxyDocumentationAddDescBefore": "Gehen Sie zum", @@ -6980,11 +6983,11 @@ "thinkingBudgetTitle": "Denkendes Budget", "thinkingBudgetDesc": "Kontrollieren Sie die Verwendung von KI-Begründungstoken für alle Anfragen", "thinkingBudgetIndependenceHint": "Kompressions-, Routing- und Token-Limit-Funktionen funktionieren in jedem Modus. Auto bedeutet nicht „Auto-Anzeige-Denken“ – es entfernt die Felder für die Client-Argumentation.", - "passthrough": "Passthrough", + "passthrough": "Durchleitung", "passthroughDesc": "Keine Änderungen – der Kunde kontrolliert das Denkbudget", "thinkingModePassthrough": "Durchleitung", "thinkingModePassthroughDesc": "Lassen Sie die Client-Begründung unverändert (Aufwand, Zusammenfassung, Denkblöcke). Erforderlich für Codex/Desktop sichtbares Denken. Standard.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automatisch (entfernen)", "thinkingModeAutoDesc": "Entfernen Sie alle Felder für das Denken/Überlegen des Clients (reasoning, reasoning_effort, Claude thinking, Gemini thinking_config) und lassen Sie den Anbieter Standardwerte erfinden. Denken-Panels können ausgeblendet werden und die Zusammenfassungsanfragen des Clients können unterbrochen werden.", "thinkingModeCustom": "Benutzerdefiniert", "thinkingModeCustomDesc": "Überschreibe jede Anfrage mit einem festen Denk-Token-Budget, das du unten festlegst.", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} Anbieter von /models blockiert", "blockProviderTitle": "Blockieren Sie {provider}", "unblockProviderTitle": "Entsperren Sie {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "CLI-Fingerprint-Abgleich", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} Anbieter mit aktivem CLI-Fingerprint", + "enableFingerprintTitle": "Fingerprint für {provider} aktivieren", + "disableFingerprintTitle": "Fingerprint für {provider} deaktivieren", "systemTransforms": "Systemblock-Transformationspipeline", "systemTransformsDesc": "Pro Anbieter geordnete Pipeline von Transformationen, die vor der Weiterleitung auf den Anforderungstext angewendet werden. Unterstützt jede Anbieter-ID.", "systemTransformsAddProvider": "Anbieter hinzufügen", @@ -7065,12 +7068,12 @@ "leastUsedDesc": "Wählen Sie das zuletzt verwendete Konto aus", "costOpt": "Kosten Opt", "costOptDesc": "Bevorzugen Sie das günstigste verfügbare Konto", - "resetAware": "Reset-Aware RR", + "resetAware": "Zurücksetzungsabhängiges RR", "resetAwareDesc": "Bevorzugt Konten mit gesunder Restquote und näherem Reset", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kontingentgewichtet", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Strikt zufällig", + "strictRandomDesc": "Kartenmischen – jedes Konto wird einmal verwendet, bevor neu gemischt wird", "stickyLimit": "Sticky-Limit", "stickyLimitDesc": "Anrufe pro Konto vor dem Wechsel", "routingStrategyTitle": "Routing-Strategie", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Globale Account-Strategie für diesen Provider überschreiben (9router-Parität).", "providerRoutingStrategy": "Account-Strategie", "providerRoutingInheritGlobal": "Globalen Standard übernehmen", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Grenzwert für Kontingent-Vorabprüfung", + "quotaPreflightSubtitle": "Konten ohne verbleibendes Kontingent überspringen, bevor die Anfrage an den Upstream gesendet wird", + "quotaPreflightEnable": "Kontingent-Vorabprüfung aktivieren", + "quotaPreflightEnableDesc": "Vor jeder Anfrage das verbleibende Kontingent des Kontos prüfen (5-Stunden-, Wochen- und Monatszeiträume). Konten am oder unter dem Grenzwert werden ohne Upstream-Aufruf übersprungen. Auf der Seite „Anbieterkontingent“ festgelegte zeitraumspezifische Grenzwerte haben immer Vorrang vor dem hier angegebenen Standardwert.", + "quotaPreflightCutoff": "Globaler Grenzwert (min. verbleibender Anteil in %)", + "quotaPreflightCutoffDesc": "Ein Konto nicht mehr verwenden, wenn sein verbleibendes Kontingent für einen Zeitraum ohne eigenen Grenzwert auf diesen Prozentsatz oder darunter fällt. Entspricht den Balken für den verbleibenden Prozentsatz auf der Seite „Anbieterkontingent“.", + "quotaPreflightWindowsHint": "Zeiträume mit eigenem zeitraum- oder anbieterspezifischem Grenzwert (festgelegt im Dialog „Grenzwert“ auf der Seite „Anbieterkontingent“) sind von diesem Standardwert nicht betroffen.", + "quotaPreflightLoadFailed": "Einstellungen für die Kontingent-Vorabprüfung konnten nicht geladen werden.", "modelAliases": "Modell-Aliase", "modelAliasesTitle": "Modell-Aliase", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Modellnamen mithilfe exakter Übereinstimmungen oder Platzhaltermustern neu zuordnen.", "addCustomAlias": "Benutzerdefinierten Alias hinzufügen", "deprecatedModelId": "Veraltete Modell-ID", "newModelId": "Neue Modell-ID", @@ -7137,7 +7140,7 @@ "ipAccessControlDesc": "Blockieren oder erlauben Sie bestimmte IP-Adressen", "ipModeDisabled": "Deaktiviert", "ipModeBlacklist": "Schwarze Liste", - "ipModeWhitelist": "Whitelist", + "ipModeWhitelist": "Zulassungsliste", "ipModeWhitelistPriority": "WL-Priorität", "addIpAddress": "IP-Adresse hinzufügen", "ipAddressPlaceholder": "192.168.1.0/24 oder 10.0.*.*", @@ -7188,11 +7191,11 @@ "comboStrategyAria": "Combo-Strategie", "priority": "Priorität", "weighted": "Gewichtet", - "contextRelay": "Context Relay", + "contextRelay": "Kontextweitergabe", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Max. Wiederholungsversuche", "retryDelayLabel": "Wiederholungsverzögerung (ms)", - "timeoutLabel": "Timeout (ms)", + "timeoutLabel": "Zeitüberschreitung (ms)", "healthCheck": "Gesundheitscheck", "healthCheckDesc": "Überprüfen Sie vorab die Verfügbarkeit des Anbieters", "trackMetrics": "Verfolgen Sie Metriken", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Parallelität / Modell", "queueTimeout": "Warteschlangen-Timeout (ms)", "queueDepth": "Warteschlangentiefe", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Übergabeschwellenwert", + "contextRelayMaxMessages": "Maximale Anzahl von Nachrichten für die Zusammenfassung", + "contextRelaySummaryModel": "Zusammenfassungsmodell", + "contextRelayProviderNote": "Die Kontextweitergabe generiert derzeit Übergaben für Codex-Konten und verwendet diese Werte als globale Standardwerte für neue oder nicht konfigurierte Kombinationen.", "providerProfiles": "Anbieterprofile", "providerProfilesDesc": "Separate Resilienzeinstellungen für OAuth-Anbieter (sitzungsbasiert) und API-Schlüsselanbieter (gemessen). OAuth-Anbieter haben aufgrund niedrigerer Ratenlimits strengere Schwellenwerte.", "oauthProviders": "OAuth-Anbieter", @@ -7299,7 +7302,7 @@ "daysAgo": "Vor {count}d", "backupReasonManual": "Handbuch", "backupReasonPreRestore": "vor der Wiederherstellung", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# Verbindung} other {# Verbindungen}}", "noChangesSinceBackup": "Keine Änderungen seit der letzten Sicherung", "backupFailed": "Die Sicherung ist fehlgeschlagen", "restoreFailed": "Wiederherstellung fehlgeschlagen", @@ -7329,7 +7332,7 @@ "configured": "konfiguriert", "none": "Keine", "modelOverrideValuePlaceholder": "Numerischer Wert", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Englisch, kommagetrennt, z. B. low, medium, high", "addKeyValue": "Schlüssel-Wert hinzufügen", "noModelOverrides": "Keine Overrides für dieses Modell konfiguriert.", "modelOverrideLoadFailed": "Modell-Overrides konnten nicht geladen werden", @@ -7378,25 +7381,25 @@ "editPricing": "Preise bearbeiten", "viewFullDetails": "Vollständige Details anzeigen", "themeCoral": "Koralle", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Adaptive volumenbasierte Weiterleitung", + "adaptiveVolumeRoutingDesc": "Verbindungen basierend auf Nutzlastvolumen und Durchsatzbelastung dynamisch skalieren.", + "lkgpToggleTitle": "Zuletzt funktionierender Anbieter (LKGP)", + "lkgpToggleDesc": "Wenn diese Option aktiviert ist, merkt sich der Router, welcher Anbieter zuletzt eine erfolgreiche Antwort geliefert hat, und versucht es bei nachfolgenden Anfragen zuerst mit diesem.", "echoRequestedModelTitle": "Angeforderten Modellnamen in Antworten zurückgeben", "echoRequestedModelDesc": "Wenn aktiviert, gibt das `model`-Feld der Antwort den vom Client angeforderten Alias- oder Combo-Namen anstelle des Upstream-Modellnamens zurück. Behebt Probleme mit strikten Clients (z. B. Claude Desktop), die eine Antwort ablehnen, deren Modell nicht mit der Anfrage übereinstimmt.", "webSearchRouteTitle": "Websuche-Routing", "webSearchRouteDesc": "Wenn eine Anfrage ein natives web_search-Tool enthält, wird die gesamte Anfrage an dieses Modell statt an den Standard weitergeleitet – nützlich für Provider, die das web_search-Server-Tool von Anthropic nicht implementieren. Leer lassen zum Deaktivieren.", "webSearchRoutePlaceholder": "Modell suchen oder auswählen…", "paidModelPatternWarning": "Dieses Muster stimmt nur mit kostenpflichtigen Modellen überein – aktivieren Sie kostenpflichtige Modelle oder passen Sie das Muster an.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP-Cache leeren", + "lkgpCacheCleared": "LKGP-Cache erfolgreich geleert", + "lkgpCacheClearFailed": "LKGP-Cache konnte nicht geleert werden", + "days": "Tage", + "lkgp": "LKGP-Modus", + "lkgpDesc": "Zuletzt funktionierender Anbieter (vorhersehbare Ausfallsicherheit)", + "maintenance": "Wartung", + "purgeExpiredLogs": "Abgelaufene Protokolle löschen", + "purgeLogsFailed": "Protokolle konnten nicht gelöscht werden", "logsDeleted": "{count, plural, =0 {Keine abgelaufenen Protokolle bereinigt} one {# abgelaufenes Protokoll bereinigt} other {# abgelaufene Protokolle bereinigt}}", "resetUsageData": "Nutzungsdaten zurücksetzen", "resetUsageDataDesc": "Wählen Sie aus, wie weit zurückliegend Nutzungsdaten, Anfrageprotokolle und Analysedaten gelöscht werden sollen. Provider-Konfigurationen, Verbindungen, API-Schlüssel, Combos und Einstellungen bleiben erhalten. Diese Aktion kann nicht rückgängig gemacht werden.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Fehler beim Zurücksetzen der Nutzungsdaten", "reset": "Zurücksetzen", "resetting": "Wird zurückgesetzt...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", + "contextOpt": "Kontextoptimiert", + "contextOptDesc": "Leitet basierend auf den Anforderungen an das Kontextfenster und der Gesprächslänge weiter", "cacheOpt": "Cache-optimiert", "cacheOptDesc": "Hält denselben wiederverwendbaren Prompt-Präfix auf demselben Provider-Konto", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "priorityDesc": "Sequenzieller Fallback – versucht zuerst Anbieter 1, dann Anbieter 2 und so weiter", + "weightedDesc": "Verteilt den Datenverkehr anhand prozentualer Gewichtungen auf die Anbieter", + "modelRoutingTitle": "Modellweiterleitungsregeln", + "modelRoutingDesc": "Modelle mithilfe von Glob-Mustern automatisch an bestimmte Kombinationen weiterleiten", + "addRule": "Regel hinzufügen", + "routeToCombo": "An Kombination weiterleiten", + "selectCombo": "Kombination auswählen...", + "priorityHint": "Höher = wird zuerst geprüft. Verwenden Sie 10+ für spezifische Muster.", + "patternHint": "Verwenden Sie * für beliebige Zeichen und ? für ein einzelnes Zeichen. Groß-/Kleinschreibung wird nicht berücksichtigt.", + "noRoutingRules": "Es sind keine Weiterleitungsregeln konfiguriert. Anfragen verwenden standardmäßig die globale Kombination.", + "routingRuleHint": "Fügen Sie eine Regel wie claude-opus* -> frontier-combo hinzu, um Anfragen automatisch weiterzuleiten.", + "deleteRoutingRule": "Diese Modellweiterleitungsregel löschen?", + "exactMatchMode": "Exakte Übereinstimmung", + "wildcardPatternMode": "Wildcard-Muster", + "exactMatchModeDesc": "Verwenden Sie exakte Aliasse für veraltete oder umbenannte Modell-IDs.", + "wildcardPatternModeDesc": "Verwenden Sie Wildcard-Aliasse mit * und ?, wenn eine Modellfamilie demselben Ziel zugeordnet werden soll.", + "noExactAliasesConfigured": "Keine Aliasse für exakte Übereinstimmungen konfiguriert.", + "wildcardRulesTitle": "Wildcard-Regeln", + "noWildcardAliasesConfigured": "Keine Wildcard-Aliasse konfiguriert.", + "overview": "Übersicht", + "unknownError": "Unbekannter Fehler", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Positivliste", + "syncDisabled": "Synchronisierung deaktiviert", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Synchronisierung aktiviert", + "blacklist": "Sperrliste", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", + "syncedModels": "Synchronisierte Modelle", "budget": "Budget", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Preise konnten nicht zurückgesetzt werden: {reason}", - "tab": "Tab", + "tab": "Registerkarte", "pricingSavedProvider": "Preis für {provider} gespeichert", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Preise konnten nicht gespeichert werden: {reason}", "pricingResetProvider": "Preis für {provider} zurückgesetzt", - "nextSync": "Next Sync", + "nextSync": "Nächste Synchronisierung", "pricingSyncFailedWithReason": "Preissynchronisierung fehlgeschlagen: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Synchronisierte Preise löschen", + "compressionTitle": "Prompt-Komprimierung", + "compressionDesc": "Reduzieren Sie die Token-Nutzung, indem Sie Prompts vor dem Senden an Anbieter komprimieren", "compressionGuidanceFullGuideLink": "Vollständiger Komprimierungsleitfaden", "compressionGuidanceShow": "Details", "compressionGuidanceHide": "Details ausblenden", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Geeigneten Chatverlauf umschreiben und dabei Code, URLs und Absicht beibehalten.", "tokenSaverFineTunePrefix": "Jede Engine feinabstimmen auf", "tokenSaverFineTuneSuffix": "oder Engines pro Anfrage kombinieren auf", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Komprimierungsmodus", + "compressionModeOff": "Aus", + "compressionModeOffDesc": "Keine Komprimierung angewendet", + "compressionModeLite": "Leicht", + "compressionModeLiteDesc": "Reduzierung von Leerzeichen und Leerzeilen", + "compressionModeStandard": "Standard (Höhlenmensch)", + "compressionModeStandardDesc": "Regelbasierte Komprimierung mit über 30 Mustern; Codeblöcke und URLs bleiben erhalten", + "compressionModeAggressive": "Aggressiv", + "compressionModeAggressiveDesc": "Zusammenfassung + Komprimierung von Tool-Ergebnissen + progressive Alterung für maximale Einsparungen", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Aggressive Motorkonfiguration", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Anzahl der letzten Nachrichten, die auf jeder Altersstufe aufbewahrt werden (höher = besser erhalten)", "compressionToolStrategies": "Tool-Ergebnisstrategien", "compressionToolStrategiesDesc": "Komprimierungsstrategien für verschiedene Tool-Ergebnistypen umschalten", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Allgemeine Einstellungen", + "compressionAutoTrigger": "Schwellenwert für automatische Auslösung", + "compressionCacheTTL": "Cache-TTL", + "compressionPreserveSystem": "System-Prompt beibehalten", "compressionPreserveSystemAlways": "Immer", "compressionPreserveSystemWhenNoCache": "Wenn kein Cache vorhanden", "compressionPreserveSystemNever": "Nie", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Gespeichert", "compressionExclusionsCount": "{count, plural, one {# Ausschluss} other {# Ausschlüsse}} konfiguriert", "compressionExclusionsEmpty": "Keine Ausschlüsse konfiguriert — jedes Modell/jeder Endpunkt ist für die Kompression berechtigt (Standardverhalten).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Konfiguration der Caveman-Engine", + "compressionCavemanConfigDesc": "Feinabstimmung der regelbasierten Komprimierungs-Engine", "compressionCavemanPanelHint": "Ein/Aus-Status und Stufe werden im Panel festgelegt:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", + "compressionRoles": "Nachrichtenrollen komprimieren", + "compressionRoleUser": "Benutzer", + "compressionRoleAssistant": "Assistent", "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionMinLength": "Mindestnachrichtenlänge", + "compressionSkipRules": "Komprimierungsregeln überspringen", + "compressionSkipRulesDesc": "Klicken Sie auf Regeln, um sie bei der Komprimierung zu überspringen", + "compressionPreservePatterns": "Muster beibehalten", + "compressionPreservePatternsDesc": "Regex-Muster, die niemals komprimiert werden (eines pro Zeile)", + "compressionLogTitle": "Komprimierungsprotokoll", + "compressionLogEmpty": "Noch keine komprimierten Anfragen. Die Komprimierungsstatistiken werden hier angezeigt, sobald Anfragen mit aktivierter Komprimierung verarbeitet wurden.", "minutes": "Minuten", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Befehlsabhängige Filterung der Werkzeugausgabe", + "compressionModeCodexResponses": "Werkzeugausgabe von Responses", + "compressionModeCodexResponsesDesc": "Konservative Komprimierung geeigneter Shell-, Patch-, Such-, Build- und JSON-Ausgaben", + "compressionModeStacked": "Gestapelt", + "compressionModeStackedDesc": "RTK-Filterung der Werkzeugausgabe, gefolgt von Caveman-Nachrichtenkomprimierung", + "qdrantTitle": "Qdrant (Vektorspeicher)", + "qdrantDesc": "Optional. Indiziert semantische Erinnerungen in einer externen Vektordatenbank, um sie schneller abzurufen.", + "qdrantStatusActive": "Aktiv", + "qdrantStatusError": "Fehler", + "qdrantStatusDisabled": "Deaktiviert", + "qdrantEnable": "Qdrant aktivieren", + "qdrantEnableDesc": "Wenn aktiviert, kann die semantische/hybride Strategie Qdrant zum Abrufen von Erinnerungen verwenden.", + "qdrantTesting": "Wird getestet...", + "qdrantTestConnection": "Verbindung testen", + "qdrantSaved": "Konfiguration gespeichert", + "qdrantSaveError": "Konfiguration konnte nicht gespeichert werden", + "qdrantHostHint": "Ohne Port. Beispiel: 127.0.0.1 oder http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Qdrant-Standardwert: 6333", + "qdrantCollectionHint": "Speicherort für Erinnerungspunkte.", + "qdrantEmbeddingModel": "Embedding-Modell", + "qdrantHelpTitle": "Hilfe zur Schnelleinrichtung", + "qdrantHelpQuickTitle": "Schnelleinrichtung (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Host: Qdrant-IP/-URL, Port: 6333, Sammlung: omniroute_memory.", + "qdrantHelpStep2": "2. Wenn Sie nvidia/llama-nemotron-embed-vl-1b-v2:free verwenden, legen Sie die Sammlungsdimension auf 2048 fest.", + "qdrantHelpStep3": "3. Modellfeld: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Speichern Sie die Konfiguration, testen Sie die Verbindung und anschließend die Suche.", + "qdrantEmbeddingQuickSelect": "Schnellauswahl aus erkannten Modellen...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Format: provider/model. Die Anmeldedaten des Anbieters müssen konfiguriert sein.", + "qdrantApiKeyPlaceholderKeep": "(leer lassen, um den aktuellen Schlüssel beizubehalten)", + "qdrantApiKeyPlaceholderOptional": "(leer lassen, wenn nicht verwendet)", + "qdrantSaveHint": "Tipp: Host/Port/Sammlung/Modell bearbeiten und auf „Speichern“ klicken. Der API-Schlüssel ist optional.", + "qdrantSearchTestTitle": "Suchtest", + "qdrantSearchTestDesc": "Erzeugt ein Embedding und sucht in Qdrant.", + "qdrantSearchPlaceholder": "Beispiel: Benutzereinstellungen, Verlauf usw.", + "qdrantNoResults": "Keine Ergebnisse (oder Qdrant ist nicht konfiguriert).", + "qdrantCleanupTitle": "Aufbewahrung und Bereinigung", + "qdrantCleanupDesc": "Entfernt abgelaufene und alte Punkte basierend auf", + "searching": "Suche läuft...", + "cleaning": "Bereinigung läuft...", + "cleanNow": "Jetzt bereinigen", "optional": "Optional", "current": "Aktuell", "remove": "Entfernen", @@ -7600,19 +7603,19 @@ "resilienceScope": "Geltungsbereich:", "resilienceTrigger": "Auslöser:", "resilienceEffect": "Wirkung:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", + "resilienceRequestQueueTitle": "Anfragewarteschlange und -rate", + "resilienceAutoEnableApiKeyProviders": "Für Anbieter mit API-Schlüssel automatisch aktivieren", + "resilienceRequestsPerMinute": "Anfragen pro Minute", + "resilienceMinTimeBetweenRequests": "Mindestzeit zwischen Anfragen", + "resilienceConcurrentRequests": "Gleichzeitige Anfragen", "resilienceConnectionScopeConcurrentRequests": "Gleichzeitige Anfragen pro Verbindung/Quota-Bereich", "resilienceGlobalConcurrentRequests": "Globale gleichzeitige Upstream-Anfragen (0 = deaktiviert)", "resilienceMaxQueueWaitTime": "Maximale Wartezeit in der Warteschlange", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Grundabklingzeit", + "resilienceUseUpstreamRetryHints": "Wiederholungshinweise des Upstream-Dienstes verwenden", + "resilienceDefaultPerProvider": "Standard (pro Anbieter)", + "resilienceAlwaysOn": "Immer aktiviert", + "resilienceAlwaysOff": "Immer deaktiviert", "routingRemoveEntry": "Eintrag entfernen", "routingNeedlesSubstrings": "Nadeln (passende Teilzeichenfolgen)", "routingCaseSensitive": "Groß- und Kleinschreibung beachten", @@ -7669,7 +7672,7 @@ "routingAntigravitySignatureDesc": "Steuern, ob OmniRoute nur gespeicherte Gemini-Thought-Signaturen wiederverwendet oder validierte, vom Client bereitgestellte Signaturen in Antigravity-kompatiblen Tool-Call-Abläufen akzeptiert.", "routingAntigravitySignatureEnabledLabel": "Aktiviert", "routingAntigravitySignatureEnabledDesc": "Aktuelles Verhalten. Vom Client bereitgestellte Signaturen ignorieren und weiterhin den gespeicherten OmniRoute-Ablauf verwenden.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Umgehen", "routingAntigravitySignatureBypassDesc": "Vom Client bereitgestellte Signaturen nach einfacher Validierung akzeptieren und bei Ungültigkeit auf die gespeicherte Signatur zurückgreifen.", "routingAntigravitySignatureBypassStrictLabel": "Strict umgehen", "routingAntigravitySignatureBypassStrictDesc": "Vollständige Protobuf-Validierung erfordern, bevor eine vom Client bereitgestellte Signatur akzeptiert wird.", @@ -7698,28 +7701,28 @@ "visionBridgePrompt": "Bridge-Eingabeaufforderung", "visionBridgePromptPlaceholder": "Beschreiben Sie dieses Bild kurz.", "visionBridgePromptHint": "Wird an das Vision-Modell gesendet, bevor die extrahierte Beschreibung wieder in die ursprüngliche Anfrage eingefügt wird.", - "visionBridgeTimeoutMs": "Timeout (ms)", + "visionBridgeTimeoutMs": "Zeitüberschreitung (ms)", "visionBridgeMaxImagesPerRequest": "Maximale Bilder pro Anfrage", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Maximale Backoff-Schritte", + "resilienceProviderBreakerTitle": "Leistungsschalter pro Anbieter", + "resilienceFailureThreshold": "Fehlerschwellenwert", + "resilienceDegradationThreshold": "Beeinträchtigungsschwellenwert", "resilienceResetTimeout": "Timeout zurücksetzen", "resilienceFailureThresholdLabel": "Fehlerschwelle", "resilienceResetTimeoutLabel": "Timeout zurücksetzen", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Verbindungsabklingzeit", "resilienceUseUpstreamRetryHintsLabel": "Verwenden Sie Upstream-Wiederholungshinweise", "resilienceUseUpstream429BreakerLabel": "Upstream-429-Hinweise verwenden (Unterbrecher)", "resilienceMaxBackoffStepsLabel": "Maximale Backoff-Schritte", "resilienceYes": "Ja", "resilienceNo": "Nein", - "resilienceDefault": "Default", + "resilienceDefault": "Standard", "storageDatabaseBackupRetention": "Aufbewahrung der Datenbanksicherung", "storageDatabaseBackups": "Datenbank-Backups", "storageBackupRetentionDescription": "Automatische SQLite-Backups werden gespeichert in", "storageBackupRetentionHelp": "Konfigurieren, wie viele Snapshots aufbewahrt werden sollen, und optional Backups löschen, die älter als eine ausgewählte Anzahl von Tagen sind.", "storageBackupCount": "{count} Backups", - "storageBackupMaximum": "Max {count}", + "storageBackupMaximum": "Max. {count}", "storageBackupAgeRetention": "{count}d Aufbewahrung", "storageBackupAgeRetentionOff": "Altersbasierte Aufbewahrung aus", "storageBackupKeepLatest": "Neueste Backups behalten", @@ -7745,12 +7748,16 @@ "legacyJsonImportSuccess": "Legacy-JSON erfolgreich importiert!", "jsonImportFailed": "JSON konnte nicht importiert werden", "jsonImportError": "Fehler beim JSON-Import", + "jsonImportAuthRequired": "Zum Importieren einer älteren JSON-Konfiguration ist eine Authentifizierung erforderlich. Bitte melden Sie sich an oder schließen Sie zuerst die Einrichtung ab.", + "databaseSettingsAuthRequiredTitle": "Authentifizierung erforderlich", + "databaseSettingsAuthRequiredBody": "Datenbankeinstellungen und der JSON-Import sind nur für einen authentifizierten Administrator verfügbar. Melden Sie sich an oder schließen Sie die Einrichtung ab, um sie anzuzeigen und zu bearbeiten.", + "databaseSettingsAuthRequiredCta": "Anmelden", "storagePurgeData": "Daten bereinigen", "storagePurgeDataDesc": "Alle Datensätze sofort löschen, ohne Aufbewahrungsprüfungen anzuwenden. Mit Vorsicht verwenden.", "storageRetentionCleanup": "Aufbewahrungseinstellungen", "storageRetentionCleanupDesc": "Aufbewahrung von Betriebsdatensätzen und Bereinigung von Datenbanksicherungen konfigurieren.", "retentionCallDays": "Aufruf {count}d", - "retentionAppDays": "App {count}d", + "retentionAppDays": "App {count} T.", "retentionRows": "{count} Zeilen", "retentionQuotaSnapshots": "Kontingent-Snapshots (Tage)", "retentionCompressionAnalytics": "Komprimierungsanalysen (Tage)", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "Modus: {mode}", "compressionAdaptiveOff": "Adaptives Kontextbudget: aus (Legacy-Auto-Trigger)", "compressionAdaptiveTarget": "Adaptiv ({mode}, Richtlinie: {policy}) — Ziel ≈ {target, number} Tokens (für ein {contextLimit, number}-Token-Fenster)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Adaptives Kontextbudget", + "compressionAdaptiveModeOff": "Aus (veraltete automatische Auslösung)", + "compressionAdaptiveModeFloor": "Untergrenze (Passung immer gewährleisten)", + "compressionAdaptiveModeReplace": "Automatischen Auslöser ersetzen", + "compressionAdaptivePolicy": "Budgetrichtlinie", + "compressionAdaptivePolicyReserve": "Ausgabe reservieren", + "compressionAdaptivePolicyPercentage": "Prozentsatz des Fensters", + "compressionAdaptivePolicyAbsolute": "Absolutes Token-Budget", "compressionOutputStylesDescription": "Anweisungen zur Antwortgestaltung einfügen, ohne die Provider-Ausgabe umzuschreiben. Frei kombinierbar.", "mcpAccessibilityDescription": "Schränkt MCP-Tool-Ausgaben ein (separater Speicher).", "compressionStylesTileSummary": "{tokens, number} Tokens eingespart · {runs, plural, one {# Ausführung gestylt} other {# Ausführungen gestylt}}", @@ -7844,7 +7851,7 @@ "minimal": "Minimal", "standard": "Standard", "aggressive": "Aggressiv", - "lite": "Lite", + "lite": "Leicht", "full": "Vollständig", "ultra": "Ultra" }, @@ -7854,11 +7861,11 @@ "description": "Turn-übergreifende Block-Deduplizierung." }, "ccr": { - "label": "CCR (Retrieval)", + "label": "CCR (Abruf)", "description": "Inhaltsadressierte Retrieval-Marker." }, "lite": { - "label": "Lite", + "label": "Leicht", "description": "Bereinigung von Leerzeichen und Formatierung." }, "rtk": { @@ -7866,19 +7873,19 @@ "description": "Filterung von Befehlsausgaben." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Ausgabe des Responses-Tools", + "description": "Konservative Komprimierung für unterstützte Ausgaben des Responses-Tools." }, "headroom": { - "label": "Headroom", + "label": "Spielraum", "description": "Tabellarische JSON-Kompaktierung." }, "relevance": { - "label": "Relevance", + "label": "Relevanz", "description": "Extraktive Satzbewertung im Vergleich zur letzten Benutzeranfrage." }, "caveman": { - "label": "Caveman", + "label": "Höhlenmensch", "description": "Regelbasierte Prosa-Kompression." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "YAGNI-Leiter: kleinste funktionierende Änderung, keine ungefragten Abstraktionen." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Pferdeschwanz (fauler Senior-Entwickler)", + "description": "Disziplin eines faulen Senior-Entwicklers: die YAGNI-Leiter erklimmen, die Ursache beheben, kleinstmöglicher funktionierender Diff." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Ich habe ADHS (handlungsorientiert)", + "description": "Handlungsorientierte Ausgabe: Die nächste Aktion steht am Anfang, Schritte sind nummeriert, genau ein konkreter nächster Schritt, keine Einleitung." }, "terse-cjk": { "label": "Knappe CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI-Fallback", "cliproxyapiEnableFallback": "Aktivieren Sie CLIProxyAPI-Fallback", "cliproxyapiUrl": "CLIProxyAPI-URL", + "headroomProxyTitle": "Headroom-Proxy", + "headroomProxyDesc": "URL des optionalen Headroom-Proxys zum Einsparen von Tokens. Wenn leer, wird HEADROOM_URL oder http://localhost:8787 verwendet.", + "headroomProxyUrl": "Headroom-URL", + "headroomProxyUrlHint": "Loopback-URLs können von dieser Seite aus gestartet werden. Externe URLs werden nur geprüft.", + "headroomProxySave": "Speichern", + "headroomProxyStart": "Starten", + "headroomProxyStop": "Stoppen", + "headroomProxyExternalHint": "Diese URL ist keine Loopback-URL, daher startet OmniRoute die lokale CLI nicht.", "cliproxyapiStatus": "CLIProxyAPI-Status", "cliproxyapiNotDetected": "Nicht erkannt", "cliproxyapiImportAuthTitle": "Konten aus CLIProxyAPI importieren", @@ -7938,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Konten importieren", "payloadRulesTitle": "Nutzlastregeln", "payloadRulesDesc": "Konfigurieren Sie Mutationen der Anfrage-Payload nach Modell und Protokoll. Änderungen werden in den Einstellungen dauerhaft gespeichert und sofort nach dem Sichern per Hot-Reload in die Laufzeitumgebung geladen.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "Standard", "payloadRuleDefaultDesc": "Wendet Parameter nur an, wenn der Zielpfad in der ausgehenden Payload fehlt.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "Überschreibung", "payloadRuleOverrideDesc": "Erzwingt Werte in der Payload und ersetzt alles, was bereits unter diesem Pfad vorhanden ist.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "Filter", "payloadRuleFilterDesc": "Entfernt blockierte Parameter aus der Payload, bevor die Upstream-Anfrage gesendet wird.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Wie default, aber String-Werte werden nach Möglichkeit zuerst als JSON analysiert. Der veraltete Eingabe-Alias default-raw wird beim Speichern ebenfalls akzeptiert.", @@ -7980,20 +7995,20 @@ "responsesStateTitle": "Responses-State", "responsesStateDesc": "Steuert, wie OmniRoute previous_response_id weiterleitet.", "responsesStateModeLabel": "previous_response_id behandeln", - "responsesStateModeAuto": "Auto", + "responsesStateModeAuto": "Automatisch", "responsesStateModeStrip": "Entfernen", "responsesStateModePreserve": "Beibehalten", "responsesStateHint": "Auto entfernt previous_response_id, außer eine Verbindung aktiviert explizit OpenAI Responses Storage. Entfernen ist am sichersten für zustandslose Clients wie VS Code Custom Endpoint; der Kontext hängt dann davon ab, dass der Client die vollständige Historie sendet.", "responsesStateSaveError": "Responses-State-Einstellung konnte nicht aktualisiert werden", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Codex-Schnellstufe", "codexFastTierDesc": "service_tier=priority global für OpenAI Codex-Anfragen einfügen.", "codexFastTierHint": "Wenn aktiviert, fügt OmniRoute ausgehenden Codex-Anfragen service_tier=priority hinzu, sofern für die Verbindung noch kein Tier festgelegt ist. Der Priority-Tier erfordert einen OpenAI Enterprise API-Schlüssel oder den ChatGPT-Auth-Codex-Pfad; andere Schlüsseltypen erhalten von OpenAI einen tier-bezogenen Fehler. Pro-Verbindung-Einstellungen auf der Codex-Provider-Seite haben Vorrang.", "codexFastTierSaveError": "Codex Fast Tier-Einstellung konnte nicht aktualisiert werden", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Automatischer Codex-Kontingent-Ping", + "codexAutoPingDesc": "Pro Verbindung aktivierbar: Sendet direkt nach dem Zurücksetzen eines Codex-Sitzungsfensters eine kleine Anfrage, damit es bei Bedarf nicht erst aufgewärmt werden muss.", + "codexAutoPingWarning": "Verbraucht bei jedem Ping einen kleinen Teil des tatsächlichen Codex-Kontingents. Standardmäßig deaktiviert — nur für Verbindungen aktivieren, auf die Sie aktiv angewiesen sind.", + "codexAutoPingSaveError": "Die Codex-Auto-Ping-Einstellung konnte nicht aktualisiert werden", + "codexAutoPingToggleAria": "Automatischen Codex-Kontingent-Ping für {connection} umschalten", "codexFastTierTierLabel": "Service-Tier", "codexFastTierTierPriority": "Priorität", "codexFastTierTierFlex": "Flex", @@ -8001,7 +8016,7 @@ "codexFastTierModelsLabel": "Fast-Tier-Modelle", "codexFastTierModelsHint": "Nur ausgewählte Modelle erhalten service_tier, wenn Fast Tier aktiviert ist.", "codexFastTierModelCheckbox": "Fast Tier für {model} aktivieren", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Claude-Schnellmodus", "claudeFastModeDesc": "Aktiviert den Fast Mode (speed:\"fast\") für ausgewählte Claude-Anfragen.", "claudeFastModeHint": "Anthropic unterstützt Fast Mode für SDK-Clients offiziell nicht. Wenn aktiviert, fügt OmniRoute den Header X-CPA-Force-Fast-Mode hinzu, sodass ein kompatibler CLIProxyAPI-Build den Entrypoint umschreiben kann. Nur die aufgeführten Opus-Modelle passieren die clientseitige Anthropic-Prüfung. Abonnement, Max-Plan und Fast-Mode-Credit-Saldo werden weiterhin serverseitig durchgesetzt — Anthropic kann auch bei aktiviertem Toggle out_of_credits zurückgeben.", "claudeFastModeModelsLabel": "Auf Modelle angewendet ({count})", @@ -8202,24 +8217,24 @@ "modelLockoutMaxBackoffStepsDescription": "Maximale Anzahl von Backoff-Schritten, bevor der Cooldown nicht weiter ansteigt. Die Obergrenze für den maximalen Cooldown wird in den meisten Konfigurationen zuerst erreicht, was dies zu einer Sicherheitsgrenze macht, wenn der maximale Cooldown erhöht wird.", "disableSessionStickiness": "Sitzungs-Stickiness deaktivieren", "disableSessionStickinessDesc": "Round-Robin- und Zufallskombinationen wechseln bei jeder Anfrage zu einer anderen Verbindung, anstatt eine gesamte Konversation über den Hash der ersten Nachricht an eine Verbindung zu binden. Deaktiviert lassen, um Prompt-Cache-Treffer für Multi-Turn-Chats zu erhalten. Überschreibungen pro Kombination haben Vorrang.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Routing nach Prompt-Cache-Lokalität", + "promptCacheAffinityDesc": "Bei übereinstimmenden Prompt-Cache-Schlüsseln dasselbe Anbieterkonto bevorzugen und gleichzeitig Failover bei Zustands- oder Kontingentproblemen gewährleisten.", + "reasoningTokenBuffer": "Reasoning-Token-Puffer", + "reasoningTokenBufferDesc": "Combo-Routing erlauben, nur bei bekannten Reasoning-Modellen zusätzlichen max_tokens-Spielraum hinzuzufügen, wenn der vollständige Puffer innerhalb eines bekannten Ausgabelimits liegt.", + "zeroLatencyOptimizations": "Optimierungen ohne zusätzliche Latenz", + "zeroLatencyOptimizationsDesc": "Hedging, prädiktive TTFT-Überspringungen und proaktive Fallback-Komprimierung aktivieren. Deaktiviert lassen, um zu verhindern, dass diese Latenzfunktionen Zielanfragen parallelisieren oder Fallback-Anfragen komprimieren.", "credentialRedaction": "Schwärzung von Anmeldedaten", "credentialRedactionDesc": "API-Schlüssel, Token und Geheimnisse aus dem an Anbieter gesendeten Kontext und aus Antworten schwärzen.", "enableCredentialRedaction": "Schwärzung von Anmeldedaten aktivieren", "enableCredentialRedactionDesc": "Bereinigt API-Schlüssel, Token, private Schlüssel und JWTs aus Nachrichten, Tool-Aufrufen und Antworten.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Automatische Synchronisierung deaktiviert", + "pricingAutoSyncEnabled": "Automatische Synchronisierung aktiviert", "modalityBridgeIntro": "Überführen Sie multimodale Inhalte in Text, bevor sie reine Textmodelle erreichen. Die Bridges für Bild, Audio und Video sind verfügbar und konfigurierbar.", - "modalityBridgeVisionTab": "Vision", + "modalityBridgeVisionTab": "Bildverarbeitung", "modalityBridgeAudioTab": "Audio", "modalityBridgeVideoTab": "Video", "modalityBridgeSubTabsAria": "Modality Bridge-Bereiche", - "modalityBridgeVisionTitle": "Vision Bridge", + "modalityBridgeVisionTitle": "Bildverarbeitungs-Bridge", "modalityBridgeVisionDesc": "Beschreibe Bilder mit einem Vision-Modell und fahre mit dem vom Benutzer gewählten Textmodell fort.", "modalityBridgeMode": "Modus", "modalityBridgeModeAuto": "Auto (empfohlen)", @@ -8269,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge OK — {count} Clip(s) von {model} transkribiert", "modalityBridgeAudioTestNoop": "Audio Bridge wurde nicht aktiviert (das Ziel unterstützt möglicherweise Audio, kein STT-Anbieter ist verbunden oder die Brücke ist deaktiviert)", "modalityBridgeAudioTestError": "Audiotest fehlgeschlagen: {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "Video-Bridge", "modalityBridgeVideoDesc": "Entnehmen Sie Videoframes, beschreiben Sie sie mit einem Bildmodell und fahren Sie mit dem ausgewählten Textmodell fort.", "modalityBridgeVideoRuntimeReady": "Laufzeit bereit", "modalityBridgeVideoRuntimeChecking": "Laufzeitumgebung wird geprüft…", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Gesundheit", "cliproxyapiPort": "Port", "qdrantHost": "Host", - "qdrantCollection": "Sammlung", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Sammlung" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", + "title": "RTK-Engine", + "description": "Befehlsbezogene Komprimierung für Tool-Ausgaben, Terminalprotokolle und Build-Ergebnisse.", + "enabled": "Aktiviert", + "intensity": "Intensität", "intensityMinimal": "Minimal", "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "intensityAggressive": "Aggressiv", + "toolResults": "Tool-Ergebnisse", + "assistantMessages": "Assistentennachrichten", + "codeBlocks": "Codeblöcke", "filterCatalog": "Katalog filtern", "filterCatalogDesc": "Verfügbare Ausgabefilter nach Kategorie", "guidedConfig": "Konfiguration", "guidedConfigDesc": "Passen Sie an, wie RTK Ihre Terminalausgabe filtert", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Max. Zeilen", + "maxChars": "Max. Zeichen", "deduplicateThreshold": "Schwellenwert für die Deduplizierung", "customFilters": "Benutzerdefinierte Filter", "detectedType": "Erkannter Typ", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Misserfolge", "rawOutputAlways": "Immer", "rawOutputMaxBytes": "Maximale Rohausgabe in Bytes", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Filtertests", + "pasteOutput": "Tool-Ausgabe einfügen, um die Filterung zu testen...", "presetHigh": "Aggressiv", "presetLow": "Licht", "presetMaxChars": "Maximale Ausgabezeichen", "presetMaxLines": "Max. Ausgabezeilen", "presetMedium": "Standard", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Ausführen", + "result": "Ergebnis", + "previewEmpty": "Ein Beispiel ausführen, um eine Vorschau der RTK-Ausgabe anzuzeigen.", + "detected": "Erkannt", "masterSwitchOffAlert": "Der Hauptschalter für den Token Saver ist AUS — diese Einstellungen haben keine Auswirkungen auf Anfragen, bis Sie ihn auf der Endpoint-Seite aktivieren.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Gefilterte Tokens", + "filtersActive": "Aktive Filter", + "requests": "Anfragen", + "avgSavings": "Durchschn. Einsparung", "simpleMode": "Einfach", "advancedMode": "Fortgeschritten", "searchFilters": "Suchfilter...", @@ -8481,7 +8488,7 @@ "savings": "Einsparungen", "original": "Original", "compressed": "Komprimiert", - "diff": "Diff", + "diff": "Differenz", "last7Days": "Letzte 7 Tage", "noDataYet": "Noch keine Daten", "runs": "Durchläufe", @@ -8511,7 +8518,7 @@ "description": "ONNX-basierte semantische Token-Klassifizierung. Komprimiert nur Fließtext; Codeblöcke und geschützte Konstrukte sind geschützt. Fällt bei Modell- oder Worker-Fehlern auf 'offen' zurück." }, "lite": { - "name": "Lite", + "name": "Leicht", "description": "Schnelle Reduzierung von Leerzeichen, Tool-Ergebnissen und Bild-URLs." }, "aggressive": { @@ -8601,7 +8608,7 @@ "bert-base": "BERT-base (710 MB, höhere Genauigkeit)" }, "intensity": { - "lite": "Lite", + "lite": "Leicht", "full": "Vollständig", "ultra": "Ultra" } @@ -8609,7 +8616,7 @@ "modeOptions": { "default": "Standardmäßig", "off": "Aus", - "lite": "Lite", + "lite": "Leicht", "standard": "Standard", "aggressive": "Aggressiv", "ultra": "Ultra", @@ -8617,27 +8624,27 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", + "title": "Komprimierungskombinationen", + "description": "Legen Sie fest, wie Engines für verschiedene Routing-Szenarien kombiniert werden.", + "createCombo": "Komprimierungskombination erstellen", + "editCombo": "Bearbeiten", + "deleteCombo": "Löschen", + "deleteConfirm": "Diese Komprimierungskombination löschen?", "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", + "addStep": "Schritt hinzufügen", + "removeStep": "Entfernen", "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", - "loading": "Loading…", + "descriptionField": "Beschreibung", + "languagePacks": "Sprachpakete", + "outputMode": "Ausgabemodus", + "assignToRouting": "Routing-Kombinationen zuweisen", + "noAssignments": "Keine Routing-Kombinationen verfügbar", + "default": "Standard", + "setAsDefault": "Als Standard festlegen", + "save": "Speichern", + "cancel": "Abbrechen", + "enabled": "Aktiviert", + "loading": "Wird geladen…", "hubTitle": "Komprimierungs-Hub", "hubDescription": "Wählen Sie aus, welches Komprimierungsprofil global ausgeführt wird.", "hideExplanation": "Erklärung ausblenden", @@ -8661,6 +8668,8 @@ "contextEditingNote": "Derzeit nur für Claude (Anthropic) verfügbar. Es handelt sich um einen delegierten Modus: Der Anbieter löscht alte Tool-Nutzungsblöcke serverseitig – wir schreiben die Nachricht nicht um. Andere Anbieter sind davon nicht betroffen.", "namedCombos": "Benannte Kombinationen", "namedCombosDescription": "Speichern Sie verschiedene Pipelines und weisen Sie sie bestimmten Routing-Kombinationen zu.", + "activeProfileMasterSwitchOffWarning": "Das unten ausgewählte aktive Profil wird erst ausgeführt, wenn der Hauptschalter „Prompt Compression“ eingeschaltet ist.", + "activeProfileMasterSwitchOffCta": "In den Einstellungen einschalten", "comboNamePlaceholder": "Kombinationsname", "descriptionPlaceholder": "Beschreibung", "nameRequired": "Geben Sie vor dem Speichern einen Kombinationsnamen ein.", @@ -8674,20 +8683,18 @@ "languagePacksList": "Sprachpakete: {packs}", "dragToReorder": "Ziehen, um Schritt neu anzuordnen", "engine": "Engine", - "intensity": "Intensität", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensität" }, "compressionStudio": { "noRun": "Kein Komprimierungsdurchlauf verfügbar.", "liveDataHint": "Live-Daten kommen über den WebSocket-Kompressionskanal an.", "cockpitView": "Cockpit-Ansicht", - "canvas": "Canvas", + "canvas": "Leinwand", "waterfall": "Wasserfall", "replayDone": "Wiedergabe abgeschlossen", "pauseReplay": "Wiedergabe pausieren", "playReplay": "Wiedergabe abspielen", - "pause": "Pause", + "pause": "Pausieren", "replay": "Wiedergabe", "resetReplay": "Wiedergabe zurücksetzen", "stepProgress": "Schritt {current}/{total}", @@ -8705,7 +8712,7 @@ "run": "Ausführen", "laneRejected": "abgelehnt: {reason}", "error": "Fehler", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Vorschau der kombinierten Pipeline fehlgeschlagen: {reason}", "combinedFlow": "Kombinierter Ablauf", "eachLayer": "Jede Ebene einzeln", "diff": "Differenz", @@ -8714,8 +8721,8 @@ "input": "EINGABE", "output": "AUSGABE", "tokenCount": "{count, number} Token", - "tokenShort": "tok", - "provider": "Provider", + "tokenShort": "Tok.", + "provider": "Anbieter", "judgeModel": "Judge-Modell", "judgeModelPlaceholder": "z. B. claude-haiku", "maxCostUsd": "USD-Limit", @@ -8727,7 +8734,7 @@ "loadAb": "A/B laden", "engine": "Engine", "savings": "Einsparungen", - "retention": "Retention", + "retention": "Aufbewahrung", "outputTokensShort": "Ausgabe-Token", "fidelity": "Detailtreue", "playTab": "Abspielen", @@ -8763,7 +8770,7 @@ "why": "Nur Fable 5 liest dichte Seiten mit 100% Genauigkeit (gemessen, n=30). GPT-5.5 und Gemini 2.5 Flash sind blockiert." }, "transport": { - "label": "Transport", + "label": "Übertragung", "pass": "direkt Anthropic", "why": "Aggregatoren resampeln Bilder und zerstören die Lesbarkeit — nur der direkte Weg ist maßgebend." }, @@ -8780,27 +8787,27 @@ }, "enableTitle": "Engine aktivieren", "enableDescription": "Wird als Letztes im Stack ausgeführt (nachdem RTK/Caveman den Text bereinigt hat, konvertiert OmniGlyph den Rest in Bilder) und läuft auch eigenständig im omniglyph-Modus. Dies ist eine Vorschau und bleibt standardmäßig deaktiviert, bis die End-to-End-Validierung abgeschlossen ist.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Komprimierungsprofil", + "profileDescription": "Das Profil legt eine Obergrenze und keine Untergrenze fest: Ein strengeres Profil kann nicht durch eine Überschreibung für einen einzelnen Schritt gelockert werden. Gemessen an dieser Codebasis: Bei „Coding-safe“ oder „Ausgewogen“ wird in einer Sitzung, in der sich noch kein Verlauf angesammelt hat, nichts komprimiert, da beide den Schwellenwert für die Mindestzeichenzahl erhöhen und den System-Prompt, die Tool-Schemas und die Tool-Ergebnisse im nativen Format belassen.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Aggressiv (Standard)", + "description": "Die Richtlinie, anhand derer die veröffentlichten Belege gemessen wurden. Bildet den System-Prompt, die Tool-Dokumentation und umfangreiche Verläufe ab." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Ausgewogen", + "description": "Belässt den aktuellen Zustand im nativen Format und schützt die letzten 8 Gesprächsrunden; nur ältere abgeschlossene Verläufe werden komprimiert." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Codierungssicher", + "description": "Belässt Autoritätsinformationen, Tool-Schemas und aktuelle Tool-Ausgaben im nativen Format und schützt die letzten 12 Gesprächsrunden. Komprimiert nichts, bis sich in der Sitzung ein Verlauf angesammelt hat." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Durchleitung", + "description": "Leitet ohne Transformation weiter. Die Engine wird übersprungen und die Anfrage unverändert weitergeleitet." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph-Komprimierungsprofil auswählen", "saved": "Gespeichert.", "saveFailed": "Konnte nicht gespeichert werden.", "enableAria": "OmniGlyph-Engine aktivieren", @@ -8901,38 +8908,38 @@ "save": "Speichern" }, "contextCaveman": { - "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "title": "Caveman-Engine", + "description": "Regelbasierte Nachrichtenkomprimierung, Sprachpakete, Analysen und Steuerung des Ausgabemodus.", "advancedConfig": "Erweiterte Konfiguration", "advancedConfigDesc": "Optimieren Sie das Komprimierungsverhalten", "aggressiveSettings": "Aggressive Einstellungen", "aggressiveSettingsDesc": "Maximale Komprimierung mit möglichen Qualitätseinbußen", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Anfragen", + "tokensSaved": "Eingesparte Tokens", + "savingsPercent": "Einsparung in %", + "avgLatency": "Durchschn. Latenz", + "languagePacks": "Sprachpakete", + "languagePacksDesc": "Komprimierungsregeln für bestimmte Sprachen aktivieren.", "labelAutoTrigger": "Automatische Komprimierung, wenn der Kontext überschritten wird", "labelCompressionRate": "Kompressionsstärke", "labelMaxTokens": "Zieltoken pro Nachricht", "labelMinLength": "Mindestnachrichtenlänge", "labelMinSavings": "Mindestanzahl an zu speichernden Token", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Aktiviert", + "autoDetect": "Sprache automatisch erkennen", + "rulesCount": "{count} Regeln", "inputCompressionTitle": "Eingabekomprimierung", "inputCompressionDesc": "Chat-Verlauf mit kürzeren Formulierungen umschreiben. Reduziert Eingabe-Tokens um ~50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Komprimierungsanalyse", + "noAnalytics": "Noch keine Komprimierungsanalysen vorhanden.", "masterDisabledWarning": "Der Token Saver-Hauptschalter ist AUS — diese Einstellungen wirken sich erst auf Anfragen aus, wenn Sie ihn in den Komprimierungseinstellungen aktivieren oder hier ändern.", "outputMode": "Ausgabemodus", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Ausgabemodus", "quickSettings": "Schnelleinstellungen", "quickSettingsDesc": "Grundlegende Komprimierungseinstellungen für den Einstieg", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Auto-Clarity-Umgehung", + "bypassConditions": "Umgehungsbedingungen", "bypassConditionsList": "Sicherheit, irreversibel, klärend, auftragsempfindlich", "simpleMode": "Einfach", "advancedMode": "Fortgeschritten", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ultra-Einstellungen", "ultraSettingsDesc": "SLM-gestützte semantische Komprimierung", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Antworte prägnant. Behalte technische Begriffe, Code, Fehler, URLs und Bezeichner bei.", + "full": "Antworte knapp und kompakt. Behalte alle technischen Inhalte bei.", + "ultra": "Antworte extrem knapp und verwende gängige technische Abkürzungen. Behalte alle Symbole exakt bei." } }, "translator": { @@ -8987,7 +8994,7 @@ "ideCliIntegrations": "IDE/CLI-Integrationen", "inMemoryNote": "Hinweis: Ereignisse werden im Speicher gespeichert und beim Neustart des Servers zurückgesetzt.", "ok": "Okay", - "errorShort": "ERR", + "errorShort": "FEHLER", "formatConverter": "Formatkonverter", "formatConverterDescription": "Fügen Sie einen JSON-Anfragetext ein oder geben Sie ihn ein. Der Übersetzer erkennt das Quellformat automatisch und konvertiert es in das Zielformat. Verwenden Sie dies, um zu debuggen, wie OmniRoute Anfragen zwischen Formaten übersetzt (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (mittel) → {target}", @@ -9047,7 +9054,7 @@ "thinking": "Denken", "system-prompt": "Systemaufforderung", "streaming": "Streaming", - "vision": "Vision", + "vision": "Bildverarbeitung", "schema-coercion": "Schemazwang" }, "templateDescriptions": { @@ -9176,7 +9183,7 @@ "scenarioVision": "Vision (Bildverständnis)", "scenarioSchemaCoercion": "Schemazwang (strukturierte Ausgabe)", "techniques": "Techniken:", - "friendlyTitle": "Translator", + "friendlyTitle": "Übersetzer", "friendlySubtitle": "Verwenden Sie Ihre bestehende App mit jedem Provider — ohne Code umzuschreiben.", "conceptHeadline": "Ihre App spricht die \"Sprache\" einer API. Der Translator konvertiert sie zur Verwendung eines anderen Providers.", "conceptDiagramAppLabel": "Ihre App", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Fügen Sie eine JSON-Anfrage ein; das Format wird automatisch erkannt.", "advancedPipelineTitle": "OpenAI-Zwischenpipeline", "advancedPipelineSubtitle": "Visualisieren Sie jeden Übersetzungsschritt (Hub-and-Spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Stream-Transformator (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Konvertiert Chat Completions SSE in Responses API.", "advancedTestBenchTitle": "Test Bench (8 Szenarien)", "advancedTestBenchSubtitle": "Führt alle Szenarien aus und meldet Bestanden/Fehlgeschlagen + Kompatibilität in %.", @@ -9270,13 +9277,6 @@ "grokAutoTopUpMax": "max", "grokAutoTopUpMonth": "Monat", "grokAdditionalCredits": "Zusätzliche Credits", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", "kiloAccountBalance": "Kontoguthaben", "kiloPassBonus": "Verfügbarer Bonus", "kiloPassMeterLabel": "Kilo-Pass-Nutzungsanzeige", @@ -9284,10 +9284,17 @@ "kiloPassRemaining": "Verbleibend", "kiloPassRenews": "Erneuert sich in {count} Tagen", "kiloPassUsageLabel": "Nutzung diesen Monat", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Guthaben für zusätzliche Nutzung", + "kimiExtraUsage": "Zusätzliche Nutzung", + "kimiExtraUsageEnabled": "Aktiviert", + "kimiExtraUsageDisabled": "Deaktiviert", + "kimiExtraUsageFrozen": "Eingefroren", + "kimiExtraUsageUnavailable": "Nicht verfügbar", + "kimiMonthlyUsed": "Diesen Monat verwendet", + "kimiMonthlyLimit": "Monatliches Limit", + "kimiMonthlyLimitUnlimited": "Unbegrenzt", + "kimiAdditionalCredits": "Zusätzliches Guthaben", + "loggerTab": "Protokollierung", "proxyTab": "Stellvertreter", "budgetManagement": "Budgetverwaltung", "budgetSaved": "Budgetgrenzen eingespart", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Leistungsschalter", "lockedIPs": "Gesperrte IPs", "lockoutsAutoRefreshHint": "Ratenbegrenzungssperren pro Modell • Automatische Aktualisierung 10 Sekunden", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# gesperrt} other {# gesperrt}}", "timeLeft": "{time} übrig", "howItWorks": "Wie es funktioniert", "howItWorksSubtitle": "Erfahren Sie, wie Bewertungen Ihre LLM-Antworten validieren", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "Die Antworten werden mit den erwarteten Kriterien verglichen. Sehen Sie sich für jeden Fall das Bestehen/Nichtbestehen mit Latenzmetriken und detailliertem Feedback an.", "evalsStrategyContainsLabel": "Enthält", "evalsStrategyExactLabel": "Genaue Übereinstimmung", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Regulärer Ausdruck", "evalsStrategyCustomLabel": "Benutzerdefinierte Logik", "evalsStrategyContainsDescription": "Prüft, ob die LLM-Ausgabe die erwartete Teilzeichenfolge enthält.", "evalsStrategyExactDescription": "Prüft, ob die LLM-Ausgabe genau mit dem erwarteten Wert übereinstimmt.", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Im Test befindliche Modelle", "searchSuitesPlaceholder": "Suiten suchen...", "passSuffix": "passieren", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# Fall} other {# Fälle}}", "runEval": "Führen Sie die Evaluierung aus", "runAllSuites": "Alle ausführen", "runAllRunning": "Läuft alles...", "runAllProgress": "Ausführen von {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# Suite fehlgeschlagen} other {# Suites fehlgeschlagen}}", "runAllCompleted": "{suites} Suiten ausgeführt – {passed} bestanden, {failed} fehlgeschlagen", "runAllCompletedWithFailures": "{completed} Suiten ausgeführt; {failedSuites} konnte nicht abgeschlossen werden", "runningProgress": "Ausführen von {current}/{total}...", @@ -9423,7 +9430,7 @@ "providerLimits": "Anbieterbeschränkungen", "noProviders": "Keine Anbieter verbunden", "connectProvidersForQuota": "Stellen Sie über OAuth eine Verbindung zu Anbietern her, um Ihre API-Kontingentgrenzen und -Nutzung zu verfolgen.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# Konto} other {# Konten}}", "filteredFromCount": "(gefiltert aus {count})", "autoRefresh": "Automatische Aktualisierung", "refreshAll": "Alle aktualisieren", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Aktualisierung der Kontingentsichtbarkeit fehlgeschlagen", "account": "Konto", "modelQuotas": "Modellkontingente", - "lastUsed": "Last Refreshed", + "lastUsed": "Zuletzt aktualisiert", "actions": "Aktionen", "refreshQuota": "Kontingent aktualisieren", "today": "Heute", @@ -9452,9 +9459,9 @@ "cardExpand": "Erweitern", "cardCollapse": "Einklappen", "moreQuotas": "+{count} weitere", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Nicht gruppiert", + "viewFlat": "Flach", + "viewByEnvironment": "Nach Umgebung", "noQuotaDataAvailable": "Keine Quotendaten verfügbar", "noAccountsForTierFilter": "Für den Stufenfilter wurden keine Konten gefunden", "tierAll": "Alle", @@ -9475,9 +9482,9 @@ "filterTierLabel": "Stufe", "purchaseAll": "Alle", "purchaseOauthSub": "Abonnement", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "OAuth kostenlos", "purchaseApiKey": "API-Schlüssel", - "creditsLabel": "Credits", + "creditsLabel": "Guthaben", "creditBalanceHint": "Restguthaben", "unlimitedLabel": "Unbegrenzt", "refreshing": "Wird aktualisiert", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Credit einlösen", "resetCreditRedeemed": "Reset eingelöst", "resetCreditRedeemFailed": "Reset-Credit konnte nicht eingelöst werden", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Suite konnte nicht gespeichert werden", "clone": "Klonen", "exportSuite": "Exportieren", "importSuite": "Importieren", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Ungültiger Evaluierungssuite-JSON", "suiteBuilderCloneSuffix": "kopieren", "suiteBuilderImportedSuite": "Importierte Suite", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Bewertungskarte", + "evalApiKey": "API-Schlüssel", + "scorecardPassRate": "Erfolgsquote", + "targetTypeModel": "Modell", + "actualOutputLabel": "Tatsächliche Ausgabe", + "evalTargetHint": "Wählen Sie ein Modell oder eine Kombination zur Evaluierung aus.", + "suiteBuilderDeleted": "Suite erfolgreich gelöscht", + "suiteBuilderCaseCardHint": "Definieren Sie den Eingabe-Prompt und die Kriterien für die erwartete Ausgabe.", + "nextResetUtc": "Nächste Zurücksetzung (UTC)", + "scorecardHint": "Aggregierte Erfolgsquoten über alle Evaluierungssuiten hinweg.", + "suiteLatestRunsHint": "Neueste Evaluierungsläufe für diese Suite.", + "saving": "Wird gespeichert", + "suiteBuilderCaseModelLabel": "Modell (optional)", + "evalControlsTitle": "Evaluierungssteuerung", + "suiteBuilderEditTitle": "Evaluierungssuite bearbeiten", + "suiteBuilderCaseStrategyLabel": "Validierungsstrategie", + "notifySelectDifferentCompareTarget": "Bitte wählen Sie ein anderes Ziel für den Vergleich aus", + "recentRunsHint": "Die neuesten Evaluierungsläufe werden angezeigt. Klicken Sie auf einen Lauf, um detaillierte Ergebnisse anzuzeigen.", + "evalCompareHint": "Vergleichen Sie die Ergebnisse optional mit einem zweiten Ziel.", + "suiteBuilderCaseInvalid": "Dieser Fall weist Validierungsfehler auf. Bitte beheben Sie diese vor dem Speichern.", + "historyEmpty": "Noch kein Evaluierungsverlauf vorhanden", + "suiteBuilderUpdated": "Suite erfolgreich aktualisiert", + "resetInterval": "Zurücksetzungsintervall", + "suiteBuilderCreateTitle": "Evaluierungssuite erstellen", + "activePeriodSpend": "Ausgaben im aktiven Zeitraum", + "evalApiKeyHint": "Wählen Sie aus, welcher API-Schlüssel für Evaluierungsanfragen verwendet werden soll.", + "evalCompareOptional": "Vergleichen (optional)", + "suiteBuilderDeleteFailed": "Suite konnte nicht gelöscht werden", + "suiteBuilderCaseSystemPromptPlaceholder": "Optionale Systemanweisungen ...", + "scorecardCases": "Fälle", + "runCompletedWithScore": "Evaluierung abgeschlossen — Erfolgsquote: {score} %", + "suiteBuilderCustomBadge": "Benutzerdefiniert", + "targetSuiteDefaults": "Suite-Standardeinstellungen", + "suiteBuilderDeleteConfirm": "Möchten Sie diese Suite wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.", + "suiteBuilderNameLabel": "Suite-Name", + "scorecardSuites": "Suiten", + "evalCompareTarget": "Vergleichsziel", + "suiteBuilderCaseModelPlaceholder": "z. B. gpt-4o-mini", + "evalControlsHint": "Konfigurieren Sie Ihr Evaluierungsziel und Ihren API-Schlüssel und führen Sie anschließend Suites aus, um die Modellqualität zu validieren.", + "recentRunsTitle": "Letzte Durchläufe", + "suiteBuilderCaseSystemPromptLabel": "System-Prompt", + "suiteBuilderCaseExpectedPlaceholder": "z. B. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "z.B. auf jeden Fall Fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Fügen Sie die genaue erwartete Antwort ein", "suiteBuilderCaseExpectedPlaceholderRegex": "z.B. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Verwenden Sie einen regulären JavaScript-Ausdruck ohne Umbruch von Schrägstrichen.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "z. B. Suite für Codequalität", + "suiteBuilderAddCase": "Fall hinzufügen", + "cancel": "Abbrechen", + "evalTarget": "Ziel", + "suiteBuilderCaseNameLabel": "Fallname", + "weeklyLimitUsd": "Wöchentliches Limit (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "z. B. Schreibe eine Fibonacci-Funktion in Python", + "suiteBuilderNameRequired": "Der Suite-Name ist erforderlich", + "suiteBuilderCaseUserPromptLabel": "Benutzer-Prompt", + "daily": "Täglich", + "resultErrorLabel": "Fehler", + "suiteBuilderBuiltInBadge": "Integriert", + "suiteBuilderCaseCardTitle": "Testfall", "suiteBuilderDuplicateCase": "Duplizieren", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "z. B. 50.00", + "suiteBuilderCaseTagsHint": "Durch Kommas getrennte Tags zur Organisation von Testfällen.", + "notifyEvalRunFailedWithReason": "Evaluierung fehlgeschlagen: {reason}", + "weekly": "Wöchentlich", + "runEvalRunning": "Evaluierung wird ausgeführt ...", + "delete": "Löschen", + "resetTimeUtc": "Rücksetzzeit (UTC)", + "evalApiKeyAuto": "Automatisch (Standardwert verwenden)", + "suiteBuilderDescriptionPlaceholder": "Optionale Beschreibung dessen, was diese Suite testet ...", + "targetComparisonTitle": "Zielvergleich", + "save": "Speichern", + "suiteBuilderCreated": "Suite wurde erfolgreich erstellt", + "suiteLatestRuns": "Neueste Durchläufe", + "suiteBuilderCaseExpectedLabel": "Erwarteter Wert", + "historyLatency": "Latenz", + "suiteBuilderCaseTagsPlaceholder": "z. B. Programmierung, Python", + "targetTypeCombo": "Kombination", + "scorecardPassed": "Bestanden", + "suiteBuilderCaseTagsLabel": "Schlagwörter", + "suiteBuilderNewSuite": "Neue Suite", + "notifyEvalLoadFailed": "Evaluierungsdaten konnten nicht geladen werden", + "notConfigured": "Nicht konfiguriert", + "suiteBuilderCaseNamePlaceholder": "z. B. Python-Fibonacci-Test", + "intervalLabel": "Intervall", + "suiteBuilderCreateAction": "Suite erstellen", + "suiteBuilderCasesHint": "Jeder Testfall sendet einen Prompt und validiert die Antwort.", + "suiteBuilderUpdatedAt": "Aktualisiert", + "errorBadge": "Fehler", + "suiteBuilderCasesTitle": "Testfälle", + "edit": "Bearbeiten", + "monthly": "Monatlich", + "suiteBuilderCasesRequired": "Mindestens ein Testfall ist erforderlich", + "weeklyLimitSummary": "Zusammenfassung des wöchentlichen Budgetlimits", + "suiteBuilderDescriptionLabel": "Beschreibung", + "targetComparisonHint": "Direkter Vergleich der Evaluierungsergebnisse zwischen Zielen.", + "compareCompletedWithScore": "Vergleich abgeschlossen – Erfolgsquote: {score} %", + "staleQuotaTooltip": "Letzte Aktualisierung fehlgeschlagen – zwischengespeicherte Daten werden angezeigt", "quotaThresholdLabel": "Min. übrig", "quotaCutoffsColumnHelp": "Stoppen Sie Anfragen, wenn das verbleibende Kontingent auf diesen Prozentsatz oder darunter fällt.", "quotaCutoffsButtonDefault": "Standard", @@ -9684,7 +9691,7 @@ "budgetProjection": "Prognose", "budgetAboveMonthlyLimit": "⚠ über {limit}/Monat", "budgetCostBreakdown30d": "Kostenaufschlüsselung (30 Tage)", - "budgetLimits": "Limits", + "budgetLimits": "Grenzwerte", "budgetResetDaily": "Täglich", "budgetResetWeekly": "Wöchentlich", "budgetResetMonthly": "Monatlich", @@ -9835,7 +9842,7 @@ "copyUrlManual": "Kopieren Sie die URL aus der Adressleiste und fügen Sie sie in die Anwendung ein.", "accessDeniedDescription": "Sie haben keine Berechtigung, auf diese Ressource zuzugreifen. Überprüfen Sie Ihren API-Schlüssel oder wenden Sie sich an den Administrator.", "goToDashboard": "Gehen Sie zum Dashboard", - "featureMultiProviderTitle": "Multi-Provider", + "featureMultiProviderTitle": "Mehrere Anbieter", "featureMultiProviderDesc": "OpenAI, Anthropic, Google und mehr", "featureLoadBalancingTitle": "Lastausgleich", "featureLoadBalancingDesc": "Verteilen Sie Anfragen intelligent", @@ -9863,7 +9870,7 @@ "backToLogin": "Zurück zum Anmelden", "forgotPassword": "Passwort vergessen?", "continueWithOidc": "Mit OIDC fortfahren", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Standardpasswort: CHANGEME (sofern INITIAL_PASSWORD nicht festgelegt wurde)", "Authorization": "Autorisierung", "Content-Disposition": "Inhaltliche Disposition", "waitingForAuthorization": "Warte auf Autorisierung...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Warte auf Antigravity-Autorisierung...", "waitingForQoderAuthorization": "Warte auf Qoder-Autorisierung...", "exchangingCodeForTokens": "Tausche Code gegen Token aus...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Inkompatible Node.js-Version", + "nodeIncompatibleDesc": "Sie verwenden Node.js {version}, was nicht den Richtlinien von OmniRoute für unterstützte, sichere Laufzeitumgebungen entspricht. Verwenden Sie eine gepatchte Node.js 20.x- oder 22.x-LTS-Version.", + "nodeIncompatibleFixLabel": "Lösung: Installieren Sie eine gepatchte Node.js 22-LTS-Version", + "nodeIncompatibleHint": "OmniRoute erfordert Node.js 22.22.2+ (22.x LTS) oder 24.0.0+ (24.x LTS). Node 24 LTS wird empfohlen.", "resetViaAppDataTitle": "Zurücksetzen über App-Daten", "resetViaAppDataDescription": "Löschen Sie die Einstellungsdatei aus dem Anwendungsdatenverzeichnis, um Ihr Passwort zurückzusetzen:", "quitDesktopApp": "Beenden Sie die OmniRoute-Desktopanwendung vollständig", @@ -9897,7 +9904,7 @@ "codexConnectDescription": "Autorisieren Sie ein ChatGPT-Konto, um diese Verbindung einzurichten.", "validatingCodexLink": "Link wird validiert…", "codexGenerateCodeDescription": "Klicken Sie unten, um einen einmaligen Code zu generieren, und melden Sie sich dann bei OpenAI an.", - "startCodexFlow": "Start", + "startCodexFlow": "Starten", "requestingOpenAiCode": "Code von OpenAI anfordern…", "codexVerificationInstructions": "1. Öffnen Sie die OpenAI-Überprüfungsseite und 2. geben Sie diesen Code ein. Diese Seite wird automatisch aktualisiert, sobald Sie autorisieren.", "yourCode": "Ihr Code", @@ -9992,7 +9999,7 @@ "resources": "Ressourcen", "documentation": "Dokumentation", "npm": "NPM", - "legal": "Legal", + "legal": "Rechtliches", "mitLicense": "MIT-Lizenz", "footerTagline": "Der einheitliche Endpunkt für die KI-Generierung. Verbinden, leiten und verwalten Sie Ihre KI-Anbieter ganz einfach.", "copyright": "© {year} OmniRoute. Alle Rechte vorbehalten.", @@ -10033,8 +10040,8 @@ "clientCompatibility": "Client-Kompatibilität", "protocolsToc": "Protokolle", "apiReference": "API-Referenz", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Management-API-Referenz", + "managementApiDescription": "Automatisierungsendpunkte für Proxy-Registrierung, Bereichszuweisungen und die Migration älterer Proxys.", "method": "Methode", "path": "Pfad", "notes": "Notizen", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Installieren Sie OmniRoute als Progressive Web App auf Android-, iOS- und Desktop-Browsern.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "OmniRoute ohne Benutzeroberfläche über Termux auf Android ausführen. Greife über deinen mobilen Browser auf das Dashboard zu.", "featureRoutingTitle": "Multi-Provider-Routing", "featureRoutingText": "Leiten Sie Anfragen über einen einzigen OpenAI-kompatiblen Endpunkt an über 30 KI-Anbieter weiter. Unterstützt Chat-, Antwort-, Audio- und Bild-APIs.", "featureCombosTitle": "Combos und Balancing", @@ -10144,7 +10151,7 @@ "protocolA2aStep1": "Lesen Sie `/.well-known/agent.json` für die Agentenerkennung.", "protocolA2aStep2": "Senden Sie `message/send`- oder `message/stream`-Anfragen an `POST /a2a`.", "protocolA2aStep3": "Verwalten Sie den Aufgabenlebenszyklus mit `tasks/get` und `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", + "protocolTroubleshootingTitle": "Protokoll-Fehlerbehebung", "protocolTroubleshooting1": "Wenn der MCP-Status offline ist, überprüfen Sie, ob der stdio-Prozess ausgeführt wird und die Heartbeat-Datei aktualisiert wird.", "protocolTroubleshooting2": "Wenn A2A-Aufgaben in `working` bleiben, überprüfen Sie `/api/a2a/tasks/:id` und streamen Sie Ereignisse auf den Endstatus.", "protocolTroubleshooting3": "Verwenden Sie `/dashboard/mcp` und `/dashboard/a2a` für betriebliche Kontrollen und Audit-Transparenz.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Rewrite-Helper für Clients ohne /v1.", "endpointRewriteResponsesNote": "Hilfsprogramm für Antworten ohne /v1 umschreiben.", "endpointRewriteModelsNote": "Hilfsprogramm für die Modellerkennung ohne /v1 umschreiben.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Gespeicherte Einträge der Proxy-Registrierung auflisten (unterstützt Paginierung).", + "mgmtProxiesCreateNote": "Einen wiederverwendbaren Proxy-Eintrag in der Registrierung erstellen.", + "mgmtProxiesHealthNote": "24-Stunden-/fortlaufende Integritätsmetriken für jeden gespeicherten Proxy aus den Proxy-Protokollen abrufen.", + "mgmtProxiesBulkAssignNote": "Einen Proxy in einer Anfrage mehreren Bereichs-IDs zuweisen oder daraus entfernen.", + "mgmtAssignmentsListNote": "Proxy-Zuweisungen nach Bereich, scope_id oder proxy_id auflisten.", + "mgmtAssignmentsUpdateNote": "Proxy für einen globalen, Anbieter-, Konto- oder Kombinationsbereich zuweisen oder entfernen.", + "mgmtLegacyMigrationNote": "Ältere proxyConfig-Zuordnungen in Registrierungszuweisungen importieren.", "modelPrefixesDescriptionStart": "Verwenden Sie das Anbieterpräfix vor dem Modellnamen, um an einen bestimmten Anbieter weiterzuleiten. Beispiel:", "modelPrefixesDescriptionEnd": "Routen zu GitHub Copilot.", "provider": "Anbieter", @@ -10215,7 +10222,7 @@ "mcpToolsMemoryDesc": "Suchen, hinzufügen und löschen Sie persistente Konversationsspeichereinträge.", "mcpToolsSkillsTitle": "Fähigkeiten", "mcpToolsSkillsDesc": "Listen Sie benutzerdefinierte Skill-Ausführungen auf, aktivieren Sie sie, führen Sie sie aus und überwachen Sie sie.", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "Auto-Kombination", "featureAutoComboText": "Erstellen Sie automatisch optimierte Kombinationen basierend auf Ihren verbundenen Anbietern, Nutzungsmustern und Modellfunktionen.", "featureSearchTitle": "Websuche", "featureSearchText": "Integrierte Websuche mit 5 Anbietern (Serper, Brave, Exa, Tavily, Perplexity) inklusive Analyse und Kostenverfolgung.", @@ -10257,7 +10264,7 @@ "apiExplorerDescription": "Testen Sie die OmniRoute-Endpunkte live. Wählen Sie einen Endpunkt aus, konfigurieren Sie Ihre Anfrage und sehen Sie die Antwort in Echtzeit.", "apiExplorerSseStarted": "SSE-Stream gestartet — überprüfen Sie das Terminal/devtools auf Echtzeitausgaben.", "apiExplorerError": "Fehler: {message}", - "apiExplorerAuth": "auth", + "apiExplorerAuth": "Authentifizierung", "apiExplorerResponseLabel": "Antwort", "apiExplorerSelectEndpoint": "Wählen Sie einen Endpunkt zum Erkunden aus", "apiExplorerChooseApi": "Wählen Sie eine API aus der Seitenleiste, um Details zu sehen und sie live auszuprobieren", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute ist Open-Source-Software. Es steht Ihnen frei, es im Rahmen der Lizenzbedingungen zu prüfen, zu ändern und zu verbreiten." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI-Agenten", + "description": "Auf deinem System installierte CLI-Agenten erkennen. Benutzerdefinierte Agenten für die automatische Erkennung hinzufügen.", + "refresh": "Aktualisieren", + "installed": "Installiert", + "notFound": "Nicht gefunden", + "builtIn": "Integriert", + "custom": "Benutzerdefiniert", + "remove": "Entfernen", + "addCustomAgent": "Benutzerdefinierten Agenten hinzufügen", + "addCustomAgentDesc": "Ein beliebiges CLI-Tool zur Erkennung registrieren. Es wird bei jeder Aktualisierung automatisch gesucht.", + "agentName": "Agentenname", + "binaryName": "Binärdateiname", + "versionCommand": "Versionsbefehl", + "spawnArgs": "Startargumente", + "addAgent": "Agenten hinzufügen", + "scanning": "System wird nach CLI-Agenten durchsucht ...", + "opencodeIntegration": "OpenCode-Integration", + "opencodeDetected": "opencode {version} erkannt", + "opencodeDesc": "Erstelle eine einsatzbereite {configFile} mit deiner OmniRoute-Basis-URL und allen verfügbaren Modellen – lege sie im Stammverzeichnis deines Projekts ab und führe {command} aus.", + "downloadConfig": "{file} herunterladen", + "downloaded": "Heruntergeladen!", + "setupGuideTitle": "Einrichtungsanleitung", + "openCliTools": "CLI-Tools öffnen", + "setupGuideDetectCliTitle": "Installierte CLIs erkennen", + "setupGuideDetectCliDesc": "Klicken Sie nach der Installation oder Aktualisierung einer CLI auf „Aktualisieren“, damit OmniRoute Binärdateien und Versionen erneut prüfen kann.", + "setupGuideCustomAgentTitle": "Benutzerdefinierte Binärdatei registrieren", + "setupGuideCustomAgentDesc": "Verwenden Sie „Benutzerdefinierten Agenten hinzufügen“, wenn Ihre CLI nicht in der integrierten Liste enthalten ist. Geben Sie den Namen der Binärdatei und den Versionsbefehl an.", + "setupGuideCommandMissingTitle": "„Befehl nicht gefunden“ beheben", + "setupGuideCommandMissingDesc": "Stellen Sie sicher, dass der CLI-Befehl in PATH vorhanden ist, öffnen Sie eine neue Terminalsitzung und führen Sie „Aktualisieren“ erneut aus.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10482,7 +10489,7 @@ "cursorCloud": "Cursors Hintergrund- / Cloud-Agenten (offizieller API-Schlüssel)" }, "activityTypes": { - "plan": "Plan", + "plan": "Tarif", "command": "Befehl", "code_change": "Codeänderung", "message": "Nachricht", @@ -10497,7 +10504,7 @@ "thinking": "Denken", "tool-calling": "Werkzeugaufruf", "multi-turn": "Mehrere Runden", - "vision": "Vision", + "vision": "Bildverarbeitung", "schema-coercion": "Schemazwang" }, "templateDescriptions": { @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Cache-Verwaltung", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Aktualisieren", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Speichereinträge", + "memoryEntriesSub": "In-Memory-LRU", + "dbEntries": "Datenbankeinträge", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Cache-Treffer", + "cacheHitsSub": "von insgesamt {total}", + "tokensSaved": "Eingesparte Token", + "tokensSavedSub": "Anhand der Treffer geschätzt", + "hitRate": "Trefferquote", + "performance": "Cache-Leistung", + "autoRefresh": "Wird alle {seconds} s automatisch aktualisiert", + "hits": "Treffer", + "misses": "Fehlversuche", + "total": "Gesamt", + "behavior": "Cache-Verhalten", + "behaviorDeterministic": "Nur Nicht-Streaming-Anfragen mit temperature=0 werden zwischengespeichert.", + "behaviorBypass": "Mit dem Header {header} umgehen.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "Standard-TTL: 30 Minuten. Konfiguration über {envVar}.", + "idempotency": "Idempotenzschicht", + "activeDedupKeys": "Aktive Deduplizierungsschlüssel", + "dedupWindow": "Deduplizierungszeitfenster", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Cache konnte nicht geleert werden.", + "unavailable": "Cache nicht verfügbar", + "unavailableDesc": "Cache-Statistiken konnten nicht abgerufen werden. Stellen Sie sicher, dass der Server ausgeführt wird.", "loadingCacheAria": "Cache wird geladen", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Prompt-Cache (anbieterseitig)", + "semanticCache": "Semantischer Cache", + "promptCacheSectionDesc": "Zeigt die anbieterseitige Prompt-Cache-Aktivität aus dem Nutzungsverlauf, damit Sie sehen können, wo die Cache-Steuerung aktiv ist und wie stark Eingaben wiederverwendet werden.", + "promptTrendDesc": "Stündliches Anfragevolumen, Cache-Abdeckung und Cache-Lesevolumen in den letzten 24 Stunden.", + "cachedRequests": "Zwischengespeicherte Anfragen", + "cachedRequests24h": "Zwischengespeicherte Anfragen (24 Std.)", + "cacheHitRate": "Cache-Trefferrate", + "cacheRate": "Cache-Rate", + "cacheRateDesc": "der gesamten Anfragen", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Prompt-Cache-Metriken", + "withCacheControl": "Mit Cache-Steuerung", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Cache-Wiederverwendungsrate", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Geschätzte Kostenersparnis", + "lastUpdated": "Zuletzt aktualisiert", + "hoursTracked": "erfasste Stunden", + "busiestHour": "Anfragestärkste Stunde", + "peakCacheRate": "Höchste Cache-Rate", + "trendHour": "Stunde", + "activityVolume": "Aktivität", + "requestsShort": "Anfragen", + "inputShort": "Eingabe", + "cachedShort": "Zwischengespeichert", + "writeShort": "Schreibvorgänge", + "resetting": "Wird zurückgesetzt...", + "resetMetrics": "Metriken zurücksetzen", + "byProvider": "Aufschlüsselung nach Anbieter", + "providerCacheRateDesc": "Jeder Anbieter stellt die Gesamtzahl der Eingabe-Token, der aus dem Cache gelesenen Token und der in den Cache geschriebenen Token bereit, damit Sie die Wiederverwendungsrate anhand der Rohsummen überprüfen können.", "provider": "Provider", - "requests": "Requests", + "requests": "Anfragen", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", - "tableProvider": "Provider", + "trend24h": "Cache-Trend (24 Std.)", + "peakCached": "Maximal zwischengespeichert", + "cached": "Zwischengespeichert", + "overview": "Übersicht", + "tableProvider": "Anbieter", "tableModel": "Modell", - "performanceTitle": "Performance", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "performanceTitle": "Leistung", + "semanticCacheSectionDesc": "OmniRoutes eigener deterministischer Antwort-Cache. Wenn er aktiviert ist, können wiederholte, nicht streamende Anfragen mit temperature=0 lokal beantwortet werden, ohne den vorgelagerten Anbieter aufzurufen.", + "semanticCacheDisabledDesc": "Der semantische Cache ist deaktiviert. OmniRoute überspringt die lokale Wiederverwendung von Antworten, bis Sie sie in den Einstellungen wieder aktivieren.", + "semanticEntriesDesc": "Derzeit in SQLite gespeicherte persistente semantische Cache-Einträge. Anbieterseitige Prompt-Cache-Aktivitäten werden hier nicht aufgeführt.", + "searchEntries": "Einträge durchsuchen...", + "search": "Suchen", + "loading": "Wird geladen...", + "entriesLoadError": "Semantische Cache-Einträge konnten nicht geladen werden.", + "noEntries": "Keine Cache-Einträge gefunden", + "noPromptCacheData": "Es wurde noch keine anbieterseitige Prompt-Cache-Aktivität erfasst.", + "noTrendData": "In den letzten 24 Stunden wurde keine Prompt-Cache-Aktivität erfasst.", + "signature": "Signatur", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Erstellt", + "expires": "Läuft ab", + "actions": "Aktionen", + "deduplicatedRequests": "Deduplizierte Anfragen", + "savedCalls": "Eingesparte API-Aufrufe", + "totalProcessed": "Verarbeitete Anfragen insgesamt", + "disabled": "Deaktiviert", + "totalRequests": "Anfragen insgesamt", "reasoningCache": "Argumentationswiederholung", "reasoningCacheDesc": "Behält das Modelldenken für Multi-Turn-Werkzeugaufrufabläufe bei", "reasoningEntries": "Aktive Einträge", @@ -10669,7 +10676,7 @@ "minutesAgo": "vor {minutes}m", "hoursAgo": "vor {hours}h", "daysAgo": "vor {days}d", - "entries": "Entries" + "entries": "Einträge" }, "proxyConfigModal": { "levelGlobal": "Global", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Verbinden Sie die Cursor-IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Mit Cursor anmelden", + "tabImport": "Token importieren", + "loginDescription": "Öffnet die Browser-Anmeldung von Cursor. Funktioniert in Docker – genehmigen Sie die Anmeldung im Browser Ihres Hosts und kehren Sie dann hierher zurück.", + "loginWithCursor": "Mit Cursor anmelden", + "startingLogin": "Wird gestartet…", + "waitingApproval": "Warten auf die Genehmigung der Cursor-Anmeldung…", + "openUrlHint": "Falls sich der Browser nicht geöffnet hat:", + "openLoginLink": "Anmeldeseite öffnen", + "cancelLogin": "Anmeldung abbrechen", "autoDetecting": "Automatische Erkennung von Token...", "readingFromCursor": "Lesen aus der Cursor-IDE oder dem Cursor-Agenten", "tokensAutoDetected": "Tokens wurden erfolgreich automatisch von der Cursor-IDE erkannt!", "cursorNotDetected": "Cursor-IDE nicht erkannt. Bitte fügen Sie Ihr Token manuell ein.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Ausführung in Docker? Verwenden Sie vorzugsweise „Mit Cursor anmelden“. Der automatische IDE-Import und cursor-agent sind innerhalb des Containers normalerweise nicht verfügbar. Siehe docs/providers/CURSOR-DOCKER.md.", "accessToken": "Zugriffstoken", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Aktualisierungstoken", + "refreshTokenPlaceholder": "Optional – ermöglicht die automatische Token-Aktualisierung", "required": "*", "accessTokenPlaceholder": "Das Zugriffstoken wird automatisch ausgefüllt...", "machineId": "Maschinen-ID", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Die automatische Erkennung von Token ist fehlgeschlagen", "errorEnterToken": "Bitte geben Sie das Zugriffstoken ein", "errorImportFailed": "Der Import ist fehlgeschlagen", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Cursor-Anmeldung konnte nicht gestartet werden", + "errorLoginPoll": "Cursor-Anmeldung fehlgeschlagen", + "errorLoginTimeout": "Zeitüberschreitung bei der Cursor-Anmeldung – versuchen Sie es erneut" }, "pricingModal": { "title": "Preiskonfiguration", @@ -10843,9 +10850,9 @@ "selectProxy": "{name} auswählen", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Legacy-Daten importieren", + "bulkAssign": "Massenzuweisung", + "addProxy": "Proxy hinzufügen", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Testen", + "edit": "Bearbeiten", + "delete": "Löschen", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10886,12 +10893,12 @@ "bulkLabelScopeIds": "Bereichs-IDs (durch Komma oder Zeilenumbruch getrennt)", "bulkScopeIdsPlaceholder": "Provider-Openai, Provider-Anthropic", "bulkApply": "Bewerben", - "labelScope": "Scope", + "labelScope": "Bereich", "labelProxy": "Proxy", "scopeGlobal": "global", - "scopeProvider": "provider", - "scopeAccount": "account", - "scopeCombo": "combo", + "scopeProvider": "Anbieter", + "scopeAccount": "Konto", + "scopeCombo": "Kombination", "bulkImportErrorMissingName": "NAME fehlt", "bulkImportErrorMissingHost": "Fehlender HOST", "bulkImportErrorInvalidPort": "Ungültiger PORT (muss 1-65535 sein)", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Fehlgeschlagen", "successRate": "{rate} % Erfolg", "avgLatency": "{latency}ms Durchschnitt", "assignmentsCount": "{count} Aufgaben", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Reparieren", "relayAuthMissing": "Authentifizierung fehlt", @@ -10957,13 +10964,13 @@ "poolStrategyFailed": "Fehler beim Aktualisieren der Rotationsstrategie", "strategyRoundRobin": "Round-Robin", "strategyRandom": "Zufällig", - "strategySticky": "Sticky", + "strategySticky": "Beständig", "strategyLatency": "Latenzoptimiert", "poolMembersLabel": "Pool-Mitglieder ({count})", "poolNoMembers": "Noch keine Proxys in diesem Pool.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# Ausgang} other {# Ausgänge}} verwendet von {connections, plural, one {# Verbindung} other {# Verbindungen}} · bis zu {max} über einen Ausgang · letzte {hours} Std.", + "poolEgressObservationEmpty": "In den letzten {hours} Std. wurde kein Datenverkehr beobachtet", + "poolEgressObservationHint": "Ermittelt aus dem Proxy-Protokoll innerhalb des Zeitfensters: unterschiedliche ausgehende IP-Adressen, die für die Mitglieder dieses Pools beobachtet wurden, sowie die OmniRoute-Verbindungen, die sie verwendet haben. „Über einen Ausgang“ bezieht sich auf das Zeitfenster, nicht auf eine gleichzeitige Nutzung. Die 429-Sperre pro IP pausiert nur Verbindungen derselben Anbieterfamilie.", "poolRemove": "Entfernen", "poolRemoveFailed": "Fehler beim Entfernen des Proxys aus dem Pool", "poolAddLabel": "Proxy hinzufügen", @@ -10975,43 +10982,43 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Endpunkt", + "provider": "Anbieter", + "model": "Modell", "accountKey": "Account Key", "autoAccounts": "Automatisch ({count} Konten)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Senden", + "cancel": "Abbrechen", + "audioFile": "Audiodatei", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Alles löschen", + "request": "Anfrage", + "response": "Antwort", + "transcription": "Transkription", + "copy": "Kopieren", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "{count} Bilder generiert", "generatedImage": "Generiertes Bild {index}", - "save": "Save", + "save": "Speichern", "endpointOptions": { "chat": "Chat", - "responses": "Responses", - "completions": "Completions", + "responses": "Antworten", + "completions": "Vervollständigungen", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Einbettungen", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Moderationen", - "rerank": "Rerank", + "rerank": "Neu bewerten", "search": "Search", "webFetch": "Web-Abruf" }, @@ -11019,50 +11026,50 @@ "clearChat": "Klarer Chat", "typeMessagePlaceholder": "Geben Sie eine Nachricht ein... (Umschalt+Eingabetaste für neue Zeile)", "tabChat": "Chat", - "tabCompare": "Compare", + "tabCompare": "Vergleichen", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Erstellen", + "configPane": "Konfiguration", + "systemPrompt": "Systemanweisung", + "systemPromptPlaceholder": "Du bist ein hilfreicher Assistent.", + "modelPlaceholder": "z. B. openai/gpt-4o", + "endpointLabel": "Endpunkt", + "parametersLabel": "Parameter", + "collapseConfig": "Konfigurationsbereich einklappen", + "expandConfig": "Konfigurationsbereich ausklappen", + "temperature": "Temperatur", + "maxTokens": "Max. Tokens", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", - "reasoningLabel": "Reasoning", - "thinking": "Thinking", + "presencePenalty": "Präsenzstrafe", + "frequencyPenalty": "Häufigkeitsstrafe", + "reasoningLabel": "Schlussfolgerung", + "thinking": "Denkprozess", "effort": "Aufwand", "effortDefault": "Standard", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Zufällig (leer lassen)", + "presetsLabel": "Voreinstellungen", + "loadPreset": "Voreinstellung laden", + "savePreset": "Voreinstellung speichern", + "noPresets": "Keine Voreinstellungen", + "presetNamePlaceholder": "Name der Voreinstellung", + "savingPreset": "Wird gespeichert…", + "nameRequired": "Name ist erforderlich", + "failedToSavePreset": "Voreinstellung konnte nicht gespeichert werden", + "improvePrompt": "Prompt verbessern", + "improvingPrompt": "Wird verbessert…", + "improvePromptTitle": "Prompt mit KI verbessern", + "setModelFirst": "Zuerst ein Modell festlegen", "setModelInConfigFirst": "Legen Sie zuerst ein Modell im Konfigurationsbereich fest.", "improvePromptFailed": "Optimierung des Prompts fehlgeschlagen.", "improvePromptAria": "Prompt mithilfe von KI optimieren", "confirmImprovePrompt": "Optimierung des Prompts bestätigen", "improvePromptDescription": "Dies sendet Ihren aktuellen System-Prompt an , um eine verbesserte Version zu generieren.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Dadurch wird Kontingent des unter „Konfiguration“ konfigurierten Modells verbraucht.", + "improveConfirm": "Verbessern", + "exportCode": "Code exportieren", + "exportCodeTitle": "Code exportieren", "exportShort": "Exportieren", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Kein Playground-Status zum Exportieren verfügbar.", "closeExportModal": "Export-Modal schließen", "close": "Schließen", "exportRealKeyWarning": "Sicherheitswarnung: Export blockiert — ein echter API-Schlüssel wurde in der Ausgabe erkannt. Bitte setzen Sie Ihren API-Schlüssel zurück und versuchen Sie es erneut.", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language}-Code kopieren", "loadingPresets": "Laden…", "loadPresetPlaceholder": "Preset laden…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Kopieren", + "copiedCode": "Kopiert!", + "addModel": "+ Modell hinzufügen", + "runAll": "Alle ausführen", + "cancelAll": "Alle abbrechen", + "maxColumnsReached": "Maximal {max} Spalten", + "modelPlaceholderCompare": "Modell (Cmd+K)…", "noModel": "Kein Modell", "statusLabel": "Status: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "Warten auf Antwort…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "clientseitige Schätzung", + "tokensLabel": "Token", + "costLabel": "Kosten", + "costEstimated": "(geschätzt)", "ttftTitle": "Zeit bis zum ersten Token (clientseitige Schätzung)", "tpsTitle": "Token pro Sekunde (clientseitige Schätzung)", "tokenCountsTitle": "Prompt-Token ↑ / Completion-Token ↓", "estimatedCostTitle": "Geschätzte Kosten (keine Gewähr für Richtigkeit)", - "toolsLabel": "Tools", - "toolsCount": "Tools ({count})", - "addTool": "Add tool", + "toolsLabel": "Werkzeuge", + "toolsCount": "Werkzeuge ({count})", + "addTool": "Tool hinzufügen", "editTool": "Tool {name} bearbeiten", "removeTool": "Tool {name} entfernen", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Funktionsname", "toolNameRequiredPlaceholder": "Funktionsname *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Beschreibung (optional)", "toolParamsLabel": "Parameter (JSON-Schema)", "toolParamsJsonSchema": "JSON-Schema für Parameter", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parameter müssen gültiges JSON sein", + "structuredOutputLabel": "Strukturierte Ausgabe", + "enableJsonMode": "JSON-Modus aktivieren", + "disableJsonMode": "JSON-Modus deaktivieren", + "invalidJson": "Ungültiges JSON", "jsonMode": "JSON-Modus", "jsonModeDescription": "Erzwingt response_format: json_schema", "schemaName": "Schemaname", @@ -11125,10 +11132,10 @@ "jsonSchemaEditor": "JSON-Schema-Editor", "schemaValidated": "Schema validiert", "validateSchema": "Schema validieren", - "seed": "Seed", + "seed": "Startwert", "stopSequences": "Stoppsequenzen", "stopSequencesPlaceholder": "z. B. \"\\n\\n\" oder \"END\"", - "autoProvider": "Auto", + "autoProvider": "Automatisch", "httpError": "Fehler {status}", "requestCancelled": "Anfrage abgebrochen", "networkError": "Netzwerkfehler", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} Spalten", "addModelToCompare": "Modellspalte zum Vergleichen hinzufügen", "modelsSimultaneously": "Bis zu {max} Modelle gleichzeitig", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Wird ausgeführt…", + "runLabel": "Ausführen", + "enterToolResult": "Tool-Ergebnis eingeben…", "build": { "step1Label": "Was soll getestet werden?", "step2Label": "Konfigurieren", @@ -11166,11 +11173,11 @@ "step2Title": "Konfigurieren", "step2Subtitle": "Richten Sie die Tools oder das JSON-Schema ein, die in der Anfrage verwendet werden.", "step3Title": "Ausführen", - "modeToolsTitle": "Tools", + "modeToolsTitle": "Werkzeuge", "modeToolsDesc": "Funktionsaufrufe testen — definieren Sie Tools und sehen Sie, wie das Modell sie aufruft.", "modeJsonTitle": "JSON", "modeJsonDesc": "Strukturierte Ausgabe testen — beschränken Sie die Antwort auf ein JSON-Schema.", - "modeBothTitle": "Tools + JSON", + "modeBothTitle": "Werkzeuge + JSON", "modeBothDesc": "Kombinieren Sie Funktionsaufrufe und strukturierte Ausgabe in einer einzigen Anfrage.", "backButton": "Zurück", "nextButton": "Weiter", @@ -11207,7 +11214,7 @@ "play": "Abspielen", "query": "Abfrage", "numResults": "Maximale Ergebnisse", - "prompt": "Prompt", + "prompt": "Eingabeaufforderung", "size": "Größe", "duration": "Dauer", "question": "Frage", @@ -11221,7 +11228,7 @@ "noAudioUrl": "Die Antwort enthielt keine Audio-URL: {response}", "music": "Musik", "embeddingSample": "OmniRoute leitet KI-Anfragen über mehrere Anbieter weiter.", - "embedding": "Embedding", + "embedding": "Einbettung", "imageSample": "Eine futuristische Stadt bei Sonnenuntergang, filmische Beleuchtung", "image": "Bild", "ttsSample": "Hallo von OmniRoute. Dies ist ein Text-to-Speech-Test.", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Ergebnis {number}", "noKeysFound": "Keine API-Schlüssel gefunden. Fügen Sie im Bereich „Schlüssel“ einen hinzu.", "exampleLabel": "Beispiel", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} In- / {tokensOut} Out-Tokens", "defaultKey": "(Standard)", "clear": "Löschen", @@ -11250,73 +11257,73 @@ "stop": "Stopp" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", + "recording": "Aufzeichnung", + "paused": "Pausiert", + "pipelineLogsOn": "Pipeline-Protokolle aktiviert", + "pipelineLogsOff": "Pipeline-Protokolle deaktiviert", + "updatingPipelineLogs": "Pipeline-Protokolle werden aktualisiert...", + "updatePipelineFailed": "Pipeline-Protokollierung konnte nicht aktualisiert werden", + "capturePipeline": "Pipeline-Nutzdaten für neue Anfragen erfassen", + "searchPlaceholder": "Modelle, Anbieter, Konten, API-Schlüssel, Kombinationen suchen...", + "allProviders": "Alle Anbieter", + "allModels": "Alle Modelle", + "allAccounts": "Alle Konten", + "allApiKeys": "Alle API-Schlüssel", + "total": "Gesamt", + "ok": "Erfolgreich", + "err": "Fehler", + "combo": "Kombiniert", + "keys": "Schlüssel", + "shown": "Angezeigt", + "sortNewest": "Neueste", + "sortOldest": "Älteste", + "sortTokensDesc": "Token ↓", + "sortTokensAsc": "Token ↑", + "sortDurationDesc": "Dauer ↓", + "sortDurationAsc": "Dauer ↑", "sortStatusDesc": "Status ↓", "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortModelAsc": "Modell A–Z", + "sortModelDesc": "Modell Z–A", + "sortLogs": "Protokolle sortieren", + "refresh": "Aktualisieren", + "columnsLabel": "Spalten", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", + "cacheUp": "AKTIV", + "semantic": "Semantisch", "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semanticCacheHit": "Semantischer Cache-Treffer (bereitgestellt von OmniRoute)", + "upstreamResponse": "Antwort des Upstream-Anbieters", + "noApiKey": "Kein API-Schlüssel", + "requestedRoutedTitle": "Angefordert: {requested}, weitergeleitet als: {routed}", "statusFilters": { - "all": "All", + "all": "Alle", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Erfolgreich", + "combo": "Kombiniert" }, "columns": { "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "cacheSource": "Cache-Quelle", + "model": "Modell", + "requested": "Angefordert", + "provider": "Anbieter", + "protocol": "Anfrageprotokoll", + "account": "Konto", + "apiKey": "API-Schlüssel", + "combo": "Kombination", + "tokens": "Token", "compressed": "Komprimierung", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Dauer", + "time": "Zeit", + "conversation": "Konversation", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Protokolle werden geladen...", + "noLogs": "Noch keine Protokolle. Führen Sie einige API-Aufrufe durch, um sie hier zu sehen.", + "noMatchingLogs": "Keine Protokolle entsprechen den aktuellen Filtern.", + "callLogsInfo": "Aufrufprotokolle werden außerdem als JSON-Dateien unter {dataDir} gespeichert und basierend auf {retentionDays} und {maxEntries} rotiert.", "loadMore": "Mehr laden", "loadingMore": "Mehr laden...", "correlationId": "Korrelations-ID", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Das detaillierte Payload-Artefakt ist für diesen Protokolleintrag nicht mehr verfügbar.", "payloadCorrupt": "Detailliertes Payload-Artefakt konnte nicht analysiert werden.", - "notAvailable": "N/A", + "notAvailable": "N/V", "semanticCache": "Semantisch (OmniRoute)", "upstreamCache": "Upstream (Anbieter)", "ariaLabel": "Anforderungsprotokolldetails", @@ -11417,59 +11424,59 @@ "correlationId": "Korrelations-ID", "correlationIdValue": "Korrelations-ID: {id}", "detailedPayloadInfo": "Aktivieren Sie zuerst das detaillierte Protokollieren, wenn Sie die vierstufige Client/Provider-Payload-Ansicht für neue Anfragen wünschen.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Alle kopieren", + "copiedAll": "Alles kopiert" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", + "filterAll": "Alle", + "filterErrors": "Fehler", + "filterSuccess": "Erfolgreich", + "filterTimeout": "Zeitüberschreitung", "colStatus": "Status", "colProxy": "Proxy", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "Typ", + "colLevel": "Ebene", + "colProvider": "Anbieter", + "colTarget": "Ziel", + "colLatency": "Latenz", + "colClientIp": "Client-IP", + "colTime": "Zeit", + "recording": "Aufzeichnung", + "paused": "Pausiert", + "searchPlaceholder": "Host, Anbieter, Ziel, IP suchen...", + "allTypes": "Alle Typen", + "allLevels": "Alle Ebenen", + "allProviders": "Alle Anbieter", + "total": "gesamt", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "FEHLER", + "timeoutShort": "ZEITÜBERSCHR.", + "direct": "direkt", + "newest": "Neueste", + "oldest": "Älteste", + "latencyDesc": "Latenz ↓", + "latencyAsc": "Latenz ↑", + "refresh": "Aktualisieren", + "columns": "Spalten", + "loadingProxyLogs": "Proxy-Protokolle werden geladen...", + "noProxyLogs": "Noch keine Proxy-Protokolle. Konfigurieren Sie Proxys und führen Sie API-Aufrufe durch, um sie hier anzuzeigen.", + "noMatchingLogs": "Keine Protokolle entsprechen den aktuellen Filtern.", + "tlsFingerprint": "Chrome 124 TLS-Fingerabdruck", "colPublicIp": "Öffentliche IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", + "speech": "Sprache", + "search": "Suche", + "images": "Bilder", "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "music": "Musik", + "responses": "Antworten", + "rerank": "Neusortierung", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Einbettungen", + "transcription": "Transkription" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Laufzeit", + "description": "Echtzeit-Beobachtbarkeit — 3-stufige Ausfallsicherheit + Sitzungen + Kontingentwarnungen", + "pause": "Pausieren", + "resume": "Fortsetzen", + "refreshNow": "Jetzt aktualisieren", + "kpiSessions": "Sitzungen", + "kpiCircuits": "Schaltkreise", + "kpiCooldowns": "Abklingzeiten", + "kpiLockouts": "Sperren", + "hintStickyBound": "{count} dauerhaft gebunden", + "hintRecovering": "{count} werden wiederhergestellt", + "hintAllHealthy": "alle fehlerfrei", + "hintOpen": "offen", + "hintConnsCooling": "Verbindungen in Abkühlung", + "hintModelsBlocked": "Modelle blockiert", + "resilienceTitle": "3-stufige Resilienz", + "resilienceSubtitle": "Entspricht dem dokumentierten Resilienzmodell", + "providersHealthy": "{percent}% der Provider funktionsfähig", + "layer": "Ebene {n}", + "layer1Title": "Provider-Circuit-Breaker", + "layer1Desc": "Datenverkehr zu Providern stoppen, bei denen Upstream-Fehler auftreten", + "layer2Title": "Verbindungs-Cooldowns", + "layer2Desc": "Ein fehlerhaftes Konto bzw. einen fehlerhaften Schlüssel überspringen; andere Verbindungen bleiben aktiv", + "layer3Title": "Modellsperren", + "layer3Desc": "Ratenbegrenzungssperren pro Modell; dieselbe Verbindung bedient weiterhin andere Modelle", + "badgeAffectedOf": "{affected} von {total} betroffen", + "badgeCooling": "{count} im Cooldown", + "badgeLocked": "{count} gesperrt", + "emptyCircuits": "Noch keine Circuit-Breaker aktiv", + "emptyCooldowns": "Keine Verbindungs-Cooldowns aktiv", + "emptyLockouts": "Keine Modellsperren", + "moreCooldowns": "+{count} weitere Cooldowns", + "moreLockouts": "+{count} weitere Sperren", + "feedTitle": "Live-Feed", + "feedSubtitle": "Letzte {count} Ereignisse", + "feedFilterAll": "Alle", + "feedFilterCircuits": "Circuit-Breaker", + "feedFilterCooldowns": "Abklingzeiten", + "feedFilterLockouts": "Sperren", + "feedFilterSessions": "Sitzungen", + "feedFilterQuotas": "Kontingente", + "feedClear": "Leeren", + "feedEmptyWaiting": "Warten auf Ereignisse … (Abfrage alle 5s)", + "feedEmptyFiltered": "Keine Ereignisse entsprechen diesem Filter", + "sessionsTitle": "Aktive Sitzungen", + "sessionsSubtitle": "Sticky-gebundene Anfrage-Fingerprints (live)", + "sessionsActive": "{count} aktiv", + "sessionsEmptyTitle": "Keine aktiven Sitzungen", + "sessionsEmptyHint": "Sitzungen werden angezeigt, sobald Anfragen den Proxy durchlaufen", + "tblSession": "Sitzung", + "tblAge": "Alter", + "tblIdle": "Inaktiv", + "tblReqs": "Anfr.", + "tblBoundTo": "Gebunden an", + "topApiKeys": "Wichtigste API-Schlüssel", + "quotaMonitorsTitle": "Kontingentüberwachung", + "quotaMonitorsSubtitle": "Aktueller Kontingentstatus pro Kontozeitfenster", + "openQuota": "Kontingent öffnen", + "allQuotasHealthy": "Alle Kontingente sind in Ordnung", + "statusExhausted": "AUSGESCHÖPFT", + "statusAlerting": "ALARM AKTIV", + "statusError": "FEHLER", + "moreSuffix": "+{count} weitere" }, "quotaShare": { "weightPercent": "Gewichtung %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Kontingentfreigabe", + "description": "Anbieterkontingente mit %-Limits über API-Schlüssel hinweg teilen", + "newPool": "Neuer Pool", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", + "betaDescription": "Die Konfiguration wird in localStorage gespeichert (noch nicht dauerhaft auf dem Server). Die Durchsetzung von Limits pro Anfrage ist noch nicht in die Proxy-Pipeline integriert. Auf diesem Bildschirm können Sie die Kontingentaufteilung entwerfen und visualisieren. Die tatsächliche Durchsetzung folgt in einer zukünftigen Version mit DB-Persistenz und dem Abfangen von Upstream-Aufrufen.", + "kpiActivePools": "Aktive Pools", + "kpiKeysAllocated": "Zugewiesene Schlüssel", + "kpiAvgUnallocated": "Durchschn. nicht zugewiesen", + "kpiProvidersWithQuota": "Anbieter mit Kontingent", + "emptyTitle": "Keine Pools konfiguriert", + "emptyDescription": "Erstellen Sie einen Pool, um API-Schlüssel zuzuweisen, die sich das Kontingentzeitfenster eines Anbieters mit %-Zuteilungen teilen.", + "loading": "Wird geladen…", + "removePool": "Pool entfernen", + "removeConfirm": "Diesen Pool entfernen?", "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "used": "verwendet", + "allocationsCount": "Zuteilungen ({count})", + "allocatedFree": "{allocated}% zugeteilt · {free}% frei", + "noAllocations": "Noch keine Schlüssel zugewiesen", + "capLabel": "Limit {value}", + "notTrackedYet": "(noch nicht erfasst)", + "policy": "Richtlinie", "apiKeyColumn": "API-Schlüssel", "weightColumn": "Gewichtung", "fairShareShort": "fair", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "hart", + "policySoft": "weich", + "policyBurst": "Burst", + "policyHardHint": "Blockieren, wenn der Schlüssel seine Zuteilung ausgeschöpft hat", + "policySoftHint": "Überschreitung zulassen, nur warnen", + "policyBurstHint": "Burst-Nutzung des freien Pools zulassen", + "editAllocations": "Zuteilungen bearbeiten", + "newPoolTitle": "Neuer Kontingentpool", + "providerConnection": "Anbieterverbindung (Konto)", + "selectConnection": "Verbindung auswählen…", + "noEligibleConnections": "Keine Verbindungen mit Kontingentdaten. Aktualisieren Sie zuerst unter /dashboard/quota.", + "quotaWindow": "Kontingentzeitraum", + "selectWindow": "Zeitraum auswählen…", + "alreadyUsedSuffix": "(bereits verwendet)", + "windowReset": "Zurücksetzen", + "duplicatePoolError": "Für diese Verbindung und diesen Zeitraum ist bereits ein Pool vorhanden", + "cancel": "Abbrechen", + "createPool": "Pool erstellen", + "editTitle": "Zuweisungen bearbeiten", + "noKeysAdded": "Keine Schlüssel zugewiesen. Fügen Sie unten einen hinzu.", + "totalLabel": "Gesamt: {percent}%", + "totalExceeded": "⚠ überschreitet 100 %", + "addKey": "+ Schlüssel hinzufügen…", + "equalSplit": "Gleichmäßig aufteilen", + "save": "Zuweisungen speichern", "betaPreviewLabel": "Beta – UI-Vorschau.", "betaConfigSavedPrefix": "Die Konfiguration wird gespeichert in", "betaConfigSavedSuffix": "(noch nicht auf dem Server persistiert). Die Durchsetzung der Obergrenze pro Anfrage ist noch nicht in der Proxy-Pipeline verankert. Auf diesem Bildschirm können Sie die Quotenaufteilung entwerfen und visualisieren. Eine echte Durchsetzung wird in einer zukünftigen Iteration mit DB-Persistenz und Upstream-Anrufabfangen erfolgen.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Diese Gruppe enthält noch Pools — weisen Sie diese zuerst neu zu oder löschen Sie sie.", "ungroupedTitle": "Nicht gruppiert", "ungroupedHint": "Diese Pools sind keiner bekannten Gruppe zugewiesen. Bearbeiten Sie einen Pool, um ihn in eine echte Gruppe zu verschieben.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Dieser Pool konnte nicht entfernt werden.", + "dismiss": "Schließen" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", + "title": "Plug-ins", + "description": "Plugins installieren und verwalten, um die Funktionalität von OmniRoute zu erweitern", + "loading": "Plugins werden geladen...", + "scanning": "Suche läuft...", + "scanForPlugins": "Nach Plugins suchen", + "noPlugins": "Keine Plugins installiert", + "noPluginsDescription": "Legen Sie Plugin-Verzeichnisse unter ~/.omniroute/plugins/ ab und klicken Sie auf „Suchen“.", + "activate": "Aktivieren", + "deactivate": "Deaktivieren", + "uninstall": "Deinstallieren", + "uninstallConfirm": "Plugin „{name}“ deinstallieren?", + "pluginScanComplete": "Plugin-Suche abgeschlossen", + "pluginScanFailed": "Plugin-Suche fehlgeschlagen", + "activated": "{name} aktiviert", + "deactivated": "{name} deaktiviert", + "activateFailed": "Aktivierung von {name} fehlgeschlagen", + "deactivateFailed": "Deaktivierung von {name} fehlgeschlagen", + "uninstalled": "{name} deinstalliert", + "uninstallFailed": "Deinstallation von {name} fehlgeschlagen", + "configure": "Konfigurieren: {name}", + "configurePlugin": "Konfigurieren", + "noConfigSettings": "Dieses Plugin hat keine konfigurierbaren Einstellungen.", + "saving": "Wird gespeichert...", + "saveConfiguration": "Konfiguration speichern", + "configurationSaved": "Konfiguration gespeichert", + "saveConfigurationFailed": "Konfiguration konnte nicht gespeichert werden", + "pluginNotFound": "Plugin nicht gefunden", "version": "Version", - "author": "Author", - "description_label": "Description", + "author": "Autor", + "description_label": "Beschreibung", "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "enabled": "Aktiviert", + "disabled": "Deaktiviert", "installedTab": "Installiert", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Marktplatz", "marketplaceUrlLabel": "Benutzerdefinierte Marketplace-URL", "marketplaceUrlPlaceholder": "Leer lassen für offizielle Omniroute-Registry", "saveMarketplaceUrl": "Speichern & neu laden", @@ -11771,11 +11778,11 @@ "yesterdayHeader": "Gestern", "filterAll": "Alle", "filterProviders": "Anbieter", - "filterCombos": "Combos", + "filterCombos": "Kombinationen", "filterApiKeys": "API-Schlüssel", "filterSettings": "Einstellungen", "filterQuota": "Kontingent", - "filterAuth": "Auth", + "filterAuth": "Authentifizierung", "filterSystem": "System", "filterAria": "Nach Ereignistyp filtern", "refresh": "Aktualisieren", @@ -11864,48 +11871,48 @@ "restartServer": "Neu starten", "trustCert": "Zertifikat vertrauen", "downloadCert": "Zertifikat herunterladen", - "certManualTitle": "Certificate couldn't be installed automatically (e.g. inside a container). The bridge can still run — trust the CA manually:", - "regenerateCert": "Regenerate Cert", - "starting": "Starting…", - "stopping": "Stopping…", - "restarting": "Restarting…", - "trusting": "Trusting…", - "regenerating": "Regenerating…", - "upstreamCaLabel": "Upstream CA Certificate (corporate)", + "certManualTitle": "Das Zertifikat konnte nicht automatisch installiert werden (z. B. innerhalb eines Containers). Die Bridge kann trotzdem ausgeführt werden — vertrauen Sie der CA manuell:", + "regenerateCert": "Zertifikat neu generieren", + "starting": "Wird gestartet…", + "stopping": "Wird gestoppt…", + "restarting": "Wird neu gestartet…", + "trusting": "Vertrauen wird eingerichtet…", + "regenerating": "Wird neu generiert…", + "upstreamCaLabel": "Übergeordnetes CA-Zertifikat (Unternehmen)", "upstreamCaPlaceholder": "/etc/ssl/certs/corp-ca.pem", - "upstreamCaTest": "Test TLS", - "upstreamCaTestOk": "TLS test passed", - "upstreamCaTestError": "TLS test failed — check the path and CA file", - "bypassSectionTitle": "Bypass List", - "bypassSectionDesc": "Hosts matching these patterns are tunneled directly (no TLS decryption). Defaults include banks.gov, and corporate SSO.", - "bypassDefaultsLabel": "Default bypass patterns (read-only)", - "bypassUserLabel": "Custom bypass patterns (one per line, glob or regex)", - "saveBypassList": "Save bypass list", - "agentListTitle": "IDE Agents", - "filterAll": "All", - "filterActive": "Active", - "filterSetupRequired": "Setup required", - "filterInvestigating": "Investigating", - "searchAgents": "Search agents…", - "noAgentsMatch": "No agents match the current filter", - "agentHosts": "Intercepted hosts", - "certTrusted": "Certificate trusted", - "certNotTrusted": "Certificate not trusted", - "investigatingNotice": "This agent is under investigation. Hosts and API surface are still being confirmed. Setup will be available once the upstream API is documented.", - "modelMappingsLabel": "Model mappings", - "sourceModel": "Source model (agent native)", - "targetModel": "Target model (OmniRoute)", - "noMappings": "No model mappings configured. Run setup wizard to auto-detect models.", + "upstreamCaTest": "TLS testen", + "upstreamCaTestOk": "TLS-Test bestanden", + "upstreamCaTestError": "TLS-Test fehlgeschlagen — Pfad und CA-Datei überprüfen", + "bypassSectionTitle": "Umgehungsliste", + "bypassSectionDesc": "Hosts, die diesen Mustern entsprechen, werden direkt getunnelt (keine TLS-Entschlüsselung). Die Standardwerte umfassen banks.gov und das Unternehmens-SSO.", + "bypassDefaultsLabel": "Standardmäßige Umgehungsmuster (schreibgeschützt)", + "bypassUserLabel": "Benutzerdefinierte Umgehungsmuster (eines pro Zeile, Glob oder regulärer Ausdruck)", + "saveBypassList": "Umgehungsliste speichern", + "agentListTitle": "IDE-Agenten", + "filterAll": "Alle", + "filterActive": "Aktiv", + "filterSetupRequired": "Einrichtung erforderlich", + "filterInvestigating": "Wird untersucht", + "searchAgents": "Agenten suchen…", + "noAgentsMatch": "Keine Agenten entsprechen dem aktuellen Filter", + "agentHosts": "Abgefangene Hosts", + "certTrusted": "Zertifikat vertrauenswürdig", + "certNotTrusted": "Zertifikat nicht vertrauenswürdig", + "investigatingNotice": "Dieser Agent wird derzeit untersucht. Hosts und API-Oberfläche werden noch ermittelt. Die Einrichtung ist verfügbar, sobald die vorgelagerte API dokumentiert ist.", + "modelMappingsLabel": "Modellzuordnungen", + "sourceModel": "Quellmodell (nativ für den Agenten)", + "targetModel": "Zielmodell (OmniRoute)", + "noMappings": "Keine Modellzuordnungen konfiguriert. Führen Sie den Einrichtungsassistenten aus, um Modelle automatisch zu erkennen.", "noMappingsDesc": "Noch keine Modellzuordnungen konfiguriert. Fügen Sie Zuordnungen hinzu, um Agentenanfragen über OmniRoute zu leiten.", "addMapping": "Mapping hinzufügen", - "selectModel": "Select…", - "saveMappings": "Save mappings", - "setupWizard": "Setup wizard", - "startDns": "Start DNS", - "stopDns": "Stop DNS", - "toggling": "Toggling…", - "viewTraffic": "View traffic", - "emptyNoProvidersTitle": "No providers configured yet", + "selectModel": "Auswählen…", + "saveMappings": "Zuordnungen speichern", + "setupWizard": "Einrichtungsassistent", + "startDns": "DNS starten", + "stopDns": "DNS stoppen", + "toggling": "Wird umgeschaltet…", + "viewTraffic": "Datenverkehr anzeigen", + "emptyNoProvidersTitle": "Noch keine Anbieter konfiguriert", "emptyNoProvidersBody": "Um AgentBridge zu verwenden, verbinden Sie zuerst mindestens einen Provider. Dies ist das Ziel, an das IDE-Anfragen weitergeleitet werden.", "emptyGoToProviders": "Zu den Providern", "wizardTitle": "Einrichtungsassistent", @@ -11937,7 +11944,7 @@ "maintenanceTitle": "Wartung & Diagnose", "maintenanceSubtitle": "Führen Sie einen Selbsttest der Erfassungspipeline durch, machen Sie verbleibende Systemzustände rückgängig und übertragen Sie Ihr Setup auf andere Rechner.", "orphanedStateWarning": "Eine vorherige Sitzung hat Systemzustände hinterlassen (DNS-Spoofing, CA oder System-Proxy). Führen Sie „Reparieren“ aus, um diese zu bereinigen.", - "diagnose": "Diagnose", + "diagnose": "Diagnostizieren", "diagnosing": "Diagnose läuft…", "diagnoseHealthy": "Erfassungspipeline ist fehlerfrei.", "diagnoseUnhealthy": "Erfassungspipeline weist Probleme auf:", @@ -12053,7 +12060,7 @@ "filterHost": "Host filtern…", "filterAgent": "Agent", "filterStatus": "Status", - "pauseBtn": "Pause", + "pauseBtn": "Pausieren", "resumeBtn": "Fortsetzen", "clearBtn": "Leeren", "exportHar": ".har exportieren", @@ -12068,7 +12075,7 @@ "tabHeaders": "Header", "tabRequest": "Anfrage", "tabResponse": "Antwort", - "tabTiming": "Timing", + "tabTiming": "Zeitmessung", "tabLlm": "LLM", "tabStats": "Statistiken", "requestHeaders": "Request-Header", @@ -12076,7 +12083,7 @@ "rawEvents": "Roh-Events", "mergedView": "Zusammengeführte Ansicht", "noBody": "Kein Body.", - "streaming": "streaming…", + "streaming": "Streaming…", "manageHosts": "Hosts verwalten", "copySnippet": "Proxy-Snippet kopieren", "addHost": "Hinzufügen", @@ -12142,7 +12149,7 @@ "roleSystem": "System", "roleUser": "Benutzer", "roleAssistant": "Assistent", - "roleTool": "Tool", + "roleTool": "Werkzeug", "expand": "Erweitern", "collapse": "Einklappen", "systemPromptHidden": "System-Prompt ausgeblendet — zum Erweitern klicken", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP-Agenten", "phrase": "CLIs, die OmniRoute als Ausführungs-Backend startet (umgekehrter Fluss)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Die meisten Benutzer können dies ignorieren – verwenden Sie es nur, wenn eine Integration es erfordert.", "flow": "Client → OmniRoute → CLI starten (stdio/ACP) → Antwort", "seeOther": "Siehe →" } @@ -12314,7 +12321,7 @@ "description": "Verfügbare KI-Modelle über alle konfigurierten Anbieter hinweg abfragen. Modelle auflisten, Modell-Aliase auflösen und den vollständigen Modellkatalog einschließlich anbieterspezifischer Varianten durchsuchen." }, "omni-combos-routing": { - "name": "Combos & Routing", + "name": "Kombinationen & Routing", "description": "Routing-Combos mit 14 Strategien (priority, weighted, round-robin, Auto-combo etc.) erstellen und verwalten. Fallback-Ketten konfigurieren, Routing-Ergebnisse testen und Combo-Metriken abrufen." }, "omni-api-keys": { @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Webhook-Endpunkte registrieren, auflisten, testen und entfernen. Ereignisabonnements (request.completed, request.failed, quota.exceeded usw.) konfigurieren und Zustellungswiederholungen verwalten." }, "omni-mcp": { "name": "MCP-Server", @@ -12390,7 +12397,7 @@ "description": "Die zentralen OpenAI-kompatiblen Inferenz-Endpunkte: Chat-Completions, Embeddings, Images, Audio (TTS/STT), Moderations, Rerank und die Responses API. Die primäre Integrationsfläche für KI-Agenten." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Bereitstellen", "description": "Starten, stoppen und starten Sie den OmniRoute-Server über die CLI neu. Verwalten Sie den Daemon-Modus, die Portkonfiguration, die automatische Wiederherstellung, die System-Tray-Integration und den Shortcut zum Öffnen des Dashboards." }, "cli-health": { @@ -12414,7 +12421,7 @@ "description": "Senden Sie Chat-Completions, streamen Sie Antworten und starten Sie eine interaktive REPL-Sitzung über die CLI. Unterstützt alle OmniRoute-Provider, Combo-Routing und die Konfiguration von System-Prompts." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: Routing & Kombinationen", "description": "Erstellen, listen, aktualisieren und löschen Sie Routing-Combos über die CLI. Testen Sie Routing-Strategien, überprüfen Sie Combo-Metriken und konfigurieren Sie Fallback-Ketten interaktiv." }, "cli-resilience": { @@ -12446,7 +12453,7 @@ "description": "Starten und stoppen Sie Tunnelverbindungen (ngrok, Cloudflare, benutzerdefiniert) über die CLI. Überprüfen Sie aktive Tunnel-URLs, konfigurieren Sie die Authentifizierung und testen Sie die externe Erreichbarkeit." }, "cli-backup-sync": { - "name": "CLI: Backup & Sync", + "name": "CLI: Sicherung & Synchronisierung", "description": "Sichern und stellen Sie OmniRoute-Daten über die CLI wieder her. Lösen Sie inkrementelle Snapshots aus, synchronisieren Sie mit dem Cloud-Speicher, verwalten Sie Backup-Zeitpläne und stellen Sie Daten aus Archivdateien wieder her." }, "cli-policy-audit": { @@ -12458,7 +12465,7 @@ "description": "Übermitteln und überwachen Sie Batch-Inferenz-Jobs über die CLI. Laden Sie Dateien für die Batch-Verarbeitung hoch und verwalten Sie diese, rufen Sie Ergebnisse ab und integrieren Sie Batch-Pipelines in CI/CD-Workflows." }, "cli-eval": { - "name": "CLI: Evals", + "name": "CLI: Evaluierungen", "description": "Erstellen und führen Sie Evaluierungs-Suites aus, verfolgen Sie den Live-Benchmark-Fortschritt, zeigen Sie Scorecards an, vergleichen Sie die Modellleistung und integrieren Sie Eval-Läufe über die CLI in CI-Workflows." }, "cli-plugins-skills": { @@ -12470,7 +12477,7 @@ "description": "Führen Sie die Ersteinrichtung durch, konfigurieren Sie globale CLI-Einstellungen, verwalten Sie Umgebungsvariablen, suchen Sie nach Updates und konfigurieren Sie den Autostart über die CLI-Befehle setup und config." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI: Agenten-Skill-Sammler", "description": "Installierte CLI-Coding-Tools (Claude Code, Codex, Cursor, Copilot, Cline und mehr) erkennen, GitHub nach passenden Agent Skills durchsuchen und über die integrierten APIs von OmniRoute in den erkannten Tools installieren." }, "config-codex-cli": { @@ -12482,22 +12489,22 @@ "description": "Agent Skills aus GitHub-Repositories suchen, bewerten, scannen und importieren, die SKILL.md, CLAUDE.md, .cursorrules und ähnliche Agent-Skill-Dateien enthalten. Community-Skills aus über 160 Anbieterkategorien entdecken, Relevanz mittels heuristischer Bewertung evaluieren, auf Malware oder fest codierte Secrets prüfen und in Agenten-Verzeichnisse von Hermes, Claude Code, Gemini CLI oder OpenCode installieren." } }, - "pageTitle": "Agent Skills", + "pageTitle": "Agenten-Skills", "pageSubtitle": "Bringen Sie Ihrem Agenten bei, OmniRoute zu bedienen — 23 API-Bereiche + 21 CLI-Familien", "conceptCard": { "agent": { - "title": "Agent Skills — Outbound", + "title": "Agent Skills – ausgehend", "description": "Agent Skills sind maschinenlesbare SKILL.md-Dokumente, die externe KI-Agenten (Claude Code, Cursor, Copilot…) von GitHub abrufen, um zu lernen, wie OmniRoute über REST oder CLI bedient wird. Sie werden vom Agenten gelesen, nicht von OmniRoute ausgeführt.", "crossLinkLabel": "Den Unterschied verstehen →" }, "omni": { - "title": "Omni Skills — Inbound", + "title": "Omni Skills – eingehend", "description": "Omni Skills sind Sandbox-Tools, die OmniRoute bei jeder Anfrage in den Kontext des Modells einfügt. Sie werden von OmniRoute ausgeführt, nicht vom Agenten gelesen.", "crossLinkLabel": "Den Unterschied verstehen →" }, "comparison": { - "colAgent": "Agent Skills", - "colOmni": "Omni Skills", + "colAgent": "Agenten-Skills", + "colOmni": "Omni-Skills", "whatIs": { "label": "Was es ist", "agent": "Maschinenlesbare SKILL.md, die einem externen Agenten beibringt, OmniRoute zu bedienen", @@ -12519,7 +12526,7 @@ "omni": "SQLite (SkillsMP / skills.sh / lokal)" }, "tagline": { - "label": "Tagline", + "label": "Slogan", "agent": "Bringen Sie Ihrem Agenten bei, OmniRoute zu nutzen", "omni": "Geben Sie OmniRoute-Modellen ausführbare Tools" } @@ -12565,14 +12572,14 @@ "bestModel": "Beste", "allCategories": "Alle Kategorien", "categoryDefault": "Standard", - "categoryCoding": "Coding", - "categoryReview": "Review", + "categoryCoding": "Programmierung", + "categoryReview": "Überprüfung", "categoryDocumentation": "Dokumentation", - "categoryDebugging": "Debugging", + "categoryDebugging": "Fehlerbehebung", "colRank": "Rang", "colProvider": "Anbieter", "colTopModel": "Top-Modell", - "colScore": "Score", + "colScore": "Bewertung", "colAvgScore": "Durchschn. Score", "colModels": "Modelle", "colType": "Typ", @@ -12589,14 +12596,14 @@ "typeApikey": "API-Schlüssel", "sortTypeFirst": "Einfachste zuerst", "sortTypeFirstHelp": "Nach Registrierungsaufwand gruppieren (Keine Registrierung → OAuth-Login → API-Schlüssel), Qualitätsreihenfolge innerhalb jeder Gruppe beibehalten", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Zuverlässigste zuerst", + "sortByReliabilityHelp": "Ordnen Sie Anbieter nach dem Anteil erfolgreicher Aufrufe im ausgewählten Zeitraum. Anbieter mit zu wenigen Aufrufen für die Angabe einer Erfolgsquote behalten ihre Bewertungsreihenfolge unterhalb der gemessenen Anbieter bei.", "typeLegend": "Keine Registrierung = kein Einrichtungsaufwand · OAuth-Login = mit eigenem Konto anmelden · API-Schlüssel = eigenen Schlüssel oder kostenloses Kontingent des Anbieters nutzen", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Zuverlässigkeit", + "colReliabilityHelp": "Anteil der Aufrufe, die dieser Anbieter in den letzten 24 Stunden tatsächlich beantwortet hat. Ein Gedankenstrich bedeutet, dass er zu wenig Datenverkehr verarbeitet hat, um eine Quote anzugeben.", + "reliabilitySample": "{successes} von {requests} Aufrufen waren in den letzten {hours} Std. erfolgreich", + "reliabilityTooFew": "Nur {requests} Aufrufe in den letzten {hours} Std. – zu wenige, um eine Quote anzugeben", + "reliabilityNoTraffic": "In den letzten 24 Std. wurden keine Aufrufe aufgezeichnet" }, "discovery": { "title": "Anbieter-Erkennung", @@ -12632,7 +12639,7 @@ "accounts": "Konten ({count})", "adding": "Wird hinzugefügt...", "autoGeneratedAccount": "Verwendet ein automatisch generiertes Konto. Wählen Sie “{addLabel}” für die Rate-Limit-Rotation.", - "configureProxy": "Configure proxy", + "configureProxy": "Proxy konfigurieren", "proxyConfigured": "Proxy konfiguriert: {host}", "removeAccount": "Konto entfernen", "proxyForAccount": "Proxy für Konto {number}", @@ -12694,7 +12701,7 @@ }, "tierLabel": "Stufe: {tier}", "dayStreak": "{count}-Tage-Serie", - "levelProgress": "Level {current} → {next}", + "levelProgress": "Stufe {current} → {next}", "totalXpEarned": "Insgesamt {count} XP verdient", "maintainStreak": "Nutze OmniRoute weiterhin jeden Tag, um deine Serie aufrechtzuerhalten!", "badgesTitle": "Abzeichen ({earned}/{total})", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar-Unterstützer", + "description": "Einen aktiven Unterstützer-Feed von OmniRoute Radar verifiziert", + "criteria": "Einen signierten aktiven Radar-Unterstützer-Feed verifizieren." }, "first-token": { "name": "Erster Token", @@ -12779,12 +12786,12 @@ "criteria": "Erstelle 3 Combo-Routen." }, "speedster": { - "name": "Speedster", + "name": "Tempospezialist", "description": "Durchschnittliche Latenz von unter 500 ms bei 100 Anfragen beibehalten", "criteria": "Halte die durchschnittliche Latenz bei 100 Anfragen unter 500 ms." }, "resilient": { - "name": "Resilient", + "name": "Widerstandsfähig", "description": "100 % Uptime über 7 Tage beibehalten", "criteria": "Halte eine Uptime von 100 % an 7 aufeinanderfolgenden Tagen aufrecht." }, @@ -12809,7 +12816,7 @@ "criteria": "Nutze OmniRoute an 365 aufeinanderfolgenden Tagen." }, "early-adopter": { - "name": "Early Adopter", + "name": "Frühanwender", "description": "Im ersten Monat nach Einführung der Gamification beigetreten", "criteria": "Tritt innerhalb des ersten Monats nach dem Start der Gamification bei." }, @@ -12848,7 +12855,7 @@ "policies": "Richtlinien", "runtime": "Laufzeit", "cli": "CLI", - "health": "Health", + "health": "Zustand", "requiresRestart": "Erfordert Neustart" }, "categoryLabel": "Kategorie: {category}", @@ -12985,7 +12992,7 @@ "description": "Stream-Wiederherstellung erlauben, um die Antwort erneut anzufordern und zusammenzufügen, nachdem bereits Bytes den Client erreicht haben." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Fortsetzungen mitten im Stream für Tool-Aufrufe sicher gestalten: Einen unterbrochenen Stream nie fortsetzen, nachdem ein Tool-Aufruf gesendet wurde (noch in Bearbeitung oder bereits abgeschlossen), und nach einer leeren Fortsetzung abbrechen, anstatt das gesamte Wiederholungsbudget auszuschöpfen." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Einmaliger Failover auf eine Geschwisterverbindung, wenn ein Stream schließt, bevor er einen nützlichen Frame gesendet hat, und der begrenzte Wiederholungsversuch auf derselben Verbindung aufgebraucht ist. Ohne nutzbare Geschwisterverbindung wird der ursprüngliche early-EOF-Fehler zurückgegeben. Aus: early-EOF bleibt nach dem Wiederholungsversuch endgültig." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Netzwerkzugriff in der Skills-Sandbox aktivieren." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Serverseitige Tool-Schleife", + "description": "Nicht streamende serverseitige Tool-Aufrufe fortsetzen, bis das Modell eine vom Client nutzbare Antwort zurückgibt." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Herkunft von Retry-After", + "description": "Bei aggregierten 429/503-Nichtverfügbarkeitsantworten Retry-After weglassen, wenn kein konkreter zukünftiger Wiederholungszeitpunkt bekannt ist, anstatt einen künstlichen Wert von 1 s zu senden; error.retry_after_provenance hinzufügen und textuelle Wiederholungshinweise in Combo-Drain-Pfaden auslesen." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Infrastrukturbedingte Stopps mit geschützter Priorität als 502", + "description": "Mit 502 statt 503 antworten, wenn ein priorisiertes Ziel mit reinem Kontingent-Fallback die Kombination aus einem nachweislich nicht kontingentbedingten Grund stoppt: ein offener Schutzschalter des Anbieters oder eine prädiktive Latenzüberspringung." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Combo-Health", "callLogs": "Aufrufprotokolle", "costs": "Kosten", - "playground": "Playground", + "playground": "Testumgebung", "nestedCombo": "Verschachtelte Combo", "modelTarget": "Modellziel", "weight": "{value}% Gewichtung", @@ -13171,7 +13182,7 @@ "segmentHint": "Jedes Segment = ein kostenloser Pool · Pool-dedupliziert, ehrliche Zählung (keine künstlich erhöhten Rate-Limit-Obergrenzen).", "boost": "Schalten Sie ~{tokens} mehr/Monat mit einer einmaligen $10 OpenRouter-Aufladung frei (50 → 1000 Anfr./Tag)", "uncapped": "Dauerhaft kostenlos, kein veröffentlichtes Limit (ratenbegrenzt) — echter Zugang, nicht in der Überschrift gezählt:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/Monat zusätzlich hinter einer regionalen Identitätsprüfung (z. B. Festlandchina-Echtnamenverifizierung) — echtes Kontingent, nicht in der beworbenen Hauptangabe enthalten:", "tosRestricted": "{count, plural, one {# Modell} other {# Modelle}} als ToS-eingeschränkt markiert — Sie entscheiden", "provider": "Anbieter", "model": "Modell", @@ -13224,12 +13235,12 @@ "down": "ausgefallen" }, "severity": { - "info": "info", + "info": "Info", "warning": "warnung", "critical": "kritisch" }, "remainingSeconds": "verbleibend {seconds}s", - "errorCode": "code {code}", + "errorCode": "Code {code}", "applying": "Wird angewendet...", "issue": { "circuitOpenTitle": "Anbieter-Circuit-Breaker ist offen", @@ -13260,7 +13271,7 @@ }, "changelogPage": { "newsTab": "Neuigkeiten", - "changelogTab": "Changelog", + "changelogTab": "Änderungsprotokoll", "loading": "Changelog wird geladen...", "announcementsLoadFailed": "Ankündigungen konnten nicht geladen werden. Bitte versuchen Sie es später erneut.", "noAnnouncements": "Derzeit keine neuen Ankündigungen.", @@ -13289,7 +13300,7 @@ "allModels": "alle Modelle", "keepModel": "Modell beibehalten", "otherModel": "Anderes Modell", - "combo": "Combo", + "combo": "Kombination", "priorityShort": "Priorität {value}", "toggleAria": "{name} aktivieren", "edit": "Bearbeiten", @@ -13322,7 +13333,7 @@ "cancel": "Abbrechen", "simulateTitle": "Regel simulieren", "model": "Modell", - "effort": "Effort", + "effort": "Aufwand", "transport": "Transport", "simulate": "Ohne Upstream simulieren", "extendedComboWarning": "Max/Ultra wird beim Routing für jedes Combo-Ziel einzeln geprüft.", @@ -13331,7 +13342,7 @@ "scope": { "global": "Global", "apiKey": "API-Key", - "combo": "Combo", + "combo": "Kombination", "model": "Modell", "connection": "Verbindung" }, @@ -13356,13 +13367,13 @@ "modeCollaborative": "Kollaborativ", "modeParallelDesc": "Alle Modelle laufen gleichzeitig — schnellste Ergebnisse", "modeCollaborativeDesc": "Modelle verketten Ausgaben — jedes sieht das vorherige Ergebnis", - "timeout": "Timeout (ms)", + "timeout": "Zeitüberschreitung (ms)", "timeoutDesc": "Maximale Zeit pro Modellaufruf (5000-600000ms)", "systemPrompt": "System-Prompt (optional)", "systemPromptDesc": "Benutzerdefinierte Anweisungen für alle Modellinstanzen im Chaos-Modus", "providerOverrides": "Provider-Überschreibungen", "providerOverridesDesc": "Spezifische Modelle pro Provider für den Chaos-Modus auswählen", - "providerId": "Provider", + "providerId": "Anbieter", "modelId": "Modell", "addProvider": "Provider hinzufügen", "removeProvider": "Entfernen", @@ -13424,92 +13435,92 @@ "tierLive": "Live (Echtzeit)", "tierCommunity": "Community (30 Tage Verzögerung)", "activateTitle": "Radar aktivieren", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Vergleichen Sie Community- und Echtzeitzugriff, erfahren Sie, welche Daten Ihre Installation austauscht, und entscheiden Sie anschließend, wie Sie Radar aktivieren möchten.", + "accessScaleTitle": "Radar-Zugriff vor der Aktivierung verstehen", + "accessScaleIntro": "Radar bleibt netzwerkinaktiv, bis Sie sich dafür entscheiden. Wählen Sie den Community-Zugriff oder aktivieren Sie einen persönlichen Unterstützerschlüssel, nachdem Sie diese Regeln geprüft haben.", + "accessCommunityRule": "Community — kein Schlüssel erforderlich: der vollständige Katalog mit 30 Tagen Verzögerung.", + "accessSingleUseRule": "Stern vergeben + folgen — nachdem GitHub OAuth beides verifiziert hat, erhält dein GitHub-Konto einmaligen Lesezugriff auf den Live-Katalog; danach wird der Zugriff auf Community zurückgesetzt. Dieser einmalige Zugriff kann für dieses Konto nicht erneut gewährt werden.", + "accessContributorRule": "Mitwirkende — zusammengeführte PRs, Commits und Codezeilen bestimmen lediglich die wöchentliche Rangliste. Die Top 10 erhalten 365 Tage; die Ränge 11–100 erhalten 90 Tage; Mitwirkende außerhalb der Top 100 erhalten unabhängig von der Anzahl ihrer PRs keinen Zugang. Beim Verlassen der Rangliste wird bereits gewährte Zeit niemals verkürzt.", + "accessSupporterRule": "Unterstützer — einmalige Käufe gewähren 6 Monate, 1 Jahr oder lebenslangen Zugang ohne automatische Verlängerung. Käufe, Spenden, Zeiträume für Mitwirkende und manuell gewährte Zugänge werden addiert; lebenslanger Zugang hat immer Vorrang.", + "accessUseTitle": "Persönliche Nutzung, Wiederherstellung und Überprüfung", + "accessInstallationRule": "Persönliche Lizenz — verwende den Schlüssel jeweils nur auf einer aktiven Installation. OmniRoute erstellt keinen Hardware-Fingerabdruck. Bei der Wiederherstellung wird ein verlorener Schlüssel widerrufen und ersetzt, ohne sein Ablaufdatum zurückzusetzen.", + "accessAbuseRule": "Missbrauchsprüfung — die 4. unterschiedliche IP-Adresse innerhalb von 24 Stunden löst lediglich eine Markierung zur manuellen Überprüfung aus; ein Schlüssel wird dadurch niemals automatisch gesperrt oder widerrufen.", + "accessOffersRule": "Live-Angebote werden manuell kuratiert und können sich ändern oder ablaufen.", + "privacyTitle": "Was Radar austauscht", + "privacyDownloadsRule": "Downloads — deine Installation erhält kryptografisch signierte Katalog- und Empfehlungsmetadaten; ein gültiger Live-Schlüssel schaltet außerdem signierte Angebote und Intel frei.", + "privacySendsRule": "Gesendete Daten — bei der serverseitigen Synchronisierung wird der Unterstützer-Schlüssel als Bearer-Token gesendet, und die HTTPS-Infrastruktur empfängt die IP-Adresse der Verbindung. Bei der Erfassung von Feed-Anfragen wird keiner der beiden Werte im Rohformat gespeichert: Gespeichert werden Schlüssel-Hashes, aggregierte Nutzungsdaten und ein täglich rotierender, gekürzter IP-HMAC zur Missbrauchsprüfung.", + "privacyNeverRule": "Niemals erfasst — Prompts, Antworten, Unterhaltungen, Anbieter-Zugangsdaten, Modell-Datenverkehr, Verfügbarkeit, Latenz und lokale Anbieterkonfigurationen werden niemals an Radar gesendet.", + "activateButton": "Community aktivieren", "activating": "Aktivierung...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Du hast bereits einen Unterstützer-Schlüssel?", + "keyInvalidFormatError": "Ungültiges Schlüsselformat. Er muss mit \"omr_\" beginnen, gefolgt von 40 Hexadezimalzeichen.", + "activateWithKeyButton": "Unterstützerzugang aktivieren", + "changeKeyButton": "Schlüssel ändern", + "claimSectionTitle": "Du hast noch keinen Unterstützer-Schlüssel?", + "contributorButton": "Ich bin Mitwirkender", + "contributorHint": "GitHub OAuth prüft die aktuelle wöchentliche Rangliste: Die Top 10 erhalten 365 Tage und die Ränge 11–100 erhalten 90 Tage. Die Anzahl der PRs allein gewährt außerhalb der Top 100 niemals Zugang.", + "supporterButton": "Projekt unterstützen", + "supporterHint": "Die einmaligen Optionen für 6 Monate, 1 Jahr und lebenslangen Zugang verlängern sich nicht automatisch; berechtigte Zeiträume werden addiert, und lebenslanger Zugang hat Vorrang.", "colProvider": "Anbieter", "colModel": "Modell", "colQuota": "Quote", + "colLimits": "Ratenbegrenzungen", + "trainsOnPrompts": "Trainiert mit Prompts", + "trainsOnPromptsHelp": "Laut den Bedingungen dieses Anbieters darf er mit den von dir gesendeten Prompts trainieren. Bei Modellen ohne dieses Abzeichen wird entweder angegeben, dass sie dies nicht tun, oder es ist nicht dokumentiert — eine fehlende Aussage ist keine Garantie.", + "limitsUnknownHelp": "Limits werden nur vom Radar-Feed gemeldet; für diesen Eintrag gibt es keine veröffentlichten Limits", + "contextUnknownHelp": "Kontextfenster für diesen Eintrag unbekannt", + "capabilityUnknownHelp": "Funktion wird vom Feed nicht gemeldet", "colContext": "Kontext", "colCapabilities": "Fähigkeiten", "colTos": "ToS-Risiko", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "neu", "setupGuide": "Einrichtungsanleitung", "disabledByFeed": "Durch den Radar-Feed deaktiviert", "capTools": "Werkzeuge", - "capVision": "Vision", + "capVision": "Bildverarbeitung", "capThinking": "Denken", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", + "catalogTab": "Katalog", + "freeCreditsTab": "Kostenloses Guthaben", + "freeCreditsSubtitle": "Empfehlungslinks von durch Radar erfassten Anbietern — ihre Nutzung kostet dich nichts zusätzlich und hilft dabei, OmniRoute zu unterstützen.", + "fixedLinksEmpty": "Noch keine Empfehlungslinks verfügbar. Synchronisiere Radar, um nach Aktualisierungen zu suchen.", + "requiredActionLabel": "So gehst du vor:", + "claimButton": "Guthaben anfordern", + "campaignsTitle": "Zeitlich begrenzte Aktionen", + "campaignsEmpty": "Derzeit sind keine Aktionen aktiv — schau später noch einmal vorbei.", + "campaignsUpsellCommunity": "Zeitlich begrenzte Aktionen sind ein Extra für Unterstützer. Alle festen Links auf dieser Seite bleiben für alle kostenlos.", + "campaignsValidUntil": "Gültig bis {date}", + "colActions": "Aktionen", + "localBadge": "lokal", + "editModel": "Bearbeiten", + "saveModel": "Speichern", + "cancelEdit": "Abbrechen", + "resetModel": "Lokale Änderungen zurücksetzen", + "hideModel": "Ausblenden", + "restoreModel": "Wiederherstellen", + "hiddenModelsTitle": "Ausgeblendete Modelle", + "modelDisplayName": "Lokaler Anzeigename", + "modelEnabled": "Lokal aktiviert", + "localStateSaveFailed": "Lokale Radar-Einstellungen konnten nicht gespeichert werden", + "guidedCombos": "Geführte Kombinationen", "offers": "Angebote", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "intel": "Informationen" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Von Radar geführte Kombinationen", + "subtitle": "Erstellen Sie priorisierte Fallbacks aus gleichwertigen kostenlosen Modellen, die von Radar kuratiert wurden.", + "backToRadar": "Zurück zu Radar", + "loading": "Kombinationsvorschläge werden geladen...", + "familyLabel": "Modellfamilie", + "modelsLabel": "Prioritätsreihenfolge", + "strategyReason": "Bei der Priorisierung wird zuerst das größte wiederkehrende kostenlose Kontingent verwendet und anschließend auf aktive Anbieter zurückgegriffen.", + "generateButton": "Kombination erstellen", + "generating": "Wird erstellt...", + "alreadyCreated": "Bereits erstellt", + "created": "Kombination erstellt", + "noSuggestions": "Derzeit verfügt keine geeignete Modellfamilie über aktive Verbindungen zu mindestens zwei Anbietern.", + "catalogRequired": "Synchronisieren Sie zuerst den Radar-Katalog, um kuratierte Modellfamilien zu laden.", + "loadFailed": "Radar-Kombinationsvorschläge konnten nicht geladen werden.", + "createFailed": "Die Kombination konnte nicht erstellt werden. Überprüfen Sie Ihre Anbieterverbindungen und versuchen Sie es erneut." }, "radarSetupPage": { "title": "Anbieter-Einrichtung", @@ -13538,37 +13549,37 @@ }, "resilienceConnections": { "title": "Verbindungsresilienz", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Ihre Verbindungen werden automatisch wiederhergestellt", + "reassuranceDetail": "Normalerweise ist keine Aktion erforderlich. OmniRoute setzt eine Verbindung nach Fehlern vorübergehend aus und versucht es später sicher erneut.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Anfragen können gesendet werden", + "coolingDown": "Neuer Versuch in Kürze", + "lockedOut": "Erfordert Ihre Aufmerksamkeit" }, "table": { "status": "Status", "provider": "Anbieter", "connectionId": "Verbindung", - "authType": "Auth", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "authType": "Authentifizierung", + "backoffLevel": "Wartezeit", + "cooldown": "Abklingzeit", "lastError": "Letzter Fehler", "lockouts": "Sperren", "healthy": "Gesund", - "coolingDown": "Cooldown", + "coolingDown": "Abklingzeit", "circuitOpen": "Schaltkreis Offen", "recovering": "Erholung", "degraded": "Beeinträchtigt", - "terminal": "Terminal", + "terminal": "Endgültig", "unknown": "Unbekannt", "never": "-" }, "timeline": { "title": "Schalterübergänge", "window": "Zeitfenster", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 Std.", + "window6h": "6 Std.", + "window24h": "24 Std.", "empty": "Keine Übergänge im ausgewählten Zeitfenster", "currentState": "Aktueller Status", "state": { @@ -13589,7 +13600,7 @@ "detail": { "title": "Verbindungsdetail", "metadata": "Metadaten", - "cooldown": "Cooldown", + "cooldown": "Abklingzeit", "lastError": "Letzter Fehler", "breaker": "Leistungsschalter", "lockouts": "Modellsperren", @@ -13643,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Lehnen Sie Anfragen ab, bevor sie versendet werden, wenn das Zielmodell über die erforderlichen Funktionen (Vision, Werkzeuge, strukturierte Ausgabe, Kontextfenster) nicht verfügt. Schützt direkte Einzelanbieteranfragen, die den Kombo-Schicht-Kompatibilitätsfilter umgehen.", "featureFlagDisableContextWindowChecksDescription": "Lokale Kontextfenster- und Maximaleingabetoken-Prüfung von OmniRoute für direkte Einzelmodell-Anfragen überspringen. Upstream-Anbieter erzwingen weiterhin ihre tatsächlichen Grenzen. Prompt-Komprimierung und Ausgabetoken-Grenzen bleiben aktiv.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Suchstatistiken und kürzlich durchgeführte Suchen berücksichtigen nur Anbieter, die noch über eine aktive Verbindung verfügen (Anbieter ohne Schlüssel wie duckduckgo-free werden immer berücksichtigt). Bei „Aus“ wird jede gespeicherte Suchzeile mit einer Anbieter-ID beibehalten.", "publicSystem": { "notFound": { "title": "Seite nicht gefunden", @@ -13699,12 +13710,12 @@ "maintenanceInfo": "Wartungsinformationen", "service": "Dienst", "unknown": "unbekannt", - "notAvailable": "n/a", + "notAvailable": "k. A.", "providersTracked": "Verfolgte Anbieter", "circuitBreakerState": "Anbieter Sicherungszustand", "lastUpdate": "Letzte Aktualisierung: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes} Min.", + "uptimeHoursMinutes": "{hours} Std. {minutes} Min." }, "statusPages": { "400": { @@ -13876,7 +13887,7 @@ } }, "providerTest": { - "dialogLabel": "Test {provider}", + "dialogLabel": "{provider} testen", "deprecated": "veraltet", "risk": "Risiko", "close": "Schließen", @@ -13920,7 +13931,7 @@ "proxy": "Proxy", "direct": "Direkt", "type": "Typ", - "level": "Level", + "level": "Stufe", "provider": "Anbieter", "tlsFingerprint": "TLS-Fingerabdruck", "directNative": "Direkt", @@ -13947,7 +13958,7 @@ "tokens": "Tokenen", "active": "Aktiv", "other": "Andere", - "tenMinutes": "10min", + "tenMinutes": "10 Min.", "hour": "Stunde", "day": "Tag", "unknownModel": "unbekannt", @@ -13958,7 +13969,7 @@ "compressionDescription": "Konfigurieren Sie die Einstellungen zur Kontextkompression, um den Tokenverbrauch und die Kosten zu senken.", "relayTitle": "OmniRoute — Relay-Proxys", "relayDescription": "Serverless Relay-Proxy-Endpunkte für Ihre KI-Infrastruktur", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Traffic-Inspektor — OmniRoute", "trafficInspectorDescription": "Überwachen Sie LLM-Aufrufe + debuggen Sie den HTTPS-Verkehr jeder Anwendung" }, "conductor": { @@ -14070,11 +14081,11 @@ "actionApprove": "Plan genehmigen", "actionCancel": "Abbrechen", "actionSeeInGraph": "Im Graph anzeigen", + "actionRepeat": "Wiederholen", "actionDone": "Aktion angewendet", "actionFailed": "Aktion fehlgeschlagen: {error}", "detailFailed": "Details konnten nicht geladen werden: {error}", "mirroredInA2A": "In A2A gespiegelt", - "actionRepeat": "Wiederholen", "repeatConfirm": "Zum Bestätigen erneut klicken", "repeatDone": "Neuer Lauf erstellt", "repeatUnavailable": "Ursprüngliche Eingabe nicht verfügbar" @@ -14109,36 +14120,36 @@ "trialDays": "{days, plural, one {# Tag} other {# Tage}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Radar-Informationen", + "subtitle": "Von Radar verwaltete ELO-Ranglisten und faktische Katalogänderungen.", + "backToRadar": "Zurück zu Radar", + "loading": "Informationen werden geladen...", + "refresh": "Informationen aktualisieren", + "syncing": "Wird aktualisiert...", + "loadFailed": "Die Informationen konnten nicht aktualisiert werden. Der letzte verifizierte lokale Cache bleibt erhalten.", + "empty": "Es ist noch kein verifizierter Informations-Snapshot verfügbar.", + "supporterBadge": "Radar-Unterstützer", + "methodology": "Methodik", + "eloMethod": "Elo, anfänglich {initial}, K={factor}", + "freshness": "Katalogaktualität", + "ageDays": "{days, plural, one {# Tag alt} other {# Tage alt}}", + "trend": "Katalogtrend", + "modelDelta": "{current} Modelle, +{added} / -{removed}", + "ranking": "Modellranking", + "noRankings": "Es sind noch keine bestätigten Vergleiche verfügbar.", + "model": "Modell", + "category": "Kategorie", + "rating": "Bewertung", + "matches": "Vergleiche", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Aktuell", + "aging": "Alternd", + "stale": "Veraltet" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Wachsend", + "stable": "Stabil", + "shrinking": "Schrumpfend" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Anfrage überschreitet das Kontextfenster des Anbieters" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference ist ein Open-Source-Freund von OmniRoute", + "description": "Ein nach Kosten geordnetes Gateway, das Dutzende hochmoderner Modelle über einen einzigen OpenAI-kompatiblen Endpunkt weiterverkauft – und jede Anfrage an den günstigsten geeigneten Anbieter weiterleitet, niemals über dem Listenpreis.", + "cta": "API-Schlüssel anfordern", + "partnerLinkNote": "Partnerlink", + "dismissAriaLabel": "Schließen" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Deaktiviert die Generierung von Denkstufenvarianten (z. B. -low, -medium, -high) im /v1/models-Katalog." } diff --git a/src/i18n/messages/el.json b/src/i18n/messages/el.json index 9a2e2b43c0..32662fb894 100644 --- a/src/i18n/messages/el.json +++ b/src/i18n/messages/el.json @@ -438,7 +438,7 @@ "repairEnv": "Επισκευή Περιβάλλοντος", "modelsCount": "Αριθμός Μοντέλων", "viewBackups": "Προβολή Αντιγράφων Ασφαλείας", - "responsesApi": "Responses Api", + "responsesApi": "API αποκρίσεων", "copyComboName": "Αντιγραφή Ονόματος Συνδυασμού", "failures": "Αποτυχίες", "failedUpdate": "Αποτυχημένη Ενημέρωση", @@ -526,7 +526,7 @@ "invalidFileType": "Μη Έγκυρος Τύπος Αρχείου", "monitoredProviders": "Παρακολουθούμενοι Πάροχοι", "errors": "Σφάλματα", - "heap": "Heap", + "heap": "Σωρός", "chatCompletions": "Ολοκληρώσεις Συνομιλίας", "exampleTemplatesHint": "Υπόδειξη Παραδειγμάτων Προτύπων", "retryDelayLabel": "Ετικέτα Καθυστέρησης Επανάληψης", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Διαφήμιση αναγνωριστικών καθρέφτη claude/<provider>/<model> στο /v1/models ώστε η ανακάλυψη μοντέλων πύλης Claude Code να εμφανίζει μη-Claude μοντέλα. Προειδοποίηση: διπλασιάζει τις εγγραφές καταλόγου για όλους τους πελάτες όταν ενεργοποιείται καθολικά.", "featureFlagNoThinkingAliasEnabledDescription": "Κύριος διακόπτης για τα ψευδώνυμα πύλης no-think/<provider>/<model>. Ενεργό (προεπιλογή): το /v1/models διαφημίζει μια παραλλαγή χωρίς σκέψη για κάθε κατάλληλο Claude μοντέλο ικανό για σκέψη, και ένα αναγνωριστικό no-think/ που αποστέλλεται σε αίτημα επιλύεται στο πραγματικό μοντέλο με καταστολή του συλλογισμού. Ανενεργό: δεν διαφημίζονται παραλλαγές και ένα αναγνωριστικό no-think/ αντιμετωπίζεται όπως οποιοδήποτε άλλο άγνωστο αναγνωριστικό μοντέλου. Η επιλογή ενεργοποίησης/απενεργοποίησης ανά μοντέλο ModelSpec.noThinkingAlias εξακολουθεί να ισχύει ενώ αυτό είναι ενεργό.", "featureFlagChatVirtualLanesEnabledDescription": "Ενεργοποίηση προσαρμοστικών εικονικών λωρίδων αποδοχής ανά ενοικιαστή για αποστολή παρόχου (#9654): η έκρηξη ενός ενοικιαστή δεν προκαλεί πλέον 503 σε άλλον. Η μεταβλητή περιβάλλοντος OMNIROUTE_CHAT_VIRTUAL_LANES υπερισχύει αυτής της παράκαμψης του πίνακα ελέγχου· οι αλλαγές τίθενται σε ισχύ κατά την επανεκκίνηση του διακομιστή.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Σελίδες παρόχων στον πίνακα ελέγχου: εμφάνιση του σήματος «Δωρεάν» μόνο για ενδείξεις που αναγνωρίζει ο πάροχος — καταργεί τη χρήση του εμφανιζόμενου ονόματος ως ευρετικής μεθόδου, τα μη δυαδικά πεδία δωρεάν χρήσης και τις καταλήξεις :free σε καταχωρισμένους παρόχους χωρίς τεκμηριωμένο δωρεάν επίπεδο. Όταν είναι ανενεργό, διατηρείται ο παλαιότερος κανόνας εμφάνισης του σήματος.", + "featureFlagProxySkipRecentlyFailedDescription": "Οι ομάδες διακομιστών μεσολάβησης και η εναλλαγή ανά λογαριασμό του opencode παύουν να χρησιμοποιούν ξανά έναν διακομιστή μεσολάβησης που μόλις απέτυχε (απορρίφθηκε η δοκιμή TCP ή λήφθηκε απόκριση 429 μέσω αυτού) για ένα χρονικό διάστημα ανά διεργασία, το οποίο διπλασιάζεται σε κάθε επανάληψη, έως ένα ανώτατο όριο. Δεν καταγράφεται καμία κατάσταση διακομιστή μεσολάβησης· όταν όλοι οι υποψήφιοι παραμερίζονται, η επιλογή παραμένει αμετάβλητη. Απενεργοποιημένο από προεπιλογή: η σειρά επιλογής είναι ακριβώς αυτή της απλής εναλλαγής.", + "featureFlagProxyPoolEgressObservationDescription": "Εμφάνιση, κάτω από μια ομάδα διακομιστών μεσολάβησης στον πίνακα ελέγχου, του αριθμού των παρατηρούμενων IP εξόδου που εξυπηρέτησαν τα μέλη της κατά τις τελευταίες 24 ώρες, του αριθμού των συνδέσεων που τις χρησιμοποίησαν και του μέγιστου αριθμού που παρατηρήθηκε πίσω από μία IP. Μόνο για ανάγνωση, υπολογίζεται από το αρχείο καταγραφής του διακομιστή μεσολάβησης και δεν χρησιμοποιείται ποτέ για δρομολόγηση. Απενεργοποιημένο από προεπιλογή: το πρόγραμμα επεξεργασίας της ομάδας παραμένει αμετάβλητο και η διαδρομή παρατήρησης επιστρέφει null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Κατά τον έλεγχο εύρυθμης λειτουργίας των διακομιστών μεσολάβησης, να επιτρέπεται σε μια δοκιμή που απορρίφθηκε από τον προορισμό (401/403/429: ο διακομιστής μεσολάβησης προώθησε το αίτημα, αλλά ο προορισμός απέρριψε αυτήν την IP εξόδου) να μηδενίζει το συνεχόμενο σερί αποτυχιών του διακομιστή μεσολάβησης, όπως μια δοκιμή που εξυπηρετήθηκε. Απενεργοποιημένο από προεπιλογή: μια απόρριψη παραμένει ουδέτερη και διατηρεί το σερί. Μια απόκριση 5xx παραμένει ασαφής και στις δύο περιπτώσεις, ενώ μια απόρριψη δεν αφαιρεί, δεν απενεργοποιεί και δεν επανενεργοποιεί ποτέ έναν διακομιστή μεσολάβησης.", "sidebar": { "home": "Αρχική", "dashboard": "Πίνακας Ελέγχου", @@ -1139,8 +1139,8 @@ "devtoolsSection": "Εργαλεία Ανάπτυξης", "configurationSection": "Διαμόρφωση", "aiFeaturesSection": "Λειτουργίες ΤΝ", - "mcp": "MCP Server", - "a2a": "A2A Server", + "mcp": "Διακομιστής MCP", + "a2a": "Διακομιστής A2A", "plugins": "Πρόσθετα", "apiEndpoints": "Σημεία Τερματισμού API", "batchFiles": "Αρχεία", @@ -1212,7 +1212,7 @@ "oneProxySubtitle": "Δημόσια πύλη διαμεσολαβητή", "leaderboard": "Κατάταξη", "profile": "Προφίλ", - "tokens": "Tokens", + "tokens": "Token", "gamificationAdmin": "Διαχείριση Gamification", "leaderboardSubtitle": "Κατατάξεις και επιτεύγματα", "profileSubtitle": "Λογαριασμός και προτιμήσεις", @@ -1275,16 +1275,16 @@ "systemGroup": "Σύστημα", "costsOverview": "Επισκόπηση", "costsOverviewSubtitle": "Ενοποιημένη ανάλυση κόστους", - "agentBridge": "Agent Bridge", + "agentBridge": "Γέφυρα πρακτόρων", "agentBridgeSubtitle": "Υποκλοπή κυκλοφορίας agent IDE", "trafficInspector": "Επιθεωρητής κυκλοφορίας", "trafficInspectorSubtitle": "Επιθεώρηση κυκλοφορίας αιτημάτων και απαντήσεων από τις εφαρμογές σας", "trafficInspectorPurpose": "Δείτε ακριβώς τι στέλνει και λαμβάνει η εφαρμογή σας από παρόχους AI. Λειτουργεί με οποιοδήποτε πρόγραμμα-πελάτη συμβατό με OpenAI.", "cliCode": "CLI Code", "cliCodeSubtitle": "Εργαλεία κώδικα που δείχνουν στο OmniRoute", - "cliAgents": "CLI Agents", + "cliAgents": "Πράκτορες CLI", "cliAgentsSubtitle": "Αυτόνομοι πράκτορες CLI", - "acpAgents": "ACP Agents", + "acpAgents": "Πράκτορες ACP", "acpAgentsSubtitle": "CLI που εκκινούνται από το OmniRoute", "skipToContent": "Μετάβαση στο περιεχόμενο", "mainNavigation": "Κύρια πλοήγηση", @@ -1445,7 +1445,7 @@ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "Το token HTTP API που ελήφθη από το @BotFather κατά τη δημιουργία του bot σας.", "chatId": "Chat ID / Κανάλι Telegram", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 ή @channelname", "chatIdHint": "Ο μοναδικός αριθμητικός αναγνωριστικός κωδικός ή το δημόσιο όνομα χρήστη της συνομιλίας/καναλιού.", "tutorial": "Πώς να ρυθμίσετε το webhook Telegram:" } @@ -1743,11 +1743,11 @@ "cache": "Κρυφή Μνήμη", "changelog": "Αρχείο Αλλαγών", "chaos": "Χάος", - "cloudAgents": "Cloud Agents", + "cloudAgents": "Πράκτορες cloud", "live": "Ζωντανά", "studio": "Studio", "aggressive": "Επιθετική", - "caveman": "Caveman", + "caveman": "Άνθρωπος των σπηλαίων", "ccr": "CCR", "headroom": "Περιθώριο", "lite": "Lite", @@ -1928,13 +1928,13 @@ "chartNoData": "Δεν υπάρχουν δεδομένα", "chartWeekly": "Εβδομαδιαία", "activitySummary": "{active} ενεργές ημέρες · {tokens} tokens · {days} ημέρες", - "activityCellTitle": "{date}: {tokens} tokens", + "activityCellTitle": "{date}: {tokens} διακριτικά", "activityLess": "Λιγότερο", "activityMore": "Περισσότερο", "chartApiKeyBreakdown": "Ανάλυση Κλειδιού API", "chartApiKey": "Κλειδί API", "mostActiveDay": "Πιο Ενεργή Ημέρα", - "datedTokenCount": "{date} · {tokens} tokens", + "datedTokenCount": "{date} · {tokens} διακριτικά", "noDataLast7Days": "Δεν υπάρχουν δεδομένα τις τελευταίες 7 ημέρες", "requestTokenSummary": "{requests} αιτήματα · {tokens} tokens", "chartByAccount": "Ανά Λογαριασμό", @@ -2018,7 +2018,7 @@ "comboHealthSuccessRate": "Ποσοστό επιτυχίας", "comboHealthQuotaHealth": "Υγεία ορίου", "comboHealthRequests": "Αιτήματα", - "comboHealthTokens": "Tokens", + "comboHealthTokens": "Διακριτικά", "comboHealthAvgLatency": "Μέση καθυστέρηση", "comboHealthTotalRequests": "Συνολικά αιτήματα", "comboHealthExecutionTargets": "Στόχοι εκτέλεσης", @@ -3260,19 +3260,19 @@ "priorityDesc": "Διαδοχική εναλλαγή: δοκιμάζει πρώτα το μοντέλο 1, μετά το 2 κ.ο.κ.", "weightedDesc": "Κατανέμει την κίνηση βάσει ποσοστού βάρους με εναλλαγή", "roundRobinDesc": "Κυκλική κατανομή: κάθε αίτημα μεταβαίνει στο επόμενο μοντέλο της εναλλαγής", - "contextRelay": "Context Relay", + "contextRelay": "Αναμετάδοση περιβάλλοντος", "contextRelayDesc": "Διατηρεί τη συνέχεια της συνεδρίας με περιλήψεις μεταβίβασης όταν εναλλάσσονται λογαριασμοί", "randomDesc": "Ομοιόμορφη τυχαία επιλογή, με εναλλαγή στα υπόλοιπα μοντέλα", "leastUsedDesc": "Επιλέγει το μοντέλο με τα λιγότερα αιτήματα, εξισορροπώντας το φορτίο με την πάροδο του χρόνου", "costOptimizedDesc": "Δρομολογεί πρώτα στο οικονομικότερο μοντέλο βάσει τιμολόγησης", "cacheOptimizedDesc": "Δρομολογεί κάθε επαναχρησιμοποιήσιμο πρόθεμα προτροπής σταθερά στον ίδιο λογαριασμό παρόχου", - "resetAware": "Reset-Aware RR", + "resetAware": "RR με επίγνωση επαναφοράς", "resetAwareDesc": "Εξισορροπεί την υπολειπόμενη ποσόστωση έναντι επαναφορών ανά 5 ώρες και εβδομάδα, μετά εφαρμόζει round-robin σε παρόμοιες βαθμολογίες", "quotaWeighted": "Σταθμισμένο βάσει ορίου χρήσης", "quotaWeightedDesc": "Παράλειψη εξαντλημένων λογαριασμών και, στη συνέχεια, επιλογή μεταξύ των υπολοίπων αναλογικά με το υπόλοιπό τους, διαιρεμένο με το τρέχον φορτίο. Οι υπάρχουσες συνομιλίες παραμένουν καρφιτσωμένες.", - "strictRandom": "Strict Random", + "strictRandom": "Αυστηρά τυχαίο", "strictRandomDesc": "Ανακάτεμα τράπουλας — χρησιμοποιεί κάθε μοντέλο μία φορά πριν ξανανακατέψει", - "fusion": "Fusion", + "fusion": "Σύντηξη", "fusionDesc": "Διανέμει την προτροπή σε κάθε μοντέλο πάνελ παράλληλα, κι ένα μοντέλο-κριτής συνθέτει μία τελική απάντηση", "fusionJudgeModel": "Μοντέλο κριτής", "fusionJudgeModelHelp": "Μοντέλο που συνθέτει τις απαντήσεις του πάνελ σε μία τελική απόκριση. Αφήστε κενό για χρήση του πρώτου μοντέλου πάνελ.", @@ -3322,7 +3322,7 @@ "playgroundStatusError": "Σφάλμα", "playgroundStatusUnknown": "Άγνωστο", "playgroundNetworkError": "Σφάλμα δικτύου κατά τη προσομοίωση", - "playgroundTitle": "Combo Playground", + "playgroundTitle": "Χώρος δοκιμών συνδυασμών", "playgroundDescription": "Προσομοιώστε πώς θα δρομολογούνται τα αιτήματα μέσω των combos σας", "playgroundConfiguration": "Διαμόρφωση", "playgroundNoCombosConfigured": "Δεν έχουν ρυθμιστεί combos", @@ -3988,15 +3988,15 @@ "modelsCount": "{count, plural, one {# μοντέλο} other {# μοντέλα}}", "sectionTitle": "Επιφάνεια Ενσωμάτωσης", "sectionDescription": "OpenAI-compatible APIs και endpoints επιχειρησιακού πρωτοκόλλου", - "tabApis": "APIs", + "tabApis": "API", "tabProtocols": "Πρωτόκολλα", "tabsAria": "Τμήματα endpoint", "protocolsTitle": "Πρωτόκολλα", "protocolsDescription": "Τα MCP και A2A είναι endpoints πρώτης τάξης με αποκλειστική παρατηρησιμότητα και έλεγχους.", "mcpCardTitle": "MCP Server", "mcpCardDescription": "Model Context Protocol μέσω stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", + "a2aCardTitle": "Διακομιστής A2A", + "a2aCardDescription": "Τελικό σημείο Agent2Agent JSON-RPC", "protocolToolsLabel": "Εργαλεία", "protocolTasksLabel": "Εργασίες", "protocolActiveStreamsLabel": "Ενεργές ροές", @@ -4018,9 +4018,9 @@ "messagesApiDesc": "Εγγενής μορφή API Μηνυμάτων Anthropic για παρόχους συμβατούς με Claude", "imageEdits": "Επεξεργασία Εικόνων", "imageEditsDesc": "Επεξεργασία και τροποποίηση υπαρχουσών εικόνων με τεχνητή νοημοσύνη (inpainting, outpainting, παραλλαγές)", - "batchApi": "Batch API", + "batchApi": "API μαζικής επεξεργασίας", "batchApiDesc": "Επεξεργασία μεγάλων δεσμών αιτημάτων ασύγχρονα (συμβατό με OpenAI)", - "filesApi": "Files API", + "filesApi": "API αρχείων", "filesApiDesc": "Μεταφόρτωση και διαχείριση αρχείων για ομαδική επεξεργασία", "videoGeneration": "Δημιουργία Βίντεο", "videoDesc": "Δημιουργία βίντεο με μοντέλα τεχνητής νοημοσύνης όπως ComfyUI και Stable Video Diffusion.", @@ -4132,14 +4132,14 @@ "vscodeAliasModelsLabel": "Μοντέλα VS Code", "vscodeAliasChatLabel": "Συνομιλία VS Code", "localServer": "Τοπικός Διακομιστής", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute στο cloud", "copyUrl": "Αντιγραφή URL", "badgeLoopbackTooltip": "Αυτό το endpoint είναι προσβάσιμο μόνο τοπικά (μόνο loopback)", "badgeAlwaysProtectedTooltip": "Αυτό το endpoint προστατεύεται πάντα και απαιτεί εξουσιοδότηση", "badgeInternalTooltip": "Αυτό είναι ένα εσωτερικό endpoint συστήματος", "tierAll": "Όλα", "tierAuth": "Με Πιστοποίηση", - "tierLoopback": "Loopback", + "tierLoopback": "Βρόχος επιστροφής", "tierAlwaysProtected": "Πάντα Προστατευμένο", "tierPublic": "Δημόσιο", "hideInternal": "Απόκρυψη Εσωτερικών", @@ -4607,7 +4607,7 @@ "enabledSkills": "Ενεργοποιημένες", "totalExecutions": "Εκτελέσεις", "successRate": "Ποσοστό Επιτυχίας", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Αγορά", "applyFilters": "Εφαρμογή φίλτρων", "popularDefaultsLabel": "Δημοφιλή από προεπιλογή για τον επιλεγμένο πάροχο:", "onMode": "ΕΝΕ", @@ -4773,11 +4773,11 @@ "inactive": "Ανενεργό", "noConnectionId": "χωρίς αναγνωριστικό σύνδεσης", "accountModelSummary": "{connectionId} · {count} μοντέλα", - "cooldown": "cooldown", + "cooldown": "χρόνος αναμονής", "durationRemaining": "απομένουν {duration}", "noSyncedModelsOrTraffic": "Δεν υπάρχουν συγχρονισμένα μοντέλα ή πρόσφατη κίνηση ακόμα.", "providerRowSummary": "{active}/{total} ενεργοί λογαριασμοί · {requests} αιτ. · {successRate} επιτυχία · {latency} μέσος χρόνος", - "cooldownCount": "{count} cooldown", + "cooldownCount": "{count} χρόνος αναμονής", "lockoutCount": "{count} κλειδώματα", "issueCount": "{count} προβλήματα", "score": "Βαθμολογία", @@ -4802,7 +4802,7 @@ "partialData": "Η τηλεμετρία είναι μερικώς διαθέσιμη: {error}" }, "mitm": { - "title": "MITM Proxy", + "title": "Διακομιστής μεσολάβησης MITM", "description": "Διαφανής διακομιστής μεσολάβησης για την υποκλοπή και δρομολόγηση αιτημάτων πελατών.", "enable": "Ενεργοποίηση MITM Proxy", "enableDesc": "Εκκίνηση ή διακοπή της τοπικής διαδικασίας υποκλοπής και παράκαμψης DNS.", @@ -4961,7 +4961,7 @@ }, "compressionLogTitle": "Καταγραφή Συμπίεσης", "compressionLogEmpty": "Δεν υπάρχουν συμπιεσμένα αιτήματα ακόμα. Τα στατιστικά συμπίεσης θα εμφανιστούν εδώ όταν επεξεργαστούν αιτήματα με ενεργοποιημένη τη συμπίεση.", - "tokens": "tokens" + "tokens": "διακριτικά" }, "onboarding": { "welcome": "Καλώς ορίσατε", @@ -5175,7 +5175,7 @@ "hasFreeTooltip": "Διαθέσιμο δωρεάν επίπεδο", "noAuthLabel": "Χωρίς έλεγχο ταυτότητας", "noAuthProviders": "Δεν υπάρχουν πάροχοι χωρίς έλεγχο ταυτότητας", - "upstreamProxyLabel": "Upstream Proxy", + "upstreamProxyLabel": "Ανοδικός διακομιστής μεσολάβησης", "freeAggregated": "Όλοι οι πάροχοι με δωρεάν επίπεδο (εμφανίζονται επίσης στη δική τους κατηγορία)", "deprecated": "Καταργημένο", "deprecatedProvider": "Αυτός ο πάροχος έχει καταργηθεί", @@ -5308,7 +5308,7 @@ "openaiCompatibleDetails": "Λεπτομέρειες συμβατού OpenAI", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", + "embeddings": "Ενσωματώσεις", "audioTranscriptions": "Μεταγραφές ήχου", "audioSpeech": "Ομιλία ήχου", "imagesGenerations": "Δημιουργία εικόνων", @@ -5824,7 +5824,7 @@ "newApiUserIdLabel": "Αναγνωριστικό χρήστη New-API", "newApiUserIdPlaceholder": "π.χ. 12345", "newApiUserIdHint": "Τιμή κεφαλίδας New-Api-User του AgentRouter, που χρησιμοποιείται μαζί με το κλειδί API κονσόλας για την ανάκτηση υπολοίπου ποσόστωσης.", - "newApiAggregatorToggleLabel": "Aggregator Gateway", + "newApiAggregatorToggleLabel": "Πύλη συγκέντρωσης", "newApiAggregatorToggleHint": "Ενεργοποίηση ανίχνευσης υπολοίπου για κόμβους aggregator New-API / One-API / Sub2API. Ο πίνακας ελέγχου θα εμφανίζει το σήμα υπολοίπου και η δρομολόγηση προελέγχου ποσόστωσης θα παραλείπει εξαντλημένους λογαριασμούς.", "newApiAggregatorConsoleApiKeyHint": "Διακριτικό πρόσβασης συστήματος για το endpoint /api/user/self του aggregator. Όχι το κλειδί API δρομολόγησης.", "newApiAggregatorUserIdHint": "Τιμή κεφαλίδας New-Api-User που χρησιμοποιείται για την ανάκτηση υπολοίπου ποσόστωσης του χρήστη aggregator.", @@ -5883,7 +5883,7 @@ "m365TierLabel": "Επίπεδο Copilot", "m365TierHint": "Επιλέξτε ποια επιφάνεια Microsoft 365 Copilot χρησιμοποιεί αυτή η σύνδεση. Το Individual είναι η προεπιλεγμένη καταναλωτική BizChat· τα επίπεδα Education και Enterprise (εργασία) ενεργοποιούν τις αντίστοιχες επιφάνειες μισθωτή τους.", "m365TierIndividualOption": "Individual (προεπιλογή)", - "m365TierEduOption": "Education", + "m365TierEduOption": "Εκπαίδευση", "m365TierEnterpriseOption": "Enterprise / Εργασία", "tierOverrideLabel": "Παράκαμψη επιπέδου", "tierOverrideAuto": "Αυτόματο (αποφασίζει η δρομολόγηση)", @@ -6408,7 +6408,7 @@ "batchUpdateFailed": "Η μαζική ενημέρωση απέτυχε", "batchUpdateNetworkError": "Σφάλμα δικτύου κατά τη μαζική ενημέρωση", "categoryAudio": "Ήχος", - "categoryCloudAgent": "Cloud Agent", + "categoryCloudAgent": "Πράκτορας cloud", "categoryIde": "IDE", "categoryLocal": "Τοπικό", "categorySearch": "Αναζήτηση", @@ -6424,7 +6424,7 @@ "codexServiceModeUpdated": "Η λειτουργία υπηρεσίας Codex ενημερώθηκε", "codexServiceTierActive": "Το επίπεδο υπηρεσίας Codex {tier} είναι ενεργό", "codexTierFastLabel": "Γρήγορο", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Ευέλικτο", "commandCodeApplyFailed": "Αποτυχία εφαρμογής ταυτοποίησης Command Code", "commandCodeApplyingApproval": "Το πρόγραμμα περιήγησης εγκρίθηκε, εφαρμογή…", "commandCodeApplyingKey": "Εφαρμογή εγκεκριμένου κλειδιού προγράμματος περιήγησης…", @@ -6456,7 +6456,7 @@ "failedUpdateCodexServiceMode": "Αποτυχία ενημέρωσης λειτουργίας υπηρεσίας Codex", "filterByMedia": "Πολυμέσα", "freeBadge": "Δωρεάν", - "kimiCodeApiKeyLabel": "Kimi Code API Key", + "kimiCodeApiKeyLabel": "Κλειδί API του Kimi Code", "modelTestFailed": "Η δοκιμή μοντέλου απέτυχε", "modelTestNetworkError": "Σφάλμα δικτύου κατά τη δοκιμή μοντέλου", "networkError": "Σφάλμα δικτύου", @@ -6468,7 +6468,7 @@ "pageLoadErrorId": "Αναγνωριστικό σφάλματος: {id}", "pageLoadErrorRetry": "Δοκιμάστε ξανά", "pageLoadErrorTitle": "Αποτυχία φόρτωσης παρόχων", - "playgroundTitle": "Playground", + "playgroundTitle": "Περιβάλλον δοκιμών", "providerDetailConnectionFlexActive": "Το επίπεδο υπηρεσίας Codex flex είναι ενεργό για αυτήν τη σύνδεση", "providerDetailConnectionPriorityActive": "Το επίπεδο υπηρεσίας Codex priority είναι ενεργό για αυτήν τη σύνδεση", "providerDetailGlobalFlexActive": "Το καθολικό επίπεδο υπηρεσίας Codex flex είναι ενεργό", @@ -6557,7 +6557,7 @@ "systemPrompt": "Prompt Συστήματος", "thinkingBudget": "Προϋπολογισμός Σκέψης", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "Διακομιστής μεσολάβησης HTTP", "1proxy": "1proxy", "proxySubTabsAria": "Τμήματα διαμεσολαβητή", "requestBodyLimitTitle": "Όριο σώματος αιτήματος", @@ -6585,7 +6585,7 @@ "modelCatalogCacheTtlSaving": "Αποθήκευση...", "modelCatalogCacheTtlSave": "Αποθήκευση", "modelCatalogCacheTtlCurrent": "Τρέχον: {value} ms", - "mitmProxy": "MITM Proxy", + "mitmProxy": "Διακομιστής μεσολάβησης MITM", "pricing": "Τιμολόγηση", "storage": "Αποθήκευση", "policies": "Πολιτικές", @@ -6636,7 +6636,7 @@ "modelsDevInfo": "Πώς Λειτουργεί", "modelsDevInfoDesc": "Το models.dev είναι μια ανοιχτού κώδικα βάση δεδομένων προδιαγραφών μοντέλων τεχνητής νοημοσύνης που συντηρείται από την ομάδα SST/OpenCode. Παρέχει τιμολόγηση, δυνατότητες, όρια πλαισίου και τρόπους λειτουργίας για 4.000+ μοντέλα από 100+ παρόχους.", "modelsDevInfoResolution": "Σειρά προτεραιότητας επίλυσης τιμολόγησης (υψηλότερη προτεραιότητα πρώτα):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsDevInfoOrder": "Παράκαμψη χρήστη → models.dev → LiteLLM → Ενσωματωμένη προεπιλογή", "systemTheme": "Θέμα Συστήματος", "debugToggle": "Ενεργοποίηση Λειτουργίας Εντοπισμού Σφαλμάτων", "logToolSourcesToggle": "Καταγραφή Πηγών Εργαλείων", @@ -6913,12 +6913,12 @@ "healthcheckLatency": "Καθυστέρηση", "proxyDocumentationScopeTitle": "Επίλυση εμβέλειας διακομιστή μεσολάβησης", "proxyDocumentationScopeDescBefore": "Το OmniRoute επιλύει τον εξερχόμενο διακομιστή μεσολάβησης με σειρά προτεραιότητας:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "συνδυασμός → λογαριασμός → πάροχος → καθολικό", "proxyDocumentationScopeDescAfter": ". Κερδίζει η πιο συγκεκριμένη εμβέλεια.", "proxyDocumentationAddTitle": "Προσθήκη προσαρμοσμένου διακομιστή μεσολάβησης", "proxyDocumentationAddDescBefore": "Μεταβείτε στην καρτέλα", "proxyDocumentationAddDescMiddle": "→ κάντε κλικ στο", - "proxyDocumentationAddCta": "+ Add proxy", + "proxyDocumentationAddCta": "+ Προσθήκη διακομιστή μεσολάβησης", "proxyDocumentationAddDescAfter": ". Συμπληρώστε τον τύπο (http/https/socks5), τον κεντρικό υπολογιστή και τη θύρα. Προαιρετικά αναθέστε τον σε μια εμβέλεια.", "proxyDocumentationBulkTitle": "Μορφή μαζικής εισαγωγής", "proxyDocumentationBulkDesc": "Πεδία οριοθετημένα με κάθετο γραμμή:", @@ -6948,7 +6948,7 @@ "proxyFreePoolAddSelected": "Προσθήκη επιλεγμένων στη δεξαμενή", "proxyFreePoolAddVisible": "Προσθήκη όλων των ορατών στη δεξαμενή", "proxyFreePoolSource": "Πηγή", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Κεντρικός υπολογιστής:Θύρα", "proxyFreePoolType": "Τύπος", "proxyFreePoolCountry": "Χώρα", "proxyFreePoolQuality": "Ποιότητα", @@ -6983,9 +6983,9 @@ "thinkingBudgetTitle": "Προϋπολογισμός Σκέψης", "thinkingBudgetDesc": "Ελέγχει εάν το OmniRoute επανεγγράφει τις παραμέτρους σκέψης/συλλογισμού του πελάτη πριν από την αποστολή των αιτημάτων upstream. Αυτό είναι ανεξάρτητο από τη συμπίεση, την κρυφή μνήμη προτροπών και τα όρια token κλειδιού API.", "thinkingBudgetIndependenceHint": "Τα χαρακτηριστικά συμπίεσης, δρομολόγησης και ορίων token συνεχίζουν να λειτουργούν σε κάθε λειτουργία. Το Auto δεν σημαίνει «αυτόματη εμφάνιση σκέψης» — αφαιρεί τα πεδία συλλογισμού του πελάτη.", - "passthrough": "Passthrough", + "passthrough": "Διέλευση", "passthroughDesc": "Καμία αλλαγή — ο πελάτης ελέγχει τον προϋπολογισμό σκέψης", - "thinkingModePassthrough": "Passthrough", + "thinkingModePassthrough": "Διέλευση", "thinkingModePassthroughDesc": "Αφήνει τον συλλογισμό του πελάτη αναλλοίωτο (effort, summary, thinking blocks). Απαιτείται για ορατή σκέψη Codex/Desktop. Προεπιλογή.", "thinkingModeAuto": "Auto (αφαίρεση)", "thinkingModeAutoDesc": "Αφαιρεί όλα τα πεδία σκέψης/συλλογισμού του πελάτη (reasoning, reasoning_effort, Claude thinking, Gemini thinking_config) και αφήνει τον provider να ορίσει προεπιλογές. Μπορεί να αποκρύψει πάνελ σκέψης και να διακόψει αιτήματα σύνοψης του πελάτη.", @@ -7004,7 +7004,7 @@ "effortMedium": "Μεσαίο (10K tokens)", "effortHigh": "Υψηλό (128K tokens)", "tokenBudget": "Προϋπολογισμός Token", - "tokens": "tokens", + "tokens": "token", "baseEffortLevel": "Βασικό Επίπεδο Προσπάθειας", "adaptiveHint": "Η προσαρμοστική λειτουργία κλιμακώνεται από αυτό το βασικό επίπεδο βάσει του αριθμού μηνυμάτων, της χρήσης εργαλείων και του μήκους της προτροπής. Δεν αποκρυπτογραφεί κρυπτογραφημένα blobs συλλογισμού παρόχου.", "requireLogin": "Απαίτηση σύνδεσης", @@ -7056,7 +7056,7 @@ "routingAdvancedGuideTitle": "Σύνθετη καθοδήγηση δρομολόγησης", "routingAdvancedGuideHint1": "Αυτή η στρατηγική συγχρονίζεται τόσο με τις νέες προεπιλογές συνδυασμού όσο και με την καθολική εναλλακτική δρομολόγηση λογαριασμού.", "routingAdvancedGuideHint2": "Χρησιμοποιήστε Fill First για προβλέψιμη προτεραιότητα λογαριασμού, Round Robin με Sticky Limit για ομάδες λογαριασμών, και P2C για ανθεκτικότητα στην καθυστέρηση.", - "fillFirst": "Fill First", + "fillFirst": "Πρώτα το γέμισμα", "fillFirstDesc": "Χρησιμοποιεί λογαριασμούς με σειρά προτεραιότητας", "roundRobin": "Round Robin", "roundRobinDesc": "Εναλλαγή μέσω όλων των λογαριασμών", @@ -7068,21 +7068,21 @@ "leastUsedDesc": "Επιλέγει τον λιγότερο πρόσφατα χρησιμοποιημένο λογαριασμό", "costOpt": "Βελτιστοποίηση Κόστους", "costOptDesc": "Προτιμά τον φθηνότερο διαθέσιμο λογαριασμό", - "resetAware": "Reset-Aware RR", + "resetAware": "RR με επίγνωση επαναφοράς", "resetAwareDesc": "Προτιμά λογαριασμούς με υγιές υπολειπόμενο όριο και πλησιέστερες επαναφορές", "quotaWeighted": "Σταθμισμένο βάσει ορίου χρήσης", "quotaWeightedDesc": "Παράλειψη εξαντλημένων λογαριασμών και, στη συνέχεια, επιλογή μεταξύ των υπολοίπων αναλογικά με το υπόλοιπό τους, διαιρεμένο με το τρέχον φορτίο. Οι υπάρχουσες συνομιλίες παραμένουν καρφιτσωμένες.", "strictRandom": "Αυστηρά Τυχαίος", "strictRandomDesc": "Ανακατεύει τη «τράπουλα» — χρησιμοποιεί κάθε λογαριασμό μία φορά πριν ξανανακατέψει", - "stickyLimit": "Sticky Limit", + "stickyLimit": "Σταθερό όριο", "stickyLimitDesc": "Κλήσεις ανά λογαριασμό πριν από την εναλλαγή όταν η καθολική εναλλακτική δρομολόγηση χρησιμοποιεί Round Robin", "routingStrategyTitle": "Στρατηγική Δρομολόγησης", "routingStrategySubtitle": "Αντιστοιχεί στο 9router: round-robin λογαριασμών, sticky limits και εναλλαγή συνδυασμών", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Κυκλική εναλλαγή", "accountRoundRobinDesc": "Εναλλαγή μέσω λογαριασμών για κατανομή φορτίου", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Κυκλική εναλλαγή συνδυασμών", "comboRoundRobinDesc": "Εναλλαγή μέσω στόχων συνδυασμού αντί να ξεκινά πάντα από τον πρώτο", - "comboStickyLimit": "Combo Sticky Limit", + "comboStickyLimit": "Σταθερό όριο συνδυασμών", "comboStickyLimitDesc": "Κλήσεις ανά στόχο συνδυασμού πριν από την εναλλαγή", "routingStrategyAccountSummary": "Κατανομή αιτημάτων μεταξύ λογαριασμών με {limit} κλήσεις ανά λογαριασμό.", "routingStrategyFillFirstSummary": "Χρήση λογαριασμών με σειρά προτεραιότητας (Πρώτα ο Πρώτος).", @@ -7441,7 +7441,7 @@ "noWildcardAliasesConfigured": "Δεν έχουν ρυθμιστεί ψευδώνυμα μπαλαντέρ.", "overview": "Επισκόπηση", "unknownError": "Άγνωστο Σφάλμα", - "pricingSourceLiteLLM": "LiteLLM (Community)", + "pricingSourceLiteLLM": "LiteLLM (Κοινότητα)", "clearSyncedPricingConfirm": "Εκκαθάριση όλων των συγχρονισμένων δεδομένων τιμολόγησης; Αντ' αυτού θα χρησιμοποιηθούν οι προεπιλογές παρόχου.", "clearSyncedPricingFailed": "Αποτυχία εκκαθάρισης συγχρονισμένων τιμολογήσεων", "pricingSourceUser": "Παράκαμψη Χρήστη", @@ -7497,7 +7497,7 @@ "compressionModeStandardDesc": "Συμπίεση βάσει κανόνων με 30+ μοτίβα, διατηρεί μπλοκ κώδικα και URLs", "compressionModeAggressive": "Επιθετική", "compressionModeAggressiveDesc": "Σύνοψη + συμπίεση αποτελεσμάτων εργαλείων + προοδευτική παλαίωση για μέγιστη εξοικονόμηση", - "compressionModeUltra": "Ultra", + "compressionModeUltra": "Υπερενισχυμένο", "compressionModeUltraDesc": "Ευρετική κλάδευση token με προαιρετικό τοπικό εναλλακτικό SLM", "compressionAggressiveConfig": "Διαμόρφωση Επιθετικής Μηχανής", "compressionAggressiveConfigDesc": "Βελτιστοποίηση σύνοψης, συμπίεσης εργαλείων και ορίων παλαίωσης", @@ -7597,7 +7597,7 @@ "current": "Τρέχον", "remove": "Αφαίρεση", "search": "Αναζήτηση", - "oneproxyTitle": "1proxy Free Proxy Marketplace", + "oneproxyTitle": "1proxy Δωρεάν Marketplace Διακομιστών Μεσολάβησης", "oneproxyTotalProxies": "Σύνολο μεσολαβητών", "oneproxyAvgQuality": "Μέση ποιότητα", "resilienceScope": "Εμβέλεια:", @@ -7815,7 +7815,7 @@ "redisLauncherStop": "Διακοπή", "redisLauncherLaunching": "Εκκίνηση...", "redisLauncherLaunch": "Εκκίνηση Redis", - "redisLauncherContainer": "Container", + "redisLauncherContainer": "Κοντέινερ", "redisLauncherRunning": "Σε εκτέλεση", "redisLauncherReachable": "Προσβάσιμο", "redisLauncherError": "Σφάλμα: {message}", @@ -7851,9 +7851,9 @@ "minimal": "Ελάχιστο", "standard": "Τυπικό", "aggressive": "Επιθετικό", - "lite": "Lite", + "lite": "Ελαφρύ", "full": "Πλήρες", - "ultra": "Ultra" + "ultra": "Υπερενισχυμένο" }, "compressionEngine": { "session-dedup": { @@ -7865,7 +7865,7 @@ "description": "Δείκτες ανάκτησης με βάση το περιεχόμενο." }, "lite": { - "label": "Lite", + "label": "Ελαφρύ", "description": "Εκκαθάριση κενών και μορφοποίησης." }, "rtk": { @@ -7877,19 +7877,19 @@ "description": "Συντηρητική συμπίεση για υποστηριζόμενες εξόδους εργαλείου Responses." }, "headroom": { - "label": "Headroom", + "label": "Περιθώριο", "description": "Συμπαγής μορφοποίηση πινακοποιημένου JSON." }, "relevance": { - "label": "Relevance", + "label": "Συνάφεια", "description": "Εξαγωγική βαθμολόγηση προτάσεων σε σχέση με το τελευταίο ερώτημα χρήστη." }, "caveman": { - "label": "Caveman", + "label": "Πρωτόγονο", "description": "Συμπίεση πεζογραφίας βάσει κανόνων." }, "aggressive": { - "label": "Aggressive", + "label": "Επιθετικό", "description": "Σύνοψη και παλαίωση παλιών γύρων." }, "llmlingua": { @@ -7897,7 +7897,7 @@ "description": "Σημασιολογική κλάδευση (ONNX)." }, "ultra": { - "label": "Ultra", + "label": "Υπερενισχυμένο", "description": "Ευρετική περικοπή token με προαιρετικό SLM." }, "omniglyph": { @@ -7953,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Εισαγωγή λογαριασμών", "payloadRulesTitle": "Κανόνες Payload", "payloadRulesDesc": "Ρυθμίστε τις μεταλλάξεις payload αιτημάτων ανά μοντέλο και πρωτόκολλο. Οι αλλαγές αποθηκεύονται στις ρυθμίσεις και επαναφορτώνονται άμεσα στο περιβάλλον εκτέλεσης μετά την αποθήκευση.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "προεπιλογή", "payloadRuleDefaultDesc": "Εφαρμόζει παραμέτρους μόνο όταν το στοχευόμενο μονοπάτι λείπει από το εξερχόμενο payload.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "παράκαμψη", "payloadRuleOverrideDesc": "Επιβάλλει τιμές στο payload, αντικαθιστώντας οτιδήποτε υπάρχει ήδη σε αυτό το μονοπάτι.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "φίλτρο", "payloadRuleFilterDesc": "Αφαιρεί τις αποκλεισμένες παραμέτρους από το payload πριν αποσταλεί το αίτημα upstream.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Όπως το default, αλλά οι τιμές συμβολοσειρών αναλύονται πρώτα ως JSON όταν είναι δυνατόν. Το παλαιό ψευδώνυμο εισόδου default-raw γίνεται επίσης αποδεκτό κατά την αποθήκευση.", @@ -8000,23 +8000,23 @@ "responsesStateModePreserve": "Διατήρηση", "responsesStateHint": "Αφαιρεί αυτόματα το previous_response_id εκτός αν μια σύνδεση έχει ενεργοποιήσει ρητά την αποθήκευση OpenAI Responses. Η αφαίρεση είναι ασφαλέστερη για stateless clients όπως το VS Code Custom Endpoint· το πλαίσιο εξαρτάται τότε από τον client που αποστέλλει το πλήρες ιστορικό.", "responsesStateSaveError": "Αποτυχία ενημέρωσης ρύθμισης κατάστασης Αποκρίσεων", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Γρήγορο επίπεδο Codex", "codexFastTierDesc": "Καθολική εισαγωγή service_tier=priority για αιτήματα OpenAI Codex.", "codexFastTierHint": "Όταν είναι ενεργοποιημένο, το OmniRoute προσθέτει service_tier=priority στα εξερχόμενα αιτήματα Codex για συνδέσεις που δεν έχουν ήδη καθορίσει tier. Το Priority tier απαιτεί OpenAI Enterprise API key ή τη διαδρομή ChatGPT-auth Codex· άλλοι τύποι κλειδιών θα λάβουν σφάλμα σχετικό με το tier από το OpenAI. Οι ρυθμίσεις ανά σύνδεση στη σελίδα παρόχου Codex έχουν προτεραιότητα.", "codexFastTierSaveError": "Αποτυχία ενημέρωσης ρύθμισης Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", + "codexAutoPingTitle": "Αυτόματο ping ορίου Codex", "codexAutoPingDesc": "Ενεργοποίηση ανά σύνδεση: αποστέλλει ένα μικροσκοπικό αίτημα αμέσως μετά την επαναφορά παραθύρου συνεδρίας Codex, ώστε να μην είναι σε αδράνεια όταν το χρειαστείτε.", "codexAutoPingWarning": "Καταναλώνει μικρή ποσότητα πραγματικής χρέωσης Codex σε κάθε ping. Απενεργοποιημένο από προεπιλογή — ενεργοποιήστε το μόνο για συνδέσεις που χρησιμοποιείτε ενεργά.", "codexAutoPingSaveError": "Αποτυχία ενημέρωσης ρύθμισης Codex Auto-Ping", "codexAutoPingToggleAria": "Εναλλαγή codex quota auto-ping για {connection}", "codexFastTierTierLabel": "Επίπεδο υπηρεσίας", "codexFastTierTierPriority": "Προτεραιότητα", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Ευέλικτο", "codexFastTierTierDefault": "Προεπιλογή", "codexFastTierModelsLabel": "Μοντέλα fast-tier", "codexFastTierModelsHint": "Μόνο τα επιλεγμένα μοντέλα λαμβάνουν service_tier όταν το Fast Tier είναι ενεργοποιημένο.", "codexFastTierModelCheckbox": "Ενεργοποίηση Fast Tier για {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Γρήγορη λειτουργία Claude", "claudeFastModeDesc": "Εισαγωγή επιλεγμένων αιτημάτων Claude στο Anthropic Fast Mode (speed:\"fast\").", "claudeFastModeHint": "Το Anthropic δεν υποστηρίζει επίσημα το Fast Mode για SDK-style clients. Όταν είναι ενεργοποιημένο, το OmniRoute προωθεί μια κεφαλίδα X-CPA-Force-Fast-Mode ώστε ένα συζευγμένο CLIProxyAPI build να μπορεί να επιλέξει την πλαστογράφηση του σημείου εισόδου. Μόνο τα αναφερόμενα μοντέλα Opus υπόκεινται στον έλεγχο από την πλευρά του client του Anthropic. Το επίπεδο συνδρομής, το πλάνο Max και το υπόλοιπο πιστώσεων Fast Mode εξακολουθούν να επιβάλλονται από την πλευρά του server — το Anthropic ενδέχεται να επιστρέψει out_of_credits ακόμα και όταν η εναλλαγή είναι ενεργή.", "claudeFastModeModelsLabel": "Εφαρμόστηκε σε μοντέλα ({count})", @@ -8351,14 +8351,14 @@ "oneproxyClearAllConfirm": "Εκκαθάριση όλων των διακομιστών μεσολάβησης 1proxy;", "memorySkillsSkillsmpDescription": "Συνδεθείτε στο SkillsMP για να ανακαλύψετε και να εγκαταστήσετε δεξιότητες από την αγορά.", "memorySkillsActiveProviderDescription": "Επιλέξτε ποιον πάροχο χρησιμοποιεί η σελίδα Δεξιοτήτων για αναζήτηση και εγκατάσταση.", - "memorySkillsSkillsmpProviderTitle": "SkillsMP Marketplace", + "memorySkillsSkillsmpProviderTitle": "Marketplace SkillsMP", "memorySkillsSkillsmpProviderDescription": "Αγορά με πιστοποίηση (χρησιμοποιεί το κλειδί API του SkillsMP).", - "memorySkillsSkillsshProviderTitle": "skills.sh Directory", + "memorySkillsSkillsshProviderTitle": "Κατάλογος skills.sh", "memorySkillsSkillsshProviderDescription": "Πάροχος δημόσιου καταλόγου (δεν απαιτείται κλειδί API).", "routingCcBridgeCatalogName": "Γέφυρα CC συμβατή με Anthropic", "routingClaudeProviderName": "Claude (OAuth)", "routingClaudeProviderDescription": "Εγγενής πάροχος Claude με διακριτικά έκδοσης OAuth.", - "routingCcBridgeName": "Claude-Code Bridge", + "routingCcBridgeName": "Γέφυρα Claude-Code", "routingCcBridgeDescription": "Σημεία αναμετάδοσης με χρήση κλειδιών API (anthropic-compatible-cc-*).", "routingCustomProviderDescription": "Προσαρμοσμένος πάροχος.", "routingUnknownOpKind": "Άγνωστος τύπος λειτουργίας: {kind}", @@ -8506,7 +8506,7 @@ "description": "Αλγόριθμος συμπίεσης πίνακα χωρίς απώλειες για ομοιογενείς πίνακες JSON με ρητούς δείκτες αριθμού γραμμών." }, "session-dedup": { - "name": "Session Dedup", + "name": "Αποδιπλοποίηση συνεδρίας", "description": "Αντιγραφή μπλοκ μεταξύ σειρών με δείκτες ανακτήσιμου περιεχομένου." }, "ccr": { @@ -8518,15 +8518,15 @@ "description": "Σημασιολογική ταξινόμηση token βάσει ONNX. Συμπιέζει μόνο πεζό κείμενο· τα μπλοκ κώδικα και οι προστατευμένες δομές παραμένουν ανέπαφα. Αποτυγχάνει ανοιχτά σε σφάλματα μοντέλου ή εργαζόμενου." }, "lite": { - "name": "Lite", + "name": "Ελαφρύ", "description": "Γρήγορη μείωση κενών, αποτελεσμάτων εργαλείων και URL εικόνων." }, "aggressive": { - "name": "Aggressive", + "name": "Επιθετικό", "description": "Περίληψη, συμπίεση αποτελεσμάτων εργαλείων και προοδευτική γήρανση." }, "ultra": { - "name": "Ultra", + "name": "Υπερενισχυμένο", "description": "Ευρετική κλάδευση token με προαιρετικό τοπικό εναλλακτικό SLM." } }, @@ -8608,18 +8608,18 @@ "bert-base": "BERT-base (710 MB, υψηλότερη ακρίβεια)" }, "intensity": { - "lite": "Lite", - "full": "Full", - "ultra": "Ultra" + "lite": "Ελαφρύ", + "full": "Πλήρες", + "ultra": "Υπερ" } }, "modeOptions": { "default": "Προεπιλογή", "off": "Ανενεργό", - "lite": "Lite", + "lite": "Ελαφρύ", "standard": "Τυπική", "aggressive": "Επιθετική", - "ultra": "Ultra", + "ultra": "Υπερ", "responsesToolOutput": "Έξοδος εργαλείου Responses" } }, @@ -8676,9 +8676,9 @@ "pipelineRequired": "Προσθέστε τουλάχιστον ένα βήμα διοχέτευσης πριν αποθηκεύσετε.", "saveComboFailed": "Αποτυχία αποθήκευσης συνδυασμού (HTTP {status}).", "deleteNamedConfirm": "Διαγραφή συνδυασμού \"{name}\";", - "intensityLite": "Lite", - "intensityFull": "Full", - "intensityUltra": "Ultra", + "intensityLite": "Ελαφρύ", + "intensityFull": "Πλήρες", + "intensityUltra": "Υπερ", "active": "Ενεργό", "languagePacksList": "Πακέτα γλώσσας: {packs}", "dragToReorder": "Σύρετε για αναδιάταξη βήματος", @@ -8690,7 +8690,7 @@ "liveDataHint": "Τα δεδομένα σε πραγματικό χρόνο φτάνουν μέσω του καναλιού συμπίεσης WebSocket.", "cockpitView": "Προβολή πιλοτηρίου", "canvas": "Καμβάς", - "waterfall": "Waterfall", + "waterfall": "Καταρράκτης", "replayDone": "Αναπαραγωγή ολοκληρώθηκε", "pauseReplay": "Παύση αναπαραγωγής", "playReplay": "Έναρξη αναπαραγωγής", @@ -8742,8 +8742,8 @@ "encoderComparison": "Κωδικοποιητής A/B — {count} πίνακας(-ες)", "encoderWinner": "νικητής: {winner}", "encoder": "κωδικοποιητής", - "bytes": "bytes", - "tokensCl100k": "tokens (cl100k)" + "bytes": "byte", + "tokensCl100k": "token (cl100k)" }, "omniglyph": { "preview": "Προεπισκόπηση", @@ -8880,7 +8880,7 @@ "providerExposureHint": "Όταν είναι ενεργοποιημένο, τα ανακαλυφθέντα μοντέλα εμφανίζονται στους επιλογείς παρόχων σε όλο το OmniRoute.", "providerExposureUpdateFailed": "Αποτυχία ενημέρωσης (HTTP {status})", "providerExposureNetworkFailed": "Σφάλμα δικτύου — δεν ήταν δυνατή η ενημέρωση της ρύθμισης έκθεσης παρόχου", - "webUi": "9Router Web UI", + "webUi": "Διεπαφή ιστού 9Router", "openNewTab": "Άνοιγμα σε νέα καρτέλα", "filterLogs": "Φιλτράρισμα αρχείων καταγραφής…", "resume": "Συνέχεια", @@ -8961,7 +8961,7 @@ "metaTitle": "Playground Μεταφραστή | OmniRoute", "metaDescription": "Εντοπισμός σφαλμάτων, δοκιμή και οπτικοποίηση μεταφράσεων μορφής API μεταξύ παρόχων", "playgroundTitle": "Playground Μεταφραστή", - "playground": "Playground", + "playground": "Χώρος δοκιμών", "realtime": "Δραστηριότητα μετάφρασης σε πραγματικό χρόνο", "chatTester": "Δοκιμαστής συνομιλίας", "testBench": "Δοκιμαστική Πλατφόρμα", @@ -9104,8 +9104,8 @@ "cityDescription": "Η πόλη προς αναζήτηση, π.χ. «Τόκιο» ή «Νέα Υόρκη»." } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", + "openaiCompatibleLabel": "Συμβατό με OpenAI", + "anthropicCompatibleLabel": "Συμβατό με Anthropic", "noTemplateForFormat": "Δεν υπάρχει πρότυπο για αυτή τη μορφή", "translationFailed": "Η μετάφραση απέτυχε: {error}", "pipelineDebugger": "Εργαλείο Αποσφαλμάτωσης Αγωγού", @@ -9177,8 +9177,8 @@ "comboRouted": "Δρομολόγηση Combo", "uniqueEndpoints": "Μοναδικά endpoints", "routeDetails": "Λεπτομέρειες διαδρομής", - "comboBadge": "Combo", - "routeEndpointLabel": "Endpoint", + "comboBadge": "Συνδυασμός", + "routeEndpointLabel": "Τελικό σημείο", "routeConnectionLabel": "Σύνδεση", "scenarioVision": "Όραση (κατανόηση εικόνας)", "scenarioSchemaCoercion": "Εξαναγκασμός σχήματος (δομημένη έξοδος)", @@ -9294,7 +9294,7 @@ "kimiMonthlyLimit": "Μηνιαίο όριο", "kimiMonthlyLimitUnlimited": "Απεριόριστο", "kimiAdditionalCredits": "Επιπλέον Πιστώσεις", - "loggerTab": "Logger", + "loggerTab": "Καταγραφέας", "proxyTab": "Proxy", "budgetManagement": "Διαχείριση Προϋπολογισμού", "budgetSaved": "Τα όρια προϋπολογισμού αποθηκεύτηκαν", @@ -9343,7 +9343,7 @@ "evaluateStepDescription": "Οι αποκρίσεις συγκρίνονται με τα αναμενόμενα κριτήρια. Δείτε επιτυχία/αποτυχία για κάθε περίπτωση με μετρικές καθυστέρησης και λεπτομερή σχόλια.", "evalsStrategyContainsLabel": "Περιέχει", "evalsStrategyExactLabel": "Ακριβής Αντιστοιχία", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Κανονική έκφραση", "evalsStrategyCustomLabel": "Προσαρμοσμένη Λογική", "evalsStrategyContainsDescription": "Ελέγχει αν η έξοδος του LLM περιέχει το αναμενόμενο υποαλφαριθμητικό.", "evalsStrategyExactDescription": "Ελέγχει αν η έξοδος του LLM ταιριάζει ακριβώς με την αναμενόμενη τιμή.", @@ -9472,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "Δωρεάν", - "tierLite": "Lite", + "tierLite": "Ελαφρύ", "tierUnknown": "Άγνωστο", "statTotal": "Σύνολο", "statCritical": "Κρίσιμο", @@ -9968,7 +9968,7 @@ "featureDashboardDesc": "Οπτικός πίνακας ελέγχου για ανάλυση κίνησης σε πραγματικό χρόνο.", "howItWorks": "Πώς Λειτουργεί το OmniRoute", "howItWorksDescription": "Τα δεδομένα ρέουν απρόσκοπτα από την εφαρμογή σας μέσα από το ευφυές επίπεδο δρομολόγησής μας στον καλύτερο πάροχο για την κάθε εργασία.", - "howItWorksStep1Title": "1. CLI & SDKs", + "howItWorksStep1Title": "1. CLI και SDK", "howItWorksStep1Description": "Τα αιτήματά σας ξεκινούν από τα αγαπημένα σας εργαλεία ή το ενοποιημένο SDK μας. Απλώς αλλάξτε το base URL.", "howItWorksStep2Title": "2. OmniRoute Hub", "howItWorksStep2Description": "Ο κινητήρας μας αναλύει το prompt, ελέγχει την υγεία των παρόχων και δρομολογεί για την ελάχιστη καθυστέρηση ή κόστος.", @@ -10071,7 +10071,7 @@ "quickStartStep4Suffix": "Χρησιμοποιήστε το πρόθεμα παρόχου, για παράδειγμα", "deploySetupTitle": "Οδηγός Εγκατάστασης", "deploySetupText": "Βήμα-βήμα εγκατάσταση, ρύθμιση περιβάλλοντος και οδηγός πρώτης εκτέλεσης για το OmniRoute.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron για υπολογιστές", "deployElectronText": "Εκτελέστε το OmniRoute ως εγγενή εφαρμογή επιφάνειας εργασίας σε Windows, macOS και Linux.", "deployDockerTitle": "Docker", "deployDockerText": "Ανάπτυξη σε container με Docker Compose· έτοιμο για στοίβες παραγωγής και Kubernetes.", @@ -10112,7 +10112,7 @@ "useCaseUsageVisibilityTitle": "Ορατότητα χρήσης, κόστους και αποσφαλμάτωσης", "useCaseUsageVisibilityText": "Παρακολουθήστε token και κόστος ανά πάροχο, λογαριασμό και κλειδί API στις καρτέλες Χρήση και Αναλυτικά.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "Βασική διεύθυνση URL", "chatEndpointLabel": "Σημείο πρόσβασης συνομιλίας", "modelRecommendationLabel": "Σύσταση μοντέλου: ρητό πρόθεμα", "clientCodexTitle": "Μοντέλα Codex / GitHub Copilot", @@ -10237,10 +10237,10 @@ "protocolAcpStep1": "Μεταβείτε στο Dashboard → Agents για να δείτε τους εγγεγραμμένους πράκτορες ACP.", "protocolAcpStep2": "Εγγράψτε νέους πράκτορες με δυνατότητες και διαμόρφωση τελικού σημείου.", "protocolAcpStep3": "Χρησιμοποιήστε τα CLI Tools για να διαμορφώσετε τα κανάλια επικοινωνίας πρακτόρων.", - "metadataTitleTemplate": "%s — OmniRoute Docs", + "metadataTitleTemplate": "%s — Τεκμηρίωση OmniRoute", "metadataDefaultTitle": "Τεκμηρίωση OmniRoute", "metadataDescription": "Πλήρης τεκμηρίωση για το AI gateway OmniRoute — εγκατάσταση, API, συμπίεση, ανάπτυξη και πολλά άλλα.", - "layoutNavTitle": "OmniRoute Docs", + "layoutNavTitle": "Τεκμηρίωση OmniRoute", "layoutHomeLink": "Αρχική Τεκμηρίωσης", "layoutDashboardLink": "← Επιστροφή στο Dashboard", "homeTitle": "Τεκμηρίωση OmniRoute", @@ -10270,7 +10270,7 @@ "apiExplorerChooseApi": "Επιλέξτε ένα API από την πλαϊνή μπάρα για να δείτε λεπτομέρειες και να το δοκιμάσετε ζωντανά", "feedbackThanks": "Ευχαριστούμε για την ανατροφοδότησή σας!", "feedbackQuestion": "Ήταν χρήσιμη αυτή η σελίδα;", - "pageMetadataTitle": "{title} — OmniRoute Docs", + "pageMetadataTitle": "{title} — Τεκμηρίωση OmniRoute", "pageMetadataDescription": "Τεκμηρίωση OmniRoute: {title}", "breadcrumb": "Ιχνηλάτης διαδρομής", "apiReferenceTable": { @@ -10400,7 +10400,7 @@ "flowDiagramOmniRouteDesc": "Λαμβάνει το αίτημα και επιλέγει στόχο", "flowDiagramSpawn": "Εκκίνηση Διεργασίας", "flowDiagramSpawnDesc": "Εκκινεί το δυαδικό αρχείο CLI μέσω stdio", - "flowDiagramCli": "CLI Agent", + "flowDiagramCli": "Πράκτορας CLI", "flowDiagramCliDesc": "Επεξεργάζεται με δική του αυθεντικοποίηση/μοντέλο", "fingerprintSettingsHint": "Η αντιστοίχιση Δακτυλικού Αποτυπώματος CLI (μεταμφίεση αιτημάτων ως συγκεκριμένα εργαλεία CLI) μπορεί να ρυθμιστεί στις", "settingsRoutingLink": "Ρυθμίσεις/Δρομολόγηση", @@ -10486,7 +10486,7 @@ "jules": "Αυτόνομος πράκτορας κώδικα της Google", "devin": "Τεχνητός μηχανικός λογισμικού της Cognition", "codexCloud": "Πράκτορας κώδικα της OpenAI βασισμένος στο cloud", - "cursorCloud": "Cursor's Background / Cloud Agents (official API key)" + "cursorCloud": "Πράκτορες παρασκηνίου / cloud του Cursor (επίσημο κλειδί API)" }, "activityTypes": { "plan": "Σχέδιο", @@ -10694,7 +10694,7 @@ "selectSavedProxyPlaceholder": "Επιλογή αποθηκευμένου διαμεσολαβητή...", "proxyType": "Τύπος Διαμεσολαβητή", "host": "Κεντρικός Υπολογιστής", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", + "hostPlaceholder": "1.2.3.4 ή proxy.example.com", "port": "Θύρα", "authOptional": "Έλεγχος ταυτότητας (προαιρετικό)", "username": "Όνομα χρήστη", @@ -10776,7 +10776,7 @@ "devinDesktopPasteDescription": "Επικολλήστε ένα υπάρχον κλειδί API Devin από μια ταυτοποιημένη συνεδρία Devin. Η διαθεσιμότητα εξαγωγής κλειδιών και τα βήματα διαφέρουν ανά έκδοση Devin και λογαριασμό.", "devinPasteDescription": "Δώστε το WINDSURF_API_KEY (που αποκτάται μέσω `devin auth login`, ή μέσω της εντολής \"Windsurf: Provide Auth Token\" στο Windsurf IDE).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json του Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Κλειδί API / Διακριτικό", "saving": "Αποθήκευση…", @@ -10888,7 +10888,7 @@ "save": "Αποθήκευση", "bulkModalTitle": "Μαζική Ανάθεση Proxy", "bulkLabelScope": "Εμβέλεια", - "bulkLabelProxy": "Proxy", + "bulkLabelProxy": "Διακομιστής μεσολάβησης", "bulkClearAssignment": "(Εκκαθάριση ανάθεσης)", "bulkLabelScopeIds": "Αναγνωριστικά πεδίου εφαρμογής (διαχωρισμένα με κόμμα ή νέα γραμμή)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", @@ -10962,15 +10962,15 @@ "poolStrategyLabel": "Στρατηγική εναλλαγής", "poolStrategyHint": "Το round-robin εναλλάσσει τα μέλη με σειρά· το random επιλέγει τυχαία· το sticky διατηρεί ένα μέλος για ένα χρονικό παράθυρο· το latency-optimized επιλέγει το ταχύτερο βάσει καταγραφών.", "poolStrategyFailed": "Αποτυχία ενημέρωσης στρατηγικής εναλλαγής", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Κυκλική εναλλαγή", "strategyRandom": "Τυχαία", - "strategySticky": "Sticky", + "strategySticky": "Σταθερή αντιστοίχιση", "strategyLatency": "Βελτιστοποιημένο βάσει καθυστέρησης", "poolMembersLabel": "Μέλη pool ({count})", "poolNoMembers": "Δεν υπάρχουν ακόμα proxy σε αυτό το pool.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "Χρησιμοποιήθηκαν {exits, plural, one {# έξοδος} other {# έξοδοι}} από {connections, plural, one {# σύνδεση} other {# συνδέσεις}} · έως {max} σε μία έξοδο · τελευταίες {hours} ώρες", + "poolEgressObservationEmpty": "Δεν παρατηρήθηκε κίνηση τις τελευταίες {hours} ώρες", + "poolEgressObservationHint": "Υπολογίζεται από το αρχείο καταγραφής του διακομιστή μεσολάβησης για το συγκεκριμένο χρονικό διάστημα: οι διακριτές διευθύνσεις IP εξόδου που παρατηρήθηκαν για τα μέλη αυτής της ομάδας και οι συνδέσεις OmniRoute που τις χρησιμοποίησαν. Η ένδειξη «Σε μία έξοδο» αφορά ολόκληρο το χρονικό διάστημα και όχι την ίδια χρονική στιγμή. Ο αποκλεισμός 429 ανά IP θέτει σε παύση μόνο τις συνδέσεις της ίδιας οικογένειας παρόχων.", "poolRemove": "Αφαίρεση", "poolRemoveFailed": "Αποτυχία αφαίρεσης του proxy από το pool", "poolAddLabel": "Προσθήκη διαμεσολαβητή", @@ -11025,7 +11025,7 @@ "conversationalChat": "Συνομιλητικό Chat", "clearChat": "Εκκαθάριση συνομιλίας", "typeMessagePlaceholder": "Πληκτρολογήστε ένα μήνυμα... (Shift+Enter για νέα γραμμή)", - "tabChat": "Chat", + "tabChat": "Συνομιλία", "tabCompare": "Σύγκριση", "tabApi": "API", "tabBuild": "Δημιουργία", @@ -11103,7 +11103,7 @@ "ttft": "TTFT", "tps": "TPS", "metricsDisclaimer": "εκτίμηση από την πλευρά του πελάτη", - "tokensLabel": "Tokens", + "tokensLabel": "Token", "costLabel": "Κόστος", "costEstimated": "(εκτιμώμενο)", "ttftTitle": "Χρόνος μέχρι το πρώτο token (εκτίμηση από την πλευρά του πελάτη)", @@ -11128,11 +11128,11 @@ "jsonMode": "Λειτουργία JSON", "jsonModeDescription": "Επιβάλλει response_format: json_schema", "schemaName": "Όνομα schema", - "jsonSchema": "JSON schema", + "jsonSchema": "Σχήμα JSON", "jsonSchemaEditor": "Επεξεργαστής JSON schema", "schemaValidated": "Το schema επαληθεύτηκε", "validateSchema": "Επαλήθευση schema", - "seed": "Seed", + "seed": "Αρχική τιμή", "stopSequences": "Ακολουθίες διακοπής", "stopSequencesPlaceholder": "π.χ. \"\\n\\n\" ή \"END\"", "autoProvider": "Αυτόματο", @@ -11277,8 +11277,8 @@ "shown": "Εμφανιζόμενα", "sortNewest": "Νεότερα", "sortOldest": "Παλαιότερα", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", + "sortTokensDesc": "Token ↓", + "sortTokensAsc": "Token ↑", "sortDurationDesc": "Διάρκεια ↓", "sortDurationAsc": "Διάρκεια ↑", "sortStatusDesc": "Κατάσταση ↓", @@ -11289,9 +11289,9 @@ "refresh": "Ανανέωση", "columnsLabel": "Στήλες", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "ΕΝΕΡΓΟ", "semantic": "Σημασιολογική", - "upstream": "Upstream", + "upstream": "Ανάντη", "semanticCacheHit": "Εύρεση σημασιολογικής κρυφής μνήμης (εξυπηρετείται από το OmniRoute)", "upstreamResponse": "Απόκριση παρόχου Upstream", "noApiKey": "Δεν υπάρχει κλειδί API", @@ -11312,7 +11312,7 @@ "account": "Λογαριασμός", "apiKey": "Κλειδί API", "combo": "Συνδυασμός", - "tokens": "Tokens", + "tokens": "Διακριτικά", "compressed": "Συμπίεση", "tps": "TPS", "duration": "Διάρκεια", @@ -11487,7 +11487,7 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", + "title": "Περιβάλλον εκτέλεσης", "description": "Παρατηρησιμότητα σε πραγματικό χρόνο — Ανθεκτικότητα 3 επιπέδων + συνεδρίες + ειδοποιήσεις ορίου χρήσης", "pause": "Παύση", "resume": "Συνέχιση", @@ -11556,7 +11556,7 @@ "title": "Κοινή Χρήση Ορίων", "description": "Κοινή χρήση ορίων παρόχου μεταξύ κλειδιών API με όρια %", "newPool": "Νέο pool", - "betaTitle": "Beta", + "betaTitle": "Δοκιμαστική έκδοση", "betaDescription": "Η διαμόρφωση αποθηκεύεται στο localStorage (δεν έχει αποθηκευτεί ακόμη στον διακομιστή). Η επιβολή ορίου ανά αίτημα δεν έχει ακόμη ενσωματωθεί στον αγωγό proxy. Αυτή η οθόνη σάς επιτρέπει να σχεδιάζετε και να απεικονίζετε την κατανομή ορίων· η πραγματική επιβολή θα υλοποιηθεί σε μελλοντική έκδοση με επιμονή στη βάση δεδομένων και υποκλοπή κλήσεων upstream.", "kpiActivePools": "Ενεργά pools", "kpiKeysAllocated": "Κλειδιά που εκχωρήθηκαν", @@ -11567,7 +11567,7 @@ "loading": "Φόρτωση…", "removePool": "Αφαίρεση pool", "removeConfirm": "Αφαίρεση αυτού του pool;", - "pool": "Pool", + "pool": "Ομάδα", "used": "χρησιμοποιήθηκε", "allocationsCount": "Κατανομές ({count})", "allocatedFree": "{allocated}% κατανεμημένο · {free}% ελεύθερο", @@ -11678,9 +11678,9 @@ "endpointsBaseUrl": "Βασικό URL", "endpointsCollapse": "Σύμπτυξη", "endpointsExpand": "Ανάπτυξη", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Εγγενές Anthropic", "endpointsResponsesNote": "OpenAI Responses — codex/github", - "endpointsWsNote": "WebSocket — codex only", + "endpointsWsNote": "WebSocket — μόνο για codex", "betaText": "Το Quota Share λειτουργεί αλλά αναμένονται σφάλματα. Εντοπίσατε κάποιο; Παρακαλούμε αναφέρετέ το.", "betaReportLink": "Αναφορά προβλήματος", "deleteGroup": "Διαγραφή ομάδας", @@ -11726,7 +11726,7 @@ "enabled": "Ενεργό", "disabled": "Ανενεργό", "installedTab": "Εγκατεστημένα", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Αγορά", "marketplaceUrlLabel": "Προσαρμοσμένη Διεύθυνση URL Marketplace", "marketplaceUrlPlaceholder": "Αφήστε κενό για το επίσημο μητρώο Omniroute", "saveMarketplaceUrl": "Αποθήκευση & Επαναφόρτωση", @@ -11752,7 +11752,7 @@ "unitOptions": { "percent": "%", "requests": "αιτήματα", - "tokens": "tokens", + "tokens": "διακριτικά", "usd": "USD ($)" }, "windowOptions": { @@ -12047,7 +12047,7 @@ "agentBridgeModeDesc": "Καταγραφή κυκλοφορίας από όλους τους συνδεδεμένους παράγοντες IDE", "customHostsMode": "Προσαρμοσμένοι Κεντρικοί Υπολογιστές", "customHostsModeDesc": "Προσθήκη συγκεκριμένων κεντρικών υπολογιστών για υποκλοπή", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "Διακομιστής μεσολάβησης HTTP", "httpProxyModeDesc": "Χρήση μεταβλητής περιβάλλοντος HTTP_PROXY", "systemWideMode": "Σε επίπεδο συστήματος", "systemWideModeDesc": "Υποκλοπή όλης της κυκλοφορίας συστήματος (για προχωρημένους)", @@ -12224,7 +12224,7 @@ "versionNotFound": "δεν βρέθηκε", "manualConfig": "Χειροκίνητη ρύθμιση", "installGuide": "Οδηγός εγκατάστασης", - "endpointLabel": "Endpoint", + "endpointLabel": "Τελικό σημείο", "baseUrlFull": "Πλήρες Base URL", "baseUrlPartial": "Μερικό Base URL", "refreshDetection": "Ανανέωση εντοπισμού", @@ -12240,7 +12240,7 @@ "category": "Τύπος", "detectionStatus": "Εντοπισμός", "configStatus": "Ρύθμιση παραμέτρων", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "Βασική διεύθυνση URL", "apiKeyLabel": "Κλειδί API", "modelMappingLabel": "Αντιστοίχιση μοντέλων", "noActiveProviders": "Δεν υπάρχουν ενεργοί πάροχοι.", @@ -12253,7 +12253,7 @@ "pageSubtitle": "Εργαλεία κώδικα που δείχνουν στο OmniRoute", "searchPlaceholder": "Αναζήτηση CLI…", "filterDetectionLabel": "Εντοπισμός", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "Βασική διεύθυνση URL", "detectionAll": "Όλα", "detectionInstalled": "Εγκατεστημένο", "detectionNotFound": "Δεν βρέθηκε", @@ -12377,7 +12377,7 @@ "description": "Εκκίνηση αντιγράφων ασφαλείας συστήματος, επαναφορά από αρχεία αντιγράφων ασφαλείας και διαχείριση κύκλου ζωής βάσης δεδομένων SQLite. Υποστηρίζει στρατηγικές εξαγωγής, εισαγωγής και σταδιακών στιγμιότυπων." }, "omni-webhooks": { - "name": "Webhooks", + "name": "Webhook", "description": "Εγγραφή, καταχώριση, δοκιμή και αφαίρεση endpoints webhook. Διαμόρφωση συνδρομών συμβάντων (request.completed, request.failed, quota.exceeded κ.ά.) και διαχείριση επαναλήψεων παράδοσης." }, "omni-mcp": { @@ -12397,47 +12397,47 @@ "description": "Τα βασικά τελικά σημεία συμπεράσματος συμβατά με OpenAI: ολοκληρώσεις συνομιλίας, ενσωματώσεις, εικόνες, ήχος (TTS/STT), διαμετρήσεις, επαναταξινόμηση και το Responses API. Η κύρια επιφάνεια ενσωμάτωσης για πράκτορες τεχνητής νοημοσύνης." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Εξυπηρέτηση", "description": "Εκκίνηση, διακοπή και επανεκκίνηση του διακομιστή OmniRoute από το CLI. Διαχείριση λειτουργίας daemon, ρύθμιση θύρας, αυτόματη ανάκτηση, ενσωμάτωση στο system tray και συντόμευση ανοίγματος πίνακα ελέγχου." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Κατάσταση λειτουργίας", "description": "Έλεγχος υγείας διακομιστή, κατάστασης στοιχείων και ζωντανών μετρικών από το CLI. Εκτελέστε `health`, `health components` και `health watch` για έναν πίνακα ελέγχου σε πραγματικό χρόνο με αποσβεστήρες κυκλώματος και κατάσταση παρόχου." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Πάροχοι", "description": "Διαχείριση συνδέσεων παρόχων από το CLI: καταγραφή διαθέσιμων/ρυθμισμένων παρόχων, προσθήκη, δοκιμή, δοκιμή-όλων, επικύρωση, εναλλαγή κλειδιών API και προβολή μετρικών ανά πάροχο." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Κλειδιά API", "description": "Δημιουργία, καταγραφή, εναλλαγή και ανάκληση κλειδιών API του OmniRoute από το CLI. Διαχείριση ροών OAuth για έλεγχο ταυτότητας παρόχου και επιθεώρηση εμβέλειας και λήξης κλειδιών." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: Μοντέλα", "description": "Ερώτηση διαθέσιμων μοντέλων τεχνητής νοημοσύνης, καταγραφή ψευδωνύμων μοντέλων και περιήγηση στον πλήρη κατάλογο μοντέλων από το CLI. Φιλτράρισμα ανά πάροχο, αναζήτηση κατά δυνατότητα και επίλυση παραλλαγών ονομάτων μοντέλων." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Συνομιλία", "description": "Αποστολή ολοκληρώσεων συνομιλίας, ροή αποκρίσεων και εκκίνηση διαδραστικής συνεδρίας REPL από το CLI. Υποστηρίζει όλους τους παρόχους OmniRoute, combo δρομολόγηση και ρύθμιση system prompt." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: Δρομολόγηση και συνδυασμοί", "description": "Δημιουργία, καταγραφή, ενημέρωση και διαγραφή combo δρομολόγησης από το CLI. Δοκιμή στρατηγικών δρομολόγησης, επιθεώρηση μετρικών combo και διαδραστική ρύθμιση αλυσίδων εναλλακτικής λύσης." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: Ανθεκτικότητα και ποσοστώσεις", "description": "Επιθεώρηση και διαχείριση καταστάσεων αποσβεστήρα κυκλώματος, χρόνων αναμονής σύνδεσης, ορίων ποσοστώσεων και επιπέδων backoff από το CLI. Επαναφορά μπλοκαρισμένων παρόχων και ρύθμιση κατωφλίων ανθεκτικότητας." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: Συμπίεση", "description": "Ρύθμιση και δοκιμή συμπίεσης prompt από το CLI. Διαχείριση φίλτρων RTK, κανόνων Caveman, λειτουργιών στοιβαγμένης συμπίεσης και προεπισκόπηση αποτελεσμάτων συμπίεσης με πραγματικά prompts." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: Περιβάλλοντα και συνεδρίες", "description": "Διαχείριση ρυθμίσεων μηχανικής πλαισίου, συνόλων φίλτρων RTK και συνεδριών συνομιλίας από το CLI. Εφαρμογή ρυθμίσεων context-relay και επιθεώρηση ενεργών αγωγών πλαισίου." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: Κόστος και χρήση", "description": "Προβολή αναλύσεων κόστους, χρήσης token και αρχείων καταγραφής κλήσεων από το CLI. Φιλτράρισμα ανά πάροχο, μοντέλο ή εύρος ημερομηνιών. Εξαγωγή αναφορών χρήσης και επιθεώρηση δαπανών ανά σύνδεση." }, "cli-mcp": { @@ -12445,23 +12445,23 @@ "description": "Επιθεώρηση κατάστασης διακομιστή MCP, καταγραφή εγγεγραμμένων εργαλείων και εμβελειών, εκτέλεση κλήσεων εργαλείων και διαχείριση αρχείων ελέγχου MCP από το CLI." }, "cli-a2a": { - "name": "CLI: A2A Protocol", + "name": "CLI: Πρωτόκολλο A2A", "description": "Αλληλεπίδραση με τον διακομιστή A2A του OmniRoute από το CLI. Αποστολή εργασιών, επιθεώρηση ιστορικού εκτέλεσης δεξιοτήτων και διαδραστική δοκιμή του πρωτοκόλλου JSON-RPC 2.0 από πράκτορα σε πράκτορα." }, "cli-tunnel": { - "name": "CLI: Tunnels", + "name": "CLI: Σήραγγες", "description": "Εκκίνηση και διακοπή συνδέσεων tunnel (ngrok, Cloudflare, προσαρμοσμένο) από το CLI. Επιθεώρηση ενεργών URL tunnel, ρύθμιση ελέγχου ταυτότητας και δοκιμή εξωτερικής προσβασιμότητας." }, "cli-backup-sync": { - "name": "CLI: Backup & Sync", + "name": "CLI: Αντίγραφα ασφαλείας και συγχρονισμός", "description": "Δημιουργία αντιγράφων ασφαλείας και επαναφορά δεδομένων OmniRoute από το CLI. Εκκίνηση σταδιακών στιγμιότυπων, συγχρονισμός με αποθήκευση cloud, διαχείριση χρονοδιαγραμμάτων αντιγράφων ασφαλείας και επαναφορά από αρχεία αρχειοθέτησης." }, "cli-policy-audit": { - "name": "CLI: Policy & Audit", + "name": "CLI: Πολιτική και έλεγχος", "description": "Επιθεώρηση αρχείων ελέγχου, διαχείριση πολιτικών πρόσβασης, προβολή δεδομένων τηλεμετρίας και ανασκόπηση ιστορικού αιτημάτων από το CLI. Φιλτράρισμα ανά τύπο συμβάντος, χρήστη ή χρονικό εύρος για ροές εργασίας συμμόρφωσης." }, "cli-batches": { - "name": "CLI: Batches & Files", + "name": "CLI: Παρτίδες και αρχεία", "description": "Υποβολή και παρακολούθηση εργασιών συμπεράσματος δέσμης από το CLI. Μεταφόρτωση και διαχείριση αρχείων για επεξεργασία δέσμης, ανάκτηση αποτελεσμάτων και ενσωμάτωση αγωγών δέσμης με ροές εργασίας CI/CD." }, "cli-eval": { @@ -12481,7 +12481,7 @@ "description": "Εντοπίστε εγκατεστημένα εργαλεία κωδικοποίησης CLI (Claude Code, Codex, Cursor, Copilot, Cline και άλλα), αναζητήστε στο GitHub αντίστοιχα agent skills και εγκαταστήστε τα στα εντοπισμένα εργαλεία μέσω των ενσωματωμένων APIs του OmniRoute." }, "config-codex-cli": { - "name": "Config: Codex CLI", + "name": "Ρύθμιση παραμέτρων: Codex CLI", "description": "Βήμα-προς-βήμα ροή εργασίας πράκτορα για τη διαμόρφωση του OpenAI Codex CLI σε οποιοδήποτε μηχάνημα (Linux, macOS, Windows) ώστε να χρησιμοποιεί το OmniRoute ως backend συμβατό με OpenAI. Εντοπίζει το λειτουργικό σύστημα και το shell, γράφει config.toml και 7 ονομαστικά προφίλ, ορίζει μεταβλητές περιβάλλοντος και επαληθεύει τη ρύθμιση." }, "omni-github-skills": { @@ -12489,7 +12489,7 @@ "description": "Αναζητήστε, βαθμολογήστε, σαρώστε και εισαγάγετε agent skills από αποθετήρια GitHub που περιέχουν SKILL.md, CLAUDE.md, .cursorrules και παρόμοια αρχεία agent skills. Ανακαλύψτε skills κοινότητας σε 160+ κατηγορίες παρόχων, αξιολογήστε τη συνάφεια με ευρετικές βαθμολογίες, ελέγξτε για κακόβουλο λογισμικό ή κωδικοποιημένα μυστικά και εγκαταστήστε σε καταλόγους πρακτόρων Hermes, Claude Code, Gemini CLI ή OpenCode." } }, - "pageTitle": "Agent Skills", + "pageTitle": "Δεξιότητες πρακτόρων", "pageSubtitle": "Διδάξτε τον πράκτορά σας να χειρίζεται το OmniRoute — 23 περιοχές API + 21 οικογένειες CLI", "conceptCard": { "agent": { @@ -12503,8 +12503,8 @@ "crossLinkLabel": "Κατανοήστε τη διαφορά →" }, "comparison": { - "colAgent": "Agent Skills", - "colOmni": "Omni Skills", + "colAgent": "Δεξιότητες πρακτόρων", + "colOmni": "Δεξιότητες Omni", "whatIs": { "label": "Τι είναι", "agent": "Αναγνώσιμο από μηχανές SKILL.md που διδάσκει έναν εξωτερικό πράκτορα να χειρίζεται το OmniRoute", @@ -12542,7 +12542,7 @@ "categoryConfig": "Διαμόρφωση", "filterAll": "Όλα", "coverageLabel": "Κάλυψη", - "mcpUrl": "MCP URL", + "mcpUrl": "URL MCP", "a2aLink": "A2A", "mcpPrompt": "Προσθέστε αυτό το τελικό σημείο MCP στον πράκτορά σας για να του δώσετε πρόσβαση σε 37 εργαλεία OmniRoute.", "a2aPrompt": "Καταχωρήστε αυτή την Κάρτα Πράκτορα στον ενορχηστρωτή σας για να ενεργοποιήσετε την ανάθεση εργασιών A2A.", @@ -12992,7 +12992,7 @@ "description": "Εξουσιοδότηση αποκατάστασης ροής να ζητά εκ νέου την απόκριση και να την συνενώνει αφού bytes έχουν ήδη φτάσει στον πελάτη." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Κάντε ασφαλή τη συνέχιση στο μέσο της ροής για τις κλήσεις εργαλείων: μην συνεχίζετε ποτέ μια διακοπείσα ροή αφού έχει σταλεί μια κλήση εργαλείου (είτε βρίσκεται ακόμη σε εξέλιξη είτε έχει ήδη ολοκληρωθεί) και σταματήστε μετά από μία κενή συνέχιση αντί να χρησιμοποιήσετε ολόκληρο το όριο επαναλήψεων." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Μία εναλλαγή σε αδελφή σύνδεση όταν μια ροή κλείνει πριν στείλει οποιοδήποτε χρήσιμο πλαίσιο και η περιορισμένη επανάληψη στην ίδια σύνδεση έχει εξαντληθεί. Χωρίς διαθέσιμη αδελφή σύνδεση επιστρέφεται το αρχικό σφάλμα early-EOF. Ανενεργό: το early-EOF παραμένει τελικό μετά την επανάληψη." @@ -13035,12 +13035,12 @@ "description": "Συνέχιση των μη συνεχιζόμενων κλήσεων εργαλείων που ελέγχονται από τον διακομιστή, έως ότου το μοντέλο επιστρέψει μια απόκριση που μπορεί να χρησιμοποιήσει ο πελάτης." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Προέλευση του Retry-After", + "description": "Σε συγκεντρωτικές αποκρίσεις μη διαθεσιμότητας 429/503, παραλείψτε το Retry-After όταν δεν είναι γνωστός κάποιος συγκεκριμένος μελλοντικός χρόνος επανάληψης, αντί να στέλνετε μια τεχνητή τιμή 1 δευτ., προσθέστε το error.retry_after_provenance και διαβάστε τις υποδείξεις επανάληψης σε ελεύθερο κείμενο στις διαδρομές εκκένωσης συνδυασμού." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Διακοπές υποδομής προστατευμένης προτεραιότητας ως 502", + "description": "Απαντήστε με 502 αντί για 503 όταν ένας στόχος προτεραιότητας με εναλλακτική μόνο λόγω ορίου χρήσης διακόπτει τον συνδυασμό για αιτία που αποδεδειγμένα δεν σχετίζεται με όριο χρήσης: έναν ανοικτό διακόπτη κυκλώματος παρόχου ή μια προγνωστική παράλειψη λόγω καθυστέρησης." } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "Υγεία Combo", "callLogs": "Αρχεία Κλήσεων", "costs": "Κόστη", - "playground": "Playground", + "playground": "Χώρος δοκιμών", "nestedCombo": "Εμφωλευμένο combo", "modelTarget": "Στόχος μοντέλου", "weight": "{value}% βάρος", @@ -13318,7 +13318,7 @@ "missing": "Δεν καθορίζεται", "signalOnly": "Μη διακριτό σήμα συλλογισμού", "requestTags": "Ετικέτες αιτήματος", - "requestTagsExample": "coding, internal", + "requestTagsExample": "προγραμματισμός, εσωτερικό", "tagMode": "Αντιστοίχιση ετικετών", "effortMode": "Λειτουργία προσπάθειας", "targetEffort": "Προσπάθεια στόχου", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Απόρριψη αιτημάτων πριν από την αποστολή όταν το στοχευόμενο μοντέλο δεν διαθέτει τις απαιτούμενες δυνατότητες (όραση, εργαλεία, δομημένη έξοδος, παράθυρο περιβάλλοντος). Προστατεύει άμεσα αιτήματα μεμονωμένου παρόχου που παρακάμπτουν το φίλτρο συμβατότητας του επιπέδου combo.", "featureFlagDisableContextWindowChecksDescription": "Παράλειψη του τοπικού ελέγχου παραθύρου περιβάλλοντος και μέγιστου εισόδου διακριτικών του OmniRoute για άμεσα αιτήματα μεμονωμένου μοντέλου. Οι upstream πάροχοι εξακολουθούν να επιβάλλουν τα πραγματικά τους όρια. Η συμπίεση προτροπής και τα ανώτατα όρια διακριτικών εξόδου παραμένουν ενεργά.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Τα στατιστικά αναζήτησης και οι πρόσφατες αναζητήσεις υπολογίζουν μόνο τους παρόχους που εξακολουθούν να έχουν ενεργή σύνδεση (οι πάροχοι χωρίς κλειδί, όπως ο duckduckgo-free, υπολογίζονται πάντα). Η απενεργοποίηση διατηρεί κάθε αποθηκευμένη εγγραφή αναζήτησης με αναγνωριστικό παρόχου.", "publicSystem": { "notFound": { "title": "Η σελίδα δεν βρέθηκε", @@ -13807,7 +13807,7 @@ "importDescription": "Επικολλήστε ένα refresh token που εξήχθη από το {providerLabel}.", "apiKey": "Κλειδί API", "apiKeyDescription": "Επικολλήστε ένα μακράς διάρκειας κλειδί API {providerLabel} / CodeWhisperer. Αποθηκεύεται ως διαπιστευτήριο bearer χωρίς refresh token· η ανακάλυψη προφίλ γίνεται με βέλτιστη προσπάθεια.", - "idcStartUrl": "IDC Start URL", + "idcStartUrl": "URL έναρξης IDC", "idcStartUrlPlaceholder": "https://your-org.awsapps.com/start", "idcStartUrlDescription": "Η διεύθυνση URL του AWS IAM Identity Center του οργανισμού σας", "awsRegion": "Περιοχή AWS", @@ -13818,7 +13818,7 @@ "autoDetecting": "Αυτόματη ανίχνευση token...", "readingCredentials": "Ανάγνωση διαπιστευτηρίων {providerLabel} από την κρυφή μνήμη AWS SSO", "tokenNotDetected": "Το token του {providerLabel} δεν ανιχνεύτηκε αυτόματα. Επικολλήστε χειροκίνητα το refresh token σας.", - "refreshToken": "Refresh Token", + "refreshToken": "Token ανανέωσης", "tokenPlaceholder": "Το token θα συμπληρωθεί αυτόματα...", "importing": "Εισαγωγή...", "apiKeyPlaceholder": "Επικολλήστε το κλειδί API του {providerLabel}...", @@ -13868,10 +13868,10 @@ "orPasteManually": "ή επικολλήστε ένα token χειροκίνητα", "manualInstructions": "Συνδεθείτε στο solo.trae.ai, ανοίξτε το DevTools → Network, στείλτε οποιοδήποτε μήνυμα συνομιλίας και αντιγράψτε το JWT από την κεφαλίδα αιτήματος Authorization: Cloud-IDE-JWT {tokenPlaceholder}. Η διάρκεια ζωής του JWT είναι ~14 ημέρες. Τα προαιρετικά πεδία ταυτότητας προέρχονται από το common_params στο σώμα του ίδιου αιτήματος.", "accessTokenLabel": "Token πρόσβασης (Cloud-IDE-JWT)", - "webId": "Web ID", + "webId": "Αναγνωριστικό ιστού", "optional": "προαιρετικό", - "bizUserId": "Biz User ID", - "userUniqueId": "User Unique ID", + "bizUserId": "Αναγνωριστικό επιχειρηματικού χρήστη", + "userUniqueId": "Μοναδικό αναγνωριστικό χρήστη", "scope": "Εύρος", "tenant": "Μισθωτής", "region": "Περιοχή", @@ -13918,7 +13918,7 @@ "requestedModel": "Ζητούμενο μοντέλο", "provider": "Πάροχος", "requester": "Αιτών", - "tokens": "Tokens" + "tokens": "Token" } }, "proxyLog": { @@ -13955,7 +13955,7 @@ "duration": "Διάρκεια", "status": "Κατάσταση", "provider": "Πάροχος", - "tokens": "Tokens", + "tokens": "Token", "active": "Ενεργό", "other": "Άλλο", "tenMinutes": "10λεπ", @@ -13984,9 +13984,9 @@ "colMode": "Λειτουργία", "colRunner": "Εκτελεστής", "colSummary": "Σύνοψη", - "online": "online", - "offline": "offline", - "draining": "draining", + "online": "σε σύνδεση", + "offline": "εκτός σύνδεσης", + "draining": "σε εκκένωση", "hubOffline": "Ο κόμβος Conductor είναι offline ή δεν έχει ρυθμιστεί (CONDUCTOR_HUB_URL) — δεν εμφανίζεται τίποτα για αποφυγή παλαιών δεδομένων.", "noRunners": "Δεν υπάρχουν καταχωρημένοι εκτελεστές", "noTasks": "Δεν υπάρχουν εργασίες ακόμα", @@ -14025,7 +14025,7 @@ "orchestration": { "title": "Ενορχήστρωση", "description": "Όλα όσα εκτελεί το OmniRoute αυτή τη στιγμή — agents, στόλος και δρομολόγηση", - "tabAgents": "Agents", + "tabAgents": "Πράκτορες", "tabRouting": "Δρομολόγηση", "tabOverview": "Επισκόπηση", "tabHistory": "Ιστορικό", @@ -14051,7 +14051,7 @@ "filterSources": "Πηγές", "filterProviders": "Πάροχοι", "clearFilters": "Εκκαθάριση φίλτρων", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Πράκτορας cloud", "sourceA2A": "A2A", "sourceConductor": "Conductor", "sourceStale": "Ανενεργό από {since}", diff --git a/src/i18n/messages/es.json b/src/i18n/messages/es.json index 18916f167f..5588aabd00 100644 --- a/src/i18n/messages/es.json +++ b/src/i18n/messages/es.json @@ -4,19 +4,19 @@ "cancel": "Cancelar", "delete": "Eliminar", "loading": "Cargando...", - "selectOption": "Select an option", + "selectOption": "Seleccionar una opción", "error": "Se produjo un error", "success": "Éxito", "confirm": "¿Estás seguro?", "refresh": "Actualizar", "close": "Cerrar", - "previousPage": "Previous page", - "nextPage": "Next page", - "capsLockOn": "Caps Lock is on", - "dismissNotification": "Dismiss notification", - "toggleColumns": "Toggle columns", - "confirmTitle": "Confirm", - "confirmAction": "Confirm", + "previousPage": "Página anterior", + "nextPage": "Página siguiente", + "capsLockOn": "El bloqueo de mayúsculas está activado", + "dismissNotification": "Descartar notificación", + "toggleColumns": "Alternar columnas", + "confirmTitle": "Confirmar", + "confirmAction": "Confirmar", "add": "Añadir", "edit": "Editar", "search": "Buscar", @@ -31,9 +31,9 @@ "active": "Activo", "inactive": "Inactivo", "noData": "No hay datos disponibles", - "nothingHere": "Nothing here yet", + "nothingHere": "Aún no hay nada aquí", "configure": "Configurar", - "manualConfig": "Manual config", + "manualConfig": "Configuración manual", "manage": "Administrar", "name": "Nombre", "actions": "Acciones", @@ -42,12 +42,12 @@ "model": "Modelo", "models": "modelos", "provider": "Proveedor", - "unknownProvider": "Unknown provider", + "unknownProvider": "Proveedor desconocido", "account": "Cuenta", "time": "Hora", "details": "Detalles", "created": "Creado", - "lastUsed": "Last Refreshed", + "lastUsed": "Última actualización", "loadMore": "Cargar más", "noResults": "No se encontraron resultados", "reloadPage": "Recargar página", @@ -70,8 +70,8 @@ "note": "Nota", "free": "Gratis", "skipToContent": "Saltar al contenido", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "El servidor está experimentando problemas. Es posible que algunas funciones no estén disponibles.", + "maintenanceServerUnreachable": "No se puede acceder al servidor. Reconectando...", "accept": "accept", "accountId": "accountId", "alias": "alias", @@ -150,24 +150,24 @@ "Failed to reset pricing": "No se pudo restablecer el precio", "apikey": "Clave API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", - "addModel": "Add model", - "effortNone": "None", - "effortLow": "Low", - "effortMedium": "Medium", - "effortHigh": "High", - "effortExtraHigh": "Extra high", - "effortMax": "Max", + "goToDashboard": "Ir al panel de control", + "checkSystemStatus": "Comprobar el estado del sistema", + "selectModel": "Seleccionar modelo", + "addModel": "Añadir modelo", + "effortNone": "Ninguno", + "effortLow": "Bajo", + "effortMedium": "Medio", + "effortHigh": "Alto", + "effortExtraHigh": "Extra alto", + "effortMax": "Máximo", "effortUltra": "Ultra", - "reasoningEffort": "Reasoning effort", - "wireApi": "Wire API", - "modelAliases": "Model aliases", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "reasoningEffort": "Esfuerzo de razonamiento", + "wireApi": "API de Wire", + "modelAliases": "Alias de modelos", + "combos": "Combinaciones", + "noModelsFound": "No se encontraron modelos", + "clear": "Borrar", + "done": "Listo", "selectAll": "Seleccionar todo", "unselectAll": "Deseleccionar todo", "visibleModels": "visibles", @@ -184,527 +184,527 @@ "selectAllProviders": "Verificar todos los proveedores", "clearProviderSelection": "Desmarcar proveedores", "providersSelectedCount": "{count} proveedores verificados", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Se produjo un error", + "comboDeleted": "Combinación eliminada", + "hide": "Ocultar", + "creating": "Creando", + "comboCreated": "Combinación creada", + "swapFormats": "Intercambiar formatos", + "daysAgo": "Días atrás", + "retries": "Reintentos", + "errorDuringRestore": "Error durante la restauración", + "eventsAppearHint": "Sugerencia sobre la aparición de eventos", + "noLockouts": "Sin bloqueos", + "webSearchDesc": "Descripción de la búsqueda web", + "audioProvidersHeading": "Proveedores de audio", "cloudAgentProviders": "Proveedores de agentes en la nube", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Hace unos minutos", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", + "liveAutoRefreshing": "Actualización automática en vivo", + "webSearch": "Búsqueda web", + "anthropicPrefixPlaceholder": "Marcador de posición del prefijo de Anthropic", + "addModelToCombo": "Añadir modelo a la combinación", + "failedToLoad": "Error al cargar", + "categoryMedia": "Categoría multimedia", + "enableCloud": "Habilitar la nube", + "expirationBannerExpiringSoon": "Aviso de caducidad próxima", + "retry": "Reintentar", + "embeddings": "Representaciones vectoriales", + "errorCount": "Número de errores", + "backupReasonManual": "Motivo de la copia de seguridad: manual", + "safeSearchModerate": "Búsqueda segura moderada", + "activeLimiters": "Limitadores activos", + "a2aCardTitle": "Título de la tarjeta A2A", + "cloudWorkerUnreachable": "No se puede acceder al worker de la nube", + "testFailed": "La prueba ha fallado", + "compatibleBaseUrlHint": "Sugerencia de URL base compatible", + "usageTracking": "Seguimiento del uso", + "disableCloudTitle": "Título para deshabilitar la nube", + "noConnections": "Sin conexiones", + "providerHealth": "Estado de los proveedores", + "confirmDbImport": "Confirmar la importación de la base de datos", + "notAvailableSymbol": "Símbolo de no disponible", + "backupsAvailable": "Copias de seguridad disponibles", + "providerAuto": "Proveedor automático", + "newProviderNamePlaceholder": "Marcador de posición del nombre del nuevo proveedor", + "a2aQuickStartStep2": "Paso 2 del inicio rápido de A2A", + "ok": "Aceptar", + "available": "Disponible", + "noBackupYet": "Aún no hay ninguna copia de seguridad", + "more": "Más", + "noCompatibleYet": "Aún no compatible", + "multiProvider": "Varios proveedores", + "repairEnvHint": "Sugerencia para reparar el entorno", + "disablingCloud": "Desactivando la nube", + "testBench": "Banco de pruebas", + "valid": "Válido", + "cloudBenefitShare": "Proporción de beneficios de la nube", + "mcpCardTitle": "Título de la tarjeta MCP", + "disableConfirm": "Confirmar desactivación", + "filters": "Filtros", + "expirationBannerExpiredDesc": "Descripción del banner de expiración caducada", + "saveComboDefaults": "Guardar valores predeterminados de la combinación", + "cloudConnectedVerified": "Conexión a la nube verificada", + "uptime": "Tiempo de actividad", + "compatibleProdPlaceholder": "Marcador de posición de producción compatible", + "fallbackChainsTitle": "Título de las cadenas de respaldo", + "oauthLabel": "Etiqueta de OAuth", + "a2aCardDescription": "Descripción de la tarjeta A2A", + "okShort": "Aceptar", + "maintenance": "Mantenimiento", + "formatConverter": "Conversor de formatos", + "zedImportNetworkError": "Error de red al importar desde Zed", + "apiKeyLabel": "Etiqueta de la clave de API", + "noModelsForProvider": "No hay modelos para el proveedor", + "mcpCardDescription": "Descripción de la tarjeta MCP", + "apiTypeLabel": "Etiqueta del tipo de API", + "configuredProvidersLabel": "Etiqueta de proveedores configurados", + "maxRetriesLabel": "Etiqueta del máximo de reintentos", + "title": "Título", + "output": "Salida", + "prefixHint": "Sugerencia de prefijo", + "skipWizard": "Omitir asistente", + "failedCount": "Número de fallos", + "confirmDbImportDesc": "Descripción de la confirmación de importación de la base de datos", + "entries": "Entradas", + "until": "Hasta", + "disableCombo": "Desactivar combinación", + "liveMonitorDescriptionPrefix": "Prefijo de la descripción del monitor en tiempo real", + "runningCount": "Número de procesos en ejecución", + "noActiveConnectionsInGroup": "No hay conexiones activas en el grupo", + "savedSuccessfully": "Guardado correctamente", + "systemStorage": "Almacenamiento del sistema", + "videoDesc": "Descripción del vídeo", + "maxResults": "Resultados máximos", + "timeRangeMonth": "Intervalo de tiempo mensual", + "testSummary": "Resumen de la prueba", + "failedSetPassword": "Error al establecer la contraseña", "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "restore": "Restaurar", + "disableWarning": "Desactivar advertencia", + "moderationsDesc": "Descripción de las moderaciones", + "providerHealthStatusAria": "ARIA del estado del proveedor", + "modelNamePlaceholder": "Marcador de posición del nombre del modelo", + "mcpQuickStartStep2": "Paso 2 del inicio rápido de Mcp", + "quickStart": "Inicio rápido", + "fullExportFailedWithError": "Error en la exportación completa", + "loadingBackups": "Cargando copias de seguridad", + "anthropicBaseUrlPlaceholder": "Marcador de posición de la URL base de Anthropic", + "description": "Descripción", + "noProviderFound": "No se encontró ningún proveedor", + "auto": "Automático", + "protocolsDescription": "Descripción de los protocolos", + "cloudSessionNote": "Nota de la sesión en la nube", + "advancedSettings": "Configuración avanzada", + "defaultStrategy": "Estrategia predeterminada", + "purgeExpiredLogs": "Purgar registros caducados", + "justNow": "Ahora mismo", + "providerTestFailed": "La prueba del proveedor falló", + "openaiBaseUrlPlaceholder": "Marcador de posición de la URL base de Openai", + "image": "Imagen", + "failedCreateChain": "Error al crear la cadena", + "importDatabase": "Importar base de datos", + "allDataLocal": "Todos los datos son locales", + "sectionTitle": "Título de la sección", + "failedToggle": "Error al cambiar el estado", + "editCombo": "Editar combinación", + "testResults": "Resultados de la prueba", + "searchQuery": "Consulta de búsqueda", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", + "duplicate": "Duplicar", + "createCombo": "Crear combinación", + "searchTypeWeb": "Tipo de búsqueda web", + "addChain": "Añadir cadena", + "prefixLabel": "Etiqueta de prefijo", + "listModelsDesc": "Descripción de la lista de modelos", + "databaseSize": "Tamaño de la base de datos", + "chainCreated": "Cadena creada", + "providerTestTimeout": "Tiempo de espera de la prueba del proveedor", + "routingStrategy": "Estrategia de enrutamiento", + "translateAction": "Acción de traducción", + "exportFailed": "Error al exportar", + "connectedVerificationPending": "Conectado, verificación pendiente", + "a2aQuickStartTitle": "Inicio rápido de A2A", + "couldNotTest": "No se pudo realizar la prueba", + "testAllCompatible": "Probar todos los compatibles", + "anthropicCompatibleName": "Nombre compatible con Anthropic", + "disabling": "Deshabilitando", + "failedEnable": "Error al habilitar", + "categoryUtility": "Categoría de utilidades", + "customUrlOptional": "URL personalizada opcional", + "localProviders": "Proveedores locales", + "comboNamePlaceholder": "Marcador de posición del nombre de la combinación", + "memoryRss": "Memoria RSS", + "disableProvider": "Deshabilitar proveedor", + "welcomeDesc": "Descripción de bienvenida", + "nameLabel": "Etiqueta de nombre", + "allOperational": "Todos operativos", + "backupNow": "Crear copia de seguridad ahora", + "providerMaxRetriesAria": "ARIA de reintentos máximos del proveedor", + "textToSpeechDesc": "Descripción de texto a voz", + "machineId": "ID de la máquina", + "globalProxy": "Proxy global", + "hitsMisses": "Aciertos y fallos", + "testDesc": "Descripción de la prueba", + "chatDesc": "Descripción del chat", + "importSuccess": "Importación correcta", "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "a2aQuickStartStep1": "Paso 1 del inicio rápido de A2A", + "importFailed": "Error al importar", + "inputPlaceholder": "Marcador de posición de entrada", + "providerModelsTitle": "Título de modelos del proveedor", + "lastBackup": "Última copia de seguridad", + "yourEndpoint": "Tu endpoint", + "autoDisableThresholdDesc": "Descripción del umbral de desactivación automática", + "rerankDesc": "Descripción de la reclasificación", + "modelsPathPlaceholder": "Marcador de posición de la ruta de los modelos", + "noCombosYet": "Aún no hay combinaciones", + "connectedVerificationPendingWithError": "Conectado, verificación pendiente con error", + "comboDefaultsGuideHint1": "Primera sugerencia de la guía de valores predeterminados de combinaciones", + "enableCloudTitle": "Activar la nube", + "configuredProvidersHint": "Sugerencia sobre proveedores configurados", + "paused": "En pausa", + "llmProviders": "Proveedores de LLM", + "enableCombo": "Activar combinación", + "removeProviderOverrideAria": "ARIA para eliminar la configuración específica del proveedor", + "nodeVersion": "Versión de Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Error en la exportación", + "proxyConfigured": "Proxy configurado", + "concurrencyPerModel": "Concurrencia por modelo", + "protocolTasksLabel": "Etiqueta de tareas del protocolo", + "oauthProviders": "Proveedores de OAuth", + "lockedCount": "Cantidad bloqueada", + "deleteChainConfirm": "Confirmar eliminación de la cadena", + "recentTranslations": "Traducciones recientes", + "zedImportButton": "Botón de importación de Zed", + "responsesDesc": "Descripción de las respuestas", + "testedCount": "Cantidad probada", + "providersCommaSeparatedPlaceholder": "Marcador de posición de proveedores separados por comas", + "signatureDefaults": "Valores predeterminados de firma", + "errorCreating": "Error al crear", + "timeRangeYear": "Intervalo de tiempo: año", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Nube desactivada correctamente", + "deleteConfirm": "Confirmar eliminación", + "check": "Comprobar", + "safeSearch": "Búsqueda segura", + "protocolLastActivity": "Última actividad del protocolo", + "openMcpDashboard": "Abrir el panel de MCP", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Etiqueta de la ruta del chat", + "retryDelay": "Retraso de reintento", + "errorUpdating": "Error al actualizar", + "ideCliIntegrations": "Integraciones con IDE y CLI", + "imageGeneration": "Generación de imágenes", + "apiKeyRequired": "Se requiere una clave API", + "resetAllTitle": "Restablecer todo", + "connectionError": "Error de conexión", + "modelName": "Nombre del modelo", + "apiKeyForCheck": "Clave API para la comprobación", + "cloudRequestTimeout": "Tiempo de espera agotado para la solicitud en la nube", + "showConfiguredOnly": "Mostrar solo los configurados", "showFreeOnly": "Sólo gratis", "addFirstProvider": "Añade tu primer proveedor", "addFirstProviderDesc": "Conecte un proveedor de IA para comenzar a enrutar solicitudes a través de OmniRoute. Puede utilizar proveedores gratuitos, claves API o cuentas OAuth.", "learnMore": "Más información", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", - "queueDepth": "Queue Depth", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "includeDomains": "Incluir dominios", + "promptCache": "Caché de prompts", + "cloudConnected": "Conectado a la nube", + "deleteChain": "Eliminar cadena", + "chatPathPlaceholder": "Marcador de posición de la ruta del chat", + "databasePath": "Ruta de la base de datos", + "usingLocalServer": "Usando el servidor local", + "globalComboConfig": "Configuración global de combinaciones", + "backupFailed": "Error al crear la copia de seguridad", + "tabProtocols": "Protocolos de pestañas", + "continue": "Continuar", + "categorySearch": "Búsqueda por categoría", + "rateLimitStatus": "Estado del límite de solicitudes", + "repairEnvSuccess": "Entorno reparado correctamente", + "nameRequired": "El nombre es obligatorio", + "country": "País", + "trackMetricsDesc": "Descripción del seguimiento de métricas", + "durationSecondsShort": "Duración (s)", + "formatConverterDescription": "Descripción del conversor de formatos", + "cloudBenefitAccess": "Acceso a las ventajas de la nube", + "maxRetries": "Número máximo de reintentos", + "queueTimeout": "Tiempo de espera de la cola", + "queueDepth": "Profundidad de la cola", + "addProvider": "Añadir proveedor", + "realtime": "Tiempo real", + "totalTranslations": "Traducciones totales", + "protocolActiveStreamsLabel": "Flujos activos del protocolo", + "repairEnv": "Reparar entorno", + "modelsCount": "Número de modelos", + "viewBackups": "Ver copias de seguridad", + "responsesApi": "API de Responses", + "copyComboName": "Copiar nombre de la combinación", + "failures": "Fallos", + "failedUpdate": "Error al actualizar", + "imageDesc": "Descripción de la imagen", + "failedCreate": "Error al crear", + "remainingOfLimit": "Restante del límite", + "protocolsTitle": "Título de protocolos", + "expirationBannerExpiringSoonDesc": "Descripción del banner de próxima expiración", + "source": "Origen", + "failed": "Fallido", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "Paso 1 del inicio rápido de MCP", + "runTest": "Ejecutar prueba", + "loadingFallbackChains": "Cargando cadenas de respaldo", + "healthy": "Saludable", + "version": "Versión", + "saveBlockWeighted": "Guardar bloque ponderado", + "zedImportNone": "Ninguna importación de Zed", + "noBackupsYet": "Aún no hay copias de seguridad", + "noGlobalProxy": "Sin proxy global", + "noModels": "Sin modelos", + "stickyLimit": "Límite de afinidad", + "passedCount": "Cantidad de aprobados", + "zedImportFailed": "Error al importar desde Zed", + "saving": "Guardando", + "testAll": "Probar todo", + "globalProxyDesc": "Descripción del proxy global", + "latencyP99": "Latencia P99", + "connectingToCloud": "Conectando con la nube", + "responses": "Respuestas", + "errorDeleting": "Error al eliminar", + "openaiPrefixPlaceholder": "Marcador de posición del prefijo de OpenAI", + "enterPassword": "Introducir contraseña", + "openA2aDashboard": "Abrir el panel de A2A", + "enableProvider": "Habilitar proveedor", + "modeTest": "Modo de prueba", + "failedDeleteChain": "Error al eliminar la cadena", + "providerDesc": "Descripción del proveedor", + "templateLoadHint": "Sugerencia para cargar la plantilla", + "lastFailure": "Último fallo", + "moveDown": "Mover hacia abajo", + "providerLabel": "Etiqueta del proveedor", + "clearCacheFailed": "Error al borrar la caché", + "imagesGenerations": "Generaciones de imágenes", + "repairEnvWorking": "Reparación del entorno en curso", + "millisecondsShort": "ms", + "globalLabel": "Etiqueta global", + "failuresPlural": "Fallos", + "completionsLegacyDesc": "Descripción de completaciones heredadas", + "searchProviders": "Buscar proveedores", + "chatPathHint": "Sugerencia de ruta del chat", + "defaultStrategyDesc": "Descripción de la estrategia predeterminada", + "latencyP95": "Latencia P95", + "textToSpeech": "Texto a voz", + "searchType": "Tipo de búsqueda", + "messages": "Mensajes", + "aggregatorsGateways": "Agregadores y puertas de enlace", + "comboStrategyAria": "ARIA de estrategia combinada", + "input": "Entrada", + "testingConnection": "Probando la conexión", + "excludeDomains": "Excluir dominios", + "webCookieProviders": "Proveedores de cookies web", + "allTestsPassed": "Todas las pruebas superadas", + "openaiCompatibleName": "Nombre compatible con OpenAI", + "warningCostOptimizedPartialPricing": "Advertencia de precios parciales optimizados por coste", + "comboDefaultsGuideTitle": "Título de la guía de valores predeterminados de combinación", + "hoursAgo": "Horas atrás", + "notAvailable": "No disponible", + "skipAndContinue": "Omitir y continuar", + "moderations": "Moderaciones", + "proxyConfig": "Configuración del proxy", + "upstreamProxyProviders": "Proveedores de proxy ascendente", + "exportAll": "Exportar todo", + "queuedCount": "Cantidad en cola", + "resetAll": "Restablecer todo", + "noTranslations": "Sin traducciones", + "avgLatency": "Latencia media", + "throttleStatus": "Estado de limitación", + "backupRetentionDesc": "Descripción de la retención de copias de seguridad", + "noCBData": "Sin datos de CB", + "chainDeleted": "Cadena eliminada", + "timeLeft": "Tiempo restante", + "expirationBannerExpired": "Banner de expiración caducado", + "language": "Idioma", + "invalidFileType": "Tipo de archivo no válido", + "monitoredProviders": "Proveedores monitorizados", + "errors": "Errores", + "heap": "Montículo", + "chatCompletions": "Finalizaciones de chat", + "exampleTemplatesHint": "Sugerencia de plantillas de ejemplo", + "retryDelayLabel": "Etiqueta del retraso de reintento", + "audioTranscription": "Transcripción de audio", + "fallbackChainsDesc": "Descripción de las cadenas de respaldo", + "exampleTemplates": "Plantillas de ejemplo", + "connectionsCount": "Número de conexiones", + "modelsPathLabel": "Etiqueta de la ruta de modelos", + "activeProvidersHint": "Sugerencia de proveedores activos", + "activeLockouts": "Bloqueos activos", + "invalid": "No válido", + "skipPassword": "Omitir contraseña", + "moveUp": "Subir", + "timeRange": "Intervalo de tiempo", + "stickyLimitDesc": "Descripción del límite persistente", + "cloudBenefitEdge": "Ventaja de la nube: Edge", + "custom": "Personalizado", + "verifying": "Verificando", + "baseUrlLabel": "Etiqueta de la URL base", + "setPassword": "Establecer contraseña", + "safeSearchStrict": "Búsqueda segura estricta", + "noChangesSinceBackup": "Sin cambios desde la copia de seguridad", + "modelsPathHint": "Sugerencia de la ruta de modelos", + "audioTranscriptions": "Transcripciones de audio", + "testCombo": "Probar combinación", + "mcpQuickStartTitle": "Título de inicio rápido de MCP", + "comboUpdated": "Combinación actualizada", + "weighted": "Ponderado", + "providers": "Proveedores", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Descripción de ausencia de cadenas de respaldo", + "yesImport": "Sí, importar", + "lockoutsAutoRefreshHint": "Sugerencia de actualización automática de bloqueos", + "tabApis": "Pestaña API", + "sectionDescription": "Descripción de la sección", + "filter": "Filtrar", + "purgeLogsFailed": "Error al purgar los registros", + "latency": "Latencia", + "testAllOAuth": "Probar todas las autenticaciones OAuth", + "mcpQuickStartStep3": "Paso 3 del inicio rápido de MCP", + "repairEnvFailed": "Error al reparar el entorno", + "zedImportHint": "Sugerencia de importación de Zed", + "modelsAcrossEndpoints": "Modelos en distintos endpoints", + "autoDisableBannedAccounts": "Desactivar automáticamente las cuentas bloqueadas", + "securityDesc": "Descripción de seguridad", + "listModels": "Listar modelos", + "backupRestore": "Copia de seguridad y restauración", + "target": "Destino", + "zedImportSuccess": "Importación de Zed completada", + "lastHeaderUpdate": "Última actualización del encabezado", + "categoryCore": "Categoría principal", + "noFallbackChains": "No hay cadenas de respaldo", + "noSearchProviders": "No hay proveedores de búsqueda", + "autoBalance": "Equilibrio automático", + "noModelsYet": "Aún no hay modelos", + "signatureFamily": "Familia de firmas", + "externalApiCalls": "Llamadas a API externas", + "providerOverridesDesc": "Descripción de las anulaciones del proveedor", + "signatureTool": "Herramienta de firma", + "connectionFailed": "Error de conexión", + "activeLimitersPlural": "Limitadores activos", + "doneDesc": "Descripción de finalización", + "down": "Inactivo", + "noDataYet": "Aún no hay datos", + "activeProviders": "Proveedores activos", + "nameInvalid": "Nombre no válido", + "skip": "Omitir", + "createChain": "Crear cadena", + "audioSpeech": "Síntesis de voz", + "cacheCleared": "Caché borrada", + "searchTypeNews": "Tipo de búsqueda: noticias", + "durationMillisecondsShort": "Duración (ms)", + "addOpenAICompatible": "Añadir compatibilidad con OpenAI", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "En cola", + "domainPlaceholder": "Marcador de posición del dominio", + "durationMinutesShort": "Duración en minutos (abreviada)", + "verifyingConnection": "Verificando la conexión", + "imageProviders": "Proveedores de imágenes", + "protocolToolsLabel": "Etiqueta de herramientas de protocolo", + "queryPlaceholder": "Marcador de posición de la consulta", + "videoGeneration": "Generación de vídeo", + "timeRangeWeek": "Intervalo de tiempo: semana", + "limitExhausted": "Límite agotado", + "failedDisable": "Error al deshabilitar", + "inMemoryNote": "Nota en memoria", + "compatibleHint": "Consejo de compatibilidad", + "errorShort": "Error breve", + "advancedHint": "Consejo avanzado", + "restoreFailed": "Error al restaurar", + "searchProvidersHeading": "Encabezado de proveedores de búsqueda", + "comboName": "Nombre de la combinación", + "autoDisableDescription": "Descripción de la desactivación automática", + "embeddingsDesc": "Descripción de las incrustaciones", + "operational": "Operativo", + "testAllApiKey": "Probar todas las claves de API", + "backupCreated": "Copia de seguridad creada", + "errorDuringImport": "Error durante la importación", + "comboDefaultsGuideHint2": "Consejo 2 de la guía de valores predeterminados de combinaciones", + "connecting": "Conectando", + "fillModelAndProviders": "Completa el modelo y los proveedores", + "syncing": "Sincronizando", + "resetConfirm": "Confirmar restablecimiento", + "trackMetrics": "Registrar métricas", + "successful": "Correcto", + "recovering": "Recuperando", + "autoDisableThreshold": "Umbral de desactivación automática", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Sincronizando datos", + "cloudBenefitPorts": "Ventaja de los puertos en la nube", + "compatibleProviders": "Proveedores compatibles", "freeTierProviders": "Proveedores de nivel gratuito", "freeTierLabel": "Nivel gratuito disponible", "freeTierProvidersDesc": "Proveedores con niveles gratuitos: algunos requieren un registro de clave API, otros no necesitan ninguna credencial.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Borrar caché", + "reqs": "Solicitudes", + "addAnthropicCompatible": "Añadir proveedor compatible con Anthropic", + "apiKeyProviders": "Proveedores de claves de API", + "tabsAria": "ARIA de pestañas", + "resetting": "Restableciendo", + "millisecondsAbbr": "Abrev. de milisegundos", + "backupReasonPreRestore": "Motivo de la copia de seguridad previa a la restauración", + "disableCloud": "Desactivar la nube", + "newProviderNameAria": "ARIA del nombre del nuevo proveedor", + "passwordsMismatch": "Las contraseñas no coinciden", + "a2aQuickStartStep3": "Paso 3 del inicio rápido de A2A", + "liveMonitorDescriptionSuffix": "Sufijo de la descripción del monitor en tiempo real", + "failedAddProvider": "No se pudo añadir el proveedor", + "addAtLeastOneProvider": "Añade al menos un proveedor", + "reasonSeparator": "Separador de motivos", + "zedImporting": "Importando Zed", + "confirmPasswordPlaceholder": "Marcador de posición para confirmar la contraseña", + "whatYouGet": "Qué obtienes", + "signatureSession": "Sesión de firma", + "errorCountNoCode": "Recuento de errores sin código", + "testing": "Probando", + "providersCommaSeparated": "Proveedores separados por comas", + "exportDatabase": "Exportar base de datos", + "hitRate": "Tasa de aciertos", + "completionsLegacy": "Completados heredados", + "removeModel": "Eliminar modelo", + "timeRangeDay": "Intervalo de tiempo: día", + "cloudRequestFailed": "Error en la solicitud a la nube", + "updatedAt": "Actualizado el", + "monitoredProvidersHint": "Sugerencia de proveedores supervisados", + "connectionSuccessful": "Conexión establecida correctamente", + "latencyP50": "Latencia P50", + "logsDeleted": "Registros eliminados", + "chatTester": "Probador de chat", + "safeSearchOff": "Búsqueda segura desactivada", + "nameHint": "Sugerencia de nombre", + "debugToggle": "Selector de depuración", + "embedding": "Representación vectorial", + "issuesLabel": "Etiqueta de problemas", + "optionAny": "Opción cualquiera", + "maxNestingDepth": "Profundidad máxima de anidamiento", + "rerank": "Reclasificación", + "checking": "Comprobando", + "getStarted": "Comenzar", + "restoreSuccess": "Restauración correcta", + "issuesDetected": "Problemas detectados", + "signatureCache": "Caché de firmas", + "modelLockouts": "Bloqueos de modelos", + "usingCloudProxy": "Usando Cloud Proxy", + "loadingHealth": "Cargando estado", + "providerOverrides": "Anulaciones de proveedores", + "audioTranscriptionDesc": "Descripción de la transcripción de audio", + "learnedFromHeaders": "Aprendido de los encabezados", + "totalRequests": "Solicitudes totales", + "cloudUnstableNote": "Nota sobre la inestabilidad de la nube", "gamificationAdmin": "Administrador de gamificación", "monitorAnomaliesAndHealth": "Supervisar anomalías y el estado del sistema.", "flaggedAnomalies": "Anomalías marcadas", "noAnomaliesDetected": "No se detectaron anomalías", "apiKey": "Clave API", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 h)", "zScore": "Puntuación Z", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Sospechoso", "tokensCommunityServers": "Servidores comunitarios", "tokensServerNamePlaceholder": "Nombre del servidor", "tokensApiKeyPlaceholder": "clave API", @@ -721,42 +721,42 @@ "tokensRedeemCode": "Canjear código", "tokensRedeemCodePlaceholder": "Introduce el código de invitación", "tokensYourActiveInvites": "Tus invitaciones activas", - "tokensTransferSuccess": "Transfer successful ({idempotencyKey})", - "tokensTransferFailed": "Transfer failed", - "tokensCreateInviteFailed": "Failed to create invite", - "tokensRevokeInviteFailed": "Failed to revoke invite", - "tokensRedeemSuccess": "Invite redeemed. Server: {server}", - "tokensRedeemFailed": "Failed to redeem invite", - "tokensConnectServerFailed": "Failed to connect server", - "tokensDisconnectServerFailed": "Failed to disconnect server", - "tokensAmount": "Amount", - "tokensSending": "Sending...", - "tokensFrom": "From", - "tokensTo": "To", - "tokensReason": "Reason", - "tokensDate": "Date", - "tokensSent": "Sent", - "tokensReceived": "Received", - "tokensCreatingInvite": "Creating...", - "tokensCreateInvite": "Create Invite", - "tokensInviteCreated": "Invite code created", - "tokensRedeeming": "Redeeming...", - "tokensRedeem": "Redeem", - "tokensInviteUses": "{used}/{max} uses", - "tokensRevoked": "REVOKED", - "tokensRevoke": "Revoke", - "tokensConnecting": "Connecting...", - "tokensConnectServer": "Connect Server", - "tokensNoServersConnected": "No servers connected. Connect to a community server to share leaderboards.", + "tokensTransferSuccess": "Transferencia realizada correctamente ({idempotencyKey})", + "tokensTransferFailed": "Error en la transferencia", + "tokensCreateInviteFailed": "No se pudo crear la invitación", + "tokensRevokeInviteFailed": "No se pudo revocar la invitación", + "tokensRedeemSuccess": "Invitación canjeada. Servidor: {server}", + "tokensRedeemFailed": "No se pudo canjear la invitación", + "tokensConnectServerFailed": "No se pudo conectar al servidor", + "tokensDisconnectServerFailed": "No se pudo desconectar del servidor", + "tokensAmount": "Cantidad", + "tokensSending": "Enviando...", + "tokensFrom": "De", + "tokensTo": "Para", + "tokensReason": "Motivo", + "tokensDate": "Fecha", + "tokensSent": "Enviado", + "tokensReceived": "Recibido", + "tokensCreatingInvite": "Creando...", + "tokensCreateInvite": "Crear invitación", + "tokensInviteCreated": "Código de invitación creado", + "tokensRedeeming": "Canjeando...", + "tokensRedeem": "Canjear", + "tokensInviteUses": "{used}/{max} usos", + "tokensRevoked": "REVOCADA", + "tokensRevoke": "Revocar", + "tokensConnecting": "Conectando...", + "tokensConnectServer": "Conectar servidor", + "tokensNoServersConnected": "No hay servidores conectados. Conéctate a un servidor comunitario para compartir tablas de clasificación.", "tokensServerStatus": { - "connected": "Connected", - "disconnected": "Disconnected", - "pending": "Pending", - "syncing": "Syncing", + "connected": "Conectado", + "disconnected": "Desconectado", + "pending": "Pendiente", + "syncing": "Sincronizando", "error": "Error" }, - "tokensLastSync": "Last sync: {date}", - "tokensDisconnect": "Disconnect", + "tokensLastSync": "Última sincronización: {date}", + "tokensDisconnect": "Desconectar", "tierCoverageTitle": "Cobertura de nivel", "tierCoverageSubtitle": "Proveedores configurados por nivel alternativo", "batchDetailCopyId": "Copiar identificación", @@ -781,179 +781,179 @@ "batchFileDetailCopyId": "Copiar identificación", "batchFileDetailClose": "Cerrar", "batchFileDetailFailedToLoad": "No se pudo cargar el contenido del archivo", - "batchFileDetailLoadError": "Error loading file contents", + "batchFileDetailLoadError": "Error al cargar el contenido del archivo", "batchFilesListSearchPlaceholder": "Buscar por ID o nombre de archivo...", "batchFilesListFilesTable": "Archivos", - "batchFilesCount": "{count, plural, one {# file} other {# files}}", - "batchFilesAllPurposes": "All purposes", - "batchFilesFilename": "Filename", - "batchFilesPurpose": "Purpose", - "batchFilesExpires": "Expires", - "batchFilesNoneFound": "No files found", - "batchFilesNeverExpires": "Never", - "batchFileInUseByActiveBatch": "File in use by an active batch", + "batchFilesCount": "{count, plural, one {# archivo} other {# archivos}}", + "batchFilesAllPurposes": "Todos los usos", + "batchFilesFilename": "Nombre del archivo", + "batchFilesPurpose": "Uso", + "batchFilesExpires": "Caduca", + "batchFilesNoneFound": "No se encontraron archivos", + "batchFilesNeverExpires": "Nunca", + "batchFileInUseByActiveBatch": "Archivo utilizado por un lote activo", "batchFilePurpose": { - "batch": "Batch input", - "batch-output": "Batch output", - "fine-tune": "Fine-tuning", - "assistants": "Assistants" + "batch": "Entrada del lote", + "batch-output": "Salida del lote", + "fine-tune": "Ajuste fino", + "assistants": "Asistentes" }, "batchPageLoadingMore": "Cargando más…", "recommended": "Recomendado", - "understand": "I understand", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "understand": "Entiendo", + "batchConceptTitle": "Procesamiento por lotes", + "batchConceptSubtitle": "Procesa miles de solicitudes de forma asíncrona por aproximadamente el 50 % del coste (plazo de 24 h). Ideal para evaluaciones, clasificación e incrustaciones.", + "batchConceptHowItWorks": "Cómo funciona", + "batchConceptBenefit50pct": "50 % de descuento en tokens de entrada y salida", + "batchConceptAsync24h": "Procesamiento asíncrono con un plazo de finalización de 24 h", + "batchConceptUseCases": "Ideal para clasificación masiva, evaluaciones e incrustaciones", + "batchHeaderSubtitle": "Ejecuta muchas solicitudes como un solo trabajo", + "batchStep1": "1 · Subir JSONL", + "batchStep1Desc": "Añadir solicitudes", + "batchStep2": "2 · Crear lote", + "batchStep2Desc": "Ejecutar trabajo", + "batchStep3": "3 · Obtener resultados", + "batchStep3Desc": "Descargar salida", + "filesConceptTitle": "Archivos de lotes", + "filesConceptSubtitle": "Archivos JSONL utilizados por los lotes: solicitudes de entrada, resultados y errores.", + "filesConceptInput": "Entrada — tu JSONL con una solicitud por línea", + "filesConceptOutput": "Salida — resultados de las solicitudes completadas", + "filesConceptError": "Errores — solicitudes que fallaron", + "filesConceptRetention": "Retención: 30 días de forma predeterminada (29 días en Anthropic)", + "wizardTitle": "Nuevo lote", + "wizardClose": "Cerrar", + "wizardNext": "Siguiente", + "wizardBack": "Atrás", + "wizardCancel": "Cancelar", + "wizardCreate": "Crear lote", + "wizardCreating": "Creando…", + "wizardStep1Destination": "Destino", + "wizardStep2Input": "Entrada", + "wizardStep3Validate": "Validar", + "wizardStep4Cost": "Coste y creación", + "wizardProviderLabel": "Proveedor", + "wizardEndpointLabel": "Punto de conexión", + "wizardModelLabel": "Modelo", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", - "wizardCsvNoColumns": "No columns detected in CSV header.", - "wizardCsvIgnoreColumn": "— ignore —", - "wizardCsvCustomIdMapped": "custom_id mapped", - "wizardCsvContentMapped": "Content field mapped (messages, input, or prompt)", - "wizardCsvApplyMapping": "Apply mapping", - "wizardCsvRowsParsed": "{count} rows parsed", - "wizardCsvRowsSkipped": "{count} rows skipped", - "wizardCsvRowError": "Row {row}: {reason}", - "wizardValidationOk": "All lines valid", - "wizardValidating": "Validating…", - "wizardValidationParseFailed": "Validation failed — could not parse content.", - "wizardValidationSummary": "{lines} lines · {ids} unique custom_ids", - "wizardValidationErrorCount": "{count, plural, one {# error} other {# errors}} found", - "wizardValidationDuplicateIds": "Duplicate custom_ids detected:", - "wizardValidationFirstErrors": "Errors (first {count}):", - "wizardValidationLine": "Line {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", + "wizardInputKindCsv": "CSV (lo convertiremos)", + "wizardDropOrPick": "Suelta un archivo o haz clic para seleccionarlo", + "wizardCsvMappingTitle": "Asignar columnas CSV → campos de solicitud", + "wizardCsvMappingAddField": "Añadir campo", + "wizardCsvNoColumns": "No se detectaron columnas en el encabezado CSV.", + "wizardCsvIgnoreColumn": "— ignorar —", + "wizardCsvCustomIdMapped": "custom_id asignado", + "wizardCsvContentMapped": "Campo de contenido asignado (messages, input o prompt)", + "wizardCsvApplyMapping": "Aplicar asignación", + "wizardCsvRowsParsed": "{count} filas procesadas", + "wizardCsvRowsSkipped": "{count} filas omitidas", + "wizardCsvRowError": "Fila {row}: {reason}", + "wizardValidationOk": "Todas las líneas son válidas", + "wizardValidating": "Validando…", + "wizardValidationParseFailed": "Error de validación: no se pudo analizar el contenido.", + "wizardValidationSummary": "{lines} líneas · {ids} custom_ids únicos", + "wizardValidationErrorCount": "Se {count, plural, one {encontró # error} other {encontraron # errores}}", + "wizardValidationDuplicateIds": "Se detectaron custom_ids duplicados:", + "wizardValidationFirstErrors": "Errores (primeros {count}):", + "wizardValidationLine": "Línea {line}", + "wizardValidationErrors": "Errores de validación", + "wizardValidationPreview": "Vista previa (primeras 5 solicitudes)", + "wizardValidationSamplingNote": "El archivo es grande; se ha validado mediante muestreo (las primeras 1000 líneas y las últimas 100). La validación completa se ejecuta en el servidor.", + "wizardCostSync": "Sincronizar coste", + "wizardCostBatch": "Coste por lotes (-50 %)", + "wizardCostSavings": "Ahorro", + "wizardCostEstimatedNotice": "Coste estimado — la facturación real puede variar.", + "wizardErrorUpload": "No se pudo subir el archivo. Inténtalo de nuevo.", + "wizardErrorCreate": "No se pudo crear el lote. Inténtalo de nuevo.", + "wizardEmptyProviders": "Conecta un proveedor compatible con lotes (OpenAI, Anthropic o Gemini) para crear un lote.", + "uploadModalTitle": "Subir archivo por lotes", + "uploadModalDropOrPick": "Suelta un archivo .jsonl o haz clic para seleccionarlo", + "uploadModalUpload": "Subir", + "uploadModalCancel": "Cancelar", + "uploadModalError": "Error al subir. Inténtalo de nuevo.", + "uploadModalSuccess": "Subido", + "uploadModalSizeLimit": "Máx. 512 MB", + "batchListNewButton": "Nuevo lote", + "batchListAutoRefresh": "Actualización automática cada 30 s", + "batchListCostColumn": "Coste", + "batchActionCancel": "Cancelar", + "batchActionDownloadOutput": "Descargar resultados", + "batchActionDownloadErrors": "Descargar errores", + "batchActionRetry": "Reintentar fallidos", + "batchActionRetryConfirm": "¿Reintentar {n} solicitud(es) fallida(s)? El coste final depende de los tokens consumidos realmente.", + "expirationBadgeCritical": "Crítico", + "expirationBadgeWarning": "Próximamente", + "expirationBadgeNormal": "Pendiente", + "expirationBadgeExpired": "Caducado", + "filesListUploadButton": "Subir", + "filesListUsedByColumn": "Utilizado por", + "filesListUsedByNone": "Ninguno", + "filesListUsedByRoleInput": "entrada", + "filesListUsedByRoleOutput": "salida", "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "filesListSizeColumn": "Tamaño", + "batchListProgressPartial": "(parcial)", + "batchListProviderColumn": "Proveedor", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "Otro", + "batchListTitle": "Lotes", + "batchListCount": "{count} lotes", + "batchListRemovingCompleted": "Eliminando…", + "batchListRemoveCompleted": "Eliminar completados", + "batchListTableStatus": "Estado", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "Punto de conexión", + "batchListTableModel": "Modelo", + "batchListTableProgress": "Progreso", + "batchListTableCreated": "Creado", + "batchListTableExpires": "Caduca", + "batchListLoading": "Cargando…", + "batchListEmpty": "No se encontraron lotes", + "batchListValidating": "Validando…", + "batchStatusAll": "Todos los estados", + "batchStatusInProgress": "En curso", + "batchStatusValidating": "Validando", + "batchStatusFinalizing": "Finalizando", + "batchStatusCompleted": "Completado", + "batchStatusFailed": "Fallido", + "batchStatusCancelled": "Cancelado", + "batchStatusCancelling": "Cancelando", + "batchStatusExpired": "Caducado", + "batchStatusCompletedWithFailures": "completado con errores", + "batchStatusInProgressWithFailures": "en curso (con errores)", + "batchStatusFinalizingWithFailures": "finalizando (con errores)", + "batchStatusCancelledWithFailures": "cancelado con errores", + "batchStatusExpiredWithFailures": "caducado (parcial)", + "wizardCostEstimating": "Calculando el coste…", + "wizardCostRequests": "Solicitudes", + "wizardCostInputTok": "tokens de entrada", + "wizardCostOutputTok": "tokens de salida", + "wizardCostWindow": "Ventana", + "wizardDestinationSelectProvider": "Selecciona un proveedor…", + "wizardDestinationSelectModel": "Selecciona un modelo…", + "wizardDestinationConnectProvider": "Conecta un proveedor", + "batchListBatchCreated": "Lote {id} creado — actualizando la lista…", + "batchListBatchCreatedDismiss": "Descartar", + "batchListRefreshing": "Actualizando…", + "batchListRefresh": "Actualizar", + "uploadFileModalRemove": "Eliminar", + "uploadFileModalUploading": "Subiendo…", + "wizardInputReading": "Leyendo archivo…", + "wizardInputReady": "Listo", + "wizardInputLargeFileLabel": "Archivo grande — validación por muestreo", + "wizardInputCsvJsonlReady": "JSONL generado — listo para validar.", + "wizardInputLargeFileWarning": "Se ha detectado un archivo grande — la validación se realiza mediante muestreo (primeros 5 MB + últimos 100 KB). La validación completa se realiza en el servidor.", + "wizardCostWindow24h": "Plazo de finalización de 24 h", + "wizardValidationFieldsOk": "campos obligatorios válidos", + "filesListDelete": "Eliminar", + "filesListDownload": "Descargar", + "batchDetailActionCancel": "Cancelar lote", + "batchDetailActionRetry": "Reintentar solicitudes fallidas", + "batchDetailCancelling": "Cancelando…", + "batchDetailRetrying": "Preparando reintento…", + "batchDetailCancelConfirm": "¿Cancelar este lote? Las solicitudes en curso se detendrán.", + "batchActionCancelError": "No se pudo cancelar el lote. Inténtalo de nuevo.", + "batchActionRetryError": "No se pudieron reintentar las solicitudes fallidas. Inténtalo de nuevo.", + "batchConceptRetentionNote": "Los archivos de resultados y errores se conservan durante 30 días (Anthropic: 29 días)", "batchFilesSizeColumn": "Tamaño", "toggleNoAuthProvider": "Alternar proveedor sin autenticación", "loadingModels": "Cargando modelos…", @@ -985,22 +985,22 @@ "batchFilePreviewTruncated": "Mostrando las primeras {shown} líneas ({total} líneas en total)", "batchFileDownloadFull": "Descargar Archivo Completo" }, - "disabled": "Disabled", - "featureFlagOmnirouteEmergencyFallbackDescription": "Route budget-exhausted requests to the emergency free fallback provider/model.", - "featureFlagArenaEloSyncEnabledDescription": "Enable periodic Arena AI leaderboard ELO sync for model intelligence rankings.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "disabled": "Deshabilitado", + "featureFlagOmnirouteEmergencyFallbackDescription": "Enrutar las solicitudes con el presupuesto agotado al proveedor/modelo alternativo gratuito de emergencia.", + "featureFlagArenaEloSyncEnabledDescription": "Habilitar la sincronización periódica del ELO de la clasificación de Arena AI para los rankings de inteligencia de modelos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Generar e insertar resúmenes de conversaciones cuando el enrutamiento combinado cambie de modelo. Deshabilítalo para tratar los cambios de modelo de forma independiente y evitar solicitudes de transferencia en segundo plano para todas las combinaciones actuales y futuras.", "featureFlagExposeCcDiscoveryAliasesDescription": "Anunciar los ids de espejo claude/<provider>/<model> en /v1/models para que la lista de descubrimiento de modelos del gateway de Claude Code incluya modelos que no son de Claude. Advertencia: duplica las entradas del catálogo para todos los clientes cuando se habilita globalmente.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Interruptor principal para los alias de puerta de enlace no-think/<provider>/<model>. Activado (valor predeterminado): /v1/models anuncia una variante sin razonamiento para cada modelo Claude compatible con razonamiento que cumpla los requisitos, y un id no-think/ enviado en una solicitud se resuelve al modelo real con el razonamiento suprimido. Desactivado: no se anuncia ninguna variante y un id no-think/ se trata como cualquier otro id de modelo desconocido. La opción de inclusión/exclusión por modelo ModelSpec.noThinkingAlias sigue aplicándose mientras esté activado.", "featureFlagChatVirtualLanesEnabledDescription": "Activa carriles de admisión virtuales adaptativos por tenant para el envío de proveedores (#9654): el pico de un tenant ya no devuelve 503 a otro. La variable de entorno OMNIROUTE_CHAT_VIRTUAL_LANES tiene prioridad sobre esta opción del panel; los cambios surten efecto al reiniciar el servidor.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Páginas de proveedores del panel: muestra la insignia Gratis solo cuando haya indicios de que el proveedor la admite; descarta la heurística basada en el nombre para mostrar, los campos free no booleanos y los sufijos :free en proveedores registrados sin un nivel gratuito documentado. Desactivado mantiene la regla histórica de la insignia.", + "featureFlagProxySkipRecentlyFailedDescription": "Los grupos de proxies y la rotación por cuenta de opencode dejan de reutilizar temporalmente un proxy que acaba de fallar (sondeo TCP rechazado o un 429 recibido a través de él) durante un período por proceso que se duplica con cada repetición, hasta alcanzar un límite. No se registra ningún estado del proxy; si se apartan todos los candidatos, la elección no cambia. Desactivado de forma predeterminada: el orden de selección coincide exactamente con la rotación normal.", + "featureFlagProxyPoolEgressObservationDescription": "Mostrar, debajo de un grupo de proxies en el panel, cuántas IP de salida observadas utilizaron sus miembros durante las últimas 24 h, cuántas conexiones las usaron y el máximo observado detrás de una sola IP. Es de solo lectura, se calcula a partir del registro del proxy y nunca se utiliza para el enrutamiento. Desactivado de forma predeterminada: el editor de grupos no cambia y la ruta de observación devuelve null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "En la comprobación periódica del estado de los proxies, permitir que un sondeo rechazado por el destino (401/403/429: el proxy lo retransmitió, pero el destino rechazó esta IP de salida) reinicie la racha de fallos consecutivos del proxy, como un sondeo atendido. Desactivado de forma predeterminada: un rechazo sigue siendo neutral y mantiene la racha. Un 5xx sigue sin ser concluyente en ambos casos, y un rechazo nunca elimina, desactiva ni reactiva un proxy.", "sidebar": { "home": "Inicio", "dashboard": "Panel de control", "providers": "Proveedores", - "combos": "Combos", + "combos": "Combinaciones", "usage": "Uso", "analytics": "Analítica", "costs": "Costos", @@ -1011,18 +1011,18 @@ "media": "Multimedia", "settings": "Configuración", "translator": "Traductor", - "playground": "Playground", - "searchTools": "Search Tools", + "playground": "Entorno de pruebas", + "searchTools": "Herramientas de búsqueda", "agents": "Agentes", "cloudAgents": "Agentes de la nube", - "memory": "Memory", - "skills": "Skills", + "memory": "Memoria", + "skills": "Habilidades", "omniSkills": "OmniSkills", "agentSkills": "Habilidades del agente", - "chaosConfig": "Chaos Mode", + "chaosConfig": "Modo caos", "docs": "Documentación", "issues": "Problemas", - "endpoints": "Endpoints", + "endpoints": "Puntos de conexión", "endpointsSubtitle": "Las URL de su conexión de IA", "apiManager": "Gestor de API", "apiManagerSubtitle": "Administrar claves API y acceso", @@ -1069,236 +1069,236 @@ "cliToolsShort": "Herramientas", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "Trabajos por lotes", + "themeSystem": "Sistema de temas", + "whitelabelingDesc": "Descripción de marca blanca", + "switchThemes": "Cambiar temas", + "themeAccentDesc": "Descripción del color de acento del tema", + "uploadFavicon": "Subir favicon", + "themeDark": "Tema oscuro", + "customLogoDesc": "Descripción del logotipo personalizado", + "sidebarVisibilityToggle": "Alternar visibilidad de la barra lateral", + "themeAccent": "Color de acento del tema", + "resetFavicon": "Restablecer favicon", + "whitelabeling": "Marca blanca", + "darkMode": "Modo oscuro", + "uploadLogo": "Subir logotipo", + "themeLight": "Tema claro", + "appName": "Nombre de la aplicación", + "appNameDesc": "Descripción del nombre de la aplicación", + "resetLogo": "Restablecer logotipo", + "customFavicon": "Favicon personalizado", + "hideHealthLogs": "Ocultar registros de estado", + "customLogo": "Logotipo personalizado", + "appearance": "Apariencia", + "themeSelectionAria": "ARIA de selección de tema", + "themeCreate": "Crear tema", + "customFaviconDesc": "Descripción del favicon personalizado", + "logoPreview": "Vista previa del logotipo", + "themeCustom": "Tema personalizado", + "hideHealthLogsDesc": "Descripción de ocultar registros de estado", + "faviconPreview": "Vista previa del favicon", + "changelog": "Registro de cambios", + "contextSection": "Contexto y caché", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Combinaciones de motores", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Configuración de compresión", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", - "combosLiveSubtitle": "Live routing cascade", + "combosLive": "Estudio de combinaciones", + "combosLiveSubtitle": "Cascada de enrutamiento en tiempo real", "compressionStudio": "Compression Studio", - "compressionExclusions": "Exclusions", - "contextSettingsSubtitle": "Global defaults", - "contextHeadroomSubtitle": "Tabular compaction", - "contextSessionDedupSubtitle": "Cross-turn deduplication", - "contextCcrSubtitle": "Retrieve markers", - "contextLlmlinguaSubtitle": "Semantic pruning", - "contextLiteSubtitle": "Fast whitespace cleanup", - "contextAggressiveSubtitle": "Summary and aging", - "contextUltraSubtitle": "Heuristic pruning", - "contextOmniglyphSubtitle": "Context as images", - "compressionStudioSubtitle": "Live engine cascade", - "compressionExclusionsSubtitle": "Per-model/endpoint bypass", - "chaosConfigSubtitle": "Multi-model parallel execution", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "compressionExclusions": "Exclusiones", + "contextSettingsSubtitle": "Valores predeterminados globales", + "contextHeadroomSubtitle": "Compactación tabular", + "contextSessionDedupSubtitle": "Deduplicación entre turnos", + "contextCcrSubtitle": "Recuperar marcadores", + "contextLlmlinguaSubtitle": "Poda semántica", + "contextLiteSubtitle": "Limpieza rápida de espacios en blanco", + "contextAggressiveSubtitle": "Resumen y envejecimiento", + "contextUltraSubtitle": "Poda heurística", + "contextOmniglyphSubtitle": "Contexto como imágenes", + "compressionStudioSubtitle": "Cascada de motores en tiempo real", + "compressionExclusionsSubtitle": "Omisión por modelo/endpoint", + "chaosConfigSubtitle": "Ejecución paralela de varios modelos", + "routingSection": "Enrutamiento", + "protocolsSection": "Protocolos", + "agentsAiSection": "Agentes e IA", + "cacheContextSection": "Caché y contexto", + "analyticsSection": "Analítica", + "costsSection": "Costes", + "monitoringSection": "Monitorización", + "auditSecuritySection": "Auditoría y seguridad", + "devtoolsSection": "Herramientas de desarrollo", + "configurationSection": "Configuración", + "aiFeaturesSection": "Funciones de IA", "mcp": "MCP", "a2a": "A2A", - "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", - "costsFreeTiers": "Free-Tier Budget", - "costsFreeTiersSubtitle": "Monthly free-token allowances", - "freeProviderRankings": "Free Provider Rankings", - "freeProviderRankingsSubtitle": "Best free providers ranked by model ELO scores", + "plugins": "Complementos", + "apiEndpoints": "Endpoints de API", + "batchFiles": "Archivos", + "analyticsEvals": "Evaluaciones", + "analyticsSearch": "Búsqueda", + "analyticsUtilization": "Utilización", + "analyticsComboHealth": "Estado de las combinaciones", + "analyticsCompression": "Compresión", + "costsBudget": "Presupuesto", + "costsFreeTiers": "Presupuesto del nivel gratuito", + "costsFreeTiersSubtitle": "Asignaciones mensuales de tokens gratuitos", + "freeProviderRankings": "Clasificación de proveedores gratuitos", + "freeProviderRankingsSubtitle": "Mejores proveedores gratuitos clasificados por puntuaciones ELO de los modelos", "radar": "Catálogo de Radar", "radarSubtitle": "Catálogo de modelos gratuito enriquecido por la comunidad", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Uso compartido de cuotas", + "costsPricing": "Precios", + "logsProxy": "Registros del proxy", + "logsConsole": "Consola", + "logsActivity": "Actividad", + "auditMcp": "Auditoría de MCP", "auditA2a": "Auditoría A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", - "settingsAccessTokens": "Access Tokens", + "settingsAppearance": "Apariencia", + "settingsAi": "Configuración de IA", + "settingsSecurity": "Seguridad", + "settingsAccessTokens": "Tokens de acceso", "settingsFeatureFlags": "Banderas de características", - "settingsCache": "Cache", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", - "modelLockout": "Model Lockout", - "settingsAdvanced": "Advanced", + "settingsCache": "Caché", + "settingsAuthz": "Autorización", + "settingsRouting": "Enrutamiento", + "settingsResilience": "Resiliencia", + "modelLockout": "Bloqueo de modelos", + "settingsAdvanced": "Avanzado", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Cuota del proveedor", + "providerQuota": "Cuota del proveedor", + "runtime": "Entorno de ejecución", + "consoleLogs": "Registros de la consola", + "logsTimeline": "Cronología", "logsTimelineSubtitle": "Línea de tiempo de solicitudes visuales", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Conversaciones", + "conversationsSubtitle": "Conversaciones agénticas multitur­no", + "globalRouting": "Enrutamiento global", + "mitmProxy": "Proxy MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Funciones agénticas", + "otherFeaturesSection": "Otras funciones", + "compressionContextGroup": "Compresión de contexto", + "gamificationGroup": "Gamificación", + "toolsGroup": "Herramientas", + "integrationsGroup": "Integraciones", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", + "costsParametersGroup": "Parámetros de costes", + "auditGroup": "Auditoría", + "batchGroup": "Procesamiento por lotes", + "homeSubtitle": "Resumen del panel", + "providersSubtitle": "Gestionar proveedores de IA", + "quotaTrackerSubtitle": "Supervisar los límites de uso", + "providerQuotaSubtitle": "Supervisar los límites de uso de los proveedores", + "runtimeSubtitle": "Resiliencia y sesiones en tiempo real", + "contextCombosSubtitle": "Combinar motores de compresión", + "cliToolsSubtitle": "Configurar entornos de ejecución de CLI", + "agentsSubtitle": "Gestionar agentes locales", + "cloudAgentsSubtitle": "Gestionar agentes en la nube", + "apiEndpointsSubtitle": "Exponer endpoints personalizados", + "proxySubtitle": "Configuración del proxy HTTP", + "mitmProxySubtitle": "Intercepción MITM", + "oneProxySubtitle": "Puerta de enlace de proxy público", + "leaderboard": "Clasificación", + "profile": "Perfil", "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", - "providerStats": "Provider Stats", - "providerStatsSubtitle": "Latency and performance metrics", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", - "pluginsSubtitle": "Plugin marketplace & installs", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "gamificationAdmin": "Administración de gamificación", + "leaderboardSubtitle": "Clasificaciones y logros", + "profileSubtitle": "Cuenta y preferencias", + "tokensSubtitle": "Uso de tokens y presupuestos", + "gamificationAdminSubtitle": "Supervisión de anomalías y prevención de trampas", + "usageSubtitle": "Estadísticas de tráfico y uso", + "analyticsComboHealthSubtitle": "Fiabilidad del objetivo combinado", + "analyticsUtilizationSubtitle": "Utilización de proveedores", + "costsSubtitle": "Desglose de gastos", + "cacheSubtitle": "Tasas de aciertos de caché", + "analyticsCompressionSubtitle": "Estadísticas de ahorro de tokens", + "analyticsSearchSubtitle": "Analítica de la herramienta de búsqueda", + "analyticsEvalsSubtitle": "Resultados del conjunto de evaluaciones", + "providerStats": "Estadísticas de proveedores", + "providerStatsSubtitle": "Métricas de latencia y rendimiento", + "logsSubtitle": "Registros de la aplicación", + "logsProxySubtitle": "Registros de tráfico del proxy", + "consoleLogsSubtitle": "Salida de la consola", + "logsActivitySubtitle": "Registro de actividad del usuario", + "healthSubtitle": "Comprobación del estado del sistema", + "costsPricingSubtitle": "Reglas de precios por modelo", + "costsBudgetSubtitle": "Límites presupuestarios", + "costsQuotaShareSubtitle": "Compartir las cuotas de los proveedores entre claves", + "auditLogSubtitle": "Auditoría de autorización", + "auditMcpSubtitle": "Auditoría del servidor MCP", + "auditA2aSubtitle": "Auditoría del protocolo A2A", + "translatorSubtitle": "Conversión de formato", + "playgroundSubtitle": "Probar prompts en vivo", + "searchToolsSubtitle": "Registro de herramientas de búsqueda", + "memorySubtitle": "Memoria persistente del agente", + "omniSkillsSubtitle": "Registro de habilidades de sandbox", + "agentSkillsSubtitle": "Registro de habilidades A2A", + "mcpSubtitle": "Controles del servidor MCP", + "a2aSubtitle": "Servidor del protocolo A2A", + "pluginsSubtitle": "Marketplace e instalaciones de plugins", + "mediaSubtitle": "Archivos multimedia en caché", + "batchFilesSubtitle": "Archivos de entrada/salida por lotes", + "settingsSubtitle": "Todos los ajustes", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", - "settingsAccessTokensSubtitle": "Scoped CLI tokens for remote mode", + "settingsAppearanceSubtitle": "Tema y diseño", + "settingsAiSubtitle": "Valores predeterminados del comportamiento de la IA", + "globalRoutingSubtitle": "Reglas globales de enrutamiento", + "settingsResilienceSubtitle": "Reintentos y disyuntores", + "settingsAdvancedSubtitle": "Opciones para usuarios avanzados", + "settingsSecuritySubtitle": "Autenticación y cifrado", + "settingsAccessTokensSubtitle": "Tokens de CLI con alcance limitado para el modo remoto", "settingsFeatureFlagsSubtitle": "Alternar capacidades del sistema", - "settingsCacheSubtitle": "Model catalog and response caching", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsCacheSubtitle": "Catálogo de modelos y almacenamiento en caché de respuestas", + "settingsSidebar": "Barra lateral", + "settingsSidebarSubtitle": "Personalizar el diseño de la barra lateral", "settingsAuthzSubtitle": "Inventario de rutas y política de omisión", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", - "costsQuotaPlans": "Plans & Quotas", - "costsQuotaPlansSubtitle": "Configure plans by provider", - "activity": "Activity", - "activitySubtitle": "Friendly feed of recent events", - "logsGroup": "Logs", - "systemGroup": "System", - "costsOverview": "Overview", - "costsOverviewSubtitle": "Consolidated cost analysis", - "agentBridge": "Agent Bridge", - "agentBridgeSubtitle": "Intercept IDE agent traffic", + "docsSubtitle": "Documentación", + "issuesSubtitle": "Informar de un error", + "changelogSubtitle": "Notas de la versión", + "costsQuotaPlans": "Planes y cuotas", + "costsQuotaPlansSubtitle": "Configurar planes por proveedor", + "activity": "Actividad", + "activitySubtitle": "Resumen accesible de eventos recientes", + "logsGroup": "Registros", + "systemGroup": "Sistema", + "costsOverview": "Vista general", + "costsOverviewSubtitle": "Análisis consolidado de costes", + "agentBridge": "Puente de agentes", + "agentBridgeSubtitle": "Interceptar el tráfico de agentes del IDE", "trafficInspector": "Traffic Inspector", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Inspeccionar el tráfico de solicitudes y respuestas de tus aplicaciones", + "trafficInspectorPurpose": "Consulta exactamente qué envía tu aplicación a los proveedores de IA y qué recibe de ellos. Funciona con cualquier cliente compatible con OpenAI.", "cliCode": "CLI Code", - "cliCodeSubtitle": "Code tools pointing to OmniRoute", - "cliAgents": "CLI Agents", - "cliAgentsSubtitle": "Autonomous CLI agents", - "acpAgents": "ACP Agents", - "acpAgentsSubtitle": "CLIs spawned by OmniRoute", - "skipToContent": "Skip to content", - "mainNavigation": "Main navigation", - "unpinSection": "Unpin section", - "pinSectionOpen": "Pin section open", - "reloadPage": "Reload Page", - "dragReorderSection": "Drag to reorder section", - "dragReorderItem": "Drag to reorder", - "cannotHide": "This item cannot be hidden", - "alwaysVisible": "Always visible", - "groupSeparatorLabel": "Separator", - "discovery": "Discovery", - "discoverySubtitle": "Scan providers for free access", - "conductor": "Conductor", + "cliCodeSubtitle": "Herramientas de código que apuntan a OmniRoute", + "cliAgents": "Agentes CLI", + "cliAgentsSubtitle": "Agentes CLI autónomos", + "acpAgents": "Agentes ACP", + "acpAgentsSubtitle": "CLI iniciadas por OmniRoute", + "skipToContent": "Saltar al contenido", + "mainNavigation": "Navegación principal", + "unpinSection": "Desfijar sección", + "pinSectionOpen": "Mantener abierta la sección", + "reloadPage": "Recargar página", + "dragReorderSection": "Arrastra para reordenar la sección", + "dragReorderItem": "Arrastra para reordenar", + "cannotHide": "Este elemento no se puede ocultar", + "alwaysVisible": "Siempre visible", + "groupSeparatorLabel": "Separador", + "discovery": "Descubrimiento", + "discoverySubtitle": "Buscar acceso gratuito en los proveedores", + "conductor": "Orquestador", "conductorSubtitle": "Flota de CLI-agent", "orchestration": "Orquestación", "orchestrationSubtitle": "Vista en vivo de todo lo que se está ejecutando", @@ -1345,7 +1345,7 @@ "refresh": "Actualizar", "loading": "Cargando webhooks...", "never": "nunca", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {ningún fallo} one {# fallo} other {# fallos}}", "testWebhook": "Enviar prueba", "testSuccess": "El webhook de prueba se envió correctamente.", "testFailed": "El webhook de prueba falló.", @@ -1388,66 +1388,66 @@ "hmacRecipeBash": "Verificación HMAC en Bash: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" }, "deliveries": { - "title": "Delivery Logs", - "loadFailed": "Failed to load webhook delivery logs.", - "empty": "No deliveries recorded yet. Trigger an event or send a test payload.", - "status": "Status", - "event": "Event", - "latency": "Latency", - "at": "Sent At" + "title": "Registros de entregas", + "loadFailed": "No se pudieron cargar los registros de entregas de webhooks.", + "empty": "Aún no se ha registrado ninguna entrega. Activa un evento o envía una carga útil de prueba.", + "status": "Estado", + "event": "Evento", + "latency": "Latencia", + "at": "Enviado el" }, "kinds": { - "comingSoon": "Coming Soon", + "comingSoon": "Próximamente", "slack": "Slack", - "slackDesc": "Post system events directly into a Slack channel", + "slackDesc": "Publica eventos del sistema directamente en un canal de Slack", "telegram": "Telegram", - "telegramDesc": "Send event messages using a Telegram bot", + "telegramDesc": "Envía mensajes de eventos mediante un bot de Telegram", "discord": "Discord", - "discordDesc": "Deliver real-time updates directly to a Discord server", - "custom": "Custom Webhook", - "customDesc": "Deliver system event payloads to any HTTPS endpoint", - "email": "Email Notification", - "emailDesc": "Receive summary updates via email", + "discordDesc": "Envía actualizaciones en tiempo real directamente a un servidor de Discord", + "custom": "Webhook personalizado", + "customDesc": "Envía cargas útiles de eventos del sistema a cualquier endpoint HTTPS", + "email": "Notificación por correo electrónico", + "emailDesc": "Recibe resúmenes de las actualizaciones por correo electrónico", "pagerduty": "PagerDuty", - "pagerdutyDesc": "Trigger alerts on PagerDuty for critical system issues", + "pagerdutyDesc": "Activa alertas en PagerDuty para problemas críticos del sistema", "teams": "Microsoft Teams", - "teamsDesc": "Forward system notifications to Microsoft Teams channels" + "teamsDesc": "Reenvía las notificaciones del sistema a canales de Microsoft Teams" }, "testPayloadSent": "Prueba enviada", "testResponse": "Respuesta de prueba", "validateUrl": { - "checking": "Checking URL...", - "ok": "URL is valid", - "blockedPrivate": "URL is a blocked private address", - "invalidUrl": "Invalid URL format" + "checking": "Comprobando la URL...", + "ok": "La URL es válida", + "blockedPrivate": "La URL corresponde a una dirección privada bloqueada", + "invalidUrl": "Formato de URL no válido" }, "custom": { - "endpointUrl": "Endpoint URL", + "endpointUrl": "URL del endpoint", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", - "secretKey": "Secret Key", - "secretKeyPlaceholder": "Enter secret key or leave blank to auto-generate", - "secretKeyHint": "Used to sign the payload header for authentication." + "secretKey": "Clave secreta", + "secretKeyPlaceholder": "Introduce una clave secreta o déjalo en blanco para generarla automáticamente", + "secretKeyHint": "Se utiliza para firmar el encabezado de la carga útil para la autenticación." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "URL del webhook de Discord", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", - "webhookUrlHint": "The webhook URL copied from your Discord channel integration settings.", - "tutorial": "How to create a Discord webhook:" + "webhookUrlHint": "La URL del webhook copiada de la configuración de integración de tu canal de Discord.", + "tutorial": "Cómo crear un webhook de Discord:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "URL del webhook de Slack", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", - "webhookUrlHint": "The webhook URL copied from your Slack Incoming Webhooks integration.", - "tutorial": "How to create a Slack webhook:" + "webhookUrlHint": "La URL del webhook copiada de tu integración de Slack Incoming Webhooks.", + "tutorial": "Cómo crear un webhook de Slack:" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "Token del bot de Telegram", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", - "botTokenHint": "The HTTP API token received from @BotFather when creating your bot.", - "chatId": "Telegram Chat ID / Channel", - "chatIdPlaceholder": "-100123456789 or @channelname", - "chatIdHint": "The unique numerical identifier or public username of the chat/channel.", - "tutorial": "How to configure Telegram webhook:" + "botTokenHint": "El token de la API HTTP recibido de @BotFather al crear tu bot.", + "chatId": "ID del chat/canal de Telegram", + "chatIdPlaceholder": "-100123456789 o @channelname", + "chatIdHint": "El identificador numérico único o nombre de usuario público del chat/canal.", + "tutorial": "Cómo configurar el webhook de Telegram:" } }, "compliance": { @@ -1518,7 +1518,7 @@ "a2aNoTasks": "No se registraron tareas A2A.", "a2aLoadingTasks": "Cargando tareas A2A...", "actor": "Actor", - "actorPlaceholder": "Filter by actor", + "actorPlaceholder": "Filtrar por actor", "eventTypes": { "apiKey.activate": "Clave de API activada", "apiKey.ban": "Clave de API bloqueada", @@ -1573,15 +1573,15 @@ }, "header": { "logout": "Cerrar sesión", - "quickNavigation": "Quick nav", - "quickNavigationTitle": "Quick navigation (⌘K / Ctrl+K)", - "openQuickNavigation": "Open quick navigation", - "switchToLightMode": "Switch to light mode", - "switchToDarkMode": "Switch to dark mode", + "quickNavigation": "Navegación rápida", + "quickNavigationTitle": "Navegación rápida (⌘K / Ctrl+K)", + "openQuickNavigation": "Abrir la navegación rápida", + "switchToLightMode": "Cambiar al modo claro", + "switchToDarkMode": "Cambiar al modo oscuro", "language": "Idioma", "providers": "Proveedores", "providerDescription": "Gestiona tus conexiones de proveedores de IA", - "combos": "Combos", + "combos": "Combinaciones", "comboDescription": "Combinaciones de modelos con fallback", "usage": "Uso y análisis", "usageDescription": "Supervise el uso de su API, el consumo de tokens y los registros de solicitudes", @@ -1591,12 +1591,12 @@ "cliToolsDescription": "Configurar herramientas CLI", "home": "Inicio", "homeDescription": "Bienvenido a OmniRoute", - "endpoint": "Endpoints", + "endpoint": "Puntos de conexión", "endpointDescription": "Gestionar endpoints proxy, MCP, A2A y endpoints de API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Gestión y herramientas del servidor Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Tareas y observabilidad del protocolo Agent-to-Agent", "settings": "Configuración", "settingsDescription": "Gestiona tus preferencias", "openaiCompatible": "Compatible con OpenAI", @@ -1605,49 +1605,49 @@ "mediaDescription": "Genera imágenes, vídeos y música.", "themes": "Temas", "themesDescription": "Elija un tema de color para todo el panel del tablero", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "costsDescription": "Controla el gasto, analiza tendencias y gestiona tu presupuesto de IA en todos los proveedores", + "cacheDescription": "Supervisa la eficiencia de la caché de prompts del proveedor y la reutilización local de respuestas semánticas.", + "limitsDescription": "Configura límites de frecuencia y cuotas por clave de API y proveedor", + "runtimeDescription": "Observabilidad del entorno de ejecución en tiempo real: disyuntores, periodos de espera, bloqueos de modelos, sesiones y alertas de cuota", + "apiManagerDescription": "Gestiona las claves de API y el control de acceso de tu instancia de OmniRoute", + "batchDescription": "Procesa grandes volúmenes de solicitudes de forma asíncrona mediante llamadas a la API por lotes", + "contextCavemanDescription": "Compresión de mensajes basada en reglas, paquetes de idioma, analíticas y controles del modo de salida.", + "contextRtkDescription": "Compresión compatible con comandos para la salida de herramientas, los registros del terminal y los resultados de compilación.", + "contextCombosDescription": "Define cómo se combinan los motores para distintos escenarios de enrutamiento.", + "changelogDescription": "Mantente al día de las últimas funciones y novedades de la plataforma.", + "agentsDescription": "Gestiona y configura herramientas de agentes de IA: Codex, Devin, Jules y agentes personalizados", + "cloudAgentsDescription": "Orquesta agentes de IA basados en la nube con seguimiento de tareas en tiempo real y aprobación de planes", + "memoryDescription": "Memoria conversacional persistente con búsqueda semántica e indexación de texto completo FTS5", + "skillsDescription": "Instala y administra habilidades de sandbox para la ejecución automatizada de prompts y herramientas", + "agentSkillsDescription": "Catálogo de habilidades listo para agentes con copia de URL en un clic para la integración con clientes de IA", + "translatorDescription": "Traduce y prueba prompts entre formatos de API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Prueba prompts de forma interactiva con respuestas en tiempo real de los proveedores e inspección de formatos", + "searchToolsDescription": "Analíticas de búsqueda, desglose por proveedor, tasas de aciertos de caché y seguimiento de costes", + "logsDescription": "Registros de solicitudes en tiempo real, trazas de errores e inspector de eventos de streaming", + "auditDescription": "Registro de auditoría de cumplimiento sobre el uso de claves de API, llamadas a herramientas MCP y eventos de políticas", + "webhooksDescription": "Configura endpoints de webhook para recibir notificaciones de eventos en tiempo real", + "healthDescription": "Resumen del estado del sistema: proveedores, disyuntores, límites de velocidad y base de datos", + "proxyDescription": "Configura los ajustes del proxy ascendente para las conexiones salientes con proveedores", + "apiEndpointsDescription": "Administra configuraciones personalizadas de endpoints de API y anulaciones de enrutamiento", + "batchFilesDescription": "Explora y administra archivos de salida y resultados de trabajos por lotes", + "analyticsEvalsDescription": "Resultados de evaluación de modelos y pruebas comparativas de rendimiento", + "analyticsSearchDescription": "Analíticas de consultas de búsqueda, tasas de aciertos de caché y seguimiento de costes", + "analyticsUtilizationDescription": "Métricas de uso de proveedores y planificación de capacidad", + "analyticsComboHealthDescription": "Estado y rendimiento en tiempo real de las configuraciones de enrutamiento combinado", + "analyticsCompressionDescription": "Analíticas de compresión de contexto y ahorro de tokens", + "costsBudgetDescription": "Límites de presupuesto y alertas de gasto por clave de API y proveedor", + "costsPricingDescription": "Configuración personalizada de precios para calcular costes de tokens", + "logsProxyDescription": "Registros de solicitudes del proxy ascendente e inspección del tráfico", + "logsConsoleDescription": "Salida de la consola de la aplicación y registros de depuración", + "logsActivityDescription": "Registro de auditoría de acciones de usuarios y eventos del sistema", + "auditMcpDescription": "Registro de auditoría de invocaciones de herramientas MCP y registros de cumplimiento", "auditA2a": "Auditoría A2A", "auditA2aDescription": "Registro de auditoría de ejecución de tareas A2A, transiciones de estado y registros de invocación de habilidades", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", - "settingsCacheDescription": "TTL for model catalog cache entries", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsAppearanceDescription": "Tema, identidad de marca y personalización visual", + "settingsAiDescription": "Comportamientos de IA, presupuestos de razonamiento y ajustes de visión y memoria", + "settingsCacheDescription": "TTL de las entradas de caché del catálogo de modelos", + "settingsSecurityDescription": "Ajustes de autenticación, autorización y control de acceso", "featureFlags": "Banderas de características", "featureFlagsDescription": "Capacidades del sistema de control y características experimentales.", "featureFlagsActive": "{count} activo", @@ -1661,7 +1661,7 @@ "featureFlagsCategoryRuntime": "Tiempo de ejecución", "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "Salud", - "featureFlagsSourceDb": "DB", + "featureFlagsSourceDb": "BD", "featureFlagsSourceEnv": "ENV", "featureFlagsSourceDefault": "DEF", "featureFlagsReset": "Reiniciar", @@ -1671,116 +1671,116 @@ "featureFlagsNoResults": "Ninguna bandera coincide con tu búsqueda", "featureFlagsSaved": "Bandera actualizada", "featureFlagsError": "No se pudo actualizar la bandera", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", - "omniSkillsDescription": "Install and manage sandbox skills for automated prompt and tool execution" + "settingsRoutingDescription": "Reglas de enrutamiento, alias de modelos, valores predeterminados de combinaciones y ajustes de degradación", + "settingsResilienceDescription": "Configuración de disyuntores, reintentos y mecanismos de respaldo", + "settingsAdvancedDescription": "Reglas avanzadas de carga útil, límites de solicitudes y ajustes de la API del proxy", + "mitmProxyDescription": "Configura los ajustes del proxy MITM para inspeccionar y depurar el tráfico", + "oneProxyDescription": "Configura los ajustes de 1Proxy para el encadenamiento avanzado de proxies", + "omniSkillsDescription": "Instala y administra habilidades de sandbox para la ejecución automatizada de prompts y herramientas" }, "cloudSyncStatus": { - "synced": "Synced", - "syncing": "Syncing...", - "off": "Sync off", - "error": "Sync error", - "disabled": "Disabled", - "connected": "connected", - "disconnected": "disconnected", - "lastSync": "Remote settings sync {status} — Last sync: {time}", - "statusLabel": "Remote settings sync status: {status}" + "synced": "Sincronizado", + "syncing": "Sincronizando...", + "off": "Sincronización desactivada", + "error": "Error de sincronización", + "disabled": "Deshabilitado", + "connected": "conectado", + "disconnected": "desconectado", + "lastSync": "Sincronización de ajustes remotos: {status} — Última sincronización: {time}", + "statusLabel": "Estado de sincronización de ajustes remotos: {status}" }, "breadcrumbs": { - "ariaLabel": "Breadcrumb", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "settings": "Settings", + "ariaLabel": "Migas de pan", + "dashboard": "Panel de control", + "providers": "Proveedores", + "combos": "Combinaciones", + "settings": "Ajustes", "general": "General", - "appearance": "Appearance", - "ai": "AI Settings", - "routing": "Routing", - "resilience": "Resilience", - "advanced": "Advanced", - "accessTokens": "Access Tokens", - "featureFlags": "Feature Flags", - "logs": "Logs", - "auditLog": "Audit Log", - "console": "Console", - "logger": "Logger", - "translator": "Translator", - "playground": "Playground", - "add": "Add", - "edit": "Edit", - "apiKeys": "API Keys", - "models": "Models", - "cliCode": "CLI Code", - "cliAgents": "CLI Agents", - "acpAgents": "ACP Agents", - "endpoint": "Endpoint", - "apiManager": "API Manager", - "context": "Context", - "compression": "Compression", - "services": "Services", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", - "runtime": "Runtime", + "appearance": "Apariencia", + "ai": "Ajustes de IA", + "routing": "Enrutamiento", + "resilience": "Resiliencia", + "advanced": "Avanzado", + "accessTokens": "Tokens de acceso", + "featureFlags": "Indicadores de funciones", + "logs": "Registros", + "auditLog": "Registro de auditoría", + "console": "Consola", + "logger": "Registrador", + "translator": "Traductor", + "playground": "Entorno de pruebas", + "add": "Añadir", + "edit": "Editar", + "apiKeys": "Claves de API", + "models": "Modelos", + "cliCode": "Código de CLI", + "cliAgents": "Agentes de CLI", + "acpAgents": "Agentes de ACP", + "endpoint": "Punto de conexión", + "apiManager": "Gestor de API", + "context": "Contexto", + "compression": "Compresión", + "services": "Servicios", + "analytics": "Analítica", + "costs": "Costes", + "health": "Estado", + "runtime": "Tiempo de ejecución", "webhooks": "Webhooks", - "home": "Home", - "activity": "Activity", + "home": "Inicio", + "activity": "Actividad", "agentSkills": "AgentSkills", - "comboHealth": "Combo Health", - "evals": "Evals", - "search": "Search", - "utilization": "Utilization", - "apiEndpoints": "API Endpoints", - "audit": "Audit", + "comboHealth": "Estado combinado", + "evals": "Evaluaciones", + "search": "Búsqueda", + "utilization": "Utilización", + "apiEndpoints": "Endpoints de API", + "audit": "Auditoría", "a2a": "A2A", "mcp": "MCP", - "batch": "Batch", - "files": "Files", - "media": "Media", - "cache": "Cache", - "changelog": "Changelog", - "chaos": "Chaos", - "cloudAgents": "Cloud Agents", - "live": "Live", - "studio": "Studio", - "aggressive": "Aggressive", - "caveman": "Caveman", + "batch": "Lotes", + "files": "Archivos", + "media": "Medios", + "cache": "Caché", + "changelog": "Registro de cambios", + "chaos": "Caos", + "cloudAgents": "Agentes en la nube", + "live": "En vivo", + "studio": "Estudio", + "aggressive": "Agresivo", + "caveman": "Cavernícola", "ccr": "CCR", - "headroom": "Headroom", - "lite": "Lite", + "headroom": "Margen", + "lite": "Ligero", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", "rtk": "RTK", - "sessionDedup": "Session Dedup", + "sessionDedup": "Deduplicación de sesiones", "ultra": "Ultra", - "budget": "Budget", - "pricing": "Pricing", - "quotaShare": "Quota Share", - "discovery": "Discovery", - "freeProviderRankings": "Free Provider Rankings", + "budget": "Presupuesto", + "pricing": "Precios", + "quotaShare": "Reparto de cuota", + "discovery": "Descubrimiento", + "freeProviderRankings": "Clasificación de proveedores gratuitos", "radar": "Radar", - "setup": "Setup", - "freeTiers": "Free Tiers", - "gamification": "Gamification", - "leaderboard": "Leaderboard", - "limits": "Limits", - "profile": "Profile", - "plugins": "Plugins", - "providerStats": "Provider Stats", - "new": "New", - "quota": "Quota", - "relay": "Relay", - "searchTools": "Search Tools", - "security": "Security", - "sidebar": "Sidebar", + "setup": "Configuración", + "freeTiers": "Planes gratuitos", + "gamification": "Gamificación", + "leaderboard": "Clasificación", + "limits": "Límites", + "profile": "Perfil", + "plugins": "Complementos", + "providerStats": "Estadísticas de proveedores", + "new": "Nuevo", + "quota": "Cuota", + "relay": "Retransmisión", + "searchTools": "Buscar herramientas", + "security": "Seguridad", + "sidebar": "Barra lateral", "tokens": "Tokens", - "tools": "Tools", - "agentBridge": "Agent Bridge", - "trafficInspector": "Traffic Inspector", - "usage": "Usage", + "tools": "Herramientas", + "agentBridge": "Puente de agentes", + "trafficInspector": "Inspector de tráfico", + "usage": "Uso", "orchestration": "Orquestación" }, "home": { @@ -1816,7 +1816,7 @@ "topologyLegendError": "Error", "oauthLabel": "OAuth", "apiKeyLabel": "Clave API", - "requestsShort": "{count} reqs", + "requestsShort": "{count} solicitudes", "providerModelsTitle": "{provider} - Modelos", "copiedModel": "Copiado: {model}", "aliasLabel": "alias", @@ -1888,15 +1888,15 @@ "releaseNotes": "Notas de la versión", "readMore": "Leer Más", "noAuthLabel": "Sin Autenticación", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Prepárate para enrutar", + "readinessTitle": "Envía tu primera solicitud", + "readinessSubtitle": "Cuatro pequeños pasos. OmniRoute comprueba que todo esté listo a medida que avanzas.", + "readinessStep1": "Conecta un proveedor", + "readinessStep2": "Configura la autenticación del endpoint", + "readinessStep3": "Copia tu endpoint", + "readinessStep4": "Envía una solicitud de prueba", + "readinessContinue": "Continuar con la configuración", + "readinessDismiss": "Descartar por ahora" }, "analytics": { "title": "Analítica", @@ -1906,98 +1906,98 @@ "diversityShannonEntropy": "Entropía de Shannon", "diversityWindow": "Ventana: {count} solic. · Últimos {mins} mins", "diversityHealthy": "Distribución saludable", - "diversityRiskHigh": "High Vendor Lock-in Risk", - "diversityRiskModerate": "Moderate Distribution", - "diversityScoreLabel": "score", - "diversityHigherExplanation": "Higher values mean traffic is spread across multiple providers.", - "diversityNoData": "No recent usage data available.", - "chartRequests": "Requests", - "chartInput": "Input", - "chartOutput": "Output", + "diversityRiskHigh": "Alto riesgo de dependencia del proveedor", + "diversityRiskModerate": "Distribución moderada", + "diversityScoreLabel": "puntuación", + "diversityHigherExplanation": "Los valores más altos indican que el tráfico se distribuye entre varios proveedores.", + "diversityNoData": "No hay datos de uso recientes disponibles.", + "chartRequests": "Solicitudes", + "chartInput": "Entrada", + "chartOutput": "Salida", "chartTotal": "Total", - "chartCost": "Cost", - "chartShare": "Share", - "chartServiceTier": "Service Tier", - "chartServiceTierSplit": "Fast / Standard cost split", - "chartCostPct": "{pct}% of cost", - "chartUsageDetail": "Usage Detail", - "chartCacheRead": "Cache read", - "chartCostByProvider": "Cost by Provider", - "chartNoCostData": "No cost data", - "chartModelUsageOverTime": "Model Usage Over Time", - "chartNoData": "No data", - "chartWeekly": "Weekly", - "activitySummary": "{active} active days · {tokens} tokens · {days} days", + "chartCost": "Coste", + "chartShare": "Compartir", + "chartServiceTier": "Nivel de servicio", + "chartServiceTierSplit": "Distribución de costes entre Rápido y Estándar", + "chartCostPct": "{pct}% del coste", + "chartUsageDetail": "Detalle de uso", + "chartCacheRead": "Lectura de caché", + "chartCostByProvider": "Coste por proveedor", + "chartNoCostData": "No hay datos de costes", + "chartModelUsageOverTime": "Uso de modelos a lo largo del tiempo", + "chartNoData": "No hay datos", + "chartWeekly": "Semanal", + "activitySummary": "{active} días activos · {tokens} tokens · {days} días", "activityCellTitle": "{date}: {tokens} tokens", - "activityLess": "Less", - "activityMore": "More", - "chartApiKeyBreakdown": "API Key Breakdown", - "chartApiKey": "API Key", - "mostActiveDay": "Most Active Day", + "activityLess": "Menos", + "activityMore": "Más", + "chartApiKeyBreakdown": "Desglose por clave de API", + "chartApiKey": "Clave de API", + "mostActiveDay": "Día de mayor actividad", "datedTokenCount": "{date} · {tokens} tokens", - "noDataLast7Days": "No data in the last 7 days", - "requestTokenSummary": "{requests} requests · {tokens} tokens", - "chartByAccount": "By Account", - "chartByApiKey": "By API Key", - "unknownApiKey": "Unknown API key", - "chartModelBreakdown": "Model Breakdown", - "chartModel": "Model", - "chartProvider": "Provider", - "chartProviderBreakdown": "Provider Breakdown", - "chartDate": "Date", - "chartRequestsByProviderDate": "Requests by Provider & Date", - "filterAllKeys": "All Keys", - "filterSearchKeys": "Search keys…", - "filterNoKeysMatch": "No keys match", - "filterOneKey": "1 key", - "filterMultipleKeys": "{count} keys", - "rangeToday": "Today", - "rangeYesterday": "Yesterday", - "rangeLast3Days": "Last 3 days", - "rangeThisWeek": "This week", - "rangeLast14Days": "Last 14 days", - "rangeThisMonth": "This month", - "rangeQuickSelect": "Quick Select", - "rangeStart": "Start", - "rangeEnd": "End", - "rangeCancel": "Cancel", - "rangeApply": "Apply", - "rangeErrorInvalid": "Start must be before end", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", - "periodAll": "All", + "noDataLast7Days": "No hay datos de los últimos 7 días", + "requestTokenSummary": "{requests} solicitudes · {tokens} tokens", + "chartByAccount": "Por cuenta", + "chartByApiKey": "Por clave de API", + "unknownApiKey": "Clave de API desconocida", + "chartModelBreakdown": "Desglose por modelo", + "chartModel": "Modelo", + "chartProvider": "Proveedor", + "chartProviderBreakdown": "Desglose por proveedor", + "chartDate": "Fecha", + "chartRequestsByProviderDate": "Solicitudes por proveedor y fecha", + "filterAllKeys": "Todas las claves", + "filterSearchKeys": "Buscar claves…", + "filterNoKeysMatch": "Ninguna clave coincide", + "filterOneKey": "1 clave", + "filterMultipleKeys": "{count} claves", + "rangeToday": "Hoy", + "rangeYesterday": "Ayer", + "rangeLast3Days": "Últimos 3 días", + "rangeThisWeek": "Esta semana", + "rangeLast14Days": "Últimos 14 días", + "rangeThisMonth": "Este mes", + "rangeQuickSelect": "Selección rápida", + "rangeStart": "Inicio", + "rangeEnd": "Fin", + "rangeCancel": "Cancelar", + "rangeApply": "Aplicar", + "rangeErrorInvalid": "El inicio debe ser anterior al fin", + "period1D": "1 d", + "period7D": "7 d", + "period30D": "30 d", + "period90D": "90 d", + "periodYTD": "Año hasta la fecha", + "periodAll": "Todo", "totalTokens": "Total de tokens", - "inputTokens": "Input Tokens", - "outputTokens": "Output Tokens", - "estCost": "Est. Cost", - "infraTitle": "Infrastructure", - "infraAccounts": "Accounts", - "infraProviders": "Providers", - "infraApiKeys": "API Keys", - "infraModels": "Models", - "perfTitle": "Performance", - "perfAvgTokens": "Avg Tokens/Req", - "perfCostReq": "Cost/Req", - "perfIoRatio": "I/O Ratio", - "perfFastReq": "Fast Requests", - "highlightsTitle": "Highlights", - "highlightsTopModel": "Top Model", - "highlightsTopProvider": "Top Provider", - "highlightsBusiestDay": "Busiest Day", - "highlightsDiversity": "Diversity", - "highlightsFallbackRate": "Fallback Rate", + "inputTokens": "Tokens de entrada", + "outputTokens": "Tokens de salida", + "estCost": "Coste est.", + "infraTitle": "Infraestructura", + "infraAccounts": "Cuentas", + "infraProviders": "Proveedores", + "infraApiKeys": "Claves de API", + "infraModels": "Modelos", + "perfTitle": "Rendimiento", + "perfAvgTokens": "Tokens prom./solicitud", + "perfCostReq": "Coste/solicitud", + "perfIoRatio": "Relación E/S", + "perfFastReq": "Solicitudes rápidas", + "highlightsTitle": "Aspectos destacados", + "highlightsTopModel": "Modelo principal", + "highlightsTopProvider": "Proveedor principal", + "highlightsBusiestDay": "Día con más actividad", + "highlightsDiversity": "Diversidad", + "highlightsFallbackRate": "Tasa de conmutación por error", "customRange": "Rango personalizado", "overviewDescription": "Supervise sus patrones de uso de API, consumo de tokens, costos y tendencias de actividad en todos los proveedores y modelos.", "evalsDescription": "Ejecute conjuntos de evaluación para probar y validar sus puntos finales de LLM. Compare la calidad del modelo, detecte regresiones y compare la latencia.", "overview": "Descripción general", "evals": "evaluaciones", - "search": "Search", + "search": "Buscar", "utilization": "Utilización", - "routeTrace": "Route Trace", - "sectionsAria": "Analytics sections", + "routeTrace": "Traza de ruta", + "sectionsAria": "Secciones de análisis", "utilizationDescription": "Tendencias de uso de cuota del proveedor y seguimiento de límites de tasa", "modelStatus": "Estado del modelo", "modelStatusCooldown": "Enfriamiento", @@ -2005,8 +2005,8 @@ "modelStatusError": "error", "comboHealth": "Salud del combo", "comboHealthDescription": "Cuota a nivel de combo, distribución de uso y métricas de rendimiento", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Análisis de compresión", + "compressionAnalyticsDescription": "Análisis de compresión: ahorro de tokens, desglose por modo y estadísticas de proveedores.", "autoRoutingTotalAutoRequests": "Total de solicitudes automáticas", "autoRoutingAvgSelectionScore": "Puntuación de selección promedio", "autoRoutingExplorationRate": "Tasa de exploración", @@ -2028,83 +2028,83 @@ "comboHealthTitle": "salud combinada", "comboHealthUnableToLoad": "No se puede cargar la salud combinada", "comboHealthGettingStarted": "Empezando", - "comboHealthForecastTitle": "Cost & quota forecast", - "comboHealthForecastDescription": "Linear projection from historical combo traffic and quota snapshots.", - "comboHealthQuotaRisk": "{level} quota risk", - "comboHealthConfidence": "{level} confidence", - "comboHealthProjectedCost": "Projected cost", - "comboHealthCostHistory": "history {total} · {daily}/day", - "comboHealthProjectedRequests": "Projected requests", - "comboHealthRequestsInRange": "{count} in selected range", - "comboHealthWorstProjectedQuota": "Worst projected quota", - "comboHealthNoDepletionEstimate": "No depletion estimate", - "comboHealthDaysToExhaust": "{days}d to exhaust", - "comboHealthTraffic": "traffic", - "comboHealthProjectedQuota": "Projected quota", - "comboHealthPricingCoverage": "Pricing coverage", - "comboHealthAutopilotTitle": "Combo Health Autopilot", - "comboHealthAutopilotDescription": "Prioritized recommendations from combo health, forecasts, quotas, and provider health.", - "comboHealthIssues": "Issues", - "comboHealthActionable": "{count} actionable", - "comboHealthDown": "Down", - "comboHealthDegraded": "Degraded", - "comboHealthHealthy": "Healthy", - "comboHealthNoActiveIssues": "No active combo health issues detected for the selected range.", - "comboHealthScoringInspector": "Intelligent scoring inspector", - "comboHealthReadOnlyRecompute": "Read-only recompute", - "comboHealthScoringDescription": "Factor-level explanation for target ranking using current health, forecast, and routing heuristics.", - "comboHealthTask": "Task: {task}", - "comboHealthSelectedRank": "Selected rank #1", + "comboHealthForecastTitle": "Previsión de costes y cuotas", + "comboHealthForecastDescription": "Proyección lineal basada en el tráfico combinado histórico y las instantáneas de cuotas.", + "comboHealthQuotaRisk": "Riesgo de cuota: {level}", + "comboHealthConfidence": "Confianza: {level}", + "comboHealthProjectedCost": "Costo proyectado", + "comboHealthCostHistory": "historial {total} · {daily}/día", + "comboHealthProjectedRequests": "Solicitudes proyectadas", + "comboHealthRequestsInRange": "{count} en el intervalo seleccionado", + "comboHealthWorstProjectedQuota": "Peor cuota proyectada", + "comboHealthNoDepletionEstimate": "Sin estimación de agotamiento", + "comboHealthDaysToExhaust": "{days} d para agotarse", + "comboHealthTraffic": "tráfico", + "comboHealthProjectedQuota": "Cuota proyectada", + "comboHealthPricingCoverage": "Cobertura de precios", + "comboHealthAutopilotTitle": "Piloto automático de estado de combos", + "comboHealthAutopilotDescription": "Recomendaciones priorizadas según el estado de los combos, las previsiones, las cuotas y el estado del proveedor.", + "comboHealthIssues": "Problemas", + "comboHealthActionable": "{count} procesables", + "comboHealthDown": "Caído", + "comboHealthDegraded": "Degradado", + "comboHealthHealthy": "Saludable", + "comboHealthNoActiveIssues": "No se detectaron problemas activos de estado de los combos en el intervalo seleccionado.", + "comboHealthScoringInspector": "Inspector de puntuación inteligente", + "comboHealthReadOnlyRecompute": "Recálculo de solo lectura", + "comboHealthScoringDescription": "Explicación por factores de la clasificación de objetivos mediante el estado actual, la previsión y las heurísticas de enrutamiento.", + "comboHealthTask": "Tarea: {task}", + "comboHealthSelectedRank": "Clasificación seleccionada n.º 1", "comboHealthFactor": { - "quota": "Quota", - "health": "Health", - "costInv": "Cost", - "latencyInv": "Latency", - "taskFit": "Task fit", - "stability": "Stability", - "tierPriority": "Tier", - "tierAffinity": "Tier fit", - "specificityMatch": "Specificity", - "contextAffinity": "Context", - "resetWindowAffinity": "Reset window" + "quota": "Cuota", + "health": "Estado", + "costInv": "Costo", + "latencyInv": "Latencia", + "taskFit": "Adecuación a la tarea", + "stability": "Estabilidad", + "tierPriority": "Nivel", + "tierAffinity": "Adecuación al nivel", + "specificityMatch": "Especificidad", + "contextAffinity": "Contexto", + "resetWindowAffinity": "Ventana de restablecimiento" }, - "comboHealthQuotaValue": "Quota {value}", - "comboHealthLatencyValue": "Latency {value}ms", - "comboHealthIssueCount": "Issues {count}", - "comboHealthNoInspectableTargets": "No inspectable targets for this combo.", + "comboHealthQuotaValue": "Cuota {value}", + "comboHealthLatencyValue": "Latencia {value} ms", + "comboHealthIssueCount": "Problemas {count}", + "comboHealthNoInspectableTargets": "No hay objetivos inspeccionables para este combo.", "comboHealthAutopilotState": { - "down": "Down", - "degraded": "Needs attention", - "healthy": "Healthy" + "down": "Caído", + "degraded": "Requiere atención", + "healthy": "Saludable" }, - "comboHealthModelProviderCount": "{models} models across {providers} providers", - "comboHealthGiniCoefficient": "Gini coefficient", - "comboHealthRequestCount": "{count} requests", - "comboHealthQuotaHealthDescription": "Lowest remaining quota across providers with short trend signals.", - "comboHealthRemainingQuota": "Remaining quota {value}", + "comboHealthModelProviderCount": "{models} modelos de {providers} proveedores", + "comboHealthGiniCoefficient": "Coeficiente de Gini", + "comboHealthRequestCount": "{count} solicitudes", + "comboHealthQuotaHealthDescription": "Cuota restante más baja entre los proveedores, con breves indicadores de tendencia.", + "comboHealthRemainingQuota": "Cuota restante: {value}", "comboHealthTrend": { - "improving": "Improving", - "declining": "Declining", - "stable": "Stable" + "improving": "Mejorando", + "declining": "Empeorando", + "stable": "Estable" }, - "comboHealthUsageSkewDescription": "Model request share and token share within this combo.", - "comboHealthShareSummary": "Request share {requests} · Token share {tokens}", - "comboHealthPerformance": "Performance", - "comboHealthPerformanceDescription": "Reliability and throughput for routed combo traffic.", - "comboHealthExecutionTargetsDescription": "Step-level runtime metrics and quota visibility for structured combo targets.", - "comboHealthRequestShort": "{count} req", - "comboHealthQuotaScope": "Quota scope: {scope}", - "comboHealthTrendValue": "Trend: {trend}", - "comboHealthFetchFailed": "Failed to fetch combo health data", - "unknownError": "Unknown error", - "comboHealthIntro": "Monitor quota pressure, skewed model usage, and delivery performance by combo.", - "comboHealthForecastHorizon": "{value} forecast", - "comboHealthNoData": "No combo health data available", - "comboHealthNoDataDescription": "Combo quota snapshots and routed requests will appear here after traffic starts flowing.", - "comboHealthStepCreate": "Create combos in Combos with multiple providers", - "comboHealthStepSend": "Send requests to combo endpoints to generate traffic data", - "comboHealthStepAutomatic": "Health metrics will appear automatically as requests are routed", - "comboHealthTracking": "Tracking {count} combos for {range}", + "comboHealthUsageSkewDescription": "Proporción de solicitudes y tokens por modelo dentro de esta combinación.", + "comboHealthShareSummary": "Proporción de solicitudes: {requests} · Proporción de tokens: {tokens}", + "comboHealthPerformance": "Rendimiento", + "comboHealthPerformanceDescription": "Fiabilidad y capacidad de procesamiento del tráfico enrutado de la combinación.", + "comboHealthExecutionTargetsDescription": "Métricas de tiempo de ejecución por paso y visibilidad de cuotas para objetivos de combinación estructurados.", + "comboHealthRequestShort": "{count} sol.", + "comboHealthQuotaScope": "Ámbito de la cuota: {scope}", + "comboHealthTrendValue": "Tendencia: {trend}", + "comboHealthFetchFailed": "No se pudieron obtener los datos de estado de las combinaciones", + "unknownError": "Error desconocido", + "comboHealthIntro": "Supervisa la presión sobre las cuotas, el uso desigual de modelos y el rendimiento de entrega por combinación.", + "comboHealthForecastHorizon": "Pronóstico: {value}", + "comboHealthNoData": "No hay datos de estado de combinaciones disponibles", + "comboHealthNoDataDescription": "Las instantáneas de cuotas de las combinaciones y las solicitudes enrutadas aparecerán aquí cuando empiece a circular el tráfico.", + "comboHealthStepCreate": "Crea combinaciones en Combos con varios proveedores", + "comboHealthStepSend": "Envía solicitudes a los endpoints de las combinaciones para generar datos de tráfico", + "comboHealthStepAutomatic": "Las métricas de estado aparecerán automáticamente a medida que se enruten las solicitudes", + "comboHealthTracking": "Seguimiento de {count} combinaciones durante {range}", "compressionAnalyticsTotalRequests": "Solicitudes totales", "compressionAnalyticsTokensSaved": "Fichas guardadas", "compressionAnalyticsAvgSavings": "Ahorro promedio", @@ -2116,26 +2116,26 @@ "compressionAnalyticsTotalTokens": "fichas totales", "compressionAnalyticsCacheTokens": "Fichas de caché", "compressionAnalyticsNoDataYet": "Aún no hay datos de compresión", - "compressionAnalyticsLoading": "Loading compression analytics…", - "compressionAnalyticsNoDataDescription": "Compression requests will appear here after the first request through /v1/chat/completions with compression enabled.", - "rangeLast24h": "Last 24h", - "rangeLast7d": "Last 7d", - "rangeLast30d": "Last 30d", - "rangeAllTime": "All time", - "compressionAnalyticsModeStats": "{count} requests · {tokens} tokens saved", - "compressionAnalyticsSkipped": " · {count} skipped (no-op)", - "compressionAnalyticsRealTokens": "{count} real tokens", - "compressionAnalyticsValidationRestores": "validation restores", - "compressionAnalyticsRealUsageReceipts": "Real Usage Receipts", - "compressionAnalyticsSources": "Sources", - "compressionAnalyticsModeBreakdown": "Mode Breakdown", - "compressionAnalyticsProviderBreakdown": "Provider Breakdown", - "compressionAnalyticsLast24HoursActivity": "Last 24 Hours (Activity)", - "compressionAnalyticsChartPoint": "{hour}: {count} requests, {tokens} tokens saved", - "compressionAnalyticsMaxRequests": "Max requests/hour: {count}", - "compressionAnalyticsMaxTokens": "Max tokens/hour: {count}", - "compressionAnalyticsStartTracking": "Use POST /v1/chat/completions with compression configuration to start tracking compression analytics.", - "compressionAnalyticsInfo": "Compression analytics: Token savings tracked per mode (off, lite, standard, aggressive, ultra, RTK, stacked), engine, compression combo, and provider. Hover over charts for details. Use the time selector to view different time periods.", + "compressionAnalyticsLoading": "Cargando análisis de compresión…", + "compressionAnalyticsNoDataDescription": "Las solicitudes de compresión aparecerán aquí después de la primera solicitud a través de /v1/chat/completions con la compresión habilitada.", + "rangeLast24h": "Últimas 24 h", + "rangeLast7d": "Últimos 7 días", + "rangeLast30d": "Últimos 30 días", + "rangeAllTime": "Todo el período", + "compressionAnalyticsModeStats": "{count} solicitudes · {tokens} tokens ahorrados", + "compressionAnalyticsSkipped": "· {count} omitidas (sin cambios)", + "compressionAnalyticsRealTokens": "{count} tokens reales", + "compressionAnalyticsValidationRestores": "restauraciones de validación", + "compressionAnalyticsRealUsageReceipts": "Comprobantes de uso real", + "compressionAnalyticsSources": "Fuentes", + "compressionAnalyticsModeBreakdown": "Desglose por modo", + "compressionAnalyticsProviderBreakdown": "Desglose por proveedor", + "compressionAnalyticsLast24HoursActivity": "Últimas 24 horas (actividad)", + "compressionAnalyticsChartPoint": "{hour}: {count} solicitudes, {tokens} tokens ahorrados", + "compressionAnalyticsMaxRequests": "Máximo de solicitudes/hora: {count}", + "compressionAnalyticsMaxTokens": "Máximo de tokens/hora: {count}", + "compressionAnalyticsStartTracking": "Usa POST /v1/chat/completions con la configuración de compresión para empezar a registrar las analíticas de compresión.", + "compressionAnalyticsInfo": "Analíticas de compresión: Ahorro de tokens registrado por modo (off, lite, standard, aggressive, ultra, RTK, stacked), motor, combinación de compresión y proveedor. Pasa el cursor sobre los gráficos para ver los detalles. Usa el selector de tiempo para consultar distintos períodos.", "searchAnalyticsTotalSearches": "Búsquedas totales", "searchAnalyticsCacheHitRate": "Tasa de aciertos de caché", "searchAnalyticsTotalCost": "Costo Total", @@ -2148,78 +2148,78 @@ "providerUtilizationLatestSnapshot": "Instantánea de la última cuota", "providerUtilizationRemainingCapacity": "Capacidad restante", "utilizationRange": { - "1h": "Last hour", - "24h": "Last 24 hours", - "7d": "Last 7 days", - "30d": "Last 30 days" + "1h": "Última hora", + "24h": "Últimas 24 horas", + "7d": "Últimos 7 días", + "30d": "Últimos 30 días" }, - "providerUtilizationGlobalView": "Global View", - "providerUtilizationAccountSplit": "Account Split", - "providerUtilizationLoading": "Loading utilization data…", - "retrying": "Retrying…", - "retry": "Retry", - "providerUtilizationNoDataDescription": "Provider quota snapshots will appear here after utilization data is collected.", - "providerUtilizationStepConnect": "Connect providers through OAuth or API keys in Providers", - "providerUtilizationStepEnable": "Enable quota tracking by using the provider in a combo or direct request", - "providerUtilizationStepAutomatic": "Data will appear automatically as quota snapshots are collected", - "statusExhausted": "Exhausted", - "statusLow": "Low", - "statusHealthy": "Healthy", - "remainingQuota": "Remaining quota", - "routeTraceTitle": "Route Trace View", - "routeTraceDescription": "Inspect the persisted request trace: selected target, routing factors, fallback evidence, current scoring replay, latency, tokens and target health.", - "routeTraceRequestLog": "Request log", - "routeWeight": "Weight {weight}%", - "routeNoRelatedEvidence": "No related target evidence persisted yet.", - "unknown": "unknown", - "selected": "Selected", - "routeNoStepId": "no step id", - "routeNoStep": "no step", - "routeMatchesTopTarget": "Matches current top target", - "routeDiffersFromTop": "Differs from current top", - "routeTargetMissingNow": "Target missing now", - "routeNotComboRouted": "Not combo routed", - "routeWhyTarget": "Why this target?", - "routeWhyTargetSubtitle": "Exact runtime metadata plus read-only scoring replay", - "routeExactRuntimeLog": "Exact runtime log", - "routeCallLogsExact": "call_logs exact", - "routeReadOnlyRecompute": "Read-only recompute", - "routeRuntimeRankNow": "Runtime rank now", - "routeRuntimeScoreNow": "Runtime score now", - "routeWouldSelectNow": "Would select now", - "routeNoRecomputeCandidates": "No combo candidate ranking can be recomputed for this request.", - "runtime": "Runtime", - "routeTopNow": "Top now", - "routeFetchLogsFailed": "Failed to fetch request logs", - "routeExplainFailed": "Failed to explain route", - "direct": "direct", - "routeUnableToLoad": "Unable to load route explanation", - "routeNoRequestLogs": "No request logs available", - "routeNoRequestLogsDescription": "Send traffic through OmniRoute first. Route explanations are generated from persisted structured call logs.", - "routeDecisionSummary": "Decision summary", - "routeConfidence": "{confidence} confidence", - "routeScore": "Route score", - "latency": "Latency", - "routeRecentSuccess": "Recent success", - "routeAvgTargetLatency": "Avg target latency", - "routeSelectedTarget": "Selected target", - "provider": "Provider", - "model": "Model", - "account": "Account", - "connection": "Connection", - "combo": "Combo", - "routeStep": "Step", + "providerUtilizationGlobalView": "Vista global", + "providerUtilizationAccountSplit": "Desglose por cuenta", + "providerUtilizationLoading": "Cargando datos de uso…", + "retrying": "Reintentando…", + "retry": "Reintentar", + "providerUtilizationNoDataDescription": "Las instantáneas de cuota de los proveedores aparecerán aquí una vez que se recopilen los datos de uso.", + "providerUtilizationStepConnect": "Conecta proveedores mediante OAuth o claves de API en Proveedores", + "providerUtilizationStepEnable": "Activa el seguimiento de cuotas usando el proveedor en una combinación o solicitud directa", + "providerUtilizationStepAutomatic": "Los datos aparecerán automáticamente a medida que se recopilen instantáneas de cuota", + "statusExhausted": "Agotada", + "statusLow": "Baja", + "statusHealthy": "Saludable", + "remainingQuota": "Cuota restante", + "routeTraceTitle": "Vista de seguimiento de ruta", + "routeTraceDescription": "Inspecciona el seguimiento persistido de la solicitud: destino seleccionado, factores de enrutamiento, evidencia de respaldo, reproducción de la puntuación actual, latencia, tokens y estado del destino.", + "routeTraceRequestLog": "Registro de solicitudes", + "routeWeight": "Peso {weight}%", + "routeNoRelatedEvidence": "Aún no se ha almacenado evidencia relacionada con el destino.", + "unknown": "desconocido", + "selected": "Seleccionado", + "routeNoStepId": "sin id de paso", + "routeNoStep": "sin paso", + "routeMatchesTopTarget": "Coincide con el destino principal actual", + "routeDiffersFromTop": "Difiere del destino principal actual", + "routeTargetMissingNow": "El destino ya no existe", + "routeNotComboRouted": "No enrutado mediante combinación", + "routeWhyTarget": "¿Por qué este destino?", + "routeWhyTargetSubtitle": "Metadatos exactos de ejecución y reproducción de puntuación de solo lectura", + "routeExactRuntimeLog": "Registro exacto de ejecución", + "routeCallLogsExact": "call_logs exactos", + "routeReadOnlyRecompute": "Recálculo de solo lectura", + "routeRuntimeRankNow": "Clasificación actual en tiempo de ejecución", + "routeRuntimeScoreNow": "Puntuación actual en tiempo de ejecución", + "routeWouldSelectNow": "Se seleccionaría ahora", + "routeNoRecomputeCandidates": "No se puede recalcular la clasificación de candidatos de combinación para esta solicitud.", + "runtime": "Tiempo de ejecución", + "routeTopNow": "Primero ahora", + "routeFetchLogsFailed": "No se pudieron obtener los registros de solicitudes", + "routeExplainFailed": "No se pudo explicar la ruta", + "direct": "directo", + "routeUnableToLoad": "No se puede cargar la explicación de la ruta", + "routeNoRequestLogs": "No hay registros de solicitudes disponibles", + "routeNoRequestLogsDescription": "Primero, envía tráfico a través de OmniRoute. Las explicaciones de rutas se generan a partir de registros estructurados de llamadas almacenados.", + "routeDecisionSummary": "Resumen de la decisión", + "routeConfidence": "Confianza: {confidence}", + "routeScore": "Puntuación de la ruta", + "latency": "Latencia", + "routeRecentSuccess": "Éxito reciente", + "routeAvgTargetLatency": "Latencia objetivo media", + "routeSelectedTarget": "Destino seleccionado", + "provider": "Proveedor", + "model": "Modelo", + "account": "Cuenta", + "connection": "Conexión", + "combo": "Combinación", + "routeStep": "Paso", "tokens": "Tokens", - "notAvailable": "n/a", - "routeTokenCounts": "{input} in · {output} out", - "routeEvidence": "Evidence", - "routeFactors": "Routing factors", - "routeFactorsSubtitle": "Weighted signals used for this explanation", - "routeFallbackTimeline": "Fallback and target timeline", - "routeFallbackTimelineSubtitle": "Inferred from persisted call logs around this request", - "routeRecommendations": "Recommendations", - "routeLimitations": "Limitations", - "routeNoKnownLimitations": "No known limitations for this explanation.", + "notAvailable": "N/D", + "routeTokenCounts": "{input} de entrada · {output} de salida", + "routeEvidence": "Evidencia", + "routeFactors": "Factores de enrutamiento", + "routeFactorsSubtitle": "Señales ponderadas utilizadas para esta explicación", + "routeFallbackTimeline": "Cronología de destinos y alternativas", + "routeFallbackTimelineSubtitle": "Inferido a partir de registros de llamadas almacenados próximos a esta solicitud", + "routeRecommendations": "Recomendaciones", + "routeLimitations": "Limitaciones", + "routeNoKnownLimitations": "No hay limitaciones conocidas para esta explicación.", "searchAnalyticsLoading": "Cargando análisis de búsqueda…", "searchAnalyticsNoData": "No hay datos de búsqueda disponibles aún.", "searchAnalyticsNoDataDescription": "Las solicitudes de búsqueda aparecerán aquí después de la primera búsqueda a través de /v1/search.", @@ -2258,9 +2258,9 @@ "fullAccess": "Acceso completo", "keyManagement": "Gestión de claves API", "keyManagementDesc": "Cree y administre claves API para autenticar solicitudes en su punto final", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Tu aplicación envía solicitudes a OmniRoute mediante una clave de API", + "requestFlowYourApp": "Tu aplicación", + "requestFlowApiKey": "Clave de API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Claves totales", "restricted": "Restringido", @@ -2293,42 +2293,42 @@ "ownUsageVisibilityDesc": "Permite que esta clave llame a su endpoint de estado para ver su uso en USD, porcentaje de presupuesto y totales de tokens.", "sharedAccountQuotaVisibility": "Cuota de cuenta compartida", "sharedAccountQuotaVisibilityDesc": "Permite que esta clave vea la cuota de cuenta upstream compartida cuando hay una conexión explícita configurada.", - "localUsageCommand": "Allow local usage command", - "localUsageCommandDesc": "Allows this API key to use @@om-usage to retrieve cached usage and quota information without calling an upstream provider.", - "localUsageCommandBadge": "Usage cmd", + "localUsageCommand": "Permitir comando de uso local", + "localUsageCommandDesc": "Permite que esta clave de API use @@om-usage para recuperar información almacenada en caché sobre el uso y la cuota sin llamar a un proveedor ascendente.", + "localUsageCommandBadge": "Comando de uso", "keyCreated": "Clave API creada", "keyCreatedSuccess": "¡Clave creada exitosamente!", "keyCreatedNote": "Copie y almacene esta clave ahora; no se volverá a mostrar.", "done": "hecho", "savePermissions": "Guardar permisos", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", - "streamDefaultMode": "Stream Default Compatibility", - "streamDefaultModeDesc": "Controls omitted `stream` flags for this key. JSON mode returns non-streaming responses unless the client explicitly requests SSE.", - "streamDefaultLegacy": "Legacy", - "streamDefaultJson": "JSON Compatible", - "streamDefaultBadge": "JSON stream default", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "endpointRestrictions": "Endpoints permitidos", + "allEndpointsAllowed": "Esta clave puede acceder a todos los endpoints de la API.", + "endpointsRestricted": "Restringida a {count} {count, plural, one {endpoint} other {endpoints}}.", + "autoResolve": "Resolución automática", + "autoResolveDesc": "Resuelve automáticamente los nombres de modelos ambiguos seleccionando el proveedor nativo para esta clave de API.", + "streamDefaultMode": "Compatibilidad predeterminada de streaming", + "streamDefaultModeDesc": "Controla los indicadores `stream` omitidos para esta clave. El modo JSON devuelve respuestas sin streaming, salvo que el cliente solicite SSE explícitamente.", + "streamDefaultLegacy": "Heredado", + "streamDefaultJson": "Compatible con JSON", + "streamDefaultBadge": "Streaming JSON predeterminado", + "keyActive": "Clave activa", + "keyActiveDesc": "Activa o desactiva esta clave de API. Las claves desactivadas se rechazan inmediatamente con un error 403.", + "accessSchedule": "Horario de acceso", + "accessScheduleDesc": "Restringe el acceso a horas y días específicos de la semana.", + "scheduleFrom": "Desde", + "scheduleUntil": "Hasta", + "scheduleDays": "Días", + "scheduleTimezone": "Zona horaria", + "scheduleTimezoneHint": "Usa nombres de zonas horarias de IANA, p. ej., America/New_York, Europe/Berlin", + "scheduleActive": "Horario", + "disabled": "Desactivado", + "daySun": "Dom", + "dayMon": "Lun", + "dayTue": "Mar", + "dayWed": "Mié", + "dayThu": "Jue", + "dayFri": "Vie", + "daySat": "Sáb", "allowAll": "Permitir todo", "restrict": "Restringir", "allowAllInfo": "Esta clave puede acceder a todos los modelos disponibles.", @@ -2353,12 +2353,12 @@ "failedUpdatePermissionsRetry": "No se pudieron actualizar los permisos. Por favor inténtalo de nuevo.", "unknownProvider": "desconocido", "copyMaskedKey": "Copiar clave enmascarada", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "La clave completa solo está disponible en el momento de su creación; cópiala cuando crees la clave por primera vez", "modelsCount": "{count, plural, one {# model} other {# models}}", - "devicesCount": "{count, plural, one {# device} other {# devices}}", - "devicesTooltip": "{count, plural, one {# distinct IP/User-Agent device seen with this key (last 30 min)} other {# distinct IP/User-Agent devices seen with this key (last 30 min)}}", + "devicesCount": "{count, plural, one {# dispositivo} other {# dispositivos}}", + "devicesTooltip": "{count, plural, one {# dispositivo distinto de IP/User-Agent detectado con esta clave (últimos 30 min)} other {# dispositivos distintos de IP/User-Agent detectados con esta clave (últimos 30 min)}}", "lastUsedOn": "Último: {date}", - "viewCostsFor": "View costs for {name}", + "viewCostsFor": "Ver los costes de {name}", "editPermissions": "Editar permisos", "deleteKey": "Eliminar clave", "regenerateKey": "Regenerar clave", @@ -2369,21 +2369,21 @@ "models": "{count} modelos", "permissionsTitle": "Permisos: {name}", "allowAllDesc": "Esta clave puede acceder a todos los modelos disponibles.", - "restrictLoading": "Loading model catalog…", - "restrictCatalogUnavailable": "Model catalog unavailable; this key has {selectedCount} selected model restrictions.", + "restrictLoading": "Cargando el catálogo de modelos…", + "restrictCatalogUnavailable": "El catálogo de modelos no está disponible; esta clave tiene restricciones para {selectedCount} modelos seleccionados.", "restrictDesc": "Esta clave puede acceder a {selectedCount} de {totalModels} modelos.", "selectedCount": "{count} seleccionado", "maxActiveSessions": "Sesiones activas máximas", - "maxActiveSessionsDescription": "0 = unlimited. Return 429 when this key exceeds concurrent sticky sessions.", - "throttleDelay": "Throttle Delay", - "throttleDelayDescription": "Add a fixed delay before requests for this key are routed. 0 = no slowdown.", - "expandClaudeCodeFamilies": "Expand Claude Code families", - "removeClaudeCodeDefault": "Remove Claude Code default", - "allowedCombos": "Allowed Combos", - "allCombosAllowed": "This key can use any combo.", - "restrictedComboCount": "Restricted to {count, plural, one {# combo} other {# combos}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "maxActiveSessionsDescription": "0 = ilimitado. Devuelve 429 cuando esta clave supere el límite de sesiones persistentes simultáneas.", + "throttleDelay": "Retraso de limitación", + "throttleDelayDescription": "Añade un retraso fijo antes de enrutar las solicitudes de esta clave. 0 = sin ralentización.", + "expandClaudeCodeFamilies": "Ampliar familias de Claude Code", + "removeClaudeCodeDefault": "Eliminar valor predeterminado de Claude Code", + "allowedCombos": "Combinaciones permitidas", + "allCombosAllowed": "Esta clave puede usar cualquier combinación.", + "restrictedComboCount": "Restringida a {count, plural, one {# combinación} other {# combinaciones}}.", + "preservedComboRules": "{count, plural, one {# entrada almacenada no está} other {# entradas almacenadas no están}} en esta lista de combinaciones (por ejemplo, reglas de enrutamiento) y se conservará tal como se guardó.", + "preservedComboRuleHint": "Se conserva tal como está almacenada. Esta entrada no es una combinación de la lista anterior, por lo que solo se puede modificar mediante la API.", "apiManagerCustomRateLimits": "Límites de tarifas personalizadas", "apiManagerCustomRateLimitsDesc": "Anule los límites predeterminados globales. Déjelo vacío para usar los valores predeterminados.", "apiManagerRateLimitRequestsPlaceholder": "Solicitudes", @@ -2402,32 +2402,32 @@ "filterStatus": "ESTADO", "filterType": "TIPO", "filterAll": "Todos", - "filterStatusActive": "Active", - "filterStatusDisabled": "Disabled", - "filterStatusBanned": "Banned", - "filterStatusExpired": "Expired", - "filterTypeStandard": "Standard", - "filterTypeManage": "Manage", - "filterTypeRestricted": "Restricted", - "shownOf": "{shown} of {total} shown", - "emptyFilterTitle": "No keys match your filters", - "emptyFilterClear": "Clear filters", - "disableNonPublicModels": "Disable Non-Public Models", - "disableNonPublicModelsDesc": "Reject requests for models that are not discovered or not marked as public in the provider catalog", - "normalKeysSection": "Normal keys", - "quotaKeysSection": "Quota keys", - "bypassProviderQuota": "Bypass provider quota cutoffs", - "bypassProviderQuotaDescription": "Allows this key to ignore upstream provider/account cutoff policy during routing. API key USD quotas still apply.", - "quotaPill": "QUOTA", - "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "filterStatusActive": "Activa", + "filterStatusDisabled": "Deshabilitada", + "filterStatusBanned": "Bloqueada", + "filterStatusExpired": "Caducada", + "filterTypeStandard": "Estándar", + "filterTypeManage": "Gestionar", + "filterTypeRestricted": "Restringida", + "shownOf": "Se muestran {shown} de {total}", + "emptyFilterTitle": "Ninguna clave coincide con tus filtros", + "emptyFilterClear": "Borrar filtros", + "disableNonPublicModels": "Deshabilitar modelos no públicos", + "disableNonPublicModelsDesc": "Rechaza las solicitudes de modelos que no se hayan detectado o que no estén marcados como públicos en el catálogo del proveedor", + "normalKeysSection": "Claves normales", + "quotaKeysSection": "Claves de cuota", + "bypassProviderQuota": "Omitir los límites de cuota del proveedor", + "bypassProviderQuotaDescription": "Permite que esta clave ignore la política de límites del proveedor o de la cuenta de origen durante el enrutamiento. Las cuotas en USD de la clave de API siguen aplicándose.", + "quotaPill": "CUOTA", + "quotaModeOnly": "Solo qtSd", + "exclusiveLease": "Arrendamiento exclusivo", + "exclusiveLeaseNoticeTitle": "Arrendamiento exclusivo", + "exclusiveLeaseNoticeDesc": "Esta clave de API tiene permisos de arrendamiento exclusivo para el enrutamiento mediante conexiones dedicadas.", + "allConnections": "Todas las conexiones", + "onlySelectedConnections": "Solo las conexiones seleccionadas", + "selectAtLeastOneConnection": "Selecciona al menos una conexión o elige Todas las conexiones.", + "allConnectionsDesc": "Esta clave puede usar cualquier conexión activa.", + "restrictedToConnections": "Restringida a {count, plural, one {# conexión} other {# conexiones}}." }, "auditLog": { "title": "Registro de auditoría", @@ -2457,84 +2457,84 @@ "model": "Model", "prompt": "Prompt", "generate": "Generar", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Generando...", + "loadingModels": "Cargando modelos disponibles...", + "noModels": "No hay modelos disponibles. Primero configura proveedores con capacidades multimedia.", + "error": "Error de generación", + "result": "Resultado", + "imageDescription": "Genera imágenes a partir de indicaciones de texto con OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI y más.", + "videoDescription": "Crea vídeos con AnimateDiff y Stable Video Diffusion mediante ComfyUI o SD WebUI.", + "musicDescription": "Compón música con Stable Audio Open o MusicGen mediante ComfyUI.", "kinds": { "embedding": "Incrustación (Embedding)", "image": "Imagen", "imageToText": "Imagen a Texto", "tts": "Texto a Voz (TTS)", "stt": "Voz a Texto (STT)", - "webSearch": "Web Search", - "webFetch": "Web Fetch", + "webSearch": "Búsqueda web", + "webFetch": "Obtención de contenido web", "video": "Vídeo", "music": "Música", "ocr": "OCR" }, - "noProviders": "No providers configured for this kind yet.", - "addConnection": "Add Connection", - "backToProviders": "Back to Providers", - "connections": "{count} Connections", - "noConnections": "No connections yet — add one from the provider page.", - "loading": "Loading...", - "suggestedModels": "Suggested models from provider", - "imageGeneration": "Image Generation", - "imageToText": "Image to Text", - "imageToTextComingSoon": "The inline Image-to-Text playground will be available when /api/v1/images/understanding is implemented.", - "disabled": "Disabled", - "videoGeneration": "Video Generation", - "musicGeneration": "Music Generation", - "textToSpeech": "Text to Speech", - "transcription": "Transcription", - "imagePromptPlaceholder": "A serene landscape with mountains at sunset...", - "videoPromptPlaceholder": "A timelapse of a flower blooming...", - "musicPromptPlaceholder": "Upbeat electronic music with synth pads...", - "speechTextPlaceholder": "Hello! Welcome to OmniRoute, your intelligent AI gateway...", - "transcriptionPlaceholder": "Upload an audio file to transcribe...", - "noImagesReturned": "No images returned. The provider might have accepted the request but returned empty data.", - "generatedImageAlt": "Generated image {index}", - "save": "Save", - "enterTextToSynthesize": "Please enter text to synthesize.", - "selectAudioToTranscribe": "Please select an audio file to transcribe.", - "noSpeechDetected": "No speech detected in the audio file. If you uploaded music or a silent file, try an audio file with spoken words. Provider: \"{provider}\".", - "emptyTranscription": "Transcription returned empty text. The audio may contain no recognizable speech, or the \"{provider}\" API key may be invalid. Check Dashboard → Logs → Proxy for details.", - "topazRequiresImage": "Topaz requires an input image.", - "enterPrompt": "Please enter a prompt.", - "enhanceThisImage": "Enhance this image", - "failedToReadFile": "Failed to read file", - "generationFailed": "Generation failed", - "requestFailed": "Request failed ({status})", - "provider": "Provider", - "credentialsRequired": "Requires API key in Providers", - "voice": "Voice", - "format": "Format", - "audioVideoFile": "Audio / Video File", - "fileTooLarge": "File too large ({size}). Maximum allowed: {max}.", - "audioVideoFileHint": "Supports audio and video files up to 4 GB", - "sourceImage": "Source Image", - "sourceImageHint": "Optional for image-to-image, editing and upscale workflows.", - "maskImage": "Mask Image", - "maskImageHint": "Optional. Used by inpaint-style models that support masks.", - "text": "Text", - "promptOptional": "Prompt (optional)", - "enhancementInstructionsPlaceholder": "Optional enhancement instructions...", - "synthesizing": "Synthesizing...", - "transcribing": "Transcribing...", - "synthesizeSpeech": "Synthesize Speech", - "transcribeAudio": "Transcribe Audio", - "generateModality": "Generate {modality}", - "apiKeyRequired": "API Key Required", - "configureApiKeys": "Configure API keys in Providers", - "downloadFormat": "Download {format}", - "noTextReturned": "No text returned", - "wordTimestamps": "Word-level timestamps ({count} words)", - "providerCount": "{count} providers", + "noProviders": "Aún no hay proveedores configurados para este tipo.", + "addConnection": "Añadir conexión", + "backToProviders": "Volver a Proveedores", + "connections": "{count} conexiones", + "noConnections": "Aún no hay conexiones; añade una desde la página del proveedor.", + "loading": "Cargando...", + "suggestedModels": "Modelos sugeridos por el proveedor", + "imageGeneration": "Generación de imágenes", + "imageToText": "Imagen a texto", + "imageToTextComingSoon": "El entorno interactivo integrado de imagen a texto estará disponible cuando se implemente /api/v1/images/understanding.", + "disabled": "Deshabilitado", + "videoGeneration": "Generación de vídeos", + "musicGeneration": "Generación de música", + "textToSpeech": "Texto a voz", + "transcription": "Transcripción", + "imagePromptPlaceholder": "Un paisaje sereno con montañas al atardecer...", + "videoPromptPlaceholder": "Un vídeo a cámara rápida de una flor abriéndose...", + "musicPromptPlaceholder": "Música electrónica animada con pads de sintetizador...", + "speechTextPlaceholder": "¡Hola! Te damos la bienvenida a OmniRoute, tu puerta de enlace inteligente de IA...", + "transcriptionPlaceholder": "Sube un archivo de audio para transcribirlo...", + "noImagesReturned": "No se devolvió ninguna imagen. Es posible que el proveedor haya aceptado la solicitud, pero haya devuelto datos vacíos.", + "generatedImageAlt": "Imagen generada {index}", + "save": "Guardar", + "enterTextToSynthesize": "Introduce el texto que quieres sintetizar.", + "selectAudioToTranscribe": "Selecciona un archivo de audio para transcribir.", + "noSpeechDetected": "No se detectó voz en el archivo de audio. Si subiste música o un archivo silencioso, prueba con un archivo de audio que contenga palabras habladas. Proveedor: \"{provider}\".", + "emptyTranscription": "La transcripción devolvió texto vacío. Es posible que el audio no contenga voz reconocible o que la clave de API de \"{provider}\" no sea válida. Consulta Dashboard → Logs → Proxy para obtener más información.", + "topazRequiresImage": "Topaz requiere una imagen de entrada.", + "enterPrompt": "Introduce una indicación.", + "enhanceThisImage": "Mejorar esta imagen", + "failedToReadFile": "No se pudo leer el archivo", + "generationFailed": "Error de generación", + "requestFailed": "Error en la solicitud ({status})", + "provider": "Proveedor", + "credentialsRequired": "Requiere la clave de API de en Proveedores", + "voice": "Voz", + "format": "Formato", + "audioVideoFile": "Archivo de audio/vídeo", + "fileTooLarge": "El archivo es demasiado grande ({size}). Máximo permitido: {max}.", + "audioVideoFileHint": "Admite archivos de audio y vídeo de hasta 4 GB", + "sourceImage": "Imagen de origen", + "sourceImageHint": "Opcional para flujos de trabajo de imagen a imagen, edición y aumento de resolución.", + "maskImage": "Imagen de máscara", + "maskImageHint": "Opcional. Se utiliza en modelos de tipo inpainting que admiten máscaras.", + "text": "Texto", + "promptOptional": "Prompt (opcional)", + "enhancementInstructionsPlaceholder": "Instrucciones de mejora opcionales...", + "synthesizing": "Sintetizando...", + "transcribing": "Transcribiendo...", + "synthesizeSpeech": "Sintetizar voz", + "transcribeAudio": "Transcribir audio", + "generateModality": "Generar {modality}", + "apiKeyRequired": "Se requiere una clave de API", + "configureApiKeys": "Configura las claves de API en Proveedores", + "downloadFormat": "Descargar {format}", + "noTextReturned": "No se devolvió ningún texto", + "wordTimestamps": "Marcas de tiempo por palabra ({count} palabras)", + "providerCount": "{count} proveedores", "imageToTextBridgeAvailable": "El puente de modalidad puede describir imágenes para modelos solo de texto ahora. El entorno de pruebas en línea estará disponible cuando /api/v1/images/understanding esté implementado.", "imageToTextBridgeCta": "Configura el puente de Imagen→Texto en la configuración del Puente de Modalidad", "sttBridgeCta": "Configura el puente de Voz→Texto en la configuración del Puente de Modalidad", @@ -2542,174 +2542,174 @@ "openrouterSttDescription": "Los modelos de conversión de voz a texto de OpenRouter utilizan tu conexión de OpenRouter configurada. No se requieren credenciales separadas." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Consulta de búsqueda", + "searchResults": "Resultados de búsqueda", + "cachedResult": "En caché", + "searchCost": "Coste", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Pruebas de búsqueda avanzada con comparación de proveedores", + "compareProviders": "Comparar proveedores", + "rerankResults": "Reordenar resultados", + "searchHistory": "Historial de búsqueda", + "urlOverlap": "Coincidencia de URL", + "noSearchProviders": "No hay proveedores de búsqueda configurados. Añade proveedores en Configuración.", + "noRerankModels": "No hay ningún modelo de reordenación disponible", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Proveedor", + "searchType": "Tipo de búsqueda", + "maxResults": "Máximo de resultados", + "filters": "Filtros", + "country": "País", + "language": "Idioma", + "timeRange": "Intervalo de tiempo", + "includeDomains": "Incluir dominios", + "excludeDomains": "Excluir dominios", + "safeSearch": "Búsqueda segura", + "safeSearchOff": "Desactivada", + "safeSearchModerate": "Moderada", + "safeSearchStrict": "Estricta", + "queryPlaceholder": "Introduce una consulta de búsqueda...", + "providerAuto": "automático (más barato)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "noticias", + "optionAny": "cualquiera", + "timeRangeDay": "Último día", + "timeRangeWeek": "Última semana", + "timeRangeMonth": "Último mes", + "timeRangeYear": "Último año", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "La solicitud agotó el tiempo de espera ({seconds}s)", + "networkError": "Error de red", + "formatted": "Con formato", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "fallo de caché", + "cacheHit": "acierto de caché", + "latency": "Latencia", + "cost": "Coste", + "results": "Resultados", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Modelo de reclasificación", + "positionDelta": "Cambio de posición", + "emptyState": "Envía una consulta de búsqueda para ver los resultados", "copy": "Copiar", "resetToDefault": "Restablecer los valores predeterminados", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Buscar", + "tabScrape": "Extraer", + "tabCompare": "Comparar", + "modalitiesGuide": "Guía de modalidades", + "searchConceptTitle": "Búsqueda", + "searchConceptDesc": "Búsqueda = obtiene una lista de resultados web (título, URL, fragmento, puntuación de relevancia)", + "scrapeConceptTitle": "Extracción", + "scrapeConceptDesc": "Extracción = extrae el contenido completo de una URL (markdown, texto o HTML)", + "compareConceptTitle": "Comparación", + "compareConceptDesc": "Comparación = ejecuta la misma consulta en N proveedores en paralelo para comparar la latencia, el coste y la coincidencia de resultados", + "rerankConceptTitle": "Reordenar", + "rerankConceptDesc": "Reordenar = reordena los resultados mediante un LLM para mejorar la relevancia según la consulta", + "autoConceptTitle": "Automático (más barato)", + "autoConceptDesc": "Automático (más barato) = selecciona automáticamente el proveedor disponible más barato que tenga credenciales configuradas", + "providerCatalogTitle": "Catálogo de proveedores", + "kindSearch": "Buscar", + "kindFetch": "Obtener/extraer", + "statusConfigured": "Configurado", + "statusMissing": "Sin credenciales", + "statusRateLimited": "Límite de solicitudes alcanzado", + "configureProvider": "Configurar en Proveedores", + "loadingProviders": "Cargando proveedores…", + "failedToLoadProviders": "No se pudieron cargar los proveedores", + "costPerQuery": "Coste/consulta", + "freeQuota": "Cuota gratuita/mes", + "scrapeUrl": "URL que extraer", "scrapeUrlPlaceholder": "https://example.com", - "scrapeUrlRequired": "URL is required", - "scrapeUrlInvalid": "Invalid URL — it must start with http:// or https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeUrlRequired": "La URL es obligatoria", + "scrapeUrlInvalid": "URL no válida — debe comenzar por http:// o https://", + "scrapeExtract": "Extraer", + "scrapeExtracting": "Extrayendo…", + "scrapeFullPage": "Página completa", + "scrapeFormat": "Formato", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", - "scrapeEmptyState": "Enter a URL to extract its content", - "scrapeProvidersAvailable": "Available providers: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", - "configurationPane": "Configuration pane", - "configuration": "Configuration", - "status": "Status", - "compareProviderHint": "Select up to 4 providers on the Compare tab to compare them side by side.", - "history": "History", - "historyHint": "History is available on the Search tab.", - "noActiveProvider": "No active search provider", - "configureMoreProviders": "Configure more providers", - "links": "Links", - "contentTruncated": "Content truncated to 256 KB (original size: {size})", - "viewFullRaw": "View full raw content", - "rawScrapedContent": "Raw scraped content", - "rawContent": "Raw content — {size}", - "closeRawModal": "Close raw content modal", + "formatText": "Texto", + "scrapePreview": "Vista previa", + "scrapeRaw": "Sin procesar", + "scrapeContentTruncated": "(truncado, ver sin procesar)", + "scrapeMetadata": "Metadatos", + "scrapeProvider": "Proveedor", + "scrapeSize": "Tamaño", + "scrapeEmptyState": "Introduce una URL para extraer su contenido", + "scrapeProvidersAvailable": "Proveedores disponibles: Firecrawl, Jina Reader, Tavily, TinyFish.", + "compareRun": "Comparar", + "compareRunning": "Comparando…", + "autoProvider": "Automático (más barato)", + "configuredStatus": "Configurado", + "rateLimitedStatus": "Límite de solicitudes alcanzado", + "noCredential": "Sin credenciales", + "searchTypeLabel": "Tipo", + "rerankModelLabel": "Modelo de reclasificación", + "noneOption": "Ninguno", + "size": "Tamaño", + "configurationPane": "Panel de configuración", + "configuration": "Configuración", + "status": "Estado", + "compareProviderHint": "Selecciona hasta 4 proveedores en la pestaña Comparar para compararlos en paralelo.", + "history": "Historial", + "historyHint": "El historial está disponible en la pestaña Buscar.", + "noActiveProvider": "No hay ningún proveedor de búsqueda activo", + "configureMoreProviders": "Configurar más proveedores", + "links": "Enlaces", + "contentTruncated": "Contenido truncado a 256 KB (tamaño original: {size})", + "viewFullRaw": "Ver todo el contenido sin procesar", + "rawScrapedContent": "Contenido extraído sin procesar", + "rawContent": "Contenido sin procesar — {size}", + "closeRawModal": "Cerrar la ventana modal de contenido sin procesar", "httpError": "Error {status}", - "failed": "Failed", - "requestFailed": "Request failed", - "embedding": "Embedding", - "embeddingSample": "Hello, world!", - "image": "Image", - "imageSample": "A serene landscape with mountains at sunset", - "music": "Music", - "musicSample": "Upbeat jazz piano with light percussion", - "noAudioUrl": "No audio URL in response: {response}", - "documentUrl": "Document URL", - "fileTooLarge25Mb": "File too large — max 25 MB", - "selectAudioFirst": "Please select an audio file first.", - "speechToText": "Speech to Text", - "chooseFile": "Choose file…", - "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — max 25 MB", - "textToSpeech": "Text to Speech", - "ttsSample": "Hello, this is a text-to-speech test.", - "video": "Video", - "videoSample": "A time-lapse of clouds over a mountain range", - "webFetch": "Web Fetch", - "webSearchSample": "What is OmniRoute AI gateway?", - "noActiveProviderDescription": "No active search provider. Configure one in Providers.", - "configureProviders": "Configure providers", - "compareQuery": "Query to compare", - "compareQueryPlaceholder": "artificial intelligence trends 2026", - "selectedProviders": "Providers ({count} selected):", - "selectAll": "Select all", - "clear": "Clear", - "maxCompareProviders": "A maximum of {count} providers can be compared at once.", - "compareResults": "Results — “{query}”", - "resultCount": "{count} results", - "noResults": "No results", - "sharedResultTitle": "In common with another provider", - "sharedResult": "In common", - "overlapSummary": "{first} vs {second}: {overlap} in common", - "compareEmptyTitle": "Select providers and enter a query to compare", - "compareEmptyDescription": "Results will be shown side by side with latency, cost, and URL overlap" + "failed": "Fallido", + "requestFailed": "La solicitud ha fallado", + "embedding": "Incrustación", + "embeddingSample": "¡Hola, mundo!", + "image": "Imagen", + "imageSample": "Un paisaje sereno con montañas al atardecer", + "music": "Música", + "musicSample": "Piano de jazz animado con percusión ligera", + "noAudioUrl": "No hay ninguna URL de audio en la respuesta: {response}", + "documentUrl": "URL del documento", + "fileTooLarge25Mb": "El archivo es demasiado grande — máximo 25 MB", + "selectAudioFirst": "Selecciona primero un archivo de audio.", + "speechToText": "Conversión de voz a texto", + "chooseFile": "Elegir archivo…", + "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — máximo 25 MB", + "textToSpeech": "Conversión de texto a voz", + "ttsSample": "Hola, esta es una prueba de conversión de texto a voz.", + "video": "Vídeo", + "videoSample": "Un vídeo a cámara rápida de nubes sobre una cordillera", + "webFetch": "Obtención web", + "webSearchSample": "¿Qué es la puerta de enlace de IA OmniRoute?", + "noActiveProviderDescription": "No hay ningún proveedor de búsqueda activo. Configura uno en Proveedores.", + "configureProviders": "Configurar proveedores", + "compareQuery": "Consulta para comparar", + "compareQueryPlaceholder": "tendencias de inteligencia artificial en 2026", + "selectedProviders": "Proveedores ({count} seleccionados):", + "selectAll": "Seleccionar todos", + "clear": "Borrar", + "maxCompareProviders": "Se puede comparar un máximo de {count} proveedores a la vez.", + "compareResults": "Resultados — «{query}»", + "resultCount": "{count} resultados", + "noResults": "Sin resultados", + "sharedResultTitle": "En común con otro proveedor", + "sharedResult": "En común", + "overlapSummary": "{first} frente a {second}: {overlap} en común", + "compareEmptyTitle": "Selecciona proveedores e introduce una consulta para comparar", + "compareEmptyDescription": "Los resultados se mostrarán en paralelo con la latencia, el coste y la coincidencia de URL" }, "cliTools": { "title": "Herramientas CLI", - "classifierCompatTitle": "Auto-permission classifier compatibility", - "classifierCompatDescription": "Short-circuit Claude Code’s --permission-mode auto security classifier with a synthetic allow response so fallback routes do not fail closed. Off by default.", - "classifierCompatCycle": "Cycle: off → auto → always", - "classifierCompatLoadFailed": "Failed to load setting", + "classifierCompatTitle": "Compatibilidad con el clasificador automático de permisos", + "classifierCompatDescription": "Omite el clasificador de seguridad del modo --permission-mode auto de Claude Code mediante una respuesta de autorización sintética para que las rutas alternativas no se bloqueen. Desactivado de forma predeterminada.", + "classifierCompatCycle": "Ciclo: desactivado → automático → siempre", + "classifierCompatLoadFailed": "No se pudo cargar la configuración", "classifierCompatMode": { - "off": "Off", - "auto": "Auto", - "always": "Always" + "off": "Desactivado", + "auto": "Automático", + "always": "Siempre" }, "ccDiscoveryInfoButton": "Cómo habilitar el descubrimiento en Claude Code", "ccDiscoveryInfoTooltip": "Anunciar modelos no Claude bajo claude/<provider>/<model> IDs de espejo para que el descubrimiento de modelos de la puerta de enlace de Claude Code pueda listarlos. Duplica las entradas del catálogo para todos los clientes cuando está habilitado globalmente.", @@ -2719,14 +2719,14 @@ "ccOnboardingCopied": "Copiado", "ccOnboardingKeyPlaceholder": "''", "ccOnboardingWindowNote": "Claude Code asume una ventana de contexto de 200K para cualquier ID de modelo que no reconozca. Para un modelo con una ventana real diferente, añade CLAUDE_CODE_AUTO_COMPACT_WINDOW justo debajo para que la auto-compresión no se active demasiado pronto.", - "failedSave": "Failed to save", - "profileSyncTitle": "CLI profile auto-sync", - "profileSyncDescription": "After provider models are synchronized, automatically regenerate CLI tool profiles from the live catalog. Off by default — only profile files are written; the active/default configuration is never changed.", - "profileSyncLoadFailed": "Failed to load settings", - "codexProfiles": "Codex profiles", - "codexProfilesDescription": "Regenerate ~/.codex/*.config.toml after model discovery.", - "claudeProfiles": "Claude Code profiles", - "claudeProfilesDescription": "Regenerate each ~/.claude/profiles/…/settings.json after model discovery.", + "failedSave": "No se pudo guardar", + "profileSyncTitle": "Sincronización automática de perfiles de CLI", + "profileSyncDescription": "Después de sincronizar los modelos de los proveedores, vuelve a generar automáticamente los perfiles de las herramientas de CLI a partir del catálogo activo. Desactivado de forma predeterminada: solo se escriben los archivos de perfil; la configuración activa o predeterminada nunca se modifica.", + "profileSyncLoadFailed": "No se pudo cargar la configuración", + "codexProfiles": "Perfiles de Codex", + "codexProfilesDescription": "Vuelve a generar ~/.codex/*.config.toml después de detectar los modelos.", + "claudeProfiles": "Perfiles de Claude Code", + "claudeProfilesDescription": "Vuelve a generar cada ~/.claude/profiles/…/settings.json después de detectar los modelos.", "noActiveProviders": "No hay proveedores activos", "noActiveProvidersDesc": "Primero agregue y conecte proveedores para configurar las herramientas CLI.", "mapModels": "Modelos de mapas", @@ -2736,17 +2736,17 @@ "instructions": "Instrucciones", "modelMapping": "Mapeo de modelos", "reasoningEffort": "Esfuerzo de razonamiento para {model}", - "effortNone": "None", - "effortLow": "Low", - "effortMedium": "Medium", - "effortHigh": "High", - "effortExtraHigh": "Extra high", - "effortMax": "Max", + "effortNone": "Ninguno", + "effortLow": "Bajo", + "effortMedium": "Medio", + "effortHigh": "Alto", + "effortExtraHigh": "Muy alto", + "effortMax": "Máximo", "effortUltra": "Ultra", - "wireApi": "Wire API", - "modelAliases": "Model aliases", - "addModel": "Add model", - "routeModelPlaceholder": "Route {model} to...", + "wireApi": "API de conexión", + "modelAliases": "Alias de modelos", + "addModel": "Añadir modelo", + "routeModelPlaceholder": "Enrutar {model} a...", "baseUrl": "URL básica", "apiKey": "Clave API", "configured": "Configurado", @@ -2806,11 +2806,11 @@ "reasoningEffortDefault": "Predeterminado", "reasoningEffortHint": "El valor predeterminado conserva el esfuerzo de razonamiento enviado por el agente", "reasoningEffortTier": { - "none": "None", - "low": "Low", - "medium": "Medium", - "high": "High", - "xhigh": "XHigh" + "none": "Ninguno", + "low": "Bajo", + "medium": "Medio", + "high": "Alto", + "xhigh": "Muy alto" }, "howItWorks": "Cómo funciona:", "antigravityHowWorksDesc": "Antigravity envía solicitudes al punto final de Google. MITM los intercepta y los redirige a OmniRoute.", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Agregar", "antigravityStep2Suffix": "a su archivo de hosts como 127.0.0.1.", "antigravityStep3": "3. Abra Antigravity y las solicitudes se enviarán por proxy.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} envía solicitudes al endpoint de su proveedor. MITM las intercepta y las redirige a OmniRoute.", + "mitmStep1": "1. Inicia MITM para enrutar las solicitudes a través de OmniRoute.", + "mitmStep2Prefix": "2. Añade", + "mitmStep2Suffix": "a tu archivo hosts como 127.0.0.1.", + "mitmStep3": "3. Abre {toolName} y las solicitudes pasarán por el proxy.", "sudoPasswordRequiredTitle": "Se requiere contraseña de Sudo", "sudoPasswordHint": "Se requiere una contraseña de administrador para modificar el archivo de hosts y la configuración del proxy del sistema.", "enterSudoPassword": "Ingrese la contraseña de sudo", @@ -2908,7 +2908,7 @@ "continue": "Úselo cuando ejecute Continuar en IDE y necesite una configuración de proveedor portátil basada en JSON.", "opencode": "Úselo cuando prefiera ejecuciones de agentes nativos de terminal y automatización con scripts a través de OpenCode.", "kiro": "Utilícelo al integrar Kiro y controlar el enrutamiento de modelos de forma centralizada desde OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Úsalo cuando quieras un IDE centrado en IA con modelos de Codeium/Windsurf enrutados a través de OmniRoute.", "antigravity": "Úselo cuando el tráfico de Antigravity/Kiro debe interceptarse a través de MITM y enrutarse a OmniRoute.", "copilot": "Úselo cuando desee una experiencia de usuario estilo chat Copilot mientras aplica las claves de OmniRoute y las reglas de enrutamiento.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2920,39 +2920,39 @@ "antigravity": "IDE antigravedad de Google con MITM", "claude": "CLI del Código Antrópico Claude", "codex": "CLI del Códice OpenAI", - "grok-build": "xAI Grok Build TUI coding agent with custom provider support", + "grok-build": "Agente de programación TUI xAI Grok Build compatible con proveedores personalizados", "droid": "Asistente de IA de droide de fábrica", "openclaw": "Asistente de IA Open Claw", "cline": "CLI del asistente de codificación AI de Cline", "kilo": "CLI del Asistente de Inteligencia Artificial de Kilo Code", - "qwen": "Alibaba Qwen Code CLI", + "qwen": "CLI de Alibaba Qwen Code", "cursor": "Editor de código AI del cursor", "continue": "Continuar Asistente de IA", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "Agente de programación con IA OpenCode (Terminal)", + "kiro": "Amazon Kiro — IDE con tecnología de IA", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "CLI del asistente de programación Sourcegraph Amp", "hermes": "Asistente de terminal de IA de Hermes", "hermes-agent": "Hermes Agent (de Nousresearch) - IA de terminal avanzada con soporte multimodelo (delegación, visión, compresión, etc.)", "custom": "Generador de configuración CLI o SDK genérico compatible con OpenAI", - "aider": "Aider AI pair-programming CLI with an OpenAI-compatible base URL", - "forge": "ForgeCode coding agent CLI with a custom provider", - "cursor-cli": "Cursor Agent CLI in headless agent mode", - "roo": "Roo Code AI assistant for VS Code", - "jcode": "jcode terminal coding agent", - "deepseek-tui": "DeepSeek TUI coding agent written in Rust", - "codewhale": "CodeWhale coding agent, the successor to DeepSeek TUI", - "smelt": "Smelt coding agent CLI", - "pi": "Lightweight Pi terminal coding agent", - "crush": "Crush terminal coding agent by Charm", - "goose": "Goose autonomous agent CLI", - "interpreter": "Open Interpreter autonomous coding agent CLI", - "omp": "Oh My Pi terminal coding agent", - "letta": "Letta CLI agent with persistent memory and tool use", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", - "warp": "Warp AI terminal with custom provider support", - "agent-deck": "Agent Deck multi-agent orchestrator", + "aider": "CLI de programación en pareja con IA Aider con una URL base compatible con OpenAI", + "forge": "CLI del agente de programación ForgeCode con un proveedor personalizado", + "cursor-cli": "CLI de Cursor Agent en modo agente sin interfaz gráfica", + "roo": "Asistente de IA Roo Code para VS Code", + "jcode": "Agente de programación para terminal jcode", + "deepseek-tui": "Agente de programación TUI DeepSeek escrito en Rust", + "codewhale": "Agente de programación CodeWhale, sucesor de DeepSeek TUI", + "smelt": "CLI del agente de programación Smelt", + "pi": "Agente ligero de programación para terminal Pi", + "crush": "Agente de programación para terminal Crush de Charm", + "goose": "CLI del agente autónomo Goose", + "interpreter": "CLI del agente autónomo de programación Open Interpreter", + "omp": "Agente de programación para terminal Oh My Pi", + "letta": "Agente CLI Letta con memoria persistente y uso de herramientas", + "prime-agent": "Prime Agent — entorno de programación RLM con mejora continua y compatibilidad con proveedores compatibles con OpenAI", + "warp": "Terminal Warp AI compatible con proveedores personalizados", + "agent-deck": "Orquestador multiagente Agent Deck", "5dive": "5dive — flota autoalojada de agentes de codificación; un perfil de autenticación los apunta todos a OmniRoute" }, "guides": { @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Instalar OpenCode", + "desc": "Instalar mediante npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Clave de API" }, "3": { - "title": "Set Base URL", + "title": "Establecer URL base", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Seleccionar modelo" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Usar variante de razonamiento", + "desc": "Para los modelos de razonamiento, ejecuta con --variant high/low/max (comando de ejemplo a continuación)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Abrir la configuración de Kiro", + "desc": "Ve a Configuración → Proveedor de IA" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "URL base", + "desc": "Pega la URL de tu endpoint de OmniRoute" }, "3": { - "title": "API Key" + "title": "Clave de API" }, "4": { - "title": "Select Model" + "title": "Seleccionar modelo" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Abrir la configuración de IA", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Añadir proveedor personalizado", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "URL base", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Clave de API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Seleccionar modelo", + "desc": "Elige un modelo del menú desplegable" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "CLI personalizada", - "toolCategories": "Tool Categories", + "toolCategories": "Categorías de herramientas", "visibleToolsCount": "{count} herramientas disponibles", "customCliBuilderTitle": "Constructor CLI compatible con OpenAI", "customCliBuilderDescription": "Genere variables de entorno y fragmentos JSON para cualquier CLI o SDK que acepte una URL base, una clave API y un ID de modelo compatibles con OpenAI.", @@ -3104,24 +3104,24 @@ "customCliEndpointHint": "Dirija cualquier cliente compatible con OpenAI a la URL base de OmniRoute /v1. El punto final de finalización del chat sin procesar es {endpoint}. Utilice el bloque JSON cuando la herramienta quiera un objeto proveedor, o el script env cuando lea variables OPENAI_*.", "customCliEnvBlockTitle": "Fragmento de entorno/shell", "customCliJsonBlockTitle": "Bloque JSON del proveedor", - "networkError": "Network error", - "other": "Other", - "preview": "Preview", - "refreshAll": "Refresh all", - "hermesRoleDefault": "Default (main)", - "hermesRoleDefaultDesc": "Primary conversation model", - "hermesRoleDelegation": "Delegation (subagents)", - "hermesRoleDelegationDesc": "Orchestrator and sub-agent model", - "hermesRoleVision": "Vision", - "hermesRoleVisionDesc": "Image and screenshot understanding", - "hermesRoleCompression": "Compression", - "hermesRoleCompressionDesc": "Prompt compression and summarization", - "hermesRoleWebExtract": "Web Extract", - "hermesRoleWebExtractDesc": "Web page content extraction", - "hermesRoleSkillsHub": "Skills Hub", - "hermesRoleSkillsHubDesc": "Skills and tool-use reasoning", - "hermesRoleApproval": "Approval", - "hermesRoleApprovalDesc": "Safety and approval decisions", + "networkError": "Error de red", + "other": "Otro", + "preview": "Vista previa", + "refreshAll": "Actualizar todo", + "hermesRoleDefault": "Predeterminado (principal)", + "hermesRoleDefaultDesc": "Modelo principal de conversación", + "hermesRoleDelegation": "Delegación (subagentes)", + "hermesRoleDelegationDesc": "Modelo del orquestador y de los subagentes", + "hermesRoleVision": "Visión", + "hermesRoleVisionDesc": "Comprensión de imágenes y capturas de pantalla", + "hermesRoleCompression": "Compresión", + "hermesRoleCompressionDesc": "Compresión y resumen de prompts", + "hermesRoleWebExtract": "Extracción web", + "hermesRoleWebExtractDesc": "Extracción de contenido de páginas web", + "hermesRoleSkillsHub": "Centro de habilidades", + "hermesRoleSkillsHubDesc": "Razonamiento sobre habilidades y uso de herramientas", + "hermesRoleApproval": "Aprobación", + "hermesRoleApprovalDesc": "Decisiones de seguridad y aprobación", "hermesRoleMcp": "MCP", "hermesRoleMcpDesc": "Llamadas a la herramienta del servidor MCP", "hermesRoleTitleGeneration": "Generación de Títulos", @@ -3140,42 +3140,42 @@ "hermesRoleGoalJudgeDesc": "Evaluación de la finalización de objetivos", "hermesRoleCurator": "Curador", "hermesRoleCuratorDesc": "Curación de habilidades y memoria", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Supervisar", "hermesRoleMonitorDesc": "Monitoreo en segundo plano", "hermesRoleBackgroundReview": "Revisión de Antecedentes", "hermesRoleBackgroundReviewDesc": "Revisión de código en segundo plano", - "hermesSelectBeforePreview": "Select models for roles, or ensure the roles are loaded, before previewing.", - "hermesPreviewFailed": "Failed to generate preview", - "hermesSavedTo": "Saved to {path}", - "hermesFirstSetupTitle": "First set up via OmniRoute on {date}", - "hermesSinceSetup": "{time} since setup", + "hermesSelectBeforePreview": "Selecciona modelos para los roles, o asegúrate de que los roles estén cargados, antes de obtener una vista previa.", + "hermesPreviewFailed": "No se pudo generar la vista previa", + "hermesSavedTo": "Guardado en {path}", + "hermesFirstSetupTitle": "Configurado por primera vez mediante OmniRoute el {date}", + "hermesSinceSetup": "{time} desde la configuración", "hermesConfiguredRoles": "{configured}/{total} roles", - "hermesQuickApply": "Quickly apply the same model to all roles:", - "hermesApplyModelToAll": "Apply {model} to every role", - "hermesViaOmniRoute": "{provider} (via OmniRoute)", - "hermesNotOmniRoute": "{provider} (not OmniRoute)", - "hermesRemovePendingRole": "Remove this role from pending changes", - "hermesApply": "Apply to Hermes Agent", - "hermesRolesWillUpdate": "{count, plural, one {# role will be updated} other {# roles will be updated}}", - "hermesPreviewPath": "Preview — will write to ~/.hermes/config.yaml", - "hermesSaveDescription": "Saves the selected model for each role into", + "hermesQuickApply": "Aplica rápidamente el mismo modelo a todos los roles:", + "hermesApplyModelToAll": "Aplicar {model} a todos los roles", + "hermesViaOmniRoute": "{provider} (mediante OmniRoute)", + "hermesNotOmniRoute": "{provider} (sin OmniRoute)", + "hermesRemovePendingRole": "Eliminar este rol de los cambios pendientes", + "hermesApply": "Aplicar a Hermes Agent", + "hermesRolesWillUpdate": "{count, plural, one {Se actualizará # rol} other {Se actualizarán # roles}}", + "hermesPreviewPath": "Vista previa — se escribirá en ~/.hermes/config.yaml", + "hermesSaveDescription": "Guarda el modelo seleccionado para cada rol en", "copilotConfigGenerator": "Generador de configuración de GitHub Copilot", - "copilotGeneratorDescriptionPrefix": "Generates the", - "copilotGeneratorDescriptionSuffix": "block for VS Code GitHub Copilot using the Azure vendor pattern. Select the models you want, then copy the JSON into your config file.", - "copilotCompatibilityWarning": "This configuration uses the Azure vendor workaround for custom model lists. Tested with VS Code ≥ 1.109 and GitHub Copilot Chat ≥ v0.37. Future extension updates may change this behavior.", + "copilotGeneratorDescriptionPrefix": "Genera el", + "copilotGeneratorDescriptionSuffix": "bloque para VS Code GitHub Copilot mediante el patrón de proveedor de Azure. Selecciona los modelos que quieras y, a continuación, copia el JSON en tu archivo de configuración.", + "copilotCompatibilityWarning": "Esta configuración utiliza la solución alternativa del proveedor de Azure para listas de modelos personalizadas. Probada con VS Code ≥ 1.109 y GitHub Copilot Chat ≥ v0.37. Es posible que futuras actualizaciones de la extensión cambien este comportamiento.", "copilotApiKey": "Clave API", - "copilotSelectModels": "Select models ({selected}/{total})", - "selectAll": "Select all", - "loadingModels": "Loading models...", - "advancedOptions": "Advanced options", - "vision": "Vision", - "copilotCopyConfigForModels": "Copy config ({count, plural, one {# model} other {# models}})", + "copilotSelectModels": "Seleccionar modelos ({selected}/{total})", + "selectAll": "Seleccionar todos", + "loadingModels": "Cargando modelos...", + "advancedOptions": "Opciones avanzadas", + "vision": "Visión", + "copilotCopyConfigForModels": "Copiar configuración ({count, plural, one {# modelo} other {# modelos}})", "copilotFilterModelsPlaceholder": "Filtrar modelos...", "copilotMaxInputTokens": "Fichas de entrada máximas", "copilotMaxOutputTokens": "Fichas de salida máxima", "copilotToolCalling": "Llamada de herramientas", "copilotPasteInto": "Pegar en:", - "copilotReloadInstruction": "Then reload VS Code and set the API key in the input prompt.", + "copilotReloadInstruction": "A continuación, reinicia VS Code e introduce la clave de API cuando se te solicite.", "wireApiChatCompletions": "Finalizaciones de chat (/chat/completions)", "wireApiResponses": "API de respuestas (/respuestas)", "cliproxyapiActionFailed": "Acción fallida", @@ -3228,8 +3228,8 @@ "leastLatency": "Menor latencia", "comboName": "Nombre combinado", "comboNamePlaceholder": "mi-combo", - "comboDescription": "Description", - "comboDescriptionPlaceholder": "Optional note describing this combo", + "comboDescription": "Descripción", + "comboDescriptionPlaceholder": "Nota opcional que describe esta combinación", "deleteConfirm": "¿Eliminar esta combinación?", "noCombosYet": "Aún no hay combinaciones", "comboCreated": "Combo creado exitosamente", @@ -3260,41 +3260,41 @@ "priorityDesc": "Retroceso secuencial: prueba primero el modelo 1, luego el 2, etc.", "weightedDesc": "Distribuye el tráfico por porcentaje de peso con respaldo", "roundRobinDesc": "Distribución circular: cada solicitud pasa al siguiente modelo en rotación", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Continuidad de contexto", + "contextRelayDesc": "Mantiene la continuidad de la sesión mediante resúmenes de traspaso cuando se alternan las cuentas", "randomDesc": "Selección aleatoria uniforme y luego recurrir a los modelos restantes.", "leastUsedDesc": "Elige el modelo con menos solicitudes y equilibra la carga a lo largo del tiempo.", "costOptimizedDesc": "Rutas al modelo más barato primero según el precio", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Dirige cada prefijo de solicitud reutilizable siempre a la misma cuenta del proveedor", "resetAware": "RR con reconocimiento de reinicio", "resetAwareDesc": "Equilibra la cuota restante con los restablecimientos semanales y de 5 h, y luego realiza todos contra todos puntuaciones similares", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Ponderado por cuota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", - "fusion": "Fusion", - "fusionDesc": "Fans the prompt to every panel model in parallel, then a judge model synthesizes one final answer", - "fusionJudgeModel": "Judge model", - "fusionJudgeModelHelp": "Model that synthesizes the panel answers into one final response. Leave empty to use the first panel model.", - "fusionMinPanel": "Min panel", - "fusionMinPanelHelp": "Successful panel answers required before stragglers get a grace window (default 2).", - "fusionStragglerGraceMs": "Straggler grace (ms)", - "fusionStragglerGraceMsHelp": "How long to wait for slow panel models once quorum is reached (default 8000).", - "fusionPanelHardTimeoutMs": "Panel hard timeout (ms)", - "fusionPanelHardTimeoutMsHelp": "Absolute cap so one hung model can't stall the whole panel (default 90000).", + "strictRandom": "Aleatorio estricto", + "strictRandomDesc": "Baraja — utiliza cada modelo una vez antes de volver a barajar", + "fusion": "Fusión", + "fusionDesc": "Envía la solicitud en paralelo a todos los modelos del panel y, después, un modelo juez sintetiza una única respuesta final", + "fusionJudgeModel": "Modelo juez", + "fusionJudgeModelHelp": "Modelo que sintetiza las respuestas del panel en una única respuesta final. Déjalo vacío para utilizar el primer modelo del panel.", + "fusionMinPanel": "Mínimo del panel", + "fusionMinPanelHelp": "Número de respuestas correctas del panel necesarias antes de conceder un tiempo de gracia a los modelos rezagados (valor predeterminado: 2).", + "fusionStragglerGraceMs": "Tiempo de gracia para rezagados (ms)", + "fusionStragglerGraceMsHelp": "Tiempo de espera para los modelos lentos del panel una vez alcanzado el cuórum (valor predeterminado: 8000).", + "fusionPanelHardTimeoutMs": "Tiempo de espera máximo del panel (ms)", + "fusionPanelHardTimeoutMsHelp": "Límite absoluto para evitar que un modelo bloqueado paralice todo el panel (valor predeterminado: 90000).", "models": "Modelos", "autoBalance": "Equilibrio automático", "advancedSettings": "Configuración avanzada", "retryDelay": "Retardo de reintento (ms)", "concurrencyPerModel": "Concurrencia / Modelo", "queueTimeout": "Tiempo de espera de cola (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Umbral de traspaso", + "contextRelayHandoffThresholdHelp": "Cuando el uso de la cuota alcanza este umbral, OmniRoute genera un resumen estructurado de traspaso antes de que se agote la cuenta activa.", + "contextRelayMaxMessages": "Máximo de mensajes para el resumen", + "contextRelayMaxMessagesHelp": "Limita cuánto historial reciente se condensa en el resumen de relevo.", + "contextRelaySummaryModel": "Modelo de resumen", + "contextRelaySummaryModelHelp": "Modelo alternativo opcional utilizado únicamente para generar el resumen de traspaso. Déjelo vacío para reutilizar el modelo de combo activo.", + "contextRelayProviderNote": "Context Relay genera actualmente traspasos para la rotación de cuentas de Codex. Combínelo con varias cuentas del mismo proveedor para obtener la mejor continuidad.", "advancedHint": "Déjelo vacío para usar los valores predeterminados globales. Estos anulan la configuración por proveedor.", "failoverBeforeRetry": "Conmutación por error antes de reintentar", "maxSetRetries": "Reintentos de configuración máxima", @@ -3303,45 +3303,45 @@ "moveDown": "Bajar", "removeModel": "Quitar", "saving": "Guardando...", - "liveNoProviders": "No providers observed yet.", - "liveFleetDataHint": "Fleet data arrives through live combo events.", - "liveActiveCount": "Active ({count})", - "liveErrorCount": "Errors ({count})", - "liveInactiveCount": "Inactive ({count})", - "liveNoRun": "No combo run available.", - "liveDataHint": "Live data arrives through the WebSocket combo channel.", - "liveDisconnected": "Live disabled — WebSocket disconnected. Showing last known state.", - "liveSelectCombo": "Select combo", - "liveSelectComboPlaceholder": "— select combo —", - "liveTargetCount": "{count, plural, one {# target} other {# targets}}", - "liveSingle": "Single", - "liveFleet": "Fleet", - "playgroundStatusAvailable": "Available", - "playgroundStatusNoQuota": "No Quota", - "playgroundStatusDegraded": "Degraded", + "liveNoProviders": "Aún no se ha detectado ningún proveedor.", + "liveFleetDataHint": "Los datos de la flota llegan mediante eventos de combo en vivo.", + "liveActiveCount": "Activos ({count})", + "liveErrorCount": "Errores ({count})", + "liveInactiveCount": "Inactivos ({count})", + "liveNoRun": "No hay ninguna ejecución de combo disponible.", + "liveDataHint": "Los datos en vivo llegan a través del canal de combo WebSocket.", + "liveDisconnected": "Datos en vivo deshabilitados: WebSocket desconectado. Se muestra el último estado conocido.", + "liveSelectCombo": "Seleccionar combo", + "liveSelectComboPlaceholder": "— seleccionar combo —", + "liveTargetCount": "{count, plural, one {# destino} other {# destinos}}", + "liveSingle": "Individual", + "liveFleet": "Flota", + "playgroundStatusAvailable": "Disponible", + "playgroundStatusNoQuota": "Sin cuota", + "playgroundStatusDegraded": "Degradado", "playgroundStatusError": "Error", - "playgroundStatusUnknown": "Unknown", - "playgroundNetworkError": "Network error during simulation", - "playgroundTitle": "Combo Playground", - "playgroundDescription": "Simulate how requests will be routed through your combos", - "playgroundConfiguration": "Configuration", - "playgroundNoCombosConfigured": "No combos configured", - "active": "active", - "inactive": "inactive", - "playgroundEstimatedPromptTokens": "Estimated Prompt Tokens", - "playgroundSimulating": "Simulating...", - "playgroundSimulateRoute": "Simulate Route", - "playgroundRoutingPath": "Routing Path", - "playgroundStrategy": "Strategy", - "playgroundEstimatedCost": "Est. Cost", - "playgroundEstimatedLatency": "Est. Latency", - "playgroundFallback": "fallback", - "playgroundWeight": "weight {value}", - "playgroundWarningCount": "Warnings ({count})", - "playgroundErrorCount": "Errors ({count})", - "playgroundEmptyHint": "Select a combo and click Simulate Route to see the routing path.", - "playgroundNoCombosYet": "No combos configured yet.", - "playgroundCreateFirst": "Create one first", + "playgroundStatusUnknown": "Desconocido", + "playgroundNetworkError": "Error de red durante la simulación", + "playgroundTitle": "Entorno de pruebas de combos", + "playgroundDescription": "Simule cómo se enrutarán las solicitudes a través de sus combos", + "playgroundConfiguration": "Configuración", + "playgroundNoCombosConfigured": "No hay combos configurados", + "active": "activo", + "inactive": "inactivo", + "playgroundEstimatedPromptTokens": "Tokens estimados del prompt", + "playgroundSimulating": "Simulando...", + "playgroundSimulateRoute": "Simular ruta", + "playgroundRoutingPath": "Ruta de enrutamiento", + "playgroundStrategy": "Estrategia", + "playgroundEstimatedCost": "Coste estimado", + "playgroundEstimatedLatency": "Latencia estimada", + "playgroundFallback": "respaldo", + "playgroundWeight": "peso {value}", + "playgroundWarningCount": "Advertencias ({count})", + "playgroundErrorCount": "Errores ({count})", + "playgroundEmptyHint": "Selecciona una combinación y haz clic en Simular ruta para ver la ruta de enrutamiento.", + "playgroundNoCombosYet": "Aún no hay combinaciones configuradas.", + "playgroundCreateFirst": "Crea una primero", "weighted": "ponderado", "leastUsed": "Menos utilizado", "costOpt": "Opción de costo", @@ -3386,19 +3386,19 @@ "example": "Prefiera un restablecimiento semanal del 60 % de la cuenta mañana a un restablecimiento del 80 % más tarde." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Úsalo cuando quieras una distribución perfectamente uniforme: cada modelo se usa una vez antes de repetirse.", + "avoid": "Evítalo cuando los modelos tengan distinta calidad o latencia y el orden sea importante.", + "example": "Ejemplo: varias cuentas del mismo modelo para distribuir el uso de manera uniforme." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Úsalo cuando quieras una selección de baja latencia mediante el algoritmo Power-of-Two-Choices.", + "avoid": "Evítalo para combinaciones pequeñas con 2 modelos o menos: no ofrece ninguna ventaja frente a round-robin.", + "example": "Ejemplo: inferencia de alto rendimiento en más de 4 endpoints de modelos equivalentes." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Úsalo cuando las sesiones largas deban sobrevivir a la rotación de cuentas sin perder el contexto de trabajo.", + "avoid": "Evítalo cuando el cambio de cuenta sea poco frecuente o cuando no quieras solicitudes de resumen adicionales.", + "example": "Ejemplo: sesiones de Codex que rotan entre varias cuentas cuando están cerca de agotar la cuota." }, "fill-first": { "when": "Úselo cuando desee agotar por completo la cuota de un proveedor antes de pasar al siguiente.", @@ -3423,24 +3423,24 @@ }, "advancedHelp": { "maxRetries": "Cuántos reintentos se intentan antes de fallar una solicitud.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "retryDelay": "Espera inicial entre reintentos. Los valores más altos reducen la presión de las ráfagas.", + "timeout": "Duración máxima de la solicitud antes de cancelarla.", + "healthcheck": "Excluye los modelos/proveedores con problemas de las decisiones de enrutamiento.", + "concurrencyPerModel": "Máximo de solicitudes simultáneas permitidas por modelo en round-robin.", + "queueTimeout": "Tiempo máximo que una solicitud puede esperar en la cola antes de agotar el tiempo de espera.", "failoverBeforeRetry": "Cuando está habilitado, cualquier error ascendente desencadena una conmutación por error inmediata al siguiente destino combinado, omitiendo todos los reintentos y las URL alternativas.", "maxSetRetries": "Número de veces que se reintenta el conjunto de objetivos completo cuando todos los objetivos fallan. 0 = ningún reintento de nivel establecido.", "setRetryDelayMs": "Retraso entre reintentos de nivel establecido, lo que da tiempo a los problemas transitorios para resolverse.", - "disableSessionStickiness": "Rotate to a different connection on every request instead of pinning a whole conversation to one connection by the first-message hash. Overrides the global default. Leave on Inherit to preserve prompt-cache hits for multi-turn chats." + "disableSessionStickiness": "Cambia a una conexión diferente en cada solicitud, en lugar de fijar toda una conversación a una sola conexión mediante el hash del primer mensaje. Anula el valor predeterminado global. Déjalo en Heredar para conservar los aciertos de la caché de prompts en chats con varios turnos." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", + "templatesTitle": "Plantillas rápidas", + "templatesDescription": "Aplica un perfil inicial y luego ajusta los modelos y la configuración.", + "templateApply": "Aplicar plantilla", + "templateHighAvailability": "Alta disponibilidad", + "templateHighAvailabilityDesc": "Enrutamiento prioritario con comprobaciones de estado y reintentos seguros.", + "templateCostSaver": "Ahorro de costes", + "templateCostSaverDesc": "Enrutamiento optimizado para reducir costes en cargas de trabajo que priorizan el presupuesto.", + "templateBalanced": "Carga equilibrada", "templateBalancedDesc": "Rutas menos utilizadas para distribuir la demanda a lo largo del tiempo.", "usageGuideHide": "Esconder", "usageGuideDontShowAgain": "No volver a mostrar", @@ -3459,12 +3459,12 @@ "warningRoundRobinSingleModel": "El round-robin es más útil con al menos 2 modelos.", "warningCostOptimizedPartialPricing": "Solo {priced} de los modelos {total} tienen precios. El enrutamiento puede tener en cuenta parcialmente los costos.", "warningCostOptimizedNoPricing": "No se encontraron datos de precios para este combo. El costo optimizado puede enrutarse inesperadamente.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterAll": "Todos", + "filterIntelligent": "Inteligente", + "filterDeterministic": "Determinista", + "filterEmptyTitle": "Ninguna combinación coincide con este filtro de estrategia.", + "filterEmptyIntelligentDescription": "Crea una combinación auto o LKGP para rellenar el panel de enrutamiento inteligente.", + "filterEmptyDeterministicDescription": "Actualmente solo existen combinaciones auto y LKGP. Vuelve a Todos o crea una combinación determinista.", "readinessTitle": "¿Listo para guardar?", "readinessDescription": "Revisa la lista de verificación antes de crear o actualizar este combo.", "readinessCheckName": "El nombre del combo es válido", @@ -3482,14 +3482,14 @@ "applyRecommendations": "Aplicar recomendaciones", "recommendationsUpdated": "Recomendaciones actualizadas para {strategy}.", "recommendationsApplied": "Se aplicaron recomendaciones a este combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "intelligentPanelTitle": "Panel de enrutamiento inteligente", + "intelligentPanelDesc": "Puntuación en tiempo real y estado de salud de esta combinación de enrutamiento automático.", "configOnlyStatus": "Vista de configuración", "configOnlyHint": "Este panel muestra solo los parámetros de enrutamiento. El estado del disyuntor en tiempo real está en la página de Salud.", "routingInputs": "Parámetros de enrutamiento", "routingInputsHint": "El paquete de modos y los pesos se mantienen aquí; el estado del disyuntor en tiempo real se mantiene en la página de Salud.", "emailVisibilityHint": "Los correos de cuentas aquí siguen el selector global de privacidad.", - "emailVisibilityTooltip": "Use the eye icon to reveal or hide account emails globally across combos, providers and quota screens.", + "emailVisibilityTooltip": "Usa el icono del ojo para mostrar u ocultar globalmente los correos electrónicos de las cuentas en las pantallas de combinaciones, proveedores y cuotas.", "builderModeStep": "Paso a paso (Proveedor → Modelo)", "builderModeGlobal": "Búsqueda de modelo global (Combo personalizado)", "builderGlobalSearchPlaceholder": "Buscar modelos en todos los proveedores (por ejemplo, opus, sonnet, deepseek, kimi, qwen)...", @@ -3500,52 +3500,52 @@ "builderGlobalAccountCount": "{count, plural, one {# cuenta} other {# cuentas}}", "builderGlobalAdded": "Agregado", "builderGlobalAdd": "Agregar", - "manualModel": "Manual model", - "manualModelInvalid": "Enter a model as provider/model.", - "manualModelUnknownProvider": "Unknown provider prefix.", - "builderDynamicAccountShort": "Dynamic account", - "builderNeedValidName": "Define a valid combo name before continuing.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", - "nestedComboFlatten": "Flatten nested combos", - "nestedComboExecute": "Execute nested combos as targets", - "effectiveRoutingShare": "Effective routing share (weight ÷ total)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "manualModel": "Modelo manual", + "manualModelInvalid": "Introduce un modelo con el formato provider/model.", + "manualModelUnknownProvider": "Prefijo de proveedor desconocido.", + "builderDynamicAccountShort": "Cuenta dinámica", + "builderNeedValidName": "Define un nombre válido para la combinación antes de continuar.", + "statusOverview": "Resumen del estado", + "normalOperation": "Funcionamiento normal", + "allProvidersHealthy": "Los proveedores informan de condiciones de enrutamiento óptimas.", + "incidentMode": "Modo de incidente", + "highCircuitBreakerRate": "Se ha detectado una alta tasa de activación del disyuntor.", + "activeModePack": "Paquete de modos activo", + "modePackUpdated": "El paquete de modos se actualizó a {pack}.", + "modePackHint": "Cambia los ajustes predefinidos para orientar el motor de enrutamiento sin volver a crear la combinación.", + "providerScores": "Puntuaciones de los proveedores", + "allProvidersEvaluated": "No hay ningún grupo de candidatos configurado. Todos los proveedores activos se evalúan en tiempo de ejecución.", + "excludedProviders": "Proveedores excluidos", + "excludedProvidersHint": "Los proveedores con un disyuntor OPEN se excluyen temporalmente del enrutamiento.", + "noExcludedProviders": "Actualmente no hay proveedores excluidos.", + "cooldownMinutes": "Tiempo de espera: {minutes}m", + "builderIntelligentTitle": "Configuración del enrutamiento inteligente", + "builderIntelligentDesc": "Configura el motor de puntuación multifactor para esta combinación de enrutamiento automático.", + "candidatePoolLabel": "Grupo de candidatos", + "candidatePoolHint": "Selecciona los proveedores que debe evaluar este motor. Déjalo vacío para usar todos los proveedores activos.", + "candidatePoolEmpty": "Aún no hay proveedores activos disponibles.", + "candidatePoolAllProviders": "Todos los proveedores", + "modePackLabel": "Paquete de modos", + "routerStrategyLabel": "Estrategia del enrutador", + "strategyRules": "Reglas (puntuación de 6 factores)", + "explorationRateLabel": "Tasa de exploración", + "explorationRateHint": "El {percent}% de las solicitudes puede explorar proveedores no óptimos.", + "budgetCapLabel": "Límite de presupuesto (USD/solicitud)", + "budgetCapPlaceholder": "Sin límite", + "advancedWeightsTitle": "Avanzado: ponderaciones de puntuación", + "nestedComboFlatten": "Aplanar combinaciones anidadas", + "nestedComboExecute": "Ejecutar combinaciones anidadas como destinos", + "effectiveRoutingShare": "Proporción efectiva de enrutamiento (peso ÷ total)", + "weightQuota": "Cuota", + "weightHealth": "Estado", + "weightCostInv": "Coste", + "weightLatencyInv": "Latencia", + "weightTaskFit": "Adecuación a la tarea", + "weightStability": "Estabilidad", + "weightTierPriority": "Nivel", + "weightCacheAffinity": "Afinidad de aciertos de caché", "weightSessionAvailability": "Disponibilidad de Sesión", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Configuración de enrutamiento inteligente", "strategyRecommendations": { "priority": { "title": "Base tolerante a fallos", @@ -3597,11 +3597,11 @@ "tip3": "Mantenga la banda de unión pequeña para que las cuentas equivalentes sigan rotando de manera justa." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Distribución por barajado", + "description": "Cada modelo se utiliza exactamente una vez por ciclo antes de volver a barajar.", + "tip1": "Utiliza al menos 2 modelos para lograr una distribución significativa.", + "tip2": "Funciona mejor con modelos de rendimiento equivalente.", + "tip3": "Ideal para equilibrar la carga entre varias cuentas de API." }, "fill-first": { "description": "Agote las cuotas de los proveedores de forma secuencial antes de retroceder.", @@ -3646,86 +3646,86 @@ "title": "El poder de dos opciones" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Stack gratuito ($0)", + "templateFreeStackDesc": "Distribución round-robin entre todos los proveedores gratuitos: Kiro (Claude), Qoder (5 modelos), Qwen (4 modelos). Sin coste y sin dejar nunca de programar.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "Modo LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Primeros pasos con los combos", + "wizardGuideDesc": "Crea combos de modelos para enrutar el tráfico de IA de forma inteligente", + "wizardGuideHint": "o haz clic en + Crear combo arriba", + "createFirstCombo": "Crea tu primer combo", + "wizardStep1Title": "Ponle nombre a tu combo", + "wizardStep1Desc": "Asigna a tu combo un nombre único para identificarlo en las reglas de enrutamiento", + "wizardStep2Title": "Añade modelos", + "wizardStep2Desc": "Selecciona modelos de IA y organiza su orden de prioridad de respaldo", + "wizardStep3Title": "Elige una estrategia", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Revisa y guarda", + "wizardStep4Desc": "Revisa tu configuración y activa el combo", + "usageGuideInvokeTitle": "Cómo llamar a este combo", + "usageGuideInvokeDesc": "Envía el nombre exacto del combo como modelo, p. ej., model: \"my-combo\" (o combo/my-combo).", + "usageGuideInvokeAutoNote": "auto y auto/* son un enrutador independiente sin configuración que no utiliza tus combos (a menos que un combo se llame literalmente auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto es un producto real de pago de OpenRouter (Auto Best Available), no un alias de OmniRoute; exclúyelo mediante Ajustes → Enrutamiento → Ocultar modelos de pago.", + "emailVisibilityStateOn": "Activado", + "emailVisibilityStateOff": "Desactivado", + "reorderHandle": "Arrastra para reordenar", + "failedReorder": "No se pudieron reordenar los modelos", + "builderFlowTitle": "Flujo del creador de combos", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Aspectos básicos", + "description": "Nombre y plantilla inicial" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Pasos", + "description": "Selección de proveedor, modelo y cuenta" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Estrategia", + "description": "Comportamiento de enrutamiento y ajustes avanzados" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Enrutamiento inteligente", + "description": "Conjunto de candidatos, preajustes y puntuación del enrutamiento automático" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Revisión", + "description": "Validación final antes de guardar" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Etapa completada", + "builderStageCurrent": "Etapa actual", + "builderStagePending": "Pendiente", + "builderStageLocked": "Bloqueada — completa primero la etapa anterior", + "builderTitle": "Crear un combo", + "builderBrowseCatalog": "Explorar catálogo", + "builderProvider": "Proveedor", + "builderLoadingProviders": "Cargando proveedores...", + "builderSelectProvider": "Seleccionar proveedor", + "builderModel": "Modelo", + "builderSelectModel": "Seleccionar modelo", + "builderProviderFirst": "Selecciona primero un proveedor", + "builderAccount": "Cuenta", + "builderPreview": "Vista previa", + "builderAddStep": "Añadir paso", "builderDuplicateExact": "Este paso exacto de proveedor/modelo/cuenta ya está en el combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Ref. del combo", + "builderAddComboRef": "Añadir referencia de combo", + "builderComboRefStep": "Añadir referencia de combo", + "builderPinnedAccount": "Cuenta fijada", + "builderLegacyEntry": "Entrada heredada", + "reviewName": "Nombre", + "reviewStrategy": "Estrategia", + "reviewSteps": "Pasos", + "reviewAccounts": "Cuentas", + "reviewProviders": "Proveedores", + "reviewComboRefs": "Referencias de combos", + "reviewAdvanced": "Configuración avanzada", + "reviewAgentFlags": "Indicadores del agente", + "reviewSequence": "Secuencia de modelos", + "reviewNoSteps": "No hay pasos configurados", "builderStagesDescription": "Complete cada etapa para definir combos, crear pasos, seleccionar una estrategia de enrutamiento y revisar los resultados.", "builderStepsDescription": "Cree cada paso combinado en orden: proveedor, modelo y luego cuenta. Esto permite reutilizar el mismo proveedor y modelo en diferentes cuentas.", "selectProvider": "Seleccionar Proveedor", @@ -3746,13 +3746,13 @@ "browseLegacyCatalog": "Explorar el catálogo combinado heredado", "agentFeaturesTitle": "Funciones del agente", "agentFeaturesDescription": "Habilite funciones avanzadas para los agentes que usan este combo", - "responseValidationTitle": "Response validation", - "responseValidationHelp": "Fail over to the next target when a 200 OK body fails these checks (assistant content).", - "responseValidationForbidden": "Forbidden substrings (one per line)", - "responseValidationRequired": "Required substrings (one per line)", - "responseValidationMinLength": "Minimum content length (chars)", - "responseValidationJsonPaths": "JSON-path checks", - "responseValidationAddCheck": "+ Add check", + "responseValidationTitle": "Validación de respuesta", + "responseValidationHelp": "Cambiar al siguiente destino cuando el cuerpo de una respuesta 200 OK no supere estas comprobaciones (contenido del asistente).", + "responseValidationForbidden": "Subcadenas prohibidas (una por línea)", + "responseValidationRequired": "Subcadenas obligatorias (una por línea)", + "responseValidationMinLength": "Longitud mínima del contenido (caracteres)", + "responseValidationJsonPaths": "Comprobaciones de ruta JSON", + "responseValidationAddCheck": "+ Añadir comprobación", "agentFeaturesSystemMessageOverride": "Anular mensaje del sistema", "agentFeaturesSystemMessagePlaceholder": "Eres un asistente experto...", "agentFeaturesSystemMessageHint": "Anulación de mensajes del sistema para agentes", @@ -3767,20 +3767,20 @@ "agentFeaturesContextLengthErrorRange": "La longitud del contexto debe estar entre 1000 y 2000000", "compressionOverride": "Anulación de compresión", "modePack": "Paquete de modo", - "disableSessionStickiness": "Disable session stickiness", - "sessionStickinessEnabled": "Stickiness on", - "sessionStickinessDisabled": "Stickiness off", - "kimiPresetTitle": "Kimi Coding preset", - "kimiPresetDescription": "Kimi K3 as the primary model (Moonshot API), with automatic fallback to your Kimi Code connections (kimi-coding, kimi-web) when configured.", - "kimiPresetCta": "Add preset", + "disableSessionStickiness": "Desactivar la persistencia de sesión", + "sessionStickinessEnabled": "Persistencia activada", + "sessionStickinessDisabled": "Persistencia desactivada", + "kimiPresetTitle": "Preajuste de Kimi Coding", + "kimiPresetDescription": "Kimi K3 como modelo principal (API de Moonshot), con cambio automático a tus conexiones de Kimi Code (kimi-coding, kimi-web) cuando estén configuradas.", + "kimiPresetCta": "Añadir preajuste", "intelligentComboCount": "{count, plural, one {# combinación inteligente} other {# combinaciones inteligentes}}", "providersInScope": "{count, plural, one {# proveedor en el alcance} other {# proveedores en el alcance}}", "savingModePack": "Guardando {pack}…", "errorTitle": "Error al cargar los combos", "errorDescription": "No pudimos cargar los datos del combo en este momento. Verifica tu conexión y vuelve a intentarlo.", - "errorId": "Error ID: {id}", + "errorId": "ID del error: {id}", "errorRetry": "Inténtalo de nuevo", - "comboLabel": "Combo", + "comboLabel": "Combinación", "duplicateAutoComboConfirm": "¿Crear una combinación estática de \"{name}\"?", "duplicateAutoComboSnapshotMsg": "Esto capturará los proveedores/modelos conectados actualmente que coincidan con esta plantilla en una combinación editable.", "duplicateAutoComboFailedPrefix": "Error al duplicar la combinación automática:", @@ -3800,27 +3800,27 @@ "range7d": "7 dias", "range30d": "30 dias", "range90d": "90 días", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 días", + "range365d": "365 días", "rangeAll": "Todo el tiempo", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Modelos activos", + "flatRateEstimateNotice": "Incluye estimaciones del precio de los tokens para suscripciones de tarifa plana, no el coste facturado.", + "flatRateEstimateForecast": "La proyección incluye estimaciones de tarifa plana.", + "selectedWindow": "Periodo seleccionado", + "activeProviders": "Proveedores activos", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Gasto de hoy", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Cuota del proveedor", + "topProviders": "Proveedores principales", + "costTrend": "Tendencia de costes", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Modelos principales", "requestsInWindow": "Requests In Window", "tokenUsage": "Uso de tokens", "totalTokens": "Fichas totales", @@ -3855,36 +3855,36 @@ "exportCSV": "Exportar como CSV", "exportJSON": "Exportar como JSON", "legacyFreeLabel": "Heredado / Gratuito", - "costExplorerTitle": "Cost Explorer", - "costExplorerDescription": "Explore spend by provider, model, API key, account, or service tier.", - "groupProvider": "Provider", - "groupModel": "Model", - "groupApiKey": "API Key", - "groupAccount": "Account", - "groupServiceTier": "Service Tier", + "costExplorerTitle": "Explorador de costes", + "costExplorerDescription": "Explora el gasto por proveedor, modelo, clave de API, cuenta o nivel de servicio.", + "groupProvider": "Proveedor", + "groupModel": "Modelo", + "groupApiKey": "Clave de API", + "groupAccount": "Cuenta", + "groupServiceTier": "Nivel de servicio", "serviceTierFast": "Rápido", "serviceTierFlex": "Flexible", "serviceTierStandard": "Estándar", "serviceTierBreakdownTitle": "Nivel de servicio", - "serviceTierBreakdownSubtitle": "Fast / Flex / Standard split", - "serviceTierUsageSaved": "usage saved", - "serviceTierCostSaved": "saved", - "serviceTierCostShareSuffix": "of cost", - "dimension": "Dimension", - "share": "Share", - "legacyOrFree": "Legacy / Free", - "filterRows": "Filter rows…", - "filterCostExplorerRows": "Filter Cost Explorer rows", - "noMatchingCostRows": "No matching cost rows", - "noMatchingCostRowsDescription": "Adjust the search text, grouping, or selected time window.", - "showingCostRows": "Showing {shown} of {total} matching rows.", - "showingTopCostRows": "Showing {shown} of {total} matching rows (top 50)." + "serviceTierBreakdownSubtitle": "Distribución Fast / Flex / Standard", + "serviceTierUsageSaved": "de uso ahorrado", + "serviceTierCostSaved": "ahorrado", + "serviceTierCostShareSuffix": "del coste", + "dimension": "Dimensión", + "share": "Cuota", + "legacyOrFree": "Heredado / Gratuito", + "filterRows": "Filtrar filas…", + "filterCostExplorerRows": "Filtrar filas del Explorador de costes", + "noMatchingCostRows": "No hay filas de costes coincidentes", + "noMatchingCostRowsDescription": "Ajusta el texto de búsqueda, la agrupación o el periodo seleccionado.", + "showingCostRows": "Se muestran {shown} de {total} filas coincidentes.", + "showingTopCostRows": "Se muestran {shown} de {total} filas coincidentes (50 primeras)." }, "endpoint": { "title": "Punto final API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Usa el endpoint compatible con OpenAI con la mayoría de los SDK y las herramientas.", + "testEndpoint": "Probar endpoint →", + "advancedProtocols": "Protocolos avanzados", "available": "Puntos finales disponibles", "cloudProxy": "Proxy en la nube", "disableConfirm": "¿Está seguro de que desea desactivar el proxy en la nube?", @@ -3900,7 +3900,7 @@ "disableCloud": "Deshabilitar la nube", "enableCloud": "Habilitar la nube", "modelsAcrossEndpoints": "{models} modelos en {endpoints} puntos finales", - "loadingModels": "Loading available models...", + "loadingModels": "Cargando modelos disponibles...", "chatDesc": "Chat streaming y no streaming con todos los proveedores", "embeddings": "Incrustaciones", "embeddingsDesc": "Inserciones de texto para búsqueda y canales RAG", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Transcribir archivos de audio a texto (Whisper)", "textToSpeech": "Texto a voz", "textToSpeechDesc": "Convierta texto en voz con sonido natural", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Generación de música", + "musicDesc": "Genera música y pistas de audio mediante ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderaciones", "moderationsDesc": "Moderación de contenidos y clasificación de seguridad.", "responsesDesc": "API Responses de OpenAI para Codex y flujos de trabajo agénticos avanzados", "listModelsDesc": "Listar todos los modelos disponibles en todos los proveedores conectados", "settingsApiDesc": "Leer y modificar la configuración de OmniRoute a través de la API", - "settingsApi": "Settings API", + "settingsApi": "API de configuración", "categoryCore": "APIs Principales", "categoryMedia": "Medios y Multi-Modal", - "categorySearch": "Search & Discovery", + "categorySearch": "Búsqueda y descubrimiento", "categoryUtility": "Utilidades y Gestión", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Búsqueda web", + "webSearchDesc": "Búsqueda web unificada entre múltiples proveedores con conmutación por error automática y almacenamiento en caché", + "searchProvider": "Proveedor de búsqueda", + "searchProviderDesc": "Este proveedor se utiliza para búsquedas web mediante POST /v1/search. No se necesita configurar ningún modelo: los proveedores de búsqueda están listos para usarse una vez conectada una clave de API.", "enableCloudTitle": "Habilitar proxy en la nube", "whatYouGet": "lo que obtendrás", "cloudBenefitAccess": "Accede a tu API desde cualquier parte del mundo", @@ -3963,14 +3963,14 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Activar túnel", + "cloudflaredInstallAndEnable": "Instalar y activar", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", + "cloudflaredRunning": "En ejecución", + "cloudflaredStarting": "Iniciando", + "cloudflaredStoppedState": "Detenido", + "cloudflaredNotInstalled": "No instalado", + "cloudflaredUnsupported": "No compatible", "cloudflaredError": "Error", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", @@ -3978,14 +3978,14 @@ "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Último error: {error}", "providerModelsTitle": "{provider} — Modelos", "noModelsForProvider": "No hay modelos disponibles para este proveedor.", "chat": "Charla", "embedding": "incrustar", "image": "Imagen", "custom": "personalizado", - "modelsCount": "{count, plural, one {# model} other {# models}}", + "modelsCount": "{count, plural, one {# modelo} other {# modelos}}", "sectionTitle": "Superficie de integración", "sectionDescription": "API compatibles con OpenAI y puntos finales de protocolo operativo", "tabApis": "API", @@ -4012,8 +4012,8 @@ "a2aQuickStartStep1": "Descubra la tarjeta de agente en `/.well-known/agent.json`.", "a2aQuickStartStep2": "Envíe solicitudes JSON-RPC a `POST /a2a` usando `message/send` o `message/stream`.", "a2aQuickStartStep3": "Realice un seguimiento y controle las tareas utilizando `tasks/get` y `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Completados (heredado)", + "completionsLegacyDesc": "Completados de texto heredados de OpenAI: acepta tanto una cadena de solicitud como un formato de matriz de mensajes", "messagesApi": "Mensajes", "messagesApiDesc": "Formato API nativo de mensajes antrópicos para proveedores compatibles con Claude", "imageEdits": "Ediciones de imágenes", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Procese grandes lotes de solicitudes de forma asincrónica (compatible con OpenAI)", "filesApi": "API de archivos", "filesApiDesc": "Cargar y administrar archivos para procesamiento por lotes", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", + "videoGeneration": "Generación de vídeo", + "videoDesc": "Genera vídeos mediante modelos de IA como ComfyUI y Stable Video Diffusion.", + "tailscaleRequestFailed": "No se pudo cargar el estado de Tailscale", + "tailscaleEnableFailed": "No se pudo activar Tailscale Funnel", + "tailscaleWaitingForLogin": "Completa el inicio de sesión de Tailscale en la pestaña del navegador que se abrió. OmniRoute volverá a intentarlo automáticamente.", + "tailscaleLoginTimedOut": "Se agotó el tiempo de espera para iniciar sesión en Tailscale", + "tailscaleWaitingForFunnel": "Activa Funnel para este dispositivo en la pestaña del navegador que se abrió. OmniRoute seguirá comprobando el estado.", + "tailscaleFunnelTimedOut": "Se agotó el tiempo de espera para que se activara Tailscale Funnel", + "tailscaleStarted": "Tailscale Funnel activado", + "tailscaleDisableFailed": "No se pudo desactivar Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel desactivado", + "tailscaleInstallFailed": "No se pudo instalar Tailscale", + "tailscaleInstallProgress": "Procesando...", + "tailscaleInstalled": "Tailscale se instaló correctamente", + "tailscaleRunning": "En ejecución", + "tailscaleNeedsLogin": "Requiere iniciar sesión", + "tailscaleStoppedState": "Detenido", + "tailscaleNotInstalled": "No instalado", + "tailscaleUnsupported": "No compatible", "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "tailscaleDisable": "Detener Funnel", + "tailscaleInstallAndEnable": "Instalar y habilitar", + "tailscaleLoginAndEnable": "Iniciar sesión y habilitar", + "tailscaleEnable": "Habilitar Funnel", + "tailscaleUrlNotice": "Utiliza tu dirección .ts.net de Tailscale. Es posible que debas iniciar sesión y aprobar Funnel la primera vez que lo uses.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Autentica este equipo con Tailscale y, a continuación, habilita Funnel.", + "tailscaleBinaryPath": "Binario: {path}", + "tailscaleLastError": "Último error: {error}", + "tailscaleInstallTitle": "Instalar Tailscale", + "tailscaleInstallIntro": "Instala Tailscale en este equipo y prepara OmniRoute para habilitar Funnel.", + "tailscaleInstallPasswordHint": "En macOS y Linux, puede que se requiera sudo para instalar el paquete e iniciar el daemon.", + "tailscaleSudoPlaceholder": "Contraseña de sudo opcional", + "tailscaleInstalling": "Instalando", "tailscaleSudoLabel": "Contraseña de Sudo (obligatoria en macOS/Linux)", "ngrokTitle": "túnel ngrok", "ngrokRunning": "corriendo", @@ -4078,59 +4078,59 @@ "apiEndpointsSearchPlaceholder": "Buscar puntos finales...", "apiEndpointsRequiresAuth": "Requiere autenticación", "apiEndpointsNoMatch": "Ningún punto final coincide con su filtro", - "endpointSections": "Endpoint sections", + "endpointSections": "Secciones de endpoints", "tabMcp": "MCP", "tabA2a": "A2A", - "tabContextSources": "Context Sources", - "activeEndpoints": "Active Endpoints", + "tabContextSources": "Fuentes de contexto", + "activeEndpoints": "Endpoints activos", "activeLocal": "Local", - "activeCloud": "Cloud", - "copyUrlTitle": "Copy {url}", - "statusRunning": "Running", - "tunnels": "Tunnels", - "activeTunnelCount": "{active} / {total} active", + "activeCloud": "Nube", + "copyUrlTitle": "Copiar {url}", + "statusRunning": "En ejecución", + "tunnels": "Túneles", + "activeTunnelCount": "{active} / {total} activos", "badgeLocal": "LOCAL", - "badgeProtected": "PROTECTED", - "badgeInternal": "INTERNAL", - "catalogLoadFailed": "API catalog request failed with HTTP {status}", - "catalogLoadFailedGeneric": "Failed to load API catalog", - "apiKeysLoadFailed": "Failed to load API keys ({status})", - "apiKeysLoadFailedGeneric": "Failed to load API keys", - "apiKeyRevealDisabled": "API key reveal is disabled (ALLOW_API_KEY_REVEAL). Change it on the Feature Flags page or paste an API key manually.", - "apiKeyRevealFailed": "Failed to reveal API key ({status})", - "apiKeyRevealInvalid": "API key reveal returned an invalid response", - "apiKeyRequired": "An API key is required for this endpoint.", - "requestFailed": "Request failed ({status})", + "badgeProtected": "PROTEGIDO", + "badgeInternal": "INTERNO", + "catalogLoadFailed": "La solicitud del catálogo de la API falló con HTTP {status}", + "catalogLoadFailedGeneric": "No se pudo cargar el catálogo de la API", + "apiKeysLoadFailed": "No se pudieron cargar las claves de API ({status})", + "apiKeysLoadFailedGeneric": "No se pudieron cargar las claves de API", + "apiKeyRevealDisabled": "La visualización de claves de API está deshabilitada (ALLOW_API_KEY_REVEAL). Cámbiala en la página Indicadores de funciones o pega manualmente una clave de API.", + "apiKeyRevealFailed": "No se pudo mostrar la clave de API ({status})", + "apiKeyRevealInvalid": "La visualización de la clave de API devolvió una respuesta no válida", + "apiKeyRequired": "Se requiere una clave de API para este endpoint.", + "requestFailed": "La solicitud falló ({status})", "errorStatus": "Error", - "catalogStats": "{endpoints} endpoints across {categories} categories", - "catalogUnavailableDescription": "The OpenAPI specification could not be loaded.", - "openJsonResponse": "Open JSON response", - "all": "All", - "more": "+{count} more", - "showInternalTooltip": "Show or hide internal routes (hidden by default)", - "bearerAuth": "Bearer Auth", - "requestBody": "Request Body", - "close": "Close", - "tryIt": "Try It", - "example": "Example", - "apiKey": "API Key", - "switchToSelection": "Switch to Selection", - "enterManually": "Enter Manually", - "pasteApiKey": "Paste your API key here", - "noActiveApiKeys": "No active API keys found. Toggle manual entry to paste one.", - "requestBodyJson": "Request Body (JSON)", - "sending": "Sending...", - "sendRequest": "Send Request", - "dataSchemas": "Data Schemas", - "vscodeAliasTitle": "VS Code Token Alias", - "vscodeAliasDescriptionReady": "Ready-to-paste compatibility URLs using the /api/v1/vscode/TOKEN/... endpoint.", - "vscodeAliasDescriptionError": "Showing placeholder URLs because CLI keys could not be loaded in this session.", - "vscodeAliasDescriptionLoading": "Loading CLI keys. Placeholder URLs are shown until a key is available.", - "vscodeAliasDescriptionPlaceholder": "Showing placeholder URLs. Create or activate an API key in CLI Tools to replace TOKEN.", - "vscodeAliasManage": "CLI Tools", - "vscodeAliasBaseLabel": "VS Code base", - "vscodeAliasModelsLabel": "VS Code models", - "vscodeAliasChatLabel": "VS Code chat", + "catalogStats": "{endpoints} endpoints en {categories} categorías", + "catalogUnavailableDescription": "No se pudo cargar la especificación de OpenAPI.", + "openJsonResponse": "Abrir respuesta JSON", + "all": "Todos", + "more": "+{count} más", + "showInternalTooltip": "Mostrar u ocultar rutas internas (ocultas de forma predeterminada)", + "bearerAuth": "Autenticación Bearer", + "requestBody": "Cuerpo de la solicitud", + "close": "Cerrar", + "tryIt": "Probar", + "example": "Ejemplo", + "apiKey": "Clave de API", + "switchToSelection": "Cambiar a selección", + "enterManually": "Introducir manualmente", + "pasteApiKey": "Pega aquí tu clave de API", + "noActiveApiKeys": "No se encontraron claves de API activas. Activa la entrada manual para pegar una.", + "requestBodyJson": "Cuerpo de la solicitud (JSON)", + "sending": "Enviando...", + "sendRequest": "Enviar solicitud", + "dataSchemas": "Esquemas de datos", + "vscodeAliasTitle": "Alias de token de VS Code", + "vscodeAliasDescriptionReady": "URL de compatibilidad listas para pegar que usan el endpoint /api/v1/vscode/TOKEN/....", + "vscodeAliasDescriptionError": "Se muestran URL de marcador de posición porque no se pudieron cargar las claves de CLI en esta sesión.", + "vscodeAliasDescriptionLoading": "Cargando claves de CLI. Se muestran URL de marcador de posición hasta que haya una clave disponible.", + "vscodeAliasDescriptionPlaceholder": "Se muestran URL de marcador de posición. Crea o activa una clave de API en Herramientas de CLI para reemplazar TOKEN.", + "vscodeAliasManage": "Herramientas de CLI", + "vscodeAliasBaseLabel": "Base de VS Code", + "vscodeAliasModelsLabel": "Modelos de VS Code", + "vscodeAliasChatLabel": "Chat de VS Code", "localServer": "Servidor local", "cloudOmniroute": "OmniRuta en la nube", "copyUrl": "Copiar URL", @@ -4139,47 +4139,47 @@ "badgeInternalTooltip": "Este es un extremo interno del sistema", "tierAll": "Todos", "tierAuth": "Autenticado", - "tierLoopback": "Loopback", - "tierAlwaysProtected": "Always Protected", + "tierLoopback": "Bucle invertido", + "tierAlwaysProtected": "Siempre protegido", "tierPublic": "Público", - "hideInternal": "Hide Internal", - "showInternal": "Show Internal", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", - "obsidianEnterToken": "Please enter an Obsidian API token", - "obsidianConnectFailed": "Failed to connect", - "obsidianConnectionFailed": "Connection failed", - "obsidianDisconnectFailed": "Failed to disconnect", - "obsidianEnterVaultPath": "Please enter the vault directory path", - "obsidianWebdavEnabledMessage": "WebDAV sync enabled. Configure your mobile device below.", - "obsidianEnableWebdavFailed": "Failed to enable WebDAV", - "obsidianWebdavDisabledMessage": "WebDAV sync disabled", - "obsidianDisableWebdavFailed": "Failed to disable WebDAV", - "obsidianConnected": "Connected", - "obsidianNotConnected": "Not connected", - "obsidianWebdavSync": "WebDAV Sync", - "obsidianDescription": "Search, read, write, and manage notes in Obsidian through routed AI models", - "obsidianRestToken": "Obsidian Local REST API Token", - "obsidianApiKeyPlaceholder": "Obsidian API key", - "obsidianConnect": "Connect", - "obsidianBaseUrlOptional": "Base URL (optional)", - "obsidianPortWarning": "Port 27124 is the MCP endpoint (HTTPS, self-signed certificate). The REST API uses HTTP on port 27123.", - "obsidianRemoteVaultHint": "Default: {defaultUrl}. For remote vaults, enter the Tailscale IP + port (e.g., http://100.x.x.x:27123). Enable the Local REST API plugin on the machine running Obsidian.", - "obsidianTokenConfigured": "Token configured. Obsidian tools are available via MCP.", - "obsidianDisconnect": "Disconnect", - "obsidianVaultSync": "Vault Sync (WebDAV)", - "obsidianVaultSyncDescription": "Sync your vault to Obsidian mobile using WebDAV over Tailscale. Obsidian mobile has built-in WebDAV support — no plugins needed.", - "obsidianVaultDirectoryPath": "Vault Directory Path", - "obsidianEnable": "Enable", - "obsidianWebdavEnabled": "WebDAV sync enabled", - "obsidianDisable": "Disable", - "obsidianConfigureMobile": "Configure Obsidian Mobile", - "obsidianMobileInstructions": "In Obsidian mobile: Settings → Sync → WebDAV → enter the following:", - "obsidianWebdavUrl": "WebDAV URL", - "obsidianUsername": "Username", - "obsidianPassword": "Password", - "obsidianTailscaleHint": "Use your Tailscale IP instead of localhost if connecting from mobile. Both devices must be on the same Tailscale network.", + "hideInternal": "Ocultar internas", + "showInternal": "Mostrar internas", + "customSystemPromptTitle": "Prompt del sistema personalizado", + "customSystemPromptDescription": "Inyecta un prompt del sistema personalizado en cada solicitud al modelo", + "customSystemPromptPlaceholder": "p. ej., Responde siempre hablando como un pirata...", + "obsidianEnterToken": "Introduce un token de API de Obsidian", + "obsidianConnectFailed": "No se pudo conectar", + "obsidianConnectionFailed": "Error de conexión", + "obsidianDisconnectFailed": "No se pudo desconectar", + "obsidianEnterVaultPath": "Introduce la ruta del directorio de la bóveda", + "obsidianWebdavEnabledMessage": "Sincronización WebDAV habilitada. Configura tu dispositivo móvil a continuación.", + "obsidianEnableWebdavFailed": "No se pudo habilitar WebDAV", + "obsidianWebdavDisabledMessage": "Sincronización WebDAV deshabilitada", + "obsidianDisableWebdavFailed": "No se pudo deshabilitar WebDAV", + "obsidianConnected": "Conectado", + "obsidianNotConnected": "No conectado", + "obsidianWebdavSync": "Sincronización WebDAV", + "obsidianDescription": "Busca, lee, escribe y administra notas en Obsidian mediante modelos de IA enrutados", + "obsidianRestToken": "Token de la API REST local de Obsidian", + "obsidianApiKeyPlaceholder": "Clave de API de Obsidian", + "obsidianConnect": "Conectar", + "obsidianBaseUrlOptional": "URL base (opcional)", + "obsidianPortWarning": "El puerto 27124 es el endpoint de MCP (HTTPS, certificado autofirmado). La API REST usa HTTP en el puerto 27123.", + "obsidianRemoteVaultHint": "Valor predeterminado: {defaultUrl}. Para bóvedas remotas, introduce la IP de Tailscale y el puerto (p. ej., http://100.x.x.x:27123). Habilita el plugin Local REST API en el equipo que ejecuta Obsidian.", + "obsidianTokenConfigured": "Token configurado. Las herramientas de Obsidian están disponibles mediante MCP.", + "obsidianDisconnect": "Desconectar", + "obsidianVaultSync": "Sincronización de la bóveda (WebDAV)", + "obsidianVaultSyncDescription": "Sincroniza tu bóveda con Obsidian para móviles mediante WebDAV a través de Tailscale. Obsidian para móviles incluye compatibilidad con WebDAV, sin necesidad de plugins.", + "obsidianVaultDirectoryPath": "Ruta del directorio de la bóveda", + "obsidianEnable": "Habilitar", + "obsidianWebdavEnabled": "Sincronización WebDAV habilitada", + "obsidianDisable": "Deshabilitar", + "obsidianConfigureMobile": "Configurar Obsidian para móviles", + "obsidianMobileInstructions": "En Obsidian para móviles: Ajustes → Sincronización → WebDAV → introduce lo siguiente:", + "obsidianWebdavUrl": "URL de WebDAV", + "obsidianUsername": "Nombre de usuario", + "obsidianPassword": "Contraseña", + "obsidianTailscaleHint": "Usa tu IP de Tailscale en lugar de localhost si te conectas desde un dispositivo móvil. Ambos dispositivos deben estar en la misma red de Tailscale.", "cloudSyncNotConfigured": "La sincronización en la nube no está configurada en esta instancia.", "notionConnect": "Conectar", "notionConnectFailed": "Error al conectar", @@ -4195,7 +4195,7 @@ "notionTokenConfigured": "Token configurado. Las herramientas de Notion están disponibles a través de MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", + "tabProxy": "Proxy de endpoints", "tabApiEndpoints": "Endpoints de API", "apiEndpointsTitle": "Endpoints de API", "apiEndpointsDescription": "Endpoints de API backend que pueden ser consumidos por otras aplicaciones y servicios.", @@ -4227,15 +4227,15 @@ "transportMode": "Modo de transporte", "transportStdioDesc": "Local — El IDE ejecuta el proceso a través de omniroute --mcp", "transportSseDesc": "Remoto — Server-Sent Events sobre HTTP", - "transportStreamableHttpDesc": "Remote — Modern bidirectional HTTP", - "copy": "Copy", + "transportStreamableHttpDesc": "Remoto — HTTP bidireccional moderno", + "copy": "Copiar", "mcpDashboardCopyUrl": "Copiar URL", - "mcpDisabledTitle": "MCP is disabled", - "mcpDisabledDesc": "Enable MCP above to configure transport mode and view server telemetry.", - "mcpIntro": "Model Context Protocol — {tools} tools across {scopes} scopes, {transports} transports (stdio / SSE / Streamable HTTP).", - "mcpStep1": "Run via {code}", - "mcpStep2": "Configure your MCP client to connect over stdio transport.", - "mcpStep3": "Invoke tools like {code1} and {code2}.", + "mcpDisabledTitle": "MCP está deshabilitado", + "mcpDisabledDesc": "Habilita MCP arriba para configurar el modo de transporte y consultar la telemetría del servidor.", + "mcpIntro": "Model Context Protocol — {tools} herramientas en {scopes} ámbitos, {transports} transportes (stdio / SSE / Streamable HTTP).", + "mcpStep1": "Ejecutar mediante {code}", + "mcpStep2": "Configura tu cliente MCP para conectarse mediante el transporte stdio.", + "mcpStep3": "Invoca herramientas como {code1} y {code2}.", "pid": "PID", "sessionUptime": "tiempo de actividad de la sesión", "lastHeartbeat": "último latido", @@ -4278,42 +4278,42 @@ "success": "Éxito", "failure": "Falla", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "Cargando entradas de auditoría...", + "noAuditEntriesForFilters": "No se encontraron entradas de auditoría para los filtros actuales.", + "tableTimestamp": "Marca de tiempo", + "tableDuration": "Duración", + "tableResult": "Resultado", + "tableApiKey": "Clave API", + "failed": "fallido", + "previous": "Anterior", + "next": "Siguiente", + "apiKeyId": "ID de clave API", + "offset": "Desplazamiento", + "limit": "Límite", + "tool": "Herramienta" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", + "loading": "Cargando el panel de A2A...", + "confirmCancelTask": "¿Cancelar la tarea {taskId}?", "cancelTaskFailed": "No se pudo cancelar la tarea.", "cancelTaskSuccess": "Tarea {taskId} cancelada.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "smokeSendFailed": "La prueba rápida de message/send falló.", + "smokeSendSuccessWithTask": "Prueba rápida de message/send correcta (tarea {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "La prueba rápida de message/stream falló.", + "smokeStreamSuccessWithTask": "Prueba rápida de message/stream correcta (tarea {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream finalizó sin ID de tarea.", + "health": "Estado", "ok": "ok", - "totalTasks": "Total tasks", + "totalTasks": "Total de tareas", "activeStreams": "Corrientes activas", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "lastTask": "Última tarea", + "taskStateOverview": "Resumen de estados de las tareas", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", + "submitted": "enviada", + "working": "en curso", + "completed": "completada", + "failed": "fallida", "cancelled": "cancelado" }, "agentCard": "tarjeta de agente", @@ -4324,32 +4324,32 @@ "agentCardNotAvailable": "Tarjeta de agente no disponible.", "quickValidation": "Validación rápida", "quickValidationDescription": "Ejecuta llamadas de humo a través del punto final `/a2a` en vivo.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", + "runMessageSend": "Ejecutar message/send", + "runMessageStream": "Ejecutar message/stream", + "taskManagement": "Gestión de tareas", + "taskSummary": "{total} tareas | página {page} de {totalPages}", + "allStates": "todas", + "allSkills": "todas las habilidades", + "loadingTasks": "Cargando tareas...", + "noTasksForFilters": "No se encontraron tareas para los filtros actuales.", + "tableTask": "Tarea", + "tableSkill": "Habilidad", + "tableState": "Estado", + "tableUpdated": "Actualización", + "tableActions": "Acciones", "view": "Vista", "cancel": "Cancelar", - "previous": "Previous", - "next": "Next", + "previous": "Anterior", + "next": "Siguiente", "taskDetail": "Detalle de la tarea", "close": "Cerca", "metadata": "Metadatos", "events": "Eventos", "artifacts": "Artefactos", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "tablePhase": "Fase de tabla", + "offset": "Desplazamiento", + "limit": "Límite", + "skill": "Habilidad", "rpcEndpoint": "ENVIAR /a2a", "rpcMethodSend": "mensaje/enviar", "rpcMethodStream": "mensaje/transmisión", @@ -4360,246 +4360,246 @@ "offline": "Desconectado", "disableLabel": "Desactivar {label}", "enableLabel": "Activar {label}", - "a2aDisabledTitle": "A2A is disabled", - "a2aDisabledDesc": "Enable A2A above to view task telemetry, agent details, and validation tools.", - "a2aIntro": "Agent2Agent JSON-RPC 2.0 endpoint — send tasks, stream responses, cancel in-flight jobs.", - "a2aStep1": "Discover the agent card at {code}.", - "a2aStep2": "Send JSON-RPC to {code1} using {code2} or {code3}.", - "a2aStep3": "Track and cancel tasks with {code1} and {code2}." + "a2aDisabledTitle": "A2A está deshabilitado", + "a2aDisabledDesc": "Habilita A2A arriba para ver la telemetría de las tareas, los detalles de los agentes y las herramientas de validación.", + "a2aIntro": "Endpoint JSON-RPC 2.0 de Agent2Agent: envía tareas, transmite respuestas y cancela trabajos en curso.", + "a2aStep1": "Descubre la tarjeta del agente en {code}.", + "a2aStep2": "Envía JSON-RPC a {code1} usando {code2} o {code3}.", + "a2aStep3": "Realiza un seguimiento de las tareas y cancélalas con {code1} y {code2}." }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Acciones", + "addMemory": "Añadir memoria", + "allTypes": "Todos los tipos", "cancel": "Cancelar", "checkHealth": "comprobar la salud", "checkingHealth": "Comprobando…", - "compactOld": "Compact old", + "compactOld": "Compactar antiguas", "concept": { - "title": "Conversational Memory", - "description": "OmniRoute learns from every conversation, remembering facts, episodes, procedures, and semantic concepts that make responses more accurate and context-aware.", - "howWorksToggle": "How it works", - "howWorksContent": "1. Automatic extraction: at the end of each response, facts and episodes are detected and saved automatically.\n2. Retrieval: before each response, the most relevant memories are searched via FTS5 (exact), vector (semantic), or hybrid RRF.\n3. Injection: relevant memories are injected into the assistant context to improve response quality.\n4. Management: use this page to view, edit, export, and compact old memories." + "title": "Memoria conversacional", + "description": "OmniRoute aprende de cada conversación y recuerda hechos, episodios, procedimientos y conceptos semánticos que hacen que las respuestas sean más precisas y tengan más en cuenta el contexto.", + "howWorksToggle": "Cómo funciona", + "howWorksContent": "1. Extracción automática: al final de cada respuesta, los hechos y episodios se detectan y guardan automáticamente.\n2. Recuperación: antes de cada respuesta, se buscan los recuerdos más relevantes mediante FTS5 (exacta), vectores (semántica) o RRF híbrido.\n3. Inyección: los recuerdos relevantes se incorporan al contexto del asistente para mejorar la calidad de las respuestas.\n4. Gestión: usa esta página para ver, editar, exportar y compactar recuerdos antiguos." }, - "content": "Content", + "content": "Contenido", "contentPlaceholder": "Valor o contenido JSON para recordar", - "created": "Created", - "delete": "Delete", - "deleteConfirmDesc": "This action cannot be undone. The memory will be permanently removed.", - "deleteConfirmTitle": "Delete memory?", - "description": "View and manage stored memory entries", - "editMemory": "Edit memory", + "created": "Creado", + "delete": "Eliminar", + "deleteConfirmDesc": "Esta acción no se puede deshacer. El recuerdo se eliminará permanentemente.", + "deleteConfirmTitle": "¿Eliminar recuerdo?", + "description": "Consulta y administra las entradas de memoria almacenadas", + "editMemory": "Editar recuerdo", "editModal": { - "title": "Edit Memory", - "metadataLabel": "Metadata (JSON)", - "metadataInvalid": "Invalid JSON", - "saveFailed": "Failed to save memory" + "title": "Editar memoria", + "metadataLabel": "Metadatos (JSON)", + "metadataInvalid": "JSON no válido", + "saveFailed": "No se pudo guardar el recuerdo" }, "embedding": { - "autoLabel": "Automatic", - "autoDesc": "Uses best available: remote provider > static > transformers", - "remoteLabel": "Remote provider", - "remoteDesc": "Uses embedding via provider API (requires API key)", - "staticLabel": "Static local (potion)", - "staticDesc": "Local embedding without WASM or external dependencies", + "autoLabel": "Automático", + "autoDesc": "Usa la mejor opción disponible: proveedor remoto > estático > transformers", + "remoteLabel": "Proveedor remoto", + "remoteDesc": "Usa embeddings mediante la API del proveedor (requiere una clave de API)", + "staticLabel": "Local estático (potion)", + "staticDesc": "Embedding local sin WASM ni dependencias externas", "transformersLabel": "Transformers.js (MiniLM)", - "transformersDesc": "Local embedding via @huggingface/transformers (~400MB RAM)", - "providerModelLabel": "Provider / Model", - "noRemoteProviders": "No providers with configured API key", - "selectProviderModel": "Select a model", + "transformersDesc": "Embedding local mediante @huggingface/transformers (~400MB de RAM)", + "providerModelLabel": "Proveedor / Modelo", + "noRemoteProviders": "No hay proveedores con una clave de API configurada", + "selectProviderModel": "Selecciona un modelo", "customBaseUrlLabel": "URL base personalizada (opcional)", "customModelIdLabel": "ID de modelo personalizado (opcional)", "customEndpointHelp": "Utiliza un endpoint /embeddings compatible con OpenAI. Se permiten endpoints locales; los objetivos de metadatos en la nube están bloqueados.", "customEndpointSave": "Aplicar punto final personalizado", "customEndpointInvalid": "Ingresa tanto una URL base HTTP(S) válida como un ID de modelo, o deja ambos campos vacíos.", "customEndpointSaveFailed": "No se pudo guardar el punto final de incrustación personalizada.", - "staticEnabledLabel": "Enable Static Potion", - "staticEnabledDesc": "Download and use potion-base-8M model locally", - "transformersEnabledLabel": "Enable Transformers.js", - "transformersEnabledDesc": "Opt-in for local MiniLM (~400MB RAM, ~3s cold start)", - "transformersWarning": "Requires ~400MB RAM and ~3s cold start on the first semantic query." + "staticEnabledLabel": "Activar Static Potion", + "staticEnabledDesc": "Descargar y usar el modelo potion-base-8M localmente", + "transformersEnabledLabel": "Activar Transformers.js", + "transformersEnabledDesc": "Habilitar MiniLM local (~400 MB de RAM, ~3 s de arranque en frío)", + "transformersWarning": "Requiere ~400 MB de RAM y ~3 s de arranque en frío en la primera consulta semántica." }, "emptyState": { - "title": "No memories yet", - "description": "Memories are created automatically from conversations. You can also add them manually using the button above." + "title": "Aún no hay recuerdos", + "description": "Los recuerdos se crean automáticamente a partir de las conversaciones. También puedes añadirlos manualmente mediante el botón de arriba." }, "engine": { - "statusTitle": "Engine Status", - "embeddingTitle": "Embedding Source", - "rerankTitle": "Rerank (optional)", - "reindexNow": "Reindex now", - "reindexStarted": "Reindexing started ({pending} pending)", - "reindexFailed": "Failed to start reindexing", - "keywordLabel": "Keyword (FTS5)", - "keywordReason": "Keyword search always available", - "embeddingLabel": "Embedding", - "vectorStoreLabel": "Vector Store", + "statusTitle": "Estado del motor", + "embeddingTitle": "Fuente de embeddings", + "rerankTitle": "Reordenación (opcional)", + "reindexNow": "Reindexar ahora", + "reindexStarted": "Reindexación iniciada ({pending} pendientes)", + "reindexFailed": "No se pudo iniciar la reindexación", + "keywordLabel": "Palabra clave (FTS5)", + "keywordReason": "La búsqueda por palabras clave siempre está disponible", + "embeddingLabel": "Incrustación", + "vectorStoreLabel": "Almacén vectorial", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", - "qdrantDisabled": "Disabled", - "qdrantOk": "Healthy ({latencyMs}ms)", - "qdrantError": "Connection error", - "needsReindex": "{count} memory(ies) need reindexing", - "configureCta": "Configure", - "vectorStoreInstallHint": "To enable vector search: npm install sqlite-vec (needs native Node.js, not WASM), then restart." + "rerankLabel": "Reordenación", + "qdrantDisabled": "Desactivado", + "qdrantOk": "Correcto ({latencyMs} ms)", + "qdrantError": "Error de conexión", + "needsReindex": "{count} recuerdo(s) necesita(n) reindexación", + "configureCta": "Configurar", + "vectorStoreInstallHint": "Para activar la búsqueda vectorial: npm install sqlite-vec (requiere Node.js nativo, no WASM) y, después, reinicia." }, - "episodic": "Episodic", - "export": "Export", + "episodic": "Episódico", + "export": "Exportar", "factual": "Factual", "healthUnknown": "Salud desconocida", - "hitRate": "Hit Rate", - "import": "Import", - "importError": "Failed to import file", - "importResult": "{imported} imported, {skipped} skipped", - "key": "Key", + "hitRate": "Tasa de aciertos", + "import": "Importar", + "importError": "No se pudo importar el archivo", + "importResult": "{imported} importados, {skipped} omitidos", + "key": "Clave", "keyPlaceholder": "por ej. tema.preferencias.de.usuario", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Recuerdos", "next": "Siguiente", - "noMemories": "No memories found", + "noMemories": "No se encontraron recuerdos", "pageInfo": "Página {page} de {totalPages} ({total} en total)", "pipelineError": "error de canalización", "pipelineOk": "Canalización correcta ({latencyMs}ms)", "playground": { - "infoTitle": "Memory Playground", - "infoDesc": "Simulate what would be retrieved for a given query. No memories are modified — read-only preview.", - "queryLabel": "Test query", - "queryPlaceholder": "Type a question or test phrase...", - "strategyLabel": "Strategy", - "strategyExact": "Exact (FTS5)", - "strategySemantic": "Semantic (vector)", - "strategyHybrid": "Hybrid (RRF)", - "budgetLabel": "Budget (tokens)", - "simulate": "Simulate", - "resultsTitle": "{count} result(s)", - "resolutionTitle": "Search resolution", - "resolutionEmbedding": "Embedding", - "resolutionStore": "Vector store", - "resolutionStrategy": "Strategy used", - "rerankApplied": "Rerank applied", - "fallback": "Fallback", - "noResults": "No memories found for this query.", - "tokensUsed": "tokens used", - "none": "none", - "errorFetch": "Failed to fetch preview" + "infoTitle": "Entorno de pruebas de memoria", + "infoDesc": "Simula qué se recuperaría para una consulta determinada. No se modifica ningún recuerdo; es una vista previa de solo lectura.", + "queryLabel": "Consulta de prueba", + "queryPlaceholder": "Escribe una pregunta o frase de prueba...", + "strategyLabel": "Estrategia", + "strategyExact": "Exacta (FTS5)", + "strategySemantic": "Semántica (vectorial)", + "strategyHybrid": "Híbrida (RRF)", + "budgetLabel": "Presupuesto (tokens)", + "simulate": "Simular", + "resultsTitle": "{count} resultado(s)", + "resolutionTitle": "Resolución de búsqueda", + "resolutionEmbedding": "Incrustación", + "resolutionStore": "Almacén vectorial", + "resolutionStrategy": "Estrategia utilizada", + "rerankApplied": "Reordenación aplicada", + "fallback": "Alternativa", + "noResults": "No se encontraron memorias para esta consulta.", + "tokensUsed": "tokens utilizados", + "none": "ninguno", + "errorFetch": "No se pudo obtener la vista previa" }, "previous": "Anterior", - "procedural": "Procedural", + "procedural": "Procedimental", "qdrant": { - "title": "Qdrant (Vector Store Tier 2)", - "description": "Optional Qdrant integration for scalable semantic search", - "enableLabel": "Enable Qdrant", - "enableDesc": "When enabled, Qdrant is used as the primary vector store", - "banner": "Tier 2 vector store — an external, scalable alternative to the built-in sqlite-vec (Tier 1). Enable it only if you have a very large memory set or want shared memory across instances; most users are fine on sqlite-vec. When enabled it becomes the primary store and automatically falls back to sqlite-vec if unreachable.", - "hostHelp": "Local Docker: http://localhost:6333 · Qdrant Cloud: your cluster URL", - "collectionHelp": "Any name — OmniRoute creates it on first use", - "embeddingModelHelp": "Sets the vector dimension automatically on first use. Existing memories are not back-filled, and changing the model after data exists needs a fresh collection.", - "testConnection": "Test connection", - "testing": "Testing...", - "statusActive": "Active", + "title": "Qdrant (almacén vectorial de nivel 2)", + "description": "Integración opcional con Qdrant para búsquedas semánticas escalables", + "enableLabel": "Activar Qdrant", + "enableDesc": "Cuando está activado, Qdrant se utiliza como almacén vectorial principal", + "banner": "Almacén vectorial de nivel 2: una alternativa externa y escalable al sqlite-vec integrado (nivel 1). Actívalo solo si tienes un conjunto de memorias muy grande o quieres compartir memoria entre instancias; para la mayoría de los usuarios, sqlite-vec es suficiente. Cuando está activado, se convierte en el almacén principal y recurre automáticamente a sqlite-vec si no está disponible.", + "hostHelp": "Docker local: http://localhost:6333 · Qdrant Cloud: URL de tu clúster", + "collectionHelp": "Cualquier nombre: OmniRoute lo crea la primera vez que se usa", + "embeddingModelHelp": "Establece automáticamente la dimensión vectorial la primera vez que se usa. Las memorias existentes no se actualizan de forma retroactiva, y cambiar el modelo después de que existan datos requiere una colección nueva.", + "testConnection": "Probar conexión", + "testing": "Probando...", + "statusActive": "Activo", "statusError": "Error", - "statusDisabled": "Disabled", - "healthOk": "Connection OK ({latencyMs}ms)", - "healthError": "Connection error", - "saved": "Settings saved", - "saveError": "Failed to save", - "portLabel": "Port", - "embeddingModelLabel": "Embedding Model", - "optional": "optional", - "apiKeyKeepPlaceholder": "Leave blank to keep current key", - "apiKeyOptional": "Leave blank if not using authentication", - "removeApiKey": "Remove", - "quickSelectModel": "Quick select", - "searchTestTitle": "Semantic search test", - "searchPlaceholder": "Type a test query...", - "searching": "Searching...", - "search": "Search", - "cleanupTitle": "Clean up old points", - "cleanupDesc": "Remove Qdrant points for expired memories (retention period).", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", - "cleanupSuccess": "{count} point(s) removed", - "cleanupFailed": "Cleanup failed", + "statusDisabled": "Desactivado", + "healthOk": "Conexión correcta ({latencyMs} ms)", + "healthError": "Error de conexión", + "saved": "Configuración guardada", + "saveError": "No se pudo guardar", + "portLabel": "Puerto", + "embeddingModelLabel": "Modelo de embedding", + "optional": "opcional", + "apiKeyKeepPlaceholder": "Deja en blanco para conservar la clave actual", + "apiKeyOptional": "Deja en blanco si no utilizas autenticación", + "removeApiKey": "Eliminar", + "quickSelectModel": "Selección rápida", + "searchTestTitle": "Prueba de búsqueda semántica", + "searchPlaceholder": "Escribe una consulta de prueba...", + "searching": "Buscando...", + "search": "Buscar", + "cleanupTitle": "Limpiar puntos antiguos", + "cleanupDesc": "Elimina los puntos de Qdrant de las memorias caducadas (período de retención).", + "cleaning": "Limpiando...", + "cleanNow": "Limpiar ahora", + "cleanupSuccess": "{count} punto(s) eliminado(s)", + "cleanupFailed": "Error en la limpieza", "hostLabel": "Anfitrión", "collectionLabel": "Colección" }, "rerank": { - "enableLabel": "Enable Rerank", - "enableDesc": "Reorders results with a reranking model after search", - "warning": "Rerank adds +200-500ms latency and additional cost per request. Use sparingly.", - "providerModelLabel": "Rerank Provider / Model", - "noProviderWithKey": "No provider with configured API key. Configure a provider to use rerank.", - "selectProviderModel": "Select a provider/model" + "enableLabel": "Activar la reclasificación", + "enableDesc": "Reordena los resultados con un modelo de reclasificación después de la búsqueda", + "warning": "La reclasificación añade entre 200 y 500 ms de latencia y un coste adicional por solicitud. Úsala con moderación.", + "providerModelLabel": "Proveedor/modelo de reclasificación", + "noProviderWithKey": "No hay ningún proveedor con una clave de API configurada. Configura un proveedor para usar la reclasificación.", + "selectProviderModel": "Selecciona un proveedor/modelo" }, "save": "Guardar", - "saving": "Saving...", - "search": "Search memories...", - "semantic": "Semantic", + "saving": "Guardando...", + "search": "Buscar memorias...", + "semantic": "Semántica", "summarize": { - "title": "Compact old memories", - "noCandidates": "No memories eligible for compaction (criteria: >30 days old).", - "candidatesDesc": "{count} memories will be compacted into summaries. This action cannot be undone.", - "confirm": "Compact now" + "title": "Compactar memorias antiguas", + "noCandidates": "No hay memorias aptas para compactar (criterio: más de 30 días de antigüedad).", + "candidatesDesc": "Se compactarán {count} memorias en resúmenes. Esta acción no se puede deshacer.", + "confirm": "Compactar ahora" }, "tabs": { - "memories": "Memories", - "playground": "Playground", - "engine": "Engine" + "memories": "Memorias", + "playground": "Área de pruebas", + "engine": "Motor" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Gestión de memorias", + "tokensUsed": "Tokens utilizados", "tooltip": { - "totalEntries": "Total memories stored for this API key", - "tokensUsed": "Estimated total tokens occupied by active memories", - "hitRate": "Read-by-ID cache hit rate (not semantic recall accuracy)", - "factual": "Objective, permanent facts from user context", - "episodic": "Events and experiences from conversation history", - "procedural": "Procedures, workflows, and instructions the assistant should follow", - "semantic": "Concepts, preferences, and domain knowledge" + "totalEntries": "Total de memorias almacenadas para esta clave de API", + "tokensUsed": "Total estimado de tokens ocupados por las memorias activas", + "hitRate": "Tasa de aciertos de caché en lecturas por ID (no es la precisión de recuperación semántica)", + "factual": "Hechos objetivos y permanentes del contexto del usuario", + "episodic": "Eventos y experiencias del historial de conversaciones", + "procedural": "Procedimientos, flujos de trabajo e instrucciones que debe seguir el asistente", + "semantic": "Conceptos, preferencias y conocimientos del dominio" }, - "totalEntries": "Total Entries", - "type": "Type", - "memoryEnabled": "Memory enabled" + "totalEntries": "Total de entradas", + "type": "Tipo", + "memoryEnabled": "Memoria habilitada" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", - "selectSkillToInspect": "Select a skill on the left to inspect.", - "schemaTab": "Schema", - "handlerTab": "Handler", - "inputSchema": "Input Schema", - "outputSchema": "Output Schema", - "handlerCode": "Handler Code", - "handlerUnavailable": "Handler not available", - "runTestPlaceholder": "Run test (placeholder)", - "setModeAria": "Set mode {mode}", - "uninstallSkill": "Uninstall skill", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", - "delete": "Delete", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "title": "Habilidades", + "description": "Gestionar y supervisar habilidades de IA", + "skillsTab": "Habilidades", + "executionsTab": "Ejecuciones", + "selectSkillToInspect": "Selecciona una habilidad a la izquierda para inspeccionarla.", + "schemaTab": "Esquema", + "handlerTab": "Manejador", + "inputSchema": "Esquema de entrada", + "outputSchema": "Esquema de salida", + "handlerCode": "Código del manejador", + "handlerUnavailable": "Manejador no disponible", + "runTestPlaceholder": "Ejecutar prueba (marcador de posición)", + "setModeAria": "Establecer modo {mode}", + "uninstallSkill": "Desinstalar habilidad", + "sandboxTab": "Entorno aislado", + "loading": "Cargando habilidades...", + "noSkills": "No se encontraron habilidades", + "noExecutions": "No se encontraron ejecuciones", + "enabled": "Habilitado", + "disabled": "Deshabilitado", + "delete": "Eliminar", + "version": "Versión", + "tableDescription": "Descripción", + "skill": "Habilidad", + "status": "Estado", + "duration": "Duración", + "time": "Hora", + "sandboxConfig": "Configuración del entorno aislado", + "cpuLimit": "Límite de CPU", + "cpuLimitDesc": "Tiempo máximo de ejecución por habilidad", + "memoryLimit": "Límite de memoria", + "memoryLimitDesc": "Asignación máxima de memoria", + "timeout": "Tiempo de espera", + "timeoutDesc": "Tiempo máximo de espera de respuesta", + "networkAccess": "Acceso a la red", + "networkAccessDesc": "Permitir solicitudes de red salientes", + "mode": "Modo", "q": "Q", "filterSkillsPlaceholder": "Filtrar habilidades por nombre, descripción o etiqueta", "allModes": "Todos los modos", @@ -4608,37 +4608,37 @@ "totalExecutions": "Ejecuciones", "successRate": "Tasa de éxito", "marketplaceTab": "Mercado de habilidades", - "applyFilters": "Apply filters", - "popularDefaultsLabel": "Popular by default for selected provider:", - "onMode": "ON", - "offMode": "OFF", - "autoMode": "AUTO", - "installSkillButton": "Install Skill", - "installSkillModalTitle": "Install Skill", - "installJsonPlaceholder": "Paste skill manifest JSON here...", + "applyFilters": "Aplicar filtros", + "popularDefaultsLabel": "Popular de forma predeterminada para el proveedor seleccionado:", + "onMode": "ACTIVADO", + "offMode": "DESACTIVADO", + "autoMode": "AUTOMÁTICO", + "installSkillButton": "Instalar habilidad", + "installSkillModalTitle": "Instalar habilidad", + "installJsonPlaceholder": "Pega aquí el JSON del manifiesto de la habilidad...", "installing": "Instalando...", "installSuccess": "Habilidad instalada ({id})", - "installError": "Install failed", - "invalidJson": "Invalid JSON", - "searchMarketplacePlaceholder": "Search skills...", - "searchMarketplace": "Search Marketplace", - "marketplaceEmpty": "No skills found in marketplace", - "marketplaceError": "Search failed", - "installingFromMarketplace": "Installing from marketplace...", - "popularSkills": "Popular Skills", + "installError": "Error de instalación", + "invalidJson": "JSON no válido", + "searchMarketplacePlaceholder": "Buscar habilidades...", + "searchMarketplace": "Buscar en Marketplace", + "marketplaceEmpty": "No se encontraron habilidades en Marketplace", + "marketplaceError": "Error de búsqueda", + "installingFromMarketplace": "Instalando desde Marketplace...", + "popularSkills": "Habilidades populares", "skillsMarketplace": "Mercado de habilidades", - "searching": "Searching...", - "pageInfo": "Page {page} of {totalPages} ({total} total)", - "previous": "Previous", - "next": "Next", - "activeProvider": "Active provider:", - "changeInSettings": "Change this in Settings → Memory & Skills.", - "installs": "installs", - "marketplaceSkillsMpHint": "Configure your SkillsMP API key in Settings to browse the marketplace.", - "marketplaceSkillsShHint": "Search the skills.sh open directory to discover and install agent skills.", - "installSkillModalDesc": "Paste a skill manifest JSON or upload a .json file.", - "uploadJson": "Upload JSON", - "cancel": "Cancel", + "searching": "Buscando...", + "pageInfo": "Página {page} de {totalPages} ({total} en total)", + "previous": "Anterior", + "next": "Siguiente", + "activeProvider": "Proveedor activo:", + "changeInSettings": "Cámbialo en Ajustes → Memoria y habilidades.", + "installs": "instalaciones", + "marketplaceSkillsMpHint": "Configura tu clave de API de SkillsMP en Ajustes para explorar Marketplace.", + "marketplaceSkillsShHint": "Busca en el directorio abierto de skills.sh para descubrir e instalar habilidades de agentes.", + "installSkillModalDesc": "Pega el JSON del manifiesto de una habilidad o sube un archivo .json.", + "uploadJson": "Subir JSON", + "cancel": "Cancelar", "installSkill": "Instalar habilidad" }, "health": { @@ -4665,13 +4665,13 @@ "retry": "Reintentar", "allOperational": "Todos los sistemas operativos.", "issuesDetected": "Problemas del sistema detectados", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute está listo", + "healthVerdictActionRequired": "Se requiere una acción para restablecer el funcionamiento completo", + "healthVerdictCoolingDown": "En periodo de espera tras cambios recientes", + "healthSubtitle": "Comprobación del estado del sistema", + "advancedDiagnosticsTitle": "Diagnósticos avanzados", + "hide": "Ocultar", + "show": "Mostrar", "updatedAt": "Actualizado {time}", "latency": "Latencia", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "Proveedores", "configuredProvidersLabel": "Configurado en el tablero", "configuredProvidersHint": "Proveedores con credenciales guardadas en /dashboard/providers, independientemente del estado de ejecución.", - "activeProviders": "{count} active", + "activeProviders": "{count} activos", "activeProvidersHint": "Proveedores configurados actualmente habilitados para enrutar solicitudes.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} supervisados", "monitoredProvidersHint": "Proveedores actualmente rastreados por monitores de estado de interruptores.", "healthyCount": "{count} saludable", "nodeVersion": "Nodo {version}", @@ -4721,33 +4721,33 @@ "resetting": "Restableciendo...", "resetAll": "Restablecer todo", "until": "Hasta {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Agotado", + "learnedFromHeaders": "Obtenido de los encabezados", + "remainingOfLimit": "{remaining}/{limit} restantes", + "throttleStatus": "Limitación: {value}", + "lastHeaderUpdate": "Actualización de cabecera: {age}", "databaseHealth": "Estado de la base de datos", - "databaseHealthDescription": "Diagnose and repair stale quota/domain rows and broken combo references.", - "status": "Status", - "attentionNeeded": "Attention needed", - "repairs": "Repairs", - "repairing": "Repairing...", - "runAutoRepair": "Run Auto-Repair", - "repairBackupCreated": "A repair backup was created before mutating.", - "sessionActivity": "Session Activity", - "activeCount": "{count} active", - "requestCount": "{count, plural, one {# request} other {# requests}}", - "idleSeconds": "{count}s idle", - "ageSeconds": "{count}s age", - "quotaMonitors": "Quota Monitors", - "alerting": "Alerting", - "errors": "Errors", - "degradationFull": "Full", - "degradationReduced": "Reduced", - "degradationMinimal": "Minimal", - "degradationDefault": "Default", - "sinceTime": "Since {time}", - "retryIn": "retry in {duration}", + "databaseHealthDescription": "Diagnostica y repara filas obsoletas de cuotas/dominios y referencias de combos dañadas.", + "status": "Estado", + "attentionNeeded": "Requiere atención", + "repairs": "Reparaciones", + "repairing": "Reparando...", + "runAutoRepair": "Ejecutar reparación automática", + "repairBackupCreated": "Se creó una copia de seguridad antes de realizar cambios.", + "sessionActivity": "Actividad de la sesión", + "activeCount": "{count} activas", + "requestCount": "{count, plural, one {# solicitud} other {# solicitudes}}", + "idleSeconds": "{count} s de inactividad", + "ageSeconds": "{count} s de antigüedad", + "quotaMonitors": "Monitores de cuotas", + "alerting": "Alertas", + "errors": "Errores", + "degradationFull": "Completo", + "degradationReduced": "Reducido", + "degradationMinimal": "Mínimo", + "degradationDefault": "Predeterminado", + "sinceTime": "Desde {time}", + "retryIn": "reintento en {duration}", "stickyBoundSessions": "Sesiones encuadernadas", "sessionsByApiKey": "Sesiones por clave API", "noActiveSessionsTracked": "Aún no se han registrado sesiones activas.", @@ -4759,29 +4759,29 @@ "healthMatrixRange": "Rango de la matriz de salud", "providerFilter": "Filtro de proveedor", "onlyIssues": "Solo problemas", - "refresh": "Refresh", - "accounts": "Accounts", - "models": "Models", - "issues": "Issues", - "loadingProviderHealthMatrix": "Loading provider health matrix...", - "failedProviderHealthMatrix": "Failed to load Provider Health Matrix: {error}", - "noProvidersMatchedFilters": "No providers matched the current filters.", - "modelPillSummary": "{requests} req · {successRate} success · {latency} avg", - "modelLockoutSummary": "{reason} · {duration} left", - "locked": "locked", - "inferred": "inferred", - "inactive": "Inactive", - "noConnectionId": "no connection id", - "accountModelSummary": "{connectionId} · {count} models", + "refresh": "Actualizar", + "accounts": "Cuentas", + "models": "Modelos", + "issues": "Problemas", + "loadingProviderHealthMatrix": "Cargando la matriz de estado de proveedores...", + "failedProviderHealthMatrix": "No se pudo cargar la matriz de estado de proveedores: {error}", + "noProvidersMatchedFilters": "Ningún proveedor coincide con los filtros actuales.", + "modelPillSummary": "{requests} solicitudes · {successRate} de éxito · {latency} de media", + "modelLockoutSummary": "{reason} · quedan {duration}", + "locked": "bloqueado", + "inferred": "inferido", + "inactive": "Inactivo", + "noConnectionId": "sin ID de conexión", + "accountModelSummary": "{connectionId} · {count} modelos", "cooldown": "Enfriamiento", - "durationRemaining": "{duration} remaining", - "noSyncedModelsOrTraffic": "No synced models or recent traffic yet.", - "providerRowSummary": "{active}/{total} active accounts · {requests} req · {successRate} success · {latency} avg", - "cooldownCount": "{count} cooldown", - "lockoutCount": "{count} lockouts", - "issueCount": "{count} issues", - "score": "Score", - "lastRequest": "Last request", + "durationRemaining": "quedan {duration}", + "noSyncedModelsOrTraffic": "Aún no hay modelos sincronizados ni tráfico reciente.", + "providerRowSummary": "{active}/{total} cuentas activas · {requests} solicitudes · {successRate} de éxito · {latency} de media", + "cooldownCount": "{count} en espera", + "lockoutCount": "{count} bloqueos", + "issueCount": "{count} problemas", + "score": "Puntuación", + "lastRequest": "Última solicitud", "lastError": "Último error" }, "telemetry": { @@ -4888,84 +4888,84 @@ "previous": "Anterior", "next": "Siguiente", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Ver detalles", + "eventMetadata": "Metadatos del evento", + "eventPayload": "Contenido del evento", + "requestId": "ID de solicitud", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "Desplazamiento", + "limit": "Límite", + "status": "Estado", + "resourceType": "Tipo de recurso", + "totalEntries": "Total de entradas", + "tab": "Pestaña", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Cerrar", + "runningRequests": "Solicitudes activas", + "runningRequestsDesc": "Vista en tiempo real de las solicitudes ascendentes actualmente en curso", "clearAll": "Borrar todo", "confirmClearActiveRequests": "¿Borrar todas las solicitudes activas?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "Modelo", + "provider": "Proveedor", + "account": "Cuenta", + "elapsed": "Tiempo transcurrido", "activeStage": "Etapa", "activeStageUnknown": "Aún no se ha enviado al servidor superior", "activeStageRegistered": "Registrado", "activeStagePayloadPrepared": "Carga útil preparada", "activeStageWaitingAccountSlot": "Esperando ranura de cuenta", - "activeStageWaitingRateLimit": "Waiting for rate limiter", - "activeStageRateLimitSlotAcquired": "Rate limit slot acquired", - "activeStageSendingToProvider": "Sending to upstream", - "activeStageProviderResponseStarted": "Upstream response started", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", - "cleanHistoryButton": "Clean history", - "cleanHistoryTitle": "Clean log history?", - "cleanHistoryMessage": "This permanently clears all request log rows, legacy detail rows, and local artifact files under DATA_DIR/call_logs. The live page will refresh after cleanup.", - "cleanHistoryConfirm": "Clean history", - "cleanHistoryCancel": "Cancel", - "cleanHistorySuccess": "Cleaned {deleted} log entries, {deletedArtifacts} artifacts, and {deletedDetailedLogs} legacy detail rows.", - "cleanHistoryEmpty": "No request log history was found.", - "cleanHistoryFailed": "Failed to clean log history.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "activeStageWaitingRateLimit": "Esperando al limitador de velocidad", + "activeStageRateLimitSlotAcquired": "Cupo del límite de velocidad adquirido", + "activeStageSendingToProvider": "Enviando al servicio ascendente", + "activeStageProviderResponseStarted": "Respuesta del servicio ascendente iniciada", + "count": "Cantidad", + "payloads": "Contenidos", + "viewPayloads": "Ver", + "activeCount": "{count} activas", + "clientPayload": "Contenido de la solicitud del cliente", + "upstreamPayload": "Contenido enviado al proveedor ascendente", + "upstreamNotSentYet": "Aún no se ha enviado al servicio ascendente", + "runningRequestDetailMeta": "Cuenta: {account} — Tiempo transcurrido: {elapsed}", + "export": "Exportar", + "exporting": "Exportando...", + "exportFailed": "Error de exportación", + "cleanHistoryButton": "Limpiar historial", + "cleanHistoryTitle": "¿Limpiar el historial de registros?", + "cleanHistoryMessage": "Esto elimina permanentemente todas las filas del registro de solicitudes, las filas de detalles heredadas y los archivos de artefactos locales en DATA_DIR/call_logs. La página se actualizará después de la limpieza.", + "cleanHistoryConfirm": "Limpiar historial", + "cleanHistoryCancel": "Cancelar", + "cleanHistorySuccess": "Se han eliminado {deleted} entradas de registro, {deletedArtifacts} artefactos y {deletedDetailedLogs} filas de detalles heredadas.", + "cleanHistoryEmpty": "No se encontró ningún historial de registros de solicitudes.", + "cleanHistoryFailed": "No se pudo limpiar el historial de registros.", + "timeRange": "Intervalo de tiempo", + "lastNHours": "Últimas {hours}", + "defaultRange": "predeterminado", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", - "filterByLevel": "Filter by log level", - "searchPlaceholder": "Search logs…", - "searchAria": "Search log entries", - "disableAutoScroll": "Disable auto-scroll", - "enableAutoScroll": "Enable auto-scroll", - "autoScroll": "Auto-scroll", - "entryCount": "{count, plural, one {# entry} other {# entries}}", - "lastHour": "Last 1h", - "updatedAt": "Updated {time}", - "fileLoggingRequired": "Make sure the application is writing logs to a file (APP_LOG_TO_FILE=true)", - "consoleAria": "Application console logs", - "applicationConsole": "Application Console", - "emptyFileLoggingHint": "Ensure APP_LOG_TO_FILE=true is set in your .env file" + "fetchFailed": "No se pudieron obtener los registros", + "copyFailed": "No se pudo copiar la entrada del registro", + "copyLogEntry": "Copiar entrada del registro", + "filterByLevel": "Filtrar por nivel de registro", + "searchPlaceholder": "Buscar en los registros…", + "searchAria": "Buscar entradas del registro", + "disableAutoScroll": "Desactivar desplazamiento automático", + "enableAutoScroll": "Activar desplazamiento automático", + "autoScroll": "Desplazamiento automático", + "entryCount": "{count, plural, one {# entrada} other {# entradas}}", + "lastHour": "Última hora", + "updatedAt": "Actualizado a las {time}", + "fileLoggingRequired": "Asegúrate de que la aplicación esté escribiendo los registros en un archivo (APP_LOG_TO_FILE=true)", + "consoleAria": "Registros de la consola de la aplicación", + "applicationConsole": "Consola de la aplicación", + "emptyFileLoggingHint": "Asegúrate de que APP_LOG_TO_FILE=true esté definido en tu archivo .env" }, - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionLogTitle": "Registro de compresión", + "compressionLogEmpty": "Aún no hay solicitudes comprimidas. Las estadísticas de compresión aparecerán aquí cuando se procesen solicitudes con la compresión activada.", "tokens": "tokens" }, "onboarding": { "welcome": "Bienvenido", - "tiers": "Tiers", + "tiers": "Niveles", "security": "Seguridad", "test": "prueba", "ready": "¡Listo!", @@ -4987,9 +4987,9 @@ "multiProvider": "Multiproveedor", "usageTracking": "Seguimiento de uso", "securityDesc": "Establezca una contraseña para proteger su panel u omítala por ahora.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Sin una contraseña, no podrás añadir proveedores durante la configuración. Puedes añadirlos más adelante desde el panel después de establecer una contraseña.", "providerDesc": "Conecte su primer proveedor de IA. Puedes agregar más más tarde.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Primero debes establecer una contraseña para añadir proveedores. Vuelve al paso de seguridad y establece una contraseña, o añade los proveedores más adelante desde el panel.", "apiKeyRequired": "Clave API (obligatoria)", "customUrlOptional": "URL personalizada (opcional)", "testDesc": "Verifiquemos que la conexión de su proveedor funcione.", @@ -5010,8 +5010,8 @@ "apiKeyHelp": "Una clave API es una contraseña para los servicios de IA. Obtenga uno del sitio web de su proveedor (por ejemplo, platform.openai.com, console.anthropic.com).", "tier": { "subtitle": "OmniRoute organiza a los proveedores en tres niveles para que las rutas prefieran primero la ruta más confiable y de menor costo.", - "flowCaption": "Requests flow through your subscription quotas first, then pay-per-token cheap providers, then free-tier providers — automatic, zero-config.", - "afterSetup": "after setup.", + "flowCaption": "Las solicitudes pasan primero por las cuotas de tus suscripciones, luego por los proveedores económicos de pago por token y, finalmente, por los proveedores con nivel gratuito; todo de forma automática y sin configuración.", + "afterSetup": "después de la configuración.", "tier1": { "label": "Clientes premium", "description": "CLI de primera clase con flujos de autenticación nativos y modelos de razonamiento." @@ -5050,7 +5050,7 @@ }, "providers": { "title": "Proveedores", - "Account Deactivated": "Account Deactivated", + "Account Deactivated": "Cuenta desactivada", "allProviders": "Todos los proveedores", "audioProviders": "Proveedores de audio", "showFreeOnly": "Sólo gratis", @@ -5058,50 +5058,53 @@ "addFirstProvider": "Añade tu primer proveedor", "addFirstProviderDesc": "Conecte un proveedor de IA para comenzar a enrutar solicitudes a través de OmniRoute. Puede utilizar proveedores gratuitos, claves API o cuentas OAuth.", "learnMore": "Más información", - "importFromFile": "Import from file", - "importFromFileTitle": "Import providers from file", - "importFromFileDescription": "Upload a CSV or JSON file listing multiple providers (each row can be a different provider type). Review the parsed rows below and pick which ones to import.", - "importFromFileChoose": "Choose file", - "importFromFileSelectHint": "{count} of {total} selected", - "importFromFileColProvider": "Provider", - "importFromFileColName": "Name", - "importFromFileColBaseUrl": "Base URL", - "importFromFileErrorLine": "Row {line}: {reason}", - "importErrorMissingProvider": "missing provider", - "importErrorMissingName": "missing name", - "importErrorMissingApiKey": "missing API key", - "importErrorInvalidPriority": "invalid priority (must be 1-100)", - "importErrorMalformedRow": "malformed row", - "importErrorNotArray": "file must contain a JSON array", - "importFromFileImporting": "Importing…", - "importFromFileImport": "Import {count} providers", - "importFromFileResult": "Imported {success} providers ({failed} failed)", + "importFromFile": "Importar desde un archivo", + "importFromFileTitle": "Importar proveedores desde un archivo", + "importFromFileDescription": "Sube un archivo CSV o JSON que incluya varios proveedores (cada fila puede corresponder a un tipo de proveedor distinto). Revisa las filas analizadas a continuación y elige cuáles quieres importar.", + "importFromFileChoose": "Elegir archivo", + "importFromFileSelectHint": "{count} de {total} seleccionados", + "importFromFileColProvider": "Proveedor", + "importFromFileColName": "Nombre", + "importFromFileColBaseUrl": "URL base", + "importFromFileErrorLine": "Fila {line}: {reason}", + "importErrorMissingProvider": "falta el proveedor", + "importErrorMissingName": "falta el nombre", + "importErrorMissingApiKey": "falta la clave API", + "importErrorInvalidPriority": "prioridad no válida (debe estar entre 1 y 100)", + "importErrorMalformedRow": "fila con formato incorrecto", + "importErrorNotArray": "el archivo debe contener un array JSON", + "importFromFileImporting": "Importando…", + "importFromFileImport": "Importar {count} proveedores", + "importFromFileResult": "Se importaron {success} proveedores ({failed} con errores)", + "importFromFileDownloadTemplate": "Descargar plantilla CSV", + "importFromFileMoreErrors": "+{count} más", + "importFromFileSchemaHint": "Las columnas CSV son posicionales: provider, name, apiKey, baseUrl (opcional), priority (opcional). La columna provider debe contener el id de un proveedor administrado existente o el id de un nodo compatible con OpenAI/Anthropic ya registrado; esta importación no crea nuevos nodos de endpoint.", "adaptaTutorial": { - "title": "How to connect Adapta Web", - "introPrefix": "Adapta authenticates through Clerk. The token", - "introSuffix": "is a long-lived JWT that lets OmniRoute refresh sessions automatically.", - "or": "or", - "step1Title": "Open Adapta chat", - "step1DescPrefix": "Open", - "step1DescSuffix": "and sign in with your Gold or Business account.", - "step2Title": "Open DevTools", - "step2DescPrefix": "Press", - "step2DescSuffix": "to open Developer Tools.", - "step3Title": "Go to Application → Cookies", - "step3DescPrefix": "In the", - "step3DescMiddle": "expand", - "step3DescSuffix": "and click", - "step4Title": "Copy the cookie value for", - "step4DescPrefix": "Find the cookie named", - "step4DescMiddle": "in the list. Click it and copy the content from the", - "step4DescSuffix": "column. It starts with", - "step5Title": "Paste it here and save", - "step5DescPrefix": "Click", - "step5DescMiddle": "paste the", - "step5DescSuffix": "value into the API Key field, then save. OmniRoute will refresh the session automatically.", - "tipLabel": "Tip:", - "tipPrefix": "The", - "tipSuffix": "cookie is long-lived, usually for months. You only need to renew it if you sign out or Adapta invalidates the session." + "title": "Cómo conectar Adapta Web", + "introPrefix": "Adapta se autentica mediante Clerk. El token", + "introSuffix": "es un JWT de larga duración que permite a OmniRoute renovar las sesiones automáticamente.", + "or": "o", + "step1Title": "Abrir el chat de Adapta", + "step1DescPrefix": "Abre", + "step1DescSuffix": "e inicia sesión con tu cuenta Gold o Business.", + "step2Title": "Abrir DevTools", + "step2DescPrefix": "Pulsa", + "step2DescSuffix": "para abrir las herramientas de desarrollo.", + "step3Title": "Ve a Application → Cookies", + "step3DescPrefix": "En", + "step3DescMiddle": "expande", + "step3DescSuffix": "y haz clic en", + "step4Title": "Copia el valor de la cookie de", + "step4DescPrefix": "Busca la cookie llamada", + "step4DescMiddle": "en la lista. Haz clic en ella y copia el contenido de la columna", + "step4DescSuffix": ". Empieza por", + "step5Title": "Pégalo aquí y guarda", + "step5DescPrefix": "Haz clic en", + "step5DescMiddle": "pega el valor de", + "step5DescSuffix": "en el campo Clave API y guarda. OmniRoute renovará la sesión automáticamente.", + "tipLabel": "Consejo:", + "tipPrefix": "La", + "tipSuffix": "cookie tiene una larga duración, normalmente de varios meses. Solo necesitas renovarla si cierras sesión o Adapta invalida la sesión." }, "editProvider": "Editar proveedor", "deleteProvider": "Eliminar proveedor", @@ -5131,42 +5134,42 @@ "reorderByAvailability": "Reordenar", "reorderByAvailabilityTitle": "Reordenar conexiones por disponibilidad", "reorderByAvailabilityError": "No se pudieron reordenar las conexiones por disponibilidad", - "distributeProxies": "Distribute Proxies", - "distributing": "Distributing...", - "selectedCount": "{count, plural, one {# selected} other {# selected}}", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "distributeProxies": "Distribuir proxies", + "distributing": "Distribuyendo...", + "selectedCount": "{count, plural, one {# seleccionado} other {# seleccionados}}", + "accountsCount": "{count, plural, one {# cuenta} other {# cuentas}}", "testAllOAuth": "Pruebe todas las conexiones OAuth", "testAllFree": "Pruebe todas las conexiones gratuitas", "testAllApiKey": "Pruebe todas las conexiones de clave API", "testAllCompatible": "Pruebe todas las conexiones compatibles", - "testAllModels": "Test all models", - "testAllModelsConfirm": "Test all visible models? Failed models will be hidden if auto-hide is enabled.", - "testingAllModels": "Testing {done}/{total}...", - "testAllResults": "{ok} of {total} models working", - "noModelsToTest": "No models match the current filter", - "showAllModels": "All", - "showVisibleOnly": "Visible only", - "freeFilterAll": "All", - "freeFilterFreeOnly": "Free only", - "freeFilterPaidOnly": "Paid only", - "sortFreeFirst": "Free first", - "showHiddenOnly": "Hidden only", - "filterByVisibility": "Filter by visibility", - "autoHideFailed": "Auto-hide failed models", - "autoHideFailedHint": "When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.", + "testAllModels": "Probar todos los modelos", + "testAllModelsConfirm": "¿Probar todos los modelos visibles? Los modelos que fallen se ocultarán si está activada la ocultación automática.", + "testingAllModels": "Probando {done}/{total}...", + "testAllResults": "{ok} de {total} modelos funcionan", + "noModelsToTest": "Ningún modelo coincide con el filtro actual", + "showAllModels": "Todos", + "showVisibleOnly": "Solo visibles", + "freeFilterAll": "Todos", + "freeFilterFreeOnly": "Solo gratuitos", + "freeFilterPaidOnly": "Solo de pago", + "sortFreeFirst": "Gratuitos primero", + "showHiddenOnly": "Solo ocultos", + "filterByVisibility": "Filtrar por visibilidad", + "autoHideFailed": "Ocultar automáticamente los modelos que fallen", + "autoHideFailedHint": "Cuando está activado, Probar todos oculta de los catálogos públicos, como /v1/models, los fallos no transitorios. Las pruebas de modelos individuales nunca los ocultan automáticamente.", "connected": "{count} Conectado", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", - "testAllCompleted": "Tested {total} models: {ok} OK, {failed} failed", - "modelAutoHidden": "Model {model} auto-hidden (test failed)", + "errorCount": "{count} error ({code})", + "errorCountNoCode": "{count} error", + "testAllCompleted": "Se probaron {total} modelos: {ok} correctos, {failed} fallidos", + "modelAutoHidden": "Modelo {model} ocultado automáticamente (la prueba falló)", "filterAll": "Todos", - "filterVisible": "Visible only", - "filterHidden": "Hidden only", - "modelsHiddenCount": "{count} hidden", + "filterVisible": "Solo visibles", + "filterHidden": "Solo ocultos", + "modelsHiddenCount": "{count} ocultos", "warningCount": "{count} Advertencia", "noConnections": "Sin conexiones", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Caducado", + "expiringSoonBadge": "Caduca pronto", "freeTier": "Nivel gratuito", "freeTierAvailable": "Nivel gratuito disponible", "hasFreeTooltip": "Nivel gratuito disponible", @@ -5177,20 +5180,20 @@ "deprecated": "En desuso", "deprecatedProvider": "Este proveedor ha quedado obsoleto.", "riskNotice": { - "title": "Before continuing", - "detailsTitle": "Usage caveats", - "tooltip": "Provider with usage caveats — click for details", - "oauth": "This provider uses your official product session/OAuth, which is not authorized for proxy/router use. We don't recommend intensive autonomous agent usage (OpenCloud-style, long multi-step flows, large batches) — the upstream may react by restricting or banning the account. Use at your own risk.", - "webCookie": "This provider authenticates through your web session cookies. The upstream service may invalidate the session at any time, requiring you to log in again. Not recommended for long unattended operations. Use at your own risk.", - "deprecated": "This provider was discontinued by its upstream and may stop working without notice. Existing connections may continue working until the upstream fully removes access. Consider alternatives.", - "dontShowAgain": "Don't show this again for this provider", - "understand": "I understand, continue", - "cancel": "Cancel" + "title": "Antes de continuar", + "detailsTitle": "Advertencias de uso", + "tooltip": "Proveedor con advertencias de uso — haz clic para ver los detalles", + "oauth": "Este proveedor utiliza la sesión/OAuth de tu producto oficial, cuyo uso con proxies o routers no está autorizado. No recomendamos un uso intensivo de agentes autónomos (al estilo de OpenCloud, flujos largos de varios pasos o lotes grandes), ya que el servicio de origen podría responder restringiendo o bloqueando la cuenta. Úsalo bajo tu propia responsabilidad.", + "webCookie": "Este proveedor se autentica mediante las cookies de tu sesión web. El servicio de origen puede invalidar la sesión en cualquier momento, por lo que tendrás que volver a iniciar sesión. No se recomienda para operaciones largas sin supervisión. Úsalo bajo tu propia responsabilidad.", + "deprecated": "Este proveedor fue descontinuado por su servicio de origen y puede dejar de funcionar sin previo aviso. Las conexiones existentes pueden seguir funcionando hasta que el servicio de origen elimine por completo el acceso. Considera otras alternativas.", + "dontShowAgain": "No volver a mostrar esto para este proveedor", + "understand": "Entiendo, continuar", + "cancel": "Cancelar" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} conexión(es) marcada(s): hasta {maxFailures} fallos recientes{lastFailureSuffix}. Haz clic para ver el estado de las conexiones.", + "lastFailureSuffix": "(último fallo {time})", + "ariaLabel": "Ver detalles del estado de las conexiones, {count} advertencia(s)" }, "disabled": "Deshabilitado", "enableProvider": "Habilitar proveedor", @@ -5225,7 +5228,7 @@ "failedCreate": "No se pudo crear el proveedor", "errorOccurred": "Se produjo un error. Por favor inténtalo de nuevo.", "modelStatus": "Estado del modelo", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Solo configuradas", "allModelsOperational": "Todos los modelos operativos.", "modelsWithIssues": "{count} modelo(s) con problemas", "allModelsNormal": "Todos los modelos están respondiendo normalmente.", @@ -5236,7 +5239,7 @@ "clearing": "Limpiando...", "until": "Hasta {time}", "providerTestFailed": "La prueba del proveedor falló", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "La prueba del proveedor agotó el tiempo de espera: hay demasiadas conexiones para probarlas a la vez", "modeTest": "{mode} Prueba", "passedCount": "{count} pasó", "failedCount": "{count} falló", @@ -5254,13 +5257,13 @@ "prefixHint": "Requerido. Prefijo único para nombres de modelos.", "nameHint": "Requerido. Una etiqueta amigable para este nodo.", "baseUrlHint": "Requerido. URL base de la API del proveedor.", - "iconUrlLabel": "Icon URL", - "iconUrlHint": "Optional. Image URL shown as this provider's icon.", + "iconUrlLabel": "URL del icono", + "iconUrlHint": "Opcional. URL de la imagen que se muestra como icono de este proveedor.", "iconUrlInvalid": "URL de icono no válida. Utilice una URL http(s):// o data:image/*;base64.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Zona horaria de restablecimiento de la cuota diaria", + "dailyQuotaResetTimezoneHint": "Zona horaria IANA opcional que se utiliza cuando el servicio de origen omite X-RateLimit-Reset. Déjalo vacío para mantener un breve tiempo de espera.", + "dailyQuotaResetHourLabel": "Hora de restablecimiento de la cuota diaria", + "dailyQuotaResetHourHint": "Hora local de 0 a 23 en la zona horaria indicada arriba. Si se deja vacío, no habrá reloj a nivel de nodo.", "anthropicPrefixPlaceholder": "producto ac", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,29 +5277,29 @@ "providerNotFound": "Proveedor no encontrado", "deleteConnectionConfirm": "¿Eliminar esta conexión?", "deleteConnectionConfirmNamed": "¿Estás seguro de que deseas eliminar {name}? Esta acción no se puede deshacer.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", - "batchActivateSelected": "Activate", - "batchDeactivateSelected": "Deactivate", - "batchRetestSelected": "Retest", - "batchActivateSuccess": "Activated {count} connection(s)", - "batchDeactivateSuccess": "Deactivated {count} connection(s)", - "batchUpdatePartial": "{count} updated, {skipped} skipped (no longer exist)", - "batchUpdateNone": "No connections were updated (they may no longer exist)", - "batchRetestLimit": "Retest up to {max} connections at a time", - "noConnectionsToTest": "No matching connections to test", - "batchDeleteConfirmTitle": "Delete connections", - "batchDeleteConfirmButton": "Delete", + "batchDeleteSelected": "Eliminar seleccionadas ({count})", + "batchDeleteConfirm": "¿Eliminar {count} conexión(es)? Esta acción no se puede deshacer.", + "batchDeleteSuccess": "Se eliminaron {count} conexión(es)", + "batchActivateSelected": "Activar", + "batchDeactivateSelected": "Desactivar", + "batchRetestSelected": "Volver a probar", + "batchActivateSuccess": "Se activaron {count} conexión(es)", + "batchDeactivateSuccess": "Se desactivaron {count} conexión(es)", + "batchUpdatePartial": "{count} actualizada(s), {skipped} omitida(s) (ya no existen)", + "batchUpdateNone": "No se actualizó ninguna conexión (es posible que ya no existan)", + "batchRetestLimit": "Volver a probar hasta {max} conexiones a la vez", + "noConnectionsToTest": "No hay conexiones coincidentes para probar", + "batchDeleteConfirmTitle": "Eliminar conexiones", + "batchDeleteConfirmButton": "Eliminar", "filterActive": "Activo", "filterError": "Error", "filterBanned": "Bloqueado", "filterCreditsExhausted": "Créditos agotados", - "accountSearchPlaceholder": "Search accounts…", - "noFilteredConnections": "No connections match the current filter.", + "accountSearchPlaceholder": "Buscar cuentas…", + "noFilteredConnections": "Ninguna conexión coincide con el filtro actual.", "failedSetAlias": "No se pudo establecer el alias", - "setAliasSuccess": "Alias {alias} set", - "deleteAliasSuccess": "Alias {alias} deleted", + "setAliasSuccess": "Alias {alias} establecido", + "deleteAliasSuccess": "Alias {alias} eliminado", "failedSaveConnection": "No se pudo guardar la conexión", "failedSaveConnectionRetry": "No se pudo guardar la conexión. Por favor inténtalo de nuevo.", "failedRetestConnection": "No se pudo volver a probar la conexión", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "Detalles compatibles con OpenAI", "messagesApi": "API de mensajes", "responsesApi": "API de respuestas", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Incrustaciones", + "audioTranscriptions": "Transcripciones de audio", + "audioSpeech": "Síntesis de voz", + "imagesGenerations": "Generación de imágenes", "chatCompletions": "Finalizaciones de chat", "importingModels": "Importando...", "importFromModels": "Importar desde /modelos", - "modelsImported": "{count} models imported", + "modelsImported": "Se importaron {count} modelos", "allModelsAlreadyImported": "Todos los modelos ya están importados", "noNewModelsToImport": "No hay modelos nuevos para importar — todos los modelos ya están en el registro o en la lista de modelos personalizados", "skippingExistingModels": "Omitiendo {count} modelos existentes", @@ -5343,36 +5346,36 @@ "connectionCount": "{count} conexión(es)", "fetchingModels": "Recuperando modelos disponibles...", "failedFetchModels": "No se pudieron recuperar los modelos", - "noFreeModelsFound": "No free models found for this provider — nothing imported.", - "fetchModelsSuccess": "Found {count} new models", - "fetchModelsFailed": "Could not auto-fetch models (you can retry from settings)", + "noFreeModelsFound": "No se encontraron modelos gratuitos para este proveedor; no se importó nada.", + "fetchModelsSuccess": "Se encontraron {count} modelos nuevos", + "fetchModelsFailed": "No se pudieron obtener automáticamente los modelos (puedes volver a intentarlo desde la configuración)", "noModelsFound": "No se encontraron modelos", "importFailed": "Importación fallida", "noNewModelsAdded": "No se agregaron nuevos modelos.", "adding": "Añadiendo...", - "close": "Close", + "close": "Cerrar", "importingModelsTitle": "Importar modelos", "copyModel": "Copiar modelo", "filterModels": "Filtrar modelos…", - "testAllRateLimited": "Rate limit reached, stopped early", - "hideFailedAuto": "Auto-hide failed models", - "selectAllModels": "Select all", - "hideAllModels": "Hide all", + "testAllRateLimited": "Se alcanzó el límite de solicitudes; se detuvo antes de tiempo", + "hideFailedAuto": "Ocultar automáticamente los modelos fallidos", + "selectAllModels": "Seleccionar todo", + "hideAllModels": "Ocultar todo", "modelsActive": "activos", "showModel": "Mostrar modelo", "hideModel": "Ocultar modelo", "removeModel": "Quitar modelo", "rateLimitProtected": "Protegido", "rateLimitUnprotected": "Desprotegido", - "providerQuotaShort": "Quota", - "hideConnectionFromProviderQuota": "Hide this account from Provider Quota", - "showConnectionInProviderQuota": "Show this account in Provider Quota", - "quotaVisibilityUpdateFailed": "Failed to update Provider Quota visibility", + "providerQuotaShort": "Cuota", + "hideConnectionFromProviderQuota": "Ocultar esta cuenta de la cuota del proveedor", + "showConnectionInProviderQuota": "Mostrar esta cuenta en la cuota del proveedor", + "quotaVisibilityUpdateFailed": "No se pudo actualizar la visibilidad en la cuota del proveedor", "enableRateLimitProtection": "Haga clic para habilitar la protección del límite de velocidad", "disableRateLimitProtection": "Haga clic para desactivar la protección del límite de velocidad", - "testAllProgress": "Tested {done}/{total}", - "testAllFailedHidden": "{count} failed models hidden", - "testAllDone": "All models tested", + "testAllProgress": "Probados {done}/{total}", + "testAllFailedHidden": "{count} modelos fallidos ocultos", + "testAllDone": "Todos los modelos probados", "productionKey": "Clave de producción", "enterNewApiKey": "Ingrese la nueva clave API", "codexApplyModalTitle": "Aplicar al códice local", @@ -5386,13 +5389,13 @@ "bulkAddFormatHint": "Una clave por línea. Formato: nombre|apiKey o simplemente apiKey (nombrado automáticamente por índice).", "bulkValidateKeys": "Validar cada clave antes de guardar (más lento)", "bulkAddAllKeys": "Agregar todas las claves", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# clave añadida} other {# claves añadidas}}", + "bulkFailedCount": "{count, plural, one {# fallido} other {# fallidos}}", "optional": "Opcional", "anthropicCompatibleName": "Compatible antrópico", "openaiCompatibleName": "Compatible con OpenAI", - "compatibleDefaultModelLabel": "Default Model", - "compatibleDefaultModelHint": "Enter the model ID exactly as your compatible endpoint expects it. This model will be saved as the connection default.", + "compatibleDefaultModelLabel": "Modelo predeterminado", + "compatibleDefaultModelHint": "Introduce el ID del modelo exactamente como lo espera tu endpoint compatible. Este modelo se guardará como predeterminado para la conexión.", "failedImportModels": "No se pudieron importar modelos", "noModelsReturnedFromEndpoint": "No se devolvieron modelos desde el punto final /models.", "importingModelsProgress": "Importando {current} de {total} modelos...", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Ocurrió un error inesperado", "getApiKey": "Obtener clave API", "getApiKeyDescription": "Regístrate o crea una cuenta para obtener una clave API", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# conexión} other {# conexiones}}", "messagesPath": "mensajes", "responsesPath": "respuestas", "chatCompletionsPath": "chat/finalizaciones", @@ -5428,8 +5431,8 @@ "addFirstConnectionHint": "Agregue su primera conexión para comenzar", "addConnection": "Agregar conexión", "availableModels": "Modelos disponibles", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Modelos integrados", + "builtInModelsHint": "Modelos del registro para este proveedor. Usa el lápiz para configurar las opciones de compatibilidad.", "pageAutoRefresh": "La página se actualizará automáticamente...", "statusDisabled": "deshabilitado", "statusConnected": "conectado", @@ -5452,20 +5455,20 @@ "errorTypeNetworkError": "error de red", "errorTypeTestUnsupported": "Prueba no compatible", "errorTypeUpstreamError": "Error ascendente", - "errorTypeCreditsExhausted": "No credits", - "errorTypeBanned": "403 Banned", + "errorTypeCreditsExhausted": "Sin créditos", + "errorTypeBanned": "403 Bloqueado", "proxySourceGlobal": "Mundial", "proxySourceProvider": "Proveedor", "proxySourceKey": "clave", "proxyConfiguredBySource": "Proxy ({source}): {host}", - "proxyOn": "Proxy On", - "proxyOff": "Direct (bypass proxy)", - "proxyEnabledTitle": "Proxy is enabled for this connection", - "proxyDisabledTitle": "Direct connection — bypasses every proxy (including the global proxy) for this connection", - "perKeyProxyOn": "Per-key", - "perKeyProxyOff": "Connection", - "perKeyProxyEnabledTitle": "Per-key proxy assignment enabled for this provider", - "perKeyProxyDisabledTitle": "Per-key proxy assignment disabled for this provider", + "proxyOn": "Proxy activado", + "proxyOff": "Directa (omitir proxy)", + "proxyEnabledTitle": "El proxy está activado para esta conexión", + "proxyDisabledTitle": "Conexión directa: omite todos los proxies (incluido el proxy global) para esta conexión", + "perKeyProxyOn": "Por clave", + "perKeyProxyOff": "Conexión", + "perKeyProxyEnabledTitle": "La asignación de proxy por clave está activada para este proveedor", + "perKeyProxyDisabledTitle": "La asignación de proxy por clave está desactivada para este proveedor", "autoPriority": "Automático: {priority}", "proxy": "apoderado", "retestAuthentication": "Volver a probar la autenticación", @@ -5475,88 +5478,88 @@ "reauthenticateConnection": "Volver a autenticar esta conexión", "proxyConfig": "Configuración de proxy", "aliasExistsAlert": "El alias \"{alias}\" ya existe. Utilice un modelo diferente o edite el alias existente.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "nombre del alias", + "clickToSetAlias": "Haz clic para establecer el alias", + "clickToEditAlias": "Alias: {alias} (haz clic para editar)", "openRouterAnyModelHint": "OpenRouter admite cualquier modelo. Agregue modelos y cree alias para un acceso rápido.", "modelIdFromOpenRouter": "ID del modelo (de OpenRouter)", "openRouterModelPlaceholder": "antrópico/claude-3-opus", "customModels": "Modelos personalizados", "customModelsHint": "Agregue ID de modelo que no estén en la lista predeterminada. Estos estarán disponibles para enrutamiento.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normalizar los ID de llamadas a herramientas a 9 caracteres (p. ej., Mistral)", + "preserveDeveloperRoleLabel": "Mantener el rol developer de OpenAI Responses (no asignarlo a system)", + "compatAdjustmentsTitle": "Compatibilidad", + "compatButtonLabel": "Compatibilidad", + "compatToolIdShort": "ID de herramienta 9", + "compatDeveloperShort": "Rol developer", + "compatDoNotPreserveDeveloper": "No conservar el rol developer", + "compatBadgeNoPreserve": "No conservar", + "compatProtocolLabel": "Protocolo de solicitud del cliente", + "compatProtocolHint": "Estas opciones se aplican cuando OmniRoute detecta este formato de solicitud (OpenAI Chat, Responses API o Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", - "targetFormatLabel": "Target Format", - "targetFormatHint": "Override the upstream wire format. Use 'Anthropic Messages' to route OpenAI-compatible providers (e.g. opencode-go) through the /v1/messages endpoint.", - "targetFormatAuto": "Default (auto)", + "targetFormatLabel": "Formato de destino", + "targetFormatHint": "Sobrescribe el formato de comunicación con el proveedor. Usa 'Anthropic Messages' para enrutar proveedores compatibles con OpenAI (p. ej., opencode-go) a través del endpoint /v1/messages.", + "targetFormatAuto": "Predeterminado (automático)", "targetFormatGemini": "Gemini", "targetFormatAntigravity": "Antigravity", - "contextWindowOverrideLabel": "Context Window Override", - "contextWindowOverridePlaceholder": "e.g. 131072", - "contextWindowOverrideHint": "Manually set this model's real context window (tokens) when the provider misreports it. Wins over auto-detected/catalog values and prevents combo routing from dropping the model.", - "contextWindowOverrideInvalid": "Context window override must be a positive whole number of tokens", - "visionCapableLabel": "Vision capable", - "visionCapableHint": "Manually flag this model as vision-capable when the provider's discovery metadata doesn't report an image input modality (common for self-hosted/local backends).", - "compatParamFiltersLabel": "Param Filters", - "compatBlockedParamsHint": "Blocked params (stripped from requests)", - "compatAllowedParamsHint": "Allowed params (re-added after deny)", - "paramFiltersSectionTitle": "Param Filters", - "paramFiltersSectionHint": "Strip or re-add request parameters before sending to this provider. Used to avoid 400 errors from providers that reject certain params (e.g. NVIDIA NIM rejects thinking).", - "paramFiltersBlockedLabel": "Blocked parameters", - "paramFiltersBlockedHint": "These params are stripped from outgoing requests (denylist).", - "paramFiltersAllowedLabel": "Allowed parameters", - "paramFiltersAllowedHint": "These params are re-added after denylist stripping (only if the client sent them).", - "paramFiltersAutoLearnLabel": "Auto-learn from 400 errors", - "paramFiltersAutoLearnHint": "When enabled, if the upstream returns a 400 with \"Unsupported parameter: X\", the param is automatically added to the block list and the request retried.", - "paramFiltersSaving": "Saving…", - "paramFiltersSaveChanges": "Save Changes", - "paramFiltersResetToDefault": "Reset to Default", - "paramFiltersLoadError": "Failed to load param filter config: {error}", - "paramFiltersSaveSuccess": "Param filter config saved", - "paramFiltersSaveError": "Failed to save param filter config: {error}", - "paramFiltersResetSuccess": "Param filter config reset to defaults", - "paramFiltersResetError": "Failed to reset param filter config: {error}", - "interceptionSectionTitle": "Web Tool Interception", - "interceptionSectionHint": "Route this provider's native web_search / web_fetch tool calls through OmniRoute's own search and fetch endpoints instead of letting the provider run them natively. Off by default — existing behavior is unchanged.", - "interceptSearchLabel": "Intercept web_search", - "interceptSearchHint": "Rewrite native web_search tool calls to OmniRoute's /v1/search.", - "interceptFetchLabel": "Intercept web_fetch", - "interceptFetchHint": "Rewrite native web_fetch tool calls to OmniRoute's /v1/web/fetch.", - "interceptionLoadError": "Failed to load interception settings: {error}", - "interceptionSaveError": "Failed to save interception settings: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "contextWindowOverrideLabel": "Sobrescritura de la ventana de contexto", + "contextWindowOverridePlaceholder": "p. ej., 131072", + "contextWindowOverrideHint": "Establece manualmente la ventana de contexto real de este modelo (en tokens) cuando el proveedor la indica de forma incorrecta. Tiene prioridad sobre los valores detectados automáticamente o del catálogo, y evita que el enrutamiento combinado descarte el modelo.", + "contextWindowOverrideInvalid": "La sobrescritura de la ventana de contexto debe ser un número entero positivo de tokens", + "visionCapableLabel": "Compatible con visión", + "visionCapableHint": "Marca manualmente este modelo como compatible con visión cuando los metadatos de detección del proveedor no indican una modalidad de entrada de imágenes (algo habitual en backends locales o autoalojados).", + "compatParamFiltersLabel": "Filtros de parámetros", + "compatBlockedParamsHint": "Parámetros bloqueados (eliminados de las solicitudes)", + "compatAllowedParamsHint": "Parámetros permitidos (restaurados tras la denegación)", + "paramFiltersSectionTitle": "Filtros de parámetros", + "paramFiltersSectionHint": "Elimina o restaura parámetros de la solicitud antes de enviarla a este proveedor. Se utiliza para evitar errores 400 de proveedores que rechazan determinados parámetros (p. ej., NVIDIA NIM rechaza thinking).", + "paramFiltersBlockedLabel": "Parámetros bloqueados", + "paramFiltersBlockedHint": "Estos parámetros se eliminan de las solicitudes salientes (lista de denegación).", + "paramFiltersAllowedLabel": "Parámetros permitidos", + "paramFiltersAllowedHint": "Estos parámetros se restauran después de aplicar la lista de denegación (solo si el cliente los envió).", + "paramFiltersAutoLearnLabel": "Aprender automáticamente de errores 400", + "paramFiltersAutoLearnHint": "Cuando esta opción está activada, si el proveedor devuelve un error 400 con \"Unsupported parameter: X\", el parámetro se añade automáticamente a la lista de bloqueo y se vuelve a intentar la solicitud.", + "paramFiltersSaving": "Guardando…", + "paramFiltersSaveChanges": "Guardar cambios", + "paramFiltersResetToDefault": "Restablecer valores predeterminados", + "paramFiltersLoadError": "No se pudo cargar la configuración de filtros de parámetros: {error}", + "paramFiltersSaveSuccess": "Configuración de filtros de parámetros guardada", + "paramFiltersSaveError": "No se pudo guardar la configuración de filtros de parámetros: {error}", + "paramFiltersResetSuccess": "La configuración de filtros de parámetros se restableció a los valores predeterminados", + "paramFiltersResetError": "No se pudo restablecer la configuración de filtros de parámetros: {error}", + "interceptionSectionTitle": "Interceptación de herramientas web", + "interceptionSectionHint": "Enruta las llamadas nativas de este proveedor a las herramientas web_search / web_fetch a través de los endpoints de búsqueda y obtención de OmniRoute, en lugar de permitir que el proveedor las ejecute de forma nativa. Esta opción está desactivada de forma predeterminada; el comportamiento actual no cambia.", + "interceptSearchLabel": "Interceptar web_search", + "interceptSearchHint": "Reescribe las llamadas nativas a la herramienta web_search para que usen /v1/search de OmniRoute.", + "interceptFetchLabel": "Interceptar web_fetch", + "interceptFetchHint": "Reescribe las llamadas nativas a la herramienta web_fetch para que usen /v1/web/fetch de OmniRoute.", + "interceptionLoadError": "No se pudo cargar la configuración de interceptación: {error}", + "interceptionSaveError": "No se pudo guardar la configuración de interceptación: {error}", + "ccAliasSectionTitle": "Exponer en Claude Code (claude/…)", + "ccAliasSectionHint": "Publica los modelos de este proveedor con identificadores espejo claude/<provider>/<model> para que el descubrimiento de modelos de la puerta de enlace de Claude Code pueda mostrarlos. Está desactivado de forma predeterminada; al activarlo se duplican las entradas del catálogo para todos los clientes.", + "ccAliasProviderLevelLabel": "Valor predeterminado del proveedor", + "ccAliasModelOverridesLabel": "Anulaciones por modelo", + "ccAliasModelOverrideAriaLabel": "Anulación para {modelId}", + "ccAliasStateInherit": "Heredar", + "ccAliasStateOn": "Activado", + "ccAliasStateOff": "Desactivado", + "ccAliasAddModelPlaceholder": "ID del modelo (p. ej., gpt-4o)", + "ccAliasAddModelButton": "Añadir anulación", + "ccAliasLoadError": "No se pudo cargar la configuración de alias de descubrimiento: {error}", + "ccAliasSaveError": "No se pudo guardar la configuración de alias de descubrimiento: {error}", + "compatUpstreamHeadersLabel": "Encabezados adicionales del servicio de origen", + "compatUpstreamHeadersHint": "Configuración de privilegios elevados: tiene el mismo nivel de confianza que editar las credenciales de la API del proveedor; solo deben usarla administradores de confianza. Se combina después de que OmniRoute añada la autenticación mediante la clave de API del proveedor. Si un encabezado personalizado usa el mismo nombre que uno existente (p. ej., Authorization), su valor sustituye por completo el encabezado generado automáticamente (incluido el token Bearer); el servicio de origen solo verá lo que haya escrito, no la clave de la configuración. Una configuración incorrecta puede provocar errores 401 o impedir la autenticación con el servicio de origen. Una fila por encabezado (p. ej., autenticación adicional para algunas puertas de enlace). Pase el cursor sobre el valor o selecciónelo para obtener una vista previa. Se guarda al perder el foco, al hacer clic fuera o al cerrar este panel.", + "compatUpstreamHeaderName": "Nombre del encabezado", + "compatUpstreamHeaderValue": "Valor", + "compatUpstreamAddRow": "Añadir encabezado", + "compatUpstreamRemoveRow": "Eliminar fila", + "compatBadgeUpstreamHeaders": "Encabezados", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", - "importFreeModelsOnlyLabel": "Import only free models", - "importFreeModelsOnlyHint": "When enabled, only this provider's free models are imported. Paid models are skipped.", + "importFreeModelsOnlyLabel": "Importar solo modelos gratuitos", + "importFreeModelsOnlyHint": "Cuando esta opción está activada, solo se importan los modelos gratuitos de este proveedor. Los modelos de pago se omiten.", "perModelQuotaToggle": "Alternar cuota por modelo", "modelId": "ID del modelo", "customModelPlaceholder": "por ej. gpt-4.5-turbo", @@ -5592,26 +5595,26 @@ "email": "Correo electrónico", "healthCheckMinutes": "Control de salud (min)", "healthCheckHint": "Intervalo de actualización de token proactivo. 0 = deshabilitado.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Deseleccionar todo", + "modelsActiveCount": "{active}/{total} activos", + "noModelsMatch": "Ningún modelo coincide con «{filter}»", + "groupLabel": "Entorno", + "groupPlaceholder": "p. ej., eKaizen, Personal", "failedTestConnection": "No se pudo probar la conexión", "failed": "Fallido", "leaveBlankKeepCurrentApiKey": "Déjelo en blanco para conservar la clave API actual.", "editCompatibleTitle": "Editar {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "URL raíz de su API compatible con {type}. Use la configuración avanzada para definir rutas de endpoint personalizadas.", "apiKeyForCheck": "Clave API (para verificación)", - "testModelIdLabel": "Model ID (optional)", - "testModelIdPlaceholder": "e.g. my-model-id", - "testModelIdHint": "If the provider lacks a /models endpoint, enter a model ID to validate via /chat/completions instead.", + "testModelIdLabel": "ID del modelo (opcional)", + "testModelIdPlaceholder": "p. ej., my-model-id", + "testModelIdHint": "Si el proveedor no dispone de un endpoint /models, introduzca un ID de modelo para validarlo mediante /chat/completions.", "compatibleProdPlaceholder": "{type} Compatible (Prod.)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Token actualizado correctamente", + "tokenRefreshFailed": "Error al actualizar el token", "cursorSessionUnchanged": "La sesión ya está activa", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Aplicar autenticación", + "exportCodexAuthFile": "Exportar autenticación", "applyClaudeAuthLocal": "Aplicar autenticación", "exportClaudeAuthFile": "Autenticación de exportación", "importClaudeAuth": "Importar autenticación", @@ -5690,19 +5693,19 @@ "codexAuthApplyFailed": "Failed to apply Codex auth.json locally", "codexAuthExported": "Codex auth.json exported", "codexAuthExportFailed": "Failed to export Codex auth.json", - "codexCliGuideButton": "Codex CLI Guide", - "codexCliGuideTitle": "Codex CLI Guide", - "codexCliGuideLoading": "Loading guide...", - "codexCliGuideLoadFailed": "Could not load the guide.", - "codexExternalLinkButton": "External Codex link", - "codexExternalLinkModalTitle": "External Codex link", - "codexExternalLinkModalDescription": "Share this single-use link with the person who will authenticate the Codex account. They open it in their own browser, complete the OpenAI login, and the connection is registered here. The link expires in 15 minutes.", - "codexExternalLinkGenerating": "Generating link...", - "codexExternalLinkWaiting": "Waiting for browser authentication. This window refreshes automatically.", - "codexExternalLinkCreateFailed": "Failed to generate the link.", - "codexExternalLinkNetworkError": "Could not contact the server.", - "codexExternalLinkConnected": "Codex account connected through the external link.", - "codexExternalLinkExpired": "The link expired before completion.", + "codexCliGuideButton": "Guía de Codex CLI", + "codexCliGuideTitle": "Guía de Codex CLI", + "codexCliGuideLoading": "Cargando la guía...", + "codexCliGuideLoadFailed": "No se pudo cargar la guía.", + "codexExternalLinkButton": "Enlace externo de Codex", + "codexExternalLinkModalTitle": "Enlace externo de Codex", + "codexExternalLinkModalDescription": "Comparte este enlace de un solo uso con la persona que autenticará la cuenta de Codex. Esa persona debe abrirlo en su propio navegador, completar el inicio de sesión de OpenAI y la conexión se registrará aquí. El enlace caduca en 15 minutos.", + "codexExternalLinkGenerating": "Generando enlace...", + "codexExternalLinkWaiting": "Esperando la autenticación en el navegador. Esta ventana se actualiza automáticamente.", + "codexExternalLinkCreateFailed": "No se pudo generar el enlace.", + "codexExternalLinkNetworkError": "No se pudo contactar con el servidor.", + "codexExternalLinkConnected": "La cuenta de Codex se conectó mediante el enlace externo.", + "codexExternalLinkExpired": "El enlace caducó antes de completar el proceso.", "importCodexAuth": "Importar autenticación", "codexImportModalTitle": "Importar autenticación del Codex", "codexImportTabSingle": "soltero", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} falló", "codexImportBulkZipExtracting": "Extrayendo ZIP…", "codexImportBulkZipError": "No se pudo extraer el ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Configuración avanzada", + "chatPathLabel": "Ruta del endpoint de chat", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Ruta de chat personalizada para proveedores con API no estándar (p. ej., /v4/chat/completions)", + "modelsPathLabel": "Ruta del endpoint de modelos", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", - "clientIdentityLabel": "Client Identity", - "clientIdentityHint": "Optional. Adds client fingerprint headers (e.g. User-Agent) matching a known CLI for compatible gateways that expect one.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "modelsPathHint": "Ruta de modelos personalizada para la validación (p. ej., /v4/models)", + "clientIdentityLabel": "Identidad del cliente", + "clientIdentityHint": "Opcional. Añade encabezados de huella digital del cliente (p. ej., User-Agent) que coincidan con una CLI conocida para puertas de enlace compatibles que los requieran.", + "statusDeactivated": "Desactivada (manualmente)", + "statusBanned": "Bloqueada / Infracción del entorno aislado", + "statusCreditsExhausted": "Saldo insuficiente / Cuota agotada", + "showEmails": "Mostrar todos los correos electrónicos", + "hideEmails": "Ocultar todos los correos electrónicos", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Añade otra clave de API o pega varias claves", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Puertas de enlace de agregadores", "enterpriseCloud": "Empresa y nube", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Etiqueta del formato de la API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", + "apiRegionChina": "Región de la API: China", + "apiRegionHint": "Indicación de la región de la API", + "apiRegionInternational": "Región de la API: Internacional", + "apiRegionLabel": "Etiqueta de la región de la API", + "apikey": "Clave de API", "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "audioProvidersHeading": "Encabezado de proveedores de audio", "cloudAgentProviders": "Proveedores de agentes en la nube", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Etiqueta corta de audio", + "azureOpenAiBaseUrlHint": "Indicación de la URL base de Azure Open Ai", + "bailianBaseUrlHint": "Indicación de la URL base de Bailian", + "claudeWebCookieHint": "Abre claude.ai → DevTools → Application → Cookies → claude.ai y copia el valor de 'sessionKey'. También se necesitan cf_clearance, __cf_bm y _cfuvid para Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Indicación de la cookie web de Blackbox", + "blackboxWebCookiePlaceholder": "Marcador de posición de la cookie web de Blackbox", "t3ChatWebCookieHint": "Abra t3.chat → DevTools → Aplicación → Almacenamiento local → https://t3.chat, copie 'convex-session-id'. Luego abra DevTools → Red, copie el encabezado completo de la cookie de cualquier solicitud de chat. Pegue ambos valores en los campos siguientes.", "t3ChatWebCookiePlaceholder": "ID-sesión-convexa=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Indicación de la cookie web de Grok", "blockClaudeExtraUsageDescription": "Cuando está activado, OmniRoute marca esta conexión de Claude como no disponible tan pronto como la API de uso informe de uso adicional en cola, para que el fallback cambie a otra conexión en lugar de continuar con la facturación adicional de pago por uso.", "blockClaudeExtraUsageLabel": "Bloquear el uso adicional de Claude", - "disableCoolingDescription": "Skip the transient cooldown so this connection stays eligible even after recoverable errors (terminal states like banned/expired still apply).", - "disableCoolingLabel": "Disable cooldown for this connection", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "disableCoolingDescription": "Omite el tiempo de espera transitorio para que esta conexión siga siendo apta incluso después de errores recuperables (los estados terminales, como bloqueada o caducada, siguen siendo aplicables).", + "disableCoolingLabel": "Desactivar el tiempo de espera para esta conexión", + "bulkPasteAdded": "{count, plural, one {1 clave añadida} other {# claves añadidas}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicado omitido} other {# duplicados omitidos}}", + "bulkPasteHint": "Pega una clave de API por línea. Las líneas vacías se ignoran y las claves duplicadas se omiten.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Añade la cabecera beta redact-thinking para upstreams compatibles con CC que requieren flujos de razonamiento de Claude ocultos.", + "ccCompatibleRedactThinkingLabel": "Activar la beta de redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Añade `display: \"summarized\"` a las solicitudes de razonamiento compatibles con CC para que los modelos Claude compatibles transmitan deltas de razonamiento visibles.", + "ccCompatibleSummarizeThinkingLabel": "Activar la visualización del razonamiento resumido", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Usa el nivel de servicio prioritario para las solicitudes de Codex cuando esté disponible.", + "codexFastServiceTierLabel": "Nivel de servicio rápido de Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Marcador de posición del nombre de la cabecera del upstream compatible", + "compatUpstreamHeaderValuePlaceholder": "Marcador de posición del valor de la cabecera del upstream compatible", "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "configuredCount": "Cantidad configurada", + "consoleApiKeyOracleHint": "Sugerencia de la clave de API de Oracle para la consola", + "consoleApiKeyOracleLabel": "Etiqueta de la clave de API de Oracle para la consola", + "consoleApiKeyOraclePlaceholder": "Marcador de posición de la clave de API de Oracle para la consola", "newApiUserIdLabel": "ID de usuario New-API", "newApiUserIdPlaceholder": "p. ej. 12345", "newApiUserIdHint": "Valor del encabezado New-Api-User de AgentRouter, usado junto con la clave de API de la consola para consultar el saldo de cuota.", @@ -5830,182 +5833,182 @@ "featureFlagNewApiAggregatorBalanceDescription": "Habilitar la detección de balance para nodos compatibles con New-API / One-API / Sub2API agregador", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Sugerencia del agente de usuario personalizado", + "customUserAgentLabel": "Etiqueta del agente de usuario personalizado", + "databricksBaseUrlHint": "Sugerencia de la URL base de Databricks", + "defaultThinkingStrengthHint": "Se utiliza cuando una solicitud no especifica el esfuerzo de razonamiento.", + "defaultThinkingStrengthLabel": "Intensidad de razonamiento predeterminada", + "deleteAllExtraApiKeys": "Eliminar todo", + "excludedModelsHint": "Sugerencia de modelos excluidos", + "excludedModelsLabel": "Etiqueta de modelos excluidos", + "excludedModelsPlaceholder": "Marcador de posición de modelos excluidos", + "expirationBannerExpired": "Banner de caducidad: caducado", + "expirationBannerExpiredDesc": "Descripción del banner de caducidad: caducado", + "expirationBannerExpiringSoon": "Banner de caducidad: caduca pronto", + "expirationBannerExpiringSoonDesc": "Descripción del banner de caducidad: caduca pronto", + "extraApiKeyMasked": "Clave {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Sugerencia de claves de API adicionales", + "extraApiKeysLabel": "Etiqueta de claves de API adicionales", + "apiKeyHealthLabel": "Estado de las claves de API", + "apiKeyStatusActive": "Activa", + "apiKeyStatusWarning": "Advertencia ({count} fallos)", + "apiKeyStatusInvalid": "No válida", + "primaryKey": "Clave principal", + "apiKeyInvalidAlert": "{count} clave(s) de API marcada(s) como no válida(s) debido a fallos de autenticación en las conexiones: {connections}. Se omitirán durante la rotación. Haz clic para revisarlas.", + "apiKeyInvalidAlertTitle": "Alerta sobre el estado de las claves de API", + "apiKeyWarningAlert": "{count} clave(s) de API en estado de advertencia debido a una tasa elevada de fallos en las conexiones: {connections}. Revísalas para evitar problemas de rotación.", + "apiKeyWarningAlertTitle": "Advertencia de clave de API", + "googlePseInfo": "Información de Google PSE", "antigravityProjectIdHint": "Anulación opcional para solicitudes de Antigravity Cloud Code. Déjelo en blanco para utilizar el proyecto descubierto durante Google OAuth.", - "antigravityClientProfileLabel": "Client profile", - "antigravityClientProfileHint": "Choose which Antigravity client identity OmniRoute presents to the API.", + "antigravityClientProfileLabel": "Perfil del cliente", + "antigravityClientProfileHint": "Elige qué identidad de cliente de Antigravity presenta OmniRoute a la API.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", - "codexFastTierActiveChip": "Codex Fast tier is active", - "tierFast": "Fast", + "codexFastTierActiveChip": "El nivel rápido de Codex está activo", + "tierFast": "Rápido", "antigravityProjectIdLabel": "ID del proyecto de Google Cloud", "antigravityProjectIdPlaceholder": "mi-id-proyecto-gcp", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Marcador de posición de la cookie web de Grok", + "herokuBaseUrlHint": "Sugerencia de la URL base de Heroku", + "hideEmail": "Ocultar correo electrónico", + "imageProviders": "Proveedores de imágenes", "videoProviders": "Generación de vídeo", "embeddingRerankProviders": "Incrustaciones y reclasificación", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", - "m365TierLabel": "Copilot tier", - "m365TierHint": "Choose which Microsoft 365 Copilot surface this connection uses. Individual is the default consumer BizChat; Education and Enterprise (work) opt into their tenant surfaces.", - "m365TierIndividualOption": "Individual (default)", - "m365TierEduOption": "Education", - "m365TierEnterpriseOption": "Enterprise / Work", - "tierOverrideLabel": "Tier override", - "tierOverrideAuto": "Auto (routing decides)", - "tierOverrideFree": "Free", - "tierOverrideCheap": "Cheap", - "tierOverridePremium": "Premium", - "tierOverrideHelpText": "Pin this provider to a routing tier instead of letting OmniRoute infer it from model pricing.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "imagesShortLabel": "Etiqueta corta de imágenes", + "llmProviders": "Proveedores de LLM", + "localProviderApiKeyOptionalHint": "Sugerencia de clave de API opcional del proveedor local", + "localProviderBaseUrlHint": "Sugerencia de la URL base del proveedor local", + "localProviders": "Proveedores locales", + "maxConcurrentWholeNumberError": "Error: el máximo de solicitudes simultáneas debe ser un número entero", + "m365TierLabel": "Nivel de Copilot", + "m365TierHint": "Elige qué interfaz de Microsoft 365 Copilot usa esta conexión. Individual es la opción predeterminada para consumidores de BizChat; Educación y Empresa (trabajo) habilitan las interfaces de sus respectivos inquilinos.", + "m365TierIndividualOption": "Individual (predeterminado)", + "m365TierEduOption": "Educación", + "m365TierEnterpriseOption": "Empresa / Trabajo", + "tierOverrideLabel": "Anulación del nivel", + "tierOverrideAuto": "Automático (el enrutamiento decide)", + "tierOverrideFree": "Gratis", + "tierOverrideCheap": "Económico", + "tierOverridePremium": "Prémium", + "tierOverrideHelpText": "Fija este proveedor a un nivel de enrutamiento en lugar de permitir que OmniRoute lo deduzca a partir del precio del modelo.", + "museSparkWebCookieHint": "Sugerencia de la cookie web de Muse Spark", + "museSparkWebCookiePlaceholder": "Marcador de posición de la cookie web de Muse Spark", + "oauth": "OAuth", + "openCliTools": "Abrir herramientas de CLI", + "openSettings": "Abrir configuración", + "openaiResponsesStoreDescription": "Permite que las solicitudes compatibles de Responses API conserven el estado de respuesta almacenado.", + "openaiResponsesStoreLabel": "Almacenamiento de OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Información de la clave compartida de Perplexity Search", + "perplexityWebCookieHint": "Sugerencia de la cookie web de Perplexity", + "perplexityWebCookiePlaceholder": "Marcador de posición de la cookie web de Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", - "rateLimitOverridesSection": "Rate Limit Overrides", - "rateLimitOverridesMaxConcurrentHint": "Max concurrent requests override for this connection. Overrides the account-level cap.", - "rateLimitOverridesMaxConcurrentLabel": "Max Concurrent (Rate Limit)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", - "rateLimitOverridesMinTimeHint": "Minimum time (ms) between requests. Overrides the default rate limiter delay.", - "rateLimitOverridesMinTimeLabel": "Min Interval (ms)", + "rateLimitOverridesSection": "Anulaciones de límites de uso", + "rateLimitOverridesMaxConcurrentHint": "Anulación del máximo de solicitudes simultáneas para esta conexión. Anula el límite de la cuenta.", + "rateLimitOverridesMaxConcurrentLabel": "Máximo de solicitudes simultáneas (límite de tasa)", + "rateLimitOverridesMaxWaitMsHint": "Tiempo máximo (ms) que una solicitud puede esperar para obtener un turno según el límite de tasa antes de fallar. Anula la configuración global de Resiliencia únicamente para esta conexión.", + "rateLimitOverridesMaxWaitMsLabel": "Espera máxima en cola (ms)", + "rateLimitOverridesMinTimeHint": "Tiempo mínimo (ms) entre solicitudes. Anula el retraso predeterminado del limitador de tasa.", + "rateLimitOverridesMinTimeLabel": "Intervalo mínimo (ms)", "rateLimitOverridesRpdHint": "Máximo de solicitudes por día para esta conexión. Anula el valor predeterminado del proveedor.", "rateLimitOverridesRpdLabel": "RPD (Solicitudes/día)", - "rateLimitOverridesRpmHint": "Max requests per minute for this connection. Overrides the provider default.", - "rateLimitOverridesRpmLabel": "RPM (Requests/min)", - "rateLimitOverridesTpdHint": "Max tokens per day for this connection. Overrides the provider default.", - "rateLimitOverridesTpdLabel": "TPD (Tokens/day)", - "rateLimitOverridesTpmHint": "Max tokens per minute for this connection. Overrides the provider default.", - "rateLimitOverridesTpmLabel": "TPM (Tokens/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "rateLimitOverridesRpmHint": "Máximo de solicitudes por minuto para esta conexión. Anula el valor predeterminado del proveedor.", + "rateLimitOverridesRpmLabel": "RPM (solicitudes/min)", + "rateLimitOverridesTpdHint": "Máximo de tokens por día para esta conexión. Anula el valor predeterminado del proveedor.", + "rateLimitOverridesTpdLabel": "TPD (tokens/día)", + "rateLimitOverridesTpmHint": "Máximo de tokens por minuto para esta conexión. Anula el valor predeterminado del proveedor.", + "rateLimitOverridesTpmLabel": "TPM (tokens/min)", + "refreshOauthTokenTitle": "Título para actualizar el token Oauth", + "regionHint": "Sugerencia de región", + "regionLabel": "Etiqueta de región", + "removeThisKey": "Eliminar esta clave", + "routingTagsHint": "Ayuda para las etiquetas de enrutamiento", + "routingTagsLabel": "Etiqueta de las etiquetas de enrutamiento", + "routingTagsPlaceholder": "Marcador de posición de las etiquetas de enrutamiento", + "search": "Buscar", + "searchEngineIdHint": "Ayuda para el ID del motor de búsqueda", + "searchEngineIdLabel": "Etiqueta del ID del motor de búsqueda", + "searchEngineIdRequired": "El ID del motor de búsqueda es obligatorio", + "searchProvider": "Proveedor de búsqueda", + "searchProviderDesc": "Descripción del proveedor de búsqueda", "searchProviders": "Buscar proveedores...", - "searchByModel": "Search by model…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchByModel": "Buscar por modelo…", + "searchProvidersHeading": "Encabezado de proveedores de búsqueda", + "searxngBaseUrlHint": "Ayuda para la URL base de Searxng", + "searxngInfo": "Información de Searxng", + "sessionCookieLabel": "Etiqueta de la cookie de sesión", + "showEmail": "Mostrar correo electrónico", + "snowflakeBaseUrlHint": "Ayuda para la URL base de Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Ayuda para el grupo de etiquetas", + "tagGroupLabel": "Etiqueta del grupo de etiquetas", + "tagGroupPlaceholder": "Marcador de posición del grupo de etiquetas", + "testModel": "Probar modelo", + "testingModel": "Probando modelo", "modelTestQuotaTooltip": "Cuota agotada — se restablece mañana o necesita una recarga", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Insignia de token caducado", + "tokenExpiredTitle": "Título de token caducado", + "tokenExpiresSoonTitle": "Título de token próximo a caducar", + "tokenShort": "Token corto", + "totalKeysRotating": "{count, plural, one {1 clave en rotación} other {# claves en rotación}}", + "unhideModel": "Mostrar modelo", + "upstreamProxyProviders": "Proveedores de proxy ascendentes", "validationModelIdHint": "Validation Model Id Hint", "validationModelIdLabel": "Validation Model Id Label", "validationModelIdPlaceholder": "Validation Model Id Placeholder", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", - "globalCodexServiceMode": "Global Codex service mode", - "connect": "Connect", - "manualApiKey": "Manual API key", - "addPat": "Add PAT", - "experimentalOauth": "Experimental OAuth", - "importAuth": "Import auth", - "importGrokAuth": "Import Grok Build auth", - "zedImportTitle": "Import from Zed Keychain", - "zedImportDescription": "Discover AI provider credentials (OpenAI, Anthropic, Google, Mistral, xAI) stored by Zed IDE in the OS keychain and import them as connections. Zed IDE must be installed on this machine.", + "vertexServiceAccountPlaceholder": "Pega el JSON de tu cuenta de servicio ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) o un access_token de OAuth", + "webCookieProviders": "Proveedores de cookies web", + "weeklyShort": "Resumen semanal", + "xiaomiMimoBaseUrlHint": "Sugerencia de URL base de Xiaomi Mimo", + "globalCodexServiceMode": "Modo de servicio global de Codex", + "connect": "Conectar", + "manualApiKey": "Clave de API manual", + "addPat": "Añadir PAT", + "experimentalOauth": "OAuth experimental", + "importAuth": "Importar autenticación", + "importGrokAuth": "Importar autenticación de Grok Build", + "zedImportTitle": "Importar desde el llavero de Zed", + "zedImportDescription": "Descubre las credenciales de proveedores de IA (OpenAI, Anthropic, Google, Mistral, xAI) almacenadas por Zed IDE en el llavero del sistema operativo e impórtalas como conexiones. Zed IDE debe estar instalado en este equipo.", "zedImportButton": "Importar desde Zed", "zedImportFailed": "Error al importar desde Zed", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Sugerencia de importación de Zed", + "zedImportNetworkError": "Error de red al importar desde Zed", + "zedImportNone": "No hay datos para importar desde Zed", "zedImportSuccess": "Se han importado {credentials} credencial(es) de Zed para {providers} proveedor(es)", "zedImporting": "Importando…", - "zedNoCredentials": "No Zed credentials found in the keychain", - "zedUnsupportedCredentials": "Found {count} keychain credential(s), but none matched supported providers", - "zedManualTitle": "Manual Token Import", - "zedManualDescription": "Use this when OmniRoute runs in Docker or the keychain is unavailable. Paste the API key that Zed stored under ~/.config/zed/settings.json, or copy it from the Zed AI settings panel.", - "zedPasteApiKey": "Paste API key…", - "zedSaving": "Saving…", - "zedImportAction": "Import", + "zedNoCredentials": "No se encontraron credenciales de Zed en el llavero", + "zedUnsupportedCredentials": "Se encontraron {count} credencial(es) en el llavero, pero ninguna coincidía con los proveedores compatibles", + "zedManualTitle": "Importación manual del token", + "zedManualDescription": "Usa esta opción cuando OmniRoute se ejecute en Docker o el llavero no esté disponible. Pega la clave de API que Zed almacenó en ~/.config/zed/settings.json o cópiala desde el panel de configuración de IA de Zed.", + "zedPasteApiKey": "Pega la clave de API…", + "zedSaving": "Guardando…", + "zedImportAction": "Importar", "cursorAgentNudgeTitle": "Habilitar la renovación automática de la sesión del Cursor", "cursorAgentNudgeBody": "Instala cursor-agent para la renovación automática de sesiones; sin él, las conexiones de Cursor necesitan reconexiones manuales periódicas aproximadamente cada 24 horas.", "cursorAgentNudgeDismiss": "Descartar", - "zedManualImportFailed": "Manual import failed", - "zedManualImportSuccess": "Imported {provider} token from Zed", - "grokImportTitle": "Import Grok Build Auth", - "grokImportDescription": "Import your Grok Build ~/.grok/auth.json file. You can get it by running grok login in your terminal.", - "grokUploadFile": "Upload file", - "grokPasteJson": "Paste JSON", - "grokInvalidAuth": "This is not a valid Grok Build auth.json file. Expected an object with a key containing a JWT.", - "grokParseFailed": "Could not parse JSON", - "grokImportFailed": "Failed to import Grok Build auth", - "grokImportSuccess": "Grok Build connection imported successfully", - "grokValidToken": "Valid Grok Build token detected", - "grokRefreshIncluded": "Refresh token included — automatic token renewal is enabled", - "grokRefreshMissing": "No refresh token found — re-import after the token expires", - "grokConnectionName": "Connection name (optional)", - "grokSaving": "Saving…", - "grokSaveConnection": "Save Connection", + "zedManualImportFailed": "La importación manual ha fallado", + "zedManualImportSuccess": "Token de {provider} importado desde Zed", + "grokImportTitle": "Importar autenticación de Grok Build", + "grokImportDescription": "Importa tu archivo de Grok Build ~/.grok/auth.json. Puedes obtenerlo ejecutando grok login en tu terminal.", + "grokUploadFile": "Subir archivo", + "grokPasteJson": "Pegar JSON", + "grokInvalidAuth": "Este no es un archivo auth.json válido de Grok Build. Se esperaba un objeto con una clave que contuviera un JWT.", + "grokParseFailed": "No se pudo analizar el JSON", + "grokImportFailed": "No se pudo importar la autenticación de Grok Build", + "grokImportSuccess": "La conexión de Grok Build se ha importado correctamente", + "grokValidToken": "Se ha detectado un token válido de Grok Build", + "grokRefreshIncluded": "Se incluye un token de actualización; la renovación automática del token está activada", + "grokRefreshMissing": "No se encontró ningún token de actualización; vuelve a importarlo cuando caduque el token", + "grokConnectionName": "Nombre de la conexión (opcional)", + "grokSaving": "Guardando…", + "grokSaveConnection": "Guardar conexión", "freeTierProviders": "Proveedores de nivel gratuito", "freeTierLabel": "Nivel gratuito disponible", "freeTierProvidersDesc": "Proveedores con niveles gratuitos: algunos requieren un registro de clave API, otros no necesitan ninguna credencial.", @@ -6022,35 +6025,35 @@ "providerDetailPathAutoDetectedAllOs": "La ruta se detecta automáticamente por sistema operativo (Linux/Mac/Windows).", "providerDetailMyClaudeAccountPlaceholder": "Mi cuenta Claude", "providerDetailPathAutoDetected": "La ruta se detecta automáticamente por sistema operativo (Linux/Mac).", - "compatBlockedParamsPlaceholder": "thinking, … (comma-separated)", - "compatAllowedParamsPlaceholder": "reasoning, … (comma-separated)", - "compatSaving": "saving…", - "paramFiltersBlockedPlaceholder": "thinking, reasoning_budget, … (comma-separated)", - "paramFiltersAllowedPlaceholder": "reasoning, … (comma-separated)", - "customGatewayNamePlaceholder": "My Gateway", - "inherit": "Inherit", - "claudeImportEntryName": "entry {number}", - "claudeImportParseError": "parse error", - "claudeImportNoValidEntries": "No valid entries to import", - "webFetch": "Web Fetch", - "webFetchTooltip": "Providers that extract content from web URLs (HTML → Markdown, scrape, screenshot)", - "webFetchProvidersHeading": "Web Fetch Providers", - "compatibleProvidersDesc": "OpenAI-compatible and Anthropic-compatible endpoints you host or configure. Point any OpenAI SDK to your own URL and route requests here.", - "oauthProvidersDesc": "Providers authenticated via OAuth — sign in once and OmniRoute handles token rotation automatically.", + "compatBlockedParamsPlaceholder": "pensamiento, … (separados por comas)", + "compatAllowedParamsPlaceholder": "razonamiento, … (separados por comas)", + "compatSaving": "guardando…", + "paramFiltersBlockedPlaceholder": "pensamiento, reasoning_budget, … (separados por comas)", + "paramFiltersAllowedPlaceholder": "razonamiento, … (separados por comas)", + "customGatewayNamePlaceholder": "Mi puerta de enlace", + "inherit": "Heredar", + "claudeImportEntryName": "entrada {number}", + "claudeImportParseError": "error de análisis", + "claudeImportNoValidEntries": "No hay entradas válidas para importar", + "webFetch": "Obtención web", + "webFetchTooltip": "Proveedores que extraen contenido de URLs web (HTML → Markdown, extracción, captura de pantalla)", + "webFetchProvidersHeading": "Proveedores de obtención web", + "compatibleProvidersDesc": "Endpoints compatibles con OpenAI y Anthropic que alojas o configuras. Dirige cualquier SDK de OpenAI a tu propia URL y enruta aquí las solicitudes.", + "oauthProvidersDesc": "Proveedores autenticados mediante OAuth: inicia sesión una vez y OmniRoute gestionará automáticamente la rotación de tokens.", "webCookieProvidersDesc": "Estos proveedores utilizan sesiones web del navegador, cookies o tokens web en lugar de claves API. Abra un proveedor para agregar la credencial de sesión requerida.", - "apiKeyProvidersDesc": "Standard API key providers. Add your key once and OmniRoute routes, retries, and rate-limits on your behalf.", - "noAuthProvidersDesc": "Open endpoints that require no credentials — ready to use immediately without any sign-up.", - "upstreamProxyProvidersDesc": "Route outbound traffic through an upstream proxy before it reaches the provider. Useful for corporate networks or traffic inspection.", - "webFetchProvidersDesc": "Providers that fetch and extract content from web URLs. Use them to ground prompts with live web data.", - "aggregatorsGatewaysDesc": "Multi-provider aggregators and AI gateways that expose a single unified API across dozens of underlying models.", - "enterpriseCloudDesc": "Enterprise-tier and cloud-hosted models with enhanced SLAs, compliance certifications, and dedicated capacity.", - "cloudAgentProvidersDesc": "Autonomous cloud agents that execute long-running tasks with plan approval and live status tracking.", - "localProvidersDesc": "Self-hosted models running on your own hardware. No data leaves your infrastructure.", - "searchProvidersDesc": "Web and document search providers. Attach them to LLM calls for Retrieval-Augmented Generation.", - "audioProvidersDesc": "Text-to-speech and speech-to-text providers for voice I/O and audio transcription pipelines.", - "embeddingRerankProvidersDesc": "Vector embedding and reranking providers for semantic search, RAG pipelines, and similarity scoring.", - "imageProvidersDesc": "Image generation and vision providers — create images from text or analyse existing ones.", - "videoProvidersDesc": "Video generation providers. Create short video clips from text prompts or images.", + "apiKeyProvidersDesc": "Proveedores estándar con clave de API. Añade tu clave una vez y OmniRoute se encargará de enrutar, reintentar y limitar la frecuencia en tu nombre.", + "noAuthProvidersDesc": "Endpoints abiertos que no requieren credenciales, listos para usar de inmediato sin registrarse.", + "upstreamProxyProvidersDesc": "Enruta el tráfico saliente a través de un proxy ascendente antes de que llegue al proveedor. Resulta útil para redes corporativas o la inspección del tráfico.", + "webFetchProvidersDesc": "Proveedores que obtienen y extraen contenido de URLs web. Úsalos para contextualizar los prompts con datos web en tiempo real.", + "aggregatorsGatewaysDesc": "Agregadores multiproveedor y puertas de enlace de IA que ofrecen una única API unificada para decenas de modelos subyacentes.", + "enterpriseCloudDesc": "Modelos de nivel empresarial y alojados en la nube con SLA mejorados, certificaciones de cumplimiento y capacidad dedicada.", + "cloudAgentProvidersDesc": "Agentes autónomos en la nube que ejecutan tareas de larga duración con aprobación del plan y seguimiento del estado en tiempo real.", + "localProvidersDesc": "Modelos autoalojados que se ejecutan en tu propio hardware. Ningún dato sale de tu infraestructura.", + "searchProvidersDesc": "Proveedores de búsqueda web y de documentos. Vincúlalos a las llamadas a LLM para la generación aumentada por recuperación.", + "audioProvidersDesc": "Proveedores de texto a voz y de voz a texto para E/S de voz y flujos de transcripción de audio.", + "embeddingRerankProvidersDesc": "Proveedores de embeddings vectoriales y reranking para búsqueda semántica, flujos RAG y puntuación de similitud.", + "imageProvidersDesc": "Proveedores de generación de imágenes y visión: crea imágenes a partir de texto o analiza imágenes existentes.", + "videoProvidersDesc": "Proveedores de generación de vídeo. Crea clips de vídeo cortos a partir de prompts de texto o imágenes.", "onboardingWizard": "Asistente de incorporación de proveedores", "onboardingWizardShort": "Asistente de incorporación", "onboardingWizardDescription": "Conecte proveedores de clave API, compatibles personalizados y OAuth con validación, persistencia y una prueba de conexión inmediata.", @@ -6118,212 +6121,212 @@ "onboardingOAuthFlowDescription": "OmniRoute abrirá el flujo OAuth existente para este proveedor. Después de iniciar sesión, el asistente recarga la conexión guardada y ejecuta la misma prueba de conexión que la página del proveedor.", "onboardingStartOAuthFlow": "Iniciar flujo de OAuth", "onboardingProviderDescriptions": { - "360ai": "Get API key at ai.360.cn", - "agentrouter": "Get $200 free credits at https://agentrouter.org/register — no credit card required.", + "360ai": "Obtén una clave de API en ai.360.cn", + "agentrouter": "Obtén $200 en créditos gratuitos en https://agentrouter.org/register; no se requiere tarjeta de crédito.", "unorouter": "Crea una clave API en https://unorouter.ai, luego pégala aquí como un token Bearer.", - "agnes": "Get API key at agnes-ai.com", - "aimlapi": "Free tier paused (2026) — AI/ML API is now pay-as-you-go only (min $20 top-up); no recurring free credits.", - "ai21": "$10 trial credits on signup (valid 3 months), no credit card required", - "alibaba": "Connect Alibaba with an API key.", - "alibaba-cn": "Connect Alibaba (China) with an API key.", - "bailian-coding-plan": "Connect Alibaba Coding Plan with an API key.", - "bedrock": "Native Bedrock integration: model discovery uses Bedrock foundation models and inference profiles, while chat uses the regional Bedrock Runtime Converse/ConverseStream APIs.", - "anthropic": "Connect Anthropic with an API key.", - "ant-ling": "Register and create an API key at the Ant Ling API console (https://chat.ant-ling.com/open), then paste it here. OmniRoute routes chat traffic to https://api.ant-ling.com/v1/chat/completions; the provider is OpenAI-compatible and also exposes an Anthropic-compatible surface.", - "api-airforce": "Get your API key from https://panel.api.airforce — OpenAI-compatible endpoint at https://api.airforce/v1", - "arcee-ai": "Get API key at arcee.ai", - "azure-ai": "Foundry uses the OpenAI v1 surface with deployment names as models. OmniRoute normalizes root resource URLs to the v1 chat and /models endpoints.", - "azure-openai": "Use your Azure OpenAI API key. Base URL should be your resource endpoint, for example https://my-resource.openai.azure.com.", - "bai": "Bearer API key for the b.ai OpenAI-compatible LLM gateway (distinct from TheB.AI). Create a key at https://docs.b.ai, then use https://api.b.ai/v1 as the OpenAI-compatible base URL.", - "baichuan": "Get API key at platform.baichuan-ai.com", - "baidu": "Get API key at console.bce.baidu.com", - "qianfan": "Use a Qianfan API key from Baidu AI Cloud. The default endpoint is OpenAI-compatible v2.", - "baseten": "$30 free trial credits for GPU inference", - "bazaarlink": "Create a free API key at https://bazaarlink.ai — model 'auto:free' routes to zero-cost inference. All models use the provider/model-name format, e.g. xiaomi/mimo-v2.5-pro.", - "black-forest-labs": "Connect Black Forest Labs with an API key.", - "blackbox": "Free tier: unlimited basic chat plus Minimax-M2.5, no credit card required", - "bluesminds": "Get your API key at https://www.bluesminds.com — OpenAI-compatible endpoint at https://api.bluesminds.com/v1 with free daily credits. VIP models (Claude Opus 4.5, Gemini 2.5 Pro) consume pi credits.", - "byteplus": "Connect BytePlus ModelArk with an API key.", - "bytez": "$1 free credits, refreshes every 4 weeks", - "cerebras": "One-time $5 signup credit (30-day validity); a payment method is required. Not a recurring free tier.", - "charm-hyper": "Create an API key at https://hyper.charm.land, then paste it here as a Bearer token.", - "chutes": "Bearer API key for the Chutes OpenAI-compatible gateway.", - "clarifai": "Clarifai exposes OpenAI-compatible chat, responses and /models on /v2/ext/openai/v1. Public/community models typically require a PAT; app-scoped keys only work for resources inside that app.", - "cloudflare-ai": "Requires API Token AND Account ID (found at dash.cloudflare.com)", - "clova-studio": "CLOVA Studio (HyperCLOVA X) is OpenAI-compatible on /v1/openai. OmniRoute probes /v1/openai/models and routes chat traffic to /v1/openai/chat/completions. Uses the current clovastudio.stream.ntruss.com host — the legacy clovastudio.apigw.ntruss.com endpoint is being deprecated.", - "codestral": "Connect Codestral with an API key.", - "cohere": "Free Trial: 1,000 API calls/month for testing, no credit card required", - "command-code": "Create or copy an API key from Command Code, then paste it here as a Bearer token.", - "coze": "Get API key at coze.com/open/api", - "crof": "Connect CrofAI with an API key.", - "databricks": "Connect Databricks with an API key.", - "datarobot": "The default gateway catalogs active models from /genai/llmgw/catalog/. Deployment URLs are also supported for direct OpenAI-compatible chat requests.", - "deepinfra": "Free signup credits for API testing and model exploration", - "deepseek": "5M free tokens on signup - no credit card required", - "dgrid": "Create a DGrid API key at https://dgrid.ai, then use https://api.dgrid.ai/v1 as the OpenAI-compatible base URL.", - "dify": "Get API key from your Dify instance.", - "digitalocean": "Connect DigitalOcean with an API key.", - "dit": "dit.ai (Distributed Intelligence Trade) is an OpenAI-compatible router/gateway with dynamic per-request pricing, exposing /v1/chat/completions at https://api.dit.ai/v1. OmniRoute uses the OpenAI protocol; spend/savings analytics live in the dit.ai dashboard.", - "doubao": "Get API key at console.volcengine.com", - "empower": "Empower exposes OpenAI-compatible chat on https://app.empower.dev/api/v1 with tool-calling support on empower-functions.", - "factory": "Get your Factory API key at https://app.factory.ai/settings/api-keys, then paste it as a Bearer token. OpenAI-compatible endpoint at https://api.factory.ai/v1.", - "fal-ai": "Connect Fal.ai with an API key.", - "featherless-ai": "Free tier available — no credit card required", - "fenayai": "Bearer API key for the FenayAI OpenAI-compatible gateway.", - "firecrawl": "Connect Firecrawl with an API key.", - "fireworks": "$1 free starter credits on signup for API testing", - "freeaiapikey": "Discounted API proxy for 40+ models including GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Get your API key at https://freeaiapikey.com/dashboard. Base URL: https://freeaiapikey.com/v1.", - "freemodel-dev": "Get $300 free API credits at https://freemodel.dev — no payment info required. OpenAI-compatible endpoint. GPT-5.4 and GPT-5.5 models available.", - "friendliai": "Free tier for serverless inference — no credit card required", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", - "gigachat": "Connect GigaChat (Sber) with an API key.", - "gitlab": "GitLab personal access token for the public Code Suggestions API. Configure a self-hosted base URL when not using gitlab.com.", - "gitlawb-gmi": "Get your API key from Gitlawb Opengateway dashboard.", - "gitlawb": "Get your API key from Gitlawb Opengateway dashboard.", - "glm": "Connect GLM Coding with an API key.", - "glm-cn": "Connect GLM Coding (China) with an API key.", - "glmt": "Preset GLM profile with higher token budget, thinking enabled, and longer timeout.", - "getgoapi": "Connect GoAPI with an API key.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", - "haiper": "Get API key at haiper.ai/haiper-api", - "heroku": "Connect Heroku AI with an API key.", - "hcnsec": "Get API key at api.hcnsec.cn", - "huggingface": "Free Inference API for thousands of models (Whisper, VITS, SDXL…)", - "hyperbolic": "$1-5 trial credits on signup for serverless inference", - "watsonx": "The watsonx model gateway exposes OpenAI-compatible /chat/completions and /models under /ml/gateway/v1.", - "ideogram": "Get API key at ideogram.ai/docs/api", - "iflytek": "Get API key at console.xfyun.cn", - "inception": "Inception Labs is OpenAI-compatible at https://api.inceptionlabs.ai/v1. mercury-2 is the first diffusion LLM (dLLM) in the catalog — 5-10x faster generation than comparable autoregressive models, with tool calling, json_mode, and structured outputs.", - "inference-net": "$25 free credits on signup plus research grants available", - "internlm": "Free monthly quota ~1M input / 3M output tokens (~10 RPM)", + "agnes": "Obtén una clave de API en agnes-ai.com", + "aimlapi": "Nivel gratuito suspendido (2026): la API de AI/ML ahora solo es de pago por uso (recarga mínima de $20); no hay créditos gratuitos recurrentes.", + "ai21": "$10 en créditos de prueba al registrarte (válidos durante 3 meses); no se requiere tarjeta de crédito", + "alibaba": "Conecta Alibaba con una clave de API.", + "alibaba-cn": "Conecta Alibaba (China) con una clave de API.", + "bailian-coding-plan": "Conecta Alibaba Coding Plan con una clave de API.", + "bedrock": "Integración nativa con Bedrock: el descubrimiento de modelos utiliza los modelos fundacionales y los perfiles de inferencia de Bedrock, mientras que el chat utiliza las API regionales Converse/ConverseStream de Bedrock Runtime.", + "anthropic": "Conecta Anthropic con una clave de API.", + "ant-ling": "Regístrate y crea una clave de API en la consola de la API de Ant Ling (https://chat.ant-ling.com/open) y, después, pégala aquí. OmniRoute dirige el tráfico de chat a https://api.ant-ling.com/v1/chat/completions; el proveedor es compatible con OpenAI y también ofrece una interfaz compatible con Anthropic.", + "api-airforce": "Obtén tu clave de API en https://panel.api.airforce — endpoint compatible con OpenAI en https://api.airforce/v1", + "arcee-ai": "Obtén una clave de API en arcee.ai", + "azure-ai": "Foundry utiliza la interfaz v1 de OpenAI con nombres de implementación como modelos. OmniRoute normaliza las URL raíz de los recursos para los endpoints de chat v1 y /models.", + "azure-openai": "Usa tu clave de API de Azure OpenAI. La URL base debe ser el endpoint de tu recurso, por ejemplo, https://my-resource.openai.azure.com.", + "bai": "Clave de API Bearer para la puerta de enlace de LLM compatible con OpenAI de b.ai (distinta de TheB.AI). Crea una clave en https://docs.b.ai y, después, utiliza https://api.b.ai/v1 como URL base compatible con OpenAI.", + "baichuan": "Obtén una clave de API en platform.baichuan-ai.com", + "baidu": "Obtén una clave de API en console.bce.baidu.com", + "qianfan": "Usa una clave de API de Qianfan de Baidu AI Cloud. El endpoint predeterminado es compatible con OpenAI v2.", + "baseten": "Créditos de prueba gratuitos por valor de $30 para inferencia con GPU", + "bazaarlink": "Crea una clave de API gratuita en https://bazaarlink.ai — el modelo 'auto:free' dirige las solicitudes a inferencia sin coste. Todos los modelos utilizan el formato proveedor/nombre-del-modelo, por ejemplo, xiaomi/mimo-v2.5-pro.", + "black-forest-labs": "Conecta Black Forest Labs con una clave de API.", + "blackbox": "Plan gratuito: chat básico ilimitado más Minimax-M2.5, sin necesidad de tarjeta de crédito", + "bluesminds": "Obtén tu clave de API en https://www.bluesminds.com — endpoint compatible con OpenAI en https://api.bluesminds.com/v1 con créditos diarios gratuitos. Los modelos VIP (Claude Opus 4.5, Gemini 2.5 Pro) consumen créditos pi.", + "byteplus": "Conecta BytePlus ModelArk con una clave de API.", + "bytez": "$1 en créditos gratuitos, se renuevan cada 4 semanas", + "cerebras": "Crédito único de $5 por registro (válido durante 30 días); se requiere un método de pago. No es un plan gratuito recurrente.", + "charm-hyper": "Crea una clave de API en https://hyper.charm.land y, después, pégala aquí como token Bearer.", + "chutes": "Clave de API Bearer para la puerta de enlace compatible con OpenAI de Chutes.", + "clarifai": "Clarifai ofrece chat y respuestas compatibles con OpenAI, así como /models, en /v2/ext/openai/v1. Los modelos públicos o de la comunidad suelen requerir un PAT; las claves limitadas a una aplicación solo funcionan con los recursos de esa aplicación.", + "cloudflare-ai": "Requiere un token de API Y un ID de cuenta (disponible en dash.cloudflare.com)", + "clova-studio": "CLOVA Studio (HyperCLOVA X) es compatible con OpenAI en /v1/openai. OmniRoute consulta /v1/openai/models y dirige el tráfico de chat a /v1/openai/chat/completions. Utiliza el host actual clovastudio.stream.ntruss.com; el endpoint heredado clovastudio.apigw.ntruss.com está quedando obsoleto.", + "codestral": "Conecta Codestral con una clave de API.", + "cohere": "Prueba gratuita: 1000 llamadas a la API al mes para pruebas, sin necesidad de tarjeta de crédito", + "command-code": "Crea o copia una clave de API de Command Code y, después, pégala aquí como token Bearer.", + "coze": "Obtén una clave de API en coze.com/open/api", + "crof": "Conecta CrofAI con una clave de API.", + "databricks": "Conecta Databricks con una clave de API.", + "datarobot": "La puerta de enlace predeterminada cataloga los modelos activos desde /genai/llmgw/catalog/. También se admiten URL de implementación para solicitudes de chat directas compatibles con OpenAI.", + "deepinfra": "Créditos gratuitos al registrarte para probar la API y explorar modelos", + "deepseek": "5 millones de tokens gratuitos al registrarte, sin necesidad de tarjeta de crédito", + "dgrid": "Crea una clave de API de DGrid en https://dgrid.ai y, después, utiliza https://api.dgrid.ai/v1 como URL base compatible con OpenAI.", + "dify": "Obtén una clave de API de tu instancia de Dify.", + "digitalocean": "Conecta DigitalOcean con una clave de API.", + "dit": "dit.ai (Distributed Intelligence Trade) es un enrutador y una puerta de enlace compatibles con OpenAI, con precios dinámicos por solicitud, que ofrece /v1/chat/completions en https://api.dit.ai/v1. OmniRoute utiliza el protocolo de OpenAI; los análisis de gasto y ahorro están disponibles en el panel de dit.ai.", + "doubao": "Obtén una clave de API en console.volcengine.com", + "empower": "Empower ofrece chat compatible con OpenAI en https://app.empower.dev/api/v1, con compatibilidad para llamadas a herramientas en empower-functions.", + "factory": "Obtén tu clave de API de Factory en https://app.factory.ai/settings/api-keys y, después, pégala como token Bearer. Endpoint compatible con OpenAI en https://api.factory.ai/v1.", + "fal-ai": "Conecta Fal.ai con una clave de API.", + "featherless-ai": "Plan gratuito disponible, sin necesidad de tarjeta de crédito", + "fenayai": "Clave API Bearer para la puerta de enlace de FenayAI compatible con OpenAI.", + "firecrawl": "Conecta Firecrawl con una clave API.", + "fireworks": "$1 en créditos iniciales gratuitos al registrarte para probar la API", + "freeaiapikey": "Proxy de API con descuento para más de 40 modelos, incluidos GPT-5, Claude Opus 4.6, Claude Sonnet 4.6 y Qwen 3.5. Obtén tu clave API en https://freeaiapikey.com/dashboard. URL base: https://freeaiapikey.com/v1.", + "freemodel-dev": "Obtén $300 en créditos API gratuitos en https://freemodel.dev; no se requiere información de pago. Endpoint compatible con OpenAI. Modelos GPT-5.4 y GPT-5.5 disponibles.", + "friendliai": "Nivel gratuito para inferencia sin servidor; no se requiere tarjeta de crédito", + "gemini": "Nivel gratuito a través de Google AI Studio; las cuotas por modelo ya no se publican (consulta la página de cuotas en AI Studio); no se requiere tarjeta de crédito.", + "gigachat": "Conecta GigaChat (Sber) con una clave API.", + "gitlab": "Token de acceso personal de GitLab para la API pública de Code Suggestions. Configura una URL base autoalojada cuando no utilices gitlab.com.", + "gitlawb-gmi": "Obtén tu clave API en el panel de Gitlawb Opengateway.", + "gitlawb": "Obtén tu clave API en el panel de Gitlawb Opengateway.", + "glm": "Conecta GLM Coding con una clave API.", + "glm-cn": "Conecta GLM Coding (China) con una clave API.", + "glmt": "Perfil GLM preconfigurado con mayor presupuesto de tokens, razonamiento habilitado y un tiempo de espera más largo.", + "getgoapi": "Conecta GoAPI con una clave API.", + "groq": "Plan gratuito: límites por modelo (200K tokens/día por modelo de chat; consulta console.groq.com/docs/rate-limits para conocer los RPM/RPD); no es necesario registrar un método de pago.", + "haiper": "Obtén una clave API en haiper.ai/haiper-api", + "heroku": "Conecta Heroku AI con una clave API.", + "hcnsec": "Obtén una clave API en api.hcnsec.cn", + "huggingface": "API de inferencia gratuita para miles de modelos (Whisper, VITS, SDXL…)", + "hyperbolic": "$1-5 en créditos de prueba al registrarte para la inferencia sin servidor", + "watsonx": "La puerta de enlace de modelos watsonx expone /chat/completions y /models compatibles con OpenAI en /ml/gateway/v1.", + "ideogram": "Obtén una clave API en ideogram.ai/docs/api", + "iflytek": "Obtén una clave API en console.xfyun.cn", + "inception": "Inception Labs es compatible con OpenAI en https://api.inceptionlabs.ai/v1. mercury-2 es el primer LLM de difusión (dLLM) del catálogo, con una generación entre 5 y 10 veces más rápida que la de modelos autorregresivos comparables, además de llamadas a herramientas, json_mode y salidas estructuradas.", + "inference-net": "$25 en créditos gratuitos al registrarte, además de subvenciones de investigación disponibles", + "internlm": "Cuota mensual gratuita de aproximadamente 1M de tokens de entrada / 3M de tokens de salida (aproximadamente 10 RPM)", "jina-ai": "Bearer API key for the Jina AI rerank API.", "jina-reader": "Connect Jina Reader with an API key.", - "kenari": "Kenari exposes an OpenAI-compatible chat completions endpoint at https://kenari.id/v1/chat/completions, plus a live /v1/models catalog covering Claude, GPT, DeepSeek, GLM, Kimi and more. OmniRoute uses the OpenAI protocol and lists models via passthrough.", - "kie": "Connect KIE.AI with an API key.", - "kilo-gateway": "Connect Kilo Gateway with an API key.", - "kimi": "Connect Kimi with an API key.", - "kimi-coding-apikey": "Connect Kimi Coding (API Key) with an API key.", - "lambda-ai": "Connect Lambda AI with an API key.", - "laozhang": "Connect LaoZhang AI with an API key.", - "leonardo": "Get API key at leonardo.ai/developer", - "liquid": "Get API key at liquid.ai", - "llamagate": "Connect LlamaGate with an API key.", - "llm7": "Works without API key (use 'unused' as key). Get free token at token.llm7.io for higher limits.", - "longcat": "Free: one-time 10M-token grant after account signup + KYC verification (LongCat-2.0). One-time only — not a recurring daily/monthly allowance.", - "maritalk": "Connect Maritalk with an API key.", - "meta-llama": "Connect Meta Llama API with an API key.", - "minimax-cn": "Connect Minimax (China) with an API key.", - "minimax": "Connect Minimax Coding with an API key.", - "mistral": "Free Experiment tier: rate-limited access to all models, no credit card required", - "modal": "Modal commonly serves user-hosted OpenAI-compatible apps on /v1. OmniRoute will probe /v1/models and route chat traffic to /v1/chat/completions.", - "modelscope": "Free tier via ModelScope API-Inference — Alibaba account required.", - "monsterapi": "Get API key at monsterapi.ai", - "moonshot": "Connect Kimi with an API key.", - "morph": "Free tier: 250K credits/month, $0", - "nanogpt": "Connect NanoGPT with an API key.", - "nebius": "~$1 trial credits on signup for API testing", - "nlpcloud": "NLP Cloud uses a proprietary chatbot API instead of OpenAI chat/completions. OmniRoute adapts OpenAI messages to input/context/history and exposes a local catalog of supported chatbot models.", - "nomic": "Get API key at atlas.nomic.ai", - "nous-research": "Nous exposes an OpenAI-compatible /v1 surface with a large remote /models catalog. The /chat/completions endpoint requires a valid API key for programmatic inference.", - "novita": "$0.50 trial credits on signup (valid about 1 year)", - "nscale": "$5 free credits on signup for inference testing", - "nube": "Connect Nube.sh with an API key.", - "nvidia": "Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)", - "oci": "OCI exposes OpenAI-compatible chat and responses endpoints. Project ID is optional in OmniRoute but may be required for Responses and agentic workflows.", - "ollama-cloud": "Connect Ollama Cloud with an API key.", - "openadapter": "OpenAdapter exposes an OpenAI-compatible chat completions endpoint at https://api.openadapter.in/v1/chat/completions, aggregating 70+ open-source models (DeepSeek, Qwen, Kimi, MiniMax, GLM, Llama, Mistral, …). OmniRoute uses the OpenAI protocol.", - "openai": "Connect OpenAI with an API key.", - "opencode-go": "Connect OpenCode Go with an API key.", - "opencode-zen": "Connect OpenCode Zen with an API key.", - "openrouter": "Free models at $0/token with :free suffix - 20 RPM / 200 RPD", - "openvecta": "Free credits on signup for OpenAI-compatible inference across LLMs, embeddings, and reasoning models", - "orcarouter": "Create an API key (starts with sk-orca-) at https://www.orcarouter.ai, then paste it as a Bearer token. OpenAI-compatible endpoint at https://api.orcarouter.ai/v1.", - "ovhcloud": "Connect OVHcloud AI with an API key.", - "perplexity": "Connect Perplexity with an API key.", - "piapi": "Connect PiAPI with an API key.", - "pioneer": "$75 free usage credits — no credit card required", - "plamo": "PLaMo is OpenAI-compatible at https://api.platform.preferredai.jp/v1. Built by Preferred Networks and optimized for Japanese. Docs are primarily in Japanese.", - "poe": "Poe exposes OpenAI-compatible chat and responses on https://api.poe.com/v1, with authenticated balance checks on /usage/current_balance.", - "pollinations": "Free keyless tier: openai, openai-fast, openai-large, qwen-coder, mistral, deepseek, grok, gemini-flash-lite-3.1, perplexity-fast, perplexity-reasoning. Premium models (claude, gemini, midijourney) require a Pollinations API key from enter.pollinations.ai.", - "publicai": "Requires an API key — one-time signup credit, then paid", - "qiniu": "Create a Qiniu AI inference API key at https://portal.qiniu.com/ai-inference/api-key, then paste it here as a Bearer token. OpenAI-compatible endpoint at https://api.qnaigc.com/v1, proxying DeepSeek, Claude, Kimi and more behind one key.", - "recraft": "Connect Recraft with an API key.", - "reka": "Reka Chat is OpenAI-compatible on /v1. OmniRoute probes /v1/models and routes chat traffic to /v1/chat/completions.", - "requesty": "Create an API key at https://app.requesty.ai, then paste it here as a Bearer token. OpenAI-compatible endpoint at https://router.requesty.ai/v1, with a live /v1/models catalog.", - "runwayml": "Runway video generation is task-based. OmniRoute submits text-to-video or image-to-video jobs, polls /v1/tasks/[id], and normalizes the finished video outputs back into the OpenAI-like /v1/videos/generations response.", - "sambanova": "$5 free credits on signup (30-day validity), no credit card required", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", - "sap": "Model discovery uses /v2/lm/scenarios/foundation-models/models on AI_API_URL. Chat requests use deploymentUrl/chat/completions and require AI-Resource-Group.", - "sarvam": "Sarvam AI is OpenAI-compatible on /v1. OmniRoute probes /v1/models and routes chat traffic to /v1/chat/completions. Models are tuned for Indic languages.", - "scaleway": "1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B", - "sensenova": "Get API key at platform.sensenova.cn", - "siliconflow": "$1 free credits plus permanently free models after identity verification", - "snowflake": "Connect Snowflake Cortex with an API key.", - "sparkdesk": "Get API key at console.xfyun.cn", - "stability-ai": "Connect Stability AI with an API key.", - "stepfun": "Get API key at platform.stepfun.com", - "sumopod": "SumoPod exposes an OpenAI-compatible chat completions endpoint at https://ai.sumopod.com/v1/chat/completions, plus a live /v1/models catalog. OmniRoute uses the OpenAI protocol and lists models via passthrough.", - "suno": "Paste session cookie from suno.ai (Clerk auth)", - "synthetic": "Connect Synthetic with an API key.", - "tencent": "Get API key at console.cloud.tencent.com", - "thebai": "Bearer API key for the TheB.AI OpenAI-compatible gateway.", - "tinyfish": "X-API-Key from agent.tinyfish.ai/api-keys", - "together": "Connect Together AI with an API key.", - "tokenrouter": "TokenRouter exposes an OpenAI-compatible chat completions endpoint at https://api.tokenrouter.com/v1/chat/completions, plus a working /v1/models catalog. OmniRoute uses the OpenAI protocol.", - "topaz": "Connect Topaz with an API key.", - "typhoon": "Typhoon is OpenAI-compatible on /v1. Built by SCB 10X (Thailand); typhoon-v2.5-30b-a3b-instruct is a thai-first, multilingual model.", - "udio": "Paste session cookie from udio.com (Supabase auth)", - "uncloseai": "No auth required. API accepts any non-empty string as key for identification.", - "upstage": "Connect Upstage with an API key.", - "v0-vercel": "Connect v0 (Vercel) with an API key.", - "venice": "Connect Venice.ai with an API key.", - "vercel-ai-gateway": "Connect Vercel AI Gateway with an API key.", - "vertex": "Provide Service Account JSON or OAuth access_token", - "vertex-partner": "Provide the same Service Account JSON used for Vertex AI partner models.", - "volcengine": "Connect Volcengine with an API key.", - "voyage-ai": "Bearer API key for Voyage AI embeddings and rerank APIs.", - "wafer": "API key from https://wafer.ai", - "wandb": "Connect Weights & Biases Inference with an API key.", - "writer": "Writer Palmyra is OpenAI-compatible at https://api.writer.com/v1. palmyra-x5 offers a 1M-token context window.", - "x5lab": "X5Lab exposes an OpenAI-compatible chat completions endpoint at https://api.x5lab.dev/v1/chat/completions, plus a live /v1/models catalog. OmniRoute uses the OpenAI protocol and lists models via passthrough.", - "xai": "Connect xAI (Grok) with an API key.", - "xiaomi-mimo": "Connect Xiaomi MiMo with an API key.", - "yi": "Get API key at platform.lingyiwanwu.com", - "zai": "API key from https://open.bigmodel.cn/usercenter/apikeys", - "zenmux": "ZenMux exposes an OpenAI-compatible chat completions endpoint at /api/v1/chat/completions, plus Anthropic Messages (/api/anthropic/v1/messages) and Google Gemini (/api/vertex-ai) protocol surfaces. OmniRoute uses the OpenAI protocol.", - "galadriel": "Connect Galadriel with an API key.", - "predibase": "$25 free trial credits (30-day validity)", - "chenzk": "OpenAI-compatible gateway with a live model catalog at chenzk.top.", + "kenari": "Kenari ofrece un endpoint de finalización de chat compatible con OpenAI en https://kenari.id/v1/chat/completions, además de un catálogo activo en /v1/models que incluye Claude, GPT, DeepSeek, GLM, Kimi y más. OmniRoute utiliza el protocolo de OpenAI y muestra los modelos mediante passthrough.", + "kie": "Conecta KIE.AI con una clave API.", + "kilo-gateway": "Conecta Kilo Gateway con una clave API.", + "kimi": "Conecta Kimi con una clave API.", + "kimi-coding-apikey": "Conecta Kimi Coding (API Key) con una clave API.", + "lambda-ai": "Conecta Lambda AI con una clave API.", + "laozhang": "Conecta LaoZhang AI con una clave API.", + "leonardo": "Obtén una clave API en leonardo.ai/developer", + "liquid": "Obtén una clave API en liquid.ai", + "llamagate": "Conecta LlamaGate con una clave API.", + "llm7": "Funciona sin clave API (usa 'unused' como clave). Obtén un token gratuito en token.llm7.io para disponer de límites más altos.", + "longcat": "Gratis: concesión única de 10M de tokens tras registrar la cuenta y completar la verificación KYC (LongCat-2.0). Solo se concede una vez; no es una asignación diaria o mensual recurrente.", + "maritalk": "Conecta Maritalk con una clave API.", + "meta-llama": "Conecta Meta Llama API con una clave de API.", + "minimax-cn": "Conecta Minimax (China) con una clave de API.", + "minimax": "Conecta Minimax Coding con una clave de API.", + "mistral": "Nivel Experiment gratuito: acceso con límites de uso a todos los modelos, sin necesidad de tarjeta de crédito", + "modal": "Modal suele alojar aplicaciones compatibles con OpenAI gestionadas por los usuarios en /v1. OmniRoute consultará /v1/models y dirigirá el tráfico de chat a /v1/chat/completions.", + "modelscope": "Nivel gratuito mediante ModelScope API-Inference; se requiere una cuenta de Alibaba.", + "monsterapi": "Obtén una clave de API en monsterapi.ai", + "moonshot": "Conecta Kimi con una clave de API.", + "morph": "Nivel gratuito: 250K créditos/mes, $0", + "nanogpt": "Conecta NanoGPT con una clave de API.", + "nebius": "~$1 en créditos de prueba al registrarte para probar la API", + "nlpcloud": "NLP Cloud utiliza una API de chatbot propia en lugar de chat/completions de OpenAI. OmniRoute adapta los mensajes de OpenAI a input/context/history y ofrece un catálogo local de modelos de chatbot compatibles.", + "nomic": "Obtén una clave de API en atlas.nomic.ai", + "nous-research": "Nous ofrece una interfaz /v1 compatible con OpenAI y un amplio catálogo remoto en /models. El endpoint /chat/completions requiere una clave de API válida para realizar inferencias mediante programación.", + "novita": "$0.50 en créditos de prueba al registrarte (válidos durante aproximadamente 1 año)", + "nscale": "$5 en créditos gratuitos al registrarte para probar inferencias", + "nube": "Conecta Nube.sh con una clave de API.", + "nvidia": "Acceso gratuito para desarrollo: ~40 RPM, más de 70 modelos (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)", + "oci": "OCI ofrece endpoints de chat y respuestas compatibles con OpenAI. El ID del proyecto es opcional en OmniRoute, pero puede ser necesario para Responses y flujos de trabajo con agentes.", + "ollama-cloud": "Conecta Ollama Cloud con una clave de API.", + "openadapter": "OpenAdapter ofrece un endpoint de finalizaciones de chat compatible con OpenAI en https://api.openadapter.in/v1/chat/completions, que agrupa más de 70 modelos de código abierto (DeepSeek, Qwen, Kimi, MiniMax, GLM, Llama, Mistral, …). OmniRoute utiliza el protocolo de OpenAI.", + "openai": "Conecta OpenAI con una clave de API.", + "opencode-go": "Conecta OpenCode Go con una clave de API.", + "opencode-zen": "Conecta OpenCode Zen con una clave de API.", + "openrouter": "Modelos gratuitos a $0/token con el sufijo :free: 20 RPM / 200 RPD", + "openvecta": "Créditos gratuitos al registrarte para realizar inferencias compatibles con OpenAI en LLM, embeddings y modelos de razonamiento", + "orcarouter": "Crea una clave de API (empieza por sk-orca-) en https://www.orcarouter.ai y pégala como token Bearer. Endpoint compatible con OpenAI en https://api.orcarouter.ai/v1.", + "ovhcloud": "Conecta OVHcloud AI con una clave de API.", + "perplexity": "Conecta Perplexity con una clave de API.", + "piapi": "Conecta PiAPI con una clave de API.", + "pioneer": "$75 en créditos de uso gratuitos, sin necesidad de tarjeta de crédito", + "plamo": "PLaMo es compatible con OpenAI en https://api.platform.preferredai.jp/v1. Está desarrollado por Preferred Networks y optimizado para japonés. La documentación está principalmente en japonés.", + "poe": "Poe ofrece chat y respuestas compatibles con OpenAI en https://api.poe.com/v1, con consultas autenticadas del saldo en /usage/current_balance.", + "pollinations": "Nivel gratuito sin clave: openai, openai-fast, openai-large, qwen-coder, mistral, deepseek, grok, gemini-flash-lite-3.1, perplexity-fast, perplexity-reasoning. Los modelos prémium (claude, gemini, midijourney) requieren una clave de API de Pollinations obtenida en enter.pollinations.ai.", + "publicai": "Requiere una clave de API: crédito único al registrarte y, después, servicio de pago", + "qiniu": "Crea una clave de API de inferencia de Qiniu AI en https://portal.qiniu.com/ai-inference/api-key y pégala aquí como token Bearer. Endpoint compatible con OpenAI en https://api.qnaigc.com/v1, que proporciona acceso mediante proxy a DeepSeek, Claude, Kimi y otros modelos con una sola clave.", + "recraft": "Conecta Recraft con una clave de API.", + "reka": "Reka Chat es compatible con OpenAI en /v1. OmniRoute consulta /v1/models y dirige el tráfico de chat a /v1/chat/completions.", + "requesty": "Crea una clave de API en https://app.requesty.ai y pégala aquí como token Bearer. Endpoint compatible con OpenAI en https://router.requesty.ai/v1, con un catálogo actualizado de modelos en /v1/models.", + "runwayml": "La generación de vídeo de Runway se basa en tareas. OmniRoute envía trabajos de texto a vídeo o de imagen a vídeo, consulta periódicamente /v1/tasks/[id] y normaliza los vídeos generados en la respuesta similar a la de OpenAI de /v1/videos/generations.", + "sambanova": "$5 en créditos gratis al registrarte (válidos durante 30 días), no se requiere tarjeta de crédito", + "seekai": "Crea una clave de API en https://seekai.cc y pégala aquí como token Bearer. URL base compatible con OpenAI: https://seekai.cc/v1.", + "sap": "El descubrimiento de modelos utiliza /v2/lm/scenarios/foundation-models/models en AI_API_URL. Las solicitudes de chat utilizan deploymentUrl/chat/completions y requieren AI-Resource-Group.", + "sarvam": "Sarvam AI es compatible con OpenAI en /v1. OmniRoute consulta /v1/models y dirige el tráfico de chat a /v1/chat/completions. Los modelos están optimizados para lenguas índicas.", + "scaleway": "1M de tokens gratis para cuentas nuevas — conforme con la normativa de la UE y el RGPD (París), Qwen3 235B y Llama 70B", + "sensenova": "Obtén una clave de API en platform.sensenova.cn", + "siliconflow": "$1 en créditos gratis, además de modelos gratuitos de forma permanente tras verificar tu identidad", + "snowflake": "Conecta Snowflake Cortex con una clave de API.", + "sparkdesk": "Obtén una clave de API en console.xfyun.cn", + "stability-ai": "Conecta Stability AI con una clave de API.", + "stepfun": "Obtén una clave de API en platform.stepfun.com", + "sumopod": "SumoPod ofrece un endpoint de finalización de chat compatible con OpenAI en https://ai.sumopod.com/v1/chat/completions, además de un catálogo activo en /v1/models. OmniRoute utiliza el protocolo de OpenAI y muestra los modelos mediante transferencia directa.", + "suno": "Pega la cookie de sesión de suno.ai (autenticación de Clerk)", + "synthetic": "Conecta Synthetic con una clave de API.", + "tencent": "Obtén una clave de API en console.cloud.tencent.com", + "thebai": "Clave de API Bearer para la puerta de enlace compatible con OpenAI de TheB.AI.", + "tinyfish": "X-API-Key de agent.tinyfish.ai/api-keys", + "together": "Conecta Together AI con una clave de API.", + "tokenrouter": "TokenRouter ofrece un endpoint de finalización de chat compatible con OpenAI en https://api.tokenrouter.com/v1/chat/completions, además de un catálogo funcional en /v1/models. OmniRoute utiliza el protocolo de OpenAI.", + "topaz": "Conecta Topaz con una clave de API.", + "typhoon": "Typhoon es compatible con OpenAI en /v1. Desarrollado por SCB 10X (Tailandia); typhoon-v2.5-30b-a3b-instruct es un modelo multilingüe centrado principalmente en el tailandés.", + "udio": "Pega la cookie de sesión de udio.com (autenticación de Supabase)", + "uncloseai": "No se requiere autenticación. La API acepta cualquier cadena no vacía como clave de identificación.", + "upstage": "Conecta Upstage con una clave de API.", + "v0-vercel": "Conecta v0 (Vercel) con una clave de API.", + "venice": "Conecta Venice.ai con una clave de API.", + "vercel-ai-gateway": "Conecta Vercel AI Gateway con una clave de API.", + "vertex": "Proporciona el JSON de la cuenta de servicio o el access_token de OAuth", + "vertex-partner": "Proporciona el mismo JSON de la cuenta de servicio utilizado para los modelos de socios de Vertex AI.", + "volcengine": "Conecta Volcengine con una clave de API.", + "voyage-ai": "Clave de API Bearer para las API de embeddings y reranking de Voyage AI.", + "wafer": "Clave de API de https://wafer.ai", + "wandb": "Conecta Weights & Biases Inference con una clave de API.", + "writer": "Writer Palmyra es compatible con OpenAI en https://api.writer.com/v1. palmyra-x5 ofrece una ventana de contexto de 1M de tokens.", + "x5lab": "X5Lab ofrece un endpoint de finalización de chat compatible con OpenAI en https://api.x5lab.dev/v1/chat/completions, además de un catálogo activo en /v1/models. OmniRoute utiliza el protocolo de OpenAI y muestra los modelos mediante transferencia directa.", + "xai": "Conecta xAI (Grok) con una clave de API.", + "xiaomi-mimo": "Conecta Xiaomi MiMo con una clave de API.", + "yi": "Obtén una clave de API en platform.lingyiwanwu.com", + "zai": "Clave de API de https://open.bigmodel.cn/usercenter/apikeys", + "zenmux": "ZenMux ofrece un endpoint de finalización de chat compatible con OpenAI en /api/v1/chat/completions, además de interfaces para los protocolos Anthropic Messages (/api/anthropic/v1/messages) y Google Gemini (/api/vertex-ai). OmniRoute utiliza el protocolo de OpenAI.", + "galadriel": "Conecta Galadriel con una clave de API.", + "predibase": "$25 en créditos de prueba gratuitos (validez de 30 días)", + "chenzk": "Puerta de enlace compatible con OpenAI con un catálogo de modelos en vivo en chenzk.top.", "magnific": "Generate images with Magnific's Mystic API.", - "freetheai": "Free OpenAI-compatible gateway with passthrough model support.", + "freetheai": "Puerta de enlace gratuita compatible con OpenAI y con compatibilidad directa con modelos.", "g4f-gemini": "Puerta de enlace remota de g4f.space a Gemini. El acceso anónimo requiere créditos de prueba de trabajo de g4f.dev/chat o una clave API de miembro de g4f.dev/members.html; los límites varían.", "g4f-groq": "Puerta de enlace remota de g4f.space a Groq. El acceso anónimo requiere créditos de prueba de trabajo de g4f.dev/chat o una clave API de miembro de g4f.dev/members.html; los límites varían.", "g4f-nvidia": "Puerta de enlace remota de g4f.space a NVIDIA NIM. El acceso anónimo requiere créditos de prueba de trabajo de g4f.dev/chat o una clave API de miembro de g4f.dev/members.html; los límites varían.", "g4f-ollama": "Puerta de enlace remota de g4f.space a Ollama. El acceso anónimo requiere créditos de prueba de trabajo de g4f.dev/chat o una clave API de miembro de g4f.dev/members.html; los límites varían.", "g4f-pollinations": "Puerta de enlace remota de g4f.space a Pollinations. El acceso anónimo requiere créditos de prueba de trabajo de g4f.dev/chat o una clave API de miembro de g4f.dev/members.html; los límites varían.", - "mixedbread": "Create embeddings with the Mixedbread API.", - "segmind": "Generate images and videos with Segmind's hosted models.", - "amazon-q": "Uses the same AWS Builder ID or imported refresh-token flow as Kiro, but keeps Amazon Q connections separate.", - "antigravity": "Connect Antigravity with the existing OAuth flow.", - "agy": "Import your Antigravity CLI (`agy`) login (paste/upload its token file), auto-detect a local CLI login, or sign in with Google. Shares the Antigravity backend (incl. Claude models).", - "claude": "Connect Claude Code with the existing OAuth flow.", - "cline": "Connect Cline with the existing OAuth flow.", - "cursor": "Connect Cursor IDE with the existing OAuth flow.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", - "github": "Connect GitHub Copilot with the existing OAuth flow.", - "gitlab-duo": "OAuth application with ai_features + read_user scopes. Configure GITLAB_DUO_OAUTH_CLIENT_ID and optionally GITLAB_DUO_OAUTH_CLIENT_SECRET on this OmniRoute instance.", - "kilocode": "Connect Kilo Code with the existing OAuth flow.", - "kimi-coding": "Connect Kimi Coding with the existing OAuth flow.", - "kiro": "Free tier: 50 credits/month (~25K–100K tokens). ⚠️ Kiro ToS prohibits third-party proxy/harness use.", - "codex": "Connect OpenAI Codex with the existing OAuth flow.", - "qwen": "Connect Qwen Code with the existing OAuth flow.", - "github-models": "Create a GitHub PAT with 'models: read' scope at github.com/settings/tokens" + "mixedbread": "Crea embeddings con la API de Mixedbread.", + "segmind": "Genera imágenes y vídeos con los modelos alojados de Segmind.", + "amazon-q": "Utiliza el mismo AWS Builder ID o flujo de token de actualización importado que Kiro, pero mantiene separadas las conexiones de Amazon Q.", + "antigravity": "Conecta Antigravity con el flujo de OAuth existente.", + "agy": "Importa tu inicio de sesión de Antigravity CLI (`agy`) (pega/sube su archivo de token), detecta automáticamente un inicio de sesión local de la CLI o inicia sesión con Google. Comparte el backend de Antigravity (incluidos los modelos de Claude).", + "claude": "Conecta Claude Code con el flujo de OAuth existente.", + "cline": "Conecta Cline con el flujo de OAuth existente.", + "cursor": "Conecta Cursor IDE con el flujo de OAuth existente.", + "cursor-api": "Conecta Cursor con una clave de API de usuario (crsr_...) de cursor.com/dashboard/api; no se necesita una sesión del IDE.", + "github": "Conecta GitHub Copilot con el flujo de OAuth existente.", + "gitlab-duo": "Aplicación OAuth con los permisos ai_features + read_user. Configura GITLAB_DUO_OAUTH_CLIENT_ID y, opcionalmente, GITLAB_DUO_OAUTH_CLIENT_SECRET en esta instancia de OmniRoute.", + "kilocode": "Conecta Kilo Code con el flujo de OAuth existente.", + "kimi-coding": "Conecta Kimi Coding con el flujo de OAuth existente.", + "kiro": "Nivel gratuito: 50 créditos al mes (~25K–100K tokens). ⚠️ Los términos de servicio de Kiro prohíben el uso de proxies o herramientas de terceros.", + "codex": "Conecta OpenAI Codex con el flujo de OAuth existente.", + "qwen": "Conecta Qwen Code con el flujo de OAuth existente.", + "github-models": "Crea un PAT de GitHub con el permiso 'models: read' en github.com/settings/tokens" }, "passthroughModelsDescription": "{provider} acepta ID de modelo nativo del proveedor. Importe desde /models o agregue ID personalizados para enrutamiento.", "bedrockModelsDescription": "Los modelos de Amazon Bedrock tienen como alcance la región de AWS. Importe desde /models o agregue ID de modelo Bedrock habilitados en la región seleccionada.", "bedrockModelPlaceholder": "antrópico.claude-soneto-4-6", "addProviderSessionCookieTitle": "Agregar cookie de sesión {provider}", - "openWebProviderSite": "Open {host}", + "openWebProviderSite": "Abrir {host}", "addProviderWebTokenTitle": "Agregar token web {provider}", "addProviderConnectionTitle": "Agregar conexión {provider}", "webTokenCredentialLabel": "token de sesión web", @@ -6342,50 +6345,50 @@ "webSessionGuideStep3": "Copie la credencial requerida del propio dominio del proveedor. Para las cookies, copie solo el valor del encabezado Cookie y omita Cookie:.", "webSessionGuideStep3Manual": "Ruta manual: abre las herramientas de desarrollo del navegador (F12 → Red), actualiza la página, abre una solicitud autenticada y copia el valor del encabezado Cookie de los Encabezados de Solicitud — omite el prefijo Cookie:.", "webSessionGuideStep4": "Pégalo aquí y comprueba la conexión. Si deja de funcionar, inicie sesión nuevamente y reemplácelo con un valor nuevo.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importar archivo .har", + "harImportButtonBusy": "Importando…", + "harImportButtonHint": "Expórtalo desde la pestaña Network de DevTools después de enviar al menos un mensaje de chat.", + "harImportStatusValid": "Importado — válido durante ~{minutes} min.", + "harImportStatusExpiringSoon": "Importado — solo será válido durante ~{minutes} min más.", + "harImportStatusExpired": "Importado, pero este token ya caducó (hace {minutes} min) — exporta un HAR nuevo.", + "harImportStatusUnknownExpiry": "Importado. No se pudo determinar su caducidad.", + "harImportErrorNotJson": "Ese archivo no es un JSON válido. ¿Seguro que es una exportación .har?", + "harImportErrorNoEntries": "Este HAR no contiene entradas de red registradas.", + "harImportErrorNoChathubUrl": "No se encontró ninguna conexión de chat de Copilot en este HAR. Envía al menos un mensaje de chat en m365.cloud.microsoft antes de exportarlo.", + "harImportErrorUnparsableUrl": "Se encontró la conexión de chat, pero no se pudo leer su URL.", + "harImportErrorMissingFields": "Se encontró la conexión de chat, pero faltaba el token.", + "harImportErrorReadFailed": "No se pudo leer ese archivo.", + "harImportErrorUnknown": "No se pudo extraer ninguna credencial de ese archivo HAR.", "webSessionSecurityHint": "Trate esto como una contraseña: puede acceder a su cuenta web iniciada hasta que caduque o sea revocada.", "webNoAuthGuideTitle": "No se requiere credencial", "webNoAuthGuideBody": "{provider} no necesita una clave API ni una cookie. Guarde la conexión para utilizar su punto final web gratuito.", "webSessionCredentialValidationFailed": "Error en la validación de credenciales de sesión. Inicie sesión nuevamente, copie una credencial nueva e inténtelo nuevamente.", "checkCookie": "comprobar galleta", "checkWebToken": "ficha de cheque", - "huggingchatLabel": "HuggingChat (Free)", - "huggingchatDesc": "Free LLM chat via huggingface.co/chat", + "huggingchatLabel": "HuggingChat (Gratis)", + "huggingchatDesc": "Chat gratuito con LLM a través de huggingface.co/chat", "poeWebLabel": "Poe Web", - "poeWebDesc": "Multi-model chat via poe.com", + "poeWebDesc": "Chat multimodelo a través de poe.com", "veniceWebLabel": "Venice Web", - "veniceWebDesc": "Privacy-focused AI chat", + "veniceWebDesc": "Chat de IA centrado en la privacidad", "v0VercelWebLabel": "v0 Vercel Web", - "v0VercelWebDesc": "AI code generation via v0.dev", + "v0VercelWebDesc": "Generación de código con IA mediante v0.dev", "kimiWebLabel": "Kimi Web", - "kimiWebDesc": "Moonshot AI consumer chat via www.kimi.com (international, Connect-RPC API)", + "kimiWebDesc": "Chat de IA para consumidores de Moonshot AI mediante www.kimi.com (internacional, API Connect-RPC)", "doubaoWebLabel": "Dola Web", - "doubaoWebDesc": "ByteDance AI chat via dola.com", - "overrideBaseUrlAdvanced": "Advanced: override base URL", - "overrideBaseUrlHint": "Advanced: point this built-in provider at a custom endpoint. Leave blank to use the default.", + "doubaoWebDesc": "Chat de IA de ByteDance mediante dola.com", + "overrideBaseUrlAdvanced": "Avanzado: sobrescribir la URL base", + "overrideBaseUrlHint": "Avanzado: dirige este proveedor integrado a un endpoint personalizado. Déjalo en blanco para usar el predeterminado.", "apiProtocolLabel": "Protocolo API", "apiProtocolDefault": "Compatible con OpenAI (predeterminado)", "apiProtocolHint": "Algunos proveedores publican los mismos modelos a través de más de un protocolo. Deja el predeterminado a menos que necesites la alternativa.", - "bulkAddFormatHintCloudflare": "One key per line. Format: name|accountId|apiKey (Cloudflare account ID + API token).", - "lmarenaWebCookieHint": "Open arena.ai, sign in, then copy the full Cookie header from a Network request. Include arena-auth-prod-v1.0 and arena-auth-prod-v1.1 (and further chunks if present), preferably with cf_clearance. Do not paste only the empty arena-auth-prod-v1 cookie. Optional: providerSpecificData.recaptchaV3Token if create-evaluation still returns 403.", - "kimiOfficialSupporterBadge": "Official Supporter", - "kimiOfficialSupporterTooltip": "Kimi (Moonshot AI) is an official OmniRoute launch partner", + "bulkAddFormatHintCloudflare": "Una clave por línea. Formato: name|accountId|apiKey (ID de cuenta de Cloudflare + token de API).", + "lmarenaWebCookieHint": "Abre arena.ai, inicia sesión y copia el encabezado Cookie completo de una solicitud de red. Incluye arena-auth-prod-v1.0 y arena-auth-prod-v1.1 (y los fragmentos adicionales, si los hay), preferiblemente con cf_clearance. No pegues únicamente la cookie vacía arena-auth-prod-v1. Opcional: providerSpecificData.recaptchaV3Token si create-evaluation sigue devolviendo 403.", + "kimiOfficialSupporterBadge": "Patrocinador oficial", + "kimiOfficialSupporterTooltip": "Kimi (Moonshot AI) es un socio oficial de lanzamiento de OmniRoute", "cheaperInferenceSupporterBadge": "Amigo del código abierto", "cheaperInferenceSupporterTooltip": "Cheaper Inference apoya a OmniRoute como amigo del código abierto", - "kimiPartnerLinkNote": "Partner link — supports OmniRoute at no extra cost to you", + "kimiPartnerLinkNote": "Enlace de socio: apoya a OmniRoute sin coste adicional para ti", "codexQuotaPools": "Grupos de cuotas de Codex", "codexPoolAvailable": "Disponible", "codexPoolPartiallyLimited": "Limitado parcialmente", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Modo de servicio de Codex actualizado", "codexServiceTierActive": "El nivel de servicio Codex {tier} está activo", "codexTierFastLabel": "Rápido", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Flexible", "commandCodeApplyFailed": "Error al aplicar el código de comando auth", "commandCodeApplyingApproval": "Navegador aprobado, aplicando…", "commandCodeApplyingKey": "Aplicando la clave aprobada por el navegador…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "El código de autenticación ha expirado", "commandCodeConnected": "Código de comando conectado", "commandCodeConnectionAdded": "Conexión de código de comando añadida", + "clearConnectionCooldown": "Borrar tiempo de espera", + "clearConnectionCooldownInProgress": "Borrando…", + "clearConnectionCooldownTitle": "Borra ahora el tiempo de espera; úsalo cuando la cuota ya se haya restablecido en el proveedor de origen", "commandCodeLinkExpired": "El enlace del código de comando ha expirado", "commandCodeOpeningStudio": "Abriendo Command Code Studio…", "commandCodePopupBlocked": "Popup bloqueado. Por favor, permite las ventanas emergentes y vuelve a intentar Command Code Connect.", "commandCodeStartFailed": "Error al iniciar el comando Code auth", "connectionDeleted": "Conexión eliminada", "connectionFallback": "conexión", + "connectionCooldownCleared": "Tiempo de espera borrado; la conexión se reincorporó al enrutamiento", "coolingConnectionsDescription": "Estas conexiones se están enfriando tras su última solicitud. OmniRoute las omitirá hasta que expire el temporizador; no hace falta desactivarlas a mano.", "coolingConnectionsTitle": "Enfriando actualmente ({count})", + "failedClearConnectionCooldown": "No se pudo borrar el tiempo de espera", "failedDeleteAlias": "Error al eliminar el alias", "failedDeleteConnection": "Error al eliminar la conexión", "failedDistributeProxies": "Error al distribuir proxies.", @@ -6457,7 +6465,7 @@ "noProvidersMatch": "No hay proveedores que coincidan con tu búsqueda.", "noSavedProxies": "No se encontraron proxies guardados. Agrega proxies en Configuración → Proxy primero.", "pageLoadErrorDescription": "No pudimos cargar los datos del proveedor en este momento. Verifica tu conexión y vuelve a intentarlo.", - "pageLoadErrorId": "Error ID: {id}", + "pageLoadErrorId": "ID del error: {id}", "pageLoadErrorRetry": "Inténtalo de nuevo", "pageLoadErrorTitle": "Error al cargar los proveedores", "playgroundTitle": "Parque de Juegos", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Configuración del punto final del modelo guardado", "searchByModelAria": "Buscar por modelo", "selectSupportedEndpoint": "Seleccione al menos un endpoint compatible", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Entorno / CLI" }, "settings": { "title": "Configuración", @@ -6485,91 +6488,91 @@ "routing": "Enrutamiento", "cache": "caché", "resilience": "Resiliencia", - "description": "Description", - "enable": "Enable", - "disable": "Disable", - "update": "Update", + "description": "Descripción", + "enable": "Activar", + "disable": "Desactivar", + "update": "Actualizar", "routingSettingsIntro": "Controla cómo se enrutan, transforman y envían sus solicitudes a proveedores de IA.", "routingOpDropParagraphContainsLabel": "Descartar párrafo (contiene)", "routingOpDropParagraphStartsWithLabel": "Descartar párrafo (empieza por)", "routingOpReplaceTextLabel": "Reemplazar texto", "routingOpReplaceRegexLabel": "Reemplazar expresión regular", "routingOpDropBlockContainsLabel": "Descartar bloque (contiene)", - "routingOpPrependSystemBlockLabel": "Prepend system block", - "routingOpAppendSystemBlockLabel": "Append system block", - "routingOpInjectBillingHeaderLabel": "Inject billing header", - "routingOpObfuscateWordsLabel": "Obfuscate words (ZWJ)", - "routingOpDropParagraphContainsDesc": "Removes any paragraph (text block split on blank lines) inside the system prompt whose text contains ANY of the listed substrings. Use to strip third-party client fingerprints like 'github.com/anomalyco/opencode' or 'docs.openwebui.com' that Anthropic's classifier flags.", - "routingOpDropParagraphStartsWithDesc": "Removes any paragraph that STARTS WITH one of the listed prefixes. Use for identity lines like 'You are OpenCode' or 'You are Open WebUI' that announce the calling client.", - "routingOpReplaceTextDesc": "Replaces a literal substring with another literal substring. Use for known trigger phrases — e.g. rewrite 'Here is some useful information about the environment you are running in:' to 'Environment context you are running in:' (an empirically-validated trigger phrase).", - "routingOpReplaceRegexDesc": "Replaces text matching a regular expression. Use when you need patterns (character classes, optional whitespace, anchors) instead of literal substrings. A malformed pattern is caught at runtime when the op runs.", - "routingOpDropBlockContainsDesc": "Removes ENTIRE system blocks (not just paragraphs) whose text contains any of the listed substrings. Use when a whole block is fingerprint-bearing and you want it gone — e.g. an injected MCP-server description.", - "routingOpPrependSystemBlockDesc": "Inserts a new text block at the FRONT of the system array. Use to add the SDK identity 'You are a Claude agent, built on Anthropic's Claude Agent SDK.' that Anthropic's classifier expects.", - "routingOpAppendSystemBlockDesc": "Inserts a new text block at the END of the system array. Use for cosmetic additions that don't need to be at position [0].", - "routingOpInjectBillingHeaderDesc": "Prepends the special 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' text block that Anthropic's classifier validates. Required for CC bridge relay endpoints; for the native claude provider OmniRoute already injects its own billing line so this op is usually redundant there.", - "routingOpObfuscateWordsDesc": "Inserts a Zero-Width-Joiner character after the first letter of each listed word, so 'opencode' becomes 'o‍pencode'. Reads identical to humans but bypasses classifier word matches. Targets system blocks, user/assistant messages, and tool descriptions.", - "routingNeedlesHint": "List of substrings. A paragraph matches if it contains ANY one of them. Add one per line via 'Add entry'.", - "routingPrefixesHint": "List of strings. A paragraph matches if it starts with any one of them (leading whitespace is trimmed before matching).", - "routingCaseSensitiveHint": "When ON, 'OpenCode' and 'opencode' are different strings. When OFF (default), the comparison ignores case.", - "routingMatchLiteralHint": "Exact literal substring to find. No regex syntax — special chars like . * ? are treated as themselves.", - "routingReplacementTextHint": "Replacement string. Leave blank to delete the match. The output preserves surrounding text.", - "routingAllOccurrencesHint": "When ON (default), every instance is replaced. When OFF, only the first match is replaced.", - "routingPatternHint": "JavaScript regex source. Don't wrap in slashes — just 'foo(.*)bar'. Server rejects patterns that fail to compile.", - "routingRegexFlagsHint": "JavaScript regex flags (g = all matches, i = case-insensitive, s = dot matches newline, m = multiline). Default 'g'.", - "routingBlockTextHint": "Full text of the new system block. Use a literal string; the system block stores text only.", - "routingIdempotencyKeyHint": "Optional. If set, the op skips when a block whose text starts with this key is already present. Prevents double-prepend on retries.", - "routingBillingEntrypointHint": "Value injected as 'cc_entrypoint='. Anthropic accepts 'sdk-cli' (Agent SDK), 'cli' (Claude Code CLI), or other documented values.", - "routingBillingVersionFormatHint": "How the 3-char build hash after cc_version= is computed. 'ex-machina' = sha256 of CCH_SALT+chars-from-first-user-msg+version (per-message). 'omniroute-daystamp' = sha256 of YYYY-MM-DD+version (stable per-day).", - "routingBillingCchAlgoHint": "How the 5-char cch= token is computed. 'sha256-first-user' = sha256 of first user message text. 'xxhash64-body' = body-level signing fills it later. 'static-zero' = literal '00000' placeholder.", - "routingObfuscateWordsHint": "Lowercase words to obfuscate. ZWJ insertion is applied case-insensitively, so 'opencode' also matches 'OpenCode' and 'OPENCODE'.", - "routingObfuscateTargetsHint": "Which body regions to scan for the words: system blocks, user/assistant messages, and/or tool descriptions.", - "routingObfuscateTargetsLabel": "Targets", - "routingSummarizeDropParagraphContains": "drop paragraphs containing: {items}", - "routingSummarizeDropParagraphStartsWith": "drop paragraphs starting with: {items}", - "routingSummarizeReplaceText": "replace \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", - "routingSummarizeDropBlockContains": "drop blocks containing: {items}", - "routingSummarizePrependSystemBlock": "prepend block: \"{text}\"", - "routingSummarizeAppendSystemBlock": "append block: \"{text}\"", - "routingSummarizeInjectBillingHeader": "inject billing header (entrypoint={entrypoint}, version={versionFormat}, cch={cchAlgo})", - "routingSummarizeObfuscateWords": "obfuscate {count} word(s) via ZWJ in {targets}", - "routingDefaultAutoVariantLKGP": "Last Known Good Provider", - "routingDefaultAutoVariantLKGPDesc": "Last Known Good Provider", - "routingDefaultAutoVariantCoding": "Quality-first for code", - "routingDefaultAutoVariantCodingDesc": "Quality-first for code", - "routingDefaultAutoVariantFast": "Low-latency routing", - "routingDefaultAutoVariantFastDesc": "Low-latency routing", - "routingDefaultAutoVariantCheap": "Cost-optimized", - "routingDefaultAutoVariantCheapDesc": "Cost-optimized", - "routingDefaultAutoVariantOffline": "High availability", - "routingDefaultAutoVariantOfflineDesc": "High availability", - "routingDefaultAutoVariantSmart": "Best discovery (10% explore)", - "routingDefaultAutoVariantSmartDesc": "Best discovery (10% explore)", - "routingOpSummaryCount": "{count, plural, =0 {no ops} one {# op} other {# ops}}", - "routingOpEnabled": "enabled", - "routingOpDisabled": "disabled", + "routingOpPrependSystemBlockLabel": "Anteponer bloque del sistema", + "routingOpAppendSystemBlockLabel": "Añadir bloque del sistema al final", + "routingOpInjectBillingHeaderLabel": "Inyectar encabezado de facturación", + "routingOpObfuscateWordsLabel": "Ofuscar palabras (ZWJ)", + "routingOpDropParagraphContainsDesc": "Elimina cualquier párrafo (bloque de texto separado por líneas en blanco) dentro del prompt del sistema cuyo texto contenga CUALQUIERA de las subcadenas indicadas. Úsalo para eliminar huellas de clientes de terceros como 'github.com/anomalyco/opencode' o 'docs.openwebui.com' que activa el clasificador de Anthropic.", + "routingOpDropParagraphStartsWithDesc": "Elimina cualquier párrafo que EMPIECE POR uno de los prefijos indicados. Úsalo para líneas de identidad como 'You are OpenCode' o 'You are Open WebUI' que revelan el cliente que realiza la llamada.", + "routingOpReplaceTextDesc": "Sustituye una subcadena literal por otra subcadena literal. Úsalo para frases desencadenantes conocidas; por ejemplo, cambia 'Here is some useful information about the environment you are running in:' por 'Environment context you are running in:' (una frase desencadenante validada empíricamente).", + "routingOpReplaceRegexDesc": "Sustituye el texto que coincida con una expresión regular. Úsalo cuando necesites patrones (clases de caracteres, espacios en blanco opcionales, anclas) en lugar de subcadenas literales. Los patrones con formato incorrecto se detectan en tiempo de ejecución al ejecutar la operación.", + "routingOpDropBlockContainsDesc": "Elimina bloques del sistema COMPLETOS (no solo párrafos) cuyo texto contenga cualquiera de las subcadenas indicadas. Úsalo cuando un bloque completo contenga una huella identificativa y quieras eliminarlo; por ejemplo, una descripción inyectada de un servidor MCP.", + "routingOpPrependSystemBlockDesc": "Inserta un nuevo bloque de texto al PRINCIPIO del array del sistema. Úsalo para añadir la identidad del SDK 'You are a Claude agent, built on Anthropic's Claude Agent SDK.' que espera el clasificador de Anthropic.", + "routingOpAppendSystemBlockDesc": "Inserta un nuevo bloque de texto al FINAL del array system. Úsalo para adiciones estéticas que no necesiten estar en la posición [0].", + "routingOpInjectBillingHeaderDesc": "Antepone el bloque de texto especial 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' que valida el clasificador de Anthropic. Es obligatorio para los endpoints de retransmisión del puente de CC; para el proveedor nativo claude, OmniRoute ya inyecta su propia línea de facturación, por lo que esta operación suele ser redundante en ese caso.", + "routingOpObfuscateWordsDesc": "Inserta un carácter de unión de ancho cero después de la primera letra de cada palabra indicada, de modo que 'opencode' se convierte en 'opencode'. Se ve igual para las personas, pero evita las coincidencias de palabras del clasificador. Afecta a los bloques del sistema, los mensajes del usuario/asistente y las descripciones de herramientas.", + "routingNeedlesHint": "Lista de subcadenas. Un párrafo coincide si contiene CUALQUIERA de ellas. Añade una por línea mediante 'Añadir entrada'.", + "routingPrefixesHint": "Lista de cadenas. Un párrafo coincide si comienza por cualquiera de ellas (los espacios en blanco iniciales se eliminan antes de realizar la comparación).", + "routingCaseSensitiveHint": "Cuando está ACTIVADO, 'OpenCode' y 'opencode' son cadenas diferentes. Cuando está DESACTIVADO (valor predeterminado), la comparación no distingue entre mayúsculas y minúsculas.", + "routingMatchLiteralHint": "Subcadena literal exacta que se debe buscar. No se admite sintaxis de expresiones regulares: los caracteres especiales como . * ? se tratan literalmente.", + "routingReplacementTextHint": "Cadena de sustitución. Déjala en blanco para eliminar la coincidencia. La salida conserva el texto circundante.", + "routingAllOccurrencesHint": "Cuando está ACTIVADO (valor predeterminado), se sustituyen todas las apariciones. Cuando está DESACTIVADO, solo se sustituye la primera coincidencia.", + "routingPatternHint": "Patrón de expresión regular de JavaScript. No lo encierres entre barras; usa simplemente 'foo(.*)bar'. El servidor rechaza los patrones que no se pueden compilar.", + "routingRegexFlagsHint": "Indicadores de expresión regular de JavaScript (g = todas las coincidencias, i = no distingue entre mayúsculas y minúsculas, s = el punto coincide con saltos de línea, m = multilínea). Valor predeterminado: 'g'.", + "routingBlockTextHint": "Texto completo del nuevo bloque del sistema. Usa una cadena literal; el bloque del sistema solo almacena texto.", + "routingIdempotencyKeyHint": "Opcional. Si se establece, la operación se omite cuando ya existe un bloque cuyo texto comienza con esta clave. Evita anteponer el bloque dos veces en los reintentos.", + "routingBillingEntrypointHint": "Valor inyectado como 'cc_entrypoint='. Anthropic acepta 'sdk-cli' (SDK de agentes), 'cli' (CLI de Claude Code) u otros valores documentados.", + "routingBillingVersionFormatHint": "Cómo se calcula el hash de compilación de 3 caracteres que aparece después de cc_version=. 'ex-machina' = sha256 de CCH_SALT+caracteres-del-primer-mensaje-del-usuario+versión (por mensaje). 'omniroute-daystamp' = sha256 de YYYY-MM-DD+versión (estable durante el día).", + "routingBillingCchAlgoHint": "Cómo se calcula el token de 5 caracteres cch=. 'sha256-first-user' = sha256 del texto del primer mensaje del usuario. 'xxhash64-body' = la firma del cuerpo lo completa posteriormente. 'static-zero' = marcador literal '00000'.", + "routingObfuscateWordsHint": "Palabras en minúsculas que se deben ofuscar. La inserción de ZWJ se aplica sin distinguir entre mayúsculas y minúsculas, por lo que 'opencode' también coincide con 'OpenCode' y 'OPENCODE'.", + "routingObfuscateTargetsHint": "Regiones del cuerpo en las que se buscarán las palabras: bloques del sistema, mensajes del usuario/asistente y/o descripciones de herramientas.", + "routingObfuscateTargetsLabel": "Destinos", + "routingSummarizeDropParagraphContains": "eliminar párrafos que contengan: {items}", + "routingSummarizeDropParagraphStartsWith": "eliminar párrafos que comiencen por: {items}", + "routingSummarizeReplaceText": "sustituir \"{match}\" → \"{replacement}\"", + "routingSummarizeReplaceRegex": "expresión regular /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeDropBlockContains": "eliminar bloques que contengan: {items}", + "routingSummarizePrependSystemBlock": "anteponer bloque: \"{text}\"", + "routingSummarizeAppendSystemBlock": "añadir bloque al final: \"{text}\"", + "routingSummarizeInjectBillingHeader": "inyectar cabecera de facturación (entrypoint={entrypoint}, versión={versionFormat}, cch={cchAlgo})", + "routingSummarizeObfuscateWords": "ofuscar {count} palabra(s) mediante ZWJ en {targets}", + "routingDefaultAutoVariantLKGP": "Último proveedor válido conocido", + "routingDefaultAutoVariantLKGPDesc": "Último proveedor válido conocido", + "routingDefaultAutoVariantCoding": "Prioridad a la calidad para código", + "routingDefaultAutoVariantCodingDesc": "Prioridad a la calidad para código", + "routingDefaultAutoVariantFast": "Enrutamiento de baja latencia", + "routingDefaultAutoVariantFastDesc": "Enrutamiento de baja latencia", + "routingDefaultAutoVariantCheap": "Optimizado para reducir costes", + "routingDefaultAutoVariantCheapDesc": "Optimizado para reducir costes", + "routingDefaultAutoVariantOffline": "Alta disponibilidad", + "routingDefaultAutoVariantOfflineDesc": "Alta disponibilidad", + "routingDefaultAutoVariantSmart": "Mejor descubrimiento (10 % de exploración)", + "routingDefaultAutoVariantSmartDesc": "Mejor descubrimiento (10 % de exploración)", + "routingOpSummaryCount": "{count, plural, =0 {ninguna operación} one {# operación} other {# operaciones}}", + "routingOpEnabled": "habilitado", + "routingOpDisabled": "deshabilitado", "routingOpStatusSeparator": " ·", "resilienceSettingsIntro": "Reintento, enfriamiento y respaldo automáticos cuando fallan los proveedores.", "aiSettingsIntro": "Configuraciones específicas de IA para pensar en el presupuesto, el comportamiento del modelo y la compresión.", "systemPrompt": "Aviso del sistema", "thinkingBudget": "Pensando en el presupuesto", "proxy": "apoderado", - "httpProxy": "HTTP Proxy", + "httpProxy": "Proxy HTTP", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Secciones de proxy", + "requestBodyLimitTitle": "Límite del cuerpo de la solicitud", + "requestBodyLimitDescription": "Tamaño máximo de la carga útil de la API aceptado antes de analizar el cuerpo de una solicitud. Las rutas específicas para cargas mantienen como mínimo su límite integrado de 100 MB.", + "requestBodyLimitInputLabel": "Límite del cuerpo de la solicitud en MB", + "requestBodyLimitEmptyError": "Introduce un límite en MB", + "requestBodyLimitWholeNumberError": "Usa un número entero", + "requestBodyLimitMinimumError": "El mínimo es de {min} MB", + "requestBodyLimitMaximumError": "El máximo es de {max} MB", + "requestBodyLimitLoadFailed": "No se pudo cargar la configuración del límite de solicitudes", + "requestBodyLimitSaveSuccess": "Límite del cuerpo de la solicitud guardado", + "requestBodyLimitSaveFailed": "No se pudo guardar el límite del cuerpo de la solicitud", + "requestBodyLimitSaving": "Guardando...", + "requestBodyLimitSave": "Guardar", + "requestBodyLimitCurrent": "Actual: {value}", "cacheConfigLoadFailed": "No se pudo cargar la configuración de caché", "cacheConfigSaveSuccess": "Configuración de caché guardada", "cacheConfigSaveFailed": "No se pudo guardar la configuración de caché", @@ -6593,96 +6596,96 @@ "enablePassword": "Habilitar contraseña", "darkMode": "Modo oscuro", "lightMode": "Modo de luz", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", - "memoryTokenCostWarning": "Heads up: with memory enabled, OmniRoute injects up to {tokens} tokens of retrieved context into every chat request — this increases token usage and cost. To skip injection for a specific request, send the \"x-omniroute-no-memory: true\" header.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "memoryTitle": "Memoria", + "memoryDesc": "Memoria conversacional persistente entre sesiones", + "memoryEnabled": "Habilitar memoria", + "memoryEnabledDesc": "Cuando esté habilitada, OmniRoute incorporará contexto anterior relevante.", + "memoryTokenCostWarning": "Aviso: con la memoria habilitada, OmniRoute incorpora hasta {tokens} tokens de contexto recuperado en cada solicitud de chat, lo que aumenta el uso de tokens y el coste. Para omitir la incorporación en una solicitud específica, envía el encabezado \"x-omniroute-no-memory: true\".", + "maxTokens": "Máximo de tokens", + "retentionDays": "Retención", + "recent": "Reciente", + "recentDesc": "Ventana cronológica", + "semantic": "Semántica", + "semanticDesc": "Búsqueda vectorial", + "hybrid": "Híbrida", + "hybridDesc": "Reciente + Semántica", + "skillsTitle": "Habilidades", + "skillsDesc": "Herramientas para modelos", + "skillsEnabled": "Habilitar habilidades", + "skillsEnabledDesc": "Permite a los agentes activar funciones.", + "skillsComingSoon": "El marketplace de habilidades estará disponible próximamente.", + "memorySkillsTitle": "Memoria y habilidades", + "memorySkillsDesc": "Contexto y capacidades persistentes", + "modelsDevTitle": "Base de datos de modelos", + "modelsDevDesc": "Sincroniza automáticamente precios, capacidades y especificaciones desde models.dev", + "modelsDevEnabled": "Activar la sincronización con models.dev", + "modelsDevEnabledDesc": "Obtén precios, capacidades y especificaciones de modelos desde la base de datos de código abierto models.dev", + "modelsDevInterval": "Intervalo de sincronización", + "syncNow": "Sincronizar ahora", + "syncing": "Sincronizando...", + "lastSync": "Última sincronización", + "never": "Nunca", "justNow": "justo ahora", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Estadísticas de sincronización", + "modelsDevStatsDesc": "Cobertura actual de datos de models.dev", "providers": "Proveedores", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modelos con precios", + "capabilities": "Capacidades", + "lastSyncCount": "Cantidad de la última sincronización", + "lastSyncFull": "Última sincronización completa", + "modelsDevInfo": "Cómo funciona", + "modelsDevInfoDesc": "models.dev es una base de datos de código abierto con especificaciones de modelos de IA, mantenida por el equipo de SST/OpenCode. Proporciona precios, capacidades, límites de contexto y modalidades para más de 4000 modelos de más de 100 proveedores.", + "modelsDevInfoResolution": "Orden de resolución de precios (de mayor a menor prioridad):", + "modelsDevInfoOrder": "Anulación del usuario → models.dev → LiteLLM → Valor predeterminado codificado", "systemTheme": "Tema del sistema", - "debugToggle": "Enable Debug Mode", - "logToolSourcesToggle": "Log Tool Sources", - "logToolSourcesDescription": "Emit a diagnostic log line per request summarizing tool count and MCP/hosted/client source breakdown.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", - "homePinnedSectionsDesc": "Choose which sections to pin to the top of the Home page.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", - "accountEmailVisibility": "Account email visibility", - "accountEmailVisibilityDesc": "Show full account emails across providers, combos, logs, quota, and playground screens. Turn this off to mask them by default.", - "comboConfigMode": "Combo configuration mode", - "comboConfigModeDesc": "Choose how the combo create and edit dialog is organized.", - "comboConfigModeGuided": "Guided", - "comboConfigModeGuidedDesc": "Use the current step-by-step combo builder.", - "comboConfigModeExpert": "Expert", - "comboConfigModeExpertDesc": "Show every combo option on one page and enable direct model entry.", - "providerQuotaAutoRefresh": "Provider Quota auto refresh", - "providerQuotaAutoRefreshDesc": "Refresh the Provider Limits view automatically while it stays open.", - "providerQuotaAutoRefreshToggle": "Automatic refresh", - "providerQuotaAutoRefreshToggleDesc": "Refresh the quota view every few minutes while the page is visible.", - "providerQuotaAutoRefreshInterval": "Refresh interval", - "providerQuotaAutoRefreshIntervalDesc": "How often the quota view should refresh, in seconds.", - "seconds": "seconds", - "sidebarVisibilityToggle": "Show Sidebar Items", + "debugToggle": "Activar el modo de depuración", + "logToolSourcesToggle": "Registrar las fuentes de las herramientas", + "logToolSourcesDescription": "Emite una línea de registro de diagnóstico por solicitud que resume la cantidad de herramientas y el desglose de fuentes MCP/alojadas/del cliente.", + "homePinProviderQuotaToHome": "Fijar información en la página de inicio", + "homePinnedSectionsDesc": "Elige qué secciones fijar en la parte superior de la página de inicio.", + "homeProviderQuotaLimits": "Límites de cuota de proveedores", + "homeProviderQuotaLimitsDesc": "Fija el contenedor de estado de cuotas de proveedores (con el botón Actualizar todo) en la parte superior de la página de inicio.", + "homeQuickStart": "Inicio rápido", + "homeQuickStartDesc": "Muestra el panel Inicio rápido en la página de inicio.", + "homeProviderTopology": "Topología de proveedores", + "homeProviderTopologyDesc": "Muestra la topología de proveedores en la página de inicio.", + "accountEmailVisibility": "Visibilidad del correo electrónico de la cuenta", + "accountEmailVisibilityDesc": "Muestra las direcciones de correo electrónico completas de las cuentas en las pantallas de proveedores, combinaciones, registros, cuotas y entorno de pruebas. Desactiva esta opción para ocultarlas parcialmente de forma predeterminada.", + "comboConfigMode": "Modo de configuración de combinaciones", + "comboConfigModeDesc": "Elige cómo se organiza el cuadro de diálogo para crear y editar combinaciones.", + "comboConfigModeGuided": "Guiado", + "comboConfigModeGuidedDesc": "Usa el actual creador de combinaciones paso a paso.", + "comboConfigModeExpert": "Experto", + "comboConfigModeExpertDesc": "Muestra todas las opciones de combinación en una sola página y permite introducir modelos directamente.", + "providerQuotaAutoRefresh": "Actualización automática de cuotas de proveedores", + "providerQuotaAutoRefreshDesc": "Actualiza automáticamente la vista Límites de proveedores mientras permanezca abierta.", + "providerQuotaAutoRefreshToggle": "Actualización automática", + "providerQuotaAutoRefreshToggleDesc": "Actualiza la vista de cuotas cada pocos minutos mientras la página esté visible.", + "providerQuotaAutoRefreshInterval": "Intervalo de actualización", + "providerQuotaAutoRefreshIntervalDesc": "Frecuencia con la que debe actualizarse la vista de cuotas, en segundos.", + "seconds": "segundos", + "sidebarVisibilityToggle": "Mostrar elementos de la barra lateral", "enableCache": "Habilitar caché", "cacheTTL": "TTL de caché", "maxCacheSize": "Tamaño máximo de caché", "clearCache": "Borrar caché", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Caché borrada correctamente", + "clearCacheFailed": "No se pudo borrar la caché", "cacheHits": "Visitas de caché", "cacheMisses": "Errores de caché", "hitRate": "Tasa de aciertos", "cacheEntries": "Entradas de caché", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Configuración de caché", + "semanticCache": "Caché semántica", + "maxEntries": "Máximo de entradas", + "ttlMinutes": "TTL (minutos)", "promptCache": "Caché de aviso", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Estrategia", + "preserveClientCache": "Conservar la caché del cliente", + "enabled": "Activado", "loading": "Loading...", "saving": "Guardando...", - "save": "Save", + "save": "Guardar", "circuitBreaker": "Disyuntor", "retryPolicy": "Política de reintento", "maxRetries": "Reintentos máximos", @@ -6690,27 +6693,27 @@ "timeoutMs": "Tiempo de espera (ms)", "enableSystemPrompt": "Habilitar mensaje del sistema", "systemPromptText": "Texto de aviso del sistema", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", - "customBannedSignals": "Banned Keywords", - "customBannedSignalsDesc": "Additional keywords that trigger permanent account ban detection. Built-in keywords always apply.", - "customBannedSignalsPlaceholder": "e.g. api key revoked", - "noCustomBannedSignals": "No custom keywords. Only built-in keywords are active.", - "resilienceStructureTitle": "Resilience Structure", + "autoDisableBannedAccounts": "Desactivar automáticamente las cuentas bloqueadas", + "autoDisableDescription": "Marca permanentemente las conexiones de proveedores como desactivadas si devuelven señales específicas de bloqueo definitivo (p. ej., HTTP 403 'verifica tu cuenta'). Esto las elimina de la rotación combinada.", + "autoDisableThreshold": "Umbral de bloqueo", + "autoDisableThresholdDesc": "Número de señales de bloqueo consecutivas necesarias antes de la desactivación permanente.", + "autoDisableBannedScope": "Aplicar la desactivación automática a", + "autoDisableBannedScopeDesc": "Los puestos de inicio de sesión (suscripciones de pago y cuentas gratuitas) pueden ser bloqueados por el proveedor ascendente si OmniRoute sigue reintentándolo tras un bloqueo. Las claves de API prepago de pago no corren ese riesgo; déjalas en el grupo para que la estrategia de llenar primero pueda usar la siguiente clave.", + "autoDisableBannedScopeAll": "Todas las conexiones", + "autoDisableBannedScopeAllDesc": "Desactiva todas las conexiones que devuelvan una señal de bloqueo permanente, incluidas las claves de API prepago.", + "autoDisableBannedScopeSubscription": "Solo cuentas de inicio de sesión o suscripción", + "autoDisableBannedScopeSubscriptionDesc": "Desactiva los puestos de OAuth, cookies, sesiones e inicio de sesión web (de pago o gratuitos). Las claves de API prepago permanecen activas para que el enrutamiento pueda conmutar por error.", + "customBannedSignals": "Palabras clave de bloqueo", + "customBannedSignalsDesc": "Palabras clave adicionales que activan la detección de bloqueo permanente de cuentas. Las palabras clave integradas se aplican siempre.", + "customBannedSignalsPlaceholder": "p. ej., clave de API revocada", + "noCustomBannedSignals": "No hay palabras clave personalizadas. Solo están activas las palabras clave integradas.", + "resilienceStructureTitle": "Estructura de resiliencia", "resilienceStructureDesc": "Esta página solo configura el comportamiento. El estado del interruptor activo se muestra en la página Salud. El reintento específico del combo y el control de espacios por turnos permanecen en la configuración del combo.", "enableThinking": "Habilitar el pensamiento", "maxThinkingTokens": "Fichas de pensamiento máximo", "enableProxy": "Habilitar proxy", - "perKeyProxyEnabled": "Enable per-key proxy assignment", - "perKeyProxyEnabledDesc": "When enabled, each provider connection can use its own proxy assignment", + "perKeyProxyEnabled": "Activar la asignación de proxy por clave", + "perKeyProxyEnabledDesc": "Cuando está activada, cada conexión de proveedor puede usar su propia asignación de proxy", "proxyUrl": "URL de proxy", "pricingRates": "Formato de tarifas de precios", "currentPricing": "Resumen de precios actuales", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Muestre los controles de Tailscale Funnel en la página Endpoint.", "showNgrokTunnel": "túnel ngrok", "showNgrokTunnelDesc": "Muestre los controles del túnel ngrok en la página Punto final.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Ocultar elementos de la barra lateral", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Todo", + "presetAllDesc": "Mostrar todo", + "presetEssentials": "Elementos esenciales", + "presetEssentialsDesc": "Ruta para principiantes: las herramientas avanzadas seguirán disponibles en las búsquedas", + "presetMinimal": "Mínimo", + "presetMinimalDesc": "Solo páginas principales", + "presetDeveloper": "Desarrollador", + "presetDeveloperDesc": "Herramientas de desarrollo y proxy", + "presetAdmin": "Administración", + "presetAdminDesc": "Monitorización y auditoría", + "settingsSidebarTitle": "Personalización de la barra lateral", + "settingsSidebarDesc": "Elige qué elementos mostrar en la barra lateral. Los elementos esenciales mantienen las herramientas avanzadas disponibles en la búsqueda.", "hideHealthLogs": "Ocultar registros de verificación de estado", "hideHealthLogsDesc": "Cuando está activado, suprime los mensajes [HealthCheck] en la consola del servidor", "themeAccent": "Color del tema", @@ -6780,26 +6783,26 @@ "themeOrange": "Naranja", "themeCyan": "Cian", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", - "logoFileTooLarge": "Logo file must be less than 500KB", - "faviconFileTooLarge": "Favicon file must be less than 50KB", - "invalidLogoFileType": "Invalid file type. Please upload PNG, JPG, SVG, GIF, or WebP.", - "invalidFaviconFileType": "Invalid file type. Please upload PNG, ICO, SVG, GIF, or WebP.", - "failedToReadFile": "Failed to read file", - "startOnLogin": "Start on Login", - "startOnLoginDesc": "Automatically launch OmniRoute on system startup and run silently in the background tray.", + "whitelabelingDesc": "Personaliza el nombre y el logotipo de la aplicación", + "appName": "Nombre de la aplicación", + "appNameDesc": "Nombre mostrado en la barra lateral y en la pestaña del navegador", + "customLogo": "URL del logotipo personalizado", + "customLogoDesc": "URL de la imagen de tu logotipo personalizado", + "uploadLogo": "Subir logotipo", + "resetLogo": "Restablecer valores predeterminados", + "logoPreview": "Vista previa", + "customFavicon": "Favicon del navegador", + "customFaviconDesc": "URL de tu favicon personalizado (se muestra en la pestaña del navegador)", + "uploadFavicon": "Subir favicon", + "resetFavicon": "Restablecer favicon", + "faviconPreview": "Vista previa del favicon", + "logoFileTooLarge": "El archivo del logotipo debe tener menos de 500 KB", + "faviconFileTooLarge": "El archivo del favicon debe tener menos de 50 KB", + "invalidLogoFileType": "Tipo de archivo no válido. Sube un archivo PNG, JPG, SVG, GIF o WebP.", + "invalidFaviconFileType": "Tipo de archivo no válido. Sube un archivo PNG, ICO, SVG, GIF o WebP.", + "failedToReadFile": "No se pudo leer el archivo", + "startOnLogin": "Iniciar al iniciar sesión", + "startOnLoginDesc": "Inicia OmniRoute automáticamente al arrancar el sistema y ejecútalo de forma silenciosa en la bandeja del sistema.", "flushCache": "Vaciar caché", "flushing": "Sonrojándose…", "size": "Tamaño", @@ -6809,19 +6812,19 @@ "globalProxy": "Proxy global", "globalProxyDesc": "Configure un proxy saliente global para todas las llamadas API. Los proveedores individuales, los combos y las claves pueden anular esto.", "noGlobalProxy": "No hay ningún proxy global configurado", - "proxyPool": "Proxy Pool", - "freePool": "Free Pool", - "proxyDocumentation": "Proxy Documentation", - "proxyGlobalConfigTab": "Global Config", - "proxyPoolTab": "Proxy Pool", - "freePoolTab": "Free Pool", - "proxyDocumentationTab": "Documentation", - "proxySubscriptionsTab": "Subscriptions", + "proxyPool": "Grupo de proxies", + "freePool": "Grupo gratuito", + "proxyDocumentation": "Documentación del proxy", + "proxyGlobalConfigTab": "Configuración global", + "proxyPoolTab": "Grupo de proxies", + "freePoolTab": "Grupo gratuito", + "proxyDocumentationTab": "Documentación", + "proxySubscriptionsTab": "Suscripciones", "proxySubscription": { "error": { - "LOCAL_CORE_ENDPOINT_INVALID": "Local proxy-core endpoint is invalid; SS/VMess/Trojan/VLESS nodes were ignored.", - "NEEDS_CORE_NOT_CONFIGURED": "This subscription has nodes that need a local proxy core (SS/VMess/Trojan/VLESS); they are not routed until you configure the local-core SOCKS5 endpoint.", - "NO_USABLE_NODES": "Subscription yielded no usable nodes (http/https/socks5 or nodes with a local core endpoint)." + "LOCAL_CORE_ENDPOINT_INVALID": "El endpoint local de proxy-core no es válido; se ignoraron los nodos SS/VMess/Trojan/VLESS.", + "NEEDS_CORE_NOT_CONFIGURED": "Esta suscripción tiene nodos que necesitan un núcleo de proxy local (SS/VMess/Trojan/VLESS); no se enrutarán hasta que configures el endpoint SOCKS5 del núcleo local.", + "NO_USABLE_NODES": "La suscripción no produjo ningún nodo utilizable (http/https/socks5 o nodos con un endpoint de núcleo local)." }, "description": "Pegue su enlace de suscripción de proxy. Una vez habilitado, el tráfico se enruta a través del grupo de proxy en modo global o de regla (Proveedor especificado). Los nodos de suscripción se sincronizan automáticamente con el grupo de proxy y reutilizan los mecanismos existentes de sondeo, verificación de estado y antifugas.", "addSubscription": "Agregar suscripción", @@ -6848,7 +6851,7 @@ "createSubscription": "Crear suscripción", "loading": "Cargando…", "noSubscriptions": "Aún no hay suscripciones. Haga clic en \"Agregar suscripción\" para comenzar.", - "statusOk": "OK", + "statusOk": "Aceptar", "statusError": "error", "statusEmpty": "vacio", "global": "Mundial", @@ -6896,95 +6899,95 @@ "refreshInterval": "Intervalo de Actualización", "ruleModeDescription": "Descripción del Modo de Regla" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", + "bulkHealthcheck": "Comprobación de estado masiva", + "bulkHealthcheckDesc": "Prueba todos los proxies configurados con una URL de destino para determinar cuáles funcionan.", + "healthcheckTesting": "Probando...", + "healthcheckAll": "Comprobar estado de todos", + "healthcheckFailed": "No se pudo ejecutar la comprobación de estado", + "healthcheckTestingAll": "Probando todos los proxies en paralelo...", "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", - "proxyDocumentationScopeTitle": "Proxy scope resolution", - "proxyDocumentationScopeDescBefore": "OmniRoute resolves the outbound proxy in priority order:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", - "proxyDocumentationScopeDescAfter": ". The most specific scope wins.", - "proxyDocumentationAddTitle": "Adding a custom proxy", - "proxyDocumentationAddDescBefore": "Go to the", - "proxyDocumentationAddDescMiddle": "tab → click", - "proxyDocumentationAddCta": "+ Add proxy", - "proxyDocumentationAddDescAfter": ". Fill in type (http/https/socks5), host, and port. Optionally assign it to a scope.", - "proxyDocumentationBulkTitle": "Bulk import format", - "proxyDocumentationBulkDesc": "Pipe-delimited fields:", - "proxyDocumentationSocks5DescBefore": "SOCKS5 proxies are disabled by default. Set", - "proxyDocumentationFreePoolDesc": "The Free Pool tab aggregates proxies from 1proxy, Proxifly, and IPLocate. Use ⊕ to test and promote a proxy to your registry. Only proxies that pass the connectivity test are added.", - "proxyDocumentationVercelRelayDescBefore": "The Vercel Relay is an outbound edge relay — not an inbound tunnel. Deploying one sends LLM API calls through Vercel's dynamic IPs, bypassing datacenter geo-blocks and rate limits. The relay is protected by a generated secret header", - "proxyDocumentationVercelRelayDescAfter": "Your Vercel token is used only during deploy and is never stored.", - "vercelRelayTokenRequired": "Token is required", - "vercelRelayDeployFailed": "Deploy failed", - "vercelRelayTokenHint": "Token is used only during deploy — never stored.", - "denoRelayTokenRequired": "Deno Deploy token is required", - "denoRelayOrgDomainRequired": "Organization domain is required", - "denoRelayDeployFailed": "Deno Deploy failed", - "denoRelayTokenHint": "Organization token (prefix ddo_) from console.deno.com → Organization → Settings → Organization Tokens. Used once for deploy and never stored.", - "denoRelayOrgDomainHint": "Your Deno Deploy organization's default domain (e.g. acme.deno.net). The relay will be reachable at https://<app-name>.<org-slug>.deno.net.", - "proxyFreePoolFilterProtocol": "Filter by protocol", - "proxyFreePoolProtocol": "Protocol", - "proxyFreePoolCountryPlaceholder": "Country (e.g. US)", - "proxyFreePoolFilterCountry": "Filter by country", - "proxyFreePoolMinQualityPlaceholder": "Min quality", - "proxyFreePoolMinQualityLabel": "Minimum quality score", - "proxyFreePoolSyncAll": "Sync All", + "healthcheckWorking": "Operativos", + "healthcheckFailedLabel": "Fallidos", + "healthcheckStatus": "Estado", + "healthcheckProxyUrl": "URL del proxy", + "healthcheckLatency": "Latencia", + "proxyDocumentationScopeTitle": "Resolución del ámbito del proxy", + "proxyDocumentationScopeDescBefore": "OmniRoute resuelve el proxy de salida en este orden de prioridad:", + "proxyDocumentationScopeOrder": "combinación → cuenta → proveedor → global", + "proxyDocumentationScopeDescAfter": ". Prevalece el ámbito más específico.", + "proxyDocumentationAddTitle": "Añadir un proxy personalizado", + "proxyDocumentationAddDescBefore": "Ve a la", + "proxyDocumentationAddDescMiddle": "pestaña → haz clic en", + "proxyDocumentationAddCta": "+ Añadir proxy", + "proxyDocumentationAddDescAfter": ". Introduce el tipo (http/https/socks5), el host y el puerto. Opcionalmente, asígnalo a un ámbito.", + "proxyDocumentationBulkTitle": "Formato de importación masiva", + "proxyDocumentationBulkDesc": "Campos delimitados por barras verticales:", + "proxyDocumentationSocks5DescBefore": "Los proxies SOCKS5 están deshabilitados de forma predeterminada. Configura", + "proxyDocumentationFreePoolDesc": "La pestaña Pool gratuito agrega proxies de 1proxy, Proxifly e IPLocate. Usa ⊕ para probar un proxy y añadirlo a tu registro. Solo se añaden los proxies que superan la prueba de conectividad.", + "proxyDocumentationVercelRelayDescBefore": "Vercel Relay es un relé perimetral de salida, no un túnel de entrada. Al desplegar uno, las llamadas a la API de LLM se envían a través de las IP dinámicas de Vercel, eludiendo los bloqueos geográficos de centros de datos y los límites de velocidad. El relé está protegido por un encabezado secreto generado", + "proxyDocumentationVercelRelayDescAfter": "Tu token de Vercel solo se usa durante el despliegue y nunca se almacena.", + "vercelRelayTokenRequired": "El token es obligatorio", + "vercelRelayDeployFailed": "Error en el despliegue", + "vercelRelayTokenHint": "El token solo se usa durante el despliegue; nunca se almacena.", + "denoRelayTokenRequired": "El token de Deno Deploy es obligatorio", + "denoRelayOrgDomainRequired": "El dominio de la organización es obligatorio", + "denoRelayDeployFailed": "Error en Deno Deploy", + "denoRelayTokenHint": "Token de la organización (prefijo ddo_) de console.deno.com → Organization → Settings → Organization Tokens. Se usa una sola vez para el despliegue y nunca se almacena.", + "denoRelayOrgDomainHint": "El dominio predeterminado de tu organización de Deno Deploy (p. ej., acme.deno.net). Se podrá acceder al relé en https://<app-name>.<org-slug>.deno.net.", + "proxyFreePoolFilterProtocol": "Filtrar por protocolo", + "proxyFreePoolProtocol": "Protocolo", + "proxyFreePoolCountryPlaceholder": "País (p. ej., US)", + "proxyFreePoolFilterCountry": "Filtrar por país", + "proxyFreePoolMinQualityPlaceholder": "Calidad mínima", + "proxyFreePoolMinQualityLabel": "Puntuación mínima de calidad", + "proxyFreePoolSyncAll": "Sincronizar todo", "proxyFreePoolTotal": "Total", - "proxyFreePoolInPool": "In pool", - "proxyFreePoolAvgQuality": "Avg quality", - "proxyFreePoolSelected": "{count} selected", - "proxyFreePoolAddSelected": "Add selected to pool", - "proxyFreePoolAddVisible": "Add all visible to pool", - "proxyFreePoolSource": "Source", - "proxyFreePoolHostPort": "Host:Port", - "proxyFreePoolType": "Type", - "proxyFreePoolCountry": "Country", - "proxyFreePoolQuality": "Quality", - "proxyFreePoolLatency": "Latency", - "proxyFreePoolEmpty": "No proxies found. Click Sync All to fetch from sources.", - "proxyToggleSources": "Toggle proxy sources", - "proxyFreePoolTesting": "Testing proxies...", - "proxyFreePoolBulkResult": "{succeeded} added, {failed} failed", - "proxyFreePoolPageSummary": "Page {page} of {totalPages} ({total} total proxies)", - "proxyFreePoolTotalSummary": "{total} total proxies", - "proxyFreePoolSearchPlaceholder": "Search host…", - "proxyFreePoolSearchLabel": "Search proxies by host", - "proxyFreePoolSortLabel": "Sort proxies", - "proxyFreePoolSortQuality": "Quality", - "proxyFreePoolSortLatency": "Latency", - "proxyFreePoolSortRecent": "Recently validated", - "proxyFreePoolListTotal": "Listed", - "proxyFreePoolLoadMore": "Load more", - "close": "Close", - "cancel": "Cancel", + "proxyFreePoolInPool": "En el grupo", + "proxyFreePoolAvgQuality": "Calidad media", + "proxyFreePoolSelected": "{count} seleccionados", + "proxyFreePoolAddSelected": "Añadir seleccionados al grupo", + "proxyFreePoolAddVisible": "Añadir todos los visibles al grupo", + "proxyFreePoolSource": "Fuente", + "proxyFreePoolHostPort": "Host:Puerto", + "proxyFreePoolType": "Tipo", + "proxyFreePoolCountry": "País", + "proxyFreePoolQuality": "Calidad", + "proxyFreePoolLatency": "Latencia", + "proxyFreePoolEmpty": "No se encontraron proxies. Haz clic en Sincronizar todo para obtenerlos de las fuentes.", + "proxyToggleSources": "Alternar fuentes de proxies", + "proxyFreePoolTesting": "Probando proxies...", + "proxyFreePoolBulkResult": "{succeeded} añadidos, {failed} fallidos", + "proxyFreePoolPageSummary": "Página {page} de {totalPages} ({total} proxies en total)", + "proxyFreePoolTotalSummary": "{total} proxies en total", + "proxyFreePoolSearchPlaceholder": "Buscar host…", + "proxyFreePoolSearchLabel": "Buscar proxies por host", + "proxyFreePoolSortLabel": "Ordenar proxies", + "proxyFreePoolSortQuality": "Calidad", + "proxyFreePoolSortLatency": "Latencia", + "proxyFreePoolSortRecent": "Validados recientemente", + "proxyFreePoolListTotal": "Listados", + "proxyFreePoolLoadMore": "Cargar más", + "close": "Cerrar", + "cancel": "Cancelar", "globalLabel": "Mundial", "configure": "Configurar", "globalSystemPrompt": "Aviso del sistema global", "saved": "Guardado", - "beforePromptLabel": "Before Prompt", - "beforePromptDesc": "Injected before agent/provider system instructions", - "beforePromptPlaceholder": "Instructions inserted before agent/provider prompt...", - "afterPromptLabel": "After Prompt", - "afterPromptDesc": "Injected after agent/provider system instructions", - "afterPromptPlaceholder": "Instructions inserted after agent/provider prompt...", + "beforePromptLabel": "Antes del prompt", + "beforePromptDesc": "Se inserta antes de las instrucciones del sistema del agente/proveedor", + "beforePromptPlaceholder": "Instrucciones insertadas antes del prompt del agente/proveedor...", + "afterPromptLabel": "Después del prompt", + "afterPromptDesc": "Se inserta después de las instrucciones del sistema del agente/proveedor", + "afterPromptPlaceholder": "Instrucciones insertadas después del prompt del agente/proveedor...", "chars": "{count} caracteres", "thinkingBudgetTitle": "Pensando en el presupuesto", "thinkingBudgetDesc": "Controle el uso del token de razonamiento de IA en todas las solicitudes", "thinkingBudgetIndependenceHint": "Las funciones de compresión, enrutamiento y límite de tokens siguen funcionando en todos los modos. Auto no significa \"auto-mostrar pensamiento\": elimina los campos de razonamiento del cliente.", "passthrough": "Paso a través", "passthroughDesc": "Sin cambios: el cliente controla el presupuesto pensando en", - "thinkingModePassthrough": "Passthrough", + "thinkingModePassthrough": "Transferencia directa", "thinkingModePassthroughDesc": "Dejar el razonamiento del cliente sin cambios (esfuerzo, resumen, bloques de pensamiento). Requerido para Codex/Desktop visible thinking. Predeterminado.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automático (eliminar)", "thinkingModeAutoDesc": "Elimina todos los campos de pensamiento/razonamiento del cliente (razonamiento, esfuerzo_razonamiento, pensamiento de Claude, configuración_de_pensamiento de Gemini) y permite que el proveedor invente valores predeterminados. Se pueden ocultar los paneles de pensamiento y romper las solicitudes de resumen del cliente.", "thinkingModeCustom": "Personalizado", "thinkingModeCustomDesc": "Sobrescribe cada solicitud con un presupuesto fijo de tokens de pensamiento que establezcas a continuación.", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} proveedor(es) bloqueado(s) en /models", "blockProviderTitle": "Bloquear {provider}", "unblockProviderTitle": "Desbloquear {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Coincidencia de huella digital de CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} proveedor(es) con la huella digital de CLI activa", + "enableFingerprintTitle": "Activar la huella digital para {provider}", + "disableFingerprintTitle": "Desactivar la huella digital para {provider}", "systemTransforms": "Canalización de transformación de bloque de sistema", "systemTransformsDesc": "Canalización de transformaciones ordenada por proveedor aplicada al cuerpo de la solicitud antes del reenvío. Admite cualquier ID de proveedor.", "systemTransformsAddProvider": "Agregar proveedor", @@ -7067,39 +7070,39 @@ "costOptDesc": "Prefiere la cuenta más barata disponible", "resetAware": "RR con reconocimiento de reinicio", "resetAwareDesc": "Prefiere cuentas con cuota restante saludable y reinicios más cercanos", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Ponderado por cuota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Aleatorio estricto", + "strictRandomDesc": "Baraja las cuentas: usa cada cuenta una vez antes de volver a barajar", "stickyLimit": "Límite fijo", "stickyLimitDesc": "Llamadas por cuenta antes de cambiar", - "routingStrategyTitle": "Routing Strategy", - "routingStrategySubtitle": "Match 9router: account round-robin, sticky limits, and combo rotation", - "accountRoundRobin": "Round Robin", - "accountRoundRobinDesc": "Cycle through accounts to distribute load", - "comboRoundRobin": "Combo Round Robin", - "comboRoundRobinDesc": "Cycle through combo targets instead of always starting with the first", - "comboStickyLimit": "Combo Sticky Limit", - "comboStickyLimitDesc": "Calls per combo target before switching", - "routingStrategyAccountSummary": "Distributing requests across accounts with {limit} calls per account.", - "routingStrategyFillFirstSummary": "Using accounts in priority order (Fill First).", - "routingStrategyComboSummary": " Combos rotate after {limit} call(s) per target.", - "routingStrategyComboFallbackSummary": " Combos use each combo's configured strategy (default priority/fallback).", - "providerAccountRoutingTitle": "Multi-account routing", - "providerAccountRoutingDesc": "Override global account strategy for this provider (9router parity).", - "providerRoutingStrategy": "Account strategy", - "providerRoutingInheritGlobal": "Inherit global default", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "routingStrategyTitle": "Estrategia de enrutamiento", + "routingStrategySubtitle": "Igual que 9router: rotación de cuentas, límites de afinidad y rotación de combinaciones", + "accountRoundRobin": "Turnos rotativos", + "accountRoundRobinDesc": "Alterna entre las cuentas para distribuir la carga", + "comboRoundRobin": "Round Robin de combinaciones", + "comboRoundRobinDesc": "Alterna entre los destinos de la combinación en lugar de empezar siempre por el primero", + "comboStickyLimit": "Límite de afinidad de combinaciones", + "comboStickyLimitDesc": "Llamadas por destino de la combinación antes de cambiar", + "routingStrategyAccountSummary": "Distribuyendo solicitudes entre cuentas con {limit} llamadas por cuenta.", + "routingStrategyFillFirstSummary": "Usando las cuentas por orden de prioridad (llenar primero).", + "routingStrategyComboSummary": "Las combinaciones rotan después de {limit} llamada(s) por destino.", + "routingStrategyComboFallbackSummary": "Las combinaciones usan la estrategia configurada de cada una (prioridad/respaldo predeterminado).", + "providerAccountRoutingTitle": "Enrutamiento multicuenta", + "providerAccountRoutingDesc": "Anula la estrategia global de cuentas para este proveedor (compatibilidad con 9router).", + "providerRoutingStrategy": "Estrategia de cuentas", + "providerRoutingInheritGlobal": "Heredar valor global predeterminado", + "quotaPreflightTitle": "Umbral de comprobación previa de cuota", + "quotaPreflightSubtitle": "Omite las cuentas sin cuota antes de enviar la solicitud al servicio ascendente", + "quotaPreflightEnable": "Activar comprobación previa de cuota", + "quotaPreflightEnableDesc": "Antes de cada solicitud, comprueba la cuota restante de la cuenta (ventanas de 5 h, semanales o mensuales). Las cuentas cuyo valor esté en el umbral o por debajo se omiten sin realizar una llamada al servicio ascendente. Los umbrales por ventana definidos en la página Cuota del proveedor siempre prevalecen sobre el valor predeterminado establecido aquí.", + "quotaPreflightCutoff": "Umbral global (porcentaje restante mínimo)", + "quotaPreflightCutoffDesc": "Deja de usar una cuenta cuando su cuota restante descienda hasta este porcentaje o por debajo, en todas las ventanas que no tengan su propio umbral. Coincide con las barras de porcentaje restante de la página Cuota del proveedor.", + "quotaPreflightWindowsHint": "Las ventanas con su propio umbral por ventana o proveedor (definido en el cuadro de diálogo Umbral de la página Cuota del proveedor) no se ven afectadas por este valor predeterminado.", + "quotaPreflightLoadFailed": "No se pudo cargar la configuración de la comprobación previa de cuota.", "modelAliases": "Alias de modelo", "modelAliasesTitle": "Aliases de Modelo", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Reasigna nombres de modelos mediante coincidencias exactas o patrones comodín.", "addCustomAlias": "Agregar Alias Personalizado", "deprecatedModelId": "ID del modelo obsoleto", "newModelId": "Nuevo ID del modelo", @@ -7179,16 +7182,16 @@ "comboDefaultsGuideHint1": "Mantenga bajos los reintentos en flujos de baja latencia; aumente el tiempo de espera solo para tareas de larga generación.", "comboDefaultsGuideHint2": "Utilice Ajustes específicos de proveedores cuando un proveedor necesite un comportamiento de tiempo de espera/reintento diferente al de los valores predeterminados globales.", "globalComboConfig": "Configuración combinada global", - "moveUp": "Move up", - "moveDown": "Move down", - "allProvidersAdded": "All providers added", - "noProvidersFound": "No providers found", + "moveUp": "Subir", + "moveDown": "Bajar", + "allProvidersAdded": "Se añadieron todos los proveedores", + "noProvidersFound": "No se encontraron proveedores", "defaultStrategy": "Estrategia predeterminada", "defaultStrategyDesc": "Aplicado a nuevos combos sin estrategia explícita.", "comboStrategyAria": "estrategia combinada", "priority": "Prioridad", "weighted": "ponderado", - "contextRelay": "Context Relay", + "contextRelay": "Retransmisión de contexto", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Reintentos máximos", "retryDelayLabel": "Retardo de reintento (ms)", @@ -7202,9 +7205,9 @@ "providerMaxRetriesAria": "{provider} reintentos máximos", "providerTimeoutAria": "{provider} tiempo de espera ms", "removeProviderOverrideAria": "Eliminar la anulación de {provider}", - "selectProviderPlaceholder": "Select provider...", - "searchProviderPlaceholder": "Search providers...", - "searchProviderAria": "Search providers", + "selectProviderPlaceholder": "Seleccionar proveedor...", + "searchProviderPlaceholder": "Buscar proveedores...", + "searchProviderAria": "Buscar proveedores", "newProviderNamePlaceholder": "por ej. google, openai...", "newProviderNameAria": "Nuevo nombre del proveedor", "retries": "reintentos", @@ -7213,11 +7216,11 @@ "maxNestingDepth": "Profundidad máxima de anidamiento", "concurrencyPerModel": "Concurrencia / Modelo", "queueTimeout": "Tiempo de espera de cola (ms)", - "queueDepth": "Queue Depth", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "queueDepth": "Profundidad de la cola", + "contextRelayHandoffThreshold": "Umbral de transferencia", + "contextRelayMaxMessages": "Máximo de mensajes para el resumen", + "contextRelaySummaryModel": "Modelo de resumen", + "contextRelayProviderNote": "Context Relay genera actualmente transferencias para cuentas de Codex y utiliza estos valores como configuración global predeterminada para combinaciones nuevas o sin configurar.", "providerProfiles": "Perfiles de proveedores", "providerProfilesDesc": "Configuraciones de resiliencia separadas para proveedores de OAuth (basado en sesiones) y de clave API (medidas). Los proveedores de OAuth tienen umbrales más estrictos debido a límites de tarifas más bajos.", "oauthProviders": "Proveedores de OAuth", @@ -7265,7 +7268,7 @@ "systemStorage": "Sistema y almacenamiento", "allDataLocal": "Todos los datos almacenados localmente en su máquina", "databasePath": "Ruta de la base de datos", - "export": "Export", + "export": "Exportar", "exportDatabase": "Exportar base de datos", "exportAll": "Exportar todo (.tar.gz)", "importDatabase": "Importar base de datos", @@ -7299,7 +7302,7 @@ "daysAgo": "Hace {count}d", "backupReasonManual": "manuales", "backupReasonPreRestore": "pre-restauración", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# conexión} other {# conexiones}}", "noChangesSinceBackup": "No hay cambios desde la última copia de seguridad", "backupFailed": "Error en la copia de seguridad", "restoreFailed": "Restauración fallida", @@ -7308,35 +7311,35 @@ "errorDuringImport": "Se produjo un error durante la importación.", "modelPricing": "Precios del modelo", "modelPricingDesc": "Configurar tarifas de costo por modelo • Todas las tarifas en tokens de $/1 millón", - "pricingCoverage": "Coverage", - "pricingAuth": "Auth", - "pricingSort": "Sort", - "pricingAll": "All", - "pricingAuthUnknown": "Unknown", - "pricingMostModels": "Most models", - "pricingHighestCoverage": "Highest coverage", - "pricingLowestCoverage": "Lowest coverage", - "pricingNameAscending": "Name (A–Z)", - "pricingCoverageGaps": "Coverage gaps", - "pricingClearFilters": "Clear filters", - "pricingShowingProviders": "Showing {visible} of {total}", - "pricingFilteredFrom": "(filtered from {count})", - "pricingShowMoreProviders": "Show {count} more ({remaining} remaining)", - "modelOverridesTitle": "Model Overrides", - "modelOverridesDesc": "Override provider/model capabilities used by routing and request shaping. Targets use the same provider/model form as combos.", - "searchModelOverrideTargets": "Search provider/model...", - "selectedModel": "Selected model", - "configured": "configured", - "none": "None", - "modelOverrideValuePlaceholder": "Numeric value", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", - "addKeyValue": "Add key value", - "noModelOverrides": "No overrides configured for this model.", - "modelOverrideLoadFailed": "Failed to load model overrides", - "modelOverrideSaved": "Model override saved", - "modelOverrideRemoved": "Model override removed", - "modelOverrideSaveFailed": "Failed to save model override", - "modelOverrideRemoveFailed": "Failed to remove model override", + "pricingCoverage": "Cobertura", + "pricingAuth": "Autenticación", + "pricingSort": "Ordenar", + "pricingAll": "Todos", + "pricingAuthUnknown": "Desconocido", + "pricingMostModels": "La mayoría de los modelos", + "pricingHighestCoverage": "Mayor cobertura", + "pricingLowestCoverage": "Menor cobertura", + "pricingNameAscending": "Nombre (A–Z)", + "pricingCoverageGaps": "Brechas de cobertura", + "pricingClearFilters": "Borrar filtros", + "pricingShowingProviders": "Mostrando {visible} de {total}", + "pricingFilteredFrom": "(filtrado de {count})", + "pricingShowMoreProviders": "Mostrar {count} más ({remaining} restantes)", + "modelOverridesTitle": "Anulaciones de modelos", + "modelOverridesDesc": "Anula las capacidades del proveedor/modelo utilizadas por el enrutamiento y la configuración de solicitudes. Los destinos utilizan el mismo formato proveedor/modelo que las combinaciones.", + "searchModelOverrideTargets": "Buscar proveedor/modelo...", + "selectedModel": "Modelo seleccionado", + "configured": "configurado", + "none": "Ninguno", + "modelOverrideValuePlaceholder": "Valor numérico", + "modelOverrideReasoningEffortsPlaceholder": "Valores en inglés separados por comas, p. ej., low, medium, high", + "addKeyValue": "Añadir clave-valor", + "noModelOverrides": "No hay anulaciones configuradas para este modelo.", + "modelOverrideLoadFailed": "No se pudieron cargar las anulaciones de modelos", + "modelOverrideSaved": "Anulación de modelo guardada", + "modelOverrideRemoved": "Anulación de modelo eliminada", + "modelOverrideSaveFailed": "No se pudo guardar la anulación del modelo", + "modelOverrideRemoveFailed": "No se pudo eliminar la anulación del modelo", "registry": "Registro", "priced": "Precio", "searchProvidersModels": "Buscar proveedores o modelos...", @@ -7378,74 +7381,74 @@ "editPricing": "Editar precios", "viewFullDetails": "Ver todos los detalles", "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", - "echoRequestedModelTitle": "Echo requested model name in responses", - "echoRequestedModelDesc": "When enabled, the response `model` field echoes the alias or combo name the client requested instead of the upstream model name. Fixes strict clients (e.g. Claude Desktop) that reject a response whose model does not match the request.", - "webSearchRouteTitle": "Web search routing", - "webSearchRouteDesc": "When a request includes a native web_search tool, route the whole request to this model instead of the default — useful for providers that don't implement Anthropic's web_search server tool. Leave blank to disable.", - "webSearchRoutePlaceholder": "Search or select a model…", - "paidModelPatternWarning": "This pattern only matches paid models — enable paid models or adjust the pattern.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", - "logsDeleted": "{count, plural, =0 {No expired logs purged} one {Purged # expired log} other {Purged # expired logs}}", - "resetUsageData": "Reset Usage Data", - "resetUsageDataDesc": "Select how far back you want to delete usage, request logs, and analytics data. Provider configuration, connections, API keys, combos, and settings are preserved. This action cannot be undone.", - "resetUsagePeriod_5m": "5 minutes", - "resetUsagePeriod_1h": "1 hour", - "resetUsagePeriod_3h": "3 hours", - "resetUsagePeriod_6h": "6 hours", - "resetUsagePeriod_12h": "12 hours", - "resetUsagePeriod_1d": "1 day", - "resetUsagePeriod_7d": "7 days", - "resetUsagePeriod_30d": "30 days", - "resetUsagePeriod_all": "All time", - "resetUsageSuccess": "{count, plural, =0 {No usage data rows deleted} one {Reset usage data (# row deleted)} other {Reset usage data (# rows deleted)}}", - "resetUsageFailed": "Failed to reset usage data", - "reset": "Reset", - "resetting": "Resetting...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "adaptiveVolumeRouting": "Enrutamiento adaptativo por volumen", + "adaptiveVolumeRoutingDesc": "Escala las conexiones dinámicamente según el volumen de la carga útil y la presión del rendimiento.", + "lkgpToggleTitle": "Último proveedor válido conocido (LKGP)", + "lkgpToggleDesc": "Cuando está habilitado, el enrutador recuerda qué proveedor entregó la última respuesta correcta y lo prueba primero en solicitudes posteriores.", + "echoRequestedModelTitle": "Repetir el nombre del modelo solicitado en las respuestas", + "echoRequestedModelDesc": "Cuando está habilitado, el campo `model` de la respuesta repite el alias o el nombre de la combinación que solicitó el cliente en lugar del nombre del modelo ascendente. Corrige los clientes estrictos (p. ej., Claude Desktop) que rechazan una respuesta cuyo modelo no coincide con la solicitud.", + "webSearchRouteTitle": "Enrutamiento de búsqueda web", + "webSearchRouteDesc": "Cuando una solicitud incluya una herramienta nativa web_search, enruta toda la solicitud a este modelo en lugar de al predeterminado; resulta útil para los proveedores que no implementan la herramienta de servidor web_search de Anthropic. Déjalo en blanco para desactivarlo.", + "webSearchRoutePlaceholder": "Busca o selecciona un modelo…", + "paidModelPatternWarning": "Este patrón solo coincide con modelos de pago; habilita los modelos de pago o ajusta el patrón.", + "clearLkgpCache": "Borrar caché de LKGP", + "lkgpCacheCleared": "La caché de LKGP se borró correctamente", + "lkgpCacheClearFailed": "No se pudo borrar la caché de LKGP", + "days": "Días", + "lkgp": "Modo LKGP", + "lkgpDesc": "Último proveedor conocido en buen estado (resiliencia predecible)", + "maintenance": "Mantenimiento", + "purgeExpiredLogs": "Purgar registros caducados", + "purgeLogsFailed": "No se pudieron purgar los registros", + "logsDeleted": "{count, plural, =0 {No se purgó ningún registro caducado} one {Se purgó # registro caducado} other {Se purgaron # registros caducados}}", + "resetUsageData": "Restablecer datos de uso", + "resetUsageDataDesc": "Selecciona hasta qué momento quieres eliminar los datos de uso, los registros de solicitudes y los datos de análisis. Se conservarán la configuración de proveedores, las conexiones, las claves de API, las combinaciones y los ajustes. Esta acción no se puede deshacer.", + "resetUsagePeriod_5m": "5 minutos", + "resetUsagePeriod_1h": "1 hora", + "resetUsagePeriod_3h": "3 horas", + "resetUsagePeriod_6h": "6 horas", + "resetUsagePeriod_12h": "12 horas", + "resetUsagePeriod_1d": "1 día", + "resetUsagePeriod_7d": "7 días", + "resetUsagePeriod_30d": "30 días", + "resetUsagePeriod_all": "Desde siempre", + "resetUsageSuccess": "{count, plural, =0 {No se eliminó ninguna fila de datos de uso} one {Datos de uso restablecidos (# fila eliminada)} other {Datos de uso restablecidos (# filas eliminadas)}}", + "resetUsageFailed": "No se pudieron restablecer los datos de uso", + "reset": "Restablecer", + "resetting": "Restableciendo...", + "contextOpt": "Optimizado para el contexto", + "contextOptDesc": "Enruta en función de los requisitos de la ventana de contexto y la longitud de la conversación", + "cacheOpt": "Optimizado para la caché", + "cacheOptDesc": "Mantiene el mismo prefijo de mensaje reutilizable en la misma cuenta del proveedor", + "priorityDesc": "Alternativa secuencial: primero prueba el proveedor 1, después el proveedor 2 y así sucesivamente", + "weightedDesc": "Distribuye el tráfico entre los proveedores según ponderaciones porcentuales", + "modelRoutingTitle": "Reglas de enrutamiento de modelos", + "modelRoutingDesc": "Enruta automáticamente los modelos a combinaciones específicas mediante patrones glob", + "addRule": "Añadir regla", + "routeToCombo": "Enrutar a la combinación", + "selectCombo": "Selecciona una combinación...", + "priorityHint": "Un valor más alto se comprueba primero. Usa 10 o más para patrones específicos.", + "patternHint": "Usa * para cualquier número de caracteres y ? para un solo carácter. No distingue entre mayúsculas y minúsculas.", + "noRoutingRules": "No hay reglas de enrutamiento configuradas. Las solicitudes usan la combinación global de forma predeterminada.", + "routingRuleHint": "Añade una regla como claude-opus* -> frontier-combo para enrutar automáticamente las solicitudes.", + "deleteRoutingRule": "¿Eliminar esta regla de enrutamiento de modelos?", + "exactMatchMode": "Coincidencia exacta", + "wildcardPatternMode": "Patrón con comodines", + "exactMatchModeDesc": "Usa alias exactos para los ID de modelos obsoletos o renombrados.", + "wildcardPatternModeDesc": "Usa alias con los comodines * y ? cuando una familia de modelos deba asignarse a un único destino.", + "noExactAliasesConfigured": "No hay alias de coincidencia exacta configurados.", + "wildcardRulesTitle": "Reglas con comodines", + "noWildcardAliasesConfigured": "No hay alias con comodines configurados.", + "overview": "Resumen", + "unknownError": "Error desconocido", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Lista blanca", + "syncDisabled": "Sincronización desactivada", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,47 +7456,47 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Sincronización activada", + "blacklist": "Lista negra", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Modelos sincronizados", + "budget": "Presupuesto", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "No se pudo restablecer el precio: {reason}", - "tab": "Tab", + "tab": "Pestaña", "pricingSavedProvider": "Precios guardados para {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "No se pudo guardar el precio: {reason}", "pricingResetProvider": "Restablecimiento de precios para {provider}", - "nextSync": "Next Sync", + "nextSync": "Próxima sincronización", "pricingSyncFailedWithReason": "Falló la sincronización de precios: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", - "compressionGuidanceFullGuideLink": "Full compression guide", - "compressionGuidanceShow": "Details", - "compressionGuidanceHide": "Hide details", - "compressionGuidanceSafeDefault": "Safe default", - "compressionGuidanceCacheImpact": "Cache impact", - "tokenSaverTitle": "Token Saver", - "tokenSaverSubtitle": "Spend fewer tokens on every request.", - "tokenSaverToolOutput": "Tool output", - "tokenSaverToolOutputDesc": "Clean git, grep, ls, tree, and log output before it reaches the provider.", - "tokenSaverLlmOutput": "LLM output", - "tokenSaverLlmOutputDesc": "Inject terse response instructions without rewriting provider output.", - "tokenSaverInputCompression": "Input compression", - "tokenSaverInputCompressionDesc": "Rewrite eligible chat history while preserving code, URLs, and intent.", - "tokenSaverFineTunePrefix": "Fine-tune each engine on", - "tokenSaverFineTuneSuffix": "or combine engines per request on", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "clearSyncedPricing": "Borrar precios sincronizados", + "compressionTitle": "Compresión de prompts", + "compressionDesc": "Reduce el uso de tokens comprimiendo los prompts antes de enviarlos a los proveedores", + "compressionGuidanceFullGuideLink": "Guía completa de compresión", + "compressionGuidanceShow": "Detalles", + "compressionGuidanceHide": "Ocultar detalles", + "compressionGuidanceSafeDefault": "Valor predeterminado seguro", + "compressionGuidanceCacheImpact": "Impacto en la caché", + "tokenSaverTitle": "Ahorro de tokens", + "tokenSaverSubtitle": "Gasta menos tokens en cada solicitud.", + "tokenSaverToolOutput": "Salida de herramientas", + "tokenSaverToolOutputDesc": "Limpia la salida de git, grep, ls, tree y log antes de que llegue al proveedor.", + "tokenSaverLlmOutput": "Salida del LLM", + "tokenSaverLlmOutputDesc": "Inyecta instrucciones para obtener respuestas concisas sin reescribir la salida del proveedor.", + "tokenSaverInputCompression": "Compresión de entrada", + "tokenSaverInputCompressionDesc": "Reescribe el historial de chat que cumpla los requisitos, conservando el código, las URL y la intención.", + "tokenSaverFineTunePrefix": "Ajusta cada motor en", + "tokenSaverFineTuneSuffix": "o combina motores por solicitud en", + "compressionMode": "Modo de compresión", + "compressionModeOff": "Desactivado", + "compressionModeOffDesc": "No se aplica compresión", + "compressionModeLite": "Ligero", + "compressionModeLiteDesc": "Reducción de espacios en blanco y líneas vacías", + "compressionModeStandard": "Estándar (Caveman)", + "compressionModeStandardDesc": "Compresión basada en reglas con más de 30 patrones; conserva los bloques de código y las URL", + "compressionModeAggressive": "Agresivo", + "compressionModeAggressiveDesc": "Resumen + compresión de resultados de herramientas + envejecimiento progresivo para maximizar el ahorro", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Configuración agresiva del motor", @@ -7504,11 +7507,11 @@ "compressionUltraMinScore": "Umbral de puntuación mínima", "compressionUltraSlmFallback": "Regreso a lo agresivo", "compressionUltraModelPath": "Ruta del modelo SLM", - "compressionUltraEngine": "Ultra tier", - "compressionUltraEngineHeuristic": "Heuristic (Tier-A, default)", - "compressionUltraEngineSlm": "SLM (LLMLingua-2, opt-in)", - "compressionUltraSlmHint": "SLM downloads a small ONNX model on first use (cold-start) and transparently falls back to the heuristic on timeout or if unavailable.", - "compressionUltraSlmPrewarm": "Pre-warm SLM model on enable", + "compressionUltraEngine": "Nivel Ultra", + "compressionUltraEngineHeuristic": "Heurístico (Tier-A, predeterminado)", + "compressionUltraEngineSlm": "SLM (LLMLingua-2, opcional)", + "compressionUltraSlmHint": "SLM descarga un pequeño modelo ONNX la primera vez que se usa (arranque en frío) y recurre de forma transparente al método heurístico si se agota el tiempo de espera o no está disponible.", + "compressionUltraSlmPrewarm": "Precargar el modelo SLM al habilitarlo", "compressionSummarizerEnabled": "Habilitar resumen", "compressionMaxTokensPerMessage": "Tokens máximos por mensaje", "compressionMinSavings": "Umbral mínimo de ahorro", @@ -7516,80 +7519,80 @@ "compressionAgingThresholdsDesc": "Número de mensajes recientes mantenidos en cada nivel de antigüedad (mayor = más conservados)", "compressionToolStrategies": "Estrategias de resultados de herramientas", "compressionToolStrategiesDesc": "Alternar estrategias de compresión para diferentes tipos de resultados de herramientas", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", - "compressionPreserveSystemAlways": "Always", - "compressionPreserveSystemWhenNoCache": "When no cache", - "compressionPreserveSystemNever": "Never", - "compressionLiveZoneTitle": "Cache-aligned Live Zone", - "compressionLiveZoneDesc": "Keep the compressed conversation prefix stable and process only newly appended items.", - "compressionExclusionsTitle": "Compression Exclusions", - "compressionExclusionsDesc": "Model ids or provider/model patterns that must never be compressed. `*` is the only wildcard (e.g. `openai/*`, `*embedding*`). A matching request passes through byte-identical — no compression engine runs.", - "compressionExclusionsPlaceholder": "One pattern per line, e.g.\nopenai/text-embedding-3-large\nanthropic/*", - "compressionExclusionsSave": "Save", - "compressionExclusionsSaved": "Saved", - "compressionExclusionsCount": "{count, plural, one {# exclusion} other {# exclusions}} configured", - "compressionExclusionsEmpty": "No exclusions configured — every model/endpoint is eligible for compression (default behavior).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", - "compressionCavemanPanelHint": "Its on/off and level are set in the panel:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionGeneral": "Configuración general", + "compressionAutoTrigger": "Umbral de activación automática", + "compressionCacheTTL": "TTL de la caché", + "compressionPreserveSystem": "Conservar el prompt del sistema", + "compressionPreserveSystemAlways": "Siempre", + "compressionPreserveSystemWhenNoCache": "Cuando no haya caché", + "compressionPreserveSystemNever": "Nunca", + "compressionLiveZoneTitle": "Zona activa alineada con la caché", + "compressionLiveZoneDesc": "Mantiene estable el prefijo comprimido de la conversación y procesa solo los elementos añadidos recientemente.", + "compressionExclusionsTitle": "Exclusiones de compresión", + "compressionExclusionsDesc": "IDs de modelos o patrones provider/model que nunca deben comprimirse. `*` es el único comodín (p. ej., `openai/*`, `*embedding*`). Las solicitudes coincidentes pasan sin ninguna alteración a nivel de bytes; no se ejecuta ningún motor de compresión.", + "compressionExclusionsPlaceholder": "Un patrón por línea, p. ej.\nopenai/text-embedding-3-large\nanthropic/*", + "compressionExclusionsSave": "Guardar", + "compressionExclusionsSaved": "Guardado", + "compressionExclusionsCount": "{count, plural, one {# exclusión configurada} other {# exclusiones configuradas}}", + "compressionExclusionsEmpty": "No hay exclusiones configuradas: todos los modelos/endpoints pueden comprimirse (comportamiento predeterminado).", + "compressionCavemanConfig": "Configuración del motor Caveman", + "compressionCavemanConfigDesc": "Ajusta con precisión el motor de compresión basado en reglas", + "compressionCavemanPanelHint": "Su activación y nivel se configuran en el panel:", + "compressionRoles": "Comprimir roles de mensajes", + "compressionRoleUser": "Usuario", + "compressionRoleAssistant": "Asistente", + "compressionRoleSystem": "Sistema", + "compressionMinLength": "Longitud mínima del mensaje", + "compressionSkipRules": "Omitir reglas de compresión", + "compressionSkipRulesDesc": "Haz clic en las reglas para omitirlas durante la compresión", + "compressionPreservePatterns": "Conservar patrones", + "compressionPreservePatternsDesc": "Patrones regex que nunca se comprimen (uno por línea)", + "compressionLogTitle": "Registro de compresión", + "compressionLogEmpty": "Aún no hay solicitudes comprimidas. Las estadísticas de compresión aparecerán aquí cuando se procesen solicitudes con la compresión habilitada.", "minutes": "minutos", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", + "compressionModeRtkDesc": "Filtrado de la salida de herramientas según el comando", "compressionModeCodexResponses": "Respuestas Codex", "compressionModeCodexResponsesDesc": "Comprime transcripciones de salidas de herramientas según el formato de Respuestas Codex.", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", + "compressionModeStacked": "Apilado", + "compressionModeStackedDesc": "Filtrado de la salida de herramientas mediante RTK seguido de la compresión de mensajes de Caveman", + "qdrantTitle": "Qdrant (memoria vectorial)", + "qdrantDesc": "Opcional. Indexa memorias semánticas en una base de datos vectorial externa para recuperarlas más rápidamente.", + "qdrantStatusActive": "Activo", "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantStatusDisabled": "Deshabilitado", + "qdrantEnable": "Habilitar Qdrant", + "qdrantEnableDesc": "Cuando está habilitado, la estrategia semántica/híbrida puede usar Qdrant para recuperar memorias.", + "qdrantTesting": "Probando...", + "qdrantTestConnection": "Probar conexión", + "qdrantSaved": "Configuración guardada", + "qdrantSaveError": "No se pudo guardar la configuración", + "qdrantHostHint": "Sin puerto. Ejemplo: 127.0.0.1 o http://qdrant", + "qdrantPort": "Puerto", + "qdrantPortHint": "Valor predeterminado de Qdrant: 6333", + "qdrantCollectionHint": "Dónde se almacenarán los puntos de memoria.", + "qdrantEmbeddingModel": "Modelo de embeddings", + "qdrantHelpTitle": "Ayuda para la configuración rápida", + "qdrantHelpQuickTitle": "Configuración rápida (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Host: IP/URL de Qdrant, puerto: 6333, colección: omniroute_memory.", + "qdrantHelpStep2": "2. Si usas nvidia/llama-nemotron-embed-vl-1b-v2:free, utiliza una dimensión de colección de 2048.", + "qdrantHelpStep3": "3. Campo del modelo: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Guarda, prueba la conexión y luego prueba la búsqueda.", + "qdrantEmbeddingQuickSelect": "Selección rápida entre los modelos detectados...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Formato: provider/model. La credencial del proveedor debe estar configurada.", + "qdrantApiKeyPlaceholderKeep": "(déjalo vacío para conservar la clave actual)", + "qdrantApiKeyPlaceholderOptional": "(déjalo vacío si no se utiliza)", + "qdrantSaveHint": "Consejo: edita el host, el puerto, la colección y el modelo, y haz clic en Guardar. La clave de API es opcional.", + "qdrantSearchTestTitle": "Prueba de búsqueda", + "qdrantSearchTestDesc": "Genera un embedding y realiza una búsqueda en Qdrant.", + "qdrantSearchPlaceholder": "Ejemplo: preferencias del usuario, historial, etc.", + "qdrantNoResults": "Sin resultados (o Qdrant no está configurado).", + "qdrantCleanupTitle": "Retención y limpieza", + "qdrantCleanupDesc": "Elimina los puntos caducados y antiguos en función de", + "searching": "Buscando...", + "cleaning": "Limpiando...", + "cleanNow": "Limpiar ahora", "optional": "Opcional", "current": "Actual", "remove": "Quitar", @@ -7600,19 +7603,19 @@ "resilienceScope": "Alcance:", "resilienceTrigger": "Desencadenante:", "resilienceEffect": "Efecto:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Cola y frecuencia de solicitudes", + "resilienceAutoEnableApiKeyProviders": "Activar automáticamente para proveedores con clave de API", + "resilienceRequestsPerMinute": "Solicitudes por minuto", + "resilienceMinTimeBetweenRequests": "Tiempo mínimo entre solicitudes", + "resilienceConcurrentRequests": "Solicitudes simultáneas", + "resilienceConnectionScopeConcurrentRequests": "Solicitudes simultáneas por conexión/ámbito de cuota", + "resilienceGlobalConcurrentRequests": "Solicitudes ascendentes simultáneas globales (0 = desactivado)", "resilienceMaxQueueWaitTime": "Tiempo máximo de espera en cola", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Tiempo de espera base", + "resilienceUseUpstreamRetryHints": "Usar indicaciones de reintento del proveedor ascendente", + "resilienceDefaultPerProvider": "Predeterminado (por proveedor)", + "resilienceAlwaysOn": "Siempre activado", + "resilienceAlwaysOff": "Siempre desactivado", "routingRemoveEntry": "Eliminar entrada", "routingNeedlesSubstrings": "Agujas (subcadenas para combinar)", "routingCaseSensitive": "Distingue entre mayúsculas y minúsculas", @@ -7666,130 +7669,134 @@ "oneproxySuccess": "Éxito", "oneproxyFailed": "Fallido", "routingAntigravitySignatureTitle": "Modo de caché de firma antigravedad", - "routingAntigravitySignatureDesc": "Control whether OmniRoute reuses only stored Gemini thought signatures or accepts validated client-provided signatures in Antigravity-compatible tool-call flows.", - "routingAntigravitySignatureEnabledLabel": "Enabled", - "routingAntigravitySignatureEnabledDesc": "Current behavior. Ignore client-provided signatures and keep using the stored OmniRoute flow.", - "routingAntigravitySignatureBypassLabel": "Bypass", - "routingAntigravitySignatureBypassDesc": "Accept client-provided signatures after lightweight validation and fall back to the stored signature when invalid.", - "routingAntigravitySignatureBypassStrictLabel": "Bypass Strict", - "routingAntigravitySignatureBypassStrictDesc": "Require full protobuf validation before accepting a client-provided signature.", + "routingAntigravitySignatureDesc": "Controla si OmniRoute reutiliza únicamente las firmas de razonamiento de Gemini almacenadas o si acepta firmas proporcionadas por el cliente y validadas en flujos de llamadas a herramientas compatibles con Antigravity.", + "routingAntigravitySignatureEnabledLabel": "Activado", + "routingAntigravitySignatureEnabledDesc": "Comportamiento actual. Ignora las firmas proporcionadas por el cliente y sigue utilizando el flujo almacenado de OmniRoute.", + "routingAntigravitySignatureBypassLabel": "Omitir", + "routingAntigravitySignatureBypassDesc": "Acepta las firmas proporcionadas por el cliente tras una validación ligera y recurre a la firma almacenada cuando no sean válidas.", + "routingAntigravitySignatureBypassStrictLabel": "Omisión estricta", + "routingAntigravitySignatureBypassStrictDesc": "Exige una validación protobuf completa antes de aceptar una firma proporcionada por el cliente.", "routingHeaderFingerprintTitle": "Huella digital del encabezado (por proveedor)", "routingServerRejectedSave": "⚠ El servidor rechazó guardar:", "routingAddTransformOp": "Agregar una operación de transformación", "routingClientCacheControlTitle": "Control de caché del cliente", - "routingClientCacheControlDesc": "Configure whether OmniRoute preserves client-provided cache_control markers", - "routingClientCacheControlAutoDesc": "For deterministic Claude-compatible flows, preserve client-provided cache_control as-is. If the request has no cache_control, OmniRoute does not inject any bridge-owned markers for CC-compatible third-party proxy compatibility.", - "routingClientCacheControlAlwaysLabel": "Always Preserve", - "routingClientCacheControlAlwaysDesc": "Always forward client-provided cache_control headers to upstream providers as-is.", - "routingClientCacheControlNeverLabel": "Never Preserve", - "routingClientCacheControlNeverDesc": "Always remove client cache_control headers and let OmniRoute manage caching where native provider flows support it.", + "routingClientCacheControlDesc": "Configura si OmniRoute conserva los marcadores cache_control proporcionados por el cliente", + "routingClientCacheControlAutoDesc": "Para flujos deterministas compatibles con Claude, conserva los marcadores cache_control proporcionados por el cliente tal cual. Si la solicitud no contiene cache_control, OmniRoute no inserta ningún marcador propio del puente, a fin de mantener la compatibilidad con proxies de terceros compatibles con CC.", + "routingClientCacheControlAlwaysLabel": "Conservar siempre", + "routingClientCacheControlAlwaysDesc": "Reenvía siempre a los proveedores ascendentes los encabezados cache_control proporcionados por el cliente tal cual.", + "routingClientCacheControlNeverLabel": "No conservar nunca", + "routingClientCacheControlNeverDesc": "Elimina siempre los encabezados cache_control del cliente y permite que OmniRoute gestione el almacenamiento en caché cuando los flujos nativos del proveedor lo admitan.", "routingZeroConfigTitle": "Enrutamiento automático sin configuración", - "routingZeroConfigDesc": "Enable automatic provider selection using the auto/ prefix. When enabled, requests to auto, auto/coding, auto/fast, etc. will dynamically route across all connected providers.", + "routingZeroConfigDesc": "Activa la selección automática de proveedores mediante el prefijo auto/. Cuando está activada, las solicitudes a auto, auto/coding, auto/fast, etc. se enrutarán dinámicamente entre todos los proveedores conectados.", "routingDefaultAutoVariant": "Variante automática predeterminada", "visionBridge": "Puente de visión", - "visionBridgeDesc": "Run an automatic vision-to-text fallback before routing image requests to text-only models.", - "visionBridgeEnabledLabel": "Enabled", - "visionBridgeEnabledDesc": "Toggle the pre-call bridge that replaces image parts with extracted text.", + "visionBridgeDesc": "Ejecuta una conversión automática de visión a texto como alternativa antes de enrutar las solicitudes con imágenes a modelos que solo admiten texto.", + "visionBridgeEnabledLabel": "Activado", + "visionBridgeEnabledDesc": "Activa o desactiva el puente previo a la llamada que sustituye las partes de imagen por el texto extraído.", "visionBridgeRerouteTextOnlyLabel": "Reenviar modelos solo de texto", "visionBridgeRerouteTextOnlyDesc": "Envía la solicitud completa, incluidas las imágenes, al modelo puente cuando el modelo seleccionado no tenga entrada de imagen.", "visionBridgeModel": "Modelo de puente", "visionBridgeModelPlaceholder": "openai/gpt-4o-mini", - "visionBridgeModelHint": "Any OmniRoute model ID that supports vision can be used here.", + "visionBridgeModelHint": "Aquí se puede utilizar cualquier ID de modelo de OmniRoute compatible con visión.", "visionBridgePrompt": "Aviso de puente", "visionBridgePromptPlaceholder": "Describe esta imagen de manera concisa.", - "visionBridgePromptHint": "Sent to the vision model before the extracted description is injected back into the original request.", + "visionBridgePromptHint": "Se envía al modelo de visión antes de que la descripción extraída se vuelva a insertar en la solicitud original.", "visionBridgeTimeoutMs": "Tiempo de espera (ms)", "visionBridgeMaxImagesPerRequest": "Máximo de imágenes por solicitud", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Número máximo de pasos de espera exponencial", + "resilienceProviderBreakerTitle": "Disyuntor por proveedor", + "resilienceFailureThreshold": "Umbral de fallos", + "resilienceDegradationThreshold": "Umbral de degradación", "resilienceResetTimeout": "Restablecer el tiempo de espera", "resilienceFailureThresholdLabel": "Umbral de falla", "resilienceResetTimeoutLabel": "Restablecer el tiempo de espera", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Tiempo de espera de conexión", "resilienceUseUpstreamRetryHintsLabel": "Utilice sugerencias de reintento ascendentes", "resilienceUseUpstream429BreakerLabel": "Utilice sugerencias 429 ascendentes (interruptor)", "resilienceMaxBackoffStepsLabel": "Pasos máximos de retroceso", "resilienceYes": "si", "resilienceNo": "No", - "resilienceDefault": "Default", + "resilienceDefault": "Predeterminado", "storageDatabaseBackupRetention": "Retención de copias de seguridad", - "storageDatabaseBackups": "Database backups", - "storageBackupRetentionDescription": "Automatic SQLite backups are stored in", - "storageBackupRetentionHelp": "Configure how many snapshots to keep and optionally delete backups older than a chosen number of days.", - "storageBackupCount": "{count} backups", - "storageBackupMaximum": "Max {count}", - "storageBackupAgeRetention": "{count}d retention", - "storageBackupAgeRetentionOff": "Age retention off", - "storageBackupKeepLatest": "Keep latest backups", - "storageBackupDeleteOlderThan": "Delete older than days", - "storageBackupSaveRetention": "Save retention", - "storageBackupCleanOld": "Clean old backups", - "storageDatabaseStatistics": "Database Statistics", - "storageIntegrityNotChecked": "Not checked", - "backupRetentionSaved": "Backup retention saved.", - "backupRetentionSaveFailed": "Failed to save backup retention", - "backupCleanupSuccess": "Deleted {backups} backup set(s) and {files} file(s).", - "backupCleanupFailed": "Failed to clean database backups", - "purgeQuotaSnapshotsSuccess": "Purged {count} quota snapshots", - "purgeQuotaSnapshotsFailed": "Failed to purge quota snapshots", - "purgeCallLogsSuccess": "Purged {count} call logs", - "purgeCallLogsFailed": "Failed to purge call logs", - "purgeDetailedLogsSuccess": "Purged {count} detailed logs", - "purgeDetailedLogsFailed": "Failed to purge detailed logs", - "vacuumCompleted": "VACUUM completed", - "vacuumFailed": "VACUUM failed", - "jsonExportFailed": "JSON export failed", - "invalidJsonFileType": "Invalid file type. Only .json files are allowed.", - "legacyJsonImportSuccess": "Legacy JSON imported successfully!", - "jsonImportFailed": "Failed to import JSON", - "jsonImportError": "Error during JSON import", + "storageDatabaseBackups": "Copias de seguridad de la base de datos", + "storageBackupRetentionDescription": "Las copias de seguridad automáticas de SQLite se almacenan en", + "storageBackupRetentionHelp": "Configura cuántas instantáneas conservar y, opcionalmente, elimina las copias de seguridad anteriores al número de días seleccionado.", + "storageBackupCount": "{count} copias de seguridad", + "storageBackupMaximum": "Máx. {count}", + "storageBackupAgeRetention": "Retención de {count} d", + "storageBackupAgeRetentionOff": "Retención por antigüedad desactivada", + "storageBackupKeepLatest": "Conservar las copias de seguridad más recientes", + "storageBackupDeleteOlderThan": "Eliminar las anteriores a este número de días", + "storageBackupSaveRetention": "Guardar retención", + "storageBackupCleanOld": "Eliminar copias de seguridad antiguas", + "storageDatabaseStatistics": "Estadísticas de la base de datos", + "storageIntegrityNotChecked": "No comprobado", + "backupRetentionSaved": "Retención de copias de seguridad guardada.", + "backupRetentionSaveFailed": "No se pudo guardar la retención de copias de seguridad", + "backupCleanupSuccess": "Se eliminaron {backups} conjunto(s) de copias de seguridad y {files} archivo(s).", + "backupCleanupFailed": "No se pudieron eliminar las copias de seguridad de la base de datos", + "purgeQuotaSnapshotsSuccess": "Se eliminaron {count} instantáneas de cuota", + "purgeQuotaSnapshotsFailed": "No se pudieron eliminar las instantáneas de cuota", + "purgeCallLogsSuccess": "Se eliminaron {count} registros de llamadas", + "purgeCallLogsFailed": "No se pudieron eliminar los registros de llamadas", + "purgeDetailedLogsSuccess": "Se eliminaron {count} registros detallados", + "purgeDetailedLogsFailed": "No se pudieron eliminar los registros detallados", + "vacuumCompleted": "VACUUM completado", + "vacuumFailed": "VACUUM falló", + "jsonExportFailed": "La exportación de JSON falló", + "invalidJsonFileType": "Tipo de archivo no válido. Solo se permiten archivos .json.", + "legacyJsonImportSuccess": "¡El JSON heredado se importó correctamente!", + "jsonImportFailed": "No se pudo importar el JSON", + "jsonImportError": "Error durante la importación del JSON", + "jsonImportAuthRequired": "Se requiere autenticación para importar una configuración JSON heredada. Inicia sesión o completa primero la configuración.", + "databaseSettingsAuthRequiredTitle": "Autenticación requerida", + "databaseSettingsAuthRequiredBody": "La configuración de la base de datos y la importación de JSON solo están disponibles para un administrador autenticado. Inicia sesión o completa la configuración para verlas y editarlas.", + "databaseSettingsAuthRequiredCta": "Iniciar sesión", "storagePurgeData": "Purgar datos", - "storagePurgeDataDesc": "Immediately delete all records without applying retention checks. Use with caution.", - "storageRetentionCleanup": "Retention Settings", - "storageRetentionCleanupDesc": "Configure operational record retention and database backup cleanup.", - "retentionCallDays": "Call {count}d", - "retentionAppDays": "App {count}d", - "retentionRows": "{count} rows", + "storagePurgeDataDesc": "Elimina inmediatamente todos los registros sin aplicar comprobaciones de retención. Úselo con precaución.", + "storageRetentionCleanup": "Configuración de retención", + "storageRetentionCleanupDesc": "Configure la retención de registros operativos y la limpieza de copias de seguridad de la base de datos.", + "retentionCallDays": "Llamadas: {count} d", + "retentionAppDays": "Aplicación: {count} d", + "retentionRows": "{count} filas", "retentionQuotaSnapshots": "Instantáneas de cuota (días)", - "retentionCompressionAnalytics": "Compression Analytics (days)", + "retentionCompressionAnalytics": "Análisis de compresión (días)", "retentionMcpAudit": "Auditoría MCP (días)", "retentionA2aEvents": "Eventos A2A (días)", "retentionCallLogs": "Registros de llamadas (días)", "retentionUsageHistory": "Historial de uso (días)", "retentionMemoryEntries": "Entradas de memoria (días)", - "retentionXpAuditLog": "XP Audit Log (days)", - "saveRetentionSettings": "Save retention settings", + "retentionXpAuditLog": "Registro de auditoría de XP (días)", + "saveRetentionSettings": "Guardar la configuración de retención", "storageAutoVacuumMode": "Modo de vacío automático", "storageScheduledVacuum": "Vacío programado", "storageVacuumHour": "Hora de vacío (0-23)", "storagePageSize": "Tamaño de página (bytes)", - "storageOptimizationSettings": "Optimization Settings", - "storageJournalModeNone": "None", - "storageJournalModeFull": "Full", + "storageOptimizationSettings": "Configuración de optimización", + "storageJournalModeNone": "Ninguna", + "storageJournalModeFull": "Completa", "storageJournalModeIncremental": "Incremental", - "storageVacuumNever": "Never", - "storageVacuumDaily": "Daily", - "storageVacuumWeekly": "Weekly", - "storageVacuumMonthly": "Monthly", - "storageCacheSizeKb": "Cache Size (KB)", - "storageOptimizeOnStartup": "Optimize on Startup", - "storageSaveOptimization": "Save Optimization Settings", - "storageCompressionAggregation": "Compression & Aggregation Settings", - "storageEnableAggregation": "Enable Data Aggregation", - "storageRawDataRetention": "Raw Data Retention (days)", - "storageGranularity": "Granularity", - "storageHourly": "Hourly", - "storageDaily": "Daily", - "storageWeekly": "Weekly", - "storageSaveAggregation": "Save Aggregation Settings", - "exportJson": "Export JSON", - "importJson": "Import JSON", - "manualVacuum": "Manual VACUUM", - "purgeQuotaSnapshots": "Purge Quota Snapshots", - "purgeCallLogs": "Purge Call Logs", - "purgeDetailedLogs": "Purge Detailed Logs", + "storageVacuumNever": "Nunca", + "storageVacuumDaily": "Diariamente", + "storageVacuumWeekly": "Semanalmente", + "storageVacuumMonthly": "Mensualmente", + "storageCacheSizeKb": "Tamaño de la caché (KB)", + "storageOptimizeOnStartup": "Optimizar al iniciar", + "storageSaveOptimization": "Guardar la configuración de optimización", + "storageCompressionAggregation": "Configuración de compresión y agregación", + "storageEnableAggregation": "Habilitar la agregación de datos", + "storageRawDataRetention": "Retención de datos sin procesar (días)", + "storageGranularity": "Granularidad", + "storageHourly": "Por hora", + "storageDaily": "Diaria", + "storageWeekly": "Semanal", + "storageSaveAggregation": "Guardar la configuración de agregación", + "exportJson": "Exportar JSON", + "importJson": "Importar JSON", + "manualVacuum": "VACUUM manual", + "purgeQuotaSnapshots": "Purgar instantáneas de cuota", + "purgeCallLogs": "Purgar registros de llamadas", + "purgeDetailedLogs": "Purgar registros detallados", "storageDatabaseSize": "Tamaño de la base de datos", "storagePageCount": "Conteo de páginas", "storageFreelistCount": "Recuento de listas libres", @@ -7799,125 +7806,125 @@ "storageIntegrityOk": "✓ Aceptar", "storageIntegrityError": "✗Error", "storageUsageTokenBuffer": "Búfer de token de uso", - "storageUsageTokenBufferDesc": "Extra tokens added to reported usage to account for system prompt overhead.", - "storageUsageTokenBufferHint": "Set to 0 to report raw provider token counts. Default: 2000.", - "storageUsageTokenBufferCurrent": "Current: {value}", - "redisLauncherTitle": "Local Redis", - "redisLauncherDesc": "One-click launch a Redis 7 container (Podman or Docker) for response cache, quota tracking, and rate limiting.", - "redisLauncherRefresh": "Refresh", - "redisLauncherStop": "Stop", - "redisLauncherLaunching": "Launching...", - "redisLauncherLaunch": "Launch Redis", - "redisLauncherContainer": "Container", - "redisLauncherRunning": "Running", - "redisLauncherReachable": "Reachable", + "storageUsageTokenBufferDesc": "Tokens adicionales que se suman al uso notificado para tener en cuenta la sobrecarga del mensaje del sistema.", + "storageUsageTokenBufferHint": "Establézcalo en 0 para notificar los recuentos de tokens sin procesar del proveedor. Valor predeterminado: 2000.", + "storageUsageTokenBufferCurrent": "Actual: {value}", + "redisLauncherTitle": "Redis local", + "redisLauncherDesc": "Inicie con un solo clic un contenedor de Redis 7 (Podman o Docker) para la caché de respuestas, el seguimiento de cuotas y la limitación de frecuencia.", + "redisLauncherRefresh": "Actualizar", + "redisLauncherStop": "Detener", + "redisLauncherLaunching": "Iniciando...", + "redisLauncherLaunch": "Iniciar Redis", + "redisLauncherContainer": "Contenedor", + "redisLauncherRunning": "En ejecución", + "redisLauncherReachable": "Accesible", "redisLauncherError": "Error: {message}", - "redisLauncherHint": "Equivalent to running `omniroute redis up`. The container is named `omniroute-redis` and listens on 127.0.0.1:6379.", + "redisLauncherHint": "Equivale a ejecutar `omniroute redis up`. El contenedor se llama `omniroute-redis` y escucha en 127.0.0.1:6379.", "compressionSettingsAutoTriggerMode": "Modo de disparo automático", "compressionSettingsMcpDescriptionCompression": "Compresión de descripción MCP", - "mcpAccessibilityTitle": "MCP accessibility output", + "mcpAccessibilityTitle": "Salida de accesibilidad de MCP", "compressionSettingsCavemanIntensity": "Intensidad cavernícola", "compressionSettingsCavemanOutputMode": "Modo de salida cavernícola", - "compressionSettingsOutputStyles": "Output styles", - "compressionStylesTileTitle": "Output styles", + "compressionSettingsOutputStyles": "Estilos de salida", + "compressionStylesTileTitle": "Estilos de salida", "compressionSettingsOutputIntensity": "Intensidad de salida", "compressionSettingsAutoClarityBypass": "Bypass de claridad automática", - "compressionEffectivePipeline": "Effective pipeline:", - "compressionDerivedOff": "off", - "compressionDerivedRuns": "runs: {pipeline}", - "compressionDerivedMode": "mode: {mode}", - "compressionAdaptiveOff": "Adaptive context budget: off (legacy auto-trigger)", - "compressionAdaptiveTarget": "Adaptive ({mode}, policy: {policy}) — target ≈ {target, number} tokens (for a {contextLimit, number}-token window)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", - "compressionOutputStylesDescription": "Inject response-shaping instructions without rewriting provider output. Combine freely.", - "mcpAccessibilityDescription": "Scopes MCP tool outputs (separate store).", - "compressionStylesTileSummary": "{tokens, number} tokens saved · {runs, plural, one {# run styled} other {# runs styled}}", - "compressionStylesTileEmpty": "No styled runs yet.", + "compressionEffectivePipeline": "Canalización efectiva:", + "compressionDerivedOff": "desactivada", + "compressionDerivedRuns": "ejecuciones: {pipeline}", + "compressionDerivedMode": "modo: {mode}", + "compressionAdaptiveOff": "Presupuesto de contexto adaptativo: desactivado (activación automática heredada)", + "compressionAdaptiveTarget": "Adaptativo ({mode}, política: {policy}) — objetivo ≈ {target, number} tokens (para una ventana de {contextLimit, number} tokens)", + "compressionAdaptiveMode": "Presupuesto de contexto adaptativo", + "compressionAdaptiveModeOff": "Desactivado (activación automática heredada)", + "compressionAdaptiveModeFloor": "Mínimo (garantiza siempre que quepa)", + "compressionAdaptiveModeReplace": "Reemplazar la activación automática", + "compressionAdaptivePolicy": "Política de presupuesto", + "compressionAdaptivePolicyReserve": "Reservar salida", + "compressionAdaptivePolicyPercentage": "Porcentaje de la ventana", + "compressionAdaptivePolicyAbsolute": "Presupuesto absoluto de tokens", + "compressionOutputStylesDescription": "Inyecta instrucciones para dar forma a la respuesta sin reescribir la salida del proveedor. Combínalas libremente.", + "mcpAccessibilityDescription": "Limita el alcance de las salidas de herramientas MCP (almacén independiente).", + "compressionStylesTileSummary": "{tokens, number} tokens ahorrados · {runs, plural, one {# ejecución con estilo} other {# ejecuciones con estilo}}", + "compressionStylesTileEmpty": "Aún no hay ejecuciones con estilo.", "compressionLevel": { - "minimal": "Minimal", - "standard": "Standard", - "aggressive": "Aggressive", - "lite": "Lite", - "full": "Full", + "minimal": "Mínimo", + "standard": "Estándar", + "aggressive": "Agresivo", + "lite": "Ligero", + "full": "Completo", "ultra": "Ultra" }, "compressionEngine": { "session-dedup": { - "label": "Session Dedup", - "description": "Cross-turn block deduplication." + "label": "Deduplicación de sesión", + "description": "Deduplicación de bloques entre turnos." }, "ccr": { - "label": "CCR (Retrieval)", - "description": "Content-addressed retrieval markers." + "label": "CCR (recuperación)", + "description": "Marcadores de recuperación direccionados por contenido." }, "lite": { - "label": "Lite", - "description": "Whitespace and format cleanup." + "label": "Ligero", + "description": "Limpieza de espacios en blanco y formato." }, "rtk": { "label": "RTK", - "description": "Command-output filtering." + "description": "Filtrado de la salida de comandos." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Salida de la herramienta Responses", + "description": "Compresión conservadora de las salidas compatibles de la herramienta Responses." }, "headroom": { - "label": "Headroom", - "description": "Tabular JSON compaction." + "label": "Margen", + "description": "Compactación de JSON tabular." }, "relevance": { - "label": "Relevance", - "description": "Extractive sentence scoring against the last user query." + "label": "Relevancia", + "description": "Puntuación extractiva de frases respecto a la última consulta del usuario." }, "caveman": { - "label": "Caveman", - "description": "Rule-based prose compression." + "label": "Cavernícola", + "description": "Compresión de texto basada en reglas." }, "aggressive": { - "label": "Aggressive", - "description": "Summarize and age old turns." + "label": "Agresivo", + "description": "Resume y envejece los turnos antiguos." }, "llmlingua": { "label": "LLMLingua (SLM)", - "description": "Semantic pruning (ONNX)." + "description": "Poda semántica (ONNX)." }, "ultra": { "label": "Ultra", - "description": "Heuristic token pruning with an optional SLM." + "description": "Poda heurística de tokens con un SLM opcional." }, "omniglyph": { "label": "OmniGlyph", - "description": "Context as an image (Claude Fable 5, direct route)." + "description": "Contexto como imagen (Claude Fable 5, ruta directa)." } }, "compressionOutputStyle": { "terse-prose": { - "label": "Terse prose", - "description": "Drop filler, articles, and hedging while keeping technical substance exact." + "label": "Texto conciso", + "description": "Elimina el relleno, los artículos y las expresiones evasivas, manteniendo intacto el contenido técnico." }, "less-code": { - "label": "Less code", - "description": "YAGNI ladder: smallest working change, no unrequested abstractions." + "label": "Menos código", + "description": "Escalera YAGNI: el cambio funcional más pequeño, sin abstracciones no solicitadas." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (desarrollador sénior perezoso)", + "description": "Disciplina de desarrollador sénior perezoso: sube la escalera YAGNI, corrige la causa raíz y aplica el cambio funcional más pequeño." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Tengo TDAH (acción primero)", + "description": "Salida orientada a la acción: empieza con la siguiente acción, enumera los pasos, indica un único paso siguiente concreto y omite el preámbulo." }, "terse-cjk": { - "label": "Terse CJK (文言)", - "description": "Classical-Chinese ultra-terse style (available only for Chinese)." + "label": "CJK conciso (文言)", + "description": "Estilo ultraconciso de chino clásico (disponible solo para chino)." } }, "resilienceWaitForCooldown": "Esperar a que se enfríe", @@ -7931,77 +7938,85 @@ "cliproxyapiFallback": "Reserva de CLIProxyAPI", "cliproxyapiEnableFallback": "Habilitar el respaldo de CLIProxyAPI", "cliproxyapiUrl": "URL de CLIProxyAPI", + "headroomProxyTitle": "Proxy de Headroom", + "headroomProxyDesc": "URL del proxy opcional de ahorro de tokens Headroom. Si se deja vacío, usa HEADROOM_URL o http://localhost:8787.", + "headroomProxyUrl": "URL de Headroom", + "headroomProxyUrlHint": "Las URL de bucle invertido pueden iniciarse desde esta página. Las URL externas solo se sondean.", + "headroomProxySave": "Guardar", + "headroomProxyStart": "Iniciar", + "headroomProxyStop": "Detener", + "headroomProxyExternalHint": "Esta URL no es de bucle invertido, por lo que OmniRoute no iniciará la CLI local.", "cliproxyapiStatus": "Estado de CLIProxyAPI", "cliproxyapiNotDetected": "No detectado", - "cliproxyapiImportAuthTitle": "Import accounts from CLIProxyAPI", - "cliproxyapiImportAuthDesc": "Import the OAuth accounts CLIProxyAPI already saved in ~/.cli-proxy-api/ as OmniRoute connections, so you don't have to log in to each account again. Supported account types (Gemini, Codex, Claude, Antigravity, Qwen, Kimi) are imported; others are skipped.", - "cliproxyapiImportAuthButton": "Import accounts", + "cliproxyapiImportAuthTitle": "Importar cuentas desde CLIProxyAPI", + "cliproxyapiImportAuthDesc": "Importa las cuentas de OAuth que CLIProxyAPI ya guardó en ~/.cli-proxy-api/ como conexiones de OmniRoute, para que no tengas que iniciar sesión de nuevo en cada cuenta. Se importan los tipos de cuenta compatibles (Gemini, Codex, Claude, Antigravity, Qwen, Kimi); los demás se omiten.", + "cliproxyapiImportAuthButton": "Importar cuentas", "payloadRulesTitle": "Reglas de carga útil", - "payloadRulesDesc": "Configure request payload mutations by model and protocol. Changes are persisted in settings and hot reloaded into the runtime immediately after save.", - "payloadRuleDefaultTitle": "default", - "payloadRuleDefaultDesc": "Applies params only when the target path is missing from the outgoing payload.", - "payloadRuleOverrideTitle": "override", - "payloadRuleOverrideDesc": "Forces values onto the payload, replacing anything already present at that path.", - "payloadRuleFilterTitle": "filter", - "payloadRuleFilterDesc": "Removes blocked params from the payload before the upstream request is sent.", + "payloadRulesDesc": "Configura las modificaciones de la carga útil de las solicitudes por modelo y protocolo. Los cambios se guardan en la configuración y se recargan en caliente en el entorno de ejecución inmediatamente después de guardarlos.", + "payloadRuleDefaultTitle": "predeterminado", + "payloadRuleDefaultDesc": "Aplica parámetros solo cuando la ruta de destino no existe en la carga útil saliente.", + "payloadRuleOverrideTitle": "sobrescribir", + "payloadRuleOverrideDesc": "Fuerza los valores en la carga útil, reemplazando cualquier valor ya presente en esa ruta.", + "payloadRuleFilterTitle": "filtrar", + "payloadRuleFilterDesc": "Elimina los parámetros bloqueados de la carga útil antes de enviar la solicitud al servicio ascendente.", "payloadRuleDefaultRawTitle": "defaultRaw", - "payloadRuleDefaultRawDesc": "Like default, but string values are parsed as JSON first when possible. The legacy input alias default-raw is also accepted on save.", + "payloadRuleDefaultRawDesc": "Como default, pero primero intenta analizar los valores de cadena como JSON. El alias de entrada heredado default-raw también se acepta al guardar.", "payloadEditorTitle": "Editor", - "payloadEditorDesc": "Use the runtime schema shape: default, override, filter, defaultRaw. The API also accepts the legacy input key default-raw.", - "payloadEditorReady": "Ready", - "payloadResetInfo": "Editor reset to the neutral template. Save to apply it.", - "payloadSaveSuccess": "Payload rules saved and hot reloaded.", - "payloadJsonParseError": "JSON parse error: {error}", - "payloadMustBeObject": "Payload rules must be a JSON object.", - "payloadInvalidJson": "Invalid JSON payload.", - "payloadValidJsonRequired": "Payload rules must be valid JSON before saving.", - "savePayloadRules": "Save Payload Rules", - "requestLimitsTitle": "Request Limits", - "requestLimitsDesc": "Configure global request limits and concurrency guards.", - "maxRequestSizeLabel": "Max Request Size (MB)", - "maxRequestSizeDesc": "Maximum allowed size for incoming API requests.", - "maxResponseSizeLabel": "Max Response Size (MB)", - "maxResponseSizeDesc": "Maximum allowed size for outgoing API responses.", - "maxRequestTokensLabel": "Max Request Tokens", - "maxRequestTokensDesc": "Maximum total tokens allowed in a single request.", - "maxResponseTokensLabel": "Max Response Tokens", - "maxResponseTokensDesc": "Maximum total tokens allowed in a single response.", + "payloadEditorDesc": "Usa la estructura del esquema del entorno de ejecución: default, override, filter, defaultRaw. La API también acepta la clave de entrada heredada default-raw.", + "payloadEditorReady": "Listo", + "payloadResetInfo": "El editor se ha restablecido a la plantilla neutra. Guarda para aplicarla.", + "payloadSaveSuccess": "Las reglas de carga útil se han guardado y recargado en caliente.", + "payloadJsonParseError": "Error de análisis de JSON: {error}", + "payloadMustBeObject": "Las reglas de carga útil deben ser un objeto JSON.", + "payloadInvalidJson": "Carga útil JSON no válida.", + "payloadValidJsonRequired": "Las reglas de carga útil deben ser un JSON válido antes de guardarse.", + "savePayloadRules": "Guardar reglas de carga útil", + "requestLimitsTitle": "Límites de solicitudes", + "requestLimitsDesc": "Configura los límites globales de solicitudes y los controles de concurrencia.", + "maxRequestSizeLabel": "Tamaño máximo de solicitud (MB)", + "maxRequestSizeDesc": "Tamaño máximo permitido para las solicitudes de API entrantes.", + "maxResponseSizeLabel": "Tamaño máximo de respuesta (MB)", + "maxResponseSizeDesc": "Tamaño máximo permitido para las respuestas de API salientes.", + "maxRequestTokensLabel": "Máximo de tokens por solicitud", + "maxRequestTokensDesc": "Número total máximo de tokens permitido en una sola solicitud.", + "maxResponseTokensLabel": "Máximo de tokens por respuesta", + "maxResponseTokensDesc": "Número total máximo de tokens permitido en una sola respuesta.", "modelCooldownsTitle": "Modelos en tiempo de reutilización", "modelCooldownsEmpty": "No hay modelos en tiempo de reutilización en este momento.", - "modelCooldownsDescription": "Models temporarily isolated after a failure. When the cooldown expires they come back automatically.", - "modelCooldownsLoadFailed": "Failed to load cooldowns", - "modelCooldownReactivated": "Model reactivated: {model}", - "modelCooldownClearFailed": "Failed to clear cooldown", - "modelCooldownsAllReactivated": "All models in cooldown have been reactivated.", - "modelCooldownsClearFailed": "Failed to clear cooldowns", - "modelCooldownsReactivateAll": "Reactivate all", - "modelCooldownsReasonRemaining": "reason: {reason} • remaining: {remaining}", - "modelCooldownsReactivate": "Reactivate", - "responsesStateTitle": "Responses State", - "responsesStateDesc": "Control how OmniRoute forwards previous_response_id.", - "responsesStateModeLabel": "previous_response_id handling", - "responsesStateModeAuto": "Auto", - "responsesStateModeStrip": "Strip", - "responsesStateModePreserve": "Preserve", - "responsesStateHint": "Auto strips previous_response_id unless a connection explicitly enables OpenAI Responses storage. Strip is safest for stateless clients such as VS Code Custom Endpoint; context then depends on the client sending full history.", - "responsesStateSaveError": "Failed to update Responses state setting", - "codexFastTierTitle": "Codex Fast Tier", + "modelCooldownsDescription": "Modelos aislados temporalmente después de un fallo. Cuando finaliza el periodo de espera, vuelven a estar disponibles automáticamente.", + "modelCooldownsLoadFailed": "No se pudieron cargar los periodos de espera", + "modelCooldownReactivated": "Modelo reactivado: {model}", + "modelCooldownClearFailed": "No se pudo borrar el periodo de espera", + "modelCooldownsAllReactivated": "Se han reactivado todos los modelos en periodo de espera.", + "modelCooldownsClearFailed": "No se pudieron borrar los periodos de espera", + "modelCooldownsReactivateAll": "Reactivar todos", + "modelCooldownsReasonRemaining": "motivo: {reason} • restante: {remaining}", + "modelCooldownsReactivate": "Reactivar", + "responsesStateTitle": "Estado de las respuestas", + "responsesStateDesc": "Controla cómo OmniRoute reenvía previous_response_id.", + "responsesStateModeLabel": "gestión de previous_response_id", + "responsesStateModeAuto": "Automático", + "responsesStateModeStrip": "Eliminar", + "responsesStateModePreserve": "Conservar", + "responsesStateHint": "El modo Automático elimina previous_response_id a menos que una conexión habilite explícitamente el almacenamiento de Responses de OpenAI. Eliminar es la opción más segura para clientes sin estado, como VS Code Custom Endpoint; en ese caso, el contexto depende de que el cliente envíe el historial completo.", + "responsesStateSaveError": "No se pudo actualizar la configuración del estado de Responses", + "codexFastTierTitle": "Nivel rápido de Codex", "codexFastTierDesc": "Inyectar globalmente service_tier=priority para las solicitudes de OpenAI Codex.", "codexFastTierHint": "Cuando está habilitado, OmniRoute añade service_tier=priority a las solicitudes salientes de Codex para las conexiones que aún no especifican un tier. El tier priority requiere una clave API de OpenAI Enterprise o la ruta de Codex con autenticación ChatGPT; otros tipos de claves recibirán un error relacionado con el tier de OpenAI. Los ajustes por conexión en la página del proveedor Codex tienen prioridad.", "codexFastTierSaveError": "Error al actualizar el ajuste de Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", - "codexFastTierTierLabel": "Service tier", - "codexFastTierTierPriority": "Priority", - "codexFastTierTierFlex": "Flex", - "codexFastTierTierDefault": "Default", - "codexFastTierModelsLabel": "Fast-tier models", - "codexFastTierModelsHint": "Only checked models receive service_tier when Fast Tier is enabled.", - "codexFastTierModelCheckbox": "Enable Fast Tier for {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "codexAutoPingTitle": "Ping automático de cuota de Codex", + "codexAutoPingDesc": "Activación opcional por conexión: envía una pequeña solicitud justo después de que se restablezca una ventana de sesión de Codex para que no esté inactiva cuando la necesites.", + "codexAutoPingWarning": "Consume una pequeña cantidad de cuota real de Codex con cada ping. Está desactivado de forma predeterminada; actívalo solo para las conexiones de las que dependas activamente.", + "codexAutoPingSaveError": "No se pudo actualizar la configuración del ping automático de Codex", + "codexAutoPingToggleAria": "Activar o desactivar el ping automático de cuota de Codex para {connection}", + "codexFastTierTierLabel": "Nivel de servicio", + "codexFastTierTierPriority": "Prioridad", + "codexFastTierTierFlex": "Flexible", + "codexFastTierTierDefault": "Predeterminado", + "codexFastTierModelsLabel": "Modelos de nivel rápido", + "codexFastTierModelsHint": "Solo los modelos seleccionados reciben service_tier cuando el nivel rápido está habilitado.", + "codexFastTierModelCheckbox": "Habilitar el nivel rápido para {model}", + "claudeFastModeTitle": "Modo rápido de Claude", "claudeFastModeDesc": "Activar el Fast Mode de Anthropic (speed:\"fast\") en las solicitudes Claude seleccionadas.", "claudeFastModeHint": "Anthropic no admite oficialmente Fast Mode para clientes en modo SDK. Cuando está habilitado, OmniRoute reenvía un encabezado X-CPA-Force-Fast-Mode para que una compilación compatible de CLIProxyAPI pueda reescribir el entrypoint. Solo los modelos Opus listados pasan la verificación del binario de Anthropic. La suscripción, el plan Max y el saldo de créditos Fast Mode siguen aplicándose en el servidor — Anthropic puede devolver out_of_credits incluso con el toggle activado.", "claudeFastModeModelsLabel": "Aplicado a los modelos ({count})", @@ -8010,62 +8025,62 @@ "authz": { "cors": { "wildcard": { - "title": "CORS is open to every origin (CORS_ALLOW_ALL=true)", - "desc": "Any website can call this server's API from a visitor's browser. Use only on trusted networks — set explicit origins in ALLOWED_ORIGINS and disable CORS_ALLOW_ALL in production." + "title": "CORS está abierto a todos los orígenes (CORS_ALLOW_ALL=true)", + "desc": "Cualquier sitio web puede llamar a la API de este servidor desde el navegador de un visitante. Úsalo solo en redes de confianza: establece orígenes explícitos en ALLOWED_ORIGINS y deshabilita CORS_ALLOW_ALL en producción." } }, - "title": "Authorization Inventory", - "description": "5-tier route classification with live bypass policy. Read shows the full taxonomy; mutations re-prompt for the management password.", - "loading": "Loading inventory…", - "loadError": "Failed to load authz inventory", + "title": "Inventario de autorizaciones", + "description": "Clasificación de rutas en 5 niveles con política de omisión en tiempo real. La lectura muestra la taxonomía completa; las modificaciones vuelven a solicitar la contraseña de administración.", + "loading": "Cargando inventario…", + "loadError": "No se pudo cargar el inventario de autorizaciones", "tier": { - "LOCAL_ONLY": "Local only", - "ALWAYS_PROTECTED": "Always protected", - "MANAGEMENT": "Management", - "CLIENT_API": "Client API", - "PUBLIC": "Public" + "LOCAL_ONLY": "Solo local", + "ALWAYS_PROTECTED": "Siempre protegido", + "MANAGEMENT": "Administración", + "CLIENT_API": "API de cliente", + "PUBLIC": "Público" }, "bypass": { - "section": "Manage-scope bypass", + "section": "Omisión con ámbito de administración", "kill_switch": { - "label": "Bypass kill-switch", - "desc": "Master toggle. When off, no LOCAL_ONLY prefix is reachable from non-loopback regardless of the per-prefix list." + "label": "Interruptor de desactivación de la omisión", + "desc": "Interruptor principal. Cuando está desactivado, ningún prefijo LOCAL_ONLY es accesible desde una dirección que no sea de bucle local, independientemente de la lista de prefijos." }, "prefix": { - "label": "Bypassable prefixes", - "desc": "LOCAL_ONLY prefixes that manage-scope API keys (or dashboard sessions) may reach from non-loopback hosts.", - "add": "Add prefix", + "label": "Prefijos que permiten omisión", + "desc": "Prefijos LOCAL_ONLY a los que pueden acceder las claves de API con ámbito de administración (o las sesiones del panel) desde hosts que no sean de bucle local.", + "add": "Añadir prefijo", "placeholder": "/api/mcp/v2/", - "empty": "No prefixes configured. Bypass effectively off." + "empty": "No hay prefijos configurados. La omisión está efectivamente desactivada." }, - "cli_tools_runtime_note": "Spawn-capable prefix. Compile-time deny; cannot be made bypassable. Shown read-only." + "cli_tools_runtime_note": "Prefijo con capacidad para iniciar procesos. Denegación en tiempo de compilación; no se puede permitir su omisión. Se muestra como solo lectura." }, "password": { "prompt": { - "label": "Current password", - "desc": "Re-confirm to apply security-impacting changes." + "label": "Contraseña actual", + "desc": "Vuelve a confirmar para aplicar cambios que afectan a la seguridad." }, - "placeholder": "Current management password", - "cancel": "Cancel", - "submit": "Apply" + "placeholder": "Contraseña de administración actual", + "cancel": "Cancelar", + "submit": "Aplicar" }, - "save": "Save changes", - "saved": "Authz settings updated", - "pending": "Unsaved changes", + "save": "Guardar cambios", + "saved": "Configuración de autorización actualizada", + "pending": "Cambios sin guardar", "badge": { - "bypassable": "Bypassable via manage scope", - "strict": "Strict loopback", - "auth_required": "Auth required", - "public": "Public", - "always_protected": "Always protected", - "spawn_capable": "Spawn-capable" + "bypassable": "Se puede omitir mediante el ámbito manage", + "strict": "Bucle local estricto", + "auth_required": "Autenticación obligatoria", + "public": "Público", + "always_protected": "Siempre protegido", + "spawn_capable": "Con capacidad de iniciar procesos" }, "error": { - "PASSWORD_REQUIRED": "Current password required to apply these changes.", - "PASSWORD_MISMATCH": "Current password is incorrect.", - "INSUFFICIENT_SCOPE": "API key lacks the manage scope.", - "BYPASS_PREFIX_NOT_ALLOWED": "One or more prefixes target spawn-capable routes and cannot be bypassed.", - "GENERIC": "Failed to update authz settings." + "PASSWORD_REQUIRED": "Se requiere la contraseña actual para aplicar estos cambios.", + "PASSWORD_MISMATCH": "La contraseña actual es incorrecta.", + "INSUFFICIENT_SCOPE": "La clave de API no tiene el ámbito manage.", + "BYPASS_PREFIX_NOT_ALLOWED": "Uno o más prefijos apuntan a rutas con capacidad de iniciar procesos y no se pueden omitir.", + "GENERIC": "No se pudo actualizar la configuración de autorización." }, "remove": "Eliminar" }, @@ -8107,20 +8122,20 @@ "resilienceComboCooldownWaitTitle": "Quota-share combo cooldown wait", "resilienceComboCooldownWaitDesc": "For quota-share combos only: wait out a short transient cooldown and re-dispatch instead of returning a 429 immediately. Never waits on quota_exhausted.", "resilienceComboCooldownWaitToggleDesc": "Quota-share combos only; never waits on quota_exhausted.", - "resilienceComboCooldownMaxWaitMs": "Maximum wait per attempt", - "resilienceComboCooldownBudgetMs": "Total wait budget", - "resilienceQuotaShareConcurrencyTitle": "Quota-share per-connection concurrency", - "resilienceQuotaShareConcurrencyDesc": "For quota-share combos only: when a connection sets a Max Concurrent cap, serialize concurrent requests to that subscription account so it is never flooded past its ceiling. Excess requests wait in the queue instead of getting a 429. The cap comes from each connection's Max Concurrent field; this switch only enables or disables honoring it.", - "resilienceQuotaShareConcurrencyToggleDesc": "Quota-share combos only; honors each connection's Max Concurrent cap.", - "resilienceProviderCooldownTitle": "Provider Cooldown", - "resilienceProviderCooldownScope": "All combo requests", - "resilienceProviderCooldownTrigger": "When a provider/connection fails", - "resilienceProviderCooldownEffect": "Skips the failed provider for a cooldown period before retrying", - "resilienceProviderCooldownDesc": "Prevents subsequent requests from re-walking the same failing providers. Cooldown scales exponentially with consecutive failures.", - "resilienceProviderCooldownEnabled": "Enable global provider cooldown", - "resilienceProviderCooldownEnabledDesc": "When enabled, failed providers are tracked globally and skipped for a cooldown period.", - "resilienceProviderCooldownMin": "Minimum cooldown", - "resilienceProviderCooldownMax": "Maximum cooldown", + "resilienceComboCooldownMaxWaitMs": "Espera máxima por intento", + "resilienceComboCooldownBudgetMs": "Tiempo total de espera", + "resilienceQuotaShareConcurrencyTitle": "Concurrencia por conexión para quota-share", + "resilienceQuotaShareConcurrencyDesc": "Solo para combinaciones de quota-share: cuando una conexión establece un límite de Max Concurrent, serializa las solicitudes simultáneas a esa cuenta de suscripción para que nunca se sature por encima de su límite. Las solicitudes excedentes esperan en la cola en lugar de recibir un error 429. El límite procede del campo Max Concurrent de cada conexión; este interruptor solo activa o desactiva su aplicación.", + "resilienceQuotaShareConcurrencyToggleDesc": "Solo para combinaciones de quota-share; respeta el límite de Max Concurrent de cada conexión.", + "resilienceProviderCooldownTitle": "Tiempo de espera del proveedor", + "resilienceProviderCooldownScope": "Todas las solicitudes combinadas", + "resilienceProviderCooldownTrigger": "Cuando falla un proveedor o una conexión", + "resilienceProviderCooldownEffect": "Omite el proveedor que ha fallado durante un período de espera antes de volver a intentarlo", + "resilienceProviderCooldownDesc": "Evita que las solicitudes posteriores vuelvan a recorrer los mismos proveedores con errores. El período de espera aumenta exponencialmente con los fallos consecutivos.", + "resilienceProviderCooldownEnabled": "Activar el tiempo de espera global de proveedores", + "resilienceProviderCooldownEnabledDesc": "Cuando está activado, se realiza un seguimiento global de los proveedores que han fallado y se omiten durante un período de espera.", + "resilienceProviderCooldownMin": "Tiempo de espera mínimo", + "resilienceProviderCooldownMax": "Tiempo de espera máximo", "resilienceCredentialHealthTitle": "Comprobación de salud de credenciales", "resilienceCredentialHealthScope": "Todas las conexiones activas de clave API y OAuth", "resilienceCredentialHealthTrigger": "Periódicamente, con cadencia fija", @@ -8131,9 +8146,9 @@ "resilienceCredentialHealthHint": "0 desactiva el barrido en segundo plano (máx. 1440 min = 24 h). Las conexiones con su propio valor de comprobación de salud ignoran este valor global; un 0 en una conexión la excluye aunque el barrido global esté activo.", "forcedFingerprintTitle": "Siempre activado para {provider}; necesario para la seguridad de las cuentas OAuth y no se puede desactivar.", "forcedFingerprintBadge": "Obligatorio", - "sessionAffinityTitle": "Session affinity", - "sessionAffinityDesc": "Keeps one conversation on the same account for this many seconds, for any provider. 0 disables it.", - "sessionAffinityTtl": "Affinity TTL (seconds)", + "sessionAffinityTitle": "Afinidad de sesión", + "sessionAffinityDesc": "Mantiene una conversación en la misma cuenta durante esta cantidad de segundos, independientemente del proveedor. El valor 0 la desactiva.", + "sessionAffinityTtl": "TTL de afinidad (segundos)", "resetAwareQuotaCacheTitle": "Caché de cuotas con reinicio", "resetAwareQuotaCacheDesc": "Almacena en caché la telemetría de cuota solo para pedidos con reconocimiento de reinicio. La verificación previa de cuotas aún protege las solicitudes. 0/0 sigue obteniendo en vivo.", "resetAwareQuotaCacheTtl": "TTL nuevo (segundos)", @@ -8141,79 +8156,79 @@ "qdrantCleanupSuccess": "OK: eliminado {count} punto(s) (retención: {days} días)", "qdrantCleanupFailed": "Error de limpieza", "qdrantCleanupError": "Error: {error}", - "vercelRelaySuccess": "Vercel Relay deployed successfully", - "vercelRelayButton": "Deploy Vercel Relay", - "vercelRelayModalTitle": "Deploy Vercel Relay", - "vercelRelayWarning": "Warning: A Vercel deployment token is required. This token will only be used to create the serverless relay and will never be stored by OmniRoute.", - "vercelRelayTokenLabel": "Vercel Access Token", - "vercelRelayProjectNameLabel": "Vercel Project Name", - "vercelRelayFreeTierNote": "Relays are lightweight proxy endpoints deployed on Vercel's free tier to bypass local network/region limitations.", - "vercelRelayDeploying": "Deploying...", - "vercelRelayDeploy": "Deploy", - "deployRelayButton": "Deploy Relay", - "denoRelayButton": "Deploy Deno Relay", - "denoRelayModalTitle": "Deploy Deno Relay", - "denoRelayWarning": "Warning: A Deno Deploy organization token is required. This token will only be used to create the relay app and will never be stored by OmniRoute.", - "denoRelayTokenLabel": "Deno Deploy Organization Token", - "denoRelayOrgDomainLabel": "Organization Domain", - "denoRelayProjectNameLabel": "Deno App Name", - "denoRelayFreeTierNote": "Deno Deploy v2 runs on a global edge network. Free tier: 1M requests & 100GiB outbound traffic per month, no per-request CPU limits, up to 20 active apps & 50 custom domains.", - "denoRelayDeploying": "Deploying...", - "denoRelayDeploy": "Deploy", - "cloudflareRelaySuccess": "Cloudflare Relay deployed successfully", - "cloudflareRelayButton": "Deploy Cloudflare Relay", - "cloudflareRelayModalTitle": "Deploy Cloudflare Worker Relay", - "cloudflareRelayWarning": "Deploys a Cloudflare Worker that proxies LLM requests through Cloudflare's edge network — masking the host IP behind dynamic Cloudflare addresses. The Worker enforces a one-time auth secret so the public workers.dev URL cannot be reused as an open relay.", - "cloudflareRelayTokenHowto": "Create the API token under My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit.", - "cloudflareRelayAccountIdLabel": "Cloudflare Account ID", - "cloudflareRelayAccountIdHint": "Found on the right side of the Cloudflare dashboard overview page.", - "cloudflareRelayApiTokenLabel": "Cloudflare API Token", - "cloudflareRelayApiTokenHint": "Requires 'Workers Scripts: Edit' permission. The token is used only at deploy time and is never stored.", - "cloudflareRelayProjectNameLabel": "Worker Name", - "cloudflareRelayFreeTierNote": "Free tier: 100,000 requests/day per Cloudflare account.", - "cloudflareRelayDeploying": "Deploying...", - "cloudflareRelayDeploy": "Deploy", - "cloudflareRelayCredsRequired": "Account ID and API Token are required", - "cloudflareRelayDeployFailed": "Deploy failed", - "modelLockout": "Model Lockout", - "modelLockoutPageDescription": "Configure which HTTP error codes trigger per-model lockout and control the cooldown behavior.", - "modelLockoutLoadFailed": "Failed to load model lockout settings", - "modelLockoutSaveFailed": "Failed to save model lockout settings", - "modelLockoutLoading": "Loading model lockout settings...", - "modelLockoutBaseRangeError": "Base Cooldown must be between 5,000ms and 600,000ms", - "modelLockoutMaxRangeError": "Max Cooldown must be between 5,000ms and 3,600,000ms", - "modelLockoutOrderError": "Max Cooldown must be greater than or equal to Base Cooldown", - "modelLockoutStepsRangeError": "Max Backoff Steps must be between 0 and 20", - "removeErrorCode": "Remove {code}", - "addErrorCode": "Add error code...", - "suggestions": "Suggestions:", - "modelLockoutMaxCooldownHint": "≥ Base Cooldown — 3,600,000ms", - "modelLockoutEnabled": "Enable Model Lockout", - "modelLockoutEnabledDescription": "When enabled, models that fail with configured error codes are temporarily locked to prevent retry loops.", - "modelLockoutErrorCodes": "Error Codes", - "modelLockoutErrorCodesDescription": "HTTP status codes that trigger model lockout. Type a code and click Add, or select from suggestions.", - "modelLockoutBaseCooldown": "Base Cooldown (ms)", - "modelLockoutBaseCooldownDescription": "Initial cooldown duration in milliseconds before a model can be retried.", - "modelLockoutMaxCooldown": "Max Cooldown (ms)", - "modelLockoutMaxCooldownDescription": "Maximum cooldown duration in milliseconds. Prevents excessively long lockouts.", - "modelLockoutExponentialBackoff": "Exponential Backoff", - "modelLockoutExponentialBackoffDescription": "When enabled, each consecutive failure increases the cooldown duration exponentially.", - "modelLockoutMaxBackoffSteps": "Max Backoff Steps", - "modelLockoutMaxBackoffStepsDescription": "Maximum number of backoff steps before the cooldown stops growing. The Max Cooldown cap is reached first in most configurations, making this a safety ceiling for when Max Cooldown is raised.", - "disableSessionStickiness": "Disable session stickiness", - "disableSessionStickinessDesc": "Round-robin and random combos rotate to a different connection on every request instead of pinning a whole conversation to one connection by the first-message hash. Leave off to preserve prompt-cache hits for multi-turn chats. Per-combo overrides take precedence.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", - "credentialRedaction": "Credential Redaction", - "credentialRedactionDesc": "Redact API keys, tokens, and secrets from context sent to providers and from responses.", - "enableCredentialRedaction": "Enable credential redaction", - "enableCredentialRedactionDesc": "Scrubs API keys, tokens, private keys, and JWTs from messages, tool calls, and responses.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "vercelRelaySuccess": "Vercel Relay se ha desplegado correctamente", + "vercelRelayButton": "Desplegar Vercel Relay", + "vercelRelayModalTitle": "Desplegar Vercel Relay", + "vercelRelayWarning": "Advertencia: Se requiere un token de despliegue de Vercel. Este token solo se utilizará para crear el relay sin servidor y OmniRoute nunca lo almacenará.", + "vercelRelayTokenLabel": "Token de acceso de Vercel", + "vercelRelayProjectNameLabel": "Nombre del proyecto de Vercel", + "vercelRelayFreeTierNote": "Los relays son endpoints proxy ligeros desplegados en el nivel gratuito de Vercel para eludir las limitaciones de la red local o de la región.", + "vercelRelayDeploying": "Desplegando...", + "vercelRelayDeploy": "Desplegar", + "deployRelayButton": "Desplegar relay", + "denoRelayButton": "Desplegar relay de Deno", + "denoRelayModalTitle": "Desplegar relay de Deno", + "denoRelayWarning": "Advertencia: Se requiere un token de organización de Deno Deploy. Este token solo se utilizará para crear la aplicación de relay y OmniRoute nunca lo almacenará.", + "denoRelayTokenLabel": "Token de organización de Deno Deploy", + "denoRelayOrgDomainLabel": "Dominio de la organización", + "denoRelayProjectNameLabel": "Nombre de la aplicación de Deno", + "denoRelayFreeTierNote": "Deno Deploy v2 se ejecuta en una red perimetral global. Nivel gratuito: 1 millón de solicitudes y 100 GiB de tráfico saliente al mes, sin límites de CPU por solicitud, hasta 20 aplicaciones activas y 50 dominios personalizados.", + "denoRelayDeploying": "Desplegando...", + "denoRelayDeploy": "Desplegar", + "cloudflareRelaySuccess": "Relay de Cloudflare desplegado correctamente", + "cloudflareRelayButton": "Desplegar relay de Cloudflare", + "cloudflareRelayModalTitle": "Desplegar relay de Cloudflare Worker", + "cloudflareRelayWarning": "Despliega un Cloudflare Worker que canaliza las solicitudes de LLM a través de la red perimetral de Cloudflare, ocultando la IP del host tras direcciones dinámicas de Cloudflare. El Worker exige un secreto de autenticación de un solo uso para que la URL pública de workers.dev no pueda reutilizarse como relay abierto.", + "cloudflareRelayTokenHowto": "Cree el token de API en My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit.", + "cloudflareRelayAccountIdLabel": "ID de cuenta de Cloudflare", + "cloudflareRelayAccountIdHint": "Se encuentra en el lado derecho de la página de resumen del panel de Cloudflare.", + "cloudflareRelayApiTokenLabel": "Token de API de Cloudflare", + "cloudflareRelayApiTokenHint": "Requiere el permiso 'Workers Scripts: Edit'. El token solo se utiliza durante el despliegue y nunca se almacena.", + "cloudflareRelayProjectNameLabel": "Nombre del Worker", + "cloudflareRelayFreeTierNote": "Nivel gratuito: 100.000 solicitudes al día por cuenta de Cloudflare.", + "cloudflareRelayDeploying": "Desplegando...", + "cloudflareRelayDeploy": "Desplegar", + "cloudflareRelayCredsRequired": "Se requieren el ID de cuenta y el token de API", + "cloudflareRelayDeployFailed": "Error al desplegar", + "modelLockout": "Bloqueo de modelos", + "modelLockoutPageDescription": "Configure qué códigos de error HTTP activan el bloqueo por modelo y controle el comportamiento del tiempo de espera.", + "modelLockoutLoadFailed": "No se pudo cargar la configuración de bloqueo de modelos", + "modelLockoutSaveFailed": "No se pudo guardar la configuración de bloqueo de modelos", + "modelLockoutLoading": "Cargando la configuración de bloqueo de modelos...", + "modelLockoutBaseRangeError": "El tiempo de espera base debe estar entre 5.000 ms y 600.000 ms", + "modelLockoutMaxRangeError": "El tiempo de espera máximo debe estar entre 5.000 ms y 3.600.000 ms", + "modelLockoutOrderError": "El tiempo de espera máximo debe ser mayor o igual que el tiempo de espera base", + "modelLockoutStepsRangeError": "El número máximo de pasos de espera exponencial debe estar entre 0 y 20", + "removeErrorCode": "Eliminar {code}", + "addErrorCode": "Añadir código de error...", + "suggestions": "Sugerencias:", + "modelLockoutMaxCooldownHint": "≥ Enfriamiento base — 3,600,000ms", + "modelLockoutEnabled": "Activar bloqueo de modelos", + "modelLockoutEnabledDescription": "Cuando está activado, los modelos que fallan con los códigos de error configurados se bloquean temporalmente para evitar bucles de reintentos.", + "modelLockoutErrorCodes": "Códigos de error", + "modelLockoutErrorCodesDescription": "Códigos de estado HTTP que activan el bloqueo del modelo. Escribe un código y haz clic en Añadir, o selecciónalo entre las sugerencias.", + "modelLockoutBaseCooldown": "Enfriamiento base (ms)", + "modelLockoutBaseCooldownDescription": "Duración inicial del enfriamiento en milisegundos antes de poder volver a intentar usar un modelo.", + "modelLockoutMaxCooldown": "Enfriamiento máximo (ms)", + "modelLockoutMaxCooldownDescription": "Duración máxima del enfriamiento en milisegundos. Evita bloqueos excesivamente largos.", + "modelLockoutExponentialBackoff": "Retroceso exponencial", + "modelLockoutExponentialBackoffDescription": "Cuando está activado, cada fallo consecutivo aumenta exponencialmente la duración del enfriamiento.", + "modelLockoutMaxBackoffSteps": "Máximo de pasos de retroceso", + "modelLockoutMaxBackoffStepsDescription": "Número máximo de pasos de retroceso antes de que el enfriamiento deje de aumentar. El límite de Enfriamiento máximo se alcanza primero en la mayoría de las configuraciones, por lo que actúa como límite de seguridad cuando se aumenta el Enfriamiento máximo.", + "disableSessionStickiness": "Desactivar la afinidad de sesión", + "disableSessionStickinessDesc": "Las combinaciones secuenciales y aleatorias cambian a una conexión distinta en cada solicitud, en lugar de fijar toda una conversación a una conexión mediante el hash del primer mensaje. Déjalo desactivado para conservar los aciertos de la caché de prompts en chats de varios turnos. Las anulaciones por combinación tienen prioridad.", + "promptCacheAffinity": "Enrutamiento por localidad de caché de prompts", + "promptCacheAffinityDesc": "Prioriza la misma cuenta de proveedor para claves coincidentes de la caché de prompts, conservando la conmutación por error basada en el estado y la cuota.", + "reasoningTokenBuffer": "Búfer de tokens de razonamiento", + "reasoningTokenBufferDesc": "Permite que el enrutamiento de combinaciones añada margen a max_tokens solo para modelos de razonamiento conocidos cuando el búfer completo cabe dentro de un límite de salida conocido.", + "zeroLatencyOptimizations": "Optimizaciones de latencia cero", + "zeroLatencyOptimizationsDesc": "Activa la cobertura de solicitudes, las omisiones predictivas de TTFT y la compresión proactiva de respaldo. Déjalo desactivado para evitar que estas funciones de latencia compitan entre destinos o compriman las solicitudes de respaldo.", + "credentialRedaction": "Censura de credenciales", + "credentialRedactionDesc": "Censura claves de API, tokens y secretos del contexto enviado a los proveedores y de las respuestas.", + "enableCredentialRedaction": "Activar la censura de credenciales", + "enableCredentialRedactionDesc": "Elimina claves de API, tokens, claves privadas y JWT de los mensajes, las llamadas a herramientas y las respuestas.", + "pricingAutoSyncDisabled": "Sincronización automática desactivada", + "pricingAutoSyncEnabled": "Sincronización automática activada", "modalityBridgeIntro": "Convierte el contenido multimodal en texto antes de que llegue a modelos que solo admiten texto. Los puentes de visión, audio y vídeo están disponibles y se pueden configurar.", "modalityBridgeVisionTab": "Visión", "modalityBridgeAudioTab": "Audio", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Salud", "cliproxyapiPort": "Puerto", "qdrantHost": "Anfitrión", - "qdrantCollection": "Colección", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Colección" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "Motor RTK", + "description": "Compresión adaptada a comandos para la salida de herramientas, los registros de terminal y los resultados de compilación.", + "enabled": "Activado", + "intensity": "Intensidad", + "intensityMinimal": "Mínima", + "intensityStandard": "Estándar", + "intensityAggressive": "Agresiva", + "toolResults": "Resultados de herramientas", + "assistantMessages": "Mensajes del asistente", + "codeBlocks": "Bloques de código", "filterCatalog": "Catálogo de filtros", "filterCatalogDesc": "Filtros de salida disponibles por categoría", "guidedConfig": "Configuración", "guidedConfigDesc": "Ajuste cómo RTK filtra la salida de su terminal", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Máximo de líneas", + "maxChars": "Máximo de caracteres", "deduplicateThreshold": "Umbral de deduplicación", "customFilters": "Filtros personalizados", "detectedType": "Tipo detectado", @@ -8402,183 +8409,183 @@ "rawOutputFailures": "Fallos", "rawOutputAlways": "siempre", "rawOutputMaxBytes": "Bytes máximos de salida sin procesar", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Prueba de filtros", + "pasteOutput": "Pega la salida de la herramienta para probar el filtrado...", "presetHigh": "agresivo", "presetLow": "Luz", "presetMaxChars": "Caracteres de salida máximos", "presetMaxLines": "Líneas de salida máximas", "presetMedium": "Estándar", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Ejecutar", + "result": "Resultado", + "previewEmpty": "Ejecuta un ejemplo para obtener una vista previa de la salida de RTK.", + "detected": "Detectado", "masterSwitchOffAlert": "El interruptor principal de Token Saver está DESACTIVADO — estos ajustes no afectarán a las solicitudes hasta que lo actives en la página de Puntos de conexión.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Tokens filtrados", + "filtersActive": "Filtros activos", + "requests": "Solicitudes", + "avgSavings": "Ahorro promedio", "simpleMode": "Sencillo", "advancedMode": "Avanzado", "searchFilters": "Filtros de búsqueda...", "tooltipDedup": "Qué tan agresivamente eliminar las líneas repetidas.", "tooltipMaxChars": "Máximo de caracteres por bloque de salida.", "tooltipMaxLines": "Líneas máximas para evitar la salida del comando. El exceso se trunca.", - "learnDiscoverTitle": "Learn & Discover filters", - "learnDiscoverDesc": "Mine your captured command output (Raw Output retention must be on) to suggest new RTK filters. Suggestions only — you review and save them.", - "discoverHeading": "Discover repeated noise", - "discoverButton": "Scan samples", - "discoverScanning": "Scanning…", - "discoverEmpty": "No repeated noise found. Enable Raw Output retention and run a few commands first.", - "discoverSamples": "{count} sample(s) scanned", - "discoverHits": "{hits}× across samples", - "learnHeading": "Learn a filter for a command", - "learnCommandPlaceholder": "e.g. npm install", - "learnButton": "Suggest filter", - "learnEmpty": "No suggestion yet. Type a command you have run and scan.", - "learnSamplesUsed": "Learned from {count} matching sample(s)", - "suggestionError": "Could not load suggestions. Check management auth and try again.", - "tomlImportTitle": "Import RTK TOML filters", - "tomlImportDesc": "Validate RTK TOML schema v1 filters and install them globally. Installation writes DATA_DIR/rtk/filters.toml; existing files are replaced only after explicit confirmation.", - "tomlChooseFile": "Choose a TOML file", - "tomlImportPlaceholder": "Paste RTK filters.toml content here...", - "tomlValidate": "Validate", - "tomlValidating": "Validating…", - "tomlInstall": "Install globally", - "tomlInstalling": "Installing…", - "tomlConfirmOverwrite": "Replace the existing global file and create a backup", - "tomlValidationPassed": "Validation passed", - "tomlValidationFailed": "Validation completed with failing inline tests", - "tomlValidationSummary": "{filters} filter(s), {tests} inline test(s)", - "tomlInstalled": "Installed at {path}", - "tomlBackupCreated": "A backup of the previous file was created.", - "tomlTestCount": "{count} test(s)", - "tomlTestPassed": "Passed", - "tomlTestFailed": "Failed", - "tomlImportError": "Could not process the RTK TOML file.", - "tomlFileReadError": "Could not read the selected TOML file." + "learnDiscoverTitle": "Aprender y descubrir filtros", + "learnDiscoverDesc": "Analiza la salida de comandos capturada (la retención de salida sin procesar debe estar activada) para sugerir nuevos filtros de RTK. Solo son sugerencias: tú las revisas y guardas.", + "discoverHeading": "Descubrir contenido repetitivo innecesario", + "discoverButton": "Analizar muestras", + "discoverScanning": "Analizando…", + "discoverEmpty": "No se encontró contenido repetitivo innecesario. Activa la retención de salida sin procesar y ejecuta primero algunos comandos.", + "discoverSamples": "{count} muestra(s) analizada(s)", + "discoverHits": "{hits}× entre las muestras", + "learnHeading": "Crear un filtro para un comando", + "learnCommandPlaceholder": "p. ej., npm install", + "learnButton": "Sugerir filtro", + "learnEmpty": "Aún no hay ninguna sugerencia. Escribe un comando que hayas ejecutado y analízalo.", + "learnSamplesUsed": "Aprendido a partir de {count} muestra(s) coincidente(s)", + "suggestionError": "No se pudieron cargar las sugerencias. Comprueba la autenticación de administración e inténtalo de nuevo.", + "tomlImportTitle": "Importar filtros TOML de RTK", + "tomlImportDesc": "Valida los filtros del esquema v1 de RTK TOML e instálalos globalmente. La instalación escribe en DATA_DIR/rtk/filters.toml; los archivos existentes solo se reemplazan tras una confirmación explícita.", + "tomlChooseFile": "Elegir un archivo TOML", + "tomlImportPlaceholder": "Pega aquí el contenido de RTK filters.toml...", + "tomlValidate": "Validar", + "tomlValidating": "Validando…", + "tomlInstall": "Instalar globalmente", + "tomlInstalling": "Instalando…", + "tomlConfirmOverwrite": "Reemplazar el archivo global existente y crear una copia de seguridad", + "tomlValidationPassed": "Validación superada", + "tomlValidationFailed": "La validación finalizó con errores en las pruebas en línea", + "tomlValidationSummary": "{filters} filtro(s), {tests} prueba(s) insertada(s)", + "tomlInstalled": "Instalado en {path}", + "tomlBackupCreated": "Se creó una copia de seguridad del archivo anterior.", + "tomlTestCount": "{count} prueba(s)", + "tomlTestPassed": "Superadas", + "tomlTestFailed": "Fallidas", + "tomlImportError": "No se pudo procesar el archivo TOML de RTK.", + "tomlFileReadError": "No se pudo leer el archivo TOML seleccionado." }, "compressionEngineConfig": { - "loading": "Loading…", - "loadFailed": "Failed to load engine information.", - "engineNotFound": "Engine \"{engine}\" not found.", - "saveFailed": "Failed to save configuration.", - "previewFailed": "Preview failed.", - "panelPointerPrefix": "Turn this layer on or off and set its level in", - "compressionSettings": "Compression Settings", - "panelPointerSuffix": ". This page edits its detailed configuration only.", - "configuration": "Configuration", - "noAdditionalConfiguration": "No additional configuration.", - "save": "Save", - "saving": "Saving…", - "globalSettingsOnly": "This layer is configured by the global settings; there is no per-engine override to save here yet.", - "preview": "Preview", - "previewInput": "Preview input", - "processing": "Processing…", - "previewSample": "The quick brown fox jumps over the lazy dog. This is a sample message used to preview compression. It contains enough text to show meaningful token savings.", - "originalTokens": "Original tokens", - "compressedTokens": "Compressed tokens", - "savings": "Savings", + "loading": "Cargando…", + "loadFailed": "No se pudo cargar la información del motor.", + "engineNotFound": "No se encontró el motor «{engine}».", + "saveFailed": "No se pudo guardar la configuración.", + "previewFailed": "La vista previa falló.", + "panelPointerPrefix": "Activa o desactiva esta capa y establece su nivel en", + "compressionSettings": "Ajustes de compresión", + "panelPointerSuffix": ". Esta página solo permite editar su configuración detallada.", + "configuration": "Configuración", + "noAdditionalConfiguration": "No hay ninguna configuración adicional.", + "save": "Guardar", + "saving": "Guardando…", + "globalSettingsOnly": "Esta capa se configura mediante los ajustes globales; todavía no hay ninguna configuración específica por motor que guardar aquí.", + "preview": "Vista previa", + "previewInput": "Entrada de la vista previa", + "processing": "Procesando…", + "previewSample": "El veloz zorro marrón salta sobre el perro perezoso. Este es un mensaje de ejemplo utilizado para previsualizar la compresión. Contiene suficiente texto para mostrar un ahorro significativo de tokens.", + "originalTokens": "Tokens originales", + "compressedTokens": "Tokens comprimidos", + "savings": "Ahorro", "original": "Original", - "compressed": "Compressed", - "diff": "Diff", - "last7Days": "Last 7 days", - "noDataYet": "No data yet", - "runs": "Runs", - "tokensSaved": "Tokens saved", - "averageSavings": "Average savings", + "compressed": "Comprimido", + "diff": "Diferencias", + "last7Days": "Últimos 7 días", + "noDataYet": "Aún no hay datos", + "runs": "Ejecuciones", + "tokensSaved": "Tokens ahorrados", + "averageSavings": "Ahorro promedio", "diffLabels": { - "change": "Change", - "added": "Added", - "removed": "Removed", - "modified": "Modified" + "change": "Cambio", + "added": "Añadido", + "removed": "Eliminado", + "modified": "Modificado" }, "engines": { "headroom": { "name": "Headroom SmartCrusher", - "description": "Lossless tabular compaction of homogeneous JSON arrays with explicit row-count markers." + "description": "Compactación tabular sin pérdida de matrices JSON homogéneas con marcadores explícitos del número de filas." }, "session-dedup": { - "name": "Session Dedup", - "description": "Cross-turn block deduplication with recoverable content markers." + "name": "Deduplicación de sesión", + "description": "Deduplicación de bloques entre turnos con marcadores de contenido recuperable." }, "ccr": { "name": "CCR", - "description": "Content-addressed retrieval markers for repeated context blocks." + "description": "Marcadores de recuperación direccionados por contenido para bloques de contexto repetidos." }, "llmlingua": { - "name": "LLMLingua-2 (Semantic Pruning)", - "description": "ONNX-based semantic token classification. Compresses prose only; code blocks and preserved constructs are protected. Fails open on model or worker errors." + "name": "LLMLingua-2 (poda semántica)", + "description": "Clasificación semántica de tokens basada en ONNX. Solo comprime texto en prosa; los bloques de código y las construcciones preservadas están protegidos. En caso de errores del modelo o del proceso de trabajo, continúa sin comprimir." }, "lite": { - "name": "Lite", - "description": "Fast whitespace, tool-result and image URL reduction." + "name": "Ligero", + "description": "Reducción rápida de espacios en blanco, resultados de herramientas y URL de imágenes." }, "aggressive": { - "name": "Aggressive", - "description": "Summarization, tool-result compression and progressive aging." + "name": "Agresivo", + "description": "Resumen, compresión de resultados de herramientas y envejecimiento progresivo." }, "ultra": { "name": "Ultra", - "description": "Heuristic token pruning with an optional local SLM fallback." + "description": "Poda heurística de tokens con una alternativa local opcional basada en SLM." } }, "fields": { "minBlockChars": { - "label": "Minimum block characters", - "description": "Minimum character count for a suffix block to be a deduplication candidate." + "label": "Caracteres mínimos del bloque", + "description": "Número mínimo de caracteres para que un bloque de sufijo sea candidato a la deduplicación." }, "fuzzy": { - "label": "Fuzzy near-duplicate deduplication", - "description": "Opt in to replace whole messages that are at least about 85% similar to an earlier message with a recoverable CCR marker." + "label": "Deduplicación aproximada de elementos casi duplicados", + "description": "Activa la sustitución de mensajes completos que sean al menos un 85 % similares a un mensaje anterior por un marcador CCR recuperable." }, "minChars": { - "label": "Minimum block characters", - "description": "Minimum character count for a block to be a CCR candidate." + "label": "Caracteres mínimos del bloque", + "description": "Número mínimo de caracteres para que un bloque sea candidato a CCR." }, "retrievalRampFactor": { - "label": "Retrieval ramp factor (H8)", - "description": "Controls how strongly frequently retrieved blocks resist compression. Each prior retrieval raises the effective minimum block size linearly; 1 disables the ramp." + "label": "Factor de aumento de recuperación (H8)", + "description": "Controla la intensidad con la que los bloques recuperados con frecuencia resisten la compresión. Cada recuperación anterior aumenta linealmente el tamaño mínimo efectivo del bloque; 1 desactiva el aumento." }, "model": { - "label": "Model" + "label": "Modelo" }, "minTokens": { - "label": "Minimum tokens (floor)" + "label": "Tokens mínimos (límite inferior)" }, "compressionRate": { - "label": "Compression rate" + "label": "Tasa de compresión" }, "modelPath": { - "label": "Model path" + "label": "Ruta del modelo" }, "minRows": { - "label": "Minimum rows to compact", - "description": "Minimum rows in a homogeneous JSON array required to trigger tabular compaction. Default: 8." + "label": "Filas mínimas para compactar", + "description": "Número mínimo de filas de una matriz JSON homogénea necesario para activar la compactación tabular. Valor predeterminado: 8." }, "preserveSystemPrompt": { - "label": "Preserve system prompt" + "label": "Conservar el prompt del sistema" }, "summarizerEnabled": { - "label": "Enable summarizer" + "label": "Activar el resumidor" }, "maxTokensPerMessage": { - "label": "Maximum tokens per message" + "label": "Tokens máximos por mensaje" }, "minSavingsThreshold": { - "label": "Minimum savings threshold" + "label": "Umbral mínimo de ahorro" }, "minScoreThreshold": { - "label": "Minimum score threshold" + "label": "Umbral mínimo de puntuación" }, "slmFallbackToAggressive": { - "label": "Fall back to Aggressive" + "label": "Usar Agresivo como alternativa" }, "intensity": { - "label": "Intensity" + "label": "Intensidad" }, "minMessageLength": { - "label": "Minimum message length" + "label": "Longitud mínima del mensaje" }, "compressToolResults": { "label": "Truncar proactivamente los resultados largos de la herramienta", @@ -8588,28 +8595,28 @@ "engineFields": { "llmlingua": { "compressionRate": { - "label": "Compression rate (keep ratio)" + "label": "Tasa de compresión (proporción conservada)" }, "modelPath": { - "label": "Model path (offline override)" + "label": "Ruta del modelo (anulación sin conexión)" } } }, "options": { "model": { - "tinybert": "TinyBERT (57 MB, fast — default)", - "bert-base": "BERT-base (710 MB, higher accuracy)" + "tinybert": "TinyBERT (57 MB, rápido — predeterminado)", + "bert-base": "BERT-base (710 MB, mayor precisión)" }, "intensity": { - "lite": "Lite", - "full": "Full", + "lite": "Ligero", + "full": "Completo", "ultra": "Ultra" } }, "modeOptions": { "default": "Predeterminado", "off": "Apagar", - "lite": "Lite", + "lite": "Ligero", "standard": "Estándar", "aggressive": "Agresivo", "ultra": "Ultra", @@ -8617,322 +8624,322 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", - "loading": "Loading…", - "hubTitle": "Compression Hub", - "hubDescription": "Pick which compression profile runs globally.", - "hideExplanation": "Hide explanation", - "howItWorks": "How it works", - "saveSettingsFailed": "Failed to save settings.", - "explanationIntro": "Compression reduces tokens and cost by rewriting history before it is sent to the provider while preserving meaning.", - "explanationActiveProfile": "Active profile: chooses which compression profile runs globally — the panel-derived Default or one of your saved named combos.", - "explanationDefault": "Default (from panel): derived from the master switch and per-engine toggles you configure in Compression Settings.", - "explanationNamedCombos": "Named combos: saved pipelines you build in the named-combo editor. Selecting one makes it the active profile for every request.", - "explanationPreview": "Preview: shows which engines the active profile runs, in order.", - "activeProfile": "Active profile", - "activeProfileDescription": "Pick which compression profile runs globally — the panel-derived Default or a saved named combo.", - "defaultFromPanel": "Default (from panel)", - "runs": "Runs:", - "defaultConfiguredPrefix": "Default — configured in", - "compressionSettings": "Compression Settings", - "providerDelegated": "Provider-delegated compression", - "contextEditingClaude": "Context Editing (Claude)", - "contextEditingDescription": "Lets the provider clear old tool-use blocks server-side, without rewriting the message.", - "contextEditingAria": "Context Editing", - "contextEditingNote": "Currently available for Claude (Anthropic) only. It is a delegated mode: the provider clears old tool-use blocks server-side — we do not rewrite the message. It does not affect other providers.", - "namedCombos": "Named combos", - "namedCombosDescription": "Save different pipelines and assign them to specific routing combos.", - "comboNamePlaceholder": "Combo name", - "descriptionPlaceholder": "Description", - "nameRequired": "Enter a combo name before saving.", - "pipelineRequired": "Add at least one pipeline step before saving.", - "saveComboFailed": "Failed to save combo (HTTP {status}).", - "deleteNamedConfirm": "Delete combo “{name}”?", - "intensityLite": "Lite", - "intensityFull": "Full", + "title": "Combinaciones de compresión", + "description": "Define cómo se combinan los motores para diferentes escenarios de enrutamiento.", + "createCombo": "Crear combinación de compresión", + "editCombo": "Editar", + "deleteCombo": "Eliminar", + "deleteConfirm": "¿Eliminar esta combinación de compresión?", + "pipeline": "Canalización", + "addStep": "Añadir paso", + "removeStep": "Quitar", + "name": "Nombre", + "descriptionField": "Descripción", + "languagePacks": "Paquetes de idiomas", + "outputMode": "Modo de salida", + "assignToRouting": "Asignar a combinaciones de enrutamiento", + "noAssignments": "No hay combinaciones de enrutamiento disponibles", + "default": "Predeterminado", + "setAsDefault": "Establecer como predeterminado", + "save": "Guardar", + "cancel": "Cancelar", + "enabled": "Activado", + "loading": "Cargando…", + "hubTitle": "Centro de compresión", + "hubDescription": "Elige qué perfil de compresión se ejecuta globalmente.", + "hideExplanation": "Ocultar explicación", + "howItWorks": "Cómo funciona", + "saveSettingsFailed": "No se pudo guardar la configuración.", + "explanationIntro": "La compresión reduce los tokens y el coste reescribiendo el historial antes de enviarlo al proveedor, sin alterar su significado.", + "explanationActiveProfile": "Perfil activo: permite elegir qué perfil de compresión se ejecuta globalmente: el perfil Predeterminado derivado del panel o una de tus combinaciones guardadas con nombre.", + "explanationDefault": "Predeterminado (del panel): se deriva del interruptor principal y de los conmutadores de cada motor que configures en los ajustes de compresión.", + "explanationNamedCombos": "Combinaciones con nombre: canalizaciones guardadas que creas en el editor de combinaciones con nombre. Al seleccionar una, se convierte en el perfil activo para todas las solicitudes.", + "explanationPreview": "Vista previa: muestra qué motores ejecuta el perfil activo y en qué orden.", + "activeProfile": "Perfil activo", + "activeProfileDescription": "Elige qué perfil de compresión se ejecuta globalmente: el perfil Predeterminado derivado del panel o una combinación guardada con nombre.", + "defaultFromPanel": "Predeterminado (del panel)", + "runs": "Ejecuta:", + "defaultConfiguredPrefix": "Predeterminado — configurado en", + "compressionSettings": "Configuración de compresión", + "providerDelegated": "Compresión delegada al proveedor", + "contextEditingClaude": "Edición de contexto (Claude)", + "contextEditingDescription": "Permite que el proveedor elimine en el servidor los bloques antiguos de uso de herramientas, sin reescribir el mensaje.", + "contextEditingAria": "Edición de contexto", + "contextEditingNote": "Actualmente disponible solo para Claude (Anthropic). Es un modo delegado: el proveedor elimina en el servidor los bloques antiguos de uso de herramientas; nosotros no reescribimos el mensaje. No afecta a otros proveedores.", + "namedCombos": "Combinaciones con nombre", + "namedCombosDescription": "Guarda distintas canalizaciones y asígnalas a combinaciones de enrutamiento específicas.", + "activeProfileMasterSwitchOffWarning": "El perfil activo que aparece a continuación no se ejecutará hasta que se active el interruptor principal «Compresión de prompts».", + "activeProfileMasterSwitchOffCta": "Actívalo en Configuración", + "comboNamePlaceholder": "Nombre de la combinación", + "descriptionPlaceholder": "Descripción", + "nameRequired": "Introduce un nombre para la combinación antes de guardarla.", + "pipelineRequired": "Añade al menos un paso a la canalización antes de guardarla.", + "saveComboFailed": "No se pudo guardar la combinación (HTTP {status}).", + "deleteNamedConfirm": "¿Eliminar la combinación «{name}»?", + "intensityLite": "Ligera", + "intensityFull": "Completa", "intensityUltra": "Ultra", - "active": "Active", - "languagePacksList": "Language packs: {packs}", - "dragToReorder": "Drag to reorder step", - "engine": "Engine", - "intensity": "Intensity", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "active": "Activa", + "languagePacksList": "Paquetes de idioma: {packs}", + "dragToReorder": "Arrastra para reordenar el paso", + "engine": "Motor", + "intensity": "Intensidad" }, "compressionStudio": { - "noRun": "No compression run available.", - "liveDataHint": "Live data arrives through the WebSocket compression channel.", - "cockpitView": "Cockpit view", - "canvas": "Canvas", - "waterfall": "Waterfall", - "replayDone": "Replay complete", - "pauseReplay": "Pause replay", - "playReplay": "Play replay", - "pause": "Pause", - "replay": "Replay", - "resetReplay": "Reset replay", - "stepProgress": "step {current}/{total}", - "inlineView": "Inline", - "splitComingSoon": "Split view (coming soon)", - "inputPlaceholder": "Paste a prompt, tool output, or context…", - "activeCombined": "Active in the combined flow", - "requiresOnnx": "requires an ONNX model", - "verifyFidelity": "Verify fidelity (reject any layer that corrupts content)", - "fuzzyDedup": "Fuzzy deduplication (near-duplicate → CCR)", - "protectSensitive": "Protect sensitive content (risk gate)", - "quantumLock": "QuantumLock (stabilize the cache prefix)", - "saliencyHeatmap": "Saliency heatmap", - "running": "Running…", - "run": "Run", - "laneRejected": "rejected: {reason}", + "noRun": "No hay ninguna ejecución de compresión disponible.", + "liveDataHint": "Los datos en tiempo real llegan a través del canal de compresión WebSocket.", + "cockpitView": "Vista de cabina", + "canvas": "Lienzo", + "waterfall": "Cascada", + "replayDone": "Reproducción completada", + "pauseReplay": "Pausar reproducción", + "playReplay": "Iniciar reproducción", + "pause": "Pausar", + "replay": "Reproducir", + "resetReplay": "Reiniciar reproducción", + "stepProgress": "paso {current}/{total}", + "inlineView": "En línea", + "splitComingSoon": "Vista dividida (próximamente)", + "inputPlaceholder": "Pega un prompt, la salida de una herramienta o contexto…", + "activeCombined": "Activo en el flujo combinado", + "requiresOnnx": "requiere un modelo ONNX", + "verifyFidelity": "Verificar la fidelidad (rechazar cualquier capa que corrompa el contenido)", + "fuzzyDedup": "Desduplicación difusa (casi duplicado → CCR)", + "protectSensitive": "Proteger el contenido sensible (control de riesgos)", + "quantumLock": "QuantumLock (estabilizar el prefijo de caché)", + "saliencyHeatmap": "Mapa de calor de saliencia", + "running": "Ejecutando…", + "run": "Ejecutar", + "laneRejected": "rechazado: {reason}", "error": "error", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", - "combinedFlow": "Combined flow", - "eachLayer": "Each layer separately", - "diff": "Difference", - "combined": "combined", - "skipped": "skip", - "input": "INPUT", - "output": "OUTPUT", + "combinedError": "Error en la vista previa del flujo combinado: {reason}", + "combinedFlow": "Flujo combinado", + "eachLayer": "Cada capa por separado", + "diff": "Diferencia", + "combined": "combinado", + "skipped": "omitir", + "input": "ENTRADA", + "output": "SALIDA", "tokenCount": "{count, number} tokens", "tokenShort": "tok", - "provider": "Provider", - "judgeModel": "Judge model", - "judgeModelPlaceholder": "e.g. claude-haiku", - "maxCostUsd": "USD cap", - "enterJudgeModel": "Enter a judge model", - "verifying": "Verifying…", - "verifyAll": "Verify all", - "spent": "spent ${spent} / ${cap}", - "capReached": "cap reached", - "loadAb": "Load A/B", - "engine": "Engine", - "savings": "Savings", - "retention": "Retention", - "outputTokensShort": "Output tokens", - "fidelity": "Fidelity", - "playTab": "Play", - "compareTab": "Compare", - "encoderComparison": "Encoder A/B — {count} array(s)", - "encoderWinner": "winner: {winner}", - "encoder": "encoder", + "provider": "Proveedor", + "judgeModel": "Modelo evaluador", + "judgeModelPlaceholder": "p. ej., claude-haiku", + "maxCostUsd": "Límite en USD", + "enterJudgeModel": "Introduce un modelo evaluador", + "verifying": "Verificando…", + "verifyAll": "Verificar todo", + "spent": "gastado ${spent} / ${cap}", + "capReached": "límite alcanzado", + "loadAb": "Cargar A/B", + "engine": "Motor", + "savings": "Ahorro", + "retention": "Retención", + "outputTokensShort": "Tokens de salida", + "fidelity": "Fidelidad", + "playTab": "Reproducir", + "compareTab": "Comparar", + "encoderComparison": "Codificador A/B — {count} matriz/matrices", + "encoderWinner": "ganador: {winner}", + "encoder": "codificador", "bytes": "bytes", "tokensCl100k": "tokens (cl100k)" }, "omniglyph": { - "preview": "Preview", + "preview": "Vista previa", "description": "Context-as-image compression. Renders the system prompt, tool documentation, and dense history as compact PNG pages that Claude Fable 5 reads instead of text. Image tokens are billed by dimensions rather than characters, so the converted block costs about 10× less. Direct Anthropic route only.", - "economicsTitle": "The economics", + "economicsTitle": "La economía", "economics": { - "fewerTokens": "fewer tokens on the converted block", - "savings": "end-to-end savings (measured)", - "imageTokens": "image tokens for a 1568×728 page (about 28k characters)", + "fewerTokens": "menos tokens en el bloque convertido", + "savings": "ahorro de extremo a extremo (medido)", + "imageTokens": "tokens de imagen para una página de 1568×728 (unos 28k caracteres)", "accuracy": "reading accuracy on Fable 5 (n=30)" }, - "beforeAfterTitle": "Before → after", - "blockSavings": "−{percent}% tokens on this block", - "realRender": "A real render of {characters, number} characters of dense tool documentation — not a mockup.", - "textTokens": "Text · ≈ {tokens, number} tokens", - "renderedTokens": "Rendered page · ≈ {tokens, number} tokens", - "renderedImageAlt": "Rendered dense page, {width}×{height}px", - "gatesTitle": "When it fires", - "gatesDescription": "Fail-closed: every gate must pass, or the request passes through untouched (each skip is recorded as skip:<reason>).", + "beforeAfterTitle": "Antes → después", + "blockSavings": "−{percent}% de tokens en este bloque", + "realRender": "Una representación real de {characters, number} caracteres de documentación técnica densa, no una maqueta.", + "textTokens": "Texto · ≈ {tokens, number} tokens", + "renderedTokens": "Página renderizada · ≈ {tokens, number} tokens", + "renderedImageAlt": "Página densa renderizada, {width}×{height}px", + "gatesTitle": "Cuándo se activa", + "gatesDescription": "Cierre seguro: todas las condiciones deben cumplirse; de lo contrario, la solicitud pasa sin modificaciones (cada omisión se registra como skip:<reason>).", "gates": { "model": { - "label": "Model", + "label": "Modelo", "pass": "claude-fable-5", "why": "Only Fable 5 reads dense pages at 100% accuracy (measured, n=30). GPT-5.5 and Gemini 2.5 Flash are blocked." }, "transport": { - "label": "Transport", + "label": "Transporte", "pass": "direct Anthropic", "why": "Aggregators resample images and destroy legibility — only the direct route is authoritative." }, "format": { - "label": "Format", + "label": "Formato", "pass": "native Claude", "why": "The body must use Claude format and must never put a system role inside messages." }, "profitable": { - "label": "Profitable", - "pass": "dense enough", - "why": "The exact 28px-patch cost gate decides per request; small or sparse text passes through untouched." + "label": "Rentable", + "pass": "suficientemente denso", + "why": "La condición exacta de coste por parches de 28px decide para cada solicitud; el texto breve o poco denso pasa sin modificaciones." } }, - "enableTitle": "Enable the engine", + "enableTitle": "Activar el motor", "enableDescription": "Runs last in the stack (after RTK/Caveman cleans the text, OmniGlyph converts the remainder to images) and also runs standalone through omniglyph mode. This is a preview and remains off by default until end-to-end validation is complete.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Perfil de compresión", + "profileDescription": "El perfil es un límite máximo, no mínimo: un perfil más estricto no puede flexibilizarse mediante una anulación por paso. Medido en este código base: con «seguro para código» o «equilibrado», una sesión que aún no ha acumulado historial no comprime nada, porque ambos elevan el umbral mínimo de caracteres y mantienen de forma nativa el prompt del sistema, los esquemas de herramientas y los resultados de las herramientas.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agresivo (predeterminado)", + "description": "La política medida en los recibos publicados. Convierte en imágenes el prompt del sistema, la documentación de herramientas y el historial denso." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Equilibrado", + "description": "Mantiene el estado activo de forma nativa y protege los últimos 8 turnos; solo contrae el historial cerrado más antiguo." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Seguro para código", + "description": "Mantiene de forma nativa la autoridad, los esquemas de herramientas y la salida activa de las herramientas, y protege los últimos 12 turnos. No comprime nada hasta que la sesión acumula historial." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Paso directo", + "description": "Enruta sin transformar. Se omite el motor y la solicitud se reenvía sin modificaciones." } }, - "profileAria": "Select the OmniGlyph compression profile", - "saved": "Saved.", - "saveFailed": "Could not save.", - "enableAria": "Enable the OmniGlyph engine", + "profileAria": "Seleccionar el perfil de compresión de OmniGlyph", + "saved": "Guardado.", + "saveFailed": "No se pudo guardar.", + "enableAria": "Activar el motor OmniGlyph", "title": "OmniGlyph" }, "embeddedServices": { - "title": "Embedded Services", + "title": "Servicios integrados", "description": "Local engines managed on demand — CLIProxyAPI, 9Router, Mux, and Bifrost. Accessible on loopback only.", - "stateRunning": "Running", - "stateStopped": "Stopped", - "stateStarting": "Starting", - "stateStopping": "Stopping", + "stateRunning": "En ejecución", + "stateStopped": "Detenido", + "stateStarting": "Iniciando", + "stateStopping": "Deteniendo", "stateError": "Error", - "stateNotInstalled": "Not installed", - "stateUnknown": "Unknown", - "port": "port {port}", - "externalBadge": "Externally managed", - "externalTitle": "External 9Router detected", - "externalDescription": "OmniRoute found 9Router at {host}:{port}. Its lifecycle, logs, updates, and service key remain managed by the external installation.", - "start": "Start", - "starting": "Starting…", - "stop": "Stop", - "stopping": "Stopping…", - "restart": "Restart", - "restarting": "Restarting…", - "update": "Update", - "updating": "Updating…", - "install": "Install", - "installing": "Installing…", - "autoStart": "Auto-start", - "autoStartDescription": "Launch {name} automatically when OmniRoute starts", - "apiKey": "API Key", - "apiKeyDescription": "Key used by OmniRoute to authenticate with {name}", - "keyRotated": "Key rotated — {name} restarted to apply the new key", - "keyRotateFailed": "Failed to rotate key", - "keyRevealFailed": "Failed to reveal key", - "keyRevealEmpty": "Reveal failed: key not returned", - "reveal": "Reveal", - "revealing": "Revealing…", - "hide": "Hide", - "rotateKey": "Rotate key", - "rotating": "Rotating…", - "keyAutoHide": "Key will be hidden automatically in 30 seconds.", - "revealTitle": "Reveal API Key", - "revealConfirm": "Revealing the API key will be logged in the audit trail. Continue?", - "cancel": "Cancel", - "install9Router": "Install 9Router", - "install9RouterDescription": "Downloads and installs 9Router via npm. Requires approximately 500 MB of disk space.", - "version": "Version", - "versionHint": "Enter “latest” or a specific version (for example, 1.2.3).", - "servicePort": "Port", - "servicePortHint": "OmniRoute and 9Router must use different ports. The default 9Router port is 20130.", - "installationFailed": "Installation failed (HTTP {status})", - "installationSucceeded": "9Router installed successfully. Starting up…", - "networkInstallFailed": "Network error — could not reach the install endpoint", - "availableModels": "Available Models", - "modelsLoading": "Loading…", - "modelsDiscovered": "{count, plural, one {# model discovered} other {# models discovered}}", - "modelsLoadFailed": "Failed to load models", - "refreshing": "Refreshing…", - "refreshNow": "Refresh now", - "noModels": "No models found. Select “Refresh now” to sync from the running service.", - "unavailable": "Unavailable", - "pageOf": "Page {page} of {total}", - "previous": "Previous", - "next": "Next", - "providerExposure": "Provider Exposure", - "providerExposureDescription": "Expose 9Router models as a routing target under the 9router/ prefix.", - "providerExposureLabel": "Expose as 9router/…", - "providerExposureHint": "When enabled, discovered models appear in provider selectors across OmniRoute.", - "providerExposureUpdateFailed": "Failed to update (HTTP {status})", - "providerExposureNetworkFailed": "Network error — could not update the provider exposure setting", - "webUi": "9Router Web UI", - "openNewTab": "Open in new tab", - "filterLogs": "Filter logs…", - "resume": "Resume", - "pause": "Pause", - "clear": "Clear", - "download": "Download", - "noLogs": "No log output yet.", - "logStreamFailed": "Unable to stream {name} logs. Check local access and service status.", - "fallbackRouting": "Fallback Routing", - "fallbackRoutingDescription": "Retry failed provider requests through CLIProxyAPI", - "enableFallback": "Enable fallback", - "cliproxyUrl": "CLIProxyAPI URL", - "fallbackCodes": "Fallback status codes (comma-separated)", - "invalidUrl": "Invalid URL — must start with http:// or https://", - "saved": "Saved", - "saveFailed": "Failed to save setting", - "modelMapping": "Model Mapping", - "modelMappingDescription": "Map OmniRoute model IDs to CLIProxyAPI model IDs (for example, \"gpt-4o\": \"openai-gpt-4o\")", - "modelMappingEditor": "Model mapping JSON editor", - "mappingSaved": "Mapping saved", - "mappingSaveFailed": "Failed to save mapping", - "mappingInvalidJson": "Invalid JSON.", - "mappingMustBeObject": "The mapping must be a JSON object, not an array or primitive value.", - "mappingValueMustBeString": "The value for key “{key}” must be a string.", - "save": "Save" + "stateNotInstalled": "No instalado", + "stateUnknown": "Desconocido", + "port": "puerto {port}", + "externalBadge": "Gestionado externamente", + "externalTitle": "Se detectó un 9Router externo", + "externalDescription": "OmniRoute encontró 9Router en {host}:{port}. Su ciclo de vida, registros, actualizaciones y clave de servicio siguen siendo gestionados por la instalación externa.", + "start": "Iniciar", + "starting": "Iniciando…", + "stop": "Detener", + "stopping": "Deteniendo…", + "restart": "Reiniciar", + "restarting": "Reiniciando…", + "update": "Actualizar", + "updating": "Actualizando…", + "install": "Instalar", + "installing": "Instalando…", + "autoStart": "Inicio automático", + "autoStartDescription": "Iniciar {name} automáticamente cuando se inicie OmniRoute", + "apiKey": "Clave de API", + "apiKeyDescription": "Clave utilizada por OmniRoute para autenticarse con {name}", + "keyRotated": "Clave rotada — {name} se reinició para aplicar la nueva clave", + "keyRotateFailed": "No se pudo rotar la clave", + "keyRevealFailed": "No se pudo mostrar la clave", + "keyRevealEmpty": "Error al mostrarla: no se devolvió la clave", + "reveal": "Mostrar", + "revealing": "Mostrando…", + "hide": "Ocultar", + "rotateKey": "Rotar clave", + "rotating": "Rotando…", + "keyAutoHide": "La clave se ocultará automáticamente en 30 segundos.", + "revealTitle": "Mostrar clave de API", + "revealConfirm": "La acción de mostrar la clave de API quedará registrada en el registro de auditoría. ¿Deseas continuar?", + "cancel": "Cancelar", + "install9Router": "Instalar 9Router", + "install9RouterDescription": "Descarga e instala 9Router mediante npm. Requiere aproximadamente 500 MB de espacio en disco.", + "version": "Versión", + "versionHint": "Introduce «latest» o una versión específica (por ejemplo, 1.2.3).", + "servicePort": "Puerto", + "servicePortHint": "OmniRoute y 9Router deben usar puertos diferentes. El puerto predeterminado de 9Router es 20130.", + "installationFailed": "Error de instalación (HTTP {status})", + "installationSucceeded": "9Router se ha instalado correctamente. Iniciando…", + "networkInstallFailed": "Error de red: no se pudo acceder al endpoint de instalación", + "availableModels": "Modelos disponibles", + "modelsLoading": "Cargando…", + "modelsDiscovered": "{count, plural, one {# modelo detectado} other {# modelos detectados}}", + "modelsLoadFailed": "No se pudieron cargar los modelos", + "refreshing": "Actualizando…", + "refreshNow": "Actualizar ahora", + "noModels": "No se encontraron modelos. Selecciona «Actualizar ahora» para sincronizarlos desde el servicio en ejecución.", + "unavailable": "No disponible", + "pageOf": "Página {page} de {total}", + "previous": "Anterior", + "next": "Siguiente", + "providerExposure": "Exposición del proveedor", + "providerExposureDescription": "Expón los modelos de 9Router como destino de enrutamiento con el prefijo 9router/.", + "providerExposureLabel": "Exponer como 9router/…", + "providerExposureHint": "Si se habilita, los modelos detectados aparecerán en los selectores de proveedores de OmniRoute.", + "providerExposureUpdateFailed": "Error de actualización (HTTP {status})", + "providerExposureNetworkFailed": "Error de red: no se pudo actualizar la configuración de exposición del proveedor", + "webUi": "Interfaz web de 9Router", + "openNewTab": "Abrir en una pestaña nueva", + "filterLogs": "Filtrar registros…", + "resume": "Reanudar", + "pause": "Pausar", + "clear": "Borrar", + "download": "Descargar", + "noLogs": "Aún no hay registros.", + "logStreamFailed": "No se pueden transmitir los registros de {name}. Comprueba el acceso local y el estado del servicio.", + "fallbackRouting": "Enrutamiento alternativo", + "fallbackRoutingDescription": "Reintentar las solicitudes fallidas del proveedor mediante CLIProxyAPI", + "enableFallback": "Habilitar enrutamiento alternativo", + "cliproxyUrl": "URL de CLIProxyAPI", + "fallbackCodes": "Códigos de estado para el enrutamiento alternativo (separados por comas)", + "invalidUrl": "URL no válida: debe comenzar por http:// o https://", + "saved": "Guardado", + "saveFailed": "No se pudo guardar la configuración", + "modelMapping": "Mapeo de modelos", + "modelMappingDescription": "Asigna los ID de modelo de OmniRoute a los ID de modelo de CLIProxyAPI (por ejemplo, \"gpt-4o\": \"openai-gpt-4o\")", + "modelMappingEditor": "Editor JSON de mapeo de modelos", + "mappingSaved": "Mapeo guardado", + "mappingSaveFailed": "No se pudo guardar el mapeo", + "mappingInvalidJson": "JSON no válido.", + "mappingMustBeObject": "El mapeo debe ser un objeto JSON, no un array ni un valor primitivo.", + "mappingValueMustBeString": "El valor de la clave “{key}” debe ser una cadena.", + "save": "Guardar" }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Compresión de mensajes basada en reglas, paquetes de idioma, analíticas y controles del modo de salida.", "advancedConfig": "Configuración avanzada", "advancedConfigDesc": "Ajustar el comportamiento de compresión", "aggressiveSettings": "Configuraciones agresivas", "aggressiveSettingsDesc": "Máxima compresión con posibles compensaciones de calidad", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Solicitudes", + "tokensSaved": "Tokens ahorrados", + "savingsPercent": "% de ahorro", + "avgLatency": "Latencia media", + "languagePacks": "Paquetes de idioma", + "languagePacksDesc": "Activa reglas de compresión para idiomas específicos.", "labelAutoTrigger": "Comprimir automáticamente cuando el contexto excede", "labelCompressionRate": "Fuerza de compresión", "labelMaxTokens": "Tokens de destino por mensaje", "labelMinLength": "Longitud mínima del mensaje", "labelMinSavings": "Tokens mínimos para ahorrar", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Activado", + "autoDetect": "Detectar idioma automáticamente", + "rulesCount": "{count} reglas", "inputCompressionTitle": "Compresión de entrada", "inputCompressionDesc": "Reescribe el historial de chat con palabras más cortas. Reduce los tokens de entrada en un ~50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", - "masterDisabledWarning": "The Token Saver master switch is OFF — these settings will not affect requests until you turn it on from Compression Settings or change it here.", + "analyticsTitle": "Analíticas de compresión", + "noAnalytics": "Aún no hay analíticas de compresión.", + "masterDisabledWarning": "El interruptor principal de Token Saver está DESACTIVADO; estos ajustes no afectarán a las solicitudes hasta que lo actives en Ajustes de compresión o lo cambies aquí.", "outputMode": "Modo de salida", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Modo de salida", "quickSettings": "Configuración rápida", "quickSettingsDesc": "Configuraciones básicas de compresión para comenzar", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Omisión automática por claridad", + "bypassConditions": "Condiciones de omisión", "bypassConditionsList": "seguridad, irreversible, aclaración, sensible al orden", "simpleMode": "Sencillo", "advancedMode": "Avanzado", @@ -8944,9 +8951,9 @@ "ultraSettings": "Configuración ultra", "ultraSettingsDesc": "Compresión semántica impulsada por SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Responde de forma concisa. Conserva los términos técnicos, el código, los errores, las URL y los identificadores.", + "full": "Responde de forma escueta y compacta. Conserva todo el contenido técnico.", + "ultra": "Responde de forma extremadamente escueta usando abreviaturas técnicas comunes. Conserva los símbolos exactos." } }, "translator": { @@ -9103,14 +9110,14 @@ "translationFailed": "Error de traducción: {error}", "pipelineDebugger": "Depurador de canalización", "translationPipeline": "Canal de traducción", - "loading": "Loading…", + "loading": "Cargando…", "compressionOriginal": "Original", - "compressionCompressed": "Compressed", - "compressionSaved": "Saved", - "compressionDuration": "Duration", - "pipelineStepsAria": "Pipeline steps", - "copyIntermediateJson": "Copy intermediate JSON", - "copyOutputJson": "Copy output JSON", + "compressionCompressed": "Comprimido", + "compressionSaved": "Ahorrado", + "compressionDuration": "Duración", + "pipelineStepsAria": "Pasos del procesamiento", + "copyIntermediateJson": "Copiar JSON intermedio", + "copyOutputJson": "Copiar JSON de salida", "pipelineVisualization": "Visualización de tuberías", "pipelineVisualizationHint": "Envíe un mensaje para ver cómo fluye su solicitud a través de detección → traducción → llamada al proveedor.", "chatTesterDescription": "Envíe mensajes en un formato de cliente específico e inspeccione cada paso del proceso de traducción.", @@ -9129,11 +9136,11 @@ "clientRequest": "Solicitud de cliente", "clientRequestDescription": "El cuerpo de la solicitud como lo enviaría su cliente.", "formatDetected": "Formato detectado", - "formatDetectedDescription": "OmniRoute auto-detects the API format from the request structure", + "formatDetectedDescription": "OmniRoute detecta automáticamente el formato de la API a partir de la estructura de la solicitud", "openaiIntermediate": "Intermedio OpenAI", - "openaiIntermediateDescription": "All formats are first normalized to OpenAI format (the universal bridge)", + "openaiIntermediateDescription": "Todos los formatos se normalizan primero al formato de OpenAI (el puente universal)", "providerFormat": "Formato del proveedor", - "providerFormatDescription": "OpenAI format is translated to the provider's native format", + "providerFormatDescription": "El formato de OpenAI se traduce al formato nativo del proveedor", "providerResponse": "Respuesta del proveedor", "providerResponseRawDescription": "La respuesta cruda de la API del proveedor", "providerResponseSseDescription": "El flujo SSE sin procesar de la API del proveedor", @@ -9176,87 +9183,87 @@ "scenarioVision": "Visión (comprensión de imágenes)", "scenarioSchemaCoercion": "Coerción de esquema (salida estructurada)", "techniques": "Técnicas:", - "friendlyTitle": "Translator", - "friendlySubtitle": "Use your existing app with any provider — without rewriting code.", - "conceptHeadline": "Your app speaks one API's \"language\". The Translator converts it to use another provider.", - "conceptDiagramAppLabel": "Your app", - "conceptDiagramSourceLabel": "Source format", - "conceptDiagramHubLabel": "OpenAI (hub)", - "conceptDiagramTargetLabel": "Target provider", - "conceptDiagramExampleApp": "e.g. Anthropic SDK", + "friendlyTitle": "Traductor", + "friendlySubtitle": "Usa tu aplicación actual con cualquier proveedor, sin reescribir el código.", + "conceptHeadline": "Tu aplicación habla el «idioma» de una API. El Traductor lo convierte para usar otro proveedor.", + "conceptDiagramAppLabel": "Tu aplicación", + "conceptDiagramSourceLabel": "Formato de origen", + "conceptDiagramHubLabel": "OpenAI (nodo central)", + "conceptDiagramTargetLabel": "Proveedor de destino", + "conceptDiagramExampleApp": "p. ej., Anthropic SDK", "conceptDiagramExampleSource": "claude", "conceptDiagramExampleTarget": "Gemini", - "conceptHowItWorksToggle": "How it works", - "conceptHowItWorksBody": "Your app sends a request in its own format. The Translator detects the format, converts it through OpenAI as an intermediate hub (or directly when a direct translator is available), sends it to the chosen provider, and returns the response converted back to your app's format.", - "tabTranslate": "Translate", - "tabMonitor": "Monitor", - "tabTranslateAriaLabel": "Go to the Translate tab", - "tabMonitorAriaLabel": "Go to the Monitor tab", - "simpleAppUsesLabel": "My app uses", - "simpleAppUsesHint": "The API format your app speaks (e.g. Anthropic SDK = claude).", - "simpleSendToLabel": "Send to", - "simpleSendToHint": "Where to actually send the request (a provider connected in OmniRoute).", - "simpleStartWithLabel": "Start with", - "simpleStartWithExamplePlaceholder": "Select a ready-made example", - "simpleStartWithCustomOption": "Paste your request (advanced)", - "simpleModeLabel": "Mode", - "simpleModePreview": "Preview translation only", - "simpleModeSend": "Send and see response", - "simpleAdvancedToggle": "Advanced", - "simpleInputPanelTitle": "Input", - "simpleInputPanelHint": "Free-text message or ready-made example", - "simpleResultPanelTitle": "Translation + Response", - "narratedDetected": "✓ Detected: {format}", - "narratedTranslating": "Translating to {target}...", - "narratedSending": "Sending to {target}...", - "narratedSuccess": "→ translated to {target} · response in {latency}ms", - "narratedError": "Failed: {reason}", - "narratedSeeTranslatedJson": "see translated JSON", - "narratedSeePipeline": "see pipeline", - "advancedSectionTitle": "Advanced", - "advancedSectionSubtitle": "Raw JSON, pipeline and technical tools. Everything here is the same as the old tabs — just reorganized.", - "advancedRawJsonTitle": "Raw JSON (auto-detect + Monaco)", - "advancedRawJsonSubtitle": "Paste a JSON request; the format is detected automatically.", - "advancedPipelineTitle": "OpenAI intermediate pipeline", - "advancedPipelineSubtitle": "Visualize each translation step (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", - "advancedStreamTransformSubtitle": "Converts Chat Completions SSE into Responses API.", - "advancedTestBenchTitle": "Test Bench (8 scenarios)", - "advancedTestBenchSubtitle": "Runs all scenarios and reports pass/fail + compatibility %.", - "advancedCompressionTitle": "Compression Preview", - "advancedCompressionSubtitle": "Estimate token savings across different compression modes.", - "monitorOriginHint": "Events generated by Translate or the main pipeline appear here in real time.", - "monitorEmptyCta": "Go to the Translate tab and send a request — it will appear here.", - "monitorOpenTranslateButton": "Go to Translate", - "pipelineStepClientRequest": "Client Request", - "pipelineStepClientRequestDesc": "Request received in client format", - "pipelineStepFormatDetected": "Format Detected", - "pipelineStepFormatDetectedDesc": "Auto-detected source format", - "pipelineStepOpenAIIntermediate": "OpenAI Intermediate", - "pipelineStepOpenAIIntermediateDesc": "Translated to OpenAI hub format", - "pipelineStepProviderFormat": "Provider Format", - "pipelineStepProviderFormatDesc": "Translated to provider target format", - "pipelineStepProviderResponse": "Provider Response", - "pipelineStepProviderResponseDesc": "Streaming response from provider", - "conceptDiagramArrow1": "speaks", - "conceptDiagramArrow2": "translates", - "conceptDiagramArrow3": "converts", + "conceptHowItWorksToggle": "Cómo funciona", + "conceptHowItWorksBody": "Tu aplicación envía una solicitud en su propio formato. El Traductor detecta el formato, lo convierte usando OpenAI como nodo central intermedio (o directamente cuando hay un traductor directo disponible), lo envía al proveedor elegido y devuelve la respuesta convertida de nuevo al formato de tu aplicación.", + "tabTranslate": "Traducir", + "tabMonitor": "Supervisar", + "tabTranslateAriaLabel": "Ir a la pestaña Traducir", + "tabMonitorAriaLabel": "Ir a la pestaña Supervisar", + "simpleAppUsesLabel": "Mi aplicación usa", + "simpleAppUsesHint": "El formato de API que usa tu aplicación (p. ej., Anthropic SDK = claude).", + "simpleSendToLabel": "Enviar a", + "simpleSendToHint": "Dónde enviar realmente la solicitud (un proveedor conectado en OmniRoute).", + "simpleStartWithLabel": "Empezar con", + "simpleStartWithExamplePlaceholder": "Selecciona un ejemplo listo para usar", + "simpleStartWithCustomOption": "Pega tu solicitud (avanzado)", + "simpleModeLabel": "Modo", + "simpleModePreview": "Solo previsualizar la traducción", + "simpleModeSend": "Enviar y ver la respuesta", + "simpleAdvancedToggle": "Avanzado", + "simpleInputPanelTitle": "Entrada", + "simpleInputPanelHint": "Mensaje de texto libre o ejemplo listo para usar", + "simpleResultPanelTitle": "Traducción + Respuesta", + "narratedDetected": "✓ Detectado: {format}", + "narratedTranslating": "Traduciendo a {target}...", + "narratedSending": "Enviando a {target}...", + "narratedSuccess": "→ traducido a {target} · respuesta en {latency} ms", + "narratedError": "Error: {reason}", + "narratedSeeTranslatedJson": "ver JSON traducido", + "narratedSeePipeline": "ver flujo de procesamiento", + "advancedSectionTitle": "Avanzado", + "advancedSectionSubtitle": "JSON sin procesar, canalización y herramientas técnicas. Todo aquí es igual que en las pestañas anteriores, solo que reorganizado.", + "advancedRawJsonTitle": "JSON sin procesar (detección automática + Monaco)", + "advancedRawJsonSubtitle": "Pega una solicitud JSON; el formato se detecta automáticamente.", + "advancedPipelineTitle": "Canalización intermedia de OpenAI", + "advancedPipelineSubtitle": "Visualiza cada paso de la traducción (modelo radial).", + "advancedStreamTransformTitle": "Transformador de flujo (Chat → Responses SSE)", + "advancedStreamTransformSubtitle": "Convierte Chat Completions SSE a Responses API.", + "advancedTestBenchTitle": "Banco de pruebas (8 escenarios)", + "advancedTestBenchSubtitle": "Ejecuta todos los escenarios e informa de aprobados/fallidos y del % de compatibilidad.", + "advancedCompressionTitle": "Vista previa de compresión", + "advancedCompressionSubtitle": "Calcula el ahorro de tokens en los distintos modos de compresión.", + "monitorOriginHint": "Los eventos generados por Translate o por la canalización principal aparecen aquí en tiempo real.", + "monitorEmptyCta": "Ve a la pestaña Translate y envía una solicitud; aparecerá aquí.", + "monitorOpenTranslateButton": "Ir a Translate", + "pipelineStepClientRequest": "Solicitud del cliente", + "pipelineStepClientRequestDesc": "Solicitud recibida en formato del cliente", + "pipelineStepFormatDetected": "Formato detectado", + "pipelineStepFormatDetectedDesc": "Formato de origen detectado automáticamente", + "pipelineStepOpenAIIntermediate": "Intermedio de OpenAI", + "pipelineStepOpenAIIntermediateDesc": "Traducido al formato central de OpenAI", + "pipelineStepProviderFormat": "Formato del proveedor", + "pipelineStepProviderFormatDesc": "Traducido al formato de destino del proveedor", + "pipelineStepProviderResponse": "Respuesta del proveedor", + "pipelineStepProviderResponseDesc": "Respuesta en streaming del proveedor", + "conceptDiagramArrow1": "utiliza", + "conceptDiagramArrow2": "traduce", + "conceptDiagramArrow3": "convierte", "conceptDiagramExampleHub": "OpenAI", - "conceptDiagramHubTooltip": "Intermediate hub used by the translator to convert between formats that don't have a direct mapping.", - "conceptDiagramSourceTooltip": "The API format your app speaks (e.g., Anthropic SDK = claude).", - "conceptDiagramTargetTooltip": "The provider where the request will actually be sent.", - "compressionEmptyHint": "Fill in the input field on the Translate tab (Simple Controls or Raw JSON) to enable the preview.", - "compressionModeLabel": "Compression mode", - "compressionPreviewButton": "Preview Compression", - "compressionPreviewing": "Previewing…", - "compressionPreviewFailed": "Compression preview failed", + "conceptDiagramHubTooltip": "Formato central intermedio que utiliza el traductor para convertir entre formatos que no tienen una correspondencia directa.", + "conceptDiagramSourceTooltip": "El formato de API que utiliza tu aplicación (p. ej., Anthropic SDK = claude).", + "conceptDiagramTargetTooltip": "El proveedor al que se enviará realmente la solicitud.", + "compressionEmptyHint": "Rellena el campo de entrada en la pestaña Translate (Simple Controls o Raw JSON) para activar la vista previa.", + "compressionModeLabel": "Modo de compresión", + "compressionPreviewButton": "Previsualizar compresión", + "compressionPreviewing": "Generando vista previa…", + "compressionPreviewFailed": "Error al generar la vista previa de compresión", "tokens": "tokens", - "pauseAutoRefresh": "Pause auto-refresh", - "resumeAutoRefresh": "Resume auto-refresh", - "live": "Live", - "copyInput": "Copy input", - "copyOutput": "Copy output", - "streamTransformFailed": "Failed to transform stream" + "pauseAutoRefresh": "Pausar actualización automática", + "resumeAutoRefresh": "Reanudar actualización automática", + "live": "En directo", + "copyInput": "Copiar entrada", + "copyOutput": "Copiar salida", + "streamTransformFailed": "No se pudo transformar el flujo" }, "usage": { "title": "Uso", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Restante", "kiloPassRenews": "Se renueva en {count} días", "kiloPassUsageLabel": "Uso de este mes", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Créditos de uso adicional", + "kimiExtraUsage": "Uso adicional", + "kimiExtraUsageEnabled": "Habilitado", + "kimiExtraUsageDisabled": "Deshabilitado", + "kimiExtraUsageFrozen": "Congelado", + "kimiExtraUsageUnavailable": "No disponible", + "kimiMonthlyUsed": "Usado este mes", + "kimiMonthlyLimit": "Límite mensual", + "kimiMonthlyLimitUnlimited": "Ilimitado", + "kimiAdditionalCredits": "Créditos adicionales", "loggerTab": "registrador", "proxyTab": "apoderado", "budgetManagement": "Gestión Presupuestaria", @@ -9324,34 +9331,34 @@ "circuitBreakers": "Disyuntores", "lockedIPs": "IP bloqueadas", "lockoutsAutoRefreshHint": "Bloqueos de límite de velocidad por modelo • Actualización automática 10 s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# bloqueado} other {# bloqueados}}", "timeLeft": "{time} izquierda", "howItWorks": "Cómo funciona", - "howItWorksSubtitle": "Learn how evaluations validate your LLM responses", + "howItWorksSubtitle": "Descubre cómo las evaluaciones validan las respuestas de tu LLM", "define": "Definir", - "defineStepDescription": "Create test cases with input prompts and expected output criteria using strategies like contains, regex, or exact match.", + "defineStepDescription": "Crea casos de prueba con prompts de entrada y criterios de salida esperados mediante estrategias como contiene, expresión regular o coincidencia exacta.", "run": "correr", "runStepDescription": "Execute test cases against your LLM endpoints through OmniRoute. Cada caso se envía como una solicitud API real.", "evaluate": "evaluar", - "evaluateStepDescription": "Responses are compared against expected criteria. See pass/fail for each case with latency metrics and detailed feedback.", + "evaluateStepDescription": "Las respuestas se comparan con los criterios esperados. Consulta el resultado de aprobado o fallido de cada caso, junto con las métricas de latencia y los comentarios detallados.", "evalsStrategyContainsLabel": "Contiene", "evalsStrategyExactLabel": "Coincidencia exacta", "evalsStrategyRegexLabel": "Expresión regular", "evalsStrategyCustomLabel": "Lógica personalizada", "evalsStrategyContainsDescription": "Comprueba si la salida del LLM contiene la subcadena esperada.", - "evalsStrategyExactDescription": "Checks if the LLM output exactly matches the expected value.", - "evalsStrategyRegexDescription": "Validates the LLM output against a regular expression pattern.", - "evalsStrategyCustomDescription": "Custom evaluation logic (configured via JSON).", - "historyColumnSuiteName": "Suite Name", - "historyColumnTarget": "Target", - "historyColumnPassRate": "Pass Rate", - "historyColumnAvgLatencyMs": "Avg Latency", - "historyColumnCreatedAt": "Executed", + "evalsStrategyExactDescription": "Comprueba si la salida del LLM coincide exactamente con el valor esperado.", + "evalsStrategyRegexDescription": "Valida la salida del LLM con un patrón de expresión regular.", + "evalsStrategyCustomDescription": "Lógica de evaluación personalizada (configurada mediante JSON).", + "historyColumnSuiteName": "Nombre de la suite", + "historyColumnTarget": "Objetivo", + "historyColumnPassRate": "Tasa de aprobación", + "historyColumnAvgLatencyMs": "Latencia media", + "historyColumnCreatedAt": "Ejecutada", "evalSuites": "Suites de evaluación", - "evalSuitesHint": "Click a suite to view test cases, then run to evaluate your LLM endpoints", + "evalSuitesHint": "Haz clic en una suite para ver los casos de prueba y, después, ejecútala para evaluar tus endpoints de LLM", "evalsLoading": "Cargando suites de evaluación...", "noEvalSuitesFound": "No se encontraron suites Eval", - "noEvalSuitesDescription": "Eval suites can be defined via the API or in code. They test model outputs against expected results using strategies like contains, regex, exact match, and custom functions.", + "noEvalSuitesDescription": "Las suites de evaluación se pueden definir mediante la API o en el código. Comparan las salidas del modelo con los resultados esperados usando estrategias como contiene, expresión regular, coincidencia exacta y funciones personalizadas.", "columnCase": "caso", "columnStatus": "Estado", "columnLatency": "Latencia", @@ -9359,7 +9366,7 @@ "columnModel": "modelo", "columnStrategy": "Estrategia", "columnExpected": "esperado", - "statsSuites": "Suites", + "statsSuites": "Conjuntos", "statsTestCases": "Casos de prueba", "statsModels": "Modelos", "statsCoverage": "Cobertura", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Modelos bajo prueba", "searchSuitesPlaceholder": "Conjuntos de búsqueda...", "passSuffix": "pasar", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# caso} other {# casos}}", "runEval": "Ejecutar evaluación", "runAllSuites": "Ejecutar todo", "runAllRunning": "Corriendo todo...", "runAllProgress": "Ejecutando {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# suite fallida} other {# suites fallidas}}", "runAllCompleted": "Ejecutó {suites} suites: {passed} pasó, {failed} falló", "runAllCompletedWithFailures": "Ejecutó {completed} suites; {failedSuites} no se pudo completar", "runningProgress": "Ejecutando {current}/{total}...", @@ -9423,20 +9430,20 @@ "providerLimits": "Límites del proveedor", "noProviders": "No hay proveedores conectados", "connectProvidersForQuota": "Conéctese con proveedores con OAuth para realizar un seguimiento de los límites y el uso de su cuota de API.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# cuenta} other {# cuentas}}", "filteredFromCount": "(filtrado de {count})", "autoRefresh": "Actualización automática", "refreshAll": "Actualizar todo", "loadingQuotas": "Cargando...", - "showMoreQuotas": "Show {count} more", - "showLessQuotas": "Show less", - "hideQuotaRow": "Hide this quota row", - "showQuotaRow": "Show this quota row", - "hiddenQuotaRowsLabel": "Hidden:", - "quotaVisibilityUpdateFailed": "Failed to update quota visibility", + "showMoreQuotas": "Mostrar {count} más", + "showLessQuotas": "Mostrar menos", + "hideQuotaRow": "Ocultar esta fila de cuota", + "showQuotaRow": "Mostrar esta fila de cuota", + "hiddenQuotaRowsLabel": "Oculto:", + "quotaVisibilityUpdateFailed": "No se pudo actualizar la visibilidad de la cuota", "account": "cuenta", "modelQuotas": "Cuotas modelo", - "lastUsed": "Last Refreshed", + "lastUsed": "Última actualización", "actions": "Acciones", "refreshQuota": "Actualizar cuota", "today": "hoy", @@ -9446,15 +9453,15 @@ "notApplicable": "N/A", "rawPlanWithValue": "Plan sin formato: {plan}", "noPlanFromProvider": "Sin plan del proveedor", - "tokenExpiresIn": "Token expires in {time}", - "tokenExpired": "Token expired", + "tokenExpiresIn": "El token caduca en {time}", + "tokenExpired": "Token caducado", "noQuotaData": "Sin datos de cuota", - "cardExpand": "Expand", - "cardCollapse": "Collapse", - "moreQuotas": "+{count} more", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "cardExpand": "Expandir", + "cardCollapse": "Contraer", + "moreQuotas": "+{count} más", + "ungrouped": "Sin agrupar", + "viewFlat": "Plano", + "viewByEnvironment": "Por entorno", "noQuotaDataAvailable": "No hay datos de cuota disponibles", "noAccountsForTierFilter": "No se encontraron cuentas para el filtro de niveles", "tierAll": "Todos", @@ -9465,46 +9472,46 @@ "tierPro": "profesional", "tierPlus": "Más", "tierFree": "Gratis", - "tierLite": "Lite", + "tierLite": "Ligero", "tierUnknown": "Desconocido", "statTotal": "Total", - "statCritical": "Critical", - "statAlert": "Alert", - "statHealthy": "Healthy", - "filterPurchaseTypeLabel": "Type", - "filterTierLabel": "Tier", - "purchaseAll": "All", - "purchaseOauthSub": "Subscription", - "purchaseOauthFree": "OAuth Free", - "purchaseApiKey": "API Key", - "creditsLabel": "Credits", - "creditBalanceHint": "Remaining balance", - "unlimitedLabel": "Unlimited", - "refreshing": "Refreshing", - "resetsIn": "Resets in", - "usdCost": "USD Cost", + "statCritical": "Crítico", + "statAlert": "Alerta", + "statHealthy": "Correcto", + "filterPurchaseTypeLabel": "Tipo", + "filterTierLabel": "Nivel", + "purchaseAll": "Todos", + "purchaseOauthSub": "Suscripción", + "purchaseOauthFree": "OAuth gratuito", + "purchaseApiKey": "Clave de API", + "creditsLabel": "Créditos", + "creditBalanceHint": "Saldo restante", + "unlimitedLabel": "Ilimitado", + "refreshing": "Actualizando", + "resetsIn": "Se restablece en", + "usdCost": "Coste en USD", "editCutoffs": "Editar límites", "forceRefresh": "Actualizar ahora", - "resetCreditsLabel": "Reset credits", - "redeemResetCredit": "Redeem reset", - "manageResetCredits": "View credits", - "viewResetCredits": "View reset credits", - "resetCreditsModalTitle": "Codex reset credits", - "resetCreditsModalExplainer": "Credits are ordered by expiration. Automatic redemption always uses the credit that expires first.", - "resetCreditsLoadFailed": "Failed to load reset credits", - "resetCreditsDetailsUnavailable": "Credit details are currently unavailable. Refresh and try again.", - "noResetCreditsAvailable": "No reset credits are available.", - "resetCreditDefaultTitle": "Full reset", - "resetCreditExpiresFirst": "Expires first", - "resetCreditExpiresAt": "Expires {date}", - "resetCreditNoExpiry": "No expiration date", - "redeemThisResetCredit": "Redeem", - "confirmRedeemResetCreditTitle": "Redeem this reset credit?", - "confirmRedeemResetCredit": "Redeeming immediately resets the eligible Codex usage windows and permanently consumes this credit.", - "confirmRedeemResetCreditButton": "Redeem credit", - "resetCreditRedeemed": "Reset redeemed", - "resetCreditRedeemFailed": "Failed to redeem reset credit", - "suiteBuilderSaveFailed": "Failed to save suite", + "resetCreditsLabel": "Créditos de restablecimiento", + "redeemResetCredit": "Canjear restablecimiento", + "manageResetCredits": "Ver créditos", + "viewResetCredits": "Ver créditos de restablecimiento", + "resetCreditsModalTitle": "Créditos de restablecimiento de Codex", + "resetCreditsModalExplainer": "Los créditos se ordenan por fecha de caducidad. El canje automático siempre utiliza primero el crédito que caduca antes.", + "resetCreditsLoadFailed": "No se pudieron cargar los créditos de restablecimiento", + "resetCreditsDetailsUnavailable": "Los detalles de los créditos no están disponibles en este momento. Actualiza la página e inténtalo de nuevo.", + "noResetCreditsAvailable": "No hay créditos de restablecimiento disponibles.", + "resetCreditDefaultTitle": "Restablecimiento completo", + "resetCreditExpiresFirst": "Caduca primero", + "resetCreditExpiresAt": "Caduca el {date}", + "resetCreditNoExpiry": "Sin fecha de caducidad", + "redeemThisResetCredit": "Canjear", + "confirmRedeemResetCreditTitle": "¿Canjear este crédito de restablecimiento?", + "confirmRedeemResetCredit": "Al canjearlo, se restablecen inmediatamente los periodos de uso de Codex elegibles y este crédito se consume de forma permanente.", + "confirmRedeemResetCreditButton": "Canjear crédito", + "resetCreditRedeemed": "Restablecimiento canjeado", + "resetCreditRedeemFailed": "No se pudo canjear el crédito de restablecimiento", + "suiteBuilderSaveFailed": "No se pudo guardar la suite", "clone": "clonar", "exportSuite": "Exportar", "importSuite": "Importar", @@ -9515,113 +9522,113 @@ "suiteImportInvalid": "JSON del conjunto de evaluación no válido", "suiteBuilderCloneSuffix": "copiar", "suiteBuilderImportedSuite": "Suite importada", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Cuadro de puntuación", + "evalApiKey": "Clave de API", + "scorecardPassRate": "Tasa de aprobación", + "targetTypeModel": "Modelo", + "actualOutputLabel": "Salida real", + "evalTargetHint": "Selecciona un modelo o una combinación para evaluar.", + "suiteBuilderDeleted": "Suite eliminada correctamente", + "suiteBuilderCaseCardHint": "Define el prompt de entrada y los criterios de salida esperados.", + "nextResetUtc": "Próximo restablecimiento (UTC)", + "scorecardHint": "Tasas de aprobación agregadas de todas las suites de evaluación.", + "suiteLatestRunsHint": "Ejecuciones de evaluación más recientes de esta suite.", + "saving": "Guardando", + "suiteBuilderCaseModelLabel": "Modelo (opcional)", + "evalControlsTitle": "Controles de evaluación", + "suiteBuilderEditTitle": "Editar suite de evaluación", + "suiteBuilderCaseStrategyLabel": "Estrategia de validación", + "notifySelectDifferentCompareTarget": "Selecciona un objetivo diferente para la comparación", + "recentRunsHint": "Se muestran las ejecuciones de evaluación más recientes. Haz clic en una ejecución para ver los resultados detallados.", + "evalCompareHint": "Opcionalmente, compara los resultados con un segundo objetivo.", + "suiteBuilderCaseInvalid": "Este caso tiene errores de validación. Corrígelos antes de guardar.", + "historyEmpty": "Aún no hay historial de evaluaciones", + "suiteBuilderUpdated": "Suite actualizada correctamente", + "resetInterval": "Intervalo de restablecimiento", + "suiteBuilderCreateTitle": "Crear suite de evaluación", + "activePeriodSpend": "Gasto del período activo", + "evalApiKeyHint": "Selecciona qué clave de API usar para las solicitudes de evaluación.", + "evalCompareOptional": "Comparar (opcional)", + "suiteBuilderDeleteFailed": "No se pudo eliminar la suite", + "suiteBuilderCaseSystemPromptPlaceholder": "Instrucciones opcionales del sistema...", + "scorecardCases": "Casos", + "runCompletedWithScore": "Evaluación completada — tasa de aprobación del {score}%", + "suiteBuilderCustomBadge": "Personalizado", + "targetSuiteDefaults": "Valores predeterminados de la suite", + "suiteBuilderDeleteConfirm": "¿Seguro que quieres eliminar esta suite? Esta acción no se puede deshacer.", + "suiteBuilderNameLabel": "Nombre de la suite", + "scorecardSuites": "Conjuntos", + "evalCompareTarget": "Comparar objetivo", + "suiteBuilderCaseModelPlaceholder": "p. ej., gpt-4o-mini", + "evalControlsHint": "Configura el objetivo de evaluación y la clave de API y, a continuación, ejecuta conjuntos de pruebas para validar la calidad del modelo.", + "recentRunsTitle": "Ejecuciones recientes", + "suiteBuilderCaseSystemPromptLabel": "Prompt del sistema", + "suiteBuilderCaseExpectedPlaceholder": "p. ej., def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "por ej. fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Pegue la respuesta esperada exacta", "suiteBuilderCaseExpectedPlaceholderRegex": "por ej. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Utilice una expresión regular de JavaScript sin barras diagonales.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", + "suiteBuilderNamePlaceholder": "p. ej., Conjunto de calidad de código", + "suiteBuilderAddCase": "Añadir caso", + "cancel": "Cancelar", + "evalTarget": "Objetivo", + "suiteBuilderCaseNameLabel": "Nombre del caso", + "weeklyLimitUsd": "Límite semanal (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "p. ej., Escribe una función de Fibonacci en Python", + "suiteBuilderNameRequired": "El nombre del conjunto es obligatorio", + "suiteBuilderCaseUserPromptLabel": "Prompt del usuario", + "daily": "Diario", "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderBuiltInBadge": "Integrado", + "suiteBuilderCaseCardTitle": "Caso de prueba", "suiteBuilderDuplicateCase": "Duplicar", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", + "weeklyLimitPlaceholder": "p. ej., 50.00", + "suiteBuilderCaseTagsHint": "Etiquetas separadas por comas para organizar los casos de prueba.", + "notifyEvalRunFailedWithReason": "Error en la evaluación: {reason}", + "weekly": "Semanal", + "runEvalRunning": "Ejecutando evaluación...", + "delete": "Eliminar", + "resetTimeUtc": "Hora de restablecimiento (UTC)", + "evalApiKeyAuto": "Automático (usar valor predeterminado)", + "suiteBuilderDescriptionPlaceholder": "Descripción opcional de lo que evalúa este conjunto...", + "targetComparisonTitle": "Comparación de objetivos", + "save": "Guardar", + "suiteBuilderCreated": "Conjunto creado correctamente", + "suiteLatestRuns": "Últimas ejecuciones", + "suiteBuilderCaseExpectedLabel": "Valor esperado", + "historyLatency": "Latencia", + "suiteBuilderCaseTagsPlaceholder": "p. ej., programación, python", + "targetTypeCombo": "Combinado", + "scorecardPassed": "Aprobado", + "suiteBuilderCaseTagsLabel": "Etiquetas", + "suiteBuilderNewSuite": "Nuevo conjunto", + "notifyEvalLoadFailed": "No se pudieron cargar los datos de evaluación", + "notConfigured": "Sin configurar", + "suiteBuilderCaseNamePlaceholder": "p. ej., prueba de Fibonacci en Python", + "intervalLabel": "Intervalo", + "suiteBuilderCreateAction": "Crear conjunto", + "suiteBuilderCasesHint": "Cada caso envía un prompt y valida la respuesta.", + "suiteBuilderUpdatedAt": "Actualizado", "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "suiteBuilderCasesTitle": "Casos de prueba", + "edit": "Editar", + "monthly": "Mensual", + "suiteBuilderCasesRequired": "Se requiere al menos un caso de prueba", + "weeklyLimitSummary": "Resumen del límite de presupuesto semanal", + "suiteBuilderDescriptionLabel": "Descripción", + "targetComparisonHint": "Comparación en paralelo de los resultados de evaluación entre objetivos.", + "compareCompletedWithScore": "Comparación completada — {score}% de aprobados", + "staleQuotaTooltip": "Error en la última actualización — se muestran los datos almacenados en caché", "quotaThresholdLabel": "Min restante", "quotaCutoffsColumnHelp": "Detenga las solicitudes cuando la cuota restante caiga a este porcentaje o menos.", "quotaCutoffsButtonDefault": "Predeterminado", "quotaCutoffsButtonHelp": "Edite los límites de cuota mínima restante para esta cuenta.", "quotaCutoffsButtonDisabled": "Aún no hay períodos de cuota disponibles para esta cuenta.", - "deactivateAccount": "Deactivate account (stop routing)", - "activateAccount": "Activate account (resume routing)", - "accountActivated": "Account activated", - "accountDeactivated": "Account deactivated", - "toggleActiveFailed": "Failed to update account status", + "deactivateAccount": "Desactivar cuenta (detener el enrutamiento)", + "activateAccount": "Activar cuenta (reanudar el enrutamiento)", + "accountActivated": "Cuenta activada", + "accountDeactivated": "Cuenta desactivada", + "toggleActiveFailed": "No se pudo actualizar el estado de la cuenta", "quotaCutoffsTitle": "Límites de cuota para {name} ({provider})", "quotaCutoffsExplainer": "Anule el porcentaje de cuota restante mínimo cuando esta cuenta deja de seleccionarse para cada ventana de cuota. Déjelo en blanco para heredar el valor predeterminado del proveedor.", "quotaCutoffsDefaultHint": "Min restante predeterminado: {default}%", @@ -9634,38 +9641,38 @@ "budgetKpiBlocked": "Bloqueado", "budgetKpiAtRisk": "En riesgo", "budgetKpiActiveKeys": "Claves activas", - "budgetPageTitle": "Budget", - "budgetPageDescription": "Set daily, weekly, and monthly spending limits for each API key.", - "budgetTemplateStorageHint": "{count, plural, one {# template} other {# templates}} · edit via localStorage:", - "budgetAboveLimitShort": "above limit ⚠", - "budgetOnTrackShort": "on track", - "budgetAtOrAboveWarning": "≥ warning threshold", - "budgetTemplates": "Templates", - "budgetSelectKeysFirst": "Select keys first to apply", - "budgetApplyToSelected": "Apply to {count, plural, one {# selected key} other {# selected keys}}", - "budgetSelectedTemplateHint": "{count, plural, one {# selected} other {# selected}} · click a template to apply", - "budgetTemplateMonthlyAmount": "${amount}/month", - "budgetTemplateDailyAmount": "${amount}/day", - "budgetNoKeysSelected": "No keys selected", - "budgetTemplateApplied": "Applied \"{template}\" to {count, plural, one {# key} other {# keys}}", - "budgetTemplateApplyFailed": "Failed to apply template", + "budgetPageTitle": "Presupuesto", + "budgetPageDescription": "Establece límites de gasto diarios, semanales y mensuales para cada clave de API.", + "budgetTemplateStorageHint": "{count, plural, one {# plantilla} other {# plantillas}} · editar mediante localStorage:", + "budgetAboveLimitShort": "por encima del límite ⚠", + "budgetOnTrackShort": "dentro de lo previsto", + "budgetAtOrAboveWarning": "≥ umbral de advertencia", + "budgetTemplates": "Plantillas", + "budgetSelectKeysFirst": "Selecciona primero las claves para aplicar", + "budgetApplyToSelected": "Aplicar a {count, plural, one {# clave seleccionada} other {# claves seleccionadas}}", + "budgetSelectedTemplateHint": "{count, plural, one {# seleccionado} other {# seleccionados}} · haz clic en una plantilla para aplicarla", + "budgetTemplateMonthlyAmount": "${amount}/mes", + "budgetTemplateDailyAmount": "${amount}/día", + "budgetNoKeysSelected": "No hay claves seleccionadas", + "budgetTemplateApplied": "Se aplicó «{template}» a {count, plural, one {# clave} other {# claves}}", + "budgetTemplateApplyFailed": "No se pudo aplicar la plantilla", "budgetTemplateNames": { - "tpl-prod": "Production", - "tpl-dev": "Development", + "tpl-prod": "Producción", + "tpl-dev": "Desarrollo", "tpl-ci": "CI" }, "budgetStatus": { - "all": "All", - "blocked": "Blocked", - "alerting": "Alerting", - "warning": "Warning", - "safe": "Safe", - "no-limit": "No limit" + "all": "Todos", + "blocked": "Bloqueado", + "alerting": "En alerta", + "warning": "Advertencia", + "safe": "Seguro", + "no-limit": "Sin límite" }, - "budgetColumnKey": "Key", - "budgetColumnToday": "Today", - "budgetColumnMonth": "Month", - "budgetColumnStatus": "Status", + "budgetColumnKey": "Clave", + "budgetColumnToday": "Hoy", + "budgetColumnMonth": "Mes", + "budgetColumnStatus": "Estado", "budgetSearchKeysPlaceholder": "Claves de búsqueda...", "budgetSortPctUsed": "Ordenar: % usado ↓", "budgetSortTodayDollar": "Ordenar: Hoy $ ↓", @@ -9674,23 +9681,23 @@ "budgetColDailyLim": "límite diario", "budgetColMonthlyLim": "límite mensual", "budgetColUsedPct": "% usado", - "percentUsed": "{pct}% used", + "percentUsed": "{pct}% utilizado", "budgetLoading": "Cargando…", "budgetNoKeysMatch": "Ninguna clave coincide con los filtros", "budgetLinearExtrapolation": "extrapolación lineal", "budgetThisMonthSoFar": "Este mes hasta ahora", "budgetProjectedEndOfMonth": "Fin de mes proyectado", "budgetByProvider": "por proveedor", - "budgetProjection": "Projection", - "budgetAboveMonthlyLimit": "⚠ above {limit}/month", - "budgetCostBreakdown30d": "Cost breakdown (30 days)", - "budgetLimits": "Limits", - "budgetResetDaily": "Daily", - "budgetResetWeekly": "Weekly", - "budgetResetMonthly": "Monthly", - "budgetNextReset": "Next reset", - "budgetHardCapComingSoon": "Hard-cap policy and email alerts are coming soon", - "unknownProvider": "Unknown provider", + "budgetProjection": "Proyección", + "budgetAboveMonthlyLimit": "⚠ por encima de {limit}/mes", + "budgetCostBreakdown30d": "Desglose de costes (30 días)", + "budgetLimits": "Límites", + "budgetResetDaily": "Diario", + "budgetResetWeekly": "Semanal", + "budgetResetMonthly": "Mensual", + "budgetNextReset": "Próximo restablecimiento", + "budgetHardCapComingSoon": "La política de límite máximo y las alertas por correo electrónico estarán disponibles próximamente", + "unknownProvider": "Proveedor desconocido", "budgetDailyDollar": "Diariamente $", "budgetWeeklyDollar": "Semanal $", "budgetMonthlyDollar": "$ Mensual", @@ -9698,10 +9705,10 @@ "quotaAlerts": "Alertas de cuota", "quotaTableRefreshing": "⟳Refrescante...", "noSpendLast30Days": "Sin gastos en los últimos 30 días", - "updatedShort": "Updated", - "lastRefreshed": "Last refreshed", - "providerQuota": "Provider Quota", - "providerQuotaHomeHint": "Live status across connected accounts" + "updatedShort": "Actualizado", + "lastRefreshed": "Última actualización", + "providerQuota": "Cuota del proveedor", + "providerQuotaHomeHint": "Estado en tiempo real de las cuentas conectadas" }, "modals": { "waitingAuth": "Esperando autorización", @@ -9862,20 +9869,20 @@ "restartServerWithNewPassword": "Reinicia el servidor; usará la nueva contraseña", "backToLogin": "Volver a iniciar sesión", "forgotPassword": "¿Olvidaste tu contraseña?", - "continueWithOidc": "Continue with OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "continueWithOidc": "Continuar con OIDC", + "defaultPasswordHint": "Contraseña predeterminada: CHANGEME (a menos que se haya configurado INITIAL_PASSWORD)", "Authorization": "Autorización", "Content-Disposition": "Disposición de contenido", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "Esperando autorización...", + "waitingForGoogleAuthorization": "Esperando autorización de Google...", + "waitingForOpenAIAuthorization": "Esperando autorización de OpenAI...", + "waitingForAntigravityAuthorization": "Esperando autorización de Antigravity...", + "waitingForQoderAuthorization": "Esperando autorización de Qoder...", + "exchangingCodeForTokens": "Canjeando el código por tokens...", + "nodeIncompatibleTitle": "Versión de Node.js incompatible", + "nodeIncompatibleDesc": "Estás ejecutando Node.js {version}, que no cumple la política de entornos de ejecución seguros compatibles con OmniRoute. Usa una versión LTS 20.x o 22.x de Node.js con parches.", + "nodeIncompatibleFixLabel": "Solución: instala una versión LTS 22 de Node.js con parches", + "nodeIncompatibleHint": "OmniRoute requiere Node.js 22.22.2+ (22.x LTS) o 24.0.0+ (24.x LTS). Se recomienda Node 24 LTS.", "resetViaAppDataTitle": "Restablecer a través de los datos de la aplicación", "resetViaAppDataDescription": "Elimina el archivo de configuración del directorio de datos de la aplicación para restablecer tu contraseña:", "quitDesktopApp": "Salir de la aplicación de escritorio OmniRoute por completo", @@ -10033,8 +10040,8 @@ "clientCompatibility": "Compatibilidad del cliente", "protocolsToc": "Protocolos", "apiReference": "Referencia de API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Referencia de la API de administración", + "managementApiDescription": "Endpoints de automatización para el registro de proxies, las asignaciones de ámbito y la migración de proxies heredados.", "method": "Método", "path": "Camino", "notes": "Notas", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Instale OmniRoute como una aplicación web progresiva en Android, iOS y navegadores de escritorio.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Ejecuta OmniRoute sin interfaz gráfica en Android mediante Termux. Accede al panel desde el navegador de tu móvil.", "featureRoutingTitle": "Enrutamiento multiproveedor", "featureRoutingText": "Enrute solicitudes a más de 30 proveedores de IA a través de un único punto final compatible con OpenAI. Admite API de chat, respuestas, audio e imágenes.", "featureCombosTitle": "Combos y equilibrio", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Reescribir el asistente para clientes sin /v1.", "endpointRewriteResponsesNote": "Reescriba el asistente para respuestas sin /v1.", "endpointRewriteModelsNote": "Reescriba el asistente para el descubrimiento de modelos sin /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Lista los elementos guardados en el registro de proxies (admite paginación).", + "mgmtProxiesCreateNote": "Crea un elemento de proxy reutilizable en el registro.", + "mgmtProxiesHealthNote": "Obtén métricas de estado de las últimas 24 h o de período móvil para cada proxy guardado a partir de los registros de proxy.", + "mgmtProxiesBulkAssignNote": "Asigna o elimina un proxy para varios IDs de ámbito en una sola solicitud.", + "mgmtAssignmentsListNote": "Lista las asignaciones de proxy por ámbito, scope_id o proxy_id.", + "mgmtAssignmentsUpdateNote": "Asigna o elimina el proxy para el ámbito global, de proveedor, de cuenta o combinado.", + "mgmtLegacyMigrationNote": "Importa mapas proxyConfig heredados en las asignaciones del registro.", "modelPrefixesDescriptionStart": "Utilice el prefijo del proveedor antes del nombre del modelo para enrutar a un proveedor específico. Ejemplo:", "modelPrefixesDescriptionEnd": "rutas al copiloto de GitHub.", "provider": "Proveedor", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute es un software de código abierto. Usted es libre de inspeccionarlo, modificarlo y distribuirlo según los términos de su licencia." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "Agentes de CLI", + "description": "Descubre los agentes de CLI instalados en tu sistema. Añade agentes personalizados para su detección automática.", + "refresh": "Actualizar", + "installed": "Instalado", + "notFound": "No encontrado", + "builtIn": "Integrado", + "custom": "Personalizado", + "remove": "Eliminar", + "addCustomAgent": "Añadir agente personalizado", + "addCustomAgentDesc": "Registra cualquier herramienta de CLI para detectarla. Se analizará automáticamente al actualizar.", + "agentName": "Nombre del agente", + "binaryName": "Nombre del binario", + "versionCommand": "Comando de versión", + "spawnArgs": "Argumentos de ejecución", + "addAgent": "Añadir agente", + "scanning": "Analizando el sistema en busca de agentes de CLI...", + "opencodeIntegration": "Integración con OpenCode", + "opencodeDetected": "opencode {version} detectado", + "opencodeDesc": "Genera un {configFile} listo para usar con la URL base de OmniRoute y todos los modelos disponibles; colócalo en la raíz de tu proyecto y ejecuta {command}.", + "downloadConfig": "Descargar {file}", + "downloaded": "¡Descargado!", + "setupGuideTitle": "Guía de configuración", + "openCliTools": "Abrir herramientas de CLI", + "setupGuideDetectCliTitle": "Detectar CLI instaladas", + "setupGuideDetectCliDesc": "Haz clic en Actualizar después de instalar o actualizar una CLI para que OmniRoute vuelva a analizar los binarios y las versiones.", + "setupGuideCustomAgentTitle": "Registrar binario personalizado", + "setupGuideCustomAgentDesc": "Usa Añadir agente personalizado cuando tu CLI no esté en la lista integrada. Proporciona el nombre del binario y el comando de versión.", + "setupGuideCommandMissingTitle": "Solucionar 'command not found'", + "setupGuideCommandMissingDesc": "Asegúrate de que el comando de la CLI exista en PATH, abre una nueva sesión de terminal y vuelve a ejecutar Actualizar.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10413,7 +10420,7 @@ "howToUseStep1": "Haz clic en {copyUrl} en la habilidad que deseas que tu agente conozca.", "howToUseStep2": "En tu agente de IA (Claude, Cursor, Cline…), dile:", "howToUseStep2Code": "Utiliza la habilidad en [url-pegada]", - "howToUseStep3": "The agent fetches the SKILL.md and learns OmniRoute's API or CLI — no manual docs needed." + "howToUseStep3": "El agente obtiene SKILL.md y aprende a usar la API o la CLI de OmniRoute, sin necesidad de consultar documentación manualmente." }, "cloudAgents": { "title": "Agentes de la nube", @@ -10437,23 +10444,23 @@ "tasksTab": "Tareas", "agentsTab": "Agentes", "settingsTab": "Configuración", - "agentsEnabled": "Enabled", - "agentsDisabled": "Disabled", - "filterAllProviders": "All Providers", - "filterAll": "All", - "autoRefreshing": "Auto-refreshing", - "viewPR": "View Pull Request", - "connected": "Connected", - "notConnected": "Not connected", - "configure": "Configure", - "settingsTitle": "Cloud Agent Settings", - "settingsDesc": "Configure local preferences for cloud agents.", - "settingEnableAgents": "Enable cloud agents", - "settingEnableAgentsDesc": "Allow OmniRoute to orchestrate autonomous coding agents.", - "settingAutoPR": "Auto-create PR", - "settingAutoPRDesc": "When a task is completed, automatically create a Pull Request with the changes.", - "settingRequireApproval": "Require plan approval", - "settingRequireApprovalDesc": "Always wait for manual approval before an agent executes a proposed plan.", + "agentsEnabled": "Habilitado", + "agentsDisabled": "Deshabilitado", + "filterAllProviders": "Todos los proveedores", + "filterAll": "Todos", + "autoRefreshing": "Actualización automática", + "viewPR": "Ver solicitud de cambios", + "connected": "Conectado", + "notConnected": "No conectado", + "configure": "Configurar", + "settingsTitle": "Configuración de agentes en la nube", + "settingsDesc": "Configura las preferencias locales de los agentes en la nube.", + "settingEnableAgents": "Habilitar agentes en la nube", + "settingEnableAgentsDesc": "Permite que OmniRoute coordine agentes de programación autónomos.", + "settingAutoPR": "Crear PR automáticamente", + "settingAutoPRDesc": "Cuando se complete una tarea, crea automáticamente una solicitud de cambios con las modificaciones.", + "settingRequireApproval": "Requerir aprobación del plan", + "settingRequireApprovalDesc": "Espera siempre la aprobación manual antes de que un agente ejecute un plan propuesto.", "untitledTask": "Tarea sin título", "created": "Creado", "conversation": "Conversación", @@ -10476,27 +10483,27 @@ "repositoryUrl": "URL del repositorio", "branch": "Sucursal", "agentDescriptions": { - "jules": "Google's autonomous coding agent", - "devin": "Cognition's AI software engineer", - "codexCloud": "OpenAI's cloud-based coding agent", - "cursorCloud": "Cursor's Background / Cloud Agents (official API key)" + "jules": "Agente de programación autónomo de Google", + "devin": "Ingeniero de software de IA de Cognition", + "codexCloud": "Agente de programación en la nube de OpenAI", + "cursorCloud": "Agentes en segundo plano / en la nube de Cursor (clave de API oficial)" }, "activityTypes": { "plan": "Plan", - "command": "Command", - "code_change": "Code change", - "message": "Message", + "command": "Comando", + "code_change": "Cambio de código", + "message": "Mensaje", "error": "Error", - "completion": "Completion" + "completion": "Finalización" } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "Chat sencillo", + "streaming": "Transmisión", + "system-prompt": "Prompt del sistema", + "thinking": "Razonamiento", + "tool-calling": "Llamada a herramientas", + "multi-turn": "Múltiples turnos", "vision": "Visión", "schema-coercion": "Coerción de esquema" }, @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Gestión de caché", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Actualizar", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Entradas de memoria", + "memoryEntriesSub": "LRU en memoria", + "dbEntries": "Entradas de la base de datos", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", + "cacheHits": "Aciertos de caché", + "cacheHitsSub": "de {total} en total", + "tokensSaved": "Tokens ahorrados", + "tokensSavedSub": "Estimación basada en los aciertos", + "hitRate": "Tasa de aciertos", + "performance": "Rendimiento de la caché", + "autoRefresh": "Se actualiza automáticamente cada {seconds}s", + "hits": "Aciertos", + "misses": "Fallos", "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "behavior": "Comportamiento de la caché", + "behaviorDeterministic": "Solo se almacenan en caché las solicitudes sin streaming con temperature=0.", + "behaviorBypass": "Omite la caché con el encabezado {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "TTL predeterminado: 30 minutos. Configúralo mediante {envVar}.", + "idempotency": "Capa de idempotencia", + "activeDedupKeys": "Claves de deduplicación activas", + "dedupWindow": "Ventana de deduplicación", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "No se pudo borrar la caché.", + "unavailable": "Caché no disponible", + "unavailableDesc": "No se pudieron obtener las estadísticas de la caché. Asegúrate de que el servidor esté en ejecución.", "loadingCacheAria": "Cargando caché", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Caché de prompts (del proveedor)", + "semanticCache": "Caché semántica", + "promptCacheSectionDesc": "Muestra la actividad de almacenamiento en caché de prompts del proveedor a partir del historial de uso, para que puedas ver dónde está activo el control de caché y cuánto se reutiliza la entrada.", + "promptTrendDesc": "Volumen de solicitudes por hora, cobertura de caché y volumen de lecturas de caché durante las últimas 24 horas.", + "cachedRequests": "Solicitudes almacenadas en caché", + "cachedRequests24h": "Solicitudes almacenadas en caché (24 h)", + "cacheHitRate": "Tasa de aciertos de caché", + "cacheRate": "Tasa de caché", + "cacheRateDesc": "del total de solicitudes", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Métricas de la caché de prompts", + "withCacheControl": "Con control de caché", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Proporción de reutilización de caché", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Ahorro de costes estimado", + "lastUpdated": "Última actualización", + "hoursTracked": "horas registradas", + "busiestHour": "Hora de mayor actividad", + "peakCacheRate": "Tasa máxima de caché", + "trendHour": "Hora", + "activityVolume": "Actividad", + "requestsShort": "solicitudes", + "inputShort": "Entrada", + "cachedShort": "En caché", + "writeShort": "Escritura", + "resetting": "Restableciendo...", + "resetMetrics": "Restablecer métricas", + "byProvider": "Desglose por proveedor", + "providerCacheRateDesc": "Cada proveedor muestra el total de tokens de entrada, los tokens leídos de la caché y los tokens escritos en la caché para que puedas verificar la proporción de reutilización con respecto a los totales sin procesar.", "provider": "Provider", - "requests": "Requests", + "requests": "Solicitudes", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Tendencia de la caché (24 h)", + "peakCached": "Máximo en caché", + "cached": "En caché", + "overview": "Resumen", "tableProvider": "Proveedor", "tableModel": "Modelo", "performanceTitle": "Rendimiento", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "La caché de respuestas determinista propia de OmniRoute. Cuando está activada, las solicitudes repetidas sin streaming y con temperature=0 pueden atenderse localmente sin contactar con el proveedor ascendente.", + "semanticCacheDisabledDesc": "La caché semántica está desactivada. OmniRoute omitirá la reutilización local de respuestas hasta que vuelvas a activarla en Configuración.", + "semanticEntriesDesc": "Registros persistentes de la caché semántica almacenados actualmente en SQLite. La actividad de la caché de prompts del proveedor no aparece aquí.", + "searchEntries": "Buscar entradas...", + "search": "Buscar", + "loading": "Cargando...", + "entriesLoadError": "No se pudieron cargar las entradas de la caché semántica.", + "noEntries": "No se encontraron entradas en la caché", + "noPromptCacheData": "Aún no se ha registrado ninguna actividad de la caché de prompts del proveedor.", + "noTrendData": "No se ha registrado ninguna actividad de la caché de prompts durante las últimas 24 horas.", + "signature": "Firma", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Creado", + "expires": "Caduca", + "actions": "Acciones", + "deduplicatedRequests": "Solicitudes deduplicadas", + "savedCalls": "Llamadas a la API ahorradas", + "totalProcessed": "Total de solicitudes procesadas", + "disabled": "Desactivada", + "totalRequests": "Total de solicitudes", "reasoningCache": "Repetición de razonamiento", "reasoningCacheDesc": "Preserva el pensamiento de modelo para flujos de llamada de herramientas de múltiples vueltas", "reasoningEntries": "Entradas activas", @@ -10665,11 +10672,11 @@ "retry": "Reintentar", "reasoningAvgChars": "Caracteres promedio", "tableShare": "Cuota", - "justNow": "just now", - "minutesAgo": "{minutes}m ago", - "hoursAgo": "{hours}h ago", - "daysAgo": "{days}d ago", - "entries": "Entries" + "justNow": "ahora mismo", + "minutesAgo": "hace {minutes} min", + "hoursAgo": "hace {hours} h", + "daysAgo": "hace {days} d", + "entries": "Entradas" }, "proxyConfigModal": { "levelGlobal": "Mundial", @@ -10678,7 +10685,7 @@ "levelKey": "clave", "levelDirect": "Directo (sin proxy)", "titleGlobal": "Configuración de proxy global", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "Proxy {level} — {label}", "loading": "Cargando configuración de proxy...", "inheritingFrom": "Heredando de", "source": "Fuente", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "Pega una clave API de Devin existente de una sesión autenticada de Devin. La disponibilidad de exportación de claves y los pasos varían según la versión y la cuenta de Devin.", "devinPasteDescription": "Proporcione su WINDSURF_API_KEY (obtenido a través de `devin auth login`, o a través del comando \"Windsurf: Provide Auth Token\" en el IDE de Windsurf).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json de Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Clave API / Token", "saving": "Guardando…", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Conectar cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Iniciar sesión con Cursor", + "tabImport": "Importar token", + "loginDescription": "Abre el inicio de sesión de Cursor en el navegador. Funciona en Docker: autorízalo en el navegador del host y luego vuelve aquí.", + "loginWithCursor": "Iniciar sesión con Cursor", + "startingLogin": "Iniciando…", + "waitingApproval": "Esperando la aprobación del inicio de sesión de Cursor…", + "openUrlHint": "Si el navegador no se abrió:", + "openLoginLink": "Abrir página de inicio de sesión", + "cancelLogin": "Cancelar inicio de sesión", "autoDetecting": "Tokens de detección automática...", "readingFromCursor": "Lectura desde Cursor IDE o cursor-agent", "tokensAutoDetected": "¡Los tokens se detectaron automáticamente con éxito desde Cursor IDE!", "cursorNotDetected": "IDE del cursor no detectado. Pegue manualmente su token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "¿Lo ejecutas en Docker? Es preferible iniciar sesión con Cursor. La importación automática desde el IDE y cursor-agent normalmente no están disponibles dentro del contenedor. Consulta docs/providers/CURSOR-DOCKER.md.", "accessToken": "Token de acceso", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Token de actualización", + "refreshTokenPlaceholder": "Opcional: permite actualizar automáticamente el token", "required": "*", "accessTokenPlaceholder": "El token de acceso se completará automáticamente...", "machineId": "ID de máquina", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Error de detección automática de tokens", "errorEnterToken": "Por favor ingrese el token de acceso", "errorImportFailed": "Importación fallida", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "No se pudo iniciar el inicio de sesión de Cursor", + "errorLoginPoll": "Error al iniciar sesión en Cursor", + "errorLoginTimeout": "Se agotó el tiempo de espera para iniciar sesión en Cursor; inténtalo de nuevo" }, "pricingModal": { "title": "Configuración de precios", @@ -10839,13 +10846,13 @@ "errorResetFailed": "No se pudo restablecer el precio" }, "proxyRegistry": { - "selectAllProxies": "Select all proxies", - "selectProxy": "Select {name}", + "selectAllProxies": "Seleccionar todos los proxies", + "selectProxy": "Seleccionar {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Importar configuración heredada", + "bulkAssign": "Asignar en masa", + "addProxy": "Añadir proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,18 +10861,18 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Probar", + "edit": "Editar", + "delete": "Eliminar", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", "labelType": "Tipo", - "labelFamily": "IP family", - "familyAuto": "Auto (dual-stack)", - "familyIpv4": "IPv4 only", - "familyIpv6": "IPv6 only", - "familyHint": "Egress address family. Auto keeps dual-stack; IPv4/IPv6 pin this proxy to that family (prevents a v4 leak under an IPv6-only proxy).", + "labelFamily": "Familia de IP", + "familyAuto": "Automática (pila dual)", + "familyIpv4": "Solo IPv4", + "familyIpv6": "Solo IPv6", + "familyHint": "Familia de direcciones de salida. La opción Automática mantiene la pila dual; IPv4/IPv6 fija este proxy a esa familia (evita una fuga de IPv4 al usar un proxy exclusivo de IPv6).", "labelHost": "Anfitrión", "labelPort": "Puerto", "labelUsername": "Nombre de usuario", @@ -10891,7 +10898,7 @@ "scopeGlobal": "global", "scopeProvider": "proveedor", "scopeAccount": "cuenta", - "scopeCombo": "combo", + "scopeCombo": "combinado", "bulkImportErrorMissingName": "Falta NOMBRE", "bulkImportErrorMissingHost": "Anfitrión faltante", "bulkImportErrorInvalidPort": "PUERTO no válido (debe ser 1-65535)", @@ -10906,21 +10913,21 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Error", "successRate": "{rate}% de éxito", "avgLatency": "{latency}ms promedio", "assignmentsCount": "{count} tareas", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", - "repair": "Repair", - "relayAuthMissing": "auth missing", - "relayRepairTooltip": "Recover relay auth in place. If the token is unrecoverable (e.g. after a STORAGE_ENCRYPTION_KEY rotation), redeploy the relay instead.", - "relayRepairRedeployRequired": "Relay auth is unrecoverable — redeploy the relay to write a fresh token.", - "relayRepairFailed": "Relay repair failed", - "relayRepairError": "repair failed", - "relayProbeSummary": "Relay probes: {alive}/{tested} alive", + "repair": "Reparar", + "relayAuthMissing": "falta autenticación", + "relayRepairTooltip": "Recupera la autenticación del relé sin reemplazarlo. Si el token no se puede recuperar (p. ej., después de rotar STORAGE_ENCRYPTION_KEY), vuelve a desplegar el relé.", + "relayRepairRedeployRequired": "La autenticación del relé no se puede recuperar; vuelve a desplegarlo para generar un token nuevo.", + "relayRepairFailed": "Error al reparar el relé", + "relayRepairError": "error de reparación", + "relayProbeSummary": "Comprobaciones del relé: {alive}/{tested} operativos", "bulkImport": "Importación masiva", "bulkImportTitle": "Proxies de importación masiva", "bulkImportDescription": "Pegue perfiles de proxy utilizando el formato delimitado por barras verticales. Un proxy por línea. Se actualizarán los servidores proxy existentes (mismo host + puerto).", @@ -10937,245 +10944,245 @@ "bulkImportPreview": "Vista previa", "clearAssignment": "(asignación clara)", "bulkProxyAssignment": "Asignación de proxy masiva", - "testAll": "Test All", - "errorTestFailed": "Failed to test proxies", - "batchSelectedCount": "{count} selected", - "batchDeleteSelected": "Delete {count} selected", - "batchActivateSelected": "Enable {count} selected", - "testPassed": "✓ OK", - "close": "Close", - "managePool": "Manage Pool", - "poolTitle": "Proxy Pool & Rotation", - "poolDescription": "Attach multiple proxies to a scope and rotate egress IPs across them. A scope with a single proxy behaves exactly like a plain assignment.", - "poolScopeIdLabel": "Scope ID", - "poolScopeIdPlaceholder": "provider id / connection id / combo id", - "poolScopeIdRequired": "A scope ID is required for provider, account, or combo scope.", - "poolLoad": "Load Pool", - "poolLoadFailed": "Failed to load the proxy pool", - "poolStrategyLabel": "Rotation strategy", - "poolStrategyHint": "round-robin cycles members in order; random picks uniformly; sticky holds one member for a window; latency-optimized picks the fastest based on logs.", - "poolStrategyFailed": "Failed to update the rotation strategy", - "strategyRoundRobin": "Round-robin", - "strategyRandom": "Random", - "strategySticky": "Sticky", - "strategyLatency": "Latency-optimized", - "poolMembersLabel": "Pool members ({count})", - "poolNoMembers": "No proxies in this pool yet.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", - "poolRemove": "Remove", - "poolRemoveFailed": "Failed to remove the proxy from the pool", - "poolAddLabel": "Add a proxy", - "poolAddMember": "Add", - "poolAddFailed": "Failed to add the proxy to the pool", - "poolSelectProxy": "Select a proxy…", - "poolSaveFailed": "Failed to save pool assignment" + "testAll": "Probar todos", + "errorTestFailed": "No se pudieron probar los proxies", + "batchSelectedCount": "{count} seleccionados", + "batchDeleteSelected": "Eliminar {count} seleccionados", + "batchActivateSelected": "Habilitar {count} seleccionados", + "testPassed": "✓ Correcto", + "close": "Cerrar", + "managePool": "Gestionar grupo", + "poolTitle": "Grupo de proxies y rotación", + "poolDescription": "Asocia varios proxies a un ámbito y rota las IP de salida entre ellos. Un ámbito con un solo proxy se comporta exactamente igual que una asignación simple.", + "poolScopeIdLabel": "ID del ámbito", + "poolScopeIdPlaceholder": "ID del proveedor / ID de la conexión / ID del combo", + "poolScopeIdRequired": "Se requiere un ID de ámbito para un ámbito de proveedor, cuenta o combo.", + "poolLoad": "Cargar grupo", + "poolLoadFailed": "No se pudo cargar el grupo de proxies", + "poolStrategyLabel": "Estrategia de rotación", + "poolStrategyHint": "La rotación cíclica recorre los miembros en orden; la aleatoria elige de manera uniforme; la persistente mantiene un miembro durante un intervalo; la optimizada por latencia elige el más rápido según los registros.", + "poolStrategyFailed": "No se pudo actualizar la estrategia de rotación", + "strategyRoundRobin": "Cíclica", + "strategyRandom": "Aleatoria", + "strategySticky": "Persistente", + "strategyLatency": "Optimizada por latencia", + "poolMembersLabel": "Miembros del grupo ({count})", + "poolNoMembers": "Todavía no hay proxies en este grupo.", + "poolEgressObservation": "{exits, plural, one {# salida} other {# salidas}} usadas por {connections, plural, one {# conexión} other {# conexiones}} · hasta {max} en una salida · últimas {hours} h", + "poolEgressObservationEmpty": "No se observó tráfico en las últimas {hours} h", + "poolEgressObservationHint": "Calculado a partir del registro del proxy durante el intervalo: las direcciones IP de salida distintas observadas para los miembros de este grupo y las conexiones de OmniRoute que las utilizaron. «En una salida» se refiere al intervalo, no al mismo tiempo. El bloqueo 429 por IP solo pausa las conexiones de la misma familia de proveedores.", + "poolRemove": "Eliminar", + "poolRemoveFailed": "No se pudo eliminar el proxy del grupo", + "poolAddLabel": "Añadir un proxy", + "poolAddMember": "Añadir", + "poolAddFailed": "No se pudo añadir el proxy al grupo", + "poolSelectProxy": "Selecciona un proxy…", + "poolSaveFailed": "No se pudo guardar la asignación del grupo" }, "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Punto de conexión", + "provider": "Proveedor", + "model": "Modelo", "accountKey": "Account Key", "autoAccounts": "Automático ({count} cuentas)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Enviar", + "cancel": "Cancelar", + "audioFile": "Archivo de audio", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Borrar todo", + "request": "Solicitud", + "response": "Respuesta", + "transcription": "Transcripción", + "copy": "Copiar", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "{count} imágenes generadas", "generatedImage": "Imagen generada {index}", - "save": "Save", + "save": "Guardar", "endpointOptions": { "chat": "Chat", - "responses": "Responses", - "completions": "Completions", + "responses": "Respuestas", + "completions": "Finalizaciones", "images": "Images", "embeddings": "Embeddings", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", - "moderations": "Moderations", - "rerank": "Rerank", + "moderations": "Moderaciones", + "rerank": "Reordenar", "search": "Search", - "webFetch": "Web fetch" + "webFetch": "Obtención web" }, "conversationalChat": "Chat conversacional", "clearChat": "Borrar chat", "typeMessagePlaceholder": "Escriba un mensaje... (Mayús+Entrar para una nueva línea)", "tabChat": "Chat", - "tabCompare": "Compare", + "tabCompare": "Comparar", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Crear", + "configPane": "Configuración", + "systemPrompt": "Prompt del sistema", + "systemPromptPlaceholder": "Eres un asistente útil.", + "modelPlaceholder": "p. ej., openai/gpt-4o", + "endpointLabel": "Punto de conexión", + "parametersLabel": "Parámetros", + "collapseConfig": "Contraer panel de configuración", + "expandConfig": "Expandir panel de configuración", + "temperature": "Temperatura", + "maxTokens": "Máximo de tokens", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", - "reasoningLabel": "Reasoning", - "thinking": "Thinking", - "effort": "Effort", - "effortDefault": "Default", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", - "setModelInConfigFirst": "Set a model in the Config pane first.", - "improvePromptFailed": "Improve prompt failed.", - "improvePromptAria": "Improve prompt using AI", - "confirmImprovePrompt": "Confirm improve prompt", - "improvePromptDescription": "This will send your current system prompt to to generate an improved version.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", - "exportShort": "Export", - "noStateToExport": "No playground state available to export.", - "closeExportModal": "Close export modal", - "close": "Close", - "exportRealKeyWarning": "Security warning: export blocked — a real API key was detected in the output. Please reset your API key and try again.", - "placeholderHintPrefix": "Replace", - "placeholderHintSuffix": "with your actual API key, or set it as an environment variable.", - "copyLangCode": "Copy {language} code", - "loadingPresets": "Loading…", - "loadPresetPlaceholder": "Load preset…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", - "noModel": "No model", - "statusLabel": "Status: {status}", + "presencePenalty": "Penalización por presencia", + "frequencyPenalty": "Penalización por frecuencia", + "reasoningLabel": "Razonamiento", + "thinking": "Pensamiento", + "effort": "Esfuerzo", + "effortDefault": "Predeterminado", + "seedPlaceholder": "Aleatorio (dejar vacío)", + "presetsLabel": "Ajustes preestablecidos", + "loadPreset": "Cargar ajuste preestablecido", + "savePreset": "Guardar preajuste", + "noPresets": "No hay preajustes", + "presetNamePlaceholder": "Nombre del preajuste", + "savingPreset": "Guardando…", + "nameRequired": "El nombre es obligatorio", + "failedToSavePreset": "No se pudo guardar el preajuste", + "improvePrompt": "Mejorar prompt", + "improvingPrompt": "Mejorando…", + "improvePromptTitle": "Mejora tu prompt con IA", + "setModelFirst": "Configura primero un modelo", + "setModelInConfigFirst": "Configura primero un modelo en el panel Config.", + "improvePromptFailed": "No se pudo mejorar el prompt.", + "improvePromptAria": "Mejorar el prompt con IA", + "confirmImprovePrompt": "Confirmar mejora del prompt", + "improvePromptDescription": "Esto enviará tu prompt actual del sistema a para generar una versión mejorada.", + "improveQuotaWarning": "Esto consumirá cuota del modelo configurado en Config.", + "improveConfirm": "Mejorar", + "exportCode": "Exportar código", + "exportCodeTitle": "Exportar código", + "exportShort": "Exportar", + "noStateToExport": "No hay ningún estado del playground disponible para exportar.", + "closeExportModal": "Cerrar ventana de exportación", + "close": "Cerrar", + "exportRealKeyWarning": "Advertencia de seguridad: exportación bloqueada; se ha detectado una clave de API real en la salida. Restablece tu clave de API e inténtalo de nuevo.", + "placeholderHintPrefix": "Reemplaza", + "placeholderHintSuffix": "por tu clave de API real o configúrala como variable de entorno.", + "copyLangCode": "Copiar código {language}", + "loadingPresets": "Cargando…", + "loadPresetPlaceholder": "Cargar preajuste…", + "copyCode": "Copiar", + "copiedCode": "¡Copiado!", + "addModel": "+ Añadir modelo", + "runAll": "Ejecutar todos", + "cancelAll": "Cancelar todos", + "maxColumnsReached": "Máximo de {max} columnas", + "modelPlaceholderCompare": "Modelo (Cmd+K)…", + "noModel": "Sin modelo", + "statusLabel": "Estado: {status}", "status": { - "idle": "idle", - "streaming": "streaming", - "done": "done", + "idle": "inactivo", + "streaming": "transmitiendo", + "done": "listo", "error": "error" }, - "cancelStream": "Cancel stream", - "removeColumn": "Remove column", - "removeModelColumn": "Remove column for {model}", - "readyToRun": "Ready to run.", + "cancelStream": "Cancelar transmisión", + "removeColumn": "Eliminar columna", + "removeModelColumn": "Eliminar columna de {model}", + "readyToRun": "Listo para ejecutar.", "errorLabel": "Error", - "unknownError": "Unknown error occurred.", - "waitingForResponse": "Waiting for response…", + "unknownError": "Se produjo un error desconocido.", + "waitingForResponse": "Esperando respuesta…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", + "metricsDisclaimer": "estimación del lado del cliente", "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", - "ttftTitle": "Time to first token (client-side estimate)", - "tpsTitle": "Tokens per second (client-side estimate)", - "tokenCountsTitle": "Prompt tokens ↑ / Completion tokens ↓", - "estimatedCostTitle": "Estimated cost (not guaranteed accurate)", - "toolsLabel": "Tools", - "toolsCount": "Tools ({count})", - "addTool": "Add tool", - "editTool": "Edit tool {name}", - "removeTool": "Remove tool {name}", - "toolNamePlaceholder": "Function name", - "toolNameRequiredPlaceholder": "Function name *", - "toolDescPlaceholder": "Description (optional)", - "toolParamsLabel": "Parameters (JSON schema)", - "toolParamsJsonSchema": "JSON schema for parameters", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", - "jsonMode": "JSON mode", - "jsonModeDescription": "Forces response_format: json_schema", - "schemaName": "Schema name", - "jsonSchema": "JSON schema", - "jsonSchemaEditor": "JSON schema editor", - "schemaValidated": "Schema validated", - "validateSchema": "Validate schema", - "seed": "Seed", - "stopSequences": "Stop sequences", - "stopSequencesPlaceholder": "e.g. \"\\n\\n\" or \"END\"", - "autoProvider": "Auto", + "costLabel": "Coste", + "costEstimated": "(estimado)", + "ttftTitle": "Tiempo hasta el primer token (estimación del lado del cliente)", + "tpsTitle": "Tokens por segundo (estimación del lado del cliente)", + "tokenCountsTitle": "Tokens del prompt ↑ / Tokens de finalización ↓", + "estimatedCostTitle": "Coste estimado (no se garantiza su exactitud)", + "toolsLabel": "Herramientas", + "toolsCount": "Herramientas ({count})", + "addTool": "Añadir herramienta", + "editTool": "Editar herramienta {name}", + "removeTool": "Eliminar herramienta {name}", + "toolNamePlaceholder": "Nombre de la función", + "toolNameRequiredPlaceholder": "Nombre de la función *", + "toolDescPlaceholder": "Descripción (opcional)", + "toolParamsLabel": "Parámetros (esquema JSON)", + "toolParamsJsonSchema": "Esquema JSON para los parámetros", + "toolParamsInvalid": "Los parámetros deben ser un JSON válido", + "structuredOutputLabel": "Salida estructurada", + "enableJsonMode": "Activar el modo JSON", + "disableJsonMode": "Desactivar el modo JSON", + "invalidJson": "JSON no válido", + "jsonMode": "Modo JSON", + "jsonModeDescription": "Fuerza response_format: json_schema", + "schemaName": "Nombre del esquema", + "jsonSchema": "Esquema JSON", + "jsonSchemaEditor": "Editor de esquemas JSON", + "schemaValidated": "Esquema validado", + "validateSchema": "Validar esquema", + "seed": "Semilla", + "stopSequences": "Secuencias de detención", + "stopSequencesPlaceholder": "p. ej., \"\\n\\n\" o \"END\"", + "autoProvider": "Automático", "httpError": "Error {status}", - "requestCancelled": "Request cancelled", - "networkError": "Network error", - "regenerateLastResponse": "Regenerate last response", - "regenerate": "Regenerate", - "startConversation": "Start a conversation — type a message below", + "requestCancelled": "Solicitud cancelada", + "networkError": "Error de red", + "regenerateLastResponse": "Regenerar la última respuesta", + "regenerate": "Regenerar", + "startConversation": "Inicia una conversación: escribe un mensaje abajo", "role": { - "system": "system", - "user": "user", - "assistant": "assistant" + "system": "sistema", + "user": "usuario", + "assistant": "asistente" }, - "generating": "Generating…", - "typeMessageWithShortcut": "Type a message... (Enter to send, Shift+Enter for newline)", - "stop": "Stop", - "noResponseBody": "No response body", - "comparePromptPlaceholder": "Enter your prompt here…", - "userPrompt": "User prompt", - "cancelAllStreams": "Cancel all streams", - "runAllColumns": "Run all columns", - "newColumnModelName": "Model name for new column", - "addColumn": "Add column", - "addModelColumn": "Add model column", - "columnCount": "{count}/{max} columns", - "addModelToCompare": "Add a model column to compare", - "modelsSimultaneously": "Up to {max} models simultaneously", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "generating": "Generando…", + "typeMessageWithShortcut": "Escribe un mensaje... (Intro para enviar, Mayús+Intro para una nueva línea)", + "stop": "Detener", + "noResponseBody": "No hay cuerpo de respuesta", + "comparePromptPlaceholder": "Escribe aquí tu prompt…", + "userPrompt": "Prompt del usuario", + "cancelAllStreams": "Cancelar todos los flujos", + "runAllColumns": "Ejecutar todas las columnas", + "newColumnModelName": "Nombre del modelo para la nueva columna", + "addColumn": "Añadir columna", + "addModelColumn": "Añadir columna de modelo", + "columnCount": "{count}/{max} columnas", + "addModelToCompare": "Añade una columna de modelo para comparar", + "modelsSimultaneously": "Hasta {max} modelos simultáneamente", + "running": "Ejecutando…", + "runLabel": "Ejecutar", + "enterToolResult": "Introduce el resultado de la herramienta…", "build": { - "step1Label": "What to test?", - "step2Label": "Configure", - "step3Label": "Run", - "step1Title": "What do you want to test?", - "step1Subtitle": "Choose the capability you want to explore in this session.", - "step2Title": "Configure", - "step2Subtitle": "Set up the tools or JSON schema that will be used in the request.", - "step3Title": "Run", - "modeToolsTitle": "Tools", - "modeToolsDesc": "Test function calling — define tools and see how the model invokes them.", + "step1Label": "¿Qué quieres probar?", + "step2Label": "Configurar", + "step3Label": "Ejecutar", + "step1Title": "¿Qué quieres probar?", + "step1Subtitle": "Elige la capacidad que quieres explorar en esta sesión.", + "step2Title": "Configurar", + "step2Subtitle": "Configura las herramientas o el esquema JSON que se utilizarán en la solicitud.", + "step3Title": "Ejecutar", + "modeToolsTitle": "Herramientas", + "modeToolsDesc": "Prueba las llamadas a funciones: define herramientas y observa cómo las invoca el modelo.", "modeJsonTitle": "JSON", - "modeJsonDesc": "Test structured output — constrain the response to a JSON schema.", - "modeBothTitle": "Tools + JSON", - "modeBothDesc": "Combine function calling and structured output in a single request.", - "backButton": "Back", - "nextButton": "Next", - "runButton": "Run", - "promptPlaceholder": "Enter your message… (Enter to send, Shift+Enter for newline)" + "modeJsonDesc": "Prueba la salida estructurada: restringe la respuesta a un esquema JSON.", + "modeBothTitle": "Herramientas + JSON", + "modeBothDesc": "Combina las llamadas a funciones y la salida estructurada en una sola solicitud.", + "backButton": "Atrás", + "nextButton": "Siguiente", + "runButton": "Ejecutar", + "promptPlaceholder": "Escribe tu mensaje… (Intro para enviar, Mayús+Intro para una nueva línea)" } }, "miniPlayground": { @@ -11184,141 +11191,141 @@ "model": "Modelo", "voice": "Voz", "speed": "Velocidad", - "input": "Input", + "input": "Entrada", "url": "URL", - "format": "Format", - "depth": "Depth", - "copyCurl": "Copy cURL", - "copied": "Copied!", - "run": "Run", - "running": "Running...", + "format": "Formato", + "depth": "Profundidad", + "copyCurl": "Copiar cURL", + "copied": "¡Copiado!", + "run": "Ejecutar", + "running": "Ejecutando...", "loading": "Cargando...", "retry": "Reintentar", - "response": "Response", - "tunnel": "Tunnel", - "send": "Send", - "selectKey": "Select key", - "testLabel": "Test", - "expandTest": "Expand test", - "collapseTest": "Collapse test", - "revealKey": "Reveal key", - "hideKey": "Hide key", - "download": "Download", - "play": "Play", - "query": "Query", - "numResults": "Max results", - "prompt": "Prompt", - "size": "Size", - "duration": "Duration", - "question": "Question", - "audioFile": "Audio file", - "fileTooLarge25Mb": "The file is too large. Maximum size: 25 MB.", - "selectAudioFirst": "Select an audio file first.", - "speechToText": "Speech to Text", - "chooseFile": "Choose file", - "audioFormats25Mb": "MP3, WAV, M4A, OGG or FLAC · Maximum 25 MB", - "musicSample": "A calm ambient track with warm piano and soft strings", - "noAudioUrl": "The response did not include an audio URL: {response}", - "music": "Music", - "embeddingSample": "OmniRoute routes AI requests across multiple providers.", - "embedding": "Embedding", - "imageSample": "A futuristic city at sunset, cinematic lighting", - "image": "Image", - "ttsSample": "Hello from OmniRoute. This is a text-to-speech test.", - "textToSpeech": "Text to Speech", - "videoSample": "A paper airplane flying over a futuristic city", - "video": "Video", - "webFetch": "Web Fetch", - "webSearchSample": "What is OmniRoute?", - "webSearch": "Web Search", - "documentUrl": "Document URL", - "browserAudioUnsupported": "Your browser does not support audio.", - "browserVideoUnsupported": "Your browser does not support video.", - "searchResultFallback": "Result {number}", - "noKeysFound": "No API keys found. Add one in the Keys section.", - "exampleLabel": "Example", + "response": "Respuesta", + "tunnel": "Túnel", + "send": "Enviar", + "selectKey": "Seleccionar clave", + "testLabel": "Probar", + "expandTest": "Expandir prueba", + "collapseTest": "Contraer prueba", + "revealKey": "Mostrar clave", + "hideKey": "Ocultar clave", + "download": "Descargar", + "play": "Reproducir", + "query": "Consulta", + "numResults": "Resultados máximos", + "prompt": "Instrucción", + "size": "Tamaño", + "duration": "Duración", + "question": "Pregunta", + "audioFile": "Archivo de audio", + "fileTooLarge25Mb": "El archivo es demasiado grande. Tamaño máximo: 25 MB.", + "selectAudioFirst": "Selecciona primero un archivo de audio.", + "speechToText": "Voz a texto", + "chooseFile": "Elegir archivo", + "audioFormats25Mb": "MP3, WAV, M4A, OGG o FLAC · Máximo 25 MB", + "musicSample": "Una pista ambiental tranquila con piano cálido y cuerdas suaves", + "noAudioUrl": "La respuesta no incluyó una URL de audio: {response}", + "music": "Música", + "embeddingSample": "OmniRoute distribuye las solicitudes de IA entre varios proveedores.", + "embedding": "Vectorización", + "imageSample": "Una ciudad futurista al atardecer, iluminación cinematográfica", + "image": "Imagen", + "ttsSample": "Hola desde OmniRoute. Esta es una prueba de texto a voz.", + "textToSpeech": "Texto a voz", + "videoSample": "Un avión de papel volando sobre una ciudad futurista", + "video": "Vídeo", + "webFetch": "Obtención web", + "webSearchSample": "¿Qué es OmniRoute?", + "webSearch": "Búsqueda web", + "documentUrl": "URL del documento", + "browserAudioUnsupported": "Tu navegador no admite audio.", + "browserVideoUnsupported": "Tu navegador no admite vídeo.", + "searchResultFallback": "Resultado {number}", + "noKeysFound": "No se encontraron claves de API. Añade una en la sección Claves.", + "exampleLabel": "Ejemplo", "latency": "{ms}ms", - "statsLine": "{ms}ms · {tokensIn} in / {tokensOut} out tokens", - "defaultKey": "(default)", - "clear": "Clear", - "emptyConversation": "Send a message to start the conversation", - "sendHint": "Shift+Enter for newline · Enter to send", - "you": "You", - "assistant": "Assistant", + "statsLine": "{ms}ms · {tokensIn} tokens de entrada / {tokensOut} de salida", + "defaultKey": "(predeterminado)", + "clear": "Borrar", + "emptyConversation": "Envía un mensaje para iniciar la conversación", + "sendHint": "Mayús+Enter para una nueva línea · Enter para enviar", + "you": "Tú", + "assistant": "Asistente", "errorLabel": "Error", - "requestFailed": "Request failed", - "stop": "Stop" + "requestFailed": "La solicitud falló", + "stop": "Detener" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", + "recording": "Grabando", + "paused": "En pausa", + "pipelineLogsOn": "Registros del pipeline activados", + "pipelineLogsOff": "Registros del pipeline desactivados", + "updatingPipelineLogs": "Actualizando los registros del pipeline...", + "updatePipelineFailed": "No se pudo actualizar el registro del pipeline", + "capturePipeline": "Capturar las cargas útiles del pipeline para nuevas solicitudes", + "searchPlaceholder": "Buscar modelos, proveedores, cuentas, claves de API, combinaciones...", + "allProviders": "Todos los proveedores", + "allModels": "Todos los modelos", + "allAccounts": "Todas las cuentas", + "allApiKeys": "Todas las claves API", "total": "Total", - "ok": "Success", + "ok": "Éxito", "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", + "combo": "Combinado", + "keys": "Claves", + "shown": "Mostrados", + "sortNewest": "Más recientes", + "sortOldest": "Más antiguos", "sortTokensDesc": "Tokens ↓", "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortDurationDesc": "Duración ↓", + "sortDurationAsc": "Duración ↑", + "sortStatusDesc": "Estado ↓", + "sortStatusAsc": "Estado ↑", + "sortModelAsc": "Modelo A-Z", + "sortModelDesc": "Modelo Z-A", + "sortLogs": "Ordenar registros", + "refresh": "Actualizar", + "columnsLabel": "Columnas", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "ACTIVO", + "semantic": "Semántica", + "upstream": "Proveedor de origen", + "semanticCacheHit": "Acierto de caché semántica (servido por OmniRoute)", + "upstreamResponse": "Respuesta del proveedor de origen", + "noApiKey": "Sin clave API", + "requestedRoutedTitle": "Solicitado: {requested}; enrutado como: {routed}", "statusFilters": { - "all": "All", + "all": "Todos", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Éxito", + "combo": "Combinado" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", + "status": "Estado", + "cacheSource": "Origen de la caché", + "model": "Modelo", + "requested": "Solicitado", + "provider": "Proveedor", + "protocol": "Protocolo de solicitud", + "account": "Cuenta", + "apiKey": "Clave de API", + "combo": "Combinado", "tokens": "Tokens", "compressed": "Compresión", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Duración", + "time": "Hora", + "conversation": "Conversación", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", - "loadMore": "Load More", - "loadingMore": "Loading more...", + "loadingLogs": "Cargando registros...", + "noLogs": "Aún no hay registros. Realiza algunas llamadas a la API para verlas aquí.", + "noMatchingLogs": "No hay registros que coincidan con los filtros actuales.", + "callLogsInfo": "Los registros de llamadas también se guardan como archivos JSON en {dataDir} y se rotan según {retentionDays} y {maxEntries}.", + "loadMore": "Cargar más", + "loadingMore": "Cargando más...", "correlationId": "ID de correlación", "group": { "showAllRows": "Mostrar todas las filas", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "El artefacto de carga detallada ya no está disponible para esta entrada de registro.", "payloadCorrupt": "No se pudo analizar el artefacto de carga detallada.", - "notAvailable": "N/A", + "notAvailable": "N/D", "semanticCache": "Semántico (OmniRoute)", "upstreamCache": "Río Arriba (Proveedor)", "ariaLabel": "Detalles del registro de solicitudes", @@ -11399,7 +11406,7 @@ "rotated": "Rotado: {initial} -> {final}", "apiKey": "Clave de API", "noApiKey": "Sin clave de API", - "combo": "Combo", + "combo": "Combinado", "error": "Error", "unblockAll": "Desbloquear todo", "cleared": "Borrado", @@ -11417,59 +11424,59 @@ "correlationId": "ID de correlación", "correlationIdValue": "ID de correlación: {id}", "detailedPayloadInfo": "Habilita primero el registro detallado si deseas la vista de carga útil de cliente/proveedor de cuatro etapas para nuevas solicitudes.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Copiar todo", + "copiedAll": "Todo copiado" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", + "filterAll": "Todos", + "filterErrors": "Errores", + "filterSuccess": "Correctos", + "filterTimeout": "Tiempo de espera agotado", + "colStatus": "Estado", "colProxy": "Proxy", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", + "colType": "Tipo", + "colLevel": "Nivel", + "colProvider": "Proveedor", + "colTarget": "Destino", + "colLatency": "Latencia", + "colClientIp": "IP del cliente", + "colTime": "Hora", + "recording": "Grabando", + "paused": "En pausa", + "searchPlaceholder": "Buscar host, proveedor, destino, IP...", + "allTypes": "Todos los tipos", + "allLevels": "Todos los niveles", + "allProviders": "Todos los proveedores", "total": "total", "ok": "OK", "err": "ERR", "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", - "colPublicIp": "Public IP" + "direct": "directo", + "newest": "Más recientes", + "oldest": "Más antiguos", + "latencyDesc": "Latencia ↓", + "latencyAsc": "Latencia ↑", + "refresh": "Actualizar", + "columns": "Columnas", + "loadingProxyLogs": "Cargando registros del proxy...", + "noProxyLogs": "Aún no hay registros del proxy. Configura proxies y realiza llamadas a la API para verlos aquí.", + "noMatchingLogs": "Ningún registro coincide con los filtros actuales.", + "tlsFingerprint": "Huella digital TLS de Chrome 124", + "colPublicIp": "IP pública" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", + "speech": "Voz", + "search": "Búsqueda", + "images": "Imágenes", "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "music": "Música", + "responses": "Respuestas", + "rerank": "Reclasificación", + "video": "Vídeo", + "embeddings": "Vectorizaciones", + "transcription": "Transcripción" }, "toolDescriptions": { "cline": "Cline", @@ -11480,1180 +11487,1180 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", + "title": "Ejecución", + "description": "Observabilidad en tiempo real: resiliencia de 3 capas + sesiones + alertas de cuota", + "pause": "Pausar", + "resume": "Reanudar", + "refreshNow": "Actualizar ahora", + "kpiSessions": "Sesiones", + "kpiCircuits": "Circuitos", + "kpiCooldowns": "Tiempos de espera", + "kpiLockouts": "Bloqueos", + "hintStickyBound": "{count} vinculadas por afinidad", + "hintRecovering": "{count} recuperándose", + "hintAllHealthy": "todos en buen estado", + "hintOpen": "abiertos", + "hintConnsCooling": "conexiones en enfriamiento", + "hintModelsBlocked": "modelos bloqueados", + "resilienceTitle": "Resiliencia de 3 capas", + "resilienceSubtitle": "Refleja el modelo de resiliencia documentado", + "providersHealthy": "{percent}% de proveedores en buen estado", + "layer": "Capa {n}", + "layer1Title": "Disyuntores de proveedores", + "layer1Desc": "Detienen el tráfico hacia proveedores que fallan en el nivel ascendente", + "layer2Title": "Enfriamientos de conexiones", + "layer2Desc": "Omite una cuenta/clave defectuosa; las demás conexiones siguen prestando servicio", + "layer3Title": "Bloqueos de modelos", + "layer3Desc": "Bloqueos por límite de tasa para cada modelo; la misma conexión sigue sirviendo otros modelos", + "badgeAffectedOf": "{affected} de {total} afectados", + "badgeCooling": "{count} en enfriamiento", + "badgeLocked": "{count} bloqueados", + "emptyCircuits": "Aún no hay disyuntores activos", + "emptyCooldowns": "No hay enfriamientos de conexiones activos", + "emptyLockouts": "No hay bloqueos de modelos", + "moreCooldowns": "+{count} enfriamientos más", + "moreLockouts": "+{count} bloqueos más", + "feedTitle": "Actividad en directo", + "feedSubtitle": "Últimos {count} eventos", + "feedFilterAll": "Todos", + "feedFilterCircuits": "Disyuntores", + "feedFilterCooldowns": "Enfriamientos", + "feedFilterLockouts": "Bloqueos", + "feedFilterSessions": "Sesiones", + "feedFilterQuotas": "Cuotas", + "feedClear": "Borrar", + "feedEmptyWaiting": "Esperando eventos... (consulta cada 5 s)", + "feedEmptyFiltered": "Ningún evento coincide con este filtro", + "sessionsTitle": "Sesiones activas", + "sessionsSubtitle": "Huellas de solicitudes vinculadas por afinidad (en directo)", + "sessionsActive": "{count} activas", + "sessionsEmptyTitle": "No hay sesiones activas", + "sessionsEmptyHint": "Las sesiones aparecen a medida que las solicitudes pasan por el proxy", + "tblSession": "Sesión", + "tblAge": "Antigüedad", + "tblIdle": "Inactividad", + "tblReqs": "Solicitudes", + "tblBoundTo": "Vinculada a", + "topApiKeys": "Principales claves de API", + "quotaMonitorsTitle": "Monitores de cuota", + "quotaMonitorsSubtitle": "Estado de cuota en tiempo real por período de cuenta", + "openQuota": "Abrir cuota", + "allQuotasHealthy": "Todas las cuotas están en buen estado", + "statusExhausted": "AGOTADA", + "statusAlerting": "EN ALERTA", "statusError": "ERROR", - "moreSuffix": "+{count} more" + "moreSuffix": "+{count} más" }, "quotaShare": { - "weightPercent": "Weight %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "weightPercent": "Peso %", + "title": "Cuotas compartidas", + "description": "Comparte las cuotas de los proveedores entre claves de API con límites porcentuales", + "newPool": "Nuevo grupo", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", - "apiKeyColumn": "API Key", - "weightColumn": "Weight", - "fairShareShort": "fair", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", + "betaDescription": "La configuración se guarda en localStorage (aún no se conserva en el servidor). La aplicación del límite por solicitud aún no está integrada en el flujo del proxy. Esta pantalla permite diseñar y visualizar la distribución de la cuota; la aplicación real se incorporará en una futura iteración con persistencia en la base de datos e interceptación de llamadas al proveedor.", + "kpiActivePools": "Grupos activos", + "kpiKeysAllocated": "Claves asignadas", + "kpiAvgUnallocated": "Promedio sin asignar", + "kpiProvidersWithQuota": "Proveedores con cuota", + "emptyTitle": "No hay grupos configurados", + "emptyDescription": "Crea un grupo para asignar claves de API y compartir el período de cuota de un proveedor mediante asignaciones porcentuales.", + "loading": "Cargando…", + "removePool": "Eliminar grupo", + "removeConfirm": "¿Eliminar este grupo?", + "pool": "Grupo", + "used": "utilizado", + "allocationsCount": "Asignaciones ({count})", + "allocatedFree": "{allocated}% asignado · {free}% libre", + "noAllocations": "Aún no hay claves asignadas", + "capLabel": "límite {value}", + "notTrackedYet": "(aún no se supervisa)", + "policy": "Política", + "apiKeyColumn": "Clave de API", + "weightColumn": "Peso", + "fairShareShort": "equitativa", + "policyHard": "estricta", + "policySoft": "flexible", + "policyBurst": "ráfaga", + "policyHardHint": "Bloquear cuando la clave agote su asignación", + "policySoftHint": "Permitir excedentes, solo alertar", + "policyBurstHint": "Permitir ráfagas usando el fondo libre", + "editAllocations": "Editar asignaciones", + "newPoolTitle": "Nuevo fondo de cuota", + "providerConnection": "Conexión del proveedor (cuenta)", + "selectConnection": "Seleccionar una conexión…", + "noEligibleConnections": "No hay conexiones con datos de cuota. Actualiza primero desde /dashboard/quota.", + "quotaWindow": "Período de cuota", + "selectWindow": "Seleccionar un período…", + "alreadyUsedSuffix": "(ya utilizado)", + "windowReset": "Restablecer", + "duplicatePoolError": "Ya existe un fondo para esta conexión y este período", + "cancel": "Cancelar", + "createPool": "Crear fondo", + "editTitle": "Editar asignaciones", + "noKeysAdded": "No hay claves asignadas. Añade una a continuación.", "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "totalExceeded": "⚠ supera el 100 %", + "addKey": "+ Añadir clave…", + "equalSplit": "Distribución equitativa", + "save": "Guardar asignaciones", "betaPreviewLabel": "Beta: vista previa de la interfaz de usuario.", "betaConfigSavedPrefix": "La configuración se guarda en", "betaConfigSavedSuffix": "(aún no persiste en el servidor). La aplicación del límite por solicitud aún no está integrada en el proceso de proxy. Esta pantalla le permite diseñar y visualizar la división de cuota; La aplicación real se producirá en una iteración futura con persistencia de base de datos e interceptación de llamadas ascendentes.", "policyLabel": "Política:", "resetIn": "restablecer en", "quotaTotal": "total", - "kpiAvgUtilization": "Avg utilization", - "kpiBorrowingNow": "Borrowing now", - "conceptTitle": "How Quota Share works", - "conceptIntro": "Quota Share divides a provider's quota among multiple API keys using work-conserving fair-share: each key receives a proportional slice but can borrow from the free balance without exceeding the global cap.", - "conceptFairShare": "Fair-share: each key receives quota proportional to its configured weight", - "conceptBorrowing": "Borrowing: keys can consume free balance from others without breaching the cap", - "conceptGlobalCap": "Hard global cap: the provider's absolute limit is never exceeded", - "conceptWindows": "Windows: 5h, hourly, daily, weekly, monthly — each tracked independently", - "conceptKeyHowTitle": "Enabling a key for quota", - "conceptKeyHowDesc": "Create the key normally in API Keys — it appears in the wizard's key step automatically. Tick Exclusive there to make it quota-only. No separate enable step.", - "conceptExclusiveTitle": "What \"Exclusive\" does", - "conceptExclusiveDesc": "An exclusive key only sees/uses the pool's quotaShared-* models — every other model is hidden from its /v1/models and blocked.", - "burnRateTitle": "Burn rate", - "burnRateExhaustsIn": "Exhausts in", - "dimensionResetIn": "Resets in", - "realConsumedColumn": "Consumed", - "deficitColumn": "Deficit", - "borrowingIndicator": "borrowing", - "migratedFromLocalStorageNotice": "Pools successfully migrated from localStorage.", - "policyCapAbsoluteLabel": "Absolute cap", - "policyCapAbsolutePlaceholder": "Numeric limit (optional)", - "multiDimensionLabel": "Multi-dimension", - "stackedBarTitle": "Slices by API key", - "usedSuffix": "used {percent}%", - "wizardTitle": "New quota pool", - "editPoolTitle": "Edit pool", - "saveChanges": "Save changes", - "wizardStep1Label": "Account", - "wizardStep2Label": "Limit", - "wizardStep3Label": "Keys", - "wizardStep1Title": "Choose provider connection", - "wizardStep1Subtitle": "Select the provider account this pool will share quota for, set a name and default policy.", - "wizardStep2Title": "Configure quota dimensions", - "wizardStep2Subtitle": "Define the quota plan dimensions (unit, window, limit) for the chosen connection. Leave unchanged to keep current settings.", - "wizardStep3Title": "Allocate API keys", - "wizardStep3Subtitle": "Assign API keys to this pool with weight % allocations and optional caps.", - "wizardPoolNameLabel": "Pool name", - "wizardPoolNamePlaceholder": "My quota pool", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCreatePool": "Create pool", - "wizardDimensionsEditedNotice": "Dimensions edited — will be saved as a manual override when the pool is created.", - "wizardExclusiveLabel": "Exclusive quota", - "wizardExclusiveHint": "When enabled, these API keys will only be allowed to use this pool's virtual models (allowedQuotas reconciliation is applied on save).", - "wizardPreviewLabel": "Virtual model names preview", - "wizardConnectionsLabel": "Provider connections", - "wizardPrimaryBadge": "primary", - "wizardAdditionalConnectionsNote": "Additional connections use their catalog default limits (editable later).", - "wizardSingleProviderNote": "A pool uses a single provider", - "wizardPreviewMoreModels": "+{count} more", - "accountQuotaTitle": "Account quota", + "kpiAvgUtilization": "Uso medio", + "kpiBorrowingNow": "Préstamo actual", + "conceptTitle": "Cómo funciona Quota Share", + "conceptIntro": "Quota Share divide la cuota de un proveedor entre varias claves API mediante un reparto equitativo que aprovecha la capacidad disponible: cada clave recibe una parte proporcional, pero puede tomar prestado del saldo libre sin superar el límite global.", + "conceptFairShare": "Reparto equitativo: cada clave recibe una cuota proporcional a su peso configurado", + "conceptBorrowing": "Préstamo: las claves pueden consumir el saldo libre de otras sin superar el límite", + "conceptGlobalCap": "Límite global estricto: nunca se supera el límite absoluto del proveedor", + "conceptWindows": "Períodos: 5 h, cada hora, diario, semanal y mensual; cada uno se controla de forma independiente", + "conceptKeyHowTitle": "Habilitar una clave para la cuota", + "conceptKeyHowDesc": "Crea la clave con normalidad en API Keys; aparecerá automáticamente en el paso de claves del asistente. Marca Exclusive allí para que solo use la cuota. No se requiere ningún paso adicional de habilitación.", + "conceptExclusiveTitle": "Qué hace \"Exclusive\"", + "conceptExclusiveDesc": "Una clave exclusiva solo ve y utiliza los modelos quotaShared-* del fondo; todos los demás modelos se ocultan de su /v1/models y se bloquean.", + "burnRateTitle": "Tasa de consumo", + "burnRateExhaustsIn": "Se agota en", + "dimensionResetIn": "Se restablece en", + "realConsumedColumn": "Consumido", + "deficitColumn": "Déficit", + "borrowingIndicator": "préstamo", + "migratedFromLocalStorageNotice": "Los grupos se migraron correctamente desde localStorage.", + "policyCapAbsoluteLabel": "Límite absoluto", + "policyCapAbsolutePlaceholder": "Límite numérico (opcional)", + "multiDimensionLabel": "Multidimensional", + "stackedBarTitle": "Distribución por clave de API", + "usedSuffix": "usado {percent}%", + "wizardTitle": "Nuevo grupo de cuotas", + "editPoolTitle": "Editar grupo", + "saveChanges": "Guardar cambios", + "wizardStep1Label": "Cuenta", + "wizardStep2Label": "Límite", + "wizardStep3Label": "Claves", + "wizardStep1Title": "Elegir conexión del proveedor", + "wizardStep1Subtitle": "Selecciona la cuenta del proveedor cuya cuota compartirá este grupo y establece un nombre y una política predeterminada.", + "wizardStep2Title": "Configurar dimensiones de cuota", + "wizardStep2Subtitle": "Define las dimensiones del plan de cuotas (unidad, período, límite) para la conexión elegida. Déjalas sin cambios para conservar la configuración actual.", + "wizardStep3Title": "Asignar claves de API", + "wizardStep3Subtitle": "Asigna claves de API a este grupo con porcentajes de ponderación y límites opcionales.", + "wizardPoolNameLabel": "Nombre del grupo", + "wizardPoolNamePlaceholder": "Mi grupo de cuotas", + "wizardNext": "Siguiente", + "wizardBack": "Atrás", + "wizardCreatePool": "Crear grupo", + "wizardDimensionsEditedNotice": "Dimensiones modificadas: se guardarán como una anulación manual al crear el grupo.", + "wizardExclusiveLabel": "Cuota exclusiva", + "wizardExclusiveHint": "Cuando se habilite, estas claves de API solo podrán usar los modelos virtuales de este grupo (la conciliación de allowedQuotas se aplica al guardar).", + "wizardPreviewLabel": "Vista previa de nombres de modelos virtuales", + "wizardConnectionsLabel": "Conexiones del proveedor", + "wizardPrimaryBadge": "principal", + "wizardAdditionalConnectionsNote": "Las conexiones adicionales usan los límites predeterminados de su catálogo (se pueden editar más adelante).", + "wizardSingleProviderNote": "Un grupo usa un único proveedor", + "wizardPreviewMoreModels": "+{count} más", + "accountQuotaTitle": "Cuota de la cuenta", "accountQuotaNone": "—", - "logTitle": "Usage log", - "logEmpty": "No usage yet", - "groupLabel": "Group", - "newGroup": "New group", - "renameGroup": "Rename group", - "groupSelectHint": "Filter pools by group", - "groupAllocationNote": "Allocations apply to all pools in this group via the shared quota layer.", - "groupNamePrompt": "Enter group name", - "wizardGroupLabel": "Group", - "allGroups": "All groups", - "endpointsTitle": "Available endpoints", - "endpointsHint": "Call these virtual models with any allocated key — routing + quota are handled per group.", - "previewForKey": "Preview for key", - "previewKeyNone": "(all endpoints)", - "endpointsBaseUrl": "Base URL", - "endpointsCollapse": "Collapse", - "endpointsExpand": "Expand", - "endpointsAnthropicNote": "Anthropic-native", - "endpointsResponsesNote": "OpenAI Responses — codex/github", - "endpointsWsNote": "WebSocket — codex only", - "betaText": "Quota Share is functional but bugs are expected. Found one? Please report it.", - "betaReportLink": "Report an issue", - "deleteGroup": "Delete group", - "deleteGroupConfirm": "Delete this group? Its pools must be reassigned or removed first.", - "deleteGroupHasPools": "This group still has pools — reassign or delete them first.", - "ungroupedTitle": "Ungrouped", - "ungroupedHint": "These pools are not assigned to a known group. Edit a pool to move it into a real group.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "logTitle": "Registro de uso", + "logEmpty": "Aún no hay uso", + "groupLabel": "Grupo", + "newGroup": "Nuevo grupo", + "renameGroup": "Cambiar nombre del grupo", + "groupSelectHint": "Filtrar pools por grupo", + "groupAllocationNote": "Las asignaciones se aplican a todos los pools de este grupo mediante la capa de cuota compartida.", + "groupNamePrompt": "Introduce el nombre del grupo", + "wizardGroupLabel": "Grupo", + "allGroups": "Todos los grupos", + "endpointsTitle": "Endpoints disponibles", + "endpointsHint": "Llama a estos modelos virtuales con cualquier clave asignada; el enrutamiento y la cuota se gestionan por grupo.", + "previewForKey": "Vista previa para la clave", + "previewKeyNone": "(todos los endpoints)", + "endpointsBaseUrl": "URL base", + "endpointsCollapse": "Contraer", + "endpointsExpand": "Expandir", + "endpointsAnthropicNote": "Nativo de Anthropic", + "endpointsResponsesNote": "Respuestas de OpenAI — codex/github", + "endpointsWsNote": "WebSocket — solo codex", + "betaText": "Quota Share funciona, pero es posible que haya errores. ¿Has encontrado uno? Informa de ello.", + "betaReportLink": "Informar de un problema", + "deleteGroup": "Eliminar grupo", + "deleteGroupConfirm": "¿Eliminar este grupo? Primero debes reasignar o eliminar sus pools.", + "deleteGroupHasPools": "Este grupo aún tiene pools; primero debes reasignarlos o eliminarlos.", + "ungroupedTitle": "Sin grupo", + "ungroupedHint": "Estos pools no están asignados a ningún grupo conocido. Edita un pool para moverlo a un grupo real.", + "removeFailed": "No se pudo eliminar este pool.", + "dismiss": "Descartar" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", - "installedTab": "Installed", - "marketplaceTab": "Marketplace", - "marketplaceUrlLabel": "Custom Marketplace URL", - "marketplaceUrlPlaceholder": "Leave empty for official Omniroute registry", - "saveMarketplaceUrl": "Save & Reload", - "marketplaceUrlSaved": "Marketplace URL updated", - "marketplaceEmpty": "No plugins found in marketplace.", - "marketplaceInstallComingSoon": "Marketplace installs are coming soon.", - "verified": "Verified", - "install": "Install", - "installedFromMarketplace": "Plugin {name} installed!", + "title": "Complementos", + "description": "Instala y gestiona plugins para ampliar la funcionalidad de OmniRoute", + "loading": "Cargando plugins...", + "scanning": "Escaneando...", + "scanForPlugins": "Buscar plugins", + "noPlugins": "No hay plugins instalados", + "noPluginsDescription": "Coloca los directorios de los plugins en ~/.omniroute/plugins/ y haz clic en Buscar.", + "activate": "Activar", + "deactivate": "Desactivar", + "uninstall": "Desinstalar", + "uninstallConfirm": "¿Desinstalar el plugin \"{name}\"?", + "pluginScanComplete": "Búsqueda de plugins completada", + "pluginScanFailed": "Error al buscar plugins", + "activated": "{name} activado", + "deactivated": "{name} desactivado", + "activateFailed": "No se pudo activar {name}", + "deactivateFailed": "No se pudo desactivar {name}", + "uninstalled": "{name} desinstalado", + "uninstallFailed": "No se pudo desinstalar {name}", + "configure": "Configurar: {name}", + "configurePlugin": "Configurar", + "noConfigSettings": "Este plugin no tiene ajustes configurables.", + "saving": "Guardando...", + "saveConfiguration": "Guardar configuración", + "configurationSaved": "Configuración guardada", + "saveConfigurationFailed": "No se pudo guardar la configuración", + "pluginNotFound": "Plugin no encontrado", + "version": "Versión", + "author": "Autor", + "description_label": "Descripción", + "status": "Estado", + "enabled": "Activado", + "disabled": "Desactivado", + "installedTab": "Instalados", + "marketplaceTab": "Mercado", + "marketplaceUrlLabel": "URL personalizada del Marketplace", + "marketplaceUrlPlaceholder": "Déjalo vacío para usar el registro oficial de Omniroute", + "saveMarketplaceUrl": "Guardar y recargar", + "marketplaceUrlSaved": "URL del Marketplace actualizada", + "marketplaceEmpty": "No se encontraron plugins en el Marketplace.", + "marketplaceInstallComingSoon": "Las instalaciones desde el Marketplace estarán disponibles próximamente.", + "verified": "Verificado", + "install": "Instalar", + "installedFromMarketplace": "¡Plugin {name} instalado!", "hooks": "Hooks" }, "quotaPlans": { - "title": "Plans & Quotas", - "description": "Configure quota plans per provider — dimensions (%, requests, tokens, $) and time windows", - "providerLabel": "Provider / Connection", - "detectedPlanLabel": "Detected plan", - "manualPlanLabel": "Manual override", - "unconfiguredLabel": "Not configured — manual required", - "dimensionLabel": "Dimensions", - "addDimension": "Add dimension", - "removeDimension": "Remove", - "limitLabel": "Limit", + "title": "Planes y cuotas", + "description": "Configura planes de cuotas por proveedor: dimensiones (%, solicitudes, tokens, $) y períodos", + "providerLabel": "Proveedor / Conexión", + "detectedPlanLabel": "Plan detectado", + "manualPlanLabel": "Anulación manual", + "unconfiguredLabel": "Sin configurar; se requiere configuración manual", + "dimensionLabel": "Dimensiones", + "addDimension": "Añadir dimensión", + "removeDimension": "Eliminar", + "limitLabel": "Límite", "unitOptions": { "percent": "%", - "requests": "requests", + "requests": "solicitudes", "tokens": "tokens", "usd": "USD ($)" }, "windowOptions": { - "5h": "5 hours", - "hourly": "Hourly", - "daily": "Daily", - "weekly": "Weekly", - "monthly": "Monthly" + "5h": "5 horas", + "hourly": "Por hora", + "daily": "Diario", + "weekly": "Semanal", + "monthly": "Mensual" }, - "useCatalogButton": "Use catalog", - "saveOverrideButton": "Save override", - "revertToCatalogButton": "Revert to catalog", - "unknownProviderNotice": "Select a provider on the left to configure its quota plan.", - "catalogTitle": "Known catalog", - "catalogDescription": "Automatically detected plans for the following providers:" + "useCatalogButton": "Usar catálogo", + "saveOverrideButton": "Guardar configuración personalizada", + "revertToCatalogButton": "Restablecer al catálogo", + "unknownProviderNotice": "Selecciona un proveedor a la izquierda para configurar su plan de cuota.", + "catalogTitle": "Catálogo conocido", + "catalogDescription": "Planes detectados automáticamente para los siguientes proveedores:" }, "activity": { - "title": "Activity", - "description": "Recent events feed", - "emptyTitle": "No activity yet", - "emptyDescription": "When you add providers, create combos, or rotate keys, events will appear here.", - "todayHeader": "Today", - "yesterdayHeader": "Yesterday", - "filterAll": "All", - "filterProviders": "Providers", - "filterCombos": "Combos", - "filterApiKeys": "API Keys", - "filterSettings": "Settings", - "filterQuota": "Quota", - "filterAuth": "Auth", - "filterSystem": "System", - "filterAria": "Filter by event type", - "refresh": "Refresh", - "refreshAria": "Refresh activity feed", - "loading": "Loading", - "loadingActivity": "Loading activity…", - "fetchFailed": "Failed to fetch activity", + "title": "Actividad", + "description": "Registro de eventos recientes", + "emptyTitle": "Aún no hay actividad", + "emptyDescription": "Cuando añadas proveedores, crees combinaciones o rotes claves, los eventos aparecerán aquí.", + "todayHeader": "Hoy", + "yesterdayHeader": "Ayer", + "filterAll": "Todo", + "filterProviders": "Proveedores", + "filterCombos": "Combinaciones", + "filterApiKeys": "Claves de API", + "filterSettings": "Configuración", + "filterQuota": "Cuota", + "filterAuth": "Autenticación", + "filterSystem": "Sistema", + "filterAria": "Filtrar por tipo de evento", + "refresh": "Actualizar", + "refreshAria": "Actualizar el registro de actividad", + "loading": "Cargando", + "loadingActivity": "Cargando actividad…", + "fetchFailed": "No se pudo obtener la actividad", "relative": { - "justNow": "just now", - "minutesAgo": "{n} min ago", - "hoursAgo": "{n} h ago", - "yesterday": "yesterday", - "daysAgo": "{n} days ago" + "justNow": "ahora mismo", + "minutesAgo": "hace {n} min", + "hoursAgo": "hace {n} h", + "yesterday": "ayer", + "daysAgo": "hace {n} días" }, "eventVerb": { - "providerAdded": "{actor} added provider {target}", - "providerRemoved": "{actor} removed provider {target}", - "providerTested": "{actor} tested provider {target}", - "comboCreated": "{actor} created combo {target}", - "comboUpdated": "{actor} updated combo {target}", - "comboDeleted": "{actor} removed combo {target}", - "apiKeyCreated": "{actor} created API key {target}", - "apiKeyRevoked": "{actor} revoked API key {target}", - "apiKeyRotated": "{actor} rotated API key {target}", - "budgetThreshold": "Budget threshold reached for {target}", - "settingUpdated": "{actor} updated setting {target}", - "authLogin": "{actor} signed in", - "authLogout": "{actor} signed out", - "cloudAgentSession": "Cloud agent session started for {target}", - "mcpToolRegistered": "MCP tool {target} registered", - "webhookCreated": "{actor} created webhook {target}", - "webhookDeleted": "{actor} removed webhook {target}", - "quotaPoolCreated": "{actor} created quota pool {target}", - "quotaPoolUpdated": "{actor} updated quota pool {target}", - "quotaPoolDeleted": "{actor} removed quota pool {target}", - "quotaPlanUpdated": "{actor} updated quota plan {target}", - "quotaStoreDriverChanged": "QuotaStore driver changed", - "updateApplied": "Update {target} applied", - "deployCompleted": "Deploy completed", - "skillInstalled": "{actor} installed skill {target}", - "skillRemoved": "{actor} removed skill {target}", - "providerCredentialsCreated": "{actor} created credentials for {target}", - "providerCredentialsApplied": "Credentials for {target} applied", - "providerCredentialsUpdated": "{actor} updated credentials for {target}", - "providerCredentialsRevoked": "{actor} revoked credentials for {target}", - "providerCredentialsBatchRevoked": "{actor} batch-revoked credentials", - "providerCredentialsBatchUpdated": "{actor} batch-updated credentials", - "providerCredentialsBulkCreated": "{actor} bulk-created credentials", - "providerCredentialsBulkImported": "{actor} bulk-imported credentials", - "providerCredentialsImported": "{actor} imported credentials", - "providerSsrfBlocked": "SSRF attempt blocked for {target}", - "authLoginSuccess": "{actor} signed in", - "authLoginError": "Login error for {actor}", - "authLoginFailed": "Login failed for {actor}", - "authLoginLocked": "{actor} locked out after too many attempts", - "authLoginMisconfigured": "Auth configuration invalid", - "authLoginSetupRequired": "Auth setup required", - "authLogoutSuccess": "{actor} signed out", - "syncTokenCreated": "{actor} created sync token", - "syncTokenRevoked": "{actor} revoked sync token", - "settingsUpdate": "{actor} updated settings", - "settingsUpdateFailed": "Settings update failed", - "serviceRevealApiKey": "{actor} revealed API key for {target}", + "providerAdded": "{actor} añadió el proveedor {target}", + "providerRemoved": "{actor} eliminó el proveedor {target}", + "providerTested": "{actor} probó el proveedor {target}", + "comboCreated": "{actor} creó la combinación {target}", + "comboUpdated": "{actor} actualizó la combinación {target}", + "comboDeleted": "{actor} eliminó la combinación {target}", + "apiKeyCreated": "{actor} creó la clave de API {target}", + "apiKeyRevoked": "{actor} revocó la clave de API {target}", + "apiKeyRotated": "{actor} rotó la clave de API {target}", + "budgetThreshold": "Se alcanzó el umbral de presupuesto para {target}", + "settingUpdated": "{actor} actualizó la configuración {target}", + "authLogin": "{actor} inició sesión", + "authLogout": "{actor} cerró sesión", + "cloudAgentSession": "Se inició la sesión del agente en la nube para {target}", + "mcpToolRegistered": "Se registró la herramienta MCP {target}", + "webhookCreated": "{actor} creó el webhook {target}", + "webhookDeleted": "{actor} eliminó el webhook {target}", + "quotaPoolCreated": "{actor} creó el grupo de cuotas {target}", + "quotaPoolUpdated": "{actor} actualizó el grupo de cuotas {target}", + "quotaPoolDeleted": "{actor} eliminó el grupo de cuotas {target}", + "quotaPlanUpdated": "{actor} actualizó el plan de cuotas {target}", + "quotaStoreDriverChanged": "Se cambió el controlador de QuotaStore", + "updateApplied": "Se aplicó la actualización {target}", + "deployCompleted": "Despliegue completado", + "skillInstalled": "{actor} instaló la habilidad {target}", + "skillRemoved": "{actor} eliminó la habilidad {target}", + "providerCredentialsCreated": "{actor} creó credenciales para {target}", + "providerCredentialsApplied": "Se aplicaron las credenciales para {target}", + "providerCredentialsUpdated": "{actor} actualizó las credenciales para {target}", + "providerCredentialsRevoked": "{actor} revocó las credenciales para {target}", + "providerCredentialsBatchRevoked": "{actor} revocó credenciales por lotes", + "providerCredentialsBatchUpdated": "{actor} actualizó credenciales por lotes", + "providerCredentialsBulkCreated": "{actor} creó credenciales de forma masiva", + "providerCredentialsBulkImported": "{actor} importó credenciales de forma masiva", + "providerCredentialsImported": "{actor} importó credenciales", + "providerSsrfBlocked": "Se bloqueó un intento de SSRF para {target}", + "authLoginSuccess": "{actor} inició sesión", + "authLoginError": "Error de inicio de sesión de {actor}", + "authLoginFailed": "Error al iniciar sesión para {actor}", + "authLoginLocked": "{actor} bloqueado tras demasiados intentos", + "authLoginMisconfigured": "Configuración de autenticación no válida", + "authLoginSetupRequired": "Se requiere configurar la autenticación", + "authLogoutSuccess": "{actor} cerró sesión", + "syncTokenCreated": "{actor} creó un token de sincronización", + "syncTokenRevoked": "{actor} revocó un token de sincronización", + "settingsUpdate": "{actor} actualizó la configuración", + "settingsUpdateFailed": "Error al actualizar la configuración", + "serviceRevealApiKey": "{actor} reveló la clave de API de {target}", "genericEvent": "{actor} {target}" } }, "agentBridge": { "title": "AgentBridge", - "subtitle": "Use IDE agents with OmniRoute models — no config required", - "riskBannerTitle": "Use at your own risk", - "riskBannerBody": "AgentBridge intercepts HTTPS traffic from IDE agents. By activating it you accept responsibility for compliance with the terms of service of each agent. Never use on devices or networks where TLS inspection is prohibited.", - "riskBannerDismiss": "Dismiss", - "serverCardTitle": "AgentBridge Server", - "statusRunning": "Running", - "statusStopped": "Stopped", - "statusActive": "Active", - "statusDnsOff": "DNS off", - "statusSetupRequired": "Setup required", - "statusInvestigating": "Investigating", - "serverPort": "Port", - "serverConns": "Connections", - "serverIntercepted": "Intercepted", - "serverLastStarted": "Last started", - "startServer": "Start", - "stopServer": "Stop", - "restartServer": "Restart", - "trustCert": "Trust Cert", - "downloadCert": "Download Cert", - "certManualTitle": "Certificate couldn't be installed automatically (e.g. inside a container). The bridge can still run — trust the CA manually:", - "regenerateCert": "Regenerate Cert", - "starting": "Starting…", - "stopping": "Stopping…", - "restarting": "Restarting…", - "trusting": "Trusting…", - "regenerating": "Regenerating…", - "upstreamCaLabel": "Upstream CA Certificate (corporate)", + "subtitle": "Usa agentes de IDE con modelos de OmniRoute, sin necesidad de configuración", + "riskBannerTitle": "Úsalo bajo tu propia responsabilidad", + "riskBannerBody": "AgentBridge intercepta el tráfico HTTPS de los agentes de IDE. Al activarlo, aceptas la responsabilidad de cumplir los términos de servicio de cada agente. No lo uses nunca en dispositivos o redes donde esté prohibida la inspección TLS.", + "riskBannerDismiss": "Descartar", + "serverCardTitle": "Servidor de AgentBridge", + "statusRunning": "En ejecución", + "statusStopped": "Detenido", + "statusActive": "Activo", + "statusDnsOff": "DNS desactivado", + "statusSetupRequired": "Configuración requerida", + "statusInvestigating": "Investigando", + "serverPort": "Puerto", + "serverConns": "Conexiones", + "serverIntercepted": "Interceptadas", + "serverLastStarted": "Último inicio", + "startServer": "Iniciar", + "stopServer": "Detener", + "restartServer": "Reiniciar", + "trustCert": "Confiar en el certificado", + "downloadCert": "Descargar certificado", + "certManualTitle": "No se pudo instalar el certificado automáticamente (p. ej., dentro de un contenedor). El puente puede seguir ejecutándose; confía manualmente en la CA:", + "regenerateCert": "Regenerar certificado", + "starting": "Iniciando…", + "stopping": "Deteniendo…", + "restarting": "Reiniciando…", + "trusting": "Estableciendo confianza…", + "regenerating": "Regenerando…", + "upstreamCaLabel": "Certificado de CA ascendente (corporativo)", "upstreamCaPlaceholder": "/etc/ssl/certs/corp-ca.pem", - "upstreamCaTest": "Test TLS", - "upstreamCaTestOk": "TLS test passed", - "upstreamCaTestError": "TLS test failed — check the path and CA file", - "bypassSectionTitle": "Bypass List", - "bypassSectionDesc": "Hosts matching these patterns are tunneled directly (no TLS decryption). Defaults include banks.gov, and corporate SSO.", - "bypassDefaultsLabel": "Default bypass patterns (read-only)", - "bypassUserLabel": "Custom bypass patterns (one per line, glob or regex)", - "saveBypassList": "Save bypass list", - "agentListTitle": "IDE Agents", - "filterAll": "All", - "filterActive": "Active", - "filterSetupRequired": "Setup required", - "filterInvestigating": "Investigating", - "searchAgents": "Search agents…", - "noAgentsMatch": "No agents match the current filter", - "agentHosts": "Intercepted hosts", - "certTrusted": "Certificate trusted", - "certNotTrusted": "Certificate not trusted", - "investigatingNotice": "This agent is under investigation. Hosts and API surface are still being confirmed. Setup will be available once the upstream API is documented.", - "modelMappingsLabel": "Model mappings", - "sourceModel": "Source model (agent native)", - "targetModel": "Target model (OmniRoute)", - "noMappings": "No model mappings configured. Run setup wizard to auto-detect models.", + "upstreamCaTest": "Probar TLS", + "upstreamCaTestOk": "La prueba de TLS se completó correctamente", + "upstreamCaTestError": "La prueba de TLS falló — comprueba la ruta y el archivo de CA", + "bypassSectionTitle": "Lista de exclusión", + "bypassSectionDesc": "Los hosts que coincidan con estos patrones se canalizan directamente (sin descifrado TLS). Los valores predeterminados incluyen banks.gov y el SSO corporativo.", + "bypassDefaultsLabel": "Patrones de exclusión predeterminados (solo lectura)", + "bypassUserLabel": "Patrones de exclusión personalizados (uno por línea, glob o expresión regular)", + "saveBypassList": "Guardar lista de exclusión", + "agentListTitle": "Agentes de IDE", + "filterAll": "Todos", + "filterActive": "Activos", + "filterSetupRequired": "Configuración necesaria", + "filterInvestigating": "En investigación", + "searchAgents": "Buscar agentes…", + "noAgentsMatch": "Ningún agente coincide con el filtro actual", + "agentHosts": "Hosts interceptados", + "certTrusted": "Certificado de confianza", + "certNotTrusted": "Certificado no confiable", + "investigatingNotice": "Este agente está siendo investigado. Los hosts y la superficie de la API aún se están confirmando. La configuración estará disponible cuando se documente la API upstream.", + "modelMappingsLabel": "Asignaciones de modelos", + "sourceModel": "Modelo de origen (nativo del agente)", + "targetModel": "Modelo de destino (OmniRoute)", + "noMappings": "No hay asignaciones de modelos configuradas. Ejecuta el asistente de configuración para detectar automáticamente los modelos.", "noMappingsDesc": "No se han configurado mapeos de modelo aún. Agrega mapeos para enrutar las solicitudes del agente a través de OmniRoute.", "addMapping": "Agregar mapeo", - "selectModel": "Select…", - "saveMappings": "Save mappings", - "setupWizard": "Setup wizard", - "startDns": "Start DNS", - "stopDns": "Stop DNS", - "toggling": "Toggling…", - "viewTraffic": "View traffic", - "emptyNoProvidersTitle": "No providers configured yet", - "emptyNoProvidersBody": "To use AgentBridge, first connect at least one provider. It will be the destination where IDE requests are routed.", - "emptyGoToProviders": "Go to Providers", - "wizardTitle": "Setup wizard", - "wizardSubtitle": "3-step setup", - "wizardStep1Label": "Verify", + "selectModel": "Seleccionar…", + "saveMappings": "Guardar asignaciones", + "setupWizard": "Asistente de configuración", + "startDns": "Iniciar DNS", + "stopDns": "Detener DNS", + "toggling": "Cambiando…", + "viewTraffic": "Ver tráfico", + "emptyNoProvidersTitle": "Aún no hay proveedores configurados", + "emptyNoProvidersBody": "Para usar AgentBridge, primero conecta al menos un proveedor. Será el destino al que se dirigirán las solicitudes del IDE.", + "emptyGoToProviders": "Ir a Proveedores", + "wizardTitle": "Asistente de configuración", + "wizardSubtitle": "Configuración en 3 pasos", + "wizardStep1Label": "Verificar", "wizardStep2Label": "DNS", - "wizardStep3Label": "Mappings", - "wizardStep1Desc": "Confirm the server is running and the certificate is installed.", - "wizardStep2Desc": "The following entries will be added to /etc/hosts to redirect traffic through AgentBridge:", - "wizardStep3Desc": "You can now configure model mappings in the agent card. Restart the IDE to apply changes.", - "wizardStep3Success": "Agent is configured!", - "wizardServerCheck": "AgentBridge server", - "wizardRunning": "running", - "wizardNotRunning": "not running", - "wizardCertCheck": "Certificate", - "wizardTrusted": "trusted", - "wizardNotTrusted": "not yet trusted — use Trust Cert button", - "wizardTutorialTitle": "Setup instructions:", - "wizardEnableDns": "Add /etc/hosts entries", - "wizardDnsAlreadyEnabled": "DNS already enabled for this agent", - "enablingDns": "Enabling…", - "modelSelectorTitle": "Select target model", - "modelSelectorSearch": "Search models…", - "noModelsFound": "No models found", - "quickLinks": "Quick links", - "quickLinkProviders": "Configure providers", - "quickLinkInspector": "View traffic in Traffic Inspector", - "unknownError": "Unknown error", - "maintenanceTitle": "Maintenance & Diagnostics", - "maintenanceSubtitle": "Self-test the capture pipeline, undo leftover system state, and move your setup between machines.", - "orphanedStateWarning": "A previous session left system state behind (DNS spoof, CA, or system proxy). Run Repair to clean it up.", - "diagnose": "Diagnose", - "diagnosing": "Diagnosing…", - "diagnoseHealthy": "Capture pipeline is healthy.", - "diagnoseUnhealthy": "Capture pipeline has problems:", - "repair": "Repair", - "repairing": "Repairing…", - "repairDone": "Repaired: {items}", - "repairNothing": "Nothing to repair — system state is clean.", - "removeCa": "Remove CA", - "removeCaConfirm": "Remove CA?", - "removeCaDone": "MITM root CA removed from the OS trust store.", - "removing": "Removing…", - "confirm": "Confirm", - "exportConfig": "Export config", - "exporting": "Exporting…", - "importConfig": "Import config", - "importing": "Importing…", - "importInvalidJson": "The selected file is not valid JSON.", - "importDone": "Imported {bypass} bypass · {hosts} hosts · {agents} agents", - "save": "Save", - "saving": "Saving…", - "cancel": "Cancel", - "back": "Back", - "next": "Next", - "done": "Done", - "loading": "Loading…", - "riskNoticeTitle": "Risk acknowledgment", - "riskNoticeBody": "AgentBridge will intercept HTTPS traffic from this agent by redirecting its API hosts via DNS. Only enable if you accept responsibility for compliance with the agent's terms of service and any applicable network policies.", + "wizardStep3Label": "Asignaciones", + "wizardStep1Desc": "Confirma que el servidor esté en ejecución y que el certificado esté instalado.", + "wizardStep2Desc": "Las siguientes entradas se añadirán a /etc/hosts para redirigir el tráfico a través de AgentBridge:", + "wizardStep3Desc": "Ahora puedes configurar las asignaciones de modelos en la tarjeta del agente. Reinicia el IDE para aplicar los cambios.", + "wizardStep3Success": "¡El agente está configurado!", + "wizardServerCheck": "Servidor de AgentBridge", + "wizardRunning": "en ejecución", + "wizardNotRunning": "detenido", + "wizardCertCheck": "Certificado", + "wizardTrusted": "de confianza", + "wizardNotTrusted": "aún no es de confianza — usa el botón Confiar en el certificado", + "wizardTutorialTitle": "Instrucciones de configuración:", + "wizardEnableDns": "Añadir entradas a /etc/hosts", + "wizardDnsAlreadyEnabled": "El DNS ya está habilitado para este agente", + "enablingDns": "Habilitando…", + "modelSelectorTitle": "Seleccionar modelo de destino", + "modelSelectorSearch": "Buscar modelos…", + "noModelsFound": "No se encontraron modelos", + "quickLinks": "Enlaces rápidos", + "quickLinkProviders": "Configurar proveedores", + "quickLinkInspector": "Ver el tráfico en Traffic Inspector", + "unknownError": "Error desconocido", + "maintenanceTitle": "Mantenimiento y diagnóstico", + "maintenanceSubtitle": "Ejecuta una autoprueba del proceso de captura, deshaz cualquier estado residual del sistema y transfiere tu configuración entre equipos.", + "orphanedStateWarning": "Una sesión anterior dejó cambios en el estado del sistema (suplantación de DNS, CA o proxy del sistema). Ejecuta Reparar para eliminarlos.", + "diagnose": "Diagnosticar", + "diagnosing": "Diagnosticando…", + "diagnoseHealthy": "El proceso de captura funciona correctamente.", + "diagnoseUnhealthy": "El proceso de captura tiene problemas:", + "repair": "Reparar", + "repairing": "Reparando…", + "repairDone": "Reparado: {items}", + "repairNothing": "No hay nada que reparar — el estado del sistema está limpio.", + "removeCa": "Eliminar CA", + "removeCaConfirm": "¿Eliminar la CA?", + "removeCaDone": "La CA raíz MITM se eliminó del almacén de confianza del sistema operativo.", + "removing": "Eliminando…", + "confirm": "Confirmar", + "exportConfig": "Exportar configuración", + "exporting": "Exportando…", + "importConfig": "Importar configuración", + "importing": "Importando…", + "importInvalidJson": "El archivo seleccionado no es un JSON válido.", + "importDone": "Se importaron {bypass} omisiones · {hosts} hosts · {agents} agentes", + "save": "Guardar", + "saving": "Guardando…", + "cancel": "Cancelar", + "back": "Atrás", + "next": "Siguiente", + "done": "Listo", + "loading": "Cargando…", + "riskNoticeTitle": "Reconocimiento de riesgos", + "riskNoticeBody": "AgentBridge interceptará el tráfico HTTPS de este agente redirigiendo sus hosts de API mediante DNS. Actívalo solo si aceptas la responsabilidad de cumplir los términos de servicio del agente y cualquier política de red aplicable.", "pageMoved": { - "goNow": "Go now", - "message": "The MITM Proxy now lives under AgentBridge.", - "title": "This page has moved" + "goNow": "Ir ahora", + "message": "El proxy MITM ahora se encuentra en AgentBridge.", + "title": "Esta página se ha trasladado" } }, "providerStats": { - "unknownError": "Unknown error", - "loading": "Loading provider stats...", - "loadFailed": "Failed to load provider stats: {error}", - "retry": "Retry", - "updated": "Updated {time}", - "refresh": "Refresh", - "totalRequests": "Total Requests", - "avgLatency": "Avg Latency", - "successRate": "Success Rate", - "activeProviders": "Active Providers", - "providerBreakdown": "Provider Breakdown", - "providerCount": "{count} providers", - "provider": "Provider", - "requests": "Requests", - "success": "Success", - "rate": "Rate", - "tokensIn": "Tokens In", - "tokensOut": "Tokens Out", - "ttftAfterTool": "TTFT After Tool", - "gapAfterTool": "Gap After Tool", - "model": "Model", - "noProviderData": "No provider data recorded yet.", - "comboMetrics": "Combo Metrics", - "comboMetricsDescription": "Per-combo latency and throughput from streaming", - "avgTtft": "Avg TTFT", - "avgTotal": "Avg Total", - "requestTelemetry": "Request Telemetry", - "requestTelemetryDescription": "7-phase pipeline breakdown (last 5 minutes)" + "unknownError": "Error desconocido", + "loading": "Cargando estadísticas de proveedores...", + "loadFailed": "No se pudieron cargar las estadísticas de proveedores: {error}", + "retry": "Reintentar", + "updated": "Actualizado {time}", + "refresh": "Actualizar", + "totalRequests": "Solicitudes totales", + "avgLatency": "Latencia media", + "successRate": "Tasa de éxito", + "activeProviders": "Proveedores activos", + "providerBreakdown": "Desglose por proveedor", + "providerCount": "{count} proveedores", + "provider": "Proveedor", + "requests": "Solicitudes", + "success": "Correctas", + "rate": "Tasa", + "tokensIn": "Tokens de entrada", + "tokensOut": "Tokens de salida", + "ttftAfterTool": "TTFT después de la herramienta", + "gapAfterTool": "Intervalo después de la herramienta", + "model": "Modelo", + "noProviderData": "Aún no se han registrado datos de proveedores.", + "comboMetrics": "Métricas por combinación", + "comboMetricsDescription": "Latencia y rendimiento por combinación a partir del streaming", + "avgTtft": "TTFT medio", + "avgTotal": "Total medio", + "requestTelemetry": "Telemetría de solicitudes", + "requestTelemetryDescription": "Desglose del proceso de 7 fases (últimos 5 minutos)" }, "relay": { - "title": "Serverless Relay Proxies", - "description": "Create public API endpoints that proxy to OmniRoute with rate limiting and access control", - "created": "Relay token created", - "createFailed": "Failed to create token", - "toggleFailed": "Failed to toggle token", - "deleteConfirm": "Delete this relay token? This cannot be undone.", - "deleted": "Token deleted", - "deleteFailed": "Failed to delete token", - "cancel": "Cancel", - "newToken": "New Relay Token", - "createTitle": "Create Relay Token", - "nameRequired": "Name *", - "tokenDescription": "Description", - "descriptionPlaceholder": "For my serverless functions", - "maxPerMinute": "Max Requests/Minute", - "maxPerDay": "Max Requests/Day", - "createButton": "Create Token", - "createdTitle": "Token Created — Copy it now!", - "tokenFor": "Token for {name}:", - "shownOnce": "This token will not be shown again. Store it securely.", - "dismiss": "Dismiss", - "usage": "Usage", - "usageDescription": "Send requests to your relay endpoint:", - "tokenCount": "Relay Tokens ({count})", - "loading": "Loading...", - "empty": "No relay tokens configured. Create one to get started.", - "disable": "Disable", - "enable": "Enable", - "delete": "Delete" + "title": "Proxies de retransmisión sin servidor", + "description": "Crea endpoints de API públicos que actúan como proxy de OmniRoute con limitación de solicitudes y control de acceso", + "created": "Token de retransmisión creado", + "createFailed": "No se pudo crear el token", + "toggleFailed": "No se pudo cambiar el estado del token", + "deleteConfirm": "¿Eliminar este token de retransmisión? Esta acción no se puede deshacer.", + "deleted": "Token eliminado", + "deleteFailed": "No se pudo eliminar el token", + "cancel": "Cancelar", + "newToken": "Nuevo token de retransmisión", + "createTitle": "Crear token de retransmisión", + "nameRequired": "Nombre *", + "tokenDescription": "Descripción", + "descriptionPlaceholder": "Para mis funciones sin servidor", + "maxPerMinute": "Máximo de solicitudes/minuto", + "maxPerDay": "Máximo de solicitudes/día", + "createButton": "Crear token", + "createdTitle": "Token creado: ¡cópialo ahora!", + "tokenFor": "Token para {name}:", + "shownOnce": "Este token no volverá a mostrarse. Guárdalo de forma segura.", + "dismiss": "Cerrar", + "usage": "Uso", + "usageDescription": "Envía solicitudes a tu endpoint de retransmisión:", + "tokenCount": "Tokens de retransmisión ({count})", + "loading": "Cargando...", + "empty": "No hay tokens de retransmisión configurados. Crea uno para empezar.", + "disable": "Deshabilitar", + "enable": "Habilitar", + "delete": "Eliminar" }, "trafficInspector": { - "title": "Traffic Inspector", - "subtitle": "Monitor LLM calls and debug any application's HTTPS traffic", - "captureModesTitle": "Capture Modes", + "title": "Inspector de tráfico", + "subtitle": "Supervisa las llamadas a LLM y depura el tráfico HTTPS de cualquier aplicación", + "captureModesTitle": "Modos de captura", "agentBridgeMode": "AgentBridge", - "agentBridgeModeDesc": "Capture traffic from all connected IDE agents", - "customHostsMode": "Custom Hosts", - "customHostsModeDesc": "Add specific hosts to intercept", - "httpProxyMode": "HTTP Proxy", - "httpProxyModeDesc": "Use HTTP_PROXY environment variable", - "systemWideMode": "System-wide", - "systemWideModeDesc": "Intercept all system traffic (advanced)", - "tproxyMode": "TPROXY Decrypt", - "tproxyModeUnavailable": "TPROXY decrypt requires Linux + root + the native addon", - "filterBarTitle": "Filters", - "profileLlmOnly": "LLM only", - "profileCustom": "Custom", - "profileAll": "All", - "filterHost": "Filter host…", - "filterAgent": "Agent", - "filterStatus": "Status", - "pauseBtn": "Pause", - "resumeBtn": "Resume", - "clearBtn": "Clear", - "exportHar": "Export .har", - "recordSession": "REC", - "stopSession": "Stop", - "liveBadge": "live", - "offlineBadge": "offline", - "noRequests": "No requests captured yet.", - "noRequestsDesc": "Make sure AgentBridge is running or enable another capture mode.", - "selectRequest": "Select a request to inspect it.", - "tabConversation": "Conversation", - "tabHeaders": "Headers", - "tabRequest": "Request", - "tabResponse": "Response", - "tabTiming": "Timing", + "agentBridgeModeDesc": "Captura el tráfico de todos los agentes de IDE conectados", + "customHostsMode": "Hosts personalizados", + "customHostsModeDesc": "Añade hosts específicos para interceptarlos", + "httpProxyMode": "Proxy HTTP", + "httpProxyModeDesc": "Usa la variable de entorno HTTP_PROXY", + "systemWideMode": "En todo el sistema", + "systemWideModeDesc": "Interceptar todo el tráfico del sistema (avanzado)", + "tproxyMode": "Descifrado TPROXY", + "tproxyModeUnavailable": "El descifrado TPROXY requiere Linux + acceso root + el complemento nativo", + "filterBarTitle": "Filtros", + "profileLlmOnly": "Solo LLM", + "profileCustom": "Personalizado", + "profileAll": "Todos", + "filterHost": "Filtrar host…", + "filterAgent": "Agente", + "filterStatus": "Estado", + "pauseBtn": "Pausar", + "resumeBtn": "Reanudar", + "clearBtn": "Borrar", + "exportHar": "Exportar .har", + "recordSession": "GRAB.", + "stopSession": "Detener", + "liveBadge": "en línea", + "offlineBadge": "sin conexión", + "noRequests": "Aún no se ha capturado ninguna solicitud.", + "noRequestsDesc": "Asegúrate de que AgentBridge esté en ejecución o habilita otro modo de captura.", + "selectRequest": "Selecciona una solicitud para inspeccionarla.", + "tabConversation": "Conversación", + "tabHeaders": "Encabezados", + "tabRequest": "Solicitud", + "tabResponse": "Respuesta", + "tabTiming": "Tiempos", "tabLlm": "LLM", - "tabStats": "Stats", - "requestHeaders": "Request Headers", - "responseHeaders": "Response Headers", - "rawEvents": "Raw events", - "mergedView": "Merged view", - "noBody": "No body.", - "streaming": "streaming…", - "manageHosts": "Manage hosts", - "copySnippet": "Copy proxy snippet", - "addHost": "Add", + "tabStats": "Estadísticas", + "requestHeaders": "Encabezados de la solicitud", + "responseHeaders": "Encabezados de la respuesta", + "rawEvents": "Eventos sin procesar", + "mergedView": "Vista combinada", + "noBody": "Sin cuerpo.", + "streaming": "transmitiendo…", + "manageHosts": "Gestionar hosts", + "copySnippet": "Copiar fragmento de proxy", + "addHost": "Añadir", "hostPlaceholder": "api.openai.com", - "noHostsYet": "No custom hosts added yet.", - "noSessionsYet": "No sessions yet", - "allTraffic": "All traffic (no session)", - "sessionsDropdown": "Sessions", - "annotationPlaceholder": "Add a note…", - "contextFingerprint": "Context fingerprint", - "llmProvider": "Detected provider", - "llmApiKind": "API kind", - "llmModel": "Model", - "llmMessages": "Messages", - "llmStream": "Stream", - "llmMappedTo": "Mapped to", - "llmCostEstimate": "Cost estimate", - "systemProxyExitWarning": "System-wide proxy still active — leave page anyway?", - "customHostsTitle": "Custom Hosts", - "loading": "Loading…", - "copied": "Copied!", - "copy": "Copy", - "httpProxyTitle": "HTTP Proxy Snippet — port {port}", - "notRecording": "Not recording", - "anyStatus": "Any status", - "liveOnly": "Live", - "viewingRecordedSession": "Viewing recorded session", - "backToLive": "Back to live", - "untitledSession": "Untitled session", - "contextHistory": "Context History", - "modelResponse": "Model Response", - "conversationNoMessages": "No messages found in this request.", - "conversationNotAvailable": "Conversation data not available. This may not be an LLM request or the body could not be parsed.", - "loadingCharts": "Loading charts…", - "statsErrors": "Errors", - "statsLatency": "Latency (last 50 requests)", - "statsNoData": "No requests yet. Start a session recording to capture data for stats.", - "statsStatusDistribution": "Status distribution", - "statsSuccessful": "Successful", - "statsTotalRequests": "Total requests", - "timingProxyOverhead": "Proxy overhead", - "timingUpstreamResponse": "Upstream response", - "timingNoData": "No timing data available.", - "timingTotalLatency": "Total latency", - "timingTimestamp": "Timestamp", - "timingMethod": "Method", - "timingStatus": "Status", - "timingRequestSize": "Request size", - "timingResponseSize": "Response size", - "pausedNewBadge": "{count} new", - "clearContextFilter": "clear", - "invalidHostname": "Invalid hostname", - "invalidHost": "Invalid host", - "addHostFailed": "Failed to add host", - "networkError": "Network error", - "close": "Close", - "removeHost": "Remove {host}", - "requestDetails": "Request details", - "filterByContext": "Filter by this context", - "filteringContext": "Filtering: context {context}", - "clear": "clear", - "trafficProfile": "Traffic profile", - "roleSystem": "System", - "roleUser": "User", - "roleAssistant": "Assistant", - "roleTool": "Tool", - "expand": "Expand", - "collapse": "Collapse", - "systemPromptHidden": "System prompt hidden — click to expand", - "sessionName": "Session {id}", - "sessions": "Sessions", - "requestCountShort": "{count} reqs", - "deleteSession": "Delete session", - "saving": "Saving…", - "sensitiveHeaders": "Sensitive headers", - "show": "Show", - "hide": "Hide", - "name": "Name", - "value": "Value", - "noSseEvents": "No SSE events", - "noRequestBody": "No request body.", - "noResponseBody": "No response body.", - "formatted": "Formatted", - "raw": "Raw" + "noHostsYet": "Aún no se han añadido hosts personalizados.", + "noSessionsYet": "Aún no hay sesiones", + "allTraffic": "Todo el tráfico (sin sesión)", + "sessionsDropdown": "Sesiones", + "annotationPlaceholder": "Añadir una nota…", + "contextFingerprint": "Huella digital del contexto", + "llmProvider": "Proveedor detectado", + "llmApiKind": "Tipo de API", + "llmModel": "Modelo", + "llmMessages": "Mensajes", + "llmStream": "Transmisión", + "llmMappedTo": "Asignado a", + "llmCostEstimate": "Estimación de coste", + "systemProxyExitWarning": "El proxy de todo el sistema sigue activo. ¿Quieres salir de la página de todos modos?", + "customHostsTitle": "Hosts personalizados", + "loading": "Cargando…", + "copied": "¡Copiado!", + "copy": "Copiar", + "httpProxyTitle": "Fragmento de proxy HTTP — puerto {port}", + "notRecording": "Sin grabar", + "anyStatus": "Cualquier estado", + "liveOnly": "En directo", + "viewingRecordedSession": "Viendo la sesión grabada", + "backToLive": "Volver al directo", + "untitledSession": "Sesión sin título", + "contextHistory": "Historial de contexto", + "modelResponse": "Respuesta del modelo", + "conversationNoMessages": "No se encontraron mensajes en esta solicitud.", + "conversationNotAvailable": "Los datos de la conversación no están disponibles. Puede que no sea una solicitud a un LLM o que no se haya podido analizar el cuerpo.", + "loadingCharts": "Cargando gráficos…", + "statsErrors": "Errores", + "statsLatency": "Latencia (últimas 50 solicitudes)", + "statsNoData": "Todavía no hay solicitudes. Inicia la grabación de una sesión para capturar datos para las estadísticas.", + "statsStatusDistribution": "Distribución de estados", + "statsSuccessful": "Correctas", + "statsTotalRequests": "Solicitudes totales", + "timingProxyOverhead": "Sobrecarga del proxy", + "timingUpstreamResponse": "Respuesta del servidor de origen", + "timingNoData": "No hay datos de tiempo disponibles.", + "timingTotalLatency": "Latencia total", + "timingTimestamp": "Marca de tiempo", + "timingMethod": "Método", + "timingStatus": "Estado", + "timingRequestSize": "Tamaño de la solicitud", + "timingResponseSize": "Tamaño de la respuesta", + "pausedNewBadge": "{count} nuevas", + "clearContextFilter": "borrar", + "invalidHostname": "Nombre de host no válido", + "invalidHost": "Host no válido", + "addHostFailed": "No se pudo añadir el host", + "networkError": "Error de red", + "close": "Cerrar", + "removeHost": "Eliminar {host}", + "requestDetails": "Detalles de la solicitud", + "filterByContext": "Filtrar por este contexto", + "filteringContext": "Filtrando: contexto {context}", + "clear": "borrar", + "trafficProfile": "Perfil de tráfico", + "roleSystem": "Sistema", + "roleUser": "Usuario", + "roleAssistant": "Asistente", + "roleTool": "Herramienta", + "expand": "Expandir", + "collapse": "Contraer", + "systemPromptHidden": "Prompt del sistema oculto — haz clic para expandir", + "sessionName": "Sesión {id}", + "sessions": "Sesiones", + "requestCountShort": "{count} solicitudes", + "deleteSession": "Eliminar sesión", + "saving": "Guardando…", + "sensitiveHeaders": "Encabezados confidenciales", + "show": "Mostrar", + "hide": "Ocultar", + "name": "Nombre", + "value": "Valor", + "noSseEvents": "No hay eventos SSE", + "noRequestBody": "No hay cuerpo de solicitud.", + "noResponseBody": "No hay cuerpo de respuesta.", + "formatted": "Formateado", + "raw": "Sin formato" }, "cliCommon": { "concept": { "code": { - "title": "CLI Code", - "phrase": "Code tools you point at OmniRoute", - "flow": "You → CLI Code → OmniRoute → Provider", - "seeOther": "See →" + "title": "Código CLI", + "phrase": "Herramientas de código que conectas a OmniRoute", + "flow": "Tú → Código CLI → OmniRoute → Proveedor", + "seeOther": "Ver →" }, "agent": { - "title": "CLI Agents", - "phrase": "Broad-purpose autonomous CLI agents you point at OmniRoute", - "flow": "You → CLI Agent → OmniRoute → Provider", - "seeOther": "See →" + "title": "Agentes CLI", + "phrase": "Agentes CLI autónomos de propósito general que conectas a OmniRoute", + "flow": "Tú → Agente CLI → OmniRoute → Proveedor", + "seeOther": "Ver →" }, "acp": { - "title": "ACP Agents", + "title": "Agentes ACP", "phrase": "CLIs that OmniRoute spawns as execution backend (reverse flow)", - "warning": "Most users can ignore this — use only when an integration requires it.", - "flow": "Client → OmniRoute → spawn CLI (stdio/ACP) → response", - "seeOther": "See →" + "warning": "La mayoría de los usuarios puede ignorar esto; úsalo solo cuando una integración lo requiera.", + "flow": "Cliente → OmniRoute → iniciar CLI (stdio/ACP) → respuesta", + "seeOther": "Ver →" } }, "comparison": { - "title": "Understand the 3 CLI types in OmniRoute", - "thisPage": "This page", - "open": "Open →", + "title": "Comprende los 3 tipos de CLI en OmniRoute", + "thisPage": "Esta página", + "open": "Abrir →", "code": { - "title": "Code tool", - "desc": "Points to Omni", - "flow": "you → CLI → Omni → provider", - "examples": "e.g.: claude, codex" + "title": "Herramienta de código", + "desc": "Apunta a Omni", + "flow": "tú → CLI → Omni → proveedor", + "examples": "p. ej.: claude, codex" }, "agent": { - "title": "Broad autonomous agent", - "desc": "Points to Omni", - "flow": "you → agent → Omni", - "examples": "e.g.: hermes, goose" + "title": "Agente autónomo de propósito general", + "desc": "Apunta a Omni", + "flow": "tú → agente → Omni", + "examples": "p. ej.: hermes, goose" }, "acp": { - "title": "CLI used as backend by Omni", - "desc": "Reverse execution", - "flow": "Omni → spawn CLI → resp", - "examples": "e.g.: claude, codex (ACP)" + "title": "CLI utilizada como backend por Omni", + "desc": "Ejecución inversa", + "flow": "Omni → iniciar CLI → respuesta", + "examples": "p. ej.: claude, codex (ACP)" } }, "card": { - "detected": "Detected", - "notDetected": "Not detected", - "configured": "Configured", - "notConfigured": "Not configured", - "configure": "Configure →", - "howToInstall": "How to install →", - "versionNotFound": "not found", - "manualConfig": "Manual config", - "installGuide": "Install guide", - "endpointLabel": "Endpoint", - "baseUrlFull": "Full Base URL", - "baseUrlPartial": "Partial Base URL", - "refreshDetection": "Refresh detection", - "alsoAcp": "also ACP", - "connectProviderHint": "Connect a provider in Providers" + "detected": "Detectado", + "notDetected": "No detectado", + "configured": "Configurado", + "notConfigured": "No configurado", + "configure": "Configurar →", + "howToInstall": "Cómo instalar →", + "versionNotFound": "no encontrado", + "manualConfig": "Configuración manual", + "installGuide": "Guía de instalación", + "endpointLabel": "Punto de conexión", + "baseUrlFull": "URL base completa", + "baseUrlPartial": "URL base parcial", + "refreshDetection": "Actualizar detección", + "alsoAcp": "también ACP", + "connectProviderHint": "Conecta un proveedor en Proveedores" }, "detail": { - "back": "Back", - "apply": "Save", - "reset": "Clear", - "manualConfig": "Manual configuration", - "vendor": "Vendor", - "category": "Type", - "detectionStatus": "Detection", - "configStatus": "Configuration", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", - "modelMappingLabel": "Model mapping", - "noActiveProviders": "No active providers.", - "noActiveProvidersDesc": "Go to Providers to connect at least 1 provider before configuring the CLI.", - "openProviders": "Open Providers →" + "back": "Atrás", + "apply": "Guardar", + "reset": "Limpiar", + "manualConfig": "Configuración manual", + "vendor": "Proveedor", + "category": "Tipo", + "detectionStatus": "Detección", + "configStatus": "Configuración", + "baseUrlLabel": "URL base", + "apiKeyLabel": "Clave de API", + "modelMappingLabel": "Asignación de modelos", + "noActiveProviders": "No hay proveedores activos.", + "noActiveProvidersDesc": "Ve a Proveedores para conectar al menos 1 proveedor antes de configurar la CLI.", + "openProviders": "Abrir Proveedores →" } }, "cliCode": { - "pageTitle": "CLI Code's", - "pageSubtitle": "Code tools pointing to OmniRoute", - "searchPlaceholder": "Search CLI…", - "filterDetectionLabel": "Detection", - "filterBaseUrlLabel": "Base URL", - "detectionAll": "All", - "detectionInstalled": "Installed", - "detectionNotFound": "Not found", - "baseUrlAll": "All", - "baseUrlFull": "Full", - "baseUrlPartial": "Partial" + "pageTitle": "CLI de código", + "pageSubtitle": "Herramientas de código conectadas a OmniRoute", + "searchPlaceholder": "Buscar CLI…", + "filterDetectionLabel": "Detección", + "filterBaseUrlLabel": "URL base", + "detectionAll": "Todos", + "detectionInstalled": "Instalados", + "detectionNotFound": "No encontrados", + "baseUrlAll": "Todos", + "baseUrlFull": "Completa", + "baseUrlPartial": "Parcial" }, "cliAgents": { - "pageTitle": "CLI Agents", - "pageSubtitle": "Broad-purpose autonomous CLI agents", - "refreshDetection": "Refresh detection", - "searchPlaceholder": "Search agent…", - "detectionFilterLabel": "Detection", - "detectionAll": "All", - "detectionInstalled": "Installed", - "detectionNotInstalled": "Not installed", - "visibleCount": "{count} visible", - "emptyState": "No CLI agents found with the current filters." + "pageTitle": "Agentes CLI", + "pageSubtitle": "Agentes CLI autónomos de uso general", + "refreshDetection": "Actualizar detección", + "searchPlaceholder": "Buscar agente…", + "detectionFilterLabel": "Detección", + "detectionAll": "Todos", + "detectionInstalled": "Instalados", + "detectionNotInstalled": "No instalados", + "visibleCount": "{count} visibles", + "emptyState": "No se encontraron agentes CLI con los filtros actuales." }, "acpAgents": { - "pageTitle": "ACP Agents", - "pageSubtitle": "CLIs that OmniRoute spawns as execution backend", - "scanning": "Detecting agents…", - "refresh": "Refresh", - "setupGuideTitle": "Setup guide", - "setupGuideDetectCliTitle": "Detect CLI", - "setupGuideDetectCliDesc": "Agents are identified by running the --version command in PATH.", - "setupGuideCustomAgentTitle": "Add custom agent", - "setupGuideCustomAgentDesc": "Fill in the form below to register a custom CLI agent.", - "setupGuideCommandMissingTitle": "Command not found", - "setupGuideCommandMissingDesc": "Check that the binary is in PATH.", - "fingerprintSettingsHint": "Configure routing and fingerprints in", - "settingsRoutingLink": "Settings → Routing", - "installed": "Installed", - "notFound": "Not found", - "builtIn": "Built-in", - "custom": "Custom", - "agentUseCaseHint": "Available for spawn via ACP.", - "remove": "Remove", - "addCustomAgent": "Add custom agent", - "addCustomAgentDesc": "Register a custom CLI agent to be spawned via ACP.", - "addAgent": "Add agent", - "agentName": "Name", - "agentNamePlaceholder": "e.g.: My Agent", - "binaryName": "Binary", - "binaryNamePlaceholder": "e.g.: myagent", - "versionCommand": "Version command", - "versionCommandPlaceholder": "e.g.: myagent --version", - "spawnArgs": "Spawn arguments", - "spawnArgsPlaceholder": "e.g.: --quiet, --json", - "cliCodeRedirectCta": "Open CLI Code" + "pageTitle": "Agentes ACP", + "pageSubtitle": "CLI que OmniRoute inicia como backend de ejecución", + "scanning": "Detectando agentes…", + "refresh": "Actualizar", + "setupGuideTitle": "Guía de configuración", + "setupGuideDetectCliTitle": "Detectar CLI", + "setupGuideDetectCliDesc": "Los agentes se identifican ejecutando el comando --version en PATH.", + "setupGuideCustomAgentTitle": "Añadir agente personalizado", + "setupGuideCustomAgentDesc": "Completa el siguiente formulario para registrar un agente CLI personalizado.", + "setupGuideCommandMissingTitle": "Comando no encontrado", + "setupGuideCommandMissingDesc": "Comprueba que el binario esté en PATH.", + "fingerprintSettingsHint": "Configura el enrutamiento y las huellas digitales en", + "settingsRoutingLink": "Configuración → Enrutamiento", + "installed": "Instalado", + "notFound": "No encontrado", + "builtIn": "Integrado", + "custom": "Personalizado", + "agentUseCaseHint": "Disponible para iniciar mediante ACP.", + "remove": "Eliminar", + "addCustomAgent": "Añadir agente personalizado", + "addCustomAgentDesc": "Registra un agente CLI personalizado para iniciarlo mediante ACP.", + "addAgent": "Añadir agente", + "agentName": "Nombre", + "agentNamePlaceholder": "p. ej.: Mi agente", + "binaryName": "Binario", + "binaryNamePlaceholder": "p. ej.: myagent", + "versionCommand": "Comando de versión", + "versionCommandPlaceholder": "p. ej.: myagent --version", + "spawnArgs": "Argumentos de inicio", + "spawnArgsPlaceholder": "p. ej.: --quiet, --json", + "cliCodeRedirectCta": "Abrir código de CLI" }, "agentSkills": { "catalog": { "omni-auth": { - "name": "Authentication", - "description": "Manage API key authentication and session tokens. Start here to authenticate requests via Bearer token, obtain session cookies, and configure login requirements for the OmniRoute API." + "name": "Autenticación", + "description": "Gestiona la autenticación mediante claves de API y los tokens de sesión. Empieza aquí para autenticar solicitudes mediante un token Bearer, obtener cookies de sesión y configurar los requisitos de inicio de sesión para la API de OmniRoute." }, "omni-providers": { - "name": "Providers", - "description": "Manage provider connections, API keys, OAuth flows, and connection tests via the REST API. List, add, update, remove, and test AI provider integrations (OpenAI, Anthropic, Gemini, and 160+)." + "name": "Proveedores", + "description": "Gestiona conexiones de proveedores, claves de API, flujos de OAuth y pruebas de conexión mediante la API REST. Consulta, añade, actualiza, elimina y prueba integraciones de proveedores de IA (OpenAI, Anthropic, Gemini y más de 160)." }, "omni-models": { - "name": "Models", - "description": "Query available AI models across all configured providers. List models, resolve model aliases, and browse the full model catalog including provider-specific variants." + "name": "Modelos", + "description": "Consulta los modelos de IA disponibles en todos los proveedores configurados. Enumera modelos, resuelve alias de modelos y explora el catálogo completo, incluidas las variantes específicas de cada proveedor." }, "omni-combos-routing": { - "name": "Combos & Routing", - "description": "Create and manage routing combos with 14 strategies (priority, weighted, round-robin, Auto-combo, etc.). Configure fallback chains, test routing outcomes, and retrieve combo metrics." + "name": "Combinaciones y enrutamiento", + "description": "Crea y gestiona combinaciones de enrutamiento con 14 estrategias (prioridad, ponderada, turno rotativo, combinación automática, etc.). Configura cadenas de respaldo, prueba los resultados del enrutamiento y obtén métricas de las combinaciones." }, "omni-api-keys": { - "name": "API Keys", - "description": "Create, list, rotate, and revoke OmniRoute API keys. Control per-key scopes, spending limits, and expiration. Keys gate access to all proxy and management endpoints." + "name": "Claves de API", + "description": "Crea, consulta, rota y revoca claves de API de OmniRoute. Controla los ámbitos, límites de gasto y vencimientos de cada clave. Las claves controlan el acceso a todos los endpoints del proxy y de gestión." }, "omni-usage-logs": { - "name": "Usage & Logs", - "description": "Access detailed call logs and usage analytics. Filter by provider, model, time range, status, and cost. Export logs and aggregate token usage across all connections." + "name": "Uso y registros", + "description": "Accede a registros detallados de llamadas y análisis de uso. Filtra por proveedor, modelo, intervalo de tiempo, estado y coste. Exporta registros y agrega el uso de tokens de todas las conexiones." }, "omni-budget": { - "name": "Budget & Rate Limits", - "description": "Configure spending limits, token quotas, and rate-limit policies per API key or globally. Inspect current consumption and enforce cost controls across providers." + "name": "Presupuesto y límites de frecuencia", + "description": "Configura límites de gasto, cuotas de tokens y políticas de limitación de frecuencia por clave de API o de forma global. Consulta el consumo actual y aplica controles de costes a todos los proveedores." }, "omni-settings": { - "name": "Settings", - "description": "Read and update global application settings: system prompts, thinking budget, IP filters, payload rules, combo defaults, and require-login configuration." + "name": "Configuración", + "description": "Consulta y actualiza la configuración global de la aplicación: prompts del sistema, presupuesto de razonamiento, filtros de IP, reglas de carga útil, valores predeterminados de combos y configuración de inicio de sesión obligatorio." }, "omni-proxies": { - "name": "Proxy Configuration", - "description": "Configure HTTP/HTTPS/SOCKS proxies for upstream provider requests. Set per-provider or global proxy rules, test connectivity, and manage proxy rotation." + "name": "Configuración del proxy", + "description": "Configura proxies HTTP/HTTPS/SOCKS para las solicitudes a proveedores ascendentes. Define reglas de proxy globales o por proveedor, prueba la conectividad y gestiona la rotación de proxies." }, "omni-cache": { - "name": "Cache", - "description": "Manage the LLM response cache. View cache statistics, clear entries, configure TTL policies, and control semantic-similarity caching thresholds." + "name": "Caché", + "description": "Gestiona la caché de respuestas del LLM. Consulta las estadísticas de la caché, elimina entradas, configura políticas de TTL y controla los umbrales de almacenamiento en caché por similitud semántica." }, "omni-compression": { - "name": "Compression", - "description": "Configure RTK (command output), Caveman (prose), and stacked compression modes. Manage language packs, custom rules, and test prompt compression reducing tokens by 60–90%." + "name": "Compresión", + "description": "Configura los modos de compresión RTK (salida de comandos), Caveman (prosa) y combinados. Gestiona paquetes de idioma y reglas personalizadas, y prueba la compresión de prompts, que reduce los tokens entre un 60 y un 90 %." }, "omni-context-rtk": { - "name": "Context & RTK", - "description": "Configure RTK filters, context engineering rules, and context relay settings. Test compression with real prompt samples and manage context transformation pipelines." + "name": "Contexto y RTK", + "description": "Configura filtros RTK, reglas de ingeniería de contexto y ajustes de transmisión de contexto. Prueba la compresión con muestras reales de prompts y gestiona canalizaciones de transformación de contexto." }, "omni-resilience": { - "name": "Resilience & Monitoring", - "description": "Monitor provider health, circuit-breaker states, p50/p95/p99 latency metrics, and budget guard alerts. Inspect connection cooldowns and model lockouts in real time." + "name": "Resiliencia y supervisión", + "description": "Supervisa el estado de los proveedores, los estados de los disyuntores, las métricas de latencia p50/p95/p99 y las alertas de límite de presupuesto. Inspecciona en tiempo real los períodos de espera de las conexiones y los bloqueos de modelos." }, "omni-cli-tools": { - "name": "CLI Tools", - "description": "Manage CLI tool integrations exposed via the API. List, configure, and invoke CLI tool plugins that extend OmniRoute's automation surface." + "name": "Herramientas de CLI", + "description": "Gestiona las integraciones de herramientas de CLI expuestas mediante la API. Enumera, configura e invoca complementos de herramientas de CLI que amplían las capacidades de automatización de OmniRoute." }, "omni-tunnels": { - "name": "Tunnels", - "description": "Create and manage secure tunnels (ngrok, Cloudflare Tunnel, custom) to expose OmniRoute to the internet or share access with remote agents and CI pipelines." + "name": "Túneles", + "description": "Crea y gestiona túneles seguros (ngrok, Cloudflare Tunnel, personalizados) para exponer OmniRoute a Internet o compartir el acceso con agentes remotos y canalizaciones de CI." }, "omni-sync-cloud": { - "name": "Cloud Sync", - "description": "Synchronise OmniRoute configuration, provider connections, and settings to/from cloud storage. Manage cloud worker authentication and remote backup targets." + "name": "Sincronización con la nube", + "description": "Sincroniza la configuración, las conexiones con proveedores y los ajustes de OmniRoute con el almacenamiento en la nube o desde este. Gestiona la autenticación de trabajadores en la nube y los destinos remotos de copias de seguridad." }, "omni-db-backups": { - "name": "Database & Backups", - "description": "Trigger system backups, restore from backup files, and manage the SQLite database lifecycle. Supports export, import, and incremental snapshot strategies." + "name": "Base de datos y copias de seguridad", + "description": "Inicia copias de seguridad del sistema, restaura desde archivos de copia de seguridad y gestiona el ciclo de vida de la base de datos SQLite. Admite estrategias de exportación, importación e instantáneas incrementales." }, "omni-webhooks": { "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Registra, enumera, prueba y elimina endpoints de webhook. Configura suscripciones a eventos (request.completed, request.failed, quota.exceeded, etc.) y gestiona los reintentos de entrega." }, "omni-mcp": { - "name": "MCP Server", - "description": "Connect to the OmniRoute MCP server (110 tools, 3 transports: SSE/stdio/HTTP). Covers routing, cache, compression, memory, skills, providers, and audit tools across 33 permission scopes." + "name": "Servidor MCP", + "description": "Conéctate al servidor MCP de OmniRoute (110 herramientas, 3 transportes: SSE/stdio/HTTP). Abarca herramientas de enrutamiento, caché, compresión, memoria, habilidades, proveedores y auditoría en 33 ámbitos de permisos." }, "omni-agents-a2a": { - "name": "Agents & A2A Protocol", - "description": "Interact with OmniRoute via JSON-RPC 2.0 agent-to-agent protocol. 6 built-in A2A skills: smart-routing, quota-management, provider-discovery, cost-analysis, health-report, list-capabilities." + "name": "Agentes y protocolo A2A", + "description": "Interactúa con OmniRoute mediante el protocolo de agente a agente JSON-RPC 2.0. 6 habilidades A2A integradas: smart-routing, quota-management, provider-discovery, cost-analysis, health-report, list-capabilities." }, "omni-version-manager": { - "name": "Version Manager", - "description": "Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints." + "name": "Gestor de versiones", + "description": "Instala, inicia, detén, reinicia y actualiza servicios integrados (9Router, CLIProxyAPI). Supervisa el estado de los servicios, recupera registros y configura el inicio automático de endpoints de servicios exclusivamente locales." }, "omni-inference": { - "name": "Inference (OpenAI-compatible)", - "description": "The core OpenAI-compatible inference endpoints: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank, and the Responses API. The primary integration surface for AI agents." + "name": "Inferencia (compatible con OpenAI)", + "description": "Los endpoints principales de inferencia compatibles con OpenAI: finalizaciones de chat, embeddings, imágenes, audio (TTS/STT), moderaciones, reclasificación y la API Responses. La principal superficie de integración para agentes de IA." }, "cli-serve": { - "name": "CLI: Serve", - "description": "Start, stop, and restart the OmniRoute server from the CLI. Manage daemon mode, port configuration, auto-recovery, system tray integration, and the dashboard open shortcut." + "name": "CLI: Servidor", + "description": "Inicia, detén y reinicia el servidor OmniRoute desde la CLI. Gestiona el modo demonio, la configuración del puerto, la recuperación automática, la integración con la bandeja del sistema y el acceso directo para abrir el panel." }, "cli-health": { - "name": "CLI: Health", - "description": "Check server health, component status, and live metrics from the CLI. Run `health`, `health components`, and `health watch` for a real-time dashboard of circuit breakers and provider status." + "name": "CLI: Estado", + "description": "Comprueba el estado del servidor, el estado de los componentes y las métricas en directo desde la CLI. Ejecuta `health`, `health components` y `health watch` para obtener un panel en tiempo real de los disyuntores y el estado de los proveedores." }, "cli-providers": { - "name": "CLI: Providers", - "description": "Manage provider connections from the CLI: list available/configured providers, add, test, test-all, validate, rotate API keys, and view per-provider metrics." + "name": "CLI: Proveedores", + "description": "Gestiona las conexiones con proveedores desde la CLI: enumera los proveedores disponibles y configurados, añade, prueba, prueba todos, valida, rota claves de API y consulta las métricas de cada proveedor." }, "cli-keys": { - "name": "CLI: API Keys", - "description": "Create, list, rotate, and revoke OmniRoute API keys from the CLI. Manage OAuth flows for provider authentication and inspect key scopes and expiration." + "name": "CLI: Claves de API", + "description": "Crea, enumera, rota y revoca claves de API de OmniRoute desde la CLI. Gestiona los flujos OAuth para la autenticación de proveedores e inspecciona los ámbitos y la caducidad de las claves." }, "cli-models": { - "name": "CLI: Models", - "description": "Query available AI models, list model aliases, and browse the full model catalog from the CLI. Filter by provider, search by capability, and resolve model name variants." + "name": "CLI: Modelos", + "description": "Consulta los modelos de IA disponibles, enumera los alias de modelos y explora el catálogo completo de modelos desde la CLI. Filtra por proveedor, busca por capacidad y resuelve variantes de nombres de modelos." }, "cli-chat": { "name": "CLI: Chat", - "description": "Send chat completions, stream responses, and start an interactive REPL session from the CLI. Supports all OmniRoute providers, combo routing, and system prompt configuration." + "description": "Envía completados de chat, transmite respuestas e inicia una sesión REPL interactiva desde la CLI. Compatible con todos los proveedores de OmniRoute, el enrutamiento combinado y la configuración del prompt del sistema." }, "cli-routing": { - "name": "CLI: Routing & Combos", - "description": "Create, list, update, and delete routing combos from the CLI. Test routing strategies, inspect combo metrics, and configure fallback chains interactively." + "name": "CLI: Enrutamiento y combinaciones", + "description": "Crea, muestra, actualiza y elimina combinaciones de enrutamiento desde la CLI. Prueba estrategias de enrutamiento, consulta las métricas de las combinaciones y configura cadenas de respaldo de forma interactiva." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", - "description": "Inspect and manage circuit-breaker states, connection cooldowns, quota limits, and backoff levels from the CLI. Reset stuck providers and configure resilience thresholds." + "name": "CLI: Resiliencia y cuotas", + "description": "Consulta y administra los estados de los disyuntores, los tiempos de espera de las conexiones, los límites de cuota y los niveles de espera exponencial desde la CLI. Restablece proveedores bloqueados y configura umbrales de resiliencia." }, "cli-compression": { - "name": "CLI: Compression", - "description": "Configure and test prompt compression from the CLI. Manage RTK filters, Caveman rules, stacked compression modes, and preview compression output with real prompts." + "name": "CLI: Compresión", + "description": "Configura y prueba la compresión de prompts desde la CLI. Administra filtros RTK, reglas de Caveman y modos de compresión apilados, y previsualiza el resultado de la compresión con prompts reales." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", - "description": "Manage context engineering configurations, RTK filter sets, and conversation sessions from the CLI. Apply context-relay settings and inspect active context pipelines." + "name": "CLI: Contextos y sesiones", + "description": "Administra configuraciones de ingeniería de contexto, conjuntos de filtros RTK y sesiones de conversación desde la CLI. Aplica ajustes de transmisión de contexto y consulta las canalizaciones de contexto activas." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", - "description": "View cost breakdowns, token usage, and call logs from the CLI. Filter by provider, model, or date range. Export usage reports and inspect per-connection spending." + "name": "CLI: Costes y uso", + "description": "Consulta desgloses de costes, uso de tokens y registros de llamadas desde la CLI. Filtra por proveedor, modelo o intervalo de fechas. Exporta informes de uso y consulta el gasto por conexión." }, "cli-mcp": { "name": "CLI: MCP", - "description": "Inspect the MCP server status, list registered tools and scopes, run tool invocations, and manage MCP audit logs from the CLI." + "description": "Consulta el estado del servidor MCP, muestra las herramientas y los ámbitos registrados, ejecuta invocaciones de herramientas y administra los registros de auditoría de MCP desde la CLI." }, "cli-a2a": { - "name": "CLI: A2A Protocol", - "description": "Interact with the OmniRoute A2A server from the CLI. Send tasks, inspect skill execution history, and test the JSON-RPC 2.0 agent-to-agent protocol interactively." + "name": "CLI: Protocolo A2A", + "description": "Interactúa con el servidor A2A de OmniRoute desde la CLI. Envía tareas, consulta el historial de ejecución de habilidades y prueba de forma interactiva el protocolo JSON-RPC 2.0 de agente a agente." }, "cli-tunnel": { - "name": "CLI: Tunnels", - "description": "Start and stop tunnel connections (ngrok, Cloudflare, custom) from the CLI. Inspect active tunnel URLs, configure authentication, and test external reachability." + "name": "CLI: Túneles", + "description": "Inicia y detén conexiones de túnel (ngrok, Cloudflare, personalizadas) desde la CLI. Consulta las URL de los túneles activos, configura la autenticación y prueba la accesibilidad externa." }, "cli-backup-sync": { - "name": "CLI: Backup & Sync", - "description": "Backup and restore OmniRoute data from the CLI. Trigger incremental snapshots, sync to cloud storage, manage backup schedules, and restore from archive files." + "name": "CLI: Copias de seguridad y sincronización", + "description": "Crea copias de seguridad y restaura datos de OmniRoute desde la CLI. Activa instantáneas incrementales, sincroniza con el almacenamiento en la nube, administra programaciones de copias de seguridad y restaura desde archivos comprimidos." }, "cli-policy-audit": { - "name": "CLI: Policy & Audit", - "description": "Inspect audit logs, manage access policies, view telemetry data, and review request history from the CLI. Filter by event type, user, or time range for compliance workflows." + "name": "CLI: Políticas y auditoría", + "description": "Consulta registros de auditoría, administra políticas de acceso, visualiza datos de telemetría y revisa el historial de solicitudes desde la CLI. Filtra por tipo de evento, usuario o intervalo de tiempo para flujos de trabajo de cumplimiento normativo." }, "cli-batches": { - "name": "CLI: Batches & Files", - "description": "Submit and monitor batch inference jobs from the CLI. Upload and manage files for batch processing, retrieve results, and integrate batch pipelines with CI/CD workflows." + "name": "CLI: Lotes y archivos", + "description": "Envía y supervisa trabajos de inferencia por lotes desde la CLI. Carga y administra archivos para el procesamiento por lotes, recupera resultados e integra canalizaciones por lotes con flujos de trabajo de CI/CD." }, "cli-eval": { - "name": "CLI: Evals", - "description": "Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI." + "name": "CLI: Evaluaciones", + "description": "Crea y ejecuta conjuntos de evaluaciones, sigue en directo el progreso de las pruebas comparativas, consulta cuadros de puntuación, compara el rendimiento de los modelos e integra ejecuciones de evaluaciones con flujos de trabajo de CI desde la CLI." }, "cli-plugins-skills": { - "name": "CLI: Plugins, Skills & Memory", - "description": "Manage Omni Skills (list, install, test, remove), plugins (create, configure), and persistent memory (search, add, clear) from the CLI." + "name": "CLI: Complementos, habilidades y memoria", + "description": "Administra Omni Skills (mostrar, instalar, probar y eliminar), complementos (crear y configurar) y memoria persistente (buscar, añadir y borrar) desde la CLI." }, "cli-setup": { - "name": "CLI: Setup & Config", - "description": "Run initial setup, configure global CLI settings, manage environment variables, check for updates, and configure autostart via the CLI setup and config commands." + "name": "CLI: Instalación y configuración", + "description": "Ejecuta la instalación inicial, configura los ajustes globales de la CLI, administra variables de entorno, busca actualizaciones y configura el inicio automático mediante los comandos de instalación y configuración de la CLI." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", - "description": "Detect installed CLI coding tools (Claude Code, Codex, Cursor, Copilot, Cline and more), search GitHub for matching agent skills, and install them to the detected tools via OmniRoute's built-in APIs." + "name": "CLI: Recopilador de habilidades de agentes", + "description": "Detecta herramientas de programación mediante CLI instaladas (Claude Code, Codex, Cursor, Copilot, Cline y otras), busca en GitHub habilidades de agentes compatibles y las instala en las herramientas detectadas mediante las API integradas de OmniRoute." }, "config-codex-cli": { - "name": "Config: Codex CLI", - "description": "Step-by-step agent workflow to configure the OpenAI Codex CLI on any machine (Linux, macOS, Windows) to use OmniRoute as an OpenAI-compatible backend. Detects OS and shell, writes config.toml and 7 named profiles, sets environment variables, and verifies the setup." + "name": "Configuración: Codex CLI", + "description": "Flujo de trabajo guiado paso a paso para configurar OpenAI Codex CLI en cualquier equipo (Linux, macOS, Windows) y usar OmniRoute como backend compatible con OpenAI. Detecta el sistema operativo y el shell, escribe config.toml y 7 perfiles con nombre, establece variables de entorno y verifica la configuración." }, "omni-github-skills": { - "name": "GitHub Skill Discovery", - "description": "Search, score, scan, and import agent skills from GitHub repositories that contain SKILL.md, CLAUDE.md, .cursorrules, and similar agent skill files. Discover community skills across 160+ provider categories, evaluate relevance with heuristic scoring, check for malware or hardcoded secrets, and install into Hermes, Claude Code, Gemini CLI, or OpenCode agent directories." + "name": "Descubrimiento de habilidades en GitHub", + "description": "Busca, puntúa, analiza e importa habilidades de agentes desde repositorios de GitHub que contienen SKILL.md, CLAUDE.md, .cursorrules y archivos similares de habilidades de agentes. Descubre habilidades de la comunidad en más de 160 categorías de proveedores, evalúa su relevancia mediante puntuación heurística, comprueba si contienen malware o secretos codificados directamente y las instala en los directorios de agentes de Hermes, Claude Code, Gemini CLI u OpenCode." } }, - "pageTitle": "Agent Skills", - "pageSubtitle": "Teach your agent to operate OmniRoute — 23 API areas + 21 CLI families", + "pageTitle": "Habilidades de agentes", + "pageSubtitle": "Enseña a tu agente a utilizar OmniRoute: 23 áreas de API + 21 familias de CLI", "conceptCard": { "agent": { - "title": "Agent Skills — Outbound", - "description": "Agent Skills are machine-readable SKILL.md documents that external AI agents (Claude Code, Cursor, Copilot…) fetch from GitHub to learn how to operate OmniRoute via REST or CLI. They are read by the agent, not executed by OmniRoute.", - "crossLinkLabel": "Understand the difference →" + "title": "Habilidades de agentes — Salientes", + "description": "Las habilidades de agentes son documentos SKILL.md legibles por máquinas que agentes de IA externos (Claude Code, Cursor, Copilot…) obtienen de GitHub para aprender a utilizar OmniRoute mediante REST o CLI. El agente los lee; OmniRoute no los ejecuta.", + "crossLinkLabel": "Entender la diferencia →" }, "omni": { - "title": "Omni Skills — Inbound", - "description": "Omni Skills are sandbox tools that OmniRoute injects into the model's context on every request. They are executed by OmniRoute, not read by the agent.", - "crossLinkLabel": "Understand the difference →" + "title": "Omni Skills — Entrante", + "description": "Omni Skills son herramientas de entorno aislado que OmniRoute inyecta en el contexto del modelo en cada solicitud. Las ejecuta OmniRoute, no las lee el agente.", + "crossLinkLabel": "Entender la diferencia →" }, "comparison": { - "colAgent": "Agent Skills", + "colAgent": "Habilidades de agentes", "colOmni": "Omni Skills", "whatIs": { - "label": "What it is", - "agent": "Machine-readable SKILL.md that teaches an external agent to operate OmniRoute", - "omni": "Executable tools that OmniRoute injects as tools into LLM requests" + "label": "Qué es", + "agent": "Un archivo SKILL.md legible por máquina que enseña a un agente externo a utilizar OmniRoute", + "omni": "Herramientas ejecutables que OmniRoute inyecta como herramientas en las solicitudes a los LLM" }, "direction": { - "label": "Direction", - "agent": "Outbound — external agent learns to control OmniRoute", - "omni": "Inbound — OmniRoute gives tools to models passing through it" + "label": "Dirección", + "agent": "Saliente — el agente externo aprende a controlar OmniRoute", + "omni": "Entrante — OmniRoute proporciona herramientas a los modelos que pasan por él" }, "executor": { - "label": "Executor", - "agent": "External agent (reads markdown → acts via API/CLI)", - "omni": "OmniRoute itself (intercepts tool_calls, Docker sandbox)" + "label": "Ejecutor", + "agent": "Agente externo (lee Markdown → actúa mediante la API/CLI)", + "omni": "El propio OmniRoute (intercepta tool_calls, entorno aislado de Docker)" }, "storage": { - "label": "Storage", - "agent": "Dynamic catalog (/api/agent-skills) → SKILL.md on GitHub", + "label": "Almacenamiento", + "agent": "Catálogo dinámico (/api/agent-skills) → SKILL.md en GitHub", "omni": "SQLite (SkillsMP / skills.sh / local)" }, "tagline": { - "label": "Tagline", - "agent": "Teach your agent to use OmniRoute", - "omni": "Give executable tools to OmniRoute models" + "label": "Eslogan", + "agent": "Enseña a tu agente a usar OmniRoute", + "omni": "Proporciona herramientas ejecutables a los modelos de OmniRoute" } } }, "filters": { - "category": "Category", - "area": "Area", - "searchPlaceholder": "Search skills…" + "category": "Categoría", + "area": "Área", + "searchPlaceholder": "Buscar habilidades…" }, "categoryApi": "API", "categoryCli": "CLI", - "categoryConfig": "Config", - "filterAll": "All", - "coverageLabel": "Coverage", - "mcpUrl": "MCP URL", + "categoryConfig": "Configuración", + "filterAll": "Todas", + "coverageLabel": "Cobertura", + "mcpUrl": "URL de MCP", "a2aLink": "A2A", - "mcpPrompt": "Add this MCP endpoint to your agent to give it 37 OmniRoute tools.", - "a2aPrompt": "Register this Agent Card with your orchestrator to enable A2A task delegation.", - "refresh": "Refresh", - "copyUrl": "Copy URL", - "viewOnGithub": "View on GitHub", - "previewLoading": "Loading skill documentation…", - "previewError": "Failed to load skill documentation.", - "previewEmpty": "Select a skill to preview its documentation.", - "generateButton": "Generate missing skills", + "mcpPrompt": "Añade este endpoint de MCP a tu agente para proporcionarle 37 herramientas de OmniRoute.", + "a2aPrompt": "Registra esta tarjeta de agente con tu orquestador para habilitar la delegación de tareas A2A.", + "refresh": "Actualizar", + "copyUrl": "Copiar URL", + "viewOnGithub": "Ver en GitHub", + "previewLoading": "Cargando la documentación de la habilidad…", + "previewError": "No se pudo cargar la documentación de la habilidad.", + "previewEmpty": "Selecciona una habilidad para previsualizar su documentación.", + "generateButton": "Generar las habilidades que faltan", "coverageBar": { - "complete": "Complete", - "partial": "Partial" + "complete": "Completo", + "partial": "Parcial" }, - "noSkillsFound": "No skills found matching your filters.", - "regenerateConfirm": "This will regenerate all missing SKILL.md files. Continue?", - "regenerateRunning": "Regenerating skills…", - "regenerateSuccess": "Skills regenerated successfully.", - "regenerateError": "Failed to regenerate skills." + "noSkillsFound": "No se encontraron habilidades que coincidan con tus filtros.", + "regenerateConfirm": "Esto volverá a generar todos los archivos SKILL.md que falten. ¿Continuar?", + "regenerateRunning": "Regenerando habilidades…", + "regenerateSuccess": "Las habilidades se regeneraron correctamente.", + "regenerateError": "No se pudieron regenerar las habilidades." }, "freeProviderRankingsPage": { - "title": "Free Provider Rankings", - "subtitle": "Best free providers ranked by model ELO scores from Arena AI leaderboards", - "loading": "Loading rankings...", - "errorLoading": "Failed to load rankings", - "emptyState": "No rankings available yet. Arena ELO data syncs on startup (daily) — check back shortly, or trigger a manual sync. Disable Arena ELO Sync in Feature Flags or set ARENA_ELO_SYNC_ENABLED=false to opt out.", - "bestModel": "Best", - "allCategories": "All Categories", - "categoryDefault": "Default", - "categoryCoding": "Coding", - "categoryReview": "Review", - "categoryDocumentation": "Documentation", - "categoryDebugging": "Debugging", - "colRank": "Rank", - "colProvider": "Provider", - "colTopModel": "Top Model", - "colScore": "Score", - "colAvgScore": "Avg Score", - "colModels": "Models", - "colType": "Type", - "filterConfiguredOnly": "Configured only", - "filterAvailableOnly": "Available only", - "filterAvailableOnlyHelp": "Hide providers whose connections are all rate-limited or out of quota.", - "configuredOnly": "Configured Only", - "configuredOnlyHint": "Show only providers with active connections", - "noConfiguredProviders": "No configured providers found. Add a provider connection first.", - "colConfigured": "Status", + "title": "Clasificación de proveedores gratuitos", + "subtitle": "Los mejores proveedores gratuitos, clasificados según las puntuaciones ELO de sus modelos en las tablas de clasificación de Arena AI", + "loading": "Cargando clasificaciones...", + "errorLoading": "No se pudieron cargar las clasificaciones", + "emptyState": "Aún no hay clasificaciones disponibles. Los datos ELO de Arena se sincronizan al iniciar (diariamente). Vuelve a comprobarlo en breve o inicia una sincronización manual. Desactiva Sincronización ELO de Arena en Indicadores de funciones o establece ARENA_ELO_SYNC_ENABLED=false para excluirte.", + "bestModel": "Mejor", + "allCategories": "Todas las categorías", + "categoryDefault": "Predeterminado", + "categoryCoding": "Programación", + "categoryReview": "Revisión", + "categoryDocumentation": "Documentación", + "categoryDebugging": "Depuración", + "colRank": "Posición", + "colProvider": "Proveedor", + "colTopModel": "Mejor modelo", + "colScore": "Puntuación", + "colAvgScore": "Puntuación media", + "colModels": "Modelos", + "colType": "Tipo", + "filterConfiguredOnly": "Solo configurados", + "filterAvailableOnly": "Solo disponibles", + "filterAvailableOnlyHelp": "Ocultar los proveedores cuyas conexiones estén limitadas por completo o sin cuota.", + "configuredOnly": "Solo configurados", + "configuredOnlyHint": "Mostrar solo proveedores con conexiones activas", + "noConfiguredProviders": "No se encontraron proveedores configurados. Añade primero una conexión de proveedor.", + "colConfigured": "Estado", "typeAll": "Todos los tipos", "typeNoauth": "Sin registro", "typeOauth": "Inicio de sesión OAuth", "typeApikey": "Clave API", "sortTypeFirst": "Más sencillos primero", - "sortTypeFirstHelp": "Group by signup effort (No Signup → OAuth Login → API Key), keeping quality order within each group", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", - "typeLegend": "No Signup = zero setup · OAuth Login = sign in with your own account · API Key = bring your own key or that provider's free tier", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "sortTypeFirstHelp": "Agrupar por esfuerzo de registro (Sin registro → Inicio de sesión con OAuth → Clave de API), manteniendo el orden de calidad dentro de cada grupo", + "sortByReliability": "Los más fiables primero", + "sortByReliabilityHelp": "Ordenar los proveedores según la proporción de llamadas realizadas correctamente en el periodo seleccionado. Los proveedores con muy pocas llamadas para establecer una tasa mantienen el orden de su puntuación, por debajo de aquellos con datos suficientes.", + "typeLegend": "Sin registro = configuración nula · Inicio de sesión con OAuth = inicia sesión con tu propia cuenta · Clave de API = aporta tu propia clave o utiliza el nivel gratuito de ese proveedor", + "colReliability": "Fiabilidad", + "colReliabilityHelp": "Proporción de llamadas que este proveedor respondió realmente durante las últimas 24 horas. Un guion indica que gestionó muy poco tráfico como para establecer una tasa.", + "reliabilitySample": "{successes} de {requests} llamadas se completaron correctamente en las últimas {hours} h", + "reliabilityTooFew": "Solo {requests} llamadas en las últimas {hours} h; son insuficientes para indicar una tasa", + "reliabilityNoTraffic": "No se registraron llamadas en las últimas 24 h" }, "discovery": { - "title": "Provider Discovery", - "subtitle": "Scan providers for free/unlimited access methods and review findings. Opt-in, local-only.", - "scanLabel": "Provider to scan", - "scanPlaceholder": "e.g. huggingchat", - "scan": "Scan", - "scanning": "Scanning…", - "scanQueued": "Scan complete for {provider}.", - "scanFailed": "Scan failed.", - "loadFailed": "Failed to load discovery results.", - "localOnlyNote": "This tool is local-only (loopback). Scans run from this machine and are never reachable remotely.", - "verify": "Verify", - "verifyFailed": "Failed to verify finding.", - "delete": "Delete", - "deleteFailed": "Failed to delete finding.", - "deleteTitle": "Delete discovery result", - "deleteConfirm": "Delete the discovery finding for {provider}? This cannot be undone.", - "emptyTitle": "No discovery results yet", - "emptyDescription": "Run a scan above to look for free access methods on a provider.", - "risk": "Risk", - "method": "Method", - "auth": "Auth", - "feasibility": "Feasibility", - "models": "Models" + "title": "Descubrimiento de proveedores", + "subtitle": "Analiza proveedores para encontrar métodos de acceso gratuito o ilimitado y revisa los resultados. Requiere consentimiento y solo se ejecuta localmente.", + "scanLabel": "Proveedor que analizar", + "scanPlaceholder": "p. ej., huggingchat", + "scan": "Analizar", + "scanning": "Analizando…", + "scanQueued": "Análisis completado para {provider}.", + "scanFailed": "Error en el análisis.", + "loadFailed": "No se pudieron cargar los resultados del descubrimiento.", + "localOnlyNote": "Esta herramienta solo funciona localmente (bucle invertido). Los análisis se ejecutan desde este equipo y nunca son accesibles de forma remota.", + "verify": "Verificar", + "verifyFailed": "No se pudo verificar el hallazgo.", + "delete": "Eliminar", + "deleteFailed": "No se pudo eliminar el hallazgo.", + "deleteTitle": "Eliminar resultado del descubrimiento", + "deleteConfirm": "¿Eliminar el hallazgo del descubrimiento para {provider}? Esta acción no se puede deshacer.", + "emptyTitle": "Aún no hay resultados del descubrimiento", + "emptyDescription": "Ejecuta un análisis arriba para buscar métodos de acceso gratuito en un proveedor.", + "risk": "Riesgo", + "method": "Método", + "auth": "Autenticación", + "feasibility": "Viabilidad", + "models": "Modelos" }, "noAuthProvider": { - "title": "No authentication required", - "description": "This provider is ready to use immediately — no signup or API key needed.", - "accountDescription": "Ready to use — no signup needed. Add accounts for rate-limit rotation.", - "addAccount": "Add Account", - "accountName": "{provider} Account {number}", - "accounts": "Accounts ({count})", - "adding": "Adding...", - "autoGeneratedAccount": "Using an auto-generated account. Select “{addLabel}” for rate-limit rotation.", - "configureProxy": "Configure proxy", - "proxyConfigured": "Proxy configured: {host}", - "removeAccount": "Remove account", - "proxyForAccount": "Proxy for Account {number}", - "saved": "Saved", - "custom": "Custom", - "noSavedProxies": "No saved proxies — add one in Settings → Proxy", - "directConnection": "Direct (no proxy)", + "title": "No se requiere autenticación", + "description": "Este proveedor está listo para usarse de inmediato; no es necesario registrarse ni usar una clave de API.", + "accountDescription": "Listo para usar; no es necesario registrarse. Añade cuentas para rotar al alcanzar los límites de uso.", + "addAccount": "Añadir cuenta", + "accountName": "Cuenta {number} de {provider}", + "accounts": "Cuentas ({count})", + "adding": "Añadiendo...", + "autoGeneratedAccount": "Se está usando una cuenta generada automáticamente. Selecciona «{addLabel}» para rotar al alcanzar los límites de uso.", + "configureProxy": "Configurar proxy", + "proxyConfigured": "Proxy configurado: {host}", + "removeAccount": "Eliminar cuenta", + "proxyForAccount": "Proxy de la cuenta {number}", + "saved": "Guardado", + "custom": "Personalizado", + "noSavedProxies": "No hay proxies guardados; añade uno en Configuración → Proxy", + "directConnection": "Directo (sin proxy)", "host": "Host", - "port": "Port", - "usernameOptional": "Username (optional)", - "passwordOptional": "Password (optional)", - "cancel": "Cancel", - "saving": "Saving...", - "save": "Save", - "createConnectionFailed": "Failed to create connection", - "updateConnectionFailed": "Failed to update connection", - "fetchProxiesFailed": "Failed to fetch proxies", - "noSavedProxiesError": "No saved proxies found. Add proxies in Settings → Proxy first.", - "updateProviderFailed": "Failed to update provider", - "providerEnabled": "{provider} enabled", - "providerDisabled": "{provider} disabled", + "port": "Puerto", + "usernameOptional": "Nombre de usuario (opcional)", + "passwordOptional": "Contraseña (opcional)", + "cancel": "Cancelar", + "saving": "Guardando...", + "save": "Guardar", + "createConnectionFailed": "No se pudo crear la conexión", + "updateConnectionFailed": "No se pudo actualizar la conexión", + "fetchProxiesFailed": "No se pudieron obtener los proxies", + "noSavedProxiesError": "No se encontraron proxies guardados. Primero, añade proxies en Configuración → Proxy.", + "updateProviderFailed": "No se pudo actualizar el proveedor", + "providerEnabled": "{provider} habilitado", + "providerDisabled": "{provider} deshabilitado", "providerAdded": "{provider} añadido", "add": "Agregar", "manualApiKey": "Usar una clave API manual", @@ -12664,372 +12671,376 @@ }, "gamification": { "leaderboardScopes": { - "allTime": "All Time", - "weekly": "Weekly", - "monthly": "Monthly", - "tokensShared": "Tokens Shared" + "allTime": "Todo el tiempo", + "weekly": "Semanal", + "monthly": "Mensual", + "tokensShared": "Tokens compartidos" }, - "leaderboardLoadFailed": "Failed to load leaderboard (HTTP {status})", - "scope": "Scope", - "tokensShared": "tokens shared", - "points": "points", - "rank": "Rank", - "name": "Name", - "score": "Score", - "leaderboardEmpty": "No entries yet for this scope. Start using OmniRoute to appear on the leaderboard!", - "profileLoadFailed": "Failed to load profile data", + "leaderboardLoadFailed": "No se pudo cargar la clasificación (HTTP {status})", + "scope": "Ámbito", + "tokensShared": "tokens compartidos", + "points": "puntos", + "rank": "Posición", + "name": "Nombre", + "score": "Puntuación", + "leaderboardEmpty": "Aún no hay entradas para este ámbito. ¡Empieza a usar OmniRoute para aparecer en la clasificación!", + "profileLoadFailed": "No se pudieron cargar los datos del perfil", "levelTitles": { - "beginner": "Beginner", - "explorer": "Explorer", - "expert": "Expert", - "master": "Master", - "legend": "Legend" + "beginner": "Principiante", + "explorer": "Explorador", + "expert": "Experto", + "master": "Maestro", + "legend": "Leyenda" }, "tiers": { - "bronze": "Bronze", - "silver": "Silver", - "gold": "Gold", - "platinum": "Platinum", - "diamond": "Diamond" + "bronze": "Bronce", + "silver": "Plata", + "gold": "Oro", + "platinum": "Platino", + "diamond": "Diamante" }, - "tierLabel": "Tier: {tier}", - "dayStreak": "{count}-day streak", - "levelProgress": "Level {current} → {next}", - "totalXpEarned": "{count} total XP earned", - "maintainStreak": "Keep using OmniRoute every day to maintain your streak!", - "badgesTitle": "Badges ({earned}/{total})", - "noBadges": "No badges are available yet.", - "hiddenBadge": "Hidden achievement", - "earnedDate": "Earned {date}", - "earnedOn": "Earned on {date}", - "category": "Category", + "tierLabel": "Nivel: {tier}", + "dayStreak": "Racha de {count} días", + "levelProgress": "Nivel {current} → {next}", + "totalXpEarned": "{count} XP totales obtenidos", + "maintainStreak": "¡Sigue usando OmniRoute todos los días para mantener tu racha!", + "badgesTitle": "Insignias ({earned}/{total})", + "noBadges": "Aún no hay insignias disponibles.", + "hiddenBadge": "Logro oculto", + "earnedDate": "Obtenido el {date}", + "earnedOn": "Obtenido el {date}", + "category": "Categoría", "rarities": { - "common": "Common", - "uncommon": "Uncommon", - "rare": "Rare", - "epic": "Epic", - "legendary": "Legendary" + "common": "Común", + "uncommon": "Poco común", + "rare": "Raro", + "epic": "Épico", + "legendary": "Legendario" }, "categories": { - "usage": "Usage", - "sharing": "Sharing", - "contribution": "Contribution", - "streak": "Streak", - "rare": "Rare achievements" + "usage": "Uso", + "sharing": "Compartir", + "contribution": "Contribución", + "streak": "Racha", + "rare": "Logros raros" }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Colaborador de Radar", + "description": "Verificaste un feed activo de colaboradores de OmniRoute Radar", + "criteria": "Verifica un feed activo y firmado de colaboradores de Radar." }, "first-token": { - "name": "First Token", - "description": "Made your first API request", - "criteria": "Complete your first API request through OmniRoute." + "name": "Primer token", + "description": "Realizaste tu primera solicitud a la API", + "criteria": "Completa tu primera solicitud a la API mediante OmniRoute." }, "token-consumer": { - "name": "Token Consumer", - "description": "Made 1,000 API requests", - "criteria": "Complete 1,000 API requests through OmniRoute." + "name": "Consumidor de tokens", + "description": "Realizaste 1.000 solicitudes a la API", + "criteria": "Completa 1.000 solicitudes a la API mediante OmniRoute." }, "token-machine": { - "name": "Token Machine", - "description": "Made 10,000 API requests", - "criteria": "Complete 10,000 API requests through OmniRoute." + "name": "Máquina de tokens", + "description": "Realizaste 10.000 solicitudes a la API", + "criteria": "Completa 10.000 solicitudes a la API mediante OmniRoute." }, "token-whale": { - "name": "Token Whale", - "description": "Made 100,000 API requests", - "criteria": "Complete 100,000 API requests through OmniRoute." + "name": "Ballena de tokens", + "description": "Realizaste 100.000 solicitudes a la API", + "criteria": "Completa 100.000 solicitudes a la API mediante OmniRoute." }, "generous": { - "name": "Generous", - "description": "Shared 1,000 tokens with others", - "criteria": "Share a total of 1,000 tokens with other users." + "name": "Generoso", + "description": "Compartiste 1.000 tokens con otras personas", + "criteria": "Comparte un total de 1.000 tokens con otros usuarios." }, "philanthropist": { - "name": "Philanthropist", - "description": "Shared 10,000 tokens with others", - "criteria": "Share a total of 10,000 tokens with other users." + "name": "Filántropo", + "description": "Compartiste 10.000 tokens con otras personas", + "criteria": "Comparte un total de 10.000 tokens con otros usuarios." }, "token-santa": { - "name": "Token Santa", - "description": "Shared 100,000 tokens with others", - "criteria": "Share a total of 100,000 tokens with other users." + "name": "Papá Noel de los tokens", + "description": "Compartió 100.000 tokens con otros", + "criteria": "Comparte un total de 100.000 tokens con otros usuarios." }, "community-hero": { - "name": "Community Hero", - "description": "Shared 1,000,000 tokens with others", - "criteria": "Share a total of 1,000,000 tokens with other users." + "name": "Héroe de la comunidad", + "description": "Compartió 1.000.000 de tokens con otros", + "criteria": "Comparte un total de 1.000.000 de tokens con otros usuarios." }, "explorer": { - "name": "Explorer", - "description": "Used 5 different providers", - "criteria": "Use at least 5 different AI providers." + "name": "Explorador", + "description": "Usó 5 proveedores diferentes", + "criteria": "Usa al menos 5 proveedores de IA diferentes." }, "polyglot": { - "name": "Polyglot", - "description": "Used 10 different models", - "criteria": "Use at least 10 different AI models." + "name": "Políglota", + "description": "Usó 10 modelos diferentes", + "criteria": "Usa al menos 10 modelos de IA diferentes." }, "architect": { - "name": "Architect", - "description": "Created 3 combo routes", - "criteria": "Create 3 combo routes." + "name": "Arquitecto", + "description": "Creó 3 rutas combinadas", + "criteria": "Crea 3 rutas combinadas." }, "speedster": { - "name": "Speedster", - "description": "Maintained under 500 ms average latency for 100 requests", - "criteria": "Keep average latency below 500 ms across 100 requests." + "name": "Velocista", + "description": "Mantuvo una latencia media inferior a 500 ms durante 100 solicitudes", + "criteria": "Mantén la latencia media por debajo de 500 ms durante 100 solicitudes." }, "resilient": { - "name": "Resilient", - "description": "Maintained 100% uptime for 7 days", - "criteria": "Maintain 100% uptime for 7 consecutive days." + "name": "Resiliente", + "description": "Mantuvo un tiempo de actividad del 100 % durante 7 días", + "criteria": "Mantén un tiempo de actividad del 100 % durante 7 días consecutivos." }, "daily-user": { - "name": "Daily User", - "description": "Active for 3 consecutive days", - "criteria": "Use OmniRoute for 3 consecutive days." + "name": "Usuario diario", + "description": "Estuvo activo durante 3 días consecutivos", + "criteria": "Usa OmniRoute durante 3 días consecutivos." }, "weekly-warrior": { - "name": "Weekly Warrior", - "description": "Active for 7 consecutive days", - "criteria": "Use OmniRoute for 7 consecutive days." + "name": "Guerrero semanal", + "description": "Estuvo activo durante 7 días consecutivos", + "criteria": "Usa OmniRoute durante 7 días consecutivos." }, "monthly-master": { - "name": "Monthly Master", - "description": "Active for 30 consecutive days", - "criteria": "Use OmniRoute for 30 consecutive days." + "name": "Maestro mensual", + "description": "Estuvo activo durante 30 días consecutivos", + "criteria": "Usa OmniRoute durante 30 días consecutivos." }, "unstoppable": { - "name": "Unstoppable", - "description": "Active for 365 consecutive days", - "criteria": "Use OmniRoute for 365 consecutive days." + "name": "Imparable", + "description": "Estuvo activo durante 365 días consecutivos", + "criteria": "Usa OmniRoute durante 365 días consecutivos." }, "early-adopter": { - "name": "Early Adopter", - "description": "Joined within the first month of gamification", - "criteria": "Join within the first month after gamification launches." + "name": "Adoptante temprano", + "description": "Se unió durante el primer mes de la gamificación", + "criteria": "Únete durante el primer mes tras el lanzamiento de la gamificación." }, "bug-hunter": { - "name": "Bug Hunter", - "description": "Reported 5 issues", - "criteria": "Report 5 valid issues." + "name": "Cazador de errores", + "description": "Informó de 5 problemas", + "criteria": "Informa de 5 problemas válidos." }, "contributor": { - "name": "Contributor", - "description": "Merged 1 pull request", - "criteria": "Have 1 pull request merged into OmniRoute." + "name": "Colaborador", + "description": "Fusionó 1 pull request", + "criteria": "Consigue que se fusione 1 pull request en OmniRoute." }, "community-leader": { - "name": "Community Leader", - "description": "Reached the top 10 on any leaderboard", - "criteria": "Reach the top 10 on any leaderboard." + "name": "Líder de la comunidad", + "description": "Alcanzó el top 10 en cualquier clasificación", + "criteria": "Alcanza el top 10 en cualquier clasificación." }, "secret-badge": { "name": "???", - "description": "A hidden achievement awaits...", - "criteria": "Complete the hidden achievement to reveal this badge." + "description": "Te espera un logro oculto...", + "criteria": "Completa el logro oculto para revelar esta insignia." } } }, "featureFlags": { - "title": "Feature Flags", - "activeCount": "{count} active", - "inactiveCount": "{count} inactive", - "dbOverrideCount": "{count} DB overrides", - "searchPlaceholder": "Search flags...", + "title": "Flags de funcionalidad", + "activeCount": "{count} activas", + "inactiveCount": "{count} inactivas", + "dbOverrideCount": "{count} anulaciones de BD", + "searchPlaceholder": "Buscar flags...", "categories": { - "all": "All", - "security": "Security", - "network": "Network", - "policies": "Policies", - "runtime": "Runtime", + "all": "Todas", + "security": "Seguridad", + "network": "Red", + "policies": "Políticas", + "runtime": "Tiempo de ejecución", "cli": "CLI", - "health": "Health", - "requiresRestart": "Requires Restart" + "health": "Estado", + "requiresRestart": "Requiere reinicio" }, - "categoryLabel": "Category: {category}", - "caution": "Caution", - "danger": "Danger", - "requiresRestart": "Requires restart", - "source": "Source", + "categoryLabel": "Categoría: {category}", + "caution": "Precaución", + "danger": "Peligro", + "requiresRestart": "Requiere reinicio", + "source": "Origen", "ccDiscoveryAliasesEnvWarning": "Activo a través de la variable de entorno (EXPOSE_CC_DISCOVERY_ALIASES) — esto anula cualquier interruptor de panel a continuación.", - "resetFlag": "Reset {label} to default", - "reset": "Reset", - "loadFailed": "Failed to load feature flags", - "updateFailedHttp": "Failed to update flag: HTTP {status}", - "updateFailed": "Failed to update flag", - "restartFailedHttp": "Restart failed: HTTP {status}", - "restartFailed": "Restart failed", - "resetOverridesFailedHttp": "Failed to reset overrides: HTTP {status}", - "resetOverridesFailed": "Failed to reset overrides", - "restartRequiredCount": "{count, plural, one {# change requires} other {# changes require}} a server restart to take effect.", - "restartRequiredDescription": "These flags only apply after the process reloads. Restart now or continue editing — pending flags stay queued until you confirm.", - "restartServer": "Restart Server", - "cancel": "Cancel", - "restarting": "Restarting…", - "confirmRestart": "Confirm Restart", - "restartViewDescription": "These flags only take effect after the server restarts. Toggle them like any other flag — the change is persisted immediately, but the new value is only read at process startup. Use the Restart Server banner above to apply.", - "retry": "Retry", - "noSearchResults": "No flags match your search", - "resetAllOverrides": "Reset All Overrides", - "confirmResetOverrides": "Reset all {count} DB override(s)?", - "resetting": "Resetting...", - "confirmReset": "Confirm Reset", + "resetFlag": "Restablecer {label} al valor predeterminado", + "reset": "Restablecer", + "loadFailed": "No se pudieron cargar los flags de funcionalidad", + "updateFailedHttp": "No se pudo actualizar el flag: HTTP {status}", + "updateFailed": "No se pudo actualizar el flag", + "restartFailedHttp": "Error al reiniciar: HTTP {status}", + "restartFailed": "Error al reiniciar", + "resetOverridesFailedHttp": "No se pudieron restablecer las anulaciones: HTTP {status}", + "resetOverridesFailed": "No se pudieron restablecer las anulaciones", + "restartRequiredCount": "{count, plural, one {# cambio requiere} other {# cambios requieren}} reiniciar el servidor para que surta efecto.", + "restartRequiredDescription": "Estos flags solo se aplican después de volver a cargar el proceso. Reinicia ahora o continúa editando; los flags pendientes permanecerán en cola hasta que confirmes.", + "restartServer": "Reiniciar servidor", + "cancel": "Cancelar", + "restarting": "Reiniciando…", + "confirmRestart": "Confirmar reinicio", + "restartViewDescription": "Estas opciones solo surten efecto después de reiniciar el servidor. Actívalas o desactívalas como cualquier otra opción: el cambio se guarda inmediatamente, pero el nuevo valor solo se lee al iniciar el proceso. Usa el aviso Reiniciar servidor de arriba para aplicarlo.", + "retry": "Reintentar", + "noSearchResults": "Ninguna opción coincide con tu búsqueda", + "resetAllOverrides": "Restablecer todas las anulaciones", + "confirmResetOverrides": "¿Restablecer las {count} anulaciones de la base de datos?", + "resetting": "Restableciendo...", + "confirmReset": "Confirmar restablecimiento", "enumValues": { - "off": "Off", - "warn": "Warn", - "block": "Block", - "redact": "Redact", - "disabled": "Disabled", - "dual": "Dual", + "off": "Desactivado", + "warn": "Advertir", + "block": "Bloquear", + "redact": "Censurar", + "disabled": "Deshabilitado", + "dual": "Doble", "alias": "Alias", - "canonical": "Canonical" + "canonical": "Canónico" }, "definitions": { "REQUIRE_API_KEY": { - "description": "Require an API key for all incoming requests." + "description": "Exigir una clave de API para todas las solicitudes entrantes." }, "INPUT_SANITIZER_ENABLED": { - "description": "Enable input sanitization for all requests." + "description": "Habilitar la depuración de entradas para todas las solicitudes." }, "INJECTION_GUARD_MODE": { - "description": "Set the prompt-injection guard mode." + "description": "Establecer el modo de protección contra la inyección de prompts." }, "PII_REDACTION_ENABLED": { - "description": "Redact personally identifiable information from requests." + "description": "Censurar la información de identificación personal de las solicitudes." }, "PII_RESPONSE_SANITIZATION": { - "description": "Sanitize personally identifiable information in provider responses." + "description": "Depurar la información de identificación personal en las respuestas de los proveedores." }, "PII_RESPONSE_SANITIZATION_MODE": { - "description": "Choose how response PII is handled: redact replaces it, warn only logs it, block rejects the response, and off disables sanitization." + "description": "Elige cómo se gestiona la información de identificación personal en las respuestas: censurar la reemplaza, advertir solo la registra, bloquear rechaza la respuesta y desactivado deshabilita la depuración." }, "OUTBOUND_SSRF_GUARD_ENABLED": { - "description": "Block outbound requests to private or internal IP ranges." + "description": "Bloquear las solicitudes salientes a rangos de IP privados o internos." }, "ALLOW_API_KEY_REVEAL": { - "description": "Allow authenticated dashboard users to reveal stored API keys instead of seeing masked values only." + "description": "Permitir que los usuarios autenticados del panel revelen las claves de API almacenadas en lugar de ver únicamente valores enmascarados." }, "ENABLE_TLS_FINGERPRINT": { - "description": "Enable TLS fingerprint stealth mode." + "description": "Habilitar el modo sigiloso de huella digital TLS." }, "ONEPROXY_ENABLED": { - "description": "Enable request proxying through 1proxy." + "description": "Habilitar el uso de proxy para las solicitudes mediante 1proxy." }, "PROXY_AUTO_SELECT_ENABLED": { - "description": "When no proxy is assigned to a connection, automatically select the first working registry proxy. Off by default because otherwise one registry proxy becomes a global fallback for all traffic (#3332)." + "description": "Cuando no haya ningún proxy asignado a una conexión, seleccionar automáticamente el primer proxy operativo del registro. Está desactivado de forma predeterminada porque, de lo contrario, un proxy del registro se convertiría en la alternativa global para todo el tráfico (#3332)." }, "OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK": { - "description": "Allow OAuth and provider-validation flows to bypass a pinned proxy when proxy reachability checks fail. Off by default because this can change the account egress IP." + "description": "Permitir que los flujos de OAuth y de validación de proveedores omitan un proxy fijado cuando fallen las comprobaciones de accesibilidad del proxy. Está desactivado de forma predeterminada porque esto puede cambiar la IP de salida de la cuenta." }, "MITM_DISABLE_TLS_VERIFY": { - "description": "Disable TLS certificate verification for the MITM proxy." + "description": "Deshabilitar la verificación del certificado TLS para el proxy MITM." }, "OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS": { - "description": "Allow provider URLs that point to private or internal networks." + "description": "Permitir URLs de proveedores que apunten a redes privadas o internas." }, "OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS": { - "description": "Allow providers on localhost, LAN, and private IP ranges. This is required for local OpenAI-compatible models and enabled by default. Cloud-metadata endpoints such as 169.254.169.254 remain blocked." + "description": "Permitir proveedores en localhost, LAN y rangos de IP privados. Esto es necesario para los modelos locales compatibles con OpenAI y está habilitado de forma predeterminada. Los endpoints de metadatos de la nube, como 169.254.169.254, siguen bloqueados." }, "ENABLE_CC_COMPATIBLE_PROVIDER": { - "description": "Enable Claude Code-compatible provider mode." + "description": "Habilitar el modo de proveedor compatible con Claude Code." }, "TOOL_POLICY_MODE": { - "description": "Set the tool-use policy enforcement mode." + "description": "Establecer el modo de aplicación de la política de uso de herramientas." }, "RATE_LIMIT_AUTO_ENABLE": { - "description": "Automatically enable rate limiting based on usage patterns." + "description": "Habilitar automáticamente la limitación de frecuencia según los patrones de uso." }, "ALLOW_MULTI_CONNECTIONS_PER_COMPAT_NODE": { - "description": "Allow multiple connections for each compatibility node." + "description": "Permitir varias conexiones para cada nodo de compatibilidad." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Deshabilitar las comprobaciones de la ventana de contexto", + "description": "Omitir la comprobación local de OmniRoute de la ventana de contexto y del máximo de tokens de entrada para solicitudes directas a un único modelo. Los proveedores upstream seguirán aplicando sus límites reales. La compresión de prompts y los límites de tokens de salida permanecerán activos." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { - "description": "Remove internal commentary-phase output items from Responses API passthrough streams before forwarding them to clients. Disable this flag to receive raw upstream commentary." + "description": "Eliminar los elementos de salida internos de la fase de comentarios de los flujos de transferencia directa de Responses API antes de reenviarlos a los clientes. Deshabilita esta opción para recibir los comentarios upstream sin procesar." }, "OMNIROUTE_MCP_ENFORCE_SCOPES": { - "description": "Enforce scope restrictions for MCP tool access." + "description": "Aplicar restricciones de ámbito al acceso a herramientas MCP." }, "OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS": { - "description": "Compress MCP tool descriptions to reduce token usage." + "description": "Comprime las descripciones de las herramientas MCP para reducir el uso de tokens." }, "OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS": { - "description": "Enable background-task processing at runtime." + "description": "Habilita el procesamiento de tareas en segundo plano durante la ejecución." }, "OMNIROUTE_DISABLE_BACKGROUND_SERVICES": { - "description": "Disable all background services, including quota refresh and synchronization." + "description": "Deshabilita todos los servicios en segundo plano, incluidas la actualización de cuotas y la sincronización." }, "OMNIROUTE_RTK_TRUST_PROJECT_FILTERS": { - "description": "Trust project-level RTK filters without validation." + "description": "Confía en los filtros RTK a nivel de proyecto sin validación." }, "OMNIROUTE_ENABLE_LIVE_WS": { - "description": "Start the real-time dashboard WebSocket server on import at loopback port 20132. Set the flag to 0 or false to disable it. LAN exposure also requires LIVE_WS_HOST=0.0.0.0 and LIVE_WS_ALLOWED_ORIGINS." + "description": "Inicia el servidor WebSocket del panel en tiempo real al importar, en el puerto de bucle invertido 20132. Establece la opción en 0 o false para deshabilitarlo. La exposición en la LAN también requiere LIVE_WS_HOST=0.0.0.0 y LIVE_WS_ALLOWED_ORIGINS." }, "OMNIROUTE_CODEX_WS_ENABLED": { - "description": "Allow Codex to use Responses over WebSocket. When disabled, Codex falls back to HTTP Responses." + "description": "Permite que Codex use Responses mediante WebSocket. Cuando está deshabilitado, Codex recurre a Responses mediante HTTP." }, "OMNIROUTE_EMERGENCY_FALLBACK": { - "description": "Route budget-exhausted requests to the emergency free fallback provider and model." + "description": "Enruta las solicitudes que hayan agotado el presupuesto al proveedor y modelo gratuitos de emergencia." }, "STREAM_RECOVERY_ENABLED": { - "description": "Retry truncated upstream SSE streams transparently before any response bytes reach the client." + "description": "Reintenta de forma transparente los flujos SSE ascendentes truncados antes de que cualquier byte de la respuesta llegue al cliente." }, "STREAM_RECOVERY_MIDSTREAM_ENABLED": { - "description": "Allow stream recovery to request the response again and stitch it after bytes have already reached the client." + "description": "Permite que la recuperación del flujo vuelva a solicitar la respuesta y la concatene después de que algunos bytes ya hayan llegado al cliente." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Hacer que la continuación a mitad del flujo sea segura para las llamadas a herramientas: nunca reanudar un flujo interrumpido después de que se haya enviado una llamada a una herramienta (tanto si sigue en curso como si ya ha finalizado) y detenerse después de una continuación vacía en lugar de agotar todo el límite de reintentos." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Conmutar una sola vez a una conexión hermana cuando un stream se cierra antes de emitir cualquier trama útil y se agotó el reintento limitado en la misma conexión. Si no hay una conexión hermana utilizable, se devuelve el error early-EOF original. Desactivado: early-EOF sigue siendo terminal tras el reintento." }, "MODEL_CATALOG_INCLUDE_NAMES": { - "description": "Include display-friendly name fields in /v1/models responses. Disable this for clients that accept model IDs only." + "description": "Incluye campos de nombre fáciles de visualizar en las respuestas de /v1/models. Deshabilita esta opción para los clientes que solo aceptan identificadores de modelo." }, "MODELS_CATALOG_PREFIX_MODE": { - "description": "Control model-ID prefixes in /v1/models: dual emits alias and canonical prefixes, alias emits short prefixes only, and canonical emits full provider IDs only." + "description": "Controla los prefijos de los identificadores de modelo en /v1/models: dual emite prefijos de alias y canónicos, alias solo emite prefijos cortos y canonical solo emite identificadores completos de proveedores." }, "ARENA_ELO_SYNC_ENABLED": { - "description": "Periodically synchronize Arena AI leaderboard ELO data for model-intelligence rankings." + "description": "Sincroniza periódicamente los datos ELO de la clasificación de Arena AI para las clasificaciones de inteligencia de modelos." }, "CLI_COMPAT_ALL": { - "description": "Enable compatibility mode for all CLI clients." + "description": "Habilita el modo de compatibilidad para todos los clientes CLI." }, "MODEL_ALIAS_COMPAT_ENABLED": { - "description": "Enable the model-alias compatibility layer." + "description": "Habilita la capa de compatibilidad de alias de modelos." }, "PRICING_SYNC_ENABLED": { - "description": "Synchronize pricing data automatically. The PRICING_SYNC_ENABLED environment variable must also be true." + "description": "Sincroniza automáticamente los datos de precios. La variable de entorno PRICING_SYNC_ENABLED también debe ser true." }, "OMNIROUTE_AUTO_SYNC_CODEX_PROFILES": { - "description": "After provider-model synchronization, regenerate ~/.codex/*.config.toml profiles from the live catalog. This never changes the active or default Codex configuration and is off by default." + "description": "Después de sincronizar los modelos de los proveedores, regenera los perfiles ~/.codex/*.config.toml a partir del catálogo activo. Esto nunca cambia la configuración activa ni predeterminada de Codex y está deshabilitado de forma predeterminada." }, "OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES": { - "description": "After provider-model synchronization, regenerate ~/.claude/profiles/''/settings.json profiles from the live catalog. This never changes the active or default Claude configuration and is off by default." + "description": "Después de sincronizar los modelos de los proveedores, regenera los perfiles ~/.claude/profiles/''/settings.json a partir del catálogo activo. Esto nunca cambia la configuración activa ni predeterminada de Claude y está deshabilitado de forma predeterminada." }, "OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK": { - "description": "Disable the local instance health-check endpoint." + "description": "Deshabilita el endpoint de comprobación de estado de la instancia local." }, "OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK": { - "description": "Disable the token-validation health check." + "description": "Deshabilita la comprobación de estado de validación de tokens." }, "SKILLS_SANDBOX_NETWORK_ENABLED": { - "description": "Enable network access in the skills sandbox." + "description": "Habilita el acceso a la red en el entorno aislado de habilidades." + }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Bucle de herramientas controlado por el servidor", + "description": "Continúa las llamadas no transmitidas a herramientas controladas por el servidor hasta que el modelo devuelva una respuesta utilizable por el cliente." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Procedencia de Retry-After", + "description": "En las respuestas agregadas 429/503 de indisponibilidad, omitir Retry-After cuando no se conozca un momento futuro concreto para reintentar, en lugar de enviar un valor sintético de 1 s; añadir error.retry_after_provenance y leer las indicaciones textuales de reintento en las rutas de agotamiento del combo." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Detenciones de infraestructura de prioridad protegida como 502", + "description": "Responder con 502 en lugar de 503 cuando un destino prioritario con alternativa solo por cuota detenga el combo por una causa que se pueda demostrar que no está relacionada con la cuota: un disyuntor abierto del proveedor o una omisión predictiva por latencia." } } }, @@ -13046,280 +13057,280 @@ } }, "comboControl": { - "title": "Combo Control Center", - "unavailable": "Combo Control Center unavailable", - "backToCombos": "Back to Combos", - "loadFailed": "Failed to load combo control center", + "title": "Centro de control de combos", + "unavailable": "Centro de control de combos no disponible", + "backToCombos": "Volver a Combos", + "loadFailed": "No se pudo cargar el centro de control de combos", "state": { - "healthy": "Healthy", - "warning": "Needs attention", - "critical": "Critical", - "idle": "Idle" + "healthy": "Correcto", + "warning": "Requiere atención", + "critical": "Crítico", + "idle": "Inactivo" }, - "active": "Active", - "disabled": "Disabled", - "description": "Central read-only view for routing behavior, health, quota, runtime metrics and recent decisions for .", - "refresh": "Refresh", - "editInCombos": "Edit in Combos", - "requests": "Requests", - "success": "Success", - "latency": "Latency", - "quota": "Quota", - "rangeWindow": "{range} window", - "runtimeHealthBlend": "runtime/health blend", - "averageResponseTime": "average response time", - "worstQuota": "Worst quota", - "providerAccountTelemetry": "provider/account telemetry", - "overview": "Overview", - "overviewDescription": "Strategy, runtime status and control links for this combo.", - "strategy": "Strategy", - "targets": "Targets", - "providers": "Providers", - "targetCounts": "{configured} configured · {resolved} resolved", - "healthReasons": "Health reasons", + "active": "Activo", + "disabled": "Deshabilitado", + "description": "Vista central de solo lectura del comportamiento de enrutamiento, el estado, la cuota, las métricas de ejecución y las decisiones recientes de .", + "refresh": "Actualizar", + "editInCombos": "Editar en Combos", + "requests": "Solicitudes", + "success": "Éxito", + "latency": "Latencia", + "quota": "Cuota", + "rangeWindow": "ventana de {range}", + "runtimeHealthBlend": "combinación de ejecución/salud", + "averageResponseTime": "tiempo medio de respuesta", + "worstQuota": "Peor cuota", + "providerAccountTelemetry": "telemetría de proveedor/cuenta", + "overview": "Resumen", + "overviewDescription": "Estrategia, estado de ejecución y enlaces de control para esta combinación.", + "strategy": "Estrategia", + "targets": "Destinos", + "providers": "Proveedores", + "targetCounts": "{configured} configurados · {resolved} resueltos", + "healthReasons": "Motivos del estado", "healthReason": { - "noRecentTraffic": "No recent combo traffic", - "lowSuccessRate": "Low success rate", - "successBelowTarget": "Success rate below target", - "highFallbackRate": "High fallback rate", - "elevatedFallbackRate": "Elevated fallback rate", - "quotaExhausted": "At least one quota is exhausted", - "quotaNearlyExhausted": "Quota is nearly exhausted", - "quotaGettingLow": "Quota is getting low", - "trafficHighlySkewed": "Traffic distribution is highly skewed", - "comboHealthy": "Combo looks healthy" + "noRecentTraffic": "No hay tráfico reciente para la combinación", + "lowSuccessRate": "Tasa de éxito baja", + "successBelowTarget": "Tasa de éxito por debajo del objetivo", + "highFallbackRate": "Tasa de respaldo alta", + "elevatedFallbackRate": "Tasa de respaldo elevada", + "quotaExhausted": "Al menos una cuota está agotada", + "quotaNearlyExhausted": "La cuota está casi agotada", + "quotaGettingLow": "La cuota se está agotando", + "trafficHighlySkewed": "La distribución del tráfico está muy sesgada", + "comboHealthy": "La combinación parece estar en buen estado" }, - "configuredTargets": "Configured targets", - "configuredTargetsDescription": "The saved combo steps, enriched with matching health data when available.", - "noConfiguredTargets": "No targets configured.", - "runtimeConfig": "Runtime config", - "runtimeConfigDescription": "Selected advanced settings for this combo.", - "noRuntimeConfig": "No custom runtime config.", - "resolvedTargets": "Resolved runtime targets", - "resolvedTargetsDescription": "Flattened targets after nested combo resolution and target-level metrics.", - "noResolvedTargetHealth": "No resolved target health yet.", - "quotaDistribution": "Quota and distribution", - "noQuotaSnapshots": "No quota snapshots for this combo window.", - "usageSkew": "Usage skew", - "recentDecisions": "Recent routing decisions", - "recentDecisionsDescription": "Recent call logs filtered by this combo name. Open Analytics for full explainability.", - "noRecentLogs": "No recent combo call logs found.", - "quickLinks": "Quick links", - "comboHealth": "Combo Health", - "callLogs": "Call Logs", - "costs": "Costs", - "playground": "Playground", - "nestedCombo": "Nested combo", - "modelTarget": "Model target", - "weight": "{value}% weight", - "comboReference": "Combo reference", - "accountShort": "account {id}", - "keyShort": "key {id}", - "stepShort": "step {id}", - "dynamic": "dynamic", - "unknown": "unknown", - "unknownProvider": "unknown provider", - "unknownModel": "unknown model", - "resolvedTargetMetrics": "{requests} req · {success} success · {latency} · quota {quota}" + "configuredTargets": "Destinos configurados", + "configuredTargetsDescription": "Los pasos guardados de la combinación, enriquecidos con datos de estado coincidentes cuando están disponibles.", + "noConfiguredTargets": "No hay destinos configurados.", + "runtimeConfig": "Configuración de ejecución", + "runtimeConfigDescription": "Configuración avanzada seleccionada para esta combinación.", + "noRuntimeConfig": "No hay configuración de ejecución personalizada.", + "resolvedTargets": "Destinos de ejecución resueltos", + "resolvedTargetsDescription": "Destinos aplanados tras resolver combinaciones anidadas y métricas a nivel de destino.", + "noResolvedTargetHealth": "Aún no hay datos de estado de los destinos resueltos.", + "quotaDistribution": "Cuota y distribución", + "noQuotaSnapshots": "No hay instantáneas de cuota para esta ventana de la combinación.", + "usageSkew": "Sesgo de uso", + "recentDecisions": "Decisiones de enrutamiento recientes", + "recentDecisionsDescription": "Registros de llamadas recientes filtrados por el nombre de esta combinación. Abre Analytics para obtener una explicación completa.", + "noRecentLogs": "No se encontraron registros de llamadas recientes para la combinación.", + "quickLinks": "Enlaces rápidos", + "comboHealth": "Estado de la combinación", + "callLogs": "Registros de llamadas", + "costs": "Costos", + "playground": "Área de pruebas", + "nestedCombo": "Combo anidado", + "modelTarget": "Modelo de destino", + "weight": "{value}% de peso", + "comboReference": "Referencia del combo", + "accountShort": "cuenta {id}", + "keyShort": "clave {id}", + "stepShort": "paso {id}", + "dynamic": "dinámico", + "unknown": "desconocido", + "unknownProvider": "proveedor desconocido", + "unknownModel": "modelo desconocido", + "resolvedTargetMetrics": "{requests} solicitudes · {success} correctas · {latency} · cuota {quota}" }, "usageLimits": { - "usdUsageQuota": "USD usage quota", - "usdUsageQuotaDescription": "Blocks this key with a 400 API error after its local USD spend reaches the configured daily or weekly quota.", - "dailyQuotaUsd": "Daily quota (USD)", - "weeklyQuotaUsd": "Weekly quota (USD)", - "quotaWindowDescription": "Weekly quota follows the cached Claude weekly reset when available; otherwise it falls back to a rolling 7 day window. Daily quota uses the Fortaleza calendar day.", - "apiKeyUsdQuota": "API key USD quota", - "apiKeyUsdQuotaDescription": "When enabled, @@om-usage returns daily quota, weekly quota, daily spend, and weekly spend in USD. Weekly follows the cached Claude reset when available.", - "enabled": "Enabled", - "disabled": "Disabled", - "dailySpend": "Daily spend", - "weeklySpend": "Weekly spend", - "dailyQuota": "Daily quota", - "weeklyQuota": "Weekly quota", - "fallbackRollingDays": "fallback: rolling {days} days", - "fallbackRollingDaysShort": "Fallback rolling {days}d", - "resetDueNow": "reset due now", - "resetsInHours": "resets in {count}h", - "resetsInDays": "resets in {count}d", - "saveFailed": "Failed to save usage limits", - "saving": "Saving...", - "saveQuota": "Save quota", - "loadUsdCostsFailed": "Failed to load USD costs", - "usdCost": "USD Cost", - "close": "Close", - "loadingUsdCosts": "Loading USD costs", - "used": "Used", - "quotaUsed": "Quota used", - "estimatedFullQuota": "Est. 100%", - "rows": "Rows", - "window": "Window", - "unknown": "unknown", - "fromRecordedReset": "From recorded {quota} reset", - "fromObservedReset": "From observed {quota} reset", - "fromReset": "From {quota} reset", - "quotaEstimator": "Quota estimator", - "noApiKeyUsage": "No API key usage in this provider window.", - "requestTokenCounts": "{requests} requests · {tokens} tokens", - "noUsdLimit": "No USD limit" + "usdUsageQuota": "Cuota de uso en USD", + "usdUsageQuotaDescription": "Bloquea esta clave con un error 400 de la API cuando su gasto local en USD alcanza la cuota diaria o semanal configurada.", + "dailyQuotaUsd": "Cuota diaria (USD)", + "weeklyQuotaUsd": "Cuota semanal (USD)", + "quotaWindowDescription": "La cuota semanal sigue el restablecimiento semanal de Claude almacenado en caché cuando está disponible; de lo contrario, utiliza una ventana móvil de 7 días. La cuota diaria utiliza el día natural de Fortaleza.", + "apiKeyUsdQuota": "Cuota en USD de la clave de API", + "apiKeyUsdQuotaDescription": "Cuando está habilitado, @@om-usage devuelve la cuota diaria, la cuota semanal, el gasto diario y el gasto semanal en USD. El cálculo semanal sigue el restablecimiento de Claude almacenado en caché cuando está disponible.", + "enabled": "Habilitado", + "disabled": "Deshabilitado", + "dailySpend": "Gasto diario", + "weeklySpend": "Gasto semanal", + "dailyQuota": "Cuota diaria", + "weeklyQuota": "Cuota semanal", + "fallbackRollingDays": "alternativa: últimos {days} días", + "fallbackRollingDaysShort": "Alternativa: últimos {days} d", + "resetDueNow": "debe restablecerse ahora", + "resetsInHours": "se restablece en {count} h", + "resetsInDays": "se restablece en {count} d", + "saveFailed": "No se pudieron guardar los límites de uso", + "saving": "Guardando...", + "saveQuota": "Guardar cuota", + "loadUsdCostsFailed": "No se pudieron cargar los costos en USD", + "usdCost": "Costo en USD", + "close": "Cerrar", + "loadingUsdCosts": "Cargando costos en USD", + "used": "Usado", + "quotaUsed": "Cuota utilizada", + "estimatedFullQuota": "Estim. 100 %", + "rows": "Filas", + "window": "Ventana", + "unknown": "desconocido", + "fromRecordedReset": "Desde el restablecimiento registrado de {quota}", + "fromObservedReset": "Desde el restablecimiento observado de {quota}", + "fromReset": "Desde el restablecimiento de {quota}", + "quotaEstimator": "Estimador de cuota", + "noApiKeyUsage": "No hay uso de claves de API en esta ventana del proveedor.", + "requestTokenCounts": "{requests} solicitudes · {tokens} tokens", + "noUsdLimit": "Sin límite en USD" }, "freeBudget": { - "title": "Free-token budget", - "remaining": "{remaining} remaining · {percent}% of {total}", - "steadyMonth": "Steady / month", - "firstMonth": "First month (+ credits)", - "usedThisMonth": "Used this month", - "segmentHint": "Each segment = one free pool · pool-deduped, honest counting (no inflated rate-limit ceilings).", - "boost": "Unlock ~{tokens} more/mo with a one-time $10 OpenRouter top-up (50 → 1000 req/day)", - "uncapped": "Permanently free, no published cap (rate-limited) — real access, not counted in the headline:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", - "tosRestricted": "{count, plural, one {# model} other {# models}} flagged as ToS-restricted — you decide", - "provider": "Provider", - "model": "Model", - "modelName": "Model name", - "type": "Type", - "tokensMonth": "Tokens/mo", - "credit": "{tokens} credit", - "hideTosRestricted": "Hide ToS-restricted", - "sort": "Sort", + "title": "Presupuesto de tokens gratuitos", + "remaining": "Quedan {remaining} · {percent} % de {total}", + "steadyMonth": "Estable / mes", + "firstMonth": "Primer mes (+ créditos)", + "usedThisMonth": "Utilizado este mes", + "segmentHint": "Cada segmento = un fondo gratuito · fondos sin duplicados, recuento realista (sin inflar los límites de frecuencia).", + "boost": "Desbloquea ~{tokens} más al mes con una recarga única de $10 en OpenRouter (50 → 1000 solicitudes/día)", + "uncapped": "Gratis de forma permanente, sin límite publicado (con frecuencia limitada): acceso real, no incluido en la cifra principal:", + "gated": "~{tokens}/mes adicionales tras una verificación de identidad regional (p. ej., verificación de identidad real en China continental): cuota real, no incluida en la cifra principal:", + "tosRestricted": "{count, plural, one {# modelo marcado} other {# modelos marcados}} como restringidos por los Términos del Servicio — tú decides", + "provider": "Proveedor", + "model": "Modelo", + "modelName": "Nombre del modelo", + "type": "Tipo", + "tokensMonth": "Tokens/mes", + "credit": "Crédito de {tokens}", + "hideTosRestricted": "Ocultar los restringidos por los Términos del Servicio", + "sort": "Ordenar", "freeType": { - "daily": "daily", - "monthly": "monthly", - "creditMonthly": "credit/mo", - "uncapped": "uncapped", - "signupCredit": "signup credit", - "keyless": "keyless", - "discontinued": "discontinued" + "daily": "diario", + "monthly": "mensual", + "creditMonthly": "crédito/mes", + "uncapped": "sin límite", + "signupCredit": "crédito de registro", + "keyless": "sin clave", + "discontinued": "descontinuado" }, "tosTitle": { - "avoid": "ToS-restricted — review terms", - "caution": "Caution — personal-use / proxy clauses", - "ok": "Generally permissive" + "avoid": "Restringido por los Términos del Servicio — revisa las condiciones", + "caution": "Precaución — cláusulas de uso personal/proxy", + "ok": "Generalmente permisivo" }, "allProviders": "Todos los proveedores", "noApiKeyRequired": "No se requiere clave de API" }, "providerHealthAutopilot": { - "title": "Provider Health Autopilot", - "description": "Finds unstable providers, account cooldowns, stale errors, and safe manual fixes.", - "loadFailed": "Failed to load autopilot report", - "actionApplied": "{action} applied.", - "actionFailed": "Autopilot action failed", - "refresh": "Refresh", - "status": "Status", - "issues": "Issues", - "actions": "Actions", - "connections": "Connections", + "title": "Piloto automático de estado de proveedores", + "description": "Detecta proveedores inestables, periodos de espera de cuentas, errores obsoletos y correcciones manuales seguras.", + "loadFailed": "No se pudo cargar el informe del piloto automático", + "actionApplied": "Se aplicó {action}.", + "actionFailed": "Error en la acción del piloto automático", + "refresh": "Actualizar", + "status": "Estado", + "issues": "Problemas", + "actions": "Acciones", + "connections": "Conexiones", "state": { - "healthy": "healthy", - "warning": "warning", - "critical": "critical", - "loading": "loading" + "healthy": "correcto", + "warning": "advertencia", + "critical": "crítico", + "loading": "cargando" }, - "loadingRecommendations": "Loading provider recommendations...", - "noRecommendations": "No provider health recommendations right now.", - "providerMetrics": "score {score}% · active {active}/{total} · cooldown {cooldown} · model lockouts {lockouts}", + "loadingRecommendations": "Cargando recomendaciones de proveedores...", + "noRecommendations": "No hay recomendaciones sobre el estado de los proveedores en este momento.", + "providerMetrics": "puntuación {score}% · activas {active}/{total} · en espera {cooldown} · bloqueos de modelos {lockouts}", "providerState": { - "healthy": "healthy", - "degraded": "degraded", - "down": "down" + "healthy": "correcto", + "degraded": "degradado", + "down": "inactivo" }, "severity": { - "info": "info", - "warning": "warning", - "critical": "critical" + "info": "información", + "warning": "advertencia", + "critical": "crítico" }, - "remainingSeconds": "remaining {seconds}s", - "errorCode": "code {code}", - "applying": "Applying...", + "remainingSeconds": "quedan {seconds} s", + "errorCode": "código {code}", + "applying": "Aplicando...", "issue": { - "circuitOpenTitle": "Provider circuit breaker is open", - "circuitOpenRecommendation": "Verify upstream recovery, then reset the provider circuit breaker or wait for the retry window.", - "circuitRecoveryTitle": "Provider is probing recovery", - "circuitRecoveryRecommendation": "Let the next probe complete or reset the breaker after manual verification.", - "terminalTitle": "{label} has a terminal account state", - "terminalRecommendation": "Check billing, re-authenticate, or replace the credential before reactivating it.", - "cooldownTitle": "{label} is in temporary cooldown", - "cooldownRecommendation": "Wait for the upstream retry window or clear the cooldown after validating recovery.", - "staleErrorTitle": "{label} has stale error state", - "staleErrorRecommendation": "Clear stale error fields so the connection is eligible for normal routing again.", - "inactiveTitle": "{label} is disabled", - "inactiveRecommendation": "Reactivate only if this was not intentionally disabled.", - "modelLockoutTitle": "{model} is locked out for one connection", - "modelLockoutRecommendation": "Resolve the connection state or confirm model quota/availability has recovered before clearing the lockout.", - "quotaTitle": "Quota monitor reports {status}", - "quotaRecommendation": "Review quota usage and rotate traffic to another healthy connection if needed." + "circuitOpenTitle": "El disyuntor del proveedor está abierto", + "circuitOpenRecommendation": "Verifique que el servicio externo se haya recuperado y, a continuación, restablezca el disyuntor del proveedor o espere hasta la ventana de reintento.", + "circuitRecoveryTitle": "El proveedor está comprobando la recuperación", + "circuitRecoveryRecommendation": "Deje que finalice la siguiente comprobación o restablezca el disyuntor tras verificarlo manualmente.", + "terminalTitle": "{label} tiene un estado de cuenta terminal", + "terminalRecommendation": "Compruebe la facturación, vuelva a autenticarse o sustituya la credencial antes de reactivarla.", + "cooldownTitle": "{label} está en un periodo de espera temporal", + "cooldownRecommendation": "Espere hasta la ventana de reintento del servicio externo o elimine el periodo de espera tras validar la recuperación.", + "staleErrorTitle": "{label} tiene un estado de error obsoleto", + "staleErrorRecommendation": "Borre los campos de error obsoletos para que la conexión vuelva a ser apta para el enrutamiento normal.", + "inactiveTitle": "{label} está deshabilitada", + "inactiveRecommendation": "Reactívela únicamente si no se deshabilitó intencionadamente.", + "modelLockoutTitle": "{model} está bloqueado para una conexión", + "modelLockoutRecommendation": "Resuelva el estado de la conexión o confirme que la cuota o disponibilidad del modelo se haya recuperado antes de eliminar el bloqueo.", + "quotaTitle": "El monitor de cuota informa: {status}", + "quotaRecommendation": "Revisa el uso de la cuota y, si es necesario, redirige el tráfico a otra conexión en buen estado." }, "action": { - "resetProviderBreaker": "Reset provider breaker", - "clearConnectionCooldown": "Clear connection cooldown", - "disableConnection": "Disable this connection", - "clearStaleError": "Clear stale error state", - "reactivateConnection": "Reactivate connection", - "clearModelLockout": "Clear model lockout" + "resetProviderBreaker": "Restablecer el disyuntor del proveedor", + "clearConnectionCooldown": "Borrar el período de espera de la conexión", + "disableConnection": "Desactivar esta conexión", + "clearStaleError": "Borrar el estado de error obsoleto", + "reactivateConnection": "Reactivar la conexión", + "clearModelLockout": "Eliminar el bloqueo del modelo" } }, "changelogPage": { - "newsTab": "News", - "changelogTab": "Changelog", - "loading": "Loading changelog...", - "announcementsLoadFailed": "Could not load announcements. Please try again later.", - "noAnnouncements": "No new announcements at this time.", - "learnMore": "Learn more", - "changelogLoadFailed": "Could not load the changelog. Please try again later.", - "retry": "Retry", - "viewFullHistory": "View full history on GitHub" + "newsTab": "Noticias", + "changelogTab": "Registro de cambios", + "loading": "Cargando el registro de cambios...", + "announcementsLoadFailed": "No se pudieron cargar los anuncios. Inténtalo de nuevo más tarde.", + "noAnnouncements": "No hay anuncios nuevos en este momento.", + "learnMore": "Más información", + "changelogLoadFailed": "No se pudo cargar el registro de cambios. Inténtalo de nuevo más tarde.", + "retry": "Reintentar", + "viewFullHistory": "Ver el historial completo en GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", + "title": "Políticas de enrutamiento del razonamiento", + "apiKeyTitle": "Enrutamiento del razonamiento para esta clave de API", + "subtitle": "Redirige los modelos y el nivel de esfuerzo de razonamiento sin necesidad de compatibilidad por parte del cliente. Las solicitudes no cambian si ninguna regla coincide.", + "loadError": "No se pudieron cargar las reglas de razonamiento.", + "saveError": "La regla no es válida o no se pudo guardar.", + "saved": "Regla de razonamiento guardada.", + "deleteConfirm": "¿Eliminar esta regla de razonamiento?", + "deleteError": "No se pudo eliminar la regla de razonamiento.", + "empty": "No hay configurada ninguna regla de razonamiento coincidente.", + "all": "Todos", + "any": "Cualquiera", + "enabled": "Activado", + "disabled": "Desactivado", + "filterSearch": "Buscar reglas", + "filterScope": "Filtrar por ámbito", + "filterStatus": "Filtrar por estado", + "allModels": "todos los modelos", + "keepModel": "Mantener el modelo", + "otherModel": "Otro modelo", + "combo": "Combinación", + "priorityShort": "prioridad {value}", + "toggleAria": "Activar {name}", + "edit": "Editar", + "delete": "Eliminar", + "name": "Nombre", + "description": "Descripción", + "scopeLabel": "Ámbito", + "apiKey": "Clave de API", + "sourceCombo": "Combinación de origen", + "connection": "Conexión", + "sourceModel": "Modelo de origen o comodín", + "sourceModelOptional": "Vacío = todos los modelos", + "sourceModelExample": "p. ej., gpt-5*", + "sourceEffort": "Esfuerzo de origen", + "missing": "Sin especificar", + "signalOnly": "Señal de razonamiento no discreta", + "requestTags": "Etiquetas de solicitud", + "requestTagsExample": "programación, interno", + "tagMode": "Coincidencia de etiquetas", + "effortMode": "Modo de esfuerzo", + "targetEffort": "Esfuerzo de destino", + "routingTarget": "Destino de enrutamiento", + "targetModel": "Modelo de destino", + "targetCombo": "Combinación de destino", + "budgetAction": "Presupuesto de razonamiento", + "budgetTokens": "Tokens de presupuesto", + "priority": "Prioridad", + "saveChanges": "Guardar cambios", + "add": "Añadir regla", + "cancel": "Cancelar", "simulateTitle": "Simular regla", "model": "Modelo", "effort": "Nivel de esfuerzo", @@ -13331,7 +13342,7 @@ "scope": { "global": "Global", "apiKey": "Clave API", - "combo": "Combo", + "combo": "Combinación", "model": "Modelo", "connection": "Conexión" }, @@ -13424,92 +13435,92 @@ "tierLive": "En vivo (tiempo real)", "tierCommunity": "Comunidad (retraso de 30 días)", "activateTitle": "Activar Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Compara el acceso Community y el acceso en tiempo real, comprende qué datos intercambia tu instalación y, después, elige cómo activar Radar.", + "accessScaleTitle": "Conoce el acceso a Radar antes de activarlo", + "accessScaleIntro": "Radar no realiza ninguna conexión de red hasta que aceptes participar. Elige el acceso Community o activa una clave personal de colaborador después de revisar estas reglas.", + "accessCommunityRule": "Community — no requiere clave: el catálogo completo con un retraso de 30 días.", + "accessSingleUseRule": "Dar una estrella + seguir — después de que GitHub OAuth verifique ambas acciones, tu cuenta de GitHub obtiene una consulta del catálogo en tiempo real; después, el acceso vuelve a Community. Este acceso único no puede volver a concederse a esa cuenta.", + "accessContributorRule": "Colaboradores — los PR fusionados, los commits y las líneas solo determinan el orden de la clasificación semanal. Los 10 primeros reciben 365 días; los puestos del 11 al 100 reciben 90 días; los colaboradores fuera de los 100 primeros no reciben ninguna concesión, independientemente del número de PR. Salir de la clasificación nunca reduce el tiempo ya concedido.", + "accessSupporterRule": "Patrocinadores — las compras únicas conceden 6 meses, 1 año o acceso de por vida, sin renovación automática. Las compras, las donaciones, los períodos como colaborador y las concesiones manuales se acumulan; el acceso de por vida siempre prevalece.", + "accessUseTitle": "Uso personal, recuperación y revisión", + "accessInstallationRule": "Licencia personal — usa la clave en una sola instalación activa a la vez. OmniRoute no toma huellas digitales del hardware. La recuperación revoca y sustituye una clave perdida sin restablecer su fecha de vencimiento.", + "accessAbuseRule": "Revisión por abuso — la cuarta IP distinta en 24 horas solo genera una marca para revisión manual; nunca bloquea ni revoca una clave automáticamente.", + "accessOffersRule": "Las ofertas en tiempo real se seleccionan manualmente y pueden cambiar o caducar.", + "privacyTitle": "Qué datos intercambia Radar", + "privacyDownloadsRule": "Descargas — tu instalación recibe metadatos de catálogo y de referidos firmados criptográficamente; una clave activa válida también desbloquea ofertas firmadas e Intel.", + "privacySendsRule": "Envíos — la sincronización del servidor envía la clave de patrocinador como token Bearer, y la infraestructura HTTPS recibe la IP de conexión. El registro de solicitudes del feed no almacena ninguno de estos valores sin procesar: conserva hashes de claves, datos de uso agregados y un HMAC truncado de la IP que rota diariamente para revisar posibles abusos.", + "privacyNeverRule": "Nunca se recopilan — los prompts, las respuestas, las conversaciones, las credenciales de proveedores, el tráfico de modelos, el tiempo de actividad, la latencia y la configuración local de proveedores nunca se envían a Radar.", + "activateButton": "Activar Community", "activating": "Activando...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "¿Ya tienes una clave de patrocinador?", + "keyInvalidFormatError": "Formato de clave no válido. Debe comenzar por \"omr_\" seguido de 40 caracteres hexadecimales.", + "activateWithKeyButton": "Activar patrocinador", + "changeKeyButton": "Cambiar clave", + "claimSectionTitle": "¿Aún no tienes una clave de patrocinador?", + "contributorButton": "Soy colaborador", + "contributorHint": "GitHub OAuth comprueba la clasificación semanal actual: los 10 primeros obtienen 365 días y los puestos del 11 al 100 obtienen 90 días. El número de PR por sí solo nunca concede acceso fuera de los 100 primeros.", + "supporterButton": "Apoyar el proyecto", + "supporterHint": "Las opciones de pago único de 6 meses, 1 año y de por vida no se renuevan automáticamente; los períodos válidos se acumulan y el acceso de por vida prevalece.", "colProvider": "Proveedor", "colModel": "Modelo", "colQuota": "Cuota", + "colLimits": "Límites de uso", + "trainsOnPrompts": "Entrena con los prompts", + "trainsOnPromptsHelp": "Las condiciones de este proveedor indican que puede entrenar con los prompts que envías. Los modelos sin esta insignia indican que no lo hacen o no lo documentan; la ausencia de una declaración no es una garantía.", + "limitsUnknownHelp": "Límites indicados únicamente por el feed de Radar; no hay límites publicados para esta entrada", + "contextUnknownHelp": "Ventana de contexto desconocida para esta entrada", + "capabilityUnknownHelp": "Capacidad no indicada por el feed", "colContext": "Contexto", "colCapabilities": "Capacidades", "colTos": "Riesgo de ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "nuevo", "setupGuide": "Guía de configuración", "disabledByFeed": "Desactivado por el feed de Radar", "capTools": "Herramientas", "capVision": "Visión", "capThinking": "Pensando", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", + "catalogTab": "Catálogo", + "freeCreditsTab": "Créditos gratuitos", + "freeCreditsSubtitle": "Enlaces de referidos de proveedores con seguimiento de Radar: usarlos no te cuesta nada adicional y ayuda a apoyar OmniRoute.", + "fixedLinksEmpty": "Aún no hay enlaces de referidos disponibles. Sincroniza Radar para comprobar si hay actualizaciones.", + "requiredActionLabel": "Qué hacer:", + "claimButton": "Reclamar créditos", + "campaignsTitle": "Campañas por tiempo limitado", + "campaignsEmpty": "No hay campañas activas en este momento; vuelve más tarde.", + "campaignsUpsellCommunity": "Las campañas por tiempo limitado son una ventaja adicional para los patrocinadores. Todos los enlaces fijos de esta página siguen siendo gratuitos para todo el mundo.", + "campaignsValidUntil": "Válido hasta el {date}", + "colActions": "Acciones", "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "editModel": "Editar", + "saveModel": "Guardar", + "cancelEdit": "Cancelar", + "resetModel": "Restablecer cambios locales", + "hideModel": "Ocultar", + "restoreModel": "Restaurar", + "hiddenModelsTitle": "Modelos ocultos", + "modelDisplayName": "Nombre para mostrar local", + "modelEnabled": "Habilitado localmente", + "localStateSaveFailed": "No se pudo guardar la configuración local de Radar", + "guidedCombos": "Combinaciones guiadas", + "offers": "Ofertas", + "intel": "Información" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Combinaciones guiadas de Radar", + "subtitle": "Crea alternativas prioritarias a partir de modelos gratuitos equivalentes seleccionados por Radar.", + "backToRadar": "Volver a Radar", + "loading": "Cargando sugerencias de combinaciones...", + "familyLabel": "Familia de modelos", + "modelsLabel": "Orden de prioridad", + "strategyReason": "La prioridad utiliza primero el mayor presupuesto gratuito recurrente y, después, recurre a los proveedores activos como alternativa.", + "generateButton": "Generar combinación", + "generating": "Generando...", + "alreadyCreated": "Ya creada", + "created": "Combinación creada", + "noSuggestions": "Actualmente, ninguna familia de modelos apta tiene conexiones activas con al menos dos proveedores.", + "catalogRequired": "Sincroniza primero el catálogo de Radar para cargar las familias de modelos seleccionadas.", + "loadFailed": "No se pudieron cargar las sugerencias de combinaciones de Radar.", + "createFailed": "No se pudo crear la combinación. Revisa tus conexiones con los proveedores e inténtalo de nuevo." }, "radarSetupPage": { "title": "Configuración del proveedor", @@ -13538,24 +13549,24 @@ }, "resilienceConnections": { "title": "Resiliencia de Conexión", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Tus conexiones se recuperan automáticamente", + "reassuranceDetail": "Normalmente no es necesario hacer nada. OmniRoute suspende temporalmente una conexión después de varios fallos y, a continuación, vuelve a probarla de forma segura.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Se pueden enviar solicitudes", + "coolingDown": "Se volverá a intentar pronto", + "lockedOut": "Requiere tu atención" }, "table": { "status": "Estado", "provider": "Proveedor", "connectionId": "Conexión", - "authType": "Auth", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "authType": "Autenticación", + "backoffLevel": "Espera exponencial", + "cooldown": "Tiempo de espera", "lastError": "Último Error", "lockouts": "Bloqueos", "healthy": "Saludable", - "coolingDown": "Cooldown", + "coolingDown": "Tiempo de espera", "circuitOpen": "Circuito Abierto", "recovering": "Recuperando", "degraded": "Degradado", @@ -13566,9 +13577,9 @@ "timeline": { "title": "Transiciones del Disyuntor", "window": "Ventana", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 h", + "window6h": "6 h", + "window24h": "24 h", "empty": "Sin transiciones en la ventana seleccionada", "currentState": "Estado Actual", "state": { @@ -13589,7 +13600,7 @@ "detail": { "title": "Detalle de Conexión", "metadata": "Metadatos", - "cooldown": "Cooldown", + "cooldown": "Tiempo de espera", "lastError": "Último Error", "breaker": "Disyuntor", "lockouts": "Bloqueos de Modelo", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Rechazar solicitudes antes del despacho cuando el modelo objetivo carece de capacidades requeridas (visión, herramientas, salida estructurada, ventana de contexto). Protege las solicitudes directas de un solo proveedor que eluden el filtro de compatibilidad de la capa combinada.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Omite la comprobación local de OmniRoute de la ventana de contexto y del máximo de tokens de entrada para las solicitudes directas a un único modelo. Los proveedores ascendentes siguen aplicando sus límites reales. La compresión de prompts y los límites de tokens de salida permanecen activos.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Las estadísticas de búsqueda y las búsquedas recientes solo cuentan los proveedores que aún tienen una conexión activa (los proveedores sin clave, como duckduckgo-free, siempre cuentan). Si se desactiva esta opción, se conservan todas las filas de búsqueda retenidas con un id de proveedor.", "publicSystem": { "notFound": { "title": "Página no encontrada", @@ -13699,12 +13710,12 @@ "maintenanceInfo": "Información de Mantenimiento", "service": "Servicio", "unknown": "desconocido", - "notAvailable": "n/a", + "notAvailable": "n/d", "providersTracked": "Proveedores Rastreado", "circuitBreakerState": "Estado del Interruptor de Circuito del Proveedor", "lastUpdate": "Última actualización: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes} min", + "uptimeHoursMinutes": "{hours} h {minutes} min" }, "statusPages": { "400": { @@ -13935,7 +13946,7 @@ "followDescription": "El eje se desplaza a la izquierda, la línea NOW se mantiene en el 75%", "now": "Ahora", "nowDescription": "Saltar al tiempo actual, la línea AHORA se restablece al centro", - "pan": "Pan", + "pan": "Desplazar", "panDescription": "Arrastra para explorar, el fondo está congelado" }, "reset": "Restablecer", @@ -13947,7 +13958,7 @@ "tokens": "Tokens", "active": "Activo", "other": "Otro", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "hora", "day": "día", "unknownModel": "desconocido", @@ -13967,7 +13978,7 @@ "runners": "Corredores", "tasks": "Tareas", "colName": "Nombre", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "Estado", "colTask": "Tarea", "colMode": "Modo", @@ -14070,11 +14081,11 @@ "actionApprove": "Aprobar plan", "actionCancel": "Cancelar", "actionSeeInGraph": "Ver en el gráfico", + "actionRepeat": "Repetir", "actionDone": "Acción aplicada", "actionFailed": "Error en la acción: {error}", "detailFailed": "No se pudieron cargar los detalles: {error}", "mirroredInA2A": "Reflejado en A2A", - "actionRepeat": "Repetir", "repeatConfirm": "Hacer clic de nuevo para confirmar", "repeatDone": "Nueva ejecución creada", "repeatUnavailable": "Entrada original no disponible" @@ -14088,57 +14099,57 @@ "networkError": "Error de red: no se pudo actualizar la configuración de exposición del proveedor" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Ofertas para patrocinadores", + "subtitle": "Descuentos oficiales, créditos, pruebas y beneficios de socios revisados por Radar.", + "backToRadar": "Volver a Radar", + "loading": "Cargando ofertas...", + "refresh": "Actualizar ofertas", + "refreshing": "Actualizando...", + "loadFailed": "No hemos podido actualizar las ofertas. Se conserva la última caché local verificada.", + "empty": "No hay ofertas activas disponibles en este momento.", + "keyRequiredTitle": "Se requiere una clave de patrocinador", + "keyRequiredDescription": "Las ofertas son un beneficio activo de Radar. Añade una clave de patrocinador existente en la pantalla de Radar, verifica tu condición de colaborador o apoya el proyecto para obtener una.", + "contributorButton": "Soy colaborador", + "supporterButton": "Apoyar el proyecto", + "partnerBadge": "Socio", + "officialBadge": "Oficial", + "conditionsLabel": "Condiciones:", + "validUntil": "Válida hasta el {date}", + "noExpiry": "Sin fecha de vencimiento anunciada", + "openOffer": "Ver oferta", + "trialDays": "{days, plural, one {# día} other {# días}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Información de Radar", + "subtitle": "Clasificaciones ELO propias de Radar y movimientos objetivos del catálogo.", + "backToRadar": "Volver a Radar", + "loading": "Cargando información...", + "refresh": "Actualizar información", + "syncing": "Actualizando...", + "loadFailed": "No se pudo actualizar Intel. Se conserva la última caché local verificada.", + "empty": "Aún no hay disponible ninguna instantánea verificada de Intel.", + "supporterBadge": "Colaborador de Radar", + "methodology": "Metodología", + "eloMethod": "ELO, inicial {initial}, K={factor}", + "freshness": "Actualidad del catálogo", + "ageDays": "{days, plural, one {Hace # día} other {Hace # días}}", + "trend": "Tendencia del catálogo", + "modelDelta": "{current} modelos, +{added} / -{removed}", + "ranking": "Clasificación de modelos", + "noRankings": "Aún no hay comparaciones confirmadas disponibles.", + "model": "Modelo", + "category": "Categoría", + "rating": "Puntuación", + "matches": "Comparaciones", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Reciente", + "aging": "Envejeciendo", + "stale": "Obsoleto" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "En crecimiento", + "stable": "Estable", + "shrinking": "En disminución" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "La solicitud excede la ventana de contexto del proveedor" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference es amigo del código abierto de OmniRoute", + "description": "Un gateway clasificado por coste que revende decenas de modelos de vanguardia tras un único endpoint compatible con OpenAI, y dirige cada solicitud al proveedor apto más barato, sin superar nunca el precio de lista.", + "cta": "Obtener una clave de API", + "partnerLinkNote": "Enlace del socio", + "dismissAriaLabel": "Descartar" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Desactiva la generación de variantes del nivel de razonamiento (p. ej., -low, -medium, -high) en el catálogo /v1/models." } diff --git a/src/i18n/messages/et.json b/src/i18n/messages/et.json index b72c7a30ee..babaa3f604 100644 --- a/src/i18n/messages/et.json +++ b/src/i18n/messages/et.json @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Avaldage claude/<provider>/<model> peegel-ID-d lõpp-punktis /v1/models, et Claude Code'i lüüsi mudeliotsing loetleks ka mitte-Claude'i mudelid. Hoiatus: globaalsel lubamisel kahekordistab see kõigi klientide kataloogikirjete arvu.", "featureFlagNoThinkingAliasEnabledDescription": "Lüüsi no-think/<provider>/<model> aliaste pealüliti. Sees (vaikimisi): /v1/models avaldab iga sobiliku mõtlemisvõimelise Claude'i mudeli jaoks mõtlemiseta variandi ning päringus saadetud no-think/ ID lahendatakse tagasi tegelikuks mudeliks, mille arutluskäik on maha surutud. Väljas: variante ei avaldata ja no-think/ ID-d käsitletakse nagu mis tahes muud tundmatut mudeli-ID-d. Kui see on sisse lülitatud, kehtib endiselt mudelipõhine ModelSpec.noThinkingAlias lubamisest või keelamisest loobumise säte.", "featureFlagChatVirtualLanesEnabledDescription": "Lubage pakkujale edastamiseks rentnikupõhised kohanduvad virtuaalsed vastuvõturajad (#9654): ühe rentniku koormushoog ei põhjusta enam teisele tõrget 503. Keskkonnamuutuja OMNIROUTE_CHAT_VIRTUAL_LANES alistab selle juhtpaneeli sätte; muudatused jõustuvad serveri taaskäivitamisel.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Juhtpaneeli teenusepakkujate lehed: kuva märk „Tasuta” ainult nende tunnuste puhul, mida teenusepakkuja arvestab — loobu kuvatava nime heuristikast, mitte-tõeväärtuslikest tasuta kasutust tähistavatest väljadest ja järelliidetest :free registreeritud teenusepakkujate puhul, kellel puudub dokumenteeritud tasuta pakett. Väljalülitamisel kasutatakse varasemat märgi kuvamise reeglit.", + "featureFlagProxySkipRecentlyFailedDescription": "Puhverserverite kogumid ja opencode'i kontopõhine roteerimine väldivad äsja nurjunud puhverserveri (TCP-proovist keelduti või selle kaudu saadi vastus 429) uuesti kasutamist protsessipõhise ajavahemiku jooksul, mis iga korduva tõrke korral kahekordistub kuni ülempiirini. Puhverserveri olekut ei salvestata; kui kõik kandidaadid kõrvale jäetakse, valik ei muutu. Vaikimisi väljas: valikujärjekord järgib täpselt tavalist roteerimist.", + "featureFlagProxyPoolEgressObservationDescription": "Kuva töölaual puhverserverite kogumi all, mitu vaadeldud väljuvat IP-aadressi teenindas selle liikmeid viimase 24 tunni jooksul, mitu ühendust neid kasutas ja suurim ühe IP-aadressi taga täheldatud arv. Kirjutuskaitstud, arvutatakse puhverserveri logist ja seda ei kasutata kunagi marsruutimiseks. Vaikimisi väljas: kogumi redaktor ei muutu ja vaatlusmarsruut tagastab null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Luba puhverserveri seisundi kontrollimisel sihtkoha poolt tagasi lükatud proovil (401/403/429: puhverserver vahendas päringu, sihtkoht keeldus sellest väljuvast IP-aadressist) lähtestada puhverserveri järjestikuste tõrgete jada nagu teenindatud proovi korral. Vaikimisi väljas: tagasilükkamine jääb neutraalseks ja säilitab jada. 5xx jääb mõlemal juhul ebaselgeks ning tagasilükkamine ei eemalda, keela ega taasaktiveeri kunagi puhverserverit.", "sidebar": { "home": "Avaleht", "dashboard": "Juhtpaneel", @@ -1275,7 +1275,7 @@ "systemGroup": "Süsteem", "costsOverview": "Ülevaade", "costsOverviewSubtitle": "Koondatud kuluanalüüs", - "agentBridge": "Agent Bridge", + "agentBridge": "Agendisild", "agentBridgeSubtitle": "IDE-agentide liikluse pealtkuulamine", "trafficInspector": "Liikluse inspektor", "trafficInspectorSubtitle": "Rakenduste päringu- ja vastuseliikluse kontrollimine", @@ -1298,7 +1298,7 @@ "groupSeparatorLabel": "Eraldaja", "discovery": "Tuvastamine", "discoverySubtitle": "Otsi teenusepakkujatelt tasuta juurdepääsu", - "conductor": "Conductor", + "conductor": "Dirigent", "conductorSubtitle": "CLI-agentide park", "orchestration": "Orkestreerimine", "orchestrationSubtitle": "Reaalajavaade kõigest töötavast", @@ -1778,7 +1778,7 @@ "sidebar": "Külgriba", "tokens": "Tokenid", "tools": "Tööriistad", - "agentBridge": "Agent Bridge", + "agentBridge": "Agendisild", "trafficInspector": "Liikluse inspektor", "usage": "Kasutus", "orchestration": "Orkestreerimine" @@ -3140,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Eesmärgi saavutamise hindamine", "hermesRoleCurator": "Kuraator", "hermesRoleCuratorDesc": "Oskuste ja mälu kureerimine", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Seire", "hermesRoleMonitorDesc": "Taustal jälgimine", "hermesRoleBackgroundReview": "Taustal ülevaatamine", "hermesRoleBackgroundReviewDesc": "Koodi taustal ülevaatamine", @@ -3177,7 +3177,7 @@ "copilotPasteInto": "Kleepige asukohta:", "copilotReloadInstruction": "Seejärel laadige VS Code uuesti ja määrake sisestusviibas API-võti.", "wireApiChatCompletions": "Vestluse lõpetamised (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiResponses": "Vastuste API (/responses)", "cliproxyapiActionFailed": "Toiming nurjus", "cliproxyapiActionSucceeded": "Toiming õnnestus", "cliproxyapiCheckUpdates": "Kontrolli värskendusi", @@ -4127,7 +4127,7 @@ "vscodeAliasDescriptionError": "Kuvatakse kohatäite-URL-id, sest CLI võtmeid ei saanud selle seansi ajal laadida.", "vscodeAliasDescriptionLoading": "CLI võtmete laadimine. Kohatäite-URL-e kuvatakse seni, kuni võti on saadaval.", "vscodeAliasDescriptionPlaceholder": "Kuvatakse kohatäite-URL-id. TOKEN-i asendamiseks looge või aktiveerige API-võti jaotises CLI Tools.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI-tööriistad", "vscodeAliasBaseLabel": "VS Code'i baas-URL", "vscodeAliasModelsLabel": "VS Code'i mudelid", "vscodeAliasChatLabel": "VS Code'i vestlus", @@ -4139,7 +4139,7 @@ "badgeInternalTooltip": "See on süsteemisisene lõpp-punkt", "tierAll": "Kõik", "tierAuth": "Autenditud", - "tierLoopback": "Loopback", + "tierLoopback": "Tagasiside", "tierAlwaysProtected": "Alati kaitstud", "tierPublic": "Avalik", "hideInternal": "Peida süsteemisisesed", @@ -5865,7 +5865,7 @@ "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "CLI", "codexFastTierActiveChip": "Codex Fast pakett on aktiivne", - "tierFast": "Fast", + "tierFast": "Kiire", "antigravityProjectIdLabel": "Google Cloud projekti ID", "antigravityProjectIdPlaceholder": "my-gcp-project-id", "grokWebCookiePlaceholder": "Grok Web küpsise kohatäitja", @@ -6367,15 +6367,15 @@ "checkWebToken": "Kontrolli tokenit", "huggingchatLabel": "HuggingChat (tasuta)", "huggingchatDesc": "Tasuta LLM-vestlus huggingface.co/chat kaudu", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe veeb", "poeWebDesc": "Mitme mudeliga vestlus poe.com kaudu", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice veeb", "veniceWebDesc": "Privaatsusele keskenduv AI-vestlus", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel veeb", "v0VercelWebDesc": "AI-põhine koodi genereerimine v0.dev kaudu", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi veeb", "kimiWebDesc": "Moonshot AI tarbijatele mõeldud vestlus www.kimi.com kaudu (rahvusvaheline, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola veeb", "doubaoWebDesc": "ByteDance AI-vestlus dola.com kaudu", "overrideBaseUrlAdvanced": "Täpsem: kirjuta baas-URL üle", "overrideBaseUrlHint": "Täpsem: suuna see sisseehitatud teenusepakkuja kohandatud lõpp-punktile. Vaikeväärtuse kasutamiseks jäta tühjaks.", @@ -6749,11 +6749,11 @@ "themeSystem": "Süsteem", "endpointTunnelVisibility": "Lõpp-punkti tunnelite nähtavus", "endpointTunnelVisibilityDesc": "Peida tunneli juhtelemendid lõpp-punkti lehelt tunneli olekut muutmata.", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Cloudflare'i kiirtunnel", "showCloudflareTunnelDesc": "Kuva Cloudflare Quick Tunneli juhtelemendid lõpp-punkti lehel.", - "showTailscaleFunnel": "Tailscale Funnel", + "showTailscaleFunnel": "Tailscale'i Funnel", "showTailscaleFunnelDesc": "Kuva Tailscale Funneli juhtelemendid lõpp-punkti lehel.", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "ngrok-i tunnel", "showNgrokTunnelDesc": "Kuva ngrok Tunneli juhtelemendid lõpp-punkti lehel.", "sidebarVisibility": "Peida külgriba üksused", "sidebarVisibilityDesc": "Visuaalse segaduse vähendamiseks peida külgriba navigeerimiskirjeid ilma funktsioone keelamata", @@ -6913,7 +6913,7 @@ "healthcheckLatency": "Viiteaeg", "proxyDocumentationScopeTitle": "Puhverserveri ulatuse määramine", "proxyDocumentationScopeDescBefore": "OmniRoute määrab väljamineva puhverserveri järgmises tähtsuse järjekorras:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "kombinatsioon → konto → teenusepakkuja → globaalne", "proxyDocumentationScopeDescAfter": ". Kõige täpsem ulatus on ülimuslik.", "proxyDocumentationAddTitle": "Kohandatud puhverserveri lisamine", "proxyDocumentationAddDescBefore": "Avage", @@ -7143,7 +7143,7 @@ "ipModeWhitelist": "Lubatud aadresside nimekiri", "ipModeWhitelistPriority": "Lubatud nimekirja prioriteet", "addIpAddress": "Lisa IP-aadress", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 või 10.0.*.*", "block": "+ Blokeeri", "allow": "+ Luba", "blocked": "Blokeeritud ({count})", @@ -7380,7 +7380,7 @@ "customPricingNote": "Saate konkreetsete mudelite vaikehinnastuse alistada. Kohandatud alistused on automaatselt tuvastatud hinnastusest kõrgema prioriteediga.", "editPricing": "Muuda hinnastust", "viewFullDetails": "Kuva täielikud üksikasjad", - "themeCoral": "Coral", + "themeCoral": "Korall", "adaptiveVolumeRouting": "Kohanduv mahupõhine marsruutimine", "adaptiveVolumeRoutingDesc": "Skaleerige ühendusi dünaamiliselt päringuandmete mahu ja läbilaskevõime surve põhjal.", "lkgpToggleTitle": "Viimane teadaolev toimiv teenusepakkuja (LKGP)", @@ -7953,9 +7953,9 @@ "cliproxyapiImportAuthButton": "Impordi kontod", "payloadRulesTitle": "Andmekoormuse reeglid", "payloadRulesDesc": "Seadista päringu andmekoormuse muudatused mudeli ja protokolli järgi. Muudatused salvestatakse sätetesse ja laaditakse kohe pärast salvestamist käituskeskkonda uuesti.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "vaikimisi", "payloadRuleDefaultDesc": "Rakendab parameetrid ainult siis, kui sihttee puudub väljaminevast andmekoormusest.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "alista", "payloadRuleOverrideDesc": "Sunnib väärtused andmekoormusse, asendades kõik sellel teel juba olemasoleva.", "payloadRuleFilterTitle": "filter", "payloadRuleFilterDesc": "Eemaldab blokeeritud parameetrid andmekoormusest enne päringu saatmist ülataseme teenusele.", @@ -10264,7 +10264,7 @@ "apiExplorerDescription": "Proovi OmniRoute’i otspunkte reaalajas. Vali otspunkt, seadista päring ja vaata vastust reaalajas.", "apiExplorerSseStarted": "SSE-voog käivitati — vaata reaalajas väljundit terminalist/arendajatööriistadest.", "apiExplorerError": "Viga: {message}", - "apiExplorerAuth": "auth", + "apiExplorerAuth": "autentimine", "apiExplorerResponseLabel": "Vastus", "apiExplorerSelectEndpoint": "Vali uurimiseks otspunkt", "apiExplorerChooseApi": "Vali külgribalt API, et näha selle üksikasju ja proovida seda reaalajas", @@ -10968,9 +10968,9 @@ "strategyLatency": "Latentsusoptimeeritud", "poolMembersLabel": "Kogumi liikmed ({count})", "poolNoMembers": "Selles kogumis pole veel ühtegi puhverserverit.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "Kasutatud {exits, plural, one {# väljumist} other {# väljumist}} {connections, plural, one {# ühenduse} other {# ühenduse}} poolt · kuni {max} ühel väljumisel · viimase {hours} h jooksul", + "poolEgressObservationEmpty": "Viimase {hours} h jooksul ei täheldatud liiklust", + "poolEgressObservationHint": "Arvutatud puhverserveri logist antud ajavahemiku kohta: selle kogumi liikmete puhul täheldatud erinevad väljaminevad IP-aadressid ja neid kasutanud OmniRoute’i ühendused. „Ühel väljumisel“ tähendab kogu ajavahemiku jooksul, mitte samal ajal. IP-põhine 429-lukustus peatab ainult sama teenusepakkujate rühma ühendused.", "poolRemove": "Eemalda", "poolRemoveFailed": "Puhverserveri eemaldamine kogumist nurjus", "poolAddLabel": "Lisa puhverserver", @@ -11244,7 +11244,7 @@ "searchResultFallback": "Tulemus {number}", "noKeysFound": "API-võtmeid ei leitud. Lisage üks jaotises Võtmed.", "exampleLabel": "Näide", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} sisendtokenit / {tokensOut} väljundtokenit", "defaultKey": "(vaikimisi)", "clear": "Tühjenda", @@ -11289,7 +11289,7 @@ "refresh": "Värskenda", "columnsLabel": "Veerud", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "ÜLEVAL", "semantic": "Semantiline", "upstream": "Ülesvoolu", "semanticCacheHit": "Semantilise vahemälu tabamus (vastuse edastas OmniRoute)", @@ -12523,7 +12523,7 @@ "storage": { "label": "Salvestuskoht", "agent": "Dünaamiline kataloog (/api/agent-skills) → SKILL.md GitHubis", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / kohalik)" }, "tagline": { "label": "Juhtlause", @@ -12992,7 +12992,7 @@ "description": "Luba voo taastamisel vastus uuesti pärida ja jätkata selle liitmist pärast seda, kui baidid on juba kliendini jõudnud." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Muuda voo keskel jätkamine tööriistakutse korral ohutuks: ära jätka kunagi katkestatud voogu pärast tööriistakutse saatmist (olenemata sellest, kas see on veel pooleli või juba lõpetatud) ning lõpeta pärast üht tühja jätkamist, selle asemel et kasutada ära kogu korduskatsete limiit." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Lülitu üks kord ümber sõsarühendusele, kui voog sulgub enne ühegi kasuliku kaadri saatmist ja sama ühenduse piiratud kordusproov on ära kasutatud. Kasutatava sõsarühenduse puudumisel tagastatakse algne early-EOF viga. Väljas: early-EOF jääb pärast kordusproovi lõplikuks." @@ -13035,12 +13035,12 @@ "description": "Jätka serveri hallatavate voogedastuseta tööriistakutsete tegemist, kuni mudel tagastab kliendi jaoks kasutatava vastuse." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After päritolu", + "description": "Koondatud 429/503 kättesaamatuse vastustes jäta Retry-After välja, kui konkreetne tulevane korduskatse aeg pole teada, selle asemel et saata sünteetiline 1 s; lisa error.retry_after_provenance ning loe combo tühjendamise teedel tekstilisi korduskatse vihjeid." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Kaitstud prioriteediga taristu peatamised kui 502", + "description": "Vasta 503 asemel 502-ga, kui ainult kvoodipõhise varuvariandiga prioriteetne sihtmärk peatab combo põhjusel, mis pole tõendatavalt kvoodiga seotud: teenusepakkuja avatud kaitselüliti või prognoosiv latentsuse tõttu vahelejätmine." } } }, @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Lükka päringud enne edastamist tagasi, kui sihtmudelil puuduvad nõutavad võimalused (nägemine, tööriistad, struktureeritud väljund, kontekstiaken). See kaitseb ühe teenusepakkuja otsepäringuid, mis mööduvad kombokihi ühilduvusfiltrist.", "featureFlagDisableContextWindowChecksDescription": "Jäta ühe mudeli otsepäringute puhul OmniRoute'i kohalik kontekstiakna ja sisendtokenite maksimumarvu kontroll vahele. Ülesvoolu teenusepakkujad jõustavad endiselt oma tegelikud piirangud. Viiba tihendamine ja väljundtokenite piirangud jäävad aktiivseks.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Otsingustatistika ja hiljutised otsingud arvestavad ainult teenusepakkujaid, millel on endiselt aktiivne ühendus (võtmeta teenusepakkujaid, nagu duckduckgo-free, arvestatakse alati). Valik „Väljas“ säilitab iga alleshoitud otsingurea koos teenusepakkuja ID-ga.", "publicSystem": { "notFound": { "title": "Lehte ei leitud", @@ -14053,7 +14053,7 @@ "clearFilters": "Tühjenda filtrid", "sourceCloudAgent": "Pilveagent", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Dirigent", "sourceStale": "Pole värskendatud alates {since}", "sourceOffline": "Võrguühenduseta", "sourceCollapse": "Ahenda", diff --git a/src/i18n/messages/fa.json b/src/i18n/messages/fa.json index 68f6e65028..d8742159bd 100644 --- a/src/i18n/messages/fa.json +++ b/src/i18n/messages/fa.json @@ -1,15 +1,15 @@ { "common": { - "save": "Save", - "cancel": "Cancel", - "delete": "Delete", - "loading": "Loading...", + "save": "ذخیره", + "cancel": "لغو", + "delete": "حذف", + "loading": "در حال بارگذاری...", "selectOption": "انتخاب یک گزینه", - "error": "An error occurred", - "success": "Success", - "confirm": "Are you sure?", - "refresh": "Refresh", - "close": "Close", + "error": "خطایی رخ داد", + "success": "موفقیتآمیز", + "confirm": "آیا مطمئن هستید؟", + "refresh": "تازهسازی", + "close": "بستن", "previousPage": "صفحه قبلی", "nextPage": "صفحه بعدی", "capsLockOn": "Caps Lock روشن است", @@ -17,142 +17,142 @@ "toggleColumns": "تغییر وضعیت ستون‌ها", "confirmTitle": "تایید", "confirmAction": "تایید", - "add": "Add", - "edit": "Edit", - "search": "Search", - "back": "Back", - "next": "Next", - "submit": "Submit", - "reset": "Reset", - "copy": "Copy", - "copied": "Copied!", - "enabled": "Enabled", - "disabled": "Disabled", - "active": "Active", - "inactive": "Inactive", - "noData": "No data available", - "nothingHere": "Nothing here yet", - "configure": "Configure", + "add": "افزودن", + "edit": "ویرایش", + "search": "جستجو", + "back": "بازگشت", + "next": "بعدی", + "submit": "ارسال", + "reset": "بازنشانی", + "copy": "کپی", + "copied": "کپی شد!", + "enabled": "فعال", + "disabled": "غیرفعال", + "active": "فعال", + "inactive": "غیرفعال", + "noData": "دادهای موجود نیست", + "nothingHere": "هنوز چیزی اینجا نیست", + "configure": "پیکربندی", "manualConfig": "پیکربندی دستی", - "manage": "Manage", - "name": "Name", - "actions": "Actions", - "status": "Status", - "type": "Type", + "manage": "مدیریت", + "name": "نام", + "actions": "عملیات", + "status": "وضعیت", + "type": "نوع", "model": "Model", - "models": "models", - "provider": "Provider", + "models": "مدلها", + "provider": "ارائهدهنده", "unknownProvider": "ارائه‌دهنده ناشناخته", - "account": "Account", - "time": "Time", - "details": "Details", - "created": "Created", - "lastUsed": "Last Refreshed", - "loadMore": "Load More", - "noResults": "No results found", - "reloadPage": "Reload Page", - "connected": "Connected", - "disconnected": "Disconnected", - "notConfigured": "Not configured", - "testConnection": "Test Connection", - "enable": "Enable", - "disable": "Disable", - "columns": "Columns", - "newest": "Newest", - "oldest": "Oldest", - "all": "All", - "none": "None", - "yes": "Yes", - "no": "No", + "account": "حساب", + "time": "زمان", + "details": "جزئیات", + "created": "ایجادشده", + "lastUsed": "آخرین تازهسازی", + "loadMore": "بارگیری بیشتر", + "noResults": "نتیجهای یافت نشد", + "reloadPage": "بارگذاری مجدد صفحه", + "connected": "متصل", + "disconnected": "قطعشده", + "notConfigured": "پیکربندینشده", + "testConnection": "آزمایش اتصال", + "enable": "فعالکردن", + "disable": "غیرفعالکردن", + "columns": "ستونها", + "newest": "جدیدترین", + "oldest": "قدیمیترین", + "all": "همه", + "none": "هیچکدام", + "yes": "بله", + "no": "خیر", "on": "روشن", "off": "خاموش", - "warning": "Warning", - "note": "Note", - "free": "Free", - "skipToContent": "Skip to content", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", - "accept": "Accept", - "accountId": "Account ID", + "warning": "هشدار", + "note": "نکته", + "free": "رایگان", + "skipToContent": "رفتن به محتوا", + "maintenanceServerIssues": "سرور با مشکل مواجه است. ممکن است برخی قابلیتها در دسترس نباشند.", + "maintenanceServerUnreachable": "سرور در دسترس نیست. در حال اتصال مجدد...", + "accept": "پذیرش", + "accountId": "شناسه حساب", "alias": "Alias", - "apiKeyId": "API Key ID", - "apiKeyName": "API Key Name", - "apiKeySecret": "API Key Secret", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "apiKeyId": "شناسه کلید API", + "apiKeyName": "نام کلید API", + "apiKeySecret": "رمز کلید API", + "authorization": "مجوز دسترسی", + "content-type": "نوع محتوا", + "content-length": "طول محتوا", "cookie": "Cookie", - "file": "File", - "host": "Host", + "file": "فایل", + "host": "میزبان", "id": "ID", - "import": "Import", + "import": "درونریزی", "limit": "Limit", "offset": "Offset", - "open": "Open", - "origin": "Origin", - "promptTokens": "Prompt Tokens", - "completionTokens": "Completion Tokens", - "totalTokens": "Total Tokens", - "rawModel": "Raw Model", - "scope": "Scope", - "skill": "Skill", - "sortBy": "Sort By", - "sortOrder": "Sort Order", - "tab": "Tab", + "open": "بازکردن", + "origin": "مبدأ", + "promptTokens": "توکنهای ورودی", + "completionTokens": "توکنهای تکمیل", + "totalTokens": "مجموع توکنها", + "rawModel": "مدل خام", + "scope": "دامنه", + "skill": "مهارت", + "sortBy": "مرتبسازی بر اساس", + "sortOrder": "ترتیب مرتبسازی", + "tab": "زبانه", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "ناحیهٔ متنی", + "tool": "ابزار", + "toolId": "شناسهٔ ابزار", "web": "Web", - "whereUsed": "Where Used", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "resolve": "Resolve", - "force": "Force", + "whereUsed": "موارد استفاده", + "whitelist": "فهرست مجاز", + "blacklist": "فهرست مسدود", + "resolve": "رفع", + "force": "اجباری", "base64url": "Base64 URL", "hex": "Hex", - "range": "Range", - "component": "Component", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", - "code": "Code", - "compatible": "Compatible", - "chat-completions": "Chat Completions", + "range": "محدوده", + "component": "مؤلفه", + "redirect_uri": "URI تغییر مسیر", + "idempotency-key": "کلید ایدمپوتنسی", + "error_description": "شرح خطا", + "code": "کد", + "compatible": "سازگار", + "chat-completions": "تکمیلهای گفتگو", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", - "hours": "Hours", + "auth_token": "توکن احراز هویت", + "crypto": "رمزارز", + "hours": "ساعت", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", - "resolveConnectionId": "Resolve Connection ID", - "resolve_connection_id": "Resolve Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "proxy_id": "شناسهٔ پراکسی", + "proxyId": "شناسهٔ پراکسی", + "connectionId": "شناسهٔ اتصال", + "resolveConnectionId": "رفع شناسهٔ اتصال", + "resolve_connection_id": "رفع شناسهٔ اتصال", + "scope_id": "شناسهٔ دامنه", + "scopeId": "شناسهٔ دامنه", + "jwtSecret": "رمز JWT", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", "builder-id": "Builder ID", - "musicDesc": "Music Description", - "musicGeneration": "Music Generation", + "musicDesc": "توضیحات موسیقی", + "musicGeneration": "تولید موسیقی", "idc": "IDC", - "cloud-status-changed": "Cloud status changed", - "where_used": "Where Used", - "windowMs": "Window (ms)", + "cloud-status-changed": "وضعیت فضای ابری تغییر کرد", + "where_used": "موارد استفاده", + "windowMs": "بازهٔ زمانی (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", - "Failed to save pricing": "Failed to save pricing", - "Failed to reset pricing": "Failed to reset pricing", - "apikey": "API Key", + "TOOL_ALLOWLIST": "فهرست ابزارهای مجاز", + "TOOL_DENYLIST": "فهرست ابزارهای غیرمجاز", + "Failed to save pricing": "ذخیرهٔ قیمتگذاری ناموفق بود", + "Failed to reset pricing": "بازنشانی قیمتگذاری ناموفق بود", + "apikey": "کلید API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "رفتن به داشبورد", + "checkSystemStatus": "بررسی وضعیت سیستم", + "selectModel": "انتخاب مدل", "addModel": "افزودن مدل", "effortNone": "هیچ‌کدام", "effortLow": "کم", @@ -162,12 +162,12 @@ "effortMax": "حداکثر", "effortUltra": "فوق‌العاده", "reasoningEffort": "تلاش استدلال", - "wireApi": "Wire API", + "wireApi": "اتصال API", "modelAliases": "نام‌های مستعار مدل", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "ترکیبها", + "noModelsFound": "هیچ مدلی یافت نشد", + "clear": "پاک کردن", + "done": "انجام شد", "selectAll": "انتخاب همه", "unselectAll": "لغو انتخاب همه", "visibleModels": "قابل مشاهده", @@ -184,527 +184,527 @@ "selectAllProviders": "تمام ارائه‌دهندگان را بررسی کنید", "clearProviderSelection": "غیرفعال کردن ارائه‌دهندگان", "providersSelectedCount": "{count} ارائه‌دهنده بررسی شده‌اند", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "خطایی رخ داد", + "comboDeleted": "ترکیب حذف شد", + "hide": "پنهان کردن", + "creating": "در حال ایجاد", + "comboCreated": "ترکیب ایجاد شد", + "swapFormats": "جابهجایی قالبها", + "daysAgo": "روز پیش", + "retries": "تلاشهای مجدد", + "errorDuringRestore": "خطا هنگام بازیابی", + "eventsAppearHint": "راهنمای نمایش رویدادها", + "noLockouts": "بدون مسدودسازی", + "webSearchDesc": "توضیحات جستوجوی وب", + "audioProvidersHeading": "عنوان ارائهدهندگان صوتی", "cloudAgentProviders": "ارائه دهندگان عامل ابری", - "minutesAgo": "Minutes Ago", + "minutesAgo": "دقیقه پیش", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "فعال با تازهسازی خودکار", + "webSearch": "جستوجوی وب", + "anthropicPrefixPlaceholder": "جاینگهدار پیشوند Anthropic", + "addModelToCombo": "افزودن مدل به ترکیب", + "failedToLoad": "بارگذاری ناموفق بود", + "categoryMedia": "دستهبندی رسانه", + "enableCloud": "فعالسازی فضای ابری", + "expirationBannerExpiringSoon": "بنر انقضای قریبالوقوع", + "retry": "تلاش مجدد", + "embeddings": "تعبیهها", + "errorCount": "تعداد خطاها", + "backupReasonManual": "دلیل پشتیبانگیری دستی", + "safeSearchModerate": "جستوجوی ایمن متوسط", + "activeLimiters": "محدودکنندههای فعال", + "a2aCardTitle": "عنوان کارت A2A", + "cloudWorkerUnreachable": "کارگر ابری در دسترس نیست", + "testFailed": "آزمایش ناموفق بود", + "compatibleBaseUrlHint": "راهنمای URL پایه سازگار", + "usageTracking": "ردیابی میزان استفاده", + "disableCloudTitle": "عنوان غیرفعالسازی فضای ابری", + "noConnections": "هیچ اتصالی وجود ندارد", + "providerHealth": "وضعیت ارائهدهنده", + "confirmDbImport": "تأیید وارد کردن پایگاه داده", + "notAvailableSymbol": "نماد در دسترس نبودن", + "backupsAvailable": "نسخههای پشتیبان موجود", + "providerAuto": "انتخاب خودکار ارائهدهنده", + "newProviderNamePlaceholder": "نگهدارنده نام ارائهدهنده جدید", + "a2aQuickStartStep2": "مرحله ۲ شروع سریع A2A", + "ok": "تأیید", + "available": "در دسترس", + "noBackupYet": "هنوز نسخه پشتیبانی وجود ندارد", + "more": "بیشتر", + "noCompatibleYet": "هنوز مورد سازگاری وجود ندارد", + "multiProvider": "چند ارائهدهندهای", + "repairEnvHint": "راهنمای ترمیم محیط", + "disablingCloud": "در حال غیرفعالسازی فضای ابری", + "testBench": "محیط آزمایش", + "valid": "معتبر", + "cloudBenefitShare": "اشتراکگذاری مزایای فضای ابری", + "mcpCardTitle": "عنوان کارت MCP", + "disableConfirm": "تأیید غیرفعالسازی", + "filters": "فیلترها", + "expirationBannerExpiredDesc": "توضیحات بنر انقضایافته", + "saveComboDefaults": "ذخیره پیشفرضهای ترکیبی", + "cloudConnectedVerified": "اتصال ابری تأییدشده", + "uptime": "زمان فعالیت", + "compatibleProdPlaceholder": "نگهدارنده محصول سازگار", + "fallbackChainsTitle": "عنوان زنجیرههای جایگزین", + "oauthLabel": "برچسب OAuth", + "a2aCardDescription": "توضیحات کارت A2A", + "okShort": "تأیید", + "maintenance": "نگهداری", + "formatConverter": "مبدل قالب", + "zedImportNetworkError": "خطای شبکه هنگام وارد کردن Zed", + "apiKeyLabel": "برچسب کلید API", + "noModelsForProvider": "هیچ مدلی برای ارائهدهنده وجود ندارد", + "mcpCardDescription": "توضیحات کارت MCP", + "apiTypeLabel": "برچسب نوع API", + "configuredProvidersLabel": "برچسب ارائهدهندگان پیکربندیشده", + "maxRetriesLabel": "برچسب حداکثر تلاشهای مجدد", + "title": "عنوان", + "output": "خروجی", + "prefixHint": "راهنمای پیشوند", + "skipWizard": "رد کردن راهانداز", + "failedCount": "تعداد ناموفقها", + "confirmDbImportDesc": "توضیحات تأیید درونریزی پایگاه داده", + "entries": "ورودیها", + "until": "تا", + "disableCombo": "غیرفعال کردن ترکیب", + "liveMonitorDescriptionPrefix": "پیشوند توضیحات پایش زنده", + "runningCount": "تعداد در حال اجرا", + "noActiveConnectionsInGroup": "هیچ اتصال فعالی در گروه وجود ندارد", + "savedSuccessfully": "با موفقیت ذخیره شد", + "systemStorage": "فضای ذخیرهسازی سیستم", + "videoDesc": "توضیحات ویدئو", + "maxResults": "حداکثر نتایج", + "timeRangeMonth": "بازه زمانی ماه", + "testSummary": "خلاصه آزمایش", + "failedSetPassword": "تنظیم رمز عبور ناموفق بود", + "audio": "صدا", + "restore": "بازیابی", + "disableWarning": "غیرفعال کردن هشدار", + "moderationsDesc": "توضیحات تعدیل محتوا", + "providerHealthStatusAria": "برچسب دسترسپذیری وضعیت سلامت ارائهدهنده", + "modelNamePlaceholder": "متن جایگزین نام مدل", + "mcpQuickStartStep2": "مرحله ۲ شروع سریع MCP", + "quickStart": "شروع سریع", + "fullExportFailedWithError": "برونبری کامل با خطا ناموفق بود", + "loadingBackups": "در حال بارگذاری نسخههای پشتیبان", + "anthropicBaseUrlPlaceholder": "متن جایگزین URL پایه Anthropic", + "description": "توضیحات", + "noProviderFound": "هیچ ارائهدهندهای یافت نشد", + "auto": "خودکار", + "protocolsDescription": "توضیحات پروتکلها", + "cloudSessionNote": "یادداشت نشست ابری", + "advancedSettings": "تنظیمات پیشرفته", + "defaultStrategy": "راهبرد پیشفرض", + "purgeExpiredLogs": "پاکسازی گزارشهای منقضیشده", + "justNow": "همین حالا", + "providerTestFailed": "آزمایش ارائهدهنده ناموفق بود", + "openaiBaseUrlPlaceholder": "متن جایگزین نشانی پایه OpenAI", + "image": "تصویر", + "failedCreateChain": "ایجاد زنجیره ناموفق بود", + "importDatabase": "درونریزی پایگاه داده", + "allDataLocal": "همه دادهها محلی هستند", + "sectionTitle": "عنوان بخش", + "failedToggle": "تغییر وضعیت ناموفق بود", + "editCombo": "ویرایش ترکیب", + "testResults": "نتایج آزمایش", + "searchQuery": "عبارت جستوجو", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "تکثیر", + "createCombo": "ایجاد ترکیب", + "searchTypeWeb": "نوع جستوجو: وب", + "addChain": "افزودن زنجیره", + "prefixLabel": "برچسب پیشوند", + "listModelsDesc": "توضیحات فهرست مدلها", + "databaseSize": "اندازه پایگاه داده", + "chainCreated": "زنجیره ایجاد شد", + "providerTestTimeout": "مهلت آزمایش ارائهدهنده به پایان رسید", + "routingStrategy": "راهبرد مسیریابی", + "translateAction": "عملیات ترجمه", + "exportFailed": "برونبری ناموفق بود", + "connectedVerificationPending": "متصل شد؛ در انتظار تأیید", + "a2aQuickStartTitle": "عنوان شروع سریع A2A", + "couldNotTest": "امکان آزمایش وجود نداشت", + "testAllCompatible": "آزمایش همه موارد سازگار", + "anthropicCompatibleName": "نام سازگار با Anthropic", + "disabling": "در حال غیرفعالسازی", + "failedEnable": "فعالسازی ناموفق بود", + "categoryUtility": "دستهبندی ابزارها", + "customUrlOptional": "نشانی سفارشی (اختیاری)", + "localProviders": "ارائهدهندگان محلی", + "comboNamePlaceholder": "متن جایگزین نام ترکیب", + "memoryRss": "حافظه RSS", + "disableProvider": "غیرفعالکردن ارائهدهنده", + "welcomeDesc": "توضیحات خوشآمدگویی", + "nameLabel": "برچسب نام", + "allOperational": "همه سامانهها عملیاتی هستند", + "backupNow": "اکنون پشتیبانگیری کن", + "providerMaxRetriesAria": "حداکثر تلاشهای مجدد ارائهدهنده برای ARIA", + "textToSpeechDesc": "توضیحات تبدیل متن به گفتار", + "machineId": "شناسه دستگاه", + "globalProxy": "پروکسی سراسری", + "hitsMisses": "موفقیتها و عدم موفقیتها", + "testDesc": "توضیحات آزمایش", + "chatDesc": "توضیحات گفتگو", + "importSuccess": "وارد کردن موفق بود", + "chat": "گفتگو", + "a2aQuickStartStep1": "مرحله ۱ شروع سریع A2A", + "importFailed": "وارد کردن ناموفق بود", + "inputPlaceholder": "متن جاینگهدار ورودی", + "providerModelsTitle": "عنوان مدلهای ارائهدهنده", + "lastBackup": "آخرین نسخه پشتیبان", + "yourEndpoint": "نقطه پایانی شما", + "autoDisableThresholdDesc": "توضیحات آستانه غیرفعالسازی خودکار", + "rerankDesc": "توضیحات بازرتبهبندی", + "modelsPathPlaceholder": "جاینگهدار مسیر مدلها", + "noCombosYet": "هنوز هیچ ترکیبی وجود ندارد", + "connectedVerificationPendingWithError": "متصل است؛ تأیید با خطا در انتظار است", + "comboDefaultsGuideHint1": "راهنمای پیشفرضهای ترکیب، نکته ۱", + "enableCloudTitle": "عنوان فعالسازی فضای ابری", + "configuredProvidersHint": "راهنمای ارائهدهندگان پیکربندیشده", + "paused": "متوقفشده", + "llmProviders": "ارائهدهندگان LLM", + "enableCombo": "فعالسازی ترکیب", + "removeProviderOverrideAria": "حذف بازنویسی ارائهدهنده برای ARIA", + "nodeVersion": "نسخه Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "صدور با خطا ناموفق بود", + "proxyConfigured": "پروکسی پیکربندی شده است", + "concurrencyPerModel": "همزمانی برای هر مدل", + "protocolTasksLabel": "برچسب وظایف پروتکل", + "oauthProviders": "ارائهدهندگان OAuth", + "lockedCount": "تعداد قفلشدهها", + "deleteChainConfirm": "تأیید حذف زنجیره", + "recentTranslations": "ترجمههای اخیر", + "zedImportButton": "دکمه وارد کردن Zed", + "responsesDesc": "توضیحات پاسخها", + "testedCount": "تعداد آزمایششدهها", + "providersCommaSeparatedPlaceholder": "جاینگهدار ارائهدهندگان جداشده با ویرگول", + "signatureDefaults": "مقادیر پیشفرض امضا", + "errorCreating": "خطا در ایجاد", + "timeRangeYear": "بازه زمانی سال", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", - "testBenchTab": "Test Bench", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "cloudDisabledSuccess": "غیرفعالسازی فضای ابری با موفقیت انجام شد", + "deleteConfirm": "تأیید حذف", + "check": "بررسی", + "safeSearch": "جستجوی ایمن", + "protocolLastActivity": "آخرین فعالیت پروتکل", + "openMcpDashboard": "باز کردن داشبورد Mcp", + "testBenchTab": "محیط آزمایش", + "chatPathLabel": "برچسب مسیر چت", + "retryDelay": "تأخیر تلاش مجدد", + "errorUpdating": "خطا در بهروزرسانی", + "ideCliIntegrations": "یکپارچهسازیهای IDE و CLI", + "imageGeneration": "تولید تصویر", + "apiKeyRequired": "کلید API الزامی است", + "resetAllTitle": "عنوان بازنشانی همه", + "connectionError": "خطای اتصال", + "modelName": "نام مدل", + "apiKeyForCheck": "کلید API برای بررسی", + "cloudRequestTimeout": "مهلت درخواست ابری به پایان رسید", + "showConfiguredOnly": "فقط موارد پیکربندیشده نمایش داده شوند", "showFreeOnly": "فقط رایگان", "addFirstProvider": "اولین ارائه دهنده خود را اضافه کنید", "addFirstProviderDesc": "برای شروع درخواست‌های مسیریابی از طریق OmniRoute، یک ارائه‌دهنده هوش مصنوعی را وصل کنید. می توانید از ارائه دهندگان رایگان، کلیدهای API یا حساب های OAuth استفاده کنید.", "learnMore": "بیشتر بدانید", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "شامل دامنهها", + "promptCache": "حافظه نهان پرامپت", + "cloudConnected": "فضای ابری متصل است", + "deleteChain": "حذف زنجیره", + "chatPathPlaceholder": "جاینگهدار مسیر چت", + "databasePath": "مسیر پایگاه داده", + "usingLocalServer": "در حال استفاده از سرور محلی", + "globalComboConfig": "پیکربندی ترکیبی سراسری", + "backupFailed": "پشتیبانگیری ناموفق بود", + "tabProtocols": "زبانه پروتکلها", + "continue": "ادامه", + "categorySearch": "جستجوی دستهبندی", + "rateLimitStatus": "وضعیت محدودیت نرخ", + "repairEnvSuccess": "ترمیم محیط با موفقیت انجام شد", + "nameRequired": "نام الزامی است", + "country": "کشور", + "trackMetricsDesc": "توضیحات ردیابی معیارها", + "durationSecondsShort": "مدتزمان (ثانیه، کوتاه)", + "formatConverterDescription": "توضیحات مبدل قالب", + "cloudBenefitAccess": "دسترسی به مزیتهای ابری", + "maxRetries": "حداکثر تلاشهای مجدد", + "queueTimeout": "مهلت زمانی صف", "queueDepth": "عمق صف", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "افزودن ارائهدهنده", + "realtime": "بلادرنگ", + "totalTranslations": "مجموع ترجمهها", + "protocolActiveStreamsLabel": "برچسب جریانهای فعال پروتکل", + "repairEnv": "ترمیم Env", + "modelsCount": "تعداد مدلها", + "viewBackups": "مشاهده نسخههای پشتیبان", + "responsesApi": "API پاسخها", + "copyComboName": "کپی نام ترکیب", + "failures": "خطاها", + "failedUpdate": "بهروزرسانی ناموفق بود", + "imageDesc": "توضیحات تصویر", + "failedCreate": "ایجاد ناموفق بود", + "remainingOfLimit": "باقیمانده از حد مجاز", + "protocolsTitle": "عنوان پروتکلها", + "expirationBannerExpiringSoonDesc": "توضیحات بنر انقضای نزدیک", + "source": "منبع", + "failed": "ناموفق", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "مرحله ۱ شروع سریع MCP", + "runTest": "اجرای آزمایش", + "loadingFallbackChains": "در حال بارگذاری زنجیرههای جایگزین", + "healthy": "سالم", + "version": "نسخه", + "saveBlockWeighted": "ذخیره بلوک وزندار", + "zedImportNone": "موردی برای وارد کردن از Zed وجود ندارد", + "noBackupsYet": "هنوز نسخه پشتیبانی وجود ندارد", + "noGlobalProxy": "بدون پراکسی سراسری", + "noModels": "بدون مدل", + "stickyLimit": "حد ثابت", + "passedCount": "تعداد قبولشدهها", + "zedImportFailed": "وارد کردن از Zed ناموفق بود", + "saving": "در حال ذخیره", + "testAll": "آزمایش همه", + "globalProxyDesc": "توضیحات پراکسی سراسری", + "latencyP99": "تأخیر P99", + "connectingToCloud": "در حال اتصال به Cloud", + "responses": "پاسخها", + "errorDeleting": "خطا در حذف", + "openaiPrefixPlaceholder": "متن جایگزین پیشوند Openai", + "enterPassword": "رمز عبور را وارد کنید", + "openA2aDashboard": "باز کردن داشبورد A2A", + "enableProvider": "فعالسازی ارائهدهنده", + "modeTest": "حالت آزمایش", + "failedDeleteChain": "حذف زنجیره ناموفق بود", + "providerDesc": "توضیحات ارائهدهنده", + "templateLoadHint": "راهنمای بارگیری الگو", + "lastFailure": "آخرین شکست", + "moveDown": "انتقال به پایین", + "providerLabel": "برچسب ارائهدهنده", + "clearCacheFailed": "پاکسازی حافظه پنهان ناموفق بود", + "imagesGenerations": "تولید تصاویر", + "repairEnvWorking": "در حال ترمیم محیط", + "millisecondsShort": "میلیثانیه", + "globalLabel": "برچسب سراسری", + "failuresPlural": "شکستها", + "completionsLegacyDesc": "توضیحات تکمیلهای قدیمی", + "searchProviders": "جستوجوی ارائهدهندگان", + "chatPathHint": "راهنمای مسیر چت", + "defaultStrategyDesc": "توضیحات راهبرد پیشفرض", + "latencyP95": "تأخیر P95", + "textToSpeech": "تبدیل متن به گفتار", + "searchType": "نوع جستوجو", + "messages": "پیامها", + "aggregatorsGateways": "تجمیعکنندهها و درگاهها", + "comboStrategyAria": "راهبرد ترکیبی Aria", + "input": "ورودی", + "testingConnection": "در حال آزمایش اتصال", + "excludeDomains": "دامنههای مستثنی", + "webCookieProviders": "ارائهدهندگان کوکی وب", + "allTestsPassed": "همه آزمایشها موفق بودند", + "openaiCompatibleName": "نام سازگار با Openai", + "warningCostOptimizedPartialPricing": "هشدار درباره قیمتگذاری جزئی بهینهشده برای هزینه", + "comboDefaultsGuideTitle": "عنوان راهنمای پیشفرضهای ترکیبی", + "hoursAgo": "ساعت پیش", + "notAvailable": "در دسترس نیست", + "skipAndContinue": "رد کردن و ادامه دادن", + "moderations": "نظارتها", + "proxyConfig": "پیکربندی پروکسی", + "upstreamProxyProviders": "ارائهدهندگان پروکسی بالادستی", + "exportAll": "خروجی گرفتن از همه", + "queuedCount": "تعداد در صف", + "resetAll": "بازنشانی همه", + "noTranslations": "بدون ترجمه", + "avgLatency": "میانگین تأخیر", + "throttleStatus": "وضعیت محدودسازی", + "backupRetentionDesc": "توضیحات نگهداری نسخه پشتیبان", + "noCBData": "دادهای برای Cb وجود ندارد", + "chainDeleted": "زنجیره حذف شد", + "timeLeft": "زمان باقیمانده", + "expirationBannerExpired": "بنر انقضا منقضی شده است", + "language": "زبان", + "invalidFileType": "نوع فایل نامعتبر است", + "monitoredProviders": "ارائهدهندگان تحت نظارت", + "errors": "خطاها", + "heap": "هیپ", + "chatCompletions": "تکمیلهای گفتگو", + "exampleTemplatesHint": "راهنمای قالبهای نمونه", + "retryDelayLabel": "برچسب تأخیر تلاش مجدد", + "audioTranscription": "رونویسی صوتی", + "fallbackChainsDesc": "توضیحات زنجیرههای جایگزین", + "exampleTemplates": "قالبهای نمونه", + "connectionsCount": "تعداد اتصالها", + "modelsPathLabel": "برچسب مسیر مدلها", + "activeProvidersHint": "راهنمای ارائهدهندگان فعال", + "activeLockouts": "قفلشدگیهای فعال", + "invalid": "نامعتبر", + "skipPassword": "رد کردن رمز عبور", + "moveUp": "انتقال به بالا", + "timeRange": "بازه زمانی", + "stickyLimitDesc": "توضیحات محدودیت چسبنده", + "cloudBenefitEdge": "مزیت لبه ابری", + "custom": "سفارشی", + "verifying": "در حال تأیید", + "baseUrlLabel": "برچسب نشانی پایه", + "setPassword": "تنظیم رمز عبور", + "safeSearchStrict": "جستجوی ایمن سختگیرانه", + "noChangesSinceBackup": "از زمان پشتیبانگیری تغییری ایجاد نشده است", + "modelsPathHint": "راهنمای مسیر مدلها", + "audioTranscriptions": "رونویسیهای صوتی", + "testCombo": "آزمایش ترکیب", + "mcpQuickStartTitle": "عنوان شروع سریع Mcp", + "comboUpdated": "ترکیب بهروزرسانی شد", + "weighted": "وزندار", + "providers": "ارائهدهندگان", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", - "chatTesterTab": "Chat Tester", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "noFallbackChainsDesc": "توضیحات نبود زنجیرههای جایگزین", + "yesImport": "بله، وارد کردن", + "lockoutsAutoRefreshHint": "راهنمای نوسازی خودکار قفلشدگیها", + "tabApis": "زبانه Apiها", + "sectionDescription": "توضیحات بخش", + "filter": "فیلتر", + "purgeLogsFailed": "پاکسازی گزارشها ناموفق بود", + "latency": "تأخیر", + "testAllOAuth": "آزمایش همه O Authها", + "mcpQuickStartStep3": "مرحله ۳ شروع سریع Mcp", + "repairEnvFailed": "ترمیم Env ناموفق بود", + "zedImportHint": "راهنمای وارد کردن Zed", + "modelsAcrossEndpoints": "مدلها در میان نقاط پایانی", + "autoDisableBannedAccounts": "غیرفعالسازی خودکار حسابهای مسدودشده", + "securityDesc": "توضیحات امنیت", + "listModels": "فهرست مدلها", + "backupRestore": "پشتیبانگیری و بازیابی", + "target": "هدف", + "zedImportSuccess": "وارد کردن Zed با موفقیت انجام شد", + "lastHeaderUpdate": "آخرین بهروزرسانی سرآیند", + "categoryCore": "دسته اصلی", + "noFallbackChains": "بدون زنجیره جایگزین", + "noSearchProviders": "هیچ ارائهدهنده جستجویی وجود ندارد", + "autoBalance": "توازن خودکار", + "noModelsYet": "هنوز مدلی وجود ندارد", + "signatureFamily": "خانواده امضا", + "externalApiCalls": "فراخوانیهای خارجی Api", + "providerOverridesDesc": "توضیحات بازنویسیهای ارائهدهنده", + "signatureTool": "ابزار امضا", + "connectionFailed": "اتصال ناموفق بود", + "activeLimitersPlural": "محدودکنندههای فعال", + "doneDesc": "توضیحات انجامشده", + "down": "پایین", + "noDataYet": "هنوز دادهای وجود ندارد", + "activeProviders": "ارائهدهندگان فعال", + "nameInvalid": "نام نامعتبر است", + "skip": "رد کردن", + "createChain": "ایجاد زنجیره", + "audioSpeech": "گفتار صوتی", + "cacheCleared": "حافظهٔ پنهان پاک شد", + "searchTypeNews": "نوع جستوجو: اخبار", + "durationMillisecondsShort": "مدتزمان به میلیثانیه", + "addOpenAICompatible": "افزودن ارائهدهندهٔ سازگار با Open Ai", + "chatTesterTab": "آزمایشکنندهٔ گفتوگو", + "queued": "در صف", + "domainPlaceholder": "متن جایگزین دامنه", + "durationMinutesShort": "مدتزمان به دقیقه", + "verifyingConnection": "در حال تأیید اتصال", + "imageProviders": "ارائهدهندگان تصویر", + "protocolToolsLabel": "برچسب ابزارهای پروتکل", + "queryPlaceholder": "متن جایگزین پرسوجو", + "videoGeneration": "تولید ویدئو", + "timeRangeWeek": "بازهٔ زمانی: هفته", + "limitExhausted": "محدودیت به پایان رسیده است", + "failedDisable": "غیرفعالسازی ناموفق بود", + "inMemoryNote": "یادداشت حافظهٔ داخلی", + "compatibleHint": "راهنمای سازگاری", + "errorShort": "خطا", + "advancedHint": "راهنمای پیشرفته", + "restoreFailed": "بازیابی ناموفق بود", + "searchProvidersHeading": "ارائهدهندگان جستوجو", + "comboName": "نام ترکیب", + "autoDisableDescription": "توضیحات غیرفعالسازی خودکار", + "embeddingsDesc": "توضیحات تعبیهسازیها", + "operational": "عملیاتی", + "testAllApiKey": "آزمایش همهٔ کلیدهای API", + "backupCreated": "نسخهٔ پشتیبان ایجاد شد", + "errorDuringImport": "خطا هنگام درونریزی", + "comboDefaultsGuideHint2": "راهنمای دوم پیشفرضهای ترکیب", + "connecting": "در حال اتصال", + "fillModelAndProviders": "مدل و ارائهدهندگان را وارد کنید", + "syncing": "در حال همگامسازی", + "resetConfirm": "تأیید بازنشانی", + "trackMetrics": "ردیابی معیارها", + "successful": "موفق", + "recovering": "در حال بازیابی", + "autoDisableThreshold": "آستانه غیرفعالسازی خودکار", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "در حال همگامسازی دادهها", + "cloudBenefitPorts": "پورتهای مزیت ابری", + "compatibleProviders": "ارائهدهندگان سازگار", "freeTierProviders": "ارائه دهندگان ردیف رایگان", "freeTierLabel": "طبقه رایگان موجود است", "freeTierProvidersDesc": "ارائه دهندگان با سطوح رایگان – برخی نیاز به ثبت نام کلید API دارند، برخی دیگر اصلاً نیازی به اعتبار ندارند.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "پاککردن حافظه پنهان", + "reqs": "درخواستها", + "addAnthropicCompatible": "افزودن سازگار با Anthropic", + "apiKeyProviders": "ارائهدهندگان کلید API", + "tabsAria": "برگههای ARIA", + "resetting": "در حال بازنشانی", + "millisecondsAbbr": "اختصار میلیثانیه", + "backupReasonPreRestore": "دلیل پشتیبانگیری پیش از بازیابی", + "disableCloud": "غیرفعالکردن فضای ابری", + "newProviderNameAria": "ARIA نام ارائهدهنده جدید", + "passwordsMismatch": "گذرواژهها مطابقت ندارند", + "a2aQuickStartStep3": "مرحله ۳ شروع سریع A2A", + "liveMonitorDescriptionSuffix": "پسوند توضیحات پایش زنده", + "failedAddProvider": "افزودن ارائهدهنده ناموفق بود", + "addAtLeastOneProvider": "حداقل یک ارائهدهنده اضافه کنید", + "reasonSeparator": "جداکننده دلیل", + "zedImporting": "در حال واردکردن Zed", + "confirmPasswordPlaceholder": "محلنگهدار تأیید گذرواژه", + "whatYouGet": "آنچه دریافت میکنید", + "signatureSession": "جلسه امضا", + "errorCountNoCode": "تعداد خطاهای بدون کد", + "testing": "در حال آزمایش", + "providersCommaSeparated": "ارائهدهندگان جداشده با ویرگول", + "exportDatabase": "برونبری پایگاه داده", + "hitRate": "نرخ اصابت", + "completionsLegacy": "تکمیلهای قدیمی", + "removeModel": "حذف مدل", + "timeRangeDay": "بازه زمانی روز", + "cloudRequestFailed": "درخواست ابری ناموفق بود", + "updatedAt": "بهروزرسانیشده در", + "monitoredProvidersHint": "راهنمای ارائهدهندگان تحت نظارت", + "connectionSuccessful": "اتصال موفق بود", + "latencyP50": "تأخیر P50", + "logsDeleted": "گزارشها حذف شدند", + "chatTester": "آزمایشکننده چت", + "safeSearchOff": "جستوجوی ایمن خاموش است", + "nameHint": "راهنمای نام", + "debugToggle": "کلید تغییر وضعیت اشکالزدایی", + "embedding": "تعبیهسازی", + "issuesLabel": "برچسب مشکلات", + "optionAny": "گزینه «هرکدام»", + "maxNestingDepth": "حداکثر عمق تودرتویی", + "rerank": "رتبهبندی مجدد", + "checking": "در حال بررسی", + "getStarted": "شروع کنید", + "restoreSuccess": "بازیابی با موفقیت انجام شد", + "issuesDetected": "مشکلات شناسایی شدند", + "signatureCache": "حافظه نهان امضا", + "modelLockouts": "قفلشدن مدلها", + "usingCloudProxy": "در حال استفاده از پراکسی ابری", + "loadingHealth": "در حال بارگذاری وضعیت سلامت", + "providerOverrides": "تنظیمات جایگزین ارائهدهنده", + "audioTranscriptionDesc": "توضیحات رونویسی صوتی", + "learnedFromHeaders": "آموختهشده از هدرها", + "totalRequests": "مجموع درخواستها", + "cloudUnstableNote": "یادداشت ناپایداری فضای ابری", "gamificationAdmin": "ادمین گیمیفیکیشن", "monitorAnomaliesAndHealth": "نظارت بر ناهنجاری ها و سلامت سیستم", "flaggedAnomalies": "ناهنجاری های پرچمدار", "noAnomaliesDetected": "هیچ ناهنجاری تشخیص داده نشد", "apiKey": "کلید API", "xpLastHour": "XP (1 ساعت)", - "zScore": "Z-Score", - "suspicious": "__MISSING__:Suspicious", + "zScore": "امتیاز Z", + "suspicious": "مشکوک", "tokensCommunityServers": "سرورهای جامعه", "tokensServerNamePlaceholder": "نام سرور", "tokensApiKeyPlaceholder": "کلید API", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "در حال بارگیری بیشتر…", "recommended": "توصیه شده", "understand": "متوجه شدم", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "پردازش دستهای", + "batchConceptSubtitle": "هزاران درخواست را بهصورت ناهمگام و با حدود ۵۰٪ هزینه کمتر (در بازه ۲۴ ساعته) پردازش کنید. ایدئال برای ارزیابیها، دستهبندی و تعبیهسازیها.", + "batchConceptHowItWorks": "نحوه کار", + "batchConceptBenefit50pct": "۵۰٪ تخفیف برای توکنهای ورودی و خروجی", + "batchConceptAsync24h": "پردازش ناهمگام با بازه تکمیل ۲۴ ساعته", + "batchConceptUseCases": "بهترین گزینه برای دستهبندی انبوه، ارزیابیها و تعبیهسازیها", + "batchHeaderSubtitle": "درخواستهای متعدد را بهصورت یک کار اجرا کنید", + "batchStep1": "۱ · بارگذاری JSONL", + "batchStep1Desc": "افزودن درخواستها", + "batchStep2": "۲ · ایجاد دسته", + "batchStep2Desc": "اجرای کار", + "batchStep3": "۳ · دریافت نتایج", + "batchStep3Desc": "دانلود خروجی", + "filesConceptTitle": "فایلهای دستهای", + "filesConceptSubtitle": "فایلهای JSONL مورد استفاده در دستهها: درخواستهای ورودی، نتایج و خطاها.", + "filesConceptInput": "ورودی — فایل JSONL شما با یک درخواست در هر خط", + "filesConceptOutput": "خروجی — نتایج درخواستهای تکمیلشده", + "filesConceptError": "خطاها — درخواستهای ناموفق", + "filesConceptRetention": "مدت نگهداری: بهطور پیشفرض ۳۰ روز (در Anthropic، ۲۹ روز)", + "wizardTitle": "دسته جدید", + "wizardClose": "بستن", + "wizardNext": "بعدی", + "wizardBack": "بازگشت", + "wizardCancel": "لغو", + "wizardCreate": "ایجاد دسته", + "wizardCreating": "در حال ایجاد…", + "wizardStep1Destination": "مقصد", + "wizardStep2Input": "ورودی", + "wizardStep3Validate": "اعتبارسنجی", + "wizardStep4Cost": "هزینه و ایجاد", + "wizardProviderLabel": "ارائهدهنده", + "wizardEndpointLabel": "نقطه پایانی", + "wizardModelLabel": "مدل", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (ما آن را تبدیل میکنیم)", + "wizardDropOrPick": "فایلی را اینجا رها کنید یا برای انتخاب کلیک کنید", + "wizardCsvMappingTitle": "نگاشت ستونهای CSV ← فیلدهای درخواست", + "wizardCsvMappingAddField": "افزودن فیلد", "wizardCsvNoColumns": "هیچ ستونی در هدر CSV شناسایی نشد.", "wizardCsvIgnoreColumn": "— نادیده گرفتن —", "wizardCsvCustomIdMapped": "custom_id نگاشت شد", @@ -846,114 +846,114 @@ "wizardCsvApplyMapping": "اعمال نگاشت", "wizardCsvRowsParsed": "{count} ردیف تجزیه شد", "wizardCsvRowsSkipped": "{count} ردیف نادیده گرفته شد", - "wizardCsvRowError": "Row {row}: {reason}", - "wizardValidationOk": "All lines valid", - "wizardValidating": "Validating…", - "wizardValidationParseFailed": "Validation failed — could not parse content.", - "wizardValidationSummary": "{lines} lines · {ids} unique custom_ids", + "wizardCsvRowError": "ردیف {row}: {reason}", + "wizardValidationOk": "همه خطوط معتبرند", + "wizardValidating": "در حال اعتبارسنجی…", + "wizardValidationParseFailed": "اعتبارسنجی ناموفق بود — محتوا قابل تجزیه نبود.", + "wizardValidationSummary": "{lines} خط · {ids} custom_id یکتا", "wizardValidationErrorCount": "{count, plural, one {# خطا} other {# خطا}} یافت شد", - "wizardValidationDuplicateIds": "Duplicate custom_ids detected:", - "wizardValidationFirstErrors": "Errors (first {count}):", - "wizardValidationLine": "Line {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationDuplicateIds": "custom_idهای تکراری شناسایی شدند:", + "wizardValidationFirstErrors": "خطاها ({count} مورد اول):", + "wizardValidationLine": "خط {line}", + "wizardValidationErrors": "خطاهای اعتبارسنجی", + "wizardValidationPreview": "پیشنمایش (۵ درخواست اول)", + "wizardValidationSamplingNote": "فایل بزرگ است — اعتبارسنجی با نمونهگیری انجام شد (۱۰۰۰ خط اول + ۱۰۰ خط آخر). اعتبارسنجی کامل در سمت سرور اجرا میشود.", + "wizardCostSync": "هزینه همگام", + "wizardCostBatch": "هزینه دستهای (۵۰٪-‏)", + "wizardCostSavings": "صرفهجویی", + "wizardCostEstimatedNotice": "هزینه تخمینی — مبلغ واقعی صورتحساب ممکن است متفاوت باشد.", + "wizardErrorUpload": "بارگذاری فایل ناموفق بود. دوباره تلاش کنید.", + "wizardErrorCreate": "ایجاد دسته ناموفق بود. دوباره تلاش کنید.", + "wizardEmptyProviders": "برای ایجاد یک دسته، ارائهدهندهای با پشتیبانی از پردازش دستهای (OpenAI، Anthropic یا Gemini) متصل کنید.", + "uploadModalTitle": "بارگذاری فایل دسته", + "uploadModalDropOrPick": "یک فایل .jsonl را اینجا رها کنید یا برای انتخاب کلیک کنید", + "uploadModalUpload": "بارگذاری", + "uploadModalCancel": "لغو", + "uploadModalError": "بارگذاری ناموفق بود. دوباره تلاش کنید.", + "uploadModalSuccess": "بارگذاری شد", + "uploadModalSizeLimit": "حداکثر ۵۱۲ مگابایت", + "batchListNewButton": "دسته جدید", + "batchListAutoRefresh": "تازهسازی خودکار هر ۳۰ ثانیه", + "batchListCostColumn": "هزینه", + "batchActionCancel": "لغو", + "batchActionDownloadOutput": "دانلود خروجی", + "batchActionDownloadErrors": "دانلود خطاها", + "batchActionRetry": "تلاش مجدد برای موارد ناموفق", + "batchActionRetryConfirm": "برای {n} درخواست ناموفق دوباره تلاش شود؟ هزینه نهایی به تعداد واقعی توکنهای مصرفشده بستگی دارد.", + "expirationBadgeCritical": "بحرانی", + "expirationBadgeWarning": "بهزودی", + "expirationBadgeNormal": "در انتظار", + "expirationBadgeExpired": "منقضیشده", + "filesListUploadButton": "بارگذاری", + "filesListUsedByColumn": "استفادهشده توسط", + "filesListUsedByNone": "هیچکدام", + "filesListUsedByRoleInput": "ورودی", + "filesListUsedByRoleOutput": "خروجی", + "filesListUsedByRoleError": "خطا", + "filesListSizeColumn": "اندازه", + "batchListProgressPartial": "(جزئی)", + "batchListProviderColumn": "ارائهدهنده", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", - "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListProviderOther": "سایر", + "batchListTitle": "دستهها", + "batchListCount": "{count} دسته", + "batchListRemovingCompleted": "در حال حذف…", + "batchListRemoveCompleted": "حذف موارد تکمیلشده", + "batchListTableStatus": "وضعیت", + "batchListTableId": "شناسه", + "batchListTableEndpoint": "نقطه پایانی", + "batchListTableModel": "مدل", + "batchListTableProgress": "پیشرفت", + "batchListTableCreated": "ایجادشده", + "batchListTableExpires": "منقضی میشود", + "batchListLoading": "در حال بارگذاری…", + "batchListEmpty": "هیچ دستهای یافت نشد", + "batchListValidating": "در حال اعتبارسنجی…", + "batchStatusAll": "همه وضعیتها", + "batchStatusInProgress": "در حال انجام", + "batchStatusValidating": "در حال اعتبارسنجی", + "batchStatusFinalizing": "در حال نهاییسازی", + "batchStatusCompleted": "تکمیلشده", + "batchStatusFailed": "ناموفق", + "batchStatusCancelled": "لغوشده", + "batchStatusCancelling": "در حال لغو", + "batchStatusExpired": "منقضیشده", + "batchStatusCompletedWithFailures": "تکمیلشده با خطا", + "batchStatusInProgressWithFailures": "در حال انجام (همراه با خطا)", + "batchStatusFinalizingWithFailures": "در حال نهاییسازی (همراه با خطا)", + "batchStatusCancelledWithFailures": "لغوشده با خطا", + "batchStatusExpiredWithFailures": "منقضیشده (ناقص)", + "wizardCostEstimating": "در حال برآورد هزینه…", + "wizardCostRequests": "درخواستها", + "wizardCostInputTok": "توکن ورودی", + "wizardCostOutputTok": "توکن خروجی", + "wizardCostWindow": "پنجره", + "wizardDestinationSelectProvider": "یک ارائهدهنده انتخاب کنید…", + "wizardDestinationSelectModel": "یک مدل انتخاب کنید…", + "wizardDestinationConnectProvider": "اتصال یک ارائهدهنده", + "batchListBatchCreated": "دسته {id} ایجاد شد — در حال تازهسازی فهرست…", + "batchListBatchCreatedDismiss": "بستن", + "batchListRefreshing": "در حال تازهسازی…", + "batchListRefresh": "تازهسازی", + "uploadFileModalRemove": "حذف", + "uploadFileModalUploading": "در حال بارگذاری…", + "wizardInputReading": "در حال خواندن فایل…", + "wizardInputReady": "آماده", + "wizardInputLargeFileLabel": "فایل بزرگ — اعتبارسنجی بهصورت نمونهبرداری", + "wizardInputCsvJsonlReady": "JSONL ایجاد شد — آماده اعتبارسنجی است.", + "wizardInputLargeFileWarning": "فایل بزرگی شناسایی شد — اعتبارسنجی با نمونهبرداری انجام میشود (۵ مگابایت اول + ۱۰۰ کیلوبایت آخر). اعتبارسنجی کامل در سمت سرور انجام میشود.", + "wizardCostWindow24h": "مهلت تکمیل ۲۴ ساعته", + "wizardValidationFieldsOk": "فیلدهای الزامی معتبرند", + "filesListDelete": "حذف", + "filesListDownload": "دانلود", + "batchDetailActionCancel": "لغو دسته", + "batchDetailActionRetry": "تلاش مجدد برای درخواستهای ناموفق", + "batchDetailCancelling": "در حال لغو…", + "batchDetailRetrying": "در حال آمادهسازی برای تلاش مجدد…", + "batchDetailCancelConfirm": "این دسته لغو شود؟ درخواستهای در حال انجام متوقف خواهند شد.", + "batchActionCancelError": "لغو دسته ناموفق بود. دوباره تلاش کنید.", + "batchActionRetryError": "تلاش مجدد برای درخواستهای ناموفق انجام نشد. دوباره تلاش کنید.", + "batchConceptRetentionNote": "نتایج و فایلهای خطا بهمدت ۳۰ روز نگهداری میشوند (Anthropic: ۲۹ روز)", "batchFilesSizeColumn": "اندازه", "toggleNoAuthProvider": "تغییر وضعیت ارائه‌دهنده بدون احراز هویت", "loadingModels": "در حال بارگذاری مدل‌ها…", @@ -985,50 +985,50 @@ "batchFilePreviewTruncated": "نمایش {shown} خط اول ({total} خط کل)", "batchFileDownloadFull": "دانلود فایل کامل" }, - "disabled": "Disabled", - "featureFlagOmnirouteEmergencyFallbackDescription": "Route budget-exhausted requests to the emergency free fallback provider/model.", - "featureFlagArenaEloSyncEnabledDescription": "Enable periodic Arena AI leaderboard ELO sync for model intelligence rankings.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "disabled": "غیرفعال", + "featureFlagOmnirouteEmergencyFallbackDescription": "درخواستهایی را که بودجهشان تمام شده است به ارائهدهنده/مدل جایگزین رایگان اضطراری هدایت کنید.", + "featureFlagArenaEloSyncEnabledDescription": "همگامسازی دورهای ELO جدول امتیازات Arena AI را برای رتبهبندی هوشمندی مدلها فعال کنید.", + "featureFlagUniversalContextHandoffEnabledDescription": "هنگامی که مسیریابی ترکیبی مدلها را تغییر میدهد، خلاصههای مکالمه را ایجاد و تزریق کنید. برای مستقل در نظر گرفتن تغییر مدلها و جلوگیری از درخواستهای تحویل پسزمینه برای همه ترکیبهای فعلی و آینده، این گزینه را غیرفعال کنید.", "featureFlagExposeCcDiscoveryAliasesDescription": "آگهی شناسه‌های آینه claude/<provider>/<model> را در /v1/models به‌گونه‌ای تنظیم کنید که لیست کشف مدل‌های دروازه کد Claude شامل مدل‌های غیر Claude باشد. هشدار: در صورت فعال‌سازی جهانی، ورودی‌های کاتالوگ را برای تمام مشتریان دو برابر می‌کند.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "کلید اصلی برای نامهای مستعار درگاه no-think/<provider>/<model>. روشن (پیشفرض): /v1/models برای هر مدل واجد شرایط Claude که قابلیت تفکر دارد، یک گونه بدون تفکر معرفی میکند و شناسه no-think/ ارسالشده در یک درخواست با استدلال سرکوبشده به مدل واقعی بازگردانده میشود. خاموش: هیچ گونهای معرفی نمیشود و شناسه no-think/ مانند هر شناسه مدل ناشناخته دیگری در نظر گرفته میشود. تا زمانی که این گزینه روشن است، انتخاب فعالسازی/غیرفعالسازی مختص هر مدل در ModelSpec.noThinkingAlias همچنان اعمال میشود.", "featureFlagChatVirtualLanesEnabledDescription": "خط‌های پذیرش مجازی تطبیقی به‌ازای هر مستاجر (tenant) را برای ارسال به ارائه‌دهندگان فعال کنید (#9654): افزایش ناگهانی بار یک مستاجر دیگر خطای 503 را برای مستاجر دیگر ایجاد نمی‌کند. متغیر محیطی OMNIROUTE_CHAT_VIRTUAL_LANES بر این تنظیم داشبورد اولویت دارد؛ تغییرات پس از راه‌اندازی مجدد سرور اعمال می‌شوند.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "صفحههای ارائهدهندگان در داشبورد: نشان «رایگان» را فقط برای سیگنالهایی نمایش میدهد که ارائهدهنده به آنها پایبند است—روش اکتشافی نام نمایشی، فیلدهای رایگانِ غیربولین و پسوندهای :free را برای ارائهدهندگان ثبتشدهای که سطح رایگان مستندی ندارند، کنار میگذارد. در حالت خاموش، قاعده تاریخی نشان حفظ میشود.", + "featureFlagProxySkipRecentlyFailedDescription": "مخزنهای پراکسی و چرخش بهازای هر حساب در opencode، پراکسیای را که بهتازگی ناموفق بوده است (کاوش TCP را رد کرده یا از طریق آن پاسخ 429 دریافت شده است)، برای مدتی مختص هر فرایند دوباره ارائه نمیکنند؛ این مدت با هر تکرار دو برابر میشود تا به سقف تعیینشده برسد. هیچ وضعیتی برای پراکسی ثبت نمیشود؛ اگر همه گزینهها کنار گذاشته شوند، انتخاب بدون تغییر میماند. بهطور پیشفرض غیرفعال است: ترتیب انتخاب دقیقاً همان چرخش ساده است.", + "featureFlagProxyPoolEgressObservationDescription": "در داشبورد، زیر هر مخزن پراکسی نشان دهید که طی ۲۴ ساعت گذشته چه تعداد IP خروجی مشاهدهشده به اعضای آن سرویس دادهاند، چه تعداد اتصال از آنها استفاده کردهاند و بیشترین تعداد اتصال مشاهدهشده پشت یک IP چقدر بوده است. فقط خواندنی است، از گزارش پراکسی محاسبه میشود و هرگز برای مسیریابی استفاده نمیشود. بهطور پیشفرض غیرفعال است: ویرایشگر مخزن بدون تغییر میماند و مسیر مشاهده مقدار null را برمیگرداند.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "در پیمایش سلامت پراکسی، اجازه دهید کاوشی که مقصد آن را رد کرده است (401/403/429: پراکسی درخواست را عبور داده اما مقصد این IP خروجی را رد کرده است)، مانند یک کاوش سرویسدهیشده، شمارنده شکستهای متوالی پراکسی را بازنشانی کند. بهطور پیشفرض غیرفعال است: رد شدن همچنان خنثی باقی میماند و شمارنده را حفظ میکند. پاسخ 5xx در هر دو حالت نامشخص باقی میماند و رد شدن هرگز باعث حذف، غیرفعالسازی یا فعالسازی مجدد پراکسی نمیشود.", "sidebar": { - "home": "Home", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "usage": "Usage", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", + "home": "خانه", + "dashboard": "داشبورد", + "providers": "ارائهدهندگان", + "combos": "ترکیبها", + "usage": "میزان استفاده", + "analytics": "تحلیلها", + "costs": "هزینهها", + "health": "سلامت", "proxy": "پروکسی", "limits": "Limits & Quotas", - "cliTools": "CLI Tools", - "media": "Media", - "settings": "Settings", - "translator": "Translator", - "playground": "Playground", - "searchTools": "Search Tools", - "agents": "Agents", + "cliTools": "ابزارهای CLI", + "media": "رسانه", + "settings": "تنظیمات", + "translator": "مترجم", + "playground": "محیط آزمایشی", + "searchTools": "ابزارهای جستوجو", + "agents": "عاملها", "cloudAgents": "عوامل ابری", - "memory": "Memory", - "skills": "Skills", + "memory": "حافظه", + "skills": "مهارتها", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", - "chaosConfig": "Chaos Mode", - "docs": "Docs", - "issues": "Issues", - "endpoints": "Endpoints", + "chaosConfig": "حالت آشوب", + "docs": "مستندات", + "issues": "مشکلات", + "endpoints": "نقاط پایانی", "endpointsSubtitle": "URL های اتصال هوش مصنوعی شما", - "apiManager": "API Keys", + "apiManager": "کلیدهای API", "apiManagerSubtitle": "کلیدهای API و دسترسی را مدیریت کنید", "embeddedServices": "سرویس‌های جاسازی‌شده", "embeddedServicesSubtitle": "مدیریت سرویس‌های پروکسی محلی", - "logs": "Logs", + "logs": "گزارشها", "webhooks": "وب هوک ها", "webhooksSubtitle": "از رویدادها مطلع شوید", "logExport": "برون‌بری گزارش‌ها", @@ -1037,239 +1037,239 @@ "batchSubtitle": "چندین درخواست را پردازش کنید", "contextCavemanSubtitle": "فشرده سازی سریع", "contextRtkSubtitle": "فیلتر خروجی", - "auditLog": "Audit Log", - "shutdown": "Shutdown", - "restart": "Restart", - "shutdownConfirm": "Shut down OmniRoute?", - "restartConfirm": "Restart OmniRoute?", + "auditLog": "گزارش ممیزی", + "shutdown": "خاموش کردن", + "restart": "راهاندازی مجدد", + "shutdownConfirm": "OmniRoute خاموش شود؟", + "restartConfirm": "OmniRoute مجدداً راهاندازی شود؟", "version": "v{version}", "debug": "Debug", - "system": "System", - "help": "Help", + "system": "سیستم", + "help": "راهنما", "primarySection": "Main", "cliSection": "CLI", "debugSection": "Debug", "systemSection": "System", "helpSection": "Help", - "serverDisconnected": "Server Disconnected", - "serverDisconnectedMsg": "The proxy server has been stopped or is restarting.", - "expandSidebar": "Expand sidebar", - "collapseSidebar": "Collapse sidebar", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", - "cliToolsShort": "Tools", + "serverDisconnected": "اتصال سرور قطع شد", + "serverDisconnectedMsg": "سرور پروکسی متوقف شده یا در حال راهاندازی مجدد است.", + "expandSidebar": "باز کردن نوار کناری", + "collapseSidebar": "جمع کردن نوار کناری", + "themes": "پوستهها", + "presetColors": "رنگهای محبوب", + "createTheme": "ایجاد پوسته", + "chooseColor": "یک رنگ انتخاب کنید", + "themeCoral": "مرجانی", + "themeBlue": "آبی", + "themeRed": "قرمز", + "themeGreen": "سبز", + "themeViolet": "بنفش", + "themeOrange": "نارنجی", + "themeCyan": "فیروزهای", + "cliToolsShort": "ابزارها", "cache": "Cache", "cacheShort": "Cache", "batch": "Batch Testing", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "themeSystem": "سیستم پوسته", + "whitelabelingDesc": "توضیحات برندسازی سفارشی", + "switchThemes": "تغییر پوستهها", + "themeAccentDesc": "توضیحات رنگ تأکیدی پوسته", + "uploadFavicon": "بارگذاری فاوآیکون", + "themeDark": "پوسته تیره", + "customLogoDesc": "توضیحات لوگوی سفارشی", + "sidebarVisibilityToggle": "کلید نمایش نوار کناری", + "themeAccent": "رنگ تأکیدی پوسته", + "resetFavicon": "بازنشانی فاوآیکون", + "whitelabeling": "برندسازی سفارشی", + "darkMode": "حالت تیره", + "uploadLogo": "بارگذاری لوگو", + "themeLight": "پوسته روشن", + "appName": "نام برنامه", + "appNameDesc": "توضیحات نام برنامه", + "resetLogo": "بازنشانی لوگو", + "customFavicon": "فاوآیکون سفارشی", + "hideHealthLogs": "پنهانکردن گزارشهای سلامت", + "customLogo": "لوگوی سفارشی", + "appearance": "ظاهر", + "themeSelectionAria": "برچسب دسترسپذیری انتخاب پوسته", + "themeCreate": "ایجاد پوسته", + "customFaviconDesc": "توضیحات فاوآیکون سفارشی", + "logoPreview": "پیشنمایش لوگو", + "themeCustom": "پوسته سفارشی", + "hideHealthLogsDesc": "توضیحات پنهانکردن گزارشهای سلامت", + "faviconPreview": "پیشنمایش فاوآیکون", + "changelog": "تغییرات نسخهها", + "contextSection": "زمینه و حافظه پنهان", + "contextCaveman": "غارنشین", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "ترکیبهای موتور", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "فوقالعاده", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "تنظیمات فشردهسازی", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", - "combosLiveSubtitle": "Live routing cascade", + "combosLive": "استودیوی ترکیب", + "combosLiveSubtitle": "آبشار مسیریابی زنده", "compressionStudio": "Compression Studio", "compressionExclusions": "استثناها", - "contextSettingsSubtitle": "Global defaults", - "contextHeadroomSubtitle": "Tabular compaction", - "contextSessionDedupSubtitle": "Cross-turn deduplication", - "contextCcrSubtitle": "Retrieve markers", - "contextLlmlinguaSubtitle": "Semantic pruning", - "contextLiteSubtitle": "Fast whitespace cleanup", - "contextAggressiveSubtitle": "Summary and aging", - "contextUltraSubtitle": "Heuristic pruning", - "contextOmniglyphSubtitle": "Context as images", - "compressionStudioSubtitle": "Live engine cascade", + "contextSettingsSubtitle": "پیشفرضهای سراسری", + "contextHeadroomSubtitle": "فشردهسازی جدولی", + "contextSessionDedupSubtitle": "حذف موارد تکراری بین نوبتها", + "contextCcrSubtitle": "بازیابی نشانگرها", + "contextLlmlinguaSubtitle": "هرس معنایی", + "contextLiteSubtitle": "پاکسازی سریع فاصلههای خالی", + "contextAggressiveSubtitle": "خلاصهسازی و فرسودگی", + "contextUltraSubtitle": "هرس اکتشافی", + "contextOmniglyphSubtitle": "زمینه بهصورت تصویر", + "compressionStudioSubtitle": "آبشار زندهٔ موتورها", "compressionExclusionsSubtitle": "عبور از مدل/نقطه پایانی", - "chaosConfigSubtitle": "Multi-model parallel execution", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "chaosConfigSubtitle": "اجرای موازی چندمدلی", + "routingSection": "مسیریابی", + "protocolsSection": "پروتکلها", + "agentsAiSection": "عاملها و هوش مصنوعی", + "cacheContextSection": "کش و زمینه", + "analyticsSection": "تحلیلها", + "costsSection": "هزینهها", + "monitoringSection": "نظارت", + "auditSecuritySection": "ممیزی و امنیت", + "devtoolsSection": "ابزارهای توسعه", + "configurationSection": "پیکربندی", + "aiFeaturesSection": "قابلیتهای هوش مصنوعی", "mcp": "MCP", "a2a": "A2A", - "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", - "costsFreeTiers": "Free-Tier Budget", - "costsFreeTiersSubtitle": "Monthly free-token allowances", - "freeProviderRankings": "Free Provider Rankings", - "freeProviderRankingsSubtitle": "Best free providers ranked by model ELO scores", + "plugins": "افزونهها", + "apiEndpoints": "نقاط پایانی API", + "batchFiles": "فایلها", + "analyticsEvals": "ارزیابیها", + "analyticsSearch": "جستجو", + "analyticsUtilization": "میزان استفاده", + "analyticsComboHealth": "سلامت ترکیبی", + "analyticsCompression": "فشردهسازی", + "costsBudget": "بودجه", + "costsFreeTiers": "بودجهٔ سطح رایگان", + "costsFreeTiersSubtitle": "سهمیههای ماهانهٔ توکن رایگان", + "freeProviderRankings": "رتبهبندی ارائهدهندگان رایگان", + "freeProviderRankingsSubtitle": "بهترین ارائهدهندگان رایگان بر اساس امتیازهای ELO مدل", "radar": "کاتالوگ رادار", "radarSubtitle": "کاتالوگ مدل رایگان غنی‌شده با جامعه", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "اشتراکگذاری سهمیه", + "costsPricing": "قیمتگذاری", + "logsProxy": "گزارشهای پروکسی", + "logsConsole": "کنسول", + "logsActivity": "فعالیت", + "auditMcp": "ممیزی MCP", "auditA2a": "حسابرسی A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", - "settingsAccessTokens": "Access Tokens", + "settingsAppearance": "ظاهر", + "settingsAi": "تنظیمات هوش مصنوعی", + "settingsSecurity": "امنیت", + "settingsAccessTokens": "توکنهای دسترسی", "settingsFeatureFlags": "پرچم های ویژگی", "settingsCache": "کش", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", - "modelLockout": "Model Lockout", - "settingsAdvanced": "Advanced", + "settingsAuthz": "مجوزدهی", + "settingsRouting": "مسیریابی", + "settingsResilience": "تابآوری", + "modelLockout": "قفلکردن مدل", + "settingsAdvanced": "پیشرفته", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "سهمیه ارائهدهنده", + "providerQuota": "سهمیه ارائهدهنده", + "runtime": "محیط اجرا", + "consoleLogs": "گزارشهای کنسول", + "logsTimeline": "خط زمانی", "logsTimelineSubtitle": "زمان‌بندی درخواست بصری", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "گفتوگوها", + "conversationsSubtitle": "گفتوگوهای عاملمحور چندمرحلهای", + "globalRouting": "مسیریابی سراسری", + "mitmProxy": "پروکسی MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", - "providerStats": "Provider Stats", - "providerStatsSubtitle": "Latency and performance metrics", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", - "pluginsSubtitle": "Plugin marketplace & installs", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "agenticFeaturesSection": "قابلیتهای عاملمحور", + "otherFeaturesSection": "سایر قابلیتها", + "compressionContextGroup": "فشردهسازی زمینه", + "gamificationGroup": "بازیوارسازی", + "toolsGroup": "ابزارها", + "integrationsGroup": "یکپارچهسازیها", + "proxyGroup": "پروکسی", + "costsParametersGroup": "پارامترهای هزینه", + "auditGroup": "ممیزی", + "batchGroup": "پردازش دستهای", + "homeSubtitle": "نمای کلی داشبورد", + "providersSubtitle": "مدیریت ارائهدهندگان هوش مصنوعی", + "quotaTrackerSubtitle": "پیگیری محدودیتهای مصرف", + "providerQuotaSubtitle": "پیگیری محدودیتهای مصرف ارائهدهنده", + "runtimeSubtitle": "تابآوری و نشستهای بلادرنگ", + "contextCombosSubtitle": "ترکیب موتورهای فشردهسازی", + "cliToolsSubtitle": "پیکربندی محیطهای اجرای CLI", + "agentsSubtitle": "مدیریت عاملهای محلی", + "cloudAgentsSubtitle": "مدیریت عاملهای مبتنی بر ابر", + "apiEndpointsSubtitle": "ارائه نقاط پایانی سفارشی", + "proxySubtitle": "تنظیمات پروکسی HTTP", + "mitmProxySubtitle": "رهگیری MITM", + "oneProxySubtitle": "درگاه پروکسی عمومی", + "leaderboard": "جدول رتبهبندی", + "profile": "نمایه", + "tokens": "توکنها", + "gamificationAdmin": "مدیریت بازیوارسازی", + "leaderboardSubtitle": "رتبهبندیها و دستاوردها", + "profileSubtitle": "حساب و ترجیحات", + "tokensSubtitle": "مصرف توکن و بودجهها", + "gamificationAdminSubtitle": "پایش ناهنجاریها و مقابله با تقلب", + "usageSubtitle": "آمار ترافیک و مصرف", + "analyticsComboHealthSubtitle": "قابلیت اطمینان هدف ترکیبی", + "analyticsUtilizationSubtitle": "میزان استفاده از ارائهدهندگان", + "costsSubtitle": "تفکیک هزینهها", + "cacheSubtitle": "نرخهای اصابت کش", + "analyticsCompressionSubtitle": "آمار صرفهجویی در توکن", + "analyticsSearchSubtitle": "تحلیلهای ابزار جستجو", + "analyticsEvalsSubtitle": "نتایج مجموعه ارزیابی", + "providerStats": "آمار ارائهدهندگان", + "providerStatsSubtitle": "معیارهای تأخیر و عملکرد", + "logsSubtitle": "گزارشهای برنامه", + "logsProxySubtitle": "گزارشهای ترافیک پروکسی", + "consoleLogsSubtitle": "خروجی کنسول", + "logsActivitySubtitle": "گزارش فعالیت کاربر", + "healthSubtitle": "بررسی سلامت سیستم", + "costsPricingSubtitle": "قواعد قیمتگذاری برای هر مدل", + "costsBudgetSubtitle": "محدودیتهای بودجه", + "costsQuotaShareSubtitle": "اشتراکگذاری سهمیه ارائهدهندگان میان کلیدها", + "auditLogSubtitle": "ممیزی مجوزدهی", + "auditMcpSubtitle": "ممیزی سرور MCP", + "auditA2aSubtitle": "ممیزی پروتکل A2A", + "translatorSubtitle": "تبدیل قالب", + "playgroundSubtitle": "آزمایش زنده پرامپتها", + "searchToolsSubtitle": "فهرست ابزارهای جستجو", + "memorySubtitle": "حافظه پایدار عامل", + "omniSkillsSubtitle": "فهرست مهارتهای سندباکس", + "agentSkillsSubtitle": "فهرست مهارتهای A2A", + "mcpSubtitle": "کنترلهای سرور MCP", + "a2aSubtitle": "سرور پروتکل A2A", + "pluginsSubtitle": "بازارچه افزونهها و نصبها", + "mediaSubtitle": "فایلهای رسانهای کششده", + "batchFilesSubtitle": "فایلهای ورودی/خروجی دستهای", + "settingsSubtitle": "همه تنظیمات", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", - "settingsAccessTokensSubtitle": "Scoped CLI tokens for remote mode", + "settingsAppearanceSubtitle": "پوسته و چیدمان", + "settingsAiSubtitle": "پیشفرضهای رفتار هوش مصنوعی", + "globalRoutingSubtitle": "قواعد مسیریابی سراسری", + "settingsResilienceSubtitle": "تلاشهای مجدد و قطعکنندهها", + "settingsAdvancedSubtitle": "گزینههای کاربران حرفهای", + "settingsSecuritySubtitle": "احراز هویت و رمزنگاری", + "settingsAccessTokensSubtitle": "توکنهای CLI با دامنه محدود برای حالت راه دور", "settingsFeatureFlagsSubtitle": "قابلیت های سیستم را تغییر دهید", "settingsCacheSubtitle": "کاتالوگ مدل و کش پاسخ", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", - "settingsAuthzSubtitle": "Route inventory and bypass policy", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", - "costsQuotaPlans": "Plans & Quotas", - "costsQuotaPlansSubtitle": "Configure plans by provider", - "activity": "Activity", + "settingsSidebar": "نوار کناری", + "settingsSidebarSubtitle": "سفارشیسازی چیدمان نوار کناری", + "settingsAuthzSubtitle": "فهرست مسیرها و خطمشی دور زدن", + "docsSubtitle": "مستندات", + "issuesSubtitle": "گزارش یک باگ", + "changelogSubtitle": "یادداشتهای انتشار", + "costsQuotaPlans": "طرحها و سهمیهها", + "costsQuotaPlansSubtitle": "پیکربندی طرحها بر اساس ارائهدهنده", + "activity": "فعالیت", "activitySubtitle": "فید کاربرپسند رویدادهای اخیر", "logsGroup": "لاگ‌ها", "systemGroup": "سیستم", @@ -1278,8 +1278,8 @@ "agentBridge": "پل ایجنت", "agentBridgeSubtitle": "رهگیری ترافیک ایجنت IDE", "trafficInspector": "بازرس ترافیک", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "بررسی ترافیک درخواست و پاسخ برنامههایتان", + "trafficInspectorPurpose": "دقیقاً ببینید برنامه شما چه چیزی برای ارائهدهندگان هوش مصنوعی ارسال و از آنها دریافت میکند. با هر کلاینت سازگار با OpenAI کار میکند.", "cliCode": "کد CLI", "cliCodeSubtitle": "ابزارهای کد متصل به OmniRoute", "cliAgents": "ایجنت‌های CLI", @@ -1345,7 +1345,7 @@ "refresh": "تازه کردن", "loading": "در حال بارگیری وب هوک ها...", "never": "هرگز", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {بدون شکست} one {# شکست} other {# شکست}}", "testWebhook": "ارسال تست", "testSuccess": "وب هوک آزمایشی با موفقیت ارسال شد.", "testFailed": "تست وب هوک ناموفق بود.", @@ -1563,91 +1563,91 @@ "mcpMetricTopTool": "ابزار برتر" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "پوستهها", + "description": "یک پوسته آماده انتخاب کنید یا تنها با یک رنگ، پوسته خودتان را بسازید", + "presetColors": "رنگهای محبوب", + "customTheme": "پوسته سفارشی", + "customThemeDesc": "روی «ایجاد پوسته» کلیک کنید و یک رنگ انتخاب کنید", + "createTheme": "ایجاد پوسته", + "activePreset": "پوسته فعال" }, "header": { - "logout": "Logout", + "logout": "خروج", "quickNavigation": "ناوبری سریع", "quickNavigationTitle": "ناوبری سریع (⌘K / Ctrl+K)", "openQuickNavigation": "باز کردن ناوبری سریع", "switchToLightMode": "تغییر به حالت روشن", "switchToDarkMode": "تغییر به حالت تاریک", - "language": "Language", - "providers": "Providers", - "providerDescription": "Manage your AI provider connections", - "combos": "Combos", - "comboDescription": "Model combos with fallback", - "usage": "Usage & Analytics", - "usageDescription": "Monitor your API usage, token consumption, and request logs", - "analytics": "Analytics", - "analyticsDescription": "Charts, trends, and evaluation insights", - "cliTools": "CLI Tools", - "cliToolsDescription": "Configure CLI tools", - "home": "Home", - "homeDescription": "Welcome to OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "language": "زبان", + "providers": "ارائهدهندگان", + "providerDescription": "اتصالهای ارائهدهندگان هوش مصنوعی خود را مدیریت کنید", + "combos": "ترکیبها", + "comboDescription": "ترکیب مدلها با قابلیت استفاده از مدل جایگزین", + "usage": "مصرف و تحلیلها", + "usageDescription": "بر مصرف API، میزان مصرف توکن و گزارشهای درخواست خود نظارت کنید", + "analytics": "تحلیلها", + "analyticsDescription": "نمودارها، روندها و بینشهای ارزیابی", + "cliTools": "ابزارهای CLI", + "cliToolsDescription": "پیکربندی ابزارهای CLI", + "home": "خانه", + "homeDescription": "به OmniRoute خوش آمدید", + "endpoint": "نقاط پایانی", + "endpointDescription": "مدیریت نقاط پایانی پروکسی، MCP، A2A و API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "مدیریت و ابزارهای سرور Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", - "settings": "Settings", - "settingsDescription": "Manage your preferences", - "openaiCompatible": "OpenAI Compatible", - "anthropicCompatible": "Anthropic Compatible", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "a2aDescription": "وظایف و مشاهدهپذیری پروتکل Agent-to-Agent", + "settings": "تنظیمات", + "settingsDescription": "مدیریت ترجیحات شما", + "openaiCompatible": "سازگار با OpenAI", + "anthropicCompatible": "سازگار با Anthropic", + "media": "رسانه", + "mediaDescription": "تولید تصویر، ویدئو و موسیقی", + "themes": "پوستهها", + "themesDescription": "انتخاب پوسته رنگی برای کل پنل داشبورد", + "costsDescription": "ردیابی هزینهها، تحلیل روندها و مدیریت بودجه هوش مصنوعی در همه ارائهدهندگان", + "cacheDescription": "نظارت بر کارایی کش پرامپت ارائهدهندگان و استفاده مجدد محلی از پاسخهای معنایی.", + "limitsDescription": "پیکربندی محدودیت نرخ و سهمیه برای هر کلید API و ارائهدهنده", + "runtimeDescription": "مشاهدهپذیری زنده زمان اجرا — قطعکنندههای مدار، دورههای انتظار، قفل مدلها، نشستها و هشدارهای سهمیه", + "apiManagerDescription": "مدیریت کلیدهای API و کنترل دسترسی برای نمونه OmniRoute شما", + "batchDescription": "پردازش ناهمگام حجم بالایی از درخواستها با فراخوانیهای دستهای API", + "contextCavemanDescription": "فشردهسازی پیام مبتنی بر قانون، بستههای زبانی، تحلیلها و کنترلهای حالت خروجی.", + "contextRtkDescription": "فشردهسازی آگاه از فرمان برای خروجی ابزار، گزارشهای ترمینال و نتایج ساخت.", + "contextCombosDescription": "تعریف نحوه ترکیب موتورها برای سناریوهای مختلف مسیریابی.", + "changelogDescription": "از جدیدترین قابلیتها و اطلاعیههای پلتفرم باخبر بمانید.", + "agentsDescription": "مدیریت و پیکربندی ابزارهای عامل هوش مصنوعی: Codex، Devin، Jules و عاملهای سفارشی", + "cloudAgentsDescription": "هماهنگسازی عاملهای هوش مصنوعی مبتنی بر ابر با ردیابی زنده وظایف و تأیید طرح", + "memoryDescription": "حافظه پایدار مکالمه با جستوجوی معنایی و نمایهسازی تماممتن FTS5", + "skillsDescription": "نصب و مدیریت مهارتهای محیط ایزوله برای اجرای خودکار پرامپت و ابزار", + "agentSkillsDescription": "فهرست مهارتهای آماده برای عامل با کپی یککلیکی URL جهت یکپارچهسازی کلاینت هوش مصنوعی", + "translatorDescription": "ترجمه و آزمایش پرامپتها در قالبهای API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "آزمایش تعاملی پرامپتها با پاسخهای زنده ارائهدهندگان و بررسی قالب", + "searchToolsDescription": "تحلیل جستوجو، تفکیک ارائهدهندگان، نرخ اصابت کش و ردیابی هزینه", + "logsDescription": "گزارشهای لحظهای درخواستها، ردگیری خطاها و بازرسی رویدادهای جریانی", + "auditDescription": "مسیر ممیزی انطباق برای استفاده از کلیدهای API، فراخوانی ابزارهای MCP و رویدادهای خطمشی", + "webhooksDescription": "پیکربندی نقاط پایانی webhook برای دریافت اعلانهای لحظهای رویدادها", + "healthDescription": "نمای کلی سلامت سیستم: ارائهدهندگان، قطعکنندههای مدار، محدودیتهای نرخ و پایگاه داده", + "proxyDescription": "تنظیمات پروکسی بالادستی را برای اتصالهای خروجی ارائهدهندگان پیکربندی کنید", + "apiEndpointsDescription": "پیکربندیهای سفارشی نقطه پایانی API و بازنویسیهای مسیریابی را مدیریت کنید", + "batchFilesDescription": "فایلهای خروجی و نتایج کارهای دستهای را مرور و مدیریت کنید", + "analyticsEvalsDescription": "نتایج ارزیابی مدل و معیارهای سنجش عملکرد", + "analyticsSearchDescription": "تحلیل جستارهای جستجو، نرخ اصابت حافظه پنهان و ردیابی هزینهها", + "analyticsUtilizationDescription": "معیارهای استفاده از ارائهدهندگان و برنامهریزی ظرفیت", + "analyticsComboHealthDescription": "سلامت و عملکرد لحظهای پیکربندیهای مسیریابی ترکیبی", + "analyticsCompressionDescription": "تحلیل فشردهسازی زمینه و صرفهجویی در توکنها", + "costsBudgetDescription": "محدودیتهای بودجه و هشدارهای هزینه برای هر کلید API و ارائهدهنده", + "costsPricingDescription": "پیکربندی قیمتگذاری سفارشی برای محاسبه هزینه توکنها", + "logsProxyDescription": "گزارشهای درخواست پروکسی بالادستی و بازرسی ترافیک", + "logsConsoleDescription": "خروجی کنسول برنامه و گزارشهای اشکالزدایی", + "logsActivityDescription": "ردیابی ممیزی اقدامات کاربران و رویدادهای سیستم", + "auditMcpDescription": "ردیابی ممیزی فراخوانی ابزار MCP و سوابق انطباق", "auditA2a": "حسابرسی A2A", "auditA2aDescription": "دنباله حسابرسی اجرای کار A2A، انتقال وضعیت و سوابق فراخوانی مهارت", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "پوسته، برندسازی و سفارشیسازی بصری", + "settingsAiDescription": "رفتارهای AI، بودجههای تفکر، بینایی و تنظیمات حافظه", "settingsCacheDescription": "TTL برای ورودی‌های کش کاتالوگ مدل", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "تنظیمات احراز هویت، مجوزدهی و کنترل دسترسی", "featureFlags": "پرچم های ویژگی", "featureFlagsDescription": "قابلیت های سیستم کنترل و ویژگی های آزمایشی", "featureFlagsActive": "{count} فعال است", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "هیچ پرچمی با جستجوی شما مطابقت ندارد", "featureFlagsSaved": "پرچم به روز شد", "featureFlagsError": "پرچم به‌روزرسانی نشد", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "قواعد مسیریابی، نامهای مستعار مدل، پیشفرضهای ترکیبی و تنظیمات تنزل عملکرد", + "settingsResilienceDescription": "پیکربندی مدارشکن، تلاش مجدد و جایگزین", + "settingsAdvancedDescription": "قواعد پیشرفته بار داده، محدودیتهای درخواست و تنظیمات API پروکسی", + "mitmProxyDescription": "تنظیمات پروکسی MITM را برای بازرسی ترافیک و اشکالزدایی پیکربندی کنید", + "oneProxyDescription": "تنظیمات 1Proxy را برای زنجیرهسازی پیشرفته پروکسی پیکربندی کنید", "omniSkillsDescription": "نصب و مدیریت مهارت‌های sandbox برای اجرای خودکار پرامپت و ابزار" }, "cloudSyncStatus": { @@ -1762,7 +1762,7 @@ "discovery": "اکتشاف", "freeProviderRankings": "رتبه‌بندی ارائه‌دهندگان رایگان", "radar": "Radar", - "setup": "Setup", + "setup": "راهاندازی", "freeTiers": "طرح‌های رایگان", "gamification": "بازی‌وارسازی", "leaderboard": "جدول رده‌بندی", @@ -1784,53 +1784,53 @@ "orchestration": "ارکستراسیون" }, "home": { - "quickStart": "Quick Start", - "quickStartDesc": "Get up and running in 4 steps. Connect providers, route models, monitor everything.", - "fullDocs": "Full Docs", - "step1Title": "1. Create API key", + "quickStart": "شروع سریع", + "quickStartDesc": "در ۴ مرحله راهاندازی و آماده به کار شوید. ارائهدهندگان را متصل کنید، مدلها را مسیریابی کنید و همهچیز را زیر نظر بگیرید.", + "fullDocs": "مستندات کامل", + "step1Title": "۱. ایجاد کلید API", "step1Desc": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "step2Title": "2. Connect providers", - "step2Desc": "Add accounts in Providers. Supports OAuth, API Key, and free tiers.", - "step3Title": "3. Point your client", - "step3Desc": "Set base URL to {url} in your IDE or API client.", - "step4Title": "4. Monitor & optimize", - "step4Desc": "Track tokens, cost and errors in Request Logs and Analytics.", - "providersOverview": "Providers Overview", - "configuredOf": "{configured} configured of {total} available providers", - "noModelsAvailable": "No models available for this provider.", + "step2Title": "۲. اتصال ارائهدهندگان", + "step2Desc": "حسابها را در ارائهدهندگان اضافه کنید. از OAuth، کلید API و سطوح رایگان پشتیبانی میکند.", + "step3Title": "۳. کلاینت خود را تنظیم کنید", + "step3Desc": "URL پایه را در IDE یا کلاینت API خود روی {url} تنظیم کنید.", + "step4Title": "۴. نظارت و بهینهسازی", + "step4Desc": "توکنها، هزینه و خطاها را در گزارشهای درخواست و تحلیلها پیگیری کنید.", + "providersOverview": "نمای کلی ارائهدهندگان", + "configuredOf": "از {total} ارائهدهنده موجود، {configured} مورد پیکربندی شده است", + "noModelsAvailable": "هیچ مدلی برای این ارائهدهنده موجود نیست.", "noProvidersConfigured": "هنوز هیچ ارائه دهنده ای پیکربندی نشده است", "addProvider": "یک ارائه دهنده اضافه کنید", - "configureFirst": "Configure a connection first in {providers}", - "configureProvider": "Configure Provider", - "modelAvailable": "{count} model available", - "modelsAvailable": "{count} models available", - "connectionsActive": "{count} connection active", - "connectionsActivePlural": "{count} connections active", - "copyModelName": "Copy model name", - "documentation": "Documentation", - "healthMonitor": "Health Monitor", - "reportIssue": "Report issue", - "activeError": "{active} active · {errors} error", - "topologyLegendActive": "__MISSING__:Active", - "topologyLegendRecent": "__MISSING__:Recent", - "topologyLegendError": "__MISSING__:Error", + "configureFirst": "ابتدا یک اتصال را در {providers} پیکربندی کنید", + "configureProvider": "پیکربندی ارائهدهنده", + "modelAvailable": "{count} مدل موجود است", + "modelsAvailable": "{count} مدل موجود است", + "connectionsActive": "{count} اتصال فعال است", + "connectionsActivePlural": "{count} اتصال فعال است", + "copyModelName": "کپی نام مدل", + "documentation": "مستندات", + "healthMonitor": "پایشگر سلامت", + "reportIssue": "گزارش مشکل", + "activeError": "{active} فعال · {errors} خطا", + "topologyLegendActive": "فعال", + "topologyLegendRecent": "اخیر", + "topologyLegendError": "خطا", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", - "requestsShort": "{count} reqs", - "providerModelsTitle": "{provider} - Models", - "copiedModel": "Copied: {model}", + "apiKeyLabel": "کلید API", + "requestsShort": "{count} درخواست", + "providerModelsTitle": "{provider} - مدلها", + "copiedModel": "کپی شد: {model}", "aliasLabel": "alias", - "updateNow": "Update Now", - "updating": "Updating...", - "updateAvailableDesc": "A new version is available. Click to update.", - "updateStarted": "Update started...", + "updateNow": "اکنون بهروزرسانی کنید", + "updating": "در حال بهروزرسانی...", + "updateAvailableDesc": "نسخه جدیدی موجود است. برای بهروزرسانی کلیک کنید.", + "updateStarted": "بهروزرسانی آغاز شد...", "reloadingPageAutomatically": "بارگیری مجدد صفحه به صورت خودکار...", "providerTopology": "توپولوژی ارائه دهنده", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "درخواستهای اخیر", + "recentRequestsEmpty": "هنوز درخواستی وجود ندارد.", + "recentRequestsModel": "مدل", + "recentRequestsTokens": "ورودی / خروجی", + "recentRequestsWhen": "زمان", "downloadDmg": "دانلود DMG (macOS)", "downloadDmgDescription": "نسخه جدیدی از برنامه دسکتاپ OmniRoute در دسترس است. لطفاً DMG نصب‌کننده macOS را دانلود و نصب کنید تا به‌روزرسانی کنید (فعلی: v{version}).", "downloadExe": "دانلود EXE (ویندوز)", @@ -1888,18 +1888,18 @@ "releaseNotes": "یادداشت‌های انتشار", "readMore": "بیشتر بخوانید", "noAuthLabel": "بدون احراز هویت", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "برای مسیریابی آماده شوید", + "readinessTitle": "اولین درخواست خود را ارسال کنید", + "readinessSubtitle": "چهار مرحله کوتاه. OmniRoute در هر مرحله آمادگی را بررسی میکند.", + "readinessStep1": "اتصال به یک ارائهدهنده", + "readinessStep2": "پیکربندی احراز هویت نقطه پایانی", + "readinessStep3": "کپی نقطه پایانی", + "readinessStep4": "ارسال درخواست آزمایشی", + "readinessContinue": "ادامه راهاندازی", + "readinessDismiss": "فعلاً رد کردن" }, "analytics": { - "title": "Analytics", + "title": "تحلیلها", "usageAnalyticsTitle": "تحلیل مصرف", "diversityScoreTitle": "تنوع ارائه دهنده", "diversityScoreDesc": "تصویر لحظه‌ای از تمرکز ارائه‌دهندگان برای بازه ترافیک اخیر.", @@ -1990,21 +1990,21 @@ "highlightsDiversity": "تنوع", "highlightsFallbackRate": "نرخ جایگزینی", "customRange": "سفارشی", - "overviewDescription": "Monitor your API usage patterns, token consumption, costs, and activity trends across all providers and models.", - "evalsDescription": "Run evaluation suites to test and validate your LLM endpoints. Compare model quality, detect regressions, and benchmark latency.", - "overview": "Overview", - "evals": "Evals", + "overviewDescription": "الگوهای استفاده از API، مصرف توکن، هزینهها و روندهای فعالیت خود را در همه ارائهدهندگان و مدلها پایش کنید.", + "evalsDescription": "مجموعههای ارزیابی را برای آزمایش و اعتبارسنجی نقاط پایانی LLM خود اجرا کنید. کیفیت مدلها را مقایسه کنید، پسرفتها را تشخیص دهید و تأخیر را محک بزنید.", + "overview": "نمای کلی", + "evals": "ارزیابیها", "search": "جستجو", - "utilization": "Utilization", + "utilization": "میزان استفاده", "routeTrace": "ردیابی مسیر", "sectionsAria": "بخش‌های تحلیل", - "utilizationDescription": "Provider quota usage trends and rate limit tracking", - "modelStatus": "Model Status", - "modelStatusCooldown": "Cooldown", - "modelStatusUnavailable": "Unavailable", - "modelStatusError": "Error", - "comboHealth": "Combo Health", - "comboHealthDescription": "Combo-level quota, usage distribution, and performance metrics", + "utilizationDescription": "روندهای مصرف سهمیه ارائهدهنده و رهگیری محدودیت نرخ", + "modelStatus": "وضعیت مدل", + "modelStatusCooldown": "دوره انتظار", + "modelStatusUnavailable": "دردسترس نیست", + "modelStatusError": "خطا", + "comboHealth": "سلامت ترکیب", + "comboHealthDescription": "سهمیه در سطح ترکیب، توزیع استفاده و معیارهای عملکرد", "compressionAnalyticsTitle": "Compression", "compressionAnalyticsDescription": "Compression analytics - token savings, mode breakdown, and provider stats.", "autoRoutingTotalAutoRequests": "مجموع درخواست های خودکار", @@ -2237,55 +2237,55 @@ "freeTierAvailable": "لایه رایگان در دسترس است" }, "apiManager": { - "title": "API Keys", - "createKey": "Create API Key", - "key": "Key", - "revokeKey": "Revoke Key", - "revokeConfirm": "Are you sure you want to revoke this API key?", - "noKeys": "No API keys yet", - "noKeysDesc": "Create your first API key to authenticate requests to your endpoint", - "keyLabel": "Key Label", - "permissions": "Permissions", - "expiresAt": "Expires", - "never": "Never", - "revoke": "Revoke", - "showKey": "Show Key", - "hideKey": "Hide Key", - "copyKey": "Copy API Key", - "allModels": "All models", - "selectedModels": "Selected Models", - "readOnly": "Read Only", - "fullAccess": "Full Access", - "keyManagement": "API Key Management", - "keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "title": "کلیدهای API", + "createKey": "ایجاد کلید API", + "key": "کلید", + "revokeKey": "لغو کلید", + "revokeConfirm": "آیا مطمئن هستید که میخواهید این کلید API را لغو کنید؟", + "noKeys": "هنوز هیچ کلید API وجود ندارد", + "noKeysDesc": "برای احراز هویت درخواستها به نقطه پایانی خود، اولین کلید API را ایجاد کنید", + "keyLabel": "برچسب کلید", + "permissions": "مجوزها", + "expiresAt": "انقضا", + "never": "هرگز", + "revoke": "لغو", + "showKey": "نمایش کلید", + "hideKey": "پنهان کردن کلید", + "copyKey": "کپی کلید API", + "allModels": "همه مدلها", + "selectedModels": "مدلهای انتخابشده", + "readOnly": "فقط خواندنی", + "fullAccess": "دسترسی کامل", + "keyManagement": "مدیریت کلیدهای API", + "keyManagementDesc": "کلیدهای API را برای احراز هویت درخواستها به نقطه پایانی خود ایجاد و مدیریت کنید", + "requestFlowAria": "برنامه شما درخواستها را از طریق یک کلید API به OmniRoute ارسال میکند", + "requestFlowYourApp": "برنامه شما", + "requestFlowApiKey": "کلید API", "requestFlowOmniRoute": "OmniRoute", - "totalKeys": "Total Keys", - "restricted": "Restricted", - "totalRequests": "Total Requests", - "modelsAvailable": "Models Available", - "registeredKeys": "Registered Keys", - "keysRegistered": "{count} keys registered", - "keyRegistered": "{count} key registered", - "keysSecurityNote": "Each key isolates usage tracking and can be revoked independently. Keys are masked after creation for security.", - "createFirstKey": "Create Your First Key", - "name": "Name", - "usage": "Usage", - "created": "Created", - "actions": "Actions", - "reqs": "reqs", - "neverUsed": "Never used", - "deleteConfirm": "Delete this API key?", - "usageTips": "Usage Tips", - "tipAuth": "Use API keys in the Authorization header as Bearer YOUR_KEY", - "tipSecure": "Keys are only shown once during creation — store them securely", - "tipSeparate": "Create separate keys for different clients or environments", - "tipRestrict": "Restrict keys to specific models for better security and cost control", - "keyName": "Key Name", + "totalKeys": "مجموع کلیدها", + "restricted": "محدودشده", + "totalRequests": "مجموع درخواستها", + "modelsAvailable": "مدلهای موجود", + "registeredKeys": "کلیدهای ثبتشده", + "keysRegistered": "{count} کلید ثبت شدهاند", + "keyRegistered": "{count} کلید ثبت شده است", + "keysSecurityNote": "هر کلید، ردیابی میزان استفاده را بهصورت مجزا انجام میدهد و میتوان آن را مستقل از سایر کلیدها لغو کرد. برای حفظ امنیت، کلیدها پس از ایجاد پنهان میشوند.", + "createFirstKey": "ایجاد اولین کلید", + "name": "نام", + "usage": "میزان استفاده", + "created": "تاریخ ایجاد", + "actions": "عملیات", + "reqs": "درخواست", + "neverUsed": "هرگز استفاده نشده", + "deleteConfirm": "این کلید API حذف شود؟", + "usageTips": "نکات استفاده", + "tipAuth": "از کلیدهای API در هدر Authorization بهصورت Bearer YOUR_KEY استفاده کنید", + "tipSecure": "کلیدها فقط یکبار هنگام ایجاد نمایش داده میشوند — آنها را در مکانی امن نگه دارید", + "tipSeparate": "برای کلاینتها یا محیطهای مختلف، کلیدهای جداگانه ایجاد کنید", + "tipRestrict": "برای امنیت بیشتر و کنترل بهتر هزینه، کلیدها را به مدلهای مشخص محدود کنید", + "keyName": "نام کلید", "keyNamePlaceholder": "e.g., Production Key, Development Key", - "keyNameDesc": "Choose a descriptive name to identify this key's purpose", + "keyNameDesc": "نامی توصیفی برای مشخصکردن کاربرد این کلید انتخاب کنید", "managementAccessDesc": "به این کلید API اجازه دهید پیکربندی OmniRoute را مدیریت کند.", "selfServiceVisibility": "نمایانی خودسرویس", "selfServiceVisibilityDesc": "کنترل می‌کند این کلید چه چیزهایی را درباره مصرف خودش و سهمیه upstream مشترک ببیند.", @@ -2296,83 +2296,83 @@ "localUsageCommand": "اجازه به دستور استفاده محلی", "localUsageCommandDesc": "به این کلید API اجازه می‌دهد تا از @@om-usage برای بازیابی اطلاعات ذخیره‌شده استفاده و سهمیه بدون فراخوانی ارائه‌دهنده بالادستی استفاده کند.", "localUsageCommandBadge": "دستور استفاده", - "keyCreated": "API Key Created", - "keyCreatedSuccess": "Key created successfully!", - "keyCreatedNote": "Copy and store this key now — it won't be shown again.", - "done": "Done", - "savePermissions": "Save Permissions", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "keyCreated": "کلید API ایجاد شد", + "keyCreatedSuccess": "کلید با موفقیت ایجاد شد!", + "keyCreatedNote": "همین حالا این کلید را کپی و ذخیره کنید — دوباره نمایش داده نخواهد شد.", + "done": "انجام شد", + "savePermissions": "ذخیره مجوزها", + "endpointRestrictions": "نقاط پایانی مجاز", + "allEndpointsAllowed": "این کلید میتواند به همه نقاط پایانی API دسترسی داشته باشد.", + "endpointsRestricted": "محدود به {count} نقطه پایانی{count, plural, one {} other {}}.", + "autoResolve": "رفع ابهام خودکار", + "autoResolveDesc": "نامهای مبهم مدل را برای این کلید API بهطور خودکار به ارائهدهنده بومی مربوطه نگاشت کن.", "streamDefaultMode": "سازگاری پیش‌فرض استریم", "streamDefaultModeDesc": "پرچم‌های حذف‌شده `stream` را برای این کلید کنترل می‌کند. حالت JSON پاسخ‌های غیر‌استریمی بازمی‌گرداند مگر اینکه کلاینت صریحاً درخواست SSE کند.", "streamDefaultLegacy": "قدیمی", "streamDefaultJson": "سازگار با JSON", "streamDefaultBadge": "پیش‌فرض استریم JSON", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", - "allowAll": "Allow All", - "restrict": "Restrict", - "allowAllInfo": "This key can access all available models.", - "restrictInfo": "This key can access {selected} of {total} models.", - "selected": "{count} selected", - "all": "All", - "clear": "Clear", - "searchModels": "Search models by name or provider...", - "noModelsFound": "No models found", - "keyNameRequired": "Key name is required", - "keyNameTooLong": "Key name must be {max} characters or less", - "keyNameInvalid": "Key name can only contain letters, numbers, spaces, hyphens, and underscores", - "invalidKeyName": "Invalid key name", - "failedCreateKey": "Failed to create key", - "failedCreateKeyRetry": "Failed to create key. Please try again.", - "invalidKeyId": "Invalid key ID", - "failedDeleteKey": "Failed to delete key", - "failedDeleteKeyRetry": "Failed to delete key. Please try again.", - "invalidModelsSelection": "Invalid models selection", - "cannotSelectMoreThanModels": "Cannot select more than {max} models", - "failedUpdatePermissions": "Failed to update permissions", - "failedUpdatePermissionsRetry": "Failed to update permissions. Please try again.", - "unknownProvider": "unknown", - "copyMaskedKey": "Copy masked key", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyActive": "کلید فعال", + "keyActiveDesc": "این کلید API را فعال یا غیرفعال کنید. کلیدهای غیرفعال بلافاصله با خطای 403 رد میشوند.", + "accessSchedule": "زمانبندی دسترسی", + "accessScheduleDesc": "دسترسی را به ساعتها و روزهای مشخصی از هفته محدود کنید.", + "scheduleFrom": "از", + "scheduleUntil": "تا", + "scheduleDays": "روزها", + "scheduleTimezone": "منطقه زمانی", + "scheduleTimezoneHint": "از نامهای مناطق زمانی IANA استفاده کنید، برای مثال America/New_York، Europe/Berlin", + "scheduleActive": "زمانبندی", + "disabled": "غیرفعال", + "daySun": "یکشنبه", + "dayMon": "دوشنبه", + "dayTue": "سهشنبه", + "dayWed": "چهارشنبه", + "dayThu": "پنجشنبه", + "dayFri": "جمعه", + "daySat": "شنبه", + "allowAll": "اجازه به همه", + "restrict": "محدود کردن", + "allowAllInfo": "این کلید میتواند به همه مدلهای موجود دسترسی داشته باشد.", + "restrictInfo": "این کلید میتواند به {selected} مدل از {total} مدل دسترسی داشته باشد.", + "selected": "{count} مورد انتخاب شده", + "all": "همه", + "clear": "پاک کردن", + "searchModels": "جستجوی مدلها بر اساس نام یا ارائهدهنده...", + "noModelsFound": "هیچ مدلی یافت نشد", + "keyNameRequired": "نام کلید الزامی است", + "keyNameTooLong": "نام کلید باید حداکثر {max} نویسه باشد", + "keyNameInvalid": "نام کلید فقط میتواند شامل حروف، اعداد، فاصله، خط تیره و زیرخط باشد", + "invalidKeyName": "نام کلید نامعتبر است", + "failedCreateKey": "ایجاد کلید ناموفق بود", + "failedCreateKeyRetry": "ایجاد کلید ناموفق بود. لطفاً دوباره تلاش کنید.", + "invalidKeyId": "شناسه کلید نامعتبر است", + "failedDeleteKey": "حذف کلید ناموفق بود", + "failedDeleteKeyRetry": "حذف کلید ناموفق بود. لطفاً دوباره تلاش کنید.", + "invalidModelsSelection": "انتخاب مدلها نامعتبر است", + "cannotSelectMoreThanModels": "نمیتوان بیش از {max} مدل انتخاب کرد", + "failedUpdatePermissions": "بهروزرسانی مجوزها ناموفق بود", + "failedUpdatePermissionsRetry": "بهروزرسانی مجوزها ناموفق بود. لطفاً دوباره تلاش کنید.", + "unknownProvider": "ناشناخته", + "copyMaskedKey": "کپی کلید پنهانشده", + "keyOnlyAvailableAtCreation": "کلید کامل فقط هنگام ایجاد در دسترس است — هنگام ایجاد اولیه کلید، آن را کپی کنید", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# دستگاه} other {# دستگاه}}", "devicesTooltip": "{count, plural, one {# دستگاه متمایز IP/User-Agent مشاهده‌شده با این کلید (۳۰ دقیقه اخیر)} other {# دستگاه متمایز IP/User-Agent مشاهده‌شده با این کلید (۳۰ دقیقه اخیر)}}", - "lastUsedOn": "Last: {date}", + "lastUsedOn": "آخرین: {date}", "viewCostsFor": "مشاهده هزینه‌ها برای {name}", - "editPermissions": "Edit permissions", - "deleteKey": "Delete key", + "editPermissions": "ویرایش مجوزها", + "deleteKey": "حذف کلید", "regenerateKey": "بازسازی کلید", "regenerateConfirm": "آیا مطمئن هستید که می خواهید این کلید API را دوباره تولید کنید؟ کلید قدیمی بلافاصله باطل می شود.", "failedRegenerateKey": "کلید API بازسازی نشد", "failedRegenerateKeyRetry": "کلید API بازسازی نشد. لطفا دوباره امتحان کنید.", - "model": "{count} model", - "models": "{count} models", - "permissionsTitle": "Permissions: {name}", - "allowAllDesc": "This key can access all available models.", + "model": "{count} مدل", + "models": "{count} مدل", + "permissionsTitle": "مجوزها: {name}", + "allowAllDesc": "این کلید میتواند به همه مدلهای موجود دسترسی داشته باشد.", "restrictLoading": "در حال بارگذاری کاتالوگ مدل…", "restrictCatalogUnavailable": "کاتالوگ مدل در دسترس نیست؛ این کلید دارای {selectedCount} محدودیت مدل انتخاب‌شده است.", - "restrictDesc": "This key can access {selectedCount} of {totalModels} models.", - "selectedCount": "{count} selected", + "restrictDesc": "این کلید میتواند به {selectedCount} مدل از {totalModels} مدل دسترسی داشته باشد.", + "selectedCount": "{count} مورد انتخابشده", "maxActiveSessions": "حداکثر جلسات فعال", "maxActiveSessionsDescription": "0 = نامحدود. بازگرداندن 429 زمانی که این کلید از جلسات چسبنده همزمان فراتر رود.", "throttleDelay": "تاخیر کنترل سرعت", @@ -2382,8 +2382,8 @@ "allowedCombos": "ترکیب‌های مجاز", "allCombosAllowed": "این کلید می‌تواند از هر ترکیبی استفاده کند.", "restrictedComboCount": "محدود به {count, plural, one {# ترکیب} other {# ترکیب}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# ورودی ذخیرهشده} other {# ورودی ذخیرهشده}} در این فهرست ترکیبی وجود ندارد (برای مثال، قوانین مسیریابی) و بهشکل ذخیرهشده حفظ خواهد شد.", + "preservedComboRuleHint": "بهشکل ذخیرهشده حفظ شد. این ورودی یکی از گزینههای فهرست ترکیبی بالا نیست، بنابراین فقط از طریق API قابل تغییر است.", "apiManagerCustomRateLimits": "محدودیت های نرخ سفارشی", "apiManagerCustomRateLimitsDesc": "محدودیت های پیش فرض جهانی را لغو کنید. برای استفاده از پیش فرض ها خالی بگذارید.", "apiManagerRateLimitRequestsPlaceholder": "درخواست ها", @@ -2420,51 +2420,51 @@ "bypassProviderQuotaDescription": "به این کلید اجازه می‌دهد تا سیاست قطع ارائه‌دهنده/حساب بالادستی را در طول مسیریابی نادیده بگیرد. سهمیه‌های دلاری کلید API همچنان اعمال می‌شوند.", "quotaPill": "سهمیه", "quotaModeOnly": "فقط qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "اجاره انحصاری", + "exclusiveLeaseNoticeTitle": "اجاره انحصاری", + "exclusiveLeaseNoticeDesc": "این کلید API مجوز اجاره انحصاری برای مسیریابی اتصال اختصاصی را دارد.", + "allConnections": "همه اتصالها", + "onlySelectedConnections": "فقط اتصالهای انتخابشده", + "selectAtLeastOneConnection": "حداقل یک اتصال را انتخاب کنید یا «همه اتصالها» را برگزینید.", + "allConnectionsDesc": "این کلید میتواند از هر اتصال فعالی استفاده کند.", + "restrictedToConnections": "محدود به {count, plural, one {# اتصال} other {# اتصال}}." }, "auditLog": { - "title": "Audit Log", - "searchPlaceholder": "Search actions...", - "action": "Action", - "actor": "Actor", - "target": "Target", - "ipAddress": "IP Address", - "timestamp": "Timestamp", - "noEntries": "No audit entries found", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", + "title": "گزارش ممیزی", + "searchPlaceholder": "جستجوی عملیات...", + "action": "عملیات", + "actor": "عامل", + "target": "هدف", + "ipAddress": "آدرس IP", + "timestamp": "زمان ثبت", + "noEntries": "هیچ ورودی ممیزی یافت نشد", + "filterByAction": "فیلتر براساس عملیات...", + "filterByActor": "فیلتر براساس عامل...", + "filterEntriesAria": "فیلتر کردن ورودیهای گزارش ممیزی", + "filterByActionTypeAria": "فیلتر براساس نوع عملیات", + "filterByActorAria": "فیلتر براساس عامل", + "refreshAuditLogAria": "بهروزرسانی گزارش ممیزی", + "tableAria": "ورودیهای گزارش ممیزی", + "failedFetchAuditLog": "دریافت گزارش ممیزی ناموفق بود", "notAvailable": "—", - "description": "Administrative actions and security events", - "showing": "Showing {count} entries (offset {offset})", - "previous": "Previous" + "description": "عملیات مدیریتی و رویدادهای امنیتی", + "showing": "نمایش {count} ورودی (از موقعیت {offset})", + "previous": "قبلی" }, "media": { - "title": "Media Playground", - "subtitle": "Generate images, videos, and music", + "title": "محیط آزمایشی رسانه", + "subtitle": "تولید تصویر، ویدئو و موسیقی", "model": "Model", "prompt": "Prompt", - "generate": "Generate", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generate": "تولید", + "generating": "در حال تولید...", + "loadingModels": "در حال بارگذاری مدلهای موجود...", + "noModels": "هیچ مدلی موجود نیست. ابتدا ارائهدهندگان دارای قابلیتهای رسانهای را پیکربندی کنید.", + "error": "تولید ناموفق بود", + "result": "نتیجه", + "imageDescription": "با استفاده از OpenAI، xAI، Together، Hyperbolic، SD WebUI، ComfyUI و سایر موارد، از توضیحات متنی تصویر تولید کنید.", + "videoDescription": "با AnimateDiff و Stable Video Diffusion از طریق ComfyUI یا SD WebUI ویدیو بسازید.", + "musicDescription": "با استفاده از Stable Audio Open یا MusicGen از طریق ComfyUI موسیقی بسازید.", "kinds": { "embedding": "جاسازی", "image": "تصویر", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "مدل‌های تبدیل گفتار به متن OpenRouter از اتصال پیکربندی‌شده OpenRouter شما استفاده می‌کنند. نیازی به اعتبارنامه جداگانه نیست." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "عبارت جستجو", + "searchResults": "نتایج جستجو", + "cachedResult": "ذخیرهشده در حافظهٔ پنهان", + "searchCost": "هزینه", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "آزمایش پیشرفتهٔ جستجو با مقایسهٔ ارائهدهندگان", + "compareProviders": "مقایسهٔ ارائهدهندگان", + "rerankResults": "رتبهبندی مجدد نتایج", + "searchHistory": "تاریخچهٔ جستجو", + "urlOverlap": "همپوشانی URL", + "noSearchProviders": "هیچ ارائهدهندهٔ جستجویی پیکربندی نشده است. ارائهدهندگان را در تنظیمات اضافه کنید.", + "noRerankModels": "هیچ مدل رتبهبندی مجددی موجود نیست", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "ارائهدهنده", + "searchType": "نوع جستجو", + "maxResults": "حداکثر نتایج", + "filters": "فیلترها", + "country": "کشور", + "language": "زبان", + "timeRange": "بازهٔ زمانی", + "includeDomains": "دامنههای مشمول", + "excludeDomains": "دامنههای مستثنا", + "safeSearch": "جستجوی ایمن", + "safeSearchOff": "خاموش", + "safeSearchModerate": "متوسط", + "safeSearchStrict": "سختگیرانه", + "queryPlaceholder": "عبارت جستجو را وارد کنید...", + "providerAuto": "خودکار (ارزانترین)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "اخبار", + "optionAny": "همه", + "timeRangeDay": "روز گذشته", + "timeRangeWeek": "هفتهٔ گذشته", + "timeRangeMonth": "ماه گذشته", + "timeRangeYear": "سال گذشته", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "مهلت درخواست به پایان رسید ({seconds} ثانیه)", + "networkError": "خطای شبکه", + "formatted": "قالببندیشده", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "عدم یافتن در حافظهٔ نهان", + "cacheHit": "یافتن در حافظهٔ نهان", + "latency": "تأخیر", + "cost": "هزینه", + "results": "نتایج", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "مدل بازرتبهبندی", + "positionDelta": "تغییر موقعیت", + "emptyState": "برای مشاهدهٔ نتایج، یک عبارت جستجو ارسال کنید", "copy": "کپی کنید", "resetToDefault": "به حالت پیش فرض بازنشانی کنید", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "جستجو", + "tabScrape": "استخراج", + "tabCompare": "مقایسه", + "modalitiesGuide": "راهنمای شیوهها", + "searchConceptTitle": "جستجو", + "searchConceptDesc": "جستجو = فهرستی از نتایج وب (عنوان، URL، خلاصه و امتیاز مرتبطبودن) را دریافت میکند", + "scrapeConceptTitle": "استخراج", + "scrapeConceptDesc": "استخراج = محتوای کامل یک URL را استخراج میکند (markdown، متن یا HTML)", + "compareConceptTitle": "مقایسه", + "compareConceptDesc": "مقایسه = یک عبارت یکسان را بهصورت همزمان در N ارائهدهنده اجرا میکند تا تأخیر، هزینه و همپوشانی نتایج مقایسه شوند", + "rerankConceptTitle": "بازرتبهبندی", + "rerankConceptDesc": "بازرتبهبندی = نتایج را از طریق LLM دوباره مرتب میکند تا ارتباط آنها با عبارت جستجو بهبود یابد", + "autoConceptTitle": "خودکار (ارزانترین)", + "autoConceptDesc": "خودکار (ارزانترین) = بهطور خودکار ارزانترین ارائهدهندهٔ موجود با اطلاعات احراز هویت پیکربندیشده را انتخاب میکند", + "providerCatalogTitle": "فهرست ارائهدهندگان", + "kindSearch": "جستجو", + "kindFetch": "واکشی/استخراج", + "statusConfigured": "پیکربندیشده", + "statusMissing": "بدون اطلاعات احراز هویت", + "statusRateLimited": "دارای محدودیت نرخ", + "configureProvider": "پیکربندی در بخش ارائهدهندگان", + "loadingProviders": "در حال بارگیری ارائهدهندگان…", + "failedToLoadProviders": "بارگیری ارائهدهندگان ناموفق بود", + "costPerQuery": "هزینه/درخواست", + "freeQuota": "سهمیهٔ رایگان/ماه", + "scrapeUrl": "URL برای استخراج", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL الزامی است", "scrapeUrlInvalid": "URL نامعتبر است — باید با http:// یا https:// شروع شود", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "استخراج", + "scrapeExtracting": "در حال استخراج…", + "scrapeFullPage": "تمامصفحه", + "scrapeFormat": "قالب", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "متن", + "scrapePreview": "پیشنمایش", + "scrapeRaw": "خام", + "scrapeContentTruncated": "(کوتاهشده، مشاهده نسخه خام)", + "scrapeMetadata": "فراداده", + "scrapeProvider": "ارائهدهنده", + "scrapeSize": "اندازه", "scrapeEmptyState": "برای استخراج محتوا، یک URL وارد کنید", "scrapeProvidersAvailable": "ارائه‌دهندگان موجود: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "مقایسه", + "compareRunning": "در حال مقایسه…", + "autoProvider": "خودکار (ارزانترین)", + "configuredStatus": "پیکربندیشده", + "rateLimitedStatus": "محدودیت نرخ اعمال شده", + "noCredential": "بدون اطلاعات احراز هویت", + "searchTypeLabel": "نوع", + "rerankModelLabel": "مدل بازرتبهبندی", + "noneOption": "هیچکدام", + "size": "اندازه", "configurationPane": "پنل پیکربندی", "configuration": "پیکربندی", "status": "وضعیت", @@ -2701,7 +2701,7 @@ "compareEmptyDescription": "نتایج در کنار هم به همراه تاخیر، هزینه و هم‌پوشانی URL نمایش داده خواهند شد" }, "cliTools": { - "title": "CLI Tools", + "title": "ابزارهای CLI", "classifierCompatTitle": "سازگاری طبقه‌بندی‌کننده مجوز خودکار", "classifierCompatDescription": "دور زدن طبقه‌بندی‌کننده امنیتی --permission-mode auto در Claude Code با یک پاسخ allow ساختگی تا مسیرهای fallback مسدود نشوند. به‌طور پیش‌فرض خاموش است.", "classifierCompatCycle": "چرخه: خاموش → خودکار → همیشه", @@ -2727,14 +2727,14 @@ "codexProfilesDescription": "بازتولید ~/.codex/*.config.toml پس از کشف مدل.", "claudeProfiles": "پروفایل‌های Claude Code", "claudeProfilesDescription": "بازتولید هر ~/.claude/profiles/…/settings.json پس از کشف مدل.", - "noActiveProviders": "No active providers", - "noActiveProvidersDesc": "Please add and connect providers first to configure CLI tools.", - "mapModels": "Map Models", - "testConnection": "Test Connection", - "connectionStatus": "Connection Status", - "configureEndpoint": "Configure Endpoint", - "instructions": "Instructions", - "modelMapping": "Model Mapping", + "noActiveProviders": "هیچ ارائهدهنده فعالی وجود ندارد", + "noActiveProvidersDesc": "لطفاً ابتدا ارائهدهندگان را اضافه و متصل کنید تا ابزارهای CLI را پیکربندی کنید.", + "mapModels": "نگاشت مدلها", + "testConnection": "آزمایش اتصال", + "connectionStatus": "وضعیت اتصال", + "configureEndpoint": "پیکربندی نقطه پایانی", + "instructions": "دستورالعملها", + "modelMapping": "نگاشت مدل", "reasoningEffort": "تلاش استدلال برای {model}", "effortNone": "هیچ", "effortLow": "کم", @@ -2747,62 +2747,62 @@ "modelAliases": "نام‌های مستعار مدل", "addModel": "افزودن مدل", "routeModelPlaceholder": "مسیریابی {model} به...", - "baseUrl": "Base URL", - "apiKey": "API Key", - "configured": "Configured", - "notConfigured": "Not configured", - "notInstalled": "Not installed", - "custom": "Custom", - "unknown": "Unknown", - "lastSavedAt": "Last saved: {date}", - "never": "Never", - "justNow": "just now", - "minutesAgoShort": "{count}m ago", - "hoursAgoShort": "{count}h ago", - "daysAgoShort": "{count}d ago", - "monthsAgoShort": "{count}mo ago", - "yearsAgoShort": "{count}y ago", - "runtimeCheckFailed": "Runtime check failed", + "baseUrl": "نشانی پایه", + "apiKey": "کلید API", + "configured": "پیکربندیشده", + "notConfigured": "پیکربندینشده", + "notInstalled": "نصبنشده", + "custom": "سفارشی", + "unknown": "ناشناخته", + "lastSavedAt": "آخرین ذخیرهسازی: {date}", + "never": "هرگز", + "justNow": "همین حالا", + "minutesAgoShort": "{count} دقیقه پیش", + "hoursAgoShort": "{count} ساعت پیش", + "daysAgoShort": "{count} روز پیش", + "monthsAgoShort": "{count} ماه پیش", + "yearsAgoShort": "{count} سال پیش", + "runtimeCheckFailed": "بررسی محیط اجرا ناموفق بود", "yourApiKeyPlaceholder": "your-api-key", "modelPlaceholder": "provider/model-id", - "configurationSaved": "Configuration saved successfully.", - "failedToSave": "Failed to save configuration.", - "noApiKeysCreateOne": "No API keys - Create one in Keys page", - "defaultOmnirouteKey": "sk_omniroute (default)", - "selectModel": "Select Model", - "selectModelForAlias": "Select model for {alias}", - "selectModelForTool": "Select Model for {tool}", - "select": "Select", - "clear": "Clear", - "comingSoon": "Coming soon", - "checkingRuntime": "Checking runtime status...", - "guideOnlyIntegration": "Guide-only integration (no local runtime required)", - "cliRuntimeDetected": "CLI runtime detected and ready", - "cliFoundNotRunnable": "CLI found but not runnable{reason}", - "cliRuntimeNotDetected": "CLI runtime not detected", - "binary": "Binary", - "configPath": "Config path", - "configPathShort": "Config", - "failedCheckRuntimeStatus": "Failed to check runtime status.", - "copy": "Copy", - "copied": "Copied", - "copyConfig": "Copy Config", - "saveConfig": "Save Config", - "selectionSaved": "Selection saved", - "guide": "Guide", - "detected": "Detected", - "notReady": "Not ready", - "active": "Active", - "inactive": "Inactive", + "configurationSaved": "پیکربندی با موفقیت ذخیره شد.", + "failedToSave": "ذخیره پیکربندی ناموفق بود.", + "noApiKeysCreateOne": "هیچ کلید API وجود ندارد — یکی در صفحه کلیدها ایجاد کنید", + "defaultOmnirouteKey": "sk_omniroute (پیشفرض)", + "selectModel": "انتخاب مدل", + "selectModelForAlias": "انتخاب مدل برای {alias}", + "selectModelForTool": "انتخاب مدل برای {tool}", + "select": "انتخاب", + "clear": "پاک کردن", + "comingSoon": "بهزودی", + "checkingRuntime": "در حال بررسی وضعیت محیط اجرا...", + "guideOnlyIntegration": "یکپارچهسازی فقط از طریق راهنما (بدون نیاز به محیط اجرای محلی)", + "cliRuntimeDetected": "محیط اجرای CLI شناسایی شد و آماده است", + "cliFoundNotRunnable": "CLI پیدا شد، اما قابل اجرا نیست{reason}", + "cliRuntimeNotDetected": "محیط اجرای CLI شناسایی نشد", + "binary": "فایل اجرایی", + "configPath": "مسیر پیکربندی", + "configPathShort": "پیکربندی", + "failedCheckRuntimeStatus": "بررسی وضعیت محیط اجرا ناموفق بود.", + "copy": "کپی", + "copied": "کپی شد", + "copyConfig": "کپی پیکربندی", + "saveConfig": "ذخیره پیکربندی", + "selectionSaved": "انتخاب ذخیره شد", + "guide": "راهنما", + "detected": "شناساییشده", + "notReady": "آماده نیست", + "active": "فعال", + "inactive": "غیرفعال", "startMitm": "Start MITM", "stopMitm": "Stop MITM", - "mitmStarted": "MITM started successfully!", - "mitmStopped": "MITM stopped successfully!", - "failedStart": "Failed to start MITM", - "failedStop": "Failed to stop MITM", - "saveMappings": "Save Mappings", - "mappingsSaved": "Mappings saved!", - "failedSaveMappings": "Failed to save mappings", + "mitmStarted": "MITM با موفقیت راهاندازی شد!", + "mitmStopped": "MITM با موفقیت متوقف شد!", + "failedStart": "راهاندازی MITM ناموفق بود", + "failedStop": "توقف MITM ناموفق بود", + "saveMappings": "ذخیره نگاشتها", + "mappingsSaved": "نگاشتها ذخیره شدند!", + "failedSaveMappings": "ذخیره نگاشتها ناموفق بود", "reasoningEffortDefault": "پیش‌فرض", "reasoningEffortHint": "پیش‌فرض، تلاش استدلال ارسال‌شده توسط عامل را حفظ می‌کند", "reasoningEffortTier": { @@ -2812,130 +2812,130 @@ "high": "زیاد", "xhigh": "فوق‌العاده زیاد" }, - "howItWorks": "How it works:", - "antigravityHowWorksDesc": "Antigravity sends requests to Google's endpoint. MITM intercepts and redirects them to OmniRoute.", - "antigravityStep1": "1. Start MITM to route requests through OmniRoute.", - "antigravityStep2Prefix": "2. Add", - "antigravityStep2Suffix": "to your hosts file as 127.0.0.1.", - "antigravityStep3": "3. Open Antigravity and requests will be proxied.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", - "sudoPasswordRequiredTitle": "Sudo Password Required", - "sudoPasswordHint": "Administrator password is required to modify hosts file and system proxy settings.", - "enterSudoPassword": "Enter sudo password", - "sudoPasswordRequiredError": "Sudo password is required.", - "cancel": "Cancel", - "confirm": "Confirm", - "settingsApplied": "Settings applied successfully!", - "failedApplySettings": "Failed to apply settings", - "settingsReset": "Settings reset successfully!", - "failedResetSettings": "Failed to reset settings", - "backupRestored": "Backup restored!", - "failedRestore": "Failed to restore", - "checkingCli": "Checking {tool} CLI...", - "cliNotRunnable": "{tool} CLI installed but not runnable", - "cliNotInstalled": "{tool} CLI not installed", - "cliNotDetected": "{tool} CLI not detected", - "cliDetectedReady": "{tool} CLI detected and ready", - "cliFoundFailedHealthcheck": "{tool} CLI was found but failed runtime healthcheck{reason}.", - "installCliPrompt": "Please install {tool} CLI to use this feature.", - "installCodexPrompt": "Please install Codex CLI to use auto-apply feature.", - "hide": "Hide", - "howToInstall": "How to Install", - "installationGuide": "Installation Guide", + "howItWorks": "نحوه کار:", + "antigravityHowWorksDesc": "Antigravity درخواستها را به نقطه پایانی Google ارسال میکند. MITM آنها را رهگیری کرده و به OmniRoute هدایت میکند.", + "antigravityStep1": "۱. برای هدایت درخواستها از طریق OmniRoute، MITM را راهاندازی کنید.", + "antigravityStep2Prefix": "۲. اضافه کنید", + "antigravityStep2Suffix": "را با مقدار 127.0.0.1 به فایل hosts خود.", + "antigravityStep3": "۳. Antigravity را باز کنید تا درخواستها از طریق پروکسی ارسال شوند.", + "mitmHowWorksDesc": "{toolName} درخواستها را به نقطه پایانی ارائهدهنده خود ارسال میکند. MITM آنها را رهگیری کرده و به OmniRoute هدایت میکند.", + "mitmStep1": "۱. برای هدایت درخواستها از طریق OmniRoute، MITM را راهاندازی کنید.", + "mitmStep2Prefix": "۲. اضافه کنید", + "mitmStep2Suffix": "را با مقدار 127.0.0.1 به فایل hosts خود.", + "mitmStep3": "۳. {toolName} را باز کنید تا درخواستها از طریق پروکسی ارسال شوند.", + "sudoPasswordRequiredTitle": "رمز عبور Sudo لازم است", + "sudoPasswordHint": "برای تغییر فایل hosts و تنظیمات پروکسی سیستم، رمز عبور مدیر لازم است.", + "enterSudoPassword": "رمز عبور sudo را وارد کنید", + "sudoPasswordRequiredError": "رمز عبور Sudo لازم است.", + "cancel": "لغو", + "confirm": "تأیید", + "settingsApplied": "تنظیمات با موفقیت اعمال شدند!", + "failedApplySettings": "اعمال تنظیمات ناموفق بود", + "settingsReset": "تنظیمات با موفقیت بازنشانی شدند!", + "failedResetSettings": "بازنشانی تنظیمات ناموفق بود", + "backupRestored": "نسخه پشتیبان بازیابی شد!", + "failedRestore": "بازیابی ناموفق بود", + "checkingCli": "در حال بررسی CLI مربوط به {tool}...", + "cliNotRunnable": "CLI مربوط به {tool} نصب شده است، اما قابل اجرا نیست", + "cliNotInstalled": "CLI مربوط به {tool} نصب نشده است", + "cliNotDetected": "CLI مربوط به {tool} شناسایی نشد", + "cliDetectedReady": "CLI مربوط به {tool} شناسایی شده و آماده است", + "cliFoundFailedHealthcheck": "CLI مربوط به {tool} پیدا شد، اما بررسی سلامت زمان اجرا ناموفق بود{reason}.", + "installCliPrompt": "برای استفاده از این قابلیت، لطفاً CLI مربوط به {tool} را نصب کنید.", + "installCodexPrompt": "برای استفاده از قابلیت اعمال خودکار، لطفاً Codex CLI را نصب کنید.", + "hide": "پنهان کردن", + "howToInstall": "نحوه نصب", + "installationGuide": "راهنمای نصب", "platforms": "macOS / Linux / Windows:", - "afterInstallationRun": "After installation, run", - "toVerify": "to verify.", - "current": "Current", + "afterInstallationRun": "پس از نصب، اجرا کنید", + "toVerify": "برای تأیید.", + "current": "فعلی", "baseUrlPlaceholder": "https://.../v1", - "resetToDefault": "Reset to default", + "resetToDefault": "بازنشانی به پیشفرض", "providerModelPlaceholder": "provider/model-id", - "apply": "Apply", - "reset": "Reset", - "manualConfig": "Manual Config", - "backups": "Backups", - "configBackups": "Config Backups", - "noBackupsYet": "No backups yet. Backups are created automatically before each Apply or Reset.", - "restore": "Restore", - "backupRestoredReloading": "Backup restored! Reloading status...", - "failedRestoreBackup": "Failed to restore backup", - "applied": "Applied!", - "failed": "Failed", - "resetDone": "Reset!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute is configured as OpenAI-compatible provider", - "provider": "Provider", + "apply": "اعمال", + "reset": "بازنشانی", + "manualConfig": "پیکربندی دستی", + "backups": "نسخههای پشتیبان", + "configBackups": "نسخههای پشتیبان پیکربندی", + "noBackupsYet": "هنوز نسخه پشتیبانی وجود ندارد. نسخههای پشتیبان پیش از هر بار اعمال یا بازنشانی، بهطور خودکار ایجاد میشوند.", + "restore": "بازیابی", + "backupRestoredReloading": "نسخه پشتیبان بازیابی شد! در حال بارگیری مجدد وضعیت...", + "failedRestoreBackup": "بازیابی نسخه پشتیبان ناموفق بود", + "applied": "اعمال شد!", + "failed": "ناموفق", + "resetDone": "بازنشانی شد!", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute بهعنوان ارائهدهنده سازگار با OpenAI پیکربندی شده است", + "provider": "ارائهدهنده", "model": "Model", - "providers": "Providers", - "auth": "Auth", - "noApiKeysAvailable": "No API keys available", - "usingDefaultOmniroute": "Using default: sk_omniroute", - "updateConfig": "Update Config", - "applyConfig": "Apply Config", - "noBackupsAvailable": "No backups available.", - "profileSaved": "Profile \"{name}\" saved!", - "failedSaveProfile": "Failed to save profile", - "profileActivated": "Profile activated!", - "failedActivateProfile": "Failed to activate profile", - "profiles": "Profiles", - "savedProfiles": "Saved Profiles", - "noProfilesYet": "No profiles saved yet. Save current config as a profile below.", - "activate": "Activate", - "deleteProfile": "Delete profile", - "profileNamePlaceholder": "Profile name (e.g. Personal Account)", - "saveCurrent": "Save Current", - "codexAuthNotePrefix": "Codex uses", - "codexAuthNoteMiddle": "with", - "codexAuthNoteSuffix": "Click \"Apply\" to auto-configure.", - "claudeManualConfiguration": "Claude CLI - Manual Configuration", - "codexManualConfiguration": "Codex CLI - Manual Configuration", - "droidManualConfiguration": "Factory Droid - Manual Configuration", - "openClawManualConfiguration": "Open Claw - Manual Configuration", - "clineManualConfiguration": "Cline Manual Configuration", - "kiloManualConfiguration": "Kilo Code Manual Configuration", - "whenToUseLabel": "When to use", - "openToolDocs": "Open tool docs", + "providers": "ارائهدهندگان", + "auth": "احراز هویت", + "noApiKeysAvailable": "هیچ کلید API در دسترس نیست", + "usingDefaultOmniroute": "در حال استفاده از پیشفرض: sk_omniroute", + "updateConfig": "بهروزرسانی پیکربندی", + "applyConfig": "اعمال پیکربندی", + "noBackupsAvailable": "هیچ نسخه پشتیبانی در دسترس نیست.", + "profileSaved": "نمایه «{name}» ذخیره شد!", + "failedSaveProfile": "ذخیره نمایه ناموفق بود", + "profileActivated": "نمایه فعال شد!", + "failedActivateProfile": "فعالسازی نمایه ناموفق بود", + "profiles": "نمایهها", + "savedProfiles": "نمایههای ذخیرهشده", + "noProfilesYet": "هنوز نمایهای ذخیره نشده است. پیکربندی فعلی را در زیر بهعنوان یک نمایه ذخیره کنید.", + "activate": "فعالسازی", + "deleteProfile": "حذف نمایه", + "profileNamePlaceholder": "نام نمایه (مثلاً حساب شخصی)", + "saveCurrent": "ذخیره پیکربندی فعلی", + "codexAuthNotePrefix": "Codex استفاده میکند از", + "codexAuthNoteMiddle": "با", + "codexAuthNoteSuffix": "برای پیکربندی خودکار روی «اعمال» کلیک کنید.", + "claudeManualConfiguration": "Claude CLI - پیکربندی دستی", + "codexManualConfiguration": "Codex CLI - پیکربندی دستی", + "droidManualConfiguration": "Factory Droid - پیکربندی دستی", + "openClawManualConfiguration": "Open Claw - پیکربندی دستی", + "clineManualConfiguration": "پیکربندی دستی Cline", + "kiloManualConfiguration": "پیکربندی دستی Kilo Code", + "whenToUseLabel": "زمان استفاده", + "openToolDocs": "باز کردن مستندات ابزار", "toolUseCases": { - "claude": "Use when you want strong planning workflows and long multi-file refactors with Claude Code.", - "codex": "Use when your team is standardized on OpenAI Codex CLI flows and profile-based auth.", - "droid": "Use when you need a lightweight terminal agent focused on fast coding and command execution loops.", - "openclaw": "Use when you want an Open Claw style coding agent but routed through OmniRoute policies.", - "cline": "Use when you configure coding agents inside editors and want guided setup with OmniRoute models.", - "kilo": "Use when your workflow depends on Kilo Code commands and fast iterative edits.", - "cursor": "Use when coding in Cursor and you need custom OpenAI-compatible models through OmniRoute.", - "continue": "Use when running Continue in IDEs and you need portable JSON-based provider configuration.", - "opencode": "Use when you prefer terminal-native agent runs and scripted automation via OpenCode.", - "kiro": "Use when integrating Kiro and controlling model routing centrally from OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", - "antigravity": "Use when Antigravity/Kiro traffic must be intercepted through MITM and routed to OmniRoute.", - "copilot": "Use when you want Copilot chat style UX while enforcing OmniRoute keys and routing rules.", - "amp": "Use when you want Amp shorthand workflows but still need OmniRoute alias and routing rules enforcement.", - "hermes": "Use when you need a lightweight terminal-native AI assistant for quick tasks.", + "claude": "زمانی استفاده کنید که به گردشکارهای قدرتمند برنامهریزی و بازآراییهای طولانیِ چندفایلی با Claude Code نیاز دارید.", + "codex": "زمانی استفاده کنید که تیم شما بر گردشکارهای OpenAI Codex CLI و احراز هویت مبتنی بر پروفایل استاندارد شده است.", + "droid": "زمانی استفاده کنید که به یک عامل سبکوزن ترمینالی با تمرکز بر کدنویسی سریع و چرخههای اجرای فرمان نیاز دارید.", + "openclaw": "زمانی استفاده کنید که یک عامل کدنویسی به سبک Open Claw میخواهید، اما مسیریابی آن از طریق خطمشیهای OmniRoute انجام شود.", + "cline": "زمانی استفاده کنید که عاملهای کدنویسی را درون ویرایشگرها پیکربندی میکنید و راهاندازی هدایتشده با مدلهای OmniRoute میخواهید.", + "kilo": "زمانی استفاده کنید که گردشکار شما به فرمانهای Kilo Code و ویرایشهای تکرارشونده سریع وابسته است.", + "cursor": "زمانی استفاده کنید که در Cursor کدنویسی میکنید و از طریق OmniRoute به مدلهای سفارشی سازگار با OpenAI نیاز دارید.", + "continue": "زمانی استفاده کنید که Continue را در محیطهای توسعه یکپارچه اجرا میکنید و به پیکربندی قابلانتقال ارائهدهنده مبتنی بر JSON نیاز دارید.", + "opencode": "زمانی استفاده کنید که اجرای عامل بهصورت بومی در ترمینال و خودکارسازی اسکریپتی از طریق OpenCode را ترجیح میدهید.", + "kiro": "زمانی استفاده کنید که Kiro را یکپارچه میکنید و میخواهید مسیریابی مدل را بهصورت متمرکز از OmniRoute کنترل کنید.", + "windsurf": "زمانی استفاده کنید که یک محیط توسعه یکپارچه با رویکرد اولویتدهی به هوش مصنوعی میخواهید که مدلهای Codeium/Windsurf آن از طریق OmniRoute مسیریابی شوند.", + "antigravity": "زمانی استفاده کنید که ترافیک Antigravity/Kiro باید از طریق MITM رهگیری و به OmniRoute مسیریابی شود.", + "copilot": "زمانی استفاده کنید که تجربه کاربری به سبک گفتوگوی Copilot میخواهید و همزمان کلیدها و قوانین مسیریابی OmniRoute را اعمال میکنید.", + "amp": "زمانی استفاده کنید که گردشکارهای کوتاهنویسی Amp را میخواهید، اما همچنان به اعمال نامهای مستعار و قوانین مسیریابی OmniRoute نیاز دارید.", + "hermes": "زمانی استفاده کنید که برای کارهای سریع به یک دستیار هوش مصنوعی سبکوزن و بومی ترمینال نیاز دارید.", "hermes-agent": "زمانی استفاده کنید که به Hermes Agent (از Nousresearch) با مدل‌های پیش‌فرض، تفویض، بینایی و کمکی مسیریابی‌شده از طریق OmniRoute نیاز دارید.", - "custom": "Use for custom tool implementations or generic OpenAI-compatible configurations." + "custom": "برای پیادهسازی ابزارهای سفارشی یا پیکربندیهای عمومی سازگار با OpenAI استفاده کنید." }, "toolDescriptions": { - "antigravity": "Google Antigravity IDE with MITM", + "antigravity": "محیط توسعه یکپارچه Google Antigravity با MITM", "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "عامل کدنویسی TUI برای xAI Grok Build با پشتیبانی از ارائه‌دهنده سفارشی", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "دستیار هوش مصنوعی Factory Droid", + "openclaw": "دستیار هوش مصنوعی Open Claw", + "cline": "رابط خط فرمان دستیار کدنویسی هوش مصنوعی Cline", + "kilo": "رابط خط فرمان دستیار هوش مصنوعی Kilo Code", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "continue": "دستیار هوش مصنوعی Continue", + "opencode": "عامل کدنویسی هوش مصنوعی OpenCode (ترمینال)", + "kiro": "Amazon Kiro — محیط توسعه یکپارچه مبتنی بر هوش مصنوعی", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "رابط خط فرمان دستیار کدنویسی Sourcegraph Amp", + "hermes": "دستیار ترمینالی هوش مصنوعی Hermes", "hermes-agent": "Hermes Agent (از Nousresearch) - هوش مصنوعی پیشرفته ترمینال با پشتیبانی از چند مدل (تفویض، بینایی، فشرده‌سازی و غیره)", - "custom": "Generic OpenAI-compatible CLI or SDK configuration generator", + "custom": "مولد پیکربندی برای رابط خط فرمان یا SDK عمومی سازگار با OpenAI", "aider": "CLI برنامه‌نویسی دونفره هوش مصنوعی Aider با URL پایه سازگار با OpenAI", "forge": "CLI عامل کدنویسی ForgeCode با ارائه‌دهنده سفارشی", "cursor-cli": "CLI عامل Cursor در حالت عامل بدون رابط (headless)", @@ -2950,7 +2950,7 @@ "interpreter": "CLI عامل کدنویسی خودکار Open Interpreter", "omp": "عامل کدنویسی ترمینال Oh My Pi", "letta": "عامل Letta CLI با حافظه پایدار و استفاده از ابزار", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — چارچوب کدنویسی خودبهبوددهنده RLM با پشتیبانی از ارائهدهنده سازگار با OpenAI", "warp": "ترمینال هوش مصنوعی Warp با پشتیبانی از ارائه‌دهنده سفارشی", "agent-deck": "ارکستراتور چندعاملی Agent Deck", "5dive": "5dive — ناوگان خودمیزبان از عامل‌های کدنویسی؛ یک پروفایل احراز هویت همه را به OmniRoute هدایت می‌کند" @@ -2958,134 +2958,134 @@ "guides": { "cursor": { "notes": { - "0": "Requires Cursor Pro account to use this feature.", - "1": "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings." + "0": "برای استفاده از این قابلیت، حساب Cursor Pro لازم است.", + "1": "Cursor درخواستها را از طریق سرور خودش مسیریابی میکند؛ بنابراین نقطه پایانی محلی پشتیبانی نمیشود. لطفاً Cloud Endpoint را در Settings فعال کنید." }, "steps": { "1": { - "title": "Open Settings", - "desc": "Go to Settings -> Models" + "title": "باز کردن Settings", + "desc": "به Settings -> Models بروید" }, "2": { - "title": "Enable OpenAI API", - "desc": "Enable \"OpenAI API key\" option" + "title": "OpenAI API را فعال کنید", + "desc": "گزینه «OpenAI API key» را فعال کنید" }, "3": { - "title": "Base URL" + "title": "نشانی پایه" }, "4": { - "title": "API Key" + "title": "کلید API" }, "5": { - "title": "Add Custom Model", - "desc": "Click \"View All Model\" -> \"Add Custom Model\"" + "title": "افزودن مدل سفارشی", + "desc": "روی «View All Model» ← «Add Custom Model» کلیک کنید" }, "6": { - "title": "Select Model" + "title": "انتخاب مدل" } } }, "continue": { "steps": { "1": { - "title": "Open Config", - "desc": "Open Continue configuration file" + "title": "باز کردن پیکربندی", + "desc": "باز کردن فایل پیکربندی Continue" }, "2": { - "title": "API Key" + "title": "کلید API" }, "3": { - "title": "Select Model" + "title": "انتخاب مدل" }, "4": { - "title": "Add Model Config", - "desc": "Add the following configuration to your models array:" + "title": "افزودن پیکربندی مدل", + "desc": "پیکربندی زیر را به آرایه models خود اضافه کنید:" } }, "notes": { - "0": "Continue uses JSON config file." + "0": "Continue از فایل پیکربندی JSON استفاده میکند." } }, "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "نصب OpenCode", + "desc": "نصب از طریق npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "کلید API" }, "3": { - "title": "Set Base URL", + "title": "تنظیم نشانی پایه", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "انتخاب مدل" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "استفاده از گونه Thinking", + "desc": "برای مدلهای Thinking، با ‎--variant high/low/max اجرا کنید (فرمان نمونه در زیر آمده است)." } }, "notes": { - "0": "OpenCode requires API key configuration.", - "1": "Set the base URL to your OmniRoute endpoint." + "0": "OpenCode به پیکربندی کلید API نیاز دارد.", + "1": "نشانی پایه را روی نقطه پایانی OmniRoute خود تنظیم کنید." } }, "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "باز کردن تنظیمات Kiro", + "desc": "به Settings ← AI Provider بروید" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "نشانی پایه", + "desc": "نشانی URL نقطه پایانی OmniRoute خود را جایگذاری کنید" }, "3": { - "title": "API Key" + "title": "کلید API" }, "4": { - "title": "Select Model" + "title": "انتخاب مدل" } }, "notes": { - "0": "Kiro requires Amazon account." + "0": "Kiro به حساب Amazon نیاز دارد." } }, "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "باز کردن تنظیمات هوش مصنوعی", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "افزودن ارائهدهنده سفارشی", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "نشانی پایه", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "کلید API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "انتخاب مدل", + "desc": "یک مدل را از فهرست کشویی انتخاب کنید" } } } }, - "autoConfiguredTab": "Auto-Configured", - "toolCategoriesDesc": "Configure AI coding assistants to route through OmniRoute", - "allToolsTab": "All Tools", - "guidedClientsTab": "Guided Clients", - "mitmClientsTab": "MITM Clients", + "autoConfiguredTab": "پیکربندیشده بهصورت خودکار", + "toolCategoriesDesc": "دستیارهای کدنویسی هوش مصنوعی را برای مسیریابی از طریق OmniRoute پیکربندی کنید", + "allToolsTab": "همه ابزارها", + "guidedClientsTab": "کلاینتهای هدایتشده", + "mitmClientsTab": "کلاینتهای MITM", "customCliTab": "CLI سفارشی", - "toolCategories": "Tool Categories", - "visibleToolsCount": "{count} tools available", + "toolCategories": "دستهبندی ابزارها", + "visibleToolsCount": "{count} ابزار در دسترس است", "customCliBuilderTitle": "سازنده CLI سازگار با OpenAI", "customCliBuilderDescription": "برای هر CLI یا SDK که URL پایه، کلید API و شناسه مدل سازگار با OpenAI را می‌پذیرد، بسته‌های env و JSON تولید کنید.", "customCliNoModels": "حداقل یک ارائه دهنده را برای پر کردن انتخابگرهای مدل وصل کنید.", @@ -3159,7 +3159,7 @@ "hermesRolesWillUpdate": "{count, plural, one {# نقش به‌روزرسانی خواهد شد} other {# نقش به‌روزرسانی خواهند شد}}", "hermesPreviewPath": "پیش‌نمایش — در ~/.hermes/config.yaml نوشته خواهد شد", "hermesSaveDescription": "مدل انتخاب‌شده برای هر نقش را ذخیره می‌کند در", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "مولد پیکربندی GitHub Copilot", "copilotGeneratorDescriptionPrefix": "تولید می‌کند", "copilotGeneratorDescriptionSuffix": "بلاک برای VS Code GitHub Copilot با استفاده از الگوی ارائه‌دهنده Azure. مدل‌های مورد نظر خود را انتخاب کنید، سپس JSON را در فایل پیکربندی خود کپی کنید.", "copilotCompatibilityWarning": "این پیکربندی از راهکار جایگزین ارائه‌دهنده Azure برای فهرست‌های مدل سفارشی استفاده می‌کند. با VS Code ≥ 1.109 و GitHub Copilot Chat ≥ v0.37 آزمایش شده است. به‌روزرسانی‌های آینده افزونه ممکن است این رفتار را تغییر دهند.", @@ -3177,7 +3177,7 @@ "copilotPasteInto": "چسباندن در:", "copilotReloadInstruction": "سپس VS Code را مجدداً بارگیری کرده و کلید API را در اعلان ورودی تنظیم کنید.", "wireApiChatCompletions": "تکمیل چت (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiResponses": "API پاسخها (/responses)", "cliproxyapiActionFailed": "عملیات ناموفق بود", "cliproxyapiActionSucceeded": "عملیات با موفقیت انجام شد", "cliproxyapiCheckUpdates": "بررسی به‌روزرسانی‌ها", @@ -3203,75 +3203,75 @@ "cliproxyapiVersion": "نسخه" }, "combos": { - "title": "Combos", - "description": "Create model combos with weighted routing and fallback support", + "title": "ترکیبها", + "description": "ایجاد ترکیبهای مدل با مسیریابی وزندار و پشتیبانی از جایگزین", "autoCatalogTitle": "کاتالوگ مسیریابی خودکار", "autoCatalogTemplateCount": "الگوهای {count}", "autoCatalogDescription": "ترکیب های خودکار/* داخلی به صورت پویا از ارائه دهندگان متصل حل می شوند. از هر یک از این شناسه ها به عنوان فیلد مدل استفاده کنید — نیازی به تنظیم نیست.", "autoCatalogExpand": "کاتالوگ مسیریابی خودکار را گسترش دهید", "autoCatalogCollapse": "جمع کردن کاتالوگ مسیریابی خودکار", - "createCombo": "Create Combo", - "editCombo": "Edit Combo", - "deleteCombo": "Delete Combo", - "noModels": "No models", - "noModelsYet": "No models added yet", - "addModel": "Add Model", - "addModelToCombo": "Add Model to Combo", - "routingStrategy": "Routing Strategy", - "maxRetries": "Max Retries", - "timeout": "Timeout (ms)", - "healthcheck": "Healthcheck", - "priority": "Priority", - "fallback": "Fallback", + "createCombo": "ایجاد ترکیب", + "editCombo": "ویرایش ترکیب", + "deleteCombo": "حذف ترکیب", + "noModels": "بدون مدل", + "noModelsYet": "هنوز مدلی اضافه نشده است", + "addModel": "افزودن مدل", + "addModelToCombo": "افزودن مدل به ترکیب", + "routingStrategy": "راهبرد مسیریابی", + "maxRetries": "حداکثر تلاش مجدد", + "timeout": "مهلت زمانی (میلیثانیه)", + "healthcheck": "بررسی سلامت", + "priority": "اولویت", + "fallback": "جایگزین", "roundRobin": "Round Robin", - "random": "Random", - "leastLatency": "Least Latency", - "comboName": "Combo Name", + "random": "تصادفی", + "leastLatency": "کمترین تأخیر", + "comboName": "نام ترکیب", "comboNamePlaceholder": "my-combo", "comboDescription": "توضیحات", "comboDescriptionPlaceholder": "یادداشت اختیاری برای توصیف این ترکیب", - "deleteConfirm": "Delete this combo?", - "noCombosYet": "No combos yet", - "comboCreated": "Combo created successfully", - "comboUpdated": "Combo updated successfully", - "comboDeleted": "Combo deleted", - "failedCreate": "Failed to create combo", - "failedUpdate": "Failed to update combo", - "errorCreating": "Error creating combo", - "errorUpdating": "Error updating combo", - "errorDeleting": "Error deleting combo", - "testFailed": "Test request failed", - "failedToggle": "Failed to toggle combo", - "testResults": "Test Results — {name}", - "resolvedBy": "Resolved by:", - "more": "+{count} more", - "reqs": "reqs", - "success": "success", - "proxyConfigured": "Proxy configured", - "copyComboName": "Copy combo name", - "enableCombo": "Enable combo", - "disableCombo": "Disable combo", - "testCombo": "Test combo", - "duplicate": "Duplicate", - "proxyConfig": "Proxy configuration", - "nameRequired": "Name is required", - "nameInvalid": "Only letters, numbers, -, _, / and . allowed", - "nameHint": "Letters, numbers, -, _, / and . allowed", - "priorityDesc": "Sequential fallback: tries model 1 first, then 2, etc.", - "weightedDesc": "Distributes traffic by weight percentage with fallback", - "roundRobinDesc": "Circular distribution: each request goes to the next model in rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", - "randomDesc": "Uniform random selection, then fallback to remaining models", - "leastUsedDesc": "Picks the model with fewest requests, balancing load over time", - "costOptimizedDesc": "Routes to the cheapest model first based on pricing", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "deleteConfirm": "این ترکیب حذف شود؟", + "noCombosYet": "هنوز ترکیبی وجود ندارد", + "comboCreated": "ترکیب با موفقیت ایجاد شد", + "comboUpdated": "ترکیب با موفقیت بهروزرسانی شد", + "comboDeleted": "ترکیب حذف شد", + "failedCreate": "ایجاد ترکیب ناموفق بود", + "failedUpdate": "بهروزرسانی ترکیب ناموفق بود", + "errorCreating": "خطا در ایجاد ترکیب", + "errorUpdating": "خطا در بهروزرسانی ترکیب", + "errorDeleting": "خطا در حذف ترکیب", + "testFailed": "درخواست آزمایشی ناموفق بود", + "failedToggle": "تغییر وضعیت ترکیب ناموفق بود", + "testResults": "نتایج آزمایش — {name}", + "resolvedBy": "حلشده توسط:", + "more": "و {count} مورد دیگر", + "reqs": "درخواستها", + "success": "موفقیت", + "proxyConfigured": "پروکسی پیکربندی شد", + "copyComboName": "کپی نام ترکیب", + "enableCombo": "فعالکردن ترکیب", + "disableCombo": "غیرفعالکردن ترکیب", + "testCombo": "آزمایش ترکیب", + "duplicate": "تکثیر", + "proxyConfig": "پیکربندی پروکسی", + "nameRequired": "نام الزامی است", + "nameInvalid": "فقط حروف، اعداد و نویسههای -، _، / و . مجاز هستند", + "nameHint": "حروف، اعداد و نویسههای -، _، / و . مجاز هستند", + "priorityDesc": "بازگشت ترتیبی: ابتدا مدل ۱، سپس ۲ و به همین ترتیب امتحان میشود.", + "weightedDesc": "ترافیک را بر اساس درصد وزن توزیع میکند و در صورت نیاز به مدل جایگزین میرود", + "roundRobinDesc": "توزیع چرخشی: هر درخواست به مدل بعدی در چرخه ارسال میشود", + "contextRelay": "رله زمینه", + "contextRelayDesc": "هنگام جابهجایی حسابها، پیوستگی نشست را با خلاصههای انتقال حفظ میکند", + "randomDesc": "انتخاب تصادفی یکنواخت و سپس بازگشت به مدلهای باقیمانده", + "leastUsedDesc": "مدلی را با کمترین تعداد درخواست انتخاب میکند و بار را در طول زمان متعادل نگه میدارد", + "costOptimizedDesc": "بر اساس قیمتگذاری، ابتدا درخواست را به ارزانترین مدل هدایت میکند", + "cacheOptimizedDesc": "هر پیشوند قابلاستفاده مجددِ پرامپت را همواره به همان حساب ارائهدهنده هدایت میکند", + "resetAware": "RR آگاه از بازنشانی", "resetAwareDesc": "سهمیه باقیمانده را در برابر 5 ساعت و بازنشانی های هفتگی متعادل می کند، سپس امتیازات مشابه را به صورت دور برگشتی به دست می آورد.", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "وزندهی بر اساس سهمیه", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "تصادفی سختگیرانه", + "strictRandomDesc": "دستهٔ بُرخورده — پیش از بُرزدن مجدد، از هر مدل یکبار استفاده میکند", "fusion": "تلفیق", "fusionDesc": "پرامپت را به‌صورت موازی به تمام مدل‌های پنل ارسال می‌کند، سپس یک مدل داور یک پاسخ نهایی را ترکیب می‌کند", "fusionJudgeModel": "مدل داور", @@ -3282,27 +3282,27 @@ "fusionStragglerGraceMsHelp": "مدت زمان انتظار برای مدل‌های کند پنل پس از رسیدن به حد نصاب (پیش‌فرض ۸۰۰۰).", "fusionPanelHardTimeoutMs": "مهلت زمانی قطعی پنل (میلی‌ثانیه)", "fusionPanelHardTimeoutMsHelp": "سقف مطلق برای اینکه یک مدل متوقف‌شده نتواند کل پنل را معطل کند (پیش‌فرض ۹۰۰۰۰).", - "models": "Models", - "autoBalance": "Auto-balance", - "advancedSettings": "Advanced Settings", - "retryDelay": "Retry Delay (ms)", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", - "advancedHint": "Leave empty to use global defaults. These override per-provider settings.", + "models": "مدلها", + "autoBalance": "تعادل خودکار", + "advancedSettings": "تنظیمات پیشرفته", + "retryDelay": "تأخیر تلاش مجدد (ms)", + "concurrencyPerModel": "همزمانی / مدل", + "queueTimeout": "مهلت انتظار صف (ms)", + "contextRelayHandoffThreshold": "آستانه انتقال", + "contextRelayHandoffThresholdHelp": "وقتی مصرف سهمیه به این آستانه برسد، OmniRoute پیش از تمامشدن ظرفیت حساب فعال، یک خلاصه ساختاریافته برای انتقال ایجاد میکند.", + "contextRelayMaxMessages": "حداکثر پیامها برای خلاصه", + "contextRelayMaxMessagesHelp": "مقدار تاریخچه اخیر که در خلاصه رله فشرده میشود را محدود میکند.", + "contextRelaySummaryModel": "مدل خلاصهسازی", + "contextRelaySummaryModelHelp": "مدل جایگزین اختیاری که فقط برای ایجاد خلاصه انتقال استفاده میشود. برای استفاده مجدد از مدل ترکیب فعال، آن را خالی بگذارید.", + "contextRelayProviderNote": "رله زمینه در حال حاضر برای جابهجایی حسابهای Codex انتقال ایجاد میکند. برای بهترین پیوستگی، آن را با چند حساب از یک ارائهدهنده بهکار ببرید.", + "advancedHint": "برای استفاده از پیشفرضهای سراسری، خالی بگذارید. این موارد تنظیمات هر ارائهدهنده را بازنویسی میکنند.", "failoverBeforeRetry": "شکست قبل از تلاش مجدد", "maxSetRetries": "حداکثر مجموعه دوباره تلاش می کند", "setRetryDelayMs": "تنظیم تأخیر تلاش مجدد (میلی‌ثانیه)", - "moveUp": "Move up", - "moveDown": "Move down", - "removeModel": "Remove", - "saving": "Saving...", + "moveUp": "انتقال به بالا", + "moveDown": "انتقال به پایین", + "removeModel": "حذف", + "saving": "در حال ذخیره...", "liveNoProviders": "هنوز ارائه‌دهنده‌ای مشاهده نشده است.", "liveFleetDataHint": "داده‌های ناوگان از طریق رویدادهای زنده کمبو دریافت می‌شوند.", "liveActiveCount": "فعال ({count})", @@ -3342,43 +3342,43 @@ "playgroundEmptyHint": "یک ترکیب را انتخاب کرده و روی شبیه‌سازی مسیر کلیک کنید تا مسیر مسیریابی را مشاهده کنید.", "playgroundNoCombosYet": "هنوز هیچ ترکیبی پیکربندی نشده است.", "playgroundCreateFirst": "ابتدا یکی ایجاد کنید", - "weighted": "Weighted", - "leastUsed": "Least-Used", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "weighted": "وزندار", + "leastUsed": "کماستفادهترین", + "costOpt": "بهینهسازی هزینه", + "strategyGuideTitle": "نحوه استفاده از این راهبرد", + "strategyGuideWhen": "زمان مناسب استفاده", + "strategyGuideAvoid": "زمان نامناسب استفاده", + "strategyGuideExample": "مثال", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "یک مدل ترجیحی دارید و فقط در صورت خرابی میخواهید از مدل جایگزین استفاده کنید.", + "avoid": "به توزیع درخواستها میان مدلها نیاز دارید.", + "example": "مدل اصلی کدنویسی با یک مدل پشتیبان ارزانتر برای زمانهای قطعی." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "به تقسیم کنترلشده ترافیک میان مدلها نیاز دارید.", + "avoid": "نمیتوانید وزنهای دقیق را در طول زمان حفظ کنید.", + "example": "عرضه تدریجی با ۸۰٪ مدل پایدار + ۲۰٪ مدل آزمایشی." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "توزیعی قابل پیشبینی و یکنواخت میخواهید.", + "avoid": "مدلها از نظر تأخیر یا هزینه تفاوت زیادی دارند.", + "example": "استفاده از یک مدل یکسان در چند حساب برای توزیع توان عملیاتی." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "توزیع ساده با حداقل پیکربندی میخواهید.", + "avoid": "به تضمینهای سختگیرانه برای ترافیک نیاز دارید.", + "example": "نمونهسازی سریع با مدلهای معادل." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "متعادلسازی تطبیقی بر اساس تقاضای لحظهای میخواهید.", + "avoid": "ترافیک آنقدر کم است که متعادلسازی بر اساس میزان استفاده سودی ندارد.", + "example": "بارهای کاری ترکیبی که در آنها یک مدل اغلب بیشازحد بارگذاری میشود." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "کاهش هزینه مهمترین اولویت شماست.", + "avoid": "دادههای قیمتگذاری موجود نیست یا قدیمی است.", + "example": "کارهای پسزمینه یا دستهای که در آنها هزینه کمتر ترجیح داده میشود." }, "reset-aware": { "when": "شما با استفاده از تله متری سهمیه ای و پنجره های بازنشانی مختلف در چندین حساب مسیریابی می کنید.", @@ -3386,104 +3386,104 @@ "example": "بازنشانی حساب هفتگی 60 درصدی فردا را به بازنشانی 80 درصدی حساب بعدا ترجیح دهید." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "زمانی استفاده کنید که توزیعی کاملاً یکنواخت میخواهید — هر مدل پیش از تکرار یک بار استفاده میشود.", + "avoid": "زمانی استفاده نکنید که مدلها از نظر کیفیت یا تأخیر متفاوتاند و ترتیب اهمیت دارد.", + "example": "مثال: چند حساب از یک مدل یکسان برای توزیع یکنواخت استفاده." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "زمانی استفاده کنید که انتخاب با تأخیر کم را با استفاده از الگوریتم Power-of-Two-Choices میخواهید.", + "avoid": "برای ترکیبهای کوچک با ۲ مدل یا کمتر استفاده نکنید — نسبت به روش round-robin مزیتی ندارد.", + "example": "مثال: استنتاج با توان عملیاتی بالا در بیش از ۴ نقطه پایانی معادل مدل." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "زمانی استفاده کنید که نشستهای طولانی باید بدون از دست دادن زمینه کاری، در برابر چرخش حسابها دوام بیاورند.", + "avoid": "زمانی استفاده نکنید که تعویض حساب بهندرت رخ میدهد یا درخواستهای خلاصهسازی اضافی نمیخواهید.", + "example": "مثال: نشستهای Codex که نزدیک به اتمام سهمیه، میان چند حساب جابهجا میشوند." }, "fill-first": { - "when": "Use when you want to fully exhaust one provider's quota before moving to the next.", - "avoid": "Avoid when you need request-level load balancing across providers.", - "example": "Example: Use all $200 Deepgram credits before falling back to Groq." + "when": "زمانی استفاده کنید که میخواهید سهمیه یک ارائهدهنده را پیش از رفتن به ارائهدهنده بعدی کاملاً مصرف کنید.", + "avoid": "زمانی استفاده نکنید که به متعادلسازی بار در سطح درخواست میان ارائهدهندگان نیاز دارید.", + "example": "مثال: پیش از استفاده از Groq بهعنوان جایگزین، همه 200$ اعتبار Deepgram را مصرف کنید." }, "auto": { - "when": "Use when you need multi-factor scoring routing based on cost, latency, and quality.", - "avoid": "Avoid when you need strict priority ordering or historical persistence.", - "example": "Example: Balance requests across models with different strengths." + "when": "زمانی استفاده کنید که به مسیریابی مبتنی بر امتیازدهی چندعاملی بر اساس هزینه، تأخیر و کیفیت نیاز دارید.", + "avoid": "وقتی به ترتیب اولویت سختگیرانه یا نگهداری سوابق تاریخی نیاز دارید، استفاده نکنید.", + "example": "مثال: درخواستها را میان مدلهایی با قابلیتهای متفاوت متعادل کنید." }, "lkgp": { - "when": "Use when you want to route based on historical success rates and performance.", - "avoid": "Avoid when historical data is limited or unreliable.", - "example": "Example: Route to models with a good track record on specific tasks." + "when": "وقتی میخواهید مسیریابی را بر اساس نرخ موفقیت و عملکرد گذشته انجام دهید، استفاده کنید.", + "avoid": "وقتی دادههای تاریخی محدود یا غیرقابلاعتماد هستند، استفاده نکنید.", + "example": "مثال: درخواستها را برای وظایف مشخص به مدلهایی با سابقه عملکرد خوب هدایت کنید." }, "context-optimized": { - "when": "Use when you need to optimize context window usage across models.", - "avoid": "Avoid when models have similar context lengths or tasks are simple.", - "example": "Example: Distribute long conversations across models with larger context windows." + "when": "وقتی میخواهید استفاده از پنجره زمینه را میان مدلها بهینه کنید، استفاده کنید.", + "avoid": "وقتی مدلها طول زمینه مشابهی دارند یا وظایف سادهاند، استفاده نکنید.", + "example": "مثال: مکالمات طولانی را میان مدلهایی با پنجرههای زمینه بزرگتر توزیع کنید." } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "تعداد تلاشهای مجدد پیش از ناموفق اعلام شدن درخواست.", + "retryDelay": "زمان انتظار اولیه میان تلاشهای مجدد. مقادیر بالاتر فشار ناشی از درخواستهای ناگهانی را کاهش میدهند.", + "timeout": "حداکثر مدتزمان درخواست پیش از لغو شدن.", + "healthcheck": "مدلها/ارائهدهندگان ناسالم را از تصمیمهای مسیریابی کنار میگذارد.", + "concurrencyPerModel": "حداکثر تعداد درخواستهای همزمان مجاز برای هر مدل در روش نوبتی.", + "queueTimeout": "مدتی که یک درخواست میتواند پیش از پایان مهلت در صف منتظر بماند.", "failoverBeforeRetry": "هنگامی که فعال باشد، هر خطای بالادستی باعث شکست فوری به هدف ترکیبی بعدی می‌شود، و از همه تلاش‌های مجدد و نشانی‌های اینترنتی برگشتی صرفنظر می‌کند.", "maxSetRetries": "تعداد دفعاتی که در صورت شکست هر هدف، مجموعه کامل هدف را دوباره امتحان کنید. 0 = بدون تلاش مجدد در سطح مجموعه.", "setRetryDelayMs": "تأخیر بین تلاش‌های مجدد در سطح مجموعه، به مشکلات گذرا زمان می‌دهد تا حل شوند.", "disableSessionStickiness": "چرخش به یک اتصال متفاوت در هر درخواست به جای پین کردن کل مکالمه به یک اتصال بر اساس هش پیام اول. پیش‌فرض سراسری را بازنویسی می‌کند. برای حفظ موارد اصابت prompt-cache در گفتگوهای چندمرحله‌ای، روی Inherit بگذارید." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "قالبهای آماده", + "templatesDescription": "یک پروفایل اولیه اعمال کنید، سپس مدلها و پیکربندی را تنظیم کنید.", + "templateApply": "اعمال قالب", + "templateHighAvailability": "دسترسپذیری بالا", + "templateHighAvailabilityDesc": "مسیریابی اولویتدار با بررسی سلامت و تلاشهای مجدد ایمن.", + "templateCostSaver": "صرفهجویی در هزینه", + "templateCostSaverDesc": "مسیریابی بهینهشده از نظر هزینه برای بارهای کاری با اولویت بودجه.", + "templateBalanced": "بار متعادل", + "templateBalancedDesc": "مسیریابی بر اساس کمترین استفاده برای توزیع تقاضا در طول زمان.", + "usageGuideHide": "پنهان کردن", + "usageGuideDontShowAgain": "دیگر نشان نده", + "usageGuideShow": "نمایش راهنما", + "quickTestTitle": "ترکیب آماده اعتبارسنجی است", + "quickTestDescription": "اکنون آزمایشی اجرا کنید تا رفتار مسیر جایگزین و تأخیر را تأیید کنید.", + "testNow": "اکنون آزمایش کنید", + "pricingCoverage": "پوشش قیمتگذاری", + "pricingCoverageHint": "مسیریابی بهینهشده از نظر هزینه زمانی بهترین عملکرد را دارد که قیمتگذاری همه مدلهای ترکیب موجود باشد.", + "pricingAvailable": "قیمتگذاری موجود است", + "pricingMissing": "بدون قیمتگذاری", + "pricingAvailableShort": "دارای قیمت", + "pricingMissingShort": "بدون قیمت", "fallbackOnlyOnQuotaExhaustion": "فقط در صورت تمام شدن سهم پیش بروید", "fallbackOnlyOnQuotaExhaustionShort": "فقط بازگشت به سهمیه", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", - "readinessCheckPricing": "Pricing data is available", - "readinessCheckPricingOptional": "Pricing rule not required", - "saveBlockedTitle": "Save is blocked until the following items are fixed:", - "saveBlockName": "Define a combo name.", - "saveBlockModels": "Add at least one model.", - "saveBlockWeighted": "Set weights to 100% (current: {total}%).", - "saveBlockPricing": "Add pricing for at least one model or choose a different strategy.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "warningRoundRobinSingleModel": "روش نوبتی با حداقل ۲ مدل بیشترین کارایی را دارد.", + "warningCostOptimizedPartialPricing": "تنها {priced} مدل از {total} مدل دارای قیمتگذاری هستند. ممکن است مسیریابی فقط تا حدی هزینهمحور باشد.", + "warningCostOptimizedNoPricing": "هیچ داده قیمتگذاری برای این ترکیب یافت نشد. مسیریابی بهینهشده از نظر هزینه ممکن است نتایج غیرمنتظرهای داشته باشد.", + "filterAll": "همه", + "filterIntelligent": "هوشمند", + "filterDeterministic": "قطعی", + "filterEmptyTitle": "هیچ ترکیبی با این فیلتر راهبرد مطابقت ندارد.", + "filterEmptyIntelligentDescription": "برای نمایش دادهها در داشبورد مسیریابی هوشمند، یک ترکیب خودکار یا LKGP ایجاد کنید.", + "filterEmptyDeterministicDescription": "در حال حاضر فقط ترکیبهای خودکار و LKGP وجود دارند. به «همه» برگردید یا یک ترکیب قطعی ایجاد کنید.", + "readinessTitle": "برای ذخیره آمادهاید؟", + "readinessDescription": "پیش از ایجاد یا بهروزرسانی این ترکیب، فهرست بررسی را مرور کنید.", + "readinessCheckName": "نام ترکیب معتبر است", + "readinessCheckModels": "حداقل یک مدل انتخاب شده است", + "readinessCheckWeights": "مجموع وزنها ۱۰۰٪ است", + "readinessCheckWeightsOptional": "قانون وزندهی لازم نیست", + "readinessCheckPricing": "دادههای قیمتگذاری موجود است", + "readinessCheckPricingOptional": "قانون قیمتگذاری لازم نیست", + "saveBlockedTitle": "تا زمانی که موارد زیر برطرف نشوند، امکان ذخیره وجود ندارد:", + "saveBlockName": "یک نام برای ترکیب تعیین کنید.", + "saveBlockModels": "حداقل یک مدل اضافه کنید.", + "saveBlockWeighted": "وزنها را روی ۱۰۰٪ تنظیم کنید (مقدار فعلی: {total}٪).", + "saveBlockPricing": "برای حداقل یک مدل، قیمتگذاری اضافه کنید یا راهبرد دیگری را انتخاب کنید.", + "recommendationsLabel": "پیکربندی پیشنهادی", + "applyRecommendations": "اعمال پیشنهادها", + "recommendationsUpdated": "پیشنهادها برای {strategy} بهروزرسانی شدند.", + "recommendationsApplied": "پیشنهادها روی این ترکیب اعمال شدند.", + "intelligentPanelTitle": "داشبورد مسیریابی هوشمند", + "intelligentPanelDesc": "امتیازدهی بلادرنگ و وضعیت سلامت این ترکیب مسیریابی خودکار.", "configOnlyStatus": "نمای پیکربندی", "configOnlyHint": "این پنل فقط ورودی‌های مسیریابی را نشان می‌دهد. وضعیت زنده مدارشکن در صفحه سلامت در دسترس است.", "routingInputs": "ورودی‌های مسیریابی", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "پیشوند ارائه‌دهنده ناشناخته است.", "builderDynamicAccountShort": "حساب پویا", "builderNeedValidName": "قبل از ادامه، یک نام معتبر برای ترکیب تعریف کنید.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "نمای کلی وضعیت", + "normalOperation": "عملکرد عادی", + "allProvidersHealthy": "ارائهدهندگان، شرایط سالم مسیریابی را گزارش میکنند.", + "incidentMode": "حالت رخداد", + "highCircuitBreakerRate": "نرخ بالای فعالشدن مدارشکن شناسایی شد.", + "activeModePack": "بسته حالت فعال", + "modePackUpdated": "بسته حالت به {pack} بهروزرسانی شد.", + "modePackHint": "برای جهتدهی به موتور مسیریابی بدون بازسازی ترکیب، تنظیمات ازپیشتعیینشده را تغییر دهید.", + "providerScores": "امتیازهای ارائهدهندگان", + "allProvidersEvaluated": "هیچ مجموعه نامزدی پیکربندی نشده است. همه ارائهدهندگان فعال هنگام اجرا ارزیابی میشوند.", + "excludedProviders": "ارائهدهندگان مستثناشده", + "excludedProvidersHint": "ارائهدهندگانی که مدارشکن آنها OPEN است، موقتاً از مسیریابی کنار گذاشته میشوند.", + "noExcludedProviders": "در حال حاضر هیچ ارائهدهندهای مستثنا نشده است.", + "cooldownMinutes": "زمان بازیابی: {minutes} دقیقه", + "builderIntelligentTitle": "پیکربندی مسیریابی هوشمند", + "builderIntelligentDesc": "موتور امتیازدهی چندعاملی را برای این ترکیب مسیریابی خودکار پیکربندی کنید.", + "candidatePoolLabel": "مجموعه نامزدها", + "candidatePoolHint": "ارائهدهندگانی را که این موتور باید ارزیابی کند انتخاب کنید. برای استفاده از همه ارائهدهندگان فعال، این قسمت را خالی بگذارید.", + "candidatePoolEmpty": "هنوز هیچ ارائهدهنده فعالی در دسترس نیست.", + "candidatePoolAllProviders": "همه ارائهدهندگان", + "modePackLabel": "بسته حالت", + "routerStrategyLabel": "راهبرد مسیریاب", + "strategyRules": "قوانین (امتیازدهی ۶ عاملی)", + "explorationRateLabel": "نرخ کاوش", + "explorationRateHint": "{percent}٪ از درخواستها میتوانند ارائهدهندگان غیربهینه را بررسی کنند.", + "budgetCapLabel": "سقف بودجه (USD / درخواست)", + "budgetCapPlaceholder": "بدون محدودیت", + "advancedWeightsTitle": "پیشرفته: وزنهای امتیازدهی", "nestedComboFlatten": "مسطح‌سازی ترکیب‌های تو در تو", "nestedComboExecute": "اجرای ترکیب‌های تو در تو به عنوان هدف", "effectiveRoutingShare": "سهم موثر مسیریابی (وزن ÷ مجموع)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "سهمیه", + "weightHealth": "سلامت", + "weightCostInv": "هزینه", + "weightLatencyInv": "تأخیر", + "weightTaskFit": "تناسب با وظیفه", + "weightStability": "پایداری", + "weightTierPriority": "سطح", + "weightCacheAffinity": "تمایل به اصابت کش", "weightSessionAvailability": "دسترس‌پذیری جلسه", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "پیکربندی مسیریابی هوشمند", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "خط مبنای ایمن در برابر خرابی", + "description": "از یک مدل اصلی استفاده کنید و زنجیره جایگزین را کوتاه و قابلاعتماد نگه دارید.", + "tip1": "قابلاعتمادترین مدل خود را در اولویت قرار دهید.", + "tip2": "۱ تا ۲ مدل پشتیبان با کیفیت مشابه نگه دارید.", + "tip3": "برای مدیریت اختلالهای موقت ارائهدهنده، از تلاش مجدد ایمن استفاده کنید." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "تقسیم کنترلشده ترافیک", + "description": "برای عرضههای آزمایشی و مهاجرت تدریجی بین مدلها عالی است.", + "tip1": "با یک تقسیم محافظهکارانه مانند ۹۰/۱۰ شروع کنید.", + "tip2": "مجموع را روی ۱۰۰٪ نگه دارید و پس از تغییرات، توازن را بهطور خودکار برقرار کنید.", + "tip3": "پیش از افزایش سهم مدل آزمایشی، میزان موفقیت و تأخیر را پایش کنید." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "توزیع قابلپیشبینی بار", + "description": "بهترین گزینه زمانی است که مدلها معادلاند و به توزیع روان نیاز دارید.", + "tip1": "از حداقل ۲ مدل استفاده کنید.", + "tip2": "برای جلوگیری از اضافهبار ناگهانی، محدودیتهای همزمانی را تنظیم کنید.", + "tip3": "برای شکست سریع در حالت اشباع، مهلت زمانی صف را تنظیم کنید." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "توزیع سریع با راهاندازی کم", + "description": "زمانی استفاده کنید که به توزیع ساده و بدون تضمینهای سختگیرانه نیاز دارید.", + "tip1": "از مدلهایی با پروفایل تأخیر مشابه استفاده کنید.", + "tip2": "تلاشهای مجدد را فعال نگه دارید تا خطاهای تصادفی مدیریت شوند.", + "tip3": "این گزینه را برای آزمایش ترجیح دهید، نه برای SLAهای سختگیرانه." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "متعادلسازی تطبیقی", + "description": "برای کاهش نقاط پرترافیک در طول زمان، درخواستها را به مدلهای کماستفادهتر هدایت میکند.", + "tip1": "در ترافیک پیوسته عملکرد بهتری دارد.", + "tip2": "برای متعادلسازی ایمنتر، آن را با بررسیهای سلامت ترکیب کنید.", + "tip3": "برای تأیید بهبود توزیع، میزان استفاده از هر مدل را ردیابی کنید." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "مسیریابی با اولویت بودجه", + "description": "در صورت وجود فرادادهٔ قیمتگذاری، درخواستها را به مدلهای کمهزینهتر هدایت میکند.", + "tip1": "از پوشش اطلاعات قیمتگذاری برای همهٔ مدلهای انتخابشده اطمینان حاصل کنید.", + "tip2": "برای درخواستهای دشوار، یک گزینهٔ جایگزین باکیفیت حفظ کنید.", + "tip3": "برای کارهای دستهای یا پسزمینهای که هزینه شاخص کلیدی عملکرد اصلی است، استفاده کنید." }, "reset-aware": { "title": "چرخش حساب بازنشانی", @@ -3597,155 +3597,155 @@ "tip3": "نوار کراوات را کوچک نگه دارید تا حساب های معادل همچنان به طور عادلانه بچرخند." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "توزیع با بُر زدن دسته", + "description": "پیش از بُر زدن مجدد، هر مدل در هر چرخه دقیقاً یکبار استفاده میشود.", + "tip1": "برای توزیع معنادار، دستکم از ۲ مدل استفاده کنید.", + "tip2": "با مدلهایی دارای عملکرد معادل، بهترین نتیجه را میدهد.", + "tip3": "برای متعادلسازی بار میان چند حساب API ایدهآل است." }, "fill-first": { - "description": "Exhaust provider quotas sequentially before falling back.", - "tip1": "Use for quota-based routing with clear fallback chains.", - "tip2": "Set quotas accurately to avoid premature fallback.", - "tip3": "Works best with providers offering free tiers or credit buckets.", - "title": "Quota Exhaustion" + "description": "پیش از رفتن به گزینهٔ جایگزین، سهمیههای ارائهدهندگان را بهترتیب به پایان میرساند.", + "tip1": "برای مسیریابی مبتنی بر سهمیه با زنجیرههای جایگزین مشخص استفاده کنید.", + "tip2": "برای جلوگیری از جایگزینی زودهنگام، سهمیهها را دقیق تنظیم کنید.", + "tip3": "با ارائهدهندگانی که سطوح رایگان یا بستههای اعتباری ارائه میکنند، بهترین عملکرد را دارد.", + "title": "اتمام سهمیه" }, "auto": { - "description": "Route based on real-time scoring for cost, latency, quality, and health.", - "tip1": "Let the engine balance multiple factors automatically.", - "tip2": "Monitor which factors drive routing decisions in logs.", - "tip3": "Use for complex workloads where no single factor dominates.", - "title": "Multi-Factor Optimization" + "description": "مسیریابی را بر اساس امتیازدهی بلادرنگِ هزینه، تأخیر، کیفیت و سلامت انجام میدهد.", + "tip1": "اجازه دهید موتور چندین عامل را بهطور خودکار متعادل کند.", + "tip2": "در گزارشها بررسی کنید کدام عوامل بر تصمیمهای مسیریابی اثر میگذارند.", + "tip3": "برای بارهای کاری پیچیدهای که هیچ عامل واحدی در آنها غالب نیست، استفاده کنید.", + "title": "بهینهسازی چندعاملی" }, "lkgp": { - "description": "Route based on historical performance and success patterns.", - "tip1": "Requires sufficient request history for accurate predictions.", - "tip2": "Good for workloads with consistent model performance patterns.", - "tip3": "Monitor prediction accuracy and adjust weights as needed.", - "title": "History-Based Routing" + "description": "مسیریابی را بر اساس عملکرد تاریخی و الگوهای موفقیت انجام میدهد.", + "tip1": "برای پیشبینی دقیق، به سابقهٔ کافی از درخواستها نیاز دارد.", + "tip2": "برای بارهای کاری دارای الگوهای عملکردی ثابت مدلها مناسب است.", + "tip3": "دقت پیشبینی را پایش کنید و وزنها را در صورت نیاز تنظیم کنید.", + "title": "مسیریابی مبتنی بر سابقه" }, "context-optimized": { - "description": "Optimize routing based on context window usage and token efficiency.", - "tip1": "Route long conversations to models with larger context windows.", - "tip2": "Monitor context utilization to avoid token waste.", - "tip3": "Best for conversational AI requiring extensive context retention.", - "title": "Context Optimization" + "description": "مسیریابی را بر اساس میزان استفاده از پنجرهٔ زمینه و کارایی توکن بهینه میکند.", + "tip1": "گفتوگوهای طولانی را به مدلهایی با پنجرهٔ زمینهٔ بزرگتر هدایت کنید.", + "tip2": "برای جلوگیری از هدررفت توکن، میزان استفاده از زمینه را پایش کنید.", + "tip3": "برای هوش مصنوعی مکالمهای که به حفظ گستردهٔ زمینه نیاز دارد، بهترین گزینه است.", + "title": "بهینهسازی زمینه" }, "context-relay": { - "description": "Best when account rotation is expected and the next account must inherit a simplified task summary.", - "tip1": "Use with providers rotating accounts for the same model family.", - "tip2": "Set handoff threshold below hard quota cutoffs for summary generation time.", - "tip3": "Only set a dedicated summary model if the primary is too expensive or unstable.", - "title": "Session Continuity Priority" + "description": "زمانی بهترین گزینه است که چرخش حسابها مورد انتظار باشد و حساب بعدی باید خلاصهای سادهشده از وظیفه را به ارث ببرد.", + "tip1": "با ارائهدهندگانی استفاده کنید که حسابها را برای یک خانوادهٔ مدل یکسان بهصورت چرخشی عوض میکنند.", + "tip2": "برای فراهمکردن زمان تولید خلاصه، آستانهٔ تحویل را پایینتر از سقف قطعی سهمیه تنظیم کنید.", + "tip3": "تنها زمانی یک مدل اختصاصی برای خلاصهسازی تعیین کنید که مدل اصلی بیشازحد گران یا ناپایدار باشد.", + "title": "اولویت تداوم نشست" }, "p2c": { - "description": "Route to the provider with the lowest current load based on real-time metrics.", - "tip1": "Monitor provider health metrics for accurate load assessment.", - "tip2": "Works best with homogeneous provider pools.", - "tip3": "Adjust sensitivity to avoid oscillation during traffic spikes.", - "title": "Power of Two Choices" + "description": "هدایت به ارائهدهندهای با کمترین بار فعلی بر اساس معیارهای بلادرنگ.", + "tip1": "برای ارزیابی دقیق بار، معیارهای سلامت ارائهدهنده را پایش کنید.", + "tip2": "با مجموعههای همگن ارائهدهندگان بهترین عملکرد را دارد.", + "tip3": "برای جلوگیری از نوسان هنگام افزایش ناگهانی ترافیک، حساسیت را تنظیم کنید.", + "title": "قدرت دو انتخاب" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", - "auto": "Intelligent Auto", - "autoDesc": "Self-healing smart routing pool with multi-factor scoring", - "lkgp": "LKGP Mode", - "lkgpDesc": "Prioritizes the last provider that successfully completed a request", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "templateFreeStack": "پشته رایگان ($0)", + "templateFreeStackDesc": "توزیع نوبتی میان همه ارائهدهندگان رایگان: Kiro (Claude)، Qoder (5 مدل)، Qwen (4 مدل). بدون هزینه و با کدنویسی بیوقفه.", + "auto": "خودکار هوشمند", + "autoDesc": "مجموعه مسیریابی هوشمند خودترمیمشونده با امتیازدهی چندعاملی", + "lkgp": "حالت LKGP", + "lkgpDesc": "آخرین ارائهدهندهای را که درخواستی را با موفقیت تکمیل کرده است، در اولویت قرار میدهد", + "wizardGuideTitle": "شروع کار با ترکیبها", + "wizardGuideDesc": "برای مسیریابی هوشمند ترافیک هوش مصنوعی، ترکیبهای مدل ایجاد کنید", + "wizardGuideHint": "یا روی + ایجاد ترکیب در بالا کلیک کنید", + "createFirstCombo": "اولین ترکیب خود را ایجاد کنید", + "wizardStep1Title": "ترکیب خود را نامگذاری کنید", + "wizardStep1Desc": "برای شناسایی ترکیب خود در قوانین مسیریابی، نامی منحصربهفرد به آن بدهید", + "wizardStep2Title": "افزودن مدلها", + "wizardStep2Desc": "مدلهای هوش مصنوعی را انتخاب کرده و ترتیب اولویت جایگزینی آنها را تنظیم کنید", + "wizardStep3Title": "انتخاب راهبرد", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "بررسی و ذخیره", + "wizardStep4Desc": "پیکربندی خود را بررسی و ترکیب را فعال کنید", + "usageGuideInvokeTitle": "نحوه فراخوانی این ترکیب", + "usageGuideInvokeDesc": "نام دقیق ترکیب را بهعنوان مدل ارسال کنید، مثلاً model: \"my-combo\" (یا combo/my-combo).", + "usageGuideInvokeAutoNote": "auto و auto/* یک مسیریاب مجزای بدون نیاز به پیکربندی هستند که از ترکیبهای شما استفاده نمیکند (مگر اینکه نام یک ترکیب واقعاً auto باشد).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto یک محصول پولی واقعی OpenRouter ‏(Auto Best Available) است، نه نام مستعار OmniRoute — آن را از مسیر Settings → Routing → Hide paid models مستثنی کنید.", + "emailVisibilityStateOn": "روشن", + "emailVisibilityStateOff": "خاموش", + "reorderHandle": "برای تغییر ترتیب بکشید", + "failedReorder": "تغییر ترتیب مدلها ناموفق بود", + "builderFlowTitle": "جریان ساخت ترکیب", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "اصول اولیه", + "description": "نام و الگوی آغازین" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "مراحل", + "description": "انتخاب ارائهدهنده، مدل و حساب" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "راهبرد", + "description": "رفتار مسیریابی و تنظیمات پیشرفته" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "مسیریابی هوشمند", + "description": "مجموعه نامزدهای مسیریابی خودکار، تنظیمات ازپیشتعیینشده و امتیازدهی" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "بررسی", + "description": "اعتبارسنجی نهایی پیش از ذخیره" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", - "builderDuplicateExact": "This exact provider/model/account step is already in the combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", - "builderStagesDescription": "Complete each stage in order to define combos, build steps, select routing strategy, and review results.", - "builderStepsDescription": "Build each combo step in order: provider, model, then account. This allows reusing the same provider and model across different accounts.", - "selectProvider": "Select Provider", - "selectProviderPlaceholder": "Select a provider", - "selectModel": "Select Model", - "selectModelPlaceholder": "Select a provider first", - "selectAccount": "Select Account", - "selectComboToReference": "Select combo to reference", - "comboReference": "Combo Reference", - "addComboReference": "Add Combo Reference", - "addStepBeforeContinue": "Please add at least one step before proceeding to the next stage.", - "previewNextStep": "Preview next step", - "autoSelectAccount": "Automatically select account at runtime", - "modePackBalanced": "Balanced", - "modePackBudget": "Budget", - "modePackPerformance": "Performance", - "modePackCustom": "Custom", - "browseLegacyCatalog": "Browse legacy combo catalog", - "agentFeaturesTitle": "Agent Features", - "agentFeaturesDescription": "Enable advanced features for agents using this combo", + "builderStageVisited": "مرحله تکمیل شد", + "builderStageCurrent": "مرحله فعلی", + "builderStagePending": "در انتظار", + "builderStageLocked": "قفل است — ابتدا مرحله قبلی را تکمیل کنید", + "builderTitle": "ساخت یک ترکیب", + "builderBrowseCatalog": "مرور کاتالوگ", + "builderProvider": "ارائهدهنده", + "builderLoadingProviders": "در حال بارگذاری ارائهدهندگان...", + "builderSelectProvider": "انتخاب ارائهدهنده", + "builderModel": "مدل", + "builderSelectModel": "انتخاب مدل", + "builderProviderFirst": "ابتدا ارائهدهنده را انتخاب کنید", + "builderAccount": "حساب", + "builderPreview": "پیشنمایش", + "builderAddStep": "افزودن مرحله", + "builderDuplicateExact": "این مرحله با همین ارائهدهنده/مدل/حساب از قبل در ترکیب وجود دارد.", + "builderComboRef": "ارجاع ترکیب", + "builderAddComboRef": "افزودن ارجاع ترکیب", + "builderComboRefStep": "افزودن ارجاع ترکیب", + "builderPinnedAccount": "حساب سنجاقشده", + "builderLegacyEntry": "ورودی قدیمی", + "reviewName": "نام", + "reviewStrategy": "راهبرد", + "reviewSteps": "مراحل", + "reviewAccounts": "حسابها", + "reviewProviders": "ارائهدهندگان", + "reviewComboRefs": "ارجاعات ترکیب", + "reviewAdvanced": "تنظیمات پیشرفته", + "reviewAgentFlags": "پرچمهای عامل", + "reviewSequence": "توالی مدلها", + "reviewNoSteps": "هیچ مرحلهای پیکربندی نشده است", + "builderStagesDescription": "هر مرحله را بهترتیب تکمیل کنید تا ترکیبها را تعریف کنید، مراحل را بسازید، راهبرد مسیریابی را انتخاب کنید و نتایج را بررسی کنید.", + "builderStepsDescription": "هر مرحله ترکیب را بهترتیب بسازید: ارائهدهنده، مدل و سپس حساب. این کار امکان استفاده مجدد از همان ارائهدهنده و مدل را در حسابهای مختلف فراهم میکند.", + "selectProvider": "انتخاب ارائهدهنده", + "selectProviderPlaceholder": "یک ارائهدهنده انتخاب کنید", + "selectModel": "انتخاب مدل", + "selectModelPlaceholder": "ابتدا یک ارائهدهنده انتخاب کنید", + "selectAccount": "انتخاب حساب", + "selectComboToReference": "ترکیب موردنظر برای ارجاع را انتخاب کنید", + "comboReference": "مرجع ترکیب", + "addComboReference": "افزودن مرجع ترکیب", + "addStepBeforeContinue": "لطفاً پیش از رفتن به مرحله بعد، حداقل یک گام اضافه کنید.", + "previewNextStep": "پیشنمایش گام بعدی", + "autoSelectAccount": "انتخاب خودکار حساب هنگام اجرا", + "modePackBalanced": "متعادل", + "modePackBudget": "اقتصادی", + "modePackPerformance": "عملکرد", + "modePackCustom": "سفارشی", + "browseLegacyCatalog": "مرور کاتالوگ قدیمی ترکیبها", + "agentFeaturesTitle": "ویژگیهای عامل", + "agentFeaturesDescription": "فعالسازی ویژگیهای پیشرفته برای عاملهایی که از این ترکیب استفاده میکنند", "responseValidationTitle": "اعتبارسنجی پاسخ", "responseValidationHelp": "هنگامی که بدنه 200 OK در این بررسی‌ها ناموفق باشد (محتوای دستیار)، به هدف بعدی منتقل شود.", "responseValidationForbidden": "زیررشته‌های ممنوعه (یک مورد در هر خط)", @@ -3753,13 +3753,13 @@ "responseValidationMinLength": "حداقل طول محتوا (کاراکتر)", "responseValidationJsonPaths": "بررسی‌های JSON-path", "responseValidationAddCheck": "+ افزودن بررسی", - "agentFeaturesSystemMessageOverride": "Override system message", - "agentFeaturesSystemMessagePlaceholder": "You are an expert assistant...", - "agentFeaturesSystemMessageHint": "System message override for agents", + "agentFeaturesSystemMessageOverride": "بازنویسی پیام سیستم", + "agentFeaturesSystemMessagePlaceholder": "شما یک دستیار متخصص هستید...", + "agentFeaturesSystemMessageHint": "بازنویسی پیام سیستم برای عاملها", "agentFeaturesToolFilterRegex": "/regex-pattern/", - "agentFeaturesToolFilterHint": "Tool filter regex for agents", - "agentFeaturesContextCacheHint": "Enable in-context cache for agent tools", - "agentFeaturesContextCacheProtection": "Protect cache from agent tool mutations", + "agentFeaturesToolFilterHint": "عبارت منظم فیلتر ابزار برای عاملها", + "agentFeaturesContextCacheHint": "فعالسازی کش درونمتنی برای ابزارهای عامل", + "agentFeaturesContextCacheProtection": "محافظت از کش در برابر تغییرات ابزارهای عامل", "agentFeaturesContextLength": "طول زمینه", "agentFeaturesContextLengthPlaceholder": "به عنوان مثال 128000", "agentFeaturesContextLengthHint": "پنجره زمینه را برای این ترکیب در /v1/models تعریف می کند.", @@ -3788,40 +3788,40 @@ "duplicateAutoComboTitle": "ایجاد یک ترکیب ثابت از {name}" }, "costs": { - "title": "Costs", - "pageDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "overview": "Overview", - "budget": "Budget", - "totalCost": "Total Cost", - "breakdown": "Cost Breakdown", - "noData": "No cost data", - "byModel": "By Model", - "byProvider": "By Provider", - "range7d": "7 Days", - "range30d": "30 Days", - "range90d": "90 Days", - "range180d": "180 Days", - "range365d": "365 Days", - "rangeAll": "All Time", - "spend30d": "Spend 30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", - "overviewTitle": "Cost Overview", - "spend7d": "Spend 7D", - "avgCostPerRequest": "Avg Cost / Request", - "noCostDataDescription": "Start making requests to see cost data appear here. Costs are tracked automatically for all providers.", - "spendToday": "Spend Today", - "overviewLoadFailed": "Failed to load cost overview", - "overviewDescription": "Real-time spending breakdown across all connected providers and models", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", - "noCostDataTitle": "No cost data yet", - "topModels": "Top Models", - "requestsInWindow": "Requests in Window", + "title": "هزینهها", + "pageDescription": "پیگیری مخارج، تحلیل روندها و مدیریت بودجه هوش مصنوعی شما در همه ارائهدهندگان", + "overview": "نمای کلی", + "budget": "بودجه", + "totalCost": "هزینه کل", + "breakdown": "تفکیک هزینهها", + "noData": "دادهای برای هزینهها وجود ندارد", + "byModel": "بر اساس مدل", + "byProvider": "بر اساس ارائهدهنده", + "range7d": "۷ روز", + "range30d": "۳۰ روز", + "range90d": "۹۰ روز", + "range180d": "۱۸۰ روز", + "range365d": "۳۶۵ روز", + "rangeAll": "همه زمانها", + "spend30d": "مخارج ۳۰ روزه", + "activeModels": "مدلهای فعال", + "flatRateEstimateNotice": "شامل برآورد هزینه بر اساس قیمت توکن برای اشتراکهای با نرخ ثابت است، نه هزینه صورتحسابشده.", + "flatRateEstimateForecast": "پیشبینی شامل برآوردهای نرخ ثابت است.", + "selectedWindow": "بازه انتخابشده", + "activeProviders": "ارائهدهندگان فعال", + "overviewTitle": "نمای کلی هزینهها", + "spend7d": "هزینهکرد ۷ روز گذشته", + "avgCostPerRequest": "میانگین هزینه / درخواست", + "noCostDataDescription": "برای نمایش دادههای هزینه در اینجا، ارسال درخواستها را آغاز کنید. هزینهها برای همه ارائهدهندگان بهصورت خودکار ردیابی میشوند.", + "spendToday": "هزینهکرد امروز", + "overviewLoadFailed": "بارگیری نمای کلی هزینهها ناموفق بود", + "overviewDescription": "تفکیک لحظهای هزینهکرد در همه ارائهدهندگان و مدلهای متصل", + "providerShare": "سهم ارائهدهنده", + "topProviders": "برترین ارائهدهندگان", + "costTrend": "روند هزینه", + "noCostDataTitle": "هنوز دادهای درباره هزینه وجود ندارد", + "topModels": "برترین مدلها", + "requestsInWindow": "درخواستها در بازه زمانی", "tokenUsage": "استفاده از رمز", "totalTokens": "کل توکن ها", "inputTokens": "توکن های ورودی", @@ -3855,13 +3855,13 @@ "exportCSV": "صادرات به عنوان CSV", "exportJSON": "صادرات به عنوان JSON", "legacyFreeLabel": "قدیمی / رایگان", - "costExplorerTitle": "Cost Explorer", - "costExplorerDescription": "Explore spend by provider, model, API key, account, or service tier.", - "groupProvider": "Provider", - "groupModel": "Model", - "groupApiKey": "API Key", - "groupAccount": "Account", - "groupServiceTier": "Service Tier", + "costExplorerTitle": "کاوشگر هزینه", + "costExplorerDescription": "هزینهکرد را بر اساس ارائهدهنده، مدل، کلید API، حساب یا سطح سرویس بررسی کنید.", + "groupProvider": "ارائهدهنده", + "groupModel": "مدل", + "groupApiKey": "کلید API", + "groupAccount": "حساب", + "groupServiceTier": "سطح سرویس", "serviceTierFast": "سریع", "serviceTierFlex": "انعطاف‌پذیر", "serviceTierStandard": "استاندارد", @@ -3870,193 +3870,193 @@ "serviceTierUsageSaved": "صرفه‌جویی در مصرف", "serviceTierCostSaved": "ذخیره شده", "serviceTierCostShareSuffix": "از هزینه", - "dimension": "Dimension", - "share": "Share", - "legacyOrFree": "Legacy / Free", - "filterRows": "Filter rows…", - "filterCostExplorerRows": "Filter Cost Explorer rows", - "noMatchingCostRows": "No matching cost rows", - "noMatchingCostRowsDescription": "Adjust the search text, grouping, or selected time window.", - "showingCostRows": "Showing {shown} of {total} matching rows.", - "showingTopCostRows": "Showing {shown} of {total} matching rows (top 50)." + "dimension": "بُعد", + "share": "سهم", + "legacyOrFree": "قدیمی / رایگان", + "filterRows": "فیلتر ردیفها…", + "filterCostExplorerRows": "فیلتر کردن ردیفهای کاوشگر هزینه", + "noMatchingCostRows": "هیچ ردیف هزینه منطبقی یافت نشد", + "noMatchingCostRowsDescription": "متن جستجو، گروهبندی یا بازه زمانی انتخابشده را تغییر دهید.", + "showingCostRows": "نمایش {shown} مورد از {total} ردیف منطبق.", + "showingTopCostRows": "نمایش {shown} مورد از {total} ردیف منطبق (۵۰ مورد برتر)." }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", - "available": "Available Endpoints", + "title": "نقطه پایانی API", + "subtitle": "از نقطه پایانی سازگار با OpenAI در اکثر SDKها و ابزارها استفاده کنید.", + "testEndpoint": "آزمایش نقطه پایانی ←", + "advancedProtocols": "پروتکلهای پیشرفته", + "available": "نقاط پایانی موجود", "cloudProxy": "Cloud Proxy", - "disableConfirm": "Are you sure you want to disable cloud proxy?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", - "registeredKeys": "Registered Keys", + "disableConfirm": "آیا مطمئن هستید که میخواهید پراکسی ابری را غیرفعال کنید؟", + "baseUrl": "نشانی پایه", + "apiKeyLabel": "کلید API", + "registeredKeys": "کلیدهای ثبتشده", "chatCompletions": "Chat Completions", - "responses": "Responses", - "listModels": "List Models", - "usingCloudProxy": "Using Cloud Proxy", - "usingLocalServer": "Using Local Server", - "machineId": "Machine ID: {id}...", - "disableCloud": "Disable Cloud", - "enableCloud": "Enable Cloud", - "modelsAcrossEndpoints": "{models} models across {endpoints} endpoints", - "loadingModels": "Loading available models...", - "chatDesc": "Streaming & non-streaming chat with all providers", - "embeddings": "Embeddings", - "embeddingsDesc": "Text embeddings for search & RAG pipelines", - "imageGeneration": "Image Generation", - "imageDesc": "Generate images from text prompts", + "responses": "پاسخها", + "listModels": "فهرست مدلها", + "usingCloudProxy": "استفاده از پروکسی ابری", + "usingLocalServer": "استفاده از سرور محلی", + "machineId": "شناسه دستگاه: {id}...", + "disableCloud": "غیرفعالکردن فضای ابری", + "enableCloud": "فعالکردن فضای ابری", + "modelsAcrossEndpoints": "{models} مدل در {endpoints} نقطه پایانی", + "loadingModels": "در حال بارگذاری مدلهای موجود...", + "chatDesc": "گفتوگوی جریانی و غیرجریانی با همه ارائهدهندگان", + "embeddings": "تعبیهسازیها", + "embeddingsDesc": "تعبیهسازیهای متنی برای جستجو و خطوط پردازش RAG", + "imageGeneration": "تولید تصویر", + "imageDesc": "تولید تصویر از دستورهای متنی", "rerank": "Rerank", - "rerankDesc": "Rerank documents by relevance to a query", - "audioTranscription": "Audio Transcription", - "audioTranscriptionDesc": "Transcribe audio files to text (Whisper)", - "textToSpeech": "Text to Speech", - "textToSpeechDesc": "Convert text to natural-sounding speech", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", - "moderations": "Moderations", - "moderationsDesc": "Content moderation and safety classification", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", - "categoryCore": "Core APIs", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", - "categoryUtility": "Utility & Management", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", - "enableCloudTitle": "Enable Cloud Proxy", - "whatYouGet": "What you will get", - "cloudBenefitAccess": "Access your API from anywhere in the world", - "cloudBenefitShare": "Share endpoint with your team easily", - "cloudBenefitPorts": "No need to open ports or configure firewall", - "cloudBenefitEdge": "Fast global edge network", - "cloudSessionNote": "Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted.", - "cloudUnstableNote": "Cloud is currently unstable with Claude Code OAuth in some cases.", - "cloudConnected": "Cloud Proxy connected!", - "connectingToCloud": "Connecting to cloud...", - "verifyingConnection": "Verifying connection...", - "connecting": "Connecting...", - "verifying": "Verifying...", - "connected": "Connected!", - "disableCloudTitle": "Disable Cloud Proxy", - "disableWarning": "All auth sessions will be deleted from cloud.", - "syncingData": "Syncing latest data...", - "disablingCloud": "Disabling cloud...", - "syncing": "Syncing...", - "disabling": "Disabling...", - "cloudConnectedVerified": "Cloud Proxy connected and verified!", - "connectedVerificationPending": "Connected — verification pending", - "connectedVerificationPendingWithError": "Connected — verification pending: {error}", - "cloudDisabledSuccess": "Cloud disabled successfully", - "syncedSuccess": "Synced successfully", - "failedDisable": "Failed to disable cloud", - "failedEnable": "Failed to enable cloud", - "cloudRequestTimeout": "Cloud request timeout", - "cloudRequestFailed": "Cloud request failed", - "cloudWorkerUnreachable": "Could not reach cloud worker. Make sure the cloud service is running (npm run dev in /cloud).", - "connectionFailed": "Connection failed", - "syncFailed": "Failed to sync cloud data", + "rerankDesc": "رتبهبندی مجدد اسناد بر اساس ارتباط با یک پرسوجو", + "audioTranscription": "رونویسی صوت", + "audioTranscriptionDesc": "تبدیل فایلهای صوتی به متن (Whisper)", + "textToSpeech": "تبدیل متن به گفتار", + "textToSpeechDesc": "تبدیل متن به گفتاری طبیعی", + "musicGeneration": "تولید موسیقی", + "musicDesc": "تولید موسیقی و قطعات صوتی از طریق ComfyUI (Stable Audio, MusicGen)", + "moderations": "نظارت بر محتوا", + "moderationsDesc": "نظارت بر محتوا و طبقهبندی ایمنی", + "responsesDesc": "OpenAI Responses API برای Codex و گردشکارهای عاملی پیشرفته", + "listModelsDesc": "فهرست همه مدلهای موجود در تمامی ارائهدهندگان متصل", + "settingsApiDesc": "خواندن و ویرایش پیکربندی OmniRoute از طریق API", + "settingsApi": "API تنظیمات", + "categoryCore": "APIهای اصلی", + "categoryMedia": "رسانه و چندوجهی", + "categorySearch": "جستجو و کشف", + "categoryUtility": "ابزارها و مدیریت", + "webSearch": "جستجوی وب", + "webSearchDesc": "جستجوی یکپارچه وب در چندین ارائهدهنده با جایگزینی خودکار هنگام خطا و ذخیرهسازی در حافظه نهان", + "searchProvider": "ارائهدهنده جستجو", + "searchProviderDesc": "این ارائهدهنده برای جستجوی وب از طریق POST /v1/search استفاده میشود. نیازی به پیکربندی مدل نیست — ارائهدهندگان جستجو پس از اتصال یک کلید API آماده استفاده هستند.", + "enableCloudTitle": "فعالکردن پروکسی ابری", + "whatYouGet": "آنچه دریافت خواهید کرد", + "cloudBenefitAccess": "از هر جای دنیا به API خود دسترسی داشته باشید", + "cloudBenefitShare": "نقطه پایانی را بهراحتی با تیم خود به اشتراک بگذارید", + "cloudBenefitPorts": "نیازی به بازکردن درگاهها یا پیکربندی دیواره آتش نیست", + "cloudBenefitEdge": "شبکه لبه جهانی سریع", + "cloudSessionNote": "فضای ابری نشست احراز هویت شما را بهمدت ۱ روز نگه میدارد. اگر استفاده نشود، بهطور خودکار حذف خواهد شد.", + "cloudUnstableNote": "Cloud در حال حاضر در برخی موارد با Claude Code OAuth ناپایدار است.", + "cloudConnected": "Cloud Proxy متصل شد!", + "connectingToCloud": "در حال اتصال به Cloud...", + "verifyingConnection": "در حال تأیید اتصال...", + "connecting": "در حال اتصال...", + "verifying": "در حال تأیید...", + "connected": "متصل شد!", + "disableCloudTitle": "غیرفعال کردن Cloud Proxy", + "disableWarning": "همه نشستهای احراز هویت از Cloud حذف خواهند شد.", + "syncingData": "در حال همگامسازی آخرین دادهها...", + "disablingCloud": "در حال غیرفعال کردن Cloud...", + "syncing": "در حال همگامسازی...", + "disabling": "در حال غیرفعالسازی...", + "cloudConnectedVerified": "Cloud Proxy متصل و تأیید شد!", + "connectedVerificationPending": "متصل شد — تأیید در انتظار است", + "connectedVerificationPendingWithError": "متصل شد — تأیید در انتظار است: {error}", + "cloudDisabledSuccess": "Cloud با موفقیت غیرفعال شد", + "syncedSuccess": "با موفقیت همگامسازی شد", + "failedDisable": "غیرفعال کردن Cloud ناموفق بود", + "failedEnable": "فعال کردن Cloud ناموفق بود", + "cloudRequestTimeout": "مهلت درخواست Cloud به پایان رسید", + "cloudRequestFailed": "درخواست Cloud ناموفق بود", + "cloudWorkerUnreachable": "دسترسی به Cloud Worker ممکن نشد. مطمئن شوید سرویس Cloud در حال اجراست (npm run dev در /cloud).", + "connectionFailed": "اتصال ناموفق بود", + "syncFailed": "همگامسازی دادههای Cloud ناموفق بود", "cloudflaredTitle": "Cloudflare Quick Tunnel", - "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredDescription": "برای این نقطه پایانی، یک Cloudflare Quick Tunnel ایجاد کنید.", + "cloudflaredUrlNotice": "یک Cloudflare Quick Tunnel موقت ایجاد میکند. URL پس از هر بار راهاندازی مجدد تغییر میکند.", + "cloudflaredEnable": "فعال کردن Tunnel", + "cloudflaredInstallAndEnable": "نصب و فعالسازی", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "در حال اجرا", + "cloudflaredStarting": "در حال راهاندازی", + "cloudflaredStoppedState": "متوقفشده", + "cloudflaredNotInstalled": "نصب نشده", + "cloudflaredUnsupported": "پشتیبانینشده", + "cloudflaredError": "خطا", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", - "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after every restart.", - "cloudflaredUnsupportedNote": "This platform is not supported for managed installs. Install cloudflared manually or point CLOUDFLARED_BIN to an existing binary.", + "cloudflaredTemporaryNote": "نشانیهای URL مربوط به Quick Tunnel موقت هستند و پس از هر بار راهاندازی مجدد تغییر خواهند کرد.", + "cloudflaredUnsupportedNote": "این پلتفرم از نصبهای مدیریتشده پشتیبانی نمیکند. cloudflared را بهصورت دستی نصب کنید یا CLOUDFLARED_BIN را به یک فایل اجرایی موجود ارجاع دهید.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", - "providerModelsTitle": "{provider} — Models", - "noModelsForProvider": "No models available for this provider.", + "cloudflaredLastError": "آخرین خطا: {error}", + "providerModelsTitle": "{provider} — مدلها", + "noModelsForProvider": "هیچ مدلی برای این ارائهدهنده موجود نیست.", "chat": "Chat", - "embedding": "Embedding", - "image": "Image", - "custom": "custom", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "embedding": "تعبیهسازی", + "image": "تصویر", + "custom": "سفارشی", + "modelsCount": "{count, plural, one {# مدل} other {# مدل}}", + "sectionTitle": "سطح یکپارچهسازی", + "sectionDescription": "APIهای سازگار با OpenAI و نقاط پایانی پروتکلهای عملیاتی", "tabApis": "APIها", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "پروتکلها", + "tabsAria": "بخشهای نقاط پایانی", + "protocolsTitle": "پروتکلها", + "protocolsDescription": "MCP و A2A نقاط پایانی درجهیک با قابلیتهای اختصاصی مشاهدهپذیری و کنترل هستند.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "Model Context Protocol از طریق stdio", + "a2aCardTitle": "سرور A2A", + "a2aCardDescription": "نقطه پایانی Agent2Agent JSON-RPC", + "protocolToolsLabel": "ابزارها", + "protocolTasksLabel": "وظایف", + "protocolActiveStreamsLabel": "جریانهای فعال", + "protocolLastActivity": "آخرین فعالیت", + "quickStart": "شروع سریع", + "openMcpDashboard": "باز کردن مدیریت MCP", + "openA2aDashboard": "باز کردن مدیریت A2A", + "mcpQuickStartTitle": "شروع سریع MCP", + "mcpQuickStartStep1": "سرور MCP را با `omniroute --mcp` اجرا کنید.", + "mcpQuickStartStep2": "کلاینت MCP خود را برای اتصال از طریق انتقال stdio پیکربندی کنید.", + "mcpQuickStartStep3": "ابزارهایی مانند `omniroute_get_health` و `omniroute_list_combos` را فراخوانی کنید.", + "a2aQuickStartTitle": "شروع سریع A2A", + "a2aQuickStartStep1": "کارت عامل را در `/.well-known/agent.json` بیابید.", + "a2aQuickStartStep2": "درخواستهای JSON-RPC را با استفاده از `message/send` یا `message/stream` به `POST /a2a` ارسال کنید.", + "a2aQuickStartStep3": "وظایف را با استفاده از `tasks/get` و `tasks/cancel` پیگیری و کنترل کنید.", + "completionsLegacy": "تکمیلها (قدیمی)", + "completionsLegacyDesc": "تکمیل متن قدیمی OpenAI — هم رشتهٔ پرامپت و هم قالب آرایهٔ پیامها را میپذیرد", "messagesApi": "پیام ها", "messagesApiDesc": "فرمت Native Anthropic Messages API برای ارائه دهندگان سازگار با Claude", "imageEdits": "ویرایش های تصویر", "imageEditsDesc": "ویرایش و اصلاح تصاویر موجود با هوش مصنوعی (inpainting، outpainting، variations)", - "batchApi": "Batch API", + "batchApi": "API دستهای", "batchApiDesc": "پردازش دسته های بزرگ درخواست ها به صورت ناهمزمان (سازگار با OpenAI)", - "filesApi": "Files API", + "filesApi": "API فایلها", "filesApiDesc": "فایل ها را برای پردازش دسته ای آپلود و مدیریت کنید", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "تولید ویدئو", + "videoDesc": "با استفاده از مدلهای هوش مصنوعی مانند ComfyUI و Stable Video Diffusion ویدئو تولید کنید.", + "tailscaleRequestFailed": "بارگذاری وضعیت Tailscale ناموفق بود", + "tailscaleEnableFailed": "فعالسازی Tailscale Funnel ناموفق بود", + "tailscaleWaitingForLogin": "ورود به Tailscale را در زبانهٔ مرورگر بازشده تکمیل کنید. OmniRoute بهطور خودکار دوباره تلاش خواهد کرد.", + "tailscaleLoginTimedOut": "زمان انتظار برای ورود به Tailscale به پایان رسید", + "tailscaleWaitingForFunnel": "Funnel را برای این دستگاه در زبانهٔ مرورگر بازشده فعال کنید. OmniRoute به بررسی دورهای ادامه خواهد داد.", + "tailscaleFunnelTimedOut": "زمان انتظار برای فعالشدن Tailscale Funnel به پایان رسید", + "tailscaleStarted": "Tailscale Funnel فعال شد", + "tailscaleDisableFailed": "غیرفعالکردن Tailscale Funnel ناموفق بود", + "tailscaleStopped": "Tailscale Funnel غیرفعال شد", + "tailscaleInstallFailed": "نصب Tailscale ناموفق بود", + "tailscaleInstallProgress": "در حال انجام...", + "tailscaleInstalled": "Tailscale با موفقیت نصب شد", + "tailscaleRunning": "در حال اجرا", + "tailscaleNeedsLogin": "نیازمند ورود", + "tailscaleStoppedState": "متوقفشده", + "tailscaleNotInstalled": "نصب نشده", + "tailscaleUnsupported": "پشتیبانی نمیشود", + "tailscaleError": "خطا", + "tailscaleDisable": "توقف Funnel", + "tailscaleInstallAndEnable": "نصب و فعالسازی", + "tailscaleLoginAndEnable": "ورود و فعالسازی", + "tailscaleEnable": "فعالسازی Funnel", + "tailscaleUrlNotice": "از آدرس .ts.net شما در Tailscale استفاده میکند. ممکن است در اولین استفاده، ورود و تأیید Funnel لازم باشد.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", - "tailscaleSudoLabel": "Sudo Password (required on macOS/Linux)", + "tailscaleNeedsLoginHint": "این دستگاه را در Tailscale احراز هویت کنید، سپس Funnel را فعال کنید.", + "tailscaleBinaryPath": "فایل اجرایی: {path}", + "tailscaleLastError": "آخرین خطا: {error}", + "tailscaleInstallTitle": "نصب Tailscale", + "tailscaleInstallIntro": "Tailscale را روی این دستگاه نصب میکند و OmniRoute را برای فعالسازی Funnel آماده میکند.", + "tailscaleInstallPasswordHint": "در macOS و Linux، ممکن است برای نصب بسته و راهاندازی سرویس پسزمینه به sudo نیاز باشد.", + "tailscaleSudoPlaceholder": "رمز عبور اختیاری sudo", + "tailscaleInstalling": "در حال نصب", + "tailscaleSudoLabel": "رمز عبور sudo (در macOS/Linux الزامی است)", "ngrokTitle": "تونل ngrok", "ngrokRunning": "در حال دویدن", "ngrokStarting": "شروع کردن", @@ -4132,7 +4132,7 @@ "vscodeAliasModelsLabel": "مدل‌های VS Code", "vscodeAliasChatLabel": "چت VS Code", "localServer": "سرور محلی", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute ابری", "copyUrl": "URL را کپی کنید", "badgeLoopbackTooltip": "این نقطه پایانی فقط به صورت محلی قابل دسترسی است (فقط لوپ‌بک)", "badgeAlwaysProtectedTooltip": "این نقطه پایانی همیشه محافظت‌شده است و نیاز به مجوز دارد", @@ -4144,9 +4144,9 @@ "tierPublic": "عمومی", "hideInternal": "پنهان کردن داخلی", "showInternal": "نشان دادن داخلی", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "پرامپت سیستمی سفارشی", + "customSystemPromptDescription": "یک پرامپت سیستمی سفارشی را به هر درخواست مدل تزریق کنید", + "customSystemPromptPlaceholder": "برای مثال: همیشه با لحن دزدان دریایی پاسخ بده...", "obsidianEnterToken": "لطفاً یک توکن API برای Obsidian وارد کنید", "obsidianConnectFailed": "اتصال برقرار نشد", "obsidianConnectionFailed": "اتصال ناموفق بود", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "توکن پیکربندی شده است. ابزارهای Notion از طریق MCP در دسترس هستند." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "پروکسی نقطه پایانی", + "tabApiEndpoints": "نقاط پایانی API", + "apiEndpointsTitle": "نقاط پایانی API", + "apiEndpointsDescription": "نقاط پایانی API بکاند که سایر برنامهها و سرویسها میتوانند از آنها استفاده کنند. این بخش همه REST APIهای موجود را همراه با مستندات و قابلیتهای آزمایش فهرست خواهد کرد.", + "comingSoon": "بهزودی", + "plannedFeatures": "ویژگیهای برنامهریزیشده", + "featureRestApi": "فهرست نقاط پایانی REST API همراه با مستندات تعاملی", + "featureWebhooks": "پیکربندی وبهوک و اشتراک رویدادها", + "featureSwagger": "تولید خودکار مشخصات OpenAPI / Swagger", + "featureAuth": "مدیریت کلید API و دامنههای OAuth برای هر نقطه پایانی" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "در حال بارگذاری داشبورد MCP...", + "activate": "فعالسازی", + "deactivate": "غیرفعالسازی", + "confirmSwitchCombo": "ترکیب «{combo}» {action} شود؟", + "switchComboFailed": "تغییر وضعیت ترکیب ناموفق بود.", + "switchComboSuccess": "ترکیب «{combo}» بهروزرسانی شد.", + "confirmApplyProfile": "پروفایل تابآوری «{profile}» اعمال شود؟", + "applyProfileFailed": "اعمال پروفایل تابآوری ناموفق بود.", + "applyProfileSuccess": "پروفایل «{profile}» اعمال شد.", + "confirmResetBreakers": "همه قطعکنندههای مدار بازنشانی شوند؟", + "resetBreakersFailed": "بازنشانی قطعکنندههای مدار ناموفق بود.", + "resetBreakersSuccess": "قطعکنندههای مدار بازنشانی شدند.", + "processStatus": "وضعیت فرایند", "online": "Online", "offline": "Offline", "disableLabel": "غیرفعال‌سازی {label}", @@ -4237,119 +4237,119 @@ "mcpStep2": "کلاینت MCP خود را برای اتصال از طریق انتقال stdio پیکربندی کنید.", "mcpStep3": "فراخوانی ابزارهایی مانند {code1} و {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "مدت فعالیت نشست", + "lastHeartbeat": "آخرین ضربان حیات", + "activity24h": "فعالیت (۲۴ ساعت)", + "totalCalls": "مجموع فراخوانیها", + "successRate": "نرخ موفقیت", + "avgLatency": "میانگین تأخیر", + "topTools": "ابزارهای برتر", + "noToolCalls24h": "در ۲۴ ساعت گذشته هیچ فراخوانی ابزاری انجام نشده است.", + "runtimeDetails": "جزئیات زمان اجرا", + "transport": "انتقال", + "scopesEnforced": "دامنههای دسترسی اعمالشده", + "yes": "بله", + "no": "خیر", + "lastCall": "آخرین فراخوانی", + "heartbeatPath": "مسیر ضربان حیات", + "operationalControls": "کنترلهای عملیاتی", + "switchCombo": "تغییر ترکیب", + "inactive": "غیرفعال", + "active": "فعال", + "activateCombo": "فعالسازی ترکیب", + "deactivateCombo": "غیرفعالسازی ترکیب", + "applyResilienceProfile": "اعمال پروفایل تابآوری", + "profileAggressive": "تهاجمی", + "profileBalanced": "متعادل", + "profileConservative": "محافظهکارانه", + "applyProfile": "اعمال پروفایل", + "resetCircuitBreakers": "بازنشانی قطعکنندههای مدار", + "resetCircuitBreakersHelp": "وضعیت فعلی قطعکنندهها و شمارندههای خطای ارائهدهندگان را پاک میکند.", + "resetAllBreakers": "بازنشانی همه قطعکنندهها", + "toolsAndScopes": "ابزارها و دامنهها", + "tableTool": "ابزار", + "tableScopes": "دامنهها", + "tablePhase": "مرحله", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "گزارش ممیزی", + "auditSummary": "فراخوانیها: {total} | صفحه {page} از {totalPages}", + "allTools": "همه ابزارها", + "allResults": "همه نتایج", + "success": "موفق", + "failure": "ناموفق", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "در حال بارگذاری ورودیهای ممیزی...", + "noAuditEntriesForFilters": "هیچ ورودی ممیزی برای فیلترهای فعلی یافت نشد.", + "tableTimestamp": "مهر زمانی", + "tableDuration": "مدتزمان", + "tableResult": "نتیجه", + "tableApiKey": "کلید API", + "failed": "ناموفق", + "previous": "قبلی", + "next": "بعدی", + "apiKeyId": "شناسه کلید API", + "offset": "آفست", + "limit": "محدودیت", + "tool": "ابزار" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "در حال بارگذاری داشبورد A2A...", + "confirmCancelTask": "وظیفه {taskId} لغو شود؟", + "cancelTaskFailed": "لغو وظیفه ناموفق بود.", + "cancelTaskSuccess": "وظیفه {taskId} لغو شد.", + "smokeSendFailed": "آزمون اولیه message/send ناموفق بود.", + "smokeSendSuccessWithTask": "message/send موفق بود (وظیفه {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "آزمون اولیه message/stream ناموفق بود.", + "smokeStreamSuccessWithTask": "message/stream موفق بود (وظیفه {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream بدون شناسه وظیفه پایان یافت.", + "health": "سلامت", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "مجموع وظایف", + "activeStreams": "جریانهای فعال", + "lastTask": "آخرین وظیفه", + "taskStateOverview": "نمای کلی وضعیت وظایف", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "ارسالشده", + "working": "در حال انجام", + "completed": "تکمیلشده", + "failed": "ناموفق", + "cancelled": "لغوشده" }, - "agentCard": "Agent card", + "agentCard": "کارت عامل", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "نسخه", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "قابلیتها", + "agentCardNotAvailable": "کارت عامل در دسترس نیست.", + "quickValidation": "اعتبارسنجی سریع", + "quickValidationDescription": "درخواستهای آزمایشی را از طریق نقطه پایانی فعال `/a2a` اجرا میکند.", + "runMessageSend": "اجرای message/send", + "runMessageStream": "اجرای message/stream", + "taskManagement": "مدیریت وظایف", + "taskSummary": "{total} وظیفه | صفحهٔ {page} از {totalPages}", + "allStates": "همه", + "allSkills": "همهٔ مهارتها", + "loadingTasks": "در حال بارگیری وظایف...", + "noTasksForFilters": "هیچ وظیفهای برای فیلترهای فعلی یافت نشد.", + "tableTask": "وظیفه", + "tableSkill": "مهارت", + "tableState": "وضعیت", + "tableUpdated": "بهروزرسانیشده", + "tableActions": "عملیات", + "view": "مشاهده", + "cancel": "لغو", + "previous": "قبلی", + "next": "بعدی", + "taskDetail": "جزئیات وظیفه", + "close": "بستن", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "رویدادها", + "artifacts": "مصنوعات", + "tablePhase": "مرحلهٔ جدول", + "offset": "مبدأ", + "limit": "محدودیت", + "skill": "مهارت", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "پیام/ارسال", "rpcMethodStream": "پیام/جریان", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "عملیات", + "addMemory": "افزودن حافظه", + "allTypes": "همه انواع", "cancel": "لغو کنید", "checkHealth": "سلامتی را بررسی کنید", "checkingHealth": "در حال بررسی…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "نحوه کارکرد", "howWorksContent": "1. استخراج خودکار: در پایان هر پاسخ، حقایق و رویدادها به طور خودکار شناسایی و ذخیره می‌شوند.\n2. بازیابی: قبل از هر پاسخ، مرتبط‌ترین حافظه‌ها از طریق FTS5 (دقیق)، برداری (معنایی) یا RRF ترکیبی جستجو می‌شوند.\n3. تزریق: حافظه‌های مرتبط به بافتار دستیار تزریق می‌شوند تا کیفیت پاسخ بهبود یابد.\n4. مدیریت: از این صفحه برای مشاهده، ویرایش، خروجی گرفتن و فشرده‌سازی حافظه‌های قدیمی استفاده کنید." }, - "content": "Content", + "content": "محتوا", "contentPlaceholder": "ارزش یا محتوای JSON برای به خاطر سپردن", - "created": "Created", - "delete": "Delete", + "created": "ایجادشده", + "delete": "حذف", "deleteConfirmDesc": "این عملیات قابل بازگشت نیست. حافظه برای همیشه حذف خواهد شد.", "deleteConfirmTitle": "حذف حافظه؟", - "description": "View and manage stored memory entries", + "description": "مشاهده و مدیریت ورودیهای ذخیرهشده حافظه", "editMemory": "ویرایش حافظه", "editModal": { "title": "ویرایش حافظه", @@ -4444,20 +4444,20 @@ "configureCta": "پیکربندی", "vectorStoreInstallHint": "برای فعال‌سازی جستجوی برداری: npm install sqlite-vec (نیاز به Node.js بومی دارد، نه WASM)، سپس راه‌اندازی مجدد کنید." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "رویدادی", + "export": "خروجی گرفتن", + "factual": "واقعی", "healthUnknown": "سلامت نامعلوم", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "نرخ موفقیت", + "import": "وارد کردن", "importError": "وارد کردن فایل ناموفق بود", "importResult": "{imported} وارد شد، {skipped} نادیده گرفته شد", - "key": "Key", + "key": "کلید", "keyPlaceholder": "به عنوان مثال user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "حافظهها", "next": "بعدی", - "noMemories": "No memories found", + "noMemories": "هیچ حافظهای یافت نشد", "pageInfo": "صفحه {page} از {totalPages} (مجموع {total})", "pipelineError": "خطای خط لوله", "pipelineOk": "خط لوله درست است ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "دریافت پیش‌نمایش ناموفق بود" }, "previous": "قبلی", - "procedural": "Procedural", + "procedural": "رویهای", "qdrant": { "title": "Qdrant (ذخیره‌ساز برداری سطح ۲)", "description": "ادغام اختیاری Qdrant برای جستجوی معنایی مقیاس‌پذیر", @@ -4534,8 +4534,8 @@ }, "save": "ذخیره کنید", "saving": "در حال ذخیره‌سازی...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "جستوجوی حافظهها...", + "semantic": "معنایی", "summarize": { "title": "فشرده‌سازی حافظه‌های قدیمی", "noCandidates": "هیچ حافظه‌ای واجد شرایط فشرده‌سازی نیست (معیار: قدمت > 30 روز).", @@ -4547,8 +4547,8 @@ "playground": "پلی‌گراند", "engine": "موتور" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "مدیریت حافظه", + "tokensUsed": "توکنهای استفادهشده", "tooltip": { "totalEntries": "کل حافظه‌های ذخیره‌شده برای این کلید API", "tokensUsed": "مجموع تخمینی توکن‌های اشغال‌شده توسط حافظه‌های فعال", @@ -4558,15 +4558,15 @@ "procedural": "روال‌ها، گردش‌های کاری و دستورالعمل‌هایی که دستیار باید دنبال کند", "semantic": "مفاهیم، ترجیحات و دانش حوزه" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "مجموع ورودیها", + "type": "نوع", "memoryEnabled": "حافظه فعال است" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "مهارتها", + "description": "مدیریت و نظارت بر مهارتهای هوش مصنوعی", + "skillsTab": "مهارتها", + "executionsTab": "اجراها", "selectSkillToInspect": "یک مهارت را از سمت چپ برای بررسی انتخاب کنید.", "schemaTab": "طرحواره", "handlerTab": "هندلر", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "اجرای تست (جای‌بان)", "setModeAria": "تنظیم حالت {mode}", "uninstallSkill": "لغو نصب مهارت", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "محیط ایزوله", + "loading": "در حال بارگذاری مهارتها...", + "noSkills": "هیچ مهارتی یافت نشد", + "noExecutions": "هیچ اجرایی یافت نشد", + "enabled": "فعال", + "disabled": "غیرفعال", "delete": "حذف", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "نسخه", + "tableDescription": "توضیحات", + "skill": "مهارت", + "status": "وضعیت", + "duration": "مدتزمان", + "time": "زمان", + "sandboxConfig": "پیکربندی محیط ایزوله", + "cpuLimit": "محدودیت CPU", + "cpuLimitDesc": "حداکثر زمان اجرای هر مهارت", + "memoryLimit": "محدودیت حافظه", + "memoryLimitDesc": "حداکثر حافظه تخصیصیافته", + "timeout": "مهلت زمانی", + "timeoutDesc": "حداکثر زمان انتظار برای پاسخ", + "networkAccess": "دسترسی به شبکه", + "networkAccessDesc": "اجازه درخواستهای خروجی شبکه", + "mode": "حالت", "q": "Q", "filterSkillsPlaceholder": "مهارت ها را با نام، توضیحات یا برچسب فیلتر کنید", "allModes": "همه حالت ها", @@ -4623,141 +4623,141 @@ "searchMarketplacePlaceholder": "جستجوی مهارت‌ها...", "searchMarketplace": "جستجو در بازارچه", "marketplaceEmpty": "هیچ مهارتی در بازارچه یافت نشد", - "marketplaceError": "Search failed", - "installingFromMarketplace": "Installing from marketplace...", - "popularSkills": "Popular Skills", + "marketplaceError": "جستجو ناموفق بود", + "installingFromMarketplace": "در حال نصب از بازار...", + "popularSkills": "مهارتهای محبوب", "skillsMarketplace": "بازار مهارت ها", - "searching": "Searching...", - "pageInfo": "Page {page} of {totalPages} ({total} total)", - "previous": "Previous", - "next": "Next", - "activeProvider": "Active provider:", - "changeInSettings": "Change this in Settings → Memory & Skills.", - "installs": "installs", - "marketplaceSkillsMpHint": "Configure your SkillsMP API key in Settings to browse the marketplace.", - "marketplaceSkillsShHint": "Search the skills.sh open directory to discover and install agent skills.", - "installSkillModalDesc": "Paste a skill manifest JSON or upload a .json file.", - "uploadJson": "Upload JSON", - "cancel": "Cancel", + "searching": "در حال جستجو...", + "pageInfo": "صفحه {page} از {totalPages} (در مجموع {total})", + "previous": "قبلی", + "next": "بعدی", + "activeProvider": "ارائهدهنده فعال:", + "changeInSettings": "این مورد را در تنظیمات ← حافظه و مهارتها تغییر دهید.", + "installs": "نصب", + "marketplaceSkillsMpHint": "برای مرور بازار، کلید API مربوط به SkillsMP را در تنظیمات پیکربندی کنید.", + "marketplaceSkillsShHint": "برای یافتن و نصب مهارتهای عامل، در فهرست عمومی skills.sh جستجو کنید.", + "installSkillModalDesc": "JSON مانیفست مهارت را جایگذاری کنید یا یک فایل .json بارگذاری کنید.", + "uploadJson": "بارگذاری JSON", + "cancel": "لغو", "installSkill": "Skill را نصب کنید" }, "health": { - "title": "System Health", - "description": "Real-time monitoring of your OmniRoute instance", - "healthy": "Healthy", - "degraded": "Degraded", - "down": "Down", - "uptime": "Uptime", - "memory": "Memory", - "memoryRss": "Memory (RSS)", - "heap": "Heap", + "title": "سلامت سیستم", + "description": "پایش لحظهای نمونه OmniRoute شما", + "healthy": "سالم", + "degraded": "مختل", + "down": "از دسترس خارج", + "uptime": "زمان فعالیت", + "memory": "حافظه", + "memoryRss": "حافظه (RSS)", + "heap": "هیپ", "cpu": "CPU", - "database": "Database", - "version": "Version", - "lastCheck": "Last Check", - "providerHealth": "Provider Health", - "systemMetrics": "System Metrics", - "tokenHealth": "Token Health", - "refreshAll": "Refresh All", - "checkNow": "Check Now", - "loadingHealth": "Loading health data...", - "failedToLoad": "Failed to load health data: {error}", - "retry": "Retry", - "allOperational": "All systems operational", - "issuesDetected": "System issues detected", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", - "updatedAt": "Updated {time}", - "latency": "Latency", + "database": "پایگاه داده", + "version": "نسخه", + "lastCheck": "آخرین بررسی", + "providerHealth": "سلامت ارائهدهندگان", + "systemMetrics": "معیارهای سیستم", + "tokenHealth": "سلامت توکنها", + "refreshAll": "بهروزرسانی همه", + "checkNow": "اکنون بررسی کن", + "loadingHealth": "در حال بارگذاری دادههای سلامت...", + "failedToLoad": "بارگذاری دادههای سلامت ناموفق بود: {error}", + "retry": "تلاش مجدد", + "allOperational": "همه سیستمها عملیاتی هستند", + "issuesDetected": "مشکلاتی در سیستم شناسایی شد", + "healthVerdictReady": "OmniRoute آماده است", + "healthVerdictActionRequired": "برای بازیابی عملکرد کامل، اقدام لازم است", + "healthVerdictCoolingDown": "در حال خنکشدن پس از تغییرات اخیر", + "healthSubtitle": "بررسی سلامت سیستم", + "advancedDiagnosticsTitle": "عیبیابی پیشرفته", + "hide": "پنهان کردن", + "show": "نمایش", + "updatedAt": "بهروزرسانیشده در {time}", + "latency": "تأخیر", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", "millisecondsShort": "{value}ms", "notAvailable": "—", - "totalRequests": "Total requests", - "noDataYet": "No data yet", - "promptCache": "Prompt Cache", - "entries": "Entries", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "signatureCache": "Signature Cache", - "signatureDefaults": "Defaults", - "signatureTool": "Tool", - "signatureFamily": "Family", - "signatureSession": "Session", - "recovering": "Recovering", - "noCBData": "No circuit breaker data available. Make some requests first.", - "providerHealthStatusAria": "Provider health status", - "issuesLabel": "Issues Detected", - "operational": "Operational", - "providers": "Providers", - "configuredProvidersLabel": "Configured in dashboard", - "configuredProvidersHint": "Providers with credentials saved in /dashboard/providers, regardless of runtime state.", - "activeProviders": "{count} active", - "activeProvidersHint": "Configured providers currently enabled for routing requests.", - "monitoredProviders": "{count} monitored", - "monitoredProvidersHint": "Providers currently tracked by circuit-breaker health monitors.", - "healthyCount": "{count} healthy", + "totalRequests": "مجموع درخواستها", + "noDataYet": "هنوز دادهای وجود ندارد", + "promptCache": "کش پرامپت", + "entries": "ورودیها", + "hitRate": "نرخ اصابت", + "hitsMisses": "اصابتها / عدم اصابتها", + "signatureCache": "کش امضا", + "signatureDefaults": "پیشفرضها", + "signatureTool": "ابزار", + "signatureFamily": "خانواده", + "signatureSession": "نشست", + "recovering": "در حال بازیابی", + "noCBData": "دادهای از قطعکننده مدار موجود نیست. ابتدا چند درخواست ارسال کنید.", + "providerHealthStatusAria": "وضعیت سلامت ارائهدهندگان", + "issuesLabel": "مشکلات شناسایی شدند", + "operational": "عملیاتی", + "providers": "ارائهدهندگان", + "configuredProvidersLabel": "پیکربندیشده در داشبورد", + "configuredProvidersHint": "ارائهدهندگانی که اطلاعات احراز هویت آنها در /dashboard/providers ذخیره شده است، صرفنظر از وضعیت زمان اجرا.", + "activeProviders": "{count} فعال", + "activeProvidersHint": "ارائهدهندگان پیکربندیشدهای که در حال حاضر برای مسیریابی درخواستها فعال هستند.", + "monitoredProviders": "{count} مورد تحت نظارت", + "monitoredProvidersHint": "ارائهدهندگانی که در حال حاضر توسط پایشگرهای سلامت قطعکننده مدار ردیابی میشوند.", + "healthyCount": "{count} مورد سالم", "nodeVersion": "Node {version}", - "failures": "{count} failure", - "failuresPlural": "{count} failures", - "lastFailure": "Last", - "rateLimitStatus": "Rate Limit Status", - "activeLimiters": "{count} active limiter", - "activeLimitersPlural": "{count} active limiters", - "queued": "Queued", - "queuedCount": "{count} queued", - "running": "running", - "runningCount": "{count} running", + "failures": "{count} خرابی", + "failuresPlural": "{count} خرابی", + "lastFailure": "آخرین", + "rateLimitStatus": "وضعیت محدودیت نرخ", + "activeLimiters": "{count} محدودکننده فعال", + "activeLimitersPlural": "{count} محدودکننده فعال", + "queued": "در صف", + "queuedCount": "{count} مورد در صف", + "running": "در حال اجرا", + "runningCount": "{count} مورد در حال اجرا", "ok": "OK", - "activeLockouts": "Active Lockouts", - "resetConfirm": "Reset all circuit breakers to healthy state? This will clear all failure counts and restore all providers to operational status.", - "resetAllTitle": "Reset all circuit breakers to healthy state", - "resetting": "Resetting...", - "resetAll": "Reset All", - "until": "Until {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "activeLockouts": "مسدودسازیهای فعال", + "resetConfirm": "همه قطعکنندههای مدار به وضعیت سالم بازنشانی شوند؟ با این کار همه شمارندههای خرابی پاک میشوند و همه ارائهدهندگان به وضعیت عملیاتی بازمیگردند.", + "resetAllTitle": "بازنشانی همه قطعکنندههای مدار به وضعیت سالم", + "resetting": "در حال بازنشانی...", + "resetAll": "بازنشانی همه", + "until": "تا {time}", + "limitExhausted": "تمامشده", + "learnedFromHeaders": "از هدرها آموختهشده", + "remainingOfLimit": "{remaining}/{limit} باقیمانده", + "throttleStatus": "محدودسازی: {value}", + "lastHeaderUpdate": "بهروزرسانی هدر: {age}", "databaseHealth": "پایگاه داده سلامت", - "databaseHealthDescription": "Diagnose and repair stale quota/domain rows and broken combo references.", - "status": "Status", - "attentionNeeded": "Attention needed", - "repairs": "Repairs", - "repairing": "Repairing...", - "runAutoRepair": "Run Auto-Repair", - "repairBackupCreated": "A repair backup was created before mutating.", - "sessionActivity": "Session Activity", - "activeCount": "{count} active", - "requestCount": "{count, plural, one {# request} other {# requests}}", - "idleSeconds": "{count}s idle", - "ageSeconds": "{count}s age", - "quotaMonitors": "Quota Monitors", - "alerting": "Alerting", - "errors": "Errors", - "degradationFull": "Full", - "degradationReduced": "Reduced", - "degradationMinimal": "Minimal", - "degradationDefault": "Default", - "sinceTime": "Since {time}", - "retryIn": "retry in {duration}", + "databaseHealthDescription": "ردیفهای قدیمی سهمیه/دامنه و ارجاعهای ترکیبی خراب را تشخیص دهید و ترمیم کنید.", + "status": "وضعیت", + "attentionNeeded": "نیازمند توجه", + "repairs": "ترمیمها", + "repairing": "در حال ترمیم...", + "runAutoRepair": "اجرای ترمیم خودکار", + "repairBackupCreated": "پیش از اعمال تغییرات، یک نسخه پشتیبان ترمیم ایجاد شد.", + "sessionActivity": "فعالیت نشست", + "activeCount": "{count} فعال", + "requestCount": "{count, plural, one {# درخواست} other {# درخواست}}", + "idleSeconds": "{count} ثانیه بیکار", + "ageSeconds": "عمر: {count} ثانیه", + "quotaMonitors": "پایشگرهای سهمیه", + "alerting": "هشداردهی", + "errors": "خطاها", + "degradationFull": "کامل", + "degradationReduced": "کاهشیافته", + "degradationMinimal": "حداقلی", + "degradationDefault": "پیشفرض", + "sinceTime": "از {time}", + "retryIn": "تلاش مجدد تا {duration} دیگر", "stickyBoundSessions": "جلسات چسبناک", "sessionsByApiKey": "جلسات با کلید API", "noActiveSessionsTracked": "هنوز هیچ جلسه فعالی پیگیری نشده است.", "noSessionQuotaMonitorsActive": "هیچ مانیتور سهمیه جلسه فعال نیست.", "gracefulDegradationStatus": "وضعیت تنزل برازنده", "additionalModels": "+{count} مدل های دیگر", - "providerHealthMatrixTitle": "Provider Health Matrix", - "providerHealthMatrixDescription": "Provider × account × model states from breakers, cooldowns, lockouts and logs.", - "healthMatrixRange": "Health matrix range", - "providerFilter": "Provider filter", + "providerHealthMatrixTitle": "ماتریس سلامت ارائهدهندگان", + "providerHealthMatrixDescription": "وضعیتهای ارائهدهنده × حساب × مدل بر اساس قطعکنندهها، دورههای انتظار، قفلها و گزارشها.", + "healthMatrixRange": "بازه ماتریس سلامت", + "providerFilter": "فیلتر ارائهدهنده", "onlyIssues": "فقط مشکلات", "refresh": "تازه‌سازی", "accounts": "حساب‌ها", @@ -4851,65 +4851,65 @@ "noTargets": "هیچ مسیر هدفی پیکربندی نشده است." }, "limits": { - "title": "Limits & Quotas", - "rateLimit": "Rate Limit", - "remaining": "Remaining", - "requestsPerMinute": "Requests/min", - "tokensPerMinute": "Tokens/min", - "dailyLimit": "Daily Limit" + "title": "محدودیتها و سهمیهها", + "rateLimit": "محدودیت نرخ", + "remaining": "باقیمانده", + "requestsPerMinute": "درخواست در دقیقه", + "tokensPerMinute": "توکن در دقیقه", + "dailyLimit": "محدودیت روزانه" }, "logs": { - "title": "Logs", - "requestLogs": "Request Logs", - "proxyLogs": "Proxy Logs", - "auditLog": "Audit Log", + "title": "گزارشها", + "requestLogs": "گزارشهای درخواست", + "proxyLogs": "گزارشهای پراکسی", + "auditLog": "گزارش حسابرسی", "console": "Console", - "auditLogDesc": "Administrative actions and security events", - "loading": "Loading...", - "refresh": "Refresh", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", - "showing": "Showing {count} entries (offset {offset})", - "search": "Search", - "timestamp": "Timestamp", - "action": "Action", - "actor": "Actor", - "target": "Target", - "details": "Details", - "ipAddress": "IP Address", + "auditLogDesc": "اقدامات مدیریتی و رویدادهای امنیتی", + "loading": "در حال بارگذاری...", + "refresh": "تازهسازی", + "filterByAction": "فیلتر بر اساس اقدام...", + "filterByActor": "فیلتر بر اساس عامل...", + "filterEntriesAria": "فیلتر کردن ورودیهای گزارش حسابرسی", + "filterByActionTypeAria": "فیلتر بر اساس نوع اقدام", + "filterByActorAria": "فیلتر بر اساس عامل", + "refreshAuditLogAria": "تازهسازی گزارش حسابرسی", + "tableAria": "ورودیهای گزارش حسابرسی", + "failedFetchAuditLog": "دریافت گزارش حسابرسی ناموفق بود", + "showing": "نمایش {count} ورودی (آفست {offset})", + "search": "جستجو", + "timestamp": "مُهر زمانی", + "action": "اقدام", + "actor": "عامل", + "target": "هدف", + "details": "جزئیات", + "ipAddress": "نشانی IP", "notAvailable": "—", - "noEntries": "No audit log entries found", - "previous": "Previous", - "next": "Next", - "providerWarningTitle": "Provider Warnings", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", - "providerWarningDesc": "Some providers returned warnings during request processing", + "noEntries": "هیچ ورودی گزارش ممیزی یافت نشد", + "previous": "قبلی", + "next": "بعدی", + "providerWarningTitle": "هشدارهای ارائهدهنده", + "viewDetails": "مشاهده جزئیات", + "eventMetadata": "فراداده رویداد", + "eventPayload": "محتوای رویداد", + "requestId": "شناسه درخواست", + "providerWarningDesc": "برخی ارائهدهندگان هنگام پردازش درخواست هشدارهایی بازگرداندند", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", - "auditModalSubtitle": "Event details and metadata", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "offset": "آفست", + "limit": "محدودیت", + "status": "وضعیت", + "resourceType": "نوع منبع", + "totalEntries": "مجموع ورودیها", + "tab": "زبانه", + "auditModalSubtitle": "جزئیات و فراداده رویداد", + "close": "بستن", + "runningRequests": "درخواستهای فعال", + "runningRequestsDesc": "نمایش بلادرنگ درخواستهای بالادستیِ در حال اجرا", "clearAll": "پاک کردن همه", "confirmClearActiveRequests": "همه درخواست‌های فعال پاک شود؟", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "مدل", + "provider": "ارائهدهنده", + "account": "حساب", + "elapsed": "زمان سپریشده", "activeStage": "مرحله", "activeStageUnknown": "هنوز به بالادست ارسال نشده است", "activeStageRegistered": "ثبت‌شده", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "جایگاه محدودیت نرخ دریافت شد", "activeStageSendingToProvider": "در حال ارسال به بالادست", "activeStageProviderResponseStarted": "پاسخ بالادست آغاز شد", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "تعداد", + "payloads": "محتواها", + "viewPayloads": "مشاهده", + "activeCount": "{count} فعال", + "clientPayload": "محتوای درخواست کلاینت", + "upstreamPayload": "محتوای ارائهدهنده بالادستی", + "upstreamNotSentYet": "هنوز به بالادست ارسال نشده است", + "runningRequestDetailMeta": "حساب: {account} — زمان سپریشده: {elapsed}", + "export": "برونبری", + "exporting": "در حال برونبری...", + "exportFailed": "برونبری ناموفق بود", "cleanHistoryButton": "پاک‌سازی تاریخچه", "cleanHistoryTitle": "تاریخچه لاگ پاک‌سازی شود؟", "cleanHistoryMessage": "این کار تمام ردیف‌های لاگ درخواست، ردیف‌های جزئیات قدیمی و فایل‌های آرتیفکت محلی در DATA_DIR/call_logs را برای همیشه پاک می‌کند. صفحه زنده پس از پاک‌سازی تازه‌سازی خواهد شد.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} ورودی لاگ، {deletedArtifacts} آرتیفکت و {deletedDetailedLogs} ردیف جزئیات قدیمی پاک‌سازی شدند.", "cleanHistoryEmpty": "هیچ تاریخچه لاگ درخواستی یافت نشد.", "cleanHistoryFailed": "پاک‌سازی تاریخچه لاگ ناموفق بود.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "بازه زمانی", + "lastNHours": "{hours} گذشته", + "defaultRange": "پیشفرض", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "دریافت گزارشها ناموفق بود", + "copyFailed": "کپیکردن ورودی گزارش ناموفق بود", + "copyLogEntry": "کپی ورودی گزارش", "filterByLevel": "فیلتر بر اساس سطح لاگ", "searchPlaceholder": "جستجوی لاگ‌ها…", "searchAria": "جستجوی ورودی‌های لاگ", @@ -4964,49 +4964,49 @@ "tokens": "توکن‌ها" }, "onboarding": { - "welcome": "Welcome", + "welcome": "خوش آمدید", "tiers": "سطوح", - "security": "Security", + "security": "امنیت", "test": "Test", - "ready": "Ready!", - "setPassword": "Set Password", - "addProvider": "Add your first provider", - "getStarted": "Get Started", - "skip": "Skip", - "skipWizard": "Skip wizard entirely", - "skipPassword": "Skip password setup", - "skipAndContinue": "Skip & Continue", - "passwordLabel": "Password", - "confirmPassword": "Confirm Password", - "enterPassword": "Enter password", - "confirmPasswordPlaceholder": "Confirm password", - "passwordsMismatch": "Passwords do not match", - "setupComplete": "Setup Complete!", - "goToDashboard": "Go to Dashboard →", - "welcomeDesc": "OmniRoute is your local AI API proxy. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "multiProvider": "Multi-Provider", - "usageTracking": "Usage Tracking", - "securityDesc": "Set a password to protect your dashboard, or skip for now.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", - "providerDesc": "Connect your first AI provider. You can add more later.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", - "apiKeyRequired": "API Key (required)", - "customUrlOptional": "Custom URL (optional)", - "testDesc": "Let's verify your provider connection works.", - "runTest": "Run Connection Test", - "testingConnection": "Testing connection...", - "connectionSuccessful": "Connection successful! Your provider is ready.", - "noProviderFound": "No provider found. You can add one from the dashboard later.", - "testFailed": "Test failed, but you can configure this later.", - "couldNotTest": "Could not test right now. You can test from the dashboard.", - "doneDesc": "You're all set! Your OmniRoute instance is configured and ready to proxy AI requests.", - "yourEndpoint": "Your endpoint:", - "continue": "Continue", - "retry": "Retry", - "failedSetPassword": "Failed to set password. Try again.", - "failedAddProvider": "Failed to add provider. Try again.", - "connectionError": "Connection error. Please try again.", - "provider": "Provider", + "ready": "آماده است!", + "setPassword": "تنظیم رمز عبور", + "addProvider": "اولین ارائهدهنده خود را اضافه کنید", + "getStarted": "شروع کنید", + "skip": "رد کردن", + "skipWizard": "رد کردن کامل راهاندازی", + "skipPassword": "رد کردن تنظیم رمز عبور", + "skipAndContinue": "رد کردن و ادامه", + "passwordLabel": "رمز عبور", + "confirmPassword": "تأیید رمز عبور", + "enterPassword": "رمز عبور را وارد کنید", + "confirmPasswordPlaceholder": "رمز عبور را تأیید کنید", + "passwordsMismatch": "رمزهای عبور مطابقت ندارند", + "setupComplete": "راهاندازی کامل شد!", + "goToDashboard": "رفتن به داشبورد ←", + "welcomeDesc": "OmniRoute پراکسی محلی API هوش مصنوعی شماست. این ابزار درخواستها را با قابلیت توزیع بار، جایگزینی خودکار هنگام خطا و ردیابی میزان استفاده، به چندین ارائهدهنده هوش مصنوعی هدایت میکند.", + "multiProvider": "چندارائهدهندهای", + "usageTracking": "ردیابی میزان استفاده", + "securityDesc": "برای محافظت از داشبورد خود یک رمز عبور تنظیم کنید یا فعلاً از این مرحله بگذرید.", + "securityDescSkipWarning": "⚠️ بدون رمز عبور، نمیتوانید هنگام راهاندازی ارائهدهندهای اضافه کنید. پس از تنظیم رمز عبور میتوانید بعداً آنها را از داشبورد اضافه کنید.", + "providerDesc": "اولین ارائهدهنده هوش مصنوعی خود را متصل کنید. بعداً میتوانید موارد بیشتری اضافه کنید.", + "providerRequiresPassword": "برای افزودن ارائهدهندگان، ابتدا باید یک رمز عبور تنظیم کنید. لطفاً به مرحله امنیت برگردید و رمز عبور تنظیم کنید، یا بعداً ارائهدهندگان را از داشبورد اضافه کنید.", + "apiKeyRequired": "کلید API (الزامی)", + "customUrlOptional": "نشانی اینترنتی سفارشی (اختیاری)", + "testDesc": "بیایید بررسی کنیم که اتصال به ارائهدهنده شما کار میکند.", + "runTest": "اجرای آزمایش اتصال", + "testingConnection": "در حال آزمایش اتصال...", + "connectionSuccessful": "اتصال موفق بود! ارائهدهنده شما آماده است.", + "noProviderFound": "هیچ ارائهدهندهای یافت نشد. میتوانید بعداً یکی را از داشبورد اضافه کنید.", + "testFailed": "آزمایش ناموفق بود، اما میتوانید این مورد را بعداً پیکربندی کنید.", + "couldNotTest": "در حال حاضر آزمایش امکانپذیر نبود. میتوانید از داشبورد آزمایش کنید.", + "doneDesc": "همهچیز آماده است! نمونه OmniRoute شما پیکربندی شده و برای پراکسیکردن درخواستهای هوش مصنوعی آماده است.", + "yourEndpoint": "نقطه پایانی شما:", + "continue": "ادامه", + "retry": "تلاش مجدد", + "failedSetPassword": "تنظیم رمز عبور ناموفق بود. دوباره تلاش کنید.", + "failedAddProvider": "افزودن ارائهدهنده ناموفق بود. دوباره تلاش کنید.", + "connectionError": "خطای اتصال. لطفاً دوباره تلاش کنید.", + "provider": "ارائهدهنده", "apiKeyHelp": "کلید API رمز عبور خدمات هوش مصنوعی است. یکی از وب سایت ارائه دهنده خود (به عنوان مثال platform.openai.com، console.anthropic.com) دریافت کنید.", "tier": { "subtitle": "OmniRoute ارائه دهندگان را در سه سطح سازماندهی می کند، بنابراین مسیریابی ابتدا مطمئن ترین و کم هزینه ترین مسیر را ترجیح می دهد.", @@ -5049,12 +5049,12 @@ } }, "providers": { - "title": "Providers", + "title": "ارائهدهندگان", "Account Deactivated": "حساب غیرفعال شد", "allProviders": "همه ارائه دهندگان", "audioProviders": "ارائه دهندگان صدا", "showFreeOnly": "فقط رایگان", - "addProvider": "Add Provider", + "addProvider": "افزودن ارائهدهنده", "addFirstProvider": "اولین ارائه دهنده خود را اضافه کنید", "addFirstProviderDesc": "برای شروع درخواست‌های مسیریابی از طریق OmniRoute، یک ارائه‌دهنده هوش مصنوعی را وصل کنید. می توانید از ارائه دهندگان رایگان، کلیدهای API یا حساب های OAuth استفاده کنید.", "learnMore": "بیشتر بدانید", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "در حال درون‌ریزی…", "importFromFileImport": "درون‌ریزی {count} ارائه‌دهنده", "importFromFileResult": "{success} ارائه‌دهنده درون‌ریزی شد ({failed} ناموفق)", + "importFromFileDownloadTemplate": "دانلود الگوی CSV", + "importFromFileMoreErrors": "‏+{count} مورد دیگر", + "importFromFileSchemaHint": "ستونهای CSV ترتیبی هستند: provider، name، apiKey، baseUrl (اختیاری)، priority (اختیاری). ستون provider باید شناسهٔ یک ارائهدهندهٔ مدیریتشدهٔ موجود یا شناسهٔ یک گرهٔ سازگار با OpenAI/Anthropic باشد که از قبل ثبت شده است — این درونریزی گرههای نقطهٔ پایانی جدید ایجاد نمیکند.", "adaptaTutorial": { "title": "نحوه اتصال به Adapta Web", "introPrefix": "Adapta از طریق Clerk احراز هویت می‌کند. توکن", @@ -5103,31 +5106,31 @@ "tipPrefix": "کوکی", "tipSuffix": "طولانی‌مدت است، معمولاً برای چند ماه. شما فقط در صورتی نیاز به تمدید آن دارید که خارج شوید یا Adapta نشست را باطل کند." }, - "editProvider": "Edit Provider", - "deleteProvider": "Delete Provider", - "noProviders": "No providers configured", - "modelAvailability": "Model Availability", - "accounts": "Accounts", - "newAccount": "New Account", - "deleteConfirm": "Are you sure you want to delete this provider?", - "testing": "Testing...", - "testConnection": "Test Connection", - "testSuccess": "Connection successful", - "testFailed": "Connection failed", - "available": "Available", - "cooldown": "Cooldown", - "unavailable": "Unavailable", - "unknown": "Unknown", + "editProvider": "ویرایش ارائهدهنده", + "deleteProvider": "حذف ارائهدهنده", + "noProviders": "هیچ ارائهدهندهای پیکربندی نشده است", + "modelAvailability": "دسترسپذیری مدل", + "accounts": "حسابها", + "newAccount": "حساب جدید", + "deleteConfirm": "آیا مطمئن هستید که میخواهید این ارائهدهنده را حذف کنید؟", + "testing": "در حال آزمایش...", + "testConnection": "آزمایش اتصال", + "testSuccess": "اتصال موفق بود", + "testFailed": "اتصال ناموفق بود", + "available": "در دسترس", + "cooldown": "زمان انتظار", + "unavailable": "در دسترس نیست", + "unknown": "نامشخص", "oauthLabel": "OAuth", - "compatibleLabel": "Compatible", + "compatibleLabel": "سازگار", "chat": "Chat", "responses": "Responses", "messages": "Messages", - "oauthProviders": "OAuth Providers", - "freeProviders": "Free Providers", - "apiKeyProviders": "API Key Providers", - "compatibleProviders": "API Key Compatible Providers", - "testAll": "Test All", + "oauthProviders": "ارائهدهندگان OAuth", + "freeProviders": "ارائهدهندگان رایگان", + "apiKeyProviders": "ارائهدهندگان کلید API", + "compatibleProviders": "ارائهدهندگان سازگار با کلید API", + "testAll": "آزمایش همه", "reorderByAvailability": "ترتیب مجدد", "reorderByAvailabilityTitle": "ترتیب مجدد اتصالات بر اساس در دسترس بودن", "reorderByAvailabilityError": "ترتیب مجدد اتصالات بر اساس در دسترس بودن ناموفق بود", @@ -5135,10 +5138,10 @@ "distributing": "در حال توزیع...", "selectedCount": "{count, plural, one {# انتخاب شده} other {# انتخاب شده}}", "accountsCount": "{count, plural, one {# حساب} other {# حساب}}", - "testAllOAuth": "Test all OAuth connections", - "testAllFree": "Test all Free connections", - "testAllApiKey": "Test all API Key connections", - "testAllCompatible": "Test all Compatible connections", + "testAllOAuth": "آزمایش همهٔ اتصالهای OAuth", + "testAllFree": "آزمایش همهٔ اتصالهای رایگان", + "testAllApiKey": "آزمایش همهٔ اتصالهای کلید API", + "testAllCompatible": "آزمایش همهٔ اتصالهای سازگار", "testAllModels": "تست همه مدل‌ها", "testAllModelsConfirm": "تست همه مدل‌های قابل مشاهده؟ در صورت فعال بودن پنهان‌سازی خودکار، مدل‌های ناموفق پنهان خواهند شد.", "testingAllModels": "در حال تست {done}/{total}...", @@ -5154,9 +5157,9 @@ "filterByVisibility": "فیلتر بر اساس قابلیت مشاهده", "autoHideFailed": "پنهان‌سازی خودکار مدل‌های ناموفق", "autoHideFailedHint": "در صورت فعال بودن، «تست همه» خطاهای غیرگذرا را از کاتالوگ‌های عمومی مانند /v1/models پنهان می‌کند. تست‌های تک‌مدلی هرگز به‌طور خودکار پنهان نمی‌شوند.", - "connected": "{count} Connected", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", + "connected": "{count} متصل", + "errorCount": "{count} خطا ({code})", + "errorCountNoCode": "{count} خطا", "testAllCompleted": "{total} مدل تست شد: {ok} موفق، {failed} ناموفق", "modelAutoHidden": "مدل {model} به‌طور خودکار پنهان شد (تست ناموفق بود)", "filterAll": "همه", @@ -5164,9 +5167,9 @@ "filterHidden": "فقط پنهان", "modelsHiddenCount": "{count} پنهان", "warningCount": "{count} هشدار", - "noConnections": "No connections", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "noConnections": "بدون اتصال", + "expiredBadge": "منقضیشده", + "expiringSoonBadge": "بهزودی منقضی میشود", "freeTier": "ردیف رایگان", "freeTierAvailable": "طبقه رایگان موجود است", "hasFreeTooltip": "طرح رایگان موجود است", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "این ارائه دهنده منسوخ شده است", "riskNotice": { "title": "قبل از ادامه", - "detailsTitle": "Usage caveats", + "detailsTitle": "ملاحظات استفاده", "tooltip": "ارائه‌دهنده با هشدارهای استفاده — برای جزئیات کلیک کنید", "oauth": "این ارائه‌دهنده از نشست/OAuth رسمی محصول شما استفاده می‌کند که برای استفاده از پروکسی/روتر مجاز نیست. ما استفاده فشرده از عامل‌های خودکار (به سبک OpenCloud، جریان‌های چندمرحله‌ای طولانی، دسته‌های بزرگ) را توصیه نمی‌کنیم — ممکن است سرویس بالادستی با محدود کردن یا مسدود کردن حساب واکنش نشان دهد. با مسئولیت خودتان استفاده کنید.", "webCookie": "این ارائه‌دهنده از طریق کوکی‌های نشست وب شما احراز هویت می‌کند. سرویس بالادستی ممکن است در هر زمان نشست را باطل کند و شما را ملزم به ورود مجدد نماید. برای عملیات طولانی بدون نظارت توصیه نمی‌شود. با مسئولیت خودتان استفاده کنید.", @@ -5188,95 +5191,95 @@ "cancel": "لغو" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} اتصال علامتگذاری شده است — تا {maxFailures} خرابی اخیر{lastFailureSuffix}. برای مشاهدهٔ وضعیت اتصال کلیک کنید.", + "lastFailureSuffix": "(آخرین خطا {time})", + "ariaLabel": "مشاهده جزئیات سلامت اتصال، {count} هشدار" }, - "disabled": "Disabled", - "enableProvider": "Enable provider", - "disableProvider": "Disable provider", - "testResults": "Test Results", - "noCompatibleYet": "No compatible providers added yet", - "compatibleHint": "Use the buttons above to add OpenAI or Anthropic compatible endpoints", - "addOpenAICompatible": "Add OpenAI Compatible", - "addAnthropicCompatible": "Add Anthropic Compatible", - "addNewProvider": "Add New Provider", - "backToProviders": "Back to Providers", - "configureNewProvider": "Configure a new AI provider to use with your applications.", - "providerLabel": "Provider", - "selectProvider": "Select a provider", - "selectedProvider": "Selected provider", - "authMethod": "Authentication Method", - "apiKeyLabel": "API Key", - "apiKeyRequired": "API Key is required", - "selectProviderRequired": "Please select a provider", - "enterApiKey": "Enter your API key", - "apiKeySecure": "Your API key will be encrypted and stored securely.", - "oauth2Connect": "Connect with OAuth2", + "disabled": "غیرفعال", + "enableProvider": "فعالکردن ارائهدهنده", + "disableProvider": "غیرفعالکردن ارائهدهنده", + "testResults": "نتایج آزمایش", + "noCompatibleYet": "هنوز هیچ ارائهدهنده سازگاری اضافه نشده است", + "compatibleHint": "برای افزودن نقاط پایانی سازگار با OpenAI یا Anthropic از دکمههای بالا استفاده کنید", + "addOpenAICompatible": "افزودن مورد سازگار با OpenAI", + "addAnthropicCompatible": "افزودن مورد سازگار با Anthropic", + "addNewProvider": "افزودن ارائهدهنده جدید", + "backToProviders": "بازگشت به ارائهدهندگان", + "configureNewProvider": "یک ارائهدهنده هوش مصنوعی جدید را برای استفاده در برنامههای خود پیکربندی کنید.", + "providerLabel": "ارائهدهنده", + "selectProvider": "یک ارائهدهنده انتخاب کنید", + "selectedProvider": "ارائهدهنده انتخابشده", + "authMethod": "روش احراز هویت", + "apiKeyLabel": "کلید API", + "apiKeyRequired": "کلید API الزامی است", + "selectProviderRequired": "لطفاً یک ارائهدهنده انتخاب کنید", + "enterApiKey": "کلید API خود را وارد کنید", + "apiKeySecure": "کلید API شما رمزگذاری و بهصورت امن ذخیره خواهد شد.", + "oauth2Connect": "اتصال با OAuth2", "oauth2Label": "OAuth2", - "oauth2Desc": "Connect your account using OAuth2 authentication.", - "displayName": "Display Name", - "displayNamePlaceholder": "e.g., Production API, Dev Environment", - "displayNameHint": "Optional. A friendly name to identify this configuration.", - "active": "Active", - "activeDescription": "Enable this provider for use in your applications", - "cancel": "Cancel", - "createProvider": "Create Provider", - "failedCreate": "Failed to create provider", - "errorOccurred": "An error occurred. Please try again.", - "modelStatus": "Model Status", - "showConfiguredOnly": "Configured only", - "allModelsOperational": "All models operational", - "modelsWithIssues": "{count} model(s) with issues", - "allModelsNormal": "All models are responding normally.", - "cooldownCleared": "Cooldown cleared for {model}", - "failedClearCooldown": "Failed to clear cooldown", - "loadingAvailability": "Loading model availability...", - "clearCooldown": "Clear", - "clearing": "Clearing...", - "until": "Until {time}", - "providerTestFailed": "Provider test failed", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "oauth2Desc": "حساب خود را با استفاده از احراز هویت OAuth2 متصل کنید.", + "displayName": "نام نمایشی", + "displayNamePlaceholder": "برای مثال، API تولید، محیط توسعه", + "displayNameHint": "اختیاری. نامی ساده برای شناسایی این پیکربندی.", + "active": "فعال", + "activeDescription": "این ارائهدهنده را برای استفاده در برنامههای خود فعال کنید", + "cancel": "لغو", + "createProvider": "ایجاد ارائهدهنده", + "failedCreate": "ایجاد ارائهدهنده ناموفق بود", + "errorOccurred": "خطایی رخ داد. لطفاً دوباره تلاش کنید.", + "modelStatus": "وضعیت مدل", + "showConfiguredOnly": "فقط پیکربندیشدهها", + "allModelsOperational": "همه مدلها عملیاتی هستند", + "modelsWithIssues": "{count} مدل دارای مشکل", + "allModelsNormal": "همه مدلها بهطور عادی پاسخ میدهند.", + "cooldownCleared": "دوره انتظار برای {model} پاک شد", + "failedClearCooldown": "پاککردن دوره انتظار ناموفق بود", + "loadingAvailability": "در حال بارگذاری وضعیت دسترسی مدلها...", + "clearCooldown": "پاک کردن", + "clearing": "در حال پاک کردن...", + "until": "تا {time}", + "providerTestFailed": "آزمایش ارائهدهنده ناموفق بود", + "providerTestTimeout": "مهلت آزمایش ارائهدهنده به پایان رسید — تعداد اتصالهای همزمان برای آزمایش بیش از حد زیاد است", "modeTest": "{mode} Test", - "passedCount": "{count} passed", - "failedCount": "{count} failed", - "testedCount": "{count} tested", + "passedCount": "{count} مورد موفق", + "failedCount": "{count} مورد ناموفق", + "testedCount": "{count} مورد آزمایش شد", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", - "noActiveConnectionsInGroup": "No active connections found for this group.", - "allTestsPassed": "All {total} tests passed", - "testSummary": "{passed}/{total} passed, {failed} failed", - "nameLabel": "Name", + "errorShort": "خطا", + "noActiveConnectionsInGroup": "هیچ اتصال فعالی برای این گروه یافت نشد.", + "allTestsPassed": "هر {total} آزمایش موفق بودند", + "testSummary": "{passed} از {total} موفق، {failed} ناموفق", + "nameLabel": "نام", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", - "apiTypeLabel": "API Type", - "prefixHint": "Required. Unique prefix for model names.", - "nameHint": "Required. A friendly label for this node.", - "baseUrlHint": "Required. Provider API base URL.", + "baseUrlLabel": "URL پایه", + "apiTypeLabel": "نوع API", + "prefixHint": "الزامی است. پیشوندی منحصربهفرد برای نام مدلها.", + "nameHint": "الزامی است. یک برچسب خوانا برای این گره.", + "baseUrlHint": "الزامی است. URL پایه API ارائهدهنده.", "iconUrlLabel": "URL آیکون", "iconUrlHint": "اختیاری. URL تصویری که به عنوان آیکون این ارائه‌دهنده نمایش داده می‌شود.", "iconUrlInvalid": "آدرس آیکون نامعتبر است. از آدرس http(s):// یا data:image/*;base64 استفاده کنید.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "منطقه زمانی بازنشانی سهمیه روزانه", + "dailyQuotaResetTimezoneHint": "منطقه زمانی اختیاری IANA که وقتی سرویس بالادستی X-RateLimit-Reset را ارائه نمیکند، استفاده میشود. برای حفظ یک دوره انتظار کوتاه، خالی بگذارید.", + "dailyQuotaResetHourLabel": "ساعت بازنشانی سهمیه روزانه", + "dailyQuotaResetHourHint": "ساعت محلی از 0 تا 23 در منطقه زمانی بالا. خالی بودن یعنی گره ساعت مختص خود ندارد.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", - "validateConnection": "Validate Connection", - "validating": "Validating...", - "connectionValid": "Connection is valid!", - "connectionFailed": "Connection failed. Check URL and key.", - "testKeyLabel": "Test API Key", - "testKeyPlaceholder": "sk-... (for validation only)", - "providerNotFound": "Provider not found", - "deleteConnectionConfirm": "Delete this connection?", + "validateConnection": "اعتبارسنجی اتصال", + "validating": "در حال اعتبارسنجی...", + "connectionValid": "اتصال معتبر است!", + "connectionFailed": "اتصال ناموفق بود. URL و کلید را بررسی کنید.", + "testKeyLabel": "آزمایش کلید API", + "testKeyPlaceholder": "sk-... (فقط برای اعتبارسنجی)", + "providerNotFound": "ارائهدهنده یافت نشد", + "deleteConnectionConfirm": "این اتصال حذف شود؟", "deleteConnectionConfirmNamed": "آیا مطمئن هستید که می‌خواهید {name} را حذف کنید؟ این عملیات قابل بازگشت نیست.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "حذف موارد انتخابشده ({count})", + "batchDeleteConfirm": "{count} اتصال حذف شود؟ این عملیات قابل بازگشت نیست.", + "batchDeleteSuccess": "{count} اتصال حذف شد", "batchActivateSelected": "فعال‌سازی", "batchDeactivateSelected": "غیرفعال‌سازی", "batchRetestSelected": "تست مجدد", @@ -5292,32 +5295,32 @@ "filterError": "خطا", "filterBanned": "مسدود", "filterCreditsExhausted": "اعتبار تمام‌شده", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "جستجوی حسابها…", "noFilteredConnections": "هیچ اتصالی با فیلتر فعلی مطابقت ندارد.", - "failedSetAlias": "Failed to set alias", + "failedSetAlias": "تنظیم نام مستعار ناموفق بود", "setAliasSuccess": "نام مستعار {alias} تنظیم شد", "deleteAliasSuccess": "نام مستعار {alias} حذف شد", - "failedSaveConnection": "Failed to save connection", - "failedSaveConnectionRetry": "Failed to save connection. Please try again.", - "failedRetestConnection": "Failed to retest connection", - "deleteCompatibleNodeConfirm": "Delete this {type} Compatible node?", - "anthropicCompatibleDetails": "Anthropic Compatible Details", - "openaiCompatibleDetails": "OpenAI Compatible Details", + "failedSaveConnection": "ذخیره اتصال ناموفق بود", + "failedSaveConnectionRetry": "ذخیره اتصال ناموفق بود. لطفاً دوباره تلاش کنید.", + "failedRetestConnection": "آزمایش مجدد اتصال ناموفق بود", + "deleteCompatibleNodeConfirm": "این گره سازگار با {type} حذف شود؟", + "anthropicCompatibleDetails": "جزئیات سازگاری با Anthropic", + "openaiCompatibleDetails": "جزئیات سازگاری با OpenAI", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "تعبیهها", + "audioTranscriptions": "رونویسیهای صوتی", + "audioSpeech": "گفتار صوتی", + "imagesGenerations": "تولید تصاویر", "chatCompletions": "Chat Completions", - "importingModels": "Importing...", - "importFromModels": "Import from /models", - "modelsImported": "{count} models imported", - "allModelsAlreadyImported": "All models already imported", - "noNewModelsToImport": "No new models to import — all models are already in the registry or custom models list", - "skippingExistingModels": "Skipping {count} existing models", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "importingModels": "در حال وارد کردن...", + "importFromModels": "وارد کردن از /models", + "modelsImported": "{count} مدل وارد شد", + "allModelsAlreadyImported": "همه مدلها قبلاً وارد شدهاند", + "noNewModelsToImport": "مدل جدیدی برای وارد کردن وجود ندارد — همه مدلها از قبل در رجیستری یا فهرست مدلهای سفارشی هستند", + "skippingExistingModels": "از {count} مدل موجود صرفنظر میشود", + "autoSync": "همگامسازی خودکار", + "autoSyncShort": "همگامسازی", "autoFetchModels": "مدل‌های بالادستی را به‌طور خودکار دریافت کنید", "autoFetchModelsTooltip": "مدل‌های بالادستی را در صورت نیاز دریافت و کش کنید", "autoFetchModelsEnabled": "مدل بالادستی بارگذاری خودکار فعال است", @@ -5329,52 +5332,52 @@ "resetToUpstreamDefaults": "بازگرداندن تنظیمات پیش‌فرض upstream", "resetToUpstreamDefaultsSuccess": "تنظیمات پیش‌فرض مدل بالادستی بازیابی شد", "resetToUpstreamDefaultsFailed": "بازگردانی پیش‌فرض‌های مدل upstream ناموفق بود", - "autoSyncTooltip": "Automatically refresh model list every 24h (configurable via MODEL_SYNC_INTERVAL_HOURS)", - "autoSyncEnabled": "Auto-sync enabled — models will refresh periodically", - "autoSyncDisabled": "Auto-sync disabled", - "autoSyncToggleFailed": "Failed to toggle auto-sync", - "autoSyncPartialFailure": "Auto-sync updated for some connections, but not all", - "clearAllModels": "Clear All Models", - "clearAllModelsConfirm": "Are you sure you want to remove all models for this provider? This cannot be undone.", - "clearAllModelsSuccess": "All models cleared", - "clearAllModelsFailed": "Failed to clear models", - "addConnectionToImport": "Add a connection to enable importing.", - "noModelsConfigured": "No models configured", - "connectionCount": "{count} connection(s)", - "fetchingModels": "Fetching available models...", - "failedFetchModels": "Failed to fetch models", + "autoSyncTooltip": "تازهسازی خودکار فهرست مدلها هر ۲۴ ساعت (قابل تنظیم از طریق MODEL_SYNC_INTERVAL_HOURS)", + "autoSyncEnabled": "همگامسازی خودکار فعال شد — مدلها بهصورت دورهای تازهسازی خواهند شد", + "autoSyncDisabled": "همگامسازی خودکار غیرفعال شد", + "autoSyncToggleFailed": "تغییر وضعیت همگامسازی خودکار ناموفق بود", + "autoSyncPartialFailure": "همگامسازی خودکار برای برخی اتصالها بهروزرسانی شد، اما نه برای همه", + "clearAllModels": "پاک کردن همه مدلها", + "clearAllModelsConfirm": "آیا مطمئن هستید که میخواهید همه مدلهای این ارائهدهنده را حذف کنید؟ این کار قابل بازگشت نیست.", + "clearAllModelsSuccess": "همه مدلها پاک شدند", + "clearAllModelsFailed": "پاک کردن مدلها ناموفق بود", + "addConnectionToImport": "برای فعال کردن وارد کردن، یک اتصال اضافه کنید.", + "noModelsConfigured": "هیچ مدلی پیکربندی نشده است", + "connectionCount": "{count} اتصال", + "fetchingModels": "در حال دریافت مدلهای موجود...", + "failedFetchModels": "دریافت مدلها ناموفق بود", "noFreeModelsFound": "هیچ مدل رایگانی برای این ارائه‌دهنده یافت نشد — چیزی وارد نشد.", "fetchModelsSuccess": "{count} مدل جدید یافت شد", "fetchModelsFailed": "واکشی خودکار مدل‌ها امکان‌پذیر نبود (می‌توانید از تنظیمات دوباره امتحان کنید)", - "noModelsFound": "No models found", - "importFailed": "Import failed", - "noNewModelsAdded": "No new models were added.", + "noModelsFound": "مدلی یافت نشد", + "importFailed": "وارد کردن ناموفق بود", + "noNewModelsAdded": "هیچ مدل جدیدی اضافه نشد.", "adding": "Adding...", - "close": "Close", - "importingModelsTitle": "Importing Models", - "copyModel": "Copy model", - "filterModels": "Filter models...", + "close": "بستن", + "importingModelsTitle": "در حال وارد کردن مدلها", + "copyModel": "کپی مدل", + "filterModels": "فیلتر کردن مدلها...", "testAllRateLimited": "محدودیت نرخ درخواست فرا رسید، زودتر متوقف شد", "hideFailedAuto": "پنهان‌سازی خودکار مدل‌های ناموفق", - "selectAllModels": "Select all", + "selectAllModels": "انتخاب همه", "hideAllModels": "پنهان کردن همه", - "modelsActive": "Active", - "showModel": "Show model", - "hideModel": "Hide model", - "removeModel": "Remove model", - "rateLimitProtected": "Protected", - "rateLimitUnprotected": "Unprotected", + "modelsActive": "فعال", + "showModel": "نمایش مدل", + "hideModel": "پنهان کردن مدل", + "removeModel": "حذف مدل", + "rateLimitProtected": "محافظتشده", + "rateLimitUnprotected": "بدون محافظت", "providerQuotaShort": "سهمیه", "hideConnectionFromProviderQuota": "پنهان کردن این حساب از سهمیه ارائه‌دهنده", "showConnectionInProviderQuota": "نمایش این حساب در سهمیه ارائه‌دهنده", "quotaVisibilityUpdateFailed": "به‌روزرسانی وضعیت نمایش سهمیه ارائه‌دهنده ناموفق بود", - "enableRateLimitProtection": "Click to enable rate limit protection", - "disableRateLimitProtection": "Click to disable rate limit protection", + "enableRateLimitProtection": "برای فعالکردن محافظت محدودیت نرخ کلیک کنید", + "disableRateLimitProtection": "برای غیرفعالکردن محافظت محدودیت نرخ کلیک کنید", "testAllProgress": "آزمایش‌شده {done}/{total}", "testAllFailedHidden": "{count} مدل ناموفق پنهان شد", "testAllDone": "همه مدل‌ها آزمایش شدند", - "productionKey": "Production Key", - "enterNewApiKey": "Enter new API key", + "productionKey": "کلید محیط عملیاتی", + "enterNewApiKey": "کلید API جدید را وارد کنید", "codexApplyModalTitle": "به Local Codex اعمال کنید", "codexApplyTargetLabel": "مسیر هدف", "codexApplyBackupLabel": "پشتیبان گیری", @@ -5386,77 +5389,77 @@ "bulkAddFormatHint": "یک کلید در هر خط فرمت: name|apiKey یا فقط apiKey (به طور خودکار توسط فهرست نامگذاری می شود).", "bulkValidateKeys": "هر کلید را قبل از ذخیره اعتبارسنجی کنید (آهسته تر)", "bulkAddAllKeys": "افزودن همه کلیدها", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", - "optional": "Optional", + "bulkAddedCount": "{count, plural, one {# کلید اضافه شد} other {# کلید اضافه شدند}}", + "bulkFailedCount": "{count, plural, one {# مورد ناموفق بود} other {# مورد ناموفق بودند}}", + "optional": "اختیاری", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", "compatibleDefaultModelLabel": "مدل پیش‌فرض", "compatibleDefaultModelHint": "شناسه مدل را دقیقاً همان‌طور که نقطه پایانی سازگار شما انتظار دارد وارد کنید. این مدل به عنوان پیش‌فرض اتصال ذخیره خواهد شد.", - "failedImportModels": "Failed to import models", - "noModelsReturnedFromEndpoint": "No models returned from /models endpoint.", - "importingModelsProgress": "Importing {current} of {total} models...", - "foundModelsStartingImport": "Found {count} models. Starting import...", - "importingModelById": "Importing {modelId}...", - "importSuccessCount": "Successfully imported {count, plural, one {# model} other {# models}}!", - "noNewModelsAddedExisting": "No new models were added (all already exist).", - "importDoneCount": "✓ Done! {count, plural, one {# model imported.} other {# models imported.}}", - "unexpectedErrorOccurred": "An unexpected error occurred", + "failedImportModels": "درونریزی مدلها ناموفق بود", + "noModelsReturnedFromEndpoint": "هیچ مدلی از نقطه پایانی /models بازگردانده نشد.", + "importingModelsProgress": "در حال درونریزی مدل {current} از {total}...", + "foundModelsStartingImport": "{count} مدل پیدا شد. درونریزی آغاز میشود...", + "importingModelById": "در حال درونریزی {modelId}...", + "importSuccessCount": "{count, plural, one {# مدل با موفقیت درونریزی شد!} other {# مدل با موفقیت درونریزی شدند!}}", + "noNewModelsAddedExisting": "هیچ مدل جدیدی اضافه نشد (همه از قبل وجود دارند).", + "importDoneCount": "✓ انجام شد! {count, plural, one {# مدل درونریزی شد.} other {# مدل درونریزی شدند.}}", + "unexpectedErrorOccurred": "خطایی غیرمنتظره رخ داد", "getApiKey": "دریافت کلید API", "getApiKeyDescription": "برای ثبت‌نام یا عضویت در یک کلید API", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# اتصال} other {# اتصال}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", - "add": "Add", - "edit": "Edit", - "delete": "Delete", + "add": "افزودن", + "edit": "ویرایش", + "delete": "حذف", "anthropic": "Anthropic", "openai": "OpenAI", - "singleConnectionPerCompatible": "Only one connection is allowed per compatible node. Add another node if you need more connections.", - "connections": "Connections", - "providerProxyTitleConfigured": "Provider proxy: {host}", - "configured": "configured", - "providerProxyConfigureHint": "Configure proxy for all connections of this provider", - "providerProxy": "Provider Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", - "noConnectionsYet": "No connections yet", - "addFirstConnectionHint": "Add your first connection to get started", - "addConnection": "Add Connection", - "availableModels": "Available Models", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", - "pageAutoRefresh": "Page will refresh automatically...", - "statusDisabled": "disabled", - "statusConnected": "connected", - "statusRuntimeIssue": "runtime issue", - "statusAuthFailed": "auth failed", - "statusRateLimited": "rate limited", - "statusNetworkIssue": "network issue", - "statusTestUnsupported": "test unsupported", - "statusUnavailable": "unavailable", - "statusFailed": "failed", - "statusError": "error", - "oauthAccount": "OAuth Account", - "errorTypeRuntime": "Local runtime", - "errorTypeUpstreamAuth": "Upstream auth", - "errorTypeMissingCredential": "Missing credential", - "errorTypeRefreshFailed": "Refresh failed", - "errorTypeTokenExpired": "Token expired", - "errorTypeRateLimited": "Rate limited", - "errorTypeUpstreamUnavailable": "Upstream unavailable", - "errorTypeNetworkError": "Network error", - "errorTypeTestUnsupported": "Test unsupported", - "errorTypeUpstreamError": "Upstream error", + "singleConnectionPerCompatible": "برای هر گره سازگار فقط یک اتصال مجاز است. اگر به اتصالهای بیشتری نیاز دارید، گره دیگری اضافه کنید.", + "connections": "اتصالها", + "providerProxyTitleConfigured": "پروکسی ارائهدهنده: {host}", + "configured": "پیکربندیشده", + "providerProxyConfigureHint": "پیکربندی پروکسی برای همه اتصالهای این ارائهدهنده", + "providerProxy": "پروکسی ارائهدهنده", + "repairEnv": "ترمیم env", + "repairEnvWorking": "در حال ترمیم...", + "repairEnvHint": "مقادیر پیشفرض مفقود OAuth را بدون بازنویسی مقادیر موجود در .env بازیابی کنید.", + "repairEnvSuccess": "مقادیر پیشفرض OAuth بازیابی شدند", + "repairEnvFailed": "ترمیم .env ناموفق بود", + "noConnectionsYet": "هنوز اتصالی وجود ندارد", + "addFirstConnectionHint": "برای شروع، نخستین اتصال خود را اضافه کنید", + "addConnection": "افزودن اتصال", + "availableModels": "مدلهای موجود", + "builtInModels": "مدلهای داخلی", + "builtInModelsHint": "مدلهای رجیستری برای این ارائهدهنده. برای تنظیم گزینههای سازگاری از آیکون مداد استفاده کنید.", + "pageAutoRefresh": "صفحه بهطور خودکار بازخوانی خواهد شد...", + "statusDisabled": "غیرفعال", + "statusConnected": "متصل", + "statusRuntimeIssue": "مشکل زمان اجرا", + "statusAuthFailed": "احراز هویت ناموفق بود", + "statusRateLimited": "محدودیت نرخ اعمال شده", + "statusNetworkIssue": "مشکل شبکه", + "statusTestUnsupported": "آزمایش پشتیبانی نمیشود", + "statusUnavailable": "در دسترس نیست", + "statusFailed": "ناموفق", + "statusError": "خطا", + "oauthAccount": "حساب OAuth", + "errorTypeRuntime": "زمان اجرای محلی", + "errorTypeUpstreamAuth": "احراز هویت بالادستی", + "errorTypeMissingCredential": "اطلاعات ورود موجود نیست", + "errorTypeRefreshFailed": "تازهسازی ناموفق بود", + "errorTypeTokenExpired": "توکن منقضی شده است", + "errorTypeRateLimited": "محدودیت نرخ اعمال شده", + "errorTypeUpstreamUnavailable": "سرویس بالادستی در دسترس نیست", + "errorTypeNetworkError": "خطای شبکه", + "errorTypeTestUnsupported": "آزمایش پشتیبانی نمیشود", + "errorTypeUpstreamError": "خطای بالادستی", "errorTypeCreditsExhausted": "بدون اعتبار", "errorTypeBanned": "403 مسدود شده", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", - "proxySourceKey": "Key", + "proxySourceGlobal": "سراسری", + "proxySourceProvider": "ارائهدهنده", + "proxySourceKey": "کلید", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "پروکسی روشن", "proxyOff": "مستقیم (دور زدن پروکسی)", @@ -5468,31 +5471,31 @@ "perKeyProxyDisabledTitle": "تخصیص پروکسی به ازای هر کلید برای این ارائه‌دهنده غیرفعال شد", "autoPriority": "Auto: {priority}", "proxy": "Proxy", - "retestAuthentication": "Retest authentication", - "retest": "Retest", - "disableConnection": "Disable connection", - "enableConnection": "Enable connection", - "reauthenticateConnection": "Re-authenticate this connection", - "proxyConfig": "Proxy config", - "aliasExistsAlert": "Alias \"{alias}\" already exists. Please use a different model or edit existing alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter supports any model. Add models and create aliases for quick access.", - "modelIdFromOpenRouter": "Model ID (from OpenRouter)", + "retestAuthentication": "آزمایش مجدد احراز هویت", + "retest": "آزمایش مجدد", + "disableConnection": "غیرفعالکردن اتصال", + "enableConnection": "فعالکردن اتصال", + "reauthenticateConnection": "احراز هویت مجدد این اتصال", + "proxyConfig": "پیکربندی پروکسی", + "aliasExistsAlert": "نام مستعار «{alias}» از قبل وجود دارد. لطفاً از مدل دیگری استفاده کنید یا نام مستعار موجود را ویرایش کنید.", + "aliasInputPlaceholder": "نام مستعار", + "clickToSetAlias": "برای تنظیم نام مستعار کلیک کنید", + "clickToEditAlias": "نام مستعار: {alias} (برای ویرایش کلیک کنید)", + "openRouterAnyModelHint": "OpenRouter از هر مدلی پشتیبانی میکند. مدلها را اضافه کنید و برای دسترسی سریع نام مستعار بسازید.", + "modelIdFromOpenRouter": "شناسه مدل (از OpenRouter)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", - "customModels": "Custom Models", - "customModelsHint": "Add model IDs not in the default list. These will be available for routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "customModels": "مدلهای سفارشی", + "customModelsHint": "شناسه مدلهایی را که در فهرست پیشفرض نیستند اضافه کنید. این مدلها برای مسیریابی در دسترس خواهند بود.", + "normalizeToolCallIdLabel": "شناسههای فراخوانی ابزار را به ۹ نویسه نرمالسازی کنید (برای مثال، Mistral)", + "preserveDeveloperRoleLabel": "نقش توسعهدهنده OpenAI Responses را حفظ کنید (آن را به system نگاشت نکنید)", + "compatAdjustmentsTitle": "سازگاری", + "compatButtonLabel": "سازگاری", + "compatToolIdShort": "شناسه ابزار 9", + "compatDeveloperShort": "نقش توسعهدهنده", + "compatDoNotPreserveDeveloper": "نقش توسعهدهنده حفظ نشود", + "compatBadgeNoPreserve": "عدم حفظ", + "compatProtocolLabel": "پروتکل درخواست کلاینت", + "compatProtocolHint": "این گزینهها زمانی اعمال میشوند که OmniRoute این ساختار درخواست را شناسایی کند (OpenAI Chat، Responses API یا Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,84 +5537,84 @@ "interceptFetchHint": "بازنویسی فراخوانی‌های ابزار بومی web_fetch به /v1/web/fetch در OmniRoute.", "interceptionLoadError": "بارگیری تنظیمات رهگیری ناموفق بود: {error}", "interceptionSaveError": "ذخیره تنظیمات رهگیری ناموفق بود: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", - "perModelQuotaLabel": "Per-Model Quota", - "perModelQuotaDescription": "When enabled, 429/404 errors only lock the specific model, not the entire connection. Use for providers with per-model rate limits (e.g., ModelScope).", + "ccAliasSectionTitle": "نمایش در Claude Code (claude/…)", + "ccAliasSectionHint": "مدلهای این ارائهدهنده را با شناسههای آینهای claude/<provider>/<model> معرفی کنید تا قابلیت کشف مدل در دروازه Claude Code بتواند آنها را فهرست کند. این گزینه بهطور پیشفرض غیرفعال است — فعالکردن آن تعداد ورودیهای فهرست را برای همه کلاینتها دو برابر میکند.", + "ccAliasProviderLevelLabel": "پیشفرض ارائهدهنده", + "ccAliasModelOverridesLabel": "بازنویسیهای اختصاصی هر مدل", + "ccAliasModelOverrideAriaLabel": "بازنویسی برای {modelId}", + "ccAliasStateInherit": "ارثبری", + "ccAliasStateOn": "روشن", + "ccAliasStateOff": "خاموش", + "ccAliasAddModelPlaceholder": "شناسه مدل (برای مثال gpt-4o)", + "ccAliasAddModelButton": "افزودن بازنویسی", + "ccAliasLoadError": "بارگیری تنظیمات نام مستعار کشف ناموفق بود: {error}", + "ccAliasSaveError": "ذخیره تنظیم نام مستعار کشف ناموفق بود: {error}", + "compatUpstreamHeadersLabel": "هدرهای اضافی بالادستی", + "compatUpstreamHeadersHint": "تنظیمی با سطح دسترسی بالا — سطح اعتماد آن با ویرایش اطلاعات ورود API ارائهدهنده یکسان است؛ فقط مدیران مورد اعتماد باید از آن استفاده کنند. این هدرها پس از افزودن احراز هویت از کلید API ارائهدهنده توسط OmniRoute ادغام میشوند. اگر نام یک هدر سفارشی با نام هدر موجودی یکسان باشد (برای مثال Authorization)، مقدار شما بهطور کامل جایگزین هدر تولیدشده خودکار میشود (از جمله توکن Bearer) — سرویس بالادستی فقط مقداری را میبیند که شما وارد کردهاید، نه کلید موجود در تنظیمات. پیکربندی نادرست ممکن است باعث خطای 401 یا اختلال در احراز هویت بالادستی شود. برای هر هدر یک ردیف وارد کنید (برای مثال Authentication اضافی برای برخی دروازهها). برای پیشنمایش، نشانگر را روی مقدار نگه دارید یا آن را انتخاب کنید. با خارجشدن از فیلد، کلیک در بیرون یا بستن این پنل ذخیره میشود.", + "compatUpstreamHeaderName": "نام هدر", + "compatUpstreamHeaderValue": "مقدار", + "compatUpstreamAddRow": "افزودن هدر", + "compatUpstreamRemoveRow": "حذف ردیف", + "compatBadgeUpstreamHeaders": "هدرها", + "perModelQuotaLabel": "سهمیه اختصاصی هر مدل", + "perModelQuotaDescription": "در صورت فعالبودن، خطاهای 429/404 فقط مدل مشخص را قفل میکنند، نه کل اتصال را. برای ارائهدهندگانی با محدودیت نرخ اختصاصی هر مدل (برای مثال ModelScope) استفاده کنید.", "importFreeModelsOnlyLabel": "فقط وارد کردن مدل‌های رایگان", "importFreeModelsOnlyHint": "در صورت فعال بودن، فقط مدل‌های رایگان این ارائه‌دهنده وارد می‌شوند. مدل‌های پولی نادیده گرفته می‌شوند.", - "perModelQuotaToggle": "Per-Model Quota Toggle", - "modelId": "Model ID", - "customModelPlaceholder": "e.g. gpt-4.5-turbo", - "loading": "Loading...", - "removeCustomModel": "Remove custom model", - "noCustomModels": "No custom models added yet.", - "allSuggestedAliasesExist": "All suggested aliases already exist. Please choose a different model or remove conflicting aliases.", - "failedSaveCustomModel": "Failed to save custom model", - "modelAddedSuccess": "Model {modelId} added successfully", - "failedAddModelTryAgain": "Failed to add model. Please try again.", - "failedSaveImportedModel": "Failed to save imported model to custom database", - "failedImportModelsTryAgain": "Failed to import models. Please try again.", - "failedRemoveModelFromDatabase": "Failed to remove model from database", - "modelRemovedSuccess": "Model removed successfully", - "failedDeleteModelTryAgain": "Failed to delete model. Please try again.", - "compatibleModelsDescription": "Add {type}-compatible models manually or import them from the /models endpoint.", + "perModelQuotaToggle": "کلید تغییر وضعیت سهمیه اختصاصی هر مدل", + "modelId": "شناسه مدل", + "customModelPlaceholder": "برای مثال gpt-4.5-turbo", + "loading": "در حال بارگیری...", + "removeCustomModel": "حذف مدل سفارشی", + "noCustomModels": "هنوز هیچ مدل سفارشیای اضافه نشده است.", + "allSuggestedAliasesExist": "همه نامهای مستعار پیشنهادی از قبل وجود دارند. لطفاً مدل دیگری انتخاب کنید یا نامهای مستعار متعارض را حذف کنید.", + "failedSaveCustomModel": "ذخیره مدل سفارشی ناموفق بود", + "modelAddedSuccess": "مدل {modelId} با موفقیت اضافه شد", + "failedAddModelTryAgain": "افزودن مدل ناموفق بود. لطفاً دوباره تلاش کنید.", + "failedSaveImportedModel": "ذخیره مدل واردشده در پایگاه داده سفارشی ناموفق بود", + "failedImportModelsTryAgain": "وارد کردن مدلها ناموفق بود. لطفاً دوباره تلاش کنید.", + "failedRemoveModelFromDatabase": "حذف مدل از پایگاه داده ناموفق بود", + "modelRemovedSuccess": "مدل با موفقیت حذف شد", + "failedDeleteModelTryAgain": "حذف مدل ناموفق بود. لطفاً دوباره تلاش کنید.", + "compatibleModelsDescription": "مدلهای سازگار با {type} را بهصورت دستی اضافه کنید یا آنها را از نقطه پایانی /models وارد کنید.", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API key validation failed. Please check your key and try again.", - "addProviderApiKeyTitle": "Add {provider} API Key", - "checking": "Checking...", - "check": "Check", - "valid": "Valid", - "invalid": "Invalid", - "creating": "Creating...", - "validationChecksAnthropicCompatible": "Validation checks {provider} by verifying the API key.", - "validationChecksOpenAiCompatible": "Validation checks {provider} via /models on your base URL.", - "priorityLabel": "Priority", - "saving": "Saving...", - "save": "Save", - "editConnection": "Edit Connection", - "accountName": "Account name", + "apiKeyValidationFailed": "اعتبارسنجی کلید API ناموفق بود. لطفاً کلید خود را بررسی کرده و دوباره تلاش کنید.", + "addProviderApiKeyTitle": "افزودن کلید API برای {provider}", + "checking": "در حال بررسی...", + "check": "بررسی", + "valid": "معتبر", + "invalid": "نامعتبر", + "creating": "در حال ایجاد...", + "validationChecksAnthropicCompatible": "اعتبارسنجی، {provider} را با بررسی کلید API ارزیابی میکند.", + "validationChecksOpenAiCompatible": "اعتبارسنجی، {provider} را از طریق /models در URL پایه شما بررسی میکند.", + "priorityLabel": "اولویت", + "saving": "در حال ذخیره...", + "save": "ذخیره", + "editConnection": "ویرایش اتصال", + "accountName": "نام حساب", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "بررسی سلامت (دقیقه)", "healthCheckHint": "Proactive token refresh interval. 0 = disabled.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", - "failedTestConnection": "Failed to test connection", - "failed": "Failed", - "leaveBlankKeepCurrentApiKey": "Leave blank to keep the current API key.", - "editCompatibleTitle": "Edit {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", - "apiKeyForCheck": "API Key (for Check)", + "deselectAllModels": "لغو انتخاب همه", + "modelsActiveCount": "{active}/{total} فعال", + "noModelsMatch": "هیچ مدلی با «{filter}» مطابقت ندارد", + "groupLabel": "محیط", + "groupPlaceholder": "برای مثال eKaizen، شخصی", + "failedTestConnection": "آزمایش اتصال ناموفق بود", + "failed": "ناموفق", + "leaveBlankKeepCurrentApiKey": "برای حفظ کلید API فعلی، این قسمت را خالی بگذارید.", + "editCompatibleTitle": "ویرایش سازگار با {type}", + "compatibleBaseUrlHint": "URL ریشه API سازگار با {type} شما. برای مسیرهای سفارشی نقاط پایانی از تنظیمات پیشرفته استفاده کنید.", + "apiKeyForCheck": "کلید API (برای بررسی)", "testModelIdLabel": "شناسه مدل (اختیاری)", "testModelIdPlaceholder": "مثلاً my-model-id", "testModelIdHint": "اگر ارائه‌دهنده فاقد اندپوینت /models است، یک شناسه مدل وارد کنید تا در عوض از طریق /chat/completions اعتبارسنجی شود.", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "سازگار با {type} (تولید)", + "tokenRefreshed": "توکن با موفقیت تازهسازی شد", + "tokenRefreshFailed": "تازهسازی توکن ناموفق بود", "cursorSessionUnchanged": "جلسه در حال حاضر فعال است", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "اعمال احراز هویت", + "exportCodexAuthFile": "صدور احراز هویت", "applyClaudeAuthLocal": "درخواست احراز هویت", "exportClaudeAuthFile": "صدور مجوز", "importClaudeAuth": "واردات مجوز", @@ -5704,7 +5707,7 @@ "codexExternalLinkConnected": "حساب Codex از طریق لینک خارجی متصل شد.", "codexExternalLinkExpired": "لینک قبل از تکمیل منقضی شد.", "importCodexAuth": "واردات مجوز", - "codexImportModalTitle": "Import Codex Auth", + "codexImportModalTitle": "وارد کردن احراز هویت Codex", "codexImportTabSingle": "مجرد", "codexImportTabBulk": "فله", "codexImportTabUpload": "آپلود فایل", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} ناموفق بود", "codexImportBulkZipExtracting": "در حال استخراج ZIP…", "codexImportBulkZipError": "ZIP استخراج نشد", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "تنظیمات پیشرفته", + "chatPathLabel": "مسیر نقطه پایانی چت", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "مسیر سفارشی چت برای ارائهدهندگان دارای APIهای غیراستاندارد (برای مثال /v4/chat/completions)", + "modelsPathLabel": "مسیر نقطه پایانی مدلها", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "مسیر سفارشی مدلها برای اعتبارسنجی (برای مثال /v4/models)", "clientIdentityLabel": "هویت کلاینت", "clientIdentityHint": "اختیاری. هدرهای اثر انگشت کلاینت (مانند User-Agent) را که با یک CLI شناخته‌شده مطابقت دارد، برای درگاه‌های سازگار که انتظار آن را دارند اضافه می‌کند.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", - "a": "A", + "statusDeactivated": "غیرفعالشده (دستی)", + "statusBanned": "مسدودشده / نقض قوانین Sandbox", + "statusCreditsExhausted": "موجودی ناکافی / سهمیه تمامشده", + "showEmails": "نمایش همه ایمیلها", + "hideEmails": "پنهانکردن همه ایمیلها", + "a": "آ", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "یک کلید API دیگر اضافه کنید یا چند کلید را جایگذاری کنید", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "aggregatorsGateways": "درگاههای تجمیعکننده", + "enterpriseCloud": "سازمانی و ابری", + "apiFormatLabel": "برچسب قالب API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "چین", + "apiRegionHint": "راهنمای منطقه API", + "apiRegionInternational": "بینالمللی", + "apiRegionLabel": "برچسب منطقه API", + "apikey": "کلید API", + "audio": "صوت", + "audioProvidersHeading": "عنوان ارائهدهندگان صوت", "cloudAgentProviders": "ارائه دهندگان عامل ابری", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "برچسب کوتاه صوت", + "azureOpenAiBaseUrlHint": "راهنمای URL پایه Azure Open AI", + "bailianBaseUrlHint": "راهنمای URL پایه Bailian", + "claudeWebCookieHint": "claude.ai را باز کنید ← DevTools ← Application ← Cookies ← claude.ai، سپس مقدار 'sessionKey' را کپی کنید. برای Cloudflare به cf_clearance، __cf_bm و _cfuvid نیز نیاز است.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "راهنمای کوکی وب Blackbox", + "blackboxWebCookiePlaceholder": "جاینگهدار کوکی وب Blackbox", "t3ChatWebCookieHint": "t3.chat → DevTools → Application → Local Storage → https://t3.chat را باز کنید، «convex-session-id» را کپی کنید. سپس DevTools → Network را باز کنید، هدر کامل کوکی را از هر درخواست چت کپی کنید. هر دو مقدار را در فیلدهای زیر قرار دهید.", "t3ChatWebCookiePlaceholder": "محدب-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "راهنمای کوکی وب Grok", "blockClaudeExtraUsageDescription": "زمانی که فعال باشد، OmniRoute این اتصال Claude را به محض اینکه API استفاده، استفاده اضافی در صف را گزارش کند، غیرقابل دسترس علامت‌گذاری می‌کند، بنابراین پشتیبان به یک اتصال دیگر سوئیچ می‌کند به جای اینکه به ادامه‌ی صورتحساب اضافی پرداخت به ازای استفاده ادامه دهد.", "blockClaudeExtraUsageLabel": "استفاده اضافی از کلاود را مسدود کنید", "disableCoolingDescription": "نادیده گرفتن دوره خنک‌سازی گذرا تا این اتصال حتی پس از خطاهای قابل بازیابی واجد شرایط باقی بماند (حالت‌های نهایی مانند مسدود شده/منقضی شده همچنان اعمال می‌شوند).", "disableCoolingLabel": "غیرفعال کردن دوره خنک‌سازی برای این اتصال", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {۱ کلید اضافه شد} other {# کلید اضافه شد}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {۱ مورد تکراری نادیده گرفته شد} other {# مورد تکراری نادیده گرفته شد}}", + "bulkPasteHint": "در هر خط یک کلید API جایگذاری کنید. خطوط خالی نادیده گرفته میشوند و کلیدهای تکراری رد میشوند.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "هدر بتای redact-thinking را برای بالادستهای CC Compatible که به جریانهای تفکر پنهان Claude نیاز دارند، اضافه میکند.", + "ccCompatibleRedactThinkingLabel": "فعالکردن بتای redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "مقدار `display: \"summarized\"` را به درخواستهای تفکر CC Compatible اضافه میکند تا مدلهای پشتیبانیشده Claude بتوانند تغییرات قابلمشاهده تفکر را بهصورت جریانی ارسال کنند.", + "ccCompatibleSummarizeThinkingLabel": "فعالکردن نمایش خلاصهشده تفکر", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "در صورت دردسترسبودن، از سطح سرویس اولویتدار برای درخواستهای Codex استفاده میکند.", + "codexFastServiceTierLabel": "سطح سرویس سریع Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "جاینگهدار نام هدر بالادست سازگار", + "compatUpstreamHeaderValuePlaceholder": "جاینگهدار مقدار هدر بالادست سازگار", + "compatible": "سازگار", + "configuredCount": "تعداد پیکربندیشده", + "consoleApiKeyOracleHint": "راهنمای کلید API کنسول Oracle", + "consoleApiKeyOracleLabel": "برچسب کلید API کنسول Oracle", + "consoleApiKeyOraclePlaceholder": "متن جاینگهدار کلید API کنسول Oracle", + "newApiUserIdLabel": "شناسه کاربر New-API", + "newApiUserIdPlaceholder": "مثلاً 12345", + "newApiUserIdHint": "مقدار هدر New-Api-User در AgentRouter که همراه با کلید API کنسول برای دریافت موجودی سهمیه استفاده میشود.", "newApiAggregatorToggleLabel": "دروازه تجمیع کننده", "newApiAggregatorToggleHint": "تشخیص موجودی را برای گره‌های تجمیع New-API / One-API / Sub2API فعال کنید. داشبورد نشانگر موجودی را نمایش خواهد داد و مسیریابی پیش‌پرواز سهمیه، حساب‌های خالی را نادیده خواهد گرفت.", "newApiAggregatorConsoleApiKeyHint": "توکن دسترسی سیستم برای نقطه پایانی /api/user/self از تجمیع‌کننده. نه کلید API مسیریابی.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "تشخیص موجودی را برای گره‌های سازگار با New-API / One-API / Sub2API فعال کنید", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "راهنمای عامل کاربر سفارشی", + "customUserAgentLabel": "برچسب عامل کاربر سفارشی", + "databricksBaseUrlHint": "راهنمای URL پایه Databricks", + "defaultThinkingStrengthHint": "زمانی استفاده میشود که درخواستی میزان تلاش برای استدلال را مشخص نکرده باشد.", + "defaultThinkingStrengthLabel": "قدرت پیشفرض تفکر", + "deleteAllExtraApiKeys": "حذف همه", + "excludedModelsHint": "راهنمای مدلهای مستثناشده", + "excludedModelsLabel": "برچسب مدلهای مستثناشده", + "excludedModelsPlaceholder": "متن جاینگهدار مدلهای مستثناشده", + "expirationBannerExpired": "بنر انقضا: منقضیشده", + "expirationBannerExpiredDesc": "توضیحات بنر انقضا: منقضیشده", + "expirationBannerExpiringSoon": "بنر انقضا: در آستانه انقضا", + "expirationBannerExpiringSoonDesc": "توضیحات بنر انقضا: در آستانه انقضا", + "extraApiKeyMasked": "کلید {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "راهنمای کلیدهای API اضافی", + "extraApiKeysLabel": "برچسب کلیدهای API اضافی", + "apiKeyHealthLabel": "وضعیت سلامت کلید API", + "apiKeyStatusActive": "فعال", + "apiKeyStatusWarning": "هشدار ({count} خطا)", + "apiKeyStatusInvalid": "نامعتبر", + "primaryKey": "کلید اصلی", + "apiKeyInvalidAlert": "{count} کلید API بهدلیل خطاهای احراز هویت در اتصالهای زیر نامعتبر علامتگذاری شدهاند: {connections}. این کلیدها در چرخش نادیده گرفته خواهند شد. برای بررسی کلیک کنید.", + "apiKeyInvalidAlertTitle": "هشدار سلامت کلید API", + "apiKeyWarningAlert": "{count} کلید API بهدلیل نرخ بالای خطا در اتصالهای زیر در وضعیت هشدار قرار دارند: {connections}. برای جلوگیری از مشکلات چرخش، آنها را بررسی کنید.", + "apiKeyWarningAlertTitle": "هشدار کلید API", + "googlePseInfo": "اطلاعات Google PSE", "antigravityProjectIdHint": "لغو اختیاری برای درخواست‌های Antigravity Cloud Code. برای استفاده از پروژه کشف شده در Google OAuth، آن را خالی بگذارید.", "antigravityClientProfileLabel": "پروفایل کلاینت", "antigravityClientProfileHint": "انتخاب کنید که OmniRoute کدام هویت کلاینت Antigravity را به API ارائه دهد.", @@ -5865,18 +5868,18 @@ "tierFast": "سریع", "antigravityProjectIdLabel": "شناسه پروژه Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "متن جاینگهدار کوکی وب Grok", + "herokuBaseUrlHint": "راهنمای URL پایه Heroku", + "hideEmail": "پنهان کردن ایمیل", + "imageProviders": "ارائهدهندگان تصویر", "videoProviders": "نسل ویدیو", "embeddingRerankProviders": "جاسازی ها و رتبه بندی مجدد", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "برچسب کوتاه تصاویر", + "llmProviders": "ارائهدهندگان LLM", + "localProviderApiKeyOptionalHint": "راهنمای اختیاری کلید API ارائهدهنده محلی", + "localProviderBaseUrlHint": "راهنمای URL پایه ارائهدهنده محلی", + "localProviders": "ارائهدهندگان محلی", + "maxConcurrentWholeNumberError": "خطا: حداکثر تعداد همزمان باید عدد صحیح باشد", "m365TierLabel": "سطح Copilot", "m365TierHint": "انتخاب کنید که این اتصال از کدام سطح Microsoft 365 Copilot استفاده می‌کند. Individual همان BizChat پیش‌فرض مصرف‌کننده است؛ Education و Enterprise (کاری) سطوح مستاجر (tenant) خود را انتخاب می‌کنند.", "m365TierIndividualOption": "انفرادی (پیش‌فرض)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "ارزان", "tierOverridePremium": "پرمیوم", "tierOverrideHelpText": "این ارائه‌دهنده را به یک سطح مسیریابی پین کنید، به جای اینکه اجازه دهید OmniRoute آن را از قیمت‌گذاری مدل استنتاج کند.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "راهنمای کوکی وب Muse Spark", + "museSparkWebCookiePlaceholder": "جاینگهدار کوکی وب Muse Spark", + "oauth": "OAuth", + "openCliTools": "باز کردن ابزارهای CLI", + "openSettings": "باز کردن تنظیمات", + "openaiResponsesStoreDescription": "به درخواستهای سازگار با Responses API اجازه دهید وضعیت پاسخ ذخیرهشده را حفظ کنند.", + "openaiResponsesStoreLabel": "ذخیرهسازی OpenAI Responses", + "perplexitySearchSharedKeyInfo": "اطلاعات کلید اشتراکی جستوجوی Perplexity", + "perplexityWebCookieHint": "راهنمای کوکی وب Perplexity", + "perplexityWebCookiePlaceholder": "جاینگهدار کوکی وب Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "جایگزینی‌های محدودیت نرخ", "rateLimitOverridesMaxConcurrentHint": "جایگزینی حداکثر درخواست‌های همزمان برای این اتصال. سقف سطح حساب را لغو می‌کند.", "rateLimitOverridesMaxConcurrentLabel": "حداکثر همزمان (محدودیت نرخ)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "حداکثر زمانی (ms) که یک درخواست میتواند پیش از ناموفق شدن برای یک جایگاه محدودیت نرخ منتظر بماند. این مقدار فقط برای این اتصال، تنظیم کلی Resilience را لغو میکند.", + "rateLimitOverridesMaxWaitMsLabel": "حداکثر انتظار در صف (ms)", "rateLimitOverridesMinTimeHint": "حداقل زمان (میلی‌ثانیه) بین درخواست‌ها. تاخیر پیش‌فرض محدودکننده نرخ را لغو می‌کند.", "rateLimitOverridesMinTimeLabel": "حداقل فاصله (میلی‌ثانیه)", "rateLimitOverridesRpdHint": "حداکثر درخواست در روز برای این اتصال. پیش‌فرض ارائه‌دهنده را لغو می‌کند.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (توکن/روز)", "rateLimitOverridesTpmHint": "حداکثر توکن در دقیقه برای این اتصال. مقدار پیش‌فرض ارائه‌دهنده را لغو می‌کند.", "rateLimitOverridesTpmLabel": "TPM (توکن/دقیقه)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", - "searchProviders": "Search Providers", + "refreshOauthTokenTitle": "عنوان بازخوانی توکن OAuth", + "regionHint": "راهنمای منطقه", + "regionLabel": "برچسب منطقه", + "removeThisKey": "حذف این کلید", + "routingTagsHint": "راهنمای برچسبهای مسیریابی", + "routingTagsLabel": "برچسب برچسبهای مسیریابی", + "routingTagsPlaceholder": "جاینگهدار برچسبهای مسیریابی", + "search": "جستوجو", + "searchEngineIdHint": "راهنمای شناسه موتور جستوجو", + "searchEngineIdLabel": "برچسب شناسه موتور جستوجو", + "searchEngineIdRequired": "شناسه موتور جستوجو الزامی است", + "searchProvider": "ارائهدهنده جستوجو", + "searchProviderDesc": "توضیحات ارائهدهنده جستوجو", + "searchProviders": "ارائهدهندگان جستوجو", "searchByModel": "جستجو بر اساس مدل…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "عنوان ارائهدهندگان جستوجو", + "searxngBaseUrlHint": "راهنمای URL پایه Searxng", + "searxngInfo": "اطلاعات Searxng", + "sessionCookieLabel": "برچسب کوکی نشست", + "showEmail": "نمایش ایمیل", + "snowflakeBaseUrlHint": "راهنمای URL پایه Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "راهنمای گروه برچسب", + "tagGroupLabel": "برچسب گروه برچسب", + "tagGroupPlaceholder": "جاینگهدار گروه برچسب", + "testModel": "مدل آزمایشی", + "testingModel": "در حال آزمایش مدل", "modelTestQuotaTooltip": "حجم مصرفی تمام شده — فردا ریست می‌شود یا نیاز به شارژ دارد", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "نشان انقضای توکن", + "tokenExpiredTitle": "عنوان توکن منقضیشده", + "tokenExpiresSoonTitle": "عنوان انقضای قریبالوقوع توکن", + "tokenShort": "توکن کوتاه", + "totalKeysRotating": "{count, plural, one {۱ کلید در حال چرخش} other {# کلید در حال چرخش}}", + "unhideModel": "نمایش دوباره مدل", + "upstreamProxyProviders": "ارائهدهندگان پروکسی بالادستی", "validationModelIdHint": "مدلی که برای تأیید کلید API استفاده می‌شود. برای استفاده از اولین مدل موجود ارائه‌دهنده، خالی بگذارید.", "validationModelIdLabel": "مدل اعتبارسنجی", "validationModelIdPlaceholder": "مثلاً meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "JSON حساب سرویس خود ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) یا یک OAuth access_token را جایگذاری کنید", + "webCookieProviders": "ارائهدهندگان کوکی وب", + "weeklyShort": "هفتگی کوتاه", + "xiaomiMimoBaseUrlHint": "راهنمای URL پایه Xiaomi Mimo", "globalCodexServiceMode": "حالت سرویس سراسری Codex", "connect": "اتصال", "manualApiKey": "کلید API دستی", @@ -5975,9 +5978,9 @@ "zedImportDescription": "اعتبارنامه‌های ارائه‌دهنده هوش مصنوعی (OpenAI، Anthropic، Google، Mistral، xAI) ذخیره‌شده توسط Zed IDE در keychain سیستم‌عامل را شناسایی کرده و آن‌ها را به عنوان اتصال وارد کنید. Zed IDE باید روی این دستگاه نصب باشد.", "zedImportButton": "وارد کردن از Zed", "zedImportFailed": "واردات Zed ناموفق بود", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "راهنمای درونریزی Zed", + "zedImportNetworkError": "خطای شبکه هنگام درونریزی Zed", + "zedImportNone": "موردی برای درونریزی از Zed یافت نشد", "zedImportSuccess": "اعتبارنامه(های) {credentials} از Zed برای ارائه‌دهنده(های) {providers} وارد شد", "zedImporting": "در حال وارد کردن…", "zedNoCredentials": "هیچ اعتبارنامه Zed در keychain یافت نشد", @@ -6175,7 +6178,7 @@ "freeaiapikey": "پروکسی API تخفیف‌خورده برای بیش از ۴۰ مدل از جمله GPT-5، Claude Opus 4.6، Claude Sonnet 4.6، Qwen 3.5. کلید API خود را در https://freeaiapikey.com/dashboard دریافت کنید. URL پایه: https://freeaiapikey.com/v1.", "freemodel-dev": "۳۰۰ دلار اعتبار رایگان API در https://freemodel.dev دریافت کنید — بدون نیاز به اطلاعات پرداخت. نقطه پایانی سازگار با OpenAI. مدل‌های GPT-5.4 و GPT-5.5 در دسترس هستند.", "friendliai": "سطح رایگان برای استنتاج بدون سرور (serverless inference) — بدون نیاز به کارت اعتباری", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "سطح رایگان از طریق Google AI Studio؛ سهمیههای هر مدل دیگر منتشر نمیشوند (صفحه سهمیه را در AI Studio بررسی کنید) — بدون نیاز به کارت اعتباری.", "gigachat": "اتصال GigaChat (Sber) با یک کلید API.", "gitlab": "توکن دسترسی شخصی GitLab برای API عمومی Code Suggestions. در صورت عدم استفاده از gitlab.com، یک URL پایه خودمیزبانی‌شده (self-hosted) پیکربندی کنید.", "gitlawb-gmi": "کلید API خود را از داشبورد Gitlawb Opengateway دریافت کنید.", @@ -6184,7 +6187,7 @@ "glm-cn": "اتصال GLM Coding (China) با یک کلید API.", "glmt": "پروفایل پیش‌فرض GLM با بودجه توکن بالاتر، فعال بودن تفکر (thinking) و زمان انتظار (timeout) طولانی‌تر.", "getgoapi": "اتصال GoAPI با یک کلید API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "طرح رایگان: محدودیتهای هر مدل (۲۰۰ هزار توکن در روز برای هر مدل چت؛ برای RPM/RPD به console.groq.com/docs/rate-limits مراجعه کنید) — هیچ روش پرداختی ثبت نشده است.", "haiper": "کلید API را در haiper.ai/haiper-api دریافت کنید", "heroku": "اتصال Heroku AI با یک کلید API.", "hcnsec": "دریافت کلید API در api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "یک کلید API در https://app.requesty.ai بسازید، سپس آن را در اینجا به عنوان توکن Bearer جای‌گذاری کنید. نقطه پایانی سازگار با OpenAI در https://router.requesty.ai/v1، همراه با کاتالوگ زنده /v1/models.", "runwayml": "تولید ویدیو در Runway مبتنی بر وظیفه (task-based) است. OmniRoute کارهای تبدیل متن به ویدیو یا تصویر به ویدیو را ارسال می‌کند، وضعیت /v1/tasks/[id] را بررسی می‌کند و خروجی‌های ویدیوی نهایی را به پاسخ شبیه به OpenAI در /v1/videos/generations تبدیل می‌کند.", "sambanova": "۵ دلار اعتبار رایگان هنگام ثبت‌نام (با اعتبار ۳۰ روزه)، بدون نیاز به کارت اعتباری", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "در https://seekai.cc یک کلید API ایجاد کنید، سپس آن را بهعنوان Bearer token اینجا جایگذاری کنید. URL پایه سازگار با OpenAI: https://seekai.cc/v1.", "sap": "کشف مدل از /v2/lm/scenarios/foundation-models/models در AI_API_URL استفاده می‌کند. درخواست‌های چت از deploymentUrl/chat/completions استفاده می‌کنند و به AI-Resource-Group نیاز دارند.", "sarvam": "Sarvam AI با OpenAI سازگار است در /v1. OmniRoute به /v1/models دسترسی پیدا می‌کند و ترافیک چت را به /v1/chat/completions هدایت می‌کند. مدل‌ها برای زبان‌های هندی تنظیم شده‌اند.", "scaleway": "۱ میلیون توکن رایگان برای حساب‌های جدید — سازگار با قوانین اتحادیه اروپا/GDPR (پاریس)، Qwen3 235B و Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "اتصال به Claude Code با جریان OAuth موجود.", "cline": "اتصال به Cline با جریان OAuth موجود.", "cursor": "اتصال به Cursor IDE با جریان OAuth موجود.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Cursor را با یک کلید API کاربر (crsr_...) از cursor.com/dashboard/api متصل کنید؛ نیازی به نشست IDE نیست.", "github": "اتصال به GitHub Copilot با جریان OAuth موجود.", "gitlab-duo": "برنامه OAuth با اسکوپ‌های ai_features + read_user. متغیرهای GITLAB_DUO_OAUTH_CLIENT_ID و به صورت اختیاری GITLAB_DUO_OAUTH_CLIENT_SECRET را روی این نمونه OmniRoute پیکربندی کنید.", "kilocode": "اتصال به Kilo Code با جریان OAuth موجود.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "اعتبار مورد نیاز را از دامنه خود ارائه دهنده کپی کنید. برای کوکی ها، فقط مقدار هدر Cookie را کپی کنید و Cookie: را حذف کنید.", "webSessionGuideStep3Manual": "مسیر دستی: ابزارهای توسعه‌دهنده مرورگر را باز کنید (F12 → Network)، صفحه را تازه‌سازی کنید، یک درخواست احراز هویت‌شده را باز کنید و مقدار هدر Cookie را از هدرهای درخواست کپی کنید — پیشوند Cookie: را حذف کنید.", "webSessionGuideStep4": "آن را در اینجا قرار دهید و اتصال را بررسی کنید. اگر از کار افتاد، دوباره وارد شوید و آن را با یک مقدار جدید جایگزین کنید.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "درونریزی فایل .har", + "harImportButtonBusy": "در حال درونریزی…", + "harImportButtonHint": "پس از ارسال حداقل یک پیام چت، از زبانه Network در DevTools خروجی بگیرید.", + "harImportStatusValid": "درونریزی شد — حدود {minutes} دقیقه معتبر است.", + "harImportStatusExpiringSoon": "درونریزی شد — فقط حدود {minutes} دقیقه دیگر اعتبار دارد.", + "harImportStatusExpired": "درونریزی شد، اما این توکن {minutes} دقیقه پیش منقضی شده است — یک HAR تازه خروجی بگیرید.", + "harImportStatusUnknownExpiry": "درونریزی شد. زمان انقضای آن قابل خواندن نبود.", + "harImportErrorNotJson": "این فایل JSON معتبری نیست — آیا واقعاً خروجی .har است؟", + "harImportErrorNoEntries": "این HAR هیچ ورودی شبکه ثبتشدهای ندارد.", + "harImportErrorNoChathubUrl": "هیچ اتصال چت Copilot در این HAR یافت نشد. پیش از گرفتن خروجی، حداقل یک پیام چت در m365.cloud.microsoft ارسال کنید.", + "harImportErrorUnparsableUrl": "اتصال چت پیدا شد، اما URL آن قابل خواندن نبود.", + "harImportErrorMissingFields": "اتصال چت پیدا شد، اما توکن در آن وجود نداشت.", + "harImportErrorReadFailed": "این فایل قابل خواندن نبود.", + "harImportErrorUnknown": "استخراج اطلاعات احراز هویت از این فایل HAR ممکن نبود.", "webSessionSecurityHint": "با این موضوع مانند یک رمز عبور رفتار کنید: ممکن است تا زمانی که منقضی شود یا لغو شود، به حساب وب وارد شده شما دسترسی داشته باشد.", "webNoAuthGuideTitle": "بدون نیاز به اعتبار", "webNoAuthGuideBody": "{provider} به کلید API یا کوکی نیاز ندارد. اتصال را ذخیره کنید تا از نقطه پایانی وب رایگان آن استفاده کنید.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "کد فرمان اعتبارسنجی منقضی شده است", "commandCodeConnected": "کد فرمان متصل شد", "commandCodeConnectionAdded": "کد فرمان اتصال اضافه شد", + "clearConnectionCooldown": "رفع دوره انتظار", + "clearConnectionCooldownInProgress": "در حال رفع…", + "clearConnectionCooldownTitle": "همین حالا دوره انتظار را رفع کنید — زمانی استفاده کنید که سهمیه در سرویس بالادستی از قبل تازهسازی شده است", "commandCodeLinkExpired": "لینک کد فرمان منقضی شده است", "commandCodeOpeningStudio": "در حال باز کردن Command Code Studio…", "commandCodePopupBlocked": "پنجره بازشو مسدود شده است. لطفاً پنجره‌های بازشو را مجاز کنید و دوباره تلاش کنید تا Command Code Connect را اجرا کنید.", "commandCodeStartFailed": "شروع Command Code auth با شکست مواجه شد", "connectionDeleted": "اتصال حذف شد", "connectionFallback": "اتصال", + "connectionCooldownCleared": "دوره انتظار پاک شد — اتصال دوباره به مسیریابی پیوست", "coolingConnectionsDescription": "این اتصالات پس از آخرین درخواست در حال خنک‌شدن هستند. OmniRoute تا پایان تایمر از آنها می‌گذرد — نیازی به غیرفعال‌سازی دستی نیست.", "coolingConnectionsTitle": "در حال حاضر خنک‌سازی ({count})", + "failedClearConnectionCooldown": "پاککردن دوره انتظار ناموفق بود", "failedDeleteAlias": "حذف مستعار ناموفق بود", "failedDeleteConnection": "حذف اتصال ناموفق بود", "failedDistributeProxies": "توزیع پروکسی‌ها ناموفق بود.", @@ -6470,21 +6478,16 @@ "savedModelEndpointSettings": "تنظیمات نقطه پایانی مدل ذخیره شده", "searchByModelAria": "جستجو بر اساس مدل", "selectSupportedEndpoint": "حداقل یک نقطه پایانی پشتیبانی شده را انتخاب کنید", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "هارنس / CLI" }, "settings": { - "title": "Settings", - "general": "General", - "security": "Security", - "appearance": "Appearance", - "routing": "Routing", - "cache": "Cache", - "resilience": "Resilience", + "title": "تنظیمات", + "general": "عمومی", + "security": "امنیت", + "appearance": "ظاهر", + "routing": "مسیریابی", + "cache": "کش", + "resilience": "تابآوری", "description": "توضیحات", "enable": "فعال‌سازی", "disable": "غیرفعال‌سازی", @@ -6527,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "حذف پاراگراف‌های حاوی: {items}", "routingSummarizeDropParagraphStartsWith": "حذف پاراگراف‌های شروع شونده با: {items}", "routingSummarizeReplaceText": "جایگزینی \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "عبارت منظم /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "حذف بلوک‌های حاوی: {items}", "routingSummarizePrependSystemBlock": "افزودن بلوک به ابتدا: \"{text}\"", "routingSummarizeAppendSystemBlock": "افزودن بلوک به انتها: \"{text}\"", @@ -6551,25 +6554,25 @@ "routingOpStatusSeparator": " ·", "resilienceSettingsIntro": "زمانی که ارائه‌دهندگان شکست می‌خورند، دوباره به‌طور خودکار، خنک‌کردن و بازگشت به حالت اولیه.", "aiSettingsIntro": "تنظیمات اختصاصی هوش مصنوعی برای بودجه تفکر، رفتار مدل و فشرده سازی.", - "systemPrompt": "System Prompt", - "thinkingBudget": "Thinking Budget", + "systemPrompt": "پرامپت سیستم", + "thinkingBudget": "بودجه تفکر", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "پروکسی HTTP", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "بخشهای پروکسی", + "requestBodyLimitTitle": "محدودیت بدنه درخواست", + "requestBodyLimitDescription": "حداکثر اندازه محتوای API که پیش از تجزیه بدنه درخواست پذیرفته میشود. مسیرهای اختصاصی بارگذاری دستکم محدودیت داخلی 100 MB خود را حفظ میکنند.", + "requestBodyLimitInputLabel": "محدودیت بدنه درخواست بر حسب MB", + "requestBodyLimitEmptyError": "محدودیتی بر حسب MB وارد کنید", + "requestBodyLimitWholeNumberError": "از عدد صحیح استفاده کنید", + "requestBodyLimitMinimumError": "حداقل مقدار {min} MB است", + "requestBodyLimitMaximumError": "حداکثر مقدار {max} MB است", + "requestBodyLimitLoadFailed": "بارگیری تنظیمات محدودیت درخواست ناموفق بود", + "requestBodyLimitSaveSuccess": "محدودیت بدنه درخواست ذخیره شد", + "requestBodyLimitSaveFailed": "ذخیره محدودیت بدنه درخواست ناموفق بود", + "requestBodyLimitSaving": "در حال ذخیره...", + "requestBodyLimitSave": "ذخیره", + "requestBodyLimitCurrent": "فعلی: {value}", "cacheConfigLoadFailed": "بارگذاری تنظیمات کش ناموفق بود", "cacheConfigSaveSuccess": "تنظیمات کش ذخیره شد", "cacheConfigSaveFailed": "ذخیره تنظیمات کش ناموفق بود", @@ -6583,69 +6586,69 @@ "modelCatalogCacheTtlSave": "ذخیره کنید", "modelCatalogCacheTtlCurrent": "فعلی: {value} میلی‌ثانیه", "mitmProxy": "پروکسی MITM", - "pricing": "Pricing", - "storage": "Storage", - "policies": "Policies", - "ipFilter": "IP Filter", - "comboDefaults": "Combo Defaults", - "fallbackChains": "Fallback Chains", - "changePassword": "Change Password", - "enablePassword": "Enable Password", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "pricing": "قیمتگذاری", + "storage": "فضای ذخیرهسازی", + "policies": "سیاستها", + "ipFilter": "فیلتر IP", + "comboDefaults": "پیشفرضهای ترکیبی", + "fallbackChains": "زنجیرههای جایگزین", + "changePassword": "تغییر گذرواژه", + "enablePassword": "فعالکردن گذرواژه", + "darkMode": "حالت تاریک", + "lightMode": "حالت روشن", + "memoryTitle": "حافظه", + "memoryDesc": "حافظه مکالمهای پایدار بین نشستها", + "memoryEnabled": "فعالسازی حافظه", + "memoryEnabledDesc": "در صورت فعال بودن، OmniRoute زمینه مرتبط از گفتگوهای گذشته را اضافه میکند.", "memoryTokenCostWarning": "توجه: با فعال بودن حافظه، OmniRoute حداکثر {tokens} توکن از زمینه بازیابی‌شده را به هر درخواست چت تزریق می‌کند — این کار مصرف توکن و هزینه را افزایش می‌دهد. برای رد کردن تزریق در یک درخواست خاص، هدر \"x-omniroute-no-memory: true\" را ارسال کنید.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", - "justNow": "Just now", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", - "providers": "Providers", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", - "systemTheme": "System Theme", - "debugToggle": "Enable Debug Mode", + "maxTokens": "حداکثر توکنها", + "retentionDays": "شیوه نگهداری", + "recent": "اخیر", + "recentDesc": "بازه زمانی", + "semantic": "معنایی", + "semanticDesc": "جستوجوی برداری", + "hybrid": "ترکیبی", + "hybridDesc": "اخیر + معنایی", + "skillsTitle": "مهارتها", + "skillsDesc": "ابزارهای مدلها", + "skillsEnabled": "فعالسازی مهارتها", + "skillsEnabledDesc": "به عاملها اجازه میدهد توابع را اجرا کنند.", + "skillsComingSoon": "بازارچه مهارتها بهزودی عرضه میشود.", + "memorySkillsTitle": "حافظه و مهارتها", + "memorySkillsDesc": "زمینه و قابلیتهای پایدار", + "modelsDevTitle": "پایگاه داده مدلها", + "modelsDevDesc": "همگامسازی خودکار قیمتگذاری، قابلیتها و مشخصات از models.dev", + "modelsDevEnabled": "فعالسازی همگامسازی models.dev", + "modelsDevEnabledDesc": "دریافت قیمتگذاری، قابلیتها و مشخصات مدل از پایگاه داده متنباز models.dev", + "modelsDevInterval": "فاصله همگامسازی", + "syncNow": "همگامسازی اکنون", + "syncing": "در حال همگامسازی...", + "lastSync": "آخرین همگامسازی", + "never": "هرگز", + "justNow": "همین حالا", + "modelsDevStats": "آمار همگامسازی", + "modelsDevStatsDesc": "پوشش فعلی دادههای models.dev", + "providers": "ارائهدهندگان", + "modelsWithPricing": "مدلهای دارای قیمتگذاری", + "capabilities": "قابلیتها", + "lastSyncCount": "تعداد آخرین همگامسازی", + "lastSyncFull": "آخرین همگامسازی کامل", + "modelsDevInfo": "نحوه کارکرد", + "modelsDevInfoDesc": "models.dev یک پایگاه داده متنباز از مشخصات مدلهای هوش مصنوعی است که توسط تیم SST/OpenCode نگهداری میشود. این پایگاه داده، اطلاعات قیمتگذاری، قابلیتها، محدودیتهای زمینه و گونههای ورودی و خروجی را برای بیش از ۴٬۰۰۰ مدل از بیش از ۱۰۰ ارائهدهنده فراهم میکند.", + "modelsDevInfoResolution": "ترتیب تعیین قیمت (ابتدا بالاترین اولویت):", + "modelsDevInfoOrder": "بازنویسی کاربر ← models.dev ← LiteLLM ← مقدار پیشفرض ثابت", + "systemTheme": "پوسته سیستم", + "debugToggle": "فعالسازی حالت اشکالزدایی", "logToolSourcesToggle": "ثبت لاگ منابع ابزار", "logToolSourcesDescription": "ایجاد یک خط لاگ تشخیصی به ازای هر درخواست که تعداد ابزارها و تفکیک منابع MCP/میزبانی‌شده/کلاینت را خلاصه می‌کند.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "سنجاقکردن اطلاعات به صفحه اصلی", "homePinnedSectionsDesc": "انتخاب کنید کدام بخش‌ها در بالای صفحه اصلی پین شوند.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "محدودیتهای سهمیه ارائهدهنده", + "homeProviderQuotaLimitsDesc": "سنجاقکردن بخش وضعیت سهمیه ارائهدهنده (همراه با دکمه «بازخوانی همه») به بالای صفحه اصلی.", + "homeQuickStart": "شروع سریع", + "homeQuickStartDesc": "نمایش پنل شروع سریع در صفحه اصلی.", + "homeProviderTopology": "توپولوژی ارائهدهندگان", + "homeProviderTopologyDesc": "نمایش توپولوژی ارائهدهندگان در صفحه اصلی.", "accountEmailVisibility": "قابلیت مشاهده ایمیل حساب", "accountEmailVisibilityDesc": "نمایش کامل ایمیل‌های حساب در صفحات ارائه‌دهندگان، ترکیب‌ها، لاگ‌ها، سهمیه و محیط آزمایشی. این گزینه را خاموش کنید تا به‌طور پیش‌فرض ماسک شوند.", "comboConfigMode": "حالت پیکربندی ترکیب", @@ -6661,89 +6664,89 @@ "providerQuotaAutoRefreshInterval": "بازه زمانی تازه‌سازی", "providerQuotaAutoRefreshIntervalDesc": "فاصله زمانی تازه‌سازی نمای سهمیه، به ثانیه.", "seconds": "ثانیه", - "sidebarVisibilityToggle": "Show Sidebar Items", - "enableCache": "Enable Cache", - "cacheTTL": "Cache TTL", - "maxCacheSize": "Max Cache Size", - "clearCache": "Clear Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", - "cacheHits": "Cache Hits", - "cacheMisses": "Cache Misses", - "hitRate": "Hit Rate", - "cacheEntries": "Cache Entries", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "sidebarVisibilityToggle": "نمایش موارد نوار کناری", + "enableCache": "فعالسازی حافظه پنهان", + "cacheTTL": "TTL حافظه پنهان", + "maxCacheSize": "حداکثر اندازه حافظه پنهان", + "clearCache": "پاککردن حافظه پنهان", + "cacheCleared": "حافظه پنهان با موفقیت پاک شد", + "clearCacheFailed": "پاککردن حافظه پنهان ناموفق بود", + "cacheHits": "اصابتهای حافظه پنهان", + "cacheMisses": "عدم اصابتهای حافظه پنهان", + "hitRate": "نرخ اصابت", + "cacheEntries": "ورودیهای حافظه پنهان", + "cacheSettings": "تنظیمات حافظه پنهان", + "semanticCache": "حافظه پنهان معنایی", + "maxEntries": "حداکثر تعداد ورودیها", + "ttlMinutes": "TTL (دقیقه)", + "promptCache": "حافظه پنهان پرامپت", + "strategy": "راهبرد", + "preserveClientCache": "حفظ حافظه پنهان کلاینت", + "enabled": "فعال", "loading": "Loading...", - "saving": "Saving...", - "save": "Save", - "circuitBreaker": "Circuit Breaker", - "retryPolicy": "Retry Policy", - "maxRetries": "Max Retries", - "retryDelay": "Retry Delay", - "timeoutMs": "Timeout (ms)", - "enableSystemPrompt": "Enable System Prompt", - "systemPromptText": "System Prompt Text", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "saving": "در حال ذخیره...", + "save": "ذخیره", + "circuitBreaker": "مدارشکن", + "retryPolicy": "سیاست تلاش مجدد", + "maxRetries": "حداکثر تعداد تلاش مجدد", + "retryDelay": "تأخیر تلاش مجدد", + "timeoutMs": "مهلت زمانی (ms)", + "enableSystemPrompt": "فعالسازی پرامپت سیستم", + "systemPromptText": "متن پرامپت سیستم", + "autoDisableBannedAccounts": "غیرفعالسازی خودکار حسابهای مسدودشده", + "autoDisableDescription": "اگر اتصالهای ارائهدهنده سیگنالهای قطعی مشخصی مبنی بر مسدودشدن برگردانند (برای مثال HTTP 403 'verify your account')، آنها را برای همیشه بهعنوان غیرفعال علامتگذاری کنید. با این کار از چرخه ترکیبی حذف میشوند.", + "autoDisableThreshold": "آستانه مسدودسازی", + "autoDisableThresholdDesc": "تعداد سیگنالهای متوالی مسدودسازی موردنیاز پیش از غیرفعالسازی دائمی.", + "autoDisableBannedScope": "اعمال غیرفعالسازی خودکار بر", + "autoDisableBannedScopeDesc": "جایگاههای ورود (اشتراکهای پولی و حسابهای رایگان) ممکن است در صورت ادامه تلاش مجدد OmniRoute پس از مسدودشدن، توسط سرویس بالادستی قفل شوند. کلیدهای API پیشپرداختشده و پولی با این خطر مواجه نیستند — آنها را در مجموعه نگه دارید تا راهبرد fill-first بتواند از کلید بعدی استفاده کند.", + "autoDisableBannedScopeAll": "همه اتصالها", + "autoDisableBannedScopeAllDesc": "هر اتصالی را که سیگنال مسدودیت دائمی برمیگرداند، از جمله کلیدهای API پیشپرداختشده، غیرفعال کنید.", + "autoDisableBannedScopeSubscription": "فقط حسابهای ورود / اشتراک", + "autoDisableBannedScopeSubscriptionDesc": "جایگاههای OAuth، کوکی، نشست و ورود وب (پولی یا رایگان) را غیرفعال کنید. کلیدهای API پیشپرداختشده فعال میمانند تا مسیریابی بتواند به گزینه جایگزین منتقل شود.", "customBannedSignals": "کلمات کلیدی ممنوع", "customBannedSignalsDesc": "کلمات کلیدی اضافی که باعث تشخیص مسدودسازی دائمی حساب می‌شوند. کلمات کلیدی داخلی همیشه اعمال می‌شوند.", "customBannedSignalsPlaceholder": "مثلاً api key revoked", "noCustomBannedSignals": "هیچ کلمه کلیدی سفارشی وجود ندارد. فقط کلمات کلیدی داخلی فعال هستند.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "ساختار تابآوری", "resilienceStructureDesc": "این صفحه فقط رفتار را پیکربندی می کند. وضعیت قطع کننده زنده در صفحه Health نشان داده شده است. کنترل مجدد اسلات مخصوص ترکیبی خاص و چرخشی در تنظیمات ترکیبی باقی می ماند.", - "enableThinking": "Enable Thinking", - "maxThinkingTokens": "Max Thinking Tokens", - "enableProxy": "Enable Proxy", + "enableThinking": "فعالسازی تفکر", + "maxThinkingTokens": "حداکثر توکنهای تفکر", + "enableProxy": "فعالسازی پروکسی", "perKeyProxyEnabled": "فعال‌سازی تخصیص پروکسی به ازای هر کلید", "perKeyProxyEnabledDesc": "در صورت فعال بودن، هر اتصال ارائه‌دهنده می‌تواند از تخصیص پروکسی اختصاصی خود استفاده کند", - "proxyUrl": "Proxy URL", - "pricingRates": "Pricing Rates Format", - "currentPricing": "Current Pricing Overview", - "loadingPricing": "Loading pricing data...", - "noPricing": "No pricing data available", - "input": "Input", - "output": "Output", - "cached": "Cached", + "proxyUrl": "نشانی URL پروکسی", + "pricingRates": "قالب نرخهای قیمتگذاری", + "currentPricing": "نمای کلی قیمتگذاری فعلی", + "loadingPricing": "در حال بارگذاری دادههای قیمتگذاری...", + "noPricing": "هیچ داده قیمتگذاری موجود نیست", + "input": "ورودی", + "output": "خروجی", + "cached": "ذخیرهشده در حافظه نهان", "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "customPricing": "Custom Pricing", - "databaseSize": "Database Size", - "backupDb": "Backup Database", - "restoreDb": "Restore Database", - "exportData": "Export Data", - "importData": "Import Data", - "clearData": "Clear All Data", - "clearDataConfirm": "This will permanently delete all data. Are you sure?", - "enableRequestLogs": "Enable Request Logs", - "logRetention": "Log Retention", - "ipWhitelist": "IP Whitelist", - "ipBlacklist": "IP Blacklist", - "addIP": "Add IP", - "savedSuccessfully": "Settings saved successfully", + "cacheCreation": "ایجاد حافظه نهان", + "customPricing": "قیمتگذاری سفارشی", + "databaseSize": "اندازه پایگاه داده", + "backupDb": "پشتیبانگیری از پایگاه داده", + "restoreDb": "بازیابی پایگاه داده", + "exportData": "برونبری دادهها", + "importData": "درونریزی دادهها", + "clearData": "پاککردن همه دادهها", + "clearDataConfirm": "این کار همه دادهها را برای همیشه حذف خواهد کرد. آیا مطمئن هستید؟", + "enableRequestLogs": "فعالسازی گزارش درخواستها", + "logRetention": "مدت نگهداری گزارشها", + "ipWhitelist": "فهرست مجاز IP", + "ipBlacklist": "فهرست سیاه IP", + "addIP": "افزودن IP", + "savedSuccessfully": "تنظیمات با موفقیت ذخیره شد", "ai": "AI", - "advanced": "Advanced", - "localMode": "Local Mode — All data stored on your machine", - "settingsSectionsAria": "Settings sections", - "switchThemes": "Switch between light and dark themes", - "themeSelectionAria": "Theme selection", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", + "advanced": "پیشرفته", + "localMode": "حالت محلی — همه دادهها روی دستگاه شما ذخیره میشوند", + "settingsSectionsAria": "بخشهای تنظیمات", + "switchThemes": "جابجایی بین پوستههای روشن و تیره", + "themeSelectionAria": "انتخاب پوسته", + "themeLight": "روشن", + "themeDark": "تیره", + "themeSystem": "سیستم", "endpointTunnelVisibility": "دید تونل نقطه پایانی", "endpointTunnelVisibilityDesc": "بدون تغییر وضعیت تونل، کنترل‌های تونل را از صفحه پایانی مخفی کنید.", "showCloudflareTunnel": "تونل سریع Cloudflare", @@ -6752,47 +6755,47 @@ "showTailscaleFunnelDesc": "نمایش کنترل های Tailscale Funnel در صفحه Endpoint.", "showNgrokTunnel": "تونل ngrok", "showNgrokTunnelDesc": "نمایش کنترل های ngrok Tunnel در صفحه Endpoint.", - "sidebarVisibility": "Hide sidebar items", - "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter without disabling any features", - "sidebarVisibilityHint": "Any sidebar section is hidden automatically when all of its entries are hidden", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", - "hideHealthLogs": "Hide Health Check Logs", - "hideHealthLogsDesc": "When ON, suppress [HealthCheck] messages in server console", - "themeAccent": "Theme color", - "themeAccentDesc": "Choose a preset color or create your own theme with one color", - "themeCreate": "Create theme", - "themeCustom": "Custom theme", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "sidebarVisibility": "پنهان کردن موارد نوار کناری", + "sidebarVisibilityDesc": "برای کاهش شلوغی بصری، بدون غیرفعال کردن هیچ قابلیتی، هر مورد ناوبری نوار کناری را پنهان کنید", + "sidebarVisibilityHint": "هر بخش نوار کناری، زمانی که همه موارد آن پنهان باشند، بهطور خودکار پنهان میشود", + "presetAll": "همه", + "presetAllDesc": "نمایش همهچیز", + "presetEssentials": "ضروریات", + "presetEssentialsDesc": "مسیر مبتدیان - ابزارهای پیشرفته همچنان قابل جستوجو میمانند", + "presetMinimal": "حداقلی", + "presetMinimalDesc": "فقط صفحات اصلی", + "presetDeveloper": "توسعهدهنده", + "presetDeveloperDesc": "ابزارهای توسعه و پروکسی", + "presetAdmin": "مدیریت", + "presetAdminDesc": "نظارت و ممیزی", + "settingsSidebarTitle": "سفارشیسازی نوار کناری", + "settingsSidebarDesc": "مواردی را که باید در نوار کناری نمایش داده شوند انتخاب کنید. حالت «ضروریات»، ابزارهای پیشرفته را قابل جستوجو نگه میدارد.", + "hideHealthLogs": "پنهان کردن گزارشهای بررسی سلامت", + "hideHealthLogsDesc": "در صورت روشن بودن، پیامهای [HealthCheck] در کنسول سرور نمایش داده نمیشوند", + "themeAccent": "رنگ پوسته", + "themeAccentDesc": "یک رنگ از پیش تنظیمشده انتخاب کنید یا با یک رنگ، پوسته دلخواه خود را بسازید", + "themeCreate": "ساخت پوسته", + "themeCustom": "پوسته سفارشی", + "themeBlue": "آبی", + "themeRed": "قرمز", + "themeGreen": "سبز", + "themeViolet": "بنفش", + "themeOrange": "نارنجی", + "themeCyan": "فیروزهای", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "نام و لوگوی برنامه را سفارشی کنید", + "appName": "نام برنامه", + "appNameDesc": "نام نمایشی در نوار کناری و زبانه مرورگر", + "customLogo": "URL لوگوی سفارشی", + "customLogoDesc": "URL تصویر لوگوی سفارشی شما", + "uploadLogo": "بارگذاری لوگو", + "resetLogo": "بازنشانی به پیشفرض", + "logoPreview": "پیشنمایش", + "customFavicon": "فاوآیکون مرورگر", + "customFaviconDesc": "URL فاوآیکون سفارشی شما (نمایشدادهشده در زبانه مرورگر)", + "uploadFavicon": "بارگذاری فاوآیکون", + "resetFavicon": "بازنشانی فاوآیکون", + "faviconPreview": "پیشنمایش فاوآیکون", "logoFileTooLarge": "فایل لوگو باید کمتر از 500KB باشد", "faviconFileTooLarge": "فایل فاوآیکون باید کمتر از 50KB باشد", "invalidLogoFileType": "نوع فایل نامعتبر است. لطفاً PNG، JPG، SVG، GIF یا WebP آپلود کنید.", @@ -6800,15 +6803,15 @@ "failedToReadFile": "خواندن فایل ناموفق بود", "startOnLogin": "اجرا هنگام ورود به سیستم", "startOnLoginDesc": "راه‌اندازی خودکار OmniRoute هنگام شروع به کار سیستم و اجرای بی‌صدا در سینی پس‌زمینه.", - "flushCache": "Flush Cache", - "flushing": "Flushing…", - "size": "Size", - "hits": "Hits", - "evictions": "Evictions", - "loadingCacheStats": "Loading cache stats…", - "globalProxy": "Global Proxy", - "globalProxyDesc": "Configure a global outbound proxy for all API calls. Individual providers, combos, and keys can override this.", - "noGlobalProxy": "No global proxy configured", + "flushCache": "پاکسازی کش", + "flushing": "در حال پاکسازی…", + "size": "اندازه", + "hits": "تعداد استفادهها", + "evictions": "حذفها", + "loadingCacheStats": "در حال بارگیری آمار کش…", + "globalProxy": "پروکسی سراسری", + "globalProxyDesc": "یک پروکسی خروجی سراسری برای همه فراخوانیهای API پیکربندی کنید. ارائهدهندگان، ترکیبها و کلیدهای جداگانه میتوانند این تنظیم را لغو کنند.", + "noGlobalProxy": "هیچ پروکسی سراسری پیکربندی نشده است", "proxyPool": "استخر پروکسی", "freePool": "استخر رایگان", "proxyDocumentation": "مستندات پروکسی", @@ -6896,21 +6899,21 @@ "refreshInterval": "فاصله به‌روزرسانی", "ruleModeDescription": "توضیحات حالت قانون" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "بررسی سلامت گروهی", + "bulkHealthcheckDesc": "همه پروکسیهای پیکربندیشده را با یک URL هدف آزمایش کنید تا مشخص شود کدامیک کار میکنند.", + "healthcheckTesting": "در حال آزمایش...", + "healthcheckAll": "بررسی سلامت همه", + "healthcheckFailed": "اجرای بررسی سلامت ناموفق بود", + "healthcheckTestingAll": "در حال آزمایش همزمان همه پروکسیها...", + "healthcheckTotal": "مجموع", + "healthcheckWorking": "فعال", + "healthcheckFailedLabel": "ناموفق", + "healthcheckStatus": "وضعیت", + "healthcheckProxyUrl": "URL پروکسی", + "healthcheckLatency": "تأخیر", "proxyDocumentationScopeTitle": "تعیین محدوده پروکسی", "proxyDocumentationScopeDescBefore": "OmniRoute پروکسی خروجی را به ترتیب اولویت تعیین می‌کند:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "ترکیب ← حساب ← ارائهدهنده ← سراسری", "proxyDocumentationScopeDescAfter": ". خاص‌ترین محدوده اعمال می‌شود.", "proxyDocumentationAddTitle": "افزودن پروکسی سفارشی", "proxyDocumentationAddDescBefore": "به برگه", @@ -6966,22 +6969,22 @@ "proxyFreePoolLoadMore": "بارگذاری بیشتر", "close": "بستن", "cancel": "لغو", - "globalLabel": "Global", - "configure": "Configure", - "globalSystemPrompt": "Global System Prompt", - "saved": "Saved", + "globalLabel": "سراسری", + "configure": "پیکربندی", + "globalSystemPrompt": "پرامپت سیستمی سراسری", + "saved": "ذخیره شد", "beforePromptLabel": "قبل از پرامپت", "beforePromptDesc": "قبل از دستورالعمل‌های سیستمی عامل/ارائه‌دهنده تزریق می‌شود", "beforePromptPlaceholder": "دستورالعمل‌های درج‌شده قبل از پرامپت عامل/ارائه‌دهنده...", "afterPromptLabel": "بعد از پرامپت", "afterPromptDesc": "بعد از دستورالعمل‌های سیستمی عامل/ارائه‌دهنده تزریق می‌شود", "afterPromptPlaceholder": "دستورالعمل‌های درج‌شده بعد از پرامپت عامل/ارائه‌دهنده...", - "chars": "{count} chars", - "thinkingBudgetTitle": "Thinking Budget", + "chars": "{count} نویسه", + "thinkingBudgetTitle": "بودجه تفکر", "thinkingBudgetDesc": "Control AI reasoning token usage across all requests", "thinkingBudgetIndependenceHint": "ویژگی‌های فشرده‌سازی، مسیریابی و محدودیت توکن در هر حالت کار می‌کنند. حالت خودکار به معنای \"نمایش خودکار تفکر\" نیست - این حالت فیلدهای استدلال کلاینت را حذف می‌کند.", - "passthrough": "Passthrough", - "passthroughDesc": "No changes — client controls thinking budget", + "passthrough": "عبور بدون تغییر", + "passthroughDesc": "بدون تغییر — کلاینت بودجه تفکر را کنترل میکند", "thinkingModePassthrough": "عبور از طریق", "thinkingModePassthroughDesc": "دلایل مشتری را بدون تغییر بگذارید (تلاش، خلاصه، بلوک‌های تفکر). برای تفکر قابل مشاهده Codex/Desktop الزامی است. پیش‌فرض.", "thinkingModeAuto": "خودکار (حذف)", @@ -6991,36 +6994,36 @@ "thinkingModeAdaptive": "سازگار", "thinkingModeAdaptiveDesc": "مقیاس تفکر بودجه از یک تلاش پایه با استفاده از تعداد پیام، ابزارها و طول پیام.", "auto": "Auto Combo", - "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "custom": "Custom", - "customDesc": "Set a fixed token budget for all requests", - "adaptive": "Adaptive", - "adaptiveDesc": "Scale budget based on request complexity", - "effortNone": "None (0 tokens)", - "effortLow": "Low (1K tokens)", - "effortMedium": "Medium (10K tokens)", - "effortHigh": "High (128K tokens)", - "tokenBudget": "Token Budget", - "tokens": "tokens", - "baseEffortLevel": "Base Effort Level", + "autoDesc": "مجموعه مسیریابی هوشمند خودترمیمشونده (بهینهشده برای عملکرد)", + "custom": "سفارشی", + "customDesc": "تنظیم بودجه ثابت توکن برای همه درخواستها", + "adaptive": "تطبیقی", + "adaptiveDesc": "تنظیم مقیاس بودجه بر اساس پیچیدگی درخواست", + "effortNone": "هیچکدام (0 توکن)", + "effortLow": "کم (۱K توکن)", + "effortMedium": "متوسط (۱۰K توکن)", + "effortHigh": "زیاد (۱۲۸K توکن)", + "tokenBudget": "بودجه توکن", + "tokens": "توکن", + "baseEffortLevel": "سطح تلاش پایه", "adaptiveHint": "Adaptive mode scales from this base level based on message count, tool usage, and prompt length.", - "requireLogin": "Require login", - "requireLoginDesc": "When ON, dashboard requires password. When OFF, access without login.", - "currentPassword": "Current Password", - "enterCurrentPassword": "Enter current password", - "newPassword": "New Password", - "enterNewPassword": "Enter new password", - "confirmPassword": "Confirm New Password", - "confirmPasswordPlaceholder": "Confirm new password", - "passwordsNoMatch": "Passwords do not match", - "passwordUpdated": "Password updated successfully", - "failedUpdatePassword": "Failed to update password", - "errorOccurred": "An error occurred", - "updatePassword": "Update Password", - "setPassword": "Set Password", - "apiEndpointProtection": "API Endpoint Protection", - "requireAuthModels": "Require API key for /models", - "requireAuthModelsDesc": "When ON, the /v1/models endpoint returns 404 for unauthenticated requests. Prevents model discovery by unauthorized users.", + "requireLogin": "الزام ورود", + "requireLoginDesc": "در حالت روشن، داشبورد به رمز عبور نیاز دارد. در حالت خاموش، دسترسی بدون ورود امکانپذیر است.", + "currentPassword": "رمز عبور فعلی", + "enterCurrentPassword": "رمز عبور فعلی را وارد کنید", + "newPassword": "رمز عبور جدید", + "enterNewPassword": "رمز عبور جدید را وارد کنید", + "confirmPassword": "تأیید رمز عبور جدید", + "confirmPasswordPlaceholder": "رمز عبور جدید را تأیید کنید", + "passwordsNoMatch": "رمزهای عبور مطابقت ندارند", + "passwordUpdated": "رمز عبور با موفقیت بهروزرسانی شد", + "failedUpdatePassword": "بهروزرسانی رمز عبور ناموفق بود", + "errorOccurred": "خطایی رخ داد", + "updatePassword": "بهروزرسانی رمز عبور", + "setPassword": "تنظیم رمز عبور", + "apiEndpointProtection": "محافظت از نقطه پایانی API", + "requireAuthModels": "الزام کلید API برای /models", + "requireAuthModelsDesc": "در حالت روشن، نقطه پایانی /v1/models برای درخواستهای احراز هویتنشده پاسخ 404 برمیگرداند. این کار از شناسایی مدلها توسط کاربران غیرمجاز جلوگیری میکند.", "authModelHeading": "مدل مجوز فعال", "authModelClient": "نقاط پایانی API کلاینت (/v1/*، /chat/*، /responses/*، /codex/*، /messages/*) به یک کلید API حامل نیاز دارند.", "authModelManagement": "نقاط پایانی مدیریت (/dashboard، /api/*) به جلسه داشبورد یا اعتبار مدیریت نیاز دارند.", @@ -7029,16 +7032,16 @@ "bruteForceProtectionDesc": "دریچه گاز و قفل /api/auth/login پس از خرابی های مکرر از همان IP.", "corsAllowedOrigins": "CORS مبدأ مجاز است", "corsAllowedOriginsDesc": "فهرست منشأ مرورگر جدا شده با کاما برای تماس با این سرور مجاز است. لیست خالی = عدم دسترسی CORS مرورگر (سرور به سرور هنوز کار می کند). فقط برای توسعه از CORS_ALLOW_ALL=true env var استفاده کنید.", - "blockedProviders": "Blocked Providers", - "blockedProvidersDesc": "Hide specific providers from the /v1/models response. Blocked providers will not appear in model listings.", - "providersBlocked": "{count} provider(s) blocked from /models", - "blockProviderTitle": "Block {provider}", - "unblockProviderTitle": "Unblock {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "blockedProviders": "ارائهدهندگان مسدودشده", + "blockedProvidersDesc": "ارائهدهندگان مشخصی را از پاسخ /v1/models پنهان کنید. ارائهدهندگان مسدودشده در فهرست مدلها نمایش داده نمیشوند.", + "providersBlocked": "{count} ارائهدهنده در /models مسدود شدهاند", + "blockProviderTitle": "مسدود کردن {provider}", + "unblockProviderTitle": "رفع مسدودی {provider}", + "cliFingerprint": "تطبیق اثر انگشت CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "اثر انگشت CLI برای {count} ارائهدهنده فعال است", + "enableFingerprintTitle": "فعالسازی اثر انگشت برای {provider}", + "disableFingerprintTitle": "غیرفعالسازی اثر انگشت برای {provider}", "systemTransforms": "خط لوله تبدیل سیستم بلوک", "systemTransformsDesc": "خط لوله تبدیل‌های سفارش‌دهنده هر ارائه‌دهنده قبل از ارسال به بدنه درخواست اعمال می‌شود. از هر شناسه ارائه دهنده پشتیبانی می کند.", "systemTransformsAddProvider": "ارائه دهنده را اضافه کنید", @@ -7049,29 +7052,29 @@ "systemTransformsOpMoveUp": "حرکت به بالا", "systemTransformsOpMoveDown": "به پایین حرکت کنید", "systemTransformsOpDelete": "حذف عملیات", - "routingStrategy": "Routing Strategy", - "routingAdvancedGuideTitle": "Advanced routing guidance", + "routingStrategy": "راهبرد مسیریابی", + "routingAdvancedGuideTitle": "راهنمای پیشرفته مسیریابی", "routingAdvancedGuideHint1": "Use Fill First for predictable priority, Round Robin for fairness, and P2C for latency resilience.", "routingAdvancedGuideHint2": "If providers vary in quality/cost, start with Cost Opt for background work and Least Used for balanced wear.", - "fillFirst": "Fill First", - "fillFirstDesc": "Use accounts in priority order", + "fillFirst": "ابتدا پُر کردن", + "fillFirstDesc": "استفاده از حسابها بهترتیب اولویت", "roundRobin": "Round Robin", - "roundRobinDesc": "Cycle through all accounts", + "roundRobinDesc": "گردش میان همه حسابها", "p2c": "P2C", - "p2cDesc": "Pick 2 random, use the healthier one", - "random": "Random", - "randomDesc": "Random account each request", - "leastUsed": "Least Used", - "leastUsedDesc": "Pick least recently used account", - "costOpt": "Cost Opt", - "costOptDesc": "Prefer cheapest available account", - "resetAware": "Reset-Aware RR", + "p2cDesc": "انتخاب ۲ حساب تصادفی و استفاده از حساب سالمتر", + "random": "تصادفی", + "randomDesc": "انتخاب یک حساب تصادفی برای هر درخواست", + "leastUsed": "کماستفادهترین", + "leastUsedDesc": "انتخاب حسابی که دیرتر از همه استفاده شده است", + "costOpt": "بهینهسازی هزینه", + "costOptDesc": "ترجیح ارزانترین حساب در دسترس", + "resetAware": "نوبتگردشی آگاه از بازنشانی", "resetAwareDesc": "حساب‌های دارای سهمیه باقی‌مانده سالم و بازنشانی‌های نزدیک‌تر را ترجیح دهید", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "وزندهی بر اساس سهمیه", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "تصادفیِ سختگیرانه", + "strictRandomDesc": "دستهٔ بُرخورده — پیش از بُر زدن دوباره، از هر حساب یکبار استفاده میکند", + "stickyLimit": "محدودیت چسبندگی", "stickyLimitDesc": "Calls per account before switching", "routingStrategyTitle": "استراتژی مسیریابی", "routingStrategySubtitle": "مطابق با 9router: نوبت‌گردشی حساب، محدودیت‌های چسبنده و چرخش ترکیبی", @@ -7089,225 +7092,225 @@ "providerAccountRoutingDesc": "جایگزینی استراتژی سراسری حساب برای این ارائه‌دهنده (همگامی با 9router).", "providerRoutingStrategy": "استراتژی حساب", "providerRoutingInheritGlobal": "ارث‌بری از پیش‌فرض سراسری", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", - "modelAliases": "Model Aliases", - "modelAliasesTitle": "Model Aliases", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", - "addCustomAlias": "Add Custom Alias", - "deprecatedModelId": "Deprecated model ID", - "newModelId": "New model ID", - "customAliases": "Custom Aliases", - "builtInAliases": "Built-in Aliases", - "backgroundDegradationTitle": "Background Task Degradation", - "backgroundDegradationDesc": "Auto-detect background tasks (titles, summaries) and route to cheaper models", - "enableDegradation": "Enable Background Degradation", - "enableDegradationHint": "When enabled, background tasks like title generation and summarization are routed to cheaper models automatically", - "tasksDetected": "Tasks detected", - "degradationMap": "Model Degradation Map", - "premiumModel": "Premium model", - "cheapModel": "Cheap model", - "detectionPatterns": "Detection Patterns", - "newPattern": "e.g. \"generate a title\"", + "quotaPreflightTitle": "آستانهٔ بررسی پیشاپیش سهمیه", + "quotaPreflightSubtitle": "رد کردن حسابهای فاقد سهمیه پیش از ارسال درخواست به بالادست", + "quotaPreflightEnable": "فعالسازی بررسی پیشاپیش سهمیه", + "quotaPreflightEnableDesc": "پیش از هر درخواست، سهمیهٔ باقیماندهٔ حساب را بررسی کنید (بازههای 5 ساعته / هفتگی / ماهانه). حسابهایی که به آستانه رسیدهاند یا پایینتر از آن هستند، بدون فراخوانی بالادست رد میشوند. آستانههای مختص هر بازه که در صفحهٔ سهمیهٔ ارائهدهنده تنظیم شدهاند، همیشه بر مقدار پیشفرض اینجا اولویت دارند.", + "quotaPreflightCutoff": "آستانهٔ سراسری (حداقل درصد باقیمانده)", + "quotaPreflightCutoffDesc": "برای هر بازهای که آستانهٔ مختص خود را ندارد، وقتی سهمیهٔ باقیماندهٔ حساب به این درصد یا کمتر رسید، استفاده از آن را متوقف کنید. این مقدار با نوارهای درصد باقیمانده در صفحهٔ سهمیهٔ ارائهدهنده مطابقت دارد.", + "quotaPreflightWindowsHint": "بازههایی که آستانهٔ مختص بازه یا ارائهدهندهٔ خود را دارند (تنظیمشده در پنجرهٔ آستانه در صفحهٔ سهمیهٔ ارائهدهنده)، تحت تأثیر این مقدار پیشفرض قرار نمیگیرند.", + "quotaPreflightLoadFailed": "بارگذاری تنظیمات بررسی پیشاپیش سهمیه ممکن نیست.", + "modelAliases": "نامهای مستعار مدل", + "modelAliasesTitle": "نامهای مستعار مدل", + "modelAliasesDesc": "نام مدلها را با استفاده از تطبیق دقیق یا الگوهای نویسهٔ عام بازنگاشت کنید.", + "addCustomAlias": "افزودن نام مستعار سفارشی", + "deprecatedModelId": "شناسهٔ مدل منسوخشده", + "newModelId": "شناسهٔ مدل جدید", + "customAliases": "نامهای مستعار سفارشی", + "builtInAliases": "نامهای مستعار داخلی", + "backgroundDegradationTitle": "تنزل مدل برای وظایف پسزمینه", + "backgroundDegradationDesc": "تشخیص خودکار وظایف پسزمینه (عنوانها، خلاصهها) و هدایت آنها به مدلهای ارزانتر", + "enableDegradation": "فعالسازی تنزل مدل در پسزمینه", + "enableDegradationHint": "وقتی فعال باشد، وظایف پسزمینه مانند تولید عنوان و خلاصهسازی بهطور خودکار به مدلهای ارزانتر هدایت میشوند", + "tasksDetected": "وظایف شناساییشده", + "degradationMap": "نگاشت تنزل مدل", + "premiumModel": "مدل ممتاز", + "cheapModel": "مدل ارزان", + "detectionPatterns": "الگوهای تشخیص", + "newPattern": "مثلاً «یک عنوان ایجاد کن»", "aliasPatternPlaceholder": "claude-sonnet-*", "aliasTargetPlaceholder": "claude-sonnet-4-20250514", - "pattern": "Pattern", - "targetModel": "Target Model", - "add": "+ Add", - "session": "Session", - "sessionDetailsAria": "Session details", + "pattern": "الگو", + "targetModel": "مدل مقصد", + "add": "+ افزودن", + "session": "نشست", + "sessionDetailsAria": "جزئیات نشست", "status": "Status", - "authenticated": "Authenticated", - "guest": "Guest", - "loginTime": "Login Time", - "sessionAge": "Session Age", - "browser": "Browser", - "clearLocalData": "Clear Local Data", - "logout": "Logout", - "clearLocalDataConfirm": "Clear all local data? This will reset your preferences.", - "unknown": "Unknown", - "systemActor": "system", - "ipAccessControl": "IP Access Control", - "ipAccessControlDesc": "Block or allow specific IP addresses", - "ipModeDisabled": "Disabled", - "ipModeBlacklist": "Blacklist", - "ipModeWhitelist": "Whitelist", - "ipModeWhitelistPriority": "WL Priority", - "addIpAddress": "Add IP Address", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", - "block": "+ Block", - "allow": "+ Allow", - "blocked": "Blocked ({count})", - "allowed": "Allowed ({count})", - "temporaryBans": "Temporary Bans ({count})", - "minLeft": "{min}m left", - "auditLog": "Audit Log", - "searchAuditLogs": "Search audit logs...", - "failedLoadAuditLog": "Failed to load audit log", - "noAuditEvents": "No audit events found", - "action": "Action", - "actor": "Actor", - "details": "Details", - "time": "Time", - "fallbackChainsTitle": "Fallback Chains", - "fallbackChainsDesc": "Define provider fallback order per model", - "addChain": "+ Add Chain", - "modelName": "Model Name", + "authenticated": "احراز هویت شده", + "guest": "مهمان", + "loginTime": "زمان ورود", + "sessionAge": "عمر نشست", + "browser": "مرورگر", + "clearLocalData": "پاککردن دادههای محلی", + "logout": "خروج", + "clearLocalDataConfirm": "همه دادههای محلی پاک شوند؟ با این کار تنظیمات برگزیده شما بازنشانی میشوند.", + "unknown": "ناشناخته", + "systemActor": "سیستم", + "ipAccessControl": "کنترل دسترسی IP", + "ipAccessControlDesc": "مسدود یا مجاز کردن آدرسهای IP مشخص", + "ipModeDisabled": "غیرفعال", + "ipModeBlacklist": "فهرست سیاه", + "ipModeWhitelist": "فهرست سفید", + "ipModeWhitelistPriority": "اولویت فهرست سفید", + "addIpAddress": "افزودن آدرس IP", + "ipAddressPlaceholder": "192.168.1.0/24 یا 10.0.*.*", + "block": "+ مسدود کردن", + "allow": "+ مجاز کردن", + "blocked": "مسدودشده ({count})", + "allowed": "مجاز ({count})", + "temporaryBans": "محرومیتهای موقت ({count})", + "minLeft": "{min} دقیقه باقیمانده", + "auditLog": "گزارش ممیزی", + "searchAuditLogs": "جستجو در گزارشهای ممیزی...", + "failedLoadAuditLog": "بارگیری گزارش ممیزی ناموفق بود", + "noAuditEvents": "هیچ رویداد ممیزی یافت نشد", + "action": "عملیات", + "actor": "عامل", + "details": "جزئیات", + "time": "زمان", + "fallbackChainsTitle": "زنجیرههای جایگزین", + "fallbackChainsDesc": "ترتیب ارائهدهندگان جایگزین را برای هر مدل تعریف کنید", + "addChain": "+ افزودن زنجیره", + "modelName": "نام مدل", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "Providers (comma-separated, in priority order)", + "providersCommaSeparated": "ارائهدهندگان (جداشده با ویرگول، بهترتیب اولویت)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", - "createChain": "Create Chain", - "noFallbackChains": "No Fallback Chains", - "noFallbackChainsDesc": "Create a chain to define provider fallback order for a model.", - "loadingFallbackChains": "Loading fallback chains...", - "deleteChainConfirm": "Delete fallback chain for \"{model}\"?", - "chainCreated": "Chain created for {model}", - "chainDeleted": "Chain deleted for {model}", - "failedCreateChain": "Failed to create chain", - "failedDeleteChain": "Failed to delete chain", - "deleteChain": "Delete chain", - "fillModelAndProviders": "Please fill model name and providers", - "addAtLeastOneProvider": "Add at least one provider", - "comboDefaultsTitle": "Combo Defaults", - "comboDefaultsGuideTitle": "How to tune combo defaults", - "comboDefaultsGuideHint1": "Keep retries low in low-latency flows; increase timeout only for long generation tasks.", - "comboDefaultsGuideHint2": "Use provider overrides when one provider needs different timeout/retry behavior than global defaults.", - "globalComboConfig": "Global combo configuration", + "createChain": "ایجاد زنجیره", + "noFallbackChains": "هیچ زنجیره جایگزینی وجود ندارد", + "noFallbackChainsDesc": "برای تعیین ترتیب ارائهدهندگان جایگزین یک مدل، زنجیرهای ایجاد کنید.", + "loadingFallbackChains": "در حال بارگذاری زنجیرههای جایگزین...", + "deleteChainConfirm": "زنجیره جایگزین برای «{model}» حذف شود؟", + "chainCreated": "زنجیره برای {model} ایجاد شد", + "chainDeleted": "زنجیره برای {model} حذف شد", + "failedCreateChain": "ایجاد زنجیره ناموفق بود", + "failedDeleteChain": "حذف زنجیره ناموفق بود", + "deleteChain": "حذف زنجیره", + "fillModelAndProviders": "لطفاً نام مدل و ارائهدهندگان را وارد کنید", + "addAtLeastOneProvider": "حداقل یک ارائهدهنده اضافه کنید", + "comboDefaultsTitle": "پیشفرضهای ترکیبی", + "comboDefaultsGuideTitle": "نحوه تنظیم پیشفرضهای ترکیبی", + "comboDefaultsGuideHint1": "در جریانهای کمتأخیر، تعداد تلاشهای مجدد را پایین نگه دارید؛ زمان انتظار را فقط برای وظایف تولید طولانی افزایش دهید.", + "comboDefaultsGuideHint2": "وقتی یک ارائهدهنده به تنظیمات زمان انتظار یا تلاش مجدد متفاوتی نسبت به پیشفرضهای سراسری نیاز دارد، از تنظیمات اختصاصی ارائهدهنده استفاده کنید.", + "globalComboConfig": "پیکربندی سراسری ترکیب", "moveUp": "انتقال به بالا", "moveDown": "انتقال به پایین", "allProvidersAdded": "همه ارائه‌دهندگان اضافه شدند", "noProvidersFound": "هیچ ارائه‌دهنده‌ای یافت نشد", - "defaultStrategy": "Default Strategy", + "defaultStrategy": "راهبرد پیشفرض", "defaultStrategyDesc": "Applied to new combos without explicit strategy", - "comboStrategyAria": "Combo strategy", - "priority": "Priority", - "weighted": "Weighted", - "contextRelay": "Context Relay", - "contextRelayDesc": "Priority-style routing with automatic context handoffs when account rotation happens", - "maxRetriesLabel": "Max Retries", - "retryDelayLabel": "Retry Delay (ms)", - "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", - "healthCheckDesc": "Pre-check provider availability", - "trackMetrics": "Track Metrics", - "trackMetricsDesc": "Record per-combo request metrics", - "providerOverrides": "Provider Overrides", - "providerOverridesDesc": "Override timeout and retries per provider. Provider settings override global defaults.", - "providerMaxRetriesAria": "{provider} max retries", - "providerTimeoutAria": "{provider} timeout ms", - "removeProviderOverrideAria": "Remove {provider} override", + "comboStrategyAria": "راهبرد ترکیبی", + "priority": "اولویت", + "weighted": "وزندار", + "contextRelay": "انتقال زمینه", + "contextRelayDesc": "مسیریابی مبتنی بر اولویت با انتقال خودکار زمینه هنگام جابهجایی حساب", + "maxRetriesLabel": "حداکثر تلاش مجدد", + "retryDelayLabel": "تأخیر تلاش مجدد (میلیثانیه)", + "timeoutLabel": "زمان انتظار (میلیثانیه)", + "healthCheck": "بررسی سلامت", + "healthCheckDesc": "بررسی اولیه دسترسپذیری ارائهدهنده", + "trackMetrics": "ردیابی معیارها", + "trackMetricsDesc": "ثبت معیارهای درخواست برای هر ترکیب", + "providerOverrides": "تنظیمات اختصاصی ارائهدهندگان", + "providerOverridesDesc": "زمان انتظار و تعداد تلاشهای مجدد را برای هر ارائهدهنده تغییر دهید. تنظیمات ارائهدهنده بر پیشفرضهای سراسری اولویت دارند.", + "providerMaxRetriesAria": "حداکثر تلاش مجدد {provider}", + "providerTimeoutAria": "زمان انتظار {provider} به میلیثانیه", + "removeProviderOverrideAria": "حذف تنظیمات اختصاصی {provider}", "selectProviderPlaceholder": "انتخاب ارائه‌دهنده...", "searchProviderPlaceholder": "جستجوی ارائه‌دهندگان...", "searchProviderAria": "جستجوی ارائه‌دهندگان", - "newProviderNamePlaceholder": "e.g. google, openai...", - "newProviderNameAria": "New provider name", - "retries": "retries", + "newProviderNamePlaceholder": "مثلاً google، openai...", + "newProviderNameAria": "نام ارائهدهنده جدید", + "retries": "تلاشهای مجدد", "ms": "ms", - "saveComboDefaults": "Save Combo Defaults", - "maxNestingDepth": "Max Nesting Depth", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", + "saveComboDefaults": "ذخیره پیشفرضهای ترکیبی", + "maxNestingDepth": "حداکثر عمق تودرتویی", + "concurrencyPerModel": "همزمانی / مدل", + "queueTimeout": "زمان انتظار صف (میلیثانیه)", "queueDepth": "عمق صف", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", - "providerProfiles": "Provider Profiles", - "providerProfilesDesc": "Separate resilience settings for OAuth (session-based) and API Key (metered) providers. OAuth providers have stricter thresholds due to lower rate limits.", - "oauthProviders": "OAuth Providers", - "apiKeyProviders": "API Key Providers", - "transientCooldown": "Transient Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", - "cbThreshold": "CB Threshold", - "cbResetTime": "CB Reset Time", - "rateLimiting": "Rate Limiting", - "rateLimitingDesc": "API Key providers are automatically rate-limited with safe defaults. Limits are learned from response headers and adapt over time.", - "defaultSafetyNet": "Default Safety Net", + "contextRelayHandoffThreshold": "آستانه انتقال", + "contextRelayMaxMessages": "حداکثر پیامها برای خلاصهسازی", + "contextRelaySummaryModel": "مدل خلاصهسازی", + "contextRelayProviderNote": "Context Relay در حال حاضر برای حسابهای Codex تحویلها را ایجاد میکند و از این مقادیر بهعنوان پیشفرضهای سراسری برای ترکیبهای جدید یا پیکربندینشده استفاده میکند.", + "providerProfiles": "پروفایلهای ارائهدهنده", + "providerProfilesDesc": "تنظیمات تابآوری جداگانه برای ارائهدهندگان OAuth (مبتنی بر نشست) و API Key (بر اساس میزان مصرف). ارائهدهندگان OAuth بهدلیل محدودیت نرخ پایینتر، آستانههای سختگیرانهتری دارند.", + "oauthProviders": "ارائهدهندگان OAuth", + "apiKeyProviders": "ارائهدهندگان API Key", + "transientCooldown": "زمان انتظار موقت", + "rateLimitCooldown": "زمان انتظار محدودیت نرخ", + "maxBackoffLevel": "حداکثر سطح عقبنشینی", + "cbThreshold": "آستانه قطعکننده مدار", + "cbResetTime": "زمان بازنشانی قطعکننده مدار", + "rateLimiting": "محدودسازی نرخ", + "rateLimitingDesc": "نرخ ارائهدهندگان API Key با مقادیر پیشفرض ایمن بهطور خودکار محدود میشود. محدودیتها از سرآیندهای پاسخ آموخته میشوند و با گذشت زمان تطبیق مییابند.", + "defaultSafetyNet": "شبکه ایمنی پیشفرض", "rpm": "RPM", - "minGap": "Min Gap", - "maxConcurrent": "Max Concurrent", - "activeLimiters": "Active Limiters", - "noActiveLimiters": "No active rate limiters yet.", - "reservoir": "Reservoir", - "running": "Running", - "queued": "Queued", - "circuitBreakers": "Circuit Breakers", - "breakerStateClosed": "Closed", - "breakerStateOpen": "Open", - "breakerStateHalfOpen": "Half-Open", - "tripped": "{count} tripped", - "healthy": "{count} healthy", - "resetAll": "Reset All", - "noCircuitBreakers": "No circuit breakers active yet. They are created automatically when requests flow through the combo pipeline.", - "failures": "{count} failure(s)", - "policiesLocked": "Policies & Locked Identifiers", - "allOperational": "All systems operational — no lockouts or tripped breakers", - "loadingPolicies": "Loading policies...", - "lockedIdentifiers": "Locked Identifiers", - "unlockedIdentifier": "Unlocked: {identifier}", - "sinceDate": "since {date}", - "forceUnlock": "Force Unlock", - "unlocking": "Unlocking...", - "failedUnlock": "Failed to unlock", - "failedLoadWithStatus": "Failed to load: {status}", - "failedLoadResilience": "Failed to load resilience status", - "saveFailed": "Save failed", - "resetFailed": "Reset failed", - "loadingResilience": "Loading resilience status...", - "retry": "Retry", + "minGap": "حداقل فاصله", + "maxConcurrent": "حداکثر درخواستهای همزمان", + "activeLimiters": "محدودکنندههای فعال", + "noActiveLimiters": "هنوز هیچ محدودکننده نرخ فعالی وجود ندارد.", + "reservoir": "مخزن", + "running": "در حال اجرا", + "queued": "در صف", + "circuitBreakers": "قطعکنندههای مدار", + "breakerStateClosed": "بسته", + "breakerStateOpen": "باز", + "breakerStateHalfOpen": "نیمهباز", + "tripped": "{count} مورد فعالشده", + "healthy": "{count} مورد سالم", + "resetAll": "بازنشانی همه", + "noCircuitBreakers": "هنوز هیچ قطعکننده مدار فعالی وجود ندارد. آنها هنگام عبور درخواستها از خط لوله ترکیب، بهطور خودکار ایجاد میشوند.", + "failures": "{count} خطا", + "policiesLocked": "سیاستها و شناسههای قفلشده", + "allOperational": "همه سامانهها عملیاتی هستند — هیچ قفلشدگی یا قطعکننده فعالشدهای وجود ندارد", + "loadingPolicies": "در حال بارگذاری سیاستها...", + "lockedIdentifiers": "شناسههای قفلشده", + "unlockedIdentifier": "قفل باز شد: {identifier}", + "sinceDate": "از {date}", + "forceUnlock": "باز کردن اجباری قفل", + "unlocking": "در حال باز کردن قفل...", + "failedUnlock": "باز کردن قفل ناموفق بود", + "failedLoadWithStatus": "بارگیری ناموفق بود: {status}", + "failedLoadResilience": "بارگیری وضعیت تابآوری ناموفق بود", + "saveFailed": "ذخیرهسازی ناموفق بود", + "resetFailed": "بازنشانی ناموفق بود", + "loadingResilience": "در حال بارگیری وضعیت تابآوری...", + "retry": "تلاش مجدد", "systemStorage": "System & Storage", - "allDataLocal": "All data stored locally on your machine", - "databasePath": "Database Path", + "allDataLocal": "همه دادهها بهصورت محلی روی دستگاه شما ذخیره میشوند", + "databasePath": "مسیر پایگاه داده", "export": "برون‌بری", - "exportDatabase": "Export Database", - "exportAll": "Export All (.tar.gz)", - "importDatabase": "Import Database", - "confirmDbImport": "Confirm Database Import", - "confirmDbImportDesc": "This will replace all current data with the content from {file}. A backup will be created automatically before the import.", - "yesImport": "Yes, Import", - "lastBackup": "Last Backup", - "noBackupYet": "No backup yet", - "backupNow": "Backup Now", - "backupRestore": "Backup & Restore", - "viewBackups": "View Backups", - "hide": "Hide", - "backupRetentionDesc": "Database snapshots are created automatically before restore and every 15 minutes when data changes. Retention: 24 hourly + 30 daily backups with smart rotation.", - "loadingBackups": "Loading backups...", - "noBackupsYet": "No backups available yet. Backups will be created automatically when data changes.", - "backupsAvailable": "{count} backup(s) available", - "refresh": "Refresh", - "confirm": "Confirm?", - "yes": "Yes", - "no": "No", - "restore": "Restore", - "invalidFileType": "Invalid file type. Only .sqlite files are accepted.", - "exportFailed": "Export failed", - "exportFailedWithError": "Export failed: {error}", - "fullExportFailedWithError": "Full export failed: {error}", - "backupCreated": "Backup created: {file}", - "restoreSuccess": "Restored! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "importSuccess": "Database imported! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "minutesAgo": "{count}m ago", - "hoursAgo": "{count}h ago", - "daysAgo": "{count}d ago", - "backupReasonManual": "manual", - "backupReasonPreRestore": "pre-restore", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", - "noChangesSinceBackup": "No changes since last backup", - "backupFailed": "Backup failed", - "restoreFailed": "Restore failed", - "importFailed": "Import failed", - "errorDuringRestore": "An error occurred during restore", - "errorDuringImport": "An error occurred during import", - "modelPricing": "Model Pricing", - "modelPricingDesc": "Configure cost rates per model • All rates in $/1M tokens", + "exportDatabase": "برونبری پایگاه داده", + "exportAll": "برونبری همه (.tar.gz)", + "importDatabase": "درونریزی پایگاه داده", + "confirmDbImport": "تأیید درونریزی پایگاه داده", + "confirmDbImportDesc": "این کار همه دادههای فعلی را با محتوای {file} جایگزین میکند. پیش از درونریزی، یک نسخه پشتیبان بهطور خودکار ایجاد خواهد شد.", + "yesImport": "بله، درونریزی شود", + "lastBackup": "آخرین نسخه پشتیبان", + "noBackupYet": "هنوز نسخه پشتیبانی وجود ندارد", + "backupNow": "اکنون پشتیبانگیری شود", + "backupRestore": "پشتیبانگیری و بازیابی", + "viewBackups": "مشاهده نسخههای پشتیبان", + "hide": "پنهان کردن", + "backupRetentionDesc": "تصاویر لحظهای پایگاه داده بهطور خودکار پیش از بازیابی و هنگام تغییر دادهها هر ۱۵ دقیقه ایجاد میشوند. نگهداری: ۲۴ نسخه ساعتی + ۳۰ نسخه روزانه با چرخش هوشمند.", + "loadingBackups": "در حال بارگیری نسخههای پشتیبان...", + "noBackupsYet": "هنوز نسخه پشتیبانی در دسترس نیست. با تغییر دادهها، نسخههای پشتیبان بهطور خودکار ایجاد خواهند شد.", + "backupsAvailable": "{count} نسخه پشتیبان موجود است", + "refresh": "تازهسازی", + "confirm": "تأیید میکنید؟", + "yes": "بله", + "no": "خیر", + "restore": "بازیابی", + "invalidFileType": "نوع فایل نامعتبر است. فقط فایلهای .sqlite پذیرفته میشوند.", + "exportFailed": "برونبری ناموفق بود", + "exportFailedWithError": "برونبری ناموفق بود: {error}", + "fullExportFailedWithError": "برونبری کامل ناموفق بود: {error}", + "backupCreated": "نسخه پشتیبان ایجاد شد: {file}", + "restoreSuccess": "بازیابی شد! {connections} اتصال، {nodes} گره، {combos} ترکیب و {apiKeys} کلید API.", + "importSuccess": "پایگاه داده درونریزی شد! {connections} اتصال، {nodes} گره، {combos} ترکیب و {apiKeys} کلید API.", + "minutesAgo": "{count} دقیقه پیش", + "hoursAgo": "{count} ساعت پیش", + "daysAgo": "{count} روز پیش", + "backupReasonManual": "دستی", + "backupReasonPreRestore": "پیش از بازیابی", + "connectionsCount": "{count, plural, one {# اتصال} other {# اتصال}}", + "noChangesSinceBackup": "از آخرین پشتیبانگیری تغییری ایجاد نشده است", + "backupFailed": "پشتیبانگیری ناموفق بود", + "restoreFailed": "بازیابی ناموفق بود", + "importFailed": "درونریزی ناموفق بود", + "errorDuringRestore": "هنگام بازیابی خطایی رخ داد", + "errorDuringImport": "هنگام درونریزی خطایی رخ داد", + "modelPricing": "قیمتگذاری مدلها", + "modelPricingDesc": "نرخ هزینه را برای هر مدل پیکربندی کنید • همه نرخها بهازای $/1M توکن هستند", "pricingCoverage": "پوشش", "pricingAuth": "احراز هویت", "pricingSort": "مرتب‌سازی", @@ -7329,7 +7332,7 @@ "configured": "پیکربندی‌شده", "none": "هیچ‌کدام", "modelOverrideValuePlaceholder": "مقدار عددی", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "با ویرگول انگلیسی جدا کنید، مانند low, medium, high", "addKeyValue": "افزودن کلید-مقدار", "noModelOverrides": "هیچ بازنویسی‌ای برای این مدل پیکربندی نشده است.", "modelOverrideLoadFailed": "بارگذاری بازنویسی‌های مدل ناموفق بود", @@ -7337,66 +7340,66 @@ "modelOverrideRemoved": "بازنویسی مدل حذف شد", "modelOverrideSaveFailed": "ذخیره بازنویسی مدل ناموفق بود", "modelOverrideRemoveFailed": "حذف بازنویسی مدل ناموفق بود", - "registry": "Registry", - "priced": "Priced", - "searchProvidersModels": "Search providers or models...", - "showAll": "Show All", - "noProvidersMatch": "No providers match your search.", - "howPricingWorks": "How Pricing Works", - "cacheWrite": "Cache Write", - "unsaved": "unsaved", + "registry": "رجیستری", + "priced": "قیمتگذاریشده", + "searchProvidersModels": "جستجوی ارائهدهندگان یا مدلها...", + "showAll": "نمایش همه", + "noProvidersMatch": "هیچ ارائهدهندهای با جستجوی شما مطابقت ندارد.", + "howPricingWorks": "نحوه عملکرد قیمتگذاری", + "cacheWrite": "نوشتن در حافظه نهان", + "unsaved": "ذخیرهنشده", "resetDefaults": "بازنشانی پیش‌فرض‌ها", - "saveProvider": "Save Provider", + "saveProvider": "ذخیره ارائهدهنده", "model": "Model", - "models": "models", - "moreProviders": "{count} more providers", - "withPricing": "with pricing configured", - "policiesCircuitBreakers": "Policies & Circuit Breakers", - "activeIssuesDetected": "Active issues detected", - "off": "Off", - "resetPricingConfirm": "Reset all pricing for {provider} to defaults?", - "pricingDescInput": "Input: tokens sent to the model", - "pricingDescOutput": "Output: tokens generated", - "pricingDescCached": "Cached: reused input (~50% of input rate)", - "pricingDescReasoning": "Reasoning: thinking tokens (falls back to Output)", - "pricingDescCacheWrite": "Cache Write: creating cache entries (falls back to Input)", - "pricingDescFormula": "Cost = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.", - "pricingSettingsTitle": "Pricing Settings", - "totalModels": "Total Models", - "active": "Active", - "costCalculation": "Cost Calculation", - "costCalculationDesc": "Costs are calculated based on token usage and pricing rates configured for each model.", - "pricingFormat": "Pricing Format", - "pricingFormatDesc": "All rates are in $/1M tokens (dollars per million tokens).", - "tokenTypes": "Token Types", - "inputTokenDesc": "Standard prompt tokens", - "outputTokenDesc": "Completion/response tokens", - "cachedTokenDesc": "Cached input tokens (typically 50% of input rate)", - "reasoningTokenDesc": "Special reasoning/thinking tokens (fallback to output rate)", - "cacheCreationTokenDesc": "Tokens used to create cache entries (fallback to input rate)", - "customPricingNote": "You can override default pricing for specific models. Custom overrides take priority over auto-detected pricing.", - "editPricing": "Edit Pricing", - "viewFullDetails": "View Full Details", - "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "models": "مدلها", + "moreProviders": "{count} ارائهدهنده دیگر", + "withPricing": "با قیمتگذاری پیکربندیشده", + "policiesCircuitBreakers": "سیاستها و قطعکنندههای مدار", + "activeIssuesDetected": "مشکلات فعالی شناسایی شد", + "off": "خاموش", + "resetPricingConfirm": "همه قیمتهای {provider} به مقادیر پیشفرض بازنشانی شوند؟", + "pricingDescInput": "ورودی: توکنهای ارسالشده به مدل", + "pricingDescOutput": "خروجی: توکنهای تولیدشده", + "pricingDescCached": "حافظه نهان: ورودی استفادهشده مجدد (حدود ۵۰٪ نرخ ورودی)", + "pricingDescReasoning": "استدلال: توکنهای تفکر (در صورت نبود، از خروجی استفاده میشود)", + "pricingDescCacheWrite": "نوشتن در حافظه نهان: ایجاد ورودیهای حافظه نهان (در صورت نبود، از ورودی استفاده میشود)", + "pricingDescFormula": "هزینه = (ورودی × input_rate) + (خروجی × output_rate) + (حافظه نهان × cached_rate) بهازای هر یک میلیون توکن.", + "pricingSettingsTitle": "تنظیمات قیمتگذاری", + "totalModels": "مجموع مدلها", + "active": "فعال", + "costCalculation": "محاسبه هزینه", + "costCalculationDesc": "هزینهها بر اساس میزان استفاده از توکن و نرخهای قیمتگذاری پیکربندیشده برای هر مدل محاسبه میشوند.", + "pricingFormat": "قالب قیمتگذاری", + "pricingFormatDesc": "همه نرخها بهازای $/1M توکن هستند (دلار بهازای هر یک میلیون توکن).", + "tokenTypes": "انواع توکن", + "inputTokenDesc": "توکنهای استاندارد پرامپت", + "outputTokenDesc": "توکنهای تکمیل/پاسخ", + "cachedTokenDesc": "توکنهای ورودی ذخیرهشده در حافظهٔ نهان (معمولاً ۵۰٪ نرخ ورودی)", + "reasoningTokenDesc": "توکنهای ویژهٔ استدلال/تفکر (در صورت نبود نرخ، استفاده از نرخ خروجی)", + "cacheCreationTokenDesc": "توکنهای استفادهشده برای ایجاد ورودیهای حافظهٔ نهان (در صورت نبود نرخ، استفاده از نرخ ورودی)", + "customPricingNote": "میتوانید قیمتگذاری پیشفرض را برای مدلهای خاص بازنویسی کنید. بازنویسیهای سفارشی بر قیمتگذاری شناساییشده بهصورت خودکار اولویت دارند.", + "editPricing": "ویرایش قیمتگذاری", + "viewFullDetails": "مشاهدهٔ جزئیات کامل", + "themeCoral": "مرجانی", + "adaptiveVolumeRouting": "مسیریابی تطبیقی بر اساس حجم", + "adaptiveVolumeRoutingDesc": "تعداد اتصالها را بر اساس حجم بار و فشار توان عملیاتی، بهصورت پویا مقیاسبندی میکند.", + "lkgpToggleTitle": "آخرین ارائهدهندهٔ سالم شناختهشده (LKGP)", + "lkgpToggleDesc": "در صورت فعال بودن، مسیریاب به خاطر میسپارد که آخرین پاسخ موفق را کدام ارائهدهنده ارسال کرده و در درخواستهای بعدی ابتدا آن را امتحان میکند.", "echoRequestedModelTitle": "انعکاس نام مدل درخواست‌شده در پاسخ‌ها", "echoRequestedModelDesc": "در صورت فعال بودن، فیلد `model` پاسخ، به جای نام مدل بالادستی، نام مستعار یا نام combo درخواست‌شده توسط کلاینت را بازتاب می‌دهد. کلاینت‌های سخت‌گیر (مانند Claude Desktop) را که پاسخی با مدل نامطابق با درخواست را رد می‌کنند، اصلاح می‌کند.", "webSearchRouteTitle": "مسیریابی جستجوی وب", "webSearchRouteDesc": "هنگامی که یک درخواست شامل ابزار بومی web_search باشد، کل درخواست را به جای پیش‌فرض به این مدل هدایت می‌کند — برای ارائه‌دهندگانی که ابزار سرور web_search متعلق به Anthropic را پیاده‌سازی نکرده‌اند مفید است. برای غیرفعال کردن خالی بگذارید.", "webSearchRoutePlaceholder": "جستجو یا انتخاب یک مدل…", "paidModelPatternWarning": "این الگو فقط با مدل‌های پولی مطابقت دارد — مدل‌های پولی را فعال کنید یا الگو را تنظیم نمایید.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "پاککردن حافظهٔ نهان LKGP", + "lkgpCacheCleared": "حافظهٔ نهان LKGP با موفقیت پاک شد", + "lkgpCacheClearFailed": "پاککردن حافظهٔ نهان LKGP ناموفق بود", + "days": "روز", + "lkgp": "حالت LKGP", + "lkgpDesc": "آخرین ارائهدهندهٔ سالم شناختهشده (تابآوری قابل پیشبینی)", + "maintenance": "نگهداری", + "purgeExpiredLogs": "پاکسازی گزارشهای منقضیشده", + "purgeLogsFailed": "پاکسازی گزارشها ناموفق بود", "logsDeleted": "{count, plural, =0 {هیچ لاگ منقضی‌شده‌ای پاکسازی نشد} one {# لاگ منقضی‌شده پاکسازی شد} other {# لاگ منقضی‌شده پاکسازی شد}}", "resetUsageData": "بازنشانی داده‌های مصرف", "resetUsageDataDesc": "مشخص کنید تا چه زمانی به عقب می‌خواهید داده‌های مصرف، لاگ‌های درخواست و داده‌های تحلیلی حذف شوند. پیکربندی ارائه‌دهنده، اتصالات، کلیدهای API، combos و تنظیمات حفظ می‌شوند. این عملیات قابل بازگشت نیست.", @@ -7413,63 +7416,63 @@ "resetUsageFailed": "بازنشانی داده‌های مصرف ناموفق بود", "reset": "بازنشانی", "resetting": "در حال بازنشانی...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", - "pricingSourceLiteLLM": "LiteLLM (Community)", - "clearSyncedPricingConfirm": "Clear all synced pricing data? Provider defaults will be used instead.", - "clearSyncedPricingFailed": "Failed to clear synced pricing", - "pricingSourceUser": "User Override", - "pageDescription": "Manage application settings, model aliases, pricing, and routing rules", - "pricingSyncStatus": "Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", - "pricingLoadFailed": "Failed to load pricing data", - "pricingSyncDescription": "Automatically sync model pricing from external sources to keep cost calculations accurate", - "clearSyncedPricingSuccess": "Synced pricing data cleared", - "clearSyncedPricingFailedWithReason": "Failed to clear pricing: {reason}", - "pricingSourceDefault": "Built-in Default", - "pricingSyncSuccess": "Pricing synced successfully", - "enableSyncError": "Failed to toggle pricing sync", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "contextOpt": "بهینهشده برای زمینه", + "contextOptDesc": "بر اساس نیازمندیهای پنجرهٔ زمینه و طول مکالمه مسیریابی میکند", + "cacheOpt": "بهینهشده برای حافظهٔ نهان", + "cacheOptDesc": "پیشوند پرامپتِ قابل استفادهٔ مجدد را در همان حساب ارائهدهنده نگه میدارد", + "priorityDesc": "بازگشت ترتیبی — ابتدا ارائهدهندهٔ ۱، سپس ارائهدهندهٔ ۲ و به همین ترتیب امتحان میشود", + "weightedDesc": "ترافیک را بر اساس وزنهای درصدی میان ارائهدهندگان توزیع میکند", + "modelRoutingTitle": "قواعد مسیریابی مدل", + "modelRoutingDesc": "مدلها را با استفاده از الگوهای glob بهطور خودکار به ترکیبهای مشخص مسیریابی میکند", + "addRule": "افزودن قاعده", + "routeToCombo": "مسیریابی به ترکیب", + "selectCombo": "ترکیب را انتخاب کنید...", + "priorityHint": "عدد بالاتر = بررسی زودتر. برای الگوهای خاص از ۱۰ یا بیشتر استفاده کنید.", + "patternHint": "برای هر تعداد نویسه از * و برای یک نویسه از ? استفاده کنید. به بزرگی و کوچکی حروف حساس نیست.", + "noRoutingRules": "هیچ قاعدهٔ مسیریابی پیکربندی نشده است. درخواستها بهطور پیشفرض از ترکیب سراسری استفاده میکنند.", + "routingRuleHint": "قاعدهای مانند claude-opus* -> frontier-combo اضافه کنید تا درخواستها بهطور خودکار مسیریابی شوند.", + "deleteRoutingRule": "این قاعدهٔ مسیریابی مدل حذف شود؟", + "exactMatchMode": "تطبیق دقیق", + "wildcardPatternMode": "الگوی نویسه عام", + "exactMatchModeDesc": "برای شناسههای مدل منسوخشده یا تغییرنامیافته، از نامهای مستعار دقیق استفاده کنید.", + "wildcardPatternModeDesc": "هنگامی که یک خانواده از مدلها باید به یک مقصد نگاشت شود، از نامهای مستعار دارای نویسههای عام * و ? استفاده کنید.", + "noExactAliasesConfigured": "هیچ نام مستعار با تطبیق دقیق پیکربندی نشده است.", + "wildcardRulesTitle": "قواعد نویسه عام", + "noWildcardAliasesConfigured": "هیچ نام مستعار دارای نویسه عام پیکربندی نشده است.", + "overview": "نمای کلی", + "unknownError": "خطای ناشناخته", + "pricingSourceLiteLLM": "LiteLLM (جامعه کاربری)", + "clearSyncedPricingConfirm": "همه دادههای همگامشده قیمتگذاری پاک شوند؟ در عوض از مقادیر پیشفرض ارائهدهنده استفاده خواهد شد.", + "clearSyncedPricingFailed": "پاککردن قیمتگذاری همگامشده ناموفق بود", + "pricingSourceUser": "بازنویسی کاربر", + "pageDescription": "مدیریت تنظیمات برنامه، نامهای مستعار مدل، قیمتگذاری و قواعد مسیریابی", + "pricingSyncStatus": "وضعیت همگامسازی", + "whitelist": "فهرست مجاز", + "syncDisabled": "همگامسازی غیرفعال است", + "pricingLoadFailed": "بارگذاری دادههای قیمتگذاری ناموفق بود", + "pricingSyncDescription": "برای حفظ دقت محاسبات هزینه، قیمتگذاری مدلها را بهطور خودکار از منابع خارجی همگامسازی کنید", + "clearSyncedPricingSuccess": "دادههای همگامشده قیمتگذاری پاک شدند", + "clearSyncedPricingFailedWithReason": "پاککردن قیمتگذاری ناموفق بود: {reason}", + "pricingSourceDefault": "پیشفرض داخلی", + "pricingSyncSuccess": "قیمتگذاری با موفقیت همگامسازی شد", + "enableSyncError": "تغییر وضعیت همگامسازی قیمتگذاری ناموفق بود", + "syncEnabled": "همگامسازی فعال است", + "blacklist": "فهرست مسدود", "pricingSourceModelsDev": "Models.dev", - "syncedModels": "Synced Models", - "budget": "Budget", - "pricingSyncTitle": "Pricing Sync", - "pricingResetFailedWithReason": "Failed to reset pricing: {reason}", - "tab": "Tab", - "pricingSavedProvider": "Pricing saved for {provider}", - "pricingSyncFailed": "Pricing sync failed", - "pricingSaveFailedWithReason": "Failed to save pricing: {reason}", - "pricingResetProvider": "Pricing reset for {provider}", - "nextSync": "Next Sync", - "pricingSyncFailedWithReason": "Pricing sync failed: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "syncedModels": "مدلهای همگامشده", + "budget": "بودجه", + "pricingSyncTitle": "همگامسازی قیمتگذاری", + "pricingResetFailedWithReason": "بازنشانی قیمتگذاری ناموفق بود: {reason}", + "tab": "زبانه", + "pricingSavedProvider": "قیمتگذاری برای {provider} ذخیره شد", + "pricingSyncFailed": "همگامسازی قیمتگذاری ناموفق بود", + "pricingSaveFailedWithReason": "ذخیره قیمتگذاری ناموفق بود: {reason}", + "pricingResetProvider": "قیمتگذاری برای {provider} بازنشانی شد", + "nextSync": "همگامسازی بعدی", + "pricingSyncFailedWithReason": "همگامسازی قیمتگذاری ناموفق بود: {reason}", + "clearSyncedPricing": "پاککردن قیمتگذاری همگامشده", + "compressionTitle": "فشردهسازی پرامپت", + "compressionDesc": "با فشردهسازی پرامپتها پیش از ارسال به ارائهدهندگان، مصرف توکن را کاهش دهید", "compressionGuidanceFullGuideLink": "راهنمای کامل فشرده‌سازی", "compressionGuidanceShow": "جزئیات", "compressionGuidanceHide": "پنهان کردن جزئیات", @@ -7485,13 +7488,13 @@ "tokenSaverInputCompressionDesc": "تاریخچه چت واجد شرایط را با حفظ کد، URLها و هدف بازنویسی کنید.", "tokenSaverFineTunePrefix": "تنظیم دقیق هر موتور در", "tokenSaverFineTuneSuffix": "یا ترکیب موتورها در هر درخواست در", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", + "compressionMode": "حالت فشردهسازی", + "compressionModeOff": "خاموش", + "compressionModeOffDesc": "هیچ فشردهسازیای اعمال نمیشود", + "compressionModeLite": "سبک", + "compressionModeLiteDesc": "کاهش فاصلههای خالی و خطوط خالی", + "compressionModeStandard": "استاندارد (Caveman)", + "compressionModeStandardDesc": "فشردهسازی مبتنی بر قواعد با بیش از ۳۰ الگو؛ بلوکهای کد و URLها را حفظ میکند", "compressionModeAggressive": "تهاجمی", "compressionModeAggressiveDesc": "خلاصه سازی + فشرده سازی نتیجه ابزار + پیری تدریجی برای حداکثر صرفه جویی", "compressionModeUltra": "فوق العاده", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "تعداد پیام‌های اخیر نگهداری شده در هر ردیف قدیمی (بالاتر = بیشتر حفظ شده)", "compressionToolStrategies": "استراتژی های نتیجه ابزار", "compressionToolStrategiesDesc": "تغییر استراتژی های فشرده سازی برای انواع مختلف نتایج ابزار", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "تنظیمات عمومی", + "compressionAutoTrigger": "آستانه فعالسازی خودکار", + "compressionCacheTTL": "زمان ماندگاری کش (TTL)", + "compressionPreserveSystem": "حفظ پرامپت سیستم", "compressionPreserveSystemAlways": "همیشه", "compressionPreserveSystemWhenNoCache": "در صورت عدم وجود حافظه پنهان", "compressionPreserveSystemNever": "هرگز", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "ذخیره شد", "compressionExclusionsCount": "{count, plural, one {# استثنا} other {# استثناها}} پیکربندی شده", "compressionExclusionsEmpty": "هیچ استثنایی پیکربندی نشده است — هر مدل/نقطه پایانی برای فشرده‌سازی واجد شرایط است (رفتار پیش‌فرض).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "پیکربندی موتور Caveman", + "compressionCavemanConfigDesc": "تنظیم دقیق موتور فشردهسازی مبتنی بر قواعد", "compressionCavemanPanelHint": "وضعیت روشن/خاموش و سطح آن در پنل تنظیم می‌شود:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "فشردهسازی نقشهای پیام", + "compressionRoleUser": "کاربر", + "compressionRoleAssistant": "دستیار", + "compressionRoleSystem": "سیستم", + "compressionMinLength": "حداقل طول پیام", + "compressionSkipRules": "قواعد مستثنا از فشردهسازی", + "compressionSkipRulesDesc": "برای نادیده گرفتن قواعد هنگام فشردهسازی، روی آنها کلیک کنید", + "compressionPreservePatterns": "الگوهای حفظشونده", + "compressionPreservePatternsDesc": "الگوهای Regex که هرگز فشرده نمیشوند (هر خط یک الگو)", + "compressionLogTitle": "گزارش فشردهسازی", + "compressionLogEmpty": "هنوز هیچ درخواستی فشرده نشده است. وقتی درخواستها با فشردهسازی فعال پردازش شوند، آمار فشردهسازی اینجا نمایش داده میشود.", "minutes": "دقیقه", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "فیلترکردن خروجی ابزار با آگاهی از فرمان", + "compressionModeCodexResponses": "خروجی ابزار Responses", + "compressionModeCodexResponsesDesc": "فشردهسازی محافظهکارانه برای خروجیهای واجد شرایط پوسته، وصله، جستوجو، ساخت و JSON", + "compressionModeStacked": "انباشته", + "compressionModeStackedDesc": "فیلترکردن خروجی ابزار توسط RTK و سپس فشردهسازی پیام با Caveman", + "qdrantTitle": "Qdrant (حافظه برداری)", + "qdrantDesc": "اختیاری. برای بازیابی سریعتر، حافظههای معنایی را در یک پایگاه داده برداری خارجی نمایهسازی میکند.", + "qdrantStatusActive": "فعال", + "qdrantStatusError": "خطا", + "qdrantStatusDisabled": "غیرفعال", + "qdrantEnable": "فعالسازی Qdrant", + "qdrantEnableDesc": "در صورت فعال بودن، راهبرد معنایی/ترکیبی میتواند برای بازیابی حافظهها از Qdrant استفاده کند.", + "qdrantTesting": "در حال آزمایش...", + "qdrantTestConnection": "آزمایش اتصال", + "qdrantSaved": "پیکربندی ذخیره شد", + "qdrantSaveError": "ذخیره پیکربندی ناموفق بود", + "qdrantHostHint": "بدون پورت. مثال: 127.0.0.1 یا http://qdrant", + "qdrantPort": "پورت", + "qdrantPortHint": "پیشفرض Qdrant: 6333", + "qdrantCollectionHint": "محل ذخیره نقاط حافظه.", + "qdrantEmbeddingModel": "مدل تعبیهسازی", + "qdrantHelpTitle": "راهنمای راهاندازی سریع", + "qdrantHelpQuickTitle": "راهاندازی سریع (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. میزبان: IP/URL مربوط به Qdrant، پورت: 6333، مجموعه: omniroute_memory.", + "qdrantHelpStep2": "2. در صورت استفاده از nvidia/llama-nemotron-embed-vl-1b-v2:free، بُعد مجموعه را روی 2048 تنظیم کنید.", + "qdrantHelpStep3": "3. فیلد مدل: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. ذخیره کنید، اتصال را آزمایش کنید و سپس جستجو را آزمایش کنید.", + "qdrantEmbeddingQuickSelect": "انتخاب سریع از میان مدلهای شناساییشده...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "قالب: provider/model. اعتبارنامه ارائهدهنده باید پیکربندی شده باشد.", + "qdrantApiKeyPlaceholderKeep": "(برای حفظ کلید فعلی، خالی بگذارید)", + "qdrantApiKeyPlaceholderOptional": "(در صورت عدم استفاده، خالی بگذارید)", + "qdrantSaveHint": "نکته: میزبان/پورت/مجموعه/مدل را ویرایش کرده و روی ذخیره کلیک کنید. کلید API اختیاری است.", + "qdrantSearchTestTitle": "آزمایش جستجو", + "qdrantSearchTestDesc": "تعبیه را تولید کرده و در Qdrant جستجو میکند.", + "qdrantSearchPlaceholder": "مثال: ترجیحات کاربر، تاریخچه و غیره", + "qdrantNoResults": "نتیجهای یافت نشد (یا Qdrant پیکربندی نشده است).", + "qdrantCleanupTitle": "نگهداشت و پاکسازی", + "qdrantCleanupDesc": "نقاط منقضیشده و قدیمی را بر اساس موارد زیر حذف میکند", + "searching": "در حال جستجو...", + "cleaning": "در حال پاکسازی...", + "cleanNow": "اکنون پاکسازی شود", "optional": "اختیاری", "current": "فعلی", "remove": "حذف کنید", @@ -7600,19 +7603,19 @@ "resilienceScope": "محدوده:", "resilienceTrigger": "ماشه:", "resilienceEffect": "اثر:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "صف درخواستها و نرخ", + "resilienceAutoEnableApiKeyProviders": "فعالسازی خودکار برای ارائهدهندگان دارای کلید API", + "resilienceRequestsPerMinute": "درخواست در دقیقه", + "resilienceMinTimeBetweenRequests": "حداقل زمان بین درخواستها", + "resilienceConcurrentRequests": "درخواستهای همزمان", + "resilienceConnectionScopeConcurrentRequests": "درخواستهای همزمان بهازای هر اتصال/محدوده سهمیه", + "resilienceGlobalConcurrentRequests": "درخواستهای همزمان سراسری به سرویس بالادستی (0 = غیرفعال)", "resilienceMaxQueueWaitTime": "حداکثر زمان انتظار صف", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "زمان انتظار پایه", + "resilienceUseUpstreamRetryHints": "استفاده از راهنماییهای تلاش مجدد سرویس بالادستی", + "resilienceDefaultPerProvider": "پیشفرض (برای هر ارائهدهنده)", + "resilienceAlwaysOn": "همیشه روشن", + "resilienceAlwaysOff": "همیشه خاموش", "routingRemoveEntry": "حذف ورودی", "routingNeedlesSubstrings": "سوزن ها (رشته های فرعی برای تطبیق)", "routingCaseSensitive": "حساس به حروف کوچک و بزرگ", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "قبل از اینکه توضیحات استخراج‌شده دوباره به درخواست اصلی تزریق شود، به مدل بینایی ارسال می‌شود.", "visionBridgeTimeoutMs": "مهلت زمانی (میلی‌ثانیه)", "visionBridgeMaxImagesPerRequest": "حداکثر تصاویر در هر درخواست", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "حداکثر مراحل عقبنشینی", + "resilienceProviderBreakerTitle": "قطعکننده مدار برای هر ارائهدهنده", + "resilienceFailureThreshold": "آستانه خرابی", + "resilienceDegradationThreshold": "آستانه افت عملکرد", "resilienceResetTimeout": "بازنشانی مهلت زمانی", "resilienceFailureThresholdLabel": "آستانه شکست", "resilienceResetTimeoutLabel": "بازنشانی مهلت زمانی", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "زمان انتظار اتصال", "resilienceUseUpstreamRetryHintsLabel": "از نکات بالادستی برای تلاش مجدد استفاده کنید", "resilienceUseUpstream429BreakerLabel": "استفاده از نکات بالادستی 429 (شکن)", "resilienceMaxBackoffStepsLabel": "حداکثر مراحل عقب نشینی", "resilienceYes": "بله", "resilienceNo": "خیر", - "resilienceDefault": "Default", + "resilienceDefault": "پیشفرض", "storageDatabaseBackupRetention": "نگهداری از پایگاه داده پشتیبان", "storageDatabaseBackups": "پشتیبان‌گیری‌های پایگاه داده", "storageBackupRetentionDescription": "پشتیبان‌گیری‌های خودکار SQLite ذخیره می‌شوند در", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "JSON قدیمی با موفقیت وارد شد!", "jsonImportFailed": "وارد کردن JSON ناموفق بود", "jsonImportError": "خطا در حین وارد کردن JSON", + "jsonImportAuthRequired": "برای وارد کردن پیکربندی قدیمی JSON، احراز هویت لازم است. لطفاً ابتدا وارد شوید یا راهاندازی را تکمیل کنید.", + "databaseSettingsAuthRequiredTitle": "احراز هویت لازم است", + "databaseSettingsAuthRequiredBody": "تنظیمات پایگاه داده و وارد کردن JSON فقط برای مدیر احراز هویتشده در دسترس است. برای مشاهده و ویرایش آنها وارد شوید یا راهاندازی را تکمیل کنید.", + "databaseSettingsAuthRequiredCta": "ورود", "storagePurgeData": "پاکسازی داده ها", "storagePurgeDataDesc": "حذف فوری تمام رکوردها بدون اعمال بررسی‌های نگهداری. با احتیاط استفاده کنید.", "storageRetentionCleanup": "تنظیمات نگهداری", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "حالت: {mode}", "compressionAdaptiveOff": "بودجه محتوای تطبیقی: خاموش (محرک خودکار قدیمی)", "compressionAdaptiveTarget": "تطبیقی ({mode}، خط‌مشی: {policy}) — هدف ≈ {target, number} توکن (برای یک پنجره {contextLimit, number} توکنی)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "بودجه تطبیقی زمینه", + "compressionAdaptiveModeOff": "خاموش (راهاندازی خودکار قدیمی)", + "compressionAdaptiveModeFloor": "حداقل (همیشه جا شدن را تضمین کن)", + "compressionAdaptiveModeReplace": "جایگزینی راهاندازی خودکار", + "compressionAdaptivePolicy": "سیاست بودجه", + "compressionAdaptivePolicyReserve": "رزرو خروجی", + "compressionAdaptivePolicyPercentage": "درصد پنجره", + "compressionAdaptivePolicyAbsolute": "بودجه مطلق توکن", "compressionOutputStylesDescription": "تزریق دستورالعمل‌های شکل‌دهی به پاسخ بدون بازنویسی خروجی ارائه‌دهنده. ترکیب آزادانه.", "mcpAccessibilityDescription": "محدوده خروجی‌های ابزار MCP (ذخیره‌ساز مجزا).", "compressionStylesTileSummary": "{tokens, number} توکن ذخیره شد · {runs, plural, one {# اجرا سبک‌دهی شد} other {# اجرا سبک‌دهی شدند}}", @@ -7866,8 +7873,8 @@ "description": "فیلتر کردن خروجی دستور." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "خروجی ابزار Responses", + "description": "فشردهسازی محافظهکارانه برای خروجیهای پشتیبانیشده ابزار Responses." }, "headroom": { "label": "فضای آزاد", @@ -7908,12 +7915,12 @@ "description": "نردبان YAGNI: کوچک‌ترین تغییر کارآمد، بدون انتزاع‌های ناخواسته." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (توسعهدهنده ارشد تنبل)", + "description": "رویکرد توسعهدهنده ارشد تنبل: از نردبان YAGNI بالا برو، علت ریشهای را رفع کن و کوچکترین تغییر کارآمد را اعمال کن." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "من ADHD دارم (اول اقدام)", + "description": "خروجی اقداممحور: ابتدا اقدام بعدی، مراحل شمارهگذاریشده، یک گام بعدی مشخص و بدون مقدمه." }, "terse-cjk": { "label": "CJK موجز (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "بازگشت CLIProxyAPI", "cliproxyapiEnableFallback": "CLIProxyAPI Fallback را فعال کنید", "cliproxyapiUrl": "URL CLIProxyAPI", + "headroomProxyTitle": "پروکسی Headroom", + "headroomProxyDesc": "URL پروکسی اختیاری Headroom برای صرفهجویی در توکن. اگر خالی باشد، از HEADROOM_URL یا http://localhost:8787 استفاده میشود.", + "headroomProxyUrl": "URL ‏Headroom", + "headroomProxyUrlHint": "URLهای لوپبک را میتوان از این صفحه راهاندازی کرد. URLهای خارجی فقط بررسی میشوند.", + "headroomProxySave": "ذخیره", + "headroomProxyStart": "شروع", + "headroomProxyStop": "توقف", + "headroomProxyExternalHint": "این URL لوپبک نیست، بنابراین OmniRoute رابط خط فرمان محلی را اجرا نخواهد کرد.", "cliproxyapiStatus": "وضعیت CLIProxyAPI", "cliproxyapiNotDetected": "شناسایی نشد", "cliproxyapiImportAuthTitle": "وارد کردن حساب‌ها از CLIProxyAPI", @@ -7989,14 +8004,14 @@ "codexFastTierDesc": "برای درخواست‌های OpenAI Codex به صورت جهانی service_tier=اولویت را تزریق کنید.", "codexFastTierHint": "وقتی فعال باشد، OmniRoute service_tier=priority را به درخواست‌های کدکس خروجی برای اتصالاتی که قبلاً یک ردیف مشخص نکرده‌اند اضافه می‌کند. ردیف اولویت به کلید OpenAI Enterprise API یا مسیر ChatGPT-ath Codex نیاز دارد. سایر انواع کلید یک خطای مرتبط با لایه از OpenAI دریافت خواهند کرد. تنظیمات هر اتصال در صفحه ارائه دهنده Codex اولویت دارند.", "codexFastTierSaveError": "تنظیم ردیف سریع Codex به‌روزرسانی نشد", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "پینگ خودکار سهمیه Codex", + "codexAutoPingDesc": "فعالسازی اختیاری برای هر اتصال: بلافاصله پس از بازنشانی پنجره نشست Codex، یک درخواست کوچک ارسال میکند تا هنگام نیاز در حالت سرد نباشد.", + "codexAutoPingWarning": "هر پینگ مقدار کمی از سهمیه واقعی Codex را مصرف میکند. بهطور پیشفرض خاموش است — فقط برای اتصالهایی فعال کنید که بهطور فعال به آنها متکی هستید.", + "codexAutoPingSaveError": "بهروزرسانی تنظیم پینگ خودکار Codex ناموفق بود", + "codexAutoPingToggleAria": "تغییر وضعیت پینگ خودکار سهمیه Codex برای {connection}", "codexFastTierTierLabel": "سطح سرویس", "codexFastTierTierPriority": "اولویت", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "انعطافپذیر", "codexFastTierTierDefault": "پیش‌فرض", "codexFastTierModelsLabel": "مدل‌های سطح سریع", "codexFastTierModelsHint": "فقط مدل‌های انتخاب‌شده زمانی که Fast Tier فعال است، service_tier را دریافت می‌کنند.", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "بازه بررسی سراسری", "resilienceCredentialHealthEveryMinutes": "هر {minutes} دقیقه", "resilienceCredentialHealthHint": "0 پویش پس‌زمینه را خاموش می‌کند (حداکثر 1440 دقیقه = 24 ساعت). اتصال‌هایی با مقدار بررسی سلامت خودشان این پیش‌فرض سراسری را نادیده می‌گیرند؛ 0 برای یک اتصال آن را حتی با پویش سراسری روشن کنار می‌گذارد.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "برای {provider} همیشه فعال است — برای امنیت حساب OAuth الزامی است و نمیتوان آن را غیرفعال کرد.", + "forcedFingerprintBadge": "الزامی", "sessionAffinityTitle": "وابستگی نشست", "sessionAffinityDesc": "یک گفتگو را برای این تعداد ثانیه روی همان حساب برای هر ارائه‌دهنده‌ای نگه می‌دارد. مقدار 0 آن را غیرفعال می‌کند.", "sessionAffinityTtl": "طول عمر (TTL) وابستگی (به ثانیه)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "حداکثر تعداد مراحل عقب‌نشینی قبل از اینکه رشد کول‌داون متوقف شود. در بیشتر پیکربندی‌ها ابتدا به سقف Max Cooldown رسیده می‌شود، که این مورد را به یک سقف ایمنی برای زمانی که Max Cooldown افزایش می‌یابد تبدیل می‌کند.", "disableSessionStickiness": "غیرفعال کردن چسبندگی نشست", "disableSessionStickinessDesc": "ترکیب‌های نوبت‌گردشی و تصادفی در هر درخواست به یک اتصال متفاوت منتقل می‌شوند، به جای اینکه کل گفتگو را بر اساس هش اولین پیام به یک اتصال پین کنند. برای حفظ هیت‌های prompt-cache در چت‌های چند نوبته، این گزینه را غیرفعال بگذارید. اولویت با بازنویسی‌های اختصاصی هر ترکیب است.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "مسیریابی بر اساس محلیبودن کش پرامپت", + "promptCacheAffinityDesc": "برای کلیدهای منطبق کش پرامپت، همان حساب ارائهدهنده را ترجیح بده، درحالیکه قابلیت جابهجایی در صورت مشکل سلامت یا اتمام سهمیه حفظ شود.", + "reasoningTokenBuffer": "بافر توکنهای استدلال", + "reasoningTokenBufferDesc": "به مسیریابی ترکیبی اجازه بده فقط برای مدلهای استدلالی شناختهشده فضای اضافهای به max_tokens بیفزاید، مشروط بر اینکه کل بافر در سقف خروجی مشخصشده جا شود.", + "zeroLatencyOptimizations": "بهینهسازیهای بدون تأخیر", + "zeroLatencyOptimizationsDesc": "استفاده از درخواستهای پوششی، رد پیشبینانه بر اساس TTFT و فشردهسازی پیشگیرانه مسیر جایگزین را فعال کنید. برای جلوگیری از رقابت این قابلیتهای کاهش تأخیر میان مقصدها یا فشردهسازی درخواستهای جایگزین، آن را غیرفعال نگه دارید.", "credentialRedaction": "سانسور اطلاعات اعتبارنامه‌ای", "credentialRedactionDesc": "سانسور کردن کلیدهای API، توکن‌ها و اسرار از بافت ارسال شده به ارائه‌دهندگان و از پاسخ‌ها.", "enableCredentialRedaction": "فعال‌سازی سانسور اطلاعات اعتبارنامه‌ای", "enableCredentialRedactionDesc": "کلیدهای API، توکن‌ها، کلیدهای خصوصی و JWTها را از پیام‌ها، فراخوانی‌های ابزار و پاسخ‌ها پاک می‌کند.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "همگامسازی خودکار غیرفعال است", + "pricingAutoSyncEnabled": "همگامسازی خودکار فعال است", "modalityBridgeIntro": "محتوای چندرسانه‌ای را پیش از رسیدن به مدل‌های فقط متنی به متن تبدیل کنید. پل‌های بینایی، صدا و ویدیو در دسترس و قابل پیکربندی هستند.", "modalityBridgeVisionTab": "بینش", "modalityBridgeAudioTab": "صوت", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "سلامت", "cliproxyapiPort": "پورت", "qdrantHost": "میزبان", - "qdrantCollection": "مجموعه", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "مجموعه" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "موتور RTK", + "description": "فشردهسازی آگاه از فرمان برای خروجی ابزار، گزارشهای ترمینال و نتایج ساخت.", + "enabled": "فعال", + "intensity": "شدت", + "intensityMinimal": "حداقلی", + "intensityStandard": "استاندارد", + "intensityAggressive": "تهاجمی", + "toolResults": "نتایج ابزار", + "assistantMessages": "پیامهای دستیار", + "codeBlocks": "بلوکهای کد", "filterCatalog": "کاتالوگ فیلتر", "filterCatalogDesc": "فیلترهای خروجی موجود بر اساس دسته بندی", "guidedConfig": "پیکربندی", "guidedConfigDesc": "نحوه فیلتر کردن خروجی ترمینال RTK را تنظیم کنید", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "حداکثر خطوط", + "maxChars": "حداکثر نویسهها", "deduplicateThreshold": "حذف آستانه", "customFilters": "فیلترهای سفارشی", "detectedType": "نوع شناسایی شده", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "شکست ها", "rawOutputAlways": "همیشه", "rawOutputMaxBytes": "حداکثر بایت خروجی خام", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "آزمایش فیلتر", + "pasteOutput": "برای آزمایش فیلترسازی، خروجی ابزار را جایگذاری کنید...", "presetHigh": "تهاجمی", "presetLow": "نور", "presetMaxChars": "حداکثر کاراکترهای خروجی", "presetMaxLines": "حداکثر خطوط خروجی", "presetMedium": "استاندارد", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "اجرا", + "result": "نتیجه", + "previewEmpty": "برای پیشنمایش خروجی RTK، یک نمونه را اجرا کنید.", + "detected": "شناساییشده", "masterSwitchOffAlert": "کلید اصلی Token Saver خاموش است — این تنظیمات تا زمانی که آن را از صفحه Endpoint روشن نکنید، روی درخواست‌ها تأثیری نخواهند گذاشت.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "توکنهای فیلترشده", + "filtersActive": "فیلترهای فعال", + "requests": "درخواستها", + "avgSavings": "میانگین صرفهجویی", "simpleMode": "ساده", "advancedMode": "پیشرفته", "searchFilters": "جستجو در فیلترها...", @@ -8495,7 +8502,7 @@ }, "engines": { "headroom": { - "name": "Headroom SmartCrusher", + "name": "فضای اضافه SmartCrusher", "description": "فشرده‌سازی جدولی بدون اتلاف آرایه‌های همگن JSON با نشانگرهای صریح تعداد سطر." }, "session-dedup": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "ترکیبهای فشردهسازی", + "description": "نحوه ترکیب موتورها را برای سناریوهای مختلف مسیریابی تعریف کنید.", + "createCombo": "ایجاد ترکیب فشردهسازی", + "editCombo": "ویرایش", + "deleteCombo": "حذف", + "deleteConfirm": "این ترکیب فشردهسازی حذف شود؟", + "pipeline": "خط لوله", + "addStep": "افزودن مرحله", + "removeStep": "برداشتن", + "name": "نام", + "descriptionField": "توضیحات", + "languagePacks": "بستههای زبانی", + "outputMode": "حالت خروجی", + "assignToRouting": "اختصاص به ترکیبهای مسیریابی", + "noAssignments": "هیچ ترکیب مسیریابیای موجود نیست", + "default": "پیشفرض", + "setAsDefault": "تنظیم بهعنوان پیشفرض", + "save": "ذخیره", + "cancel": "لغو", + "enabled": "فعال", "loading": "در حال بارگذاری…", "hubTitle": "مرکز فشرده‌سازی", "hubDescription": "انتخاب کنید کدام نمایه فشرده‌سازی به‌صورت سراسری اجرا شود.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "در حال حاضر فقط برای Claude (Anthropic) در دسترس است. این یک حالت واگذارشده است: ارائه‌دهنده بلوک‌های قدیمی استفاده از ابزار را در سمت سرور پاک می‌کند — ما پیام را بازنویسی نمی‌کنیم. این مورد بر سایر ارائه‌دهندگان تأثیری ندارد.", "namedCombos": "ترکیب‌های نام‌گذاری‌شده", "namedCombosDescription": "خطوط لوله مختلف را ذخیره کرده و آن‌ها را به ترکیب‌های مسیریابی خاص اختصاص دهید.", + "activeProfileMasterSwitchOffWarning": "پروفایل فعال زیر تا زمانی که کلید اصلی «فشردهسازی پرامپت» روشن نشود، اجرا نخواهد شد.", + "activeProfileMasterSwitchOffCta": "آن را در تنظیمات روشن کنید", "comboNamePlaceholder": "نام ترکیب", "descriptionPlaceholder": "توضیحات", "nameRequired": "قبل از ذخیره، یک نام برای ترکیب وارد کنید.", @@ -8674,9 +8683,7 @@ "languagePacksList": "بسته‌های زبان: {packs}", "dragToReorder": "برای تغییر ترتیب مرحله بکشید", "engine": "موتور", - "intensity": "شدت", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "شدت" }, "compressionStudio": { "noRun": "هیچ اجرای فشرده‌سازی موجود نیست.", @@ -8705,7 +8712,7 @@ "run": "اجرا", "laneRejected": "رد شد: {reason}", "error": "خطا", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "پیشنمایش خط لوله ترکیبی ناموفق بود: {reason}", "combinedFlow": "جریان ترکیبی", "eachLayer": "هر لایه به‌صورت جداگانه", "diff": "تفاوت", @@ -8780,27 +8787,27 @@ }, "enableTitle": "فعال‌سازی موتور", "enableDescription": "در انتهای پشته اجرا می‌شود (پس از اینکه RTK/Caveman متن را پاکسازی کرد، OmniGlyph باقی‌مانده را به تصویر تبدیل می‌کند) و همچنین به‌صورت مستقل از طریق حالت omniglyph اجرا می‌شود. این یک پیش‌نمایش است و تا زمان تکمیل اعتبارسنجی سرتاسری به‌طور پیش‌فرض خاموش می‌ماند.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "پروفایل فشردهسازی", + "profileDescription": "پروفایل یک سقف است، نه کف: پروفایل سختگیرانهتر را نمیتوان با لغو تنظیم در هر مرحله دوباره باز کرد. بر اساس اندازهگیری روی این پایگاه کد: با حالت امن برای کدنویسی یا متعادل، نشستی که هنوز سابقهای انباشته نکرده است چیزی را فشرده نمیکند، زیرا هر دو آستانه حداقل تعداد نویسهها را افزایش میدهند و پرامپت سیستم، طرحوارههای ابزار و نتایج ابزار را بهصورت بومی نگه میدارند.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "تهاجمی (پیشفرض)", + "description": "سیاستی که رسیدهای منتشرشده اندازهگیری کردهاند. پرامپت سیستم، مستندات ابزار و سابقه متراکم را به تصویر تبدیل میکند." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "متعادل", + "description": "وضعیت زنده را بهصورت بومی نگه میدارد و از ۸ نوبت آخر محافظت میکند؛ فقط سابقه بستهشده قدیمیتر را فشرده میکند." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "امن برای کدنویسی", + "description": "اختیارات، طرحوارههای ابزار و خروجی زنده ابزار را بهصورت بومی نگه میدارد و از ۱۲ نوبت آخر محافظت میکند. تا زمانی که نشست سابقهای انباشته نکند، چیزی را فشرده نمیکند." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "عبور بدون تغییر", + "description": "بدون تبدیل مسیریابی میکند. موتور نادیده گرفته میشود و درخواست بدون هیچ تغییری ارسال میشود." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "پروفایل فشردهسازی OmniGlyph را انتخاب کنید", "saved": "ذخیره شد.", "saveFailed": "ذخیره نشد.", "enableAria": "فعال‌سازی موتور OmniGlyph", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "فشردهسازی پیام مبتنی بر قواعد، بستههای زبانی، تحلیلها و کنترلهای حالت خروجی.", "advancedConfig": "پیکربندی پیشرفته", "advancedConfigDesc": "رفتار فشرده سازی دقیق", "aggressiveSettings": "تنظیمات تهاجمی", "aggressiveSettingsDesc": "حداکثر فشرده سازی با معاوضه های بالقوه کیفیت", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "درخواستها", + "tokensSaved": "توکنهای صرفهجوییشده", + "savingsPercent": "درصد صرفهجویی", + "avgLatency": "میانگین تأخیر", + "languagePacks": "بستههای زبانی", + "languagePacksDesc": "قواعد فشردهسازی را برای زبانهای مشخص فعال کنید.", "labelAutoTrigger": "فشرده سازی خودکار زمانی که زمینه بیش از حد است", "labelCompressionRate": "قدرت فشار", "labelMaxTokens": "نشانه های هدف در هر پیام", "labelMinLength": "حداقل طول پیام", "labelMinSavings": "حداقل توکن برای ذخیره", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "فعال", + "autoDetect": "تشخیص خودکار زبان", + "rulesCount": "{count} قانون", "inputCompressionTitle": "فشرده‌سازی ورودی", "inputCompressionDesc": "بازنویسی تاریخچه گفتگو با عبارات کوتاه‌تر. توکن‌های ورودی را تا حدود ۵۰٪ کاهش می‌دهد.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "تحلیل فشردهسازی", + "noAnalytics": "هنوز دادهای برای تحلیل فشردهسازی وجود ندارد.", "masterDisabledWarning": "کلید اصلی Token Saver خاموش است — این تنظیمات تا زمانی که آن را از تنظیمات فشرده‌سازی روشن نکنید یا در اینجا تغییر ندهید، روی درخواست‌ها تأثیری نخواهند داشت.", "outputMode": "حالت خروجی", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "حالت خروجی", "quickSettings": "تنظیمات سریع", "quickSettingsDesc": "تنظیمات اولیه فشرده سازی برای شروع", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "عبور خودکار از Clarity", + "bypassConditions": "شرایط عبور", "bypassConditionsList": "امنیت، برگشت ناپذیر، شفاف سازی، حساس به نظم", "simpleMode": "ساده", "advancedMode": "پیشرفته", @@ -8944,56 +8951,56 @@ "ultraSettings": "تنظیمات فوق العاده", "ultraSettingsDesc": "فشرده سازی معنایی مبتنی بر SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "مختصر پاسخ دهید. اصطلاحات فنی، کد، خطاها، URLها و شناسهها را حفظ کنید.", + "full": "کوتاه و فشرده پاسخ دهید. تمام محتوای فنی را حفظ کنید.", + "ultra": "بسیار کوتاه و با اختصارات فنی رایج پاسخ دهید. نمادها را دقیقاً حفظ کنید." } }, "translator": { - "title": "Translator", - "metaTitle": "Translator Playground | OmniRoute", - "metaDescription": "Debug, test, and visualize API format translations between providers", - "playgroundTitle": "Translator Playground", - "playground": "Playground", - "realtime": "Real-Time Translation Activity", + "title": "مترجم", + "metaTitle": "محیط آزمایشی مترجم | OmniRoute", + "metaDescription": "اشکالزدایی، آزمایش و بصریسازی ترجمه قالبهای API بین ارائهدهندگان", + "playgroundTitle": "محیط آزمایشی مترجم", + "playground": "محیط آزمایشی", + "realtime": "فعالیت ترجمه بلادرنگ", "chatTester": "Chat Tester", - "testBench": "Test Bench", - "liveMonitor": "Live Monitor", - "modeDescriptionPlayground": "Paste any API request body and see how OmniRoute translates it between provider formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", - "modeDescriptionChatTester": "Send real chat requests through OmniRoute and inspect the full round-trip: input, translated request, provider response, and translated output.", - "modeDescriptionTestBench": "Run predefined scenarios and compare compatibility across providers and models.", - "modeDescriptionLiveMonitor": "Watch translation events in real time as requests flow through OmniRoute.", - "modeDescriptionFallback": "Debug, test, and visualize how OmniRoute translates API requests between providers.", - "recentTranslations": "Recent Translations", - "noTranslations": "No translations yet", - "source": "Source", - "target": "Target", - "time": "Time", + "testBench": "میز آزمایش", + "liveMonitor": "پایش زنده", + "modeDescriptionPlayground": "بدنه هر درخواست API را جایگذاری کنید و ببینید OmniRoute چگونه آن را بین قالبهای ارائهدهندگان ترجمه میکند (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", + "modeDescriptionChatTester": "درخواستهای واقعی چت را از طریق OmniRoute ارسال کنید و کل رفتوبرگشت را بررسی کنید: ورودی، درخواست ترجمهشده، پاسخ ارائهدهنده و خروجی ترجمهشده.", + "modeDescriptionTestBench": "سناریوهای ازپیشتعریفشده را اجرا و سازگاری بین ارائهدهندگان و مدلها را مقایسه کنید.", + "modeDescriptionLiveMonitor": "رویدادهای ترجمه را همزمان با عبور درخواستها از OmniRoute، بهصورت بلادرنگ مشاهده کنید.", + "modeDescriptionFallback": "نحوه ترجمه درخواستهای API بین ارائهدهندگان توسط OmniRoute را اشکالزدایی، آزمایش و بصریسازی کنید.", + "recentTranslations": "ترجمههای اخیر", + "noTranslations": "هنوز ترجمهای وجود ندارد", + "source": "مبدأ", + "target": "مقصد", + "time": "زمان", "model": "Model", "status": "Status", - "latency": "Latency", - "totalTranslations": "Total Translations", - "successful": "Successful", - "errors": "Errors", - "avgLatency": "Avg Latency", + "latency": "تأخیر", + "totalTranslations": "مجموع ترجمهها", + "successful": "موفق", + "errors": "خطاها", + "avgLatency": "میانگین تأخیر", "millisecondsShort": "{value}ms", "notAvailableSymbol": "—", - "liveAutoRefreshing": "Live — Auto-refreshing", - "paused": "Paused", - "eventsAppearHint": "Translation events appear here as requests flow through OmniRoute. Use any of these methods to generate events:", + "liveAutoRefreshing": "زنده — بهروزرسانی خودکار", + "paused": "متوقفشده", + "eventsAppearHint": "هنگام عبور درخواستها از OmniRoute، رویدادهای ترجمه در اینجا نمایش داده میشوند. برای ایجاد رویدادها از هر یک از روشهای زیر استفاده کنید:", "chatTesterTab": "Chat Tester", "testBenchTab": "Test Bench", - "externalApiCalls": "External API calls", - "ideCliIntegrations": "IDE/CLI integrations", - "inMemoryNote": "Note: Events are stored in-memory and reset when the server restarts.", + "externalApiCalls": "فراخوانیهای API خارجی", + "ideCliIntegrations": "یکپارچهسازیهای IDE/CLI", + "inMemoryNote": "توجه: رویدادها در حافظه ذخیره میشوند و با راهاندازی مجدد سرور بازنشانی خواهند شد.", "ok": "OK", - "errorShort": "ERR", - "formatConverter": "Format Converter", - "formatConverterDescription": "Paste or type a JSON request body. The translator will auto-detect the source format and convert it to the target format. Use this to debug how OmniRoute translates requests between formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", + "errorShort": "خطا", + "formatConverter": "مبدل قالب", + "formatConverterDescription": "بدنه یک درخواست JSON را جایگذاری یا تایپ کنید. مترجم، قالب مبدأ را بهطور خودکار تشخیص میدهد و آن را به قالب مقصد تبدیل میکند. از این ابزار برای اشکالزدایی نحوه ترجمه درخواستها بین قالبها توسط OmniRoute استفاده کنید (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (متوسط) → {target}", "translationPathDirect": "{source} → {target} (مترجم مستقیم)", "translationPathPassthrough": "همان قالب - بدون نیاز به ترجمه", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "واسط OpenAI", "autoFeaturesTitle": "کاری که OmniRoute به صورت خودکار انجام می دهد", "autoFeaturesCount": "8 ویژگی", "featureReasoningCache": "کش استدلال", @@ -9012,79 +9019,79 @@ "featureDirectPathsDesc": "برخی از جفت‌های قالب (Claude→Gemini) مترجم‌های مستقیمی دارند که هاب OpenAI را دور می‌زنند و خروجی دقیق‌تری تولید می‌کنند.", "featureImageMapping": "نقشه برداری اندازه تصویر", "featureImageMappingDesc": "قراردادهای ابعاد تصویر را بین قالب‌های API ترجمه می‌کند (به عنوان مثال، سطوح جزئیات OpenAI → ابعاد Gemini).", - "input": "Input", - "output": "Output", + "input": "ورودی", + "output": "خروجی", "auto": "Auto", - "swapFormats": "Swap formats", - "translateAction": "Translate", - "clear": "Clear", - "inputPlaceholder": "Paste a request body here or select a template below...", - "exampleTemplates": "Example Templates", - "exampleTemplatesHint": "— Click to load", - "templateLoadHint": "Template loads the request in {format} format. Change Source Format to load in a different format.", - "compatibilityTester": "Compatibility Tester", - "compatibilityReport": "Compatibility Report", - "testBenchDescription": "Run predefined scenarios (Simple Chat, Tool Calling, etc.) to verify translation and provider compatibility. Select a source format and target provider, then run all tests to see a compatibility percentage. Use this to find which features work across providers.", - "targetProvider": "Target Provider", - "runAllTests": "Run All Tests", - "runTest": "Run Test", - "reRun": "Re-run", - "running": "Running...", - "passed": "passed", - "failed": "failed", - "passedIconLabel": "✅ Passed", - "chunks": "chunks", - "scenarioSimpleChat": "Simple Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "swapFormats": "جابهجایی قالبها", + "translateAction": "ترجمه", + "clear": "پاک کردن", + "inputPlaceholder": "بدنه یک درخواست را اینجا جایگذاری کنید یا یکی از الگوهای زیر را انتخاب کنید...", + "exampleTemplates": "الگوهای نمونه", + "exampleTemplatesHint": "— برای بارگذاری کلیک کنید", + "templateLoadHint": "الگو، درخواست را با قالب {format} بارگذاری میکند. برای بارگذاری با قالبی متفاوت، قالب مبدأ را تغییر دهید.", + "compatibilityTester": "آزمایشگر سازگاری", + "compatibilityReport": "گزارش سازگاری", + "testBenchDescription": "سناریوهای ازپیشتعریفشده (گفتوگوی ساده، فراخوانی ابزار و غیره) را اجرا کنید تا ترجمه و سازگاری ارائهدهنده را بررسی کنید. یک قالب مبدأ و ارائهدهنده مقصد انتخاب کنید، سپس همه آزمایشها را اجرا کنید تا درصد سازگاری را ببینید. از این ابزار برای یافتن قابلیتهایی که بین ارائهدهندگان کار میکنند استفاده کنید.", + "targetProvider": "ارائهدهنده مقصد", + "runAllTests": "اجرای همه آزمایشها", + "runTest": "اجرای آزمایش", + "reRun": "اجرای مجدد", + "running": "در حال اجرا...", + "passed": "موفق", + "failed": "ناموفق", + "passedIconLabel": "✅ موفق", + "chunks": "قطعهها", + "scenarioSimpleChat": "گفتوگوی ساده", + "scenarioToolCalling": "فراخوانی ابزار", + "scenarioMultiTurn": "چندنوبتی", "scenarioThinking": "Thinking", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "پرامپت سیستمی", + "scenarioStreaming": "جریانسازی", "templateNames": { - "simple-chat": "Simple Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "گفتوگوی ساده", + "tool-calling": "فراخوانی ابزار", + "multi-turn": "چندنوبتی", "thinking": "Thinking", - "system-prompt": "System Prompt", - "streaming": "Streaming", + "system-prompt": "پرامپت سیستمی", + "streaming": "جریانسازی", "vision": "چشم انداز", "schema-coercion": "طرحواره اجبار" }, "templateDescriptions": { - "simple-chat": "Basic text message", - "tool-calling": "Function/tool invocation", - "multi-turn": "Conversation with history", - "thinking": "Extended thinking / reasoning", - "system-prompt": "Complex system instructions", - "streaming": "SSE streaming request", + "simple-chat": "پیام متنی ساده", + "tool-calling": "فراخوانی تابع/ابزار", + "multi-turn": "گفتوگو با تاریخچه", + "thinking": "تفکر / استدلال گسترده", + "system-prompt": "دستورالعملهای پیچیده سیستمی", + "streaming": "درخواست استریم SSE", "vision": "درخواست چندوجهی با ورودی تصویر", "schema-coercion": "اجرای طرحواره خروجی ساختاریافته / JSON" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful assistant.", - "userGreeting": "Hello! How are you today?" + "system": "شما یک دستیار مفید هستید.", + "userGreeting": "سلام! امروز چطور هستید؟" }, "toolCalling": { - "userWeather": "What's the weather in São Paulo?", - "toolDescription": "Get current weather for a location", - "cityNameDescription": "City name" + "userWeather": "آبوهوای São Paulo چگونه است؟", + "toolDescription": "دریافت آبوهوای فعلی یک مکان", + "cityNameDescription": "نام شهر" }, "multiTurn": { - "system": "You are a coding assistant.", - "userInitial": "Write a function to sort an array in Python.", - "assistantExample": "Here's a simple sort function: ```python\ndef sort_array(arr): return sorted(arr)\n```", - "userFollowUp": "Now make it sort in descending order." + "system": "شما یک دستیار برنامهنویسی هستید.", + "userInitial": "تابعی برای مرتبسازی یک آرایه در Python بنویسید.", + "assistantExample": "این هم یک تابع مرتبسازی ساده: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userFollowUp": "حالا آن را طوری تغییر دهید که بهصورت نزولی مرتب کند." }, "thinking": { - "question": "What is the sum of the first 100 prime numbers?" + "question": "مجموع ۱۰۰ عدد اول نخست چقدر است؟" }, "systemPrompt": { - "systemInstruction": "You are a senior software engineer specializing in distributed systems. Answer questions concisely using industry best practices. Always provide code examples when relevant. Format your responses using markdown.", - "question": "How do I implement a circuit breaker pattern?" + "systemInstruction": "شما یک مهندس ارشد نرمافزار با تخصص در سیستمهای توزیعشده هستید. با رعایت بهترین شیوههای صنعت، به پرسشها مختصر پاسخ دهید. هرجا مرتبط بود، همیشه نمونهکد ارائه کنید. پاسخهای خود را با استفاده از markdown قالببندی کنید.", + "question": "چگونه الگوی قطعکننده مدار را پیادهسازی کنم؟" }, "streaming": { - "prompt": "Tell me a short story about a robot learning to paint." + "prompt": "داستان کوتاهی درباره رباتی بگویید که نقاشیکردن را یاد میگیرد." }, "vision": { "system": "شما دستیار هستید که تصاویر را دقیقاً توصیف می کند.", @@ -9097,12 +9104,12 @@ "cityDescription": "شهر مورد پرس و جو، به عنوان مثال. \"توکیو\" یا \"نیویورک\"." } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", - "noTemplateForFormat": "No template for this format", - "translationFailed": "Translation failed: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "openaiCompatibleLabel": "سازگار با OpenAI", + "anthropicCompatibleLabel": "سازگار با Anthropic", + "noTemplateForFormat": "هیچ قالبی برای این فرمت وجود ندارد", + "translationFailed": "ترجمه ناموفق بود: {error}", + "pipelineDebugger": "اشکالزدای پایپلاین", + "translationPipeline": "پایپلاین ترجمه", "loading": "در حال بارگذاری…", "compressionOriginal": "اصلی", "compressionCompressed": "فشرده‌شده", @@ -9111,44 +9118,44 @@ "pipelineStepsAria": "مراحل پایپ‌لاین", "copyIntermediateJson": "کپی JSON میانی", "copyOutputJson": "کپی JSON خروجی", - "pipelineVisualization": "Pipeline visualization", - "pipelineVisualizationHint": "Send a message to see how your request flows through detection → translation → provider call.", - "chatTesterDescription": "Send messages as a specific client format and inspect each step of the translation pipeline.", - "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response", - "clickStepToInspect": "Click any step to inspect the data at that stage.", - "clientFormat": "Client Format", - "provider": "Provider", - "modelPlaceholder": "Select or type a model name...", - "sendMessageToSeePipeline": "Send a message to see the translation pipeline", - "chatMessageHintPrefix": "Your message will be formatted as a", - "chatMessageHintSuffix": "request, translated through the pipeline, and sent to the selected provider.", - "youWithFormat": "You ({format})", - "assistant": "Assistant", - "typeMessage": "Type a message...", - "send": "Send", - "clientRequest": "Client Request", - "clientRequestDescription": "The request body as your client would send it", - "formatDetected": "Format Detected", - "formatDetectedDescription": "OmniRoute auto-detects the API format from the request structure", - "openaiIntermediate": "OpenAI Intermediate", - "openaiIntermediateDescription": "All formats are first normalized to OpenAI format (the universal bridge)", - "providerFormat": "Provider Format", - "providerFormatDescription": "OpenAI format is translated to the provider's native format", - "providerResponse": "Provider Response", - "providerResponseRawDescription": "The raw response from the provider API", - "providerResponseSseDescription": "The raw SSE stream from the provider API", - "unexpectedError": "An unexpected error occurred", - "error": "Error", - "errorMessage": "Error: {message}", - "requestFailed": "Request failed", - "noTextExtracted": "(No text extracted)", + "pipelineVisualization": "نمایش بصری پایپلاین", + "pipelineVisualizationHint": "پیامی ارسال کنید تا ببینید درخواست شما چگونه از تشخیص → ترجمه → فراخوانی ارائهدهنده عبور میکند.", + "chatTesterDescription": "پیامها را با یک فرمت کلاینت مشخص ارسال کنید و هر مرحله از پایپلاین ترجمه را بررسی کنید.", + "chatTesterFlow": "درخواست کلاینت → تشخیص فرمت → قالب میانی OpenAI → فرمت ارائهدهنده → پاسخ", + "clickStepToInspect": "برای بررسی دادهها در هر مرحله، روی آن کلیک کنید.", + "clientFormat": "فرمت کلاینت", + "provider": "ارائهدهنده", + "modelPlaceholder": "یک نام مدل را انتخاب یا وارد کنید...", + "sendMessageToSeePipeline": "پیامی ارسال کنید تا پایپلاین ترجمه را ببینید", + "chatMessageHintPrefix": "پیام شما بهصورت یک درخواست با فرمت", + "chatMessageHintSuffix": "قالببندی میشود، از پایپلاین ترجمه عبور میکند و به ارائهدهنده انتخابشده ارسال میشود.", + "youWithFormat": "شما ({format})", + "assistant": "دستیار", + "typeMessage": "پیامی بنویسید...", + "send": "ارسال", + "clientRequest": "درخواست کلاینت", + "clientRequestDescription": "بدنه درخواست، همانگونه که کلاینت شما آن را ارسال میکند", + "formatDetected": "فرمت شناساییشده", + "formatDetectedDescription": "OmniRoute فرمت API را بهصورت خودکار از ساختار درخواست تشخیص میدهد", + "openaiIntermediate": "واسط OpenAI", + "openaiIntermediateDescription": "همه قالبها ابتدا به قالب OpenAI (پل عمومی) نرمالسازی میشوند", + "providerFormat": "قالب ارائهدهنده", + "providerFormatDescription": "قالب OpenAI به قالب بومی ارائهدهنده ترجمه میشود", + "providerResponse": "پاسخ ارائهدهنده", + "providerResponseRawDescription": "پاسخ خام از API ارائهدهنده", + "providerResponseSseDescription": "جریان خام SSE از API ارائهدهنده", + "unexpectedError": "خطایی غیرمنتظره رخ داد", + "error": "خطا", + "errorMessage": "خطا: {message}", + "requestFailed": "درخواست ناموفق بود", + "noTextExtracted": "(هیچ متنی استخراج نشد)", "liveMonitorMemoryNote": "رویدادها در حافظه ذخیره می شوند و با راه اندازی مجدد از بین می روند.", "liveMonitorMemoryCapNote": "حداکثر 200 رویداد حفظ شد.", "eventSourcesLabel": "منابع رویداد:", "eventSourceTranslatorPage": "• صفحه مترجم (تستر چت، میز تست)", "eventSourceMainPipeline": "• خط لوله درخواست اصلی (ترافیک CLI/IDE/API)", - "liveMonitorDescriptionPrefix": "Shows translation events as API calls flow through OmniRoute. Events come from the in-memory buffer (resets on restart). Use", - "liveMonitorDescriptionSuffix": ", or external API calls to generate events.", + "liveMonitorDescriptionPrefix": "رویدادهای ترجمه را هنگام عبور فراخوانیهای API از OmniRoute نمایش میدهد. رویدادها از بافر درونحافظهای میآیند (با راهاندازی مجدد بازنشانی میشود). استفاده کنید از", + "liveMonitorDescriptionSuffix": "، یا فراخوانیهای API خارجی برای تولید رویدادها.", "streamTransformer": "ترانسفورماتور جریان", "modeDescriptionStreamTransformer": "اجرای کامل چت SSE از طریق ترانسفورماتور Responses جریان می یابد.", "streamTransformerTitle": "ترانسفورماتور جریان پاسخ", @@ -9157,7 +9164,7 @@ "loadToolSample": "نمونه تماس ابزار را بارگیری کنید", "transformToResponses": "تبدیل به پاسخ ها", "rawChatSseInput": "تکمیل چت خام SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "SSE تبدیلشده Responses API", "noResultsYet": "هنوز هیچ نتیجه ای وجود ندارد", "transformedEvents": "رویدادهای دگرگون شده", "uniqueEventTypes": "انواع رویدادهای منحصر به فرد", @@ -9259,7 +9266,7 @@ "streamTransformFailed": "تبدیل استریم ناموفق بود" }, "usage": { - "title": "Usage", + "title": "میزان استفاده", "grokExtraUsageCredits": "اعتبارات اضافی مصرف", "grokAutoTopUp": "شارژ خودکار", "grokAutoTopUpUnavailable": "غیرقابل دسترسی", @@ -9277,66 +9284,66 @@ "kiloPassRemaining": "باقی‌مانده", "kiloPassRenews": "تمدید در {count} روز", "kiloPassUsageLabel": "مصرف این ماه", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "اعتبارهای اضافی استفاده", + "kimiExtraUsage": "استفاده اضافی", + "kimiExtraUsageEnabled": "فعال", + "kimiExtraUsageDisabled": "غیرفعال", + "kimiExtraUsageFrozen": "مسدود", + "kimiExtraUsageUnavailable": "دردسترس نیست", + "kimiMonthlyUsed": "استفادهشده در این ماه", + "kimiMonthlyLimit": "محدودیت ماهانه", + "kimiMonthlyLimitUnlimited": "نامحدود", + "kimiAdditionalCredits": "اعتبارهای اضافی", + "loggerTab": "ثبتکننده", "proxyTab": "Proxy", - "budgetManagement": "Budget Management", - "budgetSaved": "Budget limits saved", - "budgetSaveFailed": "Failed to save budget", - "loadingBudgetData": "Loading budget data...", - "noApiKeysTitle": "No API Keys", - "noApiKeysDescription": "Add API keys first to set up budget limits.", - "apiKey": "API Key", - "todaysSpend": "Today's Spend", - "thisMonth": "This Month", - "setLimits": "Set Limits", - "dailyLimitUsd": "Daily Limit (USD)", - "monthlyLimitUsd": "Monthly Limit (USD)", - "warningThresholdPercent": "Warning Threshold (%)", - "dailyLimitPlaceholder": "e.g. 5.00", - "monthlyLimitPlaceholder": "e.g. 50.00", + "budgetManagement": "مدیریت بودجه", + "budgetSaved": "محدودیتهای بودجه ذخیره شدند", + "budgetSaveFailed": "ذخیره بودجه ناموفق بود", + "loadingBudgetData": "در حال بارگذاری دادههای بودجه...", + "noApiKeysTitle": "هیچ کلید API وجود ندارد", + "noApiKeysDescription": "برای تنظیم محدودیتهای بودجه، ابتدا کلیدهای API را اضافه کنید.", + "apiKey": "کلید API", + "todaysSpend": "هزینه امروز", + "thisMonth": "این ماه", + "setLimits": "تنظیم محدودیتها", + "dailyLimitUsd": "محدودیت روزانه (USD)", + "monthlyLimitUsd": "محدودیت ماهانه (USD)", + "warningThresholdPercent": "آستانه هشدار (%)", + "dailyLimitPlaceholder": "مثلاً 5.00", + "monthlyLimitPlaceholder": "مثلاً 50.00", "warningThresholdPlaceholder": "80", - "saveLimits": "Save Limits", - "budgetOk": "Budget OK — {remaining} remaining", - "budgetExceeded": "Budget exceeded — requests may be blocked", + "saveLimits": "ذخیره محدودیتها", + "budgetOk": "بودجه مناسب است — {remaining} باقیمانده", + "budgetExceeded": "از بودجه فراتر رفتهاید — ممکن است درخواستها مسدود شوند", "totalRequests": "Total requests", - "noDataYet": "No data yet", - "latency": "Latency", + "noDataYet": "هنوز دادهای وجود ندارد", + "latency": "تأخیر", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", - "systemHealth": "System Health", - "entries": "Entries", - "activeCount": "{count} active", - "openCircuitBreakersDetected": "Open circuit breakers detected", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "circuitBreakers": "Circuit Breakers", - "lockedIPs": "Locked IPs", - "lockoutsAutoRefreshHint": "Per-model rate limit locks • Auto-refresh 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", - "timeLeft": "{time} left", - "howItWorks": "How It Works", - "howItWorksSubtitle": "Learn how evaluations validate your LLM responses", - "define": "Define", - "defineStepDescription": "Create test cases with input prompts and expected output criteria using strategies like contains, regex, or exact match.", - "run": "Run", - "runStepDescription": "Execute test cases against your LLM endpoints through OmniRoute. Each case is sent as a real API request.", - "evaluate": "Evaluate", - "evaluateStepDescription": "Responses are compared against expected criteria. See pass/fail for each case with latency metrics and detailed feedback.", + "promptCache": "کش پرامپت", + "systemHealth": "سلامت سیستم", + "entries": "ورودیها", + "activeCount": "{count} فعال", + "openCircuitBreakersDetected": "قطعکنندههای مدار باز شناسایی شدند", + "hitRate": "نرخ اصابت", + "hitsMisses": "اصابتها / خطاها", + "circuitBreakers": "قطعکنندههای مدار", + "lockedIPs": "IPهای قفلشده", + "lockoutsAutoRefreshHint": "قفلهای محدودیت نرخ برای هر مدل • تازهسازی خودکار هر ۱۰ ثانیه", + "lockedCount": "{count, plural, one {# قفلشده} other {# قفلشده}}", + "timeLeft": "{time} باقیمانده", + "howItWorks": "نحوه عملکرد", + "howItWorksSubtitle": "بیاموزید که ارزیابیها چگونه پاسخهای LLM شما را اعتبارسنجی میکنند", + "define": "تعریف", + "defineStepDescription": "موارد آزمون را با پرامپتهای ورودی و معیارهای خروجی مورد انتظار، با استفاده از راهبردهایی مانند شامل بودن، عبارت منظم یا تطابق دقیق ایجاد کنید.", + "run": "اجرا", + "runStepDescription": "موارد آزمون را از طریق OmniRoute روی نقاط پایانی LLM خود اجرا کنید. هر مورد بهعنوان یک درخواست واقعی API ارسال میشود.", + "evaluate": "ارزیابی", + "evaluateStepDescription": "پاسخها با معیارهای مورد انتظار مقایسه میشوند. نتیجه قبولی/رد هر مورد را بههمراه معیارهای تأخیر و بازخورد دقیق مشاهده کنید.", "evalsStrategyContainsLabel": "شامل می‌شود", "evalsStrategyExactLabel": "تطابق دقیق", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "عبارت منظم", "evalsStrategyCustomLabel": "منطق سفارشی", "evalsStrategyContainsDescription": "بررسی می‌کند که آیا خروجی LLM شامل زیررشته مورد نظر هست یا خیر.", "evalsStrategyExactDescription": "بررسی می‌کند که آیا خروجی LLM دقیقاً با مقدار مورد نظر مطابقت دارد یا خیر.", @@ -9347,126 +9354,126 @@ "historyColumnPassRate": "نرخ موفقیت", "historyColumnAvgLatencyMs": "میانگین تأخیر", "historyColumnCreatedAt": "اجرا شده", - "evalSuites": "Evaluation Suites", - "evalSuitesHint": "Click a suite to view test cases, then run to evaluate your LLM endpoints", - "evalsLoading": "Loading eval suites...", - "noEvalSuitesFound": "No Eval Suites Found", - "noEvalSuitesDescription": "Eval suites can be defined via the API or in code. They test model outputs against expected results using strategies like contains, regex, exact match, and custom functions.", - "columnCase": "Case", + "evalSuites": "مجموعههای ارزیابی", + "evalSuitesHint": "برای مشاهده موارد آزمون روی یک مجموعه کلیک کنید، سپس آن را برای ارزیابی نقاط پایانی LLM خود اجرا کنید", + "evalsLoading": "در حال بارگذاری مجموعههای ارزیابی...", + "noEvalSuitesFound": "هیچ مجموعه ارزیابیای یافت نشد", + "noEvalSuitesDescription": "مجموعههای ارزیابی را میتوان از طریق API یا در کد تعریف کرد. آنها خروجیهای مدل را با استفاده از راهبردهایی مانند شامل بودن، عبارت منظم، تطابق دقیق و توابع سفارشی در برابر نتایج مورد انتظار آزمایش میکنند.", + "columnCase": "مورد", "columnStatus": "Status", - "columnLatency": "Latency", - "columnDetails": "Details", + "columnLatency": "تأخیر", + "columnDetails": "جزئیات", "columnModel": "Model", - "columnStrategy": "Strategy", - "columnExpected": "Expected", - "statsSuites": "Suites", - "statsTestCases": "Test Cases", - "statsModels": "Models", - "statsCoverage": "Coverage", - "statsStrategiesCount": "{count} strategies", - "evaluationStrategies": "Evaluation Strategies", - "modelsUnderTest": "Models Under Test", - "searchSuitesPlaceholder": "Search suites...", + "columnStrategy": "راهبرد", + "columnExpected": "مورد انتظار", + "statsSuites": "مجموعهها", + "statsTestCases": "موارد آزمون", + "statsModels": "مدلها", + "statsCoverage": "پوشش", + "statsStrategiesCount": "{count} راهبرد", + "evaluationStrategies": "راهبردهای ارزیابی", + "modelsUnderTest": "مدلهای تحت آزمون", + "searchSuitesPlaceholder": "جستوجوی مجموعهها...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", - "runEval": "Run Eval", + "casesCount": "{count, plural, one {# مورد} other {# مورد}}", + "runEval": "اجرای ارزیابی", "runAllSuites": "همه را اجرا کنید", "runAllRunning": "در حال اجرا همه...", "runAllProgress": "در حال اجرا {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# مجموعه ناموفق بود} other {# مجموعه ناموفق بودند}}", "runAllCompleted": "سوئیت های {suites} را اجرا کرد — {passed} گذشت، {failed} ناموفق بود", "runAllCompletedWithFailures": "سوئیت های {completed} را اجرا کرد. {failedSuites} تکمیل نشد", - "runningProgress": "Running {current}/{total}...", - "passRate": "pass rate", - "summaryBreakdown": "{passed} passed · {failed} failed · {total} total", - "passedIconLabel": "✅ Passed", - "failedIconLabel": "❌ Failed", + "runningProgress": "در حال اجرا {current}/{total}...", + "passRate": "نرخ موفقیت", + "summaryBreakdown": "{passed} موفق · {failed} ناموفق · مجموع {total}", + "passedIconLabel": "✅ موفق", + "failedIconLabel": "❌ ناموفق", "resultPassed": "گذشت", "resultFailed": "شکست خورد", "expandResult": "جزئیات نتیجه را گسترش دهید", "collapseResult": "کوچک کردن جزئیات نتیجه", - "detailsContains": "Contains: \"{term}\"", + "detailsContains": "شامل: «{term}»", "detailsRegex": "Regex: {pattern}", - "detailsExpected": "Expected: \"{expected}\"", + "detailsExpected": "مورد انتظار: «{expected}»", "expectedOutputLabel": "خروجی مورد انتظار", - "noResultsYet": "No results yet", - "testCasesCount": "Test Cases ({count})", - "noTestCasesDefined": "No test cases defined", - "runEvalHint": "Click \"Run Eval\" to execute all cases against your LLM endpoint. Each test sends a real request through OmniRoute.", - "notifyNoTestCases": "No test cases defined for this suite", - "notifyAllCasesPassed": "All {total} cases passed ✅", - "notifySomeCasesFailed": "{passed}/{total} passed, {failed} failed", - "notifyEvalRunFailed": "Eval run failed", - "notifyEvalTitle": "Eval: {name}", - "modelEvals": "Model Evaluations", - "evalsHeroDescription": "Test and validate your LLM endpoints by running predefined evaluation suites. Each suite contains test cases that send real prompts through OmniRoute and compare responses against expected criteria — helping you detect regressions, compare models, and ensure response quality across providers.", - "qualityValidation": "Quality Validation", - "modelComparison": "Model Comparison", - "regressionDetection": "Regression Detection", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", - "noLockouts": "No models currently locked", - "activeSessions": "Active Sessions", - "noSessions": "No active sessions", - "sessionsHint": "Sessions appear as requests flow through the proxy", - "sessionsTrackedHint": "Tracked via request fingerprinting • Auto-refresh 5s", - "session": "Session", - "age": "Age", - "requests": "Requests", - "connection": "Connection", + "noResultsYet": "هنوز نتیجهای وجود ندارد", + "testCasesCount": "موارد آزمون ({count})", + "noTestCasesDefined": "هیچ مورد آزمونی تعریف نشده است", + "runEvalHint": "برای اجرای همه موارد روی نقطه پایانی LLM خود، روی «اجرای ارزیابی» کلیک کنید. هر آزمون یک درخواست واقعی از طریق OmniRoute ارسال میکند.", + "notifyNoTestCases": "هیچ مورد آزمونی برای این مجموعه تعریف نشده است", + "notifyAllCasesPassed": "هر {total} مورد با موفقیت گذشت ✅", + "notifySomeCasesFailed": "{passed}/{total} موفق، {failed} ناموفق", + "notifyEvalRunFailed": "اجرای ارزیابی ناموفق بود", + "notifyEvalTitle": "ارزیابی: {name}", + "modelEvals": "ارزیابیهای مدل", + "evalsHeroDescription": "نقاط پایانی LLM خود را با اجرای مجموعههای ارزیابی ازپیشتعریفشده آزمایش و اعتبارسنجی کنید. هر مجموعه شامل موارد آزمونی است که اعلانهای واقعی را از طریق OmniRoute ارسال میکنند و پاسخها را با معیارهای مورد انتظار مقایسه میکنند؛ این کار به شما کمک میکند پسرفتها را شناسایی کنید، مدلها را مقایسه کنید و کیفیت پاسخ را در میان ارائهدهندگان تضمین کنید.", + "qualityValidation": "اعتبارسنجی کیفیت", + "modelComparison": "مقایسه مدلها", + "regressionDetection": "تشخیص پسرفت", + "latencyBenchmarks": "معیارهای تأخیر", + "modelLockouts": "قفلشدن مدلها", + "noLockouts": "در حال حاضر هیچ مدلی قفل نشده است", + "activeSessions": "نشستهای فعال", + "noSessions": "هیچ نشست فعالی وجود ندارد", + "sessionsHint": "با عبور درخواستها از پروکسی، نشستها نمایش داده میشوند", + "sessionsTrackedHint": "ردیابی از طریق اثر انگشت درخواست • تازهسازی خودکار هر ۵ ثانیه", + "session": "نشست", + "age": "مدت", + "requests": "درخواستها", + "connection": "اتصال", "durationMillisecondsShort": "{value}ms", "durationSecondsShort": "{value}s", "durationMinutesShort": "{value}m", "durationHoursShort": "{value}h", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "Provider Limits", - "noProviders": "No Providers Connected", - "connectProvidersForQuota": "Connect to providers with OAuth to track your API quota limits and usage.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", - "filteredFromCount": "(filtered from {count})", - "autoRefresh": "Auto-refresh", - "refreshAll": "Refresh All", - "loadingQuotas": "Loading...", + "providerLimits": "محدودیتهای ارائهدهنده", + "noProviders": "هیچ ارائهدهندهای متصل نیست", + "connectProvidersForQuota": "برای پیگیری محدودیت سهمیه و میزان استفاده از API، از طریق OAuth به ارائهدهندگان متصل شوید.", + "accountsCount": "{count, plural, one {# حساب} other {# حساب}}", + "filteredFromCount": "(فیلترشده از {count})", + "autoRefresh": "تازهسازی خودکار", + "refreshAll": "تازهسازی همه", + "loadingQuotas": "در حال بارگذاری...", "showMoreQuotas": "نمایش {count} مورد بیشتر", "showLessQuotas": "نمایش کمتر", "hideQuotaRow": "پنهان کردن این ردیف سهمیه", "showQuotaRow": "نمایش این ردیف سهمیه", "hiddenQuotaRowsLabel": "پنهان شده:", "quotaVisibilityUpdateFailed": "خطا در به‌روزرسانی وضعیت نمایش سهمیه", - "account": "Account", - "modelQuotas": "Model Quotas", - "lastUsed": "Last Refreshed", - "actions": "Actions", - "refreshQuota": "Refresh quota", - "today": "Today", - "tomorrow": "Tomorrow", - "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "account": "حساب", + "modelQuotas": "سهمیههای مدل", + "lastUsed": "آخرین تازهسازی", + "actions": "عملیات", + "refreshQuota": "تازهسازی سهمیه", + "today": "امروز", + "tomorrow": "فردا", + "dayTimeFormat": "{day}، {time}", + "inDuration": "تا {duration} دیگر", "notApplicable": "N/A", - "rawPlanWithValue": "Raw plan: {plan}", - "noPlanFromProvider": "No plan from provider", + "rawPlanWithValue": "طرح خام: {plan}", + "noPlanFromProvider": "هیچ طرحی از ارائهدهنده دریافت نشده است", "tokenExpiresIn": "توکن در {time} منقضی می‌شود", "tokenExpired": "توکن منقضی شده است", - "noQuotaData": "No quota data", + "noQuotaData": "دادهای برای سهمیه وجود ندارد", "cardExpand": "گسترش", "cardCollapse": "جمع کردن", "moreQuotas": "+{count} مورد بیشتر", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", - "noQuotaDataAvailable": "No quota data available", - "noAccountsForTierFilter": "No accounts found for tier filter", - "tierAll": "All", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "ungrouped": "گروهبندینشده", + "viewFlat": "تخت", + "viewByEnvironment": "بر اساس محیط", + "noQuotaDataAvailable": "هیچ دادهای برای سهمیه موجود نیست", + "noAccountsForTierFilter": "هیچ حسابی برای فیلتر سطح یافت نشد", + "tierAll": "همه", + "tierEnterprise": "سازمانی", + "tierTeam": "تیمی", + "tierBusiness": "کسبوکار", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", + "tierFree": "رایگان", "tierLite": "لایت", - "tierUnknown": "Unknown", + "tierUnknown": "ناشناخته", "statTotal": "کل", "statCritical": "بحرانی", "statAlert": "هشدار", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "بازخرید اعتبار", "resetCreditRedeemed": "بازنشانی بازخرید شد", "resetCreditRedeemFailed": "بازخرید اعتبار بازنشانی ناموفق بود", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "ذخیره مجموعه ناموفق بود", "clone": "کلون", "exportSuite": "صادرات", "importSuite": "واردات", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "JSON مجموعه ارزیابی نامعتبر است", "suiteBuilderCloneSuffix": "کپی کنید", "suiteBuilderImportedSuite": "سوئیت وارداتی", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "کارنامه", + "evalApiKey": "کلید API", + "scorecardPassRate": "نرخ موفقیت", + "targetTypeModel": "مدل", + "actualOutputLabel": "خروجی واقعی", + "evalTargetHint": "یک مدل یا ترکیب را برای ارزیابی انتخاب کنید.", + "suiteBuilderDeleted": "مجموعه با موفقیت حذف شد", + "suiteBuilderCaseCardHint": "پرامپت ورودی و معیارهای خروجی مورد انتظار را تعریف کنید.", + "nextResetUtc": "بازنشانی بعدی (UTC)", + "scorecardHint": "نرخهای قبولی تجمیعشده در همه مجموعههای ارزیابی.", + "suiteLatestRunsHint": "جدیدترین اجراهای ارزیابی برای این مجموعه.", + "saving": "در حال ذخیره", + "suiteBuilderCaseModelLabel": "مدل (اختیاری)", + "evalControlsTitle": "کنترلهای ارزیابی", + "suiteBuilderEditTitle": "ویرایش مجموعه ارزیابی", + "suiteBuilderCaseStrategyLabel": "راهبرد اعتبارسنجی", + "notifySelectDifferentCompareTarget": "لطفاً هدف دیگری را برای مقایسه انتخاب کنید", + "recentRunsHint": "جدیدترین اجراهای ارزیابی نمایش داده میشوند. برای مشاهده نتایج دقیق، روی یک اجرا کلیک کنید.", + "evalCompareHint": "در صورت تمایل، نتایج را با یک هدف دوم مقایسه کنید.", + "suiteBuilderCaseInvalid": "این مورد دارای خطاهای اعتبارسنجی است. لطفاً پیش از ذخیره آنها را برطرف کنید.", + "historyEmpty": "هنوز سابقه ارزیابی وجود ندارد", + "suiteBuilderUpdated": "مجموعه با موفقیت بهروزرسانی شد", + "resetInterval": "بازه بازنشانی", + "suiteBuilderCreateTitle": "ایجاد مجموعه ارزیابی", + "activePeriodSpend": "هزینه دوره فعال", + "evalApiKeyHint": "کلید API مورد استفاده برای درخواستهای ارزیابی را انتخاب کنید.", + "evalCompareOptional": "مقایسه (اختیاری)", + "suiteBuilderDeleteFailed": "حذف مجموعه ناموفق بود", + "suiteBuilderCaseSystemPromptPlaceholder": "دستورالعملهای اختیاری سیستم...", + "scorecardCases": "موارد", + "runCompletedWithScore": "ارزیابی تکمیل شد — نرخ قبولی {score}٪", + "suiteBuilderCustomBadge": "سفارشی", + "targetSuiteDefaults": "پیشفرضهای مجموعه", + "suiteBuilderDeleteConfirm": "آیا مطمئن هستید که میخواهید این مجموعه را حذف کنید؟ این عمل قابل بازگشت نیست.", + "suiteBuilderNameLabel": "نام مجموعه", + "scorecardSuites": "مجموعهها", + "evalCompareTarget": "هدف مقایسه", + "suiteBuilderCaseModelPlaceholder": "مثلاً gpt-4o-mini", + "evalControlsHint": "هدف ارزیابی و کلید API خود را پیکربندی کنید، سپس مجموعهها را اجرا کنید تا کیفیت مدل اعتبارسنجی شود.", + "recentRunsTitle": "اجراهای اخیر", + "suiteBuilderCaseSystemPromptLabel": "پرامپت سیستم", + "suiteBuilderCaseExpectedPlaceholder": "مثلاً def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "به عنوان مثال تعریف فیبوناچی", "suiteBuilderCaseExpectedPlaceholderExact": "پاسخ دقیق مورد انتظار را جایگذاری کنید", "suiteBuilderCaseExpectedPlaceholderRegex": "به عنوان مثال ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "از یک عبارت معمولی جاوا اسکریپت بدون پیچیدن اسلش استفاده کنید.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "مثلاً مجموعه کیفیت کدنویسی", + "suiteBuilderAddCase": "افزودن مورد", + "cancel": "لغو", + "evalTarget": "هدف", + "suiteBuilderCaseNameLabel": "نام مورد", + "weeklyLimitUsd": "محدودیت هفتگی (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "مثلاً یک تابع فیبوناچی در Python بنویسید", + "suiteBuilderNameRequired": "نام مجموعه الزامی است", + "suiteBuilderCaseUserPromptLabel": "پرامپت کاربر", + "daily": "روزانه", + "resultErrorLabel": "خطا", + "suiteBuilderBuiltInBadge": "داخلی", + "suiteBuilderCaseCardTitle": "مورد آزمایشی", "suiteBuilderDuplicateCase": "تکراری", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "مثلاً 50.00", + "suiteBuilderCaseTagsHint": "برچسبهای جداشده با ویرگول برای سازماندهی موارد آزمایشی.", + "notifyEvalRunFailedWithReason": "ارزیابی ناموفق بود: {reason}", + "weekly": "هفتگی", + "runEvalRunning": "در حال اجرای ارزیابی...", + "delete": "حذف", + "resetTimeUtc": "زمان بازنشانی (UTC)", + "evalApiKeyAuto": "خودکار (استفاده از پیشفرض)", + "suiteBuilderDescriptionPlaceholder": "توضیحی اختیاری درباره مواردی که این مجموعه آزمایش میکند...", + "targetComparisonTitle": "مقایسه هدف", + "save": "ذخیره", + "suiteBuilderCreated": "مجموعه با موفقیت ایجاد شد", + "suiteLatestRuns": "آخرین اجراها", + "suiteBuilderCaseExpectedLabel": "مقدار مورد انتظار", + "historyLatency": "تأخیر", + "suiteBuilderCaseTagsPlaceholder": "مثلاً coding، python", + "targetTypeCombo": "ترکیبی", + "scorecardPassed": "موفق", + "suiteBuilderCaseTagsLabel": "برچسبها", + "suiteBuilderNewSuite": "مجموعه جدید", + "notifyEvalLoadFailed": "بارگیری دادههای ارزیابی ناموفق بود", + "notConfigured": "پیکربندی نشده", + "suiteBuilderCaseNamePlaceholder": "مثلاً آزمایش فیبوناچی Python", + "intervalLabel": "بازه زمانی", + "suiteBuilderCreateAction": "ایجاد مجموعه", + "suiteBuilderCasesHint": "هر مورد یک پرامپت ارسال کرده و پاسخ را اعتبارسنجی میکند.", + "suiteBuilderUpdatedAt": "بهروزرسانیشده", + "errorBadge": "خطا", + "suiteBuilderCasesTitle": "موارد آزمایشی", + "edit": "ویرایش", + "monthly": "ماهانه", + "suiteBuilderCasesRequired": "حداقل یک مورد آزمایشی الزامی است", + "weeklyLimitSummary": "خلاصه محدودیت بودجه هفتگی", + "suiteBuilderDescriptionLabel": "توضیحات", + "targetComparisonHint": "مقایسه کنارهم نتایج ارزیابی بین اهداف.", + "compareCompletedWithScore": "مقایسه تکمیل شد — نرخ قبولی {score}٪", + "staleQuotaTooltip": "آخرین بهروزرسانی ناموفق بود — دادههای ذخیرهشده نمایش داده میشوند", "quotaThresholdLabel": "حداقل مانده", "quotaCutoffsColumnHelp": "وقتی سهمیه باقیمانده به این درصد یا کمتر می‌رسد، درخواست‌ها را متوقف کنید.", "quotaCutoffsButtonDefault": "پیش فرض", @@ -9704,70 +9711,70 @@ "providerQuotaHomeHint": "وضعیت لحظه‌ای در حساب‌های متصل" }, "modals": { - "waitingAuth": "Waiting for Authorization", - "verificationUrl": "Verification URL", - "yourCode": "Your Code", - "remoteAccess": "Remote access:", - "connectedSuccess": "Connected Successfully!", - "connectionFailed": "Connection Failed", - "chooseAuthMethod": "Choose your authentication method:", + "waitingAuth": "در انتظار مجوز", + "verificationUrl": "URL تأیید", + "yourCode": "کد شما", + "remoteAccess": "دسترسی از راه دور:", + "connectedSuccess": "اتصال با موفقیت انجام شد!", + "connectionFailed": "اتصال ناموفق بود", + "chooseAuthMethod": "روش احراز هویت خود را انتخاب کنید:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", - "importToken": "Import Token", - "pasteToken": "Paste refresh token from Kiro IDE.", + "googleAccount": "حساب Google", + "githubAccount": "حساب GitHub", + "importToken": "وارد کردن توکن", + "pasteToken": "توکن تازهسازی را از Kiro IDE جایگذاری کنید.", "awsRegion": "AWS Region", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCache": "Reading from AWS SSO cache", - "readingFromCursor": "Reading from Cursor IDE database", - "initializing": "Initializing...", - "pricingConfig": "Pricing Configuration", - "loadingPricing": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "noPricingData": "No pricing data available", - "noModelsFound": "No models found" + "autoDetecting": "در حال شناسایی خودکار توکنها...", + "readingFromCache": "در حال خواندن از حافظه پنهان AWS SSO", + "readingFromCursor": "در حال خواندن از پایگاه داده Cursor IDE", + "initializing": "در حال راهاندازی...", + "pricingConfig": "پیکربندی قیمتگذاری", + "loadingPricing": "در حال بارگیری دادههای قیمتگذاری...", + "pricingRatesFormat": "قالب نرخهای قیمتگذاری", + "noPricingData": "هیچ داده قیمتگذاری موجود نیست", + "noModelsFound": "هیچ مدلی یافت نشد" }, "loggers": { - "allProviders": "All Providers", - "allModels": "All Models", - "allAccounts": "All Accounts", - "allApiKeys": "All API Keys", - "allTypes": "All Types", - "allLevels": "All Levels", + "allProviders": "همه ارائهدهندگان", + "allModels": "همه مدلها", + "allAccounts": "همه حسابها", + "allApiKeys": "همه کلیدهای API", + "allTypes": "همه انواع", + "allLevels": "همه سطوح", "modelAZ": "Model A-Z", "modelZA": "Model Z-A", - "loadingLogs": "Loading logs...", - "loadingProxyLogs": "Loading proxy logs...", - "noLogEntries": "No log entries found", - "noPayloadData": "No payload data available for this log entry.", - "proxyEvent": "Proxy Event", + "loadingLogs": "در حال بارگیری گزارشها...", + "loadingProxyLogs": "در حال بارگیری گزارشهای پروکسی...", + "noLogEntries": "هیچ ورودی گزارشی یافت نشد", + "noPayloadData": "هیچ دادهای از محتوای درخواست برای این ورودی گزارش موجود نیست.", + "proxyEvent": "رویداد پروکسی", "proxy": "Proxy", - "level": "Level", - "directNative": "Direct (native)", - "combo": "Combo", + "level": "سطح", + "directNative": "مستقیم (بومی)", + "combo": "ترکیبی", "inputTokens": "I:", "outputTokens": "O:" }, "stats": { - "usageOverview": "Usage Overview", - "outputTokens": "Output Tokens", - "totalCost": "Total Cost", - "usageByModel": "Usage by Model", - "usageByAccount": "Usage by Account", - "failedToLoad": "Failed to load usage statistics.", - "tokenHealth": "Token Health", - "totalOAuth": "Total OAuth", - "healthy": "Healthy", - "warning": "Warning", - "errored": "Errored", - "lastCheck": "Last check", - "noData": "No data", - "share": "Share", - "unableToLoad": "Unable to load system metrics", - "product": "Product", - "resources": "Resources", - "company": "Company", + "usageOverview": "نمای کلی مصرف", + "outputTokens": "توکنهای خروجی", + "totalCost": "هزینه کل", + "usageByModel": "مصرف بر اساس مدل", + "usageByAccount": "مصرف بر اساس حساب", + "failedToLoad": "بارگیری آمار مصرف ناموفق بود.", + "tokenHealth": "وضعیت توکن", + "totalOAuth": "مجموع OAuth", + "healthy": "سالم", + "warning": "هشدار", + "errored": "دارای خطا", + "lastCheck": "آخرین بررسی", + "noData": "بدون داده", + "share": "سهم", + "unableToLoad": "بارگیری معیارهای سیستم ممکن نیست", + "product": "محصول", + "resources": "منابع", + "company": "شرکت", "tokenHealthTooltips": { "allHealthy": "همه توکن‌ها سالم هستند", "needsAttention": "برخی از توکن‌ها نیاز به توجه دارند", @@ -9812,70 +9819,70 @@ "noAccountUsage": "هیچ استفاده خاصی از حساب هنوز ثبت نشده است. برای مشاهده داده‌ها در اینجا، از حساب‌های OAuth درخواست کنید." }, "auth": { - "welcome": "Welcome", - "signIn": "Sign in", - "enterPassword": "Enter your password to continue", - "password": "Password", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", - "unifiedAiApiProxyDesc": "Route requests to multiple AI providers through a single endpoint. Load balancing, failover, and usage tracking built in.", - "passwordNotEnabled": "Password protection is not enabled", - "loading": "Loading...", - "invalidPassword": "Invalid password", - "errorOccurredRetry": "An error occurred. Please try again.", - "configureInstance": "Let's get your OmniRoute instance configured", - "runOnboardingWizard": "Run the onboarding wizard to set up your password and connect your first AI provider.", - "startOnboarding": "Start Onboarding", - "secureYourInstance": "Secure Your Instance", - "setPasswordDescription": "Set a password to protect your dashboard and secure your API endpoints from unauthorized access.", - "configurePassword": "Configure Password", - "continue": "Continue", - "windowWillClose": "This window will close automatically...", - "closeTabNow": "You can close this tab now.", - "copyUrlManual": "Please copy the URL from the address bar and paste it in the application.", - "accessDeniedDescription": "You don't have permission to access this resource. Check your API key or contact the administrator.", - "goToDashboard": "Go to Dashboard", - "featureMultiProviderTitle": "Multi-Provider", - "featureMultiProviderDesc": "OpenAI, Anthropic, Google, and more", - "featureLoadBalancingTitle": "Load Balancing", - "featureLoadBalancingDesc": "Distribute requests intelligently", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Monitor costs and tokens", - "resetPassword": "Reset Password", - "resetDescription": "Choose a method to recover access to your dashboard", - "stopServer": "Stop the OmniRoute server", - "processing": "Processing...", - "pleaseWait": "Please wait while we complete the authorization.", - "authSuccess": "Authorization Successful!", - "copyUrl": "Copy This URL", - "accessDenied": "Access Denied", - "methodCliTitle": "Method 1: CLI Reset", - "methodCliDescription": "Run the following command on the server where OmniRoute is running:", - "methodCliHint": "This will prompt you to set a new password. The server must be stopped first.", - "methodManualTitle": "Method 2: Manual Reset", - "methodManualDescription": "Delete the password from the database and set a new one on startup:", - "setPasswordInYour": "Set a new password in your", - "fileLabelSuffix": "file:", + "welcome": "خوش آمدید", + "signIn": "ورود", + "enterPassword": "برای ادامه، رمز عبور خود را وارد کنید", + "password": "رمز عبور", + "unifiedProxy": "پراکسی یکپارچه API هوش مصنوعی", + "unifiedAiApiProxy": "پراکسی یکپارچه API هوش مصنوعی", + "unifiedAiApiProxyDesc": "درخواستها را از طریق یک نقطه پایانی واحد به چندین ارائهدهنده هوش مصنوعی هدایت کنید. متعادلسازی بار، جایگزینی هنگام خرابی و ردیابی مصرف بهصورت داخلی ارائه شدهاند.", + "passwordNotEnabled": "محافظت با رمز عبور فعال نیست", + "loading": "در حال بارگیری...", + "invalidPassword": "رمز عبور نامعتبر است", + "errorOccurredRetry": "خطایی رخ داد. لطفاً دوباره تلاش کنید.", + "configureInstance": "بیایید نمونه OmniRoute شما را پیکربندی کنیم", + "runOnboardingWizard": "برای تنظیم رمز عبور و اتصال نخستین ارائهدهنده هوش مصنوعی، راهانداز اولیه را اجرا کنید.", + "startOnboarding": "شروع راهاندازی اولیه", + "secureYourInstance": "ایمنسازی نمونه شما", + "setPasswordDescription": "برای محافظت از داشبورد و ایمنسازی نقاط پایانی API خود در برابر دسترسی غیرمجاز، یک رمز عبور تنظیم کنید.", + "configurePassword": "پیکربندی رمز عبور", + "continue": "ادامه", + "windowWillClose": "این پنجره بهطور خودکار بسته خواهد شد...", + "closeTabNow": "اکنون میتوانید این زبانه را ببندید.", + "copyUrlManual": "لطفاً URL را از نوار آدرس کپی کرده و در برنامه جایگذاری کنید.", + "accessDeniedDescription": "شما مجوز دسترسی به این منبع را ندارید. کلید API خود را بررسی کنید یا با مدیر سیستم تماس بگیرید.", + "goToDashboard": "رفتن به داشبورد", + "featureMultiProviderTitle": "چندارائهدهندهای", + "featureMultiProviderDesc": "OpenAI، Anthropic، Google و موارد دیگر", + "featureLoadBalancingTitle": "توزیع بار", + "featureLoadBalancingDesc": "توزیع هوشمندانه درخواستها", + "featureUsageTrackingTitle": "ردیابی میزان استفاده", + "featureUsageTrackingDesc": "نظارت بر هزینهها و توکنها", + "resetPassword": "بازنشانی رمز عبور", + "resetDescription": "روشی را برای بازیابی دسترسی به داشبورد خود انتخاب کنید", + "stopServer": "سرور OmniRoute را متوقف کنید", + "processing": "در حال پردازش...", + "pleaseWait": "لطفاً تا تکمیل فرایند مجوزدهی منتظر بمانید.", + "authSuccess": "مجوزدهی با موفقیت انجام شد!", + "copyUrl": "کپی کردن این URL", + "accessDenied": "دسترسی رد شد", + "methodCliTitle": "روش ۱: بازنشانی از طریق CLI", + "methodCliDescription": "دستور زیر را روی سروری که OmniRoute در آن اجرا میشود، اجرا کنید:", + "methodCliHint": "از شما خواسته میشود رمز عبور جدیدی تنظیم کنید. ابتدا باید سرور متوقف شود.", + "methodManualTitle": "روش ۲: بازنشانی دستی", + "methodManualDescription": "رمز عبور را از پایگاه داده حذف کنید و هنگام راهاندازی، رمز جدیدی تنظیم کنید:", + "setPasswordInYour": "یک رمز عبور جدید در فایل", + "fileLabelSuffix": "خود تنظیم کنید:", "newPasswordPlaceholder": "your_new_password", - "deleteSettingsFile": "Delete", - "orRemovePasswordHashField": "or remove the passwordHash field", - "restartServerWithNewPassword": "Restart the server - it will use the new password", - "backToLogin": "Back to Login", - "forgotPassword": "Forgot password?", + "deleteSettingsFile": "حذف کنید", + "orRemovePasswordHashField": "یا فیلد passwordHash را حذف کنید", + "restartServerWithNewPassword": "سرور را مجدداً راهاندازی کنید؛ از رمز عبور جدید استفاده خواهد کرد", + "backToLogin": "بازگشت به ورود", + "forgotPassword": "رمز عبور را فراموش کردهاید؟", "continueWithOidc": "ادامه با OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", - "Authorization": "Authorization", + "defaultPasswordHint": "رمز عبور پیشفرض: CHANGEME (مگر اینکه INITIAL_PASSWORD تنظیم شده باشد)", + "Authorization": "مجوزدهی", "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "در انتظار مجوزدهی...", + "waitingForGoogleAuthorization": "در انتظار مجوزدهی Google...", + "waitingForOpenAIAuthorization": "در انتظار مجوزدهی OpenAI...", + "waitingForAntigravityAuthorization": "در انتظار مجوزدهی Antigravity...", + "waitingForQoderAuthorization": "در انتظار مجوزدهی Qoder...", + "exchangingCodeForTokens": "در حال مبادله کد با توکنها...", + "nodeIncompatibleTitle": "نسخه ناسازگار Node.js", + "nodeIncompatibleDesc": "شما در حال اجرای Node.js {version} هستید که خارج از سیاست محیط اجرایی امن پشتیبانیشده OmniRoute است. از یک نسخه اصلاحشده LTS از Node.js 20.x یا 22.x استفاده کنید.", + "nodeIncompatibleFixLabel": "راهحل: یک نسخه اصلاحشده LTS از Node.js 22 را نصب کنید", + "nodeIncompatibleHint": "OmniRoute به Node.js 22.22.2+ (22.x LTS) یا 24.0.0+ (24.x LTS) نیاز دارد. Node 24 LTS توصیه میشود.", "resetViaAppDataTitle": "تنظیم مجدد از طریق داده‌های برنامه", "resetViaAppDataDescription": "فایل تنظیمات را از دایرکتوری داده‌های برنامه حذف کنید تا رمز عبور خود را بازنشانی کنید:", "quitDesktopApp": "کاملاً از برنامه دسکتاپ OmniRoute خارج شوید", @@ -9930,72 +9937,72 @@ }, "landing": { "brandName": "OmniRoute", - "navigateHome": "Navigate to home", - "toggleMenu": "Toggle menu", - "featuresLink": "Features", - "docsLink": "Docs", + "navigateHome": "رفتن به صفحه اصلی", + "toggleMenu": "باز و بسته کردن منو", + "featuresLink": "قابلیتها", + "docsLink": "مستندات", "github": "GitHub", - "versionLive": "v1.0 is now live", - "oneEndpoint": "One Endpoint for", - "allProviders": "All AI Providers", - "heroDescription": "AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.", - "getStarted": "Get Started", - "viewOnGithub": "View on GitHub", - "powerfulFeatures": "Powerful Features", - "featuresSubtitle": "Everything you need to manage your AI infrastructure in one place, built for scale.", - "featureUnifiedEndpointTitle": "Unified Endpoint", - "featureUnifiedEndpointDesc": "Access all providers via a single standard API URL.", - "featureEasySetupTitle": "Easy Setup", - "featureEasySetupDesc": "Get up and running in minutes with npx command.", - "featureModelFallbackTitle": "Model Fallback", - "featureModelFallbackDesc": "Automatically switch providers on failure or high latency.", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Detailed analytics and cost monitoring across all models.", - "featureOAuthApiKeysTitle": "OAuth & API Keys", - "featureOAuthApiKeysDesc": "Securely manage credentials in one vault.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncDesc": "Sync your configurations across devices instantly.", - "featureCliSupportTitle": "CLI Support", - "featureCliSupportDesc": "Works with Claude Code, Codex, Cline, Cursor, and more.", - "featureDashboardTitle": "Dashboard", - "featureDashboardDesc": "Visual dashboard for real-time traffic analysis.", - "howItWorks": "How OmniRoute Works", - "howItWorksDescription": "Data flows seamlessly from your application through our intelligent routing layer to the best provider for the job.", - "howItWorksStep1Title": "1. CLI & SDKs", - "howItWorksStep1Description": "Your requests start from your favorite tools or our unified SDK. Just change the base URL.", - "howItWorksStep2Title": "2. OmniRoute Hub", - "howItWorksStep2Description": "Our engine analyzes the prompt, checks provider health, and routes for lowest latency or cost.", - "howItWorksStep3Title": "3. AI Providers", - "howItWorksStep3Description": "The request is fulfilled by OpenAI, Anthropic, Gemini, or others instantly.", - "getStartedIn30Seconds": "Get Started in 30 Seconds", - "getStartedDescription": "Install OmniRoute, configure your providers via web dashboard, and start routing AI requests.", - "installOmniRoute": "Install OmniRoute", - "installStepDescription": "Run npx command to start the server instantly", - "openDashboard": "Open Dashboard", - "openDashboardStepDescription": "Configure providers and API keys via web interface", - "routeRequests": "Route Requests", - "routeRequestsStepDescription": "Point your CLI tools to {endpoint}", - "terminal": "terminal", - "copy": "Copy", - "copied": "✓ Copied", - "startingOmniRoute": "Starting OmniRoute...", - "serverRunningOnLabel": "Server running on", - "dashboardLabel": "Dashboard", - "readyToRoute": "Ready to route! ✓", - "configureProvidersNote": "📝 Configure providers in dashboard or use environment variables", - "dataLocation": "Data Location:", + "versionLive": "v1.0 اکنون منتشر شده است", + "oneEndpoint": "یک نقطه پایانی برای", + "allProviders": "همه ارائهدهندگان هوش مصنوعی", + "heroDescription": "پروکسی نقطه پایانی هوش مصنوعی با داشبورد وب — نسخه JavaScript از CLIProxyAPI. بهصورت یکپارچه با Claude Code، OpenAI Codex، Cline، RooCode و دیگر ابزارهای CLI کار میکند.", + "getStarted": "شروع کنید", + "viewOnGithub": "مشاهده در GitHub", + "powerfulFeatures": "قابلیتهای قدرتمند", + "featuresSubtitle": "هرآنچه برای مدیریت زیرساخت هوش مصنوعی خود در یک مکان نیاز دارید، با قابلیت مقیاسپذیری.", + "featureUnifiedEndpointTitle": "نقطه پایانی یکپارچه", + "featureUnifiedEndpointDesc": "از طریق یک URL استاندارد API به همه ارائهدهندگان دسترسی پیدا کنید.", + "featureEasySetupTitle": "راهاندازی آسان", + "featureEasySetupDesc": "با دستور npx در چند دقیقه شروع به کار کنید.", + "featureModelFallbackTitle": "جایگزینی خودکار مدل", + "featureModelFallbackDesc": "در صورت بروز خطا یا تأخیر زیاد، بهطور خودکار ارائهدهنده را تغییر دهید.", + "featureUsageTrackingTitle": "ردیابی مصرف", + "featureUsageTrackingDesc": "تحلیلهای دقیق و نظارت بر هزینه در همه مدلها.", + "featureOAuthApiKeysTitle": "OAuth و کلیدهای API", + "featureOAuthApiKeysDesc": "اعتبارنامهها را بهصورت امن در یک خزانه مدیریت کنید.", + "featureCloudSyncTitle": "همگامسازی ابری", + "featureCloudSyncDesc": "پیکربندیهای خود را فوراً بین دستگاهها همگامسازی کنید.", + "featureCliSupportTitle": "پشتیبانی از CLI", + "featureCliSupportDesc": "با Claude Code، Codex، Cline، Cursor و ابزارهای دیگر کار میکند.", + "featureDashboardTitle": "داشبورد", + "featureDashboardDesc": "داشبورد بصری برای تحلیل لحظهای ترافیک.", + "howItWorks": "OmniRoute چگونه کار میکند", + "howItWorksDescription": "دادهها بهصورت یکپارچه از برنامه شما، از طریق لایه مسیریابی هوشمند ما، به بهترین ارائهدهنده برای انجام کار منتقل میشوند.", + "howItWorksStep1Title": "۱. CLI و SDKها", + "howItWorksStep1Description": "درخواستهای شما از ابزارهای دلخواهتان یا SDK یکپارچه ما آغاز میشوند. کافی است URL پایه را تغییر دهید.", + "howItWorksStep2Title": "۲. هاب OmniRoute", + "howItWorksStep2Description": "موتور ما پرامپت را تحلیل میکند، وضعیت ارائهدهندگان را بررسی میکند و درخواست را بر اساس کمترین تأخیر یا هزینه مسیریابی میکند.", + "howItWorksStep3Title": "۳. ارائهدهندگان هوش مصنوعی", + "howItWorksStep3Description": "درخواست فوراً توسط OpenAI، Anthropic، Gemini یا سایر ارائهدهندگان انجام میشود.", + "getStartedIn30Seconds": "در ۳۰ ثانیه شروع کنید", + "getStartedDescription": "OmniRoute را نصب کنید، ارائهدهندگان خود را از طریق داشبورد وب پیکربندی کنید و مسیریابی درخواستهای هوش مصنوعی را آغاز کنید.", + "installOmniRoute": "نصب OmniRoute", + "installStepDescription": "برای راهاندازی فوری سرور، دستور npx را اجرا کنید", + "openDashboard": "باز کردن داشبورد", + "openDashboardStepDescription": "ارائهدهندگان و کلیدهای API را از طریق رابط وب پیکربندی کنید", + "routeRequests": "مسیریابی درخواستها", + "routeRequestsStepDescription": "ابزارهای CLI خود را به {endpoint} متصل کنید", + "terminal": "ترمینال", + "copy": "کپی", + "copied": "✓ کپی شد", + "startingOmniRoute": "در حال راهاندازی OmniRoute...", + "serverRunningOnLabel": "سرور در حال اجرا است روی", + "dashboardLabel": "داشبورد", + "readyToRoute": "آمادهٔ مسیریابی! ✓", + "configureProvidersNote": "📝 ارائهدهندگان را در داشبورد پیکربندی کنید یا از متغیرهای محیطی استفاده کنید", + "dataLocation": "محل دادهها:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", - "product": "Product", - "dashboardLink": "Dashboard", - "changelog": "Changelog", - "resources": "Resources", - "documentation": "Documentation", + "product": "محصول", + "dashboardLink": "داشبورد", + "changelog": "تغییرات", + "resources": "منابع", + "documentation": "مستندات", "npm": "NPM", - "legal": "Legal", - "mitLicense": "MIT License", - "footerTagline": "The unified endpoint for AI generation. Connect, route, and manage your AI providers with ease.", - "copyright": "© {year} OmniRoute. All rights reserved.", + "legal": "حقوقی", + "mitLicense": "مجوز MIT", + "footerTagline": "نقطهٔ پایانی یکپارچه برای تولید محتوا با هوش مصنوعی. ارائهدهندگان هوش مصنوعی خود را بهآسانی متصل، مسیریابی و مدیریت کنید.", + "copyright": "© {year} OmniRoute. تمامی حقوق محفوظ است.", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", "flowToolCline": "Cline", @@ -10004,11 +10011,11 @@ "flowProviderAnthropic": "Anthropic", "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", - "interactiveDiagram": "Interactive diagram visible on desktop", - "ctaTitle": "Ready to Simplify Your AI Infrastructure?", - "ctaDescription": "Join developers who are streamlining their AI integrations with OmniRoute. Open source and free to start.", - "startFree": "Start Free", - "readDocumentation": "Read Documentation", + "interactiveDiagram": "نمودار تعاملی در نسخهٔ دسکتاپ قابل مشاهده است", + "ctaTitle": "آمادهاید زیرساخت هوش مصنوعی خود را سادهتر کنید؟", + "ctaDescription": "به توسعهدهندگانی بپیوندید که یکپارچهسازیهای هوش مصنوعی خود را با OmniRoute سادهتر میکنند. متنباز است و شروع استفاده از آن رایگان است.", + "startFree": "شروع رایگان", + "readDocumentation": "مطالعهٔ مستندات", "company": "شرکت", "pricing": "قیمت گذاری", "apiReference": "مرجع API", @@ -10023,45 +10030,45 @@ "communityDiscussions": "بحث‌های جامعه" }, "docs": { - "title": "Documentation", - "quickStart": "Quick Start", + "title": "مستندات", + "quickStart": "شروع سریع", "deploymentGuides": "راهنماهای استقرار", - "features": "Features", - "supportedProviders": "Supported Providers", - "supportedProvidersToc": "Providers", - "commonUseCases": "Common Use Cases", - "clientCompatibility": "Client Compatibility", - "protocolsToc": "Protocols", - "apiReference": "API Reference", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", - "method": "Method", - "path": "Path", - "notes": "Notes", - "modelPrefixes": "Model Prefixes", - "prefix": "Prefix", - "troubleshooting": "Troubleshooting", - "supportsChat": "Supports both chat and responses endpoints.", - "oauthAutoRefresh": "OAuth connection with automatic token refresh.", - "fullStreaming": "Full streaming support for all models.", - "docsLabel": "Docs", + "features": "ویژگیها", + "supportedProviders": "ارائهدهندگان پشتیبانیشده", + "supportedProvidersToc": "ارائهدهندگان", + "commonUseCases": "موارد استفادهٔ رایج", + "clientCompatibility": "سازگاری کلاینت", + "protocolsToc": "پروتکلها", + "apiReference": "مرجع API", + "managementApiReference": "مرجع API مدیریت", + "managementApiDescription": "نقاط پایانی خودکارسازی برای رجیستری پراکسی، تخصیص محدودهها و مهاجرت پراکسیهای قدیمی.", + "method": "متد", + "path": "مسیر", + "notes": "توضیحات", + "modelPrefixes": "پیشوندهای مدل", + "prefix": "پیشوند", + "troubleshooting": "عیبیابی", + "supportsChat": "از هر دو نقطه پایانی chat و responses پشتیبانی میکند.", + "oauthAutoRefresh": "اتصال OAuth با تازهسازی خودکار توکن.", + "fullStreaming": "پشتیبانی کامل از استریم برای همه مدلها.", + "docsLabel": "مستندات", "docsHeroDescription": "AI gateway for multi-provider LLMs. One endpoint for OpenAI, Anthropic, Gemini, DeepSeek, GitHub Copilot, Claude Code, Cursor, and 100+ more providers.", - "openDashboard": "Open Dashboard", - "endpointPage": "Endpoint Page", + "openDashboard": "باز کردن داشبورد", + "endpointPage": "صفحه نقطه پایانی", "github": "GitHub", - "reportIssue": "Report Issue", - "onThisPage": "On this page", - "documentationVersion": "Documentation - v{version}", - "quickStartStep1Title": "1. Install and run", - "quickStartStep1Prefix": "Run", - "quickStartStep1Middle": "or clone from GitHub and run", - "quickStartStep2Title": "2. Create API key", - "quickStartStep2Text": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "quickStartStep3Title": "3. Connect providers", - "quickStartStep3Text": "Add provider accounts via OAuth login, API key, or free-tier auto-connect.", - "quickStartStep4Title": "4. Set client base URL", - "quickStartStep4Prefix": "Point your IDE or API client to", - "quickStartStep4Suffix": "Use provider prefix, for example", + "reportIssue": "گزارش مشکل", + "onThisPage": "در این صفحه", + "documentationVersion": "مستندات - v{version}", + "quickStartStep1Title": "۱. نصب و اجرا", + "quickStartStep1Prefix": "اجرا", + "quickStartStep1Middle": "یا از GitHub کلون و اجرا کنید", + "quickStartStep2Title": "۲. ایجاد کلید API", + "quickStartStep2Text": "به نقطه پایانی -> کلیدهای ثبتشده بروید. برای هر محیط یک کلید ایجاد کنید.", + "quickStartStep3Title": "۳. اتصال ارائهدهندگان", + "quickStartStep3Text": "حسابهای ارائهدهندگان را از طریق ورود OAuth، کلید API یا اتصال خودکار پلن رایگان اضافه کنید.", + "quickStartStep4Title": "۴. تنظیم URL پایه کلاینت", + "quickStartStep4Prefix": "IDE یا کلاینت API خود را به این آدرس متصل کنید", + "quickStartStep4Suffix": "از پیشوند ارائهدهنده استفاده کنید، برای مثال", "deploySetupTitle": "راهنمای راه اندازی", "deploySetupText": "نصب گام به گام، پیکربندی محیط، و اولین راه‌اندازی برای OmniRoute.", "deployElectronTitle": "دسکتاپ الکترون", @@ -10075,161 +10082,161 @@ "deployPwaTitle": "PWA", "deployPwaText": "OmniRoute را به عنوان یک برنامه وب پیشرفته در مرورگرهای اندروید، iOS و دسکتاپ نصب کنید.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", - "featureRoutingTitle": "Multi-Provider Routing", - "featureRoutingText": "Route requests to 30+ AI providers through a single OpenAI-compatible endpoint. Supports chat, responses, audio, and image APIs.", - "featureCombosTitle": "Combos and Balancing", - "featureCombosText": "Create model combos with fallback chains and balancing strategies: round-robin, priority, random, least-used, and cost-optimized.", - "featureUsageTitle": "Usage and Cost Tracking", - "featureUsageText": "Real-time token counting, cost calculation per provider/model, and detailed usage breakdown by API key and account.", - "featureAnalyticsTitle": "Analytics Dashboard", - "featureAnalyticsText": "Visual analytics with charts for requests, tokens, errors, latency, costs, and model popularity over time.", - "featureHealthTitle": "Health Monitoring", - "featureHealthText": "Live health checks, provider status, circuit breaker states, and automatic rate limit detection with exponential backoff.", - "featureCliTitle": "CLI Tools", - "featureCliText": "Manage IDE configurations, export/import backups, discover codex profiles, and configure settings from the dashboard.", - "featureSecurityTitle": "Security and Policies", - "featureSecurityText": "API key authentication, IP filtering, prompt injection guard, domain policies, session management, and audit logging.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncText": "Sync your configuration to Cloudflare Workers for remote access with encrypted credentials and automatic failover.", - "providersAcrossConnectionTypes": "{count} providers across three connection types.", - "manageProviders": "Manage Providers", - "providersCount": "{count} providers", - "providerTypeFree": "Free Tier", + "deployTermuxText": "OmniRoute را بهصورت بدون رابط گرافیکی روی Android و از طریق Termux اجرا کنید. از مرورگر موبایل خود به داشبورد دسترسی پیدا کنید.", + "featureRoutingTitle": "مسیریابی چندارائهدهندهای", + "featureRoutingText": "درخواستها را از طریق یک نقطه پایانی سازگار با OpenAI به بیش از ۳۰ ارائهدهنده هوش مصنوعی هدایت کنید. از APIهای چت، پاسخها، صوت و تصویر پشتیبانی میکند.", + "featureCombosTitle": "ترکیبها و متعادلسازی", + "featureCombosText": "ترکیبهای مدل را با زنجیرههای جایگزین و راهبردهای متعادلسازی ایجاد کنید: نوبتی، اولویتدار، تصادفی، کماستفادهترین و بهینهسازیشده از نظر هزینه.", + "featureUsageTitle": "ردیابی مصرف و هزینه", + "featureUsageText": "شمارش بلادرنگ توکنها، محاسبه هزینه بهازای هر ارائهدهنده/مدل و تفکیک دقیق مصرف بر اساس کلید API و حساب.", + "featureAnalyticsTitle": "داشبورد تحلیلها", + "featureAnalyticsText": "تحلیلهای بصری با نمودارهایی برای درخواستها، توکنها، خطاها، تأخیر، هزینهها و محبوبیت مدلها در طول زمان.", + "featureHealthTitle": "پایش سلامت", + "featureHealthText": "بررسیهای زنده سلامت، وضعیت ارائهدهندگان، حالتهای قطعکننده مدار و تشخیص خودکار محدودیت نرخ با عقبنشینی نمایی.", + "featureCliTitle": "ابزارهای CLI", + "featureCliText": "پیکربندیهای IDE را مدیریت کنید، نسخههای پشتیبان را برونبری/درونریزی کنید، پروفایلهای codex را بیابید و تنظیمات را از داشبورد پیکربندی کنید.", + "featureSecurityTitle": "امنیت و سیاستها", + "featureSecurityText": "احراز هویت با کلید API، فیلترکردن IP، محافظت در برابر تزریق پرامپت، سیاستهای دامنه، مدیریت نشست و ثبت گزارش ممیزی.", + "featureCloudSyncTitle": "همگامسازی ابری", + "featureCloudSyncText": "پیکربندی خود را برای دسترسی از راه دور، همراه با اعتبارنامههای رمزگذاریشده و جابهجایی خودکار هنگام خرابی، با Cloudflare Workers همگامسازی کنید.", + "providersAcrossConnectionTypes": "{count} ارائهدهنده در سه نوع اتصال.", + "manageProviders": "مدیریت ارائهدهندگان", + "providersCount": "{count} ارائهدهنده", + "providerTypeFree": "سطح رایگان", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", - "useCaseSingleEndpointTitle": "Single endpoint for many providers", - "useCaseSingleEndpointText": "Point clients to one base URL and route by model prefix (for example: gh/, cc/, kr/, openai/).", - "useCaseFallbackTitle": "Fallback and model switching with combos", - "useCaseFallbackText": "Create combo models in Dashboard and keep client config stable while providers rotate internally.", - "useCaseUsageVisibilityTitle": "Usage, cost and debug visibility", - "useCaseUsageVisibilityText": "Track tokens and cost by provider, account, and API key in Usage and Analytics tabs.", + "providerTypeApiKey": "کلید API", + "useCaseSingleEndpointTitle": "یک نقطه پایانی برای چندین ارائهدهنده", + "useCaseSingleEndpointText": "کلاینتها را به یک URL پایه هدایت کنید و مسیریابی را براساس پیشوند مدل انجام دهید (برای مثال: gh/، cc/، kr/، openai/).", + "useCaseFallbackTitle": "مسیر جایگزین و تغییر مدل با ترکیبها", + "useCaseFallbackText": "مدلهای ترکیبی را در Dashboard ایجاد کنید و درحالیکه ارائهدهندگان در داخل جابهجا میشوند، پیکربندی کلاینت را ثابت نگه دارید.", + "useCaseUsageVisibilityTitle": "نمایش میزان استفاده، هزینه و اطلاعات اشکالزدایی", + "useCaseUsageVisibilityText": "توکنها و هزینه را به تفکیک ارائهدهنده، حساب و کلید API در زبانههای Usage و Analytics ردیابی کنید.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", - "modelRecommendationLabel": "Model recommendation: explicit prefix", - "clientCodexTitle": "Codex / GitHub Copilot Models", - "clientCodexBullet1": "Use model IDs with", - "clientCodexBullet2": "Codex-family models auto-route to", - "clientCodexBullet3": "Non-Codex models continue on", + "baseUrlLabel": "URL پایه", + "chatEndpointLabel": "نقطه پایانی چت", + "modelRecommendationLabel": "توصیه مدل: پیشوند صریح", + "clientCodexTitle": "مدلهای Codex / GitHub Copilot", + "clientCodexBullet1": "از شناسههای مدل همراه با این مورد استفاده کنید:", + "clientCodexBullet2": "مدلهای خانواده Codex بهطور خودکار به این مسیر هدایت میشوند:", + "clientCodexBullet3": "مدلهای غیر Codex در این مسیر ادامه میدهند:", "clientCursorTitle": "Cursor IDE", - "clientCursorBullet1": "Use", - "clientCursorBullet1Suffix": "prefix for Cursor models.", - "clientCursorBullet2": "OAuth connection - login from the Providers page.", + "clientCursorBullet1": "استفاده کنید از", + "clientCursorBullet1Suffix": "پیشوند برای مدلهای Cursor.", + "clientCursorBullet2": "اتصال OAuth — از صفحه Providers وارد شوید.", "clientClaudeTitle": "Claude Code / Antigravity", - "clientClaudeBullet1Prefix": "Use", - "clientClaudeBullet1Middle": "(Claude) or", - "clientClaudeBullet1Suffix": "(Antigravity) prefix.", + "clientClaudeBullet1Prefix": "استفاده کنید از", + "clientClaudeBullet1Middle": "پیشوند (Claude) یا", + "clientClaudeBullet1Suffix": "پیشوند (Antigravity).", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "Use OmniRoute as an OpenAI-compatible base URL and keep explicit provider prefixes for deterministic routing.", - "clientWindsurfBullet2": "Point models to `/v1/chat/completions` for general traffic and preserve `/v1/responses` for Codex-style flows.", - "clientWindsurfBullet3": "Use Dashboard -> CLI Tools for a ready-made Windsurf configuration guide.", + "clientWindsurfBullet1": "از OmniRoute بهعنوان یک URL پایه سازگار با OpenAI استفاده کنید و برای مسیریابی قطعی، پیشوندهای صریح ارائهدهنده را حفظ کنید.", + "clientWindsurfBullet2": "برای ترافیک عمومی، مدلها را به `/v1/chat/completions` هدایت کنید و `/v1/responses` را برای جریانهای سبک Codex حفظ کنید.", + "clientWindsurfBullet3": "برای راهنمای آماده پیکربندی Windsurf، از Dashboard -> CLI Tools استفاده کنید.", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline works best with explicit provider/model prefixes so the router never has to guess the backend.", - "clientClineBullet2": "Use `/v1/chat/completions` for general models and reuse the same OmniRoute base URL across different accounts.", - "clientClineBullet3": "Use the Providers dashboard to validate OAuth/API key before debugging Cline runtime issues.", + "clientClineBullet1": "Cline با پیشوندهای صریح ارائهدهنده/مدل بهترین عملکرد را دارد تا مسیریاب هرگز مجبور به حدسزدن بکاند نباشد.", + "clientClineBullet2": "برای مدلهای عمومی از `/v1/chat/completions` استفاده کنید و همان URL پایه OmniRoute را در حسابهای مختلف بهکار ببرید.", + "clientClineBullet3": "پیش از عیبیابی مشکلات زمان اجرای Cline، از داشبورد Providers برای اعتبارسنجی OAuth/API key استفاده کنید.", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "Use OmniRoute as a stable base URL while rotating accounts or provider combos underneath.", - "clientKimiBullet2": "Prefer prefixed models in coding flows so fallback and audit trail remain explicit.", - "clientKimiBullet3": "Use `/v1/responses` when you want native Responses-style routing for tool-using clients.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "clientKimiBullet1": "هنگام جابهجایی حسابها یا ترکیبهای ارائهدهندگان در لایه زیرین، از OmniRoute بهعنوان یک URL پایه پایدار استفاده کنید.", + "clientKimiBullet2": "در جریانهای کدنویسی، مدلهای پیشونددار را ترجیح دهید تا مسیر جایگزین و ردپای ممیزی صریح باقی بمانند.", + "clientKimiBullet3": "هنگامی که برای کلاینتهای استفادهکننده از ابزار به مسیریابی بومی به سبک Responses نیاز دارید، از `/v1/responses` استفاده کنید.", + "protocolsTitle": "پروتکلها: MCP و A2A", + "protocolsDescription": "OmniRoute علاوه بر APIهای سازگار با OpenAI، دو پروتکل عملیاتی ارائه میدهد: MCP برای اجرای ابزار و A2A برای گردشکارهای عاملبهعامل.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "از MCP روی stdio استفاده کنید تا کلاینتها بتوانند ابزارهای OmniRoute را با قابلیت مشاهده ممیزی کشف و فراخوانی کنند.", + "protocolMcpStep1": "انتقال MCP را با `omniroute --mcp` راهاندازی کنید.", + "protocolMcpStep2": "کلاینت MCP خود را به انتقال stdio متصل کنید.", + "protocolMcpStep3": "برای اعتبارسنجی اتصال، `omniroute_get_health` و `omniroute_list_combos` را فراخوانی کنید.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", - "endpointChatNote": "OpenAI-compatible chat endpoint (default).", - "endpointResponsesNote": "Responses API endpoint (Codex, o-series).", - "endpointModelsNote": "Model catalog for all connected providers.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", - "endpointSpeechNote": "Text-to-speech generation (ElevenLabs, OpenAI TTS).", - "endpointEmbeddingsNote": "Text embedding generation (OpenAI, Cohere, Voyage).", - "endpointImagesNote": "Image generation (NanoBanana).", - "endpointRewriteChatNote": "Rewrite helper for clients without /v1.", - "endpointRewriteResponsesNote": "Rewrite helper for Responses without /v1.", - "endpointRewriteModelsNote": "Rewrite helper for model discovery without /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", - "modelPrefixesDescriptionStart": "Use the provider prefix before the model name to route to a specific provider. Example:", - "modelPrefixesDescriptionEnd": "routes to GitHub Copilot.", - "provider": "Provider", - "type": "Type", - "troubleshootingModelRouting": "If the client fails with model routing, use explicit provider/model (for example: gh/gpt-5.1-codex).", - "troubleshootingAmbiguousModels": "If you receive ambiguous model errors, pick a provider prefix instead of a bare model ID.", - "troubleshootingCodexFamily": "For GitHub Codex-family models, keep model as gh/codex-model; router selects /responses automatically.", - "troubleshootingTestConnection": "Use Dashboard > Providers > Test Connection before testing from IDEs or external clients.", - "troubleshootingCircuitBreaker": "If a provider shows circuit breaker open, wait for the cooldown or check Health page for details.", - "troubleshootingOAuth": "For OAuth providers, re-authenticate if tokens expire. Check the provider card status indicator.", - "endpointCompletionsNote": "Legacy completions endpoint for text generation.", - "endpointModerationsNote": "Content moderation and safety classification.", - "endpointRerankNote": "Document reranking for retrieval-augmented generation (Cohere, Jina).", - "endpointSearchNote": "Web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity).", - "endpointSearchAnalyticsNote": "Analytics and metrics for search requests.", - "endpointVideoNote": "Video generation (ComfyUI, SD WebUI workflows).", - "endpointMusicNote": "Music generation via ComfyUI workflows.", - "endpointMessagesNote": "Anthropic-native messages endpoint.", - "endpointCountTokensNote": "Count tokens for a given message payload.", - "endpointFilesNote": "File upload for multimodal inputs.", - "endpointBatchesNote": "Batch processing for bulk API requests.", - "endpointWsNote": "WebSocket endpoint for real-time streaming.", - "mgmtProvidersListNote": "List all registered provider connections.", - "mgmtProvidersCreateNote": "Create a new provider connection.", - "mgmtProvidersUpdateNote": "Update an existing provider connection.", - "mgmtProvidersDeleteNote": "Delete a provider connection.", - "mgmtProvidersTestNote": "Test connectivity and authentication for a provider.", - "mgmtProvidersModelsNote": "List available models for a specific provider.", - "mgmtSettingsGetNote": "Retrieve current application settings.", - "mgmtSettingsUpdateNote": "Update application settings.", - "mgmtPayloadRulesGetNote": "Get payload transformation rules.", - "mgmtPayloadRulesUpdateNote": "Update payload transformation rules.", - "mcpToolsTitle": "MCP Tools", - "mcpToolsDescription": "OmniRoute exposes {count} tools via Model Context Protocol for agent orchestration.", - "mcpToolsCount": "{count} tools", - "mcpToolsToc": "MCP Tools", - "mcpToolsRoutingTitle": "Routing & Discovery", - "mcpToolsRoutingDesc": "Health checks, combo management, quota monitoring, cost reporting, and model catalog access.", - "mcpToolsOperationsTitle": "Operations & Strategy", - "mcpToolsOperationsDesc": "Route simulation, budget guards, strategy switching, resilience profiles, and provider metrics.", - "mcpToolsCacheTitle": "Cache Management", - "mcpToolsCacheDesc": "View cache statistics and flush semantic or signature caches.", + "protocolA2aDesc": "برای ارسال وظایف بهصورت همگام یا از طریق پخش جریانی SSE، از A2A JSON-RPC استفاده کنید.", + "protocolA2aStep1": "برای کشف عامل، `/.well-known/agent.json` را بخوانید.", + "protocolA2aStep2": "درخواستهای `message/send` یا `message/stream` را به `POST /a2a` ارسال کنید.", + "protocolA2aStep3": "چرخه عمر وظیفه را با `tasks/get` و `tasks/cancel` مدیریت کنید.", + "protocolTroubleshootingTitle": "عیبیابی پروتکل", + "protocolTroubleshooting1": "اگر وضعیت MCP آفلاین است، بررسی کنید که فرایند stdio در حال اجرا باشد و فایل ضربان قلب بهروزرسانی شود.", + "protocolTroubleshooting2": "اگر وظایف A2A در وضعیت `working` باقی میمانند، `/api/a2a/tasks/:id` و رویدادهای جریان را برای یافتن وضعیت نهایی بررسی کنید.", + "protocolTroubleshooting3": "برای کنترلهای عملیاتی و مشاهده ممیزی، از `/dashboard/mcp` و `/dashboard/a2a` استفاده کنید.", + "endpointChatNote": "نقطه پایانی چت سازگار با OpenAI (پیشفرض).", + "endpointResponsesNote": "نقطه پایانی Responses API (Codex، سری o).", + "endpointModelsNote": "فهرست مدلها برای همه ارائهدهندگان متصل.", + "endpointAudioNote": "رونویسی صوتی (Deepgram، AssemblyAI).", + "endpointSpeechNote": "تولید متنبهگفتار (ElevenLabs، OpenAI TTS).", + "endpointEmbeddingsNote": "تولید تعبیهسازی متن (OpenAI، Cohere، Voyage).", + "endpointImagesNote": "تولید تصویر (NanoBanana).", + "endpointRewriteChatNote": "کمکابزار بازنویسی برای کلاینتهای فاقد /v1.", + "endpointRewriteResponsesNote": "کمکابزار بازنویسی برای Responses فاقد /v1.", + "endpointRewriteModelsNote": "کمکابزار بازنویسی برای کشف مدل فاقد /v1.", + "mgmtProxiesListNote": "فهرستکردن موارد ذخیرهشده رجیستری پروکسی (با پشتیبانی از صفحهبندی).", + "mgmtProxiesCreateNote": "ایجاد یک مورد پروکسی قابلاستفاده مجدد در رجیستری.", + "mgmtProxiesHealthNote": "دریافت معیارهای سلامت ۲۴ ساعته/غلتان برای هر پروکسی ذخیرهشده از گزارشهای پروکسی.", + "mgmtProxiesBulkAssignNote": "اختصاصدادن یا پاککردن یک پروکسی در چندین شناسه دامنه با یک درخواست.", + "mgmtAssignmentsListNote": "فهرستکردن تخصیصهای پروکسی بر اساس scope، scope_id یا proxy_id.", + "mgmtAssignmentsUpdateNote": "اختصاصدادن یا پاککردن پروکسی برای دامنه global/provider/account/combo.", + "mgmtLegacyMigrationNote": "واردکردن نگاشتهای قدیمی proxyConfig به تخصیصهای رجیستری.", + "modelPrefixesDescriptionStart": "برای مسیریابی به یک ارائهدهنده خاص، پیشوند ارائهدهنده را پیش از نام مدل قرار دهید. مثال:", + "modelPrefixesDescriptionEnd": "به GitHub Copilot مسیریابی میشود.", + "provider": "ارائهدهنده", + "type": "نوع", + "troubleshootingModelRouting": "اگر مسیریابی مدل در کلاینت ناموفق بود، ارائهدهنده/مدل را بهطور صریح مشخص کنید (برای مثال: gh/gpt-5.1-codex).", + "troubleshootingAmbiguousModels": "اگر با خطاهای مبهم مدل مواجه شدید، بهجای شناسهٔ مدل بدون پیشوند، یک پیشوند ارائهدهنده انتخاب کنید.", + "troubleshootingCodexFamily": "برای مدلهای خانوادهٔ GitHub Codex، مدل را بهصورت gh/codex-model نگه دارید؛ مسیریاب بهطور خودکار /responses را انتخاب میکند.", + "troubleshootingTestConnection": "پیش از آزمایش از طریق IDEها یا کلاینتهای خارجی، از داشبورد > ارائهدهندگان > آزمایش اتصال استفاده کنید.", + "troubleshootingCircuitBreaker": "اگر برای ارائهدهندهای مدارشکن باز نمایش داده میشود، تا پایان دورهٔ انتظار صبر کنید یا برای جزئیات صفحهٔ سلامت را بررسی کنید.", + "troubleshootingOAuth": "برای ارائهدهندگان OAuth، اگر توکنها منقضی شدند، دوباره احراز هویت کنید. نشانگر وضعیت کارت ارائهدهنده را بررسی کنید.", + "endpointCompletionsNote": "نقطهٔ پایانی قدیمی تکمیل متن برای تولید متن.", + "endpointModerationsNote": "تعدیل محتوا و طبقهبندی ایمنی.", + "endpointRerankNote": "رتبهبندی مجدد اسناد برای تولید تقویتشده با بازیابی (Cohere، Jina).", + "endpointSearchNote": "جستوجوی وب با ۵ ارائهدهنده (Serper، Brave، Exa، Tavily، Perplexity).", + "endpointSearchAnalyticsNote": "تحلیلها و معیارهای درخواستهای جستوجو.", + "endpointVideoNote": "تولید ویدئو (گردشکارهای ComfyUI، SD WebUI).", + "endpointMusicNote": "تولید موسیقی از طریق گردشکارهای ComfyUI.", + "endpointMessagesNote": "نقطهٔ پایانی پیامهای بومی Anthropic.", + "endpointCountTokensNote": "شمارش توکنهای یک محمولهٔ پیام مشخص.", + "endpointFilesNote": "بارگذاری فایل برای ورودیهای چندوجهی.", + "endpointBatchesNote": "پردازش دستهای برای درخواستهای انبوه API.", + "endpointWsNote": "نقطهٔ پایانی WebSocket برای پخش جریانی بلادرنگ.", + "mgmtProvidersListNote": "فهرستکردن همهٔ اتصالهای ثبتشدهٔ ارائهدهندگان.", + "mgmtProvidersCreateNote": "ایجاد اتصال جدید برای ارائهدهنده.", + "mgmtProvidersUpdateNote": "بهروزرسانی اتصال موجود ارائهدهنده.", + "mgmtProvidersDeleteNote": "حذف اتصال ارائهدهنده.", + "mgmtProvidersTestNote": "آزمایش اتصال و احراز هویت یک ارائهدهنده.", + "mgmtProvidersModelsNote": "فهرستکردن مدلهای موجود برای یک ارائهدهندهٔ خاص.", + "mgmtSettingsGetNote": "دریافت تنظیمات فعلی برنامه.", + "mgmtSettingsUpdateNote": "بهروزرسانی تنظیمات برنامه.", + "mgmtPayloadRulesGetNote": "دریافت قواعد تبدیل محموله.", + "mgmtPayloadRulesUpdateNote": "بهروزرسانی قواعد تبدیل محموله.", + "mcpToolsTitle": "ابزارهای MCP", + "mcpToolsDescription": "OmniRoute تعداد {count} ابزار را از طریق Model Context Protocol برای هماهنگسازی عاملها ارائه میکند.", + "mcpToolsCount": "{count} ابزار", + "mcpToolsToc": "ابزارهای MCP", + "mcpToolsRoutingTitle": "مسیریابی و کشف", + "mcpToolsRoutingDesc": "بررسیهای سلامت، مدیریت ترکیبها، پایش سهمیه، گزارش هزینه و دسترسی به کاتالوگ مدلها.", + "mcpToolsOperationsTitle": "عملیات و راهبرد", + "mcpToolsOperationsDesc": "شبیهسازی مسیر، محافظهای بودجه، تغییر راهبرد، پروفایلهای تابآوری و معیارهای ارائهدهندگان.", + "mcpToolsCacheTitle": "مدیریت حافظهٔ پنهان", + "mcpToolsCacheDesc": "مشاهدهٔ آمار حافظهٔ پنهان و پاکسازی حافظههای پنهان معنایی یا امضایی.", "mcpToolsCompressionTitle": "موتورهای فشرده سازی", "mcpToolsCompressionDesc": "فشرده سازی RTK/Brotli را پیکربندی کنید، موتورها را تعویض کنید و تجزیه و تحلیل فشرده سازی را با ترکیبی بررسی کنید.", "mcpToolsOneProxyTitle": "1 پروکسی / تونل", "mcpToolsOneProxyDesc": "پراکسی های خروجی را مدیریت کنید، IP های مسکونی را بچرخانید، و سلامت پراکسی را بررسی کنید.", - "mcpToolsMemoryTitle": "Memory", - "mcpToolsMemoryDesc": "Search, add, and clear persistent conversational memory entries.", - "mcpToolsSkillsTitle": "Skills", - "mcpToolsSkillsDesc": "List, enable, execute, and monitor custom skill executions.", - "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "Automatically create optimized combos based on your connected providers, usage patterns, and model capabilities.", - "featureSearchTitle": "Web Search", - "featureSearchText": "Integrated web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity) including analytics and cost tracking.", - "featureMemoryTitle": "Memory System", - "featureMemoryText": "Persistent conversational memory with extraction, injection, retrieval, and summarization across sessions.", - "featureSkillsTitle": "Skills Framework", - "featureSkillsText": "Extensible skill system with built-in and custom skills, sandbox execution, request interception, and context injection.", - "featureAcpTitle": "Agent Communication", - "featureAcpText": "Agent Communication Protocol (ACP) registry for managing agent-to-agent workflows and tool orchestration.", - "protocolAcpTitle": "ACP (Agent Communication)", - "protocolAcpDesc": "Register and manage agents via the ACP registry for inter-agent communication and tool sharing.", - "protocolAcpStep1": "Navigate to Dashboard → Agents to view registered ACP agents.", - "protocolAcpStep2": "Register new agents with capabilities and endpoint configuration.", - "protocolAcpStep3": "Use CLI Tools to configure agent communication channels.", + "mcpToolsMemoryTitle": "حافظه", + "mcpToolsMemoryDesc": "جستجو، افزودن و پاکسازی ورودیهای حافظهٔ پایدار مکالمه.", + "mcpToolsSkillsTitle": "مهارتها", + "mcpToolsSkillsDesc": "فهرستکردن، فعالسازی، اجرا و نظارت بر اجرای مهارتهای سفارشی.", + "featureAutoComboTitle": "ترکیب خودکار", + "featureAutoComboText": "ایجاد خودکار ترکیبهای بهینه بر اساس ارائهدهندگان متصل، الگوهای استفاده و قابلیتهای مدل شما.", + "featureSearchTitle": "جستجوی وب", + "featureSearchText": "جستجوی یکپارچهٔ وب با ۵ ارائهدهنده (Serper، Brave، Exa، Tavily، Perplexity)، شامل تحلیل و ردیابی هزینه.", + "featureMemoryTitle": "سیستم حافظه", + "featureMemoryText": "حافظهٔ پایدار مکالمه با قابلیت استخراج، تزریق، بازیابی و خلاصهسازی در نشستهای مختلف.", + "featureSkillsTitle": "چارچوب مهارتها", + "featureSkillsText": "سیستم مهارت توسعهپذیر با مهارتهای داخلی و سفارشی، اجرای ایزوله، رهگیری درخواستها و تزریق زمینه.", + "featureAcpTitle": "ارتباط عاملها", + "featureAcpText": "رجیستری پروتکل ارتباط عاملها (ACP) برای مدیریت گردشکارهای عاملبهعامل و هماهنگسازی ابزارها.", + "protocolAcpTitle": "ACP (ارتباط عاملها)", + "protocolAcpDesc": "ثبت و مدیریت عاملها از طریق رجیستری ACP برای ارتباط بین عاملها و اشتراکگذاری ابزارها.", + "protocolAcpStep1": "برای مشاهدهٔ عاملهای ACP ثبتشده، به داشبورد ← عاملها بروید.", + "protocolAcpStep2": "عاملهای جدید را همراه با قابلیتها و پیکربندی نقطهٔ پایانی ثبت کنید.", + "protocolAcpStep3": "برای پیکربندی کانالهای ارتباطی عاملها از ابزارهای CLI استفاده کنید.", "metadataTitleTemplate": "%s — مستندات OmniRoute", "metadataDefaultTitle": "مستندات OmniRoute", "metadataDescription": "مستندات جامع برای دروازه OmniRoute AI — راه‌اندازی، API، فشرده‌سازی، استقرار و بیشتر.", @@ -10276,95 +10283,95 @@ } }, "legal": { - "privacyPolicy": "Privacy Policy", - "termsOfService": "Terms of Service", - "providerConfigurations": "Provider configurations", - "apiKeys": "API keys", - "usageLogs": "Usage logs", - "applicationSettings": "Application settings", - "viewExportAnalytics": "View and export usage analytics", - "clearHistory": "Clear usage history at any time", - "configureRetention": "Configure log retention policies", - "backupRestore": "Back up and restore your database", - "privacyMetadataTitle": "Privacy Policy | OmniRoute", - "privacyMetadataDescription": "Privacy policy for the OmniRoute AI API proxy router.", - "termsMetadataTitle": "Terms of Service | OmniRoute", - "termsMetadataDescription": "Terms of service for the OmniRoute AI API proxy router.", - "backToHome": "Back to home", - "lastUpdated": "Last updated: {date}", - "policyLastUpdatedDate": "February 13, 2026", + "privacyPolicy": "سیاست حفظ حریم خصوصی", + "termsOfService": "شرایط استفاده از خدمات", + "providerConfigurations": "پیکربندیهای ارائهدهندگان", + "apiKeys": "کلیدهای API", + "usageLogs": "گزارشهای استفاده", + "applicationSettings": "تنظیمات برنامه", + "viewExportAnalytics": "مشاهده و برونبری تحلیلهای استفاده", + "clearHistory": "پاککردن تاریخچهٔ استفاده در هر زمان", + "configureRetention": "پیکربندی سیاستهای نگهداری گزارشها", + "backupRestore": "پشتیبانگیری و بازیابی پایگاه دادهٔ شما", + "privacyMetadataTitle": "سیاست حفظ حریم خصوصی | OmniRoute", + "privacyMetadataDescription": "سیاست حفظ حریم خصوصی برای مسیریاب پروکسی API هوش مصنوعی OmniRoute.", + "termsMetadataTitle": "شرایط استفاده از خدمات | OmniRoute", + "termsMetadataDescription": "شرایط استفاده از خدمات برای مسیریاب پروکسی API هوش مصنوعی OmniRoute.", + "backToHome": "بازگشت به صفحهٔ اصلی", + "lastUpdated": "آخرین بهروزرسانی: {date}", + "policyLastUpdatedDate": "۱۳ فوریهٔ ۲۰۲۶", "listSeparator": "-", - "questionsVisit": "Questions? Visit our", - "githubRepository": "GitHub repository", - "privacySection1Title": "1. Local-First Architecture", - "privacySection1Text": "OmniRoute is designed as a local-first application. All data processing and storage occurs entirely on your machine. There is no centralized server collecting your information.", - "privacySection2Title": "2. Data We Store", - "privacyDataStoredIn": "The following data is stored locally in", - "privacyDataProviderConfigurationsDesc": "connection URLs, provider types, and priority settings", - "privacyDataApiKeysDesc": "encrypted and stored locally for authenticating with AI providers", - "privacyDataUsageLogsDesc": "request counts, token usage, model names, timestamps, and response times", - "privacyDataApplicationSettingsDesc": "theme preferences, routing strategy, and combo configurations", - "privacySection3Title": "3. No Telemetry", - "privacySection3Text": "OmniRoute does not collect telemetry, analytics, or crash reports. No data is sent to us or any third party. Your usage patterns, API calls, and configurations remain entirely private.", - "privacySection4Title": "4. Third-Party AI Providers", - "privacySection4Text": "When you make API calls through OmniRoute, your requests are forwarded to the AI providers you have configured (for example: OpenAI, Anthropic, Google). These providers have their own privacy policies that govern how they handle your data. Please review:", - "privacyOpenAiPolicy": "OpenAI Privacy Policy", - "privacyAnthropicPolicy": "Anthropic Privacy Policy", - "privacyGooglePolicy": "Google Privacy Policy", - "privacySection5Title": "5. Cloud Sync (Optional)", - "privacySection5Text": "If you enable the optional cloud sync feature, provider configurations and API keys may be transmitted to a configured cloud endpoint. This feature is disabled by default and requires explicit opt-in.", - "privacySection6Title": "6. Logging", - "privacyLoggingIntro": "Request logs can be configured through the dashboard settings. You can:", - "privacySection7Title": "7. Your Rights", - "privacySection7TextStart": "Since all data is stored locally, you have full control. You can delete your data at any time by removing the", - "privacySection7TextEnd": "directory or using the database backup and restore features in the dashboard.", - "termsSection1Title": "1. Overview", - "termsSection1Text": "OmniRoute is a local-first AI API proxy router that operates entirely on your machine. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "termsSection2Title": "2. User Responsibilities", - "termsResponsibilityApiKeys": "You are solely responsible for managing your own API keys and credentials for third-party AI providers (OpenAI, Anthropic, Google, etc.).", - "termsResponsibilityCompliance": "You must comply with the terms of service of each AI provider whose API you access through OmniRoute.", - "termsResponsibilitySecurity": "You are responsible for the security of your local OmniRoute installation, including setting a password and restricting network access.", - "termsSection3Title": "3. How It Works", - "termsSection3Text": "OmniRoute acts as an intermediary proxy. API calls sent to OmniRoute are translated and forwarded to your configured AI providers. OmniRoute does not modify the content of your requests or responses beyond the necessary protocol translation.", - "termsSection4Title": "4. Data Handling", - "termsDataStoredLocally": "All data is stored locally on your machine in a SQLite database.", - "termsNoTransmission": "OmniRoute does not transmit any data to external servers unless you explicitly enable cloud sync features.", - "termsDataLocationText": "Usage logs, API keys, and configuration are stored in", - "termsSection5Title": "5. Disclaimer", - "termsSection5Text": "OmniRoute is provided \"as is\" without warranty of any kind. We are not responsible for any costs incurred through API usage, service disruptions, or data loss. Always maintain backups of your configuration.", - "termsSection6Title": "6. Open Source", - "termsSection6Text": "OmniRoute is open-source software. You are free to inspect, modify, and distribute it under the terms of its license." + "questionsVisit": "سؤالی دارید؟ از", + "githubRepository": "مخزن GitHub ما دیدن کنید", + "privacySection1Title": "۱. معماری محلیمحور", + "privacySection1Text": "OmniRoute بهعنوان یک برنامهٔ محلیمحور طراحی شده است. تمام پردازش و ذخیرهسازی دادهها بهطور کامل روی دستگاه شما انجام میشود. هیچ سرور متمرکزی اطلاعات شما را جمعآوری نمیکند.", + "privacySection2Title": "۲. دادههایی که ذخیره میکنیم", + "privacyDataStoredIn": "دادههای زیر بهصورت محلی در این مکان ذخیره میشوند:", + "privacyDataProviderConfigurationsDesc": "نشانیهای اتصال، انواع ارائهدهندگان و تنظیمات اولویت", + "privacyDataApiKeysDesc": "برای احراز هویت نزد ارائهدهندگان هوش مصنوعی، رمزگذاری و بهصورت محلی ذخیره میشوند", + "privacyDataUsageLogsDesc": "تعداد درخواستها، میزان مصرف توکن، نام مدلها، مُهرهای زمانی و زمان پاسخدهی", + "privacyDataApplicationSettingsDesc": "ترجیحات پوسته، راهبرد مسیریابی و پیکربندیهای ترکیبی", + "privacySection3Title": "۳. بدون تلهمتری", + "privacySection3Text": "OmniRoute هیچگونه داده تلهمتری، تحلیلی یا گزارش خرابی جمعآوری نمیکند. هیچ دادهای برای ما یا اشخاص ثالث ارسال نمیشود. الگوهای استفاده، فراخوانیهای API و پیکربندیهای شما کاملاً خصوصی باقی میمانند.", + "privacySection4Title": "۴. ارائهدهندگان هوش مصنوعی شخص ثالث", + "privacySection4Text": "هنگامی که از طریق OmniRoute فراخوانی API انجام میدهید، درخواستهای شما به ارائهدهندگان هوش مصنوعی پیکربندیشده (برای مثال: OpenAI، Anthropic و Google) هدایت میشوند. نحوه رسیدگی این ارائهدهندگان به دادههای شما تابع سیاستهای حریم خصوصی خودشان است. لطفاً موارد زیر را بررسی کنید:", + "privacyOpenAiPolicy": "سیاست حریم خصوصی OpenAI", + "privacyAnthropicPolicy": "سیاست حریم خصوصی Anthropic", + "privacyGooglePolicy": "سیاست حریم خصوصی Google", + "privacySection5Title": "۵. همگامسازی ابری (اختیاری)", + "privacySection5Text": "اگر قابلیت اختیاری همگامسازی ابری را فعال کنید، ممکن است پیکربندی ارائهدهندگان و کلیدهای API به یک نقطه پایانی ابری پیکربندیشده ارسال شوند. این قابلیت بهطور پیشفرض غیرفعال است و فعالسازی آن به موافقت صریح شما نیاز دارد.", + "privacySection6Title": "۶. ثبت گزارش", + "privacyLoggingIntro": "گزارشهای درخواست را میتوان از طریق تنظیمات داشبورد پیکربندی کرد. شما میتوانید:", + "privacySection7Title": "۷. حقوق شما", + "privacySection7TextStart": "ازآنجاکه همه دادهها بهصورت محلی ذخیره میشوند، کنترل کامل آنها در اختیار شماست. میتوانید در هر زمان با حذف", + "privacySection7TextEnd": "دایرکتوری یا استفاده از قابلیتهای پشتیبانگیری و بازیابی پایگاه داده در داشبورد، دادههای خود را حذف کنید.", + "termsSection1Title": "۱. نمای کلی", + "termsSection1Text": "OmniRoute یک مسیریاب پراکسی محلیمحور برای API هوش مصنوعی است که کاملاً روی دستگاه شما اجرا میشود. این نرمافزار درخواستها را با قابلیت توازن بار، جایگزینی هنگام خرابی و ردیابی مصرف به چندین ارائهدهنده هوش مصنوعی هدایت میکند.", + "termsSection2Title": "۲. مسئولیتهای کاربر", + "termsResponsibilityApiKeys": "مسئولیت مدیریت کلیدهای API و اطلاعات ورود خود برای ارائهدهندگان هوش مصنوعی شخص ثالث (OpenAI، Anthropic، Google و غیره) صرفاً بر عهده شماست.", + "termsResponsibilityCompliance": "شما باید شرایط استفاده هر ارائهدهنده هوش مصنوعی را که از طریق OmniRoute به API آن دسترسی دارید، رعایت کنید.", + "termsResponsibilitySecurity": "مسئولیت امنیت نصب محلی OmniRoute، از جمله تعیین رمز عبور و محدود کردن دسترسی شبکه، بر عهده شماست.", + "termsSection3Title": "۳. نحوه عملکرد", + "termsSection3Text": "OmniRoute بهعنوان یک پراکسی واسط عمل میکند. فراخوانیهای API ارسالشده به OmniRoute ترجمه شده و به ارائهدهندگان هوش مصنوعی پیکربندیشده شما هدایت میشوند. OmniRoute محتوای درخواستها یا پاسخهای شما را فراتر از ترجمه ضروری پروتکل تغییر نمیدهد.", + "termsSection4Title": "۴. مدیریت دادهها", + "termsDataStoredLocally": "تمام دادهها بهصورت محلی در یک پایگاه داده SQLite روی دستگاه شما ذخیره میشوند.", + "termsNoTransmission": "OmniRoute هیچ دادهای را به سرورهای خارجی ارسال نمیکند، مگر اینکه قابلیتهای همگامسازی ابری را صراحتاً فعال کنید.", + "termsDataLocationText": "گزارشهای استفاده، کلیدهای API و پیکربندی در این مکان ذخیره میشوند:", + "termsSection5Title": "۵. سلب مسئولیت", + "termsSection5Text": "OmniRoute «همانگونه که هست» و بدون هیچگونه ضمانتی ارائه میشود. ما مسئول هزینههای ناشی از استفاده از API، اختلال در خدمات یا از دست رفتن دادهها نیستیم. همیشه از پیکربندی خود نسخه پشتیبان تهیه کنید.", + "termsSection6Title": "۶. متنباز", + "termsSection6Text": "OmniRoute نرمافزاری متنباز است. شما میتوانید طبق شرایط مجوز آن، کد را بررسی، اصلاح و توزیع کنید." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "عاملهای CLI", + "description": "عاملهای CLI نصبشده روی سیستم خود را شناسایی کنید. برای شناسایی خودکار، عاملهای سفارشی اضافه کنید.", + "refresh": "تازهسازی", + "installed": "نصبشده", + "notFound": "یافت نشد", + "builtIn": "داخلی", + "custom": "سفارشی", + "remove": "حذف", + "addCustomAgent": "افزودن عامل سفارشی", + "addCustomAgentDesc": "هر ابزار CLI را برای شناسایی ثبت کنید. هنگام تازهسازی، بهطور خودکار اسکن خواهد شد.", + "agentName": "نام عامل", + "binaryName": "نام فایل اجرایی", + "versionCommand": "فرمان نسخه", + "spawnArgs": "آرگومانهای اجرا", + "addAgent": "افزودن عامل", + "scanning": "در حال اسکن سیستم برای یافتن عاملهای CLI...", + "opencodeIntegration": "یکپارچهسازی OpenCode", + "opencodeDetected": "opencode {version} شناسایی شد", + "opencodeDesc": "یک فایل {configFile} آمادهبهاستفاده با نشانی پایه OmniRoute و همه مدلهای موجود ایجاد کنید — آن را در ریشه پروژه خود قرار دهید و {command} را اجرا کنید.", + "downloadConfig": "دانلود {file}", + "downloaded": "دانلود شد!", + "setupGuideTitle": "راهنمای راهاندازی", + "openCliTools": "باز کردن ابزارهای CLI", + "setupGuideDetectCliTitle": "شناسایی CLIهای نصبشده", + "setupGuideDetectCliDesc": "پس از نصب یا بهروزرسانی یک CLI، روی «تازهسازی» کلیک کنید تا OmniRoute فایلهای اجرایی و نسخهها را دوباره اسکن کند.", + "setupGuideCustomAgentTitle": "ثبت فایل اجرایی سفارشی", + "setupGuideCustomAgentDesc": "اگر CLI شما در فهرست داخلی نیست، از «افزودن عامل سفارشی» استفاده کنید. نام فایل اجرایی و فرمان نسخه را وارد کنید.", + "setupGuideCommandMissingTitle": "رفع خطای «command not found»", + "setupGuideCommandMissingDesc": "مطمئن شوید فرمان CLI در PATH وجود دارد، یک نشست ترمینال جدید باز کنید و «تازهسازی» را دوباره اجرا کنید.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10491,155 +10498,155 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "گفتوگوی ساده", + "streaming": "پخش جریانی", + "system-prompt": "پرامپت سیستم", + "thinking": "تفکر", + "tool-calling": "فراخوانی ابزار", + "multi-turn": "چندنوبتی", "vision": "چشم انداز", "schema-coercion": "طرحواره اجبار" }, "templateDescriptions": { - "simple-chat": "Basic chat template with system message", - "streaming": "Template for streaming responses", - "system-prompt": "Template with custom system prompt", - "thinking": "Template with reasoning/thinking budget", - "tool-calling": "Template for tool/function calling", - "multi-turn": "Template for multi-turn conversations", + "simple-chat": "الگوی پایه گفتوگو با پیام سیستم", + "streaming": "الگوی پاسخهای جریانی", + "system-prompt": "الگو با پرامپت سیستم سفارشی", + "thinking": "الگو با بودجه استدلال/تفکر", + "tool-calling": "الگوی فراخوانی ابزار/تابع", + "multi-turn": "الگوی مکالمات چندنوبتی", "vision": "قالب چند وجهی با ورودی تصویر", "schema-coercion": "اجرای طرحواره خروجی ساختاریافته / JSON" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful AI assistant.", - "userGreeting": "Hello! How can I help you today?" + "system": "شما یک دستیار هوش مصنوعی مفید هستید.", + "userGreeting": "سلام! امروز چطور میتوانم به شما کمک کنم؟" }, "streaming": { - "prompt": "Write a story about" + "prompt": "داستانی بنویس درباره" }, "systemPrompt": { - "question": "What is the meaning of life?", - "systemInstruction": "Provide a thoughtful, philosophical answer." + "question": "معنای زندگی چیست؟", + "systemInstruction": "پاسخی عمیق و فلسفی ارائه دهید." }, "thinking": { - "question": "Explain quantum computing" + "question": "رایانش کوانتومی را توضیح دهید" }, "toolCalling": { - "cityNameDescription": "The name of the city to get weather for", - "toolDescription": "Get current weather for a location", - "userWeather": "What's the weather in Tokyo?" + "cityNameDescription": "نام شهری که باید وضعیت آبوهوای آن دریافت شود", + "toolDescription": "دریافت وضعیت فعلی آبوهوا برای یک مکان", + "userWeather": "آبوهوای توکیو چطور است؟" }, "multiTurn": { - "system": "You are a helpful assistant.", - "assistantExample": "I'd be happy to help you with that.", - "userInitial": "I need help with", - "userFollowUp": "Can you elaborate on that?" + "system": "شما یک دستیار مفید هستید.", + "assistantExample": "خوشحال میشوم در این مورد به شما کمک کنم.", + "userInitial": "در این مورد به کمک نیاز دارم:", + "userFollowUp": "میتوانید در این مورد بیشتر توضیح دهید؟" } }, "cache": { - "title": "Cache Management", - "description": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "refresh": "Refresh", - "clearAll": "Clear Semantic Cache", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "title": "مدیریت حافظهٔ نهان", + "description": "کارایی حافظهٔ نهان پرامپت ارائهدهنده و استفادهٔ مجدد محلی از پاسخهای معنایی را پایش کنید.", + "refresh": "تازهسازی", + "clearAll": "پاکسازی حافظهٔ نهان معنایی", + "memoryEntries": "ورودیهای حافظه", + "memoryEntriesSub": "LRU درونحافظهای", + "dbEntries": "ورودیهای پایگاه داده", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "اصابتهای حافظهٔ نهان", + "cacheHitsSub": "از مجموع {total}", + "tokensSaved": "توکنهای صرفهجوییشده", + "tokensSavedSub": "برآوردشده بر اساس اصابتها", + "hitRate": "نرخ اصابت", + "performance": "عملکرد حافظهٔ نهان", + "autoRefresh": "هر {seconds} ثانیه بهطور خودکار تازهسازی میشود", + "hits": "اصابتها", + "misses": "عدم اصابتها", + "total": "مجموع", + "behavior": "رفتار حافظهٔ نهان", + "behaviorDeterministic": "فقط درخواستهای غیراستریمی با temperature=0 در حافظهٔ نهان ذخیره میشوند.", + "behaviorBypass": "با هدر {header} از آن عبور کنید.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", - "clearSuccess": "Semantic cache cleared. {count} entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "behaviorTtl": "TTL پیشفرض: ۳۰ دقیقه. از طریق {envVar} پیکربندی کنید.", + "idempotency": "لایهٔ همتوانی", + "activeDedupKeys": "کلیدهای فعال حذف تکرار", + "dedupWindow": "بازهٔ حذف تکرار", + "clearSuccess": "حافظهٔ نهان معنایی پاک شد. {count} ورودی حذف شد.", + "clearError": "پاکسازی حافظهٔ نهان ناموفق بود.", + "unavailable": "حافظهٔ نهان در دسترس نیست", + "unavailableDesc": "دریافت آمار حافظهٔ نهان ممکن نشد. مطمئن شوید سرور در حال اجرا است.", "loadingCacheAria": "در حال بارگذاری حافظه پنهان", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", - "cachedTokens": "Cache Read Tokens", - "cacheCreationTokens": "Cache Write Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", - "cachedTokensRead": "Read from cache", - "cacheCreationWrite": "Written to cache", - "cacheReuseRatio": "Cache Reuse Ratio", - "cacheReuseRatioDesc": "Cache read tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "promptCache": "حافظهٔ نهان پرامپت (سمت ارائهدهنده)", + "semanticCache": "حافظهٔ نهان معنایی", + "promptCacheSectionDesc": "فعالیت کش پرامپت در سمت ارائهدهنده را بر اساس تاریخچه مصرف نمایش میدهد تا ببینید کنترل کش کجا فعال است و چه میزان استفاده مجدد از ورودی دارید.", + "promptTrendDesc": "حجم درخواستهای ساعتی، پوشش کش و حجم خواندن از کش در ۲۴ ساعت گذشته.", + "cachedRequests": "درخواستهای کششده", + "cachedRequests24h": "درخواستهای کششده (۲۴ ساعت)", + "cacheHitRate": "نرخ اصابت کش", + "cacheRate": "نرخ کش", + "cacheRateDesc": "از کل درخواستها", + "cachedTokens": "توکنهای خواندهشده از کش", + "cacheCreationTokens": "توکنهای نوشتهشده در کش", + "cacheMetrics": "معیارهای کش پرامپت", + "withCacheControl": "با کنترل کش", + "cachedTokensRead": "خواندهشده از کش", + "cacheCreationWrite": "نوشتهشده در کش", + "cacheReuseRatio": "نسبت استفاده مجدد از کش", + "cacheReuseRatioDesc": "توکنهای خواندهشده از کش / کل توکنهای ورودی", + "estCostSaved": "صرفهجویی تخمینی در هزینه", + "lastUpdated": "آخرین بهروزرسانی", + "hoursTracked": "ساعت پایششده", + "busiestHour": "پرترافیکترین ساعت", + "peakCacheRate": "بیشترین نرخ کش", + "trendHour": "ساعت", + "activityVolume": "فعالیت", + "requestsShort": "درخواست", + "inputShort": "ورودی", + "cachedShort": "کششده", + "writeShort": "نوشتن", + "resetting": "در حال بازنشانی...", + "resetMetrics": "بازنشانی معیارها", + "byProvider": "تفکیک بر اساس ارائهدهنده", + "providerCacheRateDesc": "هر ارائهدهنده مجموع توکنهای ورودی، توکنهای خواندهشده از کش و توکنهای نوشتهشده در کش را نمایش میدهد تا بتوانید نسبت استفاده مجدد را با مقادیر خام بررسی کنید.", "provider": "Provider", - "requests": "Requests", - "inputTokens": "Total Input Tokens", - "cachedTokensCol": "Cache Read", - "cacheCreation": "Cache Write", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "requests": "درخواستها", + "inputTokens": "کل توکنهای ورودی", + "cachedTokensCol": "خواندن از کش", + "cacheCreation": "نوشتن در کش", + "trend24h": "روند کش (۲۴ ساعت)", + "peakCached": "بیشترین مقدار کششده", + "cached": "کششده", + "overview": "نمای کلی", "tableProvider": "ارائه‌دهنده", "tableModel": "مدل", "performanceTitle": "عملکرد", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "کش قطعی پاسخ خود OmniRoute. در صورت فعال بودن، درخواستهای تکراری و غیرجریانی با temperature=0 میتوانند بدون مراجعه به ارائهدهنده بالادستی، بهصورت محلی پاسخ داده شوند.", + "semanticCacheDisabledDesc": "کش معنایی غیرفعال است. تا زمانی که آن را دوباره در تنظیمات فعال نکنید، OmniRoute از استفاده مجدد محلی پاسخها صرفنظر میکند.", + "semanticEntriesDesc": "رکوردهای کش معنایی ماندگار که در حال حاضر در SQLite ذخیره شدهاند. فعالیت کش پرامپت در سمت ارائهدهنده در اینجا فهرست نمیشود.", + "searchEntries": "جستجوی ورودیها...", + "search": "جستجو", + "loading": "در حال بارگذاری...", + "entriesLoadError": "بارگذاری ورودیهای کش معنایی ناموفق بود.", + "noEntries": "هیچ ورودی کشی یافت نشد", + "noPromptCacheData": "هنوز هیچ فعالیتی برای کش پرامپت در سمت ارائهدهنده ثبت نشده است.", + "noTrendData": "در ۲۴ ساعت گذشته هیچ فعالیتی برای کش پرامپت ثبت نشده است.", + "signature": "امضا", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "ایجادشده", + "expires": "انقضا", + "actions": "عملیات", + "deduplicatedRequests": "درخواستهای تکراری حذفشده", + "savedCalls": "فراخوانیهای API صرفهجوییشده", + "totalProcessed": "مجموع درخواستهای پردازششده", + "disabled": "غیرفعال", + "totalRequests": "مجموع درخواستها", "reasoningCache": "بازپخش استدلال", "reasoningCacheDesc": "تفکر مدل را برای جریان های فراخوانی ابزار چند چرخشی حفظ می کند", "reasoningEntries": "ورودی های فعال", "reasoningReplayRate": "نرخ پخش مجدد", "reasoningReplays": "مجموع تکرارها", "reasoningCharsCached": "کاراکترهای ذخیره شده", - "reasoningMisses": "Cache Misses", + "reasoningMisses": "عدم تطابق با کش", "reasoningByProvider": "توسط ارائه دهنده", "reasoningByModel": "توسط مدل", "reasoningRecentEntries": "ورودی های اخیر", @@ -10669,56 +10676,56 @@ "minutesAgo": "{minutes}m پیش", "hoursAgo": "{hours}h پیش", "daysAgo": "{days}d پیش", - "entries": "Entries" + "entries": "ورودیها" }, "proxyConfigModal": { - "levelGlobal": "Global", - "levelProvider": "Provider", - "levelCombo": "Combo", - "levelKey": "Key", - "levelDirect": "Direct (no proxy)", - "titleGlobal": "Global Proxy Configuration", - "titleLevel": "{level} Proxy — {label}", - "loading": "Loading proxy configuration...", - "inheritingFrom": "Inheriting from", - "source": "Source", - "savedProxy": "Saved Proxy", - "custom": "Custom", - "selectSavedProxyPlaceholder": "Select saved proxy...", - "proxyType": "Proxy Type", - "host": "Host", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", - "port": "Port", - "authOptional": "Authentication (optional)", - "username": "Username", - "usernamePlaceholder": "Username", - "password": "Password", - "passwordPlaceholder": "Password", - "connected": "Connected", - "ip": "IP:", - "connectionFailed": "Connection failed", - "testConnection": "Test connection", - "clear": "Clear", - "cancel": "Cancel", - "save": "Save", - "errorSelectSavedProxy": "Please select a saved proxy first.", - "errorSelectProxyFirst": "Please select a proxy first.", - "errorProxyNotFound": "Selected proxy not found.", - "errorClearSavedProxy": "Failed to clear saved proxy", - "errorSaveProxy": "Failed to save proxy configuration", - "errorClearProxy": "Failed to clear proxy configuration", - "errorSocks5Hidden": "SOCKS5 is configured but hidden because NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false." + "levelGlobal": "سراسری", + "levelProvider": "ارائهدهنده", + "levelCombo": "ترکیب", + "levelKey": "کلید", + "levelDirect": "مستقیم (بدون پروکسی)", + "titleGlobal": "پیکربندی سراسری پروکسی", + "titleLevel": "پروکسی {level} — {label}", + "loading": "در حال بارگذاری پیکربندی پروکسی...", + "inheritingFrom": "ارثبری از", + "source": "منبع", + "savedProxy": "پروکسی ذخیرهشده", + "custom": "سفارشی", + "selectSavedProxyPlaceholder": "پروکسی ذخیرهشده را انتخاب کنید...", + "proxyType": "نوع پروکسی", + "host": "میزبان", + "hostPlaceholder": "1.2.3.4 یا proxy.example.com", + "port": "درگاه", + "authOptional": "احراز هویت (اختیاری)", + "username": "نام کاربری", + "usernamePlaceholder": "نام کاربری", + "password": "رمز عبور", + "passwordPlaceholder": "رمز عبور", + "connected": "متصل", + "ip": "آیپی:", + "connectionFailed": "اتصال ناموفق بود", + "testConnection": "آزمایش اتصال", + "clear": "پاک کردن", + "cancel": "لغو", + "save": "ذخیره", + "errorSelectSavedProxy": "لطفاً ابتدا یک پروکسی ذخیرهشده انتخاب کنید.", + "errorSelectProxyFirst": "لطفاً ابتدا یک پروکسی انتخاب کنید.", + "errorProxyNotFound": "پروکسی انتخابشده یافت نشد.", + "errorClearSavedProxy": "پاک کردن پروکسی ذخیرهشده ناموفق بود", + "errorSaveProxy": "ذخیره پیکربندی پروکسی ناموفق بود", + "errorClearProxy": "پاک کردن پیکربندی پروکسی ناموفق بود", + "errorSocks5Hidden": "SOCKS5 پیکربندی شده است، اما چون NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false است، پنهان شده است." }, "oauthModal": { - "title": "Connect {providerName}", - "waiting": "Waiting for authorization", - "completeAuthInPopup": "Complete authorization in popup.", + "title": "اتصال {providerName}", + "waiting": "در انتظار مجوز", + "completeAuthInPopup": "مجوزدهی را در پنجره بازشو تکمیل کنید.", "popupClosedHint": "If the popup closed without redirecting back (e.g. Qoder), this dialog will auto-switch to manual URL entry mode.", - "popupBlocked": "Popup blocked? Enter URL manually", - "deviceCodeVisitUrl": "Visit the URL below and enter code:", - "deviceCodeVerificationUrl": "Verification URL", - "deviceCodeYourCode": "Your code", - "deviceCodeWaiting": "Waiting for authorization...", + "popupBlocked": "پنجره بازشو مسدود شده است؟ URL را بهصورت دستی وارد کنید", + "deviceCodeVisitUrl": "از URL زیر بازدید کرده و کد را وارد کنید:", + "deviceCodeVerificationUrl": "URL تأیید", + "deviceCodeYourCode": "کد شما", + "deviceCodeWaiting": "در انتظار مجوز...", "googleLoopbackTitle": "ورود به حساب Google از این آدرس نمی‌تواند کامل شود", "googleLoopbackWhatHappens": "گوگل تنها زمانی کد تأیید را منتشر می‌کند که {redirectUri} از مرورگری که ورود به سیستم را تأیید می‌کند قابل دسترسی باشد. در اینجا، این آدرس به این کامپیوتر اشاره دارد، نه به سرور OmniRoute — بنابراین صفحه تأیید به جای هدایت، متوقف می‌شود و هیچ URL بازگشتی برای کپی وجود ندارد.", "googleLoopbackRecommended": "پیشنهاد شده — این را روی کامپیوتر خود اجرا کنید، سپس نتیجه را در زیر بچسبانید:", @@ -10726,7 +10733,7 @@ "googleLoopbackTunnelLabel": "یا پورت داشبورد را از طریق SSH فوروارد کنید و OmniRoute را از طریق تونل بارگذاری کنید:", "googleLoopbackTunnelNote": "{userPlaceholder} را با نام کاربری SSH خود جایگزین کنید، ترمینال را باز نگه دارید، سپس {localUrl} را باز کنید و دوباره از آنجا متصل شوید.", "googleLoopbackHeadlessAlt": "برای استفاده کاملاً بدون سر و صدا بدون هیچ بازگشتی محلی، اعتبارنامه‌های OAuth گوگل خود را پیکربندی کنید به همراه یک URL پایه عمومی.", - "remoteAccessInfo": "Remote access: Since you're accessing OmniRoute remotely, after authorization you'll see an error page (localhost not found). This is normal — just copy the full URL from your browser address bar and paste it below.", + "remoteAccessInfo": "دسترسی از راه دور: از آنجا که از راه دور به OmniRoute دسترسی دارید، پس از مجوزدهی یک صفحه خطا خواهید دید (localhost یافت نشد). این طبیعی است — کافی است URL کامل را از نوار آدرس مرورگرتان کپی کرده و در زیر جایگذاری کنید.", "loopbackMismatchTitle": "ورود از این آدرس نمی‌تواند کامل شود", "loopbackMismatchWhatHappened": "چه اتفاقی در حال وقوع است", "loopbackMismatchExplanation": "پس از اینکه شما ورود را تأیید کردید، {providerName} همیشه مرورگر را به {redirectUri} بازمی‌گرداند. آن آدرس به کامپیوتری که این مرورگر را اجرا می‌کند اشاره دارد، نه به سرور OmniRoute — بنابراین کد تأیید هرگز به OmniRoute نمی‌رسد و ارائه‌دهنده بدون نمایش خطا، ورود را ناموفق می‌کند.", @@ -10736,17 +10743,17 @@ "loopbackMismatchStep2": "در این مرورگر، OmniRoute را از طریق تونل دوباره باز کنید:", "loopbackMismatchStep3": "سپس {providerName} را دوباره از تب جدید متصل کنید. حالا callback به سرور می‌رسد و ورود به سیستم به طور عادی کامل می‌شود.", "loopbackMismatchAlternative": "دسترسی SSH ندارید؟ اگر این ارائه‌دهنده یک زبانه وارد کردن توکن ارائه می‌دهد، به جای آن با یک توکن متصل شوید — آن مسیر از یک بازگشت حلقه‌ای استفاده نمی‌کند.", - "step1OpenUrl": "Step 1: Open this URL in your browser", - "copy": "Copy", - "step2PasteCallback": "Step 2: Paste callback URL or authorization code here", - "step2Hint": "After authorization, paste the full callback URL. For Claude Code and Cline, you can also paste the authentication code directly, e.g. code#state.", - "connect": "Connect", - "cancel": "Cancel", - "success": "Connection successful!", - "successMessage": "Your {providerName} account has been connected.", - "done": "Done", - "error": "Connection failed", - "tryAgain": "Try again", + "step1OpenUrl": "مرحله ۱: این URL را در مرورگر خود باز کنید", + "copy": "کپی", + "step2PasteCallback": "مرحله ۲: URL بازگشتی یا کد مجوز را اینجا جایگذاری کنید", + "step2Hint": "پس از مجوزدهی، URL بازگشتی کامل را جایگذاری کنید. برای Claude Code و Cline، میتوانید کد احراز هویت را نیز مستقیماً جایگذاری کنید؛ برای مثال code#state.", + "connect": "اتصال", + "cancel": "لغو", + "success": "اتصال با موفقیت انجام شد!", + "successMessage": "حساب {providerName} شما متصل شد.", + "done": "تمام", + "error": "اتصال ناموفق بود", + "tryAgain": "تلاش مجدد", "errorSessionIncomplete": "نشست OAuth ناقص است (URI بازگشت یا تأییدکننده کد گم شده است). اتصال را دوباره راه‌اندازی کنید و دوباره تلاش کنید.", "errorExchangeFailed": "تبادل ناموفق بود", "errorGoogleRedirectMismatch": "redirect_uri_mismatch: اعتبارنامه‌های پیش‌فرض Google OAuth فقط بر روی localhost کار می‌کنند. برای استفاده از راه دور، اعتبارنامه‌های OAuth خود را از طریق متغیرهای محیطی پیکربندی کنید: ANTIGRAVITY_OAUTH_CLIENT_ID و ANTIGRAVITY_OAUTH_CLIENT_SECRET. بخش README را با عنوان 'OAuth on a Remote Server' مشاهده کنید.", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "کلید API موجود Devin را از یک جلسه تأیید شده Devin بچسبانید. در دسترس بودن صادرات کلید و مراحل آن بسته به نسخه و حساب Devin متفاوت است.", "devinPasteDescription": "کلید API WINDSURF خود را ارائه دهید (که از طریق `devin auth login` یا از طریق دستور \"Windsurf: Provide Auth Token\" در IDE Windsurf به دست آمده است).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "احراز هویت Grok Build در auth.json", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "کلید API / توکن", "saving": "در حال ذخیره‌سازی…", @@ -10785,107 +10792,107 @@ }, "cursorAuthModal": { "title": "Connect Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCursor": "Reading from Cursor IDE or cursor-agent", - "tokensAutoDetected": "Tokens successfully auto-detected from Cursor IDE!", + "tabLogin": "ورود با Cursor", + "tabImport": "وارد کردن توکن", + "loginDescription": "صفحه ورود Cursor را در مرورگر باز میکند. در Docker نیز کار میکند — ورود را در مرورگر میزبان خود تأیید کنید، سپس به اینجا بازگردید.", + "loginWithCursor": "ورود با Cursor", + "startingLogin": "در حال شروع…", + "waitingApproval": "در انتظار تأیید ورود به Cursor…", + "openUrlHint": "اگر مرورگر باز نشد:", + "openLoginLink": "باز کردن صفحه ورود", + "cancelLogin": "لغو ورود", + "autoDetecting": "در حال شناسایی خودکار توکنها...", + "readingFromCursor": "در حال خواندن از Cursor IDE یا cursor-agent", + "tokensAutoDetected": "توکنها با موفقیت بهصورت خودکار از Cursor IDE شناسایی شدند!", "cursorNotDetected": "Cursor IDE not detected. Please manually paste your token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "در Docker اجرا میکنید؟ بهتر است از «ورود با Cursor» استفاده کنید. وارد کردن خودکار از IDE و cursor-agent معمولاً درون کانتینر در دسترس نیستند. به docs/providers/CURSOR-DOCKER.md مراجعه کنید.", + "accessToken": "توکن دسترسی", + "refreshToken": "توکن نوسازی", + "refreshTokenPlaceholder": "اختیاری — نوسازی خودکار توکن را فعال میکند", "required": "*", - "accessTokenPlaceholder": "Access token will auto-populate...", - "machineId": "Machine ID", - "optional": "(optional)", - "machineIdPlaceholder": "Machine ID will auto-populate...", - "importing": "Importing...", - "importToken": "Import Token", - "cancel": "Cancel", - "errorAutoDetect": "Unable to auto-detect tokens", - "errorAutoDetectFailed": "Auto-detect tokens failed", - "errorEnterToken": "Please enter access token", - "errorImportFailed": "Import failed", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "accessTokenPlaceholder": "توکن دسترسی بهطور خودکار وارد میشود...", + "machineId": "شناسه دستگاه", + "optional": "(اختیاری)", + "machineIdPlaceholder": "شناسه دستگاه بهطور خودکار وارد میشود...", + "importing": "در حال وارد کردن...", + "importToken": "وارد کردن توکن", + "cancel": "لغو", + "errorAutoDetect": "شناسایی خودکار توکنها ممکن نشد", + "errorAutoDetectFailed": "شناسایی خودکار توکنها ناموفق بود", + "errorEnterToken": "لطفاً توکن دسترسی را وارد کنید", + "errorImportFailed": "وارد کردن ناموفق بود", + "errorLoginStart": "شروع ورود به Cursor ناموفق بود", + "errorLoginPoll": "ورود به Cursor ناموفق بود", + "errorLoginTimeout": "مهلت ورود به Cursor به پایان رسید — دوباره تلاش کنید" }, "pricingModal": { - "title": "Pricing Configuration", - "loading": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "ratesDescription": "All rates are in dollars per million tokens ($/1M tokens). Example: Input rate of 2.50 means $2.50 per 1,000,000 input tokens.", - "model": "Model", - "input": "Input", - "output": "Output", - "cached": "Cached", - "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "noPricingData": "No pricing data available", - "resetToDefaults": "Reset to defaults", - "cancel": "Cancel", - "saving": "Saving...", - "saveChanges": "Save changes", - "resetConfirm": "Reset all pricing to defaults? This cannot be undone.", - "errorSaveFailed": "Failed to save pricing", - "errorResetFailed": "Failed to reset pricing" + "title": "پیکربندی قیمتگذاری", + "loading": "در حال بارگیری دادههای قیمتگذاری...", + "pricingRatesFormat": "قالب نرخهای قیمتگذاری", + "ratesDescription": "همه نرخها بر حسب دلار بهازای هر یک میلیون توکن ($/1M tokens) هستند. مثال: نرخ ورودی 2.50 بهمعنای $2.50 برای هر 1,000,000 توکن ورودی است.", + "model": "مدل", + "input": "ورودی", + "output": "خروجی", + "cached": "ذخیرهشده در حافظه نهان", + "reasoning": "استدلال", + "cacheCreation": "ایجاد حافظه نهان", + "noPricingData": "هیچ دادهای برای قیمتگذاری موجود نیست", + "resetToDefaults": "بازنشانی به پیشفرضها", + "cancel": "لغو", + "saving": "در حال ذخیره...", + "saveChanges": "ذخیره تغییرات", + "resetConfirm": "همه قیمتها به مقادیر پیشفرض بازنشانی شوند؟ این عملیات قابل بازگشت نیست.", + "errorSaveFailed": "ذخیره قیمتگذاری ناموفق بود", + "errorResetFailed": "بازنشانی قیمتگذاری ناموفق بود" }, "proxyRegistry": { "selectAllProxies": "انتخاب همه پروکسی‌ها", "selectProxy": "انتخاب {name}", - "title": "Proxy Registry", - "description": "Store reusable proxies and track assignments.", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", - "loading": "Loading proxies...", - "noProxies": "No saved proxies yet.", - "tableName": "Name", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", - "tableHealth": "Health (24h)", - "tableUsage": "Usage", - "tableActions": "Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", - "modalCreateTitle": "Create Proxy", - "modalEditTitle": "Edit Proxy", - "labelName": "Name", - "labelType": "Type", + "title": "رجیستری پراکسی", + "description": "پراکسیهای قابل استفاده مجدد را ذخیره و تخصیصها را پیگیری کنید.", + "importLegacy": "وارد کردن دادههای قدیمی", + "bulkAssign": "تخصیص گروهی", + "addProxy": "افزودن پراکسی", + "loading": "در حال بارگذاری پراکسیها...", + "noProxies": "هنوز هیچ پراکسیای ذخیره نشده است.", + "tableName": "نام", + "tableEndpoint": "نقطه پایانی", + "tableStatus": "وضعیت", + "tableHealth": "سلامت (۲۴ ساعت)", + "tableUsage": "میزان استفاده", + "tableActions": "عملیات", + "test": "آزمایش", + "edit": "ویرایش", + "delete": "حذف", + "modalCreateTitle": "ایجاد پراکسی", + "modalEditTitle": "ویرایش پراکسی", + "labelName": "نام", + "labelType": "نوع", "labelFamily": "خانواده IP", "familyAuto": "خودکار (dual-stack)", "familyIpv4": "فقط IPv4", "familyIpv6": "فقط IPv6", "familyHint": "خانواده آدرس خروجی. حالت خودکار dual-stack را حفظ می‌کند؛ IPv4/IPv6 این پروکسی را به آن خانواده پین می‌کند (از نشت v4 در پروکسی‌های فقط IPv6 جلوگیری می‌کند).", - "labelHost": "Host", - "labelPort": "Port", - "labelUsername": "Username", - "labelPassword": "Password", - "labelRegion": "Region", - "labelStatus": "Status", - "labelNotes": "Notes", - "usernamePlaceholderEdit": "Leave blank to keep current username", - "passwordPlaceholderEdit": "Leave blank to keep current password", - "statusActive": "Active", - "statusInactive": "Inactive", - "cancel": "Cancel", - "save": "Save", - "bulkModalTitle": "Bulk Proxy Assignment", - "bulkLabelScope": "Scope", - "bulkLabelProxy": "Proxy", - "bulkClearAssignment": "(Clear assignment)", - "bulkLabelScopeIds": "Scope IDs (comma or newline separated)", + "labelHost": "میزبان", + "labelPort": "درگاه", + "labelUsername": "نام کاربری", + "labelPassword": "رمز عبور", + "labelRegion": "منطقه", + "labelStatus": "وضعیت", + "labelNotes": "یادداشتها", + "usernamePlaceholderEdit": "برای حفظ نام کاربری فعلی، این قسمت را خالی بگذارید", + "passwordPlaceholderEdit": "برای حفظ رمز عبور فعلی، این قسمت را خالی بگذارید", + "statusActive": "فعال", + "statusInactive": "غیرفعال", + "cancel": "لغو", + "save": "ذخیره", + "bulkModalTitle": "تخصیص گروهی پروکسی", + "bulkLabelScope": "دامنه", + "bulkLabelProxy": "پروکسی", + "bulkClearAssignment": "(پاک کردن تخصیص)", + "bulkLabelScopeIds": "شناسههای دامنه (جداشده با ویرگول یا خط جدید)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", - "bulkApply": "Apply", + "bulkApply": "اعمال", "labelScope": "محدوده", "labelProxy": "پروکسی", "scopeGlobal": "سراسری", @@ -10897,22 +10904,22 @@ "bulkImportErrorInvalidPort": "PORT نامعتبر (باید 1-65535 باشد)", "bulkImportErrorInvalidType": "TYPE نامعتبر (از http، https، یا socks5 استفاده کنید)", "bulkImportErrorInvalidStatus": "وضعیت نامعتبر (استفاده از فعال یا غیرفعال)", - "errorLoadFailed": "Failed to load proxy registry", - "errorNameHostRequired": "Name and host are required", - "errorSaveFailed": "Failed to save proxy", - "errorDeleteFailed": "Failed to delete proxy", - "errorForceDeleteConfirm": "This proxy is still assigned. Force delete and remove all assignments?", - "errorMigrateFailed": "Failed to migrate legacy proxy config", - "errorBulkFailed": "Failed to execute bulk assignment", + "errorLoadFailed": "بارگیری رجیستری پروکسی ناموفق بود", + "errorNameHostRequired": "نام و میزبان الزامی هستند", + "errorSaveFailed": "ذخیره پروکسی ناموفق بود", + "errorDeleteFailed": "حذف پروکسی ناموفق بود", + "errorForceDeleteConfirm": "این پروکسی هنوز تخصیص داده شده است. حذف اجباری انجام شود و همه تخصیصها پاک شوند؟", + "errorMigrateFailed": "انتقال پیکربندی قدیمی پروکسی ناموفق بود", + "errorBulkFailed": "اجرای تخصیص گروهی ناموفق بود", "success": "✓", "failure": "✗", - "failed": "Failed", - "successRate": "{rate}% success", - "avgLatency": "{latency}ms average", - "assignmentsCount": "{count} assignments", + "failed": "ناموفق", + "successRate": "{rate}٪ موفقیت", + "avgLatency": "میانگین {latency} میلیثانیه", + "assignmentsCount": "{count} تخصیص", "noData": "—", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} میلیثانیه", "testFailure": "✗ {error}", "repair": "ترمیم", "relayAuthMissing": "احراز هویت مفقود شده", @@ -10961,9 +10968,9 @@ "strategyLatency": "بهینه‌شده برای تاخیر", "poolMembersLabel": "اعضای استخر ({count})", "poolNoMembers": "هنوز هیچ پروکسی در این استخر وجود ندارد.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# خروجی} other {# خروجی}} استفادهشده توسط {connections, plural, one {# اتصال} other {# اتصال}} · حداکثر {max} روی یک خروجی · در {hours} ساعت گذشته", + "poolEgressObservationEmpty": "در {hours} ساعت گذشته هیچ ترافیکی مشاهده نشد", + "poolEgressObservationHint": "محاسبهشده از گزارش پراکسی در بازهٔ زمانی: آدرسهای IP خروجی متمایز مشاهدهشده برای اعضای این مخزن و اتصالهای OmniRoute که از آنها استفاده کردهاند. «روی یک خروجی» به معنای کل بازهٔ زمانی است، نه بهطور همزمان. قفل موقت 429 برای هر IP فقط اتصالهای همان خانوادهٔ ارائهدهنده را متوقف میکند.", "poolRemove": "حذف", "poolRemoveFailed": "حذف پروکسی از استخر ناموفق بود", "poolAddLabel": "افزودن یک پروکسی", @@ -10973,96 +10980,96 @@ "poolSaveFailed": "ذخیره تخصیص استخر ناموفق بود" }, "playground": { - "title": "Model Playground", - "description": "Test any model directly from the dashboard. Select provider, model, and endpoint type, then send a request to see the raw response.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", - "accountKey": "Account / Key", - "autoAccounts": "Auto ({count} accounts)", - "noAccounts": "No accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", - "attachImages": "Attach Images (Vision)", + "title": "محیط آزمایش مدل", + "description": "هر مدلی را مستقیماً از داشبورد آزمایش کنید. ارائهدهنده، مدل و نوع نقطه پایانی را انتخاب کنید، سپس درخواستی ارسال کنید تا پاسخ خام را ببینید.", + "endpoint": "نقطه پایانی", + "provider": "ارائهدهنده", + "model": "مدل", + "accountKey": "حساب / کلید", + "autoAccounts": "خودکار ({count} حساب)", + "noAccounts": "بدون حساب", + "send": "ارسال", + "cancel": "لغو", + "audioFile": "فایل صوتی", + "attachImages": "پیوست کردن تصاویر (Vision)", "multipartFormData": "multipart/form-data", - "upToImages": "Up to 4 images", - "selectAudioFile": "Select audio file for transcription (mp3, wav, m4a, ogg, flac…)", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", - "resetToDefault": "Reset to default", - "downloadAudio": "Download audio", - "copyText": "Copy text", - "transcriptionHint": "Transcription uses multipart/form-data. Upload the audio file above — the JSON below controls extra parameters (model, language).", - "imagesGenerated": "Generated {count} images", - "generatedImage": "Generated image {index}", - "save": "Save", + "upToImages": "حداکثر ۴ تصویر", + "selectAudioFile": "فایل صوتی را برای رونویسی انتخاب کنید (mp3, wav, m4a, ogg, flac…)", + "clearAll": "پاک کردن همه", + "request": "درخواست", + "response": "پاسخ", + "transcription": "رونویسی", + "copy": "کپی", + "resetToDefault": "بازنشانی به پیشفرض", + "downloadAudio": "دانلود صدا", + "copyText": "کپی متن", + "transcriptionHint": "رونویسی از multipart/form-data استفاده میکند. فایل صوتی را در بالا بارگذاری کنید — JSON زیر پارامترهای اضافی (مدل، زبان) را کنترل میکند.", + "imagesGenerated": "{count} تصویر تولید شد", + "generatedImage": "تصویر تولیدشده {index}", + "save": "ذخیره", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", + "chat": "تکمیلهای چت", + "responses": "پاسخها", "completions": "تکمیل‌ها", - "images": "Image generation", - "embeddings": "Embeddings", - "speech": "Text-to-speech", - "transcription": "Audio transcription", - "video": "Video generation", - "music": "Music generation", + "images": "تولید تصویر", + "embeddings": "تعبیهها", + "speech": "تبدیل متن به گفتار", + "transcription": "رونویسی صوتی", + "video": "تولید ویدئو", + "music": "تولید موسیقی", "moderations": "نظارت‌ها", - "rerank": "Rerank", - "search": "Web search", + "rerank": "رتبهبندی مجدد", + "search": "جستوجوی وب", "webFetch": "واکشی وب" }, "conversationalChat": "چت مکالمه", "clearChat": "پاک کردن چت", "typeMessagePlaceholder": "یک پیام تایپ کنید... (Shift+Enter برای خط جدید)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "گفتوگو", + "tabCompare": "مقایسه", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "ساخت", + "configPane": "پیکربندی", + "systemPrompt": "پرامپت سیستم", + "systemPromptPlaceholder": "شما یک دستیار مفید هستید.", + "modelPlaceholder": "برای مثال openai/gpt-4o", + "endpointLabel": "نقطه پایانی", + "parametersLabel": "پارامترها", + "collapseConfig": "جمع کردن پنل پیکربندی", + "expandConfig": "باز کردن پنل پیکربندی", + "temperature": "دما", + "maxTokens": "حداکثر توکنها", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "جریمه حضور", + "frequencyPenalty": "جریمه تکرار", "reasoningLabel": "استدلال", "thinking": "تفکر", "effort": "تلاش", "effortDefault": "پیش‌فرض", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "تصادفی (خالی بگذارید)", + "presetsLabel": "پیشتنظیمها", + "loadPreset": "بارگذاری پیشتنظیم", + "savePreset": "ذخیره پیشتنظیم", + "noPresets": "هیچ پیشتنظیمی وجود ندارد", + "presetNamePlaceholder": "نام پیشتنظیم", + "savingPreset": "در حال ذخیره…", + "nameRequired": "وارد کردن نام الزامی است", + "failedToSavePreset": "ذخیره پیشتنظیم ناموفق بود", + "improvePrompt": "بهبود پرامپت", + "improvingPrompt": "در حال بهبود…", + "improvePromptTitle": "پرامپت خود را با هوش مصنوعی بهبود دهید", + "setModelFirst": "ابتدا یک مدل تنظیم کنید", "setModelInConfigFirst": "ابتدا یک مدل را در پنل پیکربندی تنظیم کنید.", "improvePromptFailed": "بهبود پرامپت ناموفق بود.", "improvePromptAria": "بهبود پرامپت با استفاده از هوش مصنوعی", "confirmImprovePrompt": "تأیید بهبود پرامپت", "improvePromptDescription": "این کار پرامپت سیستم فعلی شما را به ارسال می‌کند تا نسخه بهبودیافته‌ای تولید شود.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "این کار از سهمیه مدل پیکربندیشده در Config مصرف میکند.", + "improveConfirm": "بهبود", + "exportCode": "خروجی گرفتن از کد", + "exportCodeTitle": "خروجی گرفتن از کد", "exportShort": "برون‌بری", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "هیچ وضعیت playground برای خروجی گرفتن موجود نیست.", "closeExportModal": "بستن پنجره برون‌بری", "close": "بستن", "exportRealKeyWarning": "هشدار امنیتی: برون‌بری مسدود شد — یک کلید API واقعی در خروجی شناسایی شد. لطفاً کلید API خود را بازنشانی کرده و دوباره تلاش کنید.", @@ -11071,13 +11078,13 @@ "copyLangCode": "کپی کد {language}", "loadingPresets": "در حال بارگذاری…", "loadPresetPlaceholder": "بارگذاری پیش‌تنظیم…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "کپی", + "copiedCode": "کپی شد!", + "addModel": "+ افزودن مدل", + "runAll": "اجرای همه", + "cancelAll": "لغو همه", + "maxColumnsReached": "حداکثر {max} ستون", + "modelPlaceholderCompare": "مدل (Cmd+K)…", "noModel": "بدون مدل", "statusLabel": "وضعیت: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "در انتظار پاسخ…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "برآورد سمت کاربر", + "tokensLabel": "توکنها", + "costLabel": "هزینه", + "costEstimated": "(تخمینی)", "ttftTitle": "زمان تا اولین توکن (تخمین سمت کلاینت)", "tpsTitle": "توکن در ثانیه (تخمین سمت کلاینت)", "tokenCountsTitle": "توکن‌های پرامپت ↑ / توکن‌های تکمیل ↓", "estimatedCostTitle": "هزینه تخمینی (دقت تضمین نمی‌شود)", - "toolsLabel": "Tools", + "toolsLabel": "ابزارها", "toolsCount": "ابزارها ({count})", - "addTool": "Add tool", + "addTool": "افزودن ابزار", "editTool": "ویرایش ابزار {name}", "removeTool": "حذف ابزار {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "نام تابع", "toolNameRequiredPlaceholder": "نام تابع *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "توضیحات (اختیاری)", "toolParamsLabel": "پارامترها (اسکیمای JSON)", "toolParamsJsonSchema": "اسکیمای JSON برای پارامترها", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "پارامترها باید JSON معتبر باشند", + "structuredOutputLabel": "خروجی ساختاریافته", + "enableJsonMode": "فعالسازی حالت JSON", + "disableJsonMode": "غیرفعالسازی حالت JSON", + "invalidJson": "JSON نامعتبر", "jsonMode": "حالت JSON", "jsonModeDescription": "اعمال اجباری response_format: json_schema", "schemaName": "نام اسکیما", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} ستون", "addModelToCompare": "افزودن یک ستون مدل برای مقایسه", "modelsSimultaneously": "حداکثر تا {max} مدل به‌طور هم‌زمان", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "در حال اجرا…", + "runLabel": "اجرا", + "enterToolResult": "نتیجه ابزار را وارد کنید…", "build": { "step1Label": "چه چیزی تست شود؟", "step2Label": "پیکربندی", @@ -11237,7 +11244,7 @@ "searchResultFallback": "نتیجه {number}", "noKeysFound": "هیچ کلید API یافت نشد. یکی در بخش کلیدها اضافه کنید.", "exampleLabel": "مثال", - "latency": "{ms}ms", + "latency": "{ms} میلیثانیه", "statsLine": "{ms}ms · {tokensIn} توکن ورودی / {tokensOut} توکن خروجی", "defaultKey": "(پیش‌فرض)", "clear": "پاک کردن", @@ -11250,73 +11257,73 @@ "stop": "توقف" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "در حال ضبط", + "paused": "متوقفشده", + "pipelineLogsOn": "گزارشهای پایپلاین روشن است", + "pipelineLogsOff": "گزارشهای پایپلاین خاموش است", + "updatingPipelineLogs": "در حال بهروزرسانی گزارشهای پایپلاین...", + "updatePipelineFailed": "بهروزرسانی گزارشگیری پایپلاین ناموفق بود", + "capturePipeline": "ثبت محتوای پایپلاین برای درخواستهای جدید", + "searchPlaceholder": "جستوجوی مدلها، ارائهدهندگان، حسابها، کلیدهای API، ترکیبها...", + "allProviders": "همه ارائهدهندگان", + "allModels": "همه مدلها", + "allAccounts": "همه حسابها", + "allApiKeys": "همه کلیدهای API", + "total": "مجموع", + "ok": "موفق", + "err": "خطا", + "combo": "ترکیب", + "keys": "کلیدها", + "shown": "نمایشدادهشده", + "sortNewest": "جدیدترین", + "sortOldest": "قدیمیترین", + "sortTokensDesc": "توکنها ↓", + "sortTokensAsc": "توکنها ↑", + "sortDurationDesc": "مدتزمان ↓", + "sortDurationAsc": "مدتزمان ↑", + "sortStatusDesc": "وضعیت ↓", + "sortStatusAsc": "وضعیت ↑", + "sortModelAsc": "مدل A-Z", + "sortModelDesc": "مدل Z-A", + "sortLogs": "مرتبسازی گزارشها", + "refresh": "تازهسازی", + "columnsLabel": "ستونها", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "فعال", + "semantic": "معنایی", + "upstream": "بالادستی", + "semanticCacheHit": "برخورد با کش معنایی (ارائهشده توسط OmniRoute)", + "upstreamResponse": "پاسخ ارائهدهنده بالادستی", + "noApiKey": "بدون کلید API", + "requestedRoutedTitle": "درخواستشده: {requested}، مسیریابیشده بهعنوان: {routed}", "statusFilters": { - "all": "All", - "error": "Error", - "success": "Success", - "combo": "Combo" + "all": "همه", + "error": "خطا", + "success": "موفق", + "combo": "ترکیب" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "وضعیت", + "cacheSource": "منبع کش", + "model": "مدل", + "requested": "درخواستشده", + "provider": "ارائهدهنده", + "protocol": "پروتکل درخواست", + "account": "حساب", + "apiKey": "کلید API", + "combo": "ترکیب", + "tokens": "توکنها", "compressed": "فشرده سازی", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "مدتزمان", + "time": "زمان", + "conversation": "گفتوگو", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "در حال بارگیری گزارشها...", + "noLogs": "هنوز گزارشی وجود ندارد. چند فراخوانی API انجام دهید تا آنها را اینجا ببینید.", + "noMatchingLogs": "هیچ گزارشی با فیلترهای فعلی مطابقت ندارد.", + "callLogsInfo": "گزارشهای فراخوانی همچنین بهصورت فایلهای JSON در {dataDir} ذخیره میشوند و بر اساس {retentionDays} و {maxEntries} چرخش مییابند.", "loadMore": "بارگذاری بیشتر", "loadingMore": "در حال بارگذاری بیشتر...", "correlationId": "شناسه همبستگی", @@ -11417,59 +11424,59 @@ "correlationId": "شناسه همبستگی", "correlationIdValue": "شناسه همبستگی: {id}", "detailedPayloadInfo": "ابتدا لاگ‌برداری دقیق را فعال کنید اگر می‌خواهید نمای بارگذاری چهار مرحله‌ای مشتری/تأمین‌کننده برای درخواست‌های جدید را مشاهده کنید.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "کپی همه", + "copiedAll": "همه کپی شدند" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "همه", + "filterErrors": "خطاها", + "filterSuccess": "موفق", + "filterTimeout": "مهلت به پایان رسید", + "colStatus": "وضعیت", + "colProxy": "پروکسی", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "نوع", + "colLevel": "سطح", + "colProvider": "ارائهدهنده", + "colTarget": "مقصد", + "colLatency": "تأخیر", + "colClientIp": "IP کلاینت", + "colTime": "زمان", + "recording": "در حال ضبط", + "paused": "متوقفشده", + "searchPlaceholder": "جستوجوی میزبان، ارائهدهنده، مقصد، IP...", + "allTypes": "همه انواع", + "allLevels": "همه سطوح", + "allProviders": "همه ارائهدهندگان", + "total": "مجموع", + "ok": "موفق", + "err": "خطا", + "timeoutShort": "پایان مهلت", + "direct": "مستقیم", + "newest": "جدیدترین", + "oldest": "قدیمیترین", + "latencyDesc": "تأخیر ↓", + "latencyAsc": "تأخیر ↑", + "refresh": "تازهسازی", + "columns": "ستونها", + "loadingProxyLogs": "در حال بارگذاری گزارشهای پروکسی...", + "noProxyLogs": "هنوز هیچ گزارش پروکسیای وجود ندارد. پروکسیها را پیکربندی و فراخوانیهای API را انجام دهید تا گزارشها را اینجا ببینید.", + "noMatchingLogs": "هیچ گزارشی با فیلترهای فعلی مطابقت ندارد.", + "tlsFingerprint": "اثر انگشت TLS مربوط به Chrome 124", "colPublicIp": "IP عمومی" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "گفتار", + "search": "جستوجو", + "images": "تصاویر", + "chat": "گفتوگو", + "music": "موسیقی", + "responses": "پاسخها", + "rerank": "رتبهبندی مجدد", + "video": "ویدئو", + "embeddings": "تعبیهها", + "transcription": "رونویسی" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "زمان اجرا", + "description": "پایشپذیری بلادرنگ — تابآوری سهلایه + نشستها + هشدارهای سهمیه", + "pause": "توقف موقت", + "resume": "ادامه", + "refreshNow": "اکنون تازهسازی شود", + "kpiSessions": "نشستها", + "kpiCircuits": "مدارها", + "kpiCooldowns": "دورههای انتظار", + "kpiLockouts": "قفلها", + "hintStickyBound": "{count} مورد با اتصال پایدار", + "hintRecovering": "{count} مورد در حال بازیابی", + "hintAllHealthy": "همه سالم هستند", + "hintOpen": "باز", + "hintConnsCooling": "اتصال در حال انتظار", + "hintModelsBlocked": "مدل مسدودشده", + "resilienceTitle": "تابآوری سهلایه", + "resilienceSubtitle": "منطبق با مدل تابآوری مستندشده", + "providersHealthy": "{percent}٪ از ارائهدهندگان سالم هستند", + "layer": "لایه {n}", + "layer1Title": "قطعکنندههای مدار ارائهدهندگان", + "layer1Desc": "توقف ترافیک به ارائهدهندگانی که در سطح بالادستی دچار خطا میشوند", + "layer2Title": "دورههای انتظار اتصال", + "layer2Desc": "نادیدهگرفتن یک حساب/کلید معیوب؛ سایر اتصالها همچنان سرویس میدهند", + "layer3Title": "قفلهای مدل", + "layer3Desc": "قفلهای محدودیت نرخ برای هر مدل؛ همان اتصال همچنان به مدلهای دیگر سرویس میدهد", + "badgeAffectedOf": "{affected} از {total} مورد تحت تأثیر", + "badgeCooling": "{count} مورد در حال انتظار", + "badgeLocked": "{count} مورد قفلشده", + "emptyCircuits": "هنوز هیچ قطعکننده مداری فعال نیست", + "emptyCooldowns": "هیچ دوره انتظار اتصالی فعال نیست", + "emptyLockouts": "هیچ قفل مدلی وجود ندارد", + "moreCooldowns": "‏+{count} دوره انتظار دیگر", + "moreLockouts": "‏+{count} قفل دیگر", + "feedTitle": "رویدادهای زنده", + "feedSubtitle": "آخرین {count} رویداد", + "feedFilterAll": "همه", + "feedFilterCircuits": "مدارها", + "feedFilterCooldowns": "دورههای انتظار", + "feedFilterLockouts": "قفلها", + "feedFilterSessions": "نشستها", + "feedFilterQuotas": "سهمیهها", + "feedClear": "پاک کردن", + "feedEmptyWaiting": "در انتظار رویدادها... (هر ۵ ثانیه بررسی میشود)", + "feedEmptyFiltered": "هیچ رویدادی با این فیلتر مطابقت ندارد", + "sessionsTitle": "نشستهای فعال", + "sessionsSubtitle": "اثر انگشت درخواستهای متصلشده بهصورت چسبنده (زنده)", + "sessionsActive": "{count} فعال", + "sessionsEmptyTitle": "هیچ نشست فعالی وجود ندارد", + "sessionsEmptyHint": "با عبور درخواستها از پروکسی، نشستها نمایش داده میشوند", + "tblSession": "نشست", + "tblAge": "سن", + "tblIdle": "زمان بیکاری", + "tblReqs": "درخواستها", + "tblBoundTo": "متصل به", + "topApiKeys": "کلیدهای API برتر", + "quotaMonitorsTitle": "پایشگرهای سهمیه", + "quotaMonitorsSubtitle": "وضعیت زنده سهمیه برای بازه هر حساب", + "openQuota": "باز کردن سهمیه", + "allQuotasHealthy": "همه سهمیهها در وضعیت مطلوب هستند", + "statusExhausted": "تمامشده", + "statusAlerting": "در حال هشدار", + "statusError": "خطا", + "moreSuffix": "‏+{count} مورد دیگر" }, "quotaShare": { "weightPercent": "وزن %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "اشتراکگذاری سهمیه", + "description": "اشتراکگذاری سهمیههای ارائهدهنده میان کلیدهای API با محدودیتهای درصدی", + "newPool": "استخر جدید", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "پیکربندی در localStorage ذخیره میشود (هنوز روی سرور ماندگار نشده است). اعمال سقف هر درخواست هنوز به خط لوله پروکسی متصل نشده است. این صفحه به شما امکان میدهد تقسیم سهمیه را طراحی و تجسم کنید؛ اعمال واقعی در نسخهای آینده با ماندگاری در DB و رهگیری فراخوانیهای بالادستی ارائه خواهد شد.", + "kpiActivePools": "استخرهای فعال", + "kpiKeysAllocated": "کلیدهای تخصیصیافته", + "kpiAvgUnallocated": "میانگین تخصیصنیافته", + "kpiProvidersWithQuota": "ارائهدهندگان دارای سهمیه", + "emptyTitle": "هیچ استخری پیکربندی نشده است", + "emptyDescription": "برای اختصاص کلیدهای API و اشتراکگذاری بازه سهمیه یک ارائهدهنده با تخصیصهای درصدی، یک استخر ایجاد کنید.", + "loading": "در حال بارگذاری…", + "removePool": "حذف استخر", + "removeConfirm": "این استخر حذف شود؟", + "pool": "استخر", + "used": "استفادهشده", + "allocationsCount": "تخصیصها ({count})", + "allocatedFree": "‏{allocated}٪ تخصیصیافته · {free}٪ آزاد", + "noAllocations": "هنوز هیچ کلیدی تخصیص داده نشده است", + "capLabel": "سقف {value}", + "notTrackedYet": "(هنوز ردیابی نشده است)", + "policy": "سیاست", "apiKeyColumn": "کلید API", "weightColumn": "وزن", "fairShareShort": "عادلانه", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "سختگیرانه", + "policySoft": "نرم", + "policyBurst": "جهشی", + "policyHardHint": "با اتمام سهمیه تخصیصی کلید، مسدود شود", + "policySoftHint": "سرریز مجاز باشد، فقط هشدار داده شود", + "policyBurstHint": "استفاده جهشی از مخزن آزاد مجاز باشد", + "editAllocations": "ویرایش تخصیصها", + "newPoolTitle": "مخزن سهمیه جدید", + "providerConnection": "اتصال ارائهدهنده (حساب)", + "selectConnection": "یک اتصال انتخاب کنید…", + "noEligibleConnections": "هیچ اتصالی دارای داده سهمیه نیست. ابتدا از /dashboard/quota بازخوانی کنید.", + "quotaWindow": "بازه سهمیه", + "selectWindow": "یک بازه انتخاب کنید…", + "alreadyUsedSuffix": "(قبلاً استفاده شده است)", + "windowReset": "بازنشانی", + "duplicatePoolError": "مخزنی برای این اتصال و بازه از قبل وجود دارد", + "cancel": "لغو", + "createPool": "ایجاد مخزن", + "editTitle": "ویرایش تخصیصها", + "noKeysAdded": "هیچ کلیدی تخصیص داده نشده است. در پایین یکی اضافه کنید.", + "totalLabel": "مجموع: {percent}%", + "totalExceeded": "⚠ از ۱۰۰٪ فراتر میرود", + "addKey": "+ افزودن کلید…", + "equalSplit": "تقسیم مساوی", + "save": "ذخیره تخصیصها", "betaPreviewLabel": "بتا - پیش نمایش UI.", "betaConfigSavedPrefix": "پیکربندی در آن ذخیره شده است", "betaConfigSavedSuffix": "(هنوز روی سرور باقی نمانده است). اجرای سقف هر درخواست هنوز به خط لوله پروکسی متصل نشده است. این صفحه به شما امکان می دهد تقسیم سهمیه را طراحی و تجسم کنید. اجرای واقعی در یک تکرار آینده با تداوم DB و رهگیری تماس بالادستی خواهد آمد.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "این گروه هنوز دارای استخر است — ابتدا آن‌ها را دوباره تخصیص دهید یا حذف کنید.", "ungroupedTitle": "گروه‌بندی‌نشده", "ungroupedHint": "این استخرها به هیچ گروه شناخته‌شده‌ای تخصیص داده نشده‌اند. یک استخر را ویرایش کنید تا آن را به یک گروه واقعی منتقل کنید.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "حذف این مخزن ممکن نبود.", + "dismiss": "بستن" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "افزونهها", + "description": "نصب و مدیریت افزونهها برای گسترش قابلیتهای OmniRoute", + "loading": "در حال بارگذاری افزونهها...", + "scanning": "در حال اسکن...", + "scanForPlugins": "اسکن افزونهها", + "noPlugins": "هیچ افزونهای نصب نشده است", + "noPluginsDescription": "پوشههای افزونه را در ~/.omniroute/plugins/ قرار دهید و روی «اسکن» کلیک کنید.", + "activate": "فعالسازی", + "deactivate": "غیرفعالسازی", + "uninstall": "حذف نصب", + "uninstallConfirm": "افزونه «{name}» حذف نصب شود؟", + "pluginScanComplete": "اسکن افزونهها تکمیل شد", + "pluginScanFailed": "اسکن افزونهها ناموفق بود", + "activated": "{name} فعال شد", + "deactivated": "{name} غیرفعال شد", + "activateFailed": "فعالسازی {name} ناموفق بود", + "deactivateFailed": "غیرفعالسازی {name} ناموفق بود", + "uninstalled": "{name} حذف نصب شد", + "uninstallFailed": "حذف نصب {name} ناموفق بود", + "configure": "پیکربندی: {name}", + "configurePlugin": "پیکربندی", + "noConfigSettings": "این افزونه هیچ تنظیم قابل پیکربندیای ندارد.", + "saving": "در حال ذخیره...", + "saveConfiguration": "ذخیره پیکربندی", + "configurationSaved": "پیکربندی ذخیره شد", + "saveConfigurationFailed": "ذخیره پیکربندی ناموفق بود", + "pluginNotFound": "افزونه یافت نشد", + "version": "نسخه", + "author": "نویسنده", + "description_label": "توضیحات", + "status": "وضعیت", + "enabled": "فعال", + "disabled": "غیرفعال", "installedTab": "نصب‌شده", "marketplaceTab": "بازارچه", "marketplaceUrlLabel": "نشانی اینترنتی سفارشی بازارچه", @@ -11729,7 +11736,7 @@ "verified": "تأییدشده", "install": "نصب", "installedFromMarketplace": "افزونه {name} نصب شد!", - "hooks": "Hooks" + "hooks": "هوکها" }, "quotaPlans": { "title": "طرح‌ها و سهمیه‌ها", @@ -12179,7 +12186,7 @@ "acp": { "title": "عامل‌های ACP", "phrase": "CLIهایی که OmniRoute به عنوان بک‌اند اجرا ایجاد می‌کند (جریان معکوس)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "بیشتر کاربران میتوانند این مورد را نادیده بگیرند — فقط زمانی از آن استفاده کنید که یک یکپارچهسازی به آن نیاز دارد.", "flow": "کلاینت → OmniRoute → ایجاد CLI (stdio/ACP) → پاسخ", "seeOther": "مشاهده →" } @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "وب‌هوک‌ها", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "نقاط پایانی webhook را ثبت، فهرست، آزمایش و حذف کنید. اشتراکهای رویداد (request.completed، request.failed، quota.exceeded و غیره) را پیکربندی کرده و تلاشهای مجدد برای تحویل را مدیریت کنید." }, "omni-mcp": { "name": "سرور MCP", @@ -12390,47 +12397,47 @@ "description": "نقاط پایانی استنتاج اصلی سازگار با OpenAI: تکمیل‌های چت، امبدینگ‌ها، تصاویر، صوتی (TTS/STT)، تعدیل‌ها، رتبه‌بندی مجدد و Responses API. سطح ادغام اولیه برای عامل‌های هوش مصنوعی." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: ارائه سرویس", "description": "شروع، توقف و راه‌اندازی مجدد سرور OmniRoute از طریق CLI. مدیریت حالت دیمون (daemon)، پیکربندی پورت، بازیابی خودکار، ادغام با سینی سیستم (system tray) و میانبر باز کردن داشبورد." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: سلامت", "description": "بررسی سلامت سرور، وضعیت کامپوننت‌ها و معیارهای زنده از طریق CLI. اجرای `health`، `health components` و `health watch` برای داشبورد بلادرنگ کلیدهای قطع جریان (circuit breakers) و وضعیت ارائه‌دهنده." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: ارائهدهندگان", "description": "مدیریت اتصالات ارائه‌دهنده از طریق CLI: فهرست کردن ارائه‌دهندگان موجود/پیکربندی‌شده، افزودن، آزمایش، آزمایش همه (test-all)، اعتبارسنجی، چرخش کلیدهای API و مشاهده معیارهای مربوط به هر ارائه‌دهنده." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: کلیدهای API", "description": "ایجاد، فهرست کردن، چرخش و ابطال کلیدهای API مربوط به OmniRoute از طریق CLI. مدیریت جریان‌های OAuth برای احراز هویت ارائه‌دهنده و بررسی محدوده‌ها و انقضای کلید." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: مدلها", "description": "پرس‌وجوی مدل‌های هوش مصنوعی موجود، فهرست کردن نام‌های مستعار مدل و مرور کاتالوگ کامل مدل‌ها از طریق CLI. فیلتر کردن بر اساس ارائه‌دهنده، جستجو بر اساس قابلیت و حل و فصل انواع نام مدل." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: گفتگو", "description": "ارسال تکمیل‌های چت، استریم پاسخ‌ها و شروع یک جلسه تعاملی REPL از طریق CLI. پشتیبانی از تمام ارائه‌دهندگان OmniRoute، مسیریابی ترکیبی (combo routing) و پیکربندی پرامپت سیستم." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: مسیریابی و ترکیبها", "description": "ایجاد، فهرست کردن، به‌روزرسانی و حذف ترکیب‌های مسیریابی (routing combos) از طریق CLI. آزمایش استراتژی‌های مسیریابی، بررسی معیارهای ترکیب و پیکربندی زنجیره‌های جایگزین (fallback) به صورت تعاملی." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: تابآوری و سهمیهها", "description": "بررسی و مدیریت وضعیت‌های کلید قطع جریان (circuit-breaker)، زمان‌های استراحت اتصال (cooldowns)، محدودیت‌های سهمیه و سطوح عقب‌نشینی (backoff) از طریق CLI. بازنشانی ارائه‌دهندگان متوقف‌شده و پیکربندی آستانه‌های تاب‌آوری." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: فشردهسازی", "description": "پیکربندی و آزمایش فشرده‌سازی پرامپت از طریق CLI. مدیریت فیلترهای RTK، قوانین Caveman، حالت‌های فشرده‌سازی انباشته و پیش‌نمایش خروجی فشرده‌سازی با پرامپت‌های واقعی." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: زمینهها و نشستها", "description": "مدیریت پیکربندی‌های مهندسی بافتار (context)، مجموعه‌های فیلتر RTK و جلسات گفتگو از طریق CLI. اعمال تنظیمات رله بافتار (context-relay) و بررسی پایپ‌لاین‌های بافتار فعال." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: هزینه و میزان استفاده", "description": "مشاهده تفکیک هزینه‌ها، میزان مصرف توکن و لاگ‌های تماس از طریق CLI. فیلتر کردن بر اساس ارائه‌دهنده، مدل یا محدوده تاریخ. خروجی گرفتن از گزارش‌های مصرف و بررسی هزینه‌های هر اتصال." }, "cli-mcp": { @@ -12589,14 +12596,14 @@ "typeApikey": "کلید API", "sortTypeFirst": "ابتدا آسان‌ترین‌ها", "sortTypeFirstHelp": "گروه‌بندی بر اساس میزان تلاش برای ثبت‌نام (بدون نیاز به ثبت‌نام ← ورود با OAuth ← کلید API)، با حفظ ترتیب کیفیت در هر گروه", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "ابتدا مطمئنترینها", + "sortByReliabilityHelp": "ارائهدهندگان را بر اساس سهم فراخوانیهای موفق در بازه انتخابشده مرتب کنید. ارائهدهندگانی که تعداد فراخوانیهایشان برای تعیین نرخ کافی نیست، با حفظ ترتیب امتیازشان در پایین ارائهدهندگان اندازهگیریشده قرار میگیرند.", "typeLegend": "بدون نیاز به ثبت‌نام = بدون نیاز به راه‌اندازی · ورود با OAuth = ورود با حساب کاربری خودتان · کلید API = استفاده از کلید خودتان یا طرح رایگان آن ارائه‌دهنده", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "قابلیت اطمینان", + "colReliabilityHelp": "سهم فراخوانیهایی که این ارائهدهنده طی ۲۴ ساعت گذشته واقعاً پاسخ داده است. خط تیره به این معناست که ترافیک ارائهشده برای تعیین نرخ کافی نبوده است.", + "reliabilitySample": "از {requests} فراخوانی در {hours} ساعت گذشته، {successes} مورد موفق بود", + "reliabilityTooFew": "فقط {requests} فراخوانی در {hours} ساعت گذشته — برای تعیین نرخ کافی نیست", + "reliabilityNoTraffic": "در ۲۴ ساعت گذشته هیچ فراخوانی ثبت نشده است" }, "discovery": { "title": "شناسایی ارائه‌دهندگان", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "حامی Radar", + "description": "خوراک زنده یک حامی OmniRoute Radar تأیید شد", + "criteria": "خوراک زنده و امضاشده یک حامی Radar را تأیید کنید." }, "first-token": { "name": "اولین توکن", @@ -12829,7 +12836,7 @@ "criteria": "رسیدن به ۱۰ نفر برتر در هر جدول رده‌بندی." }, "secret-badge": { - "name": "???", + "name": "؟؟؟", "description": "یک دستاورد پنهان در انتظار است...", "criteria": "دستاورد پنهان را کامل کنید تا این نشان نمایان شود." } @@ -12948,8 +12955,8 @@ "description": "اجازه دادن به چندین اتصال برای هر گره سازگاری." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "غیرفعالکردن بررسیهای پنجره زمینه", + "description": "بررسی محلی OmniRoute برای پنجره زمینه و حداکثر توکن ورودی را در درخواستهای مستقیم تکمدلی نادیده بگیرید. ارائهدهندگان بالادستی همچنان محدودیتهای واقعی خود را اعمال میکنند. فشردهسازی پرامپت و سقف توکن خروجی فعال باقی میمانند." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "حذف موارد خروجی فاز تفسیر داخلی از جریان‌های عبوری Responses API قبل از ارسال آن‌ها به کلاینت‌ها. این پرچم را غیرفعال کنید تا تفسیر خام بالادستی را دریافت کنید." @@ -12985,7 +12992,7 @@ "description": "اجازه دادن به بازیابی جریان برای درخواست مجدد پاسخ و پیوند زدن آن پس از اینکه بایت‌ها قبلاً به کلاینت رسیده‌اند." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "ادامهدادن در میانهٔ جریان را برای فراخوانی ابزار ایمن کنید: پس از ارسال فراخوانی ابزار (چه هنوز در حال اجرا باشد و چه پایان یافته باشد)، هرگز یک جریان قطعشده را از سر نگیرید و بهجای استفاده از کل بودجهٔ تلاش مجدد، پس از یک ادامهٔ خالی متوقف شوید." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "یک بار به یک اتصال هم‌خانواده منتقل شوید وقتی جریان پیش از ارسال هر فریم مفیدی بسته می‌شود و تلاش مجدد محدود روی همان اتصال تمام شده است. اگر اتصال هم‌خانواده قابل‌استفاده‌ای نباشد، خطای اصلی early-EOF برگردانده می‌شود. خاموش: early-EOF پس از تلاش مجدد نهایی می‌ماند." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "فعال‌سازی دسترسی به شبکه در محیط ایزوله مهارت‌ها." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "حلقه ابزار تحت مالکیت سرور", + "description": "فراخوانیهای غیراستریمی ابزار تحت مالکیت سرور را تا زمانی ادامه دهید که مدل پاسخی قابلاستفاده برای کلاینت برگرداند." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "منشأ Retry-After", + "description": "در پاسخهای تجمیعشدهٔ 429/503 مربوط به عدم دسترسپذیری، هنگامی که زمان مشخصی برای تلاش مجدد در آینده معلوم نیست، بهجای ارسال مقدار ساختگی 1s، Retry-After را حذف کنید، error.retry_after_provenance را اضافه کنید و در مسیرهای تخلیهٔ ترکیبی، راهنمای متنیِ تلاش مجدد را بخوانید." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "توقفهای زیرساختی با اولویت محافظتشده بهصورت 502", + "description": "هنگامی که یک مقصد اولویتدار با بازگشت صرفاً مبتنی بر سهمیه، به علتی که اثباتاً مربوط به سهمیه نیست ترکیب را متوقف میکند—یعنی قطعکنندهٔ مدار بازِ ارائهدهنده یا رد پیشبینانه بهدلیل تأخیر—بهجای 503، پاسخ 502 بدهید." } } }, @@ -13171,7 +13182,7 @@ "segmentHint": "هر بخش = یک استخر رایگان · حذف تکرار استخر، شمارش واقعی (بدون سقف‌های محدودیت نرخ کاذب).", "boost": "با یک‌بار شارژ ۱۰ دلاری OpenRouter، حدود ~{tokens} بیشتر در ماه آزاد کنید (۵۰ → ۱۰۰۰ درخواست/روز)", "uncapped": "دائماً رایگان، بدون سقف اعلام‌شده (دارای محدودیت نرخ) — دسترسی واقعی، بدون احتساب در عنوان اصلی:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "حدود {tokens} بیشتر در ماه، مشروط به بررسی هویت منطقهای (برای مثال، احراز هویت با نام واقعی در سرزمین اصلی چین) — سهمیهای واقعی که در رقم اصلی محاسبه نشده است:", "tosRestricted": "{count, plural, one {# مدل} other {# مدل}} دارای محدودیت ToS علامت‌گذاری شده‌اند — تصمیم با شماست", "provider": "ارائه‌دهنده", "model": "مدل", @@ -13270,80 +13281,80 @@ "viewFullHistory": "مشاهده تاریخچه کامل در GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "سیاستهای مسیریابی استدلال", + "apiKeyTitle": "مسیریابی استدلال برای این کلید API", + "subtitle": "مدلها و میزان تلاش استدلال را بدون نیاز به پشتیبانی کلاینت بازمسیریابی کنید. اگر هیچ قانونی مطابقت نداشته باشد، درخواستها بدون تغییر باقی میمانند.", + "loadError": "قوانین استدلال بارگیری نشدند.", + "saveError": "قانون نامعتبر است یا ذخیره نشد.", + "saved": "قانون استدلال ذخیره شد.", + "deleteConfirm": "این قانون استدلال حذف شود؟", + "deleteError": "قانون استدلال حذف نشد.", + "empty": "هیچ قانون استدلال منطبقی پیکربندی نشده است.", + "all": "همه", + "any": "هرکدام", + "enabled": "فعال", + "disabled": "غیرفعال", + "filterSearch": "جستوجوی قوانین", + "filterScope": "فیلتر بر اساس دامنه", + "filterStatus": "فیلتر بر اساس وضعیت", + "allModels": "همه مدلها", + "keepModel": "حفظ مدل", + "otherModel": "مدل دیگر", + "combo": "ترکیب", + "priorityShort": "اولویت {value}", + "toggleAria": "فعالکردن {name}", + "edit": "ویرایش", + "delete": "حذف", + "name": "نام", + "description": "توضیحات", + "scopeLabel": "دامنه", + "apiKey": "کلید API", + "sourceCombo": "ترکیب مبدأ", + "connection": "اتصال", + "sourceModel": "مدل مبدأ یا نویسه عام", + "sourceModelOptional": "خالی = همه مدلها", + "sourceModelExample": "مثلاً gpt-5*", + "sourceEffort": "میزان تلاش مبدأ", + "missing": "مشخص نشده", + "signalOnly": "سیگنال استدلالی غیردیسکریت", + "requestTags": "برچسبهای درخواست", + "requestTagsExample": "کدنویسی، داخلی", + "tagMode": "تطبیق برچسبها", + "effortMode": "حالت تلاش", + "targetEffort": "میزان تلاش مقصد", + "routingTarget": "مقصد مسیریابی", + "targetModel": "مدل مقصد", + "targetCombo": "ترکیب مقصد", + "budgetAction": "بودجه تفکر", + "budgetTokens": "توکنهای بودجه", + "priority": "اولویت", + "saveChanges": "ذخیره تغییرات", + "add": "افزودن قانون", + "cancel": "لغو", + "simulateTitle": "شبیهسازی قانون", + "model": "مدل", + "effort": "میزان تلاش", + "transport": "انتقال", + "simulate": "شبیهسازی بدون بالادست", + "extendedComboWarning": "Max/Ultra هنگام مسیریابی برای هر مقصد ترکیبی بهطور جداگانه اعتبارسنجی میشود.", + "extendedUnknownWarning": "برای بررسی پشتیبانی از Max/Ultra، یک مدل مقصد وارد کنید.", + "extendedUnsupportedWarning": "تنها مدلهای مناسب Codex GPT-5.6 بهعنوان مدلهای پشتیبانیکننده از Max/Ultra شناخته شدهاند. مدلهای سفارشی ناشناخته با یک هشدار از سوی سرور پذیرفته میشوند.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "سراسری", + "apiKey": "کلید API", + "combo": "ترکیب", + "model": "مدل", + "connection": "اتصال" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "ارثبری از کلاینت", + "default": "استفاده از پیشفرض", + "force": "اجباری" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "حفظ", + "remove": "حذف", + "set": "تنظیم مقدار ثابت" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "زنده (زمان واقعی)", "tierCommunity": "جامعه (تاخیر ۳۰ روزه)", "activateTitle": "فعال‌سازی رادار", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "دسترسی Community و دسترسی زنده را مقایسه کنید، ببینید نصب شما چه دادههایی را مبادله میکند و سپس نحوه فعالسازی Radar را انتخاب کنید.", + "accessScaleTitle": "پیش از فعالسازی، با دسترسی Radar آشنا شوید", + "accessScaleIntro": "Radar تا زمانی که خودتان فعالسازی را انتخاب نکنید، هیچ فعالیت شبکهای ندارد. پس از بررسی این قوانین، دسترسی Community را انتخاب کنید یا یک کلید شخصی حامی را فعال کنید.", + "accessCommunityRule": "Community — بدون نیاز به کلید: کاتالوگ کامل با ۳۰ روز تأخیر.", + "accessSingleUseRule": "ستارهدادن + دنبالکردن — پس از اینکه GitHub OAuth هر دو مورد را تأیید کند، حساب GitHub شما یکبار امکان خواندن کاتالوگ زنده را دریافت میکند؛ سپس دسترسی به Community بازمیگردد. این دسترسی یکباره را نمیتوان برای آن حساب دوباره صادر کرد.", + "accessContributorRule": "مشارکتکنندگان — PRهای ادغامشده، commitها و تعداد خطوط فقط ترتیب رتبهبندی هفتگی را تعیین میکنند. ۱۰ نفر برتر ۳۶۵ روز و رتبههای ۱۱ تا ۱۰۰، ۹۰ روز دسترسی دریافت میکنند؛ مشارکتکنندگان خارج از ۱۰۰ نفر برتر، صرفنظر از تعداد PR، هیچ دسترسیای دریافت نمیکنند. خروج از رتبهبندی هرگز مدت دسترسی اعطاشده قبلی را کاهش نمیدهد.", + "accessSupporterRule": "حامیان — خریدهای یکباره، بدون تمدید خودکار، دسترسی ۶ماهه، یکساله یا مادامالعمر اعطا میکنند. خریدها، کمکهای مالی، دورههای مشارکت و دسترسیهای اعطاشده دستی با هم جمع میشوند؛ دسترسی مادامالعمر همیشه اولویت دارد.", + "accessUseTitle": "استفاده شخصی، بازیابی و بررسی", + "accessInstallationRule": "مجوز شخصی — کلید را هر بار فقط روی یک نصب فعال استفاده کنید. OmniRoute از سختافزار اثر انگشت تهیه نمیکند. بازیابی، کلید گمشده را باطل و جایگزین میکند، بدون اینکه تاریخ انقضای آن بازنشانی شود.", + "accessAbuseRule": "بررسی سوءاستفاده — چهارمین IP متمایز در بازه ۲۴ساعته فقط یک پرچم برای بررسی دستی ایجاد میکند و هرگز بهطور خودکار کلیدی را مسدود یا باطل نمیکند.", + "accessOffersRule": "پیشنهادهای زنده بهصورت دستی گزینش میشوند و ممکن است تغییر کنند یا منقضی شوند.", + "privacyTitle": "دادههای مبادلهشده توسط Radar", + "privacyDownloadsRule": "دریافتها — نصب شما کاتالوگ و فراداده ارجاع را با امضای رمزنگاریشده دریافت میکند؛ یک کلید زنده معتبر، پیشنهادها و Intel امضاشده را نیز فعال میکند.", + "privacySendsRule": "ارسالها — همگامسازی سمت سرور، کلید حامی را بهعنوان توکن Bearer ارسال میکند و زیرساخت HTTPS، IP اتصال را دریافت میکند. حسابداری درخواستهای فید هیچیک از این مقادیر را بهشکل خام ذخیره نمیکند؛ فقط هش کلیدها، میزان استفاده تجمیعی و یک HMAC کوتاهشده از IP با چرخش روزانه برای بررسی سوءاستفاده نگهداری میشود.", + "privacyNeverRule": "مواردی که هرگز جمعآوری نمیشوند — پرامپتها، پاسخها، مکالمات، اطلاعات ورود ارائهدهندگان، ترافیک مدل، زمان فعالیت، تأخیر و پیکربندی محلی ارائهدهندگان هرگز به Radar ارسال نمیشوند.", + "activateButton": "فعالسازی Community", "activating": "در حال فعال‌سازی...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "از قبل کلید حامی دارید؟", + "keyInvalidFormatError": "قالب کلید نامعتبر است. کلید باید با \"omr_\" شروع شود و پس از آن ۴۰ نویسه هگز قرار گیرد.", + "activateWithKeyButton": "فعالسازی حامی", + "changeKeyButton": "تغییر کلید", + "claimSectionTitle": "هنوز کلید حامی ندارید؟", + "contributorButton": "من مشارکتکننده هستم", + "contributorHint": "GitHub OAuth رتبهبندی هفتگی فعلی را بررسی میکند: ۱۰ نفر برتر ۳۶۵ روز و رتبههای ۱۱ تا ۱۰۰، ۹۰ روز دریافت میکنند. تعداد PR بهتنهایی هرگز خارج از ۱۰۰ رتبه برتر دسترسی اعطا نمیکند.", + "supporterButton": "از پروژه حمایت کنید", + "supporterHint": "گزینههای یکباره ۶ماهه، ۱ساله و مادامالعمر تمدید خودکار ندارند؛ دورههای واجد شرایط با هم جمع میشوند و دسترسی مادامالعمر اولویت دارد.", "colProvider": "تأمین‌کننده", "colModel": "مدل", "colQuota": "سهمیه", + "colLimits": "محدودیتهای نرخ درخواست", + "trainsOnPrompts": "با پرامپتها آموزش میبیند", + "trainsOnPromptsHelp": "شرایط این ارائهدهنده بیان میکند که ممکن است از پرامپتهای ارسالی شما برای آموزش استفاده کند. مدلهای فاقد این نشان یا اعلام کردهاند که چنین کاری نمیکنند، یا آن را مستند نکردهاند — نبود چنین بیانی تضمین محسوب نمیشود.", + "limitsUnknownHelp": "محدودیتها فقط توسط خوراک Radar گزارش شدهاند؛ برای این مورد هیچ محدودیتی منتشر نشده است", + "contextUnknownHelp": "پنجره زمینه برای این مورد نامشخص است", + "capabilityUnknownHelp": "قابلیت توسط خوراک گزارش نشده است", "colContext": "زمینه", "colCapabilities": "قابلیت‌ها", "colTos": "ریسک شرایط خدمات", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "جدید", "setupGuide": "راهنمای راه‌اندازی", "disabledByFeed": "غیرفعال شده توسط فید رادار", "capTools": "ابزارها", "capVision": "بینش", "capThinking": "تفکر", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "کاتالوگ", + "freeCreditsTab": "اعتبار رایگان", + "freeCreditsSubtitle": "پیوندهای معرفی از ارائهدهندگان ردیابیشده توسط Radar — استفاده از آنها هیچ هزینه اضافی برای شما ندارد و به حمایت از OmniRoute کمک میکند.", + "fixedLinksEmpty": "هنوز هیچ پیوند معرفیای موجود نیست. برای بررسی بهروزرسانیها، Radar را همگامسازی کنید.", + "requiredActionLabel": "کاری که باید انجام دهید:", + "claimButton": "دریافت اعتبار", + "campaignsTitle": "کمپینهای زمانمحدود", + "campaignsEmpty": "در حال حاضر هیچ کمپین فعالی وجود ندارد — بعداً دوباره بررسی کنید.", + "campaignsUpsellCommunity": "کمپینهای زمانمحدود یک مزیت اضافی برای حامیان هستند. همه موارد موجود در پیوندهای ثابت این صفحه برای همگان رایگان باقی میمانند.", + "campaignsValidUntil": "معتبر تا {date}", + "colActions": "عملیات", + "localBadge": "محلی", + "editModel": "ویرایش", + "saveModel": "ذخیره", + "cancelEdit": "لغو", + "resetModel": "بازنشانی تغییرات محلی", + "hideModel": "پنهان کردن", + "restoreModel": "بازیابی", + "hiddenModelsTitle": "مدلهای پنهان", + "modelDisplayName": "نام نمایشی محلی", + "modelEnabled": "فعالشده بهصورت محلی", + "localStateSaveFailed": "ذخیره تنظیمات محلی Radar ناموفق بود", + "guidedCombos": "ترکیبهای هدایتشده", + "offers": "پیشنهادها", + "intel": "اطلاعات" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "ترکیبهای هدایتشده Radar", + "subtitle": "از مدلهای رایگان و معادلِ گزینششده توسط Radar، جایگزینهای پشتیبانِ اولویتبندیشده ایجاد کنید.", + "backToRadar": "بازگشت به Radar", + "loading": "در حال بارگذاری پیشنهادهای ترکیبی...", + "familyLabel": "خانواده مدل", + "modelsLabel": "ترتیب اولویت", + "strategyReason": "اولویت ابتدا از بزرگترین بودجه رایگان دورهای استفاده میکند، سپس در صورت نیاز به ارائهدهندگان فعال دیگر مراجعه میکند.", + "generateButton": "ایجاد ترکیب", + "generating": "در حال ایجاد...", + "alreadyCreated": "قبلاً ایجاد شده است", + "created": "ترکیب ایجاد شد", + "noSuggestions": "در حال حاضر هیچ خانواده مدل واجد شرایطی به دستکم دو ارائهدهنده اتصال فعال ندارد.", + "catalogRequired": "ابتدا کاتالوگ Radar را همگامسازی کنید تا خانوادههای مدل منتخب بارگیری شوند.", + "loadFailed": "بارگیری پیشنهادهای ترکیبی Radar ناموفق بود.", + "createFailed": "ایجاد ترکیب ناموفق بود. اتصالهای ارائهدهندگان خود را بررسی و دوباره تلاش کنید." }, "radarSetupPage": { "title": "راه‌اندازی تأمین‌کننده", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "تاب‌آوری اتصال", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "اتصالهای شما بهطور خودکار بازیابی میشوند", + "reassuranceDetail": "معمولاً نیازی به اقدامی نیست. OmniRoute پس از بروز خطا، اتصال را موقتاً در حالت استراحت قرار میدهد و سپس با ایمنی دوباره آن را امتحان میکند.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "درخواستها قابل ارسال هستند", + "coolingDown": "بهزودی دوباره تلاش میشود", + "lockedOut": "به توجه شما نیاز دارد" }, "table": { "status": "وضعیت", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "درخواست‌ها را قبل از ارسال رد کنید زمانی که مدل هدف قابلیت‌های مورد نیاز (بینایی، ابزارها، خروجی ساختاریافته، پنجره زمینه) را ندارد. از درخواست‌های مستقیم تک‌تأمین‌کننده که فیلتر سازگاری لایه ترکیبی را دور می‌زنند، محافظت می‌کند.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "برای درخواستهای مستقیم تکمدلی، بررسی محلی OmniRoute درباره پنجره زمینه و حداکثر توکنهای ورودی را نادیده بگیرید. ارائهدهندگان بالادستی همچنان محدودیتهای واقعی خود را اعمال میکنند. فشردهسازی پرامپت و سقف توکنهای خروجی فعال باقی میمانند.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "آمار جستوجو و جستوجوهای اخیر فقط ارائهدهندگانی را محاسبه میکنند که همچنان اتصال فعالی دارند (ارائهدهندگان بدون کلید مانند duckduckgo-free همیشه محاسبه میشوند). حالت خاموش، همه ردیفهای جستوجوی نگهداریشده دارای شناسه ارائهدهنده را حفظ میکند.", "publicSystem": { "notFound": { "title": "صفحه پیدا نشد", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "اطلاعات نگهداری", "service": "سرویس", "unknown": "ناشناخته", - "notAvailable": "n/a", + "notAvailable": "قابل اعمال نیست", "providersTracked": "تأمین‌کنندگان ردیابی‌شده", "circuitBreakerState": "وضعیت قطع‌کننده مدار ارائه‌دهنده", "lastUpdate": "آخرین به‌روزرسانی: {timestamp}", @@ -13853,7 +13864,7 @@ "authorizeImportant": "مهم: شما ابتدا باید در trae.ai در این مرورگر وارد شوید. صفحه تأیید فقط یک جلسه موجود را تأیید می‌کند — نمی‌تواند شما را وارد کند. اگر \"ورود ناموفق\" را مشاهده کردید، روی \"باز کردن solo.trae.ai\" کلیک کنید، وارد شوید و سپس به اینجا برگردید.", "waitingForAuthorization": "در حال انتظار برای trae.ai…", "authorizeWithBrowser": "با مرورگر تأیید کنید", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai را باز کنید", "orPasteManually": "یا یک توکن را به صورت دستی بچسبانید", "manualInstructions": "وارد solo.trae.ai شوید، DevTools → Network را باز کنید، هر پیامی را ارسال کنید و JWT را از هدر درخواست Authorization: Cloud-IDE-JWT {tokenPlaceholder} کپی کنید. عمر JWT حدود ~14 روز است. فیلدهای هویتی اختیاری از common_params در همان بدنه درخواست می‌آیند.", "accessTokenLabel": "توکن دسترسی (Cloud-IDE-JWT)", @@ -14070,11 +14081,11 @@ "actionApprove": "تأیید طرح", "actionCancel": "لغو", "actionSeeInGraph": "مشاهده در نمودار", + "actionRepeat": "تکرار", "actionDone": "اقدام اعمال شد", "actionFailed": "اقدام ناموفق بود: {error}", "detailFailed": "بارگذاری جزئیات ناموفق بود: {error}", "mirroredInA2A": "بازتاب‌یافته در A2A", - "actionRepeat": "تکرار", "repeatConfirm": "برای تأیید دوباره کلیک کنید", "repeatDone": "اجرای جدید ایجاد شد", "repeatUnavailable": "ورودی اصلی در دسترس نیست" @@ -14088,57 +14099,57 @@ "networkError": "خطای شبکه — نمی‌توان تنظیمات نمایان‌سازی ارائه‌دهنده را به‌روزرسانی کرد" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "پیشنهادهای حامیان", + "subtitle": "تخفیفها، اعتبارها، دورههای آزمایشی و مزایای شرکای بررسیشده و رسمی از Radar.", + "backToRadar": "بازگشت به Radar", + "loading": "در حال بارگیری پیشنهادها...", + "refresh": "تازهسازی پیشنهادها", + "refreshing": "در حال تازهسازی...", + "loadFailed": "نتوانستیم پیشنهادها را تازهسازی کنیم. آخرین حافظه نهان محلی تأییدشده حفظ شده است.", + "empty": "در حال حاضر هیچ پیشنهاد فعالی موجود نیست.", + "keyRequiredTitle": "کلید حامی الزامی است", + "keyRequiredDescription": "پیشنهادها یکی از مزایای زنده Radar هستند. در صفحه Radar یک کلید حامی موجود اضافه کنید، وضعیت مشارکتکننده خود را تأیید کنید یا برای دریافت کلید از پروژه حمایت کنید.", + "contributorButton": "من مشارکتکننده هستم", + "supporterButton": "حمایت از پروژه", + "partnerBadge": "شریک", + "officialBadge": "رسمی", + "conditionsLabel": "شرایط:", + "validUntil": "معتبر تا {date}", + "noExpiry": "تاریخ انقضایی اعلام نشده است", + "openOffer": "مشاهده پیشنهاد", + "trialDays": "{days, plural, one {# روز} other {# روز}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "اطلاعات Radar", + "subtitle": "رتبهبندیهای ELO متعلق به Radar و تغییرات واقعی کاتالوگ.", + "backToRadar": "بازگشت به Radar", + "loading": "در حال بارگیری اطلاعات...", + "refresh": "تازهسازی اطلاعات", + "syncing": "در حال تازهسازی...", + "loadFailed": "نتوانستیم اطلاعات را تازهسازی کنیم. آخرین حافظهٔ پنهان محلی تأییدشده حفظ شده است.", + "empty": "هنوز هیچ نمای فوری تأییدشدهای از اطلاعات موجود نیست.", + "supporterBadge": "حامی Radar", + "methodology": "روششناسی", + "eloMethod": "ELO، مقدار اولیه {initial}، K={factor}", + "freshness": "تازگی کاتالوگ", + "ageDays": "{days, plural, one {# روز از عمر آن میگذرد} other {# روز از عمر آن میگذرد}}", + "trend": "روند کاتالوگ", + "modelDelta": "{current} مدل، +{added} / -{removed}", + "ranking": "رتبهبندی مدلها", + "noRankings": "هنوز هیچ مقایسهٔ تأییدشدهای موجود نیست.", + "model": "مدل", + "category": "دستهبندی", + "rating": "امتیاز", + "matches": "رقابتها", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "تازه", + "aging": "رو به کهنگی", + "stale": "قدیمی" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "در حال رشد", + "stable": "پایدار", + "shrinking": "در حال کوچکشدن" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "درخواست از حد مجاز پنجره زمینه ارائه‌دهنده فراتر می‌رود" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference یکی از دوستان متنباز OmniRoute است", + "description": "دروازهای با رتبهبندی هزینه که دهها مدل پیشرفته را پشت یک نقطهٔ پایانی سازگار با OpenAI بازفروشی میکند—هر درخواست را به ارزانترین ارائهدهندهٔ واجد شرایط هدایت میکند، بدون آنکه هرگز از قیمت فهرستشده فراتر رود.", + "cta": "دریافت کلید API", + "partnerLinkNote": "پیوند شریک", + "dismissAriaLabel": "بستن" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "تولید گونههای سطح تفکر (برای مثال -low، -medium و -high) را در کاتالوگ /v1/models غیرفعال کنید." } diff --git a/src/i18n/messages/fi.json b/src/i18n/messages/fi.json index 0c70a65d10..b5b5c054da 100644 --- a/src/i18n/messages/fi.json +++ b/src/i18n/messages/fi.json @@ -31,7 +31,7 @@ "active": "Aktiivinen", "inactive": "Ei-aktiivinen", "noData": "Tietoja ei ole saatavilla", - "nothingHere": "Nothing here yet", + "nothingHere": "Täällä ei ole vielä mitään", "configure": "Määritä", "manualConfig": "Manuaaliset asetukset", "manage": "Hallitse", @@ -47,7 +47,7 @@ "time": "Aika", "details": "Yksityiskohdat", "created": "Luotu", - "lastUsed": "Last Refreshed", + "lastUsed": "Päivitetty viimeksi", "loadMore": "Lataa lisää", "noResults": "Tuloksia ei löytynyt", "reloadPage": "Lataa sivu uudelleen", @@ -70,8 +70,8 @@ "note": "Huom", "free": "Ilmainen", "skipToContent": "Siirry sisältöön", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Palvelimessa on ongelmia. Jotkin ominaisuudet eivät ehkä ole käytettävissä.", + "maintenanceServerUnreachable": "Palvelimeen ei saada yhteyttä. Yhdistetään uudelleen...", "accept": "Hyväksy", "accountId": "Tilin tunnus", "alias": "Alias", @@ -98,9 +98,9 @@ "skill": "Taito", "sortBy": "Lajitteluperuste", "sortOrder": "Lajittelujärjestys", - "tab": "Tab", + "tab": "Sarkain", "text": "Teksti", - "textarea": "Textarea", + "textarea": "Tekstialue", "tool": "Työkalu", "toolId": "Työkalun tunnus", "web": "Web", @@ -120,7 +120,7 @@ "compatible": "Yhteensopiva", "chat-completions": "Chatin loppuun saattaminen", "oauth": "OAuth", - "auth_token": "Auth Token", + "auth_token": "Todennustunnus", "crypto": "Krypto", "hours": "Tuntia", "selfsigned": "Itse allekirjoitettu", @@ -131,7 +131,7 @@ "resolve_connection_id": "Ratkaise yhteystunnus", "scope_id": "Laajuustunnus", "scopeId": "Laajuustunnus", - "jwtSecret": "JWT Secret", + "jwtSecret": "JWT-salaisuus", "keytar": "Keytar", "better-sqlite3": "parempi-sqlite3", "undici": "undici", @@ -145,14 +145,14 @@ "social-github": "GitHub", "social-google": "Google", "TOOL_ALLOWLIST": "Työkalujen sallittu luettelo", - "TOOL_DENYLIST": "Tool Denylist", + "TOOL_DENYLIST": "Työkalujen estolista", "Failed to save pricing": "Hinnoittelun tallentaminen epäonnistui", "Failed to reset pricing": "Hinnoittelun nollaaminen epäonnistui", "apikey": "API-avain", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Siirry hallintapaneeliin", + "checkSystemStatus": "Tarkista järjestelmän tila", + "selectModel": "Valitse malli", "addModel": "Lisää malli", "effortNone": "Ei mitään", "effortLow": "Matala", @@ -164,10 +164,10 @@ "reasoningEffort": "Päättelypanos", "wireApi": "Wire API", "modelAliases": "Mallin aliakset", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Yhdistelmät", + "noModelsFound": "Malleja ei löytynyt", + "clear": "Tyhjennä", + "done": "Valmis", "selectAll": "Valitse kaikki", "unselectAll": "Poista valinnat", "visibleModels": "näkyvissä", @@ -184,527 +184,527 @@ "selectAllProviders": "Tarkista kaikki palveluntarjoajat", "clearProviderSelection": "Poista valinta tarjoajilta", "providersSelectedCount": "{count} palveluntarjoajaa tarkistettu", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Tapahtui virhe", + "comboDeleted": "Yhdistelmä poistettu", + "hide": "Piilota", + "creating": "Luodaan", + "comboCreated": "Yhdistelmä luotu", + "swapFormats": "Vaihda formaatit keskenään", + "daysAgo": "Päivää sitten", + "retries": "Uudelleenyritykset", + "errorDuringRestore": "Virhe palautuksen aikana", + "eventsAppearHint": "Tapahtumien näyttövihje", + "noLockouts": "Ei lukituksia", + "webSearchDesc": "Verkkohaun kuvaus", + "audioProvidersHeading": "Äänipalveluntarjoajat", "cloudAgentProviders": "Pilviagenttipalveluntarjoajat", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Minuuttia sitten", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "Automaattinen reaaliaikainen päivitys", + "webSearch": "Verkkohaku", + "anthropicPrefixPlaceholder": "Anthropic-etuliitteen paikkamerkki", + "addModelToCombo": "Lisää malli yhdistelmään", + "failedToLoad": "Lataaminen epäonnistui", + "categoryMedia": "Luokka: media", + "enableCloud": "Ota pilvipalvelu käyttöön", + "expirationBannerExpiringSoon": "Vanhenemisbanneri: vanhenee pian", + "retry": "Yritä uudelleen", + "embeddings": "Upotukset", + "errorCount": "Virheiden määrä", + "backupReasonManual": "Varmuuskopioinnin syy: manuaalinen", + "safeSearchModerate": "Safe Search: kohtalainen", + "activeLimiters": "Aktiiviset rajoittimet", + "a2aCardTitle": "A2A-kortin otsikko", + "cloudWorkerUnreachable": "Cloud Worker ei ole tavoitettavissa", + "testFailed": "Testi epäonnistui", + "compatibleBaseUrlHint": "Yhteensopivan perus-URL-osoitteen vihje", + "usageTracking": "Käytön seuranta", + "disableCloudTitle": "Poista pilvipalvelu käytöstä", + "noConnections": "Ei yhteyksiä", + "providerHealth": "Palveluntarjoajan tila", + "confirmDbImport": "Vahvista tietokannan tuonti", + "notAvailableSymbol": "Ei saatavilla -symboli", + "backupsAvailable": "Varmuuskopioita saatavilla", + "providerAuto": "Automaattinen palveluntarjoaja", + "newProviderNamePlaceholder": "Uuden palveluntarjoajan nimen paikkamerkki", + "a2aQuickStartStep2": "A2A-pika-aloituksen vaihe 2", + "ok": "OK", + "available": "Saatavilla", + "noBackupYet": "Ei vielä varmuuskopiota", + "more": "Lisää", + "noCompatibleYet": "Ei vielä yhteensopivia", + "multiProvider": "Useita palveluntarjoajia", + "repairEnvHint": "Ympäristön korjausvihje", + "disablingCloud": "Poistetaan pilvipalvelua käytöstä", + "testBench": "Testipenkki", + "valid": "Kelvollinen", + "cloudBenefitShare": "Pilvipalvelun hyöty: jakaminen", + "mcpCardTitle": "MCP-kortin otsikko", + "disableConfirm": "Vahvista käytöstä poistaminen", + "filters": "Suodattimet", + "expirationBannerExpiredDesc": "Vanhenemisbanneri: vanhentunut – kuvaus", + "saveComboDefaults": "Tallenna yhdistelmän oletusasetukset", + "cloudConnectedVerified": "Pilviyhteys muodostettu ja vahvistettu", + "uptime": "Käytettävyysaika", + "compatibleProdPlaceholder": "Yhteensopivan tuotantoympäristön paikkamerkki", + "fallbackChainsTitle": "Varaketjujen otsikko", + "oauthLabel": "OAuth-tunniste", + "a2aCardDescription": "A2A-kortin kuvaus", + "okShort": "OK", + "maintenance": "Ylläpito", + "formatConverter": "Muotomuunnin", + "zedImportNetworkError": "Zed-tuonnin verkkovirhe", + "apiKeyLabel": "API-avaimen tunniste", + "noModelsForProvider": "Ei malleja palveluntarjoajalle", + "mcpCardDescription": "MCP-kortin kuvaus", + "apiTypeLabel": "API-tyypin tunniste", + "configuredProvidersLabel": "Määritettyjen palveluntarjoajien tunniste", + "maxRetriesLabel": "Uudelleenyritysten enimmäismäärän tunniste", + "title": "Otsikko", + "output": "Tuloste", + "prefixHint": "Etuliitteen vihje", + "skipWizard": "Ohita ohjattu toiminto", + "failedCount": "Epäonnistuneiden määrä", + "confirmDbImportDesc": "Tietokantatuonnin vahvistuksen kuvaus", + "entries": "Merkinnät", + "until": "Asti", + "disableCombo": "Poista yhdistelmä käytöstä", + "liveMonitorDescriptionPrefix": "Reaaliaikaisen valvonnan kuvauksen etuliite", + "runningCount": "Käynnissä olevien määrä", + "noActiveConnectionsInGroup": "Ryhmässä ei ole aktiivisia yhteyksiä", + "savedSuccessfully": "Tallennettu onnistuneesti", + "systemStorage": "Järjestelmän tallennustila", + "videoDesc": "Videon kuvaus", + "maxResults": "Tulosten enimmäismäärä", + "timeRangeMonth": "Aikaväli: kuukausi", + "testSummary": "Testin yhteenveto", + "failedSetPassword": "Salasanan asettaminen epäonnistui", + "audio": "Ääni", + "restore": "Palauta", + "disableWarning": "Käytöstä poistamisen varoitus", + "moderationsDesc": "Moderointien kuvaus", + "providerHealthStatusAria": "Palveluntarjoajan kunnon tilan ARIA-tunniste", + "modelNamePlaceholder": "Mallin nimen paikkamerkki", + "mcpQuickStartStep2": "MCP-pika-aloituksen vaihe 2", + "quickStart": "Pika-aloitus", + "fullExportFailedWithError": "Täysi vienti epäonnistui virheen vuoksi", + "loadingBackups": "Ladataan varmuuskopioita", + "anthropicBaseUrlPlaceholder": "Anthropic-perus-URL-osoitteen paikkamerkki", + "description": "Kuvaus", + "noProviderFound": "Palveluntarjoajaa ei löytynyt", + "auto": "Automaattinen", + "protocolsDescription": "Protokollien kuvaus", + "cloudSessionNote": "Pilvi-istuntoa koskeva huomautus", + "advancedSettings": "Lisäasetukset", + "defaultStrategy": "Oletusstrategia", + "purgeExpiredLogs": "Poista vanhentuneet lokit", + "justNow": "Juuri nyt", + "providerTestFailed": "Palveluntarjoajan testi epäonnistui", + "openaiBaseUrlPlaceholder": "OpenAI-perus-URL-osoitteen paikkamerkki", + "image": "Kuva", + "failedCreateChain": "Ketjun luominen epäonnistui", + "importDatabase": "Tuo tietokanta", + "allDataLocal": "Kaikki tiedot ovat paikallisia", + "sectionTitle": "Osion otsikko", + "failedToggle": "Tilan vaihtaminen epäonnistui", + "editCombo": "Muokkaa yhdistelmää", + "testResults": "Testitulokset", + "searchQuery": "Hakukysely", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "Monista", + "createCombo": "Luo yhdistelmä", + "searchTypeWeb": "Hakutyyppi: verkko", + "addChain": "Lisää ketju", + "prefixLabel": "Etuliitteen tunniste", + "listModelsDesc": "Malliluettelon kuvaus", + "databaseSize": "Tietokannan koko", + "chainCreated": "Ketju luotu", + "providerTestTimeout": "Palveluntarjoajan testi aikakatkaistiin", + "routingStrategy": "Reititysstrategia", + "translateAction": "Käännä", + "exportFailed": "Vienti epäonnistui", + "connectedVerificationPending": "Yhdistetty, vahvistus odottaa", + "a2aQuickStartTitle": "A2A-pika-aloituksen otsikko", + "couldNotTest": "Testiä ei voitu suorittaa", + "testAllCompatible": "Testaa kaikki yhteensopivat", + "anthropicCompatibleName": "Anthropic-yhteensopivan nimi", + "disabling": "Poistetaan käytöstä", + "failedEnable": "Käyttöönotto epäonnistui", + "categoryUtility": "Apuohjelmaluokka", + "customUrlOptional": "Mukautettu URL (valinnainen)", + "localProviders": "Paikalliset palveluntarjoajat", + "comboNamePlaceholder": "Yhdistelmän nimen paikkamerkki", + "memoryRss": "Muistin RSS", + "disableProvider": "Poista palveluntarjoaja käytöstä", + "welcomeDesc": "Tervetulokuvauksen teksti", + "nameLabel": "Nimikentän tunniste", + "allOperational": "Kaikki toiminnassa", + "backupNow": "Varmuuskopioi nyt", + "providerMaxRetriesAria": "Palveluntarjoajan uudelleenyritysten enimmäismäärän ARIA-tunniste", + "textToSpeechDesc": "Tekstistä puheeksi -toiminnon kuvaus", + "machineId": "Laitetunnus", + "globalProxy": "Yleinen välityspalvelin", + "hitsMisses": "Osumat ja ohitukset", + "testDesc": "Testin kuvaus", + "chatDesc": "Keskustelun kuvaus", + "importSuccess": "Tuonti onnistui", + "chat": "Keskustelu", + "a2aQuickStartStep1": "A2A-pika-aloituksen vaihe 1", + "importFailed": "Tuonti epäonnistui", + "inputPlaceholder": "Syötteen paikkamerkki", + "providerModelsTitle": "Palveluntarjoajan mallit", + "lastBackup": "Viimeisin varmuuskopio", + "yourEndpoint": "Päätepisteesi", + "autoDisableThresholdDesc": "Automaattisen käytöstäpoiston kynnysarvon kuvaus", + "rerankDesc": "Uudelleenjärjestelyn kuvaus", + "modelsPathPlaceholder": "Mallien polun paikkamerkki", + "noCombosYet": "Ei vielä yhdistelmiä", + "connectedVerificationPendingWithError": "Yhdistetty, vahvistus odottaa virheen vuoksi", + "comboDefaultsGuideHint1": "Yhdistelmien oletusasetusten oppaan vihje 1", + "enableCloudTitle": "Ota pilvipalvelu käyttöön", + "configuredProvidersHint": "Määritettyjen palveluntarjoajien vihje", + "paused": "Keskeytetty", + "llmProviders": "LLM-palveluntarjoajat", + "enableCombo": "Ota yhdistelmä käyttöön", + "removeProviderOverrideAria": "Palveluntarjoajan ohituksen poiston ARIA-tunniste", + "nodeVersion": "Node-versio", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Vienti epäonnistui virheen vuoksi", + "proxyConfigured": "Välityspalvelin määritetty", + "concurrencyPerModel": "Samanaikaisuus mallia kohden", + "protocolTasksLabel": "Protokollatehtävien tunniste", + "oauthProviders": "OAuth-palveluntarjoajat", + "lockedCount": "Lukittujen määrä", + "deleteChainConfirm": "Vahvista ketjun poistaminen", + "recentTranslations": "Viimeisimmät käännökset", + "zedImportButton": "Zed-tuontipainike", + "responsesDesc": "Vastausten kuvaus", + "testedCount": "Testattujen määrä", + "providersCommaSeparatedPlaceholder": "Pilkuilla eroteltujen palveluntarjoajien paikkamerkki", + "signatureDefaults": "Allekirjoituksen oletusarvot", + "errorCreating": "Virhe luotaessa", + "timeRangeYear": "Aikaväli: vuosi", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Pilvipalvelu poistettu käytöstä", + "deleteConfirm": "Vahvista poistaminen", + "check": "Tarkista", + "safeSearch": "Turvallinen haku", + "protocolLastActivity": "Protokollan viimeisin toiminta", + "openMcpDashboard": "Avaa MCP-hallintapaneeli", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Keskustelupolun tunniste", + "retryDelay": "Uudelleenyrityksen viive", + "errorUpdating": "Virhe päivitettäessä", + "ideCliIntegrations": "IDE- ja CLI-integraatiot", + "imageGeneration": "Kuvien luonti", + "apiKeyRequired": "API-avain vaaditaan", + "resetAllTitle": "Palauta kaikki – otsikko", + "connectionError": "Yhteysvirhe", + "modelName": "Mallin nimi", + "apiKeyForCheck": "Tarkistukseen käytettävä API-avain", + "cloudRequestTimeout": "Pilvipyynnön aikakatkaisu", + "showConfiguredOnly": "Näytä vain määritetyt", "showFreeOnly": "Vain ilmainen", "addFirstProvider": "Lisää ensimmäinen palveluntarjoajasi", "addFirstProviderDesc": "Yhdistä AI-palveluntarjoaja aloittaaksesi pyyntöjen reitittämisen OmniRouten kautta. Voit käyttää ilmaisia ​​palveluntarjoajia, API-avaimia tai OAuth-tilejä.", "learnMore": "Lue lisää", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Sisällytä verkkotunnukset", + "promptCache": "Kehotevälimuisti", + "cloudConnected": "Pilvipalvelu yhdistetty", + "deleteChain": "Poista ketju", + "chatPathPlaceholder": "Keskustelupolun paikkamerkki", + "databasePath": "Tietokannan polku", + "usingLocalServer": "Käytetään paikallista palvelinta", + "globalComboConfig": "Yleinen yhdistelmäkokoonpano", + "backupFailed": "Varmuuskopiointi epäonnistui", + "tabProtocols": "Protokollat-välilehti", + "continue": "Jatka", + "categorySearch": "Luokkahaku", + "rateLimitStatus": "Nopeusrajoituksen tila", + "repairEnvSuccess": "Ympäristön korjaus onnistui", + "nameRequired": "Nimi vaaditaan", + "country": "Maa", + "trackMetricsDesc": "Seuraa metriikoiden kuvausta", + "durationSecondsShort": "Kesto sekunteina, lyhyt", + "formatConverterDescription": "Muotomuuntimen kuvaus", + "cloudBenefitAccess": "Pilvipalvelun käyttöetu", + "maxRetries": "Uudelleenyritysten enimmäismäärä", + "queueTimeout": "Jonon aikakatkaisu", "queueDepth": "Jonon syvyys", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Lisää palveluntarjoaja", + "realtime": "Reaaliaikainen", + "totalTranslations": "Käännöksiä yhteensä", + "protocolActiveStreamsLabel": "Protokollan aktiivisten virtojen tunniste", + "repairEnv": "Korjaa ympäristö", + "modelsCount": "Mallien määrä", + "viewBackups": "Näytä varmuuskopiot", + "responsesApi": "Responses API", + "copyComboName": "Kopioi yhdistelmän nimi", + "failures": "Epäonnistumiset", + "failedUpdate": "Päivitys epäonnistui", + "imageDesc": "Kuvan kuvaus", + "failedCreate": "Luonti epäonnistui", + "remainingOfLimit": "Rajasta jäljellä", + "protocolsTitle": "Protokollat", + "expirationBannerExpiringSoonDesc": "Pian vanhenevan voimassaolon ilmoituksen kuvaus", + "source": "Lähde", + "failed": "Epäonnistui", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "MCP-pika-aloituksen vaihe 1", + "runTest": "Suorita testi", + "loadingFallbackChains": "Varaketjuja ladataan", + "healthy": "Kunnossa", + "version": "Versio", + "saveBlockWeighted": "Tallenna painotettu lohko", + "zedImportNone": "Ei tuotavia Zed-kohteita", + "noBackupsYet": "Ei vielä varmuuskopioita", + "noGlobalProxy": "Ei globaalia välityspalvelinta", + "noModels": "Ei malleja", + "stickyLimit": "Kiinteä raja", + "passedCount": "Hyväksyttyjen määrä", + "zedImportFailed": "Zed-tuonti epäonnistui", + "saving": "Tallennetaan", + "testAll": "Testaa kaikki", + "globalProxyDesc": "Globaalin välityspalvelimen kuvaus", + "latencyP99": "Viive P99", + "connectingToCloud": "Yhdistetään pilveen", + "responses": "Vastaukset", + "errorDeleting": "Virhe poistettaessa", + "openaiPrefixPlaceholder": "Openai-etuliitteen paikkamerkki", + "enterPassword": "Anna salasana", + "openA2aDashboard": "Avaa A2A-hallintapaneeli", + "enableProvider": "Ota palveluntarjoaja käyttöön", + "modeTest": "Testitila", + "failedDeleteChain": "Ketjun poistaminen epäonnistui", + "providerDesc": "Palveluntarjoajan kuvaus", + "templateLoadHint": "Mallin latausvihje", + "lastFailure": "Viimeisin virhe", + "moveDown": "Siirrä alas", + "providerLabel": "Palveluntarjoajan tunniste", + "clearCacheFailed": "Välimuistin tyhjentäminen epäonnistui", + "imagesGenerations": "Kuvien generoinnit", + "repairEnvWorking": "Ympäristön korjaus käynnissä", + "millisecondsShort": "ms", + "globalLabel": "Globaali tunniste", + "failuresPlural": "Virheet", + "completionsLegacyDesc": "Vanhojen täydennysten kuvaus", + "searchProviders": "Hae palveluntarjoajia", + "chatPathHint": "Keskustelupolun vihje", + "defaultStrategyDesc": "Oletusstrategian kuvaus", + "latencyP95": "Viive P95", + "textToSpeech": "Tekstistä puheeksi", + "searchType": "Hakutyyppi", + "messages": "Viestit", + "aggregatorsGateways": "Koostajat ja yhdyskäytävät", + "comboStrategyAria": "Yhdistelmästrategian ARIA", + "input": "Syöte", + "testingConnection": "Yhteyttä testataan", + "excludeDomains": "Poissuljettavat verkkotunnukset", + "webCookieProviders": "Verkkoevästeiden tarjoajat", + "allTestsPassed": "Kaikki testit läpäisty", + "openaiCompatibleName": "OpenAI-yhteensopiva nimi", + "warningCostOptimizedPartialPricing": "Varoitus: kustannusoptimoitu osittainen hinnoittelu", + "comboDefaultsGuideTitle": "Yhdistelmän oletusarvojen oppaan otsikko", + "hoursAgo": "Tuntia sitten", + "notAvailable": "Ei saatavilla", + "skipAndContinue": "Ohita ja jatka", + "moderations": "Moderoinnit", + "proxyConfig": "Välityspalvelimen määritykset", + "upstreamProxyProviders": "Ylävirran välityspalveluntarjoajat", + "exportAll": "Vie kaikki", + "queuedCount": "Jonossa olevien määrä", + "resetAll": "Nollaa kaikki", + "noTranslations": "Ei käännöksiä", + "avgLatency": "Keskimääräinen viive", + "throttleStatus": "Rajoituksen tila", + "backupRetentionDesc": "Varmuuskopioiden säilytyksen kuvaus", + "noCBData": "Ei katkaisijadataa", + "chainDeleted": "Ketju poistettu", + "timeLeft": "Aikaa jäljellä", + "expirationBannerExpired": "Vanhentuneen voimassaolon banneri", + "language": "Kieli", + "invalidFileType": "Virheellinen tiedostotyyppi", + "monitoredProviders": "Valvotut palveluntarjoajat", + "errors": "Virheet", + "heap": "Keko", + "chatCompletions": "Keskustelun täydennykset", + "exampleTemplatesHint": "Esimerkkimallien vihje", + "retryDelayLabel": "Uudelleenyrityksen viiveen selite", + "audioTranscription": "Äänen litterointi", + "fallbackChainsDesc": "Varaketjujen kuvaus", + "exampleTemplates": "Esimerkkimallit", + "connectionsCount": "Yhteyksien määrä", + "modelsPathLabel": "Mallien polun selite", + "activeProvidersHint": "Aktiivisten palveluntarjoajien vihje", + "activeLockouts": "Aktiiviset lukitukset", + "invalid": "Virheellinen", + "skipPassword": "Ohita salasana", + "moveUp": "Siirrä ylöspäin", + "timeRange": "Aikaväli", + "stickyLimitDesc": "Pysyvän rajoituksen kuvaus", + "cloudBenefitEdge": "Pilven etu reunalla", + "custom": "Mukautettu", + "verifying": "Vahvistetaan", + "baseUrlLabel": "Perus-URL:n tunniste", + "setPassword": "Aseta salasana", + "safeSearchStrict": "Tiukka turvallinen haku", + "noChangesSinceBackup": "Ei muutoksia varmuuskopioinnin jälkeen", + "modelsPathHint": "Mallien polun vihje", + "audioTranscriptions": "Äänen litteroinnit", + "testCombo": "Testaa yhdistelmä", + "mcpQuickStartTitle": "Mcp-pika-aloituksen otsikko", + "comboUpdated": "Yhdistelmä päivitetty", + "weighted": "Painotettu", + "providers": "Palveluntarjoajat", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Ei varaketjuja -kuvaus", + "yesImport": "Kyllä, tuo", + "lockoutsAutoRefreshHint": "Lukitusten automaattisen päivityksen vihje", + "tabApis": "API-välilehti", + "sectionDescription": "Osion kuvaus", + "filter": "Suodata", + "purgeLogsFailed": "Lokien tyhjennys epäonnistui", + "latency": "Viive", + "testAllOAuth": "Testaa kaikki OAuth-yhteydet", + "mcpQuickStartStep3": "Mcp-pika-aloituksen vaihe 3", + "repairEnvFailed": "Ympäristön korjaus epäonnistui", + "zedImportHint": "Zed-tuonnin vihje", + "modelsAcrossEndpoints": "Mallit eri päätepisteissä", + "autoDisableBannedAccounts": "Poista estetyt tilit automaattisesti käytöstä", + "securityDesc": "Tietoturvan kuvaus", + "listModels": "Luettele mallit", + "backupRestore": "Varmuuskopiointi ja palautus", + "target": "Kohde", + "zedImportSuccess": "Zed-tuonti onnistui", + "lastHeaderUpdate": "Viimeisin otsikkopäivitys", + "categoryCore": "Ydinkategoria", + "noFallbackChains": "Ei varaketjuja", + "noSearchProviders": "Ei hakupalveluntarjoajia", + "autoBalance": "Automaattinen tasapainotus", + "noModelsYet": "Ei vielä malleja", + "signatureFamily": "Allekirjoitusperhe", + "externalApiCalls": "Ulkoiset API-kutsut", + "providerOverridesDesc": "Palveluntarjoajan ohitusten kuvaus", + "signatureTool": "Allekirjoitustyökalu", + "connectionFailed": "Yhteys epäonnistui", + "activeLimitersPlural": "Aktiiviset rajoittimet, monikko", + "doneDesc": "Valmis-kuvaus", + "down": "Ei käytettävissä", + "noDataYet": "Ei vielä tietoja", + "activeProviders": "Aktiiviset palveluntarjoajat", + "nameInvalid": "Virheellinen nimi", + "skip": "Ohita", + "createChain": "Luo ketju", + "audioSpeech": "Äänipuhe", + "cacheCleared": "Välimuisti tyhjennetty", + "searchTypeNews": "Hakutyyppi: uutiset", + "durationMillisecondsShort": "Keston millisekuntien lyhenne", + "addOpenAICompatible": "Lisää Open Ai -yhteensopiva", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "Jonossa", + "domainPlaceholder": "Verkkotunnuksen paikkamerkki", + "durationMinutesShort": "Keston minuuttien lyhenne", + "verifyingConnection": "Yhteyttä tarkistetaan", + "imageProviders": "Kuvapalveluntarjoajat", + "protocolToolsLabel": "Protokollatyökalujen tunniste", + "queryPlaceholder": "Kyselyn paikkamerkki", + "videoGeneration": "Videon luonti", + "timeRangeWeek": "Aikaväli: viikko", + "limitExhausted": "Raja saavutettu", + "failedDisable": "Käytöstä poistaminen epäonnistui", + "inMemoryNote": "Muistinsisäinen huomautus", + "compatibleHint": "Yhteensopivuusvihje", + "errorShort": "Lyhyt virheilmoitus", + "advancedHint": "Lisäasetusten vihje", + "restoreFailed": "Palautus epäonnistui", + "searchProvidersHeading": "Hakupalveluntarjoajien otsikko", + "comboName": "Yhdistelmän nimi", + "autoDisableDescription": "Automaattisen käytöstäpoiston kuvaus", + "embeddingsDesc": "Upotusten kuvaus", + "operational": "Toiminnassa", + "testAllApiKey": "Testaa kaikki API-avaimet", + "backupCreated": "Varmuuskopio luotu", + "errorDuringImport": "Virhe tuonnin aikana", + "comboDefaultsGuideHint2": "Yhdistelmän oletusasetusten oppaan vihje 2", + "connecting": "Yhdistetään", + "fillModelAndProviders": "Täytä malli ja palveluntarjoajat", + "syncing": "Synkronoidaan", + "resetConfirm": "Vahvista nollaus", + "trackMetrics": "Seuraa mittareita", + "successful": "Onnistui", + "recovering": "Palautetaan", + "autoDisableThreshold": "Automaattisen käytöstäpoiston raja-arvo", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Synkronoidaan tietoja", + "cloudBenefitPorts": "Pilvipalvelun porttien edut", + "compatibleProviders": "Yhteensopivat palveluntarjoajat", "freeTierProviders": "Ilmaiset tason tarjoajat", "freeTierLabel": "Ilmainen taso saatavilla", "freeTierProvidersDesc": "Palveluntarjoajat, joilla on ilmaisia tasoja – jotkut vaativat API-avaimen rekisteröitymisen, toiset eivät tarvitse kirjautumistietoja ollenkaan.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", - "gamificationAdmin": "Gamification Admin", + "clearCache": "Tyhjennä välimuisti", + "reqs": "Pyynnöt", + "addAnthropicCompatible": "Lisää Anthropic-yhteensopiva", + "apiKeyProviders": "API-avainpalveluntarjoajat", + "tabsAria": "Välilehtien ARIA", + "resetting": "Nollataan", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Varmuuskopioinnin syy ennen palautusta", + "disableCloud": "Poista pilvipalvelu käytöstä", + "newProviderNameAria": "Uuden palveluntarjoajan nimen ARIA", + "passwordsMismatch": "Salasanat eivät täsmää", + "a2aQuickStartStep3": "A2A-pika-aloituksen vaihe 3", + "liveMonitorDescriptionSuffix": "Reaaliaikaisen valvonnan kuvauksen jälkiliite", + "failedAddProvider": "Palveluntarjoajan lisääminen epäonnistui", + "addAtLeastOneProvider": "Lisää vähintään yksi palveluntarjoaja", + "reasonSeparator": "Syyn erotin", + "zedImporting": "Zed-tuonti käynnissä", + "confirmPasswordPlaceholder": "Vahvista salasana", + "whatYouGet": "Mitä saat", + "signatureSession": "Allekirjoitusistunto", + "errorCountNoCode": "Virheiden määrä, ei koodia", + "testing": "Testaus", + "providersCommaSeparated": "Palveluntarjoajat pilkuilla eroteltuina", + "exportDatabase": "Vie tietokanta", + "hitRate": "Osumaprosentti", + "completionsLegacy": "Täydennykset (vanha)", + "removeModel": "Poista malli", + "timeRangeDay": "Aikaväli: päivä", + "cloudRequestFailed": "Pilvipyyntö epäonnistui", + "updatedAt": "Päivitetty", + "monitoredProvidersHint": "Valvottujen palveluntarjoajien ohje", + "connectionSuccessful": "Yhteys onnistui", + "latencyP50": "Viive P50", + "logsDeleted": "Lokit poistettu", + "chatTester": "Keskustelutestaaja", + "safeSearchOff": "Safe Search pois käytöstä", + "nameHint": "Nimen ohje", + "debugToggle": "Virheenkorjauksen valitsin", + "embedding": "Upotus", + "issuesLabel": "Ongelmien tunniste", + "optionAny": "Mikä tahansa", + "maxNestingDepth": "Sisäkkäisyyden enimmäissyvyys", + "rerank": "Uudelleenjärjestä", + "checking": "Tarkistetaan", + "getStarted": "Aloita", + "restoreSuccess": "Palautus onnistui", + "issuesDetected": "Ongelmia havaittu", + "signatureCache": "Allekirjoitusvälimuisti", + "modelLockouts": "Mallien lukitukset", + "usingCloudProxy": "Käytetään pilvivälityspalvelinta", + "loadingHealth": "Ladataan kuntotietoja", + "providerOverrides": "Palveluntarjoajakohtaiset ohitukset", + "audioTranscriptionDesc": "Äänen litteroinnin kuvaus", + "learnedFromHeaders": "Opittu otsakkeista", + "totalRequests": "Pyyntöjä yhteensä", + "cloudUnstableNote": "Huomautus pilvipalvelun epävakaudesta", + "gamificationAdmin": "Pelillistämisen hallinta", "monitorAnomaliesAndHealth": "Tarkkaile poikkeavuuksia ja järjestelmän kuntoa", "flaggedAnomalies": "Ilmoitetut poikkeavuudet", "noAnomaliesDetected": "Ei havaittu poikkeavuuksia", "apiKey": "API-avain", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 h)", "zScore": "Z-pisteet", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Epäilyttävä", "tokensCommunityServers": "Yhteisön palvelimet", "tokensServerNamePlaceholder": "Palvelimen nimi", "tokensApiKeyPlaceholder": "API-avain", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Ladataan lisää…", "recommended": "Suositeltu", "understand": "Ymmärrän", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "Eräkäsittely", + "batchConceptSubtitle": "Käsittele tuhansia pyyntöjä asynkronisesti noin 50 % pienemmillä kustannuksilla (24 tunnin aikaikkuna). Ihanteellinen arviointeihin, luokitteluun ja upotuksiin.", + "batchConceptHowItWorks": "Miten se toimii", + "batchConceptBenefit50pct": "50 %:n alennus syöte- ja tulostunnisteista", + "batchConceptAsync24h": "Asynkroninen käsittely 24 tunnin valmistumisajalla", + "batchConceptUseCases": "Sopii parhaiten massaluokitteluun, arviointeihin ja upotuksiin", + "batchHeaderSubtitle": "Suorita useita pyyntöjä yhtenä työnä", + "batchStep1": "1 · Lähetä JSONL-tiedosto", + "batchStep1Desc": "Lisää pyynnöt", + "batchStep2": "2 · Luo erä", + "batchStep2Desc": "Suorita työ", + "batchStep3": "3 · Nouda tulokset", + "batchStep3Desc": "Lataa tuloste", + "filesConceptTitle": "Erätiedostot", + "filesConceptSubtitle": "Erien käyttämät JSONL-tiedostot: syötepyynnöt, tulokset ja virheet.", + "filesConceptInput": "Syöte — JSONL-tiedostosi, yksi pyyntö kullakin rivillä", + "filesConceptOutput": "Tuloste — valmistuneiden pyyntöjen tulokset", + "filesConceptError": "Virheet — epäonnistuneet pyynnöt", + "filesConceptRetention": "Säilytysaika: oletuksena 30 päivää (Anthropicilla 29 päivää)", + "wizardTitle": "Uusi erä", + "wizardClose": "Sulje", + "wizardNext": "Seuraava", + "wizardBack": "Takaisin", + "wizardCancel": "Peruuta", + "wizardCreate": "Luo erä", + "wizardCreating": "Luodaan…", + "wizardStep1Destination": "Kohde", + "wizardStep2Input": "Syöte", + "wizardStep3Validate": "Validoi", + "wizardStep4Cost": "Kustannukset ja luonti", + "wizardProviderLabel": "Palveluntarjoaja", + "wizardEndpointLabel": "Päätepiste", + "wizardModelLabel": "Malli", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (muunnamme sen)", + "wizardDropOrPick": "Pudota tiedosto tähän tai valitse se napsauttamalla", + "wizardCsvMappingTitle": "Yhdistä CSV-sarakkeet → pyynnön kenttiin", + "wizardCsvMappingAddField": "Lisää kenttä", "wizardCsvNoColumns": "CSV-otsikosta ei havaittu sarakkeita.", "wizardCsvIgnoreColumn": "— ohita —", "wizardCsvCustomIdMapped": "custom_id kohdistettu", @@ -846,114 +846,114 @@ "wizardCsvApplyMapping": "Käytä kohdistusta", "wizardCsvRowsParsed": "{count} riviä jäsennetty", "wizardCsvRowsSkipped": "{count} riviä ohitettu", - "wizardCsvRowError": "Row {row}: {reason}", - "wizardValidationOk": "All lines valid", - "wizardValidating": "Validating…", - "wizardValidationParseFailed": "Validation failed — could not parse content.", - "wizardValidationSummary": "{lines} lines · {ids} unique custom_ids", + "wizardCsvRowError": "Rivi {row}: {reason}", + "wizardValidationOk": "Kaikki rivit ovat kelvollisia", + "wizardValidating": "Validoidaan…", + "wizardValidationParseFailed": "Validointi epäonnistui — sisältöä ei voitu jäsentää.", + "wizardValidationSummary": "{lines} riviä · {ids} yksilöllistä custom_id-tunnistetta", "wizardValidationErrorCount": "{count, plural, one {# virhe} other {# virhettä}} löytyi", "wizardValidationDuplicateIds": "Havaittiin päällekkäisiä custom_ids-tunnisteita:", "wizardValidationFirstErrors": "Virheet (ensimmäiset {count}):", "wizardValidationLine": "Rivi {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Validointivirheet", + "wizardValidationPreview": "Esikatselu (ensimmäiset 5 pyyntöä)", + "wizardValidationSamplingNote": "Tiedosto on suuri — validoitu otannalla (ensimmäiset 1000 + viimeiset 100 riviä). Täysi validointi suoritetaan palvelimella.", + "wizardCostSync": "Synkronoinnin hinta", + "wizardCostBatch": "Eräajon hinta (-50 %)", + "wizardCostSavings": "Säästö", + "wizardCostEstimatedNotice": "Arvioitu hinta — todellinen laskutus voi poiketa.", + "wizardErrorUpload": "Tiedoston lähettäminen epäonnistui. Yritä uudelleen.", + "wizardErrorCreate": "Erän luominen epäonnistui. Yritä uudelleen.", + "wizardEmptyProviders": "Luo erä yhdistämällä eräajoja tukeva palveluntarjoaja (OpenAI, Anthropic tai Gemini).", + "uploadModalTitle": "Lähetä erätiedosto", + "uploadModalDropOrPick": "Pudota .jsonl-tiedosto tähän tai valitse se napsauttamalla", + "uploadModalUpload": "Lähetä", + "uploadModalCancel": "Peruuta", + "uploadModalError": "Lähetys epäonnistui. Yritä uudelleen.", + "uploadModalSuccess": "Lähetetty", + "uploadModalSizeLimit": "Enintään 512 Mt", + "batchListNewButton": "Uusi erä", + "batchListAutoRefresh": "Automaattinen päivitys 30 s välein", + "batchListCostColumn": "Hinta", + "batchActionCancel": "Peruuta", + "batchActionDownloadOutput": "Lataa tuloste", + "batchActionDownloadErrors": "Lataa virheet", + "batchActionRetry": "Yritä epäonnistuneita uudelleen", + "batchActionRetryConfirm": "Yritetäänkö {n} epäonnistunutta pyyntöä uudelleen? Lopullinen hinta riippuu käytettyjen tokenien määrästä.", + "expirationBadgeCritical": "Kriittinen", + "expirationBadgeWarning": "Pian", + "expirationBadgeNormal": "Odottaa", + "expirationBadgeExpired": "Vanhentunut", + "filesListUploadButton": "Lähetys", + "filesListUsedByColumn": "Käyttökohteet", + "filesListUsedByNone": "Ei mitään", + "filesListUsedByRoleInput": "syöte", + "filesListUsedByRoleOutput": "tuloste", + "filesListUsedByRoleError": "virhe", + "filesListSizeColumn": "Koko", + "batchListProgressPartial": "(osittainen)", + "batchListProviderColumn": "Palveluntarjoaja", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", - "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListProviderOther": "Muu", + "batchListTitle": "Erät", + "batchListCount": "{count} erää", + "batchListRemovingCompleted": "Poistetaan…", + "batchListRemoveCompleted": "Poisto valmis", + "batchListTableStatus": "Tila", + "batchListTableId": "Tunnus", + "batchListTableEndpoint": "Päätepiste", + "batchListTableModel": "Malli", + "batchListTableProgress": "Edistyminen", + "batchListTableCreated": "Luotu", + "batchListTableExpires": "Vanhenee", + "batchListLoading": "Ladataan…", + "batchListEmpty": "Eriä ei löytynyt", + "batchListValidating": "Vahvistetaan…", + "batchStatusAll": "Kaikki tilat", + "batchStatusInProgress": "Käynnissä", + "batchStatusValidating": "Vahvistetaan", + "batchStatusFinalizing": "Viimeistellään", + "batchStatusCompleted": "Valmis", + "batchStatusFailed": "Epäonnistunut", + "batchStatusCancelled": "Peruutettu", + "batchStatusCancelling": "Peruutetaan", + "batchStatusExpired": "Vanhentunut", + "batchStatusCompletedWithFailures": "valmis, mutta epäonnistumisia ilmeni", + "batchStatusInProgressWithFailures": "käynnissä (epäonnistumisia ilmennyt)", + "batchStatusFinalizingWithFailures": "viimeistellään (epäonnistumisia ilmennyt)", + "batchStatusCancelledWithFailures": "peruutettu, mutta epäonnistumisia ilmeni", + "batchStatusExpiredWithFailures": "vanhentunut (osittainen)", + "wizardCostEstimating": "Arvioidaan kustannuksia…", + "wizardCostRequests": "Pyynnöt", + "wizardCostInputTok": "syötetunnisteet", + "wizardCostOutputTok": "tulostunnisteet", + "wizardCostWindow": "Aikaikkuna", + "wizardDestinationSelectProvider": "Valitse palveluntarjoaja…", + "wizardDestinationSelectModel": "Valitse malli…", + "wizardDestinationConnectProvider": "Yhdistä palveluntarjoaja", + "batchListBatchCreated": "Erä {id} luotu — päivitetään luetteloa…", + "batchListBatchCreatedDismiss": "Sulje", + "batchListRefreshing": "Päivitetään…", + "batchListRefresh": "Päivitä", + "uploadFileModalRemove": "Poista", + "uploadFileModalUploading": "Ladataan…", + "wizardInputReading": "Luetaan tiedostoa…", + "wizardInputReady": "Valmis", + "wizardInputLargeFileLabel": "Suuri tiedosto — tarkistus tehdään otannalla", + "wizardInputCsvJsonlReady": "JSONL luotu — valmis tarkistettavaksi.", + "wizardInputLargeFileWarning": "Suuri tiedosto havaittu — tarkistus tehdään otannalla (ensimmäiset 5 Mt + viimeiset 100 kt). Täysi tarkistus tehdään palvelinpuolella.", + "wizardCostWindow24h": "24 tunnin valmistumisikkuna", + "wizardValidationFieldsOk": "pakolliset kentät ovat kelvollisia", + "filesListDelete": "Poista", + "filesListDownload": "Lataa", + "batchDetailActionCancel": "Peruuta erä", + "batchDetailActionRetry": "Yritä epäonnistuneita pyyntöjä uudelleen", + "batchDetailCancelling": "Peruutetaan…", + "batchDetailRetrying": "Valmistellaan uutta yritystä…", + "batchDetailCancelConfirm": "Peruutetaanko tämä erä? Käynnissä olevat pyynnöt pysäytetään.", + "batchActionCancelError": "Erän peruuttaminen epäonnistui. Yritä uudelleen.", + "batchActionRetryError": "Epäonnistuneiden pyyntöjen yrittäminen uudelleen epäonnistui. Yritä uudelleen.", + "batchConceptRetentionNote": "Tulos- ja virhetiedostoja säilytetään 30 päivää (Anthropic: 29 päivää)", "batchFilesSizeColumn": "Koko", "toggleNoAuthProvider": "Vaihda ei-todennuspalvelinta", "loadingModels": "Ladataan malleja…", @@ -988,21 +988,21 @@ "disabled": "Poistettu käytöstä", "featureFlagOmnirouteEmergencyFallbackDescription": "Reititä budjettinsa ylittäneet pyynnöt varalla olevalle ilmaiselle varatarjoajalle/-mallille.", "featureFlagArenaEloSyncEnabledDescription": "Ota käyttöön jaksottainen Arena AI -tulostaulukon ELO-synkronointi mallien älykkyysluokituksia varten.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Luo ja lisää keskusteluyhteenvedot, kun yhdistelmäreititys vaihtaa mallia. Poista käytöstä, jos haluat käsitellä mallinvaihdot toisistaan riippumatta ja estää taustalla tehtävät siirtopyynnöt kaikissa nykyisissä ja tulevissa yhdistelmissä.", "featureFlagExposeCcDiscoveryAliasesDescription": "Mainosta claude/<provider>/<model> peilid tunnuksia /v1/models, jotta Claude Code -portin mallin löytölistalla näkyvät ei-Claude-mallit. Varoitus: kaksinkertaistaa luettelo-merkinnät kaikille asiakkaille, kun se on otettu käyttöön globaalisti.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Pääkytkin no-think/<provider>/<model>-yhdyskäytäväaliaksille. Käytössä (oletus): /v1/models ilmoittaa ajattelemattoman version jokaisesta ehdot täyttävästä päättelykykyisestä Claude-mallista, ja pyynnössä lähetetty no-think/-tunnus ohjautuu takaisin todelliseen malliin siten, että päättely on estetty. Ei käytössä: versioita ei ilmoiteta, ja no-think/-tunnusta käsitellään kuten mitä tahansa muuta tuntematonta mallitunnusta. Mallikohtainen ModelSpec.noThinkingAlias-käyttöönotto tai -käytöstäpoisto on edelleen voimassa, kun tämä asetus on käytössä.", "featureFlagChatVirtualLanesEnabledDescription": "Ota käyttöön mukautuvat virtuaaliset sisäänottokaistat vuokraajaa (tenant) kohti palveluntarjoajien välitystä varten (#9654): yhden vuokraajan kuormapiikki ei enää aiheuta 503-virhettä toiselle. Ympäristömuuttuja OMNIROUTE_CHAT_VIRTUAL_LANES ohittaa tämän hallintapaneelin asetuksen; muutokset tulevat voimaan palvelimen uudelleenkäynnistyksessä.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Palveluntarjoajien koontinäyttösivut: näytä Ilmainen-merkki vain niiden signaalien perusteella, joita palveluntarjoaja noudattaa — tämä poistaa näyttönimeen perustuvan heuristiikan, muut kuin totuusarvoiset ilmaisuuskentät sekä :free-päätteet rekisteröidyiltä palveluntarjoajilta, joilla ei ole dokumentoitua ilmaistasoa. Pois käytöstä -asetus säilyttää aiemman merkkisäännön.", + "featureFlagProxySkipRecentlyFailedDescription": "Välityspalvelinpoolit ja opencoden tilikohtainen kierto estävät juuri epäonnistuneen välityspalvelimen (hylätty TCP-tarkistus tai sen kautta saatu 429-vastaus) tarjoamisen uudelleen prosessikohtaisen ajanjakson ajan. Ajanjakso kaksinkertaistuu jokaisen toistuvan epäonnistumisen myötä enimmäisrajaan asti. Välityspalvelimen tilaa ei kirjata; jos kaikki ehdokkaat on siirretty sivuun, valinta pysyy ennallaan. Oletusarvoisesti poissa käytöstä: valintajärjestys vastaa täsmälleen tavallista kiertoa.", + "featureFlagProxyPoolEgressObservationDescription": "Näytä hallintapaneelissa välityspalvelinpoolin kohdalla, kuinka monta havaittua lähtevän liikenteen IP-osoitetta sen jäsenet käyttivät viimeisten 24 tunnin aikana, kuinka monta yhteyttä käytti niitä ja mikä oli yhden IP-osoitteen takana havaittu suurin määrä. Vain luku -tieto, joka lasketaan välityspalvelinlokista eikä jota koskaan käytetä reititykseen. Oletusarvoisesti poissa käytöstä: poolieditori säilyy ennallaan ja havaintoreitti palauttaa arvon null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Salli välityspalvelinten kuntotarkistuksessa sellaisen tarkistuksen, jonka kohde hylkäsi (401/403/429: välityspalvelin välitti pyynnön, mutta kohde hylkäsi tämän lähtevän liikenteen IP-osoitteen), nollata välityspalvelimen peräkkäisten epäonnistumisten sarja onnistuneesti palvellun tarkistuksen tavoin. Oletusarvoisesti poissa käytöstä: hylkäys pysyy neutraalina eikä katkaise sarjaa. 5xx-vastaus pysyy kummassakin tapauksessa tuloksettomana, eikä hylkäys koskaan poista välityspalvelinta, poista sitä käytöstä tai aktivoi sitä uudelleen.", "sidebar": { "home": "Kotiin", "dashboard": "Kojelauta", "providers": "Palveluntarjoajat", "combos": "Yhdistelmät", "usage": "Käyttö", - "analytics": "Analytics", + "analytics": "Analytiikka", "costs": "Kustannukset", "health": "Terveys", "proxy": "Välityspalvelin", @@ -1012,11 +1012,11 @@ "settings": "Asetukset", "translator": "Kääntäjä", "playground": "Leikkipaikka", - "searchTools": "Search Tools", + "searchTools": "Hakutyökalut", "agents": "Agentit", "cloudAgents": "Pilviagentit", - "memory": "Memory", - "skills": "Skills", + "memory": "Muisti", + "skills": "Taidot", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", "chaosConfig": "Kaaostila", @@ -1024,12 +1024,12 @@ "issues": "Ongelmat", "endpoints": "Päätepisteet", "endpointsSubtitle": "AI-yhteytesi URL-osoitteet", - "apiManager": "API Keys", + "apiManager": "API-avaimet", "apiManagerSubtitle": "Hallinnoi API-avaimia ja käyttöoikeuksia", "embeddedServices": "Upotetut palvelut", "embeddedServicesSubtitle": "Hallitse paikallisia välityspalvelimia", "logs": "Lokit", - "webhooks": "Webhooks", + "webhooks": "Webhookit", "webhooksSubtitle": "Saat ilmoituksen tapahtumista", "logExport": "Lokien vienti", "logExportSubtitle": "Lähetä kutsulokit ulos", @@ -1069,50 +1069,50 @@ "cliToolsShort": "Työkalut", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Erätyöt", + "themeSystem": "Teemajärjestelmä", + "whitelabelingDesc": "White label -ominaisuuksien kuvaus", + "switchThemes": "Vaihda teemaa", + "themeAccentDesc": "Teeman korostusvärin kuvaus", + "uploadFavicon": "Lataa favicon", + "themeDark": "Tumma teema", + "customLogoDesc": "Mukautetun logon kuvaus", + "sidebarVisibilityToggle": "Sivupalkin näkyvyyden vaihto", + "themeAccent": "Teeman korostusväri", + "resetFavicon": "Palauta favicon", + "whitelabeling": "Brändin mukauttaminen", + "darkMode": "Tumma tila", + "uploadLogo": "Lataa logo", + "themeLight": "Vaalea teema", + "appName": "Sovelluksen nimi", + "appNameDesc": "Sovelluksen nimen kuvaus", + "resetLogo": "Palauta logo", + "customFavicon": "Mukautettu favicon", + "hideHealthLogs": "Piilota kuntolokit", + "customLogo": "Mukautettu logo", + "appearance": "Ulkoasu", + "themeSelectionAria": "Teeman valinnan ARIA-tunniste", + "themeCreate": "Luo teema", + "customFaviconDesc": "Mukautetun faviconin kuvaus", + "logoPreview": "Logon esikatselu", + "themeCustom": "Mukautettu teema", + "hideHealthLogsDesc": "Kuntolokien piilottamisen kuvaus", + "faviconPreview": "Faviconin esikatselu", + "changelog": "Muutosloki", + "contextSection": "Konteksti ja välimuisti", + "contextCaveman": "Luolamies", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Moottoriyhdistelmät", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Pakkausasetukset", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Yhdistelmästudio", "combosLiveSubtitle": "Reaaliaikainen reitityskaskadi", "compressionStudio": "Compression Studio", "compressionExclusions": "Poissulkemiset", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Reaaliaikainen moottorikaskadi", "compressionExclusionsSubtitle": "Per-malli/päätepiste ohitus", "chaosConfigSubtitle": "Monen mallin rinnakkaissuoritus", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Reititys", + "protocolsSection": "Protokollat", + "agentsAiSection": "Agentit ja tekoäly", + "cacheContextSection": "Välimuisti ja konteksti", + "analyticsSection": "Analytiikka", + "costsSection": "Kustannukset", + "monitoringSection": "Valvonta", + "auditSecuritySection": "Auditointi ja tietoturva", + "devtoolsSection": "Kehittäjätyökalut", + "configurationSection": "Määritykset", + "aiFeaturesSection": "AI-ominaisuudet", "mcp": "MCP", "a2a": "A2A", "plugins": "Liitännäiset", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "API-päätepisteet", + "batchFiles": "Tiedostot", + "analyticsEvals": "Arvioinnit", + "analyticsSearch": "Haku", + "analyticsUtilization": "Käyttöaste", + "analyticsComboHealth": "Yhdistelmien tila", + "analyticsCompression": "Pakkaus", + "costsBudget": "Budjetti", "costsFreeTiers": "Maksuttoman tason budjetti", "costsFreeTiersSubtitle": "Kuukausittaiset maksuttomat token-kiintiöt", "freeProviderRankings": "Maksuttomien tarjoajien sijoitukset", "freeProviderRankingsSubtitle": "Parhaat maksuttomat tarjoajat järjestettynä mallin ELO-pisteiden mukaan", "radar": "Radar-katalogi", "radarSubtitle": "Yhteisön rikastama ilmainen mallikatalogi", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", - "auditA2a": "A2A Audit", + "costsQuotaShare": "Kiintiöiden jakaminen", + "costsPricing": "Hinnoittelu", + "logsProxy": "Välityspalvelimen lokit", + "logsConsole": "Konsoli", + "logsActivity": "Toiminta", + "auditMcp": "MCP-auditointi", + "auditA2a": "A2A-auditointi", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Ulkoasu", + "settingsAi": "AI-asetukset", + "settingsSecurity": "Tietoturva", "settingsAccessTokens": "Pääsytunnukset", "settingsFeatureFlags": "Ominaisuusliput", "settingsCache": "Välimuisti", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "Käyttöoikeudet", + "settingsRouting": "Reititys", + "settingsResilience": "Vikasietoisuus", "modelLockout": "Mallin lukitus", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Lisäasetukset", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Palveluntarjoajan kiintiö", + "providerQuota": "Palveluntarjoajan kiintiö", + "runtime": "Suorituksenaikainen ympäristö", + "consoleLogs": "Konsolilokit", + "logsTimeline": "Aikajana", "logsTimelineSubtitle": "Visuaalinen pyyntöaikajana", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Keskustelut", + "conversationsSubtitle": "Monivaiheiset agenttipohjaiset keskustelut", + "globalRouting": "Globaali reititys", + "mitmProxy": "MITM-välityspalvelin", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "Agenttitoiminnot", + "otherFeaturesSection": "Muut ominaisuudet", + "compressionContextGroup": "Kontekstin pakkaus", + "gamificationGroup": "Pelillistäminen", + "toolsGroup": "Työkalut", + "integrationsGroup": "Integraatiot", + "proxyGroup": "Välityspalvelin", + "costsParametersGroup": "Kustannusparametrit", + "auditGroup": "Auditointi", + "batchGroup": "Eräajo", + "homeSubtitle": "Koontinäytön yleiskatsaus", + "providersSubtitle": "Hallinnoi tekoälypalveluntarjoajia", + "quotaTrackerSubtitle": "Seuraa käyttörajoja", + "providerQuotaSubtitle": "Seuraa palveluntarjoajien käyttörajoja", + "runtimeSubtitle": "Reaaliaikainen vikasietoisuus ja istunnot", + "contextCombosSubtitle": "Yhdistä pakkausmoottoreita", + "cliToolsSubtitle": "Määritä CLI-ajoympäristöt", + "agentsSubtitle": "Hallinnoi paikallisia agentteja", + "cloudAgentsSubtitle": "Hallinnoi pilvipohjaisia agentteja", + "apiEndpointsSubtitle": "Julkaise mukautettuja päätepisteitä", + "proxySubtitle": "HTTP-välityspalvelimen asetukset", + "mitmProxySubtitle": "MITM-sieppaus", + "oneProxySubtitle": "Julkinen välityspalvelinyhdyskäytävä", + "leaderboard": "Tulostaulukko", + "profile": "Profiili", + "tokens": "Tokenit", + "gamificationAdmin": "Pelillistämisen hallinta", + "leaderboardSubtitle": "Sijoitukset ja saavutukset", + "profileSubtitle": "Tili ja asetukset", + "tokensSubtitle": "Tokenien käyttö ja budjetit", + "gamificationAdminSubtitle": "Poikkeamien valvonta ja huijausten esto", + "usageSubtitle": "Liikenne- ja käyttötilastot", + "analyticsComboHealthSubtitle": "Yhdistelmäkohteen luotettavuus", + "analyticsUtilizationSubtitle": "Palveluntarjoajien käyttöaste", + "costsSubtitle": "Kulujen erittely", + "cacheSubtitle": "Välimuistiosumien osuudet", + "analyticsCompressionSubtitle": "Tokenien säästötilastot", + "analyticsSearchSubtitle": "Hakutyökalun analytiikka", + "analyticsEvalsSubtitle": "Arviointikokonaisuuden tulokset", "providerStats": "Tarjoajan tilastot", "providerStatsSubtitle": "Viive- ja suorituskykymittarit", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Sovelluslokit", + "logsProxySubtitle": "Välityspalvelimen liikennelokit", + "consoleLogsSubtitle": "Konsolituloste", + "logsActivitySubtitle": "Käyttäjän toimintaloki", + "healthSubtitle": "Järjestelmän kuntotarkistus", + "costsPricingSubtitle": "Mallikohtaiset hinnoittelusäännöt", + "costsBudgetSubtitle": "Budjettirajat", + "costsQuotaShareSubtitle": "Jaa palveluntarjoajien kiintiöt avainten kesken", + "auditLogSubtitle": "Valtuutuksen tarkastus", + "auditMcpSubtitle": "MCP-palvelimen tarkastus", + "auditA2aSubtitle": "A2A-protokollan tarkastus", + "translatorSubtitle": "Muotomuunnos", + "playgroundSubtitle": "Testaa kehotteita reaaliajassa", + "searchToolsSubtitle": "Hakutyökalujen rekisteri", + "memorySubtitle": "Pysyvä agenttimuisti", + "omniSkillsSubtitle": "Hiekkalaatikon taitorekisteri", + "agentSkillsSubtitle": "A2A-taitorekisteri", + "mcpSubtitle": "MCP-palvelimen hallinta", + "a2aSubtitle": "A2A-protokollapalvelin", "pluginsSubtitle": "Liitännäismarkkinapaikka ja asennukset", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Välimuistiin tallennetut mediatiedostot", + "batchFilesSubtitle": "Eräsyöte- ja tulostiedostot", + "settingsSubtitle": "Kaikki asetukset", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Teema ja asettelu", + "settingsAiSubtitle": "Tekoälyn toiminnan oletusasetukset", + "globalRoutingSubtitle": "Yleiset reitityssäännöt", + "settingsResilienceSubtitle": "Uudelleenyritykset ja katkaisimet", + "settingsAdvancedSubtitle": "Tehokäyttäjän asetukset", + "settingsSecuritySubtitle": "Todennus ja salaus", "settingsAccessTokensSubtitle": "Rajatut CLI-tunnukset etätilaa varten", "settingsFeatureFlagsSubtitle": "Vaihda järjestelmän ominaisuuksia", "settingsCacheSubtitle": "Mallikatalogi ja vastausten välimuisti", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Sivupalkki", + "settingsSidebarSubtitle": "Mukauta sivupalkin asettelua", "settingsAuthzSubtitle": "Reittiluettelo ja ohituskäytäntö", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Dokumentaatio", + "issuesSubtitle": "Ilmoita virheestä", + "changelogSubtitle": "Julkaisutiedot", "costsQuotaPlans": "Sopimukset & kiintiöt", "costsQuotaPlansSubtitle": "Määritä sopimukset tarjoajakohtaisesti", "activity": "Toiminta", @@ -1278,8 +1278,8 @@ "agentBridge": "Agent Bridge", "agentBridgeSubtitle": "Kaappaa IDE-agentin liikenne", "trafficInspector": "Liikennetarkastin", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Tarkastele sovellustesi pyyntö- ja vastausliikennettä", + "trafficInspectorPurpose": "Näe tarkalleen, mitä sovelluksesi lähettää tekoälypalveluntarjoajille ja vastaanottaa niiltä. Toimii kaikkien OpenAI-yhteensopivien asiakasohjelmien kanssa.", "cliCode": "CLI-koodi", "cliCodeSubtitle": "OmniRouteen osoittavat koodityökalut", "cliAgents": "CLI-agentit", @@ -1318,7 +1318,7 @@ "noResults": "Ei tuloksia" }, "webhooks": { - "title": "Webhooks", + "title": "Webhookit", "description": "Määritä HTTP-puhelut järjestelmätapahtumille.", "configuredWebhooks": "Määritetyt Webhookit", "configuredWebhooksDesc": "Hallitse toimituspäätepisteitä, tilattuja tapahtumia, tilaa ja testilähetyksiä.", @@ -1345,7 +1345,7 @@ "refresh": "Päivitä", "loading": "Ladataan webhookeja...", "never": "Ei koskaan", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {ei virheitä} one {# virhe} other {# virhettä}}", "testWebhook": "Lähetä testi", "testSuccess": "Testi webhookin lähetys onnistui.", "testFailed": "Webhookin testaus epäonnistui.", @@ -1378,54 +1378,54 @@ "step3": "Vahvista määritykset lähettämällä testikuorma varmistaaksesi, että päätepiste vastaanottaa sen.", "step4": "Suojaa päätepisteesi vahvistamalla X-Webhook-Signature HMAC-SHA256 -otsake webhookin salaisuudella.", "title": "Miten webhookit toimivat", - "customOnly": "Only applicable for custom endpoint integrations.", - "hmacRecipeTitle": "HMAC Verification Recipe", - "hmacRecipe": "To verify webhook payloads in Node.js, compute the HMAC-SHA256 of the raw request body using your secret key. Compare it to the X-Webhook-Signature header using timingSafeEqual.", - "timeoutNote": "Webhook deliveries have a timeout of 10 seconds.", - "retryNote": "Failed deliveries are retried up to 5 times with exponential backoff.", - "docsLink": "Read the full Webhooks developer guide", - "hmacRecipePython": "Python HMAC verification: hmac.new(secret, body, hashlib.sha256).hexdigest()", - "hmacRecipeBash": "Bash HMAC verification: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" + "customOnly": "Koskee vain mukautettujen päätepisteiden integraatioita.", + "hmacRecipeTitle": "HMAC-vahvistuksen toteutusohje", + "hmacRecipe": "Vahvista webhook-hyötykuormat Node.js:ssä laskemalla raakapyyntörungon HMAC-SHA256 salaisella avaimellasi. Vertaa sitä X-Webhook-Signature-otsakkeeseen timingSafeEqual-funktiolla.", + "timeoutNote": "Webhook-toimitusten aikakatkaisu on 10 sekuntia.", + "retryNote": "Epäonnistuneita toimituksia yritetään uudelleen enintään 5 kertaa eksponentiaalisesti kasvavalla viiveellä.", + "docsLink": "Lue koko Webhooks-kehittäjäopas", + "hmacRecipePython": "Python HMAC -vahvistus: hmac.new(secret, body, hashlib.sha256).hexdigest()", + "hmacRecipeBash": "Bash HMAC -vahvistus: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" }, "deliveries": { - "title": "Delivery Logs", - "loadFailed": "Failed to load webhook delivery logs.", - "empty": "No deliveries recorded yet. Trigger an event or send a test payload.", - "status": "Status", - "event": "Event", - "latency": "Latency", - "at": "Sent At" + "title": "Toimituslokit", + "loadFailed": "Webhook-toimituslokien lataaminen epäonnistui.", + "empty": "Toimituksia ei ole vielä tallennettu. Käynnistä tapahtuma tai lähetä testihyötykuorma.", + "status": "Tila", + "event": "Tapahtuma", + "latency": "Viive", + "at": "Lähetetty" }, "kinds": { - "comingSoon": "Coming Soon", + "comingSoon": "Tulossa pian", "slack": "Slack", - "slackDesc": "Post system events directly into a Slack channel", + "slackDesc": "Lähetä järjestelmätapahtumat suoraan Slack-kanavalle", "telegram": "Telegram", - "telegramDesc": "Send event messages using a Telegram bot", + "telegramDesc": "Lähetä tapahtumaviestejä Telegram-botilla", "discord": "Discord", - "discordDesc": "Deliver real-time updates directly to a Discord server", - "custom": "Custom Webhook", - "customDesc": "Deliver system event payloads to any HTTPS endpoint", - "email": "Email Notification", - "emailDesc": "Receive summary updates via email", + "discordDesc": "Toimita reaaliaikaiset päivitykset suoraan Discord-palvelimelle", + "custom": "Mukautettu webhook", + "customDesc": "Toimita järjestelmätapahtumien hyötykuormat mihin tahansa HTTPS-päätepisteeseen", + "email": "Sähköposti-ilmoitus", + "emailDesc": "Vastaanota yhteenvetopäivityksiä sähköpostitse", "pagerduty": "PagerDuty", - "pagerdutyDesc": "Trigger alerts on PagerDuty for critical system issues", + "pagerdutyDesc": "Käynnistä hälytyksiä PagerDuty-palvelussa kriittisistä järjestelmäongelmista", "teams": "Microsoft Teams", - "teamsDesc": "Forward system notifications to Microsoft Teams channels" + "teamsDesc": "Välitä järjestelmäilmoitukset Microsoft Teams -kanaville" }, - "testPayloadSent": "Test Payload Sent", - "testResponse": "Test Response", + "testPayloadSent": "Testihyötykuorma lähetetty", + "testResponse": "Testivastaus", "validateUrl": { - "checking": "Checking URL...", - "ok": "URL is valid", - "blockedPrivate": "URL is a blocked private address", - "invalidUrl": "Invalid URL format" + "checking": "Tarkistetaan URL-osoitetta...", + "ok": "URL-osoite on kelvollinen", + "blockedPrivate": "URL-osoite on estetty yksityinen osoite", + "invalidUrl": "Virheellinen URL-muoto" }, "custom": { - "endpointUrl": "Endpoint URL", + "endpointUrl": "Päätepisteen URL-osoite", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", - "secretKey": "Secret Key", - "secretKeyPlaceholder": "Enter secret key or leave blank to auto-generate", + "secretKey": "Salainen avain", + "secretKeyPlaceholder": "Anna salainen avain tai jätä tyhjäksi, jolloin se luodaan automaattisesti", "secretKeyHint": "Käytetään hyötykuorman otsikon allekirjoittamiseen todennusta varten." }, "discord": { @@ -1451,7 +1451,7 @@ } }, "compliance": { - "auditTitle": "Audit", + "auditTitle": "Auditointi", "auditDescription": "Tarkista vaatimustenmukaisuustapahtumat ja MCP-työkalukutsut yhdestä toimintanäkymästä.", "complianceTab": "Vaatimustenmukaisuus", "mcpTab": "MCP-tarkastus", @@ -1470,7 +1470,7 @@ "result": "Tulos", "details": "Yksityiskohdat", "timestamp": "Aikaleima", - "from": "From", + "from": "Lähettäjä", "to": "Vastaanottaja", "refresh": "Päivitä", "export": "Vie", @@ -1500,7 +1500,7 @@ "success": "Menestystä", "failure": "Epäonnistuminen", "noMcpEvents": "Ei tallennettu MCP-tarkastustapahtumia.", - "a2aAudit": "A2A Audit", + "a2aAudit": "A2A-auditointi", "a2aAuditDesc": "A2A-palvelimen tallentama tehtävien suorittamisen seurantaketju.", "a2aShowingTasks": "Näytetään {count}/{total} tehtävää", "a2aSkill": "Taito", @@ -1585,18 +1585,18 @@ "comboDescription": "Malliyhdistelmät varaosilla", "usage": "Käyttö ja analytiikka", "usageDescription": "Valvo API-käyttöäsi, tunnuksesi kulutusta ja pyyntölokeja", - "analytics": "Analytics", + "analytics": "Analytiikka", "analyticsDescription": "Kaavioita, trendejä ja arviointitietoja", "cliTools": "CLI-työkalut", "cliToolsDescription": "Määritä CLI-työkalut", "home": "Kotiin", "homeDescription": "Tervetuloa OmniRouteen", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Päätepisteet", + "endpointDescription": "Hallitse välityspalvelimen päätepisteitä sekä MCP-, A2A- ja API-päätepisteitä", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol -palvelinten ja työkalujen hallinta", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Agent-to-Agent-protokollan tehtävät ja havainnoitavuus", "settings": "Asetukset", "settingsDescription": "Hallinnoi asetuksiasi", "openaiCompatible": "OpenAI-yhteensopiva", @@ -1605,49 +1605,49 @@ "mediaDescription": "Luo kuvia, videoita ja musiikkia", "themes": "Teemat", "themesDescription": "Valitse väriteema koko kojelautapaneelille", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", - "auditA2a": "A2A Audit", + "costsDescription": "Seuraa kuluja, analysoi trendejä ja hallitse tekoälybudjettiasi kaikkien palveluntarjoajien osalta", + "cacheDescription": "Valvo palveluntarjoajien kehotteiden välimuistin tehokkuutta ja paikallisten semanttisten vastausten uudelleenkäyttöä.", + "limitsDescription": "Määritä nopeusrajoitukset ja kiintiöt API-avaimittain ja palveluntarjoajittain", + "runtimeDescription": "Ajonaikainen havainnoitavuus reaaliajassa — katkaisijat, jäähdytysajat, mallien lukitukset, istunnot ja kiintiöhälytykset", + "apiManagerDescription": "Hallitse OmniRoute-instanssisi API-avaimia ja käyttöoikeuksia", + "batchDescription": "Käsittele suuria pyyntömääriä asynkronisesti eräajettuina API-kutsuina", + "contextCavemanDescription": "Sääntöpohjainen viestien pakkaus, kielipaketit, analytiikka ja tulostustilan hallinta.", + "contextRtkDescription": "Komennot huomioiva pakkaus työkalujen tulosteille, päätelokeille ja koontituloksille.", + "contextCombosDescription": "Määritä, miten moottoreita yhdistetään eri reititystilanteissa.", + "changelogDescription": "Pysy ajan tasalla uusimmista alustaominaisuuksista ja ilmoituksista.", + "agentsDescription": "Hallitse ja määritä tekoälyagenttien työkaluja: Codex, Devin, Jules ja mukautetut agentit", + "cloudAgentsDescription": "Orkestroi pilvipohjaisia tekoälyagentteja reaaliaikaisella tehtävien seurannalla ja suunnitelmien hyväksynnällä", + "memoryDescription": "Pysyvä keskustelumuisti semanttisella haulla ja FTS5-kokoteksti-indeksoinnilla", + "skillsDescription": "Asenna ja hallitse hiekkalaatikkotaitoja kehotteiden ja työkalujen automaattista suorittamista varten", + "agentSkillsDescription": "Agenteille valmis taitoluettelo, josta URL-osoitteen voi kopioida yhdellä napsautuksella tekoälyasiakasohjelmaan integrointia varten", + "translatorDescription": "Muunna ja testaa kehotteita eri API-muotojen välillä: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Testaa kehotteita vuorovaikutteisesti palveluntarjoajien reaaliaikaisilla vastauksilla ja muodon tarkistuksella", + "searchToolsDescription": "Hakujen analytiikka, palveluntarjoajakohtaiset tiedot, välimuistin osumaprosentit ja kustannusten seuranta", + "logsDescription": "Reaaliaikaiset pyyntölokit, virhejäljitykset ja suoratoistotapahtumien tarkastelu", + "auditDescription": "API-avainten käytön, MCP-työkalukutsujen ja käytäntötapahtumien vaatimustenmukaisuuden auditointiloki", + "webhooksDescription": "Määritä webhook-päätepisteet vastaanottamaan reaaliaikaisia tapahtumailmoituksia", + "healthDescription": "Järjestelmän kunnon yleiskatsaus: palveluntarjoajat, katkaisijat, nopeusrajoitukset ja tietokanta", + "proxyDescription": "Määritä ylävirran välityspalvelinasetukset lähteville palveluntarjoajayhteyksille", + "apiEndpointsDescription": "Hallitse mukautettujen API-päätepisteiden määrityksiä ja reitityksen ohituksia", + "batchFilesDescription": "Selaa ja hallitse eräajojen tulostiedostoja ja tuloksia", + "analyticsEvalsDescription": "Mallien arviointitulokset ja suorituskykyvertailut", + "analyticsSearchDescription": "Hakukyselyiden analytiikka, välimuistin osumaprosentit ja kustannusten seuranta", + "analyticsUtilizationDescription": "Palveluntarjoajien käyttöasteen mittarit ja kapasiteetin suunnittelu", + "analyticsComboHealthDescription": "Yhdistelmäreititysmääritysten reaaliaikainen kunto ja suorituskyky", + "analyticsCompressionDescription": "Kontekstin pakkausanalytiikka ja token-säästöt", + "costsBudgetDescription": "Budjettirajat ja kuluhälytykset API-avaimittain ja palveluntarjoajittain", + "costsPricingDescription": "Mukautettu hinnoittelu token-kustannusten laskentaan", + "logsProxyDescription": "Ylävirran välityspyyntöjen lokit ja liikenteen tarkastus", + "logsConsoleDescription": "Sovelluskonsolin tulosteet ja virheenkorjauslokit", + "logsActivityDescription": "Käyttäjätoimintojen ja järjestelmätapahtumien auditointiketju", + "auditMcpDescription": "MCP-työkalukutsujen auditointiketju ja vaatimustenmukaisuustiedot", + "auditA2a": "A2A-auditointi", "auditA2aDescription": "A2A-tehtävän suorittamisen kirjausketju, tilasiirtymät ja taitojen kutsutietueet", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Teeman, brändi-ilmeen ja ulkoasun mukauttaminen", + "settingsAiDescription": "Tekoälyn toiminta, ajattelubudjetit sekä näkö- ja muistiasetukset", "settingsCacheDescription": "Mallikatalogin välimuistin merkintöjen TTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Todennus-, valtuutus- ja käyttöoikeusasetukset", "featureFlags": "Ominaisuusliput", "featureFlagsDescription": "Ohjausjärjestelmän ominaisuudet ja kokeelliset ominaisuudet", "featureFlagsActive": "{count} aktiivinen", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Yksikään lippu ei vastaa hakuasi", "featureFlagsSaved": "Lippu päivitetty", "featureFlagsError": "Lipun päivittäminen epäonnistui", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Reitityssäännöt, mallien aliakset, yhdistelmien oletukset ja heikennysasetukset", + "settingsResilienceDescription": "Katkaisijan, uudelleenyritysten ja varajärjestelyjen määritys", + "settingsAdvancedDescription": "Hyötykuorman lisäsäännöt, pyyntörajat ja välityspalvelimen API-asetukset", + "mitmProxyDescription": "Määritä MITM-välityspalvelimen asetukset liikenteen tarkastusta ja virheenkorjausta varten", + "oneProxyDescription": "Määritä 1Proxy-asetukset edistyneeseen välityspalvelinketjutukseen", "omniSkillsDescription": "Asenna ja hallitse hiekkalaatikkotaitoja automaattista kehotteiden ja työkalujen suorittamista varten" }, "cloudSyncStatus": { @@ -1744,7 +1744,7 @@ "changelog": "Muutosloki", "chaos": "Kaaos", "cloudAgents": "Pilviagentit", - "live": "Live", + "live": "Reaaliaikainen", "studio": "Studio", "aggressive": "Aggressiivinen", "caveman": "Luolamies", @@ -1762,7 +1762,7 @@ "discovery": "Löytäminen", "freeProviderRankings": "Ilmaisten tarjoajien sijoitukset", "radar": "Radar", - "setup": "Setup", + "setup": "Määritys", "freeTiers": "Ilmaiset tasot", "gamification": "Pelillistäminen", "leaderboard": "Tulostaulukko", @@ -1772,7 +1772,7 @@ "providerStats": "Tarjoajan tilastot", "new": "Uusi", "quota": "Kiintiö", - "relay": "Relay", + "relay": "Välitys", "searchTools": "Hakutyökalut", "security": "Tietoturva", "sidebar": "Sivupalkki", @@ -1812,7 +1812,7 @@ "reportIssue": "Ilmoita ongelmasta", "activeError": "{active} aktiivinen · {errors} virhe", "topologyLegendActive": "Aktiivinen", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Viimeisimmät", "topologyLegendError": "Virhe", "oauthLabel": "OAuth", "apiKeyLabel": "API-avain", @@ -1826,11 +1826,11 @@ "updateStarted": "Päivitys aloitettu...", "reloadingPageAutomatically": "Ladataan sivua automaattisesti uudelleen...", "providerTopology": "Palveluntarjoajan topologia", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Viimeisimmät pyynnöt", + "recentRequestsEmpty": "Ei vielä pyyntöjä.", + "recentRequestsModel": "Malli", + "recentRequestsTokens": "Sisään / Ulos", + "recentRequestsWhen": "Milloin", "downloadDmg": "Lataa DMG (macOS)", "downloadDmgDescription": "Uusi versio OmniRoute-työpöytäsovelluksesta on saatavilla. Lataa ja asenna macOS DMG -asennustiedosto päivittääksesi (nykyinen: v{version}).", "downloadExe": "Lataa EXE (Windows)", @@ -1888,18 +1888,18 @@ "releaseNotes": "Julkaisutiedot", "readMore": "Lue lisää", "noAuthLabel": "Ei todennusta", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Valmistaudu reititykseen", + "readinessTitle": "Lähetä ensimmäinen pyyntösi", + "readinessSubtitle": "Neljä pientä vaihetta. OmniRoute tarkistaa valmiuden edetessäsi.", + "readinessStep1": "Yhdistä palveluntarjoaja", + "readinessStep2": "Määritä päätepisteen todennus", + "readinessStep3": "Kopioi päätepisteesi", + "readinessStep4": "Lähetä testipyyntö", + "readinessContinue": "Jatka määritystä", + "readinessDismiss": "Ohita toistaiseksi" }, "analytics": { - "title": "Analytics", + "title": "Analytiikka", "usageAnalyticsTitle": "Käyttöanalytiikka", "diversityScoreTitle": "Tarjoajan monimuotoisuus", "diversityScoreDesc": "Tilannekuva tarjoajien keskittymisestä viimeaikaisen liikenteen ajalta.", @@ -1967,7 +1967,7 @@ "period7D": "7 pv", "period30D": "30 pv", "period90D": "90 pv", - "periodYTD": "YTD", + "periodYTD": "Vuoden alusta", "periodAll": "Kaikki", "totalTokens": "Tokenit yhteensä", "inputTokens": "Syötetokenit", @@ -1993,7 +1993,7 @@ "overviewDescription": "Tarkkaile sovellusliittymän käyttötapoja, tunnuksen kulutusta, kustannuksia ja toimintatrendejä kaikilla palveluntarjoajilla ja malleilla.", "evalsDescription": "Testaa ja vahvista LLM-päätepisteesi suorittamalla arviointipaketteja. Vertaile mallin laatua, havaitse regressiot ja vertaile viivettä.", "overview": "Yleiskatsaus", - "evals": "Evals", + "evals": "Arvioinnit", "search": "Haku", "utilization": "Käyttöaste", "routeTrace": "Reitin jäljitys", @@ -2005,8 +2005,8 @@ "modelStatusError": "Virhe", "comboHealth": "Yhdistelmän kunto", "comboHealthDescription": "Yhdistelmätason kiintiö, käytön jakautuminen ja suorituskykymittarit", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Pakkausanalytiikka", + "compressionAnalyticsDescription": "Pakkausanalytiikka — tunnistesäästöt, tilojen erittely ja palveluntarjoajatilastot.", "autoRoutingTotalAutoRequests": "Automaattiset pyynnöt yhteensä", "autoRoutingAvgSelectionScore": "Keskimääräinen valintapiste", "autoRoutingExplorationRate": "Tutkimusaste", @@ -2207,10 +2207,10 @@ "model": "Malli", "account": "Tili", "connection": "Yhteys", - "combo": "Combo", + "combo": "Yhdistelmä", "routeStep": "Vaihe", "tokens": "Tokenit", - "notAvailable": "n/a", + "notAvailable": "ei saatavilla", "routeTokenCounts": "{input} sisään · {output} ulos", "routeEvidence": "Todisteet", "routeFactors": "Reititystekijät", @@ -2258,9 +2258,9 @@ "fullAccess": "Täysi pääsy", "keyManagement": "API-avainten hallinta", "keyManagementDesc": "Luo ja hallitse API-avaimia päätepisteesi pyyntöjen todentamiseksi", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Sovelluksesi lähettää pyynnöt API-avaimella OmniRouteen", + "requestFlowYourApp": "Sovelluksesi", + "requestFlowApiKey": "API-avain", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Avaimet yhteensä", "restricted": "Rajoitettu", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Kopioi ja tallenna tämä avain nyt – sitä ei näytetä uudelleen.", "done": "Valmis", "savePermissions": "Tallenna käyttöoikeudet", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Sallitut päätepisteet", + "allEndpointsAllowed": "Tällä avaimella voi käyttää kaikkia API-päätepisteitä.", + "endpointsRestricted": "Rajoitettu {count} päätepisteeseen{count, plural, one {} other {s}}.", + "autoResolve": "Automaattinen ratkaisu", + "autoResolveDesc": "Ratkaise epäselvät mallien nimet automaattisesti tämän API-avaimen alkuperäiselle palveluntarjoajalle.", "streamDefaultMode": "Striimauksen oletusyhteensopivuus", "streamDefaultModeDesc": "Hallitsee tämän avaimen puuttuvia `stream`-lippuja. JSON-tila palauttaa ei-striimattavia vastauksia, ellei asiakas nimenomaisesti pyydä SSE:tä.", "streamDefaultLegacy": "Perinteinen", "streamDefaultJson": "JSON-yhteensopiva", "streamDefaultBadge": "JSON-striimauksen oletus", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Avain käytössä", + "keyActiveDesc": "Ota tämä API-avain käyttöön tai poista se käytöstä. Käytöstä poistetuilla avaimilla tehdyt pyynnöt hylätään välittömästi 403-virheellä.", + "accessSchedule": "Käyttöaikataulu", + "accessScheduleDesc": "Rajoita käyttö tiettyihin kellonaikoihin ja viikonpäiviin.", + "scheduleFrom": "Alkaen", + "scheduleUntil": "Asti", + "scheduleDays": "Päivät", + "scheduleTimezone": "Aikavyöhyke", + "scheduleTimezoneHint": "Käytä IANA-aikavyöhykkeiden nimiä, esim. America/New_York, Europe/Berlin", + "scheduleActive": "Aikataulu", + "disabled": "Poistettu käytöstä", + "daySun": "Su", + "dayMon": "Ma", + "dayTue": "Ti", + "dayWed": "ke", + "dayThu": "to", + "dayFri": "pe", + "daySat": "la", "allowAll": "Salli kaikki", "restrict": "Rajoita", "allowAllInfo": "Tällä avaimella pääsee kaikkiin saatavilla oleviin malleihin.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Käyttöoikeuksien päivittäminen epäonnistui. Yritä uudelleen.", "unknownProvider": "tuntematon", "copyMaskedKey": "Kopioi peitetty avain", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Koko avain on saatavilla vain luontihetkellä — kopioi se, kun luot avaimen ensimmäisen kerran", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# laite} other {# laitetta}}", "devicesTooltip": "{count, plural, one {# erillinen IP-/User-Agent-laite havaittu tällä avaimella (viimeiset 30 min)} other {# erillistä IP-/User-Agent-laitetta havaittu tällä avaimella (viimeiset 30 min)}}", @@ -2382,16 +2382,16 @@ "allowedCombos": "Sallitut yhdistelmät", "allCombosAllowed": "Tämä avain voi käyttää mitä tahansa yhdistelmää.", "restrictedComboCount": "Rajoitettu {count, plural, one {# yhdistelmään} other {# yhdistelmään}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# tallennettu kohde ei ole} other {# tallennettua kohdetta eivät ole}} tässä yhdistelmäluettelossa (esimerkiksi reitityssäännöt), ja ne säilytetään tallennetussa muodossa.", + "preservedComboRuleHint": "Säilytetään tallennetussa muodossa. Tämä kohde ei ole yllä olevassa yhdistelmäluettelossa, joten sitä voi muuttaa vain API:n kautta.", "apiManagerCustomRateLimits": "Mukautetut hintarajat", "apiManagerCustomRateLimitsDesc": "Ohita globaalit oletusrajat. Jätä tyhjäksi, jos haluat käyttää oletusasetuksia.", "apiManagerRateLimitRequestsPlaceholder": "Pyynnöt", - "apiManagerRateLimitReqPer": "req /", + "apiManagerRateLimitReqPer": "pyyntöä /", "apiManagerRateLimitSecondsPlaceholder": "Sekuntia", "apiManagerRemoveLimitTitle": "Poista raja", "apiManagerTimezonePlaceholder": "Amerikka / Sao_Paulo", - "noLogPayloadPrivacy": "No-Log Payload Privacy", + "noLogPayloadPrivacy": "Hyötykuorman lokittamattomuuteen perustuva tietosuoja", "bannedStatus": "Kielletty tila", "managementApiAccess": "Management API -käyttöoikeus", "expirationDate": "Viimeinen voimassaolopäivä", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Sallii tämän avaimen ohittaa ylävirran tarjoajan/tilin rajapolitikan reitityksen aikana. API-avaimen USD-kiintiöt ovat edelleen voimassa.", "quotaPill": "KIINTIÖ", "quotaModeOnly": "vain qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Yksinomainen varaus", + "exclusiveLeaseNoticeTitle": "Yksinomainen varaus", + "exclusiveLeaseNoticeDesc": "Tällä API-avaimella on yksinomaiset varausoikeudet erillisten yhteyksien reititykseen.", + "allConnections": "Kaikki yhteydet", + "onlySelectedConnections": "Vain valitut yhteydet", + "selectAtLeastOneConnection": "Valitse vähintään yksi yhteys tai valitse Kaikki yhteydet.", + "allConnectionsDesc": "Tämä avain voi käyttää mitä tahansa aktiivista yhteyttä.", + "restrictedToConnections": "Rajoitettu {count, plural, one {# yhteyteen} other {# yhteyteen}}." }, "auditLog": { "title": "Tarkastusloki", @@ -2457,14 +2457,14 @@ "model": "Model", "prompt": "Prompt", "generate": "Luo", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Luodaan...", + "loadingModels": "Ladataan käytettävissä olevia malleja...", + "noModels": "Malleja ei ole saatavilla. Määritä ensin mediatoimintoja tukevat palveluntarjoajat.", + "error": "Luonti epäonnistui", + "result": "Tulos", + "imageDescription": "Luo kuvia tekstikehotteista käyttäen palveluita OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI ja muita.", + "videoDescription": "Luo videoita käyttäen AnimateDiffiä tai Stable Video Diffusionia ComfyUI:n tai SD WebUI:n kautta.", + "musicDescription": "Sävellä musiikkia käyttäen Stable Audio Openia tai MusicGeniä ComfyUI:n kautta.", "kinds": { "embedding": "Upotus", "image": "Kuva", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter puheesta tekstiksi -mallit käyttävät määrittämääsi OpenRouter-yhteyttä. Erillistä tunnistetta ei vaadita." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Hakukysely", + "searchResults": "Hakutulokset", + "cachedResult": "Välimuistissa", + "searchCost": "Kustannus", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Edistynyt haun testaus palveluntarjoajien vertailulla", + "compareProviders": "Vertaa palveluntarjoajia", + "rerankResults": "Järjestä tulokset uudelleen", + "searchHistory": "Hakuhistoria", + "urlOverlap": "URL-osoitteiden päällekkäisyys", + "noSearchProviders": "Hakupalveluntarjoajia ei ole määritetty. Lisää palveluntarjoajia asetuksissa.", + "noRerankModels": "Uudelleenjärjestelymallia ei ole saatavilla", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Palveluntarjoaja", + "searchType": "Hakutyyppi", + "maxResults": "Tulosten enimmäismäärä", + "filters": "Suodattimet", + "country": "Maa", + "language": "Kieli", + "timeRange": "Aikaväli", + "includeDomains": "Sisällytettävät verkkotunnukset", + "excludeDomains": "Poissuljettavat verkkotunnukset", + "safeSearch": "Turvallinen haku", + "safeSearchOff": "Pois käytöstä", + "safeSearchModerate": "Kohtalainen", + "safeSearchStrict": "Tiukka", + "queryPlaceholder": "Kirjoita hakukysely...", + "providerAuto": "automaattinen (edullisin)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "uutiset", + "optionAny": "mikä tahansa", + "timeRangeDay": "Viimeisen vuorokauden aikana", + "timeRangeWeek": "Viimeisen viikon aikana", + "timeRangeMonth": "Viimeisen kuukauden aikana", + "timeRangeYear": "Viimeisen vuoden aikana", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Pyynnön aikakatkaisu ({seconds} s)", + "networkError": "Verkkovirhe", + "formatted": "Muotoiltu", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "ei löytynyt välimuistista", + "cacheHit": "löytyi välimuistista", + "latency": "Viive", + "cost": "Kustannus", + "results": "Tulokset", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Uudelleenjärjestelymalli", + "positionDelta": "Sijainnin muutos", + "emptyState": "Lähetä hakukysely nähdäksesi tulokset", "copy": "Kopioi", "resetToDefault": "Palauta oletusarvo", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Haku", + "tabScrape": "Sisällön poiminta", + "tabCompare": "Vertailu", + "modalitiesGuide": "Modaliteettiopas", + "searchConceptTitle": "Haku", + "searchConceptDesc": "Haku = hakee luettelon verkkotuloksista (otsikko, URL, katkelma, relevanssipisteet)", + "scrapeConceptTitle": "Sisällön poiminta", + "scrapeConceptDesc": "Sisällön poiminta = poimii URL-osoitteen koko sisällön (markdown, teksti tai HTML)", + "compareConceptTitle": "Vertailu", + "compareConceptDesc": "Vertailu = suorittaa saman kyselyn rinnakkain N palveluntarjoajalla viiveen, kustannusten ja tulosten päällekkäisyyden vertailemiseksi", + "rerankConceptTitle": "Uudelleenjärjestä", + "rerankConceptDesc": "Uudelleenjärjestä = järjestää tulokset uudelleen LLM:n avulla parantaakseen osuvuutta kyselyn perusteella", + "autoConceptTitle": "Automaattinen (halvin)", + "autoConceptDesc": "Automaattinen (halvin) = valitsee automaattisesti halvimman saatavilla olevan palveluntarjoajan, jolle on määritetty tunnistetiedot", + "providerCatalogTitle": "Palveluntarjoajaluettelo", + "kindSearch": "Haku", + "kindFetch": "Nouda/raavi", + "statusConfigured": "Määritetty", + "statusMissing": "Ei tunnistetietoja", + "statusRateLimited": "Nopeusrajoitettu", + "configureProvider": "Määritä Palveluntarjoajat-osiossa", + "loadingProviders": "Ladataan palveluntarjoajia…", + "failedToLoadProviders": "Palveluntarjoajien lataaminen epäonnistui", + "costPerQuery": "Kustannus/kysely", + "freeQuota": "Ilmainen kiintiö/kk", + "scrapeUrl": "Raavittava URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL-osoite vaaditaan", "scrapeUrlInvalid": "Virheellinen URL-osoite — sen on alettava http:// tai https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Poimi", + "scrapeExtracting": "Poimitaan…", + "scrapeFullPage": "Koko sivu", + "scrapeFormat": "Muoto", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Teksti", + "scrapePreview": "Esikatselu", + "scrapeRaw": "Raakadata", + "scrapeContentTruncated": "(lyhennetty, näytä raakadata)", + "scrapeMetadata": "Metatiedot", + "scrapeProvider": "Palveluntarjoaja", + "scrapeSize": "Koko", "scrapeEmptyState": "Syötä URL-osoite sisällön noutamiseksi", "scrapeProvidersAvailable": "Saatavilla olevat tarjoajat: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Vertaa", + "compareRunning": "Vertaillaan…", + "autoProvider": "Automaattinen (halvin)", + "configuredStatus": "Määritetty", + "rateLimitedStatus": "Nopeusrajoitettu", + "noCredential": "Ei tunnistetietoja", + "searchTypeLabel": "Tyyppi", + "rerankModelLabel": "Uudelleenjärjestelymalli", + "noneOption": "Ei mitään", + "size": "Koko", "configurationPane": "Asetuspaneeli", "configuration": "Asetukset", "status": "Tila", @@ -2717,7 +2717,7 @@ "ccOnboardingTitle": "settings.json portin mallin löytämiseksi", "ccOnboardingCopy": "Kopioi", "ccOnboardingCopied": "Kopioitu", - "ccOnboardingKeyPlaceholder": "''", + "ccOnboardingKeyPlaceholder": "''", "ccOnboardingWindowNote": "Claude Code olettaa 200K kontekstin ikkunan kaikille mallin tunnuksille, joita se ei tunnista. Mallille, jolla on eri todellinen ikkuna, lisää CLAUDE_CODE_AUTO_COMPACT_WINDOW sen alle, jotta automaattinen tiivistys ei käynnisty liian aikaisin.", "failedSave": "Tallennus epäonnistui", "profileSyncTitle": "CLI-profiilien automaattinen synkronointi", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Lisää", "antigravityStep2Suffix": "hosts-tiedostoon muodossa 127.0.0.1.", "antigravityStep3": "3. Avaa Antigravity ja pyynnöt välitetään.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} lähettää pyynnöt palveluntarjoajansa päätepisteeseen. MITM sieppaa ne ja ohjaa ne uudelleen OmniRouteen.", + "mitmStep1": "1. Käynnistä MITM reitittääksesi pyynnöt OmniRouten kautta.", + "mitmStep2Prefix": "2. Lisää", + "mitmStep2Suffix": "hosts-tiedostoosi osoitteella 127.0.0.1.", + "mitmStep3": "3. Avaa {toolName}, niin pyynnöt välitetään välityspalvelimen kautta.", "sudoPasswordRequiredTitle": "Sudo-salasana vaaditaan", "sudoPasswordHint": "Järjestelmänvalvojan salasana tarvitaan hosts-tiedoston ja järjestelmän välityspalvelimen asetusten muokkaamiseen.", "enterSudoPassword": "Anna sudo-salasana", @@ -2908,7 +2908,7 @@ "continue": "Käytä, kun käytät Continuea IDE:issä ja tarvitset kannettavan JSON-pohjaisen palveluntarjoajan määrityksen.", "opencode": "Käytä, kun haluat käyttää päätealustaisia ​​agentteja ja komentosarjottua automaatiota OpenCoden kautta.", "kiro": "Käytä integroitaessa Kiroa ja ohjattaessa mallin reititystä keskitetysti OmniRoutesta.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Käytä, kun haluat tekoälylähtöisen IDE:n, jonka Codeium/Windsurf-mallit reititetään OmniRouten kautta.", "antigravity": "Käytä, kun Antigravity/Kiro-liikenne on siepattava MITM:n kautta ja ohjattava OmniRouteen.", "copilot": "Käytä, kun haluat Copilot-chat-tyylisen UX:n ja pakota OmniRoute-avaimia ja reitityssääntöjä.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2923,17 +2923,17 @@ "grok-build": "xAI Grok Build TUI -koodausagentti mukautetun palveluntarjoajan tuella", "droid": "Tehdas Droid AI Assistant", "openclaw": "Avaa Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "cline": "Cline-tekoälykoodausavustajan CLI", + "kilo": "Kilo Code -tekoälyavustajan CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", "continue": "Jatka AI Assistantia", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode-tekoälykoodausagentti (pääte)", + "kiro": "Amazon Kiro — tekoälypohjainen IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp -koodausavustajan CLI", + "hermes": "Hermes-tekoälypääteavustaja", "hermes-agent": "Hermes Agent (Nousresearch) - Edistynyt terminaali-tekoäly monimallituella (delegointi, visio, pakkaus jne.)", "custom": "Yleinen OpenAI-yhteensopiva CLI- tai SDK-konfiguraatiogeneraattori", "aider": "Aider AI -pariohjelmointi-CLI OpenAI-yhteensopivalla perus-URL-osoitteella", @@ -2950,7 +2950,7 @@ "interpreter": "Autonominen Open Interpreter -koodausagentti-CLI", "omp": "Oh My Pi -terminaalikoodausagentti", "letta": "Letta CLI -agentti pysyvällä muistilla ja työkalujen käytöllä", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — itseään kehittävä RLM-koodausympäristö, joka tukee OpenAI-yhteensopivia palveluntarjoajia", "warp": "Warp AI -terminaali mukautetun palveluntarjoajan tuella", "agent-deck": "Agent Deck -moniagenttiorkestraattori", "5dive": "5dive — itse isännöity koodausagenttien laivue; yksi auth-profiili ohjaa ne kaikki OmniRouteen" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Asenna OpenCode", + "desc": "Asenna npm:n kautta: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API-avain" }, "3": { - "title": "Set Base URL", + "title": "Aseta perus-URL", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Valitse malli" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Käytä päättelyvarianttia", + "desc": "Käytä päättelymalleissa valintaa --variant high/low/max (esimerkkikomento alla)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Avaa Kiron asetukset", + "desc": "Siirry kohtaan Asetukset → Tekoälypalveluntarjoaja" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Perus-URL", + "desc": "Liitä OmniRoute-päätepisteesi URL-osoite" }, "3": { - "title": "API Key" + "title": "API-avain" }, "4": { - "title": "Select Model" + "title": "Valitse malli" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Avaa tekoälyasetukset", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Lisää mukautettu palveluntarjoaja", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Perus-URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API-avain", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Valitse malli", + "desc": "Valitse malli avattavasta valikosta" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Mukautettu CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Työkaluluokat", "visibleToolsCount": "{count} työkalua saatavilla", "customCliBuilderTitle": "OpenAI-yhteensopiva CLI-muodostin", "customCliBuilderDescription": "Luo env vars- ja JSON-katkelmia mille tahansa CLI:lle tai SDK:lle, joka hyväksyy OpenAI-yhteensopivan perus-URL-osoitteen, API-avaimen ja mallitunnuksen.", @@ -3132,7 +3132,7 @@ "hermesRoleTtsAudioTagsDesc": "TTS äänitunnisteen luonti", "hermesRoleTriageSpecifier": "Triage Määrittäjä", "hermesRoleTriageSpecifierDesc": "Ongelma- ja PR-lajittelun määrittely", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Kanban-pilkkoja", "hermesRoleKanbanDecomposerDesc": "Kanban-tehtävien hajottaminen", "hermesRoleProfileDescriber": "Profiilikuvaaja", "hermesRoleProfileDescriberDesc": "Käyttäjäprofiilin kuvaus", @@ -3159,7 +3159,7 @@ "hermesRolesWillUpdate": "{count, plural, one {# rooli päivitetään} other {# roolia päivitetään}}", "hermesPreviewPath": "Esikatselu — kirjoitetaan tiedostoon ~/.hermes/config.yaml", "hermesSaveDescription": "Tallentaa valitun mallin kullekin roolille kohteeseen", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "GitHub Copilot -määritysgeneraattori", "copilotGeneratorDescriptionPrefix": "Luo", "copilotGeneratorDescriptionSuffix": "-lohkon VS Code GitHub Copilotille käyttäen Azure-toimittajamallia. Valitse haluamasi mallit ja kopioi sitten JSON määritystiedostoosi.", "copilotCompatibilityWarning": "Tämä määritys käyttää Azure-toimittajan kiertotapaa mukautetuille malliluetteloille. Testattu versioilla VS Code ≥ 1.109 ja GitHub Copilot Chat ≥ v0.37. Tulevat laajennuspäivitykset saattavat muuttaa tätä toimintaa.", @@ -3260,18 +3260,18 @@ "priorityDesc": "Peräkkäinen palautus: kokeilee ensin mallia 1, sitten 2 jne.", "weightedDesc": "Jakaa liikenteen painoprosentin mukaan varauksella", "roundRobinDesc": "Pyöreä jakelu: jokainen pyyntö siirtyy seuraavaan kiertoon malliin", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Kontekstin välitys", + "contextRelayDesc": "Säilyttää istunnon jatkuvuuden luovutusyhteenvetojen avulla tilien vaihtuessa", "randomDesc": "Yhtenäinen satunnainen valinta, sitten takaisin muihin malleihin", "leastUsedDesc": "Valitsee mallin, jolla on vähiten pyyntöjä ja tasapainottaa kuormitusta ajan myötä", "costOptimizedDesc": "Reitit edullisimpaan malliin ensin hinnoittelun perusteella", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Reitittää kunkin uudelleenkäytettävän kehotteen etuliitteen johdonmukaisesti samalle palveluntarjoajan tilille", + "resetAware": "Nollauksen huomioiva RR", "resetAwareDesc": "Tasaa jäljellä olevan kiintiön 5 tuntia ja viikoittaisia nollauksia vastaan ja kierrättää sitten samanlaiset pisteet", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kiintiöpainotettu", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Täysin satunnainen", + "strictRandomDesc": "Sekoitettu pakka — käyttää kutakin mallia kerran ennen uudelleensekoitusta", "fusion": "Fuusio", "fusionDesc": "Jakaa kehotteen rinnakkain kaikille paneelin malleille, minkä jälkeen tuomari-malli syntetisoi yhden lopullisen vastauksen", "fusionJudgeModel": "Tuomarimalli", @@ -3288,13 +3288,13 @@ "retryDelay": "Uudelleenyrityksen viive (ms)", "concurrencyPerModel": "Samanaikaisuus / malli", "queueTimeout": "Jonon aikakatkaisu (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Luovutuskynnys", + "contextRelayHandoffThresholdHelp": "Kun kiintiön käyttö saavuttaa tämän kynnyksen, OmniRoute luo jäsennellyn luovutusyhteenvedon ennen aktiivisen tilin kiintiön loppumista.", + "contextRelayMaxMessages": "Yhteenvedon viestien enimmäismäärä", + "contextRelayMaxMessagesHelp": "Rajoittaa, kuinka suuri osa viimeaikaisesta historiasta tiivistetään välitysyhteenvetoon.", + "contextRelaySummaryModel": "Yhteenvetomalli", + "contextRelaySummaryModelHelp": "Valinnainen korvaava malli, jota käytetään vain luovutusyhteenvedon luomiseen. Jätä tyhjäksi, jos haluat käyttää aktiivisen yhdistelmän mallia.", + "contextRelayProviderNote": "Kontekstin välitys luo tällä hetkellä luovutuksia Codex-tilien kierrätystä varten. Parhaan jatkuvuuden saat käyttämällä sitä saman palveluntarjoajan useiden tilien kanssa.", "advancedHint": "Jätä tyhjäksi, jos haluat käyttää yleisiä oletusasetuksia. Nämä ohittavat palveluntarjoajakohtaiset asetukset.", "failoverBeforeRetry": "Vika ennen uudelleenyritystä", "maxSetRetries": "Uudelleenyritysten enimmäismäärä", @@ -3386,19 +3386,19 @@ "example": "Mieluummin 60 % viikoittainen tilin nollaus huomenna kuin 80 % tilin nollaus myöhemmin." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Käytä, kun haluat täysin tasaisen jakautumisen — kutakin mallia käytetään kerran ennen toistoa.", + "avoid": "Vältä, kun mallien laatu tai viive eroaa ja järjestyksellä on merkitystä.", + "example": "Esimerkki: Saman mallin useita tilejä käytön jakamiseksi tasaisesti." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Käytä, kun haluat pienen viiveen valinnan Power-of-Two-Choices-algoritmilla.", + "avoid": "Vältä pienissä yhdistelmissä, joissa on enintään kaksi mallia — ei hyötyä vuorotteluun verrattuna.", + "example": "Esimerkki: Suuren suorituskyvyn inferenssi vähintään neljässä vastaavassa mallipäätepisteessä." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Käytä, kun pitkien istuntojen on jatkuttava tilien kierrätyksestä huolimatta työskentelykontekstia menettämättä.", + "avoid": "Vältä, kun tiliä vaihdetaan harvoin tai et halua ylimääräisiä yhteenvetopyyntöjä.", + "example": "Esimerkki: Codex-istunnot, joita kierrätetään useiden tilien välillä kiintiön lähestyessä loppuaan." }, "fill-first": { "when": "Käytä, kun haluat käyttää yhden palveluntarjoajan kiintiön kokonaan loppuun ennen siirtymistä seuraavaan.", @@ -3423,24 +3423,24 @@ }, "advancedHelp": { "maxRetries": "Kuinka monta uudelleenyritystä yritetään ennen kuin pyyntö epäonnistuu.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "retryDelay": "Ensimmäinen odotusaika uudelleenyritysten välillä. Suuremmat arvot vähentävät hetkellistä kuormitusta.", + "timeout": "Pyynnön enimmäiskesto ennen keskeytystä.", + "healthcheck": "Ohittaa toimintakyvyttömät mallit ja palveluntarjoajat reitityspäätöksissä.", + "concurrencyPerModel": "Mallikohtainen samanaikaisten pyyntöjen enimmäismäärä vuorottelussa.", + "queueTimeout": "Kuinka kauan pyyntö voi odottaa jonossa ennen aikakatkaisua.", "failoverBeforeRetry": "Kun tämä on käytössä, kaikki ylävirran virheet laukaisevat välittömän vikasietoisuuden seuraavaan yhdistelmäkohteeseen ohittaen kaikki uudelleenyritykset ja vara-URL-osoitteet.", "maxSetRetries": "Kuinka monta kertaa koko tavoitejoukkoa yritetään uudelleen, kun jokainen tavoite epäonnistuu. 0 = ei asetustason uudelleenyritystä.", "setRetryDelayMs": "Viive asetustason uudelleenyritysten välillä, mikä antaa ohimeneville ongelmille aikaa ratkaista.", "disableSessionStickiness": "Vaihda eri yhteyteen jokaisella pyynnöllä sen sijaan, että koko keskustelu kiinnitettäisiin yhteen yhteyteen ensimmäisen viestin tiivisteen perusteella. Ohittaa globaalin oletuksen. Jätä valintaan Inherit säilyttääksesi prompt-välimuistin osumat monivaiheisissa keskusteluissa." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", + "templatesTitle": "Pikamallit", + "templatesDescription": "Ota aloitusprofiili käyttöön ja säädä sitten malleja ja määrityksiä.", + "templateApply": "Ota malli käyttöön", + "templateHighAvailability": "Korkea käytettävyys", + "templateHighAvailabilityDesc": "Prioriteettireititys toimintakunnon tarkistuksilla ja turvallisilla uudelleenyrityksillä.", + "templateCostSaver": "Kustannussäästö", + "templateCostSaverDesc": "Kustannusoptimoitu reititys budjettia painottaville työkuormille.", + "templateBalanced": "Tasapainotettu kuormitus", "templateBalancedDesc": "Vähiten käytetty reititys kysynnän hajauttamiseksi ajan mittaan.", "usageGuideHide": "Piilottaa", "usageGuideDontShowAgain": "Älä näytä uudelleen", @@ -3459,12 +3459,12 @@ "warningRoundRobinSingleModel": "Round-robin on hyödyllisin vähintään kahdella mallilla.", "warningCostOptimizedPartialPricing": "Vain {priced} {total}-malleista on hinnoiteltu. Reititys voi olla osittain kustannustietoinen.", "warningCostOptimizedNoPricing": "Tälle yhdistelmälle ei löytynyt hintatietoja. Kustannusoptimoitu voi reitittää odottamatta.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterAll": "Kaikki", + "filterIntelligent": "Älykäs", + "filterDeterministic": "Deterministinen", + "filterEmptyTitle": "Mikään yhdistelmä ei vastaa tätä strategiasuodatinta.", + "filterEmptyIntelligentDescription": "Luo automaattinen tai LKGP-yhdistelmä älykkään reitityksen koontinäytön täyttämiseksi.", + "filterEmptyDeterministicDescription": "Tällä hetkellä käytettävissä on vain automaattisia ja LKGP-yhdistelmiä. Vaihda takaisin kohtaan Kaikki tai luo deterministinen yhdistelmä.", "readinessTitle": "Oletko valmis säästämään?", "readinessDescription": "Tarkista tarkistuslista ennen tämän yhdistelmän luomista tai päivittämistä.", "readinessCheckName": "Yhdistelmänimi on kelvollinen", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Lisää vähintään yksi malli.", "saveBlockWeighted": "Aseta painot 100 %:iin (nykyinen: {total}%).", "saveBlockPricing": "Lisää hinnoittelu vähintään yhdelle mallille tai valitse toinen strategia.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Suositeltu määritys", + "applyRecommendations": "Ota suositukset käyttöön", + "recommendationsUpdated": "Kohteen {strategy} suositukset päivitetty.", + "recommendationsApplied": "Suositukset otettu käyttöön tässä yhdistelmässä.", + "intelligentPanelTitle": "Älykkään reitityksen koontinäyttö", + "intelligentPanelDesc": "Tämän automaattisen reititysyhdistelmän reaaliaikaiset pisteet ja toimintatila.", "configOnlyStatus": "Määritysnäkymä", "configOnlyHint": "Tämä paneeli näyttää vain reitityssyötteet. Katkaisijan reaaliaikainen tila on saatavilla Health-sivulla.", "routingInputs": "Reitityssyötteet", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Tuntematon tarjoajan etuliite.", "builderDynamicAccountShort": "Dynaaminen tili", "builderNeedValidName": "Määritä kelvollinen yhdistelmän nimi ennen jatkamista.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Tilan yleiskatsaus", + "normalOperation": "Normaali toiminta", + "allProvidersHealthy": "Palveluntarjoajien mukaan reititysolosuhteet ovat kunnossa.", + "incidentMode": "Häiriötila", + "highCircuitBreakerRate": "Katkaisijan korkea laukeamistiheys havaittu.", + "activeModePack": "Aktiivinen tilapaketti", + "modePackUpdated": "Tilapaketiksi päivitetty {pack}.", + "modePackHint": "Vaihda esiasetuksia painottaaksesi reititysmoottoria ilman yhdistelmän uudelleenluontia.", + "providerScores": "Palveluntarjoajien pisteet", + "allProvidersEvaluated": "Ehdokasjoukkoa ei ole määritetty. Kaikki aktiiviset palveluntarjoajat arvioidaan suorituksen aikana.", + "excludedProviders": "Poissuljetut palveluntarjoajat", + "excludedProvidersHint": "Palveluntarjoajat, joiden katkaisija on AUKI, suljetaan väliaikaisesti pois reitityksestä.", + "noExcludedProviders": "Yhtään palveluntarjoajaa ei ole tällä hetkellä suljettu pois.", + "cooldownMinutes": "Jäähdytysaika: {minutes} min", + "builderIntelligentTitle": "Älykkään reitityksen määritys", + "builderIntelligentDesc": "Määritä tämän automaattisen reititysyhdistelmän monitekijäinen pisteytysmoottori.", + "candidatePoolLabel": "Ehdokasjoukko", + "candidatePoolHint": "Valitse palveluntarjoajat, jotka tämän moottorin tulee arvioida. Jätä tyhjäksi käyttääksesi kaikkia aktiivisia palveluntarjoajia.", + "candidatePoolEmpty": "Aktiivisia palveluntarjoajia ei ole vielä saatavilla.", + "candidatePoolAllProviders": "Kaikki palveluntarjoajat", + "modePackLabel": "Tilapaketti", + "routerStrategyLabel": "Reititysstrategia", + "strategyRules": "Säännöt (kuuden tekijän pisteytys)", + "explorationRateLabel": "Tutkimisaste", + "explorationRateHint": "{percent} % pyynnöistä voi kokeilla muita kuin optimaalisia palveluntarjoajia.", + "budgetCapLabel": "Budjettiraja (USD / pyyntö)", + "budgetCapPlaceholder": "Ei rajaa", + "advancedWeightsTitle": "Lisäasetukset: pisteytyksen painotukset", "nestedComboFlatten": "Litistä sisäkkäiset yhdistelmät", "nestedComboExecute": "Suorita sisäkkäiset yhdistelmät kohteina", "effectiveRoutingShare": "Todellinen reititysosuus (paino ÷ kokonaismäärä)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kiintiö", + "weightHealth": "Toimintakunto", + "weightCostInv": "Kustannus", + "weightLatencyInv": "Viive", + "weightTaskFit": "Soveltuvuus tehtävään", + "weightStability": "Vakaus", + "weightTierPriority": "Taso", + "weightCacheAffinity": "Välimuistiosuman affiniteetti", "weightSessionAvailability": "Istunnon saatavuus", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Älykkään reitityksen määritys", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Vikasietoinen perustaso", + "description": "Käytä yhtä ensisijaista mallia ja pidä varamalliketju lyhyenä ja luotettavana.", + "tip1": "Aseta luotettavin mallisi ensimmäiseksi.", + "tip2": "Pidä 1–2 laadultaan vastaavaa varamallia.", + "tip3": "Käytä turvallisia uudelleenyrityksiä tilapäisten palveluntarjoajavirheiden varalta." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Hallittu liikenteen jako", + "description": "Sopii erinomaisesti canary-käyttöönottoihin ja asteittaiseen siirtymiseen mallien välillä.", + "tip1": "Aloita maltillisella jaolla, kuten 90/10.", + "tip2": "Pidä kokonaismäärä 100 prosentissa ja tasapainota se automaattisesti muutosten jälkeen.", + "tip3": "Seuraa onnistumisastetta ja viivettä ennen canary-painon kasvattamista." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Ennakoitava kuormanjako", + "description": "Sopii parhaiten tilanteisiin, joissa mallit ovat samanarvoisia ja tarvitset tasaisen jakauman.", + "tip1": "Käytä vähintään kahta mallia.", + "tip2": "Aseta rinnakkaisuusrajat äkillisen ylikuormituksen välttämiseksi.", + "tip3": "Käytä jonon aikakatkaisua, jotta pyyntö epäonnistuu nopeasti kapasiteetin täyttyessä." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Nopea jakelu vähäisellä määrityksellä", + "description": "Käytä, kun tarvitset yksinkertaisen jakauman ilman tiukkoja takuita.", + "tip1": "Käytä malleja, joiden viiveprofiilit ovat samankaltaisia.", + "tip2": "Pidä uudelleenyritykset käytössä satunnaisten epäonnistumisten varalta.", + "tip3": "Suosi tätä kokeiluissa, älä tiukkojen SLA-vaatimusten yhteydessä." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Mukautuva tasapainotus", + "description": "Reitittää vähemmän käytetyille malleille vähentääkseen kuormitushuippuja ajan mittaan.", + "tip1": "Toimii paremmin jatkuvassa liikenteessä.", + "tip2": "Yhdistä kuntotarkistuksiin turvallisempaa tasapainotusta varten.", + "tip3": "Seuraa mallikohtaista käyttöä jakauman paranemisen varmistamiseksi." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Budjetti edellä tehtävä reititys", + "description": "Reitittää edullisempiin malleihin, kun hintatiedot ovat saatavilla.", + "tip1": "Varmista, että kaikkien valittujen mallien hintatiedot ovat saatavilla.", + "tip2": "Pidä laadukas varamalli vaikeita kehotteita varten.", + "tip3": "Käytä eräajoissa ja taustatöissä, joissa kustannukset ovat tärkein KPI-mittari." }, "reset-aware": { "title": "Nollaa tietoinen tilin kierto", @@ -3597,11 +3597,11 @@ "tip3": "Pidä sidenauha pienenä, jotta vastaavat tilit pyörivät edelleen tasaisesti." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Sekoitetun pakan jakauma", + "description": "Kutakin mallia käytetään täsmälleen kerran kierrosta kohden ennen uutta sekoitusta.", + "tip1": "Käytä vähintään kahta mallia mielekkään jakauman saavuttamiseksi.", + "tip2": "Toimii parhaiten suorituskyvyltään vastaavien mallien kanssa.", + "tip3": "Ihanteellinen kuormantasaamiseen useiden API-tilien välillä." }, "fill-first": { "description": "Tyhjennä pakokaasuntoimittajan kiintiöt peräkkäin ennen palautumista.", @@ -3646,86 +3646,86 @@ "title": "Kahden valinnan voima" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Ilmainen pino ($0)", + "templateFreeStackDesc": "Vuorottelu kaikkien ilmaisten palveluntarjoajien välillä: Kiro (Claude), Qoder (5 mallia), Qwen (4 mallia). Täysin ilmainen, koodaus ei keskeydy koskaan.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP-tila", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Yhdistelmien käytön aloittaminen", + "wizardGuideDesc": "Luo malliyhdistelmiä ohjataksesi tekoälyliikennettä älykkäästi", + "wizardGuideHint": "tai napsauta yllä olevaa + Luo yhdistelmä -painiketta", + "createFirstCombo": "Luo ensimmäinen yhdistelmäsi", + "wizardStep1Title": "Nimeä yhdistelmäsi", + "wizardStep1Desc": "Anna yhdistelmällesi yksilöllinen nimi, jonka avulla se tunnistetaan reitityssäännöissä", + "wizardStep2Title": "Lisää malleja", + "wizardStep2Desc": "Valitse tekoälymallit ja järjestä ne varajärjestyksen mukaan", + "wizardStep3Title": "Valitse strategia", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Tarkista ja tallenna", + "wizardStep4Desc": "Tarkista määritykset ja aktivoi yhdistelmä", + "usageGuideInvokeTitle": "Näin kutsut tätä yhdistelmää", + "usageGuideInvokeDesc": "Lähetä mallina yhdistelmän tarkka nimi, esim. model: \"my-combo\" (tai combo/my-combo).", + "usageGuideInvokeAutoNote": "auto ja auto/* ovat erillinen ilman määrityksiä toimiva reititin, joka ei käytä yhdistelmiäsi (ellei jonkin yhdistelmän nimi ole kirjaimellisesti auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto on oikea maksullinen OpenRouter-tuote (Auto Best Available), ei OmniRoute-alias — sulje se pois kohdassa Asetukset → Reititys → Piilota maksulliset mallit.", + "emailVisibilityStateOn": "Käytössä", + "emailVisibilityStateOff": "Pois käytöstä", + "reorderHandle": "Muuta järjestystä vetämällä", + "failedReorder": "Mallien järjestyksen muuttaminen epäonnistui", + "builderFlowTitle": "Yhdistelmän luontiprosessi", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Perustiedot", + "description": "Nimi ja aloitusmalli" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Vaiheet", + "description": "Palveluntarjoajan, mallin ja tilin valinta" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategia", + "description": "Reititystoiminta ja lisäasetukset" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Älykäs reititys", + "description": "Automaattisen reitityksen ehdokasjoukko, esiasetukset ja pisteytys" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Tarkistus", + "description": "Lopullinen vahvistus ennen tallentamista" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Vaihe suoritettu", + "builderStageCurrent": "Nykyinen vaihe", + "builderStagePending": "Odottaa", + "builderStageLocked": "Lukittu — suorita ensin edellinen vaihe", + "builderTitle": "Luo yhdistelmä", + "builderBrowseCatalog": "Selaa luetteloa", + "builderProvider": "Palveluntarjoaja", + "builderLoadingProviders": "Ladataan palveluntarjoajia...", + "builderSelectProvider": "Valitse palveluntarjoaja", + "builderModel": "Malli", + "builderSelectModel": "Valitse malli", + "builderProviderFirst": "Valitse ensin palveluntarjoaja", + "builderAccount": "Tili", + "builderPreview": "Esikatselu", + "builderAddStep": "Lisää vaihe", "builderDuplicateExact": "Tämä tarkka toimittaja/malli/tilivaihe on jo yhdistelmässä.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Yhdistelmäviite", + "builderAddComboRef": "Lisää yhdistelmäviite", + "builderComboRefStep": "Lisää yhdistelmäviite", + "builderPinnedAccount": "Kiinnitetty tili", + "builderLegacyEntry": "Vanha merkintä", + "reviewName": "Nimi", + "reviewStrategy": "Strategia", + "reviewSteps": "Vaiheet", + "reviewAccounts": "Tilit", + "reviewProviders": "Palveluntarjoajat", + "reviewComboRefs": "Yhdistelmäviitteet", + "reviewAdvanced": "Lisäasetukset", + "reviewAgentFlags": "Agentin asetukset", + "reviewSequence": "Mallijärjestys", + "reviewNoSteps": "Vaiheita ei ole määritetty", "builderStagesDescription": "Suorita jokainen vaihe, jotta voit määrittää komboja, rakentaa vaiheita, valita reititysstrategian ja tarkastella tuloksia.", "builderStepsDescription": "Rakenna jokainen yhdistelmävaihe järjestyksessä: toimittaja, malli ja sitten tili. Tämä mahdollistaa saman palveluntarjoajan ja mallin uudelleenkäytön eri tileillä.", "selectProvider": "Valitse Palveluntarjoaja", @@ -3766,7 +3766,7 @@ "agentFeaturesContextLengthErrorInteger": "Kontekstin pituuden on oltava kelvollinen kokonaisluku", "agentFeaturesContextLengthErrorRange": "Kontekstin pituuden on oltava välillä 1000–2000000", "compressionOverride": "Pakkauksen ohitus", - "modePack": "Mode Pack", + "modePack": "Tilapaketti", "disableSessionStickiness": "Poista istuntotarttuvuus käytöstä", "sessionStickinessEnabled": "Tarttuvuus päällä", "sessionStickinessDisabled": "Tarttuvuus pois päältä", @@ -3800,31 +3800,31 @@ "range7d": "7 päivää", "range30d": "30 päivää", "range90d": "90 päivää", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 päivää", + "range365d": "365 päivää", "rangeAll": "Kaikki aika", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Aktiiviset mallit", + "flatRateEstimateNotice": "Sisältää kiinteähintaisten tilausten tunnushinta-arviot, ei laskutettuja kustannuksia.", + "flatRateEstimateForecast": "Ennuste sisältää kiinteähintaiset arviot.", + "selectedWindow": "Valittu ajanjakso", + "activeProviders": "Aktiiviset palveluntarjoajat", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Kulutus tänään", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Palveluntarjoajien osuudet", + "topProviders": "Suosituimmat palveluntarjoajat", + "costTrend": "Kustannuskehitys", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Suosituimmat mallit", "requestsInWindow": "Requests In Window", "tokenUsage": "Tokenin käyttö", "totalTokens": "Tokeneja yhteensä", - "inputTokens": "Input Tokens", + "inputTokens": "Syötetunnukset", "outputTokens": "Tulostustunnukset", "inputOutputRatio": "Tulo/lähtösuhde", "tokens": "rahakkeita", @@ -3863,7 +3863,7 @@ "groupAccount": "Tili", "groupServiceTier": "Palvelutaso", "serviceTierFast": "Nopea", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Joustava", "serviceTierStandard": "Standardi", "serviceTierBreakdownTitle": "Palvelutaso", "serviceTierBreakdownSubtitle": "Fast / Flex / Standard -jako", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API-päätepiste", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Käytä OpenAI-yhteensopivaa päätepistettä useimpien SDK:iden ja työkalujen kanssa.", + "testEndpoint": "Testaa päätepistettä →", + "advancedProtocols": "Edistyneet protokollat", "available": "Käytettävissä olevat päätepisteet", "cloudProxy": "Pilvivälityspalvelin", "disableConfirm": "Haluatko varmasti poistaa pilvivälityspalvelimen käytöstä?", @@ -3900,7 +3900,7 @@ "disableCloud": "Poista Cloud käytöstä", "enableCloud": "Ota Cloud käyttöön", "modelsAcrossEndpoints": "{models} mallit {endpoints} päätepisteen välillä", - "loadingModels": "Loading available models...", + "loadingModels": "Ladataan saatavilla olevia malleja...", "chatDesc": "Suoratoisto ja ei-striimaus chat kaikkien palveluntarjoajien kanssa", "embeddings": "Upotukset", "embeddingsDesc": "Tekstin upotukset haku- ja RAG-putkistoja varten", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Literoi äänitiedostot tekstiksi (kuiskaus)", "textToSpeech": "Tekstistä puheeksi", "textToSpeechDesc": "Muunna teksti luonnolliselta kuulostavaksi puheeksi", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Musiikin generointi", + "musicDesc": "Generoi musiikkia ja ääniraitoja ComfyUI:n avulla (Stable Audio, MusicGen)", "moderations": "Moderaatiot", "moderationsDesc": "Sisällön moderointi ja turvallisuusluokitus", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API Codexia ja edistyneitä agenttipohjaisia työnkulkuja varten", + "listModelsDesc": "Luettele kaikki saatavilla olevat mallit kaikilta yhdistetyiltä palveluntarjoajilta", + "settingsApiDesc": "Lue ja muokkaa OmniRoute-määrityksiä API:n kautta", + "settingsApi": "Asetusten API", "categoryCore": "Ydin-API:t", "categoryMedia": "Media & Monimuotoinen", - "categorySearch": "Search & Discovery", + "categorySearch": "Haku ja löytäminen", "categoryUtility": "Apuohjelmat & Hallinta", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Verkkohaku", + "webSearchDesc": "Yhtenäinen verkkohaku useilta palveluntarjoajilta automaattisella varajärjestelyllä ja välimuistilla", + "searchProvider": "Hakupalveluntarjoaja", + "searchProviderDesc": "Tätä palveluntarjoajaa käytetään verkkohakuun päätepisteen POST /v1/search kautta. Mallimäärityksiä ei tarvita — hakupalveluntarjoajat ovat käyttövalmiita, kun API-avain on yhdistetty.", "enableCloudTitle": "Ota Cloud Proxy käyttöön", "whatYouGet": "Mitä saat", "cloudBenefitAccess": "Käytä sovellusliittymääsi mistä päin maailmaa tahansa", @@ -3963,29 +3963,29 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Ota tunneli käyttöön", + "cloudflaredInstallAndEnable": "Asenna ja ota käyttöön", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Käynnissä", + "cloudflaredStarting": "Käynnistetään", + "cloudflaredStoppedState": "Pysäytetty", + "cloudflaredNotInstalled": "Ei asennettu", + "cloudflaredUnsupported": "Ei tuettu", + "cloudflaredError": "Virhe", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Viimeisin virhe: {error}", "providerModelsTitle": "{provider} – Mallit", "noModelsForProvider": "Tälle tarjoajalle ei ole saatavilla malleja.", "chat": "Chat", "embedding": "Upottaminen", "image": "Kuva", "custom": "mukautettu", - "modelsCount": "{count, plural, one {# model} other {# models}}", + "modelsCount": "{count, plural, one {# malli} other {# mallia}}", "sectionTitle": "Integrointipinta", "sectionDescription": "OpenAI-yhteensopivat API:t ja toimintaprotokollan päätepisteet", "tabApis": "API:t", @@ -3994,17 +3994,17 @@ "protocolsTitle": "Protokollat", "protocolsDescription": "MCP ja A2A ovat ensiluokkaisia päätepisteitä, joissa on omistettu tarkkailtavuus ja hallinta.", "mcpCardTitle": "MCP-palvelin", - "mcpCardDescription": "Model Context Protocol over stdio", + "mcpCardDescription": "Model Context Protocol stdio-yhteyden kautta", "a2aCardTitle": "A2A palvelin", "a2aCardDescription": "Agent2Agent JSON-RPC -päätepiste", "protocolToolsLabel": "Työkalut", "protocolTasksLabel": "Tehtävät", "protocolActiveStreamsLabel": "Aktiiviset streamit", - "protocolLastActivity": "Last activity", + "protocolLastActivity": "Viimeisin toiminta", "quickStart": "Pika-aloitus", "openMcpDashboard": "Avaa MCP-hallinta", "openA2aDashboard": "Avaa A2A-hallinta", - "mcpQuickStartTitle": "MCP Quick Start", + "mcpQuickStartTitle": "MCP-pika-aloitus", "mcpQuickStartStep1": "Suorita MCP-palvelin `omniroute --mcp`:n kautta.", "mcpQuickStartStep2": "Määritä MCP-asiakas muodostamaan yhteys stdio-siirron kautta.", "mcpQuickStartStep3": "Kutsu työkaluja, kuten `omniroute_get_health` ja `omniroute_list_combos`.", @@ -4012,8 +4012,8 @@ "a2aQuickStartStep1": "Tutustu agenttikorttiin osoitteessa `/.well-known/agent.json`.", "a2aQuickStartStep2": "Lähetä JSON-RPC-pyynnöt osoitteeseen `POST /a2a` käyttämällä `message/send` tai `message/stream`.", "a2aQuickStartStep3": "Seuraa ja ohjaa tehtäviä käyttämällä `tasks/get` ja `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Täydennykset (vanha)", + "completionsLegacyDesc": "Vanha OpenAI-tekstintäydennys — hyväksyy sekä kehotemerkkijonon että viestitaulukon muodon", "messagesApi": "Viestit", "messagesApiDesc": "Alkuperäinen Anthropic Messages API -muoto Claude-yhteensopiville palveluntarjoajille", "imageEdits": "Kuvan muokkaukset", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Käsittele suuria pyyntöeriä asynkronisesti (OpenAI-yhteensopiva)", "filesApi": "Tiedostojen API", "filesApiDesc": "Lataa ja hallitse tiedostoja eräkäsittelyä varten", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Videoiden generointi", + "videoDesc": "Generoi videoita käyttämällä tekoälymalleja, kuten ComfyUI ja Stable Video Diffusion.", + "tailscaleRequestFailed": "Tailscale-tilan lataaminen epäonnistui", + "tailscaleEnableFailed": "Tailscale Funnelin käyttöönotto epäonnistui", + "tailscaleWaitingForLogin": "Viimeistele Tailscale-kirjautuminen avautuneessa selainvälilehdessä. OmniRoute yrittää automaattisesti uudelleen.", + "tailscaleLoginTimedOut": "Tailscale-kirjautumisen odotus aikakatkaistiin", + "tailscaleWaitingForFunnel": "Ota Funnel käyttöön tälle laitteelle avautuneessa selainvälilehdessä. OmniRoute jatkaa tilan tarkistamista.", + "tailscaleFunnelTimedOut": "Tailscale Funnelin käyttöönoton odotus aikakatkaistiin", + "tailscaleStarted": "Tailscale Funnel otettu käyttöön", + "tailscaleDisableFailed": "Tailscale Funnelin poistaminen käytöstä epäonnistui", + "tailscaleStopped": "Tailscale Funnel poistettu käytöstä", + "tailscaleInstallFailed": "Tailscalen asentaminen epäonnistui", + "tailscaleInstallProgress": "Käsitellään...", + "tailscaleInstalled": "Tailscale asennettu onnistuneesti", + "tailscaleRunning": "Käynnissä", + "tailscaleNeedsLogin": "Vaatii kirjautumisen", + "tailscaleStoppedState": "Pysäytetty", + "tailscaleNotInstalled": "Ei asennettu", + "tailscaleUnsupported": "Ei tuettu", + "tailscaleError": "Virhe", + "tailscaleDisable": "Pysäytä Funnel", + "tailscaleInstallAndEnable": "Asenna ja ota käyttöön", + "tailscaleLoginAndEnable": "Kirjaudu sisään ja ota käyttöön", + "tailscaleEnable": "Ota Funnel käyttöön", + "tailscaleUrlNotice": "Käyttää Tailscale .ts.net -osoitettasi. Ensimmäisellä käyttökerralla voidaan vaatia kirjautuminen ja Funnelin hyväksyminen.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Todenna tämä laite Tailscalessa ja ota sitten Funnel käyttöön.", + "tailscaleBinaryPath": "Binääritiedosto: {path}", + "tailscaleLastError": "Viimeisin virhe: {error}", + "tailscaleInstallTitle": "Asenna Tailscale", + "tailscaleInstallIntro": "Asentaa Tailscalen tälle laitteelle ja valmistelee OmniRouten ottamaan Funnelin käyttöön.", + "tailscaleInstallPasswordHint": "macOS- ja Linux-järjestelmissä paketin asentaminen ja taustapalvelun käynnistäminen voivat edellyttää sudo-komentoa.", + "tailscaleSudoPlaceholder": "Valinnainen sudo-salasana", + "tailscaleInstalling": "Asennetaan", "tailscaleSudoLabel": "Sudo-salasana (pakollinen macOS/Linuxissa)", "ngrokTitle": "ngrok tunneli", "ngrokRunning": "Juoksemassa", @@ -4144,9 +4144,9 @@ "tierPublic": "Julkinen", "hideInternal": "Piilota sisäiset", "showInternal": "Näytä sisäiset", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Mukautettu järjestelmäkehote", + "customSystemPromptDescription": "Lisää mukautettu järjestelmäkehote jokaiseen mallipyyntöön", + "customSystemPromptPlaceholder": "esim. Vastaa aina merirosvotyyliin...", "obsidianEnterToken": "Syötä Obsidian API -token", "obsidianConnectFailed": "Yhdistäminen epäonnistui", "obsidianConnectionFailed": "Yhteys epäonnistui", @@ -4195,16 +4195,16 @@ "notionTokenConfigured": "Token on määritetty. Notion-työkalut ovat saatavilla MCP:n kautta." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Päätepistevälityspalvelin", + "tabApiEndpoints": "API-päätepisteet", + "apiEndpointsTitle": "API-päätepisteet", + "apiEndpointsDescription": "Taustajärjestelmän API-päätepisteet, joita muut sovellukset ja palvelut voivat käyttää. Tässä osiossa luetellaan kaikki käytettävissä olevat REST-rajapinnat sekä niiden dokumentaatio- ja testausominaisuudet.", + "comingSoon": "Tulossa pian", + "plannedFeatures": "Suunnitellut ominaisuudet", + "featureRestApi": "REST API -päätepisteluettelo interaktiivisella dokumentaatiolla", + "featureWebhooks": "Webhook-määritykset ja tapahtumatilaukset", + "featureSwagger": "OpenAPI / Swagger -määrittelyn automaattinen luonti", + "featureAuth": "API-avaimen ja OAuth-käyttöoikeusalueiden hallinta päätepisteittäin" }, "mcpDashboard": { "loading": "Ladataan MCP-hallintapaneelia...", @@ -4259,7 +4259,7 @@ "activateCombo": "Aktivoi yhdistelmä", "deactivateCombo": "Poista yhdistelmä käytöstä", "applyResilienceProfile": "Käytä joustavuusprofiilia", - "profileAggressive": "aggressive", + "profileAggressive": "aggressiivinen", "profileBalanced": "tasapainoinen", "profileConservative": "konservatiivinen", "applyProfile": "Käytä profiilia", @@ -4287,31 +4287,31 @@ "failed": "epäonnistunut", "previous": "Edellinen", "next": "Seuraavaksi", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "apiKeyId": "API-avaimen tunnus", + "offset": "Siirtymä", + "limit": "Raja", + "tool": "Työkalu" }, "a2aDashboard": { "loading": "Ladataan A2A-hallintapaneelia...", "confirmCancelTask": "Peruutetaanko tehtävä {taskId}?", "cancelTaskFailed": "Tehtävän peruuttaminen epäonnistui.", "cancelTaskSuccess": "Tehtävä {taskId} peruutettu.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "smokeSendFailed": "message/send-pikatesti epäonnistui.", + "smokeSendSuccessWithTask": "message/send onnistui (tehtävä {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream-pikatesti epäonnistui.", + "smokeStreamSuccessWithTask": "message/stream onnistui (tehtävä {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream päättyi ilman tehtävätunnusta.", + "health": "Terveys", "ok": "ok", - "totalTasks": "Total tasks", + "totalTasks": "Tehtäviä yhteensä", "activeStreams": "Aktiiviset streamit", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "lastTask": "Viimeisin tehtävä", + "taskStateOverview": "Tehtävien tilojen yleiskatsaus", "state": { - "submitted": "submitted", - "working": "working", + "submitted": "lähetetty", + "working": "käsittelyssä", "completed": "valmiiksi", "failed": "epäonnistunut", "cancelled": "peruutettu" @@ -4323,18 +4323,18 @@ "capabilities": "Ominaisuudet", "agentCardNotAvailable": "Agenttikorttia ei ole saatavilla.", "quickValidation": "Nopea vahvistus", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", + "quickValidationDescription": "Suorittaa pikatestikutsut aktiivisen `/a2a`-päätepisteen kautta.", + "runMessageSend": "Suorita message/send", + "runMessageStream": "Suorita message/stream", + "taskManagement": "Tehtävien hallinta", + "taskSummary": "{total} tehtävää | sivu {page}/{totalPages}", + "allStates": "kaikki", + "allSkills": "kaikki taidot", + "loadingTasks": "Ladataan tehtäviä...", + "noTasksForFilters": "Nykyisillä suodattimilla ei löytynyt tehtäviä.", + "tableTask": "Tehtävä", + "tableSkill": "Taito", + "tableState": "Tila", "tableUpdated": "Päivitetty", "tableActions": "Toiminnot", "view": "Näytä", @@ -4346,18 +4346,18 @@ "metadata": "Metatiedot", "events": "Tapahtumat", "artifacts": "Artefaktit", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "tablePhase": "Taulukkovaihe", + "offset": "Siirtymä", + "limit": "Raja", + "skill": "Taito", "rpcEndpoint": "POSTITUS /a2a", "rpcMethodSend": "viesti/lähetä", "rpcMethodStream": "viesti/stream", "rpcMethodGet": "tehtäviä/saa", "rpcMethodCancel": "tehtävät/peruuta", "serviceLabel": "A2A", - "online": "Online", - "offline": "Offline", + "online": "Verkossa", + "offline": "Ei verkossa", "disableLabel": "Poista {label} käytöstä", "enableLabel": "Ota {label} käyttöön", "a2aDisabledTitle": "A2A on poistettu käytöstä", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Toiminnot", + "addMemory": "Lisää muisti", + "allTypes": "Kaikki tyypit", "cancel": "Peruuta", "checkHealth": "Tarkista terveys", "checkingHealth": "Tarkistetaan…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Kuinka se toimii", "howWorksContent": "1. Automaattinen poiminta: jokaisen vastauksen lopussa faktat ja episodit havaitaan ja tallennetaan automaattisesti.\n2. Haku: ennen jokaista vastausta osuvimmat muistot haetaan FTS5:n (tarkka), vektorin (semanttinen) tai hybridi-RRF:n avulla.\n3. Syöttö: olennaiset muistot syötetään avustajan kontekstiin vastausten laadun parantamiseksi.\n4. Hallinta: käytä tätä sivua vanhojen muistojen tarkasteluun, muokkaamiseen, vientiin ja tiivistämiseen." }, - "content": "Content", + "content": "Sisältö", "contentPlaceholder": "Muista arvo tai JSON-sisältö", - "created": "Created", - "delete": "Delete", + "created": "Luotu", + "delete": "Poista", "deleteConfirmDesc": "Tätä toimintoa ei voi kumota. Muisto poistetaan pysyvästi.", "deleteConfirmTitle": "Poistetaanko muisto?", - "description": "View and manage stored memory entries", + "description": "Tarkastele ja hallitse tallennettuja muistimerkintöjä", "editMemory": "Muokkaa muistoa", "editModal": { "title": "Muokkaa muistoa", @@ -4444,20 +4444,20 @@ "configureCta": "Määritä", "vectorStoreInstallHint": "Vektorihaun ottaminen käyttöön: npm install sqlite-vec (vaatii natiivin Node.js:n, ei WASM), ja käynnistä sitten uudelleen." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodinen", + "export": "Vie", + "factual": "Faktapohjainen", "healthUnknown": "Terveys tuntematon", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Osumaprosentti", + "import": "Tuo", "importError": "Tiedoston tuonti epäonnistui", "importResult": "{imported} tuotu, {skipped} ohitettu", - "key": "Key", + "key": "Avain", "keyPlaceholder": "esim. user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Muistit", "next": "Seuraavaksi", - "noMemories": "No memories found", + "noMemories": "Muistimerkintöjä ei löytynyt", "pageInfo": "Sivu {page} / {totalPages} (yhteensä {total})", "pipelineError": "Putkilinjan virhe", "pipelineOk": "Putkilinja OK ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "Esikatselun noutaminen epäonnistui" }, "previous": "Edellinen", - "procedural": "Procedural", + "procedural": "Proseduraalinen", "qdrant": { "title": "Qdrant (Vektorivarasto Tier 2)", "description": "Valinnainen Qdrant-integraatio skaalautuvaa semanttista hakua varten", @@ -4534,8 +4534,8 @@ }, "save": "Tallenna", "saving": "Tallennetaan...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Hae muisteista...", + "semantic": "Semanttinen", "summarize": { "title": "Tiivistä vanhat muistot", "noCandidates": "Ei tiivistettäväksi soveltuvia muistoja (kriteeri: >30 päivää vanha).", @@ -4545,10 +4545,10 @@ "tabs": { "memories": "Muistot", "playground": "Kokeiluympäristö", - "engine": "Engine" + "engine": "Moottori" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Muistinhallinta", + "tokensUsed": "Käytetyt tokenit", "tooltip": { "totalEntries": "Tälle API-avaimelle tallennettujen muistojen kokonaismäärä", "tokensUsed": "Aktiivisten muistojen varaama arvioitu tokenien kokonaismäärä", @@ -4558,15 +4558,15 @@ "procedural": "Menettelyt, työnkulut ja ohjeet, joita avustajan tulee noudattaa", "semantic": "Käsitteet, mieltymykset ja toimialatieto" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Merkintöjä yhteensä", + "type": "Tyyppi", "memoryEnabled": "Muisti käytössä" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Taidot", + "description": "Hallitse ja valvo tekoälytaitoja", + "skillsTab": "Taidot", + "executionsTab": "Suoritukset", "selectSkillToInspect": "Valitse tarkasteltava taito vasemmalta.", "schemaTab": "Skeema", "handlerTab": "Käsittelijä", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Suorita testi (paikkamerkki)", "setModeAria": "Aseta tilaksi {mode}", "uninstallSkill": "Poista taidon asennus", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Hiekkalaatikko", + "loading": "Ladataan taitoja...", + "noSkills": "Taitoja ei löytynyt", + "noExecutions": "Suorituksia ei löytynyt", + "enabled": "Käytössä", + "disabled": "Pois käytöstä", "delete": "Poista", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "Versio", + "tableDescription": "Kuvaus", + "skill": "Taito", + "status": "Tila", + "duration": "Kesto", + "time": "Aika", + "sandboxConfig": "Hiekkalaatikon määritykset", + "cpuLimit": "Suoritinraja", + "cpuLimitDesc": "Taidon enimmäissuoritusaika", + "memoryLimit": "Muistiraja", + "memoryLimitDesc": "Muistin enimmäisvaraus", + "timeout": "Aikakatkaisu", + "timeoutDesc": "Vastauksen enimmäisodotusaika", + "networkAccess": "Verkkoyhteys", + "networkAccessDesc": "Salli lähtevät verkkopyynnöt", + "mode": "Tila", "q": "Q", "filterSkillsPlaceholder": "Suodata taidot nimen, kuvauksen tai tunnisteen mukaan", "allModes": "Kaikki tilat", @@ -4612,7 +4612,7 @@ "popularDefaultsLabel": "Suosittu oletuksena valitulle tarjoajalle:", "onMode": "PÄÄLLÄ", "offMode": "POIS", - "autoMode": "AUTO", + "autoMode": "AUTOMAATTINEN", "installSkillButton": "Asenna taito", "installSkillModalTitle": "Asenna taito", "installJsonPlaceholder": "Liitä taidon manifesti-JSON tähän...", @@ -4657,7 +4657,7 @@ "lastCheck": "Viimeinen tarkistus", "providerHealth": "Palveluntarjoajan terveys", "systemMetrics": "Järjestelmän mittarit", - "tokenHealth": "Token Health", + "tokenHealth": "Tunnuksen kunto", "refreshAll": "Päivitä kaikki", "checkNow": "Tarkista nyt", "loadingHealth": "Ladataan terveystietoja…", @@ -4665,13 +4665,13 @@ "retry": "Yritä uudelleen", "allOperational": "Kaikki järjestelmät toimivat", "issuesDetected": "Järjestelmäongelmia havaittu", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute on valmis", + "healthVerdictActionRequired": "Täyden toiminnan palauttaminen edellyttää toimenpiteitä", + "healthVerdictCoolingDown": "Jäähtyy viimeaikaisten muutosten jälkeen", + "healthSubtitle": "Järjestelmän kuntotarkistus", + "advancedDiagnosticsTitle": "Edistynyt diagnostiikka", + "hide": "Piilota", + "show": "Näytä", "updatedAt": "Päivitetty {time}", "latency": "Latenssi", "latencyP50": "p50", @@ -4698,16 +4698,16 @@ "providers": "Palveluntarjoajat", "configuredProvidersLabel": "Konfiguroitu kojelaudassa", "configuredProvidersHint": "Palveluntarjoajat, joiden valtuustiedot on tallennettu kansioon /dashboard/providers, suorituksen tilasta riippumatta.", - "activeProviders": "{count} active", + "activeProviders": "{count} aktiivista", "activeProvidersHint": "Määritetyt palveluntarjoajat, jotka ovat tällä hetkellä käytössä reitityspyyntöjä varten.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} valvottua", "monitoredProvidersHint": "Palveluntarjoajat, joita tällä hetkellä seurataan katkaisijoiden kuntovalvojien avulla.", "healthyCount": "{count} terve", "nodeVersion": "Solmu {version}", "failures": "{count} virhe", "failuresPlural": "{count} virheitä", "lastFailure": "Viimeinen", - "rateLimitStatus": "Rate Limit Status", + "rateLimitStatus": "Nopeusrajoituksen tila", "activeLimiters": "{count} aktiivinen rajoitin", "activeLimitersPlural": "{count} aktiiviset rajoittimet", "queued": "Jonossa", @@ -4721,11 +4721,11 @@ "resetting": "Nollataan...", "resetAll": "Nollaa kaikki", "until": "{time} asti", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Käytetty loppuun", + "learnedFromHeaders": "Opittu otsakkeista", + "remainingOfLimit": "{remaining}/{limit} jäljellä", + "throttleStatus": "Rajoitus: {value}", + "lastHeaderUpdate": "Otsakkeen päivitys: {age}", "databaseHealth": "Tietokannan terveys", "databaseHealthDescription": "Diagnosoi ja korjaa vanhentuneet kiintiö-/verkkotunnusrivit ja rikkoutuneet yhdistelmäviittaukset.", "status": "Tila", @@ -4752,7 +4752,7 @@ "sessionsByApiKey": "Istunnot API-avaimella", "noActiveSessionsTracked": "Aktiivisia istuntoja ei ole vielä seurattu.", "noSessionQuotaMonitorsActive": "Ei aktiivisia istuntokiintiön valvontalaitteita.", - "gracefulDegradationStatus": "Graceful Degradation Status", + "gracefulDegradationStatus": "Hallitun suorituskyvyn heikentämisen tila", "additionalModels": "+{count} lisää malleja", "providerHealthMatrixTitle": "Tarjoajien tilamatriisi", "providerHealthMatrixDescription": "Tarjoaja × tili × malli -tilat katkaisijoista, jäähtymisajoista, lukituksista ja lokeista.", @@ -4852,7 +4852,7 @@ }, "limits": { "title": "Rajoitukset ja kiintiöt", - "rateLimit": "Rate Limit", + "rateLimit": "Nopeusrajoitus", "remaining": "Jäljellä", "requestsPerMinute": "Pyynnöt/min", "tokensPerMinute": "Tokenit/min", @@ -4888,28 +4888,28 @@ "previous": "Edellinen", "next": "Seuraavaksi", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Näytä tiedot", + "eventMetadata": "Tapahtuman metatiedot", + "eventPayload": "Tapahtuman sisältö", + "requestId": "Pyynnön tunnus", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "Siirtymä", + "limit": "Raja", + "status": "Tila", + "resourceType": "Resurssityyppi", + "totalEntries": "Merkintöjä yhteensä", + "tab": "Välilehti", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Sulje", + "runningRequests": "Aktiiviset pyynnöt", + "runningRequestsDesc": "Reaaliaikainen näkymä parhaillaan käynnissä olevista upstream-pyynnöistä", "clearAll": "Tyhjennä kaikki", "confirmClearActiveRequests": "Poistetaanko kaikki aktiiviset pyynnöt?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "Malli", + "provider": "Palveluntarjoaja", + "account": "Tili", + "elapsed": "Kulunut aika", "activeStage": "Vaihe", "activeStageUnknown": "Ei vielä lähetetty ylävirtaan", "activeStageRegistered": "Rekisteröity", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Nopeusrajoituspaikka saatu", "activeStageSendingToProvider": "Lähetetään ylävirtaan", "activeStageProviderResponseStarted": "Ylävirran vastaus alkanut", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Määrä", + "payloads": "Hyötykuormat", + "viewPayloads": "Näytä", + "activeCount": "{count} aktiivista", + "clientPayload": "Asiakaspyynnön hyötykuorma", + "upstreamPayload": "Upstream-palveluntarjoajan hyötykuorma", + "upstreamNotSentYet": "Ei ole vielä lähetetty upstream-palveluun", + "runningRequestDetailMeta": "Tili: {account} — Kulunut aika: {elapsed}", + "export": "Vie", + "exporting": "Viedään...", + "exportFailed": "Vienti epäonnistui", "cleanHistoryButton": "Tyhjennä historia", "cleanHistoryTitle": "Tyhjennetäänkö lokihistoria?", "cleanHistoryMessage": "Tämä poistaa pysyvästi kaikki pyyntölokirivit, vanhat yksityiskohtarivit ja paikalliset artefaktitiedostot polusta DATA_DIR/call_logs. Reaaliaikainen sivu päivittyy puhdistuksen jälkeen.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Puhdistettu {deleted} lokimerkintää, {deletedArtifacts} artefaktia ja {deletedDetailedLogs} vanhaa yksityiskohtariviä.", "cleanHistoryEmpty": "Pyyntölokihistoriaa ei löytynyt.", "cleanHistoryFailed": "Lokihistorian tyhjentäminen epäonnistui.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Aikaväli", + "lastNHours": "Viimeiset {hours}", + "defaultRange": "oletus", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Lokien noutaminen epäonnistui", + "copyFailed": "Lokimerkinnän kopiointi epäonnistui", + "copyLogEntry": "Kopioi lokimerkintä", "filterByLevel": "Suodata lokitason mukaan", "searchPlaceholder": "Hae lokeista…", "searchAria": "Hae lokimerkintöjä", @@ -4984,12 +4984,12 @@ "setupComplete": "Asennus valmis!", "goToDashboard": "Siirry kohtaan Dashboard →", "welcomeDesc": "OmniRoute on paikallinen AI API -välityspalvelin. Se reitittää pyynnöt useille tekoälypalveluntarjoajille kuormituksen tasapainottamisen, vikasietoisuuden ja käytön seurannan avulla.", - "multiProvider": "Multi-Provider", + "multiProvider": "Useita palveluntarjoajia", "usageTracking": "Käytön seuranta", "securityDesc": "Aseta salasana kojelautasi suojaamiseksi tai ohita toistaiseksi.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Ilman salasanaa et voi lisätä palveluntarjoajia määrityksen aikana. Voit lisätä niitä myöhemmin hallintapaneelista salasanan asettamisen jälkeen.", "providerDesc": "Yhdistä ensimmäinen AI-palveluntarjoajasi. Voit lisätä myöhemmin lisää.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Sinun on ensin asetettava salasana, jotta voit lisätä palveluntarjoajia. Palaa suojausvaiheeseen ja aseta salasana tai lisää palveluntarjoajat myöhemmin hallintapaneelista.", "apiKeyRequired": "API-avain (pakollinen)", "customUrlOptional": "Muokattu URL-osoite (valinnainen)", "testDesc": "Varmistetaan, että palveluntarjoajayhteytesi toimii.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Tuodaan…", "importFromFileImport": "Tuo {count} tarjoajaa", "importFromFileResult": "Tuotu {success} tarjoajaa ({failed} epäonnistui)", + "importFromFileDownloadTemplate": "Lataa CSV-malli", + "importFromFileMoreErrors": "+{count} muuta", + "importFromFileSchemaHint": "CSV-sarakkeet ovat järjestysperusteisia: provider, name, apiKey, baseUrl (valinnainen), priority (valinnainen). provider-sarakkeen arvon on oltava olemassa olevan hallinnoidun palveluntarjoajan tunnus tai jo rekisteröidyn OpenAI/Anthropic-yhteensopivan solmun tunnus — tämä tuonti ei luo uusia päätepistesolmuja.", "adaptaTutorial": { "title": "Kuinka yhdistää Adapta Web", "introPrefix": "Adapta todennetaan Clerkin kautta. Tokeni", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} piilotettu", "warningCount": "{count} Varoitus", "noConnections": "Ei yhteyksiä", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Vanhentunut", + "expiringSoonBadge": "Vanhentuu pian", "freeTier": "Ilmainen taso", "freeTierAvailable": "Ilmainen taso saatavilla", "hasFreeTooltip": "Maksuton taso saatavilla", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Tämä palveluntarjoaja on poistettu käytöstä", "riskNotice": { "title": "Ennen jatkamista", - "detailsTitle": "Usage caveats", + "detailsTitle": "Käyttöä koskevat huomautukset", "tooltip": "Tarjoaja, jolla on käyttöä koskevia huomautuksia — napsauta nähdäksesi lisätiedot", "oauth": "Tämä tarjoaja käyttää virallista tuote-istuntoasi/OAuthia, jota ei ole valtuutettu välityspalvelin-/reititinkäyttöön. Emme suosittele intensiivistä autonomisten agenttien käyttöä (OpenCloud-tyyliset, pitkät monivaiheiset työnkulut, suuret erät) — ylävirta saattaa reagoida rajoittamalla tiliä tai estämällä sen. Käyttö omalla vastuulla.", "webCookie": "Tämä tarjoaja todennetaan verkkosessiosi evästeiden kautta. Ylävirran palvelu voi mitätöidä istunnon milloin tahansa, jolloin sinun on kirjauduttava uudelleen sisään. Ei suositella pitkiin valvomattomiin toimintoihin. Käyttö omalla vastuulla.", @@ -5188,9 +5191,9 @@ "cancel": "Peruuta" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} yhteyttä merkitty — enintään {maxFailures} viimeaikaista epäonnistumista{lastFailureSuffix}. Näytä yhteyksien tila napsauttamalla.", + "lastFailureSuffix": "(viimeisin epäonnistuminen {time})", + "ariaLabel": "Näytä yhteyden tilan tiedot, {count} varoitusta" }, "disabled": "Ei käytössä", "enableProvider": "Ota palveluntarjoaja käyttöön", @@ -5225,7 +5228,7 @@ "failedCreate": "Palveluntarjoajan luominen epäonnistui", "errorOccurred": "Tapahtui virhe. Yritä uudelleen.", "modelStatus": "Mallin tila", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Vain määritetyt", "allModelsOperational": "Kaikki mallit toimivat", "modelsWithIssues": "{count} malli(t), joissa on ongelmia", "allModelsNormal": "Kaikki mallit reagoivat normaalisti.", @@ -5236,7 +5239,7 @@ "clearing": "Tyhjennetään...", "until": "{time} asti", "providerTestFailed": "Palveluntarjoajan testi epäonnistui", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Palveluntarjoajan testin aikakatkaisu — liian monta yhteyttä testattavaksi kerralla", "modeTest": "{mode} Testi", "passedCount": "{count} hyväksytty", "failedCount": "{count} epäonnistui", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "Kuvakkeen URL-osoite", "iconUrlHint": "Valinnainen. Kuvan URL-osoite, joka näytetään tämän tarjoajan kuvakkeena.", "iconUrlInvalid": "Virheellinen kuvakkeen URL. Käytä http(s):// tai data:image/*;base64 URL:ia.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Päivittäisen kiintiön nollauksen aikavyöhyke", + "dailyQuotaResetTimezoneHint": "Valinnainen IANA-aikavyöhyke, jota käytetään, kun ylävirran palvelu jättää X-RateLimit-Reset-otsakkeen pois. Jätä tyhjäksi käyttääksesi lyhyttä odotusaikaa.", + "dailyQuotaResetHourLabel": "Päivittäisen kiintiön nollaustunti", + "dailyQuotaResetHourHint": "Paikallinen tunti 0–23 yllä olevalla aikavyöhykkeellä. Tyhjä tarkoittaa, ettei solmutason kelloa käytetä.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Palveluntarjoajaa ei löydy", "deleteConnectionConfirm": "Poistetaanko tämä yhteys?", "deleteConnectionConfirmNamed": "Haluatko varmasti poistaa kohteen {name}? Tätä toimintoa ei voi kumota.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Poista valitut ({count})", + "batchDeleteConfirm": "Poistetaanko {count} yhteyttä? Tätä toimintoa ei voi kumota.", + "batchDeleteSuccess": "Poistettiin {count} yhteyttä", "batchActivateSelected": "Aktivoi", "batchDeactivateSelected": "Poista käytöstä", "batchRetestSelected": "Testaa uudelleen", @@ -5292,7 +5295,7 @@ "filterError": "Virhe", "filterBanned": "Estetty", "filterCreditsExhausted": "Krediitit lopussa", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Hae tilejä…", "noFilteredConnections": "Mikään yhteys ei vastaa nykyistä suodatinta.", "failedSetAlias": "Aliaksen asettaminen epäonnistui", "setAliasSuccess": "Alias {alias} asetettu", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "OpenAI-yhteensopivat tiedot", "messagesApi": "Viestit API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Upotukset", + "audioTranscriptions": "Äänen litteroinnit", + "audioSpeech": "Puhesynteesi", + "imagesGenerations": "Kuvien generointi", "chatCompletions": "Chatin loppuun saattaminen", "importingModels": "Tuodaan...", "importFromModels": "Tuo / mallit", - "modelsImported": "{count} models imported", + "modelsImported": "Tuotiin {count} mallia", "allModelsAlreadyImported": "Kaikki mallit on jo tuotu", "noNewModelsToImport": "Ei uusia malleja tuotavaksi — kaikki mallit ovat jo rekisterissä tai mukautetulla mallilistalla", "skippingExistingModels": "Ohitetaan {count} olemassa olevaa mallia", @@ -5345,18 +5348,18 @@ "failedFetchModels": "Mallien nouto epäonnistui", "noFreeModelsFound": "Tälle tarjoajalle ei löytynyt maksuttomia malleja — mitään ei tuotu.", "fetchModelsSuccess": "Löytyi {count} uutta mallia", - "fetchModelsFailed": "Could not auto-fetch models (you can retry from settings)", + "fetchModelsFailed": "Malleja ei voitu hakea automaattisesti (voit yrittää uudelleen asetuksista)", "noModelsFound": "Malleja ei löytynyt", "importFailed": "Tuonti epäonnistui", "noNewModelsAdded": "Uusia malleja ei lisätty.", "adding": "Lisätään...", - "close": "Close", + "close": "Sulje", "importingModelsTitle": "Mallien tuonti", "copyModel": "Kopioi malli", "filterModels": "Suodata malleja…", "testAllRateLimited": "Kyselyraja saavutettu, pysäytetty ennenaikaisesti", "hideFailedAuto": "Piilota epäonnistuneet mallit automaattisesti", - "selectAllModels": "Select all", + "selectAllModels": "Valitse kaikki", "hideAllModels": "Piilota kaikki", "modelsActive": "aktiivista", "showModel": "Näytä malli", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Yksi avain riviä kohden. Muoto: nimi|apiKey tai vain apiKey (automaattisesti nimetty indeksin mukaan).", "bulkValidateKeys": "Vahvista jokainen avain ennen tallennusta (hitaampi)", "bulkAddAllKeys": "Lisää kaikki avaimet", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# avain lisätty} other {# avainta lisätty}}", + "bulkFailedCount": "{count, plural, one {# epäonnistui} other {# epäonnistui}}", "optional": "Valinnainen", "anthropicCompatibleName": "Antrooppinen yhteensopiva", "openaiCompatibleName": "OpenAI-yhteensopiva", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Tapahtui odottamaton virhe", "getApiKey": "Hanki API-avain", "getApiKeyDescription": "Rekisteröidy tai liity API-avaimen saamiseksi", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# yhteys} other {# yhteyttä}}", "messagesPath": "viestejä", "responsesPath": "vastaukset", "chatCompletionsPath": "chat / täydennykset", @@ -5419,17 +5422,17 @@ "configured": "määritetty", "providerProxyConfigureHint": "Määritä välityspalvelin kaikille tämän palveluntarjoajan yhteyksille", "providerProxy": "Palveluntarjoajan välityspalvelin", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Korjaa ympäristö", + "repairEnvWorking": "Korjataan...", + "repairEnvHint": "Palauta puuttuvat OAuth-oletusarvot .env-tiedostoon korvaamatta olemassa olevia arvoja.", + "repairEnvSuccess": "OAuth-oletusarvot palautettu", + "repairEnvFailed": ".env-tiedoston korjaaminen epäonnistui", "noConnectionsYet": "Ei yhteyksiä vielä", "addFirstConnectionHint": "Aloita lisäämällä ensimmäinen yhteys", "addConnection": "Lisää yhteys", "availableModels": "Saatavilla olevat mallit", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Sisäänrakennetut mallit", + "builtInModelsHint": "Tämän palveluntarjoajan rekisterimallit. Määritä yhteensopivuusasetukset kynäkuvakkeella.", "pageAutoRefresh": "Sivu päivittyy automaattisesti...", "statusDisabled": "pois käytöstä", "statusConnected": "yhdistetty", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Todenna tämä yhteys uudelleen", "proxyConfig": "Välityspalvelimen konfigurointi", "aliasExistsAlert": "Alias \"{alias}\" on jo olemassa. Käytä toista mallia tai muokkaa olemassa olevaa aliasta.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "aliaksen nimi", + "clickToSetAlias": "Aseta alias napsauttamalla", + "clickToEditAlias": "Alias: {alias} (muokkaa napsauttamalla)", "openRouterAnyModelHint": "OpenRouter tukee mitä tahansa mallia. Lisää malleja ja luo aliaksia nopeaa käyttöä varten.", "modelIdFromOpenRouter": "Mallin tunnus (OpenRouterista)", "openRouterModelPlaceholder": "antrooppinen/claude-3-opus", "customModels": "Mukautetut mallit", "customModelsHint": "Lisää mallitunnukset, jotka eivät ole oletusluettelossa. Nämä ovat käytettävissä reititystä varten.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normalisoi työkalukutsujen tunnukset 9 merkkiin (esim. Mistral)", + "preserveDeveloperRoleLabel": "Säilytä OpenAI Responses -kehittäjärooli (älä muunna järjestelmärooliksi)", + "compatAdjustmentsTitle": "Yhteensopivuus", + "compatButtonLabel": "Yhteensopivuus", + "compatToolIdShort": "Työkalutunnus 9", + "compatDeveloperShort": "Kehittäjärooli", + "compatDoNotPreserveDeveloper": "Älä säilytä kehittäjäroolia", + "compatBadgeNoPreserve": "Älä säilytä", + "compatProtocolLabel": "Asiakaspyynnön protokolla", + "compatProtocolHint": "Näitä asetuksia käytetään, kun OmniRoute tunnistaa tämän pyyntömuodon (OpenAI Chat, Responses API tai Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Uudelleenkirjoita natiivit web_fetch-työkalukutsut OmniRouten osoitteeseen /v1/web/fetch.", "interceptionLoadError": "Sieppausasetusten lataaminen epäonnistui: {error}", "interceptionSaveError": "Sieppausasetusten tallentaminen epäonnistui: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Näytä Claude Codessa (claude/…)", + "ccAliasSectionHint": "Julkaise tämän palveluntarjoajan mallit peilitunnuksilla claude/<provider>/<model>, jotta Claude Coden yhdyskäytävän mallien haku voi näyttää ne. Oletusarvoisesti pois käytöstä — tämän käyttöönotto kaksinkertaistaa luettelomerkinnät kaikille asiakkaille.", + "ccAliasProviderLevelLabel": "Palveluntarjoajan oletus", + "ccAliasModelOverridesLabel": "Mallikohtaiset ohitukset", + "ccAliasModelOverrideAriaLabel": "Ohitus mallille {modelId}", + "ccAliasStateInherit": "Peri", + "ccAliasStateOn": "Käytössä", + "ccAliasStateOff": "Pois käytöstä", + "ccAliasAddModelPlaceholder": "Mallin tunnus (esim. gpt-4o)", + "ccAliasAddModelButton": "Lisää ohitus", + "ccAliasLoadError": "Mallien löytämisaliasten asetusten lataaminen epäonnistui: {error}", + "ccAliasSaveError": "Mallien löytämisaliasasetuksen tallentaminen epäonnistui: {error}", + "compatUpstreamHeadersLabel": "Ylimääräiset upstream-otsakkeet", + "compatUpstreamHeadersHint": "Korkean käyttöoikeustason asetus — sama luottamustaso kuin palveluntarjoajan API-tunnistetietojen muokkaamisessa; vain luotettujen ylläpitäjien tulee käyttää sitä. Yhdistetään sen jälkeen, kun OmniRoute on lisännyt todennuksen palveluntarjoajan API-avaimesta. Jos mukautettu otsake käyttää samaa nimeä kuin olemassa oleva otsake (esim. Authorization), antamasi arvo korvaa automaattisesti luodun otsakkeen kokonaan (mukaan lukien Bearer-tunnuksen) — upstream-palvelu näkee vain kirjoittamasi arvon, ei asetuksissa olevaa avainta. Virheelliset määritykset voivat aiheuttaa 401-virheen tai rikkoa upstream-todennuksen. Yksi otsake riviä kohden (esim. ylimääräinen Authentication joillekin yhdyskäytäville). Esikatsele arvoa viemällä osoitin sen päälle tai kohdistamalla siihen. Tallennetaan kohdistuksen poistuessa, napsautettaessa paneelin ulkopuolelle tai suljettaessa tämä paneeli.", + "compatUpstreamHeaderName": "Otsakkeen nimi", + "compatUpstreamHeaderValue": "Arvo", + "compatUpstreamAddRow": "Lisää otsake", + "compatUpstreamRemoveRow": "Poista rivi", + "compatBadgeUpstreamHeaders": "Otsakkeet", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Tuo vain ilmaiset mallit", @@ -5592,26 +5595,26 @@ "email": "Sähköposti", "healthCheckMinutes": "Terveystarkastus (min)", "healthCheckHint": "Ennakoiva tunnuksen päivitysväli. 0 = pois käytöstä.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Poista kaikki valinnat", + "modelsActiveCount": "{active}/{total} aktiivisena", + "noModelsMatch": "Mikään malli ei vastaa suodatinta ”{filter}”", + "groupLabel": "Ympäristö", + "groupPlaceholder": "esim. eKaizen, henkilökohtainen", "failedTestConnection": "Yhteyden testaus epäonnistui", "failed": "Epäonnistui", "leaveBlankKeepCurrentApiKey": "Jätä tyhjäksi, jos haluat säilyttää nykyisen API-avaimen.", "editCompatibleTitle": "Muokkaa {type} Yhteensopiva", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "{type}-yhteensopivan API:si juuri-URL. Käytä mukautettuihin päätepistepolkuihin lisäasetuksia.", "apiKeyForCheck": "API-avain (tarkistusta varten)", "testModelIdLabel": "Mallin tunnus (valinnainen)", "testModelIdPlaceholder": "esim. my-model-id", "testModelIdHint": "Jos tarjoajalta puuttuu päätepiste /models, anna mallin tunnus vahvistaaksesi sen sen sijaan päätepisteen /chat/completions kautta.", "compatibleProdPlaceholder": "{type} Yhteensopiva (tuote)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Tunnus päivitettiin onnistuneesti", + "tokenRefreshFailed": "Tunnuksen päivittäminen epäonnistui", "cursorSessionUnchanged": "Istunto on jo voimassa", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Käytä todennusta", + "exportCodexAuthFile": "Vie todennus", "applyClaudeAuthLocal": "Käytä todennusta", "exportClaudeAuthFile": "Vie todennus", "importClaudeAuth": "Tuo todennus", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} epäonnistui", "codexImportBulkZipExtracting": "Puretaan ZIP-tiedostoa…", "codexImportBulkZipError": "ZIP-tiedoston purkaminen epäonnistui", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Lisäasetukset", + "chatPathLabel": "Keskustelupäätepisteen polku", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Mukautettu keskustelupolku palveluntarjoajille, joilla on epästandardit API:t (esim. /v4/chat/completions)", + "modelsPathLabel": "Mallipäätepisteen polku", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Mukautettu mallipolku validointia varten (esim. /v4/models)", "clientIdentityLabel": "Asiakkaan identiteetti", "clientIdentityHint": "Valinnainen. Lisää tunnettua CLI-työkalua vastaavat asiakkaan sormenjälkiotsakkeet (esim. User-Agent) yhteensopiville yhdyskäytäville, jotka odottavat sellaista.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Poistettu käytöstä (manuaalisesti)", + "statusBanned": "Estetty / testiympäristön sääntörikkomus", + "statusCreditsExhausted": "Riittämätön saldo / kiintiö käytetty loppuun", + "showEmails": "Näytä kaikki sähköpostiosoitteet", + "hideEmails": "Piilota kaikki sähköpostiosoitteet", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Lisää toinen API-avain tai liitä useita avaimia", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Koontipalvelujen yhdyskäytävät", "enterpriseCloud": "Yritys ja pilvi", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API-muodon tunniste", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "Kiina", + "apiRegionHint": "API-alueen vihje", + "apiRegionInternational": "Kansainvälinen", + "apiRegionLabel": "API-alue", + "apikey": "API-avain", + "audio": "Ääni", + "audioProvidersHeading": "Äänipalveluntarjoajat", "cloudAgentProviders": "Pilviagenttipalveluntarjoajat", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Ääni", + "azureOpenAiBaseUrlHint": "Azure Open AI -perus-URL:n vihje", + "bailianBaseUrlHint": "Bailian-perus-URL:n vihje", + "claudeWebCookieHint": "Avaa claude.ai → DevTools → Application → Cookies → claude.ai ja kopioi 'sessionKey'-arvo. Cloudflarea varten tarvitaan myös cf_clearance, __cf_bm ja _cfuvid.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web -evästeen vihje", + "blackboxWebCookiePlaceholder": "Blackbox Web -evästeen paikkamerkki", "t3ChatWebCookieHint": "Avaa t3.chat → DevTools → Sovellus → Paikallinen tallennus → https://t3.chat, kopioi 'convex-session-id'. Avaa sitten DevTools → Network, kopioi koko eväste-otsikko mistä tahansa chat-pyynnöstä. Liitä molemmat arvot alla oleviin kenttiin.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web -evästeen vihje", "blockClaudeExtraUsageDescription": "Kun käytössä, OmniRoute merkitsee tämän Claude-yhteyden käyttökelvottomaksi heti, kun käyttö-API ilmoittaa jonossa olevasta ylimääräisestä käytöstä, joten varayhteys vaihtuu toiseen yhteyteen sen sijaan, että jatketaan maksamalla käytön mukaan ylimääräisestä laskutuksesta.", "blockClaudeExtraUsageLabel": "Estä ylimääräinen Clauden käyttö", "disableCoolingDescription": "Ohita tilapäinen jäädytysaika, jotta tämä yhteys pysyy käytettävissä myös palautettavien virheiden jälkeen (lopulliset tilat, kuten estetty/vanhentunut, ovat edelleen voimassa).", "disableCoolingLabel": "Poista jäädytysaika käytöstä tälle yhteydelle", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 avain lisätty} other {# avainta lisätty}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 kaksoiskappale ohitettu} other {# kaksoiskappaletta ohitettu}}", + "bulkPasteHint": "Liitä yksi API-avain kullekin riville. Tyhjät rivit jätetään huomiotta ja avainten kaksoiskappaleet ohitetaan.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Lisää redact-thinking-betaotsakkeen CC Compatible -ylävirroille, jotka edellyttävät piilotettuja Claude-ajatteluvirtoja.", + "ccCompatibleRedactThinkingLabel": "Ota redact-thinking-beta käyttöön", + "ccCompatibleSummarizeThinkingDescription": "Lisää `display: \"summarized\"` CC Compatible -ajattelupyyntöihin, jotta tuetut Claude-mallit voivat suoratoistaa näkyviä ajattelumuutoksia.", + "ccCompatibleSummarizeThinkingLabel": "Ota tiivistetty ajattelunäyttö käyttöön", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Käytä Codex-pyynnöissä ensisijaista palvelutasoa, kun se on saatavilla.", + "codexFastServiceTierLabel": "Codexin nopea palvelutaso", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Yhteensopivan ylävirran otsakkeen nimen paikkamerkki", + "compatUpstreamHeaderValuePlaceholder": "Yhteensopivan ylävirran otsakkeen arvon paikkamerkki", + "compatible": "Yhteensopiva", + "configuredCount": "Määritettyjen määrä", + "consoleApiKeyOracleHint": "Konsolin Oracle-API-avaimen vihje", + "consoleApiKeyOracleLabel": "Konsolin Oracle-API-avain", + "consoleApiKeyOraclePlaceholder": "Konsolin Oracle-API-avaimen paikkamerkki", + "newApiUserIdLabel": "New-API-käyttäjätunnus", + "newApiUserIdPlaceholder": "esim. 12345", + "newApiUserIdHint": "AgentRouter New-Api-User -otsakkeen arvo, jota käytetään yhdessä konsolin API-avaimen kanssa kiintiösaldon hakemiseen.", "newApiAggregatorToggleLabel": "Kokoaja Portti", "newApiAggregatorToggleHint": "Ota tasapainon havaitseminen käyttöön New-API / One-API / Sub2API -aggregointisolmuille. Hallintapaneeli näyttää tasapainotunnuksen ja kiintiön ennakkoreititys ohittaa loppuun käytetyt tilit.", "newApiAggregatorConsoleApiKeyHint": "Järjestelmän pääsytunnus aggregaattorin /api/user/self päätepisteelle. Ei reitityksen API-avainta.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Ota tasapainon havaitseminen käyttöön New-API / One-API / Sub2API -aggregointiyhteensopiville solmuille", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Mukautetun User-Agentin vihje", + "customUserAgentLabel": "Mukautettu User-Agent", + "databricksBaseUrlHint": "Databricks-perus-URL:n ohje", + "defaultThinkingStrengthHint": "Käytetään, kun pyynnössä ei määritetä päättelyn vaativuustasoa.", + "defaultThinkingStrengthLabel": "Ajattelun oletusvoimakkuus", + "deleteAllExtraApiKeys": "Poista kaikki", + "excludedModelsHint": "Poissuljettujen mallien ohje", + "excludedModelsLabel": "Poissuljetut mallit", + "excludedModelsPlaceholder": "Poissuljettujen mallien paikkamerkki", + "expirationBannerExpired": "Vanhentumisilmoitus: vanhentunut", + "expirationBannerExpiredDesc": "Vanhentumisilmoituksen kuvaus: vanhentunut", + "expirationBannerExpiringSoon": "Vanhentumisilmoitus: vanhentuu pian", + "expirationBannerExpiringSoonDesc": "Vanhentumisilmoituksen kuvaus: vanhentuu pian", + "extraApiKeyMasked": "Avain {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Ylimääräisten API-avainten ohje", + "extraApiKeysLabel": "Ylimääräiset API-avaimet", + "apiKeyHealthLabel": "API-avaimen tila", + "apiKeyStatusActive": "Aktiivinen", + "apiKeyStatusWarning": "Varoitus ({count} virhettä)", + "apiKeyStatusInvalid": "Virheellinen", + "primaryKey": "Ensisijainen avain", + "apiKeyInvalidAlert": "{count} API-avainta on merkitty virheelliseksi yhteyksissä tapahtuneiden todennusvirheiden vuoksi: {connections}. Ne ohitetaan avainten kierrossa. Tarkista tiedot napsauttamalla.", + "apiKeyInvalidAlertTitle": "API-avaimen tilahälytys", + "apiKeyWarningAlert": "{count} API-avainta on varoitustilassa yhteyksien suuren virhemäärän vuoksi: {connections}. Tarkista ne avainten kiertoon liittyvien ongelmien välttämiseksi.", + "apiKeyWarningAlertTitle": "API-avainvaroitus", + "googlePseInfo": "Google PSE:n tiedot", "antigravityProjectIdHint": "Valinnainen ohitus Antigravity Cloud Code -pyyntöille. Jätä tyhjäksi, jos haluat käyttää Google OAuthin aikana löydettyä projektia.", "antigravityClientProfileLabel": "Asiakasprofiili", "antigravityClientProfileHint": "Valitse, minkä Antigravity-asiakasidentiteetin OmniRoute esittää API:lle.", @@ -5863,20 +5866,20 @@ "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Codex Fast -taso on aktiivinen", "tierFast": "Nopea", - "antigravityProjectIdLabel": "Google Cloud Project ID", + "antigravityProjectIdLabel": "Google Cloud ‑projektin tunnus", "antigravityProjectIdPlaceholder": "my-gcp-projektitunnus", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok-verkkopalvelun evästeen paikkamerkki", + "herokuBaseUrlHint": "Heroku-perus-URL:n ohje", + "hideEmail": "Piilota sähköposti", + "imageProviders": "Kuvapalveluntarjoajat", "videoProviders": "Videon sukupolvi", "embeddingRerankProviders": "Upotukset ja uudelleensijoitukset", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Kuvien lyhyt tunniste", + "llmProviders": "LLM-palveluntarjoajat", + "localProviderApiKeyOptionalHint": "Paikallisen palveluntarjoajan valinnaisen API-avaimen ohje", + "localProviderBaseUrlHint": "Paikallisen palveluntarjoajan perus-URL:n ohje", + "localProviders": "Paikalliset palveluntarjoajat", + "maxConcurrentWholeNumberError": "Samanaikaisten toimintojen enimmäismäärän on oltava kokonaisluku", "m365TierLabel": "Copilot-taso", "m365TierHint": "Valitse, mitä Microsoft 365 Copilot -käyttöliittymää tämä yhteys käyttää. Yksityinen on oletusarvoinen kuluttaja-BizChat; Oppilaitos ja Yritys / Työ käyttävät organisaationsa omia käyttöliittymiä.", "m365TierIndividualOption": "Yksityinen (oletus)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Edullinen", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Kiinnitä tämä tarjoaja tiettyyn reititystasoon sen sijaan, että OmniRoute päättelee sen mallin hinnoittelusta.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark ‑verkkopalvelun evästeen ohje", + "museSparkWebCookiePlaceholder": "Muse Spark ‑verkkopalvelun evästeen paikkamerkki", + "oauth": "OAuth", + "openCliTools": "Avaa CLI-työkalut", + "openSettings": "Avaa asetukset", + "openaiResponsesStoreDescription": "Salli yhteensopivien Responses API -pyyntöjen säilyttää tallennettu vastaustila.", + "openaiResponsesStoreLabel": "OpenAI Responses -tallennus", + "perplexitySearchSharedKeyInfo": "Perplexity Searchin jaetun avaimen tiedot", + "perplexityWebCookieHint": "Perplexity Web -evästeen vihje", + "perplexityWebCookiePlaceholder": "Perplexity Web -evästeen paikkamerkki", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Pyyntörajojen ohitukset", "rateLimitOverridesMaxConcurrentHint": "Samanaikaisten pyyntöjen enimmäismäärän ohitus tälle yhteydelle. Ohittaa tilitason rajoituksen.", "rateLimitOverridesMaxConcurrentLabel": "Samanaikaisia enintään (pyyntöraja)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Enimmäisaika (ms), jonka pyyntö voi odottaa nopeusrajoituspaikkaa ennen epäonnistumista. Ohittaa yleisen häiriönsietoasetuksen vain tämän yhteyden osalta.", + "rateLimitOverridesMaxWaitMsLabel": "Jonon enimmäisodotusaika (ms)", "rateLimitOverridesMinTimeHint": "Vähimmäisaika (ms) pyyntöjen välillä. Ohittaa oletusarvoisen pyyntörajoittimen viiveen.", "rateLimitOverridesMinTimeLabel": "Vähimmäisväli (ms)", "rateLimitOverridesRpdHint": "Pyyntöjen enimmäismäärä päivässä tälle yhteydelle. Korvaa palveluntarjoajan oletusarvon.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (tokenia/päivä)", "rateLimitOverridesTpmHint": "Tokenien enimmäismäärä minuutissa tälle yhteydelle. Ohittaa tarjoajan oletusarvon.", "rateLimitOverridesTpmLabel": "TPM (tokenia/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Päivitä OAuth-tunnus", + "regionHint": "Alueen vihje", + "regionLabel": "Alueen tunniste", + "removeThisKey": "Poista tämä avain", + "routingTagsHint": "Reititystunnisteiden vihje", + "routingTagsLabel": "Reititystunnisteet", + "routingTagsPlaceholder": "Reititystunnisteiden paikkamerkki", + "search": "Haku", + "searchEngineIdHint": "Hakukoneen tunnuksen vihje", + "searchEngineIdLabel": "Hakukoneen tunnus", + "searchEngineIdRequired": "Hakukoneen tunnus vaaditaan", + "searchProvider": "Hakupalveluntarjoaja", + "searchProviderDesc": "Hakupalveluntarjoajan kuvaus", "searchProviders": "Hae palveluntarjoajia...", "searchByModel": "Hae mallin mukaan…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Hakupalveluntarjoajat", + "searxngBaseUrlHint": "Searxng-perus-URL:n vihje", + "searxngInfo": "Searxng-tiedot", + "sessionCookieLabel": "Istuntoeväste", + "showEmail": "Näytä sähköposti", + "snowflakeBaseUrlHint": "Snowflake-perus-URL:n vihje", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Tunnisteryhmän vihje", + "tagGroupLabel": "Tunnisteryhmä", + "tagGroupPlaceholder": "Tunnisteryhmän paikkamerkki", + "testModel": "Testaa mallia", + "testingModel": "Testataan mallia", "modelTestQuotaTooltip": "Kiintiö loppu — nollautuu huomenna tai tarvitsee lisäystä", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Tunnus vanhentunut", + "tokenExpiredTitle": "Tunnus on vanhentunut", + "tokenExpiresSoonTitle": "Tunnus vanhenee pian", + "tokenShort": "Tunnus", + "totalKeysRotating": "{count, plural, one {1 avain kierrossa} other {# avainta kierrossa}}", + "unhideModel": "Näytä piilotettu malli", + "upstreamProxyProviders": "Ylävirran välityspalveluntarjoajat", "validationModelIdHint": "Malli, jota käytetään API-avaimen vahvistamiseen. Jätä tyhjäksi, jos haluat käyttää tarjoajan ensimmäistä saatavilla olevaa mallia.", "validationModelIdLabel": "Vahvistusmalli", "validationModelIdPlaceholder": "esim. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Liitä Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) tai OAuth access_token", + "webCookieProviders": "Web-evästeiden tarjoajat", + "weeklyShort": "Viikoittainen lyhyt", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url -ohje", "globalCodexServiceMode": "Globaali Codex-palvelutila", "connect": "Yhdistä", "manualApiKey": "Manuaalinen API-avain", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Hae Zed IDE:n käyttöjärjestelmän avainnippuun tallentamat tekoälytarjoajien tunnistetiedot (OpenAI, Anthropic, Google, Mistral, xAI) ja tuo ne yhteyksinä. Zed IDE:n on oltava asennettuna tälle koneelle.", "zedImportButton": "Tuo Zedistä", "zedImportFailed": "Zed-tuo epäonnistui", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed-tuonnin ohje", + "zedImportNetworkError": "Zed-tuonnin verkkovirhe", + "zedImportNone": "Ei Zed-tuontia", "zedImportSuccess": "Tuotu {credentials} tunnistetta Zediltä {providers} tarjoajalta", "zedImporting": "Tuodaan…", "zedNoCredentials": "Avainnipusta ei löytynyt Zed-tunnistetietoja", @@ -6016,7 +6019,7 @@ "providerDetailFastTierTooltip": "Käytä Codex Fast -tasoa oletusarvoisesti kaikkiin Codex-yhteyksiin", "providerDetailFastDefaultLabel": "Nopea oletus", "providerDetailBrowserManualConnect": "Selain/manuaalinen yhteys", - "providerDetailAuthUrl": "Auth URL", + "providerDetailAuthUrl": "Todennuksen URL", "providerDetailCallbackUrl": "Takaisinsoitto-URL-osoite", "providerDetailValidClaudeCredentialsFile": "Kelvollinen Clauden tunnistetiedosto", "providerDetailPathAutoDetectedAllOs": "Polku tunnistetaan automaattisesti käyttöjärjestelmäkohtaisesti (Linux/Mac/Windows).", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "merkintä {number}", "claudeImportParseError": "jäsennysvirhe", "claudeImportNoValidEntries": "Ei kelvollisia tuotavia merkintöjä", - "webFetch": "Web Fetch", + "webFetch": "Web-haku", "webFetchTooltip": "Palveluntarjoajat, jotka hakevat sisältöä verkko-osoitteista (HTML → Markdown, scrape, kuvakaappaus)", "webFetchProvidersHeading": "Web Fetch -palveluntarjoajat", "compatibleProvidersDesc": "OpenAI- ja Anthropic-yhteensopivat päätepisteet, joita isännöit tai määrität. Osoita mikä tahansa OpenAI SDK omaan URL-osoitteeseesi ja reititä pyynnöt tänne.", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Alennettu API-välityspalvelin yli 40 mallille, mukaan lukien GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Hanki API-avaimesi osoitteesta https://freeaiapikey.com/dashboard. Perus-URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Hanki 300 $ ilmaista API-saldoa osoitteesta https://freemodel.dev — maksutietoja ei vaadita. OpenAI-yhteensopiva päätepiste. GPT-5.4- ja GPT-5.5-mallit saatavilla.", "friendliai": "Ilmainen taso palvelimettomaan päättelyyn — luottokorttia ei vaadita", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Maksuton taso Google AI Studion kautta; mallikohtaisia kiintiöitä ei enää julkaista (tarkista kiintiösivu AI Studiossa) — luottokorttia ei tarvita.", "gigachat": "Yhdistä GigaChat (Sber) API-avaimella.", "gitlab": "GitLabin henkilökohtainen käyttöoikeustunniste julkiselle Code Suggestions API:lle. Määritä itse isännöity perus-URL, kun et käytä gitlab.com-palvelua.", "gitlawb-gmi": "Hanki API-avaimesi Gitlawb Opengateway -hallintapaneelista.", @@ -6184,7 +6187,7 @@ "glm-cn": "Yhdistä GLM Coding (China) API-avaimella.", "glmt": "Esiasetettu GLM-profiili suuremmalla token-budjetilla, ajattelu käytössä ja pidemmällä aikakatkaisulla.", "getgoapi": "Yhdistä GoAPI API-avaimella.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Maksuton paketti: mallikohtaiset rajat (200K tokenia päivässä kutakin chat-mallia kohden; katso RPM/RPD-rajat osoitteesta console.groq.com/docs/rate-limits) — maksutapaa ei ole tallennettu.", "haiper": "Hanki API-avain osoitteesta haiper.ai/haiper-api", "heroku": "Yhdistä Heroku AI API-avaimella.", "hcnsec": "Hanki API-avain osoitteesta api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Luo API-avain osoitteessa https://app.requesty.ai ja liitä se sitten tähän Bearer-tokenina. OpenAI-yhteensopiva päätepiste osoitteessa https://router.requesty.ai/v1 reaaliaikaisella /v1/models-luettelolla.", "runwayml": "Runway-videonluonti on tehtäväpohjaista. OmniRoute lähettää teksti-videoksi- tai kuva-videoksi -töitä, kyselyttää polkua /v1/tasks/[id] ja normalisoi valmiit videotulosteet takaisin OpenAI-tyyliseen /v1/videos/generations-vastaukseen.", "sambanova": "$5 ilmaista saldoa rekisteröitymisen yhteydessä (voimassa 30 päivää), luottokorttia ei vaadita", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Luo API-avain osoitteessa https://seekai.cc ja liitä se sitten tähän Bearer-tokenina. OpenAI-yhteensopiva perus-URL: https://seekai.cc/v1.", "sap": "Mallien haku käyttää polkua /v2/lm/scenarios/foundation-models/models osoitteessa AI_API_URL. Chat-pyynnöt käyttävät polkua deploymentUrl/chat/completions ja vaativat AI-Resource-Group-otsakkeen.", "sarvam": "Sarvam AI on OpenAI-yhteensopiva /v1:ssä. OmniRoute tutkii /v1/malleja ja ohjaa keskusteluliikennettä /v1/chat/completions:iin. Mallit on säädetty indialaisille kielille.", "scaleway": "1M ilmaista tokenia uusille tileille — EU/GDPR-yhteensopiva (Pariisi), Qwen3 235B & Llama 70B", @@ -6309,12 +6312,12 @@ "claude": "Yhdistä Claude Code olemassa olevalla OAuth-työnkululla.", "cline": "Yhdistä Cline olemassa olevalla OAuth-työnkululla.", "cursor": "Yhdistä Cursor IDE olemassa olevalla OAuth-työnkululla.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Yhdistä Cursor käyttäjän API-avaimella (crsr_...) osoitteesta cursor.com/dashboard/api; IDE-istuntoa ei tarvita.", "github": "Yhdistä GitHub Copilot olemassa olevalla OAuth-työnkululla.", "gitlab-duo": "OAuth-sovellus ai_features + read_user -käyttöoikeuksilla. Määritä GITLAB_DUO_OAUTH_CLIENT_ID ja valinnaisesti GITLAB_DUO_OAUTH_CLIENT_SECRET tälle OmniRoute-instanssille.", "kilocode": "Yhdistä Kilo Code olemassa olevalla OAuth-työnkululla.", "kimi-coding": "Yhdistä Kimi Coding olemassa olevalla OAuth-työnkululla.", - "kiro": "Free tier: 50 credits/month (~25K–100K tokens). ⚠️ Kiro ToS prohibits third-party proxy/harness use.", + "kiro": "Maksuton taso: 50 krediittiä kuukaudessa (~25K–100K tokenia). ⚠️ Kiro ToS kieltää kolmannen osapuolen välityspalvelujen ja harness-työkalujen käytön.", "codex": "Yhdistä OpenAI Codex olemassa olevalla OAuth-työnkululla.", "qwen": "Yhdistä Qwen Code olemassa olevalla OAuth-työnkululla.", "github-models": "Luo GitHub PAT -tunniste 'models: read' -käyttöoikeudella osoitteessa github.com/settings/tokens" @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Kopioi tarvittavat tunnistetiedot palveluntarjoajan omasta verkkotunnuksesta. Kopioi evästeitä varten vain Evästeen otsikon arvo ja jätä pois Cookie:.", "webSessionGuideStep3Manual": "Manuaalinen polku: avaa selaimen kehittäjätyökalut (F12 → Verkko), päivitä sivu, avaa todennettu pyyntö ja kopioi Cookie-otsikon arvo Pyyntöotsikoista — jätä Cookie:-etuliite pois.", "webSessionGuideStep4": "Liitä se tähän ja tarkista yhteys. Jos se lakkaa toimimasta, kirjaudu uudelleen sisään ja korvaa se uudella arvolla.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Tuo .har-tiedosto", + "harImportButtonBusy": "Tuodaan…", + "harImportButtonHint": "Vie tiedosto DevToolsin Network-välilehdeltä lähetettyäsi vähintään yhden chat-viestin.", + "harImportStatusValid": "Tuotu — voimassa noin {minutes} min.", + "harImportStatusExpiringSoon": "Tuotu — voimassa enää vain noin {minutes} min.", + "harImportStatusExpired": "Tuotu, mutta tämä token vanheni jo {minutes} min sitten — vie uusi HAR-tiedosto.", + "harImportStatusUnknownExpiry": "Tuotu. Sen vanhenemisaikaa ei voitu lukea.", + "harImportErrorNotJson": "Tiedosto ei ole kelvollista JSON-muotoa — onko se varmasti .har-vienti?", + "harImportErrorNoEntries": "Tähän HAR-tiedostoon ei ole tallennettu verkkopyyntöjä.", + "harImportErrorNoChathubUrl": "Tästä HAR-tiedostosta ei löytynyt Copilot-chat-yhteyttä. Lähetä vähintään yksi chat-viesti palvelussa m365.cloud.microsoft ennen vientiä.", + "harImportErrorUnparsableUrl": "Chat-yhteys löytyi, mutta sen URL-osoitetta ei voitu lukea.", + "harImportErrorMissingFields": "Chat-yhteys löytyi, mutta siitä puuttui token.", + "harImportErrorReadFailed": "Tiedostoa ei voitu lukea.", + "harImportErrorUnknown": "HAR-tiedostosta ei voitu poimia tunnistetietoa.", "webSessionSecurityHint": "Käsittele tätä kuin salasanaa: se voi käyttää kirjautuneena verkkotiliäsi, kunnes se vanhenee tai se peruutetaan.", "webNoAuthGuideTitle": "Tunnuksia ei vaadita", "webNoAuthGuideBody": "{provider} ei tarvitse API-avainta tai evästettä. Tallenna yhteys käyttääksesi sen ilmaista verkkopäätepistettä.", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Codex-palvelutila päivitetty", "codexServiceTierActive": "Codex {tier} palvelutaso on aktiivinen", "codexTierFastLabel": "Nopea", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Joustava", "commandCodeApplyFailed": "Komennon koodin auth soveltaminen epäonnistui", "commandCodeApplyingApproval": "Selaimen hyväksyntä, sovelletaan…", "commandCodeApplyingKey": "Käytetään selaimen hyväksymää avainta…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Komento Koodi on vanhentunut", "commandCodeConnected": "Komento Koodi yhdistetty", "commandCodeConnectionAdded": "Komento Koodi-yhteys lisätty", + "clearConnectionCooldown": "Poista odotusaika", + "clearConnectionCooldownInProgress": "Poistetaan…", + "clearConnectionCooldownTitle": "Poista odotusaika nyt — käytä tätä, kun kiintiö on jo päivittynyt upstream-palvelussa", "commandCodeLinkExpired": "Komentokoodin linkki on vanhentunut", "commandCodeOpeningStudio": "Avaamassa Command Code Studio…", "commandCodePopupBlocked": "Ponnahdusikkuna estetty. Salli ponnahdusikkunat ja yritä Command Code Connectia uudelleen.", "commandCodeStartFailed": "Komennon Code auth käynnistys epäonnistui", "connectionDeleted": "Yhteys poistettu", "connectionFallback": "yhteys", + "connectionCooldownCleared": "Odotusaika poistettu — yhteys palautettiin reititykseen", "coolingConnectionsDescription": "Nämä yhteydet jäähtyvät viimeisen pyynnön jälkeen. OmniRoute ohittaa ne, kunnes ajastin umpeutuu — manuaalista poistoa ei tarvita.", "coolingConnectionsTitle": "Tällä hetkellä jäähdytys ({count})", + "failedClearConnectionCooldown": "Odotusajan poistaminen epäonnistui", "failedDeleteAlias": "Aliasn poistaminen epäonnistui", "failedDeleteConnection": "Yhteyden poistaminen epäonnistui", "failedDistributeProxies": "Proksien jakaminen epäonnistui.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Tallennetun mallin päätepisteen asetukset", "searchByModelAria": "Hae mallin mukaan", "selectSupportedEndpoint": "Valitse vähintään yksi tuettu päätepiste", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Testauskehys / CLI" }, "settings": { "title": "Asetukset", @@ -6554,22 +6557,22 @@ "systemPrompt": "Järjestelmäkehote", "thinkingBudget": "Miettivä budjetti", "proxy": "Välityspalvelin", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP-välityspalvelin", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Välityspalvelinosiot", + "requestBodyLimitTitle": "Pyyntörungon kokorajoitus", + "requestBodyLimitDescription": "API-hyötykuorman enimmäiskoko, joka hyväksytään ennen pyyntörungon jäsentämistä. Erilliset latausreitit säilyttävät vähintään sisäänrakennetun 100 Mt:n rajoituksensa.", + "requestBodyLimitInputLabel": "Pyyntörungon kokorajoitus megatavuina", + "requestBodyLimitEmptyError": "Anna raja megatavuina", + "requestBodyLimitWholeNumberError": "Käytä kokonaislukua", + "requestBodyLimitMinimumError": "Vähimmäisarvo on {min} Mt", + "requestBodyLimitMaximumError": "Enimmäisarvo on {max} Mt", + "requestBodyLimitLoadFailed": "Pyyntörajoituksen asetusten lataaminen epäonnistui", + "requestBodyLimitSaveSuccess": "Pyyntörungon kokorajoitus tallennettu", + "requestBodyLimitSaveFailed": "Pyyntörungon kokorajoituksen tallentaminen epäonnistui", + "requestBodyLimitSaving": "Tallennetaan...", + "requestBodyLimitSave": "Tallenna", + "requestBodyLimitCurrent": "Nykyinen: {value}", "cacheConfigLoadFailed": "Välimuistin asetusten lataaminen epäonnistui", "cacheConfigSaveSuccess": "Välimuistin asetukset tallennettu", "cacheConfigSaveFailed": "Virhe tallennettaessa välimuistin asetuksia", @@ -6593,59 +6596,59 @@ "enablePassword": "Ota salasana käyttöön", "darkMode": "Tumma tila", "lightMode": "Valotila", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Muisti", + "memoryDesc": "Pysyvä istuntojen välinen keskustelumuisti", + "memoryEnabled": "Ota muisti käyttöön", + "memoryEnabledDesc": "Kun toiminto on käytössä, OmniRoute lisää asiaankuuluvaa aiempaa kontekstia.", "memoryTokenCostWarning": "Huomaa: kun muisti on käytössä, OmniRoute lisää enintään {tokens} tokenia haettua kontekstia jokaiseen chat-pyyntöön — tämä lisää tokenien käyttöä ja kustannuksia. Ohittaaksesi lisäyksen tietyssä pyynnössä, lähetä otsikko \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Tunnisteiden enimmäismäärä", + "retentionDays": "Säilytys", + "recent": "Viimeaikainen", + "recentDesc": "Kronologinen ikkuna", + "semantic": "Semanttinen", + "semanticDesc": "Vektorihaku", + "hybrid": "Hybridi", + "hybridDesc": "Viimeaikainen + semanttinen", + "skillsTitle": "Taidot", + "skillsDesc": "Työkalut malleille", + "skillsEnabled": "Ota taidot käyttöön", + "skillsEnabledDesc": "Sallii agenttien käynnistää toimintoja.", + "skillsComingSoon": "Taitojen markkinapaikka tulossa pian.", + "memorySkillsTitle": "Muisti ja taidot", + "memorySkillsDesc": "Pysyvä konteksti ja ominaisuudet", + "modelsDevTitle": "Mallitietokanta", + "modelsDevDesc": "Synkronoi hinnat, ominaisuudet ja tekniset tiedot automaattisesti models.dev-palvelusta", + "modelsDevEnabled": "Ota models.dev-synkronointi käyttöön", + "modelsDevEnabledDesc": "Nouda mallien hinnat, ominaisuudet ja tekniset tiedot avoimen lähdekoodin models.dev-tietokannasta", + "modelsDevInterval": "Synkronointiväli", + "syncNow": "Synkronoi nyt", + "syncing": "Synkronoidaan...", + "lastSync": "Viimeisin synkronointi", + "never": "Ei koskaan", "justNow": "juuri nyt", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Synkronointitilastot", + "modelsDevStatsDesc": "Nykyisen models.dev-datan kattavuus", "providers": "Palveluntarjoajat", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Mallit, joilla on hintatiedot", + "capabilities": "Ominaisuudet", + "lastSyncCount": "Viimeisimmän synkronoinnin määrä", + "lastSyncFull": "Viimeisin täysi synkronointi", + "modelsDevInfo": "Näin se toimii", + "modelsDevInfoDesc": "models.dev on SST/OpenCode-tiimin ylläpitämä avoimen lähdekoodin tietokanta tekoälymallien teknisistä tiedoista. Se sisältää hinnat, ominaisuudet, kontekstirajat ja modaliteetit yli 4 000 mallille yli 100 palveluntarjoajalta.", + "modelsDevInfoResolution": "Hintatietojen määräytymisjärjestys (korkein prioriteetti ensin):", + "modelsDevInfoOrder": "Käyttäjän ohitus → models.dev → LiteLLM → Kovakoodattu oletusarvo", "systemTheme": "Järjestelmän teema", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Ota virheenkorjaustila käyttöön", "logToolSourcesToggle": "Kirjaa työkalujen lähteet lokiin", "logToolSourcesDescription": "Luo pyyntökohtainen diagnostiikkaloki, joka tiivistää työkalujen määrän ja jakauman MCP-/isännöityjen/asiakaslähteiden välillä.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Kiinnitä tiedot etusivulle", "homePinnedSectionsDesc": "Valitse, mitkä osiot kiinnitetään etusivun yläosaan.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Palveluntarjoajien kiintiörajat", + "homeProviderQuotaLimitsDesc": "Kiinnitä palveluntarjoajien kiintiötilan säilö (Päivitä kaikki -painikkeineen) etusivun yläosaan.", + "homeQuickStart": "Pika-aloitus", + "homeQuickStartDesc": "Näytä Pika-aloitus-paneeli etusivulla.", + "homeProviderTopology": "Palveluntarjoajien topologia", + "homeProviderTopologyDesc": "Näytä palveluntarjoajien topologia etusivulla.", "accountEmailVisibility": "Tilin sähköpostiosoitteen näkyvyys", "accountEmailVisibilityDesc": "Näytä tilien täydelliset sähköpostiosoitteet tarjoaja-, yhdistelmä-, loki-, kiintiö- ja playground-näkymissä. Poista tämä käytöstä peittääksesi ne oletuksena.", "comboConfigMode": "Yhdistelmän määritystila", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Päivitysväli", "providerQuotaAutoRefreshIntervalDesc": "Kuinka usein kiintiönäkymä päivitetään, sekunneissa.", "seconds": "sekuntia", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Näytä sivupalkin kohteet", "enableCache": "Ota välimuisti käyttöön", "cacheTTL": "Välimuisti TTL", "maxCacheSize": "Välimuistin enimmäiskoko", "clearCache": "Tyhjennä välimuisti", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Välimuisti tyhjennettiin onnistuneesti", + "clearCacheFailed": "Välimuistin tyhjentäminen epäonnistui", "cacheHits": "Välimuistin osumia", "cacheMisses": "Välimuisti puuttuu", "hitRate": "Osumaprosentti", "cacheEntries": "Välimuistin merkinnät", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Välimuistiasetukset", + "semanticCache": "Semanttinen välimuisti", + "maxEntries": "Merkintöjen enimmäismäärä", + "ttlMinutes": "TTL (minuuttia)", "promptCache": "Kehotusvälimuisti", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Strategia", + "preserveClientCache": "Säilytä asiakasohjelman välimuisti", + "enabled": "Käytössä", "loading": "Loading...", "saving": "Tallennetaan...", - "save": "Save", + "save": "Tallenna", "circuitBreaker": "Katkaisija", "retryPolicy": "Yritä uudelleen -käytäntö", "maxRetries": "Max Uudelleenyritykset", @@ -6690,24 +6693,24 @@ "timeoutMs": "Aikakatkaisu (ms)", "enableSystemPrompt": "Ota järjestelmäkehote käyttöön", "systemPromptText": "Järjestelmäkehoteteksti", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Poista estetyt tilit automaattisesti käytöstä", + "autoDisableDescription": "Merkitse palveluntarjoajayhteydet pysyvästi käytöstä poistetuiksi, jos ne palauttavat tiettyjä lopullisia estosignaaleja (esim. HTTP 403 'verify your account'). Tämä poistaa ne yhdistelmän kierrosta.", + "autoDisableThreshold": "Estokynnys", + "autoDisableThresholdDesc": "Pysyvään käytöstä poistamiseen vaadittavien peräkkäisten estosignaalien määrä.", + "autoDisableBannedScope": "Käytä automaattista käytöstäpoistoa kohteeseen", + "autoDisableBannedScopeDesc": "Ylävirran palvelu voi lukita kirjautumispaikat (maksulliset tilaukset ja maksuttomat tilit), jos OmniRoute jatkaa uudelleenyrityksiä eston jälkeen. Maksullisiin ennakkomaksettuihin API-avaimiin ei liity tätä riskiä — jätä ne varantoon, jotta fill-first voi käyttää seuraavaa avainta.", + "autoDisableBannedScopeAll": "Kaikki yhteydet", + "autoDisableBannedScopeAllDesc": "Poista käytöstä kaikki yhteydet, jotka palauttavat pysyvän estosignaalin, mukaan lukien ennakkomaksetut API-avaimet.", + "autoDisableBannedScopeSubscription": "Vain kirjautumis- ja tilaustilit", + "autoDisableBannedScopeSubscriptionDesc": "Poista käytöstä OAuth-, eväste-, istunto- ja verkkokirjautumispaikat (maksulliset tai maksuttomat). Ennakkomaksetut API-avaimet pysyvät aktiivisina, jotta reititys voi vaihtaa varayhteyteen.", "customBannedSignals": "Kielletyt avainsanat", "customBannedSignalsDesc": "Muut avainsanat, jotka käynnistävät tilin pysyvän eston tunnistuksen. Sisäänrakennetut avainsanat ovat aina käytössä.", "customBannedSignalsPlaceholder": "esim. api key revoked", "noCustomBannedSignals": "Ei mukautettuja avainsanoja. Vain sisäänrakennetut avainsanat ovat aktiivisia.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Vikasietoisuuden rakenne", "resilienceStructureDesc": "Tämä sivu määrittää vain käyttäytymisen. Live-katkaisijan tila näkyy Terveys-sivulla. Yhdistelmäkohtainen uudelleenyritys ja round-robin-paikan ohjaus pysyvät yhdistelmäasetuksissa.", "enableThinking": "Ota ajattelu käyttöön", - "maxThinkingTokens": "Max Thinking Tokens", + "maxThinkingTokens": "Ajattelutunnisteiden enimmäismäärä", "enableProxy": "Ota välityspalvelin käyttöön", "perKeyProxyEnabled": "Ota käyttöön avainkohtainen välityspalvelimen määritys", "perKeyProxyEnabledDesc": "Kun käytössä, jokainen tarjoajayhteys voi käyttää omaa välityspalvelinmääritystään", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Näytä Tailscalen suppilon säätimet Päätepiste-sivulla.", "showNgrokTunnel": "ngrok tunneli", "showNgrokTunnelDesc": "Näytä ngrok Tunnelin säätimet Päätepiste-sivulla.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Piilota sivupalkin kohteita", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Kaikki", + "presetAllDesc": "Näytä kaikki", + "presetEssentials": "Olennaiset", + "presetEssentialsDesc": "Aloittelijan polku – edistyneet työkalut löytyvät edelleen haulla", + "presetMinimal": "Minimaalinen", + "presetMinimalDesc": "Vain ydinsivut", + "presetDeveloper": "Kehittäjä", + "presetDeveloperDesc": "Kehitys- ja välityspalvelintyökalut", + "presetAdmin": "Ylläpitäjä", + "presetAdminDesc": "Valvonta ja auditointi", + "settingsSidebarTitle": "Sivupalkin mukauttaminen", + "settingsSidebarDesc": "Valitse sivupalkissa näytettävät kohteet. Olennaiset-valinta pitää edistyneet työkalut löydettävissä haulla.", "hideHealthLogs": "Piilota kuntotarkastuslokit", "hideHealthLogsDesc": "Kun PÄÄLLÄ, estä [HealthCheck]-viestit palvelinkonsolissa", "themeAccent": "Teeman väri", @@ -6780,19 +6783,19 @@ "themeOrange": "Oranssi", "themeCyan": "Syaani", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Mukauta sovelluksen nimeä ja logoa", + "appName": "Sovelluksen nimi", + "appNameDesc": "Sivupalkissa ja selaimen välilehdessä näkyvä nimi", + "customLogo": "Mukautetun logon URL-osoite", + "customLogoDesc": "Mukautetun logokuvasi URL-osoite", + "uploadLogo": "Lataa logo", + "resetLogo": "Palauta oletus", + "logoPreview": "Esikatselu", + "customFavicon": "Selaimen favicon", + "customFaviconDesc": "Mukautetun faviconin URL-osoite (näkyy selaimen välilehdessä)", + "uploadFavicon": "Lataa favicon", + "resetFavicon": "Palauta favicon", + "faviconPreview": "Faviconin esikatselu", "logoFileTooLarge": "Logotiedoston on oltava alle 500 kt", "faviconFileTooLarge": "Favicon-tiedoston on oltava alle 50 kt", "invalidLogoFileType": "Virheellinen tiedostotyyppi. Lataa PNG-, JPG-, SVG-, GIF- tai WebP-tiedosto.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Päivitysväli", "ruleModeDescription": "Sääntötilan kuvaus" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "Joukkokuntotarkistus", + "bulkHealthcheckDesc": "Testaa kaikki määritetyt välityspalvelimet kohde-URL-osoitetta vasten selvittääksesi, mitkä niistä toimivat.", + "healthcheckTesting": "Testataan...", + "healthcheckAll": "Kaikkien kuntotarkistus", + "healthcheckFailed": "Kuntotarkistuksen suorittaminen epäonnistui", + "healthcheckTestingAll": "Testataan kaikkia välityspalvelimia rinnakkain...", + "healthcheckTotal": "Yhteensä", + "healthcheckWorking": "Toimivat", + "healthcheckFailedLabel": "Epäonnistuneet", + "healthcheckStatus": "Tila", + "healthcheckProxyUrl": "Välityspalvelimen URL", + "healthcheckLatency": "Viive", "proxyDocumentationScopeTitle": "Välityspalvelimen laajuuden selvitys", "proxyDocumentationScopeDescBefore": "OmniRoute selvittää lähtevän välityspalvelimen tärkeysjärjestyksessä:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "yhdistelmä → tili → palveluntarjoaja → globaali", "proxyDocumentationScopeDescAfter": ". Täsmällisin laajuus voittaa.", "proxyDocumentationAddTitle": "Mukautetun välityspalvelimen lisääminen", "proxyDocumentationAddDescBefore": "Siirry", @@ -6984,7 +6987,7 @@ "passthroughDesc": "Ei muutoksia – asiakas hallitsee ajattelubudjettia", "thinkingModePassthrough": "Ohitus", "thinkingModePassthroughDesc": "Jätä asiakasyhteenveto muuttumattomaksi (vaivannäkö, yhteenveto, ajatuslohkot). Vaaditaan Codex/Desktopin näkyvää ajattelua. Oletusarvo.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automaattinen (poista)", "thinkingModeAutoDesc": "Poista kaikki asiakaspohjaiset ajattelu/ajatteluprosessi kentät (reasoning, reasoning_effort, Claude thinking, Gemini thinking_config) ja anna palveluntarjoajan keksiä oletusarvot. Voit piilottaa ajattelupaneelit ja rikkoa asiakassummapyyntöjä.", "thinkingModeCustom": "Mukautettu", "thinkingModeCustomDesc": "Ylikirjoita jokainen pyyntö kiinteällä ajattelutoken-budjetilla, jonka asetat alla.", @@ -7018,7 +7021,7 @@ "errorOccurred": "Tapahtui virhe", "updatePassword": "Päivitä salasana", "setPassword": "Aseta salasana", - "apiEndpointProtection": "API Endpoint Protection", + "apiEndpointProtection": "API-päätepisteen suojaus", "requireAuthModels": "Vaadi API-avain /mallille", "requireAuthModelsDesc": "Kun PÄÄLLÄ, /v1/models-päätepiste palauttaa 404 todentamattomille pyynnöille. Estää valtuuttamattomien käyttäjien mallin löytämisen.", "authModelHeading": "Aktiivinen valtuutusmalli", @@ -7034,12 +7037,12 @@ "providersBlocked": "{count} toimittaja(t) estetty /modelsista", "blockProviderTitle": "Estä {provider}", "unblockProviderTitle": "Kumoa esto {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "CLI-sormenjäljen täsmäys", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", - "systemTransforms": "System-block Transform Pipeline", + "cliFingerprintEnabled": "{count} palveluntarjoajalla CLI-sormenjälki käytössä", + "enableFingerprintTitle": "Ota sormenjälki käyttöön palveluntarjoajalle {provider}", + "disableFingerprintTitle": "Poista sormenjälki käytöstä palveluntarjoajalta {provider}", + "systemTransforms": "Järjestelmälohkon muunnosputki", "systemTransformsDesc": "Palveluntarjoajakohtaisesti tilattu muunnossarja, joka on sovellettu pyynnön runkoon ennen edelleenlähetystä. Tukee mitä tahansa palveluntarjoajan tunnusta.", "systemTransformsAddProvider": "Lisää palveluntarjoaja", "systemTransformsAddProviderPlaceholder": "Valitse palveluntarjoaja…", @@ -7065,21 +7068,21 @@ "leastUsedDesc": "Valitse vähiten käytetty tili", "costOpt": "Kustannusopt", "costOptDesc": "Valitse halvin saatavilla oleva tili", - "resetAware": "Reset-Aware RR", + "resetAware": "Nollauksen huomioiva vuorottelu", "resetAwareDesc": "Suosi tilejä, joilla on terve jäljellä oleva kiintiö ja lähempänä nollauksia", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kiintiöpainotettu", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "Tiukka satunnaisuus", + "strictRandomDesc": "Sekoittuva pakka — käyttää kutakin tiliä kerran ennen uutta sekoitusta", + "stickyLimit": "Pysyvyysraja", "stickyLimitDesc": "Puhelut tilikohtaisesti ennen vaihtamista", "routingStrategyTitle": "Reititysstrategia", "routingStrategySubtitle": "Vastaa 9routeria: tilien round-robin, sticky-rajat ja combo-kierto", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Vuorottelu", "accountRoundRobinDesc": "Kierrä tilejä kuorman jakamiseksi", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Yhdistelmien vuorottelu", "comboRoundRobinDesc": "Kierrä combo-kohteita sen sijaan, että aloitettaisiin aina ensimmäisestä", - "comboStickyLimit": "Combo Sticky Limit", + "comboStickyLimit": "Yhdistelmien pysyvyysraja", "comboStickyLimitDesc": "Kutsut combo-kohdetta kohden ennen vaihtamista", "routingStrategyAccountSummary": "Jaetaan pyynnöt tileille siten, että kullekin tilille tehdään {limit} kutsua.", "routingStrategyFillFirstSummary": "Käytetään tilejä tärkeysjärjestyksessä (Täytä ensin).", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Korvaa tämän palveluntarjoajan globaali tili-strategia (9router-pariteetti).", "providerRoutingStrategy": "Tilin strategia", "providerRoutingInheritGlobal": "Peri globaali oletus", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Kiintiön ennakkotarkistuksen raja-arvo", + "quotaPreflightSubtitle": "Ohita tilit, joiden kiintiö on loppunut, ennen pyynnön lähettämistä ylävirtaan", + "quotaPreflightEnable": "Ota kiintiön ennakkotarkistus käyttöön", + "quotaPreflightEnableDesc": "Tarkista ennen jokaista pyyntöä tilin jäljellä oleva kiintiö (5 tunnin / viikoittainen / kuukausittainen jakso). Tilit, joiden kiintiö on raja-arvossa tai sen alapuolella, ohitetaan ilman ylävirran kutsua. Palveluntarjoajan kiintiö -sivulla asetetut jaksokohtaiset raja-arvot ohittavat aina tämän oletusarvon.", + "quotaPreflightCutoff": "Yleinen raja-arvo (jäljellä vähintään %)", + "quotaPreflightCutoffDesc": "Lopeta tilin käyttö, kun sen jäljellä oleva kiintiö laskee tähän prosenttiosuuteen tai sen alle, kaikissa jaksoissa, joilla ei ole omaa raja-arvoa. Vastaa Palveluntarjoajan kiintiö -sivun jäljellä olevan prosenttiosuuden palkkeja.", + "quotaPreflightWindowsHint": "Tämä oletusarvo ei vaikuta jaksoihin, joilla on oma jakso- tai palveluntarjoajakohtainen raja-arvo (asetettu Palveluntarjoajan kiintiö -sivun Raja-arvo-valintaikkunassa).", + "quotaPreflightLoadFailed": "Kiintiön ennakkotarkistuksen asetuksia ei voitu ladata.", "modelAliases": "Mallin aliakset", "modelAliasesTitle": "Mallialias", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Määritä mallien nimet uudelleen tarkkojen vastaavuuksien tai jokerimerkkimallien avulla.", "addCustomAlias": "Lisää Mukautettu Alias", "deprecatedModelId": "Vanhentunut malli-ID", "newModelId": "Uusi malli-ID", @@ -7133,7 +7136,7 @@ "clearLocalDataConfirm": "Poistetaanko kaikki paikalliset tiedot? Tämä nollaa asetuksesi.", "unknown": "Tuntematon", "systemActor": "järjestelmä", - "ipAccessControl": "IP Access Control", + "ipAccessControl": "IP-käytönhallinta", "ipAccessControlDesc": "Estä tai salli tietyt IP-osoitteet", "ipModeDisabled": "Ei käytössä", "ipModeBlacklist": "Musta lista", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Yhdistelmästrategia", "priority": "Prioriteetti", "weighted": "Painotettu", - "contextRelay": "Context Relay", + "contextRelay": "Kontekstin välitys", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Max Uudelleenyritykset", "retryDelayLabel": "Uudelleenyrityksen viive (ms)", @@ -7214,24 +7217,24 @@ "concurrencyPerModel": "Samanaikaisuus / malli", "queueTimeout": "Jonon aikakatkaisu (ms)", "queueDepth": "Jonon syvyys", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Luovutuksen raja-arvo", + "contextRelayMaxMessages": "Yhteenvedon viestien enimmäismäärä", + "contextRelaySummaryModel": "Yhteenvetomalli", + "contextRelayProviderNote": "Kontekstin välitys luo tällä hetkellä luovutuksia Codex-tileille ja käyttää näitä arvoja yleisinä oletusarvoina uusille tai määrittämättömille yhdistelmille.", "providerProfiles": "Palveluntarjoajan profiilit", "providerProfilesDesc": "Erilliset joustavuusasetukset OAuth- (istuntopohjainen) ja API-avaimen (mittari) tarjoajille. OAuth-palveluntarjoajilla on tiukemmat kynnykset alhaisempien nopeusrajojen vuoksi.", "oauthProviders": "OAuth-palveluntarjoajat", "apiKeyProviders": "API-avainten tarjoajat", "transientCooldown": "Ohimenevä jäähtyminen", - "rateLimitCooldown": "Rate Limit Cooldown", + "rateLimitCooldown": "Pyyntötiheyden rajoituksen jäähdytysaika", "maxBackoffLevel": "Maksimitaso", "cbThreshold": "CB-kynnys", "cbResetTime": "CB-nollausaika", - "rateLimiting": "Rate Limiting", + "rateLimiting": "Pyyntötiheyden rajoitus", "rateLimitingDesc": "API-avainten tarjoajat ovat automaattisesti nopeudeltaan rajoitettuja turvallisilla oletusasetuksilla. Rajat opitaan vastausotsikoista ja mukautuvat ajan myötä.", "defaultSafetyNet": "Oletusturvaverkko", "rpm": "RPM", - "minGap": "Min Gap", + "minGap": "Vähimmäisväli", "maxConcurrent": "Max Samanaikainen", "activeLimiters": "Aktiiviset rajoittimet", "noActiveLimiters": "Ei vielä aktiivisia nopeudenrajoittimia.", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}pv sitten", "backupReasonManual": "manuaalinen", "backupReasonPreRestore": "esipalautus", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# yhteys} other {# yhteyttä}}", "noChangesSinceBackup": "Ei muutoksia edellisen varmuuskopioinnin jälkeen", "backupFailed": "Varmuuskopiointi epäonnistui", "restoreFailed": "Palautus epäonnistui", @@ -7329,7 +7332,7 @@ "configured": "määritetty", "none": "Ei mitään", "modelOverrideValuePlaceholder": "Numeerinen arvo", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Englanniksi pilkuilla eroteltuna, esim. low, medium, high", "addKeyValue": "Lisää avain-arvo", "noModelOverrides": "Tälle mallille ei ole määritetty ohituksia.", "modelOverrideLoadFailed": "Mallin ohitusten lataaminen epäonnistui", @@ -7378,25 +7381,25 @@ "editPricing": "Muokkaa hinnoittelua", "viewFullDetails": "Näytä täydelliset tiedot", "themeCoral": "Koralli", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Mukautuva volyymireititys", + "adaptiveVolumeRoutingDesc": "Skaalaa yhteyksiä dynaamisesti hyötykuorman määrän ja läpimenopaineen perusteella.", + "lkgpToggleTitle": "Viimeisin toimivaksi tiedetty palveluntarjoaja (LKGP)", + "lkgpToggleDesc": "Kun tämä on käytössä, reititin muistaa, mikä palveluntarjoaja viimeksi palautti onnistuneen vastauksen, ja kokeilee sitä ensin seuraavissa pyynnöissä.", "echoRequestedModelTitle": "Toista pyydetty mallin nimi vastauksissa", "echoRequestedModelDesc": "Kun käytössä, vastauksen `model`-kenttä toistaa asiakkaan pyytämän aliaksen tai yhdistelmänimen upstream-mallin nimen sijaan. Korjaa tiukat asiakasohjelmat (esim. Claude Desktop), jotka hylkäävät vastauksen, jonka malli ei vastaa pyyntöä.", "webSearchRouteTitle": "Verkkohaun reititys", "webSearchRouteDesc": "Kun pyyntö sisältää natiivin web_search-työkalun, reititä koko pyyntö tälle mallille oletuksen sijaan — hyödyllinen tarjoajille, jotka eivät toteuta Anthropicin web_search-palvelintyökalua. Jätä tyhjäksi poistaaksesi käytöstä.", "webSearchRoutePlaceholder": "Etsi tai valitse malli…", "paidModelPatternWarning": "Tämä kaava täsmää vain maksullisiin malleihin — ota maksulliset mallit käyttöön tai muokkaa kaavaa.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Tyhjennä LKGP-välimuisti", + "lkgpCacheCleared": "LKGP-välimuisti tyhjennettiin onnistuneesti", + "lkgpCacheClearFailed": "LKGP-välimuistin tyhjentäminen epäonnistui", + "days": "Päivää", + "lkgp": "LKGP-tila", + "lkgpDesc": "Viimeisin toimivaksi tiedetty palveluntarjoaja (ennakoitava häiriönsieto)", + "maintenance": "Ylläpito", + "purgeExpiredLogs": "Poista vanhentuneet lokit", + "purgeLogsFailed": "Lokien poistaminen epäonnistui", "logsDeleted": "{count, plural, =0 {Ei vanhentuneita lokeja tyhjennetty} one {Tyhjennetty # vanhentunut loki} other {Tyhjennetty # vanhentunutta lokia}}", "resetUsageData": "Nollaa käyttötiedot", "resetUsageDataDesc": "Valitse, kuinka pitkältä ajalta haluat poistaa käyttötiedot, pyyntölokit ja analytiikkatiedot. Palveluntarjoajien määritykset, yhteydet, API-avaimet, yhdistelmät ja asetukset säilytetään. Tätä toimintoa ei voi peruuttaa.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Käyttötietojen nollaus epäonnistui", "reset": "Nollaa", "resetting": "Nollataan...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Kontekstille optimoitu", + "contextOptDesc": "Reitittää konteksti-ikkunan vaatimusten ja keskustelun pituuden perusteella", + "cacheOpt": "Välimuistille optimoitu", + "cacheOptDesc": "Säilyttää saman uudelleenkäytettävän kehotteen etuliitteen samalla palveluntarjoajatilillä", + "priorityDesc": "Peräkkäinen varareititys – kokeilee ensin palveluntarjoajaa 1, sitten palveluntarjoajaa 2 ja niin edelleen", + "weightedDesc": "Jakaa liikenteen prosenttipainotusten mukaan palveluntarjoajien kesken", + "modelRoutingTitle": "Mallien reitityssäännöt", + "modelRoutingDesc": "Reititä mallit automaattisesti tiettyihin yhdistelmiin glob-mallien avulla", + "addRule": "Lisää sääntö", + "routeToCombo": "Reititä yhdistelmään", + "selectCombo": "Valitse yhdistelmä...", + "priorityHint": "Suurempi arvo = tarkistetaan ensin. Käytä arvoa 10+ tarkoille malleille.", + "patternHint": "Käytä merkkiä * mille tahansa merkkijonolle ja merkkiä ? yhdelle merkille. Kirjainkokoa ei huomioida.", + "noRoutingRules": "Reitityssääntöjä ei ole määritetty. Pyynnöt käyttävät oletusarvoisesti yleistä yhdistelmää.", + "routingRuleHint": "Lisää esimerkiksi sääntö claude-opus* -> frontier-combo reitittääksesi pyynnöt automaattisesti.", + "deleteRoutingRule": "Poistetaanko tämä mallin reitityssääntö?", + "exactMatchMode": "Täsmällinen vastaavuus", + "wildcardPatternMode": "Jokerimerkkimalli", + "exactMatchModeDesc": "Käytä täsmällisiä aliaksia vanhentuneille tai uudelleennimetyille mallitunnuksille.", + "wildcardPatternModeDesc": "Käytä jokerimerkkejä * ja ? sisältäviä aliaksia, kun malliperhe halutaan kohdistaa yhteen kohteeseen.", + "noExactAliasesConfigured": "Täsmällisen vastaavuuden aliaksia ei ole määritetty.", + "wildcardRulesTitle": "Jokerimerkkisäännöt", + "noWildcardAliasesConfigured": "Wildcard-aliaksia ei ole määritetty.", + "overview": "Yleiskatsaus", + "unknownError": "Tuntematon virhe", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Sallittujen luettelo", + "syncDisabled": "Synkronointi poistettu käytöstä", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Synkronointi käytössä", + "blacklist": "Estettyjen luettelo", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Synkronoidut mallit", + "budget": "Budjetti", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Hinnoittelun nollaaminen epäonnistui: {reason}", - "tab": "Tab", + "tab": "Välilehti", "pricingSavedProvider": "Hinnoittelu tallennettu palvelulle {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Hinnoittelun tallentaminen epäonnistui: {reason}", "pricingResetProvider": "Hinnoittelu nollattu palvelulle {provider}", - "nextSync": "Next Sync", + "nextSync": "Seuraava synkronointi", "pricingSyncFailedWithReason": "Hinnoittelun synkronointi epäonnistui: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Tyhjennä synkronoidut hinnat", + "compressionTitle": "Kehotteiden pakkaus", + "compressionDesc": "Vähennä tokenien käyttöä pakkaamalla kehotteet ennen niiden lähettämistä palveluntarjoajille", "compressionGuidanceFullGuideLink": "Kattava pakkausopas", "compressionGuidanceShow": "Tiedot", "compressionGuidanceHide": "Piilota tiedot", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Uudelleenkirjoita soveltuva keskusteluhistoria säilyttäen koodin, URL-osoitteet ja tarkoituksen.", "tokenSaverFineTunePrefix": "Hienosäädä kutakin moottoria kohdassa", "tokenSaverFineTuneSuffix": "tai yhdistä moottoreita pyyntökohtaisesti kohdassa", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Pakkaustila", + "compressionModeOff": "Pois käytöstä", + "compressionModeOffDesc": "Pakkausta ei käytetä", + "compressionModeLite": "Kevyt", + "compressionModeLiteDesc": "Välilyöntien ja tyhjien rivien vähentäminen", + "compressionModeStandard": "Vakio (Caveman)", + "compressionModeStandardDesc": "Sääntöpohjainen pakkaus yli 30 mallilla, säilyttää koodilohkot ja URL-osoitteet", + "compressionModeAggressive": "Aggressiivinen", + "compressionModeAggressiveDesc": "Yhteenveto + työkalutulosten pakkaus + asteittainen vanhentaminen mahdollisimman suuria säästöjä varten", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Aggressiivinen moottorin kokoonpano", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Viimeaikaisten viestien määrä kullakin ikääntymistasolla (korkeampi = enemmän säilynyt)", "compressionToolStrategies": "Työkalutulosstrategiat", "compressionToolStrategiesDesc": "Vaihda pakkausstrategiat eri työkalutulostyypeille", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Yleiset asetukset", + "compressionAutoTrigger": "Automaattisen käynnistyksen kynnysarvo", + "compressionCacheTTL": "Välimuistin TTL", + "compressionPreserveSystem": "Säilytä järjestelmäkehote", "compressionPreserveSystemAlways": "Aina", "compressionPreserveSystemWhenNoCache": "Kun ei välimuistia", "compressionPreserveSystemNever": "Ei koskaan", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Tallennettu", "compressionExclusionsCount": "{count, plural, one {# poissulku} other {# poissulkuja}} määritetty", "compressionExclusionsEmpty": "Ei poissulkuja määritetty — jokainen malli/päätepiste on oikeutettu pakkaamiseen (oletuskäyttäytyminen).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman-moottorin määritys", + "compressionCavemanConfigDesc": "Hienosäädä sääntöpohjaista pakkausmoottoria", "compressionCavemanPanelHint": "Sen päällä/pois-tila ja taso asetetaan paneelissa:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Pakattavat viestiroolit", + "compressionRoleUser": "Käyttäjä", + "compressionRoleAssistant": "Avustaja", + "compressionRoleSystem": "Järjestelmä", + "compressionMinLength": "Viestin vähimmäispituus", + "compressionSkipRules": "Ohitettavat pakkaussäännöt", + "compressionSkipRulesDesc": "Napsauta sääntöjä, jotka haluat ohittaa pakkauksen aikana", + "compressionPreservePatterns": "Säilytettävät mallit", + "compressionPreservePatternsDesc": "Regex-mallit, joita ei koskaan pakata (yksi riviä kohden)", + "compressionLogTitle": "Pakkausloki", + "compressionLogEmpty": "Ei vielä pakattuja pyyntöjä. Pakkaustilastot näkyvät täällä, kun pyyntöjä käsitellään pakkauksen ollessa käytössä.", "minutes": "minuuttia", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "Komennot huomioiva työkalutulosteiden suodatus", + "compressionModeCodexResponses": "Responses-työkalun tuloste", + "compressionModeCodexResponsesDesc": "Varovainen pakkaus soveltuville komentotulkki-, korjaus-, haku-, koonti- ja JSON-tulosteille", + "compressionModeStacked": "Pinottu", + "compressionModeStackedDesc": "RTK-työkalutulosteiden suodatus ja sen jälkeen Caveman-viestipakkaus", + "qdrantTitle": "Qdrant (vektorimuisti)", + "qdrantDesc": "Valinnainen. Indeksoi semanttiset muistit ulkoiseen vektoritietokantaan nopeampaa hakua varten.", + "qdrantStatusActive": "Aktiivinen", + "qdrantStatusError": "Virhe", + "qdrantStatusDisabled": "Poistettu käytöstä", + "qdrantEnable": "Ota Qdrant käyttöön", + "qdrantEnableDesc": "Kun tämä on käytössä, semanttinen/hybridistrategia voi hakea muistoja Qdrantista.", + "qdrantTesting": "Testataan...", + "qdrantTestConnection": "Testaa yhteys", + "qdrantSaved": "Määritykset tallennettu", + "qdrantSaveError": "Määritysten tallentaminen epäonnistui", + "qdrantHostHint": "Ilman porttia. Esimerkki: 127.0.0.1 tai http://qdrant", + "qdrantPort": "Portti", + "qdrantPortHint": "Qdrantin oletusarvo: 6333", + "qdrantCollectionHint": "Muistipisteiden tallennussijainti.", + "qdrantEmbeddingModel": "Upotusmalli", + "qdrantHelpTitle": "Pika-asennusohje", + "qdrantHelpQuickTitle": "Pika-asennus (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Isäntä: Qdrantin IP-osoite/URL, portti: 6333, kokoelma: omniroute_memory.", + "qdrantHelpStep2": "2. Jos käytössä on nvidia/llama-nemotron-embed-vl-1b-v2:free, käytä kokoelman ulottuvuutena arvoa 2048.", + "qdrantHelpStep3": "3. Mallikenttä: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Tallenna, testaa yhteys ja testaa sitten haku.", + "qdrantEmbeddingQuickSelect": "Valitse nopeasti löydetyistä malleista...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Muoto: provider/model. Palveluntarjoajan tunnistetiedot on määritettävä.", + "qdrantApiKeyPlaceholderKeep": "(jätä tyhjäksi säilyttääksesi nykyisen avaimen)", + "qdrantApiKeyPlaceholderOptional": "(jätä tyhjäksi, jos sitä ei käytetä)", + "qdrantSaveHint": "Vinkki: muokkaa isäntää, porttia, kokoelmaa tai mallia ja napsauta Tallenna. API-avain on valinnainen.", + "qdrantSearchTestTitle": "Hakutesti", + "qdrantSearchTestDesc": "Luo upotuksen ja tekee haun Qdrantissa.", + "qdrantSearchPlaceholder": "Esimerkki: käyttäjän asetukset, historia jne.", + "qdrantNoResults": "Ei tuloksia (tai Qdrantia ei ole määritetty).", + "qdrantCleanupTitle": "Säilytys ja puhdistus", + "qdrantCleanupDesc": "Poistaa vanhentuneet ja vanhat pisteet seuraavan perusteella:", + "searching": "Haetaan...", + "cleaning": "Puhdistetaan...", + "cleanNow": "Puhdista nyt", "optional": "Valinnainen", "current": "Nykyinen", "remove": "Poista", @@ -7600,19 +7603,19 @@ "resilienceScope": "Laajuus:", "resilienceTrigger": "Triggeri:", "resilienceEffect": "Vaikutus:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Pyyntöjono ja nopeus", + "resilienceAutoEnableApiKeyProviders": "Ota automaattisesti käyttöön API-avainpalveluntarjoajille", + "resilienceRequestsPerMinute": "Pyyntöä minuutissa", + "resilienceMinTimeBetweenRequests": "Pyyntöjen välinen vähimmäisaika", + "resilienceConcurrentRequests": "Samanaikaiset pyynnöt", + "resilienceConnectionScopeConcurrentRequests": "Samanaikaiset pyynnöt yhteyttä/kiintiöaluetta kohden", + "resilienceGlobalConcurrentRequests": "Globaalit samanaikaiset pyynnöt ylävirtaan (0 = pois käytöstä)", "resilienceMaxQueueWaitTime": "Suurin jonon odotusaika", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Jäähdytyksen peruskesto", + "resilienceUseUpstreamRetryHints": "Käytä ylävirran uudelleenyritysohjeita", + "resilienceDefaultPerProvider": "Oletus (palveluntarjoajakohtainen)", + "resilienceAlwaysOn": "Aina käytössä", + "resilienceAlwaysOff": "Aina pois käytöstä", "routingRemoveEntry": "Poista merkintä", "routingNeedlesSubstrings": "Neulat (sovittavat osajonot)", "routingCaseSensitive": "Kirjainkoolla on merkitystä", @@ -7665,7 +7668,7 @@ "oneproxySyncStatusTitle": "Synkronoinnin tila", "oneproxySuccess": "Menestystä", "oneproxyFailed": "Epäonnistui", - "routingAntigravitySignatureTitle": "Antigravity Signature Cache Mode", + "routingAntigravitySignatureTitle": "Antigravity-allekirjoitusvälimuistin tila", "routingAntigravitySignatureDesc": "Määritä, käyttääkö OmniRoute uudelleen vain tallennettuja Gemini-ajatusallekirjoituksia vai hyväksyykö se vahvistettuja asiakkaan toimittamia allekirjoituksia Antigravity-yhteensopivissa työkalukutsutyönkuluissa.", "routingAntigravitySignatureEnabledLabel": "Käytössä", "routingAntigravitySignatureEnabledDesc": "Nykyinen toiminta. Ohita asiakkaan toimittamat allekirjoitukset ja jatka tallennetun OmniRoute-työnkulun käyttöä.", @@ -7683,7 +7686,7 @@ "routingClientCacheControlAlwaysDesc": "Välitä asiakkaan toimittamat cache_control-otsakkeet aina sellaisenaan ylävirran tarjoajille.", "routingClientCacheControlNeverLabel": "Älä koskaan säilytä", "routingClientCacheControlNeverDesc": "Poista aina asiakkaan cache_control-otsakkeet ja anna OmniRouten hallita välimuistia silloin, kun palveluntarjoajan natiivit työnkulut tukevat sitä.", - "routingZeroConfigTitle": "Zero-Config Auto-Routing", + "routingZeroConfigTitle": "Automaattinen reititys ilman määrityksiä", "routingZeroConfigDesc": "Ota käyttöön automaattinen palveluntarjoajan valinta käyttämällä auto/-etuliitettä. Kun tämä on käytössä, pyynnöt osoitteisiin auto, auto/coding, auto/fast jne. reititetään dynaamisesti kaikkien yhdistettyjen palveluntarjoajien välillä.", "routingDefaultAutoVariant": "Automaattinen oletusversio", "visionBridge": "Vision silta", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "Lähetetään vision-mallille ennen kuin poimittu kuvaus lisätään takaisin alkuperäiseen pyyntöön.", "visionBridgeTimeoutMs": "Aikakatkaisu (ms)", "visionBridgeMaxImagesPerRequest": "Kuvia enintään pyynnöstä", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Takaisinvetovaiheiden enimmäismäärä", + "resilienceProviderBreakerTitle": "Palveluntarjoajakohtainen virtapiirin katkaisin", + "resilienceFailureThreshold": "Virhekynnys", + "resilienceDegradationThreshold": "Heikentymiskynnys", "resilienceResetTimeout": "Nollaa aikakatkaisu", "resilienceFailureThresholdLabel": "Epäonnistumisen kynnys", "resilienceResetTimeoutLabel": "Nollaa aikakatkaisu", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Yhteyden jäähdytysaika", "resilienceUseUpstreamRetryHintsLabel": "Käytä ylävirran uudelleenyritysvinkkejä", "resilienceUseUpstream429BreakerLabel": "Käytä ylävirran 429 vihjettä (katkaisija)", "resilienceMaxBackoffStepsLabel": "Max perääntymisaskel", "resilienceYes": "Kyllä", "resilienceNo": "Ei", - "resilienceDefault": "Default", + "resilienceDefault": "Oletus", "storageDatabaseBackupRetention": "Tietokannan varmuuskopion säilyttäminen", "storageDatabaseBackups": "Tietokannan varmuuskopiot", "storageBackupRetentionDescription": "Automaattiset SQLite-varmuuskopiot tallennetaan kohteeseen", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "Legacy-JSON tuotiin onnistuneesti!", "jsonImportFailed": "JSON-tuonti epäonnistui", "jsonImportError": "Virhe JSON-tuonnin aikana", + "jsonImportAuthRequired": "Vanhan JSON-määrityksen tuonti edellyttää tunnistautumista. Kirjaudu sisään tai viimeistele määritys ensin.", + "databaseSettingsAuthRequiredTitle": "Tunnistautuminen vaaditaan", + "databaseSettingsAuthRequiredBody": "Tietokanta-asetukset ja JSON-tuonti ovat vain tunnistautuneen ylläpitäjän käytettävissä. Kirjaudu sisään tai viimeistele määritys, jotta voit tarkastella ja muokata niitä.", + "databaseSettingsAuthRequiredCta": "Kirjaudu sisään", "storagePurgeData": "Tyhjennä tiedot", "storagePurgeDataDesc": "Poista kaikki tietueet välittömästi ilman säilytystarkistuksia. Käytä varoen.", "storageRetentionCleanup": "Säilytysasetukset", @@ -7792,7 +7799,7 @@ "purgeDetailedLogs": "Tyhjennä yksityiskohtaiset lokit", "storageDatabaseSize": "Tietokannan koko", "storagePageCount": "Sivumäärä", - "storageFreelistCount": "Freelist Count", + "storageFreelistCount": "Vapaalistan määrä", "storageLastVacuum": "Viimeinen tyhjiö", "storageLastOptimization": "Viimeinen optimointi", "storageIntegrityCheck": "Eheyden tarkistus", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "tila: {mode}", "compressionAdaptiveOff": "Mukautuva kontekstibudjetti: pois päältä (vanha automaattikäynnistys)", "compressionAdaptiveTarget": "Mukautuva ({mode}, käytäntö: {policy}) — tavoite ≈ {target, number} tokenia ({contextLimit, number} tokenin ikkunalle)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Mukautuva kontekstibudjetti", + "compressionAdaptiveModeOff": "Pois käytöstä (vanha automaattinen laukaisu)", + "compressionAdaptiveModeFloor": "Vähimmäistaso (takaa aina mahtumisen)", + "compressionAdaptiveModeReplace": "Korvaa automaattinen laukaisu", + "compressionAdaptivePolicy": "Budjettikäytäntö", + "compressionAdaptivePolicyReserve": "Varaa tulosteelle", + "compressionAdaptivePolicyPercentage": "Prosenttiosuus ikkunasta", + "compressionAdaptivePolicyAbsolute": "Absoluuttinen tunnistebudjetti", "compressionOutputStylesDescription": "Lisää vastauksen muotoiluohjeita kirjoittamatta palveluntarjoajan tulostetta uudelleen. Yhdistele vapaasti.", "mcpAccessibilityDescription": "Rajaa MCP-työkalujen tulosteet (erillinen tallennustila).", "compressionStylesTileSummary": "{tokens, number} tokenia säästetty · {runs, plural, one {# ajo tyylitelty} other {# ajoa tyylitelty}}", @@ -7844,7 +7851,7 @@ "minimal": "Minimaalinen", "standard": "Vakio", "aggressive": "Aggressiivinen", - "lite": "Lite", + "lite": "Kevyt", "full": "Täysi", "ultra": "Ultra" }, @@ -7866,8 +7873,8 @@ "description": "Komennon tulosteen suodatus." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses-työkalun tuloste", + "description": "Maltillinen pakkaus tuetuille Responses-työkalun tulosteille." }, "headroom": { "label": "Pelivara", @@ -7908,12 +7915,12 @@ "description": "YAGNI-portaat: pienin toimiva muutos, ei pyytämättömiä abstraktioita." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (laiska senior-kehittäjä)", + "description": "Laiskan senior-kehittäjän kuri: etene YAGNI-portaita, korjaa juurisyy ja tee pienin toimiva muutos." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Minulla on ADHD (toiminta ensin)", + "description": "Toiminta ensin -tuloste: aloita seuraavasta toimesta, numeroi vaiheet, anna yksi konkreettinen seuraava vaihe, älä kirjoita johdantoa." }, "terse-cjk": { "label": "Tiivis CJK (文言)", @@ -7930,7 +7937,15 @@ "memorySkillsActiveSkillsProvider": "Aktiivisten taitojen tarjoaja", "cliproxyapiFallback": "CLIProxyAPI-varaus", "cliproxyapiEnableFallback": "Ota CLIProxyAPI-varaus käyttöön", - "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiUrl": "CLIProxyAPI-URL", + "headroomProxyTitle": "Headroom-välityspalvelin", + "headroomProxyDesc": "Valinnaisen, tokeneita säästävän Headroom-välityspalvelimen URL. Tyhjä arvo käyttää osoitetta HEADROOM_URL tai http://localhost:8787.", + "headroomProxyUrl": "Headroom-URL", + "headroomProxyUrlHint": "Takaisinkytkentäosoitteet voidaan käynnistää tältä sivulta. Ulkoisten URL-osoitteiden saatavuus vain tarkistetaan.", + "headroomProxySave": "Tallenna", + "headroomProxyStart": "Käynnistä", + "headroomProxyStop": "Pysäytä", + "headroomProxyExternalHint": "Tämä URL ei ole takaisinkytkentäosoite, joten OmniRoute ei käynnistä paikallista CLI:tä.", "cliproxyapiStatus": "CLIProxyAPI-tila", "cliproxyapiNotDetected": "Ei havaittu", "cliproxyapiImportAuthTitle": "Tuo tilit CLIProxyAPI-palvelusta", @@ -7985,15 +8000,15 @@ "responsesStateModePreserve": "Säilytä", "responsesStateHint": "Automaattinen poistaa parametrin previous_response_id, ellei yhteys erikseen ota käyttöön OpenAI Responses -tallennustilaa. Poista on turvallisin tilattomille asiakkaille, kuten VS Code Custom Endpoint; konteksti riippuu tällöin siitä, että asiakas lähettää koko historian.", "responsesStateSaveError": "Responses-tila-asetuksen päivittäminen epäonnistui", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Codexin nopea taso", "codexFastTierDesc": "Globaalisti inject service_tier=prioriteetti OpenAI Codex -pyyntöille.", "codexFastTierHint": "Kun OmniRoute on käytössä, se lisää service_tier=priority lähteviin Codex-pyyntöihin yhteyksille, jotka eivät vielä määritä tasoa. Prioriteettitaso vaatii OpenAI Enterprise API -avaimen tai ChatGPT-auth Codex -polun; muut avaintyypit saavat tasoon liittyvän virheen OpenAI:lta. Codex-palveluntarjoajan sivun yhteyskohtaiset asetukset ovat ensisijaisia.", "codexFastTierSaveError": "Codex Fast Tier -asetuksen päivittäminen epäonnistui", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex-kiintiön automaattinen pingaus", + "codexAutoPingDesc": "Yhteyskohtainen valinta: lähettää pienen pyynnön heti Codex-istuntoikkunan nollauduttua, jotta se ei ole kylmänä, kun tarvitset sitä.", + "codexAutoPingWarning": "Kuluttaa jokaisella pingauksella pienen määrän todellista Codex-kiintiötä. Oletuksena poissa käytöstä — ota käyttöön vain yhteyksille, joihin aktiivisesti tukeudut.", + "codexAutoPingSaveError": "Codexin automaattisen pingauksen asetuksen päivittäminen epäonnistui", + "codexAutoPingToggleAria": "Ota Codex-kiintiön automaattinen pingaus käyttöön tai poista se käytöstä yhteydelle {connection}", "codexFastTierTierLabel": "Palvelutaso", "codexFastTierTierPriority": "Prioriteetti", "codexFastTierTierFlex": "Flex", @@ -8001,7 +8016,7 @@ "codexFastTierModelsLabel": "Fast-tason mallit", "codexFastTierModelsHint": "Vain valitut mallit saavat parametrin service_tier, kun Fast Tier on käytössä.", "codexFastTierModelCheckbox": "Ota Fast Tier käyttöön mallille {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Clauden nopea tila", "claudeFastModeDesc": "Valitse valitut Claude-pyynnöt antrooppiseen nopeaan tilaan (nopeus: \"nopea\").", "claudeFastModeHint": "Anthropic ei virallisesti tue Fast Modea SDK-tyylisille asiakkaille. Kun OmniRoute on käytössä, se välittää X-CPA-Force-Fast-Mode-otsikon, jotta pariksi liitetty CLIProxyAPI-koontiversio voi valita aloituspisteen huijauksen. Vain luetellut Opus-mallit ovat Anthropicin asiakaspuolen tarkastuksen aidattuja. Tilaustaso, enimmäispaketti ja Fast Mode -saldo ovat edelleen pakotettuja palvelinpuolella – Anthropic voi palauttaa out_of_credits, vaikka kytkin on päällä.", "claudeFastModeModelsLabel": "Sovelletaan malleihin ({count})", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Yleinen tarkistusväli", "resilienceCredentialHealthEveryMinutes": "Joka {minutes} min", "resilienceCredentialHealthHint": "0 poistaa taustaskannauksen käytöstä (enint. 1440 min = 24 h). Yhteydet, joilla on oma terveystarkistusarvo, ohittavat tämän yleisen oletuksen; 0 yhdellä yhteydellä jättää sen pois, vaikka yleinen skannaus olisi päällä.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Aina käytössä palveluntarjoajalla {provider} — vaaditaan OAuth-tilin turvallisuuden vuoksi, eikä sitä voi poistaa käytöstä.", + "forcedFingerprintBadge": "Pakollinen", "sessionAffinityTitle": "Istuntoaffiniteetti", "sessionAffinityDesc": "Pitää yhden keskustelun samalla tilillä näin monen sekunnin ajan mille tahansa palveluntarjoajalle. 0 poistaa sen käytöstä.", "sessionAffinityTtl": "Affiniteetin TTL (sekuntia)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "Backoff-vaiheiden enimmäismäärä ennen kuin jäähdytysaika lakkaa kasvamasta. Enimmäisjäähdytysaika (Max Cooldown) saavutetaan useimmissa kokoonpanoissa ensin, mikä tekee tästä turvarajan siltä varalta, että enimmäisjäähdytysaikaa nostetaan.", "disableSessionStickiness": "Poista istunnon sitovuus käytöstä", "disableSessionStickinessDesc": "Round-robin- ja satunnaisyhdistelmät vaihtavat eri yhteyteen jokaisella pyynnöllä sen sijaan, että koko keskustelu kiinnitettäisiin yhteen yhteyteen ensimmäisen viestin tiivisteen (hash) perusteella. Jätä pois käytöstä säilyttääksesi prompt-välimuistin osumat monivaiheisissa keskusteluissa. Yhdistelmäkohtaiset ohitukset ovat etusijalla.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Kehotevälimuistin paikallisuuteen perustuva reititys", + "promptCacheAffinityDesc": "Suosi samaa palveluntarjoajan tiliä täsmääville kehotevälimuistin avaimille säilyttäen samalla kuntoon ja kiintiöön perustuvan varayhteyden.", + "reasoningTokenBuffer": "Päättelytokenien puskuri", + "reasoningTokenBufferDesc": "Salli yhdistelmäreitityksen lisätä max_tokens-lisävara vain tunnetuille päättelymalleille, kun koko puskuri mahtuu tunnetun tulosterajan sisään.", + "zeroLatencyOptimizations": "Nollaviiveoptimoinnit", + "zeroLatencyOptimizationsDesc": "Ota käyttöön rinnakkaispyynnöt, ennakoivat TTFT-ohitukset ja ennakoiva varapyyntöjen pakkaus. Jätä pois käytöstä, jotta nämä viiveominaisuudet eivät kilpailuta kohteita tai pakkaa varapyyntöjä.", "credentialRedaction": "Tunnistetietojen peittäminen", "credentialRedactionDesc": "Peitä API-avaimet, tokenit ja salaisuudet tarjoajille lähetettävästä kontekstista sekä vastauksista.", "enableCredentialRedaction": "Ota tunnistetietojen peittäminen käyttöön", "enableCredentialRedactionDesc": "Puhdistaa API-avaimet, tokenit, yksityiset avaimet ja JWT:t viesteistä, työkalukutsuista ja vastauksista.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Automaattinen synkronointi poistettu käytöstä", + "pricingAutoSyncEnabled": "Automaattinen synkronointi käytössä", "modalityBridgeIntro": "Muunna multimodaalinen sisältö tekstiksi ennen kuin se saavuttaa vain tekstiä käsittelevät mallit. Kuva-, ääni- ja videosillat ovat käytettävissä ja määritettävissä.", "modalityBridgeVisionTab": "Näkö", "modalityBridgeAudioTab": "Ääni", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Terveys", "cliproxyapiPort": "Portti", "qdrantHost": "Isäntä", - "qdrantCollection": "Kokoelma", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Kokoelma" }, "contextRtk": { "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "description": "Komentotietoinen pakkaus työkalujen tulosteille, päätelokeille ja koontituloksille.", + "enabled": "Käytössä", + "intensity": "Voimakkuus", + "intensityMinimal": "Vähäinen", + "intensityStandard": "Normaali", + "intensityAggressive": "Aggressiivinen", + "toolResults": "Työkalujen tulokset", + "assistantMessages": "Avustajan viestit", + "codeBlocks": "Koodilohkot", "filterCatalog": "Suodatinluettelo", "filterCatalogDesc": "Saatavilla olevat lähtösuodattimet luokittain", "guidedConfig": "Kokoonpano", "guidedConfigDesc": "Säädä, miten RTK suodattaa terminaalin lähtösi", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Rivien enimmäismäärä", + "maxChars": "Merkkien enimmäismäärä", "deduplicateThreshold": "Poista päällekkäinen kynnys", "customFilters": "Mukautetut suodattimet", "detectedType": "Havaittu tyyppi", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Epäonnistumisia", "rawOutputAlways": "Aina", "rawOutputMaxBytes": "Raaka ulostulo max tavua", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Suodatuksen testaus", + "pasteOutput": "Liitä työkalun tuloste testataksesi suodatusta...", "presetHigh": "Aggressiivinen", "presetLow": "Kevyt", "presetMaxChars": "Enimmäismäärä merkkejä", "presetMaxLines": "Max lähtölinjat", "presetMedium": "Vakio", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Suorita", + "result": "Tulos", + "previewEmpty": "Suorita esimerkki esikatsellaksesi RTK-tulostetta.", + "detected": "Havaittu", "masterSwitchOffAlert": "Token Saver -pääkytkin on POIS PÄÄLTÄ — nämä asetukset eivät vaikuta pyyntöihin, ennen kuin otat sen käyttöön Endpoint-sivulta.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Suodatetut tokenit", + "filtersActive": "Aktiiviset suodattimet", + "requests": "Pyynnöt", + "avgSavings": "Keskimääräinen säästö", "simpleMode": "Yksinkertainen", "advancedMode": "Edistynyt", "searchFilters": "Hakusuodattimet...", @@ -8499,7 +8506,7 @@ "description": "Homogeenisten JSON-taulukoiden häviötön taulukkomuotoinen tiivistys eksplisiittisillä rivimäärämerkeillä." }, "session-dedup": { - "name": "Session Dedup", + "name": "Istunnon duplikaattien poisto", "description": "Vuorojen ylittävä lohkojen duplikaation poisto palautettavilla sisältömerkeillä." }, "ccr": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Pakkausyhdistelmät", + "description": "Määritä, miten moottoreita yhdistetään eri reititystilanteissa.", + "createCombo": "Luo pakkausyhdistelmä", + "editCombo": "Muokkaa", + "deleteCombo": "Poista", + "deleteConfirm": "Poistetaanko tämä pakkausyhdistelmä?", + "pipeline": "Käsittelyketju", + "addStep": "Lisää vaihe", + "removeStep": "Poista", + "name": "Nimi", + "descriptionField": "Kuvaus", + "languagePacks": "Kielipaketit", + "outputMode": "Tulostila", + "assignToRouting": "Määritä reititysyhdistelmiin", + "noAssignments": "Reititysyhdistelmiä ei ole saatavilla", + "default": "Oletus", + "setAsDefault": "Aseta oletukseksi", + "save": "Tallenna", + "cancel": "Peruuta", + "enabled": "Käytössä", "loading": "Ladataan…", "hubTitle": "Pakkauskeskus", "hubDescription": "Valitse, mikä pakkausprofiili suoritetaan maailmanlaajuisesti.", @@ -8661,28 +8668,28 @@ "contextEditingNote": "Tällä hetkellä saatavilla vain Claudelle (Anthropic). Se on delegoitu tila: palveluntarjoaja tyhjentää vanhat työkalulohkot palvelimen puolella — me emme kirjoita viestiä uudelleen. Se ei vaikuta muihin palveluntarjoajiin.", "namedCombos": "Nimetyt yhdistelmät", "namedCombosDescription": "Tallenna erilaisia putkia ja määritä ne tiettyihin reititysyhdistelmiin.", + "activeProfileMasterSwitchOffWarning": "Alla oleva aktiivinen profiili ei toimi, ennen kuin Prompt Compression -pääkytkin otetaan käyttöön.", + "activeProfileMasterSwitchOffCta": "Ota se käyttöön asetuksissa", "comboNamePlaceholder": "Yhdistelmän nimi", "descriptionPlaceholder": "Kuvaus", "nameRequired": "Anna yhdistelmän nimi ennen tallentamista.", "pipelineRequired": "Lisää vähintään yksi putken vaihe ennen tallentamista.", "saveComboFailed": "Yhdistelmän tallennus epäonnistui (HTTP {status}).", "deleteNamedConfirm": "Poistetaanko yhdistelmä “{name}”?", - "intensityLite": "Lite", + "intensityLite": "Kevyt", "intensityFull": "Täysi", "intensityUltra": "Ultra", "active": "Aktiivinen", "languagePacksList": "Kielipaketit: {packs}", "dragToReorder": "Vedä järjestääksesi vaiheen uudelleen", "engine": "Moottori", - "intensity": "Voimakkuus", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Voimakkuus" }, "compressionStudio": { "noRun": "Pakkausajoa ei ole saatavilla.", "liveDataHint": "Reaaliaikainen data saapuu WebSocket-pakkauskanavan kautta.", "cockpitView": "Ohjaamonäkymä", - "canvas": "Canvas", + "canvas": "Kanvaasi", "waterfall": "Vesiputous", "replayDone": "Uudelleentoisto valmis", "pauseReplay": "Keskeytä uudelleentoisto", @@ -8691,7 +8698,7 @@ "replay": "Uudelleentoisto", "resetReplay": "Nollaa uudelleentoisto", "stepProgress": "vaihe {current}/{total}", - "inlineView": "Inline", + "inlineView": "Tekstin sisäinen", "splitComingSoon": "Jaettu näkymä (tulossa pian)", "inputPlaceholder": "Liitä kehote, työkalun tuloste tai konteksti…", "activeCombined": "Aktiivinen yhdistetyssä vuossa", @@ -8705,7 +8712,7 @@ "run": "Suorita", "laneRejected": "hylätty: {reason}", "error": "virhe", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Yhdistetyn käsittelyketjun esikatselu epäonnistui: {reason}", "combinedFlow": "Yhdistetty vuo", "eachLayer": "Jokainen kerros erikseen", "diff": "Ero", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Ota moottori käyttöön", "enableDescription": "Suoritetaan pinossa viimeisenä (sen jälkeen kun RTK/Caveman puhdistaa tekstin ja OmniGlyph muuntaa loput kuviksi) ja suoritetaan myös itsenäisesti omniglyph-tilan kautta. Tämä on esikatseluversio ja pysyy oletusarvoisesti poissa käytöstä, kunnes päästä päähän -validointi on valmis.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Pakkausprofiili", + "profileDescription": "Profiili on yläraja, ei alaraja: vaihekohtainen ohitus ei voi lieventää tiukempaa profiilia. Tässä koodikannassa mitattuna coding-safe- tai balanced-profiilia käytettäessä istunto, johon ei ole vielä kertynyt historiaa, ei pakkaa mitään, koska molemmat nostavat merkkien vähimmäismäärää ja säilyttävät järjestelmäkehotteen, työkaluskeemat ja työkalujen tulokset alkuperäisessä muodossa.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Aggressiivinen (oletus)", + "description": "Käytäntö, jolla julkaistut kuitit mitattiin. Muuntaa järjestelmäkehotteen, työkaludokumentaation ja tiiviin historian kuviksi." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Tasapainoinen", + "description": "Säilyttää aktiivisen tilan alkuperäisessä muodossa ja suojaa viimeiset 8 vuoroa; tiivistää vain vanhemman suljetun historian." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Koodaukselle turvallinen", + "description": "Säilyttää valtuutukset, työkaluskeemat ja aktiivisen työkalutulosteen alkuperäisessä muodossa sekä suojaa viimeiset 12 vuoroa. Ei pakkaa mitään, ennen kuin istuntoon kertyy historiaa." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Läpivienti", + "description": "Reitittää muuntamatta. Moottori ohitetaan ja pyyntö välitetään muuttumattomana." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Valitse OmniGlyph-pakkausprofiili", "saved": "Tallennettu.", "saveFailed": "Tallennus epäonnistui.", "enableAria": "Ota OmniGlyph-moottori käyttöön", @@ -8873,7 +8880,7 @@ "providerExposureHint": "Kun tämä on käytössä, löydetyt mallit näkyvät palveluntarjoajan valitsimissa OmniRoutessa.", "providerExposureUpdateFailed": "Päivitys epäonnistui (HTTP {status})", "providerExposureNetworkFailed": "Verkkovirhe — palveluntarjoajan näkyvyysasetusta ei voitu päivittää", - "webUi": "9Router Web UI", + "webUi": "9Router-verkkokäyttöliittymä", "openNewTab": "Avaa uudessa välilehdessä", "filterLogs": "Suodata lokeja…", "resume": "Jatka", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Sääntöpohjainen viestien pakkaus, kielipaketit, analytiikka ja tulostilan hallinta.", "advancedConfig": "Lisäasetukset", "advancedConfigDesc": "Hienosäädä pakkauskäyttäytymistä", "aggressiveSettings": "Aggressiiviset asetukset", "aggressiveSettingsDesc": "Maksimaalinen pakkaus ja mahdolliset laadun kompromissit", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Pyynnöt", + "tokensSaved": "Säästetyt tokenit", + "savingsPercent": "Säästöprosentti", + "avgLatency": "Keskim. viive", + "languagePacks": "Kielipaketit", + "languagePacksDesc": "Ota käyttöön pakkaussäännöt tietyille kielille.", "labelAutoTrigger": "Pakkaa automaattisesti, kun konteksti ylittää", "labelCompressionRate": "Puristusvoima", "labelMaxTokens": "Kohdista tunnukset viestiä kohden", "labelMinLength": "Viestin vähimmäispituus", "labelMinSavings": "Vähimmäismäärä tallennettavia tokeneja", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Käytössä", + "autoDetect": "Tunnista kieli automaattisesti", + "rulesCount": "{count} sääntöä", "inputCompressionTitle": "Syötteen pakkaus", "inputCompressionDesc": "Kirjoita keskusteluhistoria uudelleen lyhyemmin sanakääntein. Vähentää syötetokeneita noin 50 %.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Pakkausanalytiikka", + "noAnalytics": "Pakkausanalytiikkaa ei vielä ole.", "masterDisabledWarning": "Token Saver -pääkytkin on POIS PÄÄLTÄ — nämä asetukset eivät vaikuta pyyntöihin, ellet ota sitä käyttöön pakkausasetuksista tai muuta sitä tästä.", "outputMode": "Lähtötila", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Tulostila", "quickSettings": "Pika-asetukset", "quickSettingsDesc": "Pakkauksen perusasetukset aloittaaksesi", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Automaattinen selkeytyksen ohitus", + "bypassConditions": "Ohitusehdot", "bypassConditionsList": "turvallisuus, peruuttamaton, selvennys, järjestysherkkä", "simpleMode": "Yksinkertainen", "advancedMode": "Edistynyt", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ultra-asetukset", "ultraSettingsDesc": "SLM-käyttöinen semanttinen pakkaus", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Vastaa ytimekkäästi. Säilytä tekniset termit, koodi, virheet, URL-osoitteet ja tunnisteet.", + "full": "Vastaa lyhyesti ja tiiviisti. Säilytä kaikki tekninen asiasisältö.", + "ultra": "Vastaa erittäin lyhyesti käyttäen yleisiä teknisiä lyhenteitä. Säilytä symbolit täsmälleen." } }, "translator": { @@ -8958,7 +8965,7 @@ "realtime": "Reaaliaikainen käännöstoiminta", "chatTester": "Chatin testaaja", "testBench": "Testipenkki", - "liveMonitor": "Live Monitor", + "liveMonitor": "Reaaliaikainen valvonta", "modeDescriptionPlayground": "Liitä mikä tahansa API-pyynnön runko ja katso, kuinka OmniRoute kääntää sen toimittajamuotojen välillä (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", "modeDescriptionChatTester": "Lähetä todellisia chat-pyyntöjä OmniRouten kautta ja tarkasta koko meno-paluu: syöttö, käännetty pyyntö, palveluntarjoajan vastaus ja käännetty tulos.", "modeDescriptionTestBench": "Suorita ennalta määritettyjä skenaarioita ja vertaile toimittajien ja mallien yhteensopivuutta.", @@ -8987,24 +8994,24 @@ "ideCliIntegrations": "IDE/CLI-integraatiot", "inMemoryNote": "Huomautus: Tapahtumat tallennetaan muistiin ja nollataan, kun palvelin käynnistyy uudelleen.", "ok": "OK", - "errorShort": "ERR", - "formatConverter": "Format Converter", + "errorShort": "VIRHE", + "formatConverter": "Muotomuunnin", "formatConverterDescription": "Liitä tai kirjoita JSON-pyynnön leipäteksti. Kääntäjä tunnistaa automaattisesti lähdemuodon ja muuntaa sen kohdemuotoon. Käytä tätä virheenkorjaukseen, kuinka OmniRoute kääntää pyynnöt muotojen välillä (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (keskitaso) → {target}", "translationPathDirect": "{source} → {target} (suora kääntäjä)", "translationPathPassthrough": "Sama muoto – käännöstä ei tarvita", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "OpenAI-välimuoto", "autoFeaturesTitle": "Mitä OmniRoute tekee automaattisesti", "autoFeaturesCount": "8 ominaisuutta", "featureReasoningCache": "Päättelyvälimuisti", "featureReasoningCacheDesc": "Lisää välimuistiin tallennettua päättelysisältöä uudelleen ajattelutapamalleille (DeepSeek V4, Kimi K2, Qwen), kun asiakkaat jättävät sen pois keskusteluhistoriasta.", - "featureSchemaCoercion": "Schema Coercion", + "featureSchemaCoercion": "Skeeman mukautus", "featureSchemaCoercionDesc": "Korjaa rikkinäiset työkalukaaviot: lisää puuttuvia lisäominaisuuksia, puhdistaa pitkät kuvaukset, normalisoi sisäkkäiset objektit.", "featureRoleNormalization": "Roolin normalisointi", "featureRoleNormalizationDesc": "Maps-kehittäjä→järjestelmä muille kuin OpenAI-kohteille. Karttajärjestelmä→käyttäjä malleille, jotka eivät tue järjestelmäroolia.", "featureToolCallIds": "Työkalu Puhelutunnuksen normalisointi", "featureToolCallIdsDesc": "Luo yksilölliset tool_call-tunnukset, kun ne puuttuvat. Normalisoituu 9-merkin muotoon sellaisille palveluntarjoajille kuin Mistral.", - "featureMissingToolResponse": "Tool Response Injection", + "featureMissingToolResponse": "Työkaluvastauksen injektointi", "featureMissingToolResponseDesc": "Lisää tyhjät tool_result -viestit, kun asiakkaat lähettävät työkalukutsut ilman vastaavia vastauksia.", "featureThinkingBudget": "Miettivä budjetti", "featureThinkingBudgetDesc": "Hallitsee automaattisesti ajatteluasetuksia. Poistaa ajatteluparametrit, kun viimeinen viesti ei ole käyttäjältä.", @@ -9048,7 +9055,7 @@ "system-prompt": "Järjestelmäkehote", "streaming": "Suoratoisto", "vision": "Visio", - "schema-coercion": "Schema Coercion" + "schema-coercion": "Skeeman mukautus" }, "templateDescriptions": { "simple-chat": "Perustekstiviesti", @@ -9101,7 +9108,7 @@ "anthropicCompatibleLabel": "Antrooppinen yhteensopiva", "noTemplateForFormat": "Ei mallia tälle muodolle", "translationFailed": "Käännös epäonnistui: {error}", - "pipelineDebugger": "Pipeline Debugger", + "pipelineDebugger": "Putken virheenjäljitin", "translationPipeline": "Käännösputki", "loading": "Ladataan…", "compressionOriginal": "Alkuperäinen", @@ -9123,14 +9130,14 @@ "chatMessageHintPrefix": "Viestisi muotoillaan muodossa a", "chatMessageHintSuffix": "pyyntö, käännetään putken kautta ja lähetetään valitulle palveluntarjoajalle.", "youWithFormat": "Sinä ({format})", - "assistant": "Assistant", + "assistant": "Avustaja", "typeMessage": "Kirjoita viesti...", "send": "Lähetä", "clientRequest": "Asiakaspyyntö", "clientRequestDescription": "Pyynnön elin sellaisena kuin asiakkaasi sen lähettäisi", "formatDetected": "Muoto havaittu", "formatDetectedDescription": "OmniRoute tunnistaa automaattisesti API-muodon pyyntörakenteesta", - "openaiIntermediate": "OpenAI Intermediate", + "openaiIntermediate": "OpenAI-välimuoto", "openaiIntermediateDescription": "Kaikki muodot normalisoidaan ensin OpenAI-muotoon (yleinen silta)", "providerFormat": "Tarjoajan muoto", "providerFormatDescription": "OpenAI-muoto käännetään palveluntarjoajan alkuperäiseen muotoon", @@ -9149,7 +9156,7 @@ "eventSourceMainPipeline": "• Pääpyyntöputkisto (CLI/IDE/API-liikenne)", "liveMonitorDescriptionPrefix": "Näyttää käännöstapahtumat, kun API-kutsut kulkevat OmniRouten kautta. Tapahtumat tulevat muistin puskurista (palautuu uudelleenkäynnistyksen yhteydessä). Käytä", "liveMonitorDescriptionSuffix": "tai ulkoisia API-kutsuja tapahtumien luomiseksi.", - "streamTransformer": "Stream Transformer", + "streamTransformer": "Suoratoistomuunnin", "modeDescriptionStreamTransformer": "Suorita chatin loppuunsaattamisen SSE-suorat Responses-muuntajan kautta.", "streamTransformerTitle": "Vastaukset Stream Transformer", "streamTransformerDescription": "Liitä keskustelun loppuunsaattamisen SSE-virta, suorita se OmniRouten vastausmuuntajan läpi ja tarkasta lähetetyt vastaukset.*-tapahtumat ennen kuin liität asiakkaan.", @@ -9157,7 +9164,7 @@ "loadToolSample": "Lataa työkalukutsunäyte", "transformToResponses": "Muunna vastauksiksi", "rawChatSseInput": "Raaka-chatin loppuun saattaminen SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "Muunnettu Responses API SSE", "noResultsYet": "Ei tuloksia vielä", "transformedEvents": "Muuttuneet tapahtumat", "uniqueEventTypes": "Ainutlaatuiset tapahtumatyypit", @@ -9181,7 +9188,7 @@ "conceptHeadline": "Sovelluksesi puhuu yhden API:n ”kieltä”. Kääntäjä muuntaa sen käyttämään toista tarjoajaa.", "conceptDiagramAppLabel": "Sovelluksesi", "conceptDiagramSourceLabel": "Lähdemuoto", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (keskus)", "conceptDiagramTargetLabel": "Kohdetarjoaja", "conceptDiagramExampleApp": "esim. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Liitä JSON-pyyntö; muoto tunnistetaan automaattisesti.", "advancedPipelineTitle": "OpenAI-välipipeline", "advancedPipelineSubtitle": "Visualisoi jokainen käännösvaihe (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Suoratoistomuunnin (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Muuntaa Chat Completions SSE -muodon Responses API -muotoon.", "advancedTestBenchTitle": "Testipenkki (8 skenaariota)", "advancedTestBenchSubtitle": "Suorittaa kaikki skenaariot ja raportoi hyväksytty/hylätty + yhteensopivuus-%.", @@ -9253,7 +9260,7 @@ "tokens": "tokenit", "pauseAutoRefresh": "Keskeytä automaattinen päivitys", "resumeAutoRefresh": "Jatka automaattista päivitystä", - "live": "Live", + "live": "Reaaliaikainen", "copyInput": "Kopioi syöte", "copyOutput": "Kopioi tuloste", "streamTransformFailed": "Virran muuntaminen epäonnistui" @@ -9265,9 +9272,9 @@ "grokAutoTopUpUnavailable": "Ei saatavilla", "grokAutoTopUpEnabled": "Oma käytössä", "grokAutoTopUpDisabled": "Poistettu käytöstä", - "grokAutoTopUpAt": "at", + "grokAutoTopUpAt": "kohdassa", "grokAutoTopUpAdd": "lisää", - "grokAutoTopUpMax": "max", + "grokAutoTopUpMax": "enintään", "grokAutoTopUpMonth": "kuukausi", "grokAdditionalCredits": "Lisäluotit", "kiloAccountBalance": "Tilin saldo", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Jäljellä", "kiloPassRenews": "Uusiutuu {count} päivän kuluttua", "kiloPassUsageLabel": "Tämän kuun käyttö", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Lisäkäyttökrediitit", + "kimiExtraUsage": "Lisäkäyttö", + "kimiExtraUsageEnabled": "Käytössä", + "kimiExtraUsageDisabled": "Poistettu käytöstä", + "kimiExtraUsageFrozen": "Jäädytetty", + "kimiExtraUsageUnavailable": "Ei käytettävissä", + "kimiMonthlyUsed": "Käytetty tässä kuussa", + "kimiMonthlyLimit": "Kuukausiraja", + "kimiMonthlyLimitUnlimited": "Rajoittamaton", + "kimiAdditionalCredits": "Lisäkrediitit", "loggerTab": "Kirjaaja", "proxyTab": "Välityspalvelin", "budgetManagement": "Budjetin hallinta", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Katkaisijat", "lockedIPs": "Lukitut IP:t", "lockoutsAutoRefreshHint": "Mallikohtaiset nopeusrajoitukset • Automaattinen päivitys 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# lukittu} other {# lukittua}}", "timeLeft": "{time} jäljellä", "howItWorks": "Miten se toimii", "howItWorksSubtitle": "Opi kuinka arvioinnit vahvistavat LLM-vastauksesi", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "Vastauksia verrataan odotettuihin kriteereihin. Katso kunkin tapauksen hyväksyntä/hylkäys viivemittareiden ja yksityiskohtaisen palautteen avulla.", "evalsStrategyContainsLabel": "Sisältää", "evalsStrategyExactLabel": "Tarkka vastaavuus", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Säännöllinen lauseke", "evalsStrategyCustomLabel": "Mukautettu logiikka", "evalsStrategyContainsDescription": "Tarkistaa, sisältääkö LLM-tuloste odotetun osamerkkijonon.", "evalsStrategyExactDescription": "Tarkistaa, vastaako LLM-tuloste tarkalleen odotettua arvoa.", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Mallit testattavana", "searchSuitesPlaceholder": "Etsi sviittejä...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# tapaus} other {# tapausta}}", "runEval": "Juokse Eval", "runAllSuites": "Suorita kaikki", "runAllRunning": "Kaikki käynnissä...", "runAllProgress": "Käynnissä {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# testikokonaisuus epäonnistui} other {# testikokonaisuutta epäonnistui}}", "runAllCompleted": "Suoritettiin {suites} sviittiä – {passed} hyväksytty, {failed} epäonnistui", "runAllCompletedWithFailures": "Käytti {completed} sviittiä; {failedSuites} epäonnistui", "runningProgress": "Käynnissä {current}/{total}...", @@ -9423,7 +9430,7 @@ "providerLimits": "Palveluntarjoajan rajoitukset", "noProviders": "Ei yhdistettyjä palveluntarjoajia", "connectProvidersForQuota": "Muodosta yhteys palveluntarjoajiin OAuthin avulla seurataksesi API-kiintiörajoja ja käyttöä.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# tili} other {# tiliä}}", "filteredFromCount": "(suodatettu kohteesta {count})", "autoRefresh": "Automaattinen päivitys", "refreshAll": "Päivitä kaikki", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Kiintiön näkyvyyden päivittäminen epäonnistui", "account": "Tili", "modelQuotas": "Mallikiintiöt", - "lastUsed": "Last Refreshed", + "lastUsed": "Päivitetty viimeksi", "actions": "Toiminnot", "refreshQuota": "Päivitä kiintiö", "today": "Tänään", @@ -9452,20 +9459,20 @@ "cardExpand": "Laajenna", "cardCollapse": "Kutista", "moreQuotas": "+{count} lisää", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Ryhmittelemätön", + "viewFlat": "Litteä", + "viewByEnvironment": "Ympäristön mukaan", "noQuotaDataAvailable": "Kiintiötietoja ei ole saatavilla", "noAccountsForTierFilter": "Tasosuodattimelle ei löytynyt tilejä", "tierAll": "Kaikki", "tierEnterprise": "Yritys", "tierTeam": "Joukkue", - "tierBusiness": "Business", + "tierBusiness": "Yritys", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "Ilmainen", - "tierLite": "Lite", + "tierLite": "Kevyt", "tierUnknown": "Tuntematon", "statTotal": "Yhteensä", "statCritical": "Kriittinen", @@ -9475,7 +9482,7 @@ "filterTierLabel": "Taso", "purchaseAll": "Kaikki", "purchaseOauthSub": "Tilaus", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "Ilman OAuthia", "purchaseApiKey": "API-avain", "creditsLabel": "Krediitit", "creditBalanceHint": "Jäljellä oleva saldo", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Lunasta hyvitys", "resetCreditRedeemed": "Nollaus lunastettu", "resetCreditRedeemFailed": "Nollaushyvityksen lunastaminen epäonnistui", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Testikokonaisuuden tallentaminen epäonnistui", "clone": "Klooni", "exportSuite": "Vie", "importSuite": "Tuo", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Virheellinen eval suite JSON", "suiteBuilderCloneSuffix": "kopioida", "suiteBuilderImportedSuite": "Tuotu sviitti", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Tuloskortti", + "evalApiKey": "API-avain", + "scorecardPassRate": "Läpäisyaste", + "targetTypeModel": "Malli", + "actualOutputLabel": "Todellinen tuloste", + "evalTargetHint": "Valitse arvioitava malli tai yhdistelmä.", + "suiteBuilderDeleted": "Testikokonaisuus poistettiin onnistuneesti", + "suiteBuilderCaseCardHint": "Määritä syötekehote ja odotetun tulosteen kriteerit.", + "nextResetUtc": "Seuraava nollaus (UTC)", + "scorecardHint": "Kaikkien arviointikokonaisuuksien yhteenlasketut läpäisyasteet.", + "suiteLatestRunsHint": "Tämän testikokonaisuuden viimeisimmät arviointiajot.", + "saving": "Tallennetaan", + "suiteBuilderCaseModelLabel": "Malli (valinnainen)", + "evalControlsTitle": "Arvioinnin hallinta", + "suiteBuilderEditTitle": "Muokkaa testikokonaisuutta", + "suiteBuilderCaseStrategyLabel": "Validointistrategia", + "notifySelectDifferentCompareTarget": "Valitse vertailua varten toinen kohde", + "recentRunsHint": "Näytetään viimeisimmät arviointiajot. Näet yksityiskohtaiset tulokset napsauttamalla ajoa.", + "evalCompareHint": "Voit halutessasi verrata tuloksia toiseen kohteeseen.", + "suiteBuilderCaseInvalid": "Tässä testitapauksessa on validointivirheitä. Korjaa ne ennen tallentamista.", + "historyEmpty": "Arviointihistoriaa ei vielä ole", + "suiteBuilderUpdated": "Testikokoelma päivitettiin onnistuneesti", + "resetInterval": "Nollausväli", + "suiteBuilderCreateTitle": "Luo arviointikokoelma", + "activePeriodSpend": "Aktiivisen jakson kulutus", + "evalApiKeyHint": "Valitse arviointipyyntöihin käytettävä API-avain.", + "evalCompareOptional": "Vertailukohde (valinnainen)", + "suiteBuilderDeleteFailed": "Testikokoelman poistaminen epäonnistui", + "suiteBuilderCaseSystemPromptPlaceholder": "Valinnaiset järjestelmäohjeet...", + "scorecardCases": "Testitapaukset", + "runCompletedWithScore": "Arviointi valmistui — läpäisyaste {score} %", + "suiteBuilderCustomBadge": "Mukautettu", + "targetSuiteDefaults": "Testikokoelman oletusasetukset", + "suiteBuilderDeleteConfirm": "Haluatko varmasti poistaa tämän testikokoelman? Toimintoa ei voi kumota.", + "suiteBuilderNameLabel": "Testikokoelman nimi", + "scorecardSuites": "Testikokoelmat", + "evalCompareTarget": "Vertailukohde", + "suiteBuilderCaseModelPlaceholder": "esim. gpt-4o-mini", + "evalControlsHint": "Määritä arviointikohde ja API-avain ja suorita sitten testikokoelmia mallin laadun validoimiseksi.", + "recentRunsTitle": "Viimeisimmät suoritukset", + "suiteBuilderCaseSystemPromptLabel": "Järjestelmäkehote", + "suiteBuilderCaseExpectedPlaceholder": "esim. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "esim. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Liitä tarkka odotettu vastaus", "suiteBuilderCaseExpectedPlaceholderRegex": "esim. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Käytä säännöllistä JavaScript-lauseketta ilman vinoviivaa.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "esim. Koodin laadun testikokoelma", + "suiteBuilderAddCase": "Lisää testitapaus", + "cancel": "Peruuta", + "evalTarget": "Kohde", + "suiteBuilderCaseNameLabel": "Testitapauksen nimi", + "weeklyLimitUsd": "Viikkoraja (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "esim. Kirjoita fibonacci-funktio Pythonilla", + "suiteBuilderNameRequired": "Testikokoelman nimi on pakollinen", + "suiteBuilderCaseUserPromptLabel": "Käyttäjäkehote", + "daily": "Päivittäin", + "resultErrorLabel": "Virhe", + "suiteBuilderBuiltInBadge": "Sisäänrakennettu", + "suiteBuilderCaseCardTitle": "Testitapaus", "suiteBuilderDuplicateCase": "Kopioi", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "esim. 50.00", + "suiteBuilderCaseTagsHint": "Pilkuilla erotetut tunnisteet testitapausten järjestämistä varten.", + "notifyEvalRunFailedWithReason": "Arviointi epäonnistui: {reason}", + "weekly": "Viikoittain", + "runEvalRunning": "Arviointi käynnissä...", + "delete": "Poista", + "resetTimeUtc": "Nollausaika (UTC)", + "evalApiKeyAuto": "Automaattinen (käytä oletusta)", + "suiteBuilderDescriptionPlaceholder": "Valinnainen kuvaus siitä, mitä tämä testisarja testaa...", + "targetComparisonTitle": "Kohteiden vertailu", + "save": "Tallenna", + "suiteBuilderCreated": "Testisarja luotu onnistuneesti", + "suiteLatestRuns": "Viimeisimmät ajot", + "suiteBuilderCaseExpectedLabel": "Odotettu arvo", + "historyLatency": "Viive", + "suiteBuilderCaseTagsPlaceholder": "esim. coding, python", + "targetTypeCombo": "Yhdistelmä", + "scorecardPassed": "Hyväksytty", + "suiteBuilderCaseTagsLabel": "Tunnisteet", + "suiteBuilderNewSuite": "Uusi testisarja", + "notifyEvalLoadFailed": "Arviointitietojen lataaminen epäonnistui", + "notConfigured": "Ei määritetty", + "suiteBuilderCaseNamePlaceholder": "esim. Python fibonacci -testi", + "intervalLabel": "Aikaväli", + "suiteBuilderCreateAction": "Luo testisarja", + "suiteBuilderCasesHint": "Jokainen testitapaus lähettää kehotteen ja validoi vastauksen.", + "suiteBuilderUpdatedAt": "Päivitetty", + "errorBadge": "Virhe", + "suiteBuilderCasesTitle": "Testitapaukset", + "edit": "Muokkaa", + "monthly": "Kuukausittain", + "suiteBuilderCasesRequired": "Vähintään yksi testitapaus vaaditaan", + "weeklyLimitSummary": "Viikoittaisen budjettirajan yhteenveto", + "suiteBuilderDescriptionLabel": "Kuvaus", + "targetComparisonHint": "Arviointitulosten rinnakkainen vertailu kohteiden välillä.", + "compareCompletedWithScore": "Vertailu valmis — läpäisyaste {score} %", + "staleQuotaTooltip": "Viimeisin päivitys epäonnistui — näytetään välimuistissa olevat tiedot", "quotaThresholdLabel": "Min jäljellä", "quotaCutoffsColumnHelp": "Pysäytä pyynnöt, kun jäljellä oleva kiintiö laskee tähän prosenttiosuuteen tai sen alle.", "quotaCutoffsButtonDefault": "Oletus", @@ -9630,7 +9637,7 @@ "quotaThresholdInvalid": "Syötä kokonaisluku väliltä 0-100.", "budgetKpiToday": "Tänään", "budgetKpiThisMonth": "Tämä kuukausi", - "budgetKpiProjEom": "Proj EOM", + "budgetKpiProjEom": "Arvioitu kuukauden lopussa", "budgetKpiBlocked": "Estetty", "budgetKpiAtRisk": "Vaarassa", "budgetKpiActiveKeys": "Aktiiviset avaimet", @@ -9756,7 +9763,7 @@ "usageByModel": "Käyttö mallin mukaan", "usageByAccount": "Käyttö tilikohtaisesti", "failedToLoad": "Käyttötilastojen lataaminen epäonnistui.", - "tokenHealth": "Token Health", + "tokenHealth": "Tunnusten tila", "totalOAuth": "Yhteensä OAuth", "healthy": "Terve", "warning": "Varoitus", @@ -9816,8 +9823,8 @@ "signIn": "Kirjaudu sisään", "enterPassword": "Anna salasanasi jatkaaksesi", "password": "Salasana", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", + "unifiedProxy": "Yhtenäinen AI API -välityspalvelin", + "unifiedAiApiProxy": "Yhtenäinen AI API -välityspalvelin", "unifiedAiApiProxyDesc": "Reititä pyynnöt useille tekoälypalveluntarjoajille yhden päätepisteen kautta. Kuormituksen tasapainotus, vikasieto ja käytön seuranta sisäänrakennettu.", "passwordNotEnabled": "Salasanasuojaus ei ole käytössä", "loading": "Ladataan...", @@ -9835,7 +9842,7 @@ "copyUrlManual": "Kopioi URL-osoite osoitepalkista ja liitä se sovellukseen.", "accessDeniedDescription": "Sinulla ei ole lupaa käyttää tätä resurssia. Tarkista API-avaimesi tai ota yhteyttä järjestelmänvalvojaan.", "goToDashboard": "Siirry Dashboardiin", - "featureMultiProviderTitle": "Multi-Provider", + "featureMultiProviderTitle": "Usean palveluntarjoajan", "featureMultiProviderDesc": "OpenAI, Anthropic, Google ja paljon muuta", "featureLoadBalancingTitle": "Kuorman tasapainotus", "featureLoadBalancingDesc": "Jaa pyynnöt älykkäästi", @@ -9863,7 +9870,7 @@ "backToLogin": "Takaisin kirjautumiseen", "forgotPassword": "Unohditko salasanan?", "continueWithOidc": "Jatka OIDC-yhteydellä", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Oletussalasana: CHANGEME (ellei INITIAL_PASSWORD-muuttujaa ole asetettu)", "Authorization": "Valtuutus", "Content-Disposition": "Sisältö-sijoittelu", "waitingForAuthorization": "Odotetaan valtuutusta...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Odotetaan antigravitaatiovaltuutusta...", "waitingForQoderAuthorization": "Odotetaan Qoder-valtuutusta...", "exchangingCodeForTokens": "Vaihdetaan koodia tokeneihin...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Yhteensopimaton Node.js-versio", + "nodeIncompatibleDesc": "Käytössä on Node.js {version}, joka ei kuulu OmniRouten tukeman turvallisen suoritusympäristön käytännön piiriin. Käytä tietoturvakorjauksilla päivitettyä Node.js 20.x- tai 22.x LTS -versiota.", + "nodeIncompatibleFixLabel": "Korjaus: asenna tietoturvakorjauksilla päivitetty Node.js 22 LTS -versio", + "nodeIncompatibleHint": "OmniRoute vaatii Node.js-version 22.22.2+ (22.x LTS) tai 24.0.0+ (24.x LTS). Node 24 LTS on suositeltava.", "resetViaAppDataTitle": "Nollaa sovellustietojen kautta", "resetViaAppDataDescription": "Poista asetustiedosto sovelluksen datakansiosta palauttaaksesi salasanasi:", "quitDesktopApp": "Lopeta OmniRoute-työpöytäsovellus kokonaan", @@ -9953,7 +9960,7 @@ "featureUsageTrackingDesc": "Yksityiskohtainen analytiikka ja kustannusseuranta kaikissa malleissa.", "featureOAuthApiKeysTitle": "OAuth- ja API-avaimet", "featureOAuthApiKeysDesc": "Hallitse tunnistetietoja turvallisesti yhdessä holvissa.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Pilvisynkronointi", "featureCloudSyncDesc": "Synkronoi määritykset eri laitteiden välillä välittömästi.", "featureCliSupportTitle": "CLI-tuki", "featureCliSupportDesc": "Toimii Claude Coden, Codexin, Clinen, Cursorin ja muiden kanssa.", @@ -10033,8 +10040,8 @@ "clientCompatibility": "Asiakasyhteensopivuus", "protocolsToc": "Protokollat", "apiReference": "API-viite", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Hallinta-API:n viite", + "managementApiDescription": "Automaatiopäätepisteet välityspalvelinrekisterille, kohdistusaluemäärityksille ja vanhojen välityspalvelinasetusten siirrolle.", "method": "menetelmä", "path": "Polku", "notes": "Huomautuksia", @@ -10064,7 +10071,7 @@ "quickStartStep4Suffix": "Käytä esimerkiksi palveluntarjoajan etuliitettä", "deploySetupTitle": "Asennusopas", "deploySetupText": "Vaiheittainen asennus, ympäristön määritys ja ensimmäinen läpikäynti OmniRoutelle.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron-työpöytäsovellus", "deployElectronText": "Suorita OmniRoute alkuperäisenä työpöytäsovelluksena Windowsissa, macOS:ssä ja Linuxissa.", "deployDockerTitle": "Docker", "deployDockerText": "Konttikäyttöönotto Docker Composella; valmis tuotantopinot ja Kubernetes.", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Asenna OmniRoute progressiivisena verkkosovelluksena Android-, iOS- ja työpöytäselaimiin.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Suorita OmniRoute Androidissa ilman käyttöliittymää Termuxin kautta. Käytä hallintapaneelia mobiiliselaimellasi.", "featureRoutingTitle": "Usean palveluntarjoajan reititys", "featureRoutingText": "Reititä pyynnöt yli 30 tekoälypalveluntarjoajalle yhden OpenAI-yhteensopivan päätepisteen kautta. Tukee chat-, vastaus-, ääni- ja kuvasovellusliittymiä.", "featureCombosTitle": "Yhdistelmät ja tasapainotus", @@ -10090,7 +10097,7 @@ "featureCliText": "Hallitse IDE-määrityksiä, vie/tuo varmuuskopioita, etsi koodeksiprofiileja ja määritä asetuksia kojelaudalta.", "featureSecurityTitle": "Turvallisuus ja käytännöt", "featureSecurityText": "API-avaimen todennus, IP-suodatus, pikasyöttösuoja, toimialueen käytännöt, istunnon hallinta ja tarkastusloki.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Pilvisynkronointi", "featureCloudSyncText": "Synkronoi kokoonpanosi Cloudflare Workersin kanssa, jotta voit käyttää etäkäyttöä salatuilla tunnistetiedoilla ja automaattisella virheensiirrolla.", "providersAcrossConnectionTypes": "{count} palveluntarjoajia kolmessa yhteystyypissä.", "manageProviders": "Hallinnoi palveluntarjoajia", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Uudelleenkirjoitusapuohjelma asiakkaille ilman /v1.", "endpointRewriteResponsesNote": "Uudelleenkirjoitusapuohjelma vastauksille ilman /v1.", "endpointRewriteModelsNote": "Uudelleenkirjoitusapuohjelma mallin etsinnässä ilman /v1:tä.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Luettele välityspalvelinrekisteriin tallennetut kohteet (tukee sivutusta).", + "mgmtProxiesCreateNote": "Luo rekisteriin uudelleenkäytettävä välityspalvelinkohde.", + "mgmtProxiesHealthNote": "Hae jokaisen tallennetun välityspalvelimen 24 tunnin ja liukuvan ajanjakson kuntomittarit välityspalvelinlokeista.", + "mgmtProxiesBulkAssignNote": "Määritä yksi välityspalvelin useille kohdistusaluetunnuksille tai poista sen määritys yhdellä pyynnöllä.", + "mgmtAssignmentsListNote": "Luettele välityspalvelinmääritykset scope-, scope_id- tai proxy_id-arvon mukaan.", + "mgmtAssignmentsUpdateNote": "Määritä välityspalvelin globaalille, palveluntarjoajan, tilin tai yhdistelmän kohdistusalueelle tai poista sen määritys.", + "mgmtLegacyMigrationNote": "Tuo vanhat proxyConfig-kartoitukset rekisterimäärityksiksi.", "modelPrefixesDescriptionStart": "Käytä toimittajan etuliitettä ennen mallin nimeä reitittääksesi tietylle toimittajalle. Esimerkki:", "modelPrefixesDescriptionEnd": "reitit GitHub Copilotiin.", "provider": "Palveluntarjoaja", @@ -10221,7 +10228,7 @@ "featureSearchText": "Integroitu verkkohaku 5 palveluntarjoajan kanssa (Serper, Brave, Exa, Tavily, Perplexity), mukaan lukien analytiikka ja kustannusseuranta.", "featureMemoryTitle": "Muistijärjestelmä", "featureMemoryText": "Pysyvä keskustelumuisti, jossa poimiminen, injektio, haku ja yhteenveto istuntojen välillä.", - "featureSkillsTitle": "Skills Framework", + "featureSkillsTitle": "Taitokehys", "featureSkillsText": "Laajennettava taitojärjestelmä, jossa on sisäänrakennetut ja mukautetut taidot, hiekkalaatikkosuoritus, pyyntöjen sieppaus ja kontekstin lisäys.", "featureAcpTitle": "Agentin viestintä", "featureAcpText": "Agent Communication Protocol (ACP) -rekisteri agenttien välisten työnkulkujen ja työkalujen organisoinnin hallintaan.", @@ -10251,7 +10258,7 @@ "nonTechUsersSubtitle": "Aloita nopeasti — ei tarvita teknistä taustaa", "techUsersTitle": "Tekniikkakäyttäjille", "techUsersSubtitle": "Syväsukellus arkkitehtuuriin, API:hin ja sisäisiin toimintoihin", - "apiExplorerMetadataTitle": "API Explorer — OmniRoute Docs", + "apiExplorerMetadataTitle": "API-selain — OmniRoute Docs", "apiExplorerMetadataDescription": "Interaktiivinen API-selain — kokeile OmniRoute-päätteitä livenä reaaliaikaisilla vastauksilla", "apiExplorerTitle": "API-selain", "apiExplorerDescription": "Kokeile OmniRoute-päätteitä livenä. Valitse pääte, määritä pyyntösi ja katso vastaus reaaliajassa.", @@ -10296,7 +10303,7 @@ "listSeparator": "-", "questionsVisit": "Kysymyksiä? Vieraile meillä", "githubRepository": "GitHub-arkisto", - "privacySection1Title": "1. Local-First Architecture", + "privacySection1Title": "1. Paikallisuus edellä suunniteltu arkkitehtuuri", "privacySection1Text": "OmniRoute on suunniteltu paikalliseksi sovellukseksi. Kaikki tietojen käsittely ja tallennus tapahtuu kokonaan koneessasi. Ei ole keskitettyä palvelinta, joka kerää tietojasi.", "privacySection2Title": "2. Tallentamamme tiedot", "privacyDataStoredIn": "Seuraavat tiedot on tallennettu paikallisesti", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute on avoimen lähdekoodin ohjelmisto. Voit vapaasti tarkastaa, muokata ja jakaa sitä sen lisenssiehtojen mukaisesti." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI-agentit", + "description": "Etsi järjestelmääsi asennetut CLI-agentit. Lisää mukautettuja agentteja automaattista tunnistusta varten.", + "refresh": "Päivitä", + "installed": "Asennettu", + "notFound": "Ei löytynyt", + "builtIn": "Sisäänrakennettu", + "custom": "Mukautettu", + "remove": "Poista", + "addCustomAgent": "Lisää mukautettu agentti", + "addCustomAgentDesc": "Rekisteröi mikä tahansa CLI-työkalu tunnistusta varten. Se tarkistetaan automaattisesti päivityksen yhteydessä.", + "agentName": "Agentin nimi", + "binaryName": "Binaarin nimi", + "versionCommand": "Versiokomento", + "spawnArgs": "Käynnistysargumentit", + "addAgent": "Lisää agentti", + "scanning": "Etsitään järjestelmästä CLI-agentteja...", + "opencodeIntegration": "OpenCode-integraatio", + "opencodeDetected": "opencode {version} havaittu", + "opencodeDesc": "Luo käyttövalmis {configFile}, joka sisältää OmniRoute-perus-URL-osoitteesi ja kaikki käytettävissä olevat mallit — sijoita se projektisi juurihakemistoon ja suorita {command}.", + "downloadConfig": "Lataa {file}", + "downloaded": "Ladattu!", + "setupGuideTitle": "Asennusopas", + "openCliTools": "Avaa CLI-työkalut", + "setupGuideDetectCliTitle": "Tunnista asennetut CLI:t", + "setupGuideDetectCliDesc": "Napsauta Päivitä-painiketta CLI:n asentamisen tai päivittämisen jälkeen, jotta OmniRoute voi etsiä binaarit ja versiot uudelleen.", + "setupGuideCustomAgentTitle": "Rekisteröi mukautettu binaari", + "setupGuideCustomAgentDesc": "Käytä Lisää mukautettu agentti -toimintoa, jos CLI:si ei ole sisäänrakennetussa luettelossa. Anna binaarin nimi ja versiokomento.", + "setupGuideCommandMissingTitle": "Korjaa ”komentoa ei löydy” -virhe", + "setupGuideCommandMissingDesc": "Varmista, että CLI-komento löytyy PATH-ympäristömuuttujasta, avaa uusi pääteistunto ja suorita Päivitä uudelleen.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10498,7 +10505,7 @@ "tool-calling": "Työkalun kutsuminen", "multi-turn": "Monikierros", "vision": "Visio", - "schema-coercion": "Schema Coercion" + "schema-coercion": "Skeeman pakotettu muunnos" }, "templateDescriptions": { "simple-chat": "Peruskeskustelumalli järjestelmäviestillä", @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Välimuistin hallinta", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Päivitä", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Muistimerkinnät", + "memoryEntriesSub": "Muistissa oleva LRU", + "dbEntries": "Tietokantamerkinnät", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Välimuistiosumat", + "cacheHitsSub": "yhteensä {total}", + "tokensSaved": "Säästetyt tokenit", + "tokensSavedSub": "Arvioitu osumien perusteella", + "hitRate": "Osumaprosentti", + "performance": "Välimuistin suorituskyky", + "autoRefresh": "Päivittyy automaattisesti {seconds} s välein", + "hits": "Osumat", + "misses": "Ohitukset", + "total": "Yhteensä", + "behavior": "Välimuistin toiminta", + "behaviorDeterministic": "Vain ei-suoratoistettavat pyynnöt, joiden temperature=0, tallennetaan välimuistiin.", + "behaviorBypass": "Ohita otsakkeella {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "Oletusarvoinen TTL: 30 minuuttia. Määritä muuttujalla {envVar}.", + "idempotency": "Idempotenssikerros", + "activeDedupKeys": "Aktiiviset deduplikointiavaimet", + "dedupWindow": "Deduplikointi-ikkuna", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Välimuistin tyhjentäminen epäonnistui.", + "unavailable": "Välimuisti ei ole käytettävissä", + "unavailableDesc": "Välimuistin tilastoja ei voitu noutaa. Varmista, että palvelin on käynnissä.", "loadingCacheAria": "Ladataan välimuistia", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Kehotevälimuisti (palveluntarjoajan puolella)", + "semanticCache": "Semanttinen välimuisti", + "promptCacheSectionDesc": "Näyttää käyttöhistoriasta palveluntarjoajan puoleisen kehotevälimuistin toiminnan, jotta näet, missä välimuistin hallinta on käytössä ja kuinka paljon syötettä käytetään uudelleen.", + "promptTrendDesc": "Tuntikohtainen pyyntömäärä, välimuistin kattavuus ja välimuistin lukumäärä viimeisten 24 tunnin ajalta.", + "cachedRequests": "Välimuistia käyttäneet pyynnöt", + "cachedRequests24h": "Välimuistia käyttäneet pyynnöt (24 h)", + "cacheHitRate": "Välimuistin osumaprosentti", + "cacheRate": "Välimuistin käyttöaste", + "cacheRateDesc": "kaikista pyynnöistä", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Kehotevälimuistin mittarit", + "withCacheControl": "Välimuistin hallintaa käyttävät", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Välimuistin uudelleenkäyttösuhde", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Arvioidut kustannussäästöt", + "lastUpdated": "Viimeksi päivitetty", + "hoursTracked": "seurattua tuntia", + "busiestHour": "Vilkkain tunti", + "peakCacheRate": "Välimuistin käytön huippuaste", + "trendHour": "Tunti", + "activityVolume": "Toiminta", + "requestsShort": "pyyntöä", + "inputShort": "Syöte", + "cachedShort": "Välimuistissa", + "writeShort": "Kirjoitus", + "resetting": "Nollataan...", + "resetMetrics": "Nollaa mittarit", + "byProvider": "Erittely palveluntarjoajittain", + "providerCacheRateDesc": "Kukin palveluntarjoaja näyttää syötetunnisteiden kokonaismäärän sekä välimuistista luettujen ja välimuistiin kirjoitettujen tunnisteiden määrän, jotta voit verrata uudelleenkäyttösuhdetta raakatietoihin.", "provider": "Provider", - "requests": "Requests", + "requests": "Pyynnöt", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Välimuistin kehitys (24 h)", + "peakCached": "Välimuistissa enimmillään", + "cached": "Välimuistissa", + "overview": "Yleiskatsaus", "tableProvider": "Palveluntarjoaja", "tableModel": "Malli", "performanceTitle": "Suorituskyky", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRouten oma deterministinen vastausvälimuisti. Kun se on käytössä, toistuvat suoratoistamattomat temperature=0-pyynnöt voidaan käsitellä paikallisesti ottamatta yhteyttä ylävirran palveluntarjoajaan.", + "semanticCacheDisabledDesc": "Semanttinen välimuisti on poistettu käytöstä. OmniRoute ohittaa paikallisen vastausten uudelleenkäytön, kunnes otat sen uudelleen käyttöön asetuksissa.", + "semanticEntriesDesc": "SQLiteen tallennetut pysyvät semanttisen välimuistin tietueet. Palveluntarjoajan puoleisen kehotevälimuistin toimintaa ei näytetä tässä.", + "searchEntries": "Hae merkintöjä...", + "search": "Hae", + "loading": "Ladataan...", + "entriesLoadError": "Semanttisen välimuistin merkintöjen lataaminen epäonnistui.", + "noEntries": "Välimuistimerkintöjä ei löytynyt", + "noPromptCacheData": "Palveluntarjoajan puoleisen kehotevälimuistin toimintaa ei ole vielä tallennettu.", + "noTrendData": "Kehotevälimuistin toimintaa ei ole tallennettu viimeisten 24 tunnin aikana.", + "signature": "Allekirjoitus", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Luotu", + "expires": "Vanhenee", + "actions": "Toiminnot", + "deduplicatedRequests": "Poistetut päällekkäiset pyynnöt", + "savedCalls": "Säästetyt API-kutsut", + "totalProcessed": "Käsiteltyjä pyyntöjä yhteensä", + "disabled": "Poistettu käytöstä", + "totalRequests": "Pyyntöjä yhteensä", "reasoningCache": "Päättelyn uusinta", "reasoningCacheDesc": "Säilyttää malliajattelun monikierroksisia työkalukutsuvirtoja varten", "reasoningEntries": "Aktiiviset merkinnät", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes} min sitten", "hoursAgo": "{hours} t sitten", "daysAgo": "{days} pv sitten", - "entries": "Entries" + "entries": "Merkinnät" }, "proxyConfigModal": { "levelGlobal": "Maailmanlaajuinen", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Yhdistä kohdistin IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Kirjaudu Cursorilla", + "tabImport": "Tuo tunnus", + "loginDescription": "Avaa Cursorin kirjautumissivun selaimessa. Toimii Dockerissa — hyväksy kirjautuminen isäntäkoneesi selaimessa ja palaa sitten tänne.", + "loginWithCursor": "Kirjaudu Cursorilla", + "startingLogin": "Käynnistetään…", + "waitingApproval": "Odotetaan Cursor-kirjautumisen hyväksyntää…", + "openUrlHint": "Jos selain ei avautunut:", + "openLoginLink": "Avaa kirjautumissivu", + "cancelLogin": "Peruuta kirjautuminen", "autoDetecting": "Tunnistetaan automaattisesti...", "readingFromCursor": "Lukeminen Cursor IDE:stä tai cursor-agentista", "tokensAutoDetected": "Tokenit tunnistettiin automaattisesti Cursor IDE:stä!", "cursorNotDetected": "Kohdistimen IDE:tä ei havaittu. Liitä tunnus manuaalisesti.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Käytätkö Dockeria? Suosi Cursorilla kirjautumista. IDE:n automaattinen tuonti ja cursor-agent eivät yleensä ole käytettävissä säilön sisällä. Katso docs/providers/CURSOR-DOCKER.md.", "accessToken": "Käyttöoikeustunnus", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Päivitystunnus", + "refreshTokenPlaceholder": "Valinnainen — mahdollistaa tunnuksen automaattisen päivityksen", "required": "*", "accessTokenPlaceholder": "Käyttöoikeustunnus täytetään automaattisesti...", "machineId": "Koneen tunnus", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Tunnusten automaattinen tunnistus epäonnistui", "errorEnterToken": "Anna käyttöoikeustunnus", "errorImportFailed": "Tuonti epäonnistui", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Cursor-kirjautumisen käynnistäminen epäonnistui", + "errorLoginPoll": "Cursor-kirjautuminen epäonnistui", + "errorLoginTimeout": "Cursor-kirjautuminen aikakatkaistiin — yritä uudelleen" }, "pricingModal": { "title": "Hinnoitteluasetukset", @@ -10843,9 +10850,9 @@ "selectProxy": "Valitse {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Tuo vanhasta versiosta", + "bulkAssign": "Määritä joukkona", + "addProxy": "Lisää välityspalvelin", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Testaa", + "edit": "Muokkaa", + "delete": "Poista", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Epäonnistui", "successRate": "{rate}% onnistumista", "avgLatency": "{latency}ms keskimäärin", "assignmentsCount": "{count} tehtävää", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Korjaa", "relayAuthMissing": "tunnistautuminen puuttuu", @@ -10948,22 +10955,22 @@ "poolTitle": "Proxy-pooli ja kierto", "poolDescription": "Liitä useita proxyja skooppiin ja kierrätä lähteviä IP-osoitteita niiden välillä. Skooppi, jossa on vain yksi proxy, toimii täsmälleen kuten tavallinen määritys.", "poolScopeIdLabel": "Skooppi-ID", - "poolScopeIdPlaceholder": "provider id / connection id / combo id", + "poolScopeIdPlaceholder": "palveluntarjoajan tunnus / yhteyden tunnus / yhdistelmän tunnus", "poolScopeIdRequired": "Skooppi-ID vaaditaan provider-, account- tai combo-skoopille.", "poolLoad": "Lataa pooli", "poolLoadFailed": "Proxy-poolin lataaminen epäonnistui", "poolStrategyLabel": "Kiertostrategia", "poolStrategyHint": "round-robin kierrättää jäseniä järjestyksessä; random valitsee tasaisesti; sticky pitää yhden jäsenen tietyn aikaikkunan ajan; latency-optimized valitsee nopeimman lokien perusteella.", "poolStrategyFailed": "Kiertostrategian päivittäminen epäonnistui", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Vuorottelu", "strategyRandom": "Satunnainen", - "strategySticky": "Sticky", + "strategySticky": "Pysyvä", "strategyLatency": "Viiveoptimoitu", "poolMembersLabel": "Poolin jäsenet ({count})", "poolNoMembers": "Tässä poolissa ei ole vielä proxyja.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# ulosmeno-IP} other {# ulosmeno-IP:tä}} käytössä {connections, plural, one {# yhteydellä} other {# yhteydellä}} · enintään {max} yhdellä ulosmeno-IP:llä · viimeiset {hours} h", + "poolEgressObservationEmpty": "Liikennettä ei havaittu viimeisten {hours} tunnin aikana", + "poolEgressObservationHint": "Laskettu välityspalvelimen lokista tarkastelujakson ajalta: tämän poolin jäsenillä havaitut yksilölliset ulosmeno-IP-osoitteet sekä niitä käyttäneet OmniRoute-yhteydet. ”Yhdellä ulosmeno-IP:llä” tarkoittaa koko tarkastelujaksoa, ei samanaikaista käyttöä. IP-kohtainen 429-lukitus keskeyttää vain saman palveluntarjoajaperheen yhteydet.", "poolRemove": "Poista", "poolRemoveFailed": "Proxyn poistaminen poolista epäonnistui", "poolAddLabel": "Lisää proxy", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Päätepiste", + "provider": "Palveluntarjoaja", + "model": "Malli", "accountKey": "Account Key", "autoAccounts": "Automaattinen ({count} tiliä)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Lähetä", + "cancel": "Peruuta", + "audioFile": "Äänitiedosto", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Tyhjennä kaikki", + "request": "Pyyntö", + "response": "Vastaus", + "transcription": "Litterointi", + "copy": "Kopioi", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Luotiin {count} kuvaa", "generatedImage": "Luotu kuva {index}", - "save": "Save", + "save": "Tallenna", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Vastaukset", "completions": "Täydennykset", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Upotukset", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Moderoinnit", - "rerank": "Rerank", + "rerank": "Uudelleenjärjestäminen", "search": "Search", "webFetch": "Verkkohaku" }, "conversationalChat": "Keskustelukeskustelu", "clearChat": "Tyhjennä chat", "typeMessagePlaceholder": "Kirjoita viesti... (Vaihto+Enter uudelle riville)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Keskustelu", + "tabCompare": "Vertaa", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Koosta", + "configPane": "Määritykset", + "systemPrompt": "Järjestelmäkehote", + "systemPromptPlaceholder": "Olet avulias avustaja.", + "modelPlaceholder": "esim. openai/gpt-4o", + "endpointLabel": "Päätepiste", + "parametersLabel": "Parametrit", + "collapseConfig": "Pienennä määritysruutu", + "expandConfig": "Laajenna määritysruutu", + "temperature": "Lämpötila", + "maxTokens": "Tunnisteiden enimmäismäärä", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Läsnäolosakko", + "frequencyPenalty": "Toistuvuussakko", "reasoningLabel": "Päättely", "thinking": "Ajattelu", "effort": "Panostus", "effortDefault": "Oletus", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Satunnainen (jätä tyhjäksi)", + "presetsLabel": "Esiasetukset", + "loadPreset": "Lataa esiasetus", + "savePreset": "Tallenna esiasetus", + "noPresets": "Ei esiasetuksia", + "presetNamePlaceholder": "Esiasetuksen nimi", + "savingPreset": "Tallennetaan…", + "nameRequired": "Nimi vaaditaan", + "failedToSavePreset": "Esiasetuksen tallentaminen epäonnistui", + "improvePrompt": "Paranna kehotetta", + "improvingPrompt": "Parannetaan…", + "improvePromptTitle": "Paranna kehotettasi tekoälyllä", + "setModelFirst": "Aseta ensin malli", "setModelInConfigFirst": "Aseta malli ensin määrityspaneelissa.", "improvePromptFailed": "Kehotteen parantaminen epäonnistui.", "improvePromptAria": "Paranna kehotetta tekoälyllä", "confirmImprovePrompt": "Vahvista kehotteen parantaminen", "improvePromptDescription": "Tämä lähettää nykyisen järjestelmäkehotteesi mallille parannetun version luomiseksi.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Tämä kuluttaa määrityksissä määritetyn mallin kiintiötä.", + "improveConfirm": "Paranna", + "exportCode": "Vie koodi", + "exportCodeTitle": "Vie koodi", "exportShort": "Vie", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Vietävää leikkikentän tilaa ei ole saatavilla.", "closeExportModal": "Sulje vienti-ikkuna", "close": "Sulje", "exportRealKeyWarning": "Turvallisuusvaroitus: vienti estetty — tulosteesta havaittiin todellinen API-avain. Nollaa API-avaimesi ja yritä uudelleen.", @@ -11071,13 +11078,13 @@ "copyLangCode": "Kopioi {language}-koodi", "loadingPresets": "Ladataan…", "loadPresetPlaceholder": "Lataa esiasetus…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Kopioi", + "copiedCode": "Kopioitu!", + "addModel": "+ Lisää malli", + "runAll": "Suorita kaikki", + "cancelAll": "Peruuta kaikki", + "maxColumnsReached": "Enintään {max} saraketta", + "modelPlaceholderCompare": "Malli (Cmd+K)…", "noModel": "Ei mallia", "statusLabel": "Tila: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "Odotetaan vastausta…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "asiakaspuolen arvio", + "tokensLabel": "Tunnisteet", + "costLabel": "Kustannus", + "costEstimated": "(arvioitu)", "ttftTitle": "Aika ensimmäiseen tokeniin (asiakaspuolen arvio)", "tpsTitle": "Tokenia sekunnissa (asiakaspuolen arvio)", "tokenCountsTitle": "Kehotetokenit ↑ / Vastaustokenit ↓", "estimatedCostTitle": "Arvioitu kustannus (tarkkuutta ei taata)", - "toolsLabel": "Tools", + "toolsLabel": "Työkalut", "toolsCount": "Työkalut ({count})", - "addTool": "Add tool", + "addTool": "Lisää työkalu", "editTool": "Muokkaa työkalua {name}", "removeTool": "Poista työkalu {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Funktion nimi", "toolNameRequiredPlaceholder": "Funktion nimi *", - "toolDescPlaceholder": "Description (optional)", - "toolParamsLabel": "Parameters (JSON schema)", + "toolDescPlaceholder": "Kuvaus (valinnainen)", + "toolParamsLabel": "Parametrit (JSON-skeema)", "toolParamsJsonSchema": "Parametrien JSON-skeema", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parametrien on oltava kelvollista JSON-muotoa", + "structuredOutputLabel": "Rakenteinen tuloste", + "enableJsonMode": "Ota JSON-tila käyttöön", + "disableJsonMode": "Poista JSON-tila käytöstä", + "invalidJson": "Virheellinen JSON", "jsonMode": "JSON-tila", "jsonModeDescription": "Pakottaa asetuksen response_format: json_schema", "schemaName": "Skeeman nimi", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} saraketta", "addModelToCompare": "Lisää mallisarake vertailua varten", "modelsSimultaneously": "Enintään {max} mallia samanaikaisesti", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Suoritetaan…", + "runLabel": "Suorita", + "enterToolResult": "Syötä työkalun tulos…", "build": { "step1Label": "Mitä testataan?", "step2Label": "Määritä", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Tulos {number}", "noKeysFound": "API-avaimia ei löytynyt. Lisää sellainen Avaimet-osiossa.", "exampleLabel": "Esimerkki", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} sisään / {tokensOut} ulos -tokenia", "defaultKey": "(oletus)", "clear": "Tyhjennä", @@ -11250,73 +11257,73 @@ "stop": "Pysäytä" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "Tallennetaan", + "paused": "Keskeytetty", + "pipelineLogsOn": "Liukuhihnalokit käytössä", + "pipelineLogsOff": "Liukuhihnalokit pois käytöstä", + "updatingPipelineLogs": "Päivitetään liukuhihnalokeja...", + "updatePipelineFailed": "Liukuhihnan lokituksen päivittäminen epäonnistui", + "capturePipeline": "Tallenna liukuhihnan hyötykuormat uusille pyynnöille", + "searchPlaceholder": "Hae malleja, palveluntarjoajia, tilejä, API-avaimia ja yhdistelmiä...", + "allProviders": "Kaikki palveluntarjoajat", + "allModels": "Kaikki mallit", + "allAccounts": "Kaikki tilit", + "allApiKeys": "Kaikki API-avaimet", + "total": "Yhteensä", + "ok": "Onnistui", + "err": "Virhe", + "combo": "Yhdistelmä", + "keys": "Avaimet", + "shown": "Näytetään", + "sortNewest": "Uusin", + "sortOldest": "Vanhin", + "sortTokensDesc": "Tokenit ↓", + "sortTokensAsc": "Tokenit ↑", + "sortDurationDesc": "Kesto ↓", + "sortDurationAsc": "Kesto ↑", + "sortStatusDesc": "Tila ↓", + "sortStatusAsc": "Tila ↑", + "sortModelAsc": "Malli A–Ö", + "sortModelDesc": "Malli Ö–A", + "sortLogs": "Lajittele lokit", + "refresh": "Päivitä", + "columnsLabel": "Sarakkeet", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "YV", + "semantic": "Semanttinen", + "upstream": "Ylävirta", + "semanticCacheHit": "Semanttinen välimuistiosuma (OmniRouten tarjoama)", + "upstreamResponse": "Ylävirran palveluntarjoajan vastaus", + "noApiKey": "Ei API-avainta", + "requestedRoutedTitle": "Pyydetty {requested}, reititetty mallina {routed}", "statusFilters": { - "all": "All", + "all": "Kaikki", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Onnistui", + "combo": "Yhdistelmä" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "Tila", + "cacheSource": "Välimuistin lähde", + "model": "Malli", + "requested": "Pyydetty", + "provider": "Palveluntarjoaja", + "protocol": "Pyyntöprotokolla", + "account": "Tili", + "apiKey": "API-avain", + "combo": "Yhdistelmä", + "tokens": "Tokenit", "compressed": "Puristus", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Kesto", + "time": "Aika", + "conversation": "Keskustelu", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Ladataan lokeja...", + "noLogs": "Ei vielä lokeja. Tee API-kutsuja nähdäksesi ne täällä.", + "noMatchingLogs": "Nykyisiä suodattimia vastaavia lokeja ei löytynyt.", + "callLogsInfo": "Kutsulokit tallennetaan myös JSON-tiedostoina hakemistoon {dataDir}, ja niitä kierrätetään arvojen {retentionDays} ja {maxEntries} perusteella.", "loadMore": "Lataa lisää", "loadingMore": "Ladataan lisää...", "correlationId": "Korrelaatio-ID", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Yksityiskohtainen kuormitusartefakti ei ole enää saatavilla tälle lokimerkinnälle.", "payloadCorrupt": "Yksityiskohtaisia kuormitusartefakteja ei voitu jäsentää.", - "notAvailable": "N/A", + "notAvailable": "Ei saatavilla", "semanticCache": "Semanttinen (OmniRoute)", "upstreamCache": "Ylävirta (Palveluntarjoaja)", "ariaLabel": "Pyyntö lokitiedot", @@ -11417,59 +11424,59 @@ "correlationId": "Korrelaatio-ID", "correlationIdValue": "Korrelaatio-ID: {id}", "detailedPayloadInfo": "Ota ensin käyttöön yksityiskohtainen lokitus, jos haluat nelivaiheisen asiakas/toimittaja kuormitusnäkymän uusille pyyntöille.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Kopioi kaikki", + "copiedAll": "Kaikki kopioitu" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "Kaikki", + "filterErrors": "Virheet", + "filterSuccess": "Onnistui", + "filterTimeout": "Aikakatkaisu", + "colStatus": "Tila", + "colProxy": "Välityspalvelin", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "Tyyppi", + "colLevel": "Taso", + "colProvider": "Palveluntarjoaja", + "colTarget": "Kohde", + "colLatency": "Viive", + "colClientIp": "Asiakkaan IP", + "colTime": "Aika", + "recording": "Tallennus", + "paused": "Keskeytetty", + "searchPlaceholder": "Hae isäntää, palveluntarjoajaa, kohdetta tai IP-osoitetta...", + "allTypes": "Kaikki tyypit", + "allLevels": "Kaikki tasot", + "allProviders": "Kaikki palveluntarjoajat", + "total": "yhteensä", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "VIRHE", + "timeoutShort": "AIKAKATKAISU", + "direct": "suora", + "newest": "Uusimmat", + "oldest": "Vanhimmat", + "latencyDesc": "Viive ↓", + "latencyAsc": "Viive ↑", + "refresh": "Päivitä", + "columns": "Sarakkeet", + "loadingProxyLogs": "Ladataan välityspalvelinlokeja...", + "noProxyLogs": "Välityspalvelinlokeja ei vielä ole. Määritä välityspalvelimet ja tee API-kutsuja nähdäksesi lokit täällä.", + "noMatchingLogs": "Yksikään loki ei vastaa nykyisiä suodattimia.", + "tlsFingerprint": "Chrome 124 TLS -sormenjälki", "colPublicIp": "Julkinen IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "speech": "Puhe", + "search": "Haku", + "images": "Kuvat", + "chat": "Keskustelu", + "music": "Musiikki", + "responses": "Vastaukset", + "rerank": "Uudelleenjärjestely", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Upotukset", + "transcription": "Litterointi" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Suoritusaika", + "description": "Reaaliaikainen havainnointi — 3-tasoinen vikasietoisuus + istunnot + kiintiöhälytykset", + "pause": "Keskeytä", + "resume": "Jatka", + "refreshNow": "Päivitä nyt", + "kpiSessions": "Istunnot", + "kpiCircuits": "Katkaisijat", + "kpiCooldowns": "Jäähdytysajat", + "kpiLockouts": "Lukitukset", + "hintStickyBound": "{count} pysyvästi sidottu", + "hintRecovering": "{count} palautumassa", + "hintAllHealthy": "kaikki kunnossa", + "hintOpen": "auki", + "hintConnsCooling": "yhteyttä jäähdytetään", + "hintModelsBlocked": "mallia estetty", + "resilienceTitle": "3-tasoinen vikasietoisuus", + "resilienceSubtitle": "Vastaa dokumentoitua vikasietoisuusmallia", + "providersHealthy": "{percent} % palveluntarjoajista kunnossa", + "layer": "Taso {n}", + "layer1Title": "Palveluntarjoajien katkaisijat", + "layer1Desc": "Pysäytä liikenne palveluntarjoajille, joilla on ylätason häiriöitä", + "layer2Title": "Yhteyksien jäähdytysajat", + "layer2Desc": "Ohita yksi viallinen tili tai avain; muut yhteydet jatkavat palvelemista", + "layer3Title": "Mallien lukitukset", + "layer3Desc": "Mallikohtaiset nopeusrajoituslukot; sama yhteys palvelee edelleen muita malleja", + "badgeAffectedOf": "{affected}/{total} vaikutuksen alaisena", + "badgeCooling": "{count} jäähdytyksessä", + "badgeLocked": "{count} lukittu", + "emptyCircuits": "Aktiivisia katkaisijoita ei vielä ole", + "emptyCooldowns": "Aktiivisia yhteyksien jäähdytysaikoja ei ole", + "emptyLockouts": "Ei mallien lukituksia", + "moreCooldowns": "+{count} muuta jäähdytysjaksoa", + "moreLockouts": "+{count} muuta lukitusta", + "feedTitle": "Reaaliaikainen syöte", + "feedSubtitle": "Viimeiset {count} tapahtumaa", + "feedFilterAll": "Kaikki", + "feedFilterCircuits": "Katkaisupiirit", + "feedFilterCooldowns": "Jäähdytysjaksot", + "feedFilterLockouts": "Lukitukset", + "feedFilterSessions": "Istunnot", + "feedFilterQuotas": "Kiintiöt", + "feedClear": "Tyhjennä", + "feedEmptyWaiting": "Odotetaan tapahtumia... (kysely 5 sekunnin välein)", + "feedEmptyFiltered": "Mikään tapahtuma ei vastaa tätä suodatinta", + "sessionsTitle": "Aktiiviset istunnot", + "sessionsSubtitle": "Pysyvästi sidotut pyyntöjen sormenjäljet (reaaliaikaiset)", + "sessionsActive": "{count} aktiivista", + "sessionsEmptyTitle": "Ei aktiivisia istuntoja", + "sessionsEmptyHint": "Istunnot tulevat näkyviin, kun pyyntöjä kulkee välityspalvelimen kautta", + "tblSession": "Istunto", + "tblAge": "Ikä", + "tblIdle": "Joutoaika", + "tblReqs": "Pyynnöt", + "tblBoundTo": "Sidottu kohteeseen", + "topApiKeys": "Suosituimmat API-avaimet", + "quotaMonitorsTitle": "Kiintiöiden valvonta", + "quotaMonitorsSubtitle": "Reaaliaikainen kiintiötila tilikohtaisesti kussakin aikaikkunassa", + "openQuota": "Avoin kiintiö", + "allQuotasHealthy": "Kaikki kiintiöt ovat kunnossa", + "statusExhausted": "LOPPUUN KÄYTETTY", + "statusAlerting": "HÄLYTTÄÄ", + "statusError": "VIRHE", + "moreSuffix": "+{count} muuta" }, "quotaShare": { "weightPercent": "Paino %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Kiintiöiden jakaminen", + "description": "Jaa palveluntarjoajien kiintiöt API-avainten kesken prosenttirajoilla", + "newPool": "Uusi pooli", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Määritykset tallennetaan localStorageen (niitä ei vielä tallenneta pysyvästi palvelimelle). Pyyntökohtaisen enimmäismäärän valvontaa ei ole vielä kytketty välityspalvelimen käsittelyketjuun. Tässä näkymässä voit suunnitella ja visualisoida kiintiöiden jaon. Varsinainen valvonta lisätään tulevassa versiossa yhdessä tietokantaan tallennuksen ja ylävirran kutsujen sieppauksen kanssa.", + "kpiActivePools": "Aktiiviset poolit", + "kpiKeysAllocated": "Kohdistetut avaimet", + "kpiAvgUnallocated": "Kohdistamatta keskimäärin", + "kpiProvidersWithQuota": "Kiintiölliset palveluntarjoajat", + "emptyTitle": "Yhtään poolia ei ole määritetty", + "emptyDescription": "Luo pooli, johon voit liittää API-avaimia ja jakaa palveluntarjoajan kiintiöjakson prosenttiosuuksilla.", + "loading": "Ladataan…", + "removePool": "Poista pooli", + "removeConfirm": "Poistetaanko tämä pooli?", + "pool": "Pooli", + "used": "käytetty", + "allocationsCount": "Jaot ({count})", + "allocatedFree": "{allocated}% jaettu · {free}% vapaana", + "noAllocations": "Avaimille ei ole vielä määritetty osuuksia", + "capLabel": "raja {value}", + "notTrackedYet": "(ei vielä seurannassa)", + "policy": "Käytäntö", "apiKeyColumn": "API-avain", "weightColumn": "Paino", "fairShareShort": "reilu", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "tiukka", + "policySoft": "joustava", + "policyBurst": "purske", + "policyHardHint": "Estä käyttö, kun avaimen osuus loppuu", + "policySoftHint": "Salli ylitys, vain hälytys", + "policyBurstHint": "Salli purske vapaan poolin osuuteen", + "editAllocations": "Muokkaa jakoja", + "newPoolTitle": "Uusi kiintiöpooli", + "providerConnection": "Palveluntarjoajan yhteys (tili)", + "selectConnection": "Valitse yhteys…", + "noEligibleConnections": "Kiintiötietoja sisältäviä yhteyksiä ei ole. Päivitä ensin osoitteessa /dashboard/quota.", + "quotaWindow": "Kiintiöjakso", + "selectWindow": "Valitse jakso…", + "alreadyUsedSuffix": "(jo käytössä)", + "windowReset": "Nollaus", + "duplicatePoolError": "Tälle yhteydelle ja jaksolle on jo olemassa pooli", + "cancel": "Peruuta", + "createPool": "Luo pooli", + "editTitle": "Muokkaa jakoja", + "noKeysAdded": "Avaimille ei ole määritetty osuuksia. Lisää avain alta.", + "totalLabel": "Yhteensä: {percent}%", + "totalExceeded": "⚠ ylittää 100 %", + "addKey": "+ Lisää avain…", + "equalSplit": "Tasajako", + "save": "Tallenna jaot", "betaPreviewLabel": "Beta – käyttöliittymän esikatselu.", "betaConfigSavedPrefix": "Asetukset on tallennettu", "betaConfigSavedSuffix": "(ei vielä säilynyt palvelimella). Pyyntökohtainen enimmäismäärän valvontaa ei ole vielä kytketty välityspalvelimeen. Tämän näytön avulla voit suunnitella ja visualisoida kiintiöjaon; todellinen täytäntöönpano laskeutuu tulevaan iteraatioon DB:n pysyvyyden ja ylävirran puhelujen sieppauksen kanssa.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Tässä ryhmässä on vielä pooleja — määritä ne uudelleen tai poista ne ensin.", "ungroupedTitle": "Ryhmittelemättömät", "ungroupedHint": "Näitä pooleja ei ole määritetty tunnettuun ryhmään. Muokkaa poolia siirtääksesi sen oikeaan ryhmään.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Tätä poolia ei voitu poistaa.", + "dismiss": "Sulje" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Lisäosat", + "description": "Asenna ja hallitse lisäosia OmniRouten toimintojen laajentamiseksi", + "loading": "Ladataan lisäosia...", + "scanning": "Etsitään...", + "scanForPlugins": "Etsi lisäosia", + "noPlugins": "Lisäosia ei ole asennettu", + "noPluginsDescription": "Sijoita lisäosahakemistot kansioon ~/.omniroute/plugins/ ja napsauta Etsi.", + "activate": "Ota käyttöön", + "deactivate": "Poista käytöstä", + "uninstall": "Poista asennus", + "uninstallConfirm": "Poistetaanko lisäosan \"{name}\" asennus?", + "pluginScanComplete": "Lisäosien etsintä valmis", + "pluginScanFailed": "Lisäosien etsintä epäonnistui", + "activated": "{name} otettu käyttöön", + "deactivated": "{name} poistettu käytöstä", + "activateFailed": "Lisäosan {name} käyttöönotto epäonnistui", + "deactivateFailed": "Lisäosan {name} käytöstä poistaminen epäonnistui", + "uninstalled": "Lisäosan {name} asennus poistettu", + "uninstallFailed": "Lisäosan {name} asennuksen poistaminen epäonnistui", + "configure": "Määritä: {name}", + "configurePlugin": "Määritä", + "noConfigSettings": "Tällä lisäosalla ei ole määritettäviä asetuksia.", + "saving": "Tallennetaan...", + "saveConfiguration": "Tallenna määritykset", + "configurationSaved": "Määritykset tallennettu", + "saveConfigurationFailed": "Määritysten tallentaminen epäonnistui", + "pluginNotFound": "Lisäosaa ei löytynyt", + "version": "Versio", + "author": "Tekijä", + "description_label": "Kuvaus", + "status": "Tila", + "enabled": "Käytössä", + "disabled": "Ei käytössä", "installedTab": "Asennettu", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Kauppapaikka", "marketplaceUrlLabel": "Mukautettu Marketplace-URL-osoite", "marketplaceUrlPlaceholder": "Jätä tyhjäksi käyttääksesi virallista Omniroute-rekisteriä", "saveMarketplaceUrl": "Tallenna ja lataa uudelleen", @@ -11729,7 +11736,7 @@ "verified": "Vahvistettu", "install": "Asenna", "installedFromMarketplace": "Liitännäinen {name} asennettu!", - "hooks": "Hooks" + "hooks": "Hookit" }, "quotaPlans": { "title": "Paketit ja kiintiöt", @@ -12058,9 +12065,9 @@ "clearBtn": "Tyhjennä", "exportHar": "Vie .har", "recordSession": "REC", - "stopSession": "Stop", - "liveBadge": "live", - "offlineBadge": "offline", + "stopSession": "Pysäytä", + "liveBadge": "käytössä", + "offlineBadge": "offline-tilassa", "noRequests": "Yhtään pyyntöä ei ole vielä kaapattu.", "noRequestsDesc": "Varmista, että AgentBridge on käynnissä, tai ota käyttöön toinen kaappaustila.", "selectRequest": "Valitse pyyntö tarkastellaksesi sitä.", @@ -12102,7 +12109,7 @@ "httpProxyTitle": "HTTP-proxy-koodinpätkä — portti {port}", "notRecording": "Ei tallenneta", "anyStatus": "Mikä tahansa tila", - "liveOnly": "Live", + "liveOnly": "Käytössä", "viewingRecordedSession": "Tarkastellaan tallennettua istuntoa", "backToLive": "Takaisin live-tilaan", "untitledSession": "Nimetön istunto", @@ -12136,7 +12143,7 @@ "removeHost": "Poista {host}", "requestDetails": "Pyynnön tiedot", "filterByContext": "Suodata tämän kontekstin mukaan", - "filteringContext": "Filtering: context {context}", + "filteringContext": "Suodatus: konteksti {context}", "clear": "tyhjennä", "trafficProfile": "Liikenneprofiili", "roleSystem": "Järjestelmä", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP-agentit", "phrase": "CLI:t, jotka OmniRoute käynnistää suoritustaustana (käänteinen virtaus)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Useimmat käyttäjät voivat ohittaa tämän — käytä sitä vain, kun integraatio edellyttää sitä.", "flow": "Asiakas → OmniRoute → käynnistä CLI (stdio/ACP) → vastaus", "seeOther": "Katso →" } @@ -12189,7 +12196,7 @@ "thisPage": "Tämä sivu", "open": "Avaa →", "code": { - "title": "Code tool", + "title": "Koodityökalu", "desc": "Osoittaa Omniin", "flow": "sinä → CLI → Omni → tarjoaja", "examples": "esim. claude, codex" @@ -12238,7 +12245,7 @@ "modelMappingLabel": "Mallivastaavuudet", "noActiveProviders": "Ei aktiivisia tarjoajia.", "noActiveProvidersDesc": "Siirry kohtaan Tarjoajat yhdistääksesi vähintään yhden tarjoajan ennen CLI:n määrittämistä.", - "openProviders": "Open Providers →" + "openProviders": "Avaa palveluntarjoajat →" } }, "cliCode": { @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhookit", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Rekisteröi, luetteloi, testaa ja poista webhook-päätepisteitä. Määritä tapahtumatilaukset (request.completed, request.failed, quota.exceeded jne.) ja hallitse toimitusten uudelleenyrityksiä." }, "omni-mcp": { "name": "MCP-palvelin", @@ -12390,47 +12397,47 @@ "description": "Keskeiset OpenAI-yhteensopivat päättelypäätepisteet: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank ja Responses API. Ensisijainen integraatiopinta tekoälyagenteille." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Palvelun käynnistäminen", "description": "Käynnistä, pysäytä ja käynnistä uudelleen OmniRoute-palvelin CLI:stä. Hallitse taustaprosessitilaa (daemon mode), porttimäärityksiä, automaattista palautusta, ilmoitusalueintegraatiota ja kojelaudan avaamisen pikanäppäintä." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Terveystarkistus", "description": "Tarkista palvelimen terveys, komponenttien tila ja reaaliaikaiset mittarit CLI:stä. Suorita `health`, `health components` ja `health watch` nähdäksesi reaaliaikaisen kojelaudan suojakytkimistä ja tarjoajien tilasta." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Palveluntarjoajat", "description": "Hallitse tarjoajayhteyksiä CLI:stä: listaa saatavilla olevat/määritetyt tarjoajat, lisää, testaa, testaa kaikki, validoi, kierrätä API-avaimia ja tarkastele tarjoajakohtaisia mittareita." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: API-avaimet", "description": "Luo, listaa, kierrätä ja mitätöi OmniRoute API-avaimia CLI:stä. Hallitse OAuth-työnkulkuja tarjoajan todennusta varten ja tarkasta avainten käyttöoikeusalueet sekä vanhentuminen." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: Mallit", "description": "Kysy saatavilla olevia tekoälymalleja, listaa mallien aliaksia ja selaa koko malliluetteloa CLI:stä. Suodata tarjoajan mukaan, hae kyvyn mukaan ja selvitä mallinimien variantteja." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Keskustelu", "description": "Lähetä chat-täydennyksiä, suoratoista vastauksia ja aloita interaktiivinen REPL-istunto CLI:stä. Tukee kaikkia OmniRoute-tarjoajia, yhdistelmäreititystä ja järjestelmäkehotteen määritystä." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: Reititys ja yhdistelmät", "description": "Luo, listaa, päivitä ja poista reititysyhdistelmiä CLI:stä. Testaa reititysstrategioita, tarkasta yhdistelmien mittareita ja määritä varaketjuja interaktiivisesti." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: Vikasietoisuus ja kiintiöt", "description": "Tarkasta ja hallitse suojakytkimien tiloja, yhteyksien jäähtymisaikoja, kiintiörajoja ja perääntymistasoja CLI:stä. Nollaa jumiutuneet tarjoajat ja määritä vikasietoisuuden kynnysarvot." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: Pakkaus", "description": "Määritä ja testaa kehotteiden pakkausta CLI:stä. Hallitse RTK-suodattimia, Caveman-sääntöjä, pinottuja pakkaustiloja ja esikatsele pakkaustulosta todellisilla kehotteilla." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: Kontekstit ja istunnot", "description": "Hallitse kontekstisuunnittelun määrityksiä, RTK-suodatinjoukkoja ja keskusteluistuntoja CLI:stä. Ota käyttöön context-relay-asetukset ja tarkasta aktiiviset kontekstiputket." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: Kustannukset ja käyttö", "description": "Tarkastele kustannuserittelyjä, tokenien käyttöä ja kutsulokeja CLI:stä. Suodata tarjoajan, mallin tai ajanjakson mukaan. Vie käyttöraportteja ja tarkasta yhteyskohtaista kulutusta." }, "cli-mcp": { @@ -12589,14 +12596,14 @@ "typeApikey": "API-avain", "sortTypeFirst": "Helpoin ensin", "sortTypeFirstHelp": "Ryhmittele rekisteröitymisvaivan mukaan (Ei rekisteröitymistä → OAuth-kirjautuminen → API-avain), säilyttäen laatuun perustuva järjestys kussakin ryhmässä", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Luotettavin ensin", + "sortByReliabilityHelp": "Järjestä palveluntarjoajat valitulla aikavälillä onnistuneiden kutsujen osuuden mukaan. Palveluntarjoajat, joilla on liian vähän kutsuja onnistumisasteen määrittämiseen, säilyttävät pistemäärään perustuvan järjestyksensä mitattujen palveluntarjoajien alapuolella.", "typeLegend": "Ei rekisteröitymistä = ei käyttöönottoa · OAuth-kirjautuminen = kirjaudu omalla tililläsi · API-avain = käytä omaa avaintasi tai palveluntarjoajan ilmaistasoa", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Luotettavuus", + "colReliabilityHelp": "Niiden kutsujen osuus, joihin tämä palveluntarjoaja todella vastasi viimeisten 24 tunnin aikana. Viiva tarkoittaa, että liikennettä oli liian vähän onnistumisasteen määrittämiseen.", + "reliabilitySample": "{successes}/{requests} kutsua onnistui viimeisten {hours} tunnin aikana", + "reliabilityTooFew": "Vain {requests} kutsua viimeisten {hours} tunnin aikana — liian vähän onnistumisasteen määrittämiseen", + "reliabilityNoTraffic": "Viimeisten 24 tunnin aikana ei kirjattuja kutsuja" }, "discovery": { "title": "Palveluntarjoajien kartoitus", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar-tukija", + "description": "Vahvisti reaaliaikaisen OmniRoute Radar -tukijasyötteen", + "criteria": "Vahvista allekirjoitettu reaaliaikainen Radar-tukijasyöte." }, "first-token": { "name": "Ensimmäinen tokeni", @@ -12897,7 +12904,7 @@ "description": "Ota käyttöön syötteen puhdistus kaikille pyynnöille." }, "INJECTION_GUARD_MODE": { - "description": "Set the prompt-injection guard mode." + "description": "Aseta kehotesyötteiden manipuloinnilta suojaava tila." }, "PII_REDACTION_ENABLED": { "description": "Sensuroi henkilötiedot pyynnöistä." @@ -12948,8 +12955,8 @@ "description": "Salli useita yhteyksiä kullekin yhteensopivuussolmulle." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Poista konteksti-ikkunan tarkistukset käytöstä", + "description": "Ohita OmniRouten paikalliset konteksti-ikkunan ja syötteen enimmäistunnusmäärän tarkistukset suorissa yhden mallin pyynnöissä. Ulkoiset palveluntarjoajat valvovat edelleen todellisia rajojaan. Kehotteen pakkaus ja tulostunnusten enimmäismäärät pysyvät käytössä." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Poista sisäiset kommentointivaiheen tulostetiedot Responses API -läpivientivirroista ennen niiden välittämistä asiakkaille. Poista tämä valinta käytöstä vastaanottaaksesi raakaa ylävirran kommentointia." @@ -12985,7 +12992,7 @@ "description": "Salli virran palautuksen pyytää vastausta uudelleen ja liittää se sen jälkeen, kun tavuja on jo saapunut asiakkaalle." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Tee kesken suoratoiston jatkamisesta turvallista työkalukutsujen kannalta: älä koskaan jatka katkennutta suoratoistoa sen jälkeen, kun työkalukutsu on lähetetty (se on yhä käynnissä tai jo valmistunut), ja lopeta yhden tyhjän jatkoyrityksen jälkeen sen sijaan, että käyttäisit koko uudelleenyritysbudjetin." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Siirry kerran rinnakkaisyhteyteen, kun virta sulkeutuu ennen yhdenkään hyödyllisen kehyksen lähettämistä ja saman yhteyden rajattu uusintayritys on käytetty. Jos käyttökelpoista rinnakkaisyhteyttä ei ole, palautetaan alkuperäinen early-EOF-virhe. Pois: early-EOF on lopullinen uusintayrityksen jälkeen." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Ota käyttöön verkkoyhteys taitojen hiekkalaatikossa." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Palvelimen hallinnoima työkalusilmukka", + "description": "Jatka palvelimen hallinnoimia suoratoistamattomia työkalukutsuja, kunnes malli palauttaa asiakkaan käytettävissä olevan vastauksen." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After-alkuperä", + "description": "Kun yhdistetty vastaus on 429/503 ja palvelu ei ole käytettävissä, jätä Retry-After pois, jos konkreettista tulevaa uudelleenyritysaikaa ei tiedetä, sen sijaan että lähettäisit keinotekoisen 1 sekunnin ajan. Lisää error.retry_after_provenance ja lue sanalliset uudelleenyritysvihjeet combon tyhjennyspoluilla." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Suojatun prioriteetin infrastruktuuripysäytykset vastauksena 502", + "description": "Vastaa koodilla 502 koodin 503 sijaan, kun vain kiintiön varavaihtoehtona toimiva prioriteettikohde pysäyttää combon syystä, jonka voidaan varmasti osoittaa olevan muu kuin kiintiö: palveluntarjoajan avoin katkaisija tai ennakoivaan viiveeseen perustuva ohitus." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Kombon tila", "callLogs": "Kutsulokit", "costs": "Kustannukset", - "playground": "Playground", + "playground": "Kokeiluympäristö", "nestedCombo": "Sisäkkäinen kombo", "modelTarget": "Mallikohde", "weight": "{value}% paino", @@ -13171,7 +13182,7 @@ "segmentHint": "Jokainen segmentti = yksi ilmainen pooli · poolikohtaisesti duplikaatit poistettu, rehellinen laskenta (ei paisutettuja nopeusrajoituskattoja).", "boost": "Avaa ~{tokens} lisää/kk kertaluonteisella 10 dollarin OpenRouter-latauksella (50 → 1000 pyyntöä/päivä)", "uncapped": "Pysyvästi ilmainen, ei julkaistua ylärajaa (nopeusrajoitettu) — todellinen käyttöoikeus, ei lasketa pääotsikkoon:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/kk enemmän alueellisen henkilöllisyystarkistuksen takana (esim. Manner-Kiinan oikean nimen vahvistus) — todellinen kiintiö, jota ei lasketa otsikon määrään:", "tosRestricted": "{count, plural, one {# malli} other {# mallia}} merkitty käyttöehtojen vastaiseksi — sinä päätät", "provider": "Tarjoaja", "model": "Malli", @@ -13224,7 +13235,7 @@ "down": "alhaalla" }, "severity": { - "info": "info", + "info": "tiedot", "warning": "varoitus", "critical": "kriittinen" }, @@ -13270,80 +13281,80 @@ "viewFullHistory": "Näytä koko historia GitHubissa" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "Päättelyn reitityskäytännöt", + "apiKeyTitle": "Päättelyn reititys tälle API-avaimelle", + "subtitle": "Reititä mallit ja päättelyn vaativuus uudelleen ilman asiakasohjelman tukea. Pyynnöt säilyvät muuttumattomina, kun mikään sääntö ei täsmää.", + "loadError": "Päättelysääntöjä ei voitu ladata.", + "saveError": "Sääntö on virheellinen tai sitä ei voitu tallentaa.", + "saved": "Päättelysääntö tallennettu.", + "deleteConfirm": "Poistetaanko tämä päättelysääntö?", + "deleteError": "Päättelysääntöä ei voitu poistaa.", + "empty": "Vastaavia päättelysääntöjä ei ole määritetty.", + "all": "Kaikki", + "any": "Mikä tahansa", + "enabled": "Käytössä", + "disabled": "Poistettu käytöstä", + "filterSearch": "Hae sääntöjä", + "filterScope": "Suodata käyttöalueen mukaan", + "filterStatus": "Suodata tilan mukaan", + "allModels": "kaikki mallit", + "keepModel": "Säilytä malli", + "otherModel": "Muu malli", + "combo": "Yhdistelmä", + "priorityShort": "prioriteetti {value}", + "toggleAria": "Ota {name} käyttöön", + "edit": "Muokkaa", + "delete": "Poista", + "name": "Nimi", + "description": "Kuvaus", + "scopeLabel": "Käyttöalue", + "apiKey": "API-avain", + "sourceCombo": "Lähdeyhdistelmä", + "connection": "Yhteys", + "sourceModel": "Lähdemalli tai jokerimerkki", + "sourceModelOptional": "Tyhjä = kaikki mallit", + "sourceModelExample": "esim. gpt-5*", + "sourceEffort": "Lähteen päättelytaso", + "missing": "Ei määritetty", + "signalOnly": "Ei-diskreetti päättelysignaali", + "requestTags": "Pyyntötunnisteet", + "requestTagsExample": "koodaus, sisäinen", + "tagMode": "Tunnisteiden täsmäytys", + "effortMode": "Päättelytason tila", + "targetEffort": "Kohteen päättelytaso", + "routingTarget": "Reitityskohde", + "targetModel": "Kohdemalli", + "targetCombo": "Kohdeyhdistelmä", + "budgetAction": "Päättelybudjetti", + "budgetTokens": "Budjetin tokenit", + "priority": "Prioriteetti", + "saveChanges": "Tallenna muutokset", + "add": "Lisää sääntö", + "cancel": "Peruuta", + "simulateTitle": "Simuloi sääntöä", + "model": "Malli", + "effort": "Päättelytaso", + "transport": "Siirtoprotokolla", + "simulate": "Simuloi ilman ylävirtaa", + "extendedComboWarning": "Max/Ultra-tuki vahvistetaan reitityksen aikana erikseen jokaiselle yhdistelmän kohteelle.", + "extendedUnknownWarning": "Anna kohdemalli Max/Ultra-tuen tarkistamiseksi.", + "extendedUnsupportedWarning": "Max/Ultra-tuen tiedetään olevan käytettävissä vain soveltuvissa Codex GPT-5.6 -malleissa. Palvelin hyväksyy tuntemattomat mukautetut mallit varoituksella.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "Yleinen", + "apiKey": "API-avain", + "combo": "Yhdistelmä", + "model": "Malli", + "connection": "Yhteys" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Peri asiakkaalta", + "default": "Käytä oletusta", + "force": "Pakota" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Säilytä", + "remove": "Poista", + "set": "Aseta kiinteä arvo" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "Reaaliaikainen", "tierCommunity": "Yhteisö (30 päivän viive)", "activateTitle": "Aktivoi Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Vertaa Community- ja reaaliaikaista käyttöoikeutta, selvitä, mitä asennuksesi vaihtaa, ja valitse sitten, miten Radar aktivoidaan.", + "accessScaleTitle": "Tutustu Radar-käyttöoikeuteen ennen aktivointia", + "accessScaleIntro": "Radar ei käytä verkkoa, ennen kuin annat siihen luvan. Valitse Community-käyttöoikeus tai aktivoi henkilökohtainen tukija-avain tutustuttuasi näihin sääntöihin.", + "accessCommunityRule": "Community — avainta ei tarvita: täydellinen luettelo 30 päivän viiveellä.", + "accessSingleUseRule": "Tähti + seuraaminen — kun GitHub OAuth on vahvistanut molemmat, GitHub-tilisi saa yhden reaaliaikaisen luettelon lukukerran, minkä jälkeen käyttöoikeus palaa Community-tasolle. Tätä kertaluonteista käyttöoikeutta ei voida myöntää kyseiselle tilille uudelleen.", + "accessContributorRule": "Osallistujat — yhdistetyt PR:t, commitit ja rivit määrittävät vain viikoittaisen sijoituksen. 10 parasta saa 365 päivää, sijoille 11–100 yltäneet saavat 90 päivää, ja Top 100:n ulkopuoliset osallistujat eivät saa käyttöoikeutta PR-määrästä riippumatta. Sijoituksesta putoaminen ei koskaan lyhennä jo myönnettyä aikaa.", + "accessSupporterRule": "Tukijat — kertamaksut myöntävät 6 kuukauden, 1 vuoden tai elinikäisen käyttöoikeuden ilman automaattista uusimista. Ostot, lahjoitukset, osallistujajaksot ja manuaaliset myönnöt kertyvät; elinikäinen käyttöoikeus on aina ensisijainen.", + "accessUseTitle": "Henkilökohtainen käyttö, palautus ja tarkistus", + "accessInstallationRule": "Henkilökohtainen lisenssi — käytä avainta vain yhdessä aktiivisessa asennuksessa kerrallaan. OmniRoute ei tunnista laitteistoa yksilöllisesti. Palautus mitätöi ja korvaa kadonneen avaimen nollaamatta sen voimassaoloaikaa.", + "accessAbuseRule": "Väärinkäytön tarkistus — neljäs eri IP-osoite 24 tunnin aikana luo vain manuaalisen tarkistusmerkinnän; se ei koskaan estä tai mitätöi avainta automaattisesti.", + "accessOffersRule": "Reaaliaikaiset tarjoukset kuratoidaan manuaalisesti, ja ne voivat muuttua tai vanhentua.", + "privacyTitle": "Mitä tietoja Radar vaihtaa", + "privacyDownloadsRule": "Lataukset — asennuksesi vastaanottaa kryptografisesti allekirjoitetun luettelon ja suosittelumetatiedot; voimassa oleva reaaliaikainen avain avaa myös allekirjoitetut tarjoukset ja Intel-tiedot.", + "privacySendsRule": "Lähetykset — palvelinpuolen synkronointi lähettää tukija-avaimen Bearer-tunnuksena, ja HTTPS-infrastruktuuri vastaanottaa yhteyden IP-osoitteen. Syötepyyntöjen kirjanpito ei tallenna kumpaakaan arvoa sellaisenaan: se säilyttää avainten tiivisteet, koostetut käyttötiedot ja päivittäin vaihtuvan typistetyn IP-HMAC-arvon väärinkäytön tarkistusta varten.", + "privacyNeverRule": "Ei koskaan kerätä — kehotteita, vastauksia, keskusteluja, palveluntarjoajien tunnistetietoja, malliliikennettä, käyttöaikaa, viivettä tai paikallisia palveluntarjoaja-asetuksia ei koskaan lähetetä Radariin.", + "activateButton": "Aktivoi Community", "activating": "Aktivointi...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Onko sinulla jo tukija-avain?", + "keyInvalidFormatError": "Virheellinen avaimen muoto. Sen alussa on oltava \"omr_\" ja sen jälkeen 40 heksadesimaalimerkkiä.", + "activateWithKeyButton": "Aktivoi tukijakäyttöoikeus", + "changeKeyButton": "Vaihda avain", + "claimSectionTitle": "Eikö sinulla ole vielä tukija-avainta?", + "contributorButton": "Olen osallistuja", + "contributorHint": "GitHub OAuth tarkistaa nykyisen viikoittaisen sijoituksen: 10 parasta saa 365 päivää ja sijoilla 11–100 olevat saavat 90 päivää. Pelkkä PR-määrä ei koskaan myönnä käyttöoikeutta Top 100:n ulkopuolella.", + "supporterButton": "Tue projektia", + "supporterHint": "Kertaluonteisissa 6 kuukauden, 1 vuoden ja elinikäisissä vaihtoehdoissa ei ole automaattista uusimista; kelpoiset jaksot kertyvät ja elinikäinen käyttöoikeus on ensisijainen.", "colProvider": "Palveluntarjoaja", "colModel": "Malli", "colQuota": "Kiintiö", + "colLimits": "Käyttörajat", + "trainsOnPrompts": "Kouluttaa kehotteilla", + "trainsOnPromptsHelp": "Tämän palveluntarjoajan ehtojen mukaan se voi kouluttaa malleja lähettämilläsi kehotteilla. Ilman tätä merkkiä olevat mallit joko ilmoittavat, etteivät ne tee niin, tai eivät dokumentoi asiaa — lausunnon puuttuminen ei ole tae.", + "limitsUnknownHelp": "Vain Radar-syötteen ilmoittamat rajat; tälle kohteelle ei ole julkaistuja rajoja", + "contextUnknownHelp": "Tämän kohteen konteksti-ikkunaa ei tunneta", + "capabilityUnknownHelp": "Syöte ei ilmoita ominaisuutta", "colContext": "Konteksti", "colCapabilities": "Ominaisuudet", "colTos": "ToS-riski", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "uusi", "setupGuide": "Asennusopas", "disabledByFeed": "Poissa käytöstä Radar-syötteen vuoksi", "capTools": "Työkalut", "capVision": "Näkemys", "capThinking": "Ajattelu", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Luettelo", + "freeCreditsTab": "Ilmaiset krediitit", + "freeCreditsSubtitle": "Radar-seurattujen palveluntarjoajien suosittelulinkit — niiden käyttäminen ei maksa sinulle ylimääräistä ja auttaa tukemaan OmniRoutea.", + "fixedLinksEmpty": "Suosittelulinkkejä ei ole vielä saatavilla. Tarkista päivitykset synkronoimalla Radar.", + "requiredActionLabel": "Toimi näin:", + "claimButton": "Lunasta krediitit", + "campaignsTitle": "Rajoitetun ajan kampanjat", + "campaignsEmpty": "Ei aktiivisia kampanjoita juuri nyt — tarkista myöhemmin uudelleen.", + "campaignsUpsellCommunity": "Rajoitetun ajan kampanjat ovat tukijoille tarkoitettu lisäetu. Kaikki tämän sivun kiinteissä linkeissä säilyy maksuttomana kaikille.", + "campaignsValidUntil": "Voimassa {date} asti", + "colActions": "Toiminnot", + "localBadge": "paikallinen", + "editModel": "Muokkaa", + "saveModel": "Tallenna", + "cancelEdit": "Peruuta", + "resetModel": "Palauta paikalliset muutokset", + "hideModel": "Piilota", + "restoreModel": "Palauta", + "hiddenModelsTitle": "Piilotetut mallit", + "modelDisplayName": "Paikallinen näyttönimi", + "modelEnabled": "Käytössä paikallisesti", + "localStateSaveFailed": "Paikallisten Radar-asetusten tallentaminen epäonnistui", + "guidedCombos": "Ohjatut yhdistelmät", + "offers": "Tarjoukset", + "intel": "Tiedot" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radarin ohjatut yhdistelmät", + "subtitle": "Luo ensisijaisia varavaihtoehtoja Radarin kuratoimista vastaavista ilmaisista malleista.", + "backToRadar": "Takaisin Radariin", + "loading": "Ladataan yhdistelmäehdotuksia...", + "familyLabel": "Malliperhe", + "modelsLabel": "Prioriteettijärjestys", + "strategyReason": "Prioriteetti käyttää ensin suurinta toistuvaa maksutonta budjettia ja vaihtaa sitten muihin aktiivisiin palveluntarjoajiin.", + "generateButton": "Luo yhdistelmä", + "generating": "Luodaan...", + "alreadyCreated": "Jo luotu", + "created": "Yhdistelmä luotu", + "noSuggestions": "Yhdelläkään soveltuvalla malliperheellä ei tällä hetkellä ole aktiivisia yhteyksiä vähintään kahteen palveluntarjoajaan.", + "catalogRequired": "Synkronoi ensin Radar-luettelo ladataksesi kuratoidut malliperheet.", + "loadFailed": "Radarin yhdistelmäehdotusten lataaminen epäonnistui.", + "createFailed": "Yhdistelmän luominen epäonnistui. Tarkista palveluntarjoajayhteytesi ja yritä uudelleen." }, "radarSetupPage": { "title": "Palveluntarjoajan asennus", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "Yhteyden Kestävyys", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Yhteytesi palautuvat automaattisesti", + "reassuranceDetail": "Yleensä toimenpiteitä ei tarvita. OmniRoute asettaa yhteyden tilapäisesti lepotilaan virheiden jälkeen ja yrittää sitä sitten turvallisesti uudelleen.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Pyyntöjä voidaan lähettää", + "coolingDown": "Yritetään pian uudelleen", + "lockedOut": "Vaatii huomiotasi" }, "table": { "status": "Tila", @@ -13566,9 +13577,9 @@ "timeline": { "title": "Katkaisijan Siirtymät", "window": "Ikkuna", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 h", + "window6h": "6 t", + "window24h": "24 t", "empty": "Ei siirtymiä valitussa ikkunassa", "currentState": "Nykyinen Tila", "state": { @@ -13598,7 +13609,7 @@ "remaining": "Jäljellä", "noLockouts": "Ei aktiivisia lukituksia", "provider": "Palveluntarjoaja", - "id": "ID", + "id": "Tunnus", "authType": "Todennustyyppi", "priority": "Prioriteetti", "isActive": "Aktiivinen", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Hylkää pyynnöt ennen lähettämistä, kun kohdemallilta puuttuu vaadittuja ominaisuuksia (näkö, työkalut, jäsennelty ulostulo, kontekstikkelu). Suojaa suorat yhden tarjoajan pyynnöt, jotka ohittavat yhdistelmäkerroksen yhteensopivuussuodattimen.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Ohita OmniRouten paikallinen konteksti-ikkunan ja syötteen enimmäistunnusmäärän tarkistus suorissa yhden mallin pyynnöissä. Palveluntarjoajat valvovat edelleen omia todellisia rajojaan. Kehotteen pakkaus ja tulosteen tunnusmäärän rajoitukset pysyvät käytössä.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Hakutilastot ja viimeisimmät haut huomioivat vain palveluntarjoajat, joilla on edelleen aktiivinen yhteys (avaimettomat palveluntarjoajat, kuten duckduckgo-free, huomioidaan aina). Pois käytöstä -asetus säilyttää jokaisen tallennetun hakurivin, jolla on palveluntarjoajan tunnus.", "publicSystem": { "notFound": { "title": "Sivua ei löytynyt", @@ -13703,8 +13714,8 @@ "providersTracked": "Seurattavat tarjoajat", "circuitBreakerState": "Palveluntarjoajan piirikatkaisijan tila", "lastUpdate": "Viimeisin päivitys: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes} min", + "uptimeHoursMinutes": "{hours} t {minutes} min" }, "statusPages": { "400": { @@ -13886,7 +13897,7 @@ "clearConversation": "Tyhjennä keskustelu", "clear": "Tyhjennä", "tabs": { - "test": "Test", + "test": "Testi", "logs": "Lokit" }, "loadingLogs": "Ladataan lokit…", @@ -13894,7 +13905,7 @@ "noLogsYet": "Ei vielä lokitietoja", "noLogsDescription": "Lähetä testiviesti Testi-välilehdeltä — tämän tarjoajan lokit näkyvät täällä.", "openFullLogs": "Avaa täydelliset lokit-sivu", - "live": "Live", + "live": "Tuotanto", "tailingLast": "seuraavat {count}", "refreshNow": "Päivitä nyt", "refresh": "Päivitä", @@ -13947,7 +13958,7 @@ "tokens": "Tokenit", "active": "Aktiivinen", "other": "Muut", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "tunti", "day": "päivä", "unknownModel": "tuntematon", @@ -13958,7 +13969,7 @@ "compressionDescription": "Määritä kontekstin pakkausasetukset tokenien käytön ja kustannusten vähentämiseksi.", "relayTitle": "OmniRoute — Relay Proxyt", "relayDescription": "Palvelimettomat välityspalvelin päätepisteet AI-infrastruktuurillesi", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Liikenteen tarkastelu — OmniRoute", "trafficInspectorDescription": "Valvo LLM-kutsuja + vianetsintä minkä tahansa sovelluksen HTTPS-liikennettä" }, "conductor": { @@ -13974,7 +13985,7 @@ "colRunner": "Juoksija", "colSummary": "Yhteenveto", "online": "verkkoyhteydessä", - "offline": "offline", + "offline": "ei yhteyttä", "draining": "tyhjentäminen", "hubOffline": "Conductor-hubi offline tai ei konfiguroitu (CONDUCTOR_HUB_URL) — ei näytä mitään vanhentuneen datan sijaan.", "noRunners": "Ei rekisteröityjä juoksijoita", @@ -14070,11 +14081,11 @@ "actionApprove": "Hyväksy suunnitelma", "actionCancel": "Peruuta", "actionSeeInGraph": "Näytä kaaviossa", + "actionRepeat": "Toista", "actionDone": "Toiminto suoritettu", "actionFailed": "Toiminto epäonnistui: {error}", "detailFailed": "Tietojen lataus epäonnistui: {error}", "mirroredInA2A": "Peilattu A2A:ssa", - "actionRepeat": "Toista", "repeatConfirm": "Vahvista napsauttamalla uudelleen", "repeatDone": "Uusi ajo luotu", "repeatUnavailable": "Alkuperäistä syötettä ei ole saatavilla" @@ -14088,57 +14099,57 @@ "networkError": "Verkkovirhe — ei voitu päivittää tarjoajan altistusasetusta" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Tukijatarjoukset", + "subtitle": "Virallisia alennuksia, krediittejä, kokeilujaksoja ja tarkistettuja kumppanietuja Radarilta.", + "backToRadar": "Takaisin Radariin", + "loading": "Ladataan tarjouksia...", + "refresh": "Päivitä tarjoukset", + "refreshing": "Päivitetään...", + "loadFailed": "Tarjouksia ei voitu päivittää. Viimeksi vahvistettu paikallinen välimuisti säilytetään.", + "empty": "Aktiivisia tarjouksia ei ole juuri nyt saatavilla.", + "keyRequiredTitle": "Tukija-avain vaaditaan", + "keyRequiredDescription": "Tarjoukset ovat ajantasainen Radar-etu. Lisää olemassa oleva tukija-avain Radar-näkymässä, vahvista osallistujastatuksesi tai tue projektia saadaksesi avaimen.", + "contributorButton": "Olen osallistuja", + "supporterButton": "Tue projektia", + "partnerBadge": "Kumppani", + "officialBadge": "Virallinen", + "conditionsLabel": "Ehdot:", + "validUntil": "Voimassa {date} asti", + "noExpiry": "Päättymispäivää ei ole ilmoitettu", + "openOffer": "Näytä tarjous", + "trialDays": "{days, plural, one {# päivä} other {# päivää}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Tutkatiedustelu", + "subtitle": "Radarin omat ELO-sijoitukset ja luettelon tosiasialliset muutokset.", + "backToRadar": "Takaisin Radariin", + "loading": "Ladataan Intel-tietoja...", + "refresh": "Päivitä Intel-tiedot", + "syncing": "Päivitetään...", + "loadFailed": "Intel-tietoja ei voitu päivittää. Viimeisin vahvistettu paikallinen välimuisti säilytetään.", + "empty": "Vahvistettua Intel-tilannekuvaa ei ole vielä saatavilla.", + "supporterBadge": "Tutkan tukija", + "methodology": "Menetelmä", + "eloMethod": "ELO, alkuarvo {initial}, K={factor}", + "freshness": "Luettelon ajantasaisuus", + "ageDays": "{days, plural, one {# päivän ikäinen} other {# päivää vanha}}", + "trend": "Luettelon kehitys", + "modelDelta": "{current} mallia, +{added} / -{removed}", + "ranking": "Mallien sijoitus", + "noRankings": "Vahvistettuja vertailuja ei ole vielä saatavilla.", + "model": "Malli", + "category": "Luokka", + "rating": "Luokitus", + "matches": "Ottelut", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Tuore", + "aging": "Ikääntyvä", + "stale": "Vanhentunut" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Kasvava", + "stable": "Vakaa", + "shrinking": "Supistuva" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Pyyntö ylittää tarjoajan kontekstin ikkunan" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference on OmniRoute Open Source Friend", + "description": "Kustannusten mukaan järjestetty yhdyskäytävä, joka jälleenmyy kymmeniä edistyneimpiä malleja yhden OpenAI-yhteensopivan päätepisteen kautta — reitittäen jokaisen pyynnön halvimmalle ehdot täyttävälle palveluntarjoajalle, ei koskaan listahintaa kalliimmalla.", + "cta": "Hanki API-avain", + "partnerLinkNote": "Kumppanilinkki", + "dismissAriaLabel": "Sulje" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Poista käytöstä ajattelutasoversioiden (esim. -low, -medium, -high) luonti /v1/models-luettelossa." } diff --git a/src/i18n/messages/fr.json b/src/i18n/messages/fr.json index cceef76e5b..af56b66d8c 100644 --- a/src/i18n/messages/fr.json +++ b/src/i18n/messages/fr.json @@ -31,7 +31,7 @@ "active": "Actif", "inactive": "Inactif", "noData": "Aucune donnée disponible", - "nothingHere": "Nothing here yet", + "nothingHere": "Rien pour le moment", "configure": "Configurer", "manualConfig": "Configuration manuelle", "manage": "Gérer", @@ -47,7 +47,7 @@ "time": "Temps", "details": "Détails", "created": "Créé", - "lastUsed": "Last Refreshed", + "lastUsed": "Dernière actualisation", "loadMore": "Charger plus", "noResults": "Aucun résultat trouvé", "reloadPage": "Recharger la page", @@ -70,8 +70,8 @@ "note": "Remarque", "free": "Gratuit", "skipToContent": "Passer au contenu", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Le serveur rencontre des problèmes. Certaines fonctionnalités peuvent être indisponibles.", + "maintenanceServerUnreachable": "Le serveur est inaccessible. Reconnexion...", "accept": "accept", "accountId": "accountId", "alias": "alias", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Échec de la réinitialisation des prix", "apikey": "Clé API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Accéder au tableau de bord", + "checkSystemStatus": "Vérifier l’état du système", + "selectModel": "Sélectionner un modèle", "addModel": "Ajouter un modèle", "effortNone": "Aucun", "effortLow": "Faible", @@ -164,10 +164,10 @@ "reasoningEffort": "Effort de raisonnement", "wireApi": "API Wire", "modelAliases": "Alias de modèles", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Combinaisons", + "noModelsFound": "Aucun modèle trouvé", + "clear": "Effacer", + "done": "Terminé", "selectAll": "Tout sélectionner", "unselectAll": "Tout désélectionner", "visibleModels": "visibles", @@ -184,527 +184,527 @@ "selectAllProviders": "Vérifiez tous les fournisseurs", "clearProviderSelection": "Décocher les fournisseurs", "providersSelectedCount": "{count} fournisseurs vérifiés", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Une erreur s’est produite", + "comboDeleted": "Combinaison supprimée", + "hide": "Masquer", + "creating": "Création en cours", + "comboCreated": "Combinaison créée", + "swapFormats": "Intervertir les formats", + "daysAgo": "Il y a plusieurs jours", + "retries": "Nouvelles tentatives", + "errorDuringRestore": "Erreur lors de la restauration", + "eventsAppearHint": "Indication d’apparition des événements", + "noLockouts": "Aucun verrouillage", + "webSearchDesc": "Description de la recherche web", + "audioProvidersHeading": "Fournisseurs audio", "cloudAgentProviders": "Fournisseurs d'agents cloud", - "minutesAgo": "Minutes Ago", - "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", + "minutesAgo": "Il y a plusieurs minutes", + "a": "Un", + "liveAutoRefreshing": "Actualisation automatique en direct", + "webSearch": "Recherche web", + "anthropicPrefixPlaceholder": "Espace réservé pour le préfixe Anthropic", + "addModelToCombo": "Ajouter un modèle à la combinaison", + "failedToLoad": "Échec du chargement", + "categoryMedia": "Catégorie Multimédia", + "enableCloud": "Activer le cloud", + "expirationBannerExpiringSoon": "Bannière d’expiration prochaine", + "retry": "Réessayer", + "embeddings": "Intégrations vectorielles", + "errorCount": "Nombre d’erreurs", + "backupReasonManual": "Raison de la sauvegarde manuelle", + "safeSearchModerate": "Recherche sécurisée modérée", + "activeLimiters": "Limiteurs actifs", + "a2aCardTitle": "Titre de la carte A2A", + "cloudWorkerUnreachable": "Worker Cloud inaccessible", + "testFailed": "Échec du test", + "compatibleBaseUrlHint": "Indication pour l’URL de base compatible", + "usageTracking": "Suivi de l’utilisation", + "disableCloudTitle": "Titre de désactivation du Cloud", + "noConnections": "Aucune connexion", + "providerHealth": "État du fournisseur", + "confirmDbImport": "Confirmer l’importation de la base de données", + "notAvailableSymbol": "Symbole non disponible", + "backupsAvailable": "Sauvegardes disponibles", + "providerAuto": "Sélection automatique du fournisseur", + "newProviderNamePlaceholder": "Texte indicatif du nom du nouveau fournisseur", + "a2aQuickStartStep2": "Étape 2 du démarrage rapide A2A", + "ok": "OK", + "available": "Disponible", + "noBackupYet": "Aucune sauvegarde pour le moment", + "more": "Plus", + "noCompatibleYet": "Aucun élément compatible pour le moment", + "multiProvider": "Multi-fournisseur", + "repairEnvHint": "Indication pour la réparation de l’environnement", + "disablingCloud": "Désactivation du Cloud", + "testBench": "Banc d’essai", + "valid": "Valide", + "cloudBenefitShare": "Avantage du partage dans le Cloud", + "mcpCardTitle": "Titre de la carte MCP", + "disableConfirm": "Confirmer la désactivation", + "filters": "Filtres", + "expirationBannerExpiredDesc": "Description de la bannière d’expiration après expiration", + "saveComboDefaults": "Enregistrer les valeurs par défaut de la combinaison", + "cloudConnectedVerified": "Connexion au Cloud vérifiée", + "uptime": "Disponibilité", + "compatibleProdPlaceholder": "Texte indicatif de production compatible", + "fallbackChainsTitle": "Titre des chaînes de secours", + "oauthLabel": "Libellé OAuth", + "a2aCardDescription": "Description de la carte A2A", + "okShort": "OK", "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", + "formatConverter": "Convertisseur de format", + "zedImportNetworkError": "Erreur réseau lors de l’importation Zed", + "apiKeyLabel": "Libellé de la clé API", + "noModelsForProvider": "Aucun modèle pour le fournisseur", + "mcpCardDescription": "Description de la carte MCP", + "apiTypeLabel": "Libellé du type d’API", + "configuredProvidersLabel": "Libellé des fournisseurs configurés", + "maxRetriesLabel": "Libellé du nombre maximal de tentatives", + "title": "Titre", + "output": "Sortie", + "prefixHint": "Indication du préfixe", + "skipWizard": "Ignorer l’assistant", + "failedCount": "Nombre d’échecs", + "confirmDbImportDesc": "Description de la confirmation d’importation de la base de données", + "entries": "Entrées", + "until": "Jusqu’à", + "disableCombo": "Désactiver la combinaison", + "liveMonitorDescriptionPrefix": "Préfixe de la description du moniteur en direct", + "runningCount": "Nombre d’éléments en cours d’exécution", + "noActiveConnectionsInGroup": "Aucune connexion active dans le groupe", + "savedSuccessfully": "Enregistré avec succès", + "systemStorage": "Stockage système", + "videoDesc": "Description de la vidéo", + "maxResults": "Nombre maximal de résultats", + "timeRangeMonth": "Plage temporelle : mois", + "testSummary": "Résumé du test", + "failedSetPassword": "Échec de la définition du mot de passe", "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", + "restore": "Restaurer", + "disableWarning": "Avertissement de désactivation", + "moderationsDesc": "Description des modérations", + "providerHealthStatusAria": "ARIA de l’état de santé du fournisseur", + "modelNamePlaceholder": "Texte indicatif du nom du modèle", + "mcpQuickStartStep2": "Étape 2 du démarrage rapide MCP", + "quickStart": "Démarrage rapide", + "fullExportFailedWithError": "Échec de l’exportation complète avec une erreur", + "loadingBackups": "Chargement des sauvegardes", + "anthropicBaseUrlPlaceholder": "Texte indicatif de l’URL de base Anthropic", "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", + "noProviderFound": "Aucun fournisseur trouvé", + "auto": "Automatique", + "protocolsDescription": "Description des protocoles", + "cloudSessionNote": "Note sur la session cloud", + "advancedSettings": "Paramètres avancés", + "defaultStrategy": "Stratégie par défaut", + "purgeExpiredLogs": "Purger les journaux expirés", + "justNow": "À l’instant", + "providerTestFailed": "Échec du test du fournisseur", + "openaiBaseUrlPlaceholder": "Texte indicatif de l’URL de base OpenAI", "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "failedCreateChain": "Échec de la création de la chaîne", + "importDatabase": "Importer la base de données", + "allDataLocal": "Toutes les données sont locales", + "sectionTitle": "Titre de la section", + "failedToggle": "Échec du basculement", + "editCombo": "Modifier la combinaison", + "testResults": "Résultats du test", + "searchQuery": "Requête de recherche", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "Dupliquer", + "createCombo": "Créer une combinaison", + "searchTypeWeb": "Type de recherche Web", + "addChain": "Ajouter une chaîne", + "prefixLabel": "Libellé du préfixe", + "listModelsDesc": "Description de la liste des modèles", + "databaseSize": "Taille de la base de données", + "chainCreated": "Chaîne créée", + "providerTestTimeout": "Délai d’attente dépassé pour le test du fournisseur", + "routingStrategy": "Stratégie de routage", + "translateAction": "Action de traduction", + "exportFailed": "Échec de l’exportation", + "connectedVerificationPending": "Connecté, vérification en attente", + "a2aQuickStartTitle": "Titre du démarrage rapide A2A", + "couldNotTest": "Impossible d’effectuer le test", + "testAllCompatible": "Tester tous les éléments compatibles", + "anthropicCompatibleName": "Nom compatible avec Anthropic", + "disabling": "Désactivation en cours", + "failedEnable": "Échec de l’activation", + "categoryUtility": "Catégorie Utilitaires", + "customUrlOptional": "URL personnalisée facultative", + "localProviders": "Fournisseurs locaux", + "comboNamePlaceholder": "Espace réservé pour le nom de la combinaison", + "memoryRss": "Mémoire RSS", + "disableProvider": "Désactiver le fournisseur", + "welcomeDesc": "Description de bienvenue", + "nameLabel": "Libellé du nom", + "allOperational": "Tous opérationnels", + "backupNow": "Sauvegarder maintenant", + "providerMaxRetriesAria": "Libellé ARIA du nombre maximal de tentatives du fournisseur", + "textToSpeechDesc": "Description de la synthèse vocale", + "machineId": "ID de la machine", + "globalProxy": "Proxy global", + "hitsMisses": "Succès et échecs", + "testDesc": "Description du test", + "chatDesc": "Description du chat", + "importSuccess": "Importation réussie", + "chat": "Discussion", + "a2aQuickStartStep1": "Étape 1 du démarrage rapide A2A", + "importFailed": "Échec de l’importation", + "inputPlaceholder": "Espace réservé de saisie", + "providerModelsTitle": "Titre des modèles du fournisseur", + "lastBackup": "Dernière sauvegarde", + "yourEndpoint": "Votre point de terminaison", + "autoDisableThresholdDesc": "Description du seuil de désactivation automatique", + "rerankDesc": "Description du reclassement", + "modelsPathPlaceholder": "Espace réservé du chemin des modèles", + "noCombosYet": "Aucune combinaison pour le moment", + "connectedVerificationPendingWithError": "Connecté, vérification en attente avec une erreur", + "comboDefaultsGuideHint1": "Conseil 1 du guide des valeurs par défaut des combinaisons", + "enableCloudTitle": "Titre de l’activation du cloud", + "configuredProvidersHint": "Conseil sur les fournisseurs configurés", + "paused": "En pause", + "llmProviders": "Fournisseurs de LLM", + "enableCombo": "Activer la combinaison", + "removeProviderOverrideAria": "Libellé ARIA de suppression du remplacement du fournisseur", + "nodeVersion": "Version de Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Échec de l’exportation avec une erreur", + "proxyConfigured": "Proxy configuré", + "concurrencyPerModel": "Simultanéité par modèle", + "protocolTasksLabel": "Libellé des tâches de protocole", + "oauthProviders": "Fournisseurs OAuth", + "lockedCount": "Nombre verrouillé", + "deleteChainConfirm": "Confirmation de suppression de la chaîne", + "recentTranslations": "Traductions récentes", + "zedImportButton": "Bouton d’importation Zed", + "responsesDesc": "Description des réponses", + "testedCount": "Nombre testé", + "providersCommaSeparatedPlaceholder": "Texte indicatif des fournisseurs séparés par des virgules", + "signatureDefaults": "Valeurs par défaut des signatures", + "errorCreating": "Erreur lors de la création", + "timeRangeYear": "Plage temporelle : année", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Cloud désactivé avec succès", + "deleteConfirm": "Confirmer la suppression", + "check": "Vérifier", + "safeSearch": "Recherche sécurisée", + "protocolLastActivity": "Dernière activité du protocole", + "openMcpDashboard": "Ouvrir le tableau de bord MCP", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Libellé du chemin de discussion", + "retryDelay": "Délai avant nouvelle tentative", + "errorUpdating": "Erreur lors de la mise à jour", + "ideCliIntegrations": "Intégrations IDE/CLI", + "imageGeneration": "Génération d’images", + "apiKeyRequired": "Clé API requise", + "resetAllTitle": "Titre de la réinitialisation complète", + "connectionError": "Erreur de connexion", + "modelName": "Nom du modèle", + "apiKeyForCheck": "Clé API pour la vérification", + "cloudRequestTimeout": "Délai d’attente de la requête Cloud", + "showConfiguredOnly": "Afficher uniquement les éléments configurés", "showFreeOnly": "Gratuit uniquement", "addFirstProvider": "Ajoutez votre premier fournisseur", "addFirstProviderDesc": "Connectez un fournisseur d'IA pour démarrer le routage des demandes via OmniRoute. Vous pouvez utiliser des fournisseurs gratuits, des clés API ou des comptes OAuth.", "learnMore": "En savoir plus", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Inclure les domaines", + "promptCache": "Cache des invites", + "cloudConnected": "Cloud connecté", + "deleteChain": "Supprimer la chaîne", + "chatPathPlaceholder": "Texte indicatif du chemin de discussion", + "databasePath": "Chemin de la base de données", + "usingLocalServer": "Utilisation du serveur local", + "globalComboConfig": "Configuration globale des combinaisons", + "backupFailed": "Échec de la sauvegarde", + "tabProtocols": "Onglet Protocoles", + "continue": "Continuer", + "categorySearch": "Recherche par catégorie", + "rateLimitStatus": "État de la limite de débit", + "repairEnvSuccess": "Environnement réparé avec succès", + "nameRequired": "Nom requis", + "country": "Pays", + "trackMetricsDesc": "Suivre la description des métriques", + "durationSecondsShort": "Durée (s)", + "formatConverterDescription": "Description du convertisseur de format", + "cloudBenefitAccess": "Accès aux avantages du cloud", + "maxRetries": "Nombre maximal de tentatives", + "queueTimeout": "Délai d’attente de la file d’attente", "queueDepth": "Profondeur de la file d'attente", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", + "addProvider": "Ajouter un fournisseur", + "realtime": "Temps réel", + "totalTranslations": "Nombre total de traductions", + "protocolActiveStreamsLabel": "Flux actifs du protocole", + "repairEnv": "Réparer l’environnement", + "modelsCount": "Nombre de modèles", + "viewBackups": "Afficher les sauvegardes", + "responsesApi": "API Responses", + "copyComboName": "Copier le nom de la combinaison", + "failures": "Échecs", + "failedUpdate": "Échec de la mise à jour", + "imageDesc": "Description de l’image", + "failedCreate": "Échec de la création", + "remainingOfLimit": "Restant sur la limite", + "protocolsTitle": "Protocoles", + "expirationBannerExpiringSoonDesc": "Description de la bannière d’expiration imminente", "source": "Source", - "failed": "Failed", + "failed": "Échec", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", + "mcpQuickStartStep1": "Étape 1 du démarrage rapide MCP", + "runTest": "Exécuter le test", + "loadingFallbackChains": "Chargement des chaînes de secours", + "healthy": "Opérationnel", "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", + "saveBlockWeighted": "Enregistrer le bloc pondéré", + "zedImportNone": "Aucune importation Zed", + "noBackupsYet": "Aucune sauvegarde pour le moment", + "noGlobalProxy": "Aucun proxy global", + "noModels": "Aucun modèle", + "stickyLimit": "Limite persistante", + "passedCount": "Nombre de réussites", + "zedImportFailed": "Échec de l’importation depuis Zed", + "saving": "Enregistrement en cours", + "testAll": "Tout tester", + "globalProxyDesc": "Description du proxy global", + "latencyP99": "Latence P99", + "connectingToCloud": "Connexion au cloud en cours", + "responses": "Réponses", + "errorDeleting": "Erreur lors de la suppression", + "openaiPrefixPlaceholder": "Espace réservé du préfixe Openai", + "enterPassword": "Saisissez le mot de passe", + "openA2aDashboard": "Ouvrir le tableau de bord A2A", + "enableProvider": "Activer le fournisseur", + "modeTest": "Mode test", + "failedDeleteChain": "Échec de la suppression de la chaîne", + "providerDesc": "Description du fournisseur", + "templateLoadHint": "Indication de chargement du modèle", + "lastFailure": "Dernier échec", + "moveDown": "Déplacer vers le bas", + "providerLabel": "Libellé du fournisseur", + "clearCacheFailed": "Échec de l’effacement du cache", + "imagesGenerations": "Générations d’images", + "repairEnvWorking": "Réparation de l’environnement de travail", + "millisecondsShort": "ms", + "globalLabel": "Libellé global", + "failuresPlural": "Échecs", + "completionsLegacyDesc": "Description des complétions héritées", + "searchProviders": "Rechercher des fournisseurs", + "chatPathHint": "Indication du chemin de discussion", + "defaultStrategyDesc": "Description de la stratégie par défaut", + "latencyP95": "Latence P95", + "textToSpeech": "Synthèse vocale", + "searchType": "Type de recherche", "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "aggregatorsGateways": "Agrégateurs et passerelles", + "comboStrategyAria": "Aria de stratégie combinée", + "input": "Entrée", + "testingConnection": "Test de la connexion en cours", + "excludeDomains": "Exclure des domaines", + "webCookieProviders": "Fournisseurs de cookies Web", + "allTestsPassed": "Tous les tests ont réussi", + "openaiCompatibleName": "Nom compatible avec OpenAI", + "warningCostOptimizedPartialPricing": "Avertissement concernant la tarification partielle optimisée en fonction des coûts", + "comboDefaultsGuideTitle": "Titre du guide des valeurs par défaut des combinaisons", + "hoursAgo": "Il y a plusieurs heures", + "notAvailable": "Non disponible", + "skipAndContinue": "Ignorer et continuer", + "moderations": "Modérations", + "proxyConfig": "Configuration du proxy", + "upstreamProxyProviders": "Fournisseurs de proxy en amont", + "exportAll": "Tout exporter", + "queuedCount": "Nombre en file d’attente", + "resetAll": "Tout réinitialiser", + "noTranslations": "Aucune traduction", + "avgLatency": "Latence moyenne", + "throttleStatus": "État de la limitation", + "backupRetentionDesc": "Description de la conservation des sauvegardes", + "noCBData": "Aucune donnée CB", + "chainDeleted": "Chaîne supprimée", + "timeLeft": "Temps restant", + "expirationBannerExpired": "Bannière d’expiration arrivée à échéance", + "language": "Langue", + "invalidFileType": "Type de fichier non valide", + "monitoredProviders": "Fournisseurs surveillés", + "errors": "Erreurs", + "heap": "Tas", + "chatCompletions": "Complétions de chat", + "exampleTemplatesHint": "Conseil sur les modèles d’exemple", + "retryDelayLabel": "Libellé du délai avant nouvelle tentative", + "audioTranscription": "Transcription audio", + "fallbackChainsDesc": "Description des chaînes de secours", + "exampleTemplates": "Modèles d’exemple", + "connectionsCount": "Nombre de connexions", + "modelsPathLabel": "Libellé du chemin des modèles", + "activeProvidersHint": "Conseil sur les fournisseurs actifs", + "activeLockouts": "Verrouillages actifs", + "invalid": "Non valide", + "skipPassword": "Ignorer le mot de passe", + "moveUp": "Déplacer vers le haut", + "timeRange": "Plage de temps", + "stickyLimitDesc": "Description de la limite persistante", + "cloudBenefitEdge": "Avantage du cloud en périphérie", + "custom": "Personnalisé", + "verifying": "Vérification en cours", + "baseUrlLabel": "Libellé de l’URL de base", + "setPassword": "Définir le mot de passe", + "safeSearchStrict": "Recherche sécurisée stricte", + "noChangesSinceBackup": "Aucune modification depuis la sauvegarde", + "modelsPathHint": "Indication du chemin des modèles", + "audioTranscriptions": "Transcriptions audio", + "testCombo": "Tester la combinaison", + "mcpQuickStartTitle": "Titre du démarrage rapide de MCP", + "comboUpdated": "Combinaison mise à jour", + "weighted": "Pondéré", + "providers": "Fournisseurs", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Description de l’absence de chaînes de secours", + "yesImport": "Oui, importer", + "lockoutsAutoRefreshHint": "Indication sur l’actualisation automatique des verrouillages", + "tabApis": "Onglet API", + "sectionDescription": "Description de la section", + "filter": "Filtrer", + "purgeLogsFailed": "Échec de la purge des journaux", + "latency": "Latence", + "testAllOAuth": "Tester toutes les connexions OAuth", + "mcpQuickStartStep3": "Étape 3 du démarrage rapide de MCP", + "repairEnvFailed": "Échec de la réparation de l’environnement", + "zedImportHint": "Indication d’importation de Zed", + "modelsAcrossEndpoints": "Modèles sur plusieurs points de terminaison", + "autoDisableBannedAccounts": "Désactiver automatiquement les comptes bannis", + "securityDesc": "Description de la sécurité", + "listModels": "Répertorier les modèles", + "backupRestore": "Sauvegarde et restauration", + "target": "Cible", + "zedImportSuccess": "Importation de Zed réussie", + "lastHeaderUpdate": "Dernière mise à jour de l’en-tête", + "categoryCore": "Catégorie principale", + "noFallbackChains": "Aucune chaîne de secours", + "noSearchProviders": "Aucun fournisseur de recherche", + "autoBalance": "Équilibrage automatique", + "noModelsYet": "Aucun modèle pour le moment", + "signatureFamily": "Famille de signatures", + "externalApiCalls": "Appels d’API externes", + "providerOverridesDesc": "Description des remplacements de fournisseurs", + "signatureTool": "Outil de signature", + "connectionFailed": "Échec de la connexion", + "activeLimitersPlural": "Limiteurs actifs au pluriel", + "doneDesc": "Description de l’état terminé", + "down": "Indisponible", + "noDataYet": "Aucune donnée pour le moment", + "activeProviders": "Fournisseurs actifs", + "nameInvalid": "Nom invalide", + "skip": "Ignorer", + "createChain": "Créer une chaîne", + "audioSpeech": "Synthèse vocale", + "cacheCleared": "Cache vidé", + "searchTypeNews": "Type de recherche : actualités", + "durationMillisecondsShort": "Durée en millisecondes, format court", + "addOpenAICompatible": "Ajouter un fournisseur compatible avec Open Ai", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "En attente", + "domainPlaceholder": "Espace réservé du domaine", + "durationMinutesShort": "Durée en minutes, format court", + "verifyingConnection": "Vérification de la connexion", + "imageProviders": "Fournisseurs d’images", + "protocolToolsLabel": "Libellé des outils de protocole", + "queryPlaceholder": "Espace réservé de la requête", + "videoGeneration": "Génération de vidéos", + "timeRangeWeek": "Période : une semaine", + "limitExhausted": "Limite atteinte", + "failedDisable": "Échec de la désactivation", + "inMemoryNote": "Note sur le stockage en mémoire", + "compatibleHint": "Conseil de compatibilité", + "errorShort": "Erreur, format court", + "advancedHint": "Conseil avancé", + "restoreFailed": "Échec de la restauration", + "searchProvidersHeading": "En-tête des fournisseurs de recherche", + "comboName": "Nom de la combinaison", + "autoDisableDescription": "Description de la désactivation automatique", + "embeddingsDesc": "Description des embeddings", + "operational": "Opérationnel", + "testAllApiKey": "Tester toutes les clés API", + "backupCreated": "Sauvegarde créée", + "errorDuringImport": "Erreur lors de l’importation", + "comboDefaultsGuideHint2": "Indice 2 du guide des paramètres par défaut des combinaisons", + "connecting": "Connexion en cours", + "fillModelAndProviders": "Renseignez le modèle et les fournisseurs", + "syncing": "Synchronisation en cours", + "resetConfirm": "Confirmer la réinitialisation", + "trackMetrics": "Suivre les métriques", + "successful": "Réussi", + "recovering": "Récupération en cours", + "autoDisableThreshold": "Seuil de désactivation automatique", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Synchronisation des données", + "cloudBenefitPorts": "Ports utiles pour le cloud", + "compatibleProviders": "Fournisseurs compatibles", "freeTierProviders": "Fournisseurs de niveau gratuit", "freeTierLabel": "Niveau gratuit disponible", "freeTierProvidersDesc": "Fournisseurs proposant des niveaux gratuits : certains nécessitent une inscription par clé API, d'autres n'ont besoin d'aucune information d'identification.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Vider le cache", + "reqs": "Requêtes", + "addAnthropicCompatible": "Ajouter un fournisseur compatible avec Anthropic", + "apiKeyProviders": "Fournisseurs de clés API", + "tabsAria": "ARIA des onglets", + "resetting": "Réinitialisation en cours", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Motif de la sauvegarde avant restauration", + "disableCloud": "Désactiver le cloud", + "newProviderNameAria": "ARIA du nom du nouveau fournisseur", + "passwordsMismatch": "Les mots de passe ne correspondent pas", + "a2aQuickStartStep3": "Étape 3 du démarrage rapide A2A", + "liveMonitorDescriptionSuffix": "Suffixe de la description du moniteur en direct", + "failedAddProvider": "Échec de l’ajout du fournisseur", + "addAtLeastOneProvider": "Ajoutez au moins un fournisseur", + "reasonSeparator": "Séparateur de motifs", + "zedImporting": "Importation de Zed en cours", + "confirmPasswordPlaceholder": "Confirmez le mot de passe", + "whatYouGet": "Ce que vous obtenez", + "signatureSession": "Session de signature", + "errorCountNoCode": "Nombre d’erreurs sans code", + "testing": "Test en cours", + "providersCommaSeparated": "Fournisseurs séparés par des virgules", + "exportDatabase": "Exporter la base de données", + "hitRate": "Taux de réussite", + "completionsLegacy": "Complétions (ancienne version)", + "removeModel": "Supprimer le modèle", + "timeRangeDay": "Plage temporelle : jour", + "cloudRequestFailed": "Échec de la requête cloud", + "updatedAt": "Mis à jour le", + "monitoredProvidersHint": "Indication sur les fournisseurs surveillés", + "connectionSuccessful": "Connexion réussie", + "latencyP50": "Latence P50", + "logsDeleted": "Journaux supprimés", + "chatTester": "Testeur de chat", + "safeSearchOff": "Recherche sécurisée désactivée", + "nameHint": "Indication sur le nom", + "debugToggle": "Activer/désactiver le débogage", + "embedding": "Vectorisation", + "issuesLabel": "Libellé des problèmes", + "optionAny": "Option : toutes", + "maxNestingDepth": "Profondeur maximale d’imbrication", + "rerank": "Reclassement", + "checking": "Vérification en cours", + "getStarted": "Commencer", + "restoreSuccess": "Restauration réussie", + "issuesDetected": "Problèmes détectés", + "signatureCache": "Cache des signatures", + "modelLockouts": "Blocages de modèles", + "usingCloudProxy": "Utilisation du proxy cloud", + "loadingHealth": "Chargement de l’état de santé", + "providerOverrides": "Remplacements spécifiques aux fournisseurs", + "audioTranscriptionDesc": "Description de la transcription audio", + "learnedFromHeaders": "Déduit des en-têtes", + "totalRequests": "Nombre total de requêtes", + "cloudUnstableNote": "Remarque sur l’instabilité du cloud", "gamificationAdmin": "Administrateur de gamifications", "monitorAnomaliesAndHealth": "Surveiller les anomalies et la santé du système", "flaggedAnomalies": "Anomalies signalées", "noAnomaliesDetected": "Aucune anomalie détectée", "apiKey": "Clé API", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 h)", "zScore": "Score Z", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Suspect", "tokensCommunityServers": "Serveurs communautaires", "tokensServerNamePlaceholder": "Nom du serveur", "tokensApiKeyPlaceholder": "Clé API", @@ -795,50 +795,50 @@ "batchFilePurpose": { "batch": "Entrée de lot", "batch-output": "Sortie de lot", - "fine-tune": "Fine-tuning", + "fine-tune": "Ajustement fin", "assistants": "Assistants" }, "batchPageLoadingMore": "Chargement plus…", "recommended": "Recommandé", "understand": "Je comprends", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", + "batchConceptTitle": "Traitement par lots", + "batchConceptSubtitle": "Traitez des milliers de requêtes de manière asynchrone pour environ 50 % du coût (fenêtre de 24 h). Idéal pour les évaluations, la classification et les embeddings.", + "batchConceptHowItWorks": "Fonctionnement", + "batchConceptBenefit50pct": "50 % de réduction sur les jetons d’entrée et de sortie", + "batchConceptAsync24h": "Traitement asynchrone avec un délai d’exécution de 24 h", + "batchConceptUseCases": "Idéal pour la classification en masse, les évaluations et les embeddings", + "batchHeaderSubtitle": "Exécutez de nombreuses requêtes en une seule tâche", + "batchStep1": "1 · Importer le JSONL", + "batchStep1Desc": "Ajouter des requêtes", + "batchStep2": "2 · Créer le lot", + "batchStep2Desc": "Exécuter la tâche", + "batchStep3": "3 · Obtenir les résultats", + "batchStep3Desc": "Télécharger la sortie", + "filesConceptTitle": "Fichiers de lots", + "filesConceptSubtitle": "Fichiers JSONL utilisés par les lots : requêtes d’entrée, résultats et erreurs.", + "filesConceptInput": "Entrée — votre JSONL avec une requête par ligne", + "filesConceptOutput": "Sortie — résultats des requêtes terminées", + "filesConceptError": "Erreurs — requêtes ayant échoué", + "filesConceptRetention": "Conservation : 30 jours par défaut (29 jours sur Anthropic)", + "wizardTitle": "Nouveau lot", + "wizardClose": "Fermer", + "wizardNext": "Suivant", + "wizardBack": "Retour", + "wizardCancel": "Annuler", + "wizardCreate": "Créer le lot", + "wizardCreating": "Création…", "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "wizardStep2Input": "Entrée", + "wizardStep3Validate": "Valider", + "wizardStep4Cost": "Coût et création", + "wizardProviderLabel": "Fournisseur", + "wizardEndpointLabel": "Point de terminaison", + "wizardModelLabel": "Modèle", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (nous le convertirons)", + "wizardDropOrPick": "Déposez un fichier ou cliquez pour le sélectionner", + "wizardCsvMappingTitle": "Associer les colonnes CSV aux champs de la requête", + "wizardCsvMappingAddField": "Ajouter un champ", "wizardCsvNoColumns": "Aucune colonne détectée dans l'en-tête CSV.", "wizardCsvIgnoreColumn": "— ignorer —", "wizardCsvCustomIdMapped": "custom_id mappé", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} lignes analysées", "wizardCsvRowsSkipped": "{count} lignes ignorées", "wizardCsvRowError": "Row {row} : {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Toutes les lignes sont valides", "wizardValidating": "Validation en cours…", "wizardValidationParseFailed": "Échec de la validation — impossible d'analyser le contenu.", "wizardValidationSummary": "{lines} lignes · {ids} custom_ids uniques", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "custom_ids en double détectés :", "wizardValidationFirstErrors": "Erreurs ({count} premières) :", "wizardValidationLine": "Ligne {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Erreurs de validation", + "wizardValidationPreview": "Aperçu (5 premières requêtes)", + "wizardValidationSamplingNote": "Le fichier est volumineux — validation effectuée par échantillonnage (les 1 000 premières et les 100 dernières lignes). La validation complète s’exécute côté serveur.", + "wizardCostSync": "Coût en mode synchrone", + "wizardCostBatch": "Coût du lot (-50 %)", + "wizardCostSavings": "Économies", + "wizardCostEstimatedNotice": "Coût estimé — la facturation réelle peut varier.", + "wizardErrorUpload": "Échec de l’importation du fichier. Réessayez.", + "wizardErrorCreate": "Échec de la création du lot. Réessayez.", + "wizardEmptyProviders": "Connectez un fournisseur prenant en charge les lots (OpenAI, Anthropic ou Gemini) pour créer un lot.", + "uploadModalTitle": "Importer un fichier de lot", + "uploadModalDropOrPick": "Déposez un fichier .jsonl ou cliquez pour le sélectionner", + "uploadModalUpload": "Importer", + "uploadModalCancel": "Annuler", + "uploadModalError": "Échec de l’importation. Réessayez.", + "uploadModalSuccess": "Importé", + "uploadModalSizeLimit": "512 Mo max.", + "batchListNewButton": "Nouveau lot", + "batchListAutoRefresh": "Actualisation automatique toutes les 30 s", + "batchListCostColumn": "Coût", + "batchActionCancel": "Annuler", + "batchActionDownloadOutput": "Télécharger la sortie", + "batchActionDownloadErrors": "Télécharger les erreurs", + "batchActionRetry": "Réessayer les échecs", + "batchActionRetryConfirm": "Réessayer {n} requête(s) ayant échoué ? Le coût final dépend du nombre réel de jetons consommés.", + "expirationBadgeCritical": "Critique", + "expirationBadgeWarning": "Bientôt", + "expirationBadgeNormal": "En attente", + "expirationBadgeExpired": "Expiré", + "filesListUploadButton": "Importer", + "filesListUsedByColumn": "Utilisé par", + "filesListUsedByNone": "Aucun", + "filesListUsedByRoleInput": "entrée", + "filesListUsedByRoleOutput": "sortie", + "filesListUsedByRoleError": "erreur", + "filesListSizeColumn": "Taille", + "batchListProgressPartial": "(partiel)", + "batchListProviderColumn": "Fournisseur", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "Autre", + "batchListTitle": "Lots", + "batchListCount": "{count} lots", + "batchListRemovingCompleted": "Suppression…", + "batchListRemoveCompleted": "Supprimer les lots terminés", + "batchListTableStatus": "Statut", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "Point de terminaison", + "batchListTableModel": "Modèle", + "batchListTableProgress": "Progression", + "batchListTableCreated": "Créé", + "batchListTableExpires": "Expire", + "batchListLoading": "Chargement…", + "batchListEmpty": "Aucun lot trouvé", + "batchListValidating": "Validation…", + "batchStatusAll": "Tous les statuts", + "batchStatusInProgress": "En cours", + "batchStatusValidating": "Validation", + "batchStatusFinalizing": "Finalisation", + "batchStatusCompleted": "Terminé", + "batchStatusFailed": "Échoué", + "batchStatusCancelled": "Annulé", + "batchStatusCancelling": "Annulation", + "batchStatusExpired": "Expiré", + "batchStatusCompletedWithFailures": "terminé avec des échecs", + "batchStatusInProgressWithFailures": "en cours (avec des échecs)", + "batchStatusFinalizingWithFailures": "finalisation (avec des échecs)", + "batchStatusCancelledWithFailures": "annulé avec des échecs", + "batchStatusExpiredWithFailures": "expiré (partiel)", + "wizardCostEstimating": "Estimation du coût…", + "wizardCostRequests": "Requêtes", + "wizardCostInputTok": "jetons d’entrée", + "wizardCostOutputTok": "jetons de sortie", + "wizardCostWindow": "Fenêtre", + "wizardDestinationSelectProvider": "Sélectionnez un fournisseur…", + "wizardDestinationSelectModel": "Sélectionnez un modèle…", + "wizardDestinationConnectProvider": "Connecter un fournisseur", + "batchListBatchCreated": "Lot {id} créé — actualisation de la liste…", + "batchListBatchCreatedDismiss": "Ignorer", + "batchListRefreshing": "Actualisation…", + "batchListRefresh": "Actualiser", + "uploadFileModalRemove": "Supprimer", + "uploadFileModalUploading": "Téléversement…", + "wizardInputReading": "Lecture du fichier…", + "wizardInputReady": "Prêt", + "wizardInputLargeFileLabel": "Fichier volumineux — validation par échantillonnage", + "wizardInputCsvJsonlReady": "JSONL généré — prêt à être validé.", + "wizardInputLargeFileWarning": "Fichier volumineux détecté — la validation s’effectue par échantillonnage (les 5 premiers Mo + les 100 derniers Ko). La validation complète s’effectue côté serveur.", + "wizardCostWindow24h": "Fenêtre d’achèvement de 24 h", + "wizardValidationFieldsOk": "champs obligatoires valides", + "filesListDelete": "Supprimer", + "filesListDownload": "Télécharger", + "batchDetailActionCancel": "Annuler le lot", + "batchDetailActionRetry": "Réessayer les requêtes ayant échoué", + "batchDetailCancelling": "Annulation…", + "batchDetailRetrying": "Préparation de la nouvelle tentative…", + "batchDetailCancelConfirm": "Annuler ce lot ? Les requêtes en cours seront interrompues.", + "batchActionCancelError": "Échec de l’annulation du lot. Réessayez.", + "batchActionRetryError": "Échec de la nouvelle tentative pour les requêtes ayant échoué. Réessayez.", + "batchConceptRetentionNote": "Les fichiers de résultats et d’erreurs sont conservés pendant 30 jours (Anthropic : 29 jours)", "batchFilesSizeColumn": "Taille", "toggleNoAuthProvider": "Activer ou désactiver le fournisseur sans authentification", "loadingModels": "Chargement des modèles…", @@ -988,14 +988,14 @@ "disabled": "Désactivé", "featureFlagOmnirouteEmergencyFallbackDescription": "Router les requêtes ayant épuisé leur budget vers le fournisseur/modèle de secours gratuit d'urgence.", "featureFlagArenaEloSyncEnabledDescription": "Activer la synchronisation périodique de l'ELO du classement Arena AI pour les classements d'intelligence des modèles.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Générez et injectez des résumés de conversation lorsque le routage combiné change de modèle. Désactivez cette option pour traiter les changements de modèle indépendamment et empêcher les requêtes de transfert en arrière-plan pour toutes les combinaisons existantes et futures.", "featureFlagExposeCcDiscoveryAliasesDescription": "Afficher les identifiants miroir claude/<provider>/<model> dans /v1/models afin que la découverte de modèles de la passerelle Claude Code répertorie les modèles non-Claude. Attention : cette option double les entrées du catalogue pour tous les clients lorsqu'elle est activée globalement.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Interrupteur principal pour les alias de passerelle no-think/<provider>/<model>. Activé (par défaut) : /v1/models annonce une variante sans raisonnement pour chaque modèle Claude compatible avec le raisonnement, et un identifiant no-think/ envoyé dans une requête est résolu vers le modèle réel avec le raisonnement désactivé. Désactivé : aucune variante n’est annoncée et un identifiant no-think/ est traité comme tout autre identifiant de modèle inconnu. L’activation ou la désactivation par modèle via ModelSpec.noThinkingAlias continue de s’appliquer lorsque cette option est activée.", "featureFlagChatVirtualLanesEnabledDescription": "Activez des voies d'admission virtuelles adaptatives par tenant pour la répartition des fournisseurs (#9654) : le pic d'un tenant ne renvoie plus 503 à un autre. La variable d'environnement OMNIROUTE_CHAT_VIRTUAL_LANES prime sur ce réglage du tableau de bord ; les modifications prennent effet au redémarrage du serveur.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Pages des fournisseurs du tableau de bord : affiche le badge Gratuit uniquement pour les signaux pris en charge par le fournisseur — abandonne l’heuristique basée sur le nom d’affichage, les champs free non booléens et les suffixes :free pour les fournisseurs enregistrés ne disposant pas d’une offre gratuite documentée. Lorsque cette option est désactivée, la règle historique du badge est conservée.", + "featureFlagProxySkipRecentlyFailedDescription": "Les pools de proxys et la rotation par compte d’opencode cessent de réutiliser un proxy qui vient d’échouer (sonde TCP refusée ou réponse 429 reçue par son intermédiaire) pendant une durée propre au processus qui double à chaque nouvel échec, jusqu’à une limite maximale. Aucun état de proxy n’est enregistré ; lorsque tous les candidats sont écartés, le choix reste inchangé. Désactivé par défaut : l’ordre de sélection correspond exactement à la rotation simple.", + "featureFlagProxyPoolEgressObservationDescription": "Afficher, sous un pool de proxys dans le tableau de bord, combien d’adresses IP de sortie observées ont servi ses membres au cours des dernières 24 h, combien de connexions les ont utilisées et le nombre maximal observé derrière une même adresse IP. En lecture seule, calculé à partir du journal du proxy, jamais utilisé pour le routage. Désactivé par défaut : l’éditeur de pool reste inchangé et la route d’observation renvoie null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Lors du contrôle d’intégrité des proxys, permettez à une sonde refusée par la cible (401/403/429 : le proxy a relayé la requête, mais la destination a refusé cette adresse IP de sortie) de réinitialiser la série d’échecs consécutifs du proxy, comme une sonde traitée. Désactivé par défaut : un refus reste neutre et maintient la série. Une réponse 5xx reste non concluante dans les deux cas, et un refus ne supprime, ne désactive ni ne réactive jamais un proxy.", "sidebar": { "home": "Accueil", "dashboard": "Tableau de bord", @@ -1011,12 +1011,12 @@ "media": "Médias", "settings": "Paramètres", "translator": "Traducteur", - "playground": "Playground", - "searchTools": "Search Tools", + "playground": "Terrain d’essai", + "searchTools": "Outils de recherche", "agents": "Agents", "cloudAgents": "Agents cloud", - "memory": "Memory", - "skills": "Skills", + "memory": "Mémoire", + "skills": "Compétences", "omniSkills": "OmniSkills", "agentSkills": "Compétences des agents", "chaosConfig": "Mode Chaos", @@ -1069,50 +1069,50 @@ "cliToolsShort": "Outils", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Tâches par lots", + "themeSystem": "Système de thèmes", + "whitelabelingDesc": "Description de la marque blanche", + "switchThemes": "Changer de thème", + "themeAccentDesc": "Description de la couleur d’accentuation du thème", + "uploadFavicon": "Importer un favicon", + "themeDark": "Thème sombre", + "customLogoDesc": "Description du logo personnalisé", + "sidebarVisibilityToggle": "Bouton de visibilité de la barre latérale", + "themeAccent": "Couleur d’accentuation du thème", + "resetFavicon": "Réinitialiser le favicon", + "whitelabeling": "Marque blanche", + "darkMode": "Mode sombre", + "uploadLogo": "Téléverser le logo", + "themeLight": "Thème clair", + "appName": "Nom de l’application", + "appNameDesc": "Description du nom de l’application", + "resetLogo": "Réinitialiser le logo", + "customFavicon": "Favicon personnalisé", + "hideHealthLogs": "Masquer les journaux d’état", + "customLogo": "Logo personnalisé", + "appearance": "Apparence", + "themeSelectionAria": "Sélection du thème Aria", + "themeCreate": "Créer un thème", + "customFaviconDesc": "Description du favicon personnalisé", + "logoPreview": "Aperçu du logo", + "themeCustom": "Thème personnalisé", + "hideHealthLogsDesc": "Description du masquage des journaux d’état", + "faviconPreview": "Aperçu du favicon", + "changelog": "Journal des modifications", + "contextSection": "Contexte et cache", + "contextCaveman": "Homme des cavernes", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Combinaisons de moteurs", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Paramètres de compression", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Studio de combinaisons", "combosLiveSubtitle": "Cascade de routage en direct", "compressionStudio": "Compression Studio", "compressionExclusions": "Exclusions", @@ -1128,26 +1128,26 @@ "compressionStudioSubtitle": "Cascade de moteurs en direct", "compressionExclusionsSubtitle": "Contournement par modèle ou point de terminaison", "chaosConfigSubtitle": "Exécution parallèle multi-modèles", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", + "routingSection": "Routage", + "protocolsSection": "Protocoles", + "agentsAiSection": "Agents et IA", + "cacheContextSection": "Cache et contexte", + "analyticsSection": "Analytique", + "costsSection": "Coûts", + "monitoringSection": "Surveillance", + "auditSecuritySection": "Audit et sécurité", + "devtoolsSection": "Outils de développement", "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "aiFeaturesSection": "Fonctionnalités d’IA", "mcp": "MCP", "a2a": "A2A", - "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", + "plugins": "Extensions", + "apiEndpoints": "Points de terminaison d’API", + "batchFiles": "Fichiers", + "analyticsEvals": "Évaluations", + "analyticsSearch": "Recherche", + "analyticsUtilization": "Utilisation", + "analyticsComboHealth": "État des combinaisons", "analyticsCompression": "Compression", "costsBudget": "Budget", "costsFreeTiers": "Budget de l'offre gratuite", @@ -1156,118 +1156,118 @@ "freeProviderRankingsSubtitle": "Meilleurs fournisseurs gratuits classés selon les scores ELO des modèles", "radar": "Catalogue Radar", "radarSubtitle": "Catalogue de modèles gratuit enrichi par la communauté", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", + "costsQuotaShare": "Partage des quotas", + "costsPricing": "Tarification", + "logsProxy": "Journaux du proxy", "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "logsActivity": "Activité", + "auditMcp": "Audit MCP", "auditA2a": "Audit A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Apparence", + "settingsAi": "Paramètres de l’IA", + "settingsSecurity": "Sécurité", "settingsAccessTokens": "Jetons d'accès", "settingsFeatureFlags": "Indicateurs de fonctionnalités", "settingsCache": "Cache", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "Autorisation", + "settingsRouting": "Routage", + "settingsResilience": "Résilience", "modelLockout": "Verrouillage du modèle", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Avancé", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Quota du fournisseur", + "providerQuota": "Quota du fournisseur", + "runtime": "Exécution", + "consoleLogs": "Journaux de la console", + "logsTimeline": "Chronologie", "logsTimelineSubtitle": "Chronologie visuelle des requêtes", "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversationsSubtitle": "Conversations agentiques à plusieurs tours", + "globalRouting": "Routage global", + "mitmProxy": "Proxy MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Fonctionnalités agentiques", + "otherFeaturesSection": "Autres fonctionnalités", + "compressionContextGroup": "Compression du contexte", + "gamificationGroup": "Ludification", + "toolsGroup": "Outils", + "integrationsGroup": "Intégrations", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", + "costsParametersGroup": "Paramètres de coûts", "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "batchGroup": "Traitement par lots", + "homeSubtitle": "Vue d’ensemble du tableau de bord", + "providersSubtitle": "Gérer les fournisseurs d’IA", + "quotaTrackerSubtitle": "Suivre les limites d’utilisation", + "providerQuotaSubtitle": "Suivre les limites d’utilisation des fournisseurs", + "runtimeSubtitle": "Résilience en temps réel et sessions", + "contextCombosSubtitle": "Combiner les moteurs de compression", + "cliToolsSubtitle": "Configurer les environnements d’exécution CLI", + "agentsSubtitle": "Gérer les agents locaux", + "cloudAgentsSubtitle": "Gérer les agents basés dans le cloud", + "apiEndpointsSubtitle": "Exposer des points de terminaison personnalisés", + "proxySubtitle": "Paramètres du proxy HTTP", + "mitmProxySubtitle": "Interception MITM", + "oneProxySubtitle": "Passerelle proxy publique", + "leaderboard": "Classement", + "profile": "Profil", + "tokens": "Jetons", + "gamificationAdmin": "Administration de la gamification", + "leaderboardSubtitle": "Classements et réussites", + "profileSubtitle": "Compte et préférences", + "tokensSubtitle": "Utilisation des jetons et budgets", + "gamificationAdminSubtitle": "Surveillance des anomalies et anti-triche", + "usageSubtitle": "Statistiques de trafic et d’utilisation", + "analyticsComboHealthSubtitle": "Fiabilité de la cible combinée", + "analyticsUtilizationSubtitle": "Utilisation des fournisseurs", + "costsSubtitle": "Répartition des dépenses", + "cacheSubtitle": "Taux de succès du cache", + "analyticsCompressionSubtitle": "Statistiques d’économie de jetons", + "analyticsSearchSubtitle": "Analyse de l’outil de recherche", + "analyticsEvalsSubtitle": "Résultats de la suite d’évaluation", "providerStats": "Statistiques du fournisseur", "providerStatsSubtitle": "Métriques de latence et de performance", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Journaux de l’application", + "logsProxySubtitle": "Journaux du trafic proxy", + "consoleLogsSubtitle": "Sortie de la console", + "logsActivitySubtitle": "Journal d’activité des utilisateurs", + "healthSubtitle": "Vérification de l’état du système", + "costsPricingSubtitle": "Règles de tarification par modèle", + "costsBudgetSubtitle": "Limites budgétaires", + "costsQuotaShareSubtitle": "Partager les quotas des fournisseurs entre les clés", + "auditLogSubtitle": "Audit des autorisations", + "auditMcpSubtitle": "Audit des serveurs MCP", + "auditA2aSubtitle": "Audit du protocole A2A", + "translatorSubtitle": "Conversion de format", + "playgroundSubtitle": "Tester les prompts en direct", + "searchToolsSubtitle": "Rechercher dans le registre d’outils", + "memorySubtitle": "Mémoire persistante des agents", + "omniSkillsSubtitle": "Registre des compétences Sandbox", + "agentSkillsSubtitle": "Registre des compétences A2A", + "mcpSubtitle": "Contrôles des serveurs MCP", + "a2aSubtitle": "Serveur du protocole A2A", "pluginsSubtitle": "Marketplace de plugins et installations", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Fichiers multimédias mis en cache", + "batchFilesSubtitle": "Fichiers d’entrée/sortie par lots", + "settingsSubtitle": "Tous les paramètres", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Thème et mise en page", + "settingsAiSubtitle": "Comportements par défaut de l’IA", + "globalRoutingSubtitle": "Règles globales de routage", + "settingsResilienceSubtitle": "Nouvelles tentatives et disjoncteurs", + "settingsAdvancedSubtitle": "Options pour utilisateurs avancés", + "settingsSecuritySubtitle": "Authentification et chiffrement", "settingsAccessTokensSubtitle": "Jetons CLI restreints pour le mode distant", "settingsFeatureFlagsSubtitle": "Basculer les capacités du système", "settingsCacheSubtitle": "Mise en cache du catalogue de modèles et des réponses", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Barre latérale", + "settingsSidebarSubtitle": "Personnaliser la disposition de la barre latérale", "settingsAuthzSubtitle": "Inventaire des routes et politique de contournement", "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", - "costsQuotaPlans": "Plans & Quotas", + "issuesSubtitle": "Signaler un bug", + "changelogSubtitle": "Notes de version", + "costsQuotaPlans": "Forfaits et quotas", "costsQuotaPlansSubtitle": "Configurer les plans par fournisseur", "activity": "Activité", "activitySubtitle": "Fil convivial des événements récents", @@ -1275,11 +1275,11 @@ "systemGroup": "Système", "costsOverview": "Vue d'ensemble", "costsOverviewSubtitle": "Analyse consolidée des coûts", - "agentBridge": "Agent Bridge", + "agentBridge": "Pont d’agents", "agentBridgeSubtitle": "Intercepter le trafic de l'agent IDE", "trafficInspector": "Inspecteur de trafic", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Inspectez le trafic des requêtes et des réponses provenant de vos applications", + "trafficInspectorPurpose": "Découvrez précisément ce que votre application envoie aux fournisseurs d’IA et reçoit de leur part. Fonctionne avec tout client compatible avec OpenAI.", "cliCode": "CLI Code", "cliCodeSubtitle": "Outils de code pointant vers OmniRoute", "cliAgents": "Agents CLI", @@ -1345,7 +1345,7 @@ "refresh": "Actualiser", "loading": "Chargement des webhooks...", "never": "Jamais", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {aucun échec} one {# échec} other {# échecs}}", "testWebhook": "Envoyer le test", "testSuccess": "Test du webhook envoyé avec succès.", "testFailed": "Le test du webhook a échoué.", @@ -1594,9 +1594,9 @@ "endpoint": "Points d'accès", "endpointDescription": "Gérer les points d'accès proxy, MCP, A2A et les points d'accès API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Gestion et outils des serveurs Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Tâches et observabilité du protocole Agent-to-Agent", "settings": "Paramètres", "settingsDescription": "Gérez vos préférences", "openaiCompatible": "Compatible avec OpenAI", @@ -1605,49 +1605,49 @@ "mediaDescription": "Générez des images, des vidéos et de la musique", "themes": "Thèmes", "themesDescription": "Choisissez un thème de couleur pour l'ensemble du panneau du tableau de bord", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "costsDescription": "Suivez les dépenses, analysez les tendances et gérez votre budget IA pour tous les fournisseurs", + "cacheDescription": "Surveillez l’efficacité du cache des prompts des fournisseurs et la réutilisation locale des réponses sémantiques.", + "limitsDescription": "Configurez les limites de débit et les quotas par clé API et par fournisseur", + "runtimeDescription": "Observabilité de l’exécution en temps réel — disjoncteurs, délais de récupération, verrouillages de modèles, sessions et alertes de quota", + "apiManagerDescription": "Gérez les clés API et le contrôle d’accès de votre instance OmniRoute", + "batchDescription": "Traitez de grands volumes de requêtes de manière asynchrone grâce aux appels API par lots", + "contextCavemanDescription": "Compression des messages basée sur des règles, packs linguistiques, analyses et contrôles du mode de sortie.", + "contextRtkDescription": "Compression tenant compte des commandes pour les sorties d’outils, les journaux de terminal et les résultats de compilation.", + "contextCombosDescription": "Définissez la manière dont les moteurs sont combinés pour différents scénarios de routage.", + "changelogDescription": "Restez informé des dernières fonctionnalités de la plateforme et des annonces.", + "agentsDescription": "Gérez et configurez les outils d’agents IA : Codex, Devin, Jules et les agents personnalisés", + "cloudAgentsDescription": "Orchestrez des agents IA basés dans le cloud avec suivi des tâches en temps réel et approbation des plans", + "memoryDescription": "Mémoire conversationnelle persistante avec recherche sémantique et indexation en texte intégral FTS5", + "skillsDescription": "Installez et gérez les compétences de bac à sable pour l’exécution automatisée des prompts et des outils", + "agentSkillsDescription": "Catalogue de compétences prêt pour les agents avec copie d’URL en un clic pour l’intégration aux clients IA", + "translatorDescription": "Traduisez et testez les prompts entre différents formats d’API : OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Testez les prompts de manière interactive avec les réponses des fournisseurs en temps réel et l’inspection du format", + "searchToolsDescription": "Analyses de recherche, répartition par fournisseur, taux d’accès au cache et suivi des coûts", + "logsDescription": "Journaux de requêtes en temps réel, traces d’erreurs et inspecteur d’événements en streaming", + "auditDescription": "Piste d’audit de conformité pour l’utilisation des clés API, les appels d’outils MCP et les événements de politique", + "webhooksDescription": "Configurez les points de terminaison webhook pour recevoir des notifications d’événements en temps réel", + "healthDescription": "Vue d’ensemble de l’état du système : fournisseurs, disjoncteurs, limites de débit et base de données", + "proxyDescription": "Configurez les paramètres du proxy en amont pour les connexions sortantes vers les fournisseurs", + "apiEndpointsDescription": "Gérez les configurations personnalisées des points de terminaison d’API et les dérogations de routage", + "batchFilesDescription": "Parcourez et gérez les fichiers de sortie et les résultats des tâches par lots", + "analyticsEvalsDescription": "Résultats d’évaluation des modèles et tests de performance", + "analyticsSearchDescription": "Analyse des requêtes de recherche, taux de succès du cache et suivi des coûts", + "analyticsUtilizationDescription": "Indicateurs d’utilisation des fournisseurs et planification des capacités", + "analyticsComboHealthDescription": "État et performances en temps réel des configurations de routage combiné", + "analyticsCompressionDescription": "Analyse de la compression du contexte et économies de jetons", + "costsBudgetDescription": "Limites budgétaires et alertes de dépenses par clé API et par fournisseur", + "costsPricingDescription": "Configuration tarifaire personnalisée pour le calcul du coût des jetons", + "logsProxyDescription": "Journaux des requêtes du proxy en amont et inspection du trafic", + "logsConsoleDescription": "Sortie de la console de l’application et journaux de débogage", + "logsActivityDescription": "Piste d’audit des actions des utilisateurs et des événements système", + "auditMcpDescription": "Piste d’audit des appels d’outils MCP et registres de conformité", "auditA2a": "Audit A2A", "auditA2aDescription": "Piste d'audit de l'exécution des tâches A2A, des transitions d'état et des enregistrements d'appel de compétences", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Thème, image de marque et personnalisation visuelle", + "settingsAiDescription": "Comportements de l’IA, budgets de réflexion, vision et paramètres de mémoire", "settingsCacheDescription": "Durée de vie (TTL) des entrées du cache du catalogue de modèles", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Paramètres d’authentification, d’autorisation et de contrôle d’accès", "featureFlags": "Indicateurs de fonctionnalités", "featureFlagsDescription": "Capacités du système de contrôle et fonctionnalités expérimentales", "featureFlagsActive": "{count} actif", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Aucun drapeau ne correspond à votre recherche", "featureFlagsSaved": "Drapeau mis à jour", "featureFlagsError": "Échec de la mise à jour de l'indicateur", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Règles de routage, alias de modèles, valeurs par défaut des combinaisons et paramètres de dégradation", + "settingsResilienceDescription": "Configuration du disjoncteur, des nouvelles tentatives et du repli", + "settingsAdvancedDescription": "Règles avancées de charge utile, limites des requêtes et paramètres de l’API du proxy", + "mitmProxyDescription": "Configurer les paramètres du proxy MITM pour l’inspection du trafic et le débogage", + "oneProxyDescription": "Configurer les paramètres de 1Proxy pour un chaînage avancé de proxys", "omniSkillsDescription": "Installer et gérer les compétences de sandbox pour l'exécution automatisée de prompts et d'outils" }, "cloudSyncStatus": { @@ -1693,7 +1693,7 @@ "ariaLabel": "Fil d'Ariane", "dashboard": "Tableau de bord", "providers": "Fournisseurs", - "combos": "Combos", + "combos": "Combinaisons", "settings": "Paramètres", "general": "Général", "appearance": "Apparence", @@ -1706,9 +1706,9 @@ "logs": "Journaux", "auditLog": "Journal d'audit", "console": "Console", - "logger": "Logger", + "logger": "Journalisation", "translator": "Traducteur", - "playground": "Playground", + "playground": "Bac à sable", "add": "Ajouter", "edit": "Modifier", "apiKeys": "Clés API", @@ -1724,11 +1724,11 @@ "analytics": "Analyses", "costs": "Coûts", "health": "Santé", - "runtime": "Runtime", + "runtime": "Exécution", "webhooks": "Webhooks", "home": "Accueil", "activity": "Activité", - "agentSkills": "AgentSkills", + "agentSkills": "Compétences des agents", "comboHealth": "Santé combinée", "evals": "Évaluations", "search": "Recherche", @@ -1737,7 +1737,7 @@ "audit": "Audit", "a2a": "A2A", "mcp": "MCP", - "batch": "Batch", + "batch": "Traitement par lots", "files": "Fichiers", "media": "Médias", "cache": "Cache", @@ -1747,7 +1747,7 @@ "live": "En direct", "studio": "Studio", "aggressive": "Agressif", - "caveman": "Caveman", + "caveman": "Homme des cavernes", "ccr": "CCR", "headroom": "Marge de sécurité", "lite": "Lite", @@ -1762,13 +1762,13 @@ "discovery": "Découverte", "freeProviderRankings": "Classement des fournisseurs gratuits", "radar": "Radar", - "setup": "Setup", + "setup": "Configuration", "freeTiers": "Niveaux gratuits", - "gamification": "Gamification", + "gamification": "Ludification", "leaderboard": "Classement", "limits": "Limites", "profile": "Profil", - "plugins": "Plugins", + "plugins": "Extensions", "providerStats": "Statistiques des fournisseurs", "new": "Nouveau", "quota": "Quota", @@ -1816,7 +1816,7 @@ "topologyLegendError": "Erreur", "oauthLabel": "OAuth", "apiKeyLabel": "Clé API", - "requestsShort": "{count} reqs", + "requestsShort": "{count} requêtes", "providerModelsTitle": "{provider} - Modèles", "copiedModel": "Copié : {model}", "aliasLabel": "pseudonyme", @@ -1888,15 +1888,15 @@ "releaseNotes": "Notes de version", "readMore": "Lire la suite", "noAuthLabel": "Sans authentification", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Préparez-vous à acheminer", + "readinessTitle": "Envoyez votre première requête", + "readinessSubtitle": "Quatre petites étapes. OmniRoute vérifie que tout est prêt au fur et à mesure.", + "readinessStep1": "Connectez un fournisseur", + "readinessStep2": "Configurez l’authentification du point de terminaison", + "readinessStep3": "Copiez votre point de terminaison", + "readinessStep4": "Envoyez une requête de test", + "readinessContinue": "Poursuivre la configuration", + "readinessDismiss": "Ignorer pour le moment" }, "analytics": { "title": "Analyse", @@ -2005,8 +2005,8 @@ "modelStatusError": "Erreur", "comboHealth": "Santé du combo", "comboHealthDescription": "Quota au niveau combo, distribution de l'utilisation et métriques de performance", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Analyse de la compression", + "compressionAnalyticsDescription": "Analyse de la compression — économies de jetons, répartition par mode et statistiques des fournisseurs.", "autoRoutingTotalAutoRequests": "Total des demandes automatiques", "autoRoutingAvgSelectionScore": "Score de sélection moyen", "autoRoutingExplorationRate": "Taux d'exploration", @@ -2089,10 +2089,10 @@ }, "comboHealthUsageSkewDescription": "Part de requêtes et part de jetons du modèle au sein de ce combo.", "comboHealthShareSummary": "Part de requêtes {requests} · Part de jetons {tokens}", - "comboHealthPerformance": "Performance", + "comboHealthPerformance": "Performances", "comboHealthPerformanceDescription": "Fiabilité et débit pour le trafic de combo acheminé.", "comboHealthExecutionTargetsDescription": "Métriques d'exécution au niveau de l'étape et visibilité des quotas pour les cibles de combo structurées.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} requête", "comboHealthQuotaScope": "Portée du quota : {scope}", "comboHealthTrendValue": "Tendance : {trend}", "comboHealthFetchFailed": "Échec de la récupération des données de santé du combo", @@ -2188,7 +2188,7 @@ "routeRuntimeScoreNow": "Score d'exécution actuel", "routeWouldSelectNow": "Sélectionnerait actuellement", "routeNoRecomputeCandidates": "Aucun classement des candidats combo ne peut être recalculé pour cette requête.", - "runtime": "Runtime", + "runtime": "Exécution", "routeTopNow": "Premier actuel", "routeFetchLogsFailed": "Échec de la récupération des journaux de requêtes", "routeExplainFailed": "Échec de l'explication de la route", @@ -2207,10 +2207,10 @@ "model": "Modèle", "account": "Compte", "connection": "Connexion", - "combo": "Combo", + "combo": "Combiné", "routeStep": "Étape", "tokens": "Jetons", - "notAvailable": "n/a", + "notAvailable": "s.o.", "routeTokenCounts": "{input} en entrée · {output} en sortie", "routeEvidence": "Preuves", "routeFactors": "Facteurs de routage", @@ -2258,9 +2258,9 @@ "fullAccess": "Accès complet", "keyManagement": "Gestion des clés API", "keyManagementDesc": "Créez et gérez des clés API pour authentifier les requêtes sur votre point de terminaison", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Votre application envoie des requêtes à OmniRoute via une clé API", + "requestFlowYourApp": "Votre application", + "requestFlowApiKey": "Clé API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Clés totales", "restricted": "Restreint", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Copiez et stockez cette clé maintenant – elle ne sera plus affichée.", "done": "Terminé", "savePermissions": "Enregistrer les autorisations", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Points de terminaison autorisés", + "allEndpointsAllowed": "Cette clé peut accéder à tous les points de terminaison de l’API.", + "endpointsRestricted": "Limitée à {count} point{count, plural, one {} other {s}} de terminaison.", + "autoResolve": "Résolution automatique", + "autoResolveDesc": "Résoudre automatiquement les noms de modèles ambigus vers le fournisseur natif pour cette clé API.", "streamDefaultMode": "Compatibilité du streaming par défaut", "streamDefaultModeDesc": "Contrôle les indicateurs `stream` omis pour cette clé. Le mode JSON renvoie des réponses sans streaming, sauf si le client demande explicitement SSE.", "streamDefaultLegacy": "Hérité", "streamDefaultJson": "Compatible JSON", "streamDefaultBadge": "Streaming JSON par défaut", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Clé active", + "keyActiveDesc": "Activez ou désactivez cette clé API. Les clés désactivées sont immédiatement rejetées avec le code 403.", + "accessSchedule": "Plages horaires d’accès", + "accessScheduleDesc": "Restreindre l’accès à certains jours et certaines heures de la semaine.", + "scheduleFrom": "De", + "scheduleUntil": "À", + "scheduleDays": "Jours", + "scheduleTimezone": "Fuseau horaire", + "scheduleTimezoneHint": "Utilisez les noms de fuseaux horaires IANA, par ex. America/New_York, Europe/Berlin", + "scheduleActive": "Planification", + "disabled": "Désactivée", + "daySun": "Dim.", + "dayMon": "Lun.", + "dayTue": "Mar.", + "dayWed": "Mer.", + "dayThu": "Jeu.", + "dayFri": "Ven.", + "daySat": "Sam.", "allowAll": "Tout autoriser", "restrict": "Restreindre", "allowAllInfo": "Cette clé peut accéder à tous les modèles disponibles.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Échec de la mise à jour des autorisations. Veuillez réessayer.", "unknownProvider": "inconnu", "copyMaskedKey": "Copier la clé masquée", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "La clé complète n’est disponible qu’au moment de sa création — copiez-la lorsque vous créez la clé pour la première fois", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# appareil} other {# appareils}}", "devicesTooltip": "{count, plural, one {# appareil IP/User-Agent distinct vu avec cette clé (30 dernières min)} other {# appareils IP/User-Agent distincts vus avec cette clé (30 dernières min)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Combinaisons autorisées", "allCombosAllowed": "Cette clé peut utiliser n'importe quelle combinaison.", "restrictedComboCount": "Restreint à {count, plural, one {# combinaison} other {# combinaisons}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# entrée enregistrée ne figure} other {# entrées enregistrées ne figurent}} pas dans cette liste déroulante (par exemple, les règles de routage) et {count, plural, one {sera conservée telle qu’enregistrée} other {seront conservées telles qu’enregistrées}}.", + "preservedComboRuleHint": "Conservée telle qu’enregistrée. Cette entrée ne figure pas dans la liste déroulante ci-dessus ; elle ne peut donc être modifiée que via l’API.", "apiManagerCustomRateLimits": "Limites de taux personnalisées", "apiManagerCustomRateLimitsDesc": "Remplacez les limites globales par défaut. Laissez vide pour utiliser les valeurs par défaut.", "apiManagerRateLimitRequestsPlaceholder": "Demandes", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Permet à cette clé d'ignorer la politique de coupure du fournisseur/compte en amont lors du routage. Les quotas en USD de la clé API s'appliquent toujours.", "quotaPill": "QUOTA", "quotaModeOnly": "qtSd uniquement", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Location exclusive", + "exclusiveLeaseNoticeTitle": "Location exclusive", + "exclusiveLeaseNoticeDesc": "Cette clé API dispose d’autorisations de location exclusive pour le routage de connexions dédiées.", + "allConnections": "Toutes les connexions", + "onlySelectedConnections": "Uniquement les connexions sélectionnées", + "selectAtLeastOneConnection": "Sélectionnez au moins une connexion ou choisissez Toutes les connexions.", + "allConnectionsDesc": "Cette clé peut utiliser n’importe quelle connexion active.", + "restrictedToConnections": "Limitée à {count, plural, one {# connexion} other {# connexions}}." }, "auditLog": { "title": "Journal d'audit", @@ -2457,16 +2457,16 @@ "model": "Model", "prompt": "Prompt", "generate": "Générer", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Génération en cours...", + "loadingModels": "Chargement des modèles disponibles...", + "noModels": "Aucun modèle disponible. Configurez d’abord des fournisseurs prenant en charge les médias.", + "error": "Échec de la génération", + "result": "Résultat", + "imageDescription": "Générez des images à partir d’instructions textuelles avec OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI et bien plus encore.", + "videoDescription": "Créez des vidéos avec AnimateDiff, Stable Video Diffusion via ComfyUI ou SD WebUI.", + "musicDescription": "Composez de la musique avec Stable Audio Open ou MusicGen via ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Plongement", "image": "Image", "imageToText": "Image vers texte", "tts": "Texte vers parole", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "Les modèles de reconnaissance vocale OpenRouter utilisent votre connexion OpenRouter configurée. Aucune crédentiale séparée n'est requise." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Requête de recherche", + "searchResults": "Résultats de recherche", + "cachedResult": "En cache", + "searchCost": "Coût", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Test de recherche avancée avec comparaison des fournisseurs", + "compareProviders": "Comparer les fournisseurs", + "rerankResults": "Reclasser les résultats", + "searchHistory": "Historique des recherches", + "urlOverlap": "Chevauchement des URL", + "noSearchProviders": "Aucun fournisseur de recherche configuré. Ajoutez des fournisseurs dans les paramètres.", + "noRerankModels": "Aucun modèle de reclassement disponible", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", + "provider": "Fournisseur", + "searchType": "Type de recherche", + "maxResults": "Nombre maximal de résultats", + "filters": "Filtres", + "country": "Pays", + "language": "Langue", + "timeRange": "Période", + "includeDomains": "Domaines à inclure", + "excludeDomains": "Domaines à exclure", + "safeSearch": "Recherche sécurisée", + "safeSearchOff": "Désactivée", + "safeSearchModerate": "Modérée", "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "queryPlaceholder": "Saisissez une requête de recherche...", + "providerAuto": "auto (le moins cher)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "actualités", + "optionAny": "tous", + "timeRangeDay": "Dernières 24 heures", + "timeRangeWeek": "Semaine dernière", + "timeRangeMonth": "Mois dernier", + "timeRangeYear": "Année dernière", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Délai d’attente dépassé ({seconds} s)", + "networkError": "Erreur réseau", + "formatted": "Mis en forme", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "cache manqué", + "cacheHit": "cache trouvé", + "latency": "Latence", + "cost": "Coût", + "results": "Résultats", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Modèle de reclassement", + "positionDelta": "Changement de position", + "emptyState": "Envoyez une requête de recherche pour afficher les résultats", "copy": "Copier", "resetToDefault": "Réinitialiser aux valeurs par défaut", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Rechercher", + "tabScrape": "Extraire", + "tabCompare": "Comparer", + "modalitiesGuide": "Guide des modalités", + "searchConceptTitle": "Recherche", + "searchConceptDesc": "Recherche = récupère une liste de résultats web (titre, URL, extrait, score de pertinence)", + "scrapeConceptTitle": "Extraction", + "scrapeConceptDesc": "Extraction = extrait le contenu intégral d’une URL (markdown, texte ou HTML)", + "compareConceptTitle": "Comparaison", + "compareConceptDesc": "Comparaison = exécute la même requête auprès de N fournisseurs côte à côte afin de comparer la latence, le coût et le chevauchement des résultats", + "rerankConceptTitle": "Reclasser", + "rerankConceptDesc": "Reclassement = réordonne les résultats via un LLM afin d’améliorer leur pertinence en fonction de la requête", + "autoConceptTitle": "Auto (le moins cher)", + "autoConceptDesc": "Auto (le moins cher) = sélectionne automatiquement le fournisseur disponible le moins cher disposant d’identifiants configurés", + "providerCatalogTitle": "Catalogue des fournisseurs", + "kindSearch": "Recherche", + "kindFetch": "Récupération/Extraction", + "statusConfigured": "Configuré", + "statusMissing": "Aucun identifiant", + "statusRateLimited": "Débit limité", + "configureProvider": "Configurer dans Fournisseurs", + "loadingProviders": "Chargement des fournisseurs…", + "failedToLoadProviders": "Échec du chargement des fournisseurs", + "costPerQuery": "Coût/requête", + "freeQuota": "Quota gratuit/mois", + "scrapeUrl": "URL à extraire", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "L'URL est requise", "scrapeUrlInvalid": "URL non valide — elle doit commencer par http:// ou https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", + "scrapeExtract": "Extraire", + "scrapeExtracting": "Extraction…", + "scrapeFullPage": "Page entière", "scrapeFormat": "Format", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Texte", + "scrapePreview": "Aperçu", + "scrapeRaw": "Brut", + "scrapeContentTruncated": "(tronqué, afficher le contenu brut)", + "scrapeMetadata": "Métadonnées", + "scrapeProvider": "Fournisseur", + "scrapeSize": "Taille", "scrapeEmptyState": "Saisissez une URL pour extraire son contenu", "scrapeProvidersAvailable": "Fournisseurs disponibles : Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", + "compareRun": "Comparer", + "compareRunning": "Comparaison…", + "autoProvider": "Auto (le moins cher)", + "configuredStatus": "Configuré", + "rateLimitedStatus": "Débit limité", + "noCredential": "Aucun identifiant", "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "rerankModelLabel": "Modèle de reclassement", + "noneOption": "Aucun", + "size": "Taille", "configurationPane": "Volet de configuration", "configuration": "Configuration", "status": "Statut", @@ -2664,7 +2664,7 @@ "httpError": "Erreur {status}", "failed": "Échec", "requestFailed": "Échec de la requête", - "embedding": "Embedding", + "embedding": "Vectorisation", "embeddingSample": "Bonjour le monde !", "image": "Image", "imageSample": "Un paysage serein avec des montagnes au coucher du soleil", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Ajouter", "antigravityStep2Suffix": "à votre fichier hosts en tant que 127.0.0.1.", "antigravityStep3": "3. Ouvrez Antigravity et les requêtes seront proxy.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} envoie les requêtes au point de terminaison de son fournisseur. MITM les intercepte et les redirige vers OmniRoute.", + "mitmStep1": "1. Démarrez MITM pour acheminer les requêtes via OmniRoute.", + "mitmStep2Prefix": "2. Ajoutez", + "mitmStep2Suffix": "à votre fichier hosts en tant que 127.0.0.1.", + "mitmStep3": "3. Ouvrez {toolName} et les requêtes seront acheminées via le proxy.", "sudoPasswordRequiredTitle": "Mot de passe Sudo requis", "sudoPasswordHint": "Un mot de passe administrateur est requis pour modifier les paramètres du fichier hôte et du proxy système.", "enterSudoPassword": "Entrez le mot de passe sudo", @@ -2908,7 +2908,7 @@ "continue": "À utiliser lors de l'exécution de Continue dans les IDE et que vous avez besoin d'une configuration de fournisseur portable basée sur JSON.", "opencode": "À utiliser lorsque vous préférez les exécutions d'agents natifs du terminal et l'automatisation par script via OpenCode.", "kiro": "À utiliser lors de l'intégration de Kiro et du contrôle centralisé du routage de modèles à partir d'OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "À utiliser si vous souhaitez un IDE axé sur l’IA avec les modèles Codeium/Windsurf acheminés via OmniRoute.", "antigravity": "À utiliser lorsque le trafic Antigravity/Kiro doit être intercepté via MITM et acheminé vers OmniRoute.", "copilot": "À utiliser lorsque vous souhaitez une UX de style chat Copilot tout en appliquant les clés OmniRoute et les règles de routage.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2928,11 +2928,11 @@ "qwen": "CLI Qwen Code", "cursor": "Éditeur de code AI du curseur", "continue": "Continuer l'Assistant IA", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "Agent de programmation IA OpenCode (terminal)", + "kiro": "Amazon Kiro — IDE alimenté par l’IA", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "CLI de l’assistant de programmation Sourcegraph Amp", "hermes": "Assistant de terminal Hermes AI", "hermes-agent": "Hermes Agent (par Nousresearch) - IA de terminal avancée avec prise en charge multi-modèle (délégation, vision, compression, etc.)", "custom": "Générateur de configuration générique CLI ou SDK compatible OpenAI", @@ -2950,7 +2950,7 @@ "interpreter": "CLI de l'agent de codage autonome Open Interpreter", "omp": "Agent de codage de terminal Oh My Pi", "letta": "Agent CLI Letta avec mémoire persistante et utilisation d'outils", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — environnement de programmation RLM auto-amélioré prenant en charge les fournisseurs compatibles avec OpenAI", "warp": "Terminal Warp AI avec prise en charge de fournisseur personnalisé", "agent-deck": "Orchestrateur multi-agent Agent Deck", "5dive": "5dive — flotte auto-hébergée d'agents de codage ; un profil d'authentification les pointe tous vers OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Installer OpenCode", + "desc": "Installer via npm : npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Clé API" }, "3": { - "title": "Set Base URL", + "title": "Définir l’URL de base", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Sélectionner un modèle" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Utiliser la variante de raisonnement", + "desc": "Pour les modèles de raisonnement, exécutez la commande avec --variant high/low/max (voir l’exemple ci-dessous)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Ouvrir les paramètres de Kiro", + "desc": "Accédez à Paramètres → Fournisseur d’IA" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "URL de base", + "desc": "Collez l’URL de votre point de terminaison OmniRoute" }, "3": { - "title": "API Key" + "title": "Clé API" }, "4": { - "title": "Select Model" + "title": "Sélectionner un modèle" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Ouvrir les paramètres d’IA", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Ajouter un fournisseur personnalisé", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "URL de base", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Clé API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Sélectionner un modèle", + "desc": "Choisissez un modèle dans la liste déroulante" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "CLI personnalisée", - "toolCategories": "Tool Categories", + "toolCategories": "Catégories d’outils", "visibleToolsCount": "{count} outils disponibles", "customCliBuilderTitle": "Générateur CLI compatible OpenAI", "customCliBuilderDescription": "Générez des variables d'environnement et des extraits de code JSON pour toute CLI ou SDK qui accepte une URL de base, une clé API et un ID de modèle compatibles OpenAI.", @@ -3260,18 +3260,18 @@ "priorityDesc": "Repli séquentiel : essaie d'abord le modèle 1, puis le 2, etc.", "weightedDesc": "Répartit le trafic en pourcentage de poids avec repli", "roundRobinDesc": "Distribution circulaire : chaque demande va au modèle suivant en rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Relais de contexte", + "contextRelayDesc": "Préserve la continuité de la session grâce à des résumés de transfert lors de la rotation des comptes", "randomDesc": "Sélection aléatoire uniforme, puis retour aux modèles restants", "leastUsedDesc": "Sélectionne le modèle avec le moins de demandes, en équilibrant la charge au fil du temps", "costOptimizedDesc": "Itinéraires vers le modèle le moins cher en premier en fonction du prix", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Achemine systématiquement chaque préfixe d’invite réutilisable vers le même compte fournisseur", "resetAware": "RR conscient de la réinitialisation", "resetAwareDesc": "Équilibre le quota restant par rapport aux réinitialisations de 5 heures et hebdomadaires, puis compare les scores similaires", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Pondéré selon les quotas", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Aléatoire strict", + "strictRandomDesc": "Mélange du paquet — utilise chaque modèle une fois avant de remélanger", "fusion": "Fusion", "fusionDesc": "Diffuse l'invite à tous les modèles du panel en parallèle, puis un modèle juge synthétise une réponse finale", "fusionJudgeModel": "Modèle juge", @@ -3288,13 +3288,13 @@ "retryDelay": "Délai de nouvelle tentative (ms)", "concurrencyPerModel": "Concurrence / Modèle", "queueTimeout": "Délai d'expiration de la file d'attente (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Seuil de transfert", + "contextRelayHandoffThresholdHelp": "Lorsque l’utilisation du quota atteint ce seuil, OmniRoute génère un résumé structuré de transfert avant que le compte actif n’ait épuisé son quota.", + "contextRelayMaxMessages": "Nombre maximal de messages pour le résumé", + "contextRelayMaxMessagesHelp": "Limite la quantité d’historique récent condensée dans le résumé de relais.", + "contextRelaySummaryModel": "Modèle de résumé", + "contextRelaySummaryModelHelp": "Modèle de remplacement facultatif utilisé uniquement pour générer le résumé de transfert. Laissez ce champ vide pour réutiliser le modèle de combo actif.", + "contextRelayProviderNote": "Le relais de contexte génère actuellement des transferts lors de la rotation des comptes Codex. Associez-le à plusieurs comptes du même fournisseur pour une continuité optimale.", "advancedHint": "Laissez vide pour utiliser les valeurs par défaut globales. Ceux-ci remplacent les paramètres de chaque fournisseur.", "failoverBeforeRetry": "Basculement avant nouvelle tentative", "maxSetRetries": "Nombre maximal de tentatives définies", @@ -3386,19 +3386,19 @@ "example": "Préférez une réinitialisation de compte hebdomadaire à 60 % demain plutôt qu'une réinitialisation de compte à 80 % plus tard." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "À utiliser lorsque vous souhaitez une répartition parfaitement uniforme — chaque modèle est utilisé une fois avant répétition.", + "avoid": "À éviter lorsque les modèles présentent des différences de qualité ou de latence et que l’ordre est important.", + "example": "Exemple : plusieurs comptes du même modèle pour répartir uniformément l’utilisation." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "À utiliser lorsque vous souhaitez une sélection à faible latence à l’aide de l’algorithme Power-of-Two-Choices.", + "avoid": "À éviter pour les petits combos comportant 2 modèles ou moins — aucun avantage par rapport au tourniquet.", + "example": "Exemple : inférence à haut débit sur au moins 4 points de terminaison de modèles équivalents." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "À utiliser lorsque de longues sessions doivent survivre à la rotation des comptes sans perdre le contexte de travail.", + "avoid": "À éviter lorsque les changements de compte sont rares ou lorsque vous ne souhaitez pas de requêtes de résumé supplémentaires.", + "example": "Exemple : sessions Codex qui alternent entre plusieurs comptes à l’approche de l’épuisement du quota." }, "fill-first": { "when": "À utiliser lorsque vous souhaitez épuiser complètement le quota d'un fournisseur avant de passer au suivant.", @@ -3423,23 +3423,23 @@ }, "advancedHelp": { "maxRetries": "Combien de tentatives sont tentées avant l'échec d'une requête.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "retryDelay": "Délai initial entre les nouvelles tentatives. Des valeurs plus élevées réduisent la pression due aux rafales.", + "timeout": "Durée maximale d’une requête avant son abandon.", + "healthcheck": "Exclut les modèles/fournisseurs défaillants des décisions de routage.", + "concurrencyPerModel": "Nombre maximal de requêtes simultanées autorisées par modèle en tourniquet.", + "queueTimeout": "Durée pendant laquelle une requête peut rester dans la file d’attente avant expiration.", "failoverBeforeRetry": "Lorsqu'elle est activée, toute erreur en amont déclenche un basculement immédiat vers la cible combinée suivante, ignorant toutes les tentatives et les URL de secours.", "maxSetRetries": "Nombre de fois où il faut réessayer l'ensemble de cibles complet lorsque chaque cible échoue. 0 = aucune nouvelle tentative de niveau défini.", "setRetryDelayMs": "Délai entre les tentatives de nouvelle tentative au niveau de l'ensemble, ce qui donne le temps aux problèmes transitoires de se résoudre.", "disableSessionStickiness": "Passer à une connexion différente à chaque requête au lieu de figer une conversation entière sur une seule connexion via le hachage du premier message. Remplace le comportement par défaut global. Laisser sur Hériter pour préserver les correspondances de cache de prompt pour les discussions multi-tours." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", + "templatesTitle": "Modèles rapides", + "templatesDescription": "Appliquez un profil de départ, puis ajustez les modèles et la configuration.", + "templateApply": "Appliquer le modèle", + "templateHighAvailability": "Haute disponibilité", + "templateHighAvailabilityDesc": "Routage prioritaire avec contrôles d’intégrité et nouvelles tentatives sécurisées.", + "templateCostSaver": "Économies", + "templateCostSaverDesc": "Routage optimisé pour les coûts pour les charges de travail privilégiant le budget.", "templateBalanced": "Charge équilibrée", "templateBalancedDesc": "Routage le moins utilisé pour répartir la demande dans le temps.", "usageGuideHide": "Cacher", @@ -3459,12 +3459,12 @@ "warningRoundRobinSingleModel": "Le round-robin est plus utile avec au moins 2 modèles.", "warningCostOptimizedPartialPricing": "Seuls {priced} des modèles {total} ont un prix. Le routage peut être partiellement axé sur les coûts.", "warningCostOptimizedNoPricing": "Aucune donnée de prix trouvée pour ce combo. Un itinéraire optimisé en termes de coûts peut être inattendu.", - "filterAll": "All", + "filterAll": "Tous", "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterDeterministic": "Déterministe", + "filterEmptyTitle": "Aucun combo ne correspond à ce filtre de stratégie.", + "filterEmptyIntelligentDescription": "Créez un combo automatique ou LKGP pour alimenter le tableau de bord du routage intelligent.", + "filterEmptyDeterministicDescription": "Seuls les combos automatiques et LKGP existent actuellement. Revenez à Tous ou créez un combo déterministe.", "readinessTitle": "Prêt à enregistrer ?", "readinessDescription": "Vérifie la checklist avant de créer ou de mettre à jour ce combo.", "readinessCheckName": "Le nom du combo est valide", @@ -3482,8 +3482,8 @@ "applyRecommendations": "Appliquer les recommandations", "recommendationsUpdated": "Recommandations mises à jour pour {strategy}.", "recommendationsApplied": "Recommandations appliquées à ce combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "intelligentPanelTitle": "Tableau de bord du routage intelligent", + "intelligentPanelDesc": "Évaluation en temps réel et état d’intégrité pour ce combo de routage automatique.", "configOnlyStatus": "Vue Configuration", "configOnlyHint": "Ce panneau affiche uniquement les entrées de routage. L'état du disjoncteur en direct est disponible sur la page Santé.", "routingInputs": "Entrées de routage", @@ -3505,47 +3505,47 @@ "manualModelUnknownProvider": "Préfixe de fournisseur inconnu.", "builderDynamicAccountShort": "Compte dynamique", "builderNeedValidName": "Définissez un nom de combo valide avant de continuer.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Vue d’ensemble de l’état", + "normalOperation": "Fonctionnement normal", + "allProvidersHealthy": "Les fournisseurs signalent des conditions de routage saines.", + "incidentMode": "Mode incident", + "highCircuitBreakerRate": "Un taux élevé de déclenchement du disjoncteur a été détecté.", + "activeModePack": "Pack de modes actif", + "modePackUpdated": "Le pack de modes a été mis à jour vers {pack}.", + "modePackHint": "Changez de préréglage pour orienter le moteur de routage sans reconstruire la combinaison.", + "providerScores": "Scores des fournisseurs", + "allProvidersEvaluated": "Aucun pool de candidats n’est configuré. Tous les fournisseurs actifs sont évalués lors de l’exécution.", + "excludedProviders": "Fournisseurs exclus", + "excludedProvidersHint": "Les fournisseurs dont le disjoncteur est OUVERT sont temporairement exclus du routage.", + "noExcludedProviders": "Aucun fournisseur n’est actuellement exclu.", + "cooldownMinutes": "Temps de récupération : {minutes} min", + "builderIntelligentTitle": "Configuration du routage intelligent", + "builderIntelligentDesc": "Configurez le moteur de notation multifactorielle pour cette combinaison de routage automatique.", + "candidatePoolLabel": "Pool de candidats", + "candidatePoolHint": "Sélectionnez les fournisseurs que ce moteur doit évaluer. Laissez ce champ vide pour utiliser tous les fournisseurs actifs.", + "candidatePoolEmpty": "Aucun fournisseur actif n’est encore disponible.", + "candidatePoolAllProviders": "Tous les fournisseurs", + "modePackLabel": "Pack de modes", + "routerStrategyLabel": "Stratégie du routeur", + "strategyRules": "Règles (notation à 6 facteurs)", + "explorationRateLabel": "Taux d’exploration", + "explorationRateHint": "{percent} % des requêtes peuvent explorer des fournisseurs non optimaux.", + "budgetCapLabel": "Plafond budgétaire (USD / requête)", + "budgetCapPlaceholder": "Aucune limite", + "advancedWeightsTitle": "Avancé : pondération des scores", "nestedComboFlatten": "Aplatir les combos imbriqués", "nestedComboExecute": "Exécuter les combos imbriqués comme cibles", "effectiveRoutingShare": "Part de routage effective (poids ÷ total)", "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightHealth": "État de santé", + "weightCostInv": "Coût", + "weightLatencyInv": "Latence", + "weightTaskFit": "Adéquation à la tâche", + "weightStability": "Stabilité", + "weightTierPriority": "Niveau", + "weightCacheAffinity": "Affinité avec les résultats en cache", "weightSessionAvailability": "Disponibilité de la session", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Configuration du routage intelligent", "strategyRecommendations": { "priority": { "title": "Base tolérante aux pannes", @@ -3597,11 +3597,11 @@ "tip3": "Gardez la bande de liaison petite afin que les comptes équivalents tournent toujours équitablement." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Distribution par mélange du paquet", + "description": "Chaque modèle est utilisé exactement une fois par cycle avant un nouveau mélange.", + "tip1": "Utilisez au moins 2 modèles pour une distribution pertinente.", + "tip2": "Fonctionne mieux avec des modèles aux performances équivalentes.", + "tip3": "Idéal pour équilibrer la charge entre plusieurs comptes d’API." }, "fill-first": { "description": "Épuisez les quotas des fournisseurs de manière séquentielle avant de revenir en arrière.", @@ -3646,86 +3646,86 @@ "title": "Le pouvoir de deux choix" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Offre gratuite (0 $)", + "templateFreeStackDesc": "Répartition à tour de rôle entre tous les fournisseurs gratuits : Kiro (Claude), Qoder (5 modèles), Qwen (4 modèles). Aucun coût, le codage ne s’arrête jamais.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "Mode LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Bien démarrer avec les combos", + "wizardGuideDesc": "Créez des combos de modèles pour acheminer intelligemment le trafic d’IA", + "wizardGuideHint": "ou cliquez sur + Créer un combo ci-dessus", + "createFirstCombo": "Créez votre premier combo", + "wizardStep1Title": "Nommez votre combo", + "wizardStep1Desc": "Donnez à votre combo un nom unique pour l’identifier dans les règles de routage", + "wizardStep2Title": "Ajouter des modèles", + "wizardStep2Desc": "Sélectionnez des modèles d’IA et définissez l’ordre de priorité de leur basculement", + "wizardStep3Title": "Choisir une stratégie", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Vérifier et enregistrer", + "wizardStep4Desc": "Vérifiez votre configuration et activez le combo", + "usageGuideInvokeTitle": "Comment appeler ce combo", + "usageGuideInvokeDesc": "Envoyez le nom exact du combo comme modèle, par ex. model: \"my-combo\" (ou combo/my-combo).", + "usageGuideInvokeAutoNote": "auto et auto/* constituent un routeur distinct sans configuration qui n’utilise pas vos combos (sauf si un combo porte littéralement le nom auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto est un véritable produit OpenRouter payant (Auto Best Available), et non un alias OmniRoute — excluez-le via Paramètres → Routage → Masquer les modèles payants.", + "emailVisibilityStateOn": "Activé", + "emailVisibilityStateOff": "Désactivé", + "reorderHandle": "Faites glisser pour réorganiser", + "failedReorder": "Échec de la réorganisation des modèles", + "builderFlowTitle": "Flux de création de combo", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Informations de base", + "description": "Nom et modèle de départ" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Étapes", + "description": "Sélection du fournisseur, du modèle et du compte" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Stratégie", + "description": "Comportement du routage et paramètres avancés" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Routage intelligent", + "description": "Groupe de candidats au routage automatique, préréglages et notation" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Vérification", + "description": "Validation finale avant l’enregistrement" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Étape terminée", + "builderStageCurrent": "Étape actuelle", + "builderStagePending": "En attente", + "builderStageLocked": "Verrouillé — terminez d’abord l’étape précédente", + "builderTitle": "Créer un combo", + "builderBrowseCatalog": "Parcourir le catalogue", + "builderProvider": "Fournisseur", + "builderLoadingProviders": "Chargement des fournisseurs...", + "builderSelectProvider": "Sélectionner un fournisseur", + "builderModel": "Modèle", + "builderSelectModel": "Sélectionner un modèle", + "builderProviderFirst": "Sélectionnez d’abord un fournisseur", + "builderAccount": "Compte", + "builderPreview": "Aperçu", + "builderAddStep": "Ajouter une étape", "builderDuplicateExact": "Cette étape exacte fournisseur/modèle/compte est déjà dans la combinaison.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Réf. de combinaison", + "builderAddComboRef": "Ajouter une référence de combinaison", + "builderComboRefStep": "Ajouter une référence de combinaison", + "builderPinnedAccount": "Compte épinglé", + "builderLegacyEntry": "Entrée héritée", + "reviewName": "Nom", + "reviewStrategy": "Stratégie", + "reviewSteps": "Étapes", + "reviewAccounts": "Comptes", + "reviewProviders": "Fournisseurs", + "reviewComboRefs": "Références de combinaison", + "reviewAdvanced": "Paramètres avancés", + "reviewAgentFlags": "Indicateurs de l’agent", + "reviewSequence": "Séquence de modèles", + "reviewNoSteps": "Aucune étape configurée", "builderStagesDescription": "Terminez chaque étape afin de définir des combos, de créer des étapes, de sélectionner une stratégie de routage et d'examiner les résultats.", "builderStepsDescription": "Construisez chaque étape combinée dans l'ordre : fournisseur, modèle, puis compte. Cela permet de réutiliser le même fournisseur et le même modèle sur différents comptes.", "selectProvider": "Sélectionnez le fournisseur", @@ -3780,7 +3780,7 @@ "errorDescription": "Les données des combos ne peuvent pas être chargées pour le moment. Vérifiez votre connexion et réessayez.", "errorId": "ID d'erreur : {id}", "errorRetry": "Réessayer", - "comboLabel": "Combo", + "comboLabel": "Combinaison", "duplicateAutoComboConfirm": "Créer une combinaison statique à partir de \"{name}\" ?", "duplicateAutoComboSnapshotMsg": "Cela capturera les fournisseurs/modèles actuellement connectés qui correspondent à ce modèle dans une combinaison modifiable.", "duplicateAutoComboFailedPrefix": "Échec de la duplication de la combinaison automatique :", @@ -3800,27 +3800,27 @@ "range7d": "7 jours", "range30d": "30 jours", "range90d": "90 jours", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 jours", + "range365d": "365 jours", "rangeAll": "Tout le temps", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Modèles actifs", + "flatRateEstimateNotice": "Inclut des estimations de prix par jeton pour les abonnements à tarif fixe, et non le coût facturé.", + "flatRateEstimateForecast": "La projection inclut des estimations pour les tarifs fixes.", + "selectedWindow": "Période sélectionnée", + "activeProviders": "Fournisseurs actifs", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Dépenses aujourd’hui", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Part du fournisseur", + "topProviders": "Principaux fournisseurs", + "costTrend": "Évolution des coûts", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Principaux modèles", "requestsInWindow": "Requests In Window", "tokenUsage": "Utilisation des jetons", "totalTokens": "Total des jetons", @@ -3855,15 +3855,15 @@ "exportCSV": "Exporter au format CSV", "exportJSON": "Exporter au format JSON", "legacyFreeLabel": "Hérité / Gratuit", - "costExplorerTitle": "Cost Explorer", - "costExplorerDescription": "Explore spend by provider, model, API key, account, or service tier.", - "groupProvider": "Provider", - "groupModel": "Model", - "groupApiKey": "API Key", - "groupAccount": "Account", - "groupServiceTier": "Service Tier", + "costExplorerTitle": "Explorateur de coûts", + "costExplorerDescription": "Explorez les dépenses par fournisseur, modèle, clé API, compte ou niveau de service.", + "groupProvider": "Fournisseur", + "groupModel": "Modèle", + "groupApiKey": "Clé API", + "groupAccount": "Compte", + "groupServiceTier": "Niveau de service", "serviceTierFast": "Rapide", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Flexible", "serviceTierStandard": "Standard", "serviceTierBreakdownTitle": "Niveau de service", "serviceTierBreakdownSubtitle": "Répartition Rapide / Flex / Standard", @@ -3871,20 +3871,20 @@ "serviceTierCostSaved": "enregistré", "serviceTierCostShareSuffix": "du coût", "dimension": "Dimension", - "share": "Share", - "legacyOrFree": "Legacy / Free", - "filterRows": "Filter rows…", - "filterCostExplorerRows": "Filter Cost Explorer rows", - "noMatchingCostRows": "No matching cost rows", - "noMatchingCostRowsDescription": "Adjust the search text, grouping, or selected time window.", - "showingCostRows": "Showing {shown} of {total} matching rows.", - "showingTopCostRows": "Showing {shown} of {total} matching rows (top 50)." + "share": "Part", + "legacyOrFree": "Ancien / Gratuit", + "filterRows": "Filtrer les lignes…", + "filterCostExplorerRows": "Filtrer les lignes de l’explorateur de coûts", + "noMatchingCostRows": "Aucune ligne de coût correspondante", + "noMatchingCostRowsDescription": "Modifiez le texte de recherche, le regroupement ou la période sélectionnée.", + "showingCostRows": "Affichage de {shown} lignes correspondantes sur {total}.", + "showingTopCostRows": "Affichage de {shown} lignes correspondantes sur {total} (50 premières)." }, "endpoint": { "title": "Point de terminaison de l'API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Utilisez le point de terminaison compatible avec OpenAI avec la plupart des SDK et outils.", + "testEndpoint": "Tester le point de terminaison →", + "advancedProtocols": "Protocoles avancés", "available": "Points de terminaison disponibles", "cloudProxy": "Proxy cloud", "disableConfirm": "Êtes-vous sûr de vouloir désactiver le proxy cloud ?", @@ -3900,7 +3900,7 @@ "disableCloud": "Désactiver le cloud", "enableCloud": "Activer le cloud", "modelsAcrossEndpoints": "Modèles {models} sur {endpoints} points de terminaison", - "loadingModels": "Loading available models...", + "loadingModels": "Chargement des modèles disponibles...", "chatDesc": "Chat en streaming et sans streaming avec tous les fournisseurs", "embeddings": "Intégrations", "embeddingsDesc": "Intégrations de texte pour les pipelines de recherche et RAG", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Transcrire des fichiers audio en texte (Whisper)", "textToSpeech": "Synthèse vocale", "textToSpeechDesc": "Convertir du texte en discours au son naturel", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Génération musicale", + "musicDesc": "Générez de la musique et des pistes audio via ComfyUI (Stable Audio, MusicGen)", "moderations": "Modérations", "moderationsDesc": "Modération du contenu et classification de sécurité", "responsesDesc": "API Responses d'OpenAI pour Codex et workflows agentiques avancés", "listModelsDesc": "Lister tous les modèles disponibles sur tous les fournisseurs connectés", "settingsApiDesc": "Lire et modifier la configuration d'OmniRoute via l'API", - "settingsApi": "Settings API", + "settingsApi": "API des paramètres", "categoryCore": "APIs Principales", "categoryMedia": "Médias et Multi-Modal", - "categorySearch": "Search & Discovery", + "categorySearch": "Recherche et découverte", "categoryUtility": "Utilitaires et Gestion", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Recherche sur le Web", + "webSearchDesc": "Recherche Web unifiée auprès de plusieurs fournisseurs, avec basculement automatique et mise en cache", + "searchProvider": "Fournisseur de recherche", + "searchProviderDesc": "Ce fournisseur est utilisé pour la recherche Web via POST /v1/search. Aucune configuration de modèle n’est nécessaire — les fournisseurs de recherche sont prêts à l’emploi dès qu’une clé API est connectée.", "enableCloudTitle": "Activer le proxy cloud", "whatYouGet": "Ce que vous obtiendrez", "cloudBenefitAccess": "Accédez à votre API depuis n'importe où dans le monde", @@ -3963,29 +3963,29 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Activer le tunnel", + "cloudflaredInstallAndEnable": "Installer et activer", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "En cours d’exécution", + "cloudflaredStarting": "Démarrage", + "cloudflaredStoppedState": "Arrêté", + "cloudflaredNotInstalled": "Non installé", + "cloudflaredUnsupported": "Non pris en charge", + "cloudflaredError": "Erreur", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Dernière erreur : {error}", "providerModelsTitle": "{provider} — Modèles", "noModelsForProvider": "Aucun modèle disponible pour ce fournisseur.", "chat": "Discuter", "embedding": "Intégration", "image": "Images", "custom": "personnalisé", - "modelsCount": "{count, plural, one {# model} other {# models}}", + "modelsCount": "{count, plural, one {# modèle} other {# modèles}}", "sectionTitle": "Surface d'intégration", "sectionDescription": "API compatibles OpenAI et points de terminaison du protocole opérationnel", "tabApis": "API", @@ -4012,8 +4012,8 @@ "a2aQuickStartStep1": "Découvrez la carte d'agent sur `/.well-known/agent.json`.", "a2aQuickStartStep2": "Envoyez des requêtes JSON-RPC à `POST /a2a` en utilisant `message/send` ou `message/stream`.", "a2aQuickStartStep3": "Suivez et contrôlez les tâches à l’aide de `tasks/get` et `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Complétions (ancienne version)", + "completionsLegacyDesc": "Anciennes complétions de texte OpenAI — accepte à la fois une chaîne d’invite et un tableau de messages", "messagesApi": "Messages", "messagesApiDesc": "Format API natif Anthropic Messages pour les fournisseurs compatibles Claude", "imageEdits": "Modifications d'images", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Traitez de gros lots de requêtes de manière asynchrone (compatible OpenAI)", "filesApi": "API de fichiers", "filesApiDesc": "Téléchargez et gérez des fichiers pour le traitement par lots", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Génération de vidéos", + "videoDesc": "Générez des vidéos à l’aide de modèles d’IA comme ComfyUI et Stable Video Diffusion.", + "tailscaleRequestFailed": "Échec du chargement de l’état de Tailscale", + "tailscaleEnableFailed": "Échec de l’activation de Tailscale Funnel", + "tailscaleWaitingForLogin": "Terminez la connexion à Tailscale dans l’onglet de navigateur ouvert. OmniRoute réessaiera automatiquement.", + "tailscaleLoginTimedOut": "Délai d’attente dépassé pour la connexion à Tailscale", + "tailscaleWaitingForFunnel": "Activez Funnel pour cet appareil dans l’onglet de navigateur ouvert. OmniRoute continuera à vérifier son état.", + "tailscaleFunnelTimedOut": "Délai d’attente dépassé pour l’activation de Tailscale Funnel", + "tailscaleStarted": "Tailscale Funnel activé", + "tailscaleDisableFailed": "Échec de la désactivation de Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel désactivé", + "tailscaleInstallFailed": "Échec de l’installation de Tailscale", + "tailscaleInstallProgress": "Traitement en cours...", + "tailscaleInstalled": "Tailscale a été installé avec succès", + "tailscaleRunning": "En cours d’exécution", + "tailscaleNeedsLogin": "Connexion requise", + "tailscaleStoppedState": "Arrêté", + "tailscaleNotInstalled": "Non installé", + "tailscaleUnsupported": "Non pris en charge", + "tailscaleError": "Erreur", + "tailscaleDisable": "Arrêter Funnel", + "tailscaleInstallAndEnable": "Installer et activer", + "tailscaleLoginAndEnable": "Se connecter et activer", + "tailscaleEnable": "Activer Funnel", + "tailscaleUrlNotice": "Utilise votre adresse Tailscale .ts.net. Une connexion et l’approbation de Funnel peuvent être requises lors de la première utilisation.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Authentifiez cette machine auprès de Tailscale, puis activez Funnel.", + "tailscaleBinaryPath": "Binaire : {path}", + "tailscaleLastError": "Dernière erreur : {error}", + "tailscaleInstallTitle": "Installer Tailscale", + "tailscaleInstallIntro": "Installe Tailscale sur cette machine et prépare OmniRoute à activer Funnel.", + "tailscaleInstallPasswordHint": "Sur macOS et Linux, sudo peut être requis pour l’installation du paquet et le démarrage du démon.", + "tailscaleSudoPlaceholder": "Mot de passe sudo facultatif", + "tailscaleInstalling": "Installation en cours", "tailscaleSudoLabel": "Mot de passe Sudo (obligatoire sur macOS/Linux)", "ngrokTitle": "Tunnel de Ngrok", "ngrokRunning": "Courir", @@ -4144,9 +4144,9 @@ "tierPublic": "Public", "hideInternal": "Masquer l'interne", "showInternal": "Afficher l'interne", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Invite système personnalisée", + "customSystemPromptDescription": "Injecter une invite système personnalisée dans chaque requête au modèle", + "customSystemPromptPlaceholder": "p. ex. Répondez toujours comme un pirate...", "obsidianEnterToken": "Veuillez saisir un jeton d'API Obsidian", "obsidianConnectFailed": "Échec de la connexion", "obsidianConnectionFailed": "La connexion a échoué", @@ -4195,7 +4195,7 @@ "notionTokenConfigured": "Jeton configuré. Les outils Notion sont disponibles via MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", + "tabProxy": "Proxy de point de terminaison", "tabApiEndpoints": "Points d'accès API", "apiEndpointsTitle": "Points d'accès API", "apiEndpointsDescription": "Points d'accès API backend pouvant être consommés par d'autres applications et services.", @@ -4251,7 +4251,7 @@ "yes": "oui", "no": "non", "lastCall": "Dernier appel", - "heartbeatPath": "Heartbeat path", + "heartbeatPath": "Chemin du signal de présence", "operationalControls": "Contrôles opérationnels", "switchCombo": "Changer de combinaison", "inactive": "inactif", @@ -4278,42 +4278,42 @@ "success": "Succès", "failure": "Échec", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "Chargement des entrées d’audit...", + "noAuditEntriesForFilters": "Aucune entrée d’audit trouvée pour les filtres actuels.", + "tableTimestamp": "Horodatage", + "tableDuration": "Durée", + "tableResult": "Résultat", + "tableApiKey": "Clé API", + "failed": "échoué", + "previous": "Précédent", + "next": "Suivant", + "apiKeyId": "ID de clé API", + "offset": "Décalage", + "limit": "Limite", + "tool": "Outil" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", + "loading": "Chargement du tableau de bord A2A...", + "confirmCancelTask": "Annuler la tâche {taskId} ?", "cancelTaskFailed": "Échec de l'annulation de la tâche.", "cancelTaskSuccess": "Tâche {taskId} annulée.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "smokeSendFailed": "Échec du test rapide message/send.", + "smokeSendSuccessWithTask": "Test message/send réussi (tâche {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "Échec du test rapide message/stream.", + "smokeStreamSuccessWithTask": "Test message/stream réussi (tâche {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "Le test message/stream s’est terminé sans ID de tâche.", + "health": "État", "ok": "ok", - "totalTasks": "Total tasks", + "totalTasks": "Nombre total de tâches", "activeStreams": "Flux actifs", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "lastTask": "Dernière tâche", + "taskStateOverview": "Vue d’ensemble de l’état des tâches", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", + "submitted": "soumise", + "working": "en cours", + "completed": "terminée", + "failed": "échouée", "cancelled": "annulé" }, "agentCard": "Carte d'agent", @@ -4323,33 +4323,33 @@ "capabilities": "Capacités", "agentCardNotAvailable": "Carte d'agent non disponible.", "quickValidation": "Validation rapide", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", + "quickValidationDescription": "Exécute des appels de test rapide via le point de terminaison `/a2a` en production.", + "runMessageSend": "Exécuter message/send", + "runMessageStream": "Exécuter message/stream", + "taskManagement": "Gestion des tâches", + "taskSummary": "{total} tâches | page {page} sur {totalPages}", + "allStates": "toutes", + "allSkills": "toutes les compétences", + "loadingTasks": "Chargement des tâches...", + "noTasksForFilters": "Aucune tâche trouvée pour les filtres actuels.", + "tableTask": "Tâche", + "tableSkill": "Compétence", + "tableState": "État", + "tableUpdated": "Mise à jour", "tableActions": "Actes", "view": "Voir", "cancel": "Annuler", - "previous": "Previous", - "next": "Next", + "previous": "Précédent", + "next": "Suivant", "taskDetail": "Détail de la tâche", "close": "Fermer", "metadata": "Métadonnées", "events": "Événements", "artifacts": "Artefacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "tablePhase": "Phase du tableau", + "offset": "Décalage", + "limit": "Limite", + "skill": "Compétence", "rpcEndpoint": "POSTER /a2a", "rpcMethodSend": "message/envoyer", "rpcMethodStream": "message/flux", @@ -4370,8 +4370,8 @@ "memory": { "a": "A", "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "addMemory": "Ajouter une mémoire", + "allTypes": "Tous les types", "cancel": "Annuler", "checkHealth": "Vérifier la santé", "checkingHealth": "Vérification…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Comment ça marche", "howWorksContent": "1. Extraction automatique : à la fin de chaque réponse, les faits et les épisodes sont détectés et enregistrés automatiquement.\n2. Récupération : avant chaque réponse, les souvenirs les plus pertinents sont recherchés via FTS5 (exact), vectoriel (sémantique) ou RRF hybride.\n3. Injection : les souvenirs pertinents sont injectés dans le contexte de l'assistant pour améliorer la qualité des réponses.\n4. Gestion : utilisez cette page pour afficher, modifier, exporter et compacter les anciens souvenirs." }, - "content": "Content", + "content": "Contenu", "contentPlaceholder": "Valeur ou contenu JSON à retenir", - "created": "Created", - "delete": "Delete", + "created": "Création", + "delete": "Supprimer", "deleteConfirmDesc": "Cette action ne peut pas être annulée. Le souvenir sera définitivement supprimé.", "deleteConfirmTitle": "Supprimer le souvenir ?", - "description": "View and manage stored memory entries", + "description": "Afficher et gérer les entrées de mémoire stockées", "editMemory": "Modifier le souvenir", "editModal": { "title": "Modifier le souvenir", @@ -4433,10 +4433,10 @@ "reindexFailed": "Échec du démarrage de la réindexation", "keywordLabel": "Mot-clé (FTS5)", "keywordReason": "Recherche par mot-clé toujours disponible", - "embeddingLabel": "Embedding", - "vectorStoreLabel": "Vector Store", + "embeddingLabel": "Plongement", + "vectorStoreLabel": "Base de données vectorielle", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Reclassement", "qdrantDisabled": "Désactivé", "qdrantOk": "Sain ({latencyMs} ms)", "qdrantError": "Erreur de connexion", @@ -4444,23 +4444,23 @@ "configureCta": "Configurer", "vectorStoreInstallHint": "Pour activer la recherche vectorielle : npm install sqlite-vec (nécessite Node.js natif, pas WASM), puis redémarrez." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Épisodique", + "export": "Exporter", + "factual": "Factuelle", "healthUnknown": "Santé inconnue", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Taux de réussite", + "import": "Importer", "importError": "Échec de l'importation du fichier", "importResult": "{imported} importé(s), {skipped} ignoré(s)", - "key": "Key", + "key": "Clé", "keyPlaceholder": "par ex. utilisateur.préférences.thème", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Mémoires", "next": "Suivant", - "noMemories": "No memories found", + "noMemories": "Aucune mémoire trouvée", "pageInfo": "Page {page} sur {totalPages} ({total} au total)", "pipelineError": "Erreur de pipeline", - "pipelineOk": "Pipeline OK ({latencyMs}ms)", + "pipelineOk": "Pipeline opérationnel ({latencyMs} ms)", "playground": { "infoTitle": "Playground de mémoire", "infoDesc": "Simulez ce qui serait récupéré pour une requête donnée. Aucune mémoire n'est modifiée — aperçu en lecture seule.", @@ -4474,20 +4474,20 @@ "simulate": "Simuler", "resultsTitle": "{count} résultat(s)", "resolutionTitle": "Résolution de la recherche", - "resolutionEmbedding": "Embedding", - "resolutionStore": "Vector store", + "resolutionEmbedding": "Intégration", + "resolutionStore": "Base de données vectorielle", "resolutionStrategy": "Stratégie utilisée", "rerankApplied": "Rerank appliqué", - "fallback": "Fallback", + "fallback": "Solution de repli", "noResults": "Aucune mémoire trouvée pour cette requête.", "tokensUsed": "jetons utilisés", "none": "aucun", "errorFetch": "Échec de la récupération de l'aperçu" }, "previous": "Précédent", - "procedural": "Procedural", + "procedural": "Procédural", "qdrant": { - "title": "Qdrant (Vector Store Tier 2)", + "title": "Qdrant (Base de données vectorielle de niveau 2)", "description": "Intégration Qdrant facultative pour une recherche sémantique évolutive", "enableLabel": "Activer Qdrant", "enableDesc": "Lorsqu'il est activé, Qdrant est utilisé comme vector store principal", @@ -4534,8 +4534,8 @@ }, "save": "Enregistrer", "saving": "Enregistrement en cours...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Rechercher dans les mémoires...", + "semantic": "Sémantique", "summarize": { "title": "Compacter les anciennes mémoires", "noCandidates": "Aucune mémoire éligible au compactage (critère : >30 jours).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Mémoires", - "playground": "Playground", + "playground": "Bac à sable", "engine": "Moteur" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Gestion de la mémoire", + "tokensUsed": "Jetons utilisés", "tooltip": { "totalEntries": "Total des mémoires stockées pour cette clé API", "tokensUsed": "Estimation du nombre total de jetons occupés par les mémoires actives", @@ -4558,15 +4558,15 @@ "procedural": "Procédures, flux de travail et instructions que l'assistant doit suivre", "semantic": "Concepts, préférences et connaissances du domaine" }, - "totalEntries": "Total Entries", + "totalEntries": "Nombre total d’entrées", "type": "Type", "memoryEnabled": "Mémoire activée" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Compétences", + "description": "Gérer et surveiller les compétences d’IA", + "skillsTab": "Compétences", + "executionsTab": "Exécutions", "selectSkillToInspect": "Sélectionnez une compétence sur la gauche pour l'inspecter.", "schemaTab": "Schéma", "handlerTab": "Gestionnaire", @@ -4577,28 +4577,28 @@ "runTestPlaceholder": "Exécuter le test (espace réservé)", "setModeAria": "Définir le mode {mode}", "uninstallSkill": "Désinstaller la compétence", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Bac à sable", + "loading": "Chargement des compétences...", + "noSkills": "Aucune compétence trouvée", + "noExecutions": "Aucune exécution trouvée", + "enabled": "Activé", + "disabled": "Désactivé", "delete": "Supprimer", "version": "Version", "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", + "skill": "Compétence", + "status": "Statut", + "duration": "Durée", + "time": "Heure", + "sandboxConfig": "Configuration du bac à sable", + "cpuLimit": "Limite du processeur", + "cpuLimitDesc": "Durée maximale d’exécution par compétence", + "memoryLimit": "Limite de mémoire", + "memoryLimitDesc": "Allocation maximale de mémoire", + "timeout": "Délai d’expiration", + "timeoutDesc": "Temps d’attente maximal pour une réponse", + "networkAccess": "Accès réseau", + "networkAccessDesc": "Autoriser les requêtes réseau sortantes", "mode": "Mode", "q": "Q", "filterSkillsPlaceholder": "Filtrer les compétences par nom, description ou tag", @@ -4607,7 +4607,7 @@ "enabledSkills": "Activé", "totalExecutions": "Exécutions", "successRate": "Taux de réussite", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Place de marché", "applyFilters": "Appliquer les filtres", "popularDefaultsLabel": "Populaire par défaut pour le fournisseur sélectionné :", "onMode": "ACTIVÉ", @@ -4665,13 +4665,13 @@ "retry": "Réessayer", "allOperational": "Tous les systèmes opérationnels", "issuesDetected": "Problèmes système détectés", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute est prêt", + "healthVerdictActionRequired": "Action requise pour rétablir le fonctionnement complet", + "healthVerdictCoolingDown": "Temporisation après des modifications récentes", + "healthSubtitle": "Vérification de l’état du système", + "advancedDiagnosticsTitle": "Diagnostics avancés", + "hide": "Masquer", + "show": "Afficher", "updatedAt": "{time} mis à jour", "latency": "Latence", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "Fournisseurs", "configuredProvidersLabel": "Configuré dans le tableau de bord", "configuredProvidersHint": "Fournisseurs dont les informations d’identification sont enregistrées dans /dashboard/providers, quel que soit l’état d’exécution.", - "activeProviders": "{count} active", + "activeProviders": "{count} actif(s)", "activeProvidersHint": "Fournisseurs configurés actuellement activés pour les demandes de routage.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} surveillé(s)", "monitoredProvidersHint": "Fournisseurs actuellement suivis par des moniteurs de santé des disjoncteurs.", "healthyCount": "{count} en bonne santé", "nodeVersion": "Nœud {version}", @@ -4721,11 +4721,11 @@ "resetting": "Réinitialisation...", "resetAll": "Tout réinitialiser", "until": "Jusqu'au {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Épuisé", + "learnedFromHeaders": "Déduit des en-têtes", + "remainingOfLimit": "{remaining}/{limit} restant(s)", + "throttleStatus": "Limitation : {value}", + "lastHeaderUpdate": "Mise à jour de l’en-tête : {age}", "databaseHealth": "Santé de la base de données", "databaseHealthDescription": "Diagnostiquer et réparer les lignes de quota/domaine obsolètes et les références de combinaison rompues.", "status": "Statut", @@ -4888,28 +4888,28 @@ "previous": "Précédent", "next": "Suivant", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Afficher les détails", + "eventMetadata": "Métadonnées de l’événement", + "eventPayload": "Contenu de l’événement", + "requestId": "ID de requête", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "Décalage", + "limit": "Limite", + "status": "Statut", + "resourceType": "Type de ressource", + "totalEntries": "Nombre total d’entrées", + "tab": "Onglet", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Fermer", + "runningRequests": "Requêtes actives", + "runningRequestsDesc": "Vue en temps réel des requêtes en amont en cours d’exécution", "clearAll": "Tout effacer", "confirmClearActiveRequests": "Effacer toutes les demandes actives ?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "Modèle", + "provider": "Fournisseur", + "account": "Compte", + "elapsed": "Temps écoulé", "activeStage": "Étape", "activeStageUnknown": "Pas encore envoyé en amont", "activeStageRegistered": "Enregistré", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Créneau de limite de débit obtenu", "activeStageSendingToProvider": "Envoi en amont", "activeStageProviderResponseStarted": "Réponse en amont démarrée", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Nombre", + "payloads": "Charges utiles", + "viewPayloads": "Afficher", + "activeCount": "{count} actif(s)", + "clientPayload": "Charge utile de la requête client", + "upstreamPayload": "Charge utile du fournisseur en amont", + "upstreamNotSentYet": "Pas encore envoyé en amont", + "runningRequestDetailMeta": "Compte : {account} — Temps écoulé : {elapsed}", + "export": "Exporter", + "exporting": "Exportation...", + "exportFailed": "Échec de l’exportation", "cleanHistoryButton": "Nettoyer l'historique", "cleanHistoryTitle": "Nettoyer l'historique des journaux ?", "cleanHistoryMessage": "Cette action efface définitivement toutes les lignes de journal de requêtes, les lignes de détails héritées et les fichiers d'artefacts locaux sous DATA_DIR/call_logs. La page en direct s'actualisera après le nettoyage.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} entrées de journal, {deletedArtifacts} artefacts et {deletedDetailedLogs} lignes de détails héritées nettoyés.", "cleanHistoryEmpty": "Aucun historique des journaux de requêtes n'a été trouvé.", "cleanHistoryFailed": "Échec du nettoyage de l'historique des journaux.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Période", + "lastNHours": "Dernières {hours}", + "defaultRange": "par défaut", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Échec de la récupération des journaux", + "copyFailed": "Échec de la copie de l’entrée du journal", + "copyLogEntry": "Copier l’entrée du journal", "filterByLevel": "Filtrer par niveau de journal", "searchPlaceholder": "Rechercher dans les journaux…", "searchAria": "Rechercher des entrées de journal", @@ -4987,9 +4987,9 @@ "multiProvider": "Multi-fournisseur", "usageTracking": "Suivi de l'utilisation", "securityDesc": "Définissez un mot de passe pour protéger votre tableau de bord ou ignorez-le pour l'instant.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Sans mot de passe, vous ne pourrez pas ajouter de fournisseurs pendant la configuration. Vous pourrez les ajouter ultérieurement depuis le tableau de bord après avoir défini un mot de passe.", "providerDesc": "Connectez votre premier fournisseur d'IA. Vous pourrez en ajouter d’autres plus tard.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Vous devez d’abord définir un mot de passe pour ajouter des fournisseurs. Revenez à l’étape de sécurité et définissez un mot de passe, ou ajoutez les fournisseurs ultérieurement depuis le tableau de bord.", "apiKeyRequired": "Clé API (obligatoire)", "customUrlOptional": "URL personnalisée (facultatif)", "testDesc": "Vérifions que la connexion de votre fournisseur fonctionne.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Importation…", "importFromFileImport": "Importer {count} fournisseurs", "importFromFileResult": "{success} fournisseurs importés ({failed} en échec)", + "importFromFileDownloadTemplate": "Télécharger le modèle CSV", + "importFromFileMoreErrors": "+{count} de plus", + "importFromFileSchemaHint": "Les colonnes CSV sont positionnelles : fournisseur, nom, apiKey, baseUrl (facultatif), priorité (facultative). La colonne du fournisseur doit contenir l’identifiant d’un fournisseur géré existant ou l’identifiant d’un nœud compatible OpenAI/Anthropic déjà enregistré — cette importation ne crée pas de nouveaux nœuds de terminaison.", "adaptaTutorial": { "title": "Comment connecter Adapta Web", "introPrefix": "Adapta s'authentifie via Clerk. Le jeton", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} masqués", "warningCount": "{count} Avertissement", "noConnections": "Aucune connexion", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Expiré", + "expiringSoonBadge": "Expire bientôt", "freeTier": "Niveau gratuit", "freeTierAvailable": "Niveau gratuit disponible", "hasFreeTooltip": "Niveau gratuit disponible", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Ce fournisseur est obsolète", "riskNotice": { "title": "Avant de continuer", - "detailsTitle": "Usage caveats", + "detailsTitle": "Points d’attention concernant l’utilisation", "tooltip": "Fournisseur avec des restrictions d'utilisation — cliquez pour plus de détails", "oauth": "Ce fournisseur utilise votre session produit officielle/OAuth, ce qui n'est pas autorisé pour une utilisation via proxy/routeur. Nous ne recommandons pas une utilisation intensive par des agents autonomes (style OpenCloud, flux longs à étapes multiples, lots volumineux) — le service amont pourrait réagir en restreignant ou en bannissant le compte. À utiliser à vos risques et périls.", "webCookie": "Ce fournisseur s'authentifie via les cookies de votre session web. Le service amont peut invalider la session à tout moment, vous obligeant à vous reconnecter. Non recommandé pour les opérations longues sans surveillance. À utiliser à vos risques et périls.", @@ -5188,9 +5191,9 @@ "cancel": "Annuler" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} connexion(s) signalée(s) — jusqu’à {maxFailures} échecs récents{lastFailureSuffix}. Cliquez pour afficher l’état des connexions.", + "lastFailureSuffix": "(dernier échec {time})", + "ariaLabel": "Afficher les détails sur l’état des connexions, {count} avertissement(s)" }, "disabled": "Désactivé", "enableProvider": "Activer le fournisseur", @@ -5225,7 +5228,7 @@ "failedCreate": "Échec de la création du fournisseur", "errorOccurred": "Une erreur s'est produite. Veuillez réessayer.", "modelStatus": "Statut du modèle", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Configurés uniquement", "allModelsOperational": "Tous les modèles opérationnels", "modelsWithIssues": "{count} modèle(s) présentant des problèmes", "allModelsNormal": "Tous les modèles répondent normalement.", @@ -5236,7 +5239,7 @@ "clearing": "Dégagement...", "until": "Jusqu'au {time}", "providerTestFailed": "Le test du fournisseur a échoué", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Le test du fournisseur a expiré — trop de connexions à tester simultanément", "modeTest": "{mode}Test", "passedCount": "{count} réussi", "failedCount": "{count} a échoué", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL de l'icône", "iconUrlHint": "Facultatif. URL de l'image affichée comme icône de ce fournisseur.", "iconUrlInvalid": "URL d'icône invalide. Utilisez une URL http(s):// ou data:image/*;base64.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Fuseau horaire de réinitialisation du quota quotidien", + "dailyQuotaResetTimezoneHint": "Fuseau horaire IANA facultatif utilisé lorsque le service en amont omet X-RateLimit-Reset. Laissez ce champ vide pour conserver un court délai de récupération.", + "dailyQuotaResetHourLabel": "Heure de réinitialisation du quota quotidien", + "dailyQuotaResetHourHint": "Heure locale de 0 à 23 dans le fuseau horaire ci-dessus. Un champ vide signifie qu’aucune horloge n’est définie au niveau du nœud.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Fournisseur introuvable", "deleteConnectionConfirm": "Supprimer cette connexion ?", "deleteConnectionConfirmNamed": "Êtes-vous sûr de vouloir supprimer {name} ? Cette action est irréversible.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Supprimer la sélection ({count})", + "batchDeleteConfirm": "Supprimer {count} connexion(s) ? Cette action est irréversible.", + "batchDeleteSuccess": "{count} connexion(s) supprimée(s)", "batchActivateSelected": "Activer", "batchDeactivateSelected": "Désactiver", "batchRetestSelected": "Tester à nouveau", @@ -5292,7 +5295,7 @@ "filterError": "Erreur", "filterBanned": "Banni", "filterCreditsExhausted": "Crédits épuisés", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Rechercher des comptes…", "noFilteredConnections": "Aucune connexion ne correspond au filtre actuel.", "failedSetAlias": "Échec de la définition de l'alias", "setAliasSuccess": "Alias {alias} défini", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "Détails compatibles avec OpenAI", "messagesApi": "API de messages", "responsesApi": "API de réponses", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Plongements", + "audioTranscriptions": "Transcriptions audio", + "audioSpeech": "Synthèse vocale", + "imagesGenerations": "Générations d’images", "chatCompletions": "Achèvements des discussions", "importingModels": "Importation...", "importFromModels": "Importer depuis /models", - "modelsImported": "{count} models imported", + "modelsImported": "{count} modèles importés", "allModelsAlreadyImported": "Tous les modèles sont déjà importés", "noNewModelsToImport": "Aucun nouveau modèle à importer — tous les modèles sont déjà dans le registre ou la liste de modèles personnalisés", "skippingExistingModels": "Ignorance de {count} modèles existants", @@ -5350,13 +5353,13 @@ "importFailed": "Échec de l'importation", "noNewModelsAdded": "Aucun nouveau modèle n'a été ajouté.", "adding": "Ajout...", - "close": "Close", + "close": "Fermer", "importingModelsTitle": "Importation de modèles", "copyModel": "Copier le modèle", "filterModels": "Filtrer les modèles…", "testAllRateLimited": "Limite de débit atteinte, arrêt anticipé", "hideFailedAuto": "Masquer automatiquement les modèles en échec", - "selectAllModels": "Select all", + "selectAllModels": "Tout sélectionner", "hideAllModels": "Tout masquer", "modelsActive": "actifs", "showModel": "Afficher le modèle", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Une clé par ligne. Format : nom|apiKey ou simplement apiKey (auto-nommé par index).", "bulkValidateKeys": "Validez chaque clé avant de sauvegarder (plus lent)", "bulkAddAllKeys": "Ajouter toutes les clés", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# clé ajoutée} other {# clés ajoutées}}", + "bulkFailedCount": "{count, plural, one {# échec} other {# échecs}}", "optional": "Facultatif", "anthropicCompatibleName": "Compatible anthropique", "openaiCompatibleName": "Compatible avec OpenAI", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Une erreur inattendue s'est produite", "getApiKey": "Obtenir la clé API", "getApiKeyDescription": "Inscrivez-vous ou créez un compte pour obtenir une clé API", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# connexion} other {# connexions}}", "messagesPath": "messages", "responsesPath": "réponses", "chatCompletionsPath": "chat/achèvements", @@ -5419,17 +5422,17 @@ "configured": "configuré", "providerProxyConfigureHint": "Configurer le proxy pour toutes les connexions de ce fournisseur", "providerProxy": "Proxy du fournisseur", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Réparer l’environnement", + "repairEnvWorking": "Réparation en cours...", + "repairEnvHint": "Restaurez les valeurs OAuth par défaut manquantes dans .env sans écraser les valeurs existantes.", + "repairEnvSuccess": "Valeurs OAuth par défaut restaurées", + "repairEnvFailed": "Échec de la réparation de .env", "noConnectionsYet": "Aucune connexion pour l'instant", "addFirstConnectionHint": "Ajoutez votre première connexion pour commencer", "addConnection": "Ajouter une connexion", "availableModels": "Modèles disponibles", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Modèles intégrés", + "builtInModelsHint": "Modèles du registre pour ce fournisseur. Utilisez le crayon pour définir les options de compatibilité.", "pageAutoRefresh": "La page s'actualisera automatiquement...", "statusDisabled": "désactivé", "statusConnected": "connecté", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Réauthentifier cette connexion", "proxyConfig": "Configuration du proxy", "aliasExistsAlert": "L'alias \"{alias}\" existe déjà. Veuillez utiliser un modèle différent ou modifier l'alias existant.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "nom de l’alias", + "clickToSetAlias": "Cliquez pour définir l’alias", + "clickToEditAlias": "Alias : {alias} (cliquez pour modifier)", "openRouterAnyModelHint": "OpenRouter prend en charge n'importe quel modèle. Ajoutez des modèles et créez des alias pour un accès rapide.", "modelIdFromOpenRouter": "ID du modèle (depuis OpenRouter)", "openRouterModelPlaceholder": "anthropique/claude-3-opus", "customModels": "Modèles personnalisés", "customModelsHint": "Ajoutez des ID de modèle qui ne figurent pas dans la liste par défaut. Ceux-ci seront disponibles pour le routage.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normaliser les identifiants d’appel d’outil à 9 caractères (p. ex. Mistral)", + "preserveDeveloperRoleLabel": "Conserver le rôle développeur d’OpenAI Responses (ne pas le convertir en rôle système)", + "compatAdjustmentsTitle": "Compatibilité", + "compatButtonLabel": "Compatibilité", + "compatToolIdShort": "ID d’outil à 9 caractères", + "compatDeveloperShort": "Rôle développeur", + "compatDoNotPreserveDeveloper": "Ne pas conserver le rôle développeur", + "compatBadgeNoPreserve": "Ne pas conserver", + "compatProtocolLabel": "Protocole de requête du client", + "compatProtocolHint": "Ces options s’appliquent lorsqu’OmniRoute détecte ce format de requête (OpenAI Chat, Responses API ou Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Réécrire les appels d'outils natifs web_fetch vers le point de terminaison /v1/web/fetch d'OmniRoute.", "interceptionLoadError": "Échec du chargement des paramètres d'interception : {error}", "interceptionSaveError": "Échec de l'enregistrement des paramètres d'interception : {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Afficher dans Claude Code (claude/…)", + "ccAliasSectionHint": "Publiez les modèles de ce fournisseur sous les identifiants miroirs claude/<provider>/<model> afin que la découverte des modèles de la passerelle de Claude Code puisse les répertorier. Désactivé par défaut — l’activation double les entrées du catalogue pour tous les clients.", + "ccAliasProviderLevelLabel": "Valeur par défaut du fournisseur", + "ccAliasModelOverridesLabel": "Remplacements par modèle", + "ccAliasModelOverrideAriaLabel": "Remplacement pour {modelId}", + "ccAliasStateInherit": "Hériter", + "ccAliasStateOn": "Activé", + "ccAliasStateOff": "Désactivé", + "ccAliasAddModelPlaceholder": "ID du modèle (p. ex. gpt-4o)", + "ccAliasAddModelButton": "Ajouter un remplacement", + "ccAliasLoadError": "Échec du chargement des paramètres d’alias de découverte : {error}", + "ccAliasSaveError": "Échec de l’enregistrement du paramètre d’alias de découverte : {error}", + "compatUpstreamHeadersLabel": "En-têtes upstream supplémentaires", + "compatUpstreamHeadersHint": "Paramètre à privilèges élevés — même niveau de confiance que la modification des identifiants d’API du fournisseur ; seuls les administrateurs de confiance doivent l’utiliser. Fusionné après l’ajout par OmniRoute de l’authentification provenant de la clé API du fournisseur. Si un en-tête personnalisé porte le même nom qu’un en-tête existant (p. ex. Authorization), votre valeur remplace entièrement l’en-tête généré automatiquement (y compris le jeton Bearer) — le service upstream voit uniquement ce que vous avez saisi, et non la clé enregistrée dans les paramètres. Une configuration incorrecte peut provoquer une erreur 401 ou interrompre l’authentification upstream. Une ligne par en-tête (p. ex. une authentification supplémentaire pour certaines passerelles). Survolez la valeur ou placez-y le focus pour afficher un aperçu. L’enregistrement s’effectue lorsque le champ perd le focus, lors d’un clic à l’extérieur ou à la fermeture de ce panneau.", + "compatUpstreamHeaderName": "Nom de l’en-tête", + "compatUpstreamHeaderValue": "Valeur", + "compatUpstreamAddRow": "Ajouter un en-tête", + "compatUpstreamRemoveRow": "Supprimer la ligne", + "compatBadgeUpstreamHeaders": "En-têtes", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Importer uniquement les modèles gratuits", @@ -5592,26 +5595,26 @@ "email": "Courriel", "healthCheckMinutes": "Bilan de santé (min)", "healthCheckHint": "Intervalle d’actualisation proactif des jetons. 0 = désactivé.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Tout désélectionner", + "modelsActiveCount": "{active}/{total} actifs", + "noModelsMatch": "Aucun modèle ne correspond à « {filter} »", + "groupLabel": "Environnement", + "groupPlaceholder": "p. ex. eKaizen, Personnel", "failedTestConnection": "Échec du test de connexion", "failed": "Échec", "leaveBlankKeepCurrentApiKey": "Laissez vide pour conserver la clé API actuelle.", "editCompatibleTitle": "Modifier {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "URL racine de votre API compatible avec {type}. Utilisez les paramètres avancés pour personnaliser les chemins des points de terminaison.", "apiKeyForCheck": "Clé API (pour vérification)", "testModelIdLabel": "ID du modèle (facultatif)", "testModelIdPlaceholder": "ex. mon-id-modele", "testModelIdHint": "Si le fournisseur ne dispose pas d'un point de terminaison /models, saisissez un ID de modèle pour valider via /chat/completions à la place.", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "Compatible avec {type} (production)", + "tokenRefreshed": "Jeton actualisé avec succès", + "tokenRefreshFailed": "Échec de l’actualisation du jeton", "cursorSessionUnchanged": "Session déjà en cours", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Appliquer l’authentification", + "exportCodexAuthFile": "Exporter l’authentification", "applyClaudeAuthLocal": "Appliquer l'authentification", "exportClaudeAuthFile": "Exporter l'autorisation", "importClaudeAuth": "Importer l'authentification", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} a échoué", "codexImportBulkZipExtracting": "Extraction du ZIP…", "codexImportBulkZipError": "Échec de l'extraction du ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Paramètres avancés", + "chatPathLabel": "Chemin du point de terminaison de chat", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Chemin de chat personnalisé pour les fournisseurs utilisant des API non standard (p. ex. /v4/chat/completions)", + "modelsPathLabel": "Chemin du point de terminaison des modèles", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Chemin personnalisé des modèles pour la validation (p. ex. /v4/models)", "clientIdentityLabel": "Identité du client", "clientIdentityHint": "Facultatif. Ajoute des en-têtes d'empreinte client (par ex. User-Agent) correspondant à une CLI connue pour les passerelles compatibles qui en attendent une.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Désactivé (manuellement)", + "statusBanned": "Banni / Violation des règles de la sandbox", + "statusCreditsExhausted": "Solde insuffisant / Quota épuisé", + "showEmails": "Afficher toutes les adresses e-mail", + "hideEmails": "Masquer toutes les adresses e-mail", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Ajouter une autre clé API ou coller plusieurs clés", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Passerelles d’agrégateurs", "enterpriseCloud": "Entreprise et Cloud", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Libellé du format de l’API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", + "apiRegionChina": "Région de l’API : Chine", + "apiRegionHint": "Indication de région de l’API", + "apiRegionInternational": "Région de l’API : International", + "apiRegionLabel": "Libellé de la région de l’API", + "apikey": "Clé API", "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "audioProvidersHeading": "En-tête des fournisseurs audio", "cloudAgentProviders": "Fournisseurs d'agents cloud", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Libellé court de l’audio", + "azureOpenAiBaseUrlHint": "Indication pour l’URL de base d’Azure OpenAI", + "bailianBaseUrlHint": "Indication pour l’URL de base de Bailian", + "claudeWebCookieHint": "Ouvrez claude.ai → DevTools → Application → Cookies → claude.ai, puis copiez la valeur de « sessionKey ». Les valeurs cf_clearance, __cf_bm et _cfuvid sont également requises pour Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Indication pour le cookie de Blackbox Web", + "blackboxWebCookiePlaceholder": "Espace réservé pour le cookie de Blackbox Web", "t3ChatWebCookieHint": "Ouvrez t3.chat → DevTools → Application → Stockage local → https://t3.chat, copiez 'convex-session-id'. Ensuite, ouvrez DevTools → Réseau, copiez l'en-tête complet du cookie de toute demande de chat. Collez les deux valeurs dans les champs ci-dessous.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Indication pour le cookie de Grok Web", "blockClaudeExtraUsageDescription": "Lorsqu'elle est activée, OmniRoute marque cette connexion Claude comme indisponible dès que l'API d'utilisation signale une consommation supplémentaire en attente. Le mécanisme de secours bascule alors vers une autre connexion au lieu de poursuivre avec une facturation supplémentaire à l'usage.", "blockClaudeExtraUsageLabel": "Bloquer l'utilisation supplémentaire de Claude", "disableCoolingDescription": "Ignorer le délai de récupération temporaire pour que cette connexion reste éligible même après des erreurs récupérables (les états terminaux comme banni/expiré s'appliquent toujours).", "disableCoolingLabel": "Désactiver le délai de récupération pour cette connexion", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 clé ajoutée} other {# clés ajoutées}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 doublon ignoré} other {# doublons ignorés}}", + "bulkPasteHint": "Collez une clé API par ligne. Les lignes vides sont ignorées et les clés en double sont ignorées.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Ajoute l’en-tête bêta redact-thinking pour les services en amont compatibles avec CC qui nécessitent de masquer les flux de réflexion de Claude.", + "ccCompatibleRedactThinkingLabel": "Activer la version bêta de redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Ajoute `display: \"summarized\"` aux requêtes de réflexion compatibles avec CC afin que les modèles Claude pris en charge diffusent des deltas de réflexion visibles.", + "ccCompatibleSummarizeThinkingLabel": "Activer l’affichage résumé de la réflexion", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Utilise le niveau de service prioritaire pour les requêtes Codex lorsqu’il est disponible.", + "codexFastServiceTierLabel": "Niveau de service rapide de Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Espace réservé pour le nom de l’en-tête du service en amont compatible", + "compatUpstreamHeaderValuePlaceholder": "Espace réservé pour la valeur de l’en-tête du service en amont compatible", "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "configuredCount": "Nombre configuré", + "consoleApiKeyOracleHint": "Indication pour la clé API Oracle de la console", + "consoleApiKeyOracleLabel": "Clé API Oracle de la console", + "consoleApiKeyOraclePlaceholder": "Espace réservé pour la clé API Oracle de la console", "newApiUserIdLabel": "ID utilisateur New-API", "newApiUserIdPlaceholder": "ex. 12345", "newApiUserIdHint": "Valeur de l'en-tête New-Api-User d'AgentRouter, utilisée avec la clé API de la console pour récupérer le solde du quota.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Activer la détection de solde pour les nœuds compatibles avec New-API / One-API / Sub2API aggregator", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Indication pour l’agent utilisateur personnalisé", + "customUserAgentLabel": "Agent utilisateur personnalisé", + "databricksBaseUrlHint": "Indication pour l’URL de base de Databricks", + "defaultThinkingStrengthHint": "Utilisé lorsqu’une requête ne précise pas l’intensité du raisonnement.", + "defaultThinkingStrengthLabel": "Intensité de réflexion par défaut", + "deleteAllExtraApiKeys": "Tout supprimer", + "excludedModelsHint": "Indication pour les modèles exclus", + "excludedModelsLabel": "Modèles exclus", + "excludedModelsPlaceholder": "Espace réservé pour les modèles exclus", + "expirationBannerExpired": "Bannière d’expiration — Expiré", + "expirationBannerExpiredDesc": "Description de la bannière d’expiration — Expiré", + "expirationBannerExpiringSoon": "Bannière d’expiration : expire bientôt", + "expirationBannerExpiringSoonDesc": "Description de la bannière d’expiration imminente", + "extraApiKeyMasked": "Clé {index} : {prefix}••••{suffix}", + "extraApiKeysHint": "Indication sur les clés API supplémentaires", + "extraApiKeysLabel": "Clés API supplémentaires", + "apiKeyHealthLabel": "État des clés API", + "apiKeyStatusActive": "Actif", + "apiKeyStatusWarning": "Avertissement ({count} échecs)", + "apiKeyStatusInvalid": "Invalide", + "primaryKey": "Clé principale", + "apiKeyInvalidAlert": "{count} clé(s) API marquée(s) comme invalide(s) en raison d’échecs d’authentification dans les connexions suivantes : {connections}. Elles seront ignorées lors de la rotation. Cliquez pour les examiner.", + "apiKeyInvalidAlertTitle": "Alerte sur l’état des clés API", + "apiKeyWarningAlert": "{count} clé(s) API en état d’avertissement en raison d’un taux d’échec élevé dans les connexions suivantes : {connections}. Examinez-les afin d’éviter tout problème de rotation.", + "apiKeyWarningAlertTitle": "Avertissement concernant les clés API", + "googlePseInfo": "Informations sur Google PSE", "antigravityProjectIdHint": "Remplacement facultatif pour les requêtes Antigravity Cloud Code. Laissez vide pour utiliser le projet découvert lors de Google OAuth.", "antigravityClientProfileLabel": "Profil client", "antigravityClientProfileHint": "Choisissez l'identité de client Antigravity qu'OmniRoute présente à l'API.", @@ -5865,18 +5868,18 @@ "tierFast": "Rapide", "antigravityProjectIdLabel": "ID du projet Google Cloud", "antigravityProjectIdPlaceholder": "mon-id-projet-gcp", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Espace réservé du cookie Web de Grok", + "herokuBaseUrlHint": "Indication sur l’URL de base de Heroku", + "hideEmail": "Masquer l’adresse e-mail", + "imageProviders": "Fournisseurs d’images", "videoProviders": "Génération vidéo", "embeddingRerankProviders": "Intégrations et classement", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Images", + "llmProviders": "Fournisseurs de LLM", + "localProviderApiKeyOptionalHint": "Indication sur la clé API facultative du fournisseur local", + "localProviderBaseUrlHint": "Indication sur l’URL de base du fournisseur local", + "localProviders": "Fournisseurs locaux", + "maxConcurrentWholeNumberError": "La valeur maximale d’accès concurrents doit être un nombre entier", "m365TierLabel": "Niveau Copilot", "m365TierHint": "Choisissez la surface Microsoft 365 Copilot que cette connexion utilise. Individuel est le BizChat grand public par défaut ; Éducation et Entreprise (travail) optent pour les surfaces de leur tenant.", "m365TierIndividualOption": "Individuel (par défaut)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Économique", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Épingler ce fournisseur à un niveau de routage au lieu de laisser OmniRoute le déduire de la tarification du modèle.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Indication sur le cookie Web de Muse Spark", + "museSparkWebCookiePlaceholder": "Espace réservé du cookie Web de Muse Spark", + "oauth": "OAuth", + "openCliTools": "Ouvrir les outils CLI", + "openSettings": "Ouvrir les paramètres", + "openaiResponsesStoreDescription": "Autoriser les requêtes compatibles avec l’API Responses à conserver l’état de réponse stocké.", + "openaiResponsesStoreLabel": "Stockage des réponses OpenAI", + "perplexitySearchSharedKeyInfo": "Informations sur la clé partagée de Perplexity Search", + "perplexityWebCookieHint": "Indication sur le cookie Web de Perplexity", + "perplexityWebCookiePlaceholder": "Espace réservé du cookie Web de Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Surcharges des limites de débit", "rateLimitOverridesMaxConcurrentHint": "Surcharge des requêtes simultanées max pour cette connexion. Remplace la limite au niveau du compte.", "rateLimitOverridesMaxConcurrentLabel": "Nombre max de requêtes simultanées (limite de débit)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Durée maximale (ms) pendant laquelle une requête peut attendre un créneau de limitation du débit avant d’échouer. Remplace le paramètre global de résilience pour cette connexion uniquement.", + "rateLimitOverridesMaxWaitMsLabel": "Attente maximale dans la file (ms)", "rateLimitOverridesMinTimeHint": "Temps minimum (ms) entre les requêtes. Remplace le délai par défaut du limiteur de débit.", "rateLimitOverridesMinTimeLabel": "Intervalle min (ms)", "rateLimitOverridesRpdHint": "Nombre maximal de requêtes par jour pour cette connexion. Remplace la valeur par défaut du fournisseur.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Jetons/jour)", "rateLimitOverridesTpmHint": "Jetons max par minute pour cette connexion. Remplace la valeur par défaut du fournisseur.", "rateLimitOverridesTpmLabel": "TPM (Jetons/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Actualiser le jeton OAuth", + "regionHint": "Indication de région", + "regionLabel": "Région", + "removeThisKey": "Supprimer cette clé", + "routingTagsHint": "Indication pour les balises de routage", + "routingTagsLabel": "Balises de routage", + "routingTagsPlaceholder": "Saisissez les balises de routage", + "search": "Rechercher", + "searchEngineIdHint": "Indication pour l’identifiant du moteur de recherche", + "searchEngineIdLabel": "Identifiant du moteur de recherche", + "searchEngineIdRequired": "L’identifiant du moteur de recherche est requis", + "searchProvider": "Fournisseur de recherche", + "searchProviderDesc": "Description du fournisseur de recherche", "searchProviders": "Rechercher des fournisseurs...", "searchByModel": "Rechercher par modèle…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Fournisseurs de recherche", + "searxngBaseUrlHint": "Indication pour l’URL de base de Searxng", + "searxngInfo": "Informations sur Searxng", + "sessionCookieLabel": "Cookie de session", + "showEmail": "Afficher l’adresse e-mail", + "snowflakeBaseUrlHint": "Indication pour l’URL de base de Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Indication pour le groupe de balises", + "tagGroupLabel": "Groupe de balises", + "tagGroupPlaceholder": "Saisissez un groupe de balises", + "testModel": "Tester le modèle", + "testingModel": "Test du modèle", "modelTestQuotaTooltip": "Quota épuisée — se réinitialise demain ou nécessite un rechargement", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Expiré", + "tokenExpiredTitle": "Jeton expiré", + "tokenExpiresSoonTitle": "Le jeton expire bientôt", + "tokenShort": "Jeton", + "totalKeysRotating": "{count, plural, one {1 clé en rotation} other {# clés en rotation}}", + "unhideModel": "Afficher le modèle", + "upstreamProxyProviders": "Fournisseurs de proxy en amont", "validationModelIdHint": "Modèle utilisé pour vérifier la clé API. Laissez vide pour utiliser le premier modèle disponible du fournisseur.", "validationModelIdLabel": "Modèle de validation", "validationModelIdPlaceholder": "ex. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Collez le JSON de votre compte de service ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) ou un access_token OAuth", + "webCookieProviders": "Fournisseurs de cookies Web", + "weeklyShort": "Hebdomadaire", + "xiaomiMimoBaseUrlHint": "Indication pour l’URL de base de Xiaomi Mimo", "globalCodexServiceMode": "Mode de service Codex global", "connect": "Se connecter", "manualApiKey": "Clé API manuelle", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Détectez les identifiants de fournisseurs d'IA (OpenAI, Anthropic, Google, Mistral, xAI) stockés par Zed IDE dans le trousseau d'accès du système d'exploitation et importez-les en tant que connexions. Zed IDE doit être installé sur cette machine.", "zedImportButton": "Importer depuis Zed", "zedImportFailed": "Échec de l'importation depuis Zed", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Indication pour l’importation Zed", + "zedImportNetworkError": "Erreur réseau lors de l’importation Zed", + "zedImportNone": "Aucune importation Zed", "zedImportSuccess": "{credentials} identifiant(s) importé(s) depuis Zed pour {providers} fournisseur(s)", "zedImporting": "Importation…", "zedNoCredentials": "Aucun identifiant Zed trouvé dans le trousseau d'accès", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Proxy API à tarif réduit pour plus de 40 modèles, dont GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Obtenez votre clé API sur https://freeaiapikey.com/dashboard. URL de base : https://freeaiapikey.com/v1.", "freemodel-dev": "Obtenez 300 $ de crédits API gratuits sur https://freemodel.dev — aucune information de paiement requise. Point de terminaison compatible avec OpenAI. Modèles GPT-5.4 et GPT-5.5 disponibles.", "friendliai": "Offre gratuite pour l'inférence serverless — aucune carte de crédit requise", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Offre gratuite via Google AI Studio ; les quotas par modèle ne sont plus publiés (consultez la page des quotas dans AI Studio) — aucune carte bancaire requise.", "gigachat": "Connectez GigaChat (Sber) avec une clé API.", "gitlab": "Jeton d'accès personnel GitLab pour l'API publique Code Suggestions. Configurez une URL de base auto-hébergée si vous n'utilisez pas gitlab.com.", "gitlawb-gmi": "Obtenez votre clé API depuis le tableau de bord Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Connectez GLM Coding (Chine) avec une clé API.", "glmt": "Profil GLM prédéfini avec un budget de tokens plus élevé, mode pensée activé et délai d'attente plus long.", "getgoapi": "Connectez GoAPI avec une clé API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Forfait gratuit : plafonds par modèle (200 000 jetons/jour par modèle de chat ; consultez console.groq.com/docs/rate-limits pour les limites RPM/RPD) — aucun moyen de paiement enregistré.", "haiper": "Obtenez une clé API sur haiper.ai/haiper-api", "heroku": "Connectez Heroku AI avec une clé API.", "hcnsec": "Obtenir une clé API sur api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Créez une clé API sur https://app.requesty.ai, puis collez-la ici en tant que jeton Bearer. Point de terminaison compatible OpenAI sur https://router.requesty.ai/v1, avec un catalogue /v1/models en direct.", "runwayml": "La génération de vidéos Runway est basée sur des tâches. OmniRoute soumet des tâches text-to-video ou image-to-video, interroge /v1/tasks/[id] et normalise les sorties vidéo terminées dans la réponse de type OpenAI /v1/videos/generations.", "sambanova": "5 $ de crédits gratuits à l'inscription (validité de 30 jours), aucune carte de crédit requise", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Créez une clé API sur https://seekai.cc, puis collez-la ici comme jeton Bearer. URL de base compatible avec OpenAI : https://seekai.cc/v1.", "sap": "La découverte de modèles utilise /v2/lm/scenarios/foundation-models/models sur AI_API_URL. Les requêtes de chat utilisent deploymentUrl/chat/completions et nécessitent AI-Resource-Group.", "sarvam": "Sarvam AI est compatible avec OpenAI sur /v1. OmniRoute interroge /v1/models et achemine le trafic de chat vers /v1/chat/completions. Les modèles sont optimisés pour les langues indiennes.", "scaleway": "1M de tokens gratuits pour les nouveaux comptes — conforme UE/RGPD (Paris), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Connecter Claude Code avec le flux OAuth existant.", "cline": "Connecter Cline avec le flux OAuth existant.", "cursor": "Connecter Cursor IDE avec le flux OAuth existant.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Connectez Cursor avec une clé API utilisateur (crsr_...) depuis cursor.com/dashboard/api ; aucune session IDE nécessaire.", "github": "Connecter GitHub Copilot avec le flux OAuth existant.", "gitlab-duo": "Application OAuth avec les portées ai_features + read_user. Configurez GITLAB_DUO_OAUTH_CLIENT_ID et éventuellement GITLAB_DUO_OAUTH_CLIENT_SECRET sur cette instance OmniRoute.", "kilocode": "Connecter Kilo Code avec le flux OAuth existant.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Copiez les informations d'identification requises à partir du propre domaine du fournisseur. Pour les cookies, copiez uniquement la valeur d'en-tête Cookie et omettez Cookie :.", "webSessionGuideStep3Manual": "Chemin manuel : ouvrez les outils de développement du navigateur (F12 → Réseau), actualisez la page, ouvrez une requête authentifiée et copiez la valeur de l'en-tête Cookie depuis les en-têtes de requête — omettez le préfixe Cookie : .", "webSessionGuideStep4": "Collez-le ici et vérifiez la connexion. S'il cesse de fonctionner, reconnectez-vous et remplacez-le par une nouvelle valeur.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importer un fichier .har", + "harImportButtonBusy": "Importation…", + "harImportButtonHint": "Exportez-le depuis l’onglet Réseau des outils de développement après avoir envoyé au moins un message de chat.", + "harImportStatusValid": "Importé — valide pendant environ {minutes} min.", + "harImportStatusExpiringSoon": "Importé — encore valide pendant seulement environ {minutes} min.", + "harImportStatusExpired": "Importé, mais ce jeton a déjà expiré (il y a {minutes} min) — exportez un nouveau fichier HAR.", + "harImportStatusUnknownExpiry": "Importé. Impossible de lire sa date d’expiration.", + "harImportErrorNotJson": "Ce fichier n’est pas un JSON valide — s’agit-il vraiment d’une exportation .har ?", + "harImportErrorNoEntries": "Ce fichier HAR ne contient aucune entrée réseau enregistrée.", + "harImportErrorNoChathubUrl": "Aucune connexion au chat Copilot trouvée dans ce fichier HAR. Envoyez au moins un message de chat dans m365.cloud.microsoft avant de l’exporter.", + "harImportErrorUnparsableUrl": "Connexion au chat trouvée, mais impossible de lire son URL.", + "harImportErrorMissingFields": "Connexion au chat trouvée, mais le jeton était absent.", + "harImportErrorReadFailed": "Impossible de lire ce fichier.", + "harImportErrorUnknown": "Impossible d’extraire un identifiant de ce fichier HAR.", "webSessionSecurityHint": "Traitez-le comme un mot de passe : il peut accéder à votre compte Web connecté jusqu'à son expiration ou sa révocation.", "webNoAuthGuideTitle": "Aucun justificatif requis", "webNoAuthGuideBody": "{provider} n'a pas besoin de clé API ni de cookie. Enregistrez la connexion pour utiliser son point de terminaison Web gratuit.", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Mode de service Codex mis à jour", "codexServiceTierActive": "Le niveau de service Codex {tier} est actif", "codexTierFastLabel": "Rapide", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Flexible", "commandCodeApplyFailed": "Échec de apply Command Code auth", "commandCodeApplyingApproval": "Navigateur approuvé, application en cours…", "commandCodeApplyingKey": "Application de la clé approuvée par le navigateur…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Authentification Command Code expirée", "commandCodeConnected": "Command Code connecté", "commandCodeConnectionAdded": "Command Code connexions added", + "clearConnectionCooldown": "Effacer le délai d’attente", + "clearConnectionCooldownInProgress": "Effacement…", + "clearConnectionCooldownTitle": "Effacer le délai d’attente maintenant — à utiliser lorsque le quota a déjà été réinitialisé en amont", "commandCodeLinkExpired": "Lien Command Code expiré", "commandCodeOpeningStudio": "Ouverture de Command Code Studio…", "commandCodePopupBlocked": "Fenêtre contextuelle bloquée. Autorisez les fenêtres contextuelles, puis réessayez avec Command Code Connect.", "commandCodeStartFailed": "Échec de start Command Code auth", "connectionDeleted": "connexions deleted", "connectionFallback": "connexions", + "connectionCooldownCleared": "Délai d’attente effacé — la connexion a réintégré le routage", "coolingConnectionsDescription": "Ces connexions refroidissent après leur dernière requête. OmniRoute les ignorera jusqu'à l'expiration du minuteur — aucune désactivation manuelle requise.", "coolingConnectionsTitle": "Connexions actuellement en refroidissement ({count})", + "failedClearConnectionCooldown": "Échec de l’effacement du délai d’attente", "failedDeleteAlias": "Échec de delete alias", "failedDeleteConnection": "Échec de delete connexions", "failedDistributeProxies": "Échec de distribute proxies.", @@ -6466,16 +6474,11 @@ "providerDetailGlobalFlexActive": "Le niveau de service flex global de Codex est actif", "providerDetailGlobalPriorityActive": "Le niveau de service priority global de Codex est actif", "proxiesDistributed": "Distributed {assigned} proxy assignment(s) across {tagLabel}{total} connexions(s).", - "rerankEndpoint": "Rerank", + "rerankEndpoint": "Reclassement", "savedModelEndpointSettings": "Saved modèles endpoint paramètres", "searchByModelAria": "Rechercher un modèle", "selectSupportedEndpoint": "Sélectionnez au moins un endpoint pris en charge", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harnais / CLI" }, "settings": { "title": "Paramètres", @@ -6527,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "supprimer les paragraphes contenant : {items}", "routingSummarizeDropParagraphStartsWith": "supprimer les paragraphes commençant par : {items}", "routingSummarizeReplaceText": "remplacer \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → « {replacement} »", "routingSummarizeDropBlockContains": "supprimer les blocs contenant : {items}", "routingSummarizePrependSystemBlock": "ajouter le bloc au début : \"{text}\"", "routingSummarizeAppendSystemBlock": "ajouter le bloc à la fin : \"{text}\"", @@ -6554,22 +6557,22 @@ "systemPrompt": "Invite système", "thinkingBudget": "Penser le budget", "proxy": "Procuration", - "httpProxy": "HTTP Proxy", + "httpProxy": "Proxy HTTP", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Sections du proxy", + "requestBodyLimitTitle": "Limite du corps de la requête", + "requestBodyLimitDescription": "Taille maximale de la charge utile de l’API acceptée avant l’analyse du corps d’une requête. Les routes de téléversement dédiées conservent au moins leur limite intégrée de 100 Mo.", + "requestBodyLimitInputLabel": "Limite du corps de la requête en Mo", + "requestBodyLimitEmptyError": "Saisissez une limite en Mo", + "requestBodyLimitWholeNumberError": "Utilisez un nombre entier", + "requestBodyLimitMinimumError": "Le minimum est de {min} Mo", + "requestBodyLimitMaximumError": "Le maximum est de {max} Mo", + "requestBodyLimitLoadFailed": "Échec du chargement des paramètres de limite des requêtes", + "requestBodyLimitSaveSuccess": "Limite du corps de la requête enregistrée", + "requestBodyLimitSaveFailed": "Échec de l’enregistrement de la limite du corps de la requête", + "requestBodyLimitSaving": "Enregistrement...", + "requestBodyLimitSave": "Enregistrer", + "requestBodyLimitCurrent": "Valeur actuelle : {value}", "cacheConfigLoadFailed": "Échec du chargement des paramètres du cache", "cacheConfigSaveSuccess": "Paramètres du cache enregistrés", "cacheConfigSaveFailed": "Échec de l'enregistrement des paramètres du cache", @@ -6593,59 +6596,59 @@ "enablePassword": "Activer le mot de passe", "darkMode": "Mode sombre", "lightMode": "Mode lumière", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Mémoire", + "memoryDesc": "Mémoire conversationnelle persistante entre les sessions", + "memoryEnabled": "Activer la mémoire", + "memoryEnabledDesc": "Lorsque cette option est activée, OmniRoute injecte le contexte passé pertinent.", "memoryTokenCostWarning": "Attention : lorsque la mémoire est activée, OmniRoute injecte jusqu'à {tokens} tokens de contexte récupéré dans chaque requête de chat — cela augmente l'utilisation de tokens et le coût. Pour ignorer l'injection pour une requête spécifique, envoyez l'en-tête \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Nombre maximal de jetons", + "retentionDays": "Rétention", + "recent": "Récent", + "recentDesc": "Fenêtre chronologique", + "semantic": "Sémantique", + "semanticDesc": "Recherche vectorielle", + "hybrid": "Hybride", + "hybridDesc": "Récent + sémantique", + "skillsTitle": "Compétences", + "skillsDesc": "Outils pour les modèles", + "skillsEnabled": "Activer les compétences", + "skillsEnabledDesc": "Permet aux agents de déclencher des fonctions.", + "skillsComingSoon": "La place de marché des compétences sera bientôt disponible.", + "memorySkillsTitle": "Mémoire et compétences", + "memorySkillsDesc": "Contexte et fonctionnalités persistants", + "modelsDevTitle": "Base de données des modèles", + "modelsDevDesc": "Synchronisation automatique des tarifs, fonctionnalités et spécifications depuis models.dev", + "modelsDevEnabled": "Activer la synchronisation models.dev", + "modelsDevEnabledDesc": "Récupérez les tarifs, les fonctionnalités et les spécifications des modèles depuis la base de données open source models.dev", + "modelsDevInterval": "Intervalle de synchronisation", + "syncNow": "Synchroniser maintenant", + "syncing": "Synchronisation...", + "lastSync": "Dernière synchronisation", + "never": "Jamais", "justNow": "juste maintenant", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Statistiques de synchronisation", + "modelsDevStatsDesc": "Couverture actuelle des données de models.dev", "providers": "Fournisseurs", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modèles avec tarification", + "capabilities": "Fonctionnalités", + "lastSyncCount": "Nombre lors de la dernière synchronisation", + "lastSyncFull": "Dernière synchronisation complète", + "modelsDevInfo": "Fonctionnement", + "modelsDevInfoDesc": "models.dev est une base de données open source de spécifications de modèles d’IA, gérée par l’équipe SST/OpenCode. Elle fournit les tarifs, les fonctionnalités, les limites de contexte et les modalités de plus de 4 000 modèles provenant de plus de 100 fournisseurs.", + "modelsDevInfoResolution": "Ordre de résolution des tarifs (priorité la plus élevée en premier) :", + "modelsDevInfoOrder": "Remplacement par l’utilisateur → models.dev → LiteLLM → Valeur par défaut codée en dur", "systemTheme": "Thème système", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Activer le mode débogage", "logToolSourcesToggle": "Journaliser les sources des outils", "logToolSourcesDescription": "Émettre une ligne de journal de diagnostic par requête résumant le nombre d'outils et la répartition des sources MCP/hébergées/client.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Épingler les informations sur la page d’accueil", "homePinnedSectionsDesc": "Choisissez les sections à épingler en haut de la page d'accueil.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Limites de quota des fournisseurs", + "homeProviderQuotaLimitsDesc": "Épingler le panneau d’état des quotas des fournisseurs (avec le bouton Tout actualiser) en haut de la page d’accueil.", + "homeQuickStart": "Démarrage rapide", + "homeQuickStartDesc": "Afficher le panneau Démarrage rapide sur la page d’accueil.", + "homeProviderTopology": "Topologie des fournisseurs", + "homeProviderTopologyDesc": "Afficher la topologie des fournisseurs sur la page d’accueil.", "accountEmailVisibility": "Visibilité de l'e-mail du compte", "accountEmailVisibilityDesc": "Afficher les e-mails complets des comptes sur les écrans des fournisseurs, combos, journaux, quotas et du playground. Désactivez cette option pour les masquer par défaut.", "comboConfigMode": "Mode de configuration des combos", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Intervalle d'actualisation", "providerQuotaAutoRefreshIntervalDesc": "Fréquence d'actualisation de la vue des quotas, en secondes.", "seconds": "secondes", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Afficher les éléments de la barre latérale", "enableCache": "Activer le cache", "cacheTTL": "Durée de vie du cache", "maxCacheSize": "Taille maximale du cache", "clearCache": "Vider le cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Cache vidé avec succès", + "clearCacheFailed": "Échec du vidage du cache", "cacheHits": "Accès au cache", "cacheMisses": "Manques de cache", "hitRate": "Taux de réussite", "cacheEntries": "Entrées du cache", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Paramètres du cache", + "semanticCache": "Cache sémantique", + "maxEntries": "Nombre maximal d’entrées", + "ttlMinutes": "Durée de vie (minutes)", "promptCache": "Cache d'invite", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Stratégie", + "preserveClientCache": "Préserver le cache du client", + "enabled": "Activé", "loading": "Loading...", "saving": "Sauvegarde...", - "save": "Save", + "save": "Enregistrer", "circuitBreaker": "Disjoncteur", "retryPolicy": "Politique de nouvelle tentative", "maxRetries": "Nombre maximal de tentatives", @@ -6690,21 +6693,21 @@ "timeoutMs": "Délai d'expiration (ms)", "enableSystemPrompt": "Activer l'invite système", "systemPromptText": "Texte d'invite du système", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Désactiver automatiquement les comptes bannis", + "autoDisableDescription": "Marquer définitivement les connexions aux fournisseurs comme désactivées si elles renvoient des signaux spécifiques de bannissement définitif (par ex. HTTP 403 « verify your account »). Elles sont ainsi retirées de la rotation combinée.", + "autoDisableThreshold": "Seuil de bannissement", + "autoDisableThresholdDesc": "Nombre de signaux de bannissement consécutifs requis avant la désactivation définitive.", + "autoDisableBannedScope": "Appliquer la désactivation automatique à", + "autoDisableBannedScopeDesc": "Les accès par connexion (abonnements payants et comptes gratuits) peuvent être verrouillés par le service en amont si OmniRoute continue d’effectuer des tentatives après un bannissement. Les clés API prépayées payantes ne présentent pas ce risque : laissez-les dans le pool afin que la stratégie de remplissage prioritaire puisse utiliser la clé suivante.", + "autoDisableBannedScopeAll": "Toutes les connexions", + "autoDisableBannedScopeAllDesc": "Désactiver toute connexion qui renvoie un signal de bannissement définitif, y compris les clés API prépayées.", + "autoDisableBannedScopeSubscription": "Comptes avec connexion ou abonnement uniquement", + "autoDisableBannedScopeSubscriptionDesc": "Désactiver les accès OAuth, par cookie, par session et par connexion web (payants ou gratuits). Les clés API prépayées restent actives afin que le routage puisse basculer vers une autre connexion.", "customBannedSignals": "Mots-clés bannis", "customBannedSignalsDesc": "Mots-clés supplémentaires qui déclenchent la détection de bannissement permanent du compte. Les mots-clés intégrés s'appliquent toujours.", "customBannedSignalsPlaceholder": "ex. api key revoked", "noCustomBannedSignals": "Aucun mot-clé personnalisé. Seuls les mots-clés intégrés sont actifs.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Structure de résilience", "resilienceStructureDesc": "Cette page configure uniquement le comportement. L’état du disjoncteur actif est affiché sur la page Santé. Les nouvelles tentatives spécifiques aux combos et le contrôle des emplacements à tour de rôle restent sur les paramètres de combo.", "enableThinking": "Permettre la réflexion", "maxThinkingTokens": "Jetons de réflexion maximum", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Afficher les contrôles Tailscale Funnel sur la page Endpoint.", "showNgrokTunnel": "Tunnel de Ngrok", "showNgrokTunnelDesc": "Afficher les contrôles ngrok Tunnel sur la page Endpoint.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Masquer les éléments de la barre latérale", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", + "presetAll": "Tout", + "presetAllDesc": "Tout afficher", + "presetEssentials": "Essentiels", + "presetEssentialsDesc": "Parcours débutant — Les outils avancés restent accessibles via la recherche", "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetMinimalDesc": "Pages principales uniquement", + "presetDeveloper": "Développeur", + "presetDeveloperDesc": "Outils de développement et de proxy", + "presetAdmin": "Administration", + "presetAdminDesc": "Surveillance et audit", + "settingsSidebarTitle": "Personnalisation de la barre latérale", + "settingsSidebarDesc": "Choisissez les éléments à afficher dans la barre latérale. Avec Essentiels, les outils avancés restent accessibles via la recherche.", "hideHealthLogs": "Masquer les journaux de contrôle de santé", "hideHealthLogsDesc": "Lorsqu'il est activé, supprimez les messages [HealthCheck] dans la console du serveur", "themeAccent": "Couleur du thème", @@ -6780,19 +6783,19 @@ "themeOrange": "Orange", "themeCyan": "Cyan", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Personnalisez le nom et le logo de l’application", + "appName": "Nom de l’application", + "appNameDesc": "Nom affiché dans la barre latérale et l’onglet du navigateur", + "customLogo": "URL du logo personnalisé", + "customLogoDesc": "URL de l’image de votre logo personnalisé", + "uploadLogo": "Téléverser le logo", + "resetLogo": "Rétablir les valeurs par défaut", + "logoPreview": "Aperçu", + "customFavicon": "Favicon du navigateur", + "customFaviconDesc": "URL de votre favicon personnalisé (affiché dans l’onglet du navigateur)", + "uploadFavicon": "Téléverser le favicon", + "resetFavicon": "Réinitialiser le favicon", + "faviconPreview": "Aperçu du favicon", "logoFileTooLarge": "Le fichier de logo doit faire moins de 500 Ko", "faviconFileTooLarge": "Le fichier de favicon doit faire moins de 50 Ko", "invalidLogoFileType": "Type de fichier non valide. Veuillez téléverser un fichier PNG, JPG, SVG, GIF ou WebP.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Actualiser Interval", "ruleModeDescription": "Description du mode de règle" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", + "bulkHealthcheck": "Vérification groupée de l’état", + "bulkHealthcheckDesc": "Testez tous les proxys configurés avec une URL cible afin d’identifier ceux qui fonctionnent.", + "healthcheckTesting": "Test en cours...", + "healthcheckAll": "Vérifier l’état de tous les proxys", + "healthcheckFailed": "Échec de la vérification de l’état", + "healthcheckTestingAll": "Test de tous les proxys en parallèle...", "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "healthcheckWorking": "Opérationnel", + "healthcheckFailedLabel": "Échec", + "healthcheckStatus": "État", + "healthcheckProxyUrl": "URL du proxy", + "healthcheckLatency": "Latence", "proxyDocumentationScopeTitle": "Résolution de la portée du proxy", "proxyDocumentationScopeDescBefore": "OmniRoute résout le proxy sortant par ordre de priorité :", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "combinaison → compte → fournisseur → global", "proxyDocumentationScopeDescAfter": ". La portée la plus spécifique l'emporte.", "proxyDocumentationAddTitle": "Ajout d'un proxy personnalisé", "proxyDocumentationAddDescBefore": "Accédez à l'onglet", @@ -6984,7 +6987,7 @@ "passthroughDesc": "Aucun changement — le client contrôle le budget en pensant", "thinkingModePassthrough": "Passerelle", "thinkingModePassthroughDesc": "Laissez le raisonnement du client inchangé (effort, résumé, blocs de réflexion). Requis pour la pensée visible de Codex/Desktop. Par défaut.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Auto (supprimer)", "thinkingModeAutoDesc": "Supprimez tous les champs de réflexion/raisonnement client (raisonnement, effort_raisonnement, réflexion Claude, configuration_thinking_Gemini) et laissez le fournisseur inventer des valeurs par défaut. Peut masquer les panneaux de réflexion et interrompre les demandes de résumé client.", "thinkingModeCustom": "Personnalisé", "thinkingModeCustomDesc": "Écrasez chaque demande avec un budget de jetons de réflexion fixe que vous définissez ci-dessous.", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} fournisseur(s) bloqué(s) sur /models", "blockProviderTitle": "Bloquer {provider}", "unblockProviderTitle": "Débloquer {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Correspondance des empreintes CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} fournisseur(s) avec l’empreinte CLI active", + "enableFingerprintTitle": "Activer l’empreinte pour {provider}", + "disableFingerprintTitle": "Désactiver l’empreinte pour {provider}", "systemTransforms": "Pipeline de transformation de blocs système", "systemTransformsDesc": "Pipeline de transformations ordonné par fournisseur appliqué au corps de la demande avant le transfert. Prend en charge n’importe quel ID de fournisseur.", "systemTransformsAddProvider": "Ajouter un fournisseur", @@ -7067,17 +7070,17 @@ "costOptDesc": "Préférer le compte disponible le moins cher", "resetAware": "RR conscient de la réinitialisation", "resetAwareDesc": "Préférez les comptes avec un quota restant sain et des réinitialisations plus proches", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Pondéré par quota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Aléatoire strict", + "strictRandomDesc": "Mélange — utilise chaque compte une fois avant de remélanger", "stickyLimit": "Limite collante", "stickyLimitDesc": "Appels par compte avant de changer", "routingStrategyTitle": "Stratégie de routage", "routingStrategySubtitle": "Correspondre à 9router : round-robin des comptes, limites persistantes et rotation des combos", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Tourniquet", "accountRoundRobinDesc": "Parcourir les comptes pour répartir la charge", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Tourniquet par combinaison", "comboRoundRobinDesc": "Parcourir les cibles de combo au lieu de toujours commencer par la première", "comboStickyLimit": "Limite persistante de combo", "comboStickyLimitDesc": "Appels par cible de combo avant de basculer", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Remplacer la stratégie de compte globale pour ce fournisseur (parité 9router).", "providerRoutingStrategy": "Stratégie de compte", "providerRoutingInheritGlobal": "Hériter de la valeur par défaut globale", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Seuil de contrôle préalable du quota", + "quotaPreflightSubtitle": "Ignorer les comptes dont le quota est épuisé avant d’envoyer la requête en amont", + "quotaPreflightEnable": "Activer le contrôle préalable du quota", + "quotaPreflightEnableDesc": "Avant chaque requête, vérifiez le quota restant du compte (fenêtres de 5 h, hebdomadaires ou mensuelles). Les comptes dont le quota est inférieur ou égal au seuil sont ignorés sans appel en amont. Les seuils par fenêtre définis sur la page Quotas des fournisseurs sont toujours prioritaires sur la valeur par défaut définie ici.", + "quotaPreflightCutoff": "Seuil global (% restant min.)", + "quotaPreflightCutoffDesc": "Cesser d’utiliser un compte lorsque son quota restant atteint ce pourcentage ou passe en dessous, pour toute fenêtre sans seuil propre. Correspond aux barres de pourcentage restant sur la page Quotas des fournisseurs.", + "quotaPreflightWindowsHint": "Les fenêtres disposant de leur propre seuil par fenêtre ou par fournisseur (défini dans la fenêtre modale Seuil de la page Quotas des fournisseurs) ne sont pas affectées par cette valeur par défaut.", + "quotaPreflightLoadFailed": "Impossible de charger les paramètres de contrôle préalable du quota.", "modelAliases": "Alias de modèle", "modelAliasesTitle": "Alias de Modèles", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Remappez les noms de modèles à l’aide de correspondances exactes ou de motifs génériques.", "addCustomAlias": "Ajouter un Alias Personnalisé", "deprecatedModelId": "ID du modèle obsolète", "newModelId": "Nouvel ID de modèle", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Stratégie combinée", "priority": "Priorité", "weighted": "Pondéré", - "contextRelay": "Context Relay", + "contextRelay": "Relais de contexte", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Nombre maximal de tentatives", "retryDelayLabel": "Délai de nouvelle tentative (ms)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Concurrence / Modèle", "queueTimeout": "Délai d'expiration de la file d'attente (ms)", "queueDepth": "Profondeur de la file d'attente", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Seuil de transfert", + "contextRelayMaxMessages": "Nombre maximal de messages pour le résumé", + "contextRelaySummaryModel": "Modèle de résumé", + "contextRelayProviderNote": "Le relais de contexte génère actuellement des transferts pour les comptes Codex et utilise ces valeurs comme paramètres globaux par défaut pour les combinaisons nouvelles ou non configurées.", "providerProfiles": "Profils de fournisseurs", "providerProfilesDesc": "Paramètres de résilience séparés pour les fournisseurs OAuth (basés sur la session) et API Key (mesurés). Les fournisseurs OAuth ont des seuils plus stricts en raison de limites de débit plus basses.", "oauthProviders": "Fournisseurs OAuth", @@ -7299,7 +7302,7 @@ "daysAgo": "Il y a {count}j", "backupReasonManual": "manuel", "backupReasonPreRestore": "pré-restauration", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# connexion} other {# connexions}}", "noChangesSinceBackup": "Aucun changement depuis la dernière sauvegarde", "backupFailed": "La sauvegarde a échoué", "restoreFailed": "La restauration a échoué", @@ -7309,7 +7312,7 @@ "modelPricing": "Prix ​​du modèle", "modelPricingDesc": "Configurer les tarifs par modèle • Tous les tarifs en jetons $/1 M", "pricingCoverage": "Couverture", - "pricingAuth": "Auth", + "pricingAuth": "Authentification", "pricingSort": "Trier", "pricingAll": "Tout", "pricingAuthUnknown": "Inconnu", @@ -7329,7 +7332,7 @@ "configured": "configuré", "none": "Aucun", "modelOverrideValuePlaceholder": "Valeur numérique", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Valeurs en anglais séparées par des virgules, par ex. low, medium, high", "addKeyValue": "Ajouter une clé-valeur", "noModelOverrides": "Aucune surcharge configurée pour ce modèle.", "modelOverrideLoadFailed": "Échec du chargement des surcharges de modèle", @@ -7378,25 +7381,25 @@ "editPricing": "Modifier le prix", "viewFullDetails": "Afficher tous les détails", "themeCoral": "Corail", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Routage adaptatif selon le volume", + "adaptiveVolumeRoutingDesc": "Ajustez dynamiquement le nombre de connexions en fonction du volume de données et de la pression sur le débit.", + "lkgpToggleTitle": "Dernier fournisseur connu comme opérationnel (LKGP)", + "lkgpToggleDesc": "Lorsque cette option est activée, le routeur mémorise le dernier fournisseur ayant fourni une réponse valide et l’essaie en premier lors des requêtes suivantes.", "echoRequestedModelTitle": "Renvoyer le nom du modèle demandé dans les réponses", "echoRequestedModelDesc": "Lorsqu'il est activé, le champ `model` de la réponse renvoie l'alias ou le nom du combo demandé par le client au lieu du nom du modèle en amont. Corrige les clients stricts (par ex. Claude Desktop) qui rejettent une réponse dont le modèle ne correspond pas à la demande.", "webSearchRouteTitle": "Routage de la recherche web", "webSearchRouteDesc": "Lorsqu'une requête inclut un outil natif web_search, route l'intégralité de la requête vers ce modèle au lieu de celui par défaut — utile pour les fournisseurs qui n'implémentent pas l'outil serveur web_search d'Anthropic. Laisser vide pour désactiver.", "webSearchRoutePlaceholder": "Rechercher ou sélectionner un modèle…", "paidModelPatternWarning": "Ce motif ne correspond qu'aux modèles payants — activez les modèles payants ou ajustez le motif.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", + "clearLkgpCache": "Vider le cache LKGP", + "lkgpCacheCleared": "Cache LKGP vidé avec succès", + "lkgpCacheClearFailed": "Échec du vidage du cache LKGP", + "days": "Jours", + "lkgp": "Mode LKGP", + "lkgpDesc": "Dernier fournisseur fonctionnel (résilience prévisible)", "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "purgeExpiredLogs": "Purger les journaux expirés", + "purgeLogsFailed": "Échec de la purge des journaux", "logsDeleted": "{count, plural, =0 {Aucun journal expiré purgé} one {Purge de # journal expiré} other {Purge de # journaux expirés}}", "resetUsageData": "Réinitialiser les données d'utilisation", "resetUsageDataDesc": "Sélectionnez l'ancienneté des données d'utilisation, des journaux de requêtes et des données analytiques que vous souhaitez supprimer. La configuration des fournisseurs, les connexions, les clés API, les combos et les paramètres sont conservés. Cette action est irréversible.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Échec de la réinitialisation des données d'utilisation", "reset": "Réinitialiser", "resetting": "Réinitialisation...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Optimisé pour le contexte", + "contextOptDesc": "Achemine les requêtes en fonction des exigences de fenêtre de contexte et de la longueur de la conversation", + "cacheOpt": "Optimisé pour le cache", + "cacheOptDesc": "Conserve le même préfixe d’invite réutilisable sur le même compte fournisseur", + "priorityDesc": "Repli séquentiel : essaie d’abord le fournisseur 1, puis le fournisseur 2, et ainsi de suite", + "weightedDesc": "Répartit le trafic entre les fournisseurs selon des pondérations en pourcentage", + "modelRoutingTitle": "Règles de routage des modèles", + "modelRoutingDesc": "Achemine automatiquement les modèles vers des combinaisons spécifiques à l’aide de motifs glob", + "addRule": "Ajouter une règle", + "routeToCombo": "Acheminer vers la combinaison", + "selectCombo": "Sélectionner une combinaison...", + "priorityHint": "Une valeur plus élevée est vérifiée en premier. Utilisez 10 ou plus pour les motifs spécifiques.", + "patternHint": "Utilisez * pour une chaîne de caractères quelconque et ? pour un seul caractère. Insensible à la casse.", + "noRoutingRules": "Aucune règle de routage configurée. Par défaut, les requêtes utilisent la combinaison globale.", + "routingRuleHint": "Ajoutez une règle comme claude-opus* -> frontier-combo pour acheminer automatiquement les requêtes.", + "deleteRoutingRule": "Supprimer cette règle de routage de modèle ?", + "exactMatchMode": "Correspondance exacte", + "wildcardPatternMode": "Motif générique", + "exactMatchModeDesc": "Utilisez des alias exacts pour les identifiants de modèles obsolètes ou renommés.", + "wildcardPatternModeDesc": "Utilisez des alias génériques avec * et ? lorsqu’une famille de modèles doit être associée à une même cible.", + "noExactAliasesConfigured": "Aucun alias avec correspondance exacte n’est configuré.", + "wildcardRulesTitle": "Règles génériques", + "noWildcardAliasesConfigured": "Aucun alias générique n’est configuré.", + "overview": "Vue d’ensemble", + "unknownError": "Erreur inconnue", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Liste blanche", + "syncDisabled": "Synchronisation désactivée", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Synchronisation activée", + "blacklist": "Liste noire", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", + "syncedModels": "Modèles synchronisés", "budget": "Budget", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Échec de la réinitialisation des prix: {reason}", - "tab": "Tab", + "tab": "Onglet", "pricingSavedProvider": "Prix ​​enregistré pour {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Échec de l'enregistrement du prix: {reason}", "pricingResetProvider": "Réinitialisation des prix pour {provider}", - "nextSync": "Next Sync", + "nextSync": "Prochaine synchronisation", "pricingSyncFailedWithReason": "Échec de la synchronisation des prix: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Effacer les tarifs synchronisés", + "compressionTitle": "Compression des invites", + "compressionDesc": "Réduisez l’utilisation des jetons en compressant les invites avant de les envoyer aux fournisseurs", "compressionGuidanceFullGuideLink": "Guide complet de compression", "compressionGuidanceShow": "Détails", "compressionGuidanceHide": "Masquer les détails", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Réécrire l'historique de discussion éligible tout en préservant le code, les URL et l'intention.", "tokenSaverFineTunePrefix": "Ajuster finement chaque moteur sur", "tokenSaverFineTuneSuffix": "ou combiner les moteurs par requête sur", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Mode de compression", + "compressionModeOff": "Désactivé", + "compressionModeOffDesc": "Aucune compression appliquée", + "compressionModeLite": "Légère", + "compressionModeLiteDesc": "Réduction des espaces et des lignes vides", + "compressionModeStandard": "Standard (Homme des cavernes)", + "compressionModeStandardDesc": "Compression basée sur des règles avec plus de 30 modèles, préservant les blocs de code et les URLs", + "compressionModeAggressive": "Agressive", + "compressionModeAggressiveDesc": "Résumé + compression des résultats d’outils + vieillissement progressif pour des économies maximales", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Configuration de moteur agressive", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Nombre de messages récents conservés à chaque niveau vieillissant (plus élevé = plus conservé)", "compressionToolStrategies": "Stratégies de résultats des outils", "compressionToolStrategiesDesc": "Basculer les stratégies de compression pour différents types de résultats d'outils", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Paramètres généraux", + "compressionAutoTrigger": "Seuil de déclenchement automatique", + "compressionCacheTTL": "Durée de vie du cache", + "compressionPreserveSystem": "Préserver l’invite système", "compressionPreserveSystemAlways": "Toujours", "compressionPreserveSystemWhenNoCache": "En l'absence de cache", "compressionPreserveSystemNever": "Jamais", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Enregistré", "compressionExclusionsCount": "{count, plural, one {# exclusion configurée} other {# exclusions configurées}}", "compressionExclusionsEmpty": "Aucune exclusion configurée : chaque modèle ou point de terminaison peut être compressé (comportement par défaut).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Configuration du moteur Caveman", + "compressionCavemanConfigDesc": "Ajustez précisément le moteur de compression basé sur des règles", "compressionCavemanPanelHint": "Son activation/désactivation et son niveau sont définis dans le panneau :", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", + "compressionRoles": "Compresser les rôles des messages", + "compressionRoleUser": "Utilisateur", "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoleSystem": "Système", + "compressionMinLength": "Longueur minimale du message", + "compressionSkipRules": "Ignorer les règles de compression", + "compressionSkipRulesDesc": "Cliquez sur les règles à ignorer pendant la compression", + "compressionPreservePatterns": "Modèles à préserver", + "compressionPreservePatternsDesc": "Expressions régulières qui ne sont jamais compressées (une par ligne)", + "compressionLogTitle": "Journal de compression", + "compressionLogEmpty": "Aucune requête compressée pour le moment. Les statistiques de compression apparaîtront ici lorsque des requêtes seront traitées avec la compression activée.", "minutes": "minutes", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Filtrage des résultats d’outils tenant compte des commandes", + "compressionModeCodexResponses": "Résultats de l’outil Responses", + "compressionModeCodexResponsesDesc": "Compression prudente des sorties de shell, de correctifs, de recherche, de compilation et JSON admissibles", + "compressionModeStacked": "Empilé", + "compressionModeStackedDesc": "Filtrage des sorties d’outils RTK suivi de la compression des messages Caveman", + "qdrantTitle": "Qdrant (mémoire vectorielle)", + "qdrantDesc": "Facultatif. Indexe les mémoires sémantiques dans une base de données vectorielle externe pour accélérer leur récupération.", + "qdrantStatusActive": "Actif", + "qdrantStatusError": "Erreur", + "qdrantStatusDisabled": "Désactivé", + "qdrantEnable": "Activer Qdrant", + "qdrantEnableDesc": "Lorsque cette option est activée, la stratégie sémantique/hybride peut utiliser Qdrant pour récupérer des mémoires.", + "qdrantTesting": "Test en cours...", + "qdrantTestConnection": "Tester la connexion", + "qdrantSaved": "Configuration enregistrée", + "qdrantSaveError": "Échec de l’enregistrement de la configuration", + "qdrantHostHint": "Sans port. Exemple : 127.0.0.1 ou http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Valeur par défaut de Qdrant : 6333", + "qdrantCollectionHint": "Emplacement où les points de mémoire seront stockés.", + "qdrantEmbeddingModel": "Modèle d’embedding", + "qdrantHelpTitle": "Aide à la configuration rapide", + "qdrantHelpQuickTitle": "Configuration rapide (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Hôte : IP/URL de Qdrant, port : 6333, collection : omniroute_memory.", + "qdrantHelpStep2": "2. Si vous utilisez nvidia/llama-nemotron-embed-vl-1b-v2:free, définissez la dimension de la collection sur 2048.", + "qdrantHelpStep3": "3. Champ du modèle : openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Enregistrez, testez la connexion, puis testez la recherche.", + "qdrantEmbeddingQuickSelect": "Sélection rapide parmi les modèles détectés...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Format : provider/model. Les identifiants du fournisseur doivent être configurés.", + "qdrantApiKeyPlaceholderKeep": "(laissez vide pour conserver la clé actuelle)", + "qdrantApiKeyPlaceholderOptional": "(laissez vide si non utilisé)", + "qdrantSaveHint": "Conseil : modifiez l’hôte, le port, la collection ou le modèle, puis cliquez sur Enregistrer. La clé API est facultative.", + "qdrantSearchTestTitle": "Test de recherche", + "qdrantSearchTestDesc": "Génère un embedding et effectue une recherche dans Qdrant.", + "qdrantSearchPlaceholder": "Exemple : préférences de l’utilisateur, historique, etc.", + "qdrantNoResults": "Aucun résultat (ou Qdrant n’est pas configuré).", + "qdrantCleanupTitle": "Rétention et nettoyage", + "qdrantCleanupDesc": "Supprime les points expirés et anciens en fonction de", + "searching": "Recherche en cours...", + "cleaning": "Nettoyage en cours...", + "cleanNow": "Nettoyer maintenant", "optional": "Facultatif", "current": "Actuel", "remove": "Supprimer", @@ -7600,19 +7603,19 @@ "resilienceScope": "Portée :", "resilienceTrigger": "Déclencheur :", "resilienceEffect": "Effet :", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "File d’attente des requêtes et débit", + "resilienceAutoEnableApiKeyProviders": "Activer automatiquement pour les fournisseurs utilisant une clé API", + "resilienceRequestsPerMinute": "Requêtes par minute", + "resilienceMinTimeBetweenRequests": "Délai minimal entre les requêtes", + "resilienceConcurrentRequests": "Requêtes simultanées", + "resilienceConnectionScopeConcurrentRequests": "Requêtes simultanées par connexion/périmètre de quota", + "resilienceGlobalConcurrentRequests": "Requêtes simultanées globales vers les fournisseurs en amont (0 = désactivé)", "resilienceMaxQueueWaitTime": "Temps d'attente maximum dans la file d'attente", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Délai de récupération de base", + "resilienceUseUpstreamRetryHints": "Utiliser les indications de nouvelle tentative du fournisseur en amont", + "resilienceDefaultPerProvider": "Par défaut (par fournisseur)", + "resilienceAlwaysOn": "Toujours activé", + "resilienceAlwaysOff": "Toujours désactivé", "routingRemoveEntry": "Supprimer l'entrée", "routingNeedlesSubstrings": "Aiguilles (sous-chaînes correspondant)", "routingCaseSensitive": "Sensible à la casse", @@ -7669,7 +7672,7 @@ "routingAntigravitySignatureDesc": "Contrôler si OmniRoute réutilise uniquement les signatures de pensée Gemini stockées ou s'il accepte les signatures validées fournies par le client dans les flux d'appel d'outils compatibles Antigravity.", "routingAntigravitySignatureEnabledLabel": "Activé", "routingAntigravitySignatureEnabledDesc": "Comportement actuel. Ignorer les signatures fournies par le client et continuer à utiliser le flux OmniRoute stocké.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Contournement", "routingAntigravitySignatureBypassDesc": "Accepter les signatures fournies par le client après une validation légère et revenir à la signature stockée en cas d'invalidité.", "routingAntigravitySignatureBypassStrictLabel": "Bypass strict", "routingAntigravitySignatureBypassStrictDesc": "Exiger une validation protobuf complète avant d'accepter une signature fournie par le client.", @@ -7700,26 +7703,26 @@ "visionBridgePromptHint": "Envoyé au modèle de vision avant que la description extraite ne soit réinjectée dans la requête d'origine.", "visionBridgeTimeoutMs": "Délai d'expiration (ms)", "visionBridgeMaxImagesPerRequest": "Nombre maximum d'images par demande", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Nombre maximal d'étapes de temporisation", + "resilienceProviderBreakerTitle": "Disjoncteur par fournisseur", + "resilienceFailureThreshold": "Seuil d'échec", + "resilienceDegradationThreshold": "Seuil de dégradation", "resilienceResetTimeout": "Réinitialiser le délai d'attente", "resilienceFailureThresholdLabel": "Seuil de défaillance", "resilienceResetTimeoutLabel": "Réinitialiser le délai d'attente", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Délai de récupération de la connexion", "resilienceUseUpstreamRetryHintsLabel": "Utiliser les conseils de nouvelle tentative en amont", "resilienceUseUpstream429BreakerLabel": "Utiliser les indices 429 en amont (disjoncteur)", "resilienceMaxBackoffStepsLabel": "Étapes d'attente maximales", "resilienceYes": "Oui", "resilienceNo": "Non", - "resilienceDefault": "Default", + "resilienceDefault": "Par défaut", "storageDatabaseBackupRetention": "Conservation des sauvegardes de base de données", "storageDatabaseBackups": "Sauvegardes de la base de données", "storageBackupRetentionDescription": "Les sauvegardes SQLite automatiques sont stockées dans", "storageBackupRetentionHelp": "Configurer le nombre d'instantanés à conserver et éventuellement supprimer les sauvegardes plus anciennes qu'un nombre de jours choisi.", "storageBackupCount": "{count} sauvegardes", - "storageBackupMaximum": "Max {count}", + "storageBackupMaximum": "Maximum {count}", "storageBackupAgeRetention": "{count} j de rétention", "storageBackupAgeRetentionOff": "Rétention par âge désactivée", "storageBackupKeepLatest": "Conserver les dernières sauvegardes", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "JSON hérité importé avec succès !", "jsonImportFailed": "Échec de l'importation du JSON", "jsonImportError": "Erreur lors de l'importation du JSON", + "jsonImportAuthRequired": "Une authentification est requise pour importer une configuration JSON héritée. Veuillez vous connecter ou terminer d'abord la configuration.", + "databaseSettingsAuthRequiredTitle": "Authentification requise", + "databaseSettingsAuthRequiredBody": "Les paramètres de la base de données et l'importation JSON sont uniquement accessibles à un administrateur authentifié. Connectez-vous ou terminez la configuration pour les consulter et les modifier.", + "databaseSettingsAuthRequiredCta": "Se connecter", "storagePurgeData": "Purger les données", "storagePurgeDataDesc": "Supprimer immédiatement tous les enregistrements sans appliquer les vérifications de rétention. À utiliser avec prudence.", "storageRetentionCleanup": "Paramètres de rétention", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "mode : {mode}", "compressionAdaptiveOff": "Budget de contexte adaptatif : désactivé (déclenchement automatique hérité)", "compressionAdaptiveTarget": "Adaptatif ({mode}, politique : {policy}) — cible ≈ {target, number} jetons (pour une fenêtre de {contextLimit, number} jetons)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Budget de contexte adaptatif", + "compressionAdaptiveModeOff": "Désactivé (déclenchement automatique hérité)", + "compressionAdaptiveModeFloor": "Minimum (garantit toujours l'ajustement)", + "compressionAdaptiveModeReplace": "Remplacer le déclenchement automatique", + "compressionAdaptivePolicy": "Politique de budget", + "compressionAdaptivePolicyReserve": "Réserver la sortie", + "compressionAdaptivePolicyPercentage": "Pourcentage de la fenêtre", + "compressionAdaptivePolicyAbsolute": "Budget absolu de jetons", "compressionOutputStylesDescription": "Injecter des instructions de mise en forme des réponses sans réécrire la sortie du fournisseur. À combiner librement.", "mcpAccessibilityDescription": "Limite la portée des sorties d'outils MCP (magasin distinct).", "compressionStylesTileSummary": "{tokens, number} jetons économisés · {runs, plural, one {# exécution stylisée} other {# exécutions stylisées}}", @@ -7844,7 +7851,7 @@ "minimal": "Minimal", "standard": "Standard", "aggressive": "Agressif", - "lite": "Lite", + "lite": "Allégé", "full": "Complet", "ultra": "Ultra" }, @@ -7858,7 +7865,7 @@ "description": "Marqueurs de récupération adressés par le contenu." }, "lite": { - "label": "Lite", + "label": "Allégé", "description": "Nettoyage des espaces et du format." }, "rtk": { @@ -7866,8 +7873,8 @@ "description": "Filtrage de la sortie des commandes." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Sortie de l'outil Responses", + "description": "Compression prudente pour les sorties prises en charge de l'outil Responses." }, "headroom": { "label": "Marge de manœuvre", @@ -7878,7 +7885,7 @@ "description": "Score de phrase extractif par rapport à la dernière requête de l'utilisateur." }, "caveman": { - "label": "Caveman", + "label": "Homme des cavernes", "description": "Compression de prose basée sur des règles." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "Échelle YAGNI : le plus petit changement fonctionnel, pas d'abstractions non demandées." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Queue de cheval (développeur senior paresseux)", + "description": "Discipline de développeur senior paresseux : gravir l’échelle YAGNI, corriger la cause racine, produire le plus petit diff fonctionnel." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "J’ai un TDAH (priorité à l’action)", + "description": "Sortie axée sur l’action : commencer par l’action suivante, numéroter les étapes, fournir une seule prochaine étape concrète, sans préambule." }, "terse-cjk": { "label": "CJK concis (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI de secours", "cliproxyapiEnableFallback": "Activer le repli CLIProxyAPI", "cliproxyapiUrl": "URL CLIProxyAPI", + "headroomProxyTitle": "Proxy Headroom", + "headroomProxyDesc": "URL du proxy facultatif Headroom permettant d’économiser des jetons. Si ce champ est vide, HEADROOM_URL ou http://localhost:8787/ est utilisé.", + "headroomProxyUrl": "URL Headroom", + "headroomProxyUrlHint": "Les URL de boucle locale peuvent être démarrées depuis cette page. Les URL externes sont uniquement sondées.", + "headroomProxySave": "Enregistrer", + "headroomProxyStart": "Démarrer", + "headroomProxyStop": "Arrêter", + "headroomProxyExternalHint": "Cette URL n’est pas une adresse de boucle locale ; OmniRoute ne lancera donc pas la CLI locale.", "cliproxyapiStatus": "Statut CLIProxyAPI", "cliproxyapiNotDetected": "Non détecté", "cliproxyapiImportAuthTitle": "Importer des comptes depuis CLIProxyAPI", @@ -7943,11 +7958,11 @@ "payloadRuleOverrideTitle": "écraser", "payloadRuleOverrideDesc": "Force les valeurs sur la charge utile, en remplaçant tout ce qui est déjà présent à ce chemin.", "payloadRuleFilterTitle": "filtrer", - "payloadRuleFilterDesc": "Removes blocked params from the payload before the upstream request is sent.", + "payloadRuleFilterDesc": "Supprime les paramètres bloqués de la charge utile avant l’envoi de la requête au service en amont.", "payloadRuleDefaultRawTitle": "defaultRaw", - "payloadRuleDefaultRawDesc": "Like default, but string values are parsed as JSON first when possible. The legacy input alias default-raw is also accepted on save.", + "payloadRuleDefaultRawDesc": "Comme default, mais les valeurs de chaîne sont d’abord analysées comme du JSON lorsque c’est possible. L’ancien alias d’entrée default-raw est également accepté lors de l’enregistrement.", "payloadEditorTitle": "Éditeur", - "payloadEditorDesc": "Use the runtime schema shape: default, override, filter, defaultRaw. The API also accepts the legacy input key default-raw.", + "payloadEditorDesc": "Utilisez la structure du schéma d’exécution : default, override, filter, defaultRaw. L’API accepte également l’ancienne clé d’entrée default-raw.", "payloadEditorReady": "Prêt", "payloadResetInfo": "Éditeur réinitialisé au modèle neutre. Enregistrez pour l'appliquer.", "payloadSaveSuccess": "Règles de charge utile enregistrées et rechargées à chaud.", @@ -7980,28 +7995,28 @@ "responsesStateTitle": "État des réponses", "responsesStateDesc": "Contrôlez la manière dont OmniRoute transfère previous_response_id.", "responsesStateModeLabel": "Gestion de previous_response_id", - "responsesStateModeAuto": "Auto", + "responsesStateModeAuto": "Automatique", "responsesStateModeStrip": "Supprimer", "responsesStateModePreserve": "Conserver", "responsesStateHint": "Auto supprime previous_response_id à moins qu'une connexion n'active explicitement le stockage des réponses OpenAI. Supprimer est le choix le plus sûr pour les clients sans état tels que VS Code Custom Endpoint ; le contexte dépend alors de l'envoi de l'historique complet par le client.", "responsesStateSaveError": "Échec de la mise à jour du paramètre d'état des réponses", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Niveau rapide Codex", "codexFastTierDesc": "Injecter globalement service_tier=priority pour les requêtes OpenAI Codex.", "codexFastTierHint": "Lorsqu'activé, OmniRoute ajoute service_tier=priority aux requêtes Codex sortantes pour les connexions qui n'ont pas déjà défini un tier. Le tier priority nécessite une clé API OpenAI Enterprise ou le chemin Codex avec authentification ChatGPT ; les autres types de clés recevront une erreur liée au tier de la part d'OpenAI. Les paramètres par connexion sur la page du provider Codex prévalent.", "codexFastTierSaveError": "Échec de la mise à jour du paramètre Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Ping automatique du quota Codex", + "codexAutoPingDesc": "Activation par connexion : envoie une requête minime juste après la réinitialisation d’une fenêtre de session Codex afin qu’elle ne soit pas inactive lorsque vous en avez besoin.", + "codexAutoPingWarning": "Consomme une petite quantité du quota Codex réel à chaque ping. Désactivé par défaut — activez-le uniquement pour les connexions que vous utilisez activement.", + "codexAutoPingSaveError": "Échec de la mise à jour du paramètre de ping automatique Codex", + "codexAutoPingToggleAria": "Activer ou désactiver le ping automatique du quota Codex pour {connection}", "codexFastTierTierLabel": "Niveau de service", "codexFastTierTierPriority": "Priorité", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Flexible", "codexFastTierTierDefault": "Par défaut", "codexFastTierModelsLabel": "Modèles du niveau rapide", "codexFastTierModelsHint": "Seuls les modèles cochés reçoivent service_tier lorsque Fast Tier est activé.", "codexFastTierModelCheckbox": "Activer Fast Tier pour {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Mode rapide Claude", "claudeFastModeDesc": "Activer le Fast Mode Anthropic (speed:\"fast\") pour les requêtes Claude sélectionnées.", "claudeFastModeHint": "Anthropic ne prend pas officiellement en charge le Fast Mode pour les clients de type SDK. Lorsque activé, OmniRoute transmet un en-tête X-CPA-Force-Fast-Mode permettant à un CLIProxyAPI compatible de réécrire l'entrypoint. Seuls les modèles Opus listés sont autorisés par la vérification côté binaire d'Anthropic. L'abonnement, le plan Max et le solde de crédits Fast Mode restent appliqués côté serveur — Anthropic peut renvoyer out_of_credits même lorsque le toggle est activé.", "claudeFastModeModelsLabel": "Appliqué aux modèles ({count})", @@ -8202,24 +8217,24 @@ "modelLockoutMaxBackoffStepsDescription": "Nombre maximal d'étapes de backoff avant que la temporisation ne cesse d'augmenter. Le plafond Max Cooldown est atteint en premier dans la plupart des configurations, ce qui en fait une limite de sécurité lorsque Max Cooldown est augmenté.", "disableSessionStickiness": "Désactiver l'affinité de session", "disableSessionStickinessDesc": "Les combinaisons round-robin et aléatoires basculent vers une connexion différente à chaque requête au lieu d'associer toute une conversation à une seule connexion via le hachage du premier message. Laissez désactivé pour préserver les correspondances du cache de prompts pour les discussions multi-tours. Les remplacements par combinaison sont prioritaires.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Routage selon la localité du cache des invites", + "promptCacheAffinityDesc": "Privilégie le même compte de fournisseur pour les clés correspondantes du cache des invites, tout en préservant le basculement selon l’état de santé et le quota.", + "reasoningTokenBuffer": "Marge de jetons de raisonnement", + "reasoningTokenBufferDesc": "Autorise le routage combiné à ajouter une marge à max_tokens uniquement pour les modèles de raisonnement connus, lorsque la marge complète tient dans une limite de sortie connue.", + "zeroLatencyOptimizations": "Optimisations sans latence", + "zeroLatencyOptimizationsDesc": "Activez la mise en concurrence, les contournements prédictifs du TTFT et la compression proactive des requêtes de secours. Laissez cette option désactivée pour empêcher ces fonctionnalités de réduction de la latence de mettre les cibles en concurrence ou de compresser les requêtes de secours.", "credentialRedaction": "Masquage des identifiants", "credentialRedactionDesc": "Masquer les clés d'API, les jetons et les secrets du contexte envoyé aux fournisseurs et des réponses.", "enableCredentialRedaction": "Activer le masquage des identifiants", "enableCredentialRedactionDesc": "Masque les clés d'API, les jetons, les clés privées et les JWT des messages, des appels d'outils et des réponses.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Synchronisation automatique désactivée", + "pricingAutoSyncEnabled": "Synchronisation automatique activée", "modalityBridgeIntro": "Convertissez le contenu multimodal en texte avant qu’il n’atteigne les modèles limités au texte. Les ponts de vision, d’audio et de vidéo sont disponibles et configurables.", "modalityBridgeVisionTab": "Vision", "modalityBridgeAudioTab": "Audio", "modalityBridgeVideoTab": "Vidéo", "modalityBridgeSubTabsAria": "Sections du Pont de Modalité", - "modalityBridgeVisionTitle": "Vision Bridge", + "modalityBridgeVisionTitle": "Pont visuel", "modalityBridgeVisionDesc": "Décrivez les images avec un modèle de vision et continuez avec le modèle de texte choisi par l'utilisateur.", "modalityBridgeMode": "Mode", "modalityBridgeModeAuto": "Automatique (recommandé)", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Santé", "cliproxyapiPort": "Port", "qdrantHost": "Hôte", - "qdrantCollection": "Collection", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Collection" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", + "title": "Moteur RTK", + "description": "Compression sensible aux commandes pour la sortie des outils, les journaux du terminal et les résultats de compilation.", + "enabled": "Activé", + "intensity": "Intensité", + "intensityMinimal": "Minimale", "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "intensityAggressive": "Agressive", + "toolResults": "Résultats des outils", + "assistantMessages": "Messages de l’assistant", + "codeBlocks": "Blocs de code", "filterCatalog": "Filtrer le catalogue", "filterCatalogDesc": "Filtres de sortie disponibles par catégorie", "guidedConfig": "Configuration", "guidedConfigDesc": "Ajustez la façon dont RTK filtre la sortie de votre terminal", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Nombre maximal de lignes", + "maxChars": "Nombre maximal de caractères", "deduplicateThreshold": "Seuil de déduplication", "customFilters": "Filtres personnalisés", "detectedType": "Type détecté", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Échecs", "rawOutputAlways": "Toujours", "rawOutputMaxBytes": "Octets maximum de sortie brute", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Test des filtres", + "pasteOutput": "Collez la sortie de l’outil pour tester le filtrage...", "presetHigh": "Agressif", "presetLow": "Lumière", "presetMaxChars": "Caractères de sortie maximum", "presetMaxLines": "Lignes de sortie maximales", "presetMedium": "Norme", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Exécuter", + "result": "Résultat", + "previewEmpty": "Exécutez un exemple pour prévisualiser la sortie RTK.", + "detected": "Détecté", "masterSwitchOffAlert": "L'interrupteur principal de Token Saver est DÉSACTIVÉ — ces paramètres n'affecteront pas les requêtes tant que vous ne l'aurez pas activé depuis la page Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Jetons filtrés", + "filtersActive": "Filtres actifs", + "requests": "Requêtes", + "avgSavings": "Économies moyennes", "simpleMode": "Simple", "advancedMode": "Avancé", "searchFilters": "Filtres de recherche...", @@ -8481,7 +8488,7 @@ "savings": "Économies", "original": "Original", "compressed": "Compressé", - "diff": "Diff", + "diff": "Différence", "last7Days": "7 derniers jours", "noDataYet": "Aucune donnée pour le moment", "runs": "Exécutions", @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", + "title": "Combinaisons de compression", + "description": "Définissez la manière dont les moteurs sont combinés pour différents scénarios de routage.", + "createCombo": "Créer une combinaison de compression", + "editCombo": "Modifier", + "deleteCombo": "Supprimer", + "deleteConfirm": "Supprimer cette combinaison de compression ?", "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", + "addStep": "Ajouter une étape", + "removeStep": "Retirer", + "name": "Nom", "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "languagePacks": "Packs linguistiques", + "outputMode": "Mode de sortie", + "assignToRouting": "Attribuer aux combinaisons de routage", + "noAssignments": "Aucune combinaison de routage disponible", + "default": "Par défaut", + "setAsDefault": "Définir par défaut", + "save": "Enregistrer", + "cancel": "Annuler", + "enabled": "Activé", "loading": "Chargement…", "hubTitle": "Hub de compression", "hubDescription": "Choisissez le profil de compression exécuté globalement.", @@ -8661,34 +8668,34 @@ "contextEditingNote": "Actuellement disponible pour Claude (Anthropic) uniquement. Il s'agit d'un mode délégué : le fournisseur efface les anciens blocs d'utilisation d'outils côté serveur — nous ne réécrivons pas le message. Cela n'affecte pas les autres fournisseurs.", "namedCombos": "Combinaisons nommées", "namedCombosDescription": "Enregistrez différents pipelines et attribuez-les à des combinaisons de routage spécifiques.", + "activeProfileMasterSwitchOffWarning": "Le profil actif ci-dessous ne sera pas exécuté tant que l’interrupteur principal « Compression des prompts » ne sera pas activé.", + "activeProfileMasterSwitchOffCta": "L’activer dans les paramètres", "comboNamePlaceholder": "Nom de la combinaison", "descriptionPlaceholder": "Description", "nameRequired": "Saisissez un nom de combinaison avant d'enregistrer.", "pipelineRequired": "Ajoutez au moins une étape de pipeline avant d'enregistrer.", "saveComboFailed": "Échec de l'enregistrement de la combinaison (HTTP {status}).", "deleteNamedConfirm": "Supprimer la combinaison “{name}” ?", - "intensityLite": "Lite", + "intensityLite": "Léger", "intensityFull": "Complet", "intensityUltra": "Ultra", "active": "Actif", "languagePacksList": "Packs de langue : {packs}", "dragToReorder": "Faites glisser pour réorganiser l'étape", "engine": "Moteur", - "intensity": "Intensité", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensité" }, "compressionStudio": { "noRun": "Aucune exécution de compression disponible.", "liveDataHint": "Les données en direct arrivent via le canal de compression WebSocket.", "cockpitView": "Vue cockpit", - "canvas": "Canvas", + "canvas": "Canevas", "waterfall": "Cascade", "replayDone": "Replay terminé", "pauseReplay": "Mettre en pause le replay", "playReplay": "Lire le replay", - "pause": "Pause", - "replay": "Replay", + "pause": "Mettre en pause", + "replay": "Relancer", "resetReplay": "Réinitialiser le replay", "stepProgress": "étape {current}/{total}", "inlineView": "Intégré", @@ -8705,7 +8712,7 @@ "run": "Exécuter", "laneRejected": "rejeté : {reason}", "error": "erreur", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Échec de l’aperçu du pipeline combiné : {reason}", "combinedFlow": "Flux combiné", "eachLayer": "Chaque couche séparément", "diff": "Différence", @@ -8713,8 +8720,8 @@ "skipped": "ignorer", "input": "ENTRÉE", "output": "SORTIE", - "tokenCount": "{count, number} tokens", - "tokenShort": "tok", + "tokenCount": "{count, number} jetons", + "tokenShort": "jet.", "provider": "Fournisseur", "judgeModel": "Modèle juge", "judgeModelPlaceholder": "ex. claude-haiku", @@ -8736,7 +8743,7 @@ "encoderWinner": "vainqueur : {winner}", "encoder": "encodeur", "bytes": "octets", - "tokensCl100k": "tokens (cl100k)" + "tokensCl100k": "jetons (cl100k)" }, "omniglyph": { "preview": "Aperçu", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Activer le moteur", "enableDescription": "S'exécute en dernier dans la pile (après que RTK/Caveman a nettoyé le texte, OmniGlyph convertit le reste en images) et s'exécute également de manière autonome via le mode omniglyph. Il s'agit d'une version préliminaire qui reste désactivée par défaut jusqu'à ce que la validation de bout en bout soit terminée.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Profil de compression", + "profileDescription": "Le profil constitue un plafond, et non un plancher : un profil plus strict ne peut pas être assoupli par une substitution propre à une étape. Mesure effectuée sur cette base de code : avec le mode sécurisé pour le code ou équilibré, une session qui n’a pas encore accumulé d’historique ne compresse rien, car ces deux modes augmentent le seuil minimal de caractères et conservent tels quels le prompt système, les schémas d’outils et les résultats des outils.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agressif (par défaut)", + "description": "La politique mesurée par les reçus publiés. Images, prompt système, documentation des outils et historique dense." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Équilibré", + "description": "Conserve l’état actif dans son format natif et protège les 8 derniers tours ; réduit uniquement l’ancien historique clôturé." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Adapté au code", + "description": "Conserve l’autorité, les schémas d’outils et la sortie active des outils dans leur format natif, tout en protégeant les 12 derniers tours. Ne compresse rien tant que la session n’a pas accumulé d’historique." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Transmission directe", + "description": "Achemine sans transformation. Le moteur est ignoré et la requête est transférée sans modification." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Sélectionnez le profil de compression OmniGlyph", "saved": "Enregistré.", "saveFailed": "Impossible d'enregistrer.", "enableAria": "Activer le moteur OmniGlyph", @@ -8901,38 +8908,38 @@ "save": "Enregistrer" }, "contextCaveman": { - "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "title": "Moteur Caveman", + "description": "Compression des messages basée sur des règles, packs linguistiques, analyses et paramètres du mode de sortie.", "advancedConfig": "Configuration avancée", "advancedConfigDesc": "Affiner le comportement de compression", "aggressiveSettings": "Paramètres agressifs", "aggressiveSettingsDesc": "Compression maximale avec des compromis potentiels en matière de qualité", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Requêtes", + "tokensSaved": "Jetons économisés", + "savingsPercent": "Économies en %", + "avgLatency": "Latence moy.", + "languagePacks": "Packs linguistiques", + "languagePacksDesc": "Activez les règles de compression pour des langues spécifiques.", "labelAutoTrigger": "Compresser automatiquement lorsque le contexte dépasse", "labelCompressionRate": "Résistance à la compression", "labelMaxTokens": "Cibler les jetons par message", "labelMinLength": "Longueur minimale du message", "labelMinSavings": "Minimum de jetons à enregistrer", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Activé", + "autoDetect": "Détecter automatiquement la langue", + "rulesCount": "{count} règles", "inputCompressionTitle": "Compression d'entrée", "inputCompressionDesc": "Réécrire l'historique du chat avec une formulation plus courte. Réduit les jetons d'entrée d'environ 50 %.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Analyse de la compression", + "noAnalytics": "Aucune donnée d’analyse de la compression pour le moment.", "masterDisabledWarning": "Le commutateur principal de Token Saver est désactivé — ces paramètres n'affecteront pas les requêtes tant que vous ne l'activerez pas dans les Paramètres de compression ou que vous ne le modifierez pas ici.", "outputMode": "Mode de sortie", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Mode de sortie", "quickSettings": "Paramètres rapides", "quickSettingsDesc": "Paramètres de compression de base pour commencer", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Contournement automatique pour plus de clarté", + "bypassConditions": "Conditions de contournement", "bypassConditionsList": "sécurité, irréversible, clarification, sensible à l'ordre", "simpleMode": "Simple", "advancedMode": "Avancé", @@ -8944,9 +8951,9 @@ "ultraSettings": "Paramètres ultra", "ultraSettingsDesc": "Compression sémantique basée sur SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Répondez de manière concise. Préservez les termes techniques, le code, les erreurs, les URLs et les identifiants.", + "full": "Répondez de manière laconique et compacte. Préservez tout le contenu technique.", + "ultra": "Répondez de manière ultra-laconique avec des abréviations techniques courantes. Préservez les symboles exacts." } }, "translator": { @@ -9170,7 +9177,7 @@ "comboRouted": "Combo routé", "uniqueEndpoints": "Points de terminaison uniques", "routeDetails": "Détails de l'itinéraire", - "comboBadge": "Combo", + "comboBadge": "Combiné", "routeEndpointLabel": "Point de terminaison", "routeConnectionLabel": "Connexion", "scenarioVision": "Vision (compréhension de l'image)", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Collez une requête JSON ; le format est détecté automatiquement.", "advancedPipelineTitle": "Pipeline intermédiaire OpenAI", "advancedPipelineSubtitle": "Visualiser chaque étape de traduction (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Transformateur de flux (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Convertit les SSE Chat Completions en API Responses.", "advancedTestBenchTitle": "Banc d'essai (8 scénarios)", "advancedTestBenchSubtitle": "Exécute tous les scénarios et signale le succès/échec + le % de compatibilité.", @@ -9250,7 +9257,7 @@ "compressionPreviewButton": "Aperçu de la compression", "compressionPreviewing": "Aperçu en cours…", "compressionPreviewFailed": "Échec de l'aperçu de la compression", - "tokens": "tokens", + "tokens": "jetons", "pauseAutoRefresh": "Suspendre l'actualisation automatique", "resumeAutoRefresh": "Reprendre l'actualisation automatique", "live": "En direct", @@ -9267,7 +9274,7 @@ "grokAutoTopUpDisabled": "Désactivé", "grokAutoTopUpAt": "à", "grokAutoTopUpAdd": "ajouter", - "grokAutoTopUpMax": "max", + "grokAutoTopUpMax": "max.", "grokAutoTopUpMonth": "mois", "grokAdditionalCredits": "Crédits supplémentaires", "kiloAccountBalance": "Solde du compte", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Restant", "kiloPassRenews": "Se renouvelle dans {count} jours", "kiloPassUsageLabel": "Utilisation ce mois-ci", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Crédits d’utilisation supplémentaires", + "kimiExtraUsage": "Utilisation supplémentaire", + "kimiExtraUsageEnabled": "Activé", + "kimiExtraUsageDisabled": "Désactivé", + "kimiExtraUsageFrozen": "Gelé", + "kimiExtraUsageUnavailable": "Indisponible", + "kimiMonthlyUsed": "Utilisé ce mois-ci", + "kimiMonthlyLimit": "Limite mensuelle", + "kimiMonthlyLimitUnlimited": "Illimité", + "kimiAdditionalCredits": "Crédits supplémentaires", "loggerTab": "Enregistreur", "proxyTab": "Procuration", "budgetManagement": "Gestion budgétaire", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Disjoncteurs", "lockedIPs": "IP verrouillées", "lockoutsAutoRefreshHint": "Verrouillage de la limite de débit par modèle • Actualisation automatique toutes les 10 s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# verrouillé} other {# verrouillés}}", "timeLeft": "{time} restant", "howItWorks": "Comment ça marche", "howItWorksSubtitle": "Découvrez comment les évaluations valident vos réponses LLM", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "Les réponses sont comparées aux critères attendus. Voir réussite/échec pour chaque cas avec des mesures de latence et des commentaires détaillés.", "evalsStrategyContainsLabel": "Contient", "evalsStrategyExactLabel": "Correspondance exacte", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Expression régulière", "evalsStrategyCustomLabel": "Logique personnalisée", "evalsStrategyContainsDescription": "Vérifie si la sortie du LLM contient la sous-chaîne attendue.", "evalsStrategyExactDescription": "Vérifie si la sortie du LLM correspond exactement à la valeur attendue.", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Modèles en test", "searchSuitesPlaceholder": "Rechercher des suites...", "passSuffix": "passer", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# cas} other {# cas}}", "runEval": "Exécuter l'évaluation", "runAllSuites": "Exécuter tout", "runAllRunning": "Exécuter tout...", "runAllProgress": "Exécution de {current}/{total} : {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# suite échouée} other {# suites échouées}}", "runAllCompleted": "Exécution des suites {suites} — {passed} réussi, {failed} échoué", "runAllCompletedWithFailures": "A exécuté {completed} suites ; {failedSuites} n'a pas réussi à se terminer", "runningProgress": "Exécution de {current}/{total}...", @@ -9423,7 +9430,7 @@ "providerLimits": "Limites du fournisseur", "noProviders": "Aucun fournisseur connecté", "connectProvidersForQuota": "Connectez-vous aux fournisseurs avec OAuth pour suivre les limites de quota et l'utilisation de vos API.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# compte} other {# comptes}}", "filteredFromCount": "(filtré à partir de {count})", "autoRefresh": "Actualisation automatique", "refreshAll": "Actualiser tout", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Échec de la mise à jour de la visibilité du quota", "account": "Compte", "modelQuotas": "Quotas de modèles", - "lastUsed": "Last Refreshed", + "lastUsed": "Dernière actualisation", "actions": "Actions", "refreshQuota": "Actualiser le quota", "today": "Aujourd'hui", @@ -9452,9 +9459,9 @@ "cardExpand": "Développer", "cardCollapse": "Réduire", "moreQuotas": "+{count} de plus", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Non groupé", + "viewFlat": "À plat", + "viewByEnvironment": "Par environnement", "noQuotaDataAvailable": "Aucune donnée de quota disponible", "noAccountsForTierFilter": "Aucun compte trouvé pour le filtre de niveau", "tierAll": "Tout", @@ -9465,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "Gratuit", - "tierLite": "Lite", + "tierLite": "Léger", "tierUnknown": "Inconnu", "statTotal": "Total", "statCritical": "Critique", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Utiliser le crédit", "resetCreditRedeemed": "Réinitialisation effectuée", "resetCreditRedeemFailed": "Échec de l'utilisation du crédit de réinitialisation", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Échec de l’enregistrement de la suite", "clone": "Cloner", "exportSuite": "Exporter", "importSuite": "Importer", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Suite d'évaluation JSON non valide", "suiteBuilderCloneSuffix": "copie", "suiteBuilderImportedSuite": "Suite importée", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", + "scorecardTitle": "Tableau de bord", + "evalApiKey": "Clé API", + "scorecardPassRate": "Taux de réussite", + "targetTypeModel": "Modèle", + "actualOutputLabel": "Sortie réelle", + "evalTargetHint": "Sélectionnez un modèle ou une combinaison à évaluer.", + "suiteBuilderDeleted": "Suite supprimée avec succès", + "suiteBuilderCaseCardHint": "Définissez le prompt d’entrée et les critères de sortie attendus.", + "nextResetUtc": "Prochaine réinitialisation (UTC)", + "scorecardHint": "Taux de réussite agrégés pour toutes les suites d’évaluation.", + "suiteLatestRunsHint": "Exécutions d’évaluation les plus récentes pour cette suite.", + "saving": "Enregistrement", + "suiteBuilderCaseModelLabel": "Modèle (facultatif)", + "evalControlsTitle": "Contrôles d’évaluation", + "suiteBuilderEditTitle": "Modifier la suite d’évaluation", + "suiteBuilderCaseStrategyLabel": "Stratégie de validation", + "notifySelectDifferentCompareTarget": "Veuillez sélectionner une autre cible pour la comparaison", + "recentRunsHint": "Affichage des exécutions d’évaluation les plus récentes. Cliquez sur une exécution pour voir les résultats détaillés.", + "evalCompareHint": "Comparez éventuellement les résultats à ceux d’une seconde cible.", + "suiteBuilderCaseInvalid": "Ce cas contient des erreurs de validation. Veuillez les corriger avant d’enregistrer.", + "historyEmpty": "Aucun historique d’évaluation pour le moment", + "suiteBuilderUpdated": "Suite mise à jour avec succès", + "resetInterval": "Réinitialiser l’intervalle", + "suiteBuilderCreateTitle": "Créer une suite d’évaluation", + "activePeriodSpend": "Dépenses de la période active", + "evalApiKeyHint": "Sélectionnez la clé API à utiliser pour les requêtes d’évaluation.", + "evalCompareOptional": "Comparer (facultatif)", + "suiteBuilderDeleteFailed": "Échec de la suppression de la suite", + "suiteBuilderCaseSystemPromptPlaceholder": "Instructions système facultatives...", + "scorecardCases": "Cas", + "runCompletedWithScore": "Évaluation terminée — taux de réussite de {score} %", + "suiteBuilderCustomBadge": "Personnalisé", + "targetSuiteDefaults": "Valeurs par défaut de la suite", + "suiteBuilderDeleteConfirm": "Voulez-vous vraiment supprimer cette suite ? Cette action est irréversible.", + "suiteBuilderNameLabel": "Nom de la suite", "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "evalCompareTarget": "Cible de comparaison", + "suiteBuilderCaseModelPlaceholder": "p. ex. gpt-4o-mini", + "evalControlsHint": "Configurez votre cible d’évaluation et votre clé API, puis exécutez des suites pour valider la qualité du modèle.", + "recentRunsTitle": "Exécutions récentes", + "suiteBuilderCaseSystemPromptLabel": "Invite système", + "suiteBuilderCaseExpectedPlaceholder": "p. ex. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "par ex. définitivement Fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Collez la réponse exacte attendue", "suiteBuilderCaseExpectedPlaceholderRegex": "par ex. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Utilisez une expression régulière JavaScript sans envelopper les barres obliques.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "p. ex. Suite de qualité du code", + "suiteBuilderAddCase": "Ajouter un cas", + "cancel": "Annuler", + "evalTarget": "Cible", + "suiteBuilderCaseNameLabel": "Nom du cas", + "weeklyLimitUsd": "Limite hebdomadaire (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "p. ex. Écrire une fonction fibonacci en Python", + "suiteBuilderNameRequired": "Le nom de la suite est requis", + "suiteBuilderCaseUserPromptLabel": "Invite utilisateur", + "daily": "Quotidien", + "resultErrorLabel": "Erreur", + "suiteBuilderBuiltInBadge": "Intégré", + "suiteBuilderCaseCardTitle": "Cas de test", "suiteBuilderDuplicateCase": "Dupliquer", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", + "weeklyLimitPlaceholder": "p. ex. 50.00", + "suiteBuilderCaseTagsHint": "Étiquettes séparées par des virgules pour organiser les cas de test.", + "notifyEvalRunFailedWithReason": "Échec de l’évaluation : {reason}", + "weekly": "Hebdomadaire", + "runEvalRunning": "Évaluation en cours...", + "delete": "Supprimer", + "resetTimeUtc": "Heure de réinitialisation (UTC)", + "evalApiKeyAuto": "Automatique (utiliser la valeur par défaut)", + "suiteBuilderDescriptionPlaceholder": "Description facultative de ce que cette suite teste...", + "targetComparisonTitle": "Comparaison cible", + "save": "Enregistrer", + "suiteBuilderCreated": "Suite créée avec succès", + "suiteLatestRuns": "Dernières exécutions", + "suiteBuilderCaseExpectedLabel": "Valeur attendue", + "historyLatency": "Latence", + "suiteBuilderCaseTagsPlaceholder": "p. ex. codage, python", + "targetTypeCombo": "Combiné", + "scorecardPassed": "Réussi", + "suiteBuilderCaseTagsLabel": "Étiquettes", + "suiteBuilderNewSuite": "Nouvelle suite", + "notifyEvalLoadFailed": "Échec du chargement des données d’évaluation", + "notConfigured": "Non configuré", + "suiteBuilderCaseNamePlaceholder": "p. ex. test de Fibonacci en Python", + "intervalLabel": "Intervalle", + "suiteBuilderCreateAction": "Créer la suite", + "suiteBuilderCasesHint": "Chaque cas envoie une invite et valide la réponse.", + "suiteBuilderUpdatedAt": "Mis à jour", + "errorBadge": "Erreur", + "suiteBuilderCasesTitle": "Cas de test", + "edit": "Modifier", + "monthly": "Mensuel", + "suiteBuilderCasesRequired": "Au moins un cas de test est requis", + "weeklyLimitSummary": "Résumé de la limite budgétaire hebdomadaire", "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "targetComparisonHint": "Comparaison côte à côte des résultats d’évaluation entre les cibles.", + "compareCompletedWithScore": "Comparaison terminée — taux de réussite de {score} %", + "staleQuotaTooltip": "Échec de la dernière actualisation — affichage des données en cache", "quotaThresholdLabel": "Min restant", "quotaCutoffsColumnHelp": "Arrêtez les demandes lorsque le quota restant tombe à ce pourcentage ou en dessous.", "quotaCutoffsButtonDefault": "Par défaut", @@ -9745,7 +9752,7 @@ "proxy": "Procuration", "level": "Niveau", "directNative": "Direct (natif)", - "combo": "Combo", + "combo": "Combinaison", "inputTokens": "Moi :", "outputTokens": "O :" }, @@ -9863,19 +9870,19 @@ "backToLogin": "Retour à la connexion", "forgotPassword": "Mot de passe oublié ?", "continueWithOidc": "Continuer avec OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Mot de passe par défaut : CHANGEME (sauf si INITIAL_PASSWORD a été défini)", "Authorization": "Autorisation", "Content-Disposition": "Disposition du contenu", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "En attente de l’autorisation...", + "waitingForGoogleAuthorization": "En attente de l’autorisation Google...", + "waitingForOpenAIAuthorization": "En attente de l’autorisation OpenAI...", + "waitingForAntigravityAuthorization": "En attente de l’autorisation Antigravity...", + "waitingForQoderAuthorization": "En attente de l’autorisation Qoder...", + "exchangingCodeForTokens": "Échange du code contre des jetons...", + "nodeIncompatibleTitle": "Version de Node.js incompatible", + "nodeIncompatibleDesc": "Vous utilisez Node.js {version}, qui ne respecte pas la politique d’OmniRoute relative aux environnements d’exécution sécurisés pris en charge. Utilisez une version corrigée de Node.js 20.x ou 22.x LTS.", + "nodeIncompatibleFixLabel": "Solution : installez une version corrigée de Node.js 22 LTS", + "nodeIncompatibleHint": "OmniRoute nécessite Node.js 22.22.2+ (22.x LTS) ou 24.0.0+ (24.x LTS). Node 24 LTS est recommandé.", "resetViaAppDataTitle": "Réinitialiser via les données de l’application", "resetViaAppDataDescription": "Supprimez le fichier de paramètres du répertoire de données de l’application pour réinitialiser votre mot de passe :", "quitDesktopApp": "Quittez complètement l’application de bureau OmniRoute", @@ -10033,8 +10040,8 @@ "clientCompatibility": "Compatibilité client", "protocolsToc": "Protocoles", "apiReference": "Référence API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Référence de l’API de gestion", + "managementApiDescription": "Points de terminaison d’automatisation pour le registre des proxys, les attributions de portée et la migration des proxys hérités.", "method": "Méthode", "path": "Chemin", "notes": "Remarques", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Installez OmniRoute en tant qu'application Web progressive sur les navigateurs Android, iOS et de bureau.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Exécutez OmniRoute sans interface graphique sur Android via Termux. Accédez au tableau de bord depuis le navigateur de votre appareil mobile.", "featureRoutingTitle": "Routage multi-fournisseurs", "featureRoutingText": "Acheminez les requêtes vers plus de 30 fournisseurs d’IA via un seul point de terminaison compatible OpenAI. Prend en charge les API de chat, de réponses, d'audio et d'image.", "featureCombosTitle": "Combos et équilibrage", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Aide à la réécriture pour les clients sans /v1.", "endpointRewriteResponsesNote": "Assistant de réécriture pour les réponses sans /v1.", "endpointRewriteModelsNote": "Aide à la réécriture pour la découverte de modèles sans /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Répertorier les éléments enregistrés dans le registre des proxys (pagination prise en charge).", + "mgmtProxiesCreateNote": "Créer un élément de proxy réutilisable dans le registre.", + "mgmtProxiesHealthNote": "Obtenir les métriques d’intégrité sur 24 h/glissantes de chaque proxy enregistré à partir des journaux de proxys.", + "mgmtProxiesBulkAssignNote": "Attribuer ou supprimer un proxy pour plusieurs identifiants de portée en une seule requête.", + "mgmtAssignmentsListNote": "Répertorier les attributions de proxy par portée, scope_id ou proxy_id.", + "mgmtAssignmentsUpdateNote": "Attribuer ou supprimer un proxy pour une portée globale, de fournisseur, de compte ou de combinaison.", + "mgmtLegacyMigrationNote": "Importer les mappages proxyConfig hérités dans les attributions du registre.", "modelPrefixesDescriptionStart": "Utilisez le préfixe du fournisseur avant le nom du modèle pour acheminer vers un fournisseur spécifique. Exemple :", "modelPrefixesDescriptionEnd": "itinéraires vers GitHub Copilot.", "provider": "Fournisseur", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute est un logiciel open source. Vous êtes libre de l'inspecter, de le modifier et de le distribuer selon les termes de sa licence." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "Agents CLI", + "description": "Découvrez les agents CLI installés sur votre système. Ajoutez des agents personnalisés pour la détection automatique.", + "refresh": "Actualiser", + "installed": "Installé", + "notFound": "Introuvable", + "builtIn": "Intégré", + "custom": "Personnalisé", + "remove": "Supprimer", + "addCustomAgent": "Ajouter un agent personnalisé", + "addCustomAgentDesc": "Enregistrez n’importe quel outil CLI pour le détecter. Il sera analysé automatiquement lors de l’actualisation.", + "agentName": "Nom de l’agent", + "binaryName": "Nom du binaire", + "versionCommand": "Commande de version", + "spawnArgs": "Arguments de lancement", + "addAgent": "Ajouter l’agent", + "scanning": "Recherche d’agents CLI sur le système...", + "opencodeIntegration": "Intégration d’OpenCode", + "opencodeDetected": "opencode {version} détecté", + "opencodeDesc": "Générez un fichier {configFile} prêt à l’emploi avec l’URL de base d’OmniRoute et tous les modèles disponibles — placez-le à la racine de votre projet et exécutez {command}.", + "downloadConfig": "Télécharger {file}", + "downloaded": "Téléchargé !", + "setupGuideTitle": "Guide de configuration", + "openCliTools": "Outils CLI ouverts", + "setupGuideDetectCliTitle": "Détecter les CLI installées", + "setupGuideDetectCliDesc": "Cliquez sur Actualiser après avoir installé ou mis à jour une CLI afin qu’OmniRoute puisse analyser à nouveau les binaires et leurs versions.", + "setupGuideCustomAgentTitle": "Enregistrer un binaire personnalisé", + "setupGuideCustomAgentDesc": "Utilisez Ajouter un agent personnalisé lorsque votre CLI ne figure pas dans la liste intégrée. Indiquez le nom du binaire et la commande de version.", + "setupGuideCommandMissingTitle": "Corriger l’erreur « commande introuvable »", + "setupGuideCommandMissingDesc": "Assurez-vous que la commande CLI existe dans PATH, ouvrez une nouvelle session de terminal, puis relancez l’actualisation.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10482,7 +10489,7 @@ "cursorCloud": "Agents d'arrière-plan / cloud de Cursor (clé API officielle)" }, "activityTypes": { - "plan": "Plan", + "plan": "Forfait", "command": "Commande", "code_change": "Modification de code", "message": "Message", @@ -10491,12 +10498,12 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "Chat simple", + "streaming": "Diffusion en continu", + "system-prompt": "Invite système", + "thinking": "Réflexion", + "tool-calling": "Appel d’outils", + "multi-turn": "Multi-tour", "vision": "Vision", "schema-coercion": "Coercition de schéma" }, @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Gestion du cache", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Actualiser", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Entrées en mémoire", + "memoryEntriesSub": "LRU en mémoire", + "dbEntries": "Entrées de la base de données", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", + "cacheHits": "Accès au cache réussis", + "cacheHitsSub": "sur {total} au total", + "tokensSaved": "Jetons économisés", + "tokensSavedSub": "Estimation basée sur les accès réussis", + "hitRate": "Taux de réussite", + "performance": "Performances du cache", + "autoRefresh": "Actualisation automatique toutes les {seconds} s", + "hits": "Accès réussis", + "misses": "Échecs", "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "behavior": "Comportement du cache", + "behaviorDeterministic": "Seules les requêtes sans streaming avec temperature=0 sont mises en cache.", + "behaviorBypass": "Contournement avec l’en-tête {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "TTL par défaut : 30 minutes. Configuration via {envVar}.", + "idempotency": "Couche d’idempotence", + "activeDedupKeys": "Clés de déduplication actives", + "dedupWindow": "Fenêtre de déduplication", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Échec de la suppression du cache.", + "unavailable": "Cache indisponible", + "unavailableDesc": "Impossible de récupérer les statistiques du cache. Vérifiez que le serveur est en cours d’exécution.", "loadingCacheAria": "Chargement du cache", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Cache des prompts (côté fournisseur)", + "semanticCache": "Cache sémantique", + "promptCacheSectionDesc": "Affiche l’activité de mise en cache des prompts côté fournisseur à partir de l’historique d’utilisation, afin de voir où le contrôle du cache est actif et dans quelle mesure les entrées sont réutilisées.", + "promptTrendDesc": "Volume horaire de requêtes, couverture du cache et volume de lecture du cache au cours des dernières 24 heures.", + "cachedRequests": "Requêtes mises en cache", + "cachedRequests24h": "Requêtes mises en cache (24 h)", + "cacheHitRate": "Taux de réussite du cache", + "cacheRate": "Taux de mise en cache", + "cacheRateDesc": "du total des requêtes", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Métriques du cache des prompts", + "withCacheControl": "Avec contrôle du cache", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Taux de réutilisation du cache", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Économies estimées", + "lastUpdated": "Dernière mise à jour", + "hoursTracked": "heures suivies", + "busiestHour": "Heure la plus chargée", + "peakCacheRate": "Taux de cache maximal", + "trendHour": "Heure", + "activityVolume": "Activité", + "requestsShort": "requêtes", + "inputShort": "Entrée", + "cachedShort": "En cache", + "writeShort": "Écriture", + "resetting": "Réinitialisation...", + "resetMetrics": "Réinitialiser les métriques", + "byProvider": "Répartition par fournisseur", + "providerCacheRateDesc": "Chaque fournisseur indique le nombre total de jetons d’entrée, de jetons lus dans le cache et de jetons écrits dans le cache, afin que vous puissiez vérifier le taux de réutilisation par rapport aux totaux bruts.", "provider": "Provider", - "requests": "Requests", + "requests": "Requêtes", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Évolution du cache (24 h)", + "peakCached": "Pic de mise en cache", + "cached": "En cache", + "overview": "Vue d’ensemble", "tableProvider": "Fournisseur", "tableModel": "Modèle", "performanceTitle": "Performances", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", + "semanticCacheSectionDesc": "Le cache de réponses déterministe propre à OmniRoute. Lorsqu’il est activé, les requêtes répétées non diffusées avec temperature=0 peuvent être traitées localement sans solliciter le fournisseur en amont.", + "semanticCacheDisabledDesc": "Le cache sémantique est désactivé. OmniRoute ignorera la réutilisation locale des réponses jusqu’à ce que vous le réactiviez dans les paramètres.", + "semanticEntriesDesc": "Enregistrements persistants du cache sémantique actuellement stockés dans SQLite. L’activité du cache d’invites côté fournisseur n’est pas répertoriée ici.", + "searchEntries": "Rechercher des entrées...", + "search": "Rechercher", + "loading": "Chargement...", + "entriesLoadError": "Échec du chargement des entrées du cache sémantique.", + "noEntries": "Aucune entrée de cache trouvée", + "noPromptCacheData": "Aucune activité du cache d’invites côté fournisseur n’a encore été enregistrée.", + "noTrendData": "Aucune activité du cache d’invites n’a été enregistrée au cours des dernières 24 heures.", "signature": "Signature", "model": "Model", - "created": "Created", - "expires": "Expires", + "created": "Création", + "expires": "Expiration", "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "deduplicatedRequests": "Requêtes dédupliquées", + "savedCalls": "Appels d’API économisés", + "totalProcessed": "Nombre total de requêtes traitées", + "disabled": "Désactivé", + "totalRequests": "Nombre total de requêtes", "reasoningCache": "Relecture du raisonnement", "reasoningCacheDesc": "Préserve la pensée modèle pour les flux d’appel d’outils multi-tours", "reasoningEntries": "Entrées actives", @@ -10669,16 +10676,16 @@ "minutesAgo": "il y a {minutes} min", "hoursAgo": "il y a {hours} h", "daysAgo": "il y a {days} j", - "entries": "Entries" + "entries": "Entrées" }, "proxyConfigModal": { "levelGlobal": "Mondial", "levelProvider": "Fournisseur", - "levelCombo": "Combo", + "levelCombo": "Combinaison", "levelKey": "Clé", "levelDirect": "Direct (pas de proxy)", "titleGlobal": "Configuration globale du proxy", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "Proxy {level} — {label}", "loading": "Chargement de la configuration du proxy...", "inheritingFrom": "Hériter de", "source": "Origine", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Connecter l'IDE du curseur", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Se connecter avec Cursor", + "tabImport": "Importer un jeton", + "loginDescription": "Ouvre la page de connexion de Cursor dans le navigateur. Fonctionne dans Docker — approuvez la connexion dans le navigateur de votre hôte, puis revenez ici.", + "loginWithCursor": "Se connecter avec Cursor", + "startingLogin": "Démarrage…", + "waitingApproval": "En attente de l’approbation de la connexion à Cursor…", + "openUrlHint": "Si le navigateur ne s’est pas ouvert :", + "openLoginLink": "Ouvrir la page de connexion", + "cancelLogin": "Annuler la connexion", "autoDetecting": "Jetons à détection automatique...", "readingFromCursor": "Lecture à partir de Cursor IDE ou de Cursor-Agent", "tokensAutoDetected": "Jetons détectés automatiquement avec succès à partir de Cursor IDE !", "cursorNotDetected": "Curseur IDE non détecté. Veuillez coller manuellement votre jeton.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Vous utilisez Docker ? Préférez « Se connecter avec Cursor ». L’importation automatique depuis l’IDE et cursor-agent sont généralement indisponibles dans le conteneur. Consultez docs/providers/CURSOR-DOCKER.md.", "accessToken": "Jeton d'accès", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Jeton d’actualisation", + "refreshTokenPlaceholder": "Facultatif — permet l’actualisation automatique du jeton", "required": "*", "accessTokenPlaceholder": "Le jeton d'accès se remplira automatiquement...", "machineId": "ID de l'ordinateur", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Échec de la détection automatique des jetons", "errorEnterToken": "Veuillez saisir le jeton d'accès", "errorImportFailed": "Échec de l'importation", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Échec du démarrage de la connexion à Cursor", + "errorLoginPoll": "Échec de la connexion à Cursor", + "errorLoginTimeout": "Délai d’attente de la connexion à Cursor dépassé — réessayez" }, "pricingModal": { "title": "Configuration des prix", @@ -10843,9 +10850,9 @@ "selectProxy": "Sélectionner {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Importer l’ancien format", + "bulkAssign": "Affectation groupée", + "addProxy": "Ajouter un proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,15 +10861,15 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Tester", + "edit": "Modifier", + "delete": "Supprimer", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", "labelType": "Tapez", "labelFamily": "Famille IP", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Automatique (double pile)", "familyIpv4": "IPv4 uniquement", "familyIpv6": "IPv6 uniquement", "familyHint": "Famille d'adresses de sortie. Auto conserve le dual-stack ; IPv4/IPv6 verrouille ce proxy sur cette famille (évite une fuite v4 sous un proxy IPv6 uniquement).", @@ -10891,7 +10898,7 @@ "scopeGlobal": "global", "scopeProvider": "fournisseur", "scopeAccount": "compte", - "scopeCombo": "combo", + "scopeCombo": "combinaison", "bulkImportErrorMissingName": "NOM manquant", "bulkImportErrorMissingHost": "HÔTE manquant", "bulkImportErrorInvalidPort": "PORT invalide (doit être 1-65535)", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Échec", "successRate": "{rate} % de réussite", "avgLatency": "{latency}ms moyenne", "assignmentsCount": "{count} affectations", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Réparer", "relayAuthMissing": "authentification manquante", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Stratégie de rotation", "poolStrategyHint": "round-robin fait défiler les membres dans l'ordre ; random choisit de manière uniforme ; sticky conserve un membre pendant une fenêtre ; latency-optimized choisit le plus rapide d'après les journaux.", "poolStrategyFailed": "Échec de la mise à jour de la stratégie de rotation", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Tourniquet", "strategyRandom": "Aléatoire", - "strategySticky": "Sticky", + "strategySticky": "Persistant", "strategyLatency": "Optimisé pour la latence", "poolMembersLabel": "Membres du pool ({count})", "poolNoMembers": "Aucun proxy dans ce pool pour le moment.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# sortie} other {# sorties}} utilisée(s) par {connections, plural, one {# connexion} other {# connexions}} · jusqu’à {max} sur une même sortie · dernières {hours} h", + "poolEgressObservationEmpty": "Aucun trafic observé au cours des dernières {hours} h", + "poolEgressObservationHint": "Calculé à partir du journal du proxy sur la période : adresses IP de sortie distinctes observées pour les membres de ce pool et connexions OmniRoute qui les ont utilisées. « Sur une même sortie » signifie sur l’ensemble de la période, et non simultanément. Le blocage 429 par adresse IP ne suspend que les connexions d’une même famille de fournisseurs.", "poolRemove": "Retirer", "poolRemoveFailed": "Échec du retrait du proxy du pool", "poolAddLabel": "Ajouter un proxy", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Point de terminaison", + "provider": "Fournisseur", + "model": "Modèle", "accountKey": "Account Key", "autoAccounts": "Automatique ({count} comptes)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Envoyer", + "cancel": "Annuler", + "audioFile": "Fichier audio", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", + "clearAll": "Tout effacer", + "request": "Requête", + "response": "Réponse", "transcription": "Transcription", - "copy": "Copy", + "copy": "Copier", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "{count} images générées", "generatedImage": "Image générée {index}", - "save": "Save", + "save": "Enregistrer", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Réponses", "completions": "Complétions", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Plongements", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Modérations", - "rerank": "Rerank", + "rerank": "Reclassement", "search": "Search", "webFetch": "Récupération web" }, "conversationalChat": "Chat conversationnel", "clearChat": "Effacer le chat", "typeMessagePlaceholder": "Tapez un message... (Maj+Entrée pour une nouvelle ligne)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Discussion", + "tabCompare": "Comparer", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Créer", + "configPane": "Configuration", + "systemPrompt": "Invite système", + "systemPromptPlaceholder": "Vous êtes un assistant utile.", + "modelPlaceholder": "p. ex. openai/gpt-4o", + "endpointLabel": "Point de terminaison", + "parametersLabel": "Paramètres", + "collapseConfig": "Réduire le volet de configuration", + "expandConfig": "Développer le volet de configuration", + "temperature": "Température", + "maxTokens": "Nombre maximal de jetons", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Pénalité de présence", + "frequencyPenalty": "Pénalité de fréquence", "reasoningLabel": "Raisonnement", "thinking": "Réflexion", "effort": "Effort", "effortDefault": "Par défaut", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Aléatoire (laisser vide)", + "presetsLabel": "Préréglages", + "loadPreset": "Charger un préréglage", + "savePreset": "Enregistrer le préréglage", + "noPresets": "Aucun préréglage", + "presetNamePlaceholder": "Nom du préréglage", + "savingPreset": "Enregistrement…", + "nameRequired": "Le nom est requis", + "failedToSavePreset": "Échec de l’enregistrement du préréglage", + "improvePrompt": "Améliorer le prompt", + "improvingPrompt": "Amélioration…", + "improvePromptTitle": "Améliorez votre prompt avec l’IA", + "setModelFirst": "Définissez d’abord un modèle", "setModelInConfigFirst": "Définissez d'abord un modèle dans le volet Configuration.", "improvePromptFailed": "Échec de l'amélioration du prompt.", "improvePromptAria": "Améliorer le prompt avec l'IA", "confirmImprovePrompt": "Confirmer l'amélioration du prompt", "improvePromptDescription": "Cela enverra votre prompt système actuel à pour générer une version améliorée.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Cela consommera le quota du modèle configuré dans Config.", + "improveConfirm": "Améliorer", + "exportCode": "Exporter le code", + "exportCodeTitle": "Exporter le code", "exportShort": "Exporter", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Aucun état du playground disponible à l’exportation.", "closeExportModal": "Fermer la fenêtre modale d'exportation", "close": "Fermer", "exportRealKeyWarning": "Avertissement de sécurité : exportation bloquée — une véritable clé API a été détectée dans la sortie. Veuillez réinitialiser votre clé API et réessayer.", @@ -11071,18 +11078,18 @@ "copyLangCode": "Copier le code {language}", "loadingPresets": "Chargement…", "loadPresetPlaceholder": "Charger un préréglage…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Copier", + "copiedCode": "Copié !", + "addModel": "+ Ajouter un modèle", + "runAll": "Tout exécuter", + "cancelAll": "Tout annuler", + "maxColumnsReached": "Maximum de {max} colonnes", + "modelPlaceholderCompare": "Modèle (Cmd+K)…", "noModel": "Aucun modèle", "statusLabel": "Statut : {status}", "status": { "idle": "inactif", - "streaming": "streaming", + "streaming": "diffusion en continu", "done": "terminé", "error": "erreur" }, @@ -11095,29 +11102,29 @@ "waitingForResponse": "En attente de réponse…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "estimation côté client", + "tokensLabel": "Jetons", + "costLabel": "Coût", + "costEstimated": "(estimé)", "ttftTitle": "Temps jusqu'au premier token (estimation côté client)", "tpsTitle": "Tokens par seconde (estimation côté client)", "tokenCountsTitle": "Tokens de prompt ↑ / Tokens de complétion ↓", "estimatedCostTitle": "Coût estimé (exactitude non garantie)", - "toolsLabel": "Tools", + "toolsLabel": "Outils", "toolsCount": "Outils ({count})", - "addTool": "Add tool", + "addTool": "Ajouter un outil", "editTool": "Modifier l'outil {name}", "removeTool": "Supprimer l'outil {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Nom de la fonction", "toolNameRequiredPlaceholder": "Nom de la fonction *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Description (facultative)", "toolParamsLabel": "Paramètres (schéma JSON)", "toolParamsJsonSchema": "Schéma JSON pour les paramètres", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Les paramètres doivent être au format JSON valide", + "structuredOutputLabel": "Sortie structurée", + "enableJsonMode": "Activer le mode JSON", + "disableJsonMode": "Désactiver le mode JSON", + "invalidJson": "JSON non valide", "jsonMode": "Mode JSON", "jsonModeDescription": "Force response_format: json_schema", "schemaName": "Nom du schéma", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} colonnes", "addModelToCompare": "Ajouter une colonne de modèle pour comparer", "modelsSimultaneously": "Jusqu'à {max} modèles simultanément", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Exécution…", + "runLabel": "Exécuter", + "enterToolResult": "Saisir le résultat de l’outil…", "build": { "step1Label": "Que tester ?", "step2Label": "Configurer", @@ -11198,7 +11205,7 @@ "tunnel": "Tunnel", "send": "Envoyer", "selectKey": "Sélectionner la clé", - "testLabel": "Test", + "testLabel": "Tester", "expandTest": "Développer le test", "collapseTest": "Réduire le test", "revealKey": "Afficher la clé", @@ -11207,28 +11214,28 @@ "play": "Lire", "query": "Requête", "numResults": "Résultats max.", - "prompt": "Prompt", + "prompt": "Invite", "size": "Taille", "duration": "Durée", "question": "Question", "audioFile": "Fichier audio", "fileTooLarge25Mb": "Le fichier est trop volumineux. Taille maximale : 25 Mo.", "selectAudioFirst": "Sélectionnez d'abord un fichier audio.", - "speechToText": "Speech to Text", + "speechToText": "Transcription vocale", "chooseFile": "Choisir un fichier", "audioFormats25Mb": "MP3, WAV, M4A, OGG ou FLAC · Maximum 25 Mo", "musicSample": "Une piste d'ambiance calme avec un piano chaleureux et des cordes douces", "noAudioUrl": "La réponse n'inclut pas d'URL audio : {response}", "music": "Musique", "embeddingSample": "OmniRoute achemine les requêtes d'IA vers plusieurs fournisseurs.", - "embedding": "Embedding", + "embedding": "Intégration", "imageSample": "Une ville futuriste au coucher du soleil, éclairage cinématographique", "image": "Image", "ttsSample": "Bonjour de la part d'OmniRoute. Ceci est un test de synthèse vocale.", - "textToSpeech": "Text to Speech", + "textToSpeech": "Synthèse vocale", "videoSample": "Un avion en papier volant au-dessus d'une ville futuriste", "video": "Vidéo", - "webFetch": "Web Fetch", + "webFetch": "Récupération Web", "webSearchSample": "Qu'est-ce qu'OmniRoute ?", "webSearch": "Recherche Web", "documentUrl": "URL du document", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Résultat {number}", "noKeysFound": "Aucune clé API trouvée. Ajoutez-en une dans la section Clés.", "exampleLabel": "Exemple", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} jetons d'entrée / {tokensOut} jetons de sortie", "defaultKey": "(par défaut)", "clear": "Effacer", @@ -11250,73 +11257,73 @@ "stop": "Arrêter" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", + "recording": "Enregistrement", + "paused": "En pause", + "pipelineLogsOn": "Journaux du pipeline activés", + "pipelineLogsOff": "Journaux du pipeline désactivés", + "updatingPipelineLogs": "Mise à jour des journaux du pipeline...", + "updatePipelineFailed": "Échec de la mise à jour de la journalisation du pipeline", + "capturePipeline": "Capturer les charges utiles du pipeline pour les nouvelles requêtes", + "searchPlaceholder": "Rechercher des modèles, fournisseurs, comptes, clés API, combinaisons...", + "allProviders": "Tous les fournisseurs", + "allModels": "Tous les modèles", + "allAccounts": "Tous les comptes", + "allApiKeys": "Toutes les clés API", "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "ok": "Réussite", + "err": "Erreur", + "combo": "Combinaison", + "keys": "Clés", + "shown": "Affichés", + "sortNewest": "Plus récents", + "sortOldest": "Plus anciens", + "sortTokensDesc": "Jetons ↓", + "sortTokensAsc": "Jetons ↑", + "sortDurationDesc": "Durée ↓", + "sortDurationAsc": "Durée ↑", + "sortStatusDesc": "Statut ↓", + "sortStatusAsc": "Statut ↑", + "sortModelAsc": "Modèle A-Z", + "sortModelDesc": "Modèle Z-A", + "sortLogs": "Trier les journaux", + "refresh": "Actualiser", + "columnsLabel": "Colonnes", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "ACTIF", + "semantic": "Sémantique", + "upstream": "Fournisseur en amont", + "semanticCacheHit": "Résultat trouvé dans le cache sémantique (fourni par OmniRoute)", + "upstreamResponse": "Réponse du fournisseur en amont", + "noApiKey": "Aucune clé API", + "requestedRoutedTitle": "Demandé : {requested}, routé en tant que {routed}", "statusFilters": { - "all": "All", + "all": "Tous", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Réussite", + "combo": "Combiné" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "Statut", + "cacheSource": "Source du cache", + "model": "Modèle", + "requested": "Demandé", + "provider": "Fournisseur", + "protocol": "Protocole de requête", + "account": "Compte", + "apiKey": "Clé API", + "combo": "Combiné", + "tokens": "Jetons", "compressed": "Compression", "tps": "TPS", - "duration": "Duration", - "time": "Time", + "duration": "Durée", + "time": "Heure", "conversation": "Conversation", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Chargement des journaux...", + "noLogs": "Aucun journal pour le moment. Effectuez des appels API pour les afficher ici.", + "noMatchingLogs": "Aucun journal ne correspond aux filtres actuels.", + "callLogsInfo": "Les journaux d’appels sont également enregistrés sous forme de fichiers JSON dans {dataDir} et leur rotation est effectuée selon {retentionDays} et {maxEntries}.", "loadMore": "Charger plus", "loadingMore": "Chargement en cours...", "correlationId": "ID de corrélation", @@ -11399,7 +11406,7 @@ "rotated": "Rotation : {initial} -> {final}", "apiKey": "Clé API", "noApiKey": "Aucune clé API", - "combo": "Combo", + "combo": "Combiné", "error": "Erreur", "unblockAll": "Tout débloquer", "cleared": "Effacé", @@ -11417,185 +11424,185 @@ "correlationId": "ID de corrélation", "correlationIdValue": "ID de corrélation : {id}", "detailedPayloadInfo": "Activez d’abord la journalisation détaillée si vous voulez voir l’affichage en 4 étapes des payloads client/fournisseur pour les nouvelles requêtes.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Tout copier", + "copiedAll": "Tout a été copié" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", + "filterAll": "Tous", + "filterErrors": "Erreurs", + "filterSuccess": "Succès", + "filterTimeout": "Délai dépassé", + "colStatus": "Statut", "colProxy": "Proxy", "colTls": "TLS", "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", + "colLevel": "Niveau", + "colProvider": "Fournisseur", + "colTarget": "Cible", + "colLatency": "Latence", + "colClientIp": "IP client", + "colTime": "Heure", + "recording": "Enregistrement", + "paused": "En pause", + "searchPlaceholder": "Rechercher un hôte, un fournisseur, une cible, une IP...", + "allTypes": "Tous les types", + "allLevels": "Tous les niveaux", + "allProviders": "Tous les fournisseurs", "total": "total", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "err": "ERREUR", + "timeoutShort": "EXP", "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "newest": "Plus récent", + "oldest": "Plus ancien", + "latencyDesc": "Latence ↓", + "latencyAsc": "Latence ↑", + "refresh": "Actualiser", + "columns": "Colonnes", + "loadingProxyLogs": "Chargement des journaux du proxy...", + "noProxyLogs": "Aucun journal de proxy pour le moment. Configurez des proxys et effectuez des appels API pour les afficher ici.", + "noMatchingLogs": "Aucun journal ne correspond aux filtres actuels.", + "tlsFingerprint": "Empreinte TLS de Chrome 124", "colPublicIp": "IP publique" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", + "speech": "Parole", + "search": "Recherche", "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", + "chat": "Discussion", + "music": "Musique", + "responses": "Réponses", + "rerank": "Reclassement", + "video": "Vidéo", + "embeddings": "Plongements", "transcription": "Transcription" }, "toolDescriptions": { "cline": "Cline", "openclaw": "Openclaw", - "droid": "Droid", + "droid": "Droïde", "codex": "Codex", "claude": "Claude", "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", + "title": "Exécution", + "description": "Observabilité en temps réel — résilience à 3 niveaux + sessions + alertes de quota", + "pause": "Suspendre", + "resume": "Reprendre", + "refreshNow": "Actualiser maintenant", "kpiSessions": "Sessions", "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", + "kpiCooldowns": "Délais de récupération", + "kpiLockouts": "Verrouillages", + "hintStickyBound": "{count} lié(s) de manière persistante", + "hintRecovering": "{count} en cours de récupération", + "hintAllHealthy": "tous opérationnels", + "hintOpen": "ouverts", + "hintConnsCooling": "connexions en période de récupération", + "hintModelsBlocked": "modèles bloqués", + "resilienceTitle": "Résilience à 3 niveaux", + "resilienceSubtitle": "Reproduit le modèle de résilience documenté", + "providersHealthy": "{percent} % des fournisseurs sont opérationnels", + "layer": "Niveau {n}", + "layer1Title": "Disjoncteurs des fournisseurs", + "layer1Desc": "Interrompre le trafic vers les fournisseurs rencontrant des défaillances en amont", + "layer2Title": "Délais de récupération des connexions", + "layer2Desc": "Ignorer un compte ou une clé défaillante ; les autres connexions continuent de fonctionner", + "layer3Title": "Verrouillages des modèles", + "layer3Desc": "Verrouillages par modèle dus aux limites de débit ; la même connexion continue de desservir les autres modèles", + "badgeAffectedOf": "{affected} sur {total} affectés", + "badgeCooling": "{count} en récupération", + "badgeLocked": "{count} verrouillés", + "emptyCircuits": "Aucun disjoncteur actif pour le moment", + "emptyCooldowns": "Aucune temporisation de connexion active", + "emptyLockouts": "Aucun blocage de modèle", + "moreCooldowns": "+{count} temporisations supplémentaires", + "moreLockouts": "+{count} blocages supplémentaires", + "feedTitle": "Flux en direct", + "feedSubtitle": "{count} derniers événements", + "feedFilterAll": "Tous", "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", + "feedFilterCooldowns": "Temporisations", + "feedFilterLockouts": "Blocages", "feedFilterSessions": "Sessions", "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", + "feedClear": "Effacer", + "feedEmptyWaiting": "En attente d’événements... (interrogation toutes les 5 s)", + "feedEmptyFiltered": "Aucun événement ne correspond à ce filtre", + "sessionsTitle": "Sessions actives", + "sessionsSubtitle": "Empreintes de requêtes liées par affinité (en direct)", + "sessionsActive": "{count} actives", + "sessionsEmptyTitle": "Aucune session active", + "sessionsEmptyHint": "Les sessions apparaissent à mesure que les requêtes transitent par le proxy", "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "tblAge": "Âge", + "tblIdle": "Inactivité", + "tblReqs": "Requêtes", + "tblBoundTo": "Liée à", + "topApiKeys": "Principales clés API", + "quotaMonitorsTitle": "Surveillance des quotas", + "quotaMonitorsSubtitle": "État des quotas en direct pour chaque fenêtre de compte", + "openQuota": "Ouvrir les quotas", + "allQuotasHealthy": "Tous les quotas sont conformes", + "statusExhausted": "ÉPUISÉ", + "statusAlerting": "EN ALERTE", + "statusError": "ERREUR", + "moreSuffix": "+{count} autres" }, "quotaShare": { "weightPercent": "Poids %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Partage des quotas", + "description": "Partagez les quotas des fournisseurs entre les clés API avec des limites en %", + "newPool": "Nouveau pool", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", + "betaDescription": "La configuration est enregistrée dans localStorage (elle n’est pas encore conservée sur le serveur). L’application du plafond par requête n’est pas encore intégrée au pipeline du proxy. Cet écran vous permet de concevoir et de visualiser la répartition des quotas ; l’application effective sera ajoutée dans une prochaine version, avec la persistance en base de données et l’interception des appels en amont.", + "kpiActivePools": "Pools actifs", + "kpiKeysAllocated": "Clés allouées", + "kpiAvgUnallocated": "Moy. non allouée", + "kpiProvidersWithQuota": "Fournisseurs avec quota", + "emptyTitle": "Aucun pool configuré", + "emptyDescription": "Créez un pool pour attribuer des clés API et partager la fenêtre de quota d’un fournisseur avec des allocations en %.", + "loading": "Chargement…", + "removePool": "Supprimer le pool", + "removeConfirm": "Supprimer ce pool ?", "pool": "Pool", - "used": "used", + "used": "utilisé", "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "allocatedFree": "{allocated} % alloués · {free} % libres", + "noAllocations": "Aucune clé allouée pour le moment", + "capLabel": "plafond {value}", + "notTrackedYet": "(pas encore suivi)", + "policy": "Politique", "apiKeyColumn": "Clé API", "weightColumn": "Poids", "fairShareShort": "équitable", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "stricte", + "policySoft": "souple", + "policyBurst": "rafale", + "policyHardHint": "Bloquer lorsque la clé épuise son allocation", + "policySoftHint": "Autoriser le dépassement, alerter uniquement", + "policyBurstHint": "Autoriser les rafales dans le pool libre", + "editAllocations": "Modifier les allocations", + "newPoolTitle": "Nouveau pool de quotas", + "providerConnection": "Connexion au fournisseur (compte)", + "selectConnection": "Sélectionnez une connexion…", + "noEligibleConnections": "Aucune connexion avec des données de quota. Actualisez d’abord depuis /dashboard/quota.", + "quotaWindow": "Fenêtre de quota", + "selectWindow": "Sélectionnez une fenêtre…", + "alreadyUsedSuffix": "(déjà utilisée)", + "windowReset": "Réinitialisation", + "duplicatePoolError": "Un pool existe déjà pour cette connexion et cette fenêtre", + "cancel": "Annuler", + "createPool": "Créer le pool", + "editTitle": "Modifier les allocations", + "noKeysAdded": "Aucune clé allouée. Ajoutez-en une ci-dessous.", + "totalLabel": "Total : {percent} %", + "totalExceeded": "⚠ dépasse 100 %", + "addKey": "+ Ajouter une clé…", + "equalSplit": "Répartition égale", + "save": "Enregistrer les allocations", "betaPreviewLabel": "Bêta – Aperçu de l’interface utilisateur.", "betaConfigSavedPrefix": "La configuration est enregistrée dans", "betaConfigSavedSuffix": "(pas encore persisté sur le serveur). L’application du plafond par demande n’est pas encore intégrée au pipeline proxy. Cet écran vous permet de concevoir et de visualiser la répartition des quotas ; une véritable application arrivera dans une itération future avec la persistance de la base de données et l'interception des appels en amont.", @@ -11623,7 +11630,7 @@ "migratedFromLocalStorageNotice": "Pools migrés avec succès depuis localStorage.", "policyCapAbsoluteLabel": "Limite absolue", "policyCapAbsolutePlaceholder": "Limite numérique (facultatif)", - "multiDimensionLabel": "Multi-dimension", + "multiDimensionLabel": "Multidimension", "stackedBarTitle": "Découpage par clé API", "usedSuffix": "utilisé {percent}%", "wizardTitle": "Nouveau pool de quotas", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "Basis-URL", "endpointsCollapse": "Samenvouwen", "endpointsExpand": "Uitvouwen", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Natif Anthropic", "endpointsResponsesNote": "OpenAI-antwoorden — codex/github", "endpointsWsNote": "WebSocket — alleen codex", "betaText": "Quota Share est fonctionnel mais des bugs sont à prévoir. Vous en avez trouvé un ? Veuillez le signaler.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Ce groupe contient encore des pools — réassignez-les ou supprimez-les d'abord.", "ungroupedTitle": "Sans groupe", "ungroupedHint": "Ces pools ne sont pas assignés à un groupe connu. Modifiez un pool pour le déplacer dans un vrai groupe.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Impossible de supprimer ce pool.", + "dismiss": "Fermer" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", + "title": "Extensions", + "description": "Installez et gérez des plugins pour étendre les fonctionnalités d’OmniRoute", + "loading": "Chargement des plugins...", + "scanning": "Analyse en cours...", + "scanForPlugins": "Rechercher des plugins", + "noPlugins": "Aucun plugin installé", + "noPluginsDescription": "Placez les répertoires des plugins dans ~/.omniroute/plugins/ et cliquez sur Rechercher.", + "activate": "Activer", + "deactivate": "Désactiver", + "uninstall": "Désinstaller", + "uninstallConfirm": "Désinstaller le plugin « {name} » ?", + "pluginScanComplete": "Analyse des plugins terminée", + "pluginScanFailed": "Échec de l’analyse des plugins", + "activated": "{name} activé", + "deactivated": "{name} désactivé", + "activateFailed": "Échec de l’activation de {name}", + "deactivateFailed": "Échec de la désactivation de {name}", + "uninstalled": "{name} désinstallé", + "uninstallFailed": "Échec de la désinstallation de {name}", + "configure": "Configurer : {name}", + "configurePlugin": "Configurer", + "noConfigSettings": "Ce plugin ne comporte aucun paramètre configurable.", + "saving": "Enregistrement en cours...", + "saveConfiguration": "Enregistrer la configuration", + "configurationSaved": "Configuration enregistrée", + "saveConfigurationFailed": "Échec de l’enregistrement de la configuration", + "pluginNotFound": "Plugin introuvable", "version": "Version", - "author": "Author", + "author": "Auteur", "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "status": "État", + "enabled": "Activé", + "disabled": "Désactivé", "installedTab": "Installé", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Place de marché", "marketplaceUrlLabel": "URL personnalisée de la Marketplace", "marketplaceUrlPlaceholder": "Laisser vide pour le registre officiel Omniroute", "saveMarketplaceUrl": "Enregistrer et recharger", @@ -11729,7 +11736,7 @@ "verified": "Vérifié", "install": "Installer", "installedFromMarketplace": "Plugin {name} installé !", - "hooks": "Hooks" + "hooks": "Points d’accroche" }, "quotaPlans": { "title": "Plans et quotas", @@ -11771,11 +11778,11 @@ "yesterdayHeader": "Hier", "filterAll": "Tous", "filterProviders": "Fournisseurs", - "filterCombos": "Combos", + "filterCombos": "Combinaisons", "filterApiKeys": "Clés API", "filterSettings": "Paramètres", "filterQuota": "Quota", - "filterAuth": "Auth", + "filterAuth": "Authentification", "filterSystem": "Système", "filterAria": "Filtrer par type d'événement", "refresh": "Actualiser", @@ -11934,7 +11941,7 @@ "quickLinkProviders": "Configurer les fournisseurs", "quickLinkInspector": "Afficher le trafic dans Traffic Inspector", "unknownError": "Erreur inconnue", - "maintenanceTitle": "Maintenance & Diagnostics", + "maintenanceTitle": "Maintenance et diagnostics", "maintenanceSubtitle": "Testez le pipeline de capture, annulez l'état système résiduel et déplacez votre configuration d'une machine à l'autre.", "orphanedStateWarning": "Une session précédente a laissé l'état du système dans un état résiduel (spoofing DNS, AC ou proxy système). Exécutez Réparer pour le nettoyer.", "diagnose": "Diagnostiquer", @@ -12053,7 +12060,7 @@ "filterHost": "Filtrer l'hôte…", "filterAgent": "Agent", "filterStatus": "Statut", - "pauseBtn": "Pause", + "pauseBtn": "Mettre en pause", "resumeBtn": "Reprendre", "clearBtn": "Effacer", "exportHar": "Exporter .har", @@ -12076,7 +12083,7 @@ "rawEvents": "Événements bruts", "mergedView": "Vue fusionnée", "noBody": "Aucun corps.", - "streaming": "streaming…", + "streaming": "diffusion en cours…", "manageHosts": "Gérer les hôtes", "copySnippet": "Copier l'extrait de proxy", "addHost": "Ajouter", @@ -12165,7 +12172,7 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "Code CLI", "phrase": "Outils de code que vous pointez vers OmniRoute", "flow": "Vous → CLI Code → OmniRoute → Fournisseur", "seeOther": "Voir →" @@ -12179,7 +12186,7 @@ "acp": { "title": "Agents ACP", "phrase": "CLI qu'OmniRoute lance en tant que backend d'exécution (flux inverse)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "La plupart des utilisateurs peuvent ignorer ceci — à utiliser uniquement lorsqu’une intégration l’exige.", "flow": "Client → OmniRoute → spawn CLI (stdio/ACP) → réponse", "seeOther": "Voir →" } @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Enregistrez, répertoriez, testez et supprimez des points de terminaison webhook. Configurez les abonnements aux événements (request.completed, request.failed, quota.exceeded, etc.) et gérez les nouvelles tentatives de livraison." }, "omni-mcp": { "name": "Serveur MCP", @@ -12390,51 +12397,51 @@ "description": "Les points de terminaison d'inférence principaux compatibles OpenAI : chat completions, embeddings, images, audio (TTS/STT), moderations, rerank et l'API Responses. La surface d'intégration principale pour les agents IA." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI : servir", "description": "Démarrer, arrêter et redémarrer le serveur OmniRoute depuis la CLI. Gérer le mode démon, la configuration des ports, la récupération automatique, l'intégration de la zone de notification et le raccourci d'ouverture du tableau de bord." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI : état de santé", "description": "Vérifier l'état de santé du serveur, le statut des composants et les métriques en direct depuis la CLI. Exécutez `health`, `health components` et `health watch` pour obtenir un tableau de bord en temps réel des disjoncteurs et du statut des fournisseurs." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI : fournisseurs", "description": "Gérer les connexions des fournisseurs depuis la CLI : lister les fournisseurs disponibles/configurés, ajouter, tester, tout tester (test-all), valider, effectuer une rotation des clés API et afficher les métriques par fournisseur." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI : clés API", "description": "Créer, lister, effectuer une rotation et révoquer les clés API OmniRoute depuis la CLI. Gérer les flux OAuth pour l'authentification des fournisseurs et inspecter les scopes et l'expiration des clés." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI : Modèles", "description": "Interroger les modèles d'IA disponibles, lister les alias de modèles et parcourir le catalogue complet des modèles depuis la CLI. Filtrer par fournisseur, rechercher par capacité et résoudre les variantes de noms de modèles." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI : Conversation", "description": "Envoyer des complétions de chat, diffuser des réponses en continu et démarrer une session REPL interactive depuis la CLI. Prend en charge tous les fournisseurs OmniRoute, le routage combiné et la configuration des invites système." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI : Routage et combinaisons", "description": "Créer, lister, mettre à jour et supprimer des combos de routage depuis la CLI. Tester les stratégies de routage, inspecter les métriques des combos et configurer les chaînes de secours de manière interactive." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI : Résilience et quotas", "description": "Inspecter et gérer les états des disjoncteurs, les délais de récupération des connexions, les limites de quota et les niveaux de backoff depuis la CLI. Réinitialiser les fournisseurs bloqués et configurer les seuils de résilience." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI : Compression", "description": "Configurer et tester la compression des invites depuis la CLI. Gérer les filtres RTK, les règles Caveman, les modes de compression empilés et prévisualiser le résultat de la compression avec de vraies invites." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI : Contextes et sessions", "description": "Gérer les configurations d'ingénierie de contexte, les ensembles de filtres RTK et les sessions de conversation depuis la CLI. Appliquer les paramètres de relais de contexte et inspecter les pipelines de contexte actifs." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI : Coût et utilisation", "description": "Afficher la répartition des coûts, l'utilisation des jetons et les journaux d'appels depuis la CLI. Filtrer par fournisseur, modèle ou plage de dates. Exporter des rapports d'utilisation et inspecter les dépenses par connexion." }, "cli-mcp": { - "name": "CLI: MCP", + "name": "CLI : MCP", "description": "Inspecter le statut du serveur MCP, lister les outils et les portées enregistrés, exécuter des appels d'outils et gérer les journaux d'audit MCP depuis la CLI." }, "cli-a2a": { @@ -12532,7 +12539,7 @@ }, "categoryApi": "API", "categoryCli": "CLI", - "categoryConfig": "Config", + "categoryConfig": "Configuration", "filterAll": "Tout", "coverageLabel": "Couverture", "mcpUrl": "URL MCP", @@ -12589,14 +12596,14 @@ "typeApikey": "Clé API", "sortTypeFirst": "Le plus simple en premier", "sortTypeFirstHelp": "Grouper par effort d'inscription (Sans inscription → Connexion OAuth → Clé API), en conservant l'ordre de qualité au sein de chaque groupe", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Les plus fiables en premier", + "sortByReliabilityHelp": "Classez les fournisseurs selon la proportion d’appels ayant réussi pendant la période sélectionnée. Les fournisseurs ayant trop peu d’appels pour établir un taux conservent leur ordre par score, sous ceux dont le taux a été mesuré.", "typeLegend": "Sans inscription = configuration nulle · Connexion OAuth = connectez-vous avec votre propre compte · Clé API = utilisez votre propre clé ou le forfait gratuit de ce fournisseur", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Fiabilité", + "colReliabilityHelp": "Proportion des appels auxquels ce fournisseur a effectivement répondu au cours des dernières 24 heures. Un tiret signifie qu’il a traité trop peu de trafic pour établir un taux.", + "reliabilitySample": "{successes} appels sur {requests} ont réussi au cours des dernières {hours} h", + "reliabilityTooFew": "Seulement {requests} appels au cours des dernières {hours} h — trop peu pour établir un taux", + "reliabilityNoTraffic": "Aucun appel enregistré au cours des dernières 24 h" }, "discovery": { "title": "Découverte de fournisseurs", @@ -12619,7 +12626,7 @@ "emptyDescription": "Lancez un scan ci-dessus pour rechercher des méthodes d'accès gratuites sur un fournisseur.", "risk": "Risque", "method": "Méthode", - "auth": "Auth", + "auth": "Authentification", "feasibility": "Faisabilité", "models": "Modèles" }, @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Soutien de Radar", + "description": "A vérifié un flux actif de soutien à OmniRoute Radar", + "criteria": "Vérifiez un flux actif signé de soutien à Radar." }, "first-token": { "name": "Premier token", @@ -12846,7 +12853,7 @@ "security": "Sécurité", "network": "Réseau", "policies": "Stratégies", - "runtime": "Runtime", + "runtime": "Environnement d’exécution", "cli": "CLI", "health": "Santé", "requiresRestart": "Nécessite un redémarrage" @@ -12948,8 +12955,8 @@ "description": "Autoriser plusieurs connexions pour chaque nœud de compatibilité." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Désactiver les vérifications de la fenêtre de contexte", + "description": "Ignorer la vérification locale d’OmniRoute concernant la fenêtre de contexte et le nombre maximal de jetons d’entrée pour les requêtes directes à un seul modèle. Les fournisseurs en amont continuent d’appliquer leurs limites réelles. La compression des invites et les plafonds de jetons de sortie restent actifs." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Supprimer les éléments de sortie internes de la phase de commentaire des flux de transfert direct de l'API Responses avant de les transmettre aux clients. Désactivez ce flag pour recevoir les commentaires bruts en amont." @@ -12985,7 +12992,7 @@ "description": "Autoriser la récupération de flux à demander à nouveau la réponse et à la raccorder après que des octets ont déjà atteint le client." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Sécuriser les appels d’outils lors d’une continuation en cours de flux : ne jamais reprendre un flux interrompu après l’envoi d’un appel d’outil (qu’il soit toujours en cours ou déjà terminé), et s’arrêter après une continuation vide au lieu d’utiliser tout le quota de nouvelles tentatives." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Basculer une seule fois vers une connexion sœur lorsqu'un flux se ferme avant d'émettre la moindre trame utile et que la nouvelle tentative limitée sur la même connexion est épuisée. Sans connexion sœur utilisable, l'erreur early-EOF d'origine est renvoyée. Désactivé : early-EOF reste terminal après la nouvelle tentative." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Activer l'accès réseau dans le bac à sable des compétences." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Boucle d’outils gérée par le serveur", + "description": "Poursuivre les appels d’outils non diffusés en continu et gérés par le serveur jusqu’à ce que le modèle renvoie une réponse exploitable par le client." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Provenance de Retry-After", + "description": "Pour les réponses agrégées 429/503 indiquant une indisponibilité, omettre Retry-After lorsqu’aucune date future concrète de nouvelle tentative n’est connue au lieu d’envoyer une valeur synthétique de 1 s, ajouter error.retry_after_provenance et interpréter les indications textuelles de nouvelle tentative sur les chemins d’épuisement des combinaisons." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Arrêts d’infrastructure à priorité protégée en tant que 502", + "description": "Répondre avec 502 au lieu de 503 lorsqu’une cible prioritaire avec repli uniquement en cas de quota arrête la combinaison pour une cause dont il est démontré qu’elle n’est pas liée au quota : un disjoncteur de fournisseur ouvert ou un saut prédictif dû à la latence." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Santé du combo", "callLogs": "Journaux d'appels", "costs": "Coûts", - "playground": "Playground", + "playground": "Bac à sable", "nestedCombo": "Combo imbriqué", "modelTarget": "Cible de modèle", "weight": "{value}% de poids", @@ -13171,7 +13182,7 @@ "segmentHint": "Chaque segment = un pool gratuit · dédoublonné par pool, décompte honnête (sans plafonds de limite de débit gonflés).", "boost": "Débloquez ~{tokens} de plus/mois avec une recharge unique de 10 $ sur OpenRouter (50 → 1000 req/jour)", "uncapped": "Gratuit en permanence, sans plafond publié (limité en débit) — accès réel, non comptabilisé dans le total :", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/mois supplémentaires soumis à une vérification d’identité régionale (p. ex. vérification du nom réel en Chine continentale) — quota réel, non inclus dans le chiffre annoncé :", "tosRestricted": "{count, plural, one {# modèle} other {# modèles}} signalés comme restreints par les CGU — à vous de décider", "provider": "Fournisseur", "model": "Modèle", @@ -13224,7 +13235,7 @@ "down": "hors service" }, "severity": { - "info": "info", + "info": "infos", "warning": "avertissement", "critical": "critique" }, @@ -13270,80 +13281,80 @@ "viewFullHistory": "Voir l'historique complet sur GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", + "title": "Politiques de routage du raisonnement", + "apiKeyTitle": "Routage du raisonnement pour cette clé API", + "subtitle": "Réacheminez les modèles et ajustez l’effort de raisonnement sans nécessiter de prise en charge côté client. Les requêtes restent inchangées lorsqu’aucune règle ne correspond.", + "loadError": "Impossible de charger les règles de raisonnement.", + "saveError": "La règle n’est pas valide ou n’a pas pu être enregistrée.", + "saved": "Règle de raisonnement enregistrée.", + "deleteConfirm": "Supprimer cette règle de raisonnement ?", + "deleteError": "Impossible de supprimer la règle de raisonnement.", + "empty": "Aucune règle de raisonnement correspondante n’est configurée.", + "all": "Tous", + "any": "N’importe lequel", + "enabled": "Activé", + "disabled": "Désactivé", + "filterSearch": "Rechercher des règles", + "filterScope": "Filtrer par portée", + "filterStatus": "Filtrer par statut", + "allModels": "tous les modèles", + "keepModel": "Conserver le modèle", + "otherModel": "Autre modèle", + "combo": "Combinaison", + "priorityShort": "priorité {value}", + "toggleAria": "Activer {name}", + "edit": "Modifier", + "delete": "Supprimer", + "name": "Nom", "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", + "scopeLabel": "Portée", + "apiKey": "Clé API", + "sourceCombo": "Combo source", + "connection": "Connexion", + "sourceModel": "Modèle source ou caractère générique", + "sourceModelOptional": "Vide = tous les modèles", + "sourceModelExample": "p. ex. gpt-5*", + "sourceEffort": "Effort source", + "missing": "Non spécifié", + "signalOnly": "Signal de raisonnement non discret", + "requestTags": "Étiquettes de requête", + "requestTagsExample": "codage, interne", + "tagMode": "Correspondance des étiquettes", + "effortMode": "Mode d’effort", + "targetEffort": "Effort cible", + "routingTarget": "Cible de routage", + "targetModel": "Modèle cible", + "targetCombo": "Combo cible", + "budgetAction": "Budget de réflexion", + "budgetTokens": "Jetons du budget", + "priority": "Priorité", + "saveChanges": "Enregistrer les modifications", + "add": "Ajouter une règle", + "cancel": "Annuler", + "simulateTitle": "Simuler la règle", + "model": "Modèle", "effort": "Effort", "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "simulate": "Simuler sans service en amont", + "extendedComboWarning": "Max/Ultra est validé séparément pour chaque combo cible lors du routage.", + "extendedUnknownWarning": "Saisissez un modèle cible pour vérifier la prise en charge de Max/Ultra.", + "extendedUnsupportedWarning": "Seuls les modèles Codex GPT-5.6 appropriés sont connus pour prendre en charge Max/Ultra. Les modèles personnalisés inconnus sont acceptés par le serveur avec un avertissement.", "scope": { "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "apiKey": "Clé API", + "combo": "Combinaison", + "model": "Modèle", + "connection": "Connexion" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Hériter du client", + "default": "Utiliser la valeur par défaut", + "force": "Forcer" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Conserver", + "remove": "Supprimer", + "set": "Définir une valeur fixe" } }, "chaosConfig": { @@ -13382,8 +13393,8 @@ "maxTokensDesc": "Nombre maximum de jetons par réponse de modèle. Des valeurs plus élevées coûtent plus cher et prennent plus de temps.", "providerIdPlaceholder": "ID du fournisseur (saisir ou sélectionner)", "modelIdPlaceholder": "ID du modèle (facultatif)", - "on": "ON", - "off": "OFF", + "on": "ACTIVÉ", + "off": "DÉSACTIVÉ", "availableProviders": "Fournisseurs disponibles ({count})", "noProviderOverrides": "Aucune surcharge — tous les fournisseurs actifs participeront avec leurs modèles par défaut", "resetFailed": "Échec de la réinitialisation", @@ -13424,92 +13435,92 @@ "tierLive": "En direct (temps réel)", "tierCommunity": "Communauté (délai de 30 jours)", "activateTitle": "Activer Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Comparez l'accès Community et l'accès en temps réel, découvrez les données échangées par votre installation, puis choisissez comment activer Radar.", + "accessScaleTitle": "Comprendre l'accès à Radar avant de l'activer", + "accessScaleIntro": "Radar n'effectue aucune communication réseau tant que vous n'avez pas donné votre accord. Choisissez l'accès Community ou activez une clé personnelle de soutien après avoir pris connaissance de ces règles.", + "accessCommunityRule": "Community — aucune clé requise : le catalogue complet avec un décalage de 30 jours.", + "accessSingleUseRule": "Étoile + suivi — après vérification des deux via GitHub OAuth, votre compte GitHub bénéficie d'une consultation ponctuelle du catalogue en temps réel ; l'accès revient ensuite à Community. Cet accès unique ne peut pas être accordé de nouveau à ce compte.", + "accessContributorRule": "Contributeurs — seuls les PR fusionnées, les commits et les lignes déterminent le classement hebdomadaire. Les 10 premiers reçoivent 365 jours ; les rangs 11 à 100 reçoivent 90 jours ; les contributeurs hors du Top 100 ne reçoivent aucun accès, quel que soit le nombre de PR. Quitter le classement ne réduit jamais la durée déjà accordée.", + "accessSupporterRule": "Soutiens — les achats uniques donnent droit à 6 mois, 1 an ou un accès à vie, sans renouvellement automatique. Les achats, les dons, les périodes accordées aux contributeurs et les attributions manuelles se cumulent ; l'accès à vie prévaut toujours.", + "accessUseTitle": "Utilisation personnelle, récupération et vérification", + "accessInstallationRule": "Licence personnelle — utilisez la clé sur une seule installation active à la fois. OmniRoute ne relève pas l'empreinte du matériel. La récupération révoque et remplace une clé perdue sans réinitialiser sa date d'expiration.", + "accessAbuseRule": "Examen des abus — la 4e adresse IP distincte en 24 heures déclenche uniquement un signalement pour examen manuel ; cela ne bloque ni ne révoque jamais automatiquement une clé.", + "accessOffersRule": "Les offres en temps réel sont sélectionnées manuellement et peuvent changer ou expirer.", + "privacyTitle": "Données échangées par Radar", + "privacyDownloadsRule": "Téléchargements — votre installation reçoit le catalogue et les métadonnées de parrainage signés cryptographiquement ; une clé valide d'accès en temps réel débloque également les offres et Intel signés.", + "privacySendsRule": "Envois — la synchronisation côté serveur envoie la clé de soutien sous forme de jeton Bearer, et l'infrastructure HTTPS reçoit l'adresse IP de connexion. La comptabilisation des requêtes au flux ne stocke aucune de ces valeurs en clair : elle conserve les hachages des clés, les données d'utilisation agrégées et un HMAC tronqué de l'adresse IP, renouvelé quotidiennement, à des fins d'examen des abus.", + "privacyNeverRule": "Jamais collectés — les prompts, les réponses, les conversations, les identifiants des fournisseurs, le trafic des modèles, la disponibilité, la latence et la configuration locale des fournisseurs ne sont jamais envoyés à Radar.", + "activateButton": "Activer Community", "activating": "Activation en cours...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Vous avez déjà une clé de soutien ?", + "keyInvalidFormatError": "Format de clé non valide. Elle doit commencer par \"omr_\", suivi de 40 caractères hexadécimaux.", + "activateWithKeyButton": "Activer l'accès de soutien", + "changeKeyButton": "Changer de clé", + "claimSectionTitle": "Vous n'avez pas encore de clé de soutien ?", + "contributorButton": "Je suis contributeur", + "contributorHint": "GitHub OAuth vérifie le classement hebdomadaire actuel : les 10 premiers obtiennent 365 jours et les rangs 11 à 100 obtiennent 90 jours. Le nombre de PR à lui seul ne donne jamais accès aux personnes hors du Top 100.", + "supporterButton": "Soutenir le projet", + "supporterHint": "Les options uniques de 6 mois, 1 an et à vie ne comportent aucun renouvellement automatique ; les périodes admissibles se cumulent et l'accès à vie prévaut.", "colProvider": "Fournisseur", "colModel": "Modèle", "colQuota": "Quota", + "colLimits": "Limites de débit", + "trainsOnPrompts": "Entraîne le modèle avec les prompts", + "trainsOnPromptsHelp": "Les conditions de ce fournisseur indiquent qu'il peut entraîner ses modèles avec les prompts que vous envoyez. Les modèles sans ce badge déclarent soit qu'ils ne le font pas, soit ne le précisent pas dans leur documentation — l'absence de déclaration ne constitue pas une garantie.", + "limitsUnknownHelp": "Limites indiquées uniquement par le flux Radar ; aucune limite publiée pour cette entrée", + "contextUnknownHelp": "Fenêtre de contexte inconnue pour cette entrée", + "capabilityUnknownHelp": "Capacité non indiquée par le flux", "colContext": "Contexte", "colCapabilities": "Capacités", "colTos": "Risque des CGU", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "nouveau", "setupGuide": "Guide de configuration", "disabledByFeed": "Désactivé par le flux Radar", "capTools": "Outils", "capVision": "Vision", "capThinking": "Réflexion", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", + "catalogTab": "Catalogue", + "freeCreditsTab": "Crédits gratuits", + "freeCreditsSubtitle": "Liens de parrainage de fournisseurs suivis par Radar — leur utilisation ne vous coûte rien de plus et contribue à soutenir OmniRoute.", + "fixedLinksEmpty": "Aucun lien de parrainage disponible pour le moment. Synchronisez Radar pour rechercher des mises à jour.", + "requiredActionLabel": "Marche à suivre :", + "claimButton": "Réclamer les crédits", + "campaignsTitle": "Campagnes à durée limitée", + "campaignsEmpty": "Aucune campagne active actuellement — revenez plus tard.", + "campaignsUpsellCommunity": "Les campagnes à durée limitée sont un avantage réservé aux soutiens. Tous les liens permanents de cette page restent gratuits pour tout le monde.", + "campaignsValidUntil": "Valable jusqu’au {date}", "colActions": "Actions", "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "editModel": "Modifier", + "saveModel": "Enregistrer", + "cancelEdit": "Annuler", + "resetModel": "Réinitialiser les modifications locales", + "hideModel": "Masquer", + "restoreModel": "Restaurer", + "hiddenModelsTitle": "Modèles masqués", + "modelDisplayName": "Nom d’affichage local", + "modelEnabled": "Activé localement", + "localStateSaveFailed": "Échec de l’enregistrement des paramètres Radar locaux", + "guidedCombos": "Combinaisons guidées", + "offers": "Offres", + "intel": "Renseignements" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Combinaisons guidées par Radar", + "subtitle": "Créez des solutions de secours prioritaires à partir de modèles gratuits équivalents sélectionnés par Radar.", + "backToRadar": "Retour à Radar", + "loading": "Chargement des suggestions de combinaisons...", + "familyLabel": "Famille de modèles", + "modelsLabel": "Ordre de priorité", + "strategyReason": "La priorité utilise d’abord le plus grand budget gratuit récurrent, puis bascule vers les fournisseurs actifs.", + "generateButton": "Générer la combinaison", + "generating": "Génération...", + "alreadyCreated": "Déjà créée", + "created": "Combinaison créée", + "noSuggestions": "Aucune famille de modèles admissible ne dispose actuellement de connexions actives à au moins deux fournisseurs.", + "catalogRequired": "Synchronisez d’abord le catalogue Radar pour charger les familles de modèles sélectionnées.", + "loadFailed": "Échec du chargement des suggestions de combinaisons Radar.", + "createFailed": "Échec de la création de la combinaison. Vérifiez vos connexions aux fournisseurs et réessayez." }, "radarSetupPage": { "title": "Configuration du fournisseur", @@ -13538,37 +13549,37 @@ }, "resilienceConnections": { "title": "Résilience de Connexion", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Vos connexions se rétablissent automatiquement", + "reassuranceDetail": "En général, aucune action n’est nécessaire. OmniRoute met temporairement une connexion au repos après des échecs, puis la réessaie en toute sécurité.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Les requêtes peuvent être envoyées", + "coolingDown": "Nouvelle tentative bientôt", + "lockedOut": "Nécessite votre attention" }, "table": { "status": "Statut", "provider": "Fournisseur", "connectionId": "Connexion", "authType": "Authentification", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "backoffLevel": "Temporisation progressive", + "cooldown": "Délai de récupération", "lastError": "Dernière Erreur", "lockouts": "Blocages", "healthy": "Sain", - "coolingDown": "Cooldown", + "coolingDown": "Délai de récupération", "circuitOpen": "Circuit Ouvert", "recovering": "Récupération", "degraded": "Dégradé", - "terminal": "Terminal", + "terminal": "Définitif", "unknown": "Inconnu", "never": "-" }, "timeline": { "title": "Transitions du Disjoncteur", "window": "Fenêtre", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 h", + "window6h": "6 h", + "window24h": "24 h", "empty": "Aucune transition dans la fenêtre sélectionnée", "currentState": "État Actuel", "state": { @@ -13589,7 +13600,7 @@ "detail": { "title": "Détail de la Connexion", "metadata": "Métadonnées", - "cooldown": "Cooldown", + "cooldown": "Délai de récupération", "lastError": "Dernière Erreur", "breaker": "Disjoncteur", "lockouts": "Blocages de Modèle", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Rejeter les demandes avant l'expédition lorsque le modèle cible manque des capacités requises (vision, outils, sortie structurée, fenêtre de contexte). Protège les demandes directes à un seul fournisseur qui contournent le filtre de compatibilité de la couche combo.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Ignorer la vérification locale d’OmniRoute concernant la fenêtre de contexte et le nombre maximal de jetons d’entrée pour les requêtes directes adressées à un seul modèle. Les fournisseurs en amont appliquent toujours leurs limites réelles. La compression des prompts et les plafonds de jetons de sortie restent actifs.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Les statistiques de recherche et les recherches récentes ne prennent en compte que les fournisseurs disposant encore d’une connexion active (les fournisseurs sans clé tels que duckduckgo-free sont toujours pris en compte). Lorsque cette option est désactivée, chaque ligne de recherche conservée garde un identifiant de fournisseur.", "publicSystem": { "notFound": { "title": "Page introuvable", @@ -13857,12 +13868,12 @@ "orPasteManually": "ou collez un token manuellement", "manualInstructions": "Connectez-vous à solo.trae.ai, ouvrez DevTools → Network, envoyez un message, puis copiez le JWT depuis l’en-tête de requête Authorization: Cloud-IDE-JWT {tokenPlaceholder}. La durée de vie du JWT est d’environ 14 jours. Les champs d’identité facultatifs proviennent de common_params dans le même corps de requête.", "accessTokenLabel": "Access token (Cloud-IDE-JWT)", - "webId": "Web ID", + "webId": "ID Web", "optional": "facultatif", - "bizUserId": "Biz User ID", - "userUniqueId": "User Unique ID", - "scope": "Scope", - "tenant": "Tenant", + "bizUserId": "ID utilisateur professionnel", + "userUniqueId": "ID unique de l’utilisateur", + "scope": "Périmètre", + "tenant": "Locataire", "region": "Région", "importing": "Importation…", "importToken": "Importer le token", @@ -13967,7 +13978,7 @@ "runners": "Coureurs", "tasks": "Tâches", "colName": "Nom", - "colClis": "CLIs", + "colClis": "Interfaces en ligne de commande", "colStatus": "Statut", "colTask": "Tâche", "colMode": "Mode", @@ -14070,11 +14081,11 @@ "actionApprove": "Approuver le plan", "actionCancel": "Annuler", "actionSeeInGraph": "Voir dans le graphe", + "actionRepeat": "Répéter", "actionDone": "Action appliquée", "actionFailed": "Échec de l'action : {error}", "detailFailed": "Échec du chargement des détails : {error}", "mirroredInA2A": "Reflété dans A2A", - "actionRepeat": "Répéter", "repeatConfirm": "Cliquez à nouveau pour confirmer", "repeatDone": "Nouvelle exécution créée", "repeatUnavailable": "Entrée d'origine non disponible" @@ -14088,57 +14099,57 @@ "networkError": "Erreur réseau — impossible de mettre à jour le paramètre d'exposition du fournisseur" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Offres pour les soutiens", + "subtitle": "Réductions officielles, crédits, essais et avantages de partenaires vérifiés proposés par Radar.", + "backToRadar": "Retour à Radar", + "loading": "Chargement des offres...", + "refresh": "Actualiser les offres", + "refreshing": "Actualisation...", + "loadFailed": "Nous n'avons pas pu actualiser les offres. Le dernier cache local vérifié est conservé.", + "empty": "Aucune offre active n'est disponible pour le moment.", + "keyRequiredTitle": "Une clé de soutien est requise", + "keyRequiredDescription": "Les offres sont un avantage en temps réel de Radar. Ajoutez une clé de soutien existante sur l'écran Radar, vérifiez votre statut de contributeur ou soutenez le projet pour en obtenir une.", + "contributorButton": "Je suis contributeur", + "supporterButton": "Soutenir le projet", + "partnerBadge": "Partenaire", + "officialBadge": "Officiel", + "conditionsLabel": "Conditions :", + "validUntil": "Valable jusqu'au {date}", + "noExpiry": "Aucune date d'expiration annoncée", + "openOffer": "Voir l'offre", + "trialDays": "{days, plural, one {# jour} other {# jours}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Renseignements radar", + "subtitle": "Classements ELO gérés par Radar et évolution factuelle du catalogue.", + "backToRadar": "Retour à Radar", + "loading": "Chargement de Radar Intel...", + "refresh": "Actualiser Radar Intel", + "syncing": "Actualisation...", + "loadFailed": "Nous n'avons pas pu actualiser Radar Intel. Le dernier cache local vérifié est conservé.", + "empty": "Aucun instantané vérifié de Radar Intel n'est encore disponible.", + "supporterBadge": "Soutien de Radar", + "methodology": "Méthodologie", + "eloMethod": "ELO, valeur initiale {initial}, K={factor}", + "freshness": "Actualité du catalogue", + "ageDays": "{days, plural, one {datant de # jour} other {datant de # jours}}", + "trend": "Tendance du catalogue", + "modelDelta": "{current} modèles, +{added} / -{removed}", + "ranking": "Classement des modèles", + "noRankings": "Aucune comparaison confirmée n'est encore disponible.", + "model": "Modèle", + "category": "Catégorie", + "rating": "Évaluation", + "matches": "Comparaisons", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Récent", + "aging": "Vieillissant", + "stale": "Obsolète" }, "trendValues": { - "growing": "Growing", + "growing": "En croissance", "stable": "Stable", - "shrinking": "Shrinking" + "shrinking": "Réduction" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "La demande dépasse la fenêtre de contexte du fournisseur" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference est un ami open source d’OmniRoute", + "description": "Une passerelle classée par coût qui revend des dizaines de modèles de pointe derrière un point de terminaison compatible avec OpenAI, en acheminant chaque requête vers le fournisseur éligible le moins cher, sans jamais dépasser le prix catalogue.", + "cta": "Obtenir une clé API", + "partnerLinkNote": "Lien partenaire", + "dismissAriaLabel": "Fermer" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Désactiver la génération des variantes de niveau de réflexion (par ex. -low, -medium, -high) dans le catalogue /v1/models." } diff --git a/src/i18n/messages/ga.json b/src/i18n/messages/ga.json index a3dcf8d2e5..9ae14d9309 100644 --- a/src/i18n/messages/ga.json +++ b/src/i18n/messages/ga.json @@ -733,7 +733,7 @@ "tokensSending": "Ag seoladh...", "tokensFrom": "Ó", "tokensTo": "Go", - "tokensReason": "Reason", + "tokensReason": "Réasún", "tokensDate": "Dáta", "tokensSent": "Seolta", "tokensReceived": "Faighte", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Fógraigh aitheantais scátháin claude/<soláthraí>/<samhail> ar /v1/models ionas go bhfógróidh fionnachtain samhla geata Claude Code samhlacha neamh-Claude. Rabhadh: déanann sé iontrálacha catalóige a dhúbailt do gach cliant nuair a chumasaítear go domhanda é.", "featureFlagNoThinkingAliasEnabledDescription": "Príomh-lasc do na haliasanna geataí no-think/<soláthraí>/<samhail>. Ar (réamhshocrú): fógraíonn /v1/models leagan gan smaoineamh do gach samhail Claude atá in ann smaoineamh, agus réitíonn aitheantas no-think/ a sheoltar ar iarratas ar ais go dtí an tsamhail fíor le réasúnaíocht faoi chois. As: ní fhógraítear aon leaganacha agus caitear le haitheantas no-think/ mar aon aitheantas samhla anaithnid eile. Tá an rogha per-model ModelSpec.noThinkingAlias fós i bhfeidhm agus é seo ar siúl.", "featureFlagChatVirtualLanesEnabledDescription": "Cumasaigh lánaí iontrála oiriúnaitheacha fíorúla in aghaidh an tionónta le haghaidh seolta soláthraí (#9654): ní chruthaíonn pléascadh tionónta amháin 503 do thionónta eile a thuilleadh. Tá an athróg timpeallachta OMNIROUTE_CHAT_VIRTUAL_LANES níos cumhachtaí ná an sárú deais seo; tagann athruithe i bhfeidhm ag atosú freastalaí.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Leathanaigh soláthraithe na deaise: ná taispeáin an suaitheantas Saor in aisce ach amháin i gcás comharthaí a n-aithníonn an soláthraí iad — fágtar ar lár heorastach an ainm taispeána, réimsí free nach réimsí Boole iad agus iarmhíreanna :free ar sholáthraithe cláraithe nach bhfuil sraith shaor in aisce dhoiciméadaithe acu. Nuair atá sé múchta, coinnítear riail stairiúil an tsuaitheantais.", + "featureFlagProxySkipRecentlyFailedDescription": "Cuireann linnte seachfhreastalaí agus rothlú opencode in aghaidh an chuntais cosc ar sheachfhreastalaí ar theip air díreach (diúltaíodh don tóireadóir TCP, nó fuarthas 429 tríd) a sheirbheáil arís ar feadh tréimhse in aghaidh an phróisis a dhúblaíonn le gach teip eile, suas le huasteorainn. Ní scríobhtar aon stádas seachfhreastalaí; má chuirtear gach iarrthóir ar leataobh, fanann an rogha gan athrú. As de réir réamhshocraithe: is ionann an t-ord roghnúcháin go díreach agus an gnáthrothlú.", + "featureFlagProxyPoolEgressObservationDescription": "Taispeáin, faoi linn seachfhreastalaí sa deais, cé mhéad seoladh IP amach a breathnaíodh a d’fhreastail ar a bhaill le 24 h anuas, cé mhéad nasc a d’úsáid iad agus an líon is mó a chonacthas taobh thiar d’aon IP amháin. Inléite amháin, ríofa ón loga seachfhreastalaí, agus ní úsáidtear riamh é le haghaidh ródúcháin. As de réir réamhshocraithe: fanann eagarthóir na linne gan athrú agus freagraíonn bealach na breathnóireachta le null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "I scuabadh sláinte an tseachfhreastalaí, lig do thóraíocht ar dhiúltaigh an sprioc di (401/403/429: rinne an seachfhreastalaí athsheoladh, ach dhiúltaigh an ceann scríbe don seoladh IP amach seo) stríoc teipeanna comhleanúnacha an tseachfhreastalaí a athshocrú, amhail tóraíocht a seirbheáladh. As de réir réamhshocraithe: fanann diúltú neodrach agus coinníonn sé an stríoc. Fanann 5xx neamhchinntitheach sa dá chás, agus ní bhaineann diúltú seachfhreastalaí choíche, ní dhíchumasaíonn sé é ná ní athghníomhachtaíonn sé é.", "sidebar": { "home": "Baile", "dashboard": "Deais", @@ -1275,7 +1275,7 @@ "systemGroup": "Córas", "costsOverview": "Forléargas", "costsOverviewSubtitle": "Anailís chomhdhlúite ar chostais", - "agentBridge": "Agent Bridge", + "agentBridge": "Droichead Gníomhairí", "agentBridgeSubtitle": "Idircheap trácht gníomhairí IDE", "trafficInspector": "Cigire Tráchta", "trafficInspectorSubtitle": "Déan iniúchadh ar thrácht iarratais agus freagraí ó d'fheidhmchláir", @@ -1729,42 +1729,42 @@ "home": "Baile", "activity": "Gníomhaíocht", "agentSkills": "AgentSkills", - "comboHealth": "Combo Health", - "evals": "Evals", + "comboHealth": "Sláinte na Teaglama", + "evals": "Meastóireachtaí", "search": "Cuardach", "utilization": "Úsáid", "apiEndpoints": "Críochphointí API", "audit": "Iniúchadh", "a2a": "A2A", "mcp": "MCP", - "batch": "Batch", - "files": "Files", - "media": "Media", - "cache": "Cache", - "changelog": "Changelog", - "chaos": "Chaos", - "cloudAgents": "Cloud Agents", - "live": "Live", - "studio": "Studio", - "aggressive": "Aggressive", - "caveman": "Caveman", + "batch": "Baisc", + "files": "Comhaid", + "media": "Meáin", + "cache": "Taisce", + "changelog": "Loga athruithe", + "chaos": "Anord", + "cloudAgents": "Gníomhairí Néil", + "live": "Beo", + "studio": "Stiúideo", + "aggressive": "Ionsaitheach", + "caveman": "Fear Uaimhe", "ccr": "CCR", - "headroom": "Headroom", + "headroom": "Spás breise", "lite": "Lite", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", "rtk": "RTK", - "sessionDedup": "Session Dedup", + "sessionDedup": "Dí-dhúbláil Seisiúin", "ultra": "Ultra", - "budget": "Budget", - "pricing": "Pricing", - "quotaShare": "Quota Share", - "discovery": "Discovery", - "freeProviderRankings": "Free Provider Rankings", + "budget": "Buiséad", + "pricing": "Praghsáil", + "quotaShare": "Comhroinnt Cuóta", + "discovery": "Fionnachtain", + "freeProviderRankings": "Ranguithe Soláthraithe Saor in Aisce", "radar": "Radar", - "setup": "Setup", - "freeTiers": "Free Tiers", - "gamification": "Gamification", + "setup": "Socrú", + "freeTiers": "Sraitheanna Saor in Aisce", + "gamification": "Cluichíochtú", "leaderboard": "Clár Ceannaireachta", "limits": "Teorainneacha", "profile": "Próifíl", @@ -2188,7 +2188,7 @@ "routeRuntimeScoreNow": "Scór runtime anois", "routeWouldSelectNow": "Roghnófaí anois", "routeNoRecomputeCandidates": "Ní féidir aon rangú iarrthóirí combo a athríomh don iarratas seo.", - "runtime": "Runtime", + "runtime": "Am Rite", "routeTopNow": "Barr anois", "routeFetchLogsFailed": "Theip ar logaí iarratais a fháil", "routeExplainFailed": "Theip ar an mbealach a mhíniú", @@ -2207,10 +2207,10 @@ "model": "Múnla", "account": "Cuntas", "connection": "Nasc", - "combo": "Combo", + "combo": "Teaglaim", "routeStep": "Céim", "tokens": "Tocáin", - "notAvailable": "n/a", + "notAvailable": "n/b", "routeTokenCounts": "{input} isteach · {output} amach", "routeEvidence": "Fianaise", "routeFactors": "Fachtóirí ródaithe", @@ -2742,7 +2742,7 @@ "effortHigh": "Ard", "effortExtraHigh": "An-ard", "effortMax": "Uasmhéid", - "effortUltra": "Ultra", + "effortUltra": "Sár", "wireApi": "API Sreang", "modelAliases": "Ailiasanna Samhlacha", "addModel": "Cuir samhail leis", @@ -2768,7 +2768,7 @@ "configurationSaved": "Sábháladh an chumraíocht go rathúil.", "failedToSave": "Theip ar an chumraíocht a shábháil.", "noApiKeysCreateOne": "Níl aon eochracha API - Cruthaigh ceann ar leathanach Keys", - "defaultOmnirouteKey": "sk_omniroute (default)", + "defaultOmnirouteKey": "sk_omniroute (réamhshocrú)", "selectModel": "Roghnaigh Múnla", "selectModelForAlias": "Roghnaigh múnla do {alias}", "selectModelForTool": "Roghnaigh Múnla do {tool}", @@ -3176,8 +3176,8 @@ "copilotToolCalling": "Glaoch Uirlisí", "copilotPasteInto": "Greamaigh isteach i:", "copilotReloadInstruction": "Ansin athlódáil VS Code agus socraigh an eochair API sa leid ionchuir.", - "wireApiChatCompletions": "Chat Completions (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiChatCompletions": "Comhlánuithe Comhrá (/chat/completions)", + "wireApiResponses": "API Freagairtí (/responses)", "cliproxyapiActionFailed": "Theip ar an ngníomh", "cliproxyapiActionSucceeded": "D'éirigh leis an ngníomh", "cliproxyapiCheckUpdates": "Seiceáil nuashonruithe", @@ -3195,7 +3195,7 @@ "cliproxyapiStatusNotInstalled": "Gan Suiteáil", "cliproxyapiStatusRunning": "Ag rith", "cliproxyapiStatusStopped": "Stoptha", - "cliproxyapiStop": "Stop", + "cliproxyapiStop": "Stad", "cliproxyapiUnhealthy": "Neamhshláintiúil", "cliproxyapiUnknown": "Anaithnid", "cliproxyapiUpdate": "Nuashonrú", @@ -3863,7 +3863,7 @@ "groupAccount": "Cuntas", "groupServiceTier": "Leibhéal Seirbhíse", "serviceTierFast": "Tapa", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Solúbtha", "serviceTierStandard": "Caighdeánach", "serviceTierBreakdownTitle": "Leibhéal Seirbhíse", "serviceTierBreakdownSubtitle": "Deighilt Tapa / Flex / Caighdeánach", @@ -3988,7 +3988,7 @@ "modelsCount": "{count, plural, one {# mhúnla} other {# múnlaí}}", "sectionTitle": "Dromchla Comhtháthaithe", "sectionDescription": "APIs comhoiriúnacha le OpenAI agus críochphointí prótacail oibríochtúla", - "tabApis": "APIs", + "tabApis": "APIanna", "tabProtocols": "Prótacail", "tabsAria": "Rannáin críochphointe", "protocolsTitle": "Prótacail", @@ -4127,19 +4127,19 @@ "vscodeAliasDescriptionError": "Ag taispeáint URLanna ionadchoinneála toisc nárbh fhéidir eochracha CLI a lódáil sa seisiún seo.", "vscodeAliasDescriptionLoading": "Ag lódáil eochracha CLI. Taispeántar URLanna ionadchoinneála go dtí go mbeidh eochair ar fáil.", "vscodeAliasDescriptionPlaceholder": "Ag taispeáint URLanna ionadchoinneála. Cruthaigh nó gníomhachtaigh eochair API i CLI Tools chun TOKEN a ionadú.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "Uirlisí CLI", "vscodeAliasBaseLabel": "Bonn VS Code", "vscodeAliasModelsLabel": "Múnlaí VS Code", "vscodeAliasChatLabel": "Comhrá VS Code", "localServer": "Freastalaí Áitiúil", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute Néal", "copyUrl": "Cóipeáil URL", "badgeLoopbackTooltip": "Níl an críochphointe seo inrochtana ach go háitiúil (loopback amháin)", "badgeAlwaysProtectedTooltip": "Tá an críochphointe seo cosanta i gcónaí agus éilíonn sé údarú", "badgeInternalTooltip": "Is críochphointe inmheánach córais é seo", "tierAll": "Uile", "tierAuth": "Fíordheimhnithe", - "tierLoopback": "Loopback", + "tierLoopback": "Aisfhillte", "tierAlwaysProtected": "Cosanta i gcónaí", "tierPublic": "Poiblí", "hideInternal": "Folaigh Inmheánach", @@ -4453,7 +4453,7 @@ "importError": "Theip ar iompórtáil an chomhaid", "importResult": "{imported} iompórtáilte, {skipped} scipeáilte", "key": "Eochair", - "keyPlaceholder": "e.g. user.preferences.theme", + "keyPlaceholder": "m.sh. user.preferences.theme", "loading": "Ag lódáil...", "memories": "Cuimhní", "next": "Ar Aghaidh", @@ -4681,11 +4681,11 @@ "notAvailable": "—", "totalRequests": "Iarratais iomlána", "noDataYet": "Níl aon sonraí fós", - "promptCache": "Prompt Cache", + "promptCache": "Taisce Leid", "entries": "Iontrálacha", "hitRate": "Ráta Amas", "hitsMisses": "Amas / Caillte", - "signatureCache": "Signature Cache", + "signatureCache": "Taisce Sínithe", "signatureDefaults": "Réamhshocruithe", "signatureTool": "Uirlis", "signatureFamily": "Teaghlach", @@ -4810,7 +4810,7 @@ "running": "Ag rith", "stopped": "Stoptha", "start": "Tosaigh", - "stop": "Stop", + "stop": "Stad", "refresh": "Athnuaigh", "port": "Port Seachfhreastalaí", "apiKey": "Eochair API an Ródaire", @@ -5308,10 +5308,10 @@ "openaiCompatibleDetails": "Sonraí Comhoiriúnachta OpenAI", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Leabuithe", + "audioTranscriptions": "Tras-scríbhinní Fuaime", + "audioSpeech": "Fuaim agus Caint", + "imagesGenerations": "Giniúint Íomhánna", "chatCompletions": "Chat Completions", "importingModels": "Ag iompórtáil...", "importFromModels": "Iompórtáil ó /models", @@ -5865,7 +5865,7 @@ "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "CLI", "codexFastTierActiveChip": "Tá leibhéal Codex Fast gníomhach", - "tierFast": "Fast", + "tierFast": "Tapa", "antigravityProjectIdLabel": "Aitheantas Tionscadail Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", "grokWebCookiePlaceholder": "Áitchoimeádóir Fianán Gréasáin Grok", @@ -6424,7 +6424,7 @@ "codexServiceModeUpdated": "Modh seirbhíse Codex nuashonraithe", "codexServiceTierActive": "Tá sraith seirbhíse Codex {tier} gníomhach", "codexTierFastLabel": "Tapa", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Solúbtha", "commandCodeApplyFailed": "Theip ar údarú Command Code a chur i bhfeidhm", "commandCodeApplyingApproval": "Ceadaithe ag an mbrabhsálaí, ag cur i bhfeidhm…", "commandCodeApplyingKey": "Ag cur i bhfeidhm eochair cheadaithe ag an mbrabhsálaí…", @@ -6456,7 +6456,7 @@ "failedUpdateCodexServiceMode": "Theip ar mhód seirbhíse Codex a nuashonrú", "filterByMedia": "Meáin", "freeBadge": "In aisce", - "kimiCodeApiKeyLabel": "Kimi Code API Key", + "kimiCodeApiKeyLabel": "Eochair API Kimi Code", "modelTestFailed": "Theip ar thástáil an mhúnla", "modelTestNetworkError": "Earráid líonra agus an múnla á thástáil", "networkError": "Earráid líonra", @@ -6478,7 +6478,7 @@ "savedModelEndpointSettings": "Sábháladh socruithe críochphointe an mhúnla", "searchByModelAria": "Cuardaigh de réir mhúnla", "selectSupportedEndpoint": "Roghnaigh ar a laghad ceannphointe tacaithe", - "antigravityClientProfileHarness": "Harness / CLI" + "antigravityClientProfileHarness": "Úim / CLI" }, "settings": { "title": "Socruithe", @@ -6530,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "scrios ailt ina bhfuil: {items}", "routingSummarizeDropParagraphStartsWith": "scrios ailt a thosaíonn le: {items}", "routingSummarizeReplaceText": "ionadaigh \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "slonn rialta /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "scrios bloic ina bhfuil: {items}", "routingSummarizePrependSystemBlock": "réamhcheangail bloc: \"{text}\"", "routingSummarizeAppendSystemBlock": "iarcheangail bloc: \"{text}\"", @@ -6851,7 +6851,7 @@ "createSubscription": "Cruthaigh Síntiús", "loading": "Ag lódáil…", "noSubscriptions": "Níl aon síntiús fós. Cliceáil \"Cuir Síntiús Leis\" chun tosú.", - "statusOk": "OK", + "statusOk": "Ceart go leor", "statusError": "Earráid", "statusEmpty": "Folamh", "global": "Domhanda", @@ -6913,7 +6913,7 @@ "healthcheckLatency": "Moill", "proxyDocumentationScopeTitle": "Réiteach Scóip Seachfhreagraí", "proxyDocumentationScopeDescBefore": "Réitíonn OmniRoute an seachfhreagraí amach i dtreo tosaíochta:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "teaglaim → cuntas → soláthraí → domhanda", "proxyDocumentationScopeDescAfter": ". Is é an scóip is sainiúla a bhuann.", "proxyDocumentationAddTitle": "Ag cur seachfhreagraí saincheaptha leis", "proxyDocumentationAddDescBefore": "Téigh go dtí an", @@ -7056,7 +7056,7 @@ "routingAdvancedGuideTitle": "Treoir ródaithe chun cinn", "routingAdvancedGuideHint1": "Tá an straitéis seo sioncronaithe le réamhshocruithe comho nua agus le ródú cúltaca cuntas domhanda araon.", "routingAdvancedGuideHint2": "Úsáid Fill First le haghaidh tosaíocht chuntais intuartha, Round Robin móide Sticky Limit le haghaidh baisceanna cuntas, agus P2C le haghaidh athléimneacht latency.", - "fillFirst": "Fill First", + "fillFirst": "Líon ar dTús", "fillFirstDesc": "Úsáid cuntais in ord tosaíochta", "roundRobin": "Round Robin", "roundRobinDesc": "Timthriall trí gach cuntas", @@ -7064,25 +7064,25 @@ "p2cDesc": "Roghnaigh 2 go randamach, úsáid an ceann is sláintiúla", "random": "Randamach", "randomDesc": "Cuntas randamach le haghaidh gach iarratais", - "leastUsed": "Least Used", + "leastUsed": "Is Lú Úsáidte", "leastUsedDesc": "Roghnaigh an cuntas is lú úsáid le déanaí", - "costOpt": "Cost Opt", + "costOpt": "Optamú Costais", "costOptDesc": "Is fearr an cuntas is saoire atá ar fáil", - "resetAware": "Reset-Aware RR", + "resetAware": "RR atá Feasach ar Athshocrú", "resetAwareDesc": "Is fearr cuntais le cuóta sláintiúil fágtha agus athshocruithe níos gaire", "quotaWeighted": "Ualaithe de réir Cuóta", "quotaWeightedDesc": "Scipeáil cuntais ídithe, ansin roghnaigh as na cinn eile i gcomhréir leis an méid atá fágtha, roinnte ar an ualach idir lámha. Fanann comhráite atá ann cheana feistithe.", - "strictRandom": "Strict Random", + "strictRandom": "Randamach Dian", "strictRandomDesc": "Croith an deic — úsáideann sé gach cuntas uair amháin sula n-athchroitheann sé", - "stickyLimit": "Sticky Limit", + "stickyLimit": "Teorainn Ghreamaitheach", "stickyLimitDesc": "Glaonna in aghaidh an chuntais sula n-athraítear nuair a úsáideann cúltaca cuntas domhanda Round Robin", "routingStrategyTitle": "Straitéis Ródaithe", "routingStrategySubtitle": "Meaitseáil 9router: round-robin cuntas, teorainneacha greamaitheacha, agus rothlú comho", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Spólghach", "accountRoundRobinDesc": "Timthriall trí chuntais chun ualach a dháileadh", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Spólghach Teaglama", "comboRoundRobinDesc": "Timthriall trí spriocanna comho in ionad tosú i gcónaí leis an gcéad cheann", - "comboStickyLimit": "Combo Sticky Limit", + "comboStickyLimit": "Teorainn Ghreamaitheach Teaglama", "comboStickyLimitDesc": "Glaonna in aghaidh an sprioc-chomho sula n-athraítear", "routingStrategyAccountSummary": "Ag dáileadh iarratais ar fud cuntais le {limit} ghlao in aghaidh an chuntais.", "routingStrategyFillFirstSummary": "Ag úsáid cuntais in ord tosaíochta (Líon ar dtús).", @@ -7143,7 +7143,7 @@ "ipModeWhitelist": "Bánliosta", "ipModeWhitelistPriority": "Tosaíocht WL", "addIpAddress": "Cuir seoladh IP leis", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 nó 10.0.*.*", "block": "+ Cosc", "allow": "+ Ceadaigh", "blocked": "Cosanta ({count})", @@ -7191,7 +7191,7 @@ "comboStrategyAria": "Straitéis Combo", "priority": "Tosaíocht", "weighted": "Meáite", - "contextRelay": "Context Relay", + "contextRelay": "Athsheachadán Comhthéacs", "contextRelayDesc": "Ródú de stíl tosaíochta le haistrithe comhthacs uathoibríoch nuair a tharlaíonn rothlú cuntais", "maxRetriesLabel": "Uasmhéid Iarrachtaí", "retryDelayLabel": "Moil ar Iarracht (ms)", @@ -7441,7 +7441,7 @@ "noWildcardAliasesConfigured": "Níl aon ainmneacha cardús cumraithe.", "overview": "Forbhreathnú", "unknownError": "Earráid Anaithnid", - "pricingSourceLiteLLM": "LiteLLM (Community)", + "pricingSourceLiteLLM": "LiteLLM (Pobal)", "clearSyncedPricingConfirm": "Glan gach sonraí praghála sioncronaithe? Úsáidfear réamhshocruithe soláthraí ina ionad.", "clearSyncedPricingFailed": "Theip ar glanadh praghála sioncronaithe", "pricingSourceUser": "Forshuíomh Úsáideora", @@ -7521,7 +7521,7 @@ "compressionToolStrategiesDesc": "Scoráil straitéisí comhbhrú do chríocha tortha uirlise éagsúla", "compressionGeneral": "Socruithe Ginearálta", "compressionAutoTrigger": "Teorainn Uath-thráchtaire", - "compressionCacheTTL": "Cache TTL", + "compressionCacheTTL": "TTL na Taisce", "compressionPreserveSystem": "Caomhnú Leid Córais", "compressionPreserveSystemAlways": "I gcónaí", "compressionPreserveSystemWhenNoCache": "Nuair nach bhfuil taisce", @@ -7812,7 +7812,7 @@ "redisLauncherTitle": "Redis Áitiúil", "redisLauncherDesc": "Seol coimeádán Redis 7 le cliceáil amháin (Podman nó Docker) le haghaidh taisce freagraí, rianú cuóta, agus teorannú ráta.", "redisLauncherRefresh": "Athnuaigh", - "redisLauncherStop": "Stop", + "redisLauncherStop": "Stad", "redisLauncherLaunching": "Ag seoladh...", "redisLauncherLaunch": "Seol Redis", "redisLauncherContainer": "Coimeádán", @@ -7944,7 +7944,7 @@ "headroomProxyUrlHint": "Is féidir URLanna aisfhillte a thosú ón leathanach seo. Ní dhéantar ach URLanna seachtracha a phromhadh.", "headroomProxySave": "Sábháil", "headroomProxyStart": "Tosaigh", - "headroomProxyStop": "Stop", + "headroomProxyStop": "Stad", "headroomProxyExternalHint": "Ní URL aisfhillte é an URL seo, mar sin ní thionscnóidh OmniRoute an CLI áitiúil.", "cliproxyapiStatus": "Stádas an CLIProxyAPI", "cliproxyapiNotDetected": "Gan braith", @@ -8000,11 +8000,11 @@ "responsesStateModePreserve": "Coinnigh", "responsesStateHint": "Uathoibríoch previous_response_id mura ngníomhachtótear stóráil OpenAI Responses go sainráite. Is é an t-sábháilte le haghaidh cliant neamhstáit mar VS Code Custom Endpoint; an comhthéacs ansin ag brath ar an gcliant ag seoladh stair iomlán.", "responsesStateSaveError": "Theip ar nuashonrú shocrú stáit na Freagraí", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Sraith Thapa Codex", "codexFastTierDesc": "Inject go domhanda service_tier=priority do iarratais OpenAI Codex.", "codexFastTierHint": "Nuair a bheidh sé cumasaithe, cuireann OmniRoute service_tier=priority le hiarratais Codex amach as teacht i dteagmháil nach bhfuil leibhéal sonraithe cheana féin. Tá gá le heochair API OpenAI Enterprise nó cosán Codex ChatGPT-auth don leibhéal tosaíochta; faidhbh a bhaineann le leibhéal a gheobhaidh eochair eile ó OpenAI. Tá séadcáin in aghaidh an teagmhála ar an leathanach soláthraí Codex ina bhfeidhmcheannas.", "codexFastTierSaveError": "Theip ar nuashonrú shocrú Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", + "codexAutoPingTitle": "Uathphing Cuóta Codex", "codexAutoPingDesc": "Roghnaigh in aghaidh an teagmhála: seolann sé iarracht bheag díreach i ndiaidh fuinneog seisiúin Codex a athshocradh ionas nach bhfuil sé fuar nuair a theastaíonn uait.", "codexAutoPingWarning": "Caithfidh méid beag den chotas Codex fíor ar gach ping. As de réir réamhshocraithe — cumasaigh ach do theagmhálacha a bhfuil tú ag brath orthu go gníomhach.", "codexAutoPingSaveError": "Theip ar nuashonrú shocrú Codex Auto-Ping", @@ -8016,7 +8016,7 @@ "codexFastTierModelsLabel": "Samhailanna leibhéal tapa", "codexFastTierModelsHint": "Ní bhfaigheann samhailanna atá seiceáilte amháin service_tier nuair a bhíonn Fast Tier cumasaithe.", "codexFastTierModelCheckbox": "Cumasigh Fast Mode do {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Mód Tapa Claude", "claudeFastModeDesc": "Roghnaigh iarratais Claude roghnaithe isteach in Anthropic Fast Mode (speed:\"fast\").", "claudeFastModeHint": "Ní thacaíonn Anthropic go hoifigiúil le Fast Mode do chliant stíl SDK. Nuair a bheidh sé cumasaithe, seolann OmniRoute ceanntaire X-CPA-Force-Fast-Mode ionas gur féidir le tógáil CLIProxyAPI péireáilte roghnú-spreagadh an pointe iontrála. Ní bhíonn ach na samhailanna Opus liostáilte ag cosc seiceáil cliant-side Anthropic. Tá leibhéal síntiús, plean Max, agus iarmhír creidmheasa Fast Mode fós i bhfeidhm ar an bhfreastalaí — d'fhéadfadh Anthropic a thabhairt ar ais out_of_credits fiú nuair a bhíonn an togláil air.", "claudeFastModeModelsLabel": "Curtha i bhfeidhm ar samhailanna ({count})", @@ -8382,7 +8382,7 @@ "qdrantCollection": "Bailiúchán" }, "contextRtk": { - "title": "RTK Engine", + "title": "Inneall RTK", "description": "Comhbhrú atá aitheanta ag ordú do thorthaí uirlis, logaí teirminéil agus torthaí tógála.", "enabled": "Cumasaigh", "intensity": "Dlús", @@ -8619,7 +8619,7 @@ "lite": "Éadrom", "standard": "Caighdeánach", "aggressive": "Ionsaitheach", - "ultra": "Ultra", + "ultra": "Sár", "responsesToolOutput": "Aschur uirlise Responses" } }, @@ -8678,7 +8678,7 @@ "deleteNamedConfirm": "Scrios teaglaim “{name}”?", "intensityLite": "Éadrom", "intensityFull": "Iomlán", - "intensityUltra": "Ultra", + "intensityUltra": "Sár", "active": "Gníomhach", "languagePacksList": "Pacáistí teanga: {packs}", "dragToReorder": "Tarraing chun céim a atheagrú", @@ -8823,13 +8823,13 @@ "stateError": "Earráid", "stateNotInstalled": "Níl sé suiteáilte", "stateUnknown": "Anaithnid", - "port": "port {port}", + "port": "pórt {port}", "externalBadge": "Bainistithe go seachtrach", "externalTitle": "Braitheadh 9Router seachtrach", "externalDescription": "Lorg OmniRoute 9Router ag {host}:{port}. Tá a shaolré, logaí, nuashonruithe, agus eochair seirbhíse fós bainistithe ag an suiteáil sheachtrach.", "start": "Tosaigh", "starting": "Ag tosú…", - "stop": "Stop", + "stop": "Stad", "stopping": "Ag stopadh…", "restart": "Atosaigh", "restarting": "Ag atosú…", @@ -8858,7 +8858,7 @@ "install9RouterDescription": "Íoslódálann agus suiteálann sé 9Router trí npm. Teastaíonn thart ar 500 MB de spás diosca.", "version": "Leagan", "versionHint": "Cuir isteach “latest” nó leagan sonrach (mar shampla, 1.2.3).", - "servicePort": "Port", + "servicePort": "Pórt", "servicePortHint": "Caithfidh OmniRoute agus 9Router poirt éagsúla a úsáid. Is é 20130 port réamhshocraithe 9Router.", "installationFailed": "Theip ar an tsuiteáil (HTTP {status})", "installationSucceeded": "D'éirigh le suiteáil 9Router. Ag tosú…", @@ -8880,7 +8880,7 @@ "providerExposureHint": "Nuair a chuirtear ar siúl é, bíonn na múnlaí aimsithe le feiceáil i roghnóirí soláthraithe ar fud OmniRoute.", "providerExposureUpdateFailed": "Theip ar nuashonrú (HTTP {status})", "providerExposureNetworkFailed": "Earráid líonra — níorbh fhéidir an socruithe nochtadh soláthraí a nuashonrú", - "webUi": "9Router Web UI", + "webUi": "Comhéadan Gréasáin 9Router", "openNewTab": "Oscail i gcluaisín nua", "filterLogs": "Scag logaí…", "resume": "Atosaigh", @@ -8908,7 +8908,7 @@ "save": "Sábháil" }, "contextCaveman": { - "title": "Caveman Engine", + "title": "Inneall Caveman", "description": "Comhbhrú teachtaireacht bunaithe ar rialacha, pacáiste teanga, anailísíochta agus rialuithe módh aschurtha.", "advancedConfig": "Cumraíocht Ardleibhéal", "advancedConfigDesc": "Mínigeartú iompar comhbhrú", @@ -8938,7 +8938,7 @@ "outputModeTitle": "Mód Aschurtha", "quickSettings": "Socruithe Tapa", "quickSettingsDesc": "Socruithe comhbhrúite bunúsacha le tús a chur leis", - "autoClarity": "Auto-Clarity Bypass", + "autoClarity": "Seachbhóthar Uathshoiléire", "bypassConditions": "Coinníollacha seachanta", "bypassConditionsList": "slándáil, neamh-idirnaitheach, soiléiriú, ord-íogair", "simpleMode": "Simplí", @@ -9343,7 +9343,7 @@ "evaluateStepDescription": "Comhghleoitear na freagraí in aghaidh na gcaighdeán súgartha. Féach pas/diúlta do gach cás le méadracht athruchtachta agus aiseolas mionsonraithe.", "evalsStrategyContainsLabel": "Containeann", "evalsStrategyExactLabel": "Meaitseáil Beacht", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Slonn ionadaíochta", "evalsStrategyCustomLabel": "Loighic Saincheaptha", "evalsStrategyContainsDescription": "Seiceálann an bhfuil an t-aschur LLM ag coinneáil an fho-fhrása súgartha.", "evalsStrategyExactDescription": "Seiceálann an bhfuil an t-aschur LLM ag meaitseáil go beacht leis an luach súgartha.", @@ -9472,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "Saor", - "tierLite": "Lite", + "tierLite": "Éadrom", "tierUnknown": "Anaithnid", "statTotal": "Iomlán", "statCritical": "Criticiúil", @@ -9557,7 +9557,7 @@ "targetSuiteDefaults": "Suite réamhshocruithe", "suiteBuilderDeleteConfirm": "An bhfuil tú cinnte gur mhaith leat an suite seo a scriosadh? Ní féidir an ghníomh seo a chealú.", "suiteBuilderNameLabel": "Ainm Suite", - "scorecardSuites": "Suites", + "scorecardSuites": "Pacáistí", "evalCompareTarget": "Sprioc Comparáide", "suiteBuilderCaseModelPlaceholder": "m.sh. gpt-4o-mini", "evalControlsHint": "Cumraigh do sprioc measúnaithe agus API key, ansin rith suite chun cáilíocht an tsamhail a bhailíochtú.", @@ -9720,8 +9720,8 @@ "chooseAuthMethod": "Roghnaigh do mhodh fíordheimhniú:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", + "googleAccount": "Cuntas Google", + "githubAccount": "Cuntas GitHub", "importToken": "Iompórtáil Comhartha", "pasteToken": "Greamaigh comhartha athnuachana ó Kiro IDE.", "awsRegion": "AWS Region", @@ -9784,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Méadrachtaí an chórais", "memory": "Cuimhne", - "memoryShort": "mem", + "memoryShort": "cuimhne", "uptime": "Am ar bun", "ariaLabel": "Monatóireacht ar an gcóras", "title": "Monatóir Córais", @@ -10000,7 +10000,7 @@ "documentation": "Doiciméadú", "npm": "NPM", "legal": "Dlúth", - "mitLicense": "MIT License", + "mitLicense": "Ceadúnas MIT", "footerTagline": "An t-pointe aontaithe le haghaidh giniúna AI. Ceangail, ródáil, agus bainistigh do sholáthraithe AI le héase.", "copyright": "© {year} OmniRoute. Gach ceart ar cosaint.", "flowToolClaudeCode": "Claude Code", @@ -10104,7 +10104,7 @@ "providersCount": "Solálthairí {count}", "providerTypeFree": "Tairseach Saor", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "Eochair API", "useCaseSingleEndpointTitle": "Sonrach amháin do go leor solálthairí", "useCaseSingleEndpointText": "Treoraigh cliant go URL bonn amháin agus rianaigh de réir réamhshocraithe múnla (m.sh.: gh/, cc/, kr/, openai/).", "useCaseFallbackTitle": "Teip-fhailt agus athrú múnla le comhábhair", @@ -10400,10 +10400,10 @@ "flowDiagramOmniRouteDesc": "Faigheann iarratas agus roghnaíonn sprioc", "flowDiagramSpawn": "Próiseas Seolta", "flowDiagramSpawnDesc": "Seolann feidhmchlár CLI trí stdio", - "flowDiagramCli": "CLI Agent", + "flowDiagramCli": "Gníomhaire CLI", "flowDiagramCliDesc": "Próiseálann le fíordheimhniú/múnla féin", "fingerprintSettingsHint": "CLI Fingerprint matching (cur in ionad iarratais mar uirlisí CLI ar leith) is féidir a chumrú i", - "settingsRoutingLink": "Settings/Routing", + "settingsRoutingLink": "Socruithe/Ródú", "openSettings": "Socruithe", "copyRawUrlTitle": "Cóip URL amh go dtí an ghearcliár", "copied": "Cóipeáilte!", @@ -10681,7 +10681,7 @@ "proxyConfigModal": { "levelGlobal": "Comhshaoil", "levelProvider": "Soláthraí", - "levelCombo": "Combo", + "levelCombo": "Teaglaim", "levelKey": "Eochair", "levelDirect": "Díreach (gan seachfhreastalaí)", "titleGlobal": "Cumraíocht Seachfhreastalaí Domhanda", @@ -10694,8 +10694,8 @@ "selectSavedProxyPlaceholder": "Roghnaigh seachfhreastalaí sábháilte...", "proxyType": "Cineál Seachfhreastalaí", "host": "Óstach", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", - "port": "Port", + "hostPlaceholder": "1.2.3.4 nó proxy.example.com", + "port": "Pórt", "authOptional": "Fíordheimhniú (roghnach)", "username": "Ainm úsáideora", "usernamePlaceholder": "Ainm úsáideora", @@ -10874,7 +10874,7 @@ "familyIpv6": "IPv6 amháin", "familyHint": "Teaghlach seoladh imchur. Coinnigh an tUathoibríoch an dá pháirc; cuir IPv4/IPv6 an próxí seo go dtí an teaghlach sin (cosain ó sruth v4 faoi próxí IPv6 amháin).", "labelHost": "Óstach", - "labelPort": "Port", + "labelPort": "Pórt", "labelUsername": "Ainm úsáideora", "labelPassword": "Pasfhocal", "labelRegion": "Région", @@ -10968,9 +10968,9 @@ "strategyLatency": "Optamaithe ag moill", "poolMembersLabel": "Comhaltaí na linne ({count})", "poolNoMembers": "Níl aon seachfhreastalaithe sa linn seo fós.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "Úsáideadh {exits, plural, one {# bhealach amach} other {# bealach amach}} ag {connections, plural, one {# nasc} other {# nasc}} · suas le {max} ar bhealach amach amháin · na {hours} uaire an chloig seo caite", + "poolEgressObservationEmpty": "Níor breathnaíodh aon trácht le {hours} uair an chloig anuas", + "poolEgressObservationHint": "Áiríodh ó loga an tseachfhreastalaí thar an tréimhse: na seoltaí IP amach ar leith a breathnaíodh do bhaill na linne seo, agus naisc OmniRoute a d’úsáid iad. Ciallaíonn \"Ar bhealach amach amháin\" thar an tréimhse, ní ag an am céanna. Ní chuireann an frithdhúnadh 429 in aghaidh an IP ar sos ach naisc ón teaghlach soláthraithe céanna.", "poolRemove": "Bain", "poolRemoveFailed": "Theip ar bhaint an seachfhreastalaí as an linn", "poolAddLabel": "Cuir procsí leis", @@ -11149,7 +11149,7 @@ }, "generating": "Ag gint…", "typeMessageWithShortcut": "Clóscríobh teachtaireacht... (Iontráil chun seol, Shift+Iontráil le haghaidh líne nua)", - "stop": "Stop", + "stop": "Stad", "noResponseBody": "Níl aon chorpnóir freagra", "comparePromptPlaceholder": "Iontráil do phrómp anseo…", "userPrompt": "Prómp úsáideora", @@ -11254,7 +11254,7 @@ "assistant": "Cúntóir", "errorLabel": "Earráid", "requestFailed": "Theip ar an iarratas", - "stop": "Stop" + "stop": "Stad" }, "requestLogger": { "recording": "Ag taifeadadh", @@ -11272,7 +11272,7 @@ "total": "Iomlán", "ok": "Rath", "err": "Earráid", - "combo": "Combo", + "combo": "Teaglaim", "keys": "Eochracha", "shown": "Taispeánta", "sortNewest": "Is nuaí", @@ -11300,7 +11300,7 @@ "all": "Uile", "error": "Earráid", "success": "Rath", - "combo": "Combo" + "combo": "Teaglaim" }, "columns": { "status": "Stádas", @@ -11463,7 +11463,7 @@ "loadingProxyLogs": "Ag lódáil logaí seachfhreastalaithe...", "noProxyLogs": "Níl aon logaí seachfhreastalaithe fós. Cumraigh seachfhreastalaithe agus déan glaonna API chun iad a fheiceáil anseo.", "noMatchingLogs": "Ní mheaitseáil aon logaí na scagairí reatha.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "tlsFingerprint": "Méarlorg TLS Chrome 124", "colPublicIp": "IP Poiblí" }, "endpointOptions": { @@ -11678,7 +11678,7 @@ "endpointsBaseUrl": "URL bunúsach", "endpointsCollapse": "Laghdaigh", "endpointsExpand": "Leathnaigh", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Dúchasach do Anthropic", "endpointsResponsesNote": "OpenAI Freagraí — codex/github", "endpointsWsNote": "WebSocket — codex amháin", "betaText": "Tá Cuóta Share feidhmiúil ach tá fabhanna ag súil leis. An bhfuaire tú amháin? Cuir fios go leor é.", @@ -11822,7 +11822,7 @@ "quotaStoreDriverChanged": "Athraíodh tiománaí QuotaStore", "updateApplied": "Nuashonrú {target} curtha i bhfeidhm", "deployCompleted": "Longadh críochnaithe", - "skillInstalled": "{actor} installed skill {target}", + "skillInstalled": "Shuiteáil {actor} scil {target}", "skillRemoved": "{actor} bhain sé scil de {target}", "providerCredentialsCreated": "{actor} chruthaigh dintiúir do {target}", "providerCredentialsApplied": "Dintiúir do {target} curtha i bhfeidhm", @@ -11867,7 +11867,7 @@ "serverIntercepted": "Idirghabhtha", "serverLastStarted": "Tosaithe go deireanach", "startServer": "Tosaigh", - "stopServer": "Stop", + "stopServer": "Stad", "restartServer": "Atosaigh", "trustCert": "Muinín Teastais", "downloadCert": "Íoslódáil Teastas", @@ -11909,7 +11909,7 @@ "saveMappings": "Sábháil mapaí", "setupWizard": "Treoraí Socrú", "startDns": "Tosaigh DNS", - "stopDns": "Stop DNS", + "stopDns": "Stad DNS", "toggling": "Ag scoráil…", "viewTraffic": "Amharc ar thráffic", "emptyNoProvidersTitle": "Níl aon soláthraithe cumraithe fós", @@ -12065,7 +12065,7 @@ "clearBtn": "Glan", "exportHar": "Easpórtáil .har", "recordSession": "TAIFEAD", - "stopSession": "Stop", + "stopSession": "Stad", "liveBadge": "beo", "offlineBadge": "as líne", "noRequests": "Gan aon iarratais gabhalta fós.", @@ -12542,7 +12542,7 @@ "categoryConfig": "Cumraíocht", "filterAll": "Uile", "coverageLabel": "Clúdach", - "mcpUrl": "MCP URL", + "mcpUrl": "URL MCP", "a2aLink": "A2A", "mcpPrompt": "Cuir an t-iarrthóir MCP seo le d'ionsaí chun 37 uirlis OmniRoute a thabhairt dó.", "a2aPrompt": "Cláraigh an Chárta Agent seo le d'eagróir chun tascanna A2A a chumasú.", @@ -12610,7 +12610,7 @@ "subtitle": "Scan soláthraithe le haghaidh modhanna rochtana saor in aisce gan teorainn agus déan athbhreithniú ar na torthaí. Roghnach, logánta amháin.", "scanLabel": "Soláthraí le scanadh", "scanPlaceholder": "m.sh. huggingchat", - "scan": "Scan", + "scan": "Scanadh", "scanning": "Ag scanadh…", "scanQueued": "Scan críochnaithe do {provider}.", "scanFailed": "Theip ar an scanadh.", @@ -12626,7 +12626,7 @@ "emptyDescription": "Rith scanadh thuas chun modhanna saor in aisce a lorg ar sholáthraí.", "risk": "Riosca", "method": "Modh", - "auth": "Auth", + "auth": "Fíordheimhniú", "feasibility": "Inniúlacht", "models": "Samhlacha" }, @@ -12992,7 +12992,7 @@ "description": "Ceadaigh d'aisghabháil srutha an freagra a iarraidh arís agus é a fhuáil le chéile tar éis do bhearta a bheith sroichte ag an gcliant cheana féin." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Déan leanúint ar aghaidh i lár srutha sábháilte do ghlaonna uirlise: ná hathchrom riamh ar shruth gearrtha tar éis glao uirlise a bheith seolta (bíodh sé fós ar bun nó críochnaithe cheana féin), agus stad tar éis aon leanúint fholamh amháin in ionad an buiséad iomlán atrialacha a úsáid." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Aistrigh uair amháin chuig nasc deirfiúr nuair a dhúntar sruth sula seoltar fráma úsáideach ar bith agus nuair atá an athiarracht theoranta ar an nasc céanna ídithe. Mura bhfuil nasc deirfiúr inúsáidte ann, seoltar an earráid early-EOF bhunaidh ar ais. As: fanann early-EOF críochnaitheach tar éis na hathiarrachta." @@ -13035,12 +13035,12 @@ "description": "Lean ar aghaidh le glaonna uirlise neamhshruthaithe atá faoi úinéireacht an fhreastalaí go dtí go gcuirfidh an tsamhail freagra ar fáil is féidir leis an gcliant a úsáid." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Bunús Retry-After", + "description": "I gcás freagraí comhiomlánaithe neamh-infhaighteachta 429/503, fág Retry-After ar lár nuair nach eol aon am sonrach amach anseo chun triail eile a bhaint as, in ionad luach saorga 1s a sheoladh; cuir error.retry_after_provenance leis; agus léigh leideanna atrialach i bprós ar chonairí draenála teaglama." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Stadanna Bonneagair Tosaíochta Cosanta mar 502", + "description": "Tabhair freagra 502 in ionad 503 nuair a stopann sprioc tosaíochta le cúltaca cuóta amháin an teaglama ar chúis ar féidir a chruthú nach mbaineann sí le cuóta: scoradán ciorcaid oscailte soláthraí nó scipeáil thuarthach de bharr aga folaigh." } } }, @@ -13463,7 +13463,7 @@ "supporterHint": "Níl athnuipeatú uathoibríoch ag roghanna aon-uair 6 mhí, 1 bhliain, agus saolré; carnann tréimhsí incháilithe agus téann saolré i bhfeidhm.", "colProvider": "Soláthraí", "colModel": "Múnla", - "colQuota": "Quota", + "colQuota": "Cuóta", "colLimits": "Teorainneacha", "trainsOnPrompts": "Oibríonn ar churrais", "trainsOnPromptsHelp": "Nochtaíonn an soláthraí seo go bhféadfaidh sé do churrais a úsáid chun múnlaí a oiliúint", @@ -13577,9 +13577,9 @@ "timeline": { "title": "Aistrithe Briseadh", "window": "Fuinneog", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1u", + "window6h": "6u", + "window24h": "24u", "empty": "Gan aon trasuí i bhfuinneog roghnaithe", "currentState": "Stát Reatha", "state": { @@ -13609,7 +13609,7 @@ "remaining": "Fágtha", "noLockouts": "Gan aon ghlásáil ghníomhach", "provider": "Soláthraí", - "id": "ID", + "id": "Aitheantas", "authType": "Cineál údaraithe", "priority": "Tosaíocht", "isActive": "Gníomhach", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Diúltaigh iarratais roimh seoladh nuair nach bhfuil cumais riachtanacha ag an sprioc-mhúnla (radharc, uirlisí, aschur struchtúrtha, fuinneog comhthéacs). Cosnaíonn sé iarrataí aonair díreach-aonair-bhunaithe a sheachann an scagaire comhoiriúlachta sraithe chomhcheangail.", "featureFlagDisableContextWindowChecksDescription": "Léim thar seiceáil fuinneog comhthéacs agus ionchur comhartha uasta OmniRoute d'iarrataí múnla-aonair dhíreacha. Fórsíonn na soláthraithe suasshrutha a dteorainn fíor-fholláin fós. Fanann comhbhrú leideanna agus teorainn aschur comhartha gníomhach.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Ní áirítear i staitisticí cuardaigh ná i gcuardaigh le déanaí ach soláthraithe a bhfuil nasc beo acu fós (áirítear soláthraithe gan eochair amhail duckduckgo-free i gcónaí). Coinníonn As gach ró cuardaigh coinnithe a bhfuil aitheantas soláthraí aige.", "publicSystem": { "notFound": { "title": "Leathanach gan aimsiú", @@ -13978,7 +13978,7 @@ "runners": "Ritheoirí", "tasks": "Tascanna", "colName": "Ainm", - "colClis": "CLIs", + "colClis": "CLIanna", "colStatus": "Stádas", "colTask": "Tasc", "colMode": "Mod", @@ -14032,7 +14032,7 @@ "historyEmpty": "Níl aon rithanna críochnaithe sa raon seo", "historyConductorNote": "Tá rithanna Conductor iargúlta agus ní bhíonn siad buan go háitiúil", "historySourceFailed": "Stair {source} gan fáil", - "historyRange1d": "24h", + "historyRange1d": "24u", "historyRange7d": "7 lá", "historyRange30d": "30 lá", "compareMode": "Cuir rití i gcomparáid", @@ -14053,7 +14053,7 @@ "clearFilters": "Glan scagairí", "sourceCloudAgent": "Gníomhaí Scáileáin", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Seoltóir", "sourceStale": "As dáta ó {since}", "sourceOffline": "As líne", "sourceCollapse": "Comhbhrúigh", @@ -14120,7 +14120,7 @@ "trialDays": "{days, plural, one {# lá} other {# laethanta}}" }, "radarIntelPage": { - "title": "Radar Intel", + "title": "Faisnéis Radair", "subtitle": "Ranganna ELO Radar agus gluaiseacht catalóige fíorasach.", "backToRadar": "Ar ais go Radar", "loading": "Ag lódáil Intel...", diff --git a/src/i18n/messages/gu.json b/src/i18n/messages/gu.json index 9328e707f7..92fc0f0ede 100644 --- a/src/i18n/messages/gu.json +++ b/src/i18n/messages/gu.json @@ -1,15 +1,15 @@ { "common": { - "save": "Save", - "cancel": "Cancel", - "delete": "Delete", - "loading": "Loading...", + "save": "સાચવો", + "cancel": "રદ કરો", + "delete": "કાઢી નાખો", + "loading": "લોડ થઈ રહ્યું છે...", "selectOption": "વિકલ્પ પસંદ કરો", - "error": "An error occurred", - "success": "Success", - "confirm": "Are you sure?", - "refresh": "Refresh", - "close": "Close", + "error": "એક ભૂલ આવી", + "success": "સફળતા", + "confirm": "શું તમને ખાતરી છે?", + "refresh": "તાજું કરો", + "close": "બંધ કરો", "previousPage": "અગાઉનું પૃષ્ઠ", "nextPage": "આગલું પૃષ્ઠ", "capsLockOn": "Caps Lock ચાલુ છે", @@ -17,142 +17,142 @@ "toggleColumns": "કૉલમ ટૉગલ કરો", "confirmTitle": "પુષ્ટિ કરો", "confirmAction": "પુષ્ટિ કરો", - "add": "Add", - "edit": "Edit", - "search": "Search", - "back": "Back", - "next": "Next", - "submit": "Submit", - "reset": "Reset", - "copy": "Copy", - "copied": "Copied!", - "enabled": "Enabled", - "disabled": "Disabled", - "active": "Active", - "inactive": "Inactive", - "noData": "No data available", - "nothingHere": "Nothing here yet", - "configure": "Configure", + "add": "ઉમેરો", + "edit": "ફેરફાર કરો", + "search": "શોધો", + "back": "પાછળ", + "next": "આગળ", + "submit": "સબમિટ કરો", + "reset": "રીસેટ કરો", + "copy": "કૉપિ કરો", + "copied": "કૉપિ થઈ ગયું!", + "enabled": "સક્ષમ", + "disabled": "અક્ષમ", + "active": "સક્રિય", + "inactive": "નિષ્ક્રિય", + "noData": "કોઈ ડેટા ઉપલબ્ધ નથી", + "nothingHere": "હજુ સુધી અહીં કંઈ નથી", + "configure": "ગોઠવો", "manualConfig": "મેન્યુઅલ કન્ફિગ", - "manage": "Manage", - "name": "Name", - "actions": "Actions", - "status": "Status", - "type": "Type", + "manage": "વ્યવસ્થાપિત કરો", + "name": "નામ", + "actions": "ક્રિયાઓ", + "status": "સ્થિતિ", + "type": "પ્રકાર", "model": "Model", - "models": "models", - "provider": "Provider", + "models": "મોડેલો", + "provider": "પ્રદાતા", "unknownProvider": "અજ્ઞાત પ્રદાતા", - "account": "Account", - "time": "Time", - "details": "Details", - "created": "Created", - "lastUsed": "Last Refreshed", - "loadMore": "Load More", - "noResults": "No results found", - "reloadPage": "Reload Page", - "connected": "Connected", - "disconnected": "Disconnected", - "notConfigured": "Not configured", - "testConnection": "Test Connection", - "enable": "Enable", - "disable": "Disable", - "columns": "Columns", - "newest": "Newest", - "oldest": "Oldest", - "all": "All", - "none": "None", - "yes": "Yes", - "no": "No", + "account": "ખાતું", + "time": "સમય", + "details": "વિગતો", + "created": "બનાવ્યું", + "lastUsed": "છેલ્લે તાજું કર્યું", + "loadMore": "વધુ લોડ કરો", + "noResults": "કોઈ પરિણામ મળ્યાં નથી", + "reloadPage": "પેજ ફરીથી લોડ કરો", + "connected": "કનેક્ટ થયેલ", + "disconnected": "ડિસ્કનેક્ટ થયેલ", + "notConfigured": "રૂપરેખાંકિત નથી", + "testConnection": "કનેક્શન તપાસો", + "enable": "સક્ષમ કરો", + "disable": "અક્ષમ કરો", + "columns": "કૉલમ્સ", + "newest": "સૌથી નવું", + "oldest": "સૌથી જૂનું", + "all": "બધા", + "none": "કોઈ નહીં", + "yes": "હા", + "no": "ના", "on": "ચાલુ", "off": "બંધ", - "warning": "Warning", - "note": "Note", - "free": "Free", - "skipToContent": "Skip to content", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", - "accept": "Accept", - "accountId": "Account ID", + "warning": "ચેતવણી", + "note": "નોંધ", + "free": "મફત", + "skipToContent": "સામગ્રી પર જાઓ", + "maintenanceServerIssues": "સર્વરમાં સમસ્યાઓ આવી રહી છે. કેટલીક સુવિધાઓ અનુપલબ્ધ હોઈ શકે છે.", + "maintenanceServerUnreachable": "સર્વર સુધી પહોંચી શકાતું નથી. ફરીથી કનેક્ટ થઈ રહ્યું છે...", + "accept": "સ્વીકારો", + "accountId": "એકાઉન્ટ ID", "alias": "Alias", - "apiKeyId": "API Key ID", - "apiKeyName": "API Key Name", - "apiKeySecret": "API Key Secret", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "apiKeyId": "API કી ID", + "apiKeyName": "API કીનું નામ", + "apiKeySecret": "API કી સિક્રેટ", + "authorization": "અધિકૃતતા", + "content-type": "સામગ્રીનો પ્રકાર", + "content-length": "સામગ્રીની લંબાઈ", "cookie": "Cookie", - "file": "File", - "host": "Host", + "file": "ફાઇલ", + "host": "હોસ્ટ", "id": "ID", - "import": "Import", + "import": "આયાત કરો", "limit": "Limit", "offset": "Offset", - "open": "Open", - "origin": "Origin", - "promptTokens": "Prompt Tokens", - "completionTokens": "Completion Tokens", - "totalTokens": "Total Tokens", - "rawModel": "Raw Model", - "scope": "Scope", - "skill": "Skill", - "sortBy": "Sort By", - "sortOrder": "Sort Order", - "tab": "Tab", + "open": "ખોલો", + "origin": "મૂળ", + "promptTokens": "પ્રોમ્પ્ટ ટોકન્સ", + "completionTokens": "પૂર્ણતા ટોકન્સ", + "totalTokens": "કુલ ટોકન્સ", + "rawModel": "મૂળ મોડેલ", + "scope": "કાર્યક્ષેત્ર", + "skill": "કૌશલ્ય", + "sortBy": "આના દ્વારા ગોઠવો", + "sortOrder": "ગોઠવણી ક્રમ", + "tab": "ટૅબ", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "ટેક્સ્ટ વિસ્તાર", + "tool": "ટૂલ", + "toolId": "ટૂલ ID", "web": "Web", - "whereUsed": "Where Used", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "resolve": "Resolve", - "force": "Force", + "whereUsed": "જ્યાં ઉપયોગ થયો", + "whitelist": "શ્વેતસૂચિ", + "blacklist": "કાળીસૂચિ", + "resolve": "ઉકેલો", + "force": "ફરજિયાત કરો", "base64url": "Base64 URL", "hex": "Hex", - "range": "Range", - "component": "Component", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", - "code": "Code", - "compatible": "Compatible", - "chat-completions": "Chat Completions", + "range": "શ્રેણી", + "component": "ઘટક", + "redirect_uri": "રીડાયરેક્ટ URI", + "idempotency-key": "આઇડેમ્પોટેન્સી કી", + "error_description": "ભૂલનું વર્ણન", + "code": "કોડ", + "compatible": "સુસંગત", + "chat-completions": "ચૅટ પૂર્ણતાઓ", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", - "hours": "Hours", + "auth_token": "ઑથ ટોકન", + "crypto": "ક્રિપ્ટો", + "hours": "કલાકો", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", - "resolveConnectionId": "Resolve Connection ID", - "resolve_connection_id": "Resolve Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "proxy_id": "પ્રૉક્સી ID", + "proxyId": "પ્રૉક્સી ID", + "connectionId": "કનેક્શન ID", + "resolveConnectionId": "કનેક્શન ID ઉકેલો", + "resolve_connection_id": "કનેક્શન ID ઉકેલો", + "scope_id": "સ્કોપ ID", + "scopeId": "સ્કોપ ID", + "jwtSecret": "JWT સિક્રેટ", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", "builder-id": "Builder ID", - "musicDesc": "Music Description", - "musicGeneration": "Music Generation", + "musicDesc": "સંગીતનું વર્ણન", + "musicGeneration": "સંગીત નિર્માણ", "idc": "IDC", - "cloud-status-changed": "Cloud status changed", - "where_used": "Where Used", - "windowMs": "Window (ms)", + "cloud-status-changed": "ક્લાઉડની સ્થિતિ બદલાઈ", + "where_used": "જ્યાં ઉપયોગ થયો", + "windowMs": "વિન્ડો (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", - "Failed to save pricing": "Failed to save pricing", - "Failed to reset pricing": "Failed to reset pricing", - "apikey": "API Key", + "TOOL_ALLOWLIST": "ટૂલ મંજૂરસૂચિ", + "TOOL_DENYLIST": "ટૂલ પ્રતિબંધસૂચિ", + "Failed to save pricing": "કિંમત સાચવવામાં નિષ્ફળતા", + "Failed to reset pricing": "કિંમત રીસેટ કરવામાં નિષ્ફળતા", + "apikey": "API કી", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "ડૅશબોર્ડ પર જાઓ", + "checkSystemStatus": "સિસ્ટમની સ્થિતિ તપાસો", + "selectModel": "મોડેલ પસંદ કરો", "addModel": "મોડેલ ઉમેરો", "effortNone": "કોઈ નહીં", "effortLow": "ઓછું", @@ -164,10 +164,10 @@ "reasoningEffort": "તાર્કિક પ્રયાસ", "wireApi": "વાયર API", "modelAliases": "મોડેલ ઉપનામો", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "કોમ્બોઝ", + "noModelsFound": "કોઈ મોડેલ મળ્યાં નથી", + "clear": "સાફ કરો", + "done": "પૂર્ણ", "selectAll": "બધા પસંદ કરો", "unselectAll": "પસંદગી રદ કરો", "visibleModels": "દૃશ્યમાન", @@ -184,527 +184,527 @@ "selectAllProviders": "બધા પ્રદાતાઓની તપાસ કરો", "clearProviderSelection": "પ્રદાતાઓને અનચેક કરો", "providersSelectedCount": "{count} પ્રદાતાઓ તપાસવામાં આવ્યા", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "ભૂલ થઈ", + "comboDeleted": "કોમ્બો કાઢી નાખ્યો", + "hide": "છુપાવો", + "creating": "બનાવી રહ્યું છે", + "comboCreated": "કોમ્બો બનાવ્યો", + "swapFormats": "ફોર્મેટ બદલો", + "daysAgo": "દિવસ પહેલાં", + "retries": "ફરી પ્રયાસોની સંખ્યા", + "errorDuringRestore": "પુનઃસ્થાપન દરમિયાન ભૂલ", + "eventsAppearHint": "ઇવેન્ટ્સ દેખાવા અંગેનો સંકેત", + "noLockouts": "કોઈ લૉકઆઉટ નથી", + "webSearchDesc": "વેબ શોધનું વર્ણન", + "audioProvidersHeading": "ઑડિયો પ્રદાતાઓનું મથાળું", "cloudAgentProviders": "ક્લાઉડ એજન્ટ પ્રદાતાઓ", - "minutesAgo": "Minutes Ago", + "minutesAgo": "મિનિટ પહેલાં", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "લાઇવ સ્વચાલિત રિફ્રેશ થઈ રહ્યું છે", + "webSearch": "વેબ શોધ", + "anthropicPrefixPlaceholder": "Anthropic પ્રીફિક્સ પ્લેસહોલ્ડર", + "addModelToCombo": "કોમ્બોમાં મોડેલ ઉમેરો", + "failedToLoad": "લોડ કરવામાં નિષ્ફળ", + "categoryMedia": "શ્રેણી: મીડિયા", + "enableCloud": "ક્લાઉડ સક્ષમ કરો", + "expirationBannerExpiringSoon": "સમાપ્તિ બૅનર: ટૂંક સમયમાં સમાપ્ત થઈ રહ્યું છે", + "retry": "ફરી પ્રયાસ કરો", + "embeddings": "એમ્બેડિંગ્સ", + "errorCount": "ભૂલોની સંખ્યા", + "backupReasonManual": "બૅકઅપનું કારણ: મેન્યુઅલ", + "safeSearchModerate": "સલામત શોધ: મધ્યમ", + "activeLimiters": "સક્રિય મર્યાદકો", + "a2aCardTitle": "A2A કાર્ડનું શીર્ષક", + "cloudWorkerUnreachable": "ક્લાઉડ વર્કર સુધી પહોંચી શકાતું નથી", + "testFailed": "પરીક્ષણ નિષ્ફળ ગયું", + "compatibleBaseUrlHint": "સુસંગત બેઝ URL અંગેનો સંકેત", + "usageTracking": "વપરાશ ટ્રૅકિંગ", + "disableCloudTitle": "ક્લાઉડ અક્ષમ કરો શીર્ષક", + "noConnections": "કોઈ કનેક્શન નથી", + "providerHealth": "પ્રદાતાની સ્થિતિ", + "confirmDbImport": "DB આયાતની પુષ્ટિ કરો", + "notAvailableSymbol": "ઉપલબ્ધ નથી ચિહ્ન", + "backupsAvailable": "બૅકઅપ ઉપલબ્ધ છે", + "providerAuto": "પ્રદાતા ઑટો", + "newProviderNamePlaceholder": "નવા પ્રદાતાના નામનું પ્લેસહોલ્ડર", + "a2aQuickStartStep2": "A2A ઝડપી શરૂઆતનું પગલું 2", + "ok": "ઠીક છે", + "available": "ઉપલબ્ધ", + "noBackupYet": "હજુ સુધી કોઈ બૅકઅપ નથી", + "more": "વધુ", + "noCompatibleYet": "હજુ સુધી કોઈ સુસંગત નથી", + "multiProvider": "બહુવિધ પ્રદાતા", + "repairEnvHint": "એન્વાયર્નમેન્ટ રિપેર માટેની સૂચના", + "disablingCloud": "ક્લાઉડ અક્ષમ કરી રહ્યાં છીએ", + "testBench": "ટેસ્ટ બેન્ચ", + "valid": "માન્ય", + "cloudBenefitShare": "ક્લાઉડ લાભ શેર કરો", + "mcpCardTitle": "MCP કાર્ડનું શીર્ષક", + "disableConfirm": "અક્ષમ કરવાની પુષ્ટિ કરો", + "filters": "ફિલ્ટર્સ", + "expirationBannerExpiredDesc": "સમાપ્તિ બૅનર—સમાપ્ત થયાનું વર્ણન", + "saveComboDefaults": "કૉમ્બોના ડિફૉલ્ટ્સ સાચવો", + "cloudConnectedVerified": "ક્લાઉડ કનેક્શન ચકાસાયેલ છે", + "uptime": "અપટાઇમ", + "compatibleProdPlaceholder": "સુસંગત પ્રોડક્ટનું પ્લેસહોલ્ડર", + "fallbackChainsTitle": "ફૉલબૅક ચેઇન્સનું શીર્ષક", + "oauthLabel": "OAuth લેબલ", + "a2aCardDescription": "A2A કાર્ડનું વર્ણન", + "okShort": "ઠીક", + "maintenance": "જાળવણી", + "formatConverter": "ફૉર્મેટ કન્વર્ટર", + "zedImportNetworkError": "Zed આયાત નેટવર્ક ભૂલ", + "apiKeyLabel": "API કી લેબલ", + "noModelsForProvider": "પ્રદાતા માટે કોઈ મૉડલ નથી", + "mcpCardDescription": "MCP કાર્ડનું વર્ણન", + "apiTypeLabel": "API પ્રકારનું લેબલ", + "configuredProvidersLabel": "કૉન્ફિગર કરેલા પ્રદાતાઓનું લેબલ", + "maxRetriesLabel": "મહત્તમ પુનઃપ્રયાસોનું લેબલ", + "title": "શીર્ષક", + "output": "આઉટપુટ", + "prefixHint": "પ્રીફિક્સ સંકેત", + "skipWizard": "વિઝાર્ડ છોડો", + "failedCount": "નિષ્ફળ સંખ્યા", + "confirmDbImportDesc": "ડેટાબેઝ આયાત પુષ્ટિનું વર્ણન", + "entries": "એન્ટ્રીઓ", + "until": "સુધી", + "disableCombo": "કોમ્બો અક્ષમ કરો", + "liveMonitorDescriptionPrefix": "લાઇવ મોનિટર વર્ણન પ્રીફિક્સ", + "runningCount": "ચાલુ સંખ્યા", + "noActiveConnectionsInGroup": "જૂથમાં કોઈ સક્રિય કનેક્શન નથી", + "savedSuccessfully": "સફળતાપૂર્વક સાચવ્યું", + "systemStorage": "સિસ્ટમ સ્ટોરેજ", + "videoDesc": "વિડિયો વર્ણન", + "maxResults": "મહત્તમ પરિણામો", + "timeRangeMonth": "સમયગાળો: મહિનો", + "testSummary": "પરીક્ષણ સારાંશ", + "failedSetPassword": "પાસવર્ડ સેટ કરવામાં નિષ્ફળ", + "audio": "ઑડિયો", + "restore": "પુનઃસ્થાપિત કરો", + "disableWarning": "ચેતવણી અક્ષમ કરો", + "moderationsDesc": "મોડરેશનનું વર્ણન", + "providerHealthStatusAria": "પ્રદાતાની કાર્યક્ષમતા સ્થિતિ માટેનું Aria", + "modelNamePlaceholder": "મોડલ નામનું પ્લેસહોલ્ડર", + "mcpQuickStartStep2": "Mcp ઝડપી શરૂઆત પગલું 2", + "quickStart": "ઝડપી શરૂઆત", + "fullExportFailedWithError": "ભૂલ સાથે સંપૂર્ણ નિકાસ નિષ્ફળ થઈ", + "loadingBackups": "બૅકઅપ લોડ થઈ રહ્યાં છે", + "anthropicBaseUrlPlaceholder": "Anthropic બેઝ Url પ્લેસહોલ્ડર", + "description": "વર્ણન", + "noProviderFound": "કોઈ પ્રદાતા મળ્યો નથી", + "auto": "સ્વચાલિત", + "protocolsDescription": "પ્રોટોકોલ્સનું વર્ણન", + "cloudSessionNote": "ક્લાઉડ સત્ર નોંધ", + "advancedSettings": "અદ્યતન સેટિંગ્સ", + "defaultStrategy": "ડિફૉલ્ટ વ્યૂહરચના", + "purgeExpiredLogs": "સમયસમાપ્ત લૉગ્સ સાફ કરો", + "justNow": "હમણાં જ", + "providerTestFailed": "પ્રદાતા પરીક્ષણ નિષ્ફળ થયું", + "openaiBaseUrlPlaceholder": "OpenAI બેઝ URL પ્લેસહોલ્ડર", + "image": "છબી", + "failedCreateChain": "ચેઇન બનાવવામાં નિષ્ફળ", + "importDatabase": "ડેટાબેઝ આયાત કરો", + "allDataLocal": "તમામ ડેટા સ્થાનિક", + "sectionTitle": "વિભાગનું શીર્ષક", + "failedToggle": "ટૉગલ કરવામાં નિષ્ફળ", + "editCombo": "કોમ્બો સંપાદિત કરો", + "testResults": "પરીક્ષણ પરિણામો", + "searchQuery": "શોધ ક્વેરી", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "ડુપ્લિકેટ", + "createCombo": "કોમ્બો બનાવો", + "searchTypeWeb": "શોધ પ્રકાર: વેબ", + "addChain": "ચેઇન ઉમેરો", + "prefixLabel": "ઉપસર્ગ લેબલ", + "listModelsDesc": "મોડેલોની સૂચિનું વર્ણન", + "databaseSize": "ડેટાબેઝનું કદ", + "chainCreated": "ચેઇન બનાવવામાં આવી", + "providerTestTimeout": "પ્રદાતા પરીક્ષણ સમયસમાપ્તિ", + "routingStrategy": "રૂટિંગ વ્યૂહરચના", + "translateAction": "અનુવાદ ક્રિયા", + "exportFailed": "નિકાસ નિષ્ફળ", + "connectedVerificationPending": "કનેક્ટ થયું, ચકાસણી બાકી છે", + "a2aQuickStartTitle": "A2A ઝડપી શરૂઆતનું શીર્ષક", + "couldNotTest": "પરીક્ષણ કરી શકાયું નહીં", + "testAllCompatible": "બધા સુસંગતનું પરીક્ષણ કરો", + "anthropicCompatibleName": "Anthropic સુસંગત નામ", + "disabling": "અક્ષમ કરી રહ્યું છે", + "failedEnable": "સક્ષમ કરવામાં નિષ્ફળ", + "categoryUtility": "ઉપયોગિતા શ્રેણી", + "customUrlOptional": "કસ્ટમ URL વૈકલ્પિક", + "localProviders": "સ્થાનિક પ્રદાતાઓ", + "comboNamePlaceholder": "કોમ્બો નામ પ્લેસહોલ્ડર", + "memoryRss": "મેમરી RSS", + "disableProvider": "પ્રદાતાને અક્ષમ કરો", + "welcomeDesc": "સ્વાગત વર્ણન", + "nameLabel": "નામનું લેબલ", + "allOperational": "બધું કાર્યરત છે", + "backupNow": "હમણાં બૅકઅપ લો", + "providerMaxRetriesAria": "પ્રદાતાના મહત્તમ પુનઃપ્રયાસો માટે ARIA", + "textToSpeechDesc": "ટેક્સ્ટ ટુ સ્પીચનું વર્ણન", + "machineId": "મશીન ID", + "globalProxy": "વૈશ્વિક પ્રોક્સી", + "hitsMisses": "હિટ્સ અને મિસિસ", + "testDesc": "પરીક્ષણનું વર્ણન", + "chatDesc": "ચેટનું વર્ણન", + "importSuccess": "આયાત સફળ થઈ", + "chat": "ચેટ", + "a2aQuickStartStep1": "A2A ઝડપી શરૂઆતનું પગલું 1", + "importFailed": "આયાત નિષ્ફળ થઈ", + "inputPlaceholder": "ઇનપુટ પ્લેસહોલ્ડર", + "providerModelsTitle": "પ્રદાતા મોડલ્સનું શીર્ષક", + "lastBackup": "છેલ્લું બેકઅપ", + "yourEndpoint": "તમારું એન્ડપોઇન્ટ", + "autoDisableThresholdDesc": "આપમેળે અક્ષમ કરવાની મર્યાદાનું વર્ણન", + "rerankDesc": "પુનઃક્રમનિર્ધારણનું વર્ણન", + "modelsPathPlaceholder": "મોડલ્સ પાથ પ્લેસહોલ્ડર", + "noCombosYet": "હજુ સુધી કોઈ કોમ્બો નથી", + "connectedVerificationPendingWithError": "કનેક્ટ થયેલ છે, ચકાસણી ભૂલ સાથે બાકી છે", + "comboDefaultsGuideHint1": "કોમ્બોની ડિફૉલ્ટ માર્ગદર્શિકાનો સંકેત 1", + "enableCloudTitle": "ક્લાઉડ સક્ષમ કરો", + "configuredProvidersHint": "ગોઠવેલા પ્રદાતાઓ માટેનો સંકેત", + "paused": "વિરામ આપેલ", + "llmProviders": "LLM પ્રદાતાઓ", + "enableCombo": "કોમ્બો સક્ષમ કરો", + "removeProviderOverrideAria": "પ્રદાતા ઓવરરાઇડ દૂર કરવા માટેનું Aria", + "nodeVersion": "Node સંસ્કરણ", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "ભૂલને કારણે નિકાસ નિષ્ફળ થઈ", + "proxyConfigured": "પ્રોક્સી ગોઠવેલ છે", + "concurrencyPerModel": "પ્રતિ મોડલ સમકાલીનતા", + "protocolTasksLabel": "પ્રોટોકોલ કાર્યોનું લેબલ", + "oauthProviders": "OAuth પ્રદાતાઓ", + "lockedCount": "લૉક કરેલની સંખ્યા", + "deleteChainConfirm": "ચેઇન કાઢી નાખવાની પુષ્ટિ કરો", + "recentTranslations": "તાજેતરના અનુવાદો", + "zedImportButton": "Zed આયાત બટન", + "responsesDesc": "પ્રતિસાદોનું વર્ણન", + "testedCount": "પરીક્ષણ કરેલની સંખ્યા", + "providersCommaSeparatedPlaceholder": "અલ્પવિરામથી અલગ કરેલા પ્રદાતાઓ માટેનો પ્લેસહોલ્ડર", + "signatureDefaults": "સહીની ડિફૉલ્ટ સેટિંગ્સ", + "errorCreating": "બનાવવામાં ભૂલ", + "timeRangeYear": "સમયગાળો: વર્ષ", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", - "testBenchTab": "Test Bench", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "cloudDisabledSuccess": "ક્લાઉડ સફળતાપૂર્વક અક્ષમ થયું", + "deleteConfirm": "કાઢી નાખવાની પુષ્ટિ કરો", + "check": "તપાસો", + "safeSearch": "સુરક્ષિત શોધ", + "protocolLastActivity": "પ્રોટોકોલની છેલ્લી પ્રવૃત્તિ", + "openMcpDashboard": "Mcp ડૅશબોર્ડ ખોલો", + "testBenchTab": "ટેસ્ટ બેન્ચ", + "chatPathLabel": "ચૅટ પાથનું લેબલ", + "retryDelay": "ફરી પ્રયાસ કરવાનો વિલંબ", + "errorUpdating": "અપડેટ કરવામાં ભૂલ", + "ideCliIntegrations": "IDE CLI એકીકરણો", + "imageGeneration": "છબી નિર્માણ", + "apiKeyRequired": "API કી જરૂરી છે", + "resetAllTitle": "બધું રીસેટ કરો", + "connectionError": "કનેક્શન ભૂલ", + "modelName": "મોડેલનું નામ", + "apiKeyForCheck": "તપાસ માટેની API કી", + "cloudRequestTimeout": "ક્લાઉડ વિનંતીનો સમય સમાપ્ત થયો", + "showConfiguredOnly": "ફક્ત કૉન્ફિગર કરેલ બતાવો", "showFreeOnly": "માત્ર મફત", "addFirstProvider": "તમારા પ્રથમ પ્રદાતા ઉમેરો", "addFirstProviderDesc": "OmniRoute દ્વારા રૂટીંગ વિનંતીઓ શરૂ કરવા માટે AI પ્રદાતાને કનેક્ટ કરો. તમે મફત પ્રદાતાઓ, API કી અથવા OAuth એકાઉન્ટ્સનો ઉપયોગ કરી શકો છો.", "learnMore": "વધુ જાણો", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "ડોમેન સામેલ કરો", + "promptCache": "પ્રોમ્પ્ટ કૅશ", + "cloudConnected": "ક્લાઉડ કનેક્ટ થયું", + "deleteChain": "ચેઇન કાઢી નાખો", + "chatPathPlaceholder": "ચૅટ પાથનું પ્લેસહોલ્ડર", + "databasePath": "ડેટાબેઝ પાથ", + "usingLocalServer": "સ્થાનિક સર્વરનો ઉપયોગ થઈ રહ્યો છે", + "globalComboConfig": "વૈશ્વિક કૉમ્બો કૉન્ફિગરેશન", + "backupFailed": "બૅકઅપ નિષ્ફળ થયું", + "tabProtocols": "પ્રોટોકોલ ટૅબ", + "continue": "ચાલુ રાખો", + "categorySearch": "કૅટેગરી શોધ", + "rateLimitStatus": "દર મર્યાદાની સ્થિતિ", + "repairEnvSuccess": "પર્યાવરણ સફળતાપૂર્વક સુધારાયું", + "nameRequired": "નામ જરૂરી છે", + "country": "દેશ", + "trackMetricsDesc": "મેટ્રિક્સ ટ્રૅક કરવાનું વર્ણન", + "durationSecondsShort": "અવધિ (સેકન્ડમાં, ટૂંકી)", + "formatConverterDescription": "ફોર્મેટ કન્વર્ટરનું વર્ણન", + "cloudBenefitAccess": "ક્લાઉડ લાભ ઍક્સેસ", + "maxRetries": "મહત્તમ પુનઃપ્રયાસો", + "queueTimeout": "કતાર સમયસમાપ્તિ", "queueDepth": "કતારની ઊંડાઈ", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "પ્રદાતા ઉમેરો", + "realtime": "રીઅલટાઇમ", + "totalTranslations": "કુલ અનુવાદો", + "protocolActiveStreamsLabel": "પ્રોટોકોલ સક્રિય સ્ટ્રીમ્સ લેબલ", + "repairEnv": "Env સુધારો", + "modelsCount": "મોડેલોની સંખ્યા", + "viewBackups": "બૅકઅપ્સ જુઓ", + "responsesApi": "Responses API", + "copyComboName": "કોમ્બો નામ કૉપિ કરો", + "failures": "નિષ્ફળતાઓ", + "failedUpdate": "અપડેટ નિષ્ફળ થયું", + "imageDesc": "છબીનું વર્ણન", + "failedCreate": "બનાવવાનું નિષ્ફળ થયું", + "remainingOfLimit": "મર્યાદામાંથી બાકી", + "protocolsTitle": "પ્રોટોકોલ્સનું શીર્ષક", + "expirationBannerExpiringSoonDesc": "સમાપ્તિ બૅનર ટૂંક સમયમાં સમાપ્ત થશે તેનું વર્ણન", + "source": "સ્રોત", + "failed": "નિષ્ફળ", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "Mcp ઝડપી શરૂઆત પગલું 1", + "runTest": "પરીક્ષણ ચલાવો", + "loadingFallbackChains": "ફૉલબૅક ચેઇન્સ લોડ થઈ રહી છે", + "healthy": "સ્વસ્થ", + "version": "આવૃત્તિ", + "saveBlockWeighted": "વેઇટેડ બ્લૉક સાચવો", + "zedImportNone": "Zed આયાત કોઈ નહીં", + "noBackupsYet": "હજુ સુધી કોઈ બૅકઅપ નથી", + "noGlobalProxy": "કોઈ ગ્લોબલ પ્રૉક્સી નથી", + "noModels": "કોઈ મોડેલ નથી", + "stickyLimit": "સ્ટિકી મર્યાદા", + "passedCount": "પાસ થયેલાની સંખ્યા", + "zedImportFailed": "Zed આયાત નિષ્ફળ થઈ", + "saving": "સાચવી રહ્યું છે", + "testAll": "બધાનું પરીક્ષણ કરો", + "globalProxyDesc": "ગ્લોબલ પ્રૉક્સીનું વર્ણન", + "latencyP99": "લેટન્સી P99", + "connectingToCloud": "ક્લાઉડ સાથે કનેક્ટ થઈ રહ્યું છે", + "responses": "પ્રતિસાદો", + "errorDeleting": "કાઢી નાખવામાં ભૂલ", + "openaiPrefixPlaceholder": "Openai ઉપસર્ગ પ્લેસહોલ્ડર", + "enterPassword": "પાસવર્ડ દાખલ કરો", + "openA2aDashboard": "A2A ડેશબોર્ડ ખોલો", + "enableProvider": "પ્રદાતા સક્ષમ કરો", + "modeTest": "પરીક્ષણ મોડ", + "failedDeleteChain": "શૃંખલા કાઢી નાખવામાં નિષ્ફળતા", + "providerDesc": "પ્રદાતાનું વર્ણન", + "templateLoadHint": "ટેમ્પલેટ લોડ કરવાનો સંકેત", + "lastFailure": "છેલ્લી નિષ્ફળતા", + "moveDown": "નીચે ખસેડો", + "providerLabel": "પ્રદાતાનું લેબલ", + "clearCacheFailed": "કૅશ સાફ કરવામાં નિષ્ફળતા", + "imagesGenerations": "છબી નિર્માણ", + "repairEnvWorking": "પર્યાવરણનું સમારકામ ચાલુ છે", + "millisecondsShort": "મિલિસેકન્ડ", + "globalLabel": "વૈશ્વિક લેબલ", + "failuresPlural": "નિષ્ફળતાઓ", + "completionsLegacyDesc": "જૂના કમ્પ્લીશન્સનું વર્ણન", + "searchProviders": "પ્રદાતાઓ શોધો", + "chatPathHint": "ચૅટ પાથ માટેનો સંકેત", + "defaultStrategyDesc": "ડિફૉલ્ટ વ્યૂહરચનાનું વર્ણન", + "latencyP95": "લેટન્સી P95", + "textToSpeech": "ટેક્સ્ટથી વાણી", + "searchType": "શોધનો પ્રકાર", + "messages": "સંદેશાઓ", + "aggregatorsGateways": "એગ્રીગેટર્સ અને ગેટવેઝ", + "comboStrategyAria": "Aria સંયુક્ત વ્યૂહરચના", + "input": "ઇનપુટ", + "testingConnection": "કનેક્શનનું પરીક્ષણ થઈ રહ્યું છે", + "excludeDomains": "ડોમેન બાકાત રાખો", + "webCookieProviders": "વેબ કુકી પ્રદાતાઓ", + "allTestsPassed": "બધાં પરીક્ષણો સફળ રહ્યાં", + "openaiCompatibleName": "Openai સુસંગત નામ", + "warningCostOptimizedPartialPricing": "ચેતવણી: ખર્ચ-ઑપ્ટિમાઇઝ્ડ આંશિક કિંમતનિર્ધારણ", + "comboDefaultsGuideTitle": "સંયુક્ત ડિફૉલ્ટ્સ માર્ગદર્શિકાનું શીર્ષક", + "hoursAgo": "કલાક પહેલાં", + "notAvailable": "ઉપલબ્ધ નથી", + "skipAndContinue": "છોડી દો અને ચાલુ રાખો", + "moderations": "મોડરેશન્સ", + "proxyConfig": "પ્રોક્સી રૂપરેખાંકન", + "upstreamProxyProviders": "અપસ્ટ્રીમ પ્રોક્સી પ્રદાતાઓ", + "exportAll": "બધું નિકાસ કરો", + "queuedCount": "કતારમાં રહેલી સંખ્યા", + "resetAll": "બધું રીસેટ કરો", + "noTranslations": "કોઈ અનુવાદ નથી", + "avgLatency": "સરેરાશ વિલંબતા", + "throttleStatus": "થ્રોટલ સ્થિતિ", + "backupRetentionDesc": "બેકઅપ જાળવણીનું વર્ણન", + "noCBData": "કોઈ Cb ડેટા નથી", + "chainDeleted": "ચેઇન કાઢી નાખવામાં આવી", + "timeLeft": "બાકી સમય", + "expirationBannerExpired": "સમાપ્તિ બૅનરની મુદત પૂરી થઈ", + "language": "ભાષા", + "invalidFileType": "અમાન્ય ફાઇલ પ્રકાર", + "monitoredProviders": "નિરીક્ષણ હેઠળના પ્રદાતાઓ", + "errors": "ભૂલો", + "heap": "હીપ", + "chatCompletions": "ચેટ પૂર્ણતાઓ", + "exampleTemplatesHint": "ઉદાહરણ ટેમ્પ્લેટ્સ માટેનો સંકેત", + "retryDelayLabel": "ફરી પ્રયાસના વિલંબનું લેબલ", + "audioTranscription": "ઑડિયો ટ્રાન્સક્રિપ્શન", + "fallbackChainsDesc": "ફૉલબૅક ચેઇન્સનું વર્ણન", + "exampleTemplates": "ઉદાહરણ ટેમ્પ્લેટ્સ", + "connectionsCount": "કનેક્શન્સની સંખ્યા", + "modelsPathLabel": "મોડેલ્સ પાથનું લેબલ", + "activeProvidersHint": "સક્રિય પ્રદાતાઓ માટેનો સંકેત", + "activeLockouts": "સક્રિય લૉકઆઉટ્સ", + "invalid": "અમાન્ય", + "skipPassword": "પાસવર્ડ છોડો", + "moveUp": "ઉપર ખસેડો", + "timeRange": "સમયગાળો", + "stickyLimitDesc": "સ્ટિકી મર્યાદાનું વર્ણન", + "cloudBenefitEdge": "ક્લાઉડ લાભ એજ", + "custom": "કસ્ટમ", + "verifying": "ચકાસી રહ્યું છે", + "baseUrlLabel": "બેઝ URLનું લેબલ", + "setPassword": "પાસવર્ડ સેટ કરો", + "safeSearchStrict": "સેફ સર્ચ કડક", + "noChangesSinceBackup": "બેકઅપ પછી કોઈ ફેરફારો નથી", + "modelsPathHint": "મોડેલ્સ પાથ સંકેત", + "audioTranscriptions": "ઑડિયો ટ્રાન્સક્રિપ્શન", + "testCombo": "કોમ્બોનું પરીક્ષણ કરો", + "mcpQuickStartTitle": "Mcp ઝડપી શરૂઆત શીર્ષક", + "comboUpdated": "કોમ્બો અપડેટ થયો", + "weighted": "ભારાંકિત", + "providers": "પ્રદાતાઓ", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", - "chatTesterTab": "Chat Tester", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "noFallbackChainsDesc": "કોઈ ફૉલબૅક ચેઇન નથી તેનું વર્ણન", + "yesImport": "હા, આયાત કરો", + "lockoutsAutoRefreshHint": "લૉકઆઉટ ઑટો રિફ્રેશ સંકેત", + "tabApis": "Apis ટૅબ", + "sectionDescription": "વિભાગનું વર્ણન", + "filter": "ફિલ્ટર", + "purgeLogsFailed": "લૉગ્સ દૂર કરવામાં નિષ્ફળતા", + "latency": "વિલંબતા", + "testAllOAuth": "બધા O Authનું પરીક્ષણ કરો", + "mcpQuickStartStep3": "Mcp ઝડપી શરૂઆત પગલું 3", + "repairEnvFailed": "Env સુધારવામાં નિષ્ફળતા", + "zedImportHint": "Zed આયાત સંકેત", + "modelsAcrossEndpoints": "એન્ડપોઇન્ટ્સ પરનાં મોડેલ્સ", + "autoDisableBannedAccounts": "પ્રતિબંધિત એકાઉન્ટ્સને આપમેળે નિષ્ક્રિય કરો", + "securityDesc": "સુરક્ષાનું વર્ણન", + "listModels": "મોડેલ્સની સૂચિ બનાવો", + "backupRestore": "બેકઅપ પુનઃસ્થાપિત કરો", + "target": "લક્ષ્ય", + "zedImportSuccess": "Zed સફળતાપૂર્વક આયાત થયું", + "lastHeaderUpdate": "છેલ્લું હેડર અપડેટ", + "categoryCore": "મુખ્ય શ્રેણી", + "noFallbackChains": "કોઈ ફૉલબૅક ચેઇન નથી", + "noSearchProviders": "કોઈ શોધ પ્રદાતા નથી", + "autoBalance": "સ્વચાલિત સંતુલન", + "noModelsYet": "હજુ સુધી કોઈ મોડેલ્સ નથી", + "signatureFamily": "સિગ્નેચર ફૅમિલી", + "externalApiCalls": "બાહ્ય Api કૉલ્સ", + "providerOverridesDesc": "પ્રદાતા ઓવરરાઇડ્સનું વર્ણન", + "signatureTool": "સિગ્નેચર ટૂલ", + "connectionFailed": "કનેક્શન નિષ્ફળ થયું", + "activeLimitersPlural": "સક્રિય લિમિટર્સ બહુવચન", + "doneDesc": "પૂર્ણ થયું તેનું વર્ણન", + "down": "ડાઉન", + "noDataYet": "હજુ સુધી કોઈ ડેટા નથી", + "activeProviders": "સક્રિય પ્રદાતાઓ", + "nameInvalid": "નામ અમાન્ય છે", + "skip": "છોડો", + "createChain": "ચેઇન બનાવો", + "audioSpeech": "ઑડિયો સ્પીચ", + "cacheCleared": "કૅશ સાફ થયો", + "searchTypeNews": "શોધ પ્રકાર: સમાચાર", + "durationMillisecondsShort": "અવધિ (મિલિસેકન્ડમાં, ટૂંકું)", + "addOpenAICompatible": "OpenAI-સુસંગત ઉમેરો", + "chatTesterTab": "ચેટ પરીક્ષક", + "queued": "કતારમાં", + "domainPlaceholder": "ડોમેન પ્લેસહોલ્ડર", + "durationMinutesShort": "અવધિ (મિનિટમાં, ટૂંકું)", + "verifyingConnection": "કનેક્શન ચકાસી રહ્યું છે", + "imageProviders": "ઇમેજ પ્રદાતાઓ", + "protocolToolsLabel": "પ્રોટોકોલ ટૂલ્સ લેબલ", + "queryPlaceholder": "ક્વેરી પ્લેસહોલ્ડર", + "videoGeneration": "વિડિયો જનરેશન", + "timeRangeWeek": "સમયગાળો: અઠવાડિયું", + "limitExhausted": "મર્યાદા સમાપ્ત થઈ ગઈ", + "failedDisable": "અક્ષમ કરવું નિષ્ફળ ગયું", + "inMemoryNote": "ઇન-મેમરી નોંધ", + "compatibleHint": "સુસંગતતા માટેનો સંકેત", + "errorShort": "ટૂંકી ભૂલ", + "advancedHint": "અદ્યતન સંકેત", + "restoreFailed": "પુનઃસ્થાપન નિષ્ફળ ગયું", + "searchProvidersHeading": "શોધ પ્રદાતાઓનું શીર્ષક", + "comboName": "કોમ્બો નામ", + "autoDisableDescription": "આપમેળે અક્ષમ કરવાનું વર્ણન", + "embeddingsDesc": "એમ્બેડિંગ્સનું વર્ણન", + "operational": "કાર્યરત", + "testAllApiKey": "તમામ API કીનું પરીક્ષણ કરો", + "backupCreated": "બૅકઅપ બનાવાયો", + "errorDuringImport": "આયાત દરમિયાન ભૂલ", + "comboDefaultsGuideHint2": "કોમ્બો ડિફૉલ્ટ માર્ગદર્શિકા સંકેત 2", + "connecting": "કનેક્ટ થઈ રહ્યું છે", + "fillModelAndProviders": "મોડેલ અને પ્રદાતાઓ ભરો", + "syncing": "સિંક થઈ રહ્યું છે", + "resetConfirm": "રીસેટની પુષ્ટિ", + "trackMetrics": "મેટ્રિક્સ ટ્રૅક કરો", + "successful": "સફળ", + "recovering": "પુનઃપ્રાપ્ત થઈ રહ્યું છે", + "autoDisableThreshold": "સ્વચાલિત નિષ્ક્રિયકરણની મર્યાદા", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "ડેટા સમન્વયિત થઈ રહ્યો છે", + "cloudBenefitPorts": "ક્લાઉડ બેનિફિટ પોર્ટ્સ", + "compatibleProviders": "સુસંગત પ્રદાતાઓ", "freeTierProviders": "મફત ટાયર પ્રદાતાઓ", "freeTierLabel": "મફત સ્તર ઉપલબ્ધ છે", "freeTierProvidersDesc": "મફત સ્તરો ધરાવતા પ્રદાતાઓ — કેટલાકને API કી સાઇનઅપની જરૂર છે, અન્યને કોઈ ઓળખપત્રની જરૂર નથી.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "કૅશ સાફ કરો", + "reqs": "વિનંતીઓ", + "addAnthropicCompatible": "Anthropic સુસંગત ઉમેરો", + "apiKeyProviders": "API કી પ્રદાતાઓ", + "tabsAria": "ટૅબ્સ ARIA", + "resetting": "રીસેટ થઈ રહ્યું છે", + "millisecondsAbbr": "મિલિસેકન્ડનું સંક્ષિપ્ત રૂપ", + "backupReasonPreRestore": "પુનઃસ્થાપન પહેલાં બૅકઅપ લેવાનું કારણ", + "disableCloud": "ક્લાઉડ નિષ્ક્રિય કરો", + "newProviderNameAria": "નવા પ્રદાતાનું નામ ARIA", + "passwordsMismatch": "પાસવર્ડ મેળ ખાતા નથી", + "a2aQuickStartStep3": "A2A ઝડપી શરૂઆતનું પગલું 3", + "liveMonitorDescriptionSuffix": "લાઇવ મોનિટરના વર્ણનનો પ્રત્યય", + "failedAddProvider": "પ્રદાતા ઉમેરવામાં નિષ્ફળ", + "addAtLeastOneProvider": "ઓછામાં ઓછો એક પ્રદાતા ઉમેરો", + "reasonSeparator": "કારણ વિભાજક", + "zedImporting": "Zed આયાત કરી રહ્યું છે", + "confirmPasswordPlaceholder": "પાસવર્ડની પુષ્ટિ માટેનું પ્લેસહોલ્ડર", + "whatYouGet": "તમને શું મળે છે", + "signatureSession": "સહી સત્ર", + "errorCountNoCode": "કોડ વિનાની ભૂલોની સંખ્યા", + "testing": "પરીક્ષણ થઈ રહ્યું છે", + "providersCommaSeparated": "અલ્પવિરામથી અલગ કરેલા પ્રદાતાઓ", + "exportDatabase": "ડેટાબેઝ નિકાસ કરો", + "hitRate": "હિટ દર", + "completionsLegacy": "પૂર્ણતાઓ (લેગસી)", + "removeModel": "મોડેલ દૂર કરો", + "timeRangeDay": "સમયગાળો: દિવસ", + "cloudRequestFailed": "ક્લાઉડ વિનંતી નિષ્ફળ ગઈ", + "updatedAt": "આ સમયે અપડેટ થયું", + "monitoredProvidersHint": "મોનિટર કરેલા પ્રદાતાઓ માટે સંકેત", + "connectionSuccessful": "કનેક્શન સફળ", + "latencyP50": "લેટન્સી P50", + "logsDeleted": "લૉગ્સ કાઢી નાખવામાં આવ્યા", + "chatTester": "ચેટ ટેસ્ટર", + "safeSearchOff": "સેફ સર્ચ બંધ", + "nameHint": "નામ માટેનો સંકેત", + "debugToggle": "ડીબગ ટૉગલ", + "embedding": "એમ્બેડિંગ", + "issuesLabel": "સમસ્યાઓનું લેબલ", + "optionAny": "કોઈપણ વિકલ્પ", + "maxNestingDepth": "મહત્તમ નેસ્ટિંગ ઊંડાઈ", + "rerank": "ફરીથી ક્રમ આપવો", + "checking": "ચકાસી રહ્યું છે", + "getStarted": "શરૂ કરો", + "restoreSuccess": "પુનઃસ્થાપન સફળ", + "issuesDetected": "સમસ્યાઓ મળી", + "signatureCache": "સિગ્નેચર કૅશ", + "modelLockouts": "મોડેલ લૉકઆઉટ્સ", + "usingCloudProxy": "ક્લાઉડ પ્રૉક્સીનો ઉપયોગ થઈ રહ્યો છે", + "loadingHealth": "હેલ્થ લોડ થઈ રહ્યું છે", + "providerOverrides": "પ્રદાતા ઓવરરાઇડ્સ", + "audioTranscriptionDesc": "ઑડિયો ટ્રાન્સક્રિપ્શનનું વર્ણન", + "learnedFromHeaders": "હેડર્સમાંથી શીખેલું", + "totalRequests": "કુલ વિનંતીઓ", + "cloudUnstableNote": "ક્લાઉડ અસ્થિરતા નોંધ", "gamificationAdmin": "ગેમિફિકેશન એડમિન", "monitorAnomaliesAndHealth": "વિસંગતતાઓ અને સિસ્ટમ આરોગ્યનું નિરીક્ષણ કરો", "flaggedAnomalies": "ફ્લેગ કરેલ વિસંગતતાઓ", "noAnomaliesDetected": "કોઈ વિસંગતતાઓ મળી નથી", "apiKey": "API કી", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 કલાક)", "zScore": "Z-સ્કોર", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "શંકાસ્પદ", "tokensCommunityServers": "કોમ્યુનિટી સર્વર્સ", "tokensServerNamePlaceholder": "સર્વર નામ", "tokensApiKeyPlaceholder": "API કી", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "વધુ લોડ કરી રહ્યું છે...", "recommended": "ભલામણ કરેલ", "understand": "હું સમજું છું", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "બૅચ પ્રોસેસિંગ", + "batchConceptSubtitle": "લગભગ 50% ખર્ચે હજારો વિનંતીઓ અસિંક્રોનસ રીતે પ્રોસેસ કરો (24 કલાકની સમયમર્યાદા). મૂલ્યાંકન, વર્ગીકરણ અને એમ્બેડિંગ્સ માટે આદર્શ.", + "batchConceptHowItWorks": "તે કેવી રીતે કાર્ય કરે છે", + "batchConceptBenefit50pct": "ઇનપુટ + આઉટપુટ ટોકન્સ પર 50% છૂટ", + "batchConceptAsync24h": "24 કલાકની પૂર્ણતા સમયમર્યાદા સાથે અસિંક્રોનસ", + "batchConceptUseCases": "મોટા પાયે વર્ગીકરણ, મૂલ્યાંકન અને એમ્બેડિંગ્સ માટે શ્રેષ્ઠ", + "batchHeaderSubtitle": "ઘણી વિનંતીઓને એક જૉબ તરીકે ચલાવો", + "batchStep1": "1 · JSONL અપલોડ કરો", + "batchStep1Desc": "વિનંતીઓ ઉમેરો", + "batchStep2": "2 · બૅચ બનાવો", + "batchStep2Desc": "જૉબ ચલાવો", + "batchStep3": "3 · પરિણામો મેળવો", + "batchStep3Desc": "આઉટપુટ ડાઉનલોડ કરો", + "filesConceptTitle": "બૅચ ફાઇલો", + "filesConceptSubtitle": "બૅચ દ્વારા ઉપયોગમાં લેવાતી JSONL ફાઇલો: ઇનપુટ વિનંતીઓ, પરિણામો અને ભૂલો.", + "filesConceptInput": "ઇનપુટ — દરેક લાઇનમાં એક વિનંતી ધરાવતી તમારી JSONL", + "filesConceptOutput": "આઉટપુટ — પૂર્ણ થયેલી વિનંતીઓનાં પરિણામો", + "filesConceptError": "ભૂલો — નિષ્ફળ ગયેલી વિનંતીઓ", + "filesConceptRetention": "જાળવણી: ડિફૉલ્ટ રૂપે 30 દિવસ (Anthropic પર 29 દિવસ)", + "wizardTitle": "નવું બૅચ", + "wizardClose": "બંધ કરો", + "wizardNext": "આગળ", + "wizardBack": "પાછળ", + "wizardCancel": "રદ કરો", + "wizardCreate": "બૅચ બનાવો", + "wizardCreating": "બનાવી રહ્યું છે…", + "wizardStep1Destination": "ગંતવ્ય", + "wizardStep2Input": "ઇનપુટ", + "wizardStep3Validate": "ચકાસો", + "wizardStep4Cost": "ખર્ચ અને બનાવટ", + "wizardProviderLabel": "પ્રદાતા", + "wizardEndpointLabel": "એન્ડપોઇન્ટ", + "wizardModelLabel": "મોડેલ", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (અમે તેને રૂપાંતરિત કરીશું)", + "wizardDropOrPick": "ફાઇલ અહીં મૂકો અથવા પસંદ કરવા માટે ક્લિક કરો", + "wizardCsvMappingTitle": "CSV કૉલમ → વિનંતી ફીલ્ડ સાથે મૅપ કરો", + "wizardCsvMappingAddField": "ફીલ્ડ ઉમેરો", "wizardCsvNoColumns": "CSV હેડરમાં કોઈ કૉલમ મળી નથી.", "wizardCsvIgnoreColumn": "— અવગણો —", "wizardCsvCustomIdMapped": "custom_id મેપ કરેલ છે", @@ -846,8 +846,8 @@ "wizardCsvApplyMapping": "મેપિંગ લાગુ કરો", "wizardCsvRowsParsed": "{count} પંક્તિઓ પાર્સ કરવામાં આવી", "wizardCsvRowsSkipped": "{count} પંક્તિઓ છોડી દેવામાં આવી", - "wizardCsvRowError": "Row {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardCsvRowError": "પંક્તિ {row}: {reason}", + "wizardValidationOk": "બધી લાઇનો માન્ય છે", "wizardValidating": "ચકાસણી થઈ રહી છે…", "wizardValidationParseFailed": "ચકાસણી નિષ્ફળ ગઈ — સામગ્રીનું વિશ્લેષણ કરી શકાયું નથી.", "wizardValidationSummary": "{lines} લાઇનો · {ids} અનન્ય custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "નકલી custom_ids મળ્યા:", "wizardValidationFirstErrors": "ભૂલો (પ્રથમ {count}):", "wizardValidationLine": "લાઇન {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "ચકાસણીની ભૂલો", + "wizardValidationPreview": "પૂર્વાવલોકન (પ્રથમ 5 વિનંતીઓ)", + "wizardValidationSamplingNote": "ફાઇલ મોટી છે — નમૂના દ્વારા ચકાસવામાં આવી છે (પ્રથમ 1000 + છેલ્લી 100 લાઇનો). સંપૂર્ણ ચકાસણી સર્વર પર થાય છે.", + "wizardCostSync": "સિંક ખર્ચ", + "wizardCostBatch": "બૅચ ખર્ચ (-50%)", + "wizardCostSavings": "બચત", + "wizardCostEstimatedNotice": "અંદાજિત ખર્ચ — વાસ્તવિક બિલિંગ અલગ હોઈ શકે છે.", + "wizardErrorUpload": "ફાઇલ અપલોડ કરવામાં નિષ્ફળતા. ફરી પ્રયાસ કરો.", + "wizardErrorCreate": "બૅચ બનાવવામાં નિષ્ફળતા. ફરી પ્રયાસ કરો.", + "wizardEmptyProviders": "બૅચ બનાવવા માટે બૅચ સપોર્ટ ધરાવતા પ્રદાતાને (OpenAI, Anthropic અથવા Gemini) કનેક્ટ કરો.", + "uploadModalTitle": "બૅચ ફાઇલ અપલોડ કરો", + "uploadModalDropOrPick": ".jsonl ફાઇલ અહીં મૂકો અથવા પસંદ કરવા માટે ક્લિક કરો", + "uploadModalUpload": "અપલોડ કરો", + "uploadModalCancel": "રદ કરો", + "uploadModalError": "અપલોડ નિષ્ફળ થયું. ફરી પ્રયાસ કરો.", + "uploadModalSuccess": "અપલોડ થયું", + "uploadModalSizeLimit": "મહત્તમ 512 MB", + "batchListNewButton": "નવું બૅચ", + "batchListAutoRefresh": "દર 30 સે.એ આપમેળે રિફ્રેશ", + "batchListCostColumn": "ખર્ચ", + "batchActionCancel": "રદ કરો", + "batchActionDownloadOutput": "આઉટપુટ ડાઉનલોડ કરો", + "batchActionDownloadErrors": "ભૂલો ડાઉનલોડ કરો", + "batchActionRetry": "નિષ્ફળ થયેલાં ફરી અજમાવો", + "batchActionRetryConfirm": "{n} નિષ્ફળ વિનંતી(ઓ)નો ફરી પ્રયાસ કરવો છે? અંતિમ ખર્ચ વપરાયેલા વાસ્તવિક ટોકન્સ પર આધારિત છે.", + "expirationBadgeCritical": "ગંભીર", + "expirationBadgeWarning": "ટૂંક સમયમાં", + "expirationBadgeNormal": "બાકી", + "expirationBadgeExpired": "સમય સમાપ્ત", + "filesListUploadButton": "અપલોડ કરો", + "filesListUsedByColumn": "આના દ્વારા વપરાયેલ", + "filesListUsedByNone": "કોઈ નહીં", + "filesListUsedByRoleInput": "ઇનપુટ", + "filesListUsedByRoleOutput": "આઉટપુટ", + "filesListUsedByRoleError": "ભૂલ", + "filesListSizeColumn": "કદ", + "batchListProgressPartial": "(આંશિક)", + "batchListProviderColumn": "પ્રદાતા", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "અન્ય", + "batchListTitle": "બૅચ", + "batchListCount": "{count} બૅચ", + "batchListRemovingCompleted": "દૂર કરી રહ્યાં છીએ…", + "batchListRemoveCompleted": "પૂર્ણ થયેલાં દૂર કરો", + "batchListTableStatus": "સ્થિતિ", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "એન્ડપોઇન્ટ", + "batchListTableModel": "મોડેલ", + "batchListTableProgress": "પ્રગતિ", + "batchListTableCreated": "બનાવ્યું", + "batchListTableExpires": "સમાપ્તિ", + "batchListLoading": "લોડ થઈ રહ્યું છે…", + "batchListEmpty": "કોઈ બૅચ મળ્યાં નથી", + "batchListValidating": "માન્યતા ચકાસી રહ્યાં છીએ…", + "batchStatusAll": "બધી સ્થિતિઓ", + "batchStatusInProgress": "પ્રગતિમાં", + "batchStatusValidating": "માન્યતા ચકાસી રહ્યાં છીએ", + "batchStatusFinalizing": "અંતિમ રૂપ આપી રહ્યાં છીએ", + "batchStatusCompleted": "પૂર્ણ થયું", + "batchStatusFailed": "નિષ્ફળ થયું", + "batchStatusCancelled": "રદ થયું", + "batchStatusCancelling": "રદ કરી રહ્યાં છીએ", + "batchStatusExpired": "સમયસમાપ્ત થયું", + "batchStatusCompletedWithFailures": "નિષ્ફળતાઓ સાથે પૂર્ણ થયું", + "batchStatusInProgressWithFailures": "પ્રગતિમાં (નિષ્ફળતાઓ સાથે)", + "batchStatusFinalizingWithFailures": "અંતિમ રૂપ આપી રહ્યાં છીએ (નિષ્ફળતાઓ સાથે)", + "batchStatusCancelledWithFailures": "નિષ્ફળતાઓ સાથે રદ થયું", + "batchStatusExpiredWithFailures": "સમયસમાપ્ત થયું (આંશિક)", + "wizardCostEstimating": "ખર્ચનો અંદાજ લગાવી રહ્યાં છીએ…", + "wizardCostRequests": "વિનંતીઓ", + "wizardCostInputTok": "ઇનપુટ ટોકન", + "wizardCostOutputTok": "આઉટપુટ ટોકન", + "wizardCostWindow": "સમયગાળો", + "wizardDestinationSelectProvider": "પ્રદાતા પસંદ કરો…", + "wizardDestinationSelectModel": "મોડેલ પસંદ કરો…", + "wizardDestinationConnectProvider": "પ્રદાતાને કનેક્ટ કરો", + "batchListBatchCreated": "બૅચ {id} બનાવવામાં આવ્યો — સૂચિ રિફ્રેશ કરી રહ્યાં છીએ…", + "batchListBatchCreatedDismiss": "બંધ કરો", + "batchListRefreshing": "રિફ્રેશ કરી રહ્યાં છીએ…", + "batchListRefresh": "રિફ્રેશ કરો", + "uploadFileModalRemove": "દૂર કરો", + "uploadFileModalUploading": "અપલોડ કરી રહ્યાં છીએ…", + "wizardInputReading": "ફાઇલ વાંચી રહ્યાં છીએ…", + "wizardInputReady": "તૈયાર", + "wizardInputLargeFileLabel": "મોટી ફાઇલ — નમૂના દ્વારા માન્યતા ચકાસણી", + "wizardInputCsvJsonlReady": "JSONL જનરેટ થયું — માન્યતા ચકાસવા માટે તૈયાર.", + "wizardInputLargeFileWarning": "મોટી ફાઇલ મળી — માન્યતા ચકાસણી નમૂના દ્વારા થાય છે (પ્રથમ 5 MB + છેલ્લા 100 KB). સંપૂર્ણ માન્યતા ચકાસણી સર્વર-સાઇડ થાય છે.", + "wizardCostWindow24h": "24 કલાકની પૂર્ણતા સમયમર્યાદા", + "wizardValidationFieldsOk": "આવશ્યક ફીલ્ડ્સ માન્ય છે", + "filesListDelete": "કાઢી નાખો", + "filesListDownload": "ડાઉનલોડ કરો", + "batchDetailActionCancel": "બૅચ રદ કરો", + "batchDetailActionRetry": "નિષ્ફળ વિનંતીઓનો ફરી પ્રયાસ કરો", + "batchDetailCancelling": "રદ કરી રહ્યું છે…", + "batchDetailRetrying": "ફરી પ્રયાસ કરવાની તૈયારી કરી રહ્યું છે…", + "batchDetailCancelConfirm": "આ બૅચ રદ કરવો છે? ચાલુ વિનંતીઓ અટકી જશે.", + "batchActionCancelError": "બૅચ રદ કરવામાં નિષ્ફળતા. ફરી પ્રયાસ કરો.", + "batchActionRetryError": "નિષ્ફળ વિનંતીઓનો ફરી પ્રયાસ કરવામાં નિષ્ફળતા. ફરી પ્રયાસ કરો.", + "batchConceptRetentionNote": "પરિણામો અને ભૂલ ફાઇલો 30 દિવસ સુધી જાળવી રાખવામાં આવે છે (Anthropic: 29 દિવસ)", "batchFilesSizeColumn": "આકાર", "toggleNoAuthProvider": "નૉ-ઑથ પ્રોવાઇડર ટોગલ કરો", "loadingModels": "મોડલ લોડ થઈ રહ્યા છે…", @@ -988,47 +988,47 @@ "disabled": "નિષ્ક્રિય કરેલ", "featureFlagOmnirouteEmergencyFallbackDescription": "બજેટ-સમાપ્ત વિનંતીઓને કટોકટીના મફત ફોલબેક પ્રદાતા/મોડેલ પર રૂટ કરો.", "featureFlagArenaEloSyncEnabledDescription": "મોડેલ ઇન્ટેલિજન્સ રેન્કિંગ માટે સમયાંતરે Arena AI લીડરબોર્ડ ELO સિંક સક્ષમ કરો.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "કોમ્બો રાઉટિંગ મોડલ બદલે ત્યારે વાર્તાલાપના સારાંશ જનરેટ કરીને દાખલ કરો. મોડલ સ્વિચને સ્વતંત્ર રીતે સંભાળવા અને હાલના તથા ભવિષ્યના તમામ કોમ્બો માટે પૃષ્ઠભૂમિ હેન્ડઓફ વિનંતીઓ અટકાવવા માટે અક્ષમ કરો.", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models પર claude/<provider>/<model> મિરર આઈડીઓનું જાહેરાત કરો જેથી Claude Code ગેટવે મોડલ શોધી કાઢે છે non-Claude મોડલ. ચેતવણી: જ્યારે વૈશ્વિક રીતે સક્રિય કરવામાં આવે ત્યારે તમામ ક્લાયન્ટ માટે કૅટલોગ એન્ટ્રીઓ ડબલ કરે છે.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> ગેટવે ઉપનામો માટેનું મુખ્ય સ્વિચ. ચાલુ (ડિફૉલ્ટ): /v1/models દરેક પાત્ર, વિચાર-સક્ષમ Claude મોડલ માટે વિચારણા વિનાનું વેરિઅન્ટ દર્શાવે છે, અને વિનંતીમાં મોકલાયેલ no-think/ id વાસ્તવિક મોડલ પર પાછું ઉકેલાય છે તથા તર્કપ્રક્રિયા દબાવવામાં આવે છે. બંધ: કોઈ વેરિઅન્ટ દર્શાવવામાં આવતાં નથી અને no-think/ id ને અન્ય કોઈપણ અજ્ઞાત મોડલ id જેવું ગણવામાં આવે છે. આ ચાલુ હોય ત્યારે પણ પ્રતિ-મોડલ ModelSpec.noThinkingAlias માટેની opt-in/opt-out સેટિંગ લાગુ પડે છે.", "featureFlagChatVirtualLanesEnabledDescription": "પ્રોવાઇડર ડિસ્પેચ માટે પ્રતિ-ટેનન્ટ અનુકૂલનશીલ વર્ચ્યુઅલ એડમિશન લેન સક્ષમ કરો (#9654): એક ટેનન્ટનો બર્સ્ટ હવે બીજા ટેનન્ટને 503 આપતો નથી. OMNIROUTE_CHAT_VIRTUAL_LANES એન્વાયર્નમેન્ટ વેરિયેબલ આ ડેશબોર્ડ સેટિંગ કરતાં વધુ પ્રાધાન્ય ધરાવે છે; ફેરફારો સર્વર પુનઃપ્રારંભ પર અસરકારક થાય છે.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ડૅશબોર્ડના પ્રદાતા પૃષ્ઠો: ફક્ત પ્રદાતા માન્ય રાખે તેવા સંકેતો પર જ મફત બૅજ બતાવો — દસ્તાવેજીકૃત મફત સ્તર વિનાના નોંધાયેલા પ્રદાતાઓ માટે ડિસ્પ્લે-નામનું હ્યુરિસ્ટિક, બિન-બૂલિયન મફત ફીલ્ડ્સ અને :free પ્રત્યયો દૂર કરે છે. બંધ રાખવાથી ઐતિહાસિક બૅજ નિયમ જળવાઈ રહે છે.", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy pools અને opencodeનું પ્રતિ-એકાઉન્ટ રોટેશન, હમણાં જ નિષ્ફળ ગયેલા પ્રોક્સીને (TCP પ્રોબ નકારાયો હોય અથવા તેના મારફતે 429 મળ્યો હોય) દરેક પુનરાવર્તન સાથે બમણા થતા, મહત્તમ મર્યાદા સુધીના પ્રતિ-પ્રોસેસ સમયગાળા માટે ફરીથી સર્વ કરવાનું બંધ કરે છે. પ્રોક્સીની કોઈ સ્થિતિ લખવામાં આવતી નથી; દરેક ઉમેદવારને બાજુ પર રાખવામાં આવે તો પસંદગી યથાવત્ રહે છે. ડિફૉલ્ટ રૂપે બંધ: પસંદગીનો ક્રમ સાદા રોટેશન જેવો જ રહે છે.", + "featureFlagProxyPoolEgressObservationDescription": "ડૅશબોર્ડમાં પ્રોક્સી પૂલ હેઠળ બતાવો કે છેલ્લા 24 કલાકમાં કેટલા નિરીક્ષિત એગ્રેસ IPએ તેના સભ્યોને સેવા આપી, કેટલાં કનેક્શનોએ તેમનો ઉપયોગ કર્યો અને એક IP પાછળ મહત્તમ કેટલા જોવા મળ્યા. ફક્ત વાંચવા માટે, પ્રોક્સી લૉગમાંથી ગણતરી કરેલું અને રૂટિંગ માટે ક્યારેય ઉપયોગમાં લેવાતું નથી. ડિફૉલ્ટ રૂપે બંધ: પૂલ એડિટર યથાવત્ રહે છે અને નિરીક્ષણ રૂટ null પરત કરે છે.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "પ્રોક્સી હેલ્થ સ્વીપમાં, લક્ષ્ય દ્વારા નકારવામાં આવેલા પ્રોબને (401/403/429: પ્રોક્સીએ રિલે કર્યું, ગંતવ્યે આ એગ્રેસ IPને નકાર્યો) સર્વ કરાયેલા પ્રોબની જેમ પ્રોક્સીની સળંગ નિષ્ફળતાઓની શ્રેણી રીસેટ કરવાની મંજૂરી આપો. ડિફૉલ્ટ રૂપે બંધ: નકાર તટસ્થ રહે છે અને શ્રેણી જાળવી રાખે છે. બંને સ્થિતિમાં 5xx અનિર્ણાયક રહે છે, અને નકાર ક્યારેય પ્રોક્સીને દૂર, અક્ષમ અથવા ફરી સક્રિય કરતો નથી.", "sidebar": { - "home": "Home", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "usage": "Usage", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", + "home": "મુખ્ય પૃષ્ઠ", + "dashboard": "ડૅશબોર્ડ", + "providers": "પ્રદાતાઓ", + "combos": "કોમ્બો", + "usage": "વપરાશ", + "analytics": "વિશ્લેષણ", + "costs": "ખર્ચ", + "health": "સ્થિતિ", "proxy": "પ્રોક્સી", "limits": "Limits & Quotas", - "cliTools": "CLI Tools", - "media": "Media", - "settings": "Settings", - "translator": "Translator", - "playground": "Playground", - "searchTools": "Search Tools", - "agents": "Agents", + "cliTools": "CLI સાધનો", + "media": "મીડિયા", + "settings": "સેટિંગ્સ", + "translator": "અનુવાદક", + "playground": "પ્લેગ્રાઉન્ડ", + "searchTools": "શોધ સાધનો", + "agents": "એજન્ટ્સ", "cloudAgents": "મેઘ એજન્ટો", - "memory": "Memory", - "skills": "Skills", + "memory": "મેમરી", + "skills": "કૌશલ્યો", "omniSkills": "ઓમ્ની સ્કીલ્સ", "agentSkills": "એજન્ટ કૌશલ્ય", "chaosConfig": "કેઓસ મોડ", - "docs": "Docs", - "issues": "Issues", - "endpoints": "Endpoints", + "docs": "દસ્તાવેજો", + "issues": "સમસ્યાઓ", + "endpoints": "એન્ડપોઇન્ટ્સ", "endpointsSubtitle": "તમારા AI કનેક્શન URL", - "apiManager": "API Keys", + "apiManager": "API કીઝ", "apiManagerSubtitle": "API કી અને એક્સેસ મેનેજ કરો", "embeddedServices": "એમ્બેડ સેવાઓ", "embeddedServicesSubtitle": "સ્થાનિક પ્રોક્સી સેવાઓ મેનેજ કરો", - "logs": "Logs", + "logs": "લૉગ્સ", "webhooks": "વેબહુક્સ", "webhooksSubtitle": "ઇવેન્ટ્સની સૂચના મેળવો", "logExport": "લોગ નિકાસ", @@ -1037,82 +1037,82 @@ "batchSubtitle": "બહુવિધ વિનંતીઓ પર પ્રક્રિયા કરો", "contextCavemanSubtitle": "પ્રોમ્પ્ટ કમ્પ્રેશન", "contextRtkSubtitle": "આઉટપુટ ફિલ્ટરિંગ", - "auditLog": "Audit Log", - "shutdown": "Shutdown", - "restart": "Restart", - "shutdownConfirm": "Shut down OmniRoute?", - "restartConfirm": "Restart OmniRoute?", + "auditLog": "ઑડિટ લૉગ", + "shutdown": "બંધ કરો", + "restart": "પુનઃપ્રારંભ કરો", + "shutdownConfirm": "OmniRoute બંધ કરવું છે?", + "restartConfirm": "OmniRoute પુનઃપ્રારંભ કરવું છે?", "version": "v{version}", "debug": "Debug", - "system": "System", - "help": "Help", + "system": "સિસ્ટમ", + "help": "મદદ", "primarySection": "Main", "cliSection": "CLI", "debugSection": "Debug", "systemSection": "System", "helpSection": "Help", - "serverDisconnected": "Server Disconnected", - "serverDisconnectedMsg": "The proxy server has been stopped or is restarting.", - "expandSidebar": "Expand sidebar", - "collapseSidebar": "Collapse sidebar", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", - "cliToolsShort": "Tools", + "serverDisconnected": "સર્વર ડિસ્કનેક્ટ થયું", + "serverDisconnectedMsg": "પ્રૉક્સી સર્વર બંધ કરવામાં આવ્યું છે અથવા પુનઃપ્રારંભ થઈ રહ્યું છે.", + "expandSidebar": "સાઇડબાર વિસ્તારો", + "collapseSidebar": "સાઇડબાર સંકુચિત કરો", + "themes": "થીમ્સ", + "presetColors": "લોકપ્રિય રંગો", + "createTheme": "થીમ બનાવો", + "chooseColor": "એક રંગ પસંદ કરો", + "themeCoral": "કોરલ", + "themeBlue": "વાદળી", + "themeRed": "લાલ", + "themeGreen": "લીલો", + "themeViolet": "જાંબલી", + "themeOrange": "નારંગી", + "themeCyan": "સ્યાન", + "cliToolsShort": "સાધનો", "cache": "Cache", "cacheShort": "Cache", "batch": "Batch Testing", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "themeSystem": "થીમ સિસ્ટમ", + "whitelabelingDesc": "વ્હાઇટલેબલિંગનું વર્ણન", + "switchThemes": "થીમ્સ બદલો", + "themeAccentDesc": "થીમ એક્સેન્ટનું વર્ણન", + "uploadFavicon": "ફેવિકોન અપલોડ કરો", + "themeDark": "ઘેરી થીમ", + "customLogoDesc": "કસ્ટમ લોગોનું વર્ણન", + "sidebarVisibilityToggle": "સાઇડબાર દૃશ્યતા ટૉગલ", + "themeAccent": "થીમ એક્સેન્ટ", + "resetFavicon": "ફેવિકોન રીસેટ કરો", + "whitelabeling": "વ્હાઇટલેબલિંગ", + "darkMode": "ડાર્ક મોડ", + "uploadLogo": "લોગો અપલોડ કરો", + "themeLight": "આછા રંગની થીમ", + "appName": "ઍપનું નામ", + "appNameDesc": "ઍપના નામનું વર્ણન", + "resetLogo": "લોગો રીસેટ કરો", + "customFavicon": "કસ્ટમ ફેવિકોન", + "hideHealthLogs": "હેલ્થ લૉગ્સ છુપાવો", + "customLogo": "કસ્ટમ લોગો", + "appearance": "દેખાવ", + "themeSelectionAria": "થીમ પસંદગી માટેનું ARIA", + "themeCreate": "થીમ બનાવો", + "customFaviconDesc": "કસ્ટમ ફેવિકોનનું વર્ણન", + "logoPreview": "લોગોનું પૂર્વાવલોકન", + "themeCustom": "કસ્ટમ થીમ", + "hideHealthLogsDesc": "હેલ્થ લૉગ્સ છુપાવવાનું વર્ણન", + "faviconPreview": "ફેવિકોન પૂર્વાવલોકન", + "changelog": "ફેરફાર નોંધ", + "contextSection": "સંદર્ભ અને કૅશ", + "contextCaveman": "કેવમેન", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "એન્જિન સંયોજનો", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "અલ્ટ્રા", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "સંકોચન સેટિંગ્સ", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "કોમ્બો સ્ટુડિયો", "combosLiveSubtitle": "લાઇવ રૂટીંગ કાસ્કેડ", "compressionStudio": "Compression Studio", "compressionExclusions": "બહાર રાખવા", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "લાઇવ એન્જિન કાસ્કેડ", "compressionExclusionsSubtitle": "પ્રતિ-મોડલ/એન્ડપોઈન્ટ બાયપાસ", "chaosConfigSubtitle": "મલ્ટિ-મોડેલ સમાંતર અમલીકરણ", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "રૂટિંગ", + "protocolsSection": "પ્રોટોકોલ્સ", + "agentsAiSection": "એજન્ટ્સ અને AI", + "cacheContextSection": "કૅશ અને સંદર્ભ", + "analyticsSection": "વિશ્લેષણ", + "costsSection": "ખર્ચ", + "monitoringSection": "નિરીક્ષણ", + "auditSecuritySection": "ઑડિટ અને સુરક્ષા", + "devtoolsSection": "ડેવલપર સાધનો", + "configurationSection": "રૂપરેખાંકન", + "aiFeaturesSection": "AI સુવિધાઓ", "mcp": "MCP", "a2a": "A2A", "plugins": "પ્લગિન્સ", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "API એન્ડપોઇન્ટ્સ", + "batchFiles": "ફાઇલો", + "analyticsEvals": "મૂલ્યાંકનો", + "analyticsSearch": "શોધ", + "analyticsUtilization": "ઉપયોગિતા", + "analyticsComboHealth": "કોમ્બો સ્વાસ્થ્ય", + "analyticsCompression": "સંકોચન", + "costsBudget": "બજેટ", "costsFreeTiers": "ફ્રી-ટીયર બજેટ", "costsFreeTiersSubtitle": "માસિક મફત-ટોકન ભથ્થાં", "freeProviderRankings": "મફત પ્રદાતા રેન્કિંગ", "freeProviderRankingsSubtitle": "મોડેલ ELO સ્કોર્સ દ્વારા ક્રમાંકિત શ્રેષ્ઠ મફત પ્રદાતાઓ", "radar": "રેડાર કેટલોગ", "radarSubtitle": "સમુદાય-સમૃદ્ધ મફત મોડલ કેટલોગ", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "ક્વોટા વહેંચણી", + "costsPricing": "કિંમત નિર્ધારણ", + "logsProxy": "પ્રૉક્સી લૉગ્સ", + "logsConsole": "કન્સોલ", + "logsActivity": "પ્રવૃત્તિ", + "auditMcp": "MCP ઑડિટ", "auditA2a": "A2A ઓડિટ", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "દેખાવ", + "settingsAi": "AI સેટિંગ્સ", + "settingsSecurity": "સુરક્ષા", "settingsAccessTokens": "એક્સેસ ટોકન્સ", "settingsFeatureFlags": "લક્ષણ ફ્લેગ્સ", "settingsCache": "કેશ", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "અધિકૃતતા", + "settingsRouting": "રૂટિંગ", + "settingsResilience": "સ્થિતિસ્થાપકતા", "modelLockout": "મોડેલ લોકઆઉટ", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "અદ્યતન", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "પ્રદાતા ક્વોટા", + "providerQuota": "પ્રદાતા ક્વોટા", + "runtime": "રનટાઇમ", + "consoleLogs": "કન્સોલ લૉગ્સ", + "logsTimeline": "સમયરેખા", "logsTimelineSubtitle": "વિઝ્યુઅલ વિનંતી સમયરેખા", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "વાર્તાલાપ", + "conversationsSubtitle": "મલ્ટિ-ટર્ન એજેન્ટિક વાર્તાલાપ", + "globalRouting": "વૈશ્વિક રૂટિંગ", + "mitmProxy": "MITM પ્રોક્સી", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "એજેન્ટિક સુવિધાઓ", + "otherFeaturesSection": "અન્ય સુવિધાઓ", + "compressionContextGroup": "કમ્પ્રેશન કોન્ટેક્સ્ટ", + "gamificationGroup": "ગેમિફિકેશન", + "toolsGroup": "સાધનો", + "integrationsGroup": "એકીકરણો", + "proxyGroup": "પ્રોક્સી", + "costsParametersGroup": "ખર્ચના પરિમાણો", + "auditGroup": "ઑડિટ", + "batchGroup": "બૅચ", + "homeSubtitle": "ડૅશબોર્ડનું વિહંગાવલોકન", + "providersSubtitle": "AI પ્રદાતાઓનું સંચાલન કરો", + "quotaTrackerSubtitle": "વપરાશ મર્યાદાઓ ટ્રૅક કરો", + "providerQuotaSubtitle": "પ્રદાતાની વપરાશ મર્યાદાઓ ટ્રૅક કરો", + "runtimeSubtitle": "રીઅલ-ટાઇમ સ્થિતિસ્થાપકતા અને સત્રો", + "contextCombosSubtitle": "કમ્પ્રેશન એન્જિનોને સંયોજિત કરો", + "cliToolsSubtitle": "CLI રનટાઇમ્સ ગોઠવો", + "agentsSubtitle": "સ્થાનિક એજન્ટોનું સંચાલન કરો", + "cloudAgentsSubtitle": "ક્લાઉડ-આધારિત એજન્ટોનું સંચાલન કરો", + "apiEndpointsSubtitle": "કસ્ટમ એન્ડપોઇન્ટ્સ ઉપલબ્ધ કરાવો", + "proxySubtitle": "HTTP પ્રોક્સી સેટિંગ્સ", + "mitmProxySubtitle": "MITM ઇન્ટરસેપ્શન", + "oneProxySubtitle": "સાર્વજનિક પ્રોક્સી ગેટવે", + "leaderboard": "લીડરબોર્ડ", + "profile": "પ્રોફાઇલ", + "tokens": "ટોકન્સ", + "gamificationAdmin": "ગેમિફિકેશન એડમિન", + "leaderboardSubtitle": "રેન્કિંગ્સ અને સિદ્ધિઓ", + "profileSubtitle": "એકાઉન્ટ અને પસંદગીઓ", + "tokensSubtitle": "ટોકન વપરાશ અને બજેટ", + "gamificationAdminSubtitle": "અસામાન્યતા મોનિટરિંગ અને છેતરપિંડી-વિરોધી વ્યવસ્થા", + "usageSubtitle": "ટ્રાફિક અને વપરાશનાં આંકડા", + "analyticsComboHealthSubtitle": "કોમ્બો લક્ષ્યની વિશ્વસનીયતા", + "analyticsUtilizationSubtitle": "પ્રદાતા ઉપયોગિતા", + "costsSubtitle": "ખર્ચનું વિભાજન", + "cacheSubtitle": "કૅશ હિટ દરો", + "analyticsCompressionSubtitle": "ટોકન બચતનાં આંકડા", + "analyticsSearchSubtitle": "શોધ ટૂલ વિશ્લેષણ", + "analyticsEvalsSubtitle": "મૂલ્યાંકન સ્યુટનાં પરિણામો", "providerStats": "પ્રદાતા આંકડા", "providerStatsSubtitle": "લેટન્સી અને પ્રદર્શન મેટ્રિક્સ", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "એપ્લિકેશન લૉગ્સ", + "logsProxySubtitle": "પ્રોક્સી ટ્રાફિક લૉગ્સ", + "consoleLogsSubtitle": "કન્સોલ આઉટપુટ", + "logsActivitySubtitle": "વપરાશકર્તા પ્રવૃત્તિ લૉગ", + "healthSubtitle": "સિસ્ટમની સ્થિતિની તપાસ", + "costsPricingSubtitle": "મોડેલ-દીઠ કિંમત નિર્ધારણના નિયમો", + "costsBudgetSubtitle": "બજેટ મર્યાદાઓ", + "costsQuotaShareSubtitle": "કી વચ્ચે પ્રદાતા ક્વોટા શેર કરો", + "auditLogSubtitle": "અધિકૃતતા ઑડિટ", + "auditMcpSubtitle": "MCP સર્વર ઑડિટ", + "auditA2aSubtitle": "A2A પ્રોટોકોલ ઑડિટ", + "translatorSubtitle": "ફોર્મેટ રૂપાંતરણ", + "playgroundSubtitle": "પ્રોમ્પ્ટ્સનું લાઇવ પરીક્ષણ કરો", + "searchToolsSubtitle": "શોધ ટૂલ રજિસ્ટ્રી", + "memorySubtitle": "કાયમી એજન્ટ મેમરી", + "omniSkillsSubtitle": "સૅન્ડબૉક્સ સ્કિલ રજિસ્ટ્રી", + "agentSkillsSubtitle": "A2A સ્કિલ રજિસ્ટ્રી", + "mcpSubtitle": "MCP સર્વર નિયંત્રણો", + "a2aSubtitle": "A2A પ્રોટોકોલ સર્વર", "pluginsSubtitle": "પ્લગઇન માર્કેટપ્લેસ અને ઇન્સ્ટોલેશન્સ", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "કૅશ કરેલી મીડિયા ફાઇલો", + "batchFilesSubtitle": "બૅચ ઇનપુટ/આઉટપુટ ફાઇલો", + "settingsSubtitle": "બધી સેટિંગ્સ", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "થીમ અને લેઆઉટ", + "settingsAiSubtitle": "AI વર્તનનાં ડિફૉલ્ટ્સ", + "globalRoutingSubtitle": "વૈશ્વિક રૂટિંગ નિયમો", + "settingsResilienceSubtitle": "ફરી પ્રયાસો અને સર્કિટ બ્રેકર્સ", + "settingsAdvancedSubtitle": "પાવર યુઝર વિકલ્પો", + "settingsSecuritySubtitle": "પ્રમાણીકરણ અને એન્ક્રિપ્શન", "settingsAccessTokensSubtitle": "રિમોટ મોડ માટે સ્કોપ્ડ CLI ટોકન્સ", "settingsFeatureFlagsSubtitle": "સિસ્ટમ ક્ષમતાઓ ટૉગલ કરો", "settingsCacheSubtitle": "મોડલ કેટલોગ અને પ્રતિસાદ કેશિંગ", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "સાઇડબાર", + "settingsSidebarSubtitle": "સાઇડબાર લેઆઉટ કસ્ટમાઇઝ કરો", "settingsAuthzSubtitle": "રૂટ ઇન્વેન્ટરી અને બાયપાસ નીતિ", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "દસ્તાવેજીકરણ", + "issuesSubtitle": "બગની જાણ કરો", + "changelogSubtitle": "રિલીઝ નોંધો", "costsQuotaPlans": "યોજનાઓ અને ક્વોટા", "costsQuotaPlansSubtitle": "પ્રદાતા દ્વારા યોજનાઓ ગોઠવો", "activity": "પ્રવૃત્તિ", @@ -1278,8 +1278,8 @@ "agentBridge": "એજન્ટ બ્રિજ", "agentBridgeSubtitle": "IDE એજન્ટ ટ્રાફિકને અટકાવો", "trafficInspector": "ટ્રાફિક ઇન્સ્પેક્ટર", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "તમારી ઍપ્સમાંથી આવતા વિનંતી અને પ્રતિસાદ ટ્રાફિકનું નિરીક્ષણ કરો", + "trafficInspectorPurpose": "તમારી ઍપ્લિકેશન AI પ્રદાતાઓને બરાબર શું મોકલે છે અને તેમની પાસેથી શું મેળવે છે તે જુઓ. કોઈપણ OpenAI-સુસંગત ક્લાયન્ટ સાથે કામ કરે છે.", "cliCode": "CLI કોડ", "cliCodeSubtitle": "OmniRoute તરફ નિર્દેશ કરતા કોડ ટૂલ્સ", "cliAgents": "CLI એજન્ટ્સ", @@ -1345,7 +1345,7 @@ "refresh": "તાજું કરો", "loading": "વેબહુક્સ લોડ કરી રહ્યું છે...", "never": "ક્યારેય નહીં", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {કોઈ નિષ્ફળતા નથી} one {# નિષ્ફળતા} other {# નિષ્ફળતાઓ}}", "testWebhook": "ટેસ્ટ મોકલો", "testSuccess": "ટેસ્ટ વેબહૂક સફળતાપૂર્વક મોકલવામાં આવ્યો.", "testFailed": "પરીક્ષણ વેબહૂક નિષ્ફળ થયું.", @@ -1563,91 +1563,91 @@ "mcpMetricTopTool": "ટોપ ટૂલ" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "થીમ્સ", + "description": "પૂર્વનિર્ધારિત થીમ પસંદ કરો અથવા એક જ રંગથી તમારી પોતાની થીમ બનાવો", + "presetColors": "લોકપ્રિય રંગો", + "customTheme": "કસ્ટમ થીમ", + "customThemeDesc": "થીમ બનાવો પર ક્લિક કરો અને એક રંગ પસંદ કરો", + "createTheme": "થીમ બનાવો", + "activePreset": "સક્રિય થીમ" }, "header": { - "logout": "Logout", + "logout": "લૉગ આઉટ", "quickNavigation": "ઝડપી નેવિગેશન", "quickNavigationTitle": "ઝડપી નેવિગેશન (⌘K / Ctrl+K)", "openQuickNavigation": "ઝડપી નેવિગેશન ખોલો", "switchToLightMode": "લાઇટ મોડ પર સ્વિચ કરો", "switchToDarkMode": "ડાર્ક મોડ પર સ્વિચ કરો", - "language": "Language", - "providers": "Providers", - "providerDescription": "Manage your AI provider connections", - "combos": "Combos", - "comboDescription": "Model combos with fallback", - "usage": "Usage & Analytics", - "usageDescription": "Monitor your API usage, token consumption, and request logs", - "analytics": "Analytics", - "analyticsDescription": "Charts, trends, and evaluation insights", - "cliTools": "CLI Tools", - "cliToolsDescription": "Configure CLI tools", - "home": "Home", - "homeDescription": "Welcome to OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "language": "ભાષા", + "providers": "પ્રદાતાઓ", + "providerDescription": "તમારા AI પ્રદાતા કનેક્શન્સ મેનેજ કરો", + "combos": "કૉમ્બોઝ", + "comboDescription": "ફૉલબૅક સાથેનાં મોડેલ કૉમ્બોઝ", + "usage": "વપરાશ અને વિશ્લેષણ", + "usageDescription": "તમારા API વપરાશ, ટોકન વપરાશ અને વિનંતી લૉગ્સનું નિરીક્ષણ કરો", + "analytics": "એનાલિટિક્સ", + "analyticsDescription": "ચાર્ટ્સ, વલણો અને મૂલ્યાંકન સંબંધિત જાણકારી", + "cliTools": "CLI ટૂલ્સ", + "cliToolsDescription": "CLI ટૂલ્સ ગોઠવો", + "home": "હોમ", + "homeDescription": "OmniRouteમાં આપનું સ્વાગત છે", + "endpoint": "એન્ડપોઇન્ટ્સ", + "endpointDescription": "પ્રોક્સી એન્ડપોઇન્ટ્સ, MCP, A2A અને API એન્ડપોઇન્ટ્સનું સંચાલન કરો", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol સર્વરનું સંચાલન અને ટૂલ્સ", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", - "settings": "Settings", - "settingsDescription": "Manage your preferences", - "openaiCompatible": "OpenAI Compatible", - "anthropicCompatible": "Anthropic Compatible", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "a2aDescription": "Agent-to-Agent પ્રોટોકોલ કાર્યો અને અવલોકનક્ષમતા", + "settings": "સેટિંગ્સ", + "settingsDescription": "તમારી પસંદગીઓનું સંચાલન કરો", + "openaiCompatible": "OpenAI સુસંગત", + "anthropicCompatible": "Anthropic સુસંગત", + "media": "મીડિયા", + "mediaDescription": "છબીઓ, વિડિઓઝ અને સંગીત જનરેટ કરો", + "themes": "થીમ્સ", + "themesDescription": "આખા ડેશબોર્ડ પેનલ માટે રંગની થીમ પસંદ કરો", + "costsDescription": "તમામ પ્રદાતાઓમાં ખર્ચને ટ્રૅક કરો, વલણોનું વિશ્લેષણ કરો અને તમારા AI બજેટનું સંચાલન કરો", + "cacheDescription": "પ્રદાતાની પ્રોમ્પ્ટ કૅશ કાર્યક્ષમતા અને સ્થાનિક સિમેન્ટિક પ્રતિસાદના પુનઃઉપયોગ પર નજર રાખો.", + "limitsDescription": "દરેક API કી અને પ્રદાતા માટે દર મર્યાદાઓ અને ક્વોટા ગોઠવો", + "runtimeDescription": "લાઇવ રનટાઇમ અવલોકનક્ષમતા — સર્કિટ બ્રેકર્સ, કૂલડાઉન્સ, મોડેલ લૉકઆઉટ્સ, સેશન્સ અને ક્વોટા ચેતવણીઓ", + "apiManagerDescription": "તમારા OmniRoute ઇન્સ્ટન્સ માટે API કીઓ અને ઍક્સેસ નિયંત્રણનું સંચાલન કરો", + "batchDescription": "બૅચ કરેલા API કૉલ્સ વડે મોટી સંખ્યામાં વિનંતીઓની અસુમેળ રીતે પ્રક્રિયા કરો", + "contextCavemanDescription": "નિયમ-આધારિત સંદેશ સંકોચન, ભાષા પૅક્સ, એનાલિટિક્સ અને આઉટપુટ મોડ નિયંત્રણો.", + "contextRtkDescription": "ટૂલ આઉટપુટ, ટર્મિનલ લૉગ્સ અને બિલ્ડ પરિણામો માટે કમાન્ડ-અવેર સંકોચન.", + "contextCombosDescription": "વિવિધ રાઉટિંગ પરિસ્થિતિઓ માટે એન્જિનોને કેવી રીતે સંયોજિત કરવામાં આવે તે નિર્ધારિત કરો.", + "changelogDescription": "પ્લેટફોર્મની નવીનતમ સુવિધાઓ અને ઘોષણાઓથી માહિતગાર રહો.", + "agentsDescription": "AI એજન્ટ ટૂલ્સનું સંચાલન અને રૂપરેખાંકન કરો: Codex, Devin, Jules અને કસ્ટમ એજન્ટ્સ", + "cloudAgentsDescription": "લાઇવ કાર્ય ટ્રૅકિંગ અને યોજના મંજૂરી સાથે ક્લાઉડ-આધારિત AI એજન્ટ્સનું સંકલન કરો", + "memoryDescription": "સિમેન્ટિક શોધ અને FTS5 ફુલ-ટેક્સ્ટ ઇન્ડેક્સિંગ સાથે સ્થાયી વાર્તાલાપ મેમરી", + "skillsDescription": "સ્વચાલિત પ્રોમ્પ્ટ અને ટૂલ અમલીકરણ માટે સૅન્ડબૉક્સ સ્કિલ્સ ઇન્સ્ટોલ કરો અને તેનું સંચાલન કરો", + "agentSkillsDescription": "AI ક્લાયન્ટ એકીકરણ માટે એક-ક્લિક URL કૉપી સાથે એજન્ટ-રેડી સ્કિલ્સ કૅટલૉગ", + "translatorDescription": "API ફોર્મેટ્સમાં પ્રોમ્પ્ટ્સનું ભાષાંતર અને પરીક્ષણ કરો: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "લાઇવ પ્રદાતા પ્રતિસાદો અને ફોર્મેટ નિરીક્ષણ સાથે પ્રોમ્પ્ટ્સનું ઇન્ટરેક્ટિવ રીતે પરીક્ષણ કરો", + "searchToolsDescription": "શોધ એનાલિટિક્સ, પ્રદાતા વિભાજન, કૅશ હિટ દરો અને ખર્ચ ટ્રૅકિંગ", + "logsDescription": "રીઅલ-ટાઇમ વિનંતી લૉગ્સ, ભૂલ ટ્રેસિસ અને સ્ટ્રીમિંગ ઇવેન્ટ ઇન્સ્પેક્ટર", + "auditDescription": "API કીના ઉપયોગ, MCP ટૂલ કૉલ્સ અને નીતિ ઇવેન્ટ્સની અનુપાલન ઑડિટ ટ્રેઇલ", + "webhooksDescription": "રીઅલ-ટાઇમ ઇવેન્ટ સૂચનાઓ મેળવવા માટે વેબહૂક એન્ડપોઇન્ટ્સ ગોઠવો", + "healthDescription": "સિસ્ટમની સ્થિતિનું વિહંગાવલોકન: પ્રદાતાઓ, સર્કિટ બ્રેકર્સ, દર મર્યાદાઓ અને ડેટાબેઝ", + "proxyDescription": "આઉટબાઉન્ડ પ્રોવાઇડર કનેક્શન્સ માટે અપસ્ટ્રીમ પ્રોક્સી સેટિંગ્સ ગોઠવો", + "apiEndpointsDescription": "કસ્ટમ API એન્ડપોઇન્ટ કન્ફિગરેશન્સ અને રૂટિંગ ઓવરરાઇડ્સનું સંચાલન કરો", + "batchFilesDescription": "બૅચ જોબની આઉટપુટ ફાઇલો અને પરિણામો બ્રાઉઝ કરો અને સંચાલિત કરો", + "analyticsEvalsDescription": "મોડલ મૂલ્યાંકનનાં પરિણામો અને પ્રદર્શન બેન્ચમાર્ક્સ", + "analyticsSearchDescription": "સર્ચ ક્વેરી એનાલિટિક્સ, કૅશ હિટ રેટ્સ અને ખર્ચ ટ્રૅકિંગ", + "analyticsUtilizationDescription": "પ્રોવાઇડર ઉપયોગિતા મેટ્રિક્સ અને ક્ષમતા આયોજન", + "analyticsComboHealthDescription": "કોમ્બો રૂટિંગ કન્ફિગરેશન્સની રીઅલ-ટાઇમ સ્થિતિ અને કામગીરી", + "analyticsCompressionDescription": "કૉન્ટેક્સ્ટ કમ્પ્રેશન એનાલિટિક્સ અને ટોકન બચત", + "costsBudgetDescription": "દરેક API કી અને પ્રોવાઇડર માટે બજેટ મર્યાદાઓ અને ખર્ચ ચેતવણીઓ", + "costsPricingDescription": "ટોકન ખર્ચની ગણતરી માટે કસ્ટમ કિંમત કન્ફિગરેશન", + "logsProxyDescription": "અપસ્ટ્રીમ પ્રોક્સી રિક્વેસ્ટ લૉગ્સ અને ટ્રાફિક નિરીક્ષણ", + "logsConsoleDescription": "ઍપ્લિકેશન કન્સોલ આઉટપુટ અને ડિબગ લૉગ્સ", + "logsActivityDescription": "વપરાશકર્તાની ક્રિયાઓ અને સિસ્ટમ ઇવેન્ટ્સની ઑડિટ ટ્રેલ", + "auditMcpDescription": "MCP ટૂલ ઇન્વોકેશન ઑડિટ ટ્રેલ અને અનુપાલન રેકોર્ડ્સ", "auditA2a": "A2A ઓડિટ", "auditA2aDescription": "A2A ટાસ્ક એક્ઝિક્યુશન ઓડિટ ટ્રેઇલ, સ્ટેટ ટ્રાન્ઝિશન અને સ્કિલ ઇન્વોકેશન રેકોર્ડ્સ", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "થીમ, બ્રાન્ડિંગ અને દૃશ્યાત્મક કસ્ટમાઇઝેશન", + "settingsAiDescription": "AI વર્તણૂકો, વિચારણા બજેટ્સ, વિઝન અને મેમરી સેટિંગ્સ", "settingsCacheDescription": "મોડલ કેટલોગ કેશ એન્ટ્રીઓ માટે TTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "પ્રમાણીકરણ, અધિકૃતતા અને ઍક્સેસ કંટ્રોલ સેટિંગ્સ", "featureFlags": "લક્ષણ ફ્લેગ્સ", "featureFlagsDescription": "નિયંત્રણ સિસ્ટમ ક્ષમતાઓ અને પ્રાયોગિક સુવિધાઓ", "featureFlagsActive": "{count} સક્રિય", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "કોઈ ફ્લેગ તમારી શોધ સાથે મેળ ખાતા નથી", "featureFlagsSaved": "ધ્વજ અપડેટ કર્યો", "featureFlagsError": "ફ્લેગ અપડેટ કરવામાં નિષ્ફળ", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "રૂટિંગ નિયમો, મોડલ ઉપનામો, કોમ્બો ડિફૉલ્ટ્સ અને ડિગ્રેડેશન સેટિંગ્સ", + "settingsResilienceDescription": "સર્કિટ બ્રેકર, પુનઃપ્રયાસ અને ફૉલબૅક કન્ફિગરેશન", + "settingsAdvancedDescription": "અદ્યતન પેલોડ નિયમો, રિક્વેસ્ટ મર્યાદાઓ અને પ્રોક્સી API સેટિંગ્સ", + "mitmProxyDescription": "ટ્રાફિક નિરીક્ષણ અને ડિબગિંગ માટે MITM પ્રોક્સી સેટિંગ્સ ગોઠવો", + "oneProxyDescription": "અદ્યતન પ્રોક્સી ચેઇનિંગ માટે 1Proxy સેટિંગ્સ ગોઠવો", "omniSkillsDescription": "સ્વચાલિત પ્રોમ્પ્ટ અને ટૂલ એક્ઝિક્યુશન માટે સેન્ડબોક્સ સ્કિલ્સ ઇન્સ્ટોલ અને મેનેજ કરો" }, "cloudSyncStatus": { @@ -1761,8 +1761,8 @@ "quotaShare": "ક્વોટા શેર", "discovery": "ડિસ્કવરી", "freeProviderRankings": "ફ્રી પ્રોવાઇડર રેન્કિંગ્સ", - "radar": "Radar", - "setup": "Setup", + "radar": "રડાર", + "setup": "સેટઅપ", "freeTiers": "ફ્રી ટાયર્સ", "gamification": "ગેમિફિકેશન", "leaderboard": "લીડરબોર્ડ", @@ -1784,53 +1784,53 @@ "orchestration": "ઓર્કેસ્ટ્રેશન" }, "home": { - "quickStart": "Quick Start", - "quickStartDesc": "Get up and running in 4 steps. Connect providers, route models, monitor everything.", - "fullDocs": "Full Docs", - "step1Title": "1. Create API key", + "quickStart": "ઝડપી શરૂઆત", + "quickStartDesc": "4 પગલાંમાં સેટઅપ કરીને શરૂ કરો. પ્રોવાઇડર્સને કનેક્ટ કરો, મોડલ્સને રૂટ કરો અને દરેક બાબતનું નિરીક્ષણ કરો.", + "fullDocs": "સંપૂર્ણ દસ્તાવેજીકરણ", + "step1Title": "1. API કી બનાવો", "step1Desc": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "step2Title": "2. Connect providers", - "step2Desc": "Add accounts in Providers. Supports OAuth, API Key, and free tiers.", - "step3Title": "3. Point your client", - "step3Desc": "Set base URL to {url} in your IDE or API client.", - "step4Title": "4. Monitor & optimize", - "step4Desc": "Track tokens, cost and errors in Request Logs and Analytics.", - "providersOverview": "Providers Overview", - "configuredOf": "{configured} configured of {total} available providers", - "noModelsAvailable": "No models available for this provider.", + "step2Title": "2. પ્રોવાઇડર્સને કનેક્ટ કરો", + "step2Desc": "પ્રોવાઇડર્સમાં એકાઉન્ટ્સ ઉમેરો. OAuth, API Key અને મફત ટિયર્સને સપોર્ટ કરે છે.", + "step3Title": "3. તમારા ક્લાયન્ટને નિર્દેશિત કરો", + "step3Desc": "તમારા IDE અથવા API ક્લાયન્ટમાં બેઝ URL તરીકે {url} સેટ કરો.", + "step4Title": "4. નિરીક્ષણ અને ઑપ્ટિમાઇઝ કરો", + "step4Desc": "વિનંતી લૉગ્સ અને એનાલિટિક્સમાં ટોકન્સ, ખર્ચ અને ભૂલોને ટ્રૅક કરો.", + "providersOverview": "પ્રદાતાઓની ઝાંખી", + "configuredOf": "ઉપલબ્ધ {total} પ્રદાતાઓમાંથી {configured} કૉન્ફિગર કરેલા છે", + "noModelsAvailable": "આ પ્રદાતા માટે કોઈ મોડલ ઉપલબ્ધ નથી.", "noProvidersConfigured": "હજી સુધી કોઈ પ્રદાતાઓ ગોઠવેલ નથી", "addProvider": "પ્રદાતા ઉમેરો", - "configureFirst": "Configure a connection first in {providers}", - "configureProvider": "Configure Provider", - "modelAvailable": "{count} model available", - "modelsAvailable": "{count} models available", - "connectionsActive": "{count} connection active", - "connectionsActivePlural": "{count} connections active", - "copyModelName": "Copy model name", - "documentation": "Documentation", - "healthMonitor": "Health Monitor", - "reportIssue": "Report issue", - "activeError": "{active} active · {errors} error", - "topologyLegendActive": "__MISSING__:Active", - "topologyLegendRecent": "__MISSING__:Recent", - "topologyLegendError": "__MISSING__:Error", + "configureFirst": "પહેલા {providers}માં કનેક્શન કૉન્ફિગર કરો", + "configureProvider": "પ્રદાતા કૉન્ફિગર કરો", + "modelAvailable": "{count} મોડલ ઉપલબ્ધ છે", + "modelsAvailable": "{count} મોડલ ઉપલબ્ધ છે", + "connectionsActive": "{count} કનેક્શન સક્રિય છે", + "connectionsActivePlural": "{count} કનેક્શન સક્રિય છે", + "copyModelName": "મોડલનું નામ કૉપી કરો", + "documentation": "દસ્તાવેજીકરણ", + "healthMonitor": "હેલ્થ મોનિટર", + "reportIssue": "સમસ્યાની જાણ કરો", + "activeError": "{active} સક્રિય · {errors} ભૂલ", + "topologyLegendActive": "સક્રિય", + "topologyLegendRecent": "તાજેતરનું", + "topologyLegendError": "ભૂલ", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", - "requestsShort": "{count} reqs", - "providerModelsTitle": "{provider} - Models", - "copiedModel": "Copied: {model}", + "apiKeyLabel": "API કી", + "requestsShort": "{count} વિનંતીઓ", + "providerModelsTitle": "{provider} - મોડલ્સ", + "copiedModel": "કૉપી કર્યું: {model}", "aliasLabel": "alias", - "updateNow": "Update Now", - "updating": "Updating...", - "updateAvailableDesc": "A new version is available. Click to update.", - "updateStarted": "Update started...", + "updateNow": "હમણાં અપડેટ કરો", + "updating": "અપડેટ થઈ રહ્યું છે...", + "updateAvailableDesc": "નવું વર્ઝન ઉપલબ્ધ છે. અપડેટ કરવા માટે ક્લિક કરો.", + "updateStarted": "અપડેટ શરૂ થયું...", "reloadingPageAutomatically": "પૃષ્ઠને આપમેળે ફરીથી લોડ કરી રહ્યું છે...", "providerTopology": "પ્રદાતા ટોપોલોજી", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "તાજેતરની વિનંતીઓ", + "recentRequestsEmpty": "હજુ સુધી કોઈ વિનંતી નથી.", + "recentRequestsModel": "મોડલ", + "recentRequestsTokens": "ઇન / આઉટ", + "recentRequestsWhen": "ક્યારે", "downloadDmg": "DMG ડાઉનલોડ કરો (macOS)", "downloadDmgDescription": "ઓમ્નીરૂટ ડેસ્કટોપ એપ્લિકેશનનો નવો સંસ્કરણ ઉપલબ્ધ છે. કૃપા કરીને અપડેટ કરવા માટે macOS DMG ઇન્સ્ટોલર ડાઉનલોડ અને ઇન્સ્ટોલ કરો (વર્તમાન: v{version}).", "downloadExe": "ડાઉનલોડ EXE (Windows)", @@ -1888,18 +1888,18 @@ "releaseNotes": "રિલીઝ નોંધો", "readMore": "વધુ વાંચો", "noAuthLabel": "કોઈ ઓથેન્ટિકેશન નથી", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "રૂટ કરવા માટે તૈયાર થાઓ", + "readinessTitle": "તમારી પ્રથમ વિનંતી મોકલો", + "readinessSubtitle": "ચાર નાના પગલાં. તમે આગળ વધો તેમ OmniRoute તૈયારી તપાસે છે.", + "readinessStep1": "પ્રદાતાને કનેક્ટ કરો", + "readinessStep2": "એન્ડપોઇન્ટ પ્રમાણીકરણ કૉન્ફિગર કરો", + "readinessStep3": "તમારો એન્ડપોઇન્ટ કૉપી કરો", + "readinessStep4": "પરીક્ષણ વિનંતી મોકલો", + "readinessContinue": "સેટઅપ ચાલુ રાખો", + "readinessDismiss": "હમણાં માટે અવગણો" }, "analytics": { - "title": "Analytics", + "title": "વિશ્લેષણ", "usageAnalyticsTitle": "વપરાશ એનાલિટિક્સ", "diversityScoreTitle": "પ્રદાતા વિવિધતા", "diversityScoreDesc": "તાજેતરના ટ્રાફિક વિન્ડો માટે પ્રોવાઇડર કોન્સન્ટ્રેશન સ્નેપશોટ.", @@ -1963,11 +1963,11 @@ "rangeCancel": "રદ કરો", "rangeApply": "લાગુ કરો", "rangeErrorInvalid": "શરૂઆત સમાપ્તિ પહેલાં હોવી આવશ્યક છે", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1દિ", + "period7D": "7દિ", + "period30D": "30દિ", + "period90D": "90દિ", + "periodYTD": "વર્ષની શરૂઆતથી આજ સુધી", "periodAll": "બધા", "totalTokens": "કુલ ટોકન્સ", "inputTokens": "ઇનપુટ ટોકન્સ", @@ -1990,21 +1990,21 @@ "highlightsDiversity": "વિવિધતા", "highlightsFallbackRate": "ફૉલબેક દર", "customRange": "કસ્ટમ", - "overviewDescription": "Monitor your API usage patterns, token consumption, costs, and activity trends across all providers and models.", - "evalsDescription": "Run evaluation suites to test and validate your LLM endpoints. Compare model quality, detect regressions, and benchmark latency.", - "overview": "Overview", - "evals": "Evals", + "overviewDescription": "તમામ પ્રદાતાઓ અને મોડલ્સમાં તમારી API વપરાશની પેટર્ન, ટોકન વપરાશ, ખર્ચ અને પ્રવૃત્તિના વલણોનું નિરીક્ષણ કરો.", + "evalsDescription": "તમારા LLM એન્ડપોઇન્ટ્સનું પરીક્ષણ અને માન્યકરણ કરવા માટે મૂલ્યાંકન સ્યુટ્સ ચલાવો. મોડલની ગુણવત્તાની તુલના કરો, રિગ્રેશન્સ શોધો અને વિલંબતાનું બેન્ચમાર્ક કરો.", + "overview": "વિહંગાવલોકન", + "evals": "મૂલ્યાંકનો", "search": "શોધો", - "utilization": "Utilization", + "utilization": "ઉપયોગિતા", "routeTrace": "રૂટ ટ્રેસ", "sectionsAria": "એનાલિટિક્સ વિભાગો", - "utilizationDescription": "Provider quota usage trends and rate limit tracking", - "modelStatus": "Model Status", - "modelStatusCooldown": "Cooldown", - "modelStatusUnavailable": "Unavailable", - "modelStatusError": "Error", - "comboHealth": "Combo Health", - "comboHealthDescription": "Combo-level quota, usage distribution, and performance metrics", + "utilizationDescription": "પ્રદાતાના ક્વોટા વપરાશના વલણો અને દર મર્યાદાનું ટ્રેકિંગ", + "modelStatus": "મોડલની સ્થિતિ", + "modelStatusCooldown": "કૂલડાઉન", + "modelStatusUnavailable": "અનુપલબ્ધ", + "modelStatusError": "ભૂલ", + "comboHealth": "કોમ્બોનું સ્વાસ્થ્ય", + "comboHealthDescription": "કોમ્બો-સ્તરનો ક્વોટા, વપરાશનું વિતરણ અને પ્રદર્શન મેટ્રિક્સ", "compressionAnalyticsTitle": "Compression", "compressionAnalyticsDescription": "Compression analytics - token savings, mode breakdown, and provider stats.", "autoRoutingTotalAutoRequests": "કુલ સ્વતઃ વિનંતીઓ", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "પ્રદર્શન", "comboHealthPerformanceDescription": "રૂટ કરેલા કોમ્બો ટ્રાફિક માટે વિશ્વસનીયતા અને થ્રુપુટ.", "comboHealthExecutionTargetsDescription": "સ્ટ્રક્ચર્ડ કોમ્બો લક્ષ્યો માટે સ્ટેપ-લેવલ રનટાઇમ મેટ્રિક્સ અને ક્વોટા દૃશ્યતા.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} વિનંતીઓ", "comboHealthQuotaScope": "ક્વોટા સ્કોપ: {scope}", "comboHealthTrendValue": "ટ્રેન્ડ: {trend}", "comboHealthFetchFailed": "કોમ્બો હેલ્થ ડેટા મેળવવામાં નિષ્ફળ", @@ -2210,7 +2210,7 @@ "combo": "કોમ્બો", "routeStep": "પગલું", "tokens": "ટોકન્સ", - "notAvailable": "n/a", + "notAvailable": "લાગુ નથી", "routeTokenCounts": "{input} ઇન · {output} આઉટ", "routeEvidence": "પુરાવા", "routeFactors": "રાઉટીંગ પરિબળો", @@ -2237,55 +2237,55 @@ "freeTierAvailable": "મફત સ્તર ઉપલબ્ધ છે" }, "apiManager": { - "title": "API Keys", - "createKey": "Create API Key", - "key": "Key", - "revokeKey": "Revoke Key", - "revokeConfirm": "Are you sure you want to revoke this API key?", - "noKeys": "No API keys yet", - "noKeysDesc": "Create your first API key to authenticate requests to your endpoint", - "keyLabel": "Key Label", - "permissions": "Permissions", - "expiresAt": "Expires", - "never": "Never", - "revoke": "Revoke", - "showKey": "Show Key", - "hideKey": "Hide Key", - "copyKey": "Copy API Key", - "allModels": "All models", - "selectedModels": "Selected Models", - "readOnly": "Read Only", - "fullAccess": "Full Access", - "keyManagement": "API Key Management", - "keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "title": "API કીઝ", + "createKey": "API કી બનાવો", + "key": "કી", + "revokeKey": "કી રદ કરો", + "revokeConfirm": "શું તમે ખરેખર આ API કી રદ કરવા માંગો છો?", + "noKeys": "હજુ સુધી કોઈ API કીઝ નથી", + "noKeysDesc": "તમારા એન્ડપોઇન્ટ માટેની વિનંતીઓને પ્રમાણિત કરવા તમારી પ્રથમ API કી બનાવો", + "keyLabel": "કી લેબલ", + "permissions": "પરવાનગીઓ", + "expiresAt": "સમાપ્તિ", + "never": "ક્યારેય નહીં", + "revoke": "રદ કરો", + "showKey": "કી બતાવો", + "hideKey": "કી છુપાવો", + "copyKey": "API કી કૉપિ કરો", + "allModels": "બધા મોડલ્સ", + "selectedModels": "પસંદ કરેલા મોડલ્સ", + "readOnly": "ફક્ત વાંચવા માટે", + "fullAccess": "સંપૂર્ણ ઍક્સેસ", + "keyManagement": "API કી વ્યવસ્થાપન", + "keyManagementDesc": "તમારા એન્ડપોઇન્ટ પરની વિનંતીઓને પ્રમાણિત કરવા માટે API કી બનાવો અને સંચાલિત કરો", + "requestFlowAria": "તમારી ઍપ API કી દ્વારા OmniRoute પર વિનંતીઓ મોકલે છે", + "requestFlowYourApp": "તમારી ઍપ", + "requestFlowApiKey": "API કી", "requestFlowOmniRoute": "OmniRoute", - "totalKeys": "Total Keys", - "restricted": "Restricted", - "totalRequests": "Total Requests", - "modelsAvailable": "Models Available", - "registeredKeys": "Registered Keys", - "keysRegistered": "{count} keys registered", - "keyRegistered": "{count} key registered", - "keysSecurityNote": "Each key isolates usage tracking and can be revoked independently. Keys are masked after creation for security.", - "createFirstKey": "Create Your First Key", - "name": "Name", - "usage": "Usage", - "created": "Created", - "actions": "Actions", - "reqs": "reqs", - "neverUsed": "Never used", - "deleteConfirm": "Delete this API key?", - "usageTips": "Usage Tips", - "tipAuth": "Use API keys in the Authorization header as Bearer YOUR_KEY", - "tipSecure": "Keys are only shown once during creation — store them securely", - "tipSeparate": "Create separate keys for different clients or environments", - "tipRestrict": "Restrict keys to specific models for better security and cost control", - "keyName": "Key Name", + "totalKeys": "કુલ કીઓ", + "restricted": "પ્રતિબંધિત", + "totalRequests": "કુલ વિનંતીઓ", + "modelsAvailable": "ઉપલબ્ધ મોડલ્સ", + "registeredKeys": "નોંધાયેલ કીઓ", + "keysRegistered": "{count} કીઓ નોંધાયેલી છે", + "keyRegistered": "{count} કી નોંધાયેલી છે", + "keysSecurityNote": "દરેક કી વપરાશ ટ્રૅકિંગને અલગ રાખે છે અને તેને સ્વતંત્ર રીતે રદ કરી શકાય છે. સુરક્ષા માટે કીઓ બનાવ્યા પછી છુપાવવામાં આવે છે.", + "createFirstKey": "તમારી પ્રથમ કી બનાવો", + "name": "નામ", + "usage": "વપરાશ", + "created": "બનાવ્યાની તારીખ", + "actions": "ક્રિયાઓ", + "reqs": "વિનંતીઓ", + "neverUsed": "ક્યારેય ઉપયોગમાં લેવાઈ નથી", + "deleteConfirm": "આ API કી કાઢી નાખવી છે?", + "usageTips": "વપરાશ માટેની ટિપ્સ", + "tipAuth": "Authorization હેડરમાં API કીનો Bearer YOUR_KEY તરીકે ઉપયોગ કરો", + "tipSecure": "કીઓ બનાવતી વખતે ફક્ત એક જ વાર બતાવવામાં આવે છે — તેમને સુરક્ષિત રીતે સંગ્રહિત કરો", + "tipSeparate": "અલગ-અલગ ક્લાયન્ટ અથવા એન્વાયર્નમેન્ટ માટે અલગ કીઓ બનાવો", + "tipRestrict": "વધુ સારી સુરક્ષા અને ખર્ચ નિયંત્રણ માટે કીઓને ચોક્કસ મોડલ્સ સુધી મર્યાદિત કરો", + "keyName": "કીનું નામ", "keyNamePlaceholder": "e.g., Production Key, Development Key", - "keyNameDesc": "Choose a descriptive name to identify this key's purpose", + "keyNameDesc": "આ કીના હેતુને ઓળખવા માટે વર્ણનાત્મક નામ પસંદ કરો", "managementAccessDesc": "આ API કીને OmniRoute રૂપરેખાંકન સંચાલિત કરવાની મંજૂરી આપો.", "selfServiceVisibility": "સ્વ-સેવા દૃશ્યતા", "selfServiceVisibilityDesc": "આ કી પોતાના ઉપયોગ અને શેર કરેલા upstream ક્વોટા વિશે શું જોઈ શકે તે નિયંત્રિત કરો.", @@ -2296,83 +2296,83 @@ "localUsageCommand": "સ્થાનિક વપરાશ આદેશની મંજૂરી આપો", "localUsageCommandDesc": "આ API કીને અપસ્ટ્રીમ પ્રદાતાને કૉલ કર્યા વિના કેશ્ડ વપરાશ અને ક્વોટા માહિતી પુનઃપ્રાપ્ત કરવા માટે @@om-usage નો ઉપયોગ કરવાની મંજૂરી આપે છે.", "localUsageCommandBadge": "વપરાશ cmd", - "keyCreated": "API Key Created", - "keyCreatedSuccess": "Key created successfully!", - "keyCreatedNote": "Copy and store this key now — it won't be shown again.", - "done": "Done", - "savePermissions": "Save Permissions", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "keyCreated": "API કી બનાવવામાં આવી", + "keyCreatedSuccess": "કી સફળતાપૂર્વક બનાવવામાં આવી!", + "keyCreatedNote": "આ કીને હમણાં જ કૉપિ કરીને સંગ્રહિત કરો — તે ફરીથી બતાવવામાં આવશે નહીં.", + "done": "પૂર્ણ", + "savePermissions": "પરવાનગીઓ સાચવો", + "endpointRestrictions": "માન્ય એન્ડપોઇન્ટ્સ", + "allEndpointsAllowed": "આ કી બધા API એન્ડપોઇન્ટ્સને ઍક્સેસ કરી શકે છે.", + "endpointsRestricted": "{count} એન્ડપોઇન્ટ{count, plural, one {} other {}} સુધી મર્યાદિત.", + "autoResolve": "ઑટો-રિઝોલ્વ", + "autoResolveDesc": "આ API કી માટે અસ્પષ્ટ મોડેલ નામોને આપમેળે મૂળ પ્રદાતા સાથે મેળવો.", "streamDefaultMode": "સ્ટ્રીમ ડિફોલ્ટ સુસંગતતા", "streamDefaultModeDesc": "આ કી માટે બાકાત રાખેલ `stream` ફ્લેગ્સને નિયંત્રિત કરે છે. JSON મોડ નોન-સ્ટ્રીમિંગ પ્રતિસાદો આપે છે જ્યાં સુધી ક્લાયંટ સ્પષ્ટપણે SSE ની વિનંતી ન કરે.", "streamDefaultLegacy": "લેગસી", "streamDefaultJson": "JSON સુસંગત", "streamDefaultBadge": "JSON સ્ટ્રીમ ડિફોલ્ટ", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", - "allowAll": "Allow All", - "restrict": "Restrict", - "allowAllInfo": "This key can access all available models.", - "restrictInfo": "This key can access {selected} of {total} models.", - "selected": "{count} selected", - "all": "All", - "clear": "Clear", - "searchModels": "Search models by name or provider...", - "noModelsFound": "No models found", - "keyNameRequired": "Key name is required", - "keyNameTooLong": "Key name must be {max} characters or less", - "keyNameInvalid": "Key name can only contain letters, numbers, spaces, hyphens, and underscores", - "invalidKeyName": "Invalid key name", - "failedCreateKey": "Failed to create key", - "failedCreateKeyRetry": "Failed to create key. Please try again.", - "invalidKeyId": "Invalid key ID", - "failedDeleteKey": "Failed to delete key", - "failedDeleteKeyRetry": "Failed to delete key. Please try again.", - "invalidModelsSelection": "Invalid models selection", - "cannotSelectMoreThanModels": "Cannot select more than {max} models", - "failedUpdatePermissions": "Failed to update permissions", - "failedUpdatePermissionsRetry": "Failed to update permissions. Please try again.", - "unknownProvider": "unknown", - "copyMaskedKey": "Copy masked key", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyActive": "કી સક્રિય", + "keyActiveDesc": "આ API કીને સક્ષમ અથવા અક્ષમ કરો. અક્ષમ કરેલી કીઓ 403 સાથે તરત જ નકારવામાં આવે છે.", + "accessSchedule": "ઍક્સેસ સમયપત્રક", + "accessScheduleDesc": "અઠવાડિયાના ચોક્કસ કલાકો અને દિવસો સુધી ઍક્સેસ મર્યાદિત કરો.", + "scheduleFrom": "થી", + "scheduleUntil": "સુધી", + "scheduleDays": "દિવસો", + "scheduleTimezone": "સમય ક્ષેત્ર", + "scheduleTimezoneHint": "IANA સમય ક્ષેત્રનાં નામો વાપરો, દા.ત. America/New_York, Europe/Berlin", + "scheduleActive": "સમયપત્રક", + "disabled": "અક્ષમ", + "daySun": "રવિ", + "dayMon": "સોમ", + "dayTue": "મંગળ", + "dayWed": "બુધ", + "dayThu": "ગુરુ", + "dayFri": "શુક્ર", + "daySat": "શનિ", + "allowAll": "બધાને મંજૂરી આપો", + "restrict": "મર્યાદિત કરો", + "allowAllInfo": "આ કી બધા ઉપલબ્ધ મોડેલોને ઍક્સેસ કરી શકે છે.", + "restrictInfo": "આ કી {total}માંથી {selected} મોડેલોને ઍક્સેસ કરી શકે છે.", + "selected": "{count} પસંદ કરેલ", + "all": "બધા", + "clear": "સાફ કરો", + "searchModels": "નામ અથવા પ્રદાતા દ્વારા મોડેલો શોધો...", + "noModelsFound": "કોઈ મોડેલ મળ્યાં નથી", + "keyNameRequired": "કીનું નામ આવશ્યક છે", + "keyNameTooLong": "કીનું નામ {max} કે તેથી ઓછા અક્ષરોનું હોવું જોઈએ", + "keyNameInvalid": "કીના નામમાં માત્ર અક્ષરો, સંખ્યાઓ, સ્પેસ, હાઇફન અને અન્ડરસ્કોર હોઈ શકે છે", + "invalidKeyName": "અમાન્ય કી નામ", + "failedCreateKey": "કી બનાવવામાં નિષ્ફળતા", + "failedCreateKeyRetry": "કી બનાવવામાં નિષ્ફળતા. કૃપા કરીને ફરી પ્રયાસ કરો.", + "invalidKeyId": "અમાન્ય કી ID", + "failedDeleteKey": "કી કાઢી નાખવામાં નિષ્ફળતા", + "failedDeleteKeyRetry": "કી કાઢી નાખવામાં નિષ્ફળતા. કૃપા કરીને ફરી પ્રયાસ કરો.", + "invalidModelsSelection": "મોડેલોની અમાન્ય પસંદગી", + "cannotSelectMoreThanModels": "{max} કરતાં વધુ મોડેલો પસંદ કરી શકાતા નથી", + "failedUpdatePermissions": "પરવાનગીઓ અપડેટ કરવામાં નિષ્ફળતા", + "failedUpdatePermissionsRetry": "પરવાનગીઓ અપડેટ કરવામાં નિષ્ફળતા. કૃપા કરીને ફરી પ્રયાસ કરો.", + "unknownProvider": "અજ્ઞાત", + "copyMaskedKey": "માસ્ક કરેલી કી કૉપિ કરો", + "keyOnlyAvailableAtCreation": "સંપૂર્ણ કી ફક્ત બનાવતી વખતે જ ઉપલબ્ધ હોય છે — પહેલી વાર કી બનાવો ત્યારે તેને કૉપિ કરો", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# ઉપકરણ} other {# ઉપકરણો}}", "devicesTooltip": "{count, plural, one {# વિશિષ્ટ IP/User-Agent ઉપકરણ આ કી સાથે જોવામાં આવ્યું છે (છેલ્લી 30 મિનિટ)} other {# વિશિષ્ટ IP/User-Agent ઉપકરણો આ કી સાથે જોવામાં આવ્યા છે (છેલ્લી 30 મિનિટ)}}", - "lastUsedOn": "Last: {date}", + "lastUsedOn": "છેલ્લું: {date}", "viewCostsFor": "{name} માટેના ખર્ચ જુઓ", - "editPermissions": "Edit permissions", - "deleteKey": "Delete key", + "editPermissions": "પરવાનગીઓ સંપાદિત કરો", + "deleteKey": "કી કાઢી નાખો", "regenerateKey": "કી રીજનરેટ કરો", "regenerateConfirm": "શું તમે ખરેખર આ API કી ફરીથી બનાવવા માંગો છો? જૂની કી તરત જ અમાન્ય થઈ જશે.", "failedRegenerateKey": "API કી ફરીથી બનાવવામાં નિષ્ફળ", "failedRegenerateKeyRetry": "API કી ફરીથી બનાવવામાં નિષ્ફળ. કૃપા કરીને ફરી પ્રયાસ કરો.", - "model": "{count} model", - "models": "{count} models", - "permissionsTitle": "Permissions: {name}", - "allowAllDesc": "This key can access all available models.", + "model": "{count} મોડલ", + "models": "{count} મોડલ", + "permissionsTitle": "પરવાનગીઓ: {name}", + "allowAllDesc": "આ કી બધા ઉપલબ્ધ મોડલને ઍક્સેસ કરી શકે છે.", "restrictLoading": "મોડેલ કૅટેલોગ લોડ થઈ રહ્યું છે…", "restrictCatalogUnavailable": "મોડેલ કૅટેલોગ ઉપલબ્ધ નથી; આ કીમાં {selectedCount} પસંદ કરેલ મોડેલ પ્રતિબંધો છે.", - "restrictDesc": "This key can access {selectedCount} of {totalModels} models.", - "selectedCount": "{count} selected", + "restrictDesc": "આ કી {totalModels}માંથી {selectedCount} મોડલને ઍક્સેસ કરી શકે છે.", + "selectedCount": "{count} પસંદ કરેલ", "maxActiveSessions": "મહત્તમ સક્રિય સત્રો", "maxActiveSessionsDescription": "0 = અમર્યાદિત. જ્યારે આ કી સમવર્તી સ્ટીકી સત્રો કરતાં વધી જાય ત્યારે 429 પરત કરો.", "throttleDelay": "થ્રોટલ વિલંબ", @@ -2382,8 +2382,8 @@ "allowedCombos": "મંજૂર સંયોજનો", "allCombosAllowed": "આ કી કોઈપણ સંયોજનનો ઉપયોગ કરી શકે છે.", "restrictedComboCount": "{count, plural, one {# સંયોજન} other {# સંયોજનો}} સુધી મર્યાદિત.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# સંગ્રહિત એન્ટ્રી} other {# સંગ્રહિત એન્ટ્રીઓ}} આ કૉમ્બો સૂચિમાં નથી (ઉદાહરણ તરીકે, રૂટિંગ નિયમો) અને સાચવ્યા પ્રમાણે જ રાખવામાં આવશે.", + "preservedComboRuleHint": "સંગ્રહિત છે તેમ જ રાખ્યું છે. આ એન્ટ્રી ઉપરની સૂચિમાં કૉમ્બો નથી, તેથી તેને ફક્ત API દ્વારા જ બદલી શકાય છે.", "apiManagerCustomRateLimits": "કસ્ટમ દર મર્યાદાઓ", "apiManagerCustomRateLimitsDesc": "વૈશ્વિક ડિફૉલ્ટ મર્યાદાઓને ઓવરરાઇડ કરો. ડિફૉલ્ટનો ઉપયોગ કરવા માટે ખાલી છોડો.", "apiManagerRateLimitRequestsPlaceholder": "વિનંતીઓ", @@ -2419,52 +2419,52 @@ "bypassProviderQuota": "પ્રદાતા ક્વોટા કટઓફ બાયપાસ કરો", "bypassProviderQuotaDescription": "રૂટીંગ દરમિયાન આ કીને અપસ્ટ્રીમ પ્રદાતા/ખાતાની કટઓફ નીતિને અવગણવાની મંજૂરી આપે છે. API કી USD ક્વોટા હજી પણ લાગુ પડે છે.", "quotaPill": "ક્વોટા", - "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "quotaModeOnly": "ફક્ત qtSd", + "exclusiveLease": "વિશિષ્ટ લીઝ", + "exclusiveLeaseNoticeTitle": "વિશિષ્ટ લીઝ", + "exclusiveLeaseNoticeDesc": "આ API કી પાસે સમર્પિત કનેક્શન રૂટિંગ માટે વિશિષ્ટ લીઝ પરવાનગીઓ છે.", + "allConnections": "બધા કનેક્શન", + "onlySelectedConnections": "ફક્ત પસંદ કરેલા કનેક્શન", + "selectAtLeastOneConnection": "ઓછામાં ઓછું એક કનેક્શન પસંદ કરો અથવા બધા કનેક્શન પસંદ કરો.", + "allConnectionsDesc": "આ કી કોઈપણ સક્રિય કનેક્શનનો ઉપયોગ કરી શકે છે.", + "restrictedToConnections": "{count, plural, one {# કનેક્શન} other {# કનેક્શન}} સુધી મર્યાદિત." }, "auditLog": { - "title": "Audit Log", - "searchPlaceholder": "Search actions...", - "action": "Action", - "actor": "Actor", - "target": "Target", - "ipAddress": "IP Address", - "timestamp": "Timestamp", - "noEntries": "No audit entries found", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", + "title": "ઑડિટ લૉગ", + "searchPlaceholder": "ક્રિયાઓ શોધો...", + "action": "ક્રિયા", + "actor": "કર્તા", + "target": "લક્ષ્ય", + "ipAddress": "IP સરનામું", + "timestamp": "સમયમુદ્રા", + "noEntries": "કોઈ ઑડિટ એન્ટ્રી મળી નથી", + "filterByAction": "ક્રિયા દ્વારા ફિલ્ટર કરો...", + "filterByActor": "કર્તા દ્વારા ફિલ્ટર કરો...", + "filterEntriesAria": "ઑડિટ લૉગ એન્ટ્રીઓને ફિલ્ટર કરો", + "filterByActionTypeAria": "ક્રિયાના પ્રકાર દ્વારા ફિલ્ટર કરો", + "filterByActorAria": "કર્તા દ્વારા ફિલ્ટર કરો", + "refreshAuditLogAria": "ઑડિટ લૉગ રિફ્રેશ કરો", + "tableAria": "ઑડિટ લૉગ એન્ટ્રીઓ", + "failedFetchAuditLog": "ઑડિટ લૉગ મેળવવામાં નિષ્ફળતા", "notAvailable": "—", - "description": "Administrative actions and security events", - "showing": "Showing {count} entries (offset {offset})", - "previous": "Previous" + "description": "વહીવટી ક્રિયાઓ અને સુરક્ષા ઘટનાઓ", + "showing": "{count} એન્ટ્રીઓ દર્શાવી રહ્યું છે (ઓફસેટ {offset})", + "previous": "પાછલું" }, "media": { - "title": "Media Playground", - "subtitle": "Generate images, videos, and music", + "title": "મીડિયા પ્લેગ્રાઉન્ડ", + "subtitle": "છબીઓ, વિડિઓઝ અને સંગીત જનરેટ કરો", "model": "Model", "prompt": "Prompt", - "generate": "Generate", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generate": "જનરેટ કરો", + "generating": "જનરેટ થઈ રહ્યું છે...", + "loadingModels": "ઉપલબ્ધ મોડેલો લોડ થઈ રહ્યા છે...", + "noModels": "કોઈ મોડેલ ઉપલબ્ધ નથી. પહેલાં મીડિયા ક્ષમતાઓ ધરાવતા પ્રદાતાઓને કૉન્ફિગર કરો.", + "error": "જનરેશન નિષ્ફળ થયું", + "result": "પરિણામ", + "imageDescription": "OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI અને અન્યનો ઉપયોગ કરીને ટેક્સ્ટ પ્રોમ્પ્ટમાંથી છબીઓ જનરેટ કરો.", + "videoDescription": "ComfyUI અથવા SD WebUI દ્વારા AnimateDiff, Stable Video Diffusion વડે વિડિઓઝ બનાવો.", + "musicDescription": "ComfyUI દ્વારા Stable Audio Open અથવા MusicGenનો ઉપયોગ કરીને સંગીત રચો.", "kinds": { "embedding": "એમ્બેડિંગ", "image": "ઇમેજ", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter સ્પીચ-ટુ-ટેક્સ્ટ મોડેલ્સ તમારી રૂપરેખાંકિત OpenRouter કનેક્શનનો ઉપયોગ કરે છે. કોઈ અલગ પ્રમાણપત્રની જરૂર નથી." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "શોધ ક્વેરી", + "searchResults": "શોધ પરિણામો", + "cachedResult": "કૅશ કરેલું", + "searchCost": "ખર્ચ", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "પ્રદાતાની સરખામણી સાથે અદ્યતન શોધ પરીક્ષણ", + "compareProviders": "પ્રદાતાઓની સરખામણી કરો", + "rerankResults": "પરિણામોને ફરી ક્રમબદ્ધ કરો", + "searchHistory": "શોધ ઇતિહાસ", + "urlOverlap": "URL ઓવરલૅપ", + "noSearchProviders": "કોઈ શોધ પ્રદાતા કૉન્ફિગર કરેલા નથી. સેટિંગ્સમાં પ્રદાતાઓ ઉમેરો.", + "noRerankModels": "કોઈ રીરૅન્ક મોડેલ ઉપલબ્ધ નથી", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "પ્રદાતા", + "searchType": "શોધનો પ્રકાર", + "maxResults": "મહત્તમ પરિણામો", + "filters": "ફિલ્ટર્સ", + "country": "દેશ", + "language": "ભાષા", + "timeRange": "સમયગાળો", + "includeDomains": "ડોમેઇન્સ સામેલ કરો", + "excludeDomains": "ડોમેઇન્સ બાકાત રાખો", + "safeSearch": "સુરક્ષિત શોધ", + "safeSearchOff": "બંધ", + "safeSearchModerate": "મધ્યમ", + "safeSearchStrict": "કડક", + "queryPlaceholder": "શોધ ક્વેરી દાખલ કરો...", + "providerAuto": "આપમેળે (સૌથી સસ્તું)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "સમાચાર", + "optionAny": "કોઈપણ", + "timeRangeDay": "છેલ્લો દિવસ", + "timeRangeWeek": "છેલ્લું અઠવાડિયું", + "timeRangeMonth": "છેલ્લો મહિનો", + "timeRangeYear": "છેલ્લું વર્ષ", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "વિનંતીનો સમય સમાપ્ત થયો ({seconds}s)", + "networkError": "નેટવર્ક ભૂલ", + "formatted": "ફોર્મેટ કરેલું", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "કૅશ મિસ", + "cacheHit": "કૅશ હિટ", + "latency": "વિલંબ", + "cost": "ખર્ચ", + "results": "પરિણામો", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "પુનઃક્રમનિર્ધારણ મોડેલ", + "positionDelta": "સ્થાનમાં ફેરફાર", + "emptyState": "પરિણામો જોવા માટે શોધ ક્વેરી મોકલો", "copy": "નકલ કરો", "resetToDefault": "ડિફૉલ્ટ પર ફરીથી સેટ કરો", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "શોધ", + "tabScrape": "સ્ક્રેપ", + "tabCompare": "સરખામણી", + "modalitiesGuide": "મોડાલિટીઝ માર્ગદર્શિકા", + "searchConceptTitle": "શોધ", + "searchConceptDesc": "શોધ = વેબ પરિણામોની યાદી મેળવે છે (શીર્ષક, URL, સ્નિપેટ, સુસંગતતા સ્કોર)", + "scrapeConceptTitle": "સ્ક્રેપ", + "scrapeConceptDesc": "સ્ક્રેપ = URLમાંથી સંપૂર્ણ સામગ્રી કાઢે છે (markdown, ટેક્સ્ટ અથવા HTML)", + "compareConceptTitle": "સરખામણી", + "compareConceptDesc": "સરખામણી = વિલંબ, ખર્ચ અને પરિણામોના ઓવરલેપની સરખામણી કરવા માટે N પ્રદાતાઓમાં એક જ ક્વેરીને બાજુ-બાજુ ચલાવે છે", + "rerankConceptTitle": "પુનઃક્રમનિર્ધારણ", + "rerankConceptDesc": "પુનઃક્રમનિર્ધારણ = ક્વેરીના આધારે સુસંગતતા સુધારવા માટે LLM દ્વારા પરિણામોને ફરીથી ક્રમબદ્ધ કરે છે", + "autoConceptTitle": "આપમેળે (સૌથી સસ્તું)", + "autoConceptDesc": "આપમેળે (સૌથી સસ્તું) = ગોઠવેલ ઓળખપત્રો ધરાવતા ઉપલબ્ધ પ્રદાતાઓમાંથી સૌથી સસ્તા પ્રદાતાને આપમેળે પસંદ કરે છે", + "providerCatalogTitle": "પ્રદાતા સૂચિ", + "kindSearch": "શોધ", + "kindFetch": "મેળવો/સ્ક્રેપ", + "statusConfigured": "ગોઠવેલ", + "statusMissing": "કોઈ ઓળખપત્ર નથી", + "statusRateLimited": "દર મર્યાદિત", + "configureProvider": "પ્રદાતાઓમાં ગોઠવો", + "loadingProviders": "પ્રદાતાઓ લોડ થઈ રહ્યા છે…", + "failedToLoadProviders": "પ્રદાતાઓ લોડ કરવામાં નિષ્ફળતા", + "costPerQuery": "ખર્ચ/ક્વેરી", + "freeQuota": "મફત ક્વોટા/મહિનો", + "scrapeUrl": "સ્ક્રેપ કરવા માટેનું URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL જરૂરી છે", "scrapeUrlInvalid": "અમાન્ય URL — તે http:// અથવા https:// થી શરૂ થવું આવશ્યક છે", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "એક્સ્ટ્રેક્ટ કરો", + "scrapeExtracting": "એક્સ્ટ્રેક્ટ થઈ રહ્યું છે…", + "scrapeFullPage": "સંપૂર્ણ પાનું", + "scrapeFormat": "ફોર્મેટ", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "ટેક્સ્ટ", + "scrapePreview": "પૂર્વાવલોકન", + "scrapeRaw": "કાચું", + "scrapeContentTruncated": "(ટૂંકાવેલું, કાચું જુઓ)", + "scrapeMetadata": "મેટાડેટા", + "scrapeProvider": "પ્રદાતા", + "scrapeSize": "કદ", "scrapeEmptyState": "તેની સામગ્રી કાઢવા માટે URL દાખલ કરો", "scrapeProvidersAvailable": "ઉપલબ્ધ પ્રદાતાઓ: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "સરખામણી કરો", + "compareRunning": "સરખામણી થઈ રહી છે…", + "autoProvider": "સ્વચાલિત (સૌથી સસ્તું)", + "configuredStatus": "ગોઠવાયેલ", + "rateLimitedStatus": "દર મર્યાદિત", + "noCredential": "કોઈ ઓળખપત્ર નથી", + "searchTypeLabel": "પ્રકાર", + "rerankModelLabel": "પુનઃક્રમિત કરવાનું મોડેલ", + "noneOption": "કોઈ નહીં", + "size": "કદ", "configurationPane": "કોન્ફિગરેશન પેન", "configuration": "કોન્ફિગરેશન", "status": "સ્થિતિ", @@ -2701,7 +2701,7 @@ "compareEmptyDescription": "પરિણામો લેટન્સી, કિંમત અને URL ઓવરલેપ સાથે બાજુબાજુમાં બતાવવામાં આવશે" }, "cliTools": { - "title": "CLI Tools", + "title": "CLI સાધનો", "classifierCompatTitle": "ઓટો-પરમિશન ક્લાસિફાયર સુસંગતતા", "classifierCompatDescription": "Claude Code ના --permission-mode auto સિક્યોરિટી ક્લાસિફાયરને સિન્થેટિક એલાઉ રિસ્પોન્સ સાથે શોર્ટ-સર્કિટ કરો જેથી ફોલબેક રૂટ્સ બંધ ન થઈ જાય. ડિફોલ્ટ રૂપે બંધ.", "classifierCompatCycle": "ચક્ર: off → auto → always", @@ -2727,14 +2727,14 @@ "codexProfilesDescription": "મોડલ ડિસ્કવરી પછી ~/.codex/*.config.toml ફરીથી જનરેટ કરો.", "claudeProfiles": "Claude Code પ્રોફાઇલ્સ", "claudeProfilesDescription": "મોડલ ડિસ્કવરી પછી દરેક ~/.claude/profiles/…/settings.json ફરીથી જનરેટ કરો.", - "noActiveProviders": "No active providers", - "noActiveProvidersDesc": "Please add and connect providers first to configure CLI tools.", - "mapModels": "Map Models", - "testConnection": "Test Connection", - "connectionStatus": "Connection Status", - "configureEndpoint": "Configure Endpoint", - "instructions": "Instructions", - "modelMapping": "Model Mapping", + "noActiveProviders": "કોઈ સક્રિય પ્રદાતા નથી", + "noActiveProvidersDesc": "CLI સાધનો ગોઠવવા માટે કૃપા કરીને પહેલા પ્રદાતાઓ ઉમેરો અને કનેક્ટ કરો.", + "mapModels": "મોડેલો મેપ કરો", + "testConnection": "કનેક્શન ચકાસો", + "connectionStatus": "કનેક્શનની સ્થિતિ", + "configureEndpoint": "એન્ડપોઇન્ટ ગોઠવો", + "instructions": "સૂચનાઓ", + "modelMapping": "મોડેલ મેપિંગ", "reasoningEffort": "{model} માટે રીઝનિંગ પ્રયાસ", "effortNone": "કોઈ નહીં", "effortLow": "ઓછો", @@ -2747,62 +2747,62 @@ "modelAliases": "મોડેલ ઉપનામો", "addModel": "મોડેલ ઉમેરો", "routeModelPlaceholder": "{model} ને અહીં રૂટ કરો...", - "baseUrl": "Base URL", - "apiKey": "API Key", - "configured": "Configured", - "notConfigured": "Not configured", - "notInstalled": "Not installed", - "custom": "Custom", - "unknown": "Unknown", - "lastSavedAt": "Last saved: {date}", - "never": "Never", - "justNow": "just now", - "minutesAgoShort": "{count}m ago", - "hoursAgoShort": "{count}h ago", - "daysAgoShort": "{count}d ago", - "monthsAgoShort": "{count}mo ago", - "yearsAgoShort": "{count}y ago", - "runtimeCheckFailed": "Runtime check failed", + "baseUrl": "મૂળ URL", + "apiKey": "API કી", + "configured": "રૂપરેખાંકિત", + "notConfigured": "રૂપરેખાંકિત નથી", + "notInstalled": "ઇન્સ્ટોલ કરેલું નથી", + "custom": "કસ્ટમ", + "unknown": "અજ્ઞાત", + "lastSavedAt": "છેલ્લે સાચવ્યું: {date}", + "never": "ક્યારેય નહીં", + "justNow": "હમણાં જ", + "minutesAgoShort": "{count} મિનિટ પહેલાં", + "hoursAgoShort": "{count} કલાક પહેલાં", + "daysAgoShort": "{count} દિવસ પહેલાં", + "monthsAgoShort": "{count} મહિના પહેલાં", + "yearsAgoShort": "{count} વર્ષ પહેલાં", + "runtimeCheckFailed": "રનટાઇમ તપાસ નિષ્ફળ ગઈ", "yourApiKeyPlaceholder": "your-api-key", "modelPlaceholder": "provider/model-id", - "configurationSaved": "Configuration saved successfully.", - "failedToSave": "Failed to save configuration.", - "noApiKeysCreateOne": "No API keys - Create one in Keys page", - "defaultOmnirouteKey": "sk_omniroute (default)", - "selectModel": "Select Model", - "selectModelForAlias": "Select model for {alias}", - "selectModelForTool": "Select Model for {tool}", - "select": "Select", - "clear": "Clear", - "comingSoon": "Coming soon", - "checkingRuntime": "Checking runtime status...", - "guideOnlyIntegration": "Guide-only integration (no local runtime required)", - "cliRuntimeDetected": "CLI runtime detected and ready", - "cliFoundNotRunnable": "CLI found but not runnable{reason}", - "cliRuntimeNotDetected": "CLI runtime not detected", - "binary": "Binary", - "configPath": "Config path", - "configPathShort": "Config", - "failedCheckRuntimeStatus": "Failed to check runtime status.", - "copy": "Copy", - "copied": "Copied", - "copyConfig": "Copy Config", - "saveConfig": "Save Config", - "selectionSaved": "Selection saved", - "guide": "Guide", - "detected": "Detected", - "notReady": "Not ready", - "active": "Active", - "inactive": "Inactive", + "configurationSaved": "રૂપરેખાંકન સફળતાપૂર્વક સાચવવામાં આવ્યું.", + "failedToSave": "રૂપરેખાંકન સાચવવામાં નિષ્ફળતા.", + "noApiKeysCreateOne": "કોઈ API કી નથી - Keys પૃષ્ઠમાં એક બનાવો", + "defaultOmnirouteKey": "sk_omniroute (ડિફૉલ્ટ)", + "selectModel": "મોડેલ પસંદ કરો", + "selectModelForAlias": "{alias} માટે મોડેલ પસંદ કરો", + "selectModelForTool": "{tool} માટે મોડેલ પસંદ કરો", + "select": "પસંદ કરો", + "clear": "સાફ કરો", + "comingSoon": "ટૂંક સમયમાં ઉપલબ્ધ થશે", + "checkingRuntime": "રનટાઇમ સ્થિતિ તપાસી રહ્યાં છીએ...", + "guideOnlyIntegration": "માત્ર માર્ગદર્શિકા આધારિત ઇન્ટિગ્રેશન (સ્થાનિક રનટાઇમ જરૂરી નથી)", + "cliRuntimeDetected": "CLI રનટાઇમ મળ્યું અને તૈયાર છે", + "cliFoundNotRunnable": "CLI મળ્યું પરંતુ ચલાવી શકાય તેમ નથી{reason}", + "cliRuntimeNotDetected": "CLI રનટાઇમ મળ્યું નથી", + "binary": "બાઇનરી", + "configPath": "રૂપરેખાંકન પાથ", + "configPathShort": "રૂપરેખાંકન", + "failedCheckRuntimeStatus": "રનટાઇમ સ્થિતિ તપાસવામાં નિષ્ફળતા.", + "copy": "કૉપિ કરો", + "copied": "કૉપિ થયું", + "copyConfig": "રૂપરેખાંકન કૉપિ કરો", + "saveConfig": "રૂપરેખાંકન સાચવો", + "selectionSaved": "પસંદગી સાચવાઈ", + "guide": "માર્ગદર્શિકા", + "detected": "શોધાયેલ", + "notReady": "તૈયાર નથી", + "active": "સક્રિય", + "inactive": "નિષ્ક્રિય", "startMitm": "Start MITM", "stopMitm": "Stop MITM", - "mitmStarted": "MITM started successfully!", - "mitmStopped": "MITM stopped successfully!", - "failedStart": "Failed to start MITM", - "failedStop": "Failed to stop MITM", - "saveMappings": "Save Mappings", - "mappingsSaved": "Mappings saved!", - "failedSaveMappings": "Failed to save mappings", + "mitmStarted": "MITM સફળતાપૂર્વક શરૂ થયું!", + "mitmStopped": "MITM સફળતાપૂર્વક બંધ થયું!", + "failedStart": "MITM શરૂ કરવામાં નિષ્ફળતા", + "failedStop": "MITM બંધ કરવામાં નિષ્ફળતા", + "saveMappings": "મેપિંગ્સ સાચવો", + "mappingsSaved": "મેપિંગ્સ સાચવવામાં આવ્યા!", + "failedSaveMappings": "મેપિંગ્સ સાચવવામાં નિષ્ફળતા", "reasoningEffortDefault": "ડિફૉલ્ટ", "reasoningEffortHint": "ડિફૉલ્ટ એજન્ટ દ્વારા મોકલવામાં આવેલા રીઝનિંગ એફર્ટને જાળવી રાખે છે", "reasoningEffortTier": { @@ -2812,130 +2812,130 @@ "high": "વધારે", "xhigh": "ખૂબ વધારે" }, - "howItWorks": "How it works:", - "antigravityHowWorksDesc": "Antigravity sends requests to Google's endpoint. MITM intercepts and redirects them to OmniRoute.", - "antigravityStep1": "1. Start MITM to route requests through OmniRoute.", - "antigravityStep2Prefix": "2. Add", - "antigravityStep2Suffix": "to your hosts file as 127.0.0.1.", - "antigravityStep3": "3. Open Antigravity and requests will be proxied.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", - "sudoPasswordRequiredTitle": "Sudo Password Required", - "sudoPasswordHint": "Administrator password is required to modify hosts file and system proxy settings.", - "enterSudoPassword": "Enter sudo password", - "sudoPasswordRequiredError": "Sudo password is required.", - "cancel": "Cancel", - "confirm": "Confirm", - "settingsApplied": "Settings applied successfully!", - "failedApplySettings": "Failed to apply settings", - "settingsReset": "Settings reset successfully!", - "failedResetSettings": "Failed to reset settings", - "backupRestored": "Backup restored!", - "failedRestore": "Failed to restore", - "checkingCli": "Checking {tool} CLI...", - "cliNotRunnable": "{tool} CLI installed but not runnable", - "cliNotInstalled": "{tool} CLI not installed", - "cliNotDetected": "{tool} CLI not detected", - "cliDetectedReady": "{tool} CLI detected and ready", - "cliFoundFailedHealthcheck": "{tool} CLI was found but failed runtime healthcheck{reason}.", - "installCliPrompt": "Please install {tool} CLI to use this feature.", - "installCodexPrompt": "Please install Codex CLI to use auto-apply feature.", - "hide": "Hide", - "howToInstall": "How to Install", - "installationGuide": "Installation Guide", + "howItWorks": "તે કેવી રીતે કાર્ય કરે છે:", + "antigravityHowWorksDesc": "Antigravity Googleના એન્ડપોઇન્ટ પર વિનંતીઓ મોકલે છે. MITM તેમને ઇન્ટરસેપ્ટ કરીને OmniRoute પર રીડાયરેક્ટ કરે છે.", + "antigravityStep1": "1. વિનંતીઓને OmniRoute મારફતે રૂટ કરવા માટે MITM શરૂ કરો.", + "antigravityStep2Prefix": "2. તમારી hosts ફાઇલમાં", + "antigravityStep2Suffix": "ને 127.0.0.1 તરીકે ઉમેરો.", + "antigravityStep3": "3. Antigravity ખોલો અને વિનંતીઓ પ્રોક્સી કરવામાં આવશે.", + "mitmHowWorksDesc": "{toolName} તેના પ્રદાતાના એન્ડપોઇન્ટ પર વિનંતીઓ મોકલે છે. MITM તેમને ઇન્ટરસેપ્ટ કરીને OmniRoute પર રીડાયરેક્ટ કરે છે.", + "mitmStep1": "1. વિનંતીઓને OmniRoute મારફતે રૂટ કરવા માટે MITM શરૂ કરો.", + "mitmStep2Prefix": "2. તમારી hosts ફાઇલમાં", + "mitmStep2Suffix": "ને 127.0.0.1 તરીકે ઉમેરો.", + "mitmStep3": "3. {toolName} ખોલો અને વિનંતીઓ પ્રોક્સી કરવામાં આવશે.", + "sudoPasswordRequiredTitle": "Sudo પાસવર્ડ આવશ્યક છે", + "sudoPasswordHint": "hosts ફાઇલ અને સિસ્ટમ પ્રોક્સી સેટિંગ્સમાં ફેરફાર કરવા માટે એડમિનિસ્ટ્રેટર પાસવર્ડ આવશ્યક છે.", + "enterSudoPassword": "sudo પાસવર્ડ દાખલ કરો", + "sudoPasswordRequiredError": "Sudo પાસવર્ડ આવશ્યક છે.", + "cancel": "રદ કરો", + "confirm": "પુષ્ટિ કરો", + "settingsApplied": "સેટિંગ્સ સફળતાપૂર્વક લાગુ કરવામાં આવી!", + "failedApplySettings": "સેટિંગ્સ લાગુ કરવામાં નિષ્ફળતા", + "settingsReset": "સેટિંગ્સ સફળતાપૂર્વક રીસેટ કરવામાં આવી!", + "failedResetSettings": "સેટિંગ્સ રીસેટ કરવામાં નિષ્ફળતા", + "backupRestored": "બેકઅપ પુનઃસ્થાપિત કરવામાં આવ્યું!", + "failedRestore": "પુનઃસ્થાપિત કરવામાં નિષ્ફળતા", + "checkingCli": "{tool} CLI તપાસી રહ્યું છે...", + "cliNotRunnable": "{tool} CLI ઇન્સ્ટોલ થયેલું છે પરંતુ ચલાવી શકાતું નથી", + "cliNotInstalled": "{tool} CLI ઇન્સ્ટોલ થયેલું નથી", + "cliNotDetected": "{tool} CLI શોધાયું નથી", + "cliDetectedReady": "{tool} CLI મળી ગયું છે અને તૈયાર છે", + "cliFoundFailedHealthcheck": "{tool} CLI મળ્યું, પરંતુ રનટાઇમ હેલ્થચેક નિષ્ફળ ગયું{reason}.", + "installCliPrompt": "આ સુવિધાનો ઉપયોગ કરવા માટે કૃપા કરીને {tool} CLI ઇન્સ્ટોલ કરો.", + "installCodexPrompt": "ઑટો-અપ્લાય સુવિધાનો ઉપયોગ કરવા માટે કૃપા કરીને Codex CLI ઇન્સ્ટોલ કરો.", + "hide": "છુપાવો", + "howToInstall": "ઇન્સ્ટોલ કરવાની રીત", + "installationGuide": "ઇન્સ્ટોલેશન માર્ગદર્શિકા", "platforms": "macOS / Linux / Windows:", - "afterInstallationRun": "After installation, run", - "toVerify": "to verify.", - "current": "Current", + "afterInstallationRun": "ઇન્સ્ટોલેશન પછી, ચલાવો", + "toVerify": "ચકાસવા માટે.", + "current": "વર્તમાન", "baseUrlPlaceholder": "https://.../v1", - "resetToDefault": "Reset to default", + "resetToDefault": "ડિફૉલ્ટ પર રીસેટ કરો", "providerModelPlaceholder": "provider/model-id", - "apply": "Apply", - "reset": "Reset", - "manualConfig": "Manual Config", - "backups": "Backups", - "configBackups": "Config Backups", - "noBackupsYet": "No backups yet. Backups are created automatically before each Apply or Reset.", - "restore": "Restore", - "backupRestoredReloading": "Backup restored! Reloading status...", - "failedRestoreBackup": "Failed to restore backup", - "applied": "Applied!", - "failed": "Failed", - "resetDone": "Reset!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute is configured as OpenAI-compatible provider", - "provider": "Provider", + "apply": "લાગુ કરો", + "reset": "રીસેટ કરો", + "manualConfig": "મેન્યુઅલ કૉન્ફિગ", + "backups": "બૅકઅપ્સ", + "configBackups": "કૉન્ફિગ બૅકઅપ્સ", + "noBackupsYet": "હજુ સુધી કોઈ બૅકઅપ નથી. દરેક લાગુ કરવા અથવા રીસેટ કરવા પહેલાં બૅકઅપ્સ આપમેળે બનાવવામાં આવે છે.", + "restore": "પુનઃસ્થાપિત કરો", + "backupRestoredReloading": "બૅકઅપ પુનઃસ્થાપિત થયો! સ્થિતિ ફરી લોડ થઈ રહી છે...", + "failedRestoreBackup": "બૅકઅપ પુનઃસ્થાપિત કરવામાં નિષ્ફળતા", + "applied": "લાગુ થયું!", + "failed": "નિષ્ફળ", + "resetDone": "રીસેટ થયું!", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute ને OpenAI-સુસંગત પ્રદાતા તરીકે કૉન્ફિગર કરાયું છે", + "provider": "પ્રદાતા", "model": "Model", - "providers": "Providers", - "auth": "Auth", - "noApiKeysAvailable": "No API keys available", - "usingDefaultOmniroute": "Using default: sk_omniroute", - "updateConfig": "Update Config", - "applyConfig": "Apply Config", - "noBackupsAvailable": "No backups available.", - "profileSaved": "Profile \"{name}\" saved!", - "failedSaveProfile": "Failed to save profile", - "profileActivated": "Profile activated!", - "failedActivateProfile": "Failed to activate profile", - "profiles": "Profiles", - "savedProfiles": "Saved Profiles", - "noProfilesYet": "No profiles saved yet. Save current config as a profile below.", - "activate": "Activate", - "deleteProfile": "Delete profile", - "profileNamePlaceholder": "Profile name (e.g. Personal Account)", - "saveCurrent": "Save Current", - "codexAuthNotePrefix": "Codex uses", - "codexAuthNoteMiddle": "with", - "codexAuthNoteSuffix": "Click \"Apply\" to auto-configure.", - "claudeManualConfiguration": "Claude CLI - Manual Configuration", - "codexManualConfiguration": "Codex CLI - Manual Configuration", - "droidManualConfiguration": "Factory Droid - Manual Configuration", - "openClawManualConfiguration": "Open Claw - Manual Configuration", - "clineManualConfiguration": "Cline Manual Configuration", - "kiloManualConfiguration": "Kilo Code Manual Configuration", - "whenToUseLabel": "When to use", - "openToolDocs": "Open tool docs", + "providers": "પ્રદાતાઓ", + "auth": "પ્રમાણીકરણ", + "noApiKeysAvailable": "કોઈ API કી ઉપલબ્ધ નથી", + "usingDefaultOmniroute": "ડિફૉલ્ટનો ઉપયોગ થઈ રહ્યો છે: sk_omniroute", + "updateConfig": "કૉન્ફિગ અપડેટ કરો", + "applyConfig": "કૉન્ફિગ લાગુ કરો", + "noBackupsAvailable": "કોઈ બૅકઅપ ઉપલબ્ધ નથી.", + "profileSaved": "પ્રોફાઇલ \"{name}\" સાચવાઈ!", + "failedSaveProfile": "પ્રોફાઇલ સાચવવામાં નિષ્ફળતા", + "profileActivated": "પ્રોફાઇલ સક્રિય થઈ!", + "failedActivateProfile": "પ્રોફાઇલ સક્રિય કરવામાં નિષ્ફળતા", + "profiles": "પ્રોફાઇલ્સ", + "savedProfiles": "સાચવેલી પ્રોફાઇલ્સ", + "noProfilesYet": "હજુ સુધી કોઈ પ્રોફાઇલ સાચવેલી નથી. નીચે વર્તમાન કૉન્ફિગને પ્રોફાઇલ તરીકે સાચવો.", + "activate": "સક્રિય કરો", + "deleteProfile": "પ્રોફાઇલ કાઢી નાખો", + "profileNamePlaceholder": "પ્રોફાઇલનું નામ (દા.ત. વ્યક્તિગત ખાતું)", + "saveCurrent": "વર્તમાન સાચવો", + "codexAuthNotePrefix": "Codex આનો ઉપયોગ કરે છે", + "codexAuthNoteMiddle": "સાથે", + "codexAuthNoteSuffix": "સ્વતઃ ગોઠવવા માટે \"Apply\" પર ક્લિક કરો.", + "claudeManualConfiguration": "Claude CLI - મેન્યુઅલ ગોઠવણી", + "codexManualConfiguration": "Codex CLI - મેન્યુઅલ ગોઠવણી", + "droidManualConfiguration": "Factory Droid - મેન્યુઅલ ગોઠવણી", + "openClawManualConfiguration": "Open Claw - મેન્યુઅલ ગોઠવણી", + "clineManualConfiguration": "Cline મેન્યુઅલ ગોઠવણી", + "kiloManualConfiguration": "Kilo Code મેન્યુઅલ ગોઠવણી", + "whenToUseLabel": "ક્યારે ઉપયોગ કરવો", + "openToolDocs": "ટૂલના દસ્તાવેજો ખોલો", "toolUseCases": { - "claude": "Use when you want strong planning workflows and long multi-file refactors with Claude Code.", - "codex": "Use when your team is standardized on OpenAI Codex CLI flows and profile-based auth.", - "droid": "Use when you need a lightweight terminal agent focused on fast coding and command execution loops.", - "openclaw": "Use when you want an Open Claw style coding agent but routed through OmniRoute policies.", - "cline": "Use when you configure coding agents inside editors and want guided setup with OmniRoute models.", - "kilo": "Use when your workflow depends on Kilo Code commands and fast iterative edits.", - "cursor": "Use when coding in Cursor and you need custom OpenAI-compatible models through OmniRoute.", - "continue": "Use when running Continue in IDEs and you need portable JSON-based provider configuration.", - "opencode": "Use when you prefer terminal-native agent runs and scripted automation via OpenCode.", - "kiro": "Use when integrating Kiro and controlling model routing centrally from OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", - "antigravity": "Use when Antigravity/Kiro traffic must be intercepted through MITM and routed to OmniRoute.", - "copilot": "Use when you want Copilot chat style UX while enforcing OmniRoute keys and routing rules.", - "amp": "Use when you want Amp shorthand workflows but still need OmniRoute alias and routing rules enforcement.", - "hermes": "Use when you need a lightweight terminal-native AI assistant for quick tasks.", + "claude": "જ્યારે તમને Claude Code સાથે મજબૂત આયોજન વર્કફ્લો અને બહુવિધ ફાઇલોમાં લાંબા રિફેક્ટરિંગની જરૂર હોય ત્યારે ઉપયોગ કરો.", + "codex": "જ્યારે તમારી ટીમ OpenAI Codex CLI પ્રવાહો અને પ્રોફાઇલ-આધારિત પ્રમાણીકરણનું માનકીકરણ કરી ચૂકી હોય ત્યારે ઉપયોગ કરો.", + "droid": "જ્યારે તમને ઝડપી કોડિંગ અને કમાન્ડ એક્ઝિક્યુશન લૂપ્સ પર કેન્દ્રિત હળવા ટર્મિનલ એજન્ટની જરૂર હોય ત્યારે ઉપયોગ કરો.", + "openclaw": "જ્યારે તમને Open Claw શૈલીનો કોડિંગ એજન્ટ જોઈએ, પરંતુ તેનું રૂટિંગ OmniRoute નીતિઓ મારફતે કરવું હોય ત્યારે ઉપયોગ કરો.", + "cline": "જ્યારે તમે એડિટર્સની અંદર કોડિંગ એજન્ટ્સ ગોઠવતા હો અને OmniRoute મોડેલ્સ સાથે માર્ગદર્શિત સેટઅપ ઇચ્છતા હો ત્યારે ઉપયોગ કરો.", + "kilo": "જ્યારે તમારો વર્કફ્લો Kilo Code કમાન્ડ્સ અને ઝડપી પુનરાવર્તિત સંપાદનો પર નિર્ભર હોય ત્યારે ઉપયોગ કરો.", + "cursor": "જ્યારે Cursor માં કોડિંગ કરતા હો અને તમને OmniRoute મારફતે કસ્ટમ OpenAI-સુસંગત મોડેલ્સની જરૂર હોય ત્યારે ઉપયોગ કરો.", + "continue": "જ્યારે IDEs માં Continue ચલાવતા હો અને તમને પોર્ટેબલ JSON-આધારિત પ્રદાતા ગોઠવણીની જરૂર હોય ત્યારે ઉપયોગ કરો.", + "opencode": "જ્યારે તમે ટર્મિનલ-નેટિવ એજન્ટ રન અને OpenCode મારફતે સ્ક્રિપ્ટેડ ઓટોમેશન પસંદ કરતા હો ત્યારે ઉપયોગ કરો.", + "kiro": "જ્યારે Kiro ને એકીકૃત કરતા હો અને OmniRoute પરથી મોડેલ રૂટિંગને કેન્દ્રિય રીતે નિયંત્રિત કરવા માંગતા હો ત્યારે ઉપયોગ કરો.", + "windsurf": "જ્યારે તમને Codeium/Windsurf મોડેલ્સ ધરાવતું અને OmniRoute મારફતે રૂટ કરાયેલું AI-પ્રથમ IDE જોઈએ ત્યારે ઉપયોગ કરો.", + "antigravity": "જ્યારે Antigravity/Kiro ટ્રાફિકને MITM મારફતે ઇન્ટરસેપ્ટ કરીને OmniRoute તરફ રૂટ કરવો જરૂરી હોય ત્યારે ઉપયોગ કરો.", + "copilot": "જ્યારે તમને Copilot ચેટ-શૈલીનો UX જોઈએ અને સાથે OmniRoute કીઓ તથા રૂટિંગ નિયમો લાગુ કરવા હોય ત્યારે ઉપયોગ કરો.", + "amp": "જ્યારે તમને Amp શોર્ટહેન્ડ વર્કફ્લો જોઈએ, પરંતુ તેમ છતાં OmniRoute ઉપનામ અને રૂટિંગ નિયમોનું અમલીકરણ જરૂરી હોય ત્યારે ઉપયોગ કરો.", + "hermes": "ઝડપી કાર્યો માટે હળવા, ટર્મિનલ-નેટિવ AI સહાયકની જરૂર હોય ત્યારે ઉપયોગ કરો.", "hermes-agent": "જ્યારે તમને OmniRoute દ્વારા રૂટ કરાયેલા ડિફૉલ્ટ, ડેલિગેશન, વિઝન અને ઓક્સિલરી મોડેલ્સ સાથે Hermes Agent (Nousresearch દ્વારા) ની જરૂર હોય ત્યારે ઉપયોગ કરો.", - "custom": "Use for custom tool implementations or generic OpenAI-compatible configurations." + "custom": "કસ્ટમ ટૂલ અમલીકરણો અથવા સામાન્ય OpenAI-સુસંગત ગોઠવણીઓ માટે ઉપયોગ કરો." }, "toolDescriptions": { - "antigravity": "Google Antigravity IDE with MITM", + "antigravity": "MITM સાથે Google Antigravity IDE", "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "કસ્ટમ પ્રોવાઇડર સપોર્ટ સાથે xAI Grok Build TUI કોડિંગ એજન્ટ", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Factory Droid AI સહાયક", + "openclaw": "Open Claw AI સહાયક", + "cline": "Cline AI કોડિંગ સહાયક CLI", + "kilo": "Kilo Code AI સહાયક CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "continue": "Continue AI સહાયક", + "opencode": "OpenCode AI કોડિંગ એજન્ટ (ટર્મિનલ)", + "kiro": "Amazon Kiro — AI-સંચાલિત IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp કોડિંગ સહાયક CLI", + "hermes": "Hermes AI ટર્મિનલ સહાયક", "hermes-agent": "Hermes Agent (Nousresearch દ્વારા) - મલ્ટિ-મોડેલ સપોર્ટ (ડેલિગેશન, વિઝન, કમ્પ્રેશન, વગેરે) સાથે અદ્યતન ટર્મિનલ AI", - "custom": "Generic OpenAI-compatible CLI or SDK configuration generator", + "custom": "સામાન્ય OpenAI-સુસંગત CLI અથવા SDK કૉન્ફિગરેશન જનરેટર", "aider": "OpenAI-સુસંગત બેઝ URL સાથે Aider AI પેર-પ્રોગ્રામિંગ CLI", "forge": "કસ્ટમ પ્રોવાઇડર સાથે ForgeCode કોડિંગ એજન્ટ CLI", "cursor-cli": "હેડલેસ એજન્ટ મોડમાં Cursor Agent CLI", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter ઓટોનોમસ કોડિંગ એજન્ટ CLI", "omp": "Oh My Pi ટર્મિનલ કોડિંગ એજન્ટ", "letta": "પર્સિસ્ટન્ટ મેમરી અને ટૂલ વપરાશ સાથે Letta CLI એજન્ટ", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI-સુસંગત પ્રદાતા સપોર્ટ સાથે સ્વ-સુધારિત થતું RLM કોડિંગ હાર્નેસ", "warp": "કસ્ટમ પ્રોવાઇડર સપોર્ટ સાથે Warp AI ટર્મિનલ", "agent-deck": "Agent Deck મલ્ટિ-એજન્ટ ઓર્કેસ્ટ્રેટર", "5dive": "5dive — સ્વ-હોસ્ટેડ કોડિંગ એજન્ટ્સનો કાફલો; એક auth પ્રોફાઇલ બધાને OmniRoute તરફ દોરે છે" @@ -2958,134 +2958,134 @@ "guides": { "cursor": { "notes": { - "0": "Requires Cursor Pro account to use this feature.", - "1": "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings." + "0": "આ સુવિધાનો ઉપયોગ કરવા માટે Cursor Pro એકાઉન્ટ જરૂરી છે.", + "1": "Cursor વિનંતીઓને તેના પોતાના સર્વર મારફતે રૂટ કરે છે, તેથી સ્થાનિક એન્ડપોઇન્ટ સપોર્ટેડ નથી. કૃપા કરીને Settings માં Cloud Endpoint સક્ષમ કરો." }, "steps": { "1": { - "title": "Open Settings", - "desc": "Go to Settings -> Models" + "title": "Settings ખોલો", + "desc": "Settings -> Models પર જાઓ" }, "2": { - "title": "Enable OpenAI API", - "desc": "Enable \"OpenAI API key\" option" + "title": "OpenAI API સક્ષમ કરો", + "desc": "\"OpenAI API key\" વિકલ્પ સક્ષમ કરો" }, "3": { - "title": "Base URL" + "title": "બેઝ URL" }, "4": { - "title": "API Key" + "title": "API કી" }, "5": { - "title": "Add Custom Model", - "desc": "Click \"View All Model\" -> \"Add Custom Model\"" + "title": "કસ્ટમ મોડલ ઉમેરો", + "desc": "\"View All Model\" -> \"Add Custom Model\" પર ક્લિક કરો" }, "6": { - "title": "Select Model" + "title": "મોડલ પસંદ કરો" } } }, "continue": { "steps": { "1": { - "title": "Open Config", - "desc": "Open Continue configuration file" + "title": "કૉન્ફિગ ખોલો", + "desc": "Continue કૉન્ફિગરેશન ફાઇલ ખોલો" }, "2": { - "title": "API Key" + "title": "API કી" }, "3": { - "title": "Select Model" + "title": "મોડલ પસંદ કરો" }, "4": { - "title": "Add Model Config", - "desc": "Add the following configuration to your models array:" + "title": "મોડલ કૉન્ફિગ ઉમેરો", + "desc": "તમારા models ઍરેમાં નીચેનું કૉન્ફિગરેશન ઉમેરો:" } }, "notes": { - "0": "Continue uses JSON config file." + "0": "Continue JSON કૉન્ફિગ ફાઇલનો ઉપયોગ કરે છે." } }, "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCode ઇન્સ્ટૉલ કરો", + "desc": "npm દ્વારા ઇન્સ્ટૉલ કરો: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API કી" }, "3": { - "title": "Set Base URL", + "title": "બેઝ URL સેટ કરો", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "મોડલ પસંદ કરો" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Thinking વેરિઅન્ટનો ઉપયોગ કરો", + "desc": "Thinking મોડલ્સ માટે, --variant high/low/max સાથે ચલાવો (નીચે ઉદાહરણ કમાન્ડ છે)." } }, "notes": { - "0": "OpenCode requires API key configuration.", - "1": "Set the base URL to your OmniRoute endpoint." + "0": "OpenCode માટે API કી કૉન્ફિગરેશન જરૂરી છે.", + "1": "બેઝ URL ને તમારા OmniRoute એન્ડપોઇન્ટ પર સેટ કરો." } }, "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro Settings ખોલો", + "desc": "Settings → AI Provider પર જાઓ" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "બેઝ URL", + "desc": "તમારા OmniRoute એન્ડપોઇન્ટનું URL પેસ્ટ કરો" }, "3": { - "title": "API Key" + "title": "API કી" }, "4": { - "title": "Select Model" + "title": "મોડલ પસંદ કરો" } }, "notes": { - "0": "Kiro requires Amazon account." + "0": "Kiro માટે Amazon એકાઉન્ટ જરૂરી છે." } }, "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI Settings ખોલો", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "કસ્ટમ પ્રદાતા ઉમેરો", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "બેઝ URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API કી", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "મોડેલ પસંદ કરો", + "desc": "ડ્રોપડાઉનમાંથી મોડેલ પસંદ કરો" } } } }, - "autoConfiguredTab": "Auto-Configured", - "toolCategoriesDesc": "Configure AI coding assistants to route through OmniRoute", - "allToolsTab": "All Tools", - "guidedClientsTab": "Guided Clients", - "mitmClientsTab": "MITM Clients", + "autoConfiguredTab": "સ્વતઃ-રૂપરેખાંકિત", + "toolCategoriesDesc": "AI કોડિંગ સહાયકોને OmniRoute મારફતે રૂટ કરવા માટે રૂપરેખાંકિત કરો", + "allToolsTab": "બધા ટૂલ્સ", + "guidedClientsTab": "માર્ગદર્શિત ક્લાયન્ટ્સ", + "mitmClientsTab": "MITM ક્લાયન્ટ્સ", "customCliTab": "કસ્ટમ CLI", - "toolCategories": "Tool Categories", - "visibleToolsCount": "{count} tools available", + "toolCategories": "ટૂલ શ્રેણીઓ", + "visibleToolsCount": "{count} ટૂલ્સ ઉપલબ્ધ", "customCliBuilderTitle": "OpenAI- સુસંગત CLI બિલ્ડર", "customCliBuilderDescription": "કોઈપણ CLI અથવા SDK માટે env vars અને JSON સ્નિપેટ્સ જનરેટ કરો જે OpenAI- સુસંગત આધાર URL, API કી અને મોડેલ ID સ્વીકારે છે.", "customCliNoModels": "મૉડલ સિલેક્ટર્સને પૉપ્યુલેટ કરવા માટે ઓછામાં ઓછા એક પ્રદાતાને કનેક્ટ કરો.", @@ -3203,75 +3203,75 @@ "cliproxyapiVersion": "આવૃત્તિ" }, "combos": { - "title": "Combos", - "description": "Create model combos with weighted routing and fallback support", + "title": "કોમ્બોઝ", + "description": "ભારાંકિત રૂટિંગ અને ફૉલબૅક સપોર્ટ સાથે મોડેલ કોમ્બોઝ બનાવો", "autoCatalogTitle": "સ્વતઃ-રાઉટીંગ કેટલોગ", "autoCatalogTemplateCount": "{count} નમૂનાઓ", "autoCatalogDescription": "બિલ્ટ-ઇન ઓટો/* કોમ્બોઝ કનેક્ટેડ પ્રદાતાઓ તરફથી ગતિશીલ રીતે ઉકેલાય છે. આમાંથી કોઈપણ ID નો મોડેલ ફીલ્ડ તરીકે ઉપયોગ કરો — કોઈ સેટઅપની જરૂર નથી.", "autoCatalogExpand": "સ્વતઃ-રાઉટિંગ કેટલોગ વિસ્તૃત કરો", "autoCatalogCollapse": "સ્વતઃ-રાઉટિંગ કેટલોગ સંકુચિત કરો", - "createCombo": "Create Combo", - "editCombo": "Edit Combo", - "deleteCombo": "Delete Combo", - "noModels": "No models", - "noModelsYet": "No models added yet", - "addModel": "Add Model", - "addModelToCombo": "Add Model to Combo", - "routingStrategy": "Routing Strategy", - "maxRetries": "Max Retries", - "timeout": "Timeout (ms)", - "healthcheck": "Healthcheck", - "priority": "Priority", - "fallback": "Fallback", + "createCombo": "કોમ્બો બનાવો", + "editCombo": "કોમ્બો સંપાદિત કરો", + "deleteCombo": "કોમ્બો કાઢી નાખો", + "noModels": "કોઈ મોડેલ નથી", + "noModelsYet": "હજુ સુધી કોઈ મોડેલ ઉમેરાયું નથી", + "addModel": "મોડેલ ઉમેરો", + "addModelToCombo": "કોમ્બોમાં મોડેલ ઉમેરો", + "routingStrategy": "રૂટિંગ વ્યૂહરચના", + "maxRetries": "મહત્તમ પુનઃપ્રયાસો", + "timeout": "સમયસમાપ્તિ (ms)", + "healthcheck": "સ્થિતિ તપાસ", + "priority": "પ્રાથમિકતા", + "fallback": "ફૉલબૅક", "roundRobin": "Round Robin", - "random": "Random", - "leastLatency": "Least Latency", - "comboName": "Combo Name", + "random": "રેન્ડમ", + "leastLatency": "સૌથી ઓછી વિલંબતા", + "comboName": "કોમ્બોનું નામ", "comboNamePlaceholder": "my-combo", "comboDescription": "વર્ણન", "comboDescriptionPlaceholder": "આ કોમ્બોનું વર્ણન કરતી વૈકલ્પિક નોંધ", - "deleteConfirm": "Delete this combo?", - "noCombosYet": "No combos yet", - "comboCreated": "Combo created successfully", - "comboUpdated": "Combo updated successfully", - "comboDeleted": "Combo deleted", - "failedCreate": "Failed to create combo", - "failedUpdate": "Failed to update combo", - "errorCreating": "Error creating combo", - "errorUpdating": "Error updating combo", - "errorDeleting": "Error deleting combo", - "testFailed": "Test request failed", - "failedToggle": "Failed to toggle combo", - "testResults": "Test Results — {name}", - "resolvedBy": "Resolved by:", - "more": "+{count} more", - "reqs": "reqs", - "success": "success", - "proxyConfigured": "Proxy configured", - "copyComboName": "Copy combo name", - "enableCombo": "Enable combo", - "disableCombo": "Disable combo", - "testCombo": "Test combo", - "duplicate": "Duplicate", - "proxyConfig": "Proxy configuration", - "nameRequired": "Name is required", - "nameInvalid": "Only letters, numbers, -, _, / and . allowed", - "nameHint": "Letters, numbers, -, _, / and . allowed", - "priorityDesc": "Sequential fallback: tries model 1 first, then 2, etc.", - "weightedDesc": "Distributes traffic by weight percentage with fallback", - "roundRobinDesc": "Circular distribution: each request goes to the next model in rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", - "randomDesc": "Uniform random selection, then fallback to remaining models", - "leastUsedDesc": "Picks the model with fewest requests, balancing load over time", - "costOptimizedDesc": "Routes to the cheapest model first based on pricing", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "deleteConfirm": "આ કોમ્બો કાઢી નાખવો છે?", + "noCombosYet": "હજુ સુધી કોઈ કોમ્બો નથી", + "comboCreated": "કોમ્બો સફળતાપૂર્વક બનાવવામાં આવ્યો", + "comboUpdated": "કોમ્બો સફળતાપૂર્વક અપડેટ કરવામાં આવ્યો", + "comboDeleted": "કોમ્બો કાઢી નાખવામાં આવ્યો", + "failedCreate": "કોમ્બો બનાવવામાં નિષ્ફળતા", + "failedUpdate": "કોમ્બો અપડેટ કરવામાં નિષ્ફળતા", + "errorCreating": "કોમ્બો બનાવતી વખતે ભૂલ", + "errorUpdating": "કોમ્બો અપડેટ કરતી વખતે ભૂલ", + "errorDeleting": "કોમ્બો કાઢી નાખતી વખતે ભૂલ", + "testFailed": "પરીક્ષણ વિનંતી નિષ્ફળ ગઈ", + "failedToggle": "કોમ્બો ટૉગલ કરવામાં નિષ્ફળ", + "testResults": "પરીક્ષણ પરિણામો — {name}", + "resolvedBy": "આના દ્વારા ઉકેલાયું:", + "more": "+{count} વધુ", + "reqs": "વિનંતીઓ", + "success": "સફળતા", + "proxyConfigured": "પ્રોક્સી ગોઠવાયેલ છે", + "copyComboName": "કોમ્બોનું નામ કૉપિ કરો", + "enableCombo": "કોમ્બો સક્ષમ કરો", + "disableCombo": "કોમ્બો અક્ષમ કરો", + "testCombo": "કોમ્બોનું પરીક્ષણ કરો", + "duplicate": "ડુપ્લિકેટ", + "proxyConfig": "પ્રોક્સી ગોઠવણી", + "nameRequired": "નામ આવશ્યક છે", + "nameInvalid": "ફક્ત અક્ષરો, અંકો, -, _, / અને . માન્ય છે", + "nameHint": "અક્ષરો, અંકો, -, _, / અને . માન્ય છે", + "priorityDesc": "ક્રમિક ફૉલબૅક: પહેલાં મોડેલ 1, પછી 2, વગેરે અજમાવે છે.", + "weightedDesc": "ફૉલબૅક સાથે વજનની ટકાવારી પ્રમાણે ટ્રાફિક વિતરિત કરે છે", + "roundRobinDesc": "ચક્રીય વિતરણ: દરેક વિનંતી ક્રમમાં આવતા આગલા મોડેલ પર જાય છે", + "contextRelay": "સંદર્ભ રિલે", + "contextRelayDesc": "એકાઉન્ટ બદલાય ત્યારે હેન્ડઑફ સારાંશો દ્વારા સત્રની સાતત્યતા જાળવે છે", + "randomDesc": "એકસરખી રૅન્ડમ પસંદગી, પછી બાકીના મોડેલો પર ફૉલબૅક", + "leastUsedDesc": "સમય જતાં લોડને સંતુલિત કરતાં, સૌથી ઓછી વિનંતીઓ ધરાવતું મોડેલ પસંદ કરે છે", + "costOptimizedDesc": "કિંમતના આધારે પહેલાં સૌથી સસ્તા મોડેલ પર રૂટ કરે છે", + "cacheOptimizedDesc": "દરેક પુનઃઉપયોગી પ્રૉમ્પ્ટ ઉપસર્ગને સતત એ જ પ્રદાતા એકાઉન્ટ પર રૂટ કરે છે", "resetAware": "રીસેટ-અવેર આરઆર", "resetAwareDesc": "5h અને સાપ્તાહિક રીસેટ સામે બાકી રહેલા ક્વોટાને બેલેન્સ કરો, પછી રાઉન્ડ-રોબિન સમાન સ્કોર્સ", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "ક્વોટા-ભારિત", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "કડક રૅન્ડમ", + "strictRandomDesc": "શફલ ડેક — ફરી શફલ કરતાં પહેલાં દરેક મોડેલનો એક વાર ઉપયોગ કરે છે", "fusion": "ફ્યુઝન", "fusionDesc": "પ્રોમ્પ્ટને સમાંતર રીતે દરેક પેનલ મોડેલ પર મોકલે છે, પછી જજ મોડેલ એક અંતિમ જવાબ તૈયાર કરે છે", "fusionJudgeModel": "જજ મોડેલ", @@ -3282,27 +3282,27 @@ "fusionStragglerGraceMsHelp": "એકવાર કોરમ પૂર્ણ થઈ જાય પછી ધીમા પેનલ મોડેલ્સ માટે કેટલો સમય રાહ જોવી (ડિફૉલ્ટ 8000).", "fusionPanelHardTimeoutMs": "પેનલ હાર્ડ ટાઈમઆઉટ (ms)", "fusionPanelHardTimeoutMsHelp": "ચોક્કસ મર્યાદા જેથી એક અટકી ગયેલું મોડેલ આખી પેનલને રોકી ન શકે (ડિફૉલ્ટ 90000).", - "models": "Models", - "autoBalance": "Auto-balance", - "advancedSettings": "Advanced Settings", - "retryDelay": "Retry Delay (ms)", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", - "advancedHint": "Leave empty to use global defaults. These override per-provider settings.", + "models": "મોડેલો", + "autoBalance": "સ્વતઃ-સંતુલન", + "advancedSettings": "અદ્યતન સેટિંગ્સ", + "retryDelay": "પુનઃપ્રયાસ વિલંબ (ms)", + "concurrencyPerModel": "સમાંતરતા / મોડેલ", + "queueTimeout": "કતાર સમયસમાપ્તિ (ms)", + "contextRelayHandoffThreshold": "હેન્ડઑફ થ્રેશોલ્ડ", + "contextRelayHandoffThresholdHelp": "જ્યારે ક્વોટાનો ઉપયોગ આ થ્રેશોલ્ડ સુધી પહોંચે છે, ત્યારે સક્રિય એકાઉન્ટનો ક્વોટા સમાપ્ત થાય તે પહેલાં OmniRoute સંરચિત હેન્ડઑફ સારાંશ બનાવે છે.", + "contextRelayMaxMessages": "સારાંશ માટે મહત્તમ સંદેશાઓ", + "contextRelayMaxMessagesHelp": "તાજેતરના કેટલા ઇતિહાસને રિલે સારાંશમાં સંક્ષિપ્ત કરવો તે મર્યાદિત કરે છે.", + "contextRelaySummaryModel": "સારાંશ મોડેલ", + "contextRelaySummaryModelHelp": "ફક્ત હેન્ડઓફ સારાંશ જનરેટ કરવા માટે વપરાતું વૈકલ્પિક ઓવરરાઇડ મોડેલ. સક્રિય કોમ્બો મોડેલનો ફરી ઉપયોગ કરવા માટે ખાલી રાખો.", + "contextRelayProviderNote": "Context Relay હાલમાં Codex એકાઉન્ટ રોટેશન માટે હેન્ડઓફ જનરેટ કરે છે. શ્રેષ્ઠ સાતત્ય માટે તેને સમાન પ્રદાતાનાં અનેક એકાઉન્ટ સાથે જોડો.", + "advancedHint": "વૈશ્વિક ડિફૉલ્ટ્સનો ઉપયોગ કરવા માટે ખાલી રાખો. આ સેટિંગ્સ દરેક પ્રદાતા માટેની સેટિંગ્સને ઓવરરાઇડ કરે છે.", "failoverBeforeRetry": "ફરી પ્રયાસ કરતા પહેલા નિષ્ફળતા", "maxSetRetries": "મેક્સ સેટ ફરીથી પ્રયાસો", "setRetryDelayMs": "ફરીથી પ્રયાસ વિલંબ સેટ કરો (ms)", - "moveUp": "Move up", - "moveDown": "Move down", - "removeModel": "Remove", - "saving": "Saving...", + "moveUp": "ઉપર ખસેડો", + "moveDown": "નીચે ખસેડો", + "removeModel": "દૂર કરો", + "saving": "સાચવી રહ્યું છે...", "liveNoProviders": "હજી સુધી કોઈ પ્રદાતાઓ જોવા મળ્યા નથી.", "liveFleetDataHint": "ફ્લીટ ડેટા લાઇવ કૉમ્બો ઇવેન્ટ્સ દ્વારા આવે છે.", "liveActiveCount": "સક્રિય ({count})", @@ -3342,43 +3342,43 @@ "playgroundEmptyHint": "રૂટિંગ પાથ જોવા માટે કૉમ્બો પસંદ કરો અને Simulate Route પર ક્લિક કરો.", "playgroundNoCombosYet": "હજી સુધી કોઈ કૉમ્બો ગોઠવેલ નથી.", "playgroundCreateFirst": "પહેલા એક બનાવો", - "weighted": "Weighted", - "leastUsed": "Least-Used", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "weighted": "ભારાંકિત", + "leastUsed": "સૌથી ઓછું વપરાયેલ", + "costOpt": "ખર્ચ-ઑપ્ટિમાઇઝ્ડ", + "strategyGuideTitle": "આ વ્યૂહરચનાનો ઉપયોગ કેવી રીતે કરવો", + "strategyGuideWhen": "ક્યારે ઉપયોગ કરવો", + "strategyGuideAvoid": "ક્યારે ટાળવું", + "strategyGuideExample": "ઉદાહરણ", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "તમારી પાસે એક પસંદગીનું મોડેલ છે અને તમે ફક્ત નિષ્ફળતા આવે ત્યારે જ ફૉલબૅક ઇચ્છો છો.", + "avoid": "તમારે મોડેલો વચ્ચે વિનંતીઓનું વિતરણ કરવાની જરૂર છે.", + "example": "આઉટેજ માટે સસ્તા બૅકઅપ સાથેનું મુખ્ય કોડિંગ મોડેલ." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "તમારે મોડેલો વચ્ચે નિયંત્રિત ટ્રાફિક વિભાજનની જરૂર છે.", + "avoid": "તમે સમય જતાં સચોટ ભારાંક જાળવી શકતા નથી.", + "example": "80% સ્થિર મોડેલ + 20% કૅનરી મોડેલ રોલઆઉટ." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "તમે અનુમાનિત અને સમાન વિતરણ ઇચ્છો છો.", + "avoid": "મોડેલો વચ્ચે લેટન્સી અથવા ખર્ચમાં ઘણો તફાવત છે.", + "example": "થ્રુપુટ વહેંચવા માટે અનેક એકાઉન્ટ પર સમાન મોડેલ." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "તમે ન્યૂનતમ સેટઅપ સાથે સરળ વિતરણ ઇચ્છો છો.", + "avoid": "તમારે ટ્રાફિકની કડક બાંયધરીની જરૂર છે.", + "example": "સમકક્ષ મોડેલો સાથે ઝડપી પ્રોટોટાઇપિંગ." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "તમે લાઇવ માંગના આધારે અનુકૂલનશીલ સંતુલન ઇચ્છો છો.", + "avoid": "વપરાશ સંતુલનનો લાભ મેળવવા માટે ટ્રાફિક ખૂબ ઓછો છે.", + "example": "મિશ્ર વર્કલોડ, જેમાં એક મોડેલ વારંવાર ઓવરલોડ થઈ જાય છે." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "ખર્ચ ઘટાડવો તમારી સર્વોચ્ચ પ્રાથમિકતા છે.", + "avoid": "કિંમતનો ડેટા ઉપલબ્ધ નથી અથવા જૂનો છે.", + "example": "બૅકગ્રાઉન્ડ અથવા બૅચ જૉબ્સ, જેમાં ઓછા ખર્ચને પ્રાધાન્ય આપવામાં આવે છે." }, "reset-aware": { "when": "તમે ક્વોટા ટેલિમેટ્રી અને વિવિધ રીસેટ વિન્ડો સાથે બહુવિધ એકાઉન્ટ્સ પર રૂટ કરો છો.", @@ -3386,104 +3386,104 @@ "example": "પછીથી 80% એકાઉન્ટ રીસેટ કરતાં કાલે 60% સાપ્તાહિક એકાઉન્ટ રીસેટ કરવાનું પસંદ કરો." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "જ્યારે તમે સંપૂર્ણપણે સમાન વિતરણ ઇચ્છતા હો ત્યારે ઉપયોગ કરો — પુનરાવર્તન પહેલાં દરેક મોડેલનો એકવાર ઉપયોગ થાય છે.", + "avoid": "જ્યારે મોડેલોની ગુણવત્તા અથવા લેટન્સી અલગ હોય અને ક્રમ મહત્ત્વનો હોય ત્યારે ટાળો.", + "example": "ઉદાહરણ: વપરાશને સમાન રીતે વિતરિત કરવા માટે સમાન મોડેલનાં અનેક એકાઉન્ટ." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "જ્યારે તમે Power-of-Two-Choices અલ્ગોરિધમનો ઉપયોગ કરીને ઓછી લેટન્સીવાળી પસંદગી ઇચ્છતા હો ત્યારે ઉપયોગ કરો.", + "avoid": "2 અથવા તેનાથી ઓછા મોડેલ ધરાવતા નાના કોમ્બો માટે ટાળો — રાઉન્ડ-રોબિનની સરખામણીમાં કોઈ લાભ નથી.", + "example": "ઉદાહરણ: 4+ સમકક્ષ મોડેલ એન્ડપૉઇન્ટ્સ પર ઉચ્ચ-થ્રુપુટ ઇન્ફરન્સ." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "જ્યારે લાંબા સત્રોએ કાર્યરત સંદર્ભ ગુમાવ્યા વિના એકાઉન્ટ રોટેશન દરમિયાન ચાલુ રહેવું જરૂરી હોય ત્યારે ઉપયોગ કરો.", + "avoid": "જ્યારે એકાઉન્ટ સ્વિચિંગ ભાગ્યે જ થતું હોય અથવા તમે વધારાની સારાંશ વિનંતીઓ ન ઇચ્છતા હો ત્યારે ટાળો.", + "example": "ઉદાહરણ: ક્વોટા લગભગ સમાપ્ત થાય ત્યારે અનેક એકાઉન્ટ વચ્ચે ફેરવાતા Codex સત્રો." }, "fill-first": { - "when": "Use when you want to fully exhaust one provider's quota before moving to the next.", - "avoid": "Avoid when you need request-level load balancing across providers.", - "example": "Example: Use all $200 Deepgram credits before falling back to Groq." + "when": "આગલા પ્રદાતા પર જતા પહેલાં જ્યારે તમે એક પ્રદાતાનો ક્વોટા સંપૂર્ણપણે વાપરી લેવા માંગતા હો ત્યારે ઉપયોગ કરો.", + "avoid": "જ્યારે તમને પ્રદાતાઓ વચ્ચે વિનંતી-સ્તરનું લોડ બેલેન્સિંગ જરૂરી હોય ત્યારે ટાળો.", + "example": "ઉદાહરણ: Groq પર પાછા જતાં પહેલાં તમામ $200 Deepgram ક્રેડિટનો ઉપયોગ કરો." }, "auto": { - "when": "Use when you need multi-factor scoring routing based on cost, latency, and quality.", - "avoid": "Avoid when you need strict priority ordering or historical persistence.", - "example": "Example: Balance requests across models with different strengths." + "when": "જ્યારે તમને ખર્ચ, વિલંબતા અને ગુણવત્તાના આધારે બહુ-પરિબળ સ્કોરિંગ રૂટિંગની જરૂર હોય ત્યારે ઉપયોગ કરો.", + "avoid": "જ્યારે તમને કડક પ્રાથમિકતા ક્રમ અથવા ઐતિહાસિક સ્થાયિત્વની જરૂર હોય ત્યારે ટાળો.", + "example": "ઉદાહરણ: જુદી-જુદી ક્ષમતાઓ ધરાવતા મોડલ વચ્ચે વિનંતીઓનું સંતુલન કરો." }, "lkgp": { - "when": "Use when you want to route based on historical success rates and performance.", - "avoid": "Avoid when historical data is limited or unreliable.", - "example": "Example: Route to models with a good track record on specific tasks." + "when": "જ્યારે તમે ઐતિહાસિક સફળતા દરો અને પ્રદર્શનના આધારે રૂટ કરવા માંગતા હો ત્યારે ઉપયોગ કરો.", + "avoid": "જ્યારે ઐતિહાસિક ડેટા મર્યાદિત અથવા અવિશ્વસનીય હોય ત્યારે ટાળો.", + "example": "ઉદાહરણ: ચોક્કસ કાર્યોમાં સારો ટ્રેક રેકોર્ડ ધરાવતા મોડલ તરફ રૂટ કરો." }, "context-optimized": { - "when": "Use when you need to optimize context window usage across models.", - "avoid": "Avoid when models have similar context lengths or tasks are simple.", - "example": "Example: Distribute long conversations across models with larger context windows." + "when": "જ્યારે તમારે મોડલમાં કોન્ટેક્સ્ટ વિન્ડોના ઉપયોગને શ્રેષ્ઠ બનાવવાની જરૂર હોય ત્યારે ઉપયોગ કરો.", + "avoid": "જ્યારે મોડલની કોન્ટેક્સ્ટ લંબાઈ સમાન હોય અથવા કાર્યો સરળ હોય ત્યારે ટાળો.", + "example": "ઉદાહરણ: લાંબી વાતચીતોને વધુ મોટી કોન્ટેક્સ્ટ વિન્ડો ધરાવતા મોડલમાં વિતરિત કરો." } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "વિનંતી નિષ્ફળ જાહેર થાય તે પહેલાં કેટલા પુનઃપ્રયાસ કરવામાં આવે છે.", + "retryDelay": "પુનઃપ્રયાસો વચ્ચેનો પ્રારંભિક પ્રતીક્ષા સમય. વધુ મૂલ્યો અચાનક વધતા દબાણને ઘટાડે છે.", + "timeout": "રદ કરતાં પહેલાં વિનંતીનો મહત્તમ સમયગાળો.", + "healthcheck": "રૂટિંગના નિર્ણયોમાંથી અસ્વસ્થ મોડલ/પ્રદાતાઓને બાકાત રાખે છે.", + "concurrencyPerModel": "રાઉન્ડ-રોબિનમાં પ્રતિ મોડલ મંજૂર એકસાથે થતી વિનંતીઓની મહત્તમ સંખ્યા.", + "queueTimeout": "સમયસમાપ્તિ થાય તે પહેલાં વિનંતી કતારમાં કેટલો સમય રાહ જોઈ શકે છે.", "failoverBeforeRetry": "જ્યારે સક્ષમ હોય, ત્યારે કોઈપણ અપસ્ટ્રીમ ભૂલ આગામી કોમ્બો લક્ષ્ય પર તાત્કાલિક નિષ્ફળતાને ટ્રિગર કરે છે, તમામ પુનઃપ્રયાસો અને ફોલબેક URL ને છોડીને.", "maxSetRetries": "જ્યારે દરેક લક્ષ્ય નિષ્ફળ જાય ત્યારે સંપૂર્ણ લક્ષ્ય સેટ કરવાનો ફરીથી પ્રયાસ કરવાની સંખ્યા. 0 = કોઈ સેટ-લેવલ પુનઃપ્રયાસ નથી.", "setRetryDelayMs": "સેટ-લેવલના પુનઃપ્રયાસના પ્રયાસો વચ્ચે વિલંબ, ક્ષણિક સમસ્યાઓ ઉકેલવા માટે સમય આપે છે.", "disableSessionStickiness": "પ્રથમ-સંદેશ હેશ દ્વારા સમગ્ર વાતચીતને એક કનેક્શન પર પિન કરવાને બદલે દરેક વિનંતી પર અલગ કનેક્શન પર ફેરવો. વૈશ્વિક ડિફૉલ્ટને ઓવરરાઇડ કરે છે. મલ્ટિ-ટર્ન ચેટ્સ માટે પ્રોમ્પ્ટ-કૅશ હિટ્સ સાચવવા માટે Inherit પર રહેવા દો." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "ઝડપી ટેમ્પ્લેટ્સ", + "templatesDescription": "પ્રારંભિક પ્રોફાઇલ લાગુ કરો, પછી મોડલ અને કૉન્ફિગ સમાયોજિત કરો.", + "templateApply": "ટેમ્પ્લેટ લાગુ કરો", + "templateHighAvailability": "ઉચ્ચ ઉપલબ્ધતા", + "templateHighAvailabilityDesc": "હેલ્થ ચેક્સ અને સુરક્ષિત પુનઃપ્રયાસો સાથે પ્રાથમિકતા રૂટિંગ.", + "templateCostSaver": "ખર્ચ બચત", + "templateCostSaverDesc": "બજેટને પ્રાથમિકતા આપતા વર્કલોડ માટે ખર્ચ-ઑપ્ટિમાઇઝ્ડ રૂટિંગ.", + "templateBalanced": "સંતુલિત લોડ", + "templateBalancedDesc": "સમય જતાં માંગને ફેલાવવા માટે સૌથી ઓછા ઉપયોગવાળું રૂટિંગ.", + "usageGuideHide": "છુપાવો", + "usageGuideDontShowAgain": "ફરી બતાવશો નહીં", + "usageGuideShow": "માર્ગદર્શિકા બતાવો", + "quickTestTitle": "કોમ્બો ચકાસણી માટે તૈયાર છે", + "quickTestDescription": "ફૉલબૅક અને વિલંબતાની વર્તણૂકની પુષ્ટિ કરવા માટે હમણાં પરીક્ષણ ચલાવો.", + "testNow": "હમણાં પરીક્ષણ કરો", + "pricingCoverage": "કિંમત કવરેજ", + "pricingCoverageHint": "જ્યારે તમામ કોમ્બો મોડલ માટે કિંમત ઉપલબ્ધ હોય ત્યારે ખર્ચ-ઑપ્ટિમાઇઝ્ડ શ્રેષ્ઠ રીતે કાર્ય કરે છે.", + "pricingAvailable": "કિંમત ઉપલબ્ધ છે", + "pricingMissing": "કિંમત ઉપલબ્ધ નથી", + "pricingAvailableShort": "કિંમત ધરાવે છે", + "pricingMissingShort": "કિંમત વિનાનું", "fallbackOnlyOnQuotaExhaustion": "ફક્ત ક્વોટા થાકવા પર આગળ વધો", "fallbackOnlyOnQuotaExhaustionShort": "ક્વોટા-માત્ર ફોલબેક", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", - "readinessCheckPricing": "Pricing data is available", - "readinessCheckPricingOptional": "Pricing rule not required", - "saveBlockedTitle": "Save is blocked until the following items are fixed:", - "saveBlockName": "Define a combo name.", - "saveBlockModels": "Add at least one model.", - "saveBlockWeighted": "Set weights to 100% (current: {total}%).", - "saveBlockPricing": "Add pricing for at least one model or choose a different strategy.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "warningRoundRobinSingleModel": "રાઉન્ડ-રોબિન ઓછામાં ઓછા 2 મોડલ સાથે સૌથી વધુ ઉપયોગી છે.", + "warningCostOptimizedPartialPricing": "{total}માંથી માત્ર {priced} મોડલ માટે કિંમત ઉપલબ્ધ છે. રૂટિંગ આંશિક રીતે ખર્ચ-જાગૃત હોઈ શકે છે.", + "warningCostOptimizedNoPricing": "આ કોમ્બો માટે કિંમતનો કોઈ ડેટા મળ્યો નથી. ખર્ચ-ઑપ્ટિમાઇઝ્ડ વ્યૂહરચના અનપેક્ષિત રીતે રૂટ કરી શકે છે.", + "filterAll": "બધા", + "filterIntelligent": "બુદ્ધિશાળી", + "filterDeterministic": "નિર્ધારિત", + "filterEmptyTitle": "આ વ્યૂહરચના ફિલ્ટર સાથે કોઈ કોમ્બો મેળ ખાતો નથી.", + "filterEmptyIntelligentDescription": "બુદ્ધિશાળી રૂટિંગ ડૅશબોર્ડમાં માહિતી દર્શાવવા માટે auto અથવા LKGP કોમ્બો બનાવો.", + "filterEmptyDeterministicDescription": "હાલમાં માત્ર auto અને LKGP કોમ્બો જ ઉપલબ્ધ છે. પાછા બધા પર સ્વિચ કરો અથવા નિર્ધારિત કોમ્બો બનાવો.", + "readinessTitle": "સાચવવા માટે તૈયાર છો?", + "readinessDescription": "આ કોમ્બો બનાવતા અથવા અપડેટ કરતા પહેલાં ચેકલિસ્ટની સમીક્ષા કરો.", + "readinessCheckName": "કોમ્બોનું નામ માન્ય છે", + "readinessCheckModels": "ઓછામાં ઓછું એક મોડલ પસંદ કરેલું છે", + "readinessCheckWeights": "વેઇટેડ કુલ 100% છે", + "readinessCheckWeightsOptional": "વજનનો નિયમ જરૂરી નથી", + "readinessCheckPricing": "કિંમતનો ડેટા ઉપલબ્ધ છે", + "readinessCheckPricingOptional": "કિંમતનો નિયમ જરૂરી નથી", + "saveBlockedTitle": "નીચેની બાબતો સુધારવામાં ન આવે ત્યાં સુધી સાચવવાનું અવરોધિત છે:", + "saveBlockName": "કોમ્બોનું નામ નિર્ધારિત કરો.", + "saveBlockModels": "ઓછામાં ઓછું એક મોડલ ઉમેરો.", + "saveBlockWeighted": "વજન 100% પર સેટ કરો (હાલમાં: {total}%).", + "saveBlockPricing": "ઓછામાં ઓછા એક મોડલ માટે કિંમત ઉમેરો અથવા અલગ વ્યૂહરચના પસંદ કરો.", + "recommendationsLabel": "ભલામણ કરેલું સેટઅપ", + "applyRecommendations": "ભલામણો લાગુ કરો", + "recommendationsUpdated": "{strategy} માટે ભલામણો અપડેટ કરવામાં આવી.", + "recommendationsApplied": "આ કોમ્બો પર ભલામણો લાગુ કરવામાં આવી.", + "intelligentPanelTitle": "બુદ્ધિશાળી રૂટિંગ ડૅશબોર્ડ", + "intelligentPanelDesc": "આ auto-routing કોમ્બો માટે રીઅલ-ટાઇમ સ્કોરિંગ અને સ્વાસ્થ્ય સ્થિતિ.", "configOnlyStatus": "કન્ફિગરેશન વ્યૂ", "configOnlyHint": "આ પેનલ ફક્ત રૂટિંગ ઇનપુટ્સ બતાવે છે. લાઇવ બ્રેકર સ્થિતિ Health પૃષ્ઠ પર ઉપલબ્ધ છે.", "routingInputs": "રૂટિંગ ઇનપુટ્સ", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "અજ્ઞાત પ્રદાતા પ્રીફિક્સ.", "builderDynamicAccountShort": "ડાયનેમિક એકાઉન્ટ", "builderNeedValidName": "આગળ વધતા પહેલા માન્ય કૉમ્બો નામ વ્યાખ્યાયિત કરો.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "સ્થિતિનું અવલોકન", + "normalOperation": "સામાન્ય કામગીરી", + "allProvidersHealthy": "પ્રદાતાઓ સ્વસ્થ રૂટિંગ પરિસ્થિતિઓનો અહેવાલ આપી રહ્યા છે.", + "incidentMode": "ઘટના મોડ", + "highCircuitBreakerRate": "સર્કિટ બ્રેકર ટ્રિપનો ઊંચો દર મળ્યો છે.", + "activeModePack": "સક્રિય મોડ પૅક", + "modePackUpdated": "મોડ પૅકને {pack} પર અપડેટ કરવામાં આવ્યું.", + "modePackHint": "કોમ્બો ફરી બનાવ્યા વિના રૂટિંગ એન્જિનનો ઝુકાવ બદલવા માટે પ્રીસેટ્સ સ્વિચ કરો.", + "providerScores": "પ્રદાતા સ્કોર્સ", + "allProvidersEvaluated": "કોઈ ઉમેદવાર પૂલ ગોઠવાયેલો નથી. બધા સક્રિય પ્રદાતાઓનું રનટાઇમ દરમિયાન મૂલ્યાંકન થાય છે.", + "excludedProviders": "બાકાત રાખેલા પ્રદાતાઓ", + "excludedProvidersHint": "OPEN સર્કિટ બ્રેકર ધરાવતા પ્રદાતાઓને રૂટિંગમાંથી અસ્થાયી રીતે બાકાત રાખવામાં આવે છે.", + "noExcludedProviders": "હાલમાં કોઈ પ્રદાતાને બાકાત રાખવામાં આવ્યા નથી.", + "cooldownMinutes": "કૂલડાઉન: {minutes} મિનિટ", + "builderIntelligentTitle": "ઇન્ટેલિજન્ટ રાઉટિંગ કૉન્ફિગરેશન", + "builderIntelligentDesc": "આ ઑટો-રાઉટિંગ કોમ્બો માટે મલ્ટિ-ફેક્ટર સ્કોરિંગ એન્જિન કૉન્ફિગર કરો.", + "candidatePoolLabel": "ઉમેદવાર પૂલ", + "candidatePoolHint": "આ એન્જિને કયા પ્રદાતાઓનું મૂલ્યાંકન કરવું તે પસંદ કરો. બધા સક્રિય પ્રદાતાઓનો ઉપયોગ કરવા માટે ખાલી રાખો.", + "candidatePoolEmpty": "હજી સુધી કોઈ સક્રિય પ્રદાતા ઉપલબ્ધ નથી.", + "candidatePoolAllProviders": "બધા પ્રદાતાઓ", + "modePackLabel": "મોડ પૅક", + "routerStrategyLabel": "રાઉટર વ્યૂહરચના", + "strategyRules": "નિયમો (6-ફેક્ટર સ્કોરિંગ)", + "explorationRateLabel": "અન્વેષણ દર", + "explorationRateHint": "{percent}% વિનંતીઓ બિન-શ્રેષ્ઠ પ્રદાતાઓને અજમાવી શકે છે.", + "budgetCapLabel": "બજેટ મર્યાદા (USD / વિનંતી)", + "budgetCapPlaceholder": "કોઈ મર્યાદા નથી", + "advancedWeightsTitle": "અદ્યતન: સ્કોરિંગ વેઇટ્સ", "nestedComboFlatten": "નેસ્ટેડ કૉમ્બોઝને ફ્લેટન કરો", "nestedComboExecute": "નેસ્ટેડ કૉમ્બોઝને લક્ષ્યો તરીકે એક્ઝિક્યુટ કરો", "effectiveRoutingShare": "અસરકારક રૂટિંગ શેર (weight ÷ total)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "ક્વોટા", + "weightHealth": "સ્થિતિ", + "weightCostInv": "ખર્ચ", + "weightLatencyInv": "લેટન્સી", + "weightTaskFit": "કાર્ય સુસંગતતા", + "weightStability": "સ્થિરતા", + "weightTierPriority": "સ્તર", + "weightCacheAffinity": "કૅશ હિટ અફિનિટી", "weightSessionAvailability": "સત્રની ઉપલબ્ધતા", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "ઇન્ટેલિજન્ટ રાઉટિંગ કૉન્ફિગ", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "ફેઇલ-સેફ બેઝલાઇન", + "description": "એક પ્રાથમિક મોડલનો ઉપયોગ કરો અને ફૉલબૅક ચેઇનને ટૂંકી અને વિશ્વસનીય રાખો.", + "tip1": "તમારું સૌથી વિશ્વસનીય મોડલ પ્રથમ મૂકો.", + "tip2": "સમાન ગુણવત્તાવાળા 1-2 બૅકઅપ મોડલ રાખો.", + "tip3": "પ્રદાતાની ક્ષણિક નિષ્ફળતાઓને સંભાળવા માટે સુરક્ષિત પુનઃપ્રયાસોનો ઉપયોગ કરો." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "નિયંત્રિત ટ્રાફિક વિભાજન", + "description": "કૅનેરી રોલઆઉટ્સ અને મોડલ વચ્ચેના ક્રમિક સ્થળાંતર માટે ઉત્તમ.", + "tip1": "90/10 જેવા સાવચેત વિભાજનથી શરૂઆત કરો.", + "tip2": "કુલ પ્રમાણ 100% રાખો અને ફેરફારો પછી આપમેળે સંતુલિત કરો.", + "tip3": "કૅનેરી વેઇટ વધારતા પહેલાં સફળતા અને લેટન્સીનું નિરીક્ષણ કરો." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "અનુમાનિત લોડ વહેંચણી", + "description": "જ્યારે મોડલ સમકક્ષ હોય અને સરળ વિતરણની જરૂર હોય ત્યારે શ્રેષ્ઠ.", + "tip1": "ઓછામાં ઓછા 2 મોડલનો ઉપયોગ કરો.", + "tip2": "અચાનક થતા ઓવરલોડને ટાળવા માટે કન્કરન્સી મર્યાદાઓ સેટ કરો.", + "tip3": "સંતૃપ્તિની સ્થિતિમાં ઝડપથી નિષ્ફળ થવા માટે ક્યૂ ટાઇમઆઉટનો ઉપયોગ કરો." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "ઓછા સેટઅપ સાથે ઝડપી વિતરણ", + "description": "કડક ખાતરીઓ વિના સરળ વિતરણની જરૂર હોય ત્યારે ઉપયોગ કરો.", + "tip1": "સમાન લેટન્સી પ્રોફાઇલ ધરાવતા મોડેલોનો ઉપયોગ કરો.", + "tip2": "અનિયમિત ચૂકને સંભાળવા માટે પુનઃપ્રયાસો સક્ષમ રાખો.", + "tip3": "કડક SLAs માટે નહીં, પરંતુ પ્રયોગો માટે આને પ્રાધાન્ય આપો." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "અનુકૂલનશીલ સંતુલન", + "description": "સમય જતાં અતિભારવાળા બિંદુઓ ઘટાડવા માટે ઓછા ઉપયોગમાં લેવાતા મોડેલો તરફ રૂટ કરે છે.", + "tip1": "સતત ટ્રાફિક હેઠળ વધુ સારી રીતે કાર્ય કરે છે.", + "tip2": "વધુ સુરક્ષિત સંતુલન માટે તેને આરોગ્ય તપાસ સાથે જોડો.", + "tip3": "વિતરણમાં થયેલા સુધારાની ખાતરી કરવા માટે દરેક મોડેલનો ઉપયોગ ટ્રૅક કરો." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "બજેટ-પ્રથમ રૂટિંગ", + "description": "કિંમત સંબંધિત મેટાડેટા ઉપલબ્ધ હોય ત્યારે ઓછા ખર્ચવાળા મોડેલો તરફ રૂટ કરે છે.", + "tip1": "પસંદ કરેલા તમામ મોડેલો માટે કિંમતની માહિતી ઉપલબ્ધ હોવાની ખાતરી કરો.", + "tip2": "મુશ્કેલ પ્રોમ્પ્ટ્સ માટે ગુણવત્તાયુક્ત ફૉલબૅક રાખો.", + "tip3": "જ્યાં ખર્ચ મુખ્ય KPI હોય તેવી બૅચ/બૅકગ્રાઉન્ડ જૉબ્સ માટે ઉપયોગ કરો." }, "reset-aware": { "title": "રીસેટ-જાગૃત એકાઉન્ટ રોટેશન", @@ -3597,155 +3597,155 @@ "tip3": "ટાઈ બેન્ડ નાનો રાખો જેથી સમકક્ષ ખાતા હજુ પણ યોગ્ય રીતે ફરે." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "શફલ ડેક વિતરણ", + "description": "ફરીથી શફલ કરતાં પહેલાં દરેક ચક્રમાં દરેક મોડેલનો બરાબર એક વખત ઉપયોગ થાય છે.", + "tip1": "અર્થપૂર્ણ વિતરણ માટે ઓછામાં ઓછા 2 મોડેલોનો ઉપયોગ કરો.", + "tip2": "સમાન કાર્યક્ષમતા ધરાવતા મોડેલો સાથે શ્રેષ્ઠ રીતે કાર્ય કરે છે.", + "tip3": "એકથી વધુ API એકાઉન્ટ્સમાં લોડ બૅલેન્સિંગ માટે આદર્શ છે." }, "fill-first": { - "description": "Exhaust provider quotas sequentially before falling back.", - "tip1": "Use for quota-based routing with clear fallback chains.", - "tip2": "Set quotas accurately to avoid premature fallback.", - "tip3": "Works best with providers offering free tiers or credit buckets.", - "title": "Quota Exhaustion" + "description": "ફૉલબૅક કરતાં પહેલાં પ્રદાતાના ક્વોટા ક્રમિક રીતે પૂર્ણપણે વાપરે છે.", + "tip1": "સ્પષ્ટ ફૉલબૅક શ્રેણીઓ સાથે ક્વોટા-આધારિત રૂટિંગ માટે ઉપયોગ કરો.", + "tip2": "અકાળ ફૉલબૅક ટાળવા માટે ક્વોટા ચોક્કસ રીતે સેટ કરો.", + "tip3": "ફ્રી ટિયર અથવા ક્રેડિટ બકેટ્સ આપતા પ્રદાતાઓ સાથે શ્રેષ્ઠ રીતે કાર્ય કરે છે.", + "title": "ક્વોટાની પૂર્ણ વપરાશ" }, "auto": { - "description": "Route based on real-time scoring for cost, latency, quality, and health.", - "tip1": "Let the engine balance multiple factors automatically.", - "tip2": "Monitor which factors drive routing decisions in logs.", - "tip3": "Use for complex workloads where no single factor dominates.", - "title": "Multi-Factor Optimization" + "description": "ખર્ચ, લેટન્સી, ગુણવત્તા અને આરોગ્ય માટેના રીઅલ-ટાઇમ સ્કોરિંગના આધારે રૂટ કરો.", + "tip1": "એન્જિનને અનેક પરિબળોનું આપમેળે સંતુલન કરવા દો.", + "tip2": "લૉગ્સમાં કયા પરિબળો રૂટિંગના નિર્ણયો પ્રેરિત કરે છે તેનું નિરીક્ષણ કરો.", + "tip3": "જટિલ વર્કલોડ્સ માટે ઉપયોગ કરો જ્યાં કોઈ એક પરિબળનું પ્રભુત્વ ન હોય.", + "title": "બહુ-પરિબળ ઑપ્ટિમાઇઝેશન" }, "lkgp": { - "description": "Route based on historical performance and success patterns.", - "tip1": "Requires sufficient request history for accurate predictions.", - "tip2": "Good for workloads with consistent model performance patterns.", - "tip3": "Monitor prediction accuracy and adjust weights as needed.", - "title": "History-Based Routing" + "description": "ઐતિહાસિક કાર્યક્ષમતા અને સફળતાની પેટર્નના આધારે રૂટ કરો.", + "tip1": "ચોક્કસ આગાહીઓ માટે પૂરતો વિનંતી ઇતિહાસ જરૂરી છે.", + "tip2": "સુસંગત મોડેલ કાર્યક્ષમતાની પેટર્ન ધરાવતા વર્કલોડ્સ માટે સારું છે.", + "tip3": "આગાહીની ચોકસાઈનું નિરીક્ષણ કરો અને જરૂર મુજબ વેઇટ્સ સમાયોજિત કરો.", + "title": "ઇતિહાસ-આધારિત રૂટિંગ" }, "context-optimized": { - "description": "Optimize routing based on context window usage and token efficiency.", - "tip1": "Route long conversations to models with larger context windows.", - "tip2": "Monitor context utilization to avoid token waste.", - "tip3": "Best for conversational AI requiring extensive context retention.", - "title": "Context Optimization" + "description": "કૉન્ટેક્સ્ટ વિન્ડોના ઉપયોગ અને ટોકન કાર્યક્ષમતાના આધારે રૂટિંગને ઑપ્ટિમાઇઝ કરો.", + "tip1": "લાંબી વાતચીતોને મોટી કૉન્ટેક્સ્ટ વિન્ડો ધરાવતા મોડેલો તરફ રૂટ કરો.", + "tip2": "ટોકનનો વ્યય ટાળવા માટે કૉન્ટેક્સ્ટના ઉપયોગનું નિરીક્ષણ કરો.", + "tip3": "વ્યાપક કૉન્ટેક્સ્ટ જાળવણીની જરૂર હોય તેવા સંવાદાત્મક AI માટે શ્રેષ્ઠ છે.", + "title": "કૉન્ટેક્સ્ટ ઑપ્ટિમાઇઝેશન" }, "context-relay": { - "description": "Best when account rotation is expected and the next account must inherit a simplified task summary.", - "tip1": "Use with providers rotating accounts for the same model family.", - "tip2": "Set handoff threshold below hard quota cutoffs for summary generation time.", - "tip3": "Only set a dedicated summary model if the primary is too expensive or unstable.", - "title": "Session Continuity Priority" + "description": "જ્યારે એકાઉન્ટ રોટેશન અપેક્ષિત હોય અને આગામી એકાઉન્ટને સરળ બનાવેલો કાર્ય સારાંશ વારસામાં મળવો જરૂરી હોય ત્યારે શ્રેષ્ઠ.", + "tip1": "સમાન મોડેલ ફેમિલી માટે એકાઉન્ટ રોટેટ કરતા પ્રદાતાઓ સાથે ઉપયોગ કરો.", + "tip2": "સારાંશ જનરેટ કરવા માટે સમય મળે તે માટે હાર્ડ ક્વોટા કટઓફથી નીચે હેન્ડઓફ થ્રેશોલ્ડ સેટ કરો.", + "tip3": "પ્રાથમિક મોડેલ ખૂબ ખર્ચાળ અથવા અસ્થિર હોય તો જ સમર્પિત સારાંશ મોડેલ સેટ કરો.", + "title": "સત્ર સાતત્ય પ્રાથમિકતા" }, "p2c": { - "description": "Route to the provider with the lowest current load based on real-time metrics.", - "tip1": "Monitor provider health metrics for accurate load assessment.", - "tip2": "Works best with homogeneous provider pools.", - "tip3": "Adjust sensitivity to avoid oscillation during traffic spikes.", - "title": "Power of Two Choices" + "description": "રીઅલ-ટાઇમ મેટ્રિક્સના આધારે હાલમાં સૌથી ઓછો લોડ ધરાવતા પ્રદાતા તરફ રૂટ કરો.", + "tip1": "લોડનું સચોટ મૂલ્યાંકન કરવા માટે પ્રદાતાના આરોગ્ય મેટ્રિક્સનું નિરીક્ષણ કરો.", + "tip2": "સજાતીય પ્રદાતા પૂલ સાથે શ્રેષ્ઠ રીતે કાર્ય કરે છે.", + "tip3": "ટ્રાફિકમાં અચાનક ઉછાળા દરમિયાન વારંવારની અદલાબદલી ટાળવા માટે સંવેદનશીલતા સમાયોજિત કરો.", + "title": "બે વિકલ્પોની શક્તિ" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", - "auto": "Intelligent Auto", - "autoDesc": "Self-healing smart routing pool with multi-factor scoring", - "lkgp": "LKGP Mode", - "lkgpDesc": "Prioritizes the last provider that successfully completed a request", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "templateFreeStack": "મફત સ્ટેક ($0)", + "templateFreeStackDesc": "તમામ મફત પ્રદાતાઓમાં રાઉન્ડ-રોબિન: Kiro (Claude), Qoder (5 મોડેલ), Qwen (4 મોડેલ). શૂન્ય ખર્ચ, કોડિંગ ક્યારેય અટકતું નથી.", + "auto": "બુદ્ધિશાળી સ્વચાલિત", + "autoDesc": "બહુવિધ પરિબળોના સ્કોરિંગ સાથેનો સ્વ-સુધારક સ્માર્ટ રૂટિંગ પૂલ", + "lkgp": "LKGP મોડ", + "lkgpDesc": "જે છેલ્લા પ્રદાતાએ વિનંતી સફળતાપૂર્વક પૂર્ણ કરી હતી તેને પ્રાથમિકતા આપે છે", + "wizardGuideTitle": "કોમ્બોઝ સાથે શરૂઆત", + "wizardGuideDesc": "AI ટ્રાફિકને બુદ્ધિપૂર્વક રૂટ કરવા માટે મોડેલ કોમ્બોઝ બનાવો", + "wizardGuideHint": "અથવા ઉપરના + કોમ્બો બનાવો પર ક્લિક કરો", + "createFirstCombo": "તમારો પ્રથમ કોમ્બો બનાવો", + "wizardStep1Title": "તમારા કોમ્બોને નામ આપો", + "wizardStep1Desc": "રૂટિંગ નિયમોમાં ઓળખવા માટે તમારા કોમ્બોને અનન્ય નામ આપો", + "wizardStep2Title": "મોડેલ ઉમેરો", + "wizardStep2Desc": "AI મોડેલ પસંદ કરો અને તેમનો ફોલબેક પ્રાથમિકતા ક્રમ ગોઠવો", + "wizardStep3Title": "વ્યૂહરચના પસંદ કરો", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "સમીક્ષા કરો અને સાચવો", + "wizardStep4Desc": "તમારી ગોઠવણીની સમીક્ષા કરો અને કોમ્બોને સક્રિય કરો", + "usageGuideInvokeTitle": "આ કોમ્બોને કેવી રીતે કૉલ કરવો", + "usageGuideInvokeDesc": "મોડેલ તરીકે કોમ્બોનું ચોક્કસ નામ મોકલો, દા.ત. model: \"my-combo\" (અથવા combo/my-combo).", + "usageGuideInvokeAutoNote": "auto અને auto/* એક અલગ શૂન્ય-ગોઠવણી રૂટર છે, જે તમારા કોમ્બોઝનો ઉપયોગ કરતું નથી (સિવાય કે કોઈ કોમ્બોનું નામ ખરેખર auto હોય).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto એ વાસ્તવિક ચૂકવેલ OpenRouter ઉત્પાદન (Auto Best Available) છે, OmniRoute ઉપનામ નથી — Settings → Routing → Hide paid models દ્વારા તેને બાકાત રાખો.", + "emailVisibilityStateOn": "ચાલુ", + "emailVisibilityStateOff": "બંધ", + "reorderHandle": "ક્રમ બદલવા માટે ખેંચો", + "failedReorder": "મોડેલનો ક્રમ બદલવામાં નિષ્ફળતા", + "builderFlowTitle": "કોમ્બો બિલ્ડર પ્રવાહ", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "મૂળભૂત બાબતો", + "description": "નામ અને પ્રારંભિક ટેમ્પલેટ" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "પગલાં", + "description": "પ્રદાતા, મોડેલ અને એકાઉન્ટની પસંદગી" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "વ્યૂહરચના", + "description": "રાઉટિંગ વર્તન અને અદ્યતન સેટિંગ્સ" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "સ્માર્ટ રાઉટિંગ", + "description": "સ્વતઃ-રાઉટિંગ ઉમેદવાર સમૂહ, પ્રીસેટ્સ અને સ્કોરિંગ" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "સમીક્ષા", + "description": "સાચવતા પહેલાં અંતિમ માન્યતા તપાસ" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", - "builderDuplicateExact": "This exact provider/model/account step is already in the combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", - "builderStagesDescription": "Complete each stage in order to define combos, build steps, select routing strategy, and review results.", - "builderStepsDescription": "Build each combo step in order: provider, model, then account. This allows reusing the same provider and model across different accounts.", - "selectProvider": "Select Provider", - "selectProviderPlaceholder": "Select a provider", - "selectModel": "Select Model", - "selectModelPlaceholder": "Select a provider first", - "selectAccount": "Select Account", - "selectComboToReference": "Select combo to reference", - "comboReference": "Combo Reference", - "addComboReference": "Add Combo Reference", - "addStepBeforeContinue": "Please add at least one step before proceeding to the next stage.", - "previewNextStep": "Preview next step", - "autoSelectAccount": "Automatically select account at runtime", - "modePackBalanced": "Balanced", - "modePackBudget": "Budget", - "modePackPerformance": "Performance", - "modePackCustom": "Custom", - "browseLegacyCatalog": "Browse legacy combo catalog", - "agentFeaturesTitle": "Agent Features", - "agentFeaturesDescription": "Enable advanced features for agents using this combo", + "builderStageVisited": "તબક્કો પૂર્ણ થયો", + "builderStageCurrent": "વર્તમાન તબક્કો", + "builderStagePending": "બાકી", + "builderStageLocked": "લૉક કરેલ — પહેલાં અગાઉનો તબક્કો પૂર્ણ કરો", + "builderTitle": "કોમ્બો બનાવો", + "builderBrowseCatalog": "કૅટલૉગ બ્રાઉઝ કરો", + "builderProvider": "પ્રદાતા", + "builderLoadingProviders": "પ્રદાતાઓ લોડ થઈ રહ્યા છે...", + "builderSelectProvider": "પ્રદાતા પસંદ કરો", + "builderModel": "મોડેલ", + "builderSelectModel": "મોડેલ પસંદ કરો", + "builderProviderFirst": "પહેલાં પ્રદાતા પસંદ કરો", + "builderAccount": "એકાઉન્ટ", + "builderPreview": "પૂર્વાવલોકન", + "builderAddStep": "પગલું ઉમેરો", + "builderDuplicateExact": "આ ચોક્કસ પ્રદાતા/મોડેલ/એકાઉન્ટ પગલું પહેલેથી જ કોમ્બોમાં છે.", + "builderComboRef": "કોમ્બો સંદર્ભ", + "builderAddComboRef": "કોમ્બો સંદર્ભ ઉમેરો", + "builderComboRefStep": "કોમ્બો સંદર્ભ ઉમેરો", + "builderPinnedAccount": "પિન કરેલું એકાઉન્ટ", + "builderLegacyEntry": "લેગસી એન્ટ્રી", + "reviewName": "નામ", + "reviewStrategy": "વ્યૂહરચના", + "reviewSteps": "પગલાં", + "reviewAccounts": "એકાઉન્ટ્સ", + "reviewProviders": "પ્રદાતાઓ", + "reviewComboRefs": "કોમ્બો સંદર્ભો", + "reviewAdvanced": "અદ્યતન સેટિંગ્સ", + "reviewAgentFlags": "એજન્ટ ફ્લૅગ્સ", + "reviewSequence": "મોડેલ ક્રમ", + "reviewNoSteps": "કોઈ પગલાં ગોઠવેલ નથી", + "builderStagesDescription": "કોમ્બો નિર્ધારિત કરવા, પગલાં બનાવવા, રાઉટિંગ વ્યૂહરચના પસંદ કરવા અને પરિણામોની સમીક્ષા કરવા માટે દરેક તબક્કો ક્રમમાં પૂર્ણ કરો.", + "builderStepsDescription": "દરેક કોમ્બો પગલું આ ક્રમમાં બનાવો: પ્રદાતા, મોડેલ અને પછી એકાઉન્ટ. આનાથી અલગ-અલગ એકાઉન્ટ્સમાં સમાન પ્રદાતા અને મોડેલનો ફરીથી ઉપયોગ કરી શકાય છે.", + "selectProvider": "પ્રદાતા પસંદ કરો", + "selectProviderPlaceholder": "પ્રદાતા પસંદ કરો", + "selectModel": "મોડેલ પસંદ કરો", + "selectModelPlaceholder": "પહેલા પ્રદાતા પસંદ કરો", + "selectAccount": "એકાઉન્ટ પસંદ કરો", + "selectComboToReference": "સંદર્ભ માટે કોમ્બો પસંદ કરો", + "comboReference": "કોમ્બો સંદર્ભ", + "addComboReference": "કોમ્બો સંદર્ભ ઉમેરો", + "addStepBeforeContinue": "આગલા તબક્કામાં આગળ વધતા પહેલાં કૃપા કરીને ઓછામાં ઓછું એક પગલું ઉમેરો.", + "previewNextStep": "આગલા પગલાનું પૂર્વાવલોકન કરો", + "autoSelectAccount": "રનટાઇમ પર આપમેળે એકાઉન્ટ પસંદ કરો", + "modePackBalanced": "સંતુલિત", + "modePackBudget": "બજેટ", + "modePackPerformance": "પ્રદર્શન", + "modePackCustom": "કસ્ટમ", + "browseLegacyCatalog": "લેગસી કોમ્બો કેટલોગ બ્રાઉઝ કરો", + "agentFeaturesTitle": "એજન્ટ સુવિધાઓ", + "agentFeaturesDescription": "આ કોમ્બોનો ઉપયોગ કરતા એજન્ટો માટે અદ્યતન સુવિધાઓ સક્ષમ કરો", "responseValidationTitle": "પ્રતિસાદ માન્યતા", "responseValidationHelp": "જ્યારે 200 OK બોડી આ તપાસોમાં નિષ્ફળ જાય (સહાયક સામગ્રી) ત્યારે આગલા લક્ષ્ય પર ફેલ ઓવર કરો.", "responseValidationForbidden": "પ્રતિબંધિત સબસ્ટ્રિંગ્સ (લાઇન દીઠ એક)", @@ -3753,13 +3753,13 @@ "responseValidationMinLength": "ન્યૂનતમ સામગ્રી લંબાઈ (અક્ષરો)", "responseValidationJsonPaths": "JSON-path તપાસો", "responseValidationAddCheck": "+ તપાસ ઉમેરો", - "agentFeaturesSystemMessageOverride": "Override system message", - "agentFeaturesSystemMessagePlaceholder": "You are an expert assistant...", - "agentFeaturesSystemMessageHint": "System message override for agents", + "agentFeaturesSystemMessageOverride": "સિસ્ટમ સંદેશને ઓવરરાઇડ કરો", + "agentFeaturesSystemMessagePlaceholder": "તમે એક નિષ્ણાત સહાયક છો...", + "agentFeaturesSystemMessageHint": "એજન્ટો માટે સિસ્ટમ સંદેશ ઓવરરાઇડ", "agentFeaturesToolFilterRegex": "/regex-pattern/", - "agentFeaturesToolFilterHint": "Tool filter regex for agents", - "agentFeaturesContextCacheHint": "Enable in-context cache for agent tools", - "agentFeaturesContextCacheProtection": "Protect cache from agent tool mutations", + "agentFeaturesToolFilterHint": "એજન્ટો માટે ટૂલ ફિલ્ટર રેગેક્સ", + "agentFeaturesContextCacheHint": "એજન્ટ ટૂલ્સ માટે ઇન-કોન્ટેક્સ્ટ કૅશ સક્ષમ કરો", + "agentFeaturesContextCacheProtection": "એજન્ટ ટૂલના ફેરફારોથી કૅશને સુરક્ષિત રાખો", "agentFeaturesContextLength": "સંદર્ભ લંબાઈ", "agentFeaturesContextLengthPlaceholder": "દા.ત. 128000 છે", "agentFeaturesContextLengthHint": "આ કોમ્બો માટે સંદર્ભ વિન્ડોને /v1/models માં વ્યાખ્યાયિત કરે છે.", @@ -3788,40 +3788,40 @@ "duplicateAutoComboTitle": "{name} માંથી સ્ટેટિક કોમ્બો બનાવો" }, "costs": { - "title": "Costs", - "pageDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "overview": "Overview", - "budget": "Budget", - "totalCost": "Total Cost", - "breakdown": "Cost Breakdown", - "noData": "No cost data", - "byModel": "By Model", - "byProvider": "By Provider", - "range7d": "7 Days", - "range30d": "30 Days", - "range90d": "90 Days", - "range180d": "180 Days", - "range365d": "365 Days", - "rangeAll": "All Time", - "spend30d": "Spend 30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", - "overviewTitle": "Cost Overview", - "spend7d": "Spend 7D", - "avgCostPerRequest": "Avg Cost / Request", - "noCostDataDescription": "Start making requests to see cost data appear here. Costs are tracked automatically for all providers.", - "spendToday": "Spend Today", - "overviewLoadFailed": "Failed to load cost overview", - "overviewDescription": "Real-time spending breakdown across all connected providers and models", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", - "noCostDataTitle": "No cost data yet", - "topModels": "Top Models", - "requestsInWindow": "Requests in Window", + "title": "ખર્ચ", + "pageDescription": "તમામ પ્રદાતાઓમાં ખર્ચ ટ્રૅક કરો, વલણોનું વિશ્લેષણ કરો અને તમારા AI બજેટનું સંચાલન કરો", + "overview": "ઝાંખી", + "budget": "બજેટ", + "totalCost": "કુલ ખર્ચ", + "breakdown": "ખર્ચનું વિભાજન", + "noData": "ખર્ચનો કોઈ ડેટા નથી", + "byModel": "મોડેલ પ્રમાણે", + "byProvider": "પ્રદાતા પ્રમાણે", + "range7d": "7 દિવસ", + "range30d": "30 દિવસ", + "range90d": "90 દિવસ", + "range180d": "180 દિવસ", + "range365d": "365 દિવસ", + "rangeAll": "સમગ્ર સમયગાળો", + "spend30d": "30 દિવસનો ખર્ચ", + "activeModels": "સક્રિય મોડેલ્સ", + "flatRateEstimateNotice": "ફ્લેટ-રેટ સબ્સ્ક્રિપ્શન માટેના ટોકન-કિંમત અંદાજોનો સમાવેશ થાય છે, બિલ કરાયેલ ખર્ચનો નહીં.", + "flatRateEstimateForecast": "અનુમાનમાં ફ્લેટ-રેટ અંદાજોનો સમાવેશ થાય છે.", + "selectedWindow": "પસંદ કરેલી સમયાવધિ", + "activeProviders": "સક્રિય પ્રોવાઇડર્સ", + "overviewTitle": "ખર્ચનો સારાંશ", + "spend7d": "છેલ્લા 7 દિવસનો ખર્ચ", + "avgCostPerRequest": "વિનંતી દીઠ સરેરાશ ખર્ચ", + "noCostDataDescription": "ખર્ચનો ડેટા અહીં જોવા માટે વિનંતીઓ કરવાનું શરૂ કરો. બધા પ્રોવાઇડર્સ માટે ખર્ચ આપમેળે ટ્રૅક થાય છે.", + "spendToday": "આજનો ખર્ચ", + "overviewLoadFailed": "ખર્ચનો સારાંશ લોડ કરવામાં નિષ્ફળતા", + "overviewDescription": "બધા કનેક્ટેડ પ્રોવાઇડર્સ અને મોડેલ્સમાં ખર્ચનું રીઅલ-ટાઇમ વિભાજન", + "providerShare": "પ્રોવાઇડરનો હિસ્સો", + "topProviders": "ટોચના પ્રોવાઇડર્સ", + "costTrend": "ખર્ચનું વલણ", + "noCostDataTitle": "હજુ સુધી કોઈ ખર્ચ ડેટા નથી", + "topModels": "ટોચના મોડેલ્સ", + "requestsInWindow": "સમયાવધિમાં વિનંતીઓ", "tokenUsage": "ટોકન વપરાશ", "totalTokens": "કુલ ટોકન્સ", "inputTokens": "ઇનપુટ ટોકન્સ", @@ -3881,139 +3881,139 @@ "showingTopCostRows": "કુલ {total} મેળ ખાતી પંક્તિઓમાંથી {shown} બતાવવામાં આવી છે (ટોચની 50)." }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", - "available": "Available Endpoints", + "title": "API એન્ડપોઇન્ટ", + "subtitle": "મોટાભાગના SDKs અને ટૂલ્સ સાથે OpenAI-સુસંગત એન્ડપોઇન્ટનો ઉપયોગ કરો.", + "testEndpoint": "એન્ડપોઇન્ટનું પરીક્ષણ કરો →", + "advancedProtocols": "અદ્યતન પ્રોટોકોલ્સ", + "available": "ઉપલબ્ધ એન્ડપોઇન્ટ્સ", "cloudProxy": "Cloud Proxy", - "disableConfirm": "Are you sure you want to disable cloud proxy?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", - "registeredKeys": "Registered Keys", + "disableConfirm": "શું તમે ખરેખર ક્લાઉડ પ્રોક્સીને અક્ષમ કરવા માંગો છો?", + "baseUrl": "બેઝ URL", + "apiKeyLabel": "API કી", + "registeredKeys": "રજિસ્ટર્ડ કીઝ", "chatCompletions": "Chat Completions", - "responses": "Responses", - "listModels": "List Models", - "usingCloudProxy": "Using Cloud Proxy", - "usingLocalServer": "Using Local Server", - "machineId": "Machine ID: {id}...", - "disableCloud": "Disable Cloud", - "enableCloud": "Enable Cloud", - "modelsAcrossEndpoints": "{models} models across {endpoints} endpoints", - "loadingModels": "Loading available models...", - "chatDesc": "Streaming & non-streaming chat with all providers", - "embeddings": "Embeddings", - "embeddingsDesc": "Text embeddings for search & RAG pipelines", - "imageGeneration": "Image Generation", - "imageDesc": "Generate images from text prompts", + "responses": "પ્રતિસાદો", + "listModels": "મોડેલ્સની યાદી", + "usingCloudProxy": "ક્લાઉડ પ્રોક્સીનો ઉપયોગ થઈ રહ્યો છે", + "usingLocalServer": "લોકલ સર્વરનો ઉપયોગ થઈ રહ્યો છે", + "machineId": "મશીન ID: {id}...", + "disableCloud": "ક્લાઉડ અક્ષમ કરો", + "enableCloud": "ક્લાઉડ સક્ષમ કરો", + "modelsAcrossEndpoints": "{endpoints} એન્ડપોઇન્ટ્સ પર {models} મોડેલ્સ", + "loadingModels": "ઉપલબ્ધ મોડેલ્સ લોડ થઈ રહ્યાં છે...", + "chatDesc": "બધા પ્રોવાઇડર્સ સાથે સ્ટ્રીમિંગ અને નોન-સ્ટ્રીમિંગ ચેટ", + "embeddings": "એમ્બેડિંગ્સ", + "embeddingsDesc": "શોધ અને RAG પાઇપલાઇન્સ માટે ટેક્સ્ટ એમ્બેડિંગ્સ", + "imageGeneration": "ઇમેજ જનરેશન", + "imageDesc": "ટેક્સ્ટ પ્રોમ્પ્ટ્સમાંથી છબીઓ બનાવો", "rerank": "Rerank", - "rerankDesc": "Rerank documents by relevance to a query", - "audioTranscription": "Audio Transcription", - "audioTranscriptionDesc": "Transcribe audio files to text (Whisper)", - "textToSpeech": "Text to Speech", - "textToSpeechDesc": "Convert text to natural-sounding speech", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", - "moderations": "Moderations", - "moderationsDesc": "Content moderation and safety classification", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", - "categoryCore": "Core APIs", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", - "categoryUtility": "Utility & Management", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", - "enableCloudTitle": "Enable Cloud Proxy", - "whatYouGet": "What you will get", - "cloudBenefitAccess": "Access your API from anywhere in the world", - "cloudBenefitShare": "Share endpoint with your team easily", - "cloudBenefitPorts": "No need to open ports or configure firewall", - "cloudBenefitEdge": "Fast global edge network", - "cloudSessionNote": "Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted.", - "cloudUnstableNote": "Cloud is currently unstable with Claude Code OAuth in some cases.", - "cloudConnected": "Cloud Proxy connected!", - "connectingToCloud": "Connecting to cloud...", - "verifyingConnection": "Verifying connection...", - "connecting": "Connecting...", - "verifying": "Verifying...", - "connected": "Connected!", - "disableCloudTitle": "Disable Cloud Proxy", - "disableWarning": "All auth sessions will be deleted from cloud.", - "syncingData": "Syncing latest data...", - "disablingCloud": "Disabling cloud...", - "syncing": "Syncing...", - "disabling": "Disabling...", - "cloudConnectedVerified": "Cloud Proxy connected and verified!", - "connectedVerificationPending": "Connected — verification pending", - "connectedVerificationPendingWithError": "Connected — verification pending: {error}", - "cloudDisabledSuccess": "Cloud disabled successfully", - "syncedSuccess": "Synced successfully", - "failedDisable": "Failed to disable cloud", - "failedEnable": "Failed to enable cloud", - "cloudRequestTimeout": "Cloud request timeout", - "cloudRequestFailed": "Cloud request failed", - "cloudWorkerUnreachable": "Could not reach cloud worker. Make sure the cloud service is running (npm run dev in /cloud).", - "connectionFailed": "Connection failed", - "syncFailed": "Failed to sync cloud data", + "rerankDesc": "ક્વેરી સાથેની સુસંગતતા અનુસાર દસ્તાવેજોને ફરી ક્રમબદ્ધ કરો", + "audioTranscription": "ઑડિયો ટ્રાન્સક્રિપ્શન", + "audioTranscriptionDesc": "ઑડિયો ફાઇલોને ટેક્સ્ટમાં ટ્રાન્સક્રાઇબ કરો (Whisper)", + "textToSpeech": "ટેક્સ્ટથી સ્પીચ", + "textToSpeechDesc": "ટેક્સ્ટને કુદરતી લાગતી વાણીમાં રૂપાંતરિત કરો", + "musicGeneration": "સંગીત જનરેશન", + "musicDesc": "ComfyUI (Stable Audio, MusicGen) દ્વારા સંગીત અને ઑડિયો ટ્રૅક્સ બનાવો", + "moderations": "મોડરેશન્સ", + "moderationsDesc": "કન્ટેન્ટ મોડરેશન અને સલામતી વર્ગીકરણ", + "responsesDesc": "Codex અને અદ્યતન એજન્ટિક વર્કફ્લોઝ માટે OpenAI Responses API", + "listModelsDesc": "બધા કનેક્ટેડ પ્રદાતાઓમાં ઉપલબ્ધ તમામ મોડેલોની યાદી જુઓ", + "settingsApiDesc": "API દ્વારા OmniRoute કૉન્ફિગરેશન વાંચો અને તેમાં ફેરફાર કરો", + "settingsApi": "સેટિંગ્સ API", + "categoryCore": "મુખ્ય APIs", + "categoryMedia": "મીડિયા અને મલ્ટિ-મોડલ", + "categorySearch": "શોધ અને ડિસ્કવરી", + "categoryUtility": "ઉપયોગિતા અને વ્યવસ્થાપન", + "webSearch": "વેબ શોધ", + "webSearchDesc": "સ્વચાલિત ફેલઓવર અને કૅશિંગ સાથે બહુવિધ પ્રદાતાઓમાં એકીકૃત વેબ શોધ", + "searchProvider": "શોધ પ્રદાતા", + "searchProviderDesc": "આ પ્રદાતાનો ઉપયોગ POST /v1/search દ્વારા વેબ શોધ માટે થાય છે. કોઈ મોડેલ કૉન્ફિગરેશનની જરૂર નથી — API કી કનેક્ટ થયા પછી શોધ પ્રદાતાઓ ઉપયોગ માટે તૈયાર હોય છે.", + "enableCloudTitle": "Cloud Proxy સક્ષમ કરો", + "whatYouGet": "તમને શું મળશે", + "cloudBenefitAccess": "વિશ્વમાં ગમે ત્યાંથી તમારા API ને ઍક્સેસ કરો", + "cloudBenefitShare": "તમારી ટીમ સાથે એન્ડપોઇન્ટ સરળતાથી શેર કરો", + "cloudBenefitPorts": "પોર્ટ્સ ખોલવાની કે ફાયરવૉલ કૉન્ફિગર કરવાની જરૂર નથી", + "cloudBenefitEdge": "ઝડપી વૈશ્વિક એજ નેટવર્ક", + "cloudSessionNote": "Cloud તમારા ઑથ સેશનને 1 દિવસ સુધી રાખશે. જો તેનો ઉપયોગ નહીં થાય, તો તે આપમેળે કાઢી નાખવામાં આવશે.", + "cloudUnstableNote": "હાલમાં કેટલાક કિસ્સાઓમાં Claude Code OAuth સાથે Cloud અસ્થિર છે.", + "cloudConnected": "Cloud Proxy કનેક્ટ થયું!", + "connectingToCloud": "Cloud સાથે કનેક્ટ થઈ રહ્યું છે...", + "verifyingConnection": "કનેક્શન ચકાસી રહ્યું છે...", + "connecting": "કનેક્ટ થઈ રહ્યું છે...", + "verifying": "ચકાસી રહ્યું છે...", + "connected": "કનેક્ટ થયું!", + "disableCloudTitle": "Cloud Proxy અક્ષમ કરો", + "disableWarning": "બધા ઑથ સેશન્સ Cloud માંથી કાઢી નાખવામાં આવશે.", + "syncingData": "નવીનતમ ડેટા સિંક થઈ રહ્યો છે...", + "disablingCloud": "Cloud અક્ષમ થઈ રહ્યું છે...", + "syncing": "સિંક થઈ રહ્યું છે...", + "disabling": "અક્ષમ કરવામાં આવી રહ્યું છે...", + "cloudConnectedVerified": "Cloud Proxy કનેક્ટ અને ચકાસવામાં આવ્યું!", + "connectedVerificationPending": "કનેક્ટ થયું — ચકાસણી બાકી છે", + "connectedVerificationPendingWithError": "કનેક્ટ થયું — ચકાસણી બાકી છે: {error}", + "cloudDisabledSuccess": "Cloud સફળતાપૂર્વક અક્ષમ કરવામાં આવ્યું", + "syncedSuccess": "સફળતાપૂર્વક સિંક થયું", + "failedDisable": "Cloud અક્ષમ કરવામાં નિષ્ફળતા", + "failedEnable": "Cloud સક્ષમ કરવામાં નિષ્ફળતા", + "cloudRequestTimeout": "Cloud વિનંતીનો સમય સમાપ્ત થયો", + "cloudRequestFailed": "Cloud વિનંતી નિષ્ફળ ગઈ", + "cloudWorkerUnreachable": "Cloud worker સુધી પહોંચી શકાયું નહીં. ખાતરી કરો કે cloud service ચાલી રહી છે (npm run dev in /cloud).", + "connectionFailed": "કનેક્શન નિષ્ફળ ગયું", + "syncFailed": "Cloud ડેટા સિંક કરવામાં નિષ્ફળતા", "cloudflaredTitle": "Cloudflare Quick Tunnel", - "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredDescription": "આ એન્ડપોઇન્ટ માટે Cloudflare Quick Tunnel બનાવો.", + "cloudflaredUrlNotice": "કામચલાઉ Cloudflare Quick Tunnel બનાવે છે. દરેક પુનઃપ્રારંભ પછી URL બદલાય છે.", + "cloudflaredEnable": "Tunnel સક્ષમ કરો", + "cloudflaredInstallAndEnable": "ઇન્સ્ટોલ કરો અને સક્ષમ કરો", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "ચાલુ છે", + "cloudflaredStarting": "શરૂ થઈ રહ્યું છે", + "cloudflaredStoppedState": "બંધ છે", + "cloudflaredNotInstalled": "ઇન્સ્ટોલ કરેલું નથી", + "cloudflaredUnsupported": "સમર્થિત નથી", + "cloudflaredError": "ભૂલ", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", - "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after every restart.", - "cloudflaredUnsupportedNote": "This platform is not supported for managed installs. Install cloudflared manually or point CLOUDFLARED_BIN to an existing binary.", + "cloudflaredTemporaryNote": "Quick Tunnel URLs કામચલાઉ હોય છે અને દરેક પુનઃપ્રારંભ પછી બદલાશે.", + "cloudflaredUnsupportedNote": "મેનેજ્ડ ઇન્સ્ટોલ માટે આ પ્લેટફોર્મ સમર્થિત નથી. cloudflared મેન્યુઅલી ઇન્સ્ટોલ કરો અથવા CLOUDFLARED_BIN ને હાલની બાઇનરી તરફ નિર્દેશિત કરો.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", - "providerModelsTitle": "{provider} — Models", - "noModelsForProvider": "No models available for this provider.", + "cloudflaredLastError": "છેલ્લી ભૂલ: {error}", + "providerModelsTitle": "{provider} — મોડલ્સ", + "noModelsForProvider": "આ પ્રદાતા માટે કોઈ મોડલ ઉપલબ્ધ નથી.", "chat": "Chat", - "embedding": "Embedding", - "image": "Image", - "custom": "custom", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "embedding": "એમ્બેડિંગ", + "image": "છબી", + "custom": "કસ્ટમ", + "modelsCount": "{count, plural, one {# મોડલ} other {# મોડલ્સ}}", + "sectionTitle": "ઇન્ટિગ્રેશન સપાટી", + "sectionDescription": "OpenAI-સુસંગત APIs અને ઓપરેશનલ પ્રોટોકોલ એન્ડપોઇન્ટ્સ", "tabApis": "એપીઆઈઝ", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "પ્રોટોકોલ્સ", + "tabsAria": "એન્ડપોઇન્ટ વિભાગો", + "protocolsTitle": "પ્રોટોકોલ્સ", + "protocolsDescription": "MCP અને A2A સમર્પિત અવલોકનક્ષમતા અને નિયંત્રણો ધરાવતા પ્રથમ-શ્રેણીના એન્ડપોઇન્ટ્સ છે.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "stdio મારફતે Model Context Protocol", + "a2aCardTitle": "A2A સર્વર", + "a2aCardDescription": "Agent2Agent JSON-RPC એન્ડપોઇન્ટ", + "protocolToolsLabel": "ટૂલ્સ", + "protocolTasksLabel": "કાર્યો", + "protocolActiveStreamsLabel": "સક્રિય સ્ટ્રીમ્સ", + "protocolLastActivity": "છેલ્લી પ્રવૃત્તિ", + "quickStart": "ઝડપી શરૂઆત", + "openMcpDashboard": "MCP વ્યવસ્થાપન ખોલો", + "openA2aDashboard": "A2A વ્યવસ્થાપન ખોલો", + "mcpQuickStartTitle": "MCP ઝડપી શરૂઆત", + "mcpQuickStartStep1": "MCP સર્વરને `omniroute --mcp` દ્વારા ચલાવો.", + "mcpQuickStartStep2": "stdio ટ્રાન્સપોર્ટ પર કનેક્ટ થવા માટે તમારા MCP ક્લાયન્ટને કૉન્ફિગર કરો.", + "mcpQuickStartStep3": "`omniroute_get_health` અને `omniroute_list_combos` જેવા ટૂલ્સનો ઉપયોગ કરો.", + "a2aQuickStartTitle": "A2A ઝડપી શરૂઆત", + "a2aQuickStartStep1": "`/.well-known/agent.json` પર એજન્ટ કાર્ડ શોધો.", + "a2aQuickStartStep2": "`message/send` અથવા `message/stream`નો ઉપયોગ કરીને `POST /a2a` પર JSON-RPC વિનંતીઓ મોકલો.", + "a2aQuickStartStep3": "`tasks/get` અને `tasks/cancel`નો ઉપયોગ કરીને કાર્યોને ટ્રૅક અને નિયંત્રિત કરો.", + "completionsLegacy": "કમ્પ્લીશન્સ (લેગસી)", + "completionsLegacyDesc": "લેગસી OpenAI ટેક્સ્ટ કમ્પ્લીશન્સ — પ્રોમ્પ્ટ સ્ટ્રિંગ અને મેસેજિસ ઍરે ફોર્મેટ બંને સ્વીકારે છે", "messagesApi": "સંદેશાઓ", "messagesApiDesc": "ક્લાઉડ-સુસંગત પ્રદાતાઓ માટે મૂળ એન્થ્રોપિક સંદેશાઓ API ફોર્મેટ", "imageEdits": "છબી સંપાદનો", @@ -4022,41 +4022,41 @@ "batchApiDesc": "અસુમેળ રીતે વિનંતીઓના મોટા બેચ પર પ્રક્રિયા કરો (OpenAI-સુસંગત)", "filesApi": "ફાઇલ્સ API", "filesApiDesc": "બેચ પ્રોસેસિંગ માટે ફાઇલો અપલોડ કરો અને મેનેજ કરો", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "વિડિયો જનરેશન", + "videoDesc": "ComfyUI અને Stable Video Diffusion જેવા AI મોડલ્સનો ઉપયોગ કરીને વિડિયો બનાવો.", + "tailscaleRequestFailed": "Tailscale સ્થિતિ લોડ કરવામાં નિષ્ફળતા", + "tailscaleEnableFailed": "Tailscale Funnel સક્ષમ કરવામાં નિષ્ફળતા", + "tailscaleWaitingForLogin": "ખુલેલી બ્રાઉઝર ટૅબમાં Tailscale લૉગિન પૂર્ણ કરો. OmniRoute આપમેળે ફરી પ્રયાસ કરશે.", + "tailscaleLoginTimedOut": "Tailscale લૉગિનની રાહ જોવાનો સમય સમાપ્ત થયો", + "tailscaleWaitingForFunnel": "ખુલેલી બ્રાઉઝર ટૅબમાં આ ઉપકરણ માટે Funnel સક્ષમ કરો. OmniRoute તપાસ કરવાનું ચાલુ રાખશે.", + "tailscaleFunnelTimedOut": "Tailscale Funnel સક્ષમ થવાની રાહ જોવાનો સમય સમાપ્ત થયો", + "tailscaleStarted": "Tailscale Funnel સક્ષમ થયું", + "tailscaleDisableFailed": "Tailscale Funnel અક્ષમ કરવામાં નિષ્ફળતા", + "tailscaleStopped": "Tailscale Funnel અક્ષમ થયું", + "tailscaleInstallFailed": "Tailscale ઇન્સ્ટોલ કરવામાં નિષ્ફળતા", + "tailscaleInstallProgress": "કાર્ય ચાલુ છે...", + "tailscaleInstalled": "Tailscale સફળતાપૂર્વક ઇન્સ્ટોલ થયું", + "tailscaleRunning": "ચાલુ છે", + "tailscaleNeedsLogin": "લૉગિન જરૂરી છે", + "tailscaleStoppedState": "બંધ છે", + "tailscaleNotInstalled": "ઇન્સ્ટોલ કરેલ નથી", + "tailscaleUnsupported": "અસમર્થિત", + "tailscaleError": "ભૂલ", + "tailscaleDisable": "Funnel બંધ કરો", + "tailscaleInstallAndEnable": "ઇન્સ્ટોલ અને સક્ષમ કરો", + "tailscaleLoginAndEnable": "લૉગિન કરો અને સક્ષમ કરો", + "tailscaleEnable": "Funnel સક્ષમ કરો", + "tailscaleUrlNotice": "તમારા Tailscale .ts.net સરનામાનો ઉપયોગ કરે છે. પ્રથમ ઉપયોગ વખતે લૉગિન અને Funnel મંજૂરી જરૂરી હોઈ શકે છે.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", - "tailscaleSudoLabel": "Sudo Password (required on macOS/Linux)", + "tailscaleNeedsLoginHint": "આ મશીનને Tailscale સાથે પ્રમાણિત કરો, પછી Funnel સક્ષમ કરો.", + "tailscaleBinaryPath": "બાઇનરી: {path}", + "tailscaleLastError": "છેલ્લી ભૂલ: {error}", + "tailscaleInstallTitle": "Tailscale ઇન્સ્ટોલ કરો", + "tailscaleInstallIntro": "આ મશીન પર Tailscale ઇન્સ્ટોલ કરે છે અને Funnel સક્ષમ કરવા માટે OmniRoute તૈયાર કરે છે.", + "tailscaleInstallPasswordHint": "macOS અને Linux પર, પૅકેજ ઇન્સ્ટોલ કરવા અને ડિમન શરૂ કરવા માટે sudo જરૂરી હોઈ શકે છે.", + "tailscaleSudoPlaceholder": "વૈકલ્પિક sudo પાસવર્ડ", + "tailscaleInstalling": "ઇન્સ્ટોલ થઈ રહ્યું છે", + "tailscaleSudoLabel": "Sudo પાસવર્ડ (macOS/Linux પર જરૂરી)", "ngrokTitle": "ngrok ટનલ", "ngrokRunning": "ચાલી રહી છે", "ngrokStarting": "શરૂ કરી રહ્યા છીએ", @@ -4108,7 +4108,7 @@ "all": "બધા", "more": "+{count} વધુ", "showInternalTooltip": "આંતરિક રૂટ્સ બતાવો અથવા છુપાવો (ડિફૉલ્ટ રૂપે છુપાયેલ)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Bearer પ્રમાણીકરણ", "requestBody": "વિનંતી બોડી", "close": "બંધ કરો", "tryIt": "અજમાવી જુઓ", @@ -4144,9 +4144,9 @@ "tierPublic": "સાર્વજનિક", "hideInternal": "આંતરિક છુપાવો", "showInternal": "આંતરિક બતાવો", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "કસ્ટમ સિસ્ટમ પ્રોમ્પ્ટ", + "customSystemPromptDescription": "દરેક મૉડલ વિનંતીમાં કસ્ટમ સિસ્ટમ પ્રોમ્પ્ટ ઉમેરો", + "customSystemPromptPlaceholder": "દા.ત. હંમેશા ચાંચિયાની ભાષામાં જવાબ આપો...", "obsidianEnterToken": "કૃપા કરીને Obsidian API ટોકન દાખલ કરો", "obsidianConnectFailed": "કનેક્ટ કરવામાં નિષ્ફળ", "obsidianConnectionFailed": "કનેક્શન નિષ્ફળ થયું", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "ટોકન કન્ફિગર કરાયું છે. Notion ટૂલ્સ MCP દ્વારા ઉપલબ્ધ છે." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "એન્ડપોઇન્ટ પ્રૉક્સી", + "tabApiEndpoints": "API એન્ડપોઇન્ટ્સ", + "apiEndpointsTitle": "API એન્ડપોઇન્ટ્સ", + "apiEndpointsDescription": "બૅકએન્ડ API એન્ડપોઇન્ટ્સ, જેનો ઉપયોગ અન્ય ઍપ્લિકેશનો અને સેવાઓ કરી શકે છે. આ વિભાગમાં દસ્તાવેજીકરણ અને પરીક્ષણ ક્ષમતાઓ સાથે ઉપલબ્ધ તમામ REST APIsની સૂચિ હશે.", + "comingSoon": "ટૂંક સમયમાં આવી રહ્યું છે", + "plannedFeatures": "આયોજિત સુવિધાઓ", + "featureRestApi": "ઇન્ટરેક્ટિવ દસ્તાવેજીકરણ સાથે REST API એન્ડપોઇન્ટ કૅટલૉગ", + "featureWebhooks": "Webhook ગોઠવણી અને ઇવેન્ટ સબ્સ્ક્રિપ્શન્સ", + "featureSwagger": "OpenAPI / Swagger સ્પેકનું સ્વચાલિત જનરેશન", + "featureAuth": "દરેક એન્ડપોઇન્ટ માટે API કી અને OAuth સ્કોપનું સંચાલન" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP ડૅશબોર્ડ લોડ થઈ રહ્યું છે...", + "activate": "સક્રિય કરો", + "deactivate": "નિષ્ક્રિય કરો", + "confirmSwitchCombo": "કોમ્બો \"{combo}\"ને {action} કરવાની પુષ્ટિ કરો?", + "switchComboFailed": "કોમ્બોની સ્થિતિ બદલવામાં નિષ્ફળતા.", + "switchComboSuccess": "કોમ્બો \"{combo}\" અપડેટ થયો.", + "confirmApplyProfile": "રેઝિલિયન્સ પ્રોફાઇલ \"{profile}\" લાગુ કરવી છે?", + "applyProfileFailed": "રેઝિલિયન્સ પ્રોફાઇલ લાગુ કરવામાં નિષ્ફળતા.", + "applyProfileSuccess": "પ્રોફાઇલ \"{profile}\" લાગુ થઈ.", + "confirmResetBreakers": "બધા સર્કિટ બ્રેકર્સ રીસેટ કરવા છે?", + "resetBreakersFailed": "સર્કિટ બ્રેકર્સ રીસેટ કરવામાં નિષ્ફળતા.", + "resetBreakersSuccess": "સર્કિટ બ્રેકર્સ રીસેટ થઈ ગયા.", + "processStatus": "પ્રક્રિયાની સ્થિતિ", "online": "Online", "offline": "Offline", "disableLabel": "{label} અક્ષમ કરો", @@ -4237,119 +4237,119 @@ "mcpStep2": "stdio ટ્રાન્સપોર્ટ પર કનેક્ટ કરવા માટે તમારા MCP ક્લાયન્ટને કન્ફિગર કરો.", "mcpStep3": "{code1} અને {code2} જેવા ટૂલ્સ ઇનવોક કરો.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "સત્રનો અપટાઇમ", + "lastHeartbeat": "છેલ્લું હાર્ટબીટ", + "activity24h": "પ્રવૃત્તિ (24 કલાક)", + "totalCalls": "કુલ કૉલ્સ", + "successRate": "સફળતા દર", + "avgLatency": "સરેરાશ વિલંબ", + "topTools": "ટોચનાં ટૂલ્સ", + "noToolCalls24h": "છેલ્લા 24 કલાકમાં કોઈ ટૂલ કૉલ્સ નથી.", + "runtimeDetails": "રનટાઇમ વિગતો", + "transport": "ટ્રાન્સપોર્ટ", + "scopesEnforced": "સ્કોપ્સ લાગુ કરેલા", + "yes": "હા", + "no": "ના", + "lastCall": "છેલ્લો કૉલ", + "heartbeatPath": "હાર્ટબીટ પાથ", + "operationalControls": "સંચાલન નિયંત્રણો", + "switchCombo": "કોમ્બો ટૉગલ કરો", + "inactive": "નિષ્ક્રિય", + "active": "સક્રિય", + "activateCombo": "કોમ્બો સક્રિય કરો", + "deactivateCombo": "કોમ્બો નિષ્ક્રિય કરો", + "applyResilienceProfile": "સ્થિતિસ્થાપકતા પ્રોફાઇલ લાગુ કરો", + "profileAggressive": "આક્રમક", + "profileBalanced": "સંતુલિત", + "profileConservative": "રૂઢિચુસ્ત", + "applyProfile": "પ્રોફાઇલ લાગુ કરો", + "resetCircuitBreakers": "સર્કિટ બ્રેકર્સ રીસેટ કરો", + "resetCircuitBreakersHelp": "પ્રદાતાઓ માટે વર્તમાન બ્રેકર સ્થિતિ અને નિષ્ફળતા કાઉન્ટર્સ સાફ કરે છે.", + "resetAllBreakers": "બધા બ્રેકર્સ રીસેટ કરો", + "toolsAndScopes": "ટૂલ્સ અને સ્કોપ્સ", + "tableTool": "ટૂલ", + "tableScopes": "સ્કોપ્સ", + "tablePhase": "તબક્કો", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "ઑડિટ લૉગ", + "auditSummary": "કૉલ્સ: {total} | પૃષ્ઠ {page}, કુલ {totalPages} માંથી", + "allTools": "બધા ટૂલ્સ", + "allResults": "બધા પરિણામો", + "success": "સફળતા", + "failure": "નિષ્ફળતા", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "ઑડિટ એન્ટ્રીઓ લોડ થઈ રહી છે...", + "noAuditEntriesForFilters": "વર્તમાન ફિલ્ટર્સ માટે કોઈ ઑડિટ એન્ટ્રી મળી નથી.", + "tableTimestamp": "સમયચિહ્ન", + "tableDuration": "અવધિ", + "tableResult": "પરિણામ", + "tableApiKey": "API કી", + "failed": "નિષ્ફળ", + "previous": "પાછલું", + "next": "આગળ", + "apiKeyId": "API કી ID", + "offset": "ઑફસેટ", + "limit": "મર્યાદા", + "tool": "ટૂલ" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A ડૅશબોર્ડ લોડ થઈ રહ્યું છે...", + "confirmCancelTask": "ટાસ્ક {taskId} રદ કરવો છે?", + "cancelTaskFailed": "ટાસ્ક રદ કરવામાં નિષ્ફળતા.", + "cancelTaskSuccess": "ટાસ્ક {taskId} રદ કરવામાં આવ્યો.", + "smokeSendFailed": "message/send સ્મોક ટેસ્ટ નિષ્ફળ ગયો.", + "smokeSendSuccessWithTask": "message/send સફળ થયું (ટાસ્ક {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream સ્મોક ટેસ્ટ નિષ્ફળ ગયો.", + "smokeStreamSuccessWithTask": "message/stream સફળ થયું (ટાસ્ક {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream ટાસ્ક ID વિના પૂર્ણ થયું.", + "health": "આરોગ્ય", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "કુલ ટાસ્ક", + "activeStreams": "સક્રિય સ્ટ્રીમ્સ", + "lastTask": "છેલ્લો ટાસ્ક", + "taskStateOverview": "ટાસ્કની સ્થિતિની ઝાંખી", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "સબમિટ કરેલ", + "working": "પ્રગતિમાં", + "completed": "પૂર્ણ", + "failed": "નિષ્ફળ", + "cancelled": "રદ કરેલ" }, - "agentCard": "Agent card", + "agentCard": "એજન્ટ કાર્ડ", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "વર્ઝન", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "ક્ષમતાઓ", + "agentCardNotAvailable": "એજન્ટ કાર્ડ ઉપલબ્ધ નથી.", + "quickValidation": "ઝડપી માન્યતા", + "quickValidationDescription": "લાઇવ `/a2a` એન્ડપોઇન્ટ દ્વારા સ્મોક કૉલ્સ ચલાવે છે.", + "runMessageSend": "message/send ચલાવો", + "runMessageStream": "message/stream ચલાવો", + "taskManagement": "ટાસ્ક વ્યવસ્થાપન", + "taskSummary": "{total} ટાસ્ક | પૃષ્ઠ {page} / {totalPages}", + "allStates": "બધા", + "allSkills": "બધી કુશળતાઓ", + "loadingTasks": "ટાસ્ક લોડ થઈ રહ્યા છે...", + "noTasksForFilters": "વર્તમાન ફિલ્ટર્સ માટે કોઈ ટાસ્ક મળ્યા નથી.", + "tableTask": "ટાસ્ક", + "tableSkill": "કુશળતા", + "tableState": "સ્થિતિ", + "tableUpdated": "અપડેટ થયેલ", + "tableActions": "ક્રિયાઓ", + "view": "જુઓ", + "cancel": "રદ કરો", + "previous": "પાછલું", + "next": "આગળનું", + "taskDetail": "ટાસ્કની વિગતો", + "close": "બંધ કરો", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "ઇવેન્ટ્સ", + "artifacts": "આર્ટિફેક્ટ્સ", + "tablePhase": "ટેબલ તબક્કો", + "offset": "ઓફસેટ", + "limit": "મર્યાદા", + "skill": "કુશળતા", "rpcEndpoint": "પોસ્ટ/a2a", "rpcMethodSend": "સંદેશ/મોકલો", "rpcMethodStream": "સંદેશ/સ્ટ્રીમ", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "ક્રિયાઓ", + "addMemory": "મેમરી ઉમેરો", + "allTypes": "બધા પ્રકારો", "cancel": "રદ કરો", "checkHealth": "આરોગ્ય તપાસો", "checkingHealth": "તપાસી રહ્યું છે...", @@ -4382,13 +4382,13 @@ "howWorksToggle": "તે કેવી રીતે કાર્ય કરે છે", "howWorksContent": "1. સ્વચાલિત નિષ્કર્ષણ: દરેક પ્રતિભાવના અંતે, તથ્યો અને એપિસોડ્સ આપમેળે શોધી કાઢવામાં આવે છે અને સાચવવામાં આવે છે.\n2. પુનઃપ્રાપ્તિ: દરેક પ્રતિભાવ પહેલાં, FTS5 (ચોક્કસ), વેક્ટર (સિમેન્ટીક), અથવા હાઇબ્રિડ RRF દ્વારા સૌથી સંબંધિત મેમરીઝ શોધવામાં આવે છે.\n3. ઇન્જેક્શન: પ્રતિભાવ ગુણવત્તા સુધારવા માટે સહાયક સંદર્ભમાં સંબંધિત મેમરીઝ ઇન્જેક્ટ કરવામાં આવે છે.\n4. સંચાલન: જૂની મેમરીઝ જોવા, સંપાદિત કરવા, નિકાસ કરવા અને સંકુચિત કરવા માટે આ પૃષ્ઠનો ઉપયોગ કરો." }, - "content": "Content", + "content": "સામગ્રી", "contentPlaceholder": "યાદ રાખવા માટે મૂલ્ય અથવા JSON સામગ્રી", - "created": "Created", - "delete": "Delete", + "created": "બનાવેલ", + "delete": "કાઢી નાખો", "deleteConfirmDesc": "આ ક્રિયા પૂર્વવત્ કરી શકાતી નથી. મેમરી કાયમી ધોરણે દૂર કરવામાં આવશે.", "deleteConfirmTitle": "મેમરી કાઢી નાખવી છે?", - "description": "View and manage stored memory entries", + "description": "સંગ્રહિત મેમરી એન્ટ્રીઓ જુઓ અને સંચાલિત કરો", "editMemory": "મેમરી સંપાદિત કરો", "editModal": { "title": "મેમરી સંપાદિત કરો", @@ -4444,20 +4444,20 @@ "configureCta": "રૂપરેખાંકિત કરો", "vectorStoreInstallHint": "વેક્ટર શોધ સક્ષમ કરવા માટે: npm install sqlite-vec (નેટિવ Node.js ની જરૂર છે, WASM ની નહીં), પછી ફરીથી પ્રારંભ કરો." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "એપિસોડિક", + "export": "નિકાસ કરો", + "factual": "તથ્યાત્મક", "healthUnknown": "આરોગ્ય અજ્ઞાત", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "સફળતા દર", + "import": "આયાત કરો", "importError": "ફાઇલ આયાત કરવામાં નિષ્ફળ", "importResult": "{imported} આયાત કરવામાં આવી, {skipped} અવગણવામાં આવી", - "key": "Key", + "key": "કી", "keyPlaceholder": "દા.ત. user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "સ્મૃતિઓ", "next": "આગળ", - "noMemories": "No memories found", + "noMemories": "કોઈ સ્મૃતિઓ મળી નથી", "pageInfo": "પૃષ્ઠ {page} માંથી {totalPages} ({total} કુલ)", "pipelineError": "પાઇપલાઇન ભૂલ", "pipelineOk": "પાઇપલાઇન બરાબર ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "પૂર્વાવલોકન મેળવવામાં નિષ્ફળ" }, "previous": "ગત", - "procedural": "Procedural", + "procedural": "પ્રક્રિયાત્મક", "qdrant": { "title": "Qdrant (વેક્ટર સ્ટોર ટાયર 2)", "description": "સ્કેલેબલ સિમેન્ટીક શોધ માટે વૈકલ્પિક Qdrant એકીકરણ", @@ -4534,8 +4534,8 @@ }, "save": "સાચવો", "saving": "સાચવી રહ્યું છે...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "સ્મૃતિઓ શોધો...", + "semantic": "અર્થાત્મક", "summarize": { "title": "જૂની મેમરીઝને કોમ્પેક્ટ કરો", "noCandidates": "કોમ્પેક્શન માટે કોઈ મેમરીઝ પાત્ર નથી (માપદંડ: >30 દિવસ જૂની).", @@ -4547,8 +4547,8 @@ "playground": "પ્લેગ્રાઉન્ડ", "engine": "એન્જિન" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "સ્મૃતિ વ્યવસ્થાપન", + "tokensUsed": "વપરાયેલા ટોકન્સ", "tooltip": { "totalEntries": "આ API કી માટે સંગ્રહિત કુલ મેમરીઝ", "tokensUsed": "સક્રિય મેમરીઝ દ્વારા રોકાયેલા અંદાજિત કુલ ટોકન્સ", @@ -4558,15 +4558,15 @@ "procedural": "પ્રક્રિયાઓ, વર્કફ્લો અને સૂચનાઓ જે સહાયકે અનુસરવી જોઈએ", "semantic": "ખ્યાલો, પસંદગીઓ અને ડોમેન જ્ઞાન" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "કુલ એન્ટ્રીઓ", + "type": "પ્રકાર", "memoryEnabled": "મેમરી સક્ષમ છે" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "કૌશલ્યો", + "description": "AI કૌશલ્યોનું સંચાલન અને નિરીક્ષણ કરો", + "skillsTab": "કૌશલ્યો", + "executionsTab": "અમલીકરણો", "selectSkillToInspect": "તપાસવા માટે ડાબી બાજુએથી એક કૌશલ્ય પસંદ કરો.", "schemaTab": "સ્કીમા", "handlerTab": "હેન્ડલર", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "ટેસ્ટ રન કરો (પ્લેસહોલ્ડર)", "setModeAria": "મોડ {mode} સેટ કરો", "uninstallSkill": "કૌશલ્ય અનઇન્સ્ટોલ કરો", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "સૅન્ડબૉક્સ", + "loading": "કૌશલ્યો લોડ થઈ રહ્યાં છે...", + "noSkills": "કોઈ કૌશલ્યો મળ્યાં નથી", + "noExecutions": "કોઈ અમલીકરણો મળ્યાં નથી", + "enabled": "સક્ષમ", + "disabled": "અક્ષમ", "delete": "ડીલીટ કરો", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "આવૃત્તિ", + "tableDescription": "વર્ણન", + "skill": "કૌશલ્ય", + "status": "સ્થિતિ", + "duration": "અવધિ", + "time": "સમય", + "sandboxConfig": "સૅન્ડબૉક્સ રૂપરેખાંકન", + "cpuLimit": "CPU મર્યાદા", + "cpuLimitDesc": "પ્રતિ કૌશલ્ય મહત્તમ અમલીકરણ સમય", + "memoryLimit": "મેમરી મર્યાદા", + "memoryLimitDesc": "મહત્તમ મેમરી ફાળવણી", + "timeout": "સમયસમાપ્તિ", + "timeoutDesc": "પ્રતિસાદ માટે મહત્તમ પ્રતીક્ષા સમય", + "networkAccess": "નેટવર્ક ઍક્સેસ", + "networkAccessDesc": "આઉટબાઉન્ડ નેટવર્ક વિનંતીઓને મંજૂરી આપો", + "mode": "મોડ", "q": "Q", "filterSkillsPlaceholder": "નામ, વર્ણન અથવા ટેગ દ્વારા કુશળતા ફિલ્ટર કરો", "allModes": "બધા મોડ્સ", @@ -4623,13 +4623,13 @@ "searchMarketplacePlaceholder": "કૌશલ્યો શોધો...", "searchMarketplace": "માર્કેટપ્લેસ શોધો", "marketplaceEmpty": "માર્કેટપ્લેસમાં કોઈ કૌશલ્ય મળ્યું નથી", - "marketplaceError": "Search failed", + "marketplaceError": "શોધ નિષ્ફળ રહી", "installingFromMarketplace": "માર્કેટપ્લેસમાંથી ઇન્સ્ટોલ થઈ રહ્યું છે...", "popularSkills": "લોકપ્રિય કૌશલ્યો", "skillsMarketplace": "કૌશલ્ય બજાર", "searching": "શોધી રહ્યું છે...", "pageInfo": "પાનું {page} માંથી {totalPages} (કુલ {total})", - "previous": "Previous", + "previous": "પાછલું", "next": "આગળ", "activeProvider": "સક્રિય પ્રદાતા:", "changeInSettings": "આને સેટિંગ્સ → મેમરી અને કૌશલ્યોમાં બદલો.", @@ -4642,90 +4642,90 @@ "installSkill": "કૌશલ્ય સ્થાપિત કરો" }, "health": { - "title": "System Health", - "description": "Real-time monitoring of your OmniRoute instance", - "healthy": "Healthy", - "degraded": "Degraded", - "down": "Down", - "uptime": "Uptime", - "memory": "Memory", - "memoryRss": "Memory (RSS)", - "heap": "Heap", + "title": "સિસ્ટમની સ્થિતિ", + "description": "તમારા OmniRoute ઇન્સ્ટન્સનું રીઅલ-ટાઇમ મોનિટરિંગ", + "healthy": "સ્વસ્થ", + "degraded": "ક્ષીણ", + "down": "બંધ", + "uptime": "અપટાઇમ", + "memory": "મેમરી", + "memoryRss": "મેમરી (RSS)", + "heap": "હીપ", "cpu": "CPU", - "database": "Database", - "version": "Version", - "lastCheck": "Last Check", - "providerHealth": "Provider Health", - "systemMetrics": "System Metrics", - "tokenHealth": "Token Health", - "refreshAll": "Refresh All", - "checkNow": "Check Now", - "loadingHealth": "Loading health data...", - "failedToLoad": "Failed to load health data: {error}", - "retry": "Retry", - "allOperational": "All systems operational", - "issuesDetected": "System issues detected", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", - "updatedAt": "Updated {time}", - "latency": "Latency", + "database": "ડેટાબેઝ", + "version": "વર્ઝન", + "lastCheck": "છેલ્લી તપાસ", + "providerHealth": "પ્રદાતાની સ્થિતિ", + "systemMetrics": "સિસ્ટમ મેટ્રિક્સ", + "tokenHealth": "ટોકનની સ્થિતિ", + "refreshAll": "બધું રિફ્રેશ કરો", + "checkNow": "હમણાં તપાસો", + "loadingHealth": "સ્થિતિનો ડેટા લોડ થઈ રહ્યો છે...", + "failedToLoad": "સ્થિતિનો ડેટા લોડ કરવામાં નિષ્ફળતા: {error}", + "retry": "ફરી પ્રયાસ કરો", + "allOperational": "બધી સિસ્ટમ કાર્યરત છે", + "issuesDetected": "સિસ્ટમમાં સમસ્યાઓ મળી આવી", + "healthVerdictReady": "OmniRoute તૈયાર છે", + "healthVerdictActionRequired": "સંપૂર્ણ કામગીરી પુનઃસ્થાપિત કરવા માટે પગલાં જરૂરી છે", + "healthVerdictCoolingDown": "તાજેતરના ફેરફારો પછી કૂલ ડાઉન થઈ રહ્યું છે", + "healthSubtitle": "સિસ્ટમની સ્થિતિની તપાસ", + "advancedDiagnosticsTitle": "અદ્યતન નિદાન", + "hide": "છુપાવો", + "show": "બતાવો", + "updatedAt": "{time} પર અપડેટ થયું", + "latency": "વિલંબતા", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", "millisecondsShort": "{value}ms", "notAvailable": "—", - "totalRequests": "Total requests", - "noDataYet": "No data yet", - "promptCache": "Prompt Cache", - "entries": "Entries", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "signatureCache": "Signature Cache", - "signatureDefaults": "Defaults", - "signatureTool": "Tool", - "signatureFamily": "Family", - "signatureSession": "Session", - "recovering": "Recovering", - "noCBData": "No circuit breaker data available. Make some requests first.", - "providerHealthStatusAria": "Provider health status", - "issuesLabel": "Issues Detected", - "operational": "Operational", - "providers": "Providers", - "configuredProvidersLabel": "Configured in dashboard", - "configuredProvidersHint": "Providers with credentials saved in /dashboard/providers, regardless of runtime state.", - "activeProviders": "{count} active", - "activeProvidersHint": "Configured providers currently enabled for routing requests.", - "monitoredProviders": "{count} monitored", - "monitoredProvidersHint": "Providers currently tracked by circuit-breaker health monitors.", - "healthyCount": "{count} healthy", + "totalRequests": "કુલ વિનંતીઓ", + "noDataYet": "હજુ સુધી કોઈ ડેટા નથી", + "promptCache": "પ્રોમ્પ્ટ કૅશ", + "entries": "એન્ટ્રીઓ", + "hitRate": "હિટ રેટ", + "hitsMisses": "હિટ્સ / મિસિસ", + "signatureCache": "સિગ્નેચર કૅશ", + "signatureDefaults": "મૂળભૂત સેટિંગ્સ", + "signatureTool": "સાધન", + "signatureFamily": "પરિવાર", + "signatureSession": "સત્ર", + "recovering": "પુનઃપ્રાપ્ત થઈ રહ્યું છે", + "noCBData": "કોઈ સર્કિટ બ્રેકર ડેટા ઉપલબ્ધ નથી. પહેલાં કેટલીક વિનંતીઓ કરો.", + "providerHealthStatusAria": "પ્રદાતાની આરોગ્ય સ્થિતિ", + "issuesLabel": "સમસ્યાઓ મળી", + "operational": "કાર્યરત", + "providers": "પ્રદાતાઓ", + "configuredProvidersLabel": "ડૅશબોર્ડમાં ગોઠવેલ", + "configuredProvidersHint": "રનટાઇમ સ્થિતિને ધ્યાનમાં લીધા વિના, /dashboard/providers માં ઓળખપત્રો સાચવેલા પ્રદાતાઓ.", + "activeProviders": "{count} સક્રિય", + "activeProvidersHint": "રાઉટિંગ વિનંતીઓ માટે હાલમાં સક્ષમ કરેલા ગોઠવાયેલ પ્રદાતાઓ.", + "monitoredProviders": "{count} પર દેખરેખ રાખવામાં આવે છે", + "monitoredProvidersHint": "હાલમાં સર્કિટ-બ્રેકર આરોગ્ય મોનિટર દ્વારા ટ્રૅક કરવામાં આવતા પ્રદાતાઓ.", + "healthyCount": "{count} સ્વસ્થ", "nodeVersion": "Node {version}", - "failures": "{count} failure", - "failuresPlural": "{count} failures", - "lastFailure": "Last", - "rateLimitStatus": "Rate Limit Status", - "activeLimiters": "{count} active limiter", - "activeLimitersPlural": "{count} active limiters", - "queued": "Queued", - "queuedCount": "{count} queued", - "running": "running", - "runningCount": "{count} running", + "failures": "{count} નિષ્ફળતા", + "failuresPlural": "{count} નિષ્ફળતાઓ", + "lastFailure": "છેલ્લું", + "rateLimitStatus": "દર મર્યાદાની સ્થિતિ", + "activeLimiters": "{count} સક્રિય મર્યાદક", + "activeLimitersPlural": "{count} સક્રિય મર્યાદકો", + "queued": "કતારમાં", + "queuedCount": "{count} કતારમાં", + "running": "ચાલુ", + "runningCount": "{count} ચાલુ", "ok": "OK", - "activeLockouts": "Active Lockouts", - "resetConfirm": "Reset all circuit breakers to healthy state? This will clear all failure counts and restore all providers to operational status.", - "resetAllTitle": "Reset all circuit breakers to healthy state", - "resetting": "Resetting...", - "resetAll": "Reset All", - "until": "Until {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "activeLockouts": "સક્રિય લૉકઆઉટ્સ", + "resetConfirm": "બધા સર્કિટ બ્રેકર્સને સ્વસ્થ સ્થિતિમાં રીસેટ કરવા માંગો છો? આ તમામ નિષ્ફળતા ગણતરીઓ સાફ કરશે અને બધા પ્રદાતાઓને કાર્યરત સ્થિતિમાં પુનઃસ્થાપિત કરશે.", + "resetAllTitle": "બધા સર્કિટ બ્રેકર્સને સ્વસ્થ સ્થિતિમાં રીસેટ કરો", + "resetting": "રીસેટ થઈ રહ્યું છે...", + "resetAll": "બધું રીસેટ કરો", + "until": "{time} સુધી", + "limitExhausted": "સમાપ્ત", + "learnedFromHeaders": "હેડર્સમાંથી શીખેલું", + "remainingOfLimit": "{remaining}/{limit} બાકી", + "throttleStatus": "થ્રોટલ: {value}", + "lastHeaderUpdate": "હેડર અપડેટ: {age}", "databaseHealth": "ડેટાબેઝ આરોગ્ય", "databaseHealthDescription": "જૂની ક્વોટા/ડોમેન પંક્તિઓ અને તૂટેલા કોમ્બો સંદર્ભોનું નિદાન અને સમારકામ કરો.", "status": "સ્થિતિ", @@ -4851,65 +4851,65 @@ "noTargets": "કોઈ લક્ષ્ય રૂટ ગોઠવેલ નથી." }, "limits": { - "title": "Limits & Quotas", - "rateLimit": "Rate Limit", - "remaining": "Remaining", - "requestsPerMinute": "Requests/min", - "tokensPerMinute": "Tokens/min", - "dailyLimit": "Daily Limit" + "title": "મર્યાદાઓ અને ક્વોટા", + "rateLimit": "દર મર્યાદા", + "remaining": "બાકી", + "requestsPerMinute": "વિનંતીઓ/મિનિટ", + "tokensPerMinute": "ટોકન્સ/મિનિટ", + "dailyLimit": "દૈનિક મર્યાદા" }, "logs": { - "title": "Logs", - "requestLogs": "Request Logs", - "proxyLogs": "Proxy Logs", - "auditLog": "Audit Log", + "title": "લૉગ્સ", + "requestLogs": "વિનંતી લૉગ્સ", + "proxyLogs": "પ્રૉક્સી લૉગ્સ", + "auditLog": "ઑડિટ લૉગ", "console": "Console", - "auditLogDesc": "Administrative actions and security events", - "loading": "Loading...", - "refresh": "Refresh", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", - "showing": "Showing {count} entries (offset {offset})", - "search": "Search", - "timestamp": "Timestamp", - "action": "Action", - "actor": "Actor", - "target": "Target", - "details": "Details", - "ipAddress": "IP Address", + "auditLogDesc": "વહીવટી ક્રિયાઓ અને સુરક્ષા ઘટનાઓ", + "loading": "લોડ થઈ રહ્યું છે...", + "refresh": "રિફ્રેશ કરો", + "filterByAction": "ક્રિયા દ્વારા ફિલ્ટર કરો...", + "filterByActor": "કર્તા દ્વારા ફિલ્ટર કરો...", + "filterEntriesAria": "ઑડિટ લૉગ એન્ટ્રીઓને ફિલ્ટર કરો", + "filterByActionTypeAria": "ક્રિયાના પ્રકાર દ્વારા ફિલ્ટર કરો", + "filterByActorAria": "કર્તા દ્વારા ફિલ્ટર કરો", + "refreshAuditLogAria": "ઑડિટ લૉગ રિફ્રેશ કરો", + "tableAria": "ઑડિટ લૉગ એન્ટ્રીઓ", + "failedFetchAuditLog": "ઑડિટ લૉગ મેળવવામાં નિષ્ફળતા", + "showing": "{count} એન્ટ્રીઓ બતાવી રહ્યાં છીએ (ઑફસેટ {offset})", + "search": "શોધો", + "timestamp": "સમયમુદ્રા", + "action": "ક્રિયા", + "actor": "કર્તા", + "target": "લક્ષ્ય", + "details": "વિગતો", + "ipAddress": "IP સરનામું", "notAvailable": "—", - "noEntries": "No audit log entries found", - "previous": "Previous", - "next": "Next", - "providerWarningTitle": "Provider Warnings", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", - "providerWarningDesc": "Some providers returned warnings during request processing", + "noEntries": "કોઈ ઑડિટ લૉગ એન્ટ્રી મળી નથી", + "previous": "પાછલું", + "next": "આગળ", + "providerWarningTitle": "પ્રદાતાની ચેતવણીઓ", + "viewDetails": "વિગતો જુઓ", + "eventMetadata": "ઘટનાનું મેટાડેટા", + "eventPayload": "ઘટનાનો પેલોડ", + "requestId": "વિનંતી Id", + "providerWarningDesc": "વિનંતી પ્રક્રિયા દરમિયાન કેટલાક પ્રદાતાઓએ ચેતવણીઓ આપી", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", - "auditModalSubtitle": "Event details and metadata", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "offset": "ઑફસેટ", + "limit": "મર્યાદા", + "status": "સ્થિતિ", + "resourceType": "સંસાધન પ્રકાર", + "totalEntries": "કુલ એન્ટ્રીઓ", + "tab": "ટૅબ", + "auditModalSubtitle": "ઇવેન્ટની વિગતો અને મેટાડેટા", + "close": "બંધ કરો", + "runningRequests": "સક્રિય વિનંતીઓ", + "runningRequestsDesc": "હાલમાં ચાલી રહેલી અપસ્ટ્રીમ વિનંતીઓનું રીઅલ-ટાઇમ દૃશ્ય", "clearAll": "બધા સાફ કરો", "confirmClearActiveRequests": "બધી સક્રિય વિનંતીઓ સાફ કરીએ?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "મોડેલ", + "provider": "પ્રદાતા", + "account": "એકાઉન્ટ", + "elapsed": "વીતેલો સમય", "activeStage": "સ્ટેજ", "activeStageUnknown": "હજી સુધી અપસ્ટ્રીમ પર મોકલવામાં આવ્યું નથી", "activeStageRegistered": "નોંધાયેલ", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "રેટ લિમિટ સ્લોટ મેળવ્યો", "activeStageSendingToProvider": "અપસ્ટ્રીમ પર મોકલી રહ્યું છે", "activeStageProviderResponseStarted": "અપસ્ટ્રીમ પ્રતિસાદ શરૂ થયો", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "સંખ્યા", + "payloads": "પેલોડ્સ", + "viewPayloads": "જુઓ", + "activeCount": "{count} સક્રિય", + "clientPayload": "ક્લાયન્ટ વિનંતી પેલોડ", + "upstreamPayload": "અપસ્ટ્રીમ પ્રદાતા પેલોડ", + "upstreamNotSentYet": "હજુ સુધી અપસ્ટ્રીમને મોકલ્યું નથી", + "runningRequestDetailMeta": "એકાઉન્ટ: {account} — વીતેલો સમય: {elapsed}", + "export": "નિકાસ કરો", + "exporting": "નિકાસ થઈ રહી છે...", + "exportFailed": "નિકાસ નિષ્ફળ ગઈ", "cleanHistoryButton": "ઇતિહાસ સાફ કરો", "cleanHistoryTitle": "લોગ ઇતિહાસ સાફ કરવો છે?", "cleanHistoryMessage": "આ કાયમી ધોરણે DATA_DIR/call_logs હેઠળની તમામ વિનંતી લોગ પંક્તિઓ, લેગસી વિગતવાર પંક્તિઓ અને સ્થાનિક આર્ટિફેક્ટ ફાઇલોને સાફ કરે છે. સફાઈ પછી લાઈવ પેજ રિફ્રેશ થશે.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} લોગ એન્ટ્રીઓ, {deletedArtifacts} આર્ટિફેક્ટ્સ અને {deletedDetailedLogs} લેગસી વિગતવાર પંક્તિઓ સાફ કરવામાં આવી.", "cleanHistoryEmpty": "કોઈ વિનંતી લૉગ ઇતિહાસ મળ્યો નથી.", "cleanHistoryFailed": "લૉગ ઇતિહાસ સાફ કરવામાં નિષ્ફળ.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "સમયગાળો", + "lastNHours": "છેલ્લા {hours}", + "defaultRange": "ડિફૉલ્ટ", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "લૉગ્સ મેળવવામાં નિષ્ફળતા", + "copyFailed": "લૉગ એન્ટ્રી કૉપિ કરવામાં નિષ્ફળતા", + "copyLogEntry": "લૉગ એન્ટ્રી કૉપિ કરો", "filterByLevel": "લૉગ સ્તર દ્વારા ફિલ્ટર કરો", "searchPlaceholder": "લૉગ્સ શોધો…", "searchAria": "લૉગ એન્ટ્રીઓ શોધો", @@ -4964,49 +4964,49 @@ "tokens": "ટોકન્સ" }, "onboarding": { - "welcome": "Welcome", + "welcome": "સ્વાગત છે", "tiers": "સ્તરો", - "security": "Security", + "security": "સુરક્ષા", "test": "Test", - "ready": "Ready!", - "setPassword": "Set Password", - "addProvider": "Add your first provider", - "getStarted": "Get Started", - "skip": "Skip", - "skipWizard": "Skip wizard entirely", - "skipPassword": "Skip password setup", - "skipAndContinue": "Skip & Continue", - "passwordLabel": "Password", - "confirmPassword": "Confirm Password", - "enterPassword": "Enter password", - "confirmPasswordPlaceholder": "Confirm password", - "passwordsMismatch": "Passwords do not match", - "setupComplete": "Setup Complete!", - "goToDashboard": "Go to Dashboard →", - "welcomeDesc": "OmniRoute is your local AI API proxy. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "multiProvider": "Multi-Provider", - "usageTracking": "Usage Tracking", - "securityDesc": "Set a password to protect your dashboard, or skip for now.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", - "providerDesc": "Connect your first AI provider. You can add more later.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", - "apiKeyRequired": "API Key (required)", - "customUrlOptional": "Custom URL (optional)", - "testDesc": "Let's verify your provider connection works.", - "runTest": "Run Connection Test", - "testingConnection": "Testing connection...", - "connectionSuccessful": "Connection successful! Your provider is ready.", - "noProviderFound": "No provider found. You can add one from the dashboard later.", - "testFailed": "Test failed, but you can configure this later.", - "couldNotTest": "Could not test right now. You can test from the dashboard.", - "doneDesc": "You're all set! Your OmniRoute instance is configured and ready to proxy AI requests.", - "yourEndpoint": "Your endpoint:", - "continue": "Continue", - "retry": "Retry", - "failedSetPassword": "Failed to set password. Try again.", - "failedAddProvider": "Failed to add provider. Try again.", - "connectionError": "Connection error. Please try again.", - "provider": "Provider", + "ready": "તૈયાર!", + "setPassword": "પાસવર્ડ સેટ કરો", + "addProvider": "તમારો પ્રથમ પ્રદાતા ઉમેરો", + "getStarted": "શરૂ કરો", + "skip": "છોડી દો", + "skipWizard": "વિઝાર્ડ સંપૂર્ણપણે છોડી દો", + "skipPassword": "પાસવર્ડ સેટઅપ છોડી દો", + "skipAndContinue": "છોડો અને ચાલુ રાખો", + "passwordLabel": "પાસવર્ડ", + "confirmPassword": "પાસવર્ડની પુષ્ટિ કરો", + "enterPassword": "પાસવર્ડ દાખલ કરો", + "confirmPasswordPlaceholder": "પાસવર્ડની પુષ્ટિ કરો", + "passwordsMismatch": "પાસવર્ડ મેળ ખાતા નથી", + "setupComplete": "સેટઅપ પૂર્ણ થયું!", + "goToDashboard": "ડૅશબોર્ડ પર જાઓ →", + "welcomeDesc": "OmniRoute તમારું સ્થાનિક AI API પ્રોક્સી છે. તે લોડ બેલેન્સિંગ, ફેલઓવર અને વપરાશ ટ્રૅકિંગ સાથે અનેક AI પ્રદાતાઓને વિનંતીઓ રૂટ કરે છે.", + "multiProvider": "બહુ-પ્રદાતા", + "usageTracking": "વપરાશ ટ્રૅકિંગ", + "securityDesc": "તમારા ડૅશબોર્ડને સુરક્ષિત રાખવા માટે પાસવર્ડ સેટ કરો અથવા હમણાં માટે આ પગલું છોડી દો.", + "securityDescSkipWarning": "⚠️ પાસવર્ડ વિના, તમે સેટઅપ દરમિયાન પ્રદાતાઓ ઉમેરી શકશો નહીં. પાસવર્ડ સેટ કર્યા પછી તમે તેમને ડૅશબોર્ડ પરથી પછીથી ઉમેરી શકો છો.", + "providerDesc": "તમારા પ્રથમ AI પ્રદાતાને કનેક્ટ કરો. તમે પછીથી વધુ ઉમેરી શકો છો.", + "providerRequiresPassword": "પ્રદાતાઓ ઉમેરવા માટે તમારે પહેલાં પાસવર્ડ સેટ કરવો પડશે. કૃપા કરીને સુરક્ષા પગલા પર પાછા જઈને પાસવર્ડ સેટ કરો અથવા ડૅશબોર્ડ પરથી પછીથી પ્રદાતાઓ ઉમેરો.", + "apiKeyRequired": "API કી (જરૂરી)", + "customUrlOptional": "કસ્ટમ URL (વૈકલ્પિક)", + "testDesc": "ચાલો ચકાસીએ કે તમારા પ્રદાતાનું કનેક્શન કાર્ય કરે છે.", + "runTest": "કનેક્શન ટેસ્ટ ચલાવો", + "testingConnection": "કનેક્શનનું પરીક્ષણ થઈ રહ્યું છે...", + "connectionSuccessful": "કનેક્શન સફળ રહ્યું! તમારો પ્રદાતા તૈયાર છે.", + "noProviderFound": "કોઈ પ્રદાતા મળ્યો નથી. તમે પછીથી ડૅશબોર્ડ પરથી એક ઉમેરી શકો છો.", + "testFailed": "પરીક્ષણ નિષ્ફળ ગયું, પરંતુ તમે આને પછીથી ગોઠવી શકો છો.", + "couldNotTest": "અત્યારે પરીક્ષણ કરી શકાયું નથી. તમે ડૅશબોર્ડ પરથી પરીક્ષણ કરી શકો છો.", + "doneDesc": "બધું તૈયાર છે! તમારું OmniRoute ઇન્સ્ટન્સ ગોઠવાઈ ગયું છે અને AI વિનંતીઓને પ્રોક્સી કરવા માટે તૈયાર છે.", + "yourEndpoint": "તમારું એન્ડપોઇન્ટ:", + "continue": "આગળ વધો", + "retry": "ફરી પ્રયાસ કરો", + "failedSetPassword": "પાસવર્ડ સેટ કરવામાં નિષ્ફળતા. ફરી પ્રયાસ કરો.", + "failedAddProvider": "પ્રદાતા ઉમેરવામાં નિષ્ફળતા. ફરી પ્રયાસ કરો.", + "connectionError": "કનેક્શન ભૂલ. કૃપા કરીને ફરી પ્રયાસ કરો.", + "provider": "પ્રદાતા", "apiKeyHelp": "API કી એ AI સેવાઓ માટેનો પાસવર્ડ છે. તમારા પ્રદાતાની વેબસાઇટ પરથી એક મેળવો (દા.ત., platform.openai.com, console.anthropic.com).", "tier": { "subtitle": "OmniRoute પ્રદાતાઓને ત્રણ સ્તરોમાં ગોઠવે છે જેથી રાઉટીંગ સૌથી વિશ્વસનીય, સૌથી ઓછા ખર્ચવાળા પાથને પસંદ કરે છે.", @@ -5049,12 +5049,12 @@ } }, "providers": { - "title": "Providers", + "title": "પ્રદાતાઓ", "Account Deactivated": "એકાઉન્ટ નિષ્ક્રિય કરવામાં આવ્યું", "allProviders": "બધા પ્રદાતાઓ", "audioProviders": "ઓડિયો પ્રદાતાઓ", "showFreeOnly": "માત્ર મફત", - "addProvider": "Add Provider", + "addProvider": "પ્રદાતા ઉમેરો", "addFirstProvider": "તમારા પ્રથમ પ્રદાતા ઉમેરો", "addFirstProviderDesc": "OmniRoute દ્વારા રૂટીંગ વિનંતીઓ શરૂ કરવા માટે AI પ્રદાતાને કનેક્ટ કરો. તમે મફત પ્રદાતાઓ, API કી અથવા OAuth એકાઉન્ટ્સનો ઉપયોગ કરી શકો છો.", "learnMore": "વધુ જાણો", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "આયાત કરી રહ્યું છે…", "importFromFileImport": "{count} પ્રદાતાઓ આયાત કરો", "importFromFileResult": "{success} પ્રદાતાઓ આયાત કર્યા ({failed} નિષ્ફળ)", + "importFromFileDownloadTemplate": "CSV ટેમ્પલેટ ડાઉનલોડ કરો", + "importFromFileMoreErrors": "+{count} વધુ", + "importFromFileSchemaHint": "CSV કૉલમનું સ્થાન નિશ્ચિત છે: provider, name, apiKey, baseUrl (વૈકલ્પિક), priority (વૈકલ્પિક). provider કૉલમમાં હાલના સંચાલિત પ્રદાતાનું id અથવા પહેલેથી નોંધાયેલ OpenAI/Anthropic-સુસંગત નોડ id હોવું આવશ્યક છે — આ ઇમ્પોર્ટ નવા એન્ડપોઇન્ટ નોડ બનાવતું નથી.", "adaptaTutorial": { "title": "Adapta Web કેવી રીતે કનેક્ટ કરવું", "introPrefix": "Adapta Clerk દ્વારા પ્રમાણિત કરે છે. ટોકન", @@ -5103,31 +5106,31 @@ "tipPrefix": "આ", "tipSuffix": "કૂકી લાંબા સમય સુધી ચાલે છે, સામાન્ય રીતે મહિનાઓ સુધી. જો તમે સાઇન આઉટ કરો અથવા Adapta સત્રને અમાન્ય કરે તો જ તમારે તેને રીન્યુ કરવાની જરૂર છે." }, - "editProvider": "Edit Provider", - "deleteProvider": "Delete Provider", - "noProviders": "No providers configured", - "modelAvailability": "Model Availability", - "accounts": "Accounts", - "newAccount": "New Account", - "deleteConfirm": "Are you sure you want to delete this provider?", - "testing": "Testing...", - "testConnection": "Test Connection", - "testSuccess": "Connection successful", - "testFailed": "Connection failed", - "available": "Available", - "cooldown": "Cooldown", - "unavailable": "Unavailable", - "unknown": "Unknown", + "editProvider": "પ્રદાતા સંપાદિત કરો", + "deleteProvider": "પ્રદાતા કાઢી નાખો", + "noProviders": "કોઈ પ્રદાતા ગોઠવેલ નથી", + "modelAvailability": "મોડેલ ઉપલબ્ધતા", + "accounts": "એકાઉન્ટ્સ", + "newAccount": "નવું એકાઉન્ટ", + "deleteConfirm": "શું તમે ખરેખર આ પ્રદાતાને કાઢી નાખવા માંગો છો?", + "testing": "પરીક્ષણ થઈ રહ્યું છે...", + "testConnection": "કનેક્શનનું પરીક્ષણ કરો", + "testSuccess": "કનેક્શન સફળ થયું", + "testFailed": "કનેક્શન નિષ્ફળ થયું", + "available": "ઉપલબ્ધ", + "cooldown": "કૂલડાઉન", + "unavailable": "અનુપલબ્ધ", + "unknown": "અજ્ઞાત", "oauthLabel": "OAuth", - "compatibleLabel": "Compatible", + "compatibleLabel": "સુસંગત", "chat": "Chat", "responses": "Responses", "messages": "Messages", - "oauthProviders": "OAuth Providers", - "freeProviders": "Free Providers", - "apiKeyProviders": "API Key Providers", - "compatibleProviders": "API Key Compatible Providers", - "testAll": "Test All", + "oauthProviders": "OAuth પ્રદાતાઓ", + "freeProviders": "મફત પ્રદાતાઓ", + "apiKeyProviders": "API Key પ્રદાતાઓ", + "compatibleProviders": "API Key સાથે સુસંગત પ્રદાતાઓ", + "testAll": "બધાનું પરીક્ષણ કરો", "reorderByAvailability": "ફરીથી ગોઠવો", "reorderByAvailabilityTitle": "ઉપલબ્ધતા દ્વારા જોડાણો ફરીથી ગોઠવો", "reorderByAvailabilityError": "ઉપલબ્ધતા દ્વારા જોડાણો ફરીથી ગોઠવવામાં નિષ્ફળ", @@ -5135,10 +5138,10 @@ "distributing": "વિતરણ થઈ રહ્યું છે...", "selectedCount": "{count, plural, one {# પસંદ કરેલ} other {# પસંદ કરેલ}}", "accountsCount": "{count, plural, one {# એકાઉન્ટ} other {# એકાઉન્ટ્સ}}", - "testAllOAuth": "Test all OAuth connections", - "testAllFree": "Test all Free connections", - "testAllApiKey": "Test all API Key connections", - "testAllCompatible": "Test all Compatible connections", + "testAllOAuth": "બધા OAuth કનેક્શન્સનું પરીક્ષણ કરો", + "testAllFree": "બધા મફત કનેક્શન્સનું પરીક્ષણ કરો", + "testAllApiKey": "બધા API Key કનેક્શન્સનું પરીક્ષણ કરો", + "testAllCompatible": "બધા સુસંગત કનેક્શન્સનું પરીક્ષણ કરો", "testAllModels": "બધા મોડલ્સનું પરીક્ષણ કરો", "testAllModelsConfirm": "બધા દૃશ્યમાન મોડલ્સનું પરીક્ષણ કરવું છે? જો ઓટો-હાઇડ સક્ષમ હશે તો નિષ્ફળ મોડલ્સ છુપાવવામાં આવશે.", "testingAllModels": "પરીક્ષણ ચાલુ છે {done}/{total}...", @@ -5154,9 +5157,9 @@ "filterByVisibility": "દૃશ્યતા દ્વારા ફિલ્ટર કરો", "autoHideFailed": "નિષ્ફળ મોડેલોને આપમેળે છુપાવો", "autoHideFailedHint": "જ્યારે સક્ષમ હોય, ત્યારે Test all એ /v1/models જેવા સાર્વજનિક કેટલોગમાંથી બિન-ક્ષણિક નિષ્ફળતાઓને છુપાવે છે. સિંગલ-મોડેલ પરીક્ષણો ક્યારેય આપમેળે છુપાવતા નથી.", - "connected": "{count} Connected", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", + "connected": "{count} કનેક્ટેડ", + "errorCount": "{count} ભૂલ ({code})", + "errorCountNoCode": "{count} ભૂલ", "testAllCompleted": "{total} મોડેલોનું પરીક્ષણ કર્યું: {ok} OK, {failed} નિષ્ફળ", "modelAutoHidden": "મોડેલ {model} આપમેળે છુપાવેલ છે (પરીક્ષણ નિષ્ફળ)", "filterAll": "બધા", @@ -5164,9 +5167,9 @@ "filterHidden": "માત્ર છુપાયેલ", "modelsHiddenCount": "{count} છુપાયેલ", "warningCount": "{count} ચેતવણી", - "noConnections": "No connections", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "noConnections": "કોઈ કનેક્શન નથી", + "expiredBadge": "સમયસીમા સમાપ્ત", + "expiringSoonBadge": "ટૂંક સમયમાં સમયસીમા સમાપ્ત થશે", "freeTier": "મફત ટાયર", "freeTierAvailable": "મફત સ્તર ઉપલબ્ધ છે", "hasFreeTooltip": "મફત ટાયર ઉપલબ્ધ છે", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "આ પ્રદાતા નાપસંદ કરવામાં આવી છે", "riskNotice": { "title": "આગળ વધતા પહેલા", - "detailsTitle": "Usage caveats", + "detailsTitle": "ઉપયોગ સંબંધિત ચેતવણીઓ", "tooltip": "વપરાશની ચેતવણીઓ સાથેનો પ્રદાતા — વિગતો માટે ક્લિક કરો", "oauth": "આ પ્રદાતા તમારા સત્તાવાર પ્રોડક્ટ સત્ર/OAuth નો ઉપયોગ કરે છે, જે પ્રોક્સી/રાઉટર ઉપયોગ માટે અધિકૃત નથી. અમે સઘન સ્વાયત્ત એજન્ટ વપરાશ (OpenCloud-શૈલી, લાંબા બહુ-પગલાંના પ્રવાહો, મોટા બેચ) ની ભલામણ કરતા નથી — અપસ્ટ્રીમ એકાઉન્ટને પ્રતિબંધિત અથવા બૅન કરીને પ્રતિક્રિયા આપી શકે છે. તમારા પોતાના જોખમે ઉપયોગ કરો.", "webCookie": "આ પ્રદાતા તમારા વેબ સત્ર કૂકીઝ દ્વારા પ્રમાણિત કરે છે. અપસ્ટ્રીમ સેવા કોઈપણ સમયે સત્રને અમાન્ય કરી શકે છે, જેના કારણે તમારે ફરીથી લૉગ ઇન કરવું પડશે. લાંબા અડચણ વગરના ઓપરેશન્સ માટે ભલામણ કરેલ નથી. તમારા પોતાના જોખમે ઉપયોગ કરો.", @@ -5188,95 +5191,95 @@ "cancel": "રદ કરો" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} કનેક્શન ચિહ્નિત — તાજેતરની વધુમાં વધુ {maxFailures} નિષ્ફળતાઓ{lastFailureSuffix}. કનેક્શનની સ્થિતિ જોવા માટે ક્લિક કરો.", + "lastFailureSuffix": "(છેલ્લી નિષ્ફળતા {time})", + "ariaLabel": "કનેક્શનની સ્થિતિની વિગતો જુઓ, {count} ચેતવણી(ઓ)" }, - "disabled": "Disabled", - "enableProvider": "Enable provider", - "disableProvider": "Disable provider", - "testResults": "Test Results", - "noCompatibleYet": "No compatible providers added yet", - "compatibleHint": "Use the buttons above to add OpenAI or Anthropic compatible endpoints", - "addOpenAICompatible": "Add OpenAI Compatible", - "addAnthropicCompatible": "Add Anthropic Compatible", - "addNewProvider": "Add New Provider", - "backToProviders": "Back to Providers", - "configureNewProvider": "Configure a new AI provider to use with your applications.", - "providerLabel": "Provider", - "selectProvider": "Select a provider", - "selectedProvider": "Selected provider", - "authMethod": "Authentication Method", - "apiKeyLabel": "API Key", - "apiKeyRequired": "API Key is required", - "selectProviderRequired": "Please select a provider", - "enterApiKey": "Enter your API key", - "apiKeySecure": "Your API key will be encrypted and stored securely.", - "oauth2Connect": "Connect with OAuth2", + "disabled": "અક્ષમ", + "enableProvider": "પ્રદાતાને સક્ષમ કરો", + "disableProvider": "પ્રદાતાને અક્ષમ કરો", + "testResults": "પરીક્ષણ પરિણામો", + "noCompatibleYet": "હજુ સુધી કોઈ સુસંગત પ્રદાતા ઉમેરાયા નથી", + "compatibleHint": "OpenAI અથવા Anthropic સાથે સુસંગત એન્ડપોઇન્ટ ઉમેરવા માટે ઉપરનાં બટનોનો ઉપયોગ કરો", + "addOpenAICompatible": "OpenAI સાથે સુસંગત ઉમેરો", + "addAnthropicCompatible": "Anthropic સાથે સુસંગત ઉમેરો", + "addNewProvider": "નવો પ્રદાતા ઉમેરો", + "backToProviders": "પ્રદાતાઓ પર પાછા જાઓ", + "configureNewProvider": "તમારી એપ્લિકેશનો સાથે ઉપયોગ કરવા માટે નવો AI પ્રદાતા ગોઠવો.", + "providerLabel": "પ્રદાતા", + "selectProvider": "પ્રદાતા પસંદ કરો", + "selectedProvider": "પસંદ કરેલો પ્રદાતા", + "authMethod": "પ્રમાણીકરણ પદ્ધતિ", + "apiKeyLabel": "API કી", + "apiKeyRequired": "API કી આવશ્યક છે", + "selectProviderRequired": "કૃપા કરીને પ્રદાતા પસંદ કરો", + "enterApiKey": "તમારી API કી દાખલ કરો", + "apiKeySecure": "તમારી API કીને એન્ક્રિપ્ટ કરીને સુરક્ષિત રીતે સંગ્રહિત કરવામાં આવશે.", + "oauth2Connect": "OAuth2 વડે કનેક્ટ કરો", "oauth2Label": "OAuth2", - "oauth2Desc": "Connect your account using OAuth2 authentication.", - "displayName": "Display Name", - "displayNamePlaceholder": "e.g., Production API, Dev Environment", - "displayNameHint": "Optional. A friendly name to identify this configuration.", - "active": "Active", - "activeDescription": "Enable this provider for use in your applications", - "cancel": "Cancel", - "createProvider": "Create Provider", - "failedCreate": "Failed to create provider", - "errorOccurred": "An error occurred. Please try again.", - "modelStatus": "Model Status", - "showConfiguredOnly": "Configured only", - "allModelsOperational": "All models operational", - "modelsWithIssues": "{count} model(s) with issues", - "allModelsNormal": "All models are responding normally.", - "cooldownCleared": "Cooldown cleared for {model}", - "failedClearCooldown": "Failed to clear cooldown", - "loadingAvailability": "Loading model availability...", - "clearCooldown": "Clear", - "clearing": "Clearing...", - "until": "Until {time}", - "providerTestFailed": "Provider test failed", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "oauth2Desc": "OAuth2 પ્રમાણીકરણનો ઉપયોગ કરીને તમારું એકાઉન્ટ કનેક્ટ કરો.", + "displayName": "પ્રદર્શિત નામ", + "displayNamePlaceholder": "દા.ત., પ્રોડક્શન API, ડેવ એન્વાયરમેન્ટ", + "displayNameHint": "વૈકલ્પિક. આ ગોઠવણીને ઓળખવા માટેનું સરળ નામ.", + "active": "સક્રિય", + "activeDescription": "તમારી એપ્લિકેશનોમાં ઉપયોગ માટે આ પ્રદાતાને સક્ષમ કરો", + "cancel": "રદ કરો", + "createProvider": "પ્રદાતા બનાવો", + "failedCreate": "પ્રદાતા બનાવવામાં નિષ્ફળતા", + "errorOccurred": "એક ભૂલ આવી. કૃપા કરીને ફરી પ્રયાસ કરો.", + "modelStatus": "મોડેલની સ્થિતિ", + "showConfiguredOnly": "માત્ર ગોઠવેલા", + "allModelsOperational": "બધા મોડેલ કાર્યરત છે", + "modelsWithIssues": "સમસ્યાઓ ધરાવતા {count} મોડેલ", + "allModelsNormal": "બધા મોડેલ સામાન્ય રીતે પ્રતિસાદ આપી રહ્યા છે.", + "cooldownCleared": "{model} માટે કૂલડાઉન દૂર કરવામાં આવ્યું", + "failedClearCooldown": "કૂલડાઉન દૂર કરવામાં નિષ્ફળતા", + "loadingAvailability": "મોડેલની ઉપલબ્ધતા લોડ થઈ રહી છે...", + "clearCooldown": "દૂર કરો", + "clearing": "દૂર કરી રહ્યાં છીએ...", + "until": "{time} સુધી", + "providerTestFailed": "પ્રદાતા પરીક્ષણ નિષ્ફળ થયું", + "providerTestTimeout": "પ્રદાતા પરીક્ષણનો સમય સમાપ્ત થયો — એકસાથે પરીક્ષણ કરવા માટે ઘણા બધા કનેક્શન છે", "modeTest": "{mode} Test", - "passedCount": "{count} passed", - "failedCount": "{count} failed", - "testedCount": "{count} tested", + "passedCount": "{count} સફળ", + "failedCount": "{count} નિષ્ફળ", + "testedCount": "{count}નું પરીક્ષણ થયું", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", - "noActiveConnectionsInGroup": "No active connections found for this group.", - "allTestsPassed": "All {total} tests passed", - "testSummary": "{passed}/{total} passed, {failed} failed", - "nameLabel": "Name", + "errorShort": "ભૂલ", + "noActiveConnectionsInGroup": "આ જૂથ માટે કોઈ સક્રિય કનેક્શન મળ્યાં નથી.", + "allTestsPassed": "તમામ {total} પરીક્ષણો સફળ થયાં", + "testSummary": "{passed}/{total} સફળ, {failed} નિષ્ફળ", + "nameLabel": "નામ", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", - "apiTypeLabel": "API Type", - "prefixHint": "Required. Unique prefix for model names.", - "nameHint": "Required. A friendly label for this node.", - "baseUrlHint": "Required. Provider API base URL.", + "baseUrlLabel": "બેઝ URL", + "apiTypeLabel": "API પ્રકાર", + "prefixHint": "આવશ્યક. મોડલનાં નામો માટે અનન્ય ઉપસર્ગ.", + "nameHint": "આવશ્યક. આ નોડ માટે સરળતાથી ઓળખી શકાય તેવું લેબલ.", + "baseUrlHint": "આવશ્યક. પ્રદાતાનો API બેઝ URL.", "iconUrlLabel": "આઇકન URL", "iconUrlHint": "વૈકલ્પિક. આ પ્રદાતાના આઇકન તરીકે દર્શાવેલ છબી URL.", "iconUrlInvalid": "અમાન્ય આઇકન URL. http(s):// અથવા data:image/*;base64 URL નો ઉપયોગ કરો.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "દૈનિક ક્વોટા રીસેટ સમય ઝોન", + "dailyQuotaResetTimezoneHint": "વૈકલ્પિક IANA સમય ઝોન, જેનો ઉપયોગ અપસ્ટ્રીમ દ્વારા X-RateLimit-Reset ન આપવામાં આવે ત્યારે થાય છે. ટૂંકો કૂલડાઉન જાળવવા માટે ખાલી રાખો.", + "dailyQuotaResetHourLabel": "દૈનિક ક્વોટા રીસેટ કલાક", + "dailyQuotaResetHourHint": "ઉપરના સમય ઝોન મુજબ સ્થાનિક કલાક 0-23. ખાલી રાખવાનો અર્થ છે કે નોડ-સ્તરની કોઈ ઘડિયાળ નથી.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", - "validateConnection": "Validate Connection", - "validating": "Validating...", - "connectionValid": "Connection is valid!", - "connectionFailed": "Connection failed. Check URL and key.", - "testKeyLabel": "Test API Key", - "testKeyPlaceholder": "sk-... (for validation only)", - "providerNotFound": "Provider not found", - "deleteConnectionConfirm": "Delete this connection?", + "validateConnection": "કનેક્શન ચકાસો", + "validating": "ચકાસી રહ્યું છે...", + "connectionValid": "કનેક્શન માન્ય છે!", + "connectionFailed": "કનેક્શન નિષ્ફળ થયું. URL અને કી તપાસો.", + "testKeyLabel": "API કીનું પરીક્ષણ કરો", + "testKeyPlaceholder": "sk-... (ફક્ત ચકાસણી માટે)", + "providerNotFound": "પ્રદાતા મળ્યો નથી", + "deleteConnectionConfirm": "આ કનેક્શન કાઢી નાખવું છે?", "deleteConnectionConfirmNamed": "શું તમે ખરેખર {name} કાઢી નાખવા માંગો છો? આ ક્રિયા પૂર્વવત્ કરી શકાશે નહીં.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "પસંદ કરેલ કાઢી નાખો ({count})", + "batchDeleteConfirm": "{count} કનેક્શન કાઢી નાખવાં છે? આ ક્રિયા પૂર્વવત્ કરી શકાતી નથી.", + "batchDeleteSuccess": "{count} કનેક્શન કાઢી નાખ્યાં", "batchActivateSelected": "સક્રિય કરો", "batchDeactivateSelected": "નિષ્ક્રિય કરો", "batchRetestSelected": "ફરીથી પરીક્ષણ કરો", @@ -5292,32 +5295,32 @@ "filterError": "ભૂલ", "filterBanned": "પ્રતિબંધિત", "filterCreditsExhausted": "ક્રેડિટ સમાપ્ત", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "એકાઉન્ટ શોધો…", "noFilteredConnections": "કોઈપણ કનેક્શન્સ વર્તમાન ફિલ્ટર સાથે મેળ ખાતા નથી.", - "failedSetAlias": "Failed to set alias", + "failedSetAlias": "ઉપનામ સેટ કરવામાં નિષ્ફળતા", "setAliasSuccess": "ઉપનામ {alias} સેટ કર્યું", "deleteAliasSuccess": "ઉપનામ {alias} કાઢી નાખ્યું", - "failedSaveConnection": "Failed to save connection", - "failedSaveConnectionRetry": "Failed to save connection. Please try again.", - "failedRetestConnection": "Failed to retest connection", - "deleteCompatibleNodeConfirm": "Delete this {type} Compatible node?", - "anthropicCompatibleDetails": "Anthropic Compatible Details", - "openaiCompatibleDetails": "OpenAI Compatible Details", + "failedSaveConnection": "કનેક્શન સાચવવામાં નિષ્ફળતા", + "failedSaveConnectionRetry": "કનેક્શન સાચવવામાં નિષ્ફળતા. કૃપા કરીને ફરી પ્રયાસ કરો.", + "failedRetestConnection": "કનેક્શનનું ફરી પરીક્ષણ કરવામાં નિષ્ફળતા", + "deleteCompatibleNodeConfirm": "આ {type} Compatible નોડ કાઢી નાખવો છે?", + "anthropicCompatibleDetails": "Anthropic Compatible વિગતો", + "openaiCompatibleDetails": "OpenAI Compatible વિગતો", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "એમ્બેડિંગ્સ", + "audioTranscriptions": "ઑડિયો ટ્રાન્સક્રિપ્શન", + "audioSpeech": "ઑડિયો સ્પીચ", + "imagesGenerations": "ઇમેજ જનરેશન", "chatCompletions": "Chat Completions", - "importingModels": "Importing...", - "importFromModels": "Import from /models", - "modelsImported": "{count} models imported", - "allModelsAlreadyImported": "All models already imported", - "noNewModelsToImport": "No new models to import — all models are already in the registry or custom models list", - "skippingExistingModels": "Skipping {count} existing models", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "importingModels": "આયાત કરી રહ્યું છે...", + "importFromModels": "/modelsમાંથી આયાત કરો", + "modelsImported": "{count} મોડલ આયાત કર્યાં", + "allModelsAlreadyImported": "બધાં મોડલ પહેલેથી આયાત થયેલાં છે", + "noNewModelsToImport": "આયાત કરવા માટે કોઈ નવાં મોડલ નથી — બધાં મોડલ પહેલેથી રજિસ્ટ્રી અથવા કસ્ટમ મોડલની સૂચિમાં છે", + "skippingExistingModels": "હાલનાં {count} મોડલ છોડી રહ્યાં છીએ", + "autoSync": "ઑટો-સિંક", + "autoSyncShort": "સિંક કરો", "autoFetchModels": "આપોઆપ અપસ્ટ્રીમ મોડલ્સ લાવો", "autoFetchModelsTooltip": "જરૂર પડ્યે અપસ્ટ્રીમ મોડલ્સને લાવવા અને કેશ કરવા", "autoFetchModelsEnabled": "અપસ્ટ્રીમ મોડલ આપોઆપ મેળવવું સક્રિય છે", @@ -5329,52 +5332,52 @@ "resetToUpstreamDefaults": "અપસ્ટ્રીમ ડિફોલ્ટ્સ પુનઃસ્થાપિત કરો", "resetToUpstreamDefaultsSuccess": "ઉપરવાળી મોડલ ડિફોલ્ટ્સ પુનઃસ્થાપિત કરવામાં આવ્યા", "resetToUpstreamDefaultsFailed": "અપસ્ટ્રીમ મોડલ ડિફોલ્ટ્સ પુનઃસ્થાપિત કરવામાં નિષ્ફળ થયું", - "autoSyncTooltip": "Automatically refresh model list every 24h (configurable via MODEL_SYNC_INTERVAL_HOURS)", - "autoSyncEnabled": "Auto-sync enabled — models will refresh periodically", - "autoSyncDisabled": "Auto-sync disabled", - "autoSyncToggleFailed": "Failed to toggle auto-sync", - "autoSyncPartialFailure": "Auto-sync updated for some connections, but not all", - "clearAllModels": "Clear All Models", - "clearAllModelsConfirm": "Are you sure you want to remove all models for this provider? This cannot be undone.", - "clearAllModelsSuccess": "All models cleared", - "clearAllModelsFailed": "Failed to clear models", - "addConnectionToImport": "Add a connection to enable importing.", - "noModelsConfigured": "No models configured", - "connectionCount": "{count} connection(s)", - "fetchingModels": "Fetching available models...", - "failedFetchModels": "Failed to fetch models", + "autoSyncTooltip": "દર 24 કલાકે મોડેલ સૂચિ આપમેળે રિફ્રેશ કરો (MODEL_SYNC_INTERVAL_HOURS દ્વારા ગોઠવી શકાય છે)", + "autoSyncEnabled": "ઑટો-સિંક સક્ષમ છે — મોડેલો સમયાંતરે રિફ્રેશ થશે", + "autoSyncDisabled": "ઑટો-સિંક અક્ષમ છે", + "autoSyncToggleFailed": "ઑટો-સિંક ટૉગલ કરવામાં નિષ્ફળ", + "autoSyncPartialFailure": "કેટલાક કનેક્શન માટે ઑટો-સિંક અપડેટ થયું, પરંતુ બધા માટે નહીં", + "clearAllModels": "બધા મોડેલો સાફ કરો", + "clearAllModelsConfirm": "શું તમે ખરેખર આ પ્રોવાઇડરના બધા મોડેલો દૂર કરવા માંગો છો? આ ક્રિયા પૂર્વવત્ કરી શકાતી નથી.", + "clearAllModelsSuccess": "બધા મોડેલો સાફ કરવામાં આવ્યા", + "clearAllModelsFailed": "મોડેલો સાફ કરવામાં નિષ્ફળ", + "addConnectionToImport": "ઇમ્પોર્ટ સક્ષમ કરવા માટે કનેક્શન ઉમેરો.", + "noModelsConfigured": "કોઈ મોડેલ ગોઠવેલ નથી", + "connectionCount": "{count} કનેક્શન", + "fetchingModels": "ઉપલબ્ધ મોડેલો મેળવવામાં આવી રહ્યા છે...", + "failedFetchModels": "મોડેલો મેળવવામાં નિષ્ફળ", "noFreeModelsFound": "આ પ્રદાતા માટે કોઈ મફત મોડેલો મળ્યા નથી — કંઈપણ આયાત કરવામાં આવ્યું નથી.", "fetchModelsSuccess": "{count} નવા મોડેલો મળ્યા", "fetchModelsFailed": "મોડેલો આપમેળે લાવી શકાયા નથી (તમે સેટિંગ્સમાંથી ફરી પ્રયાસ કરી શકો છો)", - "noModelsFound": "No models found", - "importFailed": "Import failed", - "noNewModelsAdded": "No new models were added.", + "noModelsFound": "કોઈ મોડેલ મળ્યાં નથી", + "importFailed": "ઇમ્પોર્ટ નિષ્ફળ", + "noNewModelsAdded": "કોઈ નવા મોડેલો ઉમેરાયા નથી.", "adding": "Adding...", - "close": "Close", - "importingModelsTitle": "Importing Models", - "copyModel": "Copy model", - "filterModels": "Filter models...", + "close": "બંધ કરો", + "importingModelsTitle": "મોડેલો ઇમ્પોર્ટ થઈ રહ્યા છે", + "copyModel": "મોડેલ કૉપિ કરો", + "filterModels": "મોડેલો ફિલ્ટર કરો...", "testAllRateLimited": "રેટ મર્યાદા પહોંચી ગઈ, વહેલા બંધ કરવામાં આવ્યું", "hideFailedAuto": "નિષ્ફળ થયેલા મોડેલો આપમેળે છુપાવો", - "selectAllModels": "Select all", + "selectAllModels": "બધા પસંદ કરો", "hideAllModels": "બધા છુપાવો", - "modelsActive": "Active", - "showModel": "Show model", - "hideModel": "Hide model", - "removeModel": "Remove model", - "rateLimitProtected": "Protected", - "rateLimitUnprotected": "Unprotected", + "modelsActive": "સક્રિય", + "showModel": "મોડેલ બતાવો", + "hideModel": "મોડેલ છુપાવો", + "removeModel": "મોડેલ દૂર કરો", + "rateLimitProtected": "સુરક્ષિત", + "rateLimitUnprotected": "અસુરક્ષિત", "providerQuotaShort": "ક્વોટા", "hideConnectionFromProviderQuota": "આ એકાઉન્ટને પ્રોવાઇડર ક્વોટામાંથી છુપાવો", "showConnectionInProviderQuota": "આ એકાઉન્ટને પ્રોવાઇડર ક્વોટામાં બતાવો", "quotaVisibilityUpdateFailed": "પ્રોવાઇડર ક્વોટા દૃશ્યતા અપડેટ કરવામાં નિષ્ફળ", - "enableRateLimitProtection": "Click to enable rate limit protection", - "disableRateLimitProtection": "Click to disable rate limit protection", + "enableRateLimitProtection": "રેટ લિમિટ સુરક્ષા સક્ષમ કરવા ક્લિક કરો", + "disableRateLimitProtection": "રેટ લિમિટ સુરક્ષા અક્ષમ કરવા ક્લિક કરો", "testAllProgress": "{done}/{total} ચકાસાયેલ", "testAllFailedHidden": "{count} નિષ્ફળ થયેલા મોડેલો છુપાવ્યા", "testAllDone": "બધા મોડેલો ચકાસાયા", - "productionKey": "Production Key", - "enterNewApiKey": "Enter new API key", + "productionKey": "પ્રોડક્શન કી", + "enterNewApiKey": "નવી API કી દાખલ કરો", "codexApplyModalTitle": "સ્થાનિક કોડેક્સ પર અરજી કરો", "codexApplyTargetLabel": "લક્ષ્ય માર્ગ", "codexApplyBackupLabel": "બેકઅપ્સ", @@ -5386,77 +5389,77 @@ "bulkAddFormatHint": "લાઇન દીઠ એક કી. ફોર્મેટ: નામ|apiKey અથવા ફક્ત apiKey (અનુક્રમણિકા દ્વારા સ્વતઃ-નામિત).", "bulkValidateKeys": "સાચવતા પહેલા દરેક કીને માન્ય કરો (ધીમી)", "bulkAddAllKeys": "બધી કી ઉમેરો", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", - "optional": "Optional", + "bulkAddedCount": "{count, plural, one {# કી ઉમેરાઈ} other {# કીઓ ઉમેરાઈ}}", + "bulkFailedCount": "{count, plural, one {# નિષ્ફળ} other {# નિષ્ફળ}}", + "optional": "વૈકલ્પિક", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", "compatibleDefaultModelLabel": "ડિફૉલ્ટ મોડેલ", "compatibleDefaultModelHint": "મોડેલ ID બરાબર એ જ રીતે દાખલ કરો જેવી તમારા સુસંગત એન્ડપોઇન્ટને અપેક્ષા છે. આ મોડેલ કનેક્શન ડિફૉલ્ટ તરીકે સાચવવામાં આવશે.", - "failedImportModels": "Failed to import models", - "noModelsReturnedFromEndpoint": "No models returned from /models endpoint.", - "importingModelsProgress": "Importing {current} of {total} models...", - "foundModelsStartingImport": "Found {count} models. Starting import...", - "importingModelById": "Importing {modelId}...", - "importSuccessCount": "Successfully imported {count, plural, one {# model} other {# models}}!", - "noNewModelsAddedExisting": "No new models were added (all already exist).", - "importDoneCount": "✓ Done! {count, plural, one {# model imported.} other {# models imported.}}", - "unexpectedErrorOccurred": "An unexpected error occurred", + "failedImportModels": "મોડેલો ઇમ્પોર્ટ કરવામાં નિષ્ફળ", + "noModelsReturnedFromEndpoint": "/models endpoint પરથી કોઈ મોડેલ મળ્યાં નથી.", + "importingModelsProgress": "કુલ {total}માંથી {current} મોડેલો ઇમ્પોર્ટ થઈ રહ્યા છે...", + "foundModelsStartingImport": "{count} મોડલ મળ્યાં. આયાત શરૂ કરી રહ્યાં છીએ...", + "importingModelById": "{modelId} આયાત કરી રહ્યાં છીએ...", + "importSuccessCount": "{count, plural, one {# મોડલ સફળતાપૂર્વક આયાત થયું!} other {# મોડલ સફળતાપૂર્વક આયાત થયાં!}}", + "noNewModelsAddedExisting": "કોઈ નવું મોડલ ઉમેરાયું નથી (બધાં પહેલેથી અસ્તિત્વમાં છે).", + "importDoneCount": "✓ પૂર્ણ! {count, plural, one {# મોડલ આયાત થયું.} other {# મોડલ આયાત થયાં.}}", + "unexpectedErrorOccurred": "એક અનપેક્ષિત ભૂલ આવી", "getApiKey": "એપી આઈ કી મેળવો", "getApiKeyDescription": "API કી માટે નોંધણી કરો અથવા સાઇન અપ કરો", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# કનેક્શન} other {# કનેક્શનો}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", - "add": "Add", - "edit": "Edit", - "delete": "Delete", + "add": "ઉમેરો", + "edit": "સંપાદિત કરો", + "delete": "કાઢી નાખો", "anthropic": "Anthropic", "openai": "OpenAI", - "singleConnectionPerCompatible": "Only one connection is allowed per compatible node. Add another node if you need more connections.", - "connections": "Connections", - "providerProxyTitleConfigured": "Provider proxy: {host}", - "configured": "configured", - "providerProxyConfigureHint": "Configure proxy for all connections of this provider", - "providerProxy": "Provider Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", - "noConnectionsYet": "No connections yet", - "addFirstConnectionHint": "Add your first connection to get started", - "addConnection": "Add Connection", - "availableModels": "Available Models", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", - "pageAutoRefresh": "Page will refresh automatically...", - "statusDisabled": "disabled", - "statusConnected": "connected", - "statusRuntimeIssue": "runtime issue", - "statusAuthFailed": "auth failed", - "statusRateLimited": "rate limited", - "statusNetworkIssue": "network issue", - "statusTestUnsupported": "test unsupported", - "statusUnavailable": "unavailable", - "statusFailed": "failed", - "statusError": "error", - "oauthAccount": "OAuth Account", - "errorTypeRuntime": "Local runtime", - "errorTypeUpstreamAuth": "Upstream auth", - "errorTypeMissingCredential": "Missing credential", - "errorTypeRefreshFailed": "Refresh failed", - "errorTypeTokenExpired": "Token expired", - "errorTypeRateLimited": "Rate limited", - "errorTypeUpstreamUnavailable": "Upstream unavailable", - "errorTypeNetworkError": "Network error", - "errorTypeTestUnsupported": "Test unsupported", - "errorTypeUpstreamError": "Upstream error", + "singleConnectionPerCompatible": "દરેક સુસંગત નોડ દીઠ માત્ર એક કનેક્શનની મંજૂરી છે. વધુ કનેક્શનોની જરૂર હોય તો બીજો નોડ ઉમેરો.", + "connections": "કનેક્શનો", + "providerProxyTitleConfigured": "પ્રદાતા પ્રોક્સી: {host}", + "configured": "ગોઠવેલું", + "providerProxyConfigureHint": "આ પ્રદાતાનાં તમામ કનેક્શનો માટે પ્રોક્સી ગોઠવો", + "providerProxy": "પ્રદાતા પ્રોક્સી", + "repairEnv": ".env સુધારો", + "repairEnvWorking": "સુધારી રહ્યાં છીએ...", + "repairEnvHint": "હાલનાં મૂલ્યોને ઓવરરાઇટ કર્યા વિના ખૂટતા OAuth ડિફૉલ્ટ્સને .env માં પુનઃસ્થાપિત કરો.", + "repairEnvSuccess": "OAuth ડિફૉલ્ટ્સ પુનઃસ્થાપિત થયા", + "repairEnvFailed": ".env સુધારવામાં નિષ્ફળતા", + "noConnectionsYet": "હજી સુધી કોઈ કનેક્શન નથી", + "addFirstConnectionHint": "શરૂ કરવા માટે તમારું પ્રથમ કનેક્શન ઉમેરો", + "addConnection": "કનેક્શન ઉમેરો", + "availableModels": "ઉપલબ્ધ મોડલ", + "builtInModels": "બિલ્ટ-ઇન મોડલ", + "builtInModelsHint": "આ પ્રદાતા માટેનાં રજિસ્ટ્રી મોડલ. સુસંગતતા વિકલ્પો સેટ કરવા માટે પેન્સિલનો ઉપયોગ કરો.", + "pageAutoRefresh": "પેજ આપમેળે રિફ્રેશ થશે...", + "statusDisabled": "અક્ષમ", + "statusConnected": "કનેક્ટેડ", + "statusRuntimeIssue": "રનટાઇમ સમસ્યા", + "statusAuthFailed": "પ્રમાણીકરણ નિષ્ફળ", + "statusRateLimited": "દર મર્યાદિત", + "statusNetworkIssue": "નેટવર્ક સમસ્યા", + "statusTestUnsupported": "પરીક્ષણ સમર્થિત નથી", + "statusUnavailable": "અનુપલબ્ધ", + "statusFailed": "નિષ્ફળ", + "statusError": "ભૂલ", + "oauthAccount": "OAuth એકાઉન્ટ", + "errorTypeRuntime": "સ્થાનિક રનટાઇમ", + "errorTypeUpstreamAuth": "અપસ્ટ્રીમ પ્રમાણીકરણ", + "errorTypeMissingCredential": "ઓળખપત્ર ખૂટે છે", + "errorTypeRefreshFailed": "રિફ્રેશ નિષ્ફળ થયું", + "errorTypeTokenExpired": "ટોકનની મુદત પૂરી થઈ", + "errorTypeRateLimited": "દર મર્યાદિત", + "errorTypeUpstreamUnavailable": "અપસ્ટ્રીમ ઉપલબ્ધ નથી", + "errorTypeNetworkError": "નેટવર્ક ભૂલ", + "errorTypeTestUnsupported": "પરીક્ષણ સમર્થિત નથી", + "errorTypeUpstreamError": "અપસ્ટ્રીમ ભૂલ", "errorTypeCreditsExhausted": "કોઈ ક્રેડિટ નથી", "errorTypeBanned": "403 પ્રતિબંધિત", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", - "proxySourceKey": "Key", + "proxySourceGlobal": "વૈશ્વિક", + "proxySourceProvider": "પ્રદાતા", + "proxySourceKey": "કી", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "પ્રોક્સી ચાલુ", "proxyOff": "ડાયરેક્ટ (પ્રોક્સી બાયપાસ કરો)", @@ -5468,31 +5471,31 @@ "perKeyProxyDisabledTitle": "આ પ્રોવાઇડર માટે કી-દીઠ પ્રોક્સી અસાઇનમેન્ટ અક્ષમ કરેલ છે", "autoPriority": "Auto: {priority}", "proxy": "Proxy", - "retestAuthentication": "Retest authentication", - "retest": "Retest", - "disableConnection": "Disable connection", - "enableConnection": "Enable connection", - "reauthenticateConnection": "Re-authenticate this connection", - "proxyConfig": "Proxy config", - "aliasExistsAlert": "Alias \"{alias}\" already exists. Please use a different model or edit existing alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter supports any model. Add models and create aliases for quick access.", - "modelIdFromOpenRouter": "Model ID (from OpenRouter)", + "retestAuthentication": "પ્રમાણીકરણનું ફરી પરીક્ષણ કરો", + "retest": "ફરી પરીક્ષણ કરો", + "disableConnection": "કનેક્શન અક્ષમ કરો", + "enableConnection": "કનેક્શન સક્ષમ કરો", + "reauthenticateConnection": "આ કનેક્શનનું ફરી પ્રમાણીકરણ કરો", + "proxyConfig": "પ્રોક્સી રૂપરેખાંકન", + "aliasExistsAlert": "ઉપનામ \"{alias}\" પહેલેથી અસ્તિત્વમાં છે. કૃપા કરીને અલગ મોડેલનો ઉપયોગ કરો અથવા હાલના ઉપનામમાં ફેરફાર કરો.", + "aliasInputPlaceholder": "ઉપનામનું નામ", + "clickToSetAlias": "ઉપનામ સેટ કરવા માટે ક્લિક કરો", + "clickToEditAlias": "ઉપનામ: {alias} (ફેરફાર કરવા માટે ક્લિક કરો)", + "openRouterAnyModelHint": "OpenRouter કોઈપણ મોડેલને સમર્થન આપે છે. ઝડપી ઍક્સેસ માટે મોડેલો ઉમેરો અને ઉપનામો બનાવો.", + "modelIdFromOpenRouter": "મોડેલ ID (OpenRouterમાંથી)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", - "customModels": "Custom Models", - "customModelsHint": "Add model IDs not in the default list. These will be available for routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "customModels": "કસ્ટમ મોડેલો", + "customModelsHint": "ડિફૉલ્ટ સૂચિમાં ન હોય તેવા મોડેલ ID ઉમેરો. આ રાઉટિંગ માટે ઉપલબ્ધ રહેશે.", + "normalizeToolCallIdLabel": "ટૂલ કૉલ IDને 9 અક્ષરોમાં સામાન્યકૃત કરો (દા.ત. Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responses ડેવલપર ભૂમિકા જાળવી રાખો (systemમાં મેપ કરશો નહીં)", + "compatAdjustmentsTitle": "સુસંગતતા", + "compatButtonLabel": "સુસંગતતા", + "compatToolIdShort": "ટૂલ ID 9", + "compatDeveloperShort": "ડેવલપર ભૂમિકા", + "compatDoNotPreserveDeveloper": "ડેવલપર ભૂમિકા જાળવશો નહીં", + "compatBadgeNoPreserve": "જાળવશો નહીં", + "compatProtocolLabel": "ક્લાયન્ટ વિનંતી પ્રોટોકોલ", + "compatProtocolHint": "જ્યારે OmniRoute આ વિનંતીનું સ્વરૂપ (OpenAI Chat, Responses API અથવા Anthropic Messages) શોધે છે ત્યારે આ વિકલ્પો લાગુ પડે છે.", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,84 +5537,84 @@ "interceptFetchHint": "મૂળ web_fetch ટૂલ કૉલ્સને OmniRoute ના /v1/web/fetch પર ફરીથી લખો.", "interceptionLoadError": "ઇન્ટરસેપ્શન સેટિંગ્સ લોડ કરવામાં નિષ્ફળ: {error}", "interceptionSaveError": "ઇન્ટરસેપ્શન સેટિંગ્સ સાચવવામાં નિષ્ફળ: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", - "perModelQuotaLabel": "Per-Model Quota", - "perModelQuotaDescription": "When enabled, 429/404 errors only lock the specific model, not the entire connection. Use for providers with per-model rate limits (e.g., ModelScope).", + "ccAliasSectionTitle": "Claude Codeમાં દર્શાવો (claude/…)", + "ccAliasSectionHint": "આ પ્રદાતાના મોડેલો claude/<provider>/<model> મિરર ID હેઠળ જાહેર કરો, જેથી Claude Codeનું ગેટવે મોડેલ ડિસ્કવરી તેમને સૂચિબદ્ધ કરી શકે. ડિફૉલ્ટ રૂપે બંધ — તેને સક્ષમ કરવાથી બધા ક્લાયન્ટ માટે કેટલોગ એન્ટ્રીઓ બમણી થાય છે.", + "ccAliasProviderLevelLabel": "પ્રદાતાનું ડિફૉલ્ટ", + "ccAliasModelOverridesLabel": "મોડેલ દીઠ ઓવરરાઇડ્સ", + "ccAliasModelOverrideAriaLabel": "{modelId} માટે ઓવરરાઇડ", + "ccAliasStateInherit": "વારસામાં મેળવો", + "ccAliasStateOn": "ચાલુ", + "ccAliasStateOff": "બંધ", + "ccAliasAddModelPlaceholder": "મોડેલ ID (દા.ત. gpt-4o)", + "ccAliasAddModelButton": "ઓવરરાઇડ ઉમેરો", + "ccAliasLoadError": "ડિસ્કવરી-એલિયાસ સેટિંગ્સ લોડ કરવામાં નિષ્ફળતા: {error}", + "ccAliasSaveError": "ડિસ્કવરી-એલિયાસ સેટિંગ સાચવવામાં નિષ્ફળતા: {error}", + "compatUpstreamHeadersLabel": "વધારાના અપસ્ટ્રીમ હેડર્સ", + "compatUpstreamHeadersHint": "ઉચ્ચ-વિશેષાધિકાર સેટિંગ — પ્રદાતાના API ઓળખપત્રો સંપાદિત કરવા જેટલું જ વિશ્વાસ સ્તર; ફક્ત વિશ્વસનીય એડમિનોએ તેનો ઉપયોગ કરવો જોઈએ. OmniRoute પ્રદાતાની API કીમાંથી પ્રમાણીકરણ ઉમેરે ત્યારબાદ તેને મર્જ કરવામાં આવે છે. જો કસ્ટમ હેડરનું નામ હાલના હેડર જેવું જ હોય (દા.ત. Authorization), તો તમારું મૂલ્ય આપમેળે જનરેટ થયેલા હેડરને સંપૂર્ણપણે બદલી નાખે છે (Bearer ટોકન સહિત) — અપસ્ટ્રીમને ફક્ત તમે લખેલું જ દેખાય છે, સેટિંગ્સમાંની કી નહીં. ખોટી ગોઠવણીથી 401 અથવા અપસ્ટ્રીમ પ્રમાણીકરણમાં ખામી આવી શકે છે. દરેક હેડર માટે એક પંક્તિ (દા.ત. કેટલાક ગેટવે માટે વધારાનું Authentication). પૂર્વાવલોકન માટે મૂલ્ય પર હૉવર કરો અથવા ફોકસ કરો. બ્લર થવા પર, બહાર ક્લિક કરતાં અથવા આ પેનલ બંધ કરતાં સાચવાય છે.", + "compatUpstreamHeaderName": "હેડરનું નામ", + "compatUpstreamHeaderValue": "મૂલ્ય", + "compatUpstreamAddRow": "હેડર ઉમેરો", + "compatUpstreamRemoveRow": "પંક્તિ દૂર કરો", + "compatBadgeUpstreamHeaders": "હેડર્સ", + "perModelQuotaLabel": "મોડેલ દીઠ ક્વોટા", + "perModelQuotaDescription": "સક્ષમ હોય ત્યારે, 429/404 ભૂલો ફક્ત ચોક્કસ મોડેલને લૉક કરે છે, સમગ્ર કનેક્શનને નહીં. મોડેલ દીઠ દર મર્યાદા ધરાવતા પ્રદાતાઓ માટે ઉપયોગ કરો (દા.ત., ModelScope).", "importFreeModelsOnlyLabel": "માત્ર મફત મૉડલ્સ આયાત કરો", "importFreeModelsOnlyHint": "જ્યારે સક્ષમ હોય, ત્યારે ફક્ત આ પ્રદાતાના મફત મૉડલ્સ આયાત કરવામાં આવે છે. પેઇડ મૉડલ્સ છોડી દેવામાં આવે છે.", - "perModelQuotaToggle": "Per-Model Quota Toggle", - "modelId": "Model ID", - "customModelPlaceholder": "e.g. gpt-4.5-turbo", - "loading": "Loading...", - "removeCustomModel": "Remove custom model", - "noCustomModels": "No custom models added yet.", - "allSuggestedAliasesExist": "All suggested aliases already exist. Please choose a different model or remove conflicting aliases.", - "failedSaveCustomModel": "Failed to save custom model", - "modelAddedSuccess": "Model {modelId} added successfully", - "failedAddModelTryAgain": "Failed to add model. Please try again.", - "failedSaveImportedModel": "Failed to save imported model to custom database", - "failedImportModelsTryAgain": "Failed to import models. Please try again.", - "failedRemoveModelFromDatabase": "Failed to remove model from database", - "modelRemovedSuccess": "Model removed successfully", - "failedDeleteModelTryAgain": "Failed to delete model. Please try again.", - "compatibleModelsDescription": "Add {type}-compatible models manually or import them from the /models endpoint.", + "perModelQuotaToggle": "મોડેલ દીઠ ક્વોટા ટૉગલ", + "modelId": "મોડેલ ID", + "customModelPlaceholder": "દા.ત. gpt-4.5-turbo", + "loading": "લોડ થઈ રહ્યું છે...", + "removeCustomModel": "કસ્ટમ મોડેલ દૂર કરો", + "noCustomModels": "હજુ સુધી કોઈ કસ્ટમ મોડેલ ઉમેરાયું નથી.", + "allSuggestedAliasesExist": "સૂચવેલા બધા એલિયાસ પહેલેથી અસ્તિત્વમાં છે. કૃપા કરીને અલગ મોડેલ પસંદ કરો અથવા વિરોધાભાસી એલિયાસ દૂર કરો.", + "failedSaveCustomModel": "કસ્ટમ મોડેલ સાચવવામાં નિષ્ફળતા", + "modelAddedSuccess": "મોડેલ {modelId} સફળતાપૂર્વક ઉમેરાયું", + "failedAddModelTryAgain": "મોડેલ ઉમેરવામાં નિષ્ફળતા. કૃપા કરીને ફરી પ્રયાસ કરો.", + "failedSaveImportedModel": "આયાત કરેલું મોડેલ કસ્ટમ ડેટાબેઝમાં સાચવવામાં નિષ્ફળતા", + "failedImportModelsTryAgain": "મોડેલો આયાત કરવામાં નિષ્ફળતા. કૃપા કરીને ફરી પ્રયાસ કરો.", + "failedRemoveModelFromDatabase": "ડેટાબેઝમાંથી મોડેલ દૂર કરવામાં નિષ્ફળતા", + "modelRemovedSuccess": "મોડેલ સફળતાપૂર્વક દૂર કરવામાં આવ્યું", + "failedDeleteModelTryAgain": "મોડેલ કાઢી નાખવામાં નિષ્ફળતા. કૃપા કરીને ફરી પ્રયાસ કરો.", + "compatibleModelsDescription": "{type}-સુસંગત મોડેલો મેન્યુઅલી ઉમેરો અથવા તેમને /models એન્ડપોઇન્ટમાંથી આયાત કરો.", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API key validation failed. Please check your key and try again.", - "addProviderApiKeyTitle": "Add {provider} API Key", - "checking": "Checking...", - "check": "Check", - "valid": "Valid", - "invalid": "Invalid", - "creating": "Creating...", - "validationChecksAnthropicCompatible": "Validation checks {provider} by verifying the API key.", - "validationChecksOpenAiCompatible": "Validation checks {provider} via /models on your base URL.", - "priorityLabel": "Priority", - "saving": "Saving...", - "save": "Save", - "editConnection": "Edit Connection", - "accountName": "Account name", + "apiKeyValidationFailed": "API કી માન્યતા નિષ્ફળ થઈ. કૃપા કરીને તમારી કી તપાસો અને ફરી પ્રયાસ કરો.", + "addProviderApiKeyTitle": "{provider} API કી ઉમેરો", + "checking": "તપાસી રહ્યું છે...", + "check": "તપાસો", + "valid": "માન્ય", + "invalid": "અમાન્ય", + "creating": "બનાવી રહ્યું છે...", + "validationChecksAnthropicCompatible": "API કીની ચકાસણી કરીને {provider}નું માન્યકરણ કરે છે.", + "validationChecksOpenAiCompatible": "તમારા બેઝ URL પર /models દ્વારા {provider}નું માન્યકરણ કરે છે.", + "priorityLabel": "પ્રાથમિકતા", + "saving": "સાચવી રહ્યું છે...", + "save": "સાચવો", + "editConnection": "કનેક્શન સંપાદિત કરો", + "accountName": "એકાઉન્ટનું નામ", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "હેલ્થ ચેક (મિનિટ)", "healthCheckHint": "Proactive token refresh interval. 0 = disabled.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", - "failedTestConnection": "Failed to test connection", - "failed": "Failed", - "leaveBlankKeepCurrentApiKey": "Leave blank to keep the current API key.", - "editCompatibleTitle": "Edit {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", - "apiKeyForCheck": "API Key (for Check)", + "deselectAllModels": "બધાની પસંદગી દૂર કરો", + "modelsActiveCount": "{active}/{total} સક્રિય", + "noModelsMatch": "\"{filter}\" સાથે કોઈ મોડેલ મેળ ખાતું નથી", + "groupLabel": "પર્યાવરણ", + "groupPlaceholder": "દા.ત. eKaizen, વ્યક્તિગત", + "failedTestConnection": "કનેક્શનનું પરીક્ષણ નિષ્ફળ ગયું", + "failed": "નિષ્ફળ", + "leaveBlankKeepCurrentApiKey": "વર્તમાન API કી જાળવી રાખવા માટે ખાલી છોડો.", + "editCompatibleTitle": "{type} સુસંગત સંપાદિત કરો", + "compatibleBaseUrlHint": "તમારા {type}-સુસંગત APIનું રૂટ URL. કસ્ટમ એન્ડપોઇન્ટ પાથ માટે અદ્યતન સેટિંગ્સનો ઉપયોગ કરો.", + "apiKeyForCheck": "API કી (ચકાસણી માટે)", "testModelIdLabel": "મૉડલ ID (વૈકલ્પિક)", "testModelIdPlaceholder": "દા.ત. my-model-id", "testModelIdHint": "જો પ્રદાતા પાસે /models એન્ડપોઇન્ટ ન હોય, તો તેના બદલે /chat/completions દ્વારા માન્ય કરવા માટે મૉડલ ID દાખલ કરો.", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "{type} સુસંગત (ઉત્પાદન)", + "tokenRefreshed": "ટોકન સફળતાપૂર્વક રિફ્રેશ થયું", + "tokenRefreshFailed": "ટોકન રિફ્રેશ નિષ્ફળ થયું", "cursorSessionUnchanged": "સત્ર પહેલેથી જ વર્તમાન છે", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "પ્રમાણીકરણ લાગુ કરો", + "exportCodexAuthFile": "પ્રમાણીકરણ નિકાસ કરો", "applyClaudeAuthLocal": "પ્રમાણીકરણ લાગુ કરો", "exportClaudeAuthFile": "નિકાસ પ્રમાણીકરણ", "importClaudeAuth": "આયાત પ્રમાણીકરણ", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} નિષ્ફળ", "codexImportBulkZipExtracting": "ઝીપ એક્સટ્રેક્ટ કરી રહ્યાં છીએ...", "codexImportBulkZipError": "ZIP કાઢવામાં નિષ્ફળ", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "અદ્યતન સેટિંગ્સ", + "chatPathLabel": "ચેટ એન્ડપોઇન્ટ પાથ", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "બિન-માનક API ધરાવતા પ્રદાતાઓ માટે કસ્ટમ ચેટ પાથ (દા.ત. /v4/chat/completions)", + "modelsPathLabel": "મોડેલ્સ એન્ડપોઇન્ટ પાથ", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "માન્યકરણ માટે કસ્ટમ મોડેલ્સ પાથ (દા.ત. /v4/models)", "clientIdentityLabel": "ક્લાયન્ટ ઓળખ", "clientIdentityHint": "વૈકલ્પિક. સુસંગત ગેટવે કે જે અપેક્ષા રાખે છે તેના માટે જાણીતા CLI સાથે મેળ ખાતા ક્લાયન્ટ ફિંગરપ્રિન્ટ હેડર્સ (દા.ત. User-Agent) ઉમેરે છે.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "નિષ્ક્રિય કરેલું (મેન્યુઅલ)", + "statusBanned": "પ્રતિબંધિત / સેન્ડબોક્સ ઉલ્લંઘન", + "statusCreditsExhausted": "અપૂરતી બેલેન્સ / ક્વોટા સમાપ્ત", + "showEmails": "બધા ઇમેઇલ બતાવો", + "hideEmails": "બધા ઇમેઇલ છુપાવો", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "બીજી API કી ઉમેરો અથવા એકથી વધુ કીઓ પેસ્ટ કરો", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "એગ્રીગેટર ગેટવે", "enterpriseCloud": "એન્ટરપ્રાઇઝ અને ક્લાઉડ", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API ફોર્મેટ લેબલ", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API પ્રદેશ ચીન", + "apiRegionHint": "API પ્રદેશ સંકેત", + "apiRegionInternational": "API પ્રદેશ આંતરરાષ્ટ્રીય", + "apiRegionLabel": "API પ્રદેશ લેબલ", + "apikey": "API કી", + "audio": "ઑડિયો", + "audioProvidersHeading": "ઑડિયો પ્રદાતાઓનું શીર્ષક", "cloudAgentProviders": "ક્લાઉડ એજન્ટ પ્રદાતાઓ", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "ઑડિયોનું ટૂંકું લેબલ", + "azureOpenAiBaseUrlHint": "Azure Open AI બેઝ URL સંકેત", + "bailianBaseUrlHint": "Bailian બેઝ URL સંકેત", + "claudeWebCookieHint": "claude.ai ખોલો → DevTools → Application → Cookies → claude.ai, અને 'sessionKey' મૂલ્ય કૉપિ કરો. Cloudflare માટે cf_clearance, __cf_bm, _cfuvid પણ જરૂરી છે.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web કૂકી સંકેત", + "blackboxWebCookiePlaceholder": "Blackbox Web કૂકી પ્લેસહોલ્ડર", "t3ChatWebCookieHint": "t3.chat → DevTools → Application → Local Storage → https://t3.chat ખોલો, 'convex-session-id' કૉપિ કરો. પછી DevTools → નેટવર્ક ખોલો, કોઈપણ ચેટ વિનંતીમાંથી સંપૂર્ણ કૂકી હેડરની નકલ કરો. નીચેના ફીલ્ડમાં બંને મૂલ્યો પેસ્ટ કરો.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web કૂકી સંકેત", "blockClaudeExtraUsageDescription": "જ્યારે સક્રિય કરવામાં આવે છે, OmniRoute આ Claude કનેક્શનને ઉપલબ્ધ નહીં તરીકે ચિહ્નિત કરે છે જેમણે જલદી ઉપયોગ API ક્યૂમાં વધારાના ઉપયોગની જાણ કરે છે, જેથી ફોલબેક બીજાં કનેક્શન પર સ્વિચ થાય છે તેના બદલે કે પે-એઝ-યુ-ગો વધારાના બિલિંગ પર ચાલુ રહે.", "blockClaudeExtraUsageLabel": "અતિરિક્ત ક્લોડ ઉપયોગ રોકો", "disableCoolingDescription": "અસ્થાયી કૂલડાઉન છોડો જેથી પુનઃપ્રાપ્ત કરી શકાય તેવી ભૂલો પછી પણ આ કનેક્શન પાત્ર રહે (પ્રતિબંધિત/સમાપ્ત જેવી ટર્મિનલ સ્થિતિઓ હજુ પણ લાગુ પડે છે).", "disableCoolingLabel": "આ કનેક્શન માટે કૂલડાઉન અક્ષમ કરો", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 કી ઉમેરાઈ} other {# કીઓ ઉમેરાઈ}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 ડુપ્લિકેટ અવગણાયું} other {# ડુપ્લિકેટ્સ અવગણાયા}}", + "bulkPasteHint": "દરેક લાઇનમાં એક API કી પેસ્ટ કરો. ખાલી લાઇનો અવગણવામાં આવે છે અને ડુપ્લિકેટ કીઓ છોડવામાં આવે છે.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "છુપાયેલા Claude વિચાર પ્રવાહોની જરૂર હોય તેવા CC Compatible અપસ્ટ્રીમ્સ માટે redact-thinking બીટા હેડર ઉમેરે છે.", + "ccCompatibleRedactThinkingLabel": "redact-thinking બીટા સક્ષમ કરો", + "ccCompatibleSummarizeThinkingDescription": "CC Compatible વિચાર વિનંતીઓમાં `display: \"summarized\"` ઉમેરે છે, જેથી સપોર્ટેડ Claude મોડલ્સ દૃશ્યમાન વિચાર ડેલ્ટા સ્ટ્રીમ કરી શકે.", + "ccCompatibleSummarizeThinkingLabel": "સારાંશિત વિચાર પ્રદર્શન સક્ષમ કરો", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "ઉપલબ્ધ હોય ત્યારે Codex વિનંતીઓ માટે પ્રાથમિકતા સેવા સ્તરનો ઉપયોગ કરો.", + "codexFastServiceTierLabel": "Codex ઝડપી સેવા સ્તર", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "સુસંગત અપસ્ટ્રીમ હેડર નામ પ્લેસહોલ્ડર", + "compatUpstreamHeaderValuePlaceholder": "સુસંગત અપસ્ટ્રીમ હેડર મૂલ્ય પ્લેસહોલ્ડર", + "compatible": "સુસંગત", + "configuredCount": "ગોઠવેલ સંખ્યા", + "consoleApiKeyOracleHint": "કન્સોલ API કી Oracle સંકેત", + "consoleApiKeyOracleLabel": "કન્સોલ API કી Oracle લેબલ", + "consoleApiKeyOraclePlaceholder": "કન્સોલ API કી Oracle પ્લેસહોલ્ડર", + "newApiUserIdLabel": "New-API વપરાશકર્તા ID", + "newApiUserIdPlaceholder": "દા.ત. 12345", + "newApiUserIdHint": "AgentRouter New-Api-User હેડર મૂલ્ય, જેનો ઉપયોગ ક્વોટા બેલેન્સ મેળવવા માટે કન્સોલ API કી સાથે થાય છે.", "newApiAggregatorToggleLabel": "એગ્રેગેટર ગેટવે", "newApiAggregatorToggleHint": "નવી-એપીઆઈ / વન-એપીઆઈ / સબ2એપીઆઈ એગ્રેગેટર નોડ્સ માટે બેલેન્સ ડિટેક્શન સક્રિય કરો. ડેશબોર્ડ બેલેન્સ બેજ દર્શાવશે અને ક્વોટા-પ્રિફ્લાઇટ રૂટિંગ થાકેલા ખાતાઓને અવગણશે.", "newApiAggregatorConsoleApiKeyHint": "એગ્રેગેટરનાં /api/user/self એન્ડપોઈન્ટ માટે સિસ્ટમ ઍક્સેસ ટોકન. રૂટિંગ API કી નથી.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "નવી-એપીઆઈ / વન-એપીઆઈ / સબ2એપીઆઈ એગ્રેગેટર અનુકૂળ નોડ્સ માટે બેલેન્સ શોધને સક્રિય કરો", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "કસ્ટમ વપરાશકર્તા એજન્ટ સંકેત", + "customUserAgentLabel": "કસ્ટમ વપરાશકર્તા એજન્ટ લેબલ", + "databricksBaseUrlHint": "Databricks બેઝ URL સંકેત", + "defaultThinkingStrengthHint": "જ્યારે વિનંતીમાં તર્કના પ્રયત્નનું સ્તર નિર્દિષ્ટ ન હોય ત્યારે તેનો ઉપયોગ થાય છે.", + "defaultThinkingStrengthLabel": "ડિફૉલ્ટ વિચાર શક્તિ", + "deleteAllExtraApiKeys": "બધું કાઢી નાખો", + "excludedModelsHint": "બાકાત રાખેલા મોડલ્સ માટે સંકેત", + "excludedModelsLabel": "બાકાત રાખેલા મોડલ્સનું લેબલ", + "excludedModelsPlaceholder": "બાકાત રાખેલા મોડલ્સ માટેનું પ્લેસહોલ્ડર", + "expirationBannerExpired": "સમાપ્તિ બેનર: સમય સમાપ્ત", + "expirationBannerExpiredDesc": "સમાપ્તિ બેનર: સમય સમાપ્ત થવાનું વર્ણન", + "expirationBannerExpiringSoon": "સમાપ્તિ બેનર: ટૂંક સમયમાં સમય સમાપ્ત થશે", + "expirationBannerExpiringSoonDesc": "સમાપ્તિ બેનર: ટૂંક સમયમાં સમય સમાપ્ત થવાનું વર્ણન", + "extraApiKeyMasked": "કી {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "વધારાની API કીઓ માટે સંકેત", + "extraApiKeysLabel": "વધારાની API કીઓનું લેબલ", + "apiKeyHealthLabel": "API કીનું સ્વાસ્થ્ય", + "apiKeyStatusActive": "સક્રિય", + "apiKeyStatusWarning": "ચેતવણી ({count} નિષ્ફળતાઓ)", + "apiKeyStatusInvalid": "અમાન્ય", + "primaryKey": "પ્રાથમિક કી", + "apiKeyInvalidAlert": "કનેક્શન્સમાં પ્રમાણીકરણ નિષ્ફળતાઓને કારણે {count} API કી(ઓ)ને અમાન્ય તરીકે ચિહ્નિત કરવામાં આવી છે: {connections}. રોટેશન દરમિયાન તેમને અવગણવામાં આવશે. સમીક્ષા કરવા માટે ક્લિક કરો.", + "apiKeyInvalidAlertTitle": "API કી સ્વાસ્થ્ય ચેતવણી", + "apiKeyWarningAlert": "કનેક્શન્સમાં નિષ્ફળતાનો દર વધવાને કારણે {count} API કી(ઓ) ચેતવણીની સ્થિતિમાં છે: {connections}. રોટેશન સંબંધિત સમસ્યાઓ અટકાવવા માટે સમીક્ષા કરો.", + "apiKeyWarningAlertTitle": "API કી ચેતવણી", + "googlePseInfo": "Google Pse માહિતી", "antigravityProjectIdHint": "એન્ટિગ્રેવિટી ક્લાઉડ કોડ વિનંતીઓ માટે વૈકલ્પિક ઓવરરાઇડ. Google OAuth દરમિયાન શોધાયેલ પ્રોજેક્ટનો ઉપયોગ કરવા માટે ખાલી છોડો.", "antigravityClientProfileLabel": "ક્લાયન્ટ પ્રોફાઇલ", "antigravityClientProfileHint": "OmniRoute API સમક્ષ કઈ Antigravity ક્લાયન્ટ ઓળખ રજૂ કરે છે તે પસંદ કરો.", @@ -5865,47 +5868,47 @@ "tierFast": "ઝડપી", "antigravityProjectIdLabel": "Google ક્લાઉડ પ્રોજેક્ટ ID", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok Web કૂકી પ્લેસહોલ્ડર", + "herokuBaseUrlHint": "Heroku બેઝ URL માટે સંકેત", + "hideEmail": "ઇમેઇલ છુપાવો", + "imageProviders": "ઇમેજ પ્રદાતાઓ", "videoProviders": "વિડિઓ જનરેશન", "embeddingRerankProviders": "એમ્બેડિંગ્સ અને ફરીથી રેન્ક", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "ઇમેજનું ટૂંકું લેબલ", + "llmProviders": "Llm પ્રદાતાઓ", + "localProviderApiKeyOptionalHint": "સ્થાનિક પ્રદાતાની વૈકલ્પિક API કી માટે સંકેત", + "localProviderBaseUrlHint": "સ્થાનિક પ્રદાતાના બેઝ URL માટે સંકેત", + "localProviders": "સ્થાનિક પ્રદાતાઓ", + "maxConcurrentWholeNumberError": "મહત્તમ સમકાલીન મૂલ્ય પૂર્ણ સંખ્યા હોવું આવશ્યક છે", "m365TierLabel": "Copilot ટાયર", "m365TierHint": "આ કનેક્શન કયા Microsoft 365 Copilot સરફેસનો ઉપયોગ કરે છે તે પસંદ કરો. Individual એ ડિફૉલ્ટ ગ્રાહક BizChat છે; Education અને Enterprise (work) તેમના ટેનન્ટ સરફેસ પસંદ કરે છે.", "m365TierIndividualOption": "Individual (ડિફૉલ્ટ)", - "m365TierEduOption": "Education", - "m365TierEnterpriseOption": "Enterprise / Work", + "m365TierEduOption": "શિક્ષણ", + "m365TierEnterpriseOption": "એન્ટરપ્રાઇઝ / કાર્ય", "tierOverrideLabel": "ટાયર ઓવરરાઇડ", "tierOverrideAuto": "ઑટો (રાઉટિંગ નક્કી કરે છે)", "tierOverrideFree": "મફત", "tierOverrideCheap": "સસ્તું", "tierOverridePremium": "પ્રીમિયમ", "tierOverrideHelpText": "OmniRoute ને મોડેલ કિંમત પરથી તેનું અનુમાન કરવા દેવાને બદલે આ પ્રદાતાને રાઉટિંગ ટાયર પર પિન કરો.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark Web કૂકી માટે સંકેત", + "museSparkWebCookiePlaceholder": "Muse Spark Web કૂકી પ્લેસહોલ્ડર", + "oauth": "OAuth", + "openCliTools": "Cli ટૂલ્સ ખોલો", + "openSettings": "સેટિંગ્સ ખોલો", + "openaiResponsesStoreDescription": "સુસંગત Responses API વિનંતીઓને સંગ્રહિત પ્રતિસાદની સ્થિતિ જાળવી રાખવાની મંજૂરી આપો.", + "openaiResponsesStoreLabel": "OpenAI Responses સ્ટોર", + "perplexitySearchSharedKeyInfo": "Perplexity Search શેર કરેલી કી વિશેની માહિતી", + "perplexityWebCookieHint": "Perplexity Web કૂકી માટેનો સંકેત", + "perplexityWebCookiePlaceholder": "Perplexity Web કૂકીનું પ્લેસહોલ્ડર", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "રેટ લિમિટ ઓવરરાઇડ્સ", "rateLimitOverridesMaxConcurrentHint": "આ કનેક્શન માટે મહત્તમ સમવર્તી વિનંતીઓ ઓવરરાઇડ. એકાઉન્ટ-સ્તરની મર્યાદાને ઓવરરાઇડ કરે છે.", "rateLimitOverridesMaxConcurrentLabel": "મહત્તમ સમવર્તી (રેટ લિમિટ)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "રેટ-લિમિટ સ્લોટ માટે વિનંતી નિષ્ફળ થાય તે પહેલાં તે રાહ જોઈ શકે તે મહત્તમ સમય (ms). આ ફક્ત આ કનેક્શન માટે વૈશ્વિક Resilience સેટિંગને ઓવરરાઇડ કરે છે.", + "rateLimitOverridesMaxWaitMsLabel": "કતારમાં રાહ જોવાનો મહત્તમ સમય (ms)", "rateLimitOverridesMinTimeHint": "વિનંતીઓ વચ્ચેનો ન્યૂનતમ સમય (ms). ડિફૉલ્ટ રેટ લિમિટર વિલંબને ઓવરરાઇડ કરે છે.", "rateLimitOverridesMinTimeLabel": "ન્યૂનતમ અંતરાલ (ms)", "rateLimitOverridesRpdHint": "આ કનેક્શન માટે પ્રતિ દિવસ મહત્તમ વિનંતીઓ. પ્રદાતા ડિફૉલ્ટને ઓવરરાઇડ કરે છે.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (ટોકન્સ/દિવસ)", "rateLimitOverridesTpmHint": "આ કનેક્શન માટે પ્રતિ મિનિટ મહત્તમ ટોકન્સ. પ્રદાતા ડિફૉલ્ટને ઓવરરાઇડ કરે છે.", "rateLimitOverridesTpmLabel": "TPM (ટોકન્સ/મિનિટ)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", - "searchProviders": "Search Providers", + "refreshOauthTokenTitle": "OAuth ટોકન રિફ્રેશ કરો", + "regionHint": "પ્રદેશ માટેનો સંકેત", + "regionLabel": "પ્રદેશ", + "removeThisKey": "આ કી દૂર કરો", + "routingTagsHint": "રાઉટિંગ ટૅગ્સ માટેનો સંકેત", + "routingTagsLabel": "રાઉટિંગ ટૅગ્સ", + "routingTagsPlaceholder": "રાઉટિંગ ટૅગ્સનું પ્લેસહોલ્ડર", + "search": "શોધો", + "searchEngineIdHint": "સર્ચ એન્જિન ID માટેનો સંકેત", + "searchEngineIdLabel": "સર્ચ એન્જિન ID", + "searchEngineIdRequired": "સર્ચ એન્જિન ID આવશ્યક છે", + "searchProvider": "શોધ પ્રદાતા", + "searchProviderDesc": "શોધ પ્રદાતાનું વર્ણન", + "searchProviders": "શોધ પ્રદાતાઓ", "searchByModel": "મોડેલ દ્વારા શોધો…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "શોધ પ્રદાતાઓ", + "searxngBaseUrlHint": "Searxng બેઝ URL માટેનો સંકેત", + "searxngInfo": "Searxng વિશેની માહિતી", + "sessionCookieLabel": "સેશન કૂકી", + "showEmail": "ઈમેલ બતાવો", + "snowflakeBaseUrlHint": "Snowflake બેઝ URL માટેનો સંકેત", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "ટૅગ જૂથ માટેનો સંકેત", + "tagGroupLabel": "ટૅગ જૂથ", + "tagGroupPlaceholder": "ટૅગ જૂથનું પ્લેસહોલ્ડર", + "testModel": "મોડેલનું પરીક્ષણ કરો", + "testingModel": "મોડેલનું પરીક્ષણ થઈ રહ્યું છે", "modelTestQuotaTooltip": "ક્વોટા પૂરી થઈ ગઈ છે — કાલે પુનઃસેટ થાય છે અથવા ટોપ-અપની જરૂર છે", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "ટોકનની મુદત સમાપ્ત", + "tokenExpiredTitle": "ટોકનની મુદત સમાપ્ત થઈ ગઈ છે", + "tokenExpiresSoonTitle": "ટોકનની મુદત ટૂંક સમયમાં સમાપ્ત થશે", + "tokenShort": "ટૂંકું ટોકન", + "totalKeysRotating": "{count, plural, one {1 કી રોટેટ થઈ રહી છે} other {# કીઓ રોટેટ થઈ રહી છે}}", + "unhideModel": "મોડેલ ફરી બતાવો", + "upstreamProxyProviders": "અપસ્ટ્રીમ પ્રોક્સી પ્રદાતાઓ", "validationModelIdHint": "API કી ચકાસવા માટે વપરાતું મૉડલ. પ્રદાતાના પ્રથમ ઉપલબ્ધ મૉડલનો ઉપયોગ કરવા માટે ખાલી છોડો.", "validationModelIdLabel": "માન્યતા મૉડલ", "validationModelIdPlaceholder": "દા.ત. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "તમારું Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) અથવા OAuth access_token પેસ્ટ કરો", + "webCookieProviders": "વેબ કૂકી પ્રદાતાઓ", + "weeklyShort": "સાપ્તાહિક ટૂંકું", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo બેઝ URL સંકેત", "globalCodexServiceMode": "ગ્લોબલ Codex સેવા મોડ", "connect": "કનેક્ટ કરો", "manualApiKey": "મેન્યુઅલ API કી", @@ -5975,9 +5978,9 @@ "zedImportDescription": "OS કીચેઇનમાં Zed IDE દ્વારા સંગ્રહિત AI પ્રદાતા ઓળખપત્રો (OpenAI, Anthropic, Google, Mistral, xAI) શોધો અને તેમને કનેક્શન્સ તરીકે આયાત કરો. આ મશીન પર Zed IDE ઇન્સ્ટોલ કરેલું હોવું આવશ્યક છે.", "zedImportButton": "Zed માં આયાત કરો", "zedImportFailed": "ઝેડ આયાત નિષ્ફળ ગઈ", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed ઇમ્પોર્ટ સંકેત", + "zedImportNetworkError": "Zed ઇમ્પોર્ટ નેટવર્ક ભૂલ", + "zedImportNone": "Zed ઇમ્પોર્ટ: કંઈ નહીં", "zedImportSuccess": "{providers} પ્રદાતા(ઓ) માટે Zed માંથી {credentials} પ્રમાણપત્ર(ઓ) આયાત કરવામાં આવ્યા", "zedImporting": "આયાત કરી રહ્યા છીએ…", "zedNoCredentials": "કીચેઇનમાં કોઈ Zed ઓળખપત્રો મળ્યા નથી", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5 સહિત 40+ મોડલ્સ માટે ડિસ્કાઉન્ટેડ API પ્રોક્સી. https://freeaiapikey.com/dashboard પર તમારી API કી મેળવો. બેઝ URL: https://freeaiapikey.com/v1.", "freemodel-dev": "https://freemodel.dev પર $300 મફત API ક્રેડિટ્સ મેળવો — કોઈ ચુકવણી માહિતીની જરૂર નથી. OpenAI-સુસંગત એન્ડપોઇન્ટ. GPT-5.4 અને GPT-5.5 મોડલ્સ ઉપલબ્ધ છે.", "friendliai": "સર્વરલેસ ઇન્ફરન્સ માટે મફત સ્તર — કોઈ ક્રેડિટ કાર્ડની જરૂર નથી", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio મારફતે મફત સ્તર; પ્રતિ-મોડેલ ક્વોટા હવે પ્રકાશિત થતા નથી (AI Studioમાં ક્વોટા પેજ તપાસો) — ક્રેડિટ કાર્ડની જરૂર નથી.", "gigachat": "API કી વડે GigaChat (Sber) ને કનેક્ટ કરો.", "gitlab": "સાર્વજનિક Code Suggestions API માટે GitLab વ્યક્તિગત ઍક્સેસ ટોકન. જ્યારે gitlab.com નો ઉપયોગ ન કરી રહ્યા હોવ ત્યારે સેલ્ફ-હોસ્ટેડ બેઝ URL કન્ફિગર કરો.", "gitlawb-gmi": "Gitlawb Opengateway ડેશબોર્ડ પરથી તમારી API કી મેળવો.", @@ -6184,7 +6187,7 @@ "glm-cn": "API કી વડે GLM Coding (China) ને કનેક્ટ કરો.", "glmt": "ઉચ્ચ ટોકન બજેટ, વિચારવાની ક્ષમતા સક્ષમ અને લાંબા સમયસમાપ્તિ સાથે પ્રીસેટ GLM પ્રોફાઇલ.", "getgoapi": "API કી વડે GoAPI ને કનેક્ટ કરો.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "મફત પ્લાન: પ્રતિ-મોડેલ મર્યાદાઓ (દરેક ચેટ મોડેલ માટે દરરોજ 200K ટોકન્સ; RPM/RPD માટે console.groq.com/docs/rate-limits જુઓ) — ફાઇલમાં કોઈ ચુકવણી પદ્ધતિ નથી.", "haiper": "haiper.ai/haiper-api પર API કી મેળવો", "heroku": "API કી વડે Heroku AI ને કનેક્ટ કરો.", "hcnsec": "api.hcnsec.cn પર API કી મેળવો", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.ai પર API key બનાવો, પછી તેને અહીં Bearer token તરીકે પેસ્ટ કરો. લાઈવ /v1/models કેટલોગ સાથે https://router.requesty.ai/v1 પર OpenAI-સુસંગત એન્ડપોઇન્ટ.", "runwayml": "Runway વીડિયો જનરેશન ટાસ્ક-આધારિત છે. OmniRoute ટેક્સ્ટ-ટુ-વીડિયો અથવા ઇમેજ-ટુ-વીડિયો જોબ્સ સબમિટ કરે છે, /v1/tasks/[id] ને પોલ કરે છે, અને પૂર્ણ થયેલા વીડિયો આઉટપુટને ફરીથી OpenAI જેવા /v1/videos/generations રિસ્પોન્સમાં નોર્મલાઇઝ કરે છે.", "sambanova": "સાઇનઅપ પર $5 મફત ક્રેડિટ્સ (30-દિવસની માન્યતા), કોઈ ક્રેડિટ કાર્ડની જરૂર નથી", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.cc પર API કી બનાવો, પછી તેને Bearer ટોકન તરીકે અહીં પેસ્ટ કરો. OpenAI-સુસંગત બેઝ URL: https://seekai.cc/v1.", "sap": "મોડલ ડિસ્કવરી AI_API_URL પર /v2/lm/scenarios/foundation-models/models નો ઉપયોગ કરે છે. ચેટ વિનંતીઓ deploymentUrl/chat/completions નો ઉપયોગ કરે છે અને તેના માટે AI-Resource-Group જરૂરી છે.", "sarvam": "Sarvam AI OpenAI-સંગત છે /v1. OmniRoute /v1/models ને તપાસે છે અને ચેટ ટ્રાફિકને /v1/chat/completions પર રુટ કરે છે. મોડલ્સ ઇન્ડિક ભાષાઓ માટે ટ્યુન કરવામાં આવ્યા છે.", "scaleway": "નવા એકાઉન્ટ્સ માટે 1M મફત ટોકન્સ — EU/GDPR સુસંગત (પેરિસ), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "હાલના OAuth ફ્લો વડે Claude Code ને કનેક્ટ કરો.", "cline": "હાલના OAuth ફ્લો વડે Cline ને કનેક્ટ કરો.", "cursor": "હાલના OAuth ફ્લો વડે Cursor IDE ને કનેક્ટ કરો.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "cursor.com/dashboard/api પરથી વપરાશકર્તા API કી (crsr_...) વડે Cursorને કનેક્ટ કરો; IDE સેશનની જરૂર નથી.", "github": "હાલના OAuth ફ્લો વડે GitHub Copilot ને કનેક્ટ કરો.", "gitlab-duo": "ai_features + read_user સ્કોપ્સ સાથેની OAuth એપ્લિકેશન. આ OmniRoute ઇન્સ્ટન્સ પર GITLAB_DUO_OAUTH_CLIENT_ID અને વૈકલ્પિક રીતે GITLAB_DUO_OAUTH_CLIENT_SECRET કન્ફિગર કરો.", "kilocode": "હાલના OAuth ફ્લો વડે Kilo Code ને કનેક્ટ કરો.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "પ્રદાતાના પોતાના ડોમેનમાંથી જરૂરી ઓળખપત્રની નકલ કરો. કૂકીઝ માટે, ફક્ત કૂકી હેડર મૂલ્યની નકલ કરો અને કૂકીને છોડી દો.", "webSessionGuideStep3Manual": "હાથથી માર્ગ: બ્રાઉઝર ડેવલપર ટૂલ્સ ખોલો (F12 → નેટવર્ક), પૃષ્ઠને રિફ્રેશ કરો, એક માન્યતા પ્રાપ્ત વિનંતી ખોલો, અને વિનંતી હેડર્સમાંથી કૂકી હેડર મૂલ્ય નકલ કરો — કૂકી: પૂર્વપ્રતિષ્ઠા છોડી દો.", "webSessionGuideStep4": "તેને અહીં પેસ્ટ કરો અને કનેક્શન તપાસો. જો તે કામ કરવાનું બંધ કરે, તો ફરીથી સાઇન ઇન કરો અને તેને નવી કિંમત સાથે બદલો.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har ફાઇલ ઇમ્પોર્ટ કરો", + "harImportButtonBusy": "ઇમ્પોર્ટ થઈ રહ્યું છે…", + "harImportButtonHint": "ઓછામાં ઓછો એક ચેટ સંદેશ મોકલ્યા પછી DevTools Network ટૅબમાંથી એક્સપોર્ટ કરો.", + "harImportStatusValid": "ઇમ્પોર્ટ થયું — લગભગ {minutes} મિનિટ માટે માન્ય.", + "harImportStatusExpiringSoon": "ઇમ્પોર્ટ થયું — હવે માત્ર લગભગ {minutes} મિનિટ વધુ માટે માન્ય.", + "harImportStatusExpired": "ઇમ્પોર્ટ થયું, પરંતુ આ ટોકન પહેલેથી જ સમાપ્ત થઈ ગયું છે ({minutes} મિનિટ પહેલાં) — નવું HAR એક્સપોર્ટ કરો.", + "harImportStatusUnknownExpiry": "ઇમ્પોર્ટ થયું. તેની સમાપ્તિનો સમય વાંચી શકાયો નહીં.", + "harImportErrorNotJson": "આ ફાઇલ માન્ય JSON નથી — શું તે ખરેખર .har એક્સપોર્ટ છે?", + "harImportErrorNoEntries": "આ HARમાં કોઈ નેટવર્ક એન્ટ્રી રેકોર્ડ થયેલી નથી.", + "harImportErrorNoChathubUrl": "આ HARમાં કોઈ Copilot ચેટ કનેક્શન મળ્યું નથી. એક્સપોર્ટ કરતાં પહેલાં m365.cloud.microsoftમાં ઓછામાં ઓછો એક ચેટ સંદેશ મોકલો.", + "harImportErrorUnparsableUrl": "ચેટ કનેક્શન મળ્યું, પરંતુ તેનું URL વાંચી શકાયું નહીં.", + "harImportErrorMissingFields": "ચેટ કનેક્શન મળ્યું, પરંતુ તેમાં ટોકન હાજર નહોતું.", + "harImportErrorReadFailed": "તે ફાઇલ વાંચી શકાઈ નહીં.", + "harImportErrorUnknown": "તે HAR ફાઇલમાંથી ઓળખપત્ર કાઢી શકાયું નહીં.", "webSessionSecurityHint": "આને પાસવર્ડની જેમ વર્તે છે: જ્યાં સુધી તે સમાપ્ત ન થાય અથવા રદ ન થાય ત્યાં સુધી તે તમારા સાઇન-ઇન કરેલા વેબ એકાઉન્ટને ઍક્સેસ કરી શકે છે.", "webNoAuthGuideTitle": "કોઈ ઓળખપત્રની જરૂર નથી", "webNoAuthGuideBody": "{provider} ને API કી અથવા કૂકીની જરૂર નથી. કનેક્શનને તેના મફત વેબ એન્ડપોઇન્ટનો ઉપયોગ કરવા માટે સાચવો.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "કમાન્ડ કોડ ઓથ સમાપ્ત થઈ ગયો", "commandCodeConnected": "કમાન્ડ કોડ જોડાયેલ છે", "commandCodeConnectionAdded": "કમાન્ડ કોડ કનેક્શન ઉમેરાયું", + "clearConnectionCooldown": "કૂલડાઉન સાફ કરો", + "clearConnectionCooldownInProgress": "સાફ થઈ રહ્યું છે…", + "clearConnectionCooldownTitle": "હમણાં કૂલડાઉન સાફ કરો — જ્યારે મૂળ સ્ત્રોત પર ક્વોટા પહેલેથી જ રિફ્રેશ થઈ ગયો હોય ત્યારે ઉપયોગ કરો", "commandCodeLinkExpired": "કમાન્ડ કોડ લિંક સમાપ્ત થઈ ગઈ છે", "commandCodeOpeningStudio": "કમાન્ડ કોડ સ્ટુડિયો ખોલી રહ્યું છે…", "commandCodePopupBlocked": "પોપઅપ અવરોધિત. કૃપા કરીને પોપઅપને મંજૂરી આપો અને ફરીથી Command Code Connect પ્રયાસ કરો.", "commandCodeStartFailed": "Command Code auth શરૂ કરવામાં નિષ્ફળ રહ્યું", "connectionDeleted": "કનેક્શન કાઢી નાખવામાં આવ્યું", "connectionFallback": "સંબંધ", + "connectionCooldownCleared": "કૂલડાઉન સાફ થયું — કનેક્શન ફરીથી રાઉટિંગમાં જોડાયું", "coolingConnectionsDescription": "આ કનેક્શનો છેલ્લી વિનંતી પછી ઠંડા થઈ રહ્યાં છે. ટાઈમર પૂરું થાય ત્યાં સુધી OmniRoute તેમને છોડી દેશે — હાથથી બંધ કરવાની જરૂર નથી.", "coolingConnectionsTitle": "હાલમાં ઠંડું કરી રહ્યા છીએ ({count})", + "failedClearConnectionCooldown": "કૂલડાઉન સાફ કરવામાં નિષ્ફળતા", "failedDeleteAlias": "એલિયસ કાઢવામાં નિષ્ફળ થયું", "failedDeleteConnection": "કનેક્શન કાઢવામાં નિષ્ફળ થયું", "failedDistributeProxies": "પ્રોક્સી વિતરણમાં નિષ્ફળ.", @@ -6470,21 +6478,16 @@ "savedModelEndpointSettings": "સાચવેલ મોડેલ અંતિમ બિંદુની સેટિંગ્સ", "searchByModelAria": "મોડલ દ્વારા શોધો", "selectSupportedEndpoint": "કમથી કમ એક સમર્થિત અંતિમ બિંદુ પસંદ કરો", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "હાર્નેસ / CLI" }, "settings": { - "title": "Settings", - "general": "General", - "security": "Security", - "appearance": "Appearance", - "routing": "Routing", - "cache": "Cache", - "resilience": "Resilience", + "title": "સેટિંગ્સ", + "general": "સામાન્ય", + "security": "સુરક્ષા", + "appearance": "દેખાવ", + "routing": "રાઉટિંગ", + "cache": "કૅશ", + "resilience": "સ્થિતિસ્થાપકતા", "description": "વર્ણન", "enable": "સક્ષમ કરો", "disable": "અક્ષમ કરો", @@ -6551,25 +6554,25 @@ "routingOpStatusSeparator": " ·", "resilienceSettingsIntro": "જ્યારે પ્રદાતાઓ નિષ્ફળ જાય ત્યારે સ્વચાલિત ફરી પ્રયાસ, કૂલડાઉન અને ફોલબેક.", "aiSettingsIntro": "બજેટ, મોડલ વર્તન અને સંકોચન વિચારવા માટે AI-વિશિષ્ટ સેટિંગ્સ.", - "systemPrompt": "System Prompt", - "thinkingBudget": "Thinking Budget", + "systemPrompt": "સિસ્ટમ પ્રોમ્પ્ટ", + "thinkingBudget": "વિચારણા બજેટ", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP પ્રોક્સી", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "પ્રોક્સી વિભાગો", + "requestBodyLimitTitle": "વિનંતી બોડી મર્યાદા", + "requestBodyLimitDescription": "વિનંતી બોડીનું વિશ્લેષણ થાય તે પહેલાં સ્વીકારવામાં આવતી મહત્તમ API પેલોડ સાઇઝ. સમર્પિત અપલોડ રૂટ્સ માટે ઓછામાં ઓછી તેમની બિલ્ટ-ઇન 100 MB મર્યાદા જળવાઈ રહે છે.", + "requestBodyLimitInputLabel": "MBમાં વિનંતી બોડી મર્યાદા", + "requestBodyLimitEmptyError": "MBમાં મર્યાદા દાખલ કરો", + "requestBodyLimitWholeNumberError": "પૂર્ણાંકનો ઉપયોગ કરો", + "requestBodyLimitMinimumError": "ન્યૂનતમ {min} MB છે", + "requestBodyLimitMaximumError": "મહત્તમ {max} MB છે", + "requestBodyLimitLoadFailed": "વિનંતી મર્યાદા સેટિંગ્સ લોડ કરવામાં નિષ્ફળતા", + "requestBodyLimitSaveSuccess": "વિનંતી બોડી મર્યાદા સાચવાઈ", + "requestBodyLimitSaveFailed": "વિનંતી બોડી મર્યાદા સાચવવામાં નિષ્ફળતા", + "requestBodyLimitSaving": "સાચવી રહ્યું છે...", + "requestBodyLimitSave": "સાચવો", + "requestBodyLimitCurrent": "વર્તમાન: {value}", "cacheConfigLoadFailed": "કેશ સેટિંગ્સ લોડ કરવામાં નિષ્ફળ રહ્યું", "cacheConfigSaveSuccess": "કેશ સેટિંગ્સ સાચવવામાં આવી છે", "cacheConfigSaveFailed": "કેશ સેટિંગ્સ સાચવવામાં નિષ્ફળ થયું", @@ -6583,69 +6586,69 @@ "modelCatalogCacheTtlSave": "સાચવો", "modelCatalogCacheTtlCurrent": "વર્તમાન: {value} મિ.સે.", "mitmProxy": "MITM પ્રોક્સી", - "pricing": "Pricing", - "storage": "Storage", - "policies": "Policies", - "ipFilter": "IP Filter", - "comboDefaults": "Combo Defaults", - "fallbackChains": "Fallback Chains", - "changePassword": "Change Password", - "enablePassword": "Enable Password", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "pricing": "કિંમત નિર્ધારણ", + "storage": "સ્ટોરેજ", + "policies": "નીતિઓ", + "ipFilter": "IP ફિલ્ટર", + "comboDefaults": "કોમ્બો ડિફૉલ્ટ્સ", + "fallbackChains": "ફૉલબૅક ચેઇન્સ", + "changePassword": "પાસવર્ડ બદલો", + "enablePassword": "પાસવર્ડ સક્ષમ કરો", + "darkMode": "ડાર્ક મોડ", + "lightMode": "લાઇટ મોડ", + "memoryTitle": "મેમરી", + "memoryDesc": "સત્રો વચ્ચે સતત રહેતી સંવાદાત્મક મેમરી", + "memoryEnabled": "મેમરી સક્ષમ કરો", + "memoryEnabledDesc": "સક્ષમ હોય ત્યારે, OmniRoute ભૂતકાળનો સંબંધિત સંદર્ભ ઉમેરશે.", "memoryTokenCostWarning": "ધ્યાન આપો: મેમરી સક્ષમ હોવા સાથે, OmniRoute દરેક ચેટ વિનંતીમાં પુનઃપ્રાપ્ત સંદર્ભના {tokens} ટોકન્સ સુધી ઇન્જેક્ટ કરે છે — આ ટોકન વપરાશ અને ખર્ચમાં વધારો કરે છે. ચોક્કસ વિનંતી માટે ઇન્જેક્શન છોડવા માટે, \"x-omniroute-no-memory: true\" હેડર મોકલો.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", - "justNow": "Just now", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", - "providers": "Providers", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", - "systemTheme": "System Theme", - "debugToggle": "Enable Debug Mode", + "maxTokens": "મહત્તમ ટોકન્સ", + "retentionDays": "જાળવણી", + "recent": "તાજેતરનું", + "recentDesc": "કાલક્રમિક વિન્ડો", + "semantic": "અર્થલક્ષી", + "semanticDesc": "વેક્ટર શોધ", + "hybrid": "હાઇબ્રિડ", + "hybridDesc": "તાજેતરનું + અર્થલક્ષી", + "skillsTitle": "કૌશલ્યો", + "skillsDesc": "મોડેલો માટેનાં સાધનો", + "skillsEnabled": "કૌશલ્યો સક્ષમ કરો", + "skillsEnabledDesc": "એજન્ટોને ફંક્શન્સ ટ્રિગર કરવાની મંજૂરી આપે છે.", + "skillsComingSoon": "કૌશલ્યોનું માર્કેટપ્લેસ ટૂંક સમયમાં આવી રહ્યું છે.", + "memorySkillsTitle": "મેમરી અને કૌશલ્યો", + "memorySkillsDesc": "સતત સંદર્ભ અને ક્ષમતાઓ", + "modelsDevTitle": "મોડેલ ડેટાબેઝ", + "modelsDevDesc": "models.dev પરથી કિંમતો, ક્ષમતાઓ અને વિશિષ્ટતાઓ આપમેળે સમન્વયિત કરો", + "modelsDevEnabled": "models.dev સમન્વયન સક્ષમ કરો", + "modelsDevEnabledDesc": "ઓપન-સોર્સ models.dev ડેટાબેઝમાંથી મોડેલની કિંમતો, ક્ષમતાઓ અને વિશિષ્ટતાઓ મેળવો", + "modelsDevInterval": "સમન્વયન અંતરાલ", + "syncNow": "હમણાં સમન્વયિત કરો", + "syncing": "સમન્વયિત થઈ રહ્યું છે...", + "lastSync": "છેલ્લું સમન્વયન", + "never": "ક્યારેય નહીં", + "justNow": "હમણાં જ", + "modelsDevStats": "સમન્વયન આંકડા", + "modelsDevStatsDesc": "વર્તમાન models.dev ડેટા કવરેજ", + "providers": "પ્રદાતાઓ", + "modelsWithPricing": "કિંમતની માહિતી ધરાવતા મોડેલો", + "capabilities": "ક્ષમતાઓ", + "lastSyncCount": "છેલ્લા સમન્વયની સંખ્યા", + "lastSyncFull": "છેલ્લું સંપૂર્ણ સમન્વયન", + "modelsDevInfo": "તે કેવી રીતે કાર્ય કરે છે", + "modelsDevInfoDesc": "models.dev એ SST/OpenCode ટીમ દ્વારા જાળવવામાં આવતો AI મોડેલ વિશિષ્ટતાઓનો ઓપન-સોર્સ ડેટાબેઝ છે. તે 100+ પ્રદાતાઓનાં 4,000+ મોડેલો માટે કિંમતો, ક્ષમતાઓ, સંદર્ભ મર્યાદાઓ અને મોડાલિટીઝ પ્રદાન કરે છે.", + "modelsDevInfoResolution": "કિંમત નિર્ધારણનો ક્રમ (સૌથી ઊંચી પ્રાથમિકતા પ્રથમ):", + "modelsDevInfoOrder": "વપરાશકર્તા ઓવરરાઇડ → models.dev → LiteLLM → હાર્ડકોડેડ ડિફૉલ્ટ", + "systemTheme": "સિસ્ટમ થીમ", + "debugToggle": "ડીબગ મોડ સક્ષમ કરો", "logToolSourcesToggle": "ટૂલ સ્રોતો લોગ કરો", "logToolSourcesDescription": "ટૂલની સંખ્યા અને MCP/હોસ્ટેડ/ક્લાયન્ટ સ્રોત વિભાજનનો સારાંશ આપતી વિનંતી દીઠ ડાયગ્નોસ્ટિક લોગ લાઇન ઉત્સર્જિત કરો.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "માહિતીને હોમ પેજ પર પિન કરો", "homePinnedSectionsDesc": "હોમ પેજના ટોચ પર કયા વિભાગોને પિન કરવા તે પસંદ કરો.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "પ્રદાતાની ક્વોટા મર્યાદાઓ", + "homeProviderQuotaLimitsDesc": "પ્રદાતા ક્વોટા સ્થિતિ કન્ટેનરને (Refresh All બટન સાથે) હોમ પેજની ટોચ પર પિન કરો.", + "homeQuickStart": "ઝડપી શરૂઆત", + "homeQuickStartDesc": "હોમ પેજ પર ઝડપી શરૂઆત પેનલ બતાવો.", + "homeProviderTopology": "પ્રદાતા ટોપોલોજી", + "homeProviderTopologyDesc": "હોમ પેજ પર પ્રદાતા ટોપોલોજી બતાવો.", "accountEmailVisibility": "એકાઉન્ટ ઇમેઇલ દૃશ્યતા", "accountEmailVisibilityDesc": "પ્રદાતાઓ, કોમ્બોઝ, લોગ્સ, ક્વોટા અને પ્લેગ્રાઉન્ડ સ્ક્રીન પર સંપૂર્ણ એકાઉન્ટ ઇમેઇલ્સ બતાવો. તેમને ડિફોલ્ટ રૂપે માસ્ક કરવા માટે આને બંધ કરો.", "comboConfigMode": "કોમ્બો કન્ફિગરેશન મોડ", @@ -6661,89 +6664,89 @@ "providerQuotaAutoRefreshInterval": "રીફ્રેશ અંતરાલ", "providerQuotaAutoRefreshIntervalDesc": "ક્વોટા વ્યુ કેટલી વાર રીફ્રેશ થવું જોઈએ, સેકન્ડમાં.", "seconds": "સેકન્ડ", - "sidebarVisibilityToggle": "Show Sidebar Items", - "enableCache": "Enable Cache", - "cacheTTL": "Cache TTL", - "maxCacheSize": "Max Cache Size", - "clearCache": "Clear Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", - "cacheHits": "Cache Hits", - "cacheMisses": "Cache Misses", - "hitRate": "Hit Rate", - "cacheEntries": "Cache Entries", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "sidebarVisibilityToggle": "સાઇડબાર આઇટમ્સ બતાવો", + "enableCache": "કૅશ સક્ષમ કરો", + "cacheTTL": "કૅશ TTL", + "maxCacheSize": "મહત્તમ કૅશ કદ", + "clearCache": "કૅશ સાફ કરો", + "cacheCleared": "કૅશ સફળતાપૂર્વક સાફ થઈ", + "clearCacheFailed": "કૅશ સાફ કરવામાં નિષ્ફળતા", + "cacheHits": "કૅશ હિટ્સ", + "cacheMisses": "કૅશ મિસિસ", + "hitRate": "હિટ દર", + "cacheEntries": "કૅશ એન્ટ્રીઓ", + "cacheSettings": "કૅશ સેટિંગ્સ", + "semanticCache": "સિમેન્ટિક કૅશ", + "maxEntries": "મહત્તમ એન્ટ્રીઓ", + "ttlMinutes": "TTL (મિનિટ)", + "promptCache": "પ્રોમ્પ્ટ કૅશ", + "strategy": "વ્યૂહરચના", + "preserveClientCache": "ક્લાયન્ટ કૅશ જાળવો", + "enabled": "સક્ષમ", "loading": "Loading...", - "saving": "Saving...", - "save": "Save", - "circuitBreaker": "Circuit Breaker", - "retryPolicy": "Retry Policy", - "maxRetries": "Max Retries", - "retryDelay": "Retry Delay", - "timeoutMs": "Timeout (ms)", - "enableSystemPrompt": "Enable System Prompt", - "systemPromptText": "System Prompt Text", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "saving": "સાચવી રહ્યું છે...", + "save": "સાચવો", + "circuitBreaker": "સર્કિટ બ્રેકર", + "retryPolicy": "પુનઃપ્રયાસ નીતિ", + "maxRetries": "મહત્તમ પુનઃપ્રયાસો", + "retryDelay": "પુનઃપ્રયાસ વિલંબ", + "timeoutMs": "સમયસમાપ્તિ (ms)", + "enableSystemPrompt": "સિસ્ટમ પ્રોમ્પ્ટ સક્ષમ કરો", + "systemPromptText": "સિસ્ટમ પ્રોમ્પ્ટ ટેક્સ્ટ", + "autoDisableBannedAccounts": "પ્રતિબંધિત એકાઉન્ટ્સને આપમેળે અક્ષમ કરો", + "autoDisableDescription": "જો પ્રોવાઇડર કનેક્શન્સ ચોક્કસ અંતિમ પ્રતિબંધ સંકેતો આપે (દા.ત. HTTP 403 'તમારું એકાઉન્ટ ચકાસો'), તો તેમને કાયમી ધોરણે નિષ્ક્રિય તરીકે ચિહ્નિત કરો. આ તેમને કોમ્બો રોટેશનમાંથી દૂર કરે છે.", + "autoDisableThreshold": "પ્રતિબંધ થ્રેશોલ્ડ", + "autoDisableThresholdDesc": "કાયમી નિષ્ક્રિયતા પહેલાં જરૂરી સળંગ પ્રતિબંધ સંકેતો.", + "autoDisableBannedScope": "આના પર આપમેળે અક્ષમ કરવાનું લાગુ કરો", + "autoDisableBannedScopeDesc": "જો પ્રતિબંધ પછી OmniRoute પુનઃપ્રયાસ કરવાનું ચાલુ રાખે, તો અપસ્ટ્રીમ દ્વારા લૉગિન સીટ્સ (ચૂકવેલ સબ્સ્ક્રિપ્શન્સ અને મફત એકાઉન્ટ્સ) લૉક થઈ શકે છે. ચૂકવેલ પ્રીપેઇડ API કીઝને આ જોખમ નથી — તેમને પૂલમાં રાખો જેથી fill-first આગલી કીનો ઉપયોગ કરી શકે.", + "autoDisableBannedScopeAll": "બધા કનેક્શન્સ", + "autoDisableBannedScopeAllDesc": "પ્રીપેઇડ API કીઝ સહિત, કાયમી પ્રતિબંધ સંકેત આપતા દરેક કનેક્શનને નિષ્ક્રિય કરો.", + "autoDisableBannedScopeSubscription": "ફક્ત લૉગિન / સબ્સ્ક્રિપ્શન એકાઉન્ટ્સ", + "autoDisableBannedScopeSubscriptionDesc": "OAuth, કુકી, સેશન અને વેબ-લૉગિન સીટ્સ (ચૂકવેલ અથવા મફત) નિષ્ક્રિય કરો. પ્રીપેઇડ API કીઝ સક્રિય રહે છે જેથી રાઉટિંગ ફેલઓવર કરી શકે.", "customBannedSignals": "પ્રતિબંધિત કીવર્ડ્સ", "customBannedSignalsDesc": "વધારાના કીવર્ડ્સ જે કાયમી એકાઉન્ટ પ્રતિબંધ શોધને ટ્રિગર કરે છે. બિલ્ટ-ઇન કીવર્ડ્સ હંમેશા લાગુ પડે છે.", "customBannedSignalsPlaceholder": "દા.ત. api key revoked", "noCustomBannedSignals": "કોઈ કસ્ટમ કીવર્ડ્સ નથી. ફક્ત બિલ્ટ-ઇન કીવર્ડ્સ જ સક્રિય છે.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "સ્થિતિસ્થાપકતા માળખું", "resilienceStructureDesc": "આ પૃષ્ઠ માત્ર વર્તનને ગોઠવે છે. લાઇવ બ્રેકર સ્ટેટ હેલ્થ પેજ પર બતાવવામાં આવે છે. કૉમ્બો-વિશિષ્ટ ફરી પ્રયાસ અને રાઉન્ડ-રોબિન સ્લોટ નિયંત્રણ કૉમ્બો સેટિંગ્સ પર રહે છે.", - "enableThinking": "Enable Thinking", - "maxThinkingTokens": "Max Thinking Tokens", - "enableProxy": "Enable Proxy", + "enableThinking": "વિચાર પ્રક્રિયા સક્ષમ કરો", + "maxThinkingTokens": "મહત્તમ વિચાર ટોકન્સ", + "enableProxy": "પ્રોક્સી સક્ષમ કરો", "perKeyProxyEnabled": "કી દીઠ પ્રોક્સી અસાઇનમેન્ટ સક્ષમ કરો", "perKeyProxyEnabledDesc": "જ્યારે સક્ષમ હોય, ત્યારે દરેક પ્રદાતા કનેક્શન તેના પોતાના પ્રોક્સી અસાઇનમેન્ટનો ઉપયોગ કરી શકે છે", - "proxyUrl": "Proxy URL", - "pricingRates": "Pricing Rates Format", - "currentPricing": "Current Pricing Overview", - "loadingPricing": "Loading pricing data...", - "noPricing": "No pricing data available", - "input": "Input", - "output": "Output", - "cached": "Cached", + "proxyUrl": "પ્રોક્સી URL", + "pricingRates": "કિંમત દરોનું ફોર્મેટ", + "currentPricing": "વર્તમાન કિંમતનો સારાંશ", + "loadingPricing": "કિંમતનો ડેટા લોડ થઈ રહ્યો છે...", + "noPricing": "કિંમતનો કોઈ ડેટા ઉપલબ્ધ નથી", + "input": "ઇનપુટ", + "output": "આઉટપુટ", + "cached": "કૅશ કરેલું", "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "customPricing": "Custom Pricing", - "databaseSize": "Database Size", - "backupDb": "Backup Database", - "restoreDb": "Restore Database", - "exportData": "Export Data", - "importData": "Import Data", - "clearData": "Clear All Data", - "clearDataConfirm": "This will permanently delete all data. Are you sure?", - "enableRequestLogs": "Enable Request Logs", - "logRetention": "Log Retention", - "ipWhitelist": "IP Whitelist", - "ipBlacklist": "IP Blacklist", - "addIP": "Add IP", - "savedSuccessfully": "Settings saved successfully", + "cacheCreation": "કૅશ બનાવવું", + "customPricing": "કસ્ટમ કિંમત", + "databaseSize": "ડેટાબેઝનું કદ", + "backupDb": "ડેટાબેઝનો બૅકઅપ લો", + "restoreDb": "ડેટાબેઝ પુનઃસ્થાપિત કરો", + "exportData": "ડેટા નિકાસ કરો", + "importData": "ડેટા આયાત કરો", + "clearData": "બધો ડેટા સાફ કરો", + "clearDataConfirm": "આનાથી બધો ડેટા કાયમ માટે કાઢી નાખવામાં આવશે. શું તમે ખરેખર આ કરવા માંગો છો?", + "enableRequestLogs": "વિનંતી લૉગ્સ સક્ષમ કરો", + "logRetention": "લૉગ જાળવણી અવધિ", + "ipWhitelist": "IP વ્હાઇટલિસ્ટ", + "ipBlacklist": "IP બ્લૅકલિસ્ટ", + "addIP": "IP ઉમેરો", + "savedSuccessfully": "સેટિંગ્સ સફળતાપૂર્વક સાચવવામાં આવી", "ai": "AI", - "advanced": "Advanced", - "localMode": "Local Mode — All data stored on your machine", - "settingsSectionsAria": "Settings sections", - "switchThemes": "Switch between light and dark themes", - "themeSelectionAria": "Theme selection", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", + "advanced": "અદ્યતન", + "localMode": "લોકલ મોડ — બધો ડેટા તમારા મશીન પર સંગ્રહિત થાય છે", + "settingsSectionsAria": "સેટિંગ્સના વિભાગો", + "switchThemes": "લાઇટ અને ડાર્ક થીમ વચ્ચે સ્વિચ કરો", + "themeSelectionAria": "થીમની પસંદગી", + "themeLight": "લાઇટ", + "themeDark": "ડાર્ક", + "themeSystem": "સિસ્ટમ", "endpointTunnelVisibility": "અંતિમ બિંદુ ટનલ દૃશ્યતા", "endpointTunnelVisibilityDesc": "ટનલ સ્થિતિ બદલ્યા વિના એન્ડપોઇન્ટ પેજ પરથી ટનલ નિયંત્રણો છુપાવો.", "showCloudflareTunnel": "ક્લાઉડફ્લેર ક્વિક ટનલ", @@ -6752,47 +6755,47 @@ "showTailscaleFunnelDesc": "એન્ડપોઇન્ટ પેજ પર ટેઇલસ્કેલ ફનલ નિયંત્રણો બતાવો.", "showNgrokTunnel": "ngrok ટનલ", "showNgrokTunnelDesc": "એન્ડપોઇન્ટ પેજ પર એનગ્રોક ટનલ નિયંત્રણો બતાવો.", - "sidebarVisibility": "Hide sidebar items", - "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter without disabling any features", - "sidebarVisibilityHint": "Any sidebar section is hidden automatically when all of its entries are hidden", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", - "hideHealthLogs": "Hide Health Check Logs", - "hideHealthLogsDesc": "When ON, suppress [HealthCheck] messages in server console", - "themeAccent": "Theme color", - "themeAccentDesc": "Choose a preset color or create your own theme with one color", - "themeCreate": "Create theme", - "themeCustom": "Custom theme", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "sidebarVisibility": "સાઇડબારની આઇટમ્સ છુપાવો", + "sidebarVisibilityDesc": "કોઈપણ સુવિધાને અક્ષમ કર્યા વિના દૃશ્ય અવ્યવસ્થા ઘટાડવા માટે સાઇડબારની કોઈપણ નેવિગેશન એન્ટ્રી છુપાવો", + "sidebarVisibilityHint": "જ્યારે કોઈ સાઇડબાર વિભાગની બધી એન્ટ્રીઓ છુપાવેલી હોય ત્યારે તે વિભાગ આપમેળે છુપાઈ જાય છે", + "presetAll": "બધું", + "presetAllDesc": "બધું બતાવો", + "presetEssentials": "આવશ્યક", + "presetEssentialsDesc": "શરૂઆત કરનારાઓ માટેનો માર્ગ - અદ્યતન ટૂલ્સ શોધી શકાશે", + "presetMinimal": "ન્યૂનતમ", + "presetMinimalDesc": "ફક્ત મુખ્ય પેજ", + "presetDeveloper": "ડેવલપર", + "presetDeveloperDesc": "ડેવલપમેન્ટ અને પ્રોક્સી ટૂલ્સ", + "presetAdmin": "એડમિન", + "presetAdminDesc": "મોનિટરિંગ અને ઑડિટ", + "settingsSidebarTitle": "સાઇડબાર કસ્ટમાઇઝેશન", + "settingsSidebarDesc": "સાઇડબારમાં કઈ આઇટમ્સ બતાવવી તે પસંદ કરો. આવશ્યક મોડમાં પણ અદ્યતન ટૂલ્સ શોધી શકાય છે.", + "hideHealthLogs": "હેલ્થ ચેક લૉગ્સ છુપાવો", + "hideHealthLogsDesc": "ચાલુ હોય ત્યારે, સર્વર કન્સોલમાં [HealthCheck] સંદેશાઓ દર્શાવશો નહીં", + "themeAccent": "થીમનો રંગ", + "themeAccentDesc": "પૂર્વનિર્ધારિત રંગ પસંદ કરો અથવા એક રંગથી તમારી પોતાની થીમ બનાવો", + "themeCreate": "થીમ બનાવો", + "themeCustom": "કસ્ટમ થીમ", + "themeBlue": "વાદળી", + "themeRed": "લાલ", + "themeGreen": "લીલો", + "themeViolet": "જાંબલી", + "themeOrange": "નારંગી", + "themeCyan": "સાયન", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "એપ્લિકેશનનું નામ અને લોગો કસ્ટમાઇઝ કરો", + "appName": "એપ્લિકેશનનું નામ", + "appNameDesc": "સાઇડબાર અને બ્રાઉઝર ટૅબમાં દર્શાવાતું નામ", + "customLogo": "કસ્ટમ લોગો URL", + "customLogoDesc": "તમારી કસ્ટમ લોગો ઇમેજનો URL", + "uploadLogo": "લોગો અપલોડ કરો", + "resetLogo": "ડિફૉલ્ટ પર રીસેટ કરો", + "logoPreview": "પૂર્વાવલોકન", + "customFavicon": "બ્રાઉઝર ફેવિકોન", + "customFaviconDesc": "તમારા કસ્ટમ ફેવિકોનનો URL (બ્રાઉઝર ટૅબમાં દર્શાવાય છે)", + "uploadFavicon": "ફેવિકોન અપલોડ કરો", + "resetFavicon": "ફેવિકોન રીસેટ કરો", + "faviconPreview": "ફેવિકોનનું પૂર્વાવલોકન", "logoFileTooLarge": "લોગો ફાઇલ 500KB કરતાં ઓછી હોવી જોઈએ", "faviconFileTooLarge": "ફેવિકોન ફાઇલ 50KB કરતાં ઓછી હોવી જોઈએ", "invalidLogoFileType": "અમાન્ય ફાઇલ પ્રકાર. કૃપા કરીને PNG, JPG, SVG, GIF અથવા WebP અપલોડ કરો.", @@ -6800,15 +6803,15 @@ "failedToReadFile": "ફાઇલ વાંચવામાં નિષ્ફળ", "startOnLogin": "લોગિન પર શરૂ કરો", "startOnLoginDesc": "સિસ્ટમ સ્ટાર્ટઅપ પર આપમેળે OmniRoute લોંચ કરો અને બેકગ્રાઉન્ડ ટ્રેમાં શાંતિથી ચલાવો.", - "flushCache": "Flush Cache", - "flushing": "Flushing…", - "size": "Size", - "hits": "Hits", - "evictions": "Evictions", - "loadingCacheStats": "Loading cache stats…", - "globalProxy": "Global Proxy", - "globalProxyDesc": "Configure a global outbound proxy for all API calls. Individual providers, combos, and keys can override this.", - "noGlobalProxy": "No global proxy configured", + "flushCache": "કૅશ સાફ કરો", + "flushing": "સાફ કરવામાં આવી રહ્યું છે…", + "size": "કદ", + "hits": "હિટ્સ", + "evictions": "દૂર કરાયેલી એન્ટ્રીઓ", + "loadingCacheStats": "કૅશના આંકડા લોડ થઈ રહ્યા છે…", + "globalProxy": "ગ્લોબલ પ્રોક્સી", + "globalProxyDesc": "તમામ API કૉલ્સ માટે ગ્લોબલ આઉટબાઉન્ડ પ્રોક્સી કૉન્ફિગર કરો. વ્યક્તિગત પ્રદાતાઓ, કોમ્બોઝ અને કીઝ આ સેટિંગને ઓવરરાઇડ કરી શકે છે.", + "noGlobalProxy": "કોઈ ગ્લોબલ પ્રોક્સી કૉન્ફિગર કરેલ નથી", "proxyPool": "પ્રોક્સી પૂલ", "freePool": "મફત પૂલ", "proxyDocumentation": "પ્રોક્સી દસ્તાવેજીકરણ", @@ -6896,21 +6899,21 @@ "refreshInterval": "ફરીથી તાજા કરવાની અંતરાલ", "ruleModeDescription": "નિયમ મોડ વર્ણન" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "બલ્ક હેલ્થચેક", + "bulkHealthcheckDesc": "કયા પ્રોક્સી કાર્ય કરે છે તે જાણવા માટે બધા કૉન્ફિગર કરેલા પ્રોક્સીને લક્ષ્ય URL સામે ચકાસો.", + "healthcheckTesting": "ચકાસી રહ્યું છે...", + "healthcheckAll": "બધાનું હેલ્થચેક કરો", + "healthcheckFailed": "હેલ્થચેક ચલાવવામાં નિષ્ફળતા", + "healthcheckTestingAll": "બધા પ્રોક્સીને સમાંતરે ચકાસી રહ્યું છે...", + "healthcheckTotal": "કુલ", + "healthcheckWorking": "કાર્યરત", + "healthcheckFailedLabel": "નિષ્ફળ", + "healthcheckStatus": "સ્થિતિ", + "healthcheckProxyUrl": "પ્રોક્સી URL", + "healthcheckLatency": "વિલંબ", "proxyDocumentationScopeTitle": "પ્રોક્સી સ્કોપ રિઝોલ્યુશન", "proxyDocumentationScopeDescBefore": "OmniRoute આઉટબાઉન્ડ પ્રોક્સીને પ્રાધાન્યતા ક્રમમાં રિઝોલ્વ કરે છે:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "કોમ્બો → એકાઉન્ટ → પ્રદાતા → વૈશ્વિક", "proxyDocumentationScopeDescAfter": ". સૌથી વિશિષ્ટ સ્કોપ જીતે છે.", "proxyDocumentationAddTitle": "કસ્ટમ પ્રોક્સી ઉમેરવી", "proxyDocumentationAddDescBefore": "પર જાઓ", @@ -6966,22 +6969,22 @@ "proxyFreePoolLoadMore": "વધુ લોડ કરો", "close": "બંધ કરો", "cancel": "રદ કરો", - "globalLabel": "Global", - "configure": "Configure", - "globalSystemPrompt": "Global System Prompt", - "saved": "Saved", + "globalLabel": "વૈશ્વિક", + "configure": "કૉન્ફિગર કરો", + "globalSystemPrompt": "વૈશ્વિક સિસ્ટમ પ્રોમ્પ્ટ", + "saved": "સાચવ્યું", "beforePromptLabel": "પ્રોમ્પ્ટ પહેલાં", "beforePromptDesc": "એજન્ટ/પ્રદાતા સિસ્ટમ સૂચનાઓ પહેલાં ઇન્જેક્ટ કરેલ", "beforePromptPlaceholder": "એજન્ટ/પ્રદાતા પ્રોમ્પ્ટ પહેલાં દાખલ કરેલી સૂચનાઓ...", "afterPromptLabel": "પ્રોમ્પ્ટ પછી", "afterPromptDesc": "એજન્ટ/પ્રદાતા સિસ્ટમ સૂચનાઓ પછી ઇન્જેક્ટ કરેલ", "afterPromptPlaceholder": "એજન્ટ/પ્રદાતા પ્રોમ્પ્ટ પછી દાખલ કરેલી સૂચનાઓ...", - "chars": "{count} chars", - "thinkingBudgetTitle": "Thinking Budget", + "chars": "{count} અક્ષરો", + "thinkingBudgetTitle": "વિચારણાનું બજેટ", "thinkingBudgetDesc": "Control AI reasoning token usage across all requests", "thinkingBudgetIndependenceHint": "સંકોચન, માર્ગદર્શન, અને ટોકન-મર્યાદા સુવિધાઓ દરેક મોડમાં કાર્યરત રહે છે. ઓટોનો અર્થ “ઓટો-શો વિચારો” નથી — તે ક્લાયન્ટની વિચારણા ક્ષેત્રોને દૂર કરે છે.", - "passthrough": "Passthrough", - "passthroughDesc": "No changes — client controls thinking budget", + "passthrough": "પાસથ્રૂ", + "passthroughDesc": "કોઈ ફેરફાર નહીં — ક્લાયન્ટ વિચારણાના બજેટને નિયંત્રિત કરે છે", "thinkingModePassthrough": "પાસથ્રૂ", "thinkingModePassthroughDesc": "ક્લાયન્ટનું કારણ બદલવા નહી (પ્રયાસ, સારાંશ, વિચાર બ્લોક). Codex/Desktop દૃશ્યમાન વિચાર માટે જરૂરી. ડિફોલ્ટ.", "thinkingModeAuto": "ઓટો (સ્ટ્રિપ)", @@ -6991,36 +6994,36 @@ "thinkingModeAdaptive": "અનુકૂળ", "thinkingModeAdaptiveDesc": "સંદેશા સંખ્યા, સાધનો, અને પ્રોમ્પ્ટ લંબાઈનો ઉપયોગ કરીને આધાર પ્રયાસમાંથી વિચારધારા બજેટને સ્કેલ કરો.", "auto": "Auto Combo", - "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "custom": "Custom", - "customDesc": "Set a fixed token budget for all requests", - "adaptive": "Adaptive", - "adaptiveDesc": "Scale budget based on request complexity", - "effortNone": "None (0 tokens)", - "effortLow": "Low (1K tokens)", - "effortMedium": "Medium (10K tokens)", - "effortHigh": "High (128K tokens)", - "tokenBudget": "Token Budget", - "tokens": "tokens", - "baseEffortLevel": "Base Effort Level", + "autoDesc": "સ્વ-ઉપચારક્ષમ સ્માર્ટ રૂટિંગ પૂલ (પ્રદર્શન માટે ઑપ્ટિમાઇઝ કરેલું)", + "custom": "કસ્ટમ", + "customDesc": "બધી વિનંતીઓ માટે નિશ્ચિત ટોકન બજેટ સેટ કરો", + "adaptive": "અનુકૂલનશીલ", + "adaptiveDesc": "વિનંતીની જટિલતાના આધારે બજેટ સમાયોજિત કરો", + "effortNone": "કોઈ નહીં (0 ટોકન)", + "effortLow": "ઓછું (1K ટોકન)", + "effortMedium": "મધ્યમ (10K ટોકન)", + "effortHigh": "ઉચ્ચ (128K ટોકન)", + "tokenBudget": "ટોકન બજેટ", + "tokens": "ટોકન", + "baseEffortLevel": "મૂળભૂત પ્રયત્ન સ્તર", "adaptiveHint": "Adaptive mode scales from this base level based on message count, tool usage, and prompt length.", - "requireLogin": "Require login", - "requireLoginDesc": "When ON, dashboard requires password. When OFF, access without login.", - "currentPassword": "Current Password", - "enterCurrentPassword": "Enter current password", - "newPassword": "New Password", - "enterNewPassword": "Enter new password", - "confirmPassword": "Confirm New Password", - "confirmPasswordPlaceholder": "Confirm new password", - "passwordsNoMatch": "Passwords do not match", - "passwordUpdated": "Password updated successfully", - "failedUpdatePassword": "Failed to update password", - "errorOccurred": "An error occurred", - "updatePassword": "Update Password", - "setPassword": "Set Password", - "apiEndpointProtection": "API Endpoint Protection", - "requireAuthModels": "Require API key for /models", - "requireAuthModelsDesc": "When ON, the /v1/models endpoint returns 404 for unauthenticated requests. Prevents model discovery by unauthorized users.", + "requireLogin": "લૉગિન જરૂરી", + "requireLoginDesc": "ચાલુ હોય ત્યારે ડૅશબોર્ડ માટે પાસવર્ડ જરૂરી છે. બંધ હોય ત્યારે લૉગિન વિના ઍક્સેસ મળે છે.", + "currentPassword": "વર્તમાન પાસવર્ડ", + "enterCurrentPassword": "વર્તમાન પાસવર્ડ દાખલ કરો", + "newPassword": "નવો પાસવર્ડ", + "enterNewPassword": "નવો પાસવર્ડ દાખલ કરો", + "confirmPassword": "નવા પાસવર્ડની પુષ્ટિ કરો", + "confirmPasswordPlaceholder": "નવા પાસવર્ડની પુષ્ટિ કરો", + "passwordsNoMatch": "પાસવર્ડ મેળ ખાતા નથી", + "passwordUpdated": "પાસવર્ડ સફળતાપૂર્વક અપડેટ થયો", + "failedUpdatePassword": "પાસવર્ડ અપડેટ કરવામાં નિષ્ફળતા", + "errorOccurred": "એક ભૂલ આવી", + "updatePassword": "પાસવર્ડ અપડેટ કરો", + "setPassword": "પાસવર્ડ સેટ કરો", + "apiEndpointProtection": "API એન્ડપોઇન્ટ સુરક્ષા", + "requireAuthModels": "/models માટે API કી જરૂરી બનાવો", + "requireAuthModelsDesc": "ચાલુ હોય ત્યારે, /v1/models એન્ડપોઇન્ટ બિનપ્રમાણિત વિનંતીઓ માટે 404 પરત કરે છે. અનધિકૃત વપરાશકર્તાઓ દ્વારા મોડેલ શોધને અટકાવે છે.", "authModelHeading": "સક્રિય અધિકૃતતા મોડેલ", "authModelClient": "ક્લાયન્ટ API એન્ડપોઇન્ટ્સ (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) ને Bearer API કીની જરૂર છે.", "authModelManagement": "મેનેજમેન્ટ એન્ડપોઇન્ટ્સ (/ડેશબોર્ડ, /api/*) ને ડેશબોર્ડ સત્ર અથવા મેનેજમેન્ટ ઓળખપત્રની જરૂર છે.", @@ -7029,16 +7032,16 @@ "bruteForceProtectionDesc": "સમાન IP થી વારંવાર નિષ્ફળતાઓ પછી થ્રોટલ અને લોક /api/auth/login.", "corsAllowedOrigins": "CORS મંજૂર મૂળ", "corsAllowedOriginsDesc": "આ સર્વરને કૉલ કરવા માટે મંજૂર બ્રાઉઝર મૂળની અલ્પવિરામથી અલગ કરેલી સૂચિ. ખાલી સૂચિ = કોઈ બ્રાઉઝર CORS ઍક્સેસ નથી (સર્વર-ટુ-સર્વર હજી પણ કાર્ય કરે છે). માત્ર વિકાસ માટે CORS_ALLOW_ALL=true env var નો ઉપયોગ કરો.", - "blockedProviders": "Blocked Providers", - "blockedProvidersDesc": "Hide specific providers from the /v1/models response. Blocked providers will not appear in model listings.", - "providersBlocked": "{count} provider(s) blocked from /models", - "blockProviderTitle": "Block {provider}", - "unblockProviderTitle": "Unblock {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "blockedProviders": "અવરોધિત પ્રદાતાઓ", + "blockedProvidersDesc": "/v1/models પ્રતિસાદમાંથી ચોક્કસ પ્રદાતાઓને છુપાવો. અવરોધિત પ્રદાતાઓ મોડેલ સૂચિઓમાં દેખાશે નહીં.", + "providersBlocked": "/modelsમાંથી {count} પ્રદાતા અવરોધિત", + "blockProviderTitle": "{provider}ને અવરોધિત કરો", + "unblockProviderTitle": "{provider} પરથી અવરોધ દૂર કરો", + "cliFingerprint": "CLI ફિંગરપ્રિન્ટ મેચિંગ", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "CLI ફિંગરપ્રિન્ટ સક્રિય ધરાવતા {count} પ્રદાતા", + "enableFingerprintTitle": "{provider} માટે ફિંગરપ્રિન્ટ સક્ષમ કરો", + "disableFingerprintTitle": "{provider} માટે ફિંગરપ્રિન્ટ અક્ષમ કરો", "systemTransforms": "સિસ્ટમ-બ્લોક ટ્રાન્સફોર્મ પાઇપલાઇન", "systemTransformsDesc": "પ્રતિ-પ્રદાતાએ ફોરવર્ડ કરતા પહેલા વિનંતીના મુખ્ય ભાગ પર લાગુ પરિવર્તનની પાઇપલાઇનનો ઓર્ડર આપ્યો. કોઈપણ પ્રદાતા ID ને સપોર્ટ કરે છે.", "systemTransformsAddProvider": "પ્રદાતા ઉમેરો", @@ -7049,29 +7052,29 @@ "systemTransformsOpMoveUp": "ઉપર ખસેડો", "systemTransformsOpMoveDown": "નીચે ખસેડો", "systemTransformsOpDelete": "ઓપ કાઢી નાખો", - "routingStrategy": "Routing Strategy", - "routingAdvancedGuideTitle": "Advanced routing guidance", + "routingStrategy": "રાઉટિંગ વ્યૂહરચના", + "routingAdvancedGuideTitle": "અદ્યતન રાઉટિંગ માર્ગદર્શન", "routingAdvancedGuideHint1": "Use Fill First for predictable priority, Round Robin for fairness, and P2C for latency resilience.", "routingAdvancedGuideHint2": "If providers vary in quality/cost, start with Cost Opt for background work and Least Used for balanced wear.", - "fillFirst": "Fill First", - "fillFirstDesc": "Use accounts in priority order", + "fillFirst": "પ્રથમ ભરો", + "fillFirstDesc": "અગ્રતા ક્રમમાં એકાઉન્ટ્સનો ઉપયોગ કરો", "roundRobin": "Round Robin", - "roundRobinDesc": "Cycle through all accounts", + "roundRobinDesc": "બધા એકાઉન્ટ્સનો ચક્રાનુસાર ઉપયોગ કરો", "p2c": "P2C", - "p2cDesc": "Pick 2 random, use the healthier one", - "random": "Random", - "randomDesc": "Random account each request", - "leastUsed": "Least Used", - "leastUsedDesc": "Pick least recently used account", - "costOpt": "Cost Opt", - "costOptDesc": "Prefer cheapest available account", + "p2cDesc": "2 રૅન્ડમ પસંદ કરો, વધુ સ્વસ્થ એકનો ઉપયોગ કરો", + "random": "રૅન્ડમ", + "randomDesc": "દરેક વિનંતી માટે રૅન્ડમ એકાઉન્ટ", + "leastUsed": "સૌથી ઓછું વપરાયેલ", + "leastUsedDesc": "સૌથી લાંબા સમયથી ઉપયોગ ન થયેલું એકાઉન્ટ પસંદ કરો", + "costOpt": "ખર્ચ ઑપ્ટિમાઇઝેશન", + "costOptDesc": "સૌથી સસ્તા ઉપલબ્ધ એકાઉન્ટને પ્રાધાન્ય આપો", "resetAware": "રીસેટ-અવેર આરઆર", "resetAwareDesc": "તંદુરસ્ત બાકીના ક્વોટા અને નજીકના રીસેટવાળા એકાઉન્ટ્સને પ્રાધાન્ય આપો", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "ક્વોટા-ભારિત", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "કડક રૅન્ડમ", + "strictRandomDesc": "ડેકને શફલ કરો — ફરી શફલ કરતાં પહેલાં દરેક એકાઉન્ટનો એકવાર ઉપયોગ કરે છે", + "stickyLimit": "સ્ટિકી મર્યાદા", "stickyLimitDesc": "Calls per account before switching", "routingStrategyTitle": "રાઉટિંગ વ્યૂહરચના", "routingStrategySubtitle": "9router સાથે મેળ કરો: એકાઉન્ટ રાઉન્ડ-રોબિન, સ્ટીકી મર્યાદાઓ અને કોમ્બો રોટેશન", @@ -7089,225 +7092,225 @@ "providerAccountRoutingDesc": "આ પ્રદાતા માટે વૈશ્વિક એકાઉન્ટ વ્યૂહરચના ઓવરરાઇડ કરો (9router સમાનતા).", "providerRoutingStrategy": "એકાઉન્ટ વ્યૂહરચના", "providerRoutingInheritGlobal": "ગ્લોબલ ડિફૉલ્ટ વારસામાં મેળવો", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", - "modelAliases": "Model Aliases", - "modelAliasesTitle": "Model Aliases", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", - "addCustomAlias": "Add Custom Alias", - "deprecatedModelId": "Deprecated model ID", - "newModelId": "New model ID", - "customAliases": "Custom Aliases", - "builtInAliases": "Built-in Aliases", - "backgroundDegradationTitle": "Background Task Degradation", - "backgroundDegradationDesc": "Auto-detect background tasks (titles, summaries) and route to cheaper models", - "enableDegradation": "Enable Background Degradation", - "enableDegradationHint": "When enabled, background tasks like title generation and summarization are routed to cheaper models automatically", - "tasksDetected": "Tasks detected", - "degradationMap": "Model Degradation Map", - "premiumModel": "Premium model", - "cheapModel": "Cheap model", - "detectionPatterns": "Detection Patterns", - "newPattern": "e.g. \"generate a title\"", + "quotaPreflightTitle": "ક્વોટા પ્રીફ્લાઇટ કટઓફ", + "quotaPreflightSubtitle": "વિનંતી અપસ્ટ્રીમ મોકલતાં પહેલાં ક્વોટા સમાપ્ત થઈ ગયેલા એકાઉન્ટ્સને છોડો", + "quotaPreflightEnable": "ક્વોટા પ્રીફ્લાઇટ સક્ષમ કરો", + "quotaPreflightEnableDesc": "દરેક વિનંતી પહેલાં, એકાઉન્ટનો બાકી ક્વોટા (5 કલાક / સાપ્તાહિક / માસિક અવધિઓ) તપાસો. કટઓફ પર અથવા તેનાથી નીચેના એકાઉન્ટ્સને અપસ્ટ્રીમ કૉલ કર્યા વિના છોડવામાં આવે છે. Provider Quota પેજ પર સેટ કરેલા દરેક અવધિના કટઓફને હંમેશાં અહીંના ડિફૉલ્ટ કરતાં પ્રાધાન્ય મળે છે.", + "quotaPreflightCutoff": "વૈશ્વિક કટઓફ (બાકી રહેલી ન્યૂનતમ %)", + "quotaPreflightCutoffDesc": "જે દરેક વિન્ડો માટે તેનો પોતાનો કટઓફ ન હોય, તેમાં એકાઉન્ટનો બાકી રહેલો ક્વોટા આ ટકાવારી સુધી અથવા તેનાથી નીચે જાય ત્યારે તેનો ઉપયોગ બંધ કરો. આ Provider Quota પેજ પરના બાકી-% બાર સાથે મેળ ખાય છે.", + "quotaPreflightWindowsHint": "પોતાનો પ્રતિ-વિન્ડો અથવા પ્રતિ-પ્રદાતા કટઓફ ધરાવતી વિન્ડો (Provider Quota પેજ પરના Cutoff મોડલમાં સેટ કરેલી) પર આ ડિફૉલ્ટની અસર થતી નથી.", + "quotaPreflightLoadFailed": "ક્વોટા પ્રીફ્લાઇટ સેટિંગ્સ લોડ કરવામાં અસમર્થ.", + "modelAliases": "મોડેલ ઉપનામો", + "modelAliasesTitle": "મોડેલ ઉપનામો", + "modelAliasesDesc": "ચોક્કસ મેળ અથવા વાઇલ્ડકાર્ડ પેટર્નનો ઉપયોગ કરીને મોડેલનાં નામ ફરીથી મેપ કરો.", + "addCustomAlias": "કસ્ટમ ઉપનામ ઉમેરો", + "deprecatedModelId": "અપ્રચલિત મોડેલ ID", + "newModelId": "નવું મોડેલ ID", + "customAliases": "કસ્ટમ ઉપનામો", + "builtInAliases": "બિલ્ટ-ઇન ઉપનામો", + "backgroundDegradationTitle": "બૅકગ્રાઉન્ડ કાર્યનું ડિગ્રેડેશન", + "backgroundDegradationDesc": "બૅકગ્રાઉન્ડ કાર્યો (શીર્ષકો, સારાંશો) આપમેળે શોધો અને તેમને સસ્તા મોડેલો તરફ રૂટ કરો", + "enableDegradation": "બૅકગ્રાઉન્ડ ડિગ્રેડેશન સક્ષમ કરો", + "enableDegradationHint": "સક્ષમ કરેલું હોય ત્યારે, શીર્ષક બનાવવું અને સારાંશ તૈયાર કરવો જેવાં બૅકગ્રાઉન્ડ કાર્યો આપમેળે સસ્તા મોડેલો તરફ રૂટ થાય છે", + "tasksDetected": "શોધાયેલાં કાર્યો", + "degradationMap": "મોડેલ ડિગ્રેડેશન મેપ", + "premiumModel": "પ્રીમિયમ મોડેલ", + "cheapModel": "સસ્તું મોડેલ", + "detectionPatterns": "શોધ પેટર્ન", + "newPattern": "દા.ત. \"શીર્ષક બનાવો\"", "aliasPatternPlaceholder": "claude-sonnet-*", "aliasTargetPlaceholder": "claude-sonnet-4-20250514", - "pattern": "Pattern", - "targetModel": "Target Model", - "add": "+ Add", - "session": "Session", - "sessionDetailsAria": "Session details", + "pattern": "પેટર્ન", + "targetModel": "લક્ષ્ય મોડેલ", + "add": "+ ઉમેરો", + "session": "સત્ર", + "sessionDetailsAria": "સત્રની વિગતો", "status": "Status", - "authenticated": "Authenticated", - "guest": "Guest", - "loginTime": "Login Time", - "sessionAge": "Session Age", - "browser": "Browser", - "clearLocalData": "Clear Local Data", - "logout": "Logout", - "clearLocalDataConfirm": "Clear all local data? This will reset your preferences.", - "unknown": "Unknown", - "systemActor": "system", - "ipAccessControl": "IP Access Control", - "ipAccessControlDesc": "Block or allow specific IP addresses", - "ipModeDisabled": "Disabled", - "ipModeBlacklist": "Blacklist", - "ipModeWhitelist": "Whitelist", - "ipModeWhitelistPriority": "WL Priority", - "addIpAddress": "Add IP Address", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", - "block": "+ Block", - "allow": "+ Allow", - "blocked": "Blocked ({count})", - "allowed": "Allowed ({count})", - "temporaryBans": "Temporary Bans ({count})", - "minLeft": "{min}m left", - "auditLog": "Audit Log", - "searchAuditLogs": "Search audit logs...", - "failedLoadAuditLog": "Failed to load audit log", - "noAuditEvents": "No audit events found", - "action": "Action", - "actor": "Actor", - "details": "Details", - "time": "Time", - "fallbackChainsTitle": "Fallback Chains", - "fallbackChainsDesc": "Define provider fallback order per model", - "addChain": "+ Add Chain", - "modelName": "Model Name", + "authenticated": "પ્રમાણિત", + "guest": "અતિથિ", + "loginTime": "લૉગિન સમય", + "sessionAge": "સત્રની અવધિ", + "browser": "બ્રાઉઝર", + "clearLocalData": "સ્થાનિક ડેટા સાફ કરો", + "logout": "લૉગઆઉટ", + "clearLocalDataConfirm": "બધો સ્થાનિક ડેટા સાફ કરવો છે? આ તમારી પસંદગીઓને રીસેટ કરશે.", + "unknown": "અજ્ઞાત", + "systemActor": "સિસ્ટમ", + "ipAccessControl": "IP ઍક્સેસ નિયંત્રણ", + "ipAccessControlDesc": "ચોક્કસ IP સરનામાંને અવરોધો અથવા મંજૂરી આપો", + "ipModeDisabled": "અક્ષમ", + "ipModeBlacklist": "બ્લેકલિસ્ટ", + "ipModeWhitelist": "વ્હાઇટલિસ્ટ", + "ipModeWhitelistPriority": "WL પ્રાથમિકતા", + "addIpAddress": "IP સરનામું ઉમેરો", + "ipAddressPlaceholder": "192.168.1.0/24 અથવા 10.0.*.*", + "block": "+ અવરોધિત કરો", + "allow": "+ મંજૂરી આપો", + "blocked": "અવરોધિત ({count})", + "allowed": "મંજૂર ({count})", + "temporaryBans": "કામચલાઉ પ્રતિબંધો ({count})", + "minLeft": "{min}મિ બાકી", + "auditLog": "ઑડિટ લૉગ", + "searchAuditLogs": "ઑડિટ લૉગ્સ શોધો...", + "failedLoadAuditLog": "ઑડિટ લૉગ લોડ કરવામાં નિષ્ફળતા", + "noAuditEvents": "કોઈ ઑડિટ ઇવેન્ટ મળી નથી", + "action": "ક્રિયા", + "actor": "કર્તા", + "details": "વિગતો", + "time": "સમય", + "fallbackChainsTitle": "ફૉલબૅક ચેઇન્સ", + "fallbackChainsDesc": "દરેક મૉડલ માટે પ્રદાતા ફૉલબૅક ક્રમ નિર્ધારિત કરો", + "addChain": "+ ચેઇન ઉમેરો", + "modelName": "મૉડલનું નામ", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "Providers (comma-separated, in priority order)", + "providersCommaSeparated": "પ્રદાતાઓ (અલ્પવિરામથી અલગ કરેલા, પ્રાથમિકતાના ક્રમમાં)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", - "createChain": "Create Chain", - "noFallbackChains": "No Fallback Chains", - "noFallbackChainsDesc": "Create a chain to define provider fallback order for a model.", - "loadingFallbackChains": "Loading fallback chains...", - "deleteChainConfirm": "Delete fallback chain for \"{model}\"?", - "chainCreated": "Chain created for {model}", - "chainDeleted": "Chain deleted for {model}", - "failedCreateChain": "Failed to create chain", - "failedDeleteChain": "Failed to delete chain", - "deleteChain": "Delete chain", - "fillModelAndProviders": "Please fill model name and providers", - "addAtLeastOneProvider": "Add at least one provider", - "comboDefaultsTitle": "Combo Defaults", - "comboDefaultsGuideTitle": "How to tune combo defaults", - "comboDefaultsGuideHint1": "Keep retries low in low-latency flows; increase timeout only for long generation tasks.", - "comboDefaultsGuideHint2": "Use provider overrides when one provider needs different timeout/retry behavior than global defaults.", - "globalComboConfig": "Global combo configuration", + "createChain": "ચેઇન બનાવો", + "noFallbackChains": "કોઈ ફૉલબૅક ચેઇન નથી", + "noFallbackChainsDesc": "મૉડલ માટે પ્રદાતા ફૉલબૅક ક્રમ નિર્ધારિત કરવા ચેઇન બનાવો.", + "loadingFallbackChains": "ફૉલબૅક ચેઇન્સ લોડ થઈ રહી છે...", + "deleteChainConfirm": "\"{model}\" માટેની ફૉલબૅક ચેઇન કાઢી નાખવી છે?", + "chainCreated": "{model} માટે ચેઇન બનાવવામાં આવી", + "chainDeleted": "{model} માટેની ચેઇન કાઢી નાખવામાં આવી", + "failedCreateChain": "ચેઇન બનાવવામાં નિષ્ફળતા", + "failedDeleteChain": "ચેઇન કાઢી નાખવામાં નિષ્ફળતા", + "deleteChain": "ચેઇન કાઢી નાખો", + "fillModelAndProviders": "કૃપા કરીને મૉડલનું નામ અને પ્રદાતાઓ ભરો", + "addAtLeastOneProvider": "ઓછામાં ઓછો એક પ્રદાતા ઉમેરો", + "comboDefaultsTitle": "કૉમ્બો ડિફૉલ્ટ્સ", + "comboDefaultsGuideTitle": "કૉમ્બો ડિફૉલ્ટ્સને કેવી રીતે સમાયોજિત કરવા", + "comboDefaultsGuideHint1": "ઓછી વિલંબતા ધરાવતા પ્રવાહોમાં પુનઃપ્રયાસોની સંખ્યા ઓછી રાખો; માત્ર લાંબા જનરેશન કાર્યો માટે સમયમર્યાદા વધારો.", + "comboDefaultsGuideHint2": "જ્યારે કોઈ એક પ્રદાતાને વૈશ્વિક ડિફૉલ્ટ્સ કરતાં અલગ સમયમર્યાદા/પુનઃપ્રયાસની વર્તણૂકની જરૂર હોય ત્યારે પ્રદાતા ઓવરરાઇડ્સનો ઉપયોગ કરો.", + "globalComboConfig": "વૈશ્વિક કોમ્બો ગોઠવણી", "moveUp": "ઉપર ખસેડો", "moveDown": "નીચે ખસેડો", "allProvidersAdded": "બધા પ્રદાતાઓ ઉમેરાયા", "noProvidersFound": "કોઈ પ્રદાતા મળ્યા નથી", - "defaultStrategy": "Default Strategy", + "defaultStrategy": "ડિફૉલ્ટ વ્યૂહરચના", "defaultStrategyDesc": "Applied to new combos without explicit strategy", - "comboStrategyAria": "Combo strategy", - "priority": "Priority", - "weighted": "Weighted", - "contextRelay": "Context Relay", - "contextRelayDesc": "Priority-style routing with automatic context handoffs when account rotation happens", - "maxRetriesLabel": "Max Retries", - "retryDelayLabel": "Retry Delay (ms)", - "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", - "healthCheckDesc": "Pre-check provider availability", - "trackMetrics": "Track Metrics", - "trackMetricsDesc": "Record per-combo request metrics", - "providerOverrides": "Provider Overrides", - "providerOverridesDesc": "Override timeout and retries per provider. Provider settings override global defaults.", - "providerMaxRetriesAria": "{provider} max retries", - "providerTimeoutAria": "{provider} timeout ms", - "removeProviderOverrideAria": "Remove {provider} override", + "comboStrategyAria": "કોમ્બો વ્યૂહરચના", + "priority": "પ્રાથમિકતા", + "weighted": "ભારાંકિત", + "contextRelay": "કોન્ટેક્સ્ટ રિલે", + "contextRelayDesc": "એકાઉન્ટ રોટેશન થાય ત્યારે આપમેળે કોન્ટેક્સ્ટ હેન્ડઓફ સાથે પ્રાથમિકતા-શૈલીનું રૂટિંગ", + "maxRetriesLabel": "મહત્તમ પુનઃપ્રયાસો", + "retryDelayLabel": "પુનઃપ્રયાસ વિલંબ (ms)", + "timeoutLabel": "સમયમર્યાદા (ms)", + "healthCheck": "સ્થિતિ તપાસ", + "healthCheckDesc": "પ્રદાતાની ઉપલબ્ધતાની પૂર્વ-તપાસ કરો", + "trackMetrics": "મેટ્રિક્સ ટ્રૅક કરો", + "trackMetricsDesc": "દરેક કોમ્બો માટે વિનંતી મેટ્રિક્સ રેકોર્ડ કરો", + "providerOverrides": "પ્રદાતા ઓવરરાઇડ્સ", + "providerOverridesDesc": "દરેક પ્રદાતા માટે સમયમર્યાદા અને પુનઃપ્રયાસો ઓવરરાઇડ કરો. પ્રદાતાની સેટિંગ્સ વૈશ્વિક ડિફૉલ્ટ્સને ઓવરરાઇડ કરે છે.", + "providerMaxRetriesAria": "{provider} મહત્તમ પુનઃપ્રયાસો", + "providerTimeoutAria": "{provider} સમયમર્યાદા ms", + "removeProviderOverrideAria": "{provider} ઓવરરાઇડ દૂર કરો", "selectProviderPlaceholder": "પ્રદાતા પસંદ કરો...", "searchProviderPlaceholder": "પ્રદાતાઓ શોધો...", "searchProviderAria": "પ્રદાતાઓ શોધો", - "newProviderNamePlaceholder": "e.g. google, openai...", - "newProviderNameAria": "New provider name", - "retries": "retries", + "newProviderNamePlaceholder": "દા.ત. google, openai...", + "newProviderNameAria": "નવા પ્રદાતાનું નામ", + "retries": "પુનઃપ્રયાસો", "ms": "ms", - "saveComboDefaults": "Save Combo Defaults", - "maxNestingDepth": "Max Nesting Depth", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", + "saveComboDefaults": "કોમ્બો ડિફૉલ્ટ્સ સાચવો", + "maxNestingDepth": "મહત્તમ નેસ્ટિંગ ઊંડાઈ", + "concurrencyPerModel": "સમવર્તિતા / મોડેલ", + "queueTimeout": "કતાર સમયમર્યાદા (ms)", "queueDepth": "કતારની ઊંડાઈ", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", - "providerProfiles": "Provider Profiles", - "providerProfilesDesc": "Separate resilience settings for OAuth (session-based) and API Key (metered) providers. OAuth providers have stricter thresholds due to lower rate limits.", - "oauthProviders": "OAuth Providers", - "apiKeyProviders": "API Key Providers", - "transientCooldown": "Transient Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", - "cbThreshold": "CB Threshold", - "cbResetTime": "CB Reset Time", - "rateLimiting": "Rate Limiting", - "rateLimitingDesc": "API Key providers are automatically rate-limited with safe defaults. Limits are learned from response headers and adapt over time.", - "defaultSafetyNet": "Default Safety Net", + "contextRelayHandoffThreshold": "હેન્ડઓફ થ્રેશોલ્ડ", + "contextRelayMaxMessages": "સારાંશ માટે મહત્તમ સંદેશાઓ", + "contextRelaySummaryModel": "સારાંશ મોડેલ", + "contextRelayProviderNote": "કોન્ટેક્સ્ટ રિલે હાલમાં Codex એકાઉન્ટ્સ માટે હેન્ડઓફ જનરેટ કરે છે અને નવા અથવા ગોઠવ્યા ન હોય તેવા કોમ્બો માટે આ મૂલ્યોનો વૈશ્વિક ડિફૉલ્ટ્સ તરીકે ઉપયોગ કરે છે.", + "providerProfiles": "પ્રદાતા પ્રોફાઇલ્સ", + "providerProfilesDesc": "OAuth (સત્ર-આધારિત) અને API Key (મીટર કરેલા) પ્રદાતાઓ માટે અલગ સ્થિતિસ્થાપકતા સેટિંગ્સ. નીચી દર મર્યાદાઓને કારણે OAuth પ્રદાતાઓ માટે વધુ કડક થ્રેશોલ્ડ હોય છે.", + "oauthProviders": "OAuth પ્રદાતાઓ", + "apiKeyProviders": "API Key પ્રદાતાઓ", + "transientCooldown": "ક્ષણિક કૂલડાઉન", + "rateLimitCooldown": "દર મર્યાદા કૂલડાઉન", + "maxBackoffLevel": "મહત્તમ બૅકઓફ સ્તર", + "cbThreshold": "CB થ્રેશોલ્ડ", + "cbResetTime": "CB રીસેટ સમય", + "rateLimiting": "દર મર્યાદિત કરવું", + "rateLimitingDesc": "API Key પ્રદાતાઓ પર સુરક્ષિત ડિફૉલ્ટ મર્યાદાઓ સાથે આપમેળે દર મર્યાદા લાગુ થાય છે. મર્યાદાઓ પ્રતિસાદ હેડર્સમાંથી શીખવામાં આવે છે અને સમય જતાં અનુકૂલિત થાય છે.", + "defaultSafetyNet": "ડિફૉલ્ટ સુરક્ષા જાળ", "rpm": "RPM", - "minGap": "Min Gap", - "maxConcurrent": "Max Concurrent", - "activeLimiters": "Active Limiters", - "noActiveLimiters": "No active rate limiters yet.", - "reservoir": "Reservoir", - "running": "Running", - "queued": "Queued", - "circuitBreakers": "Circuit Breakers", - "breakerStateClosed": "Closed", - "breakerStateOpen": "Open", - "breakerStateHalfOpen": "Half-Open", - "tripped": "{count} tripped", - "healthy": "{count} healthy", - "resetAll": "Reset All", - "noCircuitBreakers": "No circuit breakers active yet. They are created automatically when requests flow through the combo pipeline.", - "failures": "{count} failure(s)", - "policiesLocked": "Policies & Locked Identifiers", - "allOperational": "All systems operational — no lockouts or tripped breakers", - "loadingPolicies": "Loading policies...", - "lockedIdentifiers": "Locked Identifiers", - "unlockedIdentifier": "Unlocked: {identifier}", - "sinceDate": "since {date}", - "forceUnlock": "Force Unlock", - "unlocking": "Unlocking...", - "failedUnlock": "Failed to unlock", - "failedLoadWithStatus": "Failed to load: {status}", - "failedLoadResilience": "Failed to load resilience status", - "saveFailed": "Save failed", - "resetFailed": "Reset failed", - "loadingResilience": "Loading resilience status...", - "retry": "Retry", + "minGap": "ન્યૂનતમ અંતરાલ", + "maxConcurrent": "મહત્તમ સમકાલીન", + "activeLimiters": "સક્રિય દર મર્યાદકો", + "noActiveLimiters": "હજુ સુધી કોઈ સક્રિય દર મર્યાદક નથી.", + "reservoir": "અનામત", + "running": "ચાલુ", + "queued": "કતારમાં", + "circuitBreakers": "સર્કિટ બ્રેકર્સ", + "breakerStateClosed": "બંધ", + "breakerStateOpen": "ખુલ્લું", + "breakerStateHalfOpen": "અર્ધ-ખુલ્લું", + "tripped": "{count} ટ્રિપ થયા", + "healthy": "{count} સ્વસ્થ", + "resetAll": "બધું રીસેટ કરો", + "noCircuitBreakers": "હજુ સુધી કોઈ સર્કિટ બ્રેકર સક્રિય નથી. કોમ્બો પાઇપલાઇન મારફતે વિનંતીઓ પસાર થાય ત્યારે તે આપમેળે બનાવવામાં આવે છે.", + "failures": "{count} નિષ્ફળતા", + "policiesLocked": "નીતિઓ અને લૉક કરેલા ઓળખકર્તાઓ", + "allOperational": "બધી સિસ્ટમ કાર્યરત છે — કોઈ લૉકઆઉટ કે ટ્રિપ થયેલા બ્રેકર્સ નથી", + "loadingPolicies": "નીતિઓ લોડ થઈ રહી છે...", + "lockedIdentifiers": "લૉક કરેલા ઓળખકર્તાઓ", + "unlockedIdentifier": "અનલૉક કર્યું: {identifier}", + "sinceDate": "{date}થી", + "forceUnlock": "બળજબરીથી અનલૉક કરો", + "unlocking": "અનલૉક થઈ રહ્યું છે...", + "failedUnlock": "અનલૉક કરવામાં નિષ્ફળતા", + "failedLoadWithStatus": "લોડ કરવામાં નિષ્ફળતા: {status}", + "failedLoadResilience": "સ્થિતિસ્થાપકતાની સ્થિતિ લોડ કરવામાં નિષ્ફળતા", + "saveFailed": "સાચવવામાં નિષ્ફળતા", + "resetFailed": "રીસેટ કરવામાં નિષ્ફળતા", + "loadingResilience": "સ્થિતિસ્થાપકતાની સ્થિતિ લોડ થઈ રહી છે...", + "retry": "ફરી પ્રયાસ કરો", "systemStorage": "System & Storage", - "allDataLocal": "All data stored locally on your machine", - "databasePath": "Database Path", + "allDataLocal": "તમામ ડેટા તમારા મશીન પર સ્થાનિક રીતે સંગ્રહિત છે", + "databasePath": "ડેટાબેઝ પાથ", "export": "નિકાસ કરો", - "exportDatabase": "Export Database", - "exportAll": "Export All (.tar.gz)", - "importDatabase": "Import Database", - "confirmDbImport": "Confirm Database Import", - "confirmDbImportDesc": "This will replace all current data with the content from {file}. A backup will be created automatically before the import.", - "yesImport": "Yes, Import", - "lastBackup": "Last Backup", - "noBackupYet": "No backup yet", - "backupNow": "Backup Now", - "backupRestore": "Backup & Restore", - "viewBackups": "View Backups", - "hide": "Hide", - "backupRetentionDesc": "Database snapshots are created automatically before restore and every 15 minutes when data changes. Retention: 24 hourly + 30 daily backups with smart rotation.", - "loadingBackups": "Loading backups...", - "noBackupsYet": "No backups available yet. Backups will be created automatically when data changes.", - "backupsAvailable": "{count} backup(s) available", - "refresh": "Refresh", - "confirm": "Confirm?", - "yes": "Yes", - "no": "No", - "restore": "Restore", - "invalidFileType": "Invalid file type. Only .sqlite files are accepted.", - "exportFailed": "Export failed", - "exportFailedWithError": "Export failed: {error}", - "fullExportFailedWithError": "Full export failed: {error}", - "backupCreated": "Backup created: {file}", - "restoreSuccess": "Restored! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "importSuccess": "Database imported! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "minutesAgo": "{count}m ago", - "hoursAgo": "{count}h ago", - "daysAgo": "{count}d ago", - "backupReasonManual": "manual", - "backupReasonPreRestore": "pre-restore", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", - "noChangesSinceBackup": "No changes since last backup", - "backupFailed": "Backup failed", - "restoreFailed": "Restore failed", - "importFailed": "Import failed", - "errorDuringRestore": "An error occurred during restore", - "errorDuringImport": "An error occurred during import", - "modelPricing": "Model Pricing", - "modelPricingDesc": "Configure cost rates per model • All rates in $/1M tokens", + "exportDatabase": "ડેટાબેઝ નિકાસ કરો", + "exportAll": "બધું નિકાસ કરો (.tar.gz)", + "importDatabase": "ડેટાબેઝ આયાત કરો", + "confirmDbImport": "ડેટાબેઝ આયાતની પુષ્ટિ કરો", + "confirmDbImportDesc": "આ વર્તમાન તમામ ડેટાને {file}ની સામગ્રીથી બદલી દેશે. આયાત પહેલાં આપમેળે બૅકઅપ બનાવવામાં આવશે.", + "yesImport": "હા, આયાત કરો", + "lastBackup": "છેલ્લું બૅકઅપ", + "noBackupYet": "હજુ સુધી કોઈ બૅકઅપ નથી", + "backupNow": "હમણાં બૅકઅપ લો", + "backupRestore": "બૅકઅપ અને પુનઃસ્થાપન", + "viewBackups": "બૅકઅપ્સ જુઓ", + "hide": "છુપાવો", + "backupRetentionDesc": "પુનઃસ્થાપન પહેલાં અને ડેટામાં ફેરફાર થાય ત્યારે દર 15 મિનિટે ડેટાબેઝ સ્નૅપશૉટ્સ આપમેળે બનાવવામાં આવે છે. જાળવણી: સ્માર્ટ રોટેશન સાથે 24 કલાકદીઠ + 30 દૈનિક બૅકઅપ્સ.", + "loadingBackups": "બૅકઅપ્સ લોડ થઈ રહ્યાં છે...", + "noBackupsYet": "હજુ સુધી કોઈ બૅકઅપ ઉપલબ્ધ નથી. ડેટામાં ફેરફાર થાય ત્યારે બૅકઅપ્સ આપમેળે બનાવવામાં આવશે.", + "backupsAvailable": "{count} બૅકઅપ ઉપલબ્ધ", + "refresh": "રિફ્રેશ કરો", + "confirm": "ખાતરી છે?", + "yes": "હા", + "no": "ના", + "restore": "પુનઃસ્થાપિત કરો", + "invalidFileType": "અમાન્ય ફાઇલ પ્રકાર. માત્ર .sqlite ફાઇલો સ્વીકારવામાં આવે છે.", + "exportFailed": "નિકાસ નિષ્ફળ ગઈ", + "exportFailedWithError": "નિકાસ નિષ્ફળ ગઈ: {error}", + "fullExportFailedWithError": "સંપૂર્ણ નિકાસ નિષ્ફળ ગઈ: {error}", + "backupCreated": "બૅકઅપ બનાવ્યું: {file}", + "restoreSuccess": "પુનઃસ્થાપિત થયું! {connections} કનેક્શન્સ, {nodes} નોડ્સ, {combos} કોમ્બોઝ, {apiKeys} API કીઝ.", + "importSuccess": "ડેટાબેઝ આયાત થયો! {connections} કનેક્શન્સ, {nodes} નોડ્સ, {combos} કોમ્બોઝ, {apiKeys} API કીઝ.", + "minutesAgo": "{count} મિનિટ પહેલાં", + "hoursAgo": "{count} કલાક પહેલાં", + "daysAgo": "{count} દિવસ પહેલાં", + "backupReasonManual": "મેન્યુઅલ", + "backupReasonPreRestore": "પુનઃસ્થાપન-પૂર્વ", + "connectionsCount": "{count, plural, one {# કનેક્શન} other {# કનેક્શન્સ}}", + "noChangesSinceBackup": "છેલ્લા બૅકઅપ પછી કોઈ ફેરફાર નથી", + "backupFailed": "બૅકઅપ નિષ્ફળ ગયું", + "restoreFailed": "પુનઃસ્થાપન નિષ્ફળ ગયું", + "importFailed": "આયાત નિષ્ફળ ગઈ", + "errorDuringRestore": "પુનઃસ્થાપન દરમિયાન ભૂલ આવી", + "errorDuringImport": "આયાત દરમિયાન ભૂલ આવી", + "modelPricing": "મોડેલની કિંમત", + "modelPricingDesc": "દરેક મોડેલ માટે ખર્ચ દરો ગોઠવો • બધા દરો $/1M ટોકન્સમાં છે", "pricingCoverage": "કવરેજ", "pricingAuth": "પ્રમાણીકરણ", "pricingSort": "ક્રમબદ્ધ કરો", @@ -7329,7 +7332,7 @@ "configured": "કન્ફિગર કરેલ", "none": "કોઈ નહીં", "modelOverrideValuePlaceholder": "સંખ્યાત્મક મૂલ્ય", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "અંગ્રેજીમાં અલ્પવિરામથી અલગ કરેલું, દા.ત. low, medium, high", "addKeyValue": "કી વેલ્યુ ઉમેરો", "noModelOverrides": "આ મોડેલ માટે કોઈ ઓવરરાઇડ્સ કન્ફિગર કરેલ નથી.", "modelOverrideLoadFailed": "મોડેલ ઓવરરાઇડ્સ લોડ કરવામાં નિષ્ફળ", @@ -7337,66 +7340,66 @@ "modelOverrideRemoved": "મોડેલ ઓવરરાઇડ દૂર કરવામાં આવ્યું", "modelOverrideSaveFailed": "મોડેલ ઓવરરાઇડ સાચવવામાં નિષ્ફળ", "modelOverrideRemoveFailed": "મોડેલ ઓવરરાઇડ દૂર કરવામાં નિષ્ફળ", - "registry": "Registry", - "priced": "Priced", - "searchProvidersModels": "Search providers or models...", - "showAll": "Show All", - "noProvidersMatch": "No providers match your search.", - "howPricingWorks": "How Pricing Works", - "cacheWrite": "Cache Write", - "unsaved": "unsaved", + "registry": "રજિસ્ટ્રી", + "priced": "કિંમત નિર્ધારિત", + "searchProvidersModels": "પ્રદાતાઓ અથવા મોડલ શોધો...", + "showAll": "બધું બતાવો", + "noProvidersMatch": "તમારી શોધ સાથે કોઈ પ્રદાતા મેળ ખાતા નથી.", + "howPricingWorks": "કિંમત કેવી રીતે કાર્ય કરે છે", + "cacheWrite": "કૅશ લેખન", + "unsaved": "સાચવેલ નથી", "resetDefaults": "ડિફોલ્ટ્સ ફરીથી સેટ કરો", - "saveProvider": "Save Provider", + "saveProvider": "પ્રદાતા સાચવો", "model": "Model", - "models": "models", - "moreProviders": "{count} more providers", - "withPricing": "with pricing configured", - "policiesCircuitBreakers": "Policies & Circuit Breakers", - "activeIssuesDetected": "Active issues detected", - "off": "Off", - "resetPricingConfirm": "Reset all pricing for {provider} to defaults?", - "pricingDescInput": "Input: tokens sent to the model", - "pricingDescOutput": "Output: tokens generated", - "pricingDescCached": "Cached: reused input (~50% of input rate)", - "pricingDescReasoning": "Reasoning: thinking tokens (falls back to Output)", - "pricingDescCacheWrite": "Cache Write: creating cache entries (falls back to Input)", - "pricingDescFormula": "Cost = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.", - "pricingSettingsTitle": "Pricing Settings", - "totalModels": "Total Models", - "active": "Active", - "costCalculation": "Cost Calculation", - "costCalculationDesc": "Costs are calculated based on token usage and pricing rates configured for each model.", - "pricingFormat": "Pricing Format", - "pricingFormatDesc": "All rates are in $/1M tokens (dollars per million tokens).", - "tokenTypes": "Token Types", - "inputTokenDesc": "Standard prompt tokens", - "outputTokenDesc": "Completion/response tokens", - "cachedTokenDesc": "Cached input tokens (typically 50% of input rate)", - "reasoningTokenDesc": "Special reasoning/thinking tokens (fallback to output rate)", - "cacheCreationTokenDesc": "Tokens used to create cache entries (fallback to input rate)", - "customPricingNote": "You can override default pricing for specific models. Custom overrides take priority over auto-detected pricing.", - "editPricing": "Edit Pricing", - "viewFullDetails": "View Full Details", - "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "models": "મોડલ", + "moreProviders": "વધુ {count} પ્રદાતાઓ", + "withPricing": "જેમના માટે કિંમત ગોઠવેલી છે", + "policiesCircuitBreakers": "નીતિઓ અને સર્કિટ બ્રેકર્સ", + "activeIssuesDetected": "સક્રિય સમસ્યાઓ મળી આવી", + "off": "બંધ", + "resetPricingConfirm": "{provider} માટેની બધી કિંમતોને ડિફૉલ્ટ પર રીસેટ કરવી છે?", + "pricingDescInput": "ઇનપુટ: મોડલને મોકલેલા ટોકન", + "pricingDescOutput": "આઉટપુટ: જનરેટ થયેલા ટોકન", + "pricingDescCached": "કૅશ કરેલા: ફરીથી ઉપયોગમાં લેવાયેલ ઇનપુટ (ઇનપુટ દરના આશરે 50%)", + "pricingDescReasoning": "તર્ક: વિચારણા માટેના ટોકન (ઉપલબ્ધ ન હોય તો આઉટપુટ દર લાગુ પડે છે)", + "pricingDescCacheWrite": "કૅશ લેખન: કૅશ એન્ટ્રીઓ બનાવવી (ઉપલબ્ધ ન હોય તો ઇનપુટ દર લાગુ પડે છે)", + "pricingDescFormula": "કિંમત = (ઇનપુટ × ઇનપુટ_દર) + (આઉટપુટ × આઉટપુટ_દર) + (કૅશ કરેલા × કૅશ_દર), પ્રતિ દસ લાખ ટોકન.", + "pricingSettingsTitle": "કિંમત સેટિંગ્સ", + "totalModels": "કુલ મોડલ", + "active": "સક્રિય", + "costCalculation": "ખર્ચની ગણતરી", + "costCalculationDesc": "દરેક મોડલ માટે ગોઠવેલા ટોકન વપરાશ અને કિંમતના દરોના આધારે ખર્ચની ગણતરી કરવામાં આવે છે.", + "pricingFormat": "કિંમતનું ફોર્મેટ", + "pricingFormatDesc": "બધા દરો $/1M ટોકન (પ્રતિ દસ લાખ ટોકન ડૉલર)માં છે.", + "tokenTypes": "ટોકનના પ્રકારો", + "inputTokenDesc": "માનક પ્રોમ્પ્ટ ટોકન", + "outputTokenDesc": "પૂર્ણતા/પ્રતિસાદ ટોકન", + "cachedTokenDesc": "કૅશ કરેલા ઇનપુટ ટોકન (સામાન્ય રીતે ઇનપુટ દરના 50%)", + "reasoningTokenDesc": "વિશિષ્ટ તર્ક/વિચારણા ટોકન (ઉપલબ્ધ ન હોય તો આઉટપુટ દર લાગુ પડે છે)", + "cacheCreationTokenDesc": "કૅશ એન્ટ્રીઓ બનાવવા માટે વપરાતા ટોકન (ઉપલબ્ધ ન હોય તો ઇનપુટ દર લાગુ પડે છે)", + "customPricingNote": "તમે ચોક્કસ મોડલ માટેની ડિફૉલ્ટ કિંમત બદલી શકો છો. કસ્ટમ ઓવરરાઇડને આપમેળે શોધાયેલી કિંમત કરતાં પ્રાથમિકતા મળે છે.", + "editPricing": "કિંમતમાં ફેરફાર કરો", + "viewFullDetails": "સંપૂર્ણ વિગતો જુઓ", + "themeCoral": "કોરલ", + "adaptiveVolumeRouting": "અનુકૂલનશીલ વોલ્યુમ રૂટિંગ", + "adaptiveVolumeRoutingDesc": "પેલોડ વોલ્યુમ અને થ્રુપુટ દબાણના આધારે કનેક્શનને ગતિશીલ રીતે સ્કેલ કરો.", + "lkgpToggleTitle": "છેલ્લો જાણીતો સારો પ્રદાતા (LKGP)", + "lkgpToggleDesc": "સક્ષમ હોય ત્યારે, રાઉટર છેલ્લે કયા provider એ સફળ પ્રતિસાદ આપ્યો હતો તે યાદ રાખે છે અને ત્યારબાદની વિનંતીઓમાં પહેલા તેનો પ્રયાસ કરે છે.", "echoRequestedModelTitle": "પ્રતિસાદોમાં વિનંતી કરેલ મોડેલ નામ ઇકો કરો", "echoRequestedModelDesc": "જ્યારે સક્ષમ કરેલ હોય, ત્યારે પ્રતિસાદનું `model` ફીલ્ડ અપસ્ટ્રીમ મોડેલ નામના બદલે ક્લાયન્ટે વિનંતી કરેલ ઉપનામ અથવા કોમ્બો નામ દર્શાવે છે. તે એવા કડક ક્લાયન્ટ્સ (દા.ત. Claude Desktop) ને ઠીક કરે છે જે એવા પ્રતિસાદને નકારે છે જેનું મોડેલ વિનંતી સાથે મેળ ખાતું નથી.", "webSearchRouteTitle": "વેબ સર્ચ રૂટિંગ", "webSearchRouteDesc": "જ્યારે વિનંતીમાં મૂળ web_search ટૂલ શામેલ હોય, ત્યારે ડિફૉલ્ટને બદલે આખી વિનંતીને આ મોડેલ પર રૂટ કરો — એવા પ્રદાતાઓ માટે ઉપયોગી છે જે Anthropic ના web_search સર્વર ટૂલને અમલમાં મૂકતા નથી. અક્ષમ કરવા માટે ખાલી છોડો.", "webSearchRoutePlaceholder": "મોડેલ શોધો અથવા પસંદ કરો…", "paidModelPatternWarning": "આ પેટર્ન ફક્ત પેઇડ મોડેલ્સ સાથે મેળ ખાય છે — પેઇડ મોડેલ્સ સક્ષમ કરો અથવા પેટર્નને સમાયોજિત કરો.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP કૅશ સાફ કરો", + "lkgpCacheCleared": "LKGP કૅશ સફળતાપૂર્વક સાફ થઈ", + "lkgpCacheClearFailed": "LKGP કૅશ સાફ કરવામાં નિષ્ફળતા", + "days": "દિવસો", + "lkgp": "LKGP મોડ", + "lkgpDesc": "છેલ્લો જાણીતો સારો Provider (અનુમાનિત સ્થિતિસ્થાપકતા)", + "maintenance": "જાળવણી", + "purgeExpiredLogs": "સમાપ્ત થયેલા લૉગ્સ દૂર કરો", + "purgeLogsFailed": "લૉગ્સ દૂર કરવામાં નિષ્ફળતા", "logsDeleted": "{count, plural, =0 {કોઈ એક્સપાયર થયેલ લૉગ સાફ કર્યા નથી} one {# એક્સપાયર થયેલ લૉગ સાફ કર્યો} other {# એક્સપાયર થયેલ લૉગ સાફ કર્યા}}", "resetUsageData": "વપરાશ ડેટા રીસેટ કરો", "resetUsageDataDesc": "તમે વપરાશ, વિનંતી લૉગ્સ અને એનાલિટિક્સ ડેટા કેટલા સમય પહેલાંનો કાઢી નાખવા માંગો છો તે પસંદ કરો. પ્રદાતા રૂપરેખાંકન, કનેક્શન્સ, API કી, કોમ્બોઝ અને સેટિંગ્સ સાચવવામાં આવે છે. આ ક્રિયા પૂર્વવત્ કરી શકાતી નથી.", @@ -7413,63 +7416,63 @@ "resetUsageFailed": "વપરાશ ડેટા રીસેટ કરવામાં નિષ્ફળ", "reset": "રીસેટ કરો", "resetting": "રીસેટ કરી રહ્યું છે...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", - "pricingSourceLiteLLM": "LiteLLM (Community)", - "clearSyncedPricingConfirm": "Clear all synced pricing data? Provider defaults will be used instead.", - "clearSyncedPricingFailed": "Failed to clear synced pricing", - "pricingSourceUser": "User Override", - "pageDescription": "Manage application settings, model aliases, pricing, and routing rules", - "pricingSyncStatus": "Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", - "pricingLoadFailed": "Failed to load pricing data", - "pricingSyncDescription": "Automatically sync model pricing from external sources to keep cost calculations accurate", - "clearSyncedPricingSuccess": "Synced pricing data cleared", - "clearSyncedPricingFailedWithReason": "Failed to clear pricing: {reason}", - "pricingSourceDefault": "Built-in Default", - "pricingSyncSuccess": "Pricing synced successfully", - "enableSyncError": "Failed to toggle pricing sync", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "contextOpt": "સંદર્ભ માટે ઑપ્ટિમાઇઝ કરેલું", + "contextOptDesc": "સંદર્ભ વિન્ડોની આવશ્યકતાઓ અને વાર્તાલાપની લંબાઈના આધારે રૂટ કરે છે", + "cacheOpt": "કૅશ માટે ઑપ્ટિમાઇઝ કરેલું", + "cacheOptDesc": "સમાન ફરીથી વાપરી શકાય તેવા prompt prefix ને સમાન provider account પર રાખે છે", + "priorityDesc": "ક્રમિક fallback — પહેલા provider 1, પછી provider 2 અને એ જ રીતે આગળ પ્રયાસ કરે છે", + "weightedDesc": "ટકાવારી વેઇટ્સ અનુસાર providers વચ્ચે ટ્રાફિક વિતરિત કરે છે", + "modelRoutingTitle": "મોડેલ રાઉટિંગ નિયમો", + "modelRoutingDesc": "glob patterns નો ઉપયોગ કરીને મોડેલ્સને ચોક્કસ combos પર આપમેળે રૂટ કરો", + "addRule": "નિયમ ઉમેરો", + "routeToCombo": "Combo પર રૂટ કરો", + "selectCombo": "combo પસંદ કરો...", + "priorityHint": "વધુ મૂલ્ય = પહેલા તપાસવામાં આવે છે. ચોક્કસ patterns માટે 10+ વાપરો.", + "patternHint": "કોઈપણ અક્ષરો માટે * અને એક અક્ષર માટે ? વાપરો. અક્ષરકેસ પ્રત્યે અસંવેદનશીલ.", + "noRoutingRules": "કોઈ રાઉટિંગ નિયમો ગોઠવેલા નથી. ડિફૉલ્ટ રૂપે વિનંતીઓ global combo નો ઉપયોગ કરે છે.", + "routingRuleHint": "વિનંતીઓને આપમેળે રૂટ કરવા માટે claude-opus* -> frontier-combo જેવો નિયમ ઉમેરો.", + "deleteRoutingRule": "આ મોડેલ રાઉટિંગ નિયમ કાઢી નાખવો છે?", + "exactMatchMode": "ચોક્કસ મેળ", + "wildcardPatternMode": "વાઇલ્ડકાર્ડ Pattern", + "exactMatchModeDesc": "નાપસંદ કરેલા અથવા નામ બદલાયેલા model IDs માટે ચોક્કસ aliases વાપરો.", + "wildcardPatternModeDesc": "મોડેલ્સના પરિવારને એક target સાથે મેપ કરવો હોય ત્યારે * અને ? ધરાવતા wildcard aliases વાપરો.", + "noExactAliasesConfigured": "કોઈ exact-match aliases ગોઠવેલા નથી.", + "wildcardRulesTitle": "વાઇલ્ડકાર્ડ નિયમો", + "noWildcardAliasesConfigured": "કોઈ wildcard aliases ગોઠવેલા નથી.", + "overview": "વિહંગાવલોકન", + "unknownError": "અજાણી ભૂલ", + "pricingSourceLiteLLM": "LiteLLM (સમુદાય)", + "clearSyncedPricingConfirm": "સમન્વયિત કરેલો તમામ pricing data સાફ કરવો છે? તેના બદલે provider defaults નો ઉપયોગ થશે.", + "clearSyncedPricingFailed": "સમન્વયિત pricing સાફ કરવામાં નિષ્ફળતા", + "pricingSourceUser": "વપરાશકર્તા ઓવરરાઇડ", + "pageDescription": "એપ્લિકેશન સેટિંગ્સ, મોડેલ aliases, pricing અને રાઉટિંગ નિયમો મેનેજ કરો", + "pricingSyncStatus": "સિંક સ્થિતિ", + "whitelist": "શ્વેતસૂચિ", + "syncDisabled": "સિંક અક્ષમ છે", + "pricingLoadFailed": "કિંમતનો ડેટા લોડ કરવામાં નિષ્ફળ", + "pricingSyncDescription": "ખર્ચની ગણતરીઓ સચોટ રાખવા માટે બાહ્ય સ્રોતોમાંથી મોડલની કિંમતો આપમેળે સિંક કરો", + "clearSyncedPricingSuccess": "સિંક કરેલો કિંમતનો ડેટા સાફ કરવામાં આવ્યો", + "clearSyncedPricingFailedWithReason": "કિંમતો સાફ કરવામાં નિષ્ફળ: {reason}", + "pricingSourceDefault": "બિલ્ટ-ઇન ડિફૉલ્ટ", + "pricingSyncSuccess": "કિંમતો સફળતાપૂર્વક સિંક થઈ", + "enableSyncError": "કિંમત સિંક ટૉગલ કરવામાં નિષ્ફળ", + "syncEnabled": "સિંક સક્ષમ છે", + "blacklist": "કાળી સૂચિ", "pricingSourceModelsDev": "Models.dev", - "syncedModels": "Synced Models", - "budget": "Budget", - "pricingSyncTitle": "Pricing Sync", - "pricingResetFailedWithReason": "Failed to reset pricing: {reason}", - "tab": "Tab", - "pricingSavedProvider": "Pricing saved for {provider}", - "pricingSyncFailed": "Pricing sync failed", - "pricingSaveFailedWithReason": "Failed to save pricing: {reason}", - "pricingResetProvider": "Pricing reset for {provider}", - "nextSync": "Next Sync", - "pricingSyncFailedWithReason": "Pricing sync failed: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "syncedModels": "સિંક કરેલા મોડલ્સ", + "budget": "બજેટ", + "pricingSyncTitle": "કિંમત સિંક", + "pricingResetFailedWithReason": "કિંમતો રીસેટ કરવામાં નિષ્ફળ: {reason}", + "tab": "ટૅબ", + "pricingSavedProvider": "{provider} માટે કિંમતો સાચવવામાં આવી", + "pricingSyncFailed": "કિંમત સિંક નિષ્ફળ", + "pricingSaveFailedWithReason": "કિંમતો સાચવવામાં નિષ્ફળ: {reason}", + "pricingResetProvider": "{provider} માટે કિંમતો રીસેટ કરવામાં આવી", + "nextSync": "આગામી સિંક", + "pricingSyncFailedWithReason": "કિંમત સિંક નિષ્ફળ: {reason}", + "clearSyncedPricing": "સિંક કરેલી કિંમતો સાફ કરો", + "compressionTitle": "પ્રોમ્પ્ટ સંકોચન", + "compressionDesc": "પ્રદાતાઓને મોકલતા પહેલાં પ્રોમ્પ્ટ્સને સંકોચીને ટોકનનો ઉપયોગ ઘટાડો", "compressionGuidanceFullGuideLink": "સંપૂર્ણ કમ્પ્રેશન માર્ગદર્શિકા", "compressionGuidanceShow": "વિગતો", "compressionGuidanceHide": "વિગતો છુપાવો", @@ -7485,13 +7488,13 @@ "tokenSaverInputCompressionDesc": "કોડ, URLs અને હેતુને સાચવી રાખીને યોગ્ય ચેટ ઇતિહાસ ફરીથી લખો.", "tokenSaverFineTunePrefix": "દરેક એન્જિનને આના પર ફાઇન-ટ્યુન કરો", "tokenSaverFineTuneSuffix": "અથવા વિનંતી દીઠ એન્જિનોને આના પર જોડો", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", + "compressionMode": "સંકોચન મોડ", + "compressionModeOff": "બંધ", + "compressionModeOffDesc": "કોઈ સંકોચન લાગુ કરાયું નથી", + "compressionModeLite": "લાઇટ", + "compressionModeLiteDesc": "વ્હાઇટસ્પેસ અને ખાલી લીટીઓમાં ઘટાડો", + "compressionModeStandard": "સ્ટાન્ડર્ડ (Caveman)", + "compressionModeStandardDesc": "30+ પેટર્ન સાથેનું નિયમ-આધારિત સંકોચન, કોડ બ્લૉક્સ અને URLs જાળવી રાખે છે", "compressionModeAggressive": "આક્રમક", "compressionModeAggressiveDesc": "સારાંશ + સાધન પરિણામ કમ્પ્રેશન + મહત્તમ બચત માટે પ્રગતિશીલ વૃદ્ધત્વ", "compressionModeUltra": "અલ્ટ્રા", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "દરેક વૃદ્ધત્વ સ્તર પર રાખવામાં આવેલા તાજેતરના સંદેશાઓની સંખ્યા (ઉચ્ચ = વધુ સાચવેલ)", "compressionToolStrategies": "સાધન પરિણામ વ્યૂહરચનાઓ", "compressionToolStrategiesDesc": "વિવિધ ટૂલ પરિણામ પ્રકારો માટે કમ્પ્રેશન વ્યૂહરચનાઓ ટૉગલ કરો", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "સામાન્ય સેટિંગ્સ", + "compressionAutoTrigger": "ઑટો-ટ્રિગર થ્રેશોલ્ડ", + "compressionCacheTTL": "કૅશ TTL", + "compressionPreserveSystem": "સિસ્ટમ પ્રોમ્પ્ટ જાળવો", "compressionPreserveSystemAlways": "હંમેશા", "compressionPreserveSystemWhenNoCache": "જ્યારે કોઈ કૅશ ન હોય", "compressionPreserveSystemNever": "ક્યારેય નહીં", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "સાચવાયું", "compressionExclusionsCount": "{count, plural, one {# બાહ્ય} other {# બાહ્ય}} કન્ફિગર કરેલ", "compressionExclusionsEmpty": "કોઈ અપવાદો કન્ફિગર કરેલ નથી — દરેક મોડેલ/એન્ડપોઈન્ટ સંકોચન માટે યોગ્ય છે (ડિફોલ્ટ વર્તન).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman એન્જિન કૉન્ફિગરેશન", + "compressionCavemanConfigDesc": "નિયમ-આધારિત સંકોચન એન્જિનને સૂક્ષ્મ રીતે ગોઠવો", "compressionCavemanPanelHint": "તેનું ચાલુ/બંધ અને સ્તર પેનલમાં સેટ કરેલ છે:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "સંદેશ ભૂમિકાઓ સંકુચિત કરો", + "compressionRoleUser": "વપરાશકર્તા", + "compressionRoleAssistant": "સહાયક", + "compressionRoleSystem": "સિસ્ટમ", + "compressionMinLength": "સંદેશની લઘુત્તમ લંબાઈ", + "compressionSkipRules": "સંકોચન નિયમો અવગણો", + "compressionSkipRulesDesc": "સંકોચન દરમિયાન નિયમોને અવગણવા માટે તેમના પર ક્લિક કરો", + "compressionPreservePatterns": "પેટર્ન સાચવો", + "compressionPreservePatternsDesc": "ક્યારેય સંકુચિત ન કરવામાં આવતી Regex પેટર્ન (દરેક લાઇનમાં એક)", + "compressionLogTitle": "સંકોચન લૉગ", + "compressionLogEmpty": "હજુ સુધી કોઈ સંકુચિત વિનંતીઓ નથી. સંકોચન સક્ષમ રાખીને વિનંતીઓ પર પ્રક્રિયા કરવામાં આવશે ત્યારે સંકોચનના આંકડા અહીં દેખાશે.", "minutes": "મિનિટ", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "કમાન્ડ-સજાગ ટૂલ આઉટપુટ ફિલ્ટરિંગ", + "compressionModeCodexResponses": "Responses ટૂલ આઉટપુટ", + "compressionModeCodexResponsesDesc": "પાત્ર shell, patch, search, build અને JSON આઉટપુટ માટે સાવચેત સંકોચન", + "compressionModeStacked": "સ્ટૅક્ડ", + "compressionModeStackedDesc": "RTK ટૂલ-આઉટપુટ ફિલ્ટરિંગ પછી Caveman સંદેશ સંકોચન", + "qdrantTitle": "Qdrant (વેક્ટર મેમરી)", + "qdrantDesc": "વૈકલ્પિક. વધુ ઝડપી પુનઃપ્રાપ્તિ માટે બાહ્ય વેક્ટર ડેટાબેઝમાં અર્થલક્ષી મેમરીઓને ઇન્ડેક્સ કરે છે.", + "qdrantStatusActive": "સક્રિય", + "qdrantStatusError": "ભૂલ", + "qdrantStatusDisabled": "અક્ષમ", + "qdrantEnable": "Qdrant સક્ષમ કરો", + "qdrantEnableDesc": "સક્ષમ હોય ત્યારે, અર્થલક્ષી/હાઇબ્રિડ વ્યૂહરચના મેમરીઓ પુનઃપ્રાપ્ત કરવા માટે Qdrant નો ઉપયોગ કરી શકે છે.", + "qdrantTesting": "પરીક્ષણ થઈ રહ્યું છે...", + "qdrantTestConnection": "કનેક્શનનું પરીક્ષણ કરો", + "qdrantSaved": "કૉન્ફિગરેશન સાચવાયું", + "qdrantSaveError": "કૉન્ફિગરેશન સાચવવામાં નિષ્ફળતા", + "qdrantHostHint": "પોર્ટ વિના. ઉદાહરણ: 127.0.0.1 અથવા http://qdrant", + "qdrantPort": "પોર્ટ", + "qdrantPortHint": "Qdrant ડિફૉલ્ટ: 6333", + "qdrantCollectionHint": "મેમરી પૉઇન્ટ્સ જ્યાં સંગ્રહિત થશે.", + "qdrantEmbeddingModel": "એમ્બેડિંગ મોડલ", + "qdrantHelpTitle": "ઝડપી સેટઅપ સહાય", + "qdrantHelpQuickTitle": "ઝડપી સેટઅપ (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. હોસ્ટ: Qdrant IP/URL, પોર્ટ: 6333, કલેક્શન: omniroute_memory.", + "qdrantHelpStep2": "2. જો nvidia/llama-nemotron-embed-vl-1b-v2:free નો ઉપયોગ કરતા હો, તો કલેક્શન ડાઇમેન્શન 2048 રાખો.", + "qdrantHelpStep3": "3. મોડલ ફીલ્ડ: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. સાચવો, કનેક્શનનું પરીક્ષણ કરો, પછી શોધનું પરીક્ષણ કરો.", + "qdrantEmbeddingQuickSelect": "શોધાયેલા મોડલ્સમાંથી ઝડપથી પસંદ કરો...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "ફોર્મેટ: provider/model. પ્રદાતાનું ઓળખપત્ર ગોઠવેલું હોવું આવશ્યક છે.", + "qdrantApiKeyPlaceholderKeep": "(વર્તમાન કી જાળવી રાખવા માટે ખાલી છોડો)", + "qdrantApiKeyPlaceholderOptional": "(ઉપયોગમાં ન હોય તો ખાલી છોડો)", + "qdrantSaveHint": "ટિપ: host/port/collection/model સંપાદિત કરો અને Save પર ક્લિક કરો. API key વૈકલ્પિક છે.", + "qdrantSearchTestTitle": "શોધ પરીક્ષણ", + "qdrantSearchTestDesc": "એમ્બેડિંગ બનાવે છે અને Qdrant માં શોધે છે.", + "qdrantSearchPlaceholder": "ઉદાહરણ: વપરાશકર્તાની પસંદગીઓ, ઇતિહાસ વગેરે", + "qdrantNoResults": "કોઈ પરિણામ નથી (અથવા Qdrant ગોઠવાયેલું નથી).", + "qdrantCleanupTitle": "જાળવણી અને સફાઈ", + "qdrantCleanupDesc": "આના આધારે સમયસમાપ્ત અને જૂના પૉઇન્ટ દૂર કરે છે", + "searching": "શોધી રહ્યું છે...", + "cleaning": "સફાઈ કરી રહ્યું છે...", + "cleanNow": "હમણાં સાફ કરો", "optional": "વૈકલ્પિક", "current": "વર્તમાન", "remove": "દૂર કરો", @@ -7600,19 +7603,19 @@ "resilienceScope": "અવકાશ:", "resilienceTrigger": "ટ્રિગર:", "resilienceEffect": "અસર:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "વિનંતી કતાર અને દર", + "resilienceAutoEnableApiKeyProviders": "API-key પ્રદાતાઓ માટે આપમેળે સક્ષમ કરો", + "resilienceRequestsPerMinute": "પ્રતિ મિનિટ વિનંતીઓ", + "resilienceMinTimeBetweenRequests": "વિનંતીઓ વચ્ચેનો લઘુતમ સમય", + "resilienceConcurrentRequests": "સમકાલીન વિનંતીઓ", + "resilienceConnectionScopeConcurrentRequests": "પ્રતિ કનેક્શન/ક્વોટા સ્કોપ સમકાલીન વિનંતીઓ", + "resilienceGlobalConcurrentRequests": "વૈશ્વિક સમકાલીન અપસ્ટ્રીમ વિનંતીઓ (0 = અક્ષમ)", "resilienceMaxQueueWaitTime": "મહત્તમ કતાર પ્રતીક્ષા સમય", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "મૂળભૂત કૂલડાઉન", + "resilienceUseUpstreamRetryHints": "અપસ્ટ્રીમ પુનઃપ્રયાસ સંકેતોનો ઉપયોગ કરો", + "resilienceDefaultPerProvider": "ડિફૉલ્ટ (પ્રતિ પ્રદાતા)", + "resilienceAlwaysOn": "હંમેશાં ચાલુ", + "resilienceAlwaysOff": "હંમેશાં બંધ", "routingRemoveEntry": "એન્ટ્રી દૂર કરો", "routingNeedlesSubstrings": "સોય (મેળ કરવા માટે સબસ્ટ્રિંગ્સ)", "routingCaseSensitive": "કેસ સંવેદનશીલ", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "એક્સટ્રેક્ટ કરેલ વર્ણન મૂળ વિનંતીમાં પાછું ઇન્જેક્ટ કરવામાં આવે તે પહેલાં વિઝન મોડેલ પર મોકલવામાં આવે છે.", "visionBridgeTimeoutMs": "સમયસમાપ્તિ (ms)", "visionBridgeMaxImagesPerRequest": "વિનંતી દીઠ મહત્તમ છબીઓ", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "મહત્તમ બૅકઑફ પગલાં", + "resilienceProviderBreakerTitle": "પ્રતિ પ્રદાતા સર્કિટ બ્રેકર", + "resilienceFailureThreshold": "નિષ્ફળતા થ્રેશોલ્ડ", + "resilienceDegradationThreshold": "અધોગતિ થ્રેશોલ્ડ", "resilienceResetTimeout": "સમયસમાપ્તિ રીસેટ કરો", "resilienceFailureThresholdLabel": "નિષ્ફળતા થ્રેશોલ્ડ", "resilienceResetTimeoutLabel": "સમયસમાપ્તિ રીસેટ કરો", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "કનેક્શન કૂલડાઉન", "resilienceUseUpstreamRetryHintsLabel": "અપસ્ટ્રીમ ફરી પ્રયાસ સંકેતોનો ઉપયોગ કરો", "resilienceUseUpstream429BreakerLabel": "અપસ્ટ્રીમ 429 સંકેતોનો ઉપયોગ કરો (બ્રેકર)", "resilienceMaxBackoffStepsLabel": "મહત્તમ બેકઓફ પગલાં", "resilienceYes": "હા", "resilienceNo": "ના", - "resilienceDefault": "Default", + "resilienceDefault": "ડિફૉલ્ટ", "storageDatabaseBackupRetention": "ડેટાબેઝ બેકઅપ રીટેન્શન", "storageDatabaseBackups": "ડેટાબેઝ બેકઅપ્સ", "storageBackupRetentionDescription": "સ્વચાલિત SQLite બેકઅપ્સ અહીં સંગ્રહિત થાય છે", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "લેગસી JSON સફળતાપૂર્વક ઇમ્પોર્ટ થયું!", "jsonImportFailed": "JSON ઇમ્પોર્ટ કરવામાં નિષ્ફળ રહ્યું", "jsonImportError": "JSON ઇમ્પોર્ટ દરમિયાન ભૂલ", + "jsonImportAuthRequired": "જૂનું JSON કૉન્ફિગરેશન આયાત કરવા માટે પ્રમાણીકરણ આવશ્યક છે. કૃપા કરીને પહેલાં સાઇન ઇન કરો અથવા સેટઅપ પૂર્ણ કરો.", + "databaseSettingsAuthRequiredTitle": "પ્રમાણીકરણ આવશ્યક છે", + "databaseSettingsAuthRequiredBody": "ડેટાબેઝ સેટિંગ્સ અને JSON આયાત ફક્ત પ્રમાણિત એડમિન માટે ઉપલબ્ધ છે. તેમને જોવા અને સંપાદિત કરવા માટે સાઇન ઇન કરો અથવા સેટઅપ પૂર્ણ કરો.", + "databaseSettingsAuthRequiredCta": "સાઇન ઇન કરો", "storagePurgeData": "પર્જ ડેટા", "storagePurgeDataDesc": "રીટેન્શન તપાસ લાગુ કર્યા વિના તરત જ તમામ રેકોર્ડ્સ કાઢી નાખો. સાવધાની સાથે ઉપયોગ કરો.", "storageRetentionCleanup": "રીટેન્શન સેટિંગ્સ", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "મોડ: {mode}", "compressionAdaptiveOff": "અડેપ્ટિવ કન્ટેક્સ્ટ બજેટ: બંધ (લેગસી ઑટો-ટ્રિગર)", "compressionAdaptiveTarget": "અડેપ્ટિવ ({mode}, પૉલિસી: {policy}) — લક્ષ્ય ≈ {target, number} ટોકન્સ ({contextLimit, number}-ટોકન વિન્ડો માટે)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "અનુકૂલનશીલ સંદર્ભ બજેટ", + "compressionAdaptiveModeOff": "બંધ (લેગસી ઑટો-ટ્રિગર)", + "compressionAdaptiveModeFloor": "ન્યૂનતમ મર્યાદા (હંમેશાં ફિટ થવાની ખાતરી)", + "compressionAdaptiveModeReplace": "ઑટો-ટ્રિગર બદલો", + "compressionAdaptivePolicy": "બજેટ નીતિ", + "compressionAdaptivePolicyReserve": "આઉટપુટ માટે અનામત", + "compressionAdaptivePolicyPercentage": "વિન્ડોની ટકાવારી", + "compressionAdaptivePolicyAbsolute": "નિરપેક્ષ ટોકન બજેટ", "compressionOutputStylesDescription": "પ્રોવાઇડર આઉટપુટને ફરીથી લખ્યા વિના રિસ્પોન્સ-શેપિંગ સૂચનાઓ ઇન્જેક્ટ કરો. મુક્તપણે જોડો.", "mcpAccessibilityDescription": "MCP ટૂલ આઉટપુટ્સને સ્કોપ કરે છે (અલગ સ્ટોર).", "compressionStylesTileSummary": "{tokens, number} ટોકન્સ સાચવ્યા · {runs, plural, one {# રન સ્ટાઇલ કરેલ} other {# રન સ્ટાઇલ કરેલ}}", @@ -7866,8 +7873,8 @@ "description": "કમાન્ડ-આઉટપુટ ફિલ્ટરિંગ." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses ટૂલનું આઉટપુટ", + "description": "સપોર્ટેડ Responses ટૂલનાં આઉટપુટ માટે સાવચેત કમ્પ્રેશન." }, "headroom": { "label": "હેડરૂમ", @@ -7908,12 +7915,12 @@ "description": "YAGNI લેડર: સૌથી નાનો કાર્યકારી ફેરફાર, કોઈ વિનંતી ન કરેલ એબ્સ્ટ્રેક્શન્સ નહીં." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (આળસુ સિનિયર ડેવલપર)", + "description": "આળસુ સિનિયર-ડેવલપરની શિસ્ત: YAGNIની સીડી ચઢો, મૂળ કારણ સુધારો અને સૌથી નાનો કાર્યરત ડિફ બનાવો." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "મને ADHD છે (પહેલાં કાર્યવાહી)", + "description": "પહેલાં કાર્યવાહી ધરાવતું આઉટપુટ: આગળનું પગલું શરૂઆતમાં, પગલાં ક્રમાંકિત, એક નક્કર આગળનું પગલું અને કોઈ પ્રસ્તાવના નહીં." }, "terse-cjk": { "label": "સંક્ષિપ્ત CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI ફોલબેક", "cliproxyapiEnableFallback": "CLIProxyAPI ફોલબેક સક્ષમ કરો", "cliproxyapiUrl": "CLIProxyAPI URL", + "headroomProxyTitle": "હેડરૂમ પ્રોક્સી", + "headroomProxyDesc": "વૈકલ્પિક Headroom ટોકન-સેવર પ્રોક્સીનું URL. ખાલી રાખવાથી HEADROOM_URL અથવા http://localhost:8787 વપરાય છે.", + "headroomProxyUrl": "Headroom URL", + "headroomProxyUrlHint": "લૂપબૅક URL આ પેજ પરથી શરૂ કરી શકાય છે. બાહ્ય URL માત્ર તપાસવામાં આવે છે.", + "headroomProxySave": "સાચવો", + "headroomProxyStart": "શરૂ કરો", + "headroomProxyStop": "બંધ કરો", + "headroomProxyExternalHint": "આ URL લૂપબૅક નથી, તેથી OmniRoute સ્થાનિક CLI શરૂ કરશે નહીં.", "cliproxyapiStatus": "CLIProxyAPI સ્થિતિ", "cliproxyapiNotDetected": "શોધાયેલ નથી", "cliproxyapiImportAuthTitle": "CLIProxyAPI માંથી એકાઉન્ટ્સ આયાત કરો", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "OpenAI કોડેક્સ વિનંતીઓ માટે વૈશ્વિક સ્તરે service_tier=પ્રાયોરિટી દાખલ કરો.", "codexFastTierHint": "જ્યારે સક્ષમ હોય, ત્યારે OmniRoute કનેક્શન્સ માટે આઉટબાઉન્ડ કોડેક્સ વિનંતીઓમાં service_tier=priority ઉમેરે છે જે પહેલાથી કોઈ સ્તરનો ઉલ્લેખ કરતા નથી. પ્રાધાન્યતા સ્તર માટે OpenAI Enterprise API કી અથવા ChatGPT-auth Codex પાથની જરૂર છે; અન્ય કી પ્રકારો OpenAI તરફથી ટાયર-સંબંધિત ભૂલ પ્રાપ્ત કરશે. કોડેક્સ પ્રદાતા પૃષ્ઠ પર પ્રતિ-કનેક્શન સેટિંગ્સ અગ્રતા લે છે.", "codexFastTierSaveError": "કોડેક્સ ફાસ્ટ ટિયર સેટિંગ અપડેટ કરવામાં નિષ્ફળ", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex ક્વોટા ઑટો-પિંગ", + "codexAutoPingDesc": "દરેક કનેક્શન માટે સ્વૈચ્છિક વિકલ્પ: Codex સેશન વિન્ડો રીસેટ થયા પછી તરત જ એક નાની રિક્વેસ્ટ મોકલે છે, જેથી તમને જરૂર પડે ત્યારે તે કોલ્ડ ન હોય.", + "codexAutoPingWarning": "દરેક પિંગ પર વાસ્તવિક Codex ક્વોટાનો થોડો ભાગ વપરાય છે. ડિફૉલ્ટ રૂપે બંધ છે — ફક્ત તમે સક્રિયપણે નિર્ભર હો તેવા કનેક્શન માટે જ સક્ષમ કરો.", + "codexAutoPingSaveError": "Codex ઑટો-પિંગ સેટિંગ અપડેટ કરવામાં નિષ્ફળતા", + "codexAutoPingToggleAria": "{connection} માટે Codex ક્વોટા ઑટો-પિંગ ટૉગલ કરો", "codexFastTierTierLabel": "સર્વિસ ટિયર", "codexFastTierTierPriority": "પ્રાધાન્યતા", "codexFastTierTierFlex": "ફ્લેક્સ", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "વૈશ્વિક તપાસ અંતરાલ", "resilienceCredentialHealthEveryMinutes": "દર {minutes} મિનિટ", "resilienceCredentialHealthHint": "0 પૃષ્ઠભૂમિ સ્કેન બંધ કરે છે (મહત્તમ 1440 મિનિટ = 24 કલાક). પોતાના આરોગ્ય તપાસ મૂલ્યવાળા કનેક્શન આ વૈશ્વિક ડિફોલ્ટ અવગણે છે; કોઈ કનેક્શન પર 0 તેને વૈશ્વિક સ્કેન ચાલુ હોય ત્યારે પણ બાકાત રાખે છે.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "{provider} માટે હંમેશા સક્ષમ — OAuth એકાઉન્ટની સુરક્ષા માટે જરૂરી; બંધ કરી શકાતું નથી.", + "forcedFingerprintBadge": "જરૂરી", "sessionAffinityTitle": "સત્ર અફિનિટી", "sessionAffinityDesc": "કોઈપણ પ્રદાતા માટે, આટલી સેકન્ડો સુધી સમાન એકાઉન્ટ પર એક વાતચીત રાખે છે. 0 તેને અક્ષમ કરે છે.", "sessionAffinityTtl": "અફિનિટી TTL (સેકન્ડ)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "કૂલડાઉન વધતું અટકે તે પહેલાં બેકઓફ સ્ટેપ્સની મહત્તમ સંખ્યા. મોટાભાગના કન્ફિગરેશનમાં મહત્તમ કૂલડાઉન મર્યાદા પહેલાં પહોંચી જાય છે, જે મહત્તમ કૂલડાઉન વધારવામાં આવે ત્યારે આને સુરક્ષા મર્યાદા બનાવે છે.", "disableSessionStickiness": "સત્ર સ્ટીકીનેસ નિષ્ક્રિય કરો", "disableSessionStickinessDesc": "રાઉન્ડ-રોબિન અને રેન્ડમ કોમ્બોઝ પ્રથમ-સંદેશ હેશ દ્વારા સમગ્ર વાતચીતને એક કનેક્શન પર પિન કરવાને બદલે દરેક વિનંતી પર અલગ કનેક્શન પર ફરે છે. મલ્ટિ-ટર્ન ચેટ્સ માટે પ્રોમ્પ્ટ-કેશ હિટ્સ સાચવવા માટે આને બંધ રાખો. પ્રતિ-કોમ્બો ઓવરરાઇડ્સ અગ્રતા લે છે.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "પ્રોમ્પ્ટ-કૅશ લોકાલિટી રૂટિંગ", + "promptCacheAffinityDesc": "હેલ્થ અને ક્વોટા ફેલઓવર જાળવી રાખીને મેળ ખાતી પ્રોમ્પ્ટ-કૅશ કી માટે સમાન પ્રોવાઇડર એકાઉન્ટને પ્રાથમિકતા આપો.", + "reasoningTokenBuffer": "રીઝનિંગ ટોકન બફર", + "reasoningTokenBufferDesc": "સંપૂર્ણ બફર જાણીતી આઉટપુટ મર્યાદામાં સમાતું હોય ત્યારે જ જાણીતા રીઝનિંગ મોડલ્સ માટે કોમ્બો રૂટિંગને max_tokens હેડરૂમ ઉમેરવાની મંજૂરી આપો.", + "zeroLatencyOptimizations": "શૂન્ય-લેટન્સી ઑપ્ટિમાઇઝેશન્સ", + "zeroLatencyOptimizationsDesc": "હેજિંગ, પ્રેડિક્ટિવ TTFT સ્કિપ્સ અને સક્રિય ફૉલબૅક કમ્પ્રેશન માટે સ્વૈચ્છિક રીતે સક્ષમ કરો. આ લેટન્સી સુવિધાઓને લક્ષ્યો સાથે હોડ કરતાં અથવા ફૉલબૅક રિક્વેસ્ટ્સ કમ્પ્રેસ કરતાં રોકવા માટે તેને બંધ રાખો.", "credentialRedaction": "ઓળખપત્ર રેડેક્શન", "credentialRedactionDesc": "પ્રદાતાઓ તરફ મોકલવામાં આવેલા સંદર્ભમાંથી અને પ્રતિસાદોમાંથી API કી, ટોકન્સ અને સિક્રેટ્સને રેડેક્ટ કરો.", "enableCredentialRedaction": "ઓળખપત્ર રેડેક્શન સક્ષમ કરો", "enableCredentialRedactionDesc": "સંદેશાઓ, ટૂલ કૉલ્સ અને પ્રતિસાદોમાંથી API કી, ટોકન્સ, પ્રાઇવેટ કી અને JWTs ને સાફ કરે છે.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "સ્વચાલિત સિંક અક્ષમ છે", + "pricingAutoSyncEnabled": "સ્વચાલિત સિંક સક્ષમ છે", "modalityBridgeIntro": "મલ્ટિમોડલ સામગ્રી માત્ર-ટેક્સ્ટ મોડલ સુધી પહોંચે તે પહેલાં તેને ટેક્સ્ટમાં ફેરવો. વિઝન, ઑડિયો અને વિડિયો બ્રિજ ઉપલબ્ધ અને ગોઠવી શકાય તેવા છે.", "modalityBridgeVisionTab": "દ્રષ્ટિ", "modalityBridgeAudioTab": "ઓડિયો", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "આરોગ્ય", "cliproxyapiPort": "પોર્ટ", "qdrantHost": "હોસ્ટ", - "qdrantCollection": "સંગ્રહ", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "સંગ્રહ" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "RTK એન્જિન", + "description": "ટૂલ આઉટપુટ, ટર્મિનલ લૉગ્સ અને બિલ્ડ પરિણામો માટે કમાન્ડ-અવેર કમ્પ્રેશન.", + "enabled": "સક્ષમ", + "intensity": "તીવ્રતા", + "intensityMinimal": "ન્યૂનતમ", + "intensityStandard": "માનક", + "intensityAggressive": "આક્રમક", + "toolResults": "ટૂલ પરિણામો", + "assistantMessages": "સહાયક સંદેશાઓ", + "codeBlocks": "કોડ બ્લૉક્સ", "filterCatalog": "ફિલ્ટર કેટલોગ", "filterCatalogDesc": "શ્રેણી દ્વારા ઉપલબ્ધ આઉટપુટ ફિલ્ટર્સ", "guidedConfig": "રૂપરેખાંકન", "guidedConfigDesc": "RTK તમારા ટર્મિનલ આઉટપુટને કેવી રીતે ફિલ્ટર કરે છે તે ગોઠવો", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "મહત્તમ લાઇનો", + "maxChars": "મહત્તમ અક્ષરો", "deduplicateThreshold": "ડુપ્લિકેટ થ્રેશોલ્ડ", "customFilters": "કસ્ટમ ફિલ્ટર્સ", "detectedType": "શોધાયેલ પ્રકાર", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "નિષ્ફળતાઓ", "rawOutputAlways": "હંમેશા", "rawOutputMaxBytes": "કાચું આઉટપુટ મહત્તમ બાઇટ્સ", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "ફિલ્ટર પરીક્ષણ", + "pasteOutput": "ફિલ્ટરિંગનું પરીક્ષણ કરવા માટે ટૂલ આઉટપુટ અહીં પેસ્ટ કરો...", "presetHigh": "આક્રમક", "presetLow": "પ્રકાશ", "presetMaxChars": "મહત્તમ આઉટપુટ અક્ષરો", "presetMaxLines": "મહત્તમ આઉટપુટ રેખાઓ", "presetMedium": "ધોરણ", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "ચલાવો", + "result": "પરિણામ", + "previewEmpty": "RTK આઉટપુટનું પૂર્વાવલોકન કરવા માટે નમૂનો ચલાવો.", + "detected": "શોધાયેલ", "masterSwitchOffAlert": "ટોકન સેવર માસ્ટર સ્વિચ બંધ છે — જ્યાં સુધી તમે તેને એન્ડપોઇન્ટ પૃષ્ઠ પરથી ચાલુ નહીં કરો ત્યાં સુધી આ સેટિંગ્સ વિનંતીઓને અસર કરશે નહીં.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "ફિલ્ટર કરેલા ટોકન્સ", + "filtersActive": "સક્રિય ફિલ્ટર્સ", + "requests": "વિનંતીઓ", + "avgSavings": "સરેરાશ બચત", "simpleMode": "સરળ", "advancedMode": "ઉન્નત", "searchFilters": "ફિલ્ટર્સ શોધો...", @@ -8499,7 +8506,7 @@ "description": "સ્પષ્ટ પંક્તિ-ગણતરી માર્કર્સ સાથે સજાતીય JSON એરેનું લોસલેસ ટેબ્યુલર કોમ્પેક્શન." }, "session-dedup": { - "name": "Session Dedup", + "name": "સત્ર ડિડુપ્લિકેશન", "description": "પુનઃપ્રાપ્ત કરી શકાય તેવા કન્ટેન્ટ માર્કર્સ સાથે ક્રોસ-ટર્ન બ્લોક ડીડુપ્લિકેશન." }, "ccr": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "કમ્પ્રેશન સંયોજનો", + "description": "વિવિધ રાઉટિંગ પરિસ્થિતિઓ માટે એન્જિનો કેવી રીતે સંયોજિત થાય છે તે નિર્ધારિત કરો.", + "createCombo": "કમ્પ્રેશન સંયોજન બનાવો", + "editCombo": "સંપાદિત કરો", + "deleteCombo": "કાઢી નાખો", + "deleteConfirm": "આ કમ્પ્રેશન સંયોજન કાઢી નાખવું છે?", + "pipeline": "પાઇપલાઇન", + "addStep": "પગલું ઉમેરો", + "removeStep": "દૂર કરો", + "name": "નામ", + "descriptionField": "વર્ણન", + "languagePacks": "ભાષા પૅક્સ", + "outputMode": "આઉટપુટ મોડ", + "assignToRouting": "રાઉટિંગ સંયોજનોને સોંપો", + "noAssignments": "કોઈ રાઉટિંગ સંયોજન ઉપલબ્ધ નથી", + "default": "ડિફૉલ્ટ", + "setAsDefault": "ડિફૉલ્ટ તરીકે સેટ કરો", + "save": "સાચવો", + "cancel": "રદ કરો", + "enabled": "સક્ષમ", "loading": "લોડ થઈ રહ્યું છે…", "hubTitle": "કમ્પ્રેશન હબ", "hubDescription": "વૈશ્વિક સ્તરે કઈ કમ્પ્રેશન પ્રોફાઇલ ચાલશે તે પસંદ કરો.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "હાલમાં ફક્ત Claude (Anthropic) માટે જ ઉપલબ્ધ છે. તે એક ડેલિગેટેડ મોડ છે: પ્રદાતા સર્વર-સાઇડ પર જૂના ટૂલ-વપરાશ બ્લોક્સને સાફ કરે છે — અમે સંદેશ ફરીથી લખતા નથી. તે અન્ય પ્રદાતાઓને અસર કરતું નથી.", "namedCombos": "નામવાળા કોમ્બોઝ", "namedCombosDescription": "વિવિધ પાઇપલાઇન્સ સાચવો અને તેમને ચોક્કસ રાઉટીંગ કોમ્બોઝમાં સોંપો.", + "activeProfileMasterSwitchOffWarning": "મુખ્ય \"પ્રોમ્પ્ટ કમ્પ્રેશન\" સ્વિચ ચાલુ ન થાય ત્યાં સુધી નીચેની સક્રિય પ્રોફાઇલ ચાલશે નહીં.", + "activeProfileMasterSwitchOffCta": "તેને સેટિંગ્સમાં ચાલુ કરો", "comboNamePlaceholder": "કોમ્બો નામ", "descriptionPlaceholder": "વર્ણન", "nameRequired": "સાચવતા પહેલા કોમ્બો નામ દાખલ કરો.", @@ -8674,9 +8683,7 @@ "languagePacksList": "ભાષા પેક: {packs}", "dragToReorder": "પગલાંનો ક્રમ બદલવા માટે ખેંચો", "engine": "એન્જિન", - "intensity": "તીવ્રતા", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "તીવ્રતા" }, "compressionStudio": { "noRun": "કોઈ કમ્પ્રેશન રન ઉપલબ્ધ નથી.", @@ -8705,7 +8712,7 @@ "run": "ચલાવો", "laneRejected": "નકારવામાં આવ્યું: {reason}", "error": "ભૂલ", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "સંયુક્ત પાઇપલાઇન પૂર્વાવલોકન નિષ્ફળ થયું: {reason}", "combinedFlow": "સંયુક્ત પ્રવાહ", "eachLayer": "દરેક સ્તર અલગથી", "diff": "તફાવત", @@ -8780,27 +8787,27 @@ }, "enableTitle": "એન્જિન સક્ષમ કરો", "enableDescription": "સ્ટેકમાં છેલ્લે ચાલે છે (RTK/Caveman લખાણ સાફ કરે તે પછી, OmniGlyph બાકીના ભાગને છબીઓમાં રૂપાંતરિત કરે છે) અને omniglyph મોડ દ્વારા સ્વતંત્ર રીતે પણ ચાલે છે. આ એક પૂર્વાવલોકન છે અને એન્ડ-ટુ-એન્ડ માન્યતા પૂર્ણ ન થાય ત્યાં સુધી ડિફૉલ્ટ રૂપે બંધ રહે છે.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "કમ્પ્રેશન પ્રોફાઇલ", + "profileDescription": "પ્રોફાઇલ મહત્તમ મર્યાદા છે, લઘુત્તમ નહીં: વધુ કડક પ્રોફાઇલને દરેક પગલાના ઓવરરાઇડ દ્વારા ફરીથી શિથિલ કરી શકાતી નથી. આ કોડબેઝ પર માપવામાં આવ્યું છે: coding-safe અથવા balanced સાથે, જે સત્રમાં હજી સુધી ઇતિહાસ સંચિત થયો નથી તેમાં કંઈપણ કમ્પ્રેસ થતું નથી, કારણ કે બંને લઘુત્તમ અક્ષરોની મર્યાદા વધારે છે અને સિસ્ટમ પ્રોમ્પ્ટ, ટૂલ સ્કીમા અને ટૂલ પરિણામોને મૂળ સ્વરૂપમાં રાખે છે.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "આક્રમક (ડિફૉલ્ટ)", + "description": "પ્રકાશિત રસીદો દ્વારા માપવામાં આવેલી નીતિ. સિસ્ટમ પ્રોમ્પ્ટ, ટૂલ દસ્તાવેજીકરણ અને સઘન ઇતિહાસને ઇમેજમાં ફેરવે છે." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "સંતુલિત", + "description": "લાઇવ સ્થિતિને મૂળ સ્વરૂપમાં રાખે છે અને છેલ્લા 8 વાર્તાલાપ ચક્રોને સુરક્ષિત કરે છે; ફક્ત જૂના પૂર્ણ થયેલા ઇતિહાસને સંકુચિત કરે છે." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "કોડિંગ-સુરક્ષિત", + "description": "અધિકાર, ટૂલ સ્કીમા અને લાઇવ ટૂલ આઉટપુટને મૂળ સ્વરૂપમાં રાખે છે અને છેલ્લા 12 વાર્તાલાપ ચક્રોને સુરક્ષિત કરે છે. સત્રમાં ઇતિહાસ સંચિત ન થાય ત્યાં સુધી કંઈપણ કમ્પ્રેસ કરતું નથી." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "પરિવર્તન વિના પસાર કરવું", + "description": "કોઈ ફેરફાર કર્યા વિના રૂટ કરે છે. એન્જિનને અવગણવામાં આવે છે અને વિનંતી અસ્પર્શિત રીતે ફોરવર્ડ થાય છે." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph કમ્પ્રેશન પ્રોફાઇલ પસંદ કરો", "saved": "સાચવ્યું.", "saveFailed": "સાચવી શકાયું નથી.", "enableAria": "OmniGlyph એન્જિન સક્ષમ કરો", @@ -8873,7 +8880,7 @@ "providerExposureHint": "જ્યારે સક્ષમ હોય, ત્યારે શોધાયેલા મોડેલ્સ સમગ્ર OmniRoute માં પ્રોવાઇડર સિલેક્ટર્સમાં દેખાય છે.", "providerExposureUpdateFailed": "અપડેટ કરવામાં નિષ્ફળ (HTTP {status})", "providerExposureNetworkFailed": "નેટવર્ક ભૂલ — પ્રોવાઇડર એક્સપોઝર સેટિંગ અપડેટ કરી શકાયું નથી", - "webUi": "9Router Web UI", + "webUi": "9Router વેબ UI", "openNewTab": "નવા ટૅબમાં ખોલો", "filterLogs": "લૉગ્સ ફિલ્ટર કરો…", "resume": "ફરી શરૂ કરો", @@ -8901,38 +8908,38 @@ "save": "સાચવો" }, "contextCaveman": { - "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "title": "Caveman એન્જિન", + "description": "નિયમ-આધારિત સંદેશ કમ્પ્રેશન, ભાષા પૅક, વિશ્લેષણ અને આઉટપુટ મોડ નિયંત્રણો.", "advancedConfig": "અદ્યતન રૂપરેખાંકન", "advancedConfigDesc": "ફાઇન-ટ્યુન કમ્પ્રેશન વર્તન", "aggressiveSettings": "આક્રમક સેટિંગ્સ", "aggressiveSettingsDesc": "સંભવિત ગુણવત્તાયુક્ત ટ્રેડ-ઓફ સાથે મહત્તમ સંકોચન", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "વિનંતીઓ", + "tokensSaved": "બચાવેલા ટોકન્સ", + "savingsPercent": "બચત %", + "avgLatency": "સરેરાશ વિલંબ", + "languagePacks": "ભાષા પૅક", + "languagePacksDesc": "ચોક્કસ ભાષાઓ માટે કમ્પ્રેશન નિયમો સક્ષમ કરો.", "labelAutoTrigger": "જ્યારે સંદર્ભ ઓળંગાઈ જાય ત્યારે સ્વતઃ સંકુચિત કરો", "labelCompressionRate": "કમ્પ્રેશન તાકાત", "labelMaxTokens": "સંદેશ દીઠ લક્ષ્ય ટોકન્સ", "labelMinLength": "ન્યૂનતમ સંદેશ લંબાઈ", "labelMinSavings": "સેવ કરવા માટે ન્યૂનતમ ટોકન્સ", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "સક્ષમ", + "autoDetect": "ભાષા આપમેળે ઓળખો", + "rulesCount": "{count} નિયમો", "inputCompressionTitle": "ઇનપુટ કમ્પ્રેશન", "inputCompressionDesc": "ટૂંકા શબ્દો સાથે ચેટ ઇતિહાસ ફરીથી લખો. ઇનપુટ ટોકન્સમાં ~50% ઘટાડો કરે છે.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "કમ્પ્રેશન વિશ્લેષણ", + "noAnalytics": "હજી સુધી કોઈ કમ્પ્રેશન વિશ્લેષણ ઉપલબ્ધ નથી.", "masterDisabledWarning": "Token Saver માસ્ટર સ્વિચ OFF છે — જ્યાં સુધી તમે તેને કમ્પ્રેશન સેટિંગ્સમાંથી ચાલુ ન કરો અથવા તેને અહીં બદલો નહીં ત્યાં સુધી આ સેટિંગ્સ વિનંતીઓને અસર કરશે નહીં.", "outputMode": "આઉટપુટ મોડ", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "આઉટપુટ મોડ", "quickSettings": "ઝડપી સેટિંગ્સ", "quickSettingsDesc": "પ્રારંભ કરવા માટે મૂળભૂત કમ્પ્રેશન સેટિંગ્સ", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "સ્વતઃ-સ્પષ્ટતા બાયપાસ", + "bypassConditions": "બાયપાસની શરતો", "bypassConditionsList": "સુરક્ષા, ઉલટાવી શકાય તેવું, સ્પષ્ટતા, ઓર્ડર-સંવેદનશીલ", "simpleMode": "સરળ", "advancedMode": "ઉન્નત", @@ -8944,52 +8951,52 @@ "ultraSettings": "અલ્ટ્રા સેટિંગ્સ", "ultraSettingsDesc": "SLM-સંચાલિત સિમેન્ટીક કમ્પ્રેશન", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "સંક્ષિપ્ત જવાબ આપો. તકનીકી શબ્દો, કોડ, ભૂલો, URLs અને ઓળખચિહ્નો જાળવી રાખો.", + "full": "ટૂંકો અને સંક્ષિપ્ત જવાબ આપો. તમામ તકનીકી સાર જાળવી રાખો.", + "ultra": "સામાન્ય ટેક. સંક્ષેપો સાથે અતિ સંક્ષિપ્ત જવાબ આપો. ચોક્કસ પ્રતીકો જાળવો." } }, "translator": { - "title": "Translator", - "metaTitle": "Translator Playground | OmniRoute", - "metaDescription": "Debug, test, and visualize API format translations between providers", - "playgroundTitle": "Translator Playground", - "playground": "Playground", - "realtime": "Real-Time Translation Activity", + "title": "અનુવાદક", + "metaTitle": "અનુવાદક પ્લેગ્રાઉન્ડ | OmniRoute", + "metaDescription": "પ્રદાતાઓ વચ્ચેના API ફોર્મેટ અનુવાદોને ડિબગ, ટેસ્ટ અને વિઝ્યુઅલાઇઝ કરો", + "playgroundTitle": "અનુવાદક પ્લેગ્રાઉન્ડ", + "playground": "પ્લેગ્રાઉન્ડ", + "realtime": "રીઅલ-ટાઇમ અનુવાદ પ્રવૃત્તિ", "chatTester": "Chat Tester", - "testBench": "Test Bench", - "liveMonitor": "Live Monitor", - "modeDescriptionPlayground": "Paste any API request body and see how OmniRoute translates it between provider formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", - "modeDescriptionChatTester": "Send real chat requests through OmniRoute and inspect the full round-trip: input, translated request, provider response, and translated output.", - "modeDescriptionTestBench": "Run predefined scenarios and compare compatibility across providers and models.", - "modeDescriptionLiveMonitor": "Watch translation events in real time as requests flow through OmniRoute.", - "modeDescriptionFallback": "Debug, test, and visualize how OmniRoute translates API requests between providers.", - "recentTranslations": "Recent Translations", - "noTranslations": "No translations yet", - "source": "Source", - "target": "Target", - "time": "Time", + "testBench": "ટેસ્ટ બેન્ચ", + "liveMonitor": "લાઇવ મોનિટર", + "modeDescriptionPlayground": "કોઈપણ API રિક્વેસ્ટ બોડી પેસ્ટ કરો અને જુઓ કે OmniRoute તેને પ્રદાતા ફોર્મેટ્સ વચ્ચે કેવી રીતે અનુવાદિત કરે છે (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", + "modeDescriptionChatTester": "OmniRoute મારફતે વાસ્તવિક ચેટ રિક્વેસ્ટ મોકલો અને સંપૂર્ણ રાઉન્ડ-ટ્રિપ તપાસો: ઇનપુટ, અનુવાદિત રિક્વેસ્ટ, પ્રદાતાનો પ્રતિસાદ અને અનુવાદિત આઉટપુટ.", + "modeDescriptionTestBench": "પૂર્વનિર્ધારિત પરિસ્થિતિઓ ચલાવો અને પ્રદાતાઓ તથા મોડલ્સ વચ્ચે સુસંગતતા સરખાવો.", + "modeDescriptionLiveMonitor": "રિક્વેસ્ટ્સ OmniRoute મારફતે પસાર થાય ત્યારે અનુવાદ ઇવેન્ટ્સ રીઅલ ટાઇમમાં જુઓ.", + "modeDescriptionFallback": "OmniRoute પ્રદાતાઓ વચ્ચે API રિક્વેસ્ટ્સનું કેવી રીતે અનુવાદ કરે છે તેને ડિબગ, ટેસ્ટ અને વિઝ્યુઅલાઇઝ કરો.", + "recentTranslations": "તાજેતરના અનુવાદો", + "noTranslations": "હજુ કોઈ અનુવાદ નથી", + "source": "સ્રોત", + "target": "લક્ષ્ય", + "time": "સમય", "model": "Model", "status": "Status", - "latency": "Latency", - "totalTranslations": "Total Translations", - "successful": "Successful", - "errors": "Errors", - "avgLatency": "Avg Latency", + "latency": "લેટન્સી", + "totalTranslations": "કુલ અનુવાદો", + "successful": "સફળ", + "errors": "ભૂલો", + "avgLatency": "સરેરાશ લેટન્સી", "millisecondsShort": "{value}ms", "notAvailableSymbol": "—", - "liveAutoRefreshing": "Live — Auto-refreshing", - "paused": "Paused", - "eventsAppearHint": "Translation events appear here as requests flow through OmniRoute. Use any of these methods to generate events:", + "liveAutoRefreshing": "લાઇવ — ઑટો-રિફ્રેશ થઈ રહ્યું છે", + "paused": "વિરામિત", + "eventsAppearHint": "રિક્વેસ્ટ્સ OmniRoute મારફતે પસાર થાય ત્યારે અનુવાદ ઇવેન્ટ્સ અહીં દેખાય છે. ઇવેન્ટ્સ જનરેટ કરવા આમાંથી કોઈપણ પદ્ધતિ વાપરો:", "chatTesterTab": "Chat Tester", "testBenchTab": "Test Bench", - "externalApiCalls": "External API calls", - "ideCliIntegrations": "IDE/CLI integrations", - "inMemoryNote": "Note: Events are stored in-memory and reset when the server restarts.", + "externalApiCalls": "બાહ્ય API કૉલ્સ", + "ideCliIntegrations": "IDE/CLI ઇન્ટિગ્રેશન્સ", + "inMemoryNote": "નોંધ: ઇવેન્ટ્સ ઇન-મેમરી સંગ્રહાય છે અને સર્વર રિસ્ટાર્ટ થતાં રીસેટ થાય છે.", "ok": "OK", "errorShort": "ERR", - "formatConverter": "Format Converter", - "formatConverterDescription": "Paste or type a JSON request body. The translator will auto-detect the source format and convert it to the target format. Use this to debug how OmniRoute translates requests between formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", + "formatConverter": "ફોર્મેટ કન્વર્ટર", + "formatConverterDescription": "JSON રિક્વેસ્ટ બોડી પેસ્ટ અથવા ટાઇપ કરો. અનુવાદક સ્રોત ફોર્મેટ ઑટો-ડિટેક્ટ કરીને તેને લક્ષ્ય ફોર્મેટમાં કન્વર્ટ કરશે. OmniRoute ફોર્મેટ્સ વચ્ચે રિક્વેસ્ટ્સનું કેવી રીતે અનુવાદ કરે છે તે ડિબગ કરવા આનો ઉપયોગ કરો (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (મધ્યવર્તી) → {target}", "translationPathDirect": "{source} → {target} (સીધા અનુવાદક)", "translationPathPassthrough": "સમાન ફોર્મેટ — અનુવાદની જરૂર નથી", @@ -9012,79 +9019,79 @@ "featureDirectPathsDesc": "કેટલાક ફોર્મેટ જોડીઓ (ક્લૉડ →જેમિની) પાસે સીધા અનુવાદકો છે જે OpenAI હબને બાયપાસ કરે છે, વધુ સચોટ આઉટપુટ ઉત્પન્ન કરે છે.", "featureImageMapping": "છબી કદ મેપિંગ", "featureImageMappingDesc": "API ફોર્મેટ્સ (દા.ત., OpenAI વિગત સ્તર → જેમિની પરિમાણો) વચ્ચે છબી પરિમાણ સંમેલનોનો અનુવાદ કરે છે.", - "input": "Input", - "output": "Output", + "input": "ઇનપુટ", + "output": "આઉટપુટ", "auto": "Auto", - "swapFormats": "Swap formats", - "translateAction": "Translate", - "clear": "Clear", - "inputPlaceholder": "Paste a request body here or select a template below...", - "exampleTemplates": "Example Templates", - "exampleTemplatesHint": "— Click to load", - "templateLoadHint": "Template loads the request in {format} format. Change Source Format to load in a different format.", - "compatibilityTester": "Compatibility Tester", - "compatibilityReport": "Compatibility Report", - "testBenchDescription": "Run predefined scenarios (Simple Chat, Tool Calling, etc.) to verify translation and provider compatibility. Select a source format and target provider, then run all tests to see a compatibility percentage. Use this to find which features work across providers.", - "targetProvider": "Target Provider", - "runAllTests": "Run All Tests", - "runTest": "Run Test", - "reRun": "Re-run", - "running": "Running...", - "passed": "passed", - "failed": "failed", - "passedIconLabel": "✅ Passed", - "chunks": "chunks", - "scenarioSimpleChat": "Simple Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "swapFormats": "ફોર્મેટ્સ અદલબદલ કરો", + "translateAction": "અનુવાદ કરો", + "clear": "સાફ કરો", + "inputPlaceholder": "અહીં રિક્વેસ્ટ બોડી પેસ્ટ કરો અથવા નીચેથી ટેમ્પ્લેટ પસંદ કરો...", + "exampleTemplates": "ઉદાહરણ ટેમ્પ્લેટ્સ", + "exampleTemplatesHint": "— લોડ કરવા ક્લિક કરો", + "templateLoadHint": "ટેમ્પલેટ વિનંતીને {format} ફોર્મેટમાં લોડ કરે છે. અલગ ફોર્મેટમાં લોડ કરવા માટે સ્રોત ફોર્મેટ બદલો.", + "compatibilityTester": "સુસંગતતા પરીક્ષક", + "compatibilityReport": "સુસંગતતા અહેવાલ", + "testBenchDescription": "અનુવાદ અને પ્રદાતા સુસંગતતા ચકાસવા માટે પૂર્વનિર્ધારિત પરિદૃશ્યો (સરળ ચેટ, ટૂલ કૉલિંગ વગેરે) ચલાવો. સ્રોત ફોર્મેટ અને લક્ષ્ય પ્રદાતા પસંદ કરો, પછી સુસંગતતાની ટકાવારી જોવા માટે તમામ પરીક્ષણો ચલાવો. વિવિધ પ્રદાતાઓમાં કઈ સુવિધાઓ કાર્ય કરે છે તે જાણવા માટે આનો ઉપયોગ કરો.", + "targetProvider": "લક્ષ્ય પ્રદાતા", + "runAllTests": "તમામ પરીક્ષણો ચલાવો", + "runTest": "પરીક્ષણ ચલાવો", + "reRun": "ફરી ચલાવો", + "running": "ચાલી રહ્યું છે...", + "passed": "સફળ", + "failed": "નિષ્ફળ", + "passedIconLabel": "✅ સફળ", + "chunks": "ભાગો", + "scenarioSimpleChat": "સરળ ચેટ", + "scenarioToolCalling": "ટૂલ કૉલિંગ", + "scenarioMultiTurn": "બહુ-ચરણીય", "scenarioThinking": "Thinking", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "સિસ્ટમ પ્રોમ્પ્ટ", + "scenarioStreaming": "સ્ટ્રીમિંગ", "templateNames": { - "simple-chat": "Simple Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "સરળ ચેટ", + "tool-calling": "ટૂલ કૉલિંગ", + "multi-turn": "બહુ-ચરણીય", "thinking": "Thinking", - "system-prompt": "System Prompt", - "streaming": "Streaming", + "system-prompt": "સિસ્ટમ પ્રોમ્પ્ટ", + "streaming": "સ્ટ્રીમિંગ", "vision": "દ્રષ્ટિ", "schema-coercion": "સ્કીમા બળજબરી" }, "templateDescriptions": { - "simple-chat": "Basic text message", - "tool-calling": "Function/tool invocation", - "multi-turn": "Conversation with history", - "thinking": "Extended thinking / reasoning", - "system-prompt": "Complex system instructions", - "streaming": "SSE streaming request", + "simple-chat": "મૂળભૂત ટેક્સ્ટ સંદેશ", + "tool-calling": "ફંક્શન/ટૂલનું આહ્વાન", + "multi-turn": "ઇતિહાસ સાથેની વાતચીત", + "thinking": "વિસ્તૃત વિચાર / તર્ક", + "system-prompt": "જટિલ સિસ્ટમ સૂચનાઓ", + "streaming": "SSE સ્ટ્રીમિંગ વિનંતી", "vision": "ઇમેજ ઇનપુટ સાથે મલ્ટિમોડલ વિનંતી", "schema-coercion": "સ્ટ્રક્ચર્ડ-આઉટપુટ / JSON સ્કીમા અમલીકરણ" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful assistant.", - "userGreeting": "Hello! How are you today?" + "system": "તમે એક મદદરૂપ સહાયક છો.", + "userGreeting": "નમસ્તે! આજે તમે કેમ છો?" }, "toolCalling": { - "userWeather": "What's the weather in São Paulo?", - "toolDescription": "Get current weather for a location", - "cityNameDescription": "City name" + "userWeather": "São Pauloમાં હવામાન કેવું છે?", + "toolDescription": "કોઈ સ્થાન માટે વર્તમાન હવામાન મેળવો", + "cityNameDescription": "શહેરનું નામ" }, "multiTurn": { - "system": "You are a coding assistant.", - "userInitial": "Write a function to sort an array in Python.", - "assistantExample": "Here's a simple sort function: ```python\ndef sort_array(arr): return sorted(arr)\n```", - "userFollowUp": "Now make it sort in descending order." + "system": "તમે એક કોડિંગ સહાયક છો.", + "userInitial": "Pythonમાં એરેને સૉર્ટ કરવા માટે એક ફંક્શન લખો.", + "assistantExample": "અહીં એક સરળ સૉર્ટ ફંક્શન છે: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userFollowUp": "હવે તેને ઉતરતા ક્રમમાં સૉર્ટ કરે તેવું બનાવો." }, "thinking": { - "question": "What is the sum of the first 100 prime numbers?" + "question": "પ્રથમ 100 અવિભાજ્ય સંખ્યાઓનો સરવાળો કેટલો છે?" }, "systemPrompt": { - "systemInstruction": "You are a senior software engineer specializing in distributed systems. Answer questions concisely using industry best practices. Always provide code examples when relevant. Format your responses using markdown.", - "question": "How do I implement a circuit breaker pattern?" + "systemInstruction": "તમે વિતરિત સિસ્ટમોમાં નિષ્ણાત વરિષ્ઠ સોફ્ટવેર એન્જિનિયર છો. ઉદ્યોગની શ્રેષ્ઠ પદ્ધતિઓનો ઉપયોગ કરીને પ્રશ્નોના સંક્ષિપ્ત જવાબ આપો. જ્યારે સુસંગત હોય ત્યારે હંમેશાં કોડનાં ઉદાહરણો આપો. તમારા જવાબોને markdownનો ઉપયોગ કરીને ફોર્મેટ કરો.", + "question": "હું સર્કિટ બ્રેકર પેટર્ન કેવી રીતે અમલમાં મૂકું?" }, "streaming": { - "prompt": "Tell me a short story about a robot learning to paint." + "prompt": "ચિત્રકામ શીખતા રોબોટ વિશે મને એક ટૂંકી વાર્તા કહો." }, "vision": { "system": "તમે એક સહાયક છો જે ચિત્રોનું ચોક્કસ વર્ણન કરે છે.", @@ -9097,12 +9104,12 @@ "cityDescription": "ક્વેરી કરવા માટેનું શહેર, દા.ત. 'ટોક્યો' અથવા 'ન્યૂયોર્ક'." } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", - "noTemplateForFormat": "No template for this format", - "translationFailed": "Translation failed: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "openaiCompatibleLabel": "OpenAI સુસંગત", + "anthropicCompatibleLabel": "Anthropic સુસંગત", + "noTemplateForFormat": "આ ફોર્મેટ માટે કોઈ ટેમ્પ્લેટ નથી", + "translationFailed": "અનુવાદ નિષ્ફળ ગયો: {error}", + "pipelineDebugger": "પાઇપલાઇન ડિબગર", + "translationPipeline": "અનુવાદ પાઇપલાઇન", "loading": "લોડ થઈ રહ્યું છે…", "compressionOriginal": "મૂળ", "compressionCompressed": "કમ્પ્રેસ્ડ", @@ -9111,44 +9118,44 @@ "pipelineStepsAria": "પાઇપલાઇન પગલાં", "copyIntermediateJson": "મધ્યવર્તી JSON કૉપિ કરો", "copyOutputJson": "આઉટપુટ JSON કૉપિ કરો", - "pipelineVisualization": "Pipeline visualization", - "pipelineVisualizationHint": "Send a message to see how your request flows through detection → translation → provider call.", - "chatTesterDescription": "Send messages as a specific client format and inspect each step of the translation pipeline.", - "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response", - "clickStepToInspect": "Click any step to inspect the data at that stage.", - "clientFormat": "Client Format", - "provider": "Provider", - "modelPlaceholder": "Select or type a model name...", - "sendMessageToSeePipeline": "Send a message to see the translation pipeline", - "chatMessageHintPrefix": "Your message will be formatted as a", - "chatMessageHintSuffix": "request, translated through the pipeline, and sent to the selected provider.", - "youWithFormat": "You ({format})", - "assistant": "Assistant", - "typeMessage": "Type a message...", - "send": "Send", - "clientRequest": "Client Request", - "clientRequestDescription": "The request body as your client would send it", - "formatDetected": "Format Detected", - "formatDetectedDescription": "OmniRoute auto-detects the API format from the request structure", - "openaiIntermediate": "OpenAI Intermediate", - "openaiIntermediateDescription": "All formats are first normalized to OpenAI format (the universal bridge)", - "providerFormat": "Provider Format", - "providerFormatDescription": "OpenAI format is translated to the provider's native format", - "providerResponse": "Provider Response", - "providerResponseRawDescription": "The raw response from the provider API", - "providerResponseSseDescription": "The raw SSE stream from the provider API", - "unexpectedError": "An unexpected error occurred", - "error": "Error", - "errorMessage": "Error: {message}", - "requestFailed": "Request failed", - "noTextExtracted": "(No text extracted)", + "pipelineVisualization": "પાઇપલાઇન દૃશ્યીકરણ", + "pipelineVisualizationHint": "તમારી વિનંતી શોધ → અનુવાદ → પ્રદાતા કૉલમાંથી કેવી રીતે પસાર થાય છે તે જોવા માટે સંદેશ મોકલો.", + "chatTesterDescription": "ચોક્કસ ક્લાયન્ટ ફોર્મેટમાં સંદેશાઓ મોકલો અને અનુવાદ પાઇપલાઇનના દરેક પગલાની તપાસ કરો.", + "chatTesterFlow": "ક્લાયન્ટ વિનંતી → ફોર્મેટ શોધ → OpenAI મધ્યવર્તી → પ્રદાતા ફોર્મેટ → પ્રતિસાદ", + "clickStepToInspect": "તે તબક્કાનો ડેટા તપાસવા માટે કોઈપણ પગલા પર ક્લિક કરો.", + "clientFormat": "ક્લાયન્ટ ફોર્મેટ", + "provider": "પ્રદાતા", + "modelPlaceholder": "મોડલનું નામ પસંદ કરો અથવા લખો...", + "sendMessageToSeePipeline": "અનુવાદ પાઇપલાઇન જોવા માટે સંદેશ મોકલો", + "chatMessageHintPrefix": "તમારો સંદેશ આ રીતે ફોર્મેટ કરવામાં આવશે:", + "chatMessageHintSuffix": "વિનંતી, પાઇપલાઇન દ્વારા અનુવાદિત કરવામાં આવશે અને પસંદ કરેલા પ્રદાતાને મોકલવામાં આવશે.", + "youWithFormat": "તમે ({format})", + "assistant": "સહાયક", + "typeMessage": "સંદેશ લખો...", + "send": "મોકલો", + "clientRequest": "ક્લાયન્ટ વિનંતી", + "clientRequestDescription": "તમારો ક્લાયન્ટ જે રીતે મોકલે તે મુજબની વિનંતિ બોડી", + "formatDetected": "શોધાયેલ ફોર્મેટ", + "formatDetectedDescription": "OmniRoute વિનંતીની રચનામાંથી API ફોર્મેટ આપમેળે શોધે છે", + "openaiIntermediate": "OpenAI મધ્યવર્તી", + "openaiIntermediateDescription": "બધા ફોર્મેટને પહેલાં OpenAI ફોર્મેટમાં સામાન્યકૃત કરવામાં આવે છે (સાર્વત્રિક સેતુ)", + "providerFormat": "પ્રદાતા ફોર્મેટ", + "providerFormatDescription": "OpenAI ફોર્મેટનું પ્રદાતાના મૂળ ફોર્મેટમાં ભાષાંતર કરવામાં આવે છે", + "providerResponse": "પ્રદાતાનો પ્રતિસાદ", + "providerResponseRawDescription": "પ્રદાતા API તરફથી મળેલો અપરિષ્કૃત પ્રતિસાદ", + "providerResponseSseDescription": "પ્રદાતા API તરફથી મળેલો અપરિષ્કૃત SSE સ્ટ્રીમ", + "unexpectedError": "એક અનપેક્ષિત ભૂલ આવી", + "error": "ભૂલ", + "errorMessage": "ભૂલ: {message}", + "requestFailed": "વિનંતી નિષ્ફળ ગઈ", + "noTextExtracted": "(કોઈ ટેક્સ્ટ કાઢવામાં આવ્યું નથી)", "liveMonitorMemoryNote": "ઇવેન્ટ્સ મેમરીમાં સંગ્રહિત થાય છે અને પુનઃપ્રારંભ પર ખોવાઈ જાય છે.", "liveMonitorMemoryCapNote": "મહત્તમ 200 ઇવેન્ટ જાળવી રાખી છે.", "eventSourcesLabel": "ઇવેન્ટ સ્ત્રોતો:", "eventSourceTranslatorPage": "• અનુવાદક પૃષ્ઠ (ચેટ ટેસ્ટર, ટેસ્ટ બેન્ચ)", "eventSourceMainPipeline": "• મુખ્ય વિનંતી પાઇપલાઇન (CLI/IDE/API ટ્રાફિક)", - "liveMonitorDescriptionPrefix": "Shows translation events as API calls flow through OmniRoute. Events come from the in-memory buffer (resets on restart). Use", - "liveMonitorDescriptionSuffix": ", or external API calls to generate events.", + "liveMonitorDescriptionPrefix": "OmniRoute મારફતે API કૉલ્સ પસાર થતાં અનુવાદ ઇવેન્ટ્સ બતાવે છે. ઇવેન્ટ્સ ઇન-મેમરી બફરમાંથી આવે છે (પુનઃપ્રારંભ થવા પર રીસેટ થાય છે). ઉપયોગ કરો", + "liveMonitorDescriptionSuffix": ", અથવા ઇવેન્ટ્સ જનરેટ કરવા માટે બાહ્ય API કૉલ્સ કરો.", "streamTransformer": "સ્ટ્રીમ ટ્રાન્સફોર્મર", "modeDescriptionStreamTransformer": "પ્રતિસાદ ટ્રાન્સફોર્મર દ્વારા ચેટ પૂર્ણતા SSE સ્ટ્રીમ્સ ચલાવો.", "streamTransformerTitle": "પ્રતિભાવો સ્ટ્રીમ ટ્રાન્સફોર્મર", @@ -9176,12 +9183,12 @@ "scenarioVision": "દ્રષ્ટિ (છબીની સમજ)", "scenarioSchemaCoercion": "સ્કીમા બળજબરી (સંરચિત આઉટપુટ)", "techniques": "તકનીકો:", - "friendlyTitle": "Translator", + "friendlyTitle": "અનુવાદક", "friendlySubtitle": "કોડ ફરીથી લખ્યા વિના — કોઈપણ પ્રદાતા સાથે તમારી હાલની ઍપનો ઉપયોગ કરો.", "conceptHeadline": "તમારી ઍપ એક API ની \"ભાષા\" બોલે છે. Translator તેને અન્ય પ્રદાતાનો ઉપયોગ કરવા માટે રૂપાંતરિત કરે છે.", "conceptDiagramAppLabel": "તમારી ઍપ", "conceptDiagramSourceLabel": "સ્રોત ફોર્મેટ", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (હબ)", "conceptDiagramTargetLabel": "લક્ષ્ય પ્રદાતા", "conceptDiagramExampleApp": "દા.ત. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "JSON વિનંતી પેસ્ટ કરો; ફોર્મેટ આપમેળે ઓળખાઈ જાય છે.", "advancedPipelineTitle": "OpenAI મધ્યવર્તી પાઇપલાઇન", "advancedPipelineSubtitle": "દરેક અનુવાદ પગલું વિઝ્યુઅલાઈઝ કરો (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "સ્ટ્રીમ ટ્રાન્સફોર્મર (ચેટ → રિસ્પોન્સિસ SSE)", "advancedStreamTransformSubtitle": "Chat Completions SSE ને Responses API માં રૂપાંતરિત કરે છે.", "advancedTestBenchTitle": "Test Bench (8 પરિદ્રશ્યો)", "advancedTestBenchSubtitle": "બધા પરિદ્રશ્યો ચલાવે છે અને પાસ/ફેલ + સુસંગતતા % રિપોર્ટ કરે છે.", @@ -9259,7 +9266,7 @@ "streamTransformFailed": "સ્ટ્રીમ રૂપાંતરિત કરવામાં નિષ્ફળ" }, "usage": { - "title": "Usage", + "title": "વપરાશ", "grokExtraUsageCredits": "અતિરિક્ત ઉપયોગ ક્રેડિટ", "grokAutoTopUp": "ઓટો ટોપ-અપ", "grokAutoTopUpUnavailable": "ઉપલબ્ધ નથી", @@ -9277,66 +9284,66 @@ "kiloPassRemaining": "બાકી", "kiloPassRenews": "{count} દિવસમાં રિન્યૂ થાય છે", "kiloPassUsageLabel": "આ મહિનાનો વપરાશ", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "વધારાના વપરાશ ક્રેડિટ્સ", + "kimiExtraUsage": "વધારાનો વપરાશ", + "kimiExtraUsageEnabled": "સક્ષમ", + "kimiExtraUsageDisabled": "અક્ષમ", + "kimiExtraUsageFrozen": "સ્થગિત", + "kimiExtraUsageUnavailable": "અનુપલબ્ધ", + "kimiMonthlyUsed": "આ મહિને વપરાયેલ", + "kimiMonthlyLimit": "માસિક મર્યાદા", + "kimiMonthlyLimitUnlimited": "અમર્યાદિત", + "kimiAdditionalCredits": "વધારાના ક્રેડિટ્સ", + "loggerTab": "લૉગર", "proxyTab": "Proxy", - "budgetManagement": "Budget Management", - "budgetSaved": "Budget limits saved", - "budgetSaveFailed": "Failed to save budget", - "loadingBudgetData": "Loading budget data...", - "noApiKeysTitle": "No API Keys", - "noApiKeysDescription": "Add API keys first to set up budget limits.", - "apiKey": "API Key", - "todaysSpend": "Today's Spend", - "thisMonth": "This Month", - "setLimits": "Set Limits", - "dailyLimitUsd": "Daily Limit (USD)", - "monthlyLimitUsd": "Monthly Limit (USD)", - "warningThresholdPercent": "Warning Threshold (%)", - "dailyLimitPlaceholder": "e.g. 5.00", - "monthlyLimitPlaceholder": "e.g. 50.00", + "budgetManagement": "બજેટ વ્યવસ્થાપન", + "budgetSaved": "બજેટ મર્યાદાઓ સાચવવામાં આવી", + "budgetSaveFailed": "બજેટ સાચવવામાં નિષ્ફળતા", + "loadingBudgetData": "બજેટ ડેટા લોડ થઈ રહ્યો છે...", + "noApiKeysTitle": "કોઈ API કી નથી", + "noApiKeysDescription": "બજેટ મર્યાદાઓ સેટ કરવા માટે પહેલાં API કી ઉમેરો.", + "apiKey": "API કી", + "todaysSpend": "આજનો ખર્ચ", + "thisMonth": "આ મહિનો", + "setLimits": "મર્યાદાઓ સેટ કરો", + "dailyLimitUsd": "દૈનિક મર્યાદા (USD)", + "monthlyLimitUsd": "માસિક મર્યાદા (USD)", + "warningThresholdPercent": "ચેતવણીની સીમા (%)", + "dailyLimitPlaceholder": "દા.ત. 5.00", + "monthlyLimitPlaceholder": "દા.ત. 50.00", "warningThresholdPlaceholder": "80", - "saveLimits": "Save Limits", - "budgetOk": "Budget OK — {remaining} remaining", - "budgetExceeded": "Budget exceeded — requests may be blocked", + "saveLimits": "મર્યાદાઓ સાચવો", + "budgetOk": "બજેટ બરાબર છે — {remaining} બાકી", + "budgetExceeded": "બજેટ વટાવી ગયું છે — વિનંતીઓ અવરોધિત થઈ શકે છે", "totalRequests": "Total requests", - "noDataYet": "No data yet", - "latency": "Latency", + "noDataYet": "હજુ સુધી કોઈ ડેટા નથી", + "latency": "વિલંબતા", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", - "systemHealth": "System Health", - "entries": "Entries", - "activeCount": "{count} active", - "openCircuitBreakersDetected": "Open circuit breakers detected", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "circuitBreakers": "Circuit Breakers", - "lockedIPs": "Locked IPs", - "lockoutsAutoRefreshHint": "Per-model rate limit locks • Auto-refresh 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", - "timeLeft": "{time} left", - "howItWorks": "How It Works", - "howItWorksSubtitle": "Learn how evaluations validate your LLM responses", - "define": "Define", - "defineStepDescription": "Create test cases with input prompts and expected output criteria using strategies like contains, regex, or exact match.", - "run": "Run", - "runStepDescription": "Execute test cases against your LLM endpoints through OmniRoute. Each case is sent as a real API request.", - "evaluate": "Evaluate", - "evaluateStepDescription": "Responses are compared against expected criteria. See pass/fail for each case with latency metrics and detailed feedback.", + "promptCache": "પ્રોમ્પ્ટ કૅશ", + "systemHealth": "સિસ્ટમની સ્થિતિ", + "entries": "એન્ટ્રીઓ", + "activeCount": "{count} સક્રિય", + "openCircuitBreakersDetected": "ઓપન સર્કિટ બ્રેકર્સ મળ્યાં", + "hitRate": "હિટ રેટ", + "hitsMisses": "હિટ્સ / મિસિસ", + "circuitBreakers": "સર્કિટ બ્રેકર્સ", + "lockedIPs": "લૉક કરેલા IPs", + "lockoutsAutoRefreshHint": "મૉડલ-દીઠ રેટ લિમિટ લૉક્સ • ઑટો-રિફ્રેશ 10s", + "lockedCount": "{count, plural, one {# લૉક કરેલું} other {# લૉક કરેલાં}}", + "timeLeft": "{time} બાકી", + "howItWorks": "તે કેવી રીતે કાર્ય કરે છે", + "howItWorksSubtitle": "મૂલ્યાંકનો તમારા LLM પ્રતિસાદોને કેવી રીતે માન્ય કરે છે તે જાણો", + "define": "વ્યાખ્યાયિત કરો", + "defineStepDescription": "contains, regex અથવા exact match જેવી વ્યૂહરચનાઓનો ઉપયોગ કરીને ઇનપુટ પ્રોમ્પ્ટ્સ અને અપેક્ષિત આઉટપુટ માપદંડો સાથે ટેસ્ટ કેસ બનાવો.", + "run": "ચલાવો", + "runStepDescription": "OmniRoute મારફતે તમારા LLM એન્ડપોઇન્ટ્સ પર ટેસ્ટ કેસ ચલાવો. દરેક કેસ વાસ્તવિક API વિનંતી તરીકે મોકલવામાં આવે છે.", + "evaluate": "મૂલ્યાંકન કરો", + "evaluateStepDescription": "પ્રતિસાદોની અપેક્ષિત માપદંડો સાથે તુલના કરવામાં આવે છે. વિલંબતા મેટ્રિક્સ અને વિગતવાર પ્રતિસાદ સાથે દરેક કેસનું પાસ/ફેલ જુઓ.", "evalsStrategyContainsLabel": "સમાવે છે", "evalsStrategyExactLabel": "ચોક્કસ મેળ", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "રેગ્યુલર એક્સપ્રેશન", "evalsStrategyCustomLabel": "કસ્ટમ લોજિક", "evalsStrategyContainsDescription": "તપાસે છે કે LLM આઉટપુટ અપેક્ષિત સબસ્ટ્રિંગ ધરાવે છે કે નહીં.", "evalsStrategyExactDescription": "તપાસે છે કે LLM આઉટપુટ અપેક્ષિત મૂલ્ય સાથે બરાબર મેળ ખાય છે કે નહીં.", @@ -9347,126 +9354,126 @@ "historyColumnPassRate": "પાસ રેટ", "historyColumnAvgLatencyMs": "સરેરાશ લેટન્સી", "historyColumnCreatedAt": "એક્ઝિક્યુટ કરેલ", - "evalSuites": "Evaluation Suites", - "evalSuitesHint": "Click a suite to view test cases, then run to evaluate your LLM endpoints", - "evalsLoading": "Loading eval suites...", - "noEvalSuitesFound": "No Eval Suites Found", - "noEvalSuitesDescription": "Eval suites can be defined via the API or in code. They test model outputs against expected results using strategies like contains, regex, exact match, and custom functions.", - "columnCase": "Case", + "evalSuites": "મૂલ્યાંકન સ્યુટ્સ", + "evalSuitesHint": "ટેસ્ટ કેસ જોવા માટે કોઈ સ્યુટ પર ક્લિક કરો, પછી તમારા LLM એન્ડપોઇન્ટ્સનું મૂલ્યાંકન કરવા તેને ચલાવો", + "evalsLoading": "મૂલ્યાંકન સ્યુટ્સ લોડ થઈ રહ્યાં છે...", + "noEvalSuitesFound": "કોઈ મૂલ્યાંકન સ્યુટ મળ્યાં નથી", + "noEvalSuitesDescription": "મૂલ્યાંકન સ્યુટ્સને API મારફતે અથવા કોડમાં વ્યાખ્યાયિત કરી શકાય છે. તેઓ contains, regex, exact match અને કસ્ટમ ફંક્શન્સ જેવી વ્યૂહરચનાઓનો ઉપયોગ કરીને મૉડલના આઉટપુટને અપેક્ષિત પરિણામો સામે ચકાસે છે.", + "columnCase": "કેસ", "columnStatus": "Status", - "columnLatency": "Latency", - "columnDetails": "Details", + "columnLatency": "વિલંબતા", + "columnDetails": "વિગતો", "columnModel": "Model", - "columnStrategy": "Strategy", - "columnExpected": "Expected", - "statsSuites": "Suites", - "statsTestCases": "Test Cases", - "statsModels": "Models", - "statsCoverage": "Coverage", - "statsStrategiesCount": "{count} strategies", - "evaluationStrategies": "Evaluation Strategies", - "modelsUnderTest": "Models Under Test", - "searchSuitesPlaceholder": "Search suites...", + "columnStrategy": "વ્યૂહરચના", + "columnExpected": "અપેક્ષિત", + "statsSuites": "સ્યુટ્સ", + "statsTestCases": "ટેસ્ટ કેસ", + "statsModels": "મૉડલ્સ", + "statsCoverage": "કવરેજ", + "statsStrategiesCount": "{count} વ્યૂહરચનાઓ", + "evaluationStrategies": "મૂલ્યાંકન વ્યૂહરચનાઓ", + "modelsUnderTest": "પરીક્ષણ હેઠળનાં મૉડલ્સ", + "searchSuitesPlaceholder": "સ્યુટ્સ શોધો...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", - "runEval": "Run Eval", + "casesCount": "{count, plural, one {# કેસ} other {# કેસ}}", + "runEval": "મૂલ્યાંકન ચલાવો", "runAllSuites": "બધા ચલાવો", "runAllRunning": "બધું ચાલી રહ્યું છે...", "runAllProgress": "{current}/{total} ચાલી રહ્યું છે: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# સ્યુટ નિષ્ફળ} other {# સ્યુટ્સ નિષ્ફળ}}", "runAllCompleted": "{suites} સ્યુટ્સ ચલાવ્યા — {passed} પાસ થયા, {failed} નિષ્ફળ", "runAllCompletedWithFailures": "{completed} સ્યુટ્સ ચલાવ્યા; {failedSuites} પૂર્ણ કરવામાં નિષ્ફળ", - "runningProgress": "Running {current}/{total}...", - "passRate": "pass rate", - "summaryBreakdown": "{passed} passed · {failed} failed · {total} total", - "passedIconLabel": "✅ Passed", - "failedIconLabel": "❌ Failed", + "runningProgress": "{current}/{total} ચાલી રહ્યું છે...", + "passRate": "સફળતા દર", + "summaryBreakdown": "{passed} સફળ · {failed} નિષ્ફળ · કુલ {total}", + "passedIconLabel": "✅ સફળ", + "failedIconLabel": "❌ નિષ્ફળ", "resultPassed": "પાસ થયા", "resultFailed": "નિષ્ફળ", "expandResult": "પરિણામ વિગતો વિસ્તૃત કરો", "collapseResult": "પરિણામની વિગતો સંકુચિત કરો", - "detailsContains": "Contains: \"{term}\"", + "detailsContains": "આ સમાવે છે: \"{term}\"", "detailsRegex": "Regex: {pattern}", - "detailsExpected": "Expected: \"{expected}\"", + "detailsExpected": "અપેક્ષિત: \"{expected}\"", "expectedOutputLabel": "અપેક્ષિત આઉટપુટ", - "noResultsYet": "No results yet", - "testCasesCount": "Test Cases ({count})", - "noTestCasesDefined": "No test cases defined", - "runEvalHint": "Click \"Run Eval\" to execute all cases against your LLM endpoint. Each test sends a real request through OmniRoute.", - "notifyNoTestCases": "No test cases defined for this suite", - "notifyAllCasesPassed": "All {total} cases passed ✅", - "notifySomeCasesFailed": "{passed}/{total} passed, {failed} failed", - "notifyEvalRunFailed": "Eval run failed", - "notifyEvalTitle": "Eval: {name}", - "modelEvals": "Model Evaluations", - "evalsHeroDescription": "Test and validate your LLM endpoints by running predefined evaluation suites. Each suite contains test cases that send real prompts through OmniRoute and compare responses against expected criteria — helping you detect regressions, compare models, and ensure response quality across providers.", - "qualityValidation": "Quality Validation", - "modelComparison": "Model Comparison", - "regressionDetection": "Regression Detection", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", - "noLockouts": "No models currently locked", - "activeSessions": "Active Sessions", - "noSessions": "No active sessions", - "sessionsHint": "Sessions appear as requests flow through the proxy", - "sessionsTrackedHint": "Tracked via request fingerprinting • Auto-refresh 5s", - "session": "Session", - "age": "Age", - "requests": "Requests", - "connection": "Connection", + "noResultsYet": "હજુ સુધી કોઈ પરિણામ નથી", + "testCasesCount": "ટેસ્ટ કેસ ({count})", + "noTestCasesDefined": "કોઈ ટેસ્ટ કેસ નિર્ધારિત નથી", + "runEvalHint": "તમારા LLM એન્ડપોઇન્ટ સામે બધા કેસ ચલાવવા માટે \"મૂલ્યાંકન ચલાવો\" પર ક્લિક કરો. દરેક ટેસ્ટ OmniRoute મારફતે વાસ્તવિક વિનંતી મોકલે છે.", + "notifyNoTestCases": "આ સ્યુટ માટે કોઈ ટેસ્ટ કેસ નિર્ધારિત નથી", + "notifyAllCasesPassed": "બધા {total} કેસ સફળ થયા ✅", + "notifySomeCasesFailed": "{passed}/{total} સફળ, {failed} નિષ્ફળ", + "notifyEvalRunFailed": "મૂલ્યાંકન ચલાવવું નિષ્ફળ ગયું", + "notifyEvalTitle": "મૂલ્યાંકન: {name}", + "modelEvals": "મોડેલ મૂલ્યાંકનો", + "evalsHeroDescription": "પૂર્વનિર્ધારિત મૂલ્યાંકન સ્યુટ્સ ચલાવીને તમારા LLM એન્ડપોઇન્ટ્સનું પરીક્ષણ અને માન્યકરણ કરો. દરેક સ્યુટમાં એવા ટેસ્ટ કેસ હોય છે જે OmniRoute મારફતે વાસ્તવિક પ્રોમ્પ્ટ્સ મોકલે છે અને પ્રતિસાદોની અપેક્ષિત માપદંડો સાથે તુલના કરે છે — જેથી તમને રિગ્રેશન્સ શોધવામાં, મોડેલોની તુલના કરવામાં અને વિવિધ પ્રદાતાઓમાં પ્રતિસાદની ગુણવત્તા સુનિશ્ચિત કરવામાં મદદ મળે.", + "qualityValidation": "ગુણવત્તા માન્યકરણ", + "modelComparison": "મોડેલ તુલના", + "regressionDetection": "રિગ્રેશન શોધ", + "latencyBenchmarks": "લેટન્સી બેન્ચમાર્ક્સ", + "modelLockouts": "મોડેલ લૉકઆઉટ્સ", + "noLockouts": "હાલમાં કોઈ મોડેલ લૉક નથી", + "activeSessions": "સક્રિય સેશન્સ", + "noSessions": "કોઈ સક્રિય સેશન નથી", + "sessionsHint": "પ્રોક્સી મારફતે વિનંતીઓ વહેતી થતાં સેશન્સ દેખાય છે", + "sessionsTrackedHint": "વિનંતી ફિંગરપ્રિન્ટિંગ દ્વારા ટ્રૅક કરેલ • દર 5 સેકન્ડે આપમેળે રિફ્રેશ", + "session": "સેશન", + "age": "સમયગાળો", + "requests": "વિનંતીઓ", + "connection": "કનેક્શન", "durationMillisecondsShort": "{value}ms", "durationSecondsShort": "{value}s", "durationMinutesShort": "{value}m", "durationHoursShort": "{value}h", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "Provider Limits", - "noProviders": "No Providers Connected", - "connectProvidersForQuota": "Connect to providers with OAuth to track your API quota limits and usage.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", - "filteredFromCount": "(filtered from {count})", - "autoRefresh": "Auto-refresh", - "refreshAll": "Refresh All", - "loadingQuotas": "Loading...", + "providerLimits": "પ્રદાતા મર્યાદાઓ", + "noProviders": "કોઈ પ્રદાતા કનેક્ટેડ નથી", + "connectProvidersForQuota": "તમારી API ક્વોટા મર્યાદાઓ અને વપરાશને ટ્રૅક કરવા માટે OAuth વડે પ્રદાતાઓ સાથે કનેક્ટ કરો.", + "accountsCount": "{count, plural, one {# એકાઉન્ટ} other {# એકાઉન્ટ્સ}}", + "filteredFromCount": "({count}માંથી ફિલ્ટર કરેલ)", + "autoRefresh": "આપમેળે રિફ્રેશ", + "refreshAll": "બધું રિફ્રેશ કરો", + "loadingQuotas": "લોડ થઈ રહ્યું છે...", "showMoreQuotas": "વધુ {count} બતાવો", "showLessQuotas": "ઓછું બતાવો", "hideQuotaRow": "આ ક્વોટા રો છુપાવો", "showQuotaRow": "આ ક્વોટા રો બતાવો", "hiddenQuotaRowsLabel": "છુપાયેલ:", "quotaVisibilityUpdateFailed": "ક્વોટા દૃશ્યતા અપડેટ કરવામાં નિષ્ફળ", - "account": "Account", - "modelQuotas": "Model Quotas", - "lastUsed": "Last Refreshed", - "actions": "Actions", - "refreshQuota": "Refresh quota", - "today": "Today", - "tomorrow": "Tomorrow", + "account": "એકાઉન્ટ", + "modelQuotas": "મોડેલ ક્વોટા", + "lastUsed": "છેલ્લે રિફ્રેશ કરેલું", + "actions": "ક્રિયાઓ", + "refreshQuota": "ક્વોટા રિફ્રેશ કરો", + "today": "આજે", + "tomorrow": "આવતીકાલે", "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "inDuration": "{duration}માં", "notApplicable": "N/A", - "rawPlanWithValue": "Raw plan: {plan}", - "noPlanFromProvider": "No plan from provider", + "rawPlanWithValue": "મૂળ પ્લાન: {plan}", + "noPlanFromProvider": "પ્રદાતા તરફથી કોઈ પ્લાન નથી", "tokenExpiresIn": "ટોકન {time} માં સમાપ્ત થાય છે", "tokenExpired": "ટોકન સમાપ્ત થઈ ગયું", - "noQuotaData": "No quota data", + "noQuotaData": "ક્વોટાનો કોઈ ડેટા નથી", "cardExpand": "વિસ્તૃત કરો", "cardCollapse": "સંકોચો", "moreQuotas": "+{count} વધુ", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", - "noQuotaDataAvailable": "No quota data available", - "noAccountsForTierFilter": "No accounts found for tier filter", - "tierAll": "All", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "ungrouped": "જૂથબદ્ધ ન કરેલું", + "viewFlat": "સપાટ", + "viewByEnvironment": "પર્યાવરણ પ્રમાણે", + "noQuotaDataAvailable": "ક્વોટાનો કોઈ ડેટા ઉપલબ્ધ નથી", + "noAccountsForTierFilter": "ટિયર ફિલ્ટર માટે કોઈ એકાઉન્ટ મળ્યાં નથી", + "tierAll": "બધા", + "tierEnterprise": "એન્ટરપ્રાઇઝ", + "tierTeam": "ટીમ", + "tierBusiness": "બિઝનેસ", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", + "tierFree": "મફત", "tierLite": "લાઇટ", - "tierUnknown": "Unknown", + "tierUnknown": "અજ્ઞાત", "statTotal": "કુલ", "statCritical": "ક્રિટિકલ", "statAlert": "એલર્ટ", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "ક્રેડિટ રીડીમ કરો", "resetCreditRedeemed": "રીસેટ રીડીમ કરવામાં આવ્યું", "resetCreditRedeemFailed": "રીસેટ ક્રેડિટ રીડીમ કરવામાં નિષ્ફળ", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "સ્યુટ સાચવવામાં નિષ્ફળતા", "clone": "ક્લોન", "exportSuite": "નિકાસ કરો", "importSuite": "આયાત કરો", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "અમાન્ય eval સ્યુટ JSON", "suiteBuilderCloneSuffix": "નકલ", "suiteBuilderImportedSuite": "આયાત કરેલ સ્યુટ", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "સ્કોરકાર્ડ", + "evalApiKey": "API કી", + "scorecardPassRate": "પાસ દર", + "targetTypeModel": "મોડેલ", + "actualOutputLabel": "વાસ્તવિક આઉટપુટ", + "evalTargetHint": "મૂલ્યાંકન કરવા માટે મોડેલ અથવા કોમ્બો પસંદ કરો.", + "suiteBuilderDeleted": "સ્યુટ સફળતાપૂર્વક કાઢી નાખવામાં આવ્યું", + "suiteBuilderCaseCardHint": "ઇનપુટ પ્રોમ્પ્ટ અને અપેક્ષિત આઉટપુટના માપદંડ નિર્ધારિત કરો.", + "nextResetUtc": "આગામી રીસેટ (UTC)", + "scorecardHint": "તમામ મૂલ્યાંકન સ્યુટમાં એકત્રિત પાસ દરો.", + "suiteLatestRunsHint": "આ સ્યુટ માટેના સૌથી તાજેતરના મૂલ્યાંકન રન.", + "saving": "સાચવી રહ્યું છે", + "suiteBuilderCaseModelLabel": "મોડેલ (વૈકલ્પિક)", + "evalControlsTitle": "મૂલ્યાંકન નિયંત્રણો", + "suiteBuilderEditTitle": "મૂલ્યાંકન સ્યુટ સંપાદિત કરો", + "suiteBuilderCaseStrategyLabel": "માન્યતા વ્યૂહરચના", + "notifySelectDifferentCompareTarget": "કૃપા કરીને સરખામણી માટે અલગ લક્ષ્ય પસંદ કરો", + "recentRunsHint": "સૌથી તાજેતરના મૂલ્યાંકન રન બતાવવામાં આવી રહ્યા છે. વિગતવાર પરિણામો જોવા માટે કોઈ રન પર ક્લિક કરો.", + "evalCompareHint": "વૈકલ્પિક રીતે પરિણામોની સરખામણી બીજા લક્ષ્ય સાથે કરો.", + "suiteBuilderCaseInvalid": "આ કેસમાં માન્યતા સંબંધિત ભૂલો છે. સાચવતા પહેલાં કૃપા કરીને તેને સુધારો.", + "historyEmpty": "હજુ સુધી કોઈ મૂલ્યાંકન ઇતિહાસ નથી", + "suiteBuilderUpdated": "સ્યુટ સફળતાપૂર્વક અપડેટ થયું", + "resetInterval": "રીસેટ અંતરાલ", + "suiteBuilderCreateTitle": "મૂલ્યાંકન સ્યુટ બનાવો", + "activePeriodSpend": "સક્રિય અવધિનો ખર્ચ", + "evalApiKeyHint": "મૂલ્યાંકન વિનંતીઓ માટે કઈ API કી વાપરવી તે પસંદ કરો.", + "evalCompareOptional": "સરખામણી કરો (વૈકલ્પિક)", + "suiteBuilderDeleteFailed": "સ્યુટ કાઢી નાખવામાં નિષ્ફળતા", + "suiteBuilderCaseSystemPromptPlaceholder": "વૈકલ્પિક સિસ્ટમ સૂચનાઓ...", + "scorecardCases": "કેસ", + "runCompletedWithScore": "મૂલ્યાંકન પૂર્ણ થયું — {score}% પાસ દર", + "suiteBuilderCustomBadge": "કસ્ટમ", + "targetSuiteDefaults": "સ્યુટના ડિફૉલ્ટ", + "suiteBuilderDeleteConfirm": "શું તમે ખરેખર આ સ્યુટ કાઢી નાખવા માંગો છો? આ ક્રિયા પાછી ફેરવી શકાતી નથી.", + "suiteBuilderNameLabel": "સ્યુટનું નામ", + "scorecardSuites": "સ્યુટ્સ", + "evalCompareTarget": "સરખામણી લક્ષ્ય", + "suiteBuilderCaseModelPlaceholder": "દા.ત. gpt-4o-mini", + "evalControlsHint": "તમારું મૂલ્યાંકન લક્ષ્ય અને API કી ગોઠવો, પછી મોડેલની ગુણવત્તા ચકાસવા માટે સ્યુટ્સ ચલાવો.", + "recentRunsTitle": "તાજેતરના રન", + "suiteBuilderCaseSystemPromptLabel": "સિસ્ટમ પ્રોમ્પ્ટ", + "suiteBuilderCaseExpectedPlaceholder": "દા.ત. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "દા.ત. ડેફ ફિબોનાકી", "suiteBuilderCaseExpectedPlaceholderExact": "ચોક્કસ અપેક્ષિત પ્રતિસાદ પેસ્ટ કરો", "suiteBuilderCaseExpectedPlaceholderRegex": "દા.ત. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "સ્લેશને વીંટાળ્યા વિના JavaScript રેગ્યુલર એક્સપ્રેશનનો ઉપયોગ કરો.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "દા.ત. કોડિંગ ગુણવત્તા સ્યુટ", + "suiteBuilderAddCase": "કેસ ઉમેરો", + "cancel": "રદ કરો", + "evalTarget": "લક્ષ્ય", + "suiteBuilderCaseNameLabel": "કેસનું નામ", + "weeklyLimitUsd": "સાપ્તાહિક મર્યાદા (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "દા.ત. Pythonમાં fibonacci ફંક્શન લખો", + "suiteBuilderNameRequired": "સ્યુટનું નામ આવશ્યક છે", + "suiteBuilderCaseUserPromptLabel": "વપરાશકર્તા પ્રોમ્પ્ટ", + "daily": "દૈનિક", + "resultErrorLabel": "ભૂલ", + "suiteBuilderBuiltInBadge": "બિલ્ટ-ઇન", + "suiteBuilderCaseCardTitle": "ટેસ્ટ કેસ", "suiteBuilderDuplicateCase": "ડુપ્લિકેટ", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "દા.ત. 50.00", + "suiteBuilderCaseTagsHint": "ટેસ્ટ કેસોને ગોઠવવા માટે અલ્પવિરામથી અલગ કરેલા ટૅગ્સ.", + "notifyEvalRunFailedWithReason": "મૂલ્યાંકન નિષ્ફળ ગયું: {reason}", + "weekly": "સાપ્તાહિક", + "runEvalRunning": "મૂલ્યાંકન ચાલી રહ્યું છે...", + "delete": "કાઢી નાખો", + "resetTimeUtc": "રીસેટ સમય (UTC)", + "evalApiKeyAuto": "સ્વચાલિત (ડિફૉલ્ટનો ઉપયોગ કરો)", + "suiteBuilderDescriptionPlaceholder": "આ સ્યુટ શું પરીક્ષણ કરે છે તેનું વૈકલ્પિક વર્ણન...", + "targetComparisonTitle": "લક્ષ્ય તુલના", + "save": "સાચવો", + "suiteBuilderCreated": "સ્યુટ સફળતાપૂર્વક બનાવવામાં આવ્યો", + "suiteLatestRuns": "તાજેતરના રન", + "suiteBuilderCaseExpectedLabel": "અપેક્ષિત મૂલ્ય", + "historyLatency": "વિલંબતા", + "suiteBuilderCaseTagsPlaceholder": "દા.ત. coding, python", + "targetTypeCombo": "કોમ્બો", + "scorecardPassed": "પાસ થયું", + "suiteBuilderCaseTagsLabel": "ટૅગ્સ", + "suiteBuilderNewSuite": "નવો સ્યુટ", + "notifyEvalLoadFailed": "મૂલ્યાંકન ડેટા લોડ કરવામાં નિષ્ફળતા", + "notConfigured": "ગોઠવેલ નથી", + "suiteBuilderCaseNamePlaceholder": "દા.ત. Python fibonacci test", + "intervalLabel": "અંતરાલ", + "suiteBuilderCreateAction": "સ્યુટ બનાવો", + "suiteBuilderCasesHint": "દરેક કેસ એક પ્રોમ્પ્ટ મોકલે છે અને પ્રતિસાદને માન્ય કરે છે.", + "suiteBuilderUpdatedAt": "અપડેટ થયું", + "errorBadge": "ભૂલ", + "suiteBuilderCasesTitle": "ટેસ્ટ કેસો", + "edit": "ફેરફાર કરો", + "monthly": "માસિક", + "suiteBuilderCasesRequired": "ઓછામાં ઓછો એક ટેસ્ટ કેસ આવશ્યક છે", + "weeklyLimitSummary": "સાપ્તાહિક બજેટ મર્યાદાનો સારાંશ", + "suiteBuilderDescriptionLabel": "વર્ણન", + "targetComparisonHint": "લક્ષ્યો વચ્ચેના મૂલ્યાંકન પરિણામોની બાજુ-બાજુ તુલના.", + "compareCompletedWithScore": "તુલના પૂર્ણ થઈ — {score}% પાસ દર", + "staleQuotaTooltip": "છેલ્લું રિફ્રેશ નિષ્ફળ ગયું — કૅશ કરેલો ડેટા બતાવવામાં આવી રહ્યો છે", "quotaThresholdLabel": "મિનિટ બાકી", "quotaCutoffsColumnHelp": "જ્યારે બાકીનો ક્વોટા આ ટકાવારી અથવા તેનાથી નીચે આવે ત્યારે વિનંતીઓ રોકો.", "quotaCutoffsButtonDefault": "ડિફૉલ્ટ", @@ -9704,70 +9711,70 @@ "providerQuotaHomeHint": "કનેક્ટેડ એકાઉન્ટ્સમાં લાઇવ સ્થિતિ" }, "modals": { - "waitingAuth": "Waiting for Authorization", - "verificationUrl": "Verification URL", - "yourCode": "Your Code", - "remoteAccess": "Remote access:", - "connectedSuccess": "Connected Successfully!", - "connectionFailed": "Connection Failed", - "chooseAuthMethod": "Choose your authentication method:", + "waitingAuth": "અધિકૃતતાની રાહ જોઈ રહ્યું છે", + "verificationUrl": "ચકાસણી URL", + "yourCode": "તમારો કોડ", + "remoteAccess": "રિમોટ ઍક્સેસ:", + "connectedSuccess": "સફળતાપૂર્વક કનેક્ટ થયું!", + "connectionFailed": "કનેક્શન નિષ્ફળ ગયું", + "chooseAuthMethod": "તમારી પ્રમાણીકરણ પદ્ધતિ પસંદ કરો:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", - "importToken": "Import Token", - "pasteToken": "Paste refresh token from Kiro IDE.", + "googleAccount": "Google એકાઉન્ટ", + "githubAccount": "GitHub એકાઉન્ટ", + "importToken": "ટોકન આયાત કરો", + "pasteToken": "Kiro IDE માંથી રિફ્રેશ ટોકન પેસ્ટ કરો.", "awsRegion": "AWS Region", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCache": "Reading from AWS SSO cache", - "readingFromCursor": "Reading from Cursor IDE database", - "initializing": "Initializing...", - "pricingConfig": "Pricing Configuration", - "loadingPricing": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "noPricingData": "No pricing data available", - "noModelsFound": "No models found" + "autoDetecting": "ટોકન આપમેળે શોધી રહ્યું છે...", + "readingFromCache": "AWS SSO કૅશમાંથી વાંચી રહ્યું છે", + "readingFromCursor": "Cursor IDE ડેટાબેઝમાંથી વાંચી રહ્યું છે", + "initializing": "પ્રારંભ કરી રહ્યું છે...", + "pricingConfig": "કિંમત ગોઠવણી", + "loadingPricing": "કિંમતનો ડેટા લોડ થઈ રહ્યો છે...", + "pricingRatesFormat": "કિંમત દરોનું ફોર્મેટ", + "noPricingData": "કિંમતનો કોઈ ડેટા ઉપલબ્ધ નથી", + "noModelsFound": "કોઈ મોડેલ મળ્યાં નથી" }, "loggers": { - "allProviders": "All Providers", - "allModels": "All Models", - "allAccounts": "All Accounts", - "allApiKeys": "All API Keys", - "allTypes": "All Types", - "allLevels": "All Levels", + "allProviders": "બધા પ્રદાતાઓ", + "allModels": "બધા મોડેલ", + "allAccounts": "બધા એકાઉન્ટ", + "allApiKeys": "બધી API કી", + "allTypes": "બધા પ્રકાર", + "allLevels": "બધા સ્તરો", "modelAZ": "Model A-Z", "modelZA": "Model Z-A", - "loadingLogs": "Loading logs...", - "loadingProxyLogs": "Loading proxy logs...", - "noLogEntries": "No log entries found", - "noPayloadData": "No payload data available for this log entry.", - "proxyEvent": "Proxy Event", + "loadingLogs": "લૉગ લોડ થઈ રહ્યા છે...", + "loadingProxyLogs": "પ્રોક્સી લૉગ લોડ થઈ રહ્યા છે...", + "noLogEntries": "કોઈ લૉગ એન્ટ્રી મળી નથી", + "noPayloadData": "આ લૉગ એન્ટ્રી માટે કોઈ પેલોડ ડેટા ઉપલબ્ધ નથી.", + "proxyEvent": "પ્રોક્સી ઇવેન્ટ", "proxy": "Proxy", - "level": "Level", - "directNative": "Direct (native)", - "combo": "Combo", + "level": "સ્તર", + "directNative": "સીધું (મૂળ)", + "combo": "સંયોજન", "inputTokens": "I:", "outputTokens": "O:" }, "stats": { - "usageOverview": "Usage Overview", - "outputTokens": "Output Tokens", - "totalCost": "Total Cost", - "usageByModel": "Usage by Model", - "usageByAccount": "Usage by Account", - "failedToLoad": "Failed to load usage statistics.", - "tokenHealth": "Token Health", - "totalOAuth": "Total OAuth", - "healthy": "Healthy", - "warning": "Warning", - "errored": "Errored", - "lastCheck": "Last check", - "noData": "No data", - "share": "Share", - "unableToLoad": "Unable to load system metrics", - "product": "Product", - "resources": "Resources", - "company": "Company", + "usageOverview": "વપરાશની ઝાંખી", + "outputTokens": "આઉટપુટ ટોકન", + "totalCost": "કુલ ખર્ચ", + "usageByModel": "મોડેલ પ્રમાણે વપરાશ", + "usageByAccount": "એકાઉન્ટ પ્રમાણે વપરાશ", + "failedToLoad": "વપરાશના આંકડા લોડ કરવામાં નિષ્ફળતા.", + "tokenHealth": "ટોકન આરોગ્ય", + "totalOAuth": "કુલ OAuth", + "healthy": "સ્વસ્થ", + "warning": "ચેતવણી", + "errored": "ભૂલગ્રસ્ત", + "lastCheck": "છેલ્લી તપાસ", + "noData": "કોઈ ડેટા નથી", + "share": "શેર કરો", + "unableToLoad": "સિસ્ટમ મેટ્રિક્સ લોડ કરવામાં અસમર્થ", + "product": "ઉત્પાદન", + "resources": "સંસાધનો", + "company": "કંપની", "tokenHealthTooltips": { "allHealthy": "બધા ટોકન સ્વસ્થ છે", "needsAttention": "કેટલાક ટોકનને ધ્યાનની જરૂર છે", @@ -9812,70 +9819,70 @@ "noAccountUsage": "હજી સુધી કોઈ ખાતા-વિશિષ્ટ ઉપયોગ નોંધાયો નથી. અહીં ડેટા જોવા માટે OAuth ખાતા ઉપયોગ કરીને વિનંતીઓ કરો." }, "auth": { - "welcome": "Welcome", - "signIn": "Sign in", - "enterPassword": "Enter your password to continue", - "password": "Password", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", - "unifiedAiApiProxyDesc": "Route requests to multiple AI providers through a single endpoint. Load balancing, failover, and usage tracking built in.", - "passwordNotEnabled": "Password protection is not enabled", - "loading": "Loading...", - "invalidPassword": "Invalid password", - "errorOccurredRetry": "An error occurred. Please try again.", - "configureInstance": "Let's get your OmniRoute instance configured", - "runOnboardingWizard": "Run the onboarding wizard to set up your password and connect your first AI provider.", - "startOnboarding": "Start Onboarding", - "secureYourInstance": "Secure Your Instance", - "setPasswordDescription": "Set a password to protect your dashboard and secure your API endpoints from unauthorized access.", - "configurePassword": "Configure Password", - "continue": "Continue", - "windowWillClose": "This window will close automatically...", - "closeTabNow": "You can close this tab now.", - "copyUrlManual": "Please copy the URL from the address bar and paste it in the application.", - "accessDeniedDescription": "You don't have permission to access this resource. Check your API key or contact the administrator.", - "goToDashboard": "Go to Dashboard", - "featureMultiProviderTitle": "Multi-Provider", - "featureMultiProviderDesc": "OpenAI, Anthropic, Google, and more", - "featureLoadBalancingTitle": "Load Balancing", - "featureLoadBalancingDesc": "Distribute requests intelligently", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Monitor costs and tokens", - "resetPassword": "Reset Password", - "resetDescription": "Choose a method to recover access to your dashboard", - "stopServer": "Stop the OmniRoute server", - "processing": "Processing...", - "pleaseWait": "Please wait while we complete the authorization.", - "authSuccess": "Authorization Successful!", - "copyUrl": "Copy This URL", - "accessDenied": "Access Denied", - "methodCliTitle": "Method 1: CLI Reset", - "methodCliDescription": "Run the following command on the server where OmniRoute is running:", - "methodCliHint": "This will prompt you to set a new password. The server must be stopped first.", - "methodManualTitle": "Method 2: Manual Reset", - "methodManualDescription": "Delete the password from the database and set a new one on startup:", - "setPasswordInYour": "Set a new password in your", - "fileLabelSuffix": "file:", + "welcome": "સ્વાગત છે", + "signIn": "સાઇન ઇન કરો", + "enterPassword": "ચાલુ રાખવા માટે તમારો પાસવર્ડ દાખલ કરો", + "password": "પાસવર્ડ", + "unifiedProxy": "એકીકૃત AI API પ્રોક્સી", + "unifiedAiApiProxy": "એકીકૃત AI API પ્રોક્સી", + "unifiedAiApiProxyDesc": "એક જ એન્ડપોઇન્ટ દ્વારા અનેક AI પ્રદાતાઓને વિનંતીઓ મોકલો. લોડ બેલેન્સિંગ, ફેલઓવર અને ઉપયોગ ટ્રેકિંગ બિલ્ટ-ઇન છે.", + "passwordNotEnabled": "પાસવર્ડ સુરક્ષા સક્ષમ નથી", + "loading": "લોડ થઈ રહ્યું છે...", + "invalidPassword": "અમાન્ય પાસવર્ડ", + "errorOccurredRetry": "એક ભૂલ આવી. કૃપા કરીને ફરી પ્રયાસ કરો.", + "configureInstance": "ચાલો તમારું OmniRoute ઇન્સ્ટન્સ ગોઠવીએ", + "runOnboardingWizard": "તમારો પાસવર્ડ સેટ કરવા અને તમારા પ્રથમ AI પ્રદાતાને કનેક્ટ કરવા માટે ઑનબોર્ડિંગ વિઝાર્ડ ચલાવો.", + "startOnboarding": "ઑનબોર્ડિંગ શરૂ કરો", + "secureYourInstance": "તમારું ઇન્સ્ટન્સ સુરક્ષિત કરો", + "setPasswordDescription": "તમારા ડેશબોર્ડને સુરક્ષિત રાખવા અને તમારા API એન્ડપોઇન્ટ્સને અનધિકૃત ઍક્સેસથી બચાવવા માટે પાસવર્ડ સેટ કરો.", + "configurePassword": "પાસવર્ડ ગોઠવો", + "continue": "ચાલુ રાખો", + "windowWillClose": "આ વિન્ડો આપમેળે બંધ થઈ જશે...", + "closeTabNow": "હવે તમે આ ટૅબ બંધ કરી શકો છો.", + "copyUrlManual": "કૃપા કરીને ઍડ્રેસ બારમાંથી URL કૉપિ કરીને એપ્લિકેશનમાં પેસ્ટ કરો.", + "accessDeniedDescription": "તમને આ સંસાધન ઍક્સેસ કરવાની પરવાનગી નથી. તમારી API કી તપાસો અથવા વ્યવસ્થાપકનો સંપર્ક કરો.", + "goToDashboard": "ડેશબોર્ડ પર જાઓ", + "featureMultiProviderTitle": "બહુ-પ્રદાતા", + "featureMultiProviderDesc": "OpenAI, Anthropic, Google અને વધુ", + "featureLoadBalancingTitle": "લોડ બેલેન્સિંગ", + "featureLoadBalancingDesc": "વિનંતીઓનું બુદ્ધિપૂર્વક વિતરણ કરો", + "featureUsageTrackingTitle": "ઉપયોગ ટ્રેકિંગ", + "featureUsageTrackingDesc": "ખર્ચ અને ટોકનનું નિરીક્ષણ કરો", + "resetPassword": "પાસવર્ડ રીસેટ કરો", + "resetDescription": "તમારા ડેશબોર્ડની ઍક્સેસ પુનઃપ્રાપ્ત કરવા માટેની પદ્ધતિ પસંદ કરો", + "stopServer": "OmniRoute સર્વરને બંધ કરો", + "processing": "પ્રક્રિયા ચાલુ છે...", + "pleaseWait": "અમે અધિકૃતતા પૂર્ણ કરીએ ત્યાં સુધી કૃપા કરીને રાહ જુઓ.", + "authSuccess": "અધિકૃતતા સફળ થઈ!", + "copyUrl": "આ URL કૉપિ કરો", + "accessDenied": "ઍક્સેસ નકારવામાં આવી", + "methodCliTitle": "પદ્ધતિ 1: CLI રીસેટ", + "methodCliDescription": "OmniRoute જે સર્વર પર ચાલી રહ્યું છે ત્યાં નીચેનો કમાન્ડ ચલાવો:", + "methodCliHint": "આ તમને નવો પાસવર્ડ સેટ કરવા માટે કહેશે. પહેલાં સર્વર બંધ કરવું આવશ્યક છે.", + "methodManualTitle": "પદ્ધતિ 2: મેન્યુઅલ રીસેટ", + "methodManualDescription": "ડેટાબેઝમાંથી પાસવર્ડ કાઢી નાખો અને સ્ટાર્ટઅપ વખતે નવો પાસવર્ડ સેટ કરો:", + "setPasswordInYour": "તમારી", + "fileLabelSuffix": "ફાઇલમાં નવો પાસવર્ડ સેટ કરો:", "newPasswordPlaceholder": "your_new_password", - "deleteSettingsFile": "Delete", - "orRemovePasswordHashField": "or remove the passwordHash field", - "restartServerWithNewPassword": "Restart the server - it will use the new password", - "backToLogin": "Back to Login", - "forgotPassword": "Forgot password?", + "deleteSettingsFile": "કાઢી નાખો", + "orRemovePasswordHashField": "અથવા passwordHash ફીલ્ડ દૂર કરો", + "restartServerWithNewPassword": "સર્વરને ફરી શરૂ કરો - તે નવા પાસવર્ડનો ઉપયોગ કરશે", + "backToLogin": "લૉગિન પર પાછા જાઓ", + "forgotPassword": "પાસવર્ડ ભૂલી ગયા છો?", "continueWithOidc": "OIDC સાથે ચાલુ રાખો", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", - "Authorization": "Authorization", + "defaultPasswordHint": "ડિફૉલ્ટ પાસવર્ડ: CHANGEME (સિવાય કે INITIAL_PASSWORD સેટ કરેલો હોય)", + "Authorization": "અધિકૃતતા", "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "અધિકૃતતાની રાહ જોવાઈ રહી છે...", + "waitingForGoogleAuthorization": "Google અધિકૃતતાની રાહ જોવાઈ રહી છે...", + "waitingForOpenAIAuthorization": "OpenAI અધિકૃતતાની રાહ જોવાઈ રહી છે...", + "waitingForAntigravityAuthorization": "Antigravity અધિકૃતતાની રાહ જોવાઈ રહી છે...", + "waitingForQoderAuthorization": "Qoder અધિકૃતતાની રાહ જોવાઈ રહી છે...", + "exchangingCodeForTokens": "ટોકન માટે કોડનું વિનિમય થઈ રહ્યું છે...", + "nodeIncompatibleTitle": "અસંગત Node.js વર્ઝન", + "nodeIncompatibleDesc": "તમે Node.js {version} ચલાવી રહ્યા છો, જે OmniRouteની સમર્થિત સુરક્ષિત રનટાઇમ નીતિની બહાર છે. પૅચ કરેલું Node.js 20.x અથવા 22.x LTS રિલીઝ વાપરો.", + "nodeIncompatibleFixLabel": "ઉકેલ: પૅચ કરેલું Node.js 22 LTS રિલીઝ ઇન્સ્ટૉલ કરો", + "nodeIncompatibleHint": "OmniRoute માટે Node.js 22.22.2+ (22.x LTS) અથવા 24.0.0+ (24.x LTS) જરૂરી છે. Node 24 LTSની ભલામણ કરવામાં આવે છે.", "resetViaAppDataTitle": "એપ ડેટા દ્વારા પુનઃસેટ કરો", "resetViaAppDataDescription": "એપ ડેટા ડિરેક્ટરીમાંથી સેટિંગ્સ ફાઇલને કાઢી નાખો જેથી તમારું પાસવર્ડ પુનઃસેટ કરી શકાય:", "quitDesktopApp": "ઓમ્નીરૂટ ડેસ્કટોપ એપ્લિકેશન સંપૂર્ણપણે બંધ કરો", @@ -9930,72 +9937,72 @@ }, "landing": { "brandName": "OmniRoute", - "navigateHome": "Navigate to home", - "toggleMenu": "Toggle menu", - "featuresLink": "Features", - "docsLink": "Docs", + "navigateHome": "હોમ પર જાઓ", + "toggleMenu": "મેનુ ટૉગલ કરો", + "featuresLink": "સુવિધાઓ", + "docsLink": "દસ્તાવેજીકરણ", "github": "GitHub", - "versionLive": "v1.0 is now live", - "oneEndpoint": "One Endpoint for", - "allProviders": "All AI Providers", - "heroDescription": "AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.", - "getStarted": "Get Started", - "viewOnGithub": "View on GitHub", - "powerfulFeatures": "Powerful Features", - "featuresSubtitle": "Everything you need to manage your AI infrastructure in one place, built for scale.", - "featureUnifiedEndpointTitle": "Unified Endpoint", - "featureUnifiedEndpointDesc": "Access all providers via a single standard API URL.", - "featureEasySetupTitle": "Easy Setup", - "featureEasySetupDesc": "Get up and running in minutes with npx command.", - "featureModelFallbackTitle": "Model Fallback", - "featureModelFallbackDesc": "Automatically switch providers on failure or high latency.", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Detailed analytics and cost monitoring across all models.", - "featureOAuthApiKeysTitle": "OAuth & API Keys", - "featureOAuthApiKeysDesc": "Securely manage credentials in one vault.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncDesc": "Sync your configurations across devices instantly.", - "featureCliSupportTitle": "CLI Support", - "featureCliSupportDesc": "Works with Claude Code, Codex, Cline, Cursor, and more.", - "featureDashboardTitle": "Dashboard", - "featureDashboardDesc": "Visual dashboard for real-time traffic analysis.", - "howItWorks": "How OmniRoute Works", - "howItWorksDescription": "Data flows seamlessly from your application through our intelligent routing layer to the best provider for the job.", - "howItWorksStep1Title": "1. CLI & SDKs", - "howItWorksStep1Description": "Your requests start from your favorite tools or our unified SDK. Just change the base URL.", - "howItWorksStep2Title": "2. OmniRoute Hub", - "howItWorksStep2Description": "Our engine analyzes the prompt, checks provider health, and routes for lowest latency or cost.", - "howItWorksStep3Title": "3. AI Providers", - "howItWorksStep3Description": "The request is fulfilled by OpenAI, Anthropic, Gemini, or others instantly.", - "getStartedIn30Seconds": "Get Started in 30 Seconds", - "getStartedDescription": "Install OmniRoute, configure your providers via web dashboard, and start routing AI requests.", - "installOmniRoute": "Install OmniRoute", - "installStepDescription": "Run npx command to start the server instantly", - "openDashboard": "Open Dashboard", - "openDashboardStepDescription": "Configure providers and API keys via web interface", - "routeRequests": "Route Requests", - "routeRequestsStepDescription": "Point your CLI tools to {endpoint}", - "terminal": "terminal", - "copy": "Copy", - "copied": "✓ Copied", - "startingOmniRoute": "Starting OmniRoute...", - "serverRunningOnLabel": "Server running on", - "dashboardLabel": "Dashboard", - "readyToRoute": "Ready to route! ✓", - "configureProvidersNote": "📝 Configure providers in dashboard or use environment variables", - "dataLocation": "Data Location:", + "versionLive": "v1.0 હવે લાઇવ છે", + "oneEndpoint": "એક એન્ડપોઇન્ટ", + "allProviders": "તમામ AI પ્રદાતાઓ માટે", + "heroDescription": "વેબ ડૅશબોર્ડ સાથે AI એન્ડપોઇન્ટ પ્રૉક્સી - CLIProxyAPI નું JavaScript પોર્ટ. Claude Code, OpenAI Codex, Cline, RooCode અને અન્ય CLI ટૂલ્સ સાથે સરળતાથી કાર્ય કરે છે.", + "getStarted": "શરૂ કરો", + "viewOnGithub": "GitHub પર જુઓ", + "powerfulFeatures": "શક્તિશાળી સુવિધાઓ", + "featuresSubtitle": "તમારા AI ઇન્ફ્રાસ્ટ્રક્ચરને એક જ સ્થળેથી સંચાલિત કરવા માટે જરૂરી બધું, મોટા પાયે ઉપયોગ માટે બનાવેલું.", + "featureUnifiedEndpointTitle": "એકીકૃત એન્ડપોઇન્ટ", + "featureUnifiedEndpointDesc": "એક જ પ્રમાણભૂત API URL દ્વારા તમામ પ્રદાતાઓને ઍક્સેસ કરો.", + "featureEasySetupTitle": "સરળ સેટઅપ", + "featureEasySetupDesc": "npx કમાન્ડ વડે મિનિટોમાં શરૂ કરો.", + "featureModelFallbackTitle": "મૉડલ ફૉલબૅક", + "featureModelFallbackDesc": "નિષ્ફળતા અથવા વધુ વિલંબ થાય ત્યારે આપમેળે પ્રદાતા બદલો.", + "featureUsageTrackingTitle": "વપરાશ ટ્રૅકિંગ", + "featureUsageTrackingDesc": "તમામ મૉડલ્સ માટે વિગતવાર વિશ્લેષણ અને ખર્ચનું નિરીક્ષણ.", + "featureOAuthApiKeysTitle": "OAuth અને API કીઝ", + "featureOAuthApiKeysDesc": "એક જ વૉલ્ટમાં ઓળખપત્રો સુરક્ષિત રીતે સંચાલિત કરો.", + "featureCloudSyncTitle": "ક્લાઉડ સિંક", + "featureCloudSyncDesc": "તમારા કન્ફિગરેશન્સને ઉપકરણો વચ્ચે તરત જ સિંક કરો.", + "featureCliSupportTitle": "CLI સપોર્ટ", + "featureCliSupportDesc": "Claude Code, Codex, Cline, Cursor અને અન્ય ટૂલ્સ સાથે કાર્ય કરે છે.", + "featureDashboardTitle": "ડૅશબોર્ડ", + "featureDashboardDesc": "રીઅલ-ટાઇમ ટ્રાફિક વિશ્લેષણ માટે વિઝ્યુઅલ ડૅશબોર્ડ.", + "howItWorks": "OmniRoute કેવી રીતે કાર્ય કરે છે", + "howItWorksDescription": "તમારી ઍપ્લિકેશનમાંથી ડેટા અમારા બુદ્ધિશાળી રૂટિંગ સ્તર મારફતે કાર્ય માટેના શ્રેષ્ઠ પ્રદાતા સુધી સરળતાથી પહોંચે છે.", + "howItWorksStep1Title": "1. CLI અને SDKs", + "howItWorksStep1Description": "તમારી વિનંતીઓ તમારા મનપસંદ ટૂલ્સ અથવા અમારા એકીકૃત SDKમાંથી શરૂ થાય છે. ફક્ત બેઝ URL બદલો.", + "howItWorksStep2Title": "2. OmniRoute હબ", + "howItWorksStep2Description": "અમારું એન્જિન પ્રૉમ્પ્ટનું વિશ્લેષણ કરે છે, પ્રદાતાની સ્થિતિ તપાસે છે અને સૌથી ઓછા વિલંબ અથવા ખર્ચ માટે રૂટ કરે છે.", + "howItWorksStep3Title": "3. AI પ્રદાતાઓ", + "howItWorksStep3Description": "વિનંતી OpenAI, Anthropic, Gemini અથવા અન્ય પ્રદાતાઓ દ્વારા તરત જ પૂર્ણ કરવામાં આવે છે.", + "getStartedIn30Seconds": "30 સેકન્ડમાં શરૂ કરો", + "getStartedDescription": "OmniRoute ઇન્સ્ટૉલ કરો, વેબ ડૅશબોર્ડ દ્વારા તમારા પ્રદાતાઓને કન્ફિગર કરો અને AI વિનંતીઓ રૂટ કરવાનું શરૂ કરો.", + "installOmniRoute": "OmniRoute ઇન્સ્ટૉલ કરો", + "installStepDescription": "સર્વર તરત શરૂ કરવા માટે npx કમાન્ડ ચલાવો", + "openDashboard": "ડૅશબોર્ડ ખોલો", + "openDashboardStepDescription": "વેબ ઇન્ટરફેસ દ્વારા પ્રદાતાઓ અને API કીઝ કન્ફિગર કરો", + "routeRequests": "વિનંતીઓ રૂટ કરો", + "routeRequestsStepDescription": "તમારા CLI ટૂલ્સને {endpoint} તરફ નિર્દેશિત કરો", + "terminal": "ટર્મિનલ", + "copy": "કૉપિ કરો", + "copied": "✓ કૉપિ થયું", + "startingOmniRoute": "OmniRoute શરૂ થઈ રહ્યું છે...", + "serverRunningOnLabel": "સર્વર અહીં ચાલી રહ્યું છે", + "dashboardLabel": "ડૅશબોર્ડ", + "readyToRoute": "રૂટ કરવા માટે તૈયાર! ✓", + "configureProvidersNote": "📝 ડૅશબોર્ડમાં પ્રદાતાઓ ગોઠવો અથવા એન્વાયરમેન્ટ વેરિએબલ્સનો ઉપયોગ કરો", + "dataLocation": "ડેટાનું સ્થાન:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", - "product": "Product", - "dashboardLink": "Dashboard", - "changelog": "Changelog", - "resources": "Resources", - "documentation": "Documentation", + "product": "ઉત્પાદન", + "dashboardLink": "ડૅશબોર્ડ", + "changelog": "ફેરફારોનો ઇતિહાસ", + "resources": "સંસાધનો", + "documentation": "દસ્તાવેજીકરણ", "npm": "NPM", - "legal": "Legal", - "mitLicense": "MIT License", - "footerTagline": "The unified endpoint for AI generation. Connect, route, and manage your AI providers with ease.", - "copyright": "© {year} OmniRoute. All rights reserved.", + "legal": "કાનૂની", + "mitLicense": "MIT લાઇસન્સ", + "footerTagline": "AI જનરેશન માટે એકીકૃત એન્ડપોઇન્ટ. તમારા AI પ્રદાતાઓને સરળતાથી કનેક્ટ, રૂટ અને મેનેજ કરો.", + "copyright": "© {year} OmniRoute. બધા અધિકારો સુરક્ષિત.", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", "flowToolCline": "Cline", @@ -10004,11 +10011,11 @@ "flowProviderAnthropic": "Anthropic", "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", - "interactiveDiagram": "Interactive diagram visible on desktop", - "ctaTitle": "Ready to Simplify Your AI Infrastructure?", - "ctaDescription": "Join developers who are streamlining their AI integrations with OmniRoute. Open source and free to start.", - "startFree": "Start Free", - "readDocumentation": "Read Documentation", + "interactiveDiagram": "ઇન્ટરેક્ટિવ ડાયાગ્રામ ડેસ્કટૉપ પર દૃશ્યમાન છે", + "ctaTitle": "તમારા AI ઇન્ફ્રાસ્ટ્રક્ચરને સરળ બનાવવા માટે તૈયાર છો?", + "ctaDescription": "OmniRoute વડે પોતાના AI ઇન્ટિગ્રેશન્સને સુવ્યવસ્થિત કરતા ડેવલપર્સ સાથે જોડાઓ. ઓપન સોર્સ અને શરૂઆત કરવા માટે મફત.", + "startFree": "મફતમાં શરૂ કરો", + "readDocumentation": "દસ્તાવેજીકરણ વાંચો", "company": "કંપની", "pricing": "ભાવનામા", "apiReference": "એપીઆઈ સંદર્ભ", @@ -10023,45 +10030,45 @@ "communityDiscussions": "સમુદાય ચર્ચાઓ" }, "docs": { - "title": "Documentation", - "quickStart": "Quick Start", + "title": "દસ્તાવેજીકરણ", + "quickStart": "ઝડપી શરૂઆત", "deploymentGuides": "જમાવટ માર્ગદર્શિકાઓ", - "features": "Features", - "supportedProviders": "Supported Providers", - "supportedProvidersToc": "Providers", - "commonUseCases": "Common Use Cases", - "clientCompatibility": "Client Compatibility", - "protocolsToc": "Protocols", - "apiReference": "API Reference", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", - "method": "Method", - "path": "Path", - "notes": "Notes", - "modelPrefixes": "Model Prefixes", - "prefix": "Prefix", - "troubleshooting": "Troubleshooting", - "supportsChat": "Supports both chat and responses endpoints.", - "oauthAutoRefresh": "OAuth connection with automatic token refresh.", - "fullStreaming": "Full streaming support for all models.", - "docsLabel": "Docs", + "features": "સુવિધાઓ", + "supportedProviders": "સમર્થિત પ્રદાતાઓ", + "supportedProvidersToc": "પ્રદાતાઓ", + "commonUseCases": "સામાન્ય ઉપયોગના કિસ્સાઓ", + "clientCompatibility": "ક્લાયન્ટ સુસંગતતા", + "protocolsToc": "પ્રોટોકોલ્સ", + "apiReference": "API સંદર્ભ", + "managementApiReference": "મેનેજમેન્ટ API સંદર્ભ", + "managementApiDescription": "પ્રોક્સી રજિસ્ટ્રી, સ્કોપ અસાઇનમેન્ટ્સ અને લેગસી પ્રોક્સી માઇગ્રેશન માટેના ઑટોમેશન એન્ડપોઇન્ટ્સ.", + "method": "મેથડ", + "path": "પાથ", + "notes": "નોંધો", + "modelPrefixes": "મોડેલ પ્રીફિક્સ", + "prefix": "ઉપસર્ગ", + "troubleshooting": "સમસ્યા નિવારણ", + "supportsChat": "ચેટ અને રિસ્પોન્સિસ બંને એન્ડપોઇન્ટને સપોર્ટ કરે છે.", + "oauthAutoRefresh": "સ્વચાલિત ટોકન રિફ્રેશ સાથે OAuth કનેક્શન.", + "fullStreaming": "બધા મોડલ માટે સંપૂર્ણ સ્ટ્રીમિંગ સપોર્ટ.", + "docsLabel": "દસ્તાવેજો", "docsHeroDescription": "AI gateway for multi-provider LLMs. One endpoint for OpenAI, Anthropic, Gemini, DeepSeek, GitHub Copilot, Claude Code, Cursor, and 100+ more providers.", - "openDashboard": "Open Dashboard", - "endpointPage": "Endpoint Page", + "openDashboard": "ડૅશબોર્ડ ખોલો", + "endpointPage": "એન્ડપોઇન્ટ પેજ", "github": "GitHub", - "reportIssue": "Report Issue", - "onThisPage": "On this page", - "documentationVersion": "Documentation - v{version}", - "quickStartStep1Title": "1. Install and run", - "quickStartStep1Prefix": "Run", - "quickStartStep1Middle": "or clone from GitHub and run", - "quickStartStep2Title": "2. Create API key", - "quickStartStep2Text": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "quickStartStep3Title": "3. Connect providers", - "quickStartStep3Text": "Add provider accounts via OAuth login, API key, or free-tier auto-connect.", - "quickStartStep4Title": "4. Set client base URL", - "quickStartStep4Prefix": "Point your IDE or API client to", - "quickStartStep4Suffix": "Use provider prefix, for example", + "reportIssue": "સમસ્યાની જાણ કરો", + "onThisPage": "આ પેજ પર", + "documentationVersion": "દસ્તાવેજીકરણ - v{version}", + "quickStartStep1Title": "1. ઇન્સ્ટૉલ કરો અને ચલાવો", + "quickStartStep1Prefix": "ચલાવો", + "quickStartStep1Middle": "અથવા GitHub પરથી ક્લોન કરીને ચલાવો", + "quickStartStep2Title": "2. API કી બનાવો", + "quickStartStep2Text": "Endpoint -> Registered Keys પર જાઓ. દરેક એન્વાયર્નમેન્ટ માટે એક કી બનાવો.", + "quickStartStep3Title": "3. પ્રોવાઇડર્સને કનેક્ટ કરો", + "quickStartStep3Text": "OAuth લૉગિન, API કી અથવા ફ્રી-ટિયર ઑટો-કનેક્ટ દ્વારા પ્રોવાઇડર એકાઉન્ટ્સ ઉમેરો.", + "quickStartStep4Title": "4. ક્લાયન્ટ બેઝ URL સેટ કરો", + "quickStartStep4Prefix": "તમારા IDE અથવા API ક્લાયન્ટને આ તરફ નિર્દેશિત કરો", + "quickStartStep4Suffix": "પ્રોવાઇડર ઉપસર્ગનો ઉપયોગ કરો, ઉદાહરણ તરીકે", "deploySetupTitle": "સેટઅપ માર્ગદર્શિકા", "deploySetupText": "OmniRoute માટે સ્ટેપ-બાય-સ્ટેપ ઇન્સ્ટોલેશન, એન્વાયર્નમેન્ટ કન્ફિગરેશન અને ફર્સ્ટ-રન વૉકથ્રુ.", "deployElectronTitle": "ઇલેક્ટ્રોન ડેસ્કટોપ", @@ -10075,161 +10082,161 @@ "deployPwaTitle": "પીડબલ્યુએ", "deployPwaText": "Android, iOS અને ડેસ્કટૉપ બ્રાઉઝર પર પ્રોગ્રેસિવ વેબ ઍપ તરીકે OmniRoute ઇન્સ્ટોલ કરો.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", - "featureRoutingTitle": "Multi-Provider Routing", - "featureRoutingText": "Route requests to 30+ AI providers through a single OpenAI-compatible endpoint. Supports chat, responses, audio, and image APIs.", - "featureCombosTitle": "Combos and Balancing", - "featureCombosText": "Create model combos with fallback chains and balancing strategies: round-robin, priority, random, least-used, and cost-optimized.", - "featureUsageTitle": "Usage and Cost Tracking", - "featureUsageText": "Real-time token counting, cost calculation per provider/model, and detailed usage breakdown by API key and account.", - "featureAnalyticsTitle": "Analytics Dashboard", - "featureAnalyticsText": "Visual analytics with charts for requests, tokens, errors, latency, costs, and model popularity over time.", - "featureHealthTitle": "Health Monitoring", - "featureHealthText": "Live health checks, provider status, circuit breaker states, and automatic rate limit detection with exponential backoff.", - "featureCliTitle": "CLI Tools", - "featureCliText": "Manage IDE configurations, export/import backups, discover codex profiles, and configure settings from the dashboard.", - "featureSecurityTitle": "Security and Policies", - "featureSecurityText": "API key authentication, IP filtering, prompt injection guard, domain policies, session management, and audit logging.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncText": "Sync your configuration to Cloudflare Workers for remote access with encrypted credentials and automatic failover.", - "providersAcrossConnectionTypes": "{count} providers across three connection types.", - "manageProviders": "Manage Providers", - "providersCount": "{count} providers", - "providerTypeFree": "Free Tier", + "deployTermuxText": "Termux દ્વારા Android પર OmniRouteને હેડલેસ મોડમાં ચલાવો. તમારા મોબાઇલ બ્રાઉઝરમાંથી ડૅશબોર્ડ ઍક્સેસ કરો.", + "featureRoutingTitle": "મલ્ટિ-પ્રોવાઇડર રાઉટિંગ", + "featureRoutingText": "એક જ OpenAI-સુસંગત એન્ડપોઇન્ટ દ્વારા 30+ AI પ્રોવાઇડર્સને રિક્વેસ્ટ્સ રૂટ કરો. ચેટ, રિસ્પોન્સિસ, ઑડિયો અને ઇમેજ APIsને સપોર્ટ કરે છે.", + "featureCombosTitle": "કોમ્બોઝ અને બેલેન્સિંગ", + "featureCombosText": "ફૉલબૅક ચેઇન્સ અને બેલેન્સિંગ વ્યૂહરચનાઓ સાથે મોડલ કોમ્બોઝ બનાવો: રાઉન્ડ-રોબિન, પ્રાથમિકતા, રૅન્ડમ, સૌથી ઓછો ઉપયોગ થયેલ અને ખર્ચ-ઑપ્ટિમાઇઝ્ડ.", + "featureUsageTitle": "ઉપયોગ અને ખર્ચ ટ્રૅકિંગ", + "featureUsageText": "રિયલ-ટાઇમ ટોકન ગણતરી, દરેક પ્રોવાઇડર/મોડલ દીઠ ખર્ચની ગણતરી અને API કી તથા એકાઉન્ટ પ્રમાણે ઉપયોગનું વિગતવાર વિભાજન.", + "featureAnalyticsTitle": "ઍનલિટિક્સ ડૅશબોર્ડ", + "featureAnalyticsText": "સમયાંતરે રિક્વેસ્ટ્સ, ટોકન્સ, ભૂલો, લેટન્સી, ખર્ચ અને મોડલની લોકપ્રિયતા માટે ચાર્ટ્સ સાથે વિઝ્યુઅલ ઍનલિટિક્સ.", + "featureHealthTitle": "હેલ્થ મોનિટરિંગ", + "featureHealthText": "લાઇવ હેલ્થ ચેક્સ, પ્રોવાઇડર સ્ટેટસ, સર્કિટ બ્રેકરની સ્થિતિઓ અને એક્સ્પોનેન્શિયલ બૅકઑફ સાથે સ્વચાલિત રેટ લિમિટ શોધ.", + "featureCliTitle": "CLI ટૂલ્સ", + "featureCliText": "IDE કૉન્ફિગરેશન્સ મેનેજ કરો, બૅકઅપ્સ એક્સપોર્ટ/ઇમ્પોર્ટ કરો, codex પ્રોફાઇલ્સ શોધો અને ડૅશબોર્ડમાંથી સેટિંગ્સ કૉન્ફિગર કરો.", + "featureSecurityTitle": "સુરક્ષા અને નીતિઓ", + "featureSecurityText": "API કી ઑથેન્ટિકેશન, IP ફિલ્ટરિંગ, પ્રોમ્પ્ટ ઇન્જેક્શન ગાર્ડ, ડોમેન નીતિઓ, સેશન મેનેજમેન્ટ અને ઑડિટ લૉગિંગ.", + "featureCloudSyncTitle": "ક્લાઉડ સિંક", + "featureCloudSyncText": "એન્ક્રિપ્ટેડ ક્રેડેન્શિયલ્સ અને સ્વચાલિત ફેલઓવર સાથે રિમોટ ઍક્સેસ માટે તમારા કૉન્ફિગરેશનને Cloudflare Workers સાથે સિંક કરો.", + "providersAcrossConnectionTypes": "ત્રણ કનેક્શન પ્રકારોમાં {count} પ્રદાતાઓ.", + "manageProviders": "પ્રદાતાઓનું સંચાલન કરો", + "providersCount": "{count} પ્રદાતાઓ", + "providerTypeFree": "મફત સ્તર", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", - "useCaseSingleEndpointTitle": "Single endpoint for many providers", - "useCaseSingleEndpointText": "Point clients to one base URL and route by model prefix (for example: gh/, cc/, kr/, openai/).", - "useCaseFallbackTitle": "Fallback and model switching with combos", - "useCaseFallbackText": "Create combo models in Dashboard and keep client config stable while providers rotate internally.", - "useCaseUsageVisibilityTitle": "Usage, cost and debug visibility", - "useCaseUsageVisibilityText": "Track tokens and cost by provider, account, and API key in Usage and Analytics tabs.", + "providerTypeApiKey": "API કી", + "useCaseSingleEndpointTitle": "ઘણા પ્રદાતાઓ માટે એક જ એન્ડપોઇન્ટ", + "useCaseSingleEndpointText": "ક્લાયન્ટ્સને એક બેઝ URL તરફ નિર્દેશિત કરો અને મોડેલ પ્રીફિક્સ દ્વારા રૂટ કરો (ઉદાહરણ તરીકે: gh/, cc/, kr/, openai/).", + "useCaseFallbackTitle": "કોમ્બોઝ સાથે ફૉલબૅક અને મોડેલ સ્વિચિંગ", + "useCaseFallbackText": "Dashboardમાં કોમ્બો મોડેલો બનાવો અને પ્રદાતાઓ આંતરિક રીતે બદલાતા રહે ત્યારે પણ ક્લાયન્ટ કૉન્ફિગરેશન સ્થિર રાખો.", + "useCaseUsageVisibilityTitle": "વપરાશ, ખર્ચ અને ડિબગ દૃશ્યતા", + "useCaseUsageVisibilityText": "Usage અને Analytics ટૅબમાં પ્રદાતા, એકાઉન્ટ અને API કી મુજબ ટોકન્સ તથા ખર્ચને ટ્રૅક કરો.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", - "modelRecommendationLabel": "Model recommendation: explicit prefix", - "clientCodexTitle": "Codex / GitHub Copilot Models", - "clientCodexBullet1": "Use model IDs with", - "clientCodexBullet2": "Codex-family models auto-route to", - "clientCodexBullet3": "Non-Codex models continue on", + "baseUrlLabel": "બેઝ URL", + "chatEndpointLabel": "ચૅટ એન્ડપોઇન્ટ", + "modelRecommendationLabel": "મોડેલ ભલામણ: સ્પષ્ટ પ્રીફિક્સ", + "clientCodexTitle": "Codex / GitHub Copilot મોડેલો", + "clientCodexBullet1": "આની સાથે મોડેલ IDs વાપરો", + "clientCodexBullet2": "Codex-ફેમિલીના મોડેલો આપમેળે અહીં રૂટ થાય છે", + "clientCodexBullet3": "Non-Codex મોડેલો અહીં ચાલુ રહે છે", "clientCursorTitle": "Cursor IDE", - "clientCursorBullet1": "Use", - "clientCursorBullet1Suffix": "prefix for Cursor models.", - "clientCursorBullet2": "OAuth connection - login from the Providers page.", + "clientCursorBullet1": "વાપરો", + "clientCursorBullet1Suffix": "Cursor મોડેલો માટે પ્રીફિક્સ.", + "clientCursorBullet2": "OAuth કનેક્શન - Providers પેજ પરથી લૉગ ઇન કરો.", "clientClaudeTitle": "Claude Code / Antigravity", - "clientClaudeBullet1Prefix": "Use", - "clientClaudeBullet1Middle": "(Claude) or", - "clientClaudeBullet1Suffix": "(Antigravity) prefix.", + "clientClaudeBullet1Prefix": "વાપરો", + "clientClaudeBullet1Middle": "(Claude) અથવા", + "clientClaudeBullet1Suffix": "(Antigravity) પ્રીફિક્સ.", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "Use OmniRoute as an OpenAI-compatible base URL and keep explicit provider prefixes for deterministic routing.", - "clientWindsurfBullet2": "Point models to `/v1/chat/completions` for general traffic and preserve `/v1/responses` for Codex-style flows.", - "clientWindsurfBullet3": "Use Dashboard -> CLI Tools for a ready-made Windsurf configuration guide.", + "clientWindsurfBullet1": "OmniRouteનો OpenAI-સુસંગત બેઝ URL તરીકે ઉપયોગ કરો અને નિર્ધારિત રૂટિંગ માટે સ્પષ્ટ પ્રદાતા પ્રીફિક્સ જાળવી રાખો.", + "clientWindsurfBullet2": "સામાન્ય ટ્રાફિક માટે મોડેલોને `/v1/chat/completions` તરફ નિર્દેશિત કરો અને Codex-શૈલીના ફ્લોઝ માટે `/v1/responses` જાળવી રાખો.", + "clientWindsurfBullet3": "તૈયાર Windsurf કૉન્ફિગરેશન માર્ગદર્શિકા માટે Dashboard -> CLI Toolsનો ઉપયોગ કરો.", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline works best with explicit provider/model prefixes so the router never has to guess the backend.", - "clientClineBullet2": "Use `/v1/chat/completions` for general models and reuse the same OmniRoute base URL across different accounts.", - "clientClineBullet3": "Use the Providers dashboard to validate OAuth/API key before debugging Cline runtime issues.", + "clientClineBullet1": "સ્પષ્ટ પ્રદાતા/મોડેલ પ્રીફિક્સ સાથે Cline શ્રેષ્ઠ રીતે કાર્ય કરે છે, જેથી રાઉટરને ક્યારેય બૅકએન્ડનું અનુમાન ન લગાવવું પડે.", + "clientClineBullet2": "સામાન્ય મોડેલો માટે `/v1/chat/completions` વાપરો અને વિવિધ એકાઉન્ટ્સમાં સમાન OmniRoute બેઝ URLનો ફરીથી ઉપયોગ કરો.", + "clientClineBullet3": "Cline રનટાઇમ સમસ્યાઓ ડિબગ કરતા પહેલાં OAuth/API કીને માન્ય કરવા માટે Providers ડૅશબોર્ડનો ઉપયોગ કરો.", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "Use OmniRoute as a stable base URL while rotating accounts or provider combos underneath.", - "clientKimiBullet2": "Prefer prefixed models in coding flows so fallback and audit trail remain explicit.", - "clientKimiBullet3": "Use `/v1/responses` when you want native Responses-style routing for tool-using clients.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "clientKimiBullet1": "અંતર્ગત એકાઉન્ટ્સ અથવા પ્રદાતા કોમ્બોઝ બદલતી વખતે OmniRouteનો સ્થિર બેઝ URL તરીકે ઉપયોગ કરો.", + "clientKimiBullet2": "કોડિંગ ફ્લોઝમાં પ્રીફિક્સવાળા મોડેલોને પ્રાધાન્ય આપો, જેથી ફૉલબૅક અને ઑડિટ ટ્રેલ સ્પષ્ટ રહે.", + "clientKimiBullet3": "ટૂલ્સનો ઉપયોગ કરતા ક્લાયન્ટ્સ માટે મૂળ Responses-શૈલીનું રૂટિંગ જોઈતું હોય ત્યારે `/v1/responses` વાપરો.", + "protocolsTitle": "પ્રોટોકોલ્સ: MCP અને A2A", + "protocolsDescription": "OpenAI-સુસંગત APIs ઉપરાંત OmniRoute બે ઑપરેશનલ પ્રોટોકોલ્સ પ્રદાન કરે છે: ટૂલ એક્ઝિક્યુશન માટે MCP અને એજન્ટ-ટુ-એજન્ટ વર્કફ્લોઝ માટે A2A.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "ક્લાયન્ટ્સને ઑડિટ દૃશ્યતા સાથે OmniRoute ટૂલ્સ શોધવા અને કૉલ કરવાની સુવિધા આપવા માટે stdio દ્વારા MCP વાપરો.", + "protocolMcpStep1": "`omniroute --mcp` વડે MCP ટ્રાન્સપોર્ટ શરૂ કરો.", + "protocolMcpStep2": "તમારા MCP ક્લાયન્ટને stdio ટ્રાન્સપોર્ટ તરફ નિર્દેશિત કરો.", + "protocolMcpStep3": "કનેક્ટિવિટી ચકાસવા માટે `omniroute_get_health` અને `omniroute_list_combos` ને કૉલ કરો.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", - "endpointChatNote": "OpenAI-compatible chat endpoint (default).", - "endpointResponsesNote": "Responses API endpoint (Codex, o-series).", - "endpointModelsNote": "Model catalog for all connected providers.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", - "endpointSpeechNote": "Text-to-speech generation (ElevenLabs, OpenAI TTS).", - "endpointEmbeddingsNote": "Text embedding generation (OpenAI, Cohere, Voyage).", - "endpointImagesNote": "Image generation (NanoBanana).", - "endpointRewriteChatNote": "Rewrite helper for clients without /v1.", - "endpointRewriteResponsesNote": "Rewrite helper for Responses without /v1.", - "endpointRewriteModelsNote": "Rewrite helper for model discovery without /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", - "modelPrefixesDescriptionStart": "Use the provider prefix before the model name to route to a specific provider. Example:", - "modelPrefixesDescriptionEnd": "routes to GitHub Copilot.", - "provider": "Provider", - "type": "Type", - "troubleshootingModelRouting": "If the client fails with model routing, use explicit provider/model (for example: gh/gpt-5.1-codex).", - "troubleshootingAmbiguousModels": "If you receive ambiguous model errors, pick a provider prefix instead of a bare model ID.", - "troubleshootingCodexFamily": "For GitHub Codex-family models, keep model as gh/codex-model; router selects /responses automatically.", - "troubleshootingTestConnection": "Use Dashboard > Providers > Test Connection before testing from IDEs or external clients.", - "troubleshootingCircuitBreaker": "If a provider shows circuit breaker open, wait for the cooldown or check Health page for details.", - "troubleshootingOAuth": "For OAuth providers, re-authenticate if tokens expire. Check the provider card status indicator.", - "endpointCompletionsNote": "Legacy completions endpoint for text generation.", - "endpointModerationsNote": "Content moderation and safety classification.", - "endpointRerankNote": "Document reranking for retrieval-augmented generation (Cohere, Jina).", - "endpointSearchNote": "Web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity).", - "endpointSearchAnalyticsNote": "Analytics and metrics for search requests.", - "endpointVideoNote": "Video generation (ComfyUI, SD WebUI workflows).", - "endpointMusicNote": "Music generation via ComfyUI workflows.", - "endpointMessagesNote": "Anthropic-native messages endpoint.", - "endpointCountTokensNote": "Count tokens for a given message payload.", - "endpointFilesNote": "File upload for multimodal inputs.", - "endpointBatchesNote": "Batch processing for bulk API requests.", - "endpointWsNote": "WebSocket endpoint for real-time streaming.", - "mgmtProvidersListNote": "List all registered provider connections.", - "mgmtProvidersCreateNote": "Create a new provider connection.", - "mgmtProvidersUpdateNote": "Update an existing provider connection.", - "mgmtProvidersDeleteNote": "Delete a provider connection.", - "mgmtProvidersTestNote": "Test connectivity and authentication for a provider.", - "mgmtProvidersModelsNote": "List available models for a specific provider.", - "mgmtSettingsGetNote": "Retrieve current application settings.", - "mgmtSettingsUpdateNote": "Update application settings.", - "mgmtPayloadRulesGetNote": "Get payload transformation rules.", - "mgmtPayloadRulesUpdateNote": "Update payload transformation rules.", - "mcpToolsTitle": "MCP Tools", - "mcpToolsDescription": "OmniRoute exposes {count} tools via Model Context Protocol for agent orchestration.", - "mcpToolsCount": "{count} tools", - "mcpToolsToc": "MCP Tools", - "mcpToolsRoutingTitle": "Routing & Discovery", - "mcpToolsRoutingDesc": "Health checks, combo management, quota monitoring, cost reporting, and model catalog access.", - "mcpToolsOperationsTitle": "Operations & Strategy", - "mcpToolsOperationsDesc": "Route simulation, budget guards, strategy switching, resilience profiles, and provider metrics.", - "mcpToolsCacheTitle": "Cache Management", - "mcpToolsCacheDesc": "View cache statistics and flush semantic or signature caches.", + "protocolA2aDesc": "કાર્યોને સમકાલીન રીતે અથવા SSE સ્ટ્રીમિંગ મારફતે સબમિટ કરવા માટે A2A JSON-RPC નો ઉપયોગ કરો.", + "protocolA2aStep1": "એજન્ટ શોધ માટે `/.well-known/agent.json` વાંચો.", + "protocolA2aStep2": "`POST /a2a` પર `message/send` અથવા `message/stream` વિનંતીઓ મોકલો.", + "protocolA2aStep3": "`tasks/get` અને `tasks/cancel` વડે કાર્યના જીવનચક્રનું સંચાલન કરો.", + "protocolTroubleshootingTitle": "પ્રોટોકોલ સમસ્યાનિવારણ", + "protocolTroubleshooting1": "જો MCP સ્થિતિ ઑફલાઇન હોય, તો ચકાસો કે stdio પ્રોસેસ ચાલી રહી છે અને heartbeat ફાઇલ અપડેટ થઈ રહી છે.", + "protocolTroubleshooting2": "જો A2A કાર્યો `working` સ્થિતિમાં જ રહે, તો ટર્મિનલ સ્થિતિ માટે `/api/a2a/tasks/:id` અને સ્ટ્રીમ ઇવેન્ટ્સ તપાસો.", + "protocolTroubleshooting3": "ઓપરેશનલ નિયંત્રણો અને ઑડિટ દૃશ્યતા માટે `/dashboard/mcp` અને `/dashboard/a2a` નો ઉપયોગ કરો.", + "endpointChatNote": "OpenAI-સુસંગત ચેટ એન્ડપોઇન્ટ (ડિફૉલ્ટ).", + "endpointResponsesNote": "Responses API એન્ડપોઇન્ટ (Codex, o-series).", + "endpointModelsNote": "જોડાયેલા તમામ પ્રદાતાઓ માટેનું મોડેલ કૅટલૉગ.", + "endpointAudioNote": "ઑડિયો ટ્રાન્સક્રિપ્શન (Deepgram, AssemblyAI).", + "endpointSpeechNote": "ટેક્સ્ટ-ટુ-સ્પીચ જનરેશન (ElevenLabs, OpenAI TTS).", + "endpointEmbeddingsNote": "ટેક્સ્ટ એમ્બેડિંગ જનરેશન (OpenAI, Cohere, Voyage).", + "endpointImagesNote": "ઇમેજ જનરેશન (NanoBanana).", + "endpointRewriteChatNote": "/v1 વગરના ક્લાયન્ટ્સ માટે રીરાઇટ સહાયક.", + "endpointRewriteResponsesNote": "/v1 વગરના Responses માટે રીરાઇટ સહાયક.", + "endpointRewriteModelsNote": "/v1 વગર મોડેલ શોધ માટે રીરાઇટ સહાયક.", + "mgmtProxiesListNote": "સાચવેલી પ્રોક્સી રજિસ્ટ્રી આઇટમ્સની યાદી જુઓ (પેજિનેશનને સપોર્ટ કરે છે).", + "mgmtProxiesCreateNote": "રજિસ્ટ્રીમાં ફરી ઉપયોગ કરી શકાય તેવી પ્રોક્સી આઇટમ બનાવો.", + "mgmtProxiesHealthNote": "પ્રોક્સી લૉગ્સમાંથી દરેક સાચવેલી પ્રોક્સી માટે 24 કલાકના/રોલિંગ હેલ્થ મેટ્રિક્સ મેળવો.", + "mgmtProxiesBulkAssignNote": "એક વિનંતીમાં ઘણા સ્કોપ ID માટે એક પ્રોક્સી અસાઇન કરો અથવા દૂર કરો.", + "mgmtAssignmentsListNote": "scope, scope_id અથવા proxy_id પ્રમાણે પ્રોક્સી અસાઇનમેન્ટ્સની યાદી જુઓ.", + "mgmtAssignmentsUpdateNote": "global/provider/account/combo સ્કોપ માટે પ્રોક્સી અસાઇન કરો અથવા દૂર કરો.", + "mgmtLegacyMigrationNote": "લેગસી proxyConfig મેપ્સને રજિસ્ટ્રી અસાઇનમેન્ટ્સમાં ઇમ્પોર્ટ કરો.", + "modelPrefixesDescriptionStart": "ચોક્કસ પ્રદાતા તરફ રૂટ કરવા માટે મોડેલના નામ પહેલાં પ્રદાતા પ્રિફિક્સનો ઉપયોગ કરો. ઉદાહરણ:", + "modelPrefixesDescriptionEnd": "GitHub Copilot તરફ રૂટ કરે છે.", + "provider": "પ્રદાતા", + "type": "પ્રકાર", + "troubleshootingModelRouting": "જો ક્લાયન્ટ મોડેલ રૂટિંગમાં નિષ્ફળ જાય, તો સ્પષ્ટ provider/model નો ઉપયોગ કરો (ઉદાહરણ તરીકે: gh/gpt-5.1-codex).", + "troubleshootingAmbiguousModels": "જો તમને મોડેલની અસ્પષ્ટતા સંબંધિત ભૂલો મળે, તો માત્ર મોડેલ ID ને બદલે પ્રદાતા પ્રિફિક્સ પસંદ કરો.", + "troubleshootingCodexFamily": "GitHub Codex-ફેમિલી મોડેલ્સ માટે, મોડેલને gh/codex-model તરીકે રાખો; રાઉટર આપમેળે /responses પસંદ કરે છે.", + "troubleshootingTestConnection": "IDEs અથવા બાહ્ય ક્લાયન્ટ્સમાંથી પરીક્ષણ કરતાં પહેલાં Dashboard > Providers > Test Connection નો ઉપયોગ કરો.", + "troubleshootingCircuitBreaker": "જો કોઈ પ્રદાતા માટે સર્કિટ બ્રેકર ખુલ્લું બતાવે, તો કૂલડાઉન પૂરું થવાની રાહ જુઓ અથવા વિગતો માટે Health પેજ તપાસો.", + "troubleshootingOAuth": "OAuth પ્રદાતાઓ માટે, ટોકન્સની સમયમર્યાદા પૂરી થાય તો ફરીથી પ્રમાણિત કરો. પ્રદાતા કાર્ડનો સ્થિતિ સૂચક તપાસો.", + "endpointCompletionsNote": "ટેક્સ્ટ જનરેશન માટે લેગસી કમ્પ્લીશન્સ એન્ડપોઇન્ટ.", + "endpointModerationsNote": "કન્ટેન્ટ મોડરેશન અને સલામતી વર્ગીકરણ.", + "endpointRerankNote": "રિટ્રીવલ-ઑગમેન્ટેડ જનરેશન માટે દસ્તાવેજોનું પુનઃક્રમનિર્ધારણ (Cohere, Jina).", + "endpointSearchNote": "5 પ્રદાતાઓ (Serper, Brave, Exa, Tavily, Perplexity) સાથે વેબ શોધ.", + "endpointSearchAnalyticsNote": "શોધ વિનંતીઓ માટે વિશ્લેષણ અને મેટ્રિક્સ.", + "endpointVideoNote": "વિડિયો જનરેશન (ComfyUI, SD WebUI વર્કફ્લો).", + "endpointMusicNote": "ComfyUI વર્કફ્લો દ્વારા સંગીત જનરેશન.", + "endpointMessagesNote": "Anthropic-નેટિવ સંદેશાઓનું એન્ડપોઇન્ટ.", + "endpointCountTokensNote": "આપેલ સંદેશ પેલોડ માટે ટોકન્સની ગણતરી કરો.", + "endpointFilesNote": "મલ્ટિમોડલ ઇનપુટ્સ માટે ફાઇલ અપલોડ.", + "endpointBatchesNote": "મોટા પાયાની API વિનંતીઓ માટે બૅચ પ્રોસેસિંગ.", + "endpointWsNote": "રીઅલ-ટાઇમ સ્ટ્રીમિંગ માટે WebSocket એન્ડપોઇન્ટ.", + "mgmtProvidersListNote": "તમામ નોંધાયેલ પ્રદાતા કનેક્શન્સની સૂચિ બનાવો.", + "mgmtProvidersCreateNote": "નવું પ્રદાતા કનેક્શન બનાવો.", + "mgmtProvidersUpdateNote": "હાલના પ્રદાતા કનેક્શનને અપડેટ કરો.", + "mgmtProvidersDeleteNote": "પ્રદાતા કનેક્શન કાઢી નાખો.", + "mgmtProvidersTestNote": "પ્રદાતા માટે કનેક્ટિવિટી અને પ્રમાણીકરણનું પરીક્ષણ કરો.", + "mgmtProvidersModelsNote": "ચોક્કસ પ્રદાતા માટે ઉપલબ્ધ મોડેલ્સની સૂચિ બનાવો.", + "mgmtSettingsGetNote": "વર્તમાન એપ્લિકેશન સેટિંગ્સ મેળવો.", + "mgmtSettingsUpdateNote": "એપ્લિકેશન સેટિંગ્સ અપડેટ કરો.", + "mgmtPayloadRulesGetNote": "પેલોડ રૂપાંતરણના નિયમો મેળવો.", + "mgmtPayloadRulesUpdateNote": "પેલોડ રૂપાંતરણના નિયમો અપડેટ કરો.", + "mcpToolsTitle": "MCP ટૂલ્સ", + "mcpToolsDescription": "OmniRoute એજન્ટ ઓર્કેસ્ટ્રેશન માટે Model Context Protocol દ્વારા {count} ટૂલ્સ ઉપલબ્ધ કરાવે છે.", + "mcpToolsCount": "{count} ટૂલ્સ", + "mcpToolsToc": "MCP ટૂલ્સ", + "mcpToolsRoutingTitle": "રાઉટિંગ અને શોધ", + "mcpToolsRoutingDesc": "હેલ્થ ચેક્સ, કોમ્બો મેનેજમેન્ટ, ક્વોટા મોનિટરિંગ, ખર્ચ રિપોર્ટિંગ અને મોડેલ કૅટલૉગ ઍક્સેસ.", + "mcpToolsOperationsTitle": "ઓપરેશન્સ અને વ્યૂહરચના", + "mcpToolsOperationsDesc": "રૂટ સિમ્યુલેશન, બજેટ ગાર્ડ્સ, વ્યૂહરચના સ્વિચિંગ, રેઝિલિયન્સ પ્રોફાઇલ્સ અને પ્રદાતા મેટ્રિક્સ.", + "mcpToolsCacheTitle": "કૅશ મેનેજમેન્ટ", + "mcpToolsCacheDesc": "કૅશના આંકડા જુઓ અને સિમેન્ટિક અથવા સિગ્નેચર કૅશ સાફ કરો.", "mcpToolsCompressionTitle": "કમ્પ્રેશન એન્જિન્સ", "mcpToolsCompressionDesc": "RTK/Brotli કમ્પ્રેશન, સ્વેપ એન્જિનને ગોઠવો અને કોમ્બો દ્વારા કમ્પ્રેશન એનાલિટિક્સનું નિરીક્ષણ કરો.", "mcpToolsOneProxyTitle": "1 પ્રોક્સી / ટનલ", "mcpToolsOneProxyDesc": "આઉટબાઉન્ડ પ્રોક્સીઓનું સંચાલન કરો, રહેણાંક IP ને ફેરવો અને પ્રોક્સી સ્વાસ્થ્યનું નિરીક્ષણ કરો.", - "mcpToolsMemoryTitle": "Memory", - "mcpToolsMemoryDesc": "Search, add, and clear persistent conversational memory entries.", - "mcpToolsSkillsTitle": "Skills", - "mcpToolsSkillsDesc": "List, enable, execute, and monitor custom skill executions.", - "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "Automatically create optimized combos based on your connected providers, usage patterns, and model capabilities.", - "featureSearchTitle": "Web Search", - "featureSearchText": "Integrated web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity) including analytics and cost tracking.", - "featureMemoryTitle": "Memory System", - "featureMemoryText": "Persistent conversational memory with extraction, injection, retrieval, and summarization across sessions.", - "featureSkillsTitle": "Skills Framework", - "featureSkillsText": "Extensible skill system with built-in and custom skills, sandbox execution, request interception, and context injection.", - "featureAcpTitle": "Agent Communication", - "featureAcpText": "Agent Communication Protocol (ACP) registry for managing agent-to-agent workflows and tool orchestration.", - "protocolAcpTitle": "ACP (Agent Communication)", - "protocolAcpDesc": "Register and manage agents via the ACP registry for inter-agent communication and tool sharing.", - "protocolAcpStep1": "Navigate to Dashboard → Agents to view registered ACP agents.", - "protocolAcpStep2": "Register new agents with capabilities and endpoint configuration.", - "protocolAcpStep3": "Use CLI Tools to configure agent communication channels.", + "mcpToolsMemoryTitle": "મેમરી", + "mcpToolsMemoryDesc": "કાયમી વાર્તાલાપ મેમરી એન્ટ્રીઓ શોધો, ઉમેરો અને સાફ કરો.", + "mcpToolsSkillsTitle": "સ્કિલ્સ", + "mcpToolsSkillsDesc": "કસ્ટમ સ્કિલ એક્ઝિક્યુશન્સની સૂચિ બનાવો, સક્ષમ કરો, ચલાવો અને મોનિટર કરો.", + "featureAutoComboTitle": "ઑટો-કોમ્બો", + "featureAutoComboText": "તમારા કનેક્ટેડ પ્રદાતાઓ, ઉપયોગની પેટર્ન અને મોડેલ ક્ષમતાઓના આધારે ઑપ્ટિમાઇઝ્ડ કોમ્બોઝ આપમેળે બનાવો.", + "featureSearchTitle": "વેબ શોધ", + "featureSearchText": "વિશ્લેષણ અને ખર્ચ ટ્રૅકિંગ સહિત 5 પ્રદાતાઓ (Serper, Brave, Exa, Tavily, Perplexity) સાથે સંકલિત વેબ શોધ.", + "featureMemoryTitle": "મેમરી સિસ્ટમ", + "featureMemoryText": "સત્રો દરમિયાન નિષ્કર્ષણ, ઇન્જેક્શન, પુનઃપ્રાપ્તિ અને સારાંશ સાથે કાયમી વાર્તાલાપ મેમરી.", + "featureSkillsTitle": "સ્કિલ્સ ફ્રેમવર્ક", + "featureSkillsText": "બિલ્ટ-ઇન અને કસ્ટમ સ્કિલ્સ, સેન્ડબોક્સ એક્ઝિક્યુશન, રિક્વેસ્ટ ઇન્ટરસેપ્શન અને કોન્ટેક્સ્ટ ઇન્જેક્શન સાથેની વિસ્તારી શકાય તેવી સ્કિલ સિસ્ટમ.", + "featureAcpTitle": "એજન્ટ સંચાર", + "featureAcpText": "એજન્ટ-થી-એજન્ટ વર્કફ્લો અને ટૂલ ઓર્કેસ્ટ્રેશનનું સંચાલન કરવા માટેની એજન્ટ કમ્યુનિકેશન પ્રોટોકોલ (ACP) રજિસ્ટ્રી.", + "protocolAcpTitle": "ACP (એજન્ટ સંચાર)", + "protocolAcpDesc": "આંતર-એજન્ટ સંચાર અને ટૂલ શેરિંગ માટે ACP રજિસ્ટ્રી મારફતે એજન્ટોની નોંધણી અને સંચાલન કરો.", + "protocolAcpStep1": "નોંધાયેલા ACP એજન્ટો જોવા માટે ડૅશબોર્ડ → એજન્ટ્સ પર જાઓ.", + "protocolAcpStep2": "ક્ષમતાઓ અને એન્ડપોઇન્ટ કન્ફિગરેશન સાથે નવા એજન્ટોની નોંધણી કરો.", + "protocolAcpStep3": "એજન્ટ સંચાર ચૅનલો કન્ફિગર કરવા માટે CLI ટૂલ્સનો ઉપયોગ કરો.", "metadataTitleTemplate": "%s — ઓમ્નીરૂટ દસ્તાવેજો", "metadataDefaultTitle": "ઓમ્નીરૂટ દસ્તાવેજીકરણ", "metadataDescription": "OmniRoute AI ગેટવે માટે વ્યાપક દસ્તાવેજીકરણ — સેટઅપ, API, સંકોચન, ડિપ્લોયમેન્ટ, અને વધુ.", @@ -10276,95 +10283,95 @@ } }, "legal": { - "privacyPolicy": "Privacy Policy", - "termsOfService": "Terms of Service", - "providerConfigurations": "Provider configurations", - "apiKeys": "API keys", - "usageLogs": "Usage logs", - "applicationSettings": "Application settings", - "viewExportAnalytics": "View and export usage analytics", - "clearHistory": "Clear usage history at any time", - "configureRetention": "Configure log retention policies", - "backupRestore": "Back up and restore your database", - "privacyMetadataTitle": "Privacy Policy | OmniRoute", - "privacyMetadataDescription": "Privacy policy for the OmniRoute AI API proxy router.", - "termsMetadataTitle": "Terms of Service | OmniRoute", - "termsMetadataDescription": "Terms of service for the OmniRoute AI API proxy router.", - "backToHome": "Back to home", - "lastUpdated": "Last updated: {date}", - "policyLastUpdatedDate": "February 13, 2026", + "privacyPolicy": "ગોપનીયતા નીતિ", + "termsOfService": "સેવાની શરતો", + "providerConfigurations": "પ્રદાતા કન્ફિગરેશન્સ", + "apiKeys": "API કીઝ", + "usageLogs": "વપરાશ લૉગ્સ", + "applicationSettings": "ઍપ્લિકેશન સેટિંગ્સ", + "viewExportAnalytics": "વપરાશ વિશ્લેષણ જુઓ અને નિકાસ કરો", + "clearHistory": "કોઈપણ સમયે વપરાશ ઇતિહાસ સાફ કરો", + "configureRetention": "લૉગ જાળવણી નીતિઓ કન્ફિગર કરો", + "backupRestore": "તમારા ડેટાબેઝનો બૅકઅપ લો અને તેને પુનઃસ્થાપિત કરો", + "privacyMetadataTitle": "ગોપનીયતા નીતિ | OmniRoute", + "privacyMetadataDescription": "OmniRoute AI API પ્રૉક્સી રાઉટર માટેની ગોપનીયતા નીતિ.", + "termsMetadataTitle": "સેવાની શરતો | OmniRoute", + "termsMetadataDescription": "OmniRoute AI API પ્રૉક્સી રાઉટર માટેની સેવાની શરતો.", + "backToHome": "હોમ પર પાછા જાઓ", + "lastUpdated": "છેલ્લે અપડેટ કર્યું: {date}", + "policyLastUpdatedDate": "13 ફેબ્રુઆરી, 2026", "listSeparator": "-", - "questionsVisit": "Questions? Visit our", - "githubRepository": "GitHub repository", - "privacySection1Title": "1. Local-First Architecture", - "privacySection1Text": "OmniRoute is designed as a local-first application. All data processing and storage occurs entirely on your machine. There is no centralized server collecting your information.", - "privacySection2Title": "2. Data We Store", - "privacyDataStoredIn": "The following data is stored locally in", - "privacyDataProviderConfigurationsDesc": "connection URLs, provider types, and priority settings", - "privacyDataApiKeysDesc": "encrypted and stored locally for authenticating with AI providers", - "privacyDataUsageLogsDesc": "request counts, token usage, model names, timestamps, and response times", - "privacyDataApplicationSettingsDesc": "theme preferences, routing strategy, and combo configurations", - "privacySection3Title": "3. No Telemetry", - "privacySection3Text": "OmniRoute does not collect telemetry, analytics, or crash reports. No data is sent to us or any third party. Your usage patterns, API calls, and configurations remain entirely private.", - "privacySection4Title": "4. Third-Party AI Providers", - "privacySection4Text": "When you make API calls through OmniRoute, your requests are forwarded to the AI providers you have configured (for example: OpenAI, Anthropic, Google). These providers have their own privacy policies that govern how they handle your data. Please review:", - "privacyOpenAiPolicy": "OpenAI Privacy Policy", - "privacyAnthropicPolicy": "Anthropic Privacy Policy", - "privacyGooglePolicy": "Google Privacy Policy", - "privacySection5Title": "5. Cloud Sync (Optional)", - "privacySection5Text": "If you enable the optional cloud sync feature, provider configurations and API keys may be transmitted to a configured cloud endpoint. This feature is disabled by default and requires explicit opt-in.", - "privacySection6Title": "6. Logging", - "privacyLoggingIntro": "Request logs can be configured through the dashboard settings. You can:", - "privacySection7Title": "7. Your Rights", - "privacySection7TextStart": "Since all data is stored locally, you have full control. You can delete your data at any time by removing the", - "privacySection7TextEnd": "directory or using the database backup and restore features in the dashboard.", - "termsSection1Title": "1. Overview", - "termsSection1Text": "OmniRoute is a local-first AI API proxy router that operates entirely on your machine. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "termsSection2Title": "2. User Responsibilities", - "termsResponsibilityApiKeys": "You are solely responsible for managing your own API keys and credentials for third-party AI providers (OpenAI, Anthropic, Google, etc.).", - "termsResponsibilityCompliance": "You must comply with the terms of service of each AI provider whose API you access through OmniRoute.", - "termsResponsibilitySecurity": "You are responsible for the security of your local OmniRoute installation, including setting a password and restricting network access.", - "termsSection3Title": "3. How It Works", - "termsSection3Text": "OmniRoute acts as an intermediary proxy. API calls sent to OmniRoute are translated and forwarded to your configured AI providers. OmniRoute does not modify the content of your requests or responses beyond the necessary protocol translation.", - "termsSection4Title": "4. Data Handling", - "termsDataStoredLocally": "All data is stored locally on your machine in a SQLite database.", - "termsNoTransmission": "OmniRoute does not transmit any data to external servers unless you explicitly enable cloud sync features.", - "termsDataLocationText": "Usage logs, API keys, and configuration are stored in", - "termsSection5Title": "5. Disclaimer", - "termsSection5Text": "OmniRoute is provided \"as is\" without warranty of any kind. We are not responsible for any costs incurred through API usage, service disruptions, or data loss. Always maintain backups of your configuration.", - "termsSection6Title": "6. Open Source", - "termsSection6Text": "OmniRoute is open-source software. You are free to inspect, modify, and distribute it under the terms of its license." + "questionsVisit": "પ્રશ્નો છે? અમારી મુલાકાત લો", + "githubRepository": "GitHub રિપોઝિટરી", + "privacySection1Title": "1. લોકલ-ફર્સ્ટ આર્કિટેક્ચર", + "privacySection1Text": "OmniRoute ને લોકલ-ફર્સ્ટ ઍપ્લિકેશન તરીકે ડિઝાઇન કરવામાં આવ્યું છે. તમામ ડેટા પ્રોસેસિંગ અને સ્ટોરેજ સંપૂર્ણપણે તમારા મશીન પર થાય છે. તમારી માહિતી એકત્ર કરતું કોઈ કેન્દ્રીય સર્વર નથી.", + "privacySection2Title": "2. અમે સંગ્રહિત કરતા ડેટા", + "privacyDataStoredIn": "નીચેનો ડેટા સ્થાનિક રીતે સંગ્રહિત થાય છે", + "privacyDataProviderConfigurationsDesc": "કનેક્શન URLs, પ્રદાતાના પ્રકારો અને પ્રાથમિકતા સેટિંગ્સ", + "privacyDataApiKeysDesc": "AI પ્રદાતાઓ સાથે પ્રમાણીકરણ માટે એન્ક્રિપ્ટ કરીને સ્થાનિક રીતે સંગ્રહિત કરવામાં આવે છે", + "privacyDataUsageLogsDesc": "રિક્વેસ્ટની સંખ્યા, ટોકનનો વપરાશ, મોડલનાં નામ, ટાઇમસ્ટૅમ્પ્સ અને પ્રતિભાવ સમય", + "privacyDataApplicationSettingsDesc": "થીમ પસંદગીઓ, રાઉટિંગ વ્યૂહરચના અને કૉમ્બો કન્ફિગરેશન્સ", + "privacySection3Title": "3. કોઈ ટેલિમેટ્રી નહીં", + "privacySection3Text": "OmniRoute ટેલિમેટ્રી, વિશ્લેષણ અથવા ક્રૅશ રિપોર્ટ્સ એકત્ર કરતું નથી. અમને કે કોઈપણ તૃતીય પક્ષને કોઈ ડેટા મોકલવામાં આવતો નથી. તમારી વપરાશ પદ્ધતિઓ, API કૉલ્સ અને કન્ફિગરેશન્સ સંપૂર્ણપણે ખાનગી રહે છે.", + "privacySection4Title": "4. તૃતીય-પક્ષ AI પ્રદાતાઓ", + "privacySection4Text": "જ્યારે તમે OmniRoute મારફતે API કૉલ્સ કરો છો, ત્યારે તમારી રિક્વેસ્ટ્સ તમે કન્ફિગર કરેલા AI પ્રદાતાઓને મોકલવામાં આવે છે (ઉદાહરણ તરીકે: OpenAI, Anthropic, Google). આ પ્રદાતાઓની પોતાની ગોપનીયતા નીતિઓ છે, જે તેઓ તમારા ડેટાને કેવી રીતે સંભાળે છે તે નિયંત્રિત કરે છે. કૃપા કરીને સમીક્ષા કરો:", + "privacyOpenAiPolicy": "OpenAI ગોપનીયતા નીતિ", + "privacyAnthropicPolicy": "Anthropic ગોપનીયતા નીતિ", + "privacyGooglePolicy": "Google ગોપનીયતા નીતિ", + "privacySection5Title": "5. ક્લાઉડ સિંક (વૈકલ્પિક)", + "privacySection5Text": "જો તમે વૈકલ્પિક ક્લાઉડ સિંક સુવિધા સક્ષમ કરો છો, તો પ્રદાતા ગોઠવણીઓ અને API કીઓ ગોઠવેલા ક્લાઉડ એન્ડપોઇન્ટ પર મોકલવામાં આવી શકે છે. આ સુવિધા મૂળભૂત રીતે અક્ષમ હોય છે અને તેને સ્પષ્ટ સંમતિથી સક્ષમ કરવી જરૂરી છે.", + "privacySection6Title": "6. લૉગિંગ", + "privacyLoggingIntro": "વિનંતી લૉગ્સ ડૅશબોર્ડ સેટિંગ્સ દ્વારા ગોઠવી શકાય છે. તમે આ કરી શકો છો:", + "privacySection7Title": "7. તમારા અધિકારો", + "privacySection7TextStart": "તમામ ડેટા સ્થાનિક રીતે સંગ્રહિત હોવાથી, તેના પર તમારું સંપૂર્ણ નિયંત્રણ છે. તમે કોઈપણ સમયે આને દૂર કરીને તમારો ડેટા કાઢી શકો છો:", + "privacySection7TextEnd": "ડિરેક્ટરી અથવા ડૅશબોર્ડમાં ડેટાબેઝ બૅકઅપ અને પુનઃસ્થાપન સુવિધાઓનો ઉપયોગ કરીને.", + "termsSection1Title": "1. વિહંગાવલોકન", + "termsSection1Text": "OmniRoute એક સ્થાનિક-પ્રથમ AI API પ્રૉક્સી રાઉટર છે, જે સંપૂર્ણપણે તમારા મશીન પર કાર્ય કરે છે. તે લોડ બૅલેન્સિંગ, ફેલઓવર અને વપરાશ ટ્રૅકિંગ સાથે વિનંતીઓને અનેક AI પ્રદાતાઓ સુધી રૂટ કરે છે.", + "termsSection2Title": "2. વપરાશકર્તાની જવાબદારીઓ", + "termsResponsibilityApiKeys": "તૃતીય-પક્ષ AI પ્રદાતાઓ (OpenAI, Anthropic, Google, વગેરે) માટેની તમારી પોતાની API કીઓ અને ઓળખપત્રોનું સંચાલન કરવા માટે માત્ર તમે જ જવાબદાર છો.", + "termsResponsibilityCompliance": "તમે OmniRoute દ્વારા જે AI પ્રદાતાની API ઍક્સેસ કરો છો, તેના દરેક સેવા નિયમોનું પાલન કરવું આવશ્યક છે.", + "termsResponsibilitySecurity": "પાસવર્ડ સેટ કરવા અને નેટવર્ક ઍક્સેસને પ્રતિબંધિત કરવા સહિત, તમારા સ્થાનિક OmniRoute ઇન્સ્ટોલેશનની સુરક્ષા માટે તમે જવાબદાર છો.", + "termsSection3Title": "3. તે કેવી રીતે કાર્ય કરે છે", + "termsSection3Text": "OmniRoute મધ્યસ્થી પ્રૉક્સી તરીકે કાર્ય કરે છે. OmniRouteને મોકલાયેલા API કૉલ્સનું રૂપાંતરણ કરીને તેને તમારા ગોઠવેલા AI પ્રદાતાઓને મોકલવામાં આવે છે. આવશ્યક પ્રોટોકૉલ રૂપાંતરણ સિવાય OmniRoute તમારી વિનંતીઓ અથવા પ્રતિસાદોની સામગ્રીમાં ફેરફાર કરતું નથી.", + "termsSection4Title": "4. ડેટાનું સંચાલન", + "termsDataStoredLocally": "તમામ ડેટા તમારા મશીન પર SQLite ડેટાબેઝમાં સ્થાનિક રીતે સંગ્રહિત થાય છે.", + "termsNoTransmission": "જ્યાં સુધી તમે ક્લાઉડ સિંક સુવિધાઓ સ્પષ્ટપણે સક્ષમ ન કરો ત્યાં સુધી OmniRoute કોઈપણ ડેટા બાહ્ય સર્વરો પર મોકલતું નથી.", + "termsDataLocationText": "વપરાશ લૉગ્સ, API કીઓ અને ગોઠવણી અહીં સંગ્રહિત થાય છે:", + "termsSection5Title": "5. અસ્વીકરણ", + "termsSection5Text": "OmniRoute કોઈપણ પ્રકારની વૉરંટી વિના \"જેવું છે તેવું\" પ્રદાન કરવામાં આવે છે. API વપરાશથી થયેલા કોઈપણ ખર્ચ, સેવામાં વિક્ષેપ અથવા ડેટાની ખોટ માટે અમે જવાબદાર નથી. તમારી ગોઠવણીના બૅકઅપ હંમેશાં જાળવી રાખો.", + "termsSection6Title": "6. ઓપન સોર્સ", + "termsSection6Text": "OmniRoute ઓપન-સોર્સ સૉફ્ટવેર છે. તેના લાઇસન્સની શરતો હેઠળ તમે તેનું નિરીક્ષણ, ફેરફાર અને વિતરણ કરવા માટે સ્વતંત્ર છો." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI એજન્ટ્સ", + "description": "તમારી સિસ્ટમ પર ઇન્સ્ટોલ કરેલા CLI એજન્ટ્સ શોધો. આપમેળે શોધ માટે કસ્ટમ એજન્ટ્સ ઉમેરો.", + "refresh": "રિફ્રેશ કરો", + "installed": "ઇન્સ્ટોલ કરેલું", + "notFound": "મળ્યું નથી", + "builtIn": "બિલ્ટ-ઇન", + "custom": "કસ્ટમ", + "remove": "દૂર કરો", + "addCustomAgent": "કસ્ટમ એજન્ટ ઉમેરો", + "addCustomAgentDesc": "શોધ માટે કોઈપણ CLI ટૂલની નોંધણી કરો. રિફ્રેશ કરવા પર તે આપમેળે સ્કૅન થશે.", + "agentName": "એજન્ટનું નામ", + "binaryName": "બાઇનરીનું નામ", + "versionCommand": "વર્ઝન કમાન્ડ", + "spawnArgs": "સ્પૉન આર્ગ્યુમેન્ટ્સ", + "addAgent": "એજન્ટ ઉમેરો", + "scanning": "CLI એજન્ટ્સ માટે સિસ્ટમ સ્કૅન કરી રહ્યું છે...", + "opencodeIntegration": "OpenCode એકીકરણ", + "opencodeDetected": "opencode {version} મળ્યું", + "opencodeDesc": "તમારા OmniRoute બેઝ URL અને બધા ઉપલબ્ધ મૉડલ્સ સાથે ઉપયોગ માટે તૈયાર {configFile} જનરેટ કરો — તેને તમારા પ્રોજેક્ટ રૂટમાં મૂકો અને {command} ચલાવો.", + "downloadConfig": "{file} ડાઉનલોડ કરો", + "downloaded": "ડાઉનલોડ થઈ ગયું!", + "setupGuideTitle": "સેટઅપ માર્ગદર્શિકા", + "openCliTools": "CLI ટૂલ્સ ખોલો", + "setupGuideDetectCliTitle": "ઇન્સ્ટોલ કરેલા CLI શોધો", + "setupGuideDetectCliDesc": "CLI ઇન્સ્ટોલ અથવા અપડેટ કર્યા પછી Refresh પર ક્લિક કરો, જેથી OmniRoute બાઇનરીઝ અને વર્ઝન્સ ફરીથી સ્કૅન કરી શકે.", + "setupGuideCustomAgentTitle": "કસ્ટમ બાઇનરી રજીસ્ટર કરો", + "setupGuideCustomAgentDesc": "જ્યારે તમારું CLI બિલ્ટ-ઇન સૂચિમાં ન હોય, ત્યારે Add Custom Agent નો ઉપયોગ કરો. બાઇનરીનું નામ અને વર્ઝન કમાન્ડ આપો.", + "setupGuideCommandMissingTitle": "'command not found' ઠીક કરો", + "setupGuideCommandMissingDesc": "ખાતરી કરો કે CLI કમાન્ડ PATH માં હાજર છે, નવું ટર્મિનલ સત્ર ખોલો અને Refresh ફરીથી ચલાવો.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10491,148 +10498,148 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "સરળ ચેટ", + "streaming": "સ્ટ્રીમિંગ", + "system-prompt": "સિસ્ટમ પ્રોમ્પ્ટ", + "thinking": "વિચાર પ્રક્રિયા", + "tool-calling": "ટૂલ કૉલિંગ", + "multi-turn": "બહુ-ચરણ", "vision": "દ્રષ્ટિ", "schema-coercion": "સ્કીમા બળજબરી" }, "templateDescriptions": { - "simple-chat": "Basic chat template with system message", - "streaming": "Template for streaming responses", - "system-prompt": "Template with custom system prompt", - "thinking": "Template with reasoning/thinking budget", - "tool-calling": "Template for tool/function calling", - "multi-turn": "Template for multi-turn conversations", + "simple-chat": "સિસ્ટમ સંદેશ સાથેનું મૂળભૂત ચેટ ટેમ્પલેટ", + "streaming": "સ્ટ્રીમિંગ પ્રતિસાદો માટેનું ટેમ્પલેટ", + "system-prompt": "કસ્ટમ સિસ્ટમ પ્રોમ્પ્ટ સાથેનું ટેમ્પલેટ", + "thinking": "તર્ક/વિચાર બજેટ સાથેનું ટેમ્પલેટ", + "tool-calling": "ટૂલ/ફંક્શન કૉલિંગ માટેનું ટેમ્પલેટ", + "multi-turn": "બહુ-ચરણ વાર્તાલાપો માટેનું ટેમ્પલેટ", "vision": "ઇમેજ ઇનપુટ સાથે મલ્ટિમોડલ ટેમ્પલેટ", "schema-coercion": "સ્ટ્રક્ચર્ડ-આઉટપુટ / JSON સ્કીમા અમલીકરણ" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful AI assistant.", - "userGreeting": "Hello! How can I help you today?" + "system": "તમે એક મદદરૂપ AI સહાયક છો.", + "userGreeting": "નમસ્તે! આજે હું તમને કેવી રીતે મદદ કરી શકું?" }, "streaming": { - "prompt": "Write a story about" + "prompt": "આ વિષય પર વાર્તા લખો" }, "systemPrompt": { - "question": "What is the meaning of life?", - "systemInstruction": "Provide a thoughtful, philosophical answer." + "question": "જીવનનો અર્થ શું છે?", + "systemInstruction": "વિચારશીલ, દાર્શનિક જવાબ આપો." }, "thinking": { - "question": "Explain quantum computing" + "question": "ક્વોન્ટમ કમ્પ્યુટિંગ સમજાવો" }, "toolCalling": { - "cityNameDescription": "The name of the city to get weather for", - "toolDescription": "Get current weather for a location", - "userWeather": "What's the weather in Tokyo?" + "cityNameDescription": "જે શહેરનું હવામાન મેળવવું છે તેનું નામ", + "toolDescription": "કોઈ સ્થાનનું વર્તમાન હવામાન મેળવો", + "userWeather": "ટોક્યોમાં હવામાન કેવું છે?" }, "multiTurn": { - "system": "You are a helpful assistant.", - "assistantExample": "I'd be happy to help you with that.", - "userInitial": "I need help with", - "userFollowUp": "Can you elaborate on that?" + "system": "તમે એક મદદરૂપ સહાયક છો.", + "assistantExample": "તેમાં તમારી મદદ કરવામાં મને આનંદ થશે.", + "userInitial": "મને આમાં મદદ જોઈએ છે", + "userFollowUp": "શું તમે તેના વિશે વધુ વિગત આપી શકો?" } }, "cache": { - "title": "Cache Management", - "description": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "refresh": "Refresh", - "clearAll": "Clear Semantic Cache", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "title": "કૅશ મેનેજમેન્ટ", + "description": "પ્રદાતાના પ્રોમ્પ્ટ કૅશની કાર્યક્ષમતા અને સ્થાનિક સેમેન્ટિક પ્રતિસાદના પુનઃઉપયોગનું નિરીક્ષણ કરો.", + "refresh": "રીફ્રેશ કરો", + "clearAll": "સેમેન્ટિક કૅશ સાફ કરો", + "memoryEntries": "મેમરી એન્ટ્રીઓ", + "memoryEntriesSub": "ઇન-મેમરી LRU", + "dbEntries": "DB એન્ટ્રીઓ", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "કૅશ હિટ્સ", + "cacheHitsSub": "કુલ {total} માંથી", + "tokensSaved": "બચાવેલા ટોકન્સ", + "tokensSavedSub": "હિટ્સ પરથી અંદાજિત", + "hitRate": "હિટ દર", + "performance": "કૅશ પ્રદર્શન", + "autoRefresh": "દર {seconds}s એ આપમેળે રીફ્રેશ થાય છે", + "hits": "હિટ્સ", + "misses": "મિસિસ", + "total": "કુલ", + "behavior": "કૅશની વર્તણૂક", + "behaviorDeterministic": "ફક્ત temperature=0 ધરાવતી નોન-સ્ટ્રીમિંગ વિનંતીઓ કૅશ કરવામાં આવે છે.", + "behaviorBypass": "હેડર {header} વડે બાયપાસ કરો.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", - "clearSuccess": "Semantic cache cleared. {count} entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "behaviorTtl": "ડિફૉલ્ટ TTL: 30 મિનિટ. {envVar} દ્વારા ગોઠવો.", + "idempotency": "આઇડેમ્પોટન્સી લેયર", + "activeDedupKeys": "સક્રિય ડિડુપ કીઝ", + "dedupWindow": "ડિડુપ વિન્ડો", + "clearSuccess": "સેમેન્ટિક કૅશ સાફ કરવામાં આવ્યો. {count} એન્ટ્રીઓ દૂર કરવામાં આવી.", + "clearError": "કૅશ સાફ કરવામાં નિષ્ફળતા.", + "unavailable": "કૅશ ઉપલબ્ધ નથી", + "unavailableDesc": "કૅશના આંકડા મેળવી શકાયા નથી. ખાતરી કરો કે સર્વર ચાલી રહ્યું છે.", "loadingCacheAria": "કેશ લોડ થઈ રહી છે", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", - "cachedTokens": "Cache Read Tokens", - "cacheCreationTokens": "Cache Write Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", - "cachedTokensRead": "Read from cache", - "cacheCreationWrite": "Written to cache", - "cacheReuseRatio": "Cache Reuse Ratio", - "cacheReuseRatioDesc": "Cache read tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "promptCache": "પ્રોમ્પ્ટ કૅશ (પ્રદાતા તરફનું)", + "semanticCache": "સેમેન્ટિક કૅશ", + "promptCacheSectionDesc": "ઉપયોગ ઇતિહાસમાંથી પ્રદાતા તરફની પ્રોમ્પ્ટ કૅશિંગ પ્રવૃત્તિ દર્શાવે છે, જેથી તમે જોઈ શકો કે કૅશ નિયંત્રણ ક્યાં સક્રિય છે અને તમને ઇનપુટનો કેટલો પુનઃઉપયોગ મળી રહ્યો છે.", + "promptTrendDesc": "છેલ્લા 24 કલાક દરમિયાન દર કલાકનું વિનંતી પ્રમાણ, કૅશ કવરેજ અને કૅશ રીડ પ્રમાણ.", + "cachedRequests": "કૅશ કરેલી વિનંતીઓ", + "cachedRequests24h": "કૅશ કરેલી વિનંતીઓ (24 કલાક)", + "cacheHitRate": "કૅશ હિટ દર", + "cacheRate": "કૅશ દર", + "cacheRateDesc": "કુલ વિનંતીઓમાંથી", + "cachedTokens": "કૅશ રીડ ટોકન્સ", + "cacheCreationTokens": "કૅશ રાઇટ ટોકન્સ", + "cacheMetrics": "પ્રોમ્પ્ટ કૅશ મેટ્રિક્સ", + "withCacheControl": "કૅશ કંટ્રોલ સાથે", + "cachedTokensRead": "કૅશમાંથી વાંચેલ", + "cacheCreationWrite": "કૅશમાં લખાયેલ", + "cacheReuseRatio": "કૅશ પુનઃઉપયોગ ગુણોત્તર", + "cacheReuseRatioDesc": "કૅશ રીડ ટોકન્સ / કુલ ઇનપુટ ટોકન્સ", + "estCostSaved": "અંદાજિત ખર્ચ બચત", + "lastUpdated": "છેલ્લે અપડેટ થયેલ", + "hoursTracked": "ટ્રૅક કરેલા કલાકો", + "busiestHour": "સૌથી વ્યસ્ત કલાક", + "peakCacheRate": "ટોચનો કૅશ દર", + "trendHour": "કલાક", + "activityVolume": "પ્રવૃત્તિ", + "requestsShort": "વિનંતીઓ", + "inputShort": "ઇનપુટ", + "cachedShort": "કૅશ થયેલ", + "writeShort": "લખાણ", + "resetting": "રીસેટ થઈ રહ્યું છે...", + "resetMetrics": "મેટ્રિક્સ રીસેટ કરો", + "byProvider": "પ્રદાતા મુજબ વિભાજન", + "providerCacheRateDesc": "દરેક પ્રદાતા કુલ ઇનપુટ ટોકન્સ, કૅશ રીડ ટોકન્સ અને કૅશ રાઇટ ટોકન્સ દર્શાવે છે, જેથી તમે મૂળ કુલ આંકડાઓ સામે પુનઃઉપયોગ ગુણોત્તર ચકાસી શકો.", "provider": "Provider", - "requests": "Requests", - "inputTokens": "Total Input Tokens", - "cachedTokensCol": "Cache Read", - "cacheCreation": "Cache Write", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "requests": "વિનંતીઓ", + "inputTokens": "કુલ ઇનપુટ ટોકન્સ", + "cachedTokensCol": "કૅશ રીડ", + "cacheCreation": "કૅશ રાઇટ", + "trend24h": "કૅશ વલણ (24 કલાક)", + "peakCached": "સૌથી વધુ કૅશ થયેલ", + "cached": "કૅશ થયેલ", + "overview": "વિહંગાવલોકન", "tableProvider": "પ્રદાતા", "tableModel": "મોડેલ", "performanceTitle": "પ્રદર્શન", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRouteનું પોતાનું નિર્ધારિત પ્રતિસાદ કૅશ. સક્ષમ હોય ત્યારે, વારંવાર આવતી નોન-સ્ટ્રીમિંગ temperature=0 વિનંતીઓ અપસ્ટ્રીમ પ્રદાતાનો સંપર્ક કર્યા વિના સ્થાનિક રીતે પૂરી કરી શકાય છે.", + "semanticCacheDisabledDesc": "સિમેન્ટિક કૅશ અક્ષમ છે. તમે Settingsમાં તેને ફરી ચાલુ ન કરો ત્યાં સુધી OmniRoute સ્થાનિક પ્રતિસાદના પુનઃઉપયોગને ટાળશે.", + "semanticEntriesDesc": "હાલમાં SQLiteમાં સંગ્રહિત કાયમી સિમેન્ટિક કૅશ રેકોર્ડ્સ. પ્રદાતા-બાજુની પ્રોમ્પ્ટ કૅશ પ્રવૃત્તિ અહીં સૂચિબદ્ધ નથી.", + "searchEntries": "એન્ટ્રીઓ શોધો...", + "search": "શોધો", + "loading": "લોડ થઈ રહ્યું છે...", + "entriesLoadError": "સિમેન્ટિક કૅશ એન્ટ્રીઓ લોડ કરવામાં નિષ્ફળતા.", + "noEntries": "કોઈ કૅશ એન્ટ્રી મળી નથી", + "noPromptCacheData": "હજુ સુધી પ્રદાતા-બાજુની કોઈ પ્રોમ્પ્ટ કૅશ પ્રવૃત્તિ નોંધાઈ નથી.", + "noTrendData": "છેલ્લા 24 કલાકમાં કોઈ પ્રોમ્પ્ટ કૅશ પ્રવૃત્તિ નોંધાઈ નથી.", + "signature": "હસ્તાક્ષર", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "બનાવેલ", + "expires": "સમાપ્તિ", + "actions": "ક્રિયાઓ", + "deduplicatedRequests": "ડુપ્લિકેટ દૂર કરેલી વિનંતીઓ", + "savedCalls": "બચાવેલા API કૉલ્સ", + "totalProcessed": "પ્રક્રિયા કરેલી કુલ વિનંતીઓ", + "disabled": "અક્ષમ", + "totalRequests": "કુલ વિનંતીઓ", "reasoningCache": "રિઝનિંગ રિપ્લે", "reasoningCacheDesc": "મલ્ટિ-ટર્ન ટૂલ કૉલિંગ ફ્લો માટે મોડલ થિંકિંગ સાચવે છે", "reasoningEntries": "સક્રિય પ્રવેશો", @@ -10669,56 +10676,56 @@ "minutesAgo": "{minutes}m પહેલાં", "hoursAgo": "{hours}h પહેલાં", "daysAgo": "{days}d પહેલાં", - "entries": "Entries" + "entries": "એન્ટ્રીઓ" }, "proxyConfigModal": { - "levelGlobal": "Global", - "levelProvider": "Provider", - "levelCombo": "Combo", - "levelKey": "Key", - "levelDirect": "Direct (no proxy)", - "titleGlobal": "Global Proxy Configuration", - "titleLevel": "{level} Proxy — {label}", - "loading": "Loading proxy configuration...", - "inheritingFrom": "Inheriting from", - "source": "Source", - "savedProxy": "Saved Proxy", - "custom": "Custom", - "selectSavedProxyPlaceholder": "Select saved proxy...", - "proxyType": "Proxy Type", - "host": "Host", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", - "port": "Port", - "authOptional": "Authentication (optional)", - "username": "Username", - "usernamePlaceholder": "Username", - "password": "Password", - "passwordPlaceholder": "Password", - "connected": "Connected", + "levelGlobal": "વૈશ્વિક", + "levelProvider": "પ્રદાતા", + "levelCombo": "કોમ્બો", + "levelKey": "કી", + "levelDirect": "સીધું (પ્રોક્સી વિના)", + "titleGlobal": "વૈશ્વિક પ્રોક્સી ગોઠવણી", + "titleLevel": "{level} પ્રોક્સી — {label}", + "loading": "પ્રોક્સી ગોઠવણી લોડ થઈ રહી છે...", + "inheritingFrom": "આમાંથી વારસામાં પ્રાપ્ત", + "source": "સ્રોત", + "savedProxy": "સાચવેલ પ્રોક્સી", + "custom": "કસ્ટમ", + "selectSavedProxyPlaceholder": "સાચવેલ પ્રોક્સી પસંદ કરો...", + "proxyType": "પ્રોક્સીનો પ્રકાર", + "host": "હોસ્ટ", + "hostPlaceholder": "1.2.3.4 અથવા proxy.example.com", + "port": "પોર્ટ", + "authOptional": "પ્રમાણીકરણ (વૈકલ્પિક)", + "username": "વપરાશકર્તા નામ", + "usernamePlaceholder": "વપરાશકર્તા નામ", + "password": "પાસવર્ડ", + "passwordPlaceholder": "પાસવર્ડ", + "connected": "કનેક્ટ થયેલ", "ip": "IP:", - "connectionFailed": "Connection failed", - "testConnection": "Test connection", - "clear": "Clear", - "cancel": "Cancel", - "save": "Save", - "errorSelectSavedProxy": "Please select a saved proxy first.", - "errorSelectProxyFirst": "Please select a proxy first.", - "errorProxyNotFound": "Selected proxy not found.", - "errorClearSavedProxy": "Failed to clear saved proxy", - "errorSaveProxy": "Failed to save proxy configuration", - "errorClearProxy": "Failed to clear proxy configuration", - "errorSocks5Hidden": "SOCKS5 is configured but hidden because NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false." + "connectionFailed": "કનેક્શન નિષ્ફળ ગયું", + "testConnection": "કનેક્શનનું પરીક્ષણ કરો", + "clear": "સાફ કરો", + "cancel": "રદ કરો", + "save": "સાચવો", + "errorSelectSavedProxy": "કૃપા કરીને પહેલાં સાચવેલ પ્રોક્સી પસંદ કરો.", + "errorSelectProxyFirst": "કૃપા કરીને પહેલાં પ્રોક્સી પસંદ કરો.", + "errorProxyNotFound": "પસંદ કરેલ પ્રોક્સી મળી નથી.", + "errorClearSavedProxy": "સાચવેલ પ્રોક્સી સાફ કરવામાં નિષ્ફળ", + "errorSaveProxy": "પ્રોક્સી કૉન્ફિગરેશન સાચવવામાં નિષ્ફળ", + "errorClearProxy": "પ્રોક્સી કૉન્ફિગરેશન સાફ કરવામાં નિષ્ફળ", + "errorSocks5Hidden": "SOCKS5 કૉન્ફિગર કરેલું છે પરંતુ NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false હોવાને કારણે છુપાયેલું છે." }, "oauthModal": { - "title": "Connect {providerName}", - "waiting": "Waiting for authorization", - "completeAuthInPopup": "Complete authorization in popup.", + "title": "{providerName} સાથે કનેક્ટ કરો", + "waiting": "અધિકૃતતાની રાહ જોવાઈ રહી છે", + "completeAuthInPopup": "પૉપઅપમાં અધિકૃતતા પૂર્ણ કરો.", "popupClosedHint": "If the popup closed without redirecting back (e.g. Qoder), this dialog will auto-switch to manual URL entry mode.", - "popupBlocked": "Popup blocked? Enter URL manually", - "deviceCodeVisitUrl": "Visit the URL below and enter code:", - "deviceCodeVerificationUrl": "Verification URL", - "deviceCodeYourCode": "Your code", - "deviceCodeWaiting": "Waiting for authorization...", + "popupBlocked": "પૉપઅપ બ્લૉક થયું છે? URL મૅન્યુઅલી દાખલ કરો", + "deviceCodeVisitUrl": "નીચે આપેલા URLની મુલાકાત લો અને કોડ દાખલ કરો:", + "deviceCodeVerificationUrl": "ચકાસણી URL", + "deviceCodeYourCode": "તમારો કોડ", + "deviceCodeWaiting": "અધિકૃતતાની રાહ જોવાઈ રહી છે...", "googleLoopbackTitle": "આ સરનામેથી Google સાઇન-ઇન પૂર્ણ કરી શકાતું નથી", "googleLoopbackWhatHappens": "ગૂગલ માત્ર ત્યારે જ અધિકૃતતા કોડ પ્રકાશિત કરે છે જ્યારે {redirectUri} બ્રાઉઝર દ્વારા પહોંચવામાં આવે છે જે સાઇન-ઇનને મંજૂરી આપે છે. અહીં તે સરનામું આ કમ્પ્યુટરને દર્શાવે છે, ઓમ્નીરૂટ સર્વર પર નહીં — તેથી સંમતિ સ્ક્રીન અટકી જાય છે અને પુનઃદિશા કરવામાં આવતી નથી, અને કોપી કરવા માટે કોઈ કૉલબેક URL નથી.", "googleLoopbackRecommended": "સૂચવેલ — આ તમારા પોતાના કમ્પ્યુટરમાં ચલાવો, પછી નીચે પરિણામ પેસ્ટ કરો:", @@ -10726,7 +10733,7 @@ "googleLoopbackTunnelLabel": "અથવા SSH દ્વારા ડેશબોર્ડ પોર્ટને આગળ વધારવા અને ટનલ દ્વારા OmniRouteને ફરીથી લોડ કરો:", "googleLoopbackTunnelNote": "તમારા SSH યુઝરનેમ સાથે {userPlaceholder} બદલો, ટર્મિનલ ખોલી રાખો, પછી {localUrl} ખોલો અને ત્યાંથી ફરી કનેક્ટ કરો.", "googleLoopbackHeadlessAlt": "કોઈ સ્થાનિક કૉલબેક વિના સંપૂર્ણ હેડલેસ ઉપયોગ માટે, તમારા પોતાના Google OAuth પ્રમાણપત્રો અને એક જાહેર આધાર URL કૉન્ફિગર કરો.", - "remoteAccessInfo": "Remote access: Since you're accessing OmniRoute remotely, after authorization you'll see an error page (localhost not found). This is normal — just copy the full URL from your browser address bar and paste it below.", + "remoteAccessInfo": "રિમોટ ઍક્સેસ: તમે OmniRouteને રિમોટ રીતે ઍક્સેસ કરી રહ્યા હોવાથી, અધિકૃતતા પછી તમને એક ભૂલ પેજ દેખાશે (localhost મળ્યું નથી). આ સામાન્ય છે — ફક્ત તમારા બ્રાઉઝરના ઍડ્રેસ બારમાંથી સંપૂર્ણ URL કૉપી કરો અને તેને નીચે પેસ્ટ કરો.", "loopbackMismatchTitle": "આ સરનામેથી સાઇન-ઇન પૂર્ણ કરી શકાતું નથી", "loopbackMismatchWhatHappened": "શું થઈ રહ્યું છે", "loopbackMismatchExplanation": "લોગિનને મંજૂરી આપ્યા પછી, {providerName} હંમેશા બ્રાઉઝરને {redirectUri} પર પાછું મોકલે છે. તે સરનામું આ બ્રાઉઝર ચલાવતી કમ્પ્યુટરને દર્શાવે છે, ઓમ્નીરૂટ સર્વર પર નહીં — તેથી અધિકૃતતા કોડ ઓમ્નીરૂટ સુધી પહોંચતું નથી અને પ્રદાતા ભૂલ વિના સાઇન-ઇન નિષ્ફળ જાય છે.", @@ -10736,17 +10743,17 @@ "loopbackMismatchStep2": "આ બ્રાઉઝરમાં, ટનલ દ્વારા ઓમ્નીરૂટ ફરીથી ખોલો:", "loopbackMismatchStep3": "ત્યારે નવા ટેબમાંથી {providerName} ફરીથી કનેક્ટ કરો. હવે કૉલબેક સર્વર સુધી પહોંચે છે અને લૉગિન સામાન્ય રીતે પૂર્ણ થાય છે.", "loopbackMismatchAlternative": "SSH ઍક્સેસ નથી? જો આ પ્રદાતા ટોકન આયાત ટેબ પ્રદાન કરે છે, તો ટોકન સાથે જોડાઓ — તે માર્ગ લૂપબેક કૉલબેકનો ઉપયોગ નથી કરે.", - "step1OpenUrl": "Step 1: Open this URL in your browser", - "copy": "Copy", - "step2PasteCallback": "Step 2: Paste callback URL or authorization code here", - "step2Hint": "After authorization, paste the full callback URL. For Claude Code and Cline, you can also paste the authentication code directly, e.g. code#state.", - "connect": "Connect", - "cancel": "Cancel", - "success": "Connection successful!", - "successMessage": "Your {providerName} account has been connected.", - "done": "Done", - "error": "Connection failed", - "tryAgain": "Try again", + "step1OpenUrl": "પગલું 1: આ URL તમારા બ્રાઉઝરમાં ખોલો", + "copy": "કૉપી કરો", + "step2PasteCallback": "પગલું 2: કૉલબૅક URL અથવા અધિકૃતતા કોડ અહીં પેસ્ટ કરો", + "step2Hint": "અધિકૃતતા પછી, સંપૂર્ણ કૉલબૅક URL પેસ્ટ કરો. Claude Code અને Cline માટે, તમે પ્રમાણીકરણ કોડ સીધો પણ પેસ્ટ કરી શકો છો, ઉદાહરણ તરીકે code#state.", + "connect": "કનેક્ટ કરો", + "cancel": "રદ કરો", + "success": "કનેક્શન સફળ થયું!", + "successMessage": "તમારું {providerName} એકાઉન્ટ કનેક્ટ થઈ ગયું છે.", + "done": "પૂર્ણ", + "error": "કનેક્શન નિષ્ફળ થયું", + "tryAgain": "ફરી પ્રયાસ કરો", "errorSessionIncomplete": "OAuth સત્ર અધૂરો છે (રિડાયરેક્ટ URI અથવા કોડ વેરિફાયર ગુમ છે). કનેક્શન ફરી શરૂ કરો અને ફરી પ્રયાસ કરો.", "errorExchangeFailed": "વિનિમય નિષ્ફળ ગયો", "errorGoogleRedirectMismatch": "redirect_uri_mismatch: ડિફોલ્ટ Google OAuth ક્રેડેંશિયલ્સ ફક્ત localhost પર જ કાર્ય કરે છે. રિમોટ ઉપયોગ માટે, તમારા પોતાના OAuth ક્રેડેંશિયલ્સને પર્યાવરણ ચલોથી કન્ફિગર કરો: ANTIGRAVITY_OAUTH_CLIENT_ID અને ANTIGRAVITY_OAUTH_CLIENT_SECRET. README વિભાગ 'OAuth on a Remote Server' જુઓ.", @@ -10785,107 +10792,107 @@ }, "cursorAuthModal": { "title": "Connect Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCursor": "Reading from Cursor IDE or cursor-agent", - "tokensAutoDetected": "Tokens successfully auto-detected from Cursor IDE!", + "tabLogin": "Cursor વડે લૉગ ઇન કરો", + "tabImport": "ટોકન ઇમ્પોર્ટ કરો", + "loginDescription": "Cursorનું બ્રાઉઝર લૉગિન ખોલે છે. Dockerમાં કાર્ય કરે છે — તમારા હોસ્ટ બ્રાઉઝરમાં મંજૂરી આપો, પછી અહીં પાછા આવો.", + "loginWithCursor": "Cursor વડે લૉગ ઇન કરો", + "startingLogin": "શરૂ થઈ રહ્યું છે…", + "waitingApproval": "Cursor લૉગિનની મંજૂરીની રાહ જોવાઈ રહી છે…", + "openUrlHint": "જો બ્રાઉઝર ન ખૂલ્યું હોય:", + "openLoginLink": "લૉગિન પેજ ખોલો", + "cancelLogin": "લૉગિન રદ કરો", + "autoDetecting": "ટોકન આપમેળે શોધાઈ રહ્યા છે...", + "readingFromCursor": "Cursor IDE અથવા cursor-agentમાંથી વાંચી રહ્યું છે", + "tokensAutoDetected": "Cursor IDEમાંથી ટોકન સફળતાપૂર્વક આપમેળે શોધાઈ ગયા!", "cursorNotDetected": "Cursor IDE not detected. Please manually paste your token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Docker માં ચલાવી રહ્યા છો? Cursor સાથે લૉગિન કરવાનું પસંદ કરો. IDE ઑટો-ઇમ્પોર્ટ અને cursor-agent સામાન્ય રીતે કન્ટેનરની અંદર ઉપલબ્ધ નથી. docs/providers/CURSOR-DOCKER.md જુઓ.", + "accessToken": "ઍક્સેસ ટોકન", + "refreshToken": "રિફ્રેશ ટોકન", + "refreshTokenPlaceholder": "વૈકલ્પિક — ટોકનને આપમેળે રિફ્રેશ કરવાની સુવિધા આપે છે", "required": "*", - "accessTokenPlaceholder": "Access token will auto-populate...", - "machineId": "Machine ID", - "optional": "(optional)", - "machineIdPlaceholder": "Machine ID will auto-populate...", - "importing": "Importing...", - "importToken": "Import Token", - "cancel": "Cancel", - "errorAutoDetect": "Unable to auto-detect tokens", - "errorAutoDetectFailed": "Auto-detect tokens failed", - "errorEnterToken": "Please enter access token", - "errorImportFailed": "Import failed", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "accessTokenPlaceholder": "ઍક્સેસ ટોકન આપમેળે ભરાઈ જશે...", + "machineId": "મશીન ID", + "optional": "(વૈકલ્પિક)", + "machineIdPlaceholder": "મશીન ID આપમેળે ભરાઈ જશે...", + "importing": "ઇમ્પોર્ટ થઈ રહ્યું છે...", + "importToken": "ટોકન ઇમ્પોર્ટ કરો", + "cancel": "રદ કરો", + "errorAutoDetect": "ટોકન આપમેળે શોધી શકાયાં નથી", + "errorAutoDetectFailed": "ટોકન આપમેળે શોધવામાં નિષ્ફળતા", + "errorEnterToken": "કૃપા કરીને ઍક્સેસ ટોકન દાખલ કરો", + "errorImportFailed": "ઇમ્પોર્ટ નિષ્ફળ થયું", + "errorLoginStart": "Cursor લૉગિન શરૂ કરવામાં નિષ્ફળતા", + "errorLoginPoll": "Cursor લૉગિન નિષ્ફળ થયું", + "errorLoginTimeout": "Cursor લૉગિનનો સમય સમાપ્ત થયો — ફરી પ્રયાસ કરો" }, "pricingModal": { - "title": "Pricing Configuration", - "loading": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "ratesDescription": "All rates are in dollars per million tokens ($/1M tokens). Example: Input rate of 2.50 means $2.50 per 1,000,000 input tokens.", - "model": "Model", - "input": "Input", - "output": "Output", - "cached": "Cached", - "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "noPricingData": "No pricing data available", - "resetToDefaults": "Reset to defaults", - "cancel": "Cancel", - "saving": "Saving...", - "saveChanges": "Save changes", - "resetConfirm": "Reset all pricing to defaults? This cannot be undone.", - "errorSaveFailed": "Failed to save pricing", - "errorResetFailed": "Failed to reset pricing" + "title": "કિંમત ગોઠવણી", + "loading": "કિંમતનો ડેટા લોડ થઈ રહ્યો છે...", + "pricingRatesFormat": "કિંમત દરોનું ફોર્મેટ", + "ratesDescription": "બધા દરો પ્રતિ દસ લાખ ટોકન દીઠ ડૉલરમાં છે ($/1M tokens). ઉદાહરણ: 2.50 નો ઇનપુટ દર એટલે 1,000,000 ઇનપુટ ટોકન દીઠ $2.50.", + "model": "મોડેલ", + "input": "ઇનપુટ", + "output": "આઉટપુટ", + "cached": "કૅશ કરેલ", + "reasoning": "તર્ક", + "cacheCreation": "કૅશ નિર્માણ", + "noPricingData": "કિંમતનો કોઈ ડેટા ઉપલબ્ધ નથી", + "resetToDefaults": "ડિફૉલ્ટ પર રીસેટ કરો", + "cancel": "રદ કરો", + "saving": "સાચવાઈ રહ્યું છે...", + "saveChanges": "ફેરફારો સાચવો", + "resetConfirm": "બધી કિંમતોને ડિફૉલ્ટ પર રીસેટ કરવી છે? આ ક્રિયા પાછી ફેરવી શકાતી નથી.", + "errorSaveFailed": "કિંમત સાચવવામાં નિષ્ફળતા", + "errorResetFailed": "કિંમત રીસેટ કરવામાં નિષ્ફળતા" }, "proxyRegistry": { "selectAllProxies": "બધા પ્રોક્સી પસંદ કરો", "selectProxy": "{name} પસંદ કરો", - "title": "Proxy Registry", - "description": "Store reusable proxies and track assignments.", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", - "loading": "Loading proxies...", - "noProxies": "No saved proxies yet.", - "tableName": "Name", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", - "tableHealth": "Health (24h)", - "tableUsage": "Usage", - "tableActions": "Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", - "modalCreateTitle": "Create Proxy", - "modalEditTitle": "Edit Proxy", - "labelName": "Name", - "labelType": "Type", + "title": "પ્રૉક્સી રજિસ્ટ્રી", + "description": "ફરી વાપરી શકાય તેવી પ્રૉક્સીઓ સંગ્રહો અને સોંપણીઓ ટ્રૅક કરો.", + "importLegacy": "લેગસી ઇમ્પોર્ટ કરો", + "bulkAssign": "સામૂહિક સોંપણી", + "addProxy": "પ્રોક્સી ઉમેરો", + "loading": "પ્રોક્સીઓ લોડ થઈ રહી છે...", + "noProxies": "હજુ સુધી કોઈ પ્રોક્સી સાચવેલી નથી.", + "tableName": "નામ", + "tableEndpoint": "એન્ડપોઇન્ટ", + "tableStatus": "સ્થિતિ", + "tableHealth": "કાર્યક્ષમતા (24 કલાક)", + "tableUsage": "ઉપયોગ", + "tableActions": "ક્રિયાઓ", + "test": "પરીક્ષણ", + "edit": "સંપાદિત કરો", + "delete": "કાઢી નાખો", + "modalCreateTitle": "પ્રોક્સી બનાવો", + "modalEditTitle": "પ્રોક્સી સંપાદિત કરો", + "labelName": "નામ", + "labelType": "પ્રકાર", "labelFamily": "IP ફેમિલી", "familyAuto": "ઓટો (ડ્યુઅલ-સ્ટેક)", "familyIpv4": "માત્ર IPv4", "familyIpv6": "માત્ર IPv6", "familyHint": "ઇગ્રેસ એડ્રેસ ફેમિલી. ઓટો ડ્યુઅલ-સ્ટેક રાખે છે; IPv4/IPv6 આ પ્રોક્સીને તે ફેમિલી સાથે પિન કરે છે (માત્ર IPv6 પ્રોક્સી હેઠળ v4 લીક થતા અટકાવે છે).", - "labelHost": "Host", - "labelPort": "Port", - "labelUsername": "Username", - "labelPassword": "Password", - "labelRegion": "Region", - "labelStatus": "Status", - "labelNotes": "Notes", - "usernamePlaceholderEdit": "Leave blank to keep current username", - "passwordPlaceholderEdit": "Leave blank to keep current password", - "statusActive": "Active", - "statusInactive": "Inactive", - "cancel": "Cancel", - "save": "Save", - "bulkModalTitle": "Bulk Proxy Assignment", - "bulkLabelScope": "Scope", - "bulkLabelProxy": "Proxy", - "bulkClearAssignment": "(Clear assignment)", - "bulkLabelScopeIds": "Scope IDs (comma or newline separated)", + "labelHost": "હોસ્ટ", + "labelPort": "પોર્ટ", + "labelUsername": "વપરાશકર્તા નામ", + "labelPassword": "પાસવર્ડ", + "labelRegion": "પ્રદેશ", + "labelStatus": "સ્થિતિ", + "labelNotes": "નોંધો", + "usernamePlaceholderEdit": "વર્તમાન વપરાશકર્તા નામ જાળવી રાખવા માટે ખાલી છોડો", + "passwordPlaceholderEdit": "વર્તમાન પાસવર્ડ જાળવી રાખવા માટે ખાલી છોડો", + "statusActive": "સક્રિય", + "statusInactive": "નિષ્ક્રિય", + "cancel": "રદ કરો", + "save": "સાચવો", + "bulkModalTitle": "સામૂહિક પ્રોક્સી સોંપણી", + "bulkLabelScope": "વ્યાપ", + "bulkLabelProxy": "પ્રોક્સી", + "bulkClearAssignment": "(સોંપણી દૂર કરો)", + "bulkLabelScopeIds": "વ્યાપ IDs (અલ્પવિરામ અથવા નવી લીટીથી અલગ કરેલા)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", - "bulkApply": "Apply", + "bulkApply": "લાગુ કરો", "labelScope": "સ્કોપ", "labelProxy": "પ્રોક્સી", "scopeGlobal": "વૈશ્વિક", @@ -10897,19 +10904,19 @@ "bulkImportErrorInvalidPort": "અમાન્ય PORT (1-65535 હોવું આવશ્યક છે)", "bulkImportErrorInvalidType": "અમાન્ય TYPE (http, https, અથવા socks5 નો ઉપયોગ કરો)", "bulkImportErrorInvalidStatus": "અમાન્ય સ્થિતિ (સક્રિય અથવા નિષ્ક્રિય ઉપયોગ કરો)", - "errorLoadFailed": "Failed to load proxy registry", - "errorNameHostRequired": "Name and host are required", - "errorSaveFailed": "Failed to save proxy", - "errorDeleteFailed": "Failed to delete proxy", - "errorForceDeleteConfirm": "This proxy is still assigned. Force delete and remove all assignments?", - "errorMigrateFailed": "Failed to migrate legacy proxy config", - "errorBulkFailed": "Failed to execute bulk assignment", + "errorLoadFailed": "પ્રોક્સી રજિસ્ટ્રી લોડ કરવામાં નિષ્ફળતા", + "errorNameHostRequired": "નામ અને હોસ્ટ આવશ્યક છે", + "errorSaveFailed": "પ્રોક્સી સાચવવામાં નિષ્ફળતા", + "errorDeleteFailed": "પ્રોક્સી કાઢી નાખવામાં નિષ્ફળ", + "errorForceDeleteConfirm": "આ પ્રોક્સી હજી પણ ફાળવેલ છે. બળજબરીથી કાઢી નાખીને તમામ ફાળવણીઓ દૂર કરવી છે?", + "errorMigrateFailed": "જૂના પ્રોક્સી કૉન્ફિગને માઇગ્રેટ કરવામાં નિષ્ફળ", + "errorBulkFailed": "બલ્ક ફાળવણી ચલાવવામાં નિષ્ફળ", "success": "✓", "failure": "✗", - "failed": "Failed", - "successRate": "{rate}% success", - "avgLatency": "{latency}ms average", - "assignmentsCount": "{count} assignments", + "failed": "નિષ્ફળ", + "successRate": "{rate}% સફળતા", + "avgLatency": "સરેરાશ {latency}ms", + "assignmentsCount": "{count} ફાળવણીઓ", "noData": "—", "testSuccess": "✓ {ip}", "testLatency": "{latency}ms", @@ -10942,7 +10949,7 @@ "batchSelectedCount": "{count} પસંદ કરેલ", "batchDeleteSelected": "પસંદ કરેલ {count} ને કાઢી નાખો", "batchActivateSelected": "પસંદ કરેલ {count} ને સક્ષમ કરો", - "testPassed": "✓ OK", + "testPassed": "✓ બરાબર", "close": "બંધ કરો", "managePool": "પૂલનું સંચાલન કરો", "poolTitle": "પ્રોક્સી પૂલ અને રોટેશન", @@ -10961,9 +10968,9 @@ "strategyLatency": "લેટન્સી-ઓપ્ટિમાઇઝ્ડ", "poolMembersLabel": "પૂલ સભ્યો ({count})", "poolNoMembers": "આ પૂલમાં હજી સુધી કોઈ પ્રોક્સી નથી.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{connections, plural, one {# કનેક્શન} other {# કનેક્શનો}} દ્વારા વપરાયેલા {exits, plural, one {# એક્ઝિટ} other {# એક્ઝિટ્સ}} · એક એક્ઝિટ પર વધુમાં વધુ {max} · છેલ્લા {hours} કલાક", + "poolEgressObservationEmpty": "છેલ્લા {hours} કલાકમાં કોઈ ટ્રાફિક જોવા મળ્યો નથી", + "poolEgressObservationHint": "આ સમયગાળા માટે પ્રોક્સી લૉગમાંથી ગણતરી કરેલી: આ પૂલના સભ્યો માટે જોવા મળેલા અલગ-અલગ એગ્રેસ IP અને તેમનો ઉપયોગ કરનારા OmniRoute કનેક્શન્સ. \"એક એક્ઝિટ પર\"નો અર્થ આ સમયગાળા દરમિયાન છે, એક જ સમયે નહીં. પ્રતિ-IP 429 લૉકઆઉટ ફક્ત સમાન પ્રોવાઇડર ફૅમિલીના કનેક્શન્સને થોભાવે છે.", "poolRemove": "દૂર કરો", "poolRemoveFailed": "પૂલમાંથી પ્રોક્સી દૂર કરવામાં નિષ્ફળ", "poolAddLabel": "પ્રોક્સી ઉમેરો", @@ -10973,96 +10980,96 @@ "poolSaveFailed": "પૂલ અસાઇનમેન્ટ સાચવવામાં નિષ્ફળ" }, "playground": { - "title": "Model Playground", - "description": "Test any model directly from the dashboard. Select provider, model, and endpoint type, then send a request to see the raw response.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", - "accountKey": "Account / Key", - "autoAccounts": "Auto ({count} accounts)", - "noAccounts": "No accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", - "attachImages": "Attach Images (Vision)", + "title": "મોડેલ પ્લેગ્રાઉન્ડ", + "description": "ડૅશબોર્ડ પરથી કોઈપણ મોડેલનું સીધું પરીક્ષણ કરો. પ્રદાતા, મોડેલ અને એન્ડપોઇન્ટનો પ્રકાર પસંદ કરો, પછી મૂળ પ્રતિસાદ જોવા માટે વિનંતી મોકલો.", + "endpoint": "એન્ડપોઇન્ટ", + "provider": "પ્રદાતા", + "model": "મોડેલ", + "accountKey": "એકાઉન્ટ / કી", + "autoAccounts": "સ્વચાલિત ({count} એકાઉન્ટ)", + "noAccounts": "કોઈ એકાઉન્ટ નથી", + "send": "મોકલો", + "cancel": "રદ કરો", + "audioFile": "ઑડિયો ફાઇલ", + "attachImages": "છબીઓ જોડો (વિઝન)", "multipartFormData": "multipart/form-data", - "upToImages": "Up to 4 images", - "selectAudioFile": "Select audio file for transcription (mp3, wav, m4a, ogg, flac…)", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", - "resetToDefault": "Reset to default", - "downloadAudio": "Download audio", - "copyText": "Copy text", - "transcriptionHint": "Transcription uses multipart/form-data. Upload the audio file above — the JSON below controls extra parameters (model, language).", - "imagesGenerated": "Generated {count} images", - "generatedImage": "Generated image {index}", - "save": "Save", + "upToImages": "વધુમાં વધુ 4 છબીઓ", + "selectAudioFile": "ટ્રાન્સક્રિપ્શન માટે ઑડિયો ફાઇલ પસંદ કરો (mp3, wav, m4a, ogg, flac…)", + "clearAll": "બધું સાફ કરો", + "request": "વિનંતી", + "response": "પ્રતિસાદ", + "transcription": "ટ્રાન્સક્રિપ્શન", + "copy": "કૉપિ કરો", + "resetToDefault": "ડિફૉલ્ટ પર રીસેટ કરો", + "downloadAudio": "ઑડિયો ડાઉનલોડ કરો", + "copyText": "ટેક્સ્ટ કૉપિ કરો", + "transcriptionHint": "ટ્રાન્સક્રિપ્શન multipart/form-data નો ઉપયોગ કરે છે. ઉપર ઑડિયો ફાઇલ અપલોડ કરો — નીચેનું JSON વધારાના પરિમાણો (મોડેલ, ભાષા) નિયંત્રિત કરે છે.", + "imagesGenerated": "{count} છબીઓ જનરેટ થઈ", + "generatedImage": "જનરેટ કરેલી છબી {index}", + "save": "સાચવો", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", + "chat": "ચેટ પૂર્ણતાઓ", + "responses": "પ્રતિસાદો", "completions": "કમ્પ્લીશન્સ", - "images": "Image generation", - "embeddings": "Embeddings", - "speech": "Text-to-speech", - "transcription": "Audio transcription", - "video": "Video generation", - "music": "Music generation", + "images": "છબી જનરેશન", + "embeddings": "એમ્બેડિંગ્સ", + "speech": "ટેક્સ્ટ-ટુ-સ્પીચ", + "transcription": "ઑડિયો ટ્રાન્સક્રિપ્શન", + "video": "વિડિયો જનરેશન", + "music": "સંગીત જનરેશન", "moderations": "મોડરેશન્સ", - "rerank": "Rerank", - "search": "Web search", + "rerank": "ફરી ક્રમ આપો", + "search": "વેબ શોધ", "webFetch": "વેબ ફેચ" }, "conversationalChat": "વાતચીત ચેટ", "clearChat": "ચેટ સાફ કરો", "typeMessagePlaceholder": "સંદેશ લખો... (નવી લાઇન માટે Shift+Enter)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "ચેટ", + "tabCompare": "સરખામણી કરો", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", - "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "tabBuild": "બિલ્ડ", + "configPane": "કૉન્ફિગ", + "systemPrompt": "સિસ્ટમ પ્રોમ્પ્ટ", + "systemPromptPlaceholder": "તમે એક મદદરૂપ સહાયક છો.", + "modelPlaceholder": "દા.ત. openai/gpt-4o", + "endpointLabel": "એન્ડપોઇન્ટ", + "parametersLabel": "પેરામીટર્સ", + "collapseConfig": "કૉન્ફિગ પેન સંકોચો", + "expandConfig": "કૉન્ફિગ પેન વિસ્તારો", + "temperature": "ટેમ્પરેચર", + "maxTokens": "મહત્તમ ટોકન્સ", + "topP": "ટૉપ-p", + "presencePenalty": "પ્રેઝન્સ પેનલ્ટી", + "frequencyPenalty": "ફ્રીક્વન્સી પેનલ્ટી", "reasoningLabel": "તર્ક", "thinking": "વિચારણા", "effort": "પ્રયાસ", "effortDefault": "ડિફૉલ્ટ", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "રેન્ડમ (ખાલી છોડો)", + "presetsLabel": "પ્રીસેટ્સ", + "loadPreset": "પ્રીસેટ લોડ કરો", + "savePreset": "પ્રીસેટ સાચવો", + "noPresets": "કોઈ પ્રીસેટ્સ નથી", + "presetNamePlaceholder": "પ્રીસેટનું નામ", + "savingPreset": "સાચવી રહ્યાં છીએ…", + "nameRequired": "નામ આવશ્યક છે", + "failedToSavePreset": "પ્રીસેટ સાચવવામાં નિષ્ફળ", + "improvePrompt": "પ્રોમ્પ્ટ સુધારો", + "improvingPrompt": "સુધારી રહ્યાં છીએ…", + "improvePromptTitle": "AI વડે તમારા પ્રોમ્પ્ટને સુધારો", + "setModelFirst": "પહેલા મોડેલ સેટ કરો", "setModelInConfigFirst": "પહેલા કન્ફિગ પેનલમાં મોડેલ સેટ કરો.", "improvePromptFailed": "પ્રોમ્પ્ટ સુધારવાનું નિષ્ફળ ગયું.", "improvePromptAria": "AI નો ઉપયોગ કરીને પ્રોમ્પ્ટ સુધારો", "confirmImprovePrompt": "પ્રોમ્પ્ટ સુધારવાની પુષ્ટિ કરો", "improvePromptDescription": "આ તમારા વર્તમાન સિસ્ટમ પ્રોમ્પ્ટને સુધારેલ સંસ્કરણ જનરેટ કરવા માટે પર મોકલશે.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "આ Config માં ગોઠવેલા મોડેલનો ક્વોટા વાપરશે.", + "improveConfirm": "સુધારો", + "exportCode": "કોડ નિકાસ કરો", + "exportCodeTitle": "કોડ નિકાસ કરો", "exportShort": "નિકાસ કરો", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "નિકાસ કરવા માટે કોઈ પ્લેગ્રાઉન્ડ સ્થિતિ ઉપલબ્ધ નથી.", "closeExportModal": "નિકાસ મોડલ બંધ કરો", "close": "બંધ કરો", "exportRealKeyWarning": "સુરક્ષા ચેતવણી: નિકાસ અવરોધિત છે — આઉટપુટમાં વાસ્તવિક API કી મળી આવી છે. કૃપા કરીને તમારી API કી રીસેટ કરો અને ફરીથી પ્રયાસ કરો.", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language} કોડ કોપી કરો", "loadingPresets": "લોડ થઈ રહ્યું છે…", "loadPresetPlaceholder": "પ્રિસેટ લોડ કરો…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "કૉપિ કરો", + "copiedCode": "કૉપિ થયું!", + "addModel": "+ મોડેલ ઉમેરો", + "runAll": "બધું ચલાવો", + "cancelAll": "બધું રદ કરો", + "maxColumnsReached": "મહત્તમ {max} કૉલમ", + "modelPlaceholderCompare": "મોડેલ (Cmd+K)…", "noModel": "કોઈ મોડેલ નથી", "statusLabel": "સ્થિતિ: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "પ્રતિભાવની રાહ જોવાઈ રહી છે…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "ક્લાયન્ટ-સાઇડ અંદાજ", + "tokensLabel": "ટોકન્સ", + "costLabel": "ખર્ચ", + "costEstimated": "(અંદાજિત)", "ttftTitle": "પ્રથમ ટોકન સુધીનો સમય (ક્લાયન્ટ-સાઇડ અંદાજ)", "tpsTitle": "પ્રતિ સેકન્ડ ટોકન્સ (ક્લાયન્ટ-સાઇડ અંદાજ)", "tokenCountsTitle": "પ્રોમ્પ્ટ ટોકન્સ ↑ / કમ્પ્લીશન ટોકન્સ ↓", "estimatedCostTitle": "અંદાજિત ખર્ચ (ચોક્કસ હોવાની ખાતરી નથી)", - "toolsLabel": "Tools", + "toolsLabel": "ટૂલ્સ", "toolsCount": "ટૂલ્સ ({count})", - "addTool": "Add tool", + "addTool": "ટૂલ ઉમેરો", "editTool": "ટૂલ {name} સંપાદિત કરો", "removeTool": "ટૂલ {name} દૂર કરો", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "ફંક્શનનું નામ", "toolNameRequiredPlaceholder": "ફંક્શન નામ *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "વર્ણન (વૈકલ્પિક)", "toolParamsLabel": "પેરામીટર્સ (JSON સ્કીમા)", "toolParamsJsonSchema": "પેરામીટર્સ માટે JSON સ્કીમા", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "પેરામીટર્સ માન્ય JSON હોવા જોઈએ", + "structuredOutputLabel": "સ્ટ્રક્ચર્ડ આઉટપુટ", + "enableJsonMode": "JSON મોડ સક્ષમ કરો", + "disableJsonMode": "JSON મોડ અક્ષમ કરો", + "invalidJson": "અમાન્ય JSON", "jsonMode": "JSON મોડ", "jsonModeDescription": "response_format: json_schema ફરજિયાત કરે છે", "schemaName": "સ્કીમા નામ", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} કૉલમ્સ", "addModelToCompare": "સરખામણી કરવા માટે મોડેલ કૉલમ ઉમેરો", "modelsSimultaneously": "એકસાથે {max} મોડેલ્સ સુધી", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "ચાલી રહ્યું છે…", + "runLabel": "ચલાવો", + "enterToolResult": "ટૂલનું પરિણામ દાખલ કરો…", "build": { "step1Label": "શું પરીક્ષણ કરવું છે?", "step2Label": "કન્ફિગર કરો", @@ -11250,73 +11257,73 @@ "stop": "રોકો" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "રેકોર્ડિંગ", + "paused": "વિરામ આપેલ", + "pipelineLogsOn": "પાઇપલાઇન લૉગ્સ ચાલુ", + "pipelineLogsOff": "પાઇપલાઇન લૉગ્સ બંધ", + "updatingPipelineLogs": "પાઇપલાઇન લૉગ્સ અપડેટ થઈ રહ્યા છે...", + "updatePipelineFailed": "પાઇપલાઇન લૉગિંગ અપડેટ કરવામાં નિષ્ફળ", + "capturePipeline": "નવી વિનંતીઓ માટે પાઇપલાઇન પેલોડ્સ કૅપ્ચર કરો", + "searchPlaceholder": "મૉડલ્સ, પ્રદાતાઓ, એકાઉન્ટ્સ, API કીઝ, કોમ્બોઝ શોધો...", + "allProviders": "બધા પ્રદાતાઓ", + "allModels": "બધા મૉડલ્સ", + "allAccounts": "બધા એકાઉન્ટ્સ", + "allApiKeys": "બધી API કીઝ", + "total": "કુલ", + "ok": "સફળ", + "err": "ભૂલ", + "combo": "કોમ્બો", + "keys": "કીઝ", + "shown": "દર્શાવેલ", + "sortNewest": "સૌથી નવું", + "sortOldest": "સૌથી જૂનું", + "sortTokensDesc": "ટોકન્સ ↓", + "sortTokensAsc": "ટોકન્સ ↑", + "sortDurationDesc": "અવધિ ↓", + "sortDurationAsc": "અવધિ ↑", + "sortStatusDesc": "સ્થિતિ ↓", + "sortStatusAsc": "સ્થિતિ ↑", + "sortModelAsc": "મૉડલ A-Z", + "sortModelDesc": "મૉડલ Z-A", + "sortLogs": "લૉગ્સ સૉર્ટ કરો", + "refresh": "રિફ્રેશ કરો", + "columnsLabel": "કૉલમ્સ", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semantic": "સિમેન્ટિક", + "upstream": "અપસ્ટ્રીમ", + "semanticCacheHit": "સિમેન્ટિક કૅશ હિટ (OmniRoute દ્વારા પ્રદાન કરાયેલ)", + "upstreamResponse": "અપસ્ટ્રીમ પ્રદાતાનો પ્રતિસાદ", + "noApiKey": "કોઈ API કી નથી", + "requestedRoutedTitle": "વિનંતી {requested} માટે કરવામાં આવી હતી, {routed} તરીકે રૂટ કરવામાં આવી", "statusFilters": { - "all": "All", - "error": "Error", - "success": "Success", - "combo": "Combo" + "all": "બધા", + "error": "ભૂલ", + "success": "સફળ", + "combo": "કોમ્બો" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "સ્થિતિ", + "cacheSource": "કૅશ સ્રોત", + "model": "મોડેલ", + "requested": "વિનંતી કરેલ", + "provider": "પ્રદાતા", + "protocol": "વિનંતી પ્રોટોકોલ", + "account": "એકાઉન્ટ", + "apiKey": "API કી", + "combo": "કોમ્બો", + "tokens": "ટોકન્સ", "compressed": "સંકોચન", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "અવધિ", + "time": "સમય", + "conversation": "વાતચીત", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "લૉગ્સ લોડ થઈ રહ્યા છે...", + "noLogs": "હજુ સુધી કોઈ લૉગ્સ નથી. તેમને અહીં જોવા માટે કેટલીક API કૉલ્સ કરો.", + "noMatchingLogs": "વર્તમાન ફિલ્ટર્સ સાથે મેળ ખાતા કોઈ લૉગ્સ નથી.", + "callLogsInfo": "કૉલ લૉગ્સને JSON ફાઇલો તરીકે {dataDir}માં પણ સાચવવામાં આવે છે અને {retentionDays} તથા {maxEntries}ના આધારે રોટેટ કરવામાં આવે છે.", "loadMore": "વધુ લોડ કરો", "loadingMore": "વધુ લોડ થઈ રહ્યું છે...", "correlationId": "સંબંધ ઓળખપત્ર", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "આ લોગ એન્ટ્રી માટે વિગતવાર પેઇલોડ આર્ટિફેક્ટ હવે ઉપલબ્ધ નથી.", "payloadCorrupt": "વિસ્તૃત પેલોડ આર્ટિફેક્ટને પાર્સ કરી શકાયું નથી.", - "notAvailable": "N/A", + "notAvailable": "લાગુ પડતું નથી", "semanticCache": "સેમેન્ટિક (ઓમ્નીરૂટ)", "upstreamCache": "અપસ્ટ્રીમ (પ્રદાતા)", "ariaLabel": "વિનંતી લોગ વિગતો", @@ -11417,59 +11424,59 @@ "correlationId": "સંબંધ ઓળખપત્ર", "correlationIdValue": "સંબંધિત ID: {id}", "detailedPayloadInfo": "નવા વિનંતીઓ માટે ચાર-ચરણ ક્લાયન્ટ/પ્રદાતા પેલોડ દૃશ્ય મેળવવા માટે પ્રથમ વિગતવાર લોગિંગ સક્રિય કરો.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "બધું કૉપિ કરો", + "copiedAll": "બધું કૉપિ થયું" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "બધું", + "filterErrors": "ભૂલો", + "filterSuccess": "સફળ", + "filterTimeout": "સમયસમાપ્તિ", + "colStatus": "સ્થિતિ", + "colProxy": "પ્રોક્સી", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "પ્રકાર", + "colLevel": "સ્તર", + "colProvider": "પ્રદાતા", + "colTarget": "લક્ષ્ય", + "colLatency": "વિલંબ", + "colClientIp": "ક્લાયન્ટ IP", + "colTime": "સમય", + "recording": "રેકોર્ડિંગ", + "paused": "થોભાવેલ", + "searchPlaceholder": "હોસ્ટ, પ્રદાતા, લક્ષ્ય, IP શોધો...", + "allTypes": "બધા પ્રકારો", + "allLevels": "બધા સ્તરો", + "allProviders": "બધા પ્રદાતાઓ", + "total": "કુલ", + "ok": "ઠીક", + "err": "ભૂલ", + "timeoutShort": "સમયસમાપ્તિ", + "direct": "સીધું", + "newest": "સૌથી નવું", + "oldest": "સૌથી જૂનું", + "latencyDesc": "વિલંબતા ↓", + "latencyAsc": "વિલંબતા ↑", + "refresh": "રિફ્રેશ કરો", + "columns": "કૉલમ્સ", + "loadingProxyLogs": "પ્રોક્સી લૉગ્સ લોડ થઈ રહ્યા છે...", + "noProxyLogs": "હજુ સુધી કોઈ પ્રોક્સી લૉગ્સ નથી. તેમને અહીં જોવા માટે પ્રોક્સીઓ ગોઠવો અને API કૉલ્સ કરો.", + "noMatchingLogs": "વર્તમાન ફિલ્ટર્સ સાથે કોઈ લૉગ મેળ ખાતા નથી.", + "tlsFingerprint": "Chrome 124 TLS ફિંગરપ્રિન્ટ", "colPublicIp": "પબ્લિક IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "વાણી", + "search": "શોધ", + "images": "છબીઓ", + "chat": "ચેટ", + "music": "સંગીત", + "responses": "પ્રતિસાદો", + "rerank": "પુનઃક્રમનિર્ધારણ", + "video": "વિડિયો", + "embeddings": "એમ્બેડિંગ્સ", + "transcription": "લિપ્યંતરણ" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "રનટાઇમ", + "description": "રીઅલ-ટાઇમ અવલોકનક્ષમતા — 3-સ્તરીય સ્થિતિસ્થાપકતા + સત્રો + ક્વોટા ચેતવણીઓ", + "pause": "વિરામ આપો", + "resume": "ફરી શરૂ કરો", + "refreshNow": "હમણાં રિફ્રેશ કરો", + "kpiSessions": "સત્રો", + "kpiCircuits": "સર્કિટ્સ", + "kpiCooldowns": "કૂલડાઉન્સ", + "kpiLockouts": "લૉકઆઉટ્સ", + "hintStickyBound": "{count} સ્ટિકી-બાઉન્ડ", + "hintRecovering": "{count} પુનઃપ્રાપ્ત થઈ રહ્યાં છે", + "hintAllHealthy": "બધા સ્વસ્થ", + "hintOpen": "ખુલ્લા", + "hintConnsCooling": "કનેક્શનો કૂલડાઉનમાં છે", + "hintModelsBlocked": "મોડેલો અવરોધિત છે", + "resilienceTitle": "3-સ્તરીય સ્થિતિસ્થાપકતા", + "resilienceSubtitle": "દસ્તાવેજીકૃત સ્થિતિસ્થાપકતા મોડેલને પ્રતિબિંબિત કરે છે", + "providersHealthy": "{percent}% પ્રદાતાઓ સ્વસ્થ", + "layer": "સ્તર {n}", + "layer1Title": "પ્રદાતા સર્કિટ બ્રેકર્સ", + "layer1Desc": "અપસ્ટ્રીમ સ્તરે નિષ્ફળ થતા પ્રદાતાઓ તરફનો ટ્રાફિક રોકો", + "layer2Title": "કનેક્શન કૂલડાઉન", + "layer2Desc": "એક ખરાબ એકાઉન્ટ/કી છોડો; અન્ય કનેક્શનો સેવા આપવાનું ચાલુ રાખે છે", + "layer3Title": "મોડેલ લૉકઆઉટ", + "layer3Desc": "દર-મોડેલ રેટ-લિમિટ લૉક; એ જ કનેક્શન હજી પણ અન્ય મોડેલોને સેવા આપે છે", + "badgeAffectedOf": "{total}માંથી {affected} પ્રભાવિત", + "badgeCooling": "{count} કૂલડાઉનમાં", + "badgeLocked": "{count} લૉક થયેલ", + "emptyCircuits": "હજુ સુધી કોઈ સર્કિટ બ્રેકર સક્રિય નથી", + "emptyCooldowns": "કોઈ કનેક્શન કૂલડાઉન સક્રિય નથી", + "emptyLockouts": "કોઈ મોડેલ લૉકઆઉટ નથી", + "moreCooldowns": "+{count} વધુ કૂલડાઉન", + "moreLockouts": "+{count} વધુ લૉકઆઉટ", + "feedTitle": "લાઇવ ફીડ", + "feedSubtitle": "છેલ્લી {count} ઘટનાઓ", + "feedFilterAll": "બધા", + "feedFilterCircuits": "સર્કિટ્સ", + "feedFilterCooldowns": "કૂલડાઉન", + "feedFilterLockouts": "લૉકઆઉટ", + "feedFilterSessions": "સત્રો", + "feedFilterQuotas": "ક્વોટા", + "feedClear": "સાફ કરો", + "feedEmptyWaiting": "ઘટનાઓની રાહ જોવાઈ રહી છે... (દર 5 સે.એ પોલ કરવામાં આવે છે)", + "feedEmptyFiltered": "આ ફિલ્ટર સાથે કોઈ ઘટના મેળ ખાતી નથી", + "sessionsTitle": "સક્રિય સત્રો", + "sessionsSubtitle": "સ્ટિકી-બાઉન્ડ વિનંતી ફિંગરપ્રિન્ટ્સ (લાઇવ)", + "sessionsActive": "{count} સક્રિય", + "sessionsEmptyTitle": "કોઈ સક્રિય સત્ર નથી", + "sessionsEmptyHint": "પ્રોક્સી મારફતે વિનંતીઓ પસાર થતાં સત્રો દેખાય છે", + "tblSession": "સત્ર", + "tblAge": "ઉંમર", + "tblIdle": "નિષ્ક્રિય", + "tblReqs": "વિનંતીઓ", + "tblBoundTo": "આની સાથે બંધાયેલ", + "topApiKeys": "ટોચની API કીઝ", + "quotaMonitorsTitle": "ક્વોટા મોનિટર્સ", + "quotaMonitorsSubtitle": "દરેક એકાઉન્ટ વિન્ડો માટે લાઇવ ક્વોટા સ્થિતિ", + "openQuota": "ક્વોટા ખોલો", + "allQuotasHealthy": "બધા ક્વોટા સ્વસ્થ છે", + "statusExhausted": "સમાપ્ત", + "statusAlerting": "ચેતવણી", + "statusError": "ભૂલ", + "moreSuffix": "+{count} વધુ" }, "quotaShare": { "weightPercent": "વેઇટ %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "ક્વોટા શેરિંગ", + "description": "% મર્યાદાઓ સાથે API કીઝ વચ્ચે પ્રદાતાના ક્વોટા શેર કરો", + "newPool": "નવું પૂલ", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "રૂપરેખાંકન localStorage માં સાચવવામાં આવ્યું છે (હજુ સુધી સર્વર પર કાયમી રીતે સંગ્રહિત નથી). દરેક વિનંતી માટેની મર્યાદાનો અમલ હજુ સુધી પ્રોક્સી પાઇપલાઇનમાં જોડાયો નથી. આ સ્ક્રીન તમને ક્વોટાના વિભાજનને ડિઝાઇન કરવા અને દૃશ્યમાન બનાવવા દે છે; વાસ્તવિક અમલ DB માં કાયમી સંગ્રહ અને અપસ્ટ્રીમ કૉલ ઇન્ટરસેપ્શન સાથે ભવિષ્યના પુનરાવર્તનમાં ઉપલબ્ધ થશે.", + "kpiActivePools": "સક્રિય પૂલ્સ", + "kpiKeysAllocated": "ફાળવેલી કીઝ", + "kpiAvgUnallocated": "સરેરાશ ફાળવ્યા વિનાનું", + "kpiProvidersWithQuota": "ક્વોટા ધરાવતા પ્રદાતાઓ", + "emptyTitle": "કોઈ પૂલ રૂપરેખાંકિત નથી", + "emptyDescription": "% ફાળવણી સાથે પ્રદાતાની ક્વોટા વિન્ડો શેર કરવા માટે API કીઝ ફાળવવા એક પૂલ બનાવો.", + "loading": "લોડ થઈ રહ્યું છે…", + "removePool": "પૂલ દૂર કરો", + "removeConfirm": "આ પૂલ દૂર કરવું છે?", + "pool": "પૂલ", + "used": "વપરાયેલ", + "allocationsCount": "ફાળવણીઓ ({count})", + "allocatedFree": "{allocated}% ફાળવેલ · {free}% ખાલી", + "noAllocations": "હજુ સુધી કોઈ કી ફાળવવામાં આવી નથી", + "capLabel": "મર્યાદા {value}", + "notTrackedYet": "(હજુ સુધી ટ્રૅક કરેલ નથી)", + "policy": "નીતિ", "apiKeyColumn": "API કી", "weightColumn": "વેઇટ", "fairShareShort": "વાજબી", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "કડક", + "policySoft": "નરમ", + "policyBurst": "બર્સ્ટ", + "policyHardHint": "કીની ફાળવણી સમાપ્ત થાય ત્યારે અવરોધો", + "policySoftHint": "મર્યાદા વટાવવા દો, ફક્ત ચેતવણી આપો", + "policyBurstHint": "ફ્રી પૂલમાં બર્સ્ટ કરવાની મંજૂરી આપો", + "editAllocations": "ફાળવણીમાં ફેરફાર કરો", + "newPoolTitle": "નવો ક્વોટા પૂલ", + "providerConnection": "પ્રોવાઇડર કનેક્શન (એકાઉન્ટ)", + "selectConnection": "કનેક્શન પસંદ કરો…", + "noEligibleConnections": "ક્વોટા ડેટાવાળું કોઈ કનેક્શન નથી. પહેલાં /dashboard/quota પરથી રિફ્રેશ કરો.", + "quotaWindow": "ક્વોટા વિન્ડો", + "selectWindow": "વિન્ડો પસંદ કરો…", + "alreadyUsedSuffix": "(પહેલેથી વપરાયેલ)", + "windowReset": "રીસેટ કરો", + "duplicatePoolError": "આ કનેક્શન + વિન્ડો માટેનો પૂલ પહેલેથી અસ્તિત્વમાં છે", + "cancel": "રદ કરો", + "createPool": "પૂલ બનાવો", + "editTitle": "ફાળવણીમાં ફેરફાર કરો", + "noKeysAdded": "કોઈ કી ફાળવવામાં આવી નથી. નીચે એક ઉમેરો.", + "totalLabel": "કુલ: {percent}%", + "totalExceeded": "⚠ 100% કરતાં વધુ છે", + "addKey": "+ કી ઉમેરો…", + "equalSplit": "સમાન વિભાજન", + "save": "ફાળવણી સાચવો", "betaPreviewLabel": "બીટા — UI પૂર્વાવલોકન.", "betaConfigSavedPrefix": "રૂપરેખાંકન સાચવેલ છે", "betaConfigSavedSuffix": "(હજુ સુધી સર્વર પર ચાલુ નથી). પ્રતિ-વિનંતી કેપ અમલીકરણ હજુ સુધી પ્રોક્સી પાઇપલાઇનમાં વાયર થયેલ નથી. આ સ્ક્રીન તમને ક્વોટા સ્પ્લિટ ડિઝાઇન અને વિઝ્યુઅલાઈઝ કરવા દે છે; વાસ્તવિક અમલીકરણ DB દ્રઢતા અને અપસ્ટ્રીમ કોલ ઇન્ટરસેપ્શન સાથે ભવિષ્યના પુનરાવર્તનમાં ઉતરશે.", @@ -11668,10 +11675,10 @@ "endpointsHint": "કોઈપણ ફાળવેલ કી સાથે આ વર્ચ્યુઅલ મોડેલ્સને કૉલ કરો — રૂટિંગ + ક્વોટા પ્રતિ જૂથ હેન્ડલ કરવામાં આવે છે.", "previewForKey": "કી માટે પૂર્વાવલોકન", "previewKeyNone": "(બધા એન્ડપોઇન્ટ્સ)", - "endpointsBaseUrl": "Base URL", + "endpointsBaseUrl": "બેઝ URL", "endpointsCollapse": "સંકોચો", "endpointsExpand": "વિસ્તૃત કરો", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-નેટિવ", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — ફક્ત codex", "betaText": "Quota Share કાર્યરત છે પરંતુ બગ્સ આવી શકે છે. કોઈ મળ્યો? કૃપા કરીને તેની જાણ કરો.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "આ ગ્રૂપમાં હજી પણ પૂલ છે — પહેલા તેમને ફરીથી સોંપો અથવા કાઢી નાખો.", "ungroupedTitle": "અનગ્રૂપ કરેલ", "ungroupedHint": "આ પૂલ કોઈ જાણીતા ગ્રૂપમાં સોંપાયેલ નથી. પૂલને વાસ્તવિક ગ્રૂપમાં ખસેડવા માટે તેને સંપાદિત કરો.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "આ પૂલ દૂર કરી શકાયો નહીં.", + "dismiss": "બંધ કરો" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "પ્લગઇન્સ", + "description": "OmniRouteની કાર્યક્ષમતા વિસ્તારવા માટે પ્લગઇન્સ ઇન્સ્ટોલ અને મેનેજ કરો", + "loading": "પ્લગઇન્સ લોડ થઈ રહ્યાં છે...", + "scanning": "સ્કૅન થઈ રહ્યું છે...", + "scanForPlugins": "પ્લગઇન્સ માટે સ્કૅન કરો", + "noPlugins": "કોઈ પ્લગઇન ઇન્સ્ટોલ કરેલું નથી", + "noPluginsDescription": "પ્લગઇન ડિરેક્ટરીઓ ~/.omniroute/plugins/માં મૂકો અને સ્કૅન પર ક્લિક કરો.", + "activate": "સક્રિય કરો", + "deactivate": "નિષ્ક્રિય કરો", + "uninstall": "અનઇન્સ્ટોલ કરો", + "uninstallConfirm": "પ્લગઇન \"{name}\" અનઇન્સ્ટોલ કરવું છે?", + "pluginScanComplete": "પ્લગઇન સ્કૅન પૂર્ણ થયું", + "pluginScanFailed": "પ્લગઇન સ્કૅન નિષ્ફળ થયું", + "activated": "{name} સક્રિય કરવામાં આવ્યું", + "deactivated": "{name} નિષ્ક્રિય કરવામાં આવ્યું", + "activateFailed": "{name} સક્રિય કરવામાં નિષ્ફળ", + "deactivateFailed": "{name} નિષ્ક્રિય કરવામાં નિષ્ફળ", + "uninstalled": "{name} અનઇન્સ્ટોલ કરવામાં આવ્યું", + "uninstallFailed": "{name} અનઇન્સ્ટોલ કરવામાં નિષ્ફળ", + "configure": "ગોઠવો: {name}", + "configurePlugin": "ગોઠવો", + "noConfigSettings": "આ પ્લગઇનમાં ગોઠવી શકાય તેવી કોઈ સેટિંગ્સ નથી.", + "saving": "સાચવી રહ્યું છે...", + "saveConfiguration": "ગોઠવણી સાચવો", + "configurationSaved": "ગોઠવણી સાચવવામાં આવી", + "saveConfigurationFailed": "ગોઠવણી સાચવવામાં નિષ્ફળ", + "pluginNotFound": "પ્લગઇન મળ્યું નથી", + "version": "આવૃત્તિ", + "author": "લેખક", + "description_label": "વર્ણન", + "status": "સ્થિતિ", + "enabled": "સક્ષમ", + "disabled": "અક્ષમ", "installedTab": "ઇન્સ્ટોલ કરેલ", "marketplaceTab": "માર્કેટપ્લેસ", "marketplaceUrlLabel": "કસ્ટમ માર્કેટપ્લેસ URL", @@ -11729,7 +11736,7 @@ "verified": "ચકાસાયેલ", "install": "ઇન્સ્ટોલ કરો", "installedFromMarketplace": "પ્લગઇન {name} ઇન્સ્ટોલ થઈ ગયું!", - "hooks": "Hooks" + "hooks": "હુક્સ" }, "quotaPlans": { "title": "પ્લાન અને ક્વોટા", @@ -11886,48 +11893,48 @@ "filterActive": "સક્રિય", "filterSetupRequired": "સેટઅપ જરૂરી છે", "filterInvestigating": "તપાસ ચાલુ છે", - "searchAgents": "Search agents…", - "noAgentsMatch": "No agents match the current filter", - "agentHosts": "Intercepted hosts", - "certTrusted": "Certificate trusted", - "certNotTrusted": "Certificate not trusted", - "investigatingNotice": "This agent is under investigation. Hosts and API surface are still being confirmed. Setup will be available once the upstream API is documented.", - "modelMappingsLabel": "Model mappings", - "sourceModel": "Source model (agent native)", - "targetModel": "Target model (OmniRoute)", - "noMappings": "No model mappings configured. Run setup wizard to auto-detect models.", + "searchAgents": "એજન્ટ્સ શોધો…", + "noAgentsMatch": "વર્તમાન ફિલ્ટર સાથે કોઈ એજન્ટ મેળ ખાતો નથી", + "agentHosts": "ઇન્ટરસેપ્ટ કરેલા હોસ્ટ્સ", + "certTrusted": "પ્રમાણપત્ર વિશ્વસનીય છે", + "certNotTrusted": "પ્રમાણપત્ર વિશ્વસનીય નથી", + "investigatingNotice": "આ એજન્ટની તપાસ ચાલી રહી છે. હોસ્ટ્સ અને API સપાટીની હજુ પુષ્ટિ કરવામાં આવી રહી છે. અપસ્ટ્રીમ APIનું દસ્તાવેજીકરણ થયા પછી સેટઅપ ઉપલબ્ધ થશે.", + "modelMappingsLabel": "મોડેલ મેપિંગ્સ", + "sourceModel": "સ્રોત મોડેલ (એજન્ટનું મૂળ)", + "targetModel": "લક્ષ્ય મોડેલ (OmniRoute)", + "noMappings": "કોઈ મોડેલ મેપિંગ્સ ગોઠવેલા નથી. મોડેલ્સને આપમેળે શોધવા માટે સેટઅપ વિઝાર્ડ ચલાવો.", "noMappingsDesc": "હજી સુધી કોઈ મોડેલ નકશા રૂપરેખાંકિત નથી. એજન્ટના વિનંતીઓને OmniRoute દ્વારા માર્ગદર્શન આપવા માટે નકશાઓ ઉમેરો.", "addMapping": "મૅપિંગ ઉમેરો", - "selectModel": "Select…", - "saveMappings": "Save mappings", - "setupWizard": "Setup wizard", - "startDns": "Start DNS", - "stopDns": "Stop DNS", - "toggling": "Toggling…", - "viewTraffic": "View traffic", - "emptyNoProvidersTitle": "No providers configured yet", - "emptyNoProvidersBody": "To use AgentBridge, first connect at least one provider. It will be the destination where IDE requests are routed.", - "emptyGoToProviders": "Go to Providers", - "wizardTitle": "Setup wizard", - "wizardSubtitle": "3-step setup", - "wizardStep1Label": "Verify", + "selectModel": "પસંદ કરો…", + "saveMappings": "મેપિંગ્સ સાચવો", + "setupWizard": "સેટઅપ વિઝાર્ડ", + "startDns": "DNS શરૂ કરો", + "stopDns": "DNS બંધ કરો", + "toggling": "ટૉગલ થઈ રહ્યું છે…", + "viewTraffic": "ટ્રાફિક જુઓ", + "emptyNoProvidersTitle": "હજુ સુધી કોઈ પ્રદાતા કૉન્ફિગર કરેલ નથી", + "emptyNoProvidersBody": "AgentBridgeનો ઉપયોગ કરવા માટે, પહેલાં ઓછામાં ઓછા એક પ્રદાતાને કનેક્ટ કરો. IDE વિનંતીઓ જ્યાં રૂટ કરવામાં આવે છે તે ગંતવ્ય આ હશે.", + "emptyGoToProviders": "પ્રદાતાઓ પર જાઓ", + "wizardTitle": "સેટઅપ વિઝાર્ડ", + "wizardSubtitle": "3-પગલાંનું સેટઅપ", + "wizardStep1Label": "ચકાસો", "wizardStep2Label": "DNS", - "wizardStep3Label": "Mappings", - "wizardStep1Desc": "Confirm the server is running and the certificate is installed.", - "wizardStep2Desc": "The following entries will be added to /etc/hosts to redirect traffic through AgentBridge:", - "wizardStep3Desc": "You can now configure model mappings in the agent card. Restart the IDE to apply changes.", - "wizardStep3Success": "Agent is configured!", - "wizardServerCheck": "AgentBridge server", - "wizardRunning": "running", - "wizardNotRunning": "not running", - "wizardCertCheck": "Certificate", - "wizardTrusted": "trusted", - "wizardNotTrusted": "not yet trusted — use Trust Cert button", - "wizardTutorialTitle": "Setup instructions:", - "wizardEnableDns": "Add /etc/hosts entries", - "wizardDnsAlreadyEnabled": "DNS already enabled for this agent", - "enablingDns": "Enabling…", - "modelSelectorTitle": "Select target model", + "wizardStep3Label": "મેપિંગ્સ", + "wizardStep1Desc": "સર્વર ચાલી રહ્યું છે અને પ્રમાણપત્ર ઇન્સ્ટૉલ થયેલું છે તેની ખાતરી કરો.", + "wizardStep2Desc": "AgentBridge મારફતે ટ્રાફિકને રીડાયરેક્ટ કરવા માટે નીચેની એન્ટ્રીઓ /etc/hostsમાં ઉમેરવામાં આવશે:", + "wizardStep3Desc": "હવે તમે એજન્ટ કાર્ડમાં મોડલ મેપિંગ્સ કૉન્ફિગર કરી શકો છો. ફેરફારો લાગુ કરવા માટે IDEને ફરી શરૂ કરો.", + "wizardStep3Success": "એજન્ટ કૉન્ફિગર થઈ ગયો છે!", + "wizardServerCheck": "AgentBridge સર્વર", + "wizardRunning": "ચાલી રહ્યું છે", + "wizardNotRunning": "ચાલી રહ્યું નથી", + "wizardCertCheck": "પ્રમાણપત્ર", + "wizardTrusted": "વિશ્વસનીય", + "wizardNotTrusted": "હજુ વિશ્વસનીય નથી — Trust Cert બટનનો ઉપયોગ કરો", + "wizardTutorialTitle": "સેટઅપ સૂચનાઓ:", + "wizardEnableDns": "/etc/hosts એન્ટ્રીઓ ઉમેરો", + "wizardDnsAlreadyEnabled": "આ એજન્ટ માટે DNS પહેલેથી સક્ષમ છે", + "enablingDns": "સક્ષમ થઈ રહ્યું છે…", + "modelSelectorTitle": "લક્ષ્ય મોડલ પસંદ કરો", "modelSelectorSearch": "મોડેલ્સ શોધો…", "noModelsFound": "કોઈ મોડેલ્સ મળ્યા નથી", "quickLinks": "ઝડપી લિંક્સ", @@ -12056,7 +12063,7 @@ "pauseBtn": "થોભાવો", "resumeBtn": "ફરી શરૂ કરો", "clearBtn": "સાફ કરો", - "exportHar": "Export .har", + "exportHar": ".har નિકાસ કરો", "recordSession": "REC", "stopSession": "અટકાવો", "liveBadge": "લાઇવ", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP એજન્ટ્સ", "phrase": "CLIs જે OmniRoute એક્ઝિક્યુશન બેકએન્ડ તરીકે શરૂ કરે છે (રિવર્સ ફ્લો)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "મોટાભાગના વપરાશકર્તાઓ આને અવગણી શકે છે — ફક્ત જ્યારે કોઈ ઇન્ટિગ્રેશનને તેની જરૂર હોય ત્યારે જ તેનો ઉપયોગ કરો.", "flow": "ક્લાયન્ટ → OmniRoute → spawn CLI (stdio/ACP) → પ્રતિસાદ", "seeOther": "જુઓ →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "Omni દ્વારા બેકએન્ડ તરીકે ઉપયોગમાં લેવાતું CLI", "desc": "રિવર્સ એક્ઝિક્યુશન", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → CLI સ્પૉન કરો → પ્રતિસાદ", "examples": "દા.ત.: claude, codex (ACP)" } }, @@ -12246,7 +12253,7 @@ "pageSubtitle": "OmniRoute તરફ નિર્દેશ કરતા કોડ ટૂલ્સ", "searchPlaceholder": "CLI શોધો…", "filterDetectionLabel": "ડિટેક્શન", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "મૂળ URL", "detectionAll": "બધા", "detectionInstalled": "ઇન્સ્ટોલ કરેલ", "detectionNotFound": "મળ્યું નથી", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "વેબહૂક્સ", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "વેબહૂક એન્ડપોઇન્ટ્સની નોંધણી કરો, યાદી જુઓ, પરીક્ષણ કરો અને દૂર કરો. ઇવેન્ટ સબ્સ્ક્રિપ્શન્સ (request.completed, request.failed, quota.exceeded વગેરે) કૉન્ફિગર કરો અને ડિલિવરીના પુનઃપ્રયાસોનું સંચાલન કરો." }, "omni-mcp": { "name": "MCP સર્વર", @@ -12390,47 +12397,47 @@ "description": "મુખ્ય OpenAI-compatible ઇન્ફરન્સ એન્ડપોઇન્ટ્સ: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank, અને Responses API. AI એજન્ટ્સ માટે પ્રાથમિક ઇન્ટિગ્રેશન સરફેસ." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: સર્વ કરો", "description": "CLI માંથી OmniRoute સર્વર શરૂ કરો, બંધ કરો અને રીસ્ટાર્ટ કરો. ડેમન મોડ, પોર્ટ કન્ફિગરેશન, ઑટો-રિકવરી, સિસ્ટમ ટ્રે ઇન્ટિગ્રેશન અને ડેશબોર્ડ ઓપન શોર્ટકટ મેનેજ કરો." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: સ્થિતિ", "description": "CLI માંથી સર્વર હેલ્થ, કમ્પોનન્ટ સ્ટેટસ અને લાઇવ મેટ્રિક્સ તપાસો. સર્કિટ બ્રેકર્સ અને પ્રોવાઇડર સ્ટેટસના રીઅલ-ટાઇમ ડેશબોર્ડ માટે `health`, `health components`, અને `health watch` ચલાવો." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: પ્રદાતાઓ", "description": "CLI માંથી પ્રોવાઇડર કનેક્શન્સ મેનેજ કરો: ઉપલબ્ધ/કન્ફિગર કરેલા પ્રોવાઇડર્સની સૂચિ બનાવો, ઉમેરો, test, test-all, validate, API કી રોટેટ કરો અને પ્રોવાઇડર દીઠ મેટ્રિક્સ જુઓ." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: API કીઝ", "description": "CLI માંથી OmniRoute API કી બનાવો, સૂચિબદ્ધ કરો, રોટેટ કરો અને રદ કરો. પ્રોવાઇડર ઓથેન્ટિકેશન માટે OAuth ફ્લો મેનેજ કરો અને કી સ્કોપ્સ તથા એક્સપાયરેશનનું નિરીક્ષણ કરો." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: મોડલ્સ", "description": "CLI માંથી ઉપલબ્ધ AI મોડેલ્સ ક્વેરી કરો, મોડેલ એલિયાસિસની સૂચિ બનાવો અને સંપૂર્ણ મોડેલ કેટલોગ બ્રાઉઝ કરો. પ્રોવાઇડર દ્વારા ફિલ્ટર કરો, ક્ષમતા દ્વારા શોધો અને મોડેલ નેમ વેરિઅન્ટ્સ રિઝોલ્વ કરો." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: ચેટ", "description": "CLI માંથી ચેટ કમ્પ્લીશન્સ મોકલો, રિસ્પોન્સ સ્ટ્રીમ કરો અને ઇન્ટરેક્ટિવ REPL સત્ર શરૂ કરો. તમામ OmniRoute પ્રોવાઇડર્સ, કોમ્બો રાઉટિંગ અને સિસ્ટમ પ્રોમ્પ્ટ કન્ફિગરેશનને સપોર્ટ કરે છે." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: રૂટિંગ અને કોમ્બોઝ", "description": "CLI માંથી રાઉટિંગ કોમ્બોઝ બનાવો, સૂચિબદ્ધ કરો, અપડેટ કરો અને ડિલીટ કરો. રાઉટિંગ વ્યૂહરચનાઓનું પરીક્ષણ કરો, કોમ્બો મેટ્રિક્સનું નિરીક્ષણ કરો અને ઇન્ટરેક્ટિવ રીતે ફોલબેક ચેઇન્સ કન્ફિગર કરો." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: સ્થિતિસ્થાપકતા અને ક્વોટા", "description": "CLI માંથી સર્કિટ-બ્રેકર સ્ટેટ્સ, કનેક્શન કૂલડાઉન્સ, ક્વોટા લિમિટ્સ અને બેકઓફ લેવલ્સનું નિરીક્ષણ અને મેનેજ કરો. અટકેલા પ્રોવાઇડર્સને રીસેટ કરો અને રેઝિલિઅન્સ થ્રેશોલ્ડ્સ કન્ફિગર કરો." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: કમ્પ્રેશન", "description": "CLI માંથી પ્રોમ્પ્ટ કમ્પ્રેશન કન્ફિગર અને ટેસ્ટ કરો. RTK ફિલ્ટર્સ, Caveman નિયમો, સ્ટેક્ડ કમ્પ્રેશન મોડ્સ મેનેજ કરો અને વાસ્તવિક પ્રોમ્પ્ટ્સ સાથે કમ્પ્રેશન આઉટપુટનું પૂર્વાવલોકન કરો." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: કોન્ટેક્સ્ટ અને સેશન્સ", "description": "CLI માંથી કોન્ટેક્સ્ટ એન્જિનિયરિંગ કન્ફિગરેશન્સ, RTK ફિલ્ટર સેટ્સ અને કન્વર્સેશન સેશન્સ મેનેજ કરો. context-relay સેટિંગ્સ લાગુ કરો અને એક્ટિવ કોન્ટેક્સ્ટ પાઇપલાઇન્સનું નિરીક્ષણ કરો." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: ખર્ચ અને ઉપયોગ", "description": "CLI માંથી ખર્ચ બ્રેકડાઉન, ટોકન વપરાશ અને કૉલ લૉગ્સ જુઓ. પ્રોવાઇડર, મોડેલ અથવા તારીખ શ્રેણી દ્વારા ફિલ્ટર કરો. વપરાશ અહેવાલો એક્સપોર્ટ કરો અને કનેક્શન દીઠ ખર્ચનું નિરીક્ષણ કરો." }, "cli-mcp": { @@ -12496,8 +12503,8 @@ "crossLinkLabel": "તફાવત સમજો →" }, "comparison": { - "colAgent": "Agent Skills", - "colOmni": "Omni Skills", + "colAgent": "એજન્ટ સ્કિલ્સ", + "colOmni": "Omni સ્કિલ્સ", "whatIs": { "label": "તે શું છે", "agent": "મશીન-વાંચી શકાય તેવી SKILL.md જે બાહ્ય એજન્ટને OmniRoute ઓપરેટ કરવાનું શીખવે છે", @@ -12589,14 +12596,14 @@ "typeApikey": "API કી", "sortTypeFirst": "સૌથી સરળ પહેલા", "sortTypeFirstHelp": "દરેક જૂથમાં ગુણવત્તાનો ક્રમ જાળવી રાખીને, સાઇનઅપ પ્રયાસ દ્વારા જૂથબદ્ધ કરો (કોઈ સાઇનઅપ નહીં → OAuth લૉગિન → API કી)", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "સૌથી વિશ્વસનીય પ્રથમ", + "sortByReliabilityHelp": "પસંદ કરેલી સમયાવધિમાં સફળ થયેલા કૉલના હિસ્સા પ્રમાણે પ્રોવાઇડર્સને ક્રમબદ્ધ કરો. દર નક્કી કરવા માટે બહુ ઓછા કૉલ ધરાવતા પ્રોવાઇડર્સ, માપવામાં આવેલા પ્રોવાઇડર્સની નીચે, તેમનો સ્કોર-આધારિત ક્રમ જાળવી રાખે છે.", "typeLegend": "કોઈ સાઇનઅપ નહીં = શૂન્ય સેટઅપ · OAuth લૉગિન = તમારા પોતાના એકાઉન્ટથી સાઇન ઇન કરો · API કી = તમારી પોતાની કી અથવા તે પ્રદાતાના ફ્રી ટાયરનો ઉપયોગ કરો", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "વિશ્વસનીયતા", + "colReliabilityHelp": "છેલ્લા 24 કલાકમાં આ પ્રોવાઇડરે વાસ્તવમાં જવાબ આપેલા કૉલનો હિસ્સો. ડૅશનો અર્થ એ છે કે દર નક્કી કરવા માટે તેણે બહુ ઓછો ટ્રાફિક સંભાળ્યો હતો.", + "reliabilitySample": "છેલ્લા {hours} કલાકમાં {requests} કૉલમાંથી {successes} સફળ થયા", + "reliabilityTooFew": "છેલ્લા {hours} કલાકમાં માત્ર {requests} કૉલ — દર નક્કી કરવા માટે અપૂરતા", + "reliabilityNoTraffic": "છેલ્લા 24 કલાકમાં કોઈ કૉલ નોંધાયો નથી" }, "discovery": { "title": "પ્રદાતા શોધ", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar સમર્થક", + "description": "લાઇવ OmniRoute Radar સમર્થક ફીડ ચકાસી", + "criteria": "હસ્તાક્ષરિત લાઇવ Radar સમર્થક ફીડ ચકાસો." }, "first-token": { "name": "પ્રથમ ટોકન", @@ -12948,8 +12955,8 @@ "description": "દરેક સુસંગતતા નોડ માટે બહુવિધ કનેક્શન્સની મંજૂરી આપો." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "કોન્ટેક્સ્ટ વિન્ડો તપાસ અક્ષમ કરો", + "description": "ડાયરેક્ટ સિંગલ-મોડલ વિનંતીઓ માટે OmniRouteની સ્થાનિક કોન્ટેક્સ્ટ-વિન્ડો અને મહત્તમ-ઇનપુટ-ટોકન તપાસ છોડો. અપસ્ટ્રીમ પ્રોવાઇડર્સ હજી પણ તેમની વાસ્તવિક મર્યાદાઓ લાગુ કરે છે. પ્રોમ્પ્ટ કમ્પ્રેશન અને આઉટપુટ-ટોકન મર્યાદાઓ સક્રિય રહે છે." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "ક્લાયન્ટ્સને ફોરવર્ડ કરતા પહેલા Responses API પાસથ્રુ સ્ટ્રીમ્સમાંથી આંતરિક કોમેન્ટરી-ફેઝ આઉટપુટ આઇટમ્સ દૂર કરો. કાચી અપસ્ટ્રીમ કોમેન્ટરી મેળવવા માટે આ ફ્લેગને નિષ્ક્રિય કરો." @@ -12985,7 +12992,7 @@ "description": "બાઇટ્સ પહેલેથી જ ક્લાયન્ટ સુધી પહોંચી ગયા પછી પ્રતિસાદની ફરીથી વિનંતી કરવા અને તેને જોડવા માટે સ્ટ્રીમ પુનઃપ્રાપ્તિને મંજૂરી આપો." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "મધ્ય-સ્ટ્રીમ ચાલુ રાખવાનું tool-call માટે સુરક્ષિત બનાવો: tool call મોકલાયા પછી (હજુ પ્રગતિમાં હોય કે પહેલેથી પૂર્ણ થઈ ગયો હોય) કપાયેલા સ્ટ્રીમને ક્યારેય ફરી શરૂ કરશો નહીં, અને સમગ્ર retry budget વાપરવાને બદલે એક ખાલી continuation પછી અટકી જાઓ." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "જ્યારે સ્ટ્રીમ કોઈ ઉપયોગી ફ્રેમ મોકલતા પહેલાં બંધ થઈ જાય અને એ જ કનેક્શન પરનો મર્યાદિત પુનઃપ્રયાસ પૂરો થઈ જાય ત્યારે એક વાર સહોદર કનેક્શન પર ફેલઓવર કરો. ઉપયોગી સહોદર કનેક્શન ન હોય તો મૂળ early-EOF ભૂલ પરત કરવામાં આવે છે. બંધ: પુનઃપ્રયાસ પછી early-EOF અંતિમ રહે છે." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "સ્કિલ્સ સેન્ડબોક્સમાં નેટવર્ક એક્સેસ સક્ષમ કરો." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "સર્વર-માલિકીનું ટૂલ લૂપ", + "description": "મોડલ ક્લાયન્ટ માટે ઉપયોગી પ્રતિસાદ આપે ત્યાં સુધી નોન-સ્ટ્રીમિંગ સર્વર-માલિકીના ટૂલ કૉલ ચાલુ રાખો." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-Afterનું મૂળ", + "description": "એકીકૃત 429/503 unavailable responses પર, જ્યારે ભવિષ્યમાં ફરી પ્રયાસ કરવાનો કોઈ ચોક્કસ સમય જાણીતો ન હોય ત્યારે કૃત્રિમ 1s મોકલવાને બદલે Retry-Afterને છોડી દો, error.retry_after_provenance ઉમેરો અને combo drain paths પર ગદ્યરૂપ retry hints વાંચો." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Protected-Priority ઇન્ફ્રાસ્ટ્રક્ચર સ્ટોપ્સને 502 તરીકે દર્શાવો", + "description": "જ્યારે quota-only-fallback priority target એવા કારણસર comboને અટકાવે જે નિશ્ચિતપણે quota નથી—ખુલ્લું provider circuit breaker અથવા predictive latency skip—ત્યારે 503ને બદલે 502નો જવાબ આપો." } } }, @@ -13171,7 +13182,7 @@ "segmentHint": "દરેક સેગમેન્ટ = એક મફત પૂલ · પૂલ-ડિડુપ્લિકેટ, પ્રમાણિક ગણતરી (કોઈ ફૂલેલી રેટ-મર્યાદા સીમાઓ નહીં).", "boost": "એક વખતના $10 OpenRouter ટોપ-અપ સાથે દર મહિને ~{tokens} વધુ અનલૉક કરો (50 → 1000 req/day)", "uncapped": "કાયમી ધોરણે મફત, કોઈ પ્રકાશિત મર્યાદા નથી (રેટ-મર્યાદિત) — વાસ્તવિક ઍક્સેસ, હેડલાઇનમાં ગણવામાં આવતી નથી:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "પ્રાદેશિક ઓળખ તપાસ પાછળ વધુ ~{tokens}/મહિનો (દા.ત. મુખ્ય ભૂમિ ચીનની વાસ્તવિક-નામ ચકાસણી) — વાસ્તવિક ક્વોટા, મુખ્ય આંકડામાં ગણાયેલ નથી:", "tosRestricted": "{count, plural, one {# મોડેલ} other {# મોડેલો}} ToS-પ્રતિબંધિત તરીકે ચિહ્નિત થયેલ છે — તમે નક્કી કરો", "provider": "પ્રદાતા", "model": "મોડેલ", @@ -13270,80 +13281,80 @@ "viewFullHistory": "GitHub પર સંપૂર્ણ ઇતિહાસ જુઓ" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "રીઝનિંગ રૂટિંગ નીતિઓ", + "apiKeyTitle": "આ API કી માટે રીઝનિંગ રૂટિંગ", + "subtitle": "ક્લાયન્ટ સપોર્ટની જરૂર વિના મોડલ્સ અને રીઝનિંગ પ્રયત્નને ફરી રૂટ કરો. કોઈ નિયમ મેળ ન ખાય ત્યારે વિનંતીઓ યથાવત્ રહે છે.", + "loadError": "રીઝનિંગ નિયમો લોડ કરી શકાયા નહીં.", + "saveError": "નિયમ અમાન્ય છે અથવા સાચવી શકાયો નહીં.", + "saved": "રીઝનિંગ નિયમ સાચવાયો.", + "deleteConfirm": "આ રીઝનિંગ નિયમ કાઢી નાખવો છે?", + "deleteError": "રીઝનિંગ નિયમ કાઢી શકાયો નહીં.", + "empty": "મેળ ખાતા કોઈ રીઝનિંગ નિયમો કન્ફિગર કરેલા નથી.", + "all": "બધા", + "any": "કોઈપણ", + "enabled": "સક્ષમ", + "disabled": "અક્ષમ", + "filterSearch": "નિયમો શોધો", + "filterScope": "સ્કોપ મુજબ ફિલ્ટર કરો", + "filterStatus": "સ્થિતિ મુજબ ફિલ્ટર કરો", + "allModels": "બધા મોડલ", + "keepModel": "મોડલ જાળવો", + "otherModel": "અન્ય મોડલ", + "combo": "કોમ્બો", + "priorityShort": "પ્રાથમિકતા {value}", + "toggleAria": "{name} સક્ષમ કરો", + "edit": "સંપાદિત કરો", + "delete": "કાઢી નાખો", + "name": "નામ", + "description": "વર્ણન", + "scopeLabel": "સ્કોપ", + "apiKey": "API કી", + "sourceCombo": "સ્રોત કોમ્બો", + "connection": "કનેક્શન", + "sourceModel": "સ્રોત મોડલ અથવા વાઇલ્ડકાર્ડ", + "sourceModelOptional": "ખાલી = બધા મોડલ", + "sourceModelExample": "દા.ત. gpt-5*", + "sourceEffort": "સ્રોત પ્રયાસ", + "missing": "નિર્દિષ્ટ નથી", + "signalOnly": "બિન-અલગ તર્ક સંકેત", + "requestTags": "વિનંતી ટૅગ્સ", + "requestTagsExample": "કોડિંગ, આંતરિક", + "tagMode": "ટૅગ મેળાપ", + "effortMode": "પ્રયાસ મોડ", + "targetEffort": "લક્ષ્ય પ્રયાસ", + "routingTarget": "રૂટિંગ લક્ષ્ય", + "targetModel": "લક્ષ્ય મોડલ", + "targetCombo": "લક્ષ્ય કોમ્બો", + "budgetAction": "વિચાર બજેટ", + "budgetTokens": "બજેટ ટોકન્સ", + "priority": "પ્રાથમિકતા", + "saveChanges": "ફેરફારો સાચવો", + "add": "નિયમ ઉમેરો", + "cancel": "રદ કરો", + "simulateTitle": "નિયમનું સિમ્યુલેશન કરો", + "model": "મોડલ", + "effort": "પ્રયત્ન", + "transport": "પરિવહન", + "simulate": "અપસ્ટ્રીમ વિના અનુકરણ કરો", + "extendedComboWarning": "રાઉટિંગ દરમિયાન દરેક કૉમ્બો લક્ષ્ય માટે Max/Ultra ને અલગથી માન્ય કરવામાં આવે છે.", + "extendedUnknownWarning": "Max/Ultra સપોર્ટ ચકાસવા માટે લક્ષ્ય મોડલ દાખલ કરો.", + "extendedUnsupportedWarning": "Max/Ultra માત્ર યોગ્ય Codex GPT-5.6 મોડલ્સ દ્વારા સપોર્ટ થતું હોવાનું જાણીતું છે. અજ્ઞાત કસ્ટમ મોડલ્સને સર્વર ચેતવણી સાથે સ્વીકારે છે.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "વૈશ્વિક", + "apiKey": "API કી", + "combo": "કૉમ્બો", + "model": "મોડલ", + "connection": "કનેક્શન" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "ક્લાયન્ટ પાસેથી વારસામાં મેળવો", + "default": "ડિફૉલ્ટ વાપરો", + "force": "ફરજિયાત કરો" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "જાળવી રાખો", + "remove": "દૂર કરો", + "set": "નિશ્ચિત મૂલ્ય સેટ કરો" } }, "chaosConfig": { @@ -13425,91 +13436,91 @@ "tierCommunity": "સમુદાય (30-દિવસનો વિલંબ)", "activateTitle": "રેડાર સક્રિય કરો", "activateDescription": "રેડાર મફત મોડલ કેટલોગને સમુદાય-સ્રોતિત બુદ્ધિથી સમૃદ્ધ કરે છે - અપડેટ થયેલ મોડલ ઉપલબ્ધતા, ક્વોટા, અને સેટઅપ માર્ગદર્શિકાઓ.", + "accessScaleTitle": "સક્રિય કરતાં પહેલાં Radar ઍક્સેસને સમજો", + "accessScaleIntro": "તમે સંમતિ ન આપો ત્યાં સુધી Radar નેટવર્ક પર નિષ્ક્રિય રહે છે. આ નિયમોની સમીક્ષા કર્યા પછી Community ઍક્સેસ પસંદ કરો અથવા વ્યક્તિગત સમર્થક કી સક્રિય કરો.", + "accessCommunityRule": "Community — કોઈ કી જરૂરી નથી: 30 દિવસના વિલંબ સાથે સંપૂર્ણ કેટલૉગ.", + "accessSingleUseRule": "Star + follow — GitHub OAuth બંનેની ચકાસણી કરે પછી, તમારા GitHub એકાઉન્ટને લાઇવ કેટલૉગ વાંચવાની એક તક મળે છે; ત્યારબાદ ઍક્સેસ ફરી Community પર પાછી ફરે છે. આ એક વખતની ઍક્સેસ તે એકાઉન્ટ માટે ફરી જારી કરી શકાતી નથી.", + "accessContributorRule": "યોગદાનકર્તાઓ — મર્જ થયેલી PRs, commits અને lines ફક્ત સાપ્તાહિક રૅન્કિંગનો ક્રમ નક્કી કરે છે. ટોચના 10ને 365 દિવસ મળે છે; 11–100 ક્રમ ધરાવનારને 90 દિવસ મળે છે; Top 100ની બહારના યોગદાનકર્તાઓને PRની સંખ્યા ગમે તેટલી હોય, કોઈ ઍક્સેસ મળતી નથી. રૅન્કિંગમાંથી બહાર નીકળવાથી પહેલેથી મળેલો સમય ક્યારેય ઘટતો નથી.", + "accessSupporterRule": "સમર્થકો — એક વખતની ખરીદીથી કોઈ સ્વચાલિત નવીનીકરણ વિના 6 મહિના, 1 વર્ષ અથવા આજીવન ઍક્સેસ મળે છે. ખરીદીઓ, દાન, યોગદાનકર્તા અવધિઓ અને મૅન્યુઅલ મંજૂરીઓ સંચિત થાય છે; આજીવન ઍક્સેસ હંમેશાં પ્રબળ રહે છે.", + "accessUseTitle": "વ્યક્તિગત ઉપયોગ, પુનઃપ્રાપ્તિ અને સમીક્ષા", + "accessInstallationRule": "વ્યક્તિગત લાઇસન્સ — એક સમયે એક સક્રિય ઇન્સ્ટોલેશન પર કીનો ઉપયોગ કરો. OmniRoute હાર્ડવેરનું ફિંગરપ્રિન્ટિંગ કરતું નથી. પુનઃપ્રાપ્તિ ખોવાયેલી કીને રદ કરીને બદલે છે, પરંતુ તેની સમાપ્તિ તારીખ રીસેટ કરતી નથી.", + "accessAbuseRule": "દુરુપયોગની સમીક્ષા — 24 કલાકમાં ચોથું અલગ IP માત્ર મૅન્યુઅલ સમીક્ષા ફ્લૅગ બનાવે છે; તે કીને ક્યારેય આપમેળે બ્લૉક કે રદ કરતું નથી.", + "accessOffersRule": "લાઇવ ઑફર્સ મૅન્યુઅલી પસંદ કરવામાં આવે છે અને તે બદલાઈ અથવા સમાપ્ત થઈ શકે છે.", + "privacyTitle": "Radar શું આદાનપ્રદાન કરે છે", + "privacyDownloadsRule": "ડાઉનલોડ્સ — તમારા ઇન્સ્ટોલેશનને ક્રિપ્ટોગ્રાફિક રીતે સહી કરાયેલ કેટલૉગ અને રેફરલ મેટાડેટા મળે છે; માન્ય લાઇવ કી સહી કરાયેલ ઑફર્સ અને Intelને પણ અનલૉક કરે છે.", + "privacySendsRule": "મોકલે છે — સર્વર-સાઇડ સિંક સમર્થક કીને Bearer token તરીકે મોકલે છે અને HTTPS ઇન્ફ્રાસ્ટ્રક્ચરને કનેક્શન IP મળે છે. ફીડ-વિનંતીનું હિસાબીકરણ કોઈપણ મૂલ્યને મૂળ સ્વરૂપમાં સંગ્રહતું નથી: તે કી હૅશ, એકંદર વપરાશ અને દુરુપયોગની સમીક્ષા માટે દરરોજ બદલાતું સંક્ષિપ્ત IP HMAC રાખે છે.", + "privacyNeverRule": "ક્યારેય એકત્રિત કરવામાં આવતું નથી — prompts, responses, conversations, provider credentials, model traffic, uptime, latency અને local provider configuration ક્યારેય Radarને મોકલવામાં આવતાં નથી.", "activateButton": "સક્રિય કરો", "activating": "સક્રિય થઈ રહ્યું છે...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", + "keySectionTitle": "તમારી પાસે પહેલેથી સમર્થક કી છે?", + "keyInvalidFormatError": "અમાન્ય કી ફોર્મેટ. તે \"omr_\"થી શરૂ થવી જોઈએ અને ત્યારબાદ 40 hex characters હોવા જોઈએ.", + "activateWithKeyButton": "સમર્થક સક્રિય કરો", + "changeKeyButton": "કી બદલો", + "claimSectionTitle": "હજુ સુધી સમર્થક કી નથી?", + "contributorButton": "હું યોગદાનકર્તા છું", + "contributorHint": "GitHub OAuth વર્તમાન સાપ્તાહિક રૅન્કિંગ તપાસે છે: ટોચના 10ને 365 દિવસ અને 11–100 ક્રમ ધરાવનારને 90 દિવસ મળે છે. માત્ર PRની સંખ્યાના આધારે Top 100ની બહાર ક્યારેય ઍક્સેસ મળતી નથી.", + "supporterButton": "પ્રોજેક્ટને સમર્થન આપો", "supporterHint": "Support OmniRoute to get a supporter key with the live catalog and extra perks.", "colProvider": "પ્રદાતા", "colModel": "મોડલ", "colQuota": "ક્વોટા", + "colLimits": "દર મર્યાદાઓ", + "trainsOnPrompts": "પ્રોમ્પ્ટ્સ પર તાલીમ આપે છે", + "trainsOnPromptsHelp": "આ પ્રદાતાની શરતો જણાવે છે કે તે તમે મોકલેલા પ્રોમ્પ્ટ્સ પર તાલીમ આપી શકે છે. આ બેજ વિનાનાં મોડેલો કાં તો જણાવે છે કે તેઓ આમ કરતા નથી, અથવા તેનું દસ્તાવેજીકરણ કરતા નથી — નિવેદનનો અભાવ કોઈ ખાતરી નથી.", + "limitsUnknownHelp": "માત્ર Radar ફીડ દ્વારા જણાવાયેલી મર્યાદાઓ; આ એન્ટ્રી માટે કોઈ પ્રકાશિત મર્યાદાઓ નથી", + "contextUnknownHelp": "આ એન્ટ્રી માટે કોન્ટેક્સ્ટ વિન્ડો અજ્ઞાત છે", + "capabilityUnknownHelp": "ફીડ દ્વારા ક્ષમતા જણાવવામાં આવી નથી", "colContext": "સંદર્ભ", "colCapabilities": "ક્ષમતાઓ", "colTos": "ToS જોખમ", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "નવું", "setupGuide": "સેટઅપ માર્ગદર્શિકા", "disabledByFeed": "રેડાર ફીડ દ્વારા અક્ષિપ્ત", "capTools": "સાધનો", "capVision": "દ્રષ્ટિ", "capThinking": "વિચારવું", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "કૅટલૉગ", + "freeCreditsTab": "મફત ક્રેડિટ્સ", + "freeCreditsSubtitle": "Radar દ્વારા ટ્રૅક કરાયેલા પ્રદાતાઓની રેફરલ લિંક્સ — તેમનો ઉપયોગ કરવાથી તમને કોઈ વધારાનો ખર્ચ થતો નથી અને OmniRouteને સમર્થન આપવામાં મદદ મળે છે.", + "fixedLinksEmpty": "હજુ સુધી કોઈ રેફરલ લિંક્સ ઉપલબ્ધ નથી. અપડેટ્સ તપાસવા માટે Radar સિંક કરો.", + "requiredActionLabel": "શું કરવું:", + "claimButton": "ક્રેડિટ્સ મેળવો", + "campaignsTitle": "મર્યાદિત સમયનાં અભિયાનો", + "campaignsEmpty": "હાલ કોઈ સક્રિય અભિયાન નથી — પછીથી ફરી તપાસો.", + "campaignsUpsellCommunity": "મર્યાદિત સમયનાં અભિયાનો સમર્થકો માટેની વધારાની સુવિધા છે. આ પેજ પરની નિશ્ચિત લિંક્સમાંની દરેક વસ્તુ સૌ માટે મફત રહેશે.", + "campaignsValidUntil": "{date} સુધી માન્ય", + "colActions": "ક્રિયાઓ", + "localBadge": "સ્થાનિક", + "editModel": "ફેરફાર કરો", + "saveModel": "સાચવો", + "cancelEdit": "રદ કરો", + "resetModel": "સ્થાનિક ફેરફારો રીસેટ કરો", + "hideModel": "છુપાવો", + "restoreModel": "પુનઃસ્થાપિત કરો", + "hiddenModelsTitle": "છુપાવેલા મોડેલો", + "modelDisplayName": "સ્થાનિક પ્રદર્શન નામ", + "modelEnabled": "સ્થાનિક રીતે સક્ષમ", + "localStateSaveFailed": "સ્થાનિક Radar સેટિંગ્સ સાચવવામાં નિષ્ફળતા", + "guidedCombos": "માર્ગદર્શિત કોમ્બોઝ", + "offers": "ઑફર્સ", + "intel": "માહિતી" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar માર્ગદર્શિત કોમ્બોઝ", + "subtitle": "Radar દ્વારા પસંદ કરાયેલા સમકક્ષ મફત મોડેલોમાંથી પ્રાથમિકતા-આધારિત ફૉલબૅક્સ બનાવો.", + "backToRadar": "Radar પર પાછા જાઓ", + "loading": "કોમ્બો સૂચનો લોડ થઈ રહ્યાં છે...", + "familyLabel": "મોડેલ ફૅમિલી", + "modelsLabel": "પ્રાથમિકતા ક્રમ", + "strategyReason": "પ્રાથમિકતા પહેલાં સૌથી મોટા પુનરાવર્તિત મફત બજેટનો ઉપયોગ કરે છે, પછી સક્રિય પ્રદાતાઓમાં ફૉલબૅક કરે છે.", + "generateButton": "કોમ્બો બનાવો", + "generating": "બનાવી રહ્યું છે...", + "alreadyCreated": "પહેલેથી બનાવેલ છે", + "created": "કોમ્બો બનાવવામાં આવ્યો", + "noSuggestions": "હાલમાં કોઈ પણ પાત્ર મોડેલ ફેમિલી પાસે ઓછામાં ઓછા બે પ્રદાતાઓ સાથે સક્રિય કનેક્શન્સ નથી.", + "catalogRequired": "ક્યુરેટ કરેલી મોડેલ ફેમિલીઝ લોડ કરવા માટે પહેલાં Radar કૅટલૉગને સિંક કરો.", + "loadFailed": "Radar કોમ્બો સૂચનો લોડ કરવામાં નિષ્ફળતા મળી.", + "createFailed": "કોમ્બો બનાવવામાં નિષ્ફળતા મળી. તમારા પ્રદાતા કનેક્શન્સની સમીક્ષા કરો અને ફરી પ્રયાસ કરો." }, "radarSetupPage": { "title": "પ્રદાતા સેટઅપ", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "કનેક્શન સ્થિતિસ્થાપકતા", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "તમારા કનેક્શન્સ આપમેળે પુનઃસ્થાપિત થાય છે", + "reassuranceDetail": "સામાન્ય રીતે કોઈ કાર્યવાહી કરવાની જરૂર નથી. નિષ્ફળતાઓ પછી OmniRoute કનેક્શનને થોડા સમય માટે વિરામ આપે છે અને પછી સુરક્ષિત રીતે ફરી પ્રયાસ કરે છે.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "વિનંતીઓ મોકલી શકાય છે", + "coolingDown": "ટૂંક સમયમાં ફરી પ્રયાસ કરવામાં આવશે", + "lockedOut": "તમારા ધ્યાનની જરૂર છે" }, "table": { "status": "સ્થિતિ", @@ -13598,7 +13609,7 @@ "remaining": "બાકી", "noLockouts": "કોઈ સક્રિય લોકઆઉટ નથી", "provider": "પ્રદાતા", - "id": "ID", + "id": "આઈડી", "authType": "પ્રમાણીકરણ પ્રકાર", "priority": "પ્રાથમિકતા", "isActive": "સક્રિય", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "જ્યારે લક્ષ્ય મોડેલમાં જરૂરી ક્ષમતાઓ (દૃષ્ટિ, સાધનો, રચિત આઉટપુટ, સંદર્ભ વિન્ડો) નથી ત્યારે વિતરણ પહેલાં વિનંતીઓને નકારી નાખો. કોમ્બો-લેયર સુસંગતતા ફિલ્ટરને બાયપાસ કરતી સીધી એકલ-પ્રદાતા વિનંતિઓને સુરક્ષિત કરે છે.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "સીધી સિંગલ-મોડેલ વિનંતીઓ માટે OmniRouteની સ્થાનિક કોન્ટેક્સ્ટ-વિન્ડો અને મહત્તમ-ઇનપુટ-ટોકન ચકાસણીને અવગણો. અપસ્ટ્રીમ પ્રદાતાઓ હજી પણ તેમની વાસ્તવિક મર્યાદાઓ લાગુ કરે છે. પ્રોમ્પ્ટ કમ્પ્રેશન અને આઉટપુટ-ટોકન મર્યાદાઓ સક્રિય રહે છે.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "શોધના આંકડા અને તાજેતરની શોધોમાં ફક્ત એવા પ્રદાતાઓની ગણતરી થાય છે જેમનું કનેક્શન હજી સક્રિય છે (duckduckgo-free જેવા કી-રહિત પ્રદાતાઓ હંમેશાં ગણાય છે). બંધ કરવાથી પ્રદાતા ID ધરાવતી દરેક જાળવી રાખેલી શોધ પંક્તિ રહે છે.", "publicSystem": { "notFound": { "title": "પૃષ્ઠ મળ્યું નથી", @@ -13699,11 +13710,11 @@ "maintenanceInfo": "મરામત માહિતી", "service": "સેવા", "unknown": "અજ્ઞાત", - "notAvailable": "n/a", + "notAvailable": "લાગુ નથી", "providersTracked": "પ્રદાતાઓને ટ્રેક કરવામાં આવ્યા", "circuitBreakerState": "પ્રદાતા સર્કિટ બ્રેકર સ્થિતિ", "lastUpdate": "છેલ્લી અપડેટ: {timestamp}", - "uptimeMinutes": "{minutes}m", + "uptimeMinutes": "{minutes}મિ", "uptimeHoursMinutes": "{hours}ક {minutes}મ" }, "statusPages": { @@ -13848,12 +13859,12 @@ "errorPopupClosed": "અધિકૃતતા વિન્ડો પૂર્ણ થાય તે પહેલાં બંધ કરવામાં આવી હતી.", "errorAccessTokenRequired": "એક્સેસ ટોકન જરૂરી છે.", "errorImportFailed": "આયાત નિષ્ફળ ગઈ", - "title": "Connect Trae SOLO", + "title": "Trae SOLO કનેક્ટ કરો", "authorizeDescription": "trae.ai મારફતે પોપઅપમાં અધિકૃત કરો. ટોકન આયાત થયા પછી પોપઅપ પોતે બંધ થઈ જશે.", "authorizeImportant": "મહત્વપૂર્ણ: તમે પહેલા trae.ai માં બ્રાઉઝરમાં લોગિન કરેલ હોવું જોઈએ. અધિકૃત પાનું માત્ર એક અસ્તિત્વમાં રહેલ સત્રને પુષ્ટિ કરે છે — તે તમને લોગિન કરી શકતું નથી. જો તમે \"લોગિન નિષ્ફળ\" જુઓ, તો \"Open solo.trae.ai\" પર ક્લિક કરો, લોગિન કરો, પછી અહીં પાછા આવો.", "waitingForAuthorization": "trae.ai માટે રાહ જોઈ રહ્યા છીએ…", "authorizeWithBrowser": "બ્રાઉઝર સાથે અધિકૃત કરો", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai ખોલો", "orPasteManually": "અથવા ટોકન હાથે પેસ્ટ કરો", "manualInstructions": "solo.trae.ai પર સાઇન ઇન કરો, DevTools → Network ખોલો, કોઈપણ ચેટ સંદેશ મોકલો, અને Authorization: Cloud-IDE-JWT {tokenPlaceholder} વિનંતી હેડરમાંથી JWT નકલ કરો. JWT ની આયુષ્ય ~14 દિવસ છે. વૈકલ્પિક ઓળખ ક્ષેત્રો સમાન વિનંતી શરીરમાં common_params માંથી આવે છે.", "accessTokenLabel": "એક્સેસ ટોકન (ક્લાઉડ-આઈડી-જેડબ્લ્યુટી)", @@ -14070,11 +14081,11 @@ "actionApprove": "યોજના મંજૂર કરો", "actionCancel": "રદ કરો", "actionSeeInGraph": "ગ્રાફમાં જુઓ", + "actionRepeat": "પુનરાવર્તન કરો", "actionDone": "ક્રિયા લાગુ કરાઈ", "actionFailed": "ક્રિયા નિષ્ફળ: {error}", "detailFailed": "વિગતો લોડ કરવામાં નિષ્ફળ: {error}", "mirroredInA2A": "A2A માં પ્રતિબિંબિત", - "actionRepeat": "પુનરાવર્તન કરો", "repeatConfirm": "પુષ્ટિ કરવા માટે ફરીથી ક્લિક કરો", "repeatDone": "નવું રન બનાવવામાં આવ્યું", "repeatUnavailable": "મૂળ ઇનપુટ ઉપલબ્ધ નથી" @@ -14088,57 +14099,57 @@ "networkError": "નેટવર્ક ભૂલ — પ્રદાતા એક્સપોઝર સેટિંગને અપડેટ કરી શકતા નથી" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "સમર્થકો માટેની ઑફરો", + "subtitle": "Radar તરફથી સત્તાવાર ડિસ્કાઉન્ટ, ક્રેડિટ્સ, ટ્રાયલ્સ અને સમીક્ષા કરેલા ભાગીદાર લાભો.", + "backToRadar": "Radar પર પાછા જાઓ", + "loading": "ઑફરો લોડ થઈ રહી છે...", + "refresh": "ઑફરો રિફ્રેશ કરો", + "refreshing": "રિફ્રેશ થઈ રહ્યું છે...", + "loadFailed": "અમે ઑફરો રિફ્રેશ કરી શક્યા નથી. છેલ્લી ચકાસેલી સ્થાનિક કૅશ જાળવી રાખવામાં આવી છે.", + "empty": "અત્યારે કોઈ સક્રિય ઑફર ઉપલબ્ધ નથી.", + "keyRequiredTitle": "સમર્થક કી જરૂરી છે", + "keyRequiredDescription": "ઑફરો એ Radarનો લાઇવ લાભ છે. Radar સ્ક્રીન પર હાલની સમર્થક કી ઉમેરો, તમારા યોગદાનકર્તા સ્ટેટસની ચકાસણી કરો અથવા કી મેળવવા માટે પ્રોજેક્ટને સમર્થન આપો.", + "contributorButton": "હું યોગદાનકર્તા છું", + "supporterButton": "પ્રોજેક્ટને સમર્થન આપો", + "partnerBadge": "ભાગીદાર", + "officialBadge": "સત્તાવાર", + "conditionsLabel": "શરતો:", + "validUntil": "{date} સુધી માન્ય", + "noExpiry": "કોઈ સમાપ્તિ તારીખ જાહેર કરાઈ નથી", + "openOffer": "ઑફર જુઓ", + "trialDays": "{days, plural, one {# દિવસ} other {# દિવસો}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "રડાર ઇન્ટેલિજન્સ", + "subtitle": "Radarની માલિકીની ELO રેન્કિંગ્સ અને તથ્ય-આધારિત કેટલોગ ફેરફારો.", + "backToRadar": "Radar પર પાછા જાઓ", + "loading": "Intel લોડ થઈ રહ્યું છે...", + "refresh": "Intel રિફ્રેશ કરો", + "syncing": "રિફ્રેશ થઈ રહ્યું છે...", + "loadFailed": "અમે Intel રિફ્રેશ કરી શક્યા નથી. છેલ્લી ચકાસેલી સ્થાનિક કૅશ જાળવી રાખવામાં આવી છે.", + "empty": "હજુ સુધી કોઈ ચકાસાયેલ Intel સ્નૅપશૉટ ઉપલબ્ધ નથી.", + "supporterBadge": "Radar સમર્થક", + "methodology": "પદ્ધતિ", + "eloMethod": "ELO, પ્રારંભિક {initial}, K={factor}", + "freshness": "કેટલોગની તાજગી", + "ageDays": "{days, plural, one {# દિવસ જૂનું} other {# દિવસ જૂનું}}", + "trend": "કેટલોગનું વલણ", + "modelDelta": "{current} મૉડલ્સ, +{added} / -{removed}", + "ranking": "મૉડલ રેન્કિંગ", + "noRankings": "હજુ સુધી કોઈ પુષ્ટિ થયેલી સરખામણીઓ ઉપલબ્ધ નથી.", + "model": "મૉડલ", + "category": "શ્રેણી", + "rating": "રેટિંગ", + "matches": "મૅચો", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "તાજું", + "aging": "જૂનું થઈ રહ્યું છે", + "stale": "વાસી" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "વધી રહ્યું છે", + "stable": "સ્થિર", + "shrinking": "ઘટી રહ્યું છે" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "વિનંતી પ્રદાતા સંદર્ભ વિન્ડોને પાર કરે છે" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference એ OmniRouteનો ઓપન સોર્સ મિત્ર છે", + "description": "એક ખર્ચ-ક્રમબદ્ધ ગેટવે, જે એક OpenAI-સુસંગત એન્ડપોઇન્ટ પાછળ ડઝનબંધ અગ્રણી મૉડલ્સનું પુનર્વેચાણ કરે છે — દરેક વિનંતીને સૌથી સસ્તા પાત્ર પ્રદાતા તરફ રૂટ કરે છે અને ક્યારેય સૂચિ કિંમતથી વધુ વસૂલતું નથી.", + "cta": "API Key મેળવો", + "partnerLinkNote": "ભાગીદાર લિંક", + "dismissAriaLabel": "બંધ કરો" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models કેટલોગમાં વિચાર-સ્તરના વેરિઅન્ટ્સ (દા.ત. -low, -medium, -high) બનાવવાનું નિષ્ક્રિય કરો." } diff --git a/src/i18n/messages/ha.json b/src/i18n/messages/ha.json index c6b9435d2e..23e1e42268 100644 --- a/src/i18n/messages/ha.json +++ b/src/i18n/messages/ha.json @@ -209,7 +209,7 @@ "enableCloud": "Kunna Cloud", "expirationBannerExpiringSoon": "Tutar Karewa Ba da Jimawa ba", "retry": "Sake Gwada", - "embeddings": "Embeddings", + "embeddings": "Wakilcin lambobi", "errorCount": "Adadin Kurakurai", "backupReasonManual": "Dalilin Ajiyar Bayanai da Hannu", "safeSearchModerate": "Matsakaicin Bincike Mai Tsaro", @@ -832,7 +832,7 @@ "wizardStep3Validate": "Tabbatar", "wizardStep4Cost": "Kuɗi da ƙirƙirawa", "wizardProviderLabel": "Mai samarwa", - "wizardEndpointLabel": "Endpoint", + "wizardEndpointLabel": "Mafitar haɗi", "wizardModelLabel": "Samfuri", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (za mu sauya shi)", @@ -992,16 +992,20 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Bayyana ID na madubi na claude/<provider>/<model> a /v1/models domin gano samfuran gateway na Claude Code ya jera samfuran da ba na Claude ba. Gargadi: idan aka kunna wannan a ko’ina, zai ninka shigarwar kundin ga duk abokan hulɗa.", "featureFlagNoThinkingAliasEnabledDescription": "Babban maɓalli na aliases na gateway na no-think/<provider>/<model>. Kunne (tsoho): /v1/models yana bayyana nau'in da ba ya yin tunani ga kowane samfurin Claude mai ikon tunani da ya cancanta, kuma ID na no-think/ da aka aika cikin buƙata yana komawa ga ainihin samfurin tare da hana yin nazari. Kashe: ba a bayyana kowane nau'i, kuma ana ɗaukar ID na no-think/ kamar kowane ID na samfurin da ba a sani ba. Zaɓin shiga/fita na ModelSpec.noThinkingAlias na kowane samfurin yana ci gaba da aiki yayin da wannan yake kunne.", "featureFlagChatVirtualLanesEnabledDescription": "Kunna layukan karɓa na kama-da-wane masu daidaitawa ga kowane tenant domin aika buƙatu zuwa provider (#9654): yawaitar buƙatun tenant ɗaya ba za ta sake jawo wa wani kuskuren 503 ba. Env var na OMNIROUTE_CHAT_VIRTUAL_LANES yana da fifiko kan wannan sauyin dashboard; sauye-sauye za su fara aiki bayan sake kunna server.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Shafukan masu samarwa na Dashboard: nuna alamar Kyauta kawai a kan sigogin da mai samarwar yake amincewa da su — wannan yana watsi da dabarar hasashen sunan nuni, filayen kyauta marasa ƙimar boolean, da kari na :free a kan masu samarwa da aka yi wa rajista waɗanda ba su da matakin kyauta da aka rubuta. Idan an Kashe, ana ci gaba da amfani da tsohuwar ƙa’idar alamar.", + "featureFlagProxySkipRecentlyFailedDescription": "Rukunin proxy da juyawar opencode ta kowane asusu suna daina sake amfani da proxy da ya gaza kwanan nan (ya ƙi gwajin TCP, ko aka karɓi 429 ta cikinsa) na wani lokaci na kowane tsari wanda ke ninkuwa a duk lokacin da gazawar ta sake faruwa, har zuwa iyaka. Ba a rubuta matsayin proxy; idan aka ware dukkan waɗanda za a iya zaɓa, zaɓin ba ya canzawa. A kashe yake ta tsohuwa: tsarin zaɓi daidai yake da juyawa na yau da kullum.", + "featureFlagProxyPoolEgressObservationDescription": "A ƙarƙashin rukunin proxy a dashboard, nuna adadin IPs na fita da aka lura sun yi wa membobinsa hidima a cikin awanni 24 da suka gabata, adadin haɗin da suka yi amfani da su, da mafi yawan adadin da aka gani a bayan IP guda. Na karantawa kawai ne, ana lissafa shi daga kundin proxy, kuma ba a taɓa amfani da shi wajen routing. A kashe yake ta tsohuwa: editan rukuni ba ya canzawa kuma hanyar lura tana amsa null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "A yayin binciken lafiyar proxy, bari gwajin da manufa ta ƙi (401/403/429: proxy ya isar, amma wurin da ake nufi ya ƙi wannan IP na fita) ya sake saita jerin gazawar proxy masu jere, kamar gwajin da aka yi wa hidima. A kashe yake ta tsohuwa: ƙin amincewa yana kasancewa tsaka-tsaki kuma yana riƙe da jerin gazawar. 5xx yana kasancewa mara tabbas a kowane hali, kuma ƙin amincewa ba ya taɓa cirewa, kashewa ko sake kunna proxy.", "sidebar": { "home": "Gida", - "dashboard": "Dashboard", - "providers": "Providers", + "dashboard": "Allon sarrafawa", + "providers": "Masu samarwa", "combos": "Haɗe-haɗe", "usage": "Amfani", "analytics": "Nazari", "costs": "Kuɗaɗe", "health": "Lafiya", - "proxy": "Proxy", + "proxy": "Wakili", "limits": "Iyakokin Ƙa'ida", "cliTools": "Kayan Aikin CLI", "media": "Kafofin Watsa Labarai", @@ -1025,7 +1029,7 @@ "embeddedServices": "Ayyukan da aka Saka", "embeddedServicesSubtitle": "Ayyukan gida na zaɓi", "logs": "Rajistoci", - "webhooks": "Webhooks", + "webhooks": "Ƙugiyoyin yanar gizo", "webhooksSubtitle": "Sami sanarwar abubuwan da suka faru", "logExport": "Fitar da rajista", "logExportSubtitle": "Aika rajistocin kira zuwa waje", @@ -1189,7 +1193,7 @@ "gamificationGroup": "Mayarwa Kamar Wasa", "toolsGroup": "Kayan aiki", "integrationsGroup": "Haɗe-haɗe", - "proxyGroup": "Proxy", + "proxyGroup": "Wakili", "costsParametersGroup": "Sigogin Kuɗi", "auditGroup": "Binciken Ayyuka", "batchGroup": "Rukuni", @@ -1314,7 +1318,7 @@ "noResults": "Babu sakamako" }, "webhooks": { - "title": "Webhooks", + "title": "Ƙugiyoyin yanar gizo", "description": "Saita kiran-baya na HTTP don abubuwan da ke faruwa a tsarin.", "configuredWebhooks": "Webhooks da Aka Saita", "configuredWebhooksDesc": "Sarrafa wuraren isarwa, abubuwan da aka yi rajista da su, matsayi, da aika gwaji.", @@ -1721,7 +1725,7 @@ "costs": "Kuɗaɗe", "health": "Lafiya", "runtime": "Lokacin Gudana", - "webhooks": "Webhooks", + "webhooks": "Kiran yanar gizo", "home": "Gida", "activity": "Ayyuka", "agentSkills": "Ƙwarewar Wakili", @@ -2014,7 +2018,7 @@ "comboHealthSuccessRate": "Adadin nasara", "comboHealthQuotaHealth": "Lafiyar ƙaso", "comboHealthRequests": "Buƙatu", - "comboHealthTokens": "Tokens", + "comboHealthTokens": "Tokuna", "comboHealthAvgLatency": "Matsakaicin jinkiri", "comboHealthTotalRequests": "Jimillar buƙatu", "comboHealthExecutionTargets": "Manufofin aiwatarwa", @@ -2383,7 +2387,7 @@ "apiManagerCustomRateLimits": "Iyakokin Yawan Amfani na Musamman", "apiManagerCustomRateLimitsDesc": "Maye gurbin iyakokin tsoho na gaba ɗaya. Bar shi babu komai don amfani da tsoffin saituna.", "apiManagerRateLimitRequestsPlaceholder": "Buƙatu", - "apiManagerRateLimitReqPer": "req /", + "apiManagerRateLimitReqPer": "buƙata /", "apiManagerRateLimitSecondsPlaceholder": "Daƙiƙa", "apiManagerRemoveLimitTitle": "Cire iyaka", "apiManagerTimezonePlaceholder": "America/Sao_Paulo", @@ -2462,7 +2466,7 @@ "videoDescription": "Ƙirƙiri bidiyoyi da AnimateDiff, Stable Video Diffusion ta hanyar ComfyUI ko SD WebUI.", "musicDescription": "Tsara kiɗa ta amfani da Stable Audio Open ko MusicGen ta hanyar ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Sakawa", "image": "Hoto", "imageToText": "Hoto zuwa Rubutu", "tts": "Rubutu zuwa Magana", @@ -2743,8 +2747,8 @@ "modelAliases": "Laƙaban samfura", "addModel": "Ƙara samfur", "routeModelPlaceholder": "Tura {model} zuwa...", - "baseUrl": "Base URL", - "apiKey": "API Key", + "baseUrl": "URL na Asali", + "apiKey": "Maɓallin API", "configured": "An saita", "notConfigured": "Ba a saita ba", "notInstalled": "Ba a girka ba", @@ -2776,9 +2780,9 @@ "cliRuntimeDetected": "An gano lokacin gudanarwar CLI kuma yana shirye", "cliFoundNotRunnable": "An sami CLI amma ba ya iya gudana{reason}", "cliRuntimeNotDetected": "Ba a gano lokacin gudanarwar CLI ba", - "binary": "Binary", + "binary": "Na Biyu", "configPath": "Hanyar config", - "configPathShort": "Config", + "configPathShort": "Saituna", "failedCheckRuntimeStatus": "An kasa duba matsayin lokacin gudanarwa.", "copy": "Kwafa", "copied": "An kwafa", @@ -2919,16 +2923,16 @@ "grok-build": "Wakilin shirye-shirye na xAI Grok Build TUI tare da goyon bayan mai samarwa na musamman", "droid": "Mataimakin AI na Factory Droid", "openclaw": "Mataimakin AI na Open Claw", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", - "qwen": "Alibaba Qwen Code CLI", + "cline": "CLI na mataimakin rubuta lamba na Cline AI", + "kilo": "CLI na mataimakin AI na Kilo Code", + "qwen": "CLI na Alibaba Qwen Code", "cursor": "Editan lambar AI na Cursor", "continue": "Mataimakin AI na Continue", "opencode": "Wakilin shirye-shiryen AI na OpenCode (Terminal)", "kiro": "Amazon Kiro — IDE mai ƙarfin AI", "windsurf": "Editan lambar AI na Windsurf", "copilot": "Mataimakin AI na GitHub Copilot", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "CLI na mataimakin rubuta lamba na Sourcegraph Amp", "hermes": "Mataimakin Terminal na Hermes AI", "hermes-agent": "Hermes Agent (na Nousresearch) - AI na terminal mai ci gaba tare da goyon bayan samfura da yawa (wakilci, gani, matsewa, da sauransu)", "custom": "Mai samar da saitunan CLI ko SDK na gama-gari masu dacewa da OpenAI", @@ -2939,11 +2943,11 @@ "jcode": "Wakilin shirye-shirye na terminal na jcode", "deepseek-tui": "Wakilin shirye-shirye na DeepSeek TUI da aka rubuta da Rust", "codewhale": "Wakilin shirye-shirye na CodeWhale, magajin DeepSeek TUI", - "smelt": "Smelt coding agent CLI", + "smelt": "CLI na wakilin rubuta lamba na Smelt", "pi": "Wakilin shirye-shirye na terminal na Pi mai sauƙin nauyi", "crush": "Wakilin shirye-shirye na terminal na Crush daga Charm", - "goose": "Goose autonomous agent CLI", - "interpreter": "Open Interpreter autonomous coding agent CLI", + "goose": "CLI na wakili mai cin gashin kansa na Goose", + "interpreter": "CLI na wakilin rubuta lamba mai cin gashin kansa na Open Interpreter", "omp": "Wakilin shirye-shirye na terminal na Oh My Pi", "letta": "Wakilin Letta CLI mai ƙwaƙwalwa mai ɗorewa da amfani da kayan aiki", "prime-agent": "Prime Agent — tsarin RLM na shirye-shirye mai inganta kansa tare da goyon bayan masu samarwa masu dacewa da OpenAI", @@ -2967,10 +2971,10 @@ "desc": "Kunna zaɓin \"OpenAI API key\"" }, "3": { - "title": "Base URL" + "title": "URL na asali" }, "4": { - "title": "API Key" + "title": "Maɓallin API" }, "5": { "title": "Ƙara Custom Model", @@ -2988,7 +2992,7 @@ "desc": "Buɗe fayil ɗin saitunan Continue" }, "2": { - "title": "API Key" + "title": "Maɓallin API" }, "3": { "title": "Zaɓi Model" @@ -3009,7 +3013,7 @@ "desc": "Shigar ta npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Maɓallin API" }, "3": { "title": "Saita Base URL", @@ -3035,11 +3039,11 @@ "desc": "Je zuwa Saituna → AI Provider" }, "2": { - "title": "Base URL", + "title": "URL na asali", "desc": "Liƙa URL na endpoint ɗinka na OmniRoute" }, "3": { - "title": "API Key" + "title": "Maɓallin API" }, "4": { "title": "Zaɓi Model" @@ -3060,7 +3064,7 @@ "desc": "Zaɓi \"Add custom provider\" (mai dacewa da OpenAI)" }, "3": { - "title": "Base URL", + "title": "URL na asali", "desc": "http://127.0.0.1:20128/v1" }, "4": { @@ -3270,7 +3274,7 @@ "strictRandomDesc": "Cakuɗa katunan — yana amfani da kowane model sau ɗaya kafin sake cakuɗawa", "fusion": "Haɗewa", "fusionDesc": "Yana aika prompt zuwa kowane model na panel a lokaci guda, sannan judge model ya haɗa amsoshi ya samar da amsa ta ƙarshe guda ɗaya", - "fusionJudgeModel": "Judge model", + "fusionJudgeModel": "Samfurin alƙali", "fusionJudgeModelHelp": "Model da ke haɗa amsoshin panel zuwa amsa ta ƙarshe guda ɗaya. A barshi babu komai don amfani da model na farko a panel.", "fusionMinPanel": "Mafi ƙarancin panel", "fusionMinPanelHelp": "Ana buƙatar amsoshin panel masu nasara kafin a ba masu jinkiri lokacin rangwame (tsoho 2).", @@ -3492,7 +3496,7 @@ "builderGlobalAddAll": "Ƙara duka", "builderGlobalShortcuts": "Gajerun hanyoyi:", "builderGlobalNoResults": "Ba a sami samfuri don \"{query}\" ba.", - "builderGlobalProviderLabel": "Provider:", + "builderGlobalProviderLabel": "Mai samarwa:", "builderGlobalAccountCount": "{count, plural, one {# asusu} other {# asusu}}", "builderGlobalAdded": "An ƙara", "builderGlobalAdd": "Ƙara", @@ -3978,7 +3982,7 @@ "providerModelsTitle": "{provider} — Samfura", "noModelsForProvider": "Babu samfura da ake da su ga wannan mai samarwa.", "chat": "Taɗi", - "embedding": "Embedding", + "embedding": "Cusawa", "image": "Hoto", "custom": "na musamman", "modelsCount": "{count, plural, one {# samfuri} other {# samfura}}", @@ -4045,7 +4049,7 @@ "tailscaleUrlNotice": "Yana amfani da adireshinka na Tailscale .ts.net. Ana iya buƙatar shiga da amincewar Funnel a farkon amfani.", "tailscaleTitle": "Tailscale Funnel", "tailscaleNeedsLoginHint": "Tabbatar da wannan na'ura ta amfani da Tailscale, sannan kunna Funnel.", - "tailscaleBinaryPath": "Binary: {path}", + "tailscaleBinaryPath": "Fayil ɗin binary: {path}", "tailscaleLastError": "Kuskure na ƙarshe: {error}", "tailscaleInstallTitle": "Shigar da Tailscale", "tailscaleInstallIntro": "Yana shigar da Tailscale a wannan na'ura kuma yana shirya OmniRoute don kunna Funnel.", @@ -4080,10 +4084,10 @@ "tabContextSources": "Tushen Bayanai", "activeEndpoints": "Endpoints Masu Aiki", "activeLocal": "Na Cikin Na'ura", - "activeCloud": "Cloud", + "activeCloud": "Gajimare", "copyUrlTitle": "Kwafi {url}", "statusRunning": "Yana Aiki", - "tunnels": "Tunnels", + "tunnels": "Ramuka", "activeTunnelCount": "{active} / {total} suna aiki", "badgeLocal": "NA CIKIN NA'URA", "badgeProtected": "MAI KARIYA", @@ -4104,7 +4108,7 @@ "all": "Duka", "more": "+ƙarin {count}", "showInternalTooltip": "Nuna ko ɓoye routes na ciki (a ɓoye ta tsohuwa)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Tabbatarwar Bearer", "requestBody": "Jikin Buƙata", "close": "Rufe", "tryIt": "Gwada Shi", @@ -4123,12 +4127,12 @@ "vscodeAliasDescriptionError": "Ana nuna URLs na wucin gadi saboda ba a iya loda maɓallan CLI a wannan zaman ba.", "vscodeAliasDescriptionLoading": "Ana loda maɓallan CLI. Za a nuna URLs na wucin gadi har sai an sami maɓalli.", "vscodeAliasDescriptionPlaceholder": "Ana nuna URLs na wucin gadi. Ƙirƙiri ko kunna maɓallin API a CLI Tools don maye gurbin TOKEN.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "Kayan aikin CLI", "vscodeAliasBaseLabel": "Tushen VS Code", "vscodeAliasModelsLabel": "Samfuran VS Code", "vscodeAliasChatLabel": "Hirar VS Code", "localServer": "Sabar Gida", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute na Gajimare", "copyUrl": "Kwafi URL", "badgeLoopbackTooltip": "Ana iya samun damar wannan endpoint a cikin na'urar kawai (loopback kawai)", "badgeAlwaysProtectedTooltip": "Wannan endpoint yana da kariya koyaushe kuma yana buƙatar izini", @@ -4388,20 +4392,20 @@ "editMemory": "Gyara ƙwaƙwalwa", "editModal": { "title": "Gyara Ƙwaƙwalwa", - "metadataLabel": "Metadata (JSON)", + "metadataLabel": "Bayanan meta (JSON)", "metadataInvalid": "JSON mara inganci", "saveFailed": "An kasa adana ƙwaƙwalwa" }, "embedding": { "autoLabel": "Na atomatik", "autoDesc": "Yana amfani da mafi kyawun abin da ake da shi: remote provider > static > transformers", - "remoteLabel": "Remote provider", + "remoteLabel": "Mai samarwa na nesa", "remoteDesc": "Yana amfani da embedding ta API na provider (yana buƙatar API key)", - "staticLabel": "Static local (potion)", + "staticLabel": "Na gida tsayayye (potion)", "staticDesc": "Local embedding ba tare da WASM ko external dependencies ba", "transformersLabel": "Transformers.js (MiniLM)", "transformersDesc": "Local embedding ta @huggingface/transformers (~400MB RAM)", - "providerModelLabel": "Provider / Model", + "providerModelLabel": "Mai samarwa / Samfuri", "noRemoteProviders": "Babu providers masu API key da aka saita", "selectProviderModel": "Zaɓi model", "customBaseUrlLabel": "Custom base URL (na zaɓi)", @@ -4429,7 +4433,7 @@ "reindexFailed": "An kasa fara sake gina fihirisa", "keywordLabel": "Kalmar bincike (FTS5)", "keywordReason": "Binciken kalmomi yana samuwa koyaushe", - "embeddingLabel": "Embedding", + "embeddingLabel": "Cusawa", "vectorStoreLabel": "Ma’ajiyar Vector", "qdrantLabel": "Qdrant", "rerankLabel": "Sake jera sakamako", @@ -4470,7 +4474,7 @@ "simulate": "Gwada", "resultsTitle": "Sakamako {count}", "resolutionTitle": "Ƙudurin bincike", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Cusawa", "resolutionStore": "Ma'ajiyar vector", "resolutionStrategy": "Dabarar da aka yi amfani da ita", "rerankApplied": "An yi sake jeri", @@ -4646,7 +4650,7 @@ "uptime": "Lokacin Aiki", "memory": "Ƙwaƙwalwa", "memoryRss": "Ƙwaƙwalwa (RSS)", - "heap": "Heap", + "heap": "Tari", "cpu": "CPU", "database": "Rumbun Bayanai", "version": "Siga", @@ -4902,8 +4906,8 @@ "runningRequestsDesc": "Dubawa kai tsaye na buƙatun upstream da ke gudana a halin yanzu", "clearAll": "Share Duka", "confirmClearActiveRequests": "A share duk buƙatu masu aiki?", - "model": "Model", - "provider": "Provider", + "model": "Samfuri", + "provider": "Mai bayarwa", "account": "Asusu", "elapsed": "Lokacin da ya Wuce", "activeStage": "Mataki", @@ -5171,7 +5175,7 @@ "hasFreeTooltip": "Akwai matakin kyauta", "noAuthLabel": "Babu Tabbatar da Shaida", "noAuthProviders": "Babu Masu Samar da Tabbatar da Shaida", - "upstreamProxyLabel": "Upstream Proxy", + "upstreamProxyLabel": "Wakilin Sama", "freeAggregated": "Duk masu samarwa masu matakin kyauta (ana kuma nuna su a rukuninsu na asali)", "deprecated": "An daina amfani da shi", "deprecatedProvider": "An daina amfani da wannan mai samarwa", @@ -5206,7 +5210,7 @@ "selectProvider": "Zaɓi mai samarwa", "selectedProvider": "Mai samarwar da aka zaɓa", "authMethod": "Hanyar Tabbatar da Shaida", - "apiKeyLabel": "API Key", + "apiKeyLabel": "Maɓallin API", "apiKeyRequired": "Ana buƙatar API Key", "selectProviderRequired": "Da fatan za a zaɓi mai samarwa", "enterApiKey": "Shigar da API key ɗinka", @@ -6452,7 +6456,7 @@ "failedUpdateCodexServiceMode": "An kasa sabunta yanayin sabis na Codex", "filterByMedia": "Mai jarida", "freeBadge": "Kyauta", - "kimiCodeApiKeyLabel": "Kimi Code API Key", + "kimiCodeApiKeyLabel": "Maɓallin API na Kimi Code", "modelTestFailed": "Gwajin model ya gaza", "modelTestNetworkError": "Kuskuren hanyar sadarwa yayin gwada model", "networkError": "Kuskuren hanyar sadarwa", @@ -6553,7 +6557,7 @@ "systemPrompt": "Umarnin Tsari", "thinkingBudget": "Kasafin Tunani", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "Wakilin HTTP", "1proxy": "1proxy", "proxySubTabsAria": "Sassan Proxy", "requestBodyLimitTitle": "Iyakar Jikin Buƙata", @@ -6581,7 +6585,7 @@ "modelCatalogCacheTtlSaving": "Ana adanawa...", "modelCatalogCacheTtlSave": "Ajiye", "modelCatalogCacheTtlCurrent": "Na yanzu: {value} ms", - "mitmProxy": "MITM Proxy", + "mitmProxy": "Wakilin MITM", "pricing": "Farashi", "storage": "Ma'ajiyar Bayanai", "policies": "Manufofi", @@ -6777,7 +6781,7 @@ "themeGreen": "Kore", "themeViolet": "Shunayya", "themeOrange": "Launin lemu", - "themeCyan": "Cyan", + "themeCyan": "Shuɗi-kore", "whitelabeling": "Alamar kasuwanci", "whitelabelingDesc": "Keɓance sunan manhajar da tambari", "appName": "Sunan Manhaja", @@ -6854,7 +6858,7 @@ "rule": "Doka", "enabled": "An Kunna", "disabled": "An Kashe", - "nodeCount": "Nodes: {count}", + "nodeCount": "Nododi: {count}", "needsCoreCount": "{count} suna buƙatar local core", "lastSynced": "Daidaitawa ta ƙarshe: {time}", "consecutiveFailures": "Gazawa sau {count} a jere", @@ -6931,7 +6935,7 @@ "denoRelayTokenHint": "Organization token (prefix ddo_) daga console.deno.com → Organization → Settings → Organization Tokens. Ana amfani da shi sau ɗaya don turawa kuma ba a taɓa adana shi ba.", "denoRelayOrgDomainHint": "Tsohon domain na ƙungiyarka ta Deno Deploy (misali acme.deno.net). Za a iya isa ga relay ɗin a https://<app-name>.<org-slug>.deno.net.", "proxyFreePoolFilterProtocol": "Tace bisa protocol", - "proxyFreePoolProtocol": "Protocol", + "proxyFreePoolProtocol": "Yarjejeniya", "proxyFreePoolCountryPlaceholder": "Ƙasa (misali US)", "proxyFreePoolFilterCountry": "Tace bisa ƙasa", "proxyFreePoolMinQualityPlaceholder": "Mafi ƙarancin inganci", @@ -6944,7 +6948,7 @@ "proxyFreePoolAddSelected": "Ƙara waɗanda aka zaɓa zuwa pool", "proxyFreePoolAddVisible": "Ƙara duk waɗanda ake gani zuwa pool", "proxyFreePoolSource": "Tushe", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Mai masauki:Tasha", "proxyFreePoolType": "Nau'i", "proxyFreePoolCountry": "Ƙasa", "proxyFreePoolQuality": "Inganci", @@ -6979,9 +6983,9 @@ "thinkingBudgetTitle": "Kasafin Tunani", "thinkingBudgetDesc": "Yana sarrafa ko OmniRoute zai sake rubuta sigogin tunani/nazari na client kafin a aika buƙatu zuwa upstream. Wannan ya bambanta da compression, prompt cache, da iyakokin token na API-key.", "thinkingBudgetIndependenceHint": "Abubuwan compression, routing, da iyakar token suna ci gaba da aiki a kowane yanayi. Auto ba yana nufin “nuna tunani kai tsaye” ba — yana cire filayen nazari na client.", - "passthrough": "Passthrough", + "passthrough": "Wucewa kai tsaye", "passthroughDesc": "Babu canje-canje — client ne ke sarrafa kasafin tunani", - "thinkingModePassthrough": "Passthrough", + "thinkingModePassthrough": "Wucewa kai tsaye", "thinkingModePassthroughDesc": "Bar nazarin client yadda yake (effort, summary, thinking blocks). Ana buƙatarsa don bayyanannen tunani na Codex/Desktop. Tsoho.", "thinkingModeAuto": "Auto (cire)", "thinkingModeAutoDesc": "Cire duk filayen tunani/nazari na client (reasoning, reasoning_effort, Claude thinking, Gemini thinking_config), sannan a bar provider ya ƙirƙiri tsoffin saituna. Zai iya ɓoye bangarorin tunani kuma ya lalata buƙatun taƙaitawa na client.", @@ -7052,7 +7056,7 @@ "routingAdvancedGuideTitle": "Jagorar zaɓen hanya ta ci gaba", "routingAdvancedGuideHint1": "An daidaita wannan dabara da tsoffin saitunan sabbin combo da kuma zaɓen hanyar madadin asusun gama-gari.", "routingAdvancedGuideHint2": "Yi amfani da Fill First don fifikon asusu mai tabbas, Round Robin tare da Sticky Limit don rukunin asusu, da P2C don jure jinkiri.", - "fillFirst": "Fill First", + "fillFirst": "Cika na Farko", "fillFirstDesc": "Yi amfani da asusu bisa jerin fifiko", "roundRobin": "Round Robin", "roundRobinDesc": "Bi ta cikin duk asusu bi da bi", @@ -7131,7 +7135,7 @@ "logout": "Fita", "clearLocalDataConfirm": "A share duk bayanan cikin na'ura? Wannan zai sake saita abubuwan da ka fi so.", "unknown": "Ba a sani ba", - "systemActor": "system", + "systemActor": "tsari", "ipAccessControl": "Sarrafa Samun Dama ta IP", "ipAccessControlDesc": "Toshe ko ba wa takamaiman adiresoshin IP izini", "ipModeDisabled": "A kashe", @@ -7139,7 +7143,7 @@ "ipModeWhitelist": "Jerin Farare", "ipModeWhitelistPriority": "Fifikon WL", "addIpAddress": "Ƙara Adireshin IP", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 ko 10.0.*.*", "block": "+ Toshe", "allow": "+ Ba da Izini", "blocked": "An toshe ({count})", @@ -7493,7 +7497,7 @@ "compressionModeStandardDesc": "Matsewa bisa ƙa'idoji mai tsare-tsare sama da 30, yana kiyaye code blocks da URLs", "compressionModeAggressive": "Mai Tsanani", "compressionModeAggressiveDesc": "Taƙaitawa + matse sakamakon kayan aiki + tsufar bayanai a hankali don iyakar tanadi", - "compressionModeUltra": "Ultra", + "compressionModeUltra": "Matuƙa", "compressionModeUltraDesc": "Tsabtace token ta hanyar heuristic tare da zaɓin komawa ga SLM na cikin gida", "compressionAggressiveConfig": "Tsarin Na'urar Mai Tsanani", "compressionAggressiveConfigDesc": "Daidaita taƙaitawa, matse kayan aiki, da iyakokin tsufar bayanai", @@ -7564,7 +7568,7 @@ "qdrantSaved": "An adana saituna", "qdrantSaveError": "An kasa adana saituna", "qdrantHostHint": "Ba tare da port ba. Misali: 127.0.0.1 ko http://qdrant", - "qdrantPort": "Port", + "qdrantPort": "Tasha", "qdrantPortHint": "Tsohon saitin Qdrant: 6333", "qdrantCollectionHint": "Inda za a adana maki na ma'ajiya.", "qdrantEmbeddingModel": "Samfurin embedding", @@ -7881,7 +7885,7 @@ "description": "Kimanta jimloli ta hanyar cirewa bisa ga tambayar mai amfani ta ƙarshe." }, "caveman": { - "label": "Caveman", + "label": "Mutumin Kogo", "description": "Matsa rubutu bisa ƙa'idoji." }, "aggressive": { @@ -7927,16 +7931,16 @@ "resilienceEnableServerSideWait": "Kunna jira a ɓangaren server", "resilienceMaximumRetries": "Matsakaicin yawan sake-gwaji", "resilienceMaximumWaitPerRetry": "Matsakaicin lokacin jira ga kowane sake-gwaji", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "Kasuwar SkillsMP", "memorySkillsFailedToSave": "An kasa adanawa", - "memorySkillsApiKey": "API Key", + "memorySkillsApiKey": "Maɓallin API", "memorySkillsActiveSkillsProvider": "Skills Provider Mai Aiki", "cliproxyapiFallback": "Madadin CLIProxyAPI", "cliproxyapiEnableFallback": "Kunna Madadin CLIProxyAPI", - "cliproxyapiUrl": "CLIProxyAPI URL", - "headroomProxyTitle": "Headroom proxy", + "cliproxyapiUrl": "URL na CLIProxyAPI", + "headroomProxyTitle": "Wakilin Headroom", "headroomProxyDesc": "URL na Headroom token-saver proxy na zaɓi. Idan babu komai, ana amfani da HEADROOM_URL ko http://localhost:8787.", - "headroomProxyUrl": "Headroom URL", + "headroomProxyUrl": "URL na Headroom", "headroomProxyUrlHint": "Ana iya fara Loopback URLs daga wannan shafin. External URLs kuwa bincikawa kawai ake yi.", "headroomProxySave": "Ajiye", "headroomProxyStart": "Fara", @@ -7949,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Shigo da asusu", "payloadRulesTitle": "Ka’idojin payload", "payloadRulesDesc": "Saita sauye-sauyen payload na buƙata bisa model da protocol. Ana adana sauye-sauyen a cikin saituna kuma a sake loda su kai tsaye a runtime nan da nan bayan an adana.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "tsoho", "payloadRuleDefaultDesc": "Yana amfani da params ne kawai idan babu target path a cikin payload mai fita.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "maye gurbi", "payloadRuleOverrideDesc": "Yana tilasta sanya ƙimomi a cikin payload, tare da maye gurbin duk wani abu da yake akwai a wannan path.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "tace", "payloadRuleFilterDesc": "Yana cire params da aka katange daga payload kafin a aika buƙatar upstream.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Kamar default, amma ana fara fassara ƙimomin string a matsayin JSON idan zai yiwu. Ana kuma karɓar tsohon input alias default-raw yayin adanawa.", @@ -7996,11 +8000,11 @@ "responsesStateModePreserve": "Adana", "responsesStateHint": "Yanayin Auto yana cire previous_response_id sai dai idan wata haɗi ta kunna ma'ajiyar OpenAI Responses a sarari. Strip ne mafi aminci ga abokan ciniki marasa adana yanayi kamar VS Code Custom Endpoint; daga nan mahallin zai dogara da abokin ciniki ya aika cikakken tarihi.", "responsesStateSaveError": "An kasa sabunta saitin yanayin Responses", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Matakin Sauri na Codex", "codexFastTierDesc": "Saka service_tier=priority ga duk buƙatun OpenAI Codex a duniya.", "codexFastTierHint": "Idan an kunna, OmniRoute yana ƙara service_tier=priority ga buƙatun Codex masu fita daga haɗin da ba su riga sun ƙayyade mataki ba. Matakin Priority yana buƙatar maɓallin OpenAI Enterprise API ko hanyar Codex ta ChatGPT-auth; sauran nau'ikan maɓalli za su karɓi kuskure mai alaƙa da mataki daga OpenAI. Saitunan kowace haɗi a shafin mai samar da Codex su ne ke da fifiko.", "codexFastTierSaveError": "An kasa sabunta saitin Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", + "codexAutoPingTitle": "Aika-Saƙo ta Atomatik don Ƙimar Codex", "codexAutoPingDesc": "Zaɓin shiga ne ga kowace haɗi: yana aika ƙaramar buƙata nan da nan bayan taga zaman Codex ta sake farawa, don kada ya kasance bai shirya ba lokacin da kake buƙatarsa.", "codexAutoPingWarning": "Yana cin ɗan ƙaramin kaso na ainihin ƙimar Codex a kowane ping. A kashe yake ta tsohuwa — kunna shi kawai ga haɗin da kake dogaro da su sosai.", "codexAutoPingSaveError": "An kasa sabunta saitin Codex Auto-Ping", @@ -8012,7 +8016,7 @@ "codexFastTierModelsLabel": "Samfuran Fast-tier", "codexFastTierModelsHint": "Samfuran da aka zaɓa kawai ne za su karɓi service_tier idan an kunna Fast Tier.", "codexFastTierModelCheckbox": "Kunna Fast Tier ga {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Yanayin Sauri na Claude", "claudeFastModeDesc": "Sanya zaɓaɓɓun buƙatun Claude cikin Anthropic Fast Mode (speed:\"fast\").", "claudeFastModeHint": "Anthropic ba ya goyon bayan Fast Mode a hukumance ga abokan ciniki irin na SDK. Idan an kunna, OmniRoute yana tura taken X-CPA-Force-Fast-Mode domin ginin CLIProxyAPI da aka haɗa ya iya zaɓar shiga ta hanyar kwaikwayon mashigar. Samfuran Opus da aka jera kawai ne binciken gefen abokin ciniki na Anthropic ke taƙaitawa. Har yanzu ana aiwatar da matakin biyan kuɗi, shirin Max, da ma'aunin kuɗin Fast Mode a gefen sabar — Anthropic na iya mayar da out_of_credits ko da an kunna maɓallin.", "claudeFastModeModelsLabel": "An yi amfani da shi ga samfura ({count})", @@ -8178,7 +8182,7 @@ "cloudflareRelayTokenHowto": "Ƙirƙiri API token a ƙarƙashin My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit.", "cloudflareRelayAccountIdLabel": "ID na Asusun Cloudflare", "cloudflareRelayAccountIdHint": "Ana samunsa a gefen dama na shafin bayani na dashboard na Cloudflare.", - "cloudflareRelayApiTokenLabel": "Cloudflare API Token", + "cloudflareRelayApiTokenLabel": "Alamar API ta Cloudflare", "cloudflareRelayApiTokenHint": "Yana buƙatar izinin 'Workers Scripts: Edit'. Ana amfani da token ɗin ne kawai lokacin turawa kuma ba a taɓa adana shi ba.", "cloudflareRelayProjectNameLabel": "Sunan Worker", "cloudflareRelayFreeTierNote": "Matakin kyauta: buƙatu 100,000 a rana ga kowane asusun Cloudflare.", @@ -8656,7 +8660,7 @@ "defaultFromPanel": "Na asali (daga panel)", "runs": "Yana gudanar da:", "defaultConfiguredPrefix": "Na asali — an saita a", - "compressionSettings": "Compression Settings", + "compressionSettings": "Saitunan Matsewa", "providerDelegated": "Compression da aka miƙa wa provider", "contextEditingClaude": "Gyaran Context (Claude)", "contextEditingDescription": "Yana ba provider damar goge tsofaffin tubalan amfani da kayan aiki a ɓangaren server, ba tare da sake rubuta saƙon ba.", @@ -8678,15 +8682,15 @@ "active": "Mai aiki", "languagePacksList": "Fakitin harsuna: {packs}", "dragToReorder": "Ja don sake tsara matakin", - "engine": "Engine", + "engine": "Injin", "intensity": "Ƙarfi" }, "compressionStudio": { "noRun": "Babu aikin compression da ake da shi.", "liveDataHint": "Bayanan kai tsaye suna zuwa ta tashar compression ta WebSocket.", "cockpitView": "Kallon cockpit", - "canvas": "Canvas", - "waterfall": "Waterfall", + "canvas": "Allon Zane", + "waterfall": "Tsarin Sauka", "replayDone": "An kammala sake kunnawa", "pauseReplay": "Dakatar da sake kunnawa na ɗan lokaci", "playReplay": "Fara sake kunnawa", @@ -8737,9 +8741,9 @@ "compareTab": "Kwatanta", "encoderComparison": "Encoder A/B — array {count}", "encoderWinner": "wanda ya yi nasara: {winner}", - "encoder": "encoder", - "bytes": "bytes", - "tokensCl100k": "tokens (cl100k)" + "encoder": "mai sauya tsari", + "bytes": "baitoci", + "tokensCl100k": "token-token (cl100k)" }, "omniglyph": { "preview": "Samfoti", @@ -8819,7 +8823,7 @@ "stateError": "Kuskure", "stateNotInstalled": "Ba a shigar ba", "stateUnknown": "Ba a sani ba", - "port": "port {port}", + "port": "tasha {port}", "externalBadge": "Ana sarrafa shi daga waje", "externalTitle": "An gano 9Router na waje", "externalDescription": "OmniRoute ya gano 9Router a {host}:{port}. Tsarin rayuwarsa, logs, updates, da service key nasa suna ci gaba da kasancewa ƙarƙashin shigarwar waje.", @@ -8835,7 +8839,7 @@ "installing": "Ana shigarwa…", "autoStart": "Farawa ta atomatik", "autoStartDescription": "Ƙaddamar da {name} ta atomatik lokacin da OmniRoute ya fara", - "apiKey": "API Key", + "apiKey": "Maɓallin API", "apiKeyDescription": "Maɓallin da OmniRoute ke amfani da shi don tabbatar da sahihancin {name}", "keyRotated": "An sauya maɓalli — an sake kunna {name} don amfani da sabon maɓallin", "keyRotateFailed": "An kasa sauya maɓalli", @@ -8904,7 +8908,7 @@ "save": "Adana" }, "contextCaveman": { - "title": "Caveman Engine", + "title": "Injin Caveman", "description": "Matsawar saƙonni bisa ƙa’idoji, fakitin harsuna, nazari da sarrafa yanayin fitarwa.", "advancedConfig": "Tsarin Saituna na Ci-gaba", "advancedConfigDesc": "Daidaita halayen matsawa dalla-dalla", @@ -9173,7 +9177,7 @@ "comboRouted": "Combo da aka karkatar", "uniqueEndpoints": "Wuraren ƙarshe na musamman", "routeDetails": "Bayanan hanya", - "comboBadge": "Combo", + "comboBadge": "Haɗaka", "routeEndpointLabel": "Wurin ƙarshe", "routeConnectionLabel": "Haɗi", "scenarioVision": "Gani (fahimtar hoto)", @@ -9298,7 +9302,7 @@ "loadingBudgetData": "Ana loda bayanan kasafin kuɗi...", "noApiKeysTitle": "Babu API Keys", "noApiKeysDescription": "Da farko, ƙara API keys domin saita iyakokin kasafin kuɗi.", - "apiKey": "API Key", + "apiKey": "Maɓallin API", "todaysSpend": "Kashe-kashen Yau", "thisMonth": "Wannan Watan", "setLimits": "Saita Iyakoki", @@ -9400,7 +9404,7 @@ "notifyAllCasesPassed": "Dukkan sharuɗɗa {total} sun yi nasara ✅", "notifySomeCasesFailed": "{passed}/{total} sun yi nasara, {failed} sun gaza", "notifyEvalRunFailed": "Gudanar da Eval ya gaza", - "notifyEvalTitle": "Eval: {name}", + "notifyEvalTitle": "Ƙimantawa: {name}", "modelEvals": "Kimanta Samfura", "evalsHeroDescription": "Gwada kuma tabbatar da ingancin endpoint ɗin LLM naka ta hanyar gudanar da rukunonin kimantawa da aka riga aka ayyana. Kowane rukuni yana ɗauke da sharuɗɗan gwaji waɗanda ke aika saƙonnin umarni na ainihi ta cikin OmniRoute kuma su kwatanta amsoshi da ma'aunin da ake tsammani — hakan yana taimaka maka gano koma-baya, kwatanta samfura, da tabbatar da ingancin amsoshi a tsakanin masu samarwa.", "qualityValidation": "Tabbatar da Inganci", @@ -9461,9 +9465,9 @@ "noQuotaDataAvailable": "Babu bayanan iyakar amfani", "noAccountsForTierFilter": "Ba a sami asusu don matatar mataki ba", "tierAll": "Duka", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "tierEnterprise": "Babban Kamfani", + "tierTeam": "Ƙungiya", + "tierBusiness": "Kasuwanci", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Ƙari", @@ -9596,7 +9600,7 @@ "suiteBuilderCaseTagsPlaceholder": "misali coding, python", "targetTypeCombo": "Haɗaka", "scorecardPassed": "Ya Yi Nasara", - "suiteBuilderCaseTagsLabel": "Tags", + "suiteBuilderCaseTagsLabel": "Alamomi", "suiteBuilderNewSuite": "Sabon Rukunin Gwaji", "notifyEvalLoadFailed": "An kasa loda bayanan kimantawa", "notConfigured": "Ba a Saita ba", @@ -9960,7 +9964,7 @@ "featureCloudSyncDesc": "Daidaita saitunanka tsakanin na'urori nan take.", "featureCliSupportTitle": "Goyon bayan CLI", "featureCliSupportDesc": "Yana aiki tare da Claude Code, Codex, Cline, Cursor, da sauransu.", - "featureDashboardTitle": "Dashboard", + "featureDashboardTitle": "Allon Bayanai", "featureDashboardDesc": "Dashboard na gani don nazarin zirga-zirga a ainihin lokaci.", "howItWorks": "Yadda OmniRoute ke Aiki", "howItWorksDescription": "Bayanai suna gudana cikin sauƙi daga manhajarka ta cikin matakinmu na sarrafa hanyoyi mai basira zuwa mafi kyawun mai samarwa don aikin.", @@ -9983,14 +9987,14 @@ "copied": "✓ An kwafa", "startingOmniRoute": "Ana fara OmniRoute...", "serverRunningOnLabel": "Sabar tana aiki a", - "dashboardLabel": "Dashboard", + "dashboardLabel": "Allon Bayanai", "readyToRoute": "A shirye don karkatarwa! ✓", "configureProvidersNote": "📝 Saita masu samar da sabis a dashboard ko amfani da masu canjin muhalli", "dataLocation": "Wurin Bayanai:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", "product": "Samfuri", - "dashboardLink": "Dashboard", + "dashboardLink": "Allon Bayanai", "changelog": "Tarihin Canje-canje", "resources": "Albarkatu", "documentation": "Takardun Bayani", @@ -10039,10 +10043,10 @@ "managementApiReference": "Manazartar API na Gudanarwa", "managementApiDescription": "Wuraren haɗin kai na sarrafa kansa don rajistar proxy, sanya scope, da ƙaura daga tsohon proxy.", "method": "Hanya", - "path": "Path", + "path": "Hanya", "notes": "Bayanan Kula", "modelPrefixes": "Prefix na Samfura", - "prefix": "Prefix", + "prefix": "Gabatarwa", "troubleshooting": "Warware Matsaloli", "supportsChat": "Yana tallafawa duka wuraren haɗin chat da responses.", "oauthAutoRefresh": "Haɗin OAuth tare da sabunta token ta atomatik.", @@ -10100,7 +10104,7 @@ "providersCount": "Masu samarwa {count}", "providerTypeFree": "Matakin Kyauta", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "Maɓallin API", "useCaseSingleEndpointTitle": "Endpoint guda ɗaya don masu samarwa da yawa", "useCaseSingleEndpointText": "Nuna wa clients base URL guda ɗaya sannan a yi routing bisa prefix na model (misali: gh/, cc/, kr/, openai/).", "useCaseFallbackTitle": "Fallback da sauya model ta amfani da combos", @@ -10108,10 +10112,10 @@ "useCaseUsageVisibilityTitle": "Bayyananniyar amfani, farashi da debug", "useCaseUsageVisibilityText": "Bibiyi tokens da farashi bisa mai samarwa, account, da API key a shafukan Usage da Analytics.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", + "baseUrlLabel": "Tushen URL", + "chatEndpointLabel": "Ƙarshen hanyar taɗi", "modelRecommendationLabel": "Shawarar model: takamaiman prefix", - "clientCodexTitle": "Codex / GitHub Copilot Models", + "clientCodexTitle": "Samfuran Codex / GitHub Copilot", "clientCodexBullet1": "Yi amfani da model IDs tare da", "clientCodexBullet2": "Codex-family models suna yin routing ta atomatik zuwa", "clientCodexBullet3": "Non-Codex models suna ci gaba a", @@ -10135,7 +10139,7 @@ "clientKimiBullet1": "Yi amfani da OmniRoute a matsayin tabbataccen base URL yayin sauya asusu ko haɗe-haɗen provider da ke ƙarƙashinsa.", "clientKimiBullet2": "Fi son samfura masu prefix a tsarin aikin coding domin fallback da audit trail su kasance a bayyane.", "clientKimiBullet3": "Yi amfani da `/v1/responses` idan kana son routing na asali irin na Responses ga clients masu amfani da tools.", - "protocolsTitle": "Protocols: MCP & A2A", + "protocolsTitle": "Ka'idoji: MCP & A2A", "protocolsDescription": "OmniRoute yana samar da protocols na gudanarwa guda biyu ban da APIs masu dacewa da OpenAI: MCP don aiwatar da tools, da A2A don workflows tsakanin agents.", "protocolMcpTitle": "MCP (Model Context Protocol)", "protocolMcpDesc": "Yi amfani da MCP ta stdio domin bai wa clients damar ganowa da kiran tools na OmniRoute tare da bayyananniyar audit.", @@ -10152,9 +10156,9 @@ "protocolTroubleshooting2": "Idan tasks na A2A suka ci gaba da kasancewa a `working`, bincika `/api/a2a/tasks/:id` da stream events don gano terminal state.", "protocolTroubleshooting3": "Yi amfani da `/dashboard/mcp` da `/dashboard/a2a` don controls na gudanarwa da bayyananniyar audit.", "endpointChatNote": "Chat endpoint mai dacewa da OpenAI (default).", - "endpointResponsesNote": "Responses API endpoint (Codex, o-series).", + "endpointResponsesNote": "Wurin ƙarshe na Responses API (Codex, o-series).", "endpointModelsNote": "Kundin models na duk providers da aka haɗa.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", + "endpointAudioNote": "Rubuta sauti zuwa rubutu (Deepgram, AssemblyAI).", "endpointSpeechNote": "Samar da murya daga rubutu (ElevenLabs, OpenAI TTS).", "endpointEmbeddingsNote": "Samar da text embeddings (OpenAI, Cohere, Voyage).", "endpointImagesNote": "Samar da hoto (NanoBanana).", @@ -10212,7 +10216,7 @@ "mcpToolsCacheDesc": "Duba ƙididdigar ma'ajiyar wucin gadi kuma a share ma'ajiyoyin ma'ana ko na sa hannu.", "mcpToolsCompressionTitle": "Injinan Matse Bayanai", "mcpToolsCompressionDesc": "Saita matsewar RTK/Brotli, musanya injina, kuma bincika nazarin matsewa bisa haɗuwa.", - "mcpToolsOneProxyTitle": "1Proxy / Tunnels", + "mcpToolsOneProxyTitle": "1Proxy / Ramuka", "mcpToolsOneProxyDesc": "Sarrafa proxy masu fita, juya IP na gidaje, kuma bincika lafiyar proxy.", "mcpToolsMemoryTitle": "Ƙwaƙwalwa", "mcpToolsMemoryDesc": "Nema, ƙara, da share bayanan ƙwaƙwalwar tattaunawa masu ɗorewa.", @@ -10260,7 +10264,7 @@ "apiExplorerDescription": "Gwada endpoints na OmniRoute kai tsaye. Zaɓi endpoint, saita buƙatarka, sannan ka ga martanin a ainihin lokaci.", "apiExplorerSseStarted": "An fara watsawar SSE — duba terminal/devtools don ganin sakamakon a ainihin lokaci.", "apiExplorerError": "Kuskure: {message}", - "apiExplorerAuth": "auth", + "apiExplorerAuth": "tantancewa", "apiExplorerResponseLabel": "Martani", "apiExplorerSelectEndpoint": "Zaɓi endpoint don bincikawa", "apiExplorerChooseApi": "Zaɓi API daga maɓallin gefe don ganin cikakkun bayanai da gwada shi kai tsaye", @@ -10396,10 +10400,10 @@ "flowDiagramOmniRouteDesc": "Yana karɓar buƙata kuma yana zaɓar manufa", "flowDiagramSpawn": "Ƙaddamar da Tsari", "flowDiagramSpawnDesc": "Yana ƙaddamar da binary na CLI ta stdio", - "flowDiagramCli": "CLI Agent", + "flowDiagramCli": "Wakilin CLI", "flowDiagramCliDesc": "Yana sarrafawa da nasa auth/model", "fingerprintSettingsHint": "Ana iya saita daidaitawar CLI Fingerprint (ɓoye buƙatu kamar takamaiman kayan aikin CLI) a cikin", - "settingsRoutingLink": "Settings/Routing", + "settingsRoutingLink": "Saituna/Tsarin bi-da-bi", "openSettings": "Saituna", "copyRawUrlTitle": "Kwafi raw URL zuwa clipboard", "copied": "An kwafa!", @@ -10409,8 +10413,8 @@ "viewOnGithub": "Duba a GitHub", "howToUse": "Yadda ake amfani", "browseAllSkillsOnGithub": "Bincika duk skills a GitHub", - "apiSkills": "API Skills", - "cliSkills": "CLI Skills", + "apiSkills": "Ƙwarewar API", + "cliSkills": "Ƙwarewar CLI", "apiSkillsSubtitle": "skills {count} — sarrafa OmniRoute ta REST / HTTP", "cliSkillsSubtitle": "Ƙwarewa {count} — sarrafa OmniRoute ta hanyar fayil ɗin binary na tashar omniroute", "howToUseStep1": "Danna {copyUrl} a kan ƙwarewar da kake son wakilinka ya sani.", @@ -10477,7 +10481,7 @@ "statusCancelled": "An soke", "repositoryName": "Sunan repository", "repositoryUrl": "URL na repository", - "branch": "Branch", + "branch": "Reshe", "agentDescriptions": { "jules": "Agent na Google mai rubuta lamba da kansa", "devin": "Injiniyan manhajar AI na Cognition", @@ -10676,7 +10680,7 @@ }, "proxyConfigModal": { "levelGlobal": "Na Gabaɗaya", - "levelProvider": "Provider", + "levelProvider": "Mai samarwa", "levelCombo": "Haɗin", "levelKey": "Maɓalli", "levelDirect": "Kai tsaye (babu proxy)", @@ -10772,7 +10776,7 @@ "devinDesktopPasteDescription": "Samar da wani maɓallin Devin API da ake da shi daga zaman Devin da aka tabbatar. Samuwar fitar da maɓalli da matakan yin hakan sun bambanta bisa sigar Devin da asusun.", "devinPasteDescription": "Samar da WINDSURF_API_KEY ɗinka (wanda aka samu ta hanyar `devin auth login`, ko ta umarnin Windsurf IDE \"Windsurf: Provide Auth Token\").", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "Gina auth.json na Grok", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Maɓallin API / Token", "saving": "Ana adanawa…", @@ -10852,7 +10856,7 @@ "loading": "Ana loda proxies...", "noProxies": "Babu proxies da aka adana tukuna.", "tableName": "Suna", - "tableEndpoint": "Endpoint", + "tableEndpoint": "Wurin ƙarshe", "tableStatus": "Matsayi", "tableHealth": "Lafiya (awa 24)", "tableUsage": "Amfani", @@ -10870,7 +10874,7 @@ "familyIpv6": "IPv6 kawai", "familyHint": "Rukunin adireshin fita. Ta atomatik yana riƙe da dual-stack; IPv4/IPv6 suna ƙayyade wannan proxy ga wannan rukunin (yana hana zubewar v4 a ƙarƙashin proxy mai IPv6 kawai).", "labelHost": "Mai masauki", - "labelPort": "Port", + "labelPort": "Tashar jiragen ruwa", "labelUsername": "Sunan mai amfani", "labelPassword": "Kalmar sirri", "labelRegion": "Yanki", @@ -10884,13 +10888,13 @@ "save": "Ajiye", "bulkModalTitle": "Sanya Proxy da yawa", "bulkLabelScope": "Iyaka", - "bulkLabelProxy": "Proxy", + "bulkLabelProxy": "Wakili", "bulkClearAssignment": "(Goge sanyawa)", "bulkLabelScopeIds": "ID na iyaka (an raba su da waƙafi ko sabon layi)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", "bulkApply": "Aiwatar", "labelScope": "Iyakar aiki", - "labelProxy": "Proxy", + "labelProxy": "Wakili", "scopeGlobal": "na gaba ɗaya", "scopeProvider": "mai samarwa", "scopeAccount": "asusu", @@ -10951,7 +10955,7 @@ "poolTitle": "Proxy Pool da Juyawa", "poolDescription": "Haɗa proxies da yawa zuwa wani scope sannan a riƙa juyawa tsakanin egress IPs ɗinsu. Scope mai proxy guda ɗaya yana aiki daidai kamar sanyawa kai tsaye.", "poolScopeIdLabel": "ID na Scope", - "poolScopeIdPlaceholder": "provider id / connection id / combo id", + "poolScopeIdPlaceholder": "ID na mai samarwa / ID na haɗi / ID na haɗaka", "poolScopeIdRequired": "Ana buƙatar ID na scope don provider, account, ko combo scope.", "poolLoad": "Loda Pool", "poolLoadFailed": "An kasa loda proxy pool", @@ -10964,23 +10968,23 @@ "strategyLatency": "Ingantacce bisa latency", "poolMembersLabel": "Mambobin pool ({count})", "poolNoMembers": "Babu proxies a wannan pool tukuna.", + "poolEgressObservation": "An yi amfani da {exits, plural, one {hanyar fita #} other {hanyoyin fita #}} ta hanyar {connections, plural, one {haɗi #} other {haɗe-haɗe #}} · har zuwa {max} a kan hanyar fita guda · sa'o'i {hours} da suka gabata", + "poolEgressObservationEmpty": "Ba a ga zirga-zirga ba cikin sa'o'i {hours} da suka gabata", + "poolEgressObservationHint": "An ƙidaya daga rajistar proxy a tsawon wannan lokacin: adiresoshin IP na fita daban-daban da aka gani ga mambobin wannan rukuni, da kuma haɗe-haɗen OmniRoute da suka yi amfani da su. \"A kan hanyar fita guda\" yana nufin a tsawon wannan lokacin, ba a lokaci guda ba. Kullewar 429 ta kowane IP tana dakatar da haɗe-haɗen iyalin mai samarwa iri ɗaya ne kawai.", "poolRemove": "Cire", "poolRemoveFailed": "An kasa cire proxy daga pool", "poolAddLabel": "Ƙara proxy", "poolAddMember": "Ƙara", "poolAddFailed": "An kasa ƙara proxy ɗin zuwa rukuni", "poolSelectProxy": "Zaɓi proxy…", - "poolSaveFailed": "An kasa adana rabon rukuni", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family." + "poolSaveFailed": "An kasa adana rabon rukuni" }, "playground": { "title": "Filin Gwajin Model", "description": "Gwada kowane model kai tsaye daga dashboard. Zaɓi provider, model, da nau'in endpoint, sannan ka aika buƙata don ganin amsar da ba a sarrafa ba.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Wurin ƙarshe", + "provider": "Mai samarwa", + "model": "Samfuri", "accountKey": "Asusu / Maɓalli", "autoAccounts": "Ta atomatik (asusun {count})", "noAccounts": "Babu asusu", @@ -11124,11 +11128,11 @@ "jsonMode": "Yanayin JSON", "jsonModeDescription": "Yana tilasta response_format: json_schema", "schemaName": "Sunan schema", - "jsonSchema": "JSON schema", + "jsonSchema": "Tsarin JSON", "jsonSchemaEditor": "Editan JSON schema", "schemaValidated": "An tabbatar da schema", "validateSchema": "Tabbatar da schema", - "seed": "Seed", + "seed": "Iri", "stopSequences": "Jerin dakatarwa", "stopSequencesPlaceholder": "misali \"\\n\\n\" ko \"END\"", "autoProvider": "Ta atomatik", @@ -11430,7 +11434,7 @@ "filterSuccess": "Nasara", "filterTimeout": "Lokaci ya ƙare", "colStatus": "Matsayi", - "colProxy": "Proxy", + "colProxy": "Wakili", "colTls": "TLS", "colType": "Nau'i", "colLevel": "Mataki", @@ -11446,9 +11450,9 @@ "allLevels": "Duk Matakai", "allProviders": "Duk Masu Bayarwa", "total": "jimilla", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "ok": "Yayi", + "err": "KUSKURE", + "timeoutShort": "LOKACI YA ƘARE", "direct": "kai tsaye", "newest": "Sababbi", "oldest": "Tsofaffi", @@ -11552,7 +11556,7 @@ "title": "Raba Kaso", "description": "Raba kason masu samarwa tsakanin maɓallan API tare da iyakokin %", "newPool": "Sabon rukuni", - "betaTitle": "Beta", + "betaTitle": "Gwaji", "betaDescription": "Ana adana saitunan a localStorage (har yanzu ba a adana su a sabar ba). Har yanzu ba a haɗa tilasta iyakar kowace buƙata da tsarin proxy ba. Wannan allon yana ba ka damar tsara da ganin yadda aka raba kaso; za a samar da tilastawa ta ainihi a wani sabuntawa na gaba tare da adanawa a DB da katse kiran upstream.", "kpiActivePools": "Rukuni masu aiki", "kpiKeysAllocated": "Maɓallan da aka ware", @@ -11674,7 +11678,7 @@ "endpointsBaseUrl": "URL na tushe", "endpointsCollapse": "Naɗe", "endpointsExpand": "Faɗaɗa", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Na asali na Anthropic", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — codex kawai", "betaText": "Quota Share yana aiki amma ana sa ran samun kurakurai. Ka samu ɗaya? Da fatan za a kai rahoto.", @@ -11748,7 +11752,7 @@ "unitOptions": { "percent": "%", "requests": "buƙatu", - "tokens": "tokens", + "tokens": "alamomi", "usd": "USD ($)" }, "windowOptions": { @@ -11858,7 +11862,7 @@ "statusDnsOff": "DNS a kashe", "statusSetupRequired": "Ana buƙatar saiti", "statusInvestigating": "Ana bincike", - "serverPort": "Port", + "serverPort": "Tasha", "serverConns": "Haɗe-haɗe", "serverIntercepted": "An katse", "serverLastStarted": "Lokacin farawa na ƙarshe", @@ -11884,7 +11888,7 @@ "bypassDefaultsLabel": "Tsoffin bypass patterns (karantawa kawai)", "bypassUserLabel": "Bypass patterns na musamman (ɗaya a kowane layi, glob ko regex)", "saveBypassList": "Ajiye jerin kewancewa", - "agentListTitle": "IDE Agents", + "agentListTitle": "Wakilan IDE", "filterAll": "Duka", "filterActive": "Masu aiki", "filterSetupRequired": "Ana buƙatar saiti", @@ -11897,13 +11901,13 @@ "investigatingNotice": "Ana binciken wannan agent. Har yanzu ana tabbatar da hosts da API surface. Za a samar da saiti da zarar an rubuta takaddun upstream API.", "modelMappingsLabel": "Haɗin models", "sourceModel": "Source model (na asalin agent)", - "targetModel": "Target model (OmniRoute)", + "targetModel": "Samfurin manufa (OmniRoute)", "noMappings": "Ba a saita haɗin models ba. Gudanar da setup wizard don gano models ta atomatik.", "noMappingsDesc": "Har yanzu ba a saita haɗin models ba. Ƙara mappings don tura buƙatun agent ta OmniRoute.", "addMapping": "Ƙara mapping", "selectModel": "Zaɓa…", "saveMappings": "Ajiye mappings", - "setupWizard": "Setup wizard", + "setupWizard": "Mataimakin saiti", "startDns": "Fara DNS", "stopDns": "Dakatar da DNS", "toggling": "Ana sauyawa…", @@ -11995,7 +11999,7 @@ "tokensOut": "Tokens Masu Fita", "ttftAfterTool": "TTFT Bayan Kayan Aiki", "gapAfterTool": "Tazara Bayan Kayan Aiki", - "model": "Model", + "model": "Samfuri", "noProviderData": "Ba a rubuta bayanan mai samarwa ba tukuna.", "comboMetrics": "Ma'aunai na Haɗuwa", "comboMetricsDescription": "Jinkiri da yawan sarrafawa na kowane haɗuwa daga watsa bayanai kai tsaye", @@ -12043,7 +12047,7 @@ "agentBridgeModeDesc": "Kama zirga-zirga daga dukkan wakilan IDE da aka haɗa", "customHostsMode": "Masu Masaukin Musamman", "customHostsModeDesc": "Ƙara takamaiman masu masauki don kutsawa", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "Wakilin HTTP", "httpProxyModeDesc": "Yi amfani da canjin muhalli na HTTP_PROXY", "systemWideMode": "A faɗin tsarin", "systemWideModeDesc": "Kutsa cikin dukkan zirga-zirgar tsarin (na ci-gaba)", @@ -12236,8 +12240,8 @@ "category": "Nau'i", "detectionStatus": "Ganowa", "configStatus": "Saiti", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "Tushen URL", + "apiKeyLabel": "Maɓallin API", "modelMappingLabel": "Daidaita samfuri", "noActiveProviders": "Babu masu samarwa masu aiki.", "noActiveProvidersDesc": "Je zuwa Providers don haɗa aƙalla mai samarwa 1 kafin saita CLI.", @@ -12249,7 +12253,7 @@ "pageSubtitle": "Kayan aikin lamba masu nuni zuwa OmniRoute", "searchPlaceholder": "Nemo CLI…", "filterDetectionLabel": "Ganowa", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "Tushen URL", "detectionAll": "Duka", "detectionInstalled": "An girka", "detectionNotFound": "Ba a samu ba", @@ -12294,7 +12298,7 @@ "addAgent": "Ƙara wakili", "agentName": "Suna", "agentNamePlaceholder": "misali: Wakilina", - "binaryName": "Binary", + "binaryName": "Fayil ɗin Binary", "binaryNamePlaceholder": "misali: myagent", "versionCommand": "Umarnin sigar", "versionCommandPlaceholder": "misali: myagent --version", @@ -12373,7 +12377,7 @@ "description": "Ƙaddamar da kwafin madadin na tsarin, maidowa daga fayilolin madadin, da sarrafa zagayowar rayuwar ma'ajiyar bayanan SQLite. Yana goyon bayan fitarwa, shigarwa, da dabarun hoton bayanai na ƙari-ƙari." }, "omni-webhooks": { - "name": "Webhooks", + "name": "Ƙugiyoyin yanar gizo", "description": "Yi rajista, jera, gwada, da cire wuraren ƙarshen webhook. Saita biyan kuɗin abubuwan da suka faru (request.completed, request.failed, quota.exceeded, da sauransu) kuma sarrafa sake yunƙurin isarwa." }, "omni-mcp": { @@ -12405,7 +12409,7 @@ "description": "Sarrafa haɗin masu samarwa daga CLI: jera masu samarwa da ake da su/waɗanda aka saita, ƙara, gwadawa, gwada-duka, tabbatarwa, sauya API keys, da duba ma'aunan kowane mai samarwa." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Maɓallan API", "description": "Ƙirƙira, jera, sauya, da soke OmniRoute API keys daga CLI. Sarrafa matakan OAuth don tantancewar masu samarwa, sannan duba iyakokin izinin key da lokacin ƙarewarsa." }, "cli-models": { @@ -12445,7 +12449,7 @@ "description": "Yi hulɗa da sabar OmniRoute A2A daga CLI. Aika ayyuka, bincika tarihin aiwatar da ƙwarewa, da gwada ka'idar sadarwar agent-to-agent ta JSON-RPC 2.0 ta hanyar hulɗa." }, "cli-tunnel": { - "name": "CLI: Tunnels", + "name": "CLI: Ramuka", "description": "Fara da dakatar da haɗin tunnel (ngrok, Cloudflare, custom) daga CLI. Bincika URLs na tunnels masu aiki, saita tantancewa, da gwada yiwuwar isa daga waje." }, "cli-backup-sync": { @@ -12461,7 +12465,7 @@ "description": "Ƙaddamar da sa ido kan batch inference jobs daga CLI. Loda da sarrafa files don batch processing, samo sakamako, da haɗa batch pipelines da ayyukan CI/CD." }, "cli-eval": { - "name": "CLI: Evals", + "name": "CLI: Kimantawa", "description": "Ƙirƙira da gudanar da evaluation suites, kalli ci gaban benchmark kai tsaye, duba scorecards, kwatanta aikin samfura, da haɗa eval runs da ayyukan CI daga CLI." }, "cli-plugins-skills": { @@ -12519,7 +12523,7 @@ "storage": { "label": "Ma'ajiya", "agent": "Kasidar da ke canzawa (/api/agent-skills) → SKILL.md a GitHub", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / na gida)" }, "tagline": { "label": "Taken talla", @@ -12538,7 +12542,7 @@ "categoryConfig": "Saituna", "filterAll": "Duka", "coverageLabel": "Iyakokin aiki", - "mcpUrl": "MCP URL", + "mcpUrl": "URL na MCP", "a2aLink": "A2A", "mcpPrompt": "Ƙara wannan MCP endpoint ɗin zuwa agent ɗinka don ba shi kayan aikin OmniRoute guda 37.", "a2aPrompt": "Yi rajistar wannan Agent Card tare da orchestrator ɗinka don kunna rarraba ayyukan A2A.", @@ -12577,7 +12581,7 @@ "colTopModel": "Mafi Fitaccen Model", "colScore": "Maki", "colAvgScore": "Matsakaicin Maki", - "colModels": "Models", + "colModels": "Samfura", "colType": "Nau'i", "filterConfiguredOnly": "Waɗanda aka saita kawai", "filterAvailableOnly": "Waɗanda suke samuwa kawai", @@ -12661,7 +12665,7 @@ "add": "Ƙara", "manualApiKey": "Yi amfani da API key na hannu", "createDahlTokenFailed": "An kasa ƙirƙirar Dahl token", - "providerProxy": "Proxy", + "providerProxy": "Wakili", "providerProxyConfigureHint": "Saita proxy", "providerProxyTitleConfigured": "An saita proxy: {host}" }, @@ -12692,7 +12696,7 @@ "bronze": "Tagulla", "silver": "Azurfa", "gold": "Zinariya", - "platinum": "Platinum", + "platinum": "Filatin", "diamond": "Lu'u-lu'u" }, "tierLabel": "Mataki: {tier}", @@ -12987,6 +12991,12 @@ "STREAM_RECOVERY_MIDSTREAM_ENABLED": { "description": "Ba stream recovery damar sake neman martanin da haɗa shi bayan bytes sun riga sun isa ga abokin ciniki." }, + "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { + "description": "Tabbatar da ci gaba a tsakiyar kwarara bayan kiran kayan aiki yana da aminci: kada a taɓa ci gaba da kwararar da aka katse bayan an aika kiran kayan aiki (ko har yanzu yana gudana ko ya riga ya ƙare), sannan a dakata bayan ci gaba mara komai guda ɗaya maimakon amfani da duk kasafin sake gwadawa." + }, + "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { + "description": "Canja sau ɗaya zuwa wani haɗin na rukuni ɗaya idan rafi ya rufe kafin ya fitar da kowane firam mai amfani, kuma an ƙare iyakantaccen sake gwadawa na wannan haɗin. Idan babu wani haɗin da za a iya amfani da shi, za a mayar da kuskuren early-EOF na asali. A kashe: early-EOF zai kasance na ƙarshe bayan sake gwadawar." + }, "MODEL_CATALOG_INCLUDE_NAMES": { "description": "Haɗa filayen suna masu sauƙin nunawa a cikin martanin /v1/models. Kashe wannan ga abokan cinikin da ke karɓar IDs na samfuri kawai." }, @@ -13025,18 +13035,12 @@ "description": "Ci gaba da kiran kayan aikin sabar marasa gudana har sai samfurin ya dawo da amsar da abokin ciniki zai iya amfani da ita." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths.", - "label": "__MISSING__:Retry-After Provenance" + "label": "Asalin Retry-After", + "description": "A kan haɗaɗɗun martanin rashin samuwa na 429/503, a bar Retry-After idan ba a san takamaiman lokacin sake gwadawa na gaba ba maimakon aika ƙirƙirarren 1s, a ƙara error.retry_after_provenance, sannan a karanta alamomin sake gwadawa na rubutu a hanyoyin zubar da combo." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip.", - "label": "__MISSING__:Protected-Priority Infra Stops as 502" - }, - "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." - }, - "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { - "description": "__MISSING__:Fail over once to a sibling connection when a stream closes before emitting any useful frame and the bounded same-connection retry is spent. With no usable sibling, the original early-EOF error is returned. Off: early-EOF stays terminal after the retry." + "label": "Tsayawar Infra na Protected-Priority a matsayin 502", + "description": "A ba da amsar 502 maimakon 503 lokacin da maƙasudin fifiko na quota-only-fallback ya dakatar da combo saboda dalilin da aka tabbatar ba quota ba ne: buɗaɗɗen circuit breaker na provider ko tsallakewa bisa hasashen latency." } } }, @@ -13115,7 +13119,7 @@ "comboHealth": "Lafiyar Haɗi", "callLogs": "Rajistan Kira", "costs": "Kuɗaɗe", - "playground": "Playground", + "playground": "Filin Gwaji", "nestedCombo": "Haɗin cikin haɗi", "modelTarget": "Manufar samfurin", "weight": "Nauyi {value}%", @@ -13314,7 +13318,7 @@ "missing": "Ba a ƙayyade ba", "signalOnly": "Siginar tunani marar matakai takamaimai", "requestTags": "Alamomin buƙata", - "requestTagsExample": "coding, internal", + "requestTagsExample": "rubuta lamba, na ciki", "tagMode": "Daidaita alamu", "effortMode": "Yanayin ƙoƙari", "targetEffort": "Matakin ƙoƙarin manufa", @@ -13457,8 +13461,8 @@ "contributorHint": "GitHub OAuth yana duba matsayin mako na yanzu: Manyan 10 suna samun kwanaki 365, yayin da masu matsayi na 11–100 suke samun kwanaki 90. Yawan PR shi kaɗai ba ya taɓa ba da damar shiga ga waɗanda ba sa cikin Manyan 100.", "supporterButton": "Tallafa wa aikin", "supporterHint": "Zaɓuɓɓukan watanni 6, shekara 1, da na har abada da ake biya sau ɗaya ba su da sabuntawa ta atomatik; lokutan da suka cancanta suna taruwa, kuma na har abada shi ne mafi rinjaye.", - "colProvider": "Provider", - "colModel": "Model", + "colProvider": "Mai Samarwa", + "colModel": "Samfuri", "colQuota": "Ƙayyadadden amfani", "colLimits": "Iyakoki", "trainsOnPrompts": "Yana horar da model da umarnin shigarwa", @@ -13650,6 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Ƙi buƙatu kafin aikawa idan samfurin da aka nufa ba shi da ƙwarewar da ake buƙata (gani, kayan aiki, tsararren fitarwa, taga mahallin bayani). Wannan yana kare buƙatun kai-tsaye na mai samarwa guda ɗaya waɗanda ke tsallake matatar dacewa ta combo-layer.", "featureFlagDisableContextWindowChecksDescription": "Tsallake binciken taga mahallin bayani da iyakar token na shigarwa na OmniRoute don buƙatun kai-tsaye na samfuri guda ɗaya. Masu samarwa na waje za su ci gaba da tilasta ainihin iyakokinsu. Matse prompt da iyakokin token na fitarwa za su ci gaba da aiki.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Ƙididdigar bincike da binciken baya-bayan nan suna ƙirga kawai masu samarwa da har yanzu suke da haɗi mai aiki (masu samarwa marasa maɓalli kamar duckduckgo-free koyaushe ana ƙirga su). Kashewa yana adana kowane layin bincike da aka riƙe tare da ID na mai samarwa.", "publicSystem": { "notFound": { "title": "Ba a sami shafin ba", @@ -13813,7 +13818,7 @@ "autoDetecting": "Ana gano token ta atomatik...", "readingCredentials": "Ana karanta bayanan shaidar {providerLabel} daga ma'ajiyar wucin gadi ta AWS SSO", "tokenNotDetected": "Ba a gano token na {providerLabel} ta atomatik ba. Da fatan za a manna refresh token ɗinka da hannu.", - "refreshToken": "Refresh Token", + "refreshToken": "Alamar Sabuntawa", "tokenPlaceholder": "Za a cika token ta atomatik...", "importing": "Ana shigowa da shi...", "apiKeyPlaceholder": "Manna maɓallin API na {providerLabel}...", @@ -13868,7 +13873,7 @@ "bizUserId": "ID na Mai Amfani na Biz", "userUniqueId": "ID na Musamman na Mai Amfani", "scope": "Iyaka", - "tenant": "Tenant", + "tenant": "Mai Haya", "region": "Yanki", "importing": "Ana shigo da bayanai…", "importToken": "Shigo da Token", @@ -13911,7 +13916,7 @@ "duration": "Tsawon lokaci", "model": "Samfuri", "requestedModel": "Samfurin da aka nema", - "provider": "Provider", + "provider": "Mai Samarwa", "requester": "Mai buƙata", "tokens": "Token" } @@ -13923,7 +13928,7 @@ "time": "Lokaci", "latency": "Jinkiri", "clientIp": "IP na Abokin Ciniki", - "proxy": "Proxy", + "proxy": "Proksi", "direct": "Kai tsaye", "type": "Nau'i", "level": "Mataki", @@ -13962,7 +13967,7 @@ "metadata": { "compressionTitle": "Matsewa", "compressionDescription": "Saita ƙa'idodin matse mahallin don rage amfani da token da kuɗaɗe.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — Proksocin Relay", "relayDescription": "Wuraren ƙarshen relay proxy marasa sabar don ababen more rayuwa na AI ɗinku", "trafficInspectorTitle": "Mai Binciken Zirga-zirga — OmniRoute", "trafficInspectorDescription": "Sa ido kan kiran LLM + gyara matsalolin zirga-zirgar HTTPS ta kowace manhaja" @@ -14046,9 +14051,9 @@ "filterSources": "Tushe", "filterProviders": "Masu bayarwa", "clearFilters": "Share matatu", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Wakilin Cloud", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Mai Gudanarwa", "sourceStale": "Ba a sabunta ba tun {since}", "sourceOffline": "Ba ya kan layi", "sourceCollapse": "Naɗe", @@ -14160,10 +14165,5 @@ "partnerLinkNote": "Hanyar haɗin abokin hulɗa", "dismissAriaLabel": "Yi watsi" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Kashe samar da nau'ikan matakan tunani (misali -low, -medium, -high) a cikin kundin /v1/models.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "__MISSING__:Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "__MISSING__:Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Kashe samar da nau'ikan matakan tunani (misali -low, -medium, -high) a cikin kundin /v1/models." } diff --git a/src/i18n/messages/he.json b/src/i18n/messages/he.json index bcd41f8dc9..034fbd6991 100644 --- a/src/i18n/messages/he.json +++ b/src/i18n/messages/he.json @@ -31,7 +31,7 @@ "active": "פעיל", "inactive": "לא פעיל", "noData": "אין נתונים זמינים", - "nothingHere": "Nothing here yet", + "nothingHere": "עדיין אין כאן דבר", "configure": "הגדר", "manualConfig": "הגדרה ידנית", "manage": "נהל", @@ -47,7 +47,7 @@ "time": "זמן", "details": "פרטים", "created": "נוצר", - "lastUsed": "Last Refreshed", + "lastUsed": "רענון אחרון", "loadMore": "טען עוד", "noResults": "לא נמצאו תוצאות", "reloadPage": "טען מחדש את הדף", @@ -70,8 +70,8 @@ "note": "הערה", "free": "חינם", "skipToContent": "דלג לתוכן", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "השרת נתקל בבעיות. ייתכן שחלק מהתכונות לא יהיו זמינות.", + "maintenanceServerUnreachable": "לא ניתן להתחבר לשרת. מתחבר מחדש...", "accept": "קבל", "accountId": "מזהה חשבון", "alias": "כינוי", @@ -100,7 +100,7 @@ "sortOrder": "סדר מיון", "tab": "כרטיסייה", "text": "טקסט", - "textarea": "Textarea", + "textarea": "אזור טקסט", "tool": "כלי", "toolId": "מזהה כלי", "web": "אינטרנט", @@ -120,7 +120,7 @@ "compatible": "תואם", "chat-completions": "השלמת צ'אט", "oauth": "OAuth", - "auth_token": "Auth Token", + "auth_token": "אסימון אימות", "crypto": "קריפטו", "hours": "שעות", "selfsigned": "חתום בעצמו", @@ -150,9 +150,9 @@ "Failed to reset pricing": "איפוס התמחור נכשל", "apikey": "מפתח API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "מעבר ללוח הבקרה", + "checkSystemStatus": "בדיקת מצב המערכת", + "selectModel": "בחירת מודל", "addModel": "הוסף מודל", "effortNone": "ללא", "effortLow": "נמוך", @@ -162,12 +162,12 @@ "effortMax": "מקסימום", "effortUltra": "אולטרה", "reasoningEffort": "מאמץ חשיבה", - "wireApi": "Wire API", + "wireApi": "ממשק API קווי", "modelAliases": "כינויי מודל", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "שילובים", + "noModelsFound": "לא נמצאו מודלים", + "clear": "ניקוי", + "done": "סיום", "selectAll": "בחר הכול", "unselectAll": "בטל בחירה", "visibleModels": "גלויים", @@ -184,519 +184,519 @@ "selectAllProviders": "בדוק את כל הספקים", "clearProviderSelection": "בטל את הסימון של ספקים", "providersSelectedCount": "נבדקו {count} ספקים", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "אירעה שגיאה", + "comboDeleted": "השילוב נמחק", + "hide": "הסתרה", + "creating": "יוצר", + "comboCreated": "השילוב נוצר", + "swapFormats": "החלפת פורמטים", + "daysAgo": "לפני מספר ימים", + "retries": "ניסיונות חוזרים", + "errorDuringRestore": "שגיאה במהלך השחזור", + "eventsAppearHint": "רמז להופעת אירועים", + "noLockouts": "אין נעילות", + "webSearchDesc": "תיאור חיפוש באינטרנט", + "audioProvidersHeading": "כותרת ספקי אודיו", "cloudAgentProviders": "ספקי סוכן ענן", - "minutesAgo": "Minutes Ago", + "minutesAgo": "לפני מספר דקות", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "רענון אוטומטי בזמן אמת", + "webSearch": "חיפוש באינטרנט", + "anthropicPrefixPlaceholder": "מציין מיקום לקידומת Anthropic", + "addModelToCombo": "הוספת מודל לשילוב", + "failedToLoad": "הטעינה נכשלה", + "categoryMedia": "קטגוריית מדיה", + "enableCloud": "הפעלת ענן", + "expirationBannerExpiringSoon": "כרזת תפוגה בקרוב", + "retry": "ניסיון חוזר", + "embeddings": "הטמעות", + "errorCount": "מספר שגיאות", + "backupReasonManual": "סיבת גיבוי ידנית", + "safeSearchModerate": "חיפוש בטוח מתון", + "activeLimiters": "מגבילי קצב פעילים", + "a2aCardTitle": "כותרת כרטיס A2A", + "cloudWorkerUnreachable": "לא ניתן להגיע לעובד הענן", + "testFailed": "הבדיקה נכשלה", + "compatibleBaseUrlHint": "רמז לכתובת URL בסיסית תואמת", + "usageTracking": "מעקב אחר שימוש", + "disableCloudTitle": "כותרת השבתת הענן", + "noConnections": "אין חיבורים", + "providerHealth": "תקינות הספק", + "confirmDbImport": "אישור ייבוא מסד הנתונים", + "notAvailableSymbol": "סמל לא זמין", + "backupsAvailable": "גיבויים זמינים", + "providerAuto": "בחירה אוטומטית של ספק", + "newProviderNamePlaceholder": "מציין מיקום לשם ספק חדש", + "a2aQuickStartStep2": "שלב 2 בהתחלה המהירה של A2A", + "ok": "אישור", + "available": "זמין", + "noBackupYet": "אין עדיין גיבוי", + "more": "עוד", + "noCompatibleYet": "אין עדיין ספק תואם", + "multiProvider": "מספר ספקים", + "repairEnvHint": "רמז לתיקון Env", + "disablingCloud": "משבית את הענן", + "testBench": "סביבת בדיקות", + "valid": "תקף", + "cloudBenefitShare": "יתרון השיתוף בענן", + "mcpCardTitle": "כותרת כרטיס Mcp", + "disableConfirm": "אישור השבתה", + "filters": "מסננים", + "expirationBannerExpiredDesc": "תיאור הכרזה על תפוגה", + "saveComboDefaults": "שמירת ברירות המחדל של השילוב", + "cloudConnectedVerified": "החיבור לענן אומת", + "uptime": "זמן פעילות", + "compatibleProdPlaceholder": "מציין מיקום תואם לסביבת ייצור", + "fallbackChainsTitle": "כותרת שרשראות גיבוי", + "oauthLabel": "תווית Oauth", + "a2aCardDescription": "תיאור כרטיס A2A", + "okShort": "תקין", + "maintenance": "תחזוקה", + "formatConverter": "ממיר פורמטים", + "zedImportNetworkError": "שגיאת רשת בייבוא מ-Zed", + "apiKeyLabel": "תווית מפתח API", + "noModelsForProvider": "אין מודלים עבור הספק", + "mcpCardDescription": "תיאור כרטיס MCP", + "apiTypeLabel": "תווית סוג API", + "configuredProvidersLabel": "תווית ספקים מוגדרים", + "maxRetriesLabel": "תווית מספר ניסיונות חוזרים מרבי", + "title": "כותרת", + "output": "פלט", + "prefixHint": "רמז לקידומת", + "skipWizard": "דלג על האשף", + "failedCount": "מספר שנכשלו", + "confirmDbImportDesc": "תיאור אישור ייבוא מסד נתונים", + "entries": "רשומות", + "until": "עד", + "disableCombo": "השבתת שילוב", + "liveMonitorDescriptionPrefix": "קידומת לתיאור ניטור בזמן אמת", + "runningCount": "מספר פעילים", + "noActiveConnectionsInGroup": "אין חיבורים פעילים בקבוצה", + "savedSuccessfully": "נשמר בהצלחה", + "systemStorage": "אחסון מערכת", + "videoDesc": "תיאור וידאו", + "maxResults": "מספר תוצאות מרבי", + "timeRangeMonth": "טווח זמן של חודש", + "testSummary": "סיכום הבדיקה", + "failedSetPassword": "הגדרת הסיסמה נכשלה", + "audio": "שמע", + "restore": "שחזור", + "disableWarning": "אזהרת השבתה", + "moderationsDesc": "תיאור ניהול תוכן", + "providerHealthStatusAria": "תווית נגישות למצב תקינות הספק", + "modelNamePlaceholder": "מציין מיקום לשם המודל", + "mcpQuickStartStep2": "שלב 2 בהתחלה המהירה של MCP", + "quickStart": "התחלה מהירה", + "fullExportFailedWithError": "הייצוא המלא נכשל עם שגיאה", + "loadingBackups": "הגיבויים נטענים", + "anthropicBaseUrlPlaceholder": "מציין מיקום לכתובת ה-URL הבסיסית של Anthropic", + "description": "תיאור", + "noProviderFound": "לא נמצא ספק", + "auto": "אוטומטי", + "protocolsDescription": "תיאור הפרוטוקולים", + "cloudSessionNote": "הערה לגבי הפעלה בענן", + "advancedSettings": "הגדרות מתקדמות", + "defaultStrategy": "אסטרטגיית ברירת מחדל", + "purgeExpiredLogs": "מחיקת יומני רישום שפג תוקפם", + "justNow": "ממש עכשיו", + "providerTestFailed": "בדיקת הספק נכשלה", + "openaiBaseUrlPlaceholder": "מציין מיקום לכתובת ה-URL הבסיסית של Openai", + "image": "תמונה", + "failedCreateChain": "יצירת השרשרת נכשלה", + "importDatabase": "ייבוא מסד נתונים", + "allDataLocal": "כל הנתונים מקומיים", + "sectionTitle": "כותרת המקטע", + "failedToggle": "השינוי נכשל", + "editCombo": "עריכת שילוב", + "testResults": "תוצאות הבדיקה", + "searchQuery": "שאילתת חיפוש", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "שכפול", + "createCombo": "יצירת שילוב", + "searchTypeWeb": "סוג חיפוש: אינטרנט", + "addChain": "הוספת שרשרת", + "prefixLabel": "תווית קידומת", + "listModelsDesc": "תיאור רשימת המודלים", + "databaseSize": "גודל מסד הנתונים", + "chainCreated": "השרשרת נוצרה", + "providerTestTimeout": "תם הזמן שהוקצב לבדיקת הספק", + "routingStrategy": "אסטרטגיית ניתוב", + "translateAction": "פעולת תרגום", + "exportFailed": "הייצוא נכשל", + "connectedVerificationPending": "מחובר, ממתין לאימות", + "a2aQuickStartTitle": "כותרת התחלה מהירה של A2A", + "couldNotTest": "לא ניתן היה לבצע את הבדיקה", + "testAllCompatible": "בדיקת כל התואמים", + "anthropicCompatibleName": "שם תואם Anthropic", + "disabling": "משבית", + "failedEnable": "ההפעלה נכשלה", + "categoryUtility": "קטגוריית כלי עזר", + "customUrlOptional": "כתובת URL מותאמת אישית (אופציונלי)", + "localProviders": "ספקים מקומיים", + "comboNamePlaceholder": "מציין מיקום לשם השילוב", + "memoryRss": "זיכרון RSS", + "disableProvider": "השבתת ספק", + "welcomeDesc": "תיאור הפתיחה", + "nameLabel": "תווית שם", + "allOperational": "הכול פועל כרגיל", + "backupNow": "גיבוי עכשיו", + "providerMaxRetriesAria": "תווית ARIA למספר הניסיונות המרבי של הספק", + "textToSpeechDesc": "תיאור המרת טקסט לדיבור", + "machineId": "מזהה מכונה", + "globalProxy": "פרוקסי גלובלי", + "hitsMisses": "פגיעות והחטאות", + "testDesc": "תיאור הבדיקה", + "chatDesc": "תיאור הצ׳אט", + "importSuccess": "הייבוא הצליח", + "chat": "צ׳אט", + "a2aQuickStartStep1": "שלב 1 בהתחלה המהירה של A2A", + "importFailed": "הייבוא נכשל", + "inputPlaceholder": "מציין מיקום לקלט", + "providerModelsTitle": "כותרת מודלי הספק", + "lastBackup": "הגיבוי האחרון", + "yourEndpoint": "נקודת הקצה שלך", + "autoDisableThresholdDesc": "תיאור סף ההשבתה האוטומטית", + "rerankDesc": "תיאור הדירוג מחדש", + "modelsPathPlaceholder": "מציין מיקום לנתיב המודלים", + "noCombosYet": "אין עדיין שילובים", + "connectedVerificationPendingWithError": "מחובר, האימות בהמתנה עם שגיאה", + "comboDefaultsGuideHint1": "רמז 1 במדריך לברירות המחדל של שילובים", + "enableCloudTitle": "כותרת הפעלת הענן", + "configuredProvidersHint": "רמז לספקים שהוגדרו", + "paused": "מושהה", + "llmProviders": "ספקי LLM", + "enableCombo": "הפעלת שילוב", + "removeProviderOverrideAria": "תווית ARIA להסרת דריסת ספק", + "nodeVersion": "גרסת Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "הייצוא נכשל עם שגיאה", + "proxyConfigured": "הפרוקסי הוגדר", + "concurrencyPerModel": "מקביליות לכל מודל", + "protocolTasksLabel": "תווית משימות פרוטוקול", + "oauthProviders": "ספקי OAuth", + "lockedCount": "מספר נעולים", + "deleteChainConfirm": "אישור מחיקת שרשרת", + "recentTranslations": "תרגומים אחרונים", + "zedImportButton": "כפתור ייבוא Zed", + "responsesDesc": "תיאור תגובות", + "testedCount": "מספר שנבדקו", + "providersCommaSeparatedPlaceholder": "מציין מיקום לספקים מופרדים בפסיקים", + "signatureDefaults": "ברירות מחדל של חתימה", + "errorCreating": "שגיאה ביצירה", + "timeRangeYear": "טווח זמן של שנה", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "הענן הושבת בהצלחה", + "deleteConfirm": "אישור מחיקה", + "check": "בדיקה", + "safeSearch": "חיפוש בטוח", + "protocolLastActivity": "פעילות אחרונה של הפרוטוקול", + "openMcpDashboard": "פתיחת לוח הבקרה של MCP", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "תווית נתיב צ'אט", + "retryDelay": "השהיה לפני ניסיון חוזר", + "errorUpdating": "שגיאה בעדכון", + "ideCliIntegrations": "שילובי IDE ו-CLI", + "imageGeneration": "יצירת תמונות", + "apiKeyRequired": "נדרש מפתח API", + "resetAllTitle": "כותרת איפוס הכול", + "connectionError": "שגיאת חיבור", + "modelName": "שם המודל", + "apiKeyForCheck": "מפתח API לבדיקה", + "cloudRequestTimeout": "תם הזמן הקצוב לבקשת ענן", + "showConfiguredOnly": "הצגת המוגדרים בלבד", "showFreeOnly": "חינם בלבד", "addFirstProvider": "הוסף את הספק הראשון שלך", "addFirstProviderDesc": "חבר ספק AI כדי להתחיל בניתוב בקשות דרך OmniRoute. אתה יכול להשתמש בספקים חינמיים, מפתחות API או חשבונות OAuth.", "learnMore": "למידע נוסף", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "הכללת דומיינים", + "promptCache": "מטמון הנחיות", + "cloudConnected": "הענן מחובר", + "deleteChain": "מחיקת שרשרת", + "chatPathPlaceholder": "מציין מיקום לנתיב צ'אט", + "databasePath": "נתיב מסד הנתונים", + "usingLocalServer": "שימוש בשרת מקומי", + "globalComboConfig": "תצורת שילוב גלובלית", + "backupFailed": "הגיבוי נכשל", + "tabProtocols": "לשונית פרוטוקולים", + "continue": "המשך", + "categorySearch": "חיפוש קטגוריות", + "rateLimitStatus": "מצב מגבלת הקצב", + "repairEnvSuccess": "הסביבה תוקנה בהצלחה", + "nameRequired": "נדרש שם", + "country": "מדינה", + "trackMetricsDesc": "מעקב אחר מדדים", + "durationSecondsShort": "משך (שנ׳)", + "formatConverterDescription": "המרה בין פורמטים", + "cloudBenefitAccess": "גישה להטבות הענן", + "maxRetries": "מספר ניסיונות חוזרים מרבי", + "queueTimeout": "זמן קצוב לתור", "queueDepth": "עומק תור", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "הוספת ספק", + "realtime": "זמן אמת", + "totalTranslations": "סך כל התרגומים", + "protocolActiveStreamsLabel": "זרמים פעילים בפרוטוקול", + "repairEnv": "תיקון הסביבה", + "modelsCount": "מספר המודלים", + "viewBackups": "הצגת גיבויים", + "responsesApi": "Responses API", + "copyComboName": "העתקת שם השילוב", + "failures": "כשלים", + "failedUpdate": "העדכון נכשל", + "imageDesc": "תיאור התמונה", + "failedCreate": "היצירה נכשלה", + "remainingOfLimit": "נותרו מתוך המגבלה", + "protocolsTitle": "פרוטוקולים", + "expirationBannerExpiringSoonDesc": "תוקף המינוי יפוג בקרוב", + "source": "מקור", + "failed": "נכשל", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "שלב 1 להתחלה מהירה עם MCP", + "runTest": "הרצת בדיקה", + "loadingFallbackChains": "רשתות חלופיות נטענות", + "healthy": "תקין", + "version": "גרסה", + "saveBlockWeighted": "שמירת בלוק משוקלל", + "zedImportNone": "אין פריטים לייבוא מ-Zed", + "noBackupsYet": "אין עדיין גיבויים", + "noGlobalProxy": "אין Proxy גלובלי", + "noModels": "אין מודלים", + "stickyLimit": "מגבלה דביקה", + "passedCount": "מספר שעברו", + "zedImportFailed": "ייבוא מ-Zed נכשל", + "saving": "שומר", + "testAll": "בדיקת הכול", + "globalProxyDesc": "תיאור שרת ה-Proxy הגלובלי", + "latencyP99": "זמן השהיה P99", + "connectingToCloud": "מתחבר לענן", + "responses": "תגובות", + "errorDeleting": "שגיאה במחיקה", + "openaiPrefixPlaceholder": "מציין מיקום לקידומת OpenAI", + "enterPassword": "הזנת סיסמה", + "openA2aDashboard": "פתיחת לוח הבקרה של A2A", + "enableProvider": "הפעלת ספק", + "modeTest": "מצב בדיקה", + "failedDeleteChain": "מחיקת השרשרת נכשלה", + "providerDesc": "תיאור הספק", + "templateLoadHint": "רמז לטעינת תבנית", + "lastFailure": "הכשל האחרון", + "moveDown": "הזזה למטה", + "providerLabel": "תווית הספק", + "clearCacheFailed": "ניקוי המטמון נכשל", + "imagesGenerations": "יצירת תמונות", + "repairEnvWorking": "תיקון סביבת העבודה", + "millisecondsShort": "מ״ש", + "globalLabel": "תווית גלובלית", + "failuresPlural": "כשלים", + "completionsLegacyDesc": "תיאור השלמות מדור קודם", + "searchProviders": "חיפוש ספקים", + "chatPathHint": "רמז לנתיב הצ'אט", + "defaultStrategyDesc": "תיאור אסטרטגיית ברירת המחדל", + "latencyP95": "זמן השהיה P95", + "textToSpeech": "טקסט לדיבור", + "searchType": "סוג חיפוש", + "messages": "הודעות", + "aggregatorsGateways": "אגרגטורים ושערים", + "comboStrategyAria": "ARIA של אסטרטגיה משולבת", + "input": "קלט", + "testingConnection": "בודק את החיבור", + "excludeDomains": "אי-הכללת דומיינים", + "webCookieProviders": "ספקי קובצי Cookie באינטרנט", + "allTestsPassed": "כל הבדיקות עברו בהצלחה", + "openaiCompatibleName": "שם תואם Openai", + "warningCostOptimizedPartialPricing": "אזהרה: תמחור חלקי במצב מיטוב עלויות", + "comboDefaultsGuideTitle": "מדריך לברירות מחדל משולבות", + "hoursAgo": "שעות לפני", + "notAvailable": "לא זמין", + "skipAndContinue": "דלג והמשך", + "moderations": "בדיקות תוכן", + "proxyConfig": "תצורת פרוקסי", + "upstreamProxyProviders": "ספקי פרוקסי במעלה הזרם", + "exportAll": "ייצא הכול", + "queuedCount": "מספר הממתינים בתור", + "resetAll": "אפס הכול", + "noTranslations": "אין תרגומים", + "avgLatency": "זמן השהיה ממוצע", + "throttleStatus": "מצב הגבלת קצב", + "backupRetentionDesc": "תיאור שמירת גיבויים", + "noCBData": "אין נתוני CB", + "chainDeleted": "השרשרת נמחקה", + "timeLeft": "הזמן שנותר", + "expirationBannerExpired": "הודעת התפוגה פגה", + "language": "שפה", + "invalidFileType": "סוג קובץ לא חוקי", + "monitoredProviders": "ספקים מנוטרים", + "errors": "שגיאות", + "heap": "ערימה", + "chatCompletions": "השלמות צ'אט", + "exampleTemplatesHint": "רמז לתבניות לדוגמה", + "retryDelayLabel": "השהיה לפני ניסיון חוזר", + "audioTranscription": "תמלול שמע", + "fallbackChainsDesc": "תיאור שרשראות חלופיות", + "exampleTemplates": "תבניות לדוגמה", + "connectionsCount": "מספר חיבורים", + "modelsPathLabel": "נתיב המודלים", + "activeProvidersHint": "רמז לספקים פעילים", + "activeLockouts": "חסימות פעילות", + "invalid": "לא חוקי", + "skipPassword": "דלג על הסיסמה", + "moveUp": "הזז למעלה", + "timeRange": "טווח זמן", + "stickyLimitDesc": "תיאור מגבלה דביקה", + "cloudBenefitEdge": "יתרון הענן בקצה", + "custom": "מותאם אישית", + "verifying": "מתבצע אימות", + "baseUrlLabel": "תווית כתובת URL בסיסית", + "setPassword": "הגדרת סיסמה", + "safeSearchStrict": "חיפוש בטוח מחמיר", + "noChangesSinceBackup": "אין שינויים מאז הגיבוי", + "modelsPathHint": "רמז לנתיב המודלים", + "audioTranscriptions": "תמלולי שמע", + "testCombo": "בדיקת שילוב", + "mcpQuickStartTitle": "מדריך התחלה מהירה של MCP", + "comboUpdated": "השילוב עודכן", + "weighted": "משוקלל", + "providers": "ספקים", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "תיאור מצב ללא שרשראות גיבוי", + "yesImport": "כן, לייבא", + "lockoutsAutoRefreshHint": "רמז לרענון אוטומטי של נעילות", + "tabApis": "לשונית ממשקי API", + "sectionDescription": "תיאור המקטע", + "filter": "סינון", + "purgeLogsFailed": "ניקוי היומנים נכשל", + "latency": "זמן השהיה", + "testAllOAuth": "בדיקת כל חיבורי OAuth", + "mcpQuickStartStep3": "שלב 3 בהתחלה המהירה של MCP", + "repairEnvFailed": "תיקון הסביבה נכשל", + "zedImportHint": "רמז לייבוא מ-Zed", + "modelsAcrossEndpoints": "מודלים בנקודות קצה שונות", + "autoDisableBannedAccounts": "השבתה אוטומטית של חשבונות חסומים", + "securityDesc": "תיאור האבטחה", + "listModels": "הצגת מודלים", + "backupRestore": "גיבוי ושחזור", + "target": "יעד", + "zedImportSuccess": "הייבוא מ-Zed הצליח", + "lastHeaderUpdate": "עדכון הכותרת האחרון", + "categoryCore": "קטגוריית ליבה", + "noFallbackChains": "אין שרשראות גיבוי", + "noSearchProviders": "אין ספקי חיפוש", + "autoBalance": "איזון אוטומטי", + "noModelsYet": "אין עדיין מודלים", + "signatureFamily": "משפחת חתימות", + "externalApiCalls": "קריאות API חיצוניות", + "providerOverridesDesc": "תיאור דריסות ספק", + "signatureTool": "כלי חתימה", + "connectionFailed": "החיבור נכשל", + "activeLimitersPlural": "מגבילים פעילים", + "doneDesc": "תיאור סיום", + "down": "מושבת", + "noDataYet": "אין עדיין נתונים", + "activeProviders": "ספקים פעילים", + "nameInvalid": "שם לא תקין", + "skip": "דילוג", + "createChain": "יצירת שרשרת", + "audioSpeech": "דיבור קולי", + "cacheCleared": "המטמון נוקה", + "searchTypeNews": "סוג חיפוש: חדשות", + "durationMillisecondsShort": "משך זמן במילישניות (קצר)", + "addOpenAICompatible": "הוספת ספק תואם Open Ai", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "בתור", + "domainPlaceholder": "מציין מקום לדומיין", + "durationMinutesShort": "משך זמן בדקות (קצר)", + "verifyingConnection": "מאמת את החיבור", + "imageProviders": "ספקי תמונות", + "protocolToolsLabel": "תווית כלי פרוטוקול", + "queryPlaceholder": "מציין מקום לשאילתה", + "videoGeneration": "יצירת וידאו", + "timeRangeWeek": "טווח זמן: שבוע", + "limitExhausted": "המגבלה מוצתה", + "failedDisable": "ההשבתה נכשלה", + "inMemoryNote": "הערה בזיכרון", + "compatibleHint": "רמז לתאימות", + "errorShort": "שגיאה קצרה", + "advancedHint": "רמז מתקדם", + "restoreFailed": "השחזור נכשל", + "searchProvidersHeading": "כותרת ספקי חיפוש", + "comboName": "שם השילוב", + "autoDisableDescription": "תיאור השבתה אוטומטית", + "embeddingsDesc": "תיאור הטמעות", + "operational": "תפעולי", + "testAllApiKey": "בדיקת כל מפתחות ה-API", + "backupCreated": "הגיבוי נוצר", + "errorDuringImport": "שגיאה במהלך הייבוא", + "comboDefaultsGuideHint2": "רמז 2 במדריך לברירות המחדל של Combo", + "connecting": "מתבצעת התחברות", + "fillModelAndProviders": "יש למלא מודל וספקים", + "syncing": "מתבצע סנכרון", + "resetConfirm": "אישור איפוס", + "trackMetrics": "מעקב אחר מדדים", + "successful": "הפעולה הצליחה", + "recovering": "מתבצע שחזור", + "autoDisableThreshold": "סף השבתה אוטומטית", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "מתבצע סנכרון נתונים", + "cloudBenefitPorts": "יתרונות הענן: יציאות", + "compatibleProviders": "ספקים תואמים", "freeTierProviders": "ספקי שכבת חינם", "freeTierLabel": "רמה חינם זמינה", "freeTierProvidersDesc": "ספקים עם שכבות חינמיות - חלקם דורשים הרשמה למפתח API, אחרים אינם צריכים אישורים כלל.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "ניקוי המטמון", + "reqs": "בקשות", + "addAnthropicCompatible": "הוספת ספק תואם Anthropic", + "apiKeyProviders": "ספקי מפתחות API", + "tabsAria": "ARIA של כרטיסיות", + "resetting": "מתבצע איפוס", + "millisecondsAbbr": "מ״ש", + "backupReasonPreRestore": "סיבת הגיבוי לפני השחזור", + "disableCloud": "השבתת הענן", + "newProviderNameAria": "ARIA של שם ספק חדש", + "passwordsMismatch": "הסיסמאות אינן תואמות", + "a2aQuickStartStep3": "שלב 3 בהתחלה המהירה של A2A", + "liveMonitorDescriptionSuffix": "סיומת תיאור הצג החי", + "failedAddProvider": "הוספת הספק נכשלה", + "addAtLeastOneProvider": "יש להוסיף לפחות ספק אחד", + "reasonSeparator": "מפריד סיבות", + "zedImporting": "מתבצע ייבוא של Zed", + "confirmPasswordPlaceholder": "מציין מיקום לאישור הסיסמה", + "whatYouGet": "מה מקבלים", + "signatureSession": "חתימת הפעלה", + "errorCountNoCode": "מספר שגיאות ללא קוד", + "testing": "מתבצעת בדיקה", + "providersCommaSeparated": "ספקים מופרדים בפסיקים", + "exportDatabase": "ייצוא מסד הנתונים", + "hitRate": "שיעור פגיעות", + "completionsLegacy": "השלמות מדור קודם", + "removeModel": "הסרת מודל", + "timeRangeDay": "טווח זמן: יום", + "cloudRequestFailed": "בקשת הענן נכשלה", + "updatedAt": "עודכן בתאריך", + "monitoredProvidersHint": "רמז לספקים מנוטרים", + "connectionSuccessful": "החיבור הצליח", + "latencyP50": "זמן השהיה P50", + "logsDeleted": "יומני הרישום נמחקו", + "chatTester": "בודק צ'אט", + "safeSearchOff": "חיפוש בטוח כבוי", + "nameHint": "רמז לשם", + "debugToggle": "מתג ניפוי שגיאות", + "embedding": "הטמעה", + "issuesLabel": "תווית בעיות", + "optionAny": "אפשרות כלשהי", + "maxNestingDepth": "עומק קינון מרבי", + "rerank": "דירוג מחדש", + "checking": "מתבצעת בדיקה", + "getStarted": "תחילת העבודה", + "restoreSuccess": "השחזור הצליח", + "issuesDetected": "זוהו בעיות", + "signatureCache": "מטמון חתימות", + "modelLockouts": "נעילות מודלים", + "usingCloudProxy": "שימוש בשרת Proxy בענן", + "loadingHealth": "מצב התקינות נטען", + "providerOverrides": "דריסות ספקים", + "audioTranscriptionDesc": "תיאור תמלול אודיו", + "learnedFromHeaders": "נלמד מכותרות", + "totalRequests": "סה״כ בקשות", + "cloudUnstableNote": "הערה לגבי חוסר יציבות בענן", "gamificationAdmin": "מנהל Gamification", "monitorAnomaliesAndHealth": "מעקב אחר חריגות ותקינות המערכת", "flaggedAnomalies": "חריגות מסומנות", @@ -704,7 +704,7 @@ "apiKey": "מפתח API", "xpLastHour": "XP (שעה אחת)", "zScore": "ציון Z", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "חשוד", "tokensCommunityServers": "שרתי קהילה", "tokensServerNamePlaceholder": "שם השרת", "tokensApiKeyPlaceholder": "מפתח API", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "טוען עוד...", "recommended": "מומלץ", "understand": "הבנתי", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "עיבוד באצוות", + "batchConceptSubtitle": "עבדו אלפי בקשות באופן אסינכרוני בכ־50% מהעלות (חלון של 24 שעות). אידיאלי להערכות, לסיווג ולהטמעות.", + "batchConceptHowItWorks": "איך זה עובד", + "batchConceptBenefit50pct": "הנחה של 50% על אסימוני קלט ופלט", + "batchConceptAsync24h": "עיבוד אסינכרוני עם חלון השלמה של 24 שעות", + "batchConceptUseCases": "המתאים ביותר לסיווג בהיקף גדול, להערכות ולהטמעות", + "batchHeaderSubtitle": "הרצת בקשות רבות כמשימה אחת", + "batchStep1": "1 · העלאת JSONL", + "batchStep1Desc": "הוספת בקשות", + "batchStep2": "2 · יצירת אצווה", + "batchStep2Desc": "הפעלת משימה", + "batchStep3": "3 · קבלת תוצאות", + "batchStep3Desc": "הורדת הפלט", + "filesConceptTitle": "קובצי אצווה", + "filesConceptSubtitle": "קובצי JSONL המשמשים אצוות: בקשות קלט, תוצאות ושגיאות.", + "filesConceptInput": "קלט — קובץ ה-JSONL שלך עם בקשה אחת בכל שורה", + "filesConceptOutput": "פלט — תוצאות מבקשות שהושלמו", + "filesConceptError": "שגיאות — בקשות שנכשלו", + "filesConceptRetention": "תקופת שמירה: 30 יום כברירת מחדל (29 יום ב-Anthropic)", + "wizardTitle": "אצווה חדשה", + "wizardClose": "סגירה", + "wizardNext": "הבא", + "wizardBack": "חזרה", + "wizardCancel": "ביטול", + "wizardCreate": "יצירת אצווה", + "wizardCreating": "מתבצעת יצירה…", + "wizardStep1Destination": "יעד", + "wizardStep2Input": "קלט", + "wizardStep3Validate": "אימות", + "wizardStep4Cost": "עלות ויצירה", + "wizardProviderLabel": "ספק", + "wizardEndpointLabel": "נקודת קצה", + "wizardModelLabel": "מודל", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (אנחנו נמיר)", + "wizardDropOrPick": "גררו קובץ לכאן או לחצו כדי לבחור", + "wizardCsvMappingTitle": "מיפוי עמודות CSV ← שדות בקשה", + "wizardCsvMappingAddField": "הוספת שדה", "wizardCsvNoColumns": "לא זוהו עמודות בכותרת ה-CSV.", "wizardCsvIgnoreColumn": "— התעלם —", "wizardCsvCustomIdMapped": "custom_id מופה", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} שורות פוענחו", "wizardCsvRowsSkipped": "{count} שורות דולגו", "wizardCsvRowError": "שורה {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "כל השורות תקינות", "wizardValidating": "מאמת…", "wizardValidationParseFailed": "האימות נכשל — לא ניתן היה לנתח את התוכן.", "wizardValidationSummary": "{lines} שורות · {ids} custom_ids ייחודיים", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "זוהו custom_ids כפולים:", "wizardValidationFirstErrors": "שגיאות ({count} הראשונות):", "wizardValidationLine": "שורה {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "שגיאות אימות", + "wizardValidationPreview": "תצוגה מקדימה (5 הבקשות הראשונות)", + "wizardValidationSamplingNote": "הקובץ גדול — האימות בוצע באמצעות דגימה (1,000 השורות הראשונות ו-100 האחרונות). אימות מלא מתבצע בצד השרת.", + "wizardCostSync": "עלות סנכרון", + "wizardCostBatch": "עלות אצווה (50%-)", + "wizardCostSavings": "חיסכון", + "wizardCostEstimatedNotice": "עלות משוערת — החיוב בפועל עשוי להשתנות.", + "wizardErrorUpload": "העלאת הקובץ נכשלה. נסו שוב.", + "wizardErrorCreate": "יצירת האצווה נכשלה. נסו שוב.", + "wizardEmptyProviders": "חברו ספק התומך באצוות (OpenAI, Anthropic או Gemini) כדי ליצור אצווה.", + "uploadModalTitle": "העלאת קובץ אצווה", + "uploadModalDropOrPick": "גררו לכאן קובץ .jsonl או לחצו כדי לבחור", + "uploadModalUpload": "העלאה", + "uploadModalCancel": "ביטול", + "uploadModalError": "ההעלאה נכשלה. נסו שוב.", + "uploadModalSuccess": "הועלה", + "uploadModalSizeLimit": "עד 512 MB", + "batchListNewButton": "אצווה חדשה", + "batchListAutoRefresh": "רענון אוטומטי כל 30 שניות", + "batchListCostColumn": "עלות", + "batchActionCancel": "ביטול", + "batchActionDownloadOutput": "הורדת הפלט", + "batchActionDownloadErrors": "הורדת השגיאות", + "batchActionRetry": "ניסיון חוזר לבקשות שנכשלו", + "batchActionRetryConfirm": "לנסות שוב {n} בקשות שנכשלו? העלות הסופית תלויה במספר האסימונים שנצרכו בפועל.", + "expirationBadgeCritical": "קריטי", + "expirationBadgeWarning": "בקרוב", + "expirationBadgeNormal": "בהמתנה", + "expirationBadgeExpired": "פג תוקף", + "filesListUploadButton": "העלאה", + "filesListUsedByColumn": "בשימוש על ידי", + "filesListUsedByNone": "ללא", + "filesListUsedByRoleInput": "קלט", + "filesListUsedByRoleOutput": "פלט", + "filesListUsedByRoleError": "שגיאה", + "filesListSizeColumn": "גודל", + "batchListProgressPartial": "(חלקי)", + "batchListProviderColumn": "ספק", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", - "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListProviderOther": "אחר", + "batchListTitle": "אצוות", + "batchListCount": "{count} אצוות", + "batchListRemovingCompleted": "מסיר…", + "batchListRemoveCompleted": "הסרת אצוות שהושלמו", + "batchListTableStatus": "סטטוס", + "batchListTableId": "מזהה", + "batchListTableEndpoint": "נקודת קצה", + "batchListTableModel": "מודל", + "batchListTableProgress": "התקדמות", + "batchListTableCreated": "נוצר", + "batchListTableExpires": "תפוגה", + "batchListLoading": "בטעינה…", + "batchListEmpty": "לא נמצאו אצוות", + "batchListValidating": "מתבצע אימות…", + "batchStatusAll": "כל הסטטוסים", + "batchStatusInProgress": "בתהליך", + "batchStatusValidating": "מתבצע אימות", + "batchStatusFinalizing": "מתבצע סיום", + "batchStatusCompleted": "הושלם", + "batchStatusFailed": "נכשל", + "batchStatusCancelled": "בוטל", + "batchStatusCancelling": "מתבצע ביטול", + "batchStatusExpired": "פג תוקף", + "batchStatusCompletedWithFailures": "הושלם עם כשלים", + "batchStatusInProgressWithFailures": "בתהליך (עם כשלים)", + "batchStatusFinalizingWithFailures": "מתבצע סיום (עם כשלים)", + "batchStatusCancelledWithFailures": "בוטל עם כשלים", + "batchStatusExpiredWithFailures": "פג תוקף (חלקי)", + "wizardCostEstimating": "מתבצעת הערכת עלות…", + "wizardCostRequests": "בקשות", + "wizardCostInputTok": "טוקני קלט", + "wizardCostOutputTok": "טוקני פלט", + "wizardCostWindow": "חלון", + "wizardDestinationSelectProvider": "בחירת ספק…", + "wizardDestinationSelectModel": "בחירת מודל…", + "wizardDestinationConnectProvider": "חיבור ספק", + "batchListBatchCreated": "האצווה {id} נוצרה — הרשימה מתרעננת…", + "batchListBatchCreatedDismiss": "סגירה", + "batchListRefreshing": "מתבצע רענון…", + "batchListRefresh": "רענון", + "uploadFileModalRemove": "הסרה", + "uploadFileModalUploading": "מתבצעת העלאה…", + "wizardInputReading": "הקובץ נקרא…", + "wizardInputReady": "מוכן", + "wizardInputLargeFileLabel": "קובץ גדול — אימות באמצעות דגימה", + "wizardInputCsvJsonlReady": "קובץ JSONL נוצר — מוכן לאימות.", + "wizardInputLargeFileWarning": "זוהה קובץ גדול — האימות מתבצע באמצעות דגימה (5 MB הראשונים + 100 KB האחרונים). האימות המלא מתבצע בצד השרת.", + "wizardCostWindow24h": "חלון השלמה של 24 שעות", + "wizardValidationFieldsOk": "שדות החובה תקינים", + "filesListDelete": "מחיקה", + "filesListDownload": "הורדה", + "batchDetailActionCancel": "ביטול האצווה", + "batchDetailActionRetry": "ניסיון חוזר של בקשות שנכשלו", + "batchDetailCancelling": "מתבצע ביטול…", + "batchDetailRetrying": "מתבצעת הכנה לניסיון חוזר…", + "batchDetailCancelConfirm": "לבטל את האצווה הזו? בקשות שנמצאות בתהליך יופסקו.", + "batchActionCancelError": "ביטול האצווה נכשל. נסו שוב.", + "batchActionRetryError": "הניסיון החוזר של הבקשות שנכשלו נכשל. נסו שוב.", + "batchConceptRetentionNote": "קובצי התוצאות והשגיאות נשמרים למשך 30 יום (Anthropic:‏ 29 ימים)", "batchFilesSizeColumn": "גודל", "toggleNoAuthProvider": "החלף ספק ללא אימות", "loadingModels": "טוען מודלים…", @@ -988,14 +988,14 @@ "disabled": "מושבת", "featureFlagOmnirouteEmergencyFallbackDescription": "ניתוב בקשות שחרגו מהתקציב לספק/מודל גיבוי חינמי לשעת חירום.", "featureFlagArenaEloSyncEnabledDescription": "הפעלת סנכרון ELO תקופתי מלוח המובילים של Arena AI עבור דירוגי אינטליגנציית מודלים.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "יצירה והוספה של סיכומי שיחות כאשר ניתוב משולב עובר בין מודלים. השביתו אפשרות זו כדי לטפל במעברים בין מודלים באופן עצמאי ולמנוע בקשות העברה ברקע עבור כל השילובים הקיימים והעתידיים.", "featureFlagExposeCcDiscoveryAliasesDescription": "פרסם את מזהי המראה של claude/<provider>/<model> ב-/v1/models כך שרשימות גילוי המודלים של Claude Code יכללו מודלים שאינם של Claude. אזהרה: מכפיל את רשומות הקטלוג עבור כל הלקוחות כאשר זה מופעל באופן גלובלי.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "המתג הראשי לכינויי השער no-think/<provider>/<model>. מופעל (ברירת מחדל): /v1/models מציג וריאציה ללא חשיבה עבור כל מודל Claude מתאים שתומך בחשיבה, ומזהה no-think/ שנשלח בבקשה מפוענח בחזרה למודל האמיתי תוך דיכוי ההנמקה. מושבת: לא מוצגות וריאציות, ומזהה no-think/ מטופל כמו כל מזהה מודל לא מוכר אחר. הגדרת ההצטרפות/החרגה ModelSpec.noThinkingAlias לכל מודל עדיין חלה כאשר אפשרות זו מופעלת.", "featureFlagChatVirtualLanesEnabledDescription": "הפעל נתיבי קבלה וירטואליים אדפטיביים לכל דייר (tenant) עבור שליחת ספקים (#9654): פרץ עומס של דייר אחד כבר לא מחזיר 503 לדייר אחר. משתנה הסביבה OMNIROUTE_CHAT_VIRTUAL_LANES גובר על הגדרה זו בלוח הבקרה; השינויים נכנסים לתוקף לאחר הפעלת השרת מחדש.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "דפי הספקים בלוח הבקרה: הצגת תג החינם רק עבור אותות שהספק מכבד — ללא היוריסטיקת שם התצוגה, שדות חינמיים שאינם בוליאניים וסיומות :free אצל ספקים רשומים שאין להם שכבה חינמית מתועדת. במצב כבוי, כלל התג ההיסטורי נשמר.", + "featureFlagProxySkipRecentlyFailedDescription": "מאגרי פרוקסי והתחלופה לפי חשבון של opencode מפסיקים להשתמש מחדש בפרוקסי שזה עתה נכשל (בדיקת TCP נדחתה, או שהתקבלה דרכו תגובת 429) למשך פרק זמן נפרד לכל תהליך, שמוכפל בכל הישנות עד לתקרה. לא נכתב סטטוס לפרוקסי; כאשר כל המועמדים מושהים, הבחירה נשארת ללא שינוי. מושבת כברירת מחדל: סדר הבחירה זהה בדיוק לתחלופה הרגילה.", + "featureFlagProxyPoolEgressObservationDescription": "הצגת מספר כתובות ה-IP הנצפות ליציאה ששירתו את חברי מאגר הפרוקסי במהלך 24 השעות האחרונות, מספר החיבורים שהשתמשו בהן והמספר המרבי שנצפה מאחורי כתובת IP אחת, מתחת למאגר בלוח הבקרה. לקריאה בלבד, מחושב מיומן הפרוקסי ולעולם אינו משמש לניתוב. מושבת כברירת מחדל: עורך המאגר נשאר ללא שינוי ונתיב התצפית מחזיר null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "בסריקת תקינות הפרוקסי, יש לאפשר לבדיקה שהיעד דחה (401/403/429: הפרוקסי העביר את הבקשה, והיעד דחה את כתובת ה-IP הזו ליציאה) לאפס את רצף הכשלים העוקבים של הפרוקסי, כמו בדיקה שנענתה. מושבת כברירת מחדל: דחייה נשארת ניטרלית ושומרת על הרצף. תגובת 5xx נשארת בלתי מכרעת בכל מקרה, ודחייה לעולם אינה מסירה, משביתה או מפעילה מחדש פרוקסי.", "sidebar": { "home": "בית", "dashboard": "לוח מחוונים", @@ -1011,12 +1011,12 @@ "media": "מדיה", "settings": "הגדרות", "translator": "מתרגם", - "playground": "Playground", - "searchTools": "Search Tools", + "playground": "מגרש ניסויים", + "searchTools": "כלי חיפוש", "agents": "סוכנים", "cloudAgents": "סוכני ענן", - "memory": "Memory", - "skills": "Skills", + "memory": "זיכרון", + "skills": "מיומנויות", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", "chaosConfig": "מצב כאוס", @@ -1029,7 +1029,7 @@ "embeddedServices": "שירותים מוטמעים", "embeddedServicesSubtitle": "ניהול שירותי פרוקסי מקומיים", "logs": "יומנים", - "webhooks": "Webhooks", + "webhooks": "התראות Webhook", "webhooksSubtitle": "קבל הודעה על אירועים", "logExport": "ייצוא יומנים", "logExportSubtitle": "שליחת יומני הקריאות החוצה", @@ -1055,64 +1055,64 @@ "serverDisconnectedMsg": "שרת ה-proxy נעצר או מופעל מחדש.", "expandSidebar": "הרחב את סרגל הצד", "collapseSidebar": "כווץ את סרגל הצד", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themes": "ערכות נושא", + "presetColors": "צבעים פופולריים", + "createTheme": "יצירת ערכת נושא", + "chooseColor": "בחרו צבע אחד", + "themeCoral": "אלמוג", + "themeBlue": "כחול", + "themeRed": "אדום", + "themeGreen": "ירוק", + "themeViolet": "סגול", + "themeOrange": "כתום", + "themeCyan": "טורקיז", "cliToolsShort": "כלים", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "משימות אצווה", + "themeSystem": "מערכת ערכות הנושא", + "whitelabelingDesc": "תיאור המיתוג המותאם אישית", + "switchThemes": "החלפת ערכות נושא", + "themeAccentDesc": "תיאור צבע ההדגשה של ערכת הנושא", + "uploadFavicon": "העלאת Favicon", + "themeDark": "ערכת נושא כהה", + "customLogoDesc": "תיאור לוגו מותאם אישית", + "sidebarVisibilityToggle": "מתג נראות סרגל הצד", + "themeAccent": "צבע הדגשה של ערכת הנושא", + "resetFavicon": "איפוס סמל האתר", + "whitelabeling": "מיתוג מותאם אישית", + "darkMode": "מצב כהה", + "uploadLogo": "העלאת לוגו", + "themeLight": "ערכת נושא בהירה", + "appName": "שם היישום", + "appNameDesc": "תיאור שם היישום", + "resetLogo": "איפוס הלוגו", + "customFavicon": "סמל אתר מותאם אישית", + "hideHealthLogs": "הסתרת יומני תקינות", + "customLogo": "לוגו מותאם אישית", + "appearance": "מראה", + "themeSelectionAria": "תווית נגישות לבחירת ערכת נושא", + "themeCreate": "יצירת ערכת נושא", + "customFaviconDesc": "תיאור סמל אתר מותאם אישית", + "logoPreview": "תצוגה מקדימה של הלוגו", + "themeCustom": "ערכת נושא מותאמת אישית", + "hideHealthLogsDesc": "תיאור הסתרת יומני תקינות", + "faviconPreview": "תצוגה מקדימה של סמל האתר", + "changelog": "יומן שינויים", + "contextSection": "הקשר ומטמון", + "contextCaveman": "איש מערות", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "שילובי מנועים", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "אולטרה", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "הגדרות דחיסה", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "סטודיו לשילובים", "combosLiveSubtitle": "מפל ניתוב בזמן אמת", "compressionStudio": "Compression Studio", "compressionExclusions": "החרגות", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "מפל מנועים בזמן אמת", "compressionExclusionsSubtitle": "עקיפת מודל/נקודת קצה", "chaosConfigSubtitle": "הרצה מקבילית מרובת מודלים", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "ניתוב", + "protocolsSection": "פרוטוקולים", + "agentsAiSection": "סוכנים ובינה מלאכותית", + "cacheContextSection": "מטמון והקשר", + "analyticsSection": "ניתוח נתונים", + "costsSection": "עלויות", + "monitoringSection": "ניטור", + "auditSecuritySection": "ביקורת ואבטחה", + "devtoolsSection": "כלי פיתוח", + "configurationSection": "הגדרות", + "aiFeaturesSection": "תכונות AI", "mcp": "MCP", "a2a": "A2A", "plugins": "תוספים", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "נקודות קצה של API", + "batchFiles": "קבצים", + "analyticsEvals": "הערכות", + "analyticsSearch": "חיפוש", + "analyticsUtilization": "ניצולת", + "analyticsComboHealth": "תקינות שילובים", + "analyticsCompression": "דחיסה", + "costsBudget": "תקציב", "costsFreeTiers": "תקציב מסלול חינמי", "costsFreeTiersSubtitle": "הקצאות חודשיות של טוקנים חינמיים", "freeProviderRankings": "דירוג ספקים חינמיים", "freeProviderRankingsSubtitle": "הספקים החינמיים הטובים ביותר מדורגים לפי ציוני ELO של המודלים", "radar": "קטלוג רדאר", "radarSubtitle": "קטלוג מודלים חינמי מועשר בקהילה", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "שיתוף מכסה", + "costsPricing": "תמחור", + "logsProxy": "יומני Proxy", + "logsConsole": "מסוף", + "logsActivity": "פעילות", + "auditMcp": "ביקורת MCP", "auditA2a": "ביקורת A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "מראה", + "settingsAi": "הגדרות AI", + "settingsSecurity": "אבטחה", "settingsAccessTokens": "אסימוני גישה", "settingsFeatureFlags": "תכונה דגלים", "settingsCache": "מטמון", "settingsAuthz": "הרשאות", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsRouting": "ניתוב", + "settingsResilience": "עמידות", "modelLockout": "נעילת מודלים", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "מתקדם", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "מכסת ספק", + "providerQuota": "מכסת ספק", + "runtime": "זמן ריצה", + "consoleLogs": "יומני המסוף", + "logsTimeline": "ציר זמן", "logsTimelineSubtitle": "ציר זמן של בקשות חזותיות", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "שיחות", + "conversationsSubtitle": "שיחות סוכניות מרובות סבבים", + "globalRouting": "ניתוב גלובלי", + "mitmProxy": "פרוקסי MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "תכונות סוכניות", + "otherFeaturesSection": "תכונות אחרות", + "compressionContextGroup": "דחיסת הקשר", + "gamificationGroup": "גיימיפיקציה", + "toolsGroup": "כלים", + "integrationsGroup": "אינטגרציות", + "proxyGroup": "פרוקסי", + "costsParametersGroup": "פרמטרי עלויות", + "auditGroup": "ביקורת", + "batchGroup": "עיבוד באצווה", + "homeSubtitle": "סקירת לוח הבקרה", + "providersSubtitle": "ניהול ספקי AI", + "quotaTrackerSubtitle": "מעקב אחר מגבלות שימוש", + "providerQuotaSubtitle": "מעקב אחר מגבלות השימוש של ספקים", + "runtimeSubtitle": "עמידות בזמן אמת והפעלות", + "contextCombosSubtitle": "שילוב מנועי דחיסה", + "cliToolsSubtitle": "הגדרת סביבות ריצה של CLI", + "agentsSubtitle": "ניהול סוכנים מקומיים", + "cloudAgentsSubtitle": "ניהול סוכנים מבוססי ענן", + "apiEndpointsSubtitle": "חשיפת נקודות קצה מותאמות אישית", + "proxySubtitle": "הגדרות פרוקסי HTTP", + "mitmProxySubtitle": "יירוט MITM", + "oneProxySubtitle": "שער פרוקסי ציבורי", + "leaderboard": "טבלת מובילים", + "profile": "פרופיל", + "tokens": "טוקנים", + "gamificationAdmin": "ניהול גיימיפיקציה", + "leaderboardSubtitle": "דירוגים והישגים", + "profileSubtitle": "חשבון והעדפות", + "tokensSubtitle": "שימוש בטוקנים ותקציבים", + "gamificationAdminSubtitle": "ניטור חריגות ומניעת רמאות", + "usageSubtitle": "נתוני תעבורה ושימוש", + "analyticsComboHealthSubtitle": "אמינות יעד משולב", + "analyticsUtilizationSubtitle": "ניצולת ספקים", + "costsSubtitle": "פילוח הוצאות", + "cacheSubtitle": "שיעורי פגיעה במטמון", + "analyticsCompressionSubtitle": "נתוני חיסכון בטוקנים", + "analyticsSearchSubtitle": "ניתוחי כלי החיפוש", + "analyticsEvalsSubtitle": "תוצאות חבילת ההערכה", "providerStats": "סטטיסטיקות ספקים", "providerStatsSubtitle": "מדדי השהיה וביצועים", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "יומני יישום", + "logsProxySubtitle": "יומני תעבורת פרוקסי", + "consoleLogsSubtitle": "פלט המסוף", + "logsActivitySubtitle": "יומן פעילות משתמשים", + "healthSubtitle": "בדיקת תקינות המערכת", + "costsPricingSubtitle": "כללי תמחור לפי מודל", + "costsBudgetSubtitle": "מגבלות תקציב", + "costsQuotaShareSubtitle": "שיתוף מכסות ספקים בין מפתחות", + "auditLogSubtitle": "ביקורת הרשאות", + "auditMcpSubtitle": "ביקורת שרתי MCP", + "auditA2aSubtitle": "ביקורת פרוטוקול A2A", + "translatorSubtitle": "המרת פורמטים", + "playgroundSubtitle": "בדיקת פרומפטים בזמן אמת", + "searchToolsSubtitle": "מאגר כלי חיפוש", + "memorySubtitle": "זיכרון מתמשך לסוכנים", + "omniSkillsSubtitle": "מאגר מיומנויות Sandbox", + "agentSkillsSubtitle": "מאגר מיומנויות A2A", + "mcpSubtitle": "בקרות שרתי MCP", + "a2aSubtitle": "שרת פרוטוקול A2A", "pluginsSubtitle": "חנות תוספים והתקנות", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "קובצי מדיה במטמון", + "batchFilesSubtitle": "קובצי קלט/פלט באצווה", + "settingsSubtitle": "כל ההגדרות", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "ערכת נושא ופריסה", + "settingsAiSubtitle": "ברירות מחדל להתנהגות AI", + "globalRoutingSubtitle": "כללי ניתוב גלובליים", + "settingsResilienceSubtitle": "ניסיונות חוזרים ומפסקי זרם", + "settingsAdvancedSubtitle": "אפשרויות למשתמשים מתקדמים", + "settingsSecuritySubtitle": "אימות והצפנה", "settingsAccessTokensSubtitle": "אסימוני CLI מוגבלי היקף למצב מרוחק", "settingsFeatureFlagsSubtitle": "החלף את יכולות המערכת", "settingsCacheSubtitle": "קטלוג מודלים ומטמון תגובות", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "סרגל צד", + "settingsSidebarSubtitle": "התאמה אישית של פריסת סרגל הצד", "settingsAuthzSubtitle": "מלאי נתיבים ומדיניות עקיפה", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "תיעוד", + "issuesSubtitle": "דיווח על באג", + "changelogSubtitle": "הערות גרסה", "costsQuotaPlans": "תוכניות ומכסות", "costsQuotaPlansSubtitle": "הגדרת תוכניות לפי ספק", "activity": "פעילות", @@ -1275,11 +1275,11 @@ "systemGroup": "מערכת", "costsOverview": "סקירה כללית", "costsOverviewSubtitle": "ניתוח עלויות מאוחד", - "agentBridge": "Agent Bridge", + "agentBridge": "גשר סוכנים", "agentBridgeSubtitle": "יירוט תעבורת סוכן IDE", "trafficInspector": "מפקח תעבורה", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "בדיקת תעבורת הבקשות והתשובות מהאפליקציות שלך", + "trafficInspectorPurpose": "ניתן לראות בדיוק מה האפליקציה שלך שולחת לספקי AI ומה היא מקבלת מהם. פועל עם כל לקוח תואם OpenAI.", "cliCode": "קוד CLI", "cliCodeSubtitle": "כלי קוד המצביעים על OmniRoute", "cliAgents": "סוכני CLI", @@ -1318,7 +1318,7 @@ "noResults": "אין תוצאות" }, "webhooks": { - "title": "Webhooks", + "title": "וובהוקים", "description": "הגדר התקשרות עם HTTP עבור אירועי מערכת.", "configuredWebhooks": "Webhooks מוגדרים", "configuredWebhooksDesc": "נהל נקודות קצה מסירה, אירועים רשומים, סטטוס ושליחות בדיקה.", @@ -1345,7 +1345,7 @@ "refresh": "רענן", "loading": "טוען webhooks...", "never": "לעולם לא", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {אין כשלים} one {כשל אחד} other {# כשלים}}", "testWebhook": "שלח מבחן", "testSuccess": "בדיקת webhook נשלחה בהצלחה.", "testFailed": "בדיקת webhook נכשלה.", @@ -1445,7 +1445,7 @@ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "טוקן ה-HTTP API שהתקבל מ-@BotFather בעת יצירת הבוט שלך.", "chatId": "מזהה צ'אט / ערוץ ב-Telegram", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 או @channelname", "chatIdHint": "המזהה המספרי הייחודי או שם המשתמש הציבורי של הצ'אט/ערוץ.", "tutorial": "כיצד להגדיר Webhook של Telegram:" } @@ -1506,7 +1506,7 @@ "a2aSkill": "מיומנות", "a2aSkillPlaceholder": "סנן לפי שם מיומנות", "a2aState": "מדינה", - "a2aAllStates": "All states", + "a2aAllStates": "כל המצבים", "a2aStateSubmitted": "הוגש", "a2aStateWorking": "עובד", "a2aStateCompleted": "הושלם", @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "כלי מוביל" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "ערכות נושא", + "description": "בחרו ערכת נושא מוכנה מראש או צרו ערכה משלכם באמצעות צבע אחד", + "presetColors": "צבעים פופולריים", + "customTheme": "ערכת נושא מותאמת אישית", + "customThemeDesc": "לחצו על יצירת ערכת נושא ובחרו צבע אחד", + "createTheme": "יצירת ערכת נושא", + "activePreset": "ערכת נושא פעילה" }, "header": { "logout": "התנתק", @@ -1591,63 +1591,63 @@ "cliToolsDescription": "הגדר כלי CLI", "home": "בית", "homeDescription": "ברוכים הבאים ל-OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "נקודות קצה", + "endpointDescription": "ניהול נקודות קצה של שרתי Proxy,‏ MCP,‏ A2A ו-API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "ניהול שרתי Model Context Protocol וכלים", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "משימות ותצפיתיות של פרוטוקול Agent-to-Agent", "settings": "הגדרות", "settingsDescription": "נהל את ההעדפות שלך", "openaiCompatible": "תואם OpenAI", "anthropicCompatible": "תואם אנתרופי", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "media": "מדיה", + "mediaDescription": "יצירת תמונות, סרטונים ומוזיקה", + "themes": "ערכות נושא", + "themesDescription": "בחרו ערכת צבעים לכל לוח הבקרה", + "costsDescription": "מעקב אחר הוצאות, ניתוח מגמות וניהול תקציב ה-AI שלכם בכל הספקים", + "cacheDescription": "ניטור יעילות מטמון ההנחיות של הספקים ושימוש חוזר מקומי בתגובות סמנטיות.", + "limitsDescription": "הגדרת מגבלות קצב ומכסות לכל מפתח API וספק", + "runtimeDescription": "תצפיתיות בזמן אמת על סביבת הריצה — מפסקי מעגל, תקופות צינון, חסימות מודלים, הפעלות והתראות מכסה", + "apiManagerDescription": "ניהול מפתחות API ובקרת גישה עבור מופע OmniRoute שלכם", + "batchDescription": "עיבוד כמויות גדולות של בקשות באופן אסינכרוני באמצעות קריאות API באצוות", + "contextCavemanDescription": "דחיסת הודעות מבוססת כללים, חבילות שפה, ניתוח נתונים ובקרות על מצב הפלט.", + "contextRtkDescription": "דחיסה מודעת-פקודות עבור פלט כלים, יומני מסוף ותוצאות בנייה.", + "contextCombosDescription": "הגדירו כיצד מנועים משולבים בתרחישי ניתוב שונים.", + "changelogDescription": "הישארו מעודכנים בתכונות ובהכרזות האחרונות של הפלטפורמה.", + "agentsDescription": "ניהול והגדרה של כלי סוכני AI:‏ Codex,‏ Devin,‏ Jules וסוכנים מותאמים אישית", + "cloudAgentsDescription": "תזמור סוכני AI מבוססי ענן עם מעקב חי אחר משימות ואישור תוכניות", + "memoryDescription": "זיכרון שיחה מתמשך עם חיפוש סמנטי ואינדוקס טקסט מלא באמצעות FTS5", + "skillsDescription": "התקנה וניהול של מיומנויות ארגז חול להפעלה אוטומטית של הנחיות וכלים", + "agentSkillsDescription": "קטלוג מיומנויות מוכן לסוכנים, עם העתקת URL בלחיצה אחת לשילוב עם לקוחות AI", + "translatorDescription": "תרגום ובדיקת הנחיות בין פורמטי API:‏ OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "בדיקה אינטראקטיבית של הנחיות עם תגובות חיות מהספקים ובחינת הפורמט", + "searchToolsDescription": "ניתוח נתוני חיפוש, פילוח לפי ספק, שיעורי פגיעה במטמון ומעקב אחר עלויות", + "logsDescription": "יומני בקשות בזמן אמת, מעקבי שגיאות וכלי לבדיקת אירועי סטרימינג", + "auditDescription": "יומן ביקורת תאימות של שימוש במפתחות API, קריאות לכלי MCP ואירועי מדיניות", + "webhooksDescription": "הגדרת נקודות קצה של webhook לקבלת התראות על אירועים בזמן אמת", + "healthDescription": "סקירת תקינות המערכת: ספקים, מפסקי זרם, מגבלות קצב ומסד נתונים", + "proxyDescription": "הגדרת פרוקסי במעלה הזרם עבור חיבורים יוצאים לספקים", + "apiEndpointsDescription": "ניהול תצורות מותאמות אישית של נקודות קצה ל-API ודריסות ניתוב", + "batchFilesDescription": "עיון וניהול של קובצי פלט ותוצאות ממשימות אצווה", + "analyticsEvalsDescription": "תוצאות הערכת מודלים ומדדי ביצועים", + "analyticsSearchDescription": "ניתוח שאילתות חיפוש, שיעורי פגיעה במטמון ומעקב אחר עלויות", + "analyticsUtilizationDescription": "מדדי ניצול ספקים ותכנון קיבולת", + "analyticsComboHealthDescription": "תקינות וביצועים בזמן אמת של תצורות ניתוב משולבות", + "analyticsCompressionDescription": "ניתוח דחיסת הקשר וחיסכון בטוקנים", + "costsBudgetDescription": "מגבלות תקציב והתראות הוצאה לכל מפתח API וספק", + "costsPricingDescription": "תצורת תמחור מותאמת אישית לחישוב עלויות טוקנים", + "logsProxyDescription": "יומני בקשות של פרוקסי במעלה הזרם ובדיקת תעבורה", + "logsConsoleDescription": "פלט מסוף היישום ויומני ניפוי שגיאות", + "logsActivityDescription": "יומן ביקורת של פעולות משתמש ואירועי מערכת", + "auditMcpDescription": "יומן ביקורת של הפעלות כלי MCP ורשומות תאימות", "auditA2a": "ביקורת A2A", "auditA2aDescription": "מסלול ביקורת ביצוע משימות A2A, מעברי מצב ורשומות הפעלת מיומנות", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "ערכת נושא, מיתוג והתאמה חזותית", + "settingsAiDescription": "התנהגויות AI, תקציבי חשיבה, ראייה והגדרות זיכרון", "settingsCacheDescription": "TTL עבור רשומות מטמון קטלוג המודלים", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "הגדרות אימות, הרשאה ובקרת גישה", "featureFlags": "תכונה דגלים", "featureFlagsDescription": "יכולות מערכת בקרה ותכונות ניסיוניות", "featureFlagsActive": "{count} פעיל", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "אין דגלים שתואמים לחיפוש שלך", "featureFlagsSaved": "הדגל עודכן", "featureFlagsError": "עדכון הדגל נכשל", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "כללי ניתוב, כינויים למודלים, ברירות מחדל לשילובים והגדרות ירידה הדרגתית באיכות", + "settingsResilienceDescription": "תצורת מפסקי זרם, ניסיונות חוזרים ומנגנוני גיבוי", + "settingsAdvancedDescription": "כללי מטען מתקדמים, מגבלות בקשות והגדרות API של פרוקסי", + "mitmProxyDescription": "הגדרת פרוקסי MITM לבדיקת תעבורה ולניפוי שגיאות", + "oneProxyDescription": "הגדרת 1Proxy לשרשור פרוקסי מתקדם", "omniSkillsDescription": "התקן ונהל מיומנויות ארגז חול להרצה אוטומטית של הנחיות וכלים" }, "cloudSyncStatus": { @@ -1708,7 +1708,7 @@ "console": "קונסולה", "logger": "לוגר", "translator": "מתרגם", - "playground": "Playground", + "playground": "סביבת ניסוי", "add": "הוספה", "edit": "עריכה", "apiKeys": "מפתחות API", @@ -1725,12 +1725,12 @@ "costs": "עלויות", "health": "תקינות", "runtime": "זמן ריצה", - "webhooks": "Webhooks", + "webhooks": "וובהוקים", "home": "בית", "activity": "פעילות", "agentSkills": "AgentSkills", "comboHealth": "תקינות Combo", - "evals": "Evals", + "evals": "הערכות", "search": "חיפוש", "utilization": "ניצול", "apiEndpoints": "נקודות קצה של API", @@ -1761,8 +1761,8 @@ "quotaShare": "שיתוף מכסה", "discovery": "גילוי", "freeProviderRankings": "דירוג ספקים חינמיים", - "radar": "Radar", - "setup": "Setup", + "radar": "רדאר", + "setup": "הגדרה", "freeTiers": "מסלולים חינמיים", "gamification": "משחוק", "leaderboard": "לוח מובילים", @@ -1812,7 +1812,7 @@ "reportIssue": "דווח על בעיה", "activeError": "{active} פעיל · שגיאה {errors}", "topologyLegendActive": "פעיל", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "אחרונים", "topologyLegendError": "שגיאה", "oauthLabel": "OAuth", "apiKeyLabel": "מפתח API", @@ -1826,11 +1826,11 @@ "updateStarted": "העדכון התחיל...", "reloadingPageAutomatically": "טוען מחדש את הדף באופן אוטומטי...", "providerTopology": "טופולוגיה של ספק", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "בקשות אחרונות", + "recentRequestsEmpty": "אין בקשות עדיין.", + "recentRequestsModel": "מודל", + "recentRequestsTokens": "קלט / פלט", + "recentRequestsWhen": "מתי", "downloadDmg": "הורד DMG (macOS)", "downloadDmgDescription": "גרסה חדשה של אפליקציית OmniRoute למחשב שולחני זמינה. אנא הורד והתקן את מתקין ה-DMG של macOS כדי לעדכן (נוכחי: v{version}).", "downloadExe": "הורד EXE (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "הערות שחרור", "readMore": "קרא עוד", "noAuthLabel": "אין אימות", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "מתכוננים לניתוב", + "readinessTitle": "שלחו את הבקשה הראשונה שלכם", + "readinessSubtitle": "ארבעה שלבים קטנים. OmniRoute בודק את המוכנות תוך כדי ההתקדמות.", + "readinessStep1": "חיבור ספק", + "readinessStep2": "הגדרת אימות לנקודת הקצה", + "readinessStep3": "העתקת נקודת הקצה שלכם", + "readinessStep4": "שליחת בקשת בדיקה", + "readinessContinue": "המשך ההגדרה", + "readinessDismiss": "התעלמות לעת עתה" }, "analytics": { "title": "אנליטיקס", @@ -1993,7 +1993,7 @@ "overviewDescription": "עקוב אחר דפוסי השימוש שלך ב-API, צריכת אסימונים, עלויות ומגמות פעילות בכל הספקים והדגמים.", "evalsDescription": "הפעל חבילות הערכה כדי לבדוק ולאמת את נקודות הקצה שלך ב-LLM. השווה את איכות המודל, זיהוי רגרסיות והשהייה בהשוואה.", "overview": "סקירה כללית", - "evals": "Evals", + "evals": "הערכות", "search": "חיפוש", "utilization": "ניצול", "routeTrace": "מעקב נתיב", @@ -2005,8 +2005,8 @@ "modelStatusError": "שגיאה", "comboHealth": "בריאות הקומבו", "comboHealthDescription": "מכסה ברמת הקומבו, הפצת שימוש ומדדי ביצוע", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "ניתוח נתוני דחיסה", + "compressionAnalyticsDescription": "ניתוח נתוני דחיסה — חיסכון בטוקנים, פילוח לפי מצב ונתוני ספקים.", "autoRoutingTotalAutoRequests": "סך כל הבקשות האוטומטיות", "autoRoutingAvgSelectionScore": "ציון בחירה ממוצע", "autoRoutingExplorationRate": "קצב חיפושים", @@ -2207,7 +2207,7 @@ "model": "מודל", "account": "חשבון", "connection": "חיבור", - "combo": "Combo", + "combo": "משולב", "routeStep": "שלב", "tokens": "טוקנים", "notAvailable": "לא רלוונטי", @@ -2258,9 +2258,9 @@ "fullAccess": "גישה מלאה", "keyManagement": "ניהול מפתחות API", "keyManagementDesc": "צור ונהל מפתחות API לאימות בקשות לנקודת הקצה שלך", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "האפליקציה שלכם שולחת בקשות אל OmniRoute באמצעות מפתח API", + "requestFlowYourApp": "האפליקציה שלכם", + "requestFlowApiKey": "מפתח API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "סך הכל מפתחות", "restricted": "מוגבל", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "העתק ואחסן את המפתח הזה עכשיו - הוא לא יוצג שוב.", "done": "בוצע", "savePermissions": "שמור הרשאות", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "נקודות קצה מורשות", + "allEndpointsAllowed": "מפתח זה יכול לגשת לכל נקודות הקצה של ה-API.", + "endpointsRestricted": "הגישה מוגבלת ל-{count} נקודות קצה{count, plural, one {} other {s}}.", + "autoResolve": "פתרון אוטומטי", + "autoResolveDesc": "פתרון אוטומטי של שמות מודלים דו-משמעיים לספק המקורי עבור מפתח API זה.", "streamDefaultMode": "תאימות ברירת מחדל להזרמה", "streamDefaultModeDesc": "שולט בדגלי `stream` שהושמטו עבור מפתח זה. מצב JSON מחזיר תגובות שאינן בהזרמה אלא אם הלקוח מבקש SSE במפורש.", "streamDefaultLegacy": "מורשת", "streamDefaultJson": "תואם JSON", "streamDefaultBadge": "ברירת מחדל להזרמת JSON", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "המפתח פעיל", + "keyActiveDesc": "הפעילו או השביתו מפתח API זה. מפתחות מושבתים נדחים באופן מיידי עם 403.", + "accessSchedule": "לוח זמנים לגישה", + "accessScheduleDesc": "הגבילו את הגישה לשעות ולימים מסוימים בשבוע.", + "scheduleFrom": "מ-", + "scheduleUntil": "עד", + "scheduleDays": "ימים", + "scheduleTimezone": "אזור זמן", + "scheduleTimezoneHint": "השתמשו בשמות אזורי זמן של IANA, למשל America/New_York, Europe/Berlin", + "scheduleActive": "לוח זמנים", + "disabled": "מושבת", + "daySun": "א׳", + "dayMon": "ב׳", + "dayTue": "ג׳", + "dayWed": "ד׳", + "dayThu": "ה׳", + "dayFri": "ו׳", + "daySat": "שבת", "allowAll": "אפשר הכל", "restrict": "הגבל", "allowAllInfo": "מפתח זה יכול לגשת לכל הדגמים הזמינים.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "עדכון ההרשאות נכשל. אנא נסה שוב.", "unknownProvider": "לא ידוע", "copyMaskedKey": "העתק מפתח מסכה", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "המפתח המלא זמין רק בזמן היצירה — יש להעתיק אותו בעת יצירת המפתח לראשונה", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# מכשיר} other {# מכשירים}}", "devicesTooltip": "{count, plural, one {# מכשיר IP/User-Agent ייחודי שנצפה עם מפתח זה (30 הדקות האחרונות)} other {# מכשירי IP/User-Agent ייחודיים שנצפו עם מפתח זה (30 הדקות האחרונות)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "שילובים מורשים", "allCombosAllowed": "מפתח זה יכול להשתמש בכל שילוב.", "restrictedComboCount": "מוגבל ל-{count, plural, one {# שילוב} other {# שילובים}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {רשומה שמורה אחת אינה מופיעה} other {# רשומות שמורות אינן מופיעות}} ברשימה המשולבת הזו (לדוגמה, כללי ניתוב) ותישמר כפי שנשמרה.", + "preservedComboRuleHint": "נשמר כפי שאוחסן. רשומה זו אינה אפשרות ברשימה המשולבת שלמעלה, ולכן ניתן לשנות אותה רק דרך ה-API.", "apiManagerCustomRateLimits": "מגבלות תעריף מותאמות אישית", "apiManagerCustomRateLimitsDesc": "עוקף מגבלות ברירת מחדל גלובליות. השאר ריק כדי להשתמש בברירות המחדל.", "apiManagerRateLimitRequestsPlaceholder": "בקשות", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "מאפשר למפתח זה להתעלם ממדיניות מגבלות של ספק/חשבון במעלה הזרם במהלך ניתוב. מכסות USD של מפתח API עדיין חלות.", "quotaPill": "מכסה", "quotaModeOnly": "qtSd בלבד", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "חכירה בלעדית", + "exclusiveLeaseNoticeTitle": "חכירה בלעדית", + "exclusiveLeaseNoticeDesc": "למפתח API זה יש הרשאות חכירה בלעדית לניתוב חיבורים ייעודיים.", + "allConnections": "כל החיבורים", + "onlySelectedConnections": "רק חיבורים שנבחרו", + "selectAtLeastOneConnection": "יש לבחור חיבור אחד לפחות או לבחור באפשרות כל החיבורים.", + "allConnectionsDesc": "מפתח זה יכול להשתמש בכל חיבור פעיל.", + "restrictedToConnections": "מוגבל ל-{count, plural, one {חיבור אחד} other {# חיבורים}}." }, "auditLog": { "title": "יומן ביקורת", @@ -2457,14 +2457,14 @@ "model": "Model", "prompt": "Prompt", "generate": "צור", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "מתבצעת יצירה...", + "loadingModels": "המודלים הזמינים נטענים...", + "noModels": "אין מודלים זמינים. תחילה יש להגדיר ספקים בעלי יכולות מדיה.", + "error": "היצירה נכשלה", + "result": "תוצאה", + "imageDescription": "יצירת תמונות מהנחיות טקסט באמצעות OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI ועוד.", + "videoDescription": "יצירת סרטונים באמצעות AnimateDiff ו-Stable Video Diffusion דרך ComfyUI או SD WebUI.", + "musicDescription": "הלחנת מוזיקה באמצעות Stable Audio Open או MusicGen דרך ComfyUI.", "kinds": { "embedding": "הטמעה", "image": "תמונה", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "מודלים של OpenRouter להמרת דיבור לטקסט משתמשים בחיבור OpenRouter שהגדרת. אין צורך באישור נפרד." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "שאילתת חיפוש", + "searchResults": "תוצאות חיפוש", + "cachedResult": "במטמון", + "searchCost": "עלות", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "בדיקות חיפוש מתקדמות עם השוואת ספקים", + "compareProviders": "השוואת ספקים", + "rerankResults": "דירוג מחדש של התוצאות", + "searchHistory": "היסטוריית חיפוש", + "urlOverlap": "חפיפת כתובות URL", + "noSearchProviders": "לא הוגדרו ספקי חיפוש. יש להוסיף ספקים בהגדרות.", + "noRerankModels": "אין מודל זמין לדירוג מחדש", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "ספק", + "searchType": "סוג חיפוש", + "maxResults": "מספר תוצאות מרבי", + "filters": "מסננים", + "country": "מדינה", + "language": "שפה", + "timeRange": "טווח זמן", + "includeDomains": "כלילת דומיינים", + "excludeDomains": "החרגת דומיינים", + "safeSearch": "חיפוש בטוח", + "safeSearchOff": "כבוי", + "safeSearchModerate": "מתון", + "safeSearchStrict": "מחמיר", + "queryPlaceholder": "הזינו שאילתת חיפוש...", + "providerAuto": "אוטומטי (הזול ביותר)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "חדשות", + "optionAny": "כלשהו", + "timeRangeDay": "היום האחרון", + "timeRangeWeek": "השבוע האחרון", + "timeRangeMonth": "החודש האחרון", + "timeRangeYear": "השנה האחרונה", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "תם הזמן הקצוב לבקשה ({seconds}s)", + "networkError": "שגיאת רשת", + "formatted": "מעוצב", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "לא נמצא במטמון", + "cacheHit": "נמצא במטמון", + "latency": "זמן השהיה", + "cost": "עלות", + "results": "תוצאות", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "מודל דירוג מחדש", + "positionDelta": "שינוי במיקום", + "emptyState": "שלחו שאילתת חיפוש כדי לראות תוצאות", "copy": "העתק", "resetToDefault": "אפס לברירת המחדל", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "חיפוש", + "tabScrape": "חילוץ", + "tabCompare": "השוואה", + "modalitiesGuide": "מדריך לאופני פעולה", + "searchConceptTitle": "חיפוש", + "searchConceptDesc": "חיפוש = אחזור רשימה של תוצאות מהאינטרנט (כותרת, URL, קטע טקסט, ציון רלוונטיות)", + "scrapeConceptTitle": "חילוץ", + "scrapeConceptDesc": "חילוץ = חילוץ התוכן המלא של URL (markdown, טקסט או HTML)", + "compareConceptTitle": "השוואה", + "compareConceptDesc": "השוואה = מריצה את אותה שאילתה אצל N ספקים זה לצד זה כדי להשוות זמני תגובה, עלויות וחפיפה בין התוצאות", + "rerankConceptTitle": "דירוג מחדש", + "rerankConceptDesc": "דירוג מחדש = מסדר מחדש את התוצאות באמצעות LLM כדי לשפר את הרלוונטיות בהתאם לשאילתה", + "autoConceptTitle": "אוטומטי (הזול ביותר)", + "autoConceptDesc": "אוטומטי (הזול ביותר) = בוחר אוטומטית את הספק הזול ביותר שזמין ושמוגדרים עבורו פרטי גישה", + "providerCatalogTitle": "קטלוג ספקים", + "kindSearch": "חיפוש", + "kindFetch": "אחזור/סריקה", + "statusConfigured": "מוגדר", + "statusMissing": "אין פרטי גישה", + "statusRateLimited": "מוגבל בקצב", + "configureProvider": "הגדרה תחת ספקים", + "loadingProviders": "הספקים נטענים…", + "failedToLoadProviders": "טעינת הספקים נכשלה", + "costPerQuery": "עלות/שאילתה", + "freeQuota": "מכסה חינמית/חודש", + "scrapeUrl": "כתובת URL לסריקה", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "נדרשת כתובת URL", "scrapeUrlInvalid": "כתובת URL לא חוקית — עליה להתחיל ב-http:// או https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "חילוץ", + "scrapeExtracting": "מתבצע חילוץ…", + "scrapeFullPage": "הדף המלא", + "scrapeFormat": "פורמט", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "טקסט", + "scrapePreview": "תצוגה מקדימה", + "scrapeRaw": "גולמי", + "scrapeContentTruncated": "(קוצר, ניתן להציג את הנתונים הגולמיים)", + "scrapeMetadata": "מטא-נתונים", + "scrapeProvider": "ספק", + "scrapeSize": "גודל", "scrapeEmptyState": "הזן כתובת URL כדי לחלץ את התוכן שלה", "scrapeProvidersAvailable": "ספקים זמינים: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "השוואה", + "compareRunning": "מתבצעת השוואה…", + "autoProvider": "אוטומטי (הזול ביותר)", + "configuredStatus": "מוגדר", + "rateLimitedStatus": "מוגבל בקצב", + "noCredential": "אין פרטי גישה", + "searchTypeLabel": "סוג", + "rerankModelLabel": "מודל דירוג מחדש", + "noneOption": "ללא", + "size": "גודל", "configurationPane": "חלונית הגדרות", "configuration": "הגדרות", "status": "סטטוס", @@ -2782,7 +2782,7 @@ "cliRuntimeNotDetected": "זמן ריצה CLI לא זוהה", "binary": "בינארי", "configPath": "נתיב תצורה", - "configPathShort": "Config", + "configPathShort": "הגדרה", "failedCheckRuntimeStatus": "בדיקת סטטוס זמן הריצה נכשלה.", "copy": "העתק", "copied": "הועתק", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. הוסף", "antigravityStep2Suffix": "לקובץ המארחים שלך כ-127.0.0.1.", "antigravityStep3": "3. פתח את Antigravity ובקשות יסופקו.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} שולח בקשות לנקודת הקצה של הספק שלו. MITM מיירט אותן ומפנה אותן אל OmniRoute.", + "mitmStep1": "1. הפעילו את MITM כדי לנתב בקשות דרך OmniRoute.", + "mitmStep2Prefix": "2. הוסיפו", + "mitmStep2Suffix": "לקובץ hosts שלכם בתור 127.0.0.1.", + "mitmStep3": "3. פתחו את {toolName} והבקשות יועברו דרך שרת מתווך.", "sudoPasswordRequiredTitle": "נדרשת סיסמת סודו", "sudoPasswordHint": "נדרשת סיסמת מנהל כדי לשנות את הגדרות ה-Proxy של המארחים ומערכת ה-proxy.", "enterSudoPassword": "הזן את סיסמת הסודו", @@ -2869,7 +2869,7 @@ "provider": "ספק", "model": "דגם", "providers": "ספקים", - "auth": "Auth", + "auth": "אימות", "noApiKeysAvailable": "אין מפתחות API זמינים", "usingDefaultOmniroute": "שימוש בברירת המחדל: sk_omniroute", "updateConfig": "עדכן את התצורה", @@ -2908,7 +2908,7 @@ "continue": "השתמש בעת הפעלת Continue ב-IDEs ואתה זקוק לתצורת ספק ניידת מבוססת JSON.", "opencode": "השתמש כאשר אתה מעדיף ריצות סוכנים מקוריים ומאוטומציה של סקריפטים באמצעות OpenCode.", "kiro": "השתמש בעת שילוב Kiro ושליטה בניתוב מודלים באופן מרכזי מ- OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "השתמשו באפשרות זו כאשר אתם מעוניינים בסביבת פיתוח משולבת המתמקדת ב-AI, עם מודלים של Codeium/Windsurf המנותבים דרך OmniRoute.", "antigravity": "השתמש כאשר יש ליירט תעבורת Antigravity/Kiro דרך MITM ולנתב אל OmniRoute.", "copilot": "השתמש כאשר אתה רוצה UX בסגנון צ'אט Copilot תוך אכיפת מפתחות וכללי ניתוב OmniRoute.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2923,16 +2923,16 @@ "grok-build": "סוכן תכנות TUI של xAI Grok Build עם תמיכה בספק מותאם אישית", "droid": "מפעל Droid AI Assistant", "openclaw": "פתח את Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", + "cline": "מסייע הקידוד מבוסס הבינה המלאכותית Cline CLI", "kilo": "קילו קוד AI עוזר CLI", "qwen": "Qwen Code CLI", "cursor": "עורך קוד AI של הסמן", "continue": "המשך עוזר AI", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode AI coding agent (מסוף)", + "kiro": "Amazon Kiro — סביבת פיתוח משולבת מבוססת AI", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "מסייע הקידוד Sourcegraph Amp CLI", "hermes": "עוזר מסוף של הרמס AI", "hermes-agent": "Hermes Agent (מבית Nousresearch) - בינה מלאכותית מתקדמת למסוף עם תמיכה בריבוי מודלים (האצלה, ראייה, דחיסה וכו')", "custom": "מחולל תצורת CLI או SDK גנרי תואם OpenAI", @@ -2950,7 +2950,7 @@ "interpreter": "ממשק שורת פקודה (CLI) של סוכן התכנות האוטונומי Open Interpreter", "omp": "סוכן תכנות למסוף Oh My Pi", "letta": "סוכן CLI של Letta עם זיכרון מתמיד ושימוש בכלים", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — סביבת הרצה לכתיבת קוד מבוססת RLM, המשתפרת בעצמה ותומכת בספקים תואמי OpenAI", "warp": "מסוף Warp AI עם תמיכה בספק מותאם אישית", "agent-deck": "מתזמר מרובה סוכנים Agent Deck", "5dive": "5dive — צי מתארח עצמאית של סוכני קוד; פרופיל אימות אחד מכוון את כולם ל-OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "התקנת OpenCode", + "desc": "התקנה באמצעות npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "מפתח API" }, "3": { - "title": "Set Base URL", + "title": "הגדרת כתובת URL בסיסית", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "בחירת מודל" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "שימוש בגרסת חשיבה", + "desc": "עבור מודלי חשיבה, הפעילו עם --variant high/low/max (פקודה לדוגמה מופיעה בהמשך)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "פתיחת הגדרות Kiro", + "desc": "עברו אל הגדרות ← ספק AI" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "כתובת URL בסיסית", + "desc": "הדביקו את כתובת ה-URL של נקודת הקצה שלכם ב-OmniRoute" }, "3": { - "title": "API Key" + "title": "מפתח API" }, "4": { - "title": "Select Model" + "title": "בחירת מודל" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "פתיחת הגדרות AI", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "הוספת ספק מותאם אישית", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "כתובת URL בסיסית", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "מפתח API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "בחירת מודל", + "desc": "בחרו מודל מהרשימה הנפתחת" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "CLI מותאם אישית", - "toolCategories": "Tool Categories", + "toolCategories": "קטגוריות כלים", "visibleToolsCount": "{count} כלים זמינים", "customCliBuilderTitle": "בונה CLI תואם OpenAI", "customCliBuilderDescription": "צור קטעי env vars ו-JSON עבור כל CLI או SDK שמקבלים כתובת URL בסיסית תואמת OpenAI, מפתח API ומזהה דגם.", @@ -3260,18 +3260,18 @@ "priorityDesc": "נפילה רציפה: מנסה קודם את דגם 1, אחר כך 2 וכו'.", "weightedDesc": "מחלק את התעבורה לפי אחוז משקל עם נפילה", "roundRobinDesc": "חלוקה מעגלית: כל בקשה עוברת לדגם הבא בסיבוב", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "העברת הקשר", + "contextRelayDesc": "שומר על רציפות ההפעלה באמצעות סיכומי העברה בעת החלפת חשבונות", "randomDesc": "בחירה אקראית אחידה, ואז חזרה לדגמים שנותרו", "leastUsedDesc": "בוחר את הדגם עם הכי פחות בקשות, מאזן עומס לאורך זמן", "costOptimizedDesc": "מסלולים לדגם הזול ביותר לפי תמחור", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "מנתב באופן עקבי כל קידומת הנחיה הניתנת לשימוש חוזר לאותו חשבון ספק", + "resetAware": "סבב מתחשב באיפוס", "resetAwareDesc": "מאזן את המכסה שנותרה מול 5 שעות ואיפוסים שבועיים, ולאחר מכן מעביר ציונים דומים", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "משוקלל לפי מכסה", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "אקראי לחלוטין", + "strictRandomDesc": "חפיסת ערבוב — משתמשת בכל מודל פעם אחת לפני ערבוב מחדש", "fusion": "היתוך", "fusionDesc": "מפיץ את הפרומפט לכל מודל בפאנל במקביל, ואז מודל שופט מסנתז תשובה סופית אחת", "fusionJudgeModel": "מודל שופט", @@ -3288,13 +3288,13 @@ "retryDelay": "נסה שוב עיכוב (מילישניות)", "concurrencyPerModel": "במקביל / דגם", "queueTimeout": "זמן קצוב לתור (מילישניות)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "סף העברה", + "contextRelayHandoffThresholdHelp": "כאשר ניצול המכסה מגיע לסף זה, OmniRoute יוצר סיכום העברה מובנה לפני שהמכסה של החשבון הפעיל מנוצלת במלואה.", + "contextRelayMaxMessages": "מספר הודעות מרבי לסיכום", + "contextRelayMaxMessagesHelp": "מגביל את כמות ההיסטוריה האחרונה שתתומצת בסיכום ההעברה.", + "contextRelaySummaryModel": "מודל הסיכום", + "contextRelaySummaryModelHelp": "מודל חלופי אופציונלי המשמש רק ליצירת סיכום ההעברה. יש להשאיר ריק כדי להשתמש שוב במודל השילוב הפעיל.", + "contextRelayProviderNote": "ממסר ההקשר יוצר כעת העברות עבור רוטציית חשבונות Codex. לקבלת הרציפות הטובה ביותר, השתמשו בו עם מספר חשבונות של אותו ספק.", "advancedHint": "השאר ריק כדי להשתמש בברירות המחדל גלובליות. אלה עוקפים הגדרות לכל ספק.", "failoverBeforeRetry": "כשל לפני ניסיון חוזר", "maxSetRetries": "Max Set ניסיונות חוזרים", @@ -3344,41 +3344,41 @@ "playgroundCreateFirst": "צור אחד תחילה", "weighted": "משוקלל", "leastUsed": "הכי פחות בשימוש", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "costOpt": "מיטוב עלויות", + "strategyGuideTitle": "כיצד להשתמש באסטרטגיה זו", + "strategyGuideWhen": "מתי להשתמש", + "strategyGuideAvoid": "מתי להימנע", + "strategyGuideExample": "דוגמה", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "יש לכם מודל מועדף אחד וברצונכם לעבור לחלופה רק במקרה של כשל.", + "avoid": "אתם זקוקים לחלוקת בקשות בין מודלים.", + "example": "מודל קידוד ראשי עם גיבוי זול יותר למקרי השבתה." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "אתם זקוקים לפיצול תעבורה מבוקר בין מודלים.", + "avoid": "אינכם יכולים לשמור על משקלים מדויקים לאורך זמן.", + "example": "השקה עם 80% מודל יציב ו-20% מודל קנרי." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "אתם רוצים חלוקה צפויה ואחידה.", + "avoid": "המודלים שונים מדי בזמן ההשהיה או בעלות.", + "example": "אותו מודל במספר חשבונות כדי לפזר את התפוקה." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "אתם רוצים חלוקה פשוטה עם הגדרה מינימלית.", + "avoid": "אתם זקוקים להבטחות מחמירות לחלוקת התעבורה.", + "example": "יצירת אב-טיפוס מהירה באמצעות מודלים שקולים." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "אתם רוצים איזון מסתגל המבוסס על הביקוש בזמן אמת.", + "avoid": "התעבורה נמוכה מכדי להפיק תועלת מאיזון לפי שימוש.", + "example": "עומסי עבודה מעורבים שבהם מודל אחד נתון לעומס יתר לעיתים קרובות." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "הפחתת עלויות היא העדיפות העליונה שלכם.", + "avoid": "נתוני התמחור חסרים או מיושנים.", + "example": "משימות רקע או אצווה שבהן עדיפה עלות נמוכה יותר." }, "reset-aware": { "when": "אתה מנתב על פני מספר חשבונות עם טלמטריית מכסה וחלונות איפוס שונים.", @@ -3386,19 +3386,19 @@ "example": "העדיפו איפוס שבועי של 60% מחר על פני איפוס של 80% מאוחר יותר." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "השתמשו כאשר אתם רוצים פיזור אחיד לחלוטין — כל מודל משמש פעם אחת לפני שימוש חוזר.", + "avoid": "הימנעו כאשר למודלים יש איכות או זמן השהיה שונים והסדר חשוב.", + "example": "דוגמה: מספר חשבונות של אותו מודל כדי לפזר את השימוש באופן אחיד." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "השתמשו כאשר אתם רוצים בחירה עם זמן השהיה נמוך באמצעות אלגוריתם Power-of-Two-Choices.", + "avoid": "הימנעו בשילובים קטנים הכוללים שני מודלים או פחות — אין לכך יתרון על פני סבב.", + "example": "דוגמה: הסקה בתפוקה גבוהה על פני יותר מ-4 נקודות קצה שוות-ערך של מודלים." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "יש להשתמש כאשר הפעלות ארוכות חייבות לשרוד החלפת חשבונות מבלי לאבד את הקשר העבודה.", + "avoid": "מומלץ להימנע כאשר החלפת חשבונות נדירה או כשאין צורך בבקשות סיכום נוספות.", + "example": "דוגמה: הפעלות Codex שעוברות בין כמה חשבונות כשהמכסה קרובה למיצוי." }, "fill-first": { "when": "השתמש כאשר אתה רוצה למצות במלואה את המכסה של ספק אחד לפני המעבר לאחר.", @@ -3422,68 +3422,68 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "מספר הניסיונות החוזרים שיתבצעו לפני שהבקשה תיכשל.", + "retryDelay": "זמן ההמתנה הראשוני בין ניסיונות חוזרים. ערכים גבוהים יותר מפחיתים עומס מתפרץ.", + "timeout": "משך הבקשה המרבי לפני ביטולה.", + "healthcheck": "אי-הכללת מודלים/ספקים שאינם תקינים בהחלטות ניתוב.", + "concurrencyPerModel": "מספר הבקשות המרבי שניתן לבצע בו-זמנית לכל מודל בסבב מחזורי.", + "queueTimeout": "משך הזמן המרבי שבקשה יכולה להמתין בתור לפני שתוקפה יפוג.", "failoverBeforeRetry": "כאשר היא מופעלת, כל שגיאה במעלה הזרם מפעילה כשל מיידי ליעד המשולב הבא, ומדלגת על כל הניסיונות החוזרים וכתובות האתרים החלופיות.", "maxSetRetries": "מספר הפעמים כדי לנסות שוב את היעד המלא שהוגדר כאשר כל יעד נכשל. 0 = אין ניסיון חוזר ברמה מוגדרת.", "setRetryDelayMs": "עיכוב בין ניסיונות ניסיון חוזר ברמה מוגדרת, נותן לבעיות חולפות זמן לפתור.", "disableSessionStickiness": "בצע רוטציה לחיבור שונה בכל בקשה במקום להצמיד שיחה שלמה לחיבור אחד לפי ה-hash של ההודעה הראשונה. דורס את ברירת המחדל הגלובלית. השאר על Inherit כדי לשמר פגיעות במטמון הפרומפט (prompt-cache hits) עבור צ'אטים מרובי-סבבים." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "תבניות מהירות", + "templatesDescription": "החלת פרופיל התחלתי ולאחר מכן התאמת המודלים והתצורה.", + "templateApply": "החלת תבנית", + "templateHighAvailability": "זמינות גבוהה", + "templateHighAvailabilityDesc": "ניתוב לפי עדיפות עם בדיקות תקינות וניסיונות חוזרים בטוחים.", + "templateCostSaver": "חיסכון בעלויות", + "templateCostSaverDesc": "ניתוב ממוטב לעלויות עבור עומסי עבודה שבהם התקציב קודם לכול.", + "templateBalanced": "עומס מאוזן", + "templateBalancedDesc": "ניתוב לפי השימוש המועט ביותר כדי לפזר את הביקוש לאורך זמן.", + "usageGuideHide": "הסתרה", + "usageGuideDontShowAgain": "לא להציג שוב", + "usageGuideShow": "הצגת המדריך", + "quickTestTitle": "השילוב מוכן לאימות", + "quickTestDescription": "יש להריץ בדיקה כעת כדי לאמת את התנהגות המעבר לגיבוי ואת זמן ההשהיה.", + "testNow": "בדיקה עכשיו", + "pricingCoverage": "כיסוי תמחור", + "pricingCoverageHint": "מיטוב העלויות פועל באופן מיטבי כאשר יש נתוני תמחור לכל המודלים בשילוב.", + "pricingAvailable": "תמחור זמין", + "pricingMissing": "אין תמחור", + "pricingAvailableShort": "מתומחר", + "pricingMissingShort": "ללא תמחור", "fallbackOnlyOnQuotaExhaustion": "רק התקדמות כאשר מכסה מתמלאת", "fallbackOnlyOnQuotaExhaustionShort": "גיבוי רק לפי מכסה", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", - "readinessCheckPricing": "Pricing data is available", - "readinessCheckPricingOptional": "Pricing rule not required", - "saveBlockedTitle": "Save is blocked until the following items are fixed:", - "saveBlockName": "Define a combo name.", - "saveBlockModels": "Add at least one model.", - "saveBlockWeighted": "Set weights to 100% (current: {total}%).", - "saveBlockPricing": "Add pricing for at least one model or choose a different strategy.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "warningRoundRobinSingleModel": "סבב מחזורי שימושי במיוחד עם לפחות 2 מודלים.", + "warningCostOptimizedPartialPricing": "רק ל-{priced} מתוך {total} מודלים יש נתוני תמחור. ייתכן שהניתוב יתחשב בעלויות באופן חלקי בלבד.", + "warningCostOptimizedNoPricing": "לא נמצאו נתוני תמחור עבור שילוב זה. ניתוב ממוטב לעלויות עלול לפעול באופן בלתי צפוי.", + "filterAll": "הכול", + "filterIntelligent": "חכם", + "filterDeterministic": "דטרמיניסטי", + "filterEmptyTitle": "אין שילובים התואמים למסנן אסטרטגיה זה.", + "filterEmptyIntelligentDescription": "יש ליצור שילוב auto או LKGP כדי לאכלס את לוח הבקרה של הניתוב החכם.", + "filterEmptyDeterministicDescription": "כרגע קיימים רק שילובי auto ו-LKGP. יש לחזור אל הכול או ליצור שילוב דטרמיניסטי.", + "readinessTitle": "הכול מוכן לשמירה?", + "readinessDescription": "עברו על רשימת הבדיקה לפני יצירה או עדכון של השילוב הזה.", + "readinessCheckName": "שם השילוב תקין", + "readinessCheckModels": "נבחר לפחות מודל אחד", + "readinessCheckWeights": "סך המשקלים הוא 100%", + "readinessCheckWeightsOptional": "כלל משקל אינו נדרש", + "readinessCheckPricing": "נתוני התמחור זמינים", + "readinessCheckPricingOptional": "כלל תמחור אינו נדרש", + "saveBlockedTitle": "השמירה חסומה עד לתיקון הפריטים הבאים:", + "saveBlockName": "הגדירו שם לשילוב.", + "saveBlockModels": "הוסיפו לפחות מודל אחד.", + "saveBlockWeighted": "הגדירו את המשקלים ל-100% (כעת: {total}%).", + "saveBlockPricing": "הוסיפו תמחור למודל אחד לפחות או בחרו אסטרטגיה אחרת.", + "recommendationsLabel": "הגדרה מומלצת", + "applyRecommendations": "החלת ההמלצות", + "recommendationsUpdated": "ההמלצות עודכנו עבור {strategy}.", + "recommendationsApplied": "ההמלצות הוחלו על השילוב הזה.", + "intelligentPanelTitle": "לוח בקרה לניתוב חכם", + "intelligentPanelDesc": "ניקוד בזמן אמת ומצב תקינות עבור שילוב הניתוב האוטומטי הזה.", "configOnlyStatus": "תצוגת תצורה", "configOnlyHint": "לוח זה מציג קלטי ניתוב בלבד. מצב ה-breaker החי זמין בדף הבריאות.", "routingInputs": "קלטי ניתוב", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "תחילית ספק לא מוכרת.", "builderDynamicAccountShort": "חשבון דינמי", "builderNeedValidName": "הגדר שם שילוב חוקי לפני שתמשיך.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "סקירת מצב", + "normalOperation": "פעילות תקינה", + "allProvidersHealthy": "הספקים מדווחים על תנאי ניתוב תקינים.", + "incidentMode": "מצב תקרית", + "highCircuitBreakerRate": "זוהה שיעור גבוה של הפעלות מפסק.", + "activeModePack": "חבילת מצב פעילה", + "modePackUpdated": "חבילת המצב עודכנה ל-{pack}.", + "modePackHint": "החליפו הגדרות קבועות מראש כדי להטות את מנוע הניתוב מבלי לבנות מחדש את השילוב.", + "providerScores": "ציוני ספקים", + "allProvidersEvaluated": "לא הוגדר מאגר מועמדים. כל הספקים הפעילים נבחנים בזמן הריצה.", + "excludedProviders": "ספקים שאינם נכללים", + "excludedProvidersHint": "ספקים שמפסק הזרם שלהם במצב OPEN אינם נכללים זמנית בניתוב.", + "noExcludedProviders": "אין כרגע ספקים שאינם נכללים.", + "cooldownMinutes": "זמן צינון: {minutes} דק׳", + "builderIntelligentTitle": "הגדרת ניתוב חכם", + "builderIntelligentDesc": "הגדירו את מנוע הניקוד הרב-גורמי עבור שילוב הניתוב האוטומטי הזה.", + "candidatePoolLabel": "מאגר מועמדים", + "candidatePoolHint": "בחרו אילו ספקים המנוע צריך לבחון. השאירו ריק כדי להשתמש בכל הספקים הפעילים.", + "candidatePoolEmpty": "עדיין אין ספקים פעילים זמינים.", + "candidatePoolAllProviders": "כל הספקים", + "modePackLabel": "חבילת מצב", + "routerStrategyLabel": "אסטרטגיית ניתוב", + "strategyRules": "כללים (ניקוד לפי 6 גורמים)", + "explorationRateLabel": "שיעור חקירה", + "explorationRateHint": "{percent}% מהבקשות יכולות לבחון ספקים שאינם מיטביים.", + "budgetCapLabel": "תקרת תקציב (USD / בקשה)", + "budgetCapPlaceholder": "ללא הגבלה", + "advancedWeightsTitle": "מתקדם: משקלי ניקוד", "nestedComboFlatten": "שטח שילובים מקוננים", "nestedComboExecute": "הפעל שילובים מקוננים כיעדים", "effectiveRoutingShare": "נתח ניתוב אפקטיבי (משקל ÷ סך הכל)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "מכסה", + "weightHealth": "תקינות", + "weightCostInv": "עלות", + "weightLatencyInv": "זמן השהיה", + "weightTaskFit": "התאמה למשימה", + "weightStability": "יציבות", + "weightTierPriority": "רמה", + "weightCacheAffinity": "העדפה לפגיעת מטמון", "weightSessionAvailability": "זמינות מפגש", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "תצורת ניתוב חכמה", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "קו בסיס למניעת כשלים", + "description": "השתמשו במודל ראשי אחד ושמרו על שרשרת חלופות קצרה ואמינה.", + "tip1": "הציבו את המודל האמין ביותר שלכם ראשון.", + "tip2": "שמרו 1–2 מודלי גיבוי באיכות דומה.", + "tip3": "השתמשו בניסיונות חוזרים בטוחים כדי להתמודד עם כשלים זמניים של ספקים." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "פיצול תעבורה מבוקר", + "description": "מצוין להשקות קנריות ולמעבר הדרגתי בין מודלים.", + "tip1": "התחילו בפיצול שמרני, כגון 90/10.", + "tip2": "שמרו על סך כולל של 100% ואיזנו אוטומטית לאחר שינויים.", + "tip3": "נטרו הצלחה וזמן השהיה לפני הגדלת המשקל הקנרי." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "חלוקת עומס צפויה", + "description": "האפשרות הטובה ביותר כאשר המודלים שקולים ונדרשת חלוקה חלקה.", + "tip1": "השתמשו בלפחות 2 מודלים.", + "tip2": "הגדירו מגבלות מקביליות כדי למנוע עומס יתר פתאומי.", + "tip3": "השתמשו בזמן קצוב לתור כדי להיכשל במהירות במצב של רוויה." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "פיזור מהיר עם הגדרה מינימלית", + "description": "השתמשו כאשר נדרשת חלוקה פשוטה ללא ערבויות מחמירות.", + "tip1": "השתמשו במודלים בעלי פרופילי זמן השהיה דומים.", + "tip2": "השאירו ניסיונות חוזרים מופעלים כדי להתמודד עם החמצות אקראיות.", + "tip3": "העדיפו אפשרות זו לניסויים, ולא עבור הסכמי רמת שירות מחמירים." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "איזון מסתגל", + "description": "מנתב למודלים שנעשה בהם פחות שימוש כדי לצמצם מוקדי עומס לאורך זמן.", + "tip1": "פועל טוב יותר תחת תעבורה רציפה.", + "tip2": "שלבו עם בדיקות תקינות לאיזון בטוח יותר.", + "tip3": "עקבו אחר השימוש בכל מודל כדי לאמת את השיפור בחלוקה." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "ניתוב לפי תקציב", + "description": "מנתב למודלים זולים יותר כאשר מטא-נתוני תמחור זמינים.", + "tip1": "ודאו שקיימים נתוני תמחור לכל המודלים שנבחרו.", + "tip2": "שמרו מודל גיבוי איכותי להנחיות מורכבות.", + "tip3": "השתמשו בכך למשימות אצווה או רקע שבהן העלות היא מדד הביצועים המרכזי." }, "reset-aware": { "title": "סבב חשבון מודע לאיפוס", @@ -3597,11 +3597,11 @@ "tip3": "שמור על רצועת העניבה קטנה כך שחשבונות שווים עדיין מסתובבים בצורה הוגנת." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "חלוקה בחפיסה מעורבבת", + "description": "כל מודל משמש פעם אחת בדיוק בכל מחזור לפני ערבוב מחדש.", + "tip1": "השתמשו בשני מודלים לפחות כדי להשיג חלוקה משמעותית.", + "tip2": "פועל בצורה מיטבית עם מודלים בעלי ביצועים מקבילים.", + "tip3": "אידיאלי לאיזון עומסים בין חשבונות API מרובים." }, "fill-first": { "description": "מכסות ספקי הפליטה ברצף לפני החזרה.", @@ -3646,86 +3646,86 @@ "title": "כוחן של שתי אפשרויות" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "מערך חינמי ($0)", + "templateFreeStackDesc": "ניתוב בשיטת סבב בין כל הספקים החינמיים: Kiro (Claude), Qoder (5 מודלים), Qwen (4 מודלים). ללא עלות, ממשיך לכתוב קוד ללא הפסקה.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "מצב LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "תחילת העבודה עם שילובים", + "wizardGuideDesc": "צרו שילובי מודלים כדי לנתב תעבורת AI באופן חכם", + "wizardGuideHint": "או לחצו על + יצירת שילוב למעלה", + "createFirstCombo": "יצירת השילוב הראשון שלכם", + "wizardStep1Title": "תנו שם לשילוב שלכם", + "wizardStep1Desc": "תנו לשילוב שלכם שם ייחודי כדי לזהות אותו בכללי הניתוב", + "wizardStep2Title": "הוספת מודלים", + "wizardStep2Desc": "בחרו מודלי AI וסדרו אותם לפי סדר העדיפות לגיבוי", + "wizardStep3Title": "בחירת אסטרטגיה", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "בדיקה ושמירה", + "wizardStep4Desc": "בדקו את התצורה והפעילו את השילוב", + "usageGuideInvokeTitle": "כיצד לקרוא לשילוב הזה", + "usageGuideInvokeDesc": "שלחו את השם המדויק של השילוב בתור המודל, לדוגמה model: \"my-combo\" (או combo/my-combo).", + "usageGuideInvokeAutoNote": "auto ו-auto/* הם נתב נפרד ללא צורך בהגדרה, שאינו משתמש בשילובים שלכם (אלא אם שילוב כלשהו נקרא ממש auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto הוא מוצר אמיתי בתשלום של OpenRouter ‏(Auto Best Available), ולא כינוי של OmniRoute — החריגו אותו דרך הגדרות ← ניתוב ← הסתרת מודלים בתשלום.", + "emailVisibilityStateOn": "מופעל", + "emailVisibilityStateOff": "כבוי", + "reorderHandle": "גררו כדי לשנות את הסדר", + "failedReorder": "שינוי סדר המודלים נכשל", + "builderFlowTitle": "תהליך בניית השילוב", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "פרטים בסיסיים", + "description": "שם ותבנית התחלתית" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "שלבים", + "description": "בחירת ספק, מודל וחשבון" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "אסטרטגיה", + "description": "התנהגות הניתוב והגדרות מתקדמות" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "ניתוב חכם", + "description": "מאגר מועמדים לניתוב אוטומטי, הגדרות קבועות מראש וניקוד" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "סקירה", + "description": "אימות סופי לפני השמירה" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "השלב הושלם", + "builderStageCurrent": "השלב הנוכחי", + "builderStagePending": "ממתין", + "builderStageLocked": "נעול — יש להשלים תחילה את השלב הקודם", + "builderTitle": "יצירת שילוב", + "builderBrowseCatalog": "עיון בקטלוג", + "builderProvider": "ספק", + "builderLoadingProviders": "הספקים נטענים...", + "builderSelectProvider": "בחירת ספק", + "builderModel": "מודל", + "builderSelectModel": "בחירת מודל", + "builderProviderFirst": "יש לבחור תחילה ספק", + "builderAccount": "חשבון", + "builderPreview": "תצוגה מקדימה", + "builderAddStep": "הוספת שלב", "builderDuplicateExact": "שלב הספק/דגם/חשבון המדויק הזה כבר נמצא בשילוב.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "הפניה לשילוב", + "builderAddComboRef": "הוספת הפניה לשילוב", + "builderComboRefStep": "הוספת הפניה לשילוב", + "builderPinnedAccount": "חשבון מוצמד", + "builderLegacyEntry": "רשומה מדור קודם", + "reviewName": "שם", + "reviewStrategy": "אסטרטגיה", + "reviewSteps": "שלבים", + "reviewAccounts": "חשבונות", + "reviewProviders": "ספקים", + "reviewComboRefs": "הפניות לשילובים", + "reviewAdvanced": "הגדרות מתקדמות", + "reviewAgentFlags": "דגלי סוכן", + "reviewSequence": "רצף מודלים", + "reviewNoSteps": "לא הוגדרו שלבים", "builderStagesDescription": "השלם כל שלב כדי להגדיר שילובים, לבנות שלבים, לבחור אסטרטגיית ניתוב ולסקור את התוצאות.", "builderStepsDescription": "בנה כל שלב משולב לפי הסדר: ספק, דגם ואז חשבון. זה מאפשר שימוש חוזר באותו ספק ובמודל בחשבונות שונים.", "selectProvider": "בחר ספק", @@ -3800,27 +3800,27 @@ "range7d": "7 ימים", "range30d": "30 ימים", "range90d": "90 ימים", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 ימים", + "range365d": "365 ימים", "rangeAll": "כל הזמן", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "מודלים פעילים", + "flatRateEstimateNotice": "כולל אומדני מחיר לפי אסימונים עבור מינויים בתעריף קבוע, ולא את העלות שחויבה בפועל.", + "flatRateEstimateForecast": "התחזית כוללת אומדנים בתעריף קבוע.", + "selectedWindow": "חלון נבחר", + "activeProviders": "ספקים פעילים", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "הוצאות היום", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "נתח הספקים", + "topProviders": "הספקים המובילים", + "costTrend": "מגמת עלויות", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "המודלים המובילים", "requestsInWindow": "Requests In Window", "tokenUsage": "שימוש באסימונים", "totalTokens": "סך הכל אסימונים", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "נקודת קצה API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "השתמשו בנקודת הקצה התואמת ל-OpenAI עם רוב ערכות הפיתוח והכלים.", + "testEndpoint": "בדיקת נקודת הקצה ←", + "advancedProtocols": "פרוטוקולים מתקדמים", "available": "נקודות קצה זמינות", "cloudProxy": "פרוקסי ענן", "disableConfirm": "האם אתה בטוח שברצונך להשבית את פרוקסי הענן?", @@ -3900,7 +3900,7 @@ "disableCloud": "השבת את הענן", "enableCloud": "אפשר ענן", "modelsAcrossEndpoints": "מודלים {models} על פני {endpoints} נקודות קצה", - "loadingModels": "Loading available models...", + "loadingModels": "המודלים הזמינים נטענים...", "chatDesc": "צ'אט בסטרימינג ושלא בסטרימינג עם כל הספקים", "embeddings": "הטבעות", "embeddingsDesc": "הטמעת טקסט עבור חיפוש וצינורות RAG", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "תמלול קבצי שמע לטקסט (לחישה)", "textToSpeech": "טקסט לדיבור", "textToSpeechDesc": "המרת טקסט לדיבור בצלילים טבעיים", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "יצירת מוזיקה", + "musicDesc": "יצירת מוזיקה ורצועות שמע באמצעות ComfyUI‏ (Stable Audio, MusicGen)", "moderations": "מנחות", "moderationsDesc": "ניהול תוכן וסיווג בטיחות", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API עבור Codex ותהליכי עבודה סוכניתיים מתקדמים", + "listModelsDesc": "הצגת כל המודלים הזמינים בכל הספקים המחוברים", + "settingsApiDesc": "קריאה ושינוי של תצורת OmniRoute באמצעות API", + "settingsApi": "API להגדרות", "categoryCore": "ממשקי API ליבה", "categoryMedia": "מדיה ומולטי-מודלי", - "categorySearch": "Search & Discovery", + "categorySearch": "חיפוש וגילוי", "categoryUtility": "כלים וניהול", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "חיפוש באינטרנט", + "webSearchDesc": "חיפוש אינטרנטי מאוחד בין ספקים מרובים, עם מעבר אוטומטי לגיבוי ושמירה במטמון", + "searchProvider": "ספק חיפוש", + "searchProviderDesc": "ספק זה משמש לחיפוש באינטרנט באמצעות POST /v1/search. אין צורך בהגדרת מודל — ספקי חיפוש מוכנים לשימוש לאחר חיבור מפתח API.", "enableCloudTitle": "אפשר Cloud Proxy", "whatYouGet": "מה תקבל", "cloudBenefitAccess": "גש ל-API שלך מכל מקום בעולם", @@ -3963,57 +3963,57 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "הפעלת מנהרה", + "cloudflaredInstallAndEnable": "התקנה והפעלה", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "פועל", + "cloudflaredStarting": "מתחיל לפעול", + "cloudflaredStoppedState": "נעצר", + "cloudflaredNotInstalled": "לא מותקן", + "cloudflaredUnsupported": "לא נתמך", + "cloudflaredError": "שגיאה", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "שגיאה אחרונה: {error}", "providerModelsTitle": "{provider} — דגמים", "noModelsForProvider": "אין דגמים זמינים עבור ספק זה.", "chat": "צ'אט", "embedding": "הטבעה", "image": "תמונה", "custom": "מותאם אישית", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {מודל אחד} other {# מודלים}}", + "sectionTitle": "ממשק אינטגרציה", + "sectionDescription": "ממשקי API תואמי OpenAI ונקודות קצה לפרוטוקולים תפעוליים", "tabApis": "ממשקים", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "פרוטוקולים", + "tabsAria": "מקטעי נקודות קצה", + "protocolsTitle": "פרוטוקולים", + "protocolsDescription": "MCP ו-A2A הם נקודות קצה מרכזיות עם יכולות ייעודיות לניטור ולבקרה.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "Model Context Protocol דרך stdio", + "a2aCardTitle": "שרת A2A", + "a2aCardDescription": "נקודת קצה Agent2Agent מסוג JSON-RPC", + "protocolToolsLabel": "כלים", + "protocolTasksLabel": "משימות", + "protocolActiveStreamsLabel": "זרמים פעילים", + "protocolLastActivity": "פעילות אחרונה", + "quickStart": "התחלה מהירה", + "openMcpDashboard": "פתיחת ניהול MCP", + "openA2aDashboard": "פתיחת ניהול A2A", + "mcpQuickStartTitle": "התחלה מהירה עם MCP", + "mcpQuickStartStep1": "הפעילו את שרת MCP באמצעות `omniroute --mcp`.", + "mcpQuickStartStep2": "הגדירו את לקוח MCP להתחבר באמצעות תעבורת stdio.", + "mcpQuickStartStep3": "הפעילו כלים כגון `omniroute_get_health` ו-`omniroute_list_combos`.", + "a2aQuickStartTitle": "התחלה מהירה עם A2A", + "a2aQuickStartStep1": "אתרו את כרטיס הסוכן ב-`/.well-known/agent.json`.", + "a2aQuickStartStep2": "שלחו בקשות JSON-RPC אל `POST /a2a` באמצעות `message/send` או `message/stream`.", + "a2aQuickStartStep3": "עקבו אחר משימות ושלטו בהן באמצעות `tasks/get` ו-`tasks/cancel`.", + "completionsLegacy": "השלמות (מדור קודם)", + "completionsLegacyDesc": "השלמות טקסט מדור קודם של OpenAI — תומכות הן במחרוזת prompt והן במבנה של מערך messages", "messagesApi": "הודעות", "messagesApiDesc": "פורמט Native Anthropic Messages API עבור ספקים תואמי קלוד", "imageEdits": "עריכות תמונה", @@ -4022,40 +4022,40 @@ "batchApiDesc": "עבד קבוצות גדולות של בקשות באופן אסינכרוני (תואם OpenAI)", "filesApi": "API של קבצים", "filesApiDesc": "העלה ונהל קבצים לעיבוד אצווה", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "יצירת סרטונים", + "videoDesc": "צרו סרטונים באמצעות מודלי AI כגון ComfyUI ו-Stable Video Diffusion.", + "tailscaleRequestFailed": "טעינת הסטטוס של Tailscale נכשלה", + "tailscaleEnableFailed": "הפעלת Tailscale Funnel נכשלה", + "tailscaleWaitingForLogin": "השלימו את ההתחברות ל-Tailscale בכרטיסיית הדפדפן שנפתחה. OmniRoute ינסה שוב באופן אוטומטי.", + "tailscaleLoginTimedOut": "תם הזמן שהוקצב להמתנה להתחברות ל-Tailscale", + "tailscaleWaitingForFunnel": "הפעילו את Funnel עבור מכשיר זה בכרטיסיית הדפדפן שנפתחה. OmniRoute ימשיך לבדוק את המצב.", + "tailscaleFunnelTimedOut": "תם הזמן שהוקצב להמתנה להפעלת Tailscale Funnel", + "tailscaleStarted": "Tailscale Funnel הופעל", + "tailscaleDisableFailed": "השבתת Tailscale Funnel נכשלה", + "tailscaleStopped": "Tailscale Funnel הושבת", + "tailscaleInstallFailed": "התקנת Tailscale נכשלה", + "tailscaleInstallProgress": "מתבצעת עבודה...", + "tailscaleInstalled": "Tailscale הותקן בהצלחה", + "tailscaleRunning": "פועל", + "tailscaleNeedsLogin": "נדרשת התחברות", + "tailscaleStoppedState": "מופסק", + "tailscaleNotInstalled": "לא מותקן", + "tailscaleUnsupported": "לא נתמך", + "tailscaleError": "שגיאה", + "tailscaleDisable": "עצירת Funnel", + "tailscaleInstallAndEnable": "התקנה והפעלה", + "tailscaleLoginAndEnable": "התחברות והפעלה", + "tailscaleEnable": "הפעלת Funnel", + "tailscaleUrlNotice": "משתמש בכתובת ה־.ts.net שלך ב־Tailscale. ייתכן שיידרשו התחברות ואישור Funnel בשימוש הראשון.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "יש לאמת את המחשב הזה באמצעות Tailscale, ולאחר מכן להפעיל את Funnel.", + "tailscaleBinaryPath": "קובץ בינארי: {path}", + "tailscaleLastError": "שגיאה אחרונה: {error}", + "tailscaleInstallTitle": "התקנת Tailscale", + "tailscaleInstallIntro": "מתקין את Tailscale במחשב זה ומכין את OmniRoute להפעלת Funnel.", + "tailscaleInstallPasswordHint": "ב־macOS וב־Linux, ייתכן שיידרש sudo להתקנת החבילה ולהפעלת הדמון.", + "tailscaleSudoPlaceholder": "סיסמת sudo אופציונלית", + "tailscaleInstalling": "מתבצעת התקנה", "tailscaleSudoLabel": "סיסמת סודו (נדרשת ב-macOS/Linux)", "ngrokTitle": "מנהרת ngrok", "ngrokRunning": "ריצה", @@ -4132,21 +4132,21 @@ "vscodeAliasModelsLabel": "מודלים של VS Code", "vscodeAliasChatLabel": "צ'אט של VS Code", "localServer": "שרת מקומי", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute בענן", "copyUrl": "העתק כתובת URL", "badgeLoopbackTooltip": "נקודת קצה זו נגישה באופן מקומי בלבד (loopback בלבד)", "badgeAlwaysProtectedTooltip": "נקודת קצה זו מוגנת תמיד ודורשת הרשאה", "badgeInternalTooltip": "זוהי נקודת קצה פנימית של המערכת", "tierAll": "הכל", "tierAuth": "מאומת", - "tierLoopback": "Loopback", + "tierLoopback": "לולאה מקומית", "tierAlwaysProtected": "מוגן תמיד", "tierPublic": "ציבורי", "hideInternal": "הסתר פנימיים", "showInternal": "הצג פנימיים", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "הנחיית מערכת מותאמת אישית", + "customSystemPromptDescription": "הוספת הנחיית מערכת מותאמת אישית לכל בקשה למודל", + "customSystemPromptPlaceholder": "לדוגמה: השב תמיד בסגנון דיבור של פיראטים...", "obsidianEnterToken": "אנא הזן טוקן API של Obsidian", "obsidianConnectFailed": "החיבור נכשל", "obsidianConnectionFailed": "החיבור נכשל", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "האסימון הוגדר. כלים של Notion זמינים דרך MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "פרוקסי לנקודות קצה", + "tabApiEndpoints": "נקודות קצה של API", + "apiEndpointsTitle": "נקודות קצה של API", + "apiEndpointsDescription": "נקודות קצה של API בצד השרת, שבהן יישומים ושירותים אחרים יכולים להשתמש. סעיף זה יציג את כל ממשקי ה־REST API הזמינים, עם תיעוד ויכולות בדיקה.", + "comingSoon": "בקרוב", + "plannedFeatures": "תכונות מתוכננות", + "featureRestApi": "קטלוג נקודות קצה של REST API עם תיעוד אינטראקטיבי", + "featureWebhooks": "הגדרת Webhook ומינויים לאירועים", + "featureSwagger": "יצירה אוטומטית של מפרט OpenAPI / Swagger", + "featureAuth": "ניהול מפתחות API והרשאות OAuth לכל נקודת קצה" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "לוח הבקרה של MCP נטען...", + "activate": "להפעיל", + "deactivate": "להשבית", + "confirmSwitchCombo": "לאשר {action} של הצירוף \"{combo}\"?", + "switchComboFailed": "שינוי מצב הצירוף נכשל.", + "switchComboSuccess": "הצירוף \"{combo}\" עודכן.", + "confirmApplyProfile": "להחיל את פרופיל העמידות \"{profile}\"?", + "applyProfileFailed": "החלת פרופיל העמידות נכשלה.", + "applyProfileSuccess": "הפרופיל \"{profile}\" הוחל.", + "confirmResetBreakers": "לאפס את כל מפסקי המעגל?", + "resetBreakersFailed": "איפוס מפסקי המעגל נכשל.", + "resetBreakersSuccess": "מפסקי המעגל אופסו.", + "processStatus": "מצב התהליך", "online": "Online", "offline": "Offline", "disableLabel": "השבת את {label}", @@ -4237,119 +4237,119 @@ "mcpStep2": "הגדר את לקוח ה-MCP שלך להתחברות דרך תעבורת stdio.", "mcpStep3": "הפעל כלים כמו {code1} ו-{code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "זמן פעילות ההפעלה", + "lastHeartbeat": "פעימת לב אחרונה", + "activity24h": "פעילות (24 שעות)", + "totalCalls": "סך כל הקריאות", + "successRate": "שיעור הצלחה", + "avgLatency": "זמן השהיה ממוצע", + "topTools": "כלים מובילים", + "noToolCalls24h": "לא בוצעו קריאות לכלים ב-24 השעות האחרונות.", + "runtimeDetails": "פרטי סביבת הריצה", + "transport": "תעבורה", + "scopesEnforced": "טווחי הרשאה נאכפים", + "yes": "כן", + "no": "לא", + "lastCall": "קריאה אחרונה", + "heartbeatPath": "נתיב פעימת הלב", + "operationalControls": "בקרות תפעוליות", + "switchCombo": "שינוי מצב השילוב", + "inactive": "לא פעיל", + "active": "פעיל", + "activateCombo": "הפעלת השילוב", + "deactivateCombo": "השבתת השילוב", + "applyResilienceProfile": "החלת פרופיל עמידות", + "profileAggressive": "אגרסיבי", + "profileBalanced": "מאוזן", + "profileConservative": "שמרני", + "applyProfile": "החלת הפרופיל", + "resetCircuitBreakers": "איפוס מפסקי המעגל", + "resetCircuitBreakersHelp": "ניקוי מצב המפסקים הנוכחי ומוני הכשלים של הספקים.", + "resetAllBreakers": "איפוס כל המפסקים", + "toolsAndScopes": "כלים וטווחי הרשאה", + "tableTool": "כלי", + "tableScopes": "טווחי הרשאה", + "tablePhase": "שלב", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "יומן ביקורת", + "auditSummary": "קריאות: {total} | עמוד {page} מתוך {totalPages}", + "allTools": "כל הכלים", + "allResults": "כל התוצאות", + "success": "הצלחה", + "failure": "כישלון", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "טוען רשומות ביקורת...", + "noAuditEntriesForFilters": "לא נמצאו רשומות ביקורת עבור המסננים הנוכחיים.", + "tableTimestamp": "חותמת זמן", + "tableDuration": "משך", + "tableResult": "תוצאה", + "tableApiKey": "מפתח API", + "failed": "נכשל", + "previous": "הקודם", + "next": "הבא", + "apiKeyId": "מזהה מפתח API", + "offset": "היסט", + "limit": "מגבלה", + "tool": "כלי" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "טוען את לוח הבקרה של A2A...", + "confirmCancelTask": "לבטל את המשימה {taskId}?", + "cancelTaskFailed": "ביטול המשימה נכשל.", + "cancelTaskSuccess": "המשימה {taskId} בוטלה.", + "smokeSendFailed": "בדיקת העשן של message/send נכשלה.", + "smokeSendSuccessWithTask": "message/send תקין (משימה {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "בדיקת העשן של message/stream נכשלה.", + "smokeStreamSuccessWithTask": "message/stream תקין (משימה {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream הסתיים ללא מזהה משימה.", + "health": "תקינות", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "סך כל המשימות", + "activeStreams": "זרמים פעילים", + "lastTask": "המשימה האחרונה", + "taskStateOverview": "סקירת מצבי המשימות", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "נשלחה", + "working": "בעבודה", + "completed": "הושלמה", + "failed": "נכשלה", + "cancelled": "בוטלה" }, - "agentCard": "Agent card", + "agentCard": "כרטיס סוכן", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "גרסה", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "יכולות", + "agentCardNotAvailable": "כרטיס הסוכן אינו זמין.", + "quickValidation": "אימות מהיר", + "quickValidationDescription": "מבצע קריאות בדיקת עשן דרך נקודת הקצה הפעילה `/a2a`.", + "runMessageSend": "הפעלת message/send", + "runMessageStream": "הפעלת message/stream", + "taskManagement": "ניהול משימות", + "taskSummary": "{total} משימות | עמוד {page} מתוך {totalPages}", + "allStates": "הכול", + "allSkills": "כל המיומנויות", + "loadingTasks": "טוען משימות...", + "noTasksForFilters": "לא נמצאו משימות עבור המסננים הנוכחיים.", + "tableTask": "משימה", + "tableSkill": "מיומנות", + "tableState": "מצב", + "tableUpdated": "עודכן", + "tableActions": "פעולות", + "view": "הצגה", + "cancel": "ביטול", + "previous": "הקודם", + "next": "הבא", + "taskDetail": "פרטי המשימה", + "close": "סגירה", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "אירועים", + "artifacts": "ארטיפקטים", + "tablePhase": "שלב הטבלה", + "offset": "היסט", + "limit": "מגבלה", + "skill": "מיומנות", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "הודעה/שלח", "rpcMethodStream": "הודעה/זרם", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "פעולות", + "addMemory": "הוספת זיכרון", + "allTypes": "כל הסוגים", "cancel": "בטל", "checkHealth": "בדוק בריאות", "checkingHealth": "בודק...", @@ -4382,13 +4382,13 @@ "howWorksToggle": "איך זה עובד", "howWorksContent": "1. חילוץ אוטומטי: בסיום כל תגובה, עובדות ואירועים מזוהים ונשמרים באופן אוטומטי.\n2. אחזור: לפני כל תגובה, מתבצע חיפוש אחר הזיכרונות הרלוונטיים ביותר באמצעות FTS5 (מדויק), וקטורי (סמנטי) או RRF היברידי.\n3. הזרקה: זיכרונות רלוונטיים מוזרקים להקשר של העוזר כדי לשפר את איכות התגובה.\n4. ניהול: השתמש בדף זה כדי להציג, לערוך, לייצא ולדחוס זיכרונות ישנים." }, - "content": "Content", + "content": "תוכן", "contentPlaceholder": "ערך או תוכן JSON לזכור", - "created": "Created", - "delete": "Delete", + "created": "נוצר", + "delete": "מחיקה", "deleteConfirmDesc": "לא ניתן לבטל פעולה זו. הזיכרון יוסר לצמיתות.", "deleteConfirmTitle": "למחוק את הזיכרון?", - "description": "View and manage stored memory entries", + "description": "הצגה וניהול של רשומות זיכרון שמורות", "editMemory": "עריכת זיכרון", "editModal": { "title": "עריכת זיכרון", @@ -4444,20 +4444,20 @@ "configureCta": "הגדר", "vectorStoreInstallHint": "כדי להפעיל חיפוש וקטורי: npm install sqlite-vec (דורש Node.js מקורי, לא WASM), ולאחר מכן הפעל מחדש." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "אפיזודי", + "export": "ייצוא", + "factual": "עובדתי", "healthUnknown": "בריאות לא ידועה", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "שיעור פגיעות", + "import": "ייבוא", "importError": "ייבוא הקובץ נכשל", "importResult": "{imported} יובאו, {skipped} דולגו", - "key": "Key", + "key": "מפתח", "keyPlaceholder": "למשל user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "זיכרונות", "next": "הבא", - "noMemories": "No memories found", + "noMemories": "לא נמצאו זיכרונות", "pageInfo": "עמוד {page} מתוך {totalPages} ({total} בסך הכל)", "pipelineError": "שגיאת צינור", "pipelineOk": "צינור תקין ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "אחזור התצוגה המקדימה נכשל" }, "previous": "הקודם", - "procedural": "Procedural", + "procedural": "פרוצדורלי", "qdrant": { "title": "Qdrant (מאגר וקטורי רמה 2)", "description": "אינטגרציית Qdrant אופציונלית לחיפוש סמנטי ניתן להרחבה", @@ -4534,8 +4534,8 @@ }, "save": "שמור", "saving": "שומר...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "חיפוש בזיכרונות...", + "semantic": "סמנטי", "summarize": { "title": "צמצום זכרונות ישנים", "noCandidates": "אין זכרונות המתאימים לצמצום (קריטריון: מעל 30 יום).", @@ -4547,8 +4547,8 @@ "playground": "סביבת ניסויים", "engine": "מנוע" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "ניהול זיכרון", + "tokensUsed": "אסימונים בשימוש", "tooltip": { "totalEntries": "סך כל הזיכרונות המאוחסנים עבור מפתח API זה", "tokensUsed": "סך הטוקנים המשוער שתפוס על ידי זיכרונות פעילים", @@ -4558,15 +4558,15 @@ "procedural": "נהלים, תהליכי עבודה והנחיות שעל העוזר לפעול לפיהם", "semantic": "מושגים, העדפות וידע בתחום" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "סך כל הרשומות", + "type": "סוג", "memoryEnabled": "זיכרון מופעל" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "מיומנויות", + "description": "ניהול מיומנויות AI ומעקב אחריהן", + "skillsTab": "מיומנויות", + "executionsTab": "הרצות", "selectSkillToInspect": "בחר מיומנות משמאל כדי לבדוק אותה.", "schemaTab": "סכמה", "handlerTab": "מטפל", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "הרץ בדיקה (מציין מיקום)", "setModeAria": "הגדר מצב {mode}", "uninstallSkill": "הסר התקנת מיומנות", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "ארגז חול", + "loading": "המיומנויות נטענות...", + "noSkills": "לא נמצאו מיומנויות", + "noExecutions": "לא נמצאו הרצות", + "enabled": "מופעל", + "disabled": "מושבת", "delete": "מחק", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "גרסה", + "tableDescription": "תיאור", + "skill": "מיומנות", + "status": "סטטוס", + "duration": "משך זמן", + "time": "זמן", + "sandboxConfig": "תצורת ארגז חול", + "cpuLimit": "מגבלת CPU", + "cpuLimitDesc": "זמן ההרצה המרבי לכל מיומנות", + "memoryLimit": "מגבלת זיכרון", + "memoryLimitDesc": "הקצאת הזיכרון המרבית", + "timeout": "פסק זמן", + "timeoutDesc": "זמן ההמתנה המרבי לתגובה", + "networkAccess": "גישה לרשת", + "networkAccessDesc": "מתן אפשרות לבקשות רשת יוצאות", + "mode": "מצב", "q": "Q", "filterSkillsPlaceholder": "סינון מיומנויות לפי שם, תיאור או תג", "allModes": "כל המצבים", @@ -4657,7 +4657,7 @@ "lastCheck": "בדיקה אחרונה", "providerHealth": "בריאות הספק", "systemMetrics": "מדדי מערכת", - "tokenHealth": "Token Health", + "tokenHealth": "תקינות האסימונים", "refreshAll": "רענן הכל", "checkNow": "בדוק עכשיו", "loadingHealth": "טוען נתוני בריאות...", @@ -4665,13 +4665,13 @@ "retry": "נסה שוב", "allOperational": "כל המערכות פועלות", "issuesDetected": "זוהו בעיות במערכת", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute מוכן", + "healthVerdictActionRequired": "נדרשת פעולה לשחזור הפעילות המלאה", + "healthVerdictCoolingDown": "בתקופת צינון לאחר שינויים אחרונים", + "healthSubtitle": "בדיקת תקינות המערכת", + "advancedDiagnosticsTitle": "אבחון מתקדם", + "hide": "הסתר", + "show": "הצג", "updatedAt": "עודכן {time}", "latency": "חביון", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "ספקים", "configuredProvidersLabel": "מוגדר בלוח המחוונים", "configuredProvidersHint": "ספקים עם אישורים שנשמרו ב-/dashboard/ספקים, ללא קשר למצב זמן הריצה.", - "activeProviders": "{count} active", + "activeProviders": "{count} פעילים", "activeProvidersHint": "ספקים מוגדרים מופעלים כעת עבור בקשות ניתוב.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} מנוטרים", "monitoredProvidersHint": "ספקים שנמצאים כעת במעקב על-ידי מסכי תקינות מפסקים.", "healthyCount": "{count} בריא", "nodeVersion": "צומת {version}", @@ -4721,11 +4721,11 @@ "resetting": "מאפס...", "resetAll": "אפס הכל", "until": "עד {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "אזל", + "learnedFromHeaders": "נלמד מכותרות", + "remainingOfLimit": "נותרו {remaining}/{limit}", + "throttleStatus": "הגבלה: {value}", + "lastHeaderUpdate": "עדכון כותרת: {age}", "databaseHealth": "בריאות מסד הנתונים", "databaseHealthDescription": "אבחן ותקן שורות מכסה/דומיין פגות תוקף והפניות קומבו שבורות.", "status": "סטטוס", @@ -4888,28 +4888,28 @@ "previous": "הקודם", "next": "הבא", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "הצג פרטים", + "eventMetadata": "מטא-נתונים של האירוע", + "eventPayload": "מטען האירוע", + "requestId": "מזהה בקשה", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "היסט", + "limit": "מגבלה", + "status": "סטטוס", + "resourceType": "סוג משאב", + "totalEntries": "סך כל הרשומות", + "tab": "כרטיסייה", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "סגור", + "runningRequests": "בקשות פעילות", + "runningRequestsDesc": "תצוגה בזמן אמת של בקשות פעילות המועברות לספקים", "clearAll": "נקה הכל", "confirmClearActiveRequests": "לנקות את כל הבקשות הפעילות?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "מודל", + "provider": "ספק", + "account": "חשבון", + "elapsed": "זמן שחלף", "activeStage": "שלב", "activeStageUnknown": "טרם נשלח ל-upstream", "activeStageRegistered": "רשום", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "הושגה משבצת הגבלת קצב", "activeStageSendingToProvider": "שולח ל-upstream", "activeStageProviderResponseStarted": "תגובת ה-upstream החלה", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "כמות", + "payloads": "מטענים", + "viewPayloads": "הצג", + "activeCount": "{count} פעילים", + "clientPayload": "מטען בקשת הלקוח", + "upstreamPayload": "מטען ספק היעד", + "upstreamNotSentYet": "טרם נשלח לספק היעד", + "runningRequestDetailMeta": "חשבון: {account} — זמן שחלף: {elapsed}", + "export": "ייצוא", + "exporting": "מייצא...", + "exportFailed": "הייצוא נכשל", "cleanHistoryButton": "ניקוי היסטוריה", "cleanHistoryTitle": "לנקות את היסטוריית היומן?", "cleanHistoryMessage": "פעולה זו תמחק לצמיתות את כל שורות יומן הבקשות, שורות פרטים ישנות וקובצי ארטיפקט מקומיים תחת DATA_DIR/call_logs. הדף הפעיל יתרענן לאחר הניקוי.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "נוקו {deleted} רשומות יומן, {deletedArtifacts} ארטיפקטים ו-{deletedDetailedLogs} שורות פרטים ישנות.", "cleanHistoryEmpty": "לא נמצאה היסטוריית יומן בקשות.", "cleanHistoryFailed": "נכשל ניקוי היסטוריית היומן.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "טווח זמן", + "lastNHours": "{hours} השעות האחרונות", + "defaultRange": "ברירת מחדל", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "אחזור היומנים נכשל", + "copyFailed": "העתקת רשומת היומן נכשלה", + "copyLogEntry": "העתקת רשומת יומן", "filterByLevel": "סנן לפי רמת יומן", "searchPlaceholder": "חיפוש ביומנים…", "searchAria": "חיפוש ברשומות יומן", @@ -4987,9 +4987,9 @@ "multiProvider": "רב ספקים", "usageTracking": "מעקב אחר שימוש", "securityDesc": "הגדר סיסמה כדי להגן על לוח המחוונים שלך, או דלג לעת עתה.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ ללא סיסמה, לא תהיה לך אפשרות להוסיף ספקים במהלך ההגדרה. ניתן להוסיף אותם מאוחר יותר מלוח הבקרה לאחר הגדרת סיסמה.", "providerDesc": "חבר את ספק הבינה המלאכותית הראשון שלך. תוכל להוסיף עוד מאוחר יותר.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "כדי להוסיף ספקים, תחילה יש להגדיר סיסמה. נא לחזור לשלב האבטחה ולהגדיר סיסמה, או להוסיף ספקים מאוחר יותר מלוח הבקרה.", "apiKeyRequired": "מפתח API (נדרש)", "customUrlOptional": "כתובת אתר מותאמת אישית (אופציונלי)", "testDesc": "בוא נוודא שחיבור הספק שלך עובד.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "מייבא…", "importFromFileImport": "ייבוא {count} ספקים", "importFromFileResult": "יובאו {success} ספקים ({failed} נכשלו)", + "importFromFileDownloadTemplate": "הורדת תבנית CSV", + "importFromFileMoreErrors": "ועוד {count}+", + "importFromFileSchemaHint": "עמודות ה-CSV הן לפי מיקום: provider, name, apiKey, baseUrl (אופציונלי), priority (אופציונלי). העמודה provider חייבת להכיל מזהה קיים של ספק מנוהל או מזהה של צומת תואם OpenAI/Anthropic שכבר נרשם — ייבוא זה אינו יוצר צומתי נקודת קצה חדשים.", "adaptaTutorial": { "title": "כיצד לחבר את Adapta Web", "introPrefix": "Adapta מבצעת אימות דרך Clerk. האסימון", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} מוסתרים", "warningCount": "{count} אזהרה", "noConnections": "אין קשרים", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "פג תוקף", + "expiringSoonBadge": "התוקף יפוג בקרוב", "freeTier": "דרג חינם", "freeTierAvailable": "רמה חינם זמינה", "hasFreeTooltip": "מסלול חינמי זמין", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "ספק זה הוצא משימוש", "riskNotice": { "title": "לפני שממשיכים", - "detailsTitle": "Usage caveats", + "detailsTitle": "הסתייגויות בנוגע לשימוש", "tooltip": "ספק עם סייגי שימוש — לחץ לפרטים", "oauth": "ספק זה משתמש בסשן המוצר הרשמי/OAuth שלך, שאינו מורשה לשימוש בפרוקסי/נתב. איננו ממליצים על שימוש אינטנסיבי בסוכנים אוטונומיים (בסגנון OpenCloud, תהליכים ארוכים מרובי שלבים, אצוות גדולות) — ספק ה-upstream עלול להגיב בהגבלת החשבון או בחסימתו. השימוש הוא על אחריותך בלבד.", "webCookie": "ספק זה מבצע אימות באמצעות עוגיות סשן הדפדפן שלך. שירות ה-upstream עלול לבטל את תוקף הסשן בכל עת, מה שידרוש ממך להתחבר מחדש. לא מומלץ לפעולות ארוכות ללא השגחה. השימוש הוא על אחריותך בלבד.", @@ -5188,9 +5191,9 @@ "cancel": "ביטול" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} חיבורים סומנו — עד {maxFailures} כשלים אחרונים{lastFailureSuffix}. יש ללחוץ כדי להציג את תקינות החיבורים.", + "lastFailureSuffix": "(הכשל האחרון אירע {time})", + "ariaLabel": "הצגת פרטי תקינות החיבורים, {count} אזהרות" }, "disabled": "מושבת", "enableProvider": "הפעל ספק", @@ -5225,7 +5228,7 @@ "failedCreate": "יצירת הספק נכשלה", "errorOccurred": "אירעה שגיאה. אנא נסה שוב.", "modelStatus": "סטטוס דגם", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "מוגדרים בלבד", "allModelsOperational": "כל הדגמים מבצעיים", "modelsWithIssues": "{count} דגמים עם בעיות", "allModelsNormal": "כל הדגמים מגיבים כרגיל.", @@ -5236,7 +5239,7 @@ "clearing": "מנקה...", "until": "עד {time}", "providerTestFailed": "בדיקת הספק נכשלה", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "תם הזמן שהוקצב לבדיקת הספק — יש יותר מדי חיבורים לבדיקה בו-זמנית", "modeTest": "{mode} מבחן", "passedCount": "{count} עבר", "failedCount": "{count} נכשל", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "כתובת URL של סמל", "iconUrlHint": "אופציונלי. כתובת URL של תמונה שתוצג כסמל של ספק זה.", "iconUrlInvalid": "כתובת ה-URL של האייקון אינה חוקית. השתמש ב-http(s):// או ב-data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "אזור הזמן לאיפוס המכסה היומית", + "dailyQuotaResetTimezoneHint": "אזור זמן אופציונלי של IANA, לשימוש כאשר המקור אינו מספק X-RateLimit-Reset. יש להשאיר ריק כדי לשמור על תקופת צינון קצרה.", + "dailyQuotaResetHourLabel": "שעת איפוס המכסה היומית", + "dailyQuotaResetHourHint": "שעה מקומית בין 0 ל-23 באזור הזמן שלעיל. ערך ריק פירושו שאין שעון ברמת הצומת.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "הספק לא נמצא", "deleteConnectionConfirm": "למחוק את החיבור הזה?", "deleteConnectionConfirmNamed": "האם אתה בטוח שברצונך למחוק את {name}? לא ניתן לבטל פעולה זו.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "מחיקת הפריטים שנבחרו ({count})", + "batchDeleteConfirm": "למחוק {count} חיבורים? לא ניתן לבטל פעולה זו.", + "batchDeleteSuccess": "נמחקו {count} חיבורים", "batchActivateSelected": "הפעל", "batchDeactivateSelected": "השבת", "batchRetestSelected": "בדוק שוב", @@ -5292,7 +5295,7 @@ "filterError": "שגיאה", "filterBanned": "חסום", "filterCreditsExhausted": "קרדיטים אזלו", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "חיפוש חשבונות…", "noFilteredConnections": "אין חיבורים התואמים למסנן הנוכחי.", "failedSetAlias": "הגדרת הכינוי נכשלה", "setAliasSuccess": "הכינוי {alias} הוגדר", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "פרטים תואמי OpenAI", "messagesApi": "הודעות API", "responsesApi": "API של תגובות", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "הטמעות", + "audioTranscriptions": "תמלולי שמע", + "audioSpeech": "הפקת דיבור משמע", + "imagesGenerations": "יצירת תמונות", "chatCompletions": "השלמת צ'אט", "importingModels": "מייבא...", "importFromModels": "ייבוא מ /models", - "modelsImported": "{count} models imported", + "modelsImported": "יובאו {count} מודלים", "allModelsAlreadyImported": "כל הדגמים כבר מיובאים", "noNewModelsToImport": "אין דגמים חדשים לייבוא — כל הדגמים כבר קיימים ברישום או ברשימת הדגמים המותאמים", "skippingExistingModels": "מדלג על {count} דגמים קיימים", @@ -5350,13 +5353,13 @@ "importFailed": "הייבוא נכשל", "noNewModelsAdded": "לא נוספו דגמים חדשים.", "adding": "מוסיף...", - "close": "Close", + "close": "סגירה", "importingModelsTitle": "ייבוא דגמים", "copyModel": "העתק דגם", "filterModels": "סינון מודלים…", "testAllRateLimited": "הגעת למגבלת הקצב, העבודה הופסקה מוקדם", "hideFailedAuto": "הסתר דגמים שנכשלו באופן אוטומטי", - "selectAllModels": "Select all", + "selectAllModels": "בחירת הכול", "hideAllModels": "הסתר הכל", "modelsActive": "פעילים", "showModel": "הצג מודל", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "מפתח אחד בכל שורה. פורמט: name|apiKey או פשוט apiKey (שם אוטומטי לפי אינדקס).", "bulkValidateKeys": "אמת כל מפתח לפני השמירה (איטי יותר)", "bulkAddAllKeys": "הוסף את כל המפתחות", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {נוסף מפתח אחד} other {נוספו # מפתחות}}", + "bulkFailedCount": "{count, plural, one {אחד נכשל} other {# נכשלו}}", "optional": "אופציונלי", "anthropicCompatibleName": "תואם אנתרופי", "openaiCompatibleName": "תואם OpenAI", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "אירעה שגיאה בלתי צפויה", "getApiKey": "קבל מפתח API", "getApiKeyDescription": "רשום או הירשם למפתח API", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# חיבור} other {# חיבורים}}", "messagesPath": "הודעות", "responsesPath": "תגובות", "chatCompletionsPath": "צ'אט/השלמות", @@ -5419,17 +5422,17 @@ "configured": "מוגדר", "providerProxyConfigureHint": "הגדר פרוקסי עבור כל החיבורים של ספק זה", "providerProxy": "פרוקסי של ספק", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "תיקון env", + "repairEnvWorking": "מתקן...", + "repairEnvHint": "שחזור ברירות המחדל החסרות של OAuth אל .env מבלי להחליף ערכים קיימים.", + "repairEnvSuccess": "ברירות המחדל של OAuth שוחזרו", + "repairEnvFailed": "תיקון .env נכשל", "noConnectionsYet": "עדיין אין קשרים", "addFirstConnectionHint": "הוסף את החיבור הראשון שלך כדי להתחיל", "addConnection": "הוסף חיבור", "availableModels": "דגמים זמינים", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "מודלים מובנים", + "builtInModelsHint": "מודלים מהמאגר עבור ספק זה. השתמשו בעיפרון כדי להגדיר אפשרויות תאימות.", "pageAutoRefresh": "הדף יתרענן אוטומטית...", "statusDisabled": "נכים", "statusConnected": "מחובר", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "אימות מחדש את החיבור הזה", "proxyConfig": "תצורת פרוקסי", "aliasExistsAlert": "הכינוי \"{alias}\" כבר קיים. אנא השתמש בדגם אחר או ערוך כינוי קיים.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "שם כינוי", + "clickToSetAlias": "לחצו כדי להגדיר כינוי", + "clickToEditAlias": "כינוי: {alias} (לחצו לעריכה)", "openRouterAnyModelHint": "OpenRouter תומך בכל דגם. הוסף דגמים וצור כינויים לגישה מהירה.", "modelIdFromOpenRouter": "מזהה דגם (מ-OpenRouter)", "openRouterModelPlaceholder": "אנתרופי/קלאוד-3-אופוס", "customModels": "דגמים מותאמים אישית", "customModelsHint": "הוסף מזהי דגמים שאינם ברשימת ברירת המחדל. אלה יהיו זמינים לניתוב.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "נרמול מזהי קריאות לכלים ל-9 תווים (למשל Mistral)", + "preserveDeveloperRoleLabel": "שמירת תפקיד המפתח של OpenAI Responses (לא למפות למערכת)", + "compatAdjustmentsTitle": "תאימות", + "compatButtonLabel": "תאימות", + "compatToolIdShort": "מזהה כלי 9", + "compatDeveloperShort": "תפקיד מפתח", + "compatDoNotPreserveDeveloper": "אין לשמר את תפקיד המפתח", + "compatBadgeNoPreserve": "ללא שימור", + "compatProtocolLabel": "פרוטוקול בקשת הלקוח", + "compatProtocolHint": "אפשרויות אלה חלות כאשר OmniRoute מזהה את מבנה הבקשה הזה (OpenAI Chat, Responses API או Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "שכתוב קריאות כלי web_fetch מובנות ל-/v1/web/fetch של OmniRoute.", "interceptionLoadError": "טעינת הגדרות היירוט נכשלה: {error}", "interceptionSaveError": "שמירת הגדרות היירוט נכשלה: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "חשיפה ב-Claude Code ‏(claude/…)", + "ccAliasSectionHint": "פרסום המודלים של ספק זה תחת מזהי המראה claude/<provider>/<model>, כדי שגילוי המודלים בשער של Claude Code יוכל להציג אותם. מושבת כברירת מחדל — הפעלת אפשרות זו מכפילה את רשומות הקטלוג עבור כל הלקוחות.", + "ccAliasProviderLevelLabel": "ברירת המחדל של הספק", + "ccAliasModelOverridesLabel": "דריסות לפי מודל", + "ccAliasModelOverrideAriaLabel": "דריסה עבור {modelId}", + "ccAliasStateInherit": "ירושה", + "ccAliasStateOn": "מופעל", + "ccAliasStateOff": "מושבת", + "ccAliasAddModelPlaceholder": "מזהה מודל (למשל gpt-4o)", + "ccAliasAddModelButton": "הוספת דריסה", + "ccAliasLoadError": "טעינת הגדרות כינויי הגילוי נכשלה: {error}", + "ccAliasSaveError": "שמירת הגדרת כינוי הגילוי נכשלה: {error}", + "compatUpstreamHeadersLabel": "כותרות upstream נוספות", + "compatUpstreamHeadersHint": "הגדרה בעלת הרשאות גבוהות — אותה רמת אמון כמו עריכת פרטי הגישה ל-API של הספק; רק מנהלי מערכת מהימנים צריכים להשתמש בה. המיזוג מתבצע לאחר ש-OmniRoute מוסיף אימות ממפתח ה-API של הספק. אם כותרת מותאמת אישית משתמשת באותו שם כמו כותרת קיימת (למשל Authorization), הערך שלכם מחליף לחלוטין את הכותרת שנוצרה אוטומטית (כולל אסימון ה-Bearer) — שירות ה-upstream רואה רק את מה שהקלדתם, ולא את המפתח מההגדרות. תצורה שגויה עלולה לגרום לשגיאת 401 או לשיבוש האימות מול ה-upstream. שורה אחת לכל כותרת (למשל Authentication נוסף עבור שערים מסוימים). רחפו מעל הערך או העבירו אליו את המיקוד כדי להציג תצוגה מקדימה. השמירה מתבצעת בעת אובדן מיקוד, לחיצה מחוץ לאזור או סגירת חלונית זו.", + "compatUpstreamHeaderName": "שם הכותרת", + "compatUpstreamHeaderValue": "ערך", + "compatUpstreamAddRow": "הוספת כותרת", + "compatUpstreamRemoveRow": "הסרת שורה", + "compatBadgeUpstreamHeaders": "כותרות", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "ייבוא מודלים חינמיים בלבד", @@ -5592,26 +5595,26 @@ "email": "דוא\"ל", "healthCheckMinutes": "בדיקת בריאות (דקה)", "healthCheckHint": "מרווח רענון אסימון פרואקטיבי. 0 = מושבת.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "ביטול הבחירה בהכול", + "modelsActiveCount": "{active}/{total} פעילים", + "noModelsMatch": "אין מודלים התואמים ל-\"{filter}\"", + "groupLabel": "סביבה", + "groupPlaceholder": "לדוגמה, eKaizen, Personal", "failedTestConnection": "בדיקת החיבור נכשלה", "failed": "נכשל", "leaveBlankKeepCurrentApiKey": "השאר ריק כדי לשמור את מפתח ה-API הנוכחי.", "editCompatibleTitle": "ערוך {type} תואם", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "כתובת ה-URL הבסיסית של ה-API התואם ל-{type} שלך. יש להשתמש בהגדרות המתקדמות עבור נתיבי נקודות קצה מותאמים אישית.", "apiKeyForCheck": "מפתח API (לבדיקה)", "testModelIdLabel": "מזהה מודל (אופציונלי)", "testModelIdPlaceholder": "לדוגמה: my-model-id", "testModelIdHint": "אם לספק אין נקודת קצה של /models, הזן מזהה מודל כדי לאמת באמצעות /chat/completions במקום זאת.", "compatibleProdPlaceholder": "{type} תואם (פרוד)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "האסימון רוענן בהצלחה", + "tokenRefreshFailed": "רענון האסימון נכשל", "cursorSessionUnchanged": "הסשן כבר נוכחי", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "החלת אימות", + "exportCodexAuthFile": "ייצוא אימות", "applyClaudeAuthLocal": "החל אישור", "exportClaudeAuthFile": "ייצוא אישור", "importClaudeAuth": "ייבוא אישור", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} נכשל", "codexImportBulkZipExtracting": "מחלץ ZIP...", "codexImportBulkZipError": "חילוץ ZIP נכשל", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "הגדרות מתקדמות", + "chatPathLabel": "נתיב נקודת הקצה של הצ'אט", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "נתיב צ'אט מותאם אישית עבור ספקים עם ממשקי API לא סטנדרטיים (לדוגמה, /v4/chat/completions)", + "modelsPathLabel": "נתיב נקודת הקצה של המודלים", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "נתיב מודלים מותאם אישית לצורך אימות (לדוגמה, /v4/models)", "clientIdentityLabel": "זהות לקוח", - "clientIdentityHint": "Optional. Adds client fingerprint headers (e.g. User-Agent) matching a known CLI for compatible gateways that expect one.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "clientIdentityHint": "אופציונלי. מוסיף כותרות טביעת אצבע של הלקוח (לדוגמה, User-Agent) התואמות ל-CLI מוכר, עבור שערים תואמים המצפים לכך.", + "statusDeactivated": "מושבת (ידנית)", + "statusBanned": "חסום / הפרת כללי Sandbox", + "statusCreditsExhausted": "יתרה לא מספקת / המכסה נוצלה", + "showEmails": "הצגת כל כתובות הדוא״ל", + "hideEmails": "הסתרת כל כתובות הדוא״ל", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "הוספת מפתח API נוסף או הדבקת מספר מפתחות", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "aggregatorsGateways": "אגרגטורים ושערים", + "enterpriseCloud": "ארגונים וענן", + "apiFormatLabel": "תווית תבנית API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "אזור API: סין", + "apiRegionHint": "רמז לאזור API", + "apiRegionInternational": "אזור API: בינלאומי", + "apiRegionLabel": "תווית אזור API", + "apikey": "מפתח API", + "audio": "שמע", + "audioProvidersHeading": "כותרת ספקי שמע", "cloudAgentProviders": "ספקי סוכן ענן", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "תווית קצרה לשמע", + "azureOpenAiBaseUrlHint": "רמז לכתובת ה-URL הבסיסית של Azure Open AI", + "bailianBaseUrlHint": "רמז לכתובת ה-URL הבסיסית של Bailian", + "claudeWebCookieHint": "יש לפתוח את claude.ai → DevTools → Application → Cookies → claude.ai ולהעתיק את הערך 'sessionKey'. נדרשים גם cf_clearance, __cf_bm, _cfuvid עבור Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "רמז לקובץ Cookie של Blackbox Web", + "blackboxWebCookiePlaceholder": "מציין מקום לקובץ Cookie של Blackbox Web", "t3ChatWebCookieHint": "פתח את t3.chat → DevTools → יישום → אחסון מקומי → https://t3.chat, העתק את 'convex-session-id'. לאחר מכן פתח את DevTools → רשת, העתק את כותרת העוגייה המלאה מכל בקשת צ'אט. הדבק את שני הערכים בשדות למטה.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "רמז לקובץ Cookie של Grok Web", "blockClaudeExtraUsageDescription": "כאשר זה מופעל, OmniRoute מסמן את חיבור Claude הזה כלא זמין ברגע ש-API השימוש מדווח על שימוש נוסף בתור, כך שהגיבוי עובר לחיבור אחר במקום להמשיך בחיוב נוסף לפי שימוש.", "blockClaudeExtraUsageLabel": "חסום שימוש נוסף ב-Claude", "disableCoolingDescription": "דלג על תקופת הצינון הזמנית כדי שחיבור זה יישאר זמין גם לאחר שגיאות הניתנות לשחזור (מצבים סופיים כמו חסום/פג תוקף עדיין חלים).", "disableCoolingLabel": "השבת תקופת צינון עבור חיבור זה", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {נוסף מפתח אחד} other {נוספו # מפתחות}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {דילוג על כפילות אחת} other {דילוג על # כפילויות}}", + "bulkPasteHint": "יש להדביק מפתח API אחד בכל שורה. המערכת מתעלמת משורות ריקות ומדלגת על מפתחות כפולים.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "מוסיף את כותרת הבטא redact-thinking עבור שירותי upstream תואמי CC שדורשים הסתרה של זרמי החשיבה של Claude.", + "ccCompatibleRedactThinkingLabel": "הפעלת בטא של redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "מוסיף `display: \"summarized\"` לבקשות חשיבה תואמות CC, כדי שמודלים נתמכים של Claude ישדרו מקטעי חשיבה גלויים.", + "ccCompatibleSummarizeThinkingLabel": "הפעלת תצוגת חשיבה מסוכמת", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "שימוש ברמת שירות בעדיפות גבוהה עבור בקשות Codex, כאשר היא זמינה.", + "codexFastServiceTierLabel": "רמת שירות מהירה של Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "מציין מקום לשם כותרת של upstream תואם", + "compatUpstreamHeaderValuePlaceholder": "מציין מקום לערך כותרת של upstream תואם", + "compatible": "תואם", + "configuredCount": "מספר שהוגדר", + "consoleApiKeyOracleHint": "רמז למפתח API של מסוף Oracle", + "consoleApiKeyOracleLabel": "תווית למפתח API של מסוף Oracle", + "consoleApiKeyOraclePlaceholder": "מציין מקום למפתח API של מסוף Oracle", "newApiUserIdLabel": "מזהה משתמש New-API", "newApiUserIdPlaceholder": "לדוגמה 12345", "newApiUserIdHint": "ערך כותרת New-Api-User של AgentRouter, המשמש יחד עם מפתח ה-API של הקונסולה לקבלת יתרת המכסה.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "אפשר גילוי איזון עבור צמתים תואמי New-API / One-API / Sub2API", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "רמז לסוכן משתמש מותאם אישית", + "customUserAgentLabel": "תווית לסוכן משתמש מותאם אישית", + "databricksBaseUrlHint": "רמז לכתובת URL בסיסית של Databricks", + "defaultThinkingStrengthHint": "משמש כאשר לא צוינה מידת מאמץ החשיבה בבקשה.", + "defaultThinkingStrengthLabel": "עוצמת החשיבה המוגדרת כברירת מחדל", + "deleteAllExtraApiKeys": "מחיקת הכול", + "excludedModelsHint": "רמז למודלים שלא ייכללו", + "excludedModelsLabel": "תווית למודלים שלא ייכללו", + "excludedModelsPlaceholder": "מציין מקום למודלים שלא ייכללו", + "expirationBannerExpired": "באנר תפוגה: התוקף פג", + "expirationBannerExpiredDesc": "תיאור באנר תפוגה: התוקף פג", + "expirationBannerExpiringSoon": "באנר תפוגה: התוקף עומד לפוג בקרוב", + "expirationBannerExpiringSoonDesc": "תיאור באנר תפוגה: התוקף עומד לפוג בקרוב", + "extraApiKeyMasked": "מפתח {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "רמז למפתחות API נוספים", + "extraApiKeysLabel": "תווית למפתחות API נוספים", + "apiKeyHealthLabel": "תקינות מפתח API", + "apiKeyStatusActive": "פעיל", + "apiKeyStatusWarning": "אזהרה ({count} כשלים)", + "apiKeyStatusInvalid": "לא תקין", + "primaryKey": "מפתח ראשי", + "apiKeyInvalidAlert": "{count} מפתחות API סומנו כלא תקינים עקב כשלי אימות בחיבורים: {connections}. המערכת תדלג עליהם ברוטציה. לחצו כדי לבדוק.", + "apiKeyInvalidAlertTitle": "התראת תקינות של מפתחות API", + "apiKeyWarningAlert": "{count} מפתחות API נמצאים במצב אזהרה עקב שיעור כשלים גבוה בחיבורים: {connections}. בדקו אותם כדי למנוע בעיות ברוטציה.", + "apiKeyWarningAlertTitle": "אזהרת מפתח API", + "googlePseInfo": "מידע על Google PSE", "antigravityProjectIdHint": "עקיפה אופציונלית עבור בקשות Antigravity Cloud Code. השאר ריק כדי להשתמש בפרויקט שהתגלה במהלך Google OAuth.", "antigravityClientProfileLabel": "פרופיל לקוח", "antigravityClientProfileHint": "בחר איזו זהות לקוח של Antigravity תציג OmniRoute ל-API.", @@ -5865,22 +5868,22 @@ "tierFast": "מהיר", "antigravityProjectIdLabel": "מזהה פרויקט של Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "מציין מיקום לקובץ Cookie של Grok Web", + "herokuBaseUrlHint": "הנחיה לכתובת ה-URL הבסיסית של Heroku", + "hideEmail": "הסתרת כתובת האימייל", + "imageProviders": "ספקי תמונות", "videoProviders": "יצירת וידאו", "embeddingRerankProviders": "הטמעות ודירוג מחדש", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "תווית קצרה לתמונות", + "llmProviders": "ספקי LLM", + "localProviderApiKeyOptionalHint": "הנחיה למפתח API אופציונלי של ספק מקומי", + "localProviderBaseUrlHint": "הנחיה לכתובת ה-URL הבסיסית של ספק מקומי", + "localProviders": "ספקים מקומיים", + "maxConcurrentWholeNumberError": "שגיאה: המספר המרבי של בקשות מקבילות חייב להיות מספר שלם", "m365TierLabel": "דרגת Copilot", "m365TierHint": "בחר באיזה ממשק Microsoft 365 Copilot חיבור זה משתמש. Individual הוא ברירת המחדל עבור BizChat לצרכנים; Education ו-Enterprise (עבודה) משתמשים בממשקי ה-tenant שלהם.", "m365TierIndividualOption": "Individual (ברירת מחדל)", - "m365TierEduOption": "Education", + "m365TierEduOption": "השכלה", "m365TierEnterpriseOption": "Enterprise / עבודה", "tierOverrideLabel": "עקיפת דרגה", "tierOverrideAuto": "אוטומטי (הניתוב קובע)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "זול", "tierOverridePremium": "פרימיום", "tierOverrideHelpText": "הצמד ספק זה לדרגת ניתוב במקום לתת ל-OmniRoute להסיק זאת מתמחור המודל.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "הנחיה לקובץ Cookie של Muse Spark Web", + "museSparkWebCookiePlaceholder": "מציין מיקום לקובץ Cookie של Muse Spark Web", + "oauth": "OAuth", + "openCliTools": "פתיחת כלי CLI", + "openSettings": "פתיחת ההגדרות", + "openaiResponsesStoreDescription": "אפשרו לבקשות תואמות של Responses API לשמר את מצב התגובה המאוחסן.", + "openaiResponsesStoreLabel": "אחסון OpenAI Responses", + "perplexitySearchSharedKeyInfo": "מידע על מפתח משותף של Perplexity Search", + "perplexityWebCookieHint": "הנחיה לקובץ Cookie של Perplexity Web", + "perplexityWebCookiePlaceholder": "מציין מיקום לקובץ Cookie של Perplexity Web", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "עקיפת מגבלות קצב", "rateLimitOverridesMaxConcurrentHint": "עקיפת מספר הבקשות המקביליות המרבי עבור חיבור זה. עוקף את המגבלה ברמת החשבון.", "rateLimitOverridesMaxConcurrentLabel": "מקסימום בקשות מקביליות (מגבלת קצב)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "משך הזמן המרבי (באלפיות שנייה) שבקשה יכולה להמתין למשבצת במגבלת הקצב לפני שתיכשל. הגדרה זו עוקפת את הגדרת Resilience הכללית עבור חיבור זה בלבד.", + "rateLimitOverridesMaxWaitMsLabel": "זמן המתנה מרבי בתור (אלפיות שנייה)", "rateLimitOverridesMinTimeHint": "זמן מינימלי (במילישניות) בין בקשות. עוקף את השהיית מגביל הקצב כברירת מחדל.", "rateLimitOverridesMinTimeLabel": "מרווח מינימלי (מילישניות)", "rateLimitOverridesRpdHint": "מקסימום בקשות ליום עבור חיבור זה. עוקף את ברירת המחדל של הספק.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (אסימונים ליום)", "rateLimitOverridesTpmHint": "מקסימום אסימונים לדקה עבור חיבור זה. עוקף את ברירת המחדל של הספק.", "rateLimitOverridesTpmLabel": "TPM (אסימונים לדקה)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "רענון אסימון OAuth", + "regionHint": "הנחיה לאזור", + "regionLabel": "אזור", + "removeThisKey": "הסרת מפתח זה", + "routingTagsHint": "הנחיה לתגיות ניתוב", + "routingTagsLabel": "תגיות ניתוב", + "routingTagsPlaceholder": "מציין מיקום לתגיות ניתוב", + "search": "חיפוש", + "searchEngineIdHint": "הנחיה למזהה מנוע החיפוש", + "searchEngineIdLabel": "תווית מזהה מנוע החיפוש", + "searchEngineIdRequired": "מזהה מנוע החיפוש הוא שדה חובה", + "searchProvider": "ספק חיפוש", + "searchProviderDesc": "תיאור ספק החיפוש", "searchProviders": "חיפוש ספקים...", "searchByModel": "חיפוש לפי מודל…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "ספקי חיפוש", + "searxngBaseUrlHint": "רמז לכתובת ה-URL הבסיסית של Searxng", + "searxngInfo": "מידע על Searxng", + "sessionCookieLabel": "תווית קובץ Cookie של ההפעלה", + "showEmail": "הצגת כתובת הדוא״ל", + "snowflakeBaseUrlHint": "רמז לכתובת ה-URL הבסיסית של Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "רמז לקבוצת תגיות", + "tagGroupLabel": "תווית קבוצת תגיות", + "tagGroupPlaceholder": "מציין מיקום לקבוצת תגיות", + "testModel": "בדיקת המודל", + "testingModel": "המודל נבדק", "modelTestQuotaTooltip": "המכסה נגמרה — מתחדשת מחר או זקוקה להטענה נוספת", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "תג אסימון שפג תוקפו", + "tokenExpiredTitle": "תוקף האסימון פג", + "tokenExpiresSoonTitle": "תוקף האסימון יפוג בקרוב", + "tokenShort": "אסימון קצר", + "totalKeysRotating": "{count, plural, one {מפתח אחד מתחלף} other {# מפתחות מתחלפים}}", + "unhideModel": "ביטול הסתרת המודל", + "upstreamProxyProviders": "ספקי Proxy במעלה הזרם", "validationModelIdHint": "המודל המשמש לאימות מפתח ה-API. השאר ריק כדי להשתמש במודל הזמין הראשון של הספק.", "validationModelIdLabel": "מודל אימות", "validationModelIdPlaceholder": "לדוגמה: meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "יש להדביק את ה-JSON של Service Account ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) או OAuth access_token", + "webCookieProviders": "ספקי Cookie מהאינטרנט", + "weeklyShort": "שבועי", + "xiaomiMimoBaseUrlHint": "רמז לכתובת ה-URL הבסיסית של Xiaomi Mimo", "globalCodexServiceMode": "מצב שירות Codex גלובלי", "connect": "התחבר", "manualApiKey": "מפתח API ידני", @@ -5975,9 +5978,9 @@ "zedImportDescription": "גלה אישורי ספקי בינה מלאכותית (OpenAI, Anthropic, Google, Mistral, xAI) המאוחסנים על ידי Zed IDE במחזיק המפתחות של מערכת ההפעלה ויבא אותם כחיבורים. Zed IDE חייב להיות מותקן במחשב זה.", "zedImportButton": "ייבוא מ-Zed", "zedImportFailed": "ייבוא Zed נכשל", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "רמז לייבוא מ-Zed", + "zedImportNetworkError": "שגיאת רשת בייבוא מ-Zed", + "zedImportNone": "אין פריטים לייבוא מ-Zed", "zedImportSuccess": "ייבא {credentials} אישור(ים) מ-Zed עבור {providers} ספק(ים)", "zedImporting": "מייבא…", "zedNoCredentials": "לא נמצאו אישורי Zed במחזיק המפתחות", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "רשומה {number}", "claudeImportParseError": "שגיאת ניתוח", "claudeImportNoValidEntries": "אין רשומות תקפות לייבוא", - "webFetch": "Web Fetch", + "webFetch": "אחזור מהאינטרנט", "webFetchTooltip": "ספקים המחלצים תוכן מכתובות אתרים (HTML ← Markdown, גירוד נתונים, צילום מסך)", "webFetchProvidersHeading": "ספקי Web Fetch", "compatibleProvidersDesc": "נקודות קצה תואמות OpenAI ותואמות Anthropic שאתה מארח או מגדיר. כוון כל OpenAI SDK לכתובת ה-URL שלך ונתב בקשות לכאן.", @@ -6175,7 +6178,7 @@ "freeaiapikey": "פרוקסי API מוזל עבור יותר מ-40 מודלים כולל GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. קבל את מפתח ה-API שלך ב-https://freeaiapikey.com/dashboard. כתובת URL בסיסית: https://freeaiapikey.com/v1.", "freemodel-dev": "קבל קרדיט API חינם בסך $300 ב-https://freemodel.dev — ללא צורך בפרטי תשלום. נקודת קצה תואמת OpenAI. מודלים של GPT-5.4 ו-GPT-5.5 זמינים.", "friendliai": "מסלול חינמי להסקה ללא שרת — ללא צורך בכרטיס אשראי", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "מסלול חינמי דרך Google AI Studio; המכסות לכל מודל אינן מתפרסמות עוד (יש לבדוק את דף המכסות ב-AI Studio) — ללא כרטיס אשראי.", "gigachat": "חבר את GigaChat (Sber) באמצעות מפתח API.", "gitlab": "טוקן גישה אישי של GitLab עבור ה-API הציבורי של Code Suggestions. הגדר כתובת URL בסיסית באירוח עצמי כאשר אינך משתמש ב-gitlab.com.", "gitlawb-gmi": "קבל את מפתח ה-API שלך מלוח הבקרה של Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "חבר את GLM Coding (China) באמצעות מפתח API.", "glmt": "פרופיל GLM מוגדר מראש עם תקציב טוקנים גבוה יותר, חשיבה מופעלת ופסק זמן ארוך יותר.", "getgoapi": "חבר את GoAPI באמצעות מפתח API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "תוכנית חינמית: מגבלות לכל מודל (200K אסימונים ביום לכל מודל צ׳אט; ראו console.groq.com/docs/rate-limits למגבלות RPM/RPD) — ללא אמצעי תשלום שמור.", "haiper": "קבל מפתח API ב-haiper.ai/haiper-api", "heroku": "חבר את Heroku AI באמצעות מפתח API.", "hcnsec": "קבל מפתח API ב-api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "צור מפתח API בכתובת https://app.requesty.ai, ולאחר מכן הדבק אותו כאן כ-Bearer token. נקודת קצה תואמת OpenAI בכתובת https://router.requesty.ai/v1, עם קטלוג /v1/models חי.", "runwayml": "יצירת וידאו ב-Runway מבוססת משימות. OmniRoute שולח משימות text-to-video או image-to-video, דוגם את /v1/tasks/[id], ומנרמל את פלטי הווידאו המוגמרים בחזרה לתגובה דמוית OpenAI של /v1/videos/generations.", "sambanova": "קרדיט חינם בסך $5 בהרשמה (תוקף ל-30 יום), ללא צורך בכרטיס אשראי", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "יש ליצור מפתח API בכתובת https://seekai.cc, ולאחר מכן להדביק אותו כאן כאסימון Bearer. כתובת ה-URL הבסיסית התואמת ל-OpenAI: https://seekai.cc/v1.", "sap": "גילוי מודלים משתמש ב-/v2/lm/scenarios/foundation-models/models ב-AI_API_URL. בקשות צ'אט משתמשות ב-deploymentUrl/chat/completions ודורשות את AI-Resource-Group.", "sarvam": "Sarvam AI תואם ל-OpenAI ב-/v1. OmniRoute סורק את /v1/models ומנתב את תנועת השיחה ל-/v1/chat/completions. המודלים מותאמים לשפות אינדיות.", "scaleway": "1M טוקנים בחינם לחשבונות חדשים — תואם EU/GDPR (פריז), Qwen3 235B ו-Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "חבר את Claude Code באמצעות תהליך ה-OAuth הקיים.", "cline": "חבר את Cline באמצעות תהליך ה-OAuth הקיים.", "cursor": "חבר את Cursor IDE באמצעות תהליך ה-OAuth הקיים.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "יש לחבר את Cursor באמצעות מפתח API של משתמש (crsr_...) מ-cursor.com/dashboard/api; אין צורך בהפעלת IDE.", "github": "חבר את GitHub Copilot באמצעות תהליך ה-OAuth הקיים.", "gitlab-duo": "יישום OAuth עם הרשאות (scopes) של ai_features + read_user. הגדר את GITLAB_DUO_OAUTH_CLIENT_ID ואופציונלית את GITLAB_DUO_OAUTH_CLIENT_SECRET במופע OmniRoute זה.", "kilocode": "חבר את Kilo Code באמצעות תהליך ה-OAuth הקיים.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "העתק את האישור הנדרש מהדומיין של הספק עצמו. עבור קובצי Cookie, העתק רק את ערך כותרת ה-Cookie והשמט את Cookie:.", "webSessionGuideStep3Manual": "נתיב ידני: פתח את כלי המפתחים של הדפדפן (F12 → Network), רענן את הדף, פתח בקשה מאומתת, והעתק את ערך כותרת ה-Cookie מהכותרות של הבקשה — השאר את הקידומת Cookie: מחוץ.", "webSessionGuideStep4": "הדבק אותו כאן ובדוק את החיבור. אם הוא מפסיק לעבוד, היכנס שוב והחלף אותו בערך חדש.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "ייבוא קובץ .har", + "harImportButtonBusy": "מתבצע ייבוא…", + "harImportButtonHint": "יש לייצא מכרטיסיית Network ב-DevTools לאחר שליחת הודעת צ׳אט אחת לפחות.", + "harImportStatusValid": "יובא — תקף למשך כ-{minutes} דקות.", + "harImportStatusExpiringSoon": "יובא — תקף למשך כ-{minutes} דקות נוספות בלבד.", + "harImportStatusExpired": "יובא, אך תוקף האסימון הזה כבר פג (לפני {minutes} דקות) — יש לייצא קובץ HAR עדכני.", + "harImportStatusUnknownExpiry": "יובא. לא ניתן לקרוא את מועד פקיעת התוקף שלו.", + "harImportErrorNotJson": "הקובץ הזה אינו JSON תקין — האם זה באמת ייצוא מסוג .har?", + "harImportErrorNoEntries": "לא נרשמו רשומות רשת בקובץ HAR הזה.", + "harImportErrorNoChathubUrl": "לא נמצא חיבור לצ'אט של Copilot בקובץ HAR הזה. יש לשלוח לפחות הודעת צ'אט אחת ב-m365.cloud.microsoft לפני הייצוא.", + "harImportErrorUnparsableUrl": "חיבור הצ'אט נמצא, אך לא ניתן לקרוא את כתובת ה-URL שלו.", + "harImportErrorMissingFields": "חיבור הצ'אט נמצא, אך האסימון היה חסר בו.", + "harImportErrorReadFailed": "לא ניתן לקרוא את הקובץ הזה.", + "harImportErrorUnknown": "לא ניתן לחלץ פרטי גישה מקובץ ה-HAR הזה.", "webSessionSecurityHint": "התייחס לזה כאל סיסמה: היא עשויה לגשת לחשבון האינטרנט המחובר שלך עד שתוקפו יפוג או יבוטל.", "webNoAuthGuideTitle": "אין צורך באישור", "webNoAuthGuideBody": "{provider} אינו זקוק למפתח API או לקובץ cookie. שמור את החיבור כדי להשתמש בנקודת הקצה האינטרנטית החינמית שלו.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "קוד הפקודה פג תוקף", "commandCodeConnected": "קוד הפקודה מחובר", "commandCodeConnectionAdded": "חיבור קוד הפקודה נוסף", + "clearConnectionCooldown": "ניקוי תקופת ההמתנה", + "clearConnectionCooldownInProgress": "מתבצע ניקוי…", + "clearConnectionCooldownTitle": "ניקוי תקופת ההמתנה כעת — לשימוש כאשר המכסה כבר התרעננה בשירות המקור", "commandCodeLinkExpired": "קישור קוד הפקודה פג תוקף", "commandCodeOpeningStudio": "פותח את Command Code Studio…", "commandCodePopupBlocked": "חלון קופץ חסום. אנא אפשר חלונות קופצים ונסה שוב את Command Code Connect.", "commandCodeStartFailed": "נכשל בהפעלה של Command Code auth", "connectionDeleted": "החיבור נמחק", "connectionFallback": "חיבור", + "connectionCooldownCleared": "תקופת ההמתנה נוקתה — החיבור צורף מחדש לניתוב", "coolingConnectionsDescription": "החיבורים האלה מתקררים אחרי הבקשה האחרונה. OmniRoute ידלג עליהם עד שיפוג הטיימר — אין צורך לבטל ידנית.", "coolingConnectionsTitle": "כרגע מקרר ({count})", + "failedClearConnectionCooldown": "ניקוי תקופת ההמתנה נכשל", "failedDeleteAlias": "כישלון במחיקת הכינוי", "failedDeleteConnection": "כישלון במחקת החיבור", "failedDistributeProxies": "נכשל בהפצת פרוקסים.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "הגדרות נקודת הקצה של המודל השמור", "searchByModelAria": "חפש לפי דגם", "selectSupportedEndpoint": "בחר לפחות נקודת קצה אחת נתמכת", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "הגדרות", @@ -6527,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "השמט פסקאות המכילות: {items}", "routingSummarizeDropParagraphStartsWith": "השמט פסקאות המתחילות ב-: {items}", "routingSummarizeReplaceText": "החלף \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "ביטוי רגולרי /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "השמט בלוקים המכילים: {items}", "routingSummarizePrependSystemBlock": "הוסף בלוק בהתחלה: \"{text}\"", "routingSummarizeAppendSystemBlock": "הוסף בלוק בסוף: \"{text}\"", @@ -6554,22 +6557,22 @@ "systemPrompt": "הנחית מערכת", "thinkingBudget": "חשיבה תקציב", "proxy": "פרוקסי", - "httpProxy": "HTTP Proxy", + "httpProxy": "פרוקסי HTTP", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "מקטעי פרוקסי", + "requestBodyLimitTitle": "מגבלת גוף הבקשה", + "requestBodyLimitDescription": "הגודל המרבי של מטען API שיתקבל לפני ניתוח גוף הבקשה. נתיבי העלאה ייעודיים שומרים לפחות על המגבלה המובנית שלהם, העומדת על 100 MB.", + "requestBodyLimitInputLabel": "מגבלת גוף הבקשה ב-MB", + "requestBodyLimitEmptyError": "יש להזין מגבלה ב-MB", + "requestBodyLimitWholeNumberError": "יש להשתמש במספר שלם", + "requestBodyLimitMinimumError": "המינימום הוא {min} MB", + "requestBodyLimitMaximumError": "המקסימום הוא {max} MB", + "requestBodyLimitLoadFailed": "טעינת הגדרות מגבלת הבקשה נכשלה", + "requestBodyLimitSaveSuccess": "מגבלת גוף הבקשה נשמרה", + "requestBodyLimitSaveFailed": "שמירת מגבלת גוף הבקשה נכשלה", + "requestBodyLimitSaving": "מתבצעת שמירה...", + "requestBodyLimitSave": "שמירה", + "requestBodyLimitCurrent": "נוכחי: {value}", "cacheConfigLoadFailed": "כישלון בטעינת הגדרות המטמון", "cacheConfigSaveSuccess": "הגדרות המטמון נשמרו", "cacheConfigSaveFailed": "שגיאה בשמירת הגדרות המטמון", @@ -6593,59 +6596,59 @@ "enablePassword": "אפשר סיסמה", "darkMode": "מצב כהה", "lightMode": "מצב אור", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "זיכרון", + "memoryDesc": "זיכרון שיחה מתמשך בין הפעלות", + "memoryEnabled": "הפעלת זיכרון", + "memoryEnabledDesc": "כאשר אפשרות זו מופעלת, OmniRoute ישלב הקשר רלוונטי מהעבר.", "memoryTokenCostWarning": "שים לב: כאשר הזיכרון מופעל, OmniRoute מזריק עד {tokens} אסימונים של הקשר שאוחזר לכל בקשת צ'אט — הדבר מגדיל את השימוש באסימונים ואת העלות. כדי לדלג על ההזרקה עבור בקשה ספציפית, שלח את הכותרת \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "מספר אסימונים מרבי", + "retentionDays": "שמירה", + "recent": "אחרונים", + "recentDesc": "חלון כרונולוגי", + "semantic": "סמנטי", + "semanticDesc": "חיפוש וקטורי", + "hybrid": "משולב", + "hybridDesc": "אחרונים + סמנטי", + "skillsTitle": "מיומנויות", + "skillsDesc": "כלים למודלים", + "skillsEnabled": "הפעלת מיומנויות", + "skillsEnabledDesc": "מאפשר לסוכנים להפעיל פונקציות.", + "skillsComingSoon": "זירת המיומנויות תושק בקרוב.", + "memorySkillsTitle": "זיכרון ומיומנויות", + "memorySkillsDesc": "הקשר ויכולות מתמשכים", + "modelsDevTitle": "מסד נתוני מודלים", + "modelsDevDesc": "סנכרון אוטומטי של תמחור, יכולות ומפרטים מ-models.dev", + "modelsDevEnabled": "הפעלת סנכרון models.dev", + "modelsDevEnabledDesc": "אחזור תמחור, יכולות ומפרטים של מודלים ממסד הנתונים models.dev בקוד פתוח", + "modelsDevInterval": "מרווח זמן בין סנכרונים", + "syncNow": "סנכרון כעת", + "syncing": "מתבצע סנכרון...", + "lastSync": "סנכרון אחרון", + "never": "מעולם לא", "justNow": "רק עכשיו", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "סטטיסטיקות סנכרון", + "modelsDevStatsDesc": "כיסוי הנתונים הנוכחי של models.dev", "providers": "ספקים", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "מודלים עם נתוני תמחור", + "capabilities": "יכולות", + "lastSyncCount": "מספר פריטים בסנכרון האחרון", + "lastSyncFull": "סנכרון מלא אחרון", + "modelsDevInfo": "איך זה עובד", + "modelsDevInfoDesc": "models.dev הוא מסד נתונים בקוד פתוח של מפרטי מודלי AI, המתוחזק על ידי צוות SST/OpenCode. הוא מספק נתוני תמחור, יכולות, מגבלות הקשר ואופנויות עבור יותר מ-4,000 מודלים מיותר מ-100 ספקים.", + "modelsDevInfoResolution": "סדר קביעת התמחור (מהעדיפות הגבוהה ביותר):", + "modelsDevInfoOrder": "דריסת משתמש → models.dev → LiteLLM → ברירת מחדל מקודדת מראש", "systemTheme": "ערכת נושא של המערכת", - "debugToggle": "Enable Debug Mode", + "debugToggle": "הפעלת מצב ניפוי שגיאות", "logToolSourcesToggle": "רישום מקורות כלים ביומן", "logToolSourcesDescription": "הפקת שורת יומן אבחון עבור כל בקשה המסכמת את מספר הכלים ופירוט המקורות (MCP/hosted/client).", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "הצמדת מידע לדף הבית", "homePinnedSectionsDesc": "בחר אילו מדורים להצמיד לחלק העליון של דף הבית.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "מגבלות מכסה של ספקים", + "homeProviderQuotaLimitsDesc": "הצמדת מכל מצב מכסות הספקים (עם הלחצן 'רענון הכול') לראש דף הבית.", + "homeQuickStart": "התחלה מהירה", + "homeQuickStartDesc": "הצגת חלונית ההתחלה המהירה בדף הבית.", + "homeProviderTopology": "טופולוגיית ספקים", + "homeProviderTopologyDesc": "הצגת טופולוגיית הספקים בדף הבית.", "accountEmailVisibility": "ניראות אימייל החשבון", "accountEmailVisibilityDesc": "הצגת כתובות אימייל מלאות של החשבון במסכי הספקים, השילובים, היומנים, המכסות ואזור הניסויים (playground). כבה אפשרות זו כדי למסך אותן כברירת מחדל.", "comboConfigMode": "מצב הגדרת שילובים", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "מרווח רענון", "providerQuotaAutoRefreshIntervalDesc": "באיזו תדירות תצוגת המכסה צריכה להתעדכן, בשניות.", "seconds": "שניות", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "הצגת פריטים בסרגל הצד", "enableCache": "אפשר מטמון", "cacheTTL": "מטמון TTL", "maxCacheSize": "גודל מטמון מקסימלי", "clearCache": "נקה את המטמון", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "המטמון נוקה בהצלחה", + "clearCacheFailed": "ניקוי המטמון נכשל", "cacheHits": "מטמון להיטים", "cacheMisses": "מטמון פספוסים", "hitRate": "שיעור כניסות", "cacheEntries": "ערכים במטמון", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "הגדרות מטמון", + "semanticCache": "מטמון סמנטי", + "maxEntries": "מספר רשומות מרבי", + "ttlMinutes": "TTL (דקות)", "promptCache": "הפקודה מטמון", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "אסטרטגיה", + "preserveClientCache": "שימור מטמון הלקוח", + "enabled": "מופעל", "loading": "Loading...", "saving": "שומר...", - "save": "Save", + "save": "שמירה", "circuitBreaker": "מפסק חשמל", "retryPolicy": "מדיניות נסה שוב", "maxRetries": "מקסימום מנסה שוב", @@ -6690,21 +6693,21 @@ "timeoutMs": "זמן קצוב (ms)", "enableSystemPrompt": "הפעל את בקשת המערכת", "systemPromptText": "טקסט הודעת מערכת", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "השבתה אוטומטית של חשבונות חסומים", + "autoDisableDescription": "סימון לצמיתות של חיבורים לספקים כמושבתים אם הם מחזירים אותות חסימה סופיים מסוימים (למשל HTTP 403 'verify your account'). פעולה זו מסירה אותם מסבב השילובים.", + "autoDisableThreshold": "סף חסימה", + "autoDisableThresholdDesc": "מספר אותות החסימה הרצופים הנדרשים לפני השבתה לצמיתות.", + "autoDisableBannedScope": "החלת השבתה אוטומטית על", + "autoDisableBannedScopeDesc": "חשבונות התחברות (מינויים בתשלום וחשבונות חינמיים) עלולים להינעל על ידי שירות המקור אם OmniRoute ממשיך לנסות לאחר חסימה. מפתחות API משולמים מראש אינם חשופים לסיכון זה — יש להשאיר אותם במאגר כדי שאסטרטגיית המילוי-תחילה תוכל להשתמש במפתח הבא.", + "autoDisableBannedScopeAll": "כל החיבורים", + "autoDisableBannedScopeAllDesc": "השבתת כל חיבור שמחזיר אות חסימה לצמיתות, כולל מפתחות API משולמים מראש.", + "autoDisableBannedScopeSubscription": "חשבונות התחברות / מינוי בלבד", + "autoDisableBannedScopeSubscriptionDesc": "השבתת חשבונות OAuth, קובצי Cookie, הפעלות והתחברות דרך האינטרנט (בתשלום או בחינם). מפתחות API משולמים מראש יישארו פעילים כדי שהניתוב יוכל לעבור לחלופה.", "customBannedSignals": "מילות מפתח חסומות", "customBannedSignalsDesc": "מילות מפתח נוספות שמפעילות זיהוי לחסימה קבועה של החשבון. מילות מפתח מובנות חלות תמיד.", "customBannedSignalsPlaceholder": "לדוגמה: api key revoked", "noCustomBannedSignals": "אין מילות מפתח מותאמות אישית. רק מילות המפתח המובנות פעילות.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "מבנה שרידות", "resilienceStructureDesc": "דף זה מגדיר התנהגות בלבד. מצב מפסק חי מוצג בדף הבריאות. ניסיון חוזר ספציפי לשילוב ובקרת חריץ עגול-רובין נשארים בהגדרות המשולבות.", "enableThinking": "אפשר חשיבה", "maxThinkingTokens": "מקס חשיבה אסימונים", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "הצג את פקדי המשפך בקנה מידה זנבי בדף נקודת הקצה.", "showNgrokTunnel": "מנהרת ngrok", "showNgrokTunnelDesc": "הצג פקדי מנהרת ngrok בדף נקודת הקצה.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "הסתרת פריטים בסרגל הצד", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "הכול", + "presetAllDesc": "הצגת הכול", + "presetEssentials": "כלים חיוניים", + "presetEssentialsDesc": "מסלול למתחילים - כלים מתקדמים נשארים ניתנים לחיפוש", + "presetMinimal": "מינימלי", + "presetMinimalDesc": "דפי ליבה בלבד", + "presetDeveloper": "פיתוח", + "presetDeveloperDesc": "כלי פיתוח ופרוקסי", + "presetAdmin": "ניהול", + "presetAdminDesc": "ניטור וביקורת", + "settingsSidebarTitle": "התאמה אישית של סרגל הצד", + "settingsSidebarDesc": "בחרו אילו פריטים יוצגו בסרגל הצד. האפשרות 'כלים חיוניים' משאירה את הכלים המתקדמים ניתנים לחיפוש.", "hideHealthLogs": "הסתר יומני בדיקת בריאות", "hideHealthLogsDesc": "כאשר מופעל, דחק הודעות [HealthCheck] במסוף השרת", "themeAccent": "צבע ערכת נושא", @@ -6780,19 +6783,19 @@ "themeOrange": "כתום", "themeCyan": "ציאן", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "התאמה אישית של שם היישום והלוגו", + "appName": "שם היישום", + "appNameDesc": "השם שיוצג בסרגל הצד ובכרטיסיית הדפדפן", + "customLogo": "כתובת URL של לוגו מותאם אישית", + "customLogoDesc": "כתובת URL לתמונת הלוגו המותאמת אישית", + "uploadLogo": "העלאת לוגו", + "resetLogo": "איפוס לברירת המחדל", + "logoPreview": "תצוגה מקדימה", + "customFavicon": "סמל מועדפים בדפדפן", + "customFaviconDesc": "כתובת URL לסמל המועדפים המותאם אישית (מוצג בכרטיסיית הדפדפן)", + "uploadFavicon": "העלאת סמל מועדפים", + "resetFavicon": "איפוס סמל המועדפים", + "faviconPreview": "תצוגה מקדימה של סמל המועדפים", "logoFileTooLarge": "קובץ הלוגו חייב להיות קטן מ-500KB", "faviconFileTooLarge": "קובץ ה-Favicon חייב להיות קטן מ-50KB", "invalidLogoFileType": "סוג קובץ לא חוקי. אנא העלה PNG, JPG, SVG, GIF או WebP.", @@ -6896,21 +6899,21 @@ "refreshInterval": "מרווח רענון", "ruleModeDescription": "תיאור מצב חוק" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "בדיקת תקינות מרוכזת", + "bulkHealthcheckDesc": "בדיקת כל שרתי ה-proxy שהוגדרו מול כתובת URL יעד כדי לגלות אילו מהם פועלים.", + "healthcheckTesting": "מתבצעת בדיקה...", + "healthcheckAll": "בדיקת התקינות של כולם", + "healthcheckFailed": "הפעלת בדיקת התקינות נכשלה", + "healthcheckTestingAll": "מתבצעת בדיקה של כל שרתי ה-proxy במקביל...", + "healthcheckTotal": "סה״כ", + "healthcheckWorking": "תקינים", + "healthcheckFailedLabel": "נכשלו", + "healthcheckStatus": "מצב", + "healthcheckProxyUrl": "כתובת URL של ה-proxy", + "healthcheckLatency": "זמן השהיה", "proxyDocumentationScopeTitle": "פענוח טווח פרוקסי", "proxyDocumentationScopeDescBefore": "OmniRoute מפענח את הפרוקסי היוצא לפי סדר העדיפויות הבא:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "שילוב → חשבון → ספק → גלובלי", "proxyDocumentationScopeDescAfter": ". הטווח הספציפי ביותר מנצח.", "proxyDocumentationAddTitle": "הוספת פרוקסי מותאם אישית", "proxyDocumentationAddDescBefore": "עבור אל", @@ -6945,7 +6948,7 @@ "proxyFreePoolAddSelected": "הוסף את שנבחרו למאגר", "proxyFreePoolAddVisible": "הוסף את כל הגלויים למאגר", "proxyFreePoolSource": "מקור", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "מארח:יציאה", "proxyFreePoolType": "סוג", "proxyFreePoolCountry": "מדינה", "proxyFreePoolQuality": "איכות", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} ספק(ים) חסומים מ/מודלים", "blockProviderTitle": "חסום {provider}", "unblockProviderTitle": "בטל את החסימה של {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "התאמת טביעת אצבע של CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "טביעת אצבע של CLI פעילה אצל {count} ספקים", + "enableFingerprintTitle": "הפעלת טביעת אצבע עבור {provider}", + "disableFingerprintTitle": "השבתת טביעת אצבע עבור {provider}", "systemTransforms": "צינור טרנספורמציה חסימת מערכת", "systemTransformsDesc": "צינור של טרנספורמציות שהוזמנו לפי ספק שהוחל על גוף הבקשה לפני ההעברה. תומך בכל מזהה ספק.", "systemTransformsAddProvider": "הוסף ספק", @@ -7065,12 +7068,12 @@ "leastUsedDesc": "בחר חשבון שנעשה בו שימוש לפחות לאחרונה", "costOpt": "אופטימיזציית עלות", "costOptDesc": "העדיפו את החשבון הזול ביותר הזמין", - "resetAware": "Reset-Aware RR", + "resetAware": "RR מודע לאיפוס", "resetAwareDesc": "העדיפו חשבונות עם מכסה תקינה שנותרה ואיפוסים קרובים יותר", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "משוקלל לפי מכסה", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "אקראיות קשיחה", + "strictRandomDesc": "ערבוב החפיסה — שימוש בכל חשבון פעם אחת לפני ערבוב מחדש", "stickyLimit": "גבול דביק", "stickyLimitDesc": "שיחות לכל חשבון לפני המעבר", "routingStrategyTitle": "אסטרטגיית ניתוב", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "עקיפת אסטרטגיית החשבון הגלובלית עבור ספק זה (תאימות ל-9router).", "providerRoutingStrategy": "אסטרטגיית חשבון", "providerRoutingInheritGlobal": "ירש את ברירת המחדל הגלובלית", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "סף בדיקה מקדימה של המכסה", + "quotaPreflightSubtitle": "דילוג על חשבונות שהמכסה שלהם אזלה לפני שליחת הבקשה לשירות במעלה הזרם", + "quotaPreflightEnable": "הפעלת בדיקה מקדימה של המכסה", + "quotaPreflightEnableDesc": "לפני כל בקשה, יש לבדוק את המכסה שנותרה בחשבון (בחלונות של 5 שעות / שבוע / חודש). חשבונות שנמצאים בסף או מתחתיו ידולגו ללא קריאה לספק במעלה הזרם. ספים לכל חלון שהוגדרו בדף מכסת הספק תמיד גוברים על ברירת המחדל שכאן.", + "quotaPreflightCutoff": "סף גלובלי (אחוז מינימלי שנותר)", + "quotaPreflightCutoffDesc": "יש להפסיק להשתמש בחשבון כאשר המכסה שנותרה בו יורדת לאחוז זה או מתחתיו, עבור כל חלון שאין לו סף משלו. תואם לעמודות אחוז המכסה שנותרה בדף מכסת הספק.", + "quotaPreflightWindowsHint": "חלונות עם סף משלהם לכל חלון או לכל ספק (המוגדר בחלונית הסף בדף מכסת הספק) אינם מושפעים מברירת מחדל זו.", + "quotaPreflightLoadFailed": "לא ניתן לטעון את הגדרות הבדיקה המקדימה של המכסה.", "modelAliases": "כינויי דגם", "modelAliasesTitle": "כינויי מודלים", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "מיפוי מחדש של שמות מודלים באמצעות התאמות מדויקות או תבניות עם תווים כלליים.", "addCustomAlias": "הוסף כינוי מותאם אישית", "deprecatedModelId": "מזהה מודל מיושן", "newModelId": "מזהה מודל חדש", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "אסטרטגיה משולבת", "priority": "עדיפות", "weighted": "משוקלל", - "contextRelay": "Context Relay", + "contextRelay": "ממסר הקשר", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "מקסימום מנסה שוב", "retryDelayLabel": "נסה שוב עיכוב (מילישניות)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "במקביל / דגם", "queueTimeout": "זמן קצוב לתור (מילישניות)", "queueDepth": "עומק תור", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "סף העברה", + "contextRelayMaxMessages": "מספר הודעות מרבי לסיכום", + "contextRelaySummaryModel": "מודל סיכום", + "contextRelayProviderNote": "ממסר ההקשר יוצר כעת העברות עבור חשבונות Codex ומשתמש בערכים אלה כברירות מחדל גלובליות עבור שילובים חדשים או כאלה שטרם הוגדרו.", "providerProfiles": "פרופילי ספקים", "providerProfilesDesc": "הגדרות חוסן נפרדות עבור ספקי OAuth (מבוסס הפעלה) ומפתח API (מדוד). לספקי OAuth יש ספים מחמירים יותר בגלל מגבלות תעריפים נמוכות יותר.", "oauthProviders": "ספקי OAuth", @@ -7231,7 +7234,7 @@ "rateLimitingDesc": "ספקי מפתחות API מוגבלים אוטומטית בתעריף עם ברירות מחדל בטוחות. מגבלות נלמדות מכותרות תגובות ומתאימות לאורך זמן.", "defaultSafetyNet": "רשת בטיחות ברירת מחדל", "rpm": "סל\"ד", - "minGap": "Min Gap", + "minGap": "מרווח מינימלי", "maxConcurrent": "מקסימום במקביל", "activeLimiters": "מגבילים פעילים", "noActiveLimiters": "עדיין אין מגבילי תעריפים פעילים.", @@ -7299,7 +7302,7 @@ "daysAgo": "לפני {count}d", "backupReasonManual": "ידני", "backupReasonPreRestore": "שחזור מראש", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# חיבור} other {# חיבורים}}", "noChangesSinceBackup": "אין שינויים מאז הגיבוי האחרון", "backupFailed": "הגיבוי נכשל", "restoreFailed": "השחזור נכשל", @@ -7329,7 +7332,7 @@ "configured": "מוגדר", "none": "ללא", "modelOverrideValuePlaceholder": "ערך מספרי", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "ערכים באנגלית המופרדים בפסיקים, למשל low, medium, high", "addKeyValue": "הוסף מפתח-ערך", "noModelOverrides": "לא הוגדרו דריסות עבור מודל זה.", "modelOverrideLoadFailed": "טעינת דריסות המודל נכשלה", @@ -7378,25 +7381,25 @@ "editPricing": "ערוך תמחור", "viewFullDetails": "צפה בפרטים המלאים", "themeCoral": "אלמוג", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "ניתוב מסתגל לפי נפח", + "adaptiveVolumeRoutingDesc": "התאמה דינמית של מספר החיבורים בהתאם לנפח המטען ולעומס התפוקה.", + "lkgpToggleTitle": "הספק התקין האחרון הידוע (LKGP)", + "lkgpToggleDesc": "כאשר האפשרות מופעלת, הנתב זוכר איזה ספק סיפק לאחרונה תגובה מוצלחת ומנסה אותו ראשון בבקשות הבאות.", "echoRequestedModelTitle": "הדהוד שם המודל המבוקש בתגובות", "echoRequestedModelDesc": "כאשר אפשרות זו פעילה, שדה ה-`model` בתגובה משקף את הכינוי או את שם השילוב שהלקוח ביקש במקום את שם מודל המקור. פותר בעיות עם לקוחות קפדניים (למשל Claude Desktop) שדוחים תגובה שבה המודל אינו תואם לבקשה.", "webSearchRouteTitle": "ניתוב חיפוש באינטרנט", "webSearchRouteDesc": "כאשר בקשה כוללת כלי `web_search` מובנה, נתב את כל הבקשה למודל זה במקום לברירת המחדל — שימושי עבור ספקים שאינם מיישמים את כלי השרת `web_search` של Anthropic. השאר ריק כדי להשבית.", "webSearchRoutePlaceholder": "חפש או בחר מודל…", "paidModelPatternWarning": "תבנית זו תואמת למודלים בתשלום בלבד — הפעל מודלים בתשלום או התאם את התבנית.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "ניקוי המטמון של LKGP", + "lkgpCacheCleared": "המטמון של LKGP נוקה בהצלחה", + "lkgpCacheClearFailed": "ניקוי המטמון של LKGP נכשל", + "days": "ימים", + "lkgp": "מצב LKGP", + "lkgpDesc": "הספק התקין האחרון הידוע (שרידות צפויה)", + "maintenance": "תחזוקה", + "purgeExpiredLogs": "מחיקת יומני רישום שפג תוקפם", + "purgeLogsFailed": "מחיקת יומני הרישום נכשלה", "logsDeleted": "{count, plural, =0 {לא נמחקו יומנים שפג תוקפם} one {נמחק יומן # שפג תוקפו} other {נמחקו # יומנים שפג תוקפם}}", "resetUsageData": "איפוס נתוני שימוש", "resetUsageDataDesc": "בחר כמה זמן אחורה ברצונך למחוק נתוני שימוש, יומני בקשות ונתוני אנליטיקה. הגדרות ספק, חיבורים, מפתחות API, שילובים והגדרות יישמרו. פעולה זו אינה ניתנת לביטול.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "איפוס נתוני השימוש נכשל", "reset": "אפס", "resetting": "מאפס...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "מותאם להקשר", + "contextOptDesc": "ניתוב המבוסס על דרישות חלון ההקשר ואורך השיחה", + "cacheOpt": "מותאם למטמון", + "cacheOptDesc": "שמירת אותה קידומת פרומפט הניתנת לשימוש חוזר באותו חשבון ספק", + "priorityDesc": "נסיגה סדרתית — ניסיון עם ספק 1 תחילה, לאחר מכן ספק 2 וכן הלאה", + "weightedDesc": "חלוקת התעבורה בין ספקים לפי משקלים באחוזים", + "modelRoutingTitle": "כללי ניתוב מודלים", + "modelRoutingDesc": "ניתוב אוטומטי של מודלים לשילובים ספציפיים באמצעות תבניות glob", + "addRule": "הוספת כלל", + "routeToCombo": "ניתוב לשילוב", + "selectCombo": "בחירת שילוב...", + "priorityHint": "ערך גבוה יותר = נבדק ראשון. יש להשתמש ב-10 ומעלה עבור תבניות ספציפיות.", + "patternHint": "יש להשתמש ב-* עבור מספר כלשהו של תווים וב-? עבור תו יחיד. ללא תלות ברישיות.", + "noRoutingRules": "לא הוגדרו כללי ניתוב. כברירת מחדל, בקשות משתמשות בשילוב הגלובלי.", + "routingRuleHint": "הוסיפו כלל כגון claude-opus* -> frontier-combo כדי לנתב בקשות באופן אוטומטי.", + "deleteRoutingRule": "למחוק את כלל הניתוב הזה של המודל?", + "exactMatchMode": "התאמה מדויקת", + "wildcardPatternMode": "תבנית עם תווים כלליים", + "exactMatchModeDesc": "השתמשו בכינויים מדויקים עבור מזהי מודלים שהוצאו משימוש או ששמם השתנה.", + "wildcardPatternModeDesc": "השתמשו בכינויים עם התווים הכלליים * ו-? כאשר יש למפות משפחת מודלים ליעד אחד.", + "noExactAliasesConfigured": "לא הוגדרו כינויים בהתאמה מדויקת.", + "wildcardRulesTitle": "כללי תווים כלליים", + "noWildcardAliasesConfigured": "לא הוגדרו כינויים עם תווים כלליים.", + "overview": "סקירה כללית", + "unknownError": "שגיאה לא ידועה", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "רשימה לבנה", + "syncDisabled": "הסנכרון מושבת", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "הסנכרון מופעל", + "blacklist": "רשימה שחורה", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "מודלים מסונכרנים", + "budget": "תקציב", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "איפוס התמחור נכשל: {reason}", - "tab": "Tab", + "tab": "לשונית", "pricingSavedProvider": "התמחור נשמר עבור {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "חיסכון בתמחור נכשל: {reason}", "pricingResetProvider": "איפוס התמחור עבור {provider}", - "nextSync": "Next Sync", + "nextSync": "הסנכרון הבא", "pricingSyncFailedWithReason": "סנכרון התמחור נכשל: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "ניקוי התמחור המסונכרן", + "compressionTitle": "דחיסת הנחיות", + "compressionDesc": "צמצום השימוש בטוקנים באמצעות דחיסת הנחיות לפני שליחתן לספקים", "compressionGuidanceFullGuideLink": "מדריך דחיסה מלא", "compressionGuidanceShow": "פרטים", "compressionGuidanceHide": "הסתר פרטים", @@ -7485,16 +7488,16 @@ "tokenSaverInputCompressionDesc": "שכתב היסטוריית צ'אט מתאימה תוך שמירה על קוד, כתובות URL וכוונת המשתמש.", "tokenSaverFineTunePrefix": "כוונן עדין כל מנוע ב-", "tokenSaverFineTuneSuffix": "או שלב מנועים לכל בקשה ב-", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", - "compressionModeUltra": "Ultra", + "compressionMode": "מצב דחיסה", + "compressionModeOff": "כבוי", + "compressionModeOffDesc": "לא מתבצעת דחיסה", + "compressionModeLite": "קלה", + "compressionModeLiteDesc": "צמצום רווחים ושורות ריקות", + "compressionModeStandard": "רגילה (Caveman)", + "compressionModeStandardDesc": "דחיסה מבוססת-כללים עם יותר מ-30 תבניות, תוך שמירה על בלוקי קוד וכתובות URL", + "compressionModeAggressive": "אגרסיבית", + "compressionModeAggressiveDesc": "סיכום + דחיסת תוצאות כלים + יישון הדרגתי לחיסכון מרבי", + "compressionModeUltra": "אולטרה", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "תצורת מנוע אגרסיבי", "compressionAggressiveConfigDesc": "כוונן את הסיכום, דחיסת הכלים וספי ההזדקנות", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "מספר ההודעות האחרונות שנשמרו בכל שכבת הזדקנות (גבוהה יותר = נשמרת יותר)", "compressionToolStrategies": "אסטרטגיות תוצאות של כלי", "compressionToolStrategiesDesc": "החלף אסטרטגיות דחיסה עבור סוגי תוצאות כלים שונים", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "הגדרות כלליות", + "compressionAutoTrigger": "סף הפעלה אוטומטית", + "compressionCacheTTL": "TTL של המטמון", + "compressionPreserveSystem": "שמירת הנחיית המערכת", "compressionPreserveSystemAlways": "תמיד", "compressionPreserveSystemWhenNoCache": "כשאין מטמון", "compressionPreserveSystemNever": "אף פעם", @@ -7532,87 +7535,87 @@ "compressionExclusionsSaved": "שמור", "compressionExclusionsCount": "{count, plural, one {# הוצאה} other {# הוצאות}} מוגדרות", "compressionExclusionsEmpty": "לא הוגדרו исключения — כל מודל/נקודת קצה זכאים לדחיסה (התנהגות ברירת מחדל).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "הגדרת מנוע Caveman", + "compressionCavemanConfigDesc": "כוונון עדין של מנוע הדחיסה מבוסס-הכללים", "compressionCavemanPanelHint": "מצב ההפעלה/כיבוי והרמה שלו מוגדרים בלוח:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "דחיסת תפקידי הודעות", + "compressionRoleUser": "משתמש", + "compressionRoleAssistant": "עוזר", + "compressionRoleSystem": "מערכת", + "compressionMinLength": "אורך הודעה מינימלי", + "compressionSkipRules": "כללים לדילוג על דחיסה", + "compressionSkipRulesDesc": "לחצו על כללים כדי לדלג עליהם במהלך הדחיסה", + "compressionPreservePatterns": "תבניות לשימור", + "compressionPreservePatternsDesc": "תבניות Regex שלעולם אינן נדחסות (אחת בכל שורה)", + "compressionLogTitle": "יומן דחיסה", + "compressionLogEmpty": "טרם נדחסו בקשות. נתוני הדחיסה יופיעו כאן לאחר עיבוד בקשות כאשר הדחיסה מופעלת.", "minutes": "דקות", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "סינון פלט כלים המודע לפקודות", + "compressionModeCodexResponses": "פלט הכלי Responses", + "compressionModeCodexResponsesDesc": "דחיסה שמרנית של פלטי מעטפת, תיקונים, חיפוש, בנייה ו-JSON מתאימים", + "compressionModeStacked": "משולב", + "compressionModeStackedDesc": "סינון פלט כלים באמצעות RTK ולאחריו דחיסת הודעות באמצעות Caveman", + "qdrantTitle": "Qdrant (זיכרון וקטורי)", + "qdrantDesc": "אופציונלי. יוצר אינדקס לזיכרונות סמנטיים במסד נתונים וקטורי חיצוני לצורך אחזור מהיר יותר.", + "qdrantStatusActive": "פעיל", + "qdrantStatusError": "שגיאה", + "qdrantStatusDisabled": "מושבת", + "qdrantEnable": "הפעלת Qdrant", + "qdrantEnableDesc": "כאשר אפשרות זו מופעלת, האסטרטגיה הסמנטית/היברידית יכולה להשתמש ב-Qdrant לאחזור זיכרונות.", + "qdrantTesting": "מתבצעת בדיקה...", + "qdrantTestConnection": "בדיקת חיבור", + "qdrantSaved": "התצורה נשמרה", + "qdrantSaveError": "שמירת התצורה נכשלה", + "qdrantHostHint": "ללא יציאה. לדוגמה: 127.0.0.1 או http://qdrant", + "qdrantPort": "יציאה", + "qdrantPortHint": "ברירת המחדל של Qdrant: 6333", + "qdrantCollectionHint": "המיקום שבו יישמרו נקודות הזיכרון.", + "qdrantEmbeddingModel": "מודל הטמעה", + "qdrantHelpTitle": "עזרה להגדרה מהירה", + "qdrantHelpQuickTitle": "הגדרה מהירה (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. מארח: כתובת IP/URL של Qdrant, יציאה: 6333, אוסף: omniroute_memory.", + "qdrantHelpStep2": "2. אם משתמשים ב-nvidia/llama-nemotron-embed-vl-1b-v2:free, יש להשתמש בממד אוסף 2048.", + "qdrantHelpStep3": "3. שדה המודל: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. שמרו, בדקו את החיבור ולאחר מכן בדקו את החיפוש.", + "qdrantEmbeddingQuickSelect": "בחירה מהירה מתוך המודלים שהתגלו...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "פורמט: provider/model. יש להגדיר את פרטי הגישה של הספק.", + "qdrantApiKeyPlaceholderKeep": "(יש להשאיר ריק כדי לשמור על המפתח הנוכחי)", + "qdrantApiKeyPlaceholderOptional": "(יש להשאיר ריק אם אינו בשימוש)", + "qdrantSaveHint": "טיפ: ערכו את host/port/collection/model ולחצו על שמירה. מפתח API הוא אופציונלי.", + "qdrantSearchTestTitle": "בדיקת חיפוש", + "qdrantSearchTestDesc": "יוצר הטמעה ומבצע חיפוש ב-Qdrant.", + "qdrantSearchPlaceholder": "לדוגמה: העדפות משתמש, היסטוריה וכו׳", + "qdrantNoResults": "אין תוצאות (או ש-Qdrant אינו מוגדר).", + "qdrantCleanupTitle": "שמירה וניקוי", + "qdrantCleanupDesc": "מסיר נקודות שפג תוקפן ונקודות ישנות על סמך", + "searching": "מתבצע חיפוש...", + "cleaning": "מתבצע ניקוי...", + "cleanNow": "נקה עכשיו", "optional": "אופציונלי", "current": "נוכחי", "remove": "הסר", "search": "חפש", - "oneproxyTitle": "1proxy Free Proxy Marketplace", + "oneproxyTitle": "שוק הפרוקסי החינמי של 1proxy", "oneproxyTotalProxies": "סה\"כ פרוקסי", "oneproxyAvgQuality": "איכות ממוצעת", "resilienceScope": "היקף:", "resilienceTrigger": "טריגר:", "resilienceEffect": "השפעה:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "תור וקצב בקשות", + "resilienceAutoEnableApiKeyProviders": "הפעלה אוטומטית עבור ספקים המשתמשים במפתח API", + "resilienceRequestsPerMinute": "בקשות לדקה", + "resilienceMinTimeBetweenRequests": "זמן מינימלי בין בקשות", + "resilienceConcurrentRequests": "בקשות בו-זמניות", + "resilienceConnectionScopeConcurrentRequests": "בקשות בו-זמניות לכל חיבור/תחום מכסה", + "resilienceGlobalConcurrentRequests": "בקשות גלובליות בו-זמניות לשירותים במעלה הזרם (0 = מושבת)", "resilienceMaxQueueWaitTime": "זמן המתנה מקסימלי בתור", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "זמן המתנה בסיסי", + "resilienceUseUpstreamRetryHints": "שימוש בהנחיות הניסיון החוזר של השירות במעלה הזרם", + "resilienceDefaultPerProvider": "ברירת מחדל (לפי ספק)", + "resilienceAlwaysOn": "מופעל תמיד", + "resilienceAlwaysOff": "מושבת תמיד", "routingRemoveEntry": "הסר ערך", "routingNeedlesSubstrings": "מחטים (מחרוזות משנה להתאמה)", "routingCaseSensitive": "רגיש לאותיות גדולות", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "נשלח למודל הראייה לפני שהתיאור שחולץ מוזרק בחזרה לבקשה המקורית.", "visionBridgeTimeoutMs": "זמן קצוב (ms)", "visionBridgeMaxImagesPerRequest": "מקסימום תמונות לכל בקשה", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "מספר מרבי של שלבי השהיה הדרגתית", + "resilienceProviderBreakerTitle": "מנגנון ניתוק לכל ספק", + "resilienceFailureThreshold": "סף כשלים", + "resilienceDegradationThreshold": "סף ירידה בביצועים", "resilienceResetTimeout": "אפס פסק זמן", "resilienceFailureThresholdLabel": "סף כשל", "resilienceResetTimeoutLabel": "אפס פסק זמן", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "זמן המתנה לחיבור", "resilienceUseUpstreamRetryHintsLabel": "השתמש ברמזים לניסיון חוזר במעלה הזרם", "resilienceUseUpstream429BreakerLabel": "השתמש ברמזים 429 במעלה הזרם (מפסק)", "resilienceMaxBackoffStepsLabel": "מקסימום צעדי נסיגה", "resilienceYes": "כן", "resilienceNo": "לא", - "resilienceDefault": "Default", + "resilienceDefault": "ברירת מחדל", "storageDatabaseBackupRetention": "שימור גיבוי מסד נתונים", "storageDatabaseBackups": "גיבויי מסד נתונים", "storageBackupRetentionDescription": "גיבויי SQLite אוטומטיים מאוחסנים ב-", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "JSON מיושן יובא בהצלחה!", "jsonImportFailed": "ייבוא JSON נכשל", "jsonImportError": "שגיאה במהלך ייבוא JSON", + "jsonImportAuthRequired": "נדרש אימות כדי לייבא תצורת JSON ישנה. יש להתחבר או להשלים תחילה את ההגדרה.", + "databaseSettingsAuthRequiredTitle": "נדרש אימות", + "databaseSettingsAuthRequiredBody": "הגדרות מסד הנתונים וייבוא JSON זמינים רק למנהל מערכת מאומת. יש להתחבר או להשלים את ההגדרה כדי להציג ולערוך אותם.", + "databaseSettingsAuthRequiredCta": "התחברות", "storagePurgeData": "טיהור נתונים", "storagePurgeDataDesc": "מחק מיד את כל הרשומות מבלי להחיל בדיקות שמירה. השתמש בזהירות.", "storageRetentionCleanup": "הגדרות שמירה", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "מצב: {mode}", "compressionAdaptiveOff": "תקציב הקשר אדפטיבי: כבוי (טריגר אוטומטי מיושן)", "compressionAdaptiveTarget": "אדפטיבי ({mode}, מדיניות: {policy}) — יעד ≈ {target, number} טוקנים (עבור חלון של {contextLimit, number} טוקנים)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "תקציב הקשר מסתגל", + "compressionAdaptiveModeOff": "כבוי (הפעלה אוטומטית מהדור הקודם)", + "compressionAdaptiveModeFloor": "סף תחתון (מבטיח תמיד התאמה)", + "compressionAdaptiveModeReplace": "החלפת הפעלה אוטומטית", + "compressionAdaptivePolicy": "מדיניות תקציב", + "compressionAdaptivePolicyReserve": "שמירת מקום לפלט", + "compressionAdaptivePolicyPercentage": "אחוז מהחלון", + "compressionAdaptivePolicyAbsolute": "תקציב טוקנים מוחלט", "compressionOutputStylesDescription": "הזרקת הנחיות לעיצוב תגובה מבלי לשכתב את פלט הספק. ניתן לשלב באופן חופשי.", "mcpAccessibilityDescription": "מגביל את הטווח של פלטי כלי MCP (אחסון נפרד).", "compressionStylesTileSummary": "{tokens, number} טוקנים נחסכו · {runs, plural, one {הרצה אחת עוצבה} other {# הרצות עוצבו}}", @@ -7866,8 +7873,8 @@ "description": "סינון פלט פקודות." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "פלט הכלי Responses", + "description": "דחיסה שמרנית עבור פלטים נתמכים של הכלי Responses." }, "headroom": { "label": "מרווח ביטחון", @@ -7908,12 +7915,12 @@ "description": "סולם YAGNI: השינוי העובד הקטן ביותר, ללא הפשטות שלא נדרשו." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (מפתח בכיר עצלן)", + "description": "משמעת של מפתח בכיר עצלן: לטפס בסולם YAGNI, לתקן את שורש הבעיה ולבצע את השינוי המזערי שעובד." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "יש לי ADHD (פעולה תחילה)", + "description": "פלט בגישת פעולה תחילה: הפעולה הבאה מופיעה ראשונה, השלבים ממוספרים, יש צעד הבא קונקרטי אחד וללא הקדמה." }, "terse-cjk": { "label": "CJK תמציתי (文言)", @@ -7924,13 +7931,21 @@ "resilienceEnableServerSideWait": "אפשר המתנה בצד השרת", "resilienceMaximumRetries": "מקסימום ניסיונות חוזרים", "resilienceMaximumWaitPerRetry": "המתנה מקסימלית לכל ניסיון חוזר", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "שוק SkillsMP", "memorySkillsFailedToSave": "השמירה נכשלה", "memorySkillsApiKey": "מפתח API", "memorySkillsActiveSkillsProvider": "ספק כישורים פעילים", - "cliproxyapiFallback": "CLIProxyAPI Fallback", + "cliproxyapiFallback": "גיבוי של CLIProxyAPI", "cliproxyapiEnableFallback": "אפשר CLIProxyAPI Fallback", "cliproxyapiUrl": "כתובת URL של CLIProxyAPI", + "headroomProxyTitle": "פרוקסי Headroom", + "headroomProxyDesc": "כתובת ה-URL של פרוקסי Headroom האופציונלי לחיסכון בטוקנים. ערך ריק משתמש ב-HEADROOM_URL או ב-http://localhost:8787.", + "headroomProxyUrl": "כתובת ה-URL של Headroom", + "headroomProxyUrlHint": "אפשר להפעיל כתובות URL של loopback מדף זה. כתובות URL חיצוניות נבדקות בלבד.", + "headroomProxySave": "שמירה", + "headroomProxyStart": "הפעלה", + "headroomProxyStop": "עצירה", + "headroomProxyExternalHint": "כתובת URL זו אינה loopback, ולכן OmniRoute לא יפעיל את ה-CLI המקומי.", "cliproxyapiStatus": "סטטוס CLIProxyAPI", "cliproxyapiNotDetected": "לא זוהה", "cliproxyapiImportAuthTitle": "ייבוא חשבונות מ-CLIProxyAPI", @@ -7985,15 +8000,15 @@ "responsesStateModePreserve": "שמור", "responsesStateHint": "Auto מסיר את previous_response_id אלא אם חיבור מאפשר במפורש אחסון של OpenAI Responses. האפשרות Strip היא הבטוחה ביותר עבור לקוחות חסרי מצב (stateless) כגון VS Code Custom Endpoint; ההקשר תלוי אז בלקוח ששולח היסטוריה מלאה.", "responsesStateSaveError": "עדכון הגדרת מצב Responses נכשל", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "שכבת Codex Fast", "codexFastTierDesc": "הזרקת שירות_tier=עדיפות גלובלית לבקשות OpenAI Codex.", "codexFastTierHint": "כאשר היא מופעלת, OmniRoute מוסיף service_tier=priorite לבקשות Codex יוצאות עבור חיבורים שעדיין לא מציינים רמה. שכבת עדיפות דורשת מפתח OpenAI Enterprise API או נתיב ChatGPT-auth Codex; סוגי מפתחות אחרים יקבלו שגיאה הקשורה לשכבות מ-OpenAI. הגדרות לכל חיבור בדף ספק Codex עדיפות.", "codexFastTierSaveError": "נכשל עדכון ההגדרה של Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "פינג אוטומטי למכסת Codex", + "codexAutoPingDesc": "הצטרפות לפי חיבור: שולח בקשה זעירה מיד לאחר איפוס חלון ההפעלה של Codex, כדי שלא יהיה במצב קר כשתזדקקו לו.", + "codexAutoPingWarning": "צורך כמות קטנה ממכסת Codex האמיתית בכל פינג. מושבת כברירת מחדל — יש להפעיל רק עבור חיבורים שאתם מסתמכים עליהם באופן פעיל.", + "codexAutoPingSaveError": "עדכון הגדרת הפינג האוטומטי של Codex נכשל", + "codexAutoPingToggleAria": "הפעלה או השבתה של פינג אוטומטי למכסת Codex עבור {connection}", "codexFastTierTierLabel": "רמת שירות", "codexFastTierTierPriority": "עדיפות", "codexFastTierTierFlex": "Flex", @@ -8022,7 +8037,7 @@ "LOCAL_ONLY": "מקומי בלבד", "ALWAYS_PROTECTED": "מוגן תמיד", "MANAGEMENT": "ניהול", - "CLIENT_API": "Client API", + "CLIENT_API": "API לקוח", "PUBLIC": "ציבורי" }, "bypass": { @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "מרווח בדיקה גלובלי", "resilienceCredentialHealthEveryMinutes": "כל {minutes} דק׳", "resilienceCredentialHealthHint": "0 מכבה את סריקת הרקע (מקסימום 1440 דק׳ = 24 שע׳). חיבורים עם ערך בדיקת תקינות משלהם מתעלמים מברירת המחדל הגלובלית; 0 בחיבור מסוים מוציא אותו גם כשהסריקה הגלובלית פועלת.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "מופעל תמיד עבור {provider} — נדרש לבטיחות חשבון OAuth; לא ניתן להשביתו.", + "forcedFingerprintBadge": "נדרש", "sessionAffinityTitle": "שיוך הפעלה (Session affinity)", "sessionAffinityDesc": "שומר שיחה אחת באותו חשבון למשך מספר שניות זה, עבור כל ספק. 0 משבית זאת.", "sessionAffinityTtl": "TTL של שיוך (שניות)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "מספר שלבי ההשהיה המקסימלי לפני שמשך הצינון מפסיק לגדול. ברוב התצורות מגיעים קודם למגבלת ה-Max Cooldown, מה שהופך הגדרה זו לתקרת בטיחות למקרים שבהם Max Cooldown מוגדל.", "disableSessionStickiness": "השבתת הצמדת הפעלה", "disableSessionStickinessDesc": "שילובי Round-robin ושילובים אקראיים עוברים לחיבור שונה בכל בקשה במקום להצמיד שיחה שלמה לחיבור יחיד לפי ה-hash של ההודעה הראשונה. השאר כבוי כדי לשמר פגיעות ב-prompt-cache עבור שיחות מרובות סבבים. דריסות ברמת השילוב מקבלות קדימות.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "ניתוב לפי מקומיות מטמון הפרומפטים", + "promptCacheAffinityDesc": "העדפת אותו חשבון ספק עבור מפתחות תואמים של מטמון פרומפטים, תוך שמירה על מעבר לגיבוי לפי תקינות ומכסה.", + "reasoningTokenBuffer": "מאגר טוקנים להסקה", + "reasoningTokenBufferDesc": "לאפשר לניתוב משולב להוסיף מרווח max_tokens רק עבור מודלים מוכרים להסקה, כאשר המאגר המלא נכנס בתוך מגבלת פלט ידועה.", + "zeroLatencyOptimizations": "אופטימיזציות להשהיה אפסית", + "zeroLatencyOptimizationsDesc": "הפעילו גידור, דילוגי TTFT חזויים ודחיסה יזומה של בקשות גיבוי. השאירו כבוי כדי למנוע מתכונות השהיה אלה להתחרות ביעדים או לדחוס בקשות גיבוי.", "credentialRedaction": "הסתרת פרטי אימות", "credentialRedactionDesc": "הסתרת מפתחות API, טוקנים וסודות מההקשר הנשלח לספקים ומהתגובות.", "enableCredentialRedaction": "הפעלת הסתרת פרטי אימות", "enableCredentialRedactionDesc": "מנקה מפתחות API, טוקנים, מפתחות פרטיים ו-JWT מהודעות, קריאות לכלים ותגובות.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "סנכרון אוטומטי מושבת", + "pricingAutoSyncEnabled": "סנכרון אוטומטי מופעל", "modalityBridgeIntro": "המירו תוכן רב־אופני לטקסט לפני שהוא מגיע למודלים שתומכים בטקסט בלבד. גשרי הראייה, השמע והווידאו זמינים וניתנים להגדרה.", "modalityBridgeVisionTab": "חזון", "modalityBridgeAudioTab": "אודיו", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "בריאות", "cliproxyapiPort": "פורט", "qdrantHost": "מארח", - "qdrantCollection": "אוסף", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "אוסף" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "מנוע RTK", + "description": "דחיסה מודעת-פקודות עבור פלט כלים, יומני מסוף ותוצאות בנייה.", + "enabled": "מופעל", + "intensity": "עוצמה", + "intensityMinimal": "מינימלית", + "intensityStandard": "רגילה", + "intensityAggressive": "אגרסיבית", + "toolResults": "תוצאות כלים", + "assistantMessages": "הודעות העוזר", + "codeBlocks": "בלוקי קוד", "filterCatalog": "קטלוג סינון", "filterCatalogDesc": "מסנני פלט זמינים לפי קטגוריה", "guidedConfig": "תצורה", "guidedConfigDesc": "התאם את האופן שבו RTK מסנן את פלט הטרמינל שלך", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "מספר שורות מרבי", + "maxChars": "מספר תווים מרבי", "deduplicateThreshold": "סף ביטול כפילות", "customFilters": "מסננים מותאמים אישית", "detectedType": "סוג זוהה", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "כשלים", "rawOutputAlways": "תמיד", "rawOutputMaxBytes": "מקסימום בתים של פלט גולמי", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "בדיקת סינון", + "pasteOutput": "הדביקו פלט כלי כדי לבדוק את הסינון...", "presetHigh": "אגרסיבי", "presetLow": "אור", "presetMaxChars": "מקסימום תווי פלט", "presetMaxLines": "מקסימום קווי פלט", "presetMedium": "סטנדרטי", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "הפעלה", + "result": "תוצאה", + "previewEmpty": "הריצו דוגמה כדי להציג תצוגה מקדימה של פלט RTK.", + "detected": "זוהו", "masterSwitchOffAlert": "המתג הראשי של Token Saver כבוי — הגדרות אלה לא ישפיעו על בקשות עד שתפעיל אותו מדף ה-Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "טוקנים שסוננו", + "filtersActive": "מסננים פעילים", + "requests": "בקשות", + "avgSavings": "חיסכון ממוצע", "simpleMode": "פשוט", "advancedMode": "מתקדם", "searchFilters": "חיפוש מסננים...", @@ -8617,27 +8624,27 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", - "loading": "Loading…", + "title": "שילובי דחיסה", + "description": "הגדירו כיצד מנועים משולבים עבור תרחישי ניתוב שונים.", + "createCombo": "יצירת שילוב דחיסה", + "editCombo": "עריכה", + "deleteCombo": "מחיקה", + "deleteConfirm": "למחוק את שילוב הדחיסה הזה?", + "pipeline": "צינור עיבוד", + "addStep": "הוספת שלב", + "removeStep": "הסרה", + "name": "שם", + "descriptionField": "תיאור", + "languagePacks": "חבילות שפה", + "outputMode": "מצב פלט", + "assignToRouting": "הקצאה לשילובי ניתוב", + "noAssignments": "אין שילובי ניתוב זמינים", + "default": "ברירת מחדל", + "setAsDefault": "הגדרה כברירת מחדל", + "save": "שמירה", + "cancel": "ביטול", + "enabled": "מופעל", + "loading": "בטעינה…", "hubTitle": "מרכז דחיסה", "hubDescription": "בחר איזה פרופיל דחיסה יופעל באופן גלובלי.", "hideExplanation": "הסתר הסבר", @@ -8661,6 +8668,8 @@ "contextEditingNote": "זמין כרגע עבור Claude (Anthropic) בלבד. זהו מצב מואצל: הספק מנקה בלוקים ישנים של שימוש בכלים בצד השרת — אנחנו לא משכתבים את ההודעה. זה לא משפיע על ספקים אחרים.", "namedCombos": "שילובים בעלי שם", "namedCombosDescription": "שמור צינורות עיבוד שונים ושייך אותם לשילובי ניתוב ספציפיים.", + "activeProfileMasterSwitchOffWarning": "הפרופיל הפעיל שלהלן לא יפעל עד שהמתג הראשי \"דחיסת הנחיות\" יופעל.", + "activeProfileMasterSwitchOffCta": "הפעילו אותו בהגדרות", "comboNamePlaceholder": "שם השילוב", "descriptionPlaceholder": "תיאור", "nameRequired": "הזן שם שילוב לפני השמירה.", @@ -8674,9 +8683,7 @@ "languagePacksList": "חבילות שפה: {packs}", "dragToReorder": "גרור כדי לשנות את סדר השלבים", "engine": "מנוע", - "intensity": "עוצמה", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "עוצמה" }, "compressionStudio": { "noRun": "אין הרצת דחיסה זמינה.", @@ -8705,7 +8712,7 @@ "run": "הרץ", "laneRejected": "נדחה: {reason}", "error": "שגיאה", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "התצוגה המקדימה של צינור העיבוד המשולב נכשלה: {reason}", "combinedFlow": "זרימה משולבת", "eachLayer": "כל שכבה בנפרד", "diff": "הבדל", @@ -8780,27 +8787,27 @@ }, "enableTitle": "הפעל את המנוע", "enableDescription": "רץ אחרון במחסנית (לאחר ש-RTK/Caveman מנקה את הטקסט, OmniGlyph ממיר את השאר לתמונות) ורץ גם באופן עצמאי דרך מצב omniglyph. זוהי תצוגה מקדימה והיא נשארת כבויה כברירת מחדל עד להשלמת אימות מקצה לקצה.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "פרופיל דחיסה", + "profileDescription": "הפרופיל הוא גבול עליון, לא תחתון: לא ניתן להקל פרופיל מחמיר יותר באמצעות דריסה ברמת שלב. לפי מדידות בבסיס קוד זה: במצב בטוח לקוד או מאוזן, הפעלה שעדיין לא צברה היסטוריה אינה דוחסת דבר, מכיוון ששניהם מעלים את סף התווים המינימלי ומשאירים את הנחיית המערכת, סכמות הכלים ותוצאות הכלים בצורתם המקורית.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "אגרסיבי (ברירת מחדל)", + "description": "המדיניות שעליה התבססו המדידות שפורסמו. ממירה לתמונה את הנחיית המערכת, תיעוד הכלים והיסטוריה צפופה." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "מאוזן", + "description": "משאיר את המצב הפעיל בצורתו המקורית ומגן על 8 הסבבים האחרונים; מכווץ רק היסטוריה ישנה וסגורה." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "בטוח לקוד", + "description": "משאיר את הסמכות, סכמות הכלים ופלט הכלים הפעיל בצורתם המקורית, תוך הגנה על 12 הסבבים האחרונים. אינו דוחס דבר עד שההפעלה צוברת היסטוריה." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "העברה ישירה", + "description": "מנתב ללא שינוי. המנוע אינו מופעל והבקשה מועברת ללא שינוי." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "בחירת פרופיל הדחיסה של OmniGlyph", "saved": "נשמר.", "saveFailed": "לא ניתן היה לשמור.", "enableAria": "הפעל את מנוע OmniGlyph", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "דחיסת הודעות מבוססת כללים, חבילות שפה, ניתוח נתונים ובקרות מצב פלט.", "advancedConfig": "תצורה מתקדמת", "advancedConfigDesc": "כוונן את התנהגות הדחיסה", "aggressiveSettings": "הגדרות אגרסיביות", "aggressiveSettingsDesc": "דחיסה מקסימלית עם פשרות פוטנציאליות באיכות", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "בקשות", + "tokensSaved": "אסימונים שנחסכו", + "savingsPercent": "אחוז חיסכון", + "avgLatency": "זמן השהיה ממוצע", + "languagePacks": "חבילות שפה", + "languagePacksDesc": "הפעלת כללי דחיסה עבור שפות מסוימות.", "labelAutoTrigger": "דחיסה אוטומטית כאשר ההקשר חורג", "labelCompressionRate": "חוזק דחיסה", "labelMaxTokens": "אסימוני יעד לכל הודעה", "labelMinLength": "אורך הודעה מינימלי", "labelMinSavings": "מינימום אסימונים לשמירה", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "מופעל", + "autoDetect": "זיהוי שפה אוטומטי", + "rulesCount": "{count} כללים", "inputCompressionTitle": "דחיסת קלט", "inputCompressionDesc": "שכתב את היסטוריית הצ'אט בניסוח קצר יותר. מפחית את אסימוני הקלט בכ-50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "ניתוח נתוני דחיסה", + "noAnalytics": "עדיין אין נתוני ניתוח דחיסה.", "masterDisabledWarning": "המתג הראשי של Token Saver כבוי — הגדרות אלו לא ישפיעו על בקשות עד שתפעיל אותו מהגדרות הדחיסה או תשנה אותו כאן.", "outputMode": "מצב פלט", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "מצב פלט", "quickSettings": "הגדרות מהירות", "quickSettingsDesc": "הגדרות דחיסה בסיסיות כדי להתחיל", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "עקיפה אוטומטית לשמירת בהירות", + "bypassConditions": "תנאי עקיפה", "bypassConditionsList": "ביטחון, בלתי הפיך, הבהרה, רגיש להזמנה", "simpleMode": "פשוט", "advancedMode": "מתקדם", @@ -8944,9 +8951,9 @@ "ultraSettings": "הגדרות אולטרה", "ultraSettingsDesc": "דחיסה סמנטית המופעלת על ידי SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "השב בקצרה. שמור על מונחים טכניים, קוד, שגיאות, כתובות URL ומזהים.", + "full": "השב בתמציתיות ובקיצור. שמור על כל התוכן הטכני.", + "ultra": "השב בקיצור מרבי עם קיצורים טכניים נפוצים. שמור על הסמלים המדויקים." } }, "translator": { @@ -8993,7 +9000,7 @@ "translationPathHubSpoke": "{source} → OpenAI (בינוני) → {target}", "translationPathDirect": "{source} → {target} (מתרגם ישיר)", "translationPathPassthrough": "אותו פורמט - אין צורך בתרגום", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "OpenAI ביניים", "autoFeaturesTitle": "מה OmniRoute עושה באופן אוטומטי", "autoFeaturesCount": "8 תכונות", "featureReasoningCache": "מטמון הנמקה", @@ -9130,7 +9137,7 @@ "clientRequestDescription": "גוף הבקשה כפי שהלקוח שלך ישלח אותו", "formatDetected": "פורמט זוהה", "formatDetectedDescription": "OmniRoute מזהה אוטומטית את פורמט ה-API ממבנה הבקשה", - "openaiIntermediate": "OpenAI Intermediate", + "openaiIntermediate": "OpenAI ביניים", "openaiIntermediateDescription": "כל הפורמטים מנורמלים תחילה לפורמט OpenAI (הגשר האוניברסלי)", "providerFormat": "פורמט ספק", "providerFormatDescription": "פורמט OpenAI מתורגם לפורמט המקורי של הספק", @@ -9157,7 +9164,7 @@ "loadToolSample": "טען דוגמה לקריאת כלי", "transformToResponses": "הפוך לתגובות", "rawChatSseInput": "השלמות צ'אט גולמיות SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "Responses API SSE שעבר טרנספורמציה", "noResultsYet": "עדיין אין תוצאות", "transformedEvents": "אירועים שעברו שינוי", "uniqueEventTypes": "סוגי אירועים ייחודיים", @@ -9173,15 +9180,15 @@ "comboBadge": "קומבו", "routeEndpointLabel": "נקודת קצה", "routeConnectionLabel": "חיבור", - "scenarioVision": "Vision (image understanding)", - "scenarioSchemaCoercion": "Schema coercion (structured output)", + "scenarioVision": "ראייה (הבנת תמונות)", + "scenarioSchemaCoercion": "כפיית סכמה (פלט מובנה)", "techniques": "טכניקות:", "friendlyTitle": "מתרגם", "friendlySubtitle": "השתמש באפליקציה הקיימת שלך עם כל ספק — מבלי לכתוב מחדש את הקוד.", "conceptHeadline": "האפליקציה שלך מדברת ב\"שפה\" של API אחד. המתרגם ממיר אותה לשימוש בספק אחר.", "conceptDiagramAppLabel": "האפליקציה שלך", "conceptDiagramSourceLabel": "פורמט מקור", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (מרכז)", "conceptDiagramTargetLabel": "ספק יעד", "conceptDiagramExampleApp": "לדוגמה, Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "הדבק בקשת JSON; הפורמט יזוהה באופן אוטומטי.", "advancedPipelineTitle": "צינור עיבוד (pipeline) ביניים של OpenAI", "advancedPipelineSubtitle": "הצגה ויזואלית של כל שלב תרגום (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "ממיר זרימה (צ׳אט ← תגובות SSE)", "advancedStreamTransformSubtitle": "ממיר Chat Completions SSE ל-Responses API.", "advancedTestBenchTitle": "סביבת בדיקה (8 תרחישים)", "advancedTestBenchSubtitle": "מריץ את כל התרחישים ומדווח על הצלחה/כישלון + % תאימות.", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "נותר", "kiloPassRenews": "מתחדש בעוד {count} ימים", "kiloPassUsageLabel": "השימוש החודש", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "נקודות זכות נוספות לשימוש", + "kimiExtraUsage": "שימוש נוסף", + "kimiExtraUsageEnabled": "מופעל", + "kimiExtraUsageDisabled": "מושבת", + "kimiExtraUsageFrozen": "מוקפא", + "kimiExtraUsageUnavailable": "לא זמין", + "kimiMonthlyUsed": "שימוש החודש", + "kimiMonthlyLimit": "מגבלה חודשית", + "kimiMonthlyLimitUnlimited": "ללא הגבלה", + "kimiAdditionalCredits": "נקודות זכות נוספות", "loggerTab": "לוגר", "proxyTab": "פרוקסי", "budgetManagement": "ניהול תקציב", @@ -9324,7 +9331,7 @@ "circuitBreakers": "מפסקים", "lockedIPs": "כתובות IP נעולים", "lockoutsAutoRefreshHint": "נעילות מגבלת קצב לכל דגם • רענון אוטומטי 10 שניות", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# נעול} other {# נעולים}}", "timeLeft": "{time} נותרו", "howItWorks": "איך זה עובד", "howItWorksSubtitle": "למד כיצד הערכות מאמתות את תגובות ה-LLM שלך", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "תגובות מושוות מול קריטריונים צפויים. ראה עובר/נכשל עבור כל מקרה עם מדדי חביון ומשוב מפורט.", "evalsStrategyContainsLabel": "מכיל", "evalsStrategyExactLabel": "התאמה מדויקת", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "ביטוי רגולרי", "evalsStrategyCustomLabel": "לוגיקה מותאמת אישית", "evalsStrategyContainsDescription": "בודק אם פלט ה-LLM מכיל את מחרוזת המשנה הצפויה.", "evalsStrategyExactDescription": "בודק אם פלט ה-LLM תואם בדיוק לערך הצפוי.", @@ -9368,14 +9375,14 @@ "modelsUnderTest": "דגמים בבדיקה", "searchSuitesPlaceholder": "חפש סוויטות...", "passSuffix": "לעבור", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# מקרה} other {# מקרים}}", "runEval": "הפעל את Eval", "runAllSuites": "הפעל הכל", "runAllRunning": "מפעיל את כל...", "runAllProgress": "הפעלת {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {חבילה אחת נכשלה} other {# חבילות נכשלו}}", "runAllCompleted": "רץ {suites} סוויטות - {passed} עבר, {failed} נכשל", - "runAllCompletedWithFailures": "Ran {completed} suites; {failedSuites} failed to complete", + "runAllCompletedWithFailures": "הופעלו {completed} חבילות; {failedSuites} לא הושלמו", "runningProgress": "פועל {current}/{total}...", "passRate": "שיעור מעבר", "summaryBreakdown": "{passed} עבר · {failed} נכשל · {total} סך הכל", @@ -9397,7 +9404,7 @@ "notifyAllCasesPassed": "כל {total} המקרים עברו ✅", "notifySomeCasesFailed": "{passed}/{total} עבר, {failed} נכשל", "notifyEvalRunFailed": "ריצת Eval נכשלה", - "notifyEvalTitle": "Eval: {name}", + "notifyEvalTitle": "הערכה: {name}", "modelEvals": "הערכות מודל", "evalsHeroDescription": "בדוק ואמת את נקודות הקצה של LLM שלך על ידי הפעלת חבילות הערכה מוגדרות מראש. כל חבילה מכילה מקרי בדיקה ששולחים הנחיות אמיתיות דרך OmniRoute ומשווים תגובות מול קריטריונים צפויים - עוזרים לך לזהות רגרסיות, להשוות מודלים ולהבטיח איכות תגובה בין ספקים.", "qualityValidation": "אימות איכות", @@ -9423,7 +9430,7 @@ "providerLimits": "מגבלות ספקים", "noProviders": "אין ספקים מחוברים", "connectProvidersForQuota": "התחבר לספקים עם OAuth כדי לעקוב אחר מגבלות מכסת ה-API והשימוש שלך.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {חשבון אחד} other {# חשבונות}}", "filteredFromCount": "(מסונן מ-{count})", "autoRefresh": "רענון אוטומטי", "refreshAll": "רענן הכל", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "עדכון נראות המכסה נכשל", "account": "חשבון", "modelQuotas": "מכסות דגם", - "lastUsed": "Last Refreshed", + "lastUsed": "רענון אחרון", "actions": "פעולות", "refreshQuota": "רענון מכסה", "today": "היום", @@ -9452,20 +9459,20 @@ "cardExpand": "הרחב", "cardCollapse": "כווץ", "moreQuotas": "+{count} נוספים", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "ללא קיבוץ", + "viewFlat": "שטוח", + "viewByEnvironment": "לפי סביבה", "noQuotaDataAvailable": "אין נתוני מכסה זמינים", "noAccountsForTierFilter": "לא נמצאו חשבונות עבור מסנן שכבות", "tierAll": "הכל", - "tierEnterprise": "Enterprise", + "tierEnterprise": "ארגוני", "tierTeam": "צוות", "tierBusiness": "עסקים", "tierUltra": "אולטרה", "tierPro": "פרו", "tierPlus": "בנוסף", "tierFree": "חינם", - "tierLite": "Lite", + "tierLite": "קל", "tierUnknown": "לא ידוע", "statTotal": "סך הכל", "statCritical": "קריטי", @@ -9475,7 +9482,7 @@ "filterTierLabel": "רמה", "purchaseAll": "הכל", "purchaseOauthSub": "מנוי", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "ללא OAuth", "purchaseApiKey": "מפתח API", "creditsLabel": "קרדיטים", "creditBalanceHint": "יתרה שנותרה", @@ -9504,114 +9511,114 @@ "confirmRedeemResetCreditButton": "מימוש קרדיט", "resetCreditRedeemed": "האיפוס מומש", "resetCreditRedeemFailed": "מימוש קרדיט האיפוס נכשל", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "שמירת החבילה נכשלה", "clone": "שיבוט", "exportSuite": "ייצוא", "importSuite": "ייבוא", "suiteExported": "סוויטה מיוצאת", "suiteExportFailed": "ייצוא החבילה נכשל", - "suiteImportReady": "Suite import loaded for review", + "suiteImportReady": "ייבוא חבילת הבדיקות נטען לבדיקה", "suiteImportFailed": "ייבוא החבילה נכשל", "suiteImportInvalid": "חבילת eval JSON לא חוקית", "suiteBuilderCloneSuffix": "להעתיק", "suiteBuilderImportedSuite": "סוויטה מיובאת", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "כרטיס ניקוד", + "evalApiKey": "מפתח API", + "scorecardPassRate": "שיעור הצלחה", + "targetTypeModel": "מודל", + "actualOutputLabel": "פלט בפועל", + "evalTargetHint": "יש לבחור מודל או שילוב להערכה.", + "suiteBuilderDeleted": "חבילת הבדיקות נמחקה בהצלחה", + "suiteBuilderCaseCardHint": "יש להגדיר את הנחיית הקלט ואת הקריטריונים לפלט הצפוי.", + "nextResetUtc": "האיפוס הבא (UTC)", + "scorecardHint": "שיעורי הצלחה מצטברים בכל חבילות ההערכה.", + "suiteLatestRunsHint": "הרצות ההערכה האחרונות עבור חבילה זו.", + "saving": "מתבצעת שמירה", + "suiteBuilderCaseModelLabel": "מודל (אופציונלי)", + "evalControlsTitle": "פקדי הערכה", + "suiteBuilderEditTitle": "עריכת חבילת הערכה", + "suiteBuilderCaseStrategyLabel": "אסטרטגיית אימות", + "notifySelectDifferentCompareTarget": "יש לבחור יעד אחר להשוואה", + "recentRunsHint": "מוצגות הרצות ההערכה האחרונות. יש ללחוץ על הרצה כדי לראות תוצאות מפורטות.", + "evalCompareHint": "ניתן להשוות את התוצאות ליעד נוסף.", + "suiteBuilderCaseInvalid": "במקרה זה יש שגיאות אימות. יש לתקן אותן לפני השמירה.", + "historyEmpty": "אין עדיין היסטוריית הערכות", + "suiteBuilderUpdated": "חבילת הבדיקות עודכנה בהצלחה", + "resetInterval": "מרווח איפוס", + "suiteBuilderCreateTitle": "יצירת חבילת הערכה", + "activePeriodSpend": "הוצאות בתקופה הפעילה", + "evalApiKeyHint": "יש לבחור באיזה מפתח API להשתמש עבור בקשות הערכה.", + "evalCompareOptional": "השוואה (אופציונלי)", + "suiteBuilderDeleteFailed": "מחיקת החבילה נכשלה", + "suiteBuilderCaseSystemPromptPlaceholder": "הוראות מערכת אופציונליות...", + "scorecardCases": "מקרים", + "runCompletedWithScore": "ההערכה הושלמה — שיעור הצלחה של {score}%", + "suiteBuilderCustomBadge": "מותאם אישית", + "targetSuiteDefaults": "ברירות המחדל של החבילה", + "suiteBuilderDeleteConfirm": "האם למחוק חבילה זו? לא ניתן לבטל פעולה זו.", + "suiteBuilderNameLabel": "שם החבילה", + "scorecardSuites": "חבילות", + "evalCompareTarget": "יעד להשוואה", + "suiteBuilderCaseModelPlaceholder": "לדוגמה, gpt-4o-mini", + "evalControlsHint": "יש להגדיר את יעד ההערכה ואת מפתח ה-API, ולאחר מכן להריץ חבילות כדי לאמת את איכות המודל.", + "recentRunsTitle": "הרצות אחרונות", + "suiteBuilderCaseSystemPromptLabel": "הנחיית מערכת", + "suiteBuilderCaseExpectedPlaceholder": "למשל def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "למשל def fibonacci", - "suiteBuilderCaseExpectedPlaceholderExact": "Paste the exact expected response", + "suiteBuilderCaseExpectedPlaceholderExact": "הדביקו את התגובה המדויקת הצפויה", "suiteBuilderCaseExpectedPlaceholderRegex": "למשל ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "השתמש בביטוי רגולרי של JavaScript ללא גלישת קווים.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "למשל חבילת בדיקות לאיכות קוד", + "suiteBuilderAddCase": "הוספת מקרה", + "cancel": "ביטול", + "evalTarget": "יעד", + "suiteBuilderCaseNameLabel": "שם המקרה", + "weeklyLimitUsd": "מגבלה שבועית (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "למשל כתבו פונקציית fibonacci ב-Python", + "suiteBuilderNameRequired": "יש להזין שם לחבילה", + "suiteBuilderCaseUserPromptLabel": "הנחיית משתמש", + "daily": "יומי", + "resultErrorLabel": "שגיאה", + "suiteBuilderBuiltInBadge": "מובנה", + "suiteBuilderCaseCardTitle": "מקרה בדיקה", "suiteBuilderDuplicateCase": "שכפול", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "למשל 50.00", + "suiteBuilderCaseTagsHint": "תגיות מופרדות בפסיקים לארגון מקרי בדיקה.", + "notifyEvalRunFailedWithReason": "ההערכה נכשלה: {reason}", + "weekly": "שבועי", + "runEvalRunning": "ההערכה מתבצעת...", + "delete": "מחיקה", + "resetTimeUtc": "שעת איפוס (UTC)", + "evalApiKeyAuto": "אוטומטי (שימוש בברירת המחדל)", + "suiteBuilderDescriptionPlaceholder": "תיאור אופציונלי של מה שהחבילה הזו בודקת...", + "targetComparisonTitle": "השוואת יעדים", + "save": "שמירה", + "suiteBuilderCreated": "החבילה נוצרה בהצלחה", + "suiteLatestRuns": "ההרצות האחרונות", + "suiteBuilderCaseExpectedLabel": "ערך צפוי", + "historyLatency": "זמן השהיה", + "suiteBuilderCaseTagsPlaceholder": "למשל coding, python", + "targetTypeCombo": "משולב", + "scorecardPassed": "עבר בהצלחה", + "suiteBuilderCaseTagsLabel": "תגיות", + "suiteBuilderNewSuite": "חבילה חדשה", + "notifyEvalLoadFailed": "טעינת נתוני ההערכה נכשלה", + "notConfigured": "לא הוגדר", + "suiteBuilderCaseNamePlaceholder": "למשל בדיקת fibonacci ב-Python", + "intervalLabel": "מרווח", + "suiteBuilderCreateAction": "יצירת חבילת בדיקות", + "suiteBuilderCasesHint": "כל מקרה שולח הנחיה ומאמת את התגובה.", + "suiteBuilderUpdatedAt": "עודכן", + "errorBadge": "שגיאה", + "suiteBuilderCasesTitle": "מקרי בדיקה", + "edit": "עריכה", + "monthly": "חודשי", + "suiteBuilderCasesRequired": "נדרש לפחות מקרה בדיקה אחד", + "weeklyLimitSummary": "סיכום מגבלת התקציב השבועית", + "suiteBuilderDescriptionLabel": "תיאור", + "targetComparisonHint": "השוואה זה לצד זה של תוצאות ההערכה בין היעדים.", + "compareCompletedWithScore": "ההשוואה הושלמה — שיעור הצלחה של {score}%", + "staleQuotaTooltip": "הרענון האחרון נכשל — מוצגים נתונים מהמטמון", "quotaThresholdLabel": "דקות שמאל", "quotaCutoffsColumnHelp": "עצירת בקשות כאשר המכסה שנותרה נופלת לאחוז זה או מתחת.", "quotaCutoffsButtonDefault": "ברירת מחדל", @@ -9756,7 +9763,7 @@ "usageByModel": "שימוש לפי דגם", "usageByAccount": "שימוש לפי חשבון", "failedToLoad": "טעינת סטטיסטיקת שימוש נכשלה.", - "tokenHealth": "Token Health", + "tokenHealth": "תקינות האסימון", "totalOAuth": "סך הכל OAuth", "healthy": "בריא", "warning": "אזהרה", @@ -9863,7 +9870,7 @@ "backToLogin": "חזרה לכניסה", "forgotPassword": "שכחת סיסמה?", "continueWithOidc": "המשך עם OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "סיסמת ברירת מחדל: CHANGEME (אלא אם INITIAL_PASSWORD הוגדר)", "Authorization": "הרשאה", "Content-Disposition": "תוכן-נטייה", "waitingForAuthorization": "ממתין לאישור...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "ממתין לאישור נגד כבידה...", "waitingForQoderAuthorization": "ממתין להרשאת Qoder...", "exchangingCodeForTokens": "מחליף קוד לאסימונים...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "גרסת Node.js אינה תואמת", + "nodeIncompatibleDesc": "אתם מפעילים את Node.js {version}, שאינה עומדת במדיניות סביבת ההרצה המאובטחת הנתמכת של OmniRoute. השתמשו בגרסת Node.js 20.x או 22.x LTS מתוקנת.", + "nodeIncompatibleFixLabel": "תיקון: התקינו גרסת Node.js 22 LTS מתוקנת", + "nodeIncompatibleHint": "OmniRoute דורש Node.js 22.22.2+ (22.x LTS) או 24.0.0+ (24.x LTS). מומלץ להשתמש ב-Node 24 LTS.", "resetViaAppDataTitle": "איפוס דרך נתוני אפליקציה", "resetViaAppDataDescription": "מחק את קובץ ההגדרות מתוך תיקיית נתוני האפליקציה כדי לאפס את הסיסמה שלך:", "quitDesktopApp": "סגור את אפליקציית OmniRoute בשולחן העבודה לחלוטין", @@ -9963,7 +9970,7 @@ "howItWorksDescription": "הנתונים זורמים בצורה חלקה מהאפליקציה שלך דרך שכבת הניתוב החכמה שלנו לספק הטוב ביותר לתפקיד.", "howItWorksStep1Title": "1. CLI ו-SDKs", "howItWorksStep1Description": "הבקשות שלך מתחילות מהכלים המועדפים עליך או מה-SDK המאוחד שלנו. פשוט שנה את כתובת האתר הבסיסית.", - "howItWorksStep2Title": "2. OmniRoute Hub", + "howItWorksStep2Title": "2. מרכז OmniRoute", "howItWorksStep2Description": "המנוע שלנו מנתח את ההנחיה, בודק את תקינות הספק ומסלולים לאיחור או עלות הנמוכים ביותר.", "howItWorksStep3Title": "3. ספקי AI", "howItWorksStep3Description": "הבקשה מתמלאת על ידי OpenAI, Anthropic, Gemini או אחרים באופן מיידי.", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "ספקים", "commonUseCases": "מקרי שימוש נפוצים", "clientCompatibility": "תאימות ללקוח", - "protocolsToc": "Protocols", + "protocolsToc": "פרוטוקולים", "apiReference": "הפניה ל-API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "חומר עזר ל-Management API", + "managementApiDescription": "נקודות קצה לאוטומציה עבור מרשם שרתי ה-proxy, הקצאות היקף והעברת שרתי proxy מדור קודם.", "method": "שיטה", "path": "נתיב", "notes": "הערות", @@ -10064,7 +10071,7 @@ "quickStartStep4Suffix": "השתמש בקידומת ספק, למשל", "deploySetupTitle": "מדריך התקנה", "deploySetupText": "התקנה שלב אחר שלב, תצורת סביבה והדרכה ראשונה עבור OmniRoute.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron למחשב שולחני", "deployElectronText": "הפעל את OmniRoute כיישום שולחן עבודה מקורי ב-Windows, macOS ו-Linux.", "deployDockerTitle": "דוקר", "deployDockerText": "פריסה מכולות עם Docker Compose; מוכן לערימות ייצור ו-Kubernetes.", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "התקן את OmniRoute כאפליקציית אינטרנט מתקדמת בדפדפנים של אנדרואיד, iOS ושולחן העבודה.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "הפעילו את OmniRoute ללא ממשק גרפי ב-Android באמצעות Termux. גשו ללוח הבקרה מהדפדפן בנייד.", "featureRoutingTitle": "ניתוב רב ספקים", "featureRoutingText": "נתב בקשות ל-30+ ספקי AI דרך נקודת קצה אחת תואמת OpenAI. תומך בצ'אט, תגובות, אודיו ותמונה API.", "featureCombosTitle": "שילובים ואיזון", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "השתמש ב-OmniRoute ככתובת URL יציבה תוך כדי סיבוב חשבונות או שילובי ספקים מתחת.", "clientKimiBullet2": "העדיפו מודלים עם קידומת בזרימות קידוד כדי שהחזרה ושביל הביקורת יישארו מפורשים.", "clientKimiBullet3": "השתמש ב-/v1/responses כאשר אתה רוצה ניתוב מקורי בסגנון Responses עבור לקוחות המשתמשים בכלים.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "פרוטוקולים: MCP ו-A2A", + "protocolsDescription": "OmniRoute מציע שני פרוטוקולים תפעוליים בנוסף לממשקי API תואמי OpenAI: ‏MCP להפעלת כלים ו-A2A לתהליכי עבודה בין סוכנים.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "השתמשו ב-MCP דרך stdio כדי לאפשר ללקוחות לגלות ולהפעיל כלי OmniRoute עם נראות לצורכי ביקורת.", + "protocolMcpStep1": "הפעילו את תעבורת MCP באמצעות `omniroute --mcp`.", + "protocolMcpStep2": "הפנו את לקוח ה-MCP שלכם לתעבורת stdio.", + "protocolMcpStep3": "הפעילו את `omniroute_get_health` ואת `omniroute_list_combos` כדי לאמת את הקישוריות.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "השתמשו ב-A2A JSON-RPC כדי לשלוח משימות באופן סינכרוני או באמצעות הזרמת SSE.", + "protocolA2aStep1": "קראו את `/.well-known/agent.json` לצורך גילוי הסוכן.", + "protocolA2aStep2": "שלחו בקשות `message/send` או `message/stream` אל `POST /a2a`.", + "protocolA2aStep3": "נהלו את מחזור החיים של המשימות באמצעות `tasks/get` ו-`tasks/cancel`.", + "protocolTroubleshootingTitle": "פתרון בעיות בפרוטוקול", + "protocolTroubleshooting1": "אם סטטוס MCP אינו מקוון, ודאו שתהליך stdio פועל ושקובץ ה-heartbeat מתעדכן.", + "protocolTroubleshooting2": "אם משימות A2A נשארות במצב `working`, בדקו את `/api/a2a/tasks/:id` ואת אירועי הזרם כדי לאתר מצב סופי.", + "protocolTroubleshooting3": "השתמשו ב-`/dashboard/mcp` וב-`/dashboard/a2a` לבקרה תפעולית ולנראות לצורכי ביקורת.", "endpointChatNote": "נקודת קצה צ'אט תואמת OpenAI (ברירת מחדל).", "endpointResponsesNote": "נקודת קצה של תגובות API (Codex, o-series).", "endpointModelsNote": "קטלוג דגמים לכל הספקים המחוברים.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "עוזר שכתוב עבור לקוחות ללא /v1.", "endpointRewriteResponsesNote": "שכתוב עוזר לתגובות ללא /v1.", "endpointRewriteModelsNote": "עוזר שכתוב לגילוי מודל ללא /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "הציגו פריטי רישום פרוקסי שמורים (תומך בעימוד).", + "mgmtProxiesCreateNote": "צרו פריט פרוקסי לשימוש חוזר ברישום.", + "mgmtProxiesHealthNote": "הציגו מדדי תקינות ל-24 שעות/בחלון נע עבור כל פרוקסי שמור, מתוך יומני הפרוקסי.", + "mgmtProxiesBulkAssignNote": "הקצו או הסירו פרוקסי אחד עבור מזהי תחום רבים בבקשה אחת.", + "mgmtAssignmentsListNote": "הציגו הקצאות פרוקסי לפי תחום, scope_id או proxy_id.", + "mgmtAssignmentsUpdateNote": "הקצו או הסירו פרוקסי עבור תחום גלובלי/ספק/חשבון/שילוב.", + "mgmtLegacyMigrationNote": "ייבאו מפות proxyConfig מדור קודם להקצאות ברישום.", "modelPrefixesDescriptionStart": "השתמש בקידומת הספק לפני שם הדגם כדי לנתב לספק ספציפי. דוגמה:", "modelPrefixesDescriptionEnd": "מסלולים אל GitHub Copilot.", "provider": "ספק", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute היא תוכנת קוד פתוח. אתה חופשי לבדוק, לשנות ולהפיץ אותו תחת תנאי הרישיון שלו." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "סוכני CLI", + "description": "גלו סוכני CLI המותקנים במערכת שלכם. הוסיפו סוכנים מותאמים אישית לזיהוי אוטומטי.", + "refresh": "רענון", + "installed": "מותקן", + "notFound": "לא נמצא", + "builtIn": "מובנה", + "custom": "מותאם אישית", + "remove": "הסרה", + "addCustomAgent": "הוספת סוכן מותאם אישית", + "addCustomAgentDesc": "רשמו כל כלי CLI לצורך זיהוי. הוא ייסרק אוטומטית בעת רענון.", + "agentName": "שם הסוכן", + "binaryName": "שם הקובץ הבינארי", + "versionCommand": "פקודת גרסה", + "spawnArgs": "ארגומנטים להפעלה", + "addAgent": "הוספת סוכן", + "scanning": "המערכת נסרקת לאיתור סוכני CLI...", + "opencodeIntegration": "שילוב OpenCode", + "opencodeDetected": "זוהתה opencode {version}", + "opencodeDesc": "צרו קובץ {configFile} מוכן לשימוש עם כתובת ה-URL הבסיסית של OmniRoute וכל המודלים הזמינים — מקמו אותו בספריית הבסיס של הפרויקט והריצו {command}.", + "downloadConfig": "הורדת {file}", + "downloaded": "ההורדה הושלמה!", + "setupGuideTitle": "מדריך הגדרה", + "openCliTools": "פתיחת כלי CLI", + "setupGuideDetectCliTitle": "זיהוי ממשקי CLI מותקנים", + "setupGuideDetectCliDesc": "לחצו על רענון לאחר התקנה או עדכון של CLI, כדי ש-OmniRoute יוכל לסרוק מחדש קבצים בינאריים וגרסאות.", + "setupGuideCustomAgentTitle": "רישום קובץ בינארי מותאם אישית", + "setupGuideCustomAgentDesc": "השתמשו באפשרות הוספת סוכן מותאם אישית כאשר ה-CLI שלכם אינו ברשימה המובנית. ציינו את שם הקובץ הבינארי ואת פקודת הגרסה.", + "setupGuideCommandMissingTitle": "תיקון השגיאה 'command not found'", + "setupGuideCommandMissingDesc": "ודאו שפקודת ה-CLI קיימת ב-PATH, פתחו הפעלת מסוף חדשה והפעילו שוב את הרענון.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "ניהול מטמון", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "רענון", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "רשומות בזיכרון", + "memoryEntriesSub": "LRU בזיכרון", + "dbEntries": "רשומות במסד הנתונים", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "פגיעות במטמון", + "cacheHitsSub": "מתוך {total} בסך הכול", + "tokensSaved": "טוקנים שנחסכו", + "tokensSavedSub": "הערכה על סמך פגיעות", + "hitRate": "שיעור פגיעות", + "performance": "ביצועי המטמון", + "autoRefresh": "מתרענן אוטומטית כל {seconds} שניות", + "hits": "פגיעות", + "misses": "החטאות", + "total": "סה״כ", + "behavior": "התנהגות המטמון", + "behaviorDeterministic": "רק בקשות שאינן מוזרמות עם temperature=0 נשמרות במטמון.", + "behaviorBypass": "עקיפה באמצעות הכותרת {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "ברירת המחדל של TTL:‏ 30 דקות. ניתן להגדיר באמצעות {envVar}.", + "idempotency": "שכבת אידמפוטנטיות", + "activeDedupKeys": "מפתחות מניעת כפילויות פעילים", + "dedupWindow": "חלון מניעת כפילויות", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "ניקוי המטמון נכשל.", + "unavailable": "המטמון אינו זמין", + "unavailableDesc": "לא ניתן היה לאחזר את נתוני המטמון. ודאו שהשרת פועל.", "loadingCacheAria": "טוען מטמון", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "מטמון פרומפטים (בצד הספק)", + "semanticCache": "מטמון סמנטי", + "promptCacheSectionDesc": "מציג פעילות של שמירת פרומפטים במטמון בצד הספק מתוך היסטוריית השימוש, כדי שתוכלו לראות היכן בקרת המטמון פעילה ובאיזו מידה נעשה שימוש חוזר בקלט.", + "promptTrendDesc": "נפח בקשות שעתי, כיסוי מטמון ונפח קריאות מהמטמון במהלך 24 השעות האחרונות.", + "cachedRequests": "בקשות שנשמרו במטמון", + "cachedRequests24h": "בקשות שנשמרו במטמון (24 שעות)", + "cacheHitRate": "שיעור פגיעות במטמון", + "cacheRate": "שיעור שימוש במטמון", + "cacheRateDesc": "מתוך כלל הבקשות", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "מדדי מטמון פרומפטים", + "withCacheControl": "עם בקרת מטמון", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "יחס שימוש חוזר במטמון", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "חיסכון משוער בעלויות", + "lastUpdated": "עודכן לאחרונה", + "hoursTracked": "שעות במעקב", + "busiestHour": "השעה העמוסה ביותר", + "peakCacheRate": "שיעור המטמון המרבי", + "trendHour": "שעה", + "activityVolume": "פעילות", + "requestsShort": "בקשות", + "inputShort": "קלט", + "cachedShort": "במטמון", + "writeShort": "כתיבה", + "resetting": "מתבצע איפוס...", + "resetMetrics": "איפוס מדדים", + "byProvider": "פילוח לפי ספק", + "providerCacheRateDesc": "כל ספק מציג את סך אסימוני הקלט, אסימוני הקריאה מהמטמון ואסימוני הכתיבה למטמון, כדי שתוכלו לאמת את יחס השימוש החוזר מול הסכומים הגולמיים.", "provider": "Provider", - "requests": "Requests", + "requests": "בקשות", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "מגמת המטמון (24 שעות)", + "peakCached": "שיא השימוש במטמון", + "cached": "במטמון", + "overview": "סקירה כללית", "tableProvider": "ספק", "tableModel": "מודל", "performanceTitle": "ביצועים", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "מטמון התגובות הדטרמיניסטי של OmniRoute. כאשר הוא מופעל, בקשות חוזרות שאינן מוזרמות עם temperature=0 יכולות לקבל מענה מקומי בלי לפנות לספק המקור.", + "semanticCacheDisabledDesc": "המטמון הסמנטי מושבת. OmniRoute ידלג על שימוש חוזר מקומי בתגובות עד שתפעילו אותו מחדש בהגדרות.", + "semanticEntriesDesc": "רשומות מטמון סמנטי שמורות המאוחסנות כעת ב-SQLite. פעילות מטמון ההנחיות בצד הספק אינה מופיעה כאן.", + "searchEntries": "חיפוש רשומות...", + "search": "חיפוש", + "loading": "בטעינה...", + "entriesLoadError": "טעינת רשומות המטמון הסמנטי נכשלה.", + "noEntries": "לא נמצאו רשומות מטמון", + "noPromptCacheData": "עדיין לא תועדה פעילות של מטמון הנחיות בצד הספק.", + "noTrendData": "לא תועדה פעילות של מטמון הנחיות במהלך 24 השעות האחרונות.", + "signature": "חתימה", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "נוצר", + "expires": "תפוגה", + "actions": "פעולות", + "deduplicatedRequests": "בקשות שאוחדו", + "savedCalls": "קריאות API שנחסכו", + "totalProcessed": "סך הבקשות שעובדו", + "disabled": "מושבת", + "totalRequests": "סך הבקשות", "reasoningCache": "נימוק חוזר", "reasoningCacheDesc": "משמר את החשיבה של המודל עבור זרימת קריאה לכלי מרובה פניות", "reasoningEntries": "ערכים פעילים", @@ -10669,7 +10676,7 @@ "minutesAgo": "לפני {minutes} דק'", "hoursAgo": "לפני {hours} שע'", "daysAgo": "לפני {days} ימים", - "entries": "Entries" + "entries": "רשומות" }, "proxyConfigModal": { "levelGlobal": "גלובלי", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "הדבק מפתח API קיים של Devin מתוך סשן מאומת של Devin. זמינות ייצוא המפתח וצעדיו משתנים לפי גרסת Devin וחשבון.", "devinPasteDescription": "ספק את ה-WINDSURF_API_KEY שלך (שהושג באמצעות `devin auth login`, או באמצעות הפקודה \"Windsurf: Provide Auth Token\" ב-Windsurf IDE).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json של Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "מפתח API / טוקן", "saving": "שומר…", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "חבר את הסמן IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "התחברות באמצעות Cursor", + "tabImport": "ייבוא אסימון", + "loginDescription": "פותח את דף ההתחברות של Cursor בדפדפן. פועל ב-Docker — יש לאשר בדפדפן המארח ולאחר מכן לחזור לכאן.", + "loginWithCursor": "התחברות באמצעות Cursor", + "startingLogin": "מתחיל…", + "waitingApproval": "ממתין לאישור ההתחברות ל-Cursor…", + "openUrlHint": "אם הדפדפן לא נפתח:", + "openLoginLink": "פתיחת דף ההתחברות", + "cancelLogin": "ביטול ההתחברות", "autoDetecting": "מזהה אוטומטית אסימונים...", "readingFromCursor": "קריאה מ-IDE Cursor או Cursor-agent", "tokensAutoDetected": "אסימונים זוהו בהצלחה אוטומטית מ-Cursor IDE!", "cursorNotDetected": "IDE הסמן לא זוהה. אנא הדבק ידנית את האסימון שלך.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "פועל ב-Docker? עדיף להשתמש בהתחברות באמצעות Cursor. ייבוא אוטומטי מה-IDE ו-cursor-agent בדרך כלל אינם זמינים בתוך הקונטיינר. למידע נוסף: docs/providers/CURSOR-DOCKER.md.", "accessToken": "אסימון גישה", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "אסימון רענון", + "refreshTokenPlaceholder": "אופציונלי — מאפשר רענון אוטומטי של האסימון", "required": "*", "accessTokenPlaceholder": "אסימון הגישה יאוכלס אוטומטית...", "machineId": "מזהה מכונה", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "זיהוי אוטומטי של אסימונים נכשל", "errorEnterToken": "נא להזין אסימון גישה", "errorImportFailed": "הייבוא נכשל", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "הפעלת ההתחברות ל-Cursor נכשלה", + "errorLoginPoll": "ההתחברות ל-Cursor נכשלה", + "errorLoginTimeout": "פג הזמן שהוקצב להתחברות ל-Cursor — יש לנסות שוב" }, "pricingModal": { "title": "תצורת תמחור", @@ -10843,9 +10850,9 @@ "selectProxy": "בחר את {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "ייבוא מהגרסה הישנה", + "bulkAssign": "שיוך מרוכז", + "addProxy": "הוספת Proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "בדיקה", + "edit": "עריכה", + "delete": "מחיקה", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "נכשל", "successRate": "{rate}% הצלחה", "avgLatency": "{latency} אלפיות השנייה בממוצע", "assignmentsCount": "{count} מטלות", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} אלפיות השנייה", "testFailure": "✗ {error}", "repair": "תיקון", "relayAuthMissing": "אימות חסר", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "אסטרטגיית רוטציה", "poolStrategyHint": "round-robin מבצע סבב בין החברים לפי הסדר; random בוחר באופן אחיד; sticky שומר על חבר אחד למשך חלון זמן; latency-optimized בוחר את המהיר ביותר על סמך יומנים.", "poolStrategyFailed": "עדכון אסטרטגיית הרוטציה נכשל", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "סבב מחזורי", "strategyRandom": "אקראי", - "strategySticky": "Sticky", + "strategySticky": "נצמד", "strategyLatency": "מותאם השהיה", "poolMembersLabel": "חברי המאגר ({count})", "poolNoMembers": "אין עדיין שרתי פרוקסי במאגר זה.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "נעשה שימוש ב-{exits, plural, one {יציאה אחת} other {# יציאות}} על ידי {connections, plural, one {חיבור אחד} other {# חיבורים}} · עד {max} ביציאה אחת · ב-{hours} השעות האחרונות", + "poolEgressObservationEmpty": "לא נצפתה תעבורה ב-{hours} השעות האחרונות", + "poolEgressObservationHint": "הנתונים נספרו מיומן הפרוקסי לאורך חלון הזמן: כתובות IP ייחודיות לתעבורה יוצאת שנצפו עבור החברים במאגר זה, וחיבורי OmniRoute שהשתמשו בהן. \"ביציאה אחת\" מתייחס לכל חלון הזמן, ולא לשימוש בו-זמני. חסימת 429 לכל כתובת IP משהה רק חיבורים מאותה משפחת ספקים.", "poolRemove": "הסר", "poolRemoveFailed": "הסרת הפרוקסי מהמאגר נכשלה", "poolAddLabel": "הוסף פרוקסי", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "נקודת קצה", + "provider": "ספק", + "model": "מודל", "accountKey": "Account Key", "autoAccounts": "אוטומטי ({count} חשבונות)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "שליחה", + "cancel": "ביטול", + "audioFile": "קובץ שמע", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "ניקוי הכול", + "request": "בקשה", + "response": "תגובה", + "transcription": "תמלול", + "copy": "העתקה", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "נוצרו {count} תמונות", "generatedImage": "תמונה שנוצרה {index}", - "save": "Save", + "save": "שמירה", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "תגובות", "completions": "השלמות", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "הטמעות", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "בדיקת תוכן", - "rerank": "Rerank", + "rerank": "דירוג מחדש", "search": "Search", "webFetch": "אחזור מהרשת" }, "conversationalChat": "צ'אט שיחה", "clearChat": "נקה צ'אט", "typeMessagePlaceholder": "הקלד הודעה... (Shift+Enter לשורה חדשה)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "צ׳אט", + "tabCompare": "השוואה", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "בנייה", + "configPane": "הגדרות", + "systemPrompt": "הנחיית מערכת", + "systemPromptPlaceholder": "אתה עוזר מועיל.", + "modelPlaceholder": "לדוגמה openai/gpt-4o", + "endpointLabel": "נקודת קצה", + "parametersLabel": "פרמטרים", + "collapseConfig": "כיווץ חלונית ההגדרות", + "expandConfig": "הרחבת חלונית ההגדרות", + "temperature": "טמפרטורה", + "maxTokens": "מספר אסימונים מרבי", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "קנס נוכחות", + "frequencyPenalty": "קנס תדירות", "reasoningLabel": "הסקה", "thinking": "חשיבה", "effort": "מאמץ", "effortDefault": "ברירת מחדל", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "אקראי (יש להשאיר ריק)", + "presetsLabel": "הגדרות קבועות מראש", + "loadPreset": "טעינת הגדרה קבועה מראש", + "savePreset": "שמירת הגדרה קבועה מראש", + "noPresets": "אין הגדרות קבועות מראש", + "presetNamePlaceholder": "שם ההגדרה הקבועה מראש", + "savingPreset": "שומר…", + "nameRequired": "נדרש שם", + "failedToSavePreset": "שמירת ההגדרה הקבועה מראש נכשלה", + "improvePrompt": "שיפור ההנחיה", + "improvingPrompt": "משפר…", + "improvePromptTitle": "שיפור ההנחיה שלך באמצעות AI", + "setModelFirst": "תחילה יש להגדיר מודל", "setModelInConfigFirst": "הגדר מודל בחלונית ההגדרות תחילה.", "improvePromptFailed": "שיפור הפרומפט נכשל.", "improvePromptAria": "שפר פרומפט באמצעות AI", "confirmImprovePrompt": "אשר שיפור פרומפט", "improvePromptDescription": "פעולה זו תשלח את פרומפט המערכת הנוכחי שלך אל כדי ליצור גרסה משופרת.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "פעולה זו תצרוך מהמכסה של המודל שהוגדר ב-Config.", + "improveConfirm": "שיפור", + "exportCode": "ייצוא קוד", + "exportCodeTitle": "ייצוא קוד", "exportShort": "ייצוא", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "אין מצב זמין של סביבת הניסוי לייצוא.", "closeExportModal": "סגור מודאל ייצוא", "close": "סגור", "exportRealKeyWarning": "אזהרת אבטחה: הייצוא נחסם — זוהה מפתח API אמיתי בפלט. אנא אפס את מפתח ה-API שלך ונסה שוב.", @@ -11071,13 +11078,13 @@ "copyLangCode": "העתק קוד {language}", "loadingPresets": "טוען…", "loadPresetPlaceholder": "טען הגדרה מראש…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "העתקה", + "copiedCode": "הועתק!", + "addModel": "+ הוספת מודל", + "runAll": "הפעלת הכול", + "cancelAll": "ביטול הכול", + "maxColumnsReached": "עד {max} עמודות", + "modelPlaceholderCompare": "מודל (Cmd+K)…", "noModel": "אין מודל", "statusLabel": "סטטוס: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "ממתין לתגובה…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "הערכה בצד הלקוח", + "tokensLabel": "אסימונים", + "costLabel": "עלות", + "costEstimated": "(משוערת)", "ttftTitle": "זמן לטוקן הראשון (הערכה בצד הלקוח)", "tpsTitle": "טוקנים לשנייה (הערכה בצד הלקוח)", "tokenCountsTitle": "טוקנים של הפרומפט ↑ / טוקנים של ההשלמה ↓", "estimatedCostTitle": "עלות מוערכת (לא מובטח דיוק)", - "toolsLabel": "Tools", + "toolsLabel": "כלים", "toolsCount": "כלים ({count})", - "addTool": "Add tool", + "addTool": "הוספת כלי", "editTool": "ערוך כלי {name}", "removeTool": "הסר כלי {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "שם הפונקציה", "toolNameRequiredPlaceholder": "שם הפונקציה *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "תיאור (אופציונלי)", "toolParamsLabel": "פרמטרים (סכמת JSON)", "toolParamsJsonSchema": "סכמת JSON עבור פרמטרים", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "הפרמטרים חייבים להיות JSON תקין", + "structuredOutputLabel": "פלט מובנה", + "enableJsonMode": "הפעלת מצב JSON", + "disableJsonMode": "השבתת מצב JSON", + "invalidJson": "JSON לא תקין", "jsonMode": "מצב JSON", "jsonModeDescription": "כופה את response_format: json_schema", "schemaName": "שם הסכמה", @@ -11125,7 +11132,7 @@ "jsonSchemaEditor": "עורך סכמת JSON", "schemaValidated": "הסכמה אומתה", "validateSchema": "אמת סכמה", - "seed": "Seed", + "seed": "זרע", "stopSequences": "רצפי עצירה", "stopSequencesPlaceholder": "לדוגמה \"\\n\\n\" או \"END\"", "autoProvider": "אוטומטי", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} עמודות", "addModelToCompare": "הוסף עמודת מודל להשוואה", "modelsSimultaneously": "עד {max} מודלים בו-זמנית", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "פועל…", + "runLabel": "הפעלה", + "enterToolResult": "הזנת תוצאת הכלי…", "build": { "step1Label": "מה לבדוק?", "step2Label": "הגדר", @@ -11221,7 +11228,7 @@ "noAudioUrl": "התגובה לא כללה כתובת URL של שמע: {response}", "music": "מוזיקה", "embeddingSample": "OmniRoute מנתב בקשות AI בין מספר ספקים.", - "embedding": "Embedding", + "embedding": "הטמעה", "imageSample": "עיר עתידנית בשקיעה, תאורה קולנועית", "image": "תמונה", "ttsSample": "שלום מ-OmniRoute. זוהי בדיקת טקסט לדיבור.", @@ -11237,7 +11244,7 @@ "searchResultFallback": "תוצאה {number}", "noKeysFound": "לא נמצאו מפתחות API. הוסף אחד במקטע המפתחות.", "exampleLabel": "דוגמה", - "latency": "{ms}ms", + "latency": "{ms} מ״ש", "statsLine": "{ms}ms · {tokensIn} טוקנים נכנסים / {tokensOut} טוקנים יוצאים", "defaultKey": "(ברירת מחדל)", "clear": "ניקוי", @@ -11250,73 +11257,73 @@ "stop": "עצור" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", - "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "recording": "מקליט", + "paused": "מושהה", + "pipelineLogsOn": "יומני Pipeline מופעלים", + "pipelineLogsOff": "יומני Pipeline מושבתים", + "updatingPipelineLogs": "יומני Pipeline מתעדכנים...", + "updatePipelineFailed": "עדכון רישום צינור העיבוד נכשל", + "capturePipeline": "לכוד את נתוני צינור העיבוד עבור בקשות חדשות", + "searchPlaceholder": "חיפוש דגמים, ספקים, חשבונות, מפתחות API, שילובים...", + "allProviders": "כל הספקים", + "allModels": "כל הדגמים", + "allAccounts": "כל החשבונות", + "allApiKeys": "כל מפתחות ה-API", + "total": "סה״כ", + "ok": "הצלחה", + "err": "שגיאה", + "combo": "שילוב", + "keys": "מפתחות", + "shown": "מוצגים", + "sortNewest": "החדשים ביותר", + "sortOldest": "הישנים ביותר", + "sortTokensDesc": "אסימונים ↓", + "sortTokensAsc": "אסימונים ↑", + "sortDurationDesc": "משך ↓", + "sortDurationAsc": "משך ↑", + "sortStatusDesc": "סטטוס ↓", + "sortStatusAsc": "סטטוס ↑", + "sortModelAsc": "דגם א׳-ת׳", + "sortModelDesc": "דגם ת׳-א׳", + "sortLogs": "מיון יומנים", + "refresh": "רענון", + "columnsLabel": "עמודות", + "cacheSem": "סמנטי", + "cacheUp": "במעלה הזרם", + "semantic": "סמנטי", + "upstream": "במעלה הזרם", + "semanticCacheHit": "פגיעה במטמון הסמנטי (סופק על ידי OmniRoute)", + "upstreamResponse": "תגובת הספק במעלה הזרם", + "noApiKey": "ללא מפתח API", + "requestedRoutedTitle": "התבקש {requested}, נותב בתור {routed}", "statusFilters": { - "all": "All", + "all": "הכול", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "הצלחה", + "combo": "שילוב" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "סטטוס", + "cacheSource": "מקור המטמון", + "model": "דגם", + "requested": "התבקש", + "provider": "ספק", + "protocol": "פרוטוקול הבקשה", + "account": "חשבון", + "apiKey": "מפתח API", + "combo": "שילוב", + "tokens": "טוקנים", "compressed": "דחיסה", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "משך זמן", + "time": "זמן", + "conversation": "שיחה", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "טוען יומנים...", + "noLogs": "אין עדיין יומנים. יש לבצע מספר קריאות API כדי לראות אותן כאן.", + "noMatchingLogs": "אין יומנים התואמים למסננים הנוכחיים.", + "callLogsInfo": "יומני הקריאות נשמרים גם כקובצי JSON ב-{dataDir}, ומתבצעת להם רוטציה בהתאם ל-{retentionDays} ול-{maxEntries}.", "loadMore": "טען עוד", "loadingMore": "טוען עוד...", "correlationId": "מזהה קורלציה", @@ -11417,59 +11424,59 @@ "correlationId": "מזהה קורלציה", "correlationIdValue": "מזהה קורלציה: {id}", "detailedPayloadInfo": "אפשר לוגים מפורטים קודם אם אתה רוצה את תצוגת העומס של הלקוח/ספק בארבעה שלבים עבור בקשות חדשות.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "העתקת הכול", + "copiedAll": "הכול הועתק" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "הכול", + "filterErrors": "שגיאות", + "filterSuccess": "הצלחה", + "filterTimeout": "פג תוקף הזמן", + "colStatus": "סטטוס", + "colProxy": "פרוקסי", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "סוג", + "colLevel": "רמה", + "colProvider": "ספק", + "colTarget": "יעד", + "colLatency": "זמן השהיה", + "colClientIp": "כתובת IP של הלקוח", + "colTime": "זמן", + "recording": "הקלטה", + "paused": "מושהה", + "searchPlaceholder": "חיפוש מארח, ספק, יעד, IP...", + "allTypes": "כל הסוגים", + "allLevels": "כל הרמות", + "allProviders": "כל הספקים", + "total": "סה״כ", + "ok": "תקין", + "err": "שגיאה", + "timeoutShort": "פסק זמן", + "direct": "ישיר", + "newest": "החדשים ביותר", + "oldest": "הישנים ביותר", + "latencyDesc": "השהיה ↓", + "latencyAsc": "השהיה ↑", + "refresh": "רענון", + "columns": "עמודות", + "loadingProxyLogs": "יומני ה-Proxy נטענים...", + "noProxyLogs": "עדיין אין יומני Proxy. הגדירו שרתי Proxy ובצעו קריאות API כדי לראות אותם כאן.", + "noMatchingLogs": "אין יומנים התואמים למסננים הנוכחיים.", + "tlsFingerprint": "טביעת אצבע של TLS ב-Chrome 124", "colPublicIp": "כתובת IP ציבורית" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "דיבור", + "search": "חיפוש", + "images": "תמונות", + "chat": "צ'אט", + "music": "מוזיקה", + "responses": "תגובות", + "rerank": "דירוג מחדש", + "video": "וידאו", + "embeddings": "הטמעות", + "transcription": "תמלול" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "זמן ריצה", + "description": "ניטור בזמן אמת — שרידות בת 3 שכבות + הפעלות + התראות מכסה", + "pause": "השהיה", + "resume": "המשך", + "refreshNow": "רענון כעת", + "kpiSessions": "הפעלות", + "kpiCircuits": "מעגלים", + "kpiCooldowns": "תקופות צינון", + "kpiLockouts": "נעילות", + "hintStickyBound": "{count} מקושרים בקביעות", + "hintRecovering": "{count} מתאוששים", + "hintAllHealthy": "הכול תקין", + "hintOpen": "פתוח", + "hintConnsCooling": "חיבורים בתקופת צינון", + "hintModelsBlocked": "מודלים חסומים", + "resilienceTitle": "עמידות ב-3 שכבות", + "resilienceSubtitle": "משקף את מודל העמידות המתועד", + "providersHealthy": "{percent}% מהספקים תקינים", + "layer": "שכבה {n}", + "layer1Title": "מנתקי מעגל לספקים", + "layer1Desc": "עצירת התעבורה לספקים שנכשלים ברמת המקור", + "layer2Title": "תקופות צינון לחיבורים", + "layer2Desc": "דילוג על חשבון או מפתח בעייתי אחד; שאר החיבורים ממשיכים לשרת", + "layer3Title": "נעילות מודלים", + "layer3Desc": "נעילות מגבלת קצב לפי מודל; אותו חיבור ממשיך לשרת מודלים אחרים", + "badgeAffectedOf": "{affected} מתוך {total} מושפעים", + "badgeCooling": "{count} בתקופת צינון", + "badgeLocked": "{count} נעולים", + "emptyCircuits": "אין עדיין מנתקי מעגל פעילים", + "emptyCooldowns": "אין תקופות צינון פעילות לחיבורים", + "emptyLockouts": "אין נעילות מודלים", + "moreCooldowns": "+{count} תקופות צינון נוספות", + "moreLockouts": "+{count} נעילות נוספות", + "feedTitle": "עדכונים בזמן אמת", + "feedSubtitle": "{count} האירועים האחרונים", + "feedFilterAll": "הכול", + "feedFilterCircuits": "מעגלים", + "feedFilterCooldowns": "תקופות צינון", + "feedFilterLockouts": "נעילות", + "feedFilterSessions": "הפעלות", + "feedFilterQuotas": "מכסות", + "feedClear": "ניקוי", + "feedEmptyWaiting": "ממתין לאירועים... (מתבצע סקר כל 5 שניות)", + "feedEmptyFiltered": "אין אירועים התואמים למסנן זה", + "sessionsTitle": "הפעלות פעילות", + "sessionsSubtitle": "טביעות אצבע של בקשות המקושרות באופן עקבי (בזמן אמת)", + "sessionsActive": "{count} פעילות", + "sessionsEmptyTitle": "אין הפעלות פעילות", + "sessionsEmptyHint": "הפעלות מופיעות כאשר בקשות עוברות דרך ה-proxy", + "tblSession": "הפעלה", + "tblAge": "גיל", + "tblIdle": "לא פעיל", + "tblReqs": "בקשות", + "tblBoundTo": "משויך אל", + "topApiKeys": "מפתחות API מובילים", + "quotaMonitorsTitle": "ניטור מכסות", + "quotaMonitorsSubtitle": "מצב המכסה בזמן אמת לפי חלון חשבון", + "openQuota": "פתיחת מכסה", + "allQuotasHealthy": "כל המכסות תקינות", + "statusExhausted": "אזלה המכסה", + "statusAlerting": "התראה פעילה", + "statusError": "שגיאה", + "moreSuffix": "עוד +{count}" }, "quotaShare": { "weightPercent": "משקל %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "שיתוף מכסות", + "description": "שיתוף מכסות ספקים בין מפתחות API עם מגבלות באחוזים", + "newPool": "מאגר חדש", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "התצורה נשמרת ב-localStorage (עדיין אינה נשמרת בשרת). אכיפת מגבלה לכל בקשה עדיין אינה משולבת בצינור העיבוד של ה-proxy. מסך זה מאפשר לתכנן ולהציג באופן חזותי את חלוקת המכסה; האכיפה בפועל תתווסף בגרסה עתידית, עם שמירה ב-DB ויירוט קריאות upstream.", + "kpiActivePools": "מאגרים פעילים", + "kpiKeysAllocated": "מפתחות שהוקצו", + "kpiAvgUnallocated": "ממוצע שלא הוקצה", + "kpiProvidersWithQuota": "ספקים עם מכסה", + "emptyTitle": "לא הוגדרו מאגרים", + "emptyDescription": "יש ליצור מאגר כדי להקצות מפתחות API שישתפו את חלון המכסה של ספק בהתאם להקצאות באחוזים.", + "loading": "בטעינה…", + "removePool": "הסרת מאגר", + "removeConfirm": "להסיר את המאגר הזה?", + "pool": "מאגר", + "used": "בשימוש", + "allocationsCount": "הקצאות ({count})", + "allocatedFree": "{allocated}% הוקצו · {free}% פנויים", + "noAllocations": "טרם הוקצו מפתחות", + "capLabel": "מגבלה {value}", + "notTrackedYet": "(עדיין לא במעקב)", + "policy": "מדיניות", "apiKeyColumn": "מפתח API", "weightColumn": "משקל", "fairShareShort": "הוגן", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "קשיחה", + "policySoft": "גמישה", + "policyBurst": "חריגה זמנית", + "policyHardHint": "חסימה כאשר המפתח ממצה את ההקצאה", + "policySoftHint": "לאפשר חריגה ולהתריע בלבד", + "policyBurstHint": "לאפשר חריגה זמנית לתוך המאגר הפנוי", + "editAllocations": "עריכת הקצאות", + "newPoolTitle": "מאגר מכסה חדש", + "providerConnection": "חיבור לספק (חשבון)", + "selectConnection": "בחירת חיבור…", + "noEligibleConnections": "אין חיבורים עם נתוני מכסה. יש לרענן תחילה דרך /dashboard/quota.", + "quotaWindow": "חלון מכסה", + "selectWindow": "בחירת חלון…", + "alreadyUsedSuffix": "(כבר בשימוש)", + "windowReset": "איפוס", + "duplicatePoolError": "כבר קיים מאגר עבור החיבור והחלון האלה", + "cancel": "ביטול", + "createPool": "יצירת מאגר", + "editTitle": "עריכת הקצאות", + "noKeysAdded": "לא הוקצו מפתחות. ניתן להוסיף מפתח למטה.", + "totalLabel": "סך הכול: {percent}%", + "totalExceeded": "⚠ חורג מ-100%", + "addKey": "+ הוספת מפתח…", + "equalSplit": "חלוקה שווה", + "save": "שמירת הקצאות", "betaPreviewLabel": "בטא - תצוגה מקדימה של ממשק המשתמש.", "betaConfigSavedPrefix": "התצורה נשמרת ב", "betaConfigSavedSuffix": "(עדיין לא נמשך בשרת). אכיפת מכסה לפי בקשה עדיין לא מחוברת לצינור ה-proxy. מסך זה מאפשר לך לעצב ולדמיין את חלוקת המכסה; אכיפה אמיתית תנחת באיטרציה עתידית עם התמדה DB ויירוט שיחות במעלה הזרם.", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "כתובת URL בסיסית", "endpointsCollapse": "כווץ", "endpointsExpand": "הרחב", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic מקורי", "endpointsResponsesNote": "תגובות OpenAI — codex/github", "endpointsWsNote": "WebSocket — codex בלבד", "betaText": "שיתוף מכסות פעיל אך ייתכנו באגים. מצאתם אחד? אנא דווחו עליו.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "קבוצה זו עדיין מכילה בריכות — הקצה מחדש או מחק אותן תחילה.", "ungroupedTitle": "ללא קבוצה", "ungroupedHint": "בריכות אלו אינן משויכות לקבוצה מוכרת. ערוך בריכה כדי להעביר אותה לקבוצה אמיתית.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "לא ניתן להסיר את המאגר הזה.", + "dismiss": "סגירה" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "תוספים", + "description": "התקנה וניהול של תוספים להרחבת הפונקציונליות של OmniRoute", + "loading": "התוספים נטענים...", + "scanning": "מתבצעת סריקה...", + "scanForPlugins": "סריקה לאיתור תוספים", + "noPlugins": "לא מותקנים תוספים", + "noPluginsDescription": "יש למקם תיקיות של תוספים בתוך ~/.omniroute/plugins/ וללחוץ על סריקה.", + "activate": "הפעלה", + "deactivate": "השבתה", + "uninstall": "הסרת התקנה", + "uninstallConfirm": "להסיר את התקנת התוסף \"{name}\"?", + "pluginScanComplete": "סריקת התוספים הושלמה", + "pluginScanFailed": "סריקת התוספים נכשלה", + "activated": "{name} הופעל", + "deactivated": "{name} הושבת", + "activateFailed": "הפעלת {name} נכשלה", + "deactivateFailed": "השבתת {name} נכשלה", + "uninstalled": "התקנת {name} הוסרה", + "uninstallFailed": "הסרת {name} נכשלה", + "configure": "הגדרת תצורה: {name}", + "configurePlugin": "הגדרת תצורה", + "noConfigSettings": "לתוסף זה אין הגדרות הניתנות להתאמה.", + "saving": "שומר...", + "saveConfiguration": "שמירת התצורה", + "configurationSaved": "התצורה נשמרה", + "saveConfigurationFailed": "שמירת התצורה נכשלה", + "pluginNotFound": "התוסף לא נמצא", + "version": "גרסה", + "author": "מחבר", + "description_label": "תיאור", + "status": "מצב", + "enabled": "מופעל", + "disabled": "מושבת", "installedTab": "מותקן", "marketplaceTab": "מרקטפלייס", "marketplaceUrlLabel": "כתובת URL מותאמת אישית למרקטפלייס", @@ -11729,7 +11736,7 @@ "verified": "מאומת", "install": "התקנה", "installedFromMarketplace": "התוסף {name} הותקן!", - "hooks": "Hooks" + "hooks": "נקודות חיבור" }, "quotaPlans": { "title": "תוכניות ומכסות", @@ -11746,7 +11753,7 @@ "percent": "%", "requests": "בקשות", "tokens": "טוקנים", - "usd": "USD ($)" + "usd": "דולר ארה״ב ($)" }, "windowOptions": { "5h": "5 שעות", @@ -12040,7 +12047,7 @@ "agentBridgeModeDesc": "לכוד תעבורה מכל סוכני ה-IDE המחוברים", "customHostsMode": "מארחים מותאמים אישית", "customHostsModeDesc": "הוסף מארחים ספציפיים ליירוט", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "פרוקסי HTTP", "httpProxyModeDesc": "השתמש במשתנה הסביבה HTTP_PROXY", "systemWideMode": "כלל-מערכתי", "systemWideModeDesc": "יירט את כל תעבורת המערכת (מתקדם)", @@ -12057,7 +12064,7 @@ "resumeBtn": "המשך", "clearBtn": "נקה", "exportHar": "ייצוא .har", - "recordSession": "REC", + "recordSession": "הקלטה", "stopSession": "עצור", "liveBadge": "לייב", "offlineBadge": "אופליין", @@ -12179,7 +12186,7 @@ "acp": { "title": "סוכני ACP", "phrase": "ממשקי CLI ש-OmniRoute מפעיל כ-backend ביצוע (זרימה הפוכה)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "רוב המשתמשים יכולים להתעלם מכך — השתמשו בזה רק כאשר אינטגרציה דורשת זאת.", "flow": "לקוח → OmniRoute → הפעלת CLI (stdio/ACP) → תגובה", "seeOther": "ראה →" } @@ -12217,7 +12224,7 @@ "versionNotFound": "לא נמצא", "manualConfig": "הגדרה ידנית", "installGuide": "מדריך התקנה", - "endpointLabel": "Endpoint", + "endpointLabel": "נקודת קצה", "baseUrlFull": "כתובת URL בסיסית מלאה", "baseUrlPartial": "כתובת URL בסיסית חלקית", "refreshDetection": "רענון זיהוי", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "רישום, הצגה, בדיקה והסרה של נקודות קצה מסוג webhook. הגדרת מינויים לאירועים (request.completed, request.failed, quota.exceeded וכו׳) וניהול ניסיונות מסירה חוזרים." }, "omni-mcp": { "name": "שרת MCP", @@ -12390,15 +12397,15 @@ "description": "נקודות הקצה העיקריות להסקה תואמת OpenAI: השלמות צ'אט, שיבוצים (embeddings), תמונות, שמע (TTS/STT), בדיקות התאמה (moderations), דירוג מחדש (rerank) ו-Responses API. שטח האינטגרציה הראשי עבור סוכני AI." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: הפעלה כשרת", "description": "הפעל, עצור ואתחל מחדש את שרת OmniRoute מה-CLI. נהל מצב daemon, תצורת פורטים, שחזור אוטומטי, אינטגרציה עם מגש המערכת וקיצור הדרך לפתיחת לוח הבקרה." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: תקינות", "description": "בדוק את בריאות השרת, סטטוס הרכיבים ומדדים חיים מה-CLI. הרץ את `health`, `health components` ו-`health watch` עבור לוח בקרה בזמן אמת של מפסיקי זרם (circuit breakers) וסטטוס ספקים." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: ספקים", "description": "נהל חיבורי ספקים מה-CLI: הצג ספקים זמינים/מוגדרים, הוסף, בדוק, בדוק הכל (test-all), אמת, בצע רוטציה למפתחות API והצג מדדים לכל ספק." }, "cli-keys": { @@ -12535,7 +12542,7 @@ "categoryConfig": "הגדרות", "filterAll": "הכל", "coverageLabel": "כיסוי", - "mcpUrl": "MCP URL", + "mcpUrl": "כתובת URL של MCP", "a2aLink": "A2A", "mcpPrompt": "הוסף את נקודת הקצה הזו של MCP לסוכן שלך כדי להעניק לו 37 כלים של OmniRoute.", "a2aPrompt": "רשום את כרטיס הסוכן הזה במתזמר שלך כדי לאפשר האצלת משימות A2A.", @@ -12589,14 +12596,14 @@ "typeApikey": "מפתח API", "sortTypeFirst": "הקל ביותר תחילה", "sortTypeFirstHelp": "קבץ לפי מאמץ ההרשמה (ללא הרשמה → התחברות באמצעות OAuth → מפתח API), תוך שמירה על סדר האיכות בכל קבוצה", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "האמינים ביותר תחילה", + "sortByReliabilityHelp": "סדרו ספקים לפי שיעור הקריאות שהצליחו בחלון הזמן שנבחר. ספקים עם מעט מדי קריאות מכדי לקבוע שיעור שומרים על סדר הציונים שלהם, מתחת לספקים שנמדדו.", "typeLegend": "ללא הרשמה = אפס הגדרות · התחברות באמצעות OAuth = כניסה עם החשבון שלך · מפתח API = שימוש במפתח משלך או במסלול החינמי של אותו ספק", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "אמינות", + "colReliabilityHelp": "שיעור הקריאות שספק זה אכן השיב להן במהלך 24 השעות האחרונות. מקף מציין שהוא טיפל במעט מדי תעבורה מכדי לקבוע שיעור.", + "reliabilitySample": "{successes} מתוך {requests} קריאות הצליחו במהלך {hours} השעות האחרונות", + "reliabilityTooFew": "רק {requests} קריאות במהלך {hours} השעות האחרונות — מעט מדי מכדי לקבוע שיעור", + "reliabilityNoTraffic": "לא תועדו קריאות במהלך 24 השעות האחרונות" }, "discovery": { "title": "גילוי ספקים", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "תומך Radar", + "description": "אומת פיד חי של תומך OmniRoute Radar", + "criteria": "אמתו פיד חי וחתום של תומך Radar." }, "first-token": { "name": "טוקן ראשון", @@ -12948,8 +12955,8 @@ "description": "התרת חיבורים מרובים עבור כל צומת תאימות." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "השבתת בדיקות חלון ההקשר", + "description": "דלגו על הבדיקה המקומית של OmniRoute לחלון ההקשר ולמספר המרבי של אסימוני קלט בבקשות ישירות למודל יחיד. ספקים במעלה הזרם עדיין אוכפים את המגבלות בפועל שלהם. דחיסת הנחיות והגבלות על אסימוני פלט נשארות פעילות." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "הסרת פריטי פלט פנימיים של שלב הפרשנות מזרמי העברה של Responses API לפני העברתם ללקוחות. השבת דגל זה כדי לקבל פרשנות גולמית מהמקור." @@ -12985,7 +12992,7 @@ "description": "התרת שחזור זרם כדי לבקש את התגובה מחדש ולחבר אותה לאחר שביתים כבר הגיעו ללקוח." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "הפיכת המשך באמצע זרם לבטוח עבור קריאות לכלים: לעולם אין לחדש זרם שנקטע לאחר שנשלחה קריאה לכלי (בין שהיא עדיין מתבצעת ובין שכבר הסתיימה), ויש לעצור לאחר ניסיון המשך ריק אחד במקום לנצל את כל מכסת הניסיונות החוזרים." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "מעבר חד-פעמי לחיבור אח כאשר זרם נסגר לפני ששלח מסגרת שימושית כלשהי והניסיון החוזר המוגבל באותו חיבור מוצה. אם אין חיבור אח שמיש, מוחזרת שגיאת early-EOF המקורית. כבוי: early-EOF נשאר סופי לאחר הניסיון החוזר." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "הפעלת גישה לרשת בארגז החול של המיומנויות." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "לולאת כלים בניהול השרת", + "description": "המשיכו קריאות לא-מוזרמות לכלים בניהול השרת עד שהמודל יחזיר תגובה שהלקוח יכול להשתמש בה." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "מקור ה-Retry-After", + "description": "בתגובות אי-זמינות מצטברות מסוג 429/503, יש להשמיט את Retry-After כאשר לא ידוע מועד קונקרטי עתידי לניסיון חוזר במקום לשלוח ערך סינתטי של 1s, להוסיף את error.retry_after_provenance ולקרוא רמזים טקסטואליים לניסיון חוזר בנתיבי ריקון משולבים." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "עצירות תשתית בעדיפות מוגנת כ-502", + "description": "יש להשיב ב-502 במקום ב-503 כאשר יעד בעדיפות עם גיבוי למכסה בלבד עוצר את השילוב מסיבה שניתן להוכיח שאינה קשורה למכסה: מפסק מעגל פתוח של ספק או דילוג חזוי בשל זמן השהיה." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "תקינות הקומבו", "callLogs": "יומני שיחות", "costs": "עלויות", - "playground": "Playground", + "playground": "ארגז חול", "nestedCombo": "קומבו מקונן", "modelTarget": "יעד מודל", "weight": "{value}% משקל", @@ -13171,7 +13182,7 @@ "segmentHint": "כל מקטע = מאגר חינמי אחד · מניעת כפילויות במאגר, ספירה הוגנת (ללא תקרות מגבלת קצב מנופחות).", "boost": "פתחו עוד כ-{tokens}/חודש עם טעינה חד-פעמית של $10 ב-OpenRouter ‏(50 → 1000 בקשות/יום)", "uncapped": "חינם לצמיתות, ללא מגבלה מפורסמת (מוגבל בקצב) — גישה אמיתית, לא נספר בכותרת הראשית:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "עוד ~{tokens}/mo בכפוף לבדיקת זהות אזורית (למשל, אימות שם אמיתי בסין היבשתית) — מכסה אמיתית שאינה נכללת בנתון הראשי:", "tosRestricted": "{count, plural, one {מודל #} other {# מודלים}} מסומנים כחסומים לפי תנאי השימוש — ההחלטה בידיך", "provider": "ספק", "model": "מודל", @@ -13270,80 +13281,80 @@ "viewFullHistory": "הצג היסטוריה מלאה ב-GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "מדיניות ניתוב חשיבה", + "apiKeyTitle": "ניתוב חשיבה עבור מפתח API זה", + "subtitle": "נתבו מחדש מודלים ורמת מאמץ החשיבה ללא צורך בתמיכת הלקוח. הבקשות נשארות ללא שינוי כאשר אף כלל אינו תואם.", + "loadError": "לא ניתן היה לטעון את כללי החשיבה.", + "saveError": "הכלל אינו תקין או שלא ניתן היה לשמור אותו.", + "saved": "כלל החשיבה נשמר.", + "deleteConfirm": "למחוק את כלל החשיבה הזה?", + "deleteError": "לא ניתן היה למחוק את כלל החשיבה.", + "empty": "לא הוגדרו כללי חשיבה תואמים.", + "all": "הכול", + "any": "כל אחד", + "enabled": "מופעל", + "disabled": "מושבת", + "filterSearch": "חיפוש כללים", + "filterScope": "סינון לפי תחום", + "filterStatus": "סינון לפי סטטוס", + "allModels": "כל המודלים", + "keepModel": "השארת המודל", + "otherModel": "מודל אחר", + "combo": "שילוב", + "priorityShort": "עדיפות {value}", + "toggleAria": "הפעלת {name}", + "edit": "עריכה", + "delete": "מחיקה", + "name": "שם", + "description": "תיאור", + "scopeLabel": "תחום", + "apiKey": "מפתח API", + "sourceCombo": "שילוב מקור", + "connection": "חיבור", + "sourceModel": "מודל מקור או תו כללי", + "sourceModelOptional": "ריק = כל המודלים", + "sourceModelExample": "למשל gpt-5*", + "sourceEffort": "רמת מאמץ במקור", + "missing": "לא צוין", + "signalOnly": "אות חשיבה לא־בדיד", + "requestTags": "תגיות בקשה", + "requestTagsExample": "תכנות, פנימי", + "tagMode": "התאמת תגיות", + "effortMode": "מצב מאמץ", + "targetEffort": "מאמץ יעד", + "routingTarget": "יעד ניתוב", + "targetModel": "מודל יעד", + "targetCombo": "שילוב יעד", + "budgetAction": "תקציב חשיבה", + "budgetTokens": "אסימוני תקציב", + "priority": "עדיפות", + "saveChanges": "שמירת שינויים", + "add": "הוספת כלל", + "cancel": "ביטול", + "simulateTitle": "הדמיית כלל", + "model": "מודל", + "effort": "מאמץ", + "transport": "תעבורה", + "simulate": "הדמיה ללא שירות במעלה הזרם", + "extendedComboWarning": "התמיכה ב-Max/Ultra מאומתת בנפרד עבור כל יעד משולב במהלך הניתוב.", + "extendedUnknownWarning": "יש להזין מודל יעד כדי לאמת תמיכה ב-Max/Ultra.", + "extendedUnsupportedWarning": "ככל הידוע, Max/Ultra נתמך רק בדגמי Codex GPT-5.6 מתאימים. מודלים מותאמים אישית לא מוכרים מתקבלים על ידי השרת עם אזהרה.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "גלובלי", + "apiKey": "מפתח API", + "combo": "שילוב", + "model": "מודל", + "connection": "חיבור" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "ירושה מהלקוח", + "default": "שימוש בברירת המחדל", + "force": "אילוץ" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "שימור", + "remove": "הסרה", + "set": "הגדרת ערך קבוע" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "חי (זמן אמת)", "tierCommunity": "קהילתי (עיכוב של 30 יום)", "activateTitle": "הפעל רדאר", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "השוו בין גישת Community לגישה בזמן אמת, הבינו אילו נתונים ההתקנה שלכם מחליפה, ולאחר מכן בחרו כיצד להפעיל את Radar.", + "accessScaleTitle": "הבנת הגישה ל-Radar לפני ההפעלה", + "accessScaleIntro": "Radar אינו מבצע כל פעילות רשת עד שתבחרו להצטרף. בחרו בגישת Community או הפעילו מפתח תומך אישי לאחר עיון בכללים האלה.", + "accessCommunityRule": "Community — ללא צורך במפתח: הקטלוג המלא בעיכוב של 30 יום.", + "accessSingleUseRule": "כוכב + מעקב — לאחר ש-GitHub OAuth מאמת את שניהם, חשבון ה-GitHub שלכם מקבל קריאה אחת של הקטלוג בזמן אמת; לאחר מכן הגישה חוזרת ל-Community. לא ניתן להנפיק מחדש גישה חד-פעמית זו עבור אותו חשבון.", + "accessContributorRule": "תורמים — רק PRs שמוזגו, commits ושורות קובעים את הדירוג השבועי. 10 המובילים מקבלים 365 ימים; מקומות 11–100 מקבלים 90 ימים; תורמים מחוץ ל-100 המובילים אינם מקבלים תקופה כלשהי, ללא קשר למספר ה-PRs. יציאה מהדירוג לעולם אינה מקצרת זמן שכבר הוענק.", + "accessSupporterRule": "תומכים — רכישות חד-פעמיות מעניקות 6 חודשים, שנה אחת או גישה לכל החיים, ללא חידוש אוטומטי. רכישות, תרומות, תקופות של תורמים והענקות ידניות מצטברות; גישה לכל החיים תמיד גוברת.", + "accessUseTitle": "שימוש אישי, שחזור ובדיקה", + "accessInstallationRule": "רישיון אישי — השתמשו במפתח בהתקנה פעילה אחת בכל רגע נתון. OmniRoute אינו יוצר טביעת אצבע של החומרה. השחזור מבטל ומחליף מפתח שאבד מבלי לאפס את תאריך התפוגה שלו.", + "accessAbuseRule": "בדיקת שימוש לרעה — כתובת ה-IP הייחודית הרביעית בתוך 24 שעות יוצרת רק סימון לבדיקה ידנית; היא לעולם אינה חוסמת או מבטלת מפתח באופן אוטומטי.", + "accessOffersRule": "הצעות בזמן אמת נבחרות באופן ידני ועשויות להשתנות או לפוג.", + "privacyTitle": "אילו נתונים Radar מחליף", + "privacyDownloadsRule": "הורדות — ההתקנה שלכם מקבלת קטלוג ומטא-נתונים של הפניות החתומים באופן קריפטוגרפי; מפתח תקף לגישה בזמן אמת פותח גם הצעות חתומות ואת Intel.", + "privacySendsRule": "שליחה — סנכרון בצד השרת שולח את מפתח התומך כאסימון Bearer, ותשתית ה-HTTPS מקבלת את כתובת ה-IP של החיבור. רישום הבקשות לעדכון אינו שומר אף אחד מהערכים בצורתו הגולמית: הוא שומר גיבובים של מפתחות, נתוני שימוש מצטברים ו-IP HMAC מקוצר המתחלף מדי יום לצורך בדיקת שימוש לרעה.", + "privacyNeverRule": "לעולם אינם נאספים — הנחיות, תשובות, שיחות, פרטי גישה לספקים, תעבורת מודלים, זמן פעילות, השהיה ותצורת ספקים מקומית לעולם אינם נשלחים אל Radar.", + "activateButton": "הפעלת Community", "activating": "מפעיל...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "כבר יש לכם מפתח תומך?", + "keyInvalidFormatError": "תבנית המפתח אינה תקינה. עליו להתחיל ב-\"omr_\" ולאחר מכן להכיל 40 תווים הקסדצימליים.", + "activateWithKeyButton": "הפעלת גישת תומך", + "changeKeyButton": "שינוי מפתח", + "claimSectionTitle": "עדיין אין לכם מפתח תומך?", + "contributorButton": "אני תורם", + "contributorHint": "GitHub OAuth בודק את הדירוג השבועי הנוכחי: 10 המובילים מקבלים 365 ימים ומקומות 11–100 מקבלים 90 ימים. מספר ה-PRs לבדו לעולם אינו מעניק גישה מחוץ ל-100 המובילים.", + "supporterButton": "תמיכה בפרויקט", + "supporterHint": "אפשרויות חד-פעמיות ל-6 חודשים, לשנה אחת ולכל החיים אינן כוללות חידוש אוטומטי; תקופות זכאיות מצטברות וגישה לכל החיים גוברת.", "colProvider": "ספק", "colModel": "מודל", "colQuota": "מכסה", + "colLimits": "מגבלות קצב", + "trainsOnPrompts": "מתאמן על הנחיות", + "trainsOnPromptsHelp": "תנאי הספק מציינים שהוא עשוי לאמן מודלים על ההנחיות שאתם שולחים. לגבי מודלים ללא תג זה, מצוין שהם אינם עושים זאת או שאין לכך תיעוד — היעדר הצהרה אינו מהווה הבטחה.", + "limitsUnknownHelp": "המגבלות דווחו על ידי העדכון של Radar בלבד; לא פורסמו מגבלות עבור רשומה זו", + "contextUnknownHelp": "חלון ההקשר אינו ידוע עבור רשומה זו", + "capabilityUnknownHelp": "היכולת לא דווחה על ידי העדכון", "colContext": "הקשר", "colCapabilities": "יכולות", "colTos": "סיכון תנאי שירות", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "חדש", "setupGuide": "מדריך התקנה", "disabledByFeed": "מושבת על ידי פיד רדאר", "capTools": "כלים", "capVision": "חזון", "capThinking": "חשיבה", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "קטלוג", + "freeCreditsTab": "זיכויים בחינם", + "freeCreditsSubtitle": "קישורי הפניה מספקים במעקב של Radar — השימוש בהם אינו כרוך בעלות נוספת עבורכם ומסייע לתמוך ב-OmniRoute.", + "fixedLinksEmpty": "אין עדיין קישורי הפניה זמינים. יש לסנכרן את Radar כדי לבדוק אם יש עדכונים.", + "requiredActionLabel": "מה לעשות:", + "claimButton": "מימוש קרדיטים", + "campaignsTitle": "קמפיינים לזמן מוגבל", + "campaignsEmpty": "אין כרגע קמפיינים פעילים — כדאי לבדוק שוב מאוחר יותר.", + "campaignsUpsellCommunity": "קמפיינים לזמן מוגבל הם הטבה נוספת לתומכים. כל הקישורים הקבועים בעמוד הזה נשארים בחינם לכולם.", + "campaignsValidUntil": "בתוקף עד {date}", + "colActions": "פעולות", + "localBadge": "מקומי", + "editModel": "עריכה", + "saveModel": "שמירה", + "cancelEdit": "ביטול", + "resetModel": "איפוס שינויים מקומיים", + "hideModel": "הסתרה", + "restoreModel": "שחזור", + "hiddenModelsTitle": "מודלים מוסתרים", + "modelDisplayName": "שם תצוגה מקומי", + "modelEnabled": "מופעל מקומית", + "localStateSaveFailed": "שמירת ההגדרות המקומיות של Radar נכשלה", + "guidedCombos": "שילובים מודרכים", + "offers": "הצעות", + "intel": "מידע" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "שילובים מודרכים של Radar", + "subtitle": "יצירת חלופות בעדיפות מתוך מודלים חינמיים מקבילים שנבחרו על ידי Radar.", + "backToRadar": "חזרה אל Radar", + "loading": "הצעות לשילובים נטענות...", + "familyLabel": "משפחת מודלים", + "modelsLabel": "סדר עדיפות", + "strategyReason": "העדיפות משתמשת תחילה בתקציב החינמי המתחדש הגדול ביותר, ולאחר מכן עוברת לחלופות אצל ספקים פעילים.", + "generateButton": "יצירת שילוב", + "generating": "מתבצעת יצירה...", + "alreadyCreated": "כבר נוצר", + "created": "השילוב נוצר", + "noSuggestions": "אין כרגע משפחת מודלים מתאימה עם חיבורים פעילים לשני ספקים לפחות.", + "catalogRequired": "יש לסנכרן תחילה את הקטלוג של Radar כדי לטעון משפחות מודלים שנבחרו בקפידה.", + "loadFailed": "טעינת הצעות השילובים של Radar נכשלה.", + "createFailed": "יצירת השילוב נכשלה. יש לבדוק את החיבורים לספקים ולנסות שוב." }, "radarSetupPage": { "title": "הגדרת ספק", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "עמידות חיבור", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "החיבורים שלך מתאוששים אוטומטית", + "reassuranceDetail": "בדרך כלל אין צורך בפעולה. OmniRoute משבית זמנית חיבור לאחר תקלות, ולאחר מכן מנסה אותו שוב בבטחה.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "ניתן לשלוח בקשות", + "coolingDown": "ננסה שוב בקרוב", + "lockedOut": "דורש את תשומת לבך" }, "table": { "status": "סטטוס", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "דחה בקשות לפני שליחה כאשר המודל המטרה חסר יכולות נדרשות (חזון, כלים, פלט מובנה, חלון הקשר). מגן על בקשות ישירות מספק אחד שעוקפות את מסנן ההתאמה של שכבת הקומבו.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "דלגו על בדיקת חלון ההקשר המקומי ומספר אסימוני הקלט המרבי של OmniRoute עבור בקשות ישירות למודל יחיד. ספקי המקור עדיין אוכפים את המגבלות בפועל שלהם. דחיסת הנחיות והגבלות על אסימוני פלט יישארו פעילות.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "סטטיסטיקות החיפוש והחיפושים האחרונים סופרים רק ספקים שעדיין יש להם חיבור פעיל (ספקים ללא מפתח, כגון duckduckgo-free, נספרים תמיד). במצב כבוי, כל רשומת חיפוש שנשמרה נשארת עם מזהה ספק.", "publicSystem": { "notFound": { "title": "העמוד לא נמצא", @@ -14070,11 +14081,11 @@ "actionApprove": "אשר תוכנית", "actionCancel": "בטל", "actionSeeInGraph": "הצג בגרף", + "actionRepeat": "הרץ שוב", "actionDone": "הפעולה בוצעה", "actionFailed": "הפעולה נכשלה: {error}", "detailFailed": "טעינת הפרטים נכשלה: {error}", "mirroredInA2A": "משוקף ב-A2A", - "actionRepeat": "הרץ שוב", "repeatConfirm": "לחץ שוב כדי לאשר", "repeatDone": "נוצרה הרצה חדשה", "repeatUnavailable": "הקלט המקורי אינו זמין" @@ -14088,57 +14099,57 @@ "networkError": "שגיאת רשת — לא ניתן לעדכן את הגדרת החשיפה של הספק" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "הטבות לתומכים", + "subtitle": "הנחות רשמיות, זיכויים, תקופות ניסיון והטבות שותפים שנבדקו על ידי Radar.", + "backToRadar": "חזרה אל Radar", + "loading": "ההטבות נטענות...", + "refresh": "רענון ההטבות", + "refreshing": "מתבצע רענון...", + "loadFailed": "לא הצלחנו לרענן את ההטבות. המטמון המקומי האחרון שאומת נשמר.", + "empty": "אין כרגע הטבות פעילות זמינות.", + "keyRequiredTitle": "נדרש מפתח תומך", + "keyRequiredDescription": "ההטבות הן יתרון מקוון של Radar. הוסיפו מפתח תומך קיים במסך Radar, אמתו את מעמדכם כתורמים, או תמכו בפרויקט כדי לקבל מפתח.", + "contributorButton": "אני תורם/ת", + "supporterButton": "תמיכה בפרויקט", + "partnerBadge": "שותף", + "officialBadge": "רשמי", + "conditionsLabel": "תנאים:", + "validUntil": "בתוקף עד {date}", + "noExpiry": "לא פורסם תאריך תפוגה", + "openOffer": "הצגת ההטבה", + "trialDays": "{days, plural, one {יום #} other {# ימים}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "המודיעין של Radar", + "subtitle": "דירוגי ELO קנייניים של Radar ושינויים עובדתיים בקטלוג.", + "backToRadar": "חזרה אל Radar", + "loading": "המודיעין נטען...", + "refresh": "רענון המודיעין", + "syncing": "מתבצע רענון...", + "loadFailed": "לא הצלחנו לרענן את המודיעין. המטמון המקומי האחרון שאומת נשמר.", + "empty": "עדיין אין תמונת מצב מאומתת של המודיעין.", + "supporterBadge": "תומך Radar", + "methodology": "מתודולוגיה", + "eloMethod": "ELO, התחלתי {initial}, K={factor}", + "freshness": "עדכניות הקטלוג", + "ageDays": "{days, plural, one {בן יום אחד} other {בן # ימים}}", + "trend": "מגמת הקטלוג", + "modelDelta": "{current} מודלים, +{added} / -{removed}", + "ranking": "דירוג מודלים", + "noRankings": "עדיין אין השוואות מאומתות זמינות.", + "model": "מודל", + "category": "קטגוריה", + "rating": "דירוג", + "matches": "התאמות", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "חדש", + "aging": "מתיישן", + "stale": "מיושן" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "בצמיחה", + "stable": "יציב", + "shrinking": "מצטמצם" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "הבקשה חורגת מגבול ההקשר של הספק" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference הוא ידיד קוד פתוח של OmniRoute", + "description": "שער המדורג לפי עלות, המשווק מחדש עשרות מודלים מתקדמים דרך נקודת קצה אחת התואמת ל-OpenAI — ומנתב כל בקשה לספק הזול ביותר שעומד בתנאים, ולעולם לא מעל למחיר המחירון.", + "cta": "קבלת מפתח API", + "partnerLinkNote": "קישור שותף", + "dismissAriaLabel": "סגירה" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "השבתת היצירה של וריאציות לרמת החשיבה (למשל -low, -medium, -high) בקטלוג /v1/models." } diff --git a/src/i18n/messages/hi.json b/src/i18n/messages/hi.json index 5f0e06fdf5..473f9f45e8 100644 --- a/src/i18n/messages/hi.json +++ b/src/i18n/messages/hi.json @@ -31,7 +31,7 @@ "active": "सक्रिय", "inactive": "निष्क्रिय", "noData": "कोई डेटा उपलब्ध नहीं है", - "nothingHere": "Nothing here yet", + "nothingHere": "अभी यहाँ कुछ नहीं है", "configure": "कॉन्फ़िगर करें", "manualConfig": "मैनुअल कॉन्फ़िग", "manage": "प्रबंधित करें", @@ -47,7 +47,7 @@ "time": "समय", "details": "विवरण", "created": "बनाया गया", - "lastUsed": "Last Refreshed", + "lastUsed": "अंतिम बार रीफ़्रेश किया गया", "loadMore": "अधिक लोड करें", "noResults": "कोई परिणाम नहीं मिला", "reloadPage": "पृष्ठ पुनः लोड करें", @@ -70,89 +70,89 @@ "note": "नोट", "free": "निःशुल्क", "skipToContent": "सामग्री पर जाएं", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", - "accept": "Accept", - "accountId": "Account ID", + "maintenanceServerIssues": "सर्वर में समस्याएँ आ रही हैं। कुछ सुविधाएँ अनुपलब्ध हो सकती हैं।", + "maintenanceServerUnreachable": "सर्वर से संपर्क नहीं हो पा रहा है। पुनः कनेक्ट किया जा रहा है...", + "accept": "स्वीकार करें", + "accountId": "खाता ID", "alias": "Alias", - "apiKeyId": "API Key ID", - "apiKeyName": "API Key Name", - "apiKeySecret": "API Key Secret", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "apiKeyId": "API कुंजी ID", + "apiKeyName": "API कुंजी का नाम", + "apiKeySecret": "API कुंजी का सीक्रेट", + "authorization": "प्राधिकरण", + "content-type": "सामग्री का प्रकार", + "content-length": "सामग्री की लंबाई", "cookie": "Cookie", - "file": "File", - "host": "Host", + "file": "फ़ाइल", + "host": "होस्ट", "id": "ID", - "import": "Import", + "import": "आयात करें", "limit": "Limit", "offset": "Offset", - "open": "Open", - "origin": "Origin", - "promptTokens": "Prompt Tokens", - "completionTokens": "Completion Tokens", - "totalTokens": "Total Tokens", - "rawModel": "Raw Model", - "scope": "Scope", - "skill": "Skill", - "sortBy": "Sort By", - "sortOrder": "Sort Order", - "tab": "Tab", + "open": "खोलें", + "origin": "मूल स्रोत", + "promptTokens": "प्रॉम्प्ट टोकन", + "completionTokens": "पूर्णता टोकन", + "totalTokens": "कुल टोकन", + "rawModel": "रॉ मॉडल", + "scope": "दायरा", + "skill": "कौशल", + "sortBy": "इसके अनुसार क्रमित करें", + "sortOrder": "क्रम", + "tab": "टैब", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "टेक्स्ट क्षेत्र", + "tool": "टूल", + "toolId": "टूल ID", "web": "Web", - "whereUsed": "Where Used", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "resolve": "Resolve", - "force": "Force", + "whereUsed": "जहाँ उपयोग किया गया", + "whitelist": "अनुमत सूची", + "blacklist": "अवरुद्ध सूची", + "resolve": "समाधान करें", + "force": "बलपूर्वक", "base64url": "Base64 URL", "hex": "Hex", - "range": "Range", - "component": "Component", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", - "code": "Code", - "compatible": "Compatible", - "chat-completions": "Chat Completions", + "range": "सीमा", + "component": "घटक", + "redirect_uri": "रीडायरेक्ट URI", + "idempotency-key": "इडेम्पोटेंसी कुंजी", + "error_description": "त्रुटि का विवरण", + "code": "कोड", + "compatible": "संगत", + "chat-completions": "चैट पूर्णताएँ", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", - "hours": "Hours", + "auth_token": "प्रमाणीकरण टोकन", + "crypto": "क्रिप्टो", + "hours": "घंटे", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", - "resolveConnectionId": "Resolve Connection ID", - "resolve_connection_id": "Resolve Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "proxy_id": "प्रॉक्सी ID", + "proxyId": "प्रॉक्सी ID", + "connectionId": "कनेक्शन ID", + "resolveConnectionId": "कनेक्शन ID का समाधान करें", + "resolve_connection_id": "कनेक्शन ID का समाधान करें", + "scope_id": "स्कोप ID", + "scopeId": "स्कोप ID", + "jwtSecret": "JWT सीक्रेट", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", "builder-id": "Builder ID", - "musicDesc": "Music Description", - "musicGeneration": "Music Generation", + "musicDesc": "संगीत का विवरण", + "musicGeneration": "संगीत निर्माण", "idc": "IDC", - "cloud-status-changed": "Cloud status changed", - "where_used": "Where Used", - "windowMs": "Window (ms)", + "cloud-status-changed": "क्लाउड की स्थिति बदल गई", + "where_used": "कहाँ उपयोग किया गया", + "windowMs": "समयावधि (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", - "Failed to save pricing": "Failed to save pricing", - "Failed to reset pricing": "Failed to reset pricing", - "apikey": "API Key", + "TOOL_ALLOWLIST": "टूल की अनुमत सूची", + "TOOL_DENYLIST": "टूल की निषिद्ध सूची", + "Failed to save pricing": "मूल्य निर्धारण सहेजने में विफल", + "Failed to reset pricing": "मूल्य निर्धारण रीसेट करने में विफल", + "apikey": "API कुंजी", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "डैशबोर्ड पर जाएँ", + "checkSystemStatus": "सिस्टम की स्थिति जाँचें", + "selectModel": "मॉडल चुनें", "addModel": "मॉडल जोड़ें", "effortNone": "कोई नहीं", "effortLow": "कम", @@ -164,10 +164,10 @@ "reasoningEffort": "तर्क प्रयास", "wireApi": "वायर एपीआई", "modelAliases": "मॉडल उपनाम", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "कॉम्बो", + "noModelsFound": "कोई मॉडल नहीं मिला", + "clear": "साफ़ करें", + "done": "पूर्ण", "selectAll": "सभी चुनें", "unselectAll": "चयन हटाएँ", "visibleModels": "दृश्यमान", @@ -184,519 +184,519 @@ "selectAllProviders": "सभी प्रदाताओं की जांच करें", "clearProviderSelection": "प्रदाताओं को अनचेक करें", "providersSelectedCount": "{count} प्रदाताओं की जांच की गई", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "त्रुटि हुई", + "comboDeleted": "कॉम्बो हटा दिया गया", + "hide": "छिपाएँ", + "creating": "बनाया जा रहा है", + "comboCreated": "कॉम्बो बनाया गया", + "swapFormats": "फ़ॉर्मेट की अदला-बदली करें", + "daysAgo": "दिन पहले", + "retries": "पुनः प्रयास", + "errorDuringRestore": "पुनर्स्थापना के दौरान त्रुटि", + "eventsAppearHint": "इवेंट दिखाई देने का संकेत", + "noLockouts": "कोई लॉकआउट नहीं", + "webSearchDesc": "वेब खोज का विवरण", + "audioProvidersHeading": "ऑडियो प्रदाता शीर्षक", "cloudAgentProviders": "क्लाउड एजेंट प्रदाता", - "minutesAgo": "Minutes Ago", + "minutesAgo": "मिनट पहले", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "लाइव स्वतः रीफ़्रेश हो रहा है", + "webSearch": "वेब खोज", + "anthropicPrefixPlaceholder": "Anthropic प्रीफ़िक्स प्लेसहोल्डर", + "addModelToCombo": "कॉम्बो में मॉडल जोड़ें", + "failedToLoad": "लोड करने में विफल", + "categoryMedia": "मीडिया श्रेणी", + "enableCloud": "क्लाउड सक्षम करें", + "expirationBannerExpiringSoon": "समाप्ति बैनर जल्द समाप्त हो रहा है", + "retry": "पुनः प्रयास करें", + "embeddings": "एम्बेडिंग्स", + "errorCount": "त्रुटियों की संख्या", + "backupReasonManual": "मैन्युअल बैकअप का कारण", + "safeSearchModerate": "मध्यम सुरक्षित खोज", + "activeLimiters": "सक्रिय सीमाकारक", + "a2aCardTitle": "A2A कार्ड शीर्षक", + "cloudWorkerUnreachable": "क्लाउड वर्कर तक पहुँचा नहीं जा सका", + "testFailed": "परीक्षण विफल", + "compatibleBaseUrlHint": "संगत बेस URL संकेत", + "usageTracking": "उपयोग ट्रैकिंग", + "disableCloudTitle": "क्लाउड अक्षम करने का शीर्षक", + "noConnections": "कोई कनेक्शन नहीं", + "providerHealth": "प्रदाता की स्थिति", + "confirmDbImport": "डेटाबेस आयात की पुष्टि करें", + "notAvailableSymbol": "उपलब्ध नहीं का प्रतीक", + "backupsAvailable": "बैकअप उपलब्ध हैं", + "providerAuto": "स्वचालित प्रदाता", + "newProviderNamePlaceholder": "नए प्रदाता के नाम का प्लेसहोल्डर", + "a2aQuickStartStep2": "A2A त्वरित आरंभ चरण 2", + "ok": "ठीक है", + "available": "उपलब्ध", + "noBackupYet": "अभी तक कोई बैकअप नहीं", + "more": "अधिक", + "noCompatibleYet": "अभी तक कोई संगत विकल्प नहीं", + "multiProvider": "बहु-प्रदाता", + "repairEnvHint": "पर्यावरण सुधार संकेत", + "disablingCloud": "क्लाउड अक्षम किया जा रहा है", + "testBench": "परीक्षण बेंच", + "valid": "मान्य", + "cloudBenefitShare": "क्लाउड लाभ साझाकरण", + "mcpCardTitle": "Mcp कार्ड शीर्षक", + "disableConfirm": "अक्षम करने की पुष्टि करें", + "filters": "फ़िल्टर", + "expirationBannerExpiredDesc": "समाप्ति बैनर की समय-सीमा समाप्त होने का विवरण", + "saveComboDefaults": "कॉम्बो डिफ़ॉल्ट सहेजें", + "cloudConnectedVerified": "क्लाउड कनेक्शन सत्यापित", + "uptime": "अपटाइम", + "compatibleProdPlaceholder": "संगत प्रोडक्शन प्लेसहोल्डर", + "fallbackChainsTitle": "फ़ॉलबैक शृंखलाओं का शीर्षक", + "oauthLabel": "Oauth लेबल", + "a2aCardDescription": "A2A कार्ड विवरण", + "okShort": "ठीक है", + "maintenance": "रखरखाव", + "formatConverter": "फ़ॉर्मैट कन्वर्टर", + "zedImportNetworkError": "Zed आयात नेटवर्क त्रुटि", + "apiKeyLabel": "Api कुंजी लेबल", + "noModelsForProvider": "प्रदाता के लिए कोई मॉडल नहीं", + "mcpCardDescription": "Mcp कार्ड विवरण", + "apiTypeLabel": "Api प्रकार लेबल", + "configuredProvidersLabel": "कॉन्फ़िगर किए गए प्रदाताओं का लेबल", + "maxRetriesLabel": "अधिकतम पुनः प्रयास लेबल", + "title": "शीर्षक", + "output": "आउटपुट", + "prefixHint": "उपसर्ग संकेत", + "skipWizard": "विज़ार्ड छोड़ें", + "failedCount": "विफल संख्या", + "confirmDbImportDesc": "Db आयात की पुष्टि का विवरण", + "entries": "प्रविष्टियाँ", + "until": "तक", + "disableCombo": "कॉम्बो अक्षम करें", + "liveMonitorDescriptionPrefix": "लाइव मॉनिटर विवरण उपसर्ग", + "runningCount": "चल रहे कार्यों की संख्या", + "noActiveConnectionsInGroup": "समूह में कोई सक्रिय कनेक्शन नहीं", + "savedSuccessfully": "सफलतापूर्वक सहेजा गया", + "systemStorage": "सिस्टम संग्रहण", + "videoDesc": "वीडियो विवरण", + "maxResults": "अधिकतम परिणाम", + "timeRangeMonth": "समय सीमा: महीना", + "testSummary": "परीक्षण सारांश", + "failedSetPassword": "पासवर्ड सेट करने में विफल", + "audio": "ऑडियो", + "restore": "पुनर्स्थापित करें", + "disableWarning": "चेतावनी अक्षम करें", + "moderationsDesc": "मॉडरेशन का विवरण", + "providerHealthStatusAria": "प्रदाता की स्वास्थ्य स्थिति का ARIA", + "modelNamePlaceholder": "मॉडल नाम का प्लेसहोल्डर", + "mcpQuickStartStep2": "Mcp त्वरित आरंभ चरण 2", + "quickStart": "त्वरित आरंभ", + "fullExportFailedWithError": "त्रुटि के कारण पूर्ण निर्यात विफल", + "loadingBackups": "बैकअप लोड हो रहे हैं", + "anthropicBaseUrlPlaceholder": "Anthropic बेस URL का प्लेसहोल्डर", + "description": "विवरण", + "noProviderFound": "कोई प्रदाता नहीं मिला", + "auto": "स्वचालित", + "protocolsDescription": "प्रोटोकॉल का विवरण", + "cloudSessionNote": "क्लाउड सत्र नोट", + "advancedSettings": "उन्नत सेटिंग्स", + "defaultStrategy": "डिफ़ॉल्ट रणनीति", + "purgeExpiredLogs": "समाप्त हो चुके लॉग हटाएँ", + "justNow": "अभी-अभी", + "providerTestFailed": "प्रदाता परीक्षण विफल", + "openaiBaseUrlPlaceholder": "Openai बेस URL का प्लेसहोल्डर", + "image": "छवि", + "failedCreateChain": "श्रृंखला बनाने में विफल", + "importDatabase": "डेटाबेस आयात करें", + "allDataLocal": "सभी डेटा स्थानीय हैं", + "sectionTitle": "अनुभाग शीर्षक", + "failedToggle": "टॉगल करने में विफल", + "editCombo": "कॉम्बो संपादित करें", + "testResults": "परीक्षण परिणाम", + "searchQuery": "खोज क्वेरी", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", - "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "duplicate": "डुप्लिकेट", + "createCombo": "कॉम्बो बनाएँ", + "searchTypeWeb": "खोज प्रकार: वेब", + "addChain": "श्रृंखला जोड़ें", + "prefixLabel": "उपसर्ग लेबल", + "listModelsDesc": "मॉडल सूची का विवरण", + "databaseSize": "डेटाबेस का आकार", + "chainCreated": "चेन बनाई गई", + "providerTestTimeout": "प्रदाता परीक्षण की समय-सीमा", + "routingStrategy": "रूटिंग रणनीति", + "translateAction": "अनुवाद कार्रवाई", + "exportFailed": "निर्यात विफल", + "connectedVerificationPending": "कनेक्ट किया गया, सत्यापन लंबित", + "a2aQuickStartTitle": "A2A त्वरित शुरुआत का शीर्षक", + "couldNotTest": "परीक्षण नहीं किया जा सका", + "testAllCompatible": "सभी संगत विकल्पों का परीक्षण करें", + "anthropicCompatibleName": "Anthropic संगत नाम", + "disabling": "अक्षम किया जा रहा है", + "failedEnable": "सक्षम करना विफल", + "categoryUtility": "उपयोगिता श्रेणी", + "customUrlOptional": "कस्टम URL वैकल्पिक", + "localProviders": "स्थानीय प्रदाता", + "comboNamePlaceholder": "कॉम्बो नाम प्लेसहोल्डर", + "memoryRss": "मेमोरी RSS", + "disableProvider": "प्रदाता को अक्षम करें", + "welcomeDesc": "स्वागत विवरण", + "nameLabel": "नाम लेबल", + "allOperational": "सभी कार्यरत हैं", + "backupNow": "अभी बैकअप लें", + "providerMaxRetriesAria": "प्रदाता के अधिकतम पुनः प्रयास का ARIA", + "textToSpeechDesc": "टेक्स्ट-टू-स्पीच का विवरण", + "machineId": "मशीन ID", + "globalProxy": "वैश्विक प्रॉक्सी", + "hitsMisses": "हिट और मिस", + "testDesc": "परीक्षण विवरण", + "chatDesc": "चैट विवरण", + "importSuccess": "आयात सफल", + "chat": "चैट", + "a2aQuickStartStep1": "A2A त्वरित शुरुआत चरण 1", + "importFailed": "आयात विफल", + "inputPlaceholder": "इनपुट प्लेसहोल्डर", + "providerModelsTitle": "प्रदाता मॉडल का शीर्षक", + "lastBackup": "पिछला बैकअप", + "yourEndpoint": "आपका एंडपॉइंट", + "autoDisableThresholdDesc": "स्वतः अक्षम करने की सीमा का विवरण", + "rerankDesc": "पुनः-रैंक विवरण", + "modelsPathPlaceholder": "मॉडल पथ प्लेसहोल्डर", + "noCombosYet": "अभी तक कोई कॉम्बो नहीं", + "connectedVerificationPendingWithError": "कनेक्टेड, त्रुटि के कारण सत्यापन लंबित", + "comboDefaultsGuideHint1": "कॉम्बो डिफ़ॉल्ट गाइड संकेत 1", + "enableCloudTitle": "क्लाउड सक्षम करें शीर्षक", + "configuredProvidersHint": "कॉन्फ़िगर किए गए प्रदाताओं का संकेत", + "paused": "रोका गया", + "llmProviders": "LLM प्रदाता", + "enableCombo": "कॉम्बो सक्षम करें", + "removeProviderOverrideAria": "प्रदाता ओवरराइड हटाएँ एरिया", + "nodeVersion": "Node संस्करण", + "openai": "OpenAI", + "exportFailedWithError": "त्रुटि के कारण निर्यात विफल", + "proxyConfigured": "प्रॉक्सी कॉन्फ़िगर किया गया", + "concurrencyPerModel": "प्रति मॉडल समवर्ती अनुरोध", + "protocolTasksLabel": "प्रोटोकॉल कार्य लेबल", + "oauthProviders": "OAuth प्रदाता", + "lockedCount": "लॉक की गई संख्या", + "deleteChainConfirm": "चेन हटाने की पुष्टि करें", + "recentTranslations": "हाल के अनुवाद", + "zedImportButton": "Zed आयात बटन", + "responsesDesc": "प्रतिक्रियाओं का विवरण", + "testedCount": "परीक्षण की गई संख्या", + "providersCommaSeparatedPlaceholder": "अल्पविराम से अलग किए गए प्रदाताओं का प्लेसहोल्डर", + "signatureDefaults": "हस्ताक्षर डिफ़ॉल्ट", + "errorCreating": "बनाने में त्रुटि", + "timeRangeYear": "समय सीमा: वर्ष", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "क्लाउड सफलतापूर्वक अक्षम किया गया", + "deleteConfirm": "हटाने की पुष्टि करें", + "check": "जाँचें", + "safeSearch": "सुरक्षित खोज", + "protocolLastActivity": "प्रोटोकॉल की अंतिम गतिविधि", + "openMcpDashboard": "MCP डैशबोर्ड खोलें", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "चैट पथ लेबल", + "retryDelay": "पुनः प्रयास विलंब", + "errorUpdating": "अपडेट करने में त्रुटि", + "ideCliIntegrations": "IDE CLI एकीकरण", + "imageGeneration": "छवि निर्माण", + "apiKeyRequired": "API कुंजी आवश्यक है", + "resetAllTitle": "सभी रीसेट करें शीर्षक", + "connectionError": "कनेक्शन त्रुटि", + "modelName": "मॉडल का नाम", + "apiKeyForCheck": "जाँच के लिए API कुंजी", + "cloudRequestTimeout": "क्लाउड अनुरोध टाइमआउट", + "showConfiguredOnly": "केवल कॉन्फ़िगर किए गए दिखाएँ", "showFreeOnly": "केवल निःशुल्क", "addFirstProvider": "अपना पहला प्रदाता जोड़ें", "addFirstProviderDesc": "ओमनीरूट के माध्यम से रूटिंग अनुरोध शुरू करने के लिए एआई प्रदाता से कनेक्ट करें। आप मुफ़्त प्रदाताओं, एपीआई कुंजियों या OAuth खातों का उपयोग कर सकते हैं।", "learnMore": "और जानें", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "डोमेन शामिल करें", + "promptCache": "प्रॉम्प्ट कैश", + "cloudConnected": "क्लाउड कनेक्टेड", + "deleteChain": "चेन हटाएँ", + "chatPathPlaceholder": "चैट पथ प्लेसहोल्डर", + "databasePath": "डेटाबेस पथ", + "usingLocalServer": "स्थानीय सर्वर का उपयोग हो रहा है", + "globalComboConfig": "वैश्विक कॉम्बो कॉन्फ़िगरेशन", + "backupFailed": "बैकअप विफल", + "tabProtocols": "टैब प्रोटोकॉल", + "continue": "जारी रखें", + "categorySearch": "श्रेणी खोज", + "rateLimitStatus": "दर सीमा स्थिति", + "repairEnvSuccess": "परिवेश की मरम्मत सफल", + "nameRequired": "नाम आवश्यक है", + "country": "देश", + "trackMetricsDesc": "मेट्रिक्स ट्रैक करने का विवरण", + "durationSecondsShort": "अवधि सेकंड में (संक्षिप्त)", + "formatConverterDescription": "फ़ॉर्मेट कन्वर्टर का विवरण", + "cloudBenefitAccess": "क्लाउड लाभों तक पहुँच", + "maxRetries": "अधिकतम पुनः प्रयास", + "queueTimeout": "कतार टाइमआउट", "queueDepth": "कतार की गहराई", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "प्रदाता जोड़ें", + "realtime": "रीयल-टाइम", + "totalTranslations": "कुल अनुवाद", + "protocolActiveStreamsLabel": "प्रोटोकॉल सक्रिय स्ट्रीम लेबल", + "repairEnv": "परिवेश की मरम्मत करें", + "modelsCount": "मॉडल की संख्या", + "viewBackups": "बैकअप देखें", + "responsesApi": "Responses API", + "copyComboName": "कॉम्बो नाम कॉपी करें", + "failures": "विफलताएँ", + "failedUpdate": "अपडेट विफल", + "imageDesc": "चित्र का विवरण", + "failedCreate": "बनाना विफल रहा", + "remainingOfLimit": "सीमा में शेष", + "protocolsTitle": "प्रोटोकॉल शीर्षक", + "expirationBannerExpiringSoonDesc": "समाप्ति बैनर जल्द समाप्त होने का विवरण", + "source": "स्रोत", + "failed": "विफल", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "Mcp त्वरित शुरुआत चरण 1", + "runTest": "परीक्षण चलाएँ", + "loadingFallbackChains": "फ़ॉलबैक शृंखलाएँ लोड हो रही हैं", + "healthy": "स्वस्थ", + "version": "संस्करण", + "saveBlockWeighted": "भारित ब्लॉक सहेजें", + "zedImportNone": "Zed आयात: कोई नहीं", + "noBackupsYet": "अभी तक कोई बैकअप नहीं", + "noGlobalProxy": "कोई वैश्विक प्रॉक्सी नहीं", + "noModels": "कोई मॉडल नहीं", + "stickyLimit": "स्टिकी सीमा", + "passedCount": "उत्तीर्ण संख्या", + "zedImportFailed": "Zed आयात विफल रहा", + "saving": "सहेजा जा रहा है", + "testAll": "सभी का परीक्षण करें", + "globalProxyDesc": "वैश्विक प्रॉक्सी का विवरण", + "latencyP99": "विलंबता P99", + "connectingToCloud": "क्लाउड से कनेक्ट किया जा रहा है", + "responses": "प्रतिक्रियाएँ", + "errorDeleting": "हटाने में त्रुटि", + "openaiPrefixPlaceholder": "Openai प्रीफ़िक्स प्लेसहोल्डर", + "enterPassword": "पासवर्ड दर्ज करें", + "openA2aDashboard": "A2A डैशबोर्ड खोलें", + "enableProvider": "प्रदाता सक्षम करें", + "modeTest": "परीक्षण मोड", + "failedDeleteChain": "शृंखला हटाना विफल रहा", + "providerDesc": "प्रदाता का विवरण", + "templateLoadHint": "टेम्पलेट लोड करने का संकेत", + "lastFailure": "पिछली विफलता", + "moveDown": "नीचे ले जाएँ", + "providerLabel": "प्रदाता लेबल", + "clearCacheFailed": "कैश साफ़ करना विफल रहा", + "imagesGenerations": "छवि निर्माण", + "repairEnvWorking": "पर्यावरण की मरम्मत की जा रही है", + "millisecondsShort": "मिलीसेकंड संक्षिप्त", + "globalLabel": "वैश्विक लेबल", + "failuresPlural": "विफलताएँ", + "completionsLegacyDesc": "पुरानी पूर्णताओं का विवरण", + "searchProviders": "प्रदाता खोजें", + "chatPathHint": "चैट पथ संकेत", + "defaultStrategyDesc": "डिफ़ॉल्ट रणनीति का विवरण", + "latencyP95": "विलंबता P95", + "textToSpeech": "टेक्स्ट टू स्पीच", + "searchType": "खोज प्रकार", + "messages": "संदेश", + "aggregatorsGateways": "एग्रीगेटर और गेटवे", + "comboStrategyAria": "संयोजन रणनीति ARIA", + "input": "इनपुट", + "testingConnection": "कनेक्शन का परीक्षण हो रहा है", + "excludeDomains": "डोमेन को बाहर रखें", + "webCookieProviders": "वेब कुकी प्रदाता", + "allTestsPassed": "सभी परीक्षण सफल रहे", + "openaiCompatibleName": "Openai संगत नाम", + "warningCostOptimizedPartialPricing": "चेतावनी: लागत-अनुकूलित आंशिक मूल्य निर्धारण", + "comboDefaultsGuideTitle": "संयोजन डिफ़ॉल्ट मार्गदर्शिका का शीर्षक", + "hoursAgo": "घंटे पहले", + "notAvailable": "उपलब्ध नहीं", + "skipAndContinue": "छोड़ें और जारी रखें", + "moderations": "मॉडरेशन", + "proxyConfig": "प्रॉक्सी कॉन्फ़िगरेशन", + "upstreamProxyProviders": "अपस्ट्रीम प्रॉक्सी प्रदाता", + "exportAll": "सभी निर्यात करें", + "queuedCount": "कतारबद्ध संख्या", + "resetAll": "सभी रीसेट करें", + "noTranslations": "कोई अनुवाद नहीं", + "avgLatency": "औसत विलंबता", + "throttleStatus": "थ्रॉटल स्थिति", + "backupRetentionDesc": "बैकअप अवधारण का विवरण", + "noCBData": "कोई CB डेटा नहीं", + "chainDeleted": "चेन हटा दी गई", + "timeLeft": "शेष समय", + "expirationBannerExpired": "समाप्ति बैनर: समय समाप्त", + "language": "भाषा", + "invalidFileType": "अमान्य फ़ाइल प्रकार", + "monitoredProviders": "निगरानी किए गए प्रदाता", + "errors": "त्रुटियाँ", + "heap": "हीप", + "chatCompletions": "चैट पूर्णताएँ", + "exampleTemplatesHint": "उदाहरण टेम्पलेट संकेत", + "retryDelayLabel": "पुनः प्रयास विलंब लेबल", + "audioTranscription": "ऑडियो ट्रांसक्रिप्शन", + "fallbackChainsDesc": "फ़ॉलबैक शृंखलाओं का विवरण", + "exampleTemplates": "उदाहरण टेम्पलेट", + "connectionsCount": "कनेक्शनों की संख्या", + "modelsPathLabel": "मॉडल पथ लेबल", + "activeProvidersHint": "सक्रिय प्रदाता संकेत", + "activeLockouts": "सक्रिय लॉकआउट", + "invalid": "अमान्य", + "skipPassword": "पासवर्ड छोड़ें", + "moveUp": "ऊपर ले जाएँ", + "timeRange": "समय सीमा", + "stickyLimitDesc": "स्टिकी सीमा का विवरण", + "cloudBenefitEdge": "क्लाउड लाभ का आधार", + "custom": "कस्टम", + "verifying": "सत्यापित किया जा रहा है", + "baseUrlLabel": "आधार URL लेबल", + "setPassword": "पासवर्ड सेट करें", + "safeSearchStrict": "सख़्त सुरक्षित खोज", + "noChangesSinceBackup": "बैकअप के बाद कोई बदलाव नहीं", + "modelsPathHint": "मॉडल पथ संकेत", + "audioTranscriptions": "ऑडियो ट्रांसक्रिप्शन", + "testCombo": "कॉम्बो का परीक्षण करें", + "mcpQuickStartTitle": "Mcp त्वरित शुरुआत शीर्षक", + "comboUpdated": "कॉम्बो अपडेट किया गया", + "weighted": "भारित", + "providers": "प्रदाता", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "कोई फ़ॉलबैक शृंखला नहीं—विवरण", + "yesImport": "हाँ, आयात करें", + "lockoutsAutoRefreshHint": "लॉकआउट स्वतः रीफ़्रेश संकेत", + "tabApis": "Apis टैब", + "sectionDescription": "अनुभाग का विवरण", + "filter": "फ़िल्टर", + "purgeLogsFailed": "लॉग हटाना विफल रहा", + "latency": "विलंबता", + "testAllOAuth": "सभी OAuth का परीक्षण करें", + "mcpQuickStartStep3": "Mcp त्वरित शुरुआत चरण 3", + "repairEnvFailed": "Env की मरम्मत विफल रही", + "zedImportHint": "Zed आयात संकेत", + "modelsAcrossEndpoints": "एंडपॉइंट्स पर उपलब्ध मॉडल", + "autoDisableBannedAccounts": "प्रतिबंधित खातों को स्वतः अक्षम करें", + "securityDesc": "सुरक्षा विवरण", + "listModels": "मॉडल सूचीबद्ध करें", + "backupRestore": "बैकअप पुनर्स्थापित करें", + "target": "लक्ष्य", + "zedImportSuccess": "Zed आयात सफल रहा", + "lastHeaderUpdate": "अंतिम हेडर अपडेट", + "categoryCore": "मुख्य श्रेणी", + "noFallbackChains": "कोई फ़ॉलबैक शृंखला नहीं", + "noSearchProviders": "कोई खोज प्रदाता नहीं", + "autoBalance": "स्वतः संतुलन", + "noModelsYet": "अभी तक कोई मॉडल नहीं", + "signatureFamily": "सिग्नेचर परिवार", + "externalApiCalls": "बाहरी API कॉल", + "providerOverridesDesc": "प्रदाता ओवरराइड का विवरण", + "signatureTool": "सिग्नेचर टूल", + "connectionFailed": "कनेक्शन विफल रहा", + "activeLimitersPlural": "सक्रिय लिमिटर", + "doneDesc": "पूर्ण होने का विवरण", + "down": "बंद", + "noDataYet": "अभी तक कोई डेटा नहीं", + "activeProviders": "सक्रिय प्रदाता", + "nameInvalid": "नाम अमान्य है", + "skip": "छोड़ें", + "createChain": "शृंखला बनाएँ", + "audioSpeech": "ऑडियो स्पीच", + "cacheCleared": "कैश साफ़ किया गया", + "searchTypeNews": "खोज प्रकार: समाचार", + "durationMillisecondsShort": "अवधि (मिलीसेकंड में संक्षिप्त)", + "addOpenAICompatible": "OpenAI-संगत जोड़ें", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "कतार में", + "domainPlaceholder": "डोमेन प्लेसहोल्डर", + "durationMinutesShort": "अवधि (मिनट में संक्षिप्त)", + "verifyingConnection": "कनेक्शन सत्यापित किया जा रहा है", + "imageProviders": "इमेज प्रदाता", + "protocolToolsLabel": "प्रोटोकॉल टूल्स लेबल", + "queryPlaceholder": "क्वेरी प्लेसहोल्डर", + "videoGeneration": "वीडियो जनरेशन", + "timeRangeWeek": "समय सीमा: सप्ताह", + "limitExhausted": "सीमा समाप्त", + "failedDisable": "अक्षम करना विफल रहा", + "inMemoryNote": "इन-मेमोरी नोट", + "compatibleHint": "संगतता संकेत", + "errorShort": "संक्षिप्त त्रुटि", + "advancedHint": "उन्नत संकेत", + "restoreFailed": "पुनर्स्थापना विफल रही", + "searchProvidersHeading": "प्रदाता खोजें", + "comboName": "कॉम्बो नाम", + "autoDisableDescription": "स्वतः अक्षम करने का विवरण", + "embeddingsDesc": "एम्बेडिंग का विवरण", + "operational": "परिचालन में", + "testAllApiKey": "सभी API कुंजियों का परीक्षण करें", + "backupCreated": "बैकअप बनाया गया", + "errorDuringImport": "आयात के दौरान त्रुटि", + "comboDefaultsGuideHint2": "कॉम्बो डिफ़ॉल्ट गाइड संकेत 2", + "connecting": "कनेक्ट हो रहा है", + "fillModelAndProviders": "मॉडल और प्रदाता भरें", + "syncing": "सिंक हो रहा है", + "resetConfirm": "रीसेट की पुष्टि करें", + "trackMetrics": "मेट्रिक्स ट्रैक करें", + "successful": "सफल", + "recovering": "पुनर्प्राप्त किया जा रहा है", + "autoDisableThreshold": "स्वतः अक्षम करने की सीमा", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "डेटा सिंक हो रहा है", + "cloudBenefitPorts": "क्लाउड लाभ: पोर्ट्स", + "compatibleProviders": "संगत प्रदाता", "freeTierProviders": "निःशुल्क स्तरीय प्रदाता", "freeTierLabel": "निःशुल्क टियर उपलब्ध है", "freeTierProvidersDesc": "मुफ़्त स्तरों वाले प्रदाता - कुछ को एपीआई कुंजी साइनअप की आवश्यकता होती है, अन्य को किसी भी क्रेडेंशियल की आवश्यकता नहीं होती है।", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "कैश साफ़ करें", + "reqs": "अनुरोध", + "addAnthropicCompatible": "Anthropic-संगत प्रदाता जोड़ें", + "apiKeyProviders": "API कुंजी प्रदाता", + "tabsAria": "टैब्स ARIA", + "resetting": "रीसेट हो रहा है", + "millisecondsAbbr": "मि.से.", + "backupReasonPreRestore": "पुनर्स्थापना-पूर्व बैकअप का कारण", + "disableCloud": "क्लाउड अक्षम करें", + "newProviderNameAria": "नए प्रोवाइडर का नाम Aria", + "passwordsMismatch": "पासवर्ड मेल नहीं खाते", + "a2aQuickStartStep3": "A2A त्वरित शुरुआत चरण 3", + "liveMonitorDescriptionSuffix": "लाइव मॉनिटर विवरण प्रत्यय", + "failedAddProvider": "प्रोवाइडर जोड़ने में विफल", + "addAtLeastOneProvider": "कम से कम एक प्रोवाइडर जोड़ें", + "reasonSeparator": "कारण विभाजक", + "zedImporting": "Zed आयात कर रहा है", + "confirmPasswordPlaceholder": "पासवर्ड की पुष्टि करें प्लेसहोल्डर", + "whatYouGet": "आपको क्या मिलता है", + "signatureSession": "सिग्नेचर सत्र", + "errorCountNoCode": "कोड के बिना त्रुटियों की संख्या", + "testing": "परीक्षण किया जा रहा है", + "providersCommaSeparated": "कॉमा से अलग किए गए प्रोवाइडर", + "exportDatabase": "डेटाबेस निर्यात करें", + "hitRate": "हिट दर", + "completionsLegacy": "कम्प्लीशन्स लिगेसी", + "removeModel": "मॉडल हटाएँ", + "timeRangeDay": "समय सीमा: दिन", + "cloudRequestFailed": "क्लाउड अनुरोध विफल", + "updatedAt": "अपडेट का समय", + "monitoredProvidersHint": "मॉनिटर किए गए प्रोवाइडर का संकेत", + "connectionSuccessful": "कनेक्शन सफल रहा", + "latencyP50": "लेटेंसी P50", + "logsDeleted": "लॉग हटा दिए गए", + "chatTester": "चैट परीक्षक", + "safeSearchOff": "सुरक्षित खोज बंद", + "nameHint": "नाम का संकेत", + "debugToggle": "डीबग टॉगल", + "embedding": "एम्बेडिंग", + "issuesLabel": "समस्याओं का लेबल", + "optionAny": "विकल्प: कोई भी", + "maxNestingDepth": "नेस्टिंग की अधिकतम गहराई", + "rerank": "पुनः रैंक करें", + "checking": "जाँच की जा रही है", + "getStarted": "आरंभ करें", + "restoreSuccess": "पुनर्स्थापना सफल रही", + "issuesDetected": "समस्याएँ पाई गईं", + "signatureCache": "सिग्नेचर कैश", + "modelLockouts": "मॉडल लॉकआउट", + "usingCloudProxy": "Cloud Proxy का उपयोग", + "loadingHealth": "स्वास्थ्य स्थिति लोड हो रही है", + "providerOverrides": "प्रदाता ओवरराइड", + "audioTranscriptionDesc": "ऑडियो ट्रांसक्रिप्शन विवरण", + "learnedFromHeaders": "हेडर से प्राप्त जानकारी", + "totalRequests": "कुल अनुरोध", + "cloudUnstableNote": "Cloud की अस्थिरता संबंधी टिप्पणी", "gamificationAdmin": "गेमिफ़िकेशन एडमिन", "monitorAnomaliesAndHealth": "विसंगतियों और सिस्टम स्वास्थ्य की निगरानी करें", "flaggedAnomalies": "चिन्हित विसंगतियाँ", @@ -704,7 +704,7 @@ "apiKey": "एपीआई कुंजी", "xpLastHour": "एक्सपी (1 घंटा)", "zScore": "Z-स्कोर", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "संदिग्ध", "tokensCommunityServers": "सामुदायिक सर्वर", "tokensServerNamePlaceholder": "सर्वर का नाम", "tokensApiKeyPlaceholder": "एपीआई कुंजी", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "और अधिक लोड हो रहा है...", "recommended": "अनुशंसित", "understand": "मुझे समझ आ गया", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "बैच प्रोसेसिंग", + "batchConceptSubtitle": "लगभग 50% लागत पर हज़ारों अनुरोधों को असिंक्रोनस रूप से प्रोसेस करें (24 घंटे की अवधि)। मूल्यांकन, वर्गीकरण और एम्बेडिंग के लिए आदर्श।", + "batchConceptHowItWorks": "यह कैसे काम करता है", + "batchConceptBenefit50pct": "इनपुट + आउटपुट टोकन पर 50% छूट", + "batchConceptAsync24h": "24 घंटे की पूर्णता अवधि के साथ असिंक्रोनस", + "batchConceptUseCases": "थोक वर्गीकरण, मूल्यांकन और एम्बेडिंग के लिए सर्वोत्तम", + "batchHeaderSubtitle": "कई अनुरोधों को एक जॉब के रूप में चलाएँ", + "batchStep1": "1 · JSONL अपलोड करें", + "batchStep1Desc": "अनुरोध जोड़ें", + "batchStep2": "2 · बैच बनाएँ", + "batchStep2Desc": "जॉब चलाएँ", + "batchStep3": "3 · परिणाम प्राप्त करें", + "batchStep3Desc": "आउटपुट डाउनलोड करें", + "filesConceptTitle": "बैच फ़ाइलें", + "filesConceptSubtitle": "बैच द्वारा उपयोग की जाने वाली JSONL फ़ाइलें: इनपुट अनुरोध, परिणाम और त्रुटियाँ।", + "filesConceptInput": "इनपुट — आपकी JSONL, जिसमें प्रत्येक पंक्ति में एक अनुरोध हो", + "filesConceptOutput": "आउटपुट — पूर्ण किए गए अनुरोधों के परिणाम", + "filesConceptError": "त्रुटियाँ — विफल हुए अनुरोध", + "filesConceptRetention": "प्रतिधारण: डिफ़ॉल्ट रूप से 30 दिन (Anthropic पर 29 दिन)", + "wizardTitle": "नया बैच", + "wizardClose": "बंद करें", + "wizardNext": "अगला", + "wizardBack": "वापस", + "wizardCancel": "रद्द करें", + "wizardCreate": "बैच बनाएँ", + "wizardCreating": "बनाया जा रहा है…", + "wizardStep1Destination": "गंतव्य", + "wizardStep2Input": "इनपुट", + "wizardStep3Validate": "सत्यापित करें", + "wizardStep4Cost": "लागत और निर्माण", + "wizardProviderLabel": "प्रदाता", + "wizardEndpointLabel": "एंडपॉइंट", + "wizardModelLabel": "मॉडल", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (हम इसे कन्वर्ट करेंगे)", + "wizardDropOrPick": "फ़ाइल यहाँ छोड़ें या चुनने के लिए क्लिक करें", + "wizardCsvMappingTitle": "CSV कॉलम → अनुरोध फ़ील्ड मैप करें", + "wizardCsvMappingAddField": "फ़ील्ड जोड़ें", "wizardCsvNoColumns": "CSV हेडर में कोई कॉलम नहीं मिला.", "wizardCsvIgnoreColumn": "— अनदेखा करें —", "wizardCsvCustomIdMapped": "custom_id मैप किया गया", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} पंक्तियाँ पार्स की गईं", "wizardCsvRowsSkipped": "{count} पंक्तियाँ छोड़ी गईं", "wizardCsvRowError": "पंक्ति {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "सभी पंक्तियाँ मान्य हैं", "wizardValidating": "सत्यापित किया जा रहा है…", "wizardValidationParseFailed": "सत्यापन विफल रहा — सामग्री को पार्स नहीं किया जा सका।", "wizardValidationSummary": "{lines} पंक्तियाँ · {ids} अद्वितीय custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "डुप्लिकेट custom_ids का पता चला:", "wizardValidationFirstErrors": "त्रुटियाँ (पहली {count}):", "wizardValidationLine": "पंक्ति {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "सत्यापन त्रुटियाँ", + "wizardValidationPreview": "पूर्वावलोकन (पहले 5 अनुरोध)", + "wizardValidationSamplingNote": "फ़ाइल बड़ी है — नमूने के आधार पर सत्यापित की गई है (पहली 1000 + अंतिम 100 पंक्तियाँ)। पूर्ण सत्यापन सर्वर-साइड पर चलता है।", + "wizardCostSync": "सिंक लागत", + "wizardCostBatch": "बैच लागत (-50%)", + "wizardCostSavings": "बचत", + "wizardCostEstimatedNotice": "अनुमानित लागत — वास्तविक बिलिंग अलग हो सकती है।", + "wizardErrorUpload": "फ़ाइल अपलोड नहीं हो सकी। फिर से कोशिश करें।", + "wizardErrorCreate": "बैच नहीं बनाया जा सका। फिर से कोशिश करें।", + "wizardEmptyProviders": "बैच बनाने के लिए बैच समर्थन वाले प्रदाता (OpenAI, Anthropic, या Gemini) को कनेक्ट करें।", + "uploadModalTitle": "बैच फ़ाइल अपलोड करें", + "uploadModalDropOrPick": ".jsonl फ़ाइल यहाँ छोड़ें या चुनने के लिए क्लिक करें", + "uploadModalUpload": "अपलोड करें", + "uploadModalCancel": "रद्द करें", + "uploadModalError": "अपलोड विफल रहा। फिर से कोशिश करें।", + "uploadModalSuccess": "अपलोड किया गया", + "uploadModalSizeLimit": "अधिकतम 512 MB", + "batchListNewButton": "नया बैच", + "batchListAutoRefresh": "हर 30 सेकंड में ऑटो-रीफ़्रेश", + "batchListCostColumn": "लागत", + "batchActionCancel": "रद्द करें", + "batchActionDownloadOutput": "आउटपुट डाउनलोड करें", + "batchActionDownloadErrors": "त्रुटियाँ डाउनलोड करें", + "batchActionRetry": "विफल अनुरोधों को पुनः आज़माएँ", + "batchActionRetryConfirm": "{n} विफल अनुरोधों को पुनः आज़माएँ? अंतिम लागत उपयोग किए गए वास्तविक टोकन पर निर्भर करती है।", + "expirationBadgeCritical": "अत्यंत महत्वपूर्ण", + "expirationBadgeWarning": "जल्द", + "expirationBadgeNormal": "लंबित", + "expirationBadgeExpired": "समाप्त", + "filesListUploadButton": "अपलोड करें", + "filesListUsedByColumn": "इसके द्वारा उपयोग किया गया", + "filesListUsedByNone": "कोई नहीं", + "filesListUsedByRoleInput": "इनपुट", + "filesListUsedByRoleOutput": "आउटपुट", + "filesListUsedByRoleError": "त्रुटि", + "filesListSizeColumn": "आकार", + "batchListProgressPartial": "(आंशिक)", + "batchListProviderColumn": "प्रदाता", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "अन्य", + "batchListTitle": "बैच", + "batchListCount": "{count} बैच", + "batchListRemovingCompleted": "हटाया जा रहा है…", + "batchListRemoveCompleted": "हटाना पूर्ण हुआ", + "batchListTableStatus": "स्थिति", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "एंडपॉइंट", + "batchListTableModel": "मॉडल", + "batchListTableProgress": "प्रगति", + "batchListTableCreated": "बनाया गया", + "batchListTableExpires": "समाप्ति", + "batchListLoading": "लोड हो रहा है…", + "batchListEmpty": "कोई बैच नहीं मिला", + "batchListValidating": "सत्यापन हो रहा है…", + "batchStatusAll": "सभी स्थितियाँ", + "batchStatusInProgress": "प्रगति पर है", + "batchStatusValidating": "सत्यापन हो रहा है", + "batchStatusFinalizing": "अंतिम रूप दिया जा रहा है", + "batchStatusCompleted": "पूर्ण", + "batchStatusFailed": "विफल", + "batchStatusCancelled": "रद्द किया गया", + "batchStatusCancelling": "रद्द किया जा रहा है", + "batchStatusExpired": "समाप्त", + "batchStatusCompletedWithFailures": "विफलताओं के साथ पूर्ण", + "batchStatusInProgressWithFailures": "प्रगति पर है (विफलताओं के साथ)", + "batchStatusFinalizingWithFailures": "अंतिम रूप दिया जा रहा है (विफलताओं के साथ)", + "batchStatusCancelledWithFailures": "विफलताओं के साथ रद्द किया गया", + "batchStatusExpiredWithFailures": "समाप्त (आंशिक)", + "wizardCostEstimating": "लागत का अनुमान लगाया जा रहा है…", + "wizardCostRequests": "अनुरोध", + "wizardCostInputTok": "इनपुट टोकन", + "wizardCostOutputTok": "आउटपुट टोकन", + "wizardCostWindow": "विंडो", + "wizardDestinationSelectProvider": "प्रदाता चुनें…", + "wizardDestinationSelectModel": "मॉडल चुनें…", + "wizardDestinationConnectProvider": "प्रदाता कनेक्ट करें", + "batchListBatchCreated": "बैच {id} बनाया गया — सूची रीफ़्रेश की जा रही है…", + "batchListBatchCreatedDismiss": "खारिज करें", + "batchListRefreshing": "रीफ़्रेश हो रहा है…", + "batchListRefresh": "रीफ़्रेश करें", + "uploadFileModalRemove": "हटाएँ", + "uploadFileModalUploading": "अपलोड हो रहा है…", + "wizardInputReading": "फ़ाइल पढ़ी जा रही है…", + "wizardInputReady": "तैयार", + "wizardInputLargeFileLabel": "बड़ी फ़ाइल — नमूना सत्यापन", + "wizardInputCsvJsonlReady": "JSONL जनरेट किया गया — सत्यापन के लिए तैयार।", + "wizardInputLargeFileWarning": "बड़ी फ़ाइल मिली — सत्यापन नमूने के आधार पर चलता है (पहले 5 MB + अंतिम 100 KB)। पूर्ण सत्यापन सर्वर पर होता है।", + "wizardCostWindow24h": "24 घंटे की पूर्णता अवधि", + "wizardValidationFieldsOk": "आवश्यक फ़ील्ड मान्य हैं", + "filesListDelete": "हटाएँ", + "filesListDownload": "डाउनलोड करें", + "batchDetailActionCancel": "बैच रद्द करें", + "batchDetailActionRetry": "विफल अनुरोधों का पुनः प्रयास करें", + "batchDetailCancelling": "रद्द किया जा रहा है…", + "batchDetailRetrying": "पुनः प्रयास की तैयारी हो रही है…", + "batchDetailCancelConfirm": "यह बैच रद्द करें? प्रगतिरत अनुरोध रुक जाएँगे।", + "batchActionCancelError": "बैच रद्द नहीं किया जा सका। फिर से प्रयास करें।", + "batchActionRetryError": "विफल अनुरोधों का पुनः प्रयास नहीं किया जा सका। फिर से प्रयास करें।", + "batchConceptRetentionNote": "परिणाम और त्रुटि फ़ाइलें 30 दिनों तक रखी जाती हैं (Anthropic: 29 दिन)", "batchFilesSizeColumn": "आकार", "toggleNoAuthProvider": "नो-ऑथ प्रदाता टॉगल करें", "loadingModels": "मॉडल लोड हो रहे हैं…", @@ -988,14 +988,14 @@ "disabled": "अक्षम", "featureFlagOmnirouteEmergencyFallbackDescription": "बजट समाप्त हो चुके अनुरोधों को आपातकालीन निःशुल्क फ़ॉलबैक प्रदाता/मॉडल पर रूट करें।", "featureFlagArenaEloSyncEnabledDescription": "मॉडल इंटेलिजेंस रैंकिंग के लिए आवधिक Arena AI लीडरबोर्ड ELO सिंक सक्षम करें।", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "जब कॉम्बो रूटिंग मॉडल बदलती है, तब वार्तालाप सारांश जनरेट करके शामिल करें। मॉडल स्विच को स्वतंत्र रूप से संभालने और सभी मौजूदा व भावी कॉम्बो के लिए बैकग्राउंड हैंडऑफ़ अनुरोध रोकने हेतु इसे अक्षम करें।", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models पर claude/<provider>/<model> मिरर आईडी का विज्ञापन करें ताकि Claude Code गेटवे मॉडल खोज सूची में गैर-Claude मॉडल शामिल हो सकें। चेतावनी: जब वैश्विक रूप से सक्षम किया जाता है तो सभी ग्राहकों के लिए कैटलॉग प्रविष्टियों को डबल करता है।", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> गेटवे उपनामों का मुख्य स्विच। चालू (डिफ़ॉल्ट): /v1/models प्रत्येक योग्य, सोचने में सक्षम Claude मॉडल के लिए बिना-सोच वाला वैरिएंट प्रदर्शित करता है, और किसी अनुरोध में भेजी गई no-think/ id वास्तविक मॉडल में वापस रिज़ॉल्व होती है, जिसमें रीजनिंग दबा दी जाती है। बंद: कोई वैरिएंट प्रदर्शित नहीं किया जाता और no-think/ id को किसी अन्य अज्ञात मॉडल id की तरह माना जाता है। इसके चालू रहने पर भी प्रति-मॉडल ModelSpec.noThinkingAlias ऑप्ट-इन/ऑप्ट-आउट लागू होता है।", "featureFlagChatVirtualLanesEnabledDescription": "प्रदाता डिस्पैच के लिए प्रति-टेनेंट अनुकूली वर्चुअल एडमिशन लेन सक्षम करें (#9654): एक टेनेंट का बर्स्ट अब दूसरे टेनेंट को 503 नहीं देता। OMNIROUTE_CHAT_VIRTUAL_LANES पर्यावरण चर इस डैशबोर्ड सेटिंग पर प्राथमिकता रखता है; परिवर्तन सर्वर पुनः आरंभ पर प्रभावी होते हैं।", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "डैशबोर्ड प्रदाता पेज: Free बैज केवल उन संकेतों पर दिखाएँ जिनका प्रदाता पालन करता है — यह डिस्प्ले-नाम अनुमान, गैर-बूलियन free फ़ील्ड और बिना दस्तावेज़ीकृत मुफ़्त टियर वाले पंजीकृत प्रदाताओं पर :free प्रत्ययों को हटा देता है। बंद होने पर ऐतिहासिक बैज नियम लागू रहता है।", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy पूल और opencode का प्रति-अकाउंट रोटेशन, हाल ही में विफल हुए Proxy (अस्वीकृत TCP प्रोब या उसके माध्यम से प्राप्त 429) को प्रति-प्रोसेस अवधि तक दोबारा उपयोग नहीं करता है। यह अवधि हर बार विफलता दोहराए जाने पर दोगुनी होती है, एक अधिकतम सीमा तक। Proxy की कोई स्थिति लिखी नहीं जाती; प्रत्येक उम्मीदवार को अलग रखे जाने पर चयन अपरिवर्तित रहता है। डिफ़ॉल्ट रूप से बंद: चयन क्रम बिल्कुल सामान्य रोटेशन जैसा रहता है।", + "featureFlagProxyPoolEgressObservationDescription": "डैशबोर्ड में किसी Proxy पूल के अंतर्गत दिखाएँ कि पिछले 24 घंटों में कितने देखे गए एग्रेस IP ने उसके सदस्यों को सेवा दी, कितने कनेक्शनों ने उनका उपयोग किया और एक IP के पीछे अधिकतम कितने देखे गए। केवल पढ़ने योग्य, Proxy लॉग से परिकलित और रूटिंग के लिए कभी उपयोग नहीं किया जाता। डिफ़ॉल्ट रूप से बंद: पूल एडिटर अपरिवर्तित रहता है और ऑब्ज़र्वेशन रूट null लौटाता है।", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Proxy हेल्थ स्वीप में, लक्ष्य द्वारा अस्वीकृत प्रोब (401/403/429: Proxy ने इसे रिले किया, लेकिन गंतव्य ने इस एग्रेस IP को अस्वीकार किया) को, सेवा दिए गए प्रोब की तरह, Proxy की लगातार-विफलता शृंखला रीसेट करने दें। डिफ़ॉल्ट रूप से बंद: अस्वीकृति तटस्थ रहती है और शृंखला को बनाए रखती है। 5xx दोनों ही स्थितियों में अनिर्णायक रहता है, और कोई अस्वीकृति कभी भी Proxy को हटाती, अक्षम या फिर से सक्रिय नहीं करती।", "sidebar": { "home": "घर", "dashboard": "डैशबोर्ड", @@ -1011,12 +1011,12 @@ "media": "मीडिया", "settings": "सेटिंग्स", "translator": "अनुवादक", - "playground": "Playground", - "searchTools": "Search Tools", + "playground": "प्लेग्राउंड", + "searchTools": "टूल खोजें", "agents": "एजेंट", "cloudAgents": "क्लाउड एजेंट", - "memory": "Memory", - "skills": "Skills", + "memory": "मेमोरी", + "skills": "कौशल", "omniSkills": "सर्व कौशल", "agentSkills": "एजेंट कौशल", "chaosConfig": "केओस मोड", @@ -1055,64 +1055,64 @@ "serverDisconnectedMsg": "प्रॉक्सी सर्वर बंद कर दिया गया है या पुनः प्रारंभ हो रहा है।", "expandSidebar": "साइडबार का विस्तार करें", "collapseSidebar": "साइडबार को संक्षिप्त करें", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themes": "थीम", + "presetColors": "लोकप्रिय रंग", + "createTheme": "थीम बनाएँ", + "chooseColor": "एक रंग चुनें", + "themeCoral": "मूंगा", + "themeBlue": "नीला", + "themeRed": "लाल", + "themeGreen": "हरा", + "themeViolet": "बैंगनी", + "themeOrange": "नारंगी", + "themeCyan": "सियान", "cliToolsShort": "उपकरण", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "बैच जॉब्स", + "themeSystem": "थीम सिस्टम", + "whitelabelingDesc": "व्हाइटलेबलिंग का विवरण", + "switchThemes": "थीम बदलें", + "themeAccentDesc": "थीम एक्सेंट का विवरण", + "uploadFavicon": "फ़ेविकॉन अपलोड करें", + "themeDark": "गहरी थीम", + "customLogoDesc": "कस्टम लोगो का विवरण", + "sidebarVisibilityToggle": "साइडबार दृश्यता टॉगल", + "themeAccent": "थीम एक्सेंट", + "resetFavicon": "फ़ेविकॉन रीसेट करें", + "whitelabeling": "व्हाइटलेबलिंग", + "darkMode": "डार्क मोड", + "uploadLogo": "लोगो अपलोड करें", + "themeLight": "हल्की थीम", + "appName": "ऐप का नाम", + "appNameDesc": "ऐप के नाम का विवरण", + "resetLogo": "लोगो रीसेट करें", + "customFavicon": "कस्टम फ़ेविकॉन", + "hideHealthLogs": "हेल्थ लॉग छिपाएँ", + "customLogo": "कस्टम लोगो", + "appearance": "दिखावट", + "themeSelectionAria": "थीम चयन एरिया", + "themeCreate": "थीम बनाएँ", + "customFaviconDesc": "कस्टम फ़ेविकॉन का विवरण", + "logoPreview": "लोगो पूर्वावलोकन", + "themeCustom": "कस्टम थीम", + "hideHealthLogsDesc": "हेल्थ लॉग छिपाने का विवरण", + "faviconPreview": "फ़ेविकॉन पूर्वावलोकन", + "changelog": "परिवर्तन-सूची", + "contextSection": "कॉन्टेक्स्ट और कैश", + "contextCaveman": "केवमैन", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "इंजन संयोजन", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "अल्ट्रा", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "संपीड़न सेटिंग्स", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "कॉम्बो स्टूडियो", "combosLiveSubtitle": "लाइव रूटिंग कैस्केड", "compressionStudio": "Compression Studio", "compressionExclusions": "बहिष्करण", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "लाइव इंजन कैस्केड", "compressionExclusionsSubtitle": "प्रति-मॉडल/एंडपॉइंट बाईपास", "chaosConfigSubtitle": "मल्टी-मॉडल समानांतर निष्पादन", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "रूटिंग", + "protocolsSection": "प्रोटोकॉल", + "agentsAiSection": "एजेंट और AI", + "cacheContextSection": "कैश और संदर्भ", + "analyticsSection": "विश्लेषिकी", + "costsSection": "लागतें", + "monitoringSection": "निगरानी", + "auditSecuritySection": "ऑडिट और सुरक्षा", + "devtoolsSection": "डेवलपर टूल्स", + "configurationSection": "कॉन्फ़िगरेशन", + "aiFeaturesSection": "AI सुविधाएँ", "mcp": "MCP", "a2a": "A2A", "plugins": "प्लगइन्स", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "API एंडपॉइंट्स", + "batchFiles": "फ़ाइलें", + "analyticsEvals": "मूल्यांकन", + "analyticsSearch": "खोज", + "analyticsUtilization": "उपयोग", + "analyticsComboHealth": "कॉम्बो की स्थिति", + "analyticsCompression": "संपीड़न", + "costsBudget": "बजट", "costsFreeTiers": "फ्री-टियर बजट", "costsFreeTiersSubtitle": "मासिक निःशुल्क-टोकन सीमा", "freeProviderRankings": "निःशुल्क प्रदाता रैंकिंग", "freeProviderRankingsSubtitle": "मॉडल ELO स्कोर द्वारा रैंक किए गए सर्वश्रेष्ठ निःशुल्क प्रदाता", "radar": "रडार कैटलॉग", "radarSubtitle": "समुदाय-समृद्ध मुफ्त मॉडल कैटलॉग", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "कोटा साझाकरण", + "costsPricing": "मूल्य निर्धारण", + "logsProxy": "प्रॉक्सी लॉग्स", + "logsConsole": "कंसोल", + "logsActivity": "गतिविधि", + "auditMcp": "MCP ऑडिट", "auditA2a": "A2A ऑडिट", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "दिखावट", + "settingsAi": "AI सेटिंग्स", + "settingsSecurity": "सुरक्षा", "settingsAccessTokens": "एक्सेस टोकन", "settingsFeatureFlags": "फ़ीचर झंडे", "settingsCache": "कैश", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "प्राधिकरण", + "settingsRouting": "रूटिंग", + "settingsResilience": "लचीलापन", "modelLockout": "मॉडल लॉकआउट", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "उन्नत", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "प्रदाता कोटा", + "providerQuota": "प्रदाता कोटा", + "runtime": "रनटाइम", + "consoleLogs": "कंसोल लॉग", + "logsTimeline": "समयरेखा", "logsTimelineSubtitle": "दृश्य अनुरोध समयरेखा", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", + "conversations": "वार्तालाप", + "conversationsSubtitle": "बहु-चरणीय एजेंटिक वार्तालाप", + "globalRouting": "वैश्विक रूटिंग", "mitmProxy": "MITM Proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "एजेंटिक सुविधाएँ", + "otherFeaturesSection": "अन्य सुविधाएँ", + "compressionContextGroup": "संदर्भ संपीड़न", + "gamificationGroup": "गेमिफिकेशन", + "toolsGroup": "टूल्स", + "integrationsGroup": "इंटीग्रेशन", + "proxyGroup": "प्रॉक्सी", + "costsParametersGroup": "लागत पैरामीटर", + "auditGroup": "ऑडिट", + "batchGroup": "बैच", + "homeSubtitle": "डैशबोर्ड अवलोकन", + "providersSubtitle": "AI प्रदाताओं को प्रबंधित करें", + "quotaTrackerSubtitle": "उपयोग सीमाओं को ट्रैक करें", + "providerQuotaSubtitle": "प्रदाता की उपयोग सीमाओं को ट्रैक करें", + "runtimeSubtitle": "रीयल-टाइम लचीलापन और सत्र", + "contextCombosSubtitle": "संपीड़न इंजनों को संयोजित करें", + "cliToolsSubtitle": "CLI रनटाइम कॉन्फ़िगर करें", + "agentsSubtitle": "स्थानीय एजेंटों को प्रबंधित करें", + "cloudAgentsSubtitle": "क्लाउड-आधारित एजेंटों को प्रबंधित करें", + "apiEndpointsSubtitle": "कस्टम एंडपॉइंट उपलब्ध कराएँ", + "proxySubtitle": "HTTP प्रॉक्सी सेटिंग्स", + "mitmProxySubtitle": "MITM इंटरसेप्शन", + "oneProxySubtitle": "सार्वजनिक प्रॉक्सी गेटवे", + "leaderboard": "लीडरबोर्ड", + "profile": "प्रोफ़ाइल", + "tokens": "टोकन", + "gamificationAdmin": "गेमिफिकेशन एडमिन", + "leaderboardSubtitle": "रैंकिंग और उपलब्धियाँ", + "profileSubtitle": "खाता और प्राथमिकताएँ", + "tokensSubtitle": "टोकन उपयोग और बजट", + "gamificationAdminSubtitle": "असामान्यता निगरानी और धोखाधड़ी-रोधी", + "usageSubtitle": "ट्रैफ़िक और उपयोग के आँकड़े", + "analyticsComboHealthSubtitle": "कॉम्बो लक्ष्य की विश्वसनीयता", + "analyticsUtilizationSubtitle": "प्रदाता उपयोगिता", + "costsSubtitle": "खर्च का विवरण", + "cacheSubtitle": "कैश हिट दरें", + "analyticsCompressionSubtitle": "टोकन बचत के आँकड़े", + "analyticsSearchSubtitle": "खोज टूल विश्लेषण", + "analyticsEvalsSubtitle": "मूल्यांकन सुइट के परिणाम", "providerStats": "प्रदाता आँकड़े", "providerStatsSubtitle": "विलंबता और प्रदर्शन मेट्रिक्स", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "एप्लिकेशन लॉग", + "logsProxySubtitle": "प्रॉक्सी ट्रैफ़िक लॉग", + "consoleLogsSubtitle": "कंसोल आउटपुट", + "logsActivitySubtitle": "उपयोगकर्ता गतिविधि लॉग", + "healthSubtitle": "सिस्टम स्वास्थ्य जाँच", + "costsPricingSubtitle": "प्रति-मॉडल मूल्य निर्धारण नियम", + "costsBudgetSubtitle": "बजट सीमाएँ", + "costsQuotaShareSubtitle": "प्रदाता कोटा को कुंजियों के बीच साझा करें", + "auditLogSubtitle": "प्राधिकरण ऑडिट", + "auditMcpSubtitle": "MCP सर्वर ऑडिट", + "auditA2aSubtitle": "A2A प्रोटोकॉल ऑडिट", + "translatorSubtitle": "फ़ॉर्मैट रूपांतरण", + "playgroundSubtitle": "प्रॉम्प्ट का लाइव परीक्षण करें", + "searchToolsSubtitle": "खोज टूल रजिस्ट्री", + "memorySubtitle": "स्थायी एजेंट मेमोरी", + "omniSkillsSubtitle": "सैंडबॉक्स कौशल रजिस्ट्री", + "agentSkillsSubtitle": "A2A कौशल रजिस्ट्री", + "mcpSubtitle": "MCP सर्वर नियंत्रण", + "a2aSubtitle": "A2A प्रोटोकॉल सर्वर", "pluginsSubtitle": "प्लगइन मार्केटप्लेस और इंस्टॉलेशन", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "कैश की गई मीडिया फ़ाइलें", + "batchFilesSubtitle": "बैच इनपुट/आउटपुट फ़ाइलें", + "settingsSubtitle": "सभी सेटिंग्स", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "थीम और लेआउट", + "settingsAiSubtitle": "AI व्यवहार डिफ़ॉल्ट", + "globalRoutingSubtitle": "वैश्विक रूटिंग नियम", + "settingsResilienceSubtitle": "पुनः प्रयास और ब्रेकर", + "settingsAdvancedSubtitle": "पावर उपयोगकर्ता विकल्प", + "settingsSecuritySubtitle": "प्रमाणीकरण और एन्क्रिप्शन", "settingsAccessTokensSubtitle": "रिमोट मोड के लिए स्कोप्ड CLI टोकन", "settingsFeatureFlagsSubtitle": "सिस्टम क्षमताओं को टॉगल करें", "settingsCacheSubtitle": "मॉडल कैटलॉग और प्रतिक्रिया कैशिंग", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "साइडबार", + "settingsSidebarSubtitle": "साइडबार लेआउट अनुकूलित करें", "settingsAuthzSubtitle": "रूट इन्वेंट्री और बाईपास नीति", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "दस्तावेज़", + "issuesSubtitle": "बग की रिपोर्ट करें", + "changelogSubtitle": "रिलीज़ नोट्स", "costsQuotaPlans": "प्लान और कोटा", "costsQuotaPlansSubtitle": "प्रदाता के अनुसार प्लान कॉन्फ़िगर करें", "activity": "गतिविधि", @@ -1278,8 +1278,8 @@ "agentBridge": "एजेंट ब्रिज", "agentBridgeSubtitle": "IDE एजेंट ट्रैफ़िक को इंटरसेप्ट करें", "trafficInspector": "ट्रैफ़िक इंस्पेक्टर", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "अपने ऐप्स के अनुरोध और प्रतिक्रिया ट्रैफ़िक का निरीक्षण करें", + "trafficInspectorPurpose": "सटीक रूप से देखें कि आपका एप्लिकेशन AI प्रदाताओं को क्या भेजता है और उनसे क्या प्राप्त करता है। किसी भी OpenAI-संगत क्लाइंट के साथ काम करता है।", "cliCode": "CLI कोड", "cliCodeSubtitle": "OmniRoute पर पॉइंट करने वाले कोड टूल्स", "cliAgents": "CLI एजेंट्स", @@ -1345,7 +1345,7 @@ "refresh": "ताज़ा करें", "loading": "वेबहुक लोड हो रहा है...", "never": "कभी नहीं", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {कोई विफलता नहीं} one {# विफलता} other {# विफलताएँ}}", "testWebhook": "परीक्षण भेजें", "testSuccess": "परीक्षण वेबहुक सफलतापूर्वक भेजा गया.", "testFailed": "परीक्षण वेबहुक विफल रहा.", @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "शीर्ष उपकरण" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "थीम", + "description": "कोई पूर्वनिर्धारित थीम चुनें या एक रंग से अपनी थीम बनाएँ", + "presetColors": "लोकप्रिय रंग", + "customTheme": "कस्टम थीम", + "customThemeDesc": "थीम बनाएँ पर क्लिक करें और एक रंग चुनें", + "createTheme": "थीम बनाएँ", + "activePreset": "सक्रिय थीम" }, "header": { "logout": "लॉगआउट करें", @@ -1591,63 +1591,63 @@ "cliToolsDescription": "सीएलआई उपकरण कॉन्फ़िगर करें", "home": "घर", "homeDescription": "ओमनीरूट में आपका स्वागत है", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "एंडपॉइंट्स", + "endpointDescription": "प्रॉक्सी एंडपॉइंट्स, MCP, A2A और API एंडपॉइंट्स प्रबंधित करें", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol सर्वर प्रबंधन और टूल्स", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Agent-to-Agent प्रोटोकॉल टास्क और ऑब्ज़र्वेबिलिटी", "settings": "सेटिंग्स", "settingsDescription": "अपनी प्राथमिकताएँ प्रबंधित करें", "openaiCompatible": "ओपनएआई संगत", "anthropicCompatible": "एंथ्रोपिक संगत", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "media": "मीडिया", + "mediaDescription": "इमेज, वीडियो और संगीत जनरेट करें", + "themes": "थीम", + "themesDescription": "पूरे डैशबोर्ड पैनल के लिए एक रंगीन थीम चुनें", + "costsDescription": "सभी प्रदाताओं में खर्च ट्रैक करें, रुझानों का विश्लेषण करें और अपना AI बजट प्रबंधित करें", + "cacheDescription": "प्रदाता के प्रॉम्प्ट कैश की दक्षता और स्थानीय सिमेंटिक प्रतिक्रिया के पुनः उपयोग की निगरानी करें।", + "limitsDescription": "प्रत्येक API कुंजी और प्रदाता के लिए दर सीमाएँ और कोटा कॉन्फ़िगर करें", + "runtimeDescription": "लाइव रनटाइम ऑब्ज़र्वेबिलिटी — सर्किट ब्रेकर, कूलडाउन, मॉडल लॉकआउट, सेशन और कोटा अलर्ट", + "apiManagerDescription": "अपने OmniRoute इंस्टेंस के लिए API कुंजियाँ और एक्सेस नियंत्रण प्रबंधित करें", + "batchDescription": "बैच किए गए API कॉल्स के साथ बड़ी मात्रा में अनुरोधों को एसिंक्रोनस रूप से प्रोसेस करें", + "contextCavemanDescription": "नियम-आधारित संदेश संपीड़न, भाषा पैक, एनालिटिक्स और आउटपुट मोड नियंत्रण।", + "contextRtkDescription": "टूल आउटपुट, टर्मिनल लॉग और बिल्ड परिणामों के लिए कमांड-जागरूक संपीड़न।", + "contextCombosDescription": "विभिन्न रूटिंग परिदृश्यों के लिए इंजनों को संयोजित करने का तरीका निर्धारित करें।", + "changelogDescription": "नवीनतम प्लेटफ़ॉर्म सुविधाओं और घोषणाओं से अद्यतित रहें।", + "agentsDescription": "AI एजेंट टूल प्रबंधित और कॉन्फ़िगर करें: Codex, Devin, Jules और कस्टम एजेंट", + "cloudAgentsDescription": "लाइव कार्य ट्रैकिंग और योजना अनुमोदन के साथ क्लाउड-आधारित AI एजेंटों का समन्वय करें", + "memoryDescription": "सिमेंटिक खोज और FTS5 फ़ुल-टेक्स्ट इंडेक्सिंग के साथ स्थायी संवादात्मक मेमोरी", + "skillsDescription": "स्वचालित प्रॉम्प्ट और टूल निष्पादन के लिए सैंडबॉक्स कौशल इंस्टॉल और प्रबंधित करें", + "agentSkillsDescription": "AI क्लाइंट एकीकरण के लिए एक-क्लिक URL कॉपी वाला एजेंट-रेडी कौशल कैटलॉग", + "translatorDescription": "विभिन्न API प्रारूपों में प्रॉम्प्ट का अनुवाद और परीक्षण करें: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "लाइव प्रदाता प्रतिक्रियाओं और प्रारूप निरीक्षण के साथ इंटरैक्टिव रूप से प्रॉम्प्ट का परीक्षण करें", + "searchToolsDescription": "खोज विश्लेषण, प्रदाता विवरण, कैश हिट दरें और लागत ट्रैकिंग", + "logsDescription": "रीयल-टाइम अनुरोध लॉग, त्रुटि ट्रेस और स्ट्रीमिंग इवेंट निरीक्षक", + "auditDescription": "API कुंजी उपयोग, MCP टूल कॉल और नीति इवेंट की अनुपालन ऑडिट ट्रेल", + "webhooksDescription": "रीयल-टाइम इवेंट सूचनाएँ प्राप्त करने के लिए वेबहुक एंडपॉइंट कॉन्फ़िगर करें", + "healthDescription": "सिस्टम स्वास्थ्य अवलोकन: प्रदाता, सर्किट ब्रेकर, दर सीमाएँ और डेटाबेस", + "proxyDescription": "आउटबाउंड प्रदाता कनेक्शन के लिए अपस्ट्रीम प्रॉक्सी सेटिंग्स कॉन्फ़िगर करें", + "apiEndpointsDescription": "कस्टम API एंडपॉइंट कॉन्फ़िगरेशन और रूटिंग ओवरराइड प्रबंधित करें", + "batchFilesDescription": "बैच जॉब आउटपुट फ़ाइलें और परिणाम ब्राउज़ और प्रबंधित करें", + "analyticsEvalsDescription": "मॉडल मूल्यांकन परिणाम और प्रदर्शन बेंचमार्क", + "analyticsSearchDescription": "खोज क्वेरी विश्लेषण, कैश हिट दरें और लागत ट्रैकिंग", + "analyticsUtilizationDescription": "प्रदाता उपयोग मेट्रिक्स और क्षमता नियोजन", + "analyticsComboHealthDescription": "कॉम्बो रूटिंग कॉन्फ़िगरेशन का रीयल-टाइम स्वास्थ्य और प्रदर्शन", + "analyticsCompressionDescription": "कॉन्टेक्स्ट संपीड़न विश्लेषण और टोकन बचत", + "costsBudgetDescription": "प्रति API कुंजी और प्रदाता बजट सीमाएँ और खर्च अलर्ट", + "costsPricingDescription": "टोकन लागत गणना के लिए कस्टम मूल्य निर्धारण कॉन्फ़िगरेशन", + "logsProxyDescription": "अपस्ट्रीम प्रॉक्सी अनुरोध लॉग और ट्रैफ़िक निरीक्षण", + "logsConsoleDescription": "एप्लिकेशन कंसोल आउटपुट और डीबग लॉग", + "logsActivityDescription": "उपयोगकर्ता कार्रवाइयों और सिस्टम इवेंट की ऑडिट ट्रेल", + "auditMcpDescription": "MCP टूल इनवोकेशन ऑडिट ट्रेल और अनुपालन रिकॉर्ड", "auditA2a": "A2A ऑडिट", "auditA2aDescription": "A2A कार्य निष्पादन ऑडिट ट्रेल, राज्य परिवर्तन, और कौशल आमंत्रण रिकॉर्ड", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "थीम, ब्रांडिंग और दृश्य अनुकूलन", + "settingsAiDescription": "AI व्यवहार, चिंतन बजट, विज़न और मेमोरी सेटिंग्स", "settingsCacheDescription": "मॉडल कैटलॉग कैश प्रविष्टियों के लिए TTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "प्रमाणीकरण, प्राधिकरण और अभिगम नियंत्रण सेटिंग्स", "featureFlags": "फ़ीचर झंडे", "featureFlagsDescription": "नियंत्रण प्रणाली क्षमताओं और प्रयोगात्मक सुविधाओं", "featureFlagsActive": "{count} सक्रिय", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "कोई भी फ़्लैग आपकी खोज से मेल नहीं खाता", "featureFlagsSaved": "ध्वज अद्यतन किया गया", "featureFlagsError": "ध्वज अद्यतन करने में विफल", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "रूटिंग नियम, मॉडल उपनाम, कॉम्बो डिफ़ॉल्ट और डिग्रेडेशन सेटिंग्स", + "settingsResilienceDescription": "सर्किट ब्रेकर, पुनः प्रयास और फ़ॉलबैक कॉन्फ़िगरेशन", + "settingsAdvancedDescription": "उन्नत पेलोड नियम, अनुरोध सीमाएँ और प्रॉक्सी API सेटिंग्स", + "mitmProxyDescription": "ट्रैफ़िक निरीक्षण और डीबगिंग के लिए MITM प्रॉक्सी सेटिंग्स कॉन्फ़िगर करें", + "oneProxyDescription": "उन्नत प्रॉक्सी चेनिंग के लिए 1Proxy सेटिंग्स कॉन्फ़िगर करें", "omniSkillsDescription": "स्वचालित प्रॉम्प्ट और टूल निष्पादन के लिए सैंडबॉक्स स्किल्स इंस्टॉल और प्रबंधित करें" }, "cloudSyncStatus": { @@ -1762,7 +1762,7 @@ "discovery": "खोज", "freeProviderRankings": "मुफ़्त प्रदाता रैंकिंग", "radar": "Radar", - "setup": "Setup", + "setup": "सेटअप", "freeTiers": "मुफ़्त टियर", "gamification": "गेमीफिकेशन", "leaderboard": "लीडरबोर्ड", @@ -1812,7 +1812,7 @@ "reportIssue": "रिपोर्ट मुद्दा", "activeError": "{active} सक्रिय · {errors} त्रुटि", "topologyLegendActive": "सक्रिय", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "हाल के", "topologyLegendError": "त्रुटि", "oauthLabel": "OAuth", "apiKeyLabel": "एपीआई कुंजी", @@ -1820,17 +1820,17 @@ "providerModelsTitle": "{provider} - मॉडल", "copiedModel": "कॉपी किया गया: {model}", "aliasLabel": "उपनाम", - "updateNow": "Update Now", - "updating": "Updating...", - "updateAvailableDesc": "A new version is available. Click to update.", - "updateStarted": "Update started...", + "updateNow": "अभी अपडेट करें", + "updating": "अपडेट हो रहा है...", + "updateAvailableDesc": "एक नया संस्करण उपलब्ध है। अपडेट करने के लिए क्लिक करें।", + "updateStarted": "अपडेट शुरू हो गया है...", "reloadingPageAutomatically": "पृष्ठ स्वचालित रूप से पुनः लोड हो रहा है...", "providerTopology": "प्रदाता टोपोलॉजी", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "हाल के अनुरोध", + "recentRequestsEmpty": "अभी तक कोई अनुरोध नहीं है।", + "recentRequestsModel": "मॉडल", + "recentRequestsTokens": "इनपुट / आउटपुट", + "recentRequestsWhen": "समय", "downloadDmg": "DMG डाउनलोड करें (macOS)", "downloadDmgDescription": "OmniRoute डेस्कटॉप ऐप का एक नया संस्करण उपलब्ध है। कृपया अपडेट करने के लिए macOS DMG इंस्टॉलर डाउनलोड और इंस्टॉल करें (वर्तमान: v{version})।", "downloadExe": "EXE डाउनलोड करें (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "रिलीज़ नोट्स", "readMore": "और पढ़ें", "noAuthLabel": "कोई प्रमाणीकरण नहीं", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "रूट करने के लिए तैयार हो जाएँ", + "readinessTitle": "अपना पहला अनुरोध भेजें", + "readinessSubtitle": "चार छोटे चरण। आगे बढ़ने पर OmniRoute तैयारी की जाँच करता है।", + "readinessStep1": "प्रदाता कनेक्ट करें", + "readinessStep2": "एंडपॉइंट प्रमाणीकरण कॉन्फ़िगर करें", + "readinessStep3": "अपना एंडपॉइंट कॉपी करें", + "readinessStep4": "एक परीक्षण अनुरोध भेजें", + "readinessContinue": "सेटअप जारी रखें", + "readinessDismiss": "अभी के लिए खारिज करें" }, "analytics": { "title": "विश्लेषिकी", @@ -1963,11 +1963,11 @@ "rangeCancel": "रद्द करें", "rangeApply": "लागू करें", "rangeErrorInvalid": "प्रारंभ अंत से पहले होना चाहिए", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1 दिन", + "period7D": "7 दिन", + "period30D": "30 दिन", + "period90D": "90 दिन", + "periodYTD": "वर्षारंभ से अब तक", "periodAll": "सभी", "totalTokens": "कुल टोकन", "inputTokens": "इनपुट टोकन", @@ -2005,8 +2005,8 @@ "modelStatusError": "त्रुटि", "comboHealth": "कॉम्बो स्वास्थ्य", "comboHealthDescription": "कॉम्बो-स्तरीय कोटा, उपयोग वितरण और प्रदर्शन मेट्रिक्स", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "कंप्रेशन विश्लेषण", + "compressionAnalyticsDescription": "कंप्रेशन विश्लेषण — टोकन बचत, मोड विवरण और प्रदाता आँकड़े।", "autoRoutingTotalAutoRequests": "कुल ऑटो अनुरोध", "autoRoutingAvgSelectionScore": "औसत चयन स्कोर", "autoRoutingExplorationRate": "अन्वेषण दर", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "प्रदर्शन", "comboHealthPerformanceDescription": "रूट किए गए कॉम्बो ट्रैफ़िक के लिए विश्वसनीयता और थ्रूपुट।", "comboHealthExecutionTargetsDescription": "संरचित कॉम्बो लक्ष्यों के लिए चरण-स्तरीय रनटाइम मेट्रिक्स और कोटा दृश्यता।", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} अनुरोध", "comboHealthQuotaScope": "कोटा दायरा: {scope}", "comboHealthTrendValue": "प्रवृत्ति: {trend}", "comboHealthFetchFailed": "कॉम्बो स्वास्थ्य डेटा प्राप्त करने में विफल", @@ -2258,9 +2258,9 @@ "fullAccess": "पूर्ण प्रवेश", "keyManagement": "एपीआई कुंजी प्रबंधन", "keyManagementDesc": "अपने एंडपॉइंट पर अनुरोधों को प्रमाणित करने के लिए एपीआई कुंजियाँ बनाएं और प्रबंधित करें", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "आपका ऐप API कुंजी के माध्यम से OmniRoute को अनुरोध भेजता है", + "requestFlowYourApp": "आपका ऐप", + "requestFlowApiKey": "API कुंजी", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "कुल कुंजियाँ", "restricted": "प्रतिबंधित", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "इस कुंजी को अभी कॉपी करें और संग्रहीत करें - इसे दोबारा नहीं दिखाया जाएगा।", "done": "हो गया", "savePermissions": "अनुमतियाँ सहेजें", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "अनुमत एंडपॉइंट", + "allEndpointsAllowed": "यह कुंजी सभी API एंडपॉइंट एक्सेस कर सकती है।", + "endpointsRestricted": "{count} एंडपॉइंट{count, plural, one {} other {}} तक सीमित।", + "autoResolve": "स्वतः समाधान", + "autoResolveDesc": "अस्पष्ट मॉडल नामों को इस API कुंजी के मूल प्रदाता से स्वतः मिलाएँ।", "streamDefaultMode": "स्ट्रीम डिफ़ॉल्ट अनुकूलता", "streamDefaultModeDesc": "इस कुंजी के लिए छोड़े गए `stream` फ़्लैग को नियंत्रित करता है। JSON मोड गैर-स्ट्रीमिंग प्रतिक्रियाएं लौटाता है जब तक कि क्लाइंट स्पष्ट रूप से SSE का अनुरोध न करे।", "streamDefaultLegacy": "लीगेसी", "streamDefaultJson": "JSON संगत", "streamDefaultBadge": "JSON स्ट्रीम डिफ़ॉल्ट", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "कुंजी सक्रिय", + "keyActiveDesc": "इस API कुंजी को सक्षम या अक्षम करें। अक्षम कुंजियाँ तुरंत 403 के साथ अस्वीकार कर दी जाती हैं।", + "accessSchedule": "पहुँच शेड्यूल", + "accessScheduleDesc": "पहुँच को सप्ताह के विशिष्ट घंटों और दिनों तक सीमित करें।", + "scheduleFrom": "से", + "scheduleUntil": "तक", + "scheduleDays": "दिन", + "scheduleTimezone": "समय क्षेत्र", + "scheduleTimezoneHint": "IANA समय क्षेत्र नामों का उपयोग करें, जैसे America/New_York, Europe/Berlin", + "scheduleActive": "शेड्यूल", + "disabled": "अक्षम", + "daySun": "रवि", + "dayMon": "सोम", + "dayTue": "मंगल", + "dayWed": "बुध", + "dayThu": "गुरु", + "dayFri": "शुक्र", + "daySat": "शनि", "allowAll": "सभी को अनुमति दें", "restrict": "प्रतिबंधित करें", "allowAllInfo": "यह कुंजी सभी उपलब्ध मॉडलों तक पहुंच सकती है.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "अनुमतियाँ अद्यतन करने में विफल. कृपया पुन: प्रयास करें।", "unknownProvider": "अज्ञात", "copyMaskedKey": "नकाबपोश कुंजी की प्रतिलिपि बनाएँ", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "पूरी कुंजी केवल बनाते समय उपलब्ध होती है — पहली बार कुंजी बनाते समय इसे कॉपी कर लें", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# डिवाइस} other {# डिवाइस}}", "devicesTooltip": "{count, plural, one {इस कुंजी के साथ देखा गया # विशिष्ट IP/User-Agent डिवाइस (अंतिम 30 मिनट)} other {इस कुंजी के साथ देखे गए # विशिष्ट IP/User-Agent डिवाइस (अंतिम 30 मिनट)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "अनुमत कॉम्बो", "allCombosAllowed": "यह कुंजी किसी भी कॉम्बो का उपयोग कर सकती है।", "restrictedComboCount": "{count, plural, one {# कॉम्बो} other {# कॉम्बो}} तक सीमित।", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# संग्रहीत प्रविष्टि} other {# संग्रहीत प्रविष्टियाँ}} इस कॉम्बो सूची में नहीं {count, plural, one {है} other {हैं}} (उदाहरण के लिए, रूटिंग नियम) और {count, plural, one {इसे} other {इन्हें}} सहेजे गए रूप में रखा जाएगा।", + "preservedComboRuleHint": "संग्रहीत रूप में रखा गया। यह प्रविष्टि ऊपर दी गई सूची में कॉम्बो नहीं है, इसलिए इसे केवल API के माध्यम से बदला जा सकता है।", "apiManagerCustomRateLimits": "कस्टम दर सीमाएँ", "apiManagerCustomRateLimitsDesc": "वैश्विक डिफ़ॉल्ट सीमाओं को ओवरराइड करें। डिफ़ॉल्ट का उपयोग करने के लिए खाली छोड़ें.", "apiManagerRateLimitRequestsPlaceholder": "अनुरोध", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "राउटिंग के दौरान इस कुंजी को अपस्ट्रीम प्रदाता/खाता कटऑफ़ नीति को अनदेखा करने की अनुमति देता है। API कुंजी USD कोटा अभी भी लागू रहेगा।", "quotaPill": "कोटा", "quotaModeOnly": "केवल qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "विशिष्ट लीज़", + "exclusiveLeaseNoticeTitle": "विशिष्ट लीज़", + "exclusiveLeaseNoticeDesc": "इस API कुंजी के पास समर्पित कनेक्शन रूटिंग के लिए विशिष्ट लीज़ अनुमतियाँ हैं।", + "allConnections": "सभी कनेक्शन", + "onlySelectedConnections": "केवल चयनित कनेक्शन", + "selectAtLeastOneConnection": "कम-से-कम एक कनेक्शन चुनें या सभी कनेक्शन चुनें।", + "allConnectionsDesc": "यह कुंजी किसी भी सक्रिय कनेक्शन का उपयोग कर सकती है।", + "restrictedToConnections": "{count, plural, one {# कनेक्शन} other {# कनेक्शनों}} तक सीमित।" }, "auditLog": { "title": "ऑडिट लॉग", @@ -2457,14 +2457,14 @@ "model": "Model", "prompt": "Prompt", "generate": "उत्पन्न करें", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "जनरेट हो रहा है...", + "loadingModels": "उपलब्ध मॉडल लोड हो रहे हैं...", + "noModels": "कोई मॉडल उपलब्ध नहीं है। पहले मीडिया क्षमताओं वाले प्रदाताओं को कॉन्फ़िगर करें।", + "error": "जनरेशन विफल", + "result": "परिणाम", + "imageDescription": "OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI और अन्य का उपयोग करके टेक्स्ट प्रॉम्प्ट से छवियाँ जनरेट करें।", + "videoDescription": "ComfyUI या SD WebUI के माध्यम से AnimateDiff, Stable Video Diffusion के साथ वीडियो बनाएँ।", + "musicDescription": "ComfyUI के माध्यम से Stable Audio Open या MusicGen का उपयोग करके संगीत तैयार करें।", "kinds": { "embedding": "एम्बेडिंग", "image": "छवि", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter स्पीच-टू-टेक्स्ट मॉडल आपके कॉन्फ़िगर किए गए OpenRouter कनेक्शन का उपयोग करते हैं। कोई अलग क्रेडेंशियल की आवश्यकता नहीं है।" }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "खोज क्वेरी", + "searchResults": "खोज परिणाम", + "cachedResult": "कैश किया गया", + "searchCost": "लागत", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "प्रदाता तुलना के साथ उन्नत खोज परीक्षण", + "compareProviders": "प्रदाताओं की तुलना करें", + "rerankResults": "परिणामों को पुनः रैंक करें", + "searchHistory": "खोज इतिहास", + "urlOverlap": "URL ओवरलैप", + "noSearchProviders": "कोई खोज प्रदाता कॉन्फ़िगर नहीं किया गया है। Settings में प्रदाता जोड़ें।", + "noRerankModels": "कोई पुनः रैंकिंग मॉडल उपलब्ध नहीं है", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "प्रदाता", + "searchType": "खोज प्रकार", + "maxResults": "अधिकतम परिणाम", + "filters": "फ़िल्टर", + "country": "देश", + "language": "भाषा", + "timeRange": "समय सीमा", + "includeDomains": "डोमेन शामिल करें", + "excludeDomains": "डोमेन बाहर रखें", + "safeSearch": "सुरक्षित खोज", + "safeSearchOff": "बंद", + "safeSearchModerate": "मध्यम", + "safeSearchStrict": "सख़्त", + "queryPlaceholder": "खोज क्वेरी दर्ज करें...", + "providerAuto": "स्वतः (सबसे सस्ता)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "समाचार", + "optionAny": "कोई भी", + "timeRangeDay": "पिछला दिन", + "timeRangeWeek": "पिछला सप्ताह", + "timeRangeMonth": "पिछला महीना", + "timeRangeYear": "पिछला वर्ष", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "अनुरोध का समय समाप्त हो गया ({seconds}s)", + "networkError": "नेटवर्क त्रुटि", + "formatted": "फ़ॉर्मेट किया गया", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "कैश मिस", + "cacheHit": "कैश हिट", + "latency": "विलंबता", + "cost": "लागत", + "results": "परिणाम", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "रीरैंक मॉडल", + "positionDelta": "स्थान परिवर्तन", + "emptyState": "परिणाम देखने के लिए खोज क्वेरी भेजें", "copy": "प्रतिलिपि", "resetToDefault": "डिफ़ॉल्ट पर रीसेट करें", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "खोजें", + "tabScrape": "स्क्रैप करें", + "tabCompare": "तुलना करें", + "modalitiesGuide": "मोडैलिटी गाइड", + "searchConceptTitle": "खोज", + "searchConceptDesc": "खोज = वेब परिणामों की सूची प्राप्त करती है (शीर्षक, URL, स्निपेट, प्रासंगिकता स्कोर)", + "scrapeConceptTitle": "स्क्रैप", + "scrapeConceptDesc": "स्क्रैप = किसी URL की पूरी सामग्री निकालता है (markdown, टेक्स्ट या HTML)", + "compareConceptTitle": "तुलना", + "compareConceptDesc": "तुलना = विलंबता, लागत और परिणामों के ओवरलैप की तुलना करने के लिए एक ही क्वेरी को N providers पर साथ-साथ चलाती है", + "rerankConceptTitle": "रीरैंक", + "rerankConceptDesc": "रीरैंक = क्वेरी के आधार पर प्रासंगिकता बेहतर करने के लिए LLM के माध्यम से परिणामों का क्रम बदलता है", + "autoConceptTitle": "स्वतः (सबसे सस्ता)", + "autoConceptDesc": "स्वतः (सबसे सस्ता) = कॉन्फ़िगर किए गए क्रेडेंशियल वाले उपलब्ध सबसे सस्ते provider को अपने-आप चुनता है", + "providerCatalogTitle": "Provider कैटलॉग", + "kindSearch": "खोज", + "kindFetch": "फ़ेच/स्क्रैप", + "statusConfigured": "कॉन्फ़िगर किया गया", + "statusMissing": "कोई क्रेडेंशियल नहीं", + "statusRateLimited": "दर-सीमित", + "configureProvider": "Providers में कॉन्फ़िगर करें", + "loadingProviders": "Providers लोड हो रहे हैं…", + "failedToLoadProviders": "Providers लोड नहीं हो सके", + "costPerQuery": "लागत/क्वेरी", + "freeQuota": "मुफ़्त कोटा/माह", + "scrapeUrl": "स्क्रैप करने के लिए URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL आवश्यक है", "scrapeUrlInvalid": "अमान्य URL — यह http:// या https:// से शुरू होना चाहिए", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "निकालें", + "scrapeExtracting": "निकाला जा रहा है…", + "scrapeFullPage": "पूरा पृष्ठ", + "scrapeFormat": "प्रारूप", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "टेक्स्ट", + "scrapePreview": "पूर्वावलोकन", + "scrapeRaw": "रॉ", + "scrapeContentTruncated": "(संक्षिप्त किया गया है, रॉ देखें)", + "scrapeMetadata": "मेटाडेटा", + "scrapeProvider": "प्रदाता", + "scrapeSize": "आकार", "scrapeEmptyState": "इसकी सामग्री निकालने के लिए एक URL दर्ज करें", "scrapeProvidersAvailable": "उपलब्ध प्रदाता: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "तुलना करें", + "compareRunning": "तुलना की जा रही है…", + "autoProvider": "स्वतः (सबसे सस्ता)", + "configuredStatus": "कॉन्फ़िगर किया गया", + "rateLimitedStatus": "दर सीमित", + "noCredential": "कोई क्रेडेंशियल नहीं", + "searchTypeLabel": "प्रकार", + "rerankModelLabel": "रीरैंक मॉडल", + "noneOption": "कोई नहीं", + "size": "आकार", "configurationPane": "कॉन्फ़िगरेशन फलक", "configuration": "कॉन्फ़िगरेशन", "status": "स्थिति", @@ -2743,7 +2743,7 @@ "effortExtraHigh": "अति उच्च", "effortMax": "अधिकतम", "effortUltra": "अल्ट्रा", - "wireApi": "Wire API", + "wireApi": "वायर API", "modelAliases": "मॉडल उपनाम", "addModel": "मॉडल जोड़ें", "routeModelPlaceholder": "{model} को यहाँ रूट करें...", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. जोड़ें", "antigravityStep2Suffix": "आपकी होस्ट फ़ाइल में 127.0.0.1 के रूप में।", "antigravityStep3": "3. एंटीग्रेविटी खोलें और अनुरोधों को प्रॉक्सी किया जाएगा।", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} अपने प्रदाता एंडपॉइंट को अनुरोध भेजता है। MITM उन्हें इंटरसेप्ट करके OmniRoute पर रीडायरेक्ट करता है।", + "mitmStep1": "1. अनुरोधों को OmniRoute के माध्यम से रूट करने के लिए MITM शुरू करें।", + "mitmStep2Prefix": "2. जोड़ें", + "mitmStep2Suffix": "को अपनी hosts फ़ाइल में 127.0.0.1 के रूप में।", + "mitmStep3": "3. {toolName} खोलें और अनुरोध प्रॉक्सी किए जाएँगे।", "sudoPasswordRequiredTitle": "सूडो पासवर्ड आवश्यक", "sudoPasswordHint": "होस्ट फ़ाइल और सिस्टम प्रॉक्सी सेटिंग्स को संशोधित करने के लिए प्रशासक पासवर्ड की आवश्यकता होती है।", "enterSudoPassword": "सूडो पासवर्ड डालें", @@ -2908,7 +2908,7 @@ "continue": "IDE में जारी रखें चलाते समय उपयोग करें और आपको पोर्टेबल JSON-आधारित प्रदाता कॉन्फ़िगरेशन की आवश्यकता है।", "opencode": "जब आप ओपनकोड के माध्यम से टर्मिनल-नेटिव एजेंट रन और स्क्रिप्टेड ऑटोमेशन पसंद करते हैं तो इसका उपयोग करें।", "kiro": "किरो को एकीकृत करते समय और ओमनीरूट से केंद्रीय रूप से मॉडल रूटिंग को नियंत्रित करते समय उपयोग करें।", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "इसका उपयोग तब करें, जब आप Codeium/Windsurf मॉडल वाला ऐसा AI-केंद्रित IDE चाहते हों जिसे OmniRoute के माध्यम से रूट किया गया हो।", "antigravity": "इसका उपयोग तब करें जब एंटीग्रेविटी/किरो ट्रैफिक को एमआईटीएम के माध्यम से रोका जाना चाहिए और ओमनीरूट पर भेजा जाना चाहिए।", "copilot": "जब आप ओम्निरूट कुंजी और रूटिंग नियमों को लागू करते समय कोपायलट चैट शैली यूएक्स चाहते हैं तो इसका उपयोग करें।", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2928,11 +2928,11 @@ "qwen": "Qwen Code CLI", "cursor": "कर्सर एआई कोड संपादक", "continue": "एआई असिस्टेंट जारी रखें", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode AI कोडिंग एजेंट (टर्मिनल)", + "kiro": "Amazon Kiro — AI-संचालित IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "Sourcegraph Amp कोडिंग सहायक CLI", "hermes": "हर्मीस एआई टर्मिनल सहायक", "hermes-agent": "Hermes Agent (Nousresearch द्वारा) - मल्टी-मॉडल समर्थन (डेलिगेशन, विज़न, कम्प्रेशन, आदि) के साथ उन्नत टर्मिनल AI", "custom": "जेनेरिक ओपनएआई-संगत सीएलआई या एसडीके कॉन्फ़िगरेशन जनरेटर", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter स्वायत्त कोडिंग एजेंट CLI", "omp": "Oh My Pi टर्मिनल कोडिंग एजेंट", "letta": "स्थायी मेमोरी और टूल उपयोग के साथ Letta CLI एजेंट", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI-संगत प्रदाता समर्थन वाला स्व-सुधारशील RLM कोडिंग हार्नेस", "warp": "कस्टम प्रदाता समर्थन के साथ Warp AI टर्मिनल", "agent-deck": "Agent Deck मल्टी-एजेंट ऑर्केस्ट्रेटर", "5dive": "5dive — स्व-होस्टेड कोडिंग एजेंट्स का बेड़ा; एक auth प्रोफ़ाइल सभी को OmniRoute की ओर इंगित करती है" @@ -3003,28 +3003,28 @@ } }, "notes": { - "0": "Continue uses JSON config file." + "0": "Continue JSON कॉन्फ़िगरेशन फ़ाइल का उपयोग करता है।" } }, "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCode इंस्टॉल करें", + "desc": "npm के माध्यम से इंस्टॉल करें: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API कुंजी" }, "3": { - "title": "Set Base URL", + "title": "बेस URL सेट करें", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "मॉडल चुनें" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "थिंकिंग वेरिएंट का उपयोग करें", + "desc": "थिंकिंग मॉडल के लिए, --variant high/low/max के साथ चलाएँ (नीचे उदाहरण कमांड देखें)।" } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro सेटिंग्स खोलें", + "desc": "Settings → AI Provider पर जाएँ" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "बेस URL", + "desc": "अपने OmniRoute एंडपॉइंट का URL पेस्ट करें" }, "3": { - "title": "API Key" + "title": "API कुंजी" }, "4": { - "title": "Select Model" + "title": "मॉडल चुनें" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI सेटिंग्स खोलें", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "कस्टम प्रदाता जोड़ें", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "बेस URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API कुंजी", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "मॉडल चुनें", + "desc": "ड्रॉपडाउन से कोई मॉडल चुनें" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "कस्टम सीएलआई", - "toolCategories": "Tool Categories", + "toolCategories": "टूल श्रेणियाँ", "visibleToolsCount": "{count} उपकरण उपलब्ध हैं", "customCliBuilderTitle": "ओपनएआई-संगत सीएलआई बिल्डर", "customCliBuilderDescription": "किसी भी सीएलआई या एसडीके के लिए एनवी वर्र्स और जेएसओएन स्निपेट जेनरेट करें जो ओपनएआई-संगत बेस यूआरएल, एपीआई कुंजी और मॉडल आईडी स्वीकार करता है।", @@ -3260,18 +3260,18 @@ "priorityDesc": "अनुक्रमिक फ़ॉलबैक: पहले मॉडल 1 आज़माता है, फिर 2, आदि।", "weightedDesc": "फ़ॉलबैक के साथ ट्रैफ़िक को भार प्रतिशत के आधार पर वितरित करता है", "roundRobinDesc": "परिपत्र वितरण: प्रत्येक अनुरोध रोटेशन में अगले मॉडल पर जाता है", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "कॉन्टेक्स्ट रिले", + "contextRelayDesc": "खाते बदलने पर हैंडऑफ़ सारांशों की मदद से सत्र की निरंतरता बनाए रखता है", "randomDesc": "समान यादृच्छिक चयन, फिर शेष मॉडलों पर वापस लौटना", "leastUsedDesc": "समय के साथ लोड को संतुलित करते हुए, सबसे कम अनुरोधों वाला मॉडल चुनता है", "costOptimizedDesc": "मूल्य निर्धारण के आधार पर सबसे पहले सबसे सस्ते मॉडल पर रूट करें", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "हर पुनः उपयोग किए जा सकने वाले प्रॉम्प्ट प्रीफ़िक्स को लगातार उसी प्रदाता खाते पर रूट करता है", "resetAware": "रीसेट-अवेयर आरआर", "resetAwareDesc": "शेष कोटा को 5 घंटे और साप्ताहिक रीसेट के विरुद्ध संतुलित करता है, फिर समान स्कोर को राउंड-रॉबिन करता है", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "कोटा-भारित", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "सख़्त रैंडम", + "strictRandomDesc": "डेक शफ़ल — दोबारा शफ़ल करने से पहले हर मॉडल का एक बार उपयोग करता है", "fusion": "फ़्यूज़न", "fusionDesc": "प्रॉम्प्ट को समानांतर रूप से प्रत्येक पैनल मॉडल पर भेजता है, फिर एक जज मॉडल एक अंतिम उत्तर तैयार करता है", "fusionJudgeModel": "जज मॉडल", @@ -3288,13 +3288,13 @@ "retryDelay": "पुनः प्रयास विलंब (एमएस)", "concurrencyPerModel": "समवर्ती/मॉडल", "queueTimeout": "कतार समय समाप्ति (एमएस)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "हैंडऑफ़ सीमा", + "contextRelayHandoffThresholdHelp": "जब कोटा उपयोग इस सीमा तक पहुँचता है, तो सक्रिय खाता समाप्त होने से पहले OmniRoute एक संरचित हैंडऑफ़ सारांश तैयार करता है।", + "contextRelayMaxMessages": "सारांश के लिए अधिकतम संदेश", + "contextRelayMaxMessagesHelp": "रिले सारांश में संक्षिप्त किए जाने वाले हाल के इतिहास की मात्रा सीमित करता है।", + "contextRelaySummaryModel": "सारांश मॉडल", + "contextRelaySummaryModelHelp": "वैकल्पिक ओवरराइड मॉडल, जिसका उपयोग केवल हैंडऑफ़ सारांश बनाने के लिए किया जाता है। सक्रिय कॉम्बो मॉडल का पुनः उपयोग करने के लिए इसे खाली छोड़ दें।", + "contextRelayProviderNote": "कॉन्टेक्स्ट रिले फ़िलहाल Codex खाता रोटेशन के लिए हैंडऑफ़ तैयार करता है। सर्वोत्तम निरंतरता के लिए इसे एक ही प्रदाता के कई खातों के साथ जोड़ें।", "advancedHint": "वैश्विक डिफ़ॉल्ट का उपयोग करने के लिए खाली छोड़ें। ये प्रति-प्रदाता सेटिंग्स को ओवरराइड करते हैं।", "failoverBeforeRetry": "पुनः प्रयास करने से पहले विफलता", "maxSetRetries": "अधिकतम सेट पुनः प्रयास", @@ -3345,40 +3345,40 @@ "weighted": "भारित", "leastUsed": "सबसे कम इस्तेमाल किया गया", "costOpt": "लागत-विकल्प", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "strategyGuideTitle": "इस रणनीति का उपयोग कैसे करें", + "strategyGuideWhen": "कब उपयोग करें", + "strategyGuideAvoid": "कब उपयोग न करें", + "strategyGuideExample": "उदाहरण", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "आपके पास एक पसंदीदा मॉडल है और आप केवल विफलता की स्थिति में फ़ॉलबैक चाहते हैं।", + "avoid": "आपको अनुरोधों को विभिन्न मॉडलों में वितरित करना है।", + "example": "आउटेज के लिए सस्ते बैकअप वाला प्राथमिक कोडिंग मॉडल।" }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "आपको मॉडलों के बीच नियंत्रित ट्रैफ़िक विभाजन चाहिए।", + "avoid": "आप समय के साथ सटीक भार बनाए नहीं रख सकते।", + "example": "80% स्थिर मॉडल + 20% कैनरी मॉडल रोलआउट।" }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "आप पूर्वानुमेय और समान वितरण चाहते हैं।", + "avoid": "मॉडलों की विलंबता या लागत में बहुत अधिक अंतर है।", + "example": "थ्रूपुट वितरित करने के लिए कई खातों पर एक ही मॉडल।" }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "आप न्यूनतम सेटअप के साथ सरल वितरण चाहते हैं।", + "avoid": "आपको सख़्त ट्रैफ़िक गारंटी चाहिए।", + "example": "समकक्ष मॉडलों के साथ त्वरित प्रोटोटाइपिंग।" }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "आप लाइव माँग के आधार पर अनुकूली संतुलन चाहते हैं।", + "avoid": "उपयोग संतुलन से लाभ पाने के लिए ट्रैफ़िक बहुत कम है।", + "example": "मिश्रित वर्कलोड, जहाँ एक मॉडल अक्सर ओवरलोड हो जाता है।" }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "लागत कम करना आपकी सर्वोच्च प्राथमिकता है।", + "avoid": "मूल्य निर्धारण डेटा उपलब्ध नहीं है या पुराना है।", + "example": "बैकग्राउंड या बैच जॉब, जहाँ कम लागत को प्राथमिकता दी जाती है।" }, "reset-aware": { "when": "आप कोटा टेलीमेट्री और विभिन्न रीसेट विंडो के साथ कई खातों को रूट करते हैं।", @@ -3386,19 +3386,19 @@ "example": "80% खाते को बाद में रीसेट करने की तुलना में 60% साप्ताहिक खाते को कल रीसेट करने को प्राथमिकता दें।" }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "जब आप पूरी तरह समान वितरण चाहते हैं, तब उपयोग करें — दोहराने से पहले प्रत्येक मॉडल का एक बार उपयोग होता है।", + "avoid": "जब मॉडलों की गुणवत्ता या विलंबता अलग-अलग हो और क्रम महत्वपूर्ण हो, तब इसका उपयोग न करें।", + "example": "उदाहरण: उपयोग को समान रूप से वितरित करने के लिए एक ही मॉडल के कई अकाउंट।" }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "जब आप Power-of-Two-Choices एल्गोरिदम का उपयोग करके कम-विलंबता वाला चयन चाहते हैं, तब उपयोग करें।", + "avoid": "2 या उससे कम मॉडलों वाले छोटे कॉम्बो के लिए इसका उपयोग न करें — round-robin की तुलना में कोई लाभ नहीं मिलता।", + "example": "उदाहरण: 4+ समकक्ष मॉडल एंडपॉइंट्स पर उच्च-थ्रूपुट इन्फ़रेंस।" }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "जब लंबे सेशन को कार्यशील कॉन्टेक्स्ट खोए बिना अकाउंट रोटेशन के दौरान जारी रखना आवश्यक हो, तब उपयोग करें।", + "avoid": "जब अकाउंट स्विचिंग कम होती हो या आप अतिरिक्त सारांश अनुरोध नहीं चाहते हों, तब इसका उपयोग न करें।", + "example": "उदाहरण: कोटा समाप्त होने के करीब कई अकाउंट्स के बीच रोटेट होने वाले Codex सेशन।" }, "fill-first": { "when": "जब आप दूसरे प्रदाता पर जाने से पहले एक प्रदाता का कोटा पूरी तरह समाप्त करना चाहते हों तो इसका उपयोग करें।", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "किसी अनुरोध के विफल होने से पहले पुनः प्रयासों की संख्या।", + "retryDelay": "पुनः प्रयासों के बीच आरंभिक प्रतीक्षा अवधि। अधिक मान बर्स्ट दबाव को कम करते हैं।", + "timeout": "निरस्त करने से पहले अनुरोध की अधिकतम अवधि।", + "healthcheck": "रूटिंग निर्णयों में अस्वस्थ मॉडल/प्रोवाइडर को छोड़ देता है।", + "concurrencyPerModel": "round-robin में प्रति मॉडल अनुमत एक साथ किए जाने वाले अनुरोधों की अधिकतम संख्या।", + "queueTimeout": "टाइम आउट होने से पहले कोई अनुरोध क्यू में कितनी देर प्रतीक्षा कर सकता है।", "failoverBeforeRetry": "सक्षम होने पर, कोई भी अपस्ट्रीम त्रुटि अगले कॉम्बो लक्ष्य के लिए तत्काल विफलता को ट्रिगर करती है, सभी पुनर्प्रयासों और फ़ॉलबैक यूआरएल को छोड़ देती है।", "maxSetRetries": "प्रत्येक लक्ष्य विफल होने पर पूर्ण लक्ष्य सेट को पुनः प्रयास करने की संख्या। 0 = कोई सेट-स्तरीय पुनः प्रयास नहीं।", "setRetryDelayMs": "सेट-स्तरीय पुनः प्रयास प्रयासों के बीच विलंब, क्षणिक मुद्दों को हल करने का समय देना।", "disableSessionStickiness": "पहले-संदेश के हैश द्वारा पूरी बातचीत को एक कनेक्शन पर पिन करने के बजाय हर अनुरोध पर एक अलग कनेक्शन पर रोटेट करें। यह वैश्विक डिफ़ॉल्ट को ओवरराइड करता है। मल्टी-टर्न चैट के लिए प्रॉम्प्ट-कैश हिट्स को सुरक्षित रखने के लिए इसे Inherit पर छोड़ दें।" }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "त्वरित टेम्प्लेट", + "templatesDescription": "एक आरंभिक प्रोफ़ाइल लागू करें, फिर मॉडल और कॉन्फ़िगरेशन समायोजित करें।", + "templateApply": "टेम्प्लेट लागू करें", + "templateHighAvailability": "उच्च उपलब्धता", + "templateHighAvailabilityDesc": "हेल्थ चेक और सुरक्षित पुनः प्रयासों के साथ प्राथमिकता रूटिंग।", + "templateCostSaver": "लागत बचत", + "templateCostSaverDesc": "बजट-प्रथम वर्कलोड के लिए लागत-अनुकूलित रूटिंग।", + "templateBalanced": "संतुलित लोड", + "templateBalancedDesc": "समय के साथ मांग को वितरित करने के लिए सबसे कम उपयोग वाली रूटिंग।", + "usageGuideHide": "छिपाएँ", + "usageGuideDontShowAgain": "दोबारा न दिखाएँ", + "usageGuideShow": "गाइड दिखाएँ", + "quickTestTitle": "कॉम्बो सत्यापन के लिए तैयार है", + "quickTestDescription": "फ़ॉलबैक और विलंबता व्यवहार की पुष्टि करने के लिए अभी एक परीक्षण चलाएँ।", + "testNow": "अभी परीक्षण करें", + "pricingCoverage": "मूल्य निर्धारण कवरेज", + "pricingCoverageHint": "लागत-अनुकूलित विकल्प तब सबसे अच्छा काम करता है, जब सभी कॉम्बो मॉडलों का मूल्य निर्धारण उपलब्ध हो।", + "pricingAvailable": "मूल्य निर्धारण उपलब्ध है", + "pricingMissing": "कोई मूल्य निर्धारण नहीं", + "pricingAvailableShort": "मूल्ययुक्त", + "pricingMissingShort": "बिना-मूल्य", "fallbackOnlyOnQuotaExhaustion": "केवल कोटा समाप्ति पर आगे बढ़ें", "fallbackOnlyOnQuotaExhaustionShort": "कोटा-केवल बैकअप", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "warningRoundRobinSingleModel": "round-robin कम से कम 2 मॉडलों के साथ सबसे अधिक उपयोगी है।", + "warningCostOptimizedPartialPricing": "{total} मॉडलों में से केवल {priced} का मूल्य निर्धारण उपलब्ध है। रूटिंग आंशिक रूप से लागत-सचेत हो सकती है।", + "warningCostOptimizedNoPricing": "इस कॉम्बो के लिए कोई मूल्य निर्धारण डेटा नहीं मिला। लागत-अनुकूलित विकल्प अप्रत्याशित रूप से रूट कर सकता है।", + "filterAll": "सभी", + "filterIntelligent": "इंटेलिजेंट", + "filterDeterministic": "निर्धारित", + "filterEmptyTitle": "इस रणनीति फ़िल्टर से कोई कॉम्बो मेल नहीं खाता।", + "filterEmptyIntelligentDescription": "इंटेलिजेंट रूटिंग डैशबोर्ड को पॉप्युलेट करने के लिए एक auto या LKGP कॉम्बो बनाएँ।", + "filterEmptyDeterministicDescription": "अभी केवल auto और LKGP कॉम्बो मौजूद हैं। वापस सभी पर जाएँ या एक निर्धारित कॉम्बो बनाएँ।", "readinessTitle": "Siap menabung?", "readinessDescription": "Tinjau daftar periksa sebelum membuat atau memperbarui kombo ini.", "readinessCheckName": "Nama kombo valid", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Tambahkan setidaknya satu model.", "saveBlockWeighted": "Tetapkan bobot menjadi 100% (saat ini: {total}%).", "saveBlockPricing": "Tambahkan harga untuk setidaknya satu model atau pilih strategi lain.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "अनुशंसित सेटअप", + "applyRecommendations": "अनुशंसाएँ लागू करें", + "recommendationsUpdated": "{strategy} के लिए अनुशंसाएँ अपडेट की गईं।", + "recommendationsApplied": "इस कॉम्बो पर अनुशंसाएँ लागू की गईं।", + "intelligentPanelTitle": "इंटेलिजेंट रूटिंग डैशबोर्ड", + "intelligentPanelDesc": "इस auto-routing कॉम्बो के लिए रीयल-टाइम स्कोरिंग और स्वास्थ्य स्थिति।", "configOnlyStatus": "कॉन्फ़िगरेशन व्यू", "configOnlyHint": "यह पैनल केवल रूटिंग इनपुट दिखाता है। लाइव ब्रेकर स्थिति Health पेज पर उपलब्ध है।", "routingInputs": "रूटिंग इनपुट", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "अज्ञात प्रदाता प्रीफिक्स।", "builderDynamicAccountShort": "डायनेमिक खाता", "builderNeedValidName": "आगे बढ़ने से पहले एक मान्य कॉम्बो नाम परिभाषित करें।", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "स्थिति का अवलोकन", + "normalOperation": "सामान्य संचालन", + "allProvidersHealthy": "प्रदाता स्वस्थ रूटिंग स्थितियों की रिपोर्ट कर रहे हैं।", + "incidentMode": "घटना मोड", + "highCircuitBreakerRate": "सर्किट ब्रेकर ट्रिप की उच्च दर का पता चला।", + "activeModePack": "सक्रिय मोड पैक", + "modePackUpdated": "मोड पैक को {pack} पर अपडेट किया गया।", + "modePackHint": "कॉम्बो को फिर से बनाए बिना रूटिंग इंजन को प्राथमिकता देने के लिए प्रीसेट बदलें।", + "providerScores": "प्रदाता स्कोर", + "allProvidersEvaluated": "कोई कैंडिडेट पूल कॉन्फ़िगर नहीं किया गया है। रनटाइम पर सभी सक्रिय प्रदाताओं का मूल्यांकन किया जाता है।", + "excludedProviders": "बहिष्कृत प्रदाता", + "excludedProvidersHint": "OPEN सर्किट ब्रेकर वाले प्रदाताओं को रूटिंग से अस्थायी रूप से बाहर रखा जाता है।", + "noExcludedProviders": "फ़िलहाल कोई प्रदाता बहिष्कृत नहीं है।", + "cooldownMinutes": "कूलडाउन: {minutes} मिनट", + "builderIntelligentTitle": "इंटेलिजेंट रूटिंग कॉन्फ़िगरेशन", + "builderIntelligentDesc": "इस auto-routing कॉम्बो के लिए बहु-कारक स्कोरिंग इंजन कॉन्फ़िगर करें।", + "candidatePoolLabel": "कैंडिडेट पूल", + "candidatePoolHint": "चुनें कि इस इंजन को किन प्रदाताओं का मूल्यांकन करना चाहिए। सभी सक्रिय प्रदाताओं का उपयोग करने के लिए इसे खाली छोड़ दें।", + "candidatePoolEmpty": "अभी कोई सक्रिय प्रदाता उपलब्ध नहीं है।", + "candidatePoolAllProviders": "सभी प्रदाता", + "modePackLabel": "मोड पैक", + "routerStrategyLabel": "राउटर रणनीति", + "strategyRules": "नियम (6-कारक स्कोरिंग)", + "explorationRateLabel": "अन्वेषण दर", + "explorationRateHint": "{percent}% अनुरोध गैर-इष्टतम प्रदाताओं को आज़मा सकते हैं।", + "budgetCapLabel": "बजट सीमा (USD / अनुरोध)", + "budgetCapPlaceholder": "कोई सीमा नहीं", + "advancedWeightsTitle": "उन्नत: स्कोरिंग भार", "nestedComboFlatten": "नेस्टेड कॉम्बो को फ़्लैटन करें", "nestedComboExecute": "नेस्टेड कॉम्बो को लक्ष्यों के रूप में निष्पादित करें", "effectiveRoutingShare": "प्रभावी रूटिंग शेयर (भार ÷ कुल)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "कोटा", + "weightHealth": "स्वास्थ्य", + "weightCostInv": "लागत", + "weightLatencyInv": "विलंबता", + "weightTaskFit": "कार्य उपयुक्तता", + "weightStability": "स्थिरता", + "weightTierPriority": "स्तर", + "weightCacheAffinity": "कैश हिट एफ़िनिटी", "weightSessionAvailability": "सत्र उपलब्धता", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "बुद्धिमान रूटिंग कॉन्फ़िगरेशन", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "विफलता-सुरक्षित आधाररेखा", + "description": "एक प्राथमिक मॉडल का उपयोग करें और फ़ॉलबैक शृंखला को छोटा और विश्वसनीय रखें।", + "tip1": "अपने सबसे विश्वसनीय मॉडल को पहले रखें।", + "tip2": "समान गुणवत्ता वाले 1-2 बैकअप मॉडल रखें।", + "tip3": "प्रदाता की अस्थायी विफलताओं से निपटने के लिए सुरक्षित पुनः प्रयासों का उपयोग करें।" }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "नियंत्रित ट्रैफ़िक विभाजन", + "description": "कैनरी रोलआउट और मॉडलों के बीच क्रमिक माइग्रेशन के लिए उत्कृष्ट।", + "tip1": "90/10 जैसे संतुलित विभाजन से शुरुआत करें।", + "tip2": "कुल योग 100% रखें और परिवर्तनों के बाद स्वतः संतुलित करें।", + "tip3": "कैनरी भार बढ़ाने से पहले सफलता और विलंबता की निगरानी करें।" }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "पूर्वानुमेय लोड साझाकरण", + "description": "यह तब सबसे उपयुक्त है जब मॉडल समकक्ष हों और आपको सुचारु वितरण की आवश्यकता हो।", + "tip1": "कम से कम 2 मॉडलों का उपयोग करें।", + "tip2": "अचानक अत्यधिक लोड से बचने के लिए समवर्तीता सीमाएँ निर्धारित करें।", + "tip3": "अत्यधिक लोड की स्थिति में शीघ्र विफल होने के लिए कतार टाइमआउट का उपयोग करें।" }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "कम सेटअप में त्वरित वितरण", + "description": "जब आपको कड़ी गारंटी के बिना सरल वितरण की आवश्यकता हो, तब इसका उपयोग करें।", + "tip1": "समान विलंबता प्रोफ़ाइल वाले मॉडलों का उपयोग करें।", + "tip2": "यादृच्छिक चूकों से निपटने के लिए पुनः प्रयास सक्षम रखें।", + "tip3": "कड़े SLAs के बजाय प्रयोग के लिए इसे प्राथमिकता दें।" }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "अनुकूली संतुलन", + "description": "समय के साथ हॉटस्पॉट कम करने के लिए कम उपयोग किए गए मॉडलों पर रूट करता है।", + "tip1": "निरंतर ट्रैफ़िक में बेहतर काम करता है।", + "tip2": "अधिक सुरक्षित संतुलन के लिए इसे स्वास्थ्य जाँचों के साथ संयोजित करें।", + "tip3": "वितरण में हुए लाभ की पुष्टि करने के लिए प्रत्येक मॉडल के उपयोग को ट्रैक करें।" }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "बजट-प्रथम रूटिंग", + "description": "मूल्य-निर्धारण मेटाडेटा उपलब्ध होने पर कम लागत वाले मॉडलों पर रूट करता है।", + "tip1": "सभी चयनित मॉडलों के लिए मूल्य-निर्धारण जानकारी की उपलब्धता सुनिश्चित करें।", + "tip2": "कठिन प्रॉम्प्ट के लिए गुणवत्तापूर्ण फ़ॉलबैक रखें।", + "tip3": "ऐसे बैच/बैकग्राउंड कार्यों के लिए उपयोग करें जहाँ लागत मुख्य KPI हो।" }, "reset-aware": { "title": "रीसेट-जागरूक खाता रोटेशन", @@ -3597,11 +3597,11 @@ "tip3": "टाई बैंड को छोटा रखें ताकि समतुल्य खाते अभी भी निष्पक्ष रूप से घूमते रहें।" }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "शफ़ल डेक वितरण", + "description": "फिर से फेरबदल करने से पहले प्रत्येक चक्र में हर मॉडल का ठीक एक बार उपयोग किया जाता है।", + "tip1": "सार्थक वितरण के लिए कम-से-कम 2 मॉडल इस्तेमाल करें।", + "tip2": "समान प्रदर्शन वाले मॉडलों के साथ सबसे अच्छा काम करता है।", + "tip3": "कई API खातों में लोड संतुलित करने के लिए आदर्श।" }, "fill-first": { "description": "निकास प्रदाता वापस गिरने से पहले क्रमिक रूप से कोटा देता है।", @@ -3646,86 +3646,86 @@ "title": "दो विकल्पों की शक्ति" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "नि:शुल्क स्टैक ($0)", + "templateFreeStackDesc": "सभी नि:शुल्क प्रदाताओं में राउंड-रॉबिन: Kiro (Claude), Qoder (5 मॉडल), Qwen (4 मॉडल)। कोई लागत नहीं, कोडिंग कभी नहीं रुकती।", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP मोड", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "कॉम्बो के साथ शुरुआत करना", + "wizardGuideDesc": "AI ट्रैफ़िक को समझदारी से रूट करने के लिए मॉडल कॉम्बो बनाएँ", + "wizardGuideHint": "या ऊपर + कॉम्बो बनाएँ पर क्लिक करें", + "createFirstCombo": "अपना पहला कॉम्बो बनाएँ", + "wizardStep1Title": "अपने कॉम्बो को नाम दें", + "wizardStep1Desc": "रूटिंग नियमों में अपने कॉम्बो की पहचान करने के लिए उसे एक विशिष्ट नाम दें", + "wizardStep2Title": "मॉडल जोड़ें", + "wizardStep2Desc": "AI मॉडल चुनें और उनकी फ़ॉलबैक प्राथमिकता का क्रम निर्धारित करें", + "wizardStep3Title": "रणनीति चुनें", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "समीक्षा करें और सहेजें", + "wizardStep4Desc": "अपने कॉन्फ़िगरेशन की समीक्षा करें और कॉम्बो सक्रिय करें", + "usageGuideInvokeTitle": "इस कॉम्बो को कैसे कॉल करें", + "usageGuideInvokeDesc": "मॉडल के रूप में कॉम्बो का सटीक नाम भेजें, जैसे model: \"my-combo\" (या combo/my-combo)।", + "usageGuideInvokeAutoNote": "auto और auto/* एक अलग ज़ीरो-कॉन्फ़िग राउटर हैं, जो आपके कॉम्बो का उपयोग नहीं करते (जब तक कि किसी कॉम्बो का नाम वास्तव में auto न हो)।", + "usageGuideInvokeOpenrouterNote": "openrouter/auto एक वास्तविक सशुल्क OpenRouter उत्पाद (Auto Best Available) है, OmniRoute उपनाम नहीं — इसे Settings → Routing → Hide paid models के माध्यम से बाहर रखें।", + "emailVisibilityStateOn": "चालू", + "emailVisibilityStateOff": "बंद", + "reorderHandle": "क्रम बदलने के लिए खींचें", + "failedReorder": "मॉडलों का क्रम बदलने में विफल", + "builderFlowTitle": "कॉम्बो बिल्डर फ़्लो", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "मूल बातें", + "description": "नाम और प्रारंभिक टेम्पलेट" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "चरण", + "description": "प्रदाता, मॉडल और खाते का चयन" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "रणनीति", + "description": "रूटिंग व्यवहार और उन्नत सेटिंग्स" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "स्मार्ट रूटिंग", + "description": "ऑटो-रूटिंग उम्मीदवार पूल, प्रीसेट और स्कोरिंग" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "समीक्षा", + "description": "सहेजने से पहले अंतिम सत्यापन" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "चरण पूरा हुआ", + "builderStageCurrent": "वर्तमान चरण", + "builderStagePending": "लंबित", + "builderStageLocked": "लॉक किया गया — पहले पिछला चरण पूरा करें", + "builderTitle": "कॉम्बो बनाएँ", + "builderBrowseCatalog": "कैटलॉग ब्राउज़ करें", + "builderProvider": "प्रदाता", + "builderLoadingProviders": "प्रदाता लोड हो रहे हैं...", + "builderSelectProvider": "प्रदाता चुनें", + "builderModel": "मॉडल", + "builderSelectModel": "मॉडल चुनें", + "builderProviderFirst": "पहले प्रदाता चुनें", + "builderAccount": "खाता", + "builderPreview": "पूर्वावलोकन", + "builderAddStep": "चरण जोड़ें", "builderDuplicateExact": "यह सटीक प्रदाता/मॉडल/खाता चरण पहले से ही कॉम्बो में है।", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "कॉम्बो संदर्भ", + "builderAddComboRef": "कॉम्बो संदर्भ जोड़ें", + "builderComboRefStep": "कॉम्बो संदर्भ जोड़ें", + "builderPinnedAccount": "पिन किया गया खाता", + "builderLegacyEntry": "लेगेसी प्रविष्टि", + "reviewName": "नाम", + "reviewStrategy": "रणनीति", + "reviewSteps": "चरण", + "reviewAccounts": "खाते", + "reviewProviders": "प्रदाता", + "reviewComboRefs": "कॉम्बो संदर्भ", + "reviewAdvanced": "उन्नत सेटिंग्स", + "reviewAgentFlags": "एजेंट फ़्लैग", + "reviewSequence": "मॉडल अनुक्रम", + "reviewNoSteps": "कोई चरण कॉन्फ़िगर नहीं किया गया", "builderStagesDescription": "कॉम्बो को परिभाषित करने, चरण बनाने, रूटिंग रणनीति का चयन करने और परिणामों की समीक्षा करने के लिए प्रत्येक चरण को पूरा करें।", "builderStepsDescription": "प्रत्येक कॉम्बो चरण को क्रम में बनाएं: प्रदाता, मॉडल, फिर खाता। यह विभिन्न खातों में एक ही प्रदाता और मॉडल का पुन: उपयोग करने की अनुमति देता है।", "selectProvider": "प्रदाता का चयन करें", @@ -3800,27 +3800,27 @@ "range7d": "7 दिन", "range30d": "30 दिन", "range90d": "90 दिन", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 दिन", + "range365d": "365 दिन", "rangeAll": "हर समय", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "सक्रिय मॉडल", + "flatRateEstimateNotice": "इसमें फ़्लैट-रेट सदस्यताओं के लिए टोकन-मूल्य अनुमान शामिल हैं, बिल की गई लागत नहीं।", + "flatRateEstimateForecast": "अनुमान में फ़्लैट-रेट अनुमान शामिल हैं।", + "selectedWindow": "चयनित अवधि", + "activeProviders": "सक्रिय प्रदाता", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "आज का खर्च", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "प्रदाता की हिस्सेदारी", + "topProviders": "शीर्ष प्रदाता", + "costTrend": "लागत का रुझान", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "शीर्ष मॉडल", "requestsInWindow": "Requests In Window", "tokenUsage": "टोकन उपयोग", "totalTokens": "कुल टोकन", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "एपीआई समापन बिंदु", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "अधिकांश SDK और टूल के साथ OpenAI-संगत एंडपॉइंट का उपयोग करें।", + "testEndpoint": "एंडपॉइंट जाँचें →", + "advancedProtocols": "उन्नत प्रोटोकॉल", "available": "उपलब्ध समापनबिंदु", "cloudProxy": "क्लाउड प्रॉक्सी", "disableConfirm": "क्या आप वाकई क्लाउड प्रॉक्सी को अक्षम करना चाहते हैं?", @@ -3900,7 +3900,7 @@ "disableCloud": "बादल अक्षम करें", "enableCloud": "क्लाउड सक्षम करें", "modelsAcrossEndpoints": "{models} मॉडल {endpoints} समापन बिंदु पर", - "loadingModels": "Loading available models...", + "loadingModels": "उपलब्ध मॉडल लोड हो रहे हैं...", "chatDesc": "सभी प्रदाताओं के साथ स्ट्रीमिंग और गैर-स्ट्रीमिंग चैट", "embeddings": "एंबेडिंग", "embeddingsDesc": "खोज और RAG पाइपलाइनों के लिए टेक्स्ट एम्बेडिंग", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "ऑडियो फ़ाइलों को टेक्स्ट में ट्रांसक्राइब करें (व्हिस्पर)", "textToSpeech": "पाठ से वाक्", "textToSpeechDesc": "पाठ को प्राकृतिक-ध्वनि वाले भाषण में बदलें", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "संगीत निर्माण", + "musicDesc": "ComfyUI (Stable Audio, MusicGen) के माध्यम से संगीत और ऑडियो ट्रैक बनाएँ", "moderations": "संयम", "moderationsDesc": "सामग्री मॉडरेशन और सुरक्षा वर्गीकरण", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "Codex और उन्नत एजेंटिक वर्कफ़्लो के लिए OpenAI Responses API", + "listModelsDesc": "सभी कनेक्ट किए गए प्रदाताओं के सभी उपलब्ध मॉडल सूचीबद्ध करें", + "settingsApiDesc": "API के माध्यम से OmniRoute कॉन्फ़िगरेशन पढ़ें और संशोधित करें", + "settingsApi": "सेटिंग्स API", "categoryCore": "कोर API", "categoryMedia": "मीडिया और मल्टी-मोडल", - "categorySearch": "Search & Discovery", + "categorySearch": "खोज और अन्वेषण", "categoryUtility": "उपयोगिता और प्रबंधन", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "वेब खोज", + "webSearchDesc": "स्वचालित फ़ेलओवर और कैशिंग के साथ कई प्रदाताओं पर एकीकृत वेब खोज", + "searchProvider": "खोज प्रदाता", + "searchProviderDesc": "इस प्रदाता का उपयोग POST /v1/search के माध्यम से वेब खोज के लिए किया जाता है। किसी मॉडल कॉन्फ़िगरेशन की आवश्यकता नहीं है — API कुंजी कनेक्ट होते ही खोज प्रदाता उपयोग के लिए तैयार हो जाते हैं।", "enableCloudTitle": "क्लाउड प्रॉक्सी सक्षम करें", "whatYouGet": "तुम्हें क्या मिलेगा", "cloudBenefitAccess": "दुनिया में कहीं से भी अपने एपीआई तक पहुंचें", @@ -3963,35 +3963,35 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "टनल सक्षम करें", + "cloudflaredInstallAndEnable": "इंस्टॉल और सक्षम करें", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "चल रहा है", + "cloudflaredStarting": "प्रारंभ हो रहा है", + "cloudflaredStoppedState": "रुका हुआ है", + "cloudflaredNotInstalled": "इंस्टॉल नहीं है", + "cloudflaredUnsupported": "असमर्थित", + "cloudflaredError": "त्रुटि", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "अंतिम त्रुटि: {error}", "providerModelsTitle": "{provider} - मॉडल", "noModelsForProvider": "इस प्रदाता के लिए कोई मॉडल उपलब्ध नहीं है.", "chat": "बातचीत", "embedding": "एंबेडिंग", "image": "छवि", "custom": "कस्टम", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {# मॉडल} other {# मॉडल}}", + "sectionTitle": "एकीकरण इंटरफ़ेस", + "sectionDescription": "OpenAI-संगत API और परिचालन प्रोटोकॉल एंडपॉइंट", "tabApis": "एपीआईज़", - "tabProtocols": "Protocols", + "tabProtocols": "प्रोटोकॉल", "tabsAria": "Bagian titik akhir", - "protocolsTitle": "Protocols", + "protocolsTitle": "प्रोटोकॉल", "protocolsDescription": "MCP dan A2A adalah titik akhir kelas satu dengan kemampuan observasi dan kontrol khusus.", "mcpCardTitle": "Server MCP", "mcpCardDescription": "Model Protokol Konteks melalui stdio", @@ -4002,18 +4002,18 @@ "protocolActiveStreamsLabel": "Aliran aktif", "protocolLastActivity": "Aktivitas terakhir", "quickStart": "Mulai Cepat", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "openMcpDashboard": "MCP प्रबंधन खोलें", + "openA2aDashboard": "A2A प्रबंधन खोलें", + "mcpQuickStartTitle": "MCP त्वरित शुरुआत", + "mcpQuickStartStep1": "MCP सर्वर को `omniroute --mcp` के माध्यम से चलाएँ।", + "mcpQuickStartStep2": "अपने MCP क्लाइंट को stdio ट्रांसपोर्ट पर कनेक्ट करने के लिए कॉन्फ़िगर करें।", + "mcpQuickStartStep3": "`omniroute_get_health` और `omniroute_list_combos` जैसे टूल का उपयोग करें।", + "a2aQuickStartTitle": "A2A त्वरित शुरुआत", + "a2aQuickStartStep1": "`/.well-known/agent.json` पर एजेंट कार्ड खोजें।", + "a2aQuickStartStep2": "`message/send` या `message/stream` का उपयोग करके `POST /a2a` पर JSON-RPC अनुरोध भेजें।", + "a2aQuickStartStep3": "`tasks/get` और `tasks/cancel` का उपयोग करके कार्यों को ट्रैक और नियंत्रित करें।", + "completionsLegacy": "पूर्णताएँ (लीगेसी)", + "completionsLegacyDesc": "लीगेसी OpenAI टेक्स्ट पूर्णताएँ — प्रॉम्प्ट स्ट्रिंग और संदेश ऐरे, दोनों प्रारूप स्वीकार करती हैं", "messagesApi": "संदेश", "messagesApiDesc": "क्लाउड-संगत प्रदाताओं के लिए नेटिव एंथ्रोपिक संदेश एपीआई प्रारूप", "imageEdits": "छवि संपादन", @@ -4022,40 +4022,40 @@ "batchApiDesc": "अनुरोधों के बड़े बैचों को अतुल्यकालिक रूप से संसाधित करें (OpenAI-संगत)", "filesApi": "फ़ाइलें एपीआई", "filesApiDesc": "बैच प्रोसेसिंग के लिए फ़ाइलें अपलोड करें और प्रबंधित करें", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "वीडियो जनरेशन", + "videoDesc": "ComfyUI और Stable Video Diffusion जैसे AI मॉडल का उपयोग करके वीडियो जनरेट करें।", + "tailscaleRequestFailed": "Tailscale की स्थिति लोड करने में विफल", + "tailscaleEnableFailed": "Tailscale Funnel सक्षम करने में विफल", + "tailscaleWaitingForLogin": "खुले हुए ब्राउज़र टैब में Tailscale लॉगिन पूरा करें। OmniRoute अपने-आप फिर से प्रयास करेगा।", + "tailscaleLoginTimedOut": "Tailscale लॉगिन की प्रतीक्षा का समय समाप्त हो गया", + "tailscaleWaitingForFunnel": "खुले हुए ब्राउज़र टैब में इस डिवाइस के लिए Funnel सक्षम करें। OmniRoute जाँच जारी रखेगा।", + "tailscaleFunnelTimedOut": "Tailscale Funnel के सक्षम होने की प्रतीक्षा का समय समाप्त हो गया", + "tailscaleStarted": "Tailscale Funnel सक्षम किया गया", + "tailscaleDisableFailed": "Tailscale Funnel अक्षम करने में विफल", + "tailscaleStopped": "Tailscale Funnel अक्षम किया गया", + "tailscaleInstallFailed": "Tailscale इंस्टॉल करने में विफल", + "tailscaleInstallProgress": "कार्य जारी है...", + "tailscaleInstalled": "Tailscale सफलतापूर्वक इंस्टॉल किया गया", + "tailscaleRunning": "चल रहा है", + "tailscaleNeedsLogin": "लॉगिन आवश्यक है", + "tailscaleStoppedState": "रुका हुआ", + "tailscaleNotInstalled": "इंस्टॉल नहीं है", + "tailscaleUnsupported": "असमर्थित", + "tailscaleError": "त्रुटि", + "tailscaleDisable": "Funnel रोकें", + "tailscaleInstallAndEnable": "इंस्टॉल और सक्षम करें", + "tailscaleLoginAndEnable": "लॉगिन और सक्षम करें", + "tailscaleEnable": "Funnel सक्षम करें", + "tailscaleUrlNotice": "आपके Tailscale .ts.net पते का उपयोग करता है। पहली बार उपयोग करने पर लॉगिन और Funnel की स्वीकृति आवश्यक हो सकती है।", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "इस मशीन को Tailscale से प्रमाणित करें, फिर Funnel सक्षम करें।", + "tailscaleBinaryPath": "बाइनरी: {path}", + "tailscaleLastError": "पिछली त्रुटि: {error}", + "tailscaleInstallTitle": "Tailscale इंस्टॉल करें", + "tailscaleInstallIntro": "इस मशीन पर Tailscale इंस्टॉल करता है और OmniRoute को Funnel सक्षम करने के लिए तैयार करता है।", + "tailscaleInstallPasswordHint": "macOS और Linux पर पैकेज इंस्टॉल करने और डेमन शुरू करने के लिए sudo की आवश्यकता हो सकती है।", + "tailscaleSudoPlaceholder": "वैकल्पिक sudo पासवर्ड", + "tailscaleInstalling": "इंस्टॉल हो रहा है", "tailscaleSudoLabel": "सूडो पासवर्ड (macOS/Linux पर आवश्यक)", "ngrokTitle": "एनग्रोक सुरंग", "ngrokRunning": "चल रहा है", @@ -4108,7 +4108,7 @@ "all": "सभी", "more": "+{count} और", "showInternalTooltip": "आंतरिक रूट दिखाएं या छिपाएं (डिफ़ॉल्ट रूप से छिपे हुए)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Bearer प्रमाणीकरण", "requestBody": "अनुरोध बॉडी", "close": "बंद करें", "tryIt": "इसे आज़माएं", @@ -4144,9 +4144,9 @@ "tierPublic": "सार्वजनिक", "hideInternal": "आंतरिक छिपाएं", "showInternal": "आंतरिक दिखाएं", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "कस्टम सिस्टम प्रॉम्प्ट", + "customSystemPromptDescription": "प्रत्येक मॉडल अनुरोध में एक कस्टम सिस्टम प्रॉम्प्ट जोड़ें", + "customSystemPromptPlaceholder": "उदा. हमेशा समुद्री डाकू की शैली में जवाब दें...", "obsidianEnterToken": "कृपया एक Obsidian API टोकन दर्ज करें", "obsidianConnectFailed": "कनेक्ट करने में विफल", "obsidianConnectionFailed": "कनेक्शन विफल रहा", @@ -4176,7 +4176,7 @@ "obsidianDisable": "अक्षम करें", "obsidianConfigureMobile": "Obsidian मोबाइल कॉन्फ़िगर करें", "obsidianMobileInstructions": "Obsidian मोबाइल में: सेटिंग्स → सिंक → WebDAV → निम्नलिखित दर्ज करें:", - "obsidianWebdavUrl": "WebDAV URL", + "obsidianWebdavUrl": "WebDAV यूआरएल", "obsidianUsername": "यूज़रनेम", "obsidianPassword": "पासवर्ड", "obsidianTailscaleHint": "यदि मोबाइल से कनेक्ट कर रहे हैं तो localhost के बजाय अपने Tailscale IP का उपयोग करें। दोनों डिवाइस एक ही Tailscale नेटवर्क पर होने चाहिए।", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "टोकन कॉन्फ़िगर किया गया। Notion उपकरण MCP के माध्यम से उपलब्ध हैं।" }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "एंडपॉइंट प्रॉक्सी", + "tabApiEndpoints": "API एंडपॉइंट्स", + "apiEndpointsTitle": "API एंडपॉइंट्स", + "apiEndpointsDescription": "बैकएंड API एंडपॉइंट्स, जिनका उपयोग अन्य एप्लिकेशन और सेवाएँ कर सकती हैं। यह अनुभाग दस्तावेज़ीकरण और परीक्षण क्षमताओं के साथ सभी उपलब्ध REST APIs को सूचीबद्ध करेगा।", + "comingSoon": "जल्द आ रहा है", + "plannedFeatures": "नियोजित सुविधाएँ", + "featureRestApi": "इंटरैक्टिव दस्तावेज़ीकरण के साथ REST API एंडपॉइंट कैटलॉग", + "featureWebhooks": "Webhook कॉन्फ़िगरेशन और इवेंट सदस्यताएँ", + "featureSwagger": "OpenAPI / Swagger स्पेक का स्वचालित निर्माण", + "featureAuth": "प्रति एंडपॉइंट API कुंजी और OAuth स्कोप प्रबंधन" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP डैशबोर्ड लोड हो रहा है...", + "activate": "सक्रिय करें", + "deactivate": "निष्क्रिय करें", + "confirmSwitchCombo": "कॉम्बो \"{combo}\" को {action} करने की पुष्टि करें?", + "switchComboFailed": "कॉम्बो की स्थिति बदलने में विफल।", + "switchComboSuccess": "कॉम्बो \"{combo}\" अपडेट किया गया।", + "confirmApplyProfile": "रेज़िलिएंस प्रोफ़ाइल \"{profile}\" लागू करें?", + "applyProfileFailed": "रेज़िलिएंस प्रोफ़ाइल लागू करने में विफल।", + "applyProfileSuccess": "प्रोफ़ाइल \"{profile}\" लागू की गई।", + "confirmResetBreakers": "सभी सर्किट ब्रेकर रीसेट करें?", + "resetBreakersFailed": "सर्किट ब्रेकर रीसेट करने में विफल।", + "resetBreakersSuccess": "सर्किट ब्रेकर रीसेट किए गए।", + "processStatus": "प्रक्रिया की स्थिति", "online": "Online", "offline": "Offline", "disableLabel": "{label} अक्षम करें", @@ -4237,119 +4237,119 @@ "mcpStep2": "stdio ट्रांसपोर्ट पर कनेक्ट करने के लिए अपने MCP क्लाइंट को कॉन्फ़िगर करें।", "mcpStep3": "{code1} और {code2} जैसे टूल्स को इनवोक करें।", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "सत्र का अपटाइम", + "lastHeartbeat": "अंतिम हार्टबीट", + "activity24h": "गतिविधि (24 घंटे)", + "totalCalls": "कुल कॉल", + "successRate": "सफलता दर", + "avgLatency": "औसत विलंबता", + "topTools": "शीर्ष टूल", + "noToolCalls24h": "पिछले 24 घंटों में कोई टूल कॉल नहीं हुई।", + "runtimeDetails": "रनटाइम विवरण", + "transport": "ट्रांसपोर्ट", + "scopesEnforced": "स्कोप लागू हैं", + "yes": "हाँ", + "no": "नहीं", + "lastCall": "अंतिम कॉल", + "heartbeatPath": "हार्टबीट पथ", + "operationalControls": "परिचालन नियंत्रण", + "switchCombo": "कॉम्बो बदलें", + "inactive": "निष्क्रिय", + "active": "सक्रिय", + "activateCombo": "कॉम्बो सक्रिय करें", + "deactivateCombo": "कॉम्बो निष्क्रिय करें", + "applyResilienceProfile": "रेज़िलिएंस प्रोफ़ाइल लागू करें", + "profileAggressive": "आक्रामक", + "profileBalanced": "संतुलित", + "profileConservative": "रूढ़िवादी", + "applyProfile": "प्रोफ़ाइल लागू करें", + "resetCircuitBreakers": "सर्किट ब्रेकर रीसेट करें", + "resetCircuitBreakersHelp": "प्रदाताओं की वर्तमान ब्रेकर स्थिति और विफलता काउंटर साफ़ करता है।", + "resetAllBreakers": "सभी ब्रेकर रीसेट करें", + "toolsAndScopes": "टूल और स्कोप", + "tableTool": "टूल", + "tableScopes": "स्कोप", + "tablePhase": "चरण", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "ऑडिट लॉग", + "auditSummary": "कॉल: {total} | {totalPages} में से पृष्ठ {page}", + "allTools": "सभी टूल", + "allResults": "सभी परिणाम", + "success": "सफलता", + "failure": "विफलता", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "ऑडिट प्रविष्टियाँ लोड हो रही हैं...", + "noAuditEntriesForFilters": "वर्तमान फ़िल्टर के लिए कोई ऑडिट प्रविष्टि नहीं मिली।", + "tableTimestamp": "टाइमस्टैम्प", + "tableDuration": "अवधि", + "tableResult": "परिणाम", + "tableApiKey": "API कुंजी", + "failed": "विफल", + "previous": "पिछला", + "next": "अगला", + "apiKeyId": "API कुंजी आईडी", + "offset": "ऑफ़सेट", + "limit": "सीमा", + "tool": "टूल" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A डैशबोर्ड लोड हो रहा है...", + "confirmCancelTask": "कार्य {taskId} रद्द करें?", + "cancelTaskFailed": "कार्य रद्द करने में विफल।", + "cancelTaskSuccess": "कार्य {taskId} रद्द कर दिया गया।", + "smokeSendFailed": "message/send स्मोक टेस्ट विफल रहा।", + "smokeSendSuccessWithTask": "message/send सफल रहा (टास्क {taskId})।", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream स्मोक टेस्ट विफल रहा।", + "smokeStreamSuccessWithTask": "message/stream सफल रहा (टास्क {taskId}{stateSuffix})।", + "smokeStreamNoTaskId": "message/stream बिना टास्क आईडी के समाप्त हुआ।", + "health": "स्वास्थ्य", "ok": "ok", - "totalTasks": "Total tasks", + "totalTasks": "कुल टास्क", "activeStreams": "Aliran aktif", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "lastTask": "पिछला टास्क", + "taskStateOverview": "टास्क स्थिति का अवलोकन", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "सबमिट किया गया", + "working": "कार्यरत", + "completed": "पूर्ण", + "failed": "विफल", + "cancelled": "रद्द" }, - "agentCard": "Agent card", + "agentCard": "एजेंट कार्ड", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "संस्करण", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "क्षमताएँ", + "agentCardNotAvailable": "एजेंट कार्ड उपलब्ध नहीं है।", + "quickValidation": "त्वरित सत्यापन", + "quickValidationDescription": "लाइव `/a2a` एंडपॉइंट के माध्यम से स्मोक कॉल निष्पादित करता है।", + "runMessageSend": "message/send चलाएँ", + "runMessageStream": "message/stream चलाएँ", + "taskManagement": "टास्क प्रबंधन", + "taskSummary": "{total} टास्क | पृष्ठ {page}, कुल {totalPages}", + "allStates": "सभी", + "allSkills": "सभी कौशल", + "loadingTasks": "टास्क लोड हो रहे हैं...", + "noTasksForFilters": "वर्तमान फ़िल्टर के लिए कोई टास्क नहीं मिला।", + "tableTask": "टास्क", + "tableSkill": "कौशल", + "tableState": "स्थिति", + "tableUpdated": "अपडेट किया गया", + "tableActions": "कार्रवाइयाँ", + "view": "देखें", + "cancel": "रद्द करें", + "previous": "पिछला", + "next": "अगला", + "taskDetail": "टास्क का विवरण", + "close": "बंद करें", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "इवेंट्स", + "artifacts": "आर्टिफ़ैक्ट्स", + "tablePhase": "तालिका चरण", + "offset": "ऑफ़सेट", + "limit": "सीमा", + "skill": "कौशल", "rpcEndpoint": "पोस्ट/ए2ए", "rpcMethodSend": "संदेश/भेजें", "rpcMethodStream": "संदेश/स्ट्रीम", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "कार्रवाइयाँ", + "addMemory": "मेमोरी जोड़ें", + "allTypes": "सभी प्रकार", "cancel": "रद्द करें", "checkHealth": "स्वास्थ्य की जाँच करें", "checkingHealth": "जाँच हो रही है...", @@ -4382,13 +4382,13 @@ "howWorksToggle": "यह कैसे काम करता है", "howWorksContent": "1. स्वचालित निष्कर्षण: प्रत्येक प्रतिक्रिया के अंत में, तथ्यों और प्रसंगों का पता लगाया जाता है और उन्हें स्वचालित रूप से सहेजा जाता है।\n2. पुनर्प्राप्ति: प्रत्येक प्रतिक्रिया से पहले, FTS5 (सटीक), वेक्टर (सिमेंटिक), या हाइब्रिड RRF के माध्यम से सबसे प्रासंगिक यादों को खोजा जाता है।\n3. इंजेक्शन: प्रतिक्रिया की गुणवत्ता में सुधार के लिए सहायक संदर्भ में प्रासंगिक यादों को इंजेक्ट किया जाता है।\n4. प्रबंधन: पुरानी यादों को देखने, संपादित करने, निर्यात करने और संकुचित करने के लिए इस पृष्ठ का उपयोग करें।" }, - "content": "Content", + "content": "सामग्री", "contentPlaceholder": "याद रखने योग्य मान या JSON सामग्री", - "created": "Created", - "delete": "Delete", + "created": "बनाया गया", + "delete": "हटाएँ", "deleteConfirmDesc": "इस क्रिया को पूर्ववत नहीं किया जा सकता है। मेमोरी को स्थायी रूप से हटा दिया जाएगा।", "deleteConfirmTitle": "मेमोरी हटाएं?", - "description": "View and manage stored memory entries", + "description": "संग्रहित मेमोरी प्रविष्टियाँ देखें और प्रबंधित करें", "editMemory": "मेमोरी संपादित करें", "editModal": { "title": "मेमोरी संपादित करें", @@ -4444,20 +4444,20 @@ "configureCta": "कॉन्फ़िगर करें", "vectorStoreInstallHint": "वेक्टर खोज सक्षम करने के लिए: npm install sqlite-vec (नेटिव Node.js की आवश्यकता है, WASM की नहीं), फिर रीस्टार्ट करें।" }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "प्रासंगिक", + "export": "निर्यात करें", + "factual": "तथ्यात्मक", "healthUnknown": "स्वास्थ्य अज्ञात", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "सफलता दर", + "import": "आयात करें", "importError": "फ़ाइल आयात करने में विफल", "importResult": "{imported} आयातित, {skipped} छोड़े गए", - "key": "Key", + "key": "कुंजी", "keyPlaceholder": "जैसे उपयोगकर्ता.वरीयताएँ.थीम", "loading": "Loading memories...", - "memories": "Memories", + "memories": "मेमोरी", "next": "अगला", - "noMemories": "No memories found", + "noMemories": "कोई मेमोरी नहीं मिली", "pageInfo": "{totalPages} का पृष्ठ {page} (कुल {total})", "pipelineError": "पाइपलाइन त्रुटि", "pipelineOk": "पाइपलाइन ठीक है ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "पूर्वावलोकन प्राप्त करने में विफल" }, "previous": "पिछला", - "procedural": "Procedural", + "procedural": "प्रक्रियात्मक", "qdrant": { "title": "Qdrant (वेक्टर स्टोर टियर 2)", "description": "स्केलेबल सिमेंटिक खोज के लिए वैकल्पिक Qdrant एकीकरण", @@ -4534,8 +4534,8 @@ }, "save": "सहेजें", "saving": "सहेजा जा रहा है...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "मेमोरी खोजें...", + "semantic": "अर्थगत", "summarize": { "title": "पुरानी मेमोरीज़ को संक्षिप्त करें", "noCandidates": "संक्षिप्त करने के लिए कोई मेमोरी योग्य नहीं है (मानदंड: >30 दिन पुरानी)।", @@ -4547,8 +4547,8 @@ "playground": "प्लेग्राउंड", "engine": "इंजन" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "मेमोरी प्रबंधन", + "tokensUsed": "उपयोग किए गए टोकन", "tooltip": { "totalEntries": "इस API key के लिए संग्रहीत कुल यादें", "tokensUsed": "सक्रिय यादों द्वारा घेरे गए अनुमानित कुल टोकन", @@ -4558,15 +4558,15 @@ "procedural": "प्रक्रियाएं, वर्कफ़्लो और निर्देश जिनका सहायक को पालन करना चाहिए", "semantic": "अवधारणाएं, प्राथमिकताएं और डोमेन ज्ञान" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "कुल प्रविष्टियाँ", + "type": "प्रकार", "memoryEnabled": "मेमोरी सक्षम है" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "कौशल", + "description": "AI कौशलों को प्रबंधित और मॉनिटर करें", + "skillsTab": "कौशल", + "executionsTab": "निष्पादन", "selectSkillToInspect": "जांच करने के लिए बाईं ओर एक कौशल चुनें।", "schemaTab": "स्कीमा", "handlerTab": "हैंडलर", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "परीक्षण चलाएं (प्लेसहोल्डर)", "setModeAria": "मोड {mode} सेट करें", "uninstallSkill": "कौशल अनइंस्टॉल करें", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "सैंडबॉक्स", + "loading": "कौशल लोड हो रहे हैं...", + "noSkills": "कोई कौशल नहीं मिला", + "noExecutions": "कोई निष्पादन नहीं मिला", + "enabled": "सक्षम", + "disabled": "अक्षम", "delete": "हटाएं", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "संस्करण", + "tableDescription": "विवरण", + "skill": "स्किल", + "status": "स्थिति", + "duration": "अवधि", + "time": "समय", + "sandboxConfig": "सैंडबॉक्स कॉन्फ़िगरेशन", + "cpuLimit": "CPU सीमा", + "cpuLimitDesc": "प्रति स्किल अधिकतम निष्पादन समय", + "memoryLimit": "मेमोरी सीमा", + "memoryLimitDesc": "अधिकतम मेमोरी आवंटन", + "timeout": "टाइमआउट", + "timeoutDesc": "प्रतिक्रिया के लिए अधिकतम प्रतीक्षा समय", + "networkAccess": "नेटवर्क एक्सेस", + "networkAccessDesc": "आउटबाउंड नेटवर्क अनुरोधों की अनुमति दें", + "mode": "मोड", "q": "Q", "filterSkillsPlaceholder": "कौशल को नाम, विवरण या टैग के आधार पर फ़िल्टर करें", "allModes": "सभी मोड", @@ -4665,13 +4665,13 @@ "retry": "पुनः प्रयास करें", "allOperational": "सभी प्रणालियाँ क्रियाशील", "issuesDetected": "सिस्टम संबंधी समस्याओं का पता चला", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute तैयार है", + "healthVerdictActionRequired": "पूर्ण संचालन बहाल करने के लिए कार्रवाई आवश्यक है", + "healthVerdictCoolingDown": "हाल के परिवर्तनों के बाद शांत हो रहा है", + "healthSubtitle": "सिस्टम स्वास्थ्य जाँच", + "advancedDiagnosticsTitle": "उन्नत निदान", + "hide": "छिपाएँ", + "show": "दिखाएँ", "updatedAt": "अपडेट किया गया {time}", "latency": "विलंबता", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "प्रदाता", "configuredProvidersLabel": "डैशबोर्ड में कॉन्फ़िगर किया गया", "configuredProvidersHint": "रनटाइम स्थिति की परवाह किए बिना, /डैशबोर्ड/प्रदाताओं में सहेजे गए क्रेडेंशियल वाले प्रदाता।", - "activeProviders": "{count} active", + "activeProviders": "{count} सक्रिय", "activeProvidersHint": "कॉन्फ़िगर किए गए प्रदाता वर्तमान में रूटिंग अनुरोधों के लिए सक्षम हैं।", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} निगरानी में", "monitoredProvidersHint": "प्रदाताओं को वर्तमान में सर्किट-ब्रेकर स्वास्थ्य मॉनिटर द्वारा ट्रैक किया जाता है।", "healthyCount": "{count} स्वस्थ", "nodeVersion": "नोड {version}", @@ -4721,11 +4721,11 @@ "resetting": "रीसेट किया जा रहा है...", "resetAll": "सभी रीसेट करें", "until": "{time} तक", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "समाप्त", + "learnedFromHeaders": "हेडर से सीखा गया", + "remainingOfLimit": "{remaining}/{limit} शेष", + "throttleStatus": "थ्रॉटल: {value}", + "lastHeaderUpdate": "हेडर अपडेट: {age}", "databaseHealth": "डेटाबेस स्वास्थ्य", "databaseHealthDescription": "पुरानी quota/domain पंक्तियों और टूटे हुए combo संदर्भों का निदान और मरम्मत करें।", "status": "स्थिति", @@ -4888,28 +4888,28 @@ "previous": "पिछला", "next": "अगला", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "विवरण देखें", + "eventMetadata": "इवेंट मेटाडेटा", + "eventPayload": "इवेंट पेलोड", + "requestId": "अनुरोध आईडी", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "ऑफ़सेट", + "limit": "सीमा", + "status": "स्थिति", + "resourceType": "संसाधन प्रकार", + "totalEntries": "कुल प्रविष्टियाँ", + "tab": "टैब", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "बंद करें", + "runningRequests": "सक्रिय अनुरोध", + "runningRequestsDesc": "वर्तमान में चल रहे अपस्ट्रीम अनुरोधों का रीयल-टाइम दृश्य", "clearAll": "सभी साफ़ करें", "confirmClearActiveRequests": "सभी सक्रिय अनुरोध साफ़ करें?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "मॉडल", + "provider": "प्रदाता", + "account": "खाता", + "elapsed": "बीता समय", "activeStage": "चरण", "activeStageUnknown": "अभी तक अपस्ट्रीम को नहीं भेजा गया", "activeStageRegistered": "पंजीकृत", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "रेट लिमिट स्लॉट प्राप्त हुआ", "activeStageSendingToProvider": "अपस्ट्रीम को भेजा जा रहा है", "activeStageProviderResponseStarted": "अपस्ट्रीम प्रतिक्रिया शुरू हुई", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "संख्या", + "payloads": "पेलोड", + "viewPayloads": "देखें", + "activeCount": "{count} सक्रिय", + "clientPayload": "क्लाइंट अनुरोध पेलोड", + "upstreamPayload": "अपस्ट्रीम प्रदाता पेलोड", + "upstreamNotSentYet": "अभी तक अपस्ट्रीम को नहीं भेजा गया", + "runningRequestDetailMeta": "खाता: {account} — बीता समय: {elapsed}", + "export": "निर्यात करें", + "exporting": "निर्यात किया जा रहा है...", + "exportFailed": "निर्यात विफल रहा", "cleanHistoryButton": "इतिहास साफ़ करें", "cleanHistoryTitle": "लॉग इतिहास साफ़ करें?", "cleanHistoryMessage": "यह DATA_DIR/call_logs के अंतर्गत सभी अनुरोध लॉग पंक्तियों, लीगेसी विवरण पंक्तियों और स्थानीय आर्टिफ़ैक्ट फ़ाइलों को स्थायी रूप से साफ़ कर देता है। सफ़ाई के बाद लाइव पेज रीफ़्रेश हो जाएगा।", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} लॉग प्रविष्टियां, {deletedArtifacts} आर्टिफ़ैक्ट और {deletedDetailedLogs} लीगेसी विवरण पंक्तियां साफ़ की गईं।", "cleanHistoryEmpty": "कोई अनुरोध लॉग इतिहास नहीं मिला।", "cleanHistoryFailed": "लॉग इतिहास साफ़ करने में विफल।", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "समय सीमा", + "lastNHours": "पिछले {hours}", + "defaultRange": "डिफ़ॉल्ट", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "लॉग प्राप्त करने में विफल", + "copyFailed": "लॉग प्रविष्टि कॉपी करने में विफल", + "copyLogEntry": "लॉग प्रविष्टि कॉपी करें", "filterByLevel": "लॉग स्तर के अनुसार फ़िल्टर करें", "searchPlaceholder": "लॉग खोजें…", "searchAria": "लॉग प्रविष्टियाँ खोजें", @@ -4987,9 +4987,9 @@ "multiProvider": "बहु-प्रदाता", "usageTracking": "उपयोग ट्रैकिंग", "securityDesc": "अपने डैशबोर्ड की सुरक्षा के लिए एक पासवर्ड सेट करें, या अभी के लिए छोड़ें।", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ पासवर्ड के बिना, आप सेटअप के दौरान प्रदाता नहीं जोड़ पाएँगे। पासवर्ड सेट करने के बाद आप उन्हें डैशबोर्ड से जोड़ सकते हैं।", "providerDesc": "अपना पहला AI प्रदाता कनेक्ट करें. आप बाद में और भी जोड़ सकते हैं.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "प्रदाता जोड़ने के लिए आपको पहले पासवर्ड सेट करना होगा। कृपया सुरक्षा चरण पर वापस जाकर पासवर्ड सेट करें, या बाद में डैशबोर्ड से प्रदाता जोड़ें।", "apiKeyRequired": "एपीआई कुंजी (आवश्यक)", "customUrlOptional": "कस्टम यूआरएल (वैकल्पिक)", "testDesc": "आइए सत्यापित करें कि आपका प्रदाता कनेक्शन काम करता है।", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "आयात किया जा रहा है…", "importFromFileImport": "{count} प्रदाता आयात करें", "importFromFileResult": "{success} प्रदाता आयात किए गए ({failed} विफल रहे)", + "importFromFileDownloadTemplate": "CSV टेम्पलेट डाउनलोड करें", + "importFromFileMoreErrors": "+{count} और", + "importFromFileSchemaHint": "CSV कॉलम का क्रम निश्चित है: provider, name, apiKey, baseUrl (वैकल्पिक), priority (वैकल्पिक)। provider कॉलम में किसी मौजूदा प्रबंधित प्रदाता की id या पहले से पंजीकृत OpenAI/Anthropic-संगत नोड की id होनी चाहिए — यह आयात नए एंडपॉइंट नोड नहीं बनाता।", "adaptaTutorial": { "title": "Adapta Web को कैसे कनेक्ट करें", "introPrefix": "Adapta, Clerk के माध्यम से प्रमाणीकरण करता है। टोकन", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} छिपे हुए", "warningCount": "{count} चेतावनी", "noConnections": "कोई कनेक्शन नहीं", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "समाप्त", + "expiringSoonBadge": "जल्द समाप्त होने वाला", "freeTier": "फ्री टियर", "freeTierAvailable": "निःशुल्क टियर उपलब्ध है", "hasFreeTooltip": "निःशुल्क टियर उपलब्ध", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "इस प्रदाता को अस्वीकृत कर दिया गया है", "riskNotice": { "title": "जारी रखने से पहले", - "detailsTitle": "Usage caveats", + "detailsTitle": "उपयोग संबंधी चेतावनियाँ", "tooltip": "उपयोग संबंधी चेतावनियों वाला प्रदाता — विवरण के लिए क्लिक करें", "oauth": "यह प्रदाता आपके आधिकारिक उत्पाद सत्र/OAuth का उपयोग करता है, जो प्रॉक्सी/राउटर उपयोग के लिए अधिकृत नहीं है। हम गहन स्वायत्त एजेंट उपयोग (OpenCloud-शैली, लंबे बहु-चरणीय प्रवाह, बड़े बैच) की अनुशंसा नहीं करते हैं — अपस्ट्रीम खाते को प्रतिबंधित या ब्लॉक करके प्रतिक्रिया दे सकता है। अपने जोखिम पर उपयोग करें।", "webCookie": "यह प्रदाता आपके वेब सत्र कुकीज़ के माध्यम से प्रमाणित करता है। अपस्ट्रीम सेवा किसी भी समय सत्र को अमान्य कर सकती है, जिससे आपको फिर से लॉग इन करने की आवश्यकता होगी। लंबे समय तक बिना निगरानी वाले संचालन के लिए अनुशंसित नहीं है। अपने जोखिम पर उपयोग करें।", @@ -5188,9 +5191,9 @@ "cancel": "रद्द करें" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} कनेक्शन चिह्नित — हाल की अधिकतम {maxFailures} विफलताएँ{lastFailureSuffix}। कनेक्शन की स्थिति देखने के लिए क्लिक करें।", + "lastFailureSuffix": "(अंतिम विफलता {time})", + "ariaLabel": "कनेक्शन की स्थिति का विवरण देखें, {count} चेतावनी/चेतावनियाँ" }, "disabled": "अक्षम", "enableProvider": "प्रदाता सक्षम करें", @@ -5225,7 +5228,7 @@ "failedCreate": "प्रदाता बनाने में विफल", "errorOccurred": "एक त्रुटि हुई. कृपया पुन: प्रयास करें।", "modelStatus": "मॉडल स्थिति", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "केवल कॉन्फ़िगर किए गए", "allModelsOperational": "सभी मॉडल क्रियाशील", "modelsWithIssues": "मुद्दों के साथ {count} मॉडल", "allModelsNormal": "सभी मॉडल सामान्य रूप से प्रतिक्रिया दे रहे हैं।", @@ -5236,7 +5239,7 @@ "clearing": "समाशोधन...", "until": "{time} तक", "providerTestFailed": "प्रदाता परीक्षण विफल रहा", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "प्रदाता परीक्षण का समय समाप्त हो गया — एक साथ परीक्षण करने के लिए बहुत अधिक कनेक्शन हैं", "modeTest": "{mode} परीक्षण", "passedCount": "{count} उत्तीर्ण", "failedCount": "{count} विफल", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "आइकन URL", "iconUrlHint": "वैकल्पिक। इस प्रदाता के आइकन के रूप में दिखाया जाने वाला छवि URL।", "iconUrlInvalid": "अमान्य आइकन URL। http(s):// या data:image/*;base64 URL का उपयोग करें।", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "दैनिक कोटा रीसेट समय क्षेत्र", + "dailyQuotaResetTimezoneHint": "जब अपस्ट्रीम X-RateLimit-Reset न दे, तब उपयोग किया जाने वाला वैकल्पिक IANA समय क्षेत्र। छोटा कूलडाउन बनाए रखने के लिए इसे खाली छोड़ दें।", + "dailyQuotaResetHourLabel": "दैनिक कोटा रीसेट घंटा", + "dailyQuotaResetHourHint": "ऊपर दिए गए समय क्षेत्र में स्थानीय घंटा 0-23। खाली होने का अर्थ है कि कोई नोड-स्तरीय घड़ी नहीं है।", "anthropicPrefixPlaceholder": "एसी-उत्पाद", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "प्रदाता नहीं मिला", "deleteConnectionConfirm": "यह कनेक्शन हटाएं?", "deleteConnectionConfirmNamed": "क्या आप वाकई {name} को हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती।", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "चयनित हटाएँ ({count})", + "batchDeleteConfirm": "क्या {count} कनेक्शन हटाएँ? इस कार्रवाई को पूर्ववत नहीं किया जा सकता।", + "batchDeleteSuccess": "{count} कनेक्शन हटाए गए", "batchActivateSelected": "सक्रिय करें", "batchDeactivateSelected": "निष्क्रिय करें", "batchRetestSelected": "पुनः परीक्षण करें", @@ -5292,7 +5295,7 @@ "filterError": "त्रुटि", "filterBanned": "प्रतिबंधित", "filterCreditsExhausted": "क्रेडिट समाप्त", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "खाते खोजें…", "noFilteredConnections": "वर्तमान फ़िल्टर से कोई कनेक्शन मेल नहीं खाता।", "failedSetAlias": "उपनाम सेट करने में विफल", "setAliasSuccess": "उपनाम {alias} सेट किया गया", @@ -5305,19 +5308,19 @@ "openaiCompatibleDetails": "OpenAI संगत विवरण", "messagesApi": "संदेश एपीआई", "responsesApi": "प्रतिक्रियाएँ एपीआई", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "एम्बेडिंग्स", + "audioTranscriptions": "ऑडियो ट्रांसक्रिप्शन", + "audioSpeech": "ऑडियो स्पीच", + "imagesGenerations": "इमेज जनरेशन", "chatCompletions": "चैट समापन", "importingModels": "आयात किया जा रहा है...", "importFromModels": "/मॉडल से आयात करें", - "modelsImported": "{count} models imported", + "modelsImported": "{count} मॉडल आयात किए गए", "allModelsAlreadyImported": "सभी मॉडल पहले से ही आयातित हैं", "noNewModelsToImport": "आयात करने के लिए कोई नए मॉडल नहीं — सभी मॉडल पहले से ही रजिस्ट्री या कस्टम मॉडल सूची में हैं", "skippingExistingModels": "{count} मौजूदा मॉडल छोड़े जा रहे हैं", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "autoSync": "स्वतः-सिंक", + "autoSyncShort": "सिंक करें", "autoFetchModels": "स्वचालित रूप से अपस्ट्रीम मॉडल लाएं", "autoFetchModelsTooltip": "आवश्यक होने पर अपस्ट्रीम मॉडल लाएं और कैश करें", "autoFetchModelsEnabled": "उपधारा मॉडल स्वचालित-लाने की सुविधा सक्षम है", @@ -5329,15 +5332,15 @@ "resetToUpstreamDefaults": "उपधारा डिफ़ॉल्ट्स को पुनर्स्थापित करें", "resetToUpstreamDefaultsSuccess": "उपधारा मॉडल डिफ़ॉल्ट्स को पुनर्स्थापित किया गया", "resetToUpstreamDefaultsFailed": "उपधारा मॉडल डिफ़ॉल्ट्स को पुनर्स्थापित करने में विफल", - "autoSyncTooltip": "Automatically refresh model list every 24h (configurable via MODEL_SYNC_INTERVAL_HOURS)", - "autoSyncEnabled": "Auto-sync enabled — models will refresh periodically", - "autoSyncDisabled": "Auto-sync disabled", - "autoSyncToggleFailed": "Failed to toggle auto-sync", - "autoSyncPartialFailure": "Auto-sync updated for some connections, but not all", - "clearAllModels": "Clear All Models", - "clearAllModelsConfirm": "Are you sure you want to remove all models for this provider? This cannot be undone.", - "clearAllModelsSuccess": "All models cleared", - "clearAllModelsFailed": "Failed to clear models", + "autoSyncTooltip": "हर 24 घंटे में मॉडल सूची को स्वचालित रूप से रीफ़्रेश करें (MODEL_SYNC_INTERVAL_HOURS के माध्यम से कॉन्फ़िगर किया जा सकता है)", + "autoSyncEnabled": "स्वतः-सिंक सक्षम है — मॉडल समय-समय पर रीफ़्रेश होंगे", + "autoSyncDisabled": "स्वतः-सिंक अक्षम है", + "autoSyncToggleFailed": "स्वतः-सिंक टॉगल करने में विफल", + "autoSyncPartialFailure": "कुछ कनेक्शन के लिए स्वतः-सिंक अपडेट हुआ, लेकिन सभी के लिए नहीं", + "clearAllModels": "सभी मॉडल हटाएँ", + "clearAllModelsConfirm": "क्या आप वाकई इस प्रदाता के सभी मॉडल हटाना चाहते हैं? इसे पूर्ववत नहीं किया जा सकता।", + "clearAllModelsSuccess": "सभी मॉडल हटा दिए गए", + "clearAllModelsFailed": "मॉडल हटाने में विफल", "addConnectionToImport": "आयात सक्षम करने के लिए एक कनेक्शन जोड़ें.", "noModelsConfigured": "कोई मॉडल कॉन्फ़िगर नहीं किया गया", "connectionCount": "{count} कनेक्शन", @@ -5350,13 +5353,13 @@ "importFailed": "आयात विफल", "noNewModelsAdded": "कोई नया मॉडल नहीं जोड़ा गया.", "adding": "जोड़ा जा रहा है...", - "close": "Close", + "close": "बंद करें", "importingModelsTitle": "मॉडल आयात करना", "copyModel": "मॉडल कॉपी करें", "filterModels": "मॉडल फ़िल्टर करें…", "testAllRateLimited": "रेट लिमिट पूरी हो गई, समय से पहले रोक दिया गया", "hideFailedAuto": "विफल मॉडलों को स्वतः छिपाएं", - "selectAllModels": "Select all", + "selectAllModels": "सभी चुनें", "hideAllModels": "सभी छिपाएं", "modelsActive": "सक्रिय", "showModel": "मॉडल दिखाएँ", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "प्रति पंक्ति एक कुंजी. प्रारूप: नाम|apiKey या सिर्फ apiKey (सूचकांक द्वारा स्वचालित नाम)।", "bulkValidateKeys": "सहेजने से पहले प्रत्येक कुंजी को सत्यापित करें (धीमी गति से)", "bulkAddAllKeys": "सभी कुंजियाँ जोड़ें", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# कुंजी जोड़ी गई} other {# कुंजियाँ जोड़ी गईं}}", + "bulkFailedCount": "{count, plural, one {# विफल} other {# विफल}}", "optional": "वैकल्पिक", "anthropicCompatibleName": "एंथ्रोपिक संगत", "openaiCompatibleName": "ओपनएआई संगत", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "एक अप्रत्याशित त्रुटि उत्पन्न हुई", "getApiKey": "API कुंजी प्राप्त करें", "getApiKeyDescription": "API कुंजी के लिए पंजीकरण करें या साइन अप करें", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# कनेक्शन} other {# कनेक्शन}}", "messagesPath": "संदेश", "responsesPath": "प्रतिक्रियाएं", "chatCompletionsPath": "चैट/समापन", @@ -5419,17 +5422,17 @@ "configured": "विन्यस्त", "providerProxyConfigureHint": "इस प्रदाता के सभी कनेक्शनों के लिए प्रॉक्सी कॉन्फ़िगर करें", "providerProxy": "प्रदाता प्रॉक्सी", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "env की मरम्मत करें", + "repairEnvWorking": "मरम्मत की जा रही है...", + "repairEnvHint": "मौजूदा मानों को अधिलेखित किए बिना अनुपलब्ध OAuth डिफ़ॉल्ट को .env में पुनर्स्थापित करें।", + "repairEnvSuccess": "OAuth डिफ़ॉल्ट पुनर्स्थापित किए गए", + "repairEnvFailed": ".env की मरम्मत करने में विफल", "noConnectionsYet": "अभी तक कोई कनेक्शन नहीं", "addFirstConnectionHint": "आरंभ करने के लिए अपना पहला कनेक्शन जोड़ें", "addConnection": "कनेक्शन जोड़ें", "availableModels": "उपलब्ध मॉडल", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "अंतर्निहित मॉडल", + "builtInModelsHint": "इस प्रदाता के लिए रजिस्ट्री मॉडल। संगतता विकल्प सेट करने के लिए पेंसिल का उपयोग करें।", "pageAutoRefresh": "पेज अपने आप रीफ़्रेश हो जाएगा...", "statusDisabled": "अक्षम", "statusConnected": "जुड़ा हुआ", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "इस कनेक्शन को पुनः प्रमाणित करें", "proxyConfig": "प्रॉक्सी कॉन्फ़िगरेशन", "aliasExistsAlert": "उपनाम \"{alias}\" पहले से मौजूद है। कृपया किसी भिन्न मॉडल का उपयोग करें या मौजूदा उपनाम संपादित करें।", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "उपनाम", + "clickToSetAlias": "उपनाम सेट करने के लिए क्लिक करें", + "clickToEditAlias": "उपनाम: {alias} (संपादित करने के लिए क्लिक करें)", "openRouterAnyModelHint": "ओपनराउटर किसी भी मॉडल का समर्थन करता है। त्वरित पहुंच के लिए मॉडल जोड़ें और उपनाम बनाएं।", "modelIdFromOpenRouter": "मॉडल आईडी (ओपनराउटर से)", "openRouterModelPlaceholder": "एंथ्रोपिक/क्लाउड-3-ओपस", "customModels": "कस्टम मॉडल", "customModelsHint": "मॉडल आईडी जोड़ें जो डिफ़ॉल्ट सूची में नहीं हैं। ये रूटिंग के लिए उपलब्ध होंगे.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "टूल कॉल ID को 9 वर्णों में सामान्यीकृत करें (जैसे Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responses की डेवलपर भूमिका बनाए रखें (सिस्टम में मैप न करें)", + "compatAdjustmentsTitle": "संगतता", + "compatButtonLabel": "संगतता", + "compatToolIdShort": "टूल ID 9", + "compatDeveloperShort": "डेवलपर भूमिका", + "compatDoNotPreserveDeveloper": "डेवलपर भूमिका संरक्षित न करें", + "compatBadgeNoPreserve": "संरक्षित न करें", + "compatProtocolLabel": "क्लाइंट अनुरोध प्रोटोकॉल", + "compatProtocolHint": "ये विकल्प तब लागू होते हैं जब OmniRoute इस अनुरोध प्रारूप (OpenAI Chat, Responses API या Anthropic Messages) का पता लगाता है।", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "मूल web_fetch टूल कॉल को OmniRoute के /v1/web/fetch पर रीराइट करें।", "interceptionLoadError": "इंटरसेप्शन सेटिंग्स लोड करने में विफल: {error}", "interceptionSaveError": "इंटरसेप्शन सेटिंग्स सहेजने में विफल: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Claude Code (claude/…) में दिखाएँ", + "ccAliasSectionHint": "इस प्रदाता के मॉडल को claude/<provider>/<model> मिरर ID के अंतर्गत प्रदर्शित करें, ताकि Claude Code की गेटवे मॉडल खोज उन्हें सूचीबद्ध कर सके। डिफ़ॉल्ट रूप से बंद — इसे सक्षम करने पर सभी क्लाइंट के लिए कैटलॉग प्रविष्टियाँ दोगुनी हो जाती हैं।", + "ccAliasProviderLevelLabel": "प्रदाता डिफ़ॉल्ट", + "ccAliasModelOverridesLabel": "प्रति-मॉडल ओवरराइड", + "ccAliasModelOverrideAriaLabel": "{modelId} के लिए ओवरराइड", + "ccAliasStateInherit": "इनहेरिट करें", + "ccAliasStateOn": "चालू", + "ccAliasStateOff": "बंद", + "ccAliasAddModelPlaceholder": "मॉडल ID (जैसे gpt-4o)", + "ccAliasAddModelButton": "ओवरराइड जोड़ें", + "ccAliasLoadError": "डिस्कवरी-अलियास सेटिंग लोड नहीं हो सकी: {error}", + "ccAliasSaveError": "डिस्कवरी-अलियास सेटिंग सहेजी नहीं जा सकी: {error}", + "compatUpstreamHeadersLabel": "अतिरिक्त अपस्ट्रीम हेडर", + "compatUpstreamHeadersHint": "उच्च-विशेषाधिकार सेटिंग — इसका विश्वास स्तर प्रदाता API क्रेडेंशियल संपादित करने के समान है; केवल विश्वसनीय एडमिन को इसका उपयोग करना चाहिए। OmniRoute द्वारा प्रदाता API कुंजी से प्रमाणीकरण जोड़ने के बाद इन्हें मर्ज किया जाता है। यदि कोई कस्टम हेडर किसी मौजूदा हेडर के समान नाम का उपयोग करता है (जैसे Authorization), तो आपका मान स्वतः जनरेट किए गए हेडर (Bearer टोकन सहित) को पूरी तरह बदल देता है — अपस्ट्रीम को केवल वही दिखाई देता है जो आपने टाइप किया है, सेटिंग्स वाली कुंजी नहीं। गलत कॉन्फ़िगरेशन से 401 त्रुटि या अपस्ट्रीम प्रमाणीकरण विफल हो सकता है। प्रत्येक हेडर के लिए एक पंक्ति (जैसे कुछ गेटवे के लिए अतिरिक्त Authentication)। पूर्वावलोकन के लिए मान पर होवर या फ़ोकस करें। ब्लर होने, बाहर क्लिक करने या यह पैनल बंद करने पर सहेजा जाता है।", + "compatUpstreamHeaderName": "हेडर का नाम", + "compatUpstreamHeaderValue": "मान", + "compatUpstreamAddRow": "हेडर जोड़ें", + "compatUpstreamRemoveRow": "पंक्ति हटाएँ", + "compatBadgeUpstreamHeaders": "हेडर", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "केवल मुफ़्त मॉडल आयात करें", @@ -5592,26 +5595,26 @@ "email": "ईमेल", "healthCheckMinutes": "स्वास्थ्य जांच (न्यूनतम)", "healthCheckHint": "प्रोएक्टिव टोकन ताज़ा अंतराल। 0 = अक्षम.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "सभी का चयन हटाएँ", + "modelsActiveCount": "{active}/{total} सक्रिय", + "noModelsMatch": "कोई मॉडल \"{filter}\" से मेल नहीं खाता", + "groupLabel": "परिवेश", + "groupPlaceholder": "जैसे eKaizen, Personal", "failedTestConnection": "कनेक्शन का परीक्षण करने में विफल", "failed": "असफल", "leaveBlankKeepCurrentApiKey": "वर्तमान एपीआई कुंजी रखने के लिए खाली छोड़ दें।", "editCompatibleTitle": "संपादित करें {type} संगत", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "आपके {type}-संगत API का रूट URL। कस्टम एंडपॉइंट पाथ के लिए उन्नत सेटिंग्स का उपयोग करें।", "apiKeyForCheck": "एपीआई कुंजी (चेक के लिए)", "testModelIdLabel": "मॉडल आईडी (वैकल्पिक)", "testModelIdPlaceholder": "जैसे: my-model-id", "testModelIdHint": "यदि प्रदाता के पास /models एंडपॉइंट नहीं है, तो इसके बजाय /chat/completions के माध्यम से सत्यापित करने के लिए एक मॉडल आईडी दर्ज करें।", "compatibleProdPlaceholder": "{type} संगत (उत्पाद)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "टोकन सफलतापूर्वक रीफ़्रेश किया गया", + "tokenRefreshFailed": "टोकन रीफ़्रेश विफल रहा", "cursorSessionUnchanged": "सत्र पहले से ही वर्तमान है", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "प्रमाणीकरण लागू करें", + "exportCodexAuthFile": "ऑथ निर्यात करें", "applyClaudeAuthLocal": "प्रमाणीकरण लागू करें", "exportClaudeAuthFile": "निर्यात प्रमाणन", "importClaudeAuth": "आयात प्रमाणीकरण", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} विफल", "codexImportBulkZipExtracting": "ज़िप निकाला जा रहा है...", "codexImportBulkZipError": "ज़िप निकालने में विफल", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "उन्नत सेटिंग्स", + "chatPathLabel": "चैट एंडपॉइंट पथ", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "गैर-मानक API वाले प्रदाताओं के लिए कस्टम चैट पथ (जैसे /v4/chat/completions)", + "modelsPathLabel": "मॉडल एंडपॉइंट पथ", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "सत्यापन के लिए कस्टम मॉडल पथ (जैसे /v4/models)", "clientIdentityLabel": "क्लाइंट पहचान", "clientIdentityHint": "वैकल्पिक। संगत गेटवे जो इसकी अपेक्षा करते हैं, उनके लिए किसी ज्ञात CLI से मेल खाने वाले क्लाइंट फ़िंगरप्रिंट हेडर (जैसे User-Agent) जोड़ता है।", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "निष्क्रिय किया गया (मैन्युअल)", + "statusBanned": "प्रतिबंधित / सैंडबॉक्स उल्लंघन", + "statusCreditsExhausted": "अपर्याप्त बैलेंस / कोटा समाप्त", + "showEmails": "सभी ईमेल दिखाएँ", + "hideEmails": "सभी ईमेल छिपाएँ", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "एक और API कुंजी जोड़ें या एकाधिक कुंजियाँ पेस्ट करें", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "एग्रीगेटर गेटवे", "enterpriseCloud": "उद्यम और बादल", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API प्रारूप लेबल", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API क्षेत्र: चीन", + "apiRegionHint": "API क्षेत्र संकेत", + "apiRegionInternational": "API क्षेत्र: अंतरराष्ट्रीय", + "apiRegionLabel": "API क्षेत्र लेबल", + "apikey": "API कुंजी", + "audio": "ऑडियो", + "audioProvidersHeading": "ऑडियो प्रदाता शीर्षक", "cloudAgentProviders": "क्लाउड एजेंट प्रदाता", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "ऑडियो का संक्षिप्त लेबल", + "azureOpenAiBaseUrlHint": "Azure Open AI बेस URL संकेत", + "bailianBaseUrlHint": "Bailian बेस URL संकेत", + "claudeWebCookieHint": "claude.ai खोलें → DevTools → Application → Cookies → claude.ai, और 'sessionKey' का मान कॉपी करें। Cloudflare के लिए cf_clearance, __cf_bm, _cfuvid भी आवश्यक हैं।", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web कुकी संकेत", + "blackboxWebCookiePlaceholder": "Blackbox Web कुकी प्लेसहोल्डर", "t3ChatWebCookieHint": "t3.chat खोलें → DevTools → एप्लिकेशन → लोकल स्टोरेज → https://t3.chat, 'convex-session-id' कॉपी करें। फिर DevTools → Network खोलें, किसी भी चैट अनुरोध से पूर्ण कुकी हेडर कॉपी करें। दोनों मानों को नीचे दिए गए फ़ील्ड में चिपकाएँ।", "t3ChatWebCookiePlaceholder": "उत्तल-सत्र-आईडी=एबीसी123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web कुकी संकेत", "blockClaudeExtraUsageDescription": "जब सक्षम किया जाता है, OmniRoute इस Claude कनेक्शन को अनुपलब्ध के रूप में चिह्नित करता है जैसे ही उपयोग API कतारबद्ध अतिरिक्त उपयोग की रिपोर्ट करता है, ताकि बैकअप किसी अन्य कनेक्शन पर स्विच कर सके बजाय इसके कि पे-एज़-यू-गो अतिरिक्त बिलिंग पर जारी रखा जाए।", "blockClaudeExtraUsageLabel": "अतिरिक्त Claude उपयोग को ब्लॉक करें", "disableCoolingDescription": "अस्थायी कूलडाउन को छोड़ें ताकि पुनर्प्राप्ति योग्य त्रुटियों के बाद भी यह कनेक्शन योग्य बना रहे (प्रतिबंधित/समाप्त जैसी अंतिम स्थितियां अभी भी लागू होती हैं)।", "disableCoolingLabel": "इस कनेक्शन के लिए कूलडाउन अक्षम करें", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 कुंजी जोड़ी गई} other {# कुंजियाँ जोड़ी गईं}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 डुप्लिकेट छोड़ा गया} other {# डुप्लिकेट छोड़े गए}}", + "bulkPasteHint": "प्रति पंक्ति एक API कुंजी पेस्ट करें। खाली पंक्तियों को अनदेखा किया जाता है और डुप्लिकेट कुंजियाँ छोड़ दी जाती हैं।", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "उन CC Compatible अपस्ट्रीम के लिए redact-thinking बीटा हेडर जोड़ता है, जिन्हें छिपी हुई Claude थिंकिंग स्ट्रीम की आवश्यकता होती है।", + "ccCompatibleRedactThinkingLabel": "redact-thinking बीटा सक्षम करें", + "ccCompatibleSummarizeThinkingDescription": "CC Compatible थिंकिंग अनुरोधों में `display: \"summarized\"` जोड़ता है, ताकि समर्थित Claude मॉडल दृश्यमान थिंकिंग डेल्टा स्ट्रीम कर सकें।", + "ccCompatibleSummarizeThinkingLabel": "संक्षिप्त थिंकिंग प्रदर्शन सक्षम करें", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "उपलब्ध होने पर Codex अनुरोधों के लिए प्राथमिकता सेवा टियर का उपयोग करें।", + "codexFastServiceTierLabel": "Codex तेज़ सेवा टियर", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "कम्पैट अपस्ट्रीम हेडर नाम प्लेसहोल्डर", + "compatUpstreamHeaderValuePlaceholder": "संगत अपस्ट्रीम हेडर मान का प्लेसहोल्डर", + "compatible": "संगत", + "configuredCount": "कॉन्फ़िगर की गई संख्या", + "consoleApiKeyOracleHint": "कंसोल API कुंजी Oracle संकेत", + "consoleApiKeyOracleLabel": "कंसोल API कुंजी Oracle लेबल", + "consoleApiKeyOraclePlaceholder": "कंसोल API कुंजी Oracle प्लेसहोल्डर", "newApiUserIdLabel": "New-API उपयोगकर्ता आईडी", "newApiUserIdPlaceholder": "जैसे 12345", "newApiUserIdHint": "AgentRouter का New-Api-User हेडर मान, कोटा शेष प्राप्त करने के लिए कंसोल API कुंजी के साथ उपयोग किया जाता है।", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "New-API / One-API / Sub2API एग्रीगेटर संगत नोड्स के लिए बैलेंस डिटेक्शन सक्षम करें", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "कस्टम यूज़र एजेंट संकेत", + "customUserAgentLabel": "कस्टम यूज़र एजेंट लेबल", + "databricksBaseUrlHint": "Databricks बेस URL संकेत", + "defaultThinkingStrengthHint": "जब किसी अनुरोध में रीजनिंग प्रयास निर्दिष्ट नहीं होता, तब इसका उपयोग किया जाता है।", + "defaultThinkingStrengthLabel": "डिफ़ॉल्ट चिंतन क्षमता", + "deleteAllExtraApiKeys": "सभी हटाएँ", + "excludedModelsHint": "बहिष्कृत मॉडल संकेत", + "excludedModelsLabel": "बहिष्कृत मॉडल लेबल", + "excludedModelsPlaceholder": "बहिष्कृत मॉडल प्लेसहोल्डर", + "expirationBannerExpired": "समाप्ति बैनर की अवधि समाप्त", + "expirationBannerExpiredDesc": "समाप्ति बैनर की अवधि समाप्त होने का विवरण", + "expirationBannerExpiringSoon": "समाप्ति बैनर की अवधि जल्द समाप्त होगी", + "expirationBannerExpiringSoonDesc": "समाप्ति बैनर की अवधि जल्द समाप्त होने का विवरण", + "extraApiKeyMasked": "कुंजी {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "अतिरिक्त API कुंजियों का संकेत", + "extraApiKeysLabel": "अतिरिक्त API कुंजियों का लेबल", + "apiKeyHealthLabel": "API कुंजी की स्थिति", + "apiKeyStatusActive": "सक्रिय", + "apiKeyStatusWarning": "चेतावनी ({count} विफलताएँ)", + "apiKeyStatusInvalid": "अमान्य", + "primaryKey": "प्राथमिक कुंजी", + "apiKeyInvalidAlert": "कनेक्शनों में प्रमाणीकरण विफलताओं के कारण {count} API कुंजी/कुंजियों को अमान्य चिह्नित किया गया है: {connections}। रोटेशन में इन्हें छोड़ दिया जाएगा। समीक्षा करने के लिए क्लिक करें।", + "apiKeyInvalidAlertTitle": "API कुंजी स्थिति अलर्ट", + "apiKeyWarningAlert": "कनेक्शनों में बढ़ी हुई विफलता दर के कारण {count} API कुंजी/कुंजियाँ चेतावनी स्थिति में हैं: {connections}। रोटेशन संबंधी समस्याओं को रोकने के लिए समीक्षा करें।", + "apiKeyWarningAlertTitle": "API कुंजी चेतावनी", + "googlePseInfo": "Google PSE जानकारी", "antigravityProjectIdHint": "एंटीग्रेविटी क्लाउड कोड अनुरोधों के लिए वैकल्पिक ओवरराइड। Google OAuth के दौरान खोजे गए प्रोजेक्ट का उपयोग करने के लिए खाली छोड़ दें।", "antigravityClientProfileLabel": "क्लाइंट प्रोफ़ाइल", "antigravityClientProfileHint": "चुनें कि OmniRoute API को कौन सी Antigravity क्लाइंट पहचान प्रस्तुत करता है।", @@ -5865,22 +5868,22 @@ "tierFast": "फ़ास्ट", "antigravityProjectIdLabel": "Google क्लाउड प्रोजेक्ट आईडी", "antigravityProjectIdPlaceholder": "मेरी-जीसीपी-प्रोजेक्ट-आईडी", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok वेब कुकी प्लेसहोल्डर", + "herokuBaseUrlHint": "Heroku बेस URL संकेत", + "hideEmail": "ईमेल छिपाएँ", + "imageProviders": "इमेज प्रदाता", "videoProviders": "वीडियो जनरेशन", "embeddingRerankProviders": "एंबेडिंग्स और रीरैंक", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "इमेज का संक्षिप्त लेबल", + "llmProviders": "LLM प्रदाता", + "localProviderApiKeyOptionalHint": "स्थानीय प्रदाता की API कुंजी के वैकल्पिक होने का संकेत", + "localProviderBaseUrlHint": "स्थानीय प्रदाता के बेस URL का संकेत", + "localProviders": "स्थानीय प्रदाता", + "maxConcurrentWholeNumberError": "अधिकतम समवर्ती मान के लिए पूर्ण संख्या आवश्यक है", "m365TierLabel": "Copilot टियर", "m365TierHint": "चुनें कि यह कनेक्शन किस Microsoft 365 Copilot सरफ़ेस का उपयोग करता है। Individual डिफ़ॉल्ट उपभोक्ता BizChat है; Education और Enterprise (कार्य) अपने टेनेंट सरफ़ेस का विकल्प चुनते हैं।", "m365TierIndividualOption": "Individual (डिफ़ॉल्ट)", - "m365TierEduOption": "Education", + "m365TierEduOption": "शिक्षा", "m365TierEnterpriseOption": "Enterprise / कार्य", "tierOverrideLabel": "टियर ओवरराइड", "tierOverrideAuto": "ऑटो (राउटिंग तय करता है)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "सस्ता", "tierOverridePremium": "प्रीमियम", "tierOverrideHelpText": "OmniRoute को मॉडल मूल्य निर्धारण से इसका अनुमान लगाने देने के बजाय इस प्रदाता को एक राउटिंग टियर पर पिन करें।", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark वेब कुकी का संकेत", + "museSparkWebCookiePlaceholder": "Muse Spark वेब कुकी का प्लेसहोल्डर", + "oauth": "OAuth", + "openCliTools": "CLI टूल खोलें", + "openSettings": "सेटिंग्स खोलें", + "openaiResponsesStoreDescription": "संगत Responses API अनुरोधों को संग्रहीत प्रतिक्रिया स्थिति बनाए रखने दें।", + "openaiResponsesStoreLabel": "OpenAI Responses स्टोर", + "perplexitySearchSharedKeyInfo": "Perplexity Search की साझा कुंजी की जानकारी", + "perplexityWebCookieHint": "Perplexity वेब कुकी का संकेत", + "perplexityWebCookiePlaceholder": "Perplexity वेब कुकी का प्लेसहोल्डर", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "रेट लिमिट ओवरराइड", "rateLimitOverridesMaxConcurrentHint": "इस कनेक्शन के लिए अधिकतम समवर्ती अनुरोध ओवरराइड। खाता-स्तरीय सीमा को ओवरराइड करता है।", "rateLimitOverridesMaxConcurrentLabel": "अधिकतम समवर्ती (रेट लिमिट)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "दर-सीमा स्लॉट के लिए अनुरोध के विफल होने से पहले प्रतीक्षा करने का अधिकतम समय (ms)। केवल इस कनेक्शन के लिए वैश्विक Resilience सेटिंग को ओवरराइड करता है।", + "rateLimitOverridesMaxWaitMsLabel": "कतार में अधिकतम प्रतीक्षा (ms)", "rateLimitOverridesMinTimeHint": "अनुरोधों के बीच न्यूनतम समय (ms)। डिफ़ॉल्ट रेट लिमिटर विलंब को ओवरराइड करता है।", "rateLimitOverridesMinTimeLabel": "न्यूनतम अंतराल (ms)", "rateLimitOverridesRpdHint": "इस कनेक्शन के लिए प्रति दिन अधिकतम अनुरोध। प्रदाता डिफ़ॉल्ट को ओवरराइड करता है।", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (टोकन/दिन)", "rateLimitOverridesTpmHint": "इस कनेक्शन के लिए प्रति मिनट अधिकतम टोकन। प्रदाता डिफ़ॉल्ट को ओवरराइड करता है।", "rateLimitOverridesTpmLabel": "TPM (टोकन/मिनट)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "OAuth टोकन रीफ़्रेश करें", + "regionHint": "क्षेत्र का संकेत", + "regionLabel": "क्षेत्र", + "removeThisKey": "यह कुंजी हटाएँ", + "routingTagsHint": "रूटिंग टैग का संकेत", + "routingTagsLabel": "रूटिंग टैग", + "routingTagsPlaceholder": "रूटिंग टैग का प्लेसहोल्डर", + "search": "खोजें", + "searchEngineIdHint": "सर्च इंजन ID का संकेत", + "searchEngineIdLabel": "सर्च इंजन ID", + "searchEngineIdRequired": "सर्च इंजन ID आवश्यक है", + "searchProvider": "खोज प्रदाता", + "searchProviderDesc": "खोज प्रदाता का विवरण", "searchProviders": "प्रदाता खोजें...", "searchByModel": "मॉडल द्वारा खोजें…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "खोज प्रदाता", + "searxngBaseUrlHint": "Searxng बेस URL का संकेत", + "searxngInfo": "Searxng की जानकारी", + "sessionCookieLabel": "सत्र कुकी", + "showEmail": "ईमेल दिखाएँ", + "snowflakeBaseUrlHint": "Snowflake बेस URL का संकेत", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "टैग समूह का संकेत", + "tagGroupLabel": "टैग समूह", + "tagGroupPlaceholder": "टैग समूह का प्लेसहोल्डर", + "testModel": "मॉडल का परीक्षण करें", + "testingModel": "मॉडल का परीक्षण किया जा रहा है", "modelTestQuotaTooltip": "कोटा समाप्त — कल रीसेट होगा या टॉप-अप की आवश्यकता है", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "टोकन की समय-सीमा समाप्त बैज", + "tokenExpiredTitle": "टोकन की समय-सीमा समाप्त शीर्षक", + "tokenExpiresSoonTitle": "टोकन की समय-सीमा जल्द समाप्त होने का शीर्षक", + "tokenShort": "टोकन संक्षिप्त", + "totalKeysRotating": "{count, plural, one {1 कुंजी रोटेट हो रही है} other {# कुंजियाँ रोटेट हो रही हैं}}", + "unhideModel": "मॉडल को फिर से दिखाएँ", + "upstreamProxyProviders": "अपस्ट्रीम प्रॉक्सी प्रदाता", "validationModelIdHint": "एपीआई कुंजी सत्यापित करने के लिए उपयोग किया जाने वाला मॉडल। प्रदाता के पहले उपलब्ध मॉडल का उपयोग करने के लिए खाली छोड़ दें।", "validationModelIdLabel": "सत्यापन मॉडल", "validationModelIdPlaceholder": "जैसे: meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "अपना Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) या OAuth access_token पेस्ट करें", + "webCookieProviders": "वेब कुकी प्रदाता", + "weeklyShort": "साप्ताहिक संक्षिप्त", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo बेस URL संकेत", "globalCodexServiceMode": "वैश्विक Codex सेवा मोड", "connect": "कनेक्ट करें", "manualApiKey": "मैनुअल API कुंजी", @@ -5975,9 +5978,9 @@ "zedImportDescription": "OS कीचेन में Zed IDE द्वारा संग्रहीत AI प्रदाता क्रेडेंशियल (OpenAI, Anthropic, Google, Mistral, xAI) खोजें और उन्हें कनेक्शन के रूप में आयात करें। इस मशीन पर Zed IDE इंस्टॉल होना चाहिए।", "zedImportButton": "Zed से आयात करें", "zedImportFailed": "Zed आयात विफल हुआ", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed आयात संकेत", + "zedImportNetworkError": "Zed आयात नेटवर्क त्रुटि", + "zedImportNone": "Zed आयात: कुछ नहीं", "zedImportSuccess": "{providers} प्रदाता(ओं) के लिए Zed से {credentials} क्रेडेंशियल(ओं) आयातित किए गए", "zedImporting": "आयात कर रहा है…", "zedNoCredentials": "कीचेन में कोई Zed क्रेडेंशियल नहीं मिले", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5 सहित 40+ मॉडलों के लिए रियायती API प्रॉक्सी। https://freeaiapikey.com/dashboard पर अपनी API कुंजी प्राप्त करें। बेस URL: https://freeaiapikey.com/v1।", "freemodel-dev": "https://freemodel.dev पर $300 का निःशुल्क API क्रेडिट प्राप्त करें — किसी भुगतान जानकारी की आवश्यकता नहीं है। OpenAI-संगत एंडपॉइंट। GPT-5.4 और GPT-5.5 मॉडल उपलब्ध हैं।", "friendliai": "सर्वरलेस इनफेरेंस के लिए निःशुल्क टियर — किसी क्रेडिट कार्ड की आवश्यकता नहीं है", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio के माध्यम से मुफ़्त टियर; प्रति-मॉडल कोटा अब प्रकाशित नहीं किए जाते (AI Studio में कोटा पेज देखें) — क्रेडिट कार्ड की आवश्यकता नहीं।", "gigachat": "GigaChat (Sber) को एक API कुंजी से कनेक्ट करें।", "gitlab": "सार्वजनिक Code Suggestions API के लिए GitLab व्यक्तिगत एक्सेस टोकन। gitlab.com का उपयोग न करते समय एक स्व-होस्टेड बेस URL कॉन्फ़िगर करें।", "gitlawb-gmi": "Gitlawb Opengateway डैशबोर्ड से अपनी API कुंजी प्राप्त करें।", @@ -6184,7 +6187,7 @@ "glm-cn": "GLM Coding (China) को एक API कुंजी से कनेक्ट करें।", "glmt": "उच्च टोकन बजट, थिंकिंग (thinking) सक्षम और लंबे टाइमआउट के साथ प्रीसेट GLM प्रोफ़ाइल।", "getgoapi": "GoAPI को एक API कुंजी से कनेक्ट करें।", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "मुफ़्त प्लान: प्रति-मॉडल सीमाएँ (प्रति चैट मॉडल 200K टोकन/दिन; RPM/RPD के लिए console.groq.com/docs/rate-limits देखें) — फ़ाइल में कोई भुगतान विधि नहीं।", "haiper": "haiper.ai/haiper-api पर API कुंजी प्राप्त करें", "heroku": "Heroku AI को एक API कुंजी से कनेक्ट करें।", "hcnsec": "api.hcnsec.cn पर API कुंजी प्राप्त करें", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.ai पर एक API कुंजी बनाएं, फिर इसे यहाँ Bearer टोकन के रूप में पेस्ट करें। https://router.requesty.ai/v1 पर OpenAI-संगत एंडपॉइंट, एक लाइव /v1/models कैटलॉग के साथ।", "runwayml": "Runway वीडियो जनरेशन टास्क-आधारित है। OmniRoute टेक्स्ट-टू-वीडियो या इमेज-टू-वीडियो जॉब सबमिट करता है, /v1/tasks/[id] को पोल करता है, और तैयार वीडियो आउटपुट को वापस OpenAI जैसे /v1/videos/generations रिस्पॉन्स में सामान्य (normalize) करता है।", "sambanova": "साइनअप पर $5 मुफ्त क्रेडिट (30 दिनों की वैधता), किसी क्रेडिट कार्ड की आवश्यकता नहीं है", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.cc पर एक API कुंजी बनाएँ, फिर उसे Bearer टोकन के रूप में यहाँ पेस्ट करें। OpenAI-संगत बेस URL: https://seekai.cc/v1.", "sap": "मॉडल खोज AI_API_URL पर /v2/lm/scenarios/foundation-models/models का उपयोग करती है। चैट अनुरोध deploymentUrl/chat/completions का उपयोग करते हैं और इसके लिए AI-Resource-Group की आवश्यकता होती है।", "sarvam": "Sarvam AI OpenAI के साथ संगत है /v1. OmniRoute /v1/models को प्रॉब करता है और चैट ट्रैफिक को /v1/chat/completions पर रूट करता है। मॉडल्स को इंडिक भाषाओं के लिए ट्यून किया गया है।", "scaleway": "नए खातों के लिए 1M मुफ्त टोकन — EU/GDPR अनुपालन (पेरिस), Qwen3 235B और Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "मौजूदा OAuth फ़्लो के साथ Claude Code को कनेक्ट करें।", "cline": "मौजूदा OAuth फ़्लो के साथ Cline को कनेक्ट करें।", "cursor": "मौजूदा OAuth फ़्लो के साथ Cursor IDE को कनेक्ट करें।", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "cursor.com/dashboard/api से उपयोगकर्ता API कुंजी (crsr_...) के साथ Cursor कनेक्ट करें; IDE सत्र की आवश्यकता नहीं है।", "github": "मौजूदा OAuth फ़्लो के साथ GitHub Copilot को कनेक्ट करें।", "gitlab-duo": "ai_features + read_user स्कोप के साथ OAuth एप्लिकेशन। इस OmniRoute इंस्टेंस पर GITLAB_DUO_OAUTH_CLIENT_ID और वैकल्पिक रूप से GITLAB_DUO_OAUTH_CLIENT_SECRET कॉन्फ़िगर करें।", "kilocode": "मौजूदा OAuth फ़्लो के साथ Kilo Code को कनेक्ट करें।", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "प्रदाता के अपने डोमेन से आवश्यक क्रेडेंशियल कॉपी करें। कुकीज़ के लिए, केवल कुकी हेडर मान की प्रतिलिपि बनाएँ और कुकी: को हटा दें।", "webSessionGuideStep3Manual": "मैनुअल पथ: ब्राउज़र डेवलपर टूल्स खोलें (F12 → नेटवर्क), पृष्ठ को रिफ्रेश करें, एक प्रमाणित अनुरोध खोलें, और अनुरोध हेडर से कुकी हेडर मान को कॉपी करें — कुकी: प्रीफिक्स को छोड़ दें।", "webSessionGuideStep4": "इसे यहां पेस्ट करें और कनेक्शन जांचें। यदि यह काम करना बंद कर देता है, तो दोबारा साइन इन करें और इसे नए मान से बदलें।", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har फ़ाइल आयात करें", + "harImportButtonBusy": "आयात किया जा रहा है…", + "harImportButtonHint": "कम-से-कम एक चैट संदेश भेजने के बाद DevTools के Network टैब से एक्सपोर्ट करें।", + "harImportStatusValid": "आयात किया गया — लगभग {minutes}m तक मान्य।", + "harImportStatusExpiringSoon": "आयात किया गया — केवल लगभग {minutes}m और मान्य।", + "harImportStatusExpired": "आयात किया गया, लेकिन इस टोकन की समय-सीमा पहले ही समाप्त हो चुकी है ({minutes}m पहले) — नया HAR एक्सपोर्ट करें।", + "harImportStatusUnknownExpiry": "आयात किया गया। इसकी समय-सीमा नहीं पढ़ी जा सकी।", + "harImportErrorNotJson": "यह फ़ाइल मान्य JSON नहीं है — क्या यह वास्तव में .har एक्सपोर्ट है?", + "harImportErrorNoEntries": "इस HAR में कोई नेटवर्क प्रविष्टि रिकॉर्ड नहीं है।", + "harImportErrorNoChathubUrl": "इस HAR में कोई Copilot चैट कनेक्शन नहीं मिला। एक्सपोर्ट करने से पहले m365.cloud.microsoft में कम-से-कम एक चैट संदेश भेजें।", + "harImportErrorUnparsableUrl": "चैट कनेक्शन मिल गया, लेकिन उसका URL नहीं पढ़ा जा सका।", + "harImportErrorMissingFields": "चैट कनेक्शन मिल गया, लेकिन उसमें टोकन मौजूद नहीं था।", + "harImportErrorReadFailed": "उस फ़ाइल को नहीं पढ़ा जा सका।", + "harImportErrorUnknown": "उस HAR फ़ाइल से क्रेडेंशियल निकाला नहीं जा सका।", "webSessionSecurityHint": "इसे एक पासवर्ड की तरह समझें: यह आपके साइन-इन किए गए वेब खाते तक तब तक पहुंच सकता है जब तक कि यह समाप्त न हो जाए या निरस्त न हो जाए।", "webNoAuthGuideTitle": "किसी प्रमाण पत्र की आवश्यकता नहीं है", "webNoAuthGuideBody": "{provider} को API कुंजी या कुकी की आवश्यकता नहीं है। इसके निःशुल्क वेब एंडपॉइंट का उपयोग करने के लिए कनेक्शन सहेजें।", @@ -6364,15 +6367,15 @@ "checkWebToken": "टोकन जांचें", "huggingchatLabel": "HuggingChat (फ्री)", "huggingchatDesc": "huggingface.co/chat के माध्यम से फ्री LLM चैट", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe वेब", "poeWebDesc": "poe.com के माध्यम से मल्टी-मॉडल चैट", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice वेब", "veniceWebDesc": "गोपनीयता-केंद्रित AI चैट", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel वेब", "v0VercelWebDesc": "v0.dev के माध्यम से AI कोड जनरेशन", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi वेब", "kimiWebDesc": "www.kimi.com के माध्यम से Moonshot AI उपभोक्ता चैट (अंतर्राष्ट्रीय, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola वेब", "doubaoWebDesc": "dola.com के माध्यम से ByteDance AI चैट", "overrideBaseUrlAdvanced": "उन्नत: बेस URL को ओवरराइड करें", "overrideBaseUrlHint": "उन्नत: इस इन-बिल्ट प्रदाता को एक कस्टम एंडपॉइंट पर इंगित करें। डिफ़ॉल्ट का उपयोग करने के लिए खाली छोड़ दें।", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "कमांड कोड प्रमाणपत्र समाप्त हो गया", "commandCodeConnected": "कमांड कोड कनेक्टेड", "commandCodeConnectionAdded": "कमांड कोड कनेक्शन जोड़ा गया", + "clearConnectionCooldown": "कूलडाउन हटाएँ", + "clearConnectionCooldownInProgress": "हटाया जा रहा है…", + "clearConnectionCooldownTitle": "कूलडाउन अभी हटाएँ — इसका उपयोग तब करें जब अपस्ट्रीम कोटा पहले ही रीफ़्रेश हो चुका हो", "commandCodeLinkExpired": "कमांड कोड लिंक समाप्त हो गया", "commandCodeOpeningStudio": "कमांड कोड स्टूडियो खोलना…", "commandCodePopupBlocked": "पॉपअप अवरुद्ध कर दिया गया है। कृपया पॉपअप की अनुमति दें और फिर से Command Code Connect आजमाएँ।", "commandCodeStartFailed": "Command Code auth शुरू करने में विफल रहा", "connectionDeleted": "कनेक्शन हटा दिया गया", "connectionFallback": "संयोग", + "connectionCooldownCleared": "कूलडाउन हटाया गया — कनेक्शन फिर से रूटिंग में शामिल हुआ", "coolingConnectionsDescription": "ये कनेक्शन आखिरी अनुरोध के बाद ठंडे हो रहे हैं। टाइमर खत्म होने तक OmniRoute इन्हें छोड़ देगा — हाथ से बंद करने की ज़रूरत नहीं।", "coolingConnectionsTitle": "वर्तमान में ठंडा कर रहे हैं ({count})", + "failedClearConnectionCooldown": "कूलडाउन हटाने में विफल", "failedDeleteAlias": "उपनाम हटाने में विफल", "failedDeleteConnection": "कनेक्शन हटाने में विफल", "failedDistributeProxies": "प्रॉक्सी वितरित करने में विफल।", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "सहेजे गए मॉडल एंडपॉइंट सेटिंग्स", "searchByModelAria": "मॉडल द्वारा खोजें", "selectSupportedEndpoint": "कम से कम एक समर्थित एंडपॉइंट चुनें", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "हार्नेस / CLI" }, "settings": { "title": "सेटिंग्स", @@ -6527,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "इनको शामिल करने वाले पैराग्राफ हटाएं: {items}", "routingSummarizeDropParagraphStartsWith": "इनसे शुरू होने वाले पैराग्राफ हटाएं: {items}", "routingSummarizeReplaceText": "\"{match}\" → \"{replacement}\" बदलें", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "रेगेक्स /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "इनको शामिल करने वाले ब्लॉक्स हटाएं: {items}", "routingSummarizePrependSystemBlock": "ब्लॉक को शुरुआत में जोड़ें: \"{text}\"", "routingSummarizeAppendSystemBlock": "ब्लॉक को अंत में जोड़ें: \"{text}\"", @@ -6554,22 +6557,22 @@ "systemPrompt": "सिस्टम प्रॉम्प्ट", "thinkingBudget": "सोच बजट", "proxy": "प्रॉक्सी", - "httpProxy": "HTTP Proxy", - "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "httpProxy": "HTTP प्रॉक्सी", + "1proxy": "1प्रॉक्सी", + "proxySubTabsAria": "प्रॉक्सी अनुभाग", + "requestBodyLimitTitle": "अनुरोध बॉडी सीमा", + "requestBodyLimitDescription": "अनुरोध बॉडी को पार्स करने से पहले स्वीकृत अधिकतम API पेलोड आकार। समर्पित अपलोड रूट अपनी अंतर्निहित 100 MB की सीमा कम-से-कम बनाए रखते हैं।", + "requestBodyLimitInputLabel": "अनुरोध बॉडी की सीमा MB में", + "requestBodyLimitEmptyError": "MB में सीमा दर्ज करें", + "requestBodyLimitWholeNumberError": "पूर्णांक का उपयोग करें", + "requestBodyLimitMinimumError": "न्यूनतम {min} MB है", + "requestBodyLimitMaximumError": "अधिकतम {max} MB है", + "requestBodyLimitLoadFailed": "अनुरोध सीमा सेटिंग लोड करने में विफल", + "requestBodyLimitSaveSuccess": "अनुरोध बॉडी सीमा सहेजी गई", + "requestBodyLimitSaveFailed": "अनुरोध बॉडी सीमा सहेजने में विफल", + "requestBodyLimitSaving": "सहेजा जा रहा है...", + "requestBodyLimitSave": "सहेजें", + "requestBodyLimitCurrent": "वर्तमान: {value}", "cacheConfigLoadFailed": "कैश सेटिंग्स लोड करने में विफल रहा", "cacheConfigSaveSuccess": "कैश सेटिंग्स सहेजी गईं", "cacheConfigSaveFailed": "कैश सेटिंग्स को सहेजने में विफल", @@ -6593,59 +6596,59 @@ "enablePassword": "पासवर्ड सक्षम करें", "darkMode": "डार्क मोड", "lightMode": "लाइट मोड", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "मेमोरी", + "memoryDesc": "सत्रों के बीच स्थायी संवादात्मक मेमोरी", + "memoryEnabled": "मेमोरी सक्षम करें", + "memoryEnabledDesc": "सक्षम होने पर, OmniRoute प्रासंगिक पिछला संदर्भ सम्मिलित करेगा।", "memoryTokenCostWarning": "ध्यान दें: मेमोरी सक्षम होने पर, OmniRoute प्रत्येक चैट अनुरोध में पुनर्प्राप्त संदर्भ के अधिकतम {tokens} टोकन इंजेक्ट करता है — इससे टोकन का उपयोग और लागत बढ़ जाती है। किसी विशिष्ट अनुरोध के लिए इंजेक्शन छोड़ने के लिए, \"x-omniroute-no-memory: true\" हेडर भेजें।", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "अधिकतम टोकन", + "retentionDays": "अवधारण", + "recent": "हालिया", + "recentDesc": "कालानुक्रमिक विंडो", + "semantic": "सिमैंटिक", + "semanticDesc": "वेक्टर खोज", + "hybrid": "हाइब्रिड", + "hybridDesc": "हालिया + सिमैंटिक", + "skillsTitle": "स्किल्स", + "skillsDesc": "मॉडलों के लिए टूल", + "skillsEnabled": "स्किल्स सक्षम करें", + "skillsEnabledDesc": "एजेंटों को फ़ंक्शन ट्रिगर करने की अनुमति देता है।", + "skillsComingSoon": "स्किल्स मार्केटप्लेस जल्द आ रहा है।", + "memorySkillsTitle": "मेमोरी और स्किल्स", + "memorySkillsDesc": "स्थायी संदर्भ और क्षमताएँ", + "modelsDevTitle": "मॉडल डेटाबेस", + "modelsDevDesc": "models.dev से मूल्य निर्धारण, क्षमताएँ और विनिर्देश स्वतः सिंक करें", + "modelsDevEnabled": "models.dev सिंक सक्षम करें", + "modelsDevEnabledDesc": "ओपन-सोर्स models.dev डेटाबेस से मॉडल का मूल्य निर्धारण, क्षमताएँ और विनिर्देश प्राप्त करें", + "modelsDevInterval": "सिंक अंतराल", + "syncNow": "अभी सिंक करें", + "syncing": "सिंक हो रहा है...", + "lastSync": "पिछला सिंक", + "never": "कभी नहीं", "justNow": "अभी अभी", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "सिंक के आँकड़े", + "modelsDevStatsDesc": "वर्तमान models.dev डेटा कवरेज", "providers": "प्रदाता", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "मूल्य निर्धारण वाले मॉडल", + "capabilities": "क्षमताएँ", + "lastSyncCount": "पिछले सिंक की संख्या", + "lastSyncFull": "पिछला पूर्ण सिंक", + "modelsDevInfo": "यह कैसे काम करता है", + "modelsDevInfoDesc": "models.dev, SST/OpenCode टीम द्वारा अनुरक्षित AI मॉडल विनिर्देशों का एक ओपन-सोर्स डेटाबेस है। यह 100+ प्रदाताओं के 4,000+ मॉडलों के लिए मूल्य निर्धारण, क्षमताएँ, कॉन्टेक्स्ट सीमाएँ और मोडैलिटीज़ प्रदान करता है।", + "modelsDevInfoResolution": "मूल्य निर्धारण समाधान का क्रम (सर्वोच्च प्राथमिकता पहले):", + "modelsDevInfoOrder": "उपयोगकर्ता ओवरराइड → models.dev → LiteLLM → हार्डकोडेड डिफ़ॉल्ट", "systemTheme": "सिस्टम थीम", - "debugToggle": "Enable Debug Mode", + "debugToggle": "डीबग मोड सक्षम करें", "logToolSourcesToggle": "टूल स्रोत लॉग करें", "logToolSourcesDescription": "प्रति अनुरोध एक डायग्नोस्टिक लॉग लाइन जारी करें जो टूल की संख्या और MCP/होस्टेड/क्लाइंट स्रोत विवरण का सारांश देती है।", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "जानकारी को होम पेज पर पिन करें", "homePinnedSectionsDesc": "चुनें कि होम पेज के शीर्ष पर किन अनुभागों को पिन करना है।", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "प्रदाता कोटा सीमाएँ", + "homeProviderQuotaLimitsDesc": "प्रदाता कोटा स्थिति कंटेनर (सभी रीफ़्रेश करें बटन सहित) को होम पेज के शीर्ष पर पिन करें।", + "homeQuickStart": "त्वरित शुरुआत", + "homeQuickStartDesc": "होम पेज पर त्वरित शुरुआत पैनल दिखाएँ।", + "homeProviderTopology": "प्रदाता टोपोलॉजी", + "homeProviderTopologyDesc": "होम पेज पर प्रदाता टोपोलॉजी दिखाएँ।", "accountEmailVisibility": "खाता ईमेल दृश्यता", "accountEmailVisibilityDesc": "प्रदाताओं, कॉम्बो, लॉग, कोटा और प्लेग्राउंड स्क्रीन पर पूरे खाता ईमेल दिखाएं। डिफ़ॉल्ट रूप से उन्हें मास्क करने के लिए इसे बंद करें।", "comboConfigMode": "कॉम्बो कॉन्फ़िगरेशन मोड", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "रीफ़्रेश अंतराल", "providerQuotaAutoRefreshIntervalDesc": "कोटा दृश्य को कितनी बार रीफ़्रेश होना चाहिए, सेकंड में।", "seconds": "सेकंड", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "साइडबार आइटम दिखाएँ", "enableCache": "कैश सक्षम करें", "cacheTTL": "कैश टीटीएल", "maxCacheSize": "अधिकतम कैश आकार", "clearCache": "कैश साफ़ करें", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "कैश सफलतापूर्वक साफ़ किया गया", + "clearCacheFailed": "कैश साफ़ करने में विफल", "cacheHits": "कैश हिट्स", "cacheMisses": "कैश छूट गया", "hitRate": "हिट दर", "cacheEntries": "कैश प्रविष्टियाँ", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "कैश सेटिंग्स", + "semanticCache": "सिमेंटिक कैश", + "maxEntries": "अधिकतम प्रविष्टियाँ", + "ttlMinutes": "TTL (मिनट)", "promptCache": "शीघ्र कैश", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "रणनीति", + "preserveClientCache": "क्लाइंट कैश सुरक्षित रखें", + "enabled": "सक्षम", "loading": "Loading...", "saving": "सहेजा जा रहा है...", - "save": "Save", + "save": "सहेजें", "circuitBreaker": "सर्किट ब्रेकर", "retryPolicy": "पुनः प्रयास नीति", "maxRetries": "अधिकतम पुनर्प्रयास", @@ -6690,21 +6693,21 @@ "timeoutMs": "टाइमआउट (एमएस)", "enableSystemPrompt": "सिस्टम प्रॉम्प्ट सक्षम करें", "systemPromptText": "सिस्टम प्रॉम्प्ट टेक्स्ट", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "प्रतिबंधित खातों को स्वतः अक्षम करें", + "autoDisableDescription": "यदि प्रदाता कनेक्शन विशिष्ट अंतिम प्रतिबंध संकेत लौटाते हैं (जैसे HTTP 403 'verify your account'), तो उन्हें स्थायी रूप से निष्क्रिय चिह्नित करें। इससे वे कॉम्बो रोटेशन से हटा दिए जाते हैं।", + "autoDisableThreshold": "प्रतिबंध सीमा", + "autoDisableThresholdDesc": "स्थायी रूप से निष्क्रिय करने से पहले आवश्यक लगातार प्रतिबंध संकेतों की संख्या।", + "autoDisableBannedScope": "स्वतः निष्क्रिय करना इन पर लागू करें", + "autoDisableBannedScopeDesc": "यदि प्रतिबंध के बाद भी OmniRoute पुनः प्रयास करता रहता है, तो अपस्ट्रीम द्वारा लॉगिन सीटें (सशुल्क सदस्यताएँ और निःशुल्क खाते) लॉक की जा सकती हैं। सशुल्क प्रीपेड API कुंजियों के साथ यह जोखिम नहीं है — उन्हें पूल में रहने दें, ताकि fill-first अगली कुंजी का उपयोग कर सके।", + "autoDisableBannedScopeAll": "सभी कनेक्शन", + "autoDisableBannedScopeAllDesc": "प्रीपेड API कुंजियों सहित, स्थायी प्रतिबंध संकेत लौटाने वाले प्रत्येक कनेक्शन को निष्क्रिय करें।", + "autoDisableBannedScopeSubscription": "केवल लॉगिन / सदस्यता खाते", + "autoDisableBannedScopeSubscriptionDesc": "OAuth, कुकी, सत्र और वेब-लॉगिन सीटों (सशुल्क या निःशुल्क) को निष्क्रिय करें। प्रीपेड API कुंजियाँ सक्रिय रहेंगी, ताकि रूटिंग फ़ेलओवर कर सके।", "customBannedSignals": "प्रतिबंधित कीवर्ड", "customBannedSignalsDesc": "अतिरिक्त कीवर्ड जो स्थायी खाता प्रतिबंध पहचान को ट्रिगर करते हैं। अंतर्निहित कीवर्ड हमेशा लागू होते हैं।", "customBannedSignalsPlaceholder": "उदा. api key revoked", "noCustomBannedSignals": "कोई कस्टम कीवर्ड नहीं। केवल अंतर्निहित कीवर्ड सक्रिय हैं।", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "लचीलापन संरचना", "resilienceStructureDesc": "यह पृष्ठ केवल व्यवहार को कॉन्फ़िगर करता है. लाइव ब्रेकर स्थिति स्वास्थ्य पृष्ठ पर दिखाई गई है। कॉम्बो-विशिष्ट पुनः प्रयास और राउंड-रॉबिन स्लॉट नियंत्रण कॉम्बो सेटिंग्स पर बने रहते हैं।", "enableThinking": "सोचने को सक्षम करें", "maxThinkingTokens": "मैक्स थिंकिंग टोकन", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "एंडपॉइंट पेज पर टेलस्केल फ़नल नियंत्रण दिखाएं।", "showNgrokTunnel": "एनग्रोक सुरंग", "showNgrokTunnelDesc": "एंडपॉइंट पेज पर एनग्रोक टनल नियंत्रण दिखाएं।", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "साइडबार आइटम छिपाएँ", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "सभी", + "presetAllDesc": "सब कुछ दिखाएँ", + "presetEssentials": "आवश्यक", + "presetEssentialsDesc": "शुरुआती पथ - उन्नत टूल खोजने योग्य रहेंगे", + "presetMinimal": "न्यूनतम", + "presetMinimalDesc": "केवल मुख्य पृष्ठ", + "presetDeveloper": "डेवलपर", + "presetDeveloperDesc": "डेवलपमेंट और प्रॉक्सी टूल", + "presetAdmin": "एडमिन", + "presetAdminDesc": "निगरानी और ऑडिट", + "settingsSidebarTitle": "साइडबार अनुकूलन", + "settingsSidebarDesc": "चुनें कि कौन-से साइडबार आइटम दिखाए जाएँ। आवश्यक विकल्प में उन्नत टूल खोजने योग्य बने रहते हैं।", "hideHealthLogs": "स्वास्थ्य जांच लॉग छुपाएं", "hideHealthLogsDesc": "चालू होने पर, सर्वर कंसोल में [हेल्थचेक] संदेशों को दबाएँ", "themeAccent": "थीम का रंग", @@ -6780,19 +6783,19 @@ "themeOrange": "नारंगी", "themeCyan": "सियान", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "एप्लिकेशन का नाम और लोगो अनुकूलित करें", + "appName": "एप्लिकेशन का नाम", + "appNameDesc": "साइडबार और ब्राउज़र टैब में दिखाया जाने वाला नाम", + "customLogo": "कस्टम लोगो URL", + "customLogoDesc": "आपके कस्टम लोगो चित्र का URL", + "uploadLogo": "लोगो अपलोड करें", + "resetLogo": "डिफ़ॉल्ट पर रीसेट करें", + "logoPreview": "पूर्वावलोकन", + "customFavicon": "ब्राउज़र फ़ेविकॉन", + "customFaviconDesc": "आपके कस्टम फ़ेविकॉन का URL (ब्राउज़र टैब में दिखाया जाता है)", + "uploadFavicon": "फ़ेविकॉन अपलोड करें", + "resetFavicon": "फ़ेविकॉन रीसेट करें", + "faviconPreview": "फ़ेविकॉन पूर्वावलोकन", "logoFileTooLarge": "लोगो फ़ाइल 500KB से कम होनी चाहिए", "faviconFileTooLarge": "फ़ेविकॉन फ़ाइल 50KB से कम होनी चाहिए", "invalidLogoFileType": "अमान्य फ़ाइल प्रकार। कृपया PNG, JPG, SVG, GIF, या WebP अपलोड करें।", @@ -6896,21 +6899,21 @@ "refreshInterval": "रीफ्रेश अंतराल", "ruleModeDescription": "नियम मोड विवरण" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "सामूहिक स्वास्थ्य जाँच", + "bulkHealthcheckDesc": "यह पता लगाने के लिए कि कौन-से प्रॉक्सी काम करते हैं, सभी कॉन्फ़िगर किए गए प्रॉक्सी का लक्ष्य URL के विरुद्ध परीक्षण करें।", + "healthcheckTesting": "परीक्षण जारी है...", + "healthcheckAll": "सभी की स्वास्थ्य जाँच करें", + "healthcheckFailed": "स्वास्थ्य जाँच चलाने में विफल", + "healthcheckTestingAll": "सभी प्रॉक्सी का समानांतर परीक्षण किया जा रहा है...", + "healthcheckTotal": "कुल", + "healthcheckWorking": "कार्यशील", + "healthcheckFailedLabel": "विफल", + "healthcheckStatus": "स्थिति", + "healthcheckProxyUrl": "प्रॉक्सी URL", + "healthcheckLatency": "विलंबता", "proxyDocumentationScopeTitle": "प्रॉक्सी स्कोप रिज़ॉल्यूशन", "proxyDocumentationScopeDescBefore": "OmniRoute प्राथमिकता क्रम में आउटबाउंड प्रॉक्सी को रिज़ॉल्व करता है:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "कॉम्बो → खाता → प्रदाता → वैश्विक", "proxyDocumentationScopeDescAfter": "। सबसे विशिष्ट स्कोप लागू होता है।", "proxyDocumentationAddTitle": "कस्टम प्रॉक्सी जोड़ना", "proxyDocumentationAddDescBefore": "यहाँ जाएं", @@ -6945,7 +6948,7 @@ "proxyFreePoolAddSelected": "चयनित को पूल में जोड़ें", "proxyFreePoolAddVisible": "सभी दृश्यमान को पूल में जोड़ें", "proxyFreePoolSource": "स्रोत", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "होस्ट:पोर्ट", "proxyFreePoolType": "प्रकार", "proxyFreePoolCountry": "देश", "proxyFreePoolQuality": "गुणवत्ता", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} प्रदाता/प्रदाताओं को /मॉडल से अवरोधित किया गया", "blockProviderTitle": "ब्लॉक करें {provider}", "unblockProviderTitle": "अनब्लॉक करें {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "CLI फ़िंगरप्रिंट मिलान", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "CLI फ़िंगरप्रिंट सक्रिय वाले {count} प्रदाता", + "enableFingerprintTitle": "{provider} के लिए फ़िंगरप्रिंट सक्षम करें", + "disableFingerprintTitle": "{provider} के लिए फ़िंगरप्रिंट अक्षम करें", "systemTransforms": "सिस्टम-ब्लॉक ट्रांसफॉर्म पाइपलाइन", "systemTransformsDesc": "प्रति-प्रदाता द्वारा अग्रेषित करने से पहले अनुरोध निकाय पर लागू परिवर्तनों की पाइपलाइन का आदेश दिया गया। किसी भी प्रदाता आईडी का समर्थन करता है।", "systemTransformsAddProvider": "प्रदाता जोड़ें", @@ -7067,10 +7070,10 @@ "costOptDesc": "सबसे सस्ते उपलब्ध खाते को प्राथमिकता दें", "resetAware": "रीसेट-अवेयर आरआर", "resetAwareDesc": "स्वस्थ शेष कोटा और निकट रीसेट वाले खातों को प्राथमिकता दें", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "कोटा-भारित", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "पूर्णतः यादृच्छिक", + "strictRandomDesc": "शफ़ल डेक — दोबारा शफ़ल करने से पहले प्रत्येक खाते का एक बार उपयोग करता है", "stickyLimit": "चिपचिपी सीमा", "stickyLimitDesc": "स्विच करने से पहले प्रति खाता कॉल", "routingStrategyTitle": "रूटिंग रणनीति", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "इस प्रदाता के लिए वैश्विक खाता रणनीति को ओवरराइड करें (9router समानता)।", "providerRoutingStrategy": "खाता रणनीति", "providerRoutingInheritGlobal": "वैश्विक डिफ़ॉल्ट इनहेरिट करें", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "कोटा प्रीफ़्लाइट कटऑफ़", + "quotaPreflightSubtitle": "अपस्ट्रीम अनुरोध भेजने से पहले उन खातों को छोड़ें जिनका कोटा समाप्त हो चुका है", + "quotaPreflightEnable": "कोटा प्रीफ़्लाइट सक्षम करें", + "quotaPreflightEnableDesc": "प्रत्येक अनुरोध से पहले खाते का शेष कोटा (5 घंटे / साप्ताहिक / मासिक विंडो) जाँचें। कटऑफ़ पर या उससे नीचे के खातों को अपस्ट्रीम कॉल किए बिना छोड़ दिया जाता है। प्रदाता कोटा पृष्ठ पर निर्धारित प्रति-विंडो कटऑफ़ को हमेशा यहाँ के डिफ़ॉल्ट पर प्राथमिकता मिलेगी।", + "quotaPreflightCutoff": "वैश्विक कटऑफ़ (न्यूनतम शेष %)", + "quotaPreflightCutoffDesc": "जब किसी खाते का शेष कोटा इस प्रतिशत तक या इससे नीचे गिर जाए, तो ऐसी प्रत्येक विंडो के लिए उसका उपयोग बंद कर दें जिसका अपना कटऑफ़ नहीं है। यह प्रदाता कोटा पृष्ठ पर शेष-% बार से मेल खाता है।", + "quotaPreflightWindowsHint": "अपना प्रति-विंडो या प्रति-प्रदाता कटऑफ़ रखने वाली विंडो (प्रदाता कोटा पृष्ठ पर कटऑफ़ मोडल में निर्धारित) इस डिफ़ॉल्ट से प्रभावित नहीं होती हैं।", + "quotaPreflightLoadFailed": "कोटा प्रीफ़्लाइट सेटिंग लोड नहीं की जा सकीं।", "modelAliases": "मॉडल उपनाम", "modelAliasesTitle": "Model Alias", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "सटीक मिलान या वाइल्डकार्ड पैटर्न का उपयोग करके मॉडल नामों को रीमैप करें।", "addCustomAlias": "Kustom Alias Tambahkan", "deprecatedModelId": "ID model yang tidak digunakan lagi", "newModelId": "ID model baru", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "कॉम्बो रणनीति", "priority": "प्राथमिकता", "weighted": "भारित", - "contextRelay": "Context Relay", + "contextRelay": "कॉन्टेक्स्ट रिले", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "अधिकतम पुनर्प्रयास", "retryDelayLabel": "पुनः प्रयास विलंब (एमएस)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "समवर्ती/मॉडल", "queueTimeout": "कतार समय समाप्ति (एमएस)", "queueDepth": "कतार की गहराई", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "हैंडऑफ़ सीमा", + "contextRelayMaxMessages": "सारांश के लिए अधिकतम संदेश", + "contextRelaySummaryModel": "सारांश मॉडल", + "contextRelayProviderNote": "कॉन्टेक्स्ट रिले वर्तमान में Codex खातों के लिए हैंडऑफ़ जनरेट करता है और इन मानों को नए या कॉन्फ़िगर न किए गए कॉम्बो के लिए वैश्विक डिफ़ॉल्ट के रूप में उपयोग करता है।", "providerProfiles": "प्रदाता प्रोफाइल", "providerProfilesDesc": "OAuth (सत्र-आधारित) और API कुंजी (मीटर्ड) प्रदाताओं के लिए अलग लचीलापन सेटिंग्स। कम दर सीमा के कारण OAuth प्रदाताओं के पास सख्त सीमाएँ हैं।", "oauthProviders": "OAuth प्रदाता", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}दिन पहले", "backupReasonManual": "मैनुअल", "backupReasonPreRestore": "पूर्व-पुनर्स्थापना", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# कनेक्शन} other {# कनेक्शन}}", "noChangesSinceBackup": "पिछले बैकअप के बाद से कोई परिवर्तन नहीं", "backupFailed": "बैकअप विफल रहा", "restoreFailed": "पुनर्स्थापना विफल", @@ -7329,7 +7332,7 @@ "configured": "कॉन्फ़िगर किया गया", "none": "कोई नहीं", "modelOverrideValuePlaceholder": "संख्यात्मक मान", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "अंग्रेज़ी अल्पविराम से अलग किए गए, जैसे low, medium, high", "addKeyValue": "कुंजी मान जोड़ें", "noModelOverrides": "इस मॉडल के लिए कोई ओवरराइड कॉन्फ़िगर नहीं किया गया है।", "modelOverrideLoadFailed": "मॉडल ओवरराइड लोड करने में विफल", @@ -7378,25 +7381,25 @@ "editPricing": "मूल्य निर्धारण संपादित करें", "viewFullDetails": "पूर्ण विवरण देखें", "themeCoral": "कोरल", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "अनुकूली वॉल्यूम रूटिंग", + "adaptiveVolumeRoutingDesc": "पेलोड वॉल्यूम और थ्रूपुट दबाव के आधार पर कनेक्शन को गतिशील रूप से स्केल करें।", + "lkgpToggleTitle": "अंतिम ज्ञात कार्यशील प्रदाता (LKGP)", + "lkgpToggleDesc": "सक्षम होने पर, राउटर याद रखता है कि अंतिम सफल प्रतिक्रिया किस प्रदाता ने दी थी और बाद के अनुरोधों में पहले उसी को आज़माता है।", "echoRequestedModelTitle": "प्रतिक्रियाओं में अनुरोधित मॉडल नाम इको करें", "echoRequestedModelDesc": "सक्षम होने पर, रिस्पॉन्स `model` फ़ील्ड अपस्ट्रीम मॉडल नाम के बजाय क्लाइंट द्वारा अनुरोधित उपनाम या कॉम्बो नाम दिखाता है। यह उन सख्त क्लाइंट्स (उदा. Claude Desktop) को ठीक करता है जो ऐसे रिस्पॉन्स को अस्वीकार करते हैं जिनका मॉडल अनुरोध से मेल नहीं खाता है।", "webSearchRouteTitle": "वेब सर्च रूटिंग", "webSearchRouteDesc": "जब किसी अनुरोध में नेटिव web_search टूल शामिल होता है, तो डिफ़ॉल्ट के बजाय पूरे अनुरोध को इस मॉडल पर रूट करें — यह उन प्रोवाइडर्स के लिए उपयोगी है जो Anthropic के web_search सर्वर टूल को लागू नहीं करते हैं। अक्षम करने के लिए खाली छोड़ें।", "webSearchRoutePlaceholder": "कोई मॉडल खोजें या चुनें…", "paidModelPatternWarning": "यह पैटर्न केवल पेड मॉडल्स से मेल खाता है — पेड मॉडल्स सक्षम करें या पैटर्न समायोजित करें।", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP कैश साफ़ करें", + "lkgpCacheCleared": "LKGP कैश सफलतापूर्वक साफ़ किया गया", + "lkgpCacheClearFailed": "LKGP कैश साफ़ करने में विफल", + "days": "दिन", + "lkgp": "LKGP मोड", + "lkgpDesc": "अंतिम ज्ञात अच्छा प्रदाता (पूर्वानुमेय लचीलापन)", + "maintenance": "रखरखाव", + "purgeExpiredLogs": "समाप्त हो चुके लॉग हटाएँ", + "purgeLogsFailed": "लॉग हटाने में विफल", "logsDeleted": "{count, plural, =0 {कोई एक्सपायर्ड लॉग नहीं हटाया गया} one {# एक्सपायर्ड लॉग हटाया गया} other {# एक्सपायर्ड लॉग हटाए गए}}", "resetUsageData": "उपयोग डेटा रीसेट करें", "resetUsageDataDesc": "चुनें कि आप उपयोग, अनुरोध लॉग और एनालिटिक्स डेटा को कितना पुराना हटाना चाहते हैं। प्रोवाइडर कॉन्फ़िगरेशन, कनेक्शन, API keys, कॉम्बो और सेटिंग्स सुरक्षित रखी जाती हैं। इस क्रिया को पूर्ववत नहीं किया जा सकता है।", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "उपयोग डेटा रीसेट करने में विफल", "reset": "रीसेट करें", "resetting": "रीसेट किया जा रहा है...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "संदर्भ के लिए अनुकूलित", + "contextOptDesc": "संदर्भ विंडो की आवश्यकताओं और वार्तालाप की लंबाई के आधार पर रूट करता है", + "cacheOpt": "कैश के लिए अनुकूलित", + "cacheOptDesc": "एक ही पुन: उपयोग योग्य प्रॉम्प्ट उपसर्ग को उसी प्रदाता खाते पर बनाए रखता है", + "priorityDesc": "क्रमिक फ़ॉलबैक - पहले प्रदाता 1, फिर प्रदाता 2, और इसी तरह प्रयास करता है", + "weightedDesc": "प्रदाताओं के बीच प्रतिशत भार के अनुसार ट्रैफ़िक वितरित करता है", + "modelRoutingTitle": "मॉडल रूटिंग नियम", + "modelRoutingDesc": "ग्लोब पैटर्न का उपयोग करके मॉडलों को विशिष्ट कॉम्बो पर स्वचालित रूप से रूट करें", + "addRule": "नियम जोड़ें", + "routeToCombo": "कॉम्बो पर रूट करें", + "selectCombo": "कॉम्बो चुनें...", + "priorityHint": "अधिक मान = पहले जाँच। विशिष्ट पैटर्न के लिए 10+ का उपयोग करें।", + "patternHint": "किसी भी वर्ण के लिए * और एकल वर्ण के लिए ? का उपयोग करें। अक्षर-संवेदी नहीं।", + "noRoutingRules": "कोई रूटिंग नियम कॉन्फ़िगर नहीं किया गया है। अनुरोध डिफ़ॉल्ट रूप से वैश्विक कॉम्बो का उपयोग करते हैं।", + "routingRuleHint": "अनुरोधों को स्वचालित रूप से रूट करने के लिए claude-opus* -> frontier-combo जैसा नियम जोड़ें।", + "deleteRoutingRule": "यह मॉडल रूटिंग नियम हटाएँ?", + "exactMatchMode": "सटीक मिलान", + "wildcardPatternMode": "वाइल्डकार्ड पैटर्न", + "exactMatchModeDesc": "अप्रचलित या पुनर्नामित मॉडल ID के लिए सटीक उपनामों का उपयोग करें।", + "wildcardPatternModeDesc": "जब मॉडलों के किसी समूह को एक लक्ष्य से मैप करना हो, तब * और ? वाले वाइल्डकार्ड उपनामों का उपयोग करें।", + "noExactAliasesConfigured": "कोई सटीक-मिलान उपनाम कॉन्फ़िगर नहीं किया गया है।", + "wildcardRulesTitle": "वाइल्डकार्ड नियम", + "noWildcardAliasesConfigured": "कोई वाइल्डकार्ड उपनाम कॉन्फ़िगर नहीं किया गया है।", + "overview": "अवलोकन", + "unknownError": "अज्ञात त्रुटि", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "अनुमति सूची", + "syncDisabled": "सिंक अक्षम", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "सिंक सक्षम", + "blacklist": "अवरोध सूची", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "सिंक किए गए मॉडल", + "budget": "बजट", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "मूल्य निर्धारण रीसेट करने में विफल: {reason}", - "tab": "Tab", + "tab": "टैब", "pricingSavedProvider": "{provider} के लिए मूल्य निर्धारण सहेजा गया", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "मूल्य निर्धारण सहेजने में विफल: {reason}", "pricingResetProvider": "{provider} के लिए मूल्य निर्धारण रीसेट", - "nextSync": "Next Sync", + "nextSync": "अगला सिंक", "pricingSyncFailedWithReason": "मूल्य समन्वयन विफल: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "सिंक किया गया मूल्य निर्धारण साफ़ करें", + "compressionTitle": "प्रॉम्प्ट संपीड़न", + "compressionDesc": "प्रदाताओं को भेजने से पहले प्रॉम्प्ट संपीड़ित करके टोकन उपयोग कम करें", "compressionGuidanceFullGuideLink": "पूर्ण कम्प्रेशन गाइड", "compressionGuidanceShow": "विवरण", "compressionGuidanceHide": "विवरण छिपाएं", @@ -7485,16 +7488,16 @@ "tokenSaverInputCompressionDesc": "कोड, URLs और उद्देश्य को सुरक्षित रखते हुए योग्य चैट इतिहास को फिर से लिखें।", "tokenSaverFineTunePrefix": "प्रत्येक इंजन को इस पर फ़ाइन-ट्यून करें", "tokenSaverFineTuneSuffix": "या प्रति अनुरोध इंजनों को इस पर संयोजित करें", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", - "compressionModeUltra": "Ultra", + "compressionMode": "संपीड़न मोड", + "compressionModeOff": "बंद", + "compressionModeOffDesc": "कोई संपीड़न लागू नहीं किया गया", + "compressionModeLite": "हल्का", + "compressionModeLiteDesc": "रिक्त स्थान और खाली पंक्तियों में कमी", + "compressionModeStandard": "मानक (Caveman)", + "compressionModeStandardDesc": "30+ पैटर्न वाला नियम-आधारित संपीड़न, कोड ब्लॉक और URLs को सुरक्षित रखता है", + "compressionModeAggressive": "आक्रामक", + "compressionModeAggressiveDesc": "अधिकतम बचत के लिए सारांशीकरण + टूल परिणाम संपीड़न + क्रमिक एजिंग", + "compressionModeUltra": "अल्ट्रा", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "आक्रामक इंजन विन्यास", "compressionAggressiveConfigDesc": "फाइन-ट्यून सारांशीकरण, उपकरण संपीड़न, और उम्र बढ़ने की सीमाएँ", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "प्रत्येक पुराने स्तर पर रखे गए हाल के संदेशों की संख्या (उच्च = अधिक संरक्षित)", "compressionToolStrategies": "उपकरण परिणाम रणनीतियाँ", "compressionToolStrategiesDesc": "विभिन्न टूल परिणाम प्रकारों के लिए संपीड़न रणनीतियों को टॉगल करें", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "सामान्य सेटिंग्स", + "compressionAutoTrigger": "स्वतः-ट्रिगर सीमा", + "compressionCacheTTL": "कैश TTL", + "compressionPreserveSystem": "सिस्टम प्रॉम्प्ट सुरक्षित रखें", "compressionPreserveSystemAlways": "हमेशा", "compressionPreserveSystemWhenNoCache": "जब कोई कैश न हो", "compressionPreserveSystemNever": "कभी नहीं", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "सहेजा गया", "compressionExclusionsCount": "{count, plural, one {# बहिष्कार} other {# बहिष्कार}} कॉन्फ़िगर किया गया", "compressionExclusionsEmpty": "कोई अपवाद कॉन्फ़िगर नहीं किया गया है — प्रत्येक मॉडल/एंडपॉइंट संकुचन के लिए पात्र है (डिफ़ॉल्ट व्यवहार)।", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman इंजन कॉन्फ़िगरेशन", + "compressionCavemanConfigDesc": "नियम-आधारित संपीड़न इंजन को बेहतर ढंग से समायोजित करें", "compressionCavemanPanelHint": "इसका ऑन/ऑफ और स्तर पैनल में सेट किया गया है:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "संदेश भूमिकाएँ संपीड़ित करें", + "compressionRoleUser": "उपयोगकर्ता", + "compressionRoleAssistant": "सहायक", + "compressionRoleSystem": "सिस्टम", + "compressionMinLength": "न्यूनतम संदेश लंबाई", + "compressionSkipRules": "संपीड़न नियम छोड़ें", + "compressionSkipRulesDesc": "संपीड़न के दौरान नियमों को छोड़ने के लिए उन पर क्लिक करें", + "compressionPreservePatterns": "पैटर्न सुरक्षित रखें", + "compressionPreservePatternsDesc": "Regex पैटर्न जिन्हें कभी संपीड़ित नहीं किया जाता (प्रति पंक्ति एक)", + "compressionLogTitle": "संपीड़न लॉग", + "compressionLogEmpty": "अभी तक कोई अनुरोध संपीड़ित नहीं किया गया है। संपीड़न सक्षम करके अनुरोधों को संसाधित करने पर संपीड़न आँकड़े यहाँ दिखाई देंगे।", "minutes": "मिनट", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "कमांड-जागरूक टूल आउटपुट फ़िल्टरिंग", + "compressionModeCodexResponses": "Responses टूल आउटपुट", + "compressionModeCodexResponsesDesc": "योग्य shell, patch, search, build और JSON आउटपुट के लिए सीमित संपीड़न", + "compressionModeStacked": "स्टैक्ड", + "compressionModeStackedDesc": "RTK टूल-आउटपुट फ़िल्टरिंग के बाद Caveman संदेश संपीड़न", + "qdrantTitle": "Qdrant (वेक्टर मेमोरी)", + "qdrantDesc": "वैकल्पिक। तेज़ पुनर्प्राप्ति के लिए सिमेंटिक मेमोरी को बाहरी वेक्टर डेटाबेस में इंडेक्स करता है।", + "qdrantStatusActive": "सक्रिय", + "qdrantStatusError": "त्रुटि", + "qdrantStatusDisabled": "अक्षम", + "qdrantEnable": "Qdrant सक्षम करें", + "qdrantEnableDesc": "सक्षम होने पर, सिमेंटिक/हाइब्रिड रणनीति मेमोरी पुनर्प्राप्त करने के लिए Qdrant का उपयोग कर सकती है।", + "qdrantTesting": "परीक्षण जारी है...", + "qdrantTestConnection": "कनेक्शन का परीक्षण करें", + "qdrantSaved": "कॉन्फ़िगरेशन सहेजा गया", + "qdrantSaveError": "कॉन्फ़िगरेशन सहेजने में विफल", + "qdrantHostHint": "पोर्ट के बिना। उदाहरण: 127.0.0.1 या http://qdrant", + "qdrantPort": "पोर्ट", + "qdrantPortHint": "Qdrant डिफ़ॉल्ट: 6333", + "qdrantCollectionHint": "वह स्थान जहाँ मेमोरी पॉइंट संग्रहीत किए जाएँगे।", + "qdrantEmbeddingModel": "एम्बेडिंग मॉडल", + "qdrantHelpTitle": "त्वरित सेटअप सहायता", + "qdrantHelpQuickTitle": "त्वरित सेटअप (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. होस्ट: Qdrant IP/URL, पोर्ट: 6333, कलेक्शन: omniroute_memory।", + "qdrantHelpStep2": "2. यदि nvidia/llama-nemotron-embed-vl-1b-v2:free का उपयोग कर रहे हैं, तो कलेक्शन डायमेंशन 2048 रखें।", + "qdrantHelpStep3": "3. मॉडल फ़ील्ड: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free।", + "qdrantHelpStep4": "4. सहेजें, कनेक्शन का परीक्षण करें, फिर खोज का परीक्षण करें।", + "qdrantEmbeddingQuickSelect": "खोजे गए मॉडलों में से तुरंत चुनें...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "प्रारूप: provider/model। प्रदाता का क्रेडेंशियल कॉन्फ़िगर होना चाहिए।", + "qdrantApiKeyPlaceholderKeep": "(वर्तमान कुंजी बनाए रखने के लिए खाली छोड़ें)", + "qdrantApiKeyPlaceholderOptional": "(उपयोग न होने पर खाली छोड़ें)", + "qdrantSaveHint": "सुझाव: होस्ट/पोर्ट/कलेक्शन/मॉडल संपादित करें और सहेजें पर क्लिक करें। API कुंजी वैकल्पिक है।", + "qdrantSearchTestTitle": "खोज परीक्षण", + "qdrantSearchTestDesc": "एम्बेडिंग जनरेट करता है और Qdrant में खोज करता है।", + "qdrantSearchPlaceholder": "उदाहरण: उपयोगकर्ता प्राथमिकताएँ, इतिहास आदि", + "qdrantNoResults": "कोई परिणाम नहीं (या Qdrant कॉन्फ़िगर नहीं है)।", + "qdrantCleanupTitle": "प्रतिधारण और क्लीनअप", + "qdrantCleanupDesc": "इसके आधार पर समाप्त और पुराने पॉइंट हटाता है", + "searching": "खोज जारी है...", + "cleaning": "क्लीनअप जारी है...", + "cleanNow": "अभी क्लीन करें", "optional": "वैकल्पिक", "current": "वर्तमान", "remove": "हटाओ", @@ -7600,19 +7603,19 @@ "resilienceScope": "दायरा:", "resilienceTrigger": "ट्रिगर:", "resilienceEffect": "प्रभाव:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "अनुरोध कतार और दर", + "resilienceAutoEnableApiKeyProviders": "API-कुंजी प्रदाताओं के लिए स्वतः सक्षम करें", + "resilienceRequestsPerMinute": "प्रति मिनट अनुरोध", + "resilienceMinTimeBetweenRequests": "अनुरोधों के बीच न्यूनतम समय", + "resilienceConcurrentRequests": "समवर्ती अनुरोध", + "resilienceConnectionScopeConcurrentRequests": "प्रति कनेक्शन/कोटा स्कोप समवर्ती अनुरोध", + "resilienceGlobalConcurrentRequests": "वैश्विक समवर्ती अपस्ट्रीम अनुरोध (0 = अक्षम)", "resilienceMaxQueueWaitTime": "अधिकतम कतार प्रतीक्षा समय", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "आधार कूलडाउन", + "resilienceUseUpstreamRetryHints": "अपस्ट्रीम पुनः प्रयास संकेतों का उपयोग करें", + "resilienceDefaultPerProvider": "डिफ़ॉल्ट (प्रति प्रदाता)", + "resilienceAlwaysOn": "हमेशा चालू", + "resilienceAlwaysOff": "हमेशा बंद", "routingRemoveEntry": "प्रविष्टि हटाएँ", "routingNeedlesSubstrings": "सुई (मिलान के लिए सबस्ट्रिंग)", "routingCaseSensitive": "मामला संवेदनशील", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "मूल अनुरोध में निकाले गए विवरण को वापस इंजेक्ट करने से पहले विज़न मॉडल को भेजा गया।", "visionBridgeTimeoutMs": "टाइमआउट (एमएस)", "visionBridgeMaxImagesPerRequest": "प्रति अनुरोध अधिकतम छवियाँ", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "अधिकतम बैकऑफ़ चरण", + "resilienceProviderBreakerTitle": "प्रति प्रदाता सर्किट ब्रेकर", + "resilienceFailureThreshold": "विफलता सीमा", + "resilienceDegradationThreshold": "अवनयन सीमा", "resilienceResetTimeout": "टाइमआउट रीसेट करें", "resilienceFailureThresholdLabel": "विफलता की सीमा", "resilienceResetTimeoutLabel": "टाइमआउट रीसेट करें", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "कनेक्शन कूलडाउन", "resilienceUseUpstreamRetryHintsLabel": "अपस्ट्रीम पुनः प्रयास संकेतों का उपयोग करें", "resilienceUseUpstream429BreakerLabel": "अपस्ट्रीम 429 संकेत (ब्रेकर) का उपयोग करें", "resilienceMaxBackoffStepsLabel": "अधिकतम बैकऑफ चरण", "resilienceYes": "हाँ", "resilienceNo": "नहीं", - "resilienceDefault": "Default", + "resilienceDefault": "डिफ़ॉल्ट", "storageDatabaseBackupRetention": "डेटाबेस बैकअप प्रतिधारण", "storageDatabaseBackups": "डेटाबेस बैकअप", "storageBackupRetentionDescription": "स्वचालित SQLite बैकअप यहाँ संग्रहीत किए जाते हैं", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "लीगेसी JSON सफलतापूर्वक आयात किया गया!", "jsonImportFailed": "JSON आयात करने में विफल रहा", "jsonImportError": "JSON आयात के दौरान त्रुटि", + "jsonImportAuthRequired": "पुराने JSON कॉन्फ़िगरेशन को आयात करने के लिए प्रमाणीकरण आवश्यक है। कृपया पहले साइन इन करें या सेटअप पूरा करें।", + "databaseSettingsAuthRequiredTitle": "प्रमाणीकरण आवश्यक है", + "databaseSettingsAuthRequiredBody": "डेटाबेस सेटिंग्स और JSON आयात केवल प्रमाणीकृत एडमिन के लिए उपलब्ध हैं। उन्हें देखने और संपादित करने के लिए साइन इन करें या सेटअप पूरा करें।", + "databaseSettingsAuthRequiredCta": "साइन इन करें", "storagePurgeData": "डेटा शुद्ध करें", "storagePurgeDataDesc": "रिटेंशन जांच लागू किए बिना तुरंत सभी रिकॉर्ड हटा दें। सावधानी से उपयोग करें।", "storageRetentionCleanup": "रिटेंशन सेटिंग्स", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "मोड: {mode}", "compressionAdaptiveOff": "अनुकूली संदर्भ बजट: बंद (लीगेसी ऑटो-ट्रिगर)", "compressionAdaptiveTarget": "अनुकूली ({mode}, नीति: {policy}) — लक्ष्य ≈ {target, number} टोकन ({contextLimit, number}-टोकन विंडो के लिए)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "अनुकूली कॉन्टेक्स्ट बजट", + "compressionAdaptiveModeOff": "बंद (पुराना ऑटो-ट्रिगर)", + "compressionAdaptiveModeFloor": "न्यूनतम सीमा (हमेशा फ़िट होने की गारंटी)", + "compressionAdaptiveModeReplace": "ऑटो-ट्रिगर बदलें", + "compressionAdaptivePolicy": "बजट नीति", + "compressionAdaptivePolicyReserve": "आउटपुट आरक्षित रखें", + "compressionAdaptivePolicyPercentage": "विंडो का प्रतिशत", + "compressionAdaptivePolicyAbsolute": "निरपेक्ष टोकन बजट", "compressionOutputStylesDescription": "प्रदाता आउटपुट को फिर से लिखे बिना प्रतिक्रिया-आकार देने वाले निर्देश इंजेक्ट करें। स्वतंत्र रूप से संयोजित करें।", "mcpAccessibilityDescription": "MCP टूल आउटपुट को स्कोप करता है (अलग स्टोर)।", "compressionStylesTileSummary": "{tokens, number} टोकन बचाए गए · {runs, plural, one {# रन स्टाइल किया गया} other {# रन स्टाइल किए गए}}", @@ -7866,8 +7873,8 @@ "description": "कमांड-आउटपुट फ़िल्टरिंग।" }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses टूल आउटपुट", + "description": "समर्थित Responses टूल आउटपुट के लिए संतुलित संपीड़न।" }, "headroom": { "label": "हेडरूम", @@ -7908,12 +7915,12 @@ "description": "YAGNI लैडर: सबसे छोटा काम करने वाला बदलाव, कोई अवांछित एब्स्ट्रैक्शन नहीं।" }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (आलसी वरिष्ठ डेवलपर)", + "description": "आलसी वरिष्ठ-डेवलपर अनुशासन: YAGNI की सीढ़ी चढ़ें, मूल कारण ठीक करें, सबसे छोटा कार्यशील डिफ़।" }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "मुझे ADHD है (कार्रवाई-प्रथम)", + "description": "कार्रवाई-प्रथम आउटपुट: अगली कार्रवाई पहले, चरण क्रमांकित, एक ठोस अगला कदम, कोई प्रस्तावना नहीं।" }, "terse-cjk": { "label": "संक्षिप्त CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI फ़ॉलबैक", "cliproxyapiEnableFallback": "CLIProxyAPI फ़ॉलबैक सक्षम करें", "cliproxyapiUrl": "CLIProxyAPI यूआरएल", + "headroomProxyTitle": "Headroom प्रॉक्सी", + "headroomProxyDesc": "वैकल्पिक Headroom टोकन-सेवर प्रॉक्सी का URL। खाली छोड़ने पर HEADROOM_URL या http://localhost:8787 का उपयोग होता है।", + "headroomProxyUrl": "Headroom यूआरएल", + "headroomProxyUrlHint": "लूपबैक URL इस पेज से शुरू किए जा सकते हैं। बाहरी URL की केवल जाँच की जाती है।", + "headroomProxySave": "सहेजें", + "headroomProxyStart": "शुरू करें", + "headroomProxyStop": "रोकें", + "headroomProxyExternalHint": "यह URL लूपबैक नहीं है, इसलिए OmniRoute स्थानीय CLI को शुरू नहीं करेगा।", "cliproxyapiStatus": "CLIProxyAPI स्थिति", "cliproxyapiNotDetected": "पता नहीं चला", "cliproxyapiImportAuthTitle": "CLIProxyAPI से खाते आयात करें", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "OpenAI कोडेक्स अनुरोधों के लिए विश्व स्तर पर service_tier=प्राथमिकता इंजेक्ट करें।", "codexFastTierHint": "सक्षम होने पर, ओमनीरूट उन कनेक्शनों के लिए आउटबाउंड कोडेक्स अनुरोधों में service_tier=priority जोड़ता है जो पहले से ही एक स्तर निर्दिष्ट नहीं करते हैं। प्राथमिकता स्तर के लिए ओपनएआई एंटरप्राइज एपीआई कुंजी या चैटजीपीटी-ऑथ कोडेक्स पथ की आवश्यकता होती है; अन्य प्रमुख प्रकारों को OpenAI से टियर-संबंधित त्रुटि प्राप्त होगी। कोडेक्स प्रदाता पृष्ठ पर प्रति-कनेक्शन सेटिंग्स को प्राथमिकता दी जाती है।", "codexFastTierSaveError": "कोडेक्स फास्ट टियर सेटिंग को अपडेट करने में विफल", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex कोटा ऑटो-पिंग", + "codexAutoPingDesc": "प्रति कनेक्शन ऑप्ट-इन: Codex सत्र विंडो रीसेट होने के तुरंत बाद एक छोटा अनुरोध भेजता है, ताकि ज़रूरत पड़ने पर वह कोल्ड न हो।", + "codexAutoPingWarning": "हर पिंग पर वास्तविक Codex कोटा की थोड़ी मात्रा खर्च होती है। डिफ़ॉल्ट रूप से बंद — केवल उन कनेक्शनों के लिए सक्षम करें जिन पर आप सक्रिय रूप से निर्भर हैं।", + "codexAutoPingSaveError": "Codex Auto-Ping सेटिंग अपडेट नहीं हो सकी", + "codexAutoPingToggleAria": "{connection} के लिए Codex कोटा ऑटो-पिंग टॉगल करें", "codexFastTierTierLabel": "सर्विस टियर", "codexFastTierTierPriority": "प्राथमिकता", "codexFastTierTierFlex": "फ्लेक्स", @@ -8058,7 +8073,7 @@ "auth_required": "प्रमाणीकरण आवश्यक", "public": "सार्वजनिक", "always_protected": "हमेशा सुरक्षित", - "spawn_capable": "Spawn-capable" + "spawn_capable": "स्पॉन करने में सक्षम" }, "error": { "PASSWORD_REQUIRED": "इन परिवर्तनों को लागू करने के लिए वर्तमान पासवर्ड आवश्यक है।", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "वैश्विक जाँच अंतराल", "resilienceCredentialHealthEveryMinutes": "हर {minutes} मिनट", "resilienceCredentialHealthHint": "0 पृष्ठभूमि स्कैन बंद करता है (अधिकतम 1440 मिनट = 24 घंटे)। अपनी स्वास्थ्य जाँच मान वाले कनेक्शन इस वैश्विक डिफ़ॉल्ट को अनदेखा करते हैं; किसी कनेक्शन पर 0 उसे वैश्विक स्कैन चालू होने पर भी बाहर रखता है।", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "{provider} के लिए हमेशा सक्षम — OAuth खाते की सुरक्षा के लिए आवश्यक; इसे बंद नहीं किया जा सकता।", + "forcedFingerprintBadge": "आवश्यक", "sessionAffinityTitle": "सेशन एफिनिटी", "sessionAffinityDesc": "किसी भी प्रदाता के लिए, इतने सेकंड तक एक ही खाते पर एक बातचीत रखता है। 0 इसे अक्षम करता है।", "sessionAffinityTtl": "एफिनिटी TTL (सेकंड)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "कूलडाउन बढ़ना बंद होने से पहले बैकऑफ़ चरणों की अधिकतम संख्या। अधिकांश कॉन्फ़िगरेशन में Max Cooldown सीमा पहले पहुंच जाती है, जिससे यह Max Cooldown बढ़ाए जाने पर एक सुरक्षा सीमा बन जाती है।", "disableSessionStickiness": "सेशन स्टिकिनेस अक्षम करें", "disableSessionStickinessDesc": "राउंड-रॉबिन और रैंडम कॉम्बो पहले-संदेश हैश द्वारा पूरी बातचीत को एक कनेक्शन पर पिन करने के बजाय हर अनुरोध पर एक अलग कनेक्शन पर रोटेट होते हैं। मल्टी-टर्न चैट के लिए प्रॉम्प्ट-कैश हिट्स को बनाए रखने के लिए इसे बंद रखें। प्रति-कॉम्बो ओवरराइड को प्राथमिकता दी जाती है।", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "प्रॉम्प्ट-कैश लोकैलिटी रूटिंग", + "promptCacheAffinityDesc": "स्वास्थ्य और कोटा फ़ेलओवर बनाए रखते हुए मेल खाने वाली प्रॉम्प्ट-कैश कुंजियों के लिए उसी प्रदाता खाते को प्राथमिकता दें।", + "reasoningTokenBuffer": "रीज़निंग टोकन बफ़र", + "reasoningTokenBufferDesc": "कॉम्बो रूटिंग को केवल ज्ञात रीज़निंग मॉडल के लिए max_tokens की अतिरिक्त गुंजाइश जोड़ने दें, जब पूरा बफ़र किसी ज्ञात आउटपुट सीमा के भीतर समा जाए।", + "zeroLatencyOptimizations": "शून्य-विलंबता अनुकूलन", + "zeroLatencyOptimizationsDesc": "हेजिंग, पूर्वानुमानित TTFT स्किप और सक्रिय फ़ॉलबैक संपीड़न के लिए ऑप्ट-इन करें। इन विलंबता सुविधाओं को लक्ष्यों से होड़ करने या फ़ॉलबैक अनुरोधों को संपीड़ित करने से रोकने के लिए इसे बंद रखें।", "credentialRedaction": "क्रेडेंशियल रिडैक्शन", "credentialRedactionDesc": "प्रदाताओं को भेजे गए संदर्भ और प्रतिक्रियाओं से API keys, tokens और secrets को रिडैक्ट करें।", "enableCredentialRedaction": "क्रेडेंशियल रिडैक्शन सक्षम करें", "enableCredentialRedactionDesc": "संदेशों, टूल कॉल और प्रतिक्रियाओं से API keys, tokens, private keys और JWTs को हटाता है।", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "स्वचालित सिंक अक्षम", + "pricingAutoSyncEnabled": "स्वचालित सिंक सक्षम", "modalityBridgeIntro": "मल्टीमॉडल सामग्री को केवल-टेक्स्ट मॉडल तक पहुँचने से पहले टेक्स्ट में बदलें। विज़न, ऑडियो और वीडियो ब्रिज उपलब्ध और कॉन्फ़िगर करने योग्य हैं।", "modalityBridgeVisionTab": "दृष्टि", "modalityBridgeAudioTab": "ऑडियो", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "स्वास्थ्य", "cliproxyapiPort": "पोर्ट", "qdrantHost": "होस्ट", - "qdrantCollection": "संग्रह", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "संग्रह" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "RTK इंजन", + "description": "टूल आउटपुट, टर्मिनल लॉग और बिल्ड परिणामों के लिए कमांड-सचेत संपीड़न।", + "enabled": "सक्षम", + "intensity": "तीव्रता", + "intensityMinimal": "न्यूनतम", + "intensityStandard": "मानक", + "intensityAggressive": "आक्रामक", + "toolResults": "टूल परिणाम", + "assistantMessages": "असिस्टेंट संदेश", + "codeBlocks": "कोड ब्लॉक", "filterCatalog": "फ़िल्टर कैटलॉग", "filterCatalogDesc": "श्रेणी के अनुसार उपलब्ध आउटपुट फ़िल्टर", "guidedConfig": "विन्यास", "guidedConfigDesc": "समायोजित करें कि RTK आपके टर्मिनल आउटपुट को कैसे फ़िल्टर करता है", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "अधिकतम पंक्तियाँ", + "maxChars": "अधिकतम वर्ण", "deduplicateThreshold": "डुप्लिकेट सीमा", "customFilters": "कस्टम फ़िल्टर", "detectedType": "पता चला प्रकार", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "असफलताएँ", "rawOutputAlways": "हमेशा", "rawOutputMaxBytes": "कच्चा आउटपुट अधिकतम बाइट्स", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "फ़िल्टर परीक्षण", + "pasteOutput": "फ़िल्टरिंग का परीक्षण करने के लिए टूल आउटपुट पेस्ट करें...", "presetHigh": "आक्रामक", "presetLow": "रोशनी", "presetMaxChars": "अधिकतम आउटपुट वर्ण", "presetMaxLines": "अधिकतम आउटपुट लाइनें", "presetMedium": "मानक", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "चलाएँ", + "result": "परिणाम", + "previewEmpty": "RTK आउटपुट का पूर्वावलोकन करने के लिए एक नमूना चलाएँ।", + "detected": "पता लगाया गया", "masterSwitchOffAlert": "Token Saver मास्टर स्विच बंद (OFF) है — जब तक आप इसे Endpoint पेज से चालू नहीं करते, ये सेटिंग्स अनुरोधों को प्रभावित नहीं करेंगी।", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "फ़िल्टर किए गए टोकन", + "filtersActive": "सक्रिय फ़िल्टर", + "requests": "अनुरोध", + "avgSavings": "औसत बचत", "simpleMode": "सरल", "advancedMode": "उन्नत", "searchFilters": "फ़िल्टर खोजें...", @@ -8499,7 +8506,7 @@ "description": "स्पष्ट रो-काउंट मार्करों के साथ समरूप JSON एरेज़ का लॉसलेस सारणीबद्ध संघनन।" }, "session-dedup": { - "name": "Session Dedup", + "name": "सत्र डीडुप्लिकेशन", "description": "पुनर्प्राप्त करने योग्य सामग्री मार्करों के साथ क्रॉस-टर्न ब्लॉक डिडुप्लीकेशन।" }, "ccr": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "कंप्रेशन कॉम्बो", + "description": "परिभाषित करें कि विभिन्न रूटिंग परिदृश्यों के लिए इंजनों को कैसे संयोजित किया जाता है।", + "createCombo": "कंप्रेशन कॉम्बो बनाएँ", + "editCombo": "संपादित करें", + "deleteCombo": "हटाएँ", + "deleteConfirm": "इस कंप्रेशन कॉम्बो को हटाएँ?", + "pipeline": "पाइपलाइन", + "addStep": "चरण जोड़ें", + "removeStep": "हटाएँ", + "name": "नाम", + "descriptionField": "विवरण", + "languagePacks": "भाषा पैक", + "outputMode": "आउटपुट मोड", + "assignToRouting": "रूटिंग कॉम्बो को असाइन करें", + "noAssignments": "कोई रूटिंग कॉम्बो उपलब्ध नहीं है", + "default": "डिफ़ॉल्ट", + "setAsDefault": "डिफ़ॉल्ट के रूप में सेट करें", + "save": "सहेजें", + "cancel": "रद्द करें", + "enabled": "सक्षम", "loading": "लोड हो रहा है…", "hubTitle": "कंप्रेशन हब", "hubDescription": "चुनें कि कौन सा कंप्रेशन प्रोफ़ाइल ग्लोबली चलेगा।", @@ -8661,6 +8668,8 @@ "contextEditingNote": "वर्तमान में केवल Claude (Anthropic) के लिए उपलब्ध है। यह एक प्रत्यायोजित मोड है: प्रदाता सर्वर-साइड पर पुराने टूल-उपयोग ब्लॉक साफ़ करता है — हम संदेश को फिर से नहीं लिखते हैं। यह अन्य प्रदाताओं को प्रभावित नहीं करता है।", "namedCombos": "नामित कॉम्बो", "namedCombosDescription": "विभिन्न पाइपलाइनों को सहेजें और उन्हें विशिष्ट रूटिंग कॉम्बो को सौंपें।", + "activeProfileMasterSwitchOffWarning": "नीचे दी गई सक्रिय प्रोफ़ाइल तब तक नहीं चलेगी, जब तक कि मुख्य \"प्रॉम्प्ट कंप्रेशन\" स्विच चालू न हो।", + "activeProfileMasterSwitchOffCta": "इसे सेटिंग्स में चालू करें", "comboNamePlaceholder": "कॉम्बो का नाम", "descriptionPlaceholder": "विवरण", "nameRequired": "सहेजने से पहले कॉम्बो का नाम दर्ज करें।", @@ -8674,9 +8683,7 @@ "languagePacksList": "भाषा पैक: {packs}", "dragToReorder": "चरण का क्रम बदलने के लिए खींचें", "engine": "इंजन", - "intensity": "तीव्रता", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "तीव्रता" }, "compressionStudio": { "noRun": "कोई कंप्रेशन रन उपलब्ध नहीं है।", @@ -8705,7 +8712,7 @@ "run": "चलाएं", "laneRejected": "अस्वीकृत: {reason}", "error": "त्रुटि", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "संयुक्त पाइपलाइन पूर्वावलोकन विफल रहा: {reason}", "combinedFlow": "संयुक्त प्रवाह", "eachLayer": "प्रत्येक परत अलग से", "diff": "अंतर", @@ -8780,27 +8787,27 @@ }, "enableTitle": "इंजन सक्षम करें", "enableDescription": "स्टैक में सबसे अंत में चलता है (RTK/Caveman द्वारा टेक्स्ट साफ़ करने के बाद, OmniGlyph शेष को छवियों में परिवर्तित करता है) और omniglyph मोड के माध्यम से स्टैंडअलोन भी चलता है। यह एक पूर्वावलोकन है और एंड-टू-एंड सत्यापन पूरा होने तक डिफ़ॉल्ट रूप से बंद रहता है।", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "कंप्रेशन प्रोफ़ाइल", + "profileDescription": "प्रोफ़ाइल अधिकतम सीमा है, न्यूनतम नहीं: अधिक सख़्त प्रोफ़ाइल को प्रति-चरण ओवरराइड द्वारा फिर से शिथिल नहीं किया जा सकता। इस कोडबेस पर मापा गया: coding-safe या balanced के साथ, जिस सत्र में अभी तक हिस्ट्री एकत्रित नहीं हुई है, उसमें कुछ भी कंप्रेस नहीं होता, क्योंकि दोनों न्यूनतम-अक्षर सीमा बढ़ाते हैं और सिस्टम प्रॉम्प्ट, टूल स्कीमा तथा टूल परिणामों को मूल रूप में रखते हैं।", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "आक्रामक (डिफ़ॉल्ट)", + "description": "वह नीति जिसे प्रकाशित रसीदों ने मापा। सिस्टम प्रॉम्प्ट, टूल दस्तावेज़ीकरण और सघन हिस्ट्री की इमेज बनाती है।" }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "संतुलित", + "description": "लाइव स्थिति को मूल रूप में रखता है और अंतिम 8 टर्न सुरक्षित करता है; केवल पुराने बंद हो चुके इतिहास को संक्षिप्त करता है।" }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "कोडिंग-सुरक्षित", + "description": "प्राधिकार, टूल स्कीमा और लाइव टूल आउटपुट को मूल रूप में रखते हुए अंतिम 12 टर्न सुरक्षित करता है। जब तक सत्र में हिस्ट्री एकत्रित नहीं होती, तब तक कुछ भी कंप्रेस नहीं करता।" }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "पासथ्रू", + "description": "बिना रूपांतरित किए रूट करता है। इंजन को छोड़ दिया जाता है और अनुरोध को बिना बदलाव के अग्रेषित किया जाता है।" } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph कंप्रेशन प्रोफ़ाइल चुनें", "saved": "सहेजा गया।", "saveFailed": "सहेजा नहीं जा सका।", "enableAria": "OmniGlyph इंजन सक्षम करें", @@ -8885,7 +8892,7 @@ "fallbackRouting": "फ़ॉलबैक राउटिंग", "fallbackRoutingDescription": "CLIProxyAPI के माध्यम से विफल प्रदाता अनुरोधों को पुनः प्रयास करें", "enableFallback": "फ़ॉलबैक सक्षम करें", - "cliproxyUrl": "CLIProxyAPI URL", + "cliproxyUrl": "CLIProxyAPI यूआरएल", "fallbackCodes": "फ़ॉलबैक स्थिति कोड (अल्पविराम से अलग किए गए)", "invalidUrl": "अमान्य URL — http:// या https:// से शुरू होना चाहिए", "saved": "सहेजा गया", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "नियम-आधारित संदेश कंप्रेशन, भाषा पैक, विश्लेषिकी और आउटपुट मोड नियंत्रण।", "advancedConfig": "उन्नत विन्यास", "advancedConfigDesc": "संपीड़न व्यवहार को सुव्यवस्थित करें", "aggressiveSettings": "आक्रामक सेटिंग्स", "aggressiveSettingsDesc": "संभावित गुणवत्ता वाले ट्रेड-ऑफ़ के साथ अधिकतम संपीड़न", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "अनुरोध", + "tokensSaved": "बचाए गए टोकन", + "savingsPercent": "बचत %", + "avgLatency": "औसत विलंबता", + "languagePacks": "भाषा पैक", + "languagePacksDesc": "विशिष्ट भाषाओं के लिए संपीड़न नियम सक्षम करें।", "labelAutoTrigger": "संदर्भ से अधिक होने पर स्वतः संपीड़ित करें", "labelCompressionRate": "संपीड़न शक्ति", "labelMaxTokens": "प्रति संदेश लक्ष्य टोकन", "labelMinLength": "न्यूनतम संदेश लंबाई", "labelMinSavings": "सहेजने के लिए न्यूनतम टोकन", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "सक्षम", + "autoDetect": "भाषा का स्वतः पता लगाएँ", + "rulesCount": "{count} नियम", "inputCompressionTitle": "इनपुट संपीड़न", "inputCompressionDesc": "चैट इतिहास को छोटे शब्दों में फिर से लिखें। इनपुट टोकन को ~50% तक कम करता है।", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "संपीड़न विश्लेषिकी", + "noAnalytics": "अभी तक कोई संपीड़न विश्लेषिकी उपलब्ध नहीं है।", "masterDisabledWarning": "टोकन सेवर मास्टर स्विच बंद (OFF) है — ये सेटिंग्स अनुरोधों को तब तक प्रभावित नहीं करेंगी जब तक आप इसे संपीड़न सेटिंग्स से चालू नहीं करते या इसे यहाँ नहीं बदलते।", "outputMode": "आउटपुट मोड", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "आउटपुट मोड", "quickSettings": "त्वरित सेटिंग्स", "quickSettingsDesc": "आरंभ करने के लिए बुनियादी संपीड़न सेटिंग्स", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "स्वतः-स्पष्टता बायपास", + "bypassConditions": "बायपास की शर्तें", "bypassConditionsList": "सुरक्षा, अपरिवर्तनीय, स्पष्टीकरण, आदेश-संवेदनशील", "simpleMode": "सरल", "advancedMode": "उन्नत", @@ -8944,9 +8951,9 @@ "ultraSettings": "अल्ट्रा सेटिंग्स", "ultraSettingsDesc": "एसएलएम-संचालित सिमेंटिक संपीड़न", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "संक्षिप्त उत्तर दें। तकनीकी शब्द, कोड, त्रुटियाँ, URLs और पहचानकर्ता अपरिवर्तित रखें।", + "full": "अत्यंत संक्षिप्त और सघन उत्तर दें। सभी तकनीकी तथ्य बनाए रखें।", + "ultra": "सामान्य तकनीकी संक्षेपों के साथ अत्यंत संक्षिप्त उत्तर दें। सटीक प्रतीकों को अपरिवर्तित रखें।" } }, "translator": { @@ -9186,7 +9193,7 @@ "conceptDiagramExampleApp": "जैसे Anthropic SDK", "conceptDiagramExampleSource": "claude", "conceptDiagramExampleTarget": "Gemini", - "conceptHowItWorksToggle": "How it works", + "conceptHowItWorksToggle": "यह कैसे काम करता है", "conceptHowItWorksBody": "आपका ऐप अपने स्वयं के फ़ॉर्मेट में एक अनुरोध भेजता है। Translator फ़ॉर्मेट का पता लगाता है, इसे एक मध्यवर्ती हब के रूप में OpenAI के माध्यम से (या सीधे जब एक सीधा अनुवादक उपलब्ध हो) परिवर्तित करता है, इसे चुने गए प्रदाता को भेजता है, और प्रतिक्रिया को वापस आपके ऐप के फ़ॉर्मेट में परिवर्तित करके लौटाता है।", "tabTranslate": "अनुवाद करें", "tabMonitor": "मॉनिटर", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "शेष", "kiloPassRenews": "{count} दिनों में नवीनीकृत होता है", "kiloPassUsageLabel": "इस महीने का उपयोग", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "अतिरिक्त उपयोग क्रेडिट", + "kimiExtraUsage": "अतिरिक्त उपयोग", + "kimiExtraUsageEnabled": "सक्षम", + "kimiExtraUsageDisabled": "अक्षम", + "kimiExtraUsageFrozen": "फ़्रीज़ किया गया", + "kimiExtraUsageUnavailable": "अनुपलब्ध", + "kimiMonthlyUsed": "इस महीने उपयोग किया गया", + "kimiMonthlyLimit": "मासिक सीमा", + "kimiMonthlyLimitUnlimited": "असीमित", + "kimiAdditionalCredits": "अतिरिक्त क्रेडिट", "loggerTab": "लकड़हारा", "proxyTab": "प्रॉक्सी", "budgetManagement": "बजट प्रबंधन", @@ -9324,7 +9331,7 @@ "circuitBreakers": "सर्किट ब्रेकर", "lockedIPs": "लॉक किए गए आईपी", "lockoutsAutoRefreshHint": "प्रति-मॉडल दर सीमा लॉक • ऑटो-रीफ्रेश 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# लॉक किया गया} other {# लॉक किए गए}}", "timeLeft": "{time} शेष", "howItWorks": "यह कैसे काम करता है", "howItWorksSubtitle": "जानें कि मूल्यांकन आपके एलएलएम प्रतिक्रियाओं को कैसे मान्य करते हैं", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "प्रत्युत्तरों की तुलना अपेक्षित मानदंडों से की जाती है। विलंबता मेट्रिक्स और विस्तृत फीडबैक के साथ प्रत्येक मामले के लिए पास/असफल देखें।", "evalsStrategyContainsLabel": "शामिल है", "evalsStrategyExactLabel": "सटीक मिलान", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "रेगेक्स", "evalsStrategyCustomLabel": "कस्टम लॉजिक", "evalsStrategyContainsDescription": "जांचता है कि क्या LLM आउटपुट में अपेक्षित सबस्ट्रिंग शामिल है।", "evalsStrategyExactDescription": "जांचता है कि क्या LLM आउटपुट अपेक्षित मान से सटीक रूप से मेल खाता है।", @@ -9364,23 +9371,23 @@ "statsModels": "मॉडल", "statsCoverage": "कवरेज", "statsStrategiesCount": "{count} रणनीतियाँ", - "evaluationStrategies": "Evaluation Strategies", - "modelsUnderTest": "Models Under Test", - "searchSuitesPlaceholder": "Search suites...", + "evaluationStrategies": "मूल्यांकन रणनीतियाँ", + "modelsUnderTest": "परीक्षणाधीन मॉडल", + "searchSuitesPlaceholder": "सुइट खोजें...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", - "runEval": "Run Eval", + "casesCount": "{count, plural, one {# केस} other {# केस}}", + "runEval": "मूल्यांकन चलाएँ", "runAllSuites": "सभी चलाएँ", "runAllRunning": "सब चल रहा है...", "runAllProgress": "चल रहा है {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# सुइट विफल हुआ} other {# सुइट विफल हुए}}", "runAllCompleted": "{suites} सुइट्स चलाएँ - {passed} उत्तीर्ण, {failed} विफल", "runAllCompletedWithFailures": "{completed} सुइट्स चलाएं; {failedSuites} पूरा करने में विफल रहा", "runningProgress": "चल रहा है {current}/{total}...", - "passRate": "pass rate", + "passRate": "उत्तीर्णता दर", "summaryBreakdown": "{passed} उत्तीर्ण · {failed} अनुत्तीर्ण · {total} कुल", "passedIconLabel": "✅उत्तीर्ण", - "failedIconLabel": "❌ Failed", + "failedIconLabel": "❌ विफल", "resultPassed": "उत्तीर्ण", "resultFailed": "असफल", "expandResult": "परिणाम विवरण विस्तृत करें", @@ -9389,22 +9396,22 @@ "detailsRegex": "Regex: {pattern}", "detailsExpected": "अपेक्षित: \"{expected}\"", "expectedOutputLabel": "अपेक्षित आउटपुट", - "noResultsYet": "No results yet", + "noResultsYet": "अभी तक कोई परिणाम नहीं", "testCasesCount": "परीक्षण मामले ({count})", - "noTestCasesDefined": "No test cases defined", + "noTestCasesDefined": "कोई परीक्षण केस परिभाषित नहीं है", "runEvalHint": "अपने एलएलएम समापन बिंदु के विरुद्ध सभी मामलों को निष्पादित करने के लिए \"रन इवल\" पर क्लिक करें। प्रत्येक परीक्षण ओम्निरूट के माध्यम से एक वास्तविक अनुरोध भेजता है।", "notifyNoTestCases": "इस सुइट के लिए कोई परीक्षण मामला परिभाषित नहीं है", "notifyAllCasesPassed": "सभी {total} मामले पारित ✅", "notifySomeCasesFailed": "{passed}/{total} उत्तीर्ण, {failed} अनुत्तीर्ण", - "notifyEvalRunFailed": "Eval run failed", - "notifyEvalTitle": "Eval: {name}", - "modelEvals": "Model Evaluations", + "notifyEvalRunFailed": "मूल्यांकन रन विफल रहा", + "notifyEvalTitle": "मूल्यांकन: {name}", + "modelEvals": "मॉडल मूल्यांकन", "evalsHeroDescription": "पूर्वनिर्धारित मूल्यांकन सुइट्स चलाकर अपने एलएलएम समापन बिंदुओं का परीक्षण और सत्यापन करें। प्रत्येक सुइट में परीक्षण मामले होते हैं जो ओमनीरूट के माध्यम से वास्तविक संकेत भेजते हैं और अपेक्षित मानदंडों के विरुद्ध प्रतिक्रियाओं की तुलना करते हैं - आपको प्रतिगमन का पता लगाने, मॉडल की तुलना करने और प्रदाताओं के बीच प्रतिक्रिया की गुणवत्ता सुनिश्चित करने में मदद करते हैं।", - "qualityValidation": "Quality Validation", - "modelComparison": "Model Comparison", - "regressionDetection": "Regression Detection", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", + "qualityValidation": "गुणवत्ता सत्यापन", + "modelComparison": "मॉडल तुलना", + "regressionDetection": "प्रतिगमन का पता लगाना", + "latencyBenchmarks": "लेटेंसी बेंचमार्क", + "modelLockouts": "मॉडल लॉकआउट", "noLockouts": "वर्तमान में कोई भी मॉडल लॉक नहीं है", "activeSessions": "सक्रिय सत्र", "noSessions": "कोई सक्रिय सत्र नहीं", @@ -9423,7 +9430,7 @@ "providerLimits": "प्रदाता सीमाएँ", "noProviders": "कोई प्रदाता कनेक्ट नहीं है", "connectProvidersForQuota": "अपनी एपीआई कोटा सीमा और उपयोग को ट्रैक करने के लिए OAuth वाले प्रदाताओं से जुड़ें।", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# खाता} other {# खाते}}", "filteredFromCount": "({count} से फ़िल्टर किया गया)", "autoRefresh": "स्वतः ताज़ा करें", "refreshAll": "सभी को ताज़ा करें", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "कोटा दृश्यता अपडेट करने में विफल", "account": "खाता", "modelQuotas": "मॉडल कोटा", - "lastUsed": "Last Refreshed", + "lastUsed": "अंतिम बार रीफ़्रेश किया गया", "actions": "क्रियाएँ", "refreshQuota": "ताज़ा कोटा", "today": "आज", @@ -9452,9 +9459,9 @@ "cardExpand": "विस्तार करें", "cardCollapse": "समेटें", "moreQuotas": "+{count} और", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "असमूहीकृत", + "viewFlat": "समतल", + "viewByEnvironment": "परिवेश के अनुसार", "noQuotaDataAvailable": "कोई कोटा डेटा उपलब्ध नहीं है", "noAccountsForTierFilter": "टियर फ़िल्टर के लिए कोई खाता नहीं मिला", "tierAll": "सब", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "क्रेडिट रिडीम करें", "resetCreditRedeemed": "रीसेट रिडीम किया गया", "resetCreditRedeemFailed": "रीसेट क्रेडिट रिडीम करने में विफल", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "सुइट सहेजने में विफल", "clone": "क्लोन", "exportSuite": "निर्यात करें", "importSuite": "आयात करें", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "अमान्य eval सुइट JSON", "suiteBuilderCloneSuffix": "प्रतिलिपि", "suiteBuilderImportedSuite": "आयातित सुइट", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "स्कोरकार्ड", + "evalApiKey": "API कुंजी", + "scorecardPassRate": "उत्तीर्णता दर", + "targetTypeModel": "मॉडल", + "actualOutputLabel": "वास्तविक आउटपुट", + "evalTargetHint": "मूल्यांकन के लिए कोई मॉडल या कॉम्बो चुनें।", + "suiteBuilderDeleted": "सुइट सफलतापूर्वक हटा दिया गया", + "suiteBuilderCaseCardHint": "इनपुट प्रॉम्प्ट और अपेक्षित आउटपुट मानदंड परिभाषित करें।", + "nextResetUtc": "अगला रीसेट (UTC)", + "scorecardHint": "सभी मूल्यांकन सुइट में समेकित उत्तीर्णता दरें।", + "suiteLatestRunsHint": "इस सुइट के सबसे हालिया मूल्यांकन रन।", + "saving": "सहेजा जा रहा है", + "suiteBuilderCaseModelLabel": "मॉडल (वैकल्पिक)", + "evalControlsTitle": "मूल्यांकन नियंत्रण", + "suiteBuilderEditTitle": "मूल्यांकन सुइट संपादित करें", + "suiteBuilderCaseStrategyLabel": "सत्यापन रणनीति", + "notifySelectDifferentCompareTarget": "तुलना के लिए कृपया कोई अलग लक्ष्य चुनें", + "recentRunsHint": "सबसे हालिया मूल्यांकन रन दिखाए जा रहे हैं। विस्तृत परिणाम देखने के लिए किसी रन पर क्लिक करें।", + "evalCompareHint": "वैकल्पिक रूप से, परिणामों की तुलना किसी दूसरे लक्ष्य से करें।", + "suiteBuilderCaseInvalid": "इस केस में सत्यापन त्रुटियाँ हैं। सहेजने से पहले इन्हें ठीक करें।", + "historyEmpty": "अभी तक कोई मूल्यांकन इतिहास नहीं है", + "suiteBuilderUpdated": "सुइट सफलतापूर्वक अपडेट किया गया", + "resetInterval": "रीसेट अंतराल", + "suiteBuilderCreateTitle": "मूल्यांकन सुइट बनाएँ", + "activePeriodSpend": "सक्रिय अवधि का खर्च", + "evalApiKeyHint": "मूल्यांकन अनुरोधों के लिए उपयोग की जाने वाली API कुंजी चुनें।", + "evalCompareOptional": "तुलना करें (वैकल्पिक)", + "suiteBuilderDeleteFailed": "सुइट हटाने में विफल", + "suiteBuilderCaseSystemPromptPlaceholder": "वैकल्पिक सिस्टम निर्देश...", + "scorecardCases": "केस", + "runCompletedWithScore": "मूल्यांकन पूर्ण हुआ — {score}% उत्तीर्ण दर", + "suiteBuilderCustomBadge": "कस्टम", + "targetSuiteDefaults": "सुइट डिफ़ॉल्ट", + "suiteBuilderDeleteConfirm": "क्या आप वाकई इस सुइट को हटाना चाहते हैं? यह कार्रवाई पूर्ववत नहीं की जा सकती।", + "suiteBuilderNameLabel": "सुइट का नाम", + "scorecardSuites": "सुइट", + "evalCompareTarget": "तुलना लक्ष्य", + "suiteBuilderCaseModelPlaceholder": "उदा. gpt-4o-mini", + "evalControlsHint": "अपना मूल्यांकन लक्ष्य और API कुंजी कॉन्फ़िगर करें, फिर मॉडल की गुणवत्ता सत्यापित करने के लिए सुइट चलाएँ।", + "recentRunsTitle": "हालिया रन", + "suiteBuilderCaseSystemPromptLabel": "सिस्टम प्रॉम्प्ट", + "suiteBuilderCaseExpectedPlaceholder": "उदा. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "जैसे डीईएफ़ फाइबोनैचि", "suiteBuilderCaseExpectedPlaceholderExact": "सटीक अपेक्षित प्रतिक्रिया चिपकाएँ", "suiteBuilderCaseExpectedPlaceholderRegex": "जैसे ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "स्लैश लपेटे बिना जावास्क्रिप्ट रेगुलर एक्सप्रेशन का उपयोग करें।", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "उदा. Coding Quality Suite", + "suiteBuilderAddCase": "केस जोड़ें", + "cancel": "रद्द करें", + "evalTarget": "लक्ष्य", + "suiteBuilderCaseNameLabel": "केस का नाम", + "weeklyLimitUsd": "साप्ताहिक सीमा (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "उदा. Python में fibonacci फ़ंक्शन लिखें", + "suiteBuilderNameRequired": "सुइट का नाम आवश्यक है", + "suiteBuilderCaseUserPromptLabel": "उपयोगकर्ता प्रॉम्प्ट", + "daily": "दैनिक", + "resultErrorLabel": "त्रुटि", + "suiteBuilderBuiltInBadge": "अंतर्निहित", + "suiteBuilderCaseCardTitle": "टेस्ट केस", "suiteBuilderDuplicateCase": "डुप्लिकेट", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "उदा. 50.00", + "suiteBuilderCaseTagsHint": "टेस्ट केस व्यवस्थित करने के लिए कॉमा से अलग किए गए टैग।", + "notifyEvalRunFailedWithReason": "मूल्यांकन विफल: {reason}", + "weekly": "साप्ताहिक", + "runEvalRunning": "मूल्यांकन चल रहा है...", + "delete": "हटाएँ", + "resetTimeUtc": "रीसेट समय (UTC)", + "evalApiKeyAuto": "स्वचालित (डिफ़ॉल्ट का उपयोग करें)", + "suiteBuilderDescriptionPlaceholder": "यह सुइट क्या परीक्षण करता है, इसका वैकल्पिक विवरण...", + "targetComparisonTitle": "लक्ष्य तुलना", + "save": "सहेजें", + "suiteBuilderCreated": "सुइट सफलतापूर्वक बनाया गया", + "suiteLatestRuns": "नवीनतम रन", + "suiteBuilderCaseExpectedLabel": "अपेक्षित मान", + "historyLatency": "विलंबता", + "suiteBuilderCaseTagsPlaceholder": "जैसे coding, python", + "targetTypeCombo": "कॉम्बो", + "scorecardPassed": "उत्तीर्ण", + "suiteBuilderCaseTagsLabel": "टैग", + "suiteBuilderNewSuite": "नया सुइट", + "notifyEvalLoadFailed": "मूल्यांकन डेटा लोड नहीं हो सका", + "notConfigured": "कॉन्फ़िगर नहीं किया गया", + "suiteBuilderCaseNamePlaceholder": "जैसे Python fibonacci परीक्षण", + "intervalLabel": "अंतराल", + "suiteBuilderCreateAction": "सुइट बनाएँ", + "suiteBuilderCasesHint": "प्रत्येक केस एक प्रॉम्प्ट भेजता है और प्रतिक्रिया को सत्यापित करता है।", + "suiteBuilderUpdatedAt": "अपडेट किया गया", + "errorBadge": "त्रुटि", + "suiteBuilderCasesTitle": "परीक्षण केस", + "edit": "संपादित करें", + "monthly": "मासिक", + "suiteBuilderCasesRequired": "कम-से-कम एक परीक्षण केस आवश्यक है", + "weeklyLimitSummary": "साप्ताहिक बजट सीमा का सारांश", + "suiteBuilderDescriptionLabel": "विवरण", + "targetComparisonHint": "लक्ष्यों के बीच मूल्यांकन परिणामों की साथ-साथ तुलना।", + "compareCompletedWithScore": "तुलना पूरी हुई — {score}% उत्तीर्ण दर", + "staleQuotaTooltip": "अंतिम रीफ़्रेश विफल रहा — कैश किया गया डेटा दिखाया जा रहा है", "quotaThresholdLabel": "न्यूनतम बायां", "quotaCutoffsColumnHelp": "जब शेष कोटा इस प्रतिशत या इससे कम हो जाए तो अनुरोध रोकें।", "quotaCutoffsButtonDefault": "डिफ़ॉल्ट", @@ -9863,19 +9870,19 @@ "backToLogin": "लॉगइन पर वापस जाएँ", "forgotPassword": "पासवर्ड भूल गए?", "continueWithOidc": "OIDC के साथ जारी रखें", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", - "Authorization": "Authorization", + "defaultPasswordHint": "डिफ़ॉल्ट पासवर्ड: CHANGEME (जब तक INITIAL_PASSWORD सेट न किया गया हो)", + "Authorization": "प्राधिकरण", "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "प्राधिकरण की प्रतीक्षा की जा रही है...", + "waitingForGoogleAuthorization": "Google प्राधिकरण की प्रतीक्षा की जा रही है...", + "waitingForOpenAIAuthorization": "OpenAI प्राधिकरण की प्रतीक्षा की जा रही है...", + "waitingForAntigravityAuthorization": "Antigravity प्राधिकरण की प्रतीक्षा की जा रही है...", + "waitingForQoderAuthorization": "Qoder प्राधिकरण की प्रतीक्षा की जा रही है...", + "exchangingCodeForTokens": "टोकन के लिए कोड का आदान-प्रदान किया जा रहा है...", + "nodeIncompatibleTitle": "असंगत Node.js संस्करण", + "nodeIncompatibleDesc": "आप Node.js {version} चला रहे हैं, जो OmniRoute की समर्थित सुरक्षित रनटाइम नीति के दायरे से बाहर है। पैच किया हुआ Node.js 20.x या 22.x LTS रिलीज़ इस्तेमाल करें।", + "nodeIncompatibleFixLabel": "समाधान: पैच किया हुआ Node.js 22 LTS रिलीज़ इंस्टॉल करें", + "nodeIncompatibleHint": "OmniRoute के लिए Node.js 22.22.2+ (22.x LTS) या 24.0.0+ (24.x LTS) आवश्यक है। Node 24 LTS अनुशंसित है।", "resetViaAppDataTitle": "ऐप डेटा के माध्यम से रीसेट करें", "resetViaAppDataDescription": "ऐप डेटा निर्देशिका से सेटिंग्स फ़ाइल हटाएँ ताकि आपका पासवर्ड रीसेट हो सके:", "quitDesktopApp": "OmniRoute डेस्कटॉप ऐप को पूरी तरह से बंद करें", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "प्रदाता", "commonUseCases": "सामान्य उपयोग के मामले", "clientCompatibility": "ग्राहक अनुकूलता", - "protocolsToc": "Protocols", + "protocolsToc": "प्रोटोकॉल", "apiReference": "एपीआई संदर्भ", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "प्रबंधन API संदर्भ", + "managementApiDescription": "प्रॉक्सी रजिस्ट्री, स्कोप असाइनमेंट और पुराने प्रॉक्सी माइग्रेशन के लिए ऑटोमेशन एंडपॉइंट।", "method": "विधि", "path": "पथ", "notes": "टिप्पणियाँ", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "पीडब्लूए", "deployPwaText": "एंड्रॉइड, आईओएस और डेस्कटॉप ब्राउज़र पर ओमनीरूट को एक प्रगतिशील वेब ऐप के रूप में इंस्टॉल करें।", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Termux के ज़रिए Android पर OmniRoute को हेडलेस मोड में चलाएँ। अपने मोबाइल ब्राउज़र से डैशबोर्ड एक्सेस करें।", "featureRoutingTitle": "बहु-प्रदाता रूटिंग", "featureRoutingText": "एकल OpenAI-संगत एंडपॉइंट के माध्यम से 30+ AI प्रदाताओं को रूट अनुरोध। चैट, प्रतिक्रियाओं, ऑडियो और छवि एपीआई का समर्थन करता है।", "featureCombosTitle": "संयोजन और संतुलन", @@ -10132,39 +10139,39 @@ "clientKimiBullet1": "खातों या प्रदाता कॉम्बो को नीचे घुमाते समय एक स्थिर आधार URL के रूप में ओमनीरूट का उपयोग करें।", "clientKimiBullet2": "कोडिंग प्रवाह में पूर्वनिर्धारित मॉडल को प्राथमिकता दें ताकि फ़ॉलबैक और ऑडिट ट्रेल स्पष्ट रहें।", "clientKimiBullet3": "जब आप टूल-उपयोग करने वाले क्लाइंट के लिए मूल प्रतिक्रिया-शैली रूटिंग चाहते हैं तो `/v1/responses` का उपयोग करें।", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "प्रोटोकॉल: MCP और A2A", + "protocolsDescription": "OmniRoute, OpenAI-संगत APIs के अतिरिक्त दो परिचालन प्रोटोकॉल उपलब्ध कराता है: टूल निष्पादन के लिए MCP और एजेंट-से-एजेंट वर्कफ़्लो के लिए A2A।", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "क्लाइंट को ऑडिट दृश्यता के साथ OmniRoute टूल खोजने और कॉल करने देने के लिए stdio पर MCP का उपयोग करें।", + "protocolMcpStep1": "MCP ट्रांसपोर्ट को `omniroute --mcp` से शुरू करें।", + "protocolMcpStep2": "अपने MCP क्लाइंट को stdio ट्रांसपोर्ट पर निर्देशित करें।", + "protocolMcpStep3": "कनेक्टिविटी सत्यापित करने के लिए `omniroute_get_health` और `omniroute_list_combos` को कॉल करें।", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "कार्य सिंक्रोनस रूप से या SSE स्ट्रीमिंग के ज़रिए सबमिट करने के लिए A2A JSON-RPC का उपयोग करें।", + "protocolA2aStep1": "एजेंट डिस्कवरी के लिए `/.well-known/agent.json` पढ़ें।", + "protocolA2aStep2": "`POST /a2a` पर `message/send` या `message/stream` अनुरोध भेजें।", + "protocolA2aStep3": "`tasks/get` और `tasks/cancel` के साथ कार्य जीवनचक्र प्रबंधित करें।", + "protocolTroubleshootingTitle": "प्रोटोकॉल समस्या निवारण", + "protocolTroubleshooting1": "यदि MCP की स्थिति ऑफ़लाइन है, तो सत्यापित करें कि stdio प्रक्रिया चल रही है और हार्टबीट फ़ाइल अपडेट हो रही है।", + "protocolTroubleshooting2": "यदि A2A कार्य `working` में बने रहते हैं, तो टर्मिनल स्थिति के लिए `/api/a2a/tasks/:id` और स्ट्रीम इवेंट की जाँच करें।", + "protocolTroubleshooting3": "परिचालन नियंत्रण और ऑडिट दृश्यता के लिए `/dashboard/mcp` और `/dashboard/a2a` का उपयोग करें।", "endpointChatNote": "OpenAI-संगत चैट समापन बिंदु (डिफ़ॉल्ट)।", "endpointResponsesNote": "प्रतिक्रियाएँ एपीआई समापन बिंदु (कोडेक्स, ओ-श्रृंखला)।", "endpointModelsNote": "सभी जुड़े हुए प्रदाताओं के लिए मॉडल कैटलॉग।", "endpointAudioNote": "ऑडियो ट्रांसक्रिप्शन (डीपग्राम, असेंबलीएआई)।", - "endpointSpeechNote": "Text-to-speech generation (ElevenLabs, OpenAI TTS).", - "endpointEmbeddingsNote": "Text embedding generation (OpenAI, Cohere, Voyage).", + "endpointSpeechNote": "टेक्स्ट-टू-स्पीच जनरेशन (ElevenLabs, OpenAI TTS)।", + "endpointEmbeddingsNote": "टेक्स्ट एम्बेडिंग जनरेशन (OpenAI, Cohere, Voyage)।", "endpointImagesNote": "छवि निर्माण (नैनोबनाना)।", "endpointRewriteChatNote": "/v1 के बिना ग्राहकों के लिए सहायक को फिर से लिखें।", "endpointRewriteResponsesNote": "/v1 के बिना प्रतिक्रियाओं के लिए सहायक को फिर से लिखें।", "endpointRewriteModelsNote": "/v1 के बिना मॉडल खोज के लिए सहायक को फिर से लिखें।", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "सहेजे गए प्रॉक्सी रजिस्ट्री आइटम सूचीबद्ध करें (पेजिनेशन समर्थित)।", + "mgmtProxiesCreateNote": "रजिस्ट्री में पुनः उपयोग योग्य प्रॉक्सी आइटम बनाएँ।", + "mgmtProxiesHealthNote": "प्रॉक्सी लॉग से प्रत्येक सहेजे गए प्रॉक्सी के लिए 24 घंटे/रोलिंग स्वास्थ्य मेट्रिक्स प्राप्त करें।", + "mgmtProxiesBulkAssignNote": "एक अनुरोध में कई स्कोप IDs के लिए एक प्रॉक्सी असाइन करें या हटाएँ।", + "mgmtAssignmentsListNote": "स्कोप, scope_id या proxy_id के अनुसार प्रॉक्सी असाइनमेंट सूचीबद्ध करें।", + "mgmtAssignmentsUpdateNote": "ग्लोबल/प्रोवाइडर/अकाउंट/कॉम्बो स्कोप के लिए प्रॉक्सी असाइन करें या हटाएँ।", + "mgmtLegacyMigrationNote": "पुराने proxyConfig मैप्स को रजिस्ट्री असाइनमेंट में इंपोर्ट करें।", "modelPrefixesDescriptionStart": "किसी विशिष्ट प्रदाता तक रूट करने के लिए मॉडल नाम से पहले प्रदाता उपसर्ग का उपयोग करें। उदाहरण:", "modelPrefixesDescriptionEnd": "GitHub Copilot के लिए मार्ग।", "provider": "प्रदाता", @@ -10336,35 +10343,35 @@ "termsSection6Text": "ओमनीरूट ओपन-सोर्स सॉफ्टवेयर है। आप इसके लाइसेंस की शर्तों के तहत इसका निरीक्षण, संशोधन और वितरण करने के लिए स्वतंत्र हैं।" }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI एजेंट", + "description": "अपने सिस्टम पर इंस्टॉल किए गए CLI एजेंट खोजें। स्वतः पहचान के लिए कस्टम एजेंट जोड़ें।", + "refresh": "रीफ़्रेश करें", + "installed": "इंस्टॉल किया गया", + "notFound": "नहीं मिला", + "builtIn": "अंतर्निहित", + "custom": "कस्टम", + "remove": "हटाएँ", + "addCustomAgent": "कस्टम एजेंट जोड़ें", + "addCustomAgentDesc": "पहचान के लिए कोई भी CLI टूल पंजीकृत करें। रीफ़्रेश करने पर इसे स्वचालित रूप से स्कैन किया जाएगा।", + "agentName": "एजेंट का नाम", + "binaryName": "बाइनरी का नाम", + "versionCommand": "संस्करण कमांड", + "spawnArgs": "स्पॉन आर्ग्युमेंट्स", + "addAgent": "एजेंट जोड़ें", + "scanning": "CLI एजेंटों के लिए सिस्टम स्कैन किया जा रहा है...", + "opencodeIntegration": "OpenCode एकीकरण", + "opencodeDetected": "opencode {version} का पता चला", + "opencodeDesc": "अपने OmniRoute बेस URL और सभी उपलब्ध मॉडल के साथ उपयोग के लिए तैयार {configFile} जनरेट करें — इसे अपने प्रोजेक्ट की रूट डायरेक्टरी में रखें और {command} चलाएँ।", + "downloadConfig": "{file} डाउनलोड करें", + "downloaded": "डाउनलोड हो गया!", + "setupGuideTitle": "सेटअप गाइड", + "openCliTools": "CLI टूल खोलें", + "setupGuideDetectCliTitle": "इंस्टॉल किए गए CLI का पता लगाएँ", + "setupGuideDetectCliDesc": "CLI इंस्टॉल या अपडेट करने के बाद रीफ़्रेश पर क्लिक करें, ताकि OmniRoute बाइनरी और संस्करणों को फिर से स्कैन कर सके।", + "setupGuideCustomAgentTitle": "कस्टम बाइनरी पंजीकृत करें", + "setupGuideCustomAgentDesc": "जब आपका CLI अंतर्निहित सूची में न हो, तो कस्टम एजेंट जोड़ें का उपयोग करें। बाइनरी का नाम और संस्करण कमांड प्रदान करें।", + "setupGuideCommandMissingTitle": "'command not found' को ठीक करें", + "setupGuideCommandMissingDesc": "सुनिश्चित करें कि CLI कमांड PATH में मौजूद है, नया टर्मिनल सत्र खोलें और फिर से रीफ़्रेश चलाएँ।", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10446,7 +10453,7 @@ "connected": "कनेक्टेड", "notConnected": "कनेक्टेड नहीं है", "configure": "कॉन्फ़िगर करें", - "settingsTitle": "Cloud Agent Settings", + "settingsTitle": "क्लाउड एजेंट सेटिंग्स", "settingsDesc": "क्लाउड एजेंटों के लिए स्थानीय प्राथमिकताओं को कॉन्फ़िगर करें।", "settingEnableAgents": "क्लाउड एजेंटों को सक्षम करें", "settingEnableAgentsDesc": "OmniRoute को स्वायत्त कोडिंग एजेंटों को व्यवस्थित करने की अनुमति दें।", @@ -10491,148 +10498,148 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "सामान्य चैट", + "streaming": "स्ट्रीमिंग", + "system-prompt": "सिस्टम प्रॉम्प्ट", + "thinking": "चिंतन", + "tool-calling": "टूल कॉलिंग", + "multi-turn": "बहु-चरणीय", "vision": "दृष्टि", "schema-coercion": "स्कीमा जबरदस्ती" }, "templateDescriptions": { - "simple-chat": "Basic chat template with system message", - "streaming": "Template for streaming responses", - "system-prompt": "Template with custom system prompt", - "thinking": "Template with reasoning/thinking budget", - "tool-calling": "Template for tool/function calling", - "multi-turn": "Template for multi-turn conversations", + "simple-chat": "सिस्टम संदेश वाला बुनियादी चैट टेम्पलेट", + "streaming": "स्ट्रीमिंग प्रतिक्रियाओं के लिए टेम्पलेट", + "system-prompt": "कस्टम सिस्टम प्रॉम्प्ट वाला टेम्पलेट", + "thinking": "रीज़निंग/चिंतन बजट वाला टेम्पलेट", + "tool-calling": "टूल/फ़ंक्शन कॉलिंग के लिए टेम्पलेट", + "multi-turn": "बहु-चरणीय वार्तालापों के लिए टेम्पलेट", "vision": "छवि इनपुट के साथ मल्टीमॉडल टेम्पलेट", "schema-coercion": "संरचित-आउटपुट / JSON स्कीमा प्रवर्तन" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful AI assistant.", - "userGreeting": "Hello! How can I help you today?" + "system": "आप एक सहायक AI असिस्टेंट हैं।", + "userGreeting": "नमस्ते! आज मैं आपकी कैसे मदद कर सकता हूँ?" }, "streaming": { - "prompt": "Write a story about" + "prompt": "इसके बारे में एक कहानी लिखें" }, "systemPrompt": { - "question": "What is the meaning of life?", - "systemInstruction": "Provide a thoughtful, philosophical answer." + "question": "जीवन का अर्थ क्या है?", + "systemInstruction": "एक विचारशील, दार्शनिक उत्तर दें।" }, "thinking": { - "question": "Explain quantum computing" + "question": "क्वांटम कंप्यूटिंग की व्याख्या करें" }, "toolCalling": { - "cityNameDescription": "The name of the city to get weather for", - "toolDescription": "Get current weather for a location", - "userWeather": "What's the weather in Tokyo?" + "cityNameDescription": "उस शहर का नाम जिसके लिए मौसम की जानकारी प्राप्त करनी है", + "toolDescription": "किसी स्थान का वर्तमान मौसम प्राप्त करें", + "userWeather": "Tokyo में मौसम कैसा है?" }, "multiTurn": { - "system": "You are a helpful assistant.", - "assistantExample": "I'd be happy to help you with that.", - "userInitial": "I need help with", - "userFollowUp": "Can you elaborate on that?" + "system": "आप एक सहायक असिस्टेंट हैं।", + "assistantExample": "मुझे इसमें आपकी मदद करके खुशी होगी।", + "userInitial": "मुझे इसमें मदद चाहिए", + "userFollowUp": "क्या आप इस बारे में विस्तार से बता सकते हैं?" } }, "cache": { - "title": "Cache Management", + "title": "कैश प्रबंधन", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "रीफ़्रेश करें", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "मेमोरी प्रविष्टियाँ", + "memoryEntriesSub": "इन-मेमोरी LRU", + "dbEntries": "DB प्रविष्टियाँ", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "कैश हिट्स", + "cacheHitsSub": "कुल {total} में से", + "tokensSaved": "बचाए गए टोकन", + "tokensSavedSub": "हिट्स के आधार पर अनुमानित", + "hitRate": "हिट दर", + "performance": "कैश प्रदर्शन", + "autoRefresh": "हर {seconds} सेकंड में स्वतः रीफ़्रेश होता है", + "hits": "हिट्स", + "misses": "मिस", + "total": "कुल", + "behavior": "कैश व्यवहार", + "behaviorDeterministic": "केवल temperature=0 वाले नॉन-स्ट्रीमिंग अनुरोध कैश किए जाते हैं।", + "behaviorBypass": "हेडर {header} के साथ बायपास करें।", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "डिफ़ॉल्ट TTL: 30 मिनट। {envVar} के माध्यम से कॉन्फ़िगर करें।", + "idempotency": "आइडेम्पोटेंसी लेयर", + "activeDedupKeys": "सक्रिय डीडुप कुंजियाँ", + "dedupWindow": "डीडुप विंडो", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "कैश साफ़ करने में विफल।", + "unavailable": "कैश उपलब्ध नहीं है", + "unavailableDesc": "कैश के आँकड़े प्राप्त नहीं किए जा सके। सुनिश्चित करें कि सर्वर चल रहा है।", "loadingCacheAria": "कैश लोड किया जा रहा है", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "प्रॉम्प्ट कैश (प्रदाता-पक्षीय)", + "semanticCache": "सिमैंटिक कैश", + "promptCacheSectionDesc": "उपयोग इतिहास से प्रदाता-पक्षीय प्रॉम्प्ट कैशिंग गतिविधि दिखाता है, ताकि आप देख सकें कि कैश नियंत्रण कहाँ सक्रिय है और आपको इनपुट का कितना पुनः उपयोग मिल रहा है।", + "promptTrendDesc": "पिछले 24 घंटों में प्रति घंटे अनुरोधों की मात्रा, कैश कवरेज और कैश रीड की मात्रा।", + "cachedRequests": "कैश किए गए अनुरोध", + "cachedRequests24h": "कैश किए गए अनुरोध (24 घंटे)", + "cacheHitRate": "कैश हिट दर", + "cacheRate": "कैश दर", + "cacheRateDesc": "कुल अनुरोधों में से", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "प्रॉम्प्ट कैश मेट्रिक्स", + "withCacheControl": "कैश नियंत्रण सहित", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "कैश पुनः उपयोग अनुपात", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "अनुमानित लागत बचत", + "lastUpdated": "अंतिम अपडेट", + "hoursTracked": "ट्रैक किए गए घंटे", + "busiestHour": "सबसे व्यस्त घंटा", + "peakCacheRate": "उच्चतम कैश दर", + "trendHour": "घंटा", + "activityVolume": "गतिविधि", + "requestsShort": "अनुरोध", + "inputShort": "इनपुट", + "cachedShort": "कैश किया गया", + "writeShort": "लेखन", + "resetting": "रीसेट किया जा रहा है...", + "resetMetrics": "मेट्रिक्स रीसेट करें", + "byProvider": "प्रदाता के अनुसार विवरण", + "providerCacheRateDesc": "प्रत्येक प्रदाता कुल इनपुट टोकन, कैश रीड टोकन और कैश राइट टोकन दिखाता है, ताकि आप मूल योग के आधार पर पुनः उपयोग अनुपात सत्यापित कर सकें।", "provider": "Provider", - "requests": "Requests", + "requests": "अनुरोध", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "कैश रुझान (24 घंटे)", + "peakCached": "सर्वाधिक कैश किए गए", + "cached": "कैश किया गया", + "overview": "अवलोकन", "tableProvider": "प्रदाता", "tableModel": "मॉडल", "performanceTitle": "प्रदर्शन", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoute का अपना निर्धारणात्मक रिस्पॉन्स कैश। सक्षम होने पर, बार-बार आने वाले नॉन-स्ट्रीमिंग temperature=0 अनुरोधों को अपस्ट्रीम प्रदाता तक भेजे बिना स्थानीय रूप से पूरा किया जा सकता है।", + "semanticCacheDisabledDesc": "सिमेंटिक कैश अक्षम है। जब तक आप इसे Settings में फिर से चालू नहीं करते, OmniRoute स्थानीय रिस्पॉन्स के पुनः उपयोग को छोड़ देगा।", + "semanticEntriesDesc": "वर्तमान में SQLite में संग्रहीत स्थायी सिमेंटिक कैश रिकॉर्ड। प्रदाता-पक्ष की प्रॉम्प्ट कैश गतिविधि यहाँ सूचीबद्ध नहीं है।", + "searchEntries": "प्रविष्टियाँ खोजें...", + "search": "खोजें", + "loading": "लोड हो रहा है...", + "entriesLoadError": "सिमेंटिक कैश प्रविष्टियाँ लोड नहीं हो सकीं।", + "noEntries": "कोई कैश प्रविष्टि नहीं मिली", + "noPromptCacheData": "अभी तक प्रदाता-पक्ष की कोई प्रॉम्प्ट कैश गतिविधि रिकॉर्ड नहीं की गई है।", + "noTrendData": "पिछले 24 घंटों में कोई प्रॉम्प्ट कैश गतिविधि रिकॉर्ड नहीं की गई है।", + "signature": "हस्ताक्षर", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "बनाया गया", + "expires": "समाप्ति", + "actions": "कार्रवाइयाँ", + "deduplicatedRequests": "डुप्लिकेट हटाए गए अनुरोध", + "savedCalls": "सहेजे गए API कॉल", + "totalProcessed": "प्रोसेस किए गए कुल अनुरोध", + "disabled": "अक्षम", + "totalRequests": "कुल अनुरोध", "reasoningCache": "रीज़निंग रीप्ले", "reasoningCacheDesc": "मल्टी-टर्न टूल कॉलिंग फ़्लो के लिए मॉडल सोच को सुरक्षित रखता है", "reasoningEntries": "सक्रिय प्रविष्टियाँ", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes}m पहले", "hoursAgo": "{hours}h पहले", "daysAgo": "{days}d पहले", - "entries": "Entries" + "entries": "प्रविष्टियाँ" }, "proxyConfigModal": { "levelGlobal": "वैश्विक", @@ -10769,14 +10776,14 @@ "devinDesktopPasteDescription": "एक प्रमाणित Devin सत्र से मौजूदा Devin API कुंजी पेस्ट करें। कुंजी निर्यात उपलब्धता और चरण Devin संस्करण और खाते के अनुसार भिन्न होते हैं।", "devinPasteDescription": "अपना WINDSURF_API_KEY प्रदान करें (जो `devin auth login` के माध्यम से प्राप्त किया गया है, या Windsurf IDE \"Windsurf: Provide Auth Token\" कमांड के माध्यम से)।", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "Grok Build का auth.json", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "एपीआई कुंजी / टोकन", "saving": "सहेजना…", "saveConnection": "संपर्क सहेजें", "gheDescription": "अपने GitHub Enterprise उदाहरण का आधार URL दर्ज करें (जैसे https://ghe.yourcompany.com)।", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "GitHub Enterprise का URL", "gheUrlRequired": "GitHub Enterprise URL आवश्यक है", "gitlabDuoSetupTitle": "GitLab Duo OAuth सेटअप", "gitlabDuoSetupMessage": "GitLab Duo OAuth कॉन्फ़िगर नहीं किया गया है। {applicationsUrl} पर एक OAuth एप्लिकेशन रजिस्टर करें जिसमें रीडायरेक्ट URI {redirectUri} और स्कोप्स \"{scopes}\" हों, फिर {clientIdEnv} (और वैकल्पिक रूप से {clientSecretEnv}) सेट करें और पुनः प्रारंभ करें।", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "कर्सर आईडीई कनेक्ट करें", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Cursor से लॉग इन करें", + "tabImport": "टोकन आयात करें", + "loginDescription": "Cursor का ब्राउज़र लॉगिन खोलता है। Docker में काम करता है — अपने होस्ट ब्राउज़र में स्वीकृति दें, फिर यहाँ वापस आएँ।", + "loginWithCursor": "Cursor से लॉग इन करें", + "startingLogin": "शुरू हो रहा है…", + "waitingApproval": "Cursor लॉगिन की स्वीकृति की प्रतीक्षा हो रही है…", + "openUrlHint": "यदि ब्राउज़र नहीं खुला:", + "openLoginLink": "लॉगिन पृष्ठ खोलें", + "cancelLogin": "लॉगिन रद्द करें", "autoDetecting": "टोकन का स्वतः पता लगाना...", "readingFromCursor": "कर्सर आईडीई या कर्सर-एजेंट से पढ़ना", "tokensAutoDetected": "कर्सर आईडीई से टोकन का सफलतापूर्वक स्वतः पता लगाया गया!", "cursorNotDetected": "कर्सर आईडीई का पता नहीं चला. कृपया अपना टोकन मैन्युअल रूप से चिपकाएँ।", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Docker में चला रहे हैं? Cursor से लॉग इन करना बेहतर है। IDE से स्वतः आयात और cursor-agent आमतौर पर कंटेनर के अंदर उपलब्ध नहीं होते। docs/providers/CURSOR-DOCKER.md देखें।", "accessToken": "प्रवेश टोकन", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "रिफ़्रेश टोकन", + "refreshTokenPlaceholder": "वैकल्पिक — स्वचालित टोकन रिफ़्रेश सक्षम करता है", "required": "*", "accessTokenPlaceholder": "एक्सेस टोकन स्वतः-पॉप्युलेट हो जाएगा...", "machineId": "मशीन आईडी", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "टोकन का स्वतः पता लगाना विफल रहा", "errorEnterToken": "कृपया एक्सेस टोकन दर्ज करें", "errorImportFailed": "आयात विफल", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Cursor लॉगिन शुरू नहीं किया जा सका", + "errorLoginPoll": "Cursor लॉगिन विफल रहा", + "errorLoginTimeout": "Cursor लॉगिन का समय समाप्त हो गया — फिर से प्रयास करें" }, "pricingModal": { "title": "मूल्य निर्धारण विन्यास", @@ -10843,9 +10850,9 @@ "selectProxy": "{name} चुनें", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "लेगेसी आयात करें", + "bulkAssign": "एक साथ असाइन करें", + "addProxy": "प्रॉक्सी जोड़ें", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "परीक्षण करें", + "edit": "संपादित करें", + "delete": "हटाएँ", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10906,7 +10913,7 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "विफल", "successRate": "{rate}% सफलता", "avgLatency": "{latency}ms औसत", "assignmentsCount": "{count} असाइनमेंट", @@ -10961,9 +10968,9 @@ "strategyLatency": "लेटेंसी-ऑप्टिमाइज़्ड", "poolMembersLabel": "पूल सदस्य ({count})", "poolNoMembers": "इस पूल में अभी तक कोई प्रॉक्सी नहीं है।", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{connections, plural, one {# कनेक्शन} other {# कनेक्शन}} द्वारा उपयोग किए गए {exits, plural, one {# एग्ज़िट} other {# एग्ज़िट}} · एक एग्ज़िट पर अधिकतम {max} · पिछले {hours} घंटे", + "poolEgressObservationEmpty": "पिछले {hours} घंटों में कोई ट्रैफ़िक नहीं देखा गया", + "poolEgressObservationHint": "इस समयावधि के दौरान प्रॉक्सी लॉग से गणना की गई: इस पूल के सदस्यों के लिए देखे गए अलग-अलग इग्रेस IP और उनका उपयोग करने वाले OmniRoute कनेक्शन। \"एक एग्ज़िट पर\" का अर्थ इस समयावधि के दौरान है, एक ही समय पर नहीं। प्रति-IP 429 लॉकआउट केवल समान प्रोवाइडर फ़ैमिली के कनेक्शन को रोकता है।", "poolRemove": "हटाएं", "poolRemoveFailed": "पूल से प्रॉक्सी को हटाने में विफल", "poolAddLabel": "एक प्रॉक्सी जोड़ें", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "एंडपॉइंट", + "provider": "प्रदाता", + "model": "मॉडल", "accountKey": "Account Key", "autoAccounts": "ऑटो ({count} खाते)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "भेजें", + "cancel": "रद्द करें", + "audioFile": "ऑडियो फ़ाइल", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "सभी साफ़ करें", + "request": "अनुरोध", + "response": "प्रतिक्रिया", + "transcription": "ट्रांसक्रिप्शन", + "copy": "कॉपी करें", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "{count} छवियाँ उत्पन्न की गईं", "generatedImage": "उत्पन्न छवि {index}", - "save": "Save", + "save": "सहेजें", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "प्रतिक्रियाएँ", "completions": "कम्प्लीशन्स", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "एम्बेडिंग्स", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "मॉडरेशन", - "rerank": "Rerank", + "rerank": "पुनः रैंक करें", "search": "Search", "webFetch": "वेब फ़ेच" }, "conversationalChat": "संवादी चैट", "clearChat": "चैट साफ़ करें", "typeMessagePlaceholder": "एक संदेश टाइप करें... (नई लाइन के लिए Shift+Enter)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "चैट", + "tabCompare": "तुलना करें", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", - "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "tabBuild": "बिल्ड", + "configPane": "कॉन्फ़िगरेशन", + "systemPrompt": "सिस्टम प्रॉम्प्ट", + "systemPromptPlaceholder": "आप एक सहायक असिस्टेंट हैं।", + "modelPlaceholder": "उदा. openai/gpt-4o", + "endpointLabel": "एंडपॉइंट", + "parametersLabel": "पैरामीटर", + "collapseConfig": "कॉन्फ़िगरेशन पेन संक्षिप्त करें", + "expandConfig": "कॉन्फ़िगरेशन पेन विस्तृत करें", + "temperature": "तापमान", + "maxTokens": "अधिकतम टोकन", + "topP": "टॉप-p", + "presencePenalty": "उपस्थिति दंड", + "frequencyPenalty": "आवृत्ति दंड", "reasoningLabel": "तर्क", "thinking": "विचार", "effort": "प्रयास", "effortDefault": "डिफ़ॉल्ट", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "यादृच्छिक (खाली छोड़ें)", + "presetsLabel": "प्रीसेट", + "loadPreset": "प्रीसेट लोड करें", + "savePreset": "प्रीसेट सहेजें", + "noPresets": "कोई प्रीसेट नहीं", + "presetNamePlaceholder": "प्रीसेट का नाम", + "savingPreset": "सहेजा जा रहा है…", + "nameRequired": "नाम आवश्यक है", + "failedToSavePreset": "प्रीसेट सहेजने में विफल", + "improvePrompt": "प्रॉम्प्ट सुधारें", + "improvingPrompt": "सुधारा जा रहा है…", + "improvePromptTitle": "AI से अपना प्रॉम्प्ट सुधारें", + "setModelFirst": "पहले एक मॉडल सेट करें", "setModelInConfigFirst": "पहले Config फलक में एक मॉडल सेट करें।", "improvePromptFailed": "प्रॉम्प्ट सुधार विफल रहा।", "improvePromptAria": "AI का उपयोग करके प्रॉम्प्ट सुधारें", "confirmImprovePrompt": "प्रॉम्प्ट सुधार की पुष्टि करें", "improvePromptDescription": "यह एक बेहतर संस्करण जनरेट करने के लिए आपके वर्तमान सिस्टम प्रॉम्प्ट को पर भेजेगा।", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "यह Config में कॉन्फ़िगर किए गए मॉडल का कोटा उपयोग करेगा।", + "improveConfirm": "सुधारें", + "exportCode": "कोड निर्यात करें", + "exportCodeTitle": "कोड निर्यात करें", "exportShort": "निर्यात", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "निर्यात करने के लिए कोई प्लेग्राउंड स्थिति उपलब्ध नहीं है।", "closeExportModal": "निर्यात मोडल बंद करें", "close": "बंद करें", "exportRealKeyWarning": "सुरक्षा चेतावनी: निर्यात अवरुद्ध — आउटपुट में एक वास्तविक API कुंजी का पता चला था। कृपया अपनी API कुंजी रीसेट करें और पुनः प्रयास करें।", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language} कोड कॉपी करें", "loadingPresets": "लोड हो रहा है…", "loadPresetPlaceholder": "प्रीसेट लोड करें…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "कॉपी करें", + "copiedCode": "कॉपी हो गया!", + "addModel": "+ मॉडल जोड़ें", + "runAll": "सभी चलाएँ", + "cancelAll": "सभी रद्द करें", + "maxColumnsReached": "अधिकतम {max} कॉलम", + "modelPlaceholderCompare": "मॉडल (Cmd+K)…", "noModel": "कोई मॉडल नहीं", "statusLabel": "स्थिति: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "प्रतिक्रिया की प्रतीक्षा की जा रही है…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "क्लाइंट-साइड अनुमान", + "tokensLabel": "टोकन", + "costLabel": "लागत", + "costEstimated": "(अनुमानित)", "ttftTitle": "पहले टोकन का समय (क्लाइंट-साइड अनुमान)", "tpsTitle": "टोकन प्रति सेकंड (क्लाइंट-साइड अनुमान)", "tokenCountsTitle": "प्रॉम्प्ट टोकन ↑ / कम्प्लीशन टोकन ↓", "estimatedCostTitle": "अनुमानित लागत (सटीक होने की गारंटी नहीं)", - "toolsLabel": "Tools", + "toolsLabel": "टूल", "toolsCount": "टूल्स ({count})", - "addTool": "Add tool", + "addTool": "टूल जोड़ें", "editTool": "टूल {name} संपादित करें", "removeTool": "टूल {name} हटाएं", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "फ़ंक्शन का नाम", "toolNameRequiredPlaceholder": "फ़ंक्शन नाम *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "विवरण (वैकल्पिक)", "toolParamsLabel": "पैरामीटर (JSON स्कीमा)", "toolParamsJsonSchema": "पैरामीटर के लिए JSON स्कीमा", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "पैरामीटर मान्य JSON होने चाहिए", + "structuredOutputLabel": "संरचित आउटपुट", + "enableJsonMode": "JSON मोड सक्षम करें", + "disableJsonMode": "JSON मोड अक्षम करें", + "invalidJson": "अमान्य JSON", "jsonMode": "JSON मोड", "jsonModeDescription": "response_format: json_schema लागू करता है", "schemaName": "स्कीमा नाम", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} कॉलम", "addModelToCompare": "तुलना करने के लिए एक मॉडल कॉलम जोड़ें", "modelsSimultaneously": "एक साथ {max} मॉडल तक", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "चल रहा है…", + "runLabel": "चलाएँ", + "enterToolResult": "टूल का परिणाम दर्ज करें…", "build": { "step1Label": "क्या परीक्षण करना है?", "step2Label": "कॉन्फ़िगर करें", @@ -11250,73 +11257,73 @@ "stop": "रोकें" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "रिकॉर्डिंग जारी है", + "paused": "रोका गया", + "pipelineLogsOn": "पाइपलाइन लॉग चालू", + "pipelineLogsOff": "पाइपलाइन लॉग बंद", + "updatingPipelineLogs": "पाइपलाइन लॉग अपडेट किए जा रहे हैं...", + "updatePipelineFailed": "पाइपलाइन लॉगिंग अपडेट करने में विफल", + "capturePipeline": "नए अनुरोधों के लिए पाइपलाइन पेलोड कैप्चर करें", + "searchPlaceholder": "मॉडल, प्रदाता, खाते, API कुंजियाँ, कॉम्बो खोजें...", + "allProviders": "सभी प्रदाता", + "allModels": "सभी मॉडल", + "allAccounts": "सभी खाते", + "allApiKeys": "सभी API कुंजियाँ", + "total": "कुल", + "ok": "सफल", + "err": "त्रुटि", + "combo": "कॉम्बो", + "keys": "कुंजियाँ", + "shown": "दिखाए गए", + "sortNewest": "नवीनतम", + "sortOldest": "सबसे पुराने", + "sortTokensDesc": "टोकन ↓", + "sortTokensAsc": "टोकन ↑", + "sortDurationDesc": "अवधि ↓", + "sortDurationAsc": "अवधि ↑", + "sortStatusDesc": "स्थिति ↓", + "sortStatusAsc": "स्थिति ↑", + "sortModelAsc": "मॉडल A-Z", + "sortModelDesc": "मॉडल Z-A", + "sortLogs": "लॉग क्रमबद्ध करें", + "refresh": "रीफ़्रेश करें", + "columnsLabel": "कॉलम", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semantic": "सिमेंटिक", + "upstream": "अपस्ट्रीम", + "semanticCacheHit": "सिमेंटिक कैश हिट (OmniRoute द्वारा प्रदान किया गया)", + "upstreamResponse": "अपस्ट्रीम प्रदाता की प्रतिक्रिया", + "noApiKey": "कोई API कुंजी नहीं", + "requestedRoutedTitle": "अनुरोध किया गया {requested}, {routed} के रूप में रूट किया गया", "statusFilters": { - "all": "All", + "all": "सभी", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "सफल", + "combo": "कॉम्बो" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "स्थिति", + "cacheSource": "कैश स्रोत", + "model": "मॉडल", + "requested": "अनुरोधित", + "provider": "प्रदाता", + "protocol": "अनुरोध प्रोटोकॉल", + "account": "खाता", + "apiKey": "API कुंजी", + "combo": "कॉम्बो", + "tokens": "टोकन", "compressed": "संपीड़न", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "अवधि", + "time": "समय", + "conversation": "वार्तालाप", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "लॉग लोड हो रहे हैं...", + "noLogs": "अभी तक कोई लॉग नहीं है। उन्हें यहाँ देखने के लिए कुछ API कॉल करें।", + "noMatchingLogs": "वर्तमान फ़िल्टर से मेल खाने वाला कोई लॉग नहीं है।", + "callLogsInfo": "कॉल लॉग JSON फ़ाइलों के रूप में {dataDir} में भी सहेजे जाते हैं और {retentionDays} तथा {maxEntries} के आधार पर रोटेट किए जाते हैं।", "loadMore": "और लोड करें", "loadingMore": "और लोड हो रहा है...", "correlationId": "संबंध पहचानकर्ता", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "इस लॉग प्रविष्टि के लिए विस्तृत पेलोड आर्टिफैक्ट अब उपलब्ध नहीं है।", "payloadCorrupt": "विस्तृत पेलोड आर्टिफैक्ट को पार्स नहीं किया जा सका।", - "notAvailable": "N/A", + "notAvailable": "लागू नहीं", "semanticCache": "सेमांटिक (OmniRoute)", "upstreamCache": "उपस्ट्रीम (प्रदाता)", "ariaLabel": "अनुरोध लॉग विवरण", @@ -11417,59 +11424,59 @@ "correlationId": "संबंध पहचानकर्ता", "correlationIdValue": "संबंध पहचानकर्ता: {id}", "detailedPayloadInfo": "यदि आप नए अनुरोधों के लिए चार-चरणीय क्लाइंट/प्रदाता पेलोड दृश्य चाहते हैं, तो पहले विस्तृत लॉगिंग सक्षम करें।", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "सभी कॉपी करें", + "copiedAll": "सभी कॉपी किए गए" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "सभी", + "filterErrors": "त्रुटियाँ", + "filterSuccess": "सफल", + "filterTimeout": "समय-समाप्ति", + "colStatus": "स्थिति", + "colProxy": "प्रॉक्सी", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "प्रकार", + "colLevel": "स्तर", + "colProvider": "प्रदाता", + "colTarget": "लक्ष्य", + "colLatency": "विलंबता", + "colClientIp": "क्लाइंट IP", + "colTime": "समय", + "recording": "रिकॉर्डिंग", + "paused": "रुका हुआ", + "searchPlaceholder": "होस्ट, प्रदाता, लक्ष्य, IP खोजें...", + "allTypes": "सभी प्रकार", + "allLevels": "सभी स्तर", + "allProviders": "सभी प्रदाता", + "total": "कुल", + "ok": "ठीक", + "err": "त्रुटि", + "timeoutShort": "समय-सीमा समाप्त", + "direct": "प्रत्यक्ष", + "newest": "नवीनतम", + "oldest": "सबसे पुराना", + "latencyDesc": "विलंबता ↓", + "latencyAsc": "विलंबता ↑", + "refresh": "रीफ़्रेश करें", + "columns": "कॉलम", + "loadingProxyLogs": "प्रॉक्सी लॉग लोड हो रहे हैं...", + "noProxyLogs": "अभी तक कोई प्रॉक्सी लॉग नहीं है। प्रॉक्सी कॉन्फ़िगर करें और उन्हें यहाँ देखने के लिए API कॉल करें।", + "noMatchingLogs": "कोई भी लॉग मौजूदा फ़िल्टर से मेल नहीं खाता।", + "tlsFingerprint": "Chrome 124 TLS फ़िंगरप्रिंट", "colPublicIp": "सार्वजनिक IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "वाक्", + "search": "खोज", + "images": "छवियाँ", + "chat": "चैट", + "music": "संगीत", + "responses": "प्रतिक्रियाएँ", + "rerank": "पुनः रैंकिंग", + "video": "वीडियो", + "embeddings": "एम्बेडिंग्स", + "transcription": "प्रतिलेखन" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "रनटाइम", + "description": "रीयल-टाइम अवलोकनीयता — 3-स्तरीय लचीलापन + सत्र + कोटा अलर्ट", + "pause": "रोकें", + "resume": "जारी रखें", + "refreshNow": "अभी रीफ़्रेश करें", + "kpiSessions": "सत्र", + "kpiCircuits": "सर्किट", + "kpiCooldowns": "कूलडाउन", + "kpiLockouts": "लॉकआउट", + "hintStickyBound": "{count} स्टिकी-बाउंड", + "hintRecovering": "{count} रिकवर हो रहे हैं", + "hintAllHealthy": "सभी स्वस्थ", + "hintOpen": "खुले", + "hintConnsCooling": "कनेक्शन कूलडाउन में", + "hintModelsBlocked": "मॉडल ब्लॉक हैं", + "resilienceTitle": "3-स्तरीय रेज़िलिएंस", + "resilienceSubtitle": "दस्तावेज़ीकृत रेज़िलिएंस मॉडल को प्रतिबिंबित करता है", + "providersHealthy": "{percent}% प्रदाता स्वस्थ हैं", + "layer": "स्तर {n}", + "layer1Title": "प्रदाता सर्किट ब्रेकर", + "layer1Desc": "अपस्ट्रीम स्तर पर विफल हो रहे प्रदाताओं को ट्रैफ़िक भेजना रोकें", + "layer2Title": "कनेक्शन कूलडाउन", + "layer2Desc": "एक खराब अकाउंट/कुंजी को छोड़ें; अन्य कनेक्शन सेवा जारी रखेंगे", + "layer3Title": "मॉडल लॉकआउट", + "layer3Desc": "प्रति-मॉडल दर-सीमा लॉक; वही कनेक्शन अन्य मॉडलों को सेवा देना जारी रखेगा", + "badgeAffectedOf": "{total} में से {affected} प्रभावित", + "badgeCooling": "{count} कूलडाउन में", + "badgeLocked": "{count} लॉक हैं", + "emptyCircuits": "अभी कोई सर्किट ब्रेकर सक्रिय नहीं है", + "emptyCooldowns": "कोई कनेक्शन कूलडाउन सक्रिय नहीं है", + "emptyLockouts": "कोई मॉडल लॉकआउट नहीं", + "moreCooldowns": "+{count} और कूलडाउन", + "moreLockouts": "+{count} और लॉकआउट", + "feedTitle": "लाइव फ़ीड", + "feedSubtitle": "पिछले {count} इवेंट", + "feedFilterAll": "सभी", + "feedFilterCircuits": "सर्किट", + "feedFilterCooldowns": "कूलडाउन", + "feedFilterLockouts": "लॉकआउट", + "feedFilterSessions": "सेशन", + "feedFilterQuotas": "कोटा", + "feedClear": "साफ़ करें", + "feedEmptyWaiting": "इवेंट की प्रतीक्षा हो रही है... (हर 5 सेकंड में पोल किया जाता है)", + "feedEmptyFiltered": "कोई इवेंट इस फ़िल्टर से मेल नहीं खाता", + "sessionsTitle": "सक्रिय सेशन", + "sessionsSubtitle": "स्टिकी-बाउंड अनुरोध फ़िंगरप्रिंट (लाइव)", + "sessionsActive": "{count} सक्रिय", + "sessionsEmptyTitle": "कोई सक्रिय सत्र नहीं", + "sessionsEmptyHint": "प्रॉक्सी से अनुरोध प्रवाहित होने पर सत्र यहाँ दिखाई देंगे", + "tblSession": "सत्र", + "tblAge": "अवधि", + "tblIdle": "निष्क्रिय", + "tblReqs": "अनुरोध", + "tblBoundTo": "इससे संबद्ध", + "topApiKeys": "शीर्ष API कुंजियाँ", + "quotaMonitorsTitle": "कोटा मॉनिटर", + "quotaMonitorsSubtitle": "प्रत्येक खाता विंडो की लाइव कोटा स्थिति", + "openQuota": "कोटा खोलें", + "allQuotasHealthy": "सभी कोटा स्वस्थ हैं", + "statusExhausted": "समाप्त", + "statusAlerting": "चेतावनी जारी", + "statusError": "त्रुटि", + "moreSuffix": "+{count} और" }, "quotaShare": { "weightPercent": "भार %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "कोटा साझाकरण", + "description": "% सीमाओं के साथ API कुंजियों के बीच प्रदाता कोटा साझा करें", + "newPool": "नया पूल", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "कॉन्फ़िगरेशन localStorage में सहेजा गया है (अभी तक सर्वर पर स्थायी रूप से संग्रहीत नहीं किया गया है)। प्रति-अनुरोध सीमा प्रवर्तन अभी तक प्रॉक्सी पाइपलाइन से जुड़ा नहीं है। यह स्क्रीन आपको कोटा विभाजन डिज़ाइन करने और देखने की सुविधा देती है; वास्तविक प्रवर्तन DB में स्थायी संग्रहण और अपस्ट्रीम कॉल इंटरसेप्शन के साथ भविष्य के संस्करण में उपलब्ध होगा।", + "kpiActivePools": "सक्रिय पूल", + "kpiKeysAllocated": "आवंटित कुंजियाँ", + "kpiAvgUnallocated": "औसत अनावंटित", + "kpiProvidersWithQuota": "कोटा वाले प्रदाता", + "emptyTitle": "कोई पूल कॉन्फ़िगर नहीं किया गया", + "emptyDescription": "% आवंटनों के साथ किसी प्रदाता की कोटा विंडो साझा करने हेतु API कुंजियाँ निर्दिष्ट करने के लिए एक पूल बनाएँ।", + "loading": "लोड हो रहा है…", + "removePool": "पूल हटाएँ", + "removeConfirm": "यह पूल हटाएँ?", + "pool": "पूल", + "used": "उपयोग किया गया", + "allocationsCount": "आवंटन ({count})", + "allocatedFree": "{allocated}% आवंटित · {free}% उपलब्ध", + "noAllocations": "अभी तक कोई कुंजी आवंटित नहीं की गई", + "capLabel": "सीमा {value}", + "notTrackedYet": "(अभी तक ट्रैक नहीं किया गया)", + "policy": "नीति", "apiKeyColumn": "API कुंजी", "weightColumn": "भार", "fairShareShort": "निष्पक्ष", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "कठोर", + "policySoft": "लचीली", + "policyBurst": "अतिरिक्त उपयोग", + "policyHardHint": "कुंजी का आवंटन समाप्त होने पर ब्लॉक करें", + "policySoftHint": "ओवरफ़्लो की अनुमति दें, केवल अलर्ट करें", + "policyBurstHint": "फ़्री पूल में बर्स्ट की अनुमति दें", + "editAllocations": "आवंटन संपादित करें", + "newPoolTitle": "नया कोटा पूल", + "providerConnection": "प्रदाता कनेक्शन (खाता)", + "selectConnection": "एक कनेक्शन चुनें…", + "noEligibleConnections": "कोटा डेटा वाला कोई कनेक्शन नहीं है। पहले /dashboard/quota से रीफ़्रेश करें।", + "quotaWindow": "कोटा अवधि", + "selectWindow": "एक अवधि चुनें…", + "alreadyUsedSuffix": "(पहले से उपयोग किया गया)", + "windowReset": "रीसेट करें", + "duplicatePoolError": "इस कनेक्शन + अवधि के लिए एक पूल पहले से मौजूद है", + "cancel": "रद्द करें", + "createPool": "पूल बनाएँ", + "editTitle": "आवंटन संपादित करें", + "noKeysAdded": "कोई कुंजी आवंटित नहीं है। नीचे एक जोड़ें।", + "totalLabel": "कुल: {percent}%", + "totalExceeded": "⚠ 100% से अधिक", + "addKey": "+ कुंजी जोड़ें…", + "equalSplit": "समान विभाजन", + "save": "आवंटन सहेजें", "betaPreviewLabel": "बीटा - यूआई पूर्वावलोकन।", "betaConfigSavedPrefix": "कॉन्फ़िगरेशन सहेजा गया है", "betaConfigSavedSuffix": "(सर्वर पर अभी तक कायम नहीं है)। प्रति-अनुरोध सीमा प्रवर्तन को अभी तक प्रॉक्सी पाइपलाइन में शामिल नहीं किया गया है। यह स्क्रीन आपको कोटा विभाजन को डिज़ाइन और विज़ुअलाइज़ करने देती है; वास्तविक प्रवर्तन डीबी दृढ़ता और अपस्ट्रीम कॉल इंटरसेप्शन के साथ भविष्य में पुनरावृत्ति में आएगा।", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "इस समूह में अभी भी पूल हैं — पहले उन्हें पुन: असाइन करें या हटाएं।", "ungroupedTitle": "बिना समूह वाले", "ungroupedHint": "ये पूल किसी ज्ञात समूह को असाइन नहीं किए गए हैं। किसी पूल को वास्तविक समूह में ले जाने के लिए उसे संपादित करें।", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "इस पूल को हटाया नहीं जा सका।", + "dismiss": "खारिज करें" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "प्लगइन", + "description": "OmniRoute की कार्यक्षमता बढ़ाने के लिए प्लगइन इंस्टॉल और प्रबंधित करें", + "loading": "प्लगइन लोड हो रहे हैं...", + "scanning": "स्कैन किया जा रहा है...", + "scanForPlugins": "प्लगइन के लिए स्कैन करें", + "noPlugins": "कोई प्लगइन इंस्टॉल नहीं है", + "noPluginsDescription": "प्लगइन डायरेक्टरी ~/.omniroute/plugins/ में रखें और स्कैन पर क्लिक करें।", + "activate": "सक्रिय करें", + "deactivate": "निष्क्रिय करें", + "uninstall": "अनइंस्टॉल करें", + "uninstallConfirm": "प्लगइन \"{name}\" को अनइंस्टॉल करें?", + "pluginScanComplete": "प्लगइन स्कैन पूर्ण हुआ", + "pluginScanFailed": "प्लगइन स्कैन विफल रहा", + "activated": "{name} सक्रिय किया गया", + "deactivated": "{name} निष्क्रिय किया गया", + "activateFailed": "{name} को सक्रिय करने में विफल", + "deactivateFailed": "{name} को निष्क्रिय करने में विफल", + "uninstalled": "{name} अनइंस्टॉल किया गया", + "uninstallFailed": "{name} को अनइंस्टॉल करने में विफल", + "configure": "कॉन्फ़िगर करें: {name}", + "configurePlugin": "कॉन्फ़िगर करें", + "noConfigSettings": "इस प्लगइन में कॉन्फ़िगर करने योग्य कोई सेटिंग नहीं है।", + "saving": "सहेजा जा रहा है...", + "saveConfiguration": "कॉन्फ़िगरेशन सहेजें", + "configurationSaved": "कॉन्फ़िगरेशन सहेजा गया", + "saveConfigurationFailed": "कॉन्फ़िगरेशन सहेजने में विफल", + "pluginNotFound": "प्लगइन नहीं मिला", + "version": "संस्करण", + "author": "लेखक", + "description_label": "विवरण", + "status": "स्थिति", + "enabled": "सक्षम", + "disabled": "अक्षम", "installedTab": "इंस्टॉल किया गया", "marketplaceTab": "मार्केटप्लेस", "marketplaceUrlLabel": "कस्टम मार्केटप्लेस URL", @@ -11729,7 +11736,7 @@ "verified": "सत्यापित", "install": "इंस्टॉल करें", "installedFromMarketplace": "प्लगइन {name} इंस्टॉल हो गया!", - "hooks": "Hooks" + "hooks": "हुक" }, "quotaPlans": { "title": "योजनाएं और कोटा", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP एजेंट्स", "phrase": "CLIs जिन्हें OmniRoute निष्पादन बैकएंड (रिवर्स फ़्लो) के रूप में स्पॉन करता है", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "अधिकांश उपयोगकर्ता इसे अनदेखा कर सकते हैं — इसका उपयोग केवल तभी करें जब किसी एकीकरण को इसकी आवश्यकता हो।", "flow": "क्लाइंट → OmniRoute → spawn CLI (stdio/ACP) → प्रतिक्रिया", "seeOther": "देखें →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "Omni द्वारा बैकएंड के रूप में उपयोग किया जाने वाला CLI", "desc": "रिवर्स निष्पादन", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → CLI शुरू करें → प्रतिक्रिया", "examples": "उदा.: claude, codex (ACP)" } }, @@ -12233,8 +12240,8 @@ "category": "प्रकार", "detectionStatus": "डिटेक्शन", "configStatus": "कॉन्फ़िगरेशन", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "बेस URL", + "apiKeyLabel": "API कुंजी", "modelMappingLabel": "मॉडल मैपिंग", "noActiveProviders": "कोई सक्रिय प्रदाता नहीं हैं।", "noActiveProvidersDesc": "CLI को कॉन्फ़िगर करने से पहले कम से कम 1 प्रदाता को कनेक्ट करने के लिए Providers पर जाएं।", @@ -12246,7 +12253,7 @@ "pageSubtitle": "OmniRoute की ओर पॉइंट करने वाले कोड टूल्स", "searchPlaceholder": "CLI खोजें…", "filterDetectionLabel": "डिटेक्शन", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "बेस URL", "detectionAll": "सभी", "detectionInstalled": "इंस्टॉल किया गया", "detectionNotFound": "नहीं मिला", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "वेबहुक", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "वेबहुक एंडपॉइंट पंजीकृत करें, सूचीबद्ध करें, जाँचें और हटाएँ। इवेंट सदस्यताएँ (request.completed, request.failed, quota.exceeded आदि) कॉन्फ़िगर करें और डिलीवरी के पुनः प्रयास प्रबंधित करें।" }, "omni-mcp": { "name": "MCP सर्वर", @@ -12390,47 +12397,47 @@ "description": "कोर OpenAI-संगत इन्फरेंस एंडपॉइंट्स: चैट कम्प्लीशन्स, एम्बेडिंग्स, इमेजेस, ऑडियो (TTS/STT), मॉडरेशन्स, रीरैंक और Responses API। AI एजेंटों के लिए प्राथमिक इंटीग्रेशन सरफेस।" }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: सर्व करें", "description": "CLI से OmniRoute सर्वर को स्टार्ट, स्टॉप और रीस्टार्ट करें। डेमन मोड, पोर्ट कॉन्फ़िगरेशन, ऑटो-रिकवरी, सिस्टम ट्रे इंटीग्रेशन और डैशबोर्ड ओपन शॉर्टकट को प्रबंधित करें।" }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: स्वास्थ्य", "description": "CLI से सर्वर हेल्थ, कंपोनेंट स्टेटस और लाइव मैट्रिक्स की जांच करें। सर्किट ब्रेकर्स और प्रोवाइडर स्टेटस के रियल-टाइम डैशबोर्ड के लिए `health`, `health components`, और `health watch` चलाएं।" }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: प्रदाता", "description": "CLI से प्रोवाइडर कनेक्शन प्रबंधित करें: उपलब्ध/कॉन्फ़िगर किए गए प्रोवाइडर्स को सूचीबद्ध करें, add, test, test-all, validate करें, API कीज़ को रोटेट करें, और प्रति-प्रोवाइडर मैट्रिक्स देखें।" }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: API कुंजियाँ", "description": "CLI से OmniRoute API कीज़ बनाएं, सूचीबद्ध करें, रोटेट करें और रिवोक करें। प्रोवाइडर ऑथेंटिकेशन के लिए OAuth फ़्लो प्रबंधित करें और की स्कोप व एक्सपायरी का निरीक्षण करें।" }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: मॉडल", "description": "CLI से उपलब्ध AI मॉडल्स को क्वेरी करें, मॉडल एलियास सूचीबद्ध करें, और संपूर्ण मॉडल कैटलॉग ब्राउज़ करें। प्रोवाइडर द्वारा फ़िल्टर करें, क्षमता द्वारा खोजें, और मॉडल नाम वेरिएंट्स को रिज़ॉल्व करें।" }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: चैट", "description": "CLI से चैट कम्प्लीशन्स भेजें, रिस्पॉन्स स्ट्रीम करें, और एक इंटरैक्टिव REPL सेशन शुरू करें। सभी OmniRoute प्रोवाइडर्स, कॉम्बो राउटिंग और सिस्टम प्रॉम्प्ट कॉन्फ़िगरेशन का समर्थन करता है।" }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: रूटिंग और कॉम्बो", "description": "CLI से राउटिंग कॉम्बो बनाएं, सूचीबद्ध करें, अपडेट करें और डिलीट करें। राउटिंग रणनीतियों का परीक्षण करें, कॉम्बो मैट्रिक्स का निरीक्षण करें, और इंटरैक्टिव रूप से फ़ॉलबैक चेन कॉन्फ़िगर करें।" }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: लचीलापन और कोटा", "description": "CLI से सर्किट-ब्रेकर स्टेट्स, कनेक्शन कूलडाउन, कोटा लिमिट्स और बैकऑफ़ लेवल्स का निरीक्षण और प्रबंधन करें। अटके हुए प्रोवाइडर्स को रीसेट करें और रेजिलिएंस थ्रेशोल्ड कॉन्फ़िगर करें।" }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: संपीड़न", "description": "CLI से प्रॉम्प्ट कम्प्रेशन को कॉन्फ़िगर और टेस्ट करें। RTK फ़िल्टर्स, Caveman रूल्स, स्टैक्ड कम्प्रेशन मोड्स को प्रबंधित करें, और वास्तविक प्रॉम्प्ट्स के साथ कम्प्रेशन आउटपुट का पूर्वावलोकन करें।" }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: कॉन्टेक्स्ट और सेशन", "description": "CLI से कॉन्टेक्स्ट इंजीनियरिंग कॉन्फ़िगरेशन, RTK फ़िल्टर सेट्स और कन्वर्सेशन सेशन्स को प्रबंधित करें। कॉन्टेक्स्ट-रिले सेटिंग्स लागू करें और सक्रिय कॉन्टेक्स्ट पाइपलाइनों का निरीक्षण करें।" }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: लागत और उपयोग", "description": "CLI से कॉस्ट ब्रेकडाउन, टोकन यूसेज और कॉल लॉग्स देखें। प्रोवाइडर, मॉडल या डेट रेंज द्वारा फ़िल्टर करें। यूसेज रिपोर्ट्स एक्सपोर्ट करें और प्रति-कनेक्शन खर्च का निरीक्षण करें।" }, "cli-mcp": { @@ -12589,14 +12596,14 @@ "typeApikey": "API की", "sortTypeFirst": "सबसे आसान पहले", "sortTypeFirstHelp": "साइनअप प्रयास के आधार पर समूहीकृत करें (कोई साइनअप नहीं → OAuth लॉगिन → API की), प्रत्येक समूह के भीतर गुणवत्ता क्रम बनाए रखते हुए", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "सबसे विश्वसनीय पहले", + "sortByReliabilityHelp": "चुनी गई समयावधि में सफल हुई कॉल के अनुपात के अनुसार प्रदाताओं को क्रमबद्ध करें। जिन प्रदाताओं के लिए दर बताने हेतु पर्याप्त कॉल नहीं हैं, वे मापे गए प्रदाताओं के नीचे अपने स्कोर का क्रम बनाए रखते हैं।", "typeLegend": "कोई साइनअप नहीं = शून्य सेटअप · OAuth लॉगिन = अपने स्वयं के खाते से साइन इन करें · API की = अपनी खुद की की लाएं या उस प्रदाता के फ्री टियर का उपयोग करें", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "विश्वसनीयता", + "colReliabilityHelp": "पिछले 24 घंटों में इस प्रदाता द्वारा वास्तव में उत्तर दी गई कॉल का अनुपात। डैश का अर्थ है कि दर बताने के लिए इसने बहुत कम ट्रैफ़िक संभाला।", + "reliabilitySample": "पिछले {hours}h में {requests} में से {successes} कॉल सफल रहीं", + "reliabilityTooFew": "पिछले {hours}h में केवल {requests} कॉल — दर बताने के लिए बहुत कम", + "reliabilityNoTraffic": "पिछले 24h में कोई कॉल दर्ज नहीं हुई" }, "discovery": { "title": "प्रदाता खोज", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar समर्थक", + "description": "लाइव OmniRoute Radar समर्थक फ़ीड सत्यापित की गई", + "criteria": "हस्ताक्षरित लाइव Radar समर्थक फ़ीड सत्यापित करें।" }, "first-token": { "name": "पहला टोकन", @@ -12948,8 +12955,8 @@ "description": "प्रत्येक संगतता नोड के लिए एकाधिक कनेक्शन की अनुमति दें।" }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "कॉन्टेक्स्ट विंडो जाँच अक्षम करें", + "description": "प्रत्यक्ष एकल-मॉडल अनुरोधों के लिए OmniRoute की स्थानीय कॉन्टेक्स्ट-विंडो और अधिकतम-इनपुट-टोकन जाँच को छोड़ दें। अपस्ट्रीम प्रदाता अब भी अपनी वास्तविक सीमाएँ लागू करते हैं। प्रॉम्प्ट संपीड़न और आउटपुट-टोकन सीमाएँ सक्रिय रहती हैं।" }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "ग्राहकों को अग्रेषित करने से पहले Responses API पासथ्रू स्ट्रीम से आंतरिक टिप्पणी-चरण आउटपुट आइटम हटा दें। कच्चे अपस्ट्रीम कमेंट्री प्राप्त करने के लिए इस फ़्लैग को अक्षम करें।" @@ -12985,7 +12992,7 @@ "description": "बाइट्स पहले से ही क्लाइंट तक पहुँचने के बाद प्रतिक्रिया का फिर से अनुरोध करने और उसे जोड़ने के लिए स्ट्रीम रिकवरी की अनुमति दें।" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "मिड-स्ट्रीम निरंतरता को टूल-कॉल के लिए सुरक्षित बनाएँ: टूल कॉल भेजे जाने के बाद कट चुकी स्ट्रीम को कभी फिर से शुरू न करें (चाहे वह अभी जारी हो या पहले ही पूरी हो चुकी हो), और पूरे पुनः-प्रयास बजट का उपयोग करने के बजाय एक खाली निरंतरता के बाद रुक जाएँ।" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "जब स्ट्रीम कोई उपयोगी फ़्रेम भेजे बिना बंद हो जाए और उसी कनेक्शन पर सीमित पुनःप्रयास समाप्त हो जाए, तब एक बार सहोदर कनेक्शन पर फ़ेलओवर करें। उपयोग योग्य सहोदर कनेक्शन न होने पर मूल early-EOF त्रुटि लौटाई जाती है। बंद: पुनःप्रयास के बाद early-EOF अंतिम रहता है।" @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "स्किल्स सैंडबॉक्स में नेटवर्क एक्सेस सक्षम करें।" }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "सर्वर-स्वामित्व वाला टूल लूप", + "description": "गैर-स्ट्रीमिंग सर्वर-स्वामित्व वाली टूल कॉल तब तक जारी रखें, जब तक मॉडल क्लाइंट द्वारा उपयोग योग्य प्रतिक्रिया न दे।" + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After का स्रोत", + "description": "समेकित 429/503 अनुपलब्धता प्रतिक्रियाओं में, भविष्य में पुनः प्रयास का कोई ठोस समय ज्ञात न होने पर कृत्रिम 1s भेजने के बजाय Retry-After को छोड़ दें, error.retry_after_provenance जोड़ें, और कॉम्बो ड्रेन पाथ पर गद्य रूप में दिए गए पुनः-प्रयास संकेत पढ़ें।" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "संरक्षित-प्राथमिकता वाले इंफ्रा स्टॉप को 502 के रूप में दिखाएँ", + "description": "जब केवल-कोटा-फ़ॉलबैक वाला प्राथमिकता लक्ष्य किसी ऐसे कारण से कॉम्बो को रोकता है जो प्रमाणित रूप से कोटा से संबंधित नहीं है—जैसे खुला प्रोवाइडर सर्किट ब्रेकर या पूर्वानुमानित विलंबता के कारण स्किप—तो 503 के बजाय 502 उत्तर दें।" } } }, @@ -13171,7 +13182,7 @@ "segmentHint": "प्रत्येक सेगमेंट = एक मुफ़्त पूल · पूल-डीडुप्लिकेटेड, सटीक गणना (कोई बढ़ी हुई रेट-लिमिट सीमा नहीं)।", "boost": "एकमुश्त $10 OpenRouter टॉप-अप के साथ ~{tokens} अधिक/माह अनलॉक करें (50 → 1000 req/day)", "uncapped": "स्थायी रूप से मुफ़्त, कोई प्रकाशित सीमा नहीं (रेट-लिमिटेड) — वास्तविक एक्सेस, हेडलाइन में नहीं गिना गया:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "क्षेत्रीय पहचान जाँच (जैसे मुख्यभूमि चीन में वास्तविक-नाम सत्यापन) के बाद लगभग {tokens}/mo अतिरिक्त — यह वास्तविक कोटा है, मुख्य आँकड़े में शामिल नहीं:", "tosRestricted": "{count, plural, one {# मॉडल} other {# मॉडल}} ToS-प्रतिबंधित के रूप में चिह्नित — आप तय करें", "provider": "प्रदाता", "model": "मॉडल", @@ -13270,80 +13281,80 @@ "viewFullHistory": "GitHub पर पूरा इतिहास देखें" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "रीज़निंग रूटिंग नीतियाँ", + "apiKeyTitle": "इस API कुंजी के लिए रीज़निंग रूटिंग", + "subtitle": "क्लाइंट समर्थन की आवश्यकता के बिना मॉडल और रीज़निंग प्रयास को फिर से रूट करें। कोई नियम मेल न खाने पर अनुरोध अपरिवर्तित रहते हैं।", + "loadError": "रीज़निंग नियम लोड नहीं किए जा सके।", + "saveError": "नियम अमान्य है या सहेजा नहीं जा सका।", + "saved": "रीज़निंग नियम सहेजा गया।", + "deleteConfirm": "क्या यह रीज़निंग नियम हटाना है?", + "deleteError": "रीज़निंग नियम हटाया नहीं जा सका।", + "empty": "कोई मेल खाता रीज़निंग नियम कॉन्फ़िगर नहीं किया गया है।", + "all": "सभी", + "any": "कोई भी", + "enabled": "सक्षम", + "disabled": "अक्षम", + "filterSearch": "नियम खोजें", + "filterScope": "दायरे के अनुसार फ़िल्टर करें", + "filterStatus": "स्थिति के अनुसार फ़िल्टर करें", + "allModels": "सभी मॉडल", + "keepModel": "मॉडल बनाए रखें", + "otherModel": "अन्य मॉडल", + "combo": "कॉम्बो", + "priorityShort": "प्राथमिकता {value}", + "toggleAria": "{name} सक्षम करें", + "edit": "संपादित करें", + "delete": "हटाएँ", + "name": "नाम", + "description": "विवरण", + "scopeLabel": "दायरा", + "apiKey": "API कुंजी", + "sourceCombo": "स्रोत कॉम्बो", + "connection": "कनेक्शन", + "sourceModel": "स्रोत मॉडल या वाइल्डकार्ड", + "sourceModelOptional": "रिक्त = सभी मॉडल", + "sourceModelExample": "उदा. gpt-5*", + "sourceEffort": "स्रोत प्रयास", + "missing": "निर्दिष्ट नहीं", + "signalOnly": "गैर-विविक्त रीजनिंग संकेत", + "requestTags": "अनुरोध टैग", + "requestTagsExample": "कोडिंग, आंतरिक", + "tagMode": "टैग मिलान", + "effortMode": "प्रयास मोड", + "targetEffort": "लक्षित प्रयास", + "routingTarget": "रूटिंग लक्ष्य", + "targetModel": "लक्षित मॉडल", + "targetCombo": "लक्षित कॉम्बो", + "budgetAction": "थिंकिंग बजट", + "budgetTokens": "बजट टोकन", + "priority": "प्राथमिकता", + "saveChanges": "परिवर्तन सहेजें", + "add": "नियम जोड़ें", + "cancel": "रद्द करें", + "simulateTitle": "नियम का अनुकरण करें", + "model": "मॉडल", + "effort": "प्रयास", + "transport": "ट्रांसपोर्ट", + "simulate": "अपस्ट्रीम के बिना सिम्युलेट करें", + "extendedComboWarning": "रूटिंग के दौरान प्रत्येक कॉम्बो लक्ष्य के लिए Max/Ultra को अलग से सत्यापित किया जाता है।", + "extendedUnknownWarning": "Max/Ultra समर्थन सत्यापित करने के लिए एक लक्ष्य मॉडल दर्ज करें।", + "extendedUnsupportedWarning": "Max/Ultra का समर्थन केवल उपयुक्त Codex GPT-5.6 मॉडल में ही ज्ञात है। अज्ञात कस्टम मॉडल को सर्वर चेतावनी के साथ स्वीकार करता है।", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "वैश्विक", + "apiKey": "API कुंजी", + "combo": "कॉम्बो", + "model": "मॉडल", + "connection": "कनेक्शन" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "क्लाइंट से इनहेरिट करें", + "default": "डिफ़ॉल्ट का उपयोग करें", + "force": "बलपूर्वक लागू करें" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "बनाए रखें", + "remove": "हटाएँ", + "set": "निश्चित मान सेट करें" } }, "chaosConfig": { @@ -13425,91 +13436,91 @@ "tierCommunity": "समुदाय (30-दिन की देरी)", "activateTitle": "रडार सक्रिय करें", "activateDescription": "रडार मुफ्त मॉडल कैटलॉग को समुदाय-स्रोत बुद्धिमत्ता से समृद्ध करता है - अद्यतन मॉडल उपलब्धता, कोटा, और सेटअप गाइड।", + "accessScaleTitle": "सक्रिय करने से पहले Radar एक्सेस को समझें", + "accessScaleIntro": "आपकी सहमति देने तक Radar नेटवर्क पर निष्क्रिय रहता है। इन नियमों की समीक्षा करने के बाद Community एक्सेस चुनें या व्यक्तिगत supporter कुंजी सक्रिय करें।", + "accessCommunityRule": "Community — किसी कुंजी की आवश्यकता नहीं: 30 दिनों की देरी के साथ संपूर्ण कैटलॉग।", + "accessSingleUseRule": "Star + follow — GitHub OAuth द्वारा दोनों को सत्यापित करने के बाद, आपके GitHub खाते को लाइव कैटलॉग पढ़ने का एक अवसर मिलता है; फिर एक्सेस वापस Community पर आ जाता है। उस खाते के लिए यह एकबारगी एक्सेस दोबारा जारी नहीं किया जा सकता।", + "accessContributorRule": "योगदानकर्ता — मर्ज किए गए PR, कमिट और लाइनें केवल साप्ताहिक रैंकिंग का क्रम निर्धारित करती हैं। शीर्ष 10 को 365 दिन मिलते हैं; रैंक 11–100 को 90 दिन मिलते हैं; शीर्ष 100 से बाहर के योगदानकर्ताओं को PR की संख्या चाहे जितनी हो, कोई अवधि नहीं मिलती। रैंकिंग से बाहर होने पर पहले से मिली अवधि कभी कम नहीं होती।", + "accessSupporterRule": "समर्थक — एकमुश्त खरीदारी से बिना स्वचालित नवीनीकरण के 6 महीने, 1 वर्ष या आजीवन एक्सेस मिलता है। खरीदारी, दान, योगदानकर्ता अवधियाँ और मैन्युअल रूप से दी गई अवधियाँ जुड़ती जाती हैं; आजीवन एक्सेस हमेशा सर्वोपरि होता है।", + "accessUseTitle": "व्यक्तिगत उपयोग, पुनर्प्राप्ति और समीक्षा", + "accessInstallationRule": "व्यक्तिगत लाइसेंस — कुंजी का उपयोग एक समय में केवल एक सक्रिय इंस्टॉलेशन पर करें। OmniRoute हार्डवेयर का फ़िंगरप्रिंट नहीं बनाता। पुनर्प्राप्ति से खोई हुई कुंजी रद्द होकर बदल दी जाती है और उसकी समाप्ति तिथि रीसेट नहीं होती।", + "accessAbuseRule": "दुरुपयोग समीक्षा — 24 घंटों में चौथा अलग IP केवल मैन्युअल समीक्षा का फ़्लैग बनाता है; यह कभी भी किसी कुंजी को स्वचालित रूप से ब्लॉक या रद्द नहीं करता।", + "accessOffersRule": "लाइव ऑफ़र मैन्युअल रूप से चुने जाते हैं और बदल या समाप्त हो सकते हैं।", + "privacyTitle": "Radar किन चीज़ों का आदान-प्रदान करता है", + "privacyDownloadsRule": "डाउनलोड — आपके इंस्टॉलेशन को क्रिप्टोग्राफ़िक रूप से हस्ताक्षरित कैटलॉग और रेफ़रल मेटाडेटा मिलता है; एक मान्य लाइव कुंजी हस्ताक्षरित ऑफ़र और Intel को भी अनलॉक करती है।", + "privacySendsRule": "भेजा जाने वाला डेटा — सर्वर-साइड सिंक supporter कुंजी को Bearer टोकन के रूप में भेजता है, और HTTPS इंफ़्रास्ट्रक्चर को कनेक्शन IP प्राप्त होता है। फ़ीड अनुरोधों के लेखांकन में दोनों में से कोई भी मान कच्चे रूप में संग्रहीत नहीं होता: यह दुरुपयोग समीक्षा के लिए कुंजी हैश, समेकित उपयोग और प्रतिदिन बदलने वाला संक्षिप्त IP HMAC रखता है।", + "privacyNeverRule": "कभी एकत्र नहीं किया जाता — प्रॉम्प्ट, प्रतिक्रियाएँ, वार्तालाप, प्रदाता क्रेडेंशियल, मॉडल ट्रैफ़िक, अपटाइम, विलंबता और स्थानीय प्रदाता कॉन्फ़िगरेशन कभी भी Radar को नहीं भेजे जाते।", "activateButton": "सक्रिय करें", "activating": "सक्रिय किया जा रहा है...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", + "keySectionTitle": "क्या आपके पास पहले से supporter कुंजी है?", + "keyInvalidFormatError": "कुंजी का प्रारूप अमान्य है। इसे \"omr_\" से शुरू होना चाहिए, जिसके बाद 40 हेक्स वर्ण हों।", + "activateWithKeyButton": "supporter सक्रिय करें", + "changeKeyButton": "कुंजी बदलें", + "claimSectionTitle": "क्या आपके पास अभी तक supporter कुंजी नहीं है?", + "contributorButton": "मैं एक योगदानकर्ता हूँ", + "contributorHint": "GitHub OAuth वर्तमान साप्ताहिक रैंकिंग की जाँच करता है: शीर्ष 10 को 365 दिन और रैंक 11–100 को 90 दिन मिलते हैं। केवल PR की संख्या से शीर्ष 100 के बाहर कभी एक्सेस नहीं मिलता।", + "supporterButton": "प्रोजेक्ट का समर्थन करें", "supporterHint": "Support OmniRoute to get a supporter key with the live catalog and extra perks.", "colProvider": "प्रदाता", "colModel": "मॉडल", "colQuota": "कोटा", + "colLimits": "दर सीमाएँ", + "trainsOnPrompts": "प्रॉम्प्ट पर प्रशिक्षण देता है", + "trainsOnPromptsHelp": "इस प्रदाता की शर्तों के अनुसार, यह आपके भेजे गए प्रॉम्प्ट पर प्रशिक्षण कर सकता है। जिन मॉडल पर यह बैज नहीं है, वे या तो ऐसा न करने की बात कहते हैं, या इसे दस्तावेज़ित नहीं करते — कथन का न होना कोई गारंटी नहीं है।", + "limitsUnknownHelp": "सीमाएँ केवल Radar फ़ीड द्वारा रिपोर्ट की गई हैं; इस प्रविष्टि के लिए कोई प्रकाशित सीमा नहीं है", + "contextUnknownHelp": "इस प्रविष्टि के लिए कॉन्टेक्स्ट विंडो अज्ञात है", + "capabilityUnknownHelp": "फ़ीड द्वारा क्षमता रिपोर्ट नहीं की गई", "colContext": "संदर्भ", "colCapabilities": "क्षमताएँ", "colTos": "ToS जोखिम", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "नया", "setupGuide": "सेटअप गाइड", "disabledByFeed": "रडार फीड द्वारा अक्षम", "capTools": "उपकरण", "capVision": "दृष्टि", "capThinking": "सोच", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "कैटलॉग", + "freeCreditsTab": "मुफ़्त क्रेडिट", + "freeCreditsSubtitle": "Radar द्वारा ट्रैक किए गए प्रदाताओं के रेफ़रल लिंक — इनके उपयोग से आपको कोई अतिरिक्त लागत नहीं आती और OmniRoute को सहयोग मिलता है।", + "fixedLinksEmpty": "अभी कोई रेफ़रल लिंक उपलब्ध नहीं है। अपडेट देखने के लिए Radar सिंक करें।", + "requiredActionLabel": "क्या करें:", + "claimButton": "क्रेडिट प्राप्त करें", + "campaignsTitle": "सीमित-अवधि के अभियान", + "campaignsEmpty": "अभी कोई सक्रिय अभियान नहीं है — बाद में फिर देखें।", + "campaignsUpsellCommunity": "सीमित-अवधि के अभियान समर्थकों के लिए अतिरिक्त सुविधा हैं। इस पेज के स्थायी लिंक में उपलब्ध सभी चीज़ें सभी के लिए मुफ़्त रहेंगी।", + "campaignsValidUntil": "{date} तक मान्य", + "colActions": "कार्रवाइयाँ", + "localBadge": "स्थानीय", + "editModel": "संपादित करें", + "saveModel": "सहेजें", + "cancelEdit": "रद्द करें", + "resetModel": "स्थानीय बदलाव रीसेट करें", + "hideModel": "छिपाएँ", + "restoreModel": "पुनर्स्थापित करें", + "hiddenModelsTitle": "छिपाए गए मॉडल", + "modelDisplayName": "स्थानीय प्रदर्शन नाम", + "modelEnabled": "स्थानीय रूप से सक्षम", + "localStateSaveFailed": "स्थानीय Radar सेटिंग सहेजने में विफल", + "guidedCombos": "निर्देशित कॉम्बो", + "offers": "ऑफ़र", + "intel": "जानकारी" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar निर्देशित कॉम्बो", + "subtitle": "Radar द्वारा चुने गए समकक्ष मुफ़्त मॉडल से प्राथमिकता फ़ॉलबैक बनाएँ।", + "backToRadar": "Radar पर वापस जाएँ", + "loading": "कॉम्बो सुझाव लोड हो रहे हैं...", + "familyLabel": "मॉडल परिवार", + "modelsLabel": "प्राथमिकता क्रम", + "strategyReason": "प्राथमिकता पहले सबसे बड़े आवर्ती मुफ़्त बजट का उपयोग करती है, फिर सक्रिय प्रदाताओं में फ़ॉलबैक करती है।", + "generateButton": "कॉम्बो जनरेट करें", + "generating": "जनरेट हो रहा है...", + "alreadyCreated": "पहले ही बनाया जा चुका है", + "created": "कॉम्बो बनाया गया", + "noSuggestions": "फ़िलहाल किसी भी योग्य मॉडल फ़ैमिली के कम-से-कम दो प्रदाताओं से सक्रिय कनेक्शन नहीं हैं।", + "catalogRequired": "क्यूरेट की गई मॉडल फ़ैमिली लोड करने के लिए पहले Radar कैटलॉग सिंक करें।", + "loadFailed": "Radar कॉम्बो सुझाव लोड नहीं किए जा सके।", + "createFailed": "कॉम्बो नहीं बनाया जा सका। अपने प्रदाता कनेक्शन की समीक्षा करें और फिर से कोशिश करें।" }, "radarSetupPage": { "title": "प्रदाता सेटअप", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "कनेक्शन रेज़िलिएंस", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "आपके कनेक्शन अपने-आप बहाल हो जाते हैं", + "reassuranceDetail": "आमतौर पर किसी कार्रवाई की आवश्यकता नहीं होती। विफलताओं के बाद OmniRoute किसी कनेक्शन को अस्थायी रूप से विराम देता है, फिर सुरक्षित रूप से उसे दोबारा आज़माता है।", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "अनुरोध भेजे जा सकते हैं", + "coolingDown": "जल्द ही फिर से कोशिश की जाएगी", + "lockedOut": "इस पर आपका ध्यान आवश्यक है" }, "table": { "status": "स्थिति", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "डिस्पैच से पहले अनुरोधों को अस्वीकार करें जब लक्षित मॉडल आवश्यक क्षमताओं (दृष्टि, उपकरण, संरचित आउटपुट, संदर्भ विंडो) से रहित हो। यह सीधे एकल-प्रदाता अनुरोधों की रक्षा करता है जो कॉम्बो-लेयर संगतता फ़िल्टर को बायपास करते हैं।", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "सीधे एकल-मॉडल अनुरोधों के लिए OmniRoute की स्थानीय कॉन्टेक्स्ट-विंडो और अधिकतम-इनपुट-टोकन जाँच को छोड़ें। अपस्ट्रीम प्रदाता अब भी अपनी वास्तविक सीमाएँ लागू करते हैं। प्रॉम्प्ट कम्प्रेशन और आउटपुट-टोकन सीमाएँ सक्रिय रहेंगी।", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "खोज के आँकड़े और हाल की खोजें केवल उन प्रदाताओं को गिनती हैं जिनका कनेक्शन अभी भी सक्रिय है (duckduckgo-free जैसे कुंजी-रहित प्रदाता हमेशा गिने जाते हैं)। बंद करने पर प्रदाता आईडी वाली प्रत्येक संधारित खोज पंक्ति रखी जाती है।", "publicSystem": { "notFound": { "title": "पृष्ठ नहीं मिला", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "रखरखाव जानकारी", "service": "सेवा", "unknown": "अज्ञात", - "notAvailable": "n/a", + "notAvailable": "लागू नहीं", "providersTracked": "प्रदाताओं को ट्रैक किया गया", "circuitBreakerState": "प्रदाता सर्किट ब्रेकर स्थिति", "lastUpdate": "अंतिम अपडेट: {timestamp}", @@ -13848,12 +13859,12 @@ "errorPopupClosed": "अधिकारिता विंडो को पूरा करने से पहले बंद कर दिया गया।", "errorAccessTokenRequired": "एक्सेस टोकन की आवश्यकता है।", "errorImportFailed": "आयात विफल हुआ", - "title": "Connect Trae SOLO", + "title": "Trae SOLO कनेक्ट करें", "authorizeDescription": "trae.ai के माध्यम से एक पॉपअप में अधिकृत करें। पॉपअप अपने आप बंद हो जाएगा जब टोकन आयात हो जाएगा।", "authorizeImportant": "महत्वपूर्ण: आपको पहले trae.ai में इस ब्राउज़र में लॉग इन होना चाहिए। अधिकृत पृष्ठ केवल एक मौजूदा सत्र की पुष्टि करता है — यह आपको साइन इन नहीं कर सकता। यदि आप \"लॉगिन विफल\" देखते हैं, तो \"Open solo.trae.ai\" पर क्लिक करें, साइन इन करें, फिर यहां लौटें।", "waitingForAuthorization": "trae.ai का इंतज़ार कर रहे हैं…", "authorizeWithBrowser": "ब्राउज़र के साथ अधिकृत करें", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai खोलें", "orPasteManually": "या एक टोकन मैन्युअल रूप से पेस्ट करें", "manualInstructions": "solo.trae.ai में साइन इन करें, DevTools → Network खोलें, कोई भी चैट संदेश भेजें, और Authorization: Cloud-IDE-JWT {tokenPlaceholder} अनुरोध हेडर से JWT कॉपी करें। JWT का जीवनकाल ~14 दिन है। वैकल्पिक पहचान फ़ील्ड उसी अनुरोध बॉडी में common_params से आते हैं।", "accessTokenLabel": "एक्सेस टोकन (क्लाउड-आईडीई-जेपीटी)", @@ -14070,11 +14081,11 @@ "actionApprove": "योजना स्वीकृत करें", "actionCancel": "रद्द करें", "actionSeeInGraph": "ग्राफ़ में देखें", + "actionRepeat": "दोहराएं", "actionDone": "कार्रवाई लागू की गई", "actionFailed": "कार्रवाई विफल: {error}", "detailFailed": "विवरण लोड करने में विफल: {error}", "mirroredInA2A": "A2A में प्रतिबिंबित", - "actionRepeat": "दोहराएं", "repeatConfirm": "पुष्टि के लिए फिर से क्लिक करें", "repeatDone": "नया रन बनाया गया", "repeatUnavailable": "मूल इनपुट उपलब्ध नहीं है" @@ -14088,57 +14099,57 @@ "networkError": "नेटवर्क त्रुटि — प्रदाता एक्सपोज़र सेटिंग अपडेट नहीं कर सका" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "समर्थक ऑफ़र", + "subtitle": "Radar से आधिकारिक छूट, क्रेडिट, परीक्षण और समीक्षा किए गए पार्टनर लाभ।", + "backToRadar": "Radar पर वापस जाएँ", + "loading": "ऑफ़र लोड हो रहे हैं...", + "refresh": "ऑफ़र रीफ़्रेश करें", + "refreshing": "रीफ़्रेश किया जा रहा है...", + "loadFailed": "हम ऑफ़र रीफ़्रेश नहीं कर सके। अंतिम सत्यापित स्थानीय कैश सुरक्षित रखा गया है।", + "empty": "फ़िलहाल कोई सक्रिय ऑफ़र उपलब्ध नहीं है।", + "keyRequiredTitle": "समर्थक कुंजी आवश्यक है", + "keyRequiredDescription": "ऑफ़र Radar का एक लाइव लाभ हैं। Radar स्क्रीन पर मौजूदा समर्थक कुंजी जोड़ें, अपने योगदानकर्ता स्टेटस को सत्यापित करें या कुंजी प्राप्त करने के लिए प्रोजेक्ट का समर्थन करें।", + "contributorButton": "मैं एक योगदानकर्ता हूँ", + "supporterButton": "प्रोजेक्ट का समर्थन करें", + "partnerBadge": "पार्टनर", + "officialBadge": "आधिकारिक", + "conditionsLabel": "शर्तें:", + "validUntil": "{date} तक मान्य", + "noExpiry": "समाप्ति की कोई घोषित तिथि नहीं", + "openOffer": "ऑफ़र देखें", + "trialDays": "{days, plural, one {# दिन} other {# दिन}}" }, "radarIntelPage": { "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "subtitle": "Radar के स्वामित्व वाली ELO रैंकिंग और कैटलॉग में तथ्यात्मक बदलाव।", + "backToRadar": "Radar पर वापस जाएँ", + "loading": "Intel लोड हो रहा है...", + "refresh": "Intel रीफ़्रेश करें", + "syncing": "रीफ़्रेश हो रहा है...", + "loadFailed": "हम Intel को रीफ़्रेश नहीं कर सके। अंतिम सत्यापित स्थानीय कैश सुरक्षित रखा गया है।", + "empty": "अभी तक कोई सत्यापित Intel स्नैपशॉट उपलब्ध नहीं है।", + "supporterBadge": "Radar समर्थक", + "methodology": "कार्यप्रणाली", + "eloMethod": "ELO, प्रारंभिक {initial}, K={factor}", + "freshness": "कैटलॉग की नवीनता", + "ageDays": "{days, plural, one {# दिन पुराना} other {# दिन पुराने}}", + "trend": "कैटलॉग का रुझान", + "modelDelta": "{current} मॉडल, +{added} / -{removed}", + "ranking": "मॉडल रैंकिंग", + "noRankings": "अभी तक कोई पुष्ट तुलना उपलब्ध नहीं है।", + "model": "मॉडल", + "category": "श्रेणी", + "rating": "रेटिंग", + "matches": "मुकाबले", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "नवीन", + "aging": "पुराना हो रहा है", + "stale": "बासी" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "बढ़ रहा है", + "stable": "स्थिर", + "shrinking": "घट रहा है" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "अनुरोध प्रदाता संदर्भ विंडो से अधिक है" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference, OmniRoute का ओपन सोर्स मित्र है", + "description": "एक लागत-आधारित रैंकिंग वाला गेटवे, जो एक OpenAI-संगत एंडपॉइंट के माध्यम से दर्जनों अग्रणी मॉडलों को पुनः बेचता है—प्रत्येक अनुरोध को सबसे सस्ते पात्र प्रदाता तक रूट करता है और कभी भी सूची मूल्य से अधिक शुल्क नहीं लेता।", + "cta": "API कुंजी प्राप्त करें", + "partnerLinkNote": "पार्टनर लिंक", + "dismissAriaLabel": "खारिज करें" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models कैटलॉग में थिंकिंग लेवल वेरिएंट (जैसे -low, -medium, -high) बनाना अक्षम करें।" } diff --git a/src/i18n/messages/hr.json b/src/i18n/messages/hr.json index e2672a03cd..0b005309c3 100644 --- a/src/i18n/messages/hr.json +++ b/src/i18n/messages/hr.json @@ -120,7 +120,7 @@ "compatible": "Kompatibilno", "chat-completions": "Dovršeci razgovora", "oauth": "OAuth", - "auth_token": "Auth Token", + "auth_token": "Token za autentifikaciju", "crypto": "Kripto", "hours": "Sati", "selfsigned": "Samopotpisano", @@ -702,7 +702,7 @@ "flaggedAnomalies": "Označene anomalije", "noAnomaliesDetected": "Nisu otkrivene anomalije", "apiKey": "API ključ", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 h)", "zScore": "Z-ocjena", "suspicious": "Sumnjivo", "tokensCommunityServers": "Zajednički poslužitelji", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Oglašavaj claude/<provider>/<model> zrcalne identifikatore na /v1/models kako bi otkrivanje modela Claude Code gatewaya prikazivalo modele koji nisu Claude. Upozorenje: udvostručuje unose kataloga za sve klijente kada je globalno omogućeno.", "featureFlagNoThinkingAliasEnabledDescription": "Glavni prekidač za no-think/<provider>/<model> pseudonime gatewaya. Uključeno (zadano): /v1/models oglašava varijantu bez razmišljanja za svaki prihvatljivi Claude model sposoban za razmišljanje, a no-think/ identifikator poslan u zahtjevu razrješava se natrag na pravi model s potisnutim zaključivanjem. Isključeno: nijedna varijanta se ne oglašava i no-think/ identifikator tretira se kao bilo koji drugi nepoznati identifikator modela. Opt-in/opt-out ModelSpec.noThinkingAlias po modelu i dalje se primjenjuje dok je ovo uključeno.", "featureFlagChatVirtualLanesEnabledDescription": "Omogući adaptivne virtualne prijamne trake po korisniku za raspodjelu pružatelja (#9654): opterećenje jednog korisnika više neće uzrokovati 503 grešku drugome. Varijabla okoline OMNIROUTE_CHAT_VIRTUAL_LANES ima prednost nad ovim nadjačavanjem nadzorne ploče; promjene stupaju na snagu pri ponovnom pokretanju poslužitelja.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Stranice pružatelja na nadzornoj ploči: prikazuju oznaku Besplatno samo na signalima koje pružatelj poštuje — izostavlja se heuristika naziva za prikaz, ne-logička besplatna polja i sufiksi :free kod registriranih pružatelja bez dokumentirane besplatne razine. Isključeno zadržava dosadašnje pravilo za oznake.", + "featureFlagProxySkipRecentlyFailedDescription": "Skupovi proxy poslužitelja i rotacija opencodea po računu privremeno prestaju ponovno posluživati proxy poslužitelj koji je upravo zakazao (odbijena TCP provjera ili odgovor 429 primljen preko njega) tijekom razdoblja po procesu koje se udvostručuje pri svakom ponavljanju, do zadanog maksimuma. Status proxy poslužitelja ne zapisuje se; kada se svi kandidati izuzmu, odabir ostaje nepromijenjen. Prema zadanim postavkama isključeno: redoslijed odabira potpuno je jednak običnoj rotaciji.", + "featureFlagProxyPoolEgressObservationDescription": "Na nadzornoj ploči, ispod skupa proxy poslužitelja, prikažite koliko je opaženih izlaznih IP adresa opsluživalo njegove članove tijekom posljednja 24 h, koliko ih je veza upotrebljavalo i najveći broj veza zabilježen iza jedne IP adrese. Samo za čitanje, izračunava se iz zapisnika proxy poslužitelja i nikada se ne upotrebljava za usmjeravanje. Prema zadanim postavkama isključeno: uređivač skupa ostaje nepromijenjen, a ruta za opažanja vraća null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Tijekom provjere stanja proxy poslužitelja omogućite da provjera koju je cilj odbio (401/403/429: proxy poslužitelj proslijedio je zahtjev, a odredište je odbilo ovu izlaznu IP adresu) poništi niz uzastopnih neuspjeha proxy poslužitelja, kao i uspješno poslužena provjera. Prema zadanim postavkama isključeno: odbijanje ostaje neutralno i zadržava niz. Odgovor 5xx u oba slučaja ostaje neodređen, a odbijanje nikada ne uklanja, onemogućuje niti ponovno aktivira proxy poslužitelj.", "sidebar": { "home": "Početna", "dashboard": "Nadzorna ploča", @@ -1029,7 +1029,7 @@ "embeddedServices": "Ugrađene usluge", "embeddedServicesSubtitle": "Opcionalne lokalne usluge", "logs": "Zapisnici", - "webhooks": "Webhooks", + "webhooks": "Webhookovi", "webhooksSubtitle": "Primajte obavijesti o događajima", "logExport": "Izvoz zapisnika", "logExportSubtitle": "Izvezite zapisnike poziva", @@ -1318,7 +1318,7 @@ "noResults": "Nema rezultata" }, "webhooks": { - "title": "Webhooks", + "title": "Webhookovi", "description": "Konfiguriraj HTTP povratne pozive za događaje sustava.", "configuredWebhooks": "Konfigurirani webhookovi", "configuredWebhooksDesc": "Upravljaj krajnjim točkama isporuke, pretplaćenim događajima, statusom i testnim slanjima.", @@ -1429,19 +1429,19 @@ "secretKeyHint": "Koristi se za potpisivanje zaglavlja korisnog tereta radi autentifikacije." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "URL webhooka za Discord", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "URL webhookа kopiran iz postavki integracije vašeg Discord kanala.", "tutorial": "Kako stvoriti Discord webhook:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "URL webhooka za Slack", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "URL webhookа kopiran iz Slack integracije dolaznih webhookova.", "tutorial": "Kako stvoriti Slack webhook:" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "Token Telegram bota", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "HTTP API token primljen od @BotFather prilikom stvaranja vašeg bota.", "chatId": "Telegram ID chata / Kanal", @@ -1963,10 +1963,10 @@ "rangeCancel": "Odustani", "rangeApply": "Primijeni", "rangeErrorInvalid": "Početak mora biti prije kraja", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", + "period1D": "1 d.", + "period7D": "7 d.", + "period30D": "30 d.", + "period90D": "90 d.", "periodYTD": "OG", "periodAll": "Sve", "totalTokens": "Ukupno tokena", @@ -2473,7 +2473,7 @@ "stt": "Govor u tekst", "webSearch": "Web pretraživanje", "webFetch": "Web dohvaćanje", - "video": "Video", + "video": "Videozapis", "music": "Glazba", "ocr": "OCR" }, @@ -2665,7 +2665,7 @@ "failed": "Neuspješno", "requestFailed": "Zahtjev nije uspio", "embedding": "Ugradnja", - "embeddingSample": "Hello, world!", + "embeddingSample": "Pozdrav, svijete!", "image": "Slika", "imageSample": "Mirni krajolik s planinama pri zalasku sunca", "music": "Glazba", @@ -2679,7 +2679,7 @@ "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — maks. 25 MB", "textToSpeech": "Tekst u govor", "ttsSample": "Zdravo, ovo je test pretvaranja teksta u govor.", - "video": "Video", + "video": "Videozapis", "videoSample": "Ubrzani snimak oblaka nad planinskim lancem", "webFetch": "Dohvaćanje weba", "webSearchSample": "Što je OmniRoute AI pristupnik?", @@ -3177,7 +3177,7 @@ "copilotPasteInto": "Zalijepi u:", "copilotReloadInstruction": "Zatim ponovno pokrenite VS Code i postavite API ključ u upit za unos.", "wireApiChatCompletions": "Dovršavanja razgovora (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiResponses": "API za odgovore (/responses)", "cliproxyapiActionFailed": "Radnja nije uspjela", "cliproxyapiActionSucceeded": "Radnja je uspjela", "cliproxyapiCheckUpdates": "Provjeri ažuriranja", @@ -3260,19 +3260,19 @@ "priorityDesc": "Sekvencijalni fallback: prvo pokušava model 1, zatim 2 itd.", "weightedDesc": "Raspoređuje promet prema postotku težine s fallbackom", "roundRobinDesc": "Kružna distribucija: svaki zahtjev ide na sljedeći model u rotaciji", - "contextRelay": "Context Relay", + "contextRelay": "Prosljeđivanje konteksta", "contextRelayDesc": "Čuva kontinuitet sesije sa sažecima predaje pri rotaciji računa", "randomDesc": "Jednoliki nasumični odabir, zatim fallback na preostale modele", "leastUsedDesc": "Odabire model s najmanje zahtjeva, ravnomjerno raspoređujući opterećenje kroz vrijeme", "costOptimizedDesc": "Preusmjerava na najjeftiniji model prvi, na temelju cijena", "cacheOptimizedDesc": "Svaki višekratno upotrebljivi prefiks upita doslovno preusmjerava na isti račun pružatelja", - "resetAware": "Reset-Aware RR", + "resetAware": "RR svjestan poništavanja", "resetAwareDesc": "Balansira preostalu kvotu prema resetiranjima svakih 5h i tjedno, zatim primjenjuje round-robin na slične rezultate", "quotaWeighted": "Ponderirano prema kvoti", "quotaWeightedDesc": "Preskoči račune s iscrpljenom kvotom, a zatim odaberi među preostalima razmjerno preostaloj kvoti, podijeljenoj s opterećenjem zahtjeva u tijeku. Postojeći razgovori ostaju vezani uz isti račun.", - "strictRandom": "Strict Random", + "strictRandom": "Strogo nasumično", "strictRandomDesc": "Miješanje špila — koristi svaki model jednom prije ponovnog miješanja", - "fusion": "Fusion", + "fusion": "Fuzija", "fusionDesc": "Šalje upit svim panel modelima paralelno, a zatim model suca sintetizira jedan konačni odgovor", "fusionJudgeModel": "Model suca", "fusionJudgeModelHelp": "Model koji sintetizira odgovore panela u jedan konačni odgovor. Ostavite prazno za korištenje prvog panel modela.", @@ -3322,7 +3322,7 @@ "playgroundStatusError": "Greška", "playgroundStatusUnknown": "Nepoznato", "playgroundNetworkError": "Mrežna greška tijekom simulacije", - "playgroundTitle": "Combo Playground", + "playgroundTitle": "Igralište kombinacija", "playgroundDescription": "Simulirajte kako će zahtjevi biti usmjereni kroz vaše kombinacije", "playgroundConfiguration": "Konfiguracija", "playgroundNoCombosConfigured": "Nema konfiguriranih kombinacija", @@ -4130,9 +4130,9 @@ "vscodeAliasManage": "CLI alati", "vscodeAliasBaseLabel": "VS Code baza", "vscodeAliasModelsLabel": "VS Code modeli", - "vscodeAliasChatLabel": "VS Code chat", + "vscodeAliasChatLabel": "Razgovor u VS Codeu", "localServer": "Lokalni poslužitelj", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute u oblaku", "copyUrl": "Kopiraj URL", "badgeLoopbackTooltip": "Ovom endpointu se može pristupiti samo lokalno (samo povratna petlja)", "badgeAlwaysProtectedTooltip": "Ovaj endpoint je uvijek zaštićen i zahtijeva autorizaciju", @@ -4190,7 +4190,7 @@ "notionDisconnectFailed": "Odspajanje nije uspjelo", "notionEnterToken": "Unesite Notion integracijski token", "notionIntegrationHelp": "Izradite internu integraciju na", - "notionIntegrationToken": "Notion Internal Integration Token", + "notionIntegrationToken": "Token interne integracije za Notion", "notionNotConnected": "Nije povezano", "notionTokenConfigured": "Token je konfiguriran. Notion alati dostupni su putem MCP-a." }, @@ -4246,7 +4246,7 @@ "topTools": "Najpopularniji alati", "noToolCalls24h": "Nema poziva alata u posljednjih 24 sata.", "runtimeDetails": "Detalji izvođenja", - "transport": "Transport", + "transport": "Prijenos", "scopesEnforced": "Opsezi u primjeni", "yes": "da", "no": "ne", @@ -4802,7 +4802,7 @@ "partialData": "Telemetrija je djelomično dostupna: {error}" }, "mitm": { - "title": "MITM Proxy", + "title": "MITM proxy", "description": "Transparentni proxy za presretanje i usmjeravanje klijentskih zahtjeva.", "enable": "Omogući MITM Proxy", "enableDesc": "Pokrenite ili zaustavite lokalni proces presretanja i DNS zamjenu.", @@ -4899,7 +4899,7 @@ "status": "Status", "resourceType": "Vrsta resursa", "totalEntries": "Ukupno unosa", - "tab": "Tab", + "tab": "Kartica", "auditModalSubtitle": "Detalji i metapodaci događaja", "close": "Zatvori", "runningRequests": "Aktivni zahtjevi", @@ -5308,10 +5308,10 @@ "openaiCompatibleDetails": "OpenAI Compatible pojedinosti", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Vektorske reprezentacije", + "audioTranscriptions": "Transkripcije zvuka", + "audioSpeech": "Generiranje govora", + "imagesGenerations": "Generiranje slika", "chatCompletions": "Chat Completions", "importingModels": "Uvoz u tijeku...", "importFromModels": "Uvezi iz /models", @@ -5771,7 +5771,7 @@ "apiRegionInternational": "Međunarodno", "apiRegionLabel": "Oznaka regije API-ja", "apikey": "API ključ", - "audio": "Audio", + "audio": "Zvuk", "audioProvidersHeading": "Pružatelji audio usluga", "cloudAgentProviders": "Pružatelji cloud agenata", "audioShortLabel": "Audio", @@ -5883,7 +5883,7 @@ "m365TierLabel": "Razina Copilot", "m365TierHint": "Odaberite koju Microsoft 365 Copilot površinu ova veza koristi. Individual je zadana potrošačka BizChat razina; Education i Enterprise (poslovni) koriste površine svojih tenanta.", "m365TierIndividualOption": "Individual (zadano)", - "m365TierEduOption": "Education", + "m365TierEduOption": "Obrazovanje", "m365TierEnterpriseOption": "Enterprise / Poslovni", "tierOverrideLabel": "Nadjačavanje razine", "tierOverrideAuto": "Automatski (odlučuje usmjeravanje)", @@ -5940,8 +5940,8 @@ "sessionCookieLabel": "Oznaka kolačića sesije", "showEmail": "Prikaži e-poštu", "snowflakeBaseUrlHint": "Savjet za osnovni URL Snowflake-a", - "supportedEndpointAudio": "Audio", - "supportedEndpointChat": "Chat", + "supportedEndpointAudio": "Zvuk", + "supportedEndpointChat": "Razgovor", "supportedEndpointEmbeddings": "Ugrađivanja", "supportedEndpointImages": "Slike", "supportedEndpointsLabel": "Podržane krajnje točke", @@ -6019,7 +6019,7 @@ "providerDetailFastTierTooltip": "Primijeni Codex Fast razinu na sve Codex veze prema zadanim postavkama", "providerDetailFastDefaultLabel": "Zadana brza razina", "providerDetailBrowserManualConnect": "Preglednik/ručno povezivanje", - "providerDetailAuthUrl": "Auth URL", + "providerDetailAuthUrl": "URL za autentifikaciju", "providerDetailCallbackUrl": "Povratni URL", "providerDetailValidClaudeCredentialsFile": "Valjana datoteka s Claude vjerodajnicama", "providerDetailPathAutoDetectedAllOs": "Putanja se automatski otkriva prema OS-u (Linux/Mac/Windows).", @@ -6407,8 +6407,8 @@ "batchDeleteNetworkError": "Mrežna pogreška tijekom grupnog brisanja", "batchUpdateFailed": "Grupno ažuriranje nije uspjelo", "batchUpdateNetworkError": "Mrežna pogreška tijekom grupnog ažuriranja", - "categoryAudio": "Audio", - "categoryCloudAgent": "Cloud Agent", + "categoryAudio": "Zvuk", + "categoryCloudAgent": "Agent u oblaku", "categoryIde": "IDE", "categoryLocal": "Lokalno", "categorySearch": "Pretraživanje", @@ -6530,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "izbaci odlomke koji sadrže: {items}", "routingSummarizeDropParagraphStartsWith": "izbaci odlomke koji počinju s: {items}", "routingSummarizeReplaceText": "zamijeni \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "regularni izraz /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "izbaci blokove koji sadrže: {items}", "routingSummarizePrependSystemBlock": "dodaj blok na početak: \"{text}\"", "routingSummarizeAppendSystemBlock": "dodaj blok na kraj: \"{text}\"", @@ -6585,7 +6585,7 @@ "modelCatalogCacheTtlSaving": "Spremanje...", "modelCatalogCacheTtlSave": "Spremi", "modelCatalogCacheTtlCurrent": "Trenutno: {value} ms", - "mitmProxy": "MITM Proxy", + "mitmProxy": "MITM proxy", "pricing": "Cijene", "storage": "Pohrana", "policies": "Pravila", @@ -6948,7 +6948,7 @@ "proxyFreePoolAddSelected": "Dodaj odabrane u skup", "proxyFreePoolAddVisible": "Dodaj sve vidljive u skup", "proxyFreePoolSource": "Izvor", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Poslužitelj:port", "proxyFreePoolType": "Vrsta", "proxyFreePoolCountry": "Država", "proxyFreePoolQuality": "Kvaliteta", @@ -7056,7 +7056,7 @@ "routingAdvancedGuideTitle": "Napredne smjernice za usmjeravanje", "routingAdvancedGuideHint1": "Ova strategija sinkronizirana je s novim zadanim postavkama kombinacija i globalnim usmjeravanjem kao rezervnom opcijom računa.", "routingAdvancedGuideHint2": "Koristite Fill First za predvidljivi prioritet računa, Round Robin uz Sticky Limit za grupe računa, te P2C za otpornost na latenciju.", - "fillFirst": "Fill First", + "fillFirst": "Prvo popuni", "fillFirstDesc": "Koristi račune prema redoslijedu prioriteta", "roundRobin": "Round Robin", "roundRobinDesc": "Naizmjenično prolazi kroz sve račune", @@ -7068,21 +7068,21 @@ "leastUsedDesc": "Odaberi najrjeđe korišten račun", "costOpt": "Optimizacija troškova", "costOptDesc": "Preferiraj najjeftiniji dostupni račun", - "resetAware": "Reset-Aware RR", + "resetAware": "RR svjestan poništavanja", "resetAwareDesc": "Preferiraj račune s dovoljnom preostalim kvotom i bližim resetiranjem", "quotaWeighted": "Ponderirano prema kvoti", "quotaWeightedDesc": "Preskoči račune s iscrpljenom kvotom, a zatim odaberi među preostalima razmjerno preostaloj kvoti, podijeljenoj s opterećenjem zahtjeva u tijeku. Postojeći razgovori ostaju vezani uz isti račun.", "strictRandom": "Strogo nasumično", "strictRandomDesc": "Pomiješaj spil — koristi svaki račun jednom prije ponovnog miješanja", - "stickyLimit": "Sticky Limit", + "stickyLimit": "Ograničenje ljepljivosti", "stickyLimitDesc": "Broj poziva po računu prije prebacivanja kada globalna rezervna opcija računa koristi Round Robin", "routingStrategyTitle": "Strategija usmjeravanja", "routingStrategySubtitle": "Uskladi s 9router: kružno dodjela računa, sticky ograničenja i rotacija kombinacija", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Kružno raspoređivanje", "accountRoundRobinDesc": "Naizmjenično prolazi kroz račune radi raspodjele opterećenja", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Kombinirano kružno raspoređivanje", "comboRoundRobinDesc": "Naizmjenično prolazi kroz ciljeve kombinacije umjesto da uvijek počinje s prvim", - "comboStickyLimit": "Combo Sticky Limit", + "comboStickyLimit": "Kombinirano ograničenje ljepljivosti", "comboStickyLimitDesc": "Broj poziva po cilju kombinacije prije prebacivanja", "routingStrategyAccountSummary": "Raspodjela zahtjeva po računima s {limit} poziva po računu.", "routingStrategyFillFirstSummary": "Korištenje računa prema prioritetnom redoslijedu (Popuni prvo).", @@ -7191,7 +7191,7 @@ "comboStrategyAria": "Strategija kombinacije", "priority": "Prioritet", "weighted": "Ponderiran", - "contextRelay": "Context Relay", + "contextRelay": "Kontekstni relej", "contextRelayDesc": "Usmjeravanje po prioritetu s automatskim predajama konteksta pri rotaciji računa", "maxRetriesLabel": "Maks. broj ponovnih pokušaja", "retryDelayLabel": "Odgoda ponovnog pokušaja (ms)", @@ -7463,7 +7463,7 @@ "budget": "Proračun", "pricingSyncTitle": "Sinkronizacija cijena", "pricingResetFailedWithReason": "Resetiranje cijena nije uspjelo: {reason}", - "tab": "Tab", + "tab": "Kartica", "pricingSavedProvider": "Cijene spremljene za {provider}", "pricingSyncFailed": "Sinkronizacija cijena nije uspjela", "pricingSaveFailedWithReason": "Spremanje cijena nije uspjelo: {reason}", @@ -7568,7 +7568,7 @@ "qdrantSaved": "Konfiguracija spremljena", "qdrantSaveError": "Spremanje konfiguracije nije uspjelo", "qdrantHostHint": "Bez porta. Primjer: 127.0.0.1 ili http://qdrant", - "qdrantPort": "Port", + "qdrantPort": "Priključak", "qdrantPortHint": "Qdrant zadano: 6333", "qdrantCollectionHint": "Gdje će se pohranjivati memorijske točke.", "qdrantEmbeddingModel": "Model za ugradnju (embedding)", @@ -7689,7 +7689,7 @@ "routingZeroConfigTitle": "Automatsko usmjeravanje bez konfiguracije", "routingZeroConfigDesc": "Omogući automatski odabir pružatelja usluga pomoću prefiksa auto/. Kada je omogućeno, zahtjevi za auto, auto/coding, auto/fast itd. dinamički će se usmjeravati između svih povezanih pružatelja usluga.", "routingDefaultAutoVariant": "Zadana automatska varijanta", - "visionBridge": "Vision Bridge", + "visionBridge": "Most za vizualni sadržaj", "visionBridgeDesc": "Pokreni automatski rezervni mehanizam vizija-u-tekst prije usmjeravanja zahtjeva sa slikama na modele samo za tekst.", "visionBridgeEnabledLabel": "Omogućeno", "visionBridgeEnabledDesc": "Uključi/isključi premosni most koji zamjenjuje dijelove slike izdvojenim tekstom.", @@ -7937,16 +7937,16 @@ "memorySkillsActiveSkillsProvider": "Aktivni pružatelj vještina", "cliproxyapiFallback": "CLIProxyAPI rezervna opcija", "cliproxyapiEnableFallback": "Omogući CLIProxyAPI rezervnu opciju", - "cliproxyapiUrl": "CLIProxyAPI URL", - "headroomProxyTitle": "Headroom proxy", + "cliproxyapiUrl": "URL za CLIProxyAPI", + "headroomProxyTitle": "Headroom proxy poslužitelj", "headroomProxyDesc": "URL neobaveznog Headroom proxyja za uštedu tokena. Ako je prazno, upotrebljava se HEADROOM_URL ili http://localhost:8787.", - "headroomProxyUrl": "Headroom URL", + "headroomProxyUrl": "URL za Headroom", "headroomProxyUrlHint": "Loopback URL-ovi mogu se pokrenuti s ove stranice. Vanjski URL-ovi samo se provjeravaju.", "headroomProxySave": "Spremi", "headroomProxyStart": "Pokreni", "headroomProxyStop": "Zaustavi", "headroomProxyExternalHint": "Ovaj URL nije loopback, stoga OmniRoute neće pokrenuti lokalni CLI.", - "cliproxyapiStatus": "CLIProxyAPI Status", + "cliproxyapiStatus": "Status CLIProxyAPI-ja", "cliproxyapiNotDetected": "Nije otkriveno", "cliproxyapiImportAuthTitle": "Uvezi račune iz CLIProxyAPI", "cliproxyapiImportAuthDesc": "Uvezi OAuth račune koje je CLIProxyAPI već spremio u ~/.cli-proxy-api/ kao OmniRoute veze, kako se ne biste morali ponovo prijavljivati na svaki račun. Podržane vrste računa (Gemini, Codex, Claude, Antigravity, Qwen, Kimi) se uvoze; ostale se preskaču.", @@ -8180,9 +8180,9 @@ "cloudflareRelayModalTitle": "Postavi Cloudflare Worker Relay", "cloudflareRelayWarning": "Postavlja Cloudflare Worker koji prosljeđuje LLM zahtjeve kroz Cloudflareovu rubnu mrežu — maskirajući IP domaćina iza dinamičkih Cloudflare adresa. Worker primjenjuje jednokratnu auth tajnu kako javni workers.dev URL ne bi mogao biti iskorišten kao otvoreni relay.", "cloudflareRelayTokenHowto": "Kreirajte API token pod My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit.", - "cloudflareRelayAccountIdLabel": "Cloudflare Account ID", + "cloudflareRelayAccountIdLabel": "ID Cloudflare računa", "cloudflareRelayAccountIdHint": "Nalazi se na desnoj strani stranice pregleda Cloudflare nadzorne ploče.", - "cloudflareRelayApiTokenLabel": "Cloudflare API Token", + "cloudflareRelayApiTokenLabel": "API token za Cloudflare", "cloudflareRelayApiTokenHint": "Zahtijeva dozvolu 'Workers Scripts: Edit'. Token se koristi samo pri postavljanju i nikada se ne pohranjuje.", "cloudflareRelayProjectNameLabel": "Naziv Workera", "cloudflareRelayFreeTierNote": "Besplatni plan: 100 000 zahtjeva/dan po Cloudflare računu.", @@ -8232,7 +8232,7 @@ "modalityBridgeIntro": "Premoštuje multimodalni sadržaj u tekst prije nego što dosegne modele samo za tekst. Dostupni su i konfigurabilni mostovi za vid, zvuk i video.", "modalityBridgeVisionTab": "Vid", "modalityBridgeAudioTab": "Zvuk", - "modalityBridgeVideoTab": "Video", + "modalityBridgeVideoTab": "Videozapis", "modalityBridgeSubTabsAria": "Odjeljci mosta modaliteta", "modalityBridgeVisionTitle": "Most za vid", "modalityBridgeVisionDesc": "Opisuje slike vizijskim modelom i nastavlja s korisnikovim odabranim tekstualnim modelom.", @@ -8377,12 +8377,12 @@ "cliproxyapiUnknown": "Nepoznato", "cliproxyapiVersion": "Verzija", "cliproxyapiHealth": "Zdravlje", - "cliproxyapiPort": "Port", - "qdrantHost": "Host", + "cliproxyapiPort": "Priključak", + "qdrantHost": "Poslužitelj", "qdrantCollection": "Kolekcija" }, "contextRtk": { - "title": "RTK Engine", + "title": "RTK mehanizam", "description": "Kompresija svjesna naredbi za izlaz alata, terminalne zapise i rezultate izgradnje.", "enabled": "Omogućeno", "intensity": "Intenzitet", @@ -8506,7 +8506,7 @@ "description": "Bezgubitno tablično sažimanje homogenih JSON polja s eksplicitnim oznakama broja redaka." }, "session-dedup": { - "name": "Session Dedup", + "name": "Deduplikacija sesije", "description": "Međuokretna blokovna deduplikacija s oznakama za obnavljanje sadržaja." }, "ccr": { @@ -8770,7 +8770,7 @@ "why": "Samo izmjerena staza Fable 5 omogućena je u OmniRouteu. GPT 5.6 strukturno je podržan paketom, ali ostaje blokiran do primitka potvrde pružatelja; neprovjerene obitelji poput Groka ostaju samo u tekstualnom obliku." }, "transport": { - "label": "Transport", + "label": "Prijenos", "pass": "izravni pružatelj usluge", "why": "Agregatori mogu uzorkovati slike i uništiti čitljivost — samo ruta izravnog pružatelja usluge je mjerodavna." }, @@ -8880,7 +8880,7 @@ "providerExposureHint": "Kada je omogućeno, otkriveni modeli pojavljuju se u selektorima pružatelja usluga diljem OmniRoute.", "providerExposureUpdateFailed": "Ažuriranje nije uspjelo (HTTP {status})", "providerExposureNetworkFailed": "Mrežna greška — nije moguće ažurirati postavku izloženosti pružatelja usluga", - "webUi": "9Router Web UI", + "webUi": "Web-sučelje 9Router", "openNewTab": "Otvori u novoj kartici", "filterLogs": "Filtriraj zapisnike…", "resume": "Nastavi", @@ -8892,7 +8892,7 @@ "fallbackRouting": "Rezervno usmjeravanje", "fallbackRoutingDescription": "Ponovite neuspjele zahtjeve davatelja usluga putem CLIProxyAPI", "enableFallback": "Omogući povratnu opciju", - "cliproxyUrl": "CLIProxyAPI URL", + "cliproxyUrl": "URL za CLIProxyAPI", "fallbackCodes": "Rezervni statusni kodovi (odvojeni zarezima)", "invalidUrl": "Nevažeći URL — mora počinjati s http:// ili https://", "saved": "Spremljeno", @@ -9104,8 +9104,8 @@ "cityDescription": "Grad za upit, npr. 'Tokio' ili 'New York'." } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", + "openaiCompatibleLabel": "Kompatibilno s OpenAI-jem", + "anthropicCompatibleLabel": "Kompatibilno s Anthropicom", "noTemplateForFormat": "Nema predloška za ovaj format", "translationFailed": "Prijevod nije uspio: {error}", "pipelineDebugger": "Ispravljač cjevovoda", @@ -9156,9 +9156,9 @@ "eventSourceMainPipeline": "• Glavni cjevovod zahtjeva (CLI/IDE/API promet)", "liveMonitorDescriptionPrefix": "Prikazuje događaje prevođenja dok API pozivi prolaze kroz OmniRoute. Događaji dolaze iz međuspremnika u memoriji (resetira se pri ponovnom pokretanju). Koristite", "liveMonitorDescriptionSuffix": ", ili vanjske API pozive za generiranje događaja.", - "streamTransformer": "Stream Transformer", + "streamTransformer": "Transformator toka", "modeDescriptionStreamTransformer": "Pokrenite SSE streamove dovršavanja razgovora kroz Responses transformer.", - "streamTransformerTitle": "Responses Stream Transformer", + "streamTransformerTitle": "Transformator toka odgovora", "streamTransformerDescription": "Zalijepite SSE stream dovršavanja razgovora, pokrenite ga kroz OmniRoute-ov Responses transformer i pregledajte emitirana response.* događaje prije spajanja klijenta.", "loadTextSample": "Učitaj tekstualni uzorak", "loadToolSample": "Učitaj uzorak poziva alata", @@ -9294,7 +9294,7 @@ "kimiMonthlyLimit": "Mjesečno ograničenje", "kimiMonthlyLimitUnlimited": "Neograničeno", "kimiAdditionalCredits": "Dodatni krediti", - "loggerTab": "Logger", + "loggerTab": "Zapisivač", "proxyTab": "Proxy", "budgetManagement": "Upravljanje proračunom", "budgetSaved": "Ograničenja proračuna spremljena", @@ -9343,7 +9343,7 @@ "evaluateStepDescription": "Odgovori se uspoređuju s očekivanim kriterijima. Pogledajte prolaz/pad za svaki slučaj uz metrike latencije i detaljne povratne informacije.", "evalsStrategyContainsLabel": "Sadrži", "evalsStrategyExactLabel": "Točno podudaranje", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Regularni izraz", "evalsStrategyCustomLabel": "Prilagođena logika", "evalsStrategyContainsDescription": "Provjerava sadrži li izlaz LLM-a očekivani podniz.", "evalsStrategyExactDescription": "Provjerava podudara li se izlaz LLM-a točno s očekivanom vrijednošću.", @@ -9465,9 +9465,9 @@ "noQuotaDataAvailable": "Nema dostupnih podataka o kvoti", "noAccountsForTierFilter": "Nisu pronađeni računi za filter razine", "tierAll": "Sve", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "tierEnterprise": "Poslovni", + "tierTeam": "Tim", + "tierBusiness": "Poslovni", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", @@ -9823,8 +9823,8 @@ "signIn": "Prijava", "enterPassword": "Unesite lozinku za nastavak", "password": "Lozinka", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", + "unifiedProxy": "Objedinjeni proxy za AI API", + "unifiedAiApiProxy": "Objedinjeni proxy za AI API", "unifiedAiApiProxyDesc": "Usmjeravajte zahtjeve prema više AI pružatelja putem jedne krajnje točke. Ugrađeno balansiranje opterećenja, prebacivanje u slučaju greške i praćenje upotrebe.", "passwordNotEnabled": "Zaštita lozinkom nije omogućena", "loading": "Učitavanje...", @@ -10260,7 +10260,7 @@ "techUsersSubtitle": "Detaljni pregled arhitekture, API-ja i unutarnjih mehanizama", "apiExplorerMetadataTitle": "API Explorer — OmniRoute dokumentacija", "apiExplorerMetadataDescription": "Interaktivni API explorer — isprobajte OmniRoute krajnje točke uživo s odgovorima u stvarnom vremenu", - "apiExplorerTitle": "API Explorer", + "apiExplorerTitle": "Istraživač API-ja", "apiExplorerDescription": "Isprobajte OmniRoute krajnje točke uživo. Odaberite krajnju točku, konfigurirajte zahtjev i pogledajte odgovor u stvarnom vremenu.", "apiExplorerSseStarted": "SSE tok je pokrenut — provjerite terminal/devtools za izlaz u stvarnom vremenu.", "apiExplorerError": "Greška: {message}", @@ -10299,7 +10299,7 @@ "termsMetadataDescription": "Uvjeti korištenja za OmniRoute AI API proxy usmjerivač.", "backToHome": "Natrag na početnu stranicu", "lastUpdated": "Posljednje ažuriranje: {date}", - "policyLastUpdatedDate": "February 13, 2026", + "policyLastUpdatedDate": "13. veljače 2026.", "listSeparator": "-", "questionsVisit": "Pitanja? Posjetite naš", "githubRepository": "GitHub repozitorij", @@ -10693,9 +10693,9 @@ "custom": "Prilagođeno", "selectSavedProxyPlaceholder": "Odaberi spremljeni proxy...", "proxyType": "Vrsta proxyja", - "host": "Host", + "host": "Poslužitelj", "hostPlaceholder": "1.2.3.4 ili proxy.example.com", - "port": "Port", + "port": "Priključak", "authOptional": "Autentikacija (neobavezno)", "username": "Korisničko ime", "usernamePlaceholder": "Korisničko ime", @@ -10783,7 +10783,7 @@ "saveConnection": "Spremi vezu", "gheDescription": "Unesite osnovni URL vaše GitHub Enterprise instance (npr. https://ghe.yourcompany.com).", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "URL za GitHub Enterprise", "gheUrlRequired": "GitHub Enterprise URL je obavezan", "gitlabDuoSetupTitle": "Postavljanje GitLab Duo OAuth-a", "gitlabDuoSetupMessage": "GitLab Duo OAuth nije konfiguriran. Registrirajte OAuth aplikaciju na {applicationsUrl} s preusmjeravajućim URI-jem {redirectUri} i opsezima \"{scopes}\", zatim postavite {clientIdEnv} (i po želji {clientSecretEnv}) i ponovo pokrenite.", @@ -10873,8 +10873,8 @@ "familyIpv4": "Samo IPv4", "familyIpv6": "Samo IPv6", "familyHint": "Obitelj izlaznih adresa. Automatski zadržava dual-stack; IPv4/IPv6 vezuje ovaj proxy uz tu obitelj (sprječava curenje v4 pod proxy koji podržava samo IPv6).", - "labelHost": "Host", - "labelPort": "Port", + "labelHost": "Poslužitelj", + "labelPort": "Priključak", "labelUsername": "Korisničko ime", "labelPassword": "Lozinka", "labelRegion": "Regija", @@ -10919,7 +10919,7 @@ "assignmentsCount": "{count} dodjela", "noData": "—", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Popravak", "relayAuthMissing": "autentifikacija nedostaje", @@ -10968,9 +10968,9 @@ "strategyLatency": "Optimizirano prema latenciji", "poolMembersLabel": "Članovi poola ({count})", "poolNoMembers": "Još nema proxyja u ovom poolu.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# izlaz} few {# izlaza} other {# izlaza}} za {connections, plural, one {# vezu} few {# veze} other {# veza}} · do {max} na jednom izlazu · posljednjih {hours} h", + "poolEgressObservationEmpty": "U posljednjih {hours} h nije zabilježen promet", + "poolEgressObservationHint": "Izračunato iz zapisnika proxyja tijekom razdoblja: različite izlazne IP adrese zabilježene za članove ovog skupa i OmniRoute veze koje su ih koristile. „Na jednom izlazu” odnosi se na cijelo razdoblje, a ne na isti trenutak. Blokada 429 po IP adresi pauzira samo veze iz iste obitelji pružatelja.", "poolRemove": "Ukloni", "poolRemoveFailed": "Uklanjanje proxyja iz poola nije uspjelo", "poolAddLabel": "Dodaj proxy", @@ -10980,7 +10980,7 @@ "poolSaveFailed": "Spremanje dodjele skupa nije uspjelo" }, "playground": { - "title": "Model Playground", + "title": "Okruženje za isprobavanje modela", "description": "Testirajte bilo koji model izravno s nadzorne ploče. Odaberite pružatelja, model i vrstu krajnje točke, zatim pošaljite zahtjev kako biste vidjeli neobrađeni odgovor.", "endpoint": "Krajnja točka", "provider": "Pružatelj", @@ -11025,7 +11025,7 @@ "conversationalChat": "Razgovorni chat", "clearChat": "Očisti chat", "typeMessagePlaceholder": "Unesite poruku... (Shift+Enter za novi redak)", - "tabChat": "Chat", + "tabChat": "Razgovor", "tabCompare": "Usporedi", "tabApi": "API", "tabBuild": "Izgradnja", @@ -11205,7 +11205,7 @@ "tunnel": "Tunel", "send": "Pošalji", "selectKey": "Odaberi ključ", - "testLabel": "Test", + "testLabel": "Testiraj", "expandTest": "Proširi test", "collapseTest": "Sažmi test", "revealKey": "Otkrij ključ", @@ -11214,7 +11214,7 @@ "play": "Reproduciraj", "query": "Upit", "numResults": "Maksimalan broj rezultata", - "prompt": "Prompt", + "prompt": "Upit", "size": "Veličina", "duration": "Trajanje", "question": "Pitanje", @@ -11234,7 +11234,7 @@ "ttsSample": "Pozdrav od OmniRoute-a. Ovo je test pretvorbe teksta u govor.", "textToSpeech": "Tekst u govor", "videoSample": "Papirnati avion koji leti iznad futurističkog grada", - "video": "Video", + "video": "Videozapis", "webFetch": "Dohvat s weba", "webSearchSample": "Što je OmniRoute?", "webSearch": "Pretraga weba", @@ -11244,7 +11244,7 @@ "searchResultFallback": "Rezultat {number}", "noKeysFound": "Nisu pronađeni API ključevi. Dodajte jedan u odjeljku Ključevi.", "exampleLabel": "Primjer", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} ulaznih / {tokensOut} izlaznih tokena", "defaultKey": "(zadano)", "clear": "Očisti", @@ -11283,8 +11283,8 @@ "sortDurationAsc": "Trajanje ↑", "sortStatusDesc": "Status ↓", "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", + "sortModelAsc": "Model A–Z", + "sortModelDesc": "Model Z–A", "sortLogs": "Sortiraj zapise", "refresh": "Osvježi", "columnsLabel": "Stupci", @@ -11374,7 +11374,7 @@ }, "payloadMissing": "Detaljan artefakt sadržaja više nije dostupan za ovaj unos zapisa.", "payloadCorrupt": "Detaljan artefakt sadržaja nije bilo moguće raščlaniti.", - "notAvailable": "N/A", + "notAvailable": "Nije primjenjivo", "semanticCache": "Semantički (OmniRoute)", "upstreamCache": "Uzlazni tok (davatelj)", "ariaLabel": "Detalj zapisa zahtjeva", @@ -11450,7 +11450,7 @@ "allLevels": "Sve razine", "allProviders": "Svi pružatelji", "total": "ukupno", - "ok": "OK", + "ok": "U redu", "err": "GRŠ", "timeoutShort": "IST", "direct": "izravno", @@ -11470,11 +11470,11 @@ "speech": "Govor", "search": "Pretraživanje", "images": "Slike", - "chat": "Chat", + "chat": "Razgovor", "music": "Glazba", "responses": "Odgovori", - "rerank": "Rerank", - "video": "Video", + "rerank": "Ponovno rangiranje", + "video": "Videozapis", "embeddings": "Ugradnje", "transcription": "Transkripcija" }, @@ -11487,7 +11487,7 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", + "title": "Izvršno okruženje", "description": "Promatranje u stvarnom vremenu — 3-slojna otpornost + sesije + upozorenja o kvoti", "pause": "Pauziraj", "resume": "Nastavi", @@ -11625,7 +11625,7 @@ "burnRateExhaustsIn": "Iscrpljuje se za", "dimensionResetIn": "Resetira se za", "realConsumedColumn": "Potrošeno", - "deficitColumn": "Deficit", + "deficitColumn": "Manjak", "borrowingIndicator": "posuđivanje", "migratedFromLocalStorageNotice": "Skupovi uspješno migrirani iz localStorage.", "policyCapAbsoluteLabel": "Apsolutno ograničenje", @@ -11678,7 +11678,7 @@ "endpointsBaseUrl": "Osnovni URL", "endpointsCollapse": "Sažmi", "endpointsExpand": "Proširi", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Izvorni Anthropic", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — samo codex", "betaText": "Quota Share je funkcionalan, ali greške su moguće. Pronašli ste neku? Molimo prijavite je.", @@ -12892,8 +12892,8 @@ "block": "Blokiraj", "redact": "Redigiraj", "disabled": "Onemogućeno", - "dual": "Dual", - "alias": "Alias", + "dual": "Dvostruki", + "alias": "Pseudonim", "canonical": "Kanonski" }, "definitions": { @@ -12992,7 +12992,7 @@ "description": "Dopusti oporavku toka da ponovo zatraži odgovor i spoji ga nakon što su bajtovi već stigli do klijenta." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Učinite nastavak usred toka sigurnim za pozive alata: nikada ne nastavljajte prekinuti tok nakon što je poziv alata poslan (još traje ili je već dovršen) i zaustavite se nakon jednog praznog nastavka umjesto korištenja cijelog dopuštenog broja ponovnih pokušaja." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Jednom se prebaci na srodnu vezu kada se tok zatvori prije slanja ijednog korisnog okvira, a ograničeni ponovni pokušaj na istoj vezi je iskorišten. Ako nema upotrebljive srodne veze, vraća se izvorna early-EOF pogreška. Isključeno: early-EOF ostaje konačan nakon ponovnog pokušaja." @@ -13035,12 +13035,12 @@ "description": "Nastavi s nestrujnim pozivima alata pod nadzorom poslužitelja sve dok model ne vrati odgovor koji klijent može upotrijebiti." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Podrijetlo zaglavlja Retry-After", + "description": "U agregiranim odgovorima 429/503 o nedostupnosti izostavite Retry-After kada nije poznato konkretno buduće vrijeme ponovnog pokušaja umjesto slanja sintetičke vrijednosti od 1 s, dodajte error.retry_after_provenance i čitajte tekstualne upute za ponovni pokušaj na putanjama pražnjenja kombinacije." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Zaustavljanja infrastrukture za zaštićeni prioritet kao 502", + "description": "Odgovorite kodom 502 umjesto 503 kada prioritetno odredište s pričuvnim rješenjem samo za kvotu zaustavi kombinaciju zbog uzroka koji dokazivo nije kvota: otvorenog prekidača strujnog kruga pružatelja ili prediktivnog preskakanja zbog latencije." } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "Zdravlje comb-a", "callLogs": "Zapisnici poziva", "costs": "Troškovi", - "playground": "Playground", + "playground": "Igralište", "nestedCombo": "Ugniježđeni combo", "modelTarget": "Modelni cilj", "weight": "{value}% težina", @@ -13334,7 +13334,7 @@ "simulateTitle": "Simuliraj pravilo", "model": "Model", "effort": "Napor", - "transport": "Transport", + "transport": "Prijenos", "simulate": "Simuliraj bez uzvodnog toka", "extendedComboWarning": "Max/Ultra se zasebno provjerava za svaki kombinirani cilj tijekom usmjeravanja.", "extendedUnknownWarning": "Unesite ciljni model za provjeru podrške za Max/Ultra.", @@ -13577,9 +13577,9 @@ "timeline": { "title": "Prijelazi prekidača", "window": "Prozor", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 h", + "window6h": "6 h", + "window24h": "24 h", "empty": "Nema prijelaza u odabranom prozoru", "currentState": "Trenutno stanje", "state": { @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Odbij zahtjeve prije otpreme kada ciljnom modelu nedostaju potrebne mogućnosti (vizija, alati, strukturirani izlaz, kontekstni prozor). Štiti izravne zahtjeve prema jednom pružatelju koji zaobilaze filtar kompatibilnosti combo-sloja.", "featureFlagDisableContextWindowChecksDescription": "Preskoči OmniRoute-ovu lokalnu provjeru kontekstnog prozora i maksimalnog ulaznog tokena za izravne zahtjeve prema jednom modelu. Uzlazni pružatelji i dalje primjenjuju stvarna ograničenja. Kompresija upita i ograničenja izlaznih tokena ostaju aktivni.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Statistika pretraživanja i nedavna pretraživanja broje samo pružatelje koji još uvijek imaju aktivnu vezu (pružatelji bez ključa, poput duckduckgo-free, uvijek se broje). Isključivanjem se zadržava svaki sačuvani redak pretraživanja s ID-jem pružatelja.", "publicSystem": { "notFound": { "title": "Stranica nije pronađena", @@ -13714,8 +13714,8 @@ "providersTracked": "Praćeni pružatelji usluga", "circuitBreakerState": "Stanje prekidača strujnog kruga pružatelja usluga", "lastUpdate": "Zadnje ažuriranje: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes} min", + "uptimeHoursMinutes": "{hours} h {minutes} min" }, "statusPages": { "400": { @@ -13958,7 +13958,7 @@ "tokens": "Tokeni", "active": "Aktivno", "other": "Ostalo", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "sat", "day": "dan", "unknownModel": "nepoznato", @@ -13984,9 +13984,9 @@ "colMode": "Način", "colRunner": "Pokretač", "colSummary": "Sažetak", - "online": "online", - "offline": "offline", - "draining": "draining", + "online": "na mreži", + "offline": "izvan mreže", + "draining": "pražnjenje", "hubOffline": "Conductor hub je offline ili nije konfiguriran (CONDUCTOR_HUB_URL) — prikazuje se ništa umjesto zastarjelih podataka.", "noRunners": "Nema registriranih pokretača", "noTasks": "Još nema zadataka", @@ -14032,7 +14032,7 @@ "historyEmpty": "Nema završenih izvođenja u ovom rasponu", "historyConductorNote": "Conductor izvođenja su udaljena i ne pohranjuju se lokalno", "historySourceFailed": "Povijest izvora {source} nije dostupna", - "historyRange1d": "24h", + "historyRange1d": "24 h", "historyRange7d": "7 dana", "historyRange30d": "30 dana", "compareMode": "Usporedi izvođenja", @@ -14051,9 +14051,9 @@ "filterSources": "Izvori", "filterProviders": "Pružatelji", "clearFilters": "Očisti filtre", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Agent u oblaku", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Upravitelj", "sourceStale": "Zastarjelo od {since}", "sourceOffline": "Izvan mreže", "sourceCollapse": "Sažmi", @@ -14120,7 +14120,7 @@ "trialDays": "{days, plural, one {# dan} other {# dana}}" }, "radarIntelPage": { - "title": "Radar Intel", + "title": "Radarske informacije", "subtitle": "ELO rangiranja u vlasništvu Radara i stvarna kretanja kataloga.", "backToRadar": "Natrag na Radar", "loading": "Učitavanje Intela...", @@ -14128,7 +14128,7 @@ "syncing": "Osvježavanje...", "loadFailed": "Nismo mogli osvježiti Intel. Zadržan je posljednji lokalno verificirani predmemorij.", "empty": "Još uvijek nije dostupna verificirana snimka Intela.", - "supporterBadge": "Radar Supporter", + "supporterBadge": "Podržavatelj radara", "methodology": "Metodologija", "eloMethod": "ELO, početni {initial}, K={factor}", "freshness": "Svježina kataloga", diff --git a/src/i18n/messages/hu.json b/src/i18n/messages/hu.json index 4a4478aa56..c8943186f1 100644 --- a/src/i18n/messages/hu.json +++ b/src/i18n/messages/hu.json @@ -23,7 +23,7 @@ "back": "Vissza", "next": "Következő", "submit": "Beküld", - "reset": "Reset", + "reset": "Visszaállítás", "copy": "Másolás", "copied": "Másolva!", "enabled": "Engedélyezve", @@ -31,7 +31,7 @@ "active": "Aktív", "inactive": "Inaktív", "noData": "Nincs adat", - "nothingHere": "Nothing here yet", + "nothingHere": "Még nincs itt semmi", "configure": "Konfigurálás", "manualConfig": "Kézi konfiguráció", "manage": "Kezelése", @@ -47,8 +47,8 @@ "time": "Idő", "details": "Részletek", "created": "Létrehozva", - "lastUsed": "Last Refreshed", - "loadMore": "Load More", + "lastUsed": "Legutóbb frissítve", + "loadMore": "Továbbiak betöltése", "noResults": "Nincs találat", "reloadPage": "Oldal újratöltése", "connected": "Csatlakozva", @@ -70,8 +70,8 @@ "note": "Megjegyzés", "free": "Ingyenes", "skipToContent": "Ugrás a tartalomhoz", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "A szerveren problémák merültek fel. Előfordulhat, hogy egyes funkciók nem érhetők el.", + "maintenanceServerUnreachable": "A szerver nem érhető el. Újracsatlakozás...", "accept": "Elfogadás", "accountId": "Számlaazonosító", "alias": "Alias", @@ -98,9 +98,9 @@ "skill": "Ügyesség", "sortBy": "Rendezés alapja", "sortOrder": "Rendezési sorrend", - "tab": "Tab", + "tab": "Lap", "text": "Szöveg", - "textarea": "Textarea", + "textarea": "Szövegterület", "tool": "Eszköz", "toolId": "Szerszámazonosító", "web": "Web", @@ -120,8 +120,8 @@ "compatible": "Kompatibilis", "chat-completions": "Csevegés befejezése", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", + "auth_token": "Hitelesítési token", + "crypto": "Kriptográfia", "hours": "Órák", "selfsigned": "Önaláírt", "proxy_id": "Proxy azonosítója", @@ -131,7 +131,7 @@ "resolve_connection_id": "A kapcsolatazonosító feloldása", "scope_id": "Hatókör azonosítója", "scopeId": "Hatókör azonosítója", - "jwtSecret": "JWT Secret", + "jwtSecret": "JWT-titkos kulcs", "keytar": "Keytar", "better-sqlite3": "jobb-sqlite3", "undici": "undici", @@ -145,14 +145,14 @@ "social-github": "GitHub", "social-google": "Google", "TOOL_ALLOWLIST": "Eszköz engedélyezési lista", - "TOOL_DENYLIST": "Tool Denylist", + "TOOL_DENYLIST": "Eszköztiltólista", "Failed to save pricing": "Nem sikerült menteni az árakat", "Failed to reset pricing": "Nem sikerült visszaállítani az árakat", "apikey": "API kulcs", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Ugrás az irányítópultra", + "checkSystemStatus": "Rendszerállapot ellenőrzése", + "selectModel": "Modell kiválasztása", "addModel": "Modell hozzáadása", "effortNone": "Nincs", "effortLow": "Alacsony", @@ -164,10 +164,10 @@ "reasoningEffort": "Következtetési erőfeszítés", "wireApi": "Wire API", "modelAliases": "Modellálnevek", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Kombinációk", + "noModelsFound": "Nem találhatók modellek", + "clear": "Törlés", + "done": "Kész", "selectAll": "Összes kijelölése", "unselectAll": "Kijelölés megszüntetése", "visibleModels": "látható", @@ -184,542 +184,542 @@ "selectAllProviders": "Ellenőrizze az összes szolgáltatót", "clearProviderSelection": "Törölje a szolgáltatók jelölését", "providersSelectedCount": "{count} szolgáltató ellenőrizve", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", - "cloudAgentProviders": "Cloud Agent Providers", - "minutesAgo": "Minutes Ago", + "errorOccurred": "Hiba történt", + "comboDeleted": "Kombináció törölve", + "hide": "Elrejtés", + "creating": "Létrehozás", + "comboCreated": "Kombináció létrehozva", + "swapFormats": "Formátumok felcserélése", + "daysAgo": "nappal ezelőtt", + "retries": "Újrapróbálkozások", + "errorDuringRestore": "Hiba történt a visszaállítás során", + "eventsAppearHint": "Az események itt jelennek meg", + "noLockouts": "Nincsenek zárolások", + "webSearchDesc": "Leírás a webes keresésről", + "audioProvidersHeading": "Hangszolgáltatók", + "cloudAgentProviders": "Felhőügynök-szolgáltatók", + "minutesAgo": "perccel ezelőtt", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "Élő automatikus frissítés", + "webSearch": "Webes keresés", + "anthropicPrefixPlaceholder": "Anthropic előtag helyőrzője", + "addModelToCombo": "Modell hozzáadása a kombinációhoz", + "failedToLoad": "Betöltés sikertelen", + "categoryMedia": "Média kategória", + "enableCloud": "Felhő engedélyezése", + "expirationBannerExpiringSoon": "Hamarosan lejáró érvényességi figyelmeztetés", + "retry": "Újrapróbálás", + "embeddings": "Beágyazások", + "errorCount": "Hibák száma", + "backupReasonManual": "Biztonsági mentés oka: kézi", + "safeSearchModerate": "Mérsékelt biztonságos keresés", + "activeLimiters": "Aktív korlátozók", + "a2aCardTitle": "A2A-kártya címe", + "cloudWorkerUnreachable": "A felhőalapú feldolgozó nem érhető el", + "testFailed": "A teszt sikertelen", + "compatibleBaseUrlHint": "Kompatibilis alap-URL súgója", + "usageTracking": "Használat nyomon követése", + "disableCloudTitle": "Felhő letiltása – cím", + "noConnections": "Nincsenek kapcsolatok", + "providerHealth": "Szolgáltató állapota", + "confirmDbImport": "Adatbázis-importálás megerősítése", + "notAvailableSymbol": "Nem érhető el szimbólum", + "backupsAvailable": "Elérhető biztonsági mentések", + "providerAuto": "Automatikus szolgáltató", + "newProviderNamePlaceholder": "Új szolgáltatónév helyőrzője", + "a2aQuickStartStep2": "A2A gyors üzembe helyezésének 2. lépése", + "ok": "OK", + "available": "Elérhető", + "noBackupYet": "Még nincs biztonsági mentés", + "more": "Továbbiak", + "noCompatibleYet": "Még nincs kompatibilis elem", + "multiProvider": "Több szolgáltató", + "repairEnvHint": "Környezeti változók javításának súgója", + "disablingCloud": "Felhő letiltása", + "testBench": "Tesztkörnyezet", + "valid": "Érvényes", + "cloudBenefitShare": "Felhőelőny: megosztás", + "mcpCardTitle": "MCP-kártya címe", + "disableConfirm": "Letiltás megerősítése", + "filters": "Szűrők", + "expirationBannerExpiredDesc": "Lejárati szalag lejárt állapotának leírása", + "saveComboDefaults": "Kombináció alapértelmezéseinek mentése", + "cloudConnectedVerified": "Felhőkapcsolat ellenőrizve", + "uptime": "Üzemidő", + "compatibleProdPlaceholder": "Kompatibilis éles környezet helyőrzője", + "fallbackChainsTitle": "Tartalékláncok címe", + "oauthLabel": "OAuth-címke", + "a2aCardDescription": "Az A2A-kártya leírása", + "okShort": "OK", + "maintenance": "Karbantartás", + "formatConverter": "Formátumátalakító", + "zedImportNetworkError": "Hálózati hiba a Zed-importálás során", + "apiKeyLabel": "API-kulcs címkéje", + "noModelsForProvider": "Nincsenek modellek ehhez a szolgáltatóhoz", + "mcpCardDescription": "Az MCP-kártya leírása", + "apiTypeLabel": "API-típus címkéje", + "configuredProvidersLabel": "Konfigurált szolgáltatók címkéje", + "maxRetriesLabel": "Újrapróbálkozások maximális számának címkéje", + "title": "Cím", + "output": "Kimenet", + "prefixHint": "Előtagra vonatkozó tipp", + "skipWizard": "Varázsló kihagyása", + "failedCount": "Sikertelenek száma", + "confirmDbImportDesc": "Az adatbázis-importálás megerősítésének leírása", + "entries": "Bejegyzések", + "until": "Eddig", + "disableCombo": "Kombináció letiltása", + "liveMonitorDescriptionPrefix": "Az élő monitor leírásának előtagja", + "runningCount": "Futó elemek száma", + "noActiveConnectionsInGroup": "Nincsenek aktív kapcsolatok a csoportban", + "savedSuccessfully": "Sikeresen mentve", + "systemStorage": "Rendszertárhely", + "videoDesc": "Videó leírása", + "maxResults": "Találatok maximális száma", + "timeRangeMonth": "Időtartomány: hónap", + "testSummary": "Teszt összegzése", + "failedSetPassword": "Nem sikerült beállítani a jelszót", + "audio": "Hang", + "restore": "Visszaállítás", + "disableWarning": "Letiltási figyelmeztetés", + "moderationsDesc": "Moderálások leírása", + "providerHealthStatusAria": "Szolgáltató állapotának ARIA-címkéje", + "modelNamePlaceholder": "Modellnév helyőrzője", + "mcpQuickStartStep2": "MCP gyors kezdés 2. lépése", + "quickStart": "Gyors kezdés", + "fullExportFailedWithError": "A teljes exportálás hibával meghiúsult", + "loadingBackups": "Biztonsági mentések betöltése", + "anthropicBaseUrlPlaceholder": "Anthropic alap-URL helyőrzője", + "description": "Leírás", + "noProviderFound": "Nem található szolgáltató", + "auto": "Automatikus", + "protocolsDescription": "Protokollok leírása", + "cloudSessionNote": "Felhőmunkamenetre vonatkozó megjegyzés", + "advancedSettings": "Speciális beállítások", + "defaultStrategy": "Alapértelmezett stratégia", + "purgeExpiredLogs": "Lejárt naplók törlése", + "justNow": "Épp most", + "providerTestFailed": "A szolgáltató tesztje sikertelen", + "openaiBaseUrlPlaceholder": "OpenAI alap-URL helyőrzője", + "image": "Kép", + "failedCreateChain": "Nem sikerült létrehozni a láncot", + "importDatabase": "Adatbázis importálása", + "allDataLocal": "Minden adat helyben marad", + "sectionTitle": "Szakasz címe", + "failedToggle": "Nem sikerült átkapcsolni", + "editCombo": "Kombináció szerkesztése", + "testResults": "Teszteredmények", + "searchQuery": "Keresési lekérdezés", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "Duplikálás", + "createCombo": "Kombináció létrehozása", + "searchTypeWeb": "Webes keresés", + "addChain": "Lánc hozzáadása", + "prefixLabel": "Előtag címkéje", + "listModelsDesc": "Modellek listázásának leírása", + "databaseSize": "Adatbázis mérete", + "chainCreated": "A lánc létrejött", + "providerTestTimeout": "A szolgáltató tesztje túllépte az időkorlátot", + "routingStrategy": "Útválasztási stratégia", + "translateAction": "Fordítási művelet", + "exportFailed": "Az exportálás sikertelen", + "connectedVerificationPending": "Csatlakoztatva, ellenőrzésre vár", + "a2aQuickStartTitle": "A2A gyors kezdés címe", + "couldNotTest": "Nem sikerült tesztelni", + "testAllCompatible": "Az összes kompatibilis tesztelése", + "anthropicCompatibleName": "Anthropic-kompatibilis név", + "disabling": "Letiltás folyamatban", + "failedEnable": "Sikertelen engedélyezés", + "categoryUtility": "Segédprogram kategória", + "customUrlOptional": "Egyéni URL (opcionális)", + "localProviders": "Helyi szolgáltatók", + "comboNamePlaceholder": "Kombináció nevének helyőrzője", + "memoryRss": "Memória RSS", + "disableProvider": "Szolgáltató letiltása", + "welcomeDesc": "Üdvözlő leírás", + "nameLabel": "Név címkéje", + "allOperational": "Minden működőképes", + "backupNow": "Biztonsági mentés most", + "providerMaxRetriesAria": "Szolgáltató maximális újrapróbálkozásainak ARIA-címkéje", + "textToSpeechDesc": "Szövegfelolvasás leírása", + "machineId": "Gépazonosító", + "globalProxy": "Globális proxy", + "hitsMisses": "Találatok és kihagyások", + "testDesc": "Teszt leírása", + "chatDesc": "Csevegés leírása", + "importSuccess": "Sikeres importálás", + "chat": "Csevegés", + "a2aQuickStartStep1": "A2A gyors kezdés 1. lépése", + "importFailed": "Sikertelen importálás", + "inputPlaceholder": "Beviteli mező helyőrzője", + "providerModelsTitle": "Szolgáltatói modellek címe", + "lastBackup": "Legutóbbi biztonsági mentés", + "yourEndpoint": "Az Ön végpontja", + "autoDisableThresholdDesc": "Automatikus letiltási küszöb leírása", + "rerankDesc": "Újrarangsorolás leírása", + "modelsPathPlaceholder": "Modellek elérési útjának helyőrzője", + "noCombosYet": "Még nincsenek kombinációk", + "connectedVerificationPendingWithError": "Csatlakoztatva, ellenőrzésre vár, hibával", + "comboDefaultsGuideHint1": "Kombinációs alapértékek útmutatójának 1. tippje", + "enableCloudTitle": "Felhő engedélyezése cím", + "configuredProvidersHint": "Konfigurált szolgáltatókra vonatkozó tipp", + "paused": "Szüneteltetve", + "llmProviders": "LLM-szolgáltatók", + "enableCombo": "Kombináció engedélyezése", + "removeProviderOverrideAria": "Szolgáltatói felülbírálás eltávolítása – ARIA", + "nodeVersion": "Node-verzió", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Az exportálás hibával meghiúsult", + "proxyConfigured": "Proxy konfigurálva", + "concurrencyPerModel": "Párhuzamosság modellenként", + "protocolTasksLabel": "Protokollfeladatok címkéje", + "oauthProviders": "OAuth-szolgáltatók", + "lockedCount": "Zároltak száma", + "deleteChainConfirm": "Lánc törlésének megerősítése", + "recentTranslations": "Legutóbbi fordítások", + "zedImportButton": "Zed importálási gomb", + "responsesDesc": "Válaszok leírása", + "testedCount": "Teszteltek száma", + "providersCommaSeparatedPlaceholder": "Szolgáltatók vesszővel elválasztott helyőrzője", + "signatureDefaults": "Alapértelmezett aláírások", + "errorCreating": "Hiba a létrehozás során", + "timeRangeYear": "Időtartomány: év", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "A felhő sikeresen letiltva", + "deleteConfirm": "Törlés megerősítése", + "check": "Ellenőrzés", + "safeSearch": "Biztonságos keresés", + "protocolLastActivity": "Protokoll legutóbbi aktivitása", + "openMcpDashboard": "MCP-irányítópult megnyitása", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", - "showFreeOnly": "Free only", - "addFirstProvider": "Add your first provider", + "chatPathLabel": "Csevegési útvonal címkéje", + "retryDelay": "Újrapróbálkozási késleltetés", + "errorUpdating": "Hiba a frissítés során", + "ideCliIntegrations": "IDE- és CLI-integrációk", + "imageGeneration": "Képgenerálás", + "apiKeyRequired": "API-kulcs szükséges", + "resetAllTitle": "Összes visszaállítása – cím", + "connectionError": "Kapcsolódási hiba", + "modelName": "Modell neve", + "apiKeyForCheck": "API-kulcs az ellenőrzéshez", + "cloudRequestTimeout": "Felhőkérés időtúllépése", + "showConfiguredOnly": "Csak a konfiguráltak megjelenítése", + "showFreeOnly": "Csak ingyenes", + "addFirstProvider": "Adja hozzá első szolgáltatóját", "addFirstProviderDesc": "Csatlakozzon egy AI-szolgáltatóhoz, hogy elindítsa a kérések OmniRoute-on keresztüli irányítását. Használhat ingyenes szolgáltatókat, API-kulcsokat vagy OAuth-fiókokat.", "learnMore": "További információ", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Tartalmazott domainek", + "promptCache": "Promptgyorsítótár", + "cloudConnected": "Felhőhöz csatlakoztatva", + "deleteChain": "Lánc törlése", + "chatPathPlaceholder": "Csevegési útvonal helyőrzője", + "databasePath": "Adatbázis elérési útja", + "usingLocalServer": "Helyi szerver használata", + "globalComboConfig": "Globális kombinációs konfiguráció", + "backupFailed": "A biztonsági mentés sikertelen", + "tabProtocols": "Protokollok lap", + "continue": "Folytatás", + "categorySearch": "Kategóriakeresés", + "rateLimitStatus": "Sebességkorlát állapota", + "repairEnvSuccess": "A környezet javítása sikerült", + "nameRequired": "A név megadása kötelező", + "country": "Ország", + "trackMetricsDesc": "Metrikák követésének leírása", + "durationSecondsShort": "Időtartam (mp)", + "formatConverterDescription": "Formátumkonvertáló leírása", + "cloudBenefitAccess": "Felhőalapú hozzáférés előnye", + "maxRetries": "Újrapróbálkozások maximális száma", + "queueTimeout": "Várólista időtúllépése", "queueDepth": "Várakozási sor mélysége", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Szolgáltató hozzáadása", + "realtime": "Valós idejű", + "totalTranslations": "Fordítások összesen", + "protocolActiveStreamsLabel": "Aktív protokollfolyamok", + "repairEnv": "Környezet javítása", + "modelsCount": "Modellek száma", + "viewBackups": "Biztonsági mentések megtekintése", + "responsesApi": "Responses API", + "copyComboName": "Kombináció nevének másolása", + "failures": "Sikertelen műveletek", + "failedUpdate": "A frissítés sikertelen", + "imageDesc": "Kép leírása", + "failedCreate": "A létrehozás sikertelen", + "remainingOfLimit": "Korlátból fennmaradó", + "protocolsTitle": "Protokollok", + "expirationBannerExpiringSoonDesc": "A lejárati idő hamarosan lejár – leírás", + "source": "Forrás", + "failed": "Sikertelen", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "Mcp gyors kezdés – 1. lépés", + "runTest": "Teszt futtatása", + "loadingFallbackChains": "Tartalék láncok betöltése", + "healthy": "Üzemképes", + "version": "Verzió", + "saveBlockWeighted": "Súlyozott blokk mentése", + "zedImportNone": "Zed-importálás: nincs", + "noBackupsYet": "Még nincsenek biztonsági mentések", + "noGlobalProxy": "Nincs globális proxy", + "noModels": "Nincsenek modellek", + "stickyLimit": "Rögzítési korlát", + "passedCount": "Sikeresek száma", + "zedImportFailed": "A Zed-importálás sikertelen", + "saving": "Mentés", + "testAll": "Összes tesztelése", + "globalProxyDesc": "A globális proxy leírása", + "latencyP99": "P99 késleltetés", + "connectingToCloud": "Csatlakozás a felhőhöz", + "responses": "Válaszok", + "errorDeleting": "Hiba a törlés során", + "openaiPrefixPlaceholder": "Openai-előtag helyőrzője", + "enterPassword": "Adja meg a jelszót", + "openA2aDashboard": "A2A-irányítópult megnyitása", + "enableProvider": "Szolgáltató engedélyezése", + "modeTest": "Mód tesztelése", + "failedDeleteChain": "A lánc törlése sikertelen", + "providerDesc": "Szolgáltató leírása", + "templateLoadHint": "Sablonbetöltési tipp", + "lastFailure": "Legutóbbi hiba", + "moveDown": "Mozgatás lefelé", + "providerLabel": "Szolgáltató címkéje", + "clearCacheFailed": "A gyorsítótár törlése sikertelen", + "imagesGenerations": "Képgenerálások", + "repairEnvWorking": "Környezeti javítás folyamatban", + "millisecondsShort": "ms", + "globalLabel": "Globális címke", + "failuresPlural": "Hibák", + "completionsLegacyDesc": "Korábbi kiegészítések leírása", + "searchProviders": "Szolgáltatók keresése", + "chatPathHint": "Csevegési útvonal tipp", + "defaultStrategyDesc": "Alapértelmezett stratégia leírása", + "latencyP95": "P95 késleltetés", + "textToSpeech": "Szöveg beszéddé alakítása", + "searchType": "Keresés típusa", + "messages": "Üzenetek", + "aggregatorsGateways": "Aggregátor-átjárók", + "comboStrategyAria": "Kombinált stratégia ARIA-címkéje", + "input": "Bemenet", + "testingConnection": "Kapcsolat tesztelése", + "excludeDomains": "Domainek kizárása", + "webCookieProviders": "Webes cookie-szolgáltatók", + "allTestsPassed": "Minden teszt sikeres", + "openaiCompatibleName": "OpenAI-kompatibilis név", + "warningCostOptimizedPartialPricing": "Figyelmeztetés a költségoptimalizált stratégia hiányos áradataira", + "comboDefaultsGuideTitle": "Kombinált alapértékek útmutatójának címe", + "hoursAgo": "órával ezelőtt", + "notAvailable": "Nem érhető el", + "skipAndContinue": "Kihagyás és folytatás", + "moderations": "Moderálások", + "proxyConfig": "Proxykonfiguráció", + "upstreamProxyProviders": "Felsőbb szintű proxyszolgáltatók", + "exportAll": "Összes exportálása", + "queuedCount": "Várakozók száma", + "resetAll": "Összes visszaállítása", + "noTranslations": "Nincsenek fordítások", + "avgLatency": "Átlagos késleltetés", + "throttleStatus": "Korlátozás állapota", + "backupRetentionDesc": "Biztonsági mentések megőrzésének leírása", + "noCBData": "Nincsenek áramkör-megszakító adatok", + "chainDeleted": "Lánc törölve", + "timeLeft": "Hátralévő idő", + "expirationBannerExpired": "Lejárati értesítősáv: lejárt", + "language": "Nyelv", + "invalidFileType": "Érvénytelen fájltípus", + "monitoredProviders": "Felügyelt szolgáltatók", + "errors": "Hibák", + "heap": "Halommemória", + "chatCompletions": "Csevegési kiegészítések", + "exampleTemplatesHint": "Példasablonok tippje", + "retryDelayLabel": "Újrapróbálkozási késleltetés címkéje", + "audioTranscription": "Hangátírás", + "fallbackChainsDesc": "Tartalék láncok leírása", + "exampleTemplates": "Példasablonok", + "connectionsCount": "Kapcsolatok száma", + "modelsPathLabel": "Modellek elérési útjának címkéje", + "activeProvidersHint": "Aktív szolgáltatókra vonatkozó tipp", + "activeLockouts": "Aktív zárolások", + "invalid": "Érvénytelen", + "skipPassword": "Jelszó kihagyása", + "moveUp": "Mozgatás felfelé", + "timeRange": "Időtartomány", + "stickyLimitDesc": "Rögzített korlát leírása", + "cloudBenefitEdge": "Felhőbeli előny: Edge", + "custom": "Egyéni", + "verifying": "Ellenőrzés", + "baseUrlLabel": "Alap-URL címkéje", + "setPassword": "Jelszó beállítása", + "safeSearchStrict": "Szigorú biztonságos keresés", + "noChangesSinceBackup": "Nincs változás a biztonsági mentés óta", + "modelsPathHint": "Modellek elérési útjára vonatkozó tipp", + "audioTranscriptions": "Hangátírások", + "testCombo": "Kombináció tesztelése", + "mcpQuickStartTitle": "Mcp gyors kezdés címe", + "comboUpdated": "Kombináció frissítve", + "weighted": "Súlyozott", + "providers": "Szolgáltatók", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Nincsenek tartalék láncok – leírás", + "yesImport": "Igen, importálás", + "lockoutsAutoRefreshHint": "Zárolások automatikus frissítésére vonatkozó tipp", + "tabApis": "API-k lap", + "sectionDescription": "Szakasz leírása", + "filter": "Szűrő", + "purgeLogsFailed": "A naplók törlése sikertelen", + "latency": "Késleltetés", + "testAllOAuth": "Az összes OAuth tesztelése", + "mcpQuickStartStep3": "Mcp gyors kezdés 3. lépése", + "repairEnvFailed": "A környezet javítása sikertelen", + "zedImportHint": "Zed importálási tipp", + "modelsAcrossEndpoints": "Modellek végpontokon keresztül", + "autoDisableBannedAccounts": "Kitiltott fiókok automatikus letiltása", + "securityDesc": "Biztonság leírása", + "listModels": "Modellek listázása", + "backupRestore": "Biztonsági mentés visszaállítása", + "target": "Cél", + "zedImportSuccess": "Sikeres Zed-importálás", + "lastHeaderUpdate": "Fejléc legutóbbi frissítése", + "categoryCore": "Kategória: alap", + "noFallbackChains": "Nincsenek tartalék láncok", + "noSearchProviders": "Nincsenek keresési szolgáltatók", + "autoBalance": "Automatikus terheléselosztás", + "noModelsYet": "Még nincsenek modellek", + "signatureFamily": "Aláíráscsalád", + "externalApiCalls": "Külső API-hívások", + "providerOverridesDesc": "Szolgáltatói felülbírálások leírása", + "signatureTool": "Aláírási eszköz", + "connectionFailed": "Sikertelen kapcsolódás", + "activeLimitersPlural": "Aktív korlátozók", + "doneDesc": "Befejezés leírása", + "down": "Leállt", + "noDataYet": "Még nincs adat", + "activeProviders": "Aktív szolgáltatók", + "nameInvalid": "Érvénytelen név", + "skip": "Kihagyás", + "createChain": "Lánc létrehozása", + "audioSpeech": "Beszédhang", + "cacheCleared": "Gyorsítótár törölve", + "searchTypeNews": "Kereséstípus: hírek", + "durationMillisecondsShort": "Időtartam (ms)", + "addOpenAICompatible": "Open Ai-kompatibilis hozzáadása", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "Várólistán", + "domainPlaceholder": "Tartomány helyőrzője", + "durationMinutesShort": "Időtartam (perc)", + "verifyingConnection": "Kapcsolat ellenőrzése", + "imageProviders": "Képszolgáltatók", + "protocolToolsLabel": "Protokolleszközök címkéje", + "queryPlaceholder": "Lekérdezés helyőrzője", + "videoGeneration": "Videógenerálás", + "timeRangeWeek": "Időtartomány: hét", + "limitExhausted": "A korlát kimerült", + "failedDisable": "Sikertelen letiltás", + "inMemoryNote": "Memóriabeli megjegyzés", + "compatibleHint": "Kompatibilitási tipp", + "errorShort": "Rövid hibaüzenet", + "advancedHint": "Speciális tipp", + "restoreFailed": "Sikertelen visszaállítás", + "searchProvidersHeading": "Szolgáltatók keresése", + "comboName": "Kombináció neve", + "autoDisableDescription": "Automatikus letiltás leírása", + "embeddingsDesc": "Beágyazások leírása", + "operational": "Működőképes", + "testAllApiKey": "Összes API-kulcs tesztelése", + "backupCreated": "Biztonsági mentés létrehozva", + "errorDuringImport": "Hiba történt az importálás során", + "comboDefaultsGuideHint2": "Alapértelmezett kombinációk útmutatója – 2. tipp", + "connecting": "Csatlakozás", + "fillModelAndProviders": "Adja meg a modellt és a szolgáltatókat", + "syncing": "Szinkronizálás", + "resetConfirm": "Visszaállítás megerősítése", + "trackMetrics": "Mérőszámok követése", + "successful": "Sikeres", + "recovering": "Helyreállítás", + "autoDisableThreshold": "Automatikus letiltás küszöbértéke", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", - "freeTierProviders": "Free Tier Providers", - "freeTierLabel": "Free tier available", + "syncingData": "Adatok szinkronizálása", + "cloudBenefitPorts": "A felhő előnyei – portok", + "compatibleProviders": "Kompatibilis szolgáltatók", + "freeTierProviders": "Ingyenes csomagot kínáló szolgáltatók", + "freeTierLabel": "Ingyenes csomag érhető el", "freeTierProvidersDesc": "Ingyenes szintekkel rendelkező szolgáltatók – egyesekhez API-kulcs regisztráció szükséges, másoknak pedig egyáltalán nincs szükségük hitelesítő adatokra.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", - "gamificationAdmin": "Gamification Admin", + "clearCache": "Gyorsítótár törlése", + "reqs": "Kérések", + "addAnthropicCompatible": "Anthropic-kompatibilis szolgáltató hozzáadása", + "apiKeyProviders": "API-kulcsos szolgáltatók", + "tabsAria": "Lapfülek ARIA-címkéje", + "resetting": "Visszaállítás", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Biztonsági mentés oka: visszaállítás előtt", + "disableCloud": "Felhő letiltása", + "newProviderNameAria": "Új szolgáltató nevének ARIA-címkéje", + "passwordsMismatch": "A jelszavak nem egyeznek", + "a2aQuickStartStep3": "A2A gyors kezdés – 3. lépés", + "liveMonitorDescriptionSuffix": "Élő monitor leírásának utótagja", + "failedAddProvider": "Nem sikerült hozzáadni a szolgáltatót", + "addAtLeastOneProvider": "Adjon hozzá legalább egy szolgáltatót", + "reasonSeparator": "Okok elválasztója", + "zedImporting": "Zed importálása", + "confirmPasswordPlaceholder": "Jelszó megerősítése", + "whatYouGet": "Amit kap", + "signatureSession": "Aláírási munkamenet", + "errorCountNoCode": "Hibák száma kód nélkül", + "testing": "Tesztelés", + "providersCommaSeparated": "Szolgáltatók vesszővel elválasztva", + "exportDatabase": "Adatbázis exportálása", + "hitRate": "Találati arány", + "completionsLegacy": "Kiegészítések (örökölt)", + "removeModel": "Modell eltávolítása", + "timeRangeDay": "Időtartomány: nap", + "cloudRequestFailed": "A felhőkérés sikertelen", + "updatedAt": "Frissítve", + "monitoredProvidersHint": "Felügyelt szolgáltatókra vonatkozó tipp", + "connectionSuccessful": "Sikeres kapcsolódás", + "latencyP50": "Késleltetés P50", + "logsDeleted": "Naplók törölve", + "chatTester": "Csevegéstesztelő", + "safeSearchOff": "Biztonságos keresés kikapcsolva", + "nameHint": "Névre vonatkozó tipp", + "debugToggle": "Hibakeresés kapcsolója", + "embedding": "Beágyazás", + "issuesLabel": "Problémák címkéje", + "optionAny": "Bármelyik", + "maxNestingDepth": "Beágyazási mélység maximuma", + "rerank": "Újrarangsorolás", + "checking": "Ellenőrzés", + "getStarted": "Első lépések", + "restoreSuccess": "Sikeres visszaállítás", + "issuesDetected": "Problémák észlelve", + "signatureCache": "Aláírás-gyorsítótár", + "modelLockouts": "Modellzárolások", + "usingCloudProxy": "Felhőproxy használatban", + "loadingHealth": "Állapot betöltése", + "providerOverrides": "Szolgáltatói felülbírálások", + "audioTranscriptionDesc": "Hangátírás leírása", + "learnedFromHeaders": "Fejlécekből tanult", + "totalRequests": "Összes kérés", + "cloudUnstableNote": "Megjegyzés a felhő instabilitásáról", + "gamificationAdmin": "Gamifikáció adminisztrációja", "monitorAnomaliesAndHealth": "Figyelje az anomáliákat és a rendszer állapotát", - "flaggedAnomalies": "Flagged Anomalies", + "flaggedAnomalies": "Megjelölt anomáliák", "noAnomaliesDetected": "Nem észleltek rendellenességeket", "apiKey": "API kulcs", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 óra)", "zScore": "Z-pontszám", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Gyanús", "tokensCommunityServers": "Közösségi szerverek", - "tokensServerNamePlaceholder": "Server name", + "tokensServerNamePlaceholder": "Szerver neve", "tokensApiKeyPlaceholder": "API kulcs", - "tokensTokenBalance": "Token Balance", - "tokensSendTokens": "Send Tokens", - "tokensRecipientApiKeyId": "Recipient API Key ID", + "tokensTokenBalance": "Tokenegyenleg", + "tokensSendTokens": "Tokenek küldése", + "tokensRecipientApiKeyId": "Címzett API-kulcsának azonosítója", "tokensRecipientApiKeyIdPlaceholder": "Adja meg a címzett API kulcsazonosítóját", - "tokensReasonOptional": "Reason (optional)", + "tokensReasonOptional": "Indoklás (nem kötelező)", "tokensReasonPlaceholder": "pl. bónusz, jutalom", "tokensTransactionHistory": "Tranzakciós előzmények", "tokensNoTransactionsYet": "Még nincsenek tranzakciók", "tokensInviteCodes": "Meghívó kódok", "tokensMaxUses": "Maximális felhasználás", - "tokensRedeemCode": "Redeem Code", - "tokensRedeemCodePlaceholder": "Enter invite code", + "tokensRedeemCode": "Kód beváltása", + "tokensRedeemCodePlaceholder": "Add meg a meghívókódot", "tokensYourActiveInvites": "Az Ön aktív meghívásai", "tokensTransferSuccess": "Sikeres átvitel ({idempotencyKey})", "tokensTransferFailed": "Sikertelen átvitel", @@ -757,27 +757,27 @@ }, "tokensLastSync": "Utolsó szinkronizálás: {date}", "tokensDisconnect": "Lecsatlakozás", - "tierCoverageTitle": "Tier coverage", + "tierCoverageTitle": "Szintlefedettség", "tierCoverageSubtitle": "A tartalék rétegenként konfigurált szolgáltatók", "batchDetailCopyId": "Másolja az azonosítót", "batchDetailClose": "Bezárás", - "batchDetailEndpoint": "Endpoint", + "batchDetailEndpoint": "Végpont", "batchDetailModel": "Modell", "batchDetailWindow": "Ablak", "batchDetailCreated": "Létrehozva", "providerTopologyEmpty": "Még nem csatlakozott szolgáltató", - "badgeToastUnlocked": "Badge Unlocked!", + "badgeToastUnlocked": "Jelvény feloldva!", "batchListSearchPlaceholder": "Keresés azonosító, végpont, modell szerint…", "batchListDeleteAllCompletedTitle": "Törölje az összes befejezett köteget", - "batchListBatchesTable": "Batches", + "batchListBatchesTable": "Kötegek", "changelogViewerLoading": "Változásnapló betöltése a GitHubról...", "profile": "Profil", - "profileLoading": "Loading profile...", - "profileHowToEarn": "How to earn", + "profileLoading": "Profil betöltése...", + "profileHowToEarn": "Hogyan szerezhető", "bootstrapBannerDismiss": "Elvetés", "batchListDeleteBatchTitle": "Törölje a köteget és a hozzá tartozó fájlokat", - "leaderboardYourRank": "Your Rank", - "leaderboardLoading": "Loading leaderboard...", + "leaderboardYourRank": "Helyezésed", + "leaderboardLoading": "Ranglista betöltése...", "batchFileDetailCopyId": "Másolja az azonosítót", "batchFileDetailClose": "Bezárás", "batchFileDetailFailedToLoad": "Nem sikerült betölteni a fájl tartalmát", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Továbbiak betöltése…", "recommended": "Ajánlott", "understand": "Értem", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "Kötegelt feldolgozás", + "batchConceptSubtitle": "Dolgozz fel több ezer kérést aszinkron módon, körülbelül 50%-os költséggel (24 órás időablakban). Ideális kiértékelésekhez, osztályozáshoz és beágyazásokhoz.", + "batchConceptHowItWorks": "Hogyan működik", + "batchConceptBenefit50pct": "50% kedvezmény a bemeneti és kimeneti tokenekre", + "batchConceptAsync24h": "Aszinkron feldolgozás 24 órás teljesítési időablakkal", + "batchConceptUseCases": "Ideális tömeges osztályozáshoz, kiértékelésekhez és beágyazásokhoz", + "batchHeaderSubtitle": "Több kérés futtatása egyetlen feladatként", + "batchStep1": "1 · JSONL feltöltése", + "batchStep1Desc": "Kérések hozzáadása", + "batchStep2": "2 · Köteg létrehozása", + "batchStep2Desc": "Feladat futtatása", + "batchStep3": "3 · Eredmények lekérése", + "batchStep3Desc": "Kimenet letöltése", + "filesConceptTitle": "Kötegfájlok", + "filesConceptSubtitle": "A kötegek által használt JSONL-fájlok: bemeneti kérések, eredmények és hibák.", + "filesConceptInput": "Bemenet — a JSONL-fájlod, soronként egy kéréssel", + "filesConceptOutput": "Kimenet — a befejezett kérések eredményei", + "filesConceptError": "Hibák — sikertelen kérések", + "filesConceptRetention": "Megőrzés: alapértelmezés szerint 30 nap (Anthropic esetén 29 nap)", + "wizardTitle": "Új köteg", + "wizardClose": "Bezárás", + "wizardNext": "Tovább", + "wizardBack": "Vissza", + "wizardCancel": "Mégse", + "wizardCreate": "Köteg létrehozása", + "wizardCreating": "Létrehozás…", + "wizardStep1Destination": "Cél", + "wizardStep2Input": "Bemenet", + "wizardStep3Validate": "Ellenőrzés", + "wizardStep4Cost": "Költség és létrehozás", + "wizardProviderLabel": "Szolgáltató", + "wizardEndpointLabel": "Végpont", + "wizardModelLabel": "Modell", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (átalakítjuk)", + "wizardDropOrPick": "Húzzon ide egy fájlt, vagy kattintson a kiválasztáshoz", + "wizardCsvMappingTitle": "CSV-oszlopok hozzárendelése → kérésmezők", + "wizardCsvMappingAddField": "Mező hozzáadása", "wizardCsvNoColumns": "Nem találhatók oszlopok a CSV fejlécében.", "wizardCsvIgnoreColumn": "— figyelmen kívül hagyás —", "wizardCsvCustomIdMapped": "custom_id leképezve", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} sor feldolgozva", "wizardCsvRowsSkipped": "{count} sor kihagyva", "wizardCsvRowError": "Sor {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Minden sor érvényes", "wizardValidating": "Ellenőrzés…", "wizardValidationParseFailed": "Az ellenőrzés sikertelen — a tartalom nem elemezhető.", "wizardValidationSummary": "{lines} sor · {ids} egyedi custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Duplikált custom_ids észlelve:", "wizardValidationFirstErrors": "Hibák (első {count}):", "wizardValidationLine": "Sor {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Ellenőrzési hibák", + "wizardValidationPreview": "Előnézet (az első 5 kérés)", + "wizardValidationSamplingNote": "A fájl nagy méretű — az ellenőrzés mintavétellel történt (az első 1000 + az utolsó 100 sor). A teljes ellenőrzés a szerveroldalon fut.", + "wizardCostSync": "Szinkron költség", + "wizardCostBatch": "Kötegelt költség (-50%)", + "wizardCostSavings": "Megtakarítás", + "wizardCostEstimatedNotice": "Becsült költség — a tényleges számlázás eltérhet.", + "wizardErrorUpload": "A fájl feltöltése sikertelen. Próbálja újra.", + "wizardErrorCreate": "A köteg létrehozása sikertelen. Próbálja újra.", + "wizardEmptyProviders": "Köteg létrehozásához csatlakoztasson egy kötegelt feldolgozást támogató szolgáltatót (OpenAI, Anthropic vagy Gemini).", + "uploadModalTitle": "Kötegfájl feltöltése", + "uploadModalDropOrPick": "Húzzon ide egy .jsonl fájlt, vagy kattintson a kiválasztáshoz", + "uploadModalUpload": "Feltöltés", + "uploadModalCancel": "Mégse", + "uploadModalError": "A feltöltés sikertelen. Próbálja újra.", + "uploadModalSuccess": "Feltöltve", + "uploadModalSizeLimit": "Legfeljebb 512 MB", + "batchListNewButton": "Új köteg", + "batchListAutoRefresh": "Automatikus frissítés 30 mp-enként", + "batchListCostColumn": "Költség", + "batchActionCancel": "Mégse", + "batchActionDownloadOutput": "Kimenet letöltése", + "batchActionDownloadErrors": "Hibák letöltése", + "batchActionRetry": "Sikertelenek újrapróbálása", + "batchActionRetryConfirm": "Újrapróbálja a(z) {n} sikertelen kérést? A végső költség a ténylegesen felhasznált tokenek számától függ.", + "expirationBadgeCritical": "Kritikus", + "expirationBadgeWarning": "Hamarosan", + "expirationBadgeNormal": "Függőben", + "expirationBadgeExpired": "Lejárt", + "filesListUploadButton": "Feltöltés", + "filesListUsedByColumn": "Használja", + "filesListUsedByNone": "Nincs", + "filesListUsedByRoleInput": "bemenet", + "filesListUsedByRoleOutput": "kimenet", + "filesListUsedByRoleError": "hiba", + "filesListSizeColumn": "Méret", + "batchListProgressPartial": "(részleges)", + "batchListProviderColumn": "Szolgáltató", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", - "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListProviderOther": "Egyéb", + "batchListTitle": "Kötegek", + "batchListCount": "{count} köteg", + "batchListRemovingCompleted": "Eltávolítás…", + "batchListRemoveCompleted": "Befejezettek eltávolítása", + "batchListTableStatus": "Állapot", + "batchListTableId": "Azonosító", + "batchListTableEndpoint": "Végpont", + "batchListTableModel": "Modell", + "batchListTableProgress": "Folyamat", + "batchListTableCreated": "Létrehozva", + "batchListTableExpires": "Lejárat", + "batchListLoading": "Betöltés…", + "batchListEmpty": "Nem találhatók kötegek", + "batchListValidating": "Ellenőrzés…", + "batchStatusAll": "Minden állapot", + "batchStatusInProgress": "Folyamatban", + "batchStatusValidating": "Ellenőrzés alatt", + "batchStatusFinalizing": "Véglegesítés", + "batchStatusCompleted": "Befejezve", + "batchStatusFailed": "Sikertelen", + "batchStatusCancelled": "Megszakítva", + "batchStatusCancelling": "Megszakítás", + "batchStatusExpired": "Lejárt", + "batchStatusCompletedWithFailures": "befejezve, hibákkal", + "batchStatusInProgressWithFailures": "folyamatban (hibákkal)", + "batchStatusFinalizingWithFailures": "véglegesítés (hibákkal)", + "batchStatusCancelledWithFailures": "megszakítva, hibákkal", + "batchStatusExpiredWithFailures": "lejárt (részleges)", + "wizardCostEstimating": "Költség becslése…", + "wizardCostRequests": "Kérések", + "wizardCostInputTok": "bemeneti token", + "wizardCostOutputTok": "kimeneti token", + "wizardCostWindow": "Ablak", + "wizardDestinationSelectProvider": "Válasszon szolgáltatót…", + "wizardDestinationSelectModel": "Válasszon modellt…", + "wizardDestinationConnectProvider": "Szolgáltató csatlakoztatása", + "batchListBatchCreated": "A(z) {id} köteg létrejött — lista frissítése…", + "batchListBatchCreatedDismiss": "Bezárás", + "batchListRefreshing": "Frissítés…", + "batchListRefresh": "Frissítés", + "uploadFileModalRemove": "Eltávolítás", + "uploadFileModalUploading": "Feltöltés…", + "wizardInputReading": "Fájl beolvasása…", + "wizardInputReady": "Kész", + "wizardInputLargeFileLabel": "Nagy fájl — mintavételes ellenőrzés", + "wizardInputCsvJsonlReady": "A JSONL létrejött — ellenőrzésre kész.", + "wizardInputLargeFileWarning": "Nagy fájl észlelve — az ellenőrzés mintavétellel történik (az első 5 MB + az utolsó 100 KB). A teljes ellenőrzés a szerveren történik.", + "wizardCostWindow24h": "24 órás befejezési időablak", + "wizardValidationFieldsOk": "a kötelező mezők érvényesek", + "filesListDelete": "Törlés", + "filesListDownload": "Letöltés", + "batchDetailActionCancel": "Köteg megszakítása", + "batchDetailActionRetry": "Sikertelen kérések újrapróbálása", + "batchDetailCancelling": "Megszakítás…", + "batchDetailRetrying": "Újrapróbálás előkészítése…", + "batchDetailCancelConfirm": "Megszakítja ezt a köteget? A folyamatban lévő kérések leállnak.", + "batchActionCancelError": "Nem sikerült megszakítani a köteget. Próbálja újra.", + "batchActionRetryError": "Nem sikerült újrapróbálni a sikertelen kéréseket. Próbálja újra.", + "batchConceptRetentionNote": "Az eredmény- és hibafájlokat 30 napig őrizzük meg (Anthropic: 29 napig)", "batchFilesSizeColumn": "Méret", "toggleNoAuthProvider": "Kapcsolja ki a no-auth szolgáltatót", "loadingModels": "Modellek betöltése…", @@ -988,21 +988,21 @@ "disabled": "Letiltva", "featureFlagOmnirouteEmergencyFallbackDescription": "A keretet kimerítő kérések átirányítása a vészhelyzeti ingyenes tartalék szolgáltatóhoz/modellhez.", "featureFlagArenaEloSyncEnabledDescription": "Rendszeres Arena AI ranglista ELO szinkronizáció engedélyezése a modellintelligencia rangsorokhoz.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Beszélgetés-összefoglalók létrehozása és beillesztése, amikor a kombinált útválasztás modellt vált. Tiltsa le, ha a modellváltásokat egymástól függetlenül szeretné kezelni, és meg szeretné akadályozni a háttérben futó átadási kéréseket minden meglévő és jövőbeli kombinációnál.", "featureFlagExposeCcDiscoveryAliasesDescription": "Hirdesse a claude/<provider>/<model> tükör azonosítókat a /v1/models-on, hogy a Claude Code átjáró modell felfedezése nem Claude modelleket is listázzon. Figyelmeztetés: globális engedélyezés esetén megduplázza a katalógus bejegyzéseket minden kliens számára.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "A no-think/<provider>/<model> átjáróaliasok főkapcsolója. Bekapcsolva (alapértelmezett): a /v1/models minden jogosult, gondolkodásra képes Claude modellhez meghirdet egy gondolkodás nélküli változatot, és a kérésben küldött no-think/ azonosítót visszafejti a valódi modellre, letiltott érveléssel. Kikapcsolva: nem hirdet meg változatokat, és a no-think/ azonosítót ugyanúgy kezeli, mint bármely más ismeretlen modellazonosítót. Modellenként a ModelSpec.noThinkingAlias engedélyezési/letiltási beállítása bekapcsolt állapotban is érvényes.", "featureFlagChatVirtualLanesEnabledDescription": "Tegye lehetővé a bérlőnkénti adaptív virtuális beléptetősávokat a szolgáltatók felé történő továbbításhoz (#9654): az egyik bérlő kiugró terhelése már nem okoz 503-as hibát egy másiknál. Az OMNIROUTE_CHAT_VIRTUAL_LANES környezeti változó felülírja ezt a vezérlőpult-beállítást; a változtatások a szerver újraindításakor lépnek életbe.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Irányítópult szolgáltatói oldalai: az Ingyenes jelvény csak azoknál a jelzéseknél jelenjen meg, amelyeket a szolgáltató figyelembe vesz — figyelmen kívül hagyja a megjelenítési néven alapuló heurisztikát, a nem logikai típusú ingyenességi mezőket és a dokumentált ingyenes szinttel nem rendelkező regisztrált szolgáltatók :free utótagjait. Kikapcsolt állapotban a korábbi jelvényszabály marad érvényben.", + "featureFlagProxySkipRecentlyFailedDescription": "A proxykészletek és az opencode fiókonkénti rotációja egy folyamatonként meghatározott időszakig nem választja újra az éppen meghibásodott proxyt (elutasított TCP-próba vagy rajta keresztül kapott 429-es válasz); ez az időszak minden ismétlődéskor megduplázódik egy felső korlátig. A proxy állapota nem kerül rögzítésre; ha minden jelölt félre van téve, a választás változatlan marad. Alapértelmezés szerint kikapcsolva: a kiválasztási sorrend pontosan megegyezik az egyszerű rotációéval.", + "featureFlagProxyPoolEgressObservationDescription": "A vezérlőpulton jelenjen meg egy proxykészlet alatt, hogy az elmúlt 24 órában hány megfigyelt kimenő IP-cím szolgálta ki a tagjait, hány kapcsolat használta ezeket, és legfeljebb hány kapcsolat volt megfigyelhető egyetlen IP-cím mögött. Csak olvasható, a proxynaplóból számított adat, amelyet a rendszer soha nem használ útválasztásra. Alapértelmezés szerint kikapcsolva: a készletszerkesztő változatlan, a megfigyelési útvonal pedig null értékkel válaszol.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "A proxyk állapotellenőrzése során a cél által elutasított próba (401/403/429: a proxy továbbította a kérést, a cél pedig elutasította ezt a kimenő IP-címet) a kiszolgált próbához hasonlóan nullázza a proxy egymást követő hibáinak számlálóját. Alapértelmezés szerint kikapcsolva: az elutasítás semleges marad, és nem változtatja meg a sorozatot. Az 5xx válasz mindkét esetben eldönthetetlen marad, és egy elutasítás soha nem távolít el, nem tilt le és nem aktivál újra proxyt.", "sidebar": { "home": "Otthon", "dashboard": "Irányítópult", "providers": "Szolgáltatók", "combos": "Kombók", "usage": "Használat", - "analytics": "Analytics", + "analytics": "Analitika", "costs": "Költségek", "health": "Egészség", "proxy": "Proxy", @@ -1012,30 +1012,30 @@ "settings": "Beállítások elemre", "translator": "Fordító", "playground": "Játszótér", - "searchTools": "Search Tools", + "searchTools": "Keresési eszközök", "agents": "Ügynökök", "cloudAgents": "Felhőügynökök", - "memory": "Memory", - "skills": "Skills", + "memory": "Memória", + "skills": "Készségek", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", "chaosConfig": "Káosz mód", "docs": "Dokumentumok", "issues": "problémák", "endpoints": "Végpontok", - "endpointsSubtitle": "Your AI connection URLs", + "endpointsSubtitle": "Az Ön AI-kapcsolati URL-jei", "apiManager": "API-kezelő", "apiManagerSubtitle": "API-kulcsok és hozzáférés kezelése", "embeddedServices": "Beágyazott Szolgáltatások", "embeddedServicesSubtitle": "Helyi proxyszolgáltatások kezelése", "logs": "Naplók", - "webhooks": "Webhooks", - "webhooksSubtitle": "Get notified of events", + "webhooks": "Webhookok", + "webhooksSubtitle": "Értesítések eseményekről", "logExport": "Naplóexportálás", "logExportSubtitle": "Hívásnaplók küldése kifelé", "combosSubtitle": "Csoportos szolgáltatók a feladatátvételhez", "batchSubtitle": "Több kérés feldolgozása", - "contextCavemanSubtitle": "Prompt compression", + "contextCavemanSubtitle": "Prompttömörítés", "contextRtkSubtitle": "Kimeneti szűrés", "auditLog": "Ellenőrzési napló", "shutdown": "Leállítás", @@ -1069,50 +1069,50 @@ "cliToolsShort": "Eszközök", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "Kötegelt feladatok", + "themeSystem": "Témarendszer", + "whitelabelingDesc": "A saját márkázás leírása", + "switchThemes": "Témaváltás", + "themeAccentDesc": "A téma kiemelőszínének leírása", + "uploadFavicon": "Favicon feltöltése", + "themeDark": "Sötét téma", + "customLogoDesc": "Az egyéni logó leírása", + "sidebarVisibilityToggle": "Az oldalsáv láthatóságának kapcsolója", + "themeAccent": "A téma kiemelőszíne", + "resetFavicon": "Favicon visszaállítása", + "whitelabeling": "Saját márkázás", + "darkMode": "Sötét mód", + "uploadLogo": "Logó feltöltése", + "themeLight": "Világos téma", + "appName": "Alkalmazás neve", + "appNameDesc": "Az alkalmazás nevének leírása", + "resetLogo": "Logó visszaállítása", + "customFavicon": "Egyéni favicon", + "hideHealthLogs": "Állapotnaplók elrejtése", + "customLogo": "Egyéni logó", + "appearance": "Megjelenés", + "themeSelectionAria": "Témaválasztás ARIA-címkéje", + "themeCreate": "Téma létrehozása", + "customFaviconDesc": "Egyéni favicon leírása", + "logoPreview": "Logó előnézete", + "themeCustom": "Egyéni téma", + "hideHealthLogsDesc": "Állapotnaplók elrejtésének leírása", + "faviconPreview": "Favicon előnézete", + "changelog": "Változásnapló", + "contextSection": "Kontextus és gyorsítótár", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Motor-kombinációk", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Tömörítési beállítások", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Kombinációs stúdió", "combosLiveSubtitle": "Élő útválasztási kaszkád", "compressionStudio": "Compression Studio", "compressionExclusions": "Kizárások", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Élő motor-kaszkád", "compressionExclusionsSubtitle": "Per-model/endpoint megkerülés", "chaosConfigSubtitle": "Többmodelles párhuzamos végrehajtás", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Útválasztás", + "protocolsSection": "Protokollok", + "agentsAiSection": "Ügynökök és MI", + "cacheContextSection": "Gyorsítótár és kontextus", + "analyticsSection": "Analitika", + "costsSection": "Költségek", + "monitoringSection": "Monitorozás", + "auditSecuritySection": "Naplózás és biztonság", + "devtoolsSection": "Fejlesztői eszközök", + "configurationSection": "Konfiguráció", + "aiFeaturesSection": "MI-funkciók", "mcp": "MCP", "a2a": "A2A", "plugins": "Bővítmények", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "API-végpontok", + "batchFiles": "Fájlok", + "analyticsEvals": "Kiértékelések", + "analyticsSearch": "Keresés", + "analyticsUtilization": "Kihasználtság", + "analyticsComboHealth": "Kombinációk állapota", + "analyticsCompression": "Tömörítés", + "costsBudget": "Költségkeret", "costsFreeTiers": "Ingyenes szint kerete", "costsFreeTiersSubtitle": "Havi ingyenes tokenkeretek", "freeProviderRankings": "Ingyenes szolgáltatók rangsora", "freeProviderRankingsSubtitle": "A legjobb ingyenes szolgáltatók a modell ELO pontszámai alapján rangsorolva", "radar": "Radar Katalógus", "radarSubtitle": "Közösséggel gazdagított ingyenes modell katalógus", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", - "auditA2a": "A2A Audit", + "costsQuotaShare": "Kvótamegosztás", + "costsPricing": "Árazás", + "logsProxy": "Proxynaplók", + "logsConsole": "Konzol", + "logsActivity": "Aktivitás", + "auditMcp": "MCP-audit", + "auditA2a": "A2A-audit", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Megjelenés", + "settingsAi": "AI-beállítások", + "settingsSecurity": "Biztonság", "settingsAccessTokens": "Hozzáférési tokenek", "settingsFeatureFlags": "Jellemző zászlók", "settingsCache": "Gyorsítótár", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "Jogosultságkezelés", + "settingsRouting": "Útválasztás", + "settingsResilience": "Hibatűrés", "modelLockout": "Modell kizárás", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Speciális", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Szolgáltatói kvóta", + "providerQuota": "Szolgáltatói kvóta", + "runtime": "Futási környezet", + "consoleLogs": "Konzolnaplók", + "logsTimeline": "Idővonal", "logsTimelineSubtitle": "Vizuális kérelem idővonal", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Beszélgetések", + "conversationsSubtitle": "Többfordulós, ügynökalapú beszélgetések", + "globalRouting": "Globális útválasztás", + "mitmProxy": "MITM-proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Ügynökalapú funkciók", + "otherFeaturesSection": "Egyéb funkciók", + "compressionContextGroup": "Kontextustömörítés", + "gamificationGroup": "Játékosítás", + "toolsGroup": "Eszközök", + "integrationsGroup": "Integrációk", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "costsParametersGroup": "Költségparaméterek", + "auditGroup": "Auditálás", + "batchGroup": "Kötegelt feldolgozás", + "homeSubtitle": "Irányítópult áttekintése", + "providersSubtitle": "AI-szolgáltatók kezelése", + "quotaTrackerSubtitle": "Használati korlátok nyomon követése", + "providerQuotaSubtitle": "Szolgáltatói használati korlátok nyomon követése", + "runtimeSubtitle": "Valós idejű hibatűrés és munkamenetek", + "contextCombosSubtitle": "Tömörítési motorok kombinálása", + "cliToolsSubtitle": "CLI-futtatókörnyezetek konfigurálása", + "agentsSubtitle": "Helyi ügynökök kezelése", + "cloudAgentsSubtitle": "Felhőalapú ügynökök kezelése", + "apiEndpointsSubtitle": "Egyéni végpontok közzététele", + "proxySubtitle": "HTTP-proxy beállításai", + "mitmProxySubtitle": "MITM-elfogás", + "oneProxySubtitle": "Nyilvános proxyátjáró", + "leaderboard": "Ranglista", + "profile": "Profil", + "tokens": "Tokenek", + "gamificationAdmin": "Játékosítás adminisztrációja", + "leaderboardSubtitle": "Helyezések és eredmények", + "profileSubtitle": "Fiók és beállítások", + "tokensSubtitle": "Tokenhasználat és költségkeretek", + "gamificationAdminSubtitle": "Anomáliafigyelés és csalás elleni védelem", + "usageSubtitle": "Forgalmi és használati statisztikák", + "analyticsComboHealthSubtitle": "Kombinált célpontok megbízhatósága", + "analyticsUtilizationSubtitle": "Szolgáltatók kihasználtsága", + "costsSubtitle": "Kiadások részletezése", + "cacheSubtitle": "Gyorsítótár-találati arányok", + "analyticsCompressionSubtitle": "Tokenmegtakarítási statisztikák", + "analyticsSearchSubtitle": "Keresőeszköz-elemzések", + "analyticsEvalsSubtitle": "Kiértékelési tesztcsomag eredményei", "providerStats": "Szolgáltatói statisztikák", "providerStatsSubtitle": "Késleltetési és teljesítménymutatók", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Alkalmazásnaplók", + "logsProxySubtitle": "Proxyforgalmi naplók", + "consoleLogsSubtitle": "Konzolkimenet", + "logsActivitySubtitle": "Felhasználói tevékenységnapló", + "healthSubtitle": "Rendszerállapot-ellenőrzés", + "costsPricingSubtitle": "Modellenkénti árazási szabályok", + "costsBudgetSubtitle": "Költségkeret-korlátok", + "costsQuotaShareSubtitle": "Szolgáltatói kvóták megosztása a kulcsok között", + "auditLogSubtitle": "Engedélyezési audit", + "auditMcpSubtitle": "MCP-szerveraudit", + "auditA2aSubtitle": "A2A-protokollaudit", + "translatorSubtitle": "Formátumátalakítás", + "playgroundSubtitle": "Promptok élő tesztelése", + "searchToolsSubtitle": "Keresőeszköz-nyilvántartás", + "memorySubtitle": "Tartós ügynökmemória", + "omniSkillsSubtitle": "Sandbox-készségnyilvántartás", + "agentSkillsSubtitle": "A2A-készségregiszter", + "mcpSubtitle": "MCP-kiszolgáló vezérlői", + "a2aSubtitle": "A2A-protokollkiszolgáló", "pluginsSubtitle": "Bővítmény-piactér és telepítések", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Gyorsítótárazott médiafájlok", + "batchFilesSubtitle": "Kötegelt bemeneti/kimeneti fájlok", + "settingsSubtitle": "Összes beállítás", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Téma és elrendezés", + "settingsAiSubtitle": "Az AI alapértelmezett viselkedése", + "globalRoutingSubtitle": "Globális útválasztási szabályok", + "settingsResilienceSubtitle": "Újrapróbálkozások és megszakítók", + "settingsAdvancedSubtitle": "Haladó felhasználói beállítások", + "settingsSecuritySubtitle": "Hitelesítés és titkosítás", "settingsAccessTokensSubtitle": "Hatókörrel rendelkező CLI tokenek a távoli módhoz", "settingsFeatureFlagsSubtitle": "Kapcsolja be a rendszer képességeit", "settingsCacheSubtitle": "Modell katalógus és válasz gyorsítótárazás", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Oldalsáv", + "settingsSidebarSubtitle": "Az oldalsáv elrendezésének testreszabása", "settingsAuthzSubtitle": "Útvonal-nyilvántartás és megkerülési szabályzat", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Dokumentáció", + "issuesSubtitle": "Hiba jelentése", + "changelogSubtitle": "Kiadási megjegyzések", "costsQuotaPlans": "Díjcsomagok és kvóták", "costsQuotaPlansSubtitle": "Díjcsomagok konfigurálása szolgáltatónként", "activity": "Tevékenység", @@ -1275,11 +1275,11 @@ "systemGroup": "Rendszer", "costsOverview": "Áttekintés", "costsOverviewSubtitle": "Konszolidált költségelemzés", - "agentBridge": "Agent Bridge", + "agentBridge": "Agenthíd", "agentBridgeSubtitle": "IDE-ügynök forgalmának elfogása", "trafficInspector": "Forgalomvizsgáló", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Az alkalmazásaiból érkező kérés- és válaszforgalom vizsgálata", + "trafficInspectorPurpose": "Pontosan megtekintheti, hogy alkalmazása mit küld az AI-szolgáltatóknak, és mit kap tőlük. Bármely OpenAI-kompatibilis klienssel működik.", "cliCode": "CLI kód", "cliCodeSubtitle": "Az OmniRoute-ra mutató kódeszközök", "cliAgents": "CLI ügynökök", @@ -1318,9 +1318,9 @@ "noResults": "Nincs találat" }, "webhooks": { - "title": "Webhooks", + "title": "Webhookok", "description": "Konfigurálja a HTTP-visszahívásokat a rendszereseményekhez.", - "configuredWebhooks": "Configured Webhooks", + "configuredWebhooks": "Beállított webhookok", "configuredWebhooksDesc": "Kezelheti a kézbesítési végpontokat, a feliratkozott eseményeket, az állapotot és a tesztküldéseket.", "addWebhook": "Webhook hozzáadása", "editWebhook": "Webhook szerkesztése", @@ -1345,7 +1345,7 @@ "refresh": "Frissítés", "loading": "Webhookok betöltése...", "never": "Soha", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {nincs hiba} one {# hiba} other {# hiba}}", "testWebhook": "Teszt küldése", "testSuccess": "A teszt webhook sikeresen elküldve.", "testFailed": "A webhook tesztelése nem sikerült.", @@ -1429,19 +1429,19 @@ "secretKeyHint": "A payload fejlécének aláírására szolgál a hitelesítéshez." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "Discord-webhook URL-címe", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "A Discord csatorna integrációs beállításaiból kimásolt webhook URL.", "tutorial": "Hogyan hozzon létre Discord webhookot:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "Slack-webhook URL-címe", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "A Slack Incoming Webhooks integrációból kimásolt webhook URL.", "tutorial": "Hogyan hozzon létre Slack webhookot:" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "Telegram-bot tokenje", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "A bot létrehozásakor a @BotFather-től kapott HTTP API token.", "chatId": "Telegram Chat ID / csatorna", @@ -1451,17 +1451,17 @@ } }, "compliance": { - "auditTitle": "Audit", + "auditTitle": "Auditálás", "auditDescription": "Tekintse át a megfelelőségi eseményeket és az MCP-eszközhívásokat egyetlen működési nézetből.", "complianceTab": "Megfelelés", - "mcpTab": "MCP Audit", + "mcpTab": "MCP-auditálás", "title": "Megfelelőségi audit", "description": "A megfelelőségi ellenőrzési napló által rögzített szabályzat, hozzáférés, szolgáltató és biztonsági események.", "eventType": "Esemény típusa", "eventTypePlaceholder": "Szűrés művelet vagy eseménytípus szerint", "severity": "Súlyosság", "allSeverities": "Minden súlyosság", - "info": "Info", + "info": "Információ", "warning": "Figyelmeztetés", "critical": "Kritikus", "sourceIp": "Forrás IP", @@ -1471,7 +1471,7 @@ "details": "Részletek", "timestamp": "Időbélyeg", "from": "-tól", - "to": "To", + "to": "Címzett", "refresh": "Frissítés", "export": "Exportálás", "clearFilters": "Tiszta szűrők", @@ -1488,7 +1488,7 @@ "system": "rendszer", "previous": "Előző", "next": "Következő", - "mcpAudit": "MCP Audit", + "mcpAudit": "MCP-audit", "mcpAuditDesc": "Az MCP-kiszolgáló által rögzített eszközhívás-ellenőrzési bejegyzések.", "failedFetchMcpAudit": "Nem sikerült lekérni az MCP-naplót.", "tool": "Eszköz", @@ -1500,7 +1500,7 @@ "success": "Siker", "failure": "Kudarc", "noMcpEvents": "Nem rögzítettek MCP audit eseményt.", - "a2aAudit": "A2A Audit", + "a2aAudit": "A2A-audit", "a2aAuditDesc": "Az A2A szerver által rögzített feladat végrehajtási ellenőrzési nyomvonal.", "a2aShowingTasks": "{count}/{total} feladat megjelenítése", "a2aSkill": "Ügyesség", @@ -1585,18 +1585,18 @@ "comboDescription": "Modellkombinációk tartalékkal", "usage": "Használat és elemzések", "usageDescription": "Kövesse nyomon API-használatát, tokenfelhasználását és kérésnaplóit", - "analytics": "Analytics", + "analytics": "Analitika", "analyticsDescription": "Diagramok, trendek és értékelési betekintések", "cliTools": "CLI eszközök", "cliToolsDescription": "A CLI eszközök konfigurálása", "home": "Otthon", "homeDescription": "Üdvözöljük az OmniRoute oldalán", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Végpontok", + "endpointDescription": "Proxyvégpontok, MCP-, A2A- és API-végpontok kezelése", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol-kiszolgálók és -eszközök kezelése", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Agent-to-Agent protokollfeladatok és megfigyelhetőség", "settings": "Beállítások elemre", "settingsDescription": "Kezelje beállításait", "openaiCompatible": "OpenAI kompatibilis", @@ -1605,49 +1605,49 @@ "mediaDescription": "Készítsen képeket, videókat és zenét", "themes": "Témák", "themesDescription": "Válasszon színtémát az egész irányítópult panelhez", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", - "auditA2a": "A2A Audit", + "costsDescription": "Kiadások nyomon követése, trendek elemzése és az AI-költségkeret kezelése minden szolgáltatónál", + "cacheDescription": "A szolgáltatói promptgyorsítótár hatékonyságának és a helyi szemantikus válaszok újrafelhasználásának figyelése.", + "limitsDescription": "Sebességkorlátok és kvóták beállítása API-kulcsonként és szolgáltatónként", + "runtimeDescription": "Valós idejű futásidejű megfigyelhetőség — megszakítók, lehűlési időszakok, modellzárolások, munkamenetek és kvótariasztások", + "apiManagerDescription": "API-kulcsok és hozzáférés-vezérlés kezelése az OmniRoute-példányhoz", + "batchDescription": "Nagy mennyiségű kérés aszinkron feldolgozása kötegelt API-hívásokkal", + "contextCavemanDescription": "Szabályalapú üzenettömörítés, nyelvi csomagok, analitika és kimeneti módok vezérlése.", + "contextRtkDescription": "Parancsérzékeny tömörítés eszközkimenetekhez, terminálnaplókhoz és buildelési eredményekhez.", + "contextCombosDescription": "A motorok kombinálási módjának meghatározása különböző útválasztási helyzetekhez.", + "changelogDescription": "Legyen naprakész a platform legújabb funkcióival és bejelentéseivel kapcsolatban.", + "agentsDescription": "AI-ügynökeszközök kezelése és konfigurálása: Codex, Devin, Jules és egyéni ügynökök", + "cloudAgentsDescription": "Felhőalapú AI-ügynökök koordinálása élő feladatkövetéssel és tervjóváhagyással", + "memoryDescription": "Tartós társalgási memória szemantikus kereséssel és FTS5 teljes szöveges indexeléssel", + "skillsDescription": "Sandbox-készségek telepítése és kezelése promptok és eszközök automatizált végrehajtásához", + "agentSkillsDescription": "Ügynökkompatibilis készségkatalógus egykattintásos URL-másolással az AI-kliensek integrációjához", + "translatorDescription": "Promptok fordítása és tesztelése API-formátumok között: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Promptok interaktív tesztelése élő szolgáltatói válaszokkal és formátumvizsgálattal", + "searchToolsDescription": "Keresési analitika, szolgáltatói bontás, gyorsítótár-találati arányok és költségkövetés", + "logsDescription": "Valós idejű kérésnaplók, hibanyomkövetések és streamelési eseményvizsgáló", + "auditDescription": "Az API-kulcsok használatának, az MCP-eszközhívásoknak és a szabályzati eseményeknek a megfelelőségi auditnaplója", + "webhooksDescription": "Webhook-végpontok konfigurálása valós idejű eseményértesítések fogadásához", + "healthDescription": "Rendszerállapot áttekintése: szolgáltatók, megszakítók, sebességkorlátok és adatbázis", + "proxyDescription": "Felsőbb szintű proxybeállítások konfigurálása a kimenő szolgáltatói kapcsolatokhoz", + "apiEndpointsDescription": "Egyéni API-végpontkonfigurációk és útválasztási felülbírálások kezelése", + "batchFilesDescription": "Kötegelt feladatok kimeneti fájljainak és eredményeinek böngészése és kezelése", + "analyticsEvalsDescription": "Modellértékelési eredmények és teljesítmény-benchmarkok", + "analyticsSearchDescription": "Keresési lekérdezések analitikája, gyorsítótár-találati arányok és költségkövetés", + "analyticsUtilizationDescription": "Szolgáltatói kihasználtsági mérőszámok és kapacitástervezés", + "analyticsComboHealthDescription": "Kombinált útválasztási konfigurációk valós idejű állapota és teljesítménye", + "analyticsCompressionDescription": "Kontextustömörítési analitika és tokenmegtakarítás", + "costsBudgetDescription": "Költségkeretek és kiadási riasztások API-kulcsonként és szolgáltatónként", + "costsPricingDescription": "Egyéni árképzési konfiguráció a tokenköltségek kiszámításához", + "logsProxyDescription": "Felsőbb szintű proxyk kérésnaplói és forgalomvizsgálata", + "logsConsoleDescription": "Alkalmazáskonzol kimenete és hibakeresési naplók", + "logsActivityDescription": "Felhasználói műveletek és rendszeresemények auditnaplója", + "auditMcpDescription": "MCP-eszközhívások auditnaplója és megfelelőségi nyilvántartása", + "auditA2a": "A2A-audit", "auditA2aDescription": "A2A feladatvégrehajtási ellenőrzési nyomvonal, állapotátmenetek és készséghívási rekordok", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Téma, arculat és vizuális testreszabás", + "settingsAiDescription": "AI-viselkedés, gondolkodási keretek, képfeldolgozási és memóriabeállítások", "settingsCacheDescription": "TTL a modell katalógus gyorsítótár bejegyzéseihez", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Hitelesítési, jogosultságkezelési és hozzáférés-vezérlési beállítások", "featureFlags": "Jellemző zászlók", "featureFlagsDescription": "Vezérlőrendszer képességei és kísérleti jellemzői", "featureFlagsActive": "{count} aktív", @@ -1664,18 +1664,18 @@ "featureFlagsSourceDb": "DB", "featureFlagsSourceEnv": "ENV", "featureFlagsSourceDefault": "DEF", - "featureFlagsReset": "Reset", + "featureFlagsReset": "Visszaállítás", "featureFlagsResetAll": "Minden felülírás visszaállítása", "featureFlagsResetAllConfirm": "Biztosan visszaállítja az összes funkciójelző felülírását? Ezzel az összes jelzőt visszaállítja az ENV-re vagy az alapértelmezett értékre.", "featureFlagsRestartRequired": "Újraindítás szükséges az alkalmazáshoz", "featureFlagsNoResults": "Egyetlen zászló sem felel meg a keresésnek", "featureFlagsSaved": "Zászló frissítve", "featureFlagsError": "Nem sikerült frissíteni a jelzőt", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Útválasztási szabályok, modellálnevek, kombinációs alapértékek és teljesítménycsökkentési beállítások", + "settingsResilienceDescription": "Áramkör-megszakító, újrapróbálkozási és tartalékmegoldási konfiguráció", + "settingsAdvancedDescription": "Speciális hasznosadat-szabályok, kérési korlátok és proxy API-beállítások", + "mitmProxyDescription": "MITM-proxybeállítások konfigurálása a forgalom vizsgálatához és hibakereséséhez", + "oneProxyDescription": "1Proxy-beállítások konfigurálása speciális proxyláncoláshoz", "omniSkillsDescription": "Sandbox skillek telepítése és kezelése az automatizált prompt- és eszközfuttatáshoz" }, "cloudSyncStatus": { @@ -1734,7 +1734,7 @@ "search": "Keresés", "utilization": "Kihasználtság", "apiEndpoints": "API-végpontok", - "audit": "Audit", + "audit": "Ellenőrzés", "a2a": "A2A", "mcp": "MCP", "batch": "Köteg", @@ -1762,7 +1762,7 @@ "discovery": "Felfedezés", "freeProviderRankings": "Ingyenes szolgáltatók rangsora", "radar": "Radar", - "setup": "Setup", + "setup": "Beállítás", "freeTiers": "Ingyenes szintek", "gamification": "Játékosítás", "leaderboard": "Ranglista", @@ -1812,7 +1812,7 @@ "reportIssue": "Probléma bejelentése", "activeError": "{active} aktív · {errors} hiba", "topologyLegendActive": "Aktív", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Legutóbbiak", "topologyLegendError": "Hiba", "oauthLabel": "OAuth", "apiKeyLabel": "API kulcs", @@ -1826,11 +1826,11 @@ "updateStarted": "Frissítés elindult...", "reloadingPageAutomatically": "Oldal automatikus újratöltése...", "providerTopology": "Szolgáltató topológia", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Legutóbbi kérések", + "recentRequestsEmpty": "Még nincsenek kérések.", + "recentRequestsModel": "Modell", + "recentRequestsTokens": "Be / Ki", + "recentRequestsWhen": "Időpont", "downloadDmg": "DMG letöltése (macOS)", "downloadDmgDescription": "Új verzió érhető el az OmniRoute asztali alkalmazásból. Kérjük, töltse le és telepítse a macOS DMG telepítőt a frissítéshez (jelenlegi: v{version}).", "downloadExe": "Letöltés EXE (Windows)", @@ -1888,18 +1888,18 @@ "releaseNotes": "Kiadási Megjegyzések", "readMore": "Tovább olvasom", "noAuthLabel": "Nincs hitelesítés", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Készüljön fel az útválasztásra", + "readinessTitle": "Küldje el az első kérését", + "readinessSubtitle": "Négy rövid lépés. Az OmniRoute menet közben ellenőrzi a készenléti állapotot.", + "readinessStep1": "Szolgáltató csatlakoztatása", + "readinessStep2": "Végpont-hitelesítés konfigurálása", + "readinessStep3": "Másolja ki a végpontot", + "readinessStep4": "Küldjön tesztkérést", + "readinessContinue": "Beállítás folytatása", + "readinessDismiss": "Egyelőre elvetés" }, "analytics": { - "title": "Analytics", + "title": "Analitika", "usageAnalyticsTitle": "Használati elemzések", "diversityScoreTitle": "Szolgáltatói sokszínűség", "diversityScoreDesc": "Szolgáltató-koncentrációs pillanatkép a legutóbbi forgalmi ablakról.", @@ -1967,7 +1967,7 @@ "period7D": "7N", "period30D": "30N", "period90D": "90N", - "periodYTD": "YTD", + "periodYTD": "Év elejétől", "periodAll": "Összes", "totalTokens": "Összes token", "inputTokens": "Bemeneti tokenek", @@ -1993,7 +1993,7 @@ "overviewDescription": "Kövesse nyomon API-használati mintáit, tokenfelhasználását, költségeit és tevékenységi trendjeit az összes szolgáltatónál és modellnél.", "evalsDescription": "Futtasson kiértékelő csomagokat az LLM-végpontok teszteléséhez és érvényesítéséhez. Hasonlítsa össze a modell minőségét, észlelje a regressziókat és mérje fel a késleltetést.", "overview": "Áttekintés", - "evals": "Evals", + "evals": "Kiértékelések", "search": "Keresés", "utilization": "Kihasználtság", "routeTrace": "Útvonalkövetés", @@ -2005,8 +2005,8 @@ "modelStatusError": "Hiba", "comboHealth": "Kombo egészsége", "comboHealthDescription": "Kombó szintű kvóta, használateloszlás és teljesítménymutatók", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Tömörítési analitika", + "compressionAnalyticsDescription": "Tömörítési analitika — tokenmegtakarítás, módok szerinti bontás és szolgáltatói statisztikák.", "autoRoutingTotalAutoRequests": "Összes automatikus kérés", "autoRoutingAvgSelectionScore": "Átl. kiválasztási pontszám", "autoRoutingExplorationRate": "Feltárási arány", @@ -2210,7 +2210,7 @@ "combo": "Kombináció", "routeStep": "Lépés", "tokens": "Tokenek", - "notAvailable": "n/a", + "notAvailable": "n. a.", "routeTokenCounts": "{input} be · {output} ki", "routeEvidence": "Bizonyíték", "routeFactors": "Irányítási tényezők", @@ -2258,9 +2258,9 @@ "fullAccess": "Teljes hozzáférés", "keyManagement": "API kulcskezelés", "keyManagementDesc": "API-kulcsok létrehozása és kezelése a végponthoz intézett kérések hitelesítéséhez", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Az alkalmazása API-kulccsal küld kéréseket az OmniRoute-on keresztül", + "requestFlowYourApp": "Az alkalmazása", + "requestFlowApiKey": "API-kulcs", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Összes kulcs", "restricted": "Korlátozott", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Másolja ki és tárolja ezt a kulcsot most – többé nem jelenik meg.", "done": "Kész", "savePermissions": "Engedélyek mentése", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Engedélyezett végpontok", + "allEndpointsAllowed": "Ez a kulcs minden API-végponthoz hozzáfér.", + "endpointsRestricted": "{count} végpontra korlátozva{count, plural, one {} other {}}.", + "autoResolve": "Automatikus feloldás", + "autoResolveDesc": "A nem egyértelmű modellnevek automatikus feloldása a natív szolgáltatóra ennél az API-kulcsnál.", "streamDefaultMode": "Alapértelmezett stream kompatibilitás", "streamDefaultModeDesc": "Szabályozza a kulcshoz tartozó elhagyott `stream` jelzőket. A JSON mód nem streamelt válaszokat ad vissza, kivéve, ha a kliens kifejezetten SSE-t kér.", "streamDefaultLegacy": "Örökölt", "streamDefaultJson": "JSON-kompatibilis", "streamDefaultBadge": "Alapértelmezett JSON stream", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Aktív kulcs", + "keyActiveDesc": "Engedélyezze vagy tiltsa le ezt az API-kulcsot. A letiltott kulcsokat a rendszer azonnal 403-as hibával utasítja el.", + "accessSchedule": "Hozzáférési ütemezés", + "accessScheduleDesc": "A hozzáférés korlátozása a hét meghatározott óráira és napjaira.", + "scheduleFrom": "Ettől", + "scheduleUntil": "Eddig", + "scheduleDays": "Napok", + "scheduleTimezone": "Időzóna", + "scheduleTimezoneHint": "Használjon IANA-időzónaneveket, például America/New_York, Europe/Berlin", + "scheduleActive": "Ütemezés", + "disabled": "Letiltva", + "daySun": "V", + "dayMon": "H", + "dayTue": "K", + "dayWed": "Sze", + "dayThu": "Cs", + "dayFri": "P", + "daySat": "Szo", "allowAll": "Minden engedélyezése", "restrict": "Korlátozás", "allowAllInfo": "Ezzel a gombbal minden elérhető modell elérhető.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Nem sikerült frissíteni az engedélyeket. Kérjük, próbálja újra.", "unknownProvider": "ismeretlen", "copyMaskedKey": "Maszkolt kulcs másolása", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "A teljes kulcs csak létrehozáskor érhető el — másolja ki a kulcs első létrehozásakor", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# eszköz} other {# eszköz}}", "devicesTooltip": "{count, plural, one {# eltérő IP/User-Agent eszköz észlelve ezzel a kulccsal (az elmúlt 30 percben)} other {# eltérő IP/User-Agent eszköz észlelve ezzel a kulccsal (az elmúlt 30 percben)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Engedélyezett kombinációk", "allCombosAllowed": "Ez a kulcs bármilyen kombinációt használhat.", "restrictedComboCount": "{count, plural, one {# kombinációra korlátozva} other {# kombinációra korlátozva}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# tárolt bejegyzés nem szerepel} other {# tárolt bejegyzés nem szerepel}} ebben a kombinált listában (például az útválasztási szabályok), ezért a rendszer mentett állapotában megőrzi.", + "preservedComboRuleHint": "A tárolt formában maradt. Ez a bejegyzés nem kombináció a fenti listában, ezért csak az API-n keresztül módosítható.", "apiManagerCustomRateLimits": "Egyéni díjkorlátok", "apiManagerCustomRateLimitsDesc": "A globális alapértelmezett korlátok felülbírálása. Hagyja üresen az alapértelmezett értékek használatához.", "apiManagerRateLimitRequestsPlaceholder": "Kérések", @@ -2391,7 +2391,7 @@ "apiManagerRateLimitSecondsPlaceholder": "Másodpercek", "apiManagerRemoveLimitTitle": "Korlát eltávolítása", "apiManagerTimezonePlaceholder": "Amerika/Sao_Paulo", - "noLogPayloadPrivacy": "No-Log Payload Privacy", + "noLogPayloadPrivacy": "Naplózásmentes adatvédelem", "bannedStatus": "Tiltott állapot", "managementApiAccess": "Management API hozzáférés", "expirationDate": "Lejárati dátum", @@ -2406,7 +2406,7 @@ "filterStatusDisabled": "Letiltva", "filterStatusBanned": "Kitiltva", "filterStatusExpired": "Lejárt", - "filterTypeStandard": "Standard", + "filterTypeStandard": "Normál", "filterTypeManage": "Kezelés", "filterTypeRestricted": "Korlátozott", "shownOf": "{shown} / {total} megjelenítve", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Lehetővé teszi, hogy ez a kulcs figyelmen kívül hagyja a felsőbb szintű szolgáltató/fiók korlátozási szabályzatát az útválasztás során. Az API-kulcs USD-kvótái továbbra is érvényesek.", "quotaPill": "KVÓTA", "quotaModeOnly": "csak qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Kizárólagos bérlet", + "exclusiveLeaseNoticeTitle": "Kizárólagos bérlet", + "exclusiveLeaseNoticeDesc": "Ez az API-kulcs kizárólagos bérleti jogosultságokkal rendelkezik a dedikált kapcsolat-útválasztáshoz.", + "allConnections": "Összes kapcsolat", + "onlySelectedConnections": "Csak a kiválasztott kapcsolatok", + "selectAtLeastOneConnection": "Válasszon ki legalább egy kapcsolatot, vagy válassza az Összes kapcsolat lehetőséget.", + "allConnectionsDesc": "Ez a kulcs bármely aktív kapcsolatot használhatja.", + "restrictedToConnections": "{count, plural, one {# kapcsolatra} other {# kapcsolatra}} korlátozva." }, "auditLog": { "title": "Ellenőrzési napló", @@ -2457,14 +2457,14 @@ "model": "Model", "prompt": "Prompt", "generate": "Generálás", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Generálás...", + "loadingModels": "Elérhető modellek betöltése...", + "noModels": "Nincsenek elérhető modellek. Először konfiguráljon médiaképességekkel rendelkező szolgáltatókat.", + "error": "A generálás sikertelen", + "result": "Eredmény", + "imageDescription": "Képek generálása szöveges utasításokból az OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI és további szolgáltatások használatával.", + "videoDescription": "Videók készítése AnimateDiff és Stable Video Diffusion használatával ComfyUI-n vagy SD WebUI-n keresztül.", + "musicDescription": "Zene komponálása Stable Audio Open vagy MusicGen használatával ComfyUI-n keresztül.", "kinds": { "embedding": "Beágyazás", "image": "Kép", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "Az OpenRouter beszédről szövegre modellek a beállított OpenRouter kapcsolatodat használják. Nincs szükség külön hitelesítő adatokra." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Keresési lekérdezés", + "searchResults": "Keresési eredmények", + "cachedResult": "Gyorsítótárazott", + "searchCost": "Költség", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Speciális keresési tesztelés szolgáltatók összehasonlításával", + "compareProviders": "Szolgáltatók összehasonlítása", + "rerankResults": "Eredmények újrarangsorolása", + "searchHistory": "Keresési előzmények", + "urlOverlap": "URL-átfedés", + "noSearchProviders": "Nincsenek keresési szolgáltatók konfigurálva. Adjon hozzá szolgáltatókat a Beállításokban.", + "noRerankModels": "Nem érhető el újrarangsorolási modell", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Szolgáltató", + "searchType": "Keresés típusa", + "maxResults": "Eredmények maximális száma", + "filters": "Szűrők", + "country": "Ország", + "language": "Nyelv", + "timeRange": "Időtartomány", + "includeDomains": "Domainek belefoglalása", + "excludeDomains": "Domainek kizárása", + "safeSearch": "Biztonságos keresés", + "safeSearchOff": "Kikapcsolva", + "safeSearchModerate": "Mérsékelt", + "safeSearchStrict": "Szigorú", + "queryPlaceholder": "Adja meg a keresési lekérdezést...", + "providerAuto": "automatikus (legolcsóbb)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "hírek", + "optionAny": "bármely", + "timeRangeDay": "Elmúlt nap", + "timeRangeWeek": "Elmúlt hét", + "timeRangeMonth": "Elmúlt hónap", + "timeRangeYear": "Elmúlt év", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "A kérés időtúllépés miatt megszakadt ({seconds} mp)", + "networkError": "Hálózati hiba", + "formatted": "Formázott", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "gyorsítótár-találat nélkül", + "cacheHit": "gyorsítótár-találat", + "latency": "Késleltetés", + "cost": "Költség", + "results": "Találatok", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Újrarangsoroló modell", + "positionDelta": "Pozícióváltozás", + "emptyState": "Küldjön keresési lekérdezést a találatok megtekintéséhez", "copy": "Másolás", "resetToDefault": "Visszaállítás alapértelmezettre", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Keresés", + "tabScrape": "Kinyerés", + "tabCompare": "Összehasonlítás", + "modalitiesGuide": "Művelettípusok útmutatója", + "searchConceptTitle": "Keresés", + "searchConceptDesc": "Keresés = webes találatok listájának lekérése (cím, URL, kivonat, relevanciapontszám)", + "scrapeConceptTitle": "Kinyerés", + "scrapeConceptDesc": "Kinyerés = egy URL teljes tartalmának kinyerése (markdown, szöveg vagy HTML)", + "compareConceptTitle": "Összehasonlítás", + "compareConceptDesc": "Összehasonlítás = ugyanazon lekérdezés futtatása N szolgáltatónál egymás mellett a késleltetés, a költség és a találatok átfedésének összehasonlításához", + "rerankConceptTitle": "Újrarangsorolás", + "rerankConceptDesc": "Újrarangsorolás = a találatok LLM segítségével történő átrendezése, hogy a lekérdezés alapján javuljon a relevanciájuk", + "autoConceptTitle": "Automatikus (legolcsóbb)", + "autoConceptDesc": "Automatikus (legolcsóbb) = automatikusan kiválasztja a legolcsóbb elérhető szolgáltatót, amelyhez konfigurálva vannak hitelesítő adatok", + "providerCatalogTitle": "Szolgáltatói katalógus", + "kindSearch": "Keresés", + "kindFetch": "Lekérés/adatkinyerés", + "statusConfigured": "Beállítva", + "statusMissing": "Nincs hitelesítő adat", + "statusRateLimited": "Sebességkorlátozva", + "configureProvider": "Beállítás a szolgáltatóknál", + "loadingProviders": "Szolgáltatók betöltése…", + "failedToLoadProviders": "Nem sikerült betölteni a szolgáltatókat", + "costPerQuery": "Költség/lekérdezés", + "freeQuota": "Ingyenes havi kvóta", + "scrapeUrl": "Adatkinyerés URL-címe", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL megadása kötelező", "scrapeUrlInvalid": "Érvénytelen URL — a következővel kell kezdődnie: http:// vagy https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Kinyerés", + "scrapeExtracting": "Kinyerés…", + "scrapeFullPage": "Teljes oldal", + "scrapeFormat": "Formátum", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Szöveg", + "scrapePreview": "Előnézet", + "scrapeRaw": "Nyers", + "scrapeContentTruncated": "(csonkolva, nyers nézet megtekintése)", + "scrapeMetadata": "Metaadatok", + "scrapeProvider": "Szolgáltató", + "scrapeSize": "Méret", "scrapeEmptyState": "Adjon meg egy URL-t a tartalom kinyeréséhez", "scrapeProvidersAvailable": "Elérhető szolgáltatók: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Összehasonlítás", + "compareRunning": "Összehasonlítás…", + "autoProvider": "Automatikus (legolcsóbb)", + "configuredStatus": "Beállítva", + "rateLimitedStatus": "Sebességkorlátozva", + "noCredential": "Nincs hitelesítő adat", + "searchTypeLabel": "Típus", + "rerankModelLabel": "Újrarangsorolási modell", + "noneOption": "Nincs", + "size": "Méret", "configurationPane": "Konfigurációs panel", "configuration": "Konfiguráció", "status": "Állapot", @@ -2708,7 +2708,7 @@ "classifierCompatLoadFailed": "Nem sikerült betölteni a beállítást", "classifierCompatMode": { "off": "Ki", - "auto": "Auto", + "auto": "Automatikus", "always": "Mindig" }, "ccDiscoveryInfoButton": "Hogyan lehet engedélyezni a felfedezést a Claude Code-ban", @@ -2741,7 +2741,7 @@ "effortMedium": "Közepes", "effortHigh": "Magas", "effortExtraHigh": "Extra magas", - "effortMax": "Max", + "effortMax": "Maximális", "effortUltra": "Ultra", "wireApi": "Wire API", "modelAliases": "Modellálnevek", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Hozzáadás", "antigravityStep2Suffix": "a hosts fájlba 127.0.0.1 néven.", "antigravityStep3": "3. Nyissa meg az Antigravitációt, és a kérések proxyval lesznek ellátva.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "A(z) {toolName} kéréseket küld a szolgáltatói végpontjára. A MITM elfogja és átirányítja őket az OmniRoute-hoz.", + "mitmStep1": "1. Indítsa el a MITM-et, hogy a kéréseket az OmniRoute-on keresztül irányítsa.", + "mitmStep2Prefix": "2. Hozzáadás", + "mitmStep2Suffix": "a hosts fájlhoz 127.0.0.1-ként.", + "mitmStep3": "3. Nyissa meg a(z) {toolName} alkalmazást, és a kérések proxyn keresztül lesznek továbbítva.", "sudoPasswordRequiredTitle": "Sudo jelszó szükséges", "sudoPasswordHint": "Rendszergazdai jelszó szükséges a hosts fájl és a rendszerproxy beállításainak módosításához.", "enterSudoPassword": "Írja be a sudo jelszót", @@ -2854,8 +2854,8 @@ "resetToDefault": "Visszaállítás alapértelmezettre", "providerModelPlaceholder": "szolgáltató/modellazonosító", "apply": "Alkalmazni", - "reset": "Reset", - "manualConfig": "Manual Config", + "reset": "Alaphelyzetbe állítás", + "manualConfig": "Kézi beállítás", "backups": "Biztonsági mentések", "configBackups": "Biztonsági mentések konfigurációja", "noBackupsYet": "Még nincs biztonsági másolat. A biztonsági mentések automatikusan létrejönnek minden Alkalmazás vagy Visszaállítás előtt.", @@ -2864,12 +2864,12 @@ "failedRestoreBackup": "Nem sikerült visszaállítani a biztonsági másolatot", "applied": "Alkalmazva!", "failed": "Sikertelen", - "resetDone": "Reset!", + "resetDone": "Alaphelyzetbe állítás!", "omnirouteConfiguredOpenAiCompatible": "Az OmniRoute OpenAI-kompatibilis szolgáltatóként van konfigurálva", "provider": "Szolgáltató", "model": "Modell", "providers": "Szolgáltatók", - "auth": "Auth", + "auth": "Hitelesítés", "noApiKeysAvailable": "Nem állnak rendelkezésre API-kulcsok", "usingDefaultOmniroute": "Az alapértelmezett: sk_omniroute használata", "updateConfig": "Frissítse a konfigurációt", @@ -2908,7 +2908,7 @@ "continue": "Használja a Continue futtatásakor az IDE-ben, és hordozható JSON-alapú szolgáltatói konfigurációra van szüksége.", "opencode": "Akkor használja, ha a terminál-natív ügynökfuttatásokat és az OpenCode-on keresztüli parancsfájl-automatizálást részesíti előnyben.", "kiro": "Használja a Kiro integrálásához és a modell-útválasztás központi vezérléséhez az OmniRoute-ból.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Akkor használja, ha AI-központú IDE-t szeretne, amelyben a Codeium/Windsurf modellek az OmniRoute-on keresztül vannak irányítva.", "antigravity": "Akkor használja, ha az Antigravity/Kiro forgalmat MITM-en keresztül kell elfogni, és az OmniRoute-hoz kell irányítani.", "copilot": "Használja, ha másodpilóta csevegési stílusú UX-et szeretne, miközben betartja az OmniRoute kulcsokat és útválasztási szabályokat.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2928,11 +2928,11 @@ "qwen": "Qwen Code CLI", "cursor": "Kurzor AI kódszerkesztő", "continue": "Az AI-asszisztens folytatása", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode AI kódolási ügynök (terminál)", + "kiro": "Amazon Kiro — AI-alapú IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "Sourcegraph Amp kódolási asszisztens CLI", "hermes": "Hermes AI terminál asszisztens", "hermes-agent": "Hermes Agent (a Nousresearch-től) - Fejlett terminál AI többmodell-támogatással (delegálás, látás, tömörítés stb.)", "custom": "Általános OpenAI-kompatibilis CLI vagy SDK konfigurációgenerátor", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter autonóm kódoló ágens CLI", "omp": "Oh My Pi terminál kódoló ágens", "letta": "Letta CLI ágens perzisztens memóriával és eszközhasználattal", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — önfejlesztő RLM kódolási keretrendszer OpenAI-kompatibilis szolgáltatók támogatásával", "warp": "Warp AI terminál egyéni szolgáltató támogatásával", "agent-deck": "Agent Deck többágenses orkesztrátor", "5dive": "5dive — saját üzemeltetésű kódolóügynök-flotta; egyetlen auth profil mindet az OmniRoute-ra irányítja" @@ -2998,7 +2998,7 @@ "title": "Válassza a Model lehetőséget" }, "4": { - "title": "Add Model Config", + "title": "Modellkonfiguráció hozzáadása", "desc": "Adja hozzá a következő konfigurációt a modellek tömbjéhez:" } }, @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Az OpenCode telepítése", + "desc": "Telepítés npm segítségével: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API-kulcs" }, "3": { - "title": "Set Base URL", + "title": "Alap URL beállítása", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Modell kiválasztása" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Gondolkodási változat használata", + "desc": "Gondolkodási modellek esetén futtassa a --variant high/low/max kapcsolóval (lásd az alábbi példaparancsot)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "A Kiro beállításainak megnyitása", + "desc": "Lépjen a Beállítások → AI-szolgáltató menüpontra" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Alap URL", + "desc": "Illessze be az OmniRoute végpontjának URL-jét" }, "3": { - "title": "API Key" + "title": "API-kulcs" }, "4": { - "title": "Select Model" + "title": "Modell kiválasztása" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI-beállítások megnyitása", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Egyéni szolgáltató hozzáadása", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Alap URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API-kulcs", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Modell kiválasztása", + "desc": "Válasszon egy modellt a legördülő listából" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Egyéni CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Eszközkategóriák", "visibleToolsCount": "{count} eszköz áll rendelkezésre", "customCliBuilderTitle": "OpenAI-kompatibilis CLI-készítő", "customCliBuilderDescription": "Hozzon létre env vars-okat és JSON-kódrészleteket bármely olyan CLI-hez vagy SDK-hoz, amely elfogad OpenAI-kompatibilis alap URL-t, API-kulcsot és modellazonosítót.", @@ -3132,7 +3132,7 @@ "hermesRoleTtsAudioTagsDesc": "TTS audio címke generálás", "hermesRoleTriageSpecifier": "Triázs Specifikáló", "hermesRoleTriageSpecifierDesc": "Hiba- és PR-kiértékelési specifikáció", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Kanban-felbontó", "hermesRoleKanbanDecomposerDesc": "Kanban feladat bontás", "hermesRoleProfileDescriber": "Profil Leíró", "hermesRoleProfileDescriberDesc": "Felhasználói profil leírása", @@ -3140,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Cél teljesítmény értékelése", "hermesRoleCurator": "Kurátor", "hermesRoleCuratorDesc": "Képesség- és memória-kurálás", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Monitorozás", "hermesRoleMonitorDesc": "Háttérfigyelés", "hermesRoleBackgroundReview": "Háttér Ellenőrzés", "hermesRoleBackgroundReviewDesc": "Háttérkód-ellenőrzés", @@ -3260,18 +3260,18 @@ "priorityDesc": "Szekvenciális tartalék: először az 1-es, majd a 2-es modellt próbálja meg stb.", "weightedDesc": "A forgalmat tömegszázalékban osztja el tartalékkal", "roundRobinDesc": "Körkörös eloszlás: minden kérés a következő forgatási modellhez kerül", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Kontextusátadás", + "contextRelayDesc": "Átadási összefoglalókkal megőrzi a munkamenet folytonosságát a fiókok váltásakor", "randomDesc": "Egységes véletlenszerű kiválasztás, majd visszaállás a többi modellhez", "leastUsedDesc": "A legkevesebb kéréssel rendelkező modellt választja, idővel kiegyensúlyozva a terhelést", "costOptimizedDesc": "Először a legolcsóbb modellhez vezet az árak alapján", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Minden újrafelhasználható promptelőtagot következetesen ugyanahhoz a szolgáltatói fiókhoz irányít", + "resetAware": "Visszaállítás-tudatos RR", "resetAwareDesc": "Kiegyenlíti a fennmaradó kvótát az 5 órával és a heti visszaállításokkal szemben, majd hasonló pontszámokat hajt végre", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kvótával súlyozott", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Szigorúan véletlenszerű", + "strictRandomDesc": "Paklikeverés — minden modellt egyszer használ, mielőtt újrakeverné őket", "fusion": "Fúzió", "fusionDesc": "Párhuzamosan kiküldi a promptot az összes panelmodellnek, majd egy bíró modell szintetizálja a végső választ", "fusionJudgeModel": "Bíró modell", @@ -3288,16 +3288,16 @@ "retryDelay": "Újrapróbálkozás késleltetése (ms)", "concurrencyPerModel": "Egyidejűség / Modell", "queueTimeout": "Sor időtúllépése (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Átadási küszöbérték", + "contextRelayHandoffThresholdHelp": "Amikor a kvótahasználat eléri ezt a küszöbértéket, az OmniRoute strukturált átadási összefoglalót készít, mielőtt az aktív fiók kvótája kimerülne.", + "contextRelayMaxMessages": "Összefoglaló üzeneteinek maximális száma", + "contextRelayMaxMessagesHelp": "Korlátozza, hogy a közelmúltbeli előzmények mekkora része legyen tömörítve az átadási összefoglalóban.", + "contextRelaySummaryModel": "Összefoglaló modellje", + "contextRelaySummaryModelHelp": "Opcionális felülbíráló modell, amely kizárólag az átadási összefoglaló létrehozására szolgál. Hagyja üresen az aktív kombináció modelljének újrafelhasználásához.", + "contextRelayProviderNote": "A Context Relay jelenleg a Codex-fiókok váltásához készít átadásokat. A lehető legjobb folytonosság érdekében használja ugyanazon szolgáltató több fiókjával.", "advancedHint": "Hagyja üresen a globális alapértelmezések használatához. Ezek felülbírálják a szolgáltatónkénti beállításokat.", "failoverBeforeRetry": "Feladatátvétel az újrapróbálkozás előtt", - "maxSetRetries": "Max Set Retries", + "maxSetRetries": "Beállítási újrapróbálkozások maximális száma", "setRetryDelayMs": "Újrapróbálkozási késleltetés beállítása (ms)", "moveUp": "Lépj felfelé", "moveDown": "Mozgás lefelé", @@ -3344,7 +3344,7 @@ "playgroundCreateFirst": "Először hozzon létre egyet", "weighted": "Súlyozott", "leastUsed": "Legkevésbé használt", - "costOpt": "Cost-Opt", + "costOpt": "Költségoptimalizált", "strategyGuideTitle": "Hogyan kell használni ezt a stratégiát", "strategyGuideWhen": "Mikor kell használni", "strategyGuideAvoid": "Kerülje el, hogy mikor", @@ -3386,19 +3386,19 @@ "example": "Részesítse előnyben a heti 60%-os fiók-visszaállítást holnap, mint a későbbi 80%-os fiók-visszaállítást." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Akkor használja, ha tökéletesen egyenletes elosztást szeretne — minden modellt egyszer használ, mielőtt bármelyiket megismételné.", + "avoid": "Kerülje, ha a modellek minősége vagy késleltetése eltérő, és a sorrend számít.", + "example": "Példa: Ugyanazon modell több fiókja a használat egyenletes elosztásához." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Akkor használja, ha alacsony késleltetésű kiválasztást szeretne a Power-of-Two-Choices algoritmussal.", + "avoid": "Kerülje a legfeljebb 2 modellt tartalmazó kis kombinációknál — nem nyújt előnyt a ciklikus elosztással szemben.", + "example": "Példa: Nagy áteresztőképességű következtetés 4 vagy több egyenértékű modellvégponton." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Akkor használja, ha a hosszú munkameneteknek a munkakörnyezet elvesztése nélkül kell átvészelniük a fiókváltást.", + "avoid": "Kerülje, ha a fiókváltás ritka, vagy ha nem szeretne további összefoglalási kéréseket.", + "example": "Példa: Codex-munkamenetek, amelyek a kvóta kimerüléséhez közeledve több fiók között váltanak." }, "fill-first": { "when": "Akkor használja, ha teljesen ki szeretné használni az egyik szolgáltató kvótáját, mielőtt a másikra lépne.", @@ -3425,52 +3425,52 @@ "maxRetries": "Hány újrapróbálkozás történik a kérés sikertelensége előtt.", "retryDelay": "Kezdeti várakozás az újrapróbálkozások között. A magasabb értékek csökkentik a repedési nyomást.", "timeout": "A kérés maximális időtartama a megszakítás előtt.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "healthcheck": "Kihagyja a nem megfelelően működő modelleket/szolgáltatókat az útválasztási döntésekből.", + "concurrencyPerModel": "Modellenként engedélyezett egyidejű kérések maximális száma ciklikus elosztás esetén.", + "queueTimeout": "Ennyi ideig várakozhat egy kérés a sorban, mielőtt időtúllépés történik.", "failoverBeforeRetry": "Ha engedélyezve van, minden felfelé irányuló hiba azonnali feladatátvételt vált ki a következő kombinált célponthoz, és kihagy minden újrapróbálkozást és tartalék URL-t.", "maxSetRetries": "A teljes célkészlet újrapróbálkozásainak száma, amikor minden cél meghiúsul. 0 = nincs beállított szintű újrapróbálkozás.", "setRetryDelayMs": "Késleltetés a beállított szintű újrapróbálkozások között, így az átmeneti problémáknak van ideje megoldani.", "disableSessionStickiness": "Minden kérésnél váltson át egy másik kapcsolatra, ahelyett, hogy a teljes beszélgetést egyetlen kapcsolathoz rögzítené az első üzenet hash-e alapján. Felülírja a globális alapértelmezést. Hagyja az Inherit beállításon a prompt-cache találatok megőrzéséhez a többfordulós csevegéseknél." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", + "templatesTitle": "Gyors sablonok", + "templatesDescription": "Alkalmazzon egy kiindulási profilt, majd módosítsa a modelleket és a konfigurációt.", + "templateApply": "Sablon alkalmazása", + "templateHighAvailability": "Magas rendelkezésre állás", + "templateHighAvailabilityDesc": "Prioritásos útválasztás állapotellenőrzésekkel és biztonságos újrapróbálkozásokkal.", + "templateCostSaver": "Költségtakarékos", + "templateCostSaverDesc": "Költségoptimalizált útválasztás a költségkeretet előtérbe helyező munkaterhelésekhez.", + "templateBalanced": "Kiegyensúlyozott terhelés", + "templateBalancedDesc": "A legkevésbé használtat választó útválasztás az igények időbeli elosztásához.", + "usageGuideHide": "Elrejtés", "usageGuideDontShowAgain": "Ne mutasd újra", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "usageGuideShow": "Útmutató megjelenítése", + "quickTestTitle": "A kombináció készen áll az ellenőrzésre", + "quickTestDescription": "Futtasson most egy tesztet a tartalékra váltási és késleltetési viselkedés ellenőrzéséhez.", + "testNow": "Tesztelés most", + "pricingCoverage": "Árazási lefedettség", + "pricingCoverageHint": "A költségoptimalizált stratégia akkor működik a legjobban, ha a kombináció összes modelljéhez elérhető árazás.", + "pricingAvailable": "Árazás elérhető", + "pricingMissing": "Nincs árazás", + "pricingAvailableShort": "árazott", + "pricingMissingShort": "ár nélküli", "fallbackOnlyOnQuotaExhaustion": "Csak a kvóta kimerülésekor haladjon előre", "fallbackOnlyOnQuotaExhaustionShort": "csak kvóta visszaállítás", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", + "warningRoundRobinSingleModel": "A körkörös elosztás legalább 2 modellel a leghasznosabb.", + "warningCostOptimizedPartialPricing": "A(z) {total} modellből csak {priced} rendelkezik árazással. Az útválasztás csak részben veheti figyelembe a költségeket.", + "warningCostOptimizedNoPricing": "Ehhez a kombinációhoz nem találhatók árazási adatok. A költségoptimalizált stratégia váratlan útválasztást eredményezhet.", + "filterAll": "Összes", + "filterIntelligent": "Intelligens", + "filterDeterministic": "Determinisztikus", + "filterEmptyTitle": "Egyetlen kombináció sem felel meg ennek a stratégiaszűrőnek.", + "filterEmptyIntelligentDescription": "Hozzon létre egy automatikus vagy LKGP-kombinációt az intelligens útválasztási irányítópult feltöltéséhez.", + "filterEmptyDeterministicDescription": "Jelenleg csak automatikus és LKGP-kombinációk léteznek. Váltson vissza az Összes lehetőségre, vagy hozzon létre egy determinisztikus kombinációt.", + "readinessTitle": "Készen áll a mentésre?", + "readinessDescription": "A kombináció létrehozása vagy frissítése előtt tekintse át az ellenőrzőlistát.", + "readinessCheckName": "A kombináció neve érvényes", + "readinessCheckModels": "Legalább egy modell ki van választva", + "readinessCheckWeights": "A súlyok összege 100%", + "readinessCheckWeightsOptional": "Nincs szükség súlyozási szabályra", "readinessCheckPricing": "Az árképzési adatok rendelkezésre állnak", "readinessCheckPricingOptional": "Az árképzési szabály nem szükséges", "saveBlockedTitle": "A mentés a következő elemek kijavításáig le van tiltva:", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Adjon hozzá legalább egy modellt.", "saveBlockWeighted": "Állítsa be a súlyokat 100%-ra (jelenleg: {total}%).", "saveBlockPricing": "Adjon hozzá árat legalább egy modellhez, vagy válasszon másik stratégiát.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Ajánlott beállítás", + "applyRecommendations": "Ajánlások alkalmazása", + "recommendationsUpdated": "A(z) {strategy} ajánlásai frissítve.", + "recommendationsApplied": "Az ajánlások alkalmazva erre a kombinációra.", + "intelligentPanelTitle": "Intelligens útválasztási irányítópult", + "intelligentPanelDesc": "Az automatikus útválasztási kombináció valós idejű pontozása és állapotjelentése.", "configOnlyStatus": "Konfigurációs nézet", "configOnlyHint": "Ez a panel csak az útvonalválasztási bemeneteket mutatja. Az élő megszakító állapot a Health oldalon érhető el.", "routingInputs": "Útvonalválasztási bemenetek", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Ismeretlen szolgáltató előtag.", "builderDynamicAccountShort": "Dinamikus fiók", "builderNeedValidName": "A folytatás előtt adjon meg egy érvényes kombónevet.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Állapotáttekintés", + "normalOperation": "Normál működés", + "allProvidersHealthy": "A szolgáltatók megfelelő útválasztási állapotot jeleznek.", + "incidentMode": "Incidensmód", + "highCircuitBreakerRate": "A megszakító gyakori aktiválódása észlelhető.", + "activeModePack": "Aktív módcsomag", + "modePackUpdated": "A módcsomag frissítve erre: {pack}.", + "modePackHint": "Váltson az előbeállítások között az útválasztási motor hangolásához a kombináció újbóli létrehozása nélkül.", + "providerScores": "Szolgáltatói pontszámok", + "allProvidersEvaluated": "Nincs jelöltkészlet konfigurálva. Futásidőben az összes aktív szolgáltató kiértékelésre kerül.", + "excludedProviders": "Kizárt szolgáltatók", + "excludedProvidersHint": "A NYITOTT áramkör-megszakítóval rendelkező szolgáltatók átmenetileg ki vannak zárva az útválasztásból.", + "noExcludedProviders": "Jelenleg egyetlen szolgáltató sincs kizárva.", + "cooldownMinutes": "Várakozási idő: {minutes} perc", + "builderIntelligentTitle": "Intelligens útválasztás konfigurációja", + "builderIntelligentDesc": "Konfigurálja a többtényezős pontozómotort ehhez az automatikus útválasztási kombinációhoz.", + "candidatePoolLabel": "Jelöltkészlet", + "candidatePoolHint": "Válassza ki, mely szolgáltatókat értékelje ez a motor. Hagyja üresen az összes aktív szolgáltató használatához.", + "candidatePoolEmpty": "Még nem érhető el aktív szolgáltató.", + "candidatePoolAllProviders": "Összes szolgáltató", + "modePackLabel": "Módcsomag", + "routerStrategyLabel": "Útválasztási stratégia", + "strategyRules": "Szabályok (6 tényezős pontozás)", + "explorationRateLabel": "Felderítési arány", + "explorationRateHint": "A kérések {percent}%-a nem optimális szolgáltatókat is kipróbálhat.", + "budgetCapLabel": "Költségkeret felső határa (USD / kérés)", + "budgetCapPlaceholder": "Nincs korlát", + "advancedWeightsTitle": "Speciális: pontozási súlyok", "nestedComboFlatten": "Beágyazott kombók kibontása", "nestedComboExecute": "Beágyazott kombók végrehajtása célpontként", "effectiveRoutingShare": "Tényleges útvonalválasztási részesedés (súly ÷ összesen)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kvóta", + "weightHealth": "Állapot", + "weightCostInv": "Költség", + "weightLatencyInv": "Késleltetés", + "weightTaskFit": "Feladathoz való illeszkedés", + "weightStability": "Stabilitás", + "weightTierPriority": "Szint", + "weightCacheAffinity": "Gyorsítótár-találati affinitás", "weightSessionAvailability": "Ülés Elérhetőség", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Intelligens útválasztás konfigurációja", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Biztonsági alapbeállítás", + "description": "Használjon egy elsődleges modellt, a tartalék láncot pedig tartsa röviden és megbízhatóan.", + "tip1": "A legmegbízhatóbb modellt helyezze az első helyre.", + "tip2": "Tartson fenn 1–2 hasonló minőségű tartalék modellt.", + "tip3": "Használjon biztonságos újrapróbálkozásokat az átmeneti szolgáltatói hibák kezelésére." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Szabályozott forgalomelosztás", + "description": "Kiváló tesztjellegű bevezetésekhez és a modellek közötti fokozatos átálláshoz.", + "tip1": "Kezdje óvatos, például 90/10 arányú elosztással.", + "tip2": "Tartsa az összeget 100%-on, és a módosítások után végezzen automatikus kiegyensúlyozást.", + "tip3": "A tesztforgalom súlyának növelése előtt figyelje a sikerességet és a késleltetést." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Kiszámítható terheléselosztás", + "description": "Akkor a legjobb, ha a modellek egyenértékűek, és egyenletes elosztásra van szükség.", + "tip1": "Használjon legalább 2 modellt.", + "tip2": "Állítson be párhuzamossági korlátokat a hirtelen túlterhelés elkerülésére.", + "tip3": "Használj várakozási sor-időtúllépést a gyors hibázáshoz telítettség esetén." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Gyors elosztás kevés beállítással", + "description": "Akkor használd, ha egyszerű elosztásra van szükséged szigorú garanciák nélkül.", + "tip1": "Hasonló késleltetési profillal rendelkező modelleket használj.", + "tip2": "Hagyd engedélyezve az újrapróbálkozásokat a véletlenszerű hibák kiküszöböléséhez.", + "tip3": "Ezt inkább kísérletezéshez használd, ne szigorú SLA-khoz." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Adaptív terheléselosztás", + "description": "A kevésbé használt modellekhez irányít, így idővel csökkenti a terhelési gócpontokat.", + "tip1": "Folyamatos forgalom mellett működik jobban.", + "tip2": "A biztonságosabb terheléselosztás érdekében kombináld állapotellenőrzésekkel.", + "tip3": "Kövesd nyomon a modellenkénti használatot az elosztás javulásának ellenőrzéséhez." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Költségkeret-központú útválasztás", + "description": "Alacsonyabb költségű modellekhez irányít, ha rendelkezésre állnak árazási metaadatok.", + "tip1": "Biztosítsd, hogy minden kiválasztott modellhez rendelkezésre álljanak árazási adatok.", + "tip2": "Tarts fenn egy megfelelő minőségű tartalék modellt a nehéz promptokhoz.", + "tip3": "Olyan kötegelt vagy háttérfeladatokhoz használd, ahol a költség a fő KPI." }, "reset-aware": { "title": "Reset-aware fiókrotáció", @@ -3597,11 +3597,11 @@ "tip3": "A kötözőszalag legyen kicsi, hogy az egyenértékű fiókok továbbra is tisztességesen forogjanak." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Paklikeveréses elosztás", + "description": "Újrakeverés előtt minden modell pontosan egyszer kerül felhasználásra ciklusonként.", + "tip1": "Az érdemi elosztáshoz használj legalább 2 modellt.", + "tip2": "Azonos teljesítményű modellekkel működik a legjobban.", + "tip3": "Ideális több API-fiók közötti terheléselosztáshoz." }, "fill-first": { "description": "A kipufogógáz-szolgáltatók kvótáinak sorrendje a visszaesés előtt.", @@ -3646,86 +3646,86 @@ "title": "Két választás ereje" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Ingyenes csomag ($0)", + "templateFreeStackDesc": "Ciklikus elosztás az összes ingyenes szolgáltató között: Kiro (Claude), Qoder (5 modell), Qwen (4 modell). Nulla költség, megszakítás nélküli kódolás.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP mód", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Első lépések a kombinációkkal", + "wizardGuideDesc": "Hozz létre modellkombinációkat az AI-forgalom intelligens útválasztásához", + "wizardGuideHint": "vagy kattints fent a + Kombináció létrehozása gombra", + "createFirstCombo": "Az első kombinációd létrehozása", + "wizardStep1Title": "Nevezd el a kombinációdat", + "wizardStep1Desc": "Adj egyedi nevet a kombinációdnak, hogy azonosíthasd az útválasztási szabályokban", + "wizardStep2Title": "Modellek hozzáadása", + "wizardStep2Desc": "Válassz AI-modelleket, és rendezd őket a tartalékként történő használat prioritási sorrendjébe", + "wizardStep3Title": "Stratégia kiválasztása", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Ellenőrzés és mentés", + "wizardStep4Desc": "Ellenőrizd a konfigurációt, és aktiváld a kombinációt", + "usageGuideInvokeTitle": "A kombináció meghívása", + "usageGuideInvokeDesc": "Add meg modellként a kombináció pontos nevét, például: model: \"my-combo\" (vagy combo/my-combo).", + "usageGuideInvokeAutoNote": "Az auto és az auto/* egy különálló, konfigurációt nem igénylő útválasztó, amely nem használja a kombinációidat (kivéve, ha egy kombináció neve szó szerint auto).", + "usageGuideInvokeOpenrouterNote": "Az openrouter/auto egy valódi, fizetős OpenRouter-termék (Auto Best Available), nem OmniRoute-alias — a Beállítások → Útválasztás → Fizetős modellek elrejtése útvonalon zárhatod ki.", + "emailVisibilityStateOn": "Be", + "emailVisibilityStateOff": "Ki", + "reorderHandle": "Húzza az átrendezéshez", + "failedReorder": "A modellek átrendezése nem sikerült", + "builderFlowTitle": "Kombinációkészítő folyamat", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Alapok", + "description": "Név és kezdősablon" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Lépések", + "description": "Szolgáltató, modell és fiók kiválasztása" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Stratégia", + "description": "Útválasztási viselkedés és speciális beállítások" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Intelligens útválasztás", + "description": "Automatikus útválasztás jelöltkészlete, előbeállításai és pontozása" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Áttekintés", + "description": "Végső ellenőrzés mentés előtt" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Szakasz befejezve", + "builderStageCurrent": "Aktuális szakasz", + "builderStagePending": "Függőben", + "builderStageLocked": "Zárolva — először fejezze be az előző szakaszt", + "builderTitle": "Kombináció létrehozása", + "builderBrowseCatalog": "Katalógus böngészése", + "builderProvider": "Szolgáltató", + "builderLoadingProviders": "Szolgáltatók betöltése...", + "builderSelectProvider": "Szolgáltató kiválasztása", + "builderModel": "Modell", + "builderSelectModel": "Modell kiválasztása", + "builderProviderFirst": "Először válasszon szolgáltatót", + "builderAccount": "Fiók", + "builderPreview": "Előnézet", + "builderAddStep": "Lépés hozzáadása", "builderDuplicateExact": "Ez a pontos szolgáltató/modell/fiók lépés már benne van a kombinációban.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Kombinációhivatkozás", + "builderAddComboRef": "Kombinációhivatkozás hozzáadása", + "builderComboRefStep": "Kombinációhivatkozás hozzáadása", + "builderPinnedAccount": "Rögzített fiók", + "builderLegacyEntry": "Régi bejegyzés", + "reviewName": "Név", + "reviewStrategy": "Stratégia", + "reviewSteps": "Lépések", + "reviewAccounts": "Fiókok", + "reviewProviders": "Szolgáltatók", + "reviewComboRefs": "Kombinációhivatkozások", + "reviewAdvanced": "Speciális beállítások", + "reviewAgentFlags": "Ügynökjelzők", + "reviewSequence": "Modellsorrend", + "reviewNoSteps": "Nincsenek konfigurált lépések", "builderStagesDescription": "Végezze el az egyes szakaszokat a kombinációk meghatározásához, a lépések létrehozásához, az útválasztási stratégia kiválasztásához és az eredmények áttekintéséhez.", "builderStepsDescription": "Állítsa össze az egyes kombinált lépéseket sorrendben: szolgáltató, modell, majd fiók. Ez lehetővé teszi ugyanazt a szolgáltatót és modellt különböző fiókokban.", "selectProvider": "Válassza a Szolgáltatót", @@ -3766,7 +3766,7 @@ "agentFeaturesContextLengthErrorInteger": "A szövegkörnyezet hosszának érvényes egész számnak kell lennie", "agentFeaturesContextLengthErrorRange": "A szövegkörnyezet hosszának 1000 és 2000000 között kell lennie", "compressionOverride": "Tömörítés felülbírálása", - "modePack": "Mode Pack", + "modePack": "Módcsomag", "disableSessionStickiness": "Munkamenet-rögzítés letiltása", "sessionStickinessEnabled": "Rögzítés bekapcsolva", "sessionStickinessDisabled": "Rögzítés kikapcsolva", @@ -3800,27 +3800,27 @@ "range7d": "7 nap", "range30d": "30 nap", "range90d": "90 nap", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 nap", + "range365d": "365 nap", "rangeAll": "Minden idők", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Aktív modellek", + "flatRateEstimateNotice": "Tartalmazza a fix díjas előfizetések becsült tokenárait, nem a kiszámlázott költséget.", + "flatRateEstimateForecast": "Az előrejelzés fix díjas becsléseket tartalmaz.", + "selectedWindow": "Kiválasztott időszak", + "activeProviders": "Aktív szolgáltatók", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Mai költés", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Szolgáltatói részesedés", + "topProviders": "Legfontosabb szolgáltatók", + "costTrend": "Költségtrend", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Legfontosabb modellek", "requestsInWindow": "Requests In Window", "tokenUsage": "Token használat", "totalTokens": "Összes token", @@ -3863,8 +3863,8 @@ "groupAccount": "Fiók", "groupServiceTier": "Szolgáltatási szint", "serviceTierFast": "Gyors", - "serviceTierFlex": "Flex", - "serviceTierStandard": "Standard", + "serviceTierFlex": "Rugalmas", + "serviceTierStandard": "Normál", "serviceTierBreakdownTitle": "Szolgáltatási szint", "serviceTierBreakdownSubtitle": "Fast / Flex / Standard felosztás", "serviceTierUsageSaved": "használat elmentve", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API végpont", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Használja az OpenAI-kompatibilis végpontot a legtöbb SDK-val és eszközzel.", + "testEndpoint": "Végpont tesztelése →", + "advancedProtocols": "Speciális protokollok", "available": "Elérhető végpontok", "cloudProxy": "Cloud Proxy", "disableConfirm": "Biztosan letiltja a felhőproxyt?", @@ -3900,7 +3900,7 @@ "disableCloud": "Felhő letiltása", "enableCloud": "Felhő engedélyezése", "modelsAcrossEndpoints": "{models} modellek {endpoints} végpontokon keresztül", - "loadingModels": "Loading available models...", + "loadingModels": "Az elérhető modellek betöltése...", "chatDesc": "Streaming és nem streaming csevegés minden szolgáltatóval", "embeddings": "Beágyazások", "embeddingsDesc": "Szövegbeágyazások keresési és RAG-folyamatokhoz", @@ -3910,24 +3910,24 @@ "rerankDesc": "A dokumentumok átsorolása a lekérdezés szempontjából való relevancia szerint", "audioTranscription": "Hang átírása", "audioTranscriptionDesc": "Hangfájlok átírása szöveggé (suttogás)", - "textToSpeech": "Text to Speech", + "textToSpeech": "Szövegfelolvasás", "textToSpeechDesc": "Szöveg átalakítása természetes hangzású beszéddé", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Zenegenerálás", + "musicDesc": "Zene és hangsávok generálása a ComfyUI segítségével (Stable Audio, MusicGen)", "moderations": "Moderálások", "moderationsDesc": "A tartalom moderálása és biztonsági osztályozása", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API a Codexhez és fejlett ügynökalapú munkafolyamatokhoz", + "listModelsDesc": "Az összes csatlakoztatott szolgáltató összes elérhető modelljének listázása", + "settingsApiDesc": "Az OmniRoute konfigurációjának olvasása és módosítása API-n keresztül", + "settingsApi": "Beállítási API", "categoryCore": "Alap API-k", "categoryMedia": "Média és Multi-Modális", - "categorySearch": "Search & Discovery", + "categorySearch": "Keresés és felfedezés", "categoryUtility": "Segédeszközök és Kezelés", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Webes keresés", + "webSearchDesc": "Egységes webes keresés több szolgáltatón keresztül, automatikus tartalékra váltással és gyorsítótárazással", + "searchProvider": "Keresési szolgáltató", + "searchProviderDesc": "Ez a szolgáltató a POST /v1/search végponton keresztüli webes kereséshez használatos. Nincs szükség modellkonfigurációra — a keresési szolgáltatók egy API-kulcs csatlakoztatása után azonnal használhatók.", "enableCloudTitle": "Cloud Proxy engedélyezése", "whatYouGet": "Amit kapsz", "cloudBenefitAccess": "Hozzáférés az API-jához a világ bármely pontjáról", @@ -3963,99 +3963,99 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Alagút engedélyezése", + "cloudflaredInstallAndEnable": "Telepítés és engedélyezés", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Fut", + "cloudflaredStarting": "Indítás", + "cloudflaredStoppedState": "Leállítva", + "cloudflaredNotInstalled": "Nincs telepítve", + "cloudflaredUnsupported": "Nem támogatott", + "cloudflaredError": "Hiba", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Legutóbbi hiba: {error}", "providerModelsTitle": "{provider} – Modellek", "noModelsForProvider": "Ehhez a szolgáltatóhoz nem állnak rendelkezésre modellek.", "chat": "Chat", "embedding": "Beágyazás", "image": "Kép", "custom": "szokás", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {# modell} other {# modell}}", + "sectionTitle": "Integrációs felület", + "sectionDescription": "OpenAI-kompatibilis API-k és operatív protokoll-végpontok", "tabApis": "API-k", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "Protokollok", + "tabsAria": "Végpontszakaszok", + "protocolsTitle": "Protokollok", + "protocolsDescription": "Az MCP és az A2A első osztályú végpontok, dedikált megfigyelhetőséggel és vezérlési lehetőségekkel.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", + "mcpCardDescription": "Model Context Protocol stdio kapcsolaton keresztül", + "a2aCardTitle": "A2A-kiszolgáló", + "a2aCardDescription": "Agent2Agent JSON-RPC-végpont", + "protocolToolsLabel": "Eszközök", + "protocolTasksLabel": "Feladatok", "protocolActiveStreamsLabel": "Aktív adatfolyamok", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", + "protocolLastActivity": "Legutóbbi tevékenység", + "quickStart": "Gyors kezdés", + "openMcpDashboard": "MCP-kezelés megnyitása", + "openA2aDashboard": "A2A-kezelés megnyitása", + "mcpQuickStartTitle": "MCP – Gyors kezdés", + "mcpQuickStartStep1": "Indítsa el az MCP-kiszolgálót az `omniroute --mcp` paranccsal.", + "mcpQuickStartStep2": "Állítsa be az MCP-kliensét, hogy stdio átvitelen keresztül kapcsolódjon.", + "mcpQuickStartStep3": "Hívjon meg olyan eszközöket, mint az `omniroute_get_health` és az `omniroute_list_combos`.", + "a2aQuickStartTitle": "A2A – Gyors kezdés", + "a2aQuickStartStep1": "Az ügynökkártya a `/.well-known/agent.json` címen érhető el.", + "a2aQuickStartStep2": "Küldjön JSON-RPC-kéréseket a `POST /a2a` végpontra a `message/send` vagy a `message/stream` használatával.", "a2aQuickStartStep3": "Kövesse nyomon és vezérelje a feladatokat a `tasks/get` és `tasks/cancel` használatával.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Szövegkiegészítések (örökölt)", + "completionsLegacyDesc": "Örökölt OpenAI-szövegkiegészítések — a prompt karakterlánc és az üzenettömb formátumot egyaránt elfogadja", "messagesApi": "Üzenetek", "messagesApiDesc": "Natív Anthropic Messages API formátum Claude-kompatibilis szolgáltatók számára", "imageEdits": "Képszerkesztések", "imageEditsDesc": "Meglévő képek szerkesztése és módosítása mesterséges intelligencia segítségével (festés, kifestés, variációk)", - "batchApi": "Batch API", + "batchApi": "Kötegelt API", "batchApiDesc": "Nagy mennyiségű kérés aszinkron feldolgozása (OpenAI-kompatibilis)", - "filesApi": "Files API", + "filesApi": "Fájlok API-ja", "filesApiDesc": "Fájlok feltöltése és kezelése kötegelt feldolgozáshoz", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Videógenerálás", + "videoDesc": "Videók generálása olyan MI-modellekkel, mint a ComfyUI és a Stable Video Diffusion.", + "tailscaleRequestFailed": "Nem sikerült betölteni a Tailscale állapotát", + "tailscaleEnableFailed": "Nem sikerült engedélyezni a Tailscale Funnelt", + "tailscaleWaitingForLogin": "Fejezze be a Tailscale-bejelentkezést a megnyitott böngészőlapon. Az OmniRoute automatikusan újrapróbálkozik.", + "tailscaleLoginTimedOut": "Időtúllépés történt a Tailscale-bejelentkezésre várakozás közben", + "tailscaleWaitingForFunnel": "Engedélyezze a Funnelt ezen az eszközön a megnyitott böngészőlapon. Az OmniRoute továbbra is rendszeresen ellenőrzi az állapotot.", + "tailscaleFunnelTimedOut": "Időtúllépés történt a Tailscale Funnel engedélyezésére várakozás közben", + "tailscaleStarted": "A Tailscale Funnel engedélyezve", + "tailscaleDisableFailed": "Nem sikerült letiltani a Tailscale Funnel szolgáltatást", + "tailscaleStopped": "A Tailscale Funnel letiltva", + "tailscaleInstallFailed": "Nem sikerült telepíteni a Tailscale-t", + "tailscaleInstallProgress": "Folyamatban...", + "tailscaleInstalled": "A Tailscale sikeresen telepítve", + "tailscaleRunning": "Fut", + "tailscaleNeedsLogin": "Bejelentkezés szükséges", + "tailscaleStoppedState": "Leállítva", + "tailscaleNotInstalled": "Nincs telepítve", + "tailscaleUnsupported": "Nem támogatott", + "tailscaleError": "Hiba", + "tailscaleDisable": "Funnel leállítása", + "tailscaleInstallAndEnable": "Telepítés és engedélyezés", + "tailscaleLoginAndEnable": "Bejelentkezés és engedélyezés", + "tailscaleEnable": "Funnel engedélyezése", + "tailscaleUrlNotice": "A Tailscale .ts.net-címét használja. Az első használatkor bejelentkezésre és a Funnel jóváhagyására lehet szükség.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Hitelesítse ezt a gépet a Tailscale-lel, majd engedélyezze a Funnel szolgáltatást.", + "tailscaleBinaryPath": "Bináris fájl: {path}", + "tailscaleLastError": "Legutóbbi hiba: {error}", + "tailscaleInstallTitle": "Tailscale telepítése", + "tailscaleInstallIntro": "Telepíti a Tailscale-t erre a gépre, és előkészíti az OmniRoute-ot a Funnel engedélyezésére.", + "tailscaleInstallPasswordHint": "macOS és Linux rendszeren sudo használatára lehet szükség a csomag telepítéséhez és a démon elindításához.", + "tailscaleSudoPlaceholder": "Opcionális sudo-jelszó", + "tailscaleInstalling": "Telepítés folyamatban", "tailscaleSudoLabel": "Sudo jelszó (macOS/Linux esetén szükséges)", "ngrokTitle": "ngrok Alagút", "ngrokRunning": "Futás", @@ -4108,7 +4108,7 @@ "all": "Összes", "more": "+{count} további", "showInternalTooltip": "Belső útvonalak megjelenítése vagy elrejtése (alapértelmezés szerint rejtett)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Bearer-hitelesítés", "requestBody": "Kéréstörzs", "close": "Bezárás", "tryIt": "Kipróbálás", @@ -4132,21 +4132,21 @@ "vscodeAliasModelsLabel": "VS Code modellek", "vscodeAliasChatLabel": "VS Code csevegés", "localServer": "Helyi szerver", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "Felhőalapú OmniRoute", "copyUrl": "URL másolása", "badgeLoopbackTooltip": "Ez a végpont csak helyileg érhető el (csak loopback)", "badgeAlwaysProtectedTooltip": "Ez a végpont mindig védett, és hitelesítést igényel", "badgeInternalTooltip": "Ez egy belső rendszervégpont", "tierAll": "Összes", "tierAuth": "Hitelesített", - "tierLoopback": "Loopback", + "tierLoopback": "Helyi visszacsatolás", "tierAlwaysProtected": "Mindig védett", "tierPublic": "Nyilvános", "hideInternal": "Belsők elrejtése", "showInternal": "Belsők megjelenítése", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Egyéni rendszerutasítás", + "customSystemPromptDescription": "Egyéni rendszerutasítás beillesztése minden modellkérésbe", + "customSystemPromptPlaceholder": "pl. Mindig kalóznyelven válaszolj...", "obsidianEnterToken": "Kérjük, adjon meg egy Obsidian API-tokent", "obsidianConnectFailed": "Nem sikerült csatlakozni", "obsidianConnectionFailed": "A csatlakozás sikertelen", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "A token konfigurálva van. A Notion eszközök elérhetők az MCP-n keresztül." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Végpontproxy", + "tabApiEndpoints": "API-végpontok", + "apiEndpointsTitle": "API-végpontok", + "apiEndpointsDescription": "Más alkalmazások és szolgáltatások által használható háttérrendszeri API-végpontok. Ebben a szakaszban az összes elérhető REST API megjelenik dokumentációval és tesztelési lehetőségekkel.", + "comingSoon": "Hamarosan", + "plannedFeatures": "Tervezett funkciók", + "featureRestApi": "REST API-végpontkatalógus interaktív dokumentációval", + "featureWebhooks": "Webhook-konfiguráció és eseményfeliratkozások", + "featureSwagger": "OpenAPI / Swagger specifikáció automatikus generálása", + "featureAuth": "API-kulcsok és OAuth-hatókörök kezelése végpontonként" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP-irányítópult betöltése...", + "activate": "aktiválás", + "deactivate": "deaktiválás", + "confirmSwitchCombo": "Biztosan végrehajtja ezt a műveletet ({action}) a(z) „{combo}” kombináción?", + "switchComboFailed": "Nem sikerült átváltani a kombináció állapotát.", + "switchComboSuccess": "A(z) „{combo}” kombináció frissítve.", + "confirmApplyProfile": "Alkalmazza a(z) „{profile}” rezilienciaprofilt?", + "applyProfileFailed": "Nem sikerült alkalmazni a rezilienciaprofilt.", + "applyProfileSuccess": "A(z) „{profile}” profil alkalmazva.", + "confirmResetBreakers": "Visszaállítja az összes áramkör-megszakítót?", + "resetBreakersFailed": "Nem sikerült visszaállítani az áramkör-megszakítókat.", + "resetBreakersSuccess": "Az áramkör-megszakítók visszaállítva.", + "processStatus": "Folyamat állapota", "online": "Online", "offline": "Offline", "disableLabel": "{label} letiltása", @@ -4237,119 +4237,119 @@ "mcpStep2": "Konfigurálja az MCP-klienst a stdio átvitelen keresztüli csatlakozáshoz.", "mcpStep3": "Hívjon meg olyan eszközöket, mint a(z) {code1} és a(z) {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", + "sessionUptime": "Munkamenet üzemideje", + "lastHeartbeat": "Utolsó életjel", + "activity24h": "Aktivitás (24 óra)", + "totalCalls": "Összes hívás", + "successRate": "Sikerességi arány", + "avgLatency": "Átlagos késleltetés", + "topTools": "Leggyakrabban használt eszközök", "noToolCalls24h": "Az elmúlt 24 órában nem érkezett eszközhívás.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", + "runtimeDetails": "Futásidejű részletek", + "transport": "Átviteli protokoll", + "scopesEnforced": "Hatókörök kikényszerítve", + "yes": "igen", + "no": "nem", + "lastCall": "Utolsó hívás", + "heartbeatPath": "Életjel útvonala", + "operationalControls": "Működési vezérlők", + "switchCombo": "Kombináció átváltása", + "inactive": "inaktív", + "active": "aktív", "activateCombo": "Aktiválja a kombót", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", + "deactivateCombo": "Kombináció deaktiválása", + "applyResilienceProfile": "Rezilienciaprofil alkalmazása", + "profileAggressive": "agresszív", + "profileBalanced": "kiegyensúlyozott", + "profileConservative": "konzervatív", + "applyProfile": "Profil alkalmazása", + "resetCircuitBreakers": "Áramkör-megszakítók alaphelyzetbe állítása", + "resetCircuitBreakersHelp": "Törli a szolgáltatók áramkör-megszakítóinak aktuális állapotát és hibaszámlálóit.", + "resetAllBreakers": "Összes megszakító alaphelyzetbe állítása", + "toolsAndScopes": "Eszközök és hatókörök", + "tableTool": "Eszköz", + "tableScopes": "Hatókörök", "tablePhase": "Fázis", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Auditnapló", + "auditSummary": "Hívások: {total} | {page}. oldal / {totalPages}", + "allTools": "Minden eszköz", + "allResults": "Minden eredmény", + "success": "Sikeres", + "failure": "Sikertelen", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "Auditbejegyzések betöltése...", + "noAuditEntriesForFilters": "Nem találhatók auditbejegyzések az aktuális szűrőkkel.", + "tableTimestamp": "Időbélyeg", + "tableDuration": "Időtartam", + "tableResult": "Eredmény", + "tableApiKey": "API-kulcs", + "failed": "sikertelen", + "previous": "Előző", + "next": "Következő", + "apiKeyId": "API-kulcs azonosítója", + "offset": "Eltolás", + "limit": "Korlát", + "tool": "Eszköz" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A irányítópult betöltése...", + "confirmCancelTask": "Megszakítja a(z) {taskId} feladatot?", + "cancelTaskFailed": "Nem sikerült megszakítani a feladatot.", + "cancelTaskSuccess": "A(z) {taskId} feladat megszakítva.", + "smokeSendFailed": "A message/send működési próba sikertelen.", + "smokeSendSuccessWithTask": "A message/send rendben (feladat: {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "A message/stream működési próba sikertelen.", + "smokeStreamSuccessWithTask": "A message/stream rendben (feladat: {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "A message/stream feladatazonosító nélkül fejeződött be.", + "health": "Állapot", "ok": "ok", - "totalTasks": "Total tasks", + "totalTasks": "Feladatok összesen", "activeStreams": "Aktív adatfolyamok", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "lastTask": "Legutóbbi feladat", + "taskStateOverview": "Feladatállapotok áttekintése", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "beküldve", + "working": "folyamatban", + "completed": "befejezve", + "failed": "sikertelen", + "cancelled": "megszakítva" }, - "agentCard": "Agent card", + "agentCard": "Ügynökkártya", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "Verzió", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", + "capabilities": "Képességek", + "agentCardNotAvailable": "Az ügynökkártya nem érhető el.", + "quickValidation": "Gyors ellenőrzés", + "quickValidationDescription": "Próbahívásokat hajt végre az élő `/a2a` végponton keresztül.", + "runMessageSend": "message/send futtatása", + "runMessageStream": "message/stream futtatása", + "taskManagement": "Feladatkezelés", + "taskSummary": "{total} feladat | {page}. oldal, összesen: {totalPages}", + "allStates": "összes", + "allSkills": "összes készség", + "loadingTasks": "Feladatok betöltése...", "noTasksForFilters": "A jelenlegi szűrőkhöz nem található feladat.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "tableTask": "Feladat", + "tableSkill": "Készség", + "tableState": "Állapot", + "tableUpdated": "Frissítve", + "tableActions": "Műveletek", + "view": "Megtekintés", + "cancel": "Megszakítás", + "previous": "Előző", + "next": "Következő", + "taskDetail": "Feladat részletei", + "close": "Bezárás", "metadata": "Metadata", "events": "Események", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "artifacts": "Mellékletek", + "tablePhase": "Táblázatfázis", + "offset": "Eltolás", + "limit": "Korlát", + "skill": "Készség", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "üzenet/küldés", "rpcMethodStream": "üzenet/folyam", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Műveletek", + "addMemory": "Memória hozzáadása", + "allTypes": "Minden típus", "cancel": "Mégsem", "checkHealth": "Ellenőrizze az egészséget", "checkingHealth": "Ellenőrzés…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Hogyan működik", "howWorksContent": "1. Automatikus kinyerés: minden válasz végén a tények és epizódok automatikusan észlelésre és mentésre kerülnek.\n2. Lekérés: minden válasz előtt a legrelevánsabb emlékek keresése történik FTS5 (pontos), vektoros (szemantikai) vagy hibrid RRF segítségével.\n3. Beillesztés: a releváns emlékek beillesztésre kerülnek az asszisztens kontextusába a válaszminőség javítása érdekében.\n4. Kezelés: ezen az oldalon megtekintheti, szerkesztheti, exportálhatja és tömörítheti a régi emlékeket." }, - "content": "Content", + "content": "Tartalom", "contentPlaceholder": "Megjegyzendő érték vagy JSON-tartalom", - "created": "Created", - "delete": "Delete", + "created": "Létrehozva", + "delete": "Törlés", "deleteConfirmDesc": "Ez a művelet nem vonható vissza. Az emlék véglegesen törlődik.", "deleteConfirmTitle": "Törli az emléket?", - "description": "View and manage stored memory entries", + "description": "Tárolt memóriabejegyzések megtekintése és kezelése", "editMemory": "Emlék szerkesztése", "editModal": { "title": "Emlék szerkesztése", @@ -4444,20 +4444,20 @@ "configureCta": "Konfigurálás", "vectorStoreInstallHint": "A vektoros keresés engedélyezéséhez: npm install sqlite-vec (natív Node.js szükséges, nem WASM), majd indítsa újra." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Epizodikus", + "export": "Exportálás", + "factual": "Tényszerű", "healthUnknown": "Egészségügyi ismeretlen", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Találati arány", + "import": "Importálás", "importError": "Nem sikerült a fájl importálása", "importResult": "{imported} importálva, {skipped} kihagyva", - "key": "Key", + "key": "Kulcs", "keyPlaceholder": "pl. user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Memóriák", "next": "Következő", - "noMemories": "No memories found", + "noMemories": "Nem találhatók memóriák", "pageInfo": "{page}/{totalPages} oldal (összesen {total})", "pipelineError": "Csővezeték hiba", "pipelineOk": "A csővezeték rendben ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "Nem sikerült lekérni az előnézetet" }, "previous": "Előző", - "procedural": "Procedural", + "procedural": "Procedurális", "qdrant": { "title": "Qdrant (2. szintű vektortár)", "description": "Opcionális Qdrant-integráció a skálázható szemantikus kereséshez", @@ -4534,8 +4534,8 @@ }, "save": "Mentés", "saving": "Mentés...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Keresés a memóriákban...", + "semantic": "Szemantikus", "summarize": { "title": "Régi emlékek tömörítése", "noCandidates": "Nincsenek tömörítésre alkalmas emlékek (feltétel: >30 napos).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Emlékek", - "playground": "Playground", - "engine": "Engine" + "playground": "Játszótér", + "engine": "Motor" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Memóriakezelés", + "tokensUsed": "Felhasznált tokenek", "tooltip": { "totalEntries": "Az ehhez az API-kulcshoz tárolt összes emlék", "tokensUsed": "Az aktív emlékek által elfoglalt becsült összes token", @@ -4558,15 +4558,15 @@ "procedural": "Eljárások, munkafolyamatok és utasítások, amelyeket az asszisztensnek követnie kell", "semantic": "Fogalmak, preferenciák és tartományismeret" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Összes bejegyzés", + "type": "Típus", "memoryEnabled": "Memória engedélyezve" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Készségek", + "description": "AI-készségek kezelése és felügyelete", + "skillsTab": "Készségek", + "executionsTab": "Végrehajtások", "selectSkillToInspect": "Válasszon ki egy képességet a bal oldalon a megtekintéshez.", "schemaTab": "Séma", "handlerTab": "Kezelő", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Teszt futtatása (helyőrző)", "setModeAria": "{mode} mód beállítása", "uninstallSkill": "Képesség eltávolítása", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Tesztkörnyezet", + "loading": "Készségek betöltése...", + "noSkills": "Nem találhatók készségek", + "noExecutions": "Nem találhatók végrehajtások", + "enabled": "Engedélyezve", + "disabled": "Letiltva", "delete": "Törlés", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "Verzió", + "tableDescription": "Leírás", + "skill": "Készség", + "status": "Állapot", + "duration": "Időtartam", + "time": "Idő", + "sandboxConfig": "Tesztkörnyezet konfigurációja", + "cpuLimit": "CPU-korlát", + "cpuLimitDesc": "Képességenkénti maximális végrehajtási idő", + "memoryLimit": "Memóriakorlát", + "memoryLimitDesc": "Maximális memóriafoglalás", + "timeout": "Időtúllépés", + "timeoutDesc": "A válaszra való várakozás maximális ideje", + "networkAccess": "Hálózati hozzáférés", + "networkAccessDesc": "Kimenő hálózati kérések engedélyezése", + "mode": "Mód", "q": "Q", "filterSkillsPlaceholder": "A készségek szűrése név, leírás vagy címke alapján", "allModes": "Minden mód", @@ -4626,7 +4626,7 @@ "marketplaceError": "Sikertelen keresés", "installingFromMarketplace": "Telepítés a piactérről...", "popularSkills": "Népszerű képességek", - "skillsMarketplace": "Skills Marketplace", + "skillsMarketplace": "Képességek piactere", "searching": "Keresés...", "pageInfo": "{page}. oldal / {totalPages} (összesen {total})", "previous": "Előző", @@ -4657,7 +4657,7 @@ "lastCheck": "Utolsó ellenőrzés", "providerHealth": "Szolgáltató egészsége", "systemMetrics": "Rendszermetrikák", - "tokenHealth": "Token Health", + "tokenHealth": "Tokenek állapota", "refreshAll": "Összes frissítése", "checkNow": "Ellenőrizze most", "loadingHealth": "Egészségügyi adatok betöltése...", @@ -4665,13 +4665,13 @@ "retry": "Próbálja újra", "allOperational": "Minden rendszer működőképes", "issuesDetected": "Rendszerhibák észlelve", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "Az OmniRoute készen áll", + "healthVerdictActionRequired": "Beavatkozás szükséges a teljes működés helyreállításához", + "healthVerdictCoolingDown": "Várakozás a legutóbbi módosítások után", + "healthSubtitle": "Rendszerállapot ellenőrzése", + "advancedDiagnosticsTitle": "Speciális diagnosztika", + "hide": "Elrejtés", + "show": "Megjelenítés", "updatedAt": "Frissítve {time}", "latency": "Látencia", "latencyP50": "50. o", @@ -4681,9 +4681,9 @@ "notAvailable": "—", "totalRequests": "Összes kérés", "noDataYet": "Még nincsenek adatok", - "promptCache": "Prompt Cache", + "promptCache": "Prompt-gyorsítótár", "entries": "Bejegyzések", - "hitRate": "Hit Rate", + "hitRate": "Találati arány", "hitsMisses": "Találatok / hiányzók", "signatureCache": "Aláírás gyorsítótár", "signatureDefaults": "Alapértelmezések", @@ -4698,9 +4698,9 @@ "providers": "Szolgáltatók", "configuredProvidersLabel": "A műszerfalon konfigurálva", "configuredProvidersHint": "A /dashboard/providers mappába mentett hitelesítő adatokkal rendelkező szolgáltatók, a futásidejű állapottól függetlenül.", - "activeProviders": "{count} active", + "activeProviders": "{count} aktív", "activeProvidersHint": "Konfigurált szolgáltatók, amelyek jelenleg engedélyezve vannak az útválasztási kérelmek számára.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} megfigyelt", "monitoredProvidersHint": "Azok a szolgáltatók, amelyeket jelenleg a megszakítók állapotfigyelői követnek nyomon.", "healthyCount": "{count} egészséges", "nodeVersion": "{version} csomópont", @@ -4721,11 +4721,11 @@ "resetting": "Visszaállítás...", "resetAll": "Összes visszaállítása", "until": "{time}-ig", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Kimerült", + "learnedFromHeaders": "Fejlécekből meghatározva", + "remainingOfLimit": "{remaining}/{limit} maradt", + "throttleStatus": "Korlátozás: {value}", + "lastHeaderUpdate": "Fejléc frissítése: {age}", "databaseHealth": "Adatbázis állapota", "databaseHealthDescription": "Elavult kvóta-/tartománysorok és hibás kombinációs hivatkozások diagnosztizálása és javítása.", "status": "Állapot", @@ -4773,11 +4773,11 @@ "inactive": "Inaktív", "noConnectionId": "nincs kapcsolat-azonosító", "accountModelSummary": "{connectionId} · {count} modell", - "cooldown": "cooldown", + "cooldown": "várakozás", "durationRemaining": "{duration} van hátra", "noSyncedModelsOrTraffic": "Még nincsenek szinkronizált modellek vagy friss forgalom.", "providerRowSummary": "{active}/{total} aktív fiók · {requests} kérés · {successRate} sikeres · {latency} átl.", - "cooldownCount": "{count} cooldown", + "cooldownCount": "{count} várakozik", "lockoutCount": "{count} kizárás", "issueCount": "{count} probléma", "score": "Pontszám", @@ -4852,7 +4852,7 @@ }, "limits": { "title": "Korlátok és kvóták", - "rateLimit": "Rate Limit", + "rateLimit": "Sebességkorlát", "remaining": "Maradt", "requestsPerMinute": "Kérések/perc", "tokensPerMinute": "Token/perc", @@ -4888,28 +4888,28 @@ "previous": "Előző", "next": "Következő", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Részletek megtekintése", + "eventMetadata": "Esemény metaadatai", + "eventPayload": "Esemény tartalma", + "requestId": "Kérésazonosító", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "Eltolás", + "limit": "Korlát", + "status": "Állapot", + "resourceType": "Erőforrás típusa", + "totalEntries": "Bejegyzések száma", + "tab": "Lap", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Bezárás", + "runningRequests": "Aktív kérések", + "runningRequestsDesc": "A jelenleg futó upstream kérések valós idejű nézete", "clearAll": "Összes törlése", "confirmClearActiveRequests": "Törli az összes aktív kérést?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "Modell", + "provider": "Szolgáltató", + "account": "Fiók", + "elapsed": "Eltelt idő", "activeStage": "Szakasz", "activeStageUnknown": "Még nincs elküldve az upstreamnek", "activeStageRegistered": "Regisztrálva", @@ -4919,38 +4919,38 @@ "activeStageRateLimitSlotAcquired": "Sebességkorlát-hely megszerezve", "activeStageSendingToProvider": "Küldés az upstreamnek", "activeStageProviderResponseStarted": "Upstream válasz elindult", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Darabszám", + "payloads": "Adatcsomagok", + "viewPayloads": "Megtekintés", + "activeCount": "{count} aktív", + "clientPayload": "Klienskérés adatcsomagja", + "upstreamPayload": "Upstream szolgáltató adatcsomagja", + "upstreamNotSentYet": "Még nincs elküldve az upstream szolgáltatónak", + "runningRequestDetailMeta": "Fiók: {account} — Eltelt idő: {elapsed}", + "export": "Exportálás", + "exporting": "Exportálás...", + "exportFailed": "Az exportálás sikertelen", "cleanHistoryButton": "Előzmények törlése", "cleanHistoryTitle": "Törli a naplózási előzményeket?", "cleanHistoryMessage": "Ez véglegesen törli az összes kérésnapló-sort, a korábbi részletsorokat és a DATA_DIR/call_logs alatti helyi artifact fájlokat. Az élő oldal a tisztítás után frissülni fog.", "cleanHistoryConfirm": "Előzmények törlése", "cleanHistoryCancel": "Mégse", "cleanHistorySuccess": "Törölve lett {deleted} naplóbejegyzés, {deletedArtifacts} artifact és {deletedDetailedLogs} korábbi részletsor.", - "cleanHistoryEmpty": "No request log history was found.", - "cleanHistoryFailed": "Failed to clean log history.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "cleanHistoryEmpty": "Nem található kérésnapló-előzmény.", + "cleanHistoryFailed": "Nem sikerült törölni a naplóelőzményeket.", + "timeRange": "Időtartomány", + "lastNHours": "Legutóbbi {hours}", + "defaultRange": "alapértelmezett", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", - "filterByLevel": "Filter by log level", - "searchPlaceholder": "Search logs…", - "searchAria": "Search log entries", - "disableAutoScroll": "Disable auto-scroll", - "enableAutoScroll": "Enable auto-scroll", - "autoScroll": "Auto-scroll", + "fetchFailed": "Nem sikerült lekérni a naplókat", + "copyFailed": "Nem sikerült másolni a naplóbejegyzést", + "copyLogEntry": "Naplóbejegyzés másolása", + "filterByLevel": "Szűrés naplózási szint szerint", + "searchPlaceholder": "Keresés a naplókban…", + "searchAria": "Keresés a naplóbejegyzésekben", + "disableAutoScroll": "Automatikus görgetés kikapcsolása", + "enableAutoScroll": "Automatikus görgetés bekapcsolása", + "autoScroll": "Automatikus görgetés", "entryCount": "{count, plural, one {# bejegyzés} other {# bejegyzés}}", "lastHour": "Elmúlt 1 óra", "updatedAt": "Frissítve: {time}", @@ -4975,7 +4975,7 @@ "skip": "Kihagyás", "skipWizard": "A varázsló teljes kihagyása", "skipPassword": "A jelszó beállításának kihagyása", - "skipAndContinue": "Skip & Continue", + "skipAndContinue": "Kihagyás és folytatás", "passwordLabel": "Jelszó", "confirmPassword": "Jelszó megerősítése", "enterPassword": "Írja be a jelszót", @@ -4987,9 +4987,9 @@ "multiProvider": "Több szolgáltató", "usageTracking": "Használat követése", "securityDesc": "Állítson be jelszót az irányítópult védelméhez, vagy most hagyja ki.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Jelszó nélkül a beállítás során nem tud szolgáltatókat hozzáadni. Később, a jelszó beállítása után az irányítópulton adhatja hozzá őket.", "providerDesc": "Csatlakoztassa első AI-szolgáltatóját. Később továbbiakat is hozzáadhat.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Szolgáltatók hozzáadásához először be kell állítania egy jelszót. Lépjen vissza a biztonsági lépéshez, és állítson be egy jelszót, vagy később adjon hozzá szolgáltatókat az irányítópulton.", "apiKeyRequired": "API-kulcs (kötelező)", "customUrlOptional": "Egyéni URL (nem kötelező)", "testDesc": "Ellenőrizzük, hogy működik-e a szolgáltatói kapcsolat.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Importálás…", "importFromFileImport": "{count} szolgáltató importálása", "importFromFileResult": "Sikeresen importálva: {success} szolgáltató ({failed} sikertelen)", + "importFromFileDownloadTemplate": "CSV-sablon letöltése", + "importFromFileMoreErrors": "+ további {count}", + "importFromFileSchemaHint": "A CSV-oszlopok sorrendje kötött: provider, name, apiKey, baseUrl (nem kötelező), priority (nem kötelező). A provider oszlopnak egy meglévő felügyelt szolgáltatói azonosítót vagy egy már regisztrált, OpenAI/Anthropic-kompatibilis csomópontazonosítót kell tartalmaznia — ez az importálás nem hoz létre új végpontcsomópontokat.", "adaptaTutorial": { "title": "Az Adapta Web csatlakoztatása", "introPrefix": "Az Adapta a Clerk segítségével hitelesít. A token", @@ -5127,7 +5130,7 @@ "freeProviders": "Ingyenes szolgáltatók", "apiKeyProviders": "API kulcs szolgáltatók", "compatibleProviders": "API-kulcs-kompatibilis szolgáltatók", - "testAll": "Test All", + "testAll": "Összes tesztelése", "reorderByAvailability": "Újrarendezés", "reorderByAvailabilityTitle": "Kapcsolatok újrarendezése elérhetőség szerint", "reorderByAvailabilityError": "A kapcsolatok elérhetőség szerinti újrarendezése sikertelen", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} rejtett", "warningCount": "{count} Figyelmeztetés", "noConnections": "Nincsenek kapcsolatok", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Lejárt", + "expiringSoonBadge": "Hamarosan lejár", "freeTier": "Ingyenes szint", "freeTierAvailable": "Ingyenes szint elérhető", "hasFreeTooltip": "Ingyenes csomag elérhető", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Ez a szolgáltató elavult", "riskNotice": { "title": "Mielőtt folytatná", - "detailsTitle": "Usage caveats", + "detailsTitle": "Használati megjegyzések", "tooltip": "Használati figyelmeztetésekkel rendelkező szolgáltató — kattintson a részletekért", "oauth": "Ez a szolgáltató a hivatalos termékmunkamenetet/OAuth-ot használja, amely nem engedélyezett proxy/router használatra. Nem javasoljuk az intenzív autonóm ágens használatot (OpenCloud-stílusú, hosszú, többlépéses folyamatok, nagy kötegek) — az upstream szolgáltató a fiók korlátozásával vagy kitiltásával reagálhat. Saját felelősségre használja.", "webCookie": "Ez a szolgáltató a webes munkamenet-sütik segítségével hitelesít. Az upstream szolgáltatás bármikor érvénytelenítheti a munkamenetet, ami újbóli bejelentkezést igényel. Hosszú, felügyelet nélküli műveletekhez nem ajánlott. Saját felelősségre használja.", @@ -5188,9 +5191,9 @@ "cancel": "Mégse" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} kapcsolat megjelölve — legfeljebb {maxFailures} legutóbbi hiba{lastFailureSuffix}. Kattintson a kapcsolat állapotának megtekintéséhez.", + "lastFailureSuffix": "(utolsó hiba: {time})", + "ariaLabel": "Kapcsolatállapot részleteinek megtekintése, {count} figyelmeztetés" }, "disabled": "Letiltva", "enableProvider": "Szolgáltató engedélyezése", @@ -5225,7 +5228,7 @@ "failedCreate": "Nem sikerült létrehozni a szolgáltatót", "errorOccurred": "Hiba történt. Kérjük, próbálja újra.", "modelStatus": "Modell állapota", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Csak konfiguráltak", "allModelsOperational": "Minden modell működőképes", "modelsWithIssues": "{count} problémákkal küzdő modell(ek).", "allModelsNormal": "Minden modell normálisan reagál.", @@ -5236,7 +5239,7 @@ "clearing": "Törlés...", "until": "{time}-ig", "providerTestFailed": "A szolgáltató tesztje sikertelen", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "A szolgáltató tesztje túllépte az időkorlátot — túl sok kapcsolatot próbált egyszerre tesztelni", "modeTest": "{mode} Teszt", "passedCount": "{count} sikeres", "failedCount": "{count} sikertelen", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "Ikon URL-címe", "iconUrlHint": "Opcionális. A szolgáltató ikonjaként megjelenő kép URL-címe.", "iconUrlInvalid": "Érvénytelen ikon URL. Használjon http(s):// vagy data:image/*;base64 URL-t.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Napi kvóta visszaállításának időzónája", + "dailyQuotaResetTimezoneHint": "Nem kötelező IANA-időzóna, amely akkor használatos, ha a felsőbb szintű szolgáltatás kihagyja az X-RateLimit-Reset értéket. Hagyja üresen a rövid várakozási idő megtartásához.", + "dailyQuotaResetHourLabel": "Napi kvóta visszaállításának órája", + "dailyQuotaResetHourHint": "Helyi óra 0–23 között a fenti időzónában. Ha üres, nincs csomópontszintű időzítés.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Szolgáltató nem található", "deleteConnectionConfirm": "Törli ezt a kapcsolatot?", "deleteConnectionConfirmNamed": "Biztosan törli a következőt: {name}? Ez a művelet nem vonható vissza.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Kijelöltek törlése ({count})", + "batchDeleteConfirm": "Törli ezt a(z) {count} kapcsolatot? Ez a művelet nem vonható vissza.", + "batchDeleteSuccess": "{count} kapcsolat törölve", "batchActivateSelected": "Aktiválás", "batchDeactivateSelected": "Deaktiválás", "batchRetestSelected": "Újratesztelés", @@ -5292,7 +5295,7 @@ "filterError": "Hiba", "filterBanned": "Letiltva", "filterCreditsExhausted": "Elfogyott kreditek", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Fiókok keresése…", "noFilteredConnections": "Egyetlen kapcsolat sem felel meg a jelenlegi szűrőnek.", "failedSetAlias": "Nem sikerült beállítani az aliast", "setAliasSuccess": "A(z) {alias} alias beállítva", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "OpenAI-kompatibilis részletek", "messagesApi": "Messages API", "responsesApi": "Válaszok API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Beágyazások", + "audioTranscriptions": "Hangátiratok", + "audioSpeech": "Beszédszintézis", + "imagesGenerations": "Képgenerálás", "chatCompletions": "Csevegés befejezése", "importingModels": "Importálás...", "importFromModels": "Importálás a /models-ből", - "modelsImported": "{count} models imported", + "modelsImported": "{count} modell importálva", "allModelsAlreadyImported": "Minden modell már importálva van", "noNewModelsToImport": "Nincs új modell az importáláshoz — minden modell már a nyilvántartásban vagy az egyéni modellek listájában van", "skippingExistingModels": "{count} meglévő modell kihagyása", @@ -5332,7 +5335,7 @@ "autoSyncTooltip": "A modelllista automatikus frissítése 24 óránként (konfigurálható: MODEL_SYNC_INTERVAL_HOURS)", "autoSyncEnabled": "Automatikus szinkronizálás engedélyezve – a modellek rendszeresen frissülnek", "autoSyncDisabled": "Az automatikus szinkronizálás letiltva", - "autoSyncToggleFailed": "Failed to toggle auto-sync", + "autoSyncToggleFailed": "Az automatikus szinkronizálás átkapcsolása sikertelen", "autoSyncPartialFailure": "Az automatikus szinkronizálás frissült néhány kapcsolatnál, de nem mindnél", "clearAllModels": "Minden modell törlése", "clearAllModelsConfirm": "Biztosan eltávolítja ennek a szolgáltatónak az összes modelljét? Ezt nem lehet visszavonni.", @@ -5345,34 +5348,34 @@ "failedFetchModels": "Nem sikerült lekérni a modelleket", "noFreeModelsFound": "Nem találhatók ingyenes modellek ehhez a szolgáltatóhoz — semmi sem lett importálva.", "fetchModelsSuccess": "{count} új modell található", - "fetchModelsFailed": "Could not auto-fetch models (you can retry from settings)", + "fetchModelsFailed": "A modelleket nem sikerült automatikusan lekérni (a beállításokban újrapróbálhatja)", "noModelsFound": "Nem található modell", "importFailed": "Az importálás sikertelen", "noNewModelsAdded": "Nem adtak hozzá új modelleket.", "adding": "Hozzáadás...", - "close": "Close", + "close": "Bezárás", "importingModelsTitle": "Modellek importálása", "copyModel": "Modell másolása", "filterModels": "Modellek szűrése…", - "testAllRateLimited": "Rate limit reached, stopped early", - "hideFailedAuto": "Auto-hide failed models", - "selectAllModels": "Select all", - "hideAllModels": "Hide all", + "testAllRateLimited": "Elérte a sebességkorlátot, ezért a folyamat idő előtt leállt", + "hideFailedAuto": "Sikertelen modellek automatikus elrejtése", + "selectAllModels": "Összes kijelölése", + "hideAllModels": "Összes elrejtése", "modelsActive": "aktív", "showModel": "Modell megjelenítése", "hideModel": "Modell elrejtése", "removeModel": "Modell eltávolítása", "rateLimitProtected": "Védett", "rateLimitUnprotected": "Nem védett", - "providerQuotaShort": "Quota", - "hideConnectionFromProviderQuota": "Hide this account from Provider Quota", - "showConnectionInProviderQuota": "Show this account in Provider Quota", - "quotaVisibilityUpdateFailed": "Failed to update Provider Quota visibility", + "providerQuotaShort": "Kvóta", + "hideConnectionFromProviderQuota": "A fiók elrejtése a szolgáltatói kvótából", + "showConnectionInProviderQuota": "A fiók megjelenítése a szolgáltatói kvótában", + "quotaVisibilityUpdateFailed": "Nem sikerült frissíteni a szolgáltatói kvótában való láthatóságot", "enableRateLimitProtection": "Kattintson a sebességkorlátozás védelem engedélyezéséhez", "disableRateLimitProtection": "Kattintson a rátakorlát védelmének letiltásához", - "testAllProgress": "Tested {done}/{total}", - "testAllFailedHidden": "{count} failed models hidden", - "testAllDone": "All models tested", + "testAllProgress": "Tesztelve: {done}/{total}", + "testAllFailedHidden": "{count} sikertelen modell elrejtve", + "testAllDone": "Minden modell tesztelve", "productionKey": "Gyártási kulcs", "enterNewApiKey": "Adja meg az új API-kulcsot", "codexApplyModalTitle": "Jelentkezzen a Local Codex-nél", @@ -5386,13 +5389,13 @@ "bulkAddFormatHint": "Soronként egy kulcs. Formátum: name|apiKey vagy csak apiKey (index által automatikusan elnevezett).", "bulkValidateKeys": "Mentés előtt minden kulcs érvényesítése (lassabb)", "bulkAddAllKeys": "Összes kulcs hozzáadása", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# kulcs hozzáadva} other {# kulcs hozzáadva}}", + "bulkFailedCount": "{count, plural, one {# sikertelen} other {# sikertelen}}", "optional": "Választható", "anthropicCompatibleName": "Antropikus kompatibilis", "openaiCompatibleName": "OpenAI kompatibilis", - "compatibleDefaultModelLabel": "Default Model", - "compatibleDefaultModelHint": "Enter the model ID exactly as your compatible endpoint expects it. This model will be saved as the connection default.", + "compatibleDefaultModelLabel": "Alapértelmezett modell", + "compatibleDefaultModelHint": "Adja meg a modellazonosítót pontosan úgy, ahogyan azt a kompatibilis végpont elvárja. Ez a modell lesz a kapcsolat alapértelmezett modellje.", "failedImportModels": "A modellek importálása sikertelen", "noModelsReturnedFromEndpoint": "Nincsenek visszaadott modellek a /models végpontról.", "importingModelsProgress": "{current}/{total} modell importálása...", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Váratlan hiba történt", "getApiKey": "API kulcs beszerzése", "getApiKeyDescription": "Regisztrálj vagy jelentkezz be egy API kulcsért", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# kapcsolat} other {# kapcsolat}}", "messagesPath": "üzeneteket", "responsesPath": "válaszokat", "chatCompletionsPath": "chat/befejezések", @@ -5419,17 +5422,17 @@ "configured": "konfigurálva", "providerProxyConfigureHint": "Konfigurálja a proxyt a szolgáltató összes kapcsolatához", "providerProxy": "Szolgáltató proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": ".env javítása", + "repairEnvWorking": "Javítás...", + "repairEnvHint": "A hiányzó alapértelmezett OAuth-értékek visszaállítása a .env fájlban a meglévő értékek felülírása nélkül.", + "repairEnvSuccess": "Az alapértelmezett OAuth-értékek visszaállítva", + "repairEnvFailed": "A .env javítása sikertelen", "noConnectionsYet": "Még nincsenek kapcsolatok", "addFirstConnectionHint": "A kezdéshez adja hozzá az első kapcsolatot", "addConnection": "Csatlakozás hozzáadása", "availableModels": "Elérhető modellek", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Beépített modellek", + "builtInModelsHint": "A szolgáltatóhoz tartozó beállításjegyzék-modellek. A kompatibilitási beállításokat a ceruza ikonnal adhatja meg.", "pageAutoRefresh": "Az oldal automatikusan frissül...", "statusDisabled": "letiltva", "statusConnected": "csatlakoztatva", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Hitelesítse újra ezt a kapcsolatot", "proxyConfig": "Proxy konfig", "aliasExistsAlert": "A \"{alias}\" alias már létezik. Kérjük, használjon másik modellt, vagy módosítsa a meglévő álnevet.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "álnév", + "clickToSetAlias": "Kattintson az álnév beállításához", + "clickToEditAlias": "Álnév: {alias} (kattintson a szerkesztéshez)", "openRouterAnyModelHint": "Az OpenRouter bármilyen modellt támogat. Adjon hozzá modelleket és hozzon létre álneveket a gyors hozzáférés érdekében.", "modelIdFromOpenRouter": "Modellazonosító (az OpenRoutertől)", "openRouterModelPlaceholder": "antropikus/claude-3-opus", "customModels": "Egyedi modellek", "customModelsHint": "Adjon hozzá olyan modellazonosítókat, amelyek nem szerepelnek az alapértelmezett listában. Ezek elérhetők lesznek az útválasztáshoz.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Az eszközhívási azonosítók normalizálása 9 karakteresre (pl. Mistral)", + "preserveDeveloperRoleLabel": "Az OpenAI Responses fejlesztői szerepkörének megtartása (ne legyen system szerepkörre leképezve)", + "compatAdjustmentsTitle": "Kompatibilitás", + "compatButtonLabel": "Kompatibilitás", + "compatToolIdShort": "9 karakteres eszközazonosító", + "compatDeveloperShort": "Fejlesztői szerepkör", + "compatDoNotPreserveDeveloper": "Ne őrizze meg a fejlesztői szerepkört", + "compatBadgeNoPreserve": "Ne őrizze meg", + "compatProtocolLabel": "Klienskérés protokollja", + "compatProtocolHint": "Ezek a beállítások akkor érvényesek, amikor az OmniRoute ezt a kérésformátumot észleli (OpenAI Chat, Responses API vagy Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5500,7 +5503,7 @@ "targetFormatHint": "A felsőbb szintű átviteli formátum felülírása. Használja az 'Anthropic Messages' beállítást az OpenAI-kompatibilis szolgáltatók (pl. opencode-go) /v1/messages végponton keresztüli átirányításához.", "targetFormatAuto": "Alapértelmezett (automatikus)", "targetFormatGemini": "Gemini", - "targetFormatAntigravity": "Antigravity", + "targetFormatAntigravity": "Antigravitáció", "contextWindowOverrideLabel": "Kontextusablak felülírása", "contextWindowOverridePlaceholder": "pl. 131072", "contextWindowOverrideHint": "Állítsa be manuálisan a modell valós kontextusablakát (tokenekben), ha a szolgáltató hibásan jelenti azt. Elsőbbséget élvez az automatikusan észlelt/katalógusértékekkel szemben, és megakadályozza, hogy a kombinált útvonalválasztás eldobja a modellt.", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "A natív web_fetch eszközhívások átírása az OmniRoute /v1/web/fetch végpontjára.", "interceptionLoadError": "Nem sikerült betölteni az elfogási beállításokat: {error}", "interceptionSaveError": "Nem sikerült menteni az elfogási beállításokat: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Megjelenítés a Claude Code-ban (claude/…)", + "ccAliasSectionHint": "A szolgáltató modelljeinek meghirdetése claude/<provider>/<model> tükörazonosítók alatt, hogy a Claude Code átjárójának modellfelderítése listázhassa őket. Alapértelmezés szerint ki van kapcsolva — bekapcsolása minden kliensnél megduplázza a katalógusbejegyzéseket.", + "ccAliasProviderLevelLabel": "Szolgáltatói alapértelmezés", + "ccAliasModelOverridesLabel": "Modellenkénti felülírások", + "ccAliasModelOverrideAriaLabel": "Felülírás ehhez: {modelId}", + "ccAliasStateInherit": "Öröklés", + "ccAliasStateOn": "Be", + "ccAliasStateOff": "Ki", + "ccAliasAddModelPlaceholder": "Modellazonosító (pl. gpt-4o)", + "ccAliasAddModelButton": "Felülírás hozzáadása", + "ccAliasLoadError": "A felderítési álnevek beállításainak betöltése sikertelen: {error}", + "ccAliasSaveError": "A felderítési álnév beállításának mentése sikertelen: {error}", + "compatUpstreamHeadersLabel": "További upstream fejlécek", + "compatUpstreamHeadersHint": "Magas jogosultságú beállítás — ugyanolyan bizalmi szintet igényel, mint a szolgáltatói API-hitelesítő adatok szerkesztése; csak megbízható rendszergazdák használják. Az OmniRoute által a szolgáltatói API-kulcsból hozzáadott hitelesítés után kerül egyesítésre. Ha egy egyéni fejléc neve megegyezik egy meglévőével (pl. Authorization), az Ön értéke teljesen felülírja az automatikusan létrehozott fejlécet (a Bearer tokent is beleértve) — az upstream csak a beírt értéket látja, a beállításokban szereplő kulcsot nem. A helytelen konfiguráció 401-es hibát vagy hibás upstream-hitelesítést okozhat. Fejlécenként egy sor adható meg (pl. további Authentication egyes átjárókhoz). Az előnézethez vigye az egérmutatót az érték fölé, vagy helyezze rá a fókuszt. Mentés a fókusz elvesztésekor, a panelen kívülre kattintáskor vagy a panel bezárásakor.", + "compatUpstreamHeaderName": "Fejléc neve", + "compatUpstreamHeaderValue": "Érték", + "compatUpstreamAddRow": "Fejléc hozzáadása", + "compatUpstreamRemoveRow": "Sor eltávolítása", + "compatBadgeUpstreamHeaders": "Fejlécek", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Csak ingyenes modellek importálása", @@ -5592,26 +5595,26 @@ "email": "E-mail", "healthCheckMinutes": "állapotfelmérés (perc)", "healthCheckHint": "Proaktív token frissítési időköz. 0 = letiltva.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Összes kijelölésének megszüntetése", + "modelsActiveCount": "{active}/{total} aktív", + "noModelsMatch": "Egyetlen modell sem felel meg ennek: „{filter}”", + "groupLabel": "Környezet", + "groupPlaceholder": "pl. eKaizen, Személyes", "failedTestConnection": "Nem sikerült tesztelni a kapcsolatot", "failed": "Sikertelen", "leaveBlankKeepCurrentApiKey": "Hagyja üresen az aktuális API-kulcs megtartásához.", "editCompatibleTitle": "Szerkesztés {type} Kompatibilis", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "A(z) {type}-kompatibilis API gyökér-URL-je. Egyéni végpontútvonalakhoz használja a Speciális beállításokat.", "apiKeyForCheck": "API-kulcs (ellenőrzéshez)", "testModelIdLabel": "Modellazonosító (opcionális)", "testModelIdPlaceholder": "pl. my-model-id", "testModelIdHint": "Ha a szolgáltató nem rendelkezik /models végponttal, adjon meg egy modellazonosítót a /chat/completions végponton keresztüli ellenőrzéshez.", "compatibleProdPlaceholder": "{type} Kompatibilis (termék)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "A token sikeresen frissült", + "tokenRefreshFailed": "A token frissítése sikertelen", "cursorSessionUnchanged": "A munkamenet már aktuális", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Hitelesítés alkalmazása", + "exportCodexAuthFile": "Hitelesítés exportálása", "applyClaudeAuthLocal": "Hitelesítés alkalmazása", "exportClaudeAuthFile": "Hitelesítés exportálása", "importClaudeAuth": "Hitelesítés importálása", @@ -5658,7 +5661,7 @@ "geminiAuthApplyFailed": "Nem sikerült helyileg alkalmazni a Gemini hitelesítést", "geminiAuthExported": "Gemini auth fájl exportálva", "geminiAuthExportFailed": "Nem sikerült exportálni a Gemini auth fájlt", - "geminiImportModalTitle": "Import Gemini Auth", + "geminiImportModalTitle": "Gemini Auth importálása", "geminiImportTabSingle": "Egyetlen", "geminiImportTabBulk": "Tömeges", "geminiImportTabUpload": "Fájl feltöltése", @@ -5704,7 +5707,7 @@ "codexExternalLinkConnected": "Codex fiók csatlakoztatva a külső linken keresztül.", "codexExternalLinkExpired": "A link lejárt a befejezés előtt.", "importCodexAuth": "Hitelesítés importálása", - "codexImportModalTitle": "Import Codex Auth", + "codexImportModalTitle": "Codex Auth importálása", "codexImportTabSingle": "Egyetlen", "codexImportTabBulk": "Tömeges", "codexImportTabUpload": "Fájl feltöltése", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} sikertelen", "codexImportBulkZipExtracting": "ZIP kibontása…", "codexImportBulkZipError": "A ZIP kibontása nem sikerült", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Speciális beállítások", + "chatPathLabel": "Csevegési végpont útvonala", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Egyéni csevegési útvonal nem szabványos API-kkal rendelkező szolgáltatókhoz (pl. /v4/chat/completions)", + "modelsPathLabel": "Modellek végpontjának útvonala", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Egyéni modellútvonal az ellenőrzéshez (pl. /v4/models)", "clientIdentityLabel": "Kliens identitás", - "clientIdentityHint": "Optional. Adds client fingerprint headers (e.g. User-Agent) matching a known CLI for compatible gateways that expect one.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "clientIdentityHint": "Nem kötelező. Egy ismert CLI-nek megfelelő kliens-ujjlenyomat-fejléceket (pl. User-Agent) ad hozzá az ilyen fejlécet elváró kompatibilis átjárókhoz.", + "statusDeactivated": "Deaktiválva (manuálisan)", + "statusBanned": "Kitiltva / Sandbox-szabálysértés", + "statusCreditsExhausted": "Elégtelen egyenleg / kimerült kvóta", + "showEmails": "Összes e-mail-cím megjelenítése", + "hideEmails": "Összes e-mail-cím elrejtése", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Adjon hozzá egy másik API-kulcsot, vagy illesszen be több kulcsot", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "aggregatorsGateways": "Aggregátorok és átjárók", + "enterpriseCloud": "Vállalati és felhőalapú", + "apiFormatLabel": "API-formátum címkéje", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "Kínai API-régió", + "apiRegionHint": "API-régió súgószövege", + "apiRegionInternational": "Nemzetközi API-régió", + "apiRegionLabel": "API-régió címkéje", + "apikey": "API-kulcs", + "audio": "Hang", + "audioProvidersHeading": "Hangszolgáltatók címsora", "cloudAgentProviders": "Cloud Agent szolgáltatók", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Hang rövid címkéje", + "azureOpenAiBaseUrlHint": "Azure OpenAI alap-URL súgója", + "bailianBaseUrlHint": "Bailian alap-URL súgója", + "claudeWebCookieHint": "Nyisd meg a claude.ai oldalt → DevTools → Application → Cookies → claude.ai, majd másold ki a „sessionKey” értékét. A Cloudflare használatához a cf_clearance, __cf_bm és _cfuvid értékekre is szükség van.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web cookie súgója", + "blackboxWebCookiePlaceholder": "Blackbox Web cookie helyőrzője", "t3ChatWebCookieHint": "Nyissa meg a t3.chat → DevTools → Alkalmazás → Helyi tárhely → https://t3.chat menüpontot, másolja ki a 'convex-session-id'-t. Ezután nyissa meg a DevTools → Network lehetőséget, és másolja ki a teljes Cookie fejlécet bármely csevegési kérelemből. Illessze be mindkét értéket az alábbi mezőkbe.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web cookie súgója", "blockClaudeExtraUsageDescription": "Ha engedélyezve van, az OmniRoute azonnal nem elérhetővé jelöli ezt a Claude kapcsolatot, amint a használati API sorban álló extra használatot jelent, így a visszaállás egy másik kapcsolatra vált, ahelyett, hogy folytatná a fizess, ahogy használod extra számlázást.", "blockClaudeExtraUsageLabel": "Blokkolja az extra Claude használatát", - "disableCoolingDescription": "Skip the transient cooldown so this connection stays eligible even after recoverable errors (terminal states like banned/expired still apply).", + "disableCoolingDescription": "Az átmeneti várakozási idő kihagyása, hogy ez a kapcsolat helyreállítható hibák után is használható maradjon (a végleges állapotok, például a letiltás vagy lejárat továbbra is érvényesek).", "disableCoolingLabel": "Lehűlési idő (cooldown) letiltása ehhez a kapcsolathoz", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 kulcs hozzáadva} other {# kulcs hozzáadva}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 ismétlődő kulcs kihagyva} other {# ismétlődő kulcs kihagyva}}", + "bulkPasteHint": "Illessz be soronként egy API-kulcsot. Az üres sorokat figyelmen kívül hagyjuk, az ismétlődő kulcsokat pedig kihagyjuk.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Hozzáadja a redact-thinking béta fejlécet azokhoz a CC Compatible upstream szolgáltatásokhoz, amelyek rejtett Claude gondolkodási adatfolyamokat igényelnek.", + "ccCompatibleRedactThinkingLabel": "A redact-thinking béta engedélyezése", + "ccCompatibleSummarizeThinkingDescription": "Hozzáadja a `display: \"summarized\"` értéket a CC Compatible gondolkodási kérelmekhez, így a támogatott Claude modellek látható gondolkodási változásokat közvetítenek.", + "ccCompatibleSummarizeThinkingLabel": "Az összefoglalt gondolkodás megjelenítésének engedélyezése", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "A prioritásos szolgáltatási szint használata a Codex-kérelmekhez, amikor elérhető.", + "codexFastServiceTierLabel": "Codex gyors szolgáltatási szint", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Kompatibilis upstream fejléc nevének helyőrzője", + "compatUpstreamHeaderValuePlaceholder": "Kompatibilis upstream fejléc értékének helyőrzője", + "compatible": "Kompatibilis", + "configuredCount": "Konfigurált elemek száma", + "consoleApiKeyOracleHint": "A konzol API-kulcsához tartozó Oracle súgója", + "consoleApiKeyOracleLabel": "A konzol API-kulcsához tartozó Oracle címkéje", + "consoleApiKeyOraclePlaceholder": "A konzol API-kulcsához tartozó Oracle helyőrzője", + "newApiUserIdLabel": "New-API felhasználói azonosító", + "newApiUserIdPlaceholder": "pl. 12345", + "newApiUserIdHint": "Az AgentRouter New-Api-User fejlécértéke, amelyet a konzol API-kulcsával együtt használunk a kvótaegyenleg lekéréséhez.", "newApiAggregatorToggleLabel": "Aggregátor Kapu", "newApiAggregatorToggleHint": "Engedélyezze a egyenleg-érzékelést az Új-API / Egy-API / Sub2API aggregátor csomópontokhoz. A műszerfal megjeleníti az egyenleg jelvényt, és a kvóta-előzetes irányítás kihagyja a kimerült fiókokat.", "newApiAggregatorConsoleApiKeyHint": "Rendszerhozzáférési Token az aggregátor /api/user/self végpontjához. Nem a routing API kulcs.", @@ -5830,57 +5833,57 @@ "featureFlagNewApiAggregatorBalanceDescription": "Engedélyezze a egyensúly-érzékelést az New-API / One-API / Sub2API aggregátorral kompatibilis csomópontokhoz", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Egyéni felhasználói ügynök súgója", + "customUserAgentLabel": "Egyéni felhasználói ügynök címkéje", + "databricksBaseUrlHint": "Databricks alap-URL súgója", + "defaultThinkingStrengthHint": "Akkor használatos, ha a kérelem nem határozza meg az érvelés intenzitását.", + "defaultThinkingStrengthLabel": "Alapértelmezett gondolkodási intenzitás", + "deleteAllExtraApiKeys": "Összes törlése", + "excludedModelsHint": "Kizárt modellek súgója", + "excludedModelsLabel": "Kizárt modellek címkéje", + "excludedModelsPlaceholder": "Kizárt modellek helyőrzője", + "expirationBannerExpired": "Lejárati figyelmeztetősáv: lejárt", + "expirationBannerExpiredDesc": "A lejárt állapotot jelző figyelmeztetősáv leírása", + "expirationBannerExpiringSoon": "Lejárati figyelmeztetősáv: hamarosan lejár", + "expirationBannerExpiringSoonDesc": "A közelgő lejáratot jelző figyelmeztetősáv leírása", + "extraApiKeyMasked": "{index}. kulcs: {prefix}••••{suffix}", + "extraApiKeysHint": "További API-kulcsokkal kapcsolatos tipp", + "extraApiKeysLabel": "További API-kulcsok", + "apiKeyHealthLabel": "API-kulcsok állapota", + "apiKeyStatusActive": "Aktív", + "apiKeyStatusWarning": "Figyelmeztetés ({count} hiba)", + "apiKeyStatusInvalid": "Érvénytelen", + "primaryKey": "Elsődleges kulcs", + "apiKeyInvalidAlert": "{count} API-kulcs érvénytelenként lett megjelölve a következő kapcsolatokban történt hitelesítési hibák miatt: {connections}. Ezeket a rendszer kihagyja a rotációból. Kattintson az áttekintéshez.", + "apiKeyInvalidAlertTitle": "API-kulcs állapotával kapcsolatos riasztás", + "apiKeyWarningAlert": "{count} API-kulcs figyelmeztetési állapotban van a következő kapcsolatokban tapasztalt megnövekedett hibaarány miatt: {connections}. Tekintse át őket a rotációs problémák megelőzése érdekében.", + "apiKeyWarningAlertTitle": "API-kulccsal kapcsolatos figyelmeztetés", + "googlePseInfo": "Információk a Google PSE-ről", "antigravityProjectIdHint": "Opcionális felülírás az Antigravity Cloud Code kérésekhez. Hagyja üresen a Google OAuth során felfedezett projekt használatához.", "antigravityClientProfileLabel": "Kliensprofil", "antigravityClientProfileHint": "Válassza ki, melyik Antigravity kliensidentitást mutassa az OmniRoute az API felé.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "A Codex Fast szint aktív", - "tierFast": "Fast", - "antigravityProjectIdLabel": "Google Cloud Project ID", + "tierFast": "Gyors", + "antigravityProjectIdLabel": "Google Cloud-projektazonosító", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok webes süti helyőrzője", + "herokuBaseUrlHint": "Tipp a Heroku alap-URL-jéhez", + "hideEmail": "E-mail-cím elrejtése", + "imageProviders": "Képszolgáltatók", "videoProviders": "Videó generálása", "embeddingRerankProviders": "Beágyazások és áthelyezés", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Képek", + "llmProviders": "LLM-szolgáltatók", + "localProviderApiKeyOptionalHint": "Tipp a helyi szolgáltató opcionális API-kulcsához", + "localProviderBaseUrlHint": "Tipp a helyi szolgáltató alap-URL-jéhez", + "localProviders": "Helyi szolgáltatók", + "maxConcurrentWholeNumberError": "Az egyidejű műveletek maximális számának egész számnak kell lennie", "m365TierLabel": "Copilot szint", "m365TierHint": "Válassza ki, melyik Microsoft 365 Copilot felületet használja ez a kapcsolat. Az Individual az alapértelmezett fogyasztói BizChat; az Education és az Enterprise (munkahelyi) a saját bérlői (tenant) felületeiket választják.", "m365TierIndividualOption": "Individual (alapértelmezett)", - "m365TierEduOption": "Education", + "m365TierEduOption": "Oktatás", "m365TierEnterpriseOption": "Vállalati / Munkahelyi", "tierOverrideLabel": "Szint felülbírálása", "tierOverrideAuto": "Automatikus (az útvonalválasztás dönt)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Olcsó", "tierOverridePremium": "Prémium", "tierOverrideHelpText": "Rögzítse ezt a szolgáltatót egy útvonalválasztási szinthez ahelyett, hogy az OmniRoute a modell árazása alapján következtetne rá.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Tipp a Muse Spark webes sütijéhez", + "museSparkWebCookiePlaceholder": "Muse Spark webes süti helyőrzője", + "oauth": "OAuth", + "openCliTools": "CLI-eszközök megnyitása", + "openSettings": "Beállítások megnyitása", + "openaiResponsesStoreDescription": "A kompatibilis Responses API-kérések számára a tárolt válaszállapot megőrzésének engedélyezése.", + "openaiResponsesStoreLabel": "OpenAI Responses-tárolás", + "perplexitySearchSharedKeyInfo": "Információk a Perplexity Search megosztott kulcsáról", + "perplexityWebCookieHint": "Perplexity webes süti súgója", + "perplexityWebCookiePlaceholder": "Perplexity webes süti helyőrzője", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Sebességkorlátok felülbírálása", "rateLimitOverridesMaxConcurrentHint": "Maximális párhuzamos kérések felülbírálása ehhez a kapcsolathoz. Felülbírálja a fiókszintű korlátot.", "rateLimitOverridesMaxConcurrentLabel": "Max. párhuzamos (sebességkorlát)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Az a maximális idő (ms), ameddig egy kérés várhat egy sebességkorlátozási helyre, mielőtt meghiúsul. Csak ennél a kapcsolatnál írja felül a globális rugalmassági beállítást.", + "rateLimitOverridesMaxWaitMsLabel": "Maximális várakozás a sorban (ms)", "rateLimitOverridesMinTimeHint": "Kérések közötti minimális idő (ms). Felülbírálja az alapértelmezett sebességkorlátozó késleltetést.", "rateLimitOverridesMinTimeLabel": "Min. intervallum (ms)", "rateLimitOverridesRpdHint": "Maximális kérések száma naponta ehhez a kapcsolathoz. Felülbírálja a szolgáltató alapértelmezését.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (token/nap)", "rateLimitOverridesTpmHint": "Maximális percenkénti tokenszám ehhez a kapcsolathoz. Felülbírálja a szolgáltató alapértelmezését.", "rateLimitOverridesTpmLabel": "TPM (token/perc)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "OAuth-token frissítése", + "regionHint": "Régió súgója", + "regionLabel": "Régió", + "removeThisKey": "Kulcs eltávolítása", + "routingTagsHint": "Útválasztási címkék súgója", + "routingTagsLabel": "Útválasztási címkék", + "routingTagsPlaceholder": "Útválasztási címkék helyőrzője", + "search": "Keresés", + "searchEngineIdHint": "Keresőmotor-azonosító súgója", + "searchEngineIdLabel": "Keresőmotor-azonosító", + "searchEngineIdRequired": "A keresőmotor-azonosító megadása kötelező", + "searchProvider": "Keresési szolgáltató", + "searchProviderDesc": "A keresési szolgáltató leírása", "searchProviders": "Keressen szolgáltatók között...", "searchByModel": "Keresés modell alapján…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Keresési szolgáltatók", + "searxngBaseUrlHint": "Searxng alap-URL súgója", + "searxngInfo": "Searxng-információk", + "sessionCookieLabel": "Munkamenetsüti", + "showEmail": "E-mail-cím megjelenítése", + "snowflakeBaseUrlHint": "Snowflake alap-URL súgója", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Címkecsoport súgója", + "tagGroupLabel": "Címkecsoport", + "tagGroupPlaceholder": "Címkecsoport helyőrzője", + "testModel": "Modell tesztelése", + "testingModel": "Modell tesztelése folyamatban", "modelTestQuotaTooltip": "Kota kimerült — holnap resetelődik vagy feltöltés szükséges", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Lejárt token", + "tokenExpiredTitle": "A token lejárt", + "tokenExpiresSoonTitle": "A token hamarosan lejár", + "tokenShort": "Token", + "totalKeysRotating": "{count, plural, one {1 kulcs rotálódik} other {# kulcs rotálódik}}", + "unhideModel": "Modell újbóli megjelenítése", + "upstreamProxyProviders": "Kimenő proxyszolgáltatók", "validationModelIdHint": "Az API-kulcs ellenőrzésére használt modell. Hagyja üresen a szolgáltató első elérhető modelljének használatához.", "validationModelIdLabel": "Ellenőrző modell", "validationModelIdPlaceholder": "pl. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Illessze be a Service Account JSON-fájlt ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) vagy egy OAuth access_token értékét", + "webCookieProviders": "Webes sütiket használó szolgáltatók", + "weeklyShort": "Heti", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo alap-URL súgója", "globalCodexServiceMode": "Globális Codex szolgáltatási mód", "connect": "Csatlakozás", "manualApiKey": "Kézi API-kulcs", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Fedezd fel a Zed IDE által az operációs rendszer kulcstartójában tárolt AI-szolgáltatói hitelesítési adatokat (OpenAI, Anthropic, Google, Mistral, xAI), és importáld őket kapcsolatként. A Zed IDE-nek telepítve kell lennie ezen a gépen.", "zedImportButton": "Importálás a Zed-ből", "zedImportFailed": "Zed importálás nem sikerült", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed-importálás súgója", + "zedImportNetworkError": "Zed-importálási hálózati hiba", + "zedImportNone": "Nincs Zed-importálás", "zedImportSuccess": "Importált {credentials} hitelesítő adat(ok) a Zed-től a {providers} szolgáltató(k) számára", "zedImporting": "Importálás…", "zedNoCredentials": "Nem találhatók Zed hitelesítési adatok a kulcstartóban", @@ -6016,7 +6019,7 @@ "providerDetailFastTierTooltip": "Alapértelmezés szerint alkalmazza a Codex Fast réteget az összes Codex-kapcsolatra", "providerDetailFastDefaultLabel": "Gyors alapértelmezett", "providerDetailBrowserManualConnect": "Böngésző/manuális csatlakozás", - "providerDetailAuthUrl": "Auth URL", + "providerDetailAuthUrl": "Hitelesítési URL", "providerDetailCallbackUrl": "Visszahívási URL", "providerDetailValidClaudeCredentialsFile": "Érvényes Claude hitelesítő adatfájl", "providerDetailPathAutoDetectedAllOs": "Az útvonalat a rendszer automatikusan észleli operációs rendszerenként (Linux/Mac/Windows).", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "{number}. bejegyzés", "claudeImportParseError": "értelmezési hiba", "claudeImportNoValidEntries": "Nincsenek importálható érvényes bejegyzések", - "webFetch": "Web Fetch", + "webFetch": "Webes lekérés", "webFetchTooltip": "Szolgáltatók, amelyek tartalmat nyernek ki webes URL-ekből (HTML → Markdown, scrape, képernyőkép)", "webFetchProvidersHeading": "Web Fetch szolgáltatók", "compatibleProvidersDesc": "OpenAI-kompatibilis és Anthropic-kompatibilis végpontok, amelyeket te üzemeltetsz vagy konfigurálsz. Irányíts bármilyen OpenAI SDK-t a saját URL-edre, és irányítsd ide a kéréseket.", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Kedvezményes API-proxy több mint 40 modellhez, beleértve a GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5 modelleket. Szerezze be API-kulcsát a https://freeaiapikey.com/dashboard oldalon. Alap URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Szerezzen $300 ingyenes API-kreditet a https://freemodel.dev oldalon — fizetési adat nem szükséges. OpenAI-kompatibilis végpont. GPT-5.4 és GPT-5.5 modellek érhetők el.", "friendliai": "Ingyenes csomag szerver nélküli következtetéshez — bankkártya nem szükséges", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Ingyenes csomag a Google AI Studión keresztül; a modellenkénti kvótákat már nem teszik közzé (ellenőrizd a kvótaoldalt az AI Studióban) — nincs szükség bankkártyára.", "gigachat": "Csatlakoztassa a GigaChatet (Sber) egy API-kulccsal.", "gitlab": "GitLab személyes hozzáférési token a nyilvános Code Suggestions API-hoz. Állítson be saját üzemeltetésű alap URL-t, ha nem a gitlab.com-ot használja.", "gitlawb-gmi": "Szerezze be API-kulcsát a Gitlawb Opengateway irányítópultjáról.", @@ -6184,7 +6187,7 @@ "glm-cn": "Csatlakoztassa a GLM Coding (Kína) szolgáltatást egy API-kulccsal.", "glmt": "Előre beállított GLM-profil magasabb tokenkerettel, engedélyezett gondolkodással és hosszabb időtúllépéssel.", "getgoapi": "Csatlakoztassa a GoAPI-t egy API-kulccsal.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Ingyenes csomag: modellenkénti korlátok (napi 200K token csevegési modellenként; az RPM/RPD-korlátokat lásd itt: console.groq.com/docs/rate-limits) — nincs megadva fizetési mód.", "haiper": "Szerezzen API-kulcsot a haiper.ai/haiper-api oldalon", "heroku": "Csatlakoztassa a Heroku AI-t egy API-kulccsal.", "hcnsec": "Szerezzen API-kulcsot itt: api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Hozzon létre egy API-kulcsot a https://app.requesty.ai oldalon, majd illessze be ide Bearer tokenként. OpenAI-kompatibilis végpont a https://router.requesty.ai/v1 címen, élő /v1/models katalógussal.", "runwayml": "A Runway videógenerálás feladatalapú. Az OmniRoute elküldi a text-to-video vagy image-to-video feladatokat, lekérdezi a /v1/tasks/[id] állapotát, és a kész videókimeneteket visszaalakítja az OpenAI-szerű /v1/videos/generations válasszá.", "sambanova": "$5 ingyenes kredit regisztrációkor (30 napos érvényesség), bankkártya nem szükséges", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Hozz létre egy API-kulcsot a https://seekai.cc oldalon, majd illeszd be ide Bearer tokenként. OpenAI-kompatibilis alap-URL: https://seekai.cc/v1.", "sap": "A modellfelderítés a /v2/lm/scenarios/foundation-models/models végpontot használja az AI_API_URL címen. A chat kérések a deploymentUrl/chat/completions végpontot használják, és AI-Resource-Group szükséges hozzájuk.", "sarvam": "A Sarvam AI OpenAI-kompatibilis a /v1-en. Az OmniRoute a /v1/models-t vizsgálja és a chat forgalmat a /v1/chat/completions-re irányítja. A modellek az indiai nyelvekre vannak optimalizálva.", "scaleway": "1M ingyenes token új fiókoknak — EU/GDPR-megfelelő (Párizs), Qwen3 235B és Llama 70B", @@ -6309,21 +6312,21 @@ "claude": "A Claude Code összekapcsolása a meglévő OAuth-folyamattal.", "cline": "A Cline összekapcsolása a meglévő OAuth-folyamattal.", "cursor": "A Cursor IDE összekapcsolása a meglévő OAuth-folyamattal.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Csatlakoztasd a Cursort egy, a cursor.com/dashboard/api oldalon létrehozott felhasználói API-kulccsal (crsr_...); nincs szükség IDE-munkamenetre.", "github": "A GitHub Copilot összekapcsolása a meglévő OAuth-folyamattal.", "gitlab-duo": "OAuth alkalmazás ai_features + read_user hatókörökkel. Konfigurálja a GITLAB_DUO_OAUTH_CLIENT_ID és opcionálisan a GITLAB_DUO_OAUTH_CLIENT_SECRET változókat ezen az OmniRoute példányon.", "kilocode": "A Kilo Code összekapcsolása a meglévő OAuth-folyamattal.", "kimi-coding": "A Kimi Coding összekapcsolása a meglévő OAuth-folyamattal.", - "kiro": "Free tier: 50 credits/month (~25K–100K tokens). ⚠️ Kiro ToS prohibits third-party proxy/harness use.", - "codex": "Connect OpenAI Codex with the existing OAuth flow.", - "qwen": "Connect Qwen Code with the existing OAuth flow.", + "kiro": "Ingyenes csomag: havi 50 kredit (~25K–100K token). ⚠️ A Kiro felhasználási feltételei tiltják a harmadik féltől származó proxyk és tesztkeretrendszerek használatát.", + "codex": "Csatlakoztasd az OpenAI Codexet a meglévő OAuth-folyamattal.", + "qwen": "Csatlakoztasd a Qwen Code-ot a meglévő OAuth-folyamattal.", "github-models": "Hozzon létre egy GitHub PAT-ot 'models: read' hatókörrel a github.com/settings/tokens oldalon" }, "passthroughModelsDescription": "Az {provider} elfogadja a szolgáltató natív modellazonosítóit. Importáljon a /models-ból, vagy adjon hozzá egyéni azonosítókat az útválasztáshoz.", "bedrockModelsDescription": "Az Amazon Bedrock modellek hatóköre az AWS régió szerint történik. Importáljon a /models mappából, vagy adja hozzá a kiválasztott régióban engedélyezett Bedrock modellazonosítókat.", "bedrockModelPlaceholder": "antropikus.claude-szonett-4-6", "addProviderSessionCookieTitle": "{provider} munkamenet-cookie hozzáadása", - "openWebProviderSite": "Open {host}", + "openWebProviderSite": "{host} megnyitása", "addProviderWebTokenTitle": "{provider} web token hozzáadása", "addProviderConnectionTitle": "{provider} kapcsolat hozzáadása", "webTokenCredentialLabel": "Webes munkamenet token", @@ -6342,45 +6345,45 @@ "webSessionGuideStep3": "Másolja ki a szükséges hitelesítő adatokat a szolgáltató saját domainjéből. Cookie-k esetén csak a Cookie fejléc értékét másolja, és hagyja ki a Cookie:-t.", "webSessionGuideStep3Manual": "Manuális útvonal: nyissa meg a böngésző fejlesztői eszközeit (F12 → Hálózat), frissítse az oldalt, nyisson meg egy hitelesített kérést, és másolja a Cookie fejléc értékét a Kérés Fejlécekből — hagyja ki a Cookie: előtagot.", "webSessionGuideStep4": "Illessze be ide, és ellenőrizze a kapcsolatot. Ha nem működik, jelentkezzen be újra, és cserélje ki egy új értékre.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har-fájl importálása", + "harImportButtonBusy": "Importálás…", + "harImportButtonHint": "Exportáld a DevTools Hálózat lapjáról legalább egy csevegőüzenet elküldése után.", + "harImportStatusValid": "Importálva — még ~{minutes} percig érvényes.", + "harImportStatusExpiringSoon": "Importálva — már csak ~{minutes} percig érvényes.", + "harImportStatusExpired": "Importálva, de ez a token már lejárt ({minutes} perce) — exportálj egy friss HAR-fájlt.", + "harImportStatusUnknownExpiry": "Importálva. A lejárati ideje nem olvasható.", + "harImportErrorNotJson": "Ez a fájl nem érvényes JSON — biztosan .har-exportfájl?", + "harImportErrorNoEntries": "Ez a HAR nem tartalmaz rögzített hálózati bejegyzéseket.", + "harImportErrorNoChathubUrl": "Ebben a HAR-ban nem található Copilot-csevegési kapcsolat. Exportálás előtt küldj legalább egy csevegőüzenetet az m365.cloud.microsoft oldalon.", + "harImportErrorUnparsableUrl": "A csevegési kapcsolat megtalálható, de az URL-je nem olvasható.", + "harImportErrorMissingFields": "A csevegési kapcsolat megtalálható, de hiányzik belőle a token.", + "harImportErrorReadFailed": "A fájl nem olvasható.", + "harImportErrorUnknown": "Nem sikerült hitelesítő adatot kinyerni ebből a HAR-fájlból.", "webSessionSecurityHint": "Kezelje ezt úgy, mint egy jelszót: addig hozzáférhet a bejelentkezett webfiókjához, amíg le nem jár vagy visszavonják.", "webNoAuthGuideTitle": "Nincs szükség hitelesítő adatra", "webNoAuthGuideBody": "Az {provider} nem igényel API-kulcsot vagy cookie-t. Mentse el a kapcsolatot az ingyenes webvégpont használatához.", "webSessionCredentialValidationFailed": "A munkamenet hitelesítő adatainak ellenőrzése sikertelen. Jelentkezzen be újra, másoljon egy új hitelesítő adatot, és próbálja újra.", "checkCookie": "Ellenőrizze a cookie-t", - "checkWebToken": "Check token", - "huggingchatLabel": "HuggingChat (Free)", - "huggingchatDesc": "Free LLM chat via huggingface.co/chat", + "checkWebToken": "Token ellenőrzése", + "huggingchatLabel": "HuggingChat (ingyenes)", + "huggingchatDesc": "Ingyenes LLM-csevegés a huggingface.co/chat oldalon", "poeWebLabel": "Poe Web", - "poeWebDesc": "Multi-model chat via poe.com", + "poeWebDesc": "Többmodelles csevegés a poe.com oldalon", "veniceWebLabel": "Venice Web", - "veniceWebDesc": "Privacy-focused AI chat", + "veniceWebDesc": "Adatvédelem-központú AI-csevegés", "v0VercelWebLabel": "v0 Vercel Web", - "v0VercelWebDesc": "AI code generation via v0.dev", + "v0VercelWebDesc": "AI-alapú kódgenerálás a v0.dev oldalon", "kimiWebLabel": "Kimi Web", - "kimiWebDesc": "Moonshot AI consumer chat via www.kimi.com (international, Connect-RPC API)", + "kimiWebDesc": "A Moonshot AI fogyasztói csevegőszolgáltatása a www.kimi.com oldalon (nemzetközi, Connect-RPC API)", "doubaoWebLabel": "Dola Web", - "doubaoWebDesc": "ByteDance AI chat via dola.com", - "overrideBaseUrlAdvanced": "Advanced: override base URL", - "overrideBaseUrlHint": "Advanced: point this built-in provider at a custom endpoint. Leave blank to use the default.", + "doubaoWebDesc": "A ByteDance AI-csevegőszolgáltatása a dola.com oldalon", + "overrideBaseUrlAdvanced": "Speciális: alap-URL felülírása", + "overrideBaseUrlHint": "Speciális: a beépített szolgáltató átirányítása egyéni végpontra. Az alapértelmezett használatához hagyja üresen.", "apiProtocolLabel": "API protokoll", "apiProtocolDefault": "OpenAI-kompatibilis (alapértelmezett)", "apiProtocolHint": "Néhány szolgáltató ugyanazokat a modelleket több protokollon is közzéteszi. Hagyja az alapértelmezettet, hacsak nem szükséges az alternatíva.", - "bulkAddFormatHintCloudflare": "One key per line. Format: name|accountId|apiKey (Cloudflare account ID + API token).", - "lmarenaWebCookieHint": "Open arena.ai, sign in, then copy the full Cookie header from a Network request. Include arena-auth-prod-v1.0 and arena-auth-prod-v1.1 (and further chunks if present), preferably with cf_clearance. Do not paste only the empty arena-auth-prod-v1 cookie. Optional: providerSpecificData.recaptchaV3Token if create-evaluation still returns 403.", + "bulkAddFormatHintCloudflare": "Soronként egy kulcs. Formátum: name|accountId|apiKey (Cloudflare-fiókazonosító + API-token).", + "lmarenaWebCookieHint": "Nyissa meg az arena.ai webhelyet, jelentkezzen be, majd másolja ki a teljes Cookie fejlécet egy hálózati kérésből. Tartalmazza az arena-auth-prod-v1.0 és arena-auth-prod-v1.1 értékeket (valamint a további részeket, ha vannak), lehetőleg a cf_clearance értékkel együtt. Ne csak az üres arena-auth-prod-v1 cookie-t illessze be. Opcionális: providerSpecificData.recaptchaV3Token, ha a create-evaluation továbbra is 403-as hibát ad vissza.", "kimiOfficialSupporterBadge": "Alapító barát", "kimiOfficialSupporterTooltip": "A Kimi (Moonshot AI) az OmniRoute alapító nyílt forráskódú barátja", "cheaperInferenceSupporterBadge": "Nyílt forráskódú barát", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "A Codex szolgáltatásmód frissítve lett", "codexServiceTierActive": "A {tier} szintű Codex szolgáltatás aktív", "codexTierFastLabel": "Gyors", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Rugalmas", "commandCodeApplyFailed": "A Parancskód-azonosító alkalmazása nem sikerült", "commandCodeApplyingApproval": "Böngésző jóváhagyva, alkalmazás…", "commandCodeApplyingKey": "Böngésző által jóváhagyott kulcs alkalmazása…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "A parancs kódja lejárt", "commandCodeConnected": "A Parancs Kód csatlakoztatva", "commandCodeConnectionAdded": "A parancs kód kapcsolódva lett.", + "clearConnectionCooldown": "Várakozási idő törlése", + "clearConnectionCooldownInProgress": "Törlés…", + "clearConnectionCooldownTitle": "A várakozási idő azonnali törlése — akkor használja, ha a kvóta a külső szolgáltatónál már frissült", "commandCodeLinkExpired": "A parancs kód hivatkozás lejárt", "commandCodeOpeningStudio": "A Parancs Kód Stúdió megnyitása…", "commandCodePopupBlocked": "A felugró ablakok blokkolva vannak. Kérjük, engedélyezze a felugró ablakokat, és próbálja meg újra a Command Code Connectet.", "commandCodeStartFailed": "Nem sikerült elindítani a Command Code auth-ot", "connectionDeleted": "Kapcsolat törölve", "connectionFallback": "kapcsolat", + "connectionCooldownCleared": "A várakozási idő törölve — a kapcsolat újra bekerült az útválasztásba", "coolingConnectionsDescription": "Ezek a kapcsolatok az utolsó kérés után hűlnek. Az OmniRoute kihagyja őket, amíg az időzítő le nem jár — nincs szükség kézi tiltásra.", "coolingConnectionsTitle": "Jelenleg hűtés ({count})", + "failedClearConnectionCooldown": "Nem sikerült törölni a várakozási időt", "failedDeleteAlias": "Nem sikerült törölni az alias-t", "failedDeleteConnection": "A kapcsolat törlése nem sikerült", "failedDistributeProxies": "A proxik terjesztése nem sikerült.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Mentett modell végpont beállításai", "searchByModelAria": "Keresés modell szerint", "selectSupportedEndpoint": "Válasszon ki legalább egy támogatott végpontot", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Tesztkeretrendszer / CLI" }, "settings": { "title": "Beállítások elemre", @@ -6485,28 +6488,28 @@ "routing": "Útválasztás", "cache": "Gyorsítótár", "resilience": "Rugalmasság", - "description": "Description", - "enable": "Enable", - "disable": "Disable", - "update": "Update", + "description": "Leírás", + "enable": "Engedélyezés", + "disable": "Letiltás", + "update": "Frissítés", "routingSettingsIntro": "Szabályozza, hogy a kérelmeket hogyan irányítsák, alakítsák át és küldjék el az AI-szolgáltatóknak.", - "routingOpDropParagraphContainsLabel": "Drop paragraph (contains)", - "routingOpDropParagraphStartsWithLabel": "Drop paragraph (starts with)", - "routingOpReplaceTextLabel": "Replace text", - "routingOpReplaceRegexLabel": "Replace regex", - "routingOpDropBlockContainsLabel": "Drop block (contains)", - "routingOpPrependSystemBlockLabel": "Prepend system block", - "routingOpAppendSystemBlockLabel": "Append system block", - "routingOpInjectBillingHeaderLabel": "Inject billing header", - "routingOpObfuscateWordsLabel": "Obfuscate words (ZWJ)", - "routingOpDropParagraphContainsDesc": "Removes any paragraph (text block split on blank lines) inside the system prompt whose text contains ANY of the listed substrings. Use to strip third-party client fingerprints like 'github.com/anomalyco/opencode' or 'docs.openwebui.com' that Anthropic's classifier flags.", - "routingOpDropParagraphStartsWithDesc": "Removes any paragraph that STARTS WITH one of the listed prefixes. Use for identity lines like 'You are OpenCode' or 'You are Open WebUI' that announce the calling client.", - "routingOpReplaceTextDesc": "Replaces a literal substring with another literal substring. Use for known trigger phrases — e.g. rewrite 'Here is some useful information about the environment you are running in:' to 'Environment context you are running in:' (an empirically-validated trigger phrase).", - "routingOpReplaceRegexDesc": "Replaces text matching a regular expression. Use when you need patterns (character classes, optional whitespace, anchors) instead of literal substrings. A malformed pattern is caught at runtime when the op runs.", - "routingOpDropBlockContainsDesc": "Removes ENTIRE system blocks (not just paragraphs) whose text contains any of the listed substrings. Use when a whole block is fingerprint-bearing and you want it gone — e.g. an injected MCP-server description.", - "routingOpPrependSystemBlockDesc": "Inserts a new text block at the FRONT of the system array. Use to add the SDK identity 'You are a Claude agent, built on Anthropic's Claude Agent SDK.' that Anthropic's classifier expects.", - "routingOpAppendSystemBlockDesc": "Inserts a new text block at the END of the system array. Use for cosmetic additions that don't need to be at position [0].", - "routingOpInjectBillingHeaderDesc": "Prepends the special 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' text block that Anthropic's classifier validates. Required for CC bridge relay endpoints; for the native claude provider OmniRoute already injects its own billing line so this op is usually redundant there.", + "routingOpDropParagraphContainsLabel": "Bekezdés eltávolítása (tartalmazza)", + "routingOpDropParagraphStartsWithLabel": "Bekezdés eltávolítása (ezzel kezdődik)", + "routingOpReplaceTextLabel": "Szöveg cseréje", + "routingOpReplaceRegexLabel": "Reguláris kifejezés cseréje", + "routingOpDropBlockContainsLabel": "Blokk eltávolítása (tartalmazza)", + "routingOpPrependSystemBlockLabel": "Rendszerblokk beszúrása az elejére", + "routingOpAppendSystemBlockLabel": "Rendszerblokk hozzáfűzése", + "routingOpInjectBillingHeaderLabel": "Számlázási fejléc beszúrása", + "routingOpObfuscateWordsLabel": "Szavak elrejtése (ZWJ)", + "routingOpDropParagraphContainsDesc": "Eltávolít minden olyan bekezdést (az üres sorok mentén felosztott szövegblokkot) a rendszerüzenetből, amelynek szövege a felsorolt részkarakterláncok BÁRMELYIKÉT tartalmazza. Olyan külső kliens-ujjlenyomatok eltávolítására használható, mint a 'github.com/anomalyco/opencode' vagy a 'docs.openwebui.com', amelyeket az Anthropic osztályozója megjelöl.", + "routingOpDropParagraphStartsWithDesc": "Eltávolít minden olyan bekezdést, amely a felsorolt előtagok egyikével KEZDŐDIK. Olyan, a hívó klienst bejelentő identitássorokhoz használható, mint a 'You are OpenCode' vagy a 'You are Open WebUI'.", + "routingOpReplaceTextDesc": "Egy literális részkarakterláncot egy másik literális részkarakterláncra cserél. Ismert aktiváló kifejezésekhez használható — például a 'Here is some useful information about the environment you are running in:' átírására erre: 'Environment context you are running in:' (empirikusan ellenőrzött aktiváló kifejezés).", + "routingOpReplaceRegexDesc": "Reguláris kifejezésre illeszkedő szöveget cserél le. Akkor használja, ha literális részkarakterláncok helyett mintákra (karakterosztályokra, opcionális szóközökre, horgonyokra) van szüksége. A hibás mintát a rendszer futásidőben észleli a művelet végrehajtásakor.", + "routingOpDropBlockContainsDesc": "Eltávolítja a TELJES rendszerblokkokat (nem csak a bekezdéseket), ha azok szövege a felsorolt részkarakterláncok bármelyikét tartalmazza. Akkor használja, ha egy teljes blokk kliens-ujjlenyomatot tartalmaz, és teljesen el szeretné távolítani — például egy beszúrt MCP-kiszolgáló-leírást.", + "routingOpPrependSystemBlockDesc": "Új szövegblokkot szúr be a rendszertömb ELEJÉRE. Az Anthropic osztályozója által elvárt 'You are a Claude agent, built on Anthropic's Claude Agent SDK.' SDK-identitás hozzáadására használható.", + "routingOpAppendSystemBlockDesc": "Új szövegblokkot szúr be a rendszertömb VÉGÉRE. Olyan formai kiegészítésekhez használható, amelyeknek nem kell a [0] pozícióban lenniük.", + "routingOpInjectBillingHeaderDesc": "A speciális 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' szövegblokkot szúrja az elejére, amelyet az Anthropic osztályozója ellenőriz. A CC-híd közvetítő végpontjaihoz kötelező; a natív claude szolgáltatónál az OmniRoute már beszúrja a saját számlázási sorát, ezért ez a művelet ott általában felesleges.", "routingOpObfuscateWordsDesc": "Egy Zero-Width-Joiner (nulla szélességű összekötő) karaktert szúr be minden felsorolt szó első betűje után, így az 'opencode' 'o‍pencode' lesz. Az emberek számára ugyanúgy olvasható, de megkerüli az osztályozó szóegyezéseit. Célba veszi a rendszerblokkokat, a felhasználói/asszisztens üzeneteket és az eszközleírásokat.", "routingNeedlesHint": "Részkarakterláncok listája. Egy bekezdés akkor egyezik, ha BÁRMELYIKET tartalmazza ezek közül. Soronként egyet adjon hozzá az 'Add entry' segítségével.", "routingPrefixesHint": "Karakterláncok listája. Egy bekezdés akkor egyezik, ha bármelyikkel kezdődik ezek közül (az egyezés vizsgálata előtt a kezdő szóközök le lesznek vágva).", @@ -6527,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "bekezdések elvetése, amelyek tartalmazzák: {items}", "routingSummarizeDropParagraphStartsWith": "bekezdések elvetése, amelyek ezzel kezdődnek: {items}", "routingSummarizeReplaceText": "helyettesítés: \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "reguláris kifejezés /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "blokkok elvetése, amelyek tartalmazzák: {items}", "routingSummarizePrependSystemBlock": "blokk eléillesztése: \"{text}\"", "routingSummarizeAppendSystemBlock": "blokk hozzáfűzése: \"{text}\"", @@ -6554,29 +6557,29 @@ "systemPrompt": "Rendszer Prompt", "thinkingBudget": "Gondolkodó költségvetés", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP-proxy", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Proxyszakaszok", + "requestBodyLimitTitle": "Kéréstörzs méretkorlátja", + "requestBodyLimitDescription": "A kéréstörzs feldolgozása előtt elfogadott API-adatmennyiség legnagyobb mérete. A dedikált feltöltési útvonalak legalább a beépített 100 MB-os korlátjukat megtartják.", + "requestBodyLimitInputLabel": "Kéréstörzs méretkorlátja MB-ban", + "requestBodyLimitEmptyError": "Adjon meg egy korlátot MB-ban", + "requestBodyLimitWholeNumberError": "Használjon egész számot", + "requestBodyLimitMinimumError": "A minimum {min} MB", + "requestBodyLimitMaximumError": "A maximum {max} MB", + "requestBodyLimitLoadFailed": "Nem sikerült betölteni a kérelmek korlátozásának beállításait", + "requestBodyLimitSaveSuccess": "A kérelemtörzs méretkorlátja mentve", + "requestBodyLimitSaveFailed": "Nem sikerült menteni a kérelemtörzs méretkorlátját", + "requestBodyLimitSaving": "Mentés...", + "requestBodyLimitSave": "Mentés", + "requestBodyLimitCurrent": "Jelenlegi: {value}", "cacheConfigLoadFailed": "Nem sikerült betölteni a gyorsítótár beállításait", "cacheConfigSaveSuccess": "A gyorsítótár beállításai mentve", "cacheConfigSaveFailed": "A gyorsítótár beállításainak mentése nem sikerült", "modelCatalogTtlWholeNumberError": "Használj egész számot", "modelCatalogTtlMinimumError": "Minimum {min} ms", "modelCatalogTtlMaximumError": "Maximum {max} ms", - "modelCatalogCacheTtl": "Model Catalog Cache TTL", + "modelCatalogCacheTtl": "Modellkatalógus gyorsítótárának TTL-je", "modelCatalogCacheTtlDescription": "Meddig vannak gyorsítótárazva a modell katalógus válaszai a frissítés előtt", "modelCatalogCacheTtlLabel": "Model katalog gyorsítótár TTL milliszekundumban", "modelCatalogCacheTtlSaving": "Mentés...", @@ -6593,59 +6596,59 @@ "enablePassword": "Jelszó engedélyezése", "darkMode": "Sötét mód", "lightMode": "Fény mód", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Memória", + "memoryDesc": "Munkameneteken átívelő, tartós beszélgetési memória", + "memoryEnabled": "Memória engedélyezése", + "memoryEnabledDesc": "Ha engedélyezve van, az OmniRoute beilleszti a releváns korábbi kontextust.", "memoryTokenCostWarning": "Figyelem: bekapcsolt memória mellett az OmniRoute legfeljebb {tokens} tokennyi lekérdezett kontextust szúr be minden csevegési kérésbe — ez növeli a tokenhasználatot és a költségeket. A beszúrás kihagyásához egy adott kérésnél küldje el az \"x-omniroute-no-memory: true\" fejlécet.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Tokenek maximális száma", + "retentionDays": "Megőrzés", + "recent": "Legutóbbi", + "recentDesc": "Időrendi ablak", + "semantic": "Szemantikus", + "semanticDesc": "Vektoros keresés", + "hybrid": "Hibrid", + "hybridDesc": "Legutóbbi + szemantikus", + "skillsTitle": "Készségek", + "skillsDesc": "Eszközök modellekhez", + "skillsEnabled": "Készségek engedélyezése", + "skillsEnabledDesc": "Lehetővé teszi az ügynökök számára függvények aktiválását.", + "skillsComingSoon": "Hamarosan érkezik a készségek piactere.", + "memorySkillsTitle": "Memória és készségek", + "memorySkillsDesc": "Tartós kontextus és képességek", + "modelsDevTitle": "Modelladatbázis", + "modelsDevDesc": "Árak, képességek és specifikációk automatikus szinkronizálása a models.dev webhelyről", + "modelsDevEnabled": "A models.dev szinkronizálásának engedélyezése", + "modelsDevEnabledDesc": "Modellárak, képességek és specifikációk lekérése a nyílt forráskódú models.dev adatbázisból", + "modelsDevInterval": "Szinkronizálási időköz", + "syncNow": "Szinkronizálás most", + "syncing": "Szinkronizálás...", + "lastSync": "Utolsó szinkronizálás", + "never": "Soha", "justNow": "csak most", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Szinkronizálási statisztikák", + "modelsDevStatsDesc": "A jelenlegi models.dev-adatok lefedettsége", "providers": "Szolgáltatók", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Árazással rendelkező modellek", + "capabilities": "Képességek", + "lastSyncCount": "Legutóbbi szinkronizálások száma", + "lastSyncFull": "Legutóbbi teljes szinkronizálás", + "modelsDevInfo": "Hogyan működik", + "modelsDevInfoDesc": "A models.dev egy nyílt forráskódú, mesterségesintelligencia-modellek specifikációit tartalmazó adatbázis, amelyet az SST/OpenCode csapata tart karban. Több mint 100 szolgáltató több mint 4 000 modelljének árazását, képességeit, kontextuskorlátait és modalitásait tartalmazza.", + "modelsDevInfoResolution": "Az árazás feloldási sorrendje (a legmagasabb prioritástól):", + "modelsDevInfoOrder": "Felhasználói felülbírálás → models.dev → LiteLLM → Beégetett alapértelmezés", "systemTheme": "Rendszer téma", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Hibakeresési mód engedélyezése", "logToolSourcesToggle": "Eszközforrások naplózása", "logToolSourcesDescription": "Diagnosztikai naplósor kibocsátása kérésenként, amely összefoglalja az eszközök számát és az MCP/hosted/kliens források szerinti lebontást.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Információk rögzítése a kezdőlapon", "homePinnedSectionsDesc": "Válassza ki, mely szakaszokat szeretné rögzíteni a Kezdőlap tetején.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Szolgáltatói kvótakorlátok", + "homeProviderQuotaLimitsDesc": "Rögzítse a szolgáltatói kvóta állapotát tartalmazó panelt (az Összes frissítése gombbal együtt) a kezdőlap tetején.", + "homeQuickStart": "Gyors kezdés", + "homeQuickStartDesc": "A Gyors kezdés panel megjelenítése a kezdőlapon.", + "homeProviderTopology": "Szolgáltatói topológia", + "homeProviderTopologyDesc": "A szolgáltatói topológia megjelenítése a kezdőlapon.", "accountEmailVisibility": "Fiók e-mail-címének láthatósága", "accountEmailVisibilityDesc": "A teljes fiók e-mail-címek megjelenítése a szolgáltatók, kombók, naplók, kvóták és a játszótér képernyőkön. Kapcsolja ki ezt a maszkoláshoz alapértelmezés szerint.", "comboConfigMode": "Kombó konfigurációs mód", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Frissítési időköz", "providerQuotaAutoRefreshIntervalDesc": "Milyen gyakran frissüljön a kvótanézet, másodpercben megadva.", "seconds": "másodperc", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Oldalsávelemek megjelenítése", "enableCache": "Gyorsítótár engedélyezése", "cacheTTL": "Gyorsítótár TTL", "maxCacheSize": "Max gyorsítótár mérete", "clearCache": "Törölje a gyorsítótárat", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "A gyorsítótár sikeresen törölve", + "clearCacheFailed": "Nem sikerült törölni a gyorsítótárat", "cacheHits": "Gyorsítótár találatai", "cacheMisses": "Gyorsítótár hiányzik", - "hitRate": "Hit Rate", + "hitRate": "Találati arány", "cacheEntries": "Gyorsítótár bejegyzései", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "cacheSettings": "Gyorsítótár-beállítások", + "semanticCache": "Szemantikus gyorsítótár", + "maxEntries": "Bejegyzések maximális száma", + "ttlMinutes": "TTL (perc)", + "promptCache": "Promptgyorsítótár", + "strategy": "Stratégia", + "preserveClientCache": "Kliensoldali gyorsítótár megőrzése", + "enabled": "Engedélyezve", "loading": "Loading...", "saving": "Mentés...", - "save": "Save", + "save": "Mentés", "circuitBreaker": "Áramköri megszakító", "retryPolicy": "Irányelv újrapróbálkozása", "maxRetries": "Max újrapróbálkozás", @@ -6690,28 +6693,28 @@ "timeoutMs": "Időtúllépés (ms)", "enableSystemPrompt": "Rendszerprompt engedélyezése", "systemPromptText": "Rendszerkérő szöveg", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Letiltott fiókok automatikus deaktiválása", + "autoDisableDescription": "Véglegesen deaktiváltnak jelöli a szolgáltatói kapcsolatokat, ha azok bizonyos végleges tiltási jelzéseket adnak vissza (pl. HTTP 403 „verify your account”). Ez eltávolítja őket a kombinált rotációból.", + "autoDisableThreshold": "Tiltási küszöbérték", + "autoDisableThresholdDesc": "A végleges deaktiváláshoz szükséges egymást követő tiltási jelzések száma.", + "autoDisableBannedScope": "Automatikus deaktiválás alkalmazása erre:", + "autoDisableBannedScopeDesc": "A felsőbb szintű szolgáltató zárolhatja a bejelentkezési helyeket (fizetős előfizetéseket és ingyenes fiókokat), ha az OmniRoute egy tiltás után tovább próbálkozik. A fizetős, előre feltöltött API-kulcsoknál nem áll fenn ez a kockázat — hagyja őket a készletben, hogy a fill-first a következő kulcsot használhassa.", + "autoDisableBannedScopeAll": "Minden kapcsolat", + "autoDisableBannedScopeAllDesc": "Minden olyan kapcsolat deaktiválása, amely végleges tiltási jelzést ad vissza, beleértve az előre feltöltött API-kulcsokat is.", + "autoDisableBannedScopeSubscription": "Csak bejelentkezési/előfizetési fiókok", + "autoDisableBannedScopeSubscriptionDesc": "Az OAuth-, cookie-, munkamenet- és webes bejelentkezési helyek deaktiválása (fizetősek vagy ingyenesek). Az előre feltöltött API-kulcsok aktívak maradnak, így az útválasztás átállhat rájuk.", "customBannedSignals": "Tiltott kulcsszavak", "customBannedSignalsDesc": "További kulcsszavak, amelyek végleges fióktiltás észlelését váltják ki. A beépített kulcsszavak mindig érvényesek.", "customBannedSignalsPlaceholder": "pl. api key revoked", "noCustomBannedSignals": "Nincsenek egyéni kulcsszavak. Csak a beépített kulcsszavak aktívak.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Ellenálló képességi struktúra", "resilienceStructureDesc": "Ez az oldal csak a viselkedést konfigurálja. Az élő megszakítás állapota az Egészség oldalon látható. A kombó-specifikus újrapróbálkozás és a körbefutó nyílásvezérlés a kombinált beállításokon marad.", "enableThinking": "Gondolkodás engedélyezése", "maxThinkingTokens": "Max gondolkodási jelzők", "enableProxy": "Proxy engedélyezése", "perKeyProxyEnabled": "Kulcsonkénti proxy-hozzárendelés engedélyezése", "perKeyProxyEnabledDesc": "Ha engedélyezve van, minden szolgáltatói kapcsolat saját proxy-hozzárendelést használhat", - "proxyUrl": "Proxy URL", + "proxyUrl": "Proxy URL-címe", "pricingRates": "Árképzési tarifák formátuma", "currentPricing": "Jelenlegi árképzés áttekintése", "loadingPricing": "Áradatok betöltése...", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Tailscale csatornavezérlők megjelenítése a Végpont oldalon.", "showNgrokTunnel": "ngrok Alagút", "showNgrokTunnelDesc": "Az ngrok alagútvezérlők megjelenítése a Végpont oldalon.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Oldalsáv elemeinek elrejtése", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Összes", + "presetAllDesc": "Minden megjelenítése", + "presetEssentials": "Alapvető", + "presetEssentialsDesc": "Kezdő útvonal – a speciális eszközök továbbra is kereshetők", + "presetMinimal": "Minimális", + "presetMinimalDesc": "Csak az alapvető oldalak", + "presetDeveloper": "Fejlesztő", + "presetDeveloperDesc": "Fejlesztői és proxyeszközök", + "presetAdmin": "Adminisztrátor", + "presetAdminDesc": "Monitorozás és auditálás", + "settingsSidebarTitle": "Oldalsáv testreszabása", + "settingsSidebarDesc": "Válassza ki, mely elemek jelenjenek meg az oldalsávon. Az Alapvető beállítás mellett a speciális eszközök továbbra is kereshetők.", "hideHealthLogs": "Állapotellenőrzési naplók elrejtése", "hideHealthLogsDesc": "Ha BE van kapcsolva, tiltsa le a [HealthCheck] üzeneteket a kiszolgálókonzolon", "themeAccent": "Téma színe", @@ -6780,19 +6783,19 @@ "themeOrange": "Narancs", "themeCyan": "Cián", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Az alkalmazás nevének és logójának testreszabása", + "appName": "Alkalmazás neve", + "appNameDesc": "Az oldalsávon és a böngészőlapon megjelenő név", + "customLogo": "Egyéni logó URL-címe", + "customLogoDesc": "Az egyéni logókép URL-címe", + "uploadLogo": "Logó feltöltése", + "resetLogo": "Alapértelmezés visszaállítása", + "logoPreview": "Előnézet", + "customFavicon": "Böngészőfavicon", + "customFaviconDesc": "Az egyéni favicon URL-címe (a böngészőlapon jelenik meg)", + "uploadFavicon": "Favicon feltöltése", + "resetFavicon": "Favicon visszaállítása", + "faviconPreview": "Favicon előnézete", "logoFileTooLarge": "A logófájlnak 500 KB-nál kisebbnek kell lennie", "faviconFileTooLarge": "A faviconfájlnak 50 KB-nál kisebbnek kell lennie", "invalidLogoFileType": "Érvénytelen fájltípus. Kérjük, töltsön fel PNG, JPG, SVG, GIF vagy WebP formátumot.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Frissítési Intervallum", "ruleModeDescription": "Szabály Mód Leírás" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "Tömeges állapotellenőrzés", + "bulkHealthcheckDesc": "Az összes beállított proxy tesztelése egy cél-URL-lel annak megállapításához, hogy melyek működnek.", + "healthcheckTesting": "Tesztelés...", + "healthcheckAll": "Összes állapotának ellenőrzése", + "healthcheckFailed": "Az állapotellenőrzés futtatása sikertelen", + "healthcheckTestingAll": "Az összes proxy párhuzamos tesztelése...", + "healthcheckTotal": "Összesen", + "healthcheckWorking": "Működő", + "healthcheckFailedLabel": "Sikertelen", + "healthcheckStatus": "Állapot", + "healthcheckProxyUrl": "Proxy URL-címe", + "healthcheckLatency": "Késleltetés", "proxyDocumentationScopeTitle": "Proxy hatókör feloldása", "proxyDocumentationScopeDescBefore": "Az OmniRoute a kimenő proxyt prioritási sorrendben oldja fel:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "kombináció → fiók → szolgáltató → globális", "proxyDocumentationScopeDescAfter": ". A legspecifikusabb hatókör nyer.", "proxyDocumentationAddTitle": "Egyedi proxy hozzáadása", "proxyDocumentationAddDescBefore": "Lépjen a", @@ -6945,7 +6948,7 @@ "proxyFreePoolAddSelected": "Kiválasztottak hozzáadása a készlethez", "proxyFreePoolAddVisible": "Összes látható hozzáadása a készlethez", "proxyFreePoolSource": "Forrás", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Gazdagép:Port", "proxyFreePoolType": "Típus", "proxyFreePoolCountry": "Ország", "proxyFreePoolQuality": "Minőség", @@ -7018,7 +7021,7 @@ "errorOccurred": "Hiba történt", "updatePassword": "Jelszó frissítése", "setPassword": "Jelszó beállítása", - "apiEndpointProtection": "API Endpoint Protection", + "apiEndpointProtection": "API-végpont védelme", "requireAuthModels": "API-kulcs szükséges a /models-hoz", "requireAuthModelsDesc": "Bekapcsolt állapotban a /v1/models végpont 404-et ad vissza a nem hitelesített kérésekhez. Megakadályozza, hogy illetéktelen felhasználók felfedezzék a modellt.", "authModelHeading": "Aktív engedélyezési modell", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} szolgáltató(k) blokkolva a /models-ből", "blockProviderTitle": "{provider} letiltása", "unblockProviderTitle": "{provider} blokkolásának feloldása", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "CLI-ujjlenyomat egyeztetése", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} szolgáltatónál aktív a CLI-ujjlenyomat", + "enableFingerprintTitle": "Ujjlenyomat engedélyezése ehhez: {provider}", + "disableFingerprintTitle": "Ujjlenyomat letiltása ehhez: {provider}", "systemTransforms": "Rendszerblokk Transform Pipeline", "systemTransformsDesc": "A továbbítás előtt a kérelem törzsére alkalmazott átalakítások szolgáltatónkénti megrendelése. Bármilyen szolgáltatói azonosítót támogat.", "systemTransformsAddProvider": "Szolgáltató hozzáadása", @@ -7065,17 +7068,17 @@ "leastUsedDesc": "Válassza ki a legutóbb használt fiókot", "costOpt": "Költségopt", "costOptDesc": "A legolcsóbb elérhető fiók előnyben részesítése", - "resetAware": "Reset-Aware RR", + "resetAware": "Visszaállítás-érzékeny RR", "resetAwareDesc": "Előnyben részesítse az egészséges fennmaradó kvótával és közelebbi visszaállításokkal rendelkező fiókokat", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kvótaalapú súlyozás", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Szigorúan véletlenszerű", + "strictRandomDesc": "Keveréses pakli — minden fiókot egyszer használ, mielőtt újrakeverné", "stickyLimit": "Ragadós határ", "stickyLimitDesc": "Hívások fiókonként váltás előtt", "routingStrategyTitle": "Útvonalválasztási stratégia", "routingStrategySubtitle": "9router egyezés: fiók round-robin, rögzített korlátok és kombó rotáció", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Ciklikus elosztás", "accountRoundRobinDesc": "Fiókok váltogatása a terhelés elosztásához", "comboRoundRobin": "Kombó Round Robin", "comboRoundRobinDesc": "Kombó célpontok váltogatása ahelyett, hogy mindig az elsővel kezdene", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Globális fiókstratégia felülírása ehhez a szolgáltatóhoz (9router paritás).", "providerRoutingStrategy": "Fiókstratégia", "providerRoutingInheritGlobal": "Globális alapértelmezés öröklése", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Kvóta-előellenőrzési küszöb", + "quotaPreflightSubtitle": "A kvótájukat kimerítő fiókok kihagyása, mielőtt a kérés továbbításra kerülne", + "quotaPreflightEnable": "Kvóta-előellenőrzés engedélyezése", + "quotaPreflightEnableDesc": "Minden kérés előtt ellenőrizze a fiók fennmaradó kvótáját (5 órás / heti / havi időablakok). A küszöböt elérő vagy az alá csökkenő fiókok háttérhívás nélkül kimaradnak. A Szolgáltatói kvóta oldalon időablakonként beállított küszöbértékek mindig felülírják az itt megadott alapértelmezést.", + "quotaPreflightCutoff": "Globális küszöb (min. fennmaradó %)", + "quotaPreflightCutoffDesc": "Ne használja tovább a fiókot, ha a fennmaradó kvótája erre a százalékra vagy ez alá csökken, minden olyan időablakban, amelyhez nincs saját küszöbérték beállítva. Megfelel a Szolgáltatói kvóta oldalon látható fennmaradó százalékot jelző sávoknak.", + "quotaPreflightWindowsHint": "Azokra az időablakokra, amelyekhez saját időablak- vagy szolgáltatóspecifikus küszöbérték tartozik (a Szolgáltatói kvóta oldal Küszöbérték párbeszédpaneljén beállítva), ez az alapértelmezés nincs hatással.", + "quotaPreflightLoadFailed": "Nem sikerült betölteni a kvóta-előellenőrzési beállításokat.", "modelAliases": "Modell álnevek", "modelAliasesTitle": "Modell aliasok", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Modellnevek átnevezése pontos egyezésekkel vagy helyettesítő karakteres mintákkal.", "addCustomAlias": "Egyéni Alias Hozzáadása", "deprecatedModelId": "Elavult modell ID", "newModelId": "Új modell ID", @@ -7126,14 +7129,14 @@ "authenticated": "Hitelesítve", "guest": "Vendég", "loginTime": "Bejelentkezési idő", - "sessionAge": "Session Age", + "sessionAge": "Munkamenet kora", "browser": "Böngésző", "clearLocalData": "Helyi adatok törlése", "logout": "Kijelentkezés", "clearLocalDataConfirm": "Törli az összes helyi adatot? Ezzel visszaállítja beállításait.", "unknown": "Ismeretlen", "systemActor": "rendszer", - "ipAccessControl": "IP Access Control", + "ipAccessControl": "IP-alapú hozzáférés-vezérlés", "ipAccessControlDesc": "Adott IP-címek letiltása vagy engedélyezése", "ipModeDisabled": "Letiltva", "ipModeBlacklist": "Feketelista", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Kombinált stratégia", "priority": "Prioritás", "weighted": "Súlyozott", - "contextRelay": "Context Relay", + "contextRelay": "Kontextustovábbítás", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Max újrapróbálkozás", "retryDelayLabel": "Újrapróbálkozás késleltetése (ms)", @@ -7214,20 +7217,20 @@ "concurrencyPerModel": "Egyidejűség / Modell", "queueTimeout": "Sor időtúllépése (ms)", "queueDepth": "Várakozási sor mélysége", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Átadási küszöb", + "contextRelayMaxMessages": "Összegzéshez használható üzenetek maximális száma", + "contextRelaySummaryModel": "Összegző modell", + "contextRelayProviderNote": "A Kontextustovábbítás jelenleg Codex-fiókokhoz hoz létre átadásokat, és ezeket az értékeket használja globális alapértelmezésként az új vagy még nem konfigurált kombinációkhoz.", "providerProfiles": "Szolgáltatói profilok", "providerProfilesDesc": "Különálló rugalmassági beállítások az OAuth (munkamenet alapú) és az API-kulcs (mérős) szolgáltatók számára. Az alacsonyabb díjkorlátok miatt az OAuth-szolgáltatók szigorúbb küszöbértékeket alkalmaznak.", "oauthProviders": "OAuth-szolgáltatók", "apiKeyProviders": "API kulcs szolgáltatók", "transientCooldown": "Átmeneti lehűlés", - "rateLimitCooldown": "Rate Limit Cooldown", + "rateLimitCooldown": "Sebességkorlátozás várakozási ideje", "maxBackoffLevel": "Max visszalépési szint", "cbThreshold": "CB küszöb", "cbResetTime": "CB visszaállítási idő", - "rateLimiting": "Rate Limiting", + "rateLimiting": "Sebességkorlátozás", "rateLimitingDesc": "Az API-kulcs-szolgáltatók automatikusan korlátozva vannak a biztonságos alapértelmezett értékekkel. A korlátok a válaszfejlécekből tanulnak, és idővel alkalmazkodnak.", "defaultSafetyNet": "Alapértelmezett biztonsági háló", "rpm": "RPM", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}napja", "backupReasonManual": "kézikönyvet", "backupReasonPreRestore": "elő-visszaállítás", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# kapcsolat} other {# kapcsolat}}", "noChangesSinceBackup": "Nincs változás a legutóbbi biztonsági mentés óta", "backupFailed": "A biztonsági mentés nem sikerült", "restoreFailed": "A visszaállítás nem sikerült", @@ -7329,7 +7332,7 @@ "configured": "konfigurálva", "none": "Nincs", "modelOverrideValuePlaceholder": "Numerikus érték", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Angol vesszővel elválasztva, pl. low, medium, high", "addKeyValue": "Kulcs-érték hozzáadása", "noModelOverrides": "Nincsenek felülírások konfigurálva ehhez a modellhez.", "modelOverrideLoadFailed": "Nem sikerült betölteni a modellfelülírásokat", @@ -7378,25 +7381,25 @@ "editPricing": "Árak szerkesztése", "viewFullDetails": "Teljes részletek megtekintése", "themeCoral": "Korall", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Adaptív forgalomalapú útválasztás", + "adaptiveVolumeRoutingDesc": "A kapcsolatok számának dinamikus skálázása a hasznos adat mennyisége és az átviteli terhelés alapján.", + "lkgpToggleTitle": "Legutóbbi ismert működő szolgáltató (LKGP)", + "lkgpToggleDesc": "Ha engedélyezve van, az útválasztó megjegyzi, hogy melyik szolgáltató adott legutóbb sikeres választ, és a következő kéréseknél először azt próbálja meg.", "echoRequestedModelTitle": "A kért modellnév visszaküldése (echo) a válaszokban", "echoRequestedModelDesc": "Ha engedélyezve van, a válasz `model` mezője a kliens által kért álnevet vagy kombinált nevet adja vissza a felsőbb szintű (upstream) modellnév helyett. Megoldja a problémát az olyan szigorú klienseknél (pl. Claude Desktop), amelyek elutasítják azokat a válaszokat, amelyekben a modell nem egyezik a kéréssel.", "webSearchRouteTitle": "Webes keresés irányítása", "webSearchRouteDesc": "Ha egy kérés natív web_search eszközt tartalmaz, irányítsa a teljes kérést erre a modellre az alapértelmezett helyett — hasznos olyan szolgáltatóknál, amelyek nem implementálják az Anthropic web_search szerveres eszközét. Hagyja üresen a letiltáshoz.", "webSearchRoutePlaceholder": "Keressen vagy válasszon ki egy modellt…", "paidModelPatternWarning": "Ez a minta csak fizetős modellekre illeszkedik — engedélyezze a fizetős modelleket, vagy módosítsa a mintát.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP-gyorsítótár törlése", + "lkgpCacheCleared": "Az LKGP-gyorsítótár sikeresen törölve", + "lkgpCacheClearFailed": "Nem sikerült törölni az LKGP-gyorsítótárat", + "days": "Napok", + "lkgp": "LKGP mód", + "lkgpDesc": "Legutóbbi ismert jó szolgáltató (kiszámítható hibatűrés)", + "maintenance": "Karbantartás", + "purgeExpiredLogs": "Lejárt naplók törlése", + "purgeLogsFailed": "Nem sikerült törölni a naplókat", "logsDeleted": "{count, plural, =0 {Nincs törölt lejárt napló} one {Sikeresen törölve # lejárt napló} other {Sikeresen törölve # lejárt napló}}", "resetUsageData": "Használati adatok alaphelyzetbe állítása", "resetUsageDataDesc": "Válassza ki, mennyi időre visszamenőleg szeretné törölni a használati adatokat, a kérésnaplókat és az analitikai adatokat. A szolgáltatói konfigurációk, kapcsolatok, API-kulcsok, kombinációk és beállítások megmaradnak. Ez a művelet nem vonható vissza.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Nem sikerült a használati adatok alaphelyzetbe állítása", "reset": "Alaphelyzetbe állítás", "resetting": "Alaphelyzetbe állítás...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Kontextusra optimalizált", + "contextOptDesc": "A kontextusablak követelményei és a beszélgetés hossza alapján irányít", + "cacheOpt": "Gyorsítótárra optimalizált", + "cacheOptDesc": "Ugyanazt az újrafelhasználható promptelőtagot ugyanazon szolgáltatói fióknál tartja", + "priorityDesc": "Szekvenciális tartalékra váltás – először az 1. szolgáltatót próbálja, majd a 2.-at, és így tovább", + "weightedDesc": "Százalékos súlyozás alapján osztja el a forgalmat a szolgáltatók között", + "modelRoutingTitle": "Modellirányítási szabályok", + "modelRoutingDesc": "Modellek automatikus irányítása adott kombinációkhoz globminták használatával", + "addRule": "Szabály hozzáadása", + "routeToCombo": "Irányítás kombinációhoz", + "selectCombo": "Kombináció kiválasztása...", + "priorityHint": "A magasabb értékű kerül előbb ellenőrzésre. Specifikus mintákhoz használjon 10 vagy nagyobb értéket.", + "patternHint": "A * tetszőleges számú karaktert, a ? egyetlen karaktert helyettesít. Nem tesz különbséget kis- és nagybetűk között.", + "noRoutingRules": "Nincsenek konfigurálva irányítási szabályok. A kérések alapértelmezés szerint a globális kombinációt használják.", + "routingRuleHint": "Adjon hozzá például egy claude-opus* -> frontier-combo szabályt a kérések automatikus irányításához.", + "deleteRoutingRule": "Törli ezt a modellirányítási szabályt?", + "exactMatchMode": "Pontos egyezés", + "wildcardPatternMode": "Helyettesítő karakteres minta", + "exactMatchModeDesc": "Használjon pontos aliasokat az elavult vagy átnevezett modellazonosítókhoz.", + "wildcardPatternModeDesc": "Használjon * és ? karaktereket tartalmazó helyettesítő karakteres aliasokat, ha egy modellcsaládot egyetlen célhoz kell társítani.", + "noExactAliasesConfigured": "Nincsenek konfigurálva pontos egyezésű aliasok.", + "wildcardRulesTitle": "Helyettesítő karakteres szabályok", + "noWildcardAliasesConfigured": "Nincsenek konfigurálva helyettesítő karakteres aliasok.", + "overview": "Áttekintés", + "unknownError": "Ismeretlen hiba", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Engedélyezési lista", + "syncDisabled": "Szinkronizálás letiltva", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Szinkronizálás engedélyezve", + "blacklist": "Tiltólista", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Szinkronizált modellek", + "budget": "Költségkeret", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Nem sikerült visszaállítani az árakat: {reason}", - "tab": "Tab", + "tab": "Lap", "pricingSavedProvider": "Mentett ár: {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Nem sikerült menteni az árakat: {reason}", "pricingResetProvider": "A(z) {provider} árának visszaállítása", - "nextSync": "Next Sync", + "nextSync": "Következő szinkronizálás", "pricingSyncFailedWithReason": "Az árak szinkronizálása nem sikerült: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Szinkronizált árképzés törlése", + "compressionTitle": "Prompttömörítés", + "compressionDesc": "Csökkentse a tokenhasználatot a promptok tömörítésével, mielőtt elküldi őket a szolgáltatóknak", "compressionGuidanceFullGuideLink": "Teljes tömörítési útmutató", "compressionGuidanceShow": "Részletek", "compressionGuidanceHide": "Részletek elrejtése", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Az alkalmas csevegési előzmények átírása a kódok, URL-ek és a szándék megőrzése mellett.", "tokenSaverFineTunePrefix": "Finomhangolja az egyes motorokat ezen:", "tokenSaverFineTuneSuffix": "vagy kombinálja a motorokat kérésenként ezen:", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Tömörítési mód", + "compressionModeOff": "Kikapcsolva", + "compressionModeOffDesc": "Nincs alkalmazott tömörítés", + "compressionModeLite": "Enyhe", + "compressionModeLiteDesc": "Szóközök és üres sorok csökkentése", + "compressionModeStandard": "Normál (Caveman)", + "compressionModeStandardDesc": "Szabályalapú tömörítés több mint 30 mintával, a kódblokkok és URL-ek megőrzésével", + "compressionModeAggressive": "Agresszív", + "compressionModeAggressiveDesc": "Összegzés + eszközeredmények tömörítése + fokozatos elévülés a maximális megtakarításért", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Agresszív motor konfiguráció", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "A legutóbbi üzenetek száma az egyes öregedési szinteken (magasabb = jobban megőrzött)", "compressionToolStrategies": "Eszköz Eredmény Stratégiák", "compressionToolStrategiesDesc": "Váltsa át a tömörítési stratégiákat a különböző szerszámeredmény-típusokhoz", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Általános beállítások", + "compressionAutoTrigger": "Automatikus aktiválási küszöbérték", + "compressionCacheTTL": "Gyorsítótár TTL-je", + "compressionPreserveSystem": "Rendszerprompt megőrzése", "compressionPreserveSystemAlways": "Mindig", "compressionPreserveSystemWhenNoCache": "Ha nincs gyorsítótár", "compressionPreserveSystemNever": "Soha", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Mentve", "compressionExclusionsCount": "{count, plural, one {# kizárás} other {# kizárás}} konfigurálva", "compressionExclusionsEmpty": "Nincsenek kizárások konfigurálva — minden modell/végpont jogosult a tömörítésre (alapértelmezett viselkedés).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "A Caveman motor konfigurációja", + "compressionCavemanConfigDesc": "A szabályalapú tömörítőmotor finomhangolása", "compressionCavemanPanelHint": "A be-/kikapcsolása és a szintje a panelen állítható be:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Tömörítendő üzenetszerepkörök", + "compressionRoleUser": "Felhasználó", + "compressionRoleAssistant": "Asszisztens", + "compressionRoleSystem": "Rendszer", + "compressionMinLength": "Minimális üzenethossz", + "compressionSkipRules": "Kihagyandó tömörítési szabályok", + "compressionSkipRulesDesc": "Kattintson azokra a szabályokra, amelyeket ki szeretne hagyni a tömörítés során", + "compressionPreservePatterns": "Megőrzendő minták", + "compressionPreservePatternsDesc": "Soha nem tömörítendő regexminták (soronként egy)", + "compressionLogTitle": "Tömörítési napló", + "compressionLogEmpty": "Még nincsenek tömörített kérések. A tömörítési statisztikák itt jelennek meg, amikor a kérések feldolgozása engedélyezett tömörítéssel történik.", "minutes": "percben", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Parancsérzékeny eszközkimenet-szűrés", + "compressionModeCodexResponses": "A Responses eszközkimenete", + "compressionModeCodexResponsesDesc": "Konzervatív tömörítés a megfelelő shell-, javítási, keresési, build- és JSON-kimenetekhez", + "compressionModeStacked": "Halmozott", + "compressionModeStackedDesc": "RTK eszközkimenet-szűrés, majd Caveman üzenettömörítés", + "qdrantTitle": "Qdrant (vektormemória)", + "qdrantDesc": "Opcionális. A szemantikai emlékeket külső vektoradatbázisban indexeli a gyorsabb lekérés érdekében.", + "qdrantStatusActive": "Aktív", + "qdrantStatusError": "Hiba", + "qdrantStatusDisabled": "Letiltva", + "qdrantEnable": "Qdrant engedélyezése", + "qdrantEnableDesc": "Ha engedélyezve van, a szemantikus/hibrid stratégia használhatja a Qdrant szolgáltatást az emlékek lekérésére.", + "qdrantTesting": "Tesztelés...", + "qdrantTestConnection": "Kapcsolat tesztelése", + "qdrantSaved": "Konfiguráció mentve", + "qdrantSaveError": "Nem sikerült menteni a konfigurációt", + "qdrantHostHint": "Port nélkül. Példa: 127.0.0.1 vagy http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Qdrant alapértelmezett értéke: 6333", + "qdrantCollectionHint": "Az emlékpontok tárolási helye.", + "qdrantEmbeddingModel": "Beágyazási modell", + "qdrantHelpTitle": "Gyors beállítási súgó", + "qdrantHelpQuickTitle": "Gyors beállítás (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Gazdagép: Qdrant IP-címe/URL-je, port: 6333, gyűjtemény: omniroute_memory.", + "qdrantHelpStep2": "2. Az nvidia/llama-nemotron-embed-vl-1b-v2:free használatakor állítsa a gyűjtemény dimenzióját 2048-ra.", + "qdrantHelpStep3": "3. Modellmező: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Mentse, tesztelje a kapcsolatot, majd tesztelje a keresést.", + "qdrantEmbeddingQuickSelect": "Gyors kiválasztás a felismert modellek közül...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Formátum: provider/model. A szolgáltató hitelesítő adatát konfigurálni kell.", + "qdrantApiKeyPlaceholderKeep": "(hagyja üresen a jelenlegi kulcs megtartásához)", + "qdrantApiKeyPlaceholderOptional": "(hagyja üresen, ha nincs használatban)", + "qdrantSaveHint": "Tipp: szerkessze a gazdagépet/portot/gyűjteményt/modellt, majd kattintson a Mentés gombra. Az API-kulcs opcionális.", + "qdrantSearchTestTitle": "Keresés tesztelése", + "qdrantSearchTestDesc": "Beágyazást generál, és keresést végez a Qdrant szolgáltatásban.", + "qdrantSearchPlaceholder": "Példa: felhasználói beállítások, előzmények stb.", + "qdrantNoResults": "Nincsenek találatok (vagy a Qdrant nincs konfigurálva).", + "qdrantCleanupTitle": "Megőrzés és tisztítás", + "qdrantCleanupDesc": "Eltávolítja a lejárt és régi pontokat a következő alapján:", + "searching": "Keresés...", + "cleaning": "Tisztítás...", + "cleanNow": "Tisztítás most", "optional": "Nem kötelező", "current": "Aktuális", "remove": "Távolítsa el", @@ -7598,26 +7601,26 @@ "oneproxyTotalProxies": "Összes proxy", "oneproxyAvgQuality": "Átl. minőség", "resilienceScope": "Hatály:", - "resilienceTrigger": "Trigger:", + "resilienceTrigger": "Indítás:", "resilienceEffect": "Hatás:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Kérésvárólista és sebesség", + "resilienceAutoEnableApiKeyProviders": "Automatikus engedélyezés az API-kulcsot használó szolgáltatóknál", + "resilienceRequestsPerMinute": "Kérések percenként", + "resilienceMinTimeBetweenRequests": "Kérések közötti minimális idő", + "resilienceConcurrentRequests": "Egyidejű kérések", + "resilienceConnectionScopeConcurrentRequests": "Egyidejű kérések kapcsolatonként/kvótatartományonként", + "resilienceGlobalConcurrentRequests": "Globális egyidejű upstream kérések (0 = letiltva)", "resilienceMaxQueueWaitTime": "Maximális várakozási idő a sorban", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Alap várakozási idő", + "resilienceUseUpstreamRetryHints": "Felsőbb szolgáltatói újrapróbálkozási javaslatok használata", + "resilienceDefaultPerProvider": "Alapértelmezett (szolgáltatónként)", + "resilienceAlwaysOn": "Mindig bekapcsolva", + "resilienceAlwaysOff": "Mindig kikapcsolva", "routingRemoveEntry": "Bejegyzés eltávolítása", "routingNeedlesSubstrings": "Tűk (a megfelelő karakterláncok)", "routingCaseSensitive": "Kis- és nagybetű érzékeny", "routingPrefixes": "Előtagok", - "routingMatch": "Match", + "routingMatch": "Egyezés", "routingReplacement": "Csere", "routingReplaceAllOccurrences": "Cserélje ki az összes előfordulást", "routingPatternRegex": "Minta (regex)", @@ -7669,7 +7672,7 @@ "routingAntigravitySignatureDesc": "Szabályozza, hogy az OmniRoute csak a tárolt Gemini gondolat-aláírásokat használja-e újra, vagy elfogadja a kliens által biztosított, ellenőrzött aláírásokat az Antigravity-kompatibilis eszközhívási folyamatokban.", "routingAntigravitySignatureEnabledLabel": "Engedélyezve", "routingAntigravitySignatureEnabledDesc": "Jelenlegi viselkedés. Figyelmen kívül hagyja a kliens által biztosított aláírásokat, és továbbra is a tárolt OmniRoute folyamatot használja.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Megkerülés", "routingAntigravitySignatureBypassDesc": "Elfogadja a kliens által biztosított aláírásokat egy egyszerűsített ellenőrzés után, és érvénytelenség esetén visszatér a tárolt aláíráshoz.", "routingAntigravitySignatureBypassStrictLabel": "Szigorú bypass", "routingAntigravitySignatureBypassStrictDesc": "Teljes protobuf-ellenőrzést követel meg a kliens által biztosított aláírás elfogadása előtt.", @@ -7683,10 +7686,10 @@ "routingClientCacheControlAlwaysDesc": "Mindig továbbítsa a kliens által biztosított cache_control fejléceket a felsőbb szintű szolgáltatóknak változatlanul.", "routingClientCacheControlNeverLabel": "Soha ne őrizze meg", "routingClientCacheControlNeverDesc": "Mindig távolítsa el a kliens cache_control fejléceit, és hagyja, hogy az OmniRoute kezelje a gyorsítótárazást ott, ahol a natív szolgáltatói folyamatok ezt támogatják.", - "routingZeroConfigTitle": "Zero-Config Auto-Routing", + "routingZeroConfigTitle": "Konfigurációmentes automatikus útválasztás", "routingZeroConfigDesc": "Engedélyezze az automatikus szolgáltató-választást az auto/ előtag használatával. Ha engedélyezve van, az auto, auto/coding, auto/fast stb. címekre érkező kérések dinamikusan lesznek irányítva az összes csatlakoztatott szolgáltató között.", "routingDefaultAutoVariant": "Alapértelmezett automatikus változat", - "visionBridge": "Vision Bridge", + "visionBridge": "Vizuális híd", "visionBridgeDesc": "Automatikus kép-szöveg (vision-to-text) tartalék megoldás futtatása, mielőtt a képkéréseket csak szöveges modellekhez irányítaná.", "visionBridgeEnabledLabel": "Engedélyezve", "visionBridgeEnabledDesc": "A hívás előtti híd (bridge) ki-/bekapcsolása, amely a képrészeket a kinyert szöveggel helyettesíti.", @@ -7695,25 +7698,25 @@ "visionBridgeModel": "Hídmodell", "visionBridgeModelPlaceholder": "openai/gpt-4o-mini", "visionBridgeModelHint": "Bármely látástámogató (vision) OmniRoute modellazonosító használható itt.", - "visionBridgePrompt": "Bridge Prompt", + "visionBridgePrompt": "Hídprompt", "visionBridgePromptPlaceholder": "Írd le tömören ezt a képet.", "visionBridgePromptHint": "Elküldve a látásmodellnek (vision model), mielőtt a kinyert leírás vissza lenne illesztve az eredeti kérésbe.", "visionBridgeTimeoutMs": "Időtúllépés (ms)", "visionBridgeMaxImagesPerRequest": "Maximum képek kérésenként", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Visszalépési lépések maximális száma", + "resilienceProviderBreakerTitle": "Szolgáltatónkénti áramkör-megszakító", + "resilienceFailureThreshold": "Hibaküszöb", + "resilienceDegradationThreshold": "Teljesítménycsökkenési küszöb", "resilienceResetTimeout": "Időkorlát visszaállítása", "resilienceFailureThresholdLabel": "Meghibásodási küszöb", "resilienceResetTimeoutLabel": "Időkorlát visszaállítása", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Kapcsolati várakozási idő", "resilienceUseUpstreamRetryHintsLabel": "Használjon felfelé irányuló újrapróbálkozási tippeket", "resilienceUseUpstream429BreakerLabel": "Használjon felfelé irányuló 429 tippet (megszakító)", "resilienceMaxBackoffStepsLabel": "Max visszalépési lépések", "resilienceYes": "Igen", "resilienceNo": "Nem", - "resilienceDefault": "Default", + "resilienceDefault": "Alapértelmezett", "storageDatabaseBackupRetention": "Az adatbázis biztonsági másolatának megőrzése", "storageDatabaseBackups": "Adatbázis-mentések", "storageBackupRetentionDescription": "Az automatikus SQLite-mentések helye:", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "A korábbi JSON sikeresen importálva!", "jsonImportFailed": "Nem sikerült importálni a JSON-t", "jsonImportError": "Hiba történt a JSON importálása során", + "jsonImportAuthRequired": "Egy régi JSON-konfiguráció importálásához hitelesítés szükséges. Kérjük, jelentkezzen be, vagy előbb fejezze be a beállítást.", + "databaseSettingsAuthRequiredTitle": "Hitelesítés szükséges", + "databaseSettingsAuthRequiredBody": "Az adatbázis-beállítások és a JSON-importálás csak hitelesített rendszergazda számára érhetők el. Megtekintésükhöz és szerkesztésükhöz jelentkezzen be, vagy fejezze be a beállítást.", + "databaseSettingsAuthRequiredCta": "Bejelentkezés", "storagePurgeData": "Adatok törlése", "storagePurgeDataDesc": "Azonnal törli az összes rekordot a megőrzési ellenőrzések alkalmazása nélkül. Óvatosan használja.", "storageRetentionCleanup": "Megőrzési beállítások", @@ -7792,7 +7799,7 @@ "purgeDetailedLogs": "Részletes naplók törlése", "storageDatabaseSize": "Adatbázis mérete", "storagePageCount": "Oldalszám", - "storageFreelistCount": "Freelist Count", + "storageFreelistCount": "Szabadlista elemeinek száma", "storageLastVacuum": "Utolsó vákuum", "storageLastOptimization": "Utolsó optimalizálás", "storageIntegrityCheck": "Integritás ellenőrzése", @@ -7828,23 +7835,23 @@ "compressionDerivedMode": "mód: {mode}", "compressionAdaptiveOff": "Adaptív kontextuskeret: kikapcsolva (örökölt automatikus indítás)", "compressionAdaptiveTarget": "Adaptív ({mode}, szabályzat: {policy}) — cél ≈ {target, number} token ({contextLimit, number} tokenes ablakhoz)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Adaptív kontextuskeret", + "compressionAdaptiveModeOff": "Ki (korábbi automatikus aktiválás)", + "compressionAdaptiveModeFloor": "Minimum (mindig garantálja az illeszkedést)", + "compressionAdaptiveModeReplace": "Automatikus aktiválás lecserélése", + "compressionAdaptivePolicy": "Keretkezelési szabályzat", + "compressionAdaptivePolicyReserve": "Kimeneti keret fenntartása", + "compressionAdaptivePolicyPercentage": "Az ablak százaléka", + "compressionAdaptivePolicyAbsolute": "Abszolút tokenkeret", "compressionOutputStylesDescription": "Válaszformáló utasítások beillesztése a szolgáltató kimenetének átírása nélkül. Szabadon kombinálható.", "mcpAccessibilityDescription": "Hatókörbe foglalja az MCP-eszközök kimeneteit (külön tároló).", "compressionStylesTileSummary": "{tokens, number} token megtakarítva · {runs, plural, one {# stílusozott futtatás} other {# stílusozott futtatás}}", "compressionStylesTileEmpty": "Még nincsenek stílusozott futtatások.", "compressionLevel": { "minimal": "Minimális", - "standard": "Standard", + "standard": "Normál", "aggressive": "Agresszív", - "lite": "Lite", + "lite": "Egyszerűsített", "full": "Teljes", "ultra": "Ultra" }, @@ -7858,7 +7865,7 @@ "description": "Tartalom alapján címzett lekérési jelölők." }, "lite": { - "label": "Lite", + "label": "Egyszerűsített", "description": "Szóközök és formátum tisztítása." }, "rtk": { @@ -7866,11 +7873,11 @@ "description": "Parancskimenet-szűrés." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses-eszköz kimenete", + "description": "Konzervatív tömörítés a támogatott Responses-eszközök kimeneteihez." }, "headroom": { - "label": "Headroom", + "label": "Tartalék", "description": "Táblázatos JSON-tömörítés." }, "relevance": { @@ -7878,7 +7885,7 @@ "description": "Kivonatoló mondatpontozás a legutóbbi felhasználói lekérdezés alapján." }, "caveman": { - "label": "Caveman", + "label": "Ősember", "description": "Szabályalapú prózatömörítés." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "YAGNI-létra: a legkisebb működő változtatás, nem kért absztrakciók nélkül." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Lófarok (lusta senior fejlesztő)", + "description": "Lusta senior fejlesztői fegyelem: haladj felfelé a YAGNI-létrán, szüntesd meg a kiváltó okot, és készítsd el a legkisebb működő módosítást." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "ADHD-m van (cselekvésközpontú)", + "description": "Cselekvésközpontú kimenet: a következő teendő legyen elöl, a lépések legyenek számozva, egyetlen konkrét következő lépéssel, bevezető nélkül." }, "terse-cjk": { "label": "Tömör CJK (文言)", @@ -7924,13 +7931,21 @@ "resilienceEnableServerSideWait": "Szerveroldali várakozás engedélyezése", "resilienceMaximumRetries": "Maximum újrapróbálkozás", "resilienceMaximumWaitPerRetry": "Maximum várakozási idő újrapróbálkozásonként", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "SkillsMP piactér", "memorySkillsFailedToSave": "Nem sikerült menteni", "memorySkillsApiKey": "API kulcs", "memorySkillsActiveSkillsProvider": "Aktív készségek szolgáltatója", "cliproxyapiFallback": "CLIProxyAPI tartalék", "cliproxyapiEnableFallback": "A CLIProxyAPI tartalék engedélyezése", "cliproxyapiUrl": "CLIProxyAPI URL", + "headroomProxyTitle": "Headroom-proxy", + "headroomProxyDesc": "Az opcionális Headroom tokenmegtakarító proxy URL-je. Üresen hagyva a HEADROOM_URL vagy a http://localhost:8787 lesz használva.", + "headroomProxyUrl": "Headroom URL", + "headroomProxyUrlHint": "A visszacsatolási URL-ek erről az oldalról elindíthatók. A külső URL-ek csak ellenőrzésre kerülnek.", + "headroomProxySave": "Mentés", + "headroomProxyStart": "Indítás", + "headroomProxyStop": "Leállítás", + "headroomProxyExternalHint": "Ez az URL nem visszacsatolási cím, ezért az OmniRoute nem indítja el a helyi CLI-t.", "cliproxyapiStatus": "CLIProxyAPI állapota", "cliproxyapiNotDetected": "Nem észlelhető", "cliproxyapiImportAuthTitle": "Fiókok importálása a CLIProxyAPI-ból", @@ -7985,18 +8000,18 @@ "responsesStateModePreserve": "Megőrzés", "responsesStateHint": "Az Automatikus beállítás eltávolítja a previous_response_id azonosítót, kivéve, ha egy kapcsolat kifejezetten engedélyezi az OpenAI Responses tárolást. Az Eltávolítás a legbiztonságosabb az állapotmentes kliensek számára, mint például a VS Code Custom Endpoint; a kontextus ilyenkor attól függ, hogy a kliens elküldi-e a teljes előzményt.", "responsesStateSaveError": "Nem sikerült frissíteni a Responses állapotbeállítását", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Codex gyors csomag", "codexFastTierDesc": "Globálisan adja meg a service_tier=prioritást az OpenAI Codex kérésekhez.", "codexFastTierHint": "Ha engedélyezve van, az OmniRoute hozzáadja a service_tier=priority értéket a kimenő Codex-kérésekhez azokhoz a kapcsolatokhoz, amelyek még nem határoznak meg szintet. A prioritási szinthez OpenAI Enterprise API-kulcsra vagy ChatGPT-auth Codex-útvonalra van szükség; más kulcstípusok réteggel kapcsolatos hibát kapnak az OpenAI-tól. A Codex szolgáltató oldalán a kapcsolatonkénti beállítások élveznek elsőbbséget.", "codexFastTierSaveError": "Nem sikerült frissíteni a Codex Fast Tier beállítását", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex-kvóta automatikus pingelése", + "codexAutoPingDesc": "Kapcsolatonként engedélyezhető: közvetlenül egy Codex-munkamenet időablakának visszaállítása után apró kérést küld, hogy ne legyen hideg, amikor szükséged van rá.", + "codexAutoPingWarning": "Minden ping kis mennyiségű valódi Codex-kvótát használ fel. Alapértelmezés szerint ki van kapcsolva — csak azoknál a kapcsolatoknál engedélyezd, amelyekre aktívan támaszkodsz.", + "codexAutoPingSaveError": "Nem sikerült frissíteni a Codex automatikus pingelési beállítását", + "codexAutoPingToggleAria": "A Codex-kvóta automatikus pingelésének be- vagy kikapcsolása ehhez: {connection}", "codexFastTierTierLabel": "Szolgáltatási szint", "codexFastTierTierPriority": "Prioritás", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Rugalmas", "codexFastTierTierDefault": "Alapértelmezett", "codexFastTierModelsLabel": "Fast-tier modellek", "codexFastTierModelsHint": "Csak a bejelölt modellek kapnak service_tier értéket, ha a Fast Tier engedélyezve van.", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Globális ellenőrzési időköz", "resilienceCredentialHealthEveryMinutes": "Minden {minutes} percben", "resilienceCredentialHealthHint": "0 kikapcsolja a háttérvizsgálatot (max. 1440 perc = 24 óra). Saját egészségellenőrzési értékkel rendelkező kapcsolatok figyelmen kívül hagyják ezt a globális alapértéket; egy kapcsolaton a 0 akkor is kiveszi, ha a globális vizsgálat be van kapcsolva.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Mindig engedélyezve ennél: {provider} — az OAuth-fiók biztonságához szükséges; nem kapcsolható ki.", + "forcedFingerprintBadge": "Kötelező", "sessionAffinityTitle": "Munkamenet-affinitás", "sessionAffinityDesc": "Egy beszélgetést ennyi másodpercig ugyanazon a fiókon tart bármely szolgáltató esetén. A 0 letiltja.", "sessionAffinityTtl": "Affinitás TTL (másodperc)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "A visszalépési lépések maximális száma, mielőtt a lehűlési idő növekedése megállna. A legtöbb konfigurációban a Maximális lehűlési idő korlátot éri el először a rendszer, így ez egy biztonsági plafonként szolgál arra az esetre, ha a Maximális lehűlési idő megemelkedik.", "disableSessionStickiness": "Munkamenet-ragadósság letiltása", "disableSessionStickinessDesc": "A round-robin és a véletlenszerű kombinációk minden kérésnél új kapcsolatra váltanak, ahelyett, hogy a teljes beszélgetést egyetlen kapcsolathoz rögzítenék az első üzenet hash-e alapján. Hagyja kikapcsolva, hogy megőrizze a prompt-cache találatokat a többfordulós csevegéseknél. A kombinációnkénti felülírások elsőbbséget élveznek.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Promptgyorsítótár-lokalitás alapú útválasztás", + "promptCacheAffinityDesc": "Egyező promptgyorsítótár-kulcsok esetén részesítse előnyben ugyanazt a szolgáltatói fiókot, miközben megőrzi az állapot- és kvótaalapú feladatátvételt.", + "reasoningTokenBuffer": "Következtetési tokenpuffer", + "reasoningTokenBufferDesc": "Lehetővé teszi, hogy a kombinált útválasztás csak ismert következtetési modelleknél adjon max_tokens tartalékot, ha a teljes puffer belefér az ismert kimeneti korlátba.", + "zeroLatencyOptimizations": "Zéró késleltetésű optimalizálások", + "zeroLatencyOptimizationsDesc": "Engedélyezi a párhuzamosított kéréseket, a prediktív TTFT-kihagyásokat és a proaktív tartalékkérelem-tömörítést. Hagyd kikapcsolva, hogy ezek a késleltetési funkciók ne versenyeztessék a célpontokat, és ne tömörítsék a tartalék kéréseket.", "credentialRedaction": "Hitelesítési adatok kitakarása", "credentialRedactionDesc": "API-kulcsok, tokenek és titkok kitakarása a szolgáltatóknak küldött kontextusból és a válaszokból.", "enableCredentialRedaction": "Hitelesítési adatok kitakarásának engedélyezése", "enableCredentialRedactionDesc": "Eltávolítja az API-kulcsokat, tokeneket, privát kulcsokat és JWT-ket az üzenetekből, eszközhívásokból és válaszokból.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Automatikus szinkronizálás kikapcsolva", + "pricingAutoSyncEnabled": "Automatikus szinkronizálás bekapcsolva", "modalityBridgeIntro": "Alakítsa a multimodális tartalmat szöveggé, mielőtt az csak szöveget kezelő modellekhez érne. A kép-, hang- és videóhidak elérhetők és beállíthatók.", "modalityBridgeVisionTab": "Látás", "modalityBridgeAudioTab": "Hang", @@ -8263,7 +8278,7 @@ "modalityBridgeAudioEnabledDesc": "Cseréld le a hangrészeket átiratokkal, amikor a célmodell nem tudja feldolgozni a hangot.", "modalityBridgeAudioModel": "Beszédfelismerő modell", "modalityBridgeAudioModelAuto": "Automatikus (első csatlakoztatott STT szolgáltató)", - "modalityBridgeAudioMaxClips": "Max audio clips per request", + "modalityBridgeAudioMaxClips": "Hangklippek maximális száma kérésenként", "modalityBridgeAudioTestButton": "Teszt mintapéldány hanggal", "modalityBridgeAudioTestRunning": "Audio tesztelése…", "modalityBridgeAudioTestOk": "Audio Bridge OK — {count} klip(pek) átírása a {model} által", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Egészség", "cliproxyapiPort": "Port", "qdrantHost": "Gazda", - "qdrantCollection": "Gyűjtemény", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Gyűjtemény" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "RTK motor", + "description": "Parancsérzékeny tömörítés az eszközkimenetekhez, terminálnaplókhoz és buildelési eredményekhez.", + "enabled": "Engedélyezve", + "intensity": "Intenzitás", + "intensityMinimal": "Minimális", + "intensityStandard": "Normál", + "intensityAggressive": "Agresszív", + "toolResults": "Eszközeredmények", + "assistantMessages": "Asszisztensüzenetek", + "codeBlocks": "Kódblokkok", "filterCatalog": "Szűrő katalógus", "filterCatalogDesc": "Rendelkezésre álló kimeneti szűrők kategóriánként", "guidedConfig": "Konfiguráció", "guidedConfigDesc": "Állítsa be, hogy az RTK hogyan szűrje a terminál kimenetét", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Sorok maximális száma", + "maxChars": "Karakterek maximális száma", "deduplicateThreshold": "Duplikált küszöb", "customFilters": "Egyedi szűrők", "detectedType": "Észlelt típus", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Kudarcok", "rawOutputAlways": "Mindig", "rawOutputMaxBytes": "Nyers kimenet max. bájt", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Szűrés tesztelése", + "pasteOutput": "Illessze be ide a szűrés teszteléséhez használt eszközkimenetet...", "presetHigh": "Agresszív", "presetLow": "Fény", "presetMaxChars": "Maximális kimeneti karakter", "presetMaxLines": "Max kimeneti vonalak", "presetMedium": "Szabványos", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Futtatás", + "result": "Eredmény", + "previewEmpty": "Futtasson egy mintát az RTK-kimenet előnézetéhez.", + "detected": "Észlelve", "masterSwitchOffAlert": "A Token Saver főkapcsolója KI van kapcsolva — ezek a beállítások nem lesznek hatással a kérésekre, amíg be nem kapcsolja azt az Endpoint oldalon.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Kiszűrt tokenek", + "filtersActive": "Aktív szűrők", + "requests": "Kérések", + "avgSavings": "Átlagos megtakarítás", "simpleMode": "Egyszerű", "advancedMode": "Haladó", "searchFilters": "Keresési szűrők...", @@ -8481,7 +8488,7 @@ "savings": "Megtakarítás", "original": "Eredeti", "compressed": "Tömörített", - "diff": "Diff", + "diff": "Eltérés", "last7Days": "Elmúlt 7 nap", "noDataYet": "Még nincs adat", "runs": "Futtatások", @@ -8617,27 +8624,27 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", - "loading": "Loading…", + "title": "Tömörítési kombinációk", + "description": "Adja meg, hogyan kombinálja a rendszer a motorokat a különböző útválasztási helyzetekben.", + "createCombo": "Tömörítési kombináció létrehozása", + "editCombo": "Szerkesztés", + "deleteCombo": "Törlés", + "deleteConfirm": "Törli ezt a tömörítési kombinációt?", + "pipeline": "Folyamatlánc", + "addStep": "Lépés hozzáadása", + "removeStep": "Eltávolítás", + "name": "Név", + "descriptionField": "Leírás", + "languagePacks": "Nyelvi csomagok", + "outputMode": "Kimeneti mód", + "assignToRouting": "Hozzárendelés útválasztási kombinációkhoz", + "noAssignments": "Nincsenek elérhető útválasztási kombinációk", + "default": "Alapértelmezett", + "setAsDefault": "Beállítás alapértelmezettként", + "save": "Mentés", + "cancel": "Mégse", + "enabled": "Engedélyezve", + "loading": "Betöltés…", "hubTitle": "Tömörítési központ", "hubDescription": "Válassza ki, melyik tömörítési profil fusson globálisan.", "hideExplanation": "Magyarázat elrejtése", @@ -8661,6 +8668,8 @@ "contextEditingNote": "Jelenleg csak a Claude (Anthropic) esetében érhető el. Ez egy delegált mód: a szolgáltató szerveroldalon törli a régi eszközhasználati blokkokat — mi nem írjuk át az üzenetet. Más szolgáltatókat nem érint.", "namedCombos": "Elnevezett kombinációk", "namedCombosDescription": "Mentsen el különböző folyamatokat, és rendelje hozzá őket konkrét útvonalválasztási kombinációkhoz.", + "activeProfileMasterSwitchOffWarning": "Az alábbi aktív profil addig nem fut, amíg a fő „Prompt Compression” kapcsoló nincs bekapcsolva.", + "activeProfileMasterSwitchOffCta": "Kapcsolja be a Beállításokban", "comboNamePlaceholder": "Kombináció neve", "descriptionPlaceholder": "Leírás", "nameRequired": "Mentés előtt adjon meg egy kombinációnevet.", @@ -8674,9 +8683,7 @@ "languagePacksList": "Nyelvi csomagok: {packs}", "dragToReorder": "Húzza a lépés átrendezéséhez", "engine": "Motor", - "intensity": "Intenzitás", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intenzitás" }, "compressionStudio": { "noRun": "Nem áll rendelkezésre tömörítési futtatás.", @@ -8705,7 +8712,7 @@ "run": "Futtatás", "laneRejected": "elutasítva: {reason}", "error": "hiba", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Az egyesített feldolgozási folyamat előnézete sikertelen: {reason}", "combinedFlow": "Összevont folyamat", "eachLayer": "Minden réteg külön-külön", "diff": "Különbség", @@ -8714,7 +8721,7 @@ "input": "BEMENET", "output": "KIMENET", "tokenCount": "{count, number} token", - "tokenShort": "tok", + "tokenShort": "token", "provider": "Szolgáltató", "judgeModel": "Bíráló modell", "judgeModelPlaceholder": "pl. claude-haiku", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Motor engedélyezése", "enableDescription": "Utolsóként fut a veremben (miután az RTK/Caveman megtisztítja a szöveget, az OmniGlyph képekké alakítja a maradékot), valamint önállóan is fut a omniglyph módon keresztül. Ez egy előnézet, és alapértelmezés szerint kikapcsolva marad a végpontok közötti ellenőrzés befejezéséig.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Tömörítési profil", + "profileDescription": "A profil felső korlát, nem alsó: egy szigorúbb profilt nem írhat felül lépésenkénti felülbírálás. Ezen a kódbázison mérve: coding-safe vagy balanced profil esetén a még előzmények nélküli munkamenet semmit sem tömörít, mert mindkettő megemeli a minimális karakterszám küszöbértékét, és natív formában tartja a rendszerpromptot, az eszközsémákat és az eszközeredményeket.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Aggressive (alapértelmezett)", + "description": "A közzétett bizonylatok által mért szabályzat. Leképezi a rendszerpromptot, az eszközdokumentációt és a sűrű előzményeket." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Kiegyensúlyozott", + "description": "Natív formában tartja az élő állapotot, és védi az utolsó 8 fordulót; csak a régebbi, lezárt előzményeket vonja össze." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Kódolásbiztos", + "description": "Natív formában tartja a jogosultságokat, az eszközsémákat és az élő eszközkimenetet, miközben védi az utolsó 12 fordulót. Addig semmit sem tömörít, amíg a munkamenetben nem gyűlnek össze előzmények." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Átengedés", + "description": "Átalakítás nélkül irányít. A motor kimarad, és a kérés változatlanul kerül továbbításra." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Válassza ki az OmniGlyph tömörítési profilt", "saved": "Mentve.", "saveFailed": "Nem sikerült menteni.", "enableAria": "Az OmniGlyph motor engedélyezése", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Szabályalapú üzenettömörítés, nyelvi csomagok, analitika és kimenetimód-vezérlők.", "advancedConfig": "Speciális konfiguráció", "advancedConfigDesc": "A tömörítési viselkedés finomhangolása", "aggressiveSettings": "Agresszív beállítások", "aggressiveSettingsDesc": "Maximális tömörítés potenciális minőségi kompromisszumokkal", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Kérések", + "tokensSaved": "Megtakarított tokenek", + "savingsPercent": "Megtakarítás (%)", + "avgLatency": "Átlagos késleltetés", + "languagePacks": "Nyelvi csomagok", + "languagePacksDesc": "Tömörítési szabályok engedélyezése adott nyelvekhez.", "labelAutoTrigger": "Automatikus tömörítés, ha a kontextus meghaladja", "labelCompressionRate": "Nyomószilárdság", "labelMaxTokens": "Cél tokenek üzenetenként", "labelMinLength": "Az üzenet minimális hossza", "labelMinSavings": "Minimális mentendő tokenek", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Engedélyezve", + "autoDetect": "Nyelv automatikus felismerése", + "rulesCount": "{count} szabály", "inputCompressionTitle": "Bemeneti tömörítés", "inputCompressionDesc": "A csevegési előzmények átírása rövidebb megfogalmazással. Kb. 50%-kal csökkenti a bemeneti tokenek számát.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Tömörítési elemzések", + "noAnalytics": "Még nincsenek tömörítési elemzések.", "masterDisabledWarning": "A Token Saver főkapcsolója KI van kapcsolva — ezek a beállítások nem lesznek hatással a kérésekre, amíg be nem kapcsolja a Tömörítési beállításokban, vagy meg nem változtatja itt.", "outputMode": "Kimeneti mód", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Kimeneti mód", "quickSettings": "Gyorsbeállítások", "quickSettingsDesc": "Alapvető tömörítési beállítások a kezdéshez", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Auto-Clarity megkerülése", + "bypassConditions": "Megkerülési feltételek", "bypassConditionsList": "biztonság, visszafordíthatatlan, pontosítás, sorrendérzékeny", "simpleMode": "Egyszerű", "advancedMode": "Haladó", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ultra beállítások", "ultraSettingsDesc": "SLM-alapú szemantikai tömörítés", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Válaszolj tömören. Őrizd meg a technikai kifejezéseket, kódokat, hibákat, URL-eket és azonosítókat.", + "full": "Válaszolj röviden és tömören. Őrizd meg a teljes technikai tartalmat.", + "ultra": "Válaszolj rendkívül tömören, általános technikai rövidítésekkel. Őrizd meg pontosan a szimbólumokat." } }, "translator": { @@ -8993,7 +9000,7 @@ "translationPathHubSpoke": "{source} → OpenAI (középfok) → {target}", "translationPathDirect": "{source} → {target} (közvetlen fordító)", "translationPathPassthrough": "Ugyanaz a formátum – nincs szükség fordításra", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "OpenAI köztes", "autoFeaturesTitle": "Mit csinál az OmniRoute automatikusan", "autoFeaturesCount": "8 jellemző", "featureReasoningCache": "Érvelési gyorsítótár", @@ -9039,14 +9046,14 @@ "scenarioMultiTurn": "Többfordulós", "scenarioThinking": "Gondolkodás", "scenarioSystemPrompt": "Rendszer Prompt", - "scenarioStreaming": "Streaming", + "scenarioStreaming": "Streamelés", "templateNames": { "simple-chat": "Egyszerű csevegés", "tool-calling": "Szerszámhívás", "multi-turn": "Többfordulós", "thinking": "Gondolkodás", "system-prompt": "Rendszer Prompt", - "streaming": "Streaming", + "streaming": "Streamelés", "vision": "Látás", "schema-coercion": "Sémakényszer" }, @@ -9101,8 +9108,8 @@ "anthropicCompatibleLabel": "Antropikus kompatibilis", "noTemplateForFormat": "Ehhez a formátumhoz nincs sablon", "translationFailed": "Sikertelen fordítás: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "pipelineDebugger": "Folyamat-hibakereső", + "translationPipeline": "Fordítási folyamat", "loading": "Betöltés…", "compressionOriginal": "Eredeti", "compressionCompressed": "Tömörített", @@ -9130,7 +9137,7 @@ "clientRequestDescription": "A kérés szerve, ahogyan az Ön ügyfele küldené", "formatDetected": "Formátum észlelve", "formatDetectedDescription": "Az OmniRoute automatikusan észleli az API-formátumot a kérésstruktúrából", - "openaiIntermediate": "OpenAI Intermediate", + "openaiIntermediate": "OpenAI köztes", "openaiIntermediateDescription": "Minden formátum először OpenAI formátumra (az univerzális hídra) normalizálódik.", "providerFormat": "Szolgáltatói formátum", "providerFormatDescription": "Az OpenAI formátumot lefordítják a szolgáltató natív formátumára", @@ -9149,7 +9156,7 @@ "eventSourceMainPipeline": "• Fő kérés folyamat (CLI/IDE/API forgalom)", "liveMonitorDescriptionPrefix": "Megjeleníti a fordítási eseményeket, ahogy az API-hívások az OmniRoute-on keresztül áramlanak. Az események a memóriában lévő pufferből származnak (újraindításkor visszaáll). Használja", "liveMonitorDescriptionSuffix": ", vagy külső API-hívások események generálásához.", - "streamTransformer": "Stream Transformer", + "streamTransformer": "Streamátalakító", "modeDescriptionStreamTransformer": "Futtassa a csevegés befejezési SSE-folyamait a Választranszformátoron keresztül.", "streamTransformerTitle": "Válaszok Stream Transformer", "streamTransformerDescription": "Illesszen be egy csevegés befejezési SSE adatfolyamot, futtassa át az OmniRoute választranszformátorán, és ellenőrizze a kibocsátott válasz.* eseményeket, mielőtt egy klienst csatlakoztatna.", @@ -9157,7 +9164,7 @@ "loadToolSample": "Szerszámhívási minta betöltése", "transformToResponses": "Alakítsa át válaszokká", "rawChatSseInput": "Nyers csevegés befejezések SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "Átalakított Responses API SSE", "noResultsYet": "Még nincs eredmény", "transformedEvents": "Átalakult események", "uniqueEventTypes": "Egyedi eseménytípusok", @@ -9170,7 +9177,7 @@ "comboRouted": "Kombinált útvonal", "uniqueEndpoints": "Egyedi végpontok", "routeDetails": "Útvonal részletei", - "comboBadge": "Combo", + "comboBadge": "Kombinált", "routeEndpointLabel": "Végpont", "routeConnectionLabel": "Csatlakozás", "scenarioVision": "Látás (képmegértés)", @@ -9181,7 +9188,7 @@ "conceptHeadline": "Az alkalmazása egy adott API \"nyelvét\" beszéli. A Fordító átalakítja azt egy másik szolgáltató használatához.", "conceptDiagramAppLabel": "Saját alkalmazás", "conceptDiagramSourceLabel": "Forrásformátum", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (központ)", "conceptDiagramTargetLabel": "Célszolgáltató", "conceptDiagramExampleApp": "pl. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Illessz be egy JSON-kérést; a formátum automatikusan felismerésre kerül.", "advancedPipelineTitle": "OpenAI köztes pipeline", "advancedPipelineSubtitle": "Az egyes fordítási lépések vizualizációja (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Streamátalakító (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Átalakítja a Chat Completions SSE-t Responses API-vá.", "advancedTestBenchTitle": "Tesztpad (8 forgatókönyv)", "advancedTestBenchSubtitle": "Lefuttatja az összes forgatókönyvet, és jelenti a sikeres/sikertelen eredményeket + a kompatibilitási %-ot.", @@ -9265,9 +9272,9 @@ "grokAutoTopUpUnavailable": "Nem elérhető", "grokAutoTopUpEnabled": "Engedélyezve", "grokAutoTopUpDisabled": "Letiltva", - "grokAutoTopUpAt": "at", + "grokAutoTopUpAt": "ekkor:", "grokAutoTopUpAdd": "hozzáadás", - "grokAutoTopUpMax": "max", + "grokAutoTopUpMax": "maximum", "grokAutoTopUpMonth": "hónap", "grokAdditionalCredits": "További Kiadások", "kiloAccountBalance": "Számlaegyenleg", @@ -9277,17 +9284,17 @@ "kiloPassRemaining": "Fennmaradó", "kiloPassRenews": "Megújul {count} nap múlva", "kiloPassUsageLabel": "E havi használat", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Extra használati kreditek", + "kimiExtraUsage": "Extra használat", + "kimiExtraUsageEnabled": "Engedélyezve", + "kimiExtraUsageDisabled": "Letiltva", + "kimiExtraUsageFrozen": "Befagyasztva", + "kimiExtraUsageUnavailable": "Nem érhető el", + "kimiMonthlyUsed": "Felhasználva ebben a hónapban", + "kimiMonthlyLimit": "Havi korlát", + "kimiMonthlyLimitUnlimited": "Korlátlan", + "kimiAdditionalCredits": "További kreditek", + "loggerTab": "Naplózó", "proxyTab": "Proxy", "budgetManagement": "Költségvetési menedzsment", "budgetSaved": "Költségkeret-korlátok mentve", @@ -9314,17 +9321,17 @@ "latencyP50": "50. o", "latencyP95": "95. o", "latencyP99": "99. o", - "promptCache": "Prompt Cache", + "promptCache": "Promptgyorsítótár", "systemHealth": "Rendszer egészsége", "entries": "Bejegyzések", "activeCount": "{count} aktív", "openCircuitBreakersDetected": "Szakadási megszakítók észlelve", - "hitRate": "Hit Rate", + "hitRate": "Találati arány", "hitsMisses": "Találatok / hiányzók", "circuitBreakers": "Áramköri megszakítók", "lockedIPs": "Zárolt IP-k", "lockoutsAutoRefreshHint": "Modellenkénti sebességkorlátozások • Automatikus frissítés 10 másodpercig", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# zárolva} other {# zárolva}}", "timeLeft": "{time} maradt", "howItWorks": "Hogyan működik", "howItWorksSubtitle": "Ismerje meg, hogyan érvényesítik az értékelések az Ön LLM-válaszait", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "A válaszokat a várt kritériumokhoz hasonlítják. Tekintse meg az egyes esetek sikerességét/sikertelenségét a késleltetési mutatók és a részletes visszajelzések segítségével.", "evalsStrategyContainsLabel": "Tartalmazza", "evalsStrategyExactLabel": "Pontos egyezés", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Reguláris kifejezés", "evalsStrategyCustomLabel": "Egyéni logika", "evalsStrategyContainsDescription": "Ellenőrzi, hogy az LLM kimenete tartalmazza-e a várt részkarakterláncot.", "evalsStrategyExactDescription": "Ellenőrzi, hogy az LLM kimenete pontosan megegyezik-e a várt értékkel.", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Teszt alatt lévő modellek", "searchSuitesPlaceholder": "Lakosztályok keresése...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# eset} other {# eset}}", "runEval": "Fuss Eval", "runAllSuites": "Futtassa az összeset", "runAllRunning": "Minden fut...", "runAllProgress": "{current}/{total} fut: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# tesztcsomag sikertelen} other {# tesztcsomag sikertelen}}", "runAllCompleted": "{suites} csomag futtatása – {passed} sikeres, {failed} sikertelen", "runAllCompletedWithFailures": "{completed} suites futott; {failedSuites} nem sikerült", "runningProgress": "{current}/{total} fut...", @@ -9423,7 +9430,7 @@ "providerLimits": "Szolgáltatói korlátok", "noProviders": "Nincs szolgáltató csatlakozva", "connectProvidersForQuota": "Csatlakozzon OAuth szolgáltatókhoz az API-kvótakorlátok és -használat nyomon követéséhez.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# fiók} other {# fiók}}", "filteredFromCount": "(szűrve innen: {count})", "autoRefresh": "Automatikus frissítés", "refreshAll": "Összes frissítése", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Nem sikerült frissíteni a kvóta láthatóságát", "account": "fiók", "modelQuotas": "Modellkvóták", - "lastUsed": "Last Refreshed", + "lastUsed": "Utolsó frissítés", "actions": "Akciók", "refreshQuota": "Kvóta frissítése", "today": "Ma", @@ -9452,13 +9459,13 @@ "cardExpand": "Kibontás", "cardCollapse": "Összecsukás", "moreQuotas": "+{count} további", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Csoportosítatlan", + "viewFlat": "Egyszerű lista", + "viewByEnvironment": "Környezet szerint", "noQuotaDataAvailable": "Nem állnak rendelkezésre kvótaadatok", "noAccountsForTierFilter": "Nem található fiók a rétegszűrőhöz", "tierAll": "Mind", - "tierEnterprise": "Enterprise", + "tierEnterprise": "Vállalati", "tierTeam": "Csapat", "tierBusiness": "Üzleti", "tierUltra": "Ultra", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Kredit beváltása", "resetCreditRedeemed": "Visszaállítás beváltva", "resetCreditRedeemFailed": "Nem sikerült beváltani a visszaállítási kreditet", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "A tesztcsomag mentése sikertelen", "clone": "Klón", "exportSuite": "Exportálás", "importSuite": "Importálás", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Érvénytelen eval suite JSON", "suiteBuilderCloneSuffix": "másolat", "suiteBuilderImportedSuite": "Importált lakosztály", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Értékelőkártya", + "evalApiKey": "API-kulcs", + "scorecardPassRate": "Sikerességi arány", + "targetTypeModel": "Modell", + "actualOutputLabel": "Tényleges kimenet", + "evalTargetHint": "Válasszon ki egy modellt vagy kombinációt az értékeléshez.", + "suiteBuilderDeleted": "A tesztcsomag sikeresen törölve", + "suiteBuilderCaseCardHint": "Adja meg a bemeneti promptot és a várt kimenet feltételeit.", + "nextResetUtc": "Következő visszaállítás (UTC)", + "scorecardHint": "Az összes értékelési tesztcsomag összesített sikerességi aránya.", + "suiteLatestRunsHint": "A tesztcsomag legutóbbi értékelési futtatásai.", + "saving": "Mentés", + "suiteBuilderCaseModelLabel": "Modell (opcionális)", + "evalControlsTitle": "Értékelési vezérlők", + "suiteBuilderEditTitle": "Értékelési tesztcsomag szerkesztése", + "suiteBuilderCaseStrategyLabel": "Ellenőrzési stratégia", + "notifySelectDifferentCompareTarget": "Válasszon másik célt az összehasonlításhoz", + "recentRunsHint": "A legutóbbi értékelési futtatások láthatók. Kattintson egy futtatásra a részletes eredmények megtekintéséhez.", + "evalCompareHint": "Opcionálisan összehasonlíthatja az eredményeket egy második céllal.", + "suiteBuilderCaseInvalid": "Ez az eset ellenőrzési hibákat tartalmaz. Mentés előtt javítsa ki őket.", + "historyEmpty": "Még nincs értékelési előzmény", + "suiteBuilderUpdated": "A tesztcsomag sikeresen frissítve", + "resetInterval": "Visszaállítási időköz", + "suiteBuilderCreateTitle": "Értékelési tesztcsomag létrehozása", + "activePeriodSpend": "Aktuális időszak költése", + "evalApiKeyHint": "Válassza ki, melyik API-kulcsot használja az értékelési kérelmekhez.", + "evalCompareOptional": "Összehasonlítás (opcionális)", + "suiteBuilderDeleteFailed": "Nem sikerült törölni a tesztcsomagot", + "suiteBuilderCaseSystemPromptPlaceholder": "Opcionális rendszerutasítások...", + "scorecardCases": "Esetek", + "runCompletedWithScore": "A kiértékelés befejeződött — {score}% megfelelési arány", + "suiteBuilderCustomBadge": "Egyéni", + "targetSuiteDefaults": "Tesztcsomag alapértelmezései", + "suiteBuilderDeleteConfirm": "Biztosan törölni szeretné ezt a tesztcsomagot? Ez a művelet nem vonható vissza.", + "suiteBuilderNameLabel": "Tesztcsomag neve", + "scorecardSuites": "Tesztcsomagok", + "evalCompareTarget": "Összehasonlítási cél", + "suiteBuilderCaseModelPlaceholder": "pl. gpt-4o-mini", + "evalControlsHint": "Konfigurálja a kiértékelési célt és az API-kulcsot, majd futtassa a tesztcsomagokat a modell minőségének ellenőrzéséhez.", + "recentRunsTitle": "Legutóbbi futtatások", + "suiteBuilderCaseSystemPromptLabel": "Rendszerprompt", + "suiteBuilderCaseExpectedPlaceholder": "pl. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "pl. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Illessze be a pontos várt választ", "suiteBuilderCaseExpectedPlaceholderRegex": "pl. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Használjon JavaScript reguláris kifejezést perjelek tördelése nélkül.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "pl. Kódminőségi tesztcsomag", + "suiteBuilderAddCase": "Eset hozzáadása", + "cancel": "Mégse", + "evalTarget": "Cél", + "suiteBuilderCaseNameLabel": "Eset neve", + "weeklyLimitUsd": "Heti korlát (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "pl. Írj egy Fibonacci-függvényt Pythonban", + "suiteBuilderNameRequired": "A tesztcsomag neve kötelező", + "suiteBuilderCaseUserPromptLabel": "Felhasználói prompt", + "daily": "Napi", + "resultErrorLabel": "Hiba", + "suiteBuilderBuiltInBadge": "Beépített", + "suiteBuilderCaseCardTitle": "Teseteset", "suiteBuilderDuplicateCase": "Megkettőzés", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "pl. 50.00", + "suiteBuilderCaseTagsHint": "Vesszővel elválasztott címkék a tesztesetek rendszerezéséhez.", + "notifyEvalRunFailedWithReason": "A kiértékelés sikertelen: {reason}", + "weekly": "Heti", + "runEvalRunning": "Kiértékelés futtatása...", + "delete": "Törlés", + "resetTimeUtc": "Visszaállítás időpontja (UTC)", + "evalApiKeyAuto": "Automatikus (alapértelmezett használata)", + "suiteBuilderDescriptionPlaceholder": "Opcionális leírás arról, hogy mit tesztel ez a tesztcsomag...", + "targetComparisonTitle": "Célok összehasonlítása", + "save": "Mentés", + "suiteBuilderCreated": "Tesztcsomag sikeresen létrehozva", + "suiteLatestRuns": "Legutóbbi futtatások", + "suiteBuilderCaseExpectedLabel": "Várt érték", + "historyLatency": "Késleltetés", + "suiteBuilderCaseTagsPlaceholder": "pl. kódolás, python", + "targetTypeCombo": "Kombináció", + "scorecardPassed": "Sikeres", + "suiteBuilderCaseTagsLabel": "Címkék", + "suiteBuilderNewSuite": "Új tesztcsomag", + "notifyEvalLoadFailed": "Nem sikerült betölteni a kiértékelési adatokat", + "notConfigured": "Nincs konfigurálva", + "suiteBuilderCaseNamePlaceholder": "pl. Python Fibonacci-teszt", + "intervalLabel": "Intervallum", + "suiteBuilderCreateAction": "Tesztcsomag létrehozása", + "suiteBuilderCasesHint": "Minden teszteset elküld egy promptot, és ellenőrzi a választ.", + "suiteBuilderUpdatedAt": "Frissítve", + "errorBadge": "Hiba", + "suiteBuilderCasesTitle": "Tesztesetek", + "edit": "Szerkesztés", + "monthly": "Havi", + "suiteBuilderCasesRequired": "Legalább egy teszteset szükséges", + "weeklyLimitSummary": "A heti költségkeret-korlát összegzése", + "suiteBuilderDescriptionLabel": "Leírás", + "targetComparisonHint": "A célok kiértékelési eredményeinek egymás melletti összehasonlítása.", + "compareCompletedWithScore": "Az összehasonlítás befejeződött — {score}% sikerességi arány", + "staleQuotaTooltip": "A legutóbbi frissítés sikertelen volt — gyorsítótárazott adatok megjelenítése", "quotaThresholdLabel": "Min balra", "quotaCutoffsColumnHelp": "A kérések leállítása, ha a fennmaradó kvóta erre a százalékra vagy az alá csökken.", "quotaCutoffsButtonDefault": "Alapértelmezett", @@ -9630,7 +9637,7 @@ "quotaThresholdInvalid": "Írjon be egy egész számot 0 és 100 között.", "budgetKpiToday": "Ma", "budgetKpiThisMonth": "Ebben a hónapban", - "budgetKpiProjEom": "Proj EOM", + "budgetKpiProjEom": "Hó végi előrejelzés", "budgetKpiBlocked": "Blokkolt", "budgetKpiAtRisk": "Veszélyben", "budgetKpiActiveKeys": "Aktív kulcsok", @@ -9662,7 +9669,7 @@ "safe": "Biztonságos", "no-limit": "Nincs korlát" }, - "budgetColumnKey": "Key", + "budgetColumnKey": "Kulcs", "budgetColumnToday": "Ma", "budgetColumnMonth": "Hónap", "budgetColumnStatus": "Státusz", @@ -9745,7 +9752,7 @@ "proxy": "Proxy", "level": "Szint", "directNative": "Közvetlen (natív)", - "combo": "Combo", + "combo": "Kombináció", "inputTokens": "Én:", "outputTokens": "O:" }, @@ -9756,7 +9763,7 @@ "usageByModel": "Használat modellenként", "usageByAccount": "Használat fiók szerint", "failedToLoad": "Nem sikerült betölteni a használati statisztikákat.", - "tokenHealth": "Token Health", + "tokenHealth": "Tokenek állapota", "totalOAuth": "Teljes OAuth", "healthy": "Egészséges", "warning": "Figyelmeztetés", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Rendszer metrikák", "memory": "Memória", - "memoryShort": "mem", + "memoryShort": "memória", "uptime": "Üzemidő", "ariaLabel": "Rendszerfigyelés", "title": "Rendszerfigyelő", @@ -9863,7 +9870,7 @@ "backToLogin": "Vissza a Bejelentkezéshez", "forgotPassword": "Elfelejtetted a jelszavad?", "continueWithOidc": "Folytatás OIDC-vel", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Alapértelmezett jelszó: CHANGEME (kivéve, ha az INITIAL_PASSWORD be lett állítva)", "Authorization": "Engedélyezés", "Content-Disposition": "Tartalom-Diszpozíció", "waitingForAuthorization": "Várakozás az engedélyezésre...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Várakozás az Antigravitációs engedélyezésre...", "waitingForQoderAuthorization": "Várakozás az Qoder engedélyezésére...", "exchangingCodeForTokens": "Kód cseréje tokenre...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Nem kompatibilis Node.js-verzió", + "nodeIncompatibleDesc": "A futtatott Node.js {version} verzió kívül esik az OmniRoute által támogatott biztonságos futtatókörnyezeti szabályzaton. Használja a Node.js 20.x vagy 22.x LTS javított kiadását.", + "nodeIncompatibleFixLabel": "Javítás: telepítse a Node.js 22 LTS javított kiadását", + "nodeIncompatibleHint": "Az OmniRoute használatához Node.js 22.22.2+ (22.x LTS) vagy 24.0.0+ (24.x LTS) szükséges. A Node 24 LTS használata ajánlott.", "resetViaAppDataTitle": "Visszaállítás az Alkalmazás Adatokkal", "resetViaAppDataDescription": "Törölje a beállítási fájlt az alkalmazás adatkönyvtárából a jelszó visszaállításához:", "quitDesktopApp": "Teljesen zárja be az OmniRoute asztali alkalmazást", @@ -9936,7 +9943,7 @@ "docsLink": "Dokumentumok", "github": "GitHub", "versionLive": "A v1.0 már elérhető", - "oneEndpoint": "One Endpoint for", + "oneEndpoint": "Egy végpont ehhez:", "allProviders": "Minden AI szolgáltató", "heroDescription": "AI végpont proxy webes irányítópulttal – A CLIProxyAPI JavaScript-portja. Zökkenőmentesen működik a Claude Code, OpenAI Codex, Cline, RooCode és más CLI eszközökkel.", "getStarted": "Kezdje el", @@ -9953,7 +9960,7 @@ "featureUsageTrackingDesc": "Részletes elemzés és költségkövetés az összes modellben.", "featureOAuthApiKeysTitle": "OAuth és API kulcsok", "featureOAuthApiKeysDesc": "A hitelesítő adatok biztonságos kezelése egyetlen tárolóban.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Felhőszinkronizálás", "featureCloudSyncDesc": "Azonnal szinkronizálja konfigurációit az eszközök között.", "featureCliSupportTitle": "CLI támogatás", "featureCliSupportDesc": "Működik a Claude Code, Codex, Cline, Cursor és még sok más funkcióval.", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "Szolgáltatók", "commonUseCases": "Gyakori használati esetek", "clientCompatibility": "Kliens kompatibilitás", - "protocolsToc": "Protocols", + "protocolsToc": "Protokollok", "apiReference": "API-referencia", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Felügyeleti API referenciája", + "managementApiDescription": "Automatizálási végpontok a proxyregisztrációhoz, a hatókör-hozzárendelésekhez és a régi proxyk migrálásához.", "method": "módszer", "path": "Útvonal", "notes": "Megjegyzések", @@ -10064,7 +10071,7 @@ "quickStartStep4Suffix": "Használjon például szolgáltatói előtagot", "deploySetupTitle": "Beállítási útmutató", "deploySetupText": "Lépésről lépésre történő telepítés, környezetkonfiguráció és az OmniRoute első futtatása.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron asztali alkalmazás", "deployElectronText": "Futtassa az OmniRoute-ot natív asztali alkalmazásként Windows, macOS és Linux rendszeren.", "deployDockerTitle": "Docker", "deployDockerText": "Konténeres telepítés a Docker Compose segítségével; készen áll a gyártásra és a Kubernetesre.", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Telepítse az OmniRoute-ot progresszív webalkalmazásként Android, iOS és asztali böngészőkre.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Futtassa az OmniRoute-ot grafikus felület nélkül Androidon a Termux segítségével. Az irányítópultot a mobilböngészőjéből érheti el.", "featureRoutingTitle": "Többszolgáltatós útválasztás", "featureRoutingText": "A kérések 30+ AI-szolgáltatóhoz irányíthatók egyetlen OpenAI-kompatibilis végponton keresztül. Támogatja a csevegést, a válaszokat, a hang- és kép API-kat.", "featureCombosTitle": "Kombók és egyensúlyozás", @@ -10090,7 +10097,7 @@ "featureCliText": "Kezelje az IDE konfigurációkat, exportálja/importálja a biztonsági másolatokat, fedezze fel a kódexprofilokat, és konfigurálja a beállításokat az irányítópultról.", "featureSecurityTitle": "Biztonság és irányelvek", "featureSecurityText": "API-kulcs hitelesítés, IP-szűrés, azonnali befecskendezési őr, tartományi szabályzatok, munkamenet-kezelés és naplózás.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Felhőszinkronizálás", "featureCloudSyncText": "Szinkronizálja konfigurációját a Cloudflare Workers szolgáltatással a távoli eléréshez titkosított hitelesítő adatokkal és automatikus feladatátvétellel.", "providersAcrossConnectionTypes": "{count} szolgáltatók három kapcsolattípuson keresztül.", "manageProviders": "Szolgáltatók kezelése", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "Használja az OmniRoute-ot stabil alap URL-ként, miközben alatta váltogatja a fiókokat vagy a szolgáltatói kombinációkat.", "clientKimiBullet2": "Előnyben részesítse az előtaggal ellátott modelleket a kódolási folyamatokban, így a tartalék és az ellenőrzési nyomvonal egyértelmű marad.", "clientKimiBullet3": "Használja a `/v1/responses' függvényt, ha natív Responses-stílusú útválasztást szeretne eszközt használó ügyfelek számára.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "Protokollok: MCP és A2A", + "protocolsDescription": "Az OmniRoute az OpenAI-kompatibilis API-kon kívül két működési protokollt kínál: az MCP-t eszközök végrehajtásához, valamint az A2A-t az ügynökök közötti munkafolyamatokhoz.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Használja az MCP-t stdio kapcsolaton keresztül, hogy az ügyfelek naplózható módon fedezhessék fel és hívhassák meg az OmniRoute eszközeit.", + "protocolMcpStep1": "Indítsa el az MCP-átvitelt az `omniroute --mcp` paranccsal.", + "protocolMcpStep2": "Állítsa be az MCP-kliensét a stdio átvitel használatára.", + "protocolMcpStep3": "A kapcsolat ellenőrzéséhez hívja meg az `omniroute_get_health` és az `omniroute_list_combos` parancsot.", "protocolA2aTitle": "A2A (Agent2Agent)", "protocolA2aDesc": "Az A2A JSON-RPC használatával szinkronban vagy SSE adatfolyamon keresztül küldhet be feladatokat.", "protocolA2aStep1": "Olvassa el `/.well-known/agent.json` az ügynök felfedezéséhez.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aStep2": "Küldjön `message/send` vagy `message/stream` kéréseket a `POST /a2a` végpontra.", + "protocolA2aStep3": "A feladatok életciklusát a `tasks/get` és a `tasks/cancel` használatával kezelheti.", + "protocolTroubleshootingTitle": "Protokollok hibaelhárítása", + "protocolTroubleshooting1": "Ha az MCP állapota offline, ellenőrizze, hogy fut-e a stdio folyamat, és frissül-e a heartbeat fájl.", + "protocolTroubleshooting2": "Ha az A2A-feladatok `working` állapotban maradnak, vizsgálja meg az `/api/a2a/tasks/:id` végpontot és a stream eseményeit a végállapot megállapításához.", + "protocolTroubleshooting3": "A működés vezérléséhez és naplózhatóságához használja a `/dashboard/mcp` és a `/dashboard/a2a` oldalakat.", "endpointChatNote": "OpenAI-kompatibilis csevegési végpont (alapértelmezett).", "endpointResponsesNote": "Responses API-végpont (Codex, o-sorozat).", "endpointModelsNote": "Modelkatalógus az összes csatlakoztatott szolgáltatóhoz.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Átírási segéd a /v1 nélküli ügyfelek számára.", "endpointRewriteResponsesNote": "Újraírási segéd a /v1 nélküli válaszokhoz.", "endpointRewriteModelsNote": "Segítő átírása a modellfelderítéshez /v1 nélkül.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "A mentett proxyregiszter-elemek listázása (lapozási támogatással).", + "mgmtProxiesCreateNote": "Újrafelhasználható proxyelem létrehozása a regiszterben.", + "mgmtProxiesHealthNote": "Mentett proxynkénti 24 órás/gördülő állapotmetrikák lekérése a proxynaplókból.", + "mgmtProxiesBulkAssignNote": "Egy proxy hozzárendelése vagy törlése több hatókör-azonosítónál egyetlen kérésben.", + "mgmtAssignmentsListNote": "Proxy-hozzárendelések listázása scope, scope_id vagy proxy_id szerint.", + "mgmtAssignmentsUpdateNote": "Proxy hozzárendelése vagy törlése global/provider/account/combo hatókörhöz.", + "mgmtLegacyMigrationNote": "Régi proxyConfig-leképezések importálása regiszter-hozzárendelésekbe.", "modelPrefixesDescriptionStart": "Használja a szolgáltató előtagot a modell neve előtt, hogy egy adott szolgáltatóhoz irányítson. Példa:", "modelPrefixesDescriptionEnd": "útvonalak a GitHub Copilothoz.", "provider": "Szolgáltató", @@ -10215,13 +10222,13 @@ "mcpToolsMemoryDesc": "Keressen, adjon hozzá és töröljön állandó párbeszédes memóriabejegyzéseket.", "mcpToolsSkillsTitle": "Készségek", "mcpToolsSkillsDesc": "Listázhatja, engedélyezheti, végrehajthatja és figyelheti az egyéni képességek végrehajtását.", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "Automatikus kombináció", "featureAutoComboText": "Automatikusan hozzon létre optimalizált kombinációkat a csatlakoztatott szolgáltatók, használati minták és modellek képességei alapján.", "featureSearchTitle": "Webes keresés", "featureSearchText": "Integrált webes keresés 5 szolgáltatóval (Serper, Brave, Exa, Tavily, Perplexity), beleértve az elemzéseket és a költségkövetést.", "featureMemoryTitle": "Memória rendszer", "featureMemoryText": "Állandó beszélgetési memória kinyeréssel, injekcióval, visszakereséssel és összegzéssel a munkamenetek során.", - "featureSkillsTitle": "Skills Framework", + "featureSkillsTitle": "Készségkeretrendszer", "featureSkillsText": "Bővíthető készségrendszer beépített és egyedi készségekkel, sandbox-végrehajtással, kérések elfogásával és kontextus-befecskendezéssel.", "featureAcpTitle": "Ügynöki kommunikáció", "featureAcpText": "Agent Communication Protocol (ACP) nyilvántartás az ügynökök közötti munkafolyamatok és az eszközök összehangolásának kezeléséhez.", @@ -10265,7 +10272,7 @@ "feedbackQuestion": "Hasznos volt ez az oldal?", "pageMetadataTitle": "{title} — OmniRoute Dokumentáció", "pageMetadataDescription": "OmniRoute dokumentáció: {title}", - "breadcrumb": "Breadcrumb", + "breadcrumb": "Morzsamenü", "apiReferenceTable": { "parameters": "Paraméterek", "name": "Név", @@ -10296,7 +10303,7 @@ "listSeparator": "-", "questionsVisit": "Kérdések? Látogass el hozzánk", "githubRepository": "GitHub adattár", - "privacySection1Title": "1. Local-First Architecture", + "privacySection1Title": "1. Helyi működést előnyben részesítő architektúra", "privacySection1Text": "Az OmniRoute helyi alkalmazásnak készült. Minden adatfeldolgozás és tárolás teljes egészében az Ön gépén történik. Nincs központi szerver, amely gyűjti az Ön adatait.", "privacySection2Title": "2. Az általunk tárolt adatok", "privacyDataStoredIn": "A következő adatok helyben kerülnek tárolásra", @@ -10336,35 +10343,35 @@ "termsSection6Text": "Az OmniRoute egy nyílt forráskódú szoftver. Ön szabadon megvizsgálhatja, módosíthatja és terjesztheti a licenc feltételei szerint." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI-ügynökök", + "description": "Fedezze fel a rendszerére telepített CLI-ügynököket. Adjon hozzá egyéni ügynököket az automatikus észleléshez.", + "refresh": "Frissítés", + "installed": "Telepítve", + "notFound": "Nem található", + "builtIn": "Beépített", + "custom": "Egyéni", + "remove": "Eltávolítás", + "addCustomAgent": "Egyéni ügynök hozzáadása", + "addCustomAgentDesc": "Regisztráljon bármilyen CLI-eszközt az észleléshez. Frissítéskor automatikusan ellenőrizzük.", + "agentName": "Ügynök neve", + "binaryName": "Bináris neve", + "versionCommand": "Verzióparancs", + "spawnArgs": "Indítási argumentumok", + "addAgent": "Ügynök hozzáadása", + "scanning": "CLI-ügynökök keresése a rendszeren...", + "opencodeIntegration": "OpenCode-integráció", + "opencodeDetected": "opencode {version} észlelve", + "opencodeDesc": "Hozzon létre egy használatra kész {configFile} fájlt az OmniRoute alap-URL-jével és az összes elérhető modellel — helyezze a projekt gyökérkönyvtárába, majd futtassa a következőt: {command}.", + "downloadConfig": "{file} letöltése", + "downloaded": "Letöltve!", + "setupGuideTitle": "Beállítási útmutató", + "openCliTools": "CLI-eszközök megnyitása", + "setupGuideDetectCliTitle": "Telepített CLI-k észlelése", + "setupGuideDetectCliDesc": "CLI telepítése vagy frissítése után kattintson a Frissítés gombra, hogy az OmniRoute újra ellenőrizhesse a binárisokat és a verziókat.", + "setupGuideCustomAgentTitle": "Egyéni bináris regisztrálása", + "setupGuideCustomAgentDesc": "Használja az Egyéni ügynök hozzáadása lehetőséget, ha a CLI nem szerepel a beépített listán. Adja meg a bináris nevét és a verzióparancsot.", + "setupGuideCommandMissingTitle": "A „command not found” hiba javítása", + "setupGuideCommandMissingDesc": "Győződjön meg arról, hogy a CLI-parancs megtalálható a PATH-ban, nyisson új terminál-munkamenetet, majd futtassa újra a Frissítést.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10474,7 +10481,7 @@ "statusCancelled": "Törölve", "repositoryName": "Az adattár neve", "repositoryUrl": "Adattár URL-je", - "branch": "Branch", + "branch": "Ág", "agentDescriptions": { "jules": "A Google autonóm kódoló ágense", "devin": "A Cognition AI szoftvermérnöke", @@ -10492,7 +10499,7 @@ }, "templateNames": { "simple-chat": "Egyszerű csevegés", - "streaming": "Streaming", + "streaming": "Streamelés", "system-prompt": "Rendszer prompt", "thinking": "Gondolkodás", "tool-calling": "Szerszámhívás", @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Gyorsítótár-kezelés", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Frissítés", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Memóriabejegyzések", + "memoryEntriesSub": "Memóriában tárolt LRU", + "dbEntries": "Adatbázis-bejegyzések", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Gyorsítótár-találatok", + "cacheHitsSub": "összesen {total}", + "tokensSaved": "Megtakarított tokenek", + "tokensSavedSub": "Találatok alapján becsülve", + "hitRate": "Találati arány", + "performance": "Gyorsítótár teljesítménye", + "autoRefresh": "Automatikusan frissül {seconds} másodpercenként", + "hits": "Találatok", + "misses": "Hibák", + "total": "Összesen", + "behavior": "Gyorsítótár működése", + "behaviorDeterministic": "Csak a nem streamelt, temperature=0 értékű kérések kerülnek gyorsítótárazásra.", + "behaviorBypass": "Megkerülés a(z) {header} fejléccel.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "Alapértelmezett TTL: 30 perc. A(z) {envVar} segítségével konfigurálható.", + "idempotency": "Idempotenciaréteg", + "activeDedupKeys": "Aktív deduplikációs kulcsok", + "dedupWindow": "Deduplikációs időablak", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Nem sikerült törölni a gyorsítótárat.", + "unavailable": "A gyorsítótár nem érhető el", + "unavailableDesc": "Nem sikerült lekérni a gyorsítótár statisztikáit. Győződjön meg arról, hogy a kiszolgáló fut.", "loadingCacheAria": "Gyorsítótár betöltése", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Prompt-gyorsítótár (szolgáltatói oldali)", + "semanticCache": "Szemantikus gyorsítótár", + "promptCacheSectionDesc": "Megjeleníti a szolgáltatói oldali prompt-gyorsítótárazási tevékenységet a használati előzményekből, így látható, hol aktív a gyorsítótár-vezérlés, és milyen mértékű a bemenetek újrafelhasználása.", + "promptTrendDesc": "Óránkénti kérésszám, gyorsítótár-lefedettség és a gyorsítótárból olvasott adatok mennyisége az elmúlt 24 órában.", + "cachedRequests": "Gyorsítótárazott kérések", + "cachedRequests24h": "Gyorsítótárazott kérések (24 óra)", + "cacheHitRate": "Gyorsítótár-találati arány", + "cacheRate": "Gyorsítótárazási arány", + "cacheRateDesc": "az összes kérésből", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Prompt-gyorsítótár mérőszámai", + "withCacheControl": "Gyorsítótár-vezérléssel", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Gyorsítótár-újrafelhasználási arány", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Becsült költségmegtakarítás", + "lastUpdated": "Legutóbbi frissítés", + "hoursTracked": "nyomon követett órák", + "busiestHour": "Legforgalmasabb óra", + "peakCacheRate": "Legmagasabb gyorsítótárazási arány", + "trendHour": "Óra", + "activityVolume": "Aktivitás", + "requestsShort": "kérés", + "inputShort": "Bejövő", + "cachedShort": "Gyorsítótárazott", + "writeShort": "Írás", + "resetting": "Visszaállítás...", + "resetMetrics": "Mérőszámok visszaállítása", + "byProvider": "Szolgáltatónkénti bontás", + "providerCacheRateDesc": "Minden szolgáltató megjeleníti az összes bemeneti token, a gyorsítótárból olvasott token és a gyorsítótárba írt token számát, így ellenőrizheti az újrafelhasználási arányt a nyers összesítések alapján.", "provider": "Provider", - "requests": "Requests", + "requests": "Kérések", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Gyorsítótár trendje (24 óra)", + "peakCached": "Gyorsítótárazott csúcsérték", + "cached": "Gyorsítótárazva", + "overview": "Áttekintés", "tableProvider": "Szolgáltató", "tableModel": "Modell", "performanceTitle": "Teljesítmény", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "Az OmniRoute saját determinisztikus válasz-gyorsítótára. Ha engedélyezve van, az ismételt, nem streamelt, temperature=0 értékű kérések helyben kiszolgálhatók a felsőbb szintű szolgáltató elérése nélkül.", + "semanticCacheDisabledDesc": "A szemantikus gyorsítótár le van tiltva. Az OmniRoute kihagyja a válaszok helyi újrafelhasználását, amíg újra be nem kapcsolja azt a Beállításokban.", + "semanticEntriesDesc": "A SQLite-ban jelenleg tárolt, megőrzött szemantikus gyorsítótár-rekordok. A szolgáltatói oldali prompt-gyorsítótár tevékenysége itt nem szerepel.", + "searchEntries": "Bejegyzések keresése...", + "search": "Keresés", + "loading": "Betöltés...", + "entriesLoadError": "Nem sikerült betölteni a szemantikus gyorsítótár bejegyzéseit.", + "noEntries": "Nem találhatók gyorsítótár-bejegyzések", + "noPromptCacheData": "Még nem rögzítettek szolgáltatói oldali prompt-gyorsítótár-tevékenységet.", + "noTrendData": "Az elmúlt 24 órában nem rögzítettek prompt-gyorsítótár-tevékenységet.", + "signature": "Aláírás", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Létrehozva", + "expires": "Lejárat", + "actions": "Műveletek", + "deduplicatedRequests": "Duplikációmentesített kérések", + "savedCalls": "Megtakarított API-hívások", + "totalProcessed": "Összes feldolgozott kérés", + "disabled": "Letiltva", + "totalRequests": "Összes kérés", "reasoningCache": "Érvelés visszajátszása", "reasoningCacheDesc": "Megőrzi a modellgondolkodást a többfordulatú szerszámhívási folyamatokhoz", "reasoningEntries": "Aktív bejegyzések", @@ -10643,7 +10650,7 @@ "reasoningByProvider": "Szolgáltató által", "reasoningByModel": "Modell szerint", "reasoningRecentEntries": "Legutóbbi bejegyzések", - "reasoningToolCallId": "Tool Call ID", + "reasoningToolCallId": "Eszközhívás-azonosító", "reasoningChars": "Karakterek", "reasoningAge": "Életkor", "reasoningView": "Megtekintés", @@ -10659,7 +10666,7 @@ "reasoningClearError": "Nem sikerült törölni az érvelési gyorsítótárat", "reasoningNoData": "A gyorsítótárban még nincsenek érvelési bejegyzések. A bejegyzések akkor jelennek meg, amikor a gondolkodó modellek eszközhívást használnak.", "cachePerformanceRetry": "Próbálja újra", - "cachePerformanceHitRate": "Hit Rate", + "cachePerformanceHitRate": "Találati arány", "cachePerformanceAvgLatency": "Átl. késés (ms)", "cachePerformanceP95Latency": "p95 késés (ms)", "retry": "Próbálja újra", @@ -10669,12 +10676,12 @@ "minutesAgo": "{minutes} perce", "hoursAgo": "{hours} órája", "daysAgo": "{days} napja", - "entries": "Entries" + "entries": "Bejegyzések" }, "proxyConfigModal": { "levelGlobal": "Globális", "levelProvider": "Szolgáltató", - "levelCombo": "Combo", + "levelCombo": "Kombináció", "levelKey": "Kulcs", "levelDirect": "Közvetlen (proxy nélkül)", "titleGlobal": "Globális proxy konfiguráció", @@ -10776,7 +10783,7 @@ "saveConnection": "Kapcsolat Mentése", "gheDescription": "Írd be a GitHub Enterprise példányod alap URL-jét (pl. https://ghe.yourcompany.com).", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "GitHub Enterprise URL-címe", "gheUrlRequired": "A GitHub Enterprise URL megadása kötelező", "gitlabDuoSetupTitle": "GitLab Duo OAuth beállítása", "gitlabDuoSetupMessage": "A GitLab Duo OAuth nincs konfigurálva. Regisztráljon egy OAuth alkalmazást a {applicationsUrl} címen a {redirectUri} átirányítási URI-val és a \"{scopes}\" jogosultságokkal, majd állítsa be a {clientIdEnv} (és opcionálisan a {clientSecretEnv}) értékét, és indítsa újra.", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Csatlakoztassa a kurzor IDE-t", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Bejelentkezés a Cursorral", + "tabImport": "Token importálása", + "loginDescription": "Megnyitja a Cursor böngészős bejelentkezését. Dockerben is működik — hagyja jóvá a gazdagép böngészőjében, majd térjen vissza ide.", + "loginWithCursor": "Bejelentkezés a Cursorral", + "startingLogin": "Indítás…", + "waitingApproval": "Várakozás a Cursor-bejelentkezés jóváhagyására…", + "openUrlHint": "Ha a böngésző nem nyílt meg:", + "openLoginLink": "Bejelentkezési oldal megnyitása", + "cancelLogin": "Bejelentkezés megszakítása", "autoDetecting": "Tokenek automatikus felismerése...", "readingFromCursor": "Olvasás Cursor IDE-ből vagy cursor-agentből", "tokensAutoDetected": "A tokenek automatikusan felismerve a Cursor IDE-ből!", "cursorNotDetected": "A kurzor IDE nem észlelhető. Kérjük, manuálisan illessze be a tokent.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Dockerben fut? Inkább a Cursorral való bejelentkezést használja. Az IDE automatikus importálása és a cursor-agent általában nem érhető el a konténeren belül. Lásd: docs/providers/CURSOR-DOCKER.md.", "accessToken": "Hozzáférési token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Frissítési token", + "refreshTokenPlaceholder": "Opcionális — lehetővé teszi a token automatikus frissítését", "required": "*", "accessTokenPlaceholder": "A hozzáférési token automatikusan kitöltődik...", "machineId": "Gépazonosító", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "A tokenek automatikus észlelése sikertelen", "errorEnterToken": "Kérjük, adja meg a hozzáférési tokent", "errorImportFailed": "Az importálás sikertelen", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Nem sikerült elindítani a Cursor-bejelentkezést", + "errorLoginPoll": "A Cursor-bejelentkezés sikertelen", + "errorLoginTimeout": "A Cursor-bejelentkezés időtúllépés miatt megszakadt — próbálja újra" }, "pricingModal": { "title": "Árképzési konfiguráció", @@ -10843,9 +10850,9 @@ "selectProxy": "{name} kijelölése", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Korábbi adatok importálása", + "bulkAssign": "Tömeges hozzárendelés", + "addProxy": "Proxy hozzáadása", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Tesztelés", + "edit": "Szerkesztés", + "delete": "Törlés", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Sikertelen", "successRate": "{rate}% siker", "avgLatency": "{latency} ms átlagos", "assignmentsCount": "{count} feladat", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Javítás", "relayAuthMissing": "hitelesítés hiányzik", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Rotációs stratégia", "poolStrategyHint": "a round-robin sorban váltogatja a tagokat; a random egyenletesen választ; a sticky megtart egy tagot egy adott időablakig; a latency-optimized a leggyorsabbat választja a naplók alapján.", "poolStrategyFailed": "Nem sikerült frissíteni a rotációs stratégiát", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Körkörös", "strategyRandom": "Véletlenszerű", - "strategySticky": "Sticky", + "strategySticky": "Rögzített", "strategyLatency": "Késleltetésre optimalizált", "poolMembersLabel": "Készlet tagjai ({count})", "poolNoMembers": "Még nincsenek proxyk ebben a készletben.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# kilépési pontot} other {# kilépési pontot}} használt {connections, plural, one {# kapcsolat} other {# kapcsolat}} · egy kilépési ponton legfeljebb {max} · az elmúlt {hours} órában", + "poolEgressObservationEmpty": "Nem észlelhető forgalom az elmúlt {hours} órában", + "poolEgressObservationHint": "A proxynapló alapján, az időablakban számítva: a készlet tagjainál megfigyelt különböző kimenő IP-címek, valamint az ezeket használó OmniRoute-kapcsolatok. Az „egy kilépési ponton” az időablak egészére vonatkozik, nem egyidejű használatra. Az IP-címenkénti 429-es zárolás csak az azonos szolgáltatócsalád kapcsolatait szünetelteti.", "poolRemove": "Eltávolítás", "poolRemoveFailed": "Nem sikerült eltávolítani a proxyt a készletből", "poolAddLabel": "Proxy hozzáadása", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Végpont", + "provider": "Szolgáltató", + "model": "Modell", "accountKey": "Account Key", "autoAccounts": "Automatikus ({count} fiók)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Küldés", + "cancel": "Mégse", + "audioFile": "Hangfájl", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Összes törlése", + "request": "Kérés", + "response": "Válasz", + "transcription": "Átirat", + "copy": "Másolás", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "{count} kép generálva", "generatedImage": "Létrehozott kép {index}", - "save": "Save", + "save": "Mentés", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Válaszok", "completions": "Kiegészítések", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Beágyazások", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Moderálások", - "rerank": "Rerank", + "rerank": "Újrarangsorolás", "search": "Search", "webFetch": "Webes lekérés" }, "conversationalChat": "Beszélgetési csevegés", "clearChat": "Csevegés törlése", "typeMessagePlaceholder": "Írjon be egy üzenetet... (Shift+Enter az új sorhoz)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Csevegés", + "tabCompare": "Összehasonlítás", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Összeállítás", + "configPane": "Konfiguráció", + "systemPrompt": "Rendszerüzenet", + "systemPromptPlaceholder": "Segítőkész asszisztens vagy.", + "modelPlaceholder": "pl. openai/gpt-4o", + "endpointLabel": "Végpont", + "parametersLabel": "Paraméterek", + "collapseConfig": "Konfigurációs panel összecsukása", + "expandConfig": "Konfigurációs panel kibontása", + "temperature": "Hőmérséklet", + "maxTokens": "Tokenek maximális száma", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Jelenléti büntetés", + "frequencyPenalty": "Gyakorisági büntetés", "reasoningLabel": "Következtetés", "thinking": "Gondolkodás", "effort": "Erőfeszítés", "effortDefault": "Alapértelmezett", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Véletlenszerű (hagyja üresen)", + "presetsLabel": "Előbeállítások", + "loadPreset": "Előbeállítás betöltése", + "savePreset": "Előbeállítás mentése", + "noPresets": "Nincsenek előbeállítások", + "presetNamePlaceholder": "Előbeállítás neve", + "savingPreset": "Mentés…", + "nameRequired": "A név megadása kötelező", + "failedToSavePreset": "Nem sikerült menteni az előbeállítást", + "improvePrompt": "Prompt javítása", + "improvingPrompt": "Javítás…", + "improvePromptTitle": "Javítsa promptját MI segítségével", + "setModelFirst": "Először állítson be egy modellt", "setModelInConfigFirst": "Először állíts be egy modellt a Konfiguráció panelen.", "improvePromptFailed": "A prompt javítása sikertelen.", "improvePromptAria": "Prompt javítása MI segítségével", "confirmImprovePrompt": "Prompt javításának megerősítése", "improvePromptDescription": "Ez elküldi a jelenlegi rendszerpromptot a(z) modellnek egy javított verzió generálásához.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Ez a Konfigurációban beállított modell kvótáját fogja felhasználni.", + "improveConfirm": "Javítás", + "exportCode": "Kód exportálása", + "exportCodeTitle": "Kód exportálása", "exportShort": "Exportálás", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Nincs exportálható játszótér-állapot.", "closeExportModal": "Exportálási ablak bezárása", "close": "Bezárás", "exportRealKeyWarning": "Biztonsági figyelmeztetés: az exportálás blokkolva — valós API-kulcsot észleltünk a kimenetben. Kérjük, állítsa vissza az API-kulcsot, és próbálja újra.", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language} kód másolása", "loadingPresets": "Betöltés…", "loadPresetPlaceholder": "Sablon betöltése…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Másolás", + "copiedCode": "Másolva!", + "addModel": "+ Modell hozzáadása", + "runAll": "Összes futtatása", + "cancelAll": "Összes megszakítása", + "maxColumnsReached": "Legfeljebb {max} oszlop", + "modelPlaceholderCompare": "Modell (Cmd+K)…", "noModel": "Nincs modell", "statusLabel": "Állapot: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "Várakozás a válaszra…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "kliensoldali becslés", + "tokensLabel": "Tokenek", + "costLabel": "Költség", + "costEstimated": "(becsült)", "ttftTitle": "Első tokenig eltelt idő (kliensoldali becslés)", "tpsTitle": "Token másodpercenként (kliensoldali becslés)", "tokenCountsTitle": "Prompt tokenek ↑ / Befejezési tokenek ↓", "estimatedCostTitle": "Becsült költség (nem garantáltan pontos)", - "toolsLabel": "Tools", + "toolsLabel": "Eszközök", "toolsCount": "Eszközök ({count})", - "addTool": "Add tool", + "addTool": "Eszköz hozzáadása", "editTool": "{name} eszköz szerkesztése", "removeTool": "{name} eszköz eltávolítása", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Függvény neve", "toolNameRequiredPlaceholder": "Függvénynév *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Leírás (opcionális)", "toolParamsLabel": "Paraméterek (JSON-séma)", "toolParamsJsonSchema": "JSON-séma a paraméterekhez", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "A paramétereknek érvényes JSON-nak kell lenniük", + "structuredOutputLabel": "Strukturált kimenet", + "enableJsonMode": "JSON-mód engedélyezése", + "disableJsonMode": "JSON-mód letiltása", + "invalidJson": "Érvénytelen JSON", "jsonMode": "JSON mód", "jsonModeDescription": "Kikényszeríti a response_format: json_schema formátumot", "schemaName": "Séma neve", @@ -11125,7 +11132,7 @@ "jsonSchemaEditor": "JSON-séma szerkesztő", "schemaValidated": "Séma ellenőrizve", "validateSchema": "Séma ellenőrzése", - "seed": "Seed", + "seed": "Kezdőérték", "stopSequences": "Leállító szekvenciák", "stopSequencesPlaceholder": "pl. \"\\n\\n\" vagy \"END\"", "autoProvider": "Automatikus", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} oszlop", "addModelToCompare": "Modelloszlop hozzáadása az összehasonlításhoz", "modelsSimultaneously": "Legfeljebb {max} modell egyidejűleg", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Futtatás…", + "runLabel": "Futtatás", + "enterToolResult": "Adja meg az eszköz eredményét…", "build": { "step1Label": "Mit szeretne tesztelni?", "step2Label": "Konfigurálás", @@ -11207,7 +11214,7 @@ "play": "Lejátszás", "query": "Lekérdezés", "numResults": "Maximális találatszám", - "prompt": "Prompt", + "prompt": "Utasítás", "size": "Méret", "duration": "Időtartam", "question": "Kérdés", @@ -11237,7 +11244,7 @@ "searchResultFallback": "{number}. eredmény", "noKeysFound": "Nem találhatók API-kulcsok. Adjon hozzá egyet a Kulcsok menüpontban.", "exampleLabel": "Példa", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} bemeneti / {tokensOut} kimeneti token", "defaultKey": "(alapértelmezett)", "clear": "Törlés", @@ -11250,73 +11257,73 @@ "stop": "Leállítás" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "Rögzítés", + "paused": "Szüneteltetve", + "pipelineLogsOn": "Folyamatnaplók bekapcsolva", + "pipelineLogsOff": "Folyamatnaplók kikapcsolva", + "updatingPipelineLogs": "Folyamatnaplók frissítése...", + "updatePipelineFailed": "Nem sikerült frissíteni a folyamatnaplózást", + "capturePipeline": "Folyamat-adattartalmak rögzítése az új kérésekhez", + "searchPlaceholder": "Modellek, szolgáltatók, fiókok, API-kulcsok, kombinációk keresése...", + "allProviders": "Összes szolgáltató", + "allModels": "Minden modell", + "allAccounts": "Minden fiók", + "allApiKeys": "Minden API-kulcs", + "total": "Összesen", + "ok": "Sikeres", + "err": "Hiba", + "combo": "Kombinált", + "keys": "Kulcsok", + "shown": "Megjelenítve", + "sortNewest": "Legújabb", + "sortOldest": "Legrégebbi", + "sortTokensDesc": "Tokenek ↓", + "sortTokensAsc": "Tokenek ↑", + "sortDurationDesc": "Időtartam ↓", + "sortDurationAsc": "Időtartam ↑", + "sortStatusDesc": "Állapot ↓", + "sortStatusAsc": "Állapot ↑", + "sortModelAsc": "Modell A–Z", + "sortModelDesc": "Modell Z–A", + "sortLogs": "Naplók rendezése", + "refresh": "Frissítés", + "columnsLabel": "Oszlopok", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "MŰKÖDIK", + "semantic": "Szemantikus", + "upstream": "Felsőbb szolgáltató", + "semanticCacheHit": "Szemantikus gyorsítótár-találat (az OmniRoute szolgálta ki)", + "upstreamResponse": "Upstream-szolgáltató válasza", + "noApiKey": "Nincs API-kulcs", + "requestedRoutedTitle": "Kért: {requested}, átirányítva mint: {routed}", "statusFilters": { - "all": "All", + "all": "Összes", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Sikeres", + "combo": "Kombinált" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "Állapot", + "cacheSource": "Gyorsítótár forrása", + "model": "Modell", + "requested": "Kért", + "provider": "Szolgáltató", + "protocol": "Kérési protokoll", + "account": "Fiók", + "apiKey": "API-kulcs", + "combo": "Kombinált", + "tokens": "Tokenek", "compressed": "Tömörítés", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Időtartam", + "time": "Időpont", + "conversation": "Beszélgetés", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Naplók betöltése...", + "noLogs": "Még nincsenek naplók. Indítson néhány API-hívást, hogy itt megjelenjenek.", + "noMatchingLogs": "Nincsenek az aktuális szűrőknek megfelelő naplók.", + "callLogsInfo": "A hívásnaplók JSON-fájlokként is mentésre kerülnek a(z) {dataDir} helyre, és a rendszer a(z) {retentionDays} és {maxEntries} értékek alapján rotálja őket.", "loadMore": "Továbbiak betöltése", "loadingMore": "Továbbiak betöltése...", "correlationId": "Korelációs azonosító", @@ -11417,59 +11424,59 @@ "correlationId": "Korelációs azonosító", "correlationIdValue": "Korelációs azonosító: {id}", "detailedPayloadInfo": "Először engedélyezze a részletes naplózást, ha a négyfázisú kliens/szolgáltató payload nézetet szeretné az új kérésekhez.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Összes másolása", + "copiedAll": "Minden másolva" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", + "filterAll": "Összes", + "filterErrors": "Hibák", + "filterSuccess": "Sikeres", + "filterTimeout": "Időtúllépés", + "colStatus": "Állapot", "colProxy": "Proxy", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "Típus", + "colLevel": "Szint", + "colProvider": "Szolgáltató", + "colTarget": "Cél", + "colLatency": "Késleltetés", + "colClientIp": "Kliens IP-címe", + "colTime": "Időpont", + "recording": "Rögzítés", + "paused": "Szüneteltetve", + "searchPlaceholder": "Keresés gazdagép, szolgáltató, cél vagy IP-cím alapján...", + "allTypes": "Minden típus", + "allLevels": "Minden szint", + "allProviders": "Minden szolgáltató", + "total": "összesen", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "HIBA", + "timeoutShort": "IDŐTÚLLÉPÉS", + "direct": "közvetlen", + "newest": "Legújabb", + "oldest": "Legrégebbi", + "latencyDesc": "Késleltetés ↓", + "latencyAsc": "Késleltetés ↑", + "refresh": "Frissítés", + "columns": "Oszlopok", + "loadingProxyLogs": "Proxy naplóinak betöltése...", + "noProxyLogs": "Még nincsenek proxynaplók. Állítson be proxykat, és indítson API-hívásokat, hogy itt megjelenjenek.", + "noMatchingLogs": "Egyetlen napló sem felel meg a jelenlegi szűrőknek.", + "tlsFingerprint": "Chrome 124 TLS-ujjlenyomat", "colPublicIp": "Publikus IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "Beszéd", + "search": "Keresés", + "images": "Képek", + "chat": "Csevegés", + "music": "Zene", + "responses": "Válaszok", + "rerank": "Újrarangsorolás", + "video": "Videó", + "embeddings": "Beágyazások", + "transcription": "Átírás" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Futási környezet", + "description": "Valós idejű megfigyelhetőség — 3 rétegű ellenálló képesség + munkamenetek + kvótariasztások", + "pause": "Szüneteltetés", + "resume": "Folytatás", + "refreshNow": "Frissítés most", + "kpiSessions": "Munkamenetek", + "kpiCircuits": "Áramkörök", + "kpiCooldowns": "Várakozási idők", + "kpiLockouts": "Kizárások", + "hintStickyBound": "{count} rögzített hozzárendelésű", + "hintRecovering": "{count} helyreállóban", + "hintAllHealthy": "mind kifogástalan", + "hintOpen": "nyitott", + "hintConnsCooling": "kapcsolat lehűlőben", + "hintModelsBlocked": "blokkolt modellek", + "resilienceTitle": "Háromrétegű hibatűrés", + "resilienceSubtitle": "A dokumentált hibatűrési modellt tükrözi", + "providersHealthy": "A szolgáltatók {percent}%-a működik megfelelően", + "layer": "{n}. réteg", + "layer1Title": "Szolgáltatói áramkör-megszakítók", + "layer1Desc": "Leállítja a forgalmat a felsőbb szinten hibázó szolgáltatók felé", + "layer2Title": "Kapcsolati várakoztatások", + "layer2Desc": "Egy hibás fiók/kulcs kihagyása; a többi kapcsolat továbbra is kiszolgál", + "layer3Title": "Modellzárolások", + "layer3Desc": "Modellenkénti sebességkorlátozási zárolások; ugyanaz a kapcsolat továbbra is kiszolgál más modelleket", + "badgeAffectedOf": "{affected} / {total} érintett", + "badgeCooling": "{count} várakoztatva", + "badgeLocked": "{count} zárolva", + "emptyCircuits": "Még nincs aktív áramkör-megszakító", + "emptyCooldowns": "Nincs aktív kapcsolati várakoztatás", + "emptyLockouts": "Nincs modellzárolás", + "moreCooldowns": "+{count} további várakoztatás", + "moreLockouts": "+{count} további zárolás", + "feedTitle": "Élő eseményfolyam", + "feedSubtitle": "Utolsó {count} esemény", + "feedFilterAll": "Összes", + "feedFilterCircuits": "Áramkörök", + "feedFilterCooldowns": "Várakoztatások", + "feedFilterLockouts": "Zárolások", + "feedFilterSessions": "Munkamenetek", + "feedFilterQuotas": "Kvóták", + "feedClear": "Törlés", + "feedEmptyWaiting": "Várakozás eseményekre... (lekérdezés 5 másodpercenként)", + "feedEmptyFiltered": "Egy esemény sem felel meg ennek a szűrőnek", + "sessionsTitle": "Aktív munkamenetek", + "sessionsSubtitle": "Rögzítetten hozzárendelt kérés-ujjlenyomatok (élő)", + "sessionsActive": "{count} aktív", + "sessionsEmptyTitle": "Nincs aktív munkamenet", + "sessionsEmptyHint": "A munkamenetek akkor jelennek meg, amikor kérések haladnak át a proxyn", + "tblSession": "Munkamenet", + "tblAge": "Kor", + "tblIdle": "Inaktivitás", + "tblReqs": "Kérések", + "tblBoundTo": "Hozzárendelve", + "topApiKeys": "Legfontosabb API-kulcsok", + "quotaMonitorsTitle": "Kvótafigyelők", + "quotaMonitorsSubtitle": "Élő kvótaállapot fiókonkénti időablakban", + "openQuota": "Kvóta megnyitása", + "allQuotasHealthy": "Minden kvóta rendben", + "statusExhausted": "KIMERÜLT", + "statusAlerting": "RIASZTÁS", + "statusError": "HIBA", + "moreSuffix": "+{count} további" }, "quotaShare": { "weightPercent": "Súly %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Kvótamegosztás", + "description": "Szolgáltatói kvóták megosztása az API-kulcsok között százalékos korlátokkal", + "newPool": "Új készlet", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "A konfiguráció a localStorage-ban van mentve (a szerveren még nincs tárolva). A kérésenkénti korlátok betartatása még nincs bekötve a proxyfolyamatba. Ezen a képernyőn megtervezheti és vizualizálhatja a kvóta felosztását; a tényleges korlátozás egy későbbi verzióban, adatbázis-alapú tárolással és a felfelé irányuló hívások elfogásával válik elérhetővé.", + "kpiActivePools": "Aktív készletek", + "kpiKeysAllocated": "Hozzárendelt kulcsok", + "kpiAvgUnallocated": "Átlagosan fel nem osztott", + "kpiProvidersWithQuota": "Kvótával rendelkező szolgáltatók", + "emptyTitle": "Nincsenek beállított készletek", + "emptyDescription": "Hozzon létre egy készletet, amelyben API-kulcsokat rendelhet hozzá egy szolgáltató kvóta-időablakának százalékos felosztásához.", + "loading": "Betöltés…", + "removePool": "Készlet eltávolítása", + "removeConfirm": "Eltávolítja ezt a készletet?", + "pool": "Készlet", + "used": "felhasználva", + "allocationsCount": "Kiosztások ({count})", + "allocatedFree": "{allocated}% kiosztva · {free}% szabad", + "noAllocations": "Még nincsenek hozzárendelt kulcsok", + "capLabel": "korlát: {value}", + "notTrackedYet": "(még nincs nyomon követve)", + "policy": "Házirend", "apiKeyColumn": "API-kulcs", "weightColumn": "Súly", "fairShareShort": "igazságos", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "szigorú", + "policySoft": "rugalmas", + "policyBurst": "csúcsidőszaki", + "policyHardHint": "Blokkolás, amikor a kulcs kimeríti a keretét", + "policySoftHint": "Túllépés engedélyezése, csak riasztás", + "policyBurstHint": "Ideiglenes túllépés engedélyezése a szabad készlet terhére", + "editAllocations": "Kiosztások szerkesztése", + "newPoolTitle": "Új kvótakészlet", + "providerConnection": "Szolgáltatói kapcsolat (fiók)", + "selectConnection": "Válasszon kapcsolatot…", + "noEligibleConnections": "Nincsenek kvótaadatokkal rendelkező kapcsolatok. Először frissítse a /dashboard/quota oldalt.", + "quotaWindow": "Kvótaidőszak", + "selectWindow": "Válasszon időszakot…", + "alreadyUsedSuffix": "(már használatban)", + "windowReset": "Visszaállítás", + "duplicatePoolError": "Ehhez a kapcsolathoz és időszakhoz már létezik készlet", + "cancel": "Mégse", + "createPool": "Készlet létrehozása", + "editTitle": "Kiosztások szerkesztése", + "noKeysAdded": "Nincsenek kiosztott kulcsok. Adjon hozzá egyet alább.", + "totalLabel": "Összesen: {percent}%", + "totalExceeded": "⚠ meghaladja a 100%-ot", + "addKey": "+ Kulcs hozzáadása…", + "equalSplit": "Egyenlő elosztás", + "save": "Kiosztások mentése", "betaPreviewLabel": "Béta – UI előnézet.", "betaConfigSavedPrefix": "A konfiguráció mentésre kerül", "betaConfigSavedSuffix": "(még nem maradt fenn a szerveren). A kérésenkénti korlátozás végrehajtása még nincs bekötve a proxy folyamatba. Ezen a képernyőn megtervezheti és megjelenítheti a kvótafelosztást; A valódi végrehajtás egy jövőbeli iterációban fog landolni, DB-perzisztenciával és upstream híváselfogással.", @@ -11634,11 +11641,11 @@ "wizardStep3Label": "Kulcsok", "wizardStep1Title": "Válassza ki a szolgáltatói kapcsolatot", "wizardStep1Subtitle": "Válassza ki azt a szolgáltatói fiókot, amelyhez ez a készlet megosztja a kvótát, állítson be egy nevet és az alapértelmezett szabályzatot.", - "wizardStep2Title": "Configure quota dimensions", - "wizardStep2Subtitle": "Define the quota plan dimensions (unit, window, limit) for the chosen connection. Leave unchanged to keep current settings.", - "wizardStep3Title": "Allocate API keys", - "wizardStep3Subtitle": "Assign API keys to this pool with weight % allocations and optional caps.", - "wizardPoolNameLabel": "Pool name", + "wizardStep2Title": "Kvótadimenziók konfigurálása", + "wizardStep2Subtitle": "Határozza meg a kiválasztott kapcsolat kvótacsomagjának dimenzióit (egység, időszak, korlát). A jelenlegi beállítások megtartásához hagyja változatlanul.", + "wizardStep3Title": "API-kulcsok kiosztása", + "wizardStep3Subtitle": "Rendeljen API-kulcsokat ehhez a készlethez százalékos súlyozással és opcionális korlátokkal.", + "wizardPoolNameLabel": "Készlet neve", "wizardPoolNamePlaceholder": "Saját kvótapool", "wizardNext": "Tovább", "wizardBack": "Vissza", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Ez a csoport még tartalmaz poolokat — előbb rendeld át vagy töröld őket.", "ungroupedTitle": "Csoportosítatlan", "ungroupedHint": "Ezek a poolok nincsenek ismert csoporthoz rendelve. Szerkessz egy poolt, hogy áthelyezd egy valódi csoportba.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Nem sikerült eltávolítani ezt a készletet.", + "dismiss": "Bezárás" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Bővítmények", + "description": "Bővítmények telepítése és kezelése az OmniRoute funkcióinak kibővítéséhez", + "loading": "Bővítmények betöltése...", + "scanning": "Keresés...", + "scanForPlugins": "Bővítmények keresése", + "noPlugins": "Nincsenek telepített bővítmények", + "noPluginsDescription": "Helyezze a bővítménykönyvtárakat a ~/.omniroute/plugins/ könyvtárba, majd kattintson a Keresés gombra.", + "activate": "Aktiválás", + "deactivate": "Deaktiválás", + "uninstall": "Eltávolítás", + "uninstallConfirm": "Eltávolítja a(z) „{name}” bővítményt?", + "pluginScanComplete": "A bővítmények keresése befejeződött", + "pluginScanFailed": "A bővítmények keresése sikertelen", + "activated": "{name} aktiválva", + "deactivated": "{name} deaktiválva", + "activateFailed": "A(z) {name} aktiválása sikertelen", + "deactivateFailed": "A(z) {name} deaktiválása sikertelen", + "uninstalled": "{name} eltávolítva", + "uninstallFailed": "Nem sikerült eltávolítani: {name}", + "configure": "Konfigurálás: {name}", + "configurePlugin": "Konfigurálás", + "noConfigSettings": "Ehhez a bővítményhez nincsenek konfigurálható beállítások.", + "saving": "Mentés...", + "saveConfiguration": "Konfiguráció mentése", + "configurationSaved": "Konfiguráció mentve", + "saveConfigurationFailed": "Nem sikerült menteni a konfigurációt", + "pluginNotFound": "A bővítmény nem található", + "version": "Verzió", + "author": "Szerző", + "description_label": "Leírás", + "status": "Állapot", + "enabled": "Engedélyezve", + "disabled": "Letiltva", "installedTab": "Telepítve", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Piactér", "marketplaceUrlLabel": "Egyéni Marketplace URL", "marketplaceUrlPlaceholder": "Hagyd üresen a hivatalos Omniroute registry használatához", "saveMarketplaceUrl": "Mentés és újratöltés", @@ -11729,7 +11736,7 @@ "verified": "Ellenőrzött", "install": "Telepítés", "installedFromMarketplace": "A(z) {name} bővítmény telepítve!", - "hooks": "Hooks" + "hooks": "Hookok" }, "quotaPlans": { "title": "Csomagok és kvóták", @@ -12014,7 +12021,7 @@ "newToken": "Új közvetítő token", "createTitle": "Közvetítő token létrehozása", "nameRequired": "Név *", - "tokenDescription": "Description", + "tokenDescription": "Leírás", "descriptionPlaceholder": "Szerver nélküli funkcióimhoz", "maxPerMinute": "Max. kérés/perc", "maxPerDay": "Max. kérés/nap", @@ -12040,7 +12047,7 @@ "agentBridgeModeDesc": "Forgalom rögzítése az összes csatlakoztatott IDE agenttől", "customHostsMode": "Egyedi hostok", "customHostsModeDesc": "Konkrét hostok hozzáadása a lehallgatáshoz", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "HTTP-proxy", "httpProxyModeDesc": "A HTTP_PROXY környezeti változó használata", "systemWideMode": "Rendszerszintű", "systemWideModeDesc": "Az összes rendszerforgalom elfogása (haladó)", @@ -12051,13 +12058,13 @@ "profileCustom": "Egyéni", "profileAll": "Összes", "filterHost": "Host szűrése…", - "filterAgent": "Agent", + "filterAgent": "Ügynök", "filterStatus": "Állapot", "pauseBtn": "Szüneteltetés", "resumeBtn": "Folytatás", "clearBtn": "Kiürítés", "exportHar": ".har exportálása", - "recordSession": "REC", + "recordSession": "FELV", "stopSession": "Leállítás", "liveBadge": "élő", "offlineBadge": "offline", @@ -12091,7 +12098,7 @@ "llmApiKind": "API típusa", "llmModel": "Modell", "llmMessages": "Üzenetek", - "llmStream": "Stream", + "llmStream": "Adatfolyam", "llmMappedTo": "Leképezve:", "llmCostEstimate": "Becsült költség", "systemProxyExitWarning": "A rendszerszintű proxy továbbra is aktív — mégis elhagyja az oldalt?", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP ágensek", "phrase": "CLI-k, amelyeket az OmniRoute indít végrehajtási háttérprogramként (fordított folyamat)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "A legtöbb felhasználó figyelmen kívül hagyhatja ezt — csak akkor használja, ha egy integráció megköveteli.", "flow": "Kliens → OmniRoute → CLI indítása (stdio/ACP) → válasz", "seeOther": "Megtekintés →" } @@ -12355,7 +12362,7 @@ }, "omni-cli-tools": { "name": "CLI eszközök", - "description": "Manage CLI tool integrations exposed via the API. List, configure, and invoke CLI tool plugins that extend OmniRoute's automation surface." + "description": "Az API-n keresztül elérhető CLI-eszközintegrációk kezelése. Az OmniRoute automatizálási lehetőségeit bővítő CLI-eszközbővítmények listázása, konfigurálása és meghívása." }, "omni-tunnels": { "name": "Alagutak", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhookok", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Webhook-végpontok regisztrálása, listázása, tesztelése és eltávolítása. Eseményfeliratkozások (request.completed, request.failed, quota.exceeded stb.) konfigurálása és a kézbesítési újrapróbálkozások kezelése." }, "omni-mcp": { "name": "MCP-szerver", @@ -12390,11 +12397,11 @@ "description": "A fő OpenAI-kompatibilis inferencia-végpontok: csevegés-kiegészítések, beágyazások, képek, hang (TTS/STT), moderálások, újrarangsorolás és a Responses API. Az AI-ágensek elsődleges integrációs felülete." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Kiszolgálás", "description": "Az OmniRoute szerver indítása, leállítása és újraindítása a CLI-ből. Háttérfolyamat (daemon) mód, portkonfiguráció, automatikus helyreállítás, rendszertálca-integráció és a műszerfal megnyitásának gyorsbillentyűjének kezelése." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Állapot", "description": "A szerver állapotának, az összetevők státuszának és az élő metrikáknak az ellenőrzése a CLI-ből. Futtassa a `health`, `health components` és `health watch` parancsokat az áramkör-megszakítók és a szolgáltatók állapotának valós idejű műszerfalához." }, "cli-providers": { @@ -12470,7 +12477,7 @@ "description": "Futtassa a kezdeti beállítást, konfigurálja a globális CLI-beállításokat, kezelje a környezeti változókat, ellenőrizze a frissítéseket, és állítsa be az automatikus indítást a CLI setup és config parancsaival." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI: Ügynökkészség-gyűjtő", "description": "Észlelje a telepített CLI kódolóeszközöket (Claude Code, Codex, Cursor, Copilot, Cline és továbbiak), keressen a GitHubon hozzájuk illő agent skilleket, és telepítse őket az észlelt eszközökbe az OmniRoute beépített API-jain keresztül." }, "config-codex-cli": { @@ -12589,14 +12596,14 @@ "typeApikey": "API-kulcs", "sortTypeFirst": "Legegyszerűbb elöl", "sortTypeFirstHelp": "Csoportosítás a regisztrációs igény szerint (Nincs regisztráció → OAuth-bejelentkezés → API-kulcs), megtartva a minőségi sorrendet az egyes csoportokon belül", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Legmegbízhatóbb elöl", + "sortByReliabilityHelp": "A szolgáltatók rendezése a kiválasztott időszakban sikeres hívások aránya alapján. Azok a szolgáltatók, amelyeknél túl kevés hívás történt az arány megállapításához, megtartják a pontszám szerinti sorrendjüket a mért szolgáltatók alatt.", "typeLegend": "Nincs regisztráció = nulla beállítás · OAuth-bejelentkezés = bejelentkezés saját fiókkal · API-kulcs = saját kulcs használata vagy a szolgáltató ingyenes szintje", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Megbízhatóság", + "colReliabilityHelp": "Az elmúlt 24 órában a szolgáltató által ténylegesen megválaszolt hívások aránya. A gondolatjel azt jelenti, hogy túl kevés forgalmat kezelt az arány megállapításához.", + "reliabilitySample": "Az elmúlt {hours} órában {requests} hívásból {successes} sikeres volt", + "reliabilityTooFew": "Az elmúlt {hours} órában csak {requests} hívás történt – túl kevés az arány megállapításához", + "reliabilityNoTraffic": "Az elmúlt 24 órában nem rögzítettek hívást" }, "discovery": { "title": "Szolgáltató-felderítés", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar-támogató", + "description": "Élő OmniRoute Radar-támogatói hírfolyam ellenőrizve", + "criteria": "Ellenőrizzen egy aláírt, élő Radar-támogatói hírfolyamot." }, "first-token": { "name": "Első token", @@ -12796,7 +12803,7 @@ "weekly-warrior": { "name": "Heti harcos", "description": "Aktív 7 egymást követő napon át", - "criteria": "Use OmniRoute for 7 consecutive days." + "criteria": "Használja az OmniRoute-ot 7 egymást követő napon." }, "monthly-master": { "name": "Havi mester", @@ -12886,7 +12893,7 @@ "redact": "Maszkolás", "disabled": "Letiltva", "dual": "Kettős", - "alias": "Alias", + "alias": "Álnév", "canonical": "Kanonikus" }, "definitions": { @@ -12948,8 +12955,8 @@ "description": "Több kapcsolat engedélyezése minden egyes kompatibilitási csomóponthoz." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Környezetablak-ellenőrzések letiltása", + "description": "Az OmniRoute helyi környezetablak- és maximálisbemeneti-token-ellenőrzésének kihagyása közvetlen, egymodelles kéréseknél. A külső szolgáltatók továbbra is érvényesítik a tényleges korlátaikat. A prompttömörítés és a kimenetitoken-korlátok aktívak maradnak." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "A belső kommentár-fázis kimeneti elemeinek eltávolítása a Responses API átmenő adatfolyamaiból, mielőtt továbbítaná azokat az ügyfeleknek. Tiltsa le ezt a jelzőt a nyers upstream kommentárok fogadásához." @@ -12985,7 +12992,7 @@ "description": "Az adatfolyam-helyreállítás engedélyezése a válasz újbóli lekérésére és összefűzésére, miután a bájtok már elérték az ügyfelet." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "A folyamat közbeni folytatás biztonságossá tétele eszközhívások esetén: soha ne folytasson egy megszakadt streamet egy elküldött eszközhívás után (akár még folyamatban van, akár már befejeződött), és egyetlen üres folytatás után álljon le a teljes újrapróbálkozási keret felhasználása helyett." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Egyszeri átállás egy testvérkapcsolatra, ha az adatfolyam még az első hasznos keret előtt lezárul, és az ugyanazon a kapcsolaton végzett korlátozott újrapróbálkozás elfogyott. Használható testvérkapcsolat hiányában az eredeti early-EOF hiba kerül visszaadásra. Kikapcsolva: az early-EOF az újrapróbálkozás után végleges marad." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Hálózati hozzáférés engedélyezése a készségek homokozójában." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Kiszolgáló által kezelt eszközhívási ciklus", + "description": "A kiszolgáló által kezelt, nem streamelt eszközhívások folytatása addig, amíg a modell az ügyfél által használható választ nem ad." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "A Retry-After eredete", + "description": "Összesített 429/503-as nem elérhető válaszok esetén hagyja el a Retry-After értéket, ha nem ismert konkrét jövőbeli újrapróbálkozási időpont, ahelyett, hogy mesterséges 1 másodperces értéket küldene; adja hozzá az error.retry_after_provenance mezőt, és a kombinált kiürítési útvonalakon olvassa be a szöveges újrapróbálkozási utalásokat." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Védett prioritású infrastruktúra-leállások 502-ként", + "description": "503 helyett 502-es választ adjon, amikor egy csak kvóta esetén tartalékként használt prioritási cél olyan okból állítja le a kombinációt, amely bizonyíthatóan nem kvótával kapcsolatos: nyitott szolgáltatói megszakító vagy prediktív késleltetés miatti kihagyás." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Kombináció állapota", "callLogs": "Hívásnaplók", "costs": "Költségek", - "playground": "Playground", + "playground": "Játszótér", "nestedCombo": "Beágyazott kombináció", "modelTarget": "Modellcél", "weight": "{value}% súly", @@ -13133,49 +13144,49 @@ "enabled": "Engedélyezve", "disabled": "Letiltva", "dailySpend": "Napi költés", - "weeklySpend": "Weekly spend", - "dailyQuota": "Daily quota", - "weeklyQuota": "Weekly quota", - "fallbackRollingDays": "fallback: rolling {days} days", + "weeklySpend": "Heti költés", + "dailyQuota": "Napi kvóta", + "weeklyQuota": "Heti kvóta", + "fallbackRollingDays": "tartalék: gördülő {days} nap", "fallbackRollingDaysShort": "Fallback rolling {days} nap", - "resetDueNow": "reset due now", + "resetDueNow": "visszaállítás esedékes", "resetsInHours": "visszaáll {count} óra múlva", "resetsInDays": "visszaáll {count} nap múlva", - "saveFailed": "Failed to save usage limits", - "saving": "Saving...", - "saveQuota": "Save quota", - "loadUsdCostsFailed": "Failed to load USD costs", - "usdCost": "USD Cost", - "close": "Close", - "loadingUsdCosts": "Loading USD costs", - "used": "Used", - "quotaUsed": "Quota used", - "estimatedFullQuota": "Est. 100%", - "rows": "Rows", - "window": "Window", - "unknown": "unknown", - "fromRecordedReset": "From recorded {quota} reset", - "fromObservedReset": "From observed {quota} reset", - "fromReset": "From {quota} reset", - "quotaEstimator": "Quota estimator", - "noApiKeyUsage": "No API key usage in this provider window.", - "requestTokenCounts": "{requests} requests · {tokens} tokens", - "noUsdLimit": "No USD limit" + "saveFailed": "A használati korlátok mentése sikertelen", + "saving": "Mentés...", + "saveQuota": "Kvóta mentése", + "loadUsdCostsFailed": "Az USD-költségek betöltése sikertelen", + "usdCost": "USD-költség", + "close": "Bezárás", + "loadingUsdCosts": "USD-költségek betöltése", + "used": "Felhasználva", + "quotaUsed": "Felhasznált kvóta", + "estimatedFullQuota": "Becs. 100%", + "rows": "Sorok", + "window": "Időablak", + "unknown": "ismeretlen", + "fromRecordedReset": "A rögzített {quota} visszaállítás alapján", + "fromObservedReset": "A megfigyelt {quota} visszaállítás alapján", + "fromReset": "A(z) {quota} visszaállítás alapján", + "quotaEstimator": "Kvótabecslő", + "noApiKeyUsage": "Ebben a szolgáltatói időablakban nem volt API-kulcs-használat.", + "requestTokenCounts": "{requests} kérés · {tokens} token", + "noUsdLimit": "Nincs USD-korlát" }, "freeBudget": { - "title": "Free-token budget", + "title": "Ingyenestoken-keret", "remaining": "{remaining} maradt · {percent}% a(z) {total} értékből", - "steadyMonth": "Steady / month", - "firstMonth": "First month (+ credits)", - "usedThisMonth": "Used this month", - "segmentHint": "Each segment = one free pool · pool-deduped, honest counting (no inflated rate-limit ceilings).", + "steadyMonth": "Állandó / hónap", + "firstMonth": "Első hónap (+ kreditek)", + "usedThisMonth": "Felhasználva ebben a hónapban", + "segmentHint": "Minden szegmens egy ingyenes készletet jelöl · készletenként deduplikált, valós számlálás (felfújt sebességkorlát-plafonok nélkül).", "boost": "Oldjon fel további ~{tokens}/hó-t egy egyszeri 10 dolláros OpenRouter feltöltéssel (50 → 1000 req/day)", "uncapped": "Tartósan ingyenes, nincs közzétett korlát (sebességkorlátozott) — valós hozzáférés, nem számít bele a főcímbe:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/hó további keret érhető el regionális személyazonosság-ellenőrzéssel (pl. szárazföldi kínai valódi névvel történő ellenőrzéssel) — valós kvóta, amely nem szerepel a kiemelt értékben:", "tosRestricted": "{count, plural, one {# modell} other {# modell}} ÁSZF-korlátozottként megjelölve — Ön dönt", - "provider": "Provider", - "model": "Model", - "modelName": "Model name", + "provider": "Szolgáltató", + "model": "Modell", + "modelName": "Modell neve", "type": "Típus", "tokensMonth": "Token/hó", "credit": "{tokens} kredit", @@ -13230,7 +13241,7 @@ }, "remainingSeconds": "hátralévő {seconds} mp", "errorCode": "kód {code}", - "applying": "Applying...", + "applying": "Alkalmazás...", "issue": { "circuitOpenTitle": "A szolgáltató megszakítója nyitva van", "circuitOpenRecommendation": "Ellenőrizze a felsőbb szintű helyreállást, majd állítsa alaphelyzetbe a szolgáltató megszakítóját, vagy várja meg az újrapróbálkozási időablakot.", @@ -13270,80 +13281,80 @@ "viewFullHistory": "Teljes előzmények megtekintése a GitHubon" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "Következtetési útválasztási szabályzatok", + "apiKeyTitle": "Következtetési útválasztás ehhez az API-kulcshoz", + "subtitle": "Irányítsa át a modelleket és a következtetési ráfordítást kliensoldali támogatás nélkül. Ha egyik szabály sem illeszkedik, a kérések változatlanok maradnak.", + "loadError": "A következtetési szabályokat nem sikerült betölteni.", + "saveError": "A szabály érvénytelen, vagy nem sikerült menteni.", + "saved": "A következtetési szabály mentve.", + "deleteConfirm": "Törli ezt a következtetési szabályt?", + "deleteError": "A következtetési szabályt nem sikerült törölni.", + "empty": "Nincsenek beállítva egyező következtetési szabályok.", + "all": "Összes", + "any": "Bármely", + "enabled": "Engedélyezve", + "disabled": "Letiltva", + "filterSearch": "Szabályok keresése", + "filterScope": "Szűrés hatókör szerint", + "filterStatus": "Szűrés állapot szerint", + "allModels": "összes modell", + "keepModel": "Modell megtartása", + "otherModel": "Másik modell", + "combo": "Kombináció", + "priorityShort": "prioritás: {value}", + "toggleAria": "{name} engedélyezése", + "edit": "Szerkesztés", + "delete": "Törlés", + "name": "Név", + "description": "Leírás", + "scopeLabel": "Hatókör", + "apiKey": "API-kulcs", + "sourceCombo": "Forráskombináció", + "connection": "Kapcsolat", + "sourceModel": "Forrásmodell vagy helyettesítő karakter", + "sourceModelOptional": "Üres = minden modell", + "sourceModelExample": "pl. gpt-5*", + "sourceEffort": "Forrás számítási erőfeszítése", + "missing": "Nincs megadva", + "signalOnly": "Nem diszkrét következtetési jel", + "requestTags": "Kéréscímkék", + "requestTagsExample": "kódolás, belső", + "tagMode": "Címkeegyeztetés", + "effortMode": "Erőfeszítési mód", + "targetEffort": "Cél számítási erőfeszítése", + "routingTarget": "Útválasztási cél", + "targetModel": "Célmodell", + "targetCombo": "Célkombináció", + "budgetAction": "Gondolkodási keret", + "budgetTokens": "Tokenkeret", + "priority": "Prioritás", + "saveChanges": "Módosítások mentése", + "add": "Szabály hozzáadása", + "cancel": "Mégse", + "simulateTitle": "Szabály szimulálása", + "model": "Modell", + "effort": "Erőfeszítés", + "transport": "Átvitel", + "simulate": "Szimuláció upstream nélkül", + "extendedComboWarning": "A Max/Ultra támogatását az útválasztás során minden kombinációs célnál külön ellenőrizzük.", + "extendedUnknownWarning": "Adjon meg egy célmodellt a Max/Ultra támogatásának ellenőrzéséhez.", + "extendedUnsupportedWarning": "A Max/Ultra támogatása csak a megfelelő Codex GPT-5.6 modelleknél ismert. Az ismeretlen egyéni modelleket a szerver figyelmeztetéssel elfogadja.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "Globális", + "apiKey": "API-kulcs", + "combo": "Kombináció", + "model": "Modell", + "connection": "Kapcsolat" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Öröklés a klienstől", + "default": "Alapértelmezett használata", + "force": "Kényszerítés" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Megőrzés", + "remove": "Eltávolítás", + "set": "Rögzített érték beállítása" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "Élő (valós idejű)", "tierCommunity": "Közösségi (30 napos késleltetés)", "activateTitle": "Radar aktiválása", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Hasonlítsa össze a Community és az élő hozzáférést, ismerje meg, milyen adatokat cserél a telepítése, majd válassza ki, hogyan szeretné aktiválni a Radart.", + "accessScaleTitle": "A Radar-hozzáférés megismerése aktiválás előtt", + "accessScaleIntro": "A Radar nem végez hálózati kommunikációt, amíg ehhez hozzá nem járul. A szabályok áttekintése után válassza a Community hozzáférést, vagy aktiváljon egy személyes támogatói kulcsot.", + "accessCommunityRule": "Community — nem szükséges kulcs: a teljes katalógus 30 napos késleltetéssel.", + "accessSingleUseRule": "Csillagozás + követés — miután a GitHub OAuth mindkettőt ellenőrizte, GitHub-fiókja egyszeri hozzáférést kap az élő katalógushoz; ezt követően a hozzáférés visszaáll Community szintre. Ez az egyszeri hozzáférés az adott fiók számára nem adható ki újra.", + "accessContributorRule": "Közreműködők — az egyesített PR-ek, commitok és módosított sorok kizárólag a heti rangsort határozzák meg. Az első 10 helyezett 365 napot, a 11–100. helyezettek 90 napot kapnak; a Top 100-on kívüli közreműködők a PR-ek számától függetlenül nem kapnak hozzáférést. A rangsorból való kikerülés soha nem rövidíti le a már megítélt időszakot.", + "accessSupporterRule": "Támogatók — az egyszeri vásárlások 6 hónapos, 1 éves vagy élethosszig tartó hozzáférést biztosítanak automatikus megújítás nélkül. A vásárlások, adományok, közreműködői időszakok és kézi jóváírások összeadódnak; az élethosszig tartó hozzáférés mindig elsőbbséget élvez.", + "accessUseTitle": "Személyes használat, helyreállítás és felülvizsgálat", + "accessInstallationRule": "Személyes licenc — a kulcs egyszerre egy aktív telepítésen használható. Az OmniRoute nem készít hardver-ujjlenyomatot. Helyreállításkor az elveszett kulcsot visszavonjuk és lecseréljük, a lejárati ideje azonban nem indul újra.", + "accessAbuseRule": "Visszaélési felülvizsgálat — 24 órán belül a 4. különböző IP-cím csupán kézi felülvizsgálati jelzést hoz létre; a kulcsot soha nem tiltja le vagy vonja vissza automatikusan.", + "accessOffersRule": "Az élő ajánlatokat kézzel válogatjuk, és azok módosulhatnak vagy lejárhatnak.", + "privacyTitle": "Milyen adatokat cserél a Radar", + "privacyDownloadsRule": "Letöltések — a telepítése kriptográfiailag aláírt katalógus- és ajánlási metaadatokat kap; egy érvényes élő kulcs az aláírt ajánlatokat és az Intelt is feloldja.", + "privacySendsRule": "Küldött adatok — a szerveroldali szinkronizálás Bearer tokenként küldi el a támogatói kulcsot, a HTTPS-infrastruktúra pedig megkapja a kapcsolat IP-címét. A feedkérések elszámolása egyik értéket sem tárolja nyers formában: kulcshash-eket, összesített használati adatokat és a visszaélések felülvizsgálatához naponta változó, csonkolt IP-HMAC-ot őriz meg.", + "privacyNeverRule": "Soha nem gyűjtött adatok — a promptokat, válaszokat, beszélgetéseket, szolgáltatói hitelesítő adatokat, modellforgalmat, rendelkezésre állási időt, késleltetést és a helyi szolgáltatói konfigurációt a rendszer soha nem küldi el a Radarnak.", + "activateButton": "Community aktiválása", "activating": "Aktiválás...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Már rendelkezik támogatói kulccsal?", + "keyInvalidFormatError": "Érvénytelen kulcsformátum. A kulcsnak „omr_” előtaggal kell kezdődnie, amelyet 40 hexadecimális karakter követ.", + "activateWithKeyButton": "Támogatói hozzáférés aktiválása", + "changeKeyButton": "Kulcs módosítása", + "claimSectionTitle": "Még nincs támogatói kulcsa?", + "contributorButton": "Közreműködő vagyok", + "contributorHint": "A GitHub OAuth ellenőrzi az aktuális heti rangsort: az első 10 helyezett 365 napot, a 11–100. helyezettek pedig 90 napot kapnak. A PR-ek száma önmagában soha nem biztosít hozzáférést a Top 100-on kívül.", + "supporterButton": "A projekt támogatása", + "supporterHint": "Az egyszeri 6 hónapos, 1 éves és élethosszig tartó lehetőségek nem újulnak meg automatikusan; a jogosultsági időszakok összeadódnak, az élethosszig tartó hozzáférés pedig elsőbbséget élvez.", "colProvider": "Szolgáltató", "colModel": "Modell", "colQuota": "Kvóta", + "colLimits": "Sebességkorlátok", + "trainsOnPrompts": "Promptokon tanít", + "trainsOnPromptsHelp": "A szolgáltató feltételei szerint az elküldött promptokat felhasználhatja tanításhoz. Az e jelvény nélküli modellek szolgáltatói vagy kijelentik, hogy nem teszik ezt, vagy nem dokumentálják — a kijelentés hiánya nem jelent garanciát.", + "limitsUnknownHelp": "A korlátokat kizárólag a Radar feed jelenti; ehhez a bejegyzéshez nincsenek közzétett korlátok", + "contextUnknownHelp": "A kontextusablak mérete ennél a bejegyzésnél ismeretlen", + "capabilityUnknownHelp": "A hírcsatorna nem jelentette ezt a képességet", "colContext": "Kontextus", "colCapabilities": "Képességek", "colTos": "ToS Kockázat", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "új", "setupGuide": "Beállítási útmutató", "disabledByFeed": "A Radar feed letiltotta", "capTools": "Eszközök", "capVision": "Látás", "capThinking": "Gondolkodás", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalógus", + "freeCreditsTab": "Ingyenes kreditek", + "freeCreditsSubtitle": "A Radar által nyomon követett szolgáltatók ajánlói linkjei — használatuk nem jár többletköltséggel, és segítik az OmniRoute támogatását.", + "fixedLinksEmpty": "Még nincsenek elérhető ajánlói linkek. Szinkronizálja a Radart a frissítések ellenőrzéséhez.", + "requiredActionLabel": "Teendő:", + "claimButton": "Kreditek igénylése", + "campaignsTitle": "Időszakos kampányok", + "campaignsEmpty": "Jelenleg nincsenek aktív kampányok — nézzen vissza később.", + "campaignsUpsellCommunity": "Az időszakos kampányok támogatói extrák. Az oldalon található összes állandó link továbbra is mindenki számára ingyenes.", + "campaignsValidUntil": "Érvényes eddig: {date}", + "colActions": "Műveletek", + "localBadge": "helyi", + "editModel": "Szerkesztés", + "saveModel": "Mentés", + "cancelEdit": "Mégse", + "resetModel": "Helyi módosítások visszaállítása", + "hideModel": "Elrejtés", + "restoreModel": "Visszaállítás", + "hiddenModelsTitle": "Rejtett modellek", + "modelDisplayName": "Helyi megjelenítési név", + "modelEnabled": "Helyileg engedélyezve", + "localStateSaveFailed": "Nem sikerült menteni a Radar helyi beállításait", + "guidedCombos": "Irányított kombinációk", + "offers": "Ajánlatok", + "intel": "Információk" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar irányított kombinációk", + "subtitle": "Hozzon létre prioritásos tartalékokat a Radar által összeválogatott, egyenértékű ingyenes modellekből.", + "backToRadar": "Vissza a Radarhoz", + "loading": "Kombinációs javaslatok betöltése...", + "familyLabel": "Modellcsalád", + "modelsLabel": "Prioritási sorrend", + "strategyReason": "A prioritás először a legnagyobb rendszeresen megújuló ingyenes keretet használja, majd szükség esetén az aktív szolgáltatókhoz nyúl tartalékként.", + "generateButton": "Kombináció létrehozása", + "generating": "Létrehozás...", + "alreadyCreated": "Már létrehozva", + "created": "Kombináció létrehozva", + "noSuggestions": "Jelenleg egyetlen jogosult modellcsalád sem rendelkezik aktív kapcsolattal legalább két szolgáltatóhoz.", + "catalogRequired": "Először szinkronizálja a Radar katalógusát a válogatott modellcsaládok betöltéséhez.", + "loadFailed": "Nem sikerült betölteni a Radar kombinációs javaslatait.", + "createFailed": "Nem sikerült létrehozni a kombinációt. Ellenőrizze a szolgáltatói kapcsolatait, majd próbálja újra." }, "radarSetupPage": { "title": "Szolgáltató beállítása", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "Kapcsolat Ellenálló Képesség", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "A kapcsolatai automatikusan helyreállnak", + "reassuranceDetail": "Általában nincs szükség beavatkozásra. Az OmniRoute hibák után átmenetileg pihenteti a kapcsolatot, majd biztonságosan újrapróbálkozik.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Kérések küldhetők", + "coolingDown": "Hamarosan újrapróbálkozik", + "lockedOut": "Beavatkozást igényel" }, "table": { "status": "Állapot", @@ -13551,11 +13562,11 @@ "connectionId": "Kapcsolat", "authType": "Hitelesítés", "backoffLevel": "Visszalépés", - "cooldown": "Cooldown", + "cooldown": "Várakozási idő", "lastError": "Utolsó Hiba", "lockouts": "Zárolások", "healthy": "Egészséges", - "coolingDown": "Cooldown", + "coolingDown": "Várakozási idő", "circuitOpen": "Áramkör Nyitva", "recovering": "Helyreáll", "degraded": "Leromlott", @@ -13589,7 +13600,7 @@ "detail": { "title": "Kapcsolat Részletei", "metadata": "Metaadatok", - "cooldown": "Cooldown", + "cooldown": "Várakozási idő", "lastError": "Utolsó Hiba", "breaker": "Megszakító", "lockouts": "Modell Zárolások", @@ -13598,7 +13609,7 @@ "remaining": "Hátralévő", "noLockouts": "Nincs aktív zárolás", "provider": "Szolgáltató", - "id": "ID", + "id": "Azonosító", "authType": "Hitelesítés Típusa", "priority": "Prioritás", "isActive": "Aktív", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Elutasítja a kéréseket a kiszállítás előtt, amikor a célmodell hiányzik a szükséges képességekből (látás, eszközök, strukturált kimenet, kontextusablak). Védi a közvetlen, egy szolgáltatótól érkező kéréseket, amelyek megkerülik a kombinált réteg kompatibilitási szűrőt.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Az OmniRoute helyi kontextusablak- és maximálisbemeneti-token-ellenőrzésének kihagyása közvetlen, egyetlen modellt használó kéréseknél. A külső szolgáltatók továbbra is érvényesítik a tényleges korlátaikat. A prompttömörítés és a kimeneti tokenek korlátozása aktív marad.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "A keresési statisztikák és a legutóbbi keresések csak azokat a szolgáltatókat veszik figyelembe, amelyek még aktív kapcsolattal rendelkeznek (a kulcs nélküli szolgáltatók, például a duckduckgo-free, mindig beleszámítanak). Kikapcsolt állapotban minden megőrzött keresési sor megmarad szolgáltatói azonosítóval.", "publicSystem": { "notFound": { "title": "Az oldal nem található", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "Karbantartási Információ", "service": "Szolgáltatás", "unknown": "ismeretlen", - "notAvailable": "n/a", + "notAvailable": "n. a.", "providersTracked": "Követett Szolgáltatók", "circuitBreakerState": "Szolgáltató Áramkör Megszakító Állapot", "lastUpdate": "Utolsó frissítés: {timestamp}", @@ -13857,7 +13868,7 @@ "orPasteManually": "vagy illessze be a tokent manuálisan", "manualInstructions": "Jelentkezz be a solo.trae.ai oldalra, nyisd meg a DevTools → Hálózatot, küldj el bármilyen csevegési üzenetet, és másold ki a JWT-t a Authorization: Cloud-IDE-JWT {tokenPlaceholder} kérés fejlécéből. A JWT élettartama körülbelül 14 nap. Az opcionális azonosító mezők a common_params mezőből származnak ugyanabban a kérés törzsben.", "accessTokenLabel": "Hozzáférési Token (Cloud-IDE-JWT)", - "webId": "Web ID", + "webId": "Webes azonosító", "optional": "opcionális", "bizUserId": "Biz Felhasználói Azonosító", "userUniqueId": "Felhasználói Egyedi Azonosító", @@ -14070,11 +14081,11 @@ "actionApprove": "Terv jóváhagyása", "actionCancel": "Mégse", "actionSeeInGraph": "Megtekintés a grafikonon", + "actionRepeat": "Ismétlés", "actionDone": "Művelet végrehajtva", "actionFailed": "A művelet sikertelen: {error}", "detailFailed": "A részletek betöltése sikertelen: {error}", "mirroredInA2A": "Tükrözve az A2A-ban", - "actionRepeat": "Ismétlés", "repeatConfirm": "Kattintson újra a megerősítéshez", "repeatDone": "Új futás létrehozva", "repeatUnavailable": "Az eredeti bemenet nem érhető el" @@ -14088,57 +14099,57 @@ "networkError": "Hálózati hiba — nem sikerült frissíteni a szolgáltató láthatósági beállítását" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", + "title": "Támogatói ajánlatok", + "subtitle": "Hivatalos kedvezmények, jóváírások, próbaidőszakok és ellenőrzött partneri előnyök a Radartól.", + "backToRadar": "Vissza a Radarhoz", + "loading": "Ajánlatok betöltése...", + "refresh": "Ajánlatok frissítése", + "refreshing": "Frissítés...", + "loadFailed": "Nem sikerült frissíteni az ajánlatokat. A legutóbbi ellenőrzött helyi gyorsítótár megmaradt.", + "empty": "Jelenleg nincsenek aktív ajánlatok.", + "keyRequiredTitle": "Támogatói kulcs szükséges", + "keyRequiredDescription": "Az ajánlatok a Radar élő előnyei. Adjon hozzá egy meglévő támogatói kulcsot a Radar képernyőn, igazolja közreműködői státuszát, vagy támogassa a projektet egy kulcs megszerzéséhez.", + "contributorButton": "Közreműködő vagyok", + "supporterButton": "A projekt támogatása", "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "officialBadge": "Hivatalos", + "conditionsLabel": "Feltételek:", + "validUntil": "Érvényes eddig: {date}", + "noExpiry": "Nincs bejelentett lejárati idő", + "openOffer": "Ajánlat megtekintése", + "trialDays": "{days, plural, one {# nap} other {# nap}}" }, "radarIntelPage": { "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "subtitle": "A Radar saját ELO-rangsorai és a katalógus tényszerű változásai.", + "backToRadar": "Vissza a Radarhoz", + "loading": "Intel betöltése...", + "refresh": "Intel frissítése", + "syncing": "Frissítés...", + "loadFailed": "Nem sikerült frissíteni az Intelt. Megtartottuk a legutóbb ellenőrzött helyi gyorsítótárat.", + "empty": "Még nem érhető el ellenőrzött Intel-pillanatkép.", + "supporterBadge": "Radar-támogató", + "methodology": "Módszertan", + "eloMethod": "ELO, kezdeti érték: {initial}, K={factor}", + "freshness": "A katalógus frissessége", + "ageDays": "{days, plural, one {# napos} other {# napos}}", + "trend": "Katalógustrend", + "modelDelta": "{current} modell, +{added} / -{removed}", + "ranking": "Modellek rangsora", + "noRankings": "Még nem állnak rendelkezésre megerősített összehasonlítások.", + "model": "Modell", + "category": "Kategória", + "rating": "Értékelés", + "matches": "Párosítások", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Friss", + "aging": "Öregedő", + "stale": "Elavult" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Növekvő", + "stable": "Stabil", + "shrinking": "Csökkenő" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "A kérés meghaladja a szolgáltató kontextusablakát" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "A Cheaper Inference az OmniRoute nyílt forráskódú barátja", + "description": "Költség alapján rangsoroló átjáró, amely több tucat élvonalbeli modellt kínál egyetlen, OpenAI-kompatibilis végponton keresztül — minden kérést a legolcsóbb megfelelő szolgáltatóhoz irányítva, soha nem haladva meg a listaárat.", + "cta": "API-kulcs beszerzése", + "partnerLinkNote": "Partnerlink", + "dismissAriaLabel": "Bezárás" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Letiltja a gondolkodási szint változatainak (pl. -low, -medium, -high) létrehozását a /v1/models katalógusban." } diff --git a/src/i18n/messages/hy.json b/src/i18n/messages/hy.json index 2be3692da6..53ddf911b5 100644 --- a/src/i18n/messages/hy.json +++ b/src/i18n/messages/hy.json @@ -992,6 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Հրապարակել claude/<provider>/<model> հայելային նույնացուցիչները /v1/models-ում, որպեսզի Claude Code դարպասի մոդելների հայտնաբերման ցանկում ցուցադրվեն ոչ Claude մոդելները։ Զգուշացում․ գլոբալ միացնելու դեպքում կրկնապատկում է կատալոգի գրառումները բոլոր հաճախորդների համար։", "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> դարպասային այլանունների գլխավոր անջատիչը։ Միացված (լռելյայն)․ /v1/models-ը յուրաքանչյուր համապատասխան, մտածելու ունակ Claude մոդելի համար հրապարակում է առանց մտածողության տարբերակ, իսկ հարցման մեջ ուղարկված no-think/ նույնացուցիչը վերադարձվում է իրական մոդելին՝ դատողությունն անջատված։ Անջատված․ տարբերակներ չեն հրապարակվում, իսկ no-think/ նույնացուցիչը դիտարկվում է ինչպես ցանկացած այլ անհայտ մոդելի նույնացուցիչ։ Քանի դեռ սա միացված է, յուրաքանչյուր մոդելի ModelSpec.noThinkingAlias ընտրովի միացման/անջատման կարգավորումը շարունակում է գործել։", "featureFlagChatVirtualLanesEnabledDescription": "Միացնել ըստ վարձակալի հարմարվողական վիրտուալ ընդունման ուղիները մատակարարին ուղարկելու համար (#9654)․ մեկ վարձակալի հարցումների կտրուկ աճն այլևս չի առաջացնում 503 մեկ այլ վարձակալի համար։ OMNIROUTE_CHAT_VIRTUAL_LANES միջավայրի փոփոխականը գերակայում է կառավարման վահանակի այս վերասահմանմանը․ փոփոխություններն ուժի մեջ են մտնում սերվերը վերագործարկելիս։", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Վահանակի մատակարարների էջերում «Անվճար» նշանը ցուցադրել միայն մատակարարի կողմից հաստատված ազդանշանների դեպքում․ այլևս չօգտագործել ցուցադրվող անվան վրա հիմնված մոտավոր որոշումը, ոչ բուլյան free դաշտերը և փաստաթղթավորված անվճար մակարդակ չունեցող գրանցված մատակարարների :free վերջածանցները։ Անջատված լինելու դեպքում պահպանվում է նշանի ցուցադրման նախկին կանոնը։", + "featureFlagProxySkipRecentlyFailedDescription": "Պրոքսի փուլերը և opencode-ի՝ ըստ հաշվի ռոտացիան դադարում են կրկին տրամադրել հենց նոր ձախողված պրոքսին (մերժված TCP ստուգում կամ դրա միջոցով ստացված 429)՝ յուրաքանչյուր գործընթացի համար սահմանված ժամանակահատվածով, որը յուրաքանչյուր կրկնության դեպքում կրկնապատկվում է՝ մինչև առավելագույն սահմանաչափը։ Պրոքսիի որևէ կարգավիճակ չի գրանցվում․ երբ բոլոր թեկնածուները մի կողմ են դրված, ընտրությունը մնում է անփոփոխ։ Լռելյայն անջատված է․ ընտրության հերթականությունը ճշգրտորեն համապատասխանում է սովորական ռոտացիային։", + "featureFlagProxyPoolEgressObservationDescription": "Վահանակում՝ պրոքսի փուլի տակ, ցույց տալ, թե վերջին 24 ժ-ի ընթացքում քանի դիտարկված ելքային IP է սպասարկել դրա անդամներին, քանի միացում է օգտագործել դրանք, և մեկ IP-ի հետևում առավելագույնը քանիսն է դիտվել։ Միայն կարդալու համար է, հաշվարկվում է պրոքսիի մատյանից և երբեք չի օգտագործվում երթուղավորման համար։ Լռելյայն անջատված է․ փուլի խմբագրիչը մնում է անփոփոխ, իսկ դիտարկման երթուղին վերադարձնում է null։", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Պրոքսիի առողջական վիճակի ստուգման ընթացքում թույլ տալ, որ թիրախի կողմից մերժված ստուգումը (401/403/429․ պրոքսին փոխանցել է հարցումը, իսկ նպատակակետը մերժել է այս ելքային IP-ն) զրոյացնի պրոքսիի հաջորդական ձախողումների շարքը՝ ինչպես սպասարկված ստուգման դեպքում։ Լռելյայն անջատված է․ մերժումը մնում է չեզոք և պահպանում է շարքը։ 5xx-ը երկու դեպքում էլ մնում է անորոշ, իսկ մերժումը երբեք չի հեռացնում, անջատում կամ վերաակտիվացնում պրոքսին։", "sidebar": { "home": "Գլխավոր էջ", "dashboard": "Կառավարման վահանակ", @@ -1425,13 +1429,13 @@ "secretKeyHint": "Օգտագործվում է օգտակար բեռնվածքի վերնագիրը ստորագրելու համար՝ նույնականացման նպատակով։" }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "Discord վեբհուկի URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "Webhook URL-ը, որը պատճենվել է ձեր Discord ալիքի ինտեգրման կարգավորումներից։", "tutorial": "Ինչպես ստեղծել Discord webhook․" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "Slack վեբհուկի URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "Webhook URL-ը, որը պատճենվել է ձեր Slack Incoming Webhooks ինտեգրումից։", "tutorial": "Ինչպես ստեղծել Slack webhook․" @@ -1441,7 +1445,7 @@ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "HTTP API թոքենը, որը ստացվել է @BotFather-ից՝ ձեր բոտը ստեղծելիս։", "chatId": "Telegram զրույցի ID / ալիք", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 կամ @channelname", "chatIdHint": "Զրույցի/ալիքի եզակի թվային նույնացուցիչը կամ հանրային օգտանունը։", "tutorial": "Ինչպես կարգավորել Telegram webhook-ը․" } @@ -2203,7 +2207,7 @@ "model": "Մոդել", "account": "Հաշիվ", "connection": "Միացում", - "combo": "Combo", + "combo": "Համակցված", "routeStep": "Քայլ", "tokens": "Թոքեններ", "notAvailable": "կիրառելի չէ", @@ -2415,7 +2419,7 @@ "bypassProviderQuota": "Շրջանցել մատակարարի քվոտայի սահմանափակումները", "bypassProviderQuotaDescription": "Թույլ է տալիս այս բանալուն երթուղավորման ընթացքում անտեսել վերին մակարդակի մատակարարի/հաշվի սահմանափակման քաղաքականությունը։ API բանալու՝ ԱՄՆ դոլարով քվոտաները շարունակում են գործել։", "quotaPill": "ՔՎՈՏԱ", - "quotaModeOnly": "qtSd-only", + "quotaModeOnly": "միայն qtSd", "exclusiveLease": "Բացառիկ վարձակալում", "exclusiveLeaseNoticeTitle": "Բացառիկ վարձակալում", "exclusiveLeaseNoticeDesc": "Այս API բանալին ունի առանձնացված կապերի երթուղավորման բացառիկ վարձակալման թույլտվություններ։", @@ -2713,7 +2717,7 @@ "ccOnboardingTitle": "settings.json՝ gateway-ի մոդելների հայտնաբերման համար", "ccOnboardingCopy": "Պատճենել", "ccOnboardingCopied": "Պատճենված է", - "ccOnboardingKeyPlaceholder": "''", + "ccOnboardingKeyPlaceholder": "'<ձեր OmniRoute API բանալին>'", "ccOnboardingWindowNote": "Claude Code-ը 200K համատեքստային պատուհան է ենթադրում իր կողմից չճանաչված ցանկացած մոդելի նույնացուցիչի համար։ Իրականում այլ չափի պատուհան ունեցող մոդելի դեպքում անմիջապես դրա տակ ավելացրեք CLAUDE_CODE_AUTO_COMPACT_WINDOW, որպեսզի ավտոմատ սեղմումը չափազանց շուտ չգործարկվի։", "failedSave": "Չհաջողվեց պահպանել", "profileSyncTitle": "CLI պրոֆիլների ավտոմատ համաժամացում", @@ -3858,9 +3862,9 @@ "groupApiKey": "API բանալի", "groupAccount": "Հաշիվ", "groupServiceTier": "Սպասարկման մակարդակ", - "serviceTierFast": "Fast", - "serviceTierFlex": "Flex", - "serviceTierStandard": "Standard", + "serviceTierFast": "Արագ", + "serviceTierFlex": "Ճկուն", + "serviceTierStandard": "Ստանդարտ", "serviceTierBreakdownTitle": "Սպասարկման մակարդակ", "serviceTierBreakdownSubtitle": "Fast / Flex / Standard բաշխում", "serviceTierUsageSaved": "օգտագործման խնայողություն", @@ -4123,7 +4127,7 @@ "vscodeAliasDescriptionError": "Ցուցադրվում են տեղապահ URL-ներ, քանի որ այս աշխատաշրջանում չհաջողվեց բեռնել CLI բանալիները։", "vscodeAliasDescriptionLoading": "CLI բանալիները բեռնվում են։ Մինչև բանալու հասանելի դառնալը ցուցադրվում են տեղապահ URL-ներ։", "vscodeAliasDescriptionPlaceholder": "Ցուցադրվում են տեղապահ URL-ներ։ Ստեղծեք կամ ակտիվացրեք API բանալի CLI Tools-ում՝ TOKEN-ը փոխարինելու համար։", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI գործիքներ", "vscodeAliasBaseLabel": "VS Code բազային հասցե", "vscodeAliasModelsLabel": "VS Code մոդելներ", "vscodeAliasChatLabel": "VS Code զրույց", @@ -4135,7 +4139,7 @@ "badgeInternalTooltip": "Սա համակարգի ներքին վերջնակետ է", "tierAll": "Բոլորը", "tierAuth": "Նույնականացված", - "tierLoopback": "Loopback", + "tierLoopback": "Հետադարձ կապ", "tierAlwaysProtected": "Միշտ պաշտպանված", "tierPublic": "Հանրային", "hideInternal": "Թաքցնել ներքինները", @@ -5800,7 +5804,7 @@ "ccCompatibleLabel": "CC-ին համատեղելի", "ccCompatibleModelsDescription": "CC-ին համատեղելի միջնորդները չեն տրամադրում մոդելների ցանկը։ Ավելացրեք Claude մոդելների այն ID-ները, որոնք ընդունում է ձեր միջնորդը։", "ccCompatibleNameHint": "Միայն Claude Code-ի համար նախատեսված այս միջնորդի ցուցադրվող անունը։", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay արտադրական", "ccCompatiblePrefixHint": "Օգտագործվում է մոդելների այլանուններում, օրինակ՝ prefix/model-id։", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Օգտագործեք այս մատակարարին միայն այն միջնորդների համար, որոնք բացառապես սպասարկում են Claude Code հաճախորդներին։ OmniRoute-ը վերափոխում է յուրաքանչյուր մուտքային հարցում Claude Code-ին համատեղելի հաղորդալարային ձևաչափի, որպեսզի այդ միջնորդներն ընդունեն այն։ Եթե պարզապես ցանկանում եք օգտագործել Claude Code CLI-ն կամ վստահ չեք, թե ինչ է նշանակում միջնորդի այս տեսակը, փոխարենն օգտագործեք սովորական Anthropic-ին համատեղելի մատակարար։", @@ -6365,13 +6369,13 @@ "huggingchatDesc": "Անվճար LLM զրույց huggingface.co/chat-ի միջոցով", "poeWebLabel": "Poe Web", "poeWebDesc": "Բազմամոդել զրույց poe.com-ի միջոցով", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice վեբ", "veniceWebDesc": "Գաղտնիության վրա կենտրոնացած AI զրույց", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel վեբ", "v0VercelWebDesc": "AI-ով կոդի ստեղծում v0.dev-ի միջոցով", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi վեբ", "kimiWebDesc": "Moonshot AI-ի սպառողական զրույց www.kimi.com-ի միջոցով (միջազգային, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola վեբ", "doubaoWebDesc": "ByteDance-ի AI զրույց dola.com-ի միջոցով", "overrideBaseUrlAdvanced": "Ընդլայնված՝ վերասահմանել բազային URL-ը", "overrideBaseUrlHint": "Ընդլայնված՝ այս ներկառուցված մատակարարին ուղղեք հատուկ վերջնակետի։ Լռելյայնն օգտագործելու համար դաշտը դատարկ թողեք։", @@ -6745,11 +6749,11 @@ "themeSystem": "Համակարգ", "endpointTunnelVisibility": "Վերջնակետի թունելի տեսանելիություն", "endpointTunnelVisibilityDesc": "Թաքցնել թունելի կառավարման տարրերը Վերջնակետ էջից՝ առանց թունելի վիճակը փոխելու։", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Cloudflare արագ թունել", "showCloudflareTunnelDesc": "Ցուցադրել Cloudflare Quick Tunnel-ի կառավարման տարրերը Վերջնակետ էջում։", "showTailscaleFunnel": "Tailscale Funnel", "showTailscaleFunnelDesc": "Ցուցադրել Tailscale Funnel-ի կառավարման տարրերը Վերջնակետ էջում։", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "ngrok թունել", "showNgrokTunnelDesc": "Ցուցադրել ngrok Tunnel-ի կառավարման տարրերը Վերջնակետ էջում։", "sidebarVisibility": "Թաքցնել կողագոտու տարրերը", "sidebarVisibilityDesc": "Թաքցրեք կողագոտու նավարկման ցանկացած տարր՝ տեսողական խառնաշփոթը նվազեցնելու համար՝ առանց որևէ գործառույթ անջատելու", @@ -7052,7 +7056,7 @@ "routingAdvancedGuideTitle": "Երթուղավորման ընդլայնված ուղեցույց", "routingAdvancedGuideHint1": "Այս ռազմավարությունը համաժամեցվում է ինչպես նոր համակցությունների լռելյայն կարգավորումների, այնպես էլ հաշիվների գլոբալ պահուստային երթուղավորման հետ։", "routingAdvancedGuideHint2": "Հաշիվների կանխատեսելի առաջնահերթության համար օգտագործեք Fill First-ը, հաշիվների խմբաքանակների համար՝ Round Robin-ը Sticky Limit-ի հետ, իսկ ուշացումների նկատմամբ կայունության համար՝ P2C-ն։", - "fillFirst": "Fill First", + "fillFirst": "Նախ լրացնել", "fillFirstDesc": "Օգտագործել հաշիվներն ըստ առաջնահերթության", "roundRobin": "Round Robin", "roundRobinDesc": "Հերթով անցնել բոլոր հաշիվներով", @@ -7139,7 +7143,7 @@ "ipModeWhitelist": "Սպիտակ ցուցակ", "ipModeWhitelistPriority": "Սպիտակ ցուցակի առաջնահերթություն", "addIpAddress": "Ավելացնել IP հասցե", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 կամ 10.0.*.*", "block": "+ Արգելափակել", "allow": "+ Թույլատրել", "blocked": "Արգելափակված ({count})", @@ -7949,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Ներմուծել հաշիվները", "payloadRulesTitle": "Հարցման տվյալների կանոններ", "payloadRulesDesc": "Կարգավորեք հարցման տվյալների փոփոխությունները՝ ըստ մոդելի և արձանագրության։ Փոփոխությունները պահպանվում են կարգավորումներում և պահպանումից անմիջապես հետո դինամիկ վերաբեռնվում գործարկման միջավայրում։", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "լռելյայն", "payloadRuleDefaultDesc": "Կիրառում է պարամետրերը միայն այն դեպքում, երբ նպատակային ուղին բացակայում է ուղարկվող հարցման տվյալներից։", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "վերասահմանում", "payloadRuleOverrideDesc": "Հարկադրաբար սահմանում է արժեքները հարցման տվյալներում՝ փոխարինելով տվյալ ուղում արդեն առկա ցանկացած արժեք։", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "զտիչ", "payloadRuleFilterDesc": "Հեռացնում է արգելափակված պարամետրերը հարցման տվյալներից՝ նախքան վերին մակարդակի հարցումն ուղարկելը։", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Գործում է default-ի նման, սակայն տողային արժեքները հնարավորության դեպքում նախ վերլուծվում են որպես JSON։ Պահպանելիս ընդունվում է նաև նախկին default-raw մուտքային այլանունը։", @@ -8378,7 +8382,7 @@ "qdrantCollection": "Հավաքածու" }, "contextRtk": { - "title": "RTK Engine", + "title": "RTK շարժիչ", "description": "Հրամանները հաշվի առնող սեղմում՝ գործիքների ելքային տվյալների, տերմինալի մատյանների և կառուցման արդյունքների համար։", "enabled": "Միացված է", "intensity": "Ինտենսիվություն", @@ -8904,7 +8908,7 @@ "save": "Պահպանել" }, "contextCaveman": { - "title": "Caveman Engine", + "title": "Caveman շարժիչ", "description": "Կանոնների վրա հիմնված հաղորդագրությունների սեղմում, լեզվական փաթեթներ, վերլուծություն և ելքային ռեժիմի կառավարում։", "advancedConfig": "Ընդլայնված կազմաձևում", "advancedConfigDesc": "Ճշգրտել սեղմման վարքագիծը", @@ -9179,7 +9183,7 @@ "scenarioVision": "Տեսողական ընկալում (պատկերի ըմբռնում)", "scenarioSchemaCoercion": "Սխեմայի հարկադիր համապատասխանեցում (կառուցվածքային ելք)", "techniques": "Տեխնիկաներ՝", - "friendlyTitle": "Translator", + "friendlyTitle": "Թարգմանիչ", "friendlySubtitle": "Օգտագործեք ձեր առկա հավելվածը ցանկացած մատակարարի հետ՝ առանց կոդը վերաշարադրելու։", "conceptHeadline": "Ձեր հավելվածը խոսում է մեկ API-ի «լեզվով»։ Translator-ը փոխակերպում է այն՝ մեկ այլ մատակարար օգտագործելու համար։", "conceptDiagramAppLabel": "Ձեր հավելվածը", @@ -10772,7 +10776,7 @@ "devinDesktopPasteDescription": "Տրամադրեք գոյություն ունեցող Devin API բանալի՝ իսկորոշված Devin աշխատաշրջանից։ Բանալու արտահանման հասանելիությունն ու քայլերը տարբերվում են՝ կախված Devin-ի տարբերակից և հաշվից։", "devinPasteDescription": "Տրամադրեք ձեր WINDSURF_API_KEY-ը (ստացված `devin auth login`-ի միջոցով կամ Windsurf IDE-ի «Windsurf: Provide Auth Token» հրամանով)։", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "Grok Build-ի auth.json", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "API բանալի / տոկեն", "saving": "Պահվում է…", @@ -10915,7 +10919,7 @@ "assignmentsCount": "{count} նշանակում", "noData": "—", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} մվ", "testFailure": "✗ {error}", "repair": "Վերականգնել", "relayAuthMissing": "նույնականացման տվյալները բացակայում են", @@ -10964,16 +10968,16 @@ "strategyLatency": "Ըստ ուշացման օպտիմալացված", "poolMembersLabel": "Պուլի անդամներ ({count})", "poolNoMembers": "Այս պուլում դեռ պրոքսիներ չկան։", + "poolEgressObservation": "Օգտագործվել է {exits, plural, one {# ելք} other {# ելք}}՝ {connections, plural, one {# կապի} other {# կապերի}} կողմից · մինչև {max}՝ մեկ ելքի վրա · վերջին {hours} ժ", + "poolEgressObservationEmpty": "Վերջին {hours} ժ ընթացքում տրաֆիկ չի դիտարկվել", + "poolEgressObservationHint": "Հաշվարկված է պրոքսիի մատյանից տվյալ ժամանակահատվածի համար՝ այս խմբի անդամների համար դիտարկված տարբեր ելքային IP-ները և դրանք օգտագործած OmniRoute կապերը։ «Մեկ ելքի վրա» նշանակում է տվյալ ժամանակահատվածի ընթացքում, ոչ թե միաժամանակ։ Յուրաքանչյուր IP-ի համար 429 արգելափակումը դադարեցնում է միայն նույն մատակարարների ընտանիքի կապերը։", "poolRemove": "Հեռացնել", "poolRemoveFailed": "Չհաջողվեց պրոքսին հեռացնել պուլից", "poolAddLabel": "Ավելացնել պրոքսի", "poolAddMember": "Ավելացնել", "poolAddFailed": "Չհաջողվեց պրոքսին ավելացնել պուլում", "poolSelectProxy": "Ընտրեք պրոքսի…", - "poolSaveFailed": "Չհաջողվեց պահպանել պուլին վերագրումը", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family." + "poolSaveFailed": "Չհաջողվեց պահպանել պուլին վերագրումը" }, "playground": { "title": "Մոդելների փորձարկման հարթակ", @@ -11446,9 +11450,9 @@ "allLevels": "Բոլոր մակարդակները", "allProviders": "Բոլոր մատակարարները", "total": "ընդամենը", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "ok": "ԼԱՎ", + "err": "ՍԽԱԼ", + "timeoutShort": "ԺԱՄԿԵՏ", "direct": "ուղղակի", "newest": "Նորագույնները", "oldest": "Հնագույնները", @@ -11675,7 +11679,7 @@ "endpointsCollapse": "Ծալել", "endpointsExpand": "Ընդարձակել", "endpointsAnthropicNote": "Anthropic-ին բնորոշ", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsResponsesNote": "OpenAI պատասխաններ — codex/github", "endpointsWsNote": "WebSocket — միայն codex", "betaText": "Քվոտայի համօգտագործումը գործում է, սակայն հնարավոր են սխալներ։ Սխա՞լ եք գտել։ Խնդրում ենք հայտնել դրա մասին։", "betaReportLink": "Հայտնել խնդրի մասին", @@ -11749,7 +11753,7 @@ "percent": "%", "requests": "հարցումներ", "tokens": "թոքեններ", - "usd": "USD ($)" + "usd": "ԱՄՆ դոլար ($)" }, "windowOptions": { "5h": "5 ժամ", @@ -12168,7 +12172,7 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "CLI կոդ", "phrase": "Կոդային գործիքներ, որոնք ուղղորդում եք դեպի OmniRoute", "flow": "Դուք → CLI Code → OmniRoute → Մատակարար", "seeOther": "Դիտել →" @@ -12500,7 +12504,7 @@ }, "comparison": { "colAgent": "Գործակալի հմտություններ", - "colOmni": "Omni Skills", + "colOmni": "Omni հմտություններ", "whatIs": { "label": "Ինչ է սա", "agent": "Մեքենայական ընթերցման համար նախատեսված SKILL.md, որը արտաքին գործակալին սովորեցնում է աշխատել OmniRoute-ի հետ", @@ -12987,6 +12991,12 @@ "STREAM_RECOVERY_MIDSTREAM_ENABLED": { "description": "Թույլատրել հոսքի վերականգնման ժամանակ կրկին հարցնել պատասխանը և միակցել այն՝ նույնիսկ այն բանից հետո, երբ բայթերն արդեն հասել են հաճախորդին։" }, + "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { + "description": "Միջհոսքային շարունակությունը դարձնել անվտանգ գործիքային կանչերի համար․ երբեք չվերսկսել ընդհատված հոսքը գործիքային կանչ ուղարկելուց հետո (անկախ նրանից՝ այն դեռ ընթացքի մեջ է, թե արդեն ավարտվել է), և մեկ դատարկ շարունակությունից հետո կանգ առնել՝ կրկնափորձերի ամբողջ սահմանաչափն օգտագործելու փոխարեն։" + }, + "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { + "description": "Մեկ անգամ անցնել նույն մակարդակի մեկ այլ կապի, երբ հոսքը փակվում է՝ առանց որևէ օգտակար ֆրեյմ փոխանցելու, և նույն կապով սահմանափակ կրկնափորձն արդեն սպառված է։ Եթե օգտագործելի այլ կապ չկա, վերադարձվում է սկզբնական վաղ EOF-ի սխալը։ Անջատված է․ կրկնափորձից հետո վաղ EOF-ը մնում է վերջնական սխալ։" + }, "MODEL_CATALOG_INCLUDE_NAMES": { "description": "Ներառել ցուցադրման համար հարմար անվան դաշտեր /v1/models պատասխաններում։ Անջատեք սա այն հաճախորդների համար, որոնք ընդունում են միայն մոդելի ID-ներ։" }, @@ -13025,18 +13035,12 @@ "description": "Շարունակել սերվերի կողմից կառավարվող ոչ հոսքային գործիքների կանչերը, մինչև մոդելը վերադարձնի հաճախորդի համար օգտագործելի պատասխան։" }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths.", - "label": "__MISSING__:Retry-After Provenance" + "label": "Retry-After-ի ծագումը", + "description": "Համախմբված 429/503 անհասանելիության պատասխաններում բաց թողնել Retry-After-ը, երբ ապագա կրկնափորձի հստակ ժամանակը հայտնի չէ՝ արհեստական 1 վրկ ուղարկելու փոխարեն, ավելացնել error.retry_after_provenance-ը և համակցված սպառման ուղիներում կարդալ տեքստային կրկնափորձի հուշումները։" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip.", - "label": "__MISSING__:Protected-Priority Infra Stops as 502" - }, - "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." - }, - "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { - "description": "__MISSING__:Fail over once to a sibling connection when a stream closes before emitting any useful frame and the bounded same-connection retry is spent. With no usable sibling, the original early-EOF error is returned. Off: early-EOF stays terminal after the retry." + "label": "Պաշտպանված առաջնահերթության ենթակառուցվածքային կանգառները՝ որպես 502", + "description": "503-ի փոխարեն պատասխանել 502-ով, երբ միայն քվոտայի պատճառով պահուստային տարբերակ հանդիսացող առաջնահերթ թիրախը դադարեցնում է համակցությունը մի պատճառով, որն ապացուցելիորեն կապված չէ քվոտայի հետ՝ մատակարարի բաց շղթայի անջատիչ կամ կանխատեսվող ուշացման պատճառով բացթողում։" } } }, @@ -13115,7 +13119,7 @@ "comboHealth": "Կոմբոյի վիճակ", "callLogs": "Կանչերի մատյաններ", "costs": "Ծախսեր", - "playground": "Playground", + "playground": "Փորձադաշտ", "nestedCombo": "Ներդրված կոմբո", "modelTarget": "Մոդելի թիրախ", "weight": "{value}% կշիռ", @@ -13650,6 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Մերժել հարցումները նախքան ուղարկումը, երբ թիրախային մոդելը չունի պահանջվող հնարավորությունները (տեսողություն, գործիքներ, կառուցվածքային ելք, համատեքստի պատուհան)։ Պաշտպանում է մեկ մատակարարին ուղղակիորեն ուղարկվող հարցումները, որոնք շրջանցում են համակցման շերտի համատեղելիության զտիչը։", "featureFlagDisableContextWindowChecksDescription": "Մեկ մոդելին ուղղակիորեն ուղարկվող հարցումների համար բաց թողնել OmniRoute-ի տեղային համատեքստի պատուհանի և մուտքային թոքենների առավելագույն քանակի ստուգումը։ Վերին մակարդակի մատակարարները շարունակում են կիրառել իրենց փաստացի սահմանաչափերը։ Հուշման սեղմումն ու ելքային թոքենների սահմանաչափերը շարունակում են գործել։", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Որոնման վիճակագրությունը և վերջին որոնումները հաշվի են առնում միայն այն մատակարարներին, որոնք դեռ ակտիվ կապ ունեն (առանց բանալու մատակարարները, օրինակ՝ duckduckgo-free-ը, միշտ հաշվի են առնվում)։ Անջատված վիճակում պահպանվում են որոնման բոլոր տողերը՝ մատակարարի ID-ով։", "publicSystem": { "notFound": { "title": "Էջը չի գտնվել", @@ -14046,7 +14051,7 @@ "filterSources": "Աղբյուրներ", "filterProviders": "Մատակարարներ", "clearFilters": "Մաքրել զտիչները", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Ամպային գործակալ", "sourceA2A": "A2A", "sourceConductor": "Conductor", "sourceStale": "Հնացած է {since}-ից ի վեր", @@ -14160,10 +14165,5 @@ "partnerLinkNote": "Գործընկերային հղում", "dismissAriaLabel": "Փակել" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Անջատել մտածողության մակարդակի տարբերակների (օր.՝ -low, -medium, -high) ստեղծումը /v1/models կատալոգում։", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "__MISSING__:Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "__MISSING__:Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Անջատել մտածողության մակարդակի տարբերակների (օր.՝ -low, -medium, -high) ստեղծումը /v1/models կատալոգում։" } diff --git a/src/i18n/messages/id.json b/src/i18n/messages/id.json index 0fc0cc2302..5976b32649 100644 --- a/src/i18n/messages/id.json +++ b/src/i18n/messages/id.json @@ -31,7 +31,7 @@ "active": "Aktif", "inactive": "Tidak aktif", "noData": "Tidak ada data yang tersedia", - "nothingHere": "Nothing here yet", + "nothingHere": "Belum ada apa pun di sini", "configure": "Konfigurasikan", "manualConfig": "Konfigurasi manual", "manage": "Kelola", @@ -47,7 +47,7 @@ "time": "Waktu", "details": "Detail", "created": "Dibuat", - "lastUsed": "Last Refreshed", + "lastUsed": "Terakhir Diperbarui", "loadMore": "Muat Lebih Banyak", "noResults": "Tidak ada hasil yang ditemukan", "reloadPage": "Muat Ulang Halaman", @@ -70,8 +70,8 @@ "note": "Catatan", "free": "Gratis", "skipToContent": "Lewati ke konten", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Server sedang mengalami masalah. Beberapa fitur mungkin tidak tersedia.", + "maintenanceServerUnreachable": "Server tidak dapat dijangkau. Menghubungkan kembali...", "accept": "accept", "accountId": "accountId", "alias": "alias", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Gagal menyetel ulang harga", "apikey": "Kunci API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Buka Dasbor", + "checkSystemStatus": "Periksa Status Sistem", + "selectModel": "Pilih Model", "addModel": "Tambah model", "effortNone": "Tidak ada", "effortLow": "Rendah", @@ -162,12 +162,12 @@ "effortMax": "Maks", "effortUltra": "Ultra", "reasoningEffort": "Upaya penalaran", - "wireApi": "Wire API", + "wireApi": "API Wire", "modelAliases": "Alias model", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Kombinasi", + "noModelsFound": "Tidak ada model yang ditemukan", + "clear": "Hapus", + "done": "Selesai", "selectAll": "Pilih semua", "unselectAll": "Batalkan semua pilihan", "visibleModels": "terlihat", @@ -184,519 +184,519 @@ "selectAllProviders": "Periksa semua penyedia", "clearProviderSelection": "Hapus centang penyedia", "providersSelectedCount": "{count} penyedia diperiksa", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Terjadi Kesalahan", + "comboDeleted": "Kombinasi Dihapus", + "hide": "Sembunyikan", + "creating": "Membuat", + "comboCreated": "Kombinasi Dibuat", + "swapFormats": "Tukar Format", + "daysAgo": "Hari yang Lalu", + "retries": "Percobaan Ulang", + "errorDuringRestore": "Kesalahan Saat Memulihkan", + "eventsAppearHint": "Petunjuk Tampilan Peristiwa", + "noLockouts": "Tidak Ada Penguncian", + "webSearchDesc": "Deskripsi Pencarian Web", + "audioProvidersHeading": "Judul Penyedia Audio", "cloudAgentProviders": "Penyedia Agen Cloud", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Menit yang Lalu", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", + "liveAutoRefreshing": "Penyegaran Otomatis Langsung", + "webSearch": "Pencarian Web", + "anthropicPrefixPlaceholder": "Placeholder Awalan Anthropic", + "addModelToCombo": "Tambahkan Model ke Kombinasi", + "failedToLoad": "Gagal Memuat", + "categoryMedia": "Kategori Media", + "enableCloud": "Aktifkan Cloud", + "expirationBannerExpiringSoon": "Banner Kedaluwarsa Segera", + "retry": "Coba Lagi", + "embeddings": "Embedding", + "errorCount": "Jumlah Kesalahan", + "backupReasonManual": "Alasan Pencadangan Manual", + "safeSearchModerate": "Pencarian Aman Moderat", + "activeLimiters": "Pembatas Aktif", + "a2aCardTitle": "Judul Kartu A2A", + "cloudWorkerUnreachable": "Cloud Worker Tidak Dapat Dijangkau", + "testFailed": "Pengujian Gagal", + "compatibleBaseUrlHint": "Petunjuk URL Dasar yang Kompatibel", + "usageTracking": "Pelacakan Penggunaan", + "disableCloudTitle": "Judul Nonaktifkan Cloud", + "noConnections": "Tidak Ada Koneksi", + "providerHealth": "Kesehatan Penyedia", + "confirmDbImport": "Konfirmasi Impor DB", + "notAvailableSymbol": "Simbol Tidak Tersedia", + "backupsAvailable": "Cadangan Tersedia", + "providerAuto": "Penyedia Otomatis", + "newProviderNamePlaceholder": "Placeholder Nama Penyedia Baru", + "a2aQuickStartStep2": "Langkah 2 Mulai Cepat A2A", + "ok": "Oke", + "available": "Tersedia", + "noBackupYet": "Belum Ada Cadangan", + "more": "Lainnya", + "noCompatibleYet": "Belum Ada yang Kompatibel", + "multiProvider": "Multi-Penyedia", + "repairEnvHint": "Petunjuk Perbaikan Env", + "disablingCloud": "Menonaktifkan Cloud", + "testBench": "Meja Uji", "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", + "cloudBenefitShare": "Manfaat Berbagi Cloud", + "mcpCardTitle": "Judul Kartu Mcp", + "disableConfirm": "Konfirmasi Penonaktifan", + "filters": "Filter", + "expirationBannerExpiredDesc": "Deskripsi Banner Kedaluwarsa", + "saveComboDefaults": "Simpan Default Kombinasi", + "cloudConnectedVerified": "Cloud Terhubung dan Terverifikasi", + "uptime": "Waktu Aktif", + "compatibleProdPlaceholder": "Placeholder Produksi yang Kompatibel", + "fallbackChainsTitle": "Judul Rantai Fallback", + "oauthLabel": "Label Oauth", + "a2aCardDescription": "Deskripsi Kartu A2A", + "okShort": "Oke", + "maintenance": "Pemeliharaan", + "formatConverter": "Konverter Format", + "zedImportNetworkError": "Kesalahan Jaringan Impor Zed", + "apiKeyLabel": "Label Kunci API", + "noModelsForProvider": "Tidak Ada Model untuk Penyedia", + "mcpCardDescription": "Deskripsi Kartu MCP", + "apiTypeLabel": "Label Jenis API", + "configuredProvidersLabel": "Label Penyedia yang Dikonfigurasi", + "maxRetriesLabel": "Label Percobaan Ulang Maksimum", + "title": "Judul", + "output": "Keluaran", + "prefixHint": "Petunjuk Awalan", + "skipWizard": "Lewati Panduan", + "failedCount": "Jumlah Kegagalan", + "confirmDbImportDesc": "Deskripsi Konfirmasi Impor Basis Data", + "entries": "Entri", + "until": "Hingga", + "disableCombo": "Nonaktifkan Kombinasi", + "liveMonitorDescriptionPrefix": "Awalan Deskripsi Pemantauan Langsung", + "runningCount": "Jumlah yang Berjalan", + "noActiveConnectionsInGroup": "Tidak Ada Koneksi Aktif dalam Grup", + "savedSuccessfully": "Berhasil Disimpan", + "systemStorage": "Penyimpanan Sistem", + "videoDesc": "Deskripsi Video", + "maxResults": "Hasil Maksimum", + "timeRangeMonth": "Rentang Waktu Bulan", + "testSummary": "Ringkasan Pengujian", + "failedSetPassword": "Gagal Mengatur Kata Sandi", "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "restore": "Pulihkan", + "disableWarning": "Peringatan Penonaktifan", + "moderationsDesc": "Deskripsi Moderasi", + "providerHealthStatusAria": "ARIA Status Kesehatan Penyedia", + "modelNamePlaceholder": "Placeholder Nama Model", + "mcpQuickStartStep2": "Langkah 2 Memulai Cepat MCP", + "quickStart": "Memulai Cepat", + "fullExportFailedWithError": "Ekspor Penuh Gagal dengan Kesalahan", + "loadingBackups": "Memuat Cadangan", + "anthropicBaseUrlPlaceholder": "Placeholder URL Dasar Anthropic", + "description": "Deskripsi", + "noProviderFound": "Penyedia Tidak Ditemukan", + "auto": "Otomatis", + "protocolsDescription": "Deskripsi Protokol", + "cloudSessionNote": "Catatan Sesi Cloud", + "advancedSettings": "Pengaturan Lanjutan", + "defaultStrategy": "Strategi Default", + "purgeExpiredLogs": "Hapus Log Kedaluwarsa", + "justNow": "Baru Saja", + "providerTestFailed": "Pengujian Penyedia Gagal", + "openaiBaseUrlPlaceholder": "Placeholder URL Dasar Openai", + "image": "Gambar", + "failedCreateChain": "Gagal Membuat Rantai", + "importDatabase": "Impor Basis Data", + "allDataLocal": "Semua Data Lokal", + "sectionTitle": "Judul Bagian", + "failedToggle": "Gagal Mengalihkan", + "editCombo": "Edit Kombinasi", + "testResults": "Hasil Pengujian", + "searchQuery": "Kueri Pencarian", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", - "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "duplicate": "Duplikat", + "createCombo": "Buat Kombinasi", + "searchTypeWeb": "Jenis Pencarian Web", + "addChain": "Tambahkan Rantai", + "prefixLabel": "Label Prefiks", + "listModelsDesc": "Deskripsi Daftar Model", + "databaseSize": "Ukuran Basis Data", + "chainCreated": "Rantai Dibuat", + "providerTestTimeout": "Waktu Pengujian Penyedia Habis", + "routingStrategy": "Strategi Perutean", + "translateAction": "Tindakan Terjemahkan", + "exportFailed": "Ekspor Gagal", + "connectedVerificationPending": "Terhubung, Verifikasi Tertunda", + "a2aQuickStartTitle": "Judul Mulai Cepat A2A", + "couldNotTest": "Tidak Dapat Menguji", + "testAllCompatible": "Uji Semua yang Kompatibel", + "anthropicCompatibleName": "Nama yang Kompatibel dengan Anthropic", + "disabling": "Menonaktifkan", + "failedEnable": "Gagal Mengaktifkan", + "categoryUtility": "Kategori Utilitas", + "customUrlOptional": "URL Kustom Opsional", + "localProviders": "Penyedia Lokal", + "comboNamePlaceholder": "Placeholder Nama Kombinasi", + "memoryRss": "RSS Memori", + "disableProvider": "Nonaktifkan Penyedia", + "welcomeDesc": "Deskripsi Selamat Datang", + "nameLabel": "Label Nama", + "allOperational": "Semua Beroperasi", + "backupNow": "Cadangkan Sekarang", + "providerMaxRetriesAria": "Aria Percobaan Ulang Maksimum Penyedia", + "textToSpeechDesc": "Deskripsi Teks ke Suara", + "machineId": "ID Mesin", + "globalProxy": "Proksi Global", + "hitsMisses": "Hit dan Miss", + "testDesc": "Deskripsi Pengujian", + "chatDesc": "Deskripsi Obrolan", + "importSuccess": "Impor Berhasil", + "chat": "Obrolan", + "a2aQuickStartStep1": "Langkah 1 Mulai Cepat A2A", + "importFailed": "Impor Gagal", + "inputPlaceholder": "Placeholder Input", + "providerModelsTitle": "Judul Model Penyedia", + "lastBackup": "Pencadangan Terakhir", + "yourEndpoint": "Endpoint Anda", + "autoDisableThresholdDesc": "Deskripsi Ambang Batas Penonaktifan Otomatis", + "rerankDesc": "Deskripsi Pemeringkatan Ulang", + "modelsPathPlaceholder": "Placeholder Jalur Model", + "noCombosYet": "Belum Ada Kombinasi", + "connectedVerificationPendingWithError": "Terhubung, Verifikasi Tertunda dengan Kesalahan", + "comboDefaultsGuideHint1": "Petunjuk 1 Panduan Default Kombinasi", + "enableCloudTitle": "Judul Aktifkan Cloud", + "configuredProvidersHint": "Petunjuk Penyedia yang Dikonfigurasi", + "paused": "Dijeda", + "llmProviders": "Penyedia LLM", + "enableCombo": "Aktifkan Kombinasi", + "removeProviderOverrideAria": "Aria Hapus Penggantian Penyedia", + "nodeVersion": "Versi Node", + "openai": "OpenAI", + "exportFailedWithError": "Ekspor Gagal dengan Kesalahan", + "proxyConfigured": "Proksi Dikonfigurasi", + "concurrencyPerModel": "Konkurensi per Model", + "protocolTasksLabel": "Label Tugas Protokol", + "oauthProviders": "Penyedia OAuth", + "lockedCount": "Jumlah Terkunci", + "deleteChainConfirm": "Konfirmasi Penghapusan Rantai", + "recentTranslations": "Terjemahan Terbaru", + "zedImportButton": "Tombol Impor Zed", + "responsesDesc": "Deskripsi Respons", + "testedCount": "Jumlah yang Diuji", + "providersCommaSeparatedPlaceholder": "Placeholder Penyedia yang Dipisahkan Koma", + "signatureDefaults": "Default Tanda Tangan", + "errorCreating": "Kesalahan Saat Membuat", + "timeRangeYear": "Rentang Waktu Tahun", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Cloud Berhasil Dinonaktifkan", + "deleteConfirm": "Konfirmasi Penghapusan", + "check": "Periksa", + "safeSearch": "Pencarian Aman", + "protocolLastActivity": "Aktivitas Terakhir Protokol", + "openMcpDashboard": "Buka Dasbor Mcp", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Label Jalur Chat", + "retryDelay": "Jeda Percobaan Ulang", + "errorUpdating": "Kesalahan Saat Memperbarui", + "ideCliIntegrations": "Integrasi IDE CLI", + "imageGeneration": "Pembuatan Gambar", + "apiKeyRequired": "Kunci API Diperlukan", + "resetAllTitle": "Judul Atur Ulang Semua", + "connectionError": "Kesalahan Koneksi", + "modelName": "Nama Model", + "apiKeyForCheck": "Kunci API untuk Pemeriksaan", + "cloudRequestTimeout": "Waktu Tunggu Permintaan Cloud", + "showConfiguredOnly": "Tampilkan Hanya yang Dikonfigurasi", "showFreeOnly": "Hanya gratis", "addFirstProvider": "Tambahkan penyedia pertama Anda", "addFirstProviderDesc": "Hubungkan penyedia AI untuk memulai perutean permintaan melalui OmniRoute. Anda dapat menggunakan penyedia gratis, kunci API, atau akun OAuth.", "learnMore": "Pelajari lebih lanjut", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Sertakan Domain", + "promptCache": "Cache Prompt", + "cloudConnected": "Cloud Terhubung", + "deleteChain": "Hapus Rantai", + "chatPathPlaceholder": "Placeholder Jalur Chat", + "databasePath": "Jalur Basis Data", + "usingLocalServer": "Menggunakan Server Lokal", + "globalComboConfig": "Konfigurasi Kombinasi Global", + "backupFailed": "Pencadangan Gagal", + "tabProtocols": "Tab Protokol", + "continue": "Lanjutkan", + "categorySearch": "Pencarian Kategori", + "rateLimitStatus": "Status Batas Laju", + "repairEnvSuccess": "Perbaikan Env Berhasil", + "nameRequired": "Nama Wajib Diisi", + "country": "Negara", + "trackMetricsDesc": "Deskripsi Pelacakan Metrik", + "durationSecondsShort": "Durasi Singkat dalam Detik", + "formatConverterDescription": "Deskripsi Pengonversi Format", + "cloudBenefitAccess": "Akses Manfaat Cloud", + "maxRetries": "Percobaan Ulang Maksimum", + "queueTimeout": "Batas Waktu Antrean", "queueDepth": "Kedalaman Antrean", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Tambahkan Penyedia", + "realtime": "Waktu Nyata", + "totalTranslations": "Total Terjemahan", + "protocolActiveStreamsLabel": "Label Stream Aktif Protokol", + "repairEnv": "Perbaiki Env", + "modelsCount": "Jumlah Model", + "viewBackups": "Lihat Cadangan", + "responsesApi": "API Respons", + "copyComboName": "Salin Nama Kombinasi", + "failures": "Kegagalan", + "failedUpdate": "Pembaruan Gagal", + "imageDesc": "Deskripsi Gambar", + "failedCreate": "Pembuatan Gagal", + "remainingOfLimit": "Sisa dari Batas", + "protocolsTitle": "Judul Protokol", + "expirationBannerExpiringSoonDesc": "Deskripsi Banner Kedaluwarsa Segera", + "source": "Sumber", + "failed": "Gagal", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", + "mcpQuickStartStep1": "Langkah 1 Mulai Cepat MCP", + "runTest": "Jalankan Pengujian", + "loadingFallbackChains": "Memuat Rantai Fallback", + "healthy": "Sehat", + "version": "Versi", + "saveBlockWeighted": "Simpan Blok Berbobot", + "zedImportNone": "Tidak Ada Impor Zed", + "noBackupsYet": "Belum Ada Cadangan", + "noGlobalProxy": "Tidak Ada Proksi Global", + "noModels": "Tidak Ada Model", + "stickyLimit": "Batas Tetap", + "passedCount": "Jumlah Lulus", + "zedImportFailed": "Impor Zed Gagal", + "saving": "Menyimpan", + "testAll": "Uji Semua", + "globalProxyDesc": "Deskripsi Proksi Global", + "latencyP99": "Latensi P99", + "connectingToCloud": "Menghubungkan ke Cloud", + "responses": "Respons", + "errorDeleting": "Kesalahan Saat Menghapus", + "openaiPrefixPlaceholder": "Placeholder Awalan OpenAI", + "enterPassword": "Masukkan Kata Sandi", + "openA2aDashboard": "Buka Dasbor A2A", + "enableProvider": "Aktifkan Penyedia", + "modeTest": "Mode Pengujian", + "failedDeleteChain": "Gagal Menghapus Rantai", + "providerDesc": "Deskripsi Penyedia", + "templateLoadHint": "Petunjuk Pemuatan Templat", + "lastFailure": "Kegagalan Terakhir", + "moveDown": "Pindahkan ke Bawah", + "providerLabel": "Label Penyedia", + "clearCacheFailed": "Gagal Menghapus Cache", + "imagesGenerations": "Pembuatan Gambar", + "repairEnvWorking": "Perbaikan Lingkungan Sedang Berjalan", + "millisecondsShort": "mdtk", + "globalLabel": "Label Global", + "failuresPlural": "Kegagalan", + "completionsLegacyDesc": "Deskripsi Penyelesaian Lama", + "searchProviders": "Cari Penyedia", + "chatPathHint": "Petunjuk Jalur Chat", + "defaultStrategyDesc": "Deskripsi Strategi Default", + "latencyP95": "Latensi P95", + "textToSpeech": "Teks ke Ucapan", + "searchType": "Jenis Pencarian", + "messages": "Pesan", + "aggregatorsGateways": "Agregator dan Gateway", + "comboStrategyAria": "Strategi Kombinasi Aria", + "input": "Masukan", + "testingConnection": "Menguji Koneksi", + "excludeDomains": "Kecualikan Domain", + "webCookieProviders": "Penyedia Cookie Web", + "allTestsPassed": "Semua Pengujian Berhasil", + "openaiCompatibleName": "Nama yang Kompatibel dengan Openai", + "warningCostOptimizedPartialPricing": "Peringatan Harga Parsial yang Dioptimalkan untuk Biaya", + "comboDefaultsGuideTitle": "Judul Panduan Default Kombinasi", + "hoursAgo": "Jam yang Lalu", + "notAvailable": "Tidak Tersedia", + "skipAndContinue": "Lewati dan Lanjutkan", + "moderations": "Moderasi", + "proxyConfig": "Konfigurasi Proksi", + "upstreamProxyProviders": "Penyedia Proksi Upstream", + "exportAll": "Ekspor Semua", + "queuedCount": "Jumlah dalam Antrean", + "resetAll": "Atur Ulang Semua", + "noTranslations": "Tidak Ada Terjemahan", + "avgLatency": "Latensi Rata-rata", + "throttleStatus": "Status Pembatasan", + "backupRetentionDesc": "Deskripsi Retensi Cadangan", + "noCBData": "Tidak Ada Data Cb", + "chainDeleted": "Rantai Dihapus", + "timeLeft": "Waktu Tersisa", + "expirationBannerExpired": "Banner Kedaluwarsa", + "language": "Bahasa", + "invalidFileType": "Jenis File Tidak Valid", + "monitoredProviders": "Penyedia yang Dipantau", + "errors": "Kesalahan", "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "chatCompletions": "Penyelesaian Chat", + "exampleTemplatesHint": "Petunjuk Templat Contoh", + "retryDelayLabel": "Label Penundaan Percobaan Ulang", + "audioTranscription": "Transkripsi Audio", + "fallbackChainsDesc": "Deskripsi Rantai Fallback", + "exampleTemplates": "Templat Contoh", + "connectionsCount": "Jumlah Koneksi", + "modelsPathLabel": "Label Jalur Model", + "activeProvidersHint": "Petunjuk Penyedia Aktif", + "activeLockouts": "Penguncian Aktif", + "invalid": "Tidak Valid", + "skipPassword": "Lewati Kata Sandi", + "moveUp": "Pindahkan ke Atas", + "timeRange": "Rentang Waktu", + "stickyLimitDesc": "Deskripsi Batas Tetap", + "cloudBenefitEdge": "Keunggulan Cloud di Edge", + "custom": "Kustom", + "verifying": "Memverifikasi", + "baseUrlLabel": "Label URL Dasar", + "setPassword": "Atur Kata Sandi", + "safeSearchStrict": "Pencarian Aman Ketat", + "noChangesSinceBackup": "Tidak Ada Perubahan Sejak Pencadangan", + "modelsPathHint": "Petunjuk Jalur Model", + "audioTranscriptions": "Transkripsi Audio", + "testCombo": "Uji Kombinasi", + "mcpQuickStartTitle": "Judul Mulai Cepat Mcp", + "comboUpdated": "Kombinasi Diperbarui", + "weighted": "Berbobot", + "providers": "Penyedia", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", + "noFallbackChainsDesc": "Deskripsi Tanpa Rantai Fallback", + "yesImport": "Ya, Impor", + "lockoutsAutoRefreshHint": "Petunjuk Penyegaran Otomatis Penguncian", + "tabApis": "Tab API", + "sectionDescription": "Deskripsi Bagian", "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", + "purgeLogsFailed": "Gagal Membersihkan Log", + "latency": "Latensi", + "testAllOAuth": "Uji Semua O Auth", + "mcpQuickStartStep3": "Langkah 3 Mulai Cepat Mcp", + "repairEnvFailed": "Gagal Memperbaiki Env", + "zedImportHint": "Petunjuk Impor Zed", + "modelsAcrossEndpoints": "Model di Seluruh Endpoint", + "autoDisableBannedAccounts": "Nonaktifkan Otomatis Akun yang Diblokir", + "securityDesc": "Deskripsi Keamanan", + "listModels": "Daftar Model", + "backupRestore": "Pencadangan dan Pemulihan", "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "zedImportSuccess": "Impor Zed Berhasil", + "lastHeaderUpdate": "Pembaruan Header Terakhir", + "categoryCore": "Kategori Inti", + "noFallbackChains": "Tidak Ada Rantai Fallback", + "noSearchProviders": "Tidak Ada Penyedia Pencarian", + "autoBalance": "Penyeimbangan Otomatis", + "noModelsYet": "Belum Ada Model", + "signatureFamily": "Kelompok Tanda Tangan", + "externalApiCalls": "Panggilan API Eksternal", + "providerOverridesDesc": "Deskripsi Penggantian Penyedia", + "signatureTool": "Alat Tanda Tangan", + "connectionFailed": "Koneksi Gagal", + "activeLimitersPlural": "Pembatas Aktif Jamak", + "doneDesc": "Deskripsi Selesai", + "down": "Tidak Aktif", + "noDataYet": "Belum Ada Data", + "activeProviders": "Penyedia Aktif", + "nameInvalid": "Nama Tidak Valid", + "skip": "Lewati", + "createChain": "Buat Rantai", + "audioSpeech": "Ucapan Audio", + "cacheCleared": "Cache Dibersihkan", + "searchTypeNews": "Jenis Pencarian Berita", + "durationMillisecondsShort": "Durasi Milidetik Singkat", + "addOpenAICompatible": "Tambahkan yang Kompatibel dengan OpenAI", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "Dalam Antrean", + "domainPlaceholder": "Placeholder Domain", + "durationMinutesShort": "Durasi Menit Singkat", + "verifyingConnection": "Memverifikasi Koneksi", + "imageProviders": "Penyedia Gambar", + "protocolToolsLabel": "Label Alat Protokol", + "queryPlaceholder": "Placeholder Kueri", + "videoGeneration": "Pembuatan Video", + "timeRangeWeek": "Rentang Waktu Minggu", + "limitExhausted": "Batas Habis", + "failedDisable": "Gagal Menonaktifkan", + "inMemoryNote": "Catatan Dalam Memori", + "compatibleHint": "Petunjuk Kompatibilitas", + "errorShort": "Kesalahan Singkat", + "advancedHint": "Petunjuk Lanjutan", + "restoreFailed": "Pemulihan Gagal", + "searchProvidersHeading": "Judul Penyedia Pencarian", + "comboName": "Nama Kombinasi", + "autoDisableDescription": "Deskripsi Penonaktifan Otomatis", + "embeddingsDesc": "Deskripsi Embedding", + "operational": "Beroperasi", + "testAllApiKey": "Uji Semua Kunci API", + "backupCreated": "Cadangan Dibuat", + "errorDuringImport": "Terjadi Kesalahan Saat Mengimpor", + "comboDefaultsGuideHint2": "Petunjuk Panduan Default Kombinasi 2", + "connecting": "Menghubungkan", + "fillModelAndProviders": "Isi Model dan Penyedia", + "syncing": "Menyinkronkan", + "resetConfirm": "Konfirmasi Atur Ulang", + "trackMetrics": "Lacak Metrik", + "successful": "Berhasil", + "recovering": "Memulihkan", + "autoDisableThreshold": "Ambang Penonaktifan Otomatis", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Menyinkronkan Data", + "cloudBenefitPorts": "Port Manfaat Cloud", + "compatibleProviders": "Penyedia yang Kompatibel", "freeTierProviders": "Penyedia Tingkat Gratis", "freeTierLabel": "Tersedia tingkat gratis", "freeTierProvidersDesc": "Penyedia dengan tingkatan gratis — beberapa memerlukan pendaftaran kunci API, yang lain tidak memerlukan kredensial sama sekali.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Hapus Cache", + "reqs": "Permintaan", + "addAnthropicCompatible": "Tambahkan Penyedia yang Kompatibel dengan Anthropic", + "apiKeyProviders": "Penyedia Kunci API", + "tabsAria": "ARIA Tab", + "resetting": "Mengatur Ulang", + "millisecondsAbbr": "Singkatan Milidetik", + "backupReasonPreRestore": "Alasan Pencadangan Sebelum Pemulihan", + "disableCloud": "Nonaktifkan Cloud", + "newProviderNameAria": "ARIA Nama Penyedia Baru", + "passwordsMismatch": "Kata Sandi Tidak Cocok", + "a2aQuickStartStep3": "Langkah 3 Mulai Cepat A2A", + "liveMonitorDescriptionSuffix": "Akhiran Deskripsi Monitor Langsung", + "failedAddProvider": "Gagal Menambahkan Penyedia", + "addAtLeastOneProvider": "Tambahkan Setidaknya Satu Penyedia", + "reasonSeparator": "Pemisah Alasan", + "zedImporting": "Zed Sedang Mengimpor", + "confirmPasswordPlaceholder": "Placeholder Konfirmasi Kata Sandi", + "whatYouGet": "Yang Anda Dapatkan", + "signatureSession": "Sesi Tanda Tangan", + "errorCountNoCode": "Jumlah Kesalahan Tanpa Kode", + "testing": "Menguji", + "providersCommaSeparated": "Penyedia Dipisahkan dengan Koma", + "exportDatabase": "Ekspor Basis Data", + "hitRate": "Tingkat Hit", + "completionsLegacy": "Penyelesaian Lama", + "removeModel": "Hapus Model", + "timeRangeDay": "Rentang Waktu Harian", + "cloudRequestFailed": "Permintaan Cloud Gagal", + "updatedAt": "Diperbarui Pada", + "monitoredProvidersHint": "Petunjuk Penyedia yang Dipantau", + "connectionSuccessful": "Koneksi Berhasil", + "latencyP50": "Latensi P50", + "logsDeleted": "Log Dihapus", + "chatTester": "Penguji Chat", + "safeSearchOff": "Pencarian Aman Nonaktif", + "nameHint": "Petunjuk Nama", + "debugToggle": "Tombol Debug", + "embedding": "Penyematan", + "issuesLabel": "Label Masalah", + "optionAny": "Opsi Apa Pun", + "maxNestingDepth": "Kedalaman Maksimum Bersarang", + "rerank": "Pemeringkatan Ulang", + "checking": "Memeriksa", + "getStarted": "Mulai", + "restoreSuccess": "Pemulihan Berhasil", + "issuesDetected": "Masalah Terdeteksi", + "signatureCache": "Cache Tanda Tangan", + "modelLockouts": "Penguncian Model", + "usingCloudProxy": "Menggunakan Proxy Cloud", + "loadingHealth": "Memuat Status Kesehatan", + "providerOverrides": "Pengesampingan Penyedia", + "audioTranscriptionDesc": "Deskripsi Transkripsi Audio", + "learnedFromHeaders": "Dipelajari dari Header", + "totalRequests": "Total Permintaan", + "cloudUnstableNote": "Catatan Ketidakstabilan Cloud", "gamificationAdmin": "Admin Gamifikasi", "monitorAnomaliesAndHealth": "Pantau anomali dan kesehatan sistem", "flaggedAnomalies": "Anomali yang Ditandai", @@ -704,7 +704,7 @@ "apiKey": "Kunci API", "xpLastHour": "XP (1 jam)", "zScore": "Skor-Z", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Mencurigakan", "tokensCommunityServers": "Server Komunitas", "tokensServerNamePlaceholder": "Nama server", "tokensApiKeyPlaceholder": "Kunci API", @@ -795,50 +795,50 @@ "batchFilePurpose": { "batch": "Input batch", "batch-output": "Output batch", - "fine-tune": "Fine-tuning", + "fine-tune": "Penyempurnaan", "assistants": "Asisten" }, "batchPageLoadingMore": "Memuat lebih banyak…", "recommended": "Direkomendasikan", "understand": "Saya mengerti", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", + "batchConceptTitle": "Pemrosesan batch", + "batchConceptSubtitle": "Proses ribuan permintaan secara asinkron dengan biaya sekitar 50% lebih rendah (jangka waktu 24 jam). Ideal untuk evaluasi, klasifikasi, dan embedding.", + "batchConceptHowItWorks": "Cara kerjanya", + "batchConceptBenefit50pct": "Diskon 50% untuk token input + output", + "batchConceptAsync24h": "Asinkron dengan jangka waktu penyelesaian 24 jam", + "batchConceptUseCases": "Terbaik untuk klasifikasi massal, evaluasi, dan embedding", + "batchHeaderSubtitle": "Jalankan banyak permintaan sebagai satu tugas", + "batchStep1": "1 · Unggah JSONL", + "batchStep1Desc": "Tambahkan permintaan", + "batchStep2": "2 · Buat batch", + "batchStep2Desc": "Jalankan tugas", + "batchStep3": "3 · Dapatkan hasil", + "batchStep3Desc": "Unduh output", + "filesConceptTitle": "File batch", + "filesConceptSubtitle": "File JSONL yang digunakan oleh batch: permintaan input, hasil, dan kesalahan.", + "filesConceptInput": "Input — JSONL Anda dengan satu permintaan per baris", + "filesConceptOutput": "Output — hasil dari permintaan yang telah selesai", + "filesConceptError": "Kesalahan — permintaan yang gagal", + "filesConceptRetention": "Retensi: 30 hari secara default (29 hari di Anthropic)", + "wizardTitle": "Batch baru", + "wizardClose": "Tutup", + "wizardNext": "Berikutnya", + "wizardBack": "Kembali", + "wizardCancel": "Batal", + "wizardCreate": "Buat batch", + "wizardCreating": "Membuat…", + "wizardStep1Destination": "Tujuan", + "wizardStep2Input": "Masukan", + "wizardStep3Validate": "Validasi", + "wizardStep4Cost": "Biaya & buat", + "wizardProviderLabel": "Penyedia", + "wizardEndpointLabel": "Titik akhir", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (akan kami konversi)", + "wizardDropOrPick": "Letakkan file di sini atau klik untuk memilih", + "wizardCsvMappingTitle": "Petakan kolom CSV → kolom permintaan", + "wizardCsvMappingAddField": "Tambahkan kolom", "wizardCsvNoColumns": "Tidak ada kolom yang terdeteksi di header CSV.", "wizardCsvIgnoreColumn": "— abaikan —", "wizardCsvCustomIdMapped": "custom_id dipetakan", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} baris diurai", "wizardCsvRowsSkipped": "{count} baris dilewati", "wizardCsvRowError": "Baris {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Semua baris valid", "wizardValidating": "Memvalidasi…", "wizardValidationParseFailed": "Validasi gagal — tidak dapat mengurai konten.", "wizardValidationSummary": "{lines} baris · {ids} custom_ids unik", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "custom_ids duplikat terdeteksi:", "wizardValidationFirstErrors": "Kesalahan ({count} pertama):", "wizardValidationLine": "Baris {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Kesalahan validasi", + "wizardValidationPreview": "Pratinjau (5 permintaan pertama)", + "wizardValidationSamplingNote": "File berukuran besar — divalidasi melalui pengambilan sampel (1000 baris pertama + 100 baris terakhir). Validasi penuh dijalankan di sisi server.", + "wizardCostSync": "Biaya sinkron", + "wizardCostBatch": "Biaya batch (-50%)", + "wizardCostSavings": "Penghematan", + "wizardCostEstimatedNotice": "Perkiraan biaya — tagihan sebenarnya dapat berbeda.", + "wizardErrorUpload": "Gagal mengunggah file. Coba lagi.", + "wizardErrorCreate": "Gagal membuat batch. Coba lagi.", + "wizardEmptyProviders": "Hubungkan provider yang mendukung batch (OpenAI, Anthropic, atau Gemini) untuk membuat batch.", + "uploadModalTitle": "Unggah file batch", + "uploadModalDropOrPick": "Letakkan file .jsonl atau klik untuk memilih", + "uploadModalUpload": "Unggah", + "uploadModalCancel": "Batal", + "uploadModalError": "Pengunggahan gagal. Coba lagi.", + "uploadModalSuccess": "Diunggah", + "uploadModalSizeLimit": "Maks. 512 MB", + "batchListNewButton": "Batch baru", + "batchListAutoRefresh": "Muat ulang otomatis 30 dtk", + "batchListCostColumn": "Biaya", + "batchActionCancel": "Batal", + "batchActionDownloadOutput": "Unduh output", + "batchActionDownloadErrors": "Unduh kesalahan", + "batchActionRetry": "Coba ulang yang gagal", + "batchActionRetryConfirm": "Coba ulang {n} permintaan yang gagal? Biaya akhir bergantung pada token aktual yang digunakan.", + "expirationBadgeCritical": "Kritis", + "expirationBadgeWarning": "Segera", + "expirationBadgeNormal": "Tertunda", + "expirationBadgeExpired": "Kedaluwarsa", + "filesListUploadButton": "Unggah", + "filesListUsedByColumn": "Digunakan oleh", + "filesListUsedByNone": "Tidak ada", + "filesListUsedByRoleInput": "masukan", + "filesListUsedByRoleOutput": "keluaran", + "filesListUsedByRoleError": "kesalahan", + "filesListSizeColumn": "Ukuran", + "batchListProgressPartial": "(sebagian)", + "batchListProviderColumn": "Penyedia", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", + "batchListProviderOther": "Lainnya", + "batchListTitle": "Batch", + "batchListCount": "{count} batch", + "batchListRemovingCompleted": "Menghapus…", + "batchListRemoveCompleted": "Hapus yang selesai", "batchListTableStatus": "Status", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Titik akhir", "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableProgress": "Progres", + "batchListTableCreated": "Dibuat", + "batchListTableExpires": "Kedaluwarsa", + "batchListLoading": "Memuat…", + "batchListEmpty": "Tidak ada batch yang ditemukan", + "batchListValidating": "Memvalidasi…", + "batchStatusAll": "Semua status", + "batchStatusInProgress": "Sedang diproses", + "batchStatusValidating": "Memvalidasi", + "batchStatusFinalizing": "Menyelesaikan", + "batchStatusCompleted": "Selesai", + "batchStatusFailed": "Gagal", + "batchStatusCancelled": "Dibatalkan", + "batchStatusCancelling": "Membatalkan", + "batchStatusExpired": "Kedaluwarsa", + "batchStatusCompletedWithFailures": "selesai dengan kegagalan", + "batchStatusInProgressWithFailures": "sedang diproses (dengan kegagalan)", + "batchStatusFinalizingWithFailures": "sedang menyelesaikan (dengan kegagalan)", + "batchStatusCancelledWithFailures": "dibatalkan dengan kegagalan", + "batchStatusExpiredWithFailures": "kedaluwarsa (sebagian)", + "wizardCostEstimating": "Memperkirakan biaya…", + "wizardCostRequests": "Permintaan", + "wizardCostInputTok": "token input", + "wizardCostOutputTok": "token output", + "wizardCostWindow": "Jendela", + "wizardDestinationSelectProvider": "Pilih penyedia…", + "wizardDestinationSelectModel": "Pilih model…", + "wizardDestinationConnectProvider": "Hubungkan penyedia", + "batchListBatchCreated": "Batch {id} dibuat — memuat ulang daftar…", + "batchListBatchCreatedDismiss": "Tutup", + "batchListRefreshing": "Memuat ulang…", + "batchListRefresh": "Muat ulang", + "uploadFileModalRemove": "Hapus", + "uploadFileModalUploading": "Mengunggah…", + "wizardInputReading": "Membaca file…", + "wizardInputReady": "Siap", + "wizardInputLargeFileLabel": "File besar — melakukan validasi sampel", + "wizardInputCsvJsonlReady": "JSONL dibuat — siap divalidasi.", + "wizardInputLargeFileWarning": "File besar terdeteksi — validasi dijalankan dengan pengambilan sampel (5 MB pertama + 100 KB terakhir). Validasi penuh dilakukan di sisi server.", + "wizardCostWindow24h": "Batas waktu penyelesaian 24 jam", + "wizardValidationFieldsOk": "kolom wajib valid", + "filesListDelete": "Hapus", + "filesListDownload": "Unduh", + "batchDetailActionCancel": "Batalkan batch", + "batchDetailActionRetry": "Coba lagi permintaan yang gagal", + "batchDetailCancelling": "Membatalkan…", + "batchDetailRetrying": "Menyiapkan percobaan ulang…", + "batchDetailCancelConfirm": "Batalkan batch ini? Permintaan yang sedang diproses akan dihentikan.", + "batchActionCancelError": "Gagal membatalkan batch. Coba lagi.", + "batchActionRetryError": "Gagal mencoba ulang permintaan yang gagal. Coba lagi.", + "batchConceptRetentionNote": "File hasil dan kesalahan disimpan selama 30 hari (Anthropic: 29 hari)", "batchFilesSizeColumn": "Ukuran", "toggleNoAuthProvider": "Alihkan penyedia tanpa otentikasi", "loadingModels": "Memuat model…", @@ -988,14 +988,14 @@ "disabled": "Dinonaktifkan", "featureFlagOmnirouteEmergencyFallbackDescription": "Arahkan permintaan yang kehabisan anggaran ke penyedia/model fallback gratis darurat.", "featureFlagArenaEloSyncEnabledDescription": "Aktifkan sinkronisasi ELO papan peringkat Arena AI berkala untuk peringkat kecerdasan model.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Buat dan sisipkan ringkasan percakapan ketika perutean kombo beralih model. Nonaktifkan untuk memperlakukan peralihan model secara terpisah dan mencegah permintaan serah terima latar belakang untuk semua kombo yang ada maupun yang akan dibuat.", "featureFlagExposeCcDiscoveryAliasesDescription": "Iklankan claude/<provider>/<model> mirror ids di /v1/models sehingga daftar penemuan model gateway Claude Code mencantumkan model non-Claude. Peringatan: menggandakan entri katalog untuk semua klien saat diaktifkan secara global.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Sakelar utama untuk alias gateway no-think/<provider>/<model>. Aktif (bawaan): /v1/models menampilkan varian tanpa penalaran untuk setiap model Claude yang memenuhi syarat dan mendukung penalaran, serta id no-think/ yang dikirim dalam permintaan akan diarahkan kembali ke model sebenarnya dengan penalaran dinonaktifkan. Nonaktif: tidak ada varian yang ditampilkan dan id no-think/ diperlakukan seperti id model lain yang tidak dikenal. Opsi ikut serta/tidak ikut serta ModelSpec.noThinkingAlias per model tetap berlaku saat fitur ini aktif.", "featureFlagChatVirtualLanesEnabledDescription": "Aktifkan jalur penerimaan virtual adaptif per-tenant untuk pengiriman penyedia (#9654): lonjakan satu tenant tidak lagi mengembalikan 503 ke tenant lain. Variabel lingkungan OMNIROUTE_CHAT_VIRTUAL_LANES menang atas pengaturan dasbor ini; perubahan berlaku setelah server dimulai ulang.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Halaman penyedia di dasbor: tampilkan lencana Gratis hanya pada sinyal yang didukung penyedia — menghapus heuristik nama tampilan, kolom gratis non-boolean, dan akhiran :free pada penyedia terdaftar tanpa tingkat gratis yang terdokumentasi. Jika dinonaktifkan, aturan lencana lama tetap digunakan.", + "featureFlagProxySkipRecentlyFailedDescription": "Pool proxy dan rotasi per akun opencode berhenti menyajikan kembali proxy yang baru saja gagal (probe TCP ditolak atau respons 429 diterima melaluinya) selama periode per proses yang berlipat ganda setiap kali kegagalan berulang, hingga batas maksimum. Status proxy tidak ditulis; jika setiap kandidat disisihkan, pilihannya tetap tidak berubah. Nonaktif secara default: urutan pemilihan sama persis dengan rotasi biasa.", + "featureFlagProxyPoolEgressObservationDescription": "Tampilkan, di bawah pool proxy pada dasbor, jumlah IP keluar yang teramati melayani anggotanya selama 24 jam terakhir, jumlah koneksi yang menggunakannya, dan jumlah terbanyak yang terlihat di balik satu IP. Hanya-baca, dihitung dari log proxy, dan tidak pernah digunakan untuk perutean. Nonaktif secara default: editor pool tidak berubah dan rute observasi memberikan jawaban null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Dalam pemeriksaan kesehatan proxy, izinkan probe yang ditolak oleh target (401/403/429: proxy meneruskan, tetapi tujuan menolak IP keluar ini) mereset rentetan kegagalan berturut-turut proxy, seperti probe yang berhasil dilayani. Nonaktif secara default: penolakan tetap netral dan mempertahankan rentetan tersebut. Respons 5xx tetap tidak meyakinkan dalam kedua kasus, dan penolakan tidak pernah menghapus, menonaktifkan, atau mengaktifkan kembali proxy.", "sidebar": { "home": "Rumah", "dashboard": "Dasbor", @@ -1011,12 +1011,12 @@ "media": "Media", "settings": "Pengaturan", "translator": "Penerjemah", - "playground": "Playground", - "searchTools": "Search Tools", + "playground": "Arena uji", + "searchTools": "Alat Pencarian", "agents": "Agen", "cloudAgents": "Agen Awan", - "memory": "Memory", - "skills": "Skills", + "memory": "Memori", + "skills": "Keterampilan", "omniSkills": "Keahlian Omni", "agentSkills": "Keterampilan Agen", "chaosConfig": "Mode Chaos", @@ -1055,64 +1055,64 @@ "serverDisconnectedMsg": "Server proxy telah dihentikan atau dimulai ulang.", "expandSidebar": "Luaskan bilah sisi", "collapseSidebar": "Ciutkan bilah sisi", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themes": "Tema", + "presetColors": "Warna populer", + "createTheme": "Buat tema", + "chooseColor": "Pilih satu warna", + "themeCoral": "Koral", + "themeBlue": "Biru", + "themeRed": "Merah", + "themeGreen": "Hijau", + "themeViolet": "Ungu", + "themeOrange": "Oranye", + "themeCyan": "Sian", "cliToolsShort": "Alat", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "Pekerjaan Batch", + "themeSystem": "Sistem Tema", + "whitelabelingDesc": "Deskripsi White-label", + "switchThemes": "Ganti Tema", + "themeAccentDesc": "Deskripsi Aksen Tema", + "uploadFavicon": "Unggah Favicon", + "themeDark": "Tema Gelap", + "customLogoDesc": "Deskripsi Logo Kustom", + "sidebarVisibilityToggle": "Tombol Visibilitas Bilah Samping", + "themeAccent": "Aksen Tema", + "resetFavicon": "Atur Ulang Favicon", + "whitelabeling": "Pelabelan Merek Kustom", + "darkMode": "Mode Gelap", + "uploadLogo": "Unggah Logo", + "themeLight": "Tema Terang", + "appName": "Nama Aplikasi", + "appNameDesc": "Deskripsi Nama Aplikasi", + "resetLogo": "Atur Ulang Logo", + "customFavicon": "Favicon Kustom", + "hideHealthLogs": "Sembunyikan Log Kesehatan", + "customLogo": "Logo Kustom", + "appearance": "Tampilan", + "themeSelectionAria": "ARIA Pemilihan Tema", + "themeCreate": "Buat Tema", + "customFaviconDesc": "Deskripsi Favicon Kustom", + "logoPreview": "Pratinjau Logo", + "themeCustom": "Tema Kustom", + "hideHealthLogsDesc": "Deskripsi Sembunyikan Log Kesehatan", + "faviconPreview": "Pratinjau Favicon", + "changelog": "Catatan Perubahan", + "contextSection": "Konteks & Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Kombinasi Mesin", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Pengaturan Kompresi", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Studio Kombinasi", "combosLiveSubtitle": "Kaskade perutean langsung", "compressionStudio": "Compression Studio", "compressionExclusions": "Pengecualian", @@ -1126,147 +1126,147 @@ "contextUltraSubtitle": "Pemangkasan heuristik", "contextOmniglyphSubtitle": "Konteks sebagai gambar", "compressionStudioSubtitle": "Kaskade mesin langsung", - "compressionExclusionsSubtitle": "Per-model/endpoint bypass", + "compressionExclusionsSubtitle": "Pelewatan per model/endpoint", "chaosConfigSubtitle": "Eksekusi paralel multi-model", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Perutean", + "protocolsSection": "Protokol", + "agentsAiSection": "Agen & AI", + "cacheContextSection": "Cache & Konteks", + "analyticsSection": "Analitik", + "costsSection": "Biaya", + "monitoringSection": "Pemantauan", + "auditSecuritySection": "Audit & Keamanan", + "devtoolsSection": "Alat Pengembang", + "configurationSection": "Konfigurasi", + "aiFeaturesSection": "Fitur AI", "mcp": "MCP", "a2a": "A2A", "plugins": "Plugin", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "Endpoint API", + "batchFiles": "File", + "analyticsEvals": "Evaluasi", + "analyticsSearch": "Pencarian", + "analyticsUtilization": "Pemanfaatan", + "analyticsComboHealth": "Kesehatan Kombinasi", + "analyticsCompression": "Kompresi", + "costsBudget": "Anggaran", "costsFreeTiers": "Anggaran Tingkat Gratis", "costsFreeTiersSubtitle": "Alokasi token gratis bulanan", "freeProviderRankings": "Peringkat Penyedia Gratis", "freeProviderRankingsSubtitle": "Penyedia gratis terbaik yang diperingkat berdasarkan skor ELO model", "radar": "Katalog Radar", "radarSubtitle": "Katalog model gratis yang diperkaya komunitas", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Berbagi Kuota", + "costsPricing": "Harga", + "logsProxy": "Log Proxy", + "logsConsole": "Konsol", + "logsActivity": "Aktivitas", + "auditMcp": "Audit MCP", "auditA2a": "Audit A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Tampilan", + "settingsAi": "Pengaturan AI", + "settingsSecurity": "Keamanan", "settingsAccessTokens": "Token Akses", "settingsFeatureFlags": "Bendera Fitur", - "settingsCache": "Cache", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsCache": "Tembolok", + "settingsAuthz": "Otorisasi", + "settingsRouting": "Perutean", + "settingsResilience": "Ketahanan", "modelLockout": "Penguncian Model", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Lanjutan", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Kuota Penyedia", + "providerQuota": "Kuota Penyedia", + "runtime": "Waktu Proses", + "consoleLogs": "Log Konsol", + "logsTimeline": "Linimasa", "logsTimelineSubtitle": "Garis waktu permintaan visual", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Percakapan", + "conversationsSubtitle": "Percakapan agenik multigiliran", + "globalRouting": "Perutean Global", + "mitmProxy": "Proksi MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", + "agenticFeaturesSection": "Fitur Agentik", + "otherFeaturesSection": "Fitur Lainnya", + "compressionContextGroup": "Kompresi Konteks", + "gamificationGroup": "Gamifikasi", + "toolsGroup": "Alat", + "integrationsGroup": "Integrasi", + "proxyGroup": "Proksi", + "costsParametersGroup": "Parameter Biaya", "auditGroup": "Audit", "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "homeSubtitle": "Ringkasan dasbor", + "providersSubtitle": "Kelola penyedia AI", + "quotaTrackerSubtitle": "Lacak batas penggunaan", + "providerQuotaSubtitle": "Lacak batas penggunaan penyedia", + "runtimeSubtitle": "Ketahanan dan sesi secara real-time", + "contextCombosSubtitle": "Gabungkan mesin kompresi", + "cliToolsSubtitle": "Konfigurasikan runtime CLI", + "agentsSubtitle": "Kelola agen lokal", + "cloudAgentsSubtitle": "Kelola agen berbasis cloud", + "apiEndpointsSubtitle": "Ekspos endpoint khusus", + "proxySubtitle": "Pengaturan proksi HTTP", + "mitmProxySubtitle": "Intersepsi MITM", + "oneProxySubtitle": "Gateway proksi publik", + "leaderboard": "Papan peringkat", + "profile": "Profil", + "tokens": "Token", + "gamificationAdmin": "Admin Gamifikasi", + "leaderboardSubtitle": "Peringkat dan pencapaian", + "profileSubtitle": "Akun dan preferensi", + "tokensSubtitle": "Penggunaan token dan anggaran", + "gamificationAdminSubtitle": "Pemantauan anomali dan antipenyalahgunaan", + "usageSubtitle": "Statistik lalu lintas dan penggunaan", + "analyticsComboHealthSubtitle": "Keandalan target kombo", + "analyticsUtilizationSubtitle": "Pemanfaatan penyedia", + "costsSubtitle": "Rincian pengeluaran", + "cacheSubtitle": "Tingkat hit cache", + "analyticsCompressionSubtitle": "Statistik penghematan token", + "analyticsSearchSubtitle": "Analitik alat pencarian", + "analyticsEvalsSubtitle": "Hasil rangkaian evaluasi", "providerStats": "Statistik Penyedia", "providerStatsSubtitle": "Metrik latensi dan performa", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Log aplikasi", + "logsProxySubtitle": "Log lalu lintas proksi", + "consoleLogsSubtitle": "Keluaran konsol", + "logsActivitySubtitle": "Log aktivitas pengguna", + "healthSubtitle": "Pemeriksaan kesehatan sistem", + "costsPricingSubtitle": "Aturan harga per model", + "costsBudgetSubtitle": "Batas anggaran", + "costsQuotaShareSubtitle": "Bagikan kuota penyedia di antara kunci", + "auditLogSubtitle": "Audit otorisasi", + "auditMcpSubtitle": "Audit server MCP", + "auditA2aSubtitle": "Audit protokol A2A", + "translatorSubtitle": "Konversi format", + "playgroundSubtitle": "Uji prompt secara langsung", + "searchToolsSubtitle": "Cari registri alat", + "memorySubtitle": "Memori agen persisten", + "omniSkillsSubtitle": "Registri keterampilan sandbox", + "agentSkillsSubtitle": "Registri keterampilan A2A", + "mcpSubtitle": "Kontrol server MCP", + "a2aSubtitle": "Server protokol A2A", "pluginsSubtitle": "Marketplace & penginstalan plugin", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "File media dalam cache", + "batchFilesSubtitle": "File masukan/keluaran batch", + "settingsSubtitle": "Semua pengaturan", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Tema dan tata letak", + "settingsAiSubtitle": "Default perilaku AI", + "globalRoutingSubtitle": "Aturan perutean global", + "settingsResilienceSubtitle": "Percobaan ulang dan pemutus sirkuit", + "settingsAdvancedSubtitle": "Opsi pengguna tingkat lanjut", + "settingsSecuritySubtitle": "Autentikasi dan enkripsi", "settingsAccessTokensSubtitle": "Token CLI berlingkup untuk mode remote", "settingsFeatureFlagsSubtitle": "Alihkan kemampuan sistem", "settingsCacheSubtitle": "Katalog model dan caching respons", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Bilah sisi", + "settingsSidebarSubtitle": "Sesuaikan tata letak bilah sisi", "settingsAuthzSubtitle": "Inventaris rute dan kebijakan bypass", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Dokumentasi", + "issuesSubtitle": "Laporkan bug", + "changelogSubtitle": "Catatan rilis", "costsQuotaPlans": "Paket & Kuota", "costsQuotaPlansSubtitle": "Konfigurasikan paket berdasarkan penyedia", "activity": "Aktivitas", @@ -1275,16 +1275,16 @@ "systemGroup": "Sistem", "costsOverview": "Ikhtisar", "costsOverviewSubtitle": "Analisis biaya terkonsolidasi", - "agentBridge": "Agent Bridge", + "agentBridge": "Jembatan Agen", "agentBridgeSubtitle": "Cegat lalu lintas agen IDE", "trafficInspector": "Traffic Inspector", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Periksa lalu lintas permintaan dan respons dari aplikasi Anda", + "trafficInspectorPurpose": "Lihat secara persis apa yang dikirim aplikasi Anda ke dan diterima dari penyedia AI. Berfungsi dengan klien apa pun yang kompatibel dengan OpenAI.", "cliCode": "CLI Code", "cliCodeSubtitle": "Alat kode yang mengarah ke OmniRoute", - "cliAgents": "CLI Agents", + "cliAgents": "Agen CLI", "cliAgentsSubtitle": "Agen CLI otonom", - "acpAgents": "ACP Agents", + "acpAgents": "Agen ACP", "acpAgentsSubtitle": "CLI yang dibuat oleh OmniRoute", "skipToContent": "Lompat ke konten", "mainNavigation": "Navigasi utama", @@ -1345,7 +1345,7 @@ "refresh": "Segarkan", "loading": "Memuat webhook...", "never": "Tidak pernah", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {tidak ada kegagalan} one {# kegagalan} other {# kegagalan}}", "testWebhook": "Kirim Tes", "testSuccess": "Uji webhook berhasil dikirim.", "testFailed": "Pengujian webhook gagal.", @@ -1392,7 +1392,7 @@ "loadFailed": "Gagal memuat log pengiriman webhook.", "empty": "Belum ada pengiriman yang tercatat. Picu event atau kirim payload uji coba.", "status": "Status", - "event": "Event", + "event": "Peristiwa", "latency": "Latensi", "at": "Dikirim Pada" }, @@ -1424,7 +1424,7 @@ "custom": { "endpointUrl": "URL Endpoint", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", - "secretKey": "Secret Key", + "secretKey": "Kunci Rahasia", "secretKeyPlaceholder": "Masukkan secret key atau biarkan kosong untuk membuat otomatis", "secretKeyHint": "Digunakan untuk menandatangani header payload untuk autentikasi." }, @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "Alat Terbaik" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "Tema", + "description": "Pilih tema prasetel atau buat tema sendiri dengan satu warna", + "presetColors": "Warna populer", + "customTheme": "Tema khusus", + "customThemeDesc": "Klik buat tema dan pilih satu warna", + "createTheme": "Buat tema", + "activePreset": "Tema aktif" }, "header": { "logout": "Keluar", @@ -1591,63 +1591,63 @@ "cliToolsDescription": "Konfigurasikan alat CLI", "home": "Rumah", "homeDescription": "Selamat datang di OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Endpoint", + "endpointDescription": "Kelola endpoint proksi, MCP, A2A, dan endpoint API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Pengelolaan dan alat server Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Tugas dan observabilitas protokol Agent-to-Agent", "settings": "Pengaturan", "settingsDescription": "Kelola preferensi Anda", "openaiCompatible": "Kompatibel dengan OpenAI", "anthropicCompatible": "Kompatibel Antropis", "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "mediaDescription": "Hasilkan gambar, video, dan musik", + "themes": "Tema", + "themesDescription": "Pilih tema warna untuk seluruh panel dasbor", + "costsDescription": "Lacak pengeluaran, analisis tren, dan kelola anggaran AI Anda di semua penyedia", + "cacheDescription": "Pantau efisiensi cache prompt penyedia dan penggunaan ulang respons semantik lokal.", + "limitsDescription": "Konfigurasikan batas laju dan kuota per kunci API dan penyedia", + "runtimeDescription": "Observabilitas runtime langsung — pemutus sirkuit, masa tunggu, penguncian model, sesi, dan peringatan kuota", + "apiManagerDescription": "Kelola kunci API dan kontrol akses untuk instans OmniRoute Anda", + "batchDescription": "Proses permintaan dalam volume besar secara asinkron dengan panggilan API secara batch", + "contextCavemanDescription": "Kompresi pesan berbasis aturan, paket bahasa, analitik, dan kontrol mode keluaran.", + "contextRtkDescription": "Kompresi yang memahami perintah untuk keluaran alat, log terminal, dan hasil build.", + "contextCombosDescription": "Tentukan cara mesin digabungkan untuk berbagai skenario perutean.", + "changelogDescription": "Ikuti perkembangan fitur dan pengumuman platform terbaru.", + "agentsDescription": "Kelola dan konfigurasikan alat agen AI: Codex, Devin, Jules, dan agen kustom", + "cloudAgentsDescription": "Orkestrasi agen AI berbasis cloud dengan pelacakan tugas langsung dan persetujuan rencana", + "memoryDescription": "Memori percakapan persisten dengan pencarian semantik dan pengindeksan teks lengkap FTS5", + "skillsDescription": "Instal dan kelola keterampilan sandbox untuk eksekusi prompt dan alat secara otomatis", + "agentSkillsDescription": "Katalog keterampilan siap agen dengan penyalinan URL sekali klik untuk integrasi klien AI", + "translatorDescription": "Terjemahkan dan uji prompt di berbagai format API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Uji prompt secara interaktif dengan respons langsung dari penyedia dan pemeriksaan format", + "searchToolsDescription": "Analitik pencarian, perincian penyedia, tingkat keberhasilan cache, dan pelacakan biaya", + "logsDescription": "Log permintaan waktu nyata, jejak kesalahan, dan pemeriksa peristiwa streaming", + "auditDescription": "Jejak audit kepatuhan untuk penggunaan kunci API, pemanggilan alat MCP, dan peristiwa kebijakan", + "webhooksDescription": "Konfigurasikan endpoint webhook untuk menerima notifikasi peristiwa secara waktu nyata", + "healthDescription": "Ringkasan kesehatan sistem: penyedia, circuit breaker, batas laju, dan basis data", + "proxyDescription": "Konfigurasikan pengaturan proxy upstream untuk koneksi keluar ke penyedia", + "apiEndpointsDescription": "Kelola konfigurasi endpoint API kustom dan penggantian perutean", + "batchFilesDescription": "Jelajahi dan kelola file keluaran serta hasil pekerjaan batch", + "analyticsEvalsDescription": "Hasil evaluasi model dan tolok ukur performa", + "analyticsSearchDescription": "Analitik kueri pencarian, tingkat keberhasilan cache, dan pelacakan biaya", + "analyticsUtilizationDescription": "Metrik pemanfaatan penyedia dan perencanaan kapasitas", + "analyticsComboHealthDescription": "Kesehatan dan performa waktu nyata dari konfigurasi perutean kombinasi", + "analyticsCompressionDescription": "Analitik kompresi konteks dan penghematan token", + "costsBudgetDescription": "Batas anggaran dan peringatan pengeluaran per kunci API dan penyedia", + "costsPricingDescription": "Konfigurasi harga kustom untuk penghitungan biaya token", + "logsProxyDescription": "Log permintaan proxy upstream dan pemeriksaan lalu lintas", + "logsConsoleDescription": "Keluaran konsol aplikasi dan log debug", + "logsActivityDescription": "Jejak audit tindakan pengguna dan peristiwa sistem", + "auditMcpDescription": "Jejak audit pemanggilan alat MCP dan catatan kepatuhan", "auditA2a": "Audit A2A", "auditA2aDescription": "Jejak audit eksekusi tugas A2A, transisi status, dan catatan pemanggilan keterampilan", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Tema, pencitraan merek, dan penyesuaian visual", + "settingsAiDescription": "Perilaku AI, anggaran penalaran, visi, dan pengaturan memori", "settingsCacheDescription": "TTL untuk entri cache katalog model", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Pengaturan autentikasi, otorisasi, dan kontrol akses", "featureFlags": "Bendera Fitur", "featureFlagsDescription": "Kemampuan sistem kontrol dan fitur eksperimental", "featureFlagsActive": "{count} aktif", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Tidak ada tanda yang cocok dengan penelusuran Anda", "featureFlagsSaved": "Bendera diperbarui", "featureFlagsError": "Gagal memperbarui tanda", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Aturan perutean, alias model, default kombinasi, dan pengaturan degradasi", + "settingsResilienceDescription": "Konfigurasi circuit breaker, percobaan ulang, dan fallback", + "settingsAdvancedDescription": "Aturan payload lanjutan, batas permintaan, dan pengaturan API proxy", + "mitmProxyDescription": "Konfigurasikan pengaturan proxy MITM untuk pemeriksaan lalu lintas dan debugging", + "oneProxyDescription": "Konfigurasikan pengaturan 1Proxy untuk perangkaian proxy lanjutan", "omniSkillsDescription": "Instal dan kelola kemampuan sandbox untuk eksekusi prompt dan alat otomatis" }, "cloudSyncStatus": { @@ -1690,7 +1690,7 @@ "statusLabel": "Status sinkronisasi pengaturan jarak jauh: {status}" }, "breadcrumbs": { - "ariaLabel": "Breadcrumb", + "ariaLabel": "Navigasi Jejak", "dashboard": "Dasbor", "providers": "Penyedia", "combos": "Kombo", @@ -1698,7 +1698,7 @@ "general": "Umum", "appearance": "Tampilan", "ai": "Pengaturan AI", - "routing": "Routing", + "routing": "Perutean", "resilience": "Ketahanan", "advanced": "Lanjutan", "accessTokens": "Token Akses", @@ -1706,9 +1706,9 @@ "logs": "Log", "auditLog": "Log Audit", "console": "Konsol", - "logger": "Logger", + "logger": "Pencatat", "translator": "Penerjemah", - "playground": "Playground", + "playground": "Arena Uji", "add": "Tambah", "edit": "Edit", "apiKeys": "Kunci API", @@ -1716,7 +1716,7 @@ "cliCode": "Kode CLI", "cliAgents": "Agen CLI", "acpAgents": "Agen ACP", - "endpoint": "Endpoint", + "endpoint": "Titik Akhir", "apiManager": "Manajer API", "context": "Konteks", "compression": "Kompresi", @@ -1724,7 +1724,7 @@ "analytics": "Analitik", "costs": "Biaya", "health": "Kesehatan", - "runtime": "Runtime", + "runtime": "Waktu Proses", "webhooks": "Webhook", "home": "Beranda", "activity": "Aktivitas", @@ -1744,7 +1744,7 @@ "changelog": "Log Perubahan", "chaos": "Chaos", "cloudAgents": "Agen Cloud", - "live": "Live", + "live": "Langsung", "studio": "Studio", "aggressive": "Agresif", "caveman": "Caveman", @@ -1762,7 +1762,7 @@ "discovery": "Penemuan", "freeProviderRankings": "Peringkat Penyedia Gratis", "radar": "Radar", - "setup": "Setup", + "setup": "Penyiapan", "freeTiers": "Tingkat Gratis", "gamification": "Gamifikasi", "leaderboard": "Papan Peringkat", @@ -1812,7 +1812,7 @@ "reportIssue": "Laporkan masalah", "activeError": "{active} aktif · kesalahan {errors}", "topologyLegendActive": "Aktif", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Terbaru", "topologyLegendError": "Kesalahan", "oauthLabel": "OAuth", "apiKeyLabel": "Kunci API", @@ -1826,11 +1826,11 @@ "updateStarted": "Pembaruan dimulai...", "reloadingPageAutomatically": "Memuat ulang halaman secara otomatis...", "providerTopology": "Topologi Penyedia", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Permintaan Terbaru", + "recentRequestsEmpty": "Belum ada permintaan.", + "recentRequestsModel": "Model", + "recentRequestsTokens": "Masuk / Keluar", + "recentRequestsWhen": "Waktu", "downloadDmg": "Unduh DMG (macOS)", "downloadDmgDescription": "Versi baru dari aplikasi desktop OmniRoute tersedia. Silakan unduh dan instal penginstal DMG macOS untuk memperbarui (sekarang: v{version}).", "downloadExe": "Unduh EXE (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "Catatan Rilis", "readMore": "Baca Selengkapnya", "noAuthLabel": "Tidak Ada Autentikasi", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Bersiaplah untuk melakukan perutean", + "readinessTitle": "Kirim permintaan pertama Anda", + "readinessSubtitle": "Empat langkah sederhana. OmniRoute memeriksa kesiapan sambil Anda melanjutkan.", + "readinessStep1": "Hubungkan penyedia", + "readinessStep2": "Konfigurasikan autentikasi endpoint", + "readinessStep3": "Salin endpoint Anda", + "readinessStep4": "Kirim permintaan uji", + "readinessContinue": "Lanjutkan penyiapan", + "readinessDismiss": "Tutup untuk sekarang" }, "analytics": { "title": "Analisis", @@ -1912,8 +1912,8 @@ "diversityHigherExplanation": "Nilai yang lebih tinggi berarti lalu lintas tersebar di beberapa penyedia.", "diversityNoData": "Tidak ada data penggunaan terbaru yang tersedia.", "chartRequests": "Permintaan", - "chartInput": "Input", - "chartOutput": "Output", + "chartInput": "Masukan", + "chartOutput": "Keluaran", "chartTotal": "Total", "chartCost": "Biaya", "chartShare": "Bagian", @@ -1967,7 +1967,7 @@ "period7D": "7H", "period30D": "30H", "period90D": "90H", - "periodYTD": "YTD", + "periodYTD": "Sejak awal tahun", "periodAll": "Semua", "totalTokens": "Total Token", "inputTokens": "Token Input", @@ -2005,8 +2005,8 @@ "modelStatusError": "Kesalahan", "comboHealth": "Kesehatan Kombinasi", "comboHealthDescription": "Kuota tingkat kombinasi, distribusi penggunaan, dan metrik kinerja", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Analitik Kompresi", + "compressionAnalyticsDescription": "Analitik kompresi — penghematan token, perincian mode, dan statistik penyedia.", "autoRoutingTotalAutoRequests": "Total Permintaan Otomatis", "autoRoutingAvgSelectionScore": "Skor Seleksi Rata-rata", "autoRoutingExplorationRate": "Tingkat Eksplorasi", @@ -2046,7 +2046,7 @@ "comboHealthAutopilotDescription": "Rekomendasi prioritas dari kesehatan kombo, prakiraan, kuota, dan kesehatan penyedia.", "comboHealthIssues": "Masalah", "comboHealthActionable": "{count} dapat ditindaklanjuti", - "comboHealthDown": "Down", + "comboHealthDown": "Tidak aktif", "comboHealthDegraded": "Terdegradasi", "comboHealthHealthy": "Sehat", "comboHealthNoActiveIssues": "Tidak ada masalah kesehatan kombo aktif yang terdeteksi untuk rentang yang dipilih.", @@ -2062,7 +2062,7 @@ "latencyInv": "Latensi", "taskFit": "Kesesuaian tugas", "stability": "Stabilitas", - "tierPriority": "Tier", + "tierPriority": "Tingkat", "tierAffinity": "Kesesuaian tier", "specificityMatch": "Spesifisitas", "contextAffinity": "Konteks", @@ -2073,7 +2073,7 @@ "comboHealthIssueCount": "Masalah {count}", "comboHealthNoInspectableTargets": "Tidak ada target yang dapat diperiksa untuk kombo ini.", "comboHealthAutopilotState": { - "down": "Down", + "down": "Tidak aktif", "degraded": "Perlu perhatian", "healthy": "Sehat" }, @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "Kinerja", "comboHealthPerformanceDescription": "Keandalan dan throughput untuk lalu lintas kombo yang dirutekan.", "comboHealthExecutionTargetsDescription": "Metrik runtime tingkat langkah dan visibilitas kuota untuk target kombo terstruktur.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} permintaan", "comboHealthQuotaScope": "Cakupan kuota: {scope}", "comboHealthTrendValue": "Tren: {trend}", "comboHealthFetchFailed": "Gagal mengambil data kesehatan kombo", @@ -2188,7 +2188,7 @@ "routeRuntimeScoreNow": "Skor runtime saat ini", "routeWouldSelectNow": "Akan memilih sekarang", "routeNoRecomputeCandidates": "Tidak ada peringkat kandidat kombo yang dapat dihitung ulang untuk permintaan ini.", - "runtime": "Runtime", + "runtime": "Waktu proses", "routeTopNow": "Teratas saat ini", "routeFetchLogsFailed": "Gagal mengambil log permintaan", "routeExplainFailed": "Gagal menjelaskan rute", @@ -2233,7 +2233,7 @@ "searchAnalyticsEmptyDescription": "Gunakan POST /v1/search untuk memulai pengalihan pencarian web.", "searchAnalyticsFreeTier": "Tier gratis tersedia: Serper (2.500/bulan), Brave (2.000/bulan), Exa (1.000/bulan), Tavily (1.000/bulan) — total 6.500+ pencarian gratis/bulan dengan failover otomatis.", "autoRoutingNoDataAvailable": "Tidak ada analitik auto-routing yang tersedia. Buat permintaan menggunakan awalan auto/ untuk melihat metrik.", - "defaultVariantLabel": "Default", + "defaultVariantLabel": "Bawaan", "freeTierAvailable": "Tingkat gratis tersedia" }, "apiManager": { @@ -2258,9 +2258,9 @@ "fullAccess": "Akses Penuh", "keyManagement": "Manajemen Kunci API", "keyManagementDesc": "Buat dan kelola kunci API untuk mengautentikasi permintaan ke titik akhir Anda", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Aplikasi Anda mengirimkan permintaan melalui kunci API ke OmniRoute", + "requestFlowYourApp": "Aplikasi Anda", + "requestFlowApiKey": "Kunci API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Jumlah Kunci", "restricted": "Terbatas", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Salin dan simpan kunci ini sekarang — kunci ini tidak akan ditampilkan lagi.", "done": "Selesai", "savePermissions": "Simpan Izin", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Endpoint yang Diizinkan", + "allEndpointsAllowed": "Kunci ini dapat mengakses semua endpoint API.", + "endpointsRestricted": "Dibatasi ke {count} endpoint{count, plural, one {} other {}}.", + "autoResolve": "Resolusi Otomatis", + "autoResolveDesc": "Secara otomatis tetapkan nama model yang ambigu ke penyedia asal untuk kunci API ini.", "streamDefaultMode": "Kompatibilitas Default Stream", "streamDefaultModeDesc": "Mengontrol flag `stream` yang dihilangkan untuk kunci ini. Mode JSON mengembalikan respons non-streaming kecuali klien secara eksplisit meminta SSE.", - "streamDefaultLegacy": "Legacy", + "streamDefaultLegacy": "Lama", "streamDefaultJson": "Kompatibel dengan JSON", "streamDefaultBadge": "Default stream JSON", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Kunci Aktif", + "keyActiveDesc": "Aktifkan atau nonaktifkan kunci API ini. Kunci yang dinonaktifkan akan langsung ditolak dengan 403.", + "accessSchedule": "Jadwal Akses", + "accessScheduleDesc": "Batasi akses pada jam dan hari tertentu dalam seminggu.", + "scheduleFrom": "Dari", + "scheduleUntil": "Hingga", + "scheduleDays": "Hari", + "scheduleTimezone": "Zona waktu", + "scheduleTimezoneHint": "Gunakan nama zona waktu IANA, misalnya America/New_York, Europe/Berlin", + "scheduleActive": "Jadwal", + "disabled": "Dinonaktifkan", + "daySun": "Min", + "dayMon": "Sen", + "dayTue": "Sel", + "dayWed": "Rab", + "dayThu": "Kam", + "dayFri": "Jum", + "daySat": "Sab", "allowAll": "Izinkan Semua", "restrict": "Batasi", "allowAllInfo": "Kunci ini dapat mengakses semua model yang tersedia.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Gagal memperbarui izin. Silakan coba lagi.", "unknownProvider": "tidak diketahui", "copyMaskedKey": "Salin kunci bertopeng", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Kunci lengkap hanya tersedia saat pembuatan — salin saat Anda pertama kali membuat kunci", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# perangkat} other {# perangkat}}", "devicesTooltip": "{count, plural, one {# perangkat IP/User-Agent berbeda yang terlihat dengan kunci ini (30 mnt terakhir)} other {# perangkat IP/User-Agent berbeda yang terlihat dengan kunci ini (30 mnt terakhir)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Kombo yang Diizinkan", "allCombosAllowed": "Kunci ini dapat menggunakan kombo apa pun.", "restrictedComboCount": "Dibatasi hingga {count, plural, one {# kombo} other {# kombo}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# entri tersimpan} other {# entri tersimpan}} tidak ada dalam daftar kombo ini (misalnya aturan perutean) dan akan tetap disimpan seperti sebelumnya.", + "preservedComboRuleHint": "Dipertahankan seperti yang tersimpan. Entri ini bukan kombo dalam daftar di atas, sehingga hanya dapat diubah melalui API.", "apiManagerCustomRateLimits": "Batas Tarif Khusus", "apiManagerCustomRateLimitsDesc": "Ganti batas default global. Biarkan kosong untuk menggunakan default.", "apiManagerRateLimitRequestsPlaceholder": "Permintaan", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Mengizinkan kunci ini untuk mengabaikan kebijakan batas penyedia/akun upstream selama perutean. Kuota USD kunci API tetap berlaku.", "quotaPill": "KUOTA", "quotaModeOnly": "Hanya qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Sewa Eksklusif", + "exclusiveLeaseNoticeTitle": "Sewa Eksklusif", + "exclusiveLeaseNoticeDesc": "Kunci API ini memiliki izin sewa eksklusif untuk perutean koneksi khusus.", + "allConnections": "Semua koneksi", + "onlySelectedConnections": "Hanya koneksi yang dipilih", + "selectAtLeastOneConnection": "Pilih setidaknya satu koneksi atau pilih Semua koneksi.", + "allConnectionsDesc": "Kunci ini dapat menggunakan koneksi aktif apa pun.", + "restrictedToConnections": "Dibatasi untuk {count, plural, one {# koneksi} other {# koneksi}}." }, "auditLog": { "title": "Catatan Audit", @@ -2457,16 +2457,16 @@ "model": "Model", "prompt": "Prompt", "generate": "Hasilkan", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Membuat...", + "loadingModels": "Memuat model yang tersedia...", + "noModels": "Tidak ada model yang tersedia. Konfigurasikan penyedia dengan kemampuan media terlebih dahulu.", + "error": "Pembuatan Gagal", + "result": "Hasil", + "imageDescription": "Buat gambar dari perintah teks menggunakan OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, dan lainnya.", + "videoDescription": "Buat video dengan AnimateDiff, Stable Video Diffusion melalui ComfyUI atau SD WebUI.", + "musicDescription": "Gubah musik menggunakan Stable Audio Open atau MusicGen melalui ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Penyematan", "image": "Gambar", "imageToText": "Gambar ke Teks", "tts": "Teks ke Suara", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "Model speech-to-text OpenRouter menggunakan koneksi OpenRouter yang telah Anda konfigurasikan. Tidak diperlukan kredensial terpisah." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Kueri Pencarian", + "searchResults": "Hasil Pencarian", + "cachedResult": "Di-cache", + "searchCost": "Biaya", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Pengujian pencarian lanjutan dengan perbandingan penyedia", + "compareProviders": "Bandingkan Penyedia", + "rerankResults": "Peringkatkan Ulang Hasil", + "searchHistory": "Riwayat Pencarian", + "urlOverlap": "Tumpang Tindih URL", + "noSearchProviders": "Tidak ada penyedia pencarian yang dikonfigurasi. Tambahkan penyedia di Pengaturan.", + "noRerankModels": "Tidak ada model pemeringkatan ulang yang tersedia", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Penyedia", + "searchType": "Jenis Pencarian", + "maxResults": "Hasil Maksimum", + "filters": "Filter", + "country": "Negara", + "language": "Bahasa", + "timeRange": "Rentang Waktu", + "includeDomains": "Sertakan Domain", + "excludeDomains": "Kecualikan Domain", + "safeSearch": "Pencarian Aman", + "safeSearchOff": "Nonaktif", + "safeSearchModerate": "Moderat", + "safeSearchStrict": "Ketat", + "queryPlaceholder": "Masukkan kueri pencarian...", + "providerAuto": "otomatis (termurah)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "berita", + "optionAny": "apa pun", + "timeRangeDay": "Sehari terakhir", + "timeRangeWeek": "Seminggu terakhir", + "timeRangeMonth": "Sebulan terakhir", + "timeRangeYear": "Setahun terakhir", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Waktu permintaan habis ({seconds} dtk)", + "networkError": "Kesalahan jaringan", + "formatted": "Diformat", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "cache tidak ditemukan", + "cacheHit": "cache ditemukan", + "latency": "Latensi", + "cost": "Biaya", + "results": "Hasil", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Model Pemeringkatan Ulang", + "positionDelta": "Perubahan Posisi", + "emptyState": "Kirim kueri pencarian untuk melihat hasil", "copy": "Salin", "resetToDefault": "Atur ulang ke default", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Cari", + "tabScrape": "Ekstrak", + "tabCompare": "Bandingkan", + "modalitiesGuide": "Panduan modalitas", + "searchConceptTitle": "Pencarian", + "searchConceptDesc": "Pencarian = mengambil daftar hasil web (judul, URL, cuplikan, skor relevansi)", + "scrapeConceptTitle": "Ekstraksi", + "scrapeConceptDesc": "Ekstraksi = mengekstrak konten lengkap dari URL (markdown, teks, atau HTML)", + "compareConceptTitle": "Bandingkan", + "compareConceptDesc": "Bandingkan = menjalankan kueri yang sama pada N penyedia secara berdampingan untuk membandingkan latensi, biaya, dan tumpang tindih hasil", + "rerankConceptTitle": "Urutkan ulang", + "rerankConceptDesc": "Urutkan ulang = menyusun ulang hasil melalui LLM untuk meningkatkan relevansi berdasarkan kueri", + "autoConceptTitle": "Otomatis (termurah)", + "autoConceptDesc": "Otomatis (termurah) = secara otomatis memilih penyedia termurah yang tersedia dengan kredensial yang telah dikonfigurasi", + "providerCatalogTitle": "Katalog Penyedia", + "kindSearch": "Cari", + "kindFetch": "Ambil/Scrape", + "statusConfigured": "Dikonfigurasi", + "statusMissing": "Tidak ada kredensial", + "statusRateLimited": "Terkena batas laju", + "configureProvider": "Konfigurasikan di Penyedia", + "loadingProviders": "Memuat penyedia…", + "failedToLoadProviders": "Gagal memuat penyedia", + "costPerQuery": "Biaya/kueri", + "freeQuota": "Kuota gratis/bln", + "scrapeUrl": "URL yang akan di-scrape", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL wajib diisi", "scrapeUrlInvalid": "URL tidak valid — harus dimulai dengan http:// atau https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", + "scrapeExtract": "Ekstrak", + "scrapeExtracting": "Mengekstrak…", + "scrapeFullPage": "Halaman penuh", "scrapeFormat": "Format", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", + "formatText": "Teks", + "scrapePreview": "Pratinjau", + "scrapeRaw": "Mentah", + "scrapeContentTruncated": "(dipotong, lihat versi mentah)", "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "scrapeProvider": "Penyedia", + "scrapeSize": "Ukuran", "scrapeEmptyState": "Masukkan URL untuk mengekstrak kontennya", "scrapeProvidersAvailable": "Penyedia yang tersedia: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Bandingkan", + "compareRunning": "Membandingkan…", + "autoProvider": "Otomatis (termurah)", + "configuredStatus": "Dikonfigurasi", + "rateLimitedStatus": "Terkena batas laju", + "noCredential": "Tidak ada kredensial", + "searchTypeLabel": "Jenis", + "rerankModelLabel": "Model pengurutan ulang", + "noneOption": "Tidak ada", + "size": "Ukuran", "configurationPane": "Panel konfigurasi", "configuration": "Konfigurasi", "status": "Status", @@ -2661,10 +2661,10 @@ "rawScrapedContent": "Konten mentah hasil scraping", "rawContent": "Konten mentah — {size}", "closeRawModal": "Tutup modal konten mentah", - "httpError": "Error {status}", + "httpError": "Kesalahan {status}", "failed": "Gagal", "requestFailed": "Permintaan gagal", - "embedding": "Embedding", + "embedding": "Penyematan", "embeddingSample": "Halo, dunia!", "image": "Gambar", "imageSample": "Pemandangan tenang dengan pegunungan saat matahari terbenam", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Tambahkan", "antigravityStep2Suffix": "ke file host Anda sebagai 127.0.0.1.", "antigravityStep3": "3. Buka Antigravitasi dan permintaan akan diproksi.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} mengirim permintaan ke endpoint penyedianya. MITM mencegat dan mengalihkannya ke OmniRoute.", + "mitmStep1": "1. Jalankan MITM untuk merutekan permintaan melalui OmniRoute.", + "mitmStep2Prefix": "2. Tambahkan", + "mitmStep2Suffix": "ke file hosts Anda sebagai 127.0.0.1.", + "mitmStep3": "3. Buka {toolName} dan permintaan akan diteruskan melalui proksi.", "sudoPasswordRequiredTitle": "Kata Sandi Sudo Diperlukan", "sudoPasswordHint": "Kata sandi administrator diperlukan untuk mengubah file host dan pengaturan proxy sistem.", "enterSudoPassword": "Masukkan kata sandi sudo", @@ -2908,7 +2908,7 @@ "continue": "Gunakan saat menjalankan Lanjutkan di IDE dan Anda memerlukan konfigurasi penyedia portabel berbasis JSON.", "opencode": "Gunakan saat Anda lebih suka menjalankan agen terminal-asli dan otomatisasi skrip melalui OpenCode.", "kiro": "Gunakan saat mengintegrasikan Kiro dan mengontrol perutean model secara terpusat dari OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Gunakan saat Anda menginginkan IDE berbasis AI dengan model Codeium/Windsurf yang dirutekan melalui OmniRoute.", "antigravity": "Gunakan ketika lalu lintas Antigravitasi/Kiro harus dicegat melalui MITM dan dialihkan ke OmniRoute.", "copilot": "Gunakan saat Anda menginginkan UX gaya obrolan kopilot sambil menerapkan kunci OmniRoute dan aturan perutean.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2928,11 +2928,11 @@ "qwen": "CLI Qwen Code", "cursor": "Editor Kode AI Kursor", "continue": "Lanjutkan Asisten AI", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "Agen coding AI OpenCode (Terminal)", + "kiro": "Amazon Kiro — IDE bertenaga AI", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "CLI asisten coding Sourcegraph Amp", "hermes": "Asisten Terminal AI Hermes", "hermes-agent": "Hermes Agent (oleh Nousresearch) - AI terminal canggih dengan dukungan multi-model (delegasi, visi, kompresi, dll.)", "custom": "Generator konfigurasi CLI atau SDK generik yang kompatibel dengan OpenAI", @@ -2950,7 +2950,7 @@ "interpreter": "CLI agen pengodean otonom Open Interpreter", "omp": "Agen pengodean terminal Oh My Pi", "letta": "Agen CLI Letta dengan memori persisten dan penggunaan alat", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — kerangka kerja coding RLM yang dapat meningkatkan diri dengan dukungan penyedia yang kompatibel dengan OpenAI", "warp": "Terminal AI Warp dengan dukungan penyedia kustom", "agent-deck": "Orkestrator multi-agen Agent Deck", "5dive": "5dive — armada agen coding yang di-host sendiri; satu profil auth mengarahkan semuanya ke OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Instal OpenCode", + "desc": "Instal melalui npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Kunci API" }, "3": { - "title": "Set Base URL", + "title": "Atur URL Dasar", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Pilih Model" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Gunakan Varian Penalaran", + "desc": "Untuk model penalaran, jalankan dengan --variant high/low/max (contoh perintah di bawah)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Buka Pengaturan Kiro", + "desc": "Buka Pengaturan → Penyedia AI" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "URL Dasar", + "desc": "Tempel URL endpoint OmniRoute Anda" }, "3": { - "title": "API Key" + "title": "Kunci API" }, "4": { - "title": "Select Model" + "title": "Pilih Model" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Buka Pengaturan AI", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Tambahkan Penyedia Kustom", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "URL Dasar", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Kunci API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Pilih Model", + "desc": "Pilih model dari menu tarik-turun" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "CLI khusus", - "toolCategories": "Tool Categories", + "toolCategories": "Kategori Alat", "visibleToolsCount": "{count} alat tersedia", "customCliBuilderTitle": "Pembuat CLI yang kompatibel dengan OpenAI", "customCliBuilderDescription": "Hasilkan env vars dan cuplikan JSON untuk CLI atau SDK apa pun yang menerima URL dasar, kunci API, dan ID model yang kompatibel dengan OpenAI.", @@ -3132,15 +3132,15 @@ "hermesRoleTtsAudioTagsDesc": "Generasi tag audio TTS", "hermesRoleTriageSpecifier": "Spesifikasi Triage", "hermesRoleTriageSpecifierDesc": "Spesifikasi triase Isu dan PR", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Pengurai Kanban", "hermesRoleKanbanDecomposerDesc": "Dekomposisi tugas Kanban", "hermesRoleProfileDescriber": "Deskripsi Profil", "hermesRoleProfileDescriberDesc": "Deskripsi profil pengguna", - "hermesRoleGoalJudge": "Goal Judge", + "hermesRoleGoalJudge": "Penilai Sasaran", "hermesRoleGoalJudgeDesc": "Penilaian penyelesaian tujuan", "hermesRoleCurator": "Kurator", "hermesRoleCuratorDesc": "Kurasi keterampilan dan memori", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Pemantau", "hermesRoleMonitorDesc": "Pemantauan latar belakang", "hermesRoleBackgroundReview": "Tinjauan Latar Belakang", "hermesRoleBackgroundReviewDesc": "Tinjauan kode latar belakang", @@ -3152,7 +3152,7 @@ "hermesConfiguredRoles": "{configured}/{total} peran", "hermesQuickApply": "Terapkan model yang sama dengan cepat ke semua peran:", "hermesApplyModelToAll": "Terapkan {model} ke setiap peran", - "hermesViaOmniRoute": "{provider} (via OmniRoute)", + "hermesViaOmniRoute": "{provider} (melalui OmniRoute)", "hermesNotOmniRoute": "{provider} (bukan OmniRoute)", "hermesRemovePendingRole": "Hapus peran ini dari perubahan tertunda", "hermesApply": "Terapkan ke Agen Hermes", @@ -3260,23 +3260,23 @@ "priorityDesc": "Penggantian berurutan: mencoba model 1 terlebih dahulu, lalu 2, dst.", "weightedDesc": "Mendistribusikan lalu lintas berdasarkan persentase bobot dengan fallback", "roundRobinDesc": "Distribusi melingkar: setiap permintaan diteruskan ke model berikutnya secara bergilir", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Relai Konteks", + "contextRelayDesc": "Mempertahankan kesinambungan sesi dengan ringkasan serah terima saat akun dirotasi", "randomDesc": "Pemilihan acak seragam, lalu kembali ke model lainnya", "leastUsedDesc": "Memilih model dengan permintaan paling sedikit, menyeimbangkan beban dari waktu ke waktu", "costOptimizedDesc": "Rutekan ke model termurah terlebih dahulu berdasarkan harga", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Secara konsisten mengarahkan setiap awalan perintah yang dapat digunakan kembali ke akun penyedia yang sama", "resetAware": "RR Sadar Reset", "resetAwareDesc": "Menyeimbangkan sisa kuota dengan reset 5 jam dan mingguan, lalu menghitung skor serupa secara round-robin", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Berbobot Kuota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Acak Ketat", + "strictRandomDesc": "Kocok dek — menggunakan setiap model satu kali sebelum mengocok ulang", "fusion": "Fusi", "fusionDesc": "Menyebarkan prompt ke setiap model panel secara paralel, lalu model juri menyintesis satu jawaban akhir", "fusionJudgeModel": "Model juri", "fusionJudgeModelHelp": "Model yang menyintesis jawaban panel menjadi satu respons akhir. Biarkan kosong untuk menggunakan model panel pertama.", - "fusionMinPanel": "Min panel", + "fusionMinPanel": "Panel minimum", "fusionMinPanelHelp": "Jawaban panel yang berhasil yang diperlukan sebelum model lambat mendapatkan masa tenggang (default 2).", "fusionStragglerGraceMs": "Masa tenggang straggler (ms)", "fusionStragglerGraceMsHelp": "Berapa lama waktu tunggu untuk model panel yang lambat setelah kuorum tercapai (default 8000).", @@ -3288,13 +3288,13 @@ "retryDelay": "Penundaan Coba Lagi (md)", "concurrencyPerModel": "Konkurensi / Model", "queueTimeout": "Batas Waktu Antrian (md)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Ambang Batas Serah Terima", + "contextRelayHandoffThresholdHelp": "Saat penggunaan kuota mencapai ambang batas ini, OmniRoute menghasilkan ringkasan serah terima terstruktur sebelum akun aktif kehabisan kuota.", + "contextRelayMaxMessages": "Pesan Maksimum untuk Ringkasan", + "contextRelayMaxMessagesHelp": "Membatasi jumlah riwayat terbaru yang diringkas ke dalam ringkasan relai.", + "contextRelaySummaryModel": "Model Ringkasan", + "contextRelaySummaryModelHelp": "Model pengganti opsional yang hanya digunakan untuk menghasilkan ringkasan serah terima. Biarkan kosong untuk menggunakan kembali model kombo yang aktif.", + "contextRelayProviderNote": "Relai Konteks saat ini menghasilkan serah terima untuk rotasi akun Codex. Padukan dengan beberapa akun dari penyedia yang sama untuk kesinambungan terbaik.", "advancedHint": "Biarkan kosong untuk menggunakan default global. Ini mengesampingkan pengaturan per penyedia.", "failoverBeforeRetry": "Failover Sebelum Coba Lagi", "maxSetRetries": "Percobaan Ulang Set Maks", @@ -3319,7 +3319,7 @@ "playgroundStatusAvailable": "Tersedia", "playgroundStatusNoQuota": "Tidak Ada Kuota", "playgroundStatusDegraded": "Terdegradasi", - "playgroundStatusError": "Error", + "playgroundStatusError": "Kesalahan", "playgroundStatusUnknown": "Tidak Diketahui", "playgroundNetworkError": "Error jaringan selama simulasi", "playgroundTitle": "Playground Kombo", @@ -3335,7 +3335,7 @@ "playgroundStrategy": "Strategi", "playgroundEstimatedCost": "Est. Biaya", "playgroundEstimatedLatency": "Est. Latensi", - "playgroundFallback": "fallback", + "playgroundFallback": "cadangan", "playgroundWeight": "bobot {value}", "playgroundWarningCount": "Peringatan ({count})", "playgroundErrorCount": "Error ({count})", @@ -3345,40 +3345,40 @@ "weighted": "Tertimbang", "leastUsed": "Paling Sedikit Digunakan", "costOpt": "Pilihan Biaya", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "strategyGuideTitle": "Cara menggunakan strategi ini", + "strategyGuideWhen": "Kapan digunakan", + "strategyGuideAvoid": "Hindari ketika", + "strategyGuideExample": "Contoh", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "Anda memiliki satu model pilihan dan hanya menginginkan cadangan saat terjadi kegagalan.", + "avoid": "Anda perlu mendistribusikan permintaan ke beberapa model.", + "example": "Model pengodean utama dengan cadangan yang lebih murah untuk gangguan layanan." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Anda memerlukan pembagian lalu lintas yang terkontrol di antara beberapa model.", + "avoid": "Anda tidak dapat mempertahankan bobot yang akurat seiring waktu.", + "example": "Peluncuran 80% model stabil + 20% model canary." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Anda menginginkan distribusi yang dapat diprediksi dan merata.", + "avoid": "Model-model terlalu berbeda dalam hal latensi atau biaya.", + "example": "Model yang sama pada beberapa akun untuk menyebarkan throughput." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Anda menginginkan distribusi sederhana dengan penyiapan minimal.", + "avoid": "Anda memerlukan jaminan lalu lintas yang ketat.", + "example": "Pembuatan prototipe cepat dengan model-model yang setara." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Anda menginginkan penyeimbangan adaptif berdasarkan permintaan langsung.", + "avoid": "Lalu lintas terlalu rendah untuk memperoleh manfaat dari penyeimbangan penggunaan.", + "example": "Beban kerja campuran saat satu model sering mengalami beban berlebih." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Pengurangan biaya adalah prioritas utama Anda.", + "avoid": "Data harga tidak tersedia atau sudah usang.", + "example": "Pekerjaan latar belakang atau batch yang mengutamakan biaya lebih rendah." }, "reset-aware": { "when": "Anda merutekan beberapa akun dengan telemetri kuota dan jendela pengaturan ulang yang berbeda.", @@ -3386,19 +3386,19 @@ "example": "Lebih suka pengaturan ulang akun mingguan 60% besok daripada pengaturan ulang akun 80% nanti." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Gunakan saat Anda menginginkan distribusi yang sepenuhnya merata — setiap model digunakan satu kali sebelum diulang.", + "avoid": "Hindari saat model memiliki kualitas atau latensi berbeda dan urutan penggunaan penting.", + "example": "Contoh: Beberapa akun dari model yang sama untuk mendistribusikan penggunaan secara merata." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Gunakan saat Anda menginginkan pemilihan berlatensi rendah menggunakan algoritma Power-of-Two-Choices.", + "avoid": "Hindari untuk kombinasi kecil dengan 2 model atau kurang — tidak ada manfaat dibandingkan round-robin.", + "example": "Contoh: Inferensi berthroughput tinggi di 4+ endpoint model yang setara." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Gunakan saat sesi panjang harus tetap bertahan selama rotasi akun tanpa kehilangan konteks kerja.", + "avoid": "Hindari saat perpindahan akun jarang terjadi atau saat Anda tidak menginginkan permintaan peringkasan tambahan.", + "example": "Contoh: Sesi Codex yang dirotasi di beberapa akun saat kuota hampir habis." }, "fill-first": { "when": "Gunakan ketika Anda ingin menghabiskan kuota satu penyedia sepenuhnya sebelum berpindah ke penyedia berikutnya.", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Jumlah percobaan ulang yang dilakukan sebelum permintaan dinyatakan gagal.", + "retryDelay": "Waktu tunggu awal di antara percobaan ulang. Nilai yang lebih tinggi mengurangi tekanan lonjakan.", + "timeout": "Durasi maksimum permintaan sebelum dibatalkan.", + "healthcheck": "Mengecualikan model/penyedia yang bermasalah dari keputusan perutean.", + "concurrencyPerModel": "Jumlah maksimum permintaan bersamaan yang diizinkan per model dalam round-robin.", + "queueTimeout": "Berapa lama permintaan dapat menunggu dalam antrean sebelum waktu tunggunya habis.", "failoverBeforeRetry": "Jika diaktifkan, kesalahan upstream apa pun akan langsung memicu failover ke target kombo berikutnya, sehingga melewatkan semua percobaan ulang dan URL cadangan.", "maxSetRetries": "Berapa kali untuk mencoba kembali set target penuh ketika setiap target gagal. 0 = tidak ada percobaan ulang pada tingkat set.", "setRetryDelayMs": "Penundaan antara upaya percobaan ulang tingkat set, memberikan waktu untuk menyelesaikan masalah sementara.", "disableSessionStickiness": "Rotasikan ke koneksi yang berbeda pada setiap permintaan alih-alih menyematkan seluruh percakapan ke satu koneksi berdasarkan hash pesan pertama. Mengabaikan default global. Biarkan pada Inherit untuk mempertahankan hit prompt-cache untuk obrolan multi-turn." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "Templat cepat", + "templatesDescription": "Terapkan profil awal, lalu sesuaikan model dan konfigurasi.", + "templateApply": "Terapkan templat", + "templateHighAvailability": "Ketersediaan tinggi", + "templateHighAvailabilityDesc": "Perutean prioritas dengan pemeriksaan kesehatan dan percobaan ulang yang aman.", + "templateCostSaver": "Penghemat biaya", + "templateCostSaverDesc": "Perutean yang dioptimalkan untuk biaya bagi beban kerja yang mengutamakan anggaran.", + "templateBalanced": "Beban seimbang", + "templateBalancedDesc": "Perutean berdasarkan penggunaan paling sedikit untuk menyebarkan permintaan dari waktu ke waktu.", + "usageGuideHide": "Sembunyikan", + "usageGuideDontShowAgain": "Jangan tampilkan lagi", + "usageGuideShow": "Tampilkan panduan", + "quickTestTitle": "Kombinasi siap divalidasi", + "quickTestDescription": "Jalankan pengujian sekarang untuk mengonfirmasi perilaku fallback dan latensi.", + "testNow": "Uji sekarang", + "pricingCoverage": "Cakupan harga", + "pricingCoverageHint": "Pengoptimalan biaya bekerja paling baik saat semua model dalam kombinasi memiliki informasi harga.", + "pricingAvailable": "Harga tersedia", + "pricingMissing": "Tidak ada harga", + "pricingAvailableShort": "memiliki harga", + "pricingMissingShort": "tanpa harga", "fallbackOnlyOnQuotaExhaustion": "Hanya maju saat kuota habis", "fallbackOnlyOnQuotaExhaustionShort": "fallback hanya kuota", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "warningRoundRobinSingleModel": "Round-robin paling berguna dengan setidaknya 2 model.", + "warningCostOptimizedPartialPricing": "Hanya {priced} dari {total} model yang memiliki informasi harga. Perutean mungkin hanya sebagian mempertimbangkan biaya.", + "warningCostOptimizedNoPricing": "Tidak ada data harga yang ditemukan untuk kombinasi ini. Pengoptimalan biaya mungkin melakukan perutean secara tidak terduga.", + "filterAll": "Semua", + "filterIntelligent": "Cerdas", + "filterDeterministic": "Deterministik", + "filterEmptyTitle": "Tidak ada kombinasi yang cocok dengan filter strategi ini.", + "filterEmptyIntelligentDescription": "Buat kombinasi otomatis atau LKGP untuk mengisi dasbor perutean cerdas.", + "filterEmptyDeterministicDescription": "Saat ini hanya ada kombinasi otomatis dan LKGP. Kembali ke Semua atau buat kombinasi deterministik.", "readinessTitle": "Siap menabung?", "readinessDescription": "Tinjau daftar periksa sebelum membuat atau memperbarui kombo ini.", "readinessCheckName": "Nama kombo valid", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Tambahkan setidaknya satu model.", "saveBlockWeighted": "Tetapkan bobot menjadi 100% (saat ini: {total}%).", "saveBlockPricing": "Tambahkan harga untuk setidaknya satu model atau pilih strategi lain.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Penyiapan yang disarankan", + "applyRecommendations": "Terapkan rekomendasi", + "recommendationsUpdated": "Rekomendasi diperbarui untuk {strategy}.", + "recommendationsApplied": "Rekomendasi diterapkan pada kombinasi ini.", + "intelligentPanelTitle": "Dasbor Perutean Cerdas", + "intelligentPanelDesc": "Penilaian waktu nyata dan status kesehatan untuk kombinasi perutean otomatis ini.", "configOnlyStatus": "Tampilan Konfigurasi", "configOnlyHint": "Panel ini hanya menampilkan input perutean. Status breaker langsung tersedia di halaman Kesehatan.", "routingInputs": "Input Perutean", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Prefiks penyedia tidak dikenal.", "builderDynamicAccountShort": "Akun dinamis", "builderNeedValidName": "Tentukan nama kombo yang valid sebelum melanjutkan.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Ikhtisar Status", + "normalOperation": "Operasi Normal", + "allProvidersHealthy": "Penyedia melaporkan kondisi perutean yang sehat.", + "incidentMode": "Mode Insiden", + "highCircuitBreakerRate": "Terdeteksi tingkat pemicuan pemutus sirkuit yang tinggi.", + "activeModePack": "Paket Mode Aktif", + "modePackUpdated": "Paket mode diperbarui menjadi {pack}.", + "modePackHint": "Ganti preset untuk mengarahkan preferensi mesin perutean tanpa membuat ulang kombinasi.", + "providerScores": "Skor Penyedia", + "allProvidersEvaluated": "Tidak ada kumpulan kandidat yang dikonfigurasi. Semua penyedia aktif dievaluasi saat runtime.", + "excludedProviders": "Penyedia yang Dikecualikan", + "excludedProvidersHint": "Penyedia dengan pemutus sirkuit berstatus OPEN dikecualikan sementara dari perutean.", + "noExcludedProviders": "Saat ini tidak ada penyedia yang dikecualikan.", + "cooldownMinutes": "Waktu tunggu: {minutes} mnt", + "builderIntelligentTitle": "Konfigurasi Perutean Cerdas", + "builderIntelligentDesc": "Konfigurasikan mesin penilaian multifaktor untuk kombinasi perutean otomatis ini.", + "candidatePoolLabel": "Kumpulan Kandidat", + "candidatePoolHint": "Pilih penyedia yang harus dievaluasi oleh mesin ini. Biarkan kosong untuk menggunakan semua penyedia aktif.", + "candidatePoolEmpty": "Belum ada penyedia aktif yang tersedia.", + "candidatePoolAllProviders": "Semua penyedia", + "modePackLabel": "Paket Mode", + "routerStrategyLabel": "Strategi Router", + "strategyRules": "Aturan (Penilaian 6 Faktor)", + "explorationRateLabel": "Tingkat Eksplorasi", + "explorationRateHint": "{percent}% permintaan dapat mengeksplorasi penyedia yang tidak optimal.", + "budgetCapLabel": "Batas Anggaran (USD / permintaan)", + "budgetCapPlaceholder": "Tanpa batas", + "advancedWeightsTitle": "Lanjutan: Bobot Penilaian", "nestedComboFlatten": "Ratakan kombo bersarang", "nestedComboExecute": "Eksekusi kombo bersarang sebagai target", "effectiveRoutingShare": "Pangsa perutean efektif (bobot ÷ total)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kuota", + "weightHealth": "Kesehatan", + "weightCostInv": "Biaya", + "weightLatencyInv": "Latensi", + "weightTaskFit": "Kesesuaian Tugas", + "weightStability": "Stabilitas", + "weightTierPriority": "Tingkat", + "weightCacheAffinity": "Afinitas Cache Hit", "weightSessionAvailability": "Ketersediaan Sesi", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Konfigurasi Perutean Cerdas", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Baseline fail-safe", + "description": "Gunakan satu model utama dan pertahankan rantai fallback yang singkat dan andal.", + "tip1": "Tempatkan model Anda yang paling andal di urutan pertama.", + "tip2": "Pertahankan 1-2 model cadangan dengan kualitas serupa.", + "tip3": "Gunakan percobaan ulang yang aman untuk mengatasi kegagalan sementara dari penyedia." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Pembagian trafik terkendali", + "description": "Sangat cocok untuk peluncuran canary dan migrasi bertahap antar-model.", + "tip1": "Mulailah dengan pembagian konservatif seperti 90/10.", + "tip2": "Pertahankan total pada 100% dan seimbangkan secara otomatis setelah perubahan.", + "tip3": "Pantau keberhasilan dan latensi sebelum meningkatkan bobot canary." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Pembagian beban yang dapat diprediksi", + "description": "Paling sesuai ketika model-model setara dan Anda memerlukan distribusi yang lancar.", + "tip1": "Gunakan setidaknya 2 model.", + "tip2": "Tetapkan batas konkurensi untuk menghindari beban berlebih akibat lonjakan.", + "tip3": "Gunakan batas waktu antrean agar cepat gagal saat terjadi saturasi." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Distribusi cepat dengan penyiapan minimal", + "description": "Gunakan ketika Anda memerlukan distribusi sederhana tanpa jaminan ketat.", + "tip1": "Gunakan model dengan profil latensi serupa.", + "tip2": "Biarkan percobaan ulang tetap aktif untuk mengatasi kegagalan acak.", + "tip3": "Utamakan opsi ini untuk eksperimen, bukan SLA yang ketat." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Penyeimbangan adaptif", + "description": "Merutekan ke model yang lebih jarang digunakan untuk mengurangi titik beban tinggi seiring waktu.", + "tip1": "Berfungsi lebih baik pada trafik berkelanjutan.", + "tip2": "Gabungkan dengan pemeriksaan kesehatan untuk penyeimbangan yang lebih aman.", + "tip3": "Lacak penggunaan per model untuk memvalidasi peningkatan distribusi." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Perutean yang mengutamakan anggaran", + "description": "Merutekan ke model berbiaya lebih rendah ketika metadata harga tersedia.", + "tip1": "Pastikan informasi harga tersedia untuk semua model yang dipilih.", + "tip2": "Pertahankan fallback berkualitas untuk prompt yang sulit.", + "tip3": "Gunakan untuk pekerjaan batch/latar belakang ketika biaya menjadi KPI utama." }, "reset-aware": { "title": "Rotasi akun yang sadar akan pengaturan ulang", @@ -3597,11 +3597,11 @@ "tip3": "Jaga agar tali pengikatnya tetap kecil sehingga akun-akun yang setara masih dapat berputar dengan adil." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Distribusi dek acak", + "description": "Setiap model digunakan tepat satu kali per siklus sebelum diacak ulang.", + "tip1": "Gunakan setidaknya 2 model agar distribusi bermakna.", + "tip2": "Berfungsi paling baik dengan model yang memiliki performa setara.", + "tip3": "Ideal untuk penyeimbangan beban di beberapa akun API." }, "fill-first": { "description": "Kuota penyedia knalpot secara berurutan sebelum melakukan fall back.", @@ -3646,86 +3646,86 @@ "title": "Kekuatan Dua Pilihan" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Stack Gratis ($0)", + "templateFreeStackDesc": "Round-robin di semua penyedia gratis: Kiro (Claude), Qoder (5 model), Qwen (4 model). Tanpa biaya, terus mengode tanpa henti.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "Mode LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Memulai dengan Combo", + "wizardGuideDesc": "Buat combo model untuk merutekan lalu lintas AI secara cerdas", + "wizardGuideHint": "atau klik + Buat Combo di atas", + "createFirstCombo": "Buat Combo Pertama Anda", + "wizardStep1Title": "Beri Nama Combo Anda", + "wizardStep1Desc": "Berikan nama unik pada combo Anda agar dapat diidentifikasi dalam aturan perutean", + "wizardStep2Title": "Tambahkan Model", + "wizardStep2Desc": "Pilih model AI dan atur urutan prioritas fallback-nya", + "wizardStep3Title": "Pilih Strategi", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Tinjau & Simpan", + "wizardStep4Desc": "Tinjau konfigurasi Anda dan aktifkan combo", + "usageGuideInvokeTitle": "Cara memanggil combo ini", + "usageGuideInvokeDesc": "Kirim nama persis combo sebagai model, misalnya model: \"my-combo\" (atau combo/my-combo).", + "usageGuideInvokeAutoNote": "auto dan auto/* adalah router terpisah tanpa konfigurasi yang tidak menggunakan combo Anda (kecuali jika sebuah combo benar-benar diberi nama auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto adalah produk berbayar OpenRouter yang sebenarnya (Auto Best Available), bukan alias OmniRoute — kecualikan melalui Pengaturan → Perutean → Sembunyikan model berbayar.", + "emailVisibilityStateOn": "Aktif", + "emailVisibilityStateOff": "Nonaktif", + "reorderHandle": "Seret untuk mengurutkan ulang", + "failedReorder": "Gagal mengurutkan ulang model", + "builderFlowTitle": "Alur Pembuat Combo", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Dasar-dasar", + "description": "Nama dan templat awal" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Langkah-langkah", + "description": "Pemilihan penyedia, model, dan akun" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategi", + "description": "Perilaku perutean dan pengaturan lanjutan" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Perutean Cerdas", + "description": "Kumpulan kandidat perutean otomatis, preset, dan penilaian" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Tinjau", + "description": "Validasi akhir sebelum menyimpan" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", + "builderStageVisited": "Tahap selesai", + "builderStageCurrent": "Tahap saat ini", + "builderStagePending": "Tertunda", + "builderStageLocked": "Terkunci — selesaikan tahap sebelumnya terlebih dahulu", + "builderTitle": "Buat Combo", + "builderBrowseCatalog": "Jelajahi katalog", + "builderProvider": "Penyedia", + "builderLoadingProviders": "Memuat provider...", + "builderSelectProvider": "Pilih provider", "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderSelectModel": "Pilih model", + "builderProviderFirst": "Pilih provider terlebih dahulu", + "builderAccount": "Akun", + "builderPreview": "Pratinjau", + "builderAddStep": "Tambahkan langkah", "builderDuplicateExact": "Langkah penyedia/model/akun yang tepat ini sudah ada dalam kombo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Referensi Combo", + "builderAddComboRef": "Tambahkan referensi combo", + "builderComboRefStep": "Tambahkan referensi combo", + "builderPinnedAccount": "Akun yang Disematkan", + "builderLegacyEntry": "Entri lama", + "reviewName": "Nama", + "reviewStrategy": "Strategi", + "reviewSteps": "Langkah", + "reviewAccounts": "Akun", + "reviewProviders": "Provider", + "reviewComboRefs": "Referensi Combo", + "reviewAdvanced": "Pengaturan Lanjutan", + "reviewAgentFlags": "Flag Agen", + "reviewSequence": "Urutan Model", + "reviewNoSteps": "Belum ada langkah yang dikonfigurasi", "builderStagesDescription": "Selesaikan setiap tahap untuk menentukan kombo, membangun langkah-langkah, memilih strategi perutean, dan meninjau hasil.", "builderStepsDescription": "Susun setiap langkah kombo secara berurutan: penyedia, model, lalu akun. Hal ini memungkinkan penggunaan kembali penyedia dan model yang sama di akun yang berbeda.", "selectProvider": "Pilih Penyedia", @@ -3778,9 +3778,9 @@ "savingModePack": "Menyimpan {pack}…", "errorTitle": "Gagal memuat kombinasi", "errorDescription": "Kami tidak dapat memuat data kombinasi saat ini. Periksa koneksi Anda dan coba lagi.", - "errorId": "Error ID: {id}", + "errorId": "ID Kesalahan: {id}", "errorRetry": "Coba Lagi", - "comboLabel": "Combo", + "comboLabel": "Kombinasi", "duplicateAutoComboConfirm": "Buat kombo statis dari \"{name}\"?", "duplicateAutoComboSnapshotMsg": "Ini akan mengambil snapshot penyedia/model yang terhubung saat ini yang cocok dengan templat ini ke dalam kombo yang dapat diedit.", "duplicateAutoComboFailedPrefix": "Gagal menduplikasi kombo otomatis:", @@ -3800,27 +3800,27 @@ "range7d": "7 hari", "range30d": "30 Hari", "range90d": "90 Hari", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 Hari", + "range365d": "365 Hari", "rangeAll": "Sepanjang Waktu", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Model Aktif", + "flatRateEstimateNotice": "Mencakup estimasi harga token untuk langganan tarif tetap, bukan biaya yang ditagihkan.", + "flatRateEstimateForecast": "Proyeksi mencakup estimasi tarif tetap.", + "selectedWindow": "Rentang Terpilih", + "activeProviders": "Provider Aktif", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Pengeluaran Hari Ini", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Porsi Provider", + "topProviders": "Penyedia Teratas", + "costTrend": "Tren Biaya", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Model Teratas", "requestsInWindow": "Requests In Window", "tokenUsage": "Penggunaan Token", "totalTokens": "Jumlah Token", @@ -3863,7 +3863,7 @@ "groupAccount": "Akun", "groupServiceTier": "Tingkat layanan", "serviceTierFast": "Cepat", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Fleksibel", "serviceTierStandard": "Standar", "serviceTierBreakdownTitle": "Tingkat Layanan", "serviceTierBreakdownSubtitle": "Pembagian Fast / Flex / Standard", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "Titik Akhir API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Gunakan endpoint yang kompatibel dengan OpenAI dengan sebagian besar SDK dan alat.", + "testEndpoint": "Uji endpoint →", + "advancedProtocols": "Protokol lanjutan", "available": "Titik Akhir yang Tersedia", "cloudProxy": "Proksi Awan", "disableConfirm": "Apakah Anda yakin ingin menonaktifkan proksi cloud?", @@ -3900,7 +3900,7 @@ "disableCloud": "Nonaktifkan Awan", "enableCloud": "Aktifkan Awan", "modelsAcrossEndpoints": "{models} model di seluruh titik akhir {endpoints}", - "loadingModels": "Loading available models...", + "loadingModels": "Memuat model yang tersedia...", "chatDesc": "Obrolan streaming & non-streaming dengan semua penyedia", "embeddings": "Penyematan", "embeddingsDesc": "Penyematan teks untuk saluran pencarian & RAG", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Transkripsikan file audio ke teks (Bisikan)", "textToSpeech": "Teks ke Ucapan", "textToSpeechDesc": "Ubah teks menjadi ucapan yang terdengar alami", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Pembuatan Musik", + "musicDesc": "Buat musik dan trek audio melalui ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderasi", "moderationsDesc": "Moderasi konten dan klasifikasi keamanan", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API untuk Codex dan alur kerja agen tingkat lanjut", + "listModelsDesc": "Cantumkan semua model yang tersedia di seluruh penyedia yang terhubung", + "settingsApiDesc": "Baca dan ubah konfigurasi OmniRoute melalui API", + "settingsApi": "API Pengaturan", "categoryCore": "API Inti", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", + "categoryMedia": "Media & Multimodal", + "categorySearch": "Pencarian & Penemuan", "categoryUtility": "Utilitas & Manajemen", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Pencarian Web", + "webSearchDesc": "Pencarian web terpadu di berbagai penyedia dengan failover dan caching otomatis", + "searchProvider": "Penyedia Pencarian", + "searchProviderDesc": "Penyedia ini digunakan untuk pencarian web melalui POST /v1/search. Konfigurasi model tidak diperlukan — penyedia pencarian siap digunakan setelah kunci API terhubung.", "enableCloudTitle": "Aktifkan Proksi Cloud", "whatYouGet": "Apa yang akan Anda dapatkan", "cloudBenefitAccess": "Akses API Anda dari mana saja di dunia", @@ -3963,57 +3963,57 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Aktifkan Tunnel", + "cloudflaredInstallAndEnable": "Instal & Aktifkan", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Berjalan", + "cloudflaredStarting": "Memulai", + "cloudflaredStoppedState": "Dihentikan", + "cloudflaredNotInstalled": "Belum diinstal", + "cloudflaredUnsupported": "Tidak didukung", + "cloudflaredError": "Kesalahan", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Kesalahan terakhir: {error}", "providerModelsTitle": "{provider} — Model", "noModelsForProvider": "Tidak ada model yang tersedia untuk penyedia ini.", "chat": "Obrolan", "embedding": "Penyematan", "image": "Gambar", "custom": "adat", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {# model} other {# model}}", + "sectionTitle": "Antarmuka Integrasi", + "sectionDescription": "API yang kompatibel dengan OpenAI dan endpoint protokol operasional", "tabApis": "API", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "Protokol", + "tabsAria": "Bagian endpoint", + "protocolsTitle": "Protokol", + "protocolsDescription": "MCP dan A2A merupakan endpoint utama dengan observabilitas dan kontrol khusus.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "Model Context Protocol melalui stdio", + "a2aCardTitle": "Server A2A", + "a2aCardDescription": "Endpoint JSON-RPC Agent2Agent", + "protocolToolsLabel": "Alat", + "protocolTasksLabel": "Tugas", + "protocolActiveStreamsLabel": "Stream aktif", + "protocolLastActivity": "Aktivitas terakhir", + "quickStart": "Mulai Cepat", + "openMcpDashboard": "Buka pengelolaan MCP", + "openA2aDashboard": "Buka pengelolaan A2A", + "mcpQuickStartTitle": "Mulai Cepat MCP", + "mcpQuickStartStep1": "Jalankan server MCP melalui `omniroute --mcp`.", + "mcpQuickStartStep2": "Konfigurasikan klien MCP Anda agar terhubung melalui transportasi stdio.", + "mcpQuickStartStep3": "Panggil alat seperti `omniroute_get_health` dan `omniroute_list_combos`.", + "a2aQuickStartTitle": "Mulai Cepat A2A", + "a2aQuickStartStep1": "Temukan kartu agen di `/.well-known/agent.json`.", + "a2aQuickStartStep2": "Kirim permintaan JSON-RPC ke `POST /a2a` menggunakan `message/send` atau `message/stream`.", + "a2aQuickStartStep3": "Lacak dan kendalikan tugas menggunakan `tasks/get` dan `tasks/cancel`.", + "completionsLegacy": "Penyelesaian (Lama)", + "completionsLegacyDesc": "Penyelesaian teks OpenAI lama — menerima format string prompt dan array pesan", "messagesApi": "Pesan", "messagesApiDesc": "Format API Pesan Antropik Asli untuk penyedia yang kompatibel dengan Claude", "imageEdits": "Pengeditan Gambar", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Memproses permintaan dalam jumlah besar secara asinkron (kompatibel dengan OpenAI)", "filesApi": "API File", "filesApiDesc": "Unggah dan kelola file untuk pemrosesan batch", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Pembuatan Video", + "videoDesc": "Buat video menggunakan model AI seperti ComfyUI dan Stable Video Diffusion.", + "tailscaleRequestFailed": "Gagal memuat status Tailscale", + "tailscaleEnableFailed": "Gagal mengaktifkan Tailscale Funnel", + "tailscaleWaitingForLogin": "Selesaikan proses masuk Tailscale di tab browser yang terbuka. OmniRoute akan mencoba lagi secara otomatis.", + "tailscaleLoginTimedOut": "Waktu habis saat menunggu proses masuk Tailscale", + "tailscaleWaitingForFunnel": "Aktifkan Funnel untuk perangkat ini di tab browser yang terbuka. OmniRoute akan terus memeriksa.", + "tailscaleFunnelTimedOut": "Waktu habis saat menunggu Tailscale Funnel diaktifkan", + "tailscaleStarted": "Tailscale Funnel diaktifkan", + "tailscaleDisableFailed": "Gagal menonaktifkan Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel dinonaktifkan", + "tailscaleInstallFailed": "Gagal menginstal Tailscale", + "tailscaleInstallProgress": "Sedang diproses...", + "tailscaleInstalled": "Tailscale berhasil diinstal", + "tailscaleRunning": "Berjalan", + "tailscaleNeedsLogin": "Perlu Masuk", + "tailscaleStoppedState": "Dihentikan", + "tailscaleNotInstalled": "Belum diinstal", + "tailscaleUnsupported": "Tidak didukung", + "tailscaleError": "Kesalahan", + "tailscaleDisable": "Hentikan Funnel", + "tailscaleInstallAndEnable": "Instal & Aktifkan", + "tailscaleLoginAndEnable": "Masuk & Aktifkan", + "tailscaleEnable": "Aktifkan Funnel", + "tailscaleUrlNotice": "Menggunakan alamat .ts.net Tailscale Anda. Login dan persetujuan Funnel mungkin diperlukan saat pertama kali digunakan.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Autentikasi mesin ini dengan Tailscale, lalu aktifkan Funnel.", + "tailscaleBinaryPath": "Biner: {path}", + "tailscaleLastError": "Kesalahan terakhir: {error}", + "tailscaleInstallTitle": "Instal Tailscale", + "tailscaleInstallIntro": "Menginstal Tailscale di mesin ini dan menyiapkan OmniRoute untuk mengaktifkan Funnel.", + "tailscaleInstallPasswordHint": "Di macOS dan Linux, sudo mungkin diperlukan untuk menginstal paket dan memulai daemon.", + "tailscaleSudoPlaceholder": "Kata sandi sudo opsional", + "tailscaleInstalling": "Menginstal", "tailscaleSudoLabel": "Kata Sandi Sudo (diperlukan di MacOS/Linux)", "ngrokTitle": "Terowongan ngrok", "ngrokRunning": "Berlari", @@ -4084,7 +4084,7 @@ "tabContextSources": "Sumber Konteks", "activeEndpoints": "Endpoint Aktif", "activeLocal": "Lokal", - "activeCloud": "Cloud", + "activeCloud": "Awan", "copyUrlTitle": "Salin {url}", "statusRunning": "Berjalan", "tunnels": "Tunnel", @@ -4101,15 +4101,15 @@ "apiKeyRevealInvalid": "Pengungkapan kunci API mengembalikan respons yang tidak valid", "apiKeyRequired": "Kunci API diperlukan untuk endpoint ini.", "requestFailed": "Permintaan gagal ({status})", - "errorStatus": "Error", + "errorStatus": "Kesalahan", "catalogStats": "{endpoints} endpoint di {categories} kategori", "catalogUnavailableDescription": "Spesifikasi OpenAPI tidak dapat dimuat.", "openJsonResponse": "Buka respons JSON", "all": "Semua", "more": "+{count} lagi", "showInternalTooltip": "Tampilkan atau sembunyikan rute internal (disembunyikan secara default)", - "bearerAuth": "Bearer Auth", - "requestBody": "Request Body", + "bearerAuth": "Autentikasi Bearer", + "requestBody": "Isi Permintaan", "close": "Tutup", "tryIt": "Coba", "example": "Contoh", @@ -4118,7 +4118,7 @@ "enterManually": "Masukkan Secara Manual", "pasteApiKey": "Tempel kunci API Anda di sini", "noActiveApiKeys": "Tidak ada kunci API aktif yang ditemukan. Alihkan entri manual untuk menempelkannya.", - "requestBodyJson": "Request Body (JSON)", + "requestBodyJson": "Isi Permintaan (JSON)", "sending": "Mengirim...", "sendRequest": "Kirim Permintaan", "dataSchemas": "Skema Data", @@ -4127,12 +4127,12 @@ "vscodeAliasDescriptionError": "Menampilkan URL placeholder karena kunci CLI tidak dapat dimuat dalam sesi ini.", "vscodeAliasDescriptionLoading": "Memuat kunci CLI. URL placeholder ditampilkan hingga kunci tersedia.", "vscodeAliasDescriptionPlaceholder": "Menampilkan URL placeholder. Buat atau aktifkan kunci API di CLI Tools untuk mengganti TOKEN.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "Alat CLI", "vscodeAliasBaseLabel": "Basis VS Code", "vscodeAliasModelsLabel": "Model VS Code", "vscodeAliasChatLabel": "Obrolan VS Code", "localServer": "Server Lokal", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute Cloud", "copyUrl": "Salin URL", "badgeLoopbackTooltip": "Endpoint ini hanya dapat diakses secara lokal (hanya loopback)", "badgeAlwaysProtectedTooltip": "Endpoint ini selalu dilindungi dan memerlukan otorisasi", @@ -4144,9 +4144,9 @@ "tierPublic": "Publik", "hideInternal": "Sembunyikan Internal", "showInternal": "Tampilkan Internal", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Prompt Sistem Kustom", + "customSystemPromptDescription": "Sisipkan prompt sistem kustom ke dalam setiap permintaan model", + "customSystemPromptPlaceholder": "mis. Selalu balas dengan gaya bicara bajak laut...", "obsidianEnterToken": "Silakan masukkan token API Obsidian", "obsidianConnectFailed": "Gagal menyambungkan", "obsidianConnectionFailed": "Koneksi gagal", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "Token telah dikonfigurasi. Alat Notion tersedia melalui MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Proksi Endpoint", + "tabApiEndpoints": "Endpoint API", + "apiEndpointsTitle": "Endpoint API", + "apiEndpointsDescription": "Endpoint API backend yang dapat digunakan oleh aplikasi dan layanan lain. Bagian ini akan mencantumkan semua REST API yang tersedia beserta dokumentasi dan kemampuan pengujiannya.", + "comingSoon": "Segera Hadir", + "plannedFeatures": "Fitur yang Direncanakan", + "featureRestApi": "Katalog endpoint REST API dengan dokumentasi interaktif", + "featureWebhooks": "Konfigurasi webhook dan langganan peristiwa", + "featureSwagger": "Pembuatan otomatis spesifikasi OpenAPI / Swagger", + "featureAuth": "Pengelolaan kunci API dan cakupan OAuth per endpoint" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "Memuat dasbor MCP...", + "activate": "aktifkan", + "deactivate": "nonaktifkan", + "confirmSwitchCombo": "Konfirmasi untuk {action} kombo \"{combo}\"?", + "switchComboFailed": "Gagal mengubah status kombo.", + "switchComboSuccess": "Kombo \"{combo}\" diperbarui.", + "confirmApplyProfile": "Terapkan profil ketahanan \"{profile}\"?", + "applyProfileFailed": "Gagal menerapkan profil ketahanan.", + "applyProfileSuccess": "Profil \"{profile}\" diterapkan.", + "confirmResetBreakers": "Atur ulang semua pemutus sirkuit?", + "resetBreakersFailed": "Gagal mengatur ulang pemutus sirkuit.", + "resetBreakersSuccess": "Pemutus sirkuit telah diatur ulang.", + "processStatus": "Status proses", "online": "Online", "offline": "Offline", "disableLabel": "Nonaktifkan {label}", @@ -4237,41 +4237,41 @@ "mcpStep2": "Konfigurasikan klien MCP Anda untuk terhubung melalui transportasi stdio.", "mcpStep3": "Panggil alat seperti {code1} dan {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "Waktu aktif sesi", + "lastHeartbeat": "Heartbeat terakhir", + "activity24h": "Aktivitas (24 jam)", + "totalCalls": "Total panggilan", + "successRate": "Tingkat keberhasilan", + "avgLatency": "Latensi rata-rata", + "topTools": "Alat teratas", + "noToolCalls24h": "Tidak ada panggilan alat dalam 24 jam terakhir.", + "runtimeDetails": "Detail runtime", + "transport": "Transportasi", + "scopesEnforced": "Cakupan diberlakukan", + "yes": "ya", + "no": "tidak", + "lastCall": "Panggilan terakhir", + "heartbeatPath": "Jalur heartbeat", + "operationalControls": "Kontrol operasional", + "switchCombo": "Alihkan kombo", + "inactive": "tidak aktif", + "active": "aktif", + "activateCombo": "Aktifkan kombo", + "deactivateCombo": "Nonaktifkan kombo", + "applyResilienceProfile": "Terapkan profil ketahanan", + "profileAggressive": "agresif", + "profileBalanced": "seimbang", + "profileConservative": "konservatif", + "applyProfile": "Terapkan profil", + "resetCircuitBreakers": "Atur ulang pemutus sirkuit", + "resetCircuitBreakersHelp": "Menghapus status pemutus saat ini dan penghitung kegagalan untuk penyedia.", + "resetAllBreakers": "Atur ulang semua pemutus", + "toolsAndScopes": "Alat dan cakupan", + "tableTool": "Alat", + "tableScopes": "Cakupan", + "tablePhase": "Fase", "tableAudit": "Audit", - "auditLog": "Audit log", + "auditLog": "Log audit", "auditSummary": "Panggilan: {total} | halaman {page} dari {totalPages}", "allTools": "Semua alat", "allResults": "Semua hasil", @@ -4284,80 +4284,80 @@ "tableDuration": "Lamanya", "tableResult": "Hasil", "tableApiKey": "Kunci API", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "failed": "gagal", + "previous": "Sebelumnya", + "next": "Berikutnya", + "apiKeyId": "ID Kunci API", + "offset": "Ofset", + "limit": "Batas", + "tool": "Alat" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "Memuat dasbor A2A...", + "confirmCancelTask": "Batalkan tugas {taskId}?", + "cancelTaskFailed": "Gagal membatalkan tugas.", + "cancelTaskSuccess": "Tugas {taskId} dibatalkan.", + "smokeSendFailed": "Uji asap message/send gagal.", + "smokeSendSuccessWithTask": "message/send berhasil (tugas {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "Uji asap message/stream gagal.", + "smokeStreamSuccessWithTask": "message/stream berhasil (tugas {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream selesai tanpa ID tugas.", + "health": "Kesehatan", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "Total tugas", + "activeStreams": "Stream aktif", + "lastTask": "Tugas terakhir", + "taskStateOverview": "Ringkasan status tugas", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "dikirim", + "working": "sedang dikerjakan", + "completed": "selesai", + "failed": "gagal", + "cancelled": "dibatalkan" }, - "agentCard": "Agent card", + "agentCard": "Kartu agen", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "Versi", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "Kemampuan", + "agentCardNotAvailable": "Kartu agen tidak tersedia.", + "quickValidation": "Validasi cepat", + "quickValidationDescription": "Menjalankan panggilan uji asap melalui endpoint live `/a2a`.", + "runMessageSend": "Jalankan message/send", + "runMessageStream": "Jalankan message/stream", + "taskManagement": "Manajemen tugas", + "taskSummary": "{total} tugas | halaman {page} dari {totalPages}", + "allStates": "semua", + "allSkills": "semua keterampilan", + "loadingTasks": "Memuat tugas...", + "noTasksForFilters": "Tidak ada tugas yang ditemukan untuk filter saat ini.", + "tableTask": "Tugas", + "tableSkill": "Keahlian", + "tableState": "Status", + "tableUpdated": "Diperbarui", + "tableActions": "Tindakan", + "view": "Lihat", + "cancel": "Batalkan", + "previous": "Sebelumnya", + "next": "Berikutnya", + "taskDetail": "Detail tugas", + "close": "Tutup", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "Peristiwa", + "artifacts": "Artefak", + "tablePhase": "Fase Tabel", + "offset": "Ofset", + "limit": "Batas", + "skill": "Keahlian", "rpcEndpoint": "POSTING /a2a", "rpcMethodSend": "pesan/kirim", "rpcMethodStream": "pesan/aliran", "rpcMethodGet": "tugas/dapatkan", "rpcMethodCancel": "tugas/batal", "serviceLabel": "A2A", - "online": "Online", - "offline": "Offline", + "online": "Daring", + "offline": "Luring", "disableLabel": "Nonaktifkan {label}", "enableLabel": "Aktifkan {label}", "a2aDisabledTitle": "A2A dinonaktifkan", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Tindakan", + "addMemory": "Tambahkan Memori", + "allTypes": "Semua Jenis", "cancel": "Batalkan", "checkHealth": "Periksa kesehatan", "checkingHealth": "Memeriksa…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Cara kerja", "howWorksContent": "1. Ekstraksi otomatis: di akhir setiap respons, fakta dan episode dideteksi dan disimpan secara otomatis.\n2. Pengambilan: sebelum setiap respons, memori yang paling relevan dicari melalui FTS5 (persis), vektor (semantik), atau RRF hibrida.\n3. Injeksi: memori yang relevan dimasukkan ke dalam konteks asisten untuk meningkatkan kualitas respons.\n4. Manajemen: gunakan halaman ini untuk melihat, mengedit, mengekspor, dan memadatkan memori lama." }, - "content": "Content", + "content": "Konten", "contentPlaceholder": "Nilai atau konten JSON yang perlu diingat", - "created": "Created", - "delete": "Delete", + "created": "Dibuat", + "delete": "Hapus", "deleteConfirmDesc": "Tindakan ini tidak dapat dibatalkan. Memori akan dihapus secara permanen.", "deleteConfirmTitle": "Hapus memori?", - "description": "View and manage stored memory entries", + "description": "Lihat dan kelola entri memori yang tersimpan", "editMemory": "Edit memori", "editModal": { "title": "Edit Memori", @@ -4433,10 +4433,10 @@ "reindexFailed": "Gagal memulai pengindeksan ulang", "keywordLabel": "Kata kunci (FTS5)", "keywordReason": "Pencarian kata kunci selalu tersedia", - "embeddingLabel": "Embedding", + "embeddingLabel": "Penyematan", "vectorStoreLabel": "Penyimpanan Vektor", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Pemeringkatan Ulang", "qdrantDisabled": "Dinonaktifkan", "qdrantOk": "Sehat ({latencyMs}ms)", "qdrantError": "Kesalahan koneksi", @@ -4444,20 +4444,20 @@ "configureCta": "Konfigurasi", "vectorStoreInstallHint": "Untuk mengaktifkan pencarian vektor: npm install sqlite-vec (memerlukan Node.js native, bukan WASM), lalu mulai ulang." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodik", + "export": "Ekspor", + "factual": "Faktual", "healthUnknown": "Kesehatan tidak diketahui", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Tingkat Keberhasilan", + "import": "Impor", "importError": "Gagal mengimpor berkas", "importResult": "{imported} diimpor, {skipped} dilewati", - "key": "Key", + "key": "Kunci", "keyPlaceholder": "misalnya pengguna.preferensi.tema", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Memori", "next": "Selanjutnya", - "noMemories": "No memories found", + "noMemories": "Tidak ada memori yang ditemukan", "pageInfo": "Halaman {page} dari {totalPages} (total {total})", "pipelineError": "Kesalahan saluran pipa", "pipelineOk": "Saluran Pipa Oke ({latencyMs}ms)", @@ -4474,18 +4474,18 @@ "simulate": "Simulasikan", "resultsTitle": "{count} hasil", "resolutionTitle": "Resolusi pencarian", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Penyematan", "resolutionStore": "Penyimpanan vektor", "resolutionStrategy": "Strategi yang digunakan", "rerankApplied": "Rerank diterapkan", - "fallback": "Fallback", + "fallback": "Cadangan", "noResults": "Tidak ada memori yang ditemukan untuk kueri ini.", "tokensUsed": "token digunakan", "none": "tidak ada", "errorFetch": "Gagal mengambil pratinjau" }, "previous": "Sebelumnya", - "procedural": "Procedural", + "procedural": "Prosedural", "qdrant": { "title": "Qdrant (Penyimpanan Vektor Tier 2)", "description": "Integrasi Qdrant opsional untuk pencarian semantik yang dapat diskalakan", @@ -4494,11 +4494,11 @@ "banner": "Penyimpanan vektor Tier 2 — alternatif eksternal yang dapat diskalakan untuk sqlite-vec bawaan (Tier 1). Aktifkan hanya jika Anda memiliki kumpulan memori yang sangat besar atau menginginkan memori bersama di berbagai instans; sebagian besar pengguna cukup menggunakan sqlite-vec. Saat diaktifkan, ini menjadi penyimpanan utama dan secara otomatis beralih kembali ke sqlite-vec jika tidak dapat dijangkau.", "hostHelp": "Docker Lokal: http://localhost:6333 · Qdrant Cloud: URL kluster Anda", "collectionHelp": "Nama apa saja — OmniRoute membuatnya pada penggunaan pertama", - "embeddingModelHelp": "Sets the vector dimension automatically on first use. Existing memories are not back-filled, and changing the model after data exists needs a fresh collection.", + "embeddingModelHelp": "Menetapkan dimensi vektor secara otomatis saat pertama kali digunakan. Memori yang sudah ada tidak akan dilengkapi secara retroaktif, dan perubahan model setelah data tersedia memerlukan koleksi baru.", "testConnection": "Uji koneksi", "testing": "Menguji...", "statusActive": "Aktif", - "statusError": "Error", + "statusError": "Kesalahan", "statusDisabled": "Dinonaktifkan", "healthOk": "Koneksi OK ({latencyMs}ms)", "healthError": "Kesalahan koneksi", @@ -4534,8 +4534,8 @@ }, "save": "Simpan", "saving": "Menyimpan...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Cari memori...", + "semantic": "Semantik", "summarize": { "title": "Padatkan memori lama", "noCandidates": "Tidak ada memori yang memenuhi syarat untuk pemadatan (kriteria: berusia >30 hari).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Memori", - "playground": "Playground", + "playground": "Arena Uji Coba", "engine": "Mesin" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Manajemen Memori", + "tokensUsed": "Token yang Digunakan", "tooltip": { "totalEntries": "Total memori yang disimpan untuk kunci API ini", "tokensUsed": "Estimasi total token yang digunakan oleh memori aktif", @@ -4558,18 +4558,18 @@ "procedural": "Prosedur, alur kerja, dan instruksi yang harus diikuti asisten", "semantic": "Konsep, preferensi, dan pengetahuan domain" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Total Entri", + "type": "Jenis", "memoryEnabled": "Memori diaktifkan" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Keterampilan", + "description": "Kelola dan pantau keterampilan AI", + "skillsTab": "Keterampilan", + "executionsTab": "Eksekusi", "selectSkillToInspect": "Pilih skill di sebelah kiri untuk memeriksa.", "schemaTab": "Skema", - "handlerTab": "Handler", + "handlerTab": "Penangan", "inputSchema": "Skema Input", "outputSchema": "Skema Output", "handlerCode": "Kode Handler", @@ -4578,27 +4578,27 @@ "setModeAria": "Atur mode {mode}", "uninstallSkill": "Copot pemasangan skill", "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "loading": "Memuat keterampilan...", + "noSkills": "Tidak ada keterampilan yang ditemukan", + "noExecutions": "Tidak ada eksekusi yang ditemukan", + "enabled": "Diaktifkan", + "disabled": "Dinonaktifkan", "delete": "Hapus", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", + "version": "Versi", + "tableDescription": "Deskripsi", + "skill": "Keterampilan", "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", + "duration": "Durasi", + "time": "Waktu", + "sandboxConfig": "Konfigurasi Sandbox", + "cpuLimit": "Batas CPU", + "cpuLimitDesc": "Waktu eksekusi maksimum per keterampilan", + "memoryLimit": "Batas Memori", + "memoryLimitDesc": "Alokasi memori maksimum", + "timeout": "Batas Waktu", + "timeoutDesc": "Waktu tunggu maksimum untuk respons", + "networkAccess": "Akses Jaringan", + "networkAccessDesc": "Izinkan permintaan jaringan keluar", "mode": "Mode", "q": "Q", "filterSkillsPlaceholder": "Filter keterampilan berdasarkan nama, deskripsi, atau tag", @@ -4665,13 +4665,13 @@ "retry": "Coba lagi", "allOperational": "Semua sistem beroperasi", "issuesDetected": "Masalah sistem terdeteksi", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute siap", + "healthVerdictActionRequired": "Tindakan diperlukan untuk memulihkan operasi penuh", + "healthVerdictCoolingDown": "Masa tunggu setelah perubahan terbaru", + "healthSubtitle": "Pemeriksaan kesehatan sistem", + "advancedDiagnosticsTitle": "Diagnostik lanjutan", + "hide": "Sembunyikan", + "show": "Tampilkan", "updatedAt": "Diperbarui {time}", "latency": "Latensi", "latencyP50": "hal50", @@ -4698,9 +4698,9 @@ "providers": "Penyedia", "configuredProvidersLabel": "Dikonfigurasi di dasbor", "configuredProvidersHint": "Penyedia dengan kredensial yang disimpan di /dashboard/providers, apa pun status runtimenya.", - "activeProviders": "{count} active", + "activeProviders": "{count} aktif", "activeProvidersHint": "Penyedia yang dikonfigurasi saat ini diaktifkan untuk permintaan perutean.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} dipantau", "monitoredProvidersHint": "Penyedia saat ini dilacak oleh monitor kesehatan pemutus sirkuit.", "healthyCount": "{count} sehat", "nodeVersion": "Simpul {version}", @@ -4721,11 +4721,11 @@ "resetting": "Menyetel ulang...", "resetAll": "Atur Ulang Semua", "until": "Sampai {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Habis", + "learnedFromHeaders": "Dipelajari dari header", + "remainingOfLimit": "Tersisa {remaining}/{limit}", + "throttleStatus": "Pembatasan: {value}", + "lastHeaderUpdate": "Pembaruan header: {age}", "databaseHealth": "Kesehatan Basis Data", "databaseHealthDescription": "Diagnosis dan perbaiki baris kuota/domain yang usang serta referensi kombo yang rusak.", "status": "Status", @@ -4888,28 +4888,28 @@ "previous": "Sebelumnya", "next": "Selanjutnya", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Lihat Detail", + "eventMetadata": "Metadata Peristiwa", + "eventPayload": "Payload Peristiwa", + "requestId": "ID Permintaan", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", + "offset": "Ofset", + "limit": "Batas", "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", + "resourceType": "Jenis Sumber Daya", + "totalEntries": "Total Entri", "tab": "Tab", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Tutup", + "runningRequests": "Permintaan Aktif", + "runningRequestsDesc": "Tampilan real-time permintaan upstream yang sedang berjalan", "clearAll": "Hapus Semua", "confirmClearActiveRequests": "Hapus semua permintaan aktif?", "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "provider": "Penyedia", + "account": "Akun", + "elapsed": "Waktu Berlalu", "activeStage": "Tahap", "activeStageUnknown": "Belum dikirim ke upstream", "activeStageRegistered": "Terdaftar", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Slot rate limit diperoleh", "activeStageSendingToProvider": "Mengirim ke upstream", "activeStageProviderResponseStarted": "Respons upstream dimulai", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Jumlah", + "payloads": "Payload", + "viewPayloads": "Lihat", + "activeCount": "{count} aktif", + "clientPayload": "Payload Permintaan Klien", + "upstreamPayload": "Payload Penyedia Upstream", + "upstreamNotSentYet": "Belum dikirim ke upstream", + "runningRequestDetailMeta": "Akun: {account} — Waktu Berlalu: {elapsed}", + "export": "Ekspor", + "exporting": "Mengekspor...", + "exportFailed": "Ekspor gagal", "cleanHistoryButton": "Bersihkan riwayat", "cleanHistoryTitle": "Bersihkan riwayat log?", "cleanHistoryMessage": "Ini akan menghapus secara permanen semua baris log permintaan, baris detail lama, dan file artefak lokal di bawah DATA_DIR/call_logs. Halaman langsung akan dimuat ulang setelah pembersihan.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Berhasil membersihkan {deleted} entri log, {deletedArtifacts} artefak, dan {deletedDetailedLogs} baris detail lama.", "cleanHistoryEmpty": "Riwayat log permintaan tidak ditemukan.", "cleanHistoryFailed": "Gagal membersihkan riwayat log.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Rentang Waktu", + "lastNHours": "{hours} Terakhir", + "defaultRange": "bawaan", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Gagal mengambil log", + "copyFailed": "Gagal menyalin entri log", + "copyLogEntry": "Salin entri log", "filterByLevel": "Filter berdasarkan tingkat log", "searchPlaceholder": "Cari log…", "searchAria": "Cari entri log", @@ -4987,9 +4987,9 @@ "multiProvider": "Multi-Penyedia", "usageTracking": "Pelacakan Penggunaan", "securityDesc": "Tetapkan kata sandi untuk melindungi dasbor Anda, atau lewati saja sekarang.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Tanpa kata sandi, Anda tidak akan dapat menambahkan penyedia selama penyiapan. Anda dapat menambahkannya nanti dari dasbor setelah menetapkan kata sandi.", "providerDesc": "Hubungkan penyedia AI pertama Anda. Anda dapat menambahkan lebih banyak lagi nanti.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Anda harus menetapkan kata sandi terlebih dahulu untuk menambahkan penyedia. Silakan kembali ke langkah keamanan dan tetapkan kata sandi, atau tambahkan penyedia nanti dari dasbor.", "apiKeyRequired": "Kunci API (wajib)", "customUrlOptional": "URL khusus (opsional)", "testDesc": "Mari verifikasi koneksi penyedia Anda berfungsi.", @@ -5065,7 +5065,7 @@ "importFromFileSelectHint": "{count} dari {total} dipilih", "importFromFileColProvider": "Penyedia", "importFromFileColName": "Nama", - "importFromFileColBaseUrl": "Base URL", + "importFromFileColBaseUrl": "URL Dasar", "importFromFileErrorLine": "Baris {line}: {reason}", "importErrorMissingProvider": "penyedia tidak ada", "importErrorMissingName": "nama tidak ada", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Mengimpor…", "importFromFileImport": "Impor {count} penyedia", "importFromFileResult": "Berhasil mengimpor {success} penyedia ({failed} gagal)", + "importFromFileDownloadTemplate": "Unduh templat CSV", + "importFromFileMoreErrors": "+{count} lainnya", + "importFromFileSchemaHint": "Kolom CSV bersifat posisional: provider, name, apiKey, baseUrl (opsional), priority (opsional). Kolom provider harus berupa id penyedia terkelola yang sudah ada atau id node kompatibel OpenAI/Anthropic yang sudah terdaftar — impor ini tidak membuat node endpoint baru.", "adaptaTutorial": { "title": "Cara menghubungkan Adapta Web", "introPrefix": "Adapta mengautentikasi melalui Clerk. Token", @@ -5099,7 +5102,7 @@ "step5DescPrefix": "Klik", "step5DescMiddle": "tempel nilai", "step5DescSuffix": "ke dalam kolom API Key, lalu simpan. OmniRoute akan memperbarui sesi secara otomatis.", - "tipLabel": "Tip:", + "tipLabel": "Kiat:", "tipPrefix": "Cookie", "tipSuffix": "berumur panjang, biasanya selama berbulan-bulan. Anda hanya perlu memperbaruinya jika Anda keluar atau Adapta membatalkan sesi." }, @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} tersembunyi", "warningCount": "{count} Peringatan", "noConnections": "Tidak ada koneksi", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Kedaluwarsa", + "expiringSoonBadge": "Segera Kedaluwarsa", "freeTier": "Tingkat Gratis", "freeTierAvailable": "Tersedia tingkat gratis", "hasFreeTooltip": "Paket gratis tersedia", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Penyedia ini sudah tidak digunakan lagi", "riskNotice": { "title": "Sebelum melanjutkan", - "detailsTitle": "Usage caveats", + "detailsTitle": "Catatan penggunaan", "tooltip": "Penyedia dengan catatan penggunaan — klik untuk detail", "oauth": "Penyedia ini menggunakan sesi/OAuth produk resmi Anda, yang tidak diizinkan untuk penggunaan proxy/router. Kami tidak menyarankan penggunaan agen otonom yang intensif (gaya OpenCloud, alur multi-langkah yang panjang, batch besar) — upstream dapat bereaksi dengan membatasi atau memblokir akun. Gunakan dengan risiko Anda sendiri.", "webCookie": "Penyedia ini mengautentikasi melalui cookie sesi web Anda. Layanan upstream dapat membatalkan sesi kapan saja, mengharuskan Anda untuk masuk kembali. Tidak disarankan untuk operasi tanpa pengawasan yang lama. Gunakan dengan risiko Anda sendiri.", @@ -5188,9 +5191,9 @@ "cancel": "Batal" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} koneksi ditandai — hingga {maxFailures} kegagalan terbaru{lastFailureSuffix}. Klik untuk melihat kesehatan koneksi.", + "lastFailureSuffix": "(kegagalan terakhir {time})", + "ariaLabel": "Lihat detail kesehatan koneksi, {count} peringatan" }, "disabled": "Dengan disabilitas", "enableProvider": "Aktifkan penyedia", @@ -5225,7 +5228,7 @@ "failedCreate": "Gagal membuat penyedia", "errorOccurred": "Terjadi kesalahan. Silakan coba lagi.", "modelStatus": "Status Model", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Hanya yang dikonfigurasi", "allModelsOperational": "Semua model beroperasi", "modelsWithIssues": "{count} model yang bermasalah", "allModelsNormal": "Semua model merespons secara normal.", @@ -5236,7 +5239,7 @@ "clearing": "Membersihkan...", "until": "Sampai {time}", "providerTestFailed": "Tes penyedia gagal", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Pengujian penyedia kehabisan waktu — terlalu banyak koneksi untuk diuji sekaligus", "modeTest": "{mode} Tes", "passedCount": "{count} lulus", "failedCount": "{count} gagal", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL Ikon", "iconUrlHint": "Opsional. URL gambar yang ditampilkan sebagai ikon penyedia ini.", "iconUrlInvalid": "URL ikon tidak valid. Gunakan URL http(s):// atau data:image/*;base64.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Zona waktu pengaturan ulang kuota harian", + "dailyQuotaResetTimezoneHint": "Zona waktu IANA opsional yang digunakan saat upstream tidak menyertakan X-RateLimit-Reset. Biarkan kosong untuk mempertahankan masa tunggu singkat.", + "dailyQuotaResetHourLabel": "Jam pengaturan ulang kuota harian", + "dailyQuotaResetHourHint": "Jam lokal 0-23 dalam zona waktu di atas. Kosong berarti tidak ada jam tingkat node.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Penyedia tidak ditemukan", "deleteConnectionConfirm": "Hapus koneksi ini?", "deleteConnectionConfirmNamed": "Apakah Anda yakin ingin menghapus {name}? Tindakan ini tidak dapat dibatalkan.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Hapus yang Dipilih ({count})", + "batchDeleteConfirm": "Hapus {count} koneksi? Tindakan ini tidak dapat dibatalkan.", + "batchDeleteSuccess": "{count} koneksi dihapus", "batchActivateSelected": "Aktifkan", "batchDeactivateSelected": "Nonaktifkan", "batchRetestSelected": "Uji ulang", @@ -5292,7 +5295,7 @@ "filterError": "Kesalahan", "filterBanned": "Diblokir", "filterCreditsExhausted": "Kredit habis", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Cari akun…", "noFilteredConnections": "Tidak ada koneksi yang cocok dengan filter saat ini.", "failedSetAlias": "Gagal menyetel alias", "setAliasSuccess": "Alias {alias} ditetapkan", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "Detail Kompatibel OpenAI", "messagesApi": "API Pesan", "responsesApi": "API Respons", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Penyematan", + "audioTranscriptions": "Transkripsi Audio", + "audioSpeech": "Ucapan Audio", + "imagesGenerations": "Pembuatan Gambar", "chatCompletions": "Penyelesaian Obrolan", "importingModels": "Mengimpor...", "importFromModels": "Impor dari /models", - "modelsImported": "{count} models imported", + "modelsImported": "{count} model diimpor", "allModelsAlreadyImported": "Semua model sudah diimpor", "noNewModelsToImport": "Tidak ada model baru untuk diimpor — semua model sudah ada di registri atau daftar model kustom", "skippingExistingModels": "Melewatkan {count} model yang sudah ada", @@ -5350,13 +5353,13 @@ "importFailed": "Impor gagal", "noNewModelsAdded": "Tidak ada model baru yang ditambahkan.", "adding": "Menambahkan...", - "close": "Close", + "close": "Tutup", "importingModelsTitle": "Mengimpor Model", "copyModel": "Salin modelnya", "filterModels": "Filter model…", "testAllRateLimited": "Batas laju tercapai, dihentikan lebih awal", "hideFailedAuto": "Sembunyikan otomatis model yang gagal", - "selectAllModels": "Select all", + "selectAllModels": "Pilih semua", "hideAllModels": "Sembunyikan semua", "modelsActive": "aktif", "showModel": "Tampilkan model", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Satu kunci per baris. Format: nama|apiKey atau hanya apiKey (dinamai otomatis berdasarkan indeks).", "bulkValidateKeys": "Validasi setiap kunci sebelum menyimpan (lebih lambat)", "bulkAddAllKeys": "Tambahkan Semua Kunci", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# kunci ditambahkan} other {# kunci ditambahkan}}", + "bulkFailedCount": "{count, plural, one {# gagal} other {# gagal}}", "optional": "Opsional", "anthropicCompatibleName": "Kompatibel Antropis", "openaiCompatibleName": "Kompatibel dengan OpenAI", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Terjadi kesalahan yang tidak terduga", "getApiKey": "Dapatkan kunci API", "getApiKeyDescription": "Daftar atau mendaftar untuk kunci API", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# koneksi} other {# koneksi}}", "messagesPath": "pesan", "responsesPath": "tanggapan", "chatCompletionsPath": "obrolan/penyelesaian", @@ -5419,17 +5422,17 @@ "configured": "dikonfigurasi", "providerProxyConfigureHint": "Konfigurasikan proxy untuk semua koneksi penyedia ini", "providerProxy": "Proksi Penyedia", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Perbaiki env", + "repairEnvWorking": "Memperbaiki...", + "repairEnvHint": "Pulihkan nilai default OAuth yang hilang ke .env tanpa menimpa nilai yang ada.", + "repairEnvSuccess": "Nilai default OAuth dipulihkan", + "repairEnvFailed": "Gagal memperbaiki .env", "noConnectionsYet": "Belum ada koneksi", "addFirstConnectionHint": "Tambahkan koneksi pertama Anda untuk memulai", "addConnection": "Tambahkan Koneksi", "availableModels": "Model yang Tersedia", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Model bawaan", + "builtInModelsHint": "Model registri untuk penyedia ini. Gunakan ikon pensil untuk mengatur opsi kompatibilitas.", "pageAutoRefresh": "Halaman akan disegarkan secara otomatis...", "statusDisabled": "dengan disabilitas", "statusConnected": "terhubung", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Otentikasi ulang koneksi ini", "proxyConfig": "Konfigurasi proxy", "aliasExistsAlert": "Alias \"{alias}\" sudah ada. Silakan gunakan model lain atau edit alias yang ada.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "nama alias", + "clickToSetAlias": "Klik untuk mengatur alias", + "clickToEditAlias": "Alias: {alias} (klik untuk mengedit)", "openRouterAnyModelHint": "OpenRouter mendukung model apa pun. Tambahkan model dan buat alias untuk akses cepat.", "modelIdFromOpenRouter": "ID Model (dari OpenRouter)", "openRouterModelPlaceholder": "antropik/claude-3-opus", "customModels": "Model Khusus", "customModelsHint": "Tambahkan ID model yang tidak ada dalam daftar default. Ini akan tersedia untuk perutean.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normalkan ID panggilan alat menjadi 9 karakter (misalnya Mistral)", + "preserveDeveloperRoleLabel": "Pertahankan peran developer OpenAI Responses (jangan petakan ke system)", + "compatAdjustmentsTitle": "Kompatibilitas", + "compatButtonLabel": "Kompatibilitas", + "compatToolIdShort": "ID Alat 9", + "compatDeveloperShort": "Peran developer", + "compatDoNotPreserveDeveloper": "Jangan pertahankan peran developer", + "compatBadgeNoPreserve": "Jangan pertahankan", + "compatProtocolLabel": "Protokol permintaan klien", + "compatProtocolHint": "Opsi ini berlaku saat OmniRoute mendeteksi bentuk permintaan ini (OpenAI Chat, Responses API, atau Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Tulis ulang panggilan alat web_fetch bawaan ke /v1/web/fetch milik OmniRoute.", "interceptionLoadError": "Gagal memuat pengaturan intersepsi: {error}", "interceptionSaveError": "Gagal menyimpan pengaturan intersepsi: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Tampilkan di Claude Code (claude/…)", + "ccAliasSectionHint": "Tampilkan model penyedia ini dengan ID cermin claude/<provider>/<model> agar penemuan model gateway Claude Code dapat mencantumkannya. Dinonaktifkan secara default — mengaktifkannya akan menggandakan entri katalog untuk semua klien.", + "ccAliasProviderLevelLabel": "Default penyedia", + "ccAliasModelOverridesLabel": "Penimpaan per model", + "ccAliasModelOverrideAriaLabel": "Penimpaan untuk {modelId}", + "ccAliasStateInherit": "Warisi", + "ccAliasStateOn": "Aktif", + "ccAliasStateOff": "Nonaktif", + "ccAliasAddModelPlaceholder": "ID model (mis. gpt-4o)", + "ccAliasAddModelButton": "Tambahkan penggantian", + "ccAliasLoadError": "Gagal memuat pengaturan alias penemuan: {error}", + "ccAliasSaveError": "Gagal menyimpan pengaturan alias penemuan: {error}", + "compatUpstreamHeadersLabel": "Header upstream tambahan", + "compatUpstreamHeadersHint": "Pengaturan berhak akses tinggi — memiliki tingkat kepercayaan yang sama seperti mengedit kredensial API penyedia; hanya admin tepercaya yang boleh menggunakannya. Digabungkan setelah OmniRoute menambahkan autentikasi dari kunci API penyedia. Jika header kustom menggunakan nama yang sama dengan header yang sudah ada (mis. Authorization), nilai Anda akan sepenuhnya menggantikan header yang dibuat secara otomatis (termasuk token Bearer) — upstream hanya melihat apa yang Anda masukkan, bukan kunci dari pengaturan. Kesalahan konfigurasi dapat menyebabkan 401 atau autentikasi upstream gagal. Satu baris per header (mis. Authentication tambahan untuk beberapa gateway). Arahkan kursor atau fokuskan nilai untuk melihat pratinjau. Disimpan saat fokus berpindah, mengeklik di luar, atau menutup panel ini.", + "compatUpstreamHeaderName": "Nama header", + "compatUpstreamHeaderValue": "Nilai", + "compatUpstreamAddRow": "Tambahkan header", + "compatUpstreamRemoveRow": "Hapus baris", + "compatBadgeUpstreamHeaders": "Header", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Impor hanya model gratis", @@ -5592,26 +5595,26 @@ "email": "Surel", "healthCheckMinutes": "Pemeriksaan Kesehatan (menit)", "healthCheckHint": "Interval penyegaran token proaktif. 0 = dinonaktifkan.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Batalkan semua pilihan", + "modelsActiveCount": "{active}/{total} aktif", + "noModelsMatch": "Tidak ada model yang cocok dengan \"{filter}\"", + "groupLabel": "Lingkungan", + "groupPlaceholder": "mis. eKaizen, Pribadi", "failedTestConnection": "Gagal menguji koneksi", "failed": "Gagal", "leaveBlankKeepCurrentApiKey": "Biarkan kosong untuk mempertahankan kunci API saat ini.", "editCompatibleTitle": "Sunting {type} Kompatibel", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "URL root API Anda yang kompatibel dengan {type}. Gunakan Pengaturan Lanjutan untuk jalur endpoint kustom.", "apiKeyForCheck": "Kunci API (untuk Pemeriksaan)", "testModelIdLabel": "ID Model (opsional)", "testModelIdPlaceholder": "mis. my-model-id", "testModelIdHint": "Jika penyedia tidak memiliki titik akhir /models, masukkan ID model untuk memvalidasi melalui /chat/completions sebagai gantinya.", "compatibleProdPlaceholder": "{type} Kompatibel (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Token berhasil diperbarui", + "tokenRefreshFailed": "Gagal memperbarui token", "cursorSessionUnchanged": "Sesi sudah saat ini", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Terapkan autentikasi", + "exportCodexAuthFile": "Ekspor autentikasi", "applyClaudeAuthLocal": "Terapkan autentikasi", "exportClaudeAuthFile": "Ekspor autentikasi", "importClaudeAuth": "Impor autentikasi", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} gagal", "codexImportBulkZipExtracting": "Mengekstrak ZIP…", "codexImportBulkZipError": "Gagal mengekstrak ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Pengaturan Lanjutan", + "chatPathLabel": "Jalur Endpoint Chat", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Jalur chat kustom untuk penyedia dengan API nonstandar (mis. /v4/chat/completions)", + "modelsPathLabel": "Jalur Endpoint Model", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Jalur model kustom untuk validasi (mis. /v4/models)", "clientIdentityLabel": "Identitas Klien", "clientIdentityHint": "Opsional. Menambahkan header sidik jari klien (mis. User-Agent) yang cocok dengan CLI yang dikenal untuk gateway kompatibel yang mengharapkannya.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Dinonaktifkan (Manual)", + "statusBanned": "Diblokir / Pelanggaran Sandbox", + "statusCreditsExhausted": "Saldo Tidak Cukup / Kuota Habis", + "showEmails": "Tampilkan semua email", + "hideEmails": "Sembunyikan semua email", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Tambahkan kunci API lain atau tempel beberapa kunci", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Gateway Agregator", "enterpriseCloud": "Perusahaan & Awan", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Label Format API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", + "apiRegionChina": "Wilayah API Tiongkok", + "apiRegionHint": "Petunjuk Wilayah API", + "apiRegionInternational": "Wilayah API Internasional", + "apiRegionLabel": "Label Wilayah API", + "apikey": "Kunci API", "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "audioProvidersHeading": "Penyedia Audio", "cloudAgentProviders": "Penyedia Agen Cloud", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Audio", + "azureOpenAiBaseUrlHint": "Petunjuk URL Dasar Azure OpenAI", + "bailianBaseUrlHint": "Petunjuk URL Dasar Bailian", + "claudeWebCookieHint": "Buka claude.ai → DevTools → Application → Cookies → claude.ai, lalu salin nilai 'sessionKey'. Diperlukan juga cf_clearance, __cf_bm, dan _cfuvid untuk Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Petunjuk Cookie Blackbox Web", + "blackboxWebCookiePlaceholder": "Placeholder Cookie Blackbox Web", "t3ChatWebCookieHint": "Buka t3.chat → DevTools → Aplikasi → Penyimpanan Lokal → https://t3.chat, salin 'convex-session-id'. Lalu buka DevTools → Jaringan, salin header Cookie lengkap dari permintaan obrolan apa pun. Tempelkan kedua nilai pada kolom di bawah.", "t3ChatWebCookiePlaceholder": "id-sesi-cembung=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Petunjuk Cookie Grok Web", "blockClaudeExtraUsageDescription": "Saat diaktifkan, OmniRoute menandai koneksi Claude ini tidak tersedia segera setelah API penggunaan melaporkan penggunaan ekstra yang antre, sehingga fallback beralih ke koneksi lain alih-alih melanjutkan dengan penagihan ekstra bayar sesuai penggunaan.", "blockClaudeExtraUsageLabel": "Blokir penggunaan Claude yang berlebihan", "disableCoolingDescription": "Lewati cooldown transien agar koneksi ini tetap memenuhi syarat bahkan setelah kesalahan yang dapat dipulihkan (status terminal seperti diblokir/kedaluwarsa tetap berlaku).", "disableCoolingLabel": "Nonaktifkan cooldown untuk koneksi ini", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 kunci ditambahkan} other {# kunci ditambahkan}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplikat dilewati} other {# duplikat dilewati}}", + "bulkPasteHint": "Tempelkan satu kunci API per baris. Baris kosong akan diabaikan dan kunci duplikat akan dilewati.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Menambahkan header beta redact-thinking untuk upstream CC Compatible yang memerlukan aliran pemikiran Claude tersembunyi.", + "ccCompatibleRedactThinkingLabel": "Aktifkan beta redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Menambahkan `display: \"summarized\"` ke permintaan pemikiran CC Compatible agar model Claude yang didukung dapat mengalirkan delta pemikiran yang terlihat.", + "ccCompatibleSummarizeThinkingLabel": "Aktifkan tampilan ringkasan pemikiran", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Gunakan tingkat layanan prioritas untuk permintaan Codex jika tersedia.", + "codexFastServiceTierLabel": "Tingkat layanan cepat Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Placeholder Nama Header Upstream Kompatibel", + "compatUpstreamHeaderValuePlaceholder": "Placeholder Nilai Header Upstream Kompatibel", + "compatible": "Kompatibel", + "configuredCount": "Jumlah yang Dikonfigurasi", + "consoleApiKeyOracleHint": "Petunjuk Kunci API Konsol Oracle", + "consoleApiKeyOracleLabel": "Label Kunci API Konsol Oracle", + "consoleApiKeyOraclePlaceholder": "Placeholder Kunci API Konsol Oracle", "newApiUserIdLabel": "ID Pengguna New-API", "newApiUserIdPlaceholder": "mis. 12345", "newApiUserIdHint": "Nilai header New-Api-User AgentRouter, digunakan bersama kunci API konsol untuk mengambil saldo kuota.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Aktifkan deteksi saldo untuk node yang kompatibel dengan New-API / One-API / Sub2API aggregator", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Petunjuk Agen Pengguna Khusus", + "customUserAgentLabel": "Label Agen Pengguna Khusus", + "databricksBaseUrlHint": "Petunjuk URL Dasar Databricks", + "defaultThinkingStrengthHint": "Digunakan saat permintaan tidak menentukan tingkat upaya penalaran.", + "defaultThinkingStrengthLabel": "Kekuatan pemikiran default", + "deleteAllExtraApiKeys": "Hapus semua", + "excludedModelsHint": "Petunjuk Model yang Dikecualikan", + "excludedModelsLabel": "Label Model yang Dikecualikan", + "excludedModelsPlaceholder": "Placeholder Model yang Dikecualikan", + "expirationBannerExpired": "Banner Kedaluwarsa", + "expirationBannerExpiredDesc": "Deskripsi Banner Kedaluwarsa", + "expirationBannerExpiringSoon": "Banner Kedaluwarsa Segera", + "expirationBannerExpiringSoonDesc": "Deskripsi Banner Kedaluwarsa Segera", + "extraApiKeyMasked": "Kunci {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Petunjuk Kunci API Tambahan", + "extraApiKeysLabel": "Kunci API Tambahan", + "apiKeyHealthLabel": "Status Kunci API", + "apiKeyStatusActive": "Aktif", + "apiKeyStatusWarning": "Peringatan ({count} kegagalan)", + "apiKeyStatusInvalid": "Tidak Valid", + "primaryKey": "Kunci Utama", + "apiKeyInvalidAlert": "{count} kunci API ditandai tidak valid karena kegagalan autentikasi pada koneksi: {connections}. Kunci tersebut akan dilewati dalam rotasi. Klik untuk meninjau.", + "apiKeyInvalidAlertTitle": "Peringatan Status Kunci API", + "apiKeyWarningAlert": "{count} kunci API berstatus peringatan karena tingkat kegagalan yang tinggi pada koneksi: {connections}. Tinjau untuk mencegah masalah rotasi.", + "apiKeyWarningAlertTitle": "Peringatan Kunci API", + "googlePseInfo": "Info Google PSE", "antigravityProjectIdHint": "Penggantian opsional untuk permintaan Antigravity Cloud Code. Biarkan kosong untuk menggunakan proyek yang ditemukan selama Google OAuth.", "antigravityClientProfileLabel": "Profil klien", "antigravityClientProfileHint": "Pilih identitas klien Antigravity mana yang disajikan OmniRoute ke API.", @@ -5865,21 +5868,21 @@ "tierFast": "Cepat", "antigravityProjectIdLabel": "ID Proyek Google Cloud", "antigravityProjectIdPlaceholder": "id-proyek-gcp-saya", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Placeholder Cookie Web Grok", + "herokuBaseUrlHint": "Petunjuk URL Dasar Heroku", + "hideEmail": "Sembunyikan Email", + "imageProviders": "Penyedia Gambar", "videoProviders": "Pembuatan Video", "embeddingRerankProviders": "Penyematan & Pemeringkatan Ulang", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Gambar", + "llmProviders": "Penyedia LLM", + "localProviderApiKeyOptionalHint": "Petunjuk Kunci API Opsional untuk Penyedia Lokal", + "localProviderBaseUrlHint": "Petunjuk URL Dasar Penyedia Lokal", + "localProviders": "Penyedia Lokal", + "maxConcurrentWholeNumberError": "Jumlah Maksimum Proses Bersamaan Harus Berupa Bilangan Bulat", "m365TierLabel": "Tingkat Copilot", "m365TierHint": "Pilih antarmuka Microsoft 365 Copilot mana yang digunakan koneksi ini. Individual adalah BizChat konsumen default; Pendidikan dan Perusahaan (kerja) memilih antarmuka penyewa mereka.", - "m365TierIndividualOption": "Individual (default)", + "m365TierIndividualOption": "Individu (default)", "m365TierEduOption": "Pendidikan", "m365TierEnterpriseOption": "Perusahaan / Kerja", "tierOverrideLabel": "Override tingkat", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Murah", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Sematkan penyedia ini ke tingkat perutean alih-alih membiarkan OmniRoute menyimpulkannya dari harga model.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Petunjuk Cookie Web Muse Spark", + "museSparkWebCookiePlaceholder": "Placeholder Cookie Web Muse Spark", + "oauth": "OAuth", + "openCliTools": "Buka Alat CLI", + "openSettings": "Buka Pengaturan", + "openaiResponsesStoreDescription": "Izinkan permintaan Responses API yang kompatibel untuk mempertahankan status respons yang tersimpan.", + "openaiResponsesStoreLabel": "Penyimpanan OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Info Kunci Bersama Perplexity Search", + "perplexityWebCookieHint": "Petunjuk Cookie Web Perplexity", + "perplexityWebCookiePlaceholder": "Placeholder Cookie Web Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Override Batas Tarif", "rateLimitOverridesMaxConcurrentHint": "Override permintaan bersamaan maksimum untuk koneksi ini. Menimpa batas tingkat akun.", "rateLimitOverridesMaxConcurrentLabel": "Maks Bersamaan (Batar Tarif)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Waktu maksimum (ms) permintaan dapat menunggu slot batas laju sebelum gagal. Menggantikan pengaturan Ketahanan global hanya untuk koneksi ini.", + "rateLimitOverridesMaxWaitMsLabel": "Waktu Tunggu Antrean Maksimum (ms)", "rateLimitOverridesMinTimeHint": "Waktu minimum (ms) antar permintaan. Menimpa penundaan pembatas tarif default.", "rateLimitOverridesMinTimeLabel": "Interval Min (ms)", "rateLimitOverridesRpdHint": "Permintaan maksimum per hari untuk koneksi ini. Mengganti default penyedia.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Token/hari)", "rateLimitOverridesTpmHint": "Token maksimum per menit untuk koneksi ini. Menimpa default penyedia.", "rateLimitOverridesTpmLabel": "TPM (Token/menit)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Judul Penyegaran Token Oauth", + "regionHint": "Petunjuk Wilayah", + "regionLabel": "Label Wilayah", + "removeThisKey": "Hapus Kunci Ini", + "routingTagsHint": "Petunjuk Tag Perutean", + "routingTagsLabel": "Label Tag Perutean", + "routingTagsPlaceholder": "Placeholder Tag Perutean", + "search": "Cari", + "searchEngineIdHint": "Petunjuk ID Mesin Pencari", + "searchEngineIdLabel": "Label ID Mesin Pencari", + "searchEngineIdRequired": "ID Mesin Pencari Wajib Diisi", + "searchProvider": "Penyedia Pencarian", + "searchProviderDesc": "Deskripsi Penyedia Pencarian", "searchProviders": "Penyedia pencarian...", "searchByModel": "Cari berdasarkan model…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Judul Penyedia Pencarian", + "searxngBaseUrlHint": "Petunjuk URL Dasar Searxng", + "searxngInfo": "Info Searxng", + "sessionCookieLabel": "Label Cookie Sesi", + "showEmail": "Tampilkan Email", + "snowflakeBaseUrlHint": "Petunjuk URL Dasar Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Petunjuk Grup Tag", + "tagGroupLabel": "Label Grup Tag", + "tagGroupPlaceholder": "Placeholder Grup Tag", + "testModel": "Uji Model", + "testingModel": "Menguji Model", "modelTestQuotaTooltip": "Kuota habis — akan direset besok atau perlu pengisian ulang", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Lencana Token Kedaluwarsa", + "tokenExpiredTitle": "Judul Token Kedaluwarsa", + "tokenExpiresSoonTitle": "Judul Token Akan Segera Kedaluwarsa", + "tokenShort": "Token Singkat", + "totalKeysRotating": "{count, plural, one {1 kunci sedang dirotasi} other {# kunci sedang dirotasi}}", + "unhideModel": "Tampilkan Kembali Model", + "upstreamProxyProviders": "Penyedia Proksi Hulu", "validationModelIdHint": "Model yang digunakan untuk memverifikasi kunci API. Biarkan kosong untuk menggunakan model pertama yang tersedia dari penyedia.", "validationModelIdLabel": "Model validasi", "validationModelIdPlaceholder": "mis. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Tempel JSON Service Account Anda ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) atau OAuth access_token", + "webCookieProviders": "Penyedia Cookie Web", + "weeklyShort": "Mingguan Singkat", + "xiaomiMimoBaseUrlHint": "Petunjuk URL Dasar Xiaomi Mimo", "globalCodexServiceMode": "Mode layanan Codex Global", "connect": "Hubungkan", "manualApiKey": "Kunci API manual", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Temukan kredensial penyedia AI (OpenAI, Anthropic, Google, Mistral, xAI) yang disimpan oleh Zed IDE di keychain OS dan impor sebagai koneksi. Zed IDE harus terinstal di mesin ini.", "zedImportButton": "Impor dari Zed", "zedImportFailed": "Impor Zed gagal", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Petunjuk Impor Zed", + "zedImportNetworkError": "Kesalahan Jaringan Impor Zed", + "zedImportNone": "Tidak Ada Impor Zed", "zedImportSuccess": "Diimpor {credentials} kredensial dari Zed untuk {providers} penyedia", "zedImporting": "Mengimpor…", "zedNoCredentials": "Tidak ada kredensial Zed yang ditemukan di keychain", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "entri {number}", "claudeImportParseError": "kesalahan penguraian", "claudeImportNoValidEntries": "Tidak ada entri valid untuk diimpor", - "webFetch": "Web Fetch", + "webFetch": "Pengambilan Web", "webFetchTooltip": "Penyedia yang mengekstrak konten dari URL web (HTML → Markdown, scrape, screenshot)", "webFetchProvidersHeading": "Penyedia Web Fetch", "compatibleProvidersDesc": "Titik akhir yang kompatibel dengan OpenAI dan Anthropic yang Anda hos atau konfigurasikan. Arahkan SDK OpenAI apa pun ke URL Anda sendiri dan rute permintaan ke sini.", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Proksi API berdiskon untuk 40+ model termasuk GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Dapatkan kunci API Anda di https://freeaiapikey.com/dashboard. URL Dasar: https://freeaiapikey.com/v1.", "freemodel-dev": "Dapatkan kredit API gratis senilai $300 di https://freemodel.dev — tidak memerlukan informasi pembayaran. Endpoint yang kompatibel dengan OpenAI. Model GPT-5.4 dan GPT-5.5 tersedia.", "friendliai": "Tingkat gratis untuk inferensi serverless — tidak memerlukan kartu kredit", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Tingkat gratis melalui Google AI Studio; kuota per model tidak lagi dipublikasikan (periksa halaman kuota di AI Studio) — tanpa kartu kredit.", "gigachat": "Hubungkan GigaChat (Sber) dengan kunci API.", "gitlab": "Token akses pribadi GitLab untuk API Code Suggestions publik. Konfigurasikan URL dasar yang di-host sendiri saat tidak menggunakan gitlab.com.", "gitlawb-gmi": "Dapatkan kunci API Anda dari dasbor Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Hubungkan GLM Coding (China) dengan kunci API.", "glmt": "Profil GLM prasetel dengan anggaran token yang lebih tinggi, proses berpikir diaktifkan, dan batas waktu yang lebih lama.", "getgoapi": "Hubungkan GoAPI dengan kunci API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Paket gratis: batas per model (200 ribu token/hari per model chat; lihat console.groq.com/docs/rate-limits untuk RPM/RPD) — tidak ada metode pembayaran yang tersimpan.", "haiper": "Dapatkan kunci API di haiper.ai/haiper-api", "heroku": "Hubungkan Heroku AI dengan kunci API.", "hcnsec": "Dapatkan kunci API di api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Buat kunci API di https://app.requesty.ai, lalu tempel di sini sebagai token Bearer. Endpoint yang kompatibel dengan OpenAI di https://router.requesty.ai/v1, dengan katalog /v1/models langsung.", "runwayml": "Pembuatan video Runway berbasis tugas. OmniRoute mengirimkan pekerjaan text-to-video atau image-to-video, melakukan polling pada /v1/tasks/[id], dan menormalisasi output video yang selesai kembali ke respons /v1/videos/generations yang mirip OpenAI.", "sambanova": "Kredit gratis $5 saat pendaftaran (validitas 30 hari), tidak memerlukan kartu kredit", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Buat kunci API di https://seekai.cc, lalu tempelkan di sini sebagai token Bearer. URL dasar yang kompatibel dengan OpenAI: https://seekai.cc/v1.", "sap": "Penemuan model menggunakan /v2/lm/scenarios/foundation-models/models pada AI_API_URL. Permintaan chat menggunakan deploymentUrl/chat/completions dan memerlukan AI-Resource-Group.", "sarvam": "Sarvam AI kompatibel dengan OpenAI di /v1. OmniRoute memeriksa /v1/models dan mengarahkan lalu lintas obrolan ke /v1/chat/completions. Model disesuaikan untuk bahasa-bahasa India.", "scaleway": "1 juta token gratis untuk akun baru — patuh EU/GDPR (Paris), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Hubungkan Claude Code dengan alur OAuth yang ada.", "cline": "Hubungkan Cline dengan alur OAuth yang ada.", "cursor": "Hubungkan Cursor IDE dengan alur OAuth yang ada.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Hubungkan Cursor dengan kunci API pengguna (crsr_...) dari cursor.com/dashboard/api; sesi IDE tidak diperlukan.", "github": "Hubungkan GitHub Copilot dengan alur OAuth yang ada.", "gitlab-duo": "Aplikasi OAuth dengan cakupan ai_features + read_user. Konfigurasikan GITLAB_DUO_OAUTH_CLIENT_ID dan secara opsional GITLAB_DUO_OAUTH_CLIENT_SECRET pada instans OmniRoute ini.", "kilocode": "Hubungkan Kilo Code dengan alur OAuth yang ada.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Salin kredensial yang diperlukan dari domain penyedia itu sendiri. Untuk cookie, salin hanya nilai header Cookie dan hilangkan Cookie:.", "webSessionGuideStep3Manual": "Jalur manual: buka alat pengembang browser (F12 → Jaringan), muat ulang halaman, buka permintaan yang terautentikasi, dan salin nilai header Cookie dari Header Permintaan — hilangkan awalan Cookie:.", "webSessionGuideStep4": "Rekatkan di sini dan periksa koneksinya. Jika berhenti berfungsi, masuk lagi dan ganti dengan nilai baru.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Impor file .har", + "harImportButtonBusy": "Mengimpor…", + "harImportButtonHint": "Ekspor dari tab Network di DevTools setelah mengirim setidaknya satu pesan chat.", + "harImportStatusValid": "Diimpor — berlaku selama ~{minutes}m.", + "harImportStatusExpiringSoon": "Diimpor — hanya berlaku selama ~{minutes}m lagi.", + "harImportStatusExpired": "Diimpor, tetapi token ini sudah kedaluwarsa ({minutes}m yang lalu) — ekspor HAR baru.", + "harImportStatusUnknownExpiry": "Diimpor. Masa berlakunya tidak dapat dibaca.", + "harImportErrorNotJson": "File tersebut bukan JSON yang valid — apakah ini benar-benar hasil ekspor .har?", + "harImportErrorNoEntries": "HAR ini tidak memiliki entri jaringan yang direkam.", + "harImportErrorNoChathubUrl": "Tidak ditemukan koneksi chat Copilot dalam HAR ini. Kirim setidaknya satu pesan chat di m365.cloud.microsoft sebelum mengekspor.", + "harImportErrorUnparsableUrl": "Koneksi chat ditemukan, tetapi URL-nya tidak dapat dibaca.", + "harImportErrorMissingFields": "Koneksi chat ditemukan, tetapi tokennya tidak ada.", + "harImportErrorReadFailed": "File tersebut tidak dapat dibaca.", + "harImportErrorUnknown": "Kredensial tidak dapat diekstrak dari file HAR tersebut.", "webSessionSecurityHint": "Perlakukan ini seperti kata sandi: kata sandi tersebut dapat mengakses akun web yang Anda masuki hingga masa berlakunya habis atau dicabut.", "webNoAuthGuideTitle": "Tidak diperlukan kredensial", "webNoAuthGuideBody": "{provider} tidak memerlukan kunci API atau cookie. Simpan koneksi untuk menggunakan titik akhir web gratisnya.", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Mode layanan Codex diperbarui", "codexServiceTierActive": "Tingkat layanan Codex {tier} aktif", "codexTierFastLabel": "Cepat", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Fleksibel", "commandCodeApplyFailed": "Gagal menerapkan Kode Perintah auth", "commandCodeApplyingApproval": "Browser disetujui, menerapkan…", "commandCodeApplyingKey": "Menerapkan kunci yang disetujui oleh browser…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Kode Perintah auth telah kedaluwarsa", "commandCodeConnected": "Kode Perintah terhubung", "commandCodeConnectionAdded": "Koneksi Kode Perintah ditambahkan", + "clearConnectionCooldown": "Hapus masa tunggu", + "clearConnectionCooldownInProgress": "Menghapus…", + "clearConnectionCooldownTitle": "Hapus masa tunggu sekarang — gunakan ketika kuota sudah diperbarui di layanan hulu", "commandCodeLinkExpired": "Tautan Kode Perintah telah kedaluwarsa", "commandCodeOpeningStudio": "Membuka Command Code Studio…", "commandCodePopupBlocked": "Popup diblokir. Silakan izinkan popup dan coba lagi Command Code Connect.", "commandCodeStartFailed": "Gagal memulai Command Code auth", "connectionDeleted": "Koneksi dihapus", "connectionFallback": "koneksi", + "connectionCooldownCleared": "Masa tunggu dihapus — koneksi kembali bergabung dengan perutean", "coolingConnectionsDescription": "Koneksi ini sedang mendingin setelah permintaan terakhir. OmniRoute akan melewatinya sampai timer habis — tidak perlu menonaktifkan secara manual.", "coolingConnectionsTitle": "Saat ini mendinginkan ({count})", + "failedClearConnectionCooldown": "Gagal menghapus masa tunggu", "failedDeleteAlias": "Gagal menghapus alias", "failedDeleteConnection": "Gagal menghapus koneksi", "failedDistributeProxies": "Gagal mendistribusikan proxy.", @@ -6457,7 +6465,7 @@ "noProvidersMatch": "Tidak ada penyedia yang cocok dengan pencarian Anda.", "noSavedProxies": "Tidak ada proxy yang disimpan. Tambahkan proxy di Pengaturan → Proxy terlebih dahulu.", "pageLoadErrorDescription": "Kami tidak dapat memuat data penyedia saat ini. Periksa koneksi Anda dan coba lagi.", - "pageLoadErrorId": "Error ID: {id}", + "pageLoadErrorId": "ID Kesalahan: {id}", "pageLoadErrorRetry": "Coba Lagi", "pageLoadErrorTitle": "Gagal memuat penyedia", "playgroundTitle": "Taman Bermain", @@ -6466,16 +6474,11 @@ "providerDetailGlobalFlexActive": "Tingkat layanan Global Codex flex aktif", "providerDetailGlobalPriorityActive": "Tingkat layanan prioritas Global Codex aktif", "proxiesDistributed": "Distribusi penugasan proxy {assigned} di seluruh {tagLabel}{total} koneksi.", - "rerankEndpoint": "Rerank", + "rerankEndpoint": "Peringkatkan ulang", "savedModelEndpointSettings": "Pengaturan endpoint model yang disimpan", "searchByModelAria": "Cari berdasarkan model", "selectSupportedEndpoint": "Pilih setidaknya satu endpoint yang didukung", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "Pengaturan", @@ -6554,29 +6557,29 @@ "systemPrompt": "Perintah Sistem", "thinkingBudget": "Memikirkan Anggaran", "proxy": "Proksi", - "httpProxy": "HTTP Proxy", + "httpProxy": "Proksi HTTP", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Bagian proksi", + "requestBodyLimitTitle": "Batas Isi Permintaan", + "requestBodyLimitDescription": "Ukuran maksimum payload API yang diterima sebelum isi permintaan diuraikan. Rute unggahan khusus tetap memiliki setidaknya batas bawaan sebesar 100 MB.", + "requestBodyLimitInputLabel": "Batas ukuran isi permintaan dalam MB", + "requestBodyLimitEmptyError": "Masukkan batas dalam MB", + "requestBodyLimitWholeNumberError": "Gunakan bilangan bulat", + "requestBodyLimitMinimumError": "Minimum adalah {min} MB", + "requestBodyLimitMaximumError": "Maksimum adalah {max} MB", + "requestBodyLimitLoadFailed": "Gagal memuat pengaturan batas permintaan", + "requestBodyLimitSaveSuccess": "Batas ukuran isi permintaan disimpan", + "requestBodyLimitSaveFailed": "Gagal menyimpan batas ukuran isi permintaan", + "requestBodyLimitSaving": "Menyimpan...", + "requestBodyLimitSave": "Simpan", + "requestBodyLimitCurrent": "Saat ini: {value}", "cacheConfigLoadFailed": "Gagal memuat pengaturan cache", "cacheConfigSaveSuccess": "Pengaturan cache disimpan", "cacheConfigSaveFailed": "Gagal menyimpan pengaturan cache", "modelCatalogTtlWholeNumberError": "Gunakan angka bulat", "modelCatalogTtlMinimumError": "Minimum adalah {min} ms", "modelCatalogTtlMaximumError": "Maksimum adalah {max} ms", - "modelCatalogCacheTtl": "Model Catalog Cache TTL", + "modelCatalogCacheTtl": "TTL Cache Katalog Model", "modelCatalogCacheTtlDescription": "Berapa lama respons katalog model disimpan dalam cache sebelum diperbarui", "modelCatalogCacheTtlLabel": "TTL cache katalog model dalam milidetik", "modelCatalogCacheTtlSaving": "Menyimpan...", @@ -6593,59 +6596,59 @@ "enablePassword": "Aktifkan Kata Sandi", "darkMode": "Mode Gelap", "lightMode": "Modus Cahaya", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Memori", + "memoryDesc": "Memori percakapan persisten lintas sesi", + "memoryEnabled": "Aktifkan Memori", + "memoryEnabledDesc": "Jika diaktifkan, OmniRoute akan menyisipkan konteks relevan dari percakapan sebelumnya.", "memoryTokenCostWarning": "Perhatian: dengan memori yang diaktifkan, OmniRoute menyisipkan hingga {tokens} token konteks yang diambil ke dalam setiap permintaan obrolan — ini meningkatkan penggunaan token dan biaya. Untuk melewati penyisipan pada permintaan tertentu, kirim header \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Token Maksimum", + "retentionDays": "Retensi", + "recent": "Terbaru", + "recentDesc": "Rentang kronologis", + "semantic": "Semantik", + "semanticDesc": "Pencarian vektor", + "hybrid": "Hibrida", + "hybridDesc": "Terbaru + Semantik", + "skillsTitle": "Keahlian", + "skillsDesc": "Alat untuk model", + "skillsEnabled": "Aktifkan Keahlian", + "skillsEnabledDesc": "Memungkinkan agen menjalankan fungsi.", + "skillsComingSoon": "Marketplace keahlian akan segera hadir.", + "memorySkillsTitle": "Memori & Keahlian", + "memorySkillsDesc": "Konteks & kemampuan persisten", + "modelsDevTitle": "Basis Data Model", + "modelsDevDesc": "Sinkronkan harga, kemampuan & spesifikasi secara otomatis dari models.dev", + "modelsDevEnabled": "Aktifkan Sinkronisasi models.dev", + "modelsDevEnabledDesc": "Ambil harga, kemampuan, dan spesifikasi model dari basis data sumber terbuka models.dev", + "modelsDevInterval": "Interval Sinkronisasi", + "syncNow": "Sinkronkan Sekarang", + "syncing": "Menyinkronkan...", + "lastSync": "Sinkronisasi terakhir", + "never": "Belum pernah", "justNow": "sekarang", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Statistik Sinkronisasi", + "modelsDevStatsDesc": "Cakupan data models.dev saat ini", "providers": "Penyedia", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Model dengan Informasi Harga", + "capabilities": "Kapabilitas", + "lastSyncCount": "Jumlah Sinkronisasi Terakhir", + "lastSyncFull": "Sinkronisasi penuh terakhir", + "modelsDevInfo": "Cara Kerjanya", + "modelsDevInfoDesc": "models.dev adalah basis data sumber terbuka berisi spesifikasi model AI yang dikelola oleh tim SST/OpenCode. Basis data ini menyediakan informasi harga, kapabilitas, batas konteks, dan modalitas untuk lebih dari 4.000 model dari lebih dari 100 penyedia.", + "modelsDevInfoResolution": "Urutan penentuan harga (prioritas tertinggi terlebih dahulu):", + "modelsDevInfoOrder": "Penggantian oleh Pengguna → models.dev → LiteLLM → Default Bawaan", "systemTheme": "Tema Sistem", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Aktifkan Mode Debug", "logToolSourcesToggle": "Log Sumber Alat", "logToolSourcesDescription": "Keluarkan baris log diagnostik per permintaan yang merangkum jumlah alat dan rincian sumber MCP/hosted/client.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Sematkan Informasi ke Halaman Beranda", "homePinnedSectionsDesc": "Pilih bagian mana yang akan disematkan ke bagian atas halaman Beranda.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Batas Kuota Penyedia", + "homeProviderQuotaLimitsDesc": "Sematkan kontainer status Kuota Penyedia (dengan tombol Segarkan Semua) di bagian atas halaman Beranda.", + "homeQuickStart": "Mulai Cepat", + "homeQuickStartDesc": "Tampilkan panel Mulai Cepat di halaman Beranda.", + "homeProviderTopology": "Topologi Penyedia", + "homeProviderTopologyDesc": "Tampilkan Topologi Penyedia di halaman Beranda.", "accountEmailVisibility": "Visibilitas email akun", "accountEmailVisibilityDesc": "Tampilkan email akun lengkap di seluruh layar penyedia, kombo, log, kuota, dan playground. Matikan ini untuk menyamarkannya secara default.", "comboConfigMode": "Mode konfigurasi kombo", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Interval penyegaran", "providerQuotaAutoRefreshIntervalDesc": "Seberapa sering tampilan kuota harus disegarkan, dalam detik.", "seconds": "detik", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Tampilkan Item Bilah Samping", "enableCache": "Aktifkan Cache", "cacheTTL": "Tembolok TTL", "maxCacheSize": "Ukuran Tembolok Maks", "clearCache": "Hapus Tembolok", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Cache berhasil dibersihkan", + "clearCacheFailed": "Gagal membersihkan cache", "cacheHits": "Cache Hit", "cacheMisses": "Cache Hilang", "hitRate": "Tingkat Hit", "cacheEntries": "Entri Cache", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Pengaturan Cache", + "semanticCache": "Cache Semantik", + "maxEntries": "Entri Maksimum", + "ttlMinutes": "TTL (menit)", "promptCache": "Tembolok Cepat", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Strategi", + "preserveClientCache": "Pertahankan Cache Klien", + "enabled": "Diaktifkan", "loading": "Loading...", "saving": "Menyimpan...", - "save": "Save", + "save": "Simpan", "circuitBreaker": "Pemutus Arus", "retryPolicy": "Kebijakan Coba Ulang", "maxRetries": "Percobaan Ulang Maks", @@ -6690,21 +6693,21 @@ "timeoutMs": "Batas waktu (md)", "enableSystemPrompt": "Aktifkan Perintah Sistem", "systemPromptText": "Teks Perintah Sistem", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Nonaktifkan Otomatis Akun yang Diblokir", + "autoDisableDescription": "Tandai koneksi penyedia secara permanen sebagai dinonaktifkan jika koneksi tersebut mengembalikan sinyal pemblokiran terminal tertentu (misalnya HTTP 403 'verifikasi akun Anda'). Tindakan ini menghapusnya dari rotasi gabungan.", + "autoDisableThreshold": "Ambang Batas Pemblokiran", + "autoDisableThresholdDesc": "Jumlah sinyal pemblokiran berturut-turut yang diperlukan sebelum dinonaktifkan secara permanen.", + "autoDisableBannedScope": "Terapkan penonaktifan otomatis pada", + "autoDisableBannedScopeDesc": "Akun login (langganan berbayar dan akun gratis) dapat dikunci oleh penyedia upstream jika OmniRoute terus mencoba ulang setelah pemblokiran. Kunci API prabayar berbayar tidak memiliki risiko tersebut — biarkan tetap berada dalam kumpulan agar strategi isi-dahulu dapat menggunakan kunci berikutnya.", + "autoDisableBannedScopeAll": "Semua koneksi", + "autoDisableBannedScopeAllDesc": "Nonaktifkan setiap koneksi yang mengembalikan sinyal pemblokiran permanen, termasuk kunci API prabayar.", + "autoDisableBannedScopeSubscription": "Hanya akun login/langganan", + "autoDisableBannedScopeSubscriptionDesc": "Nonaktifkan akun OAuth, cookie, sesi, dan login web (berbayar atau gratis). Kunci API prabayar tetap aktif agar perutean dapat beralih saat terjadi kegagalan.", "customBannedSignals": "Kata Kunci yang Diblokir", "customBannedSignalsDesc": "Kata kunci tambahan yang memicu deteksi pemblokiran akun permanen. Kata kunci bawaan selalu berlaku.", "customBannedSignalsPlaceholder": "mis. api key revoked", "noCustomBannedSignals": "Tidak ada kata kunci kustom. Hanya kata kunci bawaan yang aktif.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Struktur Ketahanan", "resilienceStructureDesc": "Halaman ini hanya mengonfigurasi perilaku. Status pemutusan langsung ditampilkan di halaman Kesehatan. Percobaan ulang khusus kombo dan kontrol slot round-robin tetap pada pengaturan kombo.", "enableThinking": "Aktifkan Berpikir", "maxThinkingTokens": "Token Berpikir Maks", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Tampilkan kontrol Corong Tailscale di halaman Titik Akhir.", "showNgrokTunnel": "Terowongan ngrok", "showNgrokTunnelDesc": "Tampilkan kontrol Terowongan ngrok di halaman Titik Akhir.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Sembunyikan item bilah sisi", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", + "presetAll": "Semua", + "presetAllDesc": "Tampilkan semuanya", + "presetEssentials": "Esensial", + "presetEssentialsDesc": "Jalur pemula - Alat lanjutan tetap dapat dicari", "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", + "presetMinimalDesc": "Hanya halaman inti", + "presetDeveloper": "Pengembang", + "presetDeveloperDesc": "Alat pengembangan & proksi", "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAdminDesc": "Pemantauan & audit", + "settingsSidebarTitle": "Penyesuaian Bilah Sisi", + "settingsSidebarDesc": "Pilih item bilah sisi yang akan ditampilkan. Esensial membuat alat Lanjutan tetap dapat dicari.", "hideHealthLogs": "Sembunyikan Log Pemeriksaan Kesehatan", "hideHealthLogsDesc": "Saat AKTIF, sembunyikan pesan [HealthCheck] di konsol server", "themeAccent": "Warna tema", @@ -6780,19 +6783,19 @@ "themeOrange": "Oranye", "themeCyan": "Sian", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Sesuaikan nama dan logo aplikasi", + "appName": "Nama Aplikasi", + "appNameDesc": "Nama tampilan yang ditampilkan di bilah sisi dan tab browser", + "customLogo": "URL Logo Kustom", + "customLogoDesc": "URL ke gambar logo kustom Anda", + "uploadLogo": "Unggah Logo", + "resetLogo": "Atur Ulang ke Bawaan", + "logoPreview": "Pratinjau", + "customFavicon": "Favicon Browser", + "customFaviconDesc": "URL ke favicon kustom Anda (ditampilkan di tab browser)", + "uploadFavicon": "Unggah Favicon", + "resetFavicon": "Atur Ulang Favicon", + "faviconPreview": "Pratinjau Favicon", "logoFileTooLarge": "File logo harus berukuran kurang dari 500KB", "faviconFileTooLarge": "File favicon harus berukuran kurang dari 50KB", "invalidLogoFileType": "Jenis file tidak valid. Harap unggah PNG, JPG, SVG, GIF, atau WebP.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Interval Penyegaran", "ruleModeDescription": "Deskripsi Mode Aturan" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", + "bulkHealthcheck": "Pemeriksaan Kesehatan Massal", + "bulkHealthcheckDesc": "Uji semua proksi yang dikonfigurasi terhadap URL target untuk mengetahui mana yang berfungsi.", + "healthcheckTesting": "Menguji...", + "healthcheckAll": "Periksa Kesehatan Semua", + "healthcheckFailed": "Gagal menjalankan pemeriksaan kesehatan", + "healthcheckTestingAll": "Menguji semua proksi secara paralel...", "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", + "healthcheckWorking": "Berfungsi", + "healthcheckFailedLabel": "Gagal", "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "healthcheckProxyUrl": "URL Proksi", + "healthcheckLatency": "Latensi", "proxyDocumentationScopeTitle": "Resolusi cakupan proksi", "proxyDocumentationScopeDescBefore": "OmniRoute menentukan proksi keluar berdasarkan urutan prioritas:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "kombinasi → akun → penyedia → global", "proxyDocumentationScopeDescAfter": ". Cakupan yang paling spesifik yang menang.", "proxyDocumentationAddTitle": "Menambahkan proksi kustom", "proxyDocumentationAddDescBefore": "Buka", @@ -6984,7 +6987,7 @@ "passthroughDesc": "Tidak ada perubahan — klien mengontrol anggaran pemikiran", "thinkingModePassthrough": "Lewati", "thinkingModePassthroughDesc": "Biarkan alasan klien tidak berubah (usaha, ringkasan, blok pemikiran). Diperlukan untuk pemikiran terlihat Codex/Desktop. Default.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Otomatis (hapus)", "thinkingModeAutoDesc": "Hapus semua bidang pemikiran/alasan klien (reasoning, reasoning_effort, Claude thinking, Gemini thinking_config) dan biarkan penyedia menciptakan default. Dapat menyembunyikan panel pemikiran dan memutuskan permintaan ringkasan klien.", "thinkingModeCustom": "Kustom", "thinkingModeCustomDesc": "Timpakan setiap permintaan dengan anggaran token pemikiran tetap yang Anda tetapkan di bawah.", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} penyedia diblokir dari /models", "blockProviderTitle": "Blokir {provider}", "unblockProviderTitle": "Buka blokir {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Pencocokan Sidik Jari CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} penyedia dengan sidik jari CLI aktif", + "enableFingerprintTitle": "Aktifkan sidik jari untuk {provider}", + "disableFingerprintTitle": "Nonaktifkan sidik jari untuk {provider}", "systemTransforms": "Alur Transformasi Blok Sistem", "systemTransformsDesc": "Alur transformasi yang dipesan per penyedia diterapkan ke isi permintaan sebelum meneruskan. Mendukung ID penyedia apa pun.", "systemTransformsAddProvider": "Tambahkan penyedia", @@ -7067,15 +7070,15 @@ "costOptDesc": "Lebih suka akun termurah yang tersedia", "resetAware": "RR Sadar Reset", "resetAwareDesc": "Lebih suka akun dengan sisa kuota yang sehat dan hampir disetel ulang", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Berbobot Kuota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Acak Ketat", + "strictRandomDesc": "Kocok tumpukan — menggunakan setiap akun satu kali sebelum mengocok ulang", "stickyLimit": "Batas Lengket", "stickyLimitDesc": "Panggilan per akun sebelum beralih", "routingStrategyTitle": "Strategi Perutean", "routingStrategySubtitle": "Cocokkan 9router: round-robin akun, batas sticky, dan rotasi kombo", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Bergiliran", "accountRoundRobinDesc": "Bergilir antar akun untuk mendistribusikan beban", "comboRoundRobin": "Round Robin Kombo", "comboRoundRobinDesc": "Bergilir antar target kombo alih-alih selalu memulai dari yang pertama", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Ganti strategi akun global untuk penyedia ini (paritas 9router).", "providerRoutingStrategy": "Strategi akun", "providerRoutingInheritGlobal": "Warisi default global", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Batas Awal Kuota", + "quotaPreflightSubtitle": "Lewati akun yang kehabisan kuota sebelum mengirim permintaan ke upstream", + "quotaPreflightEnable": "Aktifkan pemeriksaan awal kuota", + "quotaPreflightEnableDesc": "Sebelum setiap permintaan, periksa sisa kuota akun (periode 5 jam / mingguan / bulanan). Akun yang berada pada atau di bawah batas akan dilewati tanpa panggilan upstream. Batas per periode yang ditetapkan pada halaman Kuota Penyedia selalu diutamakan daripada nilai default di sini.", + "quotaPreflightCutoff": "Batas global (min. sisa %)", + "quotaPreflightCutoffDesc": "Berhenti menggunakan akun saat sisa kuotanya turun hingga persentase ini atau lebih rendah, untuk setiap periode yang tidak memiliki batas tersendiri. Sesuai dengan bilah persentase sisa pada halaman Kuota Penyedia.", + "quotaPreflightWindowsHint": "Periode yang memiliki batas per periode atau per penyedia sendiri (ditetapkan dalam modal Batas pada halaman Kuota Penyedia) tidak terpengaruh oleh nilai default ini.", + "quotaPreflightLoadFailed": "Tidak dapat memuat pengaturan pemeriksaan awal kuota.", "modelAliases": "Alias Model", "modelAliasesTitle": "Alias Model", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Petakan ulang nama model menggunakan kecocokan persis atau pola wildcard.", "addCustomAlias": "Tambah Alias Kustom", "deprecatedModelId": "ID model yang sudah usang", "newModelId": "ID model baru", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Strategi kombo", "priority": "Prioritas", "weighted": "Tertimbang", - "contextRelay": "Context Relay", + "contextRelay": "Relai Konteks", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Percobaan Ulang Maks", "retryDelayLabel": "Penundaan Coba Lagi (md)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Konkurensi / Model", "queueTimeout": "Batas Waktu Antrian (md)", "queueDepth": "Kedalaman Antrean", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Ambang Batas Serah Terima", + "contextRelayMaxMessages": "Jumlah Maksimum Pesan untuk Ringkasan", + "contextRelaySummaryModel": "Model Ringkasan", + "contextRelayProviderNote": "Relai Konteks saat ini membuat serah terima untuk akun Codex dan menggunakan nilai-nilai ini sebagai default global untuk kombinasi baru atau yang belum dikonfigurasi.", "providerProfiles": "Profil Penyedia", "providerProfilesDesc": "Pisahkan pengaturan ketahanan untuk penyedia OAuth (berbasis sesi) dan Kunci API (terukur). Penyedia OAuth memiliki ambang batas yang lebih ketat karena batas tarif yang lebih rendah.", "oauthProviders": "Penyedia OAuth", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}hari yang lalu", "backupReasonManual": "panduan", "backupReasonPreRestore": "pra-pemulihan", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# koneksi} other {# koneksi}}", "noChangesSinceBackup": "Tidak ada perubahan sejak pencadangan terakhir", "backupFailed": "Pencadangan gagal", "restoreFailed": "Pemulihan gagal", @@ -7329,7 +7332,7 @@ "configured": "dikonfigurasi", "none": "Tidak ada", "modelOverrideValuePlaceholder": "Nilai numerik", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Dipisahkan dengan koma dalam bahasa Inggris, misalnya low, medium, high", "addKeyValue": "Tambahkan nilai kunci", "noModelOverrides": "Tidak ada override yang dikonfigurasi untuk model ini.", "modelOverrideLoadFailed": "Gagal memuat override model", @@ -7378,25 +7381,25 @@ "editPricing": "Sunting Harga", "viewFullDetails": "Lihat Detail Lengkap", "themeCoral": "Koral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Perutean Volume Adaptif", + "adaptiveVolumeRoutingDesc": "Skalakan koneksi secara dinamis berdasarkan volume payload dan tekanan throughput.", + "lkgpToggleTitle": "Penyedia Terakhir yang Diketahui Baik (LKGP)", + "lkgpToggleDesc": "Saat diaktifkan, router mengingat penyedia yang terakhir memberikan respons berhasil dan mencobanya terlebih dahulu pada permintaan berikutnya.", "echoRequestedModelTitle": "Echo nama model yang diminta dalam respons", "echoRequestedModelDesc": "Ketika diaktifkan, bidang `model` pada respons akan mengembalikan nama alias atau kombo yang diminta klien alih-alih nama model hulu. Memperbaiki klien yang ketat (mis. Claude Desktop) yang menolak respons yang modelnya tidak cocok dengan permintaan.", "webSearchRouteTitle": "Perutean pencarian web", "webSearchRouteDesc": "Ketika permintaan menyertakan alat web_search bawaan, rute seluruh permintaan ke model ini alih-alih default — berguna untuk penyedia yang tidak menerapkan alat server web_search Anthropic. Biarkan kosong untuk menonaktifkan.", "webSearchRoutePlaceholder": "Cari atau pilih model…", "paidModelPatternWarning": "Pola ini hanya cocok dengan model berbayar — aktifkan model berbayar atau sesuaikan polanya.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Bersihkan Cache LKGP", + "lkgpCacheCleared": "Cache LKGP berhasil dibersihkan", + "lkgpCacheClearFailed": "Gagal membersihkan cache LKGP", + "days": "Hari", + "lkgp": "Mode LKGP", + "lkgpDesc": "Penyedia Terakhir yang Diketahui Baik (ketahanan yang dapat diprediksi)", + "maintenance": "Pemeliharaan", + "purgeExpiredLogs": "Hapus Log Kedaluwarsa", + "purgeLogsFailed": "Gagal menghapus log", "logsDeleted": "{count, plural, =0 {Tidak ada log kedaluwarsa yang dibersihkan} one {Membersihkan # log kedaluwarsa} other {Membersihkan # log kedaluwarsa}}", "resetUsageData": "Atur Ulang Data Penggunaan", "resetUsageDataDesc": "Pilih seberapa jauh ke belakang Anda ingin menghapus data penggunaan, log permintaan, dan data analitik. Konfigurasi penyedia, koneksi, kunci API, kombo, dan pengaturan akan dipertahankan. Tindakan ini tidak dapat dibatalkan.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Gagal mengatur ulang data penggunaan", "reset": "Atur Ulang", "resetting": "Mengatur ulang...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Dioptimalkan untuk Konteks", + "contextOptDesc": "Merutekan berdasarkan kebutuhan jendela konteks dan panjang percakapan", + "cacheOpt": "Dioptimalkan untuk Cache", + "cacheOptDesc": "Mempertahankan prefiks prompt yang dapat digunakan kembali pada akun penyedia yang sama", + "priorityDesc": "Fallback berurutan - mencoba penyedia 1 terlebih dahulu, lalu penyedia 2, dan seterusnya", + "weightedDesc": "Mendistribusikan lalu lintas berdasarkan bobot persentase ke seluruh penyedia", + "modelRoutingTitle": "Aturan Perutean Model", + "modelRoutingDesc": "Merutekan model secara otomatis ke kombinasi tertentu menggunakan pola glob", + "addRule": "Tambah Aturan", + "routeToCombo": "Rutekan ke Kombinasi", + "selectCombo": "Pilih kombinasi...", + "priorityHint": "Semakin tinggi = diperiksa lebih dahulu. Gunakan 10+ untuk pola tertentu.", + "patternHint": "Gunakan * untuk sejumlah karakter apa pun, ? untuk satu karakter. Tidak peka huruf besar-kecil.", + "noRoutingRules": "Tidak ada aturan perutean yang dikonfigurasi. Secara default, permintaan menggunakan kombinasi global.", + "routingRuleHint": "Tambahkan aturan seperti claude-opus* -> frontier-combo untuk merutekan permintaan secara otomatis.", + "deleteRoutingRule": "Hapus aturan perutean model ini?", + "exactMatchMode": "Kecocokan Persis", + "wildcardPatternMode": "Pola Wildcard", + "exactMatchModeDesc": "Gunakan alias persis untuk ID model yang sudah tidak digunakan atau diganti namanya.", + "wildcardPatternModeDesc": "Gunakan alias wildcard dengan * dan ? jika satu keluarga model harus dipetakan ke satu target.", + "noExactAliasesConfigured": "Tidak ada alias kecocokan persis yang dikonfigurasi.", + "wildcardRulesTitle": "Aturan Wildcard", + "noWildcardAliasesConfigured": "Tidak ada alias wildcard yang dikonfigurasi.", + "overview": "Ikhtisar", + "unknownError": "Kesalahan Tidak Diketahui", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Daftar Putih", + "syncDisabled": "Sinkronisasi Dinonaktifkan", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,11 +7456,11 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Sinkronisasi Diaktifkan", + "blacklist": "Daftar Hitam", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Model yang Disinkronkan", + "budget": "Anggaran", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Gagal menyetel ulang harga: {reason}", "tab": "Tab", @@ -7465,11 +7468,11 @@ "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Gagal menyimpan harga: {reason}", "pricingResetProvider": "Penyetelan ulang harga untuk {provider}", - "nextSync": "Next Sync", + "nextSync": "Sinkronisasi Berikutnya", "pricingSyncFailedWithReason": "Sinkronisasi harga gagal: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Hapus Harga yang Disinkronkan", + "compressionTitle": "Kompresi Prompt", + "compressionDesc": "Kurangi penggunaan token dengan mengompresi prompt sebelum mengirimkannya ke penyedia", "compressionGuidanceFullGuideLink": "Panduan kompresi lengkap", "compressionGuidanceShow": "Detail", "compressionGuidanceHide": "Sembunyikan detail", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Tulis ulang riwayat obrolan yang memenuhi syarat sambil mempertahankan kode, URL, dan maksud.", "tokenSaverFineTunePrefix": "Sesuaikan setiap mesin pada", "tokenSaverFineTuneSuffix": "atau gabungkan mesin per permintaan pada", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Mode Kompresi", + "compressionModeOff": "Nonaktif", + "compressionModeOffDesc": "Tidak ada kompresi yang diterapkan", + "compressionModeLite": "Ringan", + "compressionModeLiteDesc": "Pengurangan spasi kosong dan baris kosong", + "compressionModeStandard": "Standar (Caveman)", + "compressionModeStandardDesc": "Kompresi berbasis aturan dengan 30+ pola, mempertahankan blok kode dan URL", + "compressionModeAggressive": "Agresif", + "compressionModeAggressiveDesc": "Peringkasan + kompresi hasil alat + penuaan progresif untuk penghematan maksimal", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Konfigurasi Mesin Agresif", @@ -7506,7 +7509,7 @@ "compressionUltraModelPath": "Jalur Model SLM", "compressionUltraEngine": "Tingkat Ultra", "compressionUltraEngineHeuristic": "Heuristik (Tingkat-A, default)", - "compressionUltraEngineSlm": "SLM (LLMLingua-2, opt-in)", + "compressionUltraEngineSlm": "SLM (LLMLingua-2, ikut serta secara opsional)", "compressionUltraSlmHint": "SLM mengunduh model ONNX kecil pada penggunaan pertama (cold-start) dan secara transparan beralih kembali ke heuristik saat waktu habis atau jika tidak tersedia.", "compressionUltraSlmPrewarm": "Pra-hangatkan model SLM saat diaktifkan", "compressionSummarizerEnabled": "Aktifkan Peringkas", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Jumlah pesan terbaru yang disimpan pada setiap tingkatan penuaan (lebih tinggi = lebih dipertahankan)", "compressionToolStrategies": "Strategi Hasil Alat", "compressionToolStrategiesDesc": "Alihkan strategi kompresi untuk jenis hasil alat yang berbeda", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Pengaturan Umum", + "compressionAutoTrigger": "Ambang Batas Pemicu Otomatis", + "compressionCacheTTL": "TTL Cache", + "compressionPreserveSystem": "Pertahankan Prompt Sistem", "compressionPreserveSystemAlways": "Selalu", "compressionPreserveSystemWhenNoCache": "Saat tidak ada cache", "compressionPreserveSystemNever": "Tidak pernah", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Disimpan", "compressionExclusionsCount": "{count, plural, one {# pengecualian} other {# pengecualian}} dikonfigurasi", "compressionExclusionsEmpty": "Tidak ada pengecualian yang dikonfigurasi — setiap model/endpoint memenuhi syarat untuk kompresi (perilaku default).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Konfigurasi Mesin Caveman", + "compressionCavemanConfigDesc": "Sesuaikan mesin kompresi berbasis aturan", "compressionCavemanPanelHint": "Status aktif/nonaktif dan tingkatannya diatur di panel:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Kompres Peran Pesan", + "compressionRoleUser": "Pengguna", + "compressionRoleAssistant": "Asisten", + "compressionRoleSystem": "Sistem", + "compressionMinLength": "Panjang Pesan Minimum", + "compressionSkipRules": "Lewati Aturan Kompresi", + "compressionSkipRulesDesc": "Klik aturan untuk melewatinya selama kompresi", + "compressionPreservePatterns": "Pertahankan Pola", + "compressionPreservePatternsDesc": "Pola regex yang tidak pernah dikompresi (satu per baris)", + "compressionLogTitle": "Log Kompresi", + "compressionLogEmpty": "Belum ada permintaan yang dikompresi. Statistik kompresi akan muncul di sini saat permintaan diproses dengan kompresi diaktifkan.", "minutes": "menit", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Pemfilteran output alat yang memahami perintah", + "compressionModeCodexResponses": "Output alat Responses", + "compressionModeCodexResponsesDesc": "Kompresi konservatif untuk output shell, patch, pencarian, build, dan JSON yang memenuhi syarat", + "compressionModeStacked": "Bertumpuk", + "compressionModeStackedDesc": "Pemfilteran output alat RTK yang diikuti oleh kompresi pesan Caveman", + "qdrantTitle": "Qdrant (Memori vektor)", + "qdrantDesc": "Opsional. Mengindeks memori semantik dalam basis data vektor eksternal untuk pengambilan yang lebih cepat.", + "qdrantStatusActive": "Aktif", + "qdrantStatusError": "Kesalahan", + "qdrantStatusDisabled": "Dinonaktifkan", + "qdrantEnable": "Aktifkan Qdrant", + "qdrantEnableDesc": "Saat diaktifkan, strategi semantik/hibrida dapat menggunakan Qdrant untuk mengambil memori.", + "qdrantTesting": "Menguji...", + "qdrantTestConnection": "Uji koneksi", + "qdrantSaved": "Konfigurasi disimpan", + "qdrantSaveError": "Gagal menyimpan konfigurasi", + "qdrantHostHint": "Tanpa port. Contoh: 127.0.0.1 atau http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Default Qdrant: 6333", + "qdrantCollectionHint": "Tempat titik memori akan disimpan.", + "qdrantEmbeddingModel": "Model embedding", + "qdrantHelpTitle": "Bantuan penyiapan cepat", + "qdrantHelpQuickTitle": "Penyiapan cepat (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Host: IP/URL Qdrant, Port: 6333, Koleksi: omniroute_memory.", + "qdrantHelpStep2": "2. Jika menggunakan nvidia/llama-nemotron-embed-vl-1b-v2:free, gunakan dimensi koleksi 2048.", + "qdrantHelpStep3": "3. Kolom model: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Simpan, uji koneksi, lalu uji pencarian.", + "qdrantEmbeddingQuickSelect": "Pilih cepat dari model yang ditemukan...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Format: provider/model. Kredensial penyedia harus dikonfigurasi.", + "qdrantApiKeyPlaceholderKeep": "(biarkan kosong untuk mempertahankan kunci saat ini)", + "qdrantApiKeyPlaceholderOptional": "(biarkan kosong jika tidak digunakan)", + "qdrantSaveHint": "Tips: edit host/port/koleksi/model lalu klik Simpan. Kunci API bersifat opsional.", + "qdrantSearchTestTitle": "Uji pencarian", + "qdrantSearchTestDesc": "Menghasilkan embedding dan melakukan pencarian di Qdrant.", + "qdrantSearchPlaceholder": "Contoh: preferensi pengguna, riwayat, dll.", + "qdrantNoResults": "Tidak ada hasil (atau Qdrant belum dikonfigurasi).", + "qdrantCleanupTitle": "Retensi dan pembersihan", + "qdrantCleanupDesc": "Menghapus titik yang kedaluwarsa dan lama berdasarkan", + "searching": "Mencari...", + "cleaning": "Membersihkan...", + "cleanNow": "Bersihkan sekarang", "optional": "Opsional", "current": "Saat ini", "remove": "Hapus", @@ -7600,19 +7603,19 @@ "resilienceScope": "Ruang lingkup:", "resilienceTrigger": "Pemicu:", "resilienceEffect": "Efek:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Antrean & Laju Permintaan", + "resilienceAutoEnableApiKeyProviders": "Aktifkan otomatis untuk penyedia kunci API", + "resilienceRequestsPerMinute": "Permintaan per menit", + "resilienceMinTimeBetweenRequests": "Waktu minimum antarpermintaan", + "resilienceConcurrentRequests": "Permintaan serentak", + "resilienceConnectionScopeConcurrentRequests": "Permintaan serentak per koneksi/cakupan kuota", + "resilienceGlobalConcurrentRequests": "Permintaan upstream serentak global (0 = dinonaktifkan)", "resilienceMaxQueueWaitTime": "Waktu tunggu antrian maksimum", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Waktu tunggu dasar", + "resilienceUseUpstreamRetryHints": "Gunakan petunjuk percobaan ulang dari upstream", + "resilienceDefaultPerProvider": "Default (per penyedia)", + "resilienceAlwaysOn": "Selalu aktif", + "resilienceAlwaysOff": "Selalu nonaktif", "routingRemoveEntry": "Hapus entri", "routingNeedlesSubstrings": "Jarum (substring yang cocok)", "routingCaseSensitive": "Peka huruf besar-kecil", @@ -7669,7 +7672,7 @@ "routingAntigravitySignatureDesc": "Kontrol apakah OmniRoute hanya menggunakan kembali tanda tangan pemikiran Gemini yang disimpan atau menerima tanda tangan yang disediakan klien yang telah divalidasi dalam alur panggilan alat yang kompatibel dengan Antigravity.", "routingAntigravitySignatureEnabledLabel": "Diaktifkan", "routingAntigravitySignatureEnabledDesc": "Perilaku saat ini. Abaikan tanda tangan yang disediakan klien dan tetap gunakan alur OmniRoute yang disimpan.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Lewati", "routingAntigravitySignatureBypassDesc": "Terima tanda tangan yang disediakan klien setelah validasi ringan dan kembali ke tanda tangan yang disimpan jika tidak valid.", "routingAntigravitySignatureBypassStrictLabel": "Bypass Ketat", "routingAntigravitySignatureBypassStrictDesc": "Wajibkan validasi protobuf penuh sebelum menerima tanda tangan yang disediakan klien.", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "Dikirim ke model visi sebelum deskripsi yang diekstrak disisipkan kembali ke dalam permintaan asli.", "visionBridgeTimeoutMs": "Batas waktu (md)", "visionBridgeMaxImagesPerRequest": "Gambar Maks Per Permintaan", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Langkah backoff maksimum", + "resilienceProviderBreakerTitle": "Pemutus Sirkuit per Penyedia", + "resilienceFailureThreshold": "Ambang batas kegagalan", + "resilienceDegradationThreshold": "Ambang batas degradasi", "resilienceResetTimeout": "Setel ulang batas waktu", "resilienceFailureThresholdLabel": "Ambang batas kegagalan", "resilienceResetTimeoutLabel": "Setel ulang batas waktu", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Waktu tunggu koneksi", "resilienceUseUpstreamRetryHintsLabel": "Gunakan petunjuk coba ulang hulu", "resilienceUseUpstream429BreakerLabel": "Gunakan petunjuk 429 hulu (pemutus)", "resilienceMaxBackoffStepsLabel": "Langkah mundur maksimal", "resilienceYes": "Ya", "resilienceNo": "Tidak", - "resilienceDefault": "Default", + "resilienceDefault": "Bawaan", "storageDatabaseBackupRetention": "Retensi cadangan basis data", "storageDatabaseBackups": "Cadangan database", "storageBackupRetentionDescription": "Cadangan SQLite otomatis disimpan di", @@ -7729,57 +7732,61 @@ "storageDatabaseStatistics": "Statistik Database", "storageIntegrityNotChecked": "Tidak diperiksa", "backupRetentionSaved": "Retensi cadangan disimpan.", - "backupRetentionSaveFailed": "Failed to save backup retention", - "backupCleanupSuccess": "Deleted {backups} backup set(s) and {files} file(s).", - "backupCleanupFailed": "Failed to clean database backups", - "purgeQuotaSnapshotsSuccess": "Purged {count} quota snapshots", - "purgeQuotaSnapshotsFailed": "Failed to purge quota snapshots", - "purgeCallLogsSuccess": "Purged {count} call logs", - "purgeCallLogsFailed": "Failed to purge call logs", - "purgeDetailedLogsSuccess": "Purged {count} detailed logs", - "purgeDetailedLogsFailed": "Failed to purge detailed logs", - "vacuumCompleted": "VACUUM completed", - "vacuumFailed": "VACUUM failed", - "jsonExportFailed": "JSON export failed", - "invalidJsonFileType": "Invalid file type. Only .json files are allowed.", - "legacyJsonImportSuccess": "Legacy JSON imported successfully!", - "jsonImportFailed": "Failed to import JSON", - "jsonImportError": "Error during JSON import", + "backupRetentionSaveFailed": "Gagal menyimpan retensi cadangan", + "backupCleanupSuccess": "Menghapus {backups} set cadangan dan {files} file.", + "backupCleanupFailed": "Gagal membersihkan cadangan basis data", + "purgeQuotaSnapshotsSuccess": "Menghapus permanen {count} snapshot kuota", + "purgeQuotaSnapshotsFailed": "Gagal menghapus permanen snapshot kuota", + "purgeCallLogsSuccess": "Menghapus permanen {count} log panggilan", + "purgeCallLogsFailed": "Gagal menghapus permanen log panggilan", + "purgeDetailedLogsSuccess": "Menghapus permanen {count} log terperinci", + "purgeDetailedLogsFailed": "Gagal menghapus permanen log terperinci", + "vacuumCompleted": "VACUUM selesai", + "vacuumFailed": "VACUUM gagal", + "jsonExportFailed": "Ekspor JSON gagal", + "invalidJsonFileType": "Jenis file tidak valid. Hanya file .json yang diizinkan.", + "legacyJsonImportSuccess": "JSON lama berhasil diimpor!", + "jsonImportFailed": "Gagal mengimpor JSON", + "jsonImportError": "Terjadi kesalahan saat mengimpor JSON", + "jsonImportAuthRequired": "Autentikasi diperlukan untuk mengimpor konfigurasi JSON lama. Silakan masuk atau selesaikan penyiapan terlebih dahulu.", + "databaseSettingsAuthRequiredTitle": "Autentikasi diperlukan", + "databaseSettingsAuthRequiredBody": "Pengaturan basis data dan impor JSON hanya tersedia bagi admin yang telah diautentikasi. Masuk atau selesaikan penyiapan untuk melihat dan mengeditnya.", + "databaseSettingsAuthRequiredCta": "Masuk", "storagePurgeData": "Bersihkan Data", - "storagePurgeDataDesc": "Immediately delete all records without applying retention checks. Use with caution.", - "storageRetentionCleanup": "Retention Settings", - "storageRetentionCleanupDesc": "Configure operational record retention and database backup cleanup.", - "retentionCallDays": "Call {count}d", - "retentionAppDays": "App {count}d", - "retentionRows": "{count} rows", + "storagePurgeDataDesc": "Segera hapus semua data tanpa menerapkan pemeriksaan retensi. Gunakan dengan hati-hati.", + "storageRetentionCleanup": "Pengaturan Retensi", + "storageRetentionCleanupDesc": "Konfigurasikan retensi data operasional dan pembersihan cadangan basis data.", + "retentionCallDays": "Panggilan {count} hari", + "retentionAppDays": "Aplikasi {count} hari", + "retentionRows": "{count} baris", "retentionQuotaSnapshots": "Cuplikan Kuota (hari)", - "retentionCompressionAnalytics": "Compression Analytics (days)", + "retentionCompressionAnalytics": "Analitik Kompresi (hari)", "retentionMcpAudit": "Audit MCP (hari)", "retentionA2aEvents": "Acara A2A (hari)", "retentionCallLogs": "Log Panggilan (hari)", "retentionUsageHistory": "Riwayat Penggunaan (hari)", "retentionMemoryEntries": "Entri Memori (hari)", - "retentionXpAuditLog": "XP Audit Log (days)", - "saveRetentionSettings": "Save retention settings", + "retentionXpAuditLog": "Log Audit XP (hari)", + "saveRetentionSettings": "Simpan pengaturan retensi", "storageAutoVacuumMode": "Mode Vakum Otomatis", "storageScheduledVacuum": "Vakum Terjadwal", "storageVacuumHour": "Jam Vakum (0-23)", "storagePageSize": "Ukuran Halaman (byte)", - "storageOptimizationSettings": "Optimization Settings", - "storageJournalModeNone": "None", - "storageJournalModeFull": "Full", - "storageJournalModeIncremental": "Incremental", - "storageVacuumNever": "Never", - "storageVacuumDaily": "Daily", - "storageVacuumWeekly": "Weekly", - "storageVacuumMonthly": "Monthly", - "storageCacheSizeKb": "Cache Size (KB)", - "storageOptimizeOnStartup": "Optimize on Startup", - "storageSaveOptimization": "Save Optimization Settings", - "storageCompressionAggregation": "Compression & Aggregation Settings", - "storageEnableAggregation": "Enable Data Aggregation", - "storageRawDataRetention": "Raw Data Retention (days)", - "storageGranularity": "Granularity", + "storageOptimizationSettings": "Pengaturan Pengoptimalan", + "storageJournalModeNone": "Tidak ada", + "storageJournalModeFull": "Penuh", + "storageJournalModeIncremental": "Inkremental", + "storageVacuumNever": "Tidak Pernah", + "storageVacuumDaily": "Harian", + "storageVacuumWeekly": "Mingguan", + "storageVacuumMonthly": "Bulanan", + "storageCacheSizeKb": "Ukuran Cache (KB)", + "storageOptimizeOnStartup": "Optimalkan saat Startup", + "storageSaveOptimization": "Simpan Pengaturan Optimasi", + "storageCompressionAggregation": "Pengaturan Kompresi & Agregasi", + "storageEnableAggregation": "Aktifkan Agregasi Data", + "storageRawDataRetention": "Retensi Data Mentah (hari)", + "storageGranularity": "Granularitas", "storageHourly": "Per Jam", "storageDaily": "Harian", "storageWeekly": "Mingguan", @@ -7811,7 +7818,7 @@ "redisLauncherContainer": "Kontainer", "redisLauncherRunning": "Berjalan", "redisLauncherReachable": "Dapat Dijangkau", - "redisLauncherError": "Error: {message}", + "redisLauncherError": "Kesalahan: {message}", "redisLauncherHint": "Setara dengan menjalankan `omniroute redis up`. Kontainer ini dinamai `omniroute-redis` dan mendengarkan pada 127.0.0.1:6379.", "compressionSettingsAutoTriggerMode": "Mode pemicu otomatis", "compressionSettingsMcpDescriptionCompression": "Kompresi deskripsi MCP", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "mode: {mode}", "compressionAdaptiveOff": "Anggaran konteks adaptif: nonaktif (pemicu otomatis warisan)", "compressionAdaptiveTarget": "Adaptif ({mode}, kebijakan: {policy}) — target ≈ {target, number} token (untuk jendela {contextLimit, number}-token)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Anggaran konteks adaptif", + "compressionAdaptiveModeOff": "Nonaktif (pemicu otomatis lama)", + "compressionAdaptiveModeFloor": "Batas bawah (selalu menjamin kecukupan)", + "compressionAdaptiveModeReplace": "Gantikan pemicu otomatis", + "compressionAdaptivePolicy": "Kebijakan anggaran", + "compressionAdaptivePolicyReserve": "Cadangkan output", + "compressionAdaptivePolicyPercentage": "Persentase jendela", + "compressionAdaptivePolicyAbsolute": "Anggaran token absolut", "compressionOutputStylesDescription": "Suntikkan instruksi pembentukan respons tanpa menulis ulang output penyedia. Kombinasikan secara bebas.", "mcpAccessibilityDescription": "Membatasi cakupan output alat MCP (penyimpanan terpisah).", "compressionStylesTileSummary": "{tokens, number} token disimpan · {runs, plural, one {# eksekusi digayakan} other {# eksekusi digayakan}}", @@ -7844,7 +7851,7 @@ "minimal": "Minimal", "standard": "Standar", "aggressive": "Agresif", - "lite": "Lite", + "lite": "Ringan", "full": "Penuh", "ultra": "Ultra" }, @@ -7858,7 +7865,7 @@ "description": "Penanda pengambilan beralamat konten." }, "lite": { - "label": "Lite", + "label": "Ringan", "description": "Pembersihan spasi kosong dan format." }, "rtk": { @@ -7866,11 +7873,11 @@ "description": "Penyaringan output perintah." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Output Responses Tool", + "description": "Kompresi konservatif untuk output Responses tool yang didukung." }, "headroom": { - "label": "Headroom", + "label": "Ruang cadangan", "description": "Pemadatan JSON tabular." }, "relevance": { @@ -7878,7 +7885,7 @@ "description": "Penilaian kalimat ekstraktif terhadap kueri pengguna terakhir." }, "caveman": { - "label": "Caveman", + "label": "Manusia Gua", "description": "Kompresi prosa berbasis aturan." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "Tangga YAGNI: perubahan kerja terkecil, tanpa abstraksi yang tidak diminta." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Kuncir Kuda (developer senior pemalas)", + "description": "Disiplin developer senior pemalas: naiki tangga YAGNI, perbaiki akar masalah, gunakan diff terkecil yang berfungsi." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Saya memiliki ADHD (utamakan tindakan)", + "description": "Output yang mengutamakan tindakan: awali dengan tindakan berikutnya, beri nomor pada langkah-langkah, berikan satu langkah konkret berikutnya, tanpa pembukaan." }, "terse-cjk": { "label": "CJK Ringkas (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "Penggantian CLIProxyAPI", "cliproxyapiEnableFallback": "Aktifkan Penggantian CLIProxyAPI", "cliproxyapiUrl": "URL CLIProxyAPI", + "headroomProxyTitle": "Proxy Headroom", + "headroomProxyDesc": "URL proxy penghemat token Headroom opsional. Jika kosong, gunakan HEADROOM_URL atau http://localhost:8787.", + "headroomProxyUrl": "URL Headroom", + "headroomProxyUrlHint": "URL loopback dapat dimulai dari halaman ini. URL eksternal hanya diperiksa.", + "headroomProxySave": "Simpan", + "headroomProxyStart": "Mulai", + "headroomProxyStop": "Hentikan", + "headroomProxyExternalHint": "URL ini bukan loopback, sehingga OmniRoute tidak akan menjalankan CLI lokal.", "cliproxyapiStatus": "Status CLIProxyAPI", "cliproxyapiNotDetected": "Tidak terdeteksi", "cliproxyapiImportAuthTitle": "Impor akun dari CLIProxyAPI", @@ -7938,9 +7953,9 @@ "cliproxyapiImportAuthButton": "Impor akun", "payloadRulesTitle": "Aturan Muatan", "payloadRulesDesc": "Konfigurasikan mutasi payload permintaan berdasarkan model dan protokol. Perubahan disimpan dalam pengaturan dan langsung dimuat ulang (hot reloaded) ke dalam runtime segera setelah disimpan.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "bawaan", "payloadRuleDefaultDesc": "Menerapkan parameter hanya ketika jalur target tidak ada dalam payload keluar.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "timpa", "payloadRuleOverrideDesc": "Memaksa nilai ke dalam payload, menggantikan apa pun yang sudah ada di jalur tersebut.", "payloadRuleFilterTitle": "filter", "payloadRuleFilterDesc": "Menghapus param yang diblokir dari payload sebelum permintaan upstream dikirim.", @@ -7989,14 +8004,14 @@ "codexFastTierDesc": "Menyuntikkan service_tier=priority secara global untuk permintaan OpenAI Codex.", "codexFastTierHint": "Saat diaktifkan, OmniRoute menambahkan service_tier=priority ke permintaan Codex keluar untuk koneksi yang belum menentukan tingkat. Tingkat prioritas memerlukan kunci OpenAI Enterprise API atau jalur Codex autentikasi ChatGPT; jenis kunci lainnya akan menerima kesalahan terkait tingkatan dari OpenAI. Pengaturan per koneksi pada halaman penyedia Codex diutamakan.", "codexFastTierSaveError": "Gagal memperbarui pengaturan Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Ping Otomatis Kuota Codex", + "codexAutoPingDesc": "Aktifkan per koneksi: mengirim permintaan kecil tepat setelah jendela sesi Codex direset agar tidak dalam kondisi dingin saat Anda membutuhkannya.", + "codexAutoPingWarning": "Menggunakan sedikit kuota Codex nyata pada setiap ping. Dinonaktifkan secara bawaan — aktifkan hanya untuk koneksi yang benar-benar Anda andalkan.", + "codexAutoPingSaveError": "Gagal memperbarui pengaturan Ping Otomatis Codex", + "codexAutoPingToggleAria": "Aktifkan/nonaktifkan ping otomatis kuota Codex untuk {connection}", "codexFastTierTierLabel": "Tier layanan", "codexFastTierTierPriority": "Prioritas", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Fleksibel", "codexFastTierTierDefault": "Bawaan", "codexFastTierModelsLabel": "Model tier cepat", "codexFastTierModelsHint": "Hanya model yang dicentang yang menerima service_tier saat Fast Tier diaktifkan.", @@ -8011,7 +8026,7 @@ "cors": { "wildcard": { "title": "CORS terbuka untuk setiap asal (CORS_ALLOW_ALL=true)", - "desc": "Any website can call this server's API from a visitor's browser. Use only on trusted networks — set explicit origins in ALLOWED_ORIGINS and disable CORS_ALLOW_ALL in production." + "desc": "Situs web apa pun dapat memanggil API server ini dari browser pengunjung. Gunakan hanya di jaringan tepercaya — tetapkan origin secara eksplisit di ALLOWED_ORIGINS dan nonaktifkan CORS_ALLOW_ALL dalam produksi." } }, "title": "Inventaris Otorisasi", @@ -8028,7 +8043,7 @@ "bypass": { "section": "Bypass cakupan manajemen", "kill_switch": { - "label": "Bypass kill-switch", + "label": "Lewati kill-switch", "desc": "Tombol utama. Saat mati, tidak ada awalan LOCAL_ONLY yang dapat dijangkau dari non-loopback terlepas dari daftar per-awalan." }, "prefix": { @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Interval pemeriksaan global", "resilienceCredentialHealthEveryMinutes": "Setiap {minutes} mnt", "resilienceCredentialHealthHint": "0 menonaktifkan pemindaian latar belakang (maks. 1440 mnt = 24 jam). Koneksi dengan nilai Pemeriksaan Kesehatan sendiri mengabaikan bawaan global ini; 0 pada suatu koneksi mengeluarkannya meski pemindaian global menyala.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Selalu diaktifkan untuk {provider} — diperlukan demi keamanan akun OAuth; tidak dapat dinonaktifkan.", + "forcedFingerprintBadge": "Wajib", "sessionAffinityTitle": "Afinitas sesi", "sessionAffinityDesc": "Menjaga satu percakapan pada akun yang sama selama sekian detik ini, untuk penyedia mana pun. 0 menonaktifkannya.", "sessionAffinityTtl": "TTL Afinitas (detik)", @@ -8159,10 +8174,10 @@ "denoRelayProjectNameLabel": "Nama Aplikasi Deno", "denoRelayFreeTierNote": "Deno Deploy v2 berjalan di jaringan edge global. Tingkat gratis: 1 juta permintaan & 100GiB lalu lintas keluar per bulan, tanpa batas CPU per permintaan, hingga 20 aplikasi aktif & 50 domain kustom.", "denoRelayDeploying": "Mendeploy...", - "denoRelayDeploy": "Deploy", + "denoRelayDeploy": "Terapkan", "cloudflareRelaySuccess": "Cloudflare Relay berhasil dideploy", - "cloudflareRelayButton": "Deploy Cloudflare Relay", - "cloudflareRelayModalTitle": "Deploy Cloudflare Worker Relay", + "cloudflareRelayButton": "Terapkan Relai Cloudflare", + "cloudflareRelayModalTitle": "Terapkan Relai Worker Cloudflare", "cloudflareRelayWarning": "Mendeploy Cloudflare Worker yang memproksi permintaan LLM melalui jaringan edge Cloudflare — menyamarkan IP host di balik alamat Cloudflare dinamis. Worker menerapkan rahasia autentikasi satu kali sehingga URL workers.dev publik tidak dapat digunakan kembali sebagai relai terbuka.", "cloudflareRelayTokenHowto": "Buat token API di bawah Profil Saya -> Token API -> Buat Token -> Token Kustom -> Account / Workers Scripts / Edit.", "cloudflareRelayAccountIdLabel": "ID Akun Cloudflare", @@ -8172,7 +8187,7 @@ "cloudflareRelayProjectNameLabel": "Nama Worker", "cloudflareRelayFreeTierNote": "Tingkat gratis: 100.000 permintaan/hari per akun Cloudflare.", "cloudflareRelayDeploying": "Mendeploy...", - "cloudflareRelayDeploy": "Deploy", + "cloudflareRelayDeploy": "Terapkan", "cloudflareRelayCredsRequired": "ID Akun dan Token API wajib diisi", "cloudflareRelayDeployFailed": "Deploy gagal", "modelLockout": "Penguncian Model", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "Jumlah maksimum langkah backoff sebelum cooldown berhenti bertambah. Batas Cooldown Maksimum tercapai lebih dulu pada sebagian besar konfigurasi, menjadikannya batas pengaman saat Cooldown Maksimum dinaikkan.", "disableSessionStickiness": "Nonaktifkan session stickiness", "disableSessionStickinessDesc": "Kombo round-robin dan acak berganti ke koneksi yang berbeda pada setiap permintaan alih-alih menyematkan seluruh percakapan ke satu koneksi berdasarkan hash pesan pertama. Biarkan nonaktif untuk mempertahankan hit prompt-cache pada obrolan multi-turn. Penggantian per-kombo lebih diutamakan.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Perutean lokalitas cache prompt", + "promptCacheAffinityDesc": "Utamakan akun penyedia yang sama untuk kunci cache prompt yang cocok sambil mempertahankan failover berdasarkan kesehatan dan kuota.", + "reasoningTokenBuffer": "Buffer token penalaran", + "reasoningTokenBufferDesc": "Izinkan perutean kombinasi menambahkan ruang ekstra max_tokens hanya untuk model penalaran yang dikenal jika seluruh buffer muat dalam batas output yang diketahui.", + "zeroLatencyOptimizations": "Pengoptimalan latensi nol", + "zeroLatencyOptimizationsDesc": "Aktifkan hedging, lompatan TTFT prediktif, dan kompresi fallback proaktif. Biarkan nonaktif untuk mencegah fitur latensi ini memacu target atau mengompresi permintaan fallback.", "credentialRedaction": "Redaksi Kredensial", "credentialRedactionDesc": "Redaksi kunci API, token, dan rahasia dari konteks yang dikirim ke penyedia dan dari respons.", "enableCredentialRedaction": "Aktifkan redaksi kredensial", "enableCredentialRedactionDesc": "Membersihkan kunci API, token, private key, dan JWT dari pesan, panggilan alat, dan respons.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Sinkronisasi Otomatis Dinonaktifkan", + "pricingAutoSyncEnabled": "Sinkronisasi Otomatis Diaktifkan", "modalityBridgeIntro": "Ubah konten multimodal menjadi teks sebelum mencapai model khusus teks. Jembatan visi, audio, dan video tersedia serta dapat dikonfigurasi.", "modalityBridgeVisionTab": "Visi", "modalityBridgeAudioTab": "Audio", @@ -8243,7 +8258,7 @@ "modalityBridgeCacheTtlMinutes": "Cache TTL (menit)", "modalityBridgeCacheMaxEntries": "Jumlah maksimum entri cache", "modalityBridgeStatsBridged": "jembatan", - "modalityBridgeStatsCacheHits": "cache hits", + "modalityBridgeStatsCacheHits": "cache hit", "modalityBridgeStatsFailures": "kegagalan", "modalityBridgeStatsLastUsed": "terakhir digunakan", "modalityBridgeStatsNever": "tidak pernah", @@ -8297,7 +8312,7 @@ "collection": "Koleksi", "errorPage": { "description": "Kami tidak dapat memuat pengaturan saat ini. Silakan coba lagi dalam beberapa detik.", - "errorId": "Error ID: {id}", + "errorId": "ID Kesalahan: {id}", "retry": "Coba Lagi", "title": "Gagal memuat pengaturan" }, @@ -8309,7 +8324,7 @@ "oneproxyCountry": "Negara Oneproxy", "oneproxyDelete": "Oneproxy Hapus", "oneproxyEmpty": "Oneproxy Kosong", - "oneproxyHost": "Oneproxy Host", + "oneproxyHost": "Host Oneproxy", "oneproxyLatency": "Oneproxy Latensi", "oneproxyProtocol": "Protokol Oneproxy", "oneproxyQuality": "Kualitas Oneproxy", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Kesehatan", "cliproxyapiPort": "Port", "qdrantHost": "Host", - "qdrantCollection": "Koleksi", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Koleksi" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", + "title": "Mesin RTK", + "description": "Kompresi berbasis perintah untuk output alat, log terminal, dan hasil build.", + "enabled": "Diaktifkan", + "intensity": "Intensitas", "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "intensityStandard": "Standar", + "intensityAggressive": "Agresif", + "toolResults": "Hasil alat", + "assistantMessages": "Pesan asisten", + "codeBlocks": "Blok kode", "filterCatalog": "Katalog Filter", "filterCatalogDesc": "Filter keluaran tersedia berdasarkan kategori", "guidedConfig": "Konfigurasi", "guidedConfigDesc": "Sesuaikan cara RTK memfilter keluaran terminal Anda", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Maks. baris", + "maxChars": "Maks. karakter", "deduplicateThreshold": "Ambang batas penghapusan duplikat", "customFilters": "Filter khusus", "detectedType": "Tipe terdeteksi", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Kegagalan", "rawOutputAlways": "Selalu", "rawOutputMaxBytes": "Byte maks keluaran mentah", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Pengujian Filter", + "pasteOutput": "Tempel output alat untuk menguji pemfilteran...", "presetHigh": "Agresif", "presetLow": "Ringan", "presetMaxChars": "Karakter keluaran maksimal", "presetMaxLines": "Jalur keluaran maksimal", "presetMedium": "Standar", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Jalankan", + "result": "Hasil", + "previewEmpty": "Jalankan sampel untuk melihat pratinjau output RTK.", + "detected": "Terdeteksi", "masterSwitchOffAlert": "Sakelar utama Token Saver NONAKTIF — pengaturan ini tidak akan memengaruhi permintaan hingga Anda mengaktifkannya dari halaman Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Token yang difilter", + "filtersActive": "Filter aktif", + "requests": "Permintaan", + "avgSavings": "Rata-rata penghematan", "simpleMode": "Sederhana", "advancedMode": "Lanjutan", "searchFilters": "Filter pencarian...", @@ -8481,7 +8488,7 @@ "savings": "Penghematan", "original": "Asli", "compressed": "Terkompresi", - "diff": "Diff", + "diff": "Selisih", "last7Days": "7 hari terakhir", "noDataYet": "Belum ada data", "runs": "Eksekusi", @@ -8499,7 +8506,7 @@ "description": "Pemadatan tabular lossless dari array JSON homogen dengan penanda jumlah baris eksplisit." }, "session-dedup": { - "name": "Session Dedup", + "name": "Deduplikasi Sesi", "description": "Deduplikasi blok lintas-giliran dengan penanda konten yang dapat dipulihkan." }, "ccr": { @@ -8511,7 +8518,7 @@ "description": "Klasifikasi token semantik berbasis ONNX. Hanya mengompresi prosa; blok kode dan konstruksi yang dipertahankan dilindungi. Fails open jika terjadi kesalahan model atau worker." }, "lite": { - "name": "Lite", + "name": "Ringan", "description": "Pengurangan cepat spasi kosong, tool-result, dan URL gambar." }, "aggressive": { @@ -8601,15 +8608,15 @@ "bert-base": "BERT-base (710 MB, akurasi lebih tinggi)" }, "intensity": { - "lite": "Lite", + "lite": "Ringan", "full": "Penuh", "ultra": "Ultra" } }, "modeOptions": { - "default": "Default", + "default": "Bawaan", "off": "Matikan", - "lite": "Lite", + "lite": "Ringan", "standard": "Standar", "aggressive": "Agresif", "ultra": "Ultra", @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", + "title": "Kombinasi Kompresi", + "description": "Tentukan cara mesin digabungkan untuk berbagai skenario perutean.", + "createCombo": "Buat Kombinasi Kompresi", "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "deleteCombo": "Hapus", + "deleteConfirm": "Hapus kombinasi kompresi ini?", + "pipeline": "Alur Pemrosesan", + "addStep": "Tambahkan Langkah", + "removeStep": "Hapus", + "name": "Nama", + "descriptionField": "Deskripsi", + "languagePacks": "Paket Bahasa", + "outputMode": "Mode Output", + "assignToRouting": "Tetapkan ke Kombinasi Perutean", + "noAssignments": "Tidak ada kombinasi perutean yang tersedia", + "default": "Bawaan", + "setAsDefault": "Tetapkan sebagai Default", + "save": "Simpan", + "cancel": "Batal", + "enabled": "Diaktifkan", "loading": "Memuat…", "hubTitle": "Hub Kompresi", "hubDescription": "Pilih profil kompresi mana yang berjalan secara global.", @@ -8661,29 +8668,29 @@ "contextEditingNote": "Saat ini hanya tersedia untuk Claude (Anthropic). Ini adalah mode yang didelegasikan: penyedia menghapus blok penggunaan alat lama di sisi server — kami tidak menulis ulang pesan. Ini tidak memengaruhi penyedia lain.", "namedCombos": "Kombo bernama", "namedCombosDescription": "Simpan pipeline yang berbeda dan tetapkan ke kombo perutean tertentu.", + "activeProfileMasterSwitchOffWarning": "Profil aktif di bawah ini tidak akan berjalan hingga sakelar utama \"Kompresi Prompt\" diaktifkan.", + "activeProfileMasterSwitchOffCta": "Aktifkan di Pengaturan", "comboNamePlaceholder": "Nama kombo", "descriptionPlaceholder": "Deskripsi", "nameRequired": "Masukkan nama kombo sebelum menyimpan.", "pipelineRequired": "Tambahkan setidaknya satu langkah pipeline sebelum menyimpan.", "saveComboFailed": "Gagal menyimpan kombo (HTTP {status}).", "deleteNamedConfirm": "Hapus kombo “{name}”?", - "intensityLite": "Lite", + "intensityLite": "Ringan", "intensityFull": "Penuh", "intensityUltra": "Ultra", "active": "Aktif", "languagePacksList": "Paket bahasa: {packs}", "dragToReorder": "Seret untuk menyusun ulang langkah", "engine": "Mesin", - "intensity": "Intensitas", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensitas" }, "compressionStudio": { "noRun": "Tidak ada proses kompresi yang tersedia.", "liveDataHint": "Data langsung tiba melalui saluran kompresi WebSocket.", "cockpitView": "Tampilan kokpit", "canvas": "Kanvas", - "waterfall": "Waterfall", + "waterfall": "Berjenjang", "replayDone": "Pemutaran ulang selesai", "pauseReplay": "Jeda pemutaran ulang", "playReplay": "Putar pemutaran ulang", @@ -8691,7 +8698,7 @@ "replay": "Putar ulang", "resetReplay": "Atur ulang pemutaran ulang", "stepProgress": "langkah {current}/{total}", - "inlineView": "Inline", + "inlineView": "Sebaris", "splitComingSoon": "Tampilan terpisah (segera hadir)", "inputPlaceholder": "Tempelkan prompt, output alat, atau konteks…", "activeCombined": "Aktif dalam alur gabungan", @@ -8705,7 +8712,7 @@ "run": "Jalankan", "laneRejected": "ditolak: {reason}", "error": "kesalahan", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Pratinjau pipeline gabungan gagal: {reason}", "combinedFlow": "Alur gabungan", "eachLayer": "Setiap lapisan secara terpisah", "diff": "Perbedaan", @@ -8734,7 +8741,7 @@ "compareTab": "Bandingkan", "encoderComparison": "Encoder A/B — {count} array", "encoderWinner": "pemenang: {winner}", - "encoder": "encoder", + "encoder": "enkoder", "bytes": "byte", "tokensCl100k": "token (cl100k)" }, @@ -8763,7 +8770,7 @@ "why": "Hanya Fable 5 yang membaca halaman padat dengan akurasi 100% (terukur, n=30). GPT-5.5 dan Gemini 2.5 Flash diblokir." }, "transport": { - "label": "Transport", + "label": "Transportasi", "pass": "Anthropic langsung", "why": "Agregator melakukan resample gambar dan merusak keterbacaan — hanya rute langsung yang otoritatif." }, @@ -8780,27 +8787,27 @@ }, "enableTitle": "Aktifkan mesin", "enableDescription": "Berjalan terakhir dalam tumpukan (setelah RTK/Caveman membersihkan teks, OmniGlyph mengonversi sisanya menjadi gambar) dan juga berjalan mandiri melalui mode omniglyph. Ini adalah pratinjau dan tetap dinonaktifkan secara default hingga validasi menyeluruh selesai.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Profil kompresi", + "profileDescription": "Profil adalah batas atas, bukan batas bawah: profil yang lebih ketat tidak dapat dilonggarkan kembali oleh penggantian per langkah. Berdasarkan pengukuran pada basis kode ini: dengan mode aman untuk coding atau seimbang, sesi yang belum mengumpulkan riwayat tidak mengompresi apa pun karena keduanya menaikkan ambang batas minimum karakter serta mempertahankan prompt sistem, skema alat, dan hasil alat dalam bentuk aslinya.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agresif (default)", + "description": "Kebijakan yang diukur oleh tanda terima yang dipublikasikan. Mengubah prompt sistem, dokumentasi alat, dan riwayat padat menjadi citra." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Seimbang", + "description": "Mempertahankan status aktif dalam bentuk asli dan melindungi 8 giliran terakhir; hanya meringkas riwayat lama yang sudah ditutup." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Aman untuk coding", + "description": "Mempertahankan otoritas, skema alat, dan output alat aktif dalam bentuk asli, serta melindungi 12 giliran terakhir. Tidak mengompresi apa pun hingga sesi mengumpulkan riwayat." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Teruskan tanpa perubahan", + "description": "Merutekan tanpa transformasi. Mesin dilewati dan permintaan diteruskan tanpa perubahan." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Pilih profil kompresi OmniGlyph", "saved": "Disimpan.", "saveFailed": "Tidak dapat menyimpan.", "enableAria": "Aktifkan mesin OmniGlyph", @@ -8813,7 +8820,7 @@ "stateStopped": "Dihentikan", "stateStarting": "Memulai", "stateStopping": "Menghentikan", - "stateError": "Error", + "stateError": "Kesalahan", "stateNotInstalled": "Tidak terinstal", "stateUnknown": "Tidak diketahui", "port": "port {port}", @@ -8901,38 +8908,38 @@ "save": "Simpan" }, "contextCaveman": { - "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "title": "Mesin Caveman", + "description": "Kompresi pesan berbasis aturan, paket bahasa, analitik, dan kontrol mode keluaran.", "advancedConfig": "Konfigurasi Lanjutan", "advancedConfigDesc": "Sempurnakan perilaku kompresi", "aggressiveSettings": "Pengaturan Agresif", "aggressiveSettingsDesc": "Kompresi maksimum dengan potensi pengorbanan kualitas", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Permintaan", + "tokensSaved": "Token yang dihemat", + "savingsPercent": "Penghematan %", + "avgLatency": "Latensi rata-rata", + "languagePacks": "Paket Bahasa", + "languagePacksDesc": "Aktifkan aturan kompresi untuk bahasa tertentu.", "labelAutoTrigger": "Kompres otomatis ketika konteks melebihi", "labelCompressionRate": "Kekuatan kompresi", "labelMaxTokens": "Targetkan token per pesan", "labelMinLength": "Panjang pesan minimum", "labelMinSavings": "Token minimum untuk disimpan", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Diaktifkan", + "autoDetect": "Deteksi bahasa secara otomatis", + "rulesCount": "{count} aturan", "inputCompressionTitle": "Kompresi input", "inputCompressionDesc": "Tulis ulang riwayat obrolan dengan kata-kata yang lebih singkat. Mengurangi token input sekitar ~50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Analitik Kompresi", + "noAnalytics": "Belum ada analitik kompresi.", "masterDisabledWarning": "Sakelar utama Penghemat Token dalam keadaan MATI — pengaturan ini tidak akan memengaruhi permintaan sampai Anda mengaktifkannya dari Pengaturan Kompresi atau mengubahnya di sini.", "outputMode": "Modus Keluaran", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Mode Keluaran", "quickSettings": "Pengaturan Cepat", "quickSettingsDesc": "Pengaturan kompresi dasar untuk memulai", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Pelewatan Kejelasan Otomatis", + "bypassConditions": "Kondisi pelewatan", "bypassConditionsList": "keamanan, tidak dapat diubah, klarifikasi, peka terhadap perintah", "simpleMode": "Sederhana", "advancedMode": "Lanjutan", @@ -8944,9 +8951,9 @@ "ultraSettings": "Pengaturan Ultra", "ultraSettingsDesc": "Kompresi semantik bertenaga SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Berikan respons ringkas. Pertahankan istilah teknis, kode, kesalahan, URL, dan pengidentifikasi.", + "full": "Berikan respons singkat dan padat. Pertahankan seluruh substansi teknis.", + "ultra": "Berikan respons sangat singkat dengan singkatan teknis umum. Pertahankan simbol secara persis." } }, "translator": { @@ -9203,7 +9210,7 @@ "simpleModePreview": "Pratinjau terjemahan saja", "simpleModeSend": "Kirim dan lihat respons", "simpleAdvancedToggle": "Tingkat Lanjut", - "simpleInputPanelTitle": "Input", + "simpleInputPanelTitle": "Masukan", "simpleInputPanelHint": "Pesan teks bebas atau contoh siap pakai", "simpleResultPanelTitle": "Terjemahan + Respons", "narratedDetected": "✓ Terdeteksi: {format}", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Tempel permintaan JSON; formatnya akan dideteksi secara otomatis.", "advancedPipelineTitle": "Pipeline perantara OpenAI", "advancedPipelineSubtitle": "Visualisasikan setiap langkah terjemahan (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Transformator Stream (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Mengonversi Chat Completions SSE menjadi Responses API.", "advancedTestBenchTitle": "Test Bench (8 skenario)", "advancedTestBenchSubtitle": "Menjalankan semua skenario dan melaporkan lulus/gagal + % kompatibilitas.", @@ -9232,7 +9239,7 @@ "pipelineStepClientRequestDesc": "Permintaan diterima dalam format klien", "pipelineStepFormatDetected": "Format Terdeteksi", "pipelineStepFormatDetectedDesc": "Format sumber terdeteksi otomatis", - "pipelineStepOpenAIIntermediate": "OpenAI Intermediate", + "pipelineStepOpenAIIntermediate": "Perantara OpenAI", "pipelineStepOpenAIIntermediateDesc": "Diterjemahkan ke format hub OpenAI", "pipelineStepProviderFormat": "Format Penyedia", "pipelineStepProviderFormatDesc": "Diterjemahkan ke format target penyedia", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Tersisa", "kiloPassRenews": "Diperbarui dalam {count} hari", "kiloPassUsageLabel": "Penggunaan bulan ini", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Kredit Penggunaan Tambahan", + "kimiExtraUsage": "Penggunaan Tambahan", + "kimiExtraUsageEnabled": "Diaktifkan", + "kimiExtraUsageDisabled": "Dinonaktifkan", + "kimiExtraUsageFrozen": "Dibekukan", + "kimiExtraUsageUnavailable": "Tidak tersedia", + "kimiMonthlyUsed": "Digunakan bulan ini", + "kimiMonthlyLimit": "Batas bulanan", + "kimiMonthlyLimitUnlimited": "Tidak terbatas", + "kimiAdditionalCredits": "Kredit Tambahan", "loggerTab": "penebang", "proxyTab": "Proksi", "budgetManagement": "Manajemen Anggaran", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Pemutus Sirkuit", "lockedIPs": "IP terkunci", "lockoutsAutoRefreshHint": "Kunci batas kecepatan per model • Refresh otomatis 10 detik", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# terkunci} other {# terkunci}}", "timeLeft": "{time} tersisa", "howItWorks": "Cara Kerjanya", "howItWorksSubtitle": "Pelajari bagaimana evaluasi memvalidasi respons LLM Anda", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "Tanggapan dibandingkan dengan kriteria yang diharapkan. Lihat lulus/gagal untuk setiap kasus dengan metrik latensi dan masukan terperinci.", "evalsStrategyContainsLabel": "Berisi", "evalsStrategyExactLabel": "Pencocokan Persis", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Ekspresi Reguler", "evalsStrategyCustomLabel": "Logika Kustom", "evalsStrategyContainsDescription": "Memeriksa apakah output LLM berisi substring yang diharapkan.", "evalsStrategyExactDescription": "Memeriksa apakah output LLM sama persis dengan nilai yang diharapkan.", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Model Sedang Diuji", "searchSuitesPlaceholder": "Ruang pencarian...", "passSuffix": "lulus", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# kasus} other {# kasus}}", "runEval": "Jalankan Eval", "runAllSuites": "Jalankan Semua", "runAllRunning": "Menjalankan semua...", "runAllProgress": "Menjalankan {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# rangkaian gagal} other {# rangkaian gagal}}", "runAllCompleted": "Jalankan {suites} suite — {passed} lulus, {failed} gagal", "runAllCompletedWithFailures": "Menjalankan {completed} suite; {failedSuites} gagal diselesaikan", "runningProgress": "Menjalankan {current}/{total}...", @@ -9423,7 +9430,7 @@ "providerLimits": "Batasan Penyedia", "noProviders": "Tidak Ada Penyedia yang Terhubung", "connectProvidersForQuota": "Hubungkan ke penyedia dengan OAuth untuk melacak batas dan penggunaan kuota API Anda.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# akun} other {# akun}}", "filteredFromCount": "(difilter dari {count})", "autoRefresh": "Segarkan otomatis", "refreshAll": "Segarkan Semua", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Gagal memperbarui visibilitas kuota", "account": "Akun", "modelQuotas": "Kuota Model", - "lastUsed": "Last Refreshed", + "lastUsed": "Terakhir Diperbarui", "actions": "Tindakan", "refreshQuota": "Segarkan kuota", "today": "Hari ini", @@ -9452,9 +9459,9 @@ "cardExpand": "Perluas", "cardCollapse": "Ciutkan", "moreQuotas": "+{count} lagi", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Tidak dikelompokkan", + "viewFlat": "Datar", + "viewByEnvironment": "Berdasarkan Lingkungan", "noQuotaDataAvailable": "Tidak ada data kuota yang tersedia", "noAccountsForTierFilter": "Tidak ditemukan akun untuk filter tingkat", "tierAll": "Semua", @@ -9465,14 +9472,14 @@ "tierPro": "Pro", "tierPlus": "Ditambah lagi", "tierFree": "Gratis", - "tierLite": "Lite", + "tierLite": "Ringan", "tierUnknown": "Tidak diketahui", "statTotal": "Total", "statCritical": "Kritis", "statAlert": "Peringatan", "statHealthy": "Sehat", "filterPurchaseTypeLabel": "Tipe", - "filterTierLabel": "Tier", + "filterTierLabel": "Tingkat", "purchaseAll": "Semua", "purchaseOauthSub": "Langganan", "purchaseOauthFree": "OAuth Gratis", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Tukarkan kredit", "resetCreditRedeemed": "Reset ditukarkan", "resetCreditRedeemFailed": "Gagal menukarkan kredit reset", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Gagal menyimpan rangkaian", "clone": "Klon", "exportSuite": "Ekspor", "importSuite": "Impor", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "JSON rangkaian evaluasi tidak valid", "suiteBuilderCloneSuffix": "salin", "suiteBuilderImportedSuite": "Suite yang Diimpor", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", + "scorecardTitle": "Kartu Skor", + "evalApiKey": "Kunci API", + "scorecardPassRate": "Tingkat Kelulusan", "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "actualOutputLabel": "Keluaran Aktual", + "evalTargetHint": "Pilih model atau kombinasi untuk dievaluasi.", + "suiteBuilderDeleted": "Rangkaian berhasil dihapus", + "suiteBuilderCaseCardHint": "Tentukan prompt masukan dan kriteria keluaran yang diharapkan.", + "nextResetUtc": "Pengaturan ulang berikutnya (UTC)", + "scorecardHint": "Tingkat kelulusan gabungan dari semua rangkaian evaluasi.", + "suiteLatestRunsHint": "Proses evaluasi terbaru untuk rangkaian ini.", + "saving": "Menyimpan", + "suiteBuilderCaseModelLabel": "Model (opsional)", + "evalControlsTitle": "Kontrol Evaluasi", + "suiteBuilderEditTitle": "Edit Rangkaian Evaluasi", + "suiteBuilderCaseStrategyLabel": "Strategi Validasi", + "notifySelectDifferentCompareTarget": "Pilih target lain untuk perbandingan", + "recentRunsHint": "Menampilkan proses evaluasi terbaru. Klik proses untuk melihat hasil terperinci.", + "evalCompareHint": "Bandingkan hasil dengan target kedua jika diinginkan.", + "suiteBuilderCaseInvalid": "Kasus ini memiliki kesalahan validasi. Harap perbaiki sebelum menyimpan.", + "historyEmpty": "Belum ada riwayat evaluasi", + "suiteBuilderUpdated": "Suite berhasil diperbarui", + "resetInterval": "Atur Ulang Interval", + "suiteBuilderCreateTitle": "Buat Suite Evaluasi", + "activePeriodSpend": "Pengeluaran Periode Aktif", + "evalApiKeyHint": "Pilih kunci API yang akan digunakan untuk permintaan evaluasi.", + "evalCompareOptional": "Bandingkan (opsional)", + "suiteBuilderDeleteFailed": "Gagal menghapus suite", + "suiteBuilderCaseSystemPromptPlaceholder": "Instruksi sistem opsional...", + "scorecardCases": "Kasus", + "runCompletedWithScore": "Evaluasi selesai — tingkat kelulusan {score}%", + "suiteBuilderCustomBadge": "Kustom", + "targetSuiteDefaults": "Default suite", + "suiteBuilderDeleteConfirm": "Apakah Anda yakin ingin menghapus suite ini? Tindakan ini tidak dapat dibatalkan.", + "suiteBuilderNameLabel": "Nama Suite", + "scorecardSuites": "Suite", + "evalCompareTarget": "Target Perbandingan", + "suiteBuilderCaseModelPlaceholder": "mis. gpt-4o-mini", + "evalControlsHint": "Konfigurasikan target evaluasi dan kunci API Anda, lalu jalankan suite untuk memvalidasi kualitas model.", + "recentRunsTitle": "Proses Terbaru", + "suiteBuilderCaseSystemPromptLabel": "Prompt Sistem", + "suiteBuilderCaseExpectedPlaceholder": "mis. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "misalnya def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Tempelkan respons yang diharapkan secara tepat", "suiteBuilderCaseExpectedPlaceholderRegex": "misalnya ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Gunakan ekspresi reguler JavaScript tanpa menambahkan garis miring.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", + "suiteBuilderNamePlaceholder": "mis. Suite Kualitas Pengodean", + "suiteBuilderAddCase": "Tambahkan Kasus", + "cancel": "Batal", "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderCaseNameLabel": "Nama Kasus", + "weeklyLimitUsd": "Batas Mingguan (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "mis. Tulis fungsi fibonacci dalam Python", + "suiteBuilderNameRequired": "Nama suite wajib diisi", + "suiteBuilderCaseUserPromptLabel": "Prompt Pengguna", + "daily": "Harian", + "resultErrorLabel": "Kesalahan", + "suiteBuilderBuiltInBadge": "Bawaan", + "suiteBuilderCaseCardTitle": "Kasus Uji", "suiteBuilderDuplicateCase": "Duplikat", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", + "weeklyLimitPlaceholder": "mis. 50.00", + "suiteBuilderCaseTagsHint": "Tag yang dipisahkan dengan koma untuk mengatur kasus uji.", + "notifyEvalRunFailedWithReason": "Evaluasi gagal: {reason}", + "weekly": "Mingguan", + "runEvalRunning": "Menjalankan evaluasi...", + "delete": "Hapus", + "resetTimeUtc": "Waktu Reset (UTC)", + "evalApiKeyAuto": "Otomatis (gunakan default)", + "suiteBuilderDescriptionPlaceholder": "Deskripsi opsional tentang apa yang diuji oleh rangkaian ini...", + "targetComparisonTitle": "Perbandingan Target", + "save": "Simpan", + "suiteBuilderCreated": "Rangkaian berhasil dibuat", + "suiteLatestRuns": "Proses Terbaru", + "suiteBuilderCaseExpectedLabel": "Nilai yang Diharapkan", + "historyLatency": "Latensi", + "suiteBuilderCaseTagsPlaceholder": "mis. coding, python", + "targetTypeCombo": "Kombinasi", + "scorecardPassed": "Lulus", + "suiteBuilderCaseTagsLabel": "Tag", + "suiteBuilderNewSuite": "Rangkaian Baru", + "notifyEvalLoadFailed": "Gagal memuat data evaluasi", + "notConfigured": "Belum Dikonfigurasi", + "suiteBuilderCaseNamePlaceholder": "mis. pengujian Fibonacci Python", "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "suiteBuilderCreateAction": "Buat Rangkaian", + "suiteBuilderCasesHint": "Setiap kasus mengirimkan prompt dan memvalidasi respons.", + "suiteBuilderUpdatedAt": "Diperbarui", + "errorBadge": "Kesalahan", + "suiteBuilderCasesTitle": "Kasus Uji", + "edit": "Sunting", + "monthly": "Bulanan", + "suiteBuilderCasesRequired": "Setidaknya satu kasus uji diperlukan", + "weeklyLimitSummary": "Ringkasan batas anggaran mingguan", + "suiteBuilderDescriptionLabel": "Deskripsi", + "targetComparisonHint": "Perbandingan hasil evaluasi antartarget secara berdampingan.", + "compareCompletedWithScore": "Perbandingan selesai — tingkat kelulusan {score}%", + "staleQuotaTooltip": "Penyegaran terakhir gagal — menampilkan data cache", "quotaThresholdLabel": "menit ke kiri", "quotaCutoffsColumnHelp": "Hentikan permintaan ketika sisa kuota mencapai persentase ini atau lebih rendah.", "quotaCutoffsButtonDefault": "Bawaan", @@ -9863,19 +9870,19 @@ "backToLogin": "Kembali ke Masuk", "forgotPassword": "Lupa kata sandi?", "continueWithOidc": "Lanjutkan dengan OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Kata sandi default: CHANGEME (kecuali INITIAL_PASSWORD telah ditetapkan)", "Authorization": "Otorisasi", "Content-Disposition": "Disposisi Konten", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "Menunggu otorisasi...", + "waitingForGoogleAuthorization": "Menunggu otorisasi Google...", + "waitingForOpenAIAuthorization": "Menunggu otorisasi OpenAI...", + "waitingForAntigravityAuthorization": "Menunggu otorisasi Antigravity...", + "waitingForQoderAuthorization": "Menunggu otorisasi Qoder...", + "exchangingCodeForTokens": "Menukar kode dengan token...", + "nodeIncompatibleTitle": "Versi Node.js Tidak Kompatibel", + "nodeIncompatibleDesc": "Anda menjalankan Node.js {version}, yang berada di luar kebijakan runtime aman yang didukung OmniRoute. Gunakan rilis Node.js 20.x atau 22.x LTS yang telah ditambal.", + "nodeIncompatibleFixLabel": "Perbaikan: instal rilis Node.js 22 LTS yang telah ditambal", + "nodeIncompatibleHint": "OmniRoute memerlukan Node.js 22.22.2+ (22.x LTS) atau 24.0.0+ (24.x LTS). Node 24 LTS direkomendasikan.", "resetViaAppDataTitle": "Reset melalui Data Aplikasi", "resetViaAppDataDescription": "Hapus file pengaturan dari direktori data aplikasi untuk mengatur ulang kata sandi Anda:", "quitDesktopApp": "Tutup aplikasi desktop OmniRoute sepenuhnya", @@ -10031,7 +10038,7 @@ "supportedProvidersToc": "Penyedia", "commonUseCases": "Kasus Penggunaan Umum", "clientCompatibility": "Kompatibilitas Klien", - "protocolsToc": "Protocols", + "protocolsToc": "Protokol", "apiReference": "Referensi API", "managementApiReference": "Referensi API Manajemen", "managementApiDescription": "Endpoint automasi untuk registry proxy, assignment scope, dan migrasi proxy lama.", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Instal OmniRoute sebagai Aplikasi Web Progresif di browser Android, iOS, dan desktop.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Jalankan OmniRoute tanpa antarmuka di Android melalui Termux. Akses dasbor dari peramban seluler Anda.", "featureRoutingTitle": "Perutean Multi-Penyedia", "featureRoutingText": "Rutekan permintaan ke 30+ penyedia AI melalui satu titik akhir yang kompatibel dengan OpenAI. Mendukung API obrolan, respons, audio, dan gambar.", "featureCombosTitle": "Kombo dan Penyeimbangan", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "Gunakan OmniRoute sebagai URL dasar yang stabil sambil merotasi akun atau kombo penyedia di bawahnya.", "clientKimiBullet2": "Lebih memilih model awalan dalam alur pengkodean sehingga fallback dan jejak audit tetap eksplisit.", "clientKimiBullet3": "Gunakan `/v1/responses` bila Anda menginginkan perutean gaya Respons asli untuk klien yang menggunakan alat.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "Protokol: MCP & A2A", + "protocolsDescription": "OmniRoute menyediakan dua protokol operasional selain API yang kompatibel dengan OpenAI: MCP untuk eksekusi alat dan A2A untuk alur kerja antaragen.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Gunakan MCP melalui stdio agar klien dapat menemukan dan memanggil alat OmniRoute dengan visibilitas audit.", + "protocolMcpStep1": "Mulai transpor MCP dengan `omniroute --mcp`.", + "protocolMcpStep2": "Arahkan klien MCP Anda ke transpor stdio.", + "protocolMcpStep3": "Panggil `omniroute_get_health` dan `omniroute_list_combos` untuk memvalidasi konektivitas.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "Gunakan A2A JSON-RPC untuk mengirimkan tugas secara sinkron atau melalui streaming SSE.", + "protocolA2aStep1": "Baca `/.well-known/agent.json` untuk penemuan agen.", + "protocolA2aStep2": "Kirim permintaan `message/send` atau `message/stream` ke `POST /a2a`.", + "protocolA2aStep3": "Kelola siklus hidup tugas dengan `tasks/get` dan `tasks/cancel`.", + "protocolTroubleshootingTitle": "Pemecahan Masalah Protokol", + "protocolTroubleshooting1": "Jika status MCP luring, pastikan proses stdio sedang berjalan dan file heartbeat terus diperbarui.", + "protocolTroubleshooting2": "Jika tugas A2A tetap dalam status `working`, periksa `/api/a2a/tasks/:id` dan peristiwa streaming untuk mengetahui status terminal.", + "protocolTroubleshooting3": "Gunakan `/dashboard/mcp` dan `/dashboard/a2a` untuk kontrol operasional dan visibilitas audit.", "endpointChatNote": "Titik akhir obrolan yang kompatibel dengan OpenAI (default).", "endpointResponsesNote": "Titik akhir API respons (Codex, o-series).", "endpointModelsNote": "Katalog model untuk semua penyedia yang terhubung.", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute adalah perangkat lunak sumber terbuka. Anda bebas memeriksa, memodifikasi, dan mendistribusikannya berdasarkan ketentuan lisensinya." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "Agen CLI", + "description": "Temukan agen CLI yang terinstal di sistem Anda. Tambahkan agen khusus untuk deteksi otomatis.", + "refresh": "Segarkan", + "installed": "Terinstal", + "notFound": "Tidak Ditemukan", + "builtIn": "Bawaan", + "custom": "Khusus", + "remove": "Hapus", + "addCustomAgent": "Tambahkan Agen Khusus", + "addCustomAgentDesc": "Daftarkan alat CLI apa pun untuk dideteksi. Alat tersebut akan dipindai secara otomatis saat dimuat ulang.", + "agentName": "Nama Agen", + "binaryName": "Nama Biner", + "versionCommand": "Perintah Versi", + "spawnArgs": "Argumen Spawn", + "addAgent": "Tambahkan Agen", + "scanning": "Memindai sistem untuk mencari agen CLI...", + "opencodeIntegration": "Integrasi OpenCode", + "opencodeDetected": "opencode {version} terdeteksi", + "opencodeDesc": "Buat {configFile} siap pakai dengan URL dasar OmniRoute Anda dan semua model yang tersedia — letakkan di root proyek Anda dan jalankan {command}.", + "downloadConfig": "Unduh {file}", + "downloaded": "Berhasil diunduh!", + "setupGuideTitle": "Panduan penyiapan", + "openCliTools": "Buka Alat CLI", + "setupGuideDetectCliTitle": "Deteksi CLI yang terinstal", + "setupGuideDetectCliDesc": "Klik Muat Ulang setelah menginstal atau memperbarui CLI agar OmniRoute dapat memindai ulang biner dan versinya.", + "setupGuideCustomAgentTitle": "Daftarkan biner kustom", + "setupGuideCustomAgentDesc": "Gunakan Tambahkan Agen Kustom jika CLI Anda tidak ada dalam daftar bawaan. Masukkan nama biner dan perintah versi.", + "setupGuideCommandMissingTitle": "Perbaiki 'perintah tidak ditemukan'", + "setupGuideCommandMissingDesc": "Pastikan perintah CLI tersedia di PATH, buka sesi terminal baru, lalu jalankan kembali Muat Ulang.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10486,17 +10493,17 @@ "command": "Perintah", "code_change": "Perubahan kode", "message": "Pesan", - "error": "Error", + "error": "Kesalahan", "completion": "Penyelesaian" } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "Obrolan Sederhana", + "streaming": "Pengaliran", + "system-prompt": "Prompt Sistem", + "thinking": "Penalaran", + "tool-calling": "Pemanggilan Alat", + "multi-turn": "Multi-giliran", "vision": "Visi", "schema-coercion": "Pemaksaan Skema" }, @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Pengelolaan Cache", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Muat Ulang", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Entri Memori", + "memoryEntriesSub": "LRU dalam memori", + "dbEntries": "Entri DB", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", + "cacheHits": "Cache Hit", + "cacheHitsSub": "dari total {total}", + "tokensSaved": "Token yang Dihemat", + "tokensSavedSub": "Estimasi dari hit", + "hitRate": "Rasio Hit", + "performance": "Performa Cache", + "autoRefresh": "Dimuat ulang otomatis setiap {seconds} dtk", + "hits": "Hit", + "misses": "Miss", "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "behavior": "Perilaku Cache", + "behaviorDeterministic": "Hanya permintaan non-streaming dengan temperature=0 yang disimpan dalam cache.", + "behaviorBypass": "Lewati dengan header {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "TTL default: 30 menit. Konfigurasikan melalui {envVar}.", + "idempotency": "Lapisan Idempotensi", + "activeDedupKeys": "Kunci Deduplikasi Aktif", + "dedupWindow": "Jendela Deduplikasi", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Gagal menghapus cache.", + "unavailable": "Cache tidak tersedia", + "unavailableDesc": "Tidak dapat mengambil statistik cache. Pastikan server sedang berjalan.", "loadingCacheAria": "Memuat cache", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Cache Prompt (Sisi Penyedia)", + "semanticCache": "Cache Semantik", + "promptCacheSectionDesc": "Menampilkan aktivitas cache prompt sisi penyedia dari riwayat penggunaan sehingga Anda dapat melihat di mana kontrol cache aktif dan seberapa banyak input digunakan kembali.", + "promptTrendDesc": "Volume permintaan per jam, cakupan cache, dan volume pembacaan cache selama 24 jam terakhir.", + "cachedRequests": "Permintaan yang Di-cache", + "cachedRequests24h": "Permintaan yang Di-cache (24 jam)", + "cacheHitRate": "Tingkat Hit Cache", + "cacheRate": "Tingkat Cache", + "cacheRateDesc": "dari total permintaan", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Metrik Cache Prompt", + "withCacheControl": "Dengan Kontrol Cache", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Rasio Penggunaan Kembali Cache", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Est. Biaya yang Dihemat", + "lastUpdated": "Terakhir diperbarui", + "hoursTracked": "jam yang dilacak", + "busiestHour": "Jam Tersibuk", + "peakCacheRate": "Tingkat Cache Puncak", + "trendHour": "Jam", + "activityVolume": "Aktivitas", + "requestsShort": "permintaan", + "inputShort": "Masuk", + "cachedShort": "Di-cache", + "writeShort": "Tulis", + "resetting": "Mengatur ulang...", + "resetMetrics": "Atur Ulang Metrik", + "byProvider": "Rincian berdasarkan Penyedia", + "providerCacheRateDesc": "Setiap penyedia menampilkan total token input, token pembacaan cache, dan token penulisan cache sehingga Anda dapat memverifikasi rasio penggunaan kembali terhadap total mentah.", "provider": "Provider", - "requests": "Requests", + "requests": "Permintaan", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Tren Cache (24 jam)", + "peakCached": "Cache tertinggi", + "cached": "Di-cache", + "overview": "Ringkasan", "tableProvider": "Penyedia", "tableModel": "Model", "performanceTitle": "Performa", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "Cache respons deterministik milik OmniRoute. Saat diaktifkan, permintaan berulang non-streaming dengan temperature=0 dapat dilayani secara lokal tanpa mengakses penyedia upstream.", + "semanticCacheDisabledDesc": "Cache semantik dinonaktifkan. OmniRoute akan melewati penggunaan ulang respons lokal hingga Anda mengaktifkannya kembali di Pengaturan.", + "semanticEntriesDesc": "Catatan cache semantik persisten yang saat ini disimpan di SQLite. Aktivitas cache prompt di sisi penyedia tidak tercantum di sini.", + "searchEntries": "Cari entri...", + "search": "Cari", + "loading": "Memuat...", + "entriesLoadError": "Gagal memuat entri cache semantik.", + "noEntries": "Tidak ada entri cache yang ditemukan", + "noPromptCacheData": "Belum ada aktivitas cache prompt di sisi penyedia yang tercatat.", + "noTrendData": "Tidak ada aktivitas cache prompt yang tercatat selama 24 jam terakhir.", + "signature": "Tanda tangan", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Dibuat", + "expires": "Kedaluwarsa", + "actions": "Tindakan", + "deduplicatedRequests": "Permintaan yang Diduplikasi", + "savedCalls": "Panggilan API yang Dihemat", + "totalProcessed": "Total Permintaan yang Diproses", + "disabled": "Dinonaktifkan", + "totalRequests": "Total Permintaan", "reasoningCache": "Pemutaran Ulang Penalaran", "reasoningCacheDesc": "Mempertahankan pemikiran model untuk alur pemanggilan alat multi-putaran", "reasoningEntries": "Entri Aktif", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes}m yang lalu", "hoursAgo": "{hours}j yang lalu", "daysAgo": "{days}h yang lalu", - "entries": "Entries" + "entries": "Entri" }, "proxyConfigModal": { "levelGlobal": "Global", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "Tempelkan kunci API Devin yang ada dari sesi Devin yang terautentikasi. Ketersediaan ekspor kunci dan langkah-langkahnya bervariasi tergantung versi Devin dan akun.", "devinPasteDescription": "Berikan WINDSURF_API_KEY Anda (diperoleh melalui `devin auth login`, atau melalui perintah IDE Windsurf \"Windsurf: Provide Auth Token\").", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Kunci API / Token", "saving": "Menyimpan…", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Hubungkan IDE Kursor", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Masuk dengan Cursor", + "tabImport": "Impor token", + "loginDescription": "Membuka halaman masuk Cursor di browser. Berfungsi di Docker — setujui di browser host Anda, lalu kembali ke sini.", + "loginWithCursor": "Masuk dengan Cursor", + "startingLogin": "Memulai…", + "waitingApproval": "Menunggu persetujuan masuk Cursor…", + "openUrlHint": "Jika browser tidak terbuka:", + "openLoginLink": "Buka halaman masuk", + "cancelLogin": "Batalkan login", "autoDetecting": "Token yang terdeteksi secara otomatis...", "readingFromCursor": "Membaca dari IDE Kursor atau agen kursor", "tokensAutoDetected": "Token berhasil terdeteksi secara otomatis dari Cursor IDE!", "cursorNotDetected": "IDE kursor tidak terdeteksi. Harap tempelkan token Anda secara manual.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Berjalan di Docker? Sebaiknya Masuk dengan Cursor. Impor otomatis IDE dan cursor-agent biasanya tidak tersedia di dalam container. Lihat docs/providers/CURSOR-DOCKER.md.", "accessToken": "Akses Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Token Penyegaran", + "refreshTokenPlaceholder": "Opsional — memungkinkan penyegaran token otomatis", "required": "*", "accessTokenPlaceholder": "Token akses akan terisi secara otomatis...", "machineId": "ID Mesin", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Token deteksi otomatis gagal", "errorEnterToken": "Silakan masukkan token akses", "errorImportFailed": "Impor gagal", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Gagal memulai login Cursor", + "errorLoginPoll": "Login Cursor gagal", + "errorLoginTimeout": "Waktu login Cursor habis — coba lagi" }, "pricingModal": { "title": "Konfigurasi Harga", @@ -10843,9 +10850,9 @@ "selectProxy": "Pilih {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Impor Versi Lama", + "bulkAssign": "Tetapkan Massal", + "addProxy": "Tambahkan Proksi", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Uji", + "edit": "Ubah", + "delete": "Hapus", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Gagal", "successRate": "{rate}% sukses", "avgLatency": "Rata-rata {latency}ms", "assignmentsCount": "{count} tugas", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency}md", "testFailure": "✗ {error}", "repair": "Perbaiki", "relayAuthMissing": "autentikasi hilang", @@ -10942,7 +10949,7 @@ "batchSelectedCount": "{count} dipilih", "batchDeleteSelected": "Hapus {count} yang dipilih", "batchActivateSelected": "Aktifkan {count} yang dipilih", - "testPassed": "✓ OK", + "testPassed": "✓ Oke", "close": "Tutup", "managePool": "Kelola Pool", "poolTitle": "Pool & Rotasi Proksi", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Strategi rotasi", "poolStrategyHint": "round-robin menggilir anggota secara berurutan; random memilih secara seragam; sticky mempertahankan satu anggota selama periode tertentu; latency-optimized memilih yang tercepat berdasarkan log.", "poolStrategyFailed": "Gagal memperbarui strategi rotasi", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Bergiliran", "strategyRandom": "Acak", - "strategySticky": "Sticky", + "strategySticky": "Tetap", "strategyLatency": "Dioptimalkan untuk latensi", "poolMembersLabel": "Anggota pool ({count})", "poolNoMembers": "Belum ada proksi di pool ini.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# jalur keluar} other {# jalur keluar}} digunakan oleh {connections, plural, one {# koneksi} other {# koneksi}} · hingga {max} pada satu jalur keluar · {hours} jam terakhir", + "poolEgressObservationEmpty": "Tidak ada lalu lintas yang teramati dalam {hours} jam terakhir", + "poolEgressObservationHint": "Dihitung dari log proksi selama rentang waktu tersebut: IP keluar unik yang teramati untuk anggota kumpulan ini, serta koneksi OmniRoute yang menggunakannya. \"Pada satu jalur keluar\" berarti selama rentang waktu tersebut, bukan pada saat yang sama. Penguncian 429 per IP hanya menjeda koneksi dari keluarga penyedia yang sama.", "poolRemove": "Hapus", "poolRemoveFailed": "Gagal menghapus proksi dari pool", "poolAddLabel": "Tambahkan proksi", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", + "endpoint": "Titik akhir", + "provider": "Penyedia", "model": "Model", "accountKey": "Account Key", "autoAccounts": "Otomatis ({count} akun)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Kirim", + "cancel": "Batal", + "audioFile": "File Audio", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Hapus Semua", + "request": "Permintaan", + "response": "Respons", + "transcription": "Transkripsi", + "copy": "Salin", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Menghasilkan {count} gambar", "generatedImage": "Gambar yang dihasilkan {index}", - "save": "Save", + "save": "Simpan", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Respons", "completions": "Penyelesaian", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Penyematan", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Moderasi", - "rerank": "Rerank", + "rerank": "Peringkat ulang", "search": "Search", "webFetch": "Pengambilan web" }, "conversationalChat": "Obrolan Percakapan", "clearChat": "Hapus obrolan", "typeMessagePlaceholder": "Ketik pesan... (Shift+Enter untuk baris baru)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Obrolan", + "tabCompare": "Bandingkan", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Bangun", + "configPane": "Konfigurasi", + "systemPrompt": "Prompt sistem", + "systemPromptPlaceholder": "Anda adalah asisten yang siap membantu.", + "modelPlaceholder": "mis. openai/gpt-4o", + "endpointLabel": "Titik akhir", + "parametersLabel": "Parameter", + "collapseConfig": "Ciutkan panel konfigurasi", + "expandConfig": "Perluas panel konfigurasi", + "temperature": "Temperatur", + "maxTokens": "Token maksimum", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Penalti kehadiran", + "frequencyPenalty": "Penalti frekuensi", "reasoningLabel": "Penalaran", "thinking": "Berpikir", "effort": "Upaya", - "effortDefault": "Default", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "effortDefault": "Bawaan", + "seedPlaceholder": "Acak (biarkan kosong)", + "presetsLabel": "Preset", + "loadPreset": "Muat preset", + "savePreset": "Simpan preset", + "noPresets": "Tidak ada preset", + "presetNamePlaceholder": "Nama preset", + "savingPreset": "Menyimpan…", + "nameRequired": "Nama wajib diisi", + "failedToSavePreset": "Gagal menyimpan preset", + "improvePrompt": "Tingkatkan prompt", + "improvingPrompt": "Meningkatkan…", + "improvePromptTitle": "Tingkatkan prompt Anda dengan AI", + "setModelFirst": "Tetapkan model terlebih dahulu", "setModelInConfigFirst": "Atur model di panel Konfigurasi terlebih dahulu.", "improvePromptFailed": "Gagal menyempurnakan prompt.", "improvePromptAria": "Sempurnakan prompt menggunakan AI", "confirmImprovePrompt": "Konfirmasi penyempurnaan prompt", "improvePromptDescription": "Ini akan mengirimkan prompt sistem Anda saat ini ke untuk menghasilkan versi yang disempurnakan.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Tindakan ini akan menggunakan kuota dari model yang dikonfigurasi di Konfigurasi.", + "improveConfirm": "Tingkatkan", + "exportCode": "Ekspor kode", + "exportCodeTitle": "Ekspor Kode", "exportShort": "Ekspor", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Tidak ada status playground yang tersedia untuk diekspor.", "closeExportModal": "Tutup modal ekspor", "close": "Tutup", "exportRealKeyWarning": "Peringatan keamanan: ekspor diblokir — kunci API asli terdeteksi dalam output. Harap reset kunci API Anda dan coba lagi.", @@ -11071,53 +11078,53 @@ "copyLangCode": "Salin kode {language}", "loadingPresets": "Memuat…", "loadPresetPlaceholder": "Muat preset…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", + "copyCode": "Salin", + "copiedCode": "Disalin!", + "addModel": "+ Tambahkan model", + "runAll": "Jalankan semua", + "cancelAll": "Batalkan semua", + "maxColumnsReached": "Maksimum {max} kolom", "modelPlaceholderCompare": "Model (Cmd+K)…", "noModel": "Tidak ada model", "statusLabel": "Status: {status}", "status": { "idle": "siaga", - "streaming": "streaming", + "streaming": "sedang melakukan streaming", "done": "selesai", - "error": "error" + "error": "kesalahan" }, "cancelStream": "Batalkan streaming", "removeColumn": "Hapus kolom", "removeModelColumn": "Hapus kolom untuk {model}", "readyToRun": "Siap dijalankan.", - "errorLabel": "Error", + "errorLabel": "Kesalahan", "unknownError": "Terjadi kesalahan yang tidak diketahui.", "waitingForResponse": "Menunggu respons…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "perkiraan sisi klien", + "tokensLabel": "Token", + "costLabel": "Biaya", + "costEstimated": "(perkiraan)", "ttftTitle": "Waktu hingga token pertama (estimasi sisi klien)", "tpsTitle": "Token per detik (estimasi sisi klien)", "tokenCountsTitle": "Token prompt ↑ / Token penyelesaian ↓", "estimatedCostTitle": "Perkiraan biaya (tidak dijamin akurat)", - "toolsLabel": "Tools", + "toolsLabel": "Alat", "toolsCount": "Alat ({count})", - "addTool": "Add tool", + "addTool": "Tambahkan alat", "editTool": "Edit alat {name}", "removeTool": "Hapus alat {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Nama fungsi", "toolNameRequiredPlaceholder": "Nama fungsi *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Deskripsi (opsional)", "toolParamsLabel": "Parameter (skema JSON)", "toolParamsJsonSchema": "Skema JSON untuk parameter", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parameter harus berupa JSON yang valid", + "structuredOutputLabel": "Output Terstruktur", + "enableJsonMode": "Aktifkan mode JSON", + "disableJsonMode": "Nonaktifkan mode JSON", + "invalidJson": "JSON tidak valid", "jsonMode": "Mode JSON", "jsonModeDescription": "Memaksa response_format: json_schema", "schemaName": "Nama skema", @@ -11125,11 +11132,11 @@ "jsonSchemaEditor": "Editor skema JSON", "schemaValidated": "Skema tervalidasi", "validateSchema": "Validasi skema", - "seed": "Seed", + "seed": "Benih", "stopSequences": "Urutan henti", "stopSequencesPlaceholder": "mis. \"\\n\\n\" atau \"END\"", "autoProvider": "Otomatis", - "httpError": "Error {status}", + "httpError": "Kesalahan {status}", "requestCancelled": "Permintaan dibatalkan", "networkError": "Kesalahan jaringan", "regenerateLastResponse": "Buat ulang respons terakhir", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} kolom", "addModelToCompare": "Tambahkan kolom model untuk membandingkan", "modelsSimultaneously": "Hingga {max} model secara bersamaan", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Sedang berjalan…", + "runLabel": "Jalankan", + "enterToolResult": "Masukkan hasil alat…", "build": { "step1Label": "Apa yang ingin diuji?", "step2Label": "Konfigurasi", @@ -11179,12 +11186,12 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Titik Akhir", "apiKey": "Kunci API", "model": "Model", "voice": "Suara", "speed": "Kecepatan", - "input": "Input", + "input": "Masukan", "url": "URL", "format": "Format", "depth": "Kedalaman", @@ -11195,7 +11202,7 @@ "loading": "Memuat...", "retry": "Coba Lagi", "response": "Respons", - "tunnel": "Tunnel", + "tunnel": "Terowongan", "send": "Kirim", "selectKey": "Pilih kunci", "testLabel": "Uji", @@ -11221,7 +11228,7 @@ "noAudioUrl": "Respons tidak menyertakan URL audio: {response}", "music": "Musik", "embeddingSample": "OmniRoute merutekan permintaan AI ke berbagai penyedia.", - "embedding": "Embedding", + "embedding": "Penyematan", "imageSample": "Kota futuristik saat matahari terbenam, pencahayaan sinematik", "image": "Gambar", "ttsSample": "Halo dari OmniRoute. Ini adalah pengujian teks ke ucapan.", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Hasil {number}", "noKeysFound": "Kunci API tidak ditemukan. Tambahkan di bagian Kunci.", "exampleLabel": "Contoh", - "latency": "{ms}ms", + "latency": "{ms}md", "statsLine": "{ms}ms · {tokensIn} token masuk / {tokensOut} token keluar", "defaultKey": "(bawaan)", "clear": "Bersihkan", @@ -11245,78 +11252,78 @@ "sendHint": "Shift+Enter untuk baris baru · Enter untuk mengirim", "you": "Anda", "assistant": "Asisten", - "errorLabel": "Error", + "errorLabel": "Kesalahan", "requestFailed": "Permintaan gagal", "stop": "Berhenti" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", + "recording": "Merekam", + "paused": "Dijeda", + "pipelineLogsOn": "Log pipeline aktif", + "pipelineLogsOff": "Log pipeline nonaktif", + "updatingPipelineLogs": "Memperbarui log pipeline...", + "updatePipelineFailed": "Gagal memperbarui logging pipeline", + "capturePipeline": "Rekam payload pipeline untuk permintaan baru", + "searchPlaceholder": "Cari model, penyedia, akun, kunci API, kombinasi...", + "allProviders": "Semua penyedia", + "allModels": "Semua model", + "allAccounts": "Semua akun", + "allApiKeys": "Semua kunci API", "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", + "ok": "Berhasil", + "err": "Kesalahan", + "combo": "Kombinasi", + "keys": "Kunci", + "shown": "Ditampilkan", + "sortNewest": "Terbaru", + "sortOldest": "Terlama", + "sortTokensDesc": "Token ↓", + "sortTokensAsc": "Token ↑", + "sortDurationDesc": "Durasi ↓", + "sortDurationAsc": "Durasi ↑", "sortStatusDesc": "Status ↓", "sortStatusAsc": "Status ↑", "sortModelAsc": "Model A-Z", "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortLogs": "Urutkan log", + "refresh": "Segarkan", + "columnsLabel": "Kolom", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "AKTIF", + "semantic": "Semantik", + "upstream": "Hulu", + "semanticCacheHit": "Cache semantik ditemukan (disajikan oleh OmniRoute)", + "upstreamResponse": "Respons penyedia upstream", + "noApiKey": "Tidak ada kunci API", + "requestedRoutedTitle": "Meminta {requested}, dirutekan sebagai {routed}", "statusFilters": { - "all": "All", + "all": "Semua", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Berhasil", + "combo": "Kombinasi" }, "columns": { "status": "Status", - "cacheSource": "Cache Source", + "cacheSource": "Sumber Cache", "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "requested": "Diminta", + "provider": "Penyedia", + "protocol": "Protokol Permintaan", + "account": "Akun", + "apiKey": "Kunci API", + "combo": "Kombinasi", + "tokens": "Token", "compressed": "Kompresi", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Durasi", + "time": "Waktu", + "conversation": "Percakapan", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Memuat log...", + "noLogs": "Belum ada log. Lakukan beberapa panggilan API untuk melihatnya di sini.", + "noMatchingLogs": "Tidak ada log yang cocok dengan filter saat ini.", + "callLogsInfo": "Log panggilan juga disimpan sebagai file JSON di {dataDir} dan dirotasi berdasarkan {retentionDays} dan {maxEntries}.", "loadMore": "Muat Lebih Banyak", "loadingMore": "Memuat lebih banyak...", "correlationId": "ID Korelasi", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Artifact payload yang terperinci tidak lagi tersedia untuk entri log ini.", "payloadCorrupt": "Artifact payload yang rinci tidak dapat diparsing.", - "notAvailable": "N/A", + "notAvailable": "T/A", "semanticCache": "Semantik (OmniRoute)", "upstreamCache": "Hulu (Penyedia)", "ariaLabel": "Detail log permintaan", @@ -11399,77 +11406,77 @@ "rotated": "Diputar: {initial} -> {final}", "apiKey": "Kunci API", "noApiKey": "Tidak ada kunci API", - "combo": "Combo", + "combo": "Kombinasi", "error": "Kesalahan", "unblockAll": "Buka blokir semua", "cleared": "Dihapus", "unblock": "Buka Blokir", "relatedRequests": "Permintaan Terkait ({count})", "current": "saat ini", - "detailStatus": "Detail Status", + "detailStatus": "Status Terperinci", "loadingDetails": "Memuat rincian permintaan...", - "providerEventStream": "Provider Event Stream", + "providerEventStream": "Aliran Peristiwa Penyedia", "clientEventStream": "Aliran Acara Klien", "eventStream": "Aliran Acara", "responsePayloadLegacy": "Payload Respon (Legacy)", - "requestPayloadLegacy": "Request Payload (Legacy)", + "requestPayloadLegacy": "Payload Permintaan (Lama)", "noPayload": "Tidak ada data payload yang tersedia untuk entri log ini.", "correlationId": "ID Korelasi", "correlationIdValue": "ID Korelasi: {id}", "detailedPayloadInfo": "Aktifkan logging terperinci terlebih dahulu jika Anda ingin tampilan payload klien/penyedia empat tahap untuk permintaan baru.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Salin semua", + "copiedAll": "Semua disalin" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", + "filterAll": "Semua", + "filterErrors": "Kesalahan", + "filterSuccess": "Berhasil", + "filterTimeout": "Waktu Habis", "colStatus": "Status", - "colProxy": "Proxy", + "colProxy": "Proksi", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", + "colType": "Jenis", + "colLevel": "Tingkat", + "colProvider": "Penyedia", "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", + "colLatency": "Latensi", + "colClientIp": "IP Klien", + "colTime": "Waktu", + "recording": "Merekam", + "paused": "Dijeda", + "searchPlaceholder": "Cari host, penyedia, target, IP...", + "allTypes": "Semua Jenis", + "allLevels": "Semua Tingkat", + "allProviders": "Semua Penyedia", "total": "total", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "GALAT", + "timeoutShort": "WAKTU HABIS", + "direct": "langsung", + "newest": "Terbaru", + "oldest": "Terlama", + "latencyDesc": "Latensi ↓", + "latencyAsc": "Latensi ↑", + "refresh": "Segarkan", + "columns": "Kolom", + "loadingProxyLogs": "Memuat log proksi...", + "noProxyLogs": "Belum ada log proksi. Konfigurasikan proksi dan lakukan panggilan API untuk melihatnya di sini.", + "noMatchingLogs": "Tidak ada log yang cocok dengan filter saat ini.", + "tlsFingerprint": "Sidik Jari TLS Chrome 124", "colPublicIp": "IP Publik" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "speech": "Ucapan", + "search": "Pencarian", + "images": "Gambar", + "chat": "Obrolan", + "music": "Musik", + "responses": "Respons", + "rerank": "Pemeringkatan Ulang", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Embedding", + "transcription": "Transkripsi" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Waktu Proses", + "description": "Observabilitas real-time — ketahanan 3 lapis + sesi + peringatan kuota", + "pause": "Jeda", + "resume": "Lanjutkan", + "refreshNow": "Segarkan sekarang", + "kpiSessions": "Sesi", + "kpiCircuits": "Sirkuit", + "kpiCooldowns": "Masa Tunggu", + "kpiLockouts": "Penguncian", + "hintStickyBound": "{count} terikat secara sticky", + "hintRecovering": "{count} sedang pulih", + "hintAllHealthy": "semua sehat", + "hintOpen": "terbuka", + "hintConnsCooling": "koneksi dalam masa tunggu", + "hintModelsBlocked": "model diblokir", + "resilienceTitle": "Ketahanan 3 Lapis", + "resilienceSubtitle": "Mencerminkan model ketahanan yang didokumentasikan", + "providersHealthy": "{percent}% penyedia sehat", + "layer": "Lapis {n}", + "layer1Title": "Pemutus Sirkuit Penyedia", + "layer1Desc": "Hentikan lalu lintas ke penyedia yang gagal di tingkat hulu", + "layer2Title": "Masa Tunggu Koneksi", + "layer2Desc": "Lewati satu akun/kunci yang bermasalah; koneksi lain tetap melayani", + "layer3Title": "Penguncian Model", + "layer3Desc": "Penguncian batas laju per model; koneksi yang sama tetap melayani model lain", + "badgeAffectedOf": "{affected} dari {total} terdampak", + "badgeCooling": "{count} dalam masa tunggu", + "badgeLocked": "{count} terkunci", + "emptyCircuits": "Belum ada pemutus sirkuit yang aktif", + "emptyCooldowns": "Tidak ada masa tunggu koneksi yang aktif", + "emptyLockouts": "Tidak ada penguncian model", + "moreCooldowns": "+{count} masa tunggu lainnya", + "moreLockouts": "+{count} penguncian lainnya", + "feedTitle": "Umpan Langsung", + "feedSubtitle": "{count} peristiwa terakhir", + "feedFilterAll": "Semua", + "feedFilterCircuits": "Sirkuit", + "feedFilterCooldowns": "Masa Tunggu", + "feedFilterLockouts": "Penguncian", + "feedFilterSessions": "Sesi", + "feedFilterQuotas": "Kuota", + "feedClear": "Hapus", + "feedEmptyWaiting": "Menunggu peristiwa... (diperiksa setiap 5 dtk)", + "feedEmptyFiltered": "Tidak ada peristiwa yang cocok dengan filter ini", + "sessionsTitle": "Sesi Aktif", + "sessionsSubtitle": "Sidik jari permintaan yang terikat secara sticky (langsung)", + "sessionsActive": "{count} aktif", + "sessionsEmptyTitle": "Tidak ada sesi aktif", + "sessionsEmptyHint": "Sesi akan muncul saat permintaan mengalir melalui proxy", + "tblSession": "Sesi", + "tblAge": "Usia", + "tblIdle": "Menganggur", + "tblReqs": "Permintaan", + "tblBoundTo": "Terikat ke", + "topApiKeys": "Kunci API teratas", + "quotaMonitorsTitle": "Pemantau Kuota", + "quotaMonitorsSubtitle": "Status kuota langsung per rentang akun", + "openQuota": "Buka Kuota", + "allQuotasHealthy": "Semua kuota dalam kondisi baik", + "statusExhausted": "HABIS", + "statusAlerting": "PERINGATAN", + "statusError": "KESALAHAN", + "moreSuffix": "+{count} lainnya" }, "quotaShare": { "weightPercent": "Bobot %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Berbagi Kuota", + "description": "Bagikan kuota penyedia di antara kunci API dengan batas %", + "newPool": "Pool baru", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Konfigurasi disimpan di localStorage (belum dipertahankan di server). Penerapan batas per permintaan belum terhubung ke pipeline proxy. Layar ini memungkinkan Anda merancang dan memvisualisasikan pembagian kuota; penerapan sebenarnya akan hadir dalam iterasi mendatang dengan persistensi DB dan intersepsi panggilan upstream.", + "kpiActivePools": "Pool aktif", + "kpiKeysAllocated": "Kunci yang dialokasikan", + "kpiAvgUnallocated": "Rata-rata belum dialokasikan", + "kpiProvidersWithQuota": "Penyedia dengan kuota", + "emptyTitle": "Belum ada pool yang dikonfigurasi", + "emptyDescription": "Buat pool untuk menetapkan kunci API agar berbagi rentang kuota penyedia dengan alokasi %.", + "loading": "Memuat…", + "removePool": "Hapus pool", + "removeConfirm": "Hapus pool ini?", + "pool": "Kumpulan", + "used": "digunakan", + "allocationsCount": "Alokasi ({count})", + "allocatedFree": "{allocated}% dialokasikan · {free}% tersedia", + "noAllocations": "Belum ada kunci yang dialokasikan", + "capLabel": "batas {value}", + "notTrackedYet": "(belum dilacak)", + "policy": "Kebijakan", "apiKeyColumn": "Kunci API", "weightColumn": "Bobot", "fairShareShort": "adil", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", + "policyHard": "ketat", + "policySoft": "lunak", + "policyBurst": "lonjakan", + "policyHardHint": "Blokir saat alokasi kunci habis", + "policySoftHint": "Izinkan kelebihan, hanya beri peringatan", + "policyBurstHint": "Izinkan lonjakan menggunakan kumpulan bebas", + "editAllocations": "Edit alokasi", + "newPoolTitle": "Kumpulan kuota baru", + "providerConnection": "Koneksi penyedia (akun)", + "selectConnection": "Pilih koneksi…", + "noEligibleConnections": "Tidak ada koneksi dengan data kuota. Segarkan dari /dashboard/quota terlebih dahulu.", + "quotaWindow": "Periode kuota", + "selectWindow": "Pilih periode…", + "alreadyUsedSuffix": "(sudah digunakan)", + "windowReset": "Atur ulang", + "duplicatePoolError": "Kumpulan untuk koneksi + periode ini sudah ada", + "cancel": "Batal", + "createPool": "Buat kumpulan", + "editTitle": "Edit alokasi", + "noKeysAdded": "Belum ada kunci yang dialokasikan. Tambahkan satu di bawah.", "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "totalExceeded": "⚠ melebihi 100%", + "addKey": "+ Tambahkan kunci…", + "equalSplit": "Bagi rata", + "save": "Simpan alokasi", "betaPreviewLabel": "Beta — Pratinjau UI.", "betaConfigSavedPrefix": "Konfigurasi disimpan di", "betaConfigSavedSuffix": "(belum bertahan di server). Pemberlakuan batasan per permintaan belum dimasukkan ke dalam jalur proksi. Layar ini memungkinkan Anda merancang dan memvisualisasikan pembagian kuota; penegakan hukum yang nyata akan diterapkan pada iterasi mendatang dengan persistensi DB dan intersepsi panggilan upstream.", @@ -11627,7 +11634,7 @@ "stackedBarTitle": "Pembagian berdasarkan kunci API", "usedSuffix": "terpakai {percent}%", "wizardTitle": "Pool kuota baru", - "editPoolTitle": "Edit pool", + "editPoolTitle": "Edit kumpulan", "saveChanges": "Simpan perubahan", "wizardStep1Label": "Akun", "wizardStep2Label": "Batas", @@ -11668,10 +11675,10 @@ "endpointsHint": "Panggil model virtual ini dengan kunci apa pun yang dialokasikan — perutean + kuota ditangani per grup.", "previewForKey": "Pratinjau untuk kunci", "previewKeyNone": "(semua endpoint)", - "endpointsBaseUrl": "Base URL", + "endpointsBaseUrl": "URL dasar", "endpointsCollapse": "Ciutkan", "endpointsExpand": "Perluas", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Native Anthropic", "endpointsResponsesNote": "Respons OpenAI — codex/github", "endpointsWsNote": "WebSocket — hanya codex", "betaText": "Quota Share berfungsi tetapi bug mungkin terjadi. Menemukan bug? Silakan laporkan.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Grup ini masih memiliki pool — alihkan atau hapus terlebih dahulu.", "ungroupedTitle": "Tanpa Grup", "ungroupedHint": "Pool ini tidak ditetapkan ke grup yang dikenal. Edit pool untuk memindahkannya ke grup yang sebenarnya.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Tidak dapat menghapus kumpulan ini.", + "dismiss": "Tutup" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", + "title": "Plugin", + "description": "Instal dan kelola plugin untuk memperluas fungsionalitas OmniRoute", + "loading": "Memuat plugin...", + "scanning": "Memindai...", + "scanForPlugins": "Pindai Plugin", + "noPlugins": "Tidak ada plugin yang terpasang", + "noPluginsDescription": "Tempatkan direktori plugin di ~/.omniroute/plugins/ lalu klik Pindai.", + "activate": "Aktifkan", + "deactivate": "Nonaktifkan", + "uninstall": "Copot pemasangan", + "uninstallConfirm": "Copot plugin \"{name}\"?", + "pluginScanComplete": "Pemindaian plugin selesai", + "pluginScanFailed": "Pemindaian plugin gagal", + "activated": "{name} diaktifkan", + "deactivated": "{name} dinonaktifkan", + "activateFailed": "Gagal mengaktifkan {name}", + "deactivateFailed": "Gagal menonaktifkan {name}", + "uninstalled": "{name} telah dicopot", + "uninstallFailed": "Gagal mencopot {name}", + "configure": "Konfigurasi: {name}", + "configurePlugin": "Konfigurasikan", + "noConfigSettings": "Plugin ini tidak memiliki pengaturan yang dapat dikonfigurasi.", + "saving": "Menyimpan...", + "saveConfiguration": "Simpan Konfigurasi", + "configurationSaved": "Konfigurasi disimpan", + "saveConfigurationFailed": "Gagal menyimpan konfigurasi", + "pluginNotFound": "Plugin tidak ditemukan", + "version": "Versi", + "author": "Pembuat", + "description_label": "Deskripsi", "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "enabled": "Diaktifkan", + "disabled": "Dinonaktifkan", "installedTab": "Terinstal", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Pasar", "marketplaceUrlLabel": "URL Marketplace Kustom", "marketplaceUrlPlaceholder": "Biarkan kosong untuk registri resmi Omniroute", "saveMarketplaceUrl": "Simpan & Muat Ulang", @@ -11729,7 +11736,7 @@ "verified": "Terverifikasi", "install": "Instal", "installedFromMarketplace": "Plugin {name} terinstal!", - "hooks": "Hooks" + "hooks": "Hook" }, "quotaPlans": { "title": "Paket & Kuota", @@ -12057,10 +12064,10 @@ "resumeBtn": "Lanjutkan", "clearBtn": "Bersihkan", "exportHar": "Ekspor .har", - "recordSession": "REC", + "recordSession": "REK", "stopSession": "Berhenti", "liveBadge": "langsung", - "offlineBadge": "offline", + "offlineBadge": "luring", "noRequests": "Belum ada permintaan yang ditangkap.", "noRequestsDesc": "Pastikan AgentBridge berjalan atau aktifkan mode penangkapan lain.", "selectRequest": "Pilih permintaan untuk memeriksanya.", @@ -12091,7 +12098,7 @@ "llmApiKind": "Jenis API", "llmModel": "Model", "llmMessages": "Pesan", - "llmStream": "Stream", + "llmStream": "Streaming", "llmMappedTo": "Dipetakan ke", "llmCostEstimate": "Estimasi biaya", "systemProxyExitWarning": "Proxy seluruh sistem masih aktif — tetap tinggalkan halaman?", @@ -12165,7 +12172,7 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "Kode CLI", "phrase": "Alat kode yang Anda arahkan ke OmniRoute", "flow": "Anda → CLI Code → OmniRoute → Provider", "seeOther": "Lihat →" @@ -12179,7 +12186,7 @@ "acp": { "title": "Agen ACP", "phrase": "CLI yang dijalankan OmniRoute sebagai backend eksekusi (alur terbalik)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Sebagian besar pengguna dapat mengabaikan ini — gunakan hanya jika integrasi memerlukannya.", "flow": "Klien → OmniRoute → spawn CLI (stdio/ACP) → respons", "seeOther": "Lihat →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI digunakan sebagai backend oleh Omni", "desc": "Eksekusi terbalik", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → jalankan CLI → respons", "examples": "mis.: claude, codex (ACP)" } }, @@ -12229,11 +12236,11 @@ "apply": "Simpan", "reset": "Bersihkan", "manualConfig": "Konfigurasi manual", - "vendor": "Vendor", + "vendor": "Penyedia", "category": "Tipe", "detectionStatus": "Deteksi", "configStatus": "Konfigurasi", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "URL Dasar", "apiKeyLabel": "Kunci API", "modelMappingLabel": "Pemetaan model", "noActiveProviders": "Tidak ada penyedia aktif.", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhook", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Daftarkan, tampilkan, uji, dan hapus endpoint webhook. Konfigurasikan langganan peristiwa (request.completed, request.failed, quota.exceeded, dll.) dan kelola percobaan ulang pengiriman." }, "omni-mcp": { "name": "Server MCP", @@ -12390,27 +12397,27 @@ "description": "Endpoint inferensi inti yang kompatibel dengan OpenAI: penyelesaian obrolan, penyematan, gambar, audio (TTS/STT), moderasi, rerank, dan Responses API. Permukaan integrasi utama untuk agen AI." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Sajikan", "description": "Mulai, hentikan, dan mulai ulang server OmniRoute dari CLI. Kelola mode daemon, konfigurasi port, pemulihan otomatis, integrasi baki sistem, dan pintasan pembukaan dasbor." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Kesehatan", "description": "Periksa kesehatan server, status komponen, dan metrik langsung dari CLI. Jalankan `health`, `health components`, dan `health watch` untuk dasbor waktu nyata dari pemutus sirkuit dan status penyedia." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Penyedia", "description": "Kelola koneksi penyedia dari CLI: cantumkan penyedia yang tersedia/dikonfigurasi, tambah, uji, uji semua, validasi, putar kunci API, dan lihat metrik per penyedia." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Kunci API", "description": "Buat, cantumkan, putar, dan cabut kunci API OmniRoute dari CLI. Kelola alur OAuth untuk autentikasi penyedia dan periksa cakupan serta kedaluwarsa kunci." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: Model", "description": "Kueri model AI yang tersedia, cantumkan alias model, dan telusuri katalog model lengkap dari CLI. Filter berdasarkan penyedia, cari berdasarkan kemampuan, dan selesaikan varian nama model." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Obrolan", "description": "Kirim penyelesaian obrolan, alirkan respons, dan mulai sesi REPL interaktif dari CLI. Mendukung semua penyedia OmniRoute, perutean kombo, dan konfigurasi perintah sistem." }, "cli-routing": { @@ -12435,11 +12442,11 @@ }, "cli-mcp": { "name": "CLI: MCP", - "description": "Inspect the MCP server status, list registered tools and scopes, run tool invocations, and manage MCP audit logs from the CLI." + "description": "Periksa status server MCP, tampilkan alat dan cakupan yang terdaftar, jalankan pemanggilan alat, serta kelola log audit MCP dari CLI." }, "cli-a2a": { - "name": "CLI: A2A Protocol", - "description": "Interact with the OmniRoute A2A server from the CLI. Send tasks, inspect skill execution history, and test the JSON-RPC 2.0 agent-to-agent protocol interactively." + "name": "CLI: Protokol A2A", + "description": "Berinteraksi dengan server A2A OmniRoute dari CLI. Kirim tugas, periksa riwayat eksekusi keterampilan, dan uji protokol antarpelaku JSON-RPC 2.0 secara interaktif." }, "cli-tunnel": { "name": "CLI: Tunnel", @@ -12519,7 +12526,7 @@ "omni": "SQLite (SkillsMP / skills.sh / lokal)" }, "tagline": { - "label": "Tagline", + "label": "Slogan", "agent": "Ajari agen Anda untuk menggunakan OmniRoute", "omni": "Berikan alat yang dapat dieksekusi ke model OmniRoute" } @@ -12565,10 +12572,10 @@ "bestModel": "Terbaik", "allCategories": "Semua Kategori", "categoryDefault": "Bawaan", - "categoryCoding": "Coding", + "categoryCoding": "Pemrograman", "categoryReview": "Tinjauan", "categoryDocumentation": "Dokumentasi", - "categoryDebugging": "Debugging", + "categoryDebugging": "Penelusuran kesalahan", "colRank": "Peringkat", "colProvider": "Penyedia", "colTopModel": "Model Teratas", @@ -12589,14 +12596,14 @@ "typeApikey": "Kunci API", "sortTypeFirst": "Termudah dahulu", "sortTypeFirstHelp": "Kelompokkan berdasarkan upaya pendaftaran (Tanpa Pendaftaran → Login OAuth → Kunci API), dengan tetap menjaga urutan kualitas dalam setiap kelompok", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Paling andal terlebih dahulu", + "sortByReliabilityHelp": "Urutkan penyedia berdasarkan proporsi panggilan yang berhasil dalam rentang waktu yang dipilih. Penyedia dengan jumlah panggilan yang terlalu sedikit untuk menentukan tingkat keberhasilan akan tetap berada dalam urutan skornya, di bawah penyedia yang telah diukur.", "typeLegend": "Tanpa Pendaftaran = tanpa penyiapan · Login OAuth = masuk dengan akun Anda sendiri · Kunci API = bawa kunci Anda sendiri atau gunakan tingkat gratis penyedia tersebut", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Keandalan", + "colReliabilityHelp": "Proporsi panggilan yang benar-benar dijawab oleh penyedia ini selama 24 jam terakhir. Tanda hubung berarti penyedia menerima terlalu sedikit lalu lintas untuk menentukan tingkat keberhasilan.", + "reliabilitySample": "{successes} dari {requests} panggilan berhasil dalam {hours} jam terakhir", + "reliabilityTooFew": "Hanya {requests} panggilan dalam {hours} jam terakhir — terlalu sedikit untuk menentukan tingkat", + "reliabilityNoTraffic": "Tidak ada panggilan yang tercatat dalam 24 jam terakhir" }, "discovery": { "title": "Penemuan Penyedia", @@ -12658,7 +12665,7 @@ "add": "Tambah", "manualApiKey": "Gunakan kunci API manual", "createDahlTokenFailed": "Gagal membuat token Dahl", - "providerProxy": "Proxy", + "providerProxy": "Proksi", "providerProxyConfigureHint": "Konfigurasi proxy", "providerProxyTitleConfigured": "Proxy dikonfigurasi: {host}" }, @@ -12692,9 +12699,9 @@ "platinum": "Platinum", "diamond": "Berlian" }, - "tierLabel": "Tier: {tier}", + "tierLabel": "Tingkat: {tier}", "dayStreak": "Streak {count} hari", - "levelProgress": "Level {current} → {next}", + "levelProgress": "Tingkat {current} → {next}", "totalXpEarned": "Total {count} XP diperoleh", "maintainStreak": "Terus gunakan OmniRoute setiap hari untuk mempertahankan streak Anda!", "badgesTitle": "Lencana ({earned}/{total})", @@ -12714,14 +12721,14 @@ "usage": "Penggunaan", "sharing": "Berbagi", "contribution": "Kontribusi", - "streak": "Streak", + "streak": "Rangkaian", "rare": "Pencapaian langka" }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Pendukung Radar", + "description": "Memverifikasi feed langsung pendukung OmniRoute Radar", + "criteria": "Verifikasi feed langsung pendukung Radar yang ditandatangani." }, "first-token": { "name": "Token Pertama", @@ -12846,7 +12853,7 @@ "security": "Keamanan", "network": "Jaringan", "policies": "Kebijakan", - "runtime": "Runtime", + "runtime": "Waktu proses", "cli": "CLI", "health": "Kesehatan", "requiresRestart": "Memerlukan Mulai Ulang" @@ -12948,8 +12955,8 @@ "description": "Izinkan beberapa koneksi untuk setiap node kompatibilitas." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Nonaktifkan Pemeriksaan Jendela Konteks", + "description": "Lewati pemeriksaan lokal OmniRoute atas jendela konteks dan token input maksimum untuk permintaan langsung ke satu model. Penyedia upstream tetap memberlakukan batas aktual mereka. Kompresi prompt dan batas token output tetap aktif." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Hapus item output fase komentar internal dari streaming passthrough Responses API sebelum meneruskannya ke klien. Nonaktifkan flag ini untuk menerima komentar upstream mentah." @@ -12985,7 +12992,7 @@ "description": "Izinkan pemulihan streaming untuk meminta respons kembali dan menggabungkannya setelah byte telah mencapai klien." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Amankan pemanggilan alat saat melanjutkan streaming di tengah proses: jangan pernah melanjutkan stream yang terputus setelah pemanggilan alat dikirim (masih berlangsung atau sudah selesai), dan hentikan setelah satu kelanjutan kosong alih-alih menggunakan seluruh jatah percobaan ulang." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Alihkan sekali ke koneksi saudara ketika stream tertutup sebelum mengirim frame yang berguna dan percobaan ulang terbatas pada koneksi yang sama sudah habis. Jika tidak ada koneksi saudara yang dapat digunakan, error early-EOF asli dikembalikan. Nonaktif: early-EOF tetap final setelah percobaan ulang." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Aktifkan akses jaringan di sandbox keterampilan." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Loop Alat Milik Server", + "description": "Lanjutkan panggilan alat non-streaming milik server hingga model mengembalikan respons yang dapat digunakan klien." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Asal Retry-After", + "description": "Pada respons gabungan 429/503 tidak tersedia, hilangkan Retry-After jika waktu percobaan ulang konkret di masa mendatang tidak diketahui alih-alih mengirim nilai sintetis 1 detik, tambahkan error.retry_after_provenance, dan baca petunjuk percobaan ulang dalam teks pada jalur pengosongan combo." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Penghentian Infrastruktur Prioritas Terlindungi sebagai 502", + "description": "Berikan respons 502 alih-alih 503 ketika target prioritas dengan fallback khusus kuota menghentikan combo karena penyebab yang terbukti bukan kuota: circuit breaker penyedia yang terbuka atau pelompatan berdasarkan prediksi latensi." } } }, @@ -13150,7 +13161,7 @@ "loadingUsdCosts": "Memuat biaya USD", "used": "Terpakai", "quotaUsed": "Kuota terpakai", - "estimatedFullQuota": "Est. 100%", + "estimatedFullQuota": "Perk. 100%", "rows": "Baris", "window": "Jendela", "unknown": "tidak diketahui", @@ -13171,7 +13182,7 @@ "segmentHint": "Setiap segmen = satu pool gratis · deduplikasi pool, penghitungan jujur (tanpa batas rate-limit yang digelembungkan).", "boost": "Buka ~{tokens} tambahan/bln dengan top-up OpenRouter $10 satu kali (50 → 1000 req/hari)", "uncapped": "Gratis permanen, tanpa batas yang dipublikasikan (dibatasi rate-limit) — akses nyata, tidak dihitung dalam tajuk utama:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/bln lebih banyak setelah pemeriksaan identitas regional (mis. verifikasi nama asli di Tiongkok daratan) — kuota riil, tidak dihitung dalam angka utama:", "tosRestricted": "{count, plural, one {# model} other {# model}} ditandai sebagai dibatasi ToS — Anda yang menentukan", "provider": "Penyedia", "model": "Model", @@ -13270,80 +13281,80 @@ "viewFullHistory": "Lihat riwayat lengkap di GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", + "title": "Kebijakan perutean penalaran", + "apiKeyTitle": "Perutean penalaran untuk kunci API ini", + "subtitle": "Alihkan rute model dan upaya penalaran tanpa memerlukan dukungan klien. Permintaan tetap tidak berubah jika tidak ada aturan yang cocok.", + "loadError": "Aturan penalaran tidak dapat dimuat.", + "saveError": "Aturan tidak valid atau tidak dapat disimpan.", + "saved": "Aturan penalaran disimpan.", + "deleteConfirm": "Hapus aturan penalaran ini?", + "deleteError": "Aturan penalaran tidak dapat dihapus.", + "empty": "Tidak ada aturan penalaran cocok yang dikonfigurasi.", + "all": "Semua", + "any": "Apa pun", + "enabled": "Diaktifkan", + "disabled": "Dinonaktifkan", + "filterSearch": "Cari aturan", + "filterScope": "Filter berdasarkan cakupan", + "filterStatus": "Filter berdasarkan status", + "allModels": "semua model", + "keepModel": "Pertahankan model", + "otherModel": "Model lain", + "combo": "Kombinasi", + "priorityShort": "prioritas {value}", + "toggleAria": "Aktifkan {name}", + "edit": "Ubah", + "delete": "Hapus", + "name": "Nama", + "description": "Deskripsi", + "scopeLabel": "Cakupan", + "apiKey": "Kunci API", + "sourceCombo": "Kombinasi sumber", + "connection": "Koneksi", + "sourceModel": "Model sumber atau wildcard", + "sourceModelOptional": "Kosong = semua model", + "sourceModelExample": "mis. gpt-5*", + "sourceEffort": "Upaya sumber", + "missing": "Tidak ditentukan", + "signalOnly": "Sinyal penalaran non-diskret", + "requestTags": "Tag permintaan", + "requestTagsExample": "pemrograman, internal", + "tagMode": "Pencocokan tag", + "effortMode": "Mode upaya", + "targetEffort": "Upaya target", + "routingTarget": "Target perutean", + "targetModel": "Model target", + "targetCombo": "Kombinasi target", + "budgetAction": "Anggaran pemikiran", + "budgetTokens": "Token anggaran", + "priority": "Prioritas", + "saveChanges": "Simpan perubahan", + "add": "Tambahkan aturan", + "cancel": "Batal", + "simulateTitle": "Simulasikan aturan", "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "effort": "Upaya", + "transport": "Transpor", + "simulate": "Simulasikan tanpa upstream", + "extendedComboWarning": "Max/Ultra divalidasi secara terpisah untuk setiap target kombinasi selama perutean.", + "extendedUnknownWarning": "Masukkan model target untuk memverifikasi dukungan Max/Ultra.", + "extendedUnsupportedWarning": "Max/Ultra hanya diketahui didukung oleh model Codex GPT-5.6 yang sesuai. Model kustom yang tidak dikenal diterima oleh server dengan peringatan.", "scope": { "global": "Global", - "apiKey": "API key", - "combo": "Combo", + "apiKey": "Kunci API", + "combo": "Kombinasi", "model": "Model", - "connection": "Connection" + "connection": "Koneksi" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Warisi dari klien", + "default": "Gunakan nilai default", + "force": "Paksa" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Pertahankan", + "remove": "Hapus", + "set": "Tetapkan nilai tetap" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "Langsung (waktu nyata)", "tierCommunity": "Komunitas (penundaan 30 hari)", "activateTitle": "Aktifkan Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Bandingkan akses Community dan akses langsung, pahami apa yang dipertukarkan oleh instalasi Anda, lalu pilih cara mengaktifkan Radar.", + "accessScaleTitle": "Pahami akses Radar sebelum mengaktifkannya", + "accessScaleIntro": "Radar tidak melakukan aktivitas jaringan sampai Anda memilih untuk ikut serta. Pilih akses Community atau aktifkan kunci pendukung pribadi setelah meninjau aturan berikut.", + "accessCommunityRule": "Community — tidak memerlukan kunci: katalog lengkap dengan penundaan 30 hari.", + "accessSingleUseRule": "Beri bintang + ikuti — setelah GitHub OAuth memverifikasi keduanya, akun GitHub Anda mendapatkan satu kali akses baca katalog langsung; setelah itu, akses kembali ke Community. Akses satu kali ini tidak dapat diterbitkan ulang untuk akun tersebut.", + "accessContributorRule": "Kontributor — PR yang digabungkan, commit, dan jumlah baris hanya menentukan urutan peringkat mingguan. Peringkat 10 teratas menerima 365 hari; peringkat 11–100 menerima 90 hari; kontributor di luar 100 teratas tidak menerima akses, berapa pun jumlah PR-nya. Keluar dari peringkat tidak pernah mengurangi waktu yang telah diberikan.", + "accessSupporterRule": "Pendukung — pembelian satu kali memberikan akses selama 6 bulan, 1 tahun, atau seumur hidup tanpa perpanjangan otomatis. Pembelian, donasi, periode kontributor, dan pemberian manual diakumulasikan; akses seumur hidup selalu diutamakan.", + "accessUseTitle": "Penggunaan pribadi, pemulihan, dan peninjauan", + "accessInstallationRule": "Lisensi pribadi — gunakan kunci hanya pada satu instalasi aktif dalam satu waktu. OmniRoute tidak membuat sidik jari perangkat keras. Pemulihan mencabut dan mengganti kunci yang hilang tanpa mengatur ulang masa berlakunya.", + "accessAbuseRule": "Peninjauan penyalahgunaan — IP berbeda ke-4 dalam 24 jam hanya membuat tanda untuk peninjauan manual; hal ini tidak pernah memblokir atau mencabut kunci secara otomatis.", + "accessOffersRule": "Penawaran langsung dikurasi secara manual dan dapat berubah atau kedaluwarsa.", + "privacyTitle": "Apa yang dipertukarkan Radar", + "privacyDownloadsRule": "Unduhan — instalasi Anda menerima katalog dan metadata rujukan yang ditandatangani secara kriptografis; kunci akses langsung yang valid juga membuka penawaran bertanda tangan dan Intel.", + "privacySendsRule": "Pengiriman — sinkronisasi sisi server mengirimkan kunci pendukung sebagai token Bearer, dan infrastruktur HTTPS menerima IP koneksi. Pencatatan permintaan feed tidak menyimpan kedua nilai tersebut dalam bentuk mentah: pencatatan hanya menyimpan hash kunci, penggunaan agregat, dan HMAC IP terpotong yang dirotasi setiap hari untuk peninjauan penyalahgunaan.", + "privacyNeverRule": "Tidak pernah dikumpulkan — prompt, respons, percakapan, kredensial penyedia, lalu lintas model, waktu aktif, latensi, dan konfigurasi penyedia lokal tidak pernah dikirim ke Radar.", + "activateButton": "Aktifkan Community", "activating": "Mengaktifkan...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Sudah memiliki kunci pendukung?", + "keyInvalidFormatError": "Format kunci tidak valid. Kunci harus diawali dengan \"omr_\" yang diikuti oleh 40 karakter heksadesimal.", + "activateWithKeyButton": "Aktifkan akses pendukung", + "changeKeyButton": "Ubah kunci", + "claimSectionTitle": "Belum memiliki kunci pendukung?", + "contributorButton": "Saya seorang kontributor", + "contributorHint": "GitHub OAuth memeriksa peringkat mingguan saat ini: 10 teratas mendapatkan 365 hari dan peringkat 11–100 mendapatkan 90 hari. Jumlah PR saja tidak pernah memberikan akses di luar 100 teratas.", + "supporterButton": "Dukung proyek ini", + "supporterHint": "Opsi sekali bayar untuk 6 bulan, 1 tahun, dan seumur hidup tidak memiliki perpanjangan otomatis; periode yang memenuhi syarat akan terakumulasi dan opsi seumur hidup diutamakan.", "colProvider": "Penyedia", "colModel": "Model", "colQuota": "Kuota", + "colLimits": "Batas laju", + "trainsOnPrompts": "Dilatih dengan prompt", + "trainsOnPromptsHelp": "Ketentuan penyedia ini menyatakan bahwa mereka dapat melatih model menggunakan prompt yang Anda kirim. Model tanpa lencana ini menyatakan bahwa mereka tidak melakukannya, atau tidak mendokumentasikannya — tidak adanya pernyataan bukanlah jaminan.", + "limitsUnknownHelp": "Batas hanya dilaporkan oleh umpan Radar; tidak ada batas yang dipublikasikan untuk entri ini", + "contextUnknownHelp": "Jendela konteks tidak diketahui untuk entri ini", + "capabilityUnknownHelp": "Kemampuan tidak dilaporkan oleh umpan", "colContext": "Konteks", "colCapabilities": "Kemampuan", "colTos": "Risiko ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "baru", "setupGuide": "Panduan pengaturan", "disabledByFeed": "Dinonaktifkan oleh umpan Radar", "capTools": "Alat", "capVision": "Visi", "capThinking": "Berpikir", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalog", + "freeCreditsTab": "Kredit gratis", + "freeCreditsSubtitle": "Tautan referral dari penyedia yang dilacak Radar — menggunakannya tidak dikenakan biaya tambahan dan membantu mendukung OmniRoute.", + "fixedLinksEmpty": "Belum ada tautan referral yang tersedia. Sinkronkan Radar untuk memeriksa pembaruan.", + "requiredActionLabel": "Yang perlu dilakukan:", + "claimButton": "Klaim kredit", + "campaignsTitle": "Kampanye berbatas waktu", + "campaignsEmpty": "Saat ini tidak ada kampanye aktif — periksa kembali nanti.", + "campaignsUpsellCommunity": "Kampanye berbatas waktu adalah manfaat tambahan bagi pendukung. Semua tautan permanen di halaman ini tetap gratis untuk semua orang.", + "campaignsValidUntil": "Berlaku hingga {date}", + "colActions": "Tindakan", + "localBadge": "lokal", + "editModel": "Ubah", + "saveModel": "Simpan", + "cancelEdit": "Batal", + "resetModel": "Atur ulang perubahan lokal", + "hideModel": "Sembunyikan", + "restoreModel": "Pulihkan", + "hiddenModelsTitle": "Model tersembunyi", + "modelDisplayName": "Nama tampilan lokal", + "modelEnabled": "Diaktifkan secara lokal", + "localStateSaveFailed": "Gagal menyimpan pengaturan Radar lokal", + "guidedCombos": "Kombinasi terpandu", + "offers": "Penawaran", + "intel": "Informasi" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Kombinasi terpandu Radar", + "subtitle": "Buat fallback prioritas dari model gratis yang setara dan dikurasi oleh Radar.", + "backToRadar": "Kembali ke Radar", + "loading": "Memuat saran kombinasi...", + "familyLabel": "Keluarga model", + "modelsLabel": "Urutan prioritas", + "strategyReason": "Prioritas menggunakan anggaran gratis berulang terbesar terlebih dahulu, lalu beralih ke penyedia aktif lainnya.", + "generateButton": "Buat kombinasi", + "generating": "Sedang membuat...", + "alreadyCreated": "Sudah dibuat", + "created": "Kombinasi dibuat", + "noSuggestions": "Saat ini tidak ada keluarga model yang memenuhi syarat dan memiliki koneksi aktif ke setidaknya dua penyedia.", + "catalogRequired": "Sinkronkan katalog Radar terlebih dahulu untuk memuat keluarga model yang telah dikurasi.", + "loadFailed": "Gagal memuat saran kombinasi Radar.", + "createFailed": "Gagal membuat kombinasi. Periksa koneksi penyedia Anda dan coba lagi." }, "radarSetupPage": { "title": "Pengaturan Penyedia", @@ -13538,24 +13549,24 @@ }, "resilienceConnections": { "title": "Resiliensi Koneksi", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Koneksi Anda pulih secara otomatis", + "reassuranceDetail": "Biasanya tidak diperlukan tindakan. OmniRoute mengistirahatkan koneksi untuk sementara setelah terjadi kegagalan, lalu mencobanya kembali dengan aman.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Permintaan dapat dikirim", + "coolingDown": "Akan segera mencoba lagi", + "lockedOut": "Memerlukan perhatian Anda" }, "table": { "status": "Status", "provider": "Penyedia", "connectionId": "Koneksi", - "authType": "Auth", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "authType": "Autentikasi", + "backoffLevel": "Jeda percobaan ulang", + "cooldown": "Masa tunggu", "lastError": "Kesalahan Terakhir", "lockouts": "Penguncian", "healthy": "Sehat", - "coolingDown": "Cooldown", + "coolingDown": "Masa tunggu", "circuitOpen": "Sirkuit Terbuka", "recovering": "Memulihkan", "degraded": "Terdegradasi", @@ -13589,9 +13600,9 @@ "detail": { "title": "Detail Koneksi", "metadata": "Metadata", - "cooldown": "Cooldown", + "cooldown": "Masa tunggu", "lastError": "Kesalahan Terakhir", - "breaker": "Circuit Breaker", + "breaker": "Pemutus Sirkuit", "lockouts": "Penguncian Model", "rateLimitedUntil": "Dibatasi Kecepatan Sampai", "backoffLevel": "Level Backoff", @@ -13635,15 +13646,15 @@ "message": "Data sebagian: sumber tidak tersedia: {sources}", "source": { "database": "Basis Data", - "circuitBreaker": "Circuit Breaker", + "circuitBreaker": "Pemutus Sirkuit", "modelLockouts": "Penguncian Model", "count": "Jumlah Koneksi" } } }, "featureFlagCapabilityFilterEnabledDescription": "Tolak permintaan sebelum pengiriman ketika model target tidak memiliki kemampuan yang diperlukan (visi, alat, output terstruktur, jendela konteks). Melindungi permintaan penyedia tunggal langsung yang melewati filter kompatibilitas lapisan kombinasi.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Lewati pemeriksaan jendela konteks lokal dan token input maksimum OmniRoute untuk permintaan langsung ke satu model. Penyedia upstream tetap memberlakukan batas aktual mereka. Kompresi prompt dan batas token output tetap aktif.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Statistik pencarian dan pencarian terbaru hanya menghitung penyedia yang masih memiliki koneksi aktif (penyedia tanpa kunci seperti duckduckgo-free selalu dihitung). Jika dinonaktifkan, setiap baris pencarian yang dipertahankan dengan ID penyedia akan tetap disimpan.", "publicSystem": { "notFound": { "title": "Halaman tidak ditemukan", @@ -13655,7 +13666,7 @@ "error": { "title": "Kesalahan Server Internal", "description": "Terjadi kesalahan saat memproses permintaan Anda. Tim kami telah diberitahu dan sedang bekerja untuk memperbaikinya.", - "errorId": "Error ID: {id}", + "errorId": "ID kesalahan: {id}", "detailsAriaLabel": "Rincian kesalahan", "retryAriaLabel": "Coba muat ulang halaman tersebut", "tryAgain": "Coba Lagi", @@ -13699,11 +13710,11 @@ "maintenanceInfo": "Info Pemeliharaan", "service": "Layanan", "unknown": "tidak diketahui", - "notAvailable": "n/a", + "notAvailable": "tidak tersedia", "providersTracked": "Penyedia Dilacak", "circuitBreakerState": "Status Pemutus Sirkuit Penyedia", "lastUpdate": "Pembaruan terakhir: {timestamp}", - "uptimeMinutes": "{minutes}m", + "uptimeMinutes": "{minutes} mnt", "uptimeHoursMinutes": "{hours}j {minutes}m" }, "statusPages": { @@ -13882,7 +13893,7 @@ "close": "Tutup", "model": "Model", "key": "Kunci", - "defaultKey": "default", + "defaultKey": "bawaan", "clearConversation": "Hapus percakapan", "clear": "Bersihkan", "tabs": { @@ -13917,7 +13928,7 @@ "time": "Waktu", "latency": "Latensi", "clientIp": "IP Klien", - "proxy": "Proxy", + "proxy": "Proksi", "direct": "Langsung", "type": "Ketik", "level": "Tingkat", @@ -13958,7 +13969,7 @@ "compressionDescription": "Konfigurasikan pengaturan kompresi konteks untuk mengurangi penggunaan token dan biaya.", "relayTitle": "OmniRoute — Proksi Relay", "relayDescription": "Endpoint proksi relay tanpa server untuk infrastruktur AI Anda", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Inspektur Lalu Lintas — OmniRoute", "trafficInspectorDescription": "Monitor Panggilan LLM + debug lalu lintas HTTPS aplikasi mana pun" }, "conductor": { @@ -13967,7 +13978,7 @@ "runners": "Pelari", "tasks": "Tugas", "colName": "Nama", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "Status", "colTask": "Tugas", "colMode": "Mode", @@ -14044,7 +14055,7 @@ "sourceA2A": "A2A", "sourceConductor": "Konduktor", "sourceStale": "Kedaluwarsa sejak {since}", - "sourceOffline": "Offline", + "sourceOffline": "Luring", "sourceCollapse": "Ciutkan", "sourceExpand": "Perluas", "stateQueued": "Dalam antrean", @@ -14070,11 +14081,11 @@ "actionApprove": "Setujui rencana", "actionCancel": "Batal", "actionSeeInGraph": "Lihat di grafik", + "actionRepeat": "Ulangi", "actionDone": "Tindakan diterapkan", "actionFailed": "Tindakan gagal: {error}", "detailFailed": "Gagal memuat detail: {error}", "mirroredInA2A": "Dicerminkan di A2A", - "actionRepeat": "Ulangi", "repeatConfirm": "Klik lagi untuk konfirmasi", "repeatDone": "Proses baru dibuat", "repeatUnavailable": "Input asli tidak tersedia" @@ -14088,57 +14099,57 @@ "networkError": "Kesalahan jaringan — tidak dapat memperbarui pengaturan eksposur penyedia" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Penawaran pendukung", + "subtitle": "Diskon resmi, kredit, uji coba, dan manfaat mitra yang telah ditinjau dari Radar.", + "backToRadar": "Kembali ke Radar", + "loading": "Memuat penawaran...", + "refresh": "Segarkan penawaran", + "refreshing": "Menyegarkan...", + "loadFailed": "Kami tidak dapat menyegarkan penawaran. Cache lokal terakhir yang telah diverifikasi tetap disimpan.", + "empty": "Saat ini tidak ada penawaran aktif yang tersedia.", + "keyRequiredTitle": "Kunci pendukung diperlukan", + "keyRequiredDescription": "Penawaran merupakan manfaat langsung Radar. Tambahkan kunci pendukung yang sudah ada di layar Radar, verifikasi status kontributor Anda, atau dukung proyek untuk mendapatkannya.", + "contributorButton": "Saya seorang kontributor", + "supporterButton": "Dukung proyek", + "partnerBadge": "Mitra", + "officialBadge": "Resmi", + "conditionsLabel": "Ketentuan:", + "validUntil": "Berlaku hingga {date}", + "noExpiry": "Tidak ada masa berlaku yang diumumkan", + "openOffer": "Lihat penawaran", + "trialDays": "{days, plural, one {# hari} other {# hari}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", + "title": "Intel Radar", + "subtitle": "Peringkat ELO milik Radar dan pergerakan katalog berdasarkan fakta.", + "backToRadar": "Kembali ke Radar", + "loading": "Memuat Intel...", + "refresh": "Segarkan Intel", + "syncing": "Menyegarkan...", + "loadFailed": "Kami tidak dapat menyegarkan Intel. Cache lokal terakhir yang telah diverifikasi tetap disimpan.", + "empty": "Belum tersedia snapshot Intel yang telah diverifikasi.", + "supporterBadge": "Pendukung Radar", + "methodology": "Metodologi", + "eloMethod": "ELO, awal {initial}, K={factor}", + "freshness": "Kebaruan katalog", + "ageDays": "{days, plural, one {# hari yang lalu} other {# hari yang lalu}}", + "trend": "Tren katalog", + "modelDelta": "{current} model, +{added} / -{removed}", + "ranking": "Peringkat model", + "noRankings": "Belum ada perbandingan terkonfirmasi yang tersedia.", "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "category": "Kategori", + "rating": "Peringkat", + "matches": "Pertandingan", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Baru", + "aging": "Menua", + "stale": "Usang" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Bertumbuh", + "stable": "Stabil", + "shrinking": "Menyusut" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Permintaan melebihi jendela konteks penyedia" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference adalah Sahabat Open Source OmniRoute", + "description": "Gateway berperingkat berdasarkan biaya yang menjual kembali puluhan model terdepan melalui satu endpoint yang kompatibel dengan OpenAI — merutekan setiap permintaan ke penyedia termurah yang memenuhi syarat, tanpa pernah melebihi harga resmi.", + "cta": "Dapatkan Kunci API", + "partnerLinkNote": "Tautan mitra", + "dismissAriaLabel": "Tutup" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Nonaktifkan pembuatan varian tingkat pemikiran (misalnya -low, -medium, -high) dalam katalog /v1/models." } diff --git a/src/i18n/messages/ig.json b/src/i18n/messages/ig.json index 7ce2832f65..4452d5613b 100644 --- a/src/i18n/messages/ig.json +++ b/src/i18n/messages/ig.json @@ -679,7 +679,7 @@ "safeSearchOff": "Gbanyụọ Ọchụchọ Nchekwa", "nameHint": "Ndụmọdụ Aha", "debugToggle": "Mgbanwe Debug", - "embedding": "Embedding", + "embedding": "Ntinye", "issuesLabel": "Akara Nsogbu", "optionAny": "Nhọrọ Ọ bụla", "maxNestingDepth": "Oke Omimi Mkpokọta", @@ -701,13 +701,13 @@ "monitorAnomaliesAndHealth": "Nyochaa ihe ndị na-adịghị ahụkebe na ahụike sistemụ", "flaggedAnomalies": "Ihe Ndị Na-adịghị Ahụkebe Akara", "noAnomaliesDetected": "Achọpụtaghị ihe ọ bụla na-adịghị ahụkebe", - "apiKey": "API Key", + "apiKey": "Igodo API", "xpLastHour": "XP (1h)", "zScore": "Z-Score", "suspicious": "Na-enyo Enyo", "tokensCommunityServers": "Sava Obodo", "tokensServerNamePlaceholder": "Aha sava", - "tokensApiKeyPlaceholder": "API key", + "tokensApiKeyPlaceholder": "Igodo API", "tokensTokenBalance": "Ọnụego Token Fọdụrụ", "tokensSendTokens": "Zipụ Token", "tokensRecipientApiKeyId": "ID API Key nke Onye Nnata", @@ -832,8 +832,8 @@ "wizardStep3Validate": "Nyochaa izi ezi", "wizardStep4Cost": "Ọnụahịa & mepụta", "wizardProviderLabel": "Onye na-eweta ọrụ", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "wizardEndpointLabel": "Ebe njedebe", + "wizardModelLabel": "Ụdị", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (anyị ga-atụgharị ya)", "wizardDropOrPick": "Dobe faịlụ ebe a ma ọ bụ pịa iji họrọ", @@ -978,7 +978,7 @@ "batchTimelineCancelling": "Na-akagbu", "batchTimelineCancelled": "Akagburu", "batchTokenUsage": "Ojiji Token", - "batchMetadata": "Metadata", + "batchMetadata": "Metada", "batchFileContents": "Ọdịnaya Faịlụ", "batchFileUsedByCount": "E ji ya na {count, plural, one {# ogbe} other {# ogbe}}", "batchFilePreview": "Nhụchalụ", @@ -992,16 +992,20 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Kpọsa id mirror claude/<provider>/<model> na /v1/models ka nchọpụta model nke gateway Claude Code depụta model ndị na-abụghị Claude. Ịdọ aka ná ntị: nke a na-eme ka ọnụ ọgụgụ ihe dị na katalọgụ bụrụ okpukpu abụọ maka client niile mgbe agbanyere ya n'ụwa niile.", "featureFlagNoThinkingAliasEnabledDescription": "Mgbanwe ukwu maka alias gateway no-think/<provider>/<model>. Agbanye (ndabara): /v1/models na-akpọsa ụdị na-adịghị eche echiche maka model Claude ọ bụla tozuru etozu nke nwere ike iche echiche, ma id no-think/ e zigara na arịrịọ ga-alaghachi na model n'ezie ebe a kwụsịrị reasoning. Agbanyụọ: a gaghị akpọsa ụdị ọ bụla, a ga-ewerekwa id no-think/ dịka id model ọ bụla ọzọ a na-amaghị. Nhọrọ ịbanye/ịpụ ModelSpec.noThinkingAlias nke model ọ bụla ka na-emetụta mgbe nke a dị ọkụ.", "featureFlagChatVirtualLanesEnabledDescription": "Gbanye lane nnabata virtual na-agbanwe onwe ya maka tenant ọ bụla maka iziga na provider (#9654): mgbawa arịrịọ nke otu tenant agaghịzi eme ka nke tenant ọzọ nweta 503. Env var OMNIROUTE_CHAT_VIRTUAL_LANES na-akarị mgbanwe dashboard a; mgbanwe ga-amalite ịrụ ọrụ mgbe e bidogharịrị server.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Ibe ndị na-enye ọrụ na dashboard: gosi akara Free naanị na signal ndị onye na-enye ọrụ na-akwado — nke a na-ewepụ usoro ntule dabere n’aha ngosi, oghere free ndị na-abụghị boolean, na mgbakwunye :free n’aha ndị na-enye ọrụ e debanyere aha nke na-enweghị ọkwa efu edepụtara. Mgbe agbanyụrụ ya, a ga-edobe iwu akara e ji eme ihe kemgbe.", + "featureFlagProxySkipRecentlyFailedDescription": "Ọdọ proxy na ntụgharị opencode nke akaụntụ ọ bụla na-akwụsị iji proxy dara ugbu a ọzọ (nnyocha TCP a jụrụ, ma ọ bụ nzaghachi 429 e nwetara site na ya) ruo oge nke usoro ọ bụla nke na-amụba okpukpu abụọ mgbe ọdịda ahụ megharịrị, ruo n'ókè kachasị. A naghị ede ọkwa proxy ọ bụla; mgbe e wepụrụ ndị niile a ga-ahọrọ n'akụkụ, nhọrọ ahụ anaghị agbanwe. A gbanyụrụ ya na ndabara: usoro nhọrọ bụ kpọmkwem ntụgharị nkịtị.", + "featureFlagProxyPoolEgressObservationDescription": "Gosi, n'okpuru ọdọ proxy na dashboard, IP ọpụpụ ole a hụrụ jere ndị otu ya ozi n'ime awa 24 gara aga, njikọ ole jiri ha, na ọnụ ọgụgụ kachasị a hụrụ n'azụ otu IP. Ọ bụ naanị maka ọgụgụ, a na-agbakọ ya site na ndekọ proxy, a naghị eji ya eme routing. A gbanyụrụ ya na ndabara: editọ ọdọ ahụ anaghị agbanwe, route nlele ahụ na-azaghachi null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "N'oge nyocha ahụike proxy, kwe ka nyocha ebumnuche jụrụ (401/403/429: proxy ahụ zigara ya, ebe njedebe ahụ jụrụ IP ọpụpụ a) tọgharịa usoro ọdịda na-aga n'ihu nke proxy ahụ, dịka nyocha e jere ozi. A gbanyụrụ ya na ndabara: ọjụjụ na-anọpụ iche ma na-edobe usoro ahụ. 5xx ka na-enweghị nkwubi okwu n'ọnọdụ ọ bụla, ọjụjụ anaghị ewepụ, gbanyụọ, ma ọ bụ mee ka proxy rụọ ọrụ ọzọ.", "sidebar": { "home": "Ụlọ", - "dashboard": "Dashboard", + "dashboard": "Ogwe njikwa", "providers": "Ndị Na-enye Ọrụ", "combos": "Combo", "usage": "Ojiji", "analytics": "Nnyocha Data", "costs": "Ọnụ Ahịa", "health": "Ahụike", - "proxy": "Proxy", + "proxy": "Onye nnọchite anya", "limits": "Oke Kwota", "cliTools": "Ngwaọrụ CLI", "media": "Mgbasa Ozi", @@ -1025,7 +1029,7 @@ "embeddedServices": "Ọrụ agbakwunyere", "embeddedServicesSubtitle": "Ọrụ mpaghara ndị a na-ahọrọ", "logs": "Ndekọ", - "webhooks": "Webhooks", + "webhooks": "Nko weebụ", "webhooksSubtitle": "Nweta ọkwa maka ihe omume", "logExport": "Mbupụ ndekọ", "logExportSubtitle": "Zipụ ndekọ oku", @@ -1096,7 +1100,7 @@ "faviconPreview": "Nlele Favicon", "changelog": "Ndekọ Mgbanwe", "contextSection": "Ọnọdụ & Cache", - "contextCaveman": "Caveman", + "contextCaveman": "Nwoke ọgba", "contextRtk": "RTK", "contextCombos": "Ngwakọta Injin", "contextLite": "Dị Mfe", @@ -1314,7 +1318,7 @@ "noResults": "Enweghị nsonaazụ" }, "webhooks": { - "title": "Webhooks", + "title": "Nko weebụ", "description": "Hazie ọkpụkpọ azụ HTTP maka ihe omume sistemụ.", "configuredWebhooks": "Webhooks Ahaziri", "configuredWebhooksDesc": "Jikwaa ebe nnyefe, ihe omume edebanyere aha, ọnọdụ, na nnwale izipu.", @@ -1441,7 +1445,7 @@ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "Token HTTP API e nwetara n’aka @BotFather mgbe ị na-emepụta bot gị.", "chatId": "ID Mkparịta ụka Telegram / Ọwa", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 ma ọ bụ @channelname", "chatIdHint": "Ihe njirimara ọnụọgụ pụrụ iche ma ọ bụ aha njirimara ọha nke mkparịta ụka/ọwa ahụ.", "tutorial": "Otu esi ahazi webhook Telegram:" } @@ -1721,7 +1725,7 @@ "costs": "Ọnụ ahịa", "health": "Ahụike", "runtime": "Oge ịrụ ọrụ", - "webhooks": "Webhooks", + "webhooks": "Nko weebụ", "home": "Ụlọ", "activity": "Ihe omume", "agentSkills": "AgentSkills", @@ -1741,7 +1745,7 @@ "chaos": "Ọgbaaghara", "cloudAgents": "Ndị nnọchi anya Cloud", "live": "Kpọmkwem", - "studio": "Studio", + "studio": "Ụlọ ihe nkiri", "aggressive": "Kpụ ọkụ n'ọnụ", "caveman": "Onye ọgba", "ccr": "CCR", @@ -1811,7 +1815,7 @@ "topologyLegendRecent": "Nke na-adịbeghị anya", "topologyLegendError": "Njehie", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", + "apiKeyLabel": "Igodo API", "requestsShort": "Arịrịọ {count}", "providerModelsTitle": "{provider} - Model", "copiedModel": "Edetuo: {model}", @@ -1937,7 +1941,7 @@ "chartByApiKey": "Site na Igodo API", "unknownApiKey": "Igodo API amaghị", "chartModelBreakdown": "Nkọwa Model", - "chartModel": "Model", + "chartModel": "Ụdị", "chartProvider": "Onye Na-enye Ọrụ", "chartProviderBreakdown": "Nkọwa Onye Na-enye Ọrụ", "chartDate": "Ụbọchị", @@ -2184,7 +2188,7 @@ "routeRuntimeScoreNow": "Akara runtime ugbu a", "routeWouldSelectNow": "Ihe a ga-ahọrọ ugbu a", "routeNoRecomputeCandidates": "Enweghị ike ịtụgharị mgbakọ ọkwa ndị ndoro-ndoro combo maka arịrịọ a.", - "runtime": "Runtime", + "runtime": "Oge ọrụ", "routeTopNow": "Nke kachasị elu ugbu a", "routeFetchLogsFailed": "Enweghị ike iweta ndekọ arịrịọ", "routeExplainFailed": "Enweghị ike ịkọwa ụzọ", @@ -2203,10 +2207,10 @@ "model": "Ụdị", "account": "Akaụntụ", "connection": "Njikọ", - "combo": "Combo", + "combo": "Ngwakọta", "routeStep": "Nzọụkwụ", "tokens": "Token", - "notAvailable": "n/a", + "notAvailable": "ọ dịghị", "routeTokenCounts": "{input} mbata · {output} ọpụpụ", "routeEvidence": "Ihe akaebe", "routeFactors": "Ihe ndị na-emetụta ịhọrọ ụzọ", @@ -2324,7 +2328,7 @@ "dayWed": "Wenez", "dayThu": "Tọọz", "dayFri": "Fraị", - "daySat": "Sat", + "daySat": "Satọde", "allowAll": "Kwe Ka Ihe Niile Rụọ Ọrụ", "restrict": "Machibido", "allowAllInfo": "Igodo a nwere ike ịnweta model niile dị.", @@ -2628,7 +2632,7 @@ "scrapePreview": "Nlele mbụ", "scrapeRaw": "Nke mbụ", "scrapeContentTruncated": "(ebelatara, lee nke mbụ)", - "scrapeMetadata": "Metadata", + "scrapeMetadata": "Data nkọwa", "scrapeProvider": "Onye na-eweta ọrụ", "scrapeSize": "Nha", "scrapeEmptyState": "Tinye URL iji wepụta ọdịnaya ya", @@ -2776,9 +2780,9 @@ "cliRuntimeDetected": "Achọpụtara CLI runtime, ọ dịkwa njikere", "cliFoundNotRunnable": "Achọpụtara CLI mana enweghị ike ịgba ya{reason}", "cliRuntimeNotDetected": "Achọpụtaghị CLI runtime", - "binary": "Binary", + "binary": "Ọnụọgụ abụọ", "configPath": "Ụzọ config", - "configPathShort": "Config", + "configPathShort": "Nhazi", "failedCheckRuntimeStatus": "Enweghị ike ịlele ọnọdụ runtime.", "copy": "Detuo", "copied": "Edetuo ya", @@ -2917,19 +2921,19 @@ "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "xAI Grok Build TUI, onye nnọchi anya ide koodu nwere nkwado maka onye na-eweta ọrụ ahaziri iche", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Factory Droid Onye enyemaka AI", + "openclaw": "Open Claw Onye enyemaka AI", + "cline": "Cline Onye enyemaka ide koodu AI CLI", + "kilo": "Kilo Code Onye enyemaka AI CLI", "qwen": "Alibaba Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", + "continue": "Continue Onye enyemaka AI", "opencode": "OpenCode, onye nnọchi anya AI maka ide koodu (Terminal)", "kiro": "Amazon Kiro — IDE nke AI na-akwado", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", "amp": "Sourcegraph Amp, CLI enyemaka ide koodu", - "hermes": "Hermes AI Terminal Assistant", + "hermes": "Hermes Onye enyemaka AI nke temịnal", "hermes-agent": "Hermes Agent (nke Nousresearch) - AI ọdụọrụ dị elu nwere nkwado ọtụtụ ụdịdị (nkesa ọrụ, ọhụụ, mkpakọ, wdg.)", "custom": "Ihe nrụpụta nhazi maka CLI ma ọ bụ SDK izugbe dakọtara na OpenAI", "aider": "Aider AI, CLI maka imekọ ihe ọnụ n'ide mmemme, nwere URL ntọala dakọtara na OpenAI", @@ -3218,12 +3222,12 @@ "timeout": "Oge Njedebe (ms)", "healthcheck": "Nlele Ahụike", "priority": "Ihe Mbụ", - "fallback": "Fallback", + "fallback": "Nhọrọ ndabere", "roundRobin": "Ntụgharị n'Usoro", "random": "N'Enweghị Usoro", "leastLatency": "Oge Nchere Kachasị Nta", "comboName": "Aha Ngwakọta", - "comboNamePlaceholder": "my-combo", + "comboNamePlaceholder": "ngwakọta-m", "comboDescription": "Nkọwa", "comboDescriptionPlaceholder": "Ihe edeturu nhọrọ na-akọwa ngwakọta a", "deleteConfirm": "Hichapụ ngwakọta a?", @@ -3270,7 +3274,7 @@ "strictRandomDesc": "Gwakọta kaadị — na-eji model ọ bụla otu ugboro tupu ịgwakọta ha ọzọ", "fusion": "Njikọta", "fusionDesc": "Na-ezigara model panel niile prompt n'otu oge, mesịa judge model achịkọta otu azịza ikpeazụ", - "fusionJudgeModel": "Judge model", + "fusionJudgeModel": "Ụdị nlere ikpe", "fusionJudgeModelHelp": "Model nke na-achịkọta azịza panel ka ọ bụrụ otu nzaghachi ikpeazụ. Hapụ ya oghere iji model panel mbụ.", "fusionMinPanel": "Panel kacha nta", "fusionMinPanelHelp": "A chọrọ azịza panel gara nke ọma tupu e nye ụdị ndị na-egbu oge ohere mgbatị (ndabara 2).", @@ -3311,7 +3315,7 @@ "liveSelectComboPlaceholder": "— họrọ combo —", "liveTargetCount": "{count, plural, one {# ebumnuche} other {# ebumnuche}}", "liveSingle": "Otu", - "liveFleet": "Fleet", + "liveFleet": "Ìgwè", "playgroundStatusAvailable": "Dị", "playgroundStatusNoQuota": "Enweghị oke", "playgroundStatusDegraded": "Arụghị ọrụ nke ọma", @@ -3715,8 +3719,8 @@ "reviewName": "Aha", "reviewStrategy": "Atụmatụ", "reviewSteps": "Nzọụkwụ", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", + "reviewAccounts": "Akaụntụ", + "reviewProviders": "Ndị na-eweta ọrụ", "reviewComboRefs": "Ntụaka Combo", "reviewAdvanced": "Ntọala Dị Elu", "reviewAgentFlags": "Ọkọlọtọ Agent", @@ -3832,7 +3836,7 @@ "outOfRequests": "n'ime arịrịọ {total}", "costByApiKey": "Ọnụahịa dịka API Key", "costByAccount": "Ọnụahịa dịka Akaụntụ", - "apiKeyName": "API Key", + "apiKeyName": "Igodo API", "account": "Akaụntụ", "requests": "Arịrịọ", "cost": "Ọnụahịa", @@ -3855,7 +3859,7 @@ "costExplorerDescription": "Nyochaa mmefu dịka onye na-eweta, ụdịdị, API key, akaụntụ, ma ọ bụ ọkwa ọrụ.", "groupProvider": "Onye na-eweta", "groupModel": "Ụdịdị", - "groupApiKey": "API Key", + "groupApiKey": "Igodo API", "groupAccount": "Akaụntụ", "groupServiceTier": "Ọkwa Ọrụ", "serviceTierFast": "Ọsọ Ọsọ", @@ -4014,9 +4018,9 @@ "messagesApiDesc": "Usoro Anthropic Messages API izizi maka ndị na-eweta ọrụ dakọtara na Claude", "imageEdits": "Ndezigharị Onyonyo", "imageEditsDesc": "Jiri AI dezie ma gbanwee onyonyo ndị dị adị (inpainting, outpainting, variations)", - "batchApi": "Batch API", + "batchApi": "API ogbe", "batchApiDesc": "Hazie nnukwu ìgwè arịrịọ n'ụzọ asynchronous (dakọtara na OpenAI)", - "filesApi": "Files API", + "filesApi": "API faịlụ", "filesApiDesc": "Bulite ma jikwaa faịlụ maka nhazi n'ìgwè", "videoGeneration": "Mmepụta Vidiyo", "videoDesc": "Jiri ụdị AI dịka ComfyUI na Stable Video Diffusion mepụta vidiyo.", @@ -4045,7 +4049,7 @@ "tailscaleUrlNotice": "Ọ na-eji adreesị Tailscale .ts.net gị. Enwere ike ịchọ nbanye na nkwado Funnel mgbe mbụ ị na-eji ya.", "tailscaleTitle": "Tailscale Funnel", "tailscaleNeedsLoginHint": "Jiri Tailscale nyochaa njirimara igwe a, wee gbanye Funnel.", - "tailscaleBinaryPath": "Binary: {path}", + "tailscaleBinaryPath": "Faịlụ ọnụọgụ abụọ: {path}", "tailscaleLastError": "Njehie ikpeazụ: {error}", "tailscaleInstallTitle": "Wụnye Tailscale", "tailscaleInstallIntro": "Ọ na-etinye Tailscale na igwe a ma kwadebe OmniRoute iji gbanye Funnel.", @@ -4123,7 +4127,7 @@ "vscodeAliasDescriptionError": "A na-egosi URL ndị nwere akara nnọchi n'ihi na enweghị ike ibubata igodo CLI na nnọkọ a.", "vscodeAliasDescriptionLoading": "Na-ebubata igodo CLI. A ga-egosi URL ndị nwere akara nnọchi ruo mgbe igodo dị.", "vscodeAliasDescriptionPlaceholder": "A na-egosi URL ndị nwere akara nnọchi. Mepụta ma ọ bụ mee ka igodo API rụọ ọrụ na CLI Tools iji dochie TOKEN.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "Ngwaọrụ CLI", "vscodeAliasBaseLabel": "Isi VS Code", "vscodeAliasModelsLabel": "Ụdị VS Code", "vscodeAliasChatLabel": "Mkparịta ụka VS Code", @@ -4388,20 +4392,20 @@ "editMemory": "Dezie ncheta", "editModal": { "title": "Dezie Ncheta", - "metadataLabel": "Metadata (JSON)", + "metadataLabel": "Metadaata (JSON)", "metadataInvalid": "JSON ezighi ezi", "saveFailed": "Enweghị ike ichekwa ncheta" }, "embedding": { "autoLabel": "Akpaka", "autoDesc": "Na-eji nke kacha mma dị: remote provider > static > transformers", - "remoteLabel": "Remote provider", + "remoteLabel": "Onye na-eweta ọrụ dị anya", "remoteDesc": "Na-eji embedding site na provider API (API key dị mkpa)", - "staticLabel": "Static local (potion)", + "staticLabel": "Nke mpaghara na-adịghị agbanwe agbanwe (potion)", "staticDesc": "Local embedding na-enweghị WASM ma ọ bụ external dependencies", "transformersLabel": "Transformers.js (MiniLM)", "transformersDesc": "Local embedding site na @huggingface/transformers (~400MB RAM)", - "providerModelLabel": "Provider / Model", + "providerModelLabel": "Onye na-eweta ọrụ / Ụdị", "noRemoteProviders": "Enweghị providers nwere API key ahaziri", "selectProviderModel": "Họrọ model", "customBaseUrlLabel": "Custom base URL (nhọrọ)", @@ -4429,7 +4433,7 @@ "reindexFailed": "Mmalite itinye index ọzọ dara", "keywordLabel": "Okwu ọchụchọ (FTS5)", "keywordReason": "Ọchụchọ okwu dị mgbe niile", - "embeddingLabel": "Embedding", + "embeddingLabel": "Ntụnye embedding", "vectorStoreLabel": "Ebe Nchekwa Vector", "qdrantLabel": "Qdrant", "rerankLabel": "Nhazigharị ọkwa", @@ -4470,7 +4474,7 @@ "simulate": "Mee nnwale", "resultsTitle": "Nsonaazụ {count}", "resolutionTitle": "Mkpebi ọchụchọ", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Ntụnye embedding", "resolutionStore": "Ebe nchekwa vector", "resolutionStrategy": "Usoro ejiri", "rerankApplied": "Etinyere nhazi ọzọ", @@ -4483,7 +4487,7 @@ "previous": "Nke gara aga", "procedural": "Usoro omume", "qdrant": { - "title": "Qdrant (Vector Store Tier 2)", + "title": "Qdrant (Ebenụlọ Nchekwa Vekta 2)", "description": "Njikọ Qdrant nhọrọ maka ọchụchọ semantic nwere ike ịgbasa", "enableLabel": "Gbanyụọ Qdrant", "enableDesc": "Mgbe agbanyere ya, a na-eji Qdrant dị ka ebe nchekwa vector bụ isi", @@ -4517,7 +4521,7 @@ "cleanNow": "Hichapụ ugbu a", "cleanupSuccess": "E wepụrụ point {count}", "cleanupFailed": "Nhichapụ ahụ dara", - "hostLabel": "Host", + "hostLabel": "Onye nnabata", "collectionLabel": "Nchịkọta" }, "rerank": { @@ -4646,7 +4650,7 @@ "uptime": "Oge Ọ Na-arụ Ọrụ", "memory": "Ebe Nchekwa", "memoryRss": "Ebe Nchekwa (RSS)", - "heap": "Heap", + "heap": "Ikpo", "cpu": "CPU", "database": "Ebe Nchekwa Data", "version": "Ụdị", @@ -4837,7 +4841,7 @@ "pid": "PID", "lastIntercept": "Njide ikpeazụ", "target": "Ebumnuche", - "host": "Host", + "host": "Onye nnabata", "localPort": "Ọdụ ụgbọ mmiri mpaghara", "endpoints": "Ebe njedebe", "enabled": "Agbanyere", @@ -4916,7 +4920,7 @@ "activeStageSendingToProvider": "Na-eziga na upstream", "activeStageProviderResponseStarted": "Nzaghachi upstream amalitela", "count": "Ọnụọgụ", - "payloads": "Payloads", + "payloads": "Ibu ozi", "viewPayloads": "Lelee", "activeCount": "{count} na-arụ ọrụ", "clientPayload": "Payload arịrịọ onye ahịa", @@ -5248,7 +5252,7 @@ "testSummary": "{passed}/{total} gafere, {failed} dara", "nameLabel": "Aha", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "URL ntọala", "apiTypeLabel": "Ụdị API", "prefixHint": "Achọrọ ya. Prefix pụrụ iche maka aha model.", "nameHint": "Achọrọ ya. Akara aha dị mfe nghọta maka node a.", @@ -5879,7 +5883,7 @@ "m365TierLabel": "Ọkwa Copilot", "m365TierHint": "Họrọ akụkụ Microsoft 365 Copilot njikọ a ga-eji. Individual bụ BizChat nke ndị ahịa ndabara; Education na Enterprise (ọrụ) na-eme ka e jiri akụkụ tenant ha.", "m365TierIndividualOption": "Individual (ndabara)", - "m365TierEduOption": "Education", + "m365TierEduOption": "Agụmakwụkwọ", "m365TierEnterpriseOption": "Enterprise / Ọrụ", "tierOverrideLabel": "Ikegharị ọkwa", "tierOverrideAuto": "Akpaka (nhazi ụzọ na-ekpebi)", @@ -6016,7 +6020,7 @@ "providerDetailFastDefaultLabel": "Fast ndabara", "providerDetailBrowserManualConnect": "Jikọọ site na browser/jiri aka", "providerDetailAuthUrl": "URL nkwenye", - "providerDetailCallbackUrl": "Callback URL", + "providerDetailCallbackUrl": "URL ọkpụkpọ azụ", "providerDetailValidClaudeCredentialsFile": "Faịlụ nzere Claude ziri ezi", "providerDetailPathAutoDetectedAllOs": "A na-achọpụta ụzọ ahụ na-akpaghị aka dịka OS si dị (Linux/Mac/Windows).", "providerDetailMyClaudeAccountPlaceholder": "Akaụntụ Claude m", @@ -6363,15 +6367,15 @@ "checkWebToken": "Lelee token", "huggingchatLabel": "HuggingChat (N'efu)", "huggingchatDesc": "Nkata LLM n'efu site na huggingface.co/chat", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Weebụ Poe", "poeWebDesc": "Nkata nwere ọtụtụ model site na poe.com", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Weebụ Venice", "veniceWebDesc": "Nkata AI na-elekwasị anya na nzuzo", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "Weebụ v0 Vercel", "v0VercelWebDesc": "Mmepụta koodu AI site na v0.dev", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Weebụ Kimi", "kimiWebDesc": "Nkata ndị ahịa Moonshot AI site na www.kimi.com (mba ụwa, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Weebụ Dola", "doubaoWebDesc": "Nkata AI nke ByteDance site na dola.com", "overrideBaseUrlAdvanced": "Nke dị elu: gbanwee base URL", "overrideBaseUrlHint": "Nke dị elu: tụọ provider arụnyere n'ime a aka na endpoint ahaziri iche. Hapụ ya oghere iji jiri nke ndabara.", @@ -6482,7 +6486,7 @@ "security": "Nchedo", "appearance": "Ọdịdị", "routing": "Nduzi Ụzọ", - "cache": "Cache", + "cache": "Nchekwa nwa oge", "resilience": "Ike Iguzogide Nsogbu", "description": "Nkọwa", "enable": "Mee Ka Ọ Rụọ Ọrụ", @@ -6775,9 +6779,9 @@ "themeBlue": "Anụnụ anụnụ", "themeRed": "Uhie", "themeGreen": "Akwụkwọ ndụ akwụkwọ ndụ", - "themeViolet": "Violet", + "themeViolet": "Pọpụl", "themeOrange": "Oroma", - "themeCyan": "Cyan", + "themeCyan": "Acha anụnụ anụnụ ndụ", "whitelabeling": "Njirimara ika", "whitelabelingDesc": "Hazie aha na akara ngwa ahụ", "appName": "Aha Ngwa", @@ -6909,7 +6913,7 @@ "healthcheckLatency": "Oge nzaghachi", "proxyDocumentationScopeTitle": "Mkpebi oke proxy", "proxyDocumentationScopeDescBefore": "OmniRoute na-ekpebi proxy ọpụpụ n'usoro mkpa a:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "ngwakọta → akaụntụ → onye na-enye ọrụ → zuru ụwa ọnụ", "proxyDocumentationScopeDescAfter": ". Oke kachasị kpọmkwem na-emeri.", "proxyDocumentationAddTitle": "Ịgbakwunye proxy ahaziri", "proxyDocumentationAddDescBefore": "Gaa na", @@ -6931,7 +6935,7 @@ "denoRelayTokenHint": "Token nzukọ (prefix ddo_) sitere na console.deno.com → Organization → Settings → Organization Tokens. A na-eji ya otu ugboro maka mbunye, anaghịkwa echekwa ya ma ọlị.", "denoRelayOrgDomainHint": "Ngalaba ndabara nke nzukọ Deno Deploy gị (dịka acme.deno.net). A ga-enweta relay ahụ na https://<app-name>.<org-slug>.deno.net.", "proxyFreePoolFilterProtocol": "Iyo site na protocol", - "proxyFreePoolProtocol": "Protocol", + "proxyFreePoolProtocol": "Usoro nkwukọrịta", "proxyFreePoolCountryPlaceholder": "Mba (dịka US)", "proxyFreePoolFilterCountry": "Iyo site na mba", "proxyFreePoolMinQualityPlaceholder": "Ogo kacha nta", @@ -6944,7 +6948,7 @@ "proxyFreePoolAddSelected": "Tinye ndị ahọpụtara na pool", "proxyFreePoolAddVisible": "Tinye ndị niile a na-ahụ anya na pool", "proxyFreePoolSource": "Isi mmalite", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Onye nnabata:Ọdụ ụgbọ mmiri", "proxyFreePoolType": "Ụdị", "proxyFreePoolCountry": "Mba", "proxyFreePoolQuality": "Ogo", @@ -7074,7 +7078,7 @@ "stickyLimitDesc": "Ọnụọgụ oku maka akaụntụ ọ bụla tupu ịgbanwee mgbe ndabere akaụntụ zuru ụwa ọnụ na-eji Round Robin", "routingStrategyTitle": "Atụmatụ Nduzi", "routingStrategySubtitle": "Dakọtara na 9router: Round Robin nke akaụntụ, oke ịrapara, na ntụgharị ngwakọta", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Ntugharị n'usoro", "accountRoundRobinDesc": "Na-agagharị n’akaụntụ dị iche iche iji kesaa ibu", "comboRoundRobin": "Round Robin nke Ngwakọta", "comboRoundRobinDesc": "Na-agagharị n’etiti ebe ngwakọta na-aga kama ịmalite mgbe niile na nke mbụ", @@ -7564,7 +7568,7 @@ "qdrantSaved": "Echekwara nhazi", "qdrantSaveError": "Enweghị ike ichekwa nhazi", "qdrantHostHint": "Etinyela port. Ọmụmaatụ: 127.0.0.1 ma ọ bụ http://qdrant", - "qdrantPort": "Port", + "qdrantPort": "Ọdụ ụgbọ mmiri", "qdrantPortHint": "Ndabara Qdrant: 6333", "qdrantCollectionHint": "Ebe a ga-echekwa isi ebe nchekwa.", "qdrantEmbeddingModel": "Ụdị embedding", @@ -7811,7 +7815,7 @@ "redisLauncherStop": "Kwụsị", "redisLauncherLaunching": "Na-amalite...", "redisLauncherLaunch": "Malite Redis", - "redisLauncherContainer": "Container", + "redisLauncherContainer": "Konteena", "redisLauncherRunning": "Na-arụ ọrụ", "redisLauncherReachable": "Enwere ike iru ya", "redisLauncherError": "Njehie: {message}", @@ -7927,7 +7931,7 @@ "resilienceEnableServerSideWait": "Kwado nchere n'akụkụ sava", "resilienceMaximumRetries": "Ọnụọgụ nnwale ọzọ kachasị elu", "resilienceMaximumWaitPerRetry": "Oge nchere kachasị elu maka nnwale ọ bụla ọzọ", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "Ahịa SkillsMP", "memorySkillsFailedToSave": "Ịchekwa adaala", "memorySkillsApiKey": "Igodo API", "memorySkillsActiveSkillsProvider": "Onye na-enye Skills na-arụ ọrụ", @@ -7949,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Bubata akaụntụ", "payloadRulesTitle": "Iwu Payload", "payloadRulesDesc": "Hazie mgbanwe payload arịrịọ dịka model na protocol si dị. A na-echekwa mgbanwe na ntọala ma na-ebunye ha ozugbo n’ime runtime mgbe echekwara ha.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "ndabara", "payloadRuleDefaultDesc": "Na-etinye params naanị mgbe target path adịghị na payload a na-ezipụ.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "dochie", "payloadRuleOverrideDesc": "Na-amanye values ka ha banye na payload, dochie ihe ọ bụla dịbu na path ahụ.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "nyo", "payloadRuleFilterDesc": "Na-ewepụ params egbochiri na payload tupu ezipụ arịrịọ upstream.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Dị ka default, mana a na-ebu ụzọ tụgharịa string values dịka JSON mgbe o kwere omume. A na-anabatakwa legacy input alias default-raw mgbe a na-echekwa.", @@ -7996,11 +8000,11 @@ "responsesStateModePreserve": "Chekwaa", "responsesStateHint": "Akpaka na-ewepụ previous_response_id belụsọ ma njikọ enyere nchekwa OpenAI Responses aka n'ụzọ doro anya. Wepụ bụ nhọrọ kacha dị nchebe maka ndị ahịa na-enweghị ọnọdụ dịka VS Code Custom Endpoint; mgbe ahụ, ọnọdụ mkparịta ụka ga-adabere na onye ahịa iziga akụkọ zuru ezu.", "responsesStateSaveError": "Imelite ntọala ọnọdụ Responses kụrụ afọ n'ala", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Ọkwa Ọsọ Codex", "codexFastTierDesc": "Tinye service_tier=priority n'ụwa niile maka arịrịọ OpenAI Codex.", "codexFastTierHint": "Mgbe agbanyere ya, OmniRoute na-agbakwunye service_tier=priority na arịrịọ Codex ndị a na-ezipụ maka njikọ ndị na-akọwabeghị tier. Priority tier chọrọ igodo OpenAI Enterprise API ma ọ bụ ụzọ Codex nke ChatGPT-auth; ụdị igodo ndị ọzọ ga-enweta njehie metụtara tier site na OpenAI. Ntọala nke njikọ ọ bụla dị na ibe onye na-enye Codex na-ebute ụzọ.", "codexFastTierSaveError": "Imelite ntọala Codex Fast Tier kụrụ afọ n'ala", - "codexAutoPingTitle": "Codex Quota Auto-Ping", + "codexAutoPingTitle": "Nnyocha-akpaaka Oke Codex", "codexAutoPingDesc": "Họrọ ịbanye maka njikọ ọ bụla: ọ na-eziga obere arịrịọ ozugbo windo nnọkọ Codex malitegharịrị ka ọ ghara ịdị oyi mgbe ịchọrọ ya.", "codexAutoPingWarning": "Ọ na-eri obere oke Codex n'ezie na ping ọ bụla. Agbanyụghị ya na ndabara — gbanye ya naanị maka njikọ ndị ị na-adabere na ha nke ọma.", "codexAutoPingSaveError": "Imelite ntọala Codex Auto-Ping kụrụ afọ n'ala", @@ -8012,7 +8016,7 @@ "codexFastTierModelsLabel": "Ụdịdị Fast-tier", "codexFastTierModelsHint": "Naanị ụdịdị ndị a họọrọ ga-enweta service_tier mgbe agbanyere Fast Tier.", "codexFastTierModelCheckbox": "Gbanye Fast Tier maka {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Ọnọdụ Ọsọ Claude", "claudeFastModeDesc": "Tinye arịrịọ Claude ndị ahọpụtara na Anthropic Fast Mode (speed:\"fast\").", "claudeFastModeHint": "Anthropic anaghị akwado Fast Mode n'ụzọ gọọmentị maka ndị ahịa ụdị SDK. Mgbe agbanyere ya, OmniRoute na-ebufe nkụnyeisi X-CPA-Force-Fast-Mode ka ụdị CLIProxyAPI ejikọtara nwee ike ịhọrọ ịbanye site n'ịṅomi entrypoint. Naanị ụdịdị Opus ndị edepụtara ka nyocha dị n'akụkụ onye ahịa nke Anthropic na-achịkwa. A ka na-amanye tier ndenye aha, atụmatụ Max, na nguzozi kredit Fast Mode n'akụkụ sava — Anthropic nwere ike iweghachi out_of_credits ọbụlagodi mgbe agbanyere nhọrọ ahụ.", "claudeFastModeModelsLabel": "Etinyere na ụdịdị ({count})", @@ -8230,7 +8234,7 @@ "modalityBridgeAudioTab": "Ọdịyo", "modalityBridgeVideoTab": "Vidio", "modalityBridgeSubTabsAria": "Akụkụ Modality Bridge", - "modalityBridgeVisionTitle": "Vision Bridge", + "modalityBridgeVisionTitle": "Njikọ Ọhụụ", "modalityBridgeVisionDesc": "Jiri vision model kọwaa onyonyo, wee gaa n'ihu na text model onye ọrụ họọrọ.", "modalityBridgeMode": "Ụdị Ọrụ", "modalityBridgeModeAuto": "Akpaaka (a tụrụ aro)", @@ -8239,7 +8243,7 @@ "modalityBridgeModeDescribeHint": "Model ị họọrọ na-aza mgbe niile; a na-eji nkọwa ederede dochie onyonyo.", "modalityBridgeModeReroute": "Na-eduzigharị mgbe niile", "modalityBridgeModeRerouteHint": "Ziga arịrịọ dum na vision-capable model kachasị mma (ọ bụrụ na ọ dịghị nke a pụrụ iji, ọ ga-alaghachi na ịkọwa ya).", - "modalityBridgeVisionModel": "Vision model", + "modalityBridgeVisionModel": "Ụdị ọhụụ", "modalityBridgeVisionModelAuto": "Akpaaka (nke kachasị mma dị)", "modalityBridgeTaskAware": "Nkọwa maara ọrụ a na-eme", "modalityBridgeTaskAwareDesc": "Tinye ajụjụ onye ọrụ dịka isi elekwasị anya ka vision model kọwaa ihe dị mkpa ma degharịa ederede a na-ahụ anya.", @@ -8268,7 +8272,7 @@ "modalityBridgeMovedTitle": "Ebugharịla Vision Bridge", "modalityBridgeMovedBody": "Ntọala Vision Bridge dị ugbu a na ibe Modality Bridge pụrụ iche.", "modalityBridgeMovedCta": "Mepee ntọala Modality Bridge", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "Njikọ Ọdịyo", "modalityBridgeAudioDesc": "Jiri ụdị nlereanya speech-to-text tụgharịa ọdịyo ka ọ bụrụ ederede tupu iji ụdị nlereanya ederede ahọpụtara gaa n'ihu.", "modalityBridgeAudioEnabled": "Gbanye Audio Bridge", "modalityBridgeAudioEnabledDesc": "Dochie akụkụ ọdịyo na transcript mgbe ụdị nlereanya e lekwasịrị anya enweghị ike ịhazi ọdịyo.", @@ -8280,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge dị mma — {model} degharịrị klip {count} ka ọ bụrụ ederede", "modalityBridgeAudioTestNoop": "Audio Bridge arụghị ọrụ (ebe e lekwasịrị anya nwere ike ịkwado ọdịyo, ọ dịghị onye na-eweta STT ejikọrọ, ma ọ bụ agbanyụrụ Bridge)", "modalityBridgeAudioTestError": "Nnwale ọdịyo dara: {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "Njikọ Vidiyo", "modalityBridgeVideoDesc": "Were fremụ nlele na vidiyo, jiri ụdị nlereanya ọhụụ kọwaa ha, wee jiri ụdị nlereanya ederede ahọpụtara gaa n'ihu.", "modalityBridgeVideoRuntimeReady": "Runtime adịla njikere", "modalityBridgeVideoRuntimeChecking": "Na-enyocha runtime…", @@ -8354,7 +8358,7 @@ "routingCcBridgeCatalogName": "Àkwà mmiri CC dakọtara na Anthropic", "routingClaudeProviderName": "Claude (OAuth)", "routingClaudeProviderDescription": "Onye na-eweta Claude izizi nke na-eji token OAuth nyere.", - "routingCcBridgeName": "Claude-Code Bridge", + "routingCcBridgeName": "Njikọ Claude-Code", "routingCcBridgeDescription": "Ebe njedebe relay ndị na-eji igodo API (anthropic-compatible-cc-*).", "routingCustomProviderDescription": "Onye na-eweta ọrụ ahaziri.", "routingUnknownOpKind": "Ụdị op amaghị ama: {kind}", @@ -8378,7 +8382,7 @@ "qdrantCollection": "Nchịkọta" }, "contextRtk": { - "title": "RTK Engine", + "title": "Injin RTK", "description": "Mkpakọ maara iwu maka nsonaazụ ngwaọrụ, ndekọ ọnụụzọ na nsonaazụ owuwu.", "enabled": "Agbanyere", "intensity": "Ike", @@ -8514,11 +8518,11 @@ "description": "Nhazi akara token semantiki dabere na ONNX. Ọ na-akpakọ naanị ederede nkọwa; a na-echekwa ngọngọ koodu na ihe ndị ahọpụtara ka echekwa. Ọ bụrụ na njehie emee na model ma ọ bụ worker, ọ na-ahapụ ọdịnaya ahụ ka ọ dị." }, "lite": { - "name": "Lite", + "name": "Dị mfe", "description": "Mbelata ngwa ngwa nke oghere ọcha, nsonaazụ ngwaọrụ na URL onyonyo." }, "aggressive": { - "name": "Aggressive", + "name": "Siri ike", "description": "Nchịkọta, mkpokọta nsonaazụ ngwaọrụ na imeka nká nwayọọ nwayọọ." }, "ultra": { @@ -8544,7 +8548,7 @@ "description": "Na-achịkwa ike ngọngọ ndị a na-eweghachite ugboro ugboro si eguzogide mkpokọta. Iweghachite ọ bụla gara aga na-abawanye nha kacha nta dị irè nke ngọngọ n'ahịrị; 1 na-agbanyụ mmụba ahụ." }, "model": { - "label": "Model" + "label": "Ụdị" }, "minTokens": { "label": "Token kacha nta (oke ala)" @@ -8737,7 +8741,7 @@ "compareTab": "Tụnyere", "encoderComparison": "Encoder A/B — usoro nhazi {count}", "encoderWinner": "onye mmeri: {winner}", - "encoder": "encoder", + "encoder": "ihe ngbanwe koodu", "bytes": "byte", "tokensCl100k": "token (cl100k)" }, @@ -8761,7 +8765,7 @@ "gatesDescription": "Ọ na-ajụ ma ọ dara: gate niile ga-agafe, ma ọ bụghị ya, request ahụ ga-agafe n'enweghị mgbanwe (a na-edekọ mwụda ọ bụla dịka skip:<reason>).", "gates": { "model": { - "label": "Model", + "label": "Ụdị", "pass": "claude-fable-5 (a tụrụ); gpt-5.6 (JIDE)", "why": "Naanị ụzọ Fable 5 a tụrụ ka agbanyere na OmniRoute. Ngwugwu ahụ na-akwado GPT 5.6 n'usoro nhazi, mana a ka na-egbochi ya ruo mgbe nkwenye provider ya dị; ezinụlọ ndị a na-akwadoghị dịka Grok ga-anọgide na-eji naanị ederede." }, @@ -9120,7 +9124,7 @@ "chatTesterFlow": "Arịrịọ Client → Nchọpụta Ụdị → OpenAI Etiti → Ụdị Provider → Nzaghachi", "clickStepToInspect": "Pịa nzọụkwụ ọ bụla iji nyochaa data dị n'ọkwa ahụ.", "clientFormat": "Ụdị Client", - "provider": "Provider", + "provider": "Onye na-eweta ọrụ", "modelPlaceholder": "Họrọ ma ọ bụ pịnye aha model...", "sendMessageToSeePipeline": "Zipụ ozi ka ịhụ pipeline ntụgharị asụsụ", "chatMessageHintPrefix": "A ga-ahazi ozi gị dịka arịrịọ", @@ -9173,8 +9177,8 @@ "comboRouted": "Combo ndị e zigara n'ụzọ", "uniqueEndpoints": "Endpoint pụrụ iche", "routeDetails": "Nkọwa ụzọ", - "comboBadge": "Combo", - "routeEndpointLabel": "Endpoint", + "comboBadge": "Ngwakọta", + "routeEndpointLabel": "Ebe njedebe", "routeConnectionLabel": "Njikọ", "scenarioVision": "Ọhụụ (nghọta onyonyo)", "scenarioSchemaCoercion": "Ịmanye schema (mmepụta ahaziri ahazi)", @@ -9222,7 +9226,7 @@ "advancedRawJsonSubtitle": "Mado arịrịọ JSON; a ga-achọpụta ụdị ya na akpaghị aka.", "advancedPipelineTitle": "Usoro etiti OpenAI", "advancedPipelineSubtitle": "Gosipụta usoro ntụgharị ọ bụla n'ụzọ anya (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Ihe Ngbanwe Iyi (Nkata → Nzaghachi SSE)", "advancedStreamTransformSubtitle": "Na-agbanwe Chat Completions SSE ka ọ bụrụ Responses API.", "advancedTestBenchTitle": "Oche Nnwale (ọnọdụ 8)", "advancedTestBenchSubtitle": "Na-eme ọnọdụ niile ma na-akọ gafere/dara + ndakọrịta %.", @@ -9298,7 +9302,7 @@ "loadingBudgetData": "Na-ebunye data mmefu ego...", "noApiKeysTitle": "Enweghị API Keys", "noApiKeysDescription": "Buru ụzọ tinye API keys iji hazie oke mmefu ego.", - "apiKey": "API Key", + "apiKey": "Igodo API", "todaysSpend": "Mmefu nke taa", "thisMonth": "Ọnwa a", "setLimits": "Tọọ oke", @@ -9324,7 +9328,7 @@ "openCircuitBreakersDetected": "Achọpụtara circuit breakers mepere emepe", "hitRate": "Ọnụọgụ Mmezu", "hitsMisses": "Mmezu / Agbaghara", - "circuitBreakers": "Circuit Breakers", + "circuitBreakers": "Ndị nkwụsị sekit", "lockedIPs": "IP ndị akpọchiri", "lockoutsAutoRefreshHint": "Mkpọchi oke arịrịọ maka model ọ bụla • Mmelite akpaka 10s", "lockedCount": "{count, plural, one {# akpọchiri} other {# akpọchiri}}", @@ -9960,7 +9964,7 @@ "featureCloudSyncDesc": "Mekọrịta nhazi gị n'ofe ngwaọrụ ozugbo.", "featureCliSupportTitle": "Nkwado CLI", "featureCliSupportDesc": "Ọ na-arụ ọrụ na Claude Code, Codex, Cline, Cursor, na ndị ọzọ.", - "featureDashboardTitle": "Dashboard", + "featureDashboardTitle": "Dasbọọdụ", "featureDashboardDesc": "Dashboard anya maka nyocha okporo ụzọ ozugbo.", "howItWorks": "Otu OmniRoute Si Arụ Ọrụ", "howItWorksDescription": "Data na-aga nke ọma site na ngwa gị, gafee oyi akwa ntụgharị nwere ọgụgụ isi anyị, ruo na onye na-eweta kacha mma maka ọrụ ahụ.", @@ -10100,7 +10104,7 @@ "providersCount": "Ndị na-eweta ọrụ {count}", "providerTypeFree": "Ọkwa N'efu", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "Igodo API", "useCaseSingleEndpointTitle": "Otu endpoint maka ọtụtụ ndị na-eweta ọrụ", "useCaseSingleEndpointText": "Tụnye ndị ahịa aka n'otu base URL ma mee routing site na prefix nke ụdị (dịka ọmụmaatụ: gh/, cc/, kr/, openai/).", "useCaseFallbackTitle": "Fallback na ịgbanwe ụdị site na combos", @@ -10108,8 +10112,8 @@ "useCaseUsageVisibilityTitle": "Nghọta banyere ojiji, ụgwọ na debug", "useCaseUsageVisibilityText": "Soro token na ụgwọ dịka onye na-eweta ọrụ, akaụntụ, na API key si dị na taabụ Usage na Analytics.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", + "baseUrlLabel": "URL ndabere", + "chatEndpointLabel": "Ebe njedebe nkata", "modelRecommendationLabel": "Nkwado ụdị: prefix doro anya", "clientCodexTitle": "Ụdị Codex / GitHub Copilot", "clientCodexBullet1": "Jiri NJ ụdị nwere", @@ -10135,7 +10139,7 @@ "clientKimiBullet1": "Jiri OmniRoute dịka base URL kwụsiri ike mgbe ị na-agbanwe akaụntụ ma ọ bụ ngwakọta provider ndị dị n'okpuru ya.", "clientKimiBullet2": "Họrọ model nwere nganiihu na usoro coding ka fallback na ndekọ audit nọgide bụrụ ihe doro anya.", "clientKimiBullet3": "Jiri `/v1/responses` mgbe ịchọrọ routing ụdị Responses nke mbụ maka clients na-eji tools.", - "protocolsTitle": "Protocols: MCP & A2A", + "protocolsTitle": "Usoro njikọ: MCP & A2A", "protocolsDescription": "OmniRoute na-enye protocols arụmọrụ abụọ na mgbakwunye na APIs dakọtara na OpenAI: MCP maka imezu tools na A2A maka usoro ọrụ agent-na-agent.", "protocolMcpTitle": "MCP (Model Context Protocol)", "protocolMcpDesc": "Jiri MCP site na stdio ka clients nwee ike ịchọpụta ma kpọọ tools OmniRoute, ebe a na-ahụkwa audit.", @@ -10170,7 +10174,7 @@ "mgmtLegacyMigrationNote": "Bubata maapụ proxyConfig ochie n'ime nkesa ndekọ.", "modelPrefixesDescriptionStart": "Jiri nganiihu provider tupu aha model iji duzie ya gaa na provider akọwapụtara. Ọmụmaatụ:", "modelPrefixesDescriptionEnd": "na-eduga na GitHub Copilot.", - "provider": "Provider", + "provider": "Onye na-eweta ọrụ", "type": "Ụdị", "troubleshootingModelRouting": "Ọ bụrụ na client ada na nhazi ụzọ model, jiri provider/model doro anya (dịka ọmụmaatụ: gh/gpt-5.1-codex).", "troubleshootingAmbiguousModels": "Ọ bụrụ na ịnata njehie model na-edoghị anya, họrọ nganiihu provider kama iji naanị ID model.", @@ -10218,7 +10222,7 @@ "mcpToolsMemoryDesc": "Chọọ, tinye, ma hichapụ ndenye ncheta mkparịta ụka na-adịgide adịgide.", "mcpToolsSkillsTitle": "Nkà", "mcpToolsSkillsDesc": "Depụta, mee ka ọ rụọ ọrụ, mee, ma nyochaa mmezu nkà ahaziri.", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "Ngwakọta akpaaka", "featureAutoComboText": "Mepụta combo ndị ahaziri nke ọma na-akpaghị aka dabere na ndị na-eweta ọrụ ị jikọtara, usoro ojiji gị, na ikike model.", "featureSearchTitle": "Nchọgharị Weebụ", "featureSearchText": "Nchọgharị weebụ agbakwunyere nke nwere ndị na-eweta ọrụ 5 (Serper, Brave, Exa, Tavily, Perplexity), tinyere nyocha data na nsuso ọnụ ahịa.", @@ -10573,7 +10577,7 @@ "unavailableDesc": "Enweghị ike iweta ọnụ ọgụgụ cache. Gbaa mbọ hụ na sava ahụ na-arụ ọrụ.", "loadingCacheAria": "Na-ebunye cache", "promptCache": "Prompt Cache (N'akụkụ Provider)", - "semanticCache": "Semantic Cache", + "semanticCache": "Nchekwa Semantiki", "promptCacheSectionDesc": "Na-egosi ọrụ prompt caching nke provider site n'akụkọ ojiji ka ị nwee ike ịhụ ebe cache control na-arụ ọrụ na ole ntinye a na-ejigharị.", "promptTrendDesc": "Ọnụọgụ arịrịọ kwa elekere, mkpuchi cache, na ọnụọgụ ọgụgụ cache n'ime awa 24 gara aga.", "cachedRequests": "Arịrịọ Echekwara na Cache", @@ -10614,7 +10618,7 @@ "cached": "Echekwara na cache", "overview": "Nchịkọta", "tableProvider": "Onye Na-enye Ọrụ", - "tableModel": "Model", + "tableModel": "Ụdị", "performanceTitle": "Ịrụ Ọrụ", "semanticCacheSectionDesc": "Cache nzaghachi doro anya nke OmniRoute n'onwe ya. Mgbe agbanyere ya, enwere ike ijere arịrịọ temperature=0 na-adịghị eji streaming ma na-emegharị ugboro ugboro n'ime mpaghara na-akpọtụrụghị onye na-enye ọrụ upstream.", "semanticCacheDisabledDesc": "Agbanyụrụ cache semantiki. OmniRoute agaghị eji nzaghachi mpaghara ọzọ ruo mgbe ị gbanyere ya ọzọ na Settings.", @@ -10676,7 +10680,7 @@ }, "proxyConfigModal": { "levelGlobal": "Ụwa Niile", - "levelProvider": "Provider", + "levelProvider": "Onye na-eweta ọrụ", "levelCombo": "Ngwakọta", "levelKey": "Igodo", "levelDirect": "Kpọmkwem (enweghị proxy)", @@ -10689,9 +10693,9 @@ "custom": "Nke ahaziri iche", "selectSavedProxyPlaceholder": "Họrọ proxy echekwara...", "proxyType": "Ụdị Proxy", - "host": "Host", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", - "port": "Port", + "host": "Onye nnabata", + "hostPlaceholder": "1.2.3.4 ma ọ bụ proxy.example.com", + "port": "Ọdụ ụgbọ mmiri", "authOptional": "Nyocha njirimara (nhọrọ)", "username": "Aha njirimara", "usernamePlaceholder": "Aha njirimara", @@ -10772,7 +10776,7 @@ "devinDesktopPasteDescription": "Nye igodo Devin API dị adị sitere na nnọkọ Devin a nyochara njirimara ya. Nnweta na usoro mbupụ igodo dịgasị iche dabere na ụdị Devin na akaụntụ.", "devinPasteDescription": "Nye WINDSURF_API_KEY gị (nke enwetara site na `devin auth login`, ma ọ bụ site na iwu Windsurf IDE \"Windsurf: Provide Auth Token\").", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json nke Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Igodo API / Token", "saving": "Na-echekwa…", @@ -10802,8 +10806,8 @@ "tokensAutoDetected": "Achọpụtara token nke ọma na-akpaghị aka site na Cursor IDE!", "cursorNotDetected": "Achọpụtaghị Cursor IDE. Tapawa access token gị (yana refresh token ma ọ bụrụ na ọ dị).", "dockerImportHint": "Ị na-eji Docker? Ọ ka mma iji Login with Cursor. IDE auto-import na cursor-agent anaghị adịkarị n'ime container. Lee docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", + "accessToken": "Token Nnweta", + "refreshToken": "Token Mmelite", "refreshTokenPlaceholder": "Nhọrọ — na-eme ka mmegharị token akpaka rụọ ọrụ", "required": "*", "accessTokenPlaceholder": "Token nnweta ga-ejupụta na akpaghị aka...", @@ -10869,8 +10873,8 @@ "familyIpv4": "Naanị IPv4", "familyIpv6": "Naanị IPv6", "familyHint": "Ezinụlọ adreesị ọpụpụ. Akpaka na-edobe dual-stack; IPv4/IPv6 na-ekechi proxy a na ezinụlọ ahụ (na-egbochi mwụpụ v4 n'okpuru proxy nke bụ naanị IPv6).", - "labelHost": "Host", - "labelPort": "Port", + "labelHost": "Onye nnabata", + "labelPort": "Ọdụ ụgbọ mmiri", "labelUsername": "Aha njirimara", "labelPassword": "Okwuntughe", "labelRegion": "Mpaghara", @@ -10884,13 +10888,13 @@ "save": "Chekwaa", "bulkModalTitle": "Ikenye Proxy n'ìgwè", "bulkLabelScope": "Oke ọrụ", - "bulkLabelProxy": "Proxy", + "bulkLabelProxy": "Ihe nnọchiteanya", "bulkClearAssignment": "(Kpochapụ nkesa)", "bulkLabelScopeIds": "NJirimara oke ọrụ (jiri rịkọm ma ọ bụ ahịrị ọhụrụ kewaa ha)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", "bulkApply": "Tinye", "labelScope": "Oke", - "labelProxy": "Proxy", + "labelProxy": "Ihe nnọchiteanya", "scopeGlobal": "ụwa niile", "scopeProvider": "onye na-eweta ọrụ", "scopeAccount": "akaụntụ", @@ -10958,29 +10962,29 @@ "poolStrategyLabel": "Usoro ntụgharị", "poolStrategyHint": "round-robin na-agagharị n'etiti ndị otu n'usoro; random na-ahọrọ n'ụzọ hà nhata; sticky na-ejide otu onye otu ruo oge ụfọdụ; latency-optimized na-ahọrọ nke kachasị ọsọ dabere na ndekọ.", "poolStrategyFailed": "Imelite usoro ntụgharị dara", - "strategyRoundRobin": "Round-robin", - "strategyRandom": "Random", - "strategySticky": "Sticky", - "strategyLatency": "Latency-optimized", + "strategyRoundRobin": "N'usoro okirikiri", + "strategyRandom": "Na-enweghị usoro", + "strategySticky": "Na-adịgide", + "strategyLatency": "Ahaziri maka obere oge nzaghachi", "poolMembersLabel": "Ndị otu ọdọ ({count})", "poolNoMembers": "Enweghị proksi n'ọdọ a ugbu a.", + "poolEgressObservation": "{exits, plural, one {# ụzọ ọpụpụ} other {# ụzọ ọpụpụ}} nke {connections, plural, one {# njikọ} other {# njikọ}} jiri · ruo {max} n'otu ụzọ ọpụpụ · n'ime awa {hours} gara aga", + "poolEgressObservationEmpty": "Ahụghị ngagharị data ọ bụla n'ime awa {hours} gara aga", + "poolEgressObservationHint": "A gụrụ ya site na ndekọ proxy n'ime oge ahụ: IP ọpụpụ dị iche iche a hụrụ maka ndị otu pool a, yana njikọ OmniRoute ndị jiri ha. \"N'otu ụzọ ọpụpụ\" pụtara n'ime oge ahụ, ọ bụghị n'otu oge. Mkpọchi 429 nke IP ọ bụla na-akwụsịtụ naanị njikọ ndị sitere n'otu ezinụlọ provider.", "poolRemove": "Wepụ", "poolRemoveFailed": "Iwepụ proksi n'ọdọ dara", "poolAddLabel": "Tinye proksi", "poolAddMember": "Tinye", "poolAddFailed": "Ịtinye proxy ahụ na pool dara", "poolSelectProxy": "Họrọ proxy…", - "poolSaveFailed": "Ịchekwa nkesa pool dara", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family." + "poolSaveFailed": "Ịchekwa nkesa pool dara" }, "playground": { "title": "Ebe Nnwale Model", "description": "Nwalee model ọ bụla ozugbo site na dashboard. Họrọ provider, model, na ụdị endpoint, wee zipụ arịrịọ ka ị hụ nzaghachi raw.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Ebe njedebe", + "provider": "Onye na-eweta ọrụ", + "model": "Ụdị", "accountKey": "Akaụntụ / Key", "autoAccounts": "Akpaaka ({count} akaụntụ)", "noAccounts": "Enweghị akaụntụ", @@ -10994,7 +10998,7 @@ "clearAll": "Hichapụ Ha Niile", "request": "Arịrịọ", "response": "Nzaghachi", - "transcription": "Transcription", + "transcription": "Ntughari okwu ederede", "copy": "Detuo", "resetToDefault": "Tọgharịa gaa na ndabara", "downloadAudio": "Budata ọdịyo", @@ -11008,12 +11012,12 @@ "responses": "Nzaghachi", "completions": "Mmecha", "images": "Mmepụta onyonyo", - "embeddings": "Embeddings", + "embeddings": "Ntinye", "speech": "Ederede gaa na okwu ọnụ", "transcription": "Transcription ọdịyo", "video": "Mmepụta vidiyo", "music": "Mmepụta egwu", - "moderations": "Moderations", + "moderations": "Nnyocha ọdịnaya", "rerank": "Hazie ọkwa ọzọ", "search": "Ọchụchọ webụ", "webFetch": "Nweta ọdịnaya webụ" @@ -11080,7 +11084,7 @@ "runAll": "Gbaa ha niile", "cancelAll": "Kagbuo ha niile", "maxColumnsReached": "Ogidi kachasị bụ {max}", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "modelPlaceholderCompare": "Ụdị (Cmd+K)…", "noModel": "Enweghị model", "statusLabel": "Ọnọdụ: {status}", "status": { @@ -11124,7 +11128,7 @@ "jsonMode": "Ọnọdụ JSON", "jsonModeDescription": "Na-amanye response_format: json_schema", "schemaName": "Aha schema", - "jsonSchema": "JSON schema", + "jsonSchema": "Skema JSON", "jsonSchemaEditor": "Onye ndezi JSON schema", "schemaValidated": "Ekwenyela na schema ziri ezi", "validateSchema": "Nyochaa schema", @@ -11375,7 +11379,7 @@ "upstreamCache": "Upstream (Onye Na-enye Ọrụ)", "ariaLabel": "Nkọwa ndekọ arịrịọ", "completed": "Emechara", - "upstreamStatus": "Upstream: {status}", + "upstreamStatus": "Isi mmalite: {status}", "statusDiscrepancy": "OmniRoute weghachiri {status} n'agbanyeghị na onye na-enye ọrụ weghachiri {provider}", "previousRequest": "Arịrịọ gara aga", "nextRequest": "Arịrịọ na-esote", @@ -11430,11 +11434,11 @@ "filterSuccess": "Ihe ịga nke ọma", "filterTimeout": "Oge agwụla", "colStatus": "Ọnọdụ", - "colProxy": "Proxy", + "colProxy": "Ihe nnọchiteanya", "colTls": "TLS", "colType": "Ụdị", "colLevel": "Ọkwa", - "colProvider": "Provider", + "colProvider": "Onye na-eweta ọrụ", "colTarget": "Ebe Ebumnuche", "colLatency": "Oge Nkwụsị", "colClientIp": "IP Client", @@ -11563,7 +11567,7 @@ "loading": "Na-ebunye…", "removePool": "Wepụ pool", "removeConfirm": "Wepụ pool a?", - "pool": "Pool", + "pool": "Otu", "used": "ejiworo", "allocationsCount": "Nkesa ({count})", "allocatedFree": "E kenyere {allocated}% · {free}% fọdụrụ", @@ -11674,8 +11678,8 @@ "endpointsBaseUrl": "URL ntọala", "endpointsCollapse": "Kpokọta", "endpointsExpand": "Gbasaa", - "endpointsAnthropicNote": "Anthropic-native", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsAnthropicNote": "Nke Anthropic", + "endpointsResponsesNote": "Nzaghachi OpenAI — codex/github", "endpointsWsNote": "WebSocket — naanị codex", "betaText": "Quota Share na-arụ ọrụ mana a na-atụ anya ntụpọ. Ị hụrụ otu? Biko kọọ ya.", "betaReportLink": "Kọọ nsogbu", @@ -11688,7 +11692,7 @@ "dismiss": "Mechie" }, "plugins": { - "title": "Plugins", + "title": "Mgbakwunye", "description": "Wụnye ma jikwaa plugins iji gbasaa ọrụ OmniRoute", "loading": "Na-ebunye plugins...", "scanning": "Na-enyocha...", @@ -11903,7 +11907,7 @@ "addMapping": "Tinye njikọ", "selectModel": "Họrọ…", "saveMappings": "Chekwaa njikọ", - "setupWizard": "Setup wizard", + "setupWizard": "Ọkachamara nhazi", "startDns": "Malite DNS", "stopDns": "Kwụsị DNS", "toggling": "Na-agbanwe…", @@ -12294,7 +12298,7 @@ "addAgent": "Tinye onye nnọchi anya", "agentName": "Aha", "agentNamePlaceholder": "dịka ọmụmaatụ: Onye Nnọchi Anya M", - "binaryName": "Binary", + "binaryName": "Faịlụ ọnụọgụ abụọ", "binaryNamePlaceholder": "dịka ọmụmaatụ: myagent", "versionCommand": "Iwu ụdị", "versionCommandPlaceholder": "dịka ọmụmaatụ: myagent --version", @@ -12341,7 +12345,7 @@ "description": "Hazie proxy HTTP/HTTPS/SOCKS maka arịrịọ ndị na-eweta ọrụ dị n'elu. Tọọ iwu proxy maka onye na-eweta ọrụ ọ bụla ma ọ bụ n'ozuzu, nwalee njikọta, ma jikwaa ntụgharị proxy." }, "omni-cache": { - "name": "Cache", + "name": "Ebe nchekwa nwa oge", "description": "Jikwaa cache nzaghachi LLM. Lelee ọnụ ọgụgụ cache, hichapụ ndenye, hazie iwu TTL, ma chịkwaa oke myirịta n'echiche maka itinye ihe na cache." }, "omni-compression": { @@ -12405,7 +12409,7 @@ "description": "Jikwaa njikọ ndị na-eweta ọrụ site na CLI: depụta ndị na-eweta ọrụ dị ma ọ bụ ahaziri, tinye, nwalee, nwalee ha niile, kwado, gbanwee API keys, ma lee metrik nke onye na-eweta ọrụ ọ bụla." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Igodo API", "description": "Mepụta, depụta, gbanwee, ma kagbuo OmniRoute API keys site na CLI. Jikwaa usoro OAuth maka nkwenye njirimara onye na-eweta ọrụ, ma nyochaa ókè ikike na oge mmebi nke key." }, "cli-models": { @@ -12441,11 +12445,11 @@ "description": "Nyochaa ọnọdụ sava MCP, depụta ngwaọrụ na scopes e debanyere aha, kpọọ ngwaọrụ ka ọ rụọ ọrụ, ma jikwaa ndekọ nyocha MCP site na CLI." }, "cli-a2a": { - "name": "CLI: A2A Protocol", + "name": "CLI: Usoro A2A", "description": "Site na CLI, soro sava OmniRoute A2A rụọkọ ọrụ. Zipu ọrụ, nyochaa akụkọ mmezu nka, ma nwalee JSON-RPC 2.0 agent-to-agent protocol n'ụzọ mmekọrịta." }, "cli-tunnel": { - "name": "CLI: Tunnels", + "name": "CLI: Ọwara", "description": "Malite ma kwụsị njikọ tunnel (ngrok, Cloudflare, custom) site na CLI. Nyochaa URL tunnel ndị na-arụ ọrụ, hazie nkwenye njirimara, ma nwalee ma enwere ike iru ya site n'èzí." }, "cli-backup-sync": { @@ -12461,7 +12465,7 @@ "description": "Nyefee ma nyochaa ọrụ batch inference site na CLI. Bulite ma jikwaa files maka batch processing, nweta nsonaazụ, ma jikọta batch pipelines na usoro ọrụ CI/CD." }, "cli-eval": { - "name": "CLI: Evals", + "name": "CLI: Ntụle", "description": "Mepụta ma gbaa evaluation suites, lelee ọganihu benchmark dị ndụ, lee scorecards, tulee arụmọrụ model, ma jikọta eval runs na usoro ọrụ CI site na CLI." }, "cli-plugins-skills": { @@ -12519,7 +12523,7 @@ "storage": { "label": "Ebe nchekwa", "agent": "Katalọgụ na-agbanwe agbanwe (/api/agent-skills) → SKILL.md na GitHub", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / nke mpaghara)" }, "tagline": { "label": "Ahịrịokwu njirimara", @@ -12643,8 +12647,8 @@ "custom": "Nke ahaziri onwe ya", "noSavedProxies": "Enweghị proxy echekwara — tinye otu na Settings → Proxy", "directConnection": "Kpọmkwem (enweghị proxy)", - "host": "Host", - "port": "Port", + "host": "Nnabata", + "port": "Ọdụ ụgbọ", "usernameOptional": "Aha njirimara (nhọrọ)", "passwordOptional": "Okwuntughe (nhọrọ)", "cancel": "Kagbuo", @@ -12987,6 +12991,12 @@ "STREAM_RECOVERY_MIDSTREAM_ENABLED": { "description": "Kwe ka mgbake stream rịọ nzaghachi ahụ ọzọ ma jikọta ya mgbe byte ruterelarị client." }, + "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { + "description": "Mee ka ọ dị nchebe ịga n'ihu n'etiti stream mgbe a kpọrọ tool: amalitela stream e kwụsịrị mgbe ezipụchara tool call (ma ọ ka na-aga n'ihu ma ọ bụ na ọ gwụla), kwụsịkwa mgbe continuation efu mere otu ugboro kama iji retry budget niile." + }, + "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { + "description": "Gafee otu ugboro gaa na njikọ ibe mgbe stream mechiri tupu o zipụta frame ọ bụla bara uru, ma nnwale ọzọ e nyere oke n'otu njikọ ahụ agwụla. Ọ bụrụ na enweghị njikọ ibe a pụrụ iji, a ga-eweghachi njehie early-EOF mbụ ahụ. Gbanyụọ: early-EOF ga-anọgide bụrụ njedebe mgbe nnwale ọzọ gasịrị." + }, "MODEL_CATALOG_INCLUDE_NAMES": { "description": "Tinye field aha dị mfe igosi na nzaghachi /v1/models. Gbanyụọ nke a maka client ndị na-anabata naanị ID model." }, @@ -13025,18 +13035,12 @@ "description": "Gaa n'ihu na oku ngwaọrụ sava na-achịkwa ndị na-abụghị streaming ruo mgbe model weghachiri nzaghachi onye ahịa nwere ike iji." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths.", - "label": "__MISSING__:Retry-After Provenance" + "label": "Isi mmalite Retry-After", + "description": "Na nzaghachi 429/503 ndị agbakọtara nke na-egosi enweghị nnweta, ewepụla Retry-After mgbe a maghị kpọmkwem oge nnwale ọzọ n'ọdịnihu kama izipu 1s e chepụtara echepụta; tinye error.retry_after_provenance, ma gụọ ntụnye nnwale ọzọ ndị e dere n'ahịrịokwu n'ụzọ combo drain." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip.", - "label": "__MISSING__:Protected-Priority Infra Stops as 502" - }, - "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." - }, - "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { - "description": "__MISSING__:Fail over once to a sibling connection when a stream closes before emitting any useful frame and the bounded same-connection retry is spent. With no usable sibling, the original early-EOF error is returned. Off: early-EOF stays terminal after the retry." + "label": "Nkwụsị Akụrụngwa nke Prioriti Echedoro dịka 502", + "description": "Zaghachi 502 kama 503 mgbe ebumnuche prioriti quota-only-fallback kwụsịrị combo n'ihi ihe e gosipụtara na ọ bụghị quota: provider circuit breaker mepere emepe ma ọ bụ predictive latency skip." } } }, @@ -13045,7 +13049,7 @@ "label": "Hazie site na", "method": { "manual": "Iji aka", - "provider": "Provider", + "provider": "Onye na-eweta ọrụ", "score": "Akara (model efu)", "name": "Aha" }, @@ -13071,7 +13075,7 @@ "requests": "Arịrịọ", "success": "Ọganiihu", "latency": "Oge igbu oge", - "quota": "Quota", + "quota": "Oke ojiji", "rangeWindow": "Oghere oge {range}", "runtimeHealthBlend": "ngwakọta runtime/health", "averageResponseTime": "nkezi oge nzaghachi", @@ -13115,7 +13119,7 @@ "comboHealth": "Ahụike Ngwakọta", "callLogs": "Ndekọ Oku", "costs": "Ọnụ Ahịa", - "playground": "Playground", + "playground": "Ebe nnwale", "nestedCombo": "Ngwakọta dị n'ime", "modelTarget": "Ebumnuche ụdị", "weight": "Ibu {value}%", @@ -13181,7 +13185,7 @@ "gated": "Ihe dịka token {tokens}/ọnwa ọzọ dị n’azụ nyocha njirimara mpaghara (dịka nkwenye ezigbo aha na ala China) — oke n’ezie, etinyeghị ya na isiokwu ukwu:", "tosRestricted": "{count, plural, one {Akara # model dị ka nke ToS machibidoro — gị ga-ekpebi} other {Akara # models dị ka ndị ToS machibidoro — gị ga-ekpebi}}", "provider": "Onye na-eweta", - "model": "Model", + "model": "Ụdị", "modelName": "Aha model", "type": "Ụdị", "tokensMonth": "Token/ọnwa", @@ -13296,15 +13300,15 @@ "allModels": "model niile", "keepModel": "Debe model", "otherModel": "Model ọzọ", - "combo": "Combo", + "combo": "Ngwakọta", "priorityShort": "mkpa {value}", "toggleAria": "Gbanye {name}", "edit": "Dezie", "delete": "Hichapụ", "name": "Aha", "description": "Nkọwa", - "scopeLabel": "Scope", - "apiKey": "API key", + "scopeLabel": "Oke", + "apiKey": "Igodo API", "sourceCombo": "Combo mmalite", "connection": "Njikọ", "sourceModel": "Ụdịọrụ mmalite ma ọ bụ akara nnọchi", @@ -13314,7 +13318,7 @@ "missing": "Ekwughị ya", "signalOnly": "Mgbama echiche na-abụghị nke nwere ọkwa dị iche iche", "requestTags": "Mkpado arịrịọ", - "requestTagsExample": "coding, internal", + "requestTagsExample": "ide koodu, nke ime", "tagMode": "Ndakọrịta mkpado", "effortMode": "Ụdị mbọ", "targetEffort": "Ọkwa mbọ ebumnuche", @@ -13457,8 +13461,8 @@ "contributorHint": "GitHub OAuth na-enyocha ọkwa izu a: Ndị Top 10 na-enweta ụbọchị 365, ebe ọkwa 11–100 na-enweta ụbọchị 90. Ọnụ ọgụgụ PR naanị anaghị enye ohere ma ọ bụrụ na ịnọghị na Top 100.", "supporterButton": "Kwado ọrụ a", "supporterHint": "Nhọrọ otu ugboro nke ọnwa 6, otu afọ, na nke ndụ niile enweghị mmegharị akpaka; oge ndị tozuru etozu na-agbakọta, nke ndụ niile na-aka ha niile.", - "colProvider": "Provider", - "colModel": "Model", + "colProvider": "Onye na-eweta ọrụ", + "colModel": "Ụdị", "colQuota": "Oke ojiji", "colLimits": "Oke", "trainsOnPrompts": "Na-eji prompts azụ model", @@ -13466,7 +13470,7 @@ "limitsUnknownHelp": "Ọ bụ naanị Radar feed kọrọ oke ndị a; enweghị oke e bipụtara maka ndenye a", "contextUnknownHelp": "Amaghị oke windo context maka ndenye a", "capabilityUnknownHelp": "Feed ahụ akọpụtaghị ikike a", - "colContext": "Context", + "colContext": "Ihe gbara ya gburugburu", "colCapabilities": "Ikike", "colTos": "Ihe ize ndụ ToS", "newBadge": "ọhụrụ", @@ -13650,6 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Jụ arịrịọ tupu izipu ya mgbe ụdịdị e lekwasịrị anya enweghị ike ndị achọrọ (ọhụụ, ngwaọrụ, nsonaazụ ahaziri, windo ọnọdụ). Nke a na-echebe arịrịọ kpọmkwem nke otu onye na-eweta ọrụ, nke na-agafe nzacha ndakọrịta nke combo-layer.", "featureFlagDisableContextWindowChecksDescription": "Mafee nyocha mpaghara nke OmniRoute maka windo ọnọdụ na oke token ntinye kachasị n'arịrịọ kpọmkwem nke otu ụdịdị. Ndị na-eweta ọrụ dị n'elu ka na-amanye oke ha n'ezie. Mkpakọ prompt na oke token nsonaazụ ka na-arụ ọrụ.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Ọnụọgụ ọchụchọ na ọchụchọ ndị e mere n'oge na-adịbeghị anya na-agụ naanị ndị na-eweta ọrụ ka nwere njikọ na-arụ ọrụ (a na-agụ ndị na-eweta ọrụ na-enweghị igodo dịka duckduckgo-free mgbe niile). Ịgbanyụ ya na-edobe ahịrị ọchụchọ niile echekwara nwere ID onye na-eweta ọrụ.", "publicSystem": { "notFound": { "title": "Ahụghị ibe ahụ", @@ -13862,13 +13867,13 @@ "openSoloTrae": "Mepee solo.trae.ai", "orPasteManually": "ma ọ bụ mado token n'onwe gị", "manualInstructions": "Banye na solo.trae.ai, mepee DevTools → Network, zipụ ozi nkata ọ bụla, wee detuo JWT site na nkụnye isi arịrịọ Authorization: Cloud-IDE-JWT {tokenPlaceholder}. Oge ndụ JWT bụ ihe dị ka ụbọchị 14. Oghere njirimara nhọrọ sitere na common_params dị n'otu ahụ arịrịọ ahụ.", - "accessTokenLabel": "Access Token (Cloud-IDE-JWT)", - "webId": "Web ID", + "accessTokenLabel": "Token nnweta (Cloud-IDE-JWT)", + "webId": "ID Weebụ", "optional": "nhọrọ", - "bizUserId": "Biz User ID", - "userUniqueId": "User Unique ID", + "bizUserId": "ID onye ọrụ azụmahịa", + "userUniqueId": "ID pụrụ iche nke onye ọrụ", "scope": "Oke", - "tenant": "Tenant", + "tenant": "Onye mgbazinye", "region": "Mpaghara", "importing": "Na-ebubata…", "importToken": "Bubata Token", @@ -13911,9 +13916,9 @@ "duration": "Ogologo oge", "model": "Ụdị", "requestedModel": "Ụdị a rịọrọ", - "provider": "Provider", + "provider": "Onye na-eweta ọrụ", "requester": "Onye rịọrọ", - "tokens": "Tokens" + "tokens": "Tọkẹn" } }, "proxyLog": { @@ -14160,10 +14165,5 @@ "partnerLinkNote": "Njikọ onye mmekọ", "dismissAriaLabel": "Wepụ" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Gbanyụọ imepụta ụdị ọkwa echiche dị iche iche (dịka -low, -medium, -high) na katalọgụ /v1/models.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "__MISSING__:Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "__MISSING__:Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Gbanyụọ imepụta ụdị ọkwa echiche dị iche iche (dịka -low, -medium, -high) na katalọgụ /v1/models." } diff --git a/src/i18n/messages/it.json b/src/i18n/messages/it.json index 21c08e71ad..39dfe2aeef 100644 --- a/src/i18n/messages/it.json +++ b/src/i18n/messages/it.json @@ -23,7 +23,7 @@ "back": "Indietro", "next": "Prossimo", "submit": "Invia", - "reset": "Reset", + "reset": "Reimposta", "copy": "Copia", "copied": "Copiato!", "enabled": "Abilitato", @@ -31,7 +31,7 @@ "active": "Attivo", "inactive": "Inattivo", "noData": "Nessun dato disponibile", - "nothingHere": "Nothing here yet", + "nothingHere": "Non c'è ancora nulla qui", "configure": "Configura", "manualConfig": "Configurazione manuale", "manage": "Maneggio", @@ -47,7 +47,7 @@ "time": "Tempo", "details": "Dettagli", "created": "Creato", - "lastUsed": "Last Refreshed", + "lastUsed": "Ultimo aggiornamento", "loadMore": "Carica altro", "noResults": "Nessun risultato trovato", "reloadPage": "Ricarica la pagina", @@ -64,14 +64,14 @@ "none": "Nessuno", "yes": "SÌ", "no": "NO", - "on": "ON", - "off": "OFF", + "on": "ATTIVO", + "off": "DISATTIVATO", "warning": "Avvertimento", "note": "Nota", "free": "Gratuito", "skipToContent": "Vai al contenuto", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Il server sta riscontrando problemi. Alcune funzionalità potrebbero non essere disponibili.", + "maintenanceServerUnreachable": "Il server non è raggiungibile. Riconnessione in corso...", "accept": "accept", "accountId": "accountId", "alias": "alias", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Impossibile reimpostare i prezzi", "apikey": "Chiave API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Vai alla dashboard", + "checkSystemStatus": "Controlla lo stato del sistema", + "selectModel": "Seleziona modello", "addModel": "Aggiungi modello", "effortNone": "Nessuno", "effortLow": "Basso", @@ -164,10 +164,10 @@ "reasoningEffort": "Sforzo di ragionamento", "wireApi": "Wire API", "modelAliases": "Alias dei modelli", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Combinazioni", + "noModelsFound": "Nessun modello trovato", + "clear": "Cancella", + "done": "Fatto", "selectAll": "Seleziona tutto", "unselectAll": "Deseleziona tutto", "visibleModels": "visibili", @@ -184,519 +184,519 @@ "selectAllProviders": "Controlla tutti i fornitori", "clearProviderSelection": "Deseleziona fornitori", "providersSelectedCount": "{count} fornitori controllati", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Si è verificato un errore", + "comboDeleted": "Combinazione eliminata", + "hide": "Nascondi", + "creating": "Creazione in corso", + "comboCreated": "Combinazione creata", + "swapFormats": "Scambia formati", + "daysAgo": "Giorni fa", + "retries": "Tentativi", + "errorDuringRestore": "Errore durante il ripristino", + "eventsAppearHint": "Suggerimento sulla visualizzazione degli eventi", + "noLockouts": "Nessun blocco", + "webSearchDesc": "Descrizione della ricerca web", + "audioProvidersHeading": "Titolo dei provider audio", "cloudAgentProviders": "Provider di agenti cloud", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Minuti fa", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", + "liveAutoRefreshing": "Aggiornamento automatico in tempo reale", + "webSearch": "Ricerca web", + "anthropicPrefixPlaceholder": "Segnaposto del prefisso Anthropic", + "addModelToCombo": "Aggiungi modello alla combinazione", + "failedToLoad": "Caricamento non riuscito", + "categoryMedia": "Categoria Media", + "enableCloud": "Abilita Cloud", + "expirationBannerExpiringSoon": "Banner di scadenza imminente", + "retry": "Riprova", + "embeddings": "Embedding", + "errorCount": "Conteggio errori", + "backupReasonManual": "Motivo del backup: manuale", + "safeSearchModerate": "Ricerca sicura moderata", + "activeLimiters": "Limitatori attivi", + "a2aCardTitle": "Titolo della scheda A2A", + "cloudWorkerUnreachable": "Cloud Worker non raggiungibile", + "testFailed": "Test non riuscito", + "compatibleBaseUrlHint": "Suggerimento per l'URL di base compatibile", + "usageTracking": "Monitoraggio dell'utilizzo", + "disableCloudTitle": "Titolo per la disattivazione del cloud", + "noConnections": "Nessuna connessione", + "providerHealth": "Stato del provider", + "confirmDbImport": "Conferma l'importazione del database", + "notAvailableSymbol": "Simbolo non disponibile", + "backupsAvailable": "Backup disponibili", + "providerAuto": "Provider automatico", + "newProviderNamePlaceholder": "Segnaposto per il nome del nuovo provider", + "a2aQuickStartStep2": "Passaggio 2 della guida introduttiva A2A", + "ok": "OK", + "available": "Disponibile", + "noBackupYet": "Nessun backup per ora", + "more": "Altro", + "noCompatibleYet": "Nessun elemento compatibile per ora", + "multiProvider": "Multi-provider", + "repairEnvHint": "Suggerimento per la riparazione dell'ambiente", + "disablingCloud": "Disattivazione del cloud", + "testBench": "Banco di prova", + "valid": "Valido", + "cloudBenefitShare": "Condivisione dei vantaggi del cloud", + "mcpCardTitle": "Titolo della scheda MCP", + "disableConfirm": "Conferma la disattivazione", + "filters": "Filtri", + "expirationBannerExpiredDesc": "Descrizione del banner di scadenza avvenuta", + "saveComboDefaults": "Salva le impostazioni predefinite della combinazione", + "cloudConnectedVerified": "Connessione al cloud verificata", + "uptime": "Tempo di attività", + "compatibleProdPlaceholder": "Segnaposto compatibile per la produzione", + "fallbackChainsTitle": "Titolo delle catene di fallback", + "oauthLabel": "Etichetta OAuth", + "a2aCardDescription": "Descrizione della scheda A2A", + "okShort": "OK breve", + "maintenance": "Manutenzione", + "formatConverter": "Convertitore di formato", + "zedImportNetworkError": "Errore di rete durante l'importazione da Zed", + "apiKeyLabel": "Etichetta della chiave API", + "noModelsForProvider": "Nessun modello per il provider", + "mcpCardDescription": "Descrizione della scheda MCP", + "apiTypeLabel": "Etichetta del tipo di API", + "configuredProvidersLabel": "Etichetta dei provider configurati", + "maxRetriesLabel": "Etichetta del numero massimo di tentativi", + "title": "Titolo", "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", + "prefixHint": "Suggerimento per il prefisso", + "skipWizard": "Salta la procedura guidata", + "failedCount": "Conteggio degli errori", + "confirmDbImportDesc": "Descrizione della conferma dell'importazione del database", + "entries": "Voci", + "until": "Fino a", + "disableCombo": "Disabilita combinazione", + "liveMonitorDescriptionPrefix": "Prefisso della descrizione del monitoraggio in tempo reale", + "runningCount": "Conteggio delle attività in esecuzione", + "noActiveConnectionsInGroup": "Nessuna connessione attiva nel gruppo", + "savedSuccessfully": "Salvato correttamente", + "systemStorage": "Archiviazione di sistema", + "videoDesc": "Descrizione del video", + "maxResults": "Numero massimo di risultati", + "timeRangeMonth": "Intervallo di tempo: mese", + "testSummary": "Riepilogo del test", + "failedSetPassword": "Impostazione della password non riuscita", "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "restore": "Ripristina", + "disableWarning": "Avviso di disabilitazione", + "moderationsDesc": "Descrizione delle moderazioni", + "providerHealthStatusAria": "ARIA dello stato di integrità del provider", + "modelNamePlaceholder": "Segnaposto del nome del modello", + "mcpQuickStartStep2": "Passaggio 2 dell'avvio rapido MCP", + "quickStart": "Avvio rapido", + "fullExportFailedWithError": "Esportazione completa non riuscita con errore", + "loadingBackups": "Caricamento dei backup", + "anthropicBaseUrlPlaceholder": "Segnaposto dell'URL di base di Anthropic", + "description": "Descrizione", + "noProviderFound": "Nessun provider trovato", + "auto": "Automatico", + "protocolsDescription": "Descrizione dei protocolli", + "cloudSessionNote": "Nota sulla sessione cloud", + "advancedSettings": "Impostazioni avanzate", + "defaultStrategy": "Strategia predefinita", + "purgeExpiredLogs": "Elimina definitivamente i log scaduti", + "justNow": "Proprio ora", + "providerTestFailed": "Test del provider non riuscito", + "openaiBaseUrlPlaceholder": "Segnaposto dell'URL di base di OpenAI", + "image": "Immagine", + "failedCreateChain": "Creazione della catena non riuscita", + "importDatabase": "Importa database", + "allDataLocal": "Tutti i dati in locale", + "sectionTitle": "Titolo della sezione", + "failedToggle": "Attivazione/disattivazione non riuscita", + "editCombo": "Modifica combinazione", + "testResults": "Risultati del test", + "searchQuery": "Query di ricerca", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", + "duplicate": "Duplica", + "createCombo": "Crea combinazione", + "searchTypeWeb": "Tipo di ricerca: web", + "addChain": "Aggiungi catena", + "prefixLabel": "Etichetta del prefisso", + "listModelsDesc": "Descrizione dell'elenco dei modelli", + "databaseSize": "Dimensione del database", + "chainCreated": "Catena creata", + "providerTestTimeout": "Timeout del test del provider", + "routingStrategy": "Strategia di routing", + "translateAction": "Traduci", + "exportFailed": "Esportazione non riuscita", + "connectedVerificationPending": "Connesso, verifica in sospeso", + "a2aQuickStartTitle": "Titolo della guida introduttiva ad A2A", + "couldNotTest": "Impossibile eseguire il test", + "testAllCompatible": "Testa tutti quelli compatibili", + "anthropicCompatibleName": "Nome compatibile con Anthropic", + "disabling": "Disabilitazione", + "failedEnable": "Abilitazione non riuscita", + "categoryUtility": "Categoria Utilità", + "customUrlOptional": "URL personalizzato facoltativo", + "localProviders": "Provider locali", + "comboNamePlaceholder": "Segnaposto del nome della combinazione", + "memoryRss": "Memoria RSS", + "disableProvider": "Disabilita provider", + "welcomeDesc": "Descrizione di benvenuto", + "nameLabel": "Etichetta del nome", + "allOperational": "Tutto operativo", + "backupNow": "Esegui backup ora", + "providerMaxRetriesAria": "ARIA per il numero massimo di tentativi del provider", + "textToSpeechDesc": "Descrizione della sintesi vocale", + "machineId": "ID macchina", + "globalProxy": "Proxy globale", + "hitsMisses": "Riscontri e mancate corrispondenze", + "testDesc": "Descrizione del test", + "chatDesc": "Descrizione della chat", + "importSuccess": "Importazione riuscita", "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "a2aQuickStartStep1": "Passaggio 1 della guida introduttiva ad A2A", + "importFailed": "Importazione non riuscita", + "inputPlaceholder": "Segnaposto di input", + "providerModelsTitle": "Titolo dei modelli del provider", + "lastBackup": "Ultimo backup", + "yourEndpoint": "Il tuo endpoint", + "autoDisableThresholdDesc": "Descrizione della soglia di disabilitazione automatica", + "rerankDesc": "Descrizione del riordinamento", + "modelsPathPlaceholder": "Segnaposto del percorso dei modelli", + "noCombosYet": "Nessuna combinazione presente", + "connectedVerificationPendingWithError": "Connesso, verifica in sospeso con errore", + "comboDefaultsGuideHint1": "Suggerimento 1 della guida alle impostazioni predefinite delle combinazioni", + "enableCloudTitle": "Titolo per l'abilitazione del cloud", + "configuredProvidersHint": "Suggerimento sui provider configurati", + "paused": "In pausa", + "llmProviders": "Provider LLM", + "enableCombo": "Abilita combinazione", + "removeProviderOverrideAria": "ARIA per la rimozione dell'override del provider", + "nodeVersion": "Versione di Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Esportazione non riuscita con errore", + "proxyConfigured": "Proxy configurato", + "concurrencyPerModel": "Concorrenza per modello", + "protocolTasksLabel": "Etichetta attività del protocollo", + "oauthProviders": "Provider OAuth", + "lockedCount": "Numero di elementi bloccati", + "deleteChainConfirm": "Conferma eliminazione catena", + "recentTranslations": "Traduzioni recenti", + "zedImportButton": "Pulsante di importazione Zed", + "responsesDesc": "Descrizione delle risposte", + "testedCount": "Numero di elementi testati", + "providersCommaSeparatedPlaceholder": "Segnaposto dei provider separati da virgole", + "signatureDefaults": "Valori predefiniti della firma", + "errorCreating": "Errore durante la creazione", + "timeRangeYear": "Intervallo temporale: anno", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Cloud disabilitato correttamente", + "deleteConfirm": "Conferma eliminazione", + "check": "Verifica", + "safeSearch": "Ricerca sicura", + "protocolLastActivity": "Ultima attività del protocollo", + "openMcpDashboard": "Apri la dashboard MCP", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Etichetta del percorso della chat", + "retryDelay": "Ritardo tra i tentativi", + "errorUpdating": "Errore durante l'aggiornamento", + "ideCliIntegrations": "Integrazioni IDE e CLI", + "imageGeneration": "Generazione di immagini", + "apiKeyRequired": "Chiave API obbligatoria", + "resetAllTitle": "Titolo per reimpostare tutto", + "connectionError": "Errore di connessione", + "modelName": "Nome del modello", + "apiKeyForCheck": "Chiave API per la verifica", + "cloudRequestTimeout": "Timeout della richiesta cloud", + "showConfiguredOnly": "Mostra solo quelli configurati", "showFreeOnly": "Solo gratuito", "addFirstProvider": "Aggiungi il tuo primo fornitore", "addFirstProviderDesc": "Connetti un provider AI per avviare l'instradamento delle richieste tramite OmniRoute. Puoi utilizzare provider gratuiti, chiavi API o account OAuth.", "learnMore": "Saperne di più", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Includi domini", + "promptCache": "Cache dei prompt", + "cloudConnected": "Cloud connesso", + "deleteChain": "Elimina catena", + "chatPathPlaceholder": "Segnaposto del percorso della chat", + "databasePath": "Percorso del database", + "usingLocalServer": "Utilizzo del server locale", + "globalComboConfig": "Configurazione globale delle combinazioni", + "backupFailed": "Backup non riuscito", + "tabProtocols": "Protocolli delle schede", + "continue": "Continua", + "categorySearch": "Ricerca per categoria", + "rateLimitStatus": "Stato del limite di frequenza", + "repairEnvSuccess": "Riparazione dell'ambiente riuscita", + "nameRequired": "Nome obbligatorio", + "country": "Paese", + "trackMetricsDesc": "Descrizione del monitoraggio delle metriche", + "durationSecondsShort": "Durata in secondi (breve)", + "formatConverterDescription": "Descrizione del convertitore di formato", + "cloudBenefitAccess": "Accesso ai vantaggi del cloud", + "maxRetries": "Numero massimo di tentativi", + "queueTimeout": "Timeout della coda", "queueDepth": "Profondità della coda", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Aggiungi provider", + "realtime": "In tempo reale", + "totalTranslations": "Traduzioni totali", + "protocolActiveStreamsLabel": "Etichetta dei flussi attivi del protocollo", + "repairEnv": "Ripara ambiente", + "modelsCount": "Numero di modelli", + "viewBackups": "Visualizza backup", + "responsesApi": "API Responses", + "copyComboName": "Copia nome della combinazione", + "failures": "Errori", + "failedUpdate": "Aggiornamento non riuscito", + "imageDesc": "Descrizione dell'immagine", + "failedCreate": "Creazione non riuscita", + "remainingOfLimit": "Residuo rispetto al limite", + "protocolsTitle": "Titolo dei protocolli", + "expirationBannerExpiringSoonDesc": "Descrizione del banner di scadenza imminente", + "source": "Origine", + "failed": "Non riuscito", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", + "mcpQuickStartStep1": "MCP: passaggio 1 della guida introduttiva", + "runTest": "Esegui test", + "loadingFallbackChains": "Caricamento delle catene di fallback", + "healthy": "Integro", + "version": "Versione", + "saveBlockWeighted": "Salva blocco ponderato", + "zedImportNone": "Nessuna importazione da Zed", + "noBackupsYet": "Nessun backup per ora", + "noGlobalProxy": "Nessun proxy globale", + "noModels": "Nessun modello", + "stickyLimit": "Limite persistente", + "passedCount": "Conteggio dei test superati", + "zedImportFailed": "Importazione da Zed non riuscita", + "saving": "Salvataggio in corso", + "testAll": "Testa tutto", + "globalProxyDesc": "Descrizione del proxy globale", + "latencyP99": "Latenza P99", + "connectingToCloud": "Connessione al cloud in corso", + "responses": "Risposte", + "errorDeleting": "Errore durante l'eliminazione", + "openaiPrefixPlaceholder": "Segnaposto del prefisso Openai", + "enterPassword": "Inserisci la password", + "openA2aDashboard": "Apri la dashboard A2A", + "enableProvider": "Abilita provider", + "modeTest": "Modalità di test", + "failedDeleteChain": "Eliminazione della catena non riuscita", + "providerDesc": "Descrizione del provider", + "templateLoadHint": "Suggerimento per il caricamento del modello", + "lastFailure": "Ultimo errore", + "moveDown": "Sposta in basso", + "providerLabel": "Etichetta del provider", + "clearCacheFailed": "Svuotamento della cache non riuscito", + "imagesGenerations": "Generazione di immagini", + "repairEnvWorking": "Riparazione dell'ambiente in corso", + "millisecondsShort": "ms", + "globalLabel": "Etichetta globale", + "failuresPlural": "Errori", + "completionsLegacyDesc": "Descrizione dei completamenti legacy", + "searchProviders": "Cerca provider", + "chatPathHint": "Suggerimento per il percorso della chat", + "defaultStrategyDesc": "Descrizione della strategia predefinita", + "latencyP95": "Latenza P95", + "textToSpeech": "Sintesi vocale", + "searchType": "Tipo di ricerca", + "messages": "Messaggi", + "aggregatorsGateways": "Aggregatori e gateway", + "comboStrategyAria": "ARIA della strategia combinata", "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", + "testingConnection": "Verifica della connessione", + "excludeDomains": "Escludi domini", + "webCookieProviders": "Provider di cookie web", + "allTestsPassed": "Tutti i test sono stati superati", + "openaiCompatibleName": "Nome compatibile con OpenAI", + "warningCostOptimizedPartialPricing": "Avviso sui prezzi parziali ottimizzati per i costi", + "comboDefaultsGuideTitle": "Titolo della guida alle impostazioni predefinite delle combinazioni", + "hoursAgo": "ore fa", + "notAvailable": "Non disponibile", + "skipAndContinue": "Salta e continua", + "moderations": "Moderazioni", + "proxyConfig": "Configurazione proxy", + "upstreamProxyProviders": "Provider proxy upstream", + "exportAll": "Esporta tutto", + "queuedCount": "Numero di elementi in coda", + "resetAll": "Reimposta tutto", + "noTranslations": "Nessuna traduzione", + "avgLatency": "Latenza media", + "throttleStatus": "Stato della limitazione", + "backupRetentionDesc": "Descrizione della conservazione dei backup", + "noCBData": "Nessun dato CB", + "chainDeleted": "Catena eliminata", + "timeLeft": "Tempo rimanente", + "expirationBannerExpired": "Banner di scadenza scaduto", + "language": "Lingua", + "invalidFileType": "Tipo di file non valido", + "monitoredProviders": "Provider monitorati", + "errors": "Errori", "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "chatCompletions": "Completamenti chat", + "exampleTemplatesHint": "Suggerimento per i modelli di esempio", + "retryDelayLabel": "Etichetta del ritardo tra i tentativi", + "audioTranscription": "Trascrizione audio", + "fallbackChainsDesc": "Descrizione delle catene di fallback", + "exampleTemplates": "Modelli di esempio", + "connectionsCount": "Numero di connessioni", + "modelsPathLabel": "Etichetta del percorso dei modelli", + "activeProvidersHint": "Suggerimento per i provider attivi", + "activeLockouts": "Blocchi attivi", + "invalid": "Non valido", + "skipPassword": "Salta password", + "moveUp": "Sposta su", + "timeRange": "Intervallo di tempo", + "stickyLimitDesc": "Descrizione del limite persistente", + "cloudBenefitEdge": "Vantaggio del cloud edge", + "custom": "Personalizzato", + "verifying": "Verifica in corso", + "baseUrlLabel": "Etichetta URL di base", + "setPassword": "Imposta password", + "safeSearchStrict": "Safe Search rigorosa", + "noChangesSinceBackup": "Nessuna modifica dal backup", + "modelsPathHint": "Suggerimento sul percorso dei modelli", + "audioTranscriptions": "Trascrizioni audio", + "testCombo": "Testa combinazione", + "mcpQuickStartTitle": "Guida introduttiva a MCP", + "comboUpdated": "Combinazione aggiornata", + "weighted": "Ponderato", + "providers": "Provider", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Descrizione dell'assenza di catene di fallback", + "yesImport": "Sì, importa", + "lockoutsAutoRefreshHint": "Suggerimento sull'aggiornamento automatico dei blocchi", + "tabApis": "Scheda API", + "sectionDescription": "Descrizione della sezione", + "filter": "Filtra", + "purgeLogsFailed": "Eliminazione dei log non riuscita", + "latency": "Latenza", + "testAllOAuth": "Testa tutti gli OAuth", + "mcpQuickStartStep3": "Passaggio 3 della guida introduttiva a MCP", + "repairEnvFailed": "Riparazione dell'ambiente non riuscita", + "zedImportHint": "Suggerimento per l'importazione da Zed", + "modelsAcrossEndpoints": "Modelli tra endpoint", + "autoDisableBannedAccounts": "Disabilita automaticamente gli account bloccati", + "securityDesc": "Descrizione della sicurezza", + "listModels": "Elenca modelli", + "backupRestore": "Backup e ripristino", + "target": "Destinazione", + "zedImportSuccess": "Importazione da Zed riuscita", + "lastHeaderUpdate": "Ultimo aggiornamento dell'intestazione", + "categoryCore": "Categoria principale", + "noFallbackChains": "Nessuna catena di fallback", + "noSearchProviders": "Nessun provider di ricerca", + "autoBalance": "Bilanciamento automatico", + "noModelsYet": "Nessun modello disponibile", + "signatureFamily": "Famiglia di firme", + "externalApiCalls": "Chiamate API esterne", + "providerOverridesDesc": "Descrizione delle sostituzioni del provider", + "signatureTool": "Strumento di firma", + "connectionFailed": "Connessione non riuscita", + "activeLimitersPlural": "Limitatori attivi (plurale)", + "doneDesc": "Descrizione del completamento", + "down": "Non disponibile", + "noDataYet": "Nessun dato disponibile", + "activeProviders": "Provider attivi", + "nameInvalid": "Nome non valido", + "skip": "Salta", + "createChain": "Crea catena", + "audioSpeech": "Sintesi vocale", + "cacheCleared": "Cache svuotata", + "searchTypeNews": "Tipo di ricerca: notizie", + "durationMillisecondsShort": "Durata in millisecondi (abbreviata)", + "addOpenAICompatible": "Aggiungi compatibile con Open Ai", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "In coda", + "domainPlaceholder": "Segnaposto del dominio", + "durationMinutesShort": "Durata in minuti (abbreviata)", + "verifyingConnection": "Verifica della connessione", + "imageProviders": "Provider di immagini", + "protocolToolsLabel": "Etichetta degli strumenti di protocollo", + "queryPlaceholder": "Segnaposto della query", + "videoGeneration": "Generazione video", + "timeRangeWeek": "Intervallo di tempo: settimana", + "limitExhausted": "Limite esaurito", + "failedDisable": "Disattivazione non riuscita", + "inMemoryNote": "Nota in memoria", + "compatibleHint": "Suggerimento sulla compatibilità", + "errorShort": "Errore breve", + "advancedHint": "Suggerimento avanzato", + "restoreFailed": "Ripristino non riuscito", + "searchProvidersHeading": "Intestazione dei provider di ricerca", + "comboName": "Nome della combinazione", + "autoDisableDescription": "Descrizione della disattivazione automatica", + "embeddingsDesc": "Descrizione degli embedding", + "operational": "Operativo", + "testAllApiKey": "Testa tutte le chiavi API", + "backupCreated": "Backup creato", + "errorDuringImport": "Errore durante l'importazione", + "comboDefaultsGuideHint2": "Suggerimento 2 della guida alle impostazioni predefinite delle combinazioni", + "connecting": "Connessione in corso", + "fillModelAndProviders": "Compila modello e provider", + "syncing": "Sincronizzazione in corso", + "resetConfirm": "Conferma reimpostazione", + "trackMetrics": "Monitora le metriche", + "successful": "Completato correttamente", + "recovering": "Ripristino in corso", + "autoDisableThreshold": "Soglia di disattivazione automatica", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Sincronizzazione dei dati in corso", + "cloudBenefitPorts": "Porte per i vantaggi del cloud", + "compatibleProviders": "Provider compatibili", "freeTierProviders": "Provider del livello gratuito", "freeTierLabel": "Livello gratuito disponibile", "freeTierProvidersDesc": "Fornitori con livelli gratuiti: alcuni richiedono la registrazione con una chiave API, altri non necessitano di alcuna credenziale.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", + "clearCache": "Svuota la cache", + "reqs": "Richieste", + "addAnthropicCompatible": "Aggiungi provider compatibile con Anthropic", + "apiKeyProviders": "Provider di chiavi API", + "tabsAria": "ARIA delle schede", + "resetting": "Reimpostazione in corso", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Motivo del backup prima del ripristino", + "disableCloud": "Disabilita il cloud", + "newProviderNameAria": "ARIA del nome del nuovo provider", + "passwordsMismatch": "Le password non corrispondono", + "a2aQuickStartStep3": "Passaggio 3 dell'avvio rapido di A2A", + "liveMonitorDescriptionSuffix": "Suffisso della descrizione del monitoraggio in tempo reale", + "failedAddProvider": "Impossibile aggiungere il provider", + "addAtLeastOneProvider": "Aggiungi almeno un provider", + "reasonSeparator": "Separatore del motivo", + "zedImporting": "Importazione di Zed in corso", + "confirmPasswordPlaceholder": "Conferma password", + "whatYouGet": "Cosa ottieni", + "signatureSession": "Sessione di firma", + "errorCountNoCode": "Conteggio errori senza codice", + "testing": "Test", + "providersCommaSeparated": "Provider separati da virgole", + "exportDatabase": "Esporta database", + "hitRate": "Tasso di successo", + "completionsLegacy": "Completamenti legacy", + "removeModel": "Rimuovi modello", + "timeRangeDay": "Intervallo temporale: giorno", + "cloudRequestFailed": "Richiesta cloud non riuscita", + "updatedAt": "Aggiornato il", + "monitoredProvidersHint": "Suggerimento sui provider monitorati", + "connectionSuccessful": "Connessione riuscita", + "latencyP50": "Latenza P50", + "logsDeleted": "Log eliminati", + "chatTester": "Tester della chat", + "safeSearchOff": "Ricerca sicura disattivata", + "nameHint": "Suggerimento per il nome", + "debugToggle": "Interruttore di debug", "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "issuesLabel": "Etichetta dei problemi", + "optionAny": "Qualsiasi opzione", + "maxNestingDepth": "Profondità massima di annidamento", + "rerank": "Riordinamento", + "checking": "Verifica in corso", + "getStarted": "Inizia", + "restoreSuccess": "Ripristino riuscito", + "issuesDetected": "Problemi rilevati", + "signatureCache": "Cache delle firme", + "modelLockouts": "Blocchi dei modelli", + "usingCloudProxy": "Utilizzo del proxy cloud", + "loadingHealth": "Caricamento dello stato", + "providerOverrides": "Override dei provider", + "audioTranscriptionDesc": "Descrizione della trascrizione audio", + "learnedFromHeaders": "Appreso dagli header", + "totalRequests": "Richieste totali", + "cloudUnstableNote": "Nota sull'instabilità del cloud", "gamificationAdmin": "Amministrazione della gamification", "monitorAnomaliesAndHealth": "Monitorare le anomalie e l'integrità del sistema", "flaggedAnomalies": "Anomalie segnalate", @@ -704,7 +704,7 @@ "apiKey": "Chiave API", "xpLastHour": "XP (1 ora)", "zScore": "Punteggio Z", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Sospetto", "tokensCommunityServers": "Server della comunità", "tokensServerNamePlaceholder": "Nome del server", "tokensApiKeyPlaceholder": "Chiave API", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Caricamento altro...", "recommended": "Consigliato", "understand": "Ho capito", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", + "batchConceptTitle": "Elaborazione in batch", + "batchConceptSubtitle": "Elabora migliaia di richieste in modo asincrono a circa il 50% del costo (finestra di 24 ore). Ideale per valutazioni, classificazione ed embedding.", + "batchConceptHowItWorks": "Come funziona", + "batchConceptBenefit50pct": "Sconto del 50% sui token di input + output", + "batchConceptAsync24h": "Asincrono con una finestra di completamento di 24 ore", + "batchConceptUseCases": "Ideale per classificazioni in blocco, valutazioni ed embedding", + "batchHeaderSubtitle": "Esegui più richieste come un unico processo", + "batchStep1": "1 · Carica JSONL", + "batchStep1Desc": "Aggiungi richieste", + "batchStep2": "2 · Crea batch", + "batchStep2Desc": "Esegui processo", + "batchStep3": "3 · Ottieni risultati", + "batchStep3Desc": "Scarica output", + "filesConceptTitle": "File batch", + "filesConceptSubtitle": "File JSONL utilizzati dai batch: richieste di input, risultati ed errori.", + "filesConceptInput": "Input — il tuo JSONL con una richiesta per riga", + "filesConceptOutput": "Output — risultati delle richieste completate", + "filesConceptError": "Errori — richieste non riuscite", + "filesConceptRetention": "Conservazione: 30 giorni per impostazione predefinita (29 giorni su Anthropic)", + "wizardTitle": "Nuovo batch", + "wizardClose": "Chiudi", + "wizardNext": "Avanti", + "wizardBack": "Indietro", + "wizardCancel": "Annulla", + "wizardCreate": "Crea batch", + "wizardCreating": "Creazione in corso…", + "wizardStep1Destination": "Destinazione", "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", + "wizardStep3Validate": "Convalida", + "wizardStep4Cost": "Costo e creazione", "wizardProviderLabel": "Provider", "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "wizardModelLabel": "Modello", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (lo convertiremo)", + "wizardDropOrPick": "Trascina qui un file o fai clic per selezionarlo", + "wizardCsvMappingTitle": "Mappa le colonne CSV → campi della richiesta", + "wizardCsvMappingAddField": "Aggiungi campo", "wizardCsvNoColumns": "Nessuna colonna rilevata nell'intestazione CSV.", "wizardCsvIgnoreColumn": "— ignora —", "wizardCsvCustomIdMapped": "custom_id mappato", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} righe analizzate", "wizardCsvRowsSkipped": "{count} righe saltate", "wizardCsvRowError": "Riga {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Tutte le righe sono valide", "wizardValidating": "Convalida in corso…", "wizardValidationParseFailed": "Convalida non riuscita — impossibile analizzare il contenuto.", "wizardValidationSummary": "{lines} righe · {ids} custom_ids univoci", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Rilevati custom_ids duplicati:", "wizardValidationFirstErrors": "Errori (primi {count}):", "wizardValidationLine": "Riga {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", + "wizardValidationErrors": "Errori di convalida", + "wizardValidationPreview": "Anteprima (prime 5 richieste)", + "wizardValidationSamplingNote": "Il file è di grandi dimensioni: è stato convalidato tramite campionamento (prime 1000 + ultime 100 righe). La convalida completa viene eseguita lato server.", + "wizardCostSync": "Costo sincrono", + "wizardCostBatch": "Costo batch (-50%)", + "wizardCostSavings": "Risparmio", + "wizardCostEstimatedNotice": "Costo stimato — la fatturazione effettiva può variare.", + "wizardErrorUpload": "Caricamento del file non riuscito. Riprova.", + "wizardErrorCreate": "Creazione del batch non riuscita. Riprova.", + "wizardEmptyProviders": "Connetti un provider con supporto per i batch (OpenAI, Anthropic o Gemini) per creare un batch.", + "uploadModalTitle": "Carica file batch", + "uploadModalDropOrPick": "Trascina qui un file .jsonl o fai clic per selezionarlo", + "uploadModalUpload": "Carica", + "uploadModalCancel": "Annulla", + "uploadModalError": "Caricamento non riuscito. Riprova.", + "uploadModalSuccess": "Caricato", + "uploadModalSizeLimit": "Massimo 512 MB", + "batchListNewButton": "Nuovo batch", + "batchListAutoRefresh": "Aggiornamento automatico ogni 30 s", + "batchListCostColumn": "Costo", + "batchActionCancel": "Annulla", + "batchActionDownloadOutput": "Scarica output", + "batchActionDownloadErrors": "Scarica errori", + "batchActionRetry": "Riprova richieste non riuscite", + "batchActionRetryConfirm": "Riprovare {n} richiesta/e non riuscita/e? Il costo finale dipende dai token effettivamente utilizzati.", + "expirationBadgeCritical": "Critico", + "expirationBadgeWarning": "A breve", + "expirationBadgeNormal": "In sospeso", + "expirationBadgeExpired": "Scaduto", + "filesListUploadButton": "Caricamento", + "filesListUsedByColumn": "Utilizzato da", + "filesListUsedByNone": "Nessuno", "filesListUsedByRoleInput": "input", "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", + "filesListUsedByRoleError": "errore", + "filesListSizeColumn": "Dimensione", + "batchListProgressPartial": "(parziale)", "batchListProviderColumn": "Provider", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "Altro", + "batchListTitle": "Batch", + "batchListCount": "{count} batch", + "batchListRemovingCompleted": "Rimozione…", + "batchListRemoveCompleted": "Rimuovi completati", + "batchListTableStatus": "Stato", "batchListTableId": "ID", "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableModel": "Modello", + "batchListTableProgress": "Avanzamento", + "batchListTableCreated": "Creato", + "batchListTableExpires": "Scade", + "batchListLoading": "Caricamento…", + "batchListEmpty": "Nessun batch trovato", + "batchListValidating": "Convalida…", + "batchStatusAll": "Tutti gli stati", + "batchStatusInProgress": "In corso", + "batchStatusValidating": "Convalida", + "batchStatusFinalizing": "Finalizzazione", + "batchStatusCompleted": "Completato", + "batchStatusFailed": "Non riuscito", + "batchStatusCancelled": "Annullato", + "batchStatusCancelling": "Annullamento", + "batchStatusExpired": "Scaduto", + "batchStatusCompletedWithFailures": "completato con errori", + "batchStatusInProgressWithFailures": "in corso (con errori)", + "batchStatusFinalizingWithFailures": "in finalizzazione (con errori)", + "batchStatusCancelledWithFailures": "annullato con errori", + "batchStatusExpiredWithFailures": "scaduto (parziale)", + "wizardCostEstimating": "Stima del costo…", + "wizardCostRequests": "Richieste", + "wizardCostInputTok": "token di input", + "wizardCostOutputTok": "token di output", + "wizardCostWindow": "Finestra", + "wizardDestinationSelectProvider": "Seleziona un provider…", + "wizardDestinationSelectModel": "Seleziona un modello…", + "wizardDestinationConnectProvider": "Connetti un provider", + "batchListBatchCreated": "Batch {id} creato — aggiornamento dell'elenco…", + "batchListBatchCreatedDismiss": "Ignora", + "batchListRefreshing": "Aggiornamento…", + "batchListRefresh": "Aggiorna", + "uploadFileModalRemove": "Rimuovi", + "uploadFileModalUploading": "Caricamento…", + "wizardInputReading": "Lettura del file…", + "wizardInputReady": "Pronto", + "wizardInputLargeFileLabel": "File di grandi dimensioni — convalida a campione", + "wizardInputCsvJsonlReady": "JSONL generato — pronto per la convalida.", + "wizardInputLargeFileWarning": "Rilevato un file di grandi dimensioni — la convalida viene eseguita a campione (primi 5 MB + ultimi 100 KB). La convalida completa avviene lato server.", + "wizardCostWindow24h": "Finestra di completamento di 24 ore", + "wizardValidationFieldsOk": "campi obbligatori validi", + "filesListDelete": "Elimina", + "filesListDownload": "Scarica", + "batchDetailActionCancel": "Annulla batch", + "batchDetailActionRetry": "Riprova le richieste non riuscite", + "batchDetailCancelling": "Annullamento…", + "batchDetailRetrying": "Preparazione del nuovo tentativo…", + "batchDetailCancelConfirm": "Annullare questo batch? Le richieste in corso verranno interrotte.", + "batchActionCancelError": "Impossibile annullare il batch. Riprova.", + "batchActionRetryError": "Impossibile riprovare le richieste non riuscite. Riprova.", + "batchConceptRetentionNote": "I file dei risultati e degli errori vengono conservati per 30 giorni (Anthropic: 29 giorni)", "batchFilesSizeColumn": "Dimensione", "toggleNoAuthProvider": "Attiva/disattiva il provider senza autenticazione", "loadingModels": "Caricamento modelli…", @@ -961,7 +961,7 @@ "degraded": "Degradato", "zeroConfigBannerTitle": "Esecuzione in modalità zero-config", "zeroConfigBannerBody": "OmniRoute ha generato automaticamente chiavi di crittografia sicure al primo avvio. Sono memorizzate in {dataDir}. Non è necessaria alcuna azione: i tuoi dati sono crittografati e al sicuro. Per utilizzare chiavi personalizzate, aggiungi JWT_SECRET e STORAGE_ENCRYPTION_KEY a quel file.", - "batchRelativeTimeIn": "in {value}", + "batchRelativeTimeIn": "tra {value}", "batchRelativeTimeAgo": "{value} fa", "batchDetailsTitle": "Dettagli del Batch", "batchProgress": "Progresso", @@ -988,14 +988,14 @@ "disabled": "Disabilitato", "featureFlagOmnirouteEmergencyFallbackDescription": "Indirizza le richieste con budget esaurito al provider/modello di fallback gratuito di emergenza.", "featureFlagArenaEloSyncEnabledDescription": "Abilita la sincronizzazione periodica dell'ELO della classifica Arena AI per le graduatorie di intelligenza dei modelli.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Genera e inserisce riepiloghi delle conversazioni quando il routing combinato cambia modello. Disabilita questa opzione per gestire i cambi di modello in modo indipendente e impedire richieste di passaggio in background per tutte le combinazioni esistenti e future.", "featureFlagExposeCcDiscoveryAliasesDescription": "Mostra gli id specchio claude/<provider>/<model> su /v1/models in modo che la scoperta dei modelli gateway di Claude Code elenchi i modelli non-Claude. Attenzione: raddoppia le voci nel catalogo per tutti i client quando abilitato globalmente.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Interruttore principale per gli alias del gateway no-think/<provider>/<model>. Attivo (impostazione predefinita): /v1/models mostra una variante senza ragionamento per ogni modello Claude idoneo con funzionalità di ragionamento e un ID no-think/ inviato in una richiesta viene ricondotto al modello reale con il ragionamento disattivato. Disattivo: non viene mostrata alcuna variante e un ID no-think/ viene trattato come qualsiasi altro ID modello sconosciuto. L'abilitazione/disabilitazione per singolo modello ModelSpec.noThinkingAlias continua ad applicarsi quando questa opzione è attiva.", "featureFlagChatVirtualLanesEnabledDescription": "Attiva corsie di ammissione virtuali adattive per tenant per l'invio ai provider (#9654): il picco di un tenant non restituisce più 503 a un altro. La variabile d'ambiente OMNIROUTE_CHAT_VIRTUAL_LANES ha la precedenza su questa impostazione della dashboard; le modifiche hanno effetto al riavvio del server.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Pagine dei provider nella dashboard: mostra il badge Gratis solo in base ai segnali rispettati dal provider — elimina l'euristica del nome visualizzato, i campi gratuiti non booleani e i suffissi :free per i provider registrati senza un piano gratuito documentato. Se disattivato, mantiene la regola storica del badge.", + "featureFlagProxySkipRecentlyFailedDescription": "I pool di proxy e la rotazione per account di opencode smettono temporaneamente di riproporre un proxy che ha appena avuto un errore (sonda TCP rifiutata o risposta 429 ricevuta tramite il proxy) per un periodo per processo che raddoppia a ogni ripetizione, fino a un limite massimo. Non viene registrato alcuno stato del proxy; se tutti i candidati vengono messi da parte, la scelta rimane invariata. Disattivato per impostazione predefinita: l'ordine di selezione corrisponde esattamente alla normale rotazione.", + "featureFlagProxyPoolEgressObservationDescription": "Mostra, sotto un pool di proxy nella dashboard, quanti IP di uscita osservati hanno servito i suoi membri nelle ultime 24 ore, quante connessioni li hanno utilizzati e il numero massimo di connessioni osservate dietro un singolo IP. In sola lettura, calcolato dal log dei proxy e mai utilizzato per l'instradamento. Disattivato per impostazione predefinita: l'editor dei pool rimane invariato e la route di osservazione restituisce null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Durante la scansione dello stato dei proxy, consente a una sonda rifiutata dalla destinazione (401/403/429: il proxy ha inoltrato la richiesta, ma la destinazione ha rifiutato questo IP di uscita) di azzerare la serie di errori consecutivi del proxy, come una sonda servita. Disattivato per impostazione predefinita: un rifiuto rimane neutro e mantiene la serie. Una risposta 5xx rimane inconcludente in entrambi i casi e un rifiuto non rimuove, disabilita o riattiva mai un proxy.", "sidebar": { "home": "Casa", "dashboard": "Pannello di controllo", @@ -1008,15 +1008,15 @@ "proxy": "Proxy", "limits": "Limiti e quote", "cliTools": "Strumenti CLI", - "media": "Media", + "media": "Contenuti multimediali", "settings": "Impostazioni", "translator": "Traduttore", "playground": "Playground", - "searchTools": "Search Tools", + "searchTools": "Strumenti di ricerca", "agents": "Agenti", "cloudAgents": "Agenti cloud", - "memory": "Memory", - "skills": "Skills", + "memory": "Memoria", + "skills": "Competenze", "omniSkills": "OmniSkill", "agentSkills": "AgenteSkills", "chaosConfig": "Modalità Caos", @@ -1055,64 +1055,64 @@ "serverDisconnectedMsg": "Il server proxy è stato arrestato o si sta riavviando.", "expandSidebar": "Espandi la barra laterale", "collapseSidebar": "Comprimi la barra laterale", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themes": "Temi", + "presetColors": "Colori popolari", + "createTheme": "Crea tema", + "chooseColor": "Scegli un colore", + "themeCoral": "Corallo", + "themeBlue": "Blu", + "themeRed": "Rosso", + "themeGreen": "Verde", + "themeViolet": "Viola", + "themeOrange": "Arancione", + "themeCyan": "Ciano", "cliToolsShort": "Strumenti", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "Processi batch", + "themeSystem": "Sistema dei temi", + "whitelabelingDesc": "Descrizione del white-labeling", + "switchThemes": "Cambia tema", + "themeAccentDesc": "Descrizione dell'accento del tema", + "uploadFavicon": "Carica favicon", + "themeDark": "Tema scuro", + "customLogoDesc": "Descrizione del logo personalizzato", + "sidebarVisibilityToggle": "Attiva/disattiva la visibilità della barra laterale", + "themeAccent": "Accento del tema", + "resetFavicon": "Reimposta favicon", + "whitelabeling": "Personalizzazione white-label", + "darkMode": "Modalità scura", + "uploadLogo": "Carica logo", + "themeLight": "Tema chiaro", + "appName": "Nome dell'app", + "appNameDesc": "Descrizione del nome dell'app", + "resetLogo": "Reimposta logo", + "customFavicon": "Favicon personalizzata", + "hideHealthLogs": "Nascondi i log di integrità", + "customLogo": "Logo personalizzato", + "appearance": "Aspetto", + "themeSelectionAria": "Selezione del tema ARIA", + "themeCreate": "Crea tema", + "customFaviconDesc": "Descrizione della favicon personalizzata", + "logoPreview": "Anteprima del logo", + "themeCustom": "Tema personalizzato", + "hideHealthLogsDesc": "Descrizione dell'opzione per nascondere i log di integrità", + "faviconPreview": "Anteprima della favicon", + "changelog": "Registro delle modifiche", + "contextSection": "Contesto e cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Combinazioni di motori", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Impostazioni di compressione", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Studio delle combinazioni", "combosLiveSubtitle": "Cascata di routing in tempo reale", "compressionStudio": "Compression Studio", "compressionExclusions": "Esclusioni", @@ -1128,27 +1128,27 @@ "compressionStudioSubtitle": "Cascata del motore in tempo reale", "compressionExclusionsSubtitle": "Bypass per-modello/endpoint", "chaosConfigSubtitle": "Esecuzione parallela multi-modello", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Instradamento", + "protocolsSection": "Protocolli", + "agentsAiSection": "Agenti e IA", + "cacheContextSection": "Cache e contesto", + "analyticsSection": "Analisi", + "costsSection": "Costi", + "monitoringSection": "Monitoraggio", + "auditSecuritySection": "Audit e sicurezza", + "devtoolsSection": "Strumenti di sviluppo", + "configurationSection": "Configurazione", + "aiFeaturesSection": "Funzionalità IA", "mcp": "MCP", "a2a": "A2A", "plugins": "Plugin", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", + "apiEndpoints": "Endpoint API", + "batchFiles": "File", + "analyticsEvals": "Valutazioni", + "analyticsSearch": "Ricerca", + "analyticsUtilization": "Utilizzo", + "analyticsComboHealth": "Stato delle combinazioni", + "analyticsCompression": "Compressione", "costsBudget": "Budget", "costsFreeTiers": "Budget del piano gratuito", "costsFreeTiersSubtitle": "Quote mensili di token gratuiti", @@ -1156,117 +1156,117 @@ "freeProviderRankingsSubtitle": "I migliori provider gratuiti classificati in base ai punteggi ELO dei modelli", "radar": "Catalogo Radar", "radarSubtitle": "Catalogo di modelli gratuito arricchito dalla comunità", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", + "costsQuotaShare": "Condivisione delle quote", + "costsPricing": "Prezzi", + "logsProxy": "Log del proxy", "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "logsActivity": "Attività", + "auditMcp": "Audit MCP", "auditA2a": "Verifica A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Aspetto", + "settingsAi": "Impostazioni IA", + "settingsSecurity": "Sicurezza", "settingsAccessTokens": "Token di accesso", "settingsFeatureFlags": "Flag di funzionalità", "settingsCache": "Cache", "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsRouting": "Instradamento", + "settingsResilience": "Resilienza", "modelLockout": "Blocco del modello", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Avanzate", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", + "quotaTracker": "Quota del provider", + "providerQuota": "Quota del provider", "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "consoleLogs": "Log della console", + "logsTimeline": "Cronologia", "logsTimelineSubtitle": "Timeline visiva delle richieste", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Conversazioni", + "conversationsSubtitle": "Conversazioni agentiche multi-turno", + "globalRouting": "Routing globale", + "mitmProxy": "Proxy MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Funzionalità agentiche", + "otherFeaturesSection": "Altre funzionalità", + "compressionContextGroup": "Compressione del contesto", + "gamificationGroup": "Gamificazione", + "toolsGroup": "Strumenti", + "integrationsGroup": "Integrazioni", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", + "costsParametersGroup": "Parametri dei costi", "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "batchGroup": "Elaborazione in batch", + "homeSubtitle": "Panoramica della dashboard", + "providersSubtitle": "Gestisci i provider di IA", + "quotaTrackerSubtitle": "Monitora i limiti di utilizzo", + "providerQuotaSubtitle": "Monitora i limiti di utilizzo dei provider", + "runtimeSubtitle": "Resilienza e sessioni in tempo reale", + "contextCombosSubtitle": "Combina i motori di compressione", + "cliToolsSubtitle": "Configura gli ambienti di runtime CLI", + "agentsSubtitle": "Gestisci gli agenti locali", + "cloudAgentsSubtitle": "Gestisci gli agenti basati sul cloud", + "apiEndpointsSubtitle": "Esponi endpoint personalizzati", + "proxySubtitle": "Impostazioni del proxy HTTP", + "mitmProxySubtitle": "Intercettazione MITM", + "oneProxySubtitle": "Gateway proxy pubblico", + "leaderboard": "Classifica", + "profile": "Profilo", + "tokens": "Token", + "gamificationAdmin": "Amministrazione della gamification", + "leaderboardSubtitle": "Classifiche e obiettivi", + "profileSubtitle": "Account e preferenze", + "tokensSubtitle": "Utilizzo dei token e budget", + "gamificationAdminSubtitle": "Monitoraggio delle anomalie e prevenzione degli imbrogli", + "usageSubtitle": "Statistiche sul traffico e sull'utilizzo", + "analyticsComboHealthSubtitle": "Affidabilità della destinazione combinata", + "analyticsUtilizationSubtitle": "Utilizzo dei provider", + "costsSubtitle": "Ripartizione della spesa", + "cacheSubtitle": "Tassi di hit della cache", + "analyticsCompressionSubtitle": "Statistiche sul risparmio di token", + "analyticsSearchSubtitle": "Analisi dello strumento di ricerca", + "analyticsEvalsSubtitle": "Risultati della suite di valutazione", "providerStats": "Statistiche del provider", "providerStatsSubtitle": "Metriche di latenza e prestazioni", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Log dell'applicazione", + "logsProxySubtitle": "Log del traffico proxy", + "consoleLogsSubtitle": "Output della console", + "logsActivitySubtitle": "Log delle attività utente", + "healthSubtitle": "Controllo dello stato del sistema", + "costsPricingSubtitle": "Regole di prezzo per modello", + "costsBudgetSubtitle": "Limiti di budget", + "costsQuotaShareSubtitle": "Condividi le quote dei provider tra le chiavi", + "auditLogSubtitle": "Audit delle autorizzazioni", + "auditMcpSubtitle": "Audit del server MCP", + "auditA2aSubtitle": "Audit del protocollo A2A", + "translatorSubtitle": "Conversione del formato", + "playgroundSubtitle": "Testa i prompt in tempo reale", + "searchToolsSubtitle": "Registro degli strumenti di ricerca", + "memorySubtitle": "Memoria persistente degli agenti", + "omniSkillsSubtitle": "Registro delle skill Sandbox", + "agentSkillsSubtitle": "Registro delle skill A2A", + "mcpSubtitle": "Controlli del server MCP", + "a2aSubtitle": "Server del protocollo A2A", "pluginsSubtitle": "Marketplace dei plugin e installazioni", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "File multimediali memorizzati nella cache", + "batchFilesSubtitle": "File di input/output batch", + "settingsSubtitle": "Tutte le impostazioni", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Tema e layout", + "settingsAiSubtitle": "Impostazioni predefinite del comportamento dell'IA", + "globalRoutingSubtitle": "Regole di routing globali", + "settingsResilienceSubtitle": "Tentativi e circuit breaker", + "settingsAdvancedSubtitle": "Opzioni per utenti esperti", + "settingsSecuritySubtitle": "Autenticazione e crittografia", "settingsAccessTokensSubtitle": "Token CLI con ambito per la modalità remota", "settingsFeatureFlagsSubtitle": "Attiva/disattiva le funzionalità del sistema", "settingsCacheSubtitle": "Catalogo modelli e caching delle risposte", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Barra laterale", + "settingsSidebarSubtitle": "Personalizza il layout della barra laterale", "settingsAuthzSubtitle": "Inventario delle route e criteri di bypass", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Documentazione", + "issuesSubtitle": "Segnala un bug", + "changelogSubtitle": "Note di rilascio", "costsQuotaPlans": "Piani e quote", "costsQuotaPlansSubtitle": "Configura i piani per provider", "activity": "Attività", @@ -1275,11 +1275,11 @@ "systemGroup": "Sistema", "costsOverview": "Panoramica", "costsOverviewSubtitle": "Analisi consolidata dei costi", - "agentBridge": "Agent Bridge", + "agentBridge": "Bridge agente", "agentBridgeSubtitle": "Intercetta il traffico dell'agente IDE", "trafficInspector": "Ispettore del traffico", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Ispeziona il traffico di richieste e risposte delle tue app", + "trafficInspectorPurpose": "Visualizza esattamente ciò che la tua applicazione invia ai provider di IA e riceve da essi. Funziona con qualsiasi client compatibile con OpenAI.", "cliCode": "CLI Code", "cliCodeSubtitle": "Strumenti di codice che puntano a OmniRoute", "cliAgents": "Agenti CLI", @@ -1296,7 +1296,7 @@ "cannotHide": "Questo elemento non può essere nascosto", "alwaysVisible": "Sempre visibile", "groupSeparatorLabel": "Separatore", - "discovery": "Discovery", + "discovery": "Rilevamento", "discoverySubtitle": "Scansiona provider per accesso gratuito", "conductor": "Conduttore", "conductorSubtitle": "Flotta CLI-agent", @@ -1345,7 +1345,7 @@ "refresh": "Aggiorna", "loading": "Caricamento webhook...", "never": "Mai", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {nessun errore} one {# errore} other {# errori}}", "testWebhook": "Invia prova", "testSuccess": "Webhook di prova inviato correttamente.", "testFailed": "Il test del webhook non è riuscito.", @@ -1469,7 +1469,7 @@ "action": "Azione", "result": "Risultato", "details": "Dettagli", - "timestamp": "Timestamp", + "timestamp": "Data e ora", "from": "Da", "to": "A", "refresh": "Aggiorna", @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "Strumento principale" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "Temi", + "description": "Scegli un tema predefinito o creane uno personalizzato con un solo colore", + "presetColors": "Colori popolari", + "customTheme": "Tema personalizzato", + "customThemeDesc": "Fai clic su Crea tema e scegli un colore", + "createTheme": "Crea tema", + "activePreset": "Tema attivo" }, "header": { "logout": "Esci", @@ -1594,60 +1594,60 @@ "endpoint": "Endpoint", "endpointDescription": "Gestire endpoint proxy, MCP, A2A e endpoint API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Gestione e strumenti del server Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Attività e osservabilità del protocollo Agent-to-Agent", "settings": "Impostazioni", "settingsDescription": "Gestisci le tue preferenze", "openaiCompatible": "Compatibile con OpenAI", "anthropicCompatible": "Compatibile antropico", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "media": "Contenuti multimediali", + "mediaDescription": "Genera immagini, video e musica", + "themes": "Temi", + "themesDescription": "Scegli un tema cromatico per l'intero pannello di controllo", + "costsDescription": "Monitora la spesa, analizza le tendenze e gestisci il budget per l'IA tra tutti i provider", + "cacheDescription": "Monitora l'efficienza della cache dei prompt dei provider e il riutilizzo locale delle risposte semantiche.", + "limitsDescription": "Configura limiti di frequenza e quote per chiave API e provider", + "runtimeDescription": "Osservabilità del runtime in tempo reale: circuit breaker, periodi di attesa, blocchi dei modelli, sessioni e avvisi sulle quote", + "apiManagerDescription": "Gestisci le chiavi API e il controllo degli accessi per la tua istanza OmniRoute", + "batchDescription": "Elabora grandi volumi di richieste in modo asincrono con chiamate API in batch", + "contextCavemanDescription": "Compressione dei messaggi basata su regole, pacchetti linguistici, analisi e controlli della modalità di output.", + "contextRtkDescription": "Compressione sensibile ai comandi per l'output degli strumenti, i log del terminale e i risultati delle build.", + "contextCombosDescription": "Definisci come combinare i motori per diversi scenari di routing.", + "changelogDescription": "Rimani aggiornato sulle ultime funzionalità e sugli annunci della piattaforma.", + "agentsDescription": "Gestisci e configura gli strumenti degli agenti IA: Codex, Devin, Jules e agenti personalizzati", + "cloudAgentsDescription": "Orchestra agenti IA basati sul cloud con monitoraggio delle attività in tempo reale e approvazione dei piani", + "memoryDescription": "Memoria conversazionale persistente con ricerca semantica e indicizzazione full-text FTS5", + "skillsDescription": "Installa e gestisci le skill sandbox per l'esecuzione automatizzata di prompt e strumenti", + "agentSkillsDescription": "Catalogo di skill pronte per gli agenti con copia dell'URL con un clic per l'integrazione con client AI", + "translatorDescription": "Traduci e testa i prompt tra formati API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Testa i prompt in modo interattivo con risposte in tempo reale dei provider e analisi del formato", + "searchToolsDescription": "Analisi delle ricerche, suddivisione per provider, percentuali di hit della cache e monitoraggio dei costi", + "logsDescription": "Log delle richieste in tempo reale, tracce degli errori e analizzatore degli eventi di streaming", + "auditDescription": "Registro di audit di conformità sull'utilizzo delle chiavi API, sulle chiamate agli strumenti MCP e sugli eventi relativi alle policy", + "webhooksDescription": "Configura gli endpoint webhook per ricevere notifiche degli eventi in tempo reale", + "healthDescription": "Panoramica dello stato del sistema: provider, circuit breaker, limiti di frequenza e database", + "proxyDescription": "Configura le impostazioni del proxy upstream per le connessioni in uscita ai provider", + "apiEndpointsDescription": "Gestisci le configurazioni personalizzate degli endpoint API e le sostituzioni del routing", + "batchFilesDescription": "Esplora e gestisci i file di output e i risultati dei processi batch", + "analyticsEvalsDescription": "Risultati della valutazione dei modelli e benchmark delle prestazioni", + "analyticsSearchDescription": "Analisi delle query di ricerca, percentuali di hit della cache e monitoraggio dei costi", + "analyticsUtilizationDescription": "Metriche di utilizzo dei provider e pianificazione della capacità", + "analyticsComboHealthDescription": "Stato e prestazioni in tempo reale delle configurazioni di routing combinato", + "analyticsCompressionDescription": "Analisi della compressione del contesto e del risparmio di token", + "costsBudgetDescription": "Limiti di budget e avvisi di spesa per chiave API e provider", + "costsPricingDescription": "Configurazione personalizzata dei prezzi per il calcolo dei costi dei token", + "logsProxyDescription": "Log delle richieste del proxy upstream e analisi del traffico", + "logsConsoleDescription": "Output della console dell'applicazione e log di debug", + "logsActivityDescription": "Registro di audit delle azioni degli utenti e degli eventi di sistema", + "auditMcpDescription": "Registro di audit delle chiamate agli strumenti MCP e registri di conformità", "auditA2a": "Verifica A2A", "auditA2aDescription": "Traccia di controllo dell'esecuzione delle attività A2A, transizioni di stato e record di chiamata delle competenze", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Tema, branding e personalizzazione visiva", + "settingsAiDescription": "Comportamenti dell'AI, budget di ragionamento e impostazioni di visione e memoria", "settingsCacheDescription": "TTL per le voci di cache del catalogo modelli", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Impostazioni di autenticazione, autorizzazione e controllo degli accessi", "featureFlags": "Flag di funzionalità", "featureFlagsDescription": "Capacità del sistema di controllo e caratteristiche sperimentali", "featureFlagsActive": "{count} attivo", @@ -1664,18 +1664,18 @@ "featureFlagsSourceDb": "DB", "featureFlagsSourceEnv": "ENV", "featureFlagsSourceDefault": "DEF", - "featureFlagsReset": "Reset", + "featureFlagsReset": "Reimposta", "featureFlagsResetAll": "Ripristina tutte le sostituzioni", "featureFlagsResetAllConfirm": "Sei sicuro di voler reimpostare tutte le sostituzioni dei flag di funzionalità? Ciò ripristinerà tutti i flag ai loro valori ENV o predefiniti.", "featureFlagsRestartRequired": "Per candidarsi è necessario riavviare", "featureFlagsNoResults": "Nessuna segnalazione corrisponde alla tua ricerca", "featureFlagsSaved": "Segnalazione aggiornata", "featureFlagsError": "Impossibile aggiornare il contrassegno", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Regole di routing, alias dei modelli, impostazioni predefinite delle combinazioni e impostazioni di degradazione", + "settingsResilienceDescription": "Configurazione di circuit breaker, nuovi tentativi e fallback", + "settingsAdvancedDescription": "Regole avanzate per i payload, limiti delle richieste e impostazioni dell'API proxy", + "mitmProxyDescription": "Configura le impostazioni del proxy MITM per l'analisi e il debug del traffico", + "oneProxyDescription": "Configura le impostazioni di 1Proxy per il concatenamento avanzato dei proxy", "omniSkillsDescription": "Installa e gestisci le skill sandbox per l'esecuzione automatica di prompt e strumenti" }, "cloudSyncStatus": { @@ -1690,7 +1690,7 @@ "statusLabel": "Stato sincronizzazione impostazioni remote: {status}" }, "breadcrumbs": { - "ariaLabel": "Breadcrumb", + "ariaLabel": "Percorso di navigazione", "dashboard": "Dashboard", "providers": "Provider", "combos": "Combo", @@ -1698,7 +1698,7 @@ "general": "Generale", "appearance": "Aspetto", "ai": "Impostazioni AI", - "routing": "Routing", + "routing": "Instradamento", "resilience": "Resilienza", "advanced": "Avanzate", "accessTokens": "Token di accesso", @@ -1708,7 +1708,7 @@ "console": "Console", "logger": "Logger", "translator": "Traduttore", - "playground": "Playground", + "playground": "Area di test", "add": "Aggiungi", "edit": "Modifica", "apiKeys": "Chiavi API", @@ -1717,11 +1717,11 @@ "cliAgents": "Agenti CLI", "acpAgents": "Agenti ACP", "endpoint": "Endpoint", - "apiManager": "API Manager", + "apiManager": "Gestore API", "context": "Contesto", "compression": "Compressione", "services": "Servizi", - "analytics": "Analytics", + "analytics": "Analisi", "costs": "Costi", "health": "Salute", "runtime": "Runtime", @@ -1739,10 +1739,10 @@ "mcp": "MCP", "batch": "Batch", "files": "File", - "media": "Media", + "media": "Contenuti multimediali", "cache": "Cache", - "changelog": "Changelog", - "chaos": "Chaos", + "changelog": "Registro delle modifiche", + "chaos": "Caos", "cloudAgents": "Agenti cloud", "live": "Live", "studio": "Studio", @@ -1762,9 +1762,9 @@ "discovery": "Scoperta", "freeProviderRankings": "Classifiche provider gratuiti", "radar": "Radar", - "setup": "Setup", + "setup": "Configurazione", "freeTiers": "Piani gratuiti", - "gamification": "Gamification", + "gamification": "Gamificazione", "leaderboard": "Classifica", "limits": "Limiti", "profile": "Profilo", @@ -1778,7 +1778,7 @@ "sidebar": "Barra laterale", "tokens": "Token", "tools": "Strumenti", - "agentBridge": "Agent Bridge", + "agentBridge": "Bridge per agenti", "trafficInspector": "Ispettore del traffico", "usage": "Utilizzo", "orchestration": "Orchestrazione" @@ -1888,15 +1888,15 @@ "releaseNotes": "Note di Rilascio", "readMore": "Leggi di più", "noAuthLabel": "Nessuna Autenticazione", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Preparati a instradare", + "readinessTitle": "Invia la tua prima richiesta", + "readinessSubtitle": "Quattro semplici passaggi. OmniRoute verifica l'idoneità man mano che procedi.", + "readinessStep1": "Connetti un provider", + "readinessStep2": "Configura l'autenticazione dell'endpoint", + "readinessStep3": "Copia il tuo endpoint", + "readinessStep4": "Invia una richiesta di test", + "readinessContinue": "Continua la configurazione", + "readinessDismiss": "Ignora per ora" }, "analytics": { "title": "Analitica", @@ -1912,8 +1912,8 @@ "diversityHigherExplanation": "Valori più alti indicano che il traffico è distribuito su più provider.", "diversityNoData": "Nessun dato di utilizzo recente disponibile.", "chartRequests": "Richieste", - "chartInput": "Input", - "chartOutput": "Output", + "chartInput": "Ingresso", + "chartOutput": "Uscita", "chartTotal": "Totale", "chartCost": "Costo", "chartShare": "Quota", @@ -1942,7 +1942,7 @@ "unknownApiKey": "Chiave API sconosciuta", "chartModelBreakdown": "Dettaglio modelli", "chartModel": "Modello", - "chartProvider": "Provider", + "chartProvider": "Fornitore", "chartProviderBreakdown": "Dettaglio provider", "chartDate": "Data", "chartRequestsByProviderDate": "Richieste per provider e data", @@ -1967,7 +1967,7 @@ "period7D": "7G", "period30D": "30G", "period90D": "90G", - "periodYTD": "YTD", + "periodYTD": "Da inizio anno", "periodAll": "Tutto", "totalTokens": "Token totali", "inputTokens": "Token di input", @@ -2005,8 +2005,8 @@ "modelStatusError": "Errore", "comboHealth": "Salute Combo", "comboHealthDescription": "Quota a livello combo, distribuzione dell'utilizzo e metriche delle prestazioni", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Analisi della compressione", + "compressionAnalyticsDescription": "Analisi della compressione — risparmio di token, suddivisione per modalità e statistiche dei provider.", "autoRoutingTotalAutoRequests": "Richieste automatiche totali", "autoRoutingAvgSelectionScore": "Punteggio medio di selezione", "autoRoutingExplorationRate": "Tasso di esplorazione", @@ -2062,7 +2062,7 @@ "latencyInv": "Latenza", "taskFit": "Idoneità al task", "stability": "Stabilità", - "tierPriority": "Tier", + "tierPriority": "Livello", "tierAffinity": "Idoneità al tier", "specificityMatch": "Specificità", "contextAffinity": "Contesto", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "Prestazioni", "comboHealthPerformanceDescription": "Affidabilità e throughput per il traffico combo instradato.", "comboHealthExecutionTargetsDescription": "Metriche di runtime a livello di passaggio e visibilità della quota per le destinazioni combo strutturate.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} richieste", "comboHealthQuotaScope": "Ambito della quota: {scope}", "comboHealthTrendValue": "Tendenza: {trend}", "comboHealthFetchFailed": "Impossibile recuperare i dati sullo stato di salute della combo", @@ -2188,7 +2188,7 @@ "routeRuntimeScoreNow": "Punteggio di runtime attuale", "routeWouldSelectNow": "Selezionerebbe ora", "routeNoRecomputeCandidates": "Nessuna classificazione dei candidati combo può essere ricalcolata per questa richiesta.", - "runtime": "Runtime", + "runtime": "Ambiente di esecuzione", "routeTopNow": "Principale attuale", "routeFetchLogsFailed": "Impossibile recuperare i log delle richieste", "routeExplainFailed": "Impossibile spiegare la route", @@ -2203,11 +2203,11 @@ "routeRecentSuccess": "Successo recente", "routeAvgTargetLatency": "Latenza media del target", "routeSelectedTarget": "Target selezionato", - "provider": "Provider", + "provider": "Fornitore", "model": "Modello", "account": "Account", "connection": "Connessione", - "combo": "Combo", + "combo": "Combinazione", "routeStep": "Passaggio", "tokens": "Token", "notAvailable": "n/d", @@ -2258,9 +2258,9 @@ "fullAccess": "Accesso completo", "keyManagement": "Gestione delle chiavi API", "keyManagementDesc": "Crea e gestisci le chiavi API per autenticare le richieste al tuo endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "La tua app invia richieste a OmniRoute tramite una chiave API", + "requestFlowYourApp": "La tua app", + "requestFlowApiKey": "Chiave API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Chiavi totali", "restricted": "Limitato", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Copia e memorizza questa chiave adesso: non verrà più mostrata.", "done": "Fatto", "savePermissions": "Salva autorizzazioni", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Endpoint consentiti", + "allEndpointsAllowed": "Questa chiave può accedere a tutti gli endpoint API.", + "endpointsRestricted": "Limitata a {count} endpoint{count, plural, one {} other {}}.", + "autoResolve": "Risoluzione automatica", + "autoResolveDesc": "Risolve automaticamente i nomi di modello ambigui associandoli al provider nativo per questa chiave API.", "streamDefaultMode": "Compatibilità predefinita dello streaming", "streamDefaultModeDesc": "Controlla i flag `stream` omessi per questa chiave. La modalità JSON restituisce risposte non in streaming a meno che il client non richieda esplicitamente SSE.", - "streamDefaultLegacy": "Legacy", + "streamDefaultLegacy": "Precedente", "streamDefaultJson": "Compatibile con JSON", "streamDefaultBadge": "Predefinito stream JSON", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Chiave attiva", + "keyActiveDesc": "Abilita o disabilita questa chiave API. Le chiavi disabilitate vengono immediatamente rifiutate con 403.", + "accessSchedule": "Pianificazione degli accessi", + "accessScheduleDesc": "Limita l'accesso a orari e giorni specifici della settimana.", + "scheduleFrom": "Dalle", + "scheduleUntil": "Alle", + "scheduleDays": "Giorni", + "scheduleTimezone": "Fuso orario", + "scheduleTimezoneHint": "Usa i nomi dei fusi orari IANA, ad es. America/New_York, Europe/Berlin", + "scheduleActive": "Pianificazione", + "disabled": "Disabilitata", + "daySun": "Dom", + "dayMon": "Lun", + "dayTue": "Mar", + "dayWed": "Mer", + "dayThu": "Gio", + "dayFri": "Ven", + "daySat": "Sab", "allowAll": "Consenti tutto", "restrict": "Limitare", "allowAllInfo": "Questa chiave può accedere a tutti i modelli disponibili.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Impossibile aggiornare le autorizzazioni. Per favore riprova.", "unknownProvider": "sconosciuto", "copyMaskedKey": "Copia chiave mascherata", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "La chiave completa è disponibile solo al momento della creazione — copiala quando la crei per la prima volta", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# dispositivo} other {# dispositivi}}", "devicesTooltip": "{count, plural, one {# IP/User-Agent distinto visto con questa chiave (ultimi 30 min)} other {# IP/User-Agent distinti visti con questa chiave (ultimi 30 min)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Combinazioni consentite", "allCombosAllowed": "Questa chiave può utilizzare qualsiasi combinazione.", "restrictedComboCount": "Limitato a {count, plural, one {# combinazione} other {# combinazioni}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# voce memorizzata non è} other {# voci memorizzate non sono}} presente in questo elenco combinato (ad esempio, nelle regole di instradamento) e verrà mantenuta così come salvata.", + "preservedComboRuleHint": "Mantenuta così come memorizzata. Questa voce non è un'opzione dell'elenco combinato precedente, quindi può essere modificata solo tramite l'API.", "apiManagerCustomRateLimits": "Limiti di velocità personalizzati", "apiManagerCustomRateLimitsDesc": "Sostituisci i limiti predefiniti globali. Lascia vuoto per utilizzare le impostazioni predefinite.", "apiManagerRateLimitRequestsPlaceholder": "Richieste", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Consente a questa chiave di ignorare i criteri di limite del provider/account upstream durante l'instradamento. Si applicano comunque le quote USD della chiave API.", "quotaPill": "QUOTA", "quotaModeOnly": "Solo qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Lease esclusivo", + "exclusiveLeaseNoticeTitle": "Lease esclusivo", + "exclusiveLeaseNoticeDesc": "Questa chiave API dispone delle autorizzazioni di lease esclusivo per l'instradamento delle connessioni dedicate.", + "allConnections": "Tutte le connessioni", + "onlySelectedConnections": "Solo le connessioni selezionate", + "selectAtLeastOneConnection": "Seleziona almeno una connessione oppure scegli Tutte le connessioni.", + "allConnectionsDesc": "Questa chiave può utilizzare qualsiasi connessione attiva.", + "restrictedToConnections": "Limitata a {count, plural, one {# connessione} other {# connessioni}}." }, "auditLog": { "title": "Registro di controllo", @@ -2436,7 +2436,7 @@ "actor": "Attore", "target": "Bersaglio", "ipAddress": "Indirizzo IP", - "timestamp": "Timestamp", + "timestamp": "Data e ora", "noEntries": "Nessuna voce di controllo trovata", "filterByAction": "Filtra per azione...", "filterByActor": "Filtra per attore...", @@ -2457,14 +2457,14 @@ "model": "Model", "prompt": "Prompt", "generate": "Genera", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Generazione in corso...", + "loadingModels": "Caricamento dei modelli disponibili...", + "noModels": "Nessun modello disponibile. Configura prima i provider con funzionalità multimediali.", + "error": "Generazione non riuscita", + "result": "Risultato", + "imageDescription": "Genera immagini da prompt testuali utilizzando OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI e altri.", + "videoDescription": "Crea video con AnimateDiff, Stable Video Diffusion tramite ComfyUI o SD WebUI.", + "musicDescription": "Componi musica utilizzando Stable Audio Open o MusicGen tramite ComfyUI.", "kinds": { "embedding": "Embedding", "image": "Immagine", @@ -2510,7 +2510,7 @@ "failedToReadFile": "Impossibile leggere il file", "generationFailed": "Generazione non riuscita", "requestFailed": "Richiesta non riuscita ({status})", - "provider": "Provider", + "provider": "Fornitore", "credentialsRequired": "Richiede la chiave API in Providers", "voice": "Voce", "format": "Formato", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "I modelli di riconoscimento vocale di OpenRouter utilizzano la tua connessione OpenRouter configurata. Non è necessaria alcuna credenziale separata." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Query di ricerca", + "searchResults": "Risultati della ricerca", + "cachedResult": "In cache", + "searchCost": "Costo", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Test di ricerca avanzata con confronto tra provider", + "compareProviders": "Confronta provider", + "rerankResults": "Riordina i risultati", + "searchHistory": "Cronologia delle ricerche", + "urlOverlap": "Sovrapposizione degli URL", + "noSearchProviders": "Nessun provider di ricerca configurato. Aggiungi i provider nelle Impostazioni.", + "noRerankModels": "Nessun modello di riordinamento disponibile", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Fornitore", + "searchType": "Tipo di ricerca", + "maxResults": "Numero massimo di risultati", + "filters": "Filtri", + "country": "Paese", + "language": "Lingua", + "timeRange": "Intervallo di tempo", + "includeDomains": "Includi domini", + "excludeDomains": "Escludi domini", + "safeSearch": "Ricerca sicura", + "safeSearchOff": "Disattivata", + "safeSearchModerate": "Moderata", + "safeSearchStrict": "Rigida", + "queryPlaceholder": "Inserisci la query di ricerca...", + "providerAuto": "automatico (più economico)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "notizie", + "optionAny": "qualsiasi", + "timeRangeDay": "Ultimo giorno", + "timeRangeWeek": "Ultima settimana", + "timeRangeMonth": "Ultimo mese", + "timeRangeYear": "Ultimo anno", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Timeout della richiesta ({seconds}s)", + "networkError": "Errore di rete", + "formatted": "Formattato", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "cache non trovata", + "cacheHit": "cache trovata", + "latency": "Latenza", + "cost": "Costo", + "results": "Risultati", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Modello di riordinamento", + "positionDelta": "Variazione della posizione", + "emptyState": "Invia una query di ricerca per visualizzare i risultati", "copy": "Copia", "resetToDefault": "Ripristina le impostazioni predefinite", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Cerca", + "tabScrape": "Estrai", + "tabCompare": "Confronta", + "modalitiesGuide": "Guida alle modalità", + "searchConceptTitle": "Ricerca", + "searchConceptDesc": "Ricerca = recupera un elenco di risultati web (titolo, URL, estratto, punteggio di pertinenza)", + "scrapeConceptTitle": "Estrai", + "scrapeConceptDesc": "Estrai = estrae il contenuto completo di un URL (markdown, testo o HTML)", + "compareConceptTitle": "Confronta", + "compareConceptDesc": "Confronta = esegue la stessa query su N provider affiancati per confrontare latenza, costo e sovrapposizione dei risultati", + "rerankConceptTitle": "Riordina", + "rerankConceptDesc": "Riordina = riordina i risultati tramite LLM per migliorarne la pertinenza in base alla query", + "autoConceptTitle": "Automatico (più economico)", + "autoConceptDesc": "Automatico (più economico) = seleziona automaticamente il provider disponibile più economico con credenziali configurate", + "providerCatalogTitle": "Catalogo dei provider", + "kindSearch": "Cerca", + "kindFetch": "Recupera/Estrai", + "statusConfigured": "Configurato", + "statusMissing": "Nessuna credenziale", + "statusRateLimited": "Limite di richieste raggiunto", + "configureProvider": "Configura in Provider", + "loadingProviders": "Caricamento dei provider…", + "failedToLoadProviders": "Impossibile caricare i provider", + "costPerQuery": "Costo/query", + "freeQuota": "Quota gratuita/mese", + "scrapeUrl": "URL da cui estrarre", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "L'URL è obbligatorio", "scrapeUrlInvalid": "URL non valido — deve iniziare con http:// o https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Estrai", + "scrapeExtracting": "Estrazione…", + "scrapeFullPage": "Pagina intera", + "scrapeFormat": "Formato", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Testo", + "scrapePreview": "Anteprima", + "scrapeRaw": "Dati grezzi", + "scrapeContentTruncated": "(troncato, visualizza i dati grezzi)", + "scrapeMetadata": "Metadati", + "scrapeProvider": "Fornitore", + "scrapeSize": "Dimensione", "scrapeEmptyState": "Inserisci un URL per estrarne il contenuto", "scrapeProvidersAvailable": "Provider disponibili: Firecrawl, Jina Reader, Tavily.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Confronta", + "compareRunning": "Confronto…", + "autoProvider": "Automatico (più economico)", + "configuredStatus": "Configurato", + "rateLimitedStatus": "Limite di richieste raggiunto", + "noCredential": "Nessuna credenziale", + "searchTypeLabel": "Tipo", + "rerankModelLabel": "Modello di reranking", + "noneOption": "Nessuno", + "size": "Dimensione", "configurationPane": "Pannello di configurazione", "configuration": "Configurazione", "status": "Stato", @@ -2674,14 +2674,14 @@ "documentUrl": "URL del documento", "fileTooLarge25Mb": "File troppo grande — max 25 MB", "selectAudioFirst": "Seleziona prima un file audio.", - "speechToText": "Speech to Text", + "speechToText": "Da voce a testo", "chooseFile": "Scegli file…", "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — max 25 MB", - "textToSpeech": "Text to Speech", + "textToSpeech": "Da testo a voce", "ttsSample": "Ciao, questo è un test text-to-speech.", "video": "Video", "videoSample": "Un time-lapse di nuvole su una catena montuosa", - "webFetch": "Web Fetch", + "webFetch": "Recupero dal Web", "webSearchSample": "Cos'è il gateway AI OmniRoute?", "noActiveProviderDescription": "Nessun provider di ricerca attivo. Configurarne uno in Provider.", "configureProviders": "Configura provider", @@ -2708,7 +2708,7 @@ "classifierCompatLoadFailed": "Impossibile caricare l'impostazione", "classifierCompatMode": { "off": "Disattivato", - "auto": "Auto", + "auto": "Automatico", "always": "Sempre" }, "ccDiscoveryInfoButton": "Come abilitare la scoperta in Claude Code", @@ -2743,7 +2743,7 @@ "effortExtraHigh": "Molto alto", "effortMax": "Massimo", "effortUltra": "Ultra", - "wireApi": "Wire API", + "wireApi": "API Wire", "modelAliases": "Alias dei modelli", "addModel": "Aggiungi modello", "routeModelPlaceholder": "Instrada {model} verso...", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Aggiungi", "antigravityStep2Suffix": "al file host come 127.0.0.1.", "antigravityStep3": "3. Open Antigravity e le richieste verranno inoltrate.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} invia le richieste all'endpoint del proprio provider. MITM le intercetta e le reindirizza a OmniRoute.", + "mitmStep1": "1. Avvia MITM per instradare le richieste tramite OmniRoute.", + "mitmStep2Prefix": "2. Aggiungi", + "mitmStep2Suffix": "al file hosts come 127.0.0.1.", + "mitmStep3": "3. Apri {toolName} e le richieste verranno inoltrate tramite proxy.", "sudoPasswordRequiredTitle": "Password Sudo obbligatoria", "sudoPasswordHint": "Per modificare le impostazioni del file host e del proxy di sistema è necessaria la password dell'amministratore.", "enterSudoPassword": "Inserisci la password sudo", @@ -2854,7 +2854,7 @@ "resetToDefault": "Ripristina le impostazioni predefinite", "providerModelPlaceholder": "provider/ID modello", "apply": "Fare domanda a", - "reset": "Reset", + "reset": "Reimposta", "manualConfig": "Configurazione manuale", "backups": "Backup", "configBackups": "Backup di configurazione", @@ -2864,7 +2864,7 @@ "failedRestoreBackup": "Impossibile ripristinare il backup", "applied": "Applicato!", "failed": "Fallito", - "resetDone": "Reset!", + "resetDone": "Reimpostato!", "omnirouteConfiguredOpenAiCompatible": "OmniRoute è configurato come provider compatibile con OpenAI", "provider": "Fornitore", "model": "Modello", @@ -2908,7 +2908,7 @@ "continue": "Da utilizzare quando si esegue Continue negli IDE ed è necessaria la configurazione portatile del provider basato su JSON.", "opencode": "Utilizzalo quando preferisci l'esecuzione dell'agente nativo del terminale e l'automazione basata su script tramite OpenCode.", "kiro": "Da utilizzare quando si integra Kiro e si controlla l'instradamento del modello centralmente da OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Da usare quando desideri un IDE incentrato sull'IA con modelli Codeium/Windsurf instradati tramite OmniRoute.", "antigravity": "Da utilizzare quando il traffico Antigravity/Kiro deve essere intercettato tramite MITM e instradato a OmniRoute.", "copilot": "Utilizzalo quando desideri un'esperienza utente in stile chat Copilot applicando al tempo stesso le chiavi OmniRoute e le regole di routing.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2923,16 +2923,16 @@ "grok-build": "Agente di codifica TUI xAI Grok Build con supporto per provider personalizzato", "droid": "Assistente AI Droid di fabbrica", "openclaw": "Apri l'Assistente AI Claw", - "cline": "Cline AI Coding Assistant CLI", + "cline": "CLI dell'assistente di programmazione IA Cline", "kilo": "CLI dell'Assistente AI Kilo Code", "qwen": "Qwen Code CLI", "cursor": "Editor del codice AI del cursore", "continue": "Continua Assistente AI", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "Agente di programmazione IA OpenCode (terminale)", + "kiro": "Amazon Kiro — IDE basato sull'IA", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "CLI dell'assistente di programmazione Sourcegraph Amp", "hermes": "Assistente terminale Hermes AI", "hermes-agent": "Hermes Agent (di Nousresearch) - IA da terminale avanzata con supporto multi-modello (delega, visione, compressione, ecc.)", "custom": "Generatore di configurazione CLI o SDK compatibile con OpenAI generico", @@ -2950,7 +2950,7 @@ "interpreter": "CLI dell'agente di codifica autonomo Open Interpreter", "omp": "Agente di codifica da terminale Oh My Pi", "letta": "Agente CLI Letta con memoria persistente e uso di strumenti", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — ambiente di programmazione RLM auto-migliorante con supporto per provider compatibili con OpenAI", "warp": "Terminale Warp AI con supporto per provider personalizzato", "agent-deck": "Orchestratore multi-agente Agent Deck", "5dive": "5dive — flotta self-hosted di agenti di codifica; un profilo di autenticazione li punta tutti su OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Installa OpenCode", + "desc": "Installa tramite npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Chiave API" }, "3": { - "title": "Set Base URL", + "title": "Imposta URL di base", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Seleziona modello" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Usa la variante di ragionamento", + "desc": "Per i modelli di ragionamento, esegui con --variant high/low/max (comando di esempio qui sotto)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Apri le impostazioni di Kiro", + "desc": "Vai a Impostazioni → Provider IA" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "URL di base", + "desc": "Incolla l'URL dell'endpoint OmniRoute" }, "3": { - "title": "API Key" + "title": "Chiave API" }, "4": { - "title": "Select Model" + "title": "Seleziona modello" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Apri le impostazioni IA", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Aggiungi provider personalizzato", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "URL di base", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Chiave API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Seleziona modello", + "desc": "Scegli un modello dal menu a discesa" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "CLI personalizzata", - "toolCategories": "Tool Categories", + "toolCategories": "Categorie di strumenti", "visibleToolsCount": "{count} strumenti disponibili", "customCliBuilderTitle": "Generatore CLI compatibile con OpenAI", "customCliBuilderDescription": "Genera variabili env e snippet JSON per qualsiasi CLI o SDK che accetta un URL di base, una chiave API e un ID modello compatibili con OpenAI.", @@ -3140,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Valutazione del completamento degli obiettivi", "hermesRoleCurator": "Curatore", "hermesRoleCuratorDesc": "Curazione delle abilità e della memoria", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Monitoraggio", "hermesRoleMonitorDesc": "Monitoraggio in background", "hermesRoleBackgroundReview": "Revisione Del Background", "hermesRoleBackgroundReviewDesc": "Revisione del codice di sfondo", @@ -3260,18 +3260,18 @@ "priorityDesc": "Fallback sequenziale: prova prima il modello 1, poi il 2 e così via.", "weightedDesc": "Distribuisce il traffico in base alla percentuale di peso con fallback", "roundRobinDesc": "Distribuzione circolare: ogni richiesta va al modello successivo a rotazione", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Relay del contesto", + "contextRelayDesc": "Mantiene la continuità della sessione tramite riepiloghi di passaggio quando gli account vengono alternati", "randomDesc": "Selezione casuale uniforme, quindi fallback sui modelli rimanenti", "leastUsedDesc": "Sceglie il modello con meno richieste, bilanciando il carico nel tempo", "costOptimizedDesc": "Percorsi prima verso il modello più economico in base al prezzo", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Instrada ogni prefisso di prompt riutilizzabile sempre allo stesso account del provider", "resetAware": "RR consapevole del ripristino", "resetAwareDesc": "Bilancia la quota rimanente rispetto a 5 ore e ai reimpostazioni settimanali, quindi esegue il round robin di punteggi simili", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Ponderato per quota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Casuale rigoroso", + "strictRandomDesc": "Mazzo mescolato: utilizza ogni modello una volta prima di rimescolare", "fusion": "Fusione", "fusionDesc": "Invia il prompt a ciascun modello del pannello in parallelo, quindi un modello giudice sintetizza una risposta finale", "fusionJudgeModel": "Modello giudice", @@ -3288,13 +3288,13 @@ "retryDelay": "Ritardo tentativi (ms)", "concurrencyPerModel": "Concorrenza/modello", "queueTimeout": "Timeout coda (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Soglia di passaggio", + "contextRelayHandoffThresholdHelp": "Quando l'utilizzo della quota raggiunge questa soglia, OmniRoute genera un riepilogo strutturato per il passaggio prima che l'account attivo si esaurisca.", + "contextRelayMaxMessages": "Numero massimo di messaggi per il riepilogo", + "contextRelayMaxMessagesHelp": "Limita la quantità di cronologia recente condensata nel riepilogo di relay.", + "contextRelaySummaryModel": "Modello per il riepilogo", + "contextRelaySummaryModelHelp": "Modello sostitutivo facoltativo utilizzato solo per generare il riepilogo di passaggio. Lascia vuoto per riutilizzare il modello della combinazione attiva.", + "contextRelayProviderNote": "Il Relay del contesto attualmente genera passaggi per la rotazione degli account Codex. Abbinalo a più account dello stesso provider per ottenere la migliore continuità.", "advancedHint": "Lascia vuoto per utilizzare le impostazioni predefinite globali. Questi sovrascrivono le impostazioni per provider.", "failoverBeforeRetry": "Failover prima del nuovo tentativo", "maxSetRetries": "Numero massimo di tentativi di set", @@ -3322,7 +3322,7 @@ "playgroundStatusError": "Errore", "playgroundStatusUnknown": "Sconosciuto", "playgroundNetworkError": "Errore di rete durante la simulazione", - "playgroundTitle": "Combo Playground", + "playgroundTitle": "Playground delle combinazioni", "playgroundDescription": "Simula come verranno instradate le richieste attraverso le tue combo", "playgroundConfiguration": "Configurazione", "playgroundNoCombosConfigured": "Nessuna combo configurata", @@ -3335,7 +3335,7 @@ "playgroundStrategy": "Strategia", "playgroundEstimatedCost": "Costo stim.", "playgroundEstimatedLatency": "Latenza stim.", - "playgroundFallback": "fallback", + "playgroundFallback": "ripiego", "playgroundWeight": "peso {value}", "playgroundWarningCount": "Avvisi ({count})", "playgroundErrorCount": "Errori ({count})", @@ -3345,40 +3345,40 @@ "weighted": "Ponderato", "leastUsed": "Meno usato", "costOpt": "Opzione costo", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "strategyGuideTitle": "Come utilizzare questa strategia", + "strategyGuideWhen": "Quando utilizzarla", + "strategyGuideAvoid": "Quando evitarla", + "strategyGuideExample": "Esempio", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "Hai un modello preferito e vuoi ricorrere al ripiego solo in caso di errore.", + "avoid": "Devi distribuire le richieste tra più modelli.", + "example": "Modello di programmazione principale con un'alternativa più economica in caso di interruzioni." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Devi ripartire il traffico tra i modelli in modo controllato.", + "avoid": "Non puoi mantenere pesi accurati nel tempo.", + "example": "Distribuzione graduale: 80% modello stabile + 20% modello canary." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Vuoi una distribuzione prevedibile e uniforme.", + "avoid": "I modelli differiscono troppo in termini di latenza o costi.", + "example": "Lo stesso modello su più account per distribuire la capacità di elaborazione." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Vuoi una distribuzione semplice con una configurazione minima.", + "avoid": "Hai bisogno di garanzie rigorose sulla distribuzione del traffico.", + "example": "Prototipazione rapida con modelli equivalenti." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Vuoi un bilanciamento adattivo basato sulla domanda in tempo reale.", + "avoid": "Il traffico è troppo basso per trarre vantaggio dal bilanciamento dell'utilizzo.", + "example": "Carichi di lavoro misti in cui un modello viene spesso sovraccaricato." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "La riduzione dei costi è la tua priorità principale.", + "avoid": "I dati sui prezzi sono mancanti o obsoleti.", + "example": "Processi in background o batch per i quali si preferisce un costo inferiore." }, "reset-aware": { "when": "Si esegue il percorso su più account con telemetria delle quote e diverse finestre di reimpostazione.", @@ -3386,19 +3386,19 @@ "example": "Preferisci un account settimanale reimpostato al 60% domani rispetto a un account reimpostato all'80% in seguito." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Usa questa opzione quando vuoi una distribuzione perfettamente uniforme: ogni modello viene usato una volta prima di ricominciare.", + "avoid": "Evitala quando i modelli hanno qualità o latenza diverse e l'ordine è importante.", + "example": "Esempio: più account dello stesso modello per distribuire uniformemente l'utilizzo." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Usa questa opzione quando vuoi una selezione a bassa latenza tramite l'algoritmo Power-of-Two-Choices.", + "avoid": "Evitala per combinazioni piccole con 2 modelli o meno: non offre alcun vantaggio rispetto al round-robin.", + "example": "Esempio: inferenza ad alta capacità su almeno 4 endpoint di modelli equivalenti." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Usa questa opzione quando le sessioni lunghe devono continuare anche dopo la rotazione degli account senza perdere il contesto di lavoro.", + "avoid": "Evitala quando il cambio di account è raro o non vuoi richieste di riepilogo aggiuntive.", + "example": "Esempio: sessioni Codex che ruotano tra più account prossimi all'esaurimento della quota." }, "fill-first": { "when": "Da utilizzare quando si desidera esaurire completamente la quota di un provider prima di passare a quello successivo.", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Numero di tentativi effettuati prima di considerare una richiesta non riuscita.", + "retryDelay": "Attesa iniziale tra i tentativi. Valori più alti riducono la pressione dei picchi.", + "timeout": "Durata massima della richiesta prima dell'interruzione.", + "healthcheck": "Esclude dalle decisioni di routing i modelli/provider non operativi.", + "concurrencyPerModel": "Numero massimo di richieste simultanee consentite per modello nel round-robin.", + "queueTimeout": "Tempo massimo di attesa in coda di una richiesta prima del timeout.", "failoverBeforeRetry": "Se abilitato, qualsiasi errore upstream attiva il failover immediato alla successiva destinazione combinata, saltando tutti i tentativi e gli URL di fallback.", "maxSetRetries": "Numero di volte per riprovare l'intero set di destinazioni quando ogni destinazione fallisce. 0 = nessun tentativo a livello di set.", "setRetryDelayMs": "Ritardo tra i tentativi a livello di set, dando tempo ai problemi temporanei di risolversi.", "disableSessionStickiness": "Ruota su una connessione diversa a ogni richiesta invece di associare un'intera conversazione a una singola connessione tramite l'hash del primo messaggio. Esegue l'override del valore predefinito globale. Lascia su Eredita per preservare i riscontri della cache dei prompt per le chat a più turni." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "Modelli rapidi", + "templatesDescription": "Applica un profilo iniziale, quindi modifica i modelli e la configurazione.", + "templateApply": "Applica modello", + "templateHighAvailability": "Alta disponibilità", + "templateHighAvailabilityDesc": "Routing prioritario con controlli di integrità e tentativi sicuri.", + "templateCostSaver": "Risparmio sui costi", + "templateCostSaverDesc": "Routing ottimizzato per i costi per carichi di lavoro che privilegiano il budget.", + "templateBalanced": "Carico bilanciato", + "templateBalancedDesc": "Routing in base al minor utilizzo per distribuire la domanda nel tempo.", + "usageGuideHide": "Nascondi", + "usageGuideDontShowAgain": "Non mostrare più", + "usageGuideShow": "Mostra guida", + "quickTestTitle": "Combinazione pronta per la convalida", + "quickTestDescription": "Esegui subito un test per verificare il comportamento di fallback e la latenza.", + "testNow": "Esegui test ora", + "pricingCoverage": "Copertura dei prezzi", + "pricingCoverageHint": "L'ottimizzazione dei costi funziona al meglio quando sono disponibili i prezzi per tutti i modelli della combinazione.", + "pricingAvailable": "Prezzi disponibili", + "pricingMissing": "Prezzi non disponibili", + "pricingAvailableShort": "con prezzo", + "pricingMissingShort": "senza prezzo", "fallbackOnlyOnQuotaExhaustion": "Avanza solo in caso di esaurimento della quota", "fallbackOnlyOnQuotaExhaustionShort": "fallback solo quota", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "warningRoundRobinSingleModel": "Il round-robin è più utile con almeno 2 modelli.", + "warningCostOptimizedPartialPricing": "Solo {priced} modelli su {total} dispongono di dati sui prezzi. L'instradamento potrebbe tenere conto dei costi solo in parte.", + "warningCostOptimizedNoPricing": "Non sono stati trovati dati sui prezzi per questa combinazione. L'ottimizzazione dei costi potrebbe causare un instradamento imprevisto.", + "filterAll": "Tutte", + "filterIntelligent": "Intelligente", + "filterDeterministic": "Deterministico", + "filterEmptyTitle": "Nessuna combinazione corrisponde a questo filtro di strategia.", + "filterEmptyIntelligentDescription": "Crea una combinazione automatica o LKGP per popolare la dashboard dell'instradamento intelligente.", + "filterEmptyDeterministicDescription": "Al momento esistono solo combinazioni automatiche e LKGP. Torna a Tutte o crea una combinazione deterministica.", "readinessTitle": "Pronto per salvare?", "readinessDescription": "Rivedi l'elenco di controllo prima di creare o aggiornare questa combinazione.", "readinessCheckName": "Il nome combinato è valido", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Aggiungi almeno un modello.", "saveBlockWeighted": "Imposta i pesi al 100% (attuale: {total}%).", "saveBlockPricing": "Aggiungi il prezzo per almeno un modello o scegli una strategia diversa.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Configurazione consigliata", + "applyRecommendations": "Applica consigli", + "recommendationsUpdated": "Consigli aggiornati per {strategy}.", + "recommendationsApplied": "Consigli applicati a questa combinazione.", + "intelligentPanelTitle": "Dashboard dell'instradamento intelligente", + "intelligentPanelDesc": "Punteggio in tempo reale e stato di integrità per questa combinazione con instradamento automatico.", "configOnlyStatus": "Vista configurazione", "configOnlyHint": "Questo pannello mostra solo gli input di instradamento. Lo stato del breaker in tempo reale è disponibile nella pagina Stato di salute.", "routingInputs": "Input di instradamento", @@ -3497,7 +3497,7 @@ "builderGlobalShortcuts": "Scorciatoie:", "builderGlobalNoResults": "Nessun modello trovato per \"{query}\".", "builderGlobalProviderLabel": "Fornitore:", - "builderGlobalAccountCount": "{count, plural, one {# account} other {# accounts}}", + "builderGlobalAccountCount": "{count, plural, one {# account} other {# account}}", "builderGlobalAdded": "Aggiunto", "builderGlobalAdd": "Aggiungi", "manualModel": "Modello manuale", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Prefisso del provider sconosciuto.", "builderDynamicAccountShort": "Account dinamico", "builderNeedValidName": "Definisci un nome di combo valido prima di continuare.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Panoramica dello stato", + "normalOperation": "Funzionamento normale", + "allProvidersHealthy": "I provider segnalano condizioni di instradamento ottimali.", + "incidentMode": "Modalità incidente", + "highCircuitBreakerRate": "Rilevata un'elevata frequenza di attivazione del circuit breaker.", + "activeModePack": "Pacchetto modalità attivo", + "modePackUpdated": "Pacchetto modalità aggiornato a {pack}.", + "modePackHint": "Cambia i preset per orientare il motore di instradamento senza ricreare la combinazione.", + "providerScores": "Punteggi dei provider", + "allProvidersEvaluated": "Nessun pool di candidati configurato. Tutti i provider attivi vengono valutati durante l'esecuzione.", + "excludedProviders": "Provider esclusi", + "excludedProvidersHint": "I provider con un circuit breaker OPEN vengono temporaneamente esclusi dall'instradamento.", + "noExcludedProviders": "Al momento non è escluso alcun provider.", + "cooldownMinutes": "Tempo di recupero: {minutes}m", + "builderIntelligentTitle": "Configurazione dell'instradamento intelligente", + "builderIntelligentDesc": "Configura il motore di valutazione multifattoriale per questa combinazione con instradamento automatico.", + "candidatePoolLabel": "Pool di candidati", + "candidatePoolHint": "Seleziona i provider che questo motore deve valutare. Lascia vuoto per utilizzare tutti i provider attivi.", + "candidatePoolEmpty": "Non sono ancora disponibili provider attivi.", + "candidatePoolAllProviders": "Tutti i provider", + "modePackLabel": "Pacchetto modalità", + "routerStrategyLabel": "Strategia del router", + "strategyRules": "Regole (punteggio a 6 fattori)", + "explorationRateLabel": "Tasso di esplorazione", + "explorationRateHint": "Il {percent}% delle richieste può esplorare provider non ottimali.", + "budgetCapLabel": "Limite di budget (USD/richiesta)", + "budgetCapPlaceholder": "Nessun limite", + "advancedWeightsTitle": "Avanzate: pesi del punteggio", "nestedComboFlatten": "Appiattisci combo nidificate", "nestedComboExecute": "Esegui combo nidificate come target", "effectiveRoutingShare": "Quota di routing effettiva (peso ÷ totale)", "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightHealth": "Stato di salute", + "weightCostInv": "Costo", + "weightLatencyInv": "Latenza", + "weightTaskFit": "Idoneità all'attività", + "weightStability": "Stabilità", + "weightTierPriority": "Livello", + "weightCacheAffinity": "Affinità con le corrispondenze nella cache", "weightSessionAvailability": "Disponibilità della sessione", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Configurazione dell'instradamento intelligente", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Configurazione di base fail-safe", + "description": "Usa un modello principale e mantieni la catena di fallback breve e affidabile.", + "tip1": "Metti al primo posto il modello più affidabile.", + "tip2": "Mantieni 1-2 modelli di backup di qualità simile.", + "tip3": "Usa tentativi sicuri per gestire gli errori temporanei dei provider." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Suddivisione controllata del traffico", + "description": "Ideale per distribuzioni canary e migrazioni graduali tra modelli.", + "tip1": "Inizia con una suddivisione prudente, ad esempio 90/10.", + "tip2": "Mantieni il totale al 100% e applica il bilanciamento automatico dopo le modifiche.", + "tip3": "Monitora il tasso di successo e la latenza prima di aumentare il peso canary." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Distribuzione prevedibile del carico", + "description": "Ideale quando i modelli sono equivalenti e serve una distribuzione uniforme.", + "tip1": "Usa almeno 2 modelli.", + "tip2": "Imposta limiti di concorrenza per evitare sovraccarichi improvvisi.", + "tip3": "Usa un timeout della coda per generare rapidamente un errore in caso di saturazione." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Distribuzione rapida con configurazione minima", + "description": "Usa questa opzione quando serve una distribuzione semplice senza garanzie rigorose.", + "tip1": "Usa modelli con profili di latenza simili.", + "tip2": "Mantieni abilitati i nuovi tentativi per gestire gli errori casuali.", + "tip3": "Preferisci questa opzione per la sperimentazione, non per SLA rigorosi." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Bilanciamento adattivo", + "description": "Instrada verso i modelli meno utilizzati per ridurre nel tempo i punti critici.", + "tip1": "Funziona meglio con un traffico continuo.", + "tip2": "Combina con controlli di integrità per un bilanciamento più sicuro.", + "tip3": "Monitora l'utilizzo di ciascun modello per verificare i miglioramenti nella distribuzione." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Instradamento orientato al budget", + "description": "Instrada verso modelli meno costosi quando sono disponibili i metadati sui prezzi.", + "tip1": "Assicurati che i prezzi siano disponibili per tutti i modelli selezionati.", + "tip2": "Mantieni un modello di riserva di qualità per i prompt complessi.", + "tip3": "Da usare per processi batch/in background in cui il costo è il KPI principale." }, "reset-aware": { "title": "Rotazione dell'account sensibile al ripristino", @@ -3597,11 +3597,11 @@ "tip3": "Mantieni la fascia di legame piccola in modo che i conti equivalenti continuino a ruotare equamente." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Distribuzione con mazzo rimescolato", + "description": "Ogni modello viene utilizzato esattamente una volta per ciclo prima di rimescolare.", + "tip1": "Utilizza almeno 2 modelli per una distribuzione significativa.", + "tip2": "Funziona meglio con modelli dalle prestazioni equivalenti.", + "tip3": "Ideale per il bilanciamento del carico tra più account API." }, "fill-first": { "description": "Quote del fornitore di scarico in sequenza prima di ripiegare.", @@ -3646,86 +3646,86 @@ "title": "Il potere di due scelte" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Stack gratuito ($0)", + "templateFreeStackDesc": "Round-robin tra tutti i provider gratuiti: Kiro (Claude), Qoder (5 modelli), Qwen (4 modelli). Costo zero, non smette mai di programmare.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "Modalità LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Introduzione alle combo", + "wizardGuideDesc": "Crea combo di modelli per instradare il traffico AI in modo intelligente", + "wizardGuideHint": "oppure fai clic su + Crea combo qui sopra", + "createFirstCombo": "Crea la tua prima combo", + "wizardStep1Title": "Assegna un nome alla combo", + "wizardStep1Desc": "Assegna alla combo un nome univoco per identificarla nelle regole di instradamento", + "wizardStep2Title": "Aggiungi modelli", + "wizardStep2Desc": "Seleziona i modelli AI e disponili in ordine di priorità per il fallback", + "wizardStep3Title": "Scegli la strategia", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Rivedi e salva", + "wizardStep4Desc": "Rivedi la configurazione e attiva la combo", + "usageGuideInvokeTitle": "Come richiamare questa combo", + "usageGuideInvokeDesc": "Invia il nome esatto della combo come modello, ad es. model: \"my-combo\" (oppure combo/my-combo).", + "usageGuideInvokeAutoNote": "auto e auto/* costituiscono un router separato a configurazione zero che non utilizza le tue combo (a meno che una combo non si chiami letteralmente auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto è un vero prodotto OpenRouter a pagamento (Auto Best Available), non un alias OmniRoute: escludilo tramite Impostazioni → Instradamento → Nascondi modelli a pagamento.", + "emailVisibilityStateOn": "Attivo", + "emailVisibilityStateOff": "Disattivo", + "reorderHandle": "Trascina per riordinare", + "failedReorder": "Impossibile riordinare i modelli", + "builderFlowTitle": "Flusso di creazione della combo", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Informazioni di base", + "description": "Nome e modello iniziale" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Passaggi", + "description": "Selezione di provider, modello e account" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategia", + "description": "Comportamento di instradamento e impostazioni avanzate" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Instradamento intelligente", + "description": "Pool di candidati per il routing automatico, preset e punteggio" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Rivedi", + "description": "Convalida finale prima del salvataggio" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", + "builderStageVisited": "Fase completata", + "builderStageCurrent": "Fase corrente", + "builderStagePending": "In sospeso", + "builderStageLocked": "Bloccato — completa prima la fase precedente", + "builderTitle": "Crea una combinazione", + "builderBrowseCatalog": "Sfoglia il catalogo", + "builderProvider": "Fornitore", + "builderLoadingProviders": "Caricamento dei provider...", + "builderSelectProvider": "Seleziona provider", + "builderModel": "Modello", + "builderSelectModel": "Seleziona modello", + "builderProviderFirst": "Seleziona prima il provider", "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderPreview": "Anteprima", + "builderAddStep": "Aggiungi passaggio", "builderDuplicateExact": "Questo esatto passaggio fornitore/modello/account è già nella combinazione.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Rif. combinazione", + "builderAddComboRef": "Aggiungi riferimento alla combinazione", + "builderComboRefStep": "Aggiungi riferimento alla combinazione", + "builderPinnedAccount": "Account fissato", + "builderLegacyEntry": "Voce legacy", + "reviewName": "Nome", + "reviewStrategy": "Strategia", + "reviewSteps": "Passaggi", + "reviewAccounts": "Account", + "reviewProviders": "Provider", + "reviewComboRefs": "Riferimenti alle combinazioni", + "reviewAdvanced": "Impostazioni avanzate", + "reviewAgentFlags": "Flag dell'agente", + "reviewSequence": "Sequenza dei modelli", + "reviewNoSteps": "Nessun passaggio configurato", "builderStagesDescription": "Completa ogni fase per definire combo, creare passaggi, selezionare la strategia di routing ed esaminare i risultati.", "builderStepsDescription": "Costruisci ogni passaggio combinato in ordine: fornitore, modello, quindi account. Ciò consente di riutilizzare lo stesso fornitore e modello su account diversi.", "selectProvider": "Seleziona Fornitore", @@ -3780,7 +3780,7 @@ "errorDescription": "Non siamo riusciti a caricare i dati del combo in questo momento. Controlla la tua connessione e riprova.", "errorId": "ID Errore: {id}", "errorRetry": "Riprova", - "comboLabel": "Combo", + "comboLabel": "Combinazione", "duplicateAutoComboConfirm": "Creare una combinazione statica da \"{name}\"?", "duplicateAutoComboSnapshotMsg": "Questo catturerà i fornitori/modelli attualmente connessi che corrispondono a questo modello in una combinazione modificabile.", "duplicateAutoComboFailedPrefix": "Duplicazione della combinazione automatica fallita:", @@ -3800,27 +3800,27 @@ "range7d": "7 giorni", "range30d": "30 giorni", "range90d": "90 giorni", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 giorni", + "range365d": "365 giorni", "rangeAll": "Tutto il tempo", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Modelli attivi", + "flatRateEstimateNotice": "Include stime dei prezzi dei token per gli abbonamenti a tariffa fissa, non il costo fatturato.", + "flatRateEstimateForecast": "La proiezione include stime a tariffa fissa.", + "selectedWindow": "Intervallo selezionato", + "activeProviders": "Provider attivi", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Spesa di oggi", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Quota dei provider", + "topProviders": "Provider principali", + "costTrend": "Andamento dei costi", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Modelli principali", "requestsInWindow": "Requests In Window", "tokenUsage": "Utilizzo dei gettoni", "totalTokens": "Gettoni totali", @@ -3862,8 +3862,8 @@ "groupApiKey": "Chiave API", "groupAccount": "Conto", "groupServiceTier": "Livello di servizio", - "serviceTierFast": "Fast", - "serviceTierFlex": "Flex", + "serviceTierFast": "Veloce", + "serviceTierFlex": "Flessibile", "serviceTierStandard": "Standard", "serviceTierBreakdownTitle": "Tier di servizio", "serviceTierBreakdownSubtitle": "Suddivisione Fast / Flex / Standard", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "Endpoint API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Usa l'endpoint compatibile con OpenAI con la maggior parte degli SDK e degli strumenti.", + "testEndpoint": "Testa l'endpoint →", + "advancedProtocols": "Protocolli avanzati", "available": "Endpoint disponibili", "cloudProxy": "Proxy cloud", "disableConfirm": "Sei sicuro di voler disabilitare il proxy cloud?", @@ -3900,7 +3900,7 @@ "disableCloud": "Disabilita Nuvola", "enableCloud": "Abilita nuvola", "modelsAcrossEndpoints": "Modelli {models} sugli endpoint {endpoints}", - "loadingModels": "Loading available models...", + "loadingModels": "Caricamento dei modelli disponibili...", "chatDesc": "Chat in streaming e non in streaming con tutti i provider", "embeddings": "Incorporamenti", "embeddingsDesc": "Incorporamenti di testo per pipeline di ricerca e RAG", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Trascrivere file audio in testo (Whisper)", "textToSpeech": "Sintesi vocale da testo", "textToSpeechDesc": "Converti il ​​testo in parlato dal suono naturale", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Generazione musicale", + "musicDesc": "Genera musica e tracce audio tramite ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderazioni", "moderationsDesc": "Moderazione dei contenuti e classificazione della sicurezza", "responsesDesc": "API Responses di OpenAI per Codex e workflow agentici avanzati", "listModelsDesc": "Elenca tutti i modelli disponibili su tutti i provider connessi", "settingsApiDesc": "Leggere e modificare la configurazione di OmniRoute tramite API", - "settingsApi": "Settings API", + "settingsApi": "API delle impostazioni", "categoryCore": "API Principali", "categoryMedia": "Media e Multi-Modale", - "categorySearch": "Search & Discovery", + "categorySearch": "Ricerca e scoperta", "categoryUtility": "Utilità e Gestione", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Ricerca sul web", + "webSearchDesc": "Ricerca web unificata su più provider con failover automatico e memorizzazione nella cache", + "searchProvider": "Provider di ricerca", + "searchProviderDesc": "Questo provider viene utilizzato per la ricerca web tramite POST /v1/search. Non è necessaria alcuna configurazione del modello: i provider di ricerca sono pronti all'uso una volta collegata una chiave API.", "enableCloudTitle": "Abilita proxy cloud", "whatYouGet": "Cosa otterrai", "cloudBenefitAccess": "Accedi alla tua API da qualsiasi parte del mondo", @@ -3963,57 +3963,57 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Abilita tunnel", + "cloudflaredInstallAndEnable": "Installa e abilita", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "In esecuzione", + "cloudflaredStarting": "Avvio in corso", + "cloudflaredStoppedState": "Arrestato", + "cloudflaredNotInstalled": "Non installato", + "cloudflaredUnsupported": "Non supportato", + "cloudflaredError": "Errore", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Ultimo errore: {error}", "providerModelsTitle": "{provider} — Modelli", "noModelsForProvider": "Nessun modello disponibile per questo fornitore.", "chat": "Chiacchierata", "embedding": "Incorporamento", "image": "Immagine", "custom": "costume", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {# modello} other {# modelli}}", + "sectionTitle": "Superficie di integrazione", + "sectionDescription": "API compatibili con OpenAI ed endpoint dei protocolli operativi", "tabApis": "API", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "Protocolli", + "tabsAria": "Sezioni degli endpoint", + "protocolsTitle": "Protocolli", + "protocolsDescription": "MCP e A2A sono endpoint di prima classe con osservabilità e controlli dedicati.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "Model Context Protocol tramite stdio", + "a2aCardTitle": "Server A2A", + "a2aCardDescription": "Endpoint JSON-RPC Agent2Agent", + "protocolToolsLabel": "Strumenti", + "protocolTasksLabel": "Attività", + "protocolActiveStreamsLabel": "Flussi attivi", + "protocolLastActivity": "Ultima attività", + "quickStart": "Avvio rapido", + "openMcpDashboard": "Apri la gestione MCP", + "openA2aDashboard": "Apri la gestione A2A", + "mcpQuickStartTitle": "Avvio rapido MCP", + "mcpQuickStartStep1": "Esegui il server MCP tramite `omniroute --mcp`.", + "mcpQuickStartStep2": "Configura il client MCP per connettersi tramite il trasporto stdio.", + "mcpQuickStartStep3": "Richiama strumenti come `omniroute_get_health` e `omniroute_list_combos`.", + "a2aQuickStartTitle": "Avvio rapido A2A", + "a2aQuickStartStep1": "Trova la scheda dell'agente in `/.well-known/agent.json`.", + "a2aQuickStartStep2": "Invia richieste JSON-RPC a `POST /a2a` usando `message/send` o `message/stream`.", + "a2aQuickStartStep3": "Monitora e controlla le attività usando `tasks/get` e `tasks/cancel`.", + "completionsLegacy": "Completamenti (legacy)", + "completionsLegacyDesc": "Completamenti di testo OpenAI legacy: accetta sia una stringa di prompt sia il formato con array di messaggi", "messagesApi": "Messaggi", "messagesApiDesc": "Formato API Native Anthropic Messages per provider compatibili con Claude", "imageEdits": "Modifiche alle immagini", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Elabora grandi batch di richieste in modo asincrono (compatibile con OpenAI)", "filesApi": "API dei file", "filesApiDesc": "Carica e gestisci file per l'elaborazione batch", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Generazione video", + "videoDesc": "Genera video utilizzando modelli di IA come ComfyUI e Stable Video Diffusion.", + "tailscaleRequestFailed": "Impossibile caricare lo stato di Tailscale", + "tailscaleEnableFailed": "Impossibile abilitare Tailscale Funnel", + "tailscaleWaitingForLogin": "Completa l'accesso a Tailscale nella scheda del browser aperta. OmniRoute riproverà automaticamente.", + "tailscaleLoginTimedOut": "Tempo scaduto durante l'attesa dell'accesso a Tailscale", + "tailscaleWaitingForFunnel": "Abilita Funnel per questo dispositivo nella scheda del browser aperta. OmniRoute continuerà a verificare.", + "tailscaleFunnelTimedOut": "Tempo scaduto durante l'attesa dell'abilitazione di Tailscale Funnel", + "tailscaleStarted": "Tailscale Funnel abilitato", + "tailscaleDisableFailed": "Impossibile disabilitare Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel disabilitato", + "tailscaleInstallFailed": "Impossibile installare Tailscale", + "tailscaleInstallProgress": "Operazione in corso...", + "tailscaleInstalled": "Tailscale installato correttamente", + "tailscaleRunning": "In esecuzione", + "tailscaleNeedsLogin": "Accesso richiesto", + "tailscaleStoppedState": "Arrestato", + "tailscaleNotInstalled": "Non installato", + "tailscaleUnsupported": "Non supportato", + "tailscaleError": "Errore", + "tailscaleDisable": "Arresta Funnel", + "tailscaleInstallAndEnable": "Installa e abilita", + "tailscaleLoginAndEnable": "Accedi e abilita", + "tailscaleEnable": "Abilita Funnel", + "tailscaleUrlNotice": "Utilizza il tuo indirizzo Tailscale .ts.net. Al primo utilizzo potrebbero essere richiesti l'accesso e l'approvazione di Funnel.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Autentica questa macchina con Tailscale, quindi abilita Funnel.", + "tailscaleBinaryPath": "Binario: {path}", + "tailscaleLastError": "Ultimo errore: {error}", + "tailscaleInstallTitle": "Installa Tailscale", + "tailscaleInstallIntro": "Installa Tailscale su questa macchina e prepara OmniRoute per abilitare Funnel.", + "tailscaleInstallPasswordHint": "Su macOS e Linux, potrebbe essere richiesto sudo per installare il pacchetto e avviare il daemon.", + "tailscaleSudoPlaceholder": "Password sudo facoltativa", + "tailscaleInstalling": "Installazione in corso", "tailscaleSudoLabel": "Password Sudo (richiesto su macOS/Linux)", "ngrokTitle": "Ngrok Tunnel", "ngrokRunning": "Corsa", @@ -4132,7 +4132,7 @@ "vscodeAliasModelsLabel": "Modelli VS Code", "vscodeAliasChatLabel": "Chat VS Code", "localServer": "Server locale", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute Cloud", "copyUrl": "Copia l'URL", "badgeLoopbackTooltip": "Questo endpoint è accessibile solo localmente (solo loopback)", "badgeAlwaysProtectedTooltip": "Questo endpoint è sempre protetto e richiede l'autorizzazione", @@ -4195,7 +4195,7 @@ "notionTokenConfigured": "Token configurato. Gli strumenti di Notion sono disponibili tramite MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", + "tabProxy": "Proxy endpoint", "tabApiEndpoints": "Endpoint API", "apiEndpointsTitle": "Endpoint API", "apiEndpointsDescription": "Endpoint API backend che possono essere consumati da altre applicazioni e servizi.", @@ -4207,19 +4207,19 @@ "featureAuth": "Gestione chiavi API e ambiti OAuth per endpoint" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "Caricamento della dashboard MCP...", + "activate": "attivare", + "deactivate": "disattivare", + "confirmSwitchCombo": "Confermare l'azione di {action} per la combinazione \"{combo}\"?", + "switchComboFailed": "Impossibile modificare lo stato della combinazione.", + "switchComboSuccess": "Combinazione \"{combo}\" aggiornata.", + "confirmApplyProfile": "Applicare il profilo di resilienza \"{profile}\"?", + "applyProfileFailed": "Impossibile applicare il profilo di resilienza.", + "applyProfileSuccess": "Profilo \"{profile}\" applicato.", + "confirmResetBreakers": "Reimpostare tutti i circuit breaker?", + "resetBreakersFailed": "Impossibile reimpostare i circuit breaker.", + "resetBreakersSuccess": "Circuit breaker reimpostati.", + "processStatus": "Stato del processo", "online": "Online", "offline": "Offline", "disableLabel": "Disabilita {label}", @@ -4237,119 +4237,119 @@ "mcpStep2": "Configura il tuo client MCP per connettersi tramite trasporto stdio.", "mcpStep3": "Invoca strumenti come {code1} e {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", + "sessionUptime": "Tempo di attività della sessione", + "lastHeartbeat": "Ultimo heartbeat", + "activity24h": "Attività (24 h)", + "totalCalls": "Chiamate totali", + "successRate": "Tasso di successo", + "avgLatency": "Latenza media", + "topTools": "Strumenti principali", + "noToolCalls24h": "Nessuna chiamata agli strumenti nelle ultime 24 ore.", + "runtimeDetails": "Dettagli di runtime", + "transport": "Trasporto", + "scopesEnforced": "Ambiti applicati", + "yes": "sì", "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "lastCall": "Ultima chiamata", + "heartbeatPath": "Percorso heartbeat", + "operationalControls": "Controlli operativi", + "switchCombo": "Attiva/disattiva combinazione", + "inactive": "inattiva", + "active": "attiva", + "activateCombo": "Attiva combinazione", + "deactivateCombo": "Disattiva combinazione", + "applyResilienceProfile": "Applica profilo di resilienza", + "profileAggressive": "aggressivo", + "profileBalanced": "bilanciato", + "profileConservative": "conservativo", + "applyProfile": "Applica profilo", + "resetCircuitBreakers": "Reimposta i circuit breaker", + "resetCircuitBreakersHelp": "Cancella lo stato corrente dei circuit breaker e i contatori degli errori per i provider.", + "resetAllBreakers": "Reimposta tutti i circuit breaker", + "toolsAndScopes": "Strumenti e ambiti", + "tableTool": "Strumento", + "tableScopes": "Ambiti", + "tablePhase": "Fase", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Registro di audit", + "auditSummary": "Chiamate: {total} | pagina {page} di {totalPages}", + "allTools": "Tutti gli strumenti", + "allResults": "Tutti i risultati", + "success": "Successo", + "failure": "Errore", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "Caricamento delle voci di audit...", + "noAuditEntriesForFilters": "Nessuna voce di audit trovata per i filtri correnti.", + "tableTimestamp": "Data e ora", + "tableDuration": "Durata", + "tableResult": "Risultato", + "tableApiKey": "Chiave API", + "failed": "non riuscito", + "previous": "Precedente", + "next": "Successivo", + "apiKeyId": "ID chiave API", + "offset": "Scostamento", + "limit": "Limite", + "tool": "Strumento" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "Caricamento della dashboard A2A...", + "confirmCancelTask": "Annullare l'attività {taskId}?", + "cancelTaskFailed": "Impossibile annullare l'attività.", + "cancelTaskSuccess": "Attività {taskId} annullata.", + "smokeSendFailed": "Test smoke di message/send non riuscito.", + "smokeSendSuccessWithTask": "Test di message/send riuscito (attività {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", + "smokeStreamFailed": "Test smoke di message/stream non riuscito.", + "smokeStreamSuccessWithTask": "Test di message/stream riuscito (attività {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream terminato senza ID attività.", "health": "Salute", "ok": "OK", "totalTasks": "Compiti totali", - "activeStreams": "Active streams", + "activeStreams": "Stream attivi", "lastTask": "Ultimo compito", "taskStateOverview": "Panoramica dello stato dell'attività", "state": { "submitted": "presentato", "working": "lavorando", "completed": "completato", - "failed": "failed", + "failed": "non riuscito", "cancelled": "annullato" }, "agentCard": "Carta dell'agente", "agentCardPath": "/.well-known/agent.json", "version": "Versione", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "Funzionalità", + "agentCardNotAvailable": "Scheda dell'agente non disponibile.", + "quickValidation": "Convalida rapida", + "quickValidationDescription": "Esegue chiamate smoke tramite l'endpoint `/a2a` attivo.", + "runMessageSend": "Esegui message/send", + "runMessageStream": "Esegui message/stream", + "taskManagement": "Gestione delle attività", + "taskSummary": "{total} attività | pagina {page} di {totalPages}", + "allStates": "tutte", + "allSkills": "tutte le competenze", + "loadingTasks": "Caricamento delle attività...", + "noTasksForFilters": "Nessuna attività trovata per i filtri correnti.", + "tableTask": "Attività", + "tableSkill": "Competenza", + "tableState": "Stato", + "tableUpdated": "Aggiornamento", + "tableActions": "Azioni", + "view": "Visualizza", + "cancel": "Annulla", + "previous": "Precedente", + "next": "Successiva", + "taskDetail": "Dettagli dell'attività", + "close": "Chiudi", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "Eventi", + "artifacts": "Artefatti", + "tablePhase": "Fase della tabella", + "offset": "Scostamento", + "limit": "Limite", + "skill": "Abilità", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "messaggio/inviare", "rpcMethodStream": "messaggio/flusso", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Azioni", + "addMemory": "Aggiungi memoria", + "allTypes": "Tutti i tipi", "cancel": "Cancellare", "checkHealth": "Controlla la salute", "checkingHealth": "Controllo…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Come funziona", "howWorksContent": "1. Estrazione automatica: al termine di ogni risposta, i fatti e gli episodi vengono rilevati e salvati automaticamente.\n2. Recupero: prima di ogni risposta, le memorie più rilevanti vengono cercate tramite FTS5 (esatto), vettoriale (semantico) o RRF ibrido.\n3. Iniezione: le memorie rilevanti vengono iniettate nel contesto dell'assistente per migliorare la qualità della risposta.\n4. Gestione: usa questa pagina per visualizzare, modificare, esportare e compattare le vecchie memorie." }, - "content": "Content", + "content": "Contenuto", "contentPlaceholder": "Valore o contenuto JSON da ricordare", - "created": "Created", - "delete": "Delete", + "created": "Data di creazione", + "delete": "Elimina", "deleteConfirmDesc": "Questa azione non può essere annullata. La memoria verrà rimossa in modo permanente.", "deleteConfirmTitle": "Eliminare la memoria?", - "description": "View and manage stored memory entries", + "description": "Visualizza e gestisci le voci di memoria archiviate", "editMemory": "Modifica memoria", "editModal": { "title": "Modifica memoria", @@ -4434,9 +4434,9 @@ "keywordLabel": "Parola chiave (FTS5)", "keywordReason": "Ricerca per parole chiave sempre disponibile", "embeddingLabel": "Embedding", - "vectorStoreLabel": "Vector Store", + "vectorStoreLabel": "Archivio vettoriale", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Riordinamento", "qdrantDisabled": "Disabilitato", "qdrantOk": "Attivo ({latencyMs}ms)", "qdrantError": "Errore di connessione", @@ -4444,23 +4444,23 @@ "configureCta": "Configura", "vectorStoreInstallHint": "Per abilitare la ricerca vettoriale: npm install sqlite-vec (richiede Node.js nativo, non WASM), quindi riavvia." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodica", + "export": "Esporta", + "factual": "Fattuale", "healthUnknown": "Salute sconosciuta", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Tasso di successo", + "import": "Importa", "importError": "Impossibile importare il file", "importResult": "{imported} importati, {skipped} ignorati", - "key": "Key", + "key": "Chiave", "keyPlaceholder": "per esempio. tema.preferenze.utente", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Memorie", "next": "Prossimo", - "noMemories": "No memories found", + "noMemories": "Nessuna memoria trovata", "pageInfo": "Pagina {page} di {totalPages} ({total} totale)", "pipelineError": "Errore della pipeline", - "pipelineOk": "Pipeline OK ({latencyMs}ms)", + "pipelineOk": "Pipeline OK ({latencyMs} ms)", "playground": { "infoTitle": "Playground delle memorie", "infoDesc": "Simula cosa verrebbe recuperato per una determinata query. Nessuna memoria viene modificata — anteprima in sola lettura.", @@ -4475,19 +4475,19 @@ "resultsTitle": "{count} risultato/i", "resolutionTitle": "Risoluzione ricerca", "resolutionEmbedding": "Embedding", - "resolutionStore": "Vector store", + "resolutionStore": "Archivio vettoriale", "resolutionStrategy": "Strategia utilizzata", "rerankApplied": "Rerank applicato", - "fallback": "Fallback", + "fallback": "Ripiego", "noResults": "Nessuna memoria trovata per questa query.", "tokensUsed": "token utilizzati", "none": "nessuno", "errorFetch": "Impossibile recuperare l'anteprima" }, "previous": "Precedente", - "procedural": "Procedural", + "procedural": "Procedurale", "qdrant": { - "title": "Qdrant (Vector Store Tier 2)", + "title": "Qdrant (Archivio vettoriale di livello 2)", "description": "Integrazione Qdrant opzionale per una ricerca semantica scalabile", "enableLabel": "Abilita Qdrant", "enableDesc": "Quando abilitato, Qdrant viene utilizzato come vector store primario", @@ -4534,8 +4534,8 @@ }, "save": "Salva", "saving": "Salvataggio in corso...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Cerca nelle memorie...", + "semantic": "Semantica", "summarize": { "title": "Compatta le vecchie memorie", "noCandidates": "Nessuna memoria idonea alla compattazione (criterio: >30 giorni).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Memorie", - "playground": "Playground", + "playground": "Area di prova", "engine": "Motore" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Gestione della memoria", + "tokensUsed": "Token utilizzati", "tooltip": { "totalEntries": "Totale memorie archiviate per questa chiave API", "tokensUsed": "Totale stimato di token occupati dalle memorie attive", @@ -4558,18 +4558,18 @@ "procedural": "Procedure, flussi di lavoro e istruzioni che l'assistente deve seguire", "semantic": "Concetti, preferenze e conoscenza del dominio" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Voci totali", + "type": "Tipo", "memoryEnabled": "Memoria abilitata" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Competenze", + "description": "Gestisci e monitora le competenze IA", + "skillsTab": "Competenze", + "executionsTab": "Esecuzioni", "selectSkillToInspect": "Seleziona una skill a sinistra per esaminarla.", "schemaTab": "Schema", - "handlerTab": "Handler", + "handlerTab": "Gestore", "inputSchema": "Schema di input", "outputSchema": "Schema di output", "handlerCode": "Codice handler", @@ -4578,28 +4578,28 @@ "setModeAria": "Imposta modalità {mode}", "uninstallSkill": "Disinstalla skill", "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "loading": "Caricamento delle competenze...", + "noSkills": "Nessuna competenza trovata", + "noExecutions": "Nessuna esecuzione trovata", + "enabled": "Abilitato", + "disabled": "Disabilitato", "delete": "Elimina", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", + "version": "Versione", + "tableDescription": "Descrizione", + "skill": "Competenza", + "status": "Stato", + "duration": "Durata", + "time": "Ora", + "sandboxConfig": "Configurazione della sandbox", + "cpuLimit": "Limite CPU", + "cpuLimitDesc": "Tempo massimo di esecuzione per competenza", + "memoryLimit": "Limite di memoria", + "memoryLimitDesc": "Allocazione massima di memoria", "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "timeoutDesc": "Tempo massimo di attesa per la risposta", + "networkAccess": "Accesso alla rete", + "networkAccessDesc": "Consenti richieste di rete in uscita", + "mode": "Modalità", "q": "Q", "filterSkillsPlaceholder": "Filtra le competenze per nome, descrizione o tag", "allModes": "Tutte le modalità", @@ -4610,8 +4610,8 @@ "marketplaceTab": "Marketplace", "applyFilters": "Applica filtri", "popularDefaultsLabel": "Popolare per impostazione predefinita per il provider selezionato:", - "onMode": "ON", - "offMode": "OFF", + "onMode": "ATTIVO", + "offMode": "DISATTIVO", "autoMode": "AUTO", "installSkillButton": "Installa Skill", "installSkillModalTitle": "Installa Skill", @@ -4665,13 +4665,13 @@ "retry": "Riprova", "allOperational": "Tutti i sistemi operativi", "issuesDetected": "Rilevati problemi di sistema", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute è pronto", + "healthVerdictActionRequired": "È necessario intervenire per ripristinare il pieno funzionamento", + "healthVerdictCoolingDown": "Periodo di attesa dopo modifiche recenti", + "healthSubtitle": "Controllo dello stato del sistema", + "advancedDiagnosticsTitle": "Diagnostica avanzata", + "hide": "Nascondi", + "show": "Mostra", "updatedAt": "Aggiornato {time}", "latency": "Latenza", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "Fornitori", "configuredProvidersLabel": "Configurato nel dashboard", "configuredProvidersHint": "Provider con credenziali salvate in /dashboard/providers, indipendentemente dallo stato di runtime.", - "activeProviders": "{count} active", + "activeProviders": "{count} attive", "activeProvidersHint": "Provider configurati attualmente abilitati per le richieste di instradamento.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} monitorate", "monitoredProvidersHint": "Fornitori attualmente monitorati dai monitoraggi dello stato degli interruttori automatici.", "healthyCount": "{count} sano", "nodeVersion": "Nodo {version}", @@ -4721,11 +4721,11 @@ "resetting": "Reimpostazione...", "resetAll": "Reimposta tutto", "until": "Fino al {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Esaurite", + "learnedFromHeaders": "Appreso dalle intestazioni", + "remainingOfLimit": "{remaining}/{limit} rimanenti", + "throttleStatus": "Limitazione: {value}", + "lastHeaderUpdate": "Aggiornamento intestazione: {age}", "databaseHealth": "Integrità del database", "databaseHealthDescription": "Diagnostica e ripara le righe di quota/dominio obsolete e i riferimenti combo interrotti.", "status": "Stato", @@ -4773,11 +4773,11 @@ "inactive": "Inattivo", "noConnectionId": "nessun ID connessione", "accountModelSummary": "{connectionId} · {count} modelli", - "cooldown": "cooldown", + "cooldown": "tempo di attesa", "durationRemaining": "{duration} rimanenti", "noSyncedModelsOrTraffic": "Nessun modello sincronizzato o traffico recente.", "providerRowSummary": "{active}/{total} account attivi · {requests} req · {successRate} successo · {latency} media", - "cooldownCount": "{count} cooldown", + "cooldownCount": "{count} in attesa", "lockoutCount": "{count} blocchi", "issueCount": "{count} problemi", "score": "Punteggio", @@ -4877,7 +4877,7 @@ "failedFetchAuditLog": "Impossibile recuperare il registro di controllo", "showing": "Visualizzazione delle voci {count} (offset {offset})", "search": "Ricerca", - "timestamp": "Timestamp", + "timestamp": "Data e ora", "action": "Azione", "actor": "Attore", "target": "Bersaglio", @@ -4888,28 +4888,28 @@ "previous": "Precedente", "next": "Prossimo", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Visualizza dettagli", + "eventMetadata": "Metadati dell'evento", + "eventPayload": "Payload dell'evento", + "requestId": "ID richiesta", "providerWarningDesc": "Provider Warning Desc", "a": "A", "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "limit": "Limite", + "status": "Stato", + "resourceType": "Tipo di risorsa", + "totalEntries": "Totale voci", + "tab": "Scheda", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Chiudi", + "runningRequests": "Richieste attive", + "runningRequestsDesc": "Visualizzazione in tempo reale delle richieste upstream attualmente in esecuzione", "clearAll": "Cancella tutto", "confirmClearActiveRequests": "Cancellare tutte le richieste attive?", - "model": "Model", - "provider": "Provider", + "model": "Modello", + "provider": "Fornitore", "account": "Account", - "elapsed": "Elapsed", + "elapsed": "Tempo trascorso", "activeStage": "Fase", "activeStageUnknown": "Non ancora inviato all'upstream", "activeStageRegistered": "Registrato", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Slot di rate limit acquisito", "activeStageSendingToProvider": "Invio all'upstream", "activeStageProviderResponseStarted": "Risposta upstream avviata", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Conteggio", + "payloads": "Payload", + "viewPayloads": "Visualizza", + "activeCount": "{count} attive", + "clientPayload": "Payload della richiesta del client", + "upstreamPayload": "Payload del provider upstream", + "upstreamNotSentYet": "Non ancora inviato all'upstream", + "runningRequestDetailMeta": "Account: {account} — Tempo trascorso: {elapsed}", + "export": "Esporta", + "exporting": "Esportazione in corso...", + "exportFailed": "Esportazione non riuscita", "cleanHistoryButton": "Pulisci cronologia", "cleanHistoryTitle": "Pulire la cronologia dei log?", "cleanHistoryMessage": "Questa operazione cancella definitivamente tutte le righe dei log delle richieste, le righe di dettaglio legacy e i file di artefatti locali in DATA_DIR/call_logs. La pagina live si aggiornerà dopo la pulizia.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Eliminate {deleted} voci di log, {deletedArtifacts} artefatti e {deletedDetailedLogs} righe di dettaglio legacy.", "cleanHistoryEmpty": "Nessuna cronologia dei log delle richieste trovata.", "cleanHistoryFailed": "Impossibile pulire la cronologia dei log.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Intervallo di tempo", + "lastNHours": "Ultime {hours}", + "defaultRange": "predefinito", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Impossibile recuperare i log", + "copyFailed": "Impossibile copiare la voce del log", + "copyLogEntry": "Copia voce del log", "filterByLevel": "Filtra per livello di log", "searchPlaceholder": "Cerca nei log…", "searchAria": "Cerca voci di log", @@ -4987,9 +4987,9 @@ "multiProvider": "Multi-provider", "usageTracking": "Monitoraggio dell'utilizzo", "securityDesc": "Imposta una password per proteggere la tua dashboard o salta per ora.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Senza una password, non potrai aggiungere provider durante la configurazione. Potrai aggiungerli in seguito dalla dashboard dopo aver impostato una password.", "providerDesc": "Connetti il ​​tuo primo fornitore di intelligenza artificiale. Puoi aggiungerne altri in seguito.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Per aggiungere provider, devi prima impostare una password. Torna al passaggio relativo alla sicurezza e imposta una password, oppure aggiungi i provider in seguito dalla dashboard.", "apiKeyRequired": "Chiave API (richiesto)", "customUrlOptional": "URL personalizzato (facoltativo)", "testDesc": "Verifichiamo che la connessione del tuo provider funzioni.", @@ -5063,7 +5063,7 @@ "importFromFileDescription": "Carica un file CSV o JSON che elenca più provider (ogni riga può essere un tipo di provider diverso). Rivedi le righe analizzate di seguito e scegli quali importare.", "importFromFileChoose": "Scegli file", "importFromFileSelectHint": "{count} di {total} selezionati", - "importFromFileColProvider": "Provider", + "importFromFileColProvider": "Fornitore", "importFromFileColName": "Nome", "importFromFileColBaseUrl": "URL di base", "importFromFileErrorLine": "Riga {line}: {reason}", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Importazione in corso…", "importFromFileImport": "Importa {count} provider", "importFromFileResult": "Importati {success} provider ({failed} non riusciti)", + "importFromFileDownloadTemplate": "Scarica il modello CSV", + "importFromFileMoreErrors": "+{count} altri", + "importFromFileSchemaHint": "Le colonne CSV sono posizionali: provider, name, apiKey, baseUrl (facoltativo), priority (facoltativo). La colonna provider deve contenere l'id di un provider gestito esistente o l'id di un nodo compatibile con OpenAI/Anthropic già registrato; questa importazione non crea nuovi nodi endpoint.", "adaptaTutorial": { "title": "Come connettere Adapta Web", "introPrefix": "Adapta si autentica tramite Clerk. Il token", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} nascosti", "warningCount": "{count} Attenzione", "noConnections": "Nessuna connessione", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Scaduto", + "expiringSoonBadge": "In scadenza a breve", "freeTier": "Livello gratuito", "freeTierAvailable": "Livello gratuito disponibile", "hasFreeTooltip": "Piano gratuito disponibile", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Questo provider è stato deprecato", "riskNotice": { "title": "Prima di continuare", - "detailsTitle": "Usage caveats", + "detailsTitle": "Avvertenze sull'utilizzo", "tooltip": "Provider con avvertenze d'uso — fai clic per i dettagli", "oauth": "Questo provider utilizza la sessione/OAuth ufficiale del prodotto, che non è autorizzata per l'uso come proxy/router. Si sconsiglia l'uso intensivo di agenti autonomi (in stile OpenCloud, flussi lunghi a più passaggi, batch di grandi dimensioni): l'upstream potrebbe reagire limitando o bloccando l'account. Utilizzare a proprio rischio.", "webCookie": "Questo provider si autentica tramite i cookie della sessione web. Il servizio upstream potrebbe invalidare la sessione in qualsiasi momento, richiedendo di effettuare nuovamente l'accesso. Non consigliato per operazioni prolungate non presidiate. Utilizzare a proprio rischio.", @@ -5188,9 +5191,9 @@ "cancel": "Annulla" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} connessione/i segnalata/e — fino a {maxFailures} errori recenti{lastFailureSuffix}. Fai clic per visualizzare lo stato delle connessioni.", + "lastFailureSuffix": "(ultimo errore {time})", + "ariaLabel": "Visualizza i dettagli sullo stato delle connessioni, {count} avviso/i" }, "disabled": "Disabilitato", "enableProvider": "Abilita fornitore", @@ -5225,7 +5228,7 @@ "failedCreate": "Impossibile creare il fornitore", "errorOccurred": "Si è verificato un errore. Per favore riprova.", "modelStatus": "Stato del modello", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Solo configurati", "allModelsOperational": "Tutti i modelli operativi", "modelsWithIssues": "{count} modelli con problemi", "allModelsNormal": "Tutti i modelli rispondono normalmente.", @@ -5236,7 +5239,7 @@ "clearing": "Cancellazione...", "until": "Fino al {time}", "providerTestFailed": "Il test del fornitore è fallito", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Timeout del test del provider — troppe connessioni da testare contemporaneamente", "modeTest": "{mode} Prova", "passedCount": "{count} superato", "failedCount": "{count} non riuscito", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL Icona", "iconUrlHint": "Opzionale. URL dell'immagine mostrata come icona di questo provider.", "iconUrlInvalid": "URL dell'icona non valida. Usa un URL http(s):// o data:image/*;base64.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Fuso orario di reimpostazione della quota giornaliera", + "dailyQuotaResetTimezoneHint": "Fuso orario IANA facoltativo utilizzato quando il servizio upstream omette X-RateLimit-Reset. Lascia vuoto per mantenere un breve periodo di attesa.", + "dailyQuotaResetHourLabel": "Ora di reimpostazione della quota giornaliera", + "dailyQuotaResetHourHint": "Ora locale da 0 a 23 nel fuso orario indicato sopra. Se vuoto, non viene usato alcun orario a livello di nodo.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Fornitore non trovato", "deleteConnectionConfirm": "Eliminare questa connessione?", "deleteConnectionConfirmNamed": "Sei sicuro di voler eliminare {name}? Questa azione non può essere annullata.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Elimina selezionate ({count})", + "batchDeleteConfirm": "Eliminare {count} connessione/i? Questa azione non può essere annullata.", + "batchDeleteSuccess": "Eliminate {count} connessione/i", "batchActivateSelected": "Attiva", "batchDeactivateSelected": "Disattiva", "batchRetestSelected": "Riesegui test", @@ -5292,7 +5295,7 @@ "filterError": "Errore", "filterBanned": "Bloccato", "filterCreditsExhausted": "Crediti esauriti", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Cerca account…", "noFilteredConnections": "Nessuna connessione corrisponde al filtro corrente.", "failedSetAlias": "Impossibile impostare l'alias", "setAliasSuccess": "Alias {alias} impostato", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "Dettagli compatibili con OpenAI", "messagesApi": "API dei messaggi", "responsesApi": "API di risposta", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Embedding", + "audioTranscriptions": "Trascrizioni audio", + "audioSpeech": "Sintesi vocale", + "imagesGenerations": "Generazione di immagini", "chatCompletions": "Completamenti della chat", "importingModels": "Importazione...", "importFromModels": "Importa da /modelli", - "modelsImported": "{count} models imported", + "modelsImported": "{count} modelli importati", "allModelsAlreadyImported": "Tutti i modelli sono già importati", "noNewModelsToImport": "Nessun nuovo modello da importare — tutti i modelli sono già nel registro o nell'elenco dei modelli personalizzati", "skippingExistingModels": "Salto {count} modelli esistenti", @@ -5350,13 +5353,13 @@ "importFailed": "Importazione non riuscita", "noNewModelsAdded": "Non sono stati aggiunti nuovi modelli.", "adding": "Aggiunta...", - "close": "Close", + "close": "Chiudi", "importingModelsTitle": "Importazione di modelli", "copyModel": "Copia modello", "filterModels": "Filtra modelli…", "testAllRateLimited": "Limite di frequenza raggiunto, interrotto in anticipo", "hideFailedAuto": "Nascondi automaticamente i modelli non riusciti", - "selectAllModels": "Select all", + "selectAllModels": "Seleziona tutto", "hideAllModels": "Nascondi tutti", "modelsActive": "attivi", "showModel": "Mostra modello", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Una chiave per riga. Formato: nome|apiKey o semplicemente apiKey (nominato automaticamente in base all'indice).", "bulkValidateKeys": "Convalida ciascuna chiave prima di salvare (più lento)", "bulkAddAllKeys": "Aggiungi tutte le chiavi", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# chiave aggiunta} other {# chiavi aggiunte}}", + "bulkFailedCount": "{count, plural, one {# operazione non riuscita} other {# operazioni non riuscite}}", "optional": "Opzionale", "anthropicCompatibleName": "Compatibile antropico", "openaiCompatibleName": "Compatibile con OpenAI", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Si è verificato un errore imprevisto", "getApiKey": "Ottieni la chiave API", "getApiKeyDescription": "Registrati o iscriviti per una chiave API", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# connessione} other {# connessioni}}", "messagesPath": "messaggi", "responsesPath": "risposte", "chatCompletionsPath": "chat/completamenti", @@ -5419,17 +5422,17 @@ "configured": "configurato", "providerProxyConfigureHint": "Configura il proxy per tutte le connessioni di questo provider", "providerProxy": "Procura del fornitore", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Ripara .env", + "repairEnvWorking": "Riparazione in corso...", + "repairEnvHint": "Ripristina i valori OAuth predefiniti mancanti in .env senza sovrascrivere i valori esistenti.", + "repairEnvSuccess": "Valori OAuth predefiniti ripristinati", + "repairEnvFailed": "Impossibile riparare .env", "noConnectionsYet": "Nessuna connessione ancora", "addFirstConnectionHint": "Aggiungi la tua prima connessione per iniziare", "addConnection": "Aggiungi connessione", "availableModels": "Modelli disponibili", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Modelli integrati", + "builtInModelsHint": "Modelli del registro per questo provider. Usa la matita per impostare le opzioni di compatibilità.", "pageAutoRefresh": "La pagina si aggiornerà automaticamente...", "statusDisabled": "disabilitato", "statusConnected": "collegato", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Autenticare nuovamente questa connessione", "proxyConfig": "Configurazione proxy", "aliasExistsAlert": "L'alias \"{alias}\" esiste già. Utilizza un modello diverso o modifica l'alias esistente.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "nome alias", + "clickToSetAlias": "Fai clic per impostare l'alias", + "clickToEditAlias": "Alias: {alias} (fai clic per modificare)", "openRouterAnyModelHint": "OpenRouter supporta qualsiasi modello. Aggiungi modelli e crea alias per un accesso rapido.", "modelIdFromOpenRouter": "ID modello (da OpenRouter)", "openRouterModelPlaceholder": "antropico/claude-3-opus", "customModels": "Modelli personalizzati", "customModelsHint": "Aggiungi ID modello non presenti nell'elenco predefinito. Questi saranno disponibili per il routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normalizza gli ID delle chiamate agli strumenti a 9 caratteri (ad es. Mistral)", + "preserveDeveloperRoleLabel": "Mantieni il ruolo developer di OpenAI Responses (non mapparlo a system)", + "compatAdjustmentsTitle": "Compatibilità", + "compatButtonLabel": "Compatibilità", + "compatToolIdShort": "ID strumento 9", + "compatDeveloperShort": "Ruolo developer", + "compatDoNotPreserveDeveloper": "Non mantenere il ruolo developer", + "compatBadgeNoPreserve": "Non mantenere", + "compatProtocolLabel": "Protocollo di richiesta del client", + "compatProtocolHint": "Queste opzioni si applicano quando OmniRoute rileva questo formato di richiesta (OpenAI Chat, Responses API o Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Riscrivi le chiamate dello strumento nativo web_fetch verso /v1/web/fetch di OmniRoute.", "interceptionLoadError": "Impossibile caricare le impostazioni di intercettazione: {error}", "interceptionSaveError": "Impossibile salvare le impostazioni di intercettazione: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Mostra in Claude Code (claude/…)", + "ccAliasSectionHint": "Pubblicizza i modelli di questo provider con ID mirror claude/<provider>/<model>, in modo che il rilevamento dei modelli del gateway di Claude Code possa elencarli. Disattivato per impostazione predefinita: l'attivazione raddoppia le voci del catalogo per tutti i client.", + "ccAliasProviderLevelLabel": "Predefinito del provider", + "ccAliasModelOverridesLabel": "Override per modello", + "ccAliasModelOverrideAriaLabel": "Override per {modelId}", + "ccAliasStateInherit": "Eredita", + "ccAliasStateOn": "Attivo", + "ccAliasStateOff": "Disattivo", + "ccAliasAddModelPlaceholder": "ID modello (ad es. gpt-4o)", + "ccAliasAddModelButton": "Aggiungi override", + "ccAliasLoadError": "Impossibile caricare le impostazioni degli alias di rilevamento: {error}", + "ccAliasSaveError": "Impossibile salvare l'impostazione dell'alias di rilevamento: {error}", + "compatUpstreamHeadersLabel": "Header upstream aggiuntivi", + "compatUpstreamHeadersHint": "Impostazione con privilegi elevati: richiede lo stesso livello di attendibilità della modifica delle credenziali API del provider; deve essere usata solo da amministratori fidati. Viene unita dopo che OmniRoute ha aggiunto l'autenticazione dalla chiave API del provider. Se un header personalizzato usa lo stesso nome di uno esistente (ad es. Authorization), il tuo valore sostituisce completamente l'header generato automaticamente (incluso il token Bearer): l'upstream vede solo ciò che hai inserito, non la chiave presente nelle impostazioni. Una configurazione errata può causare errori 401 o compromettere l'autenticazione upstream. Una riga per ogni header (ad es. autenticazione aggiuntiva per alcuni gateway). Passa il cursore sul valore o attivalo per visualizzarne l'anteprima. Il salvataggio avviene quando l'elemento perde lo stato attivo, facendo clic all'esterno o chiudendo questo pannello.", + "compatUpstreamHeaderName": "Nome dell'header", + "compatUpstreamHeaderValue": "Valore", + "compatUpstreamAddRow": "Aggiungi header", + "compatUpstreamRemoveRow": "Rimuovi riga", + "compatBadgeUpstreamHeaders": "Header", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Importa solo modelli gratuiti", @@ -5592,26 +5595,26 @@ "email": "E-mail", "healthCheckMinutes": "Controllo dello stato (min)", "healthCheckHint": "Intervallo di aggiornamento del token proattivo. 0 = disabilitato.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Deseleziona tutto", + "modelsActiveCount": "{active}/{total} attivi", + "noModelsMatch": "Nessun modello corrisponde a \"{filter}\"", + "groupLabel": "Ambiente", + "groupPlaceholder": "ad es. eKaizen, Personale", "failedTestConnection": "Impossibile testare la connessione", "failed": "Fallito", "leaveBlankKeepCurrentApiKey": "Lascia vuoto per mantenere la chiave API corrente.", "editCompatibleTitle": "Modifica {type} Compatibile", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "URL radice della tua API compatibile con {type}. Usa le Impostazioni avanzate per personalizzare i percorsi degli endpoint.", "apiKeyForCheck": "Chiave API (per controllo)", "testModelIdLabel": "ID modello (opzionale)", "testModelIdPlaceholder": "es. my-model-id", "testModelIdHint": "Se il provider non ha un endpoint /models, inserisci un ID modello per convalidare tramite /chat/completions.", "compatibleProdPlaceholder": "{type} Compatibile (prodotto)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Token aggiornato correttamente", + "tokenRefreshFailed": "Aggiornamento del token non riuscito", "cursorSessionUnchanged": "Sessione già attuale", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Applica autenticazione", + "exportCodexAuthFile": "Esporta autenticazione", "applyClaudeAuthLocal": "Applica autenticazione", "exportClaudeAuthFile": "Aut. esportazione", "importClaudeAuth": "Importa autenticazione", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} non riuscito", "codexImportBulkZipExtracting": "Estrazione ZIP…", "codexImportBulkZipError": "Impossibile estrarre ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Impostazioni avanzate", + "chatPathLabel": "Percorso dell'endpoint di chat", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Percorso di chat personalizzato per i provider con API non standard (ad es. /v4/chat/completions)", + "modelsPathLabel": "Percorso dell'endpoint dei modelli", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Percorso personalizzato dei modelli per la convalida (ad es. /v4/models)", "clientIdentityLabel": "Identità Client", "clientIdentityHint": "Opzionale. Aggiunge header di fingerprint client (es. User-Agent) corrispondenti a una CLI nota per gateway compatibili che li richiedono.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Disattivato (manualmente)", + "statusBanned": "Bloccato / Violazione della sandbox", + "statusCreditsExhausted": "Saldo insufficiente / Quota esaurita", + "showEmails": "Mostra tutte le e-mail", + "hideEmails": "Nascondi tutte le e-mail", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Aggiungi un'altra chiave API o incolla più chiavi", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Gateway degli aggregatori", "enterpriseCloud": "Impresa e cloud", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Etichetta del formato API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", + "apiRegionChina": "Regione API: Cina", + "apiRegionHint": "Suggerimento per la regione API", + "apiRegionInternational": "Regione API: internazionale", + "apiRegionLabel": "Etichetta della regione API", + "apikey": "Chiave API", "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "audioProvidersHeading": "Intestazione dei provider audio", "cloudAgentProviders": "Provider di agenti cloud", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Etichetta breve dell'audio", + "azureOpenAiBaseUrlHint": "Suggerimento per l'URL di base di Azure OpenAI", + "bailianBaseUrlHint": "Suggerimento per l'URL di base di Bailian", + "claudeWebCookieHint": "Apri claude.ai → DevTools → Application → Cookies → claude.ai e copia il valore 'sessionKey'. Sono necessari anche cf_clearance, __cf_bm e _cfuvid per Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Suggerimento per il cookie web di Blackbox", + "blackboxWebCookiePlaceholder": "Segnaposto del cookie web di Blackbox", "t3ChatWebCookieHint": "Apri t3.chat → DevTools → Applicazione → Archiviazione locale → https://t3.chat, copia 'convex-session-id'. Quindi apri DevTools → Rete, copia l'intestazione completa del cookie da qualsiasi richiesta di chat. Incolla entrambi i valori nei campi sottostanti.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Suggerimento per il cookie web di Grok", "blockClaudeExtraUsageDescription": "Se abilitato, OmniRoute segna questa connessione Claude come non disponibile non appena l'API di utilizzo segnala extra usage in coda, in modo che il fallback passi a un'altra connessione invece di continuare con una fatturazione extra pay-as-you-go.", "blockClaudeExtraUsageLabel": "Blocca l'extra usage di Claude", "disableCoolingDescription": "Salta il cooldown transitorio in modo che questa connessione rimanga idonea anche dopo errori ripristinabili (gli stati terminali come bannato/scaduto si applicano ancora).", "disableCoolingLabel": "Disabilita il cooldown per questa connessione", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 chiave aggiunta} other {# chiavi aggiunte}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicato ignorato} other {# duplicati ignorati}}", + "bulkPasteHint": "Incolla una chiave API per riga. Le righe vuote vengono ignorate e le chiavi duplicate vengono saltate.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Aggiunge l'header beta redact-thinking per gli upstream compatibili con CC che richiedono flussi di ragionamento Claude nascosti.", + "ccCompatibleRedactThinkingLabel": "Abilita la funzionalità beta redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Aggiunge `display: \"summarized\"` alle richieste di ragionamento compatibili con CC, in modo che i modelli Claude supportati trasmettano in streaming delta di ragionamento visibili.", + "ccCompatibleSummarizeThinkingLabel": "Abilita la visualizzazione riepilogativa del ragionamento", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Utilizza il livello di servizio prioritario per le richieste Codex, quando disponibile.", + "codexFastServiceTierLabel": "Livello di servizio rapido Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Segnaposto del nome dell'header upstream compatibile", + "compatUpstreamHeaderValuePlaceholder": "Segnaposto del valore dell'header upstream compatibile", + "compatible": "Compatibile", + "configuredCount": "Conteggio configurato", + "consoleApiKeyOracleHint": "Suggerimento per la chiave API della console Oracle", + "consoleApiKeyOracleLabel": "Chiave API della console Oracle", + "consoleApiKeyOraclePlaceholder": "Segnaposto della chiave API della console Oracle", "newApiUserIdLabel": "ID utente New-API", "newApiUserIdPlaceholder": "es. 12345", "newApiUserIdHint": "Valore dell'header New-Api-User di AgentRouter, usato insieme alla chiave API della console per recuperare il saldo della quota.", @@ -5830,57 +5833,57 @@ "featureFlagNewApiAggregatorBalanceDescription": "Abilita il rilevamento del bilancio per i nodi compatibili con New-API / One-API / Sub2API aggregator", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Suggerimento per lo user agent personalizzato", + "customUserAgentLabel": "User agent personalizzato", + "databricksBaseUrlHint": "Suggerimento per l'URL di base di Databricks", + "defaultThinkingStrengthHint": "Utilizzato quando una richiesta non specifica il livello di impegno del ragionamento.", + "defaultThinkingStrengthLabel": "Intensità predefinita del ragionamento", + "deleteAllExtraApiKeys": "Elimina tutto", + "excludedModelsHint": "Suggerimento per i modelli esclusi", + "excludedModelsLabel": "Modelli esclusi", + "excludedModelsPlaceholder": "Segnaposto dei modelli esclusi", + "expirationBannerExpired": "Scaduto", + "expirationBannerExpiredDesc": "La scadenza è già trascorsa", + "expirationBannerExpiringSoon": "In scadenza a breve", + "expirationBannerExpiringSoonDesc": "La scadenza è imminente", + "extraApiKeyMasked": "Chiave {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Suggerimento per le chiavi API aggiuntive", + "extraApiKeysLabel": "Chiavi API aggiuntive", + "apiKeyHealthLabel": "Stato delle chiavi API", + "apiKeyStatusActive": "Attiva", + "apiKeyStatusWarning": "Avviso ({count} errori)", + "apiKeyStatusInvalid": "Non valida", + "primaryKey": "Chiave primaria", + "apiKeyInvalidAlert": "{count} chiavi API contrassegnate come non valide a causa di errori di autenticazione nelle connessioni: {connections}. Verranno ignorate durante la rotazione. Fai clic per esaminarle.", + "apiKeyInvalidAlertTitle": "Avviso sullo stato delle chiavi API", + "apiKeyWarningAlert": "{count} chiavi API in stato di avviso a causa di un tasso di errore elevato nelle connessioni: {connections}. Esaminale per evitare problemi di rotazione.", + "apiKeyWarningAlertTitle": "Avviso chiave API", + "googlePseInfo": "Informazioni su Google PSE", "antigravityProjectIdHint": "Override facoltativo per le richieste di Antigravity Cloud Code. Lascia vuoto per utilizzare il progetto scoperto durante Google OAuth.", "antigravityClientProfileLabel": "Profilo client", "antigravityClientProfileHint": "Scegli quale identità client Antigravity viene presentata da OmniRoute all'API.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Il livello Codex Fast è attivo", - "tierFast": "Fast", + "tierFast": "Veloce", "antigravityProjectIdLabel": "ID del progetto Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Segnaposto del cookie web di Grok", + "herokuBaseUrlHint": "Suggerimento per l'URL di base di Heroku", + "hideEmail": "Nascondi email", + "imageProviders": "Provider di immagini", "videoProviders": "Generazione video", "embeddingRerankProviders": "Incorporamenti e riclassificazione", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Etichetta breve per le immagini", + "llmProviders": "Provider LLM", + "localProviderApiKeyOptionalHint": "Suggerimento per la chiave API facoltativa del provider locale", + "localProviderBaseUrlHint": "Suggerimento per l'URL di base del provider locale", + "localProviders": "Provider locali", + "maxConcurrentWholeNumberError": "Errore: il numero massimo di richieste simultanee deve essere un numero intero", "m365TierLabel": "Livello Copilot", "m365TierHint": "Scegli quale interfaccia Microsoft 365 Copilot utilizza questa connessione. Individual è il BizChat consumer predefinito; Education ed Enterprise (lavoro) optano per le interfacce del rispettivo tenant.", "m365TierIndividualOption": "Individual (predefinito)", - "m365TierEduOption": "Education", + "m365TierEduOption": "Istruzione", "m365TierEnterpriseOption": "Enterprise / Lavoro", "tierOverrideLabel": "Override del livello", "tierOverrideAuto": "Auto (decide il routing)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Economico", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Fissa questo provider a un livello di routing invece di lasciare che OmniRoute lo deduca dal prezzo del modello.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Suggerimento per il cookie web di Muse Spark", + "museSparkWebCookiePlaceholder": "Segnaposto del cookie web di Muse Spark", + "oauth": "OAuth", + "openCliTools": "Apri gli strumenti CLI", + "openSettings": "Apri le impostazioni", + "openaiResponsesStoreDescription": "Consenti alle richieste compatibili con Responses API di conservare lo stato delle risposte memorizzate.", + "openaiResponsesStoreLabel": "Archiviazione di OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Informazioni sulla chiave condivisa di Perplexity Search", + "perplexityWebCookieHint": "Suggerimento per il cookie web di Perplexity", + "perplexityWebCookiePlaceholder": "Segnaposto del cookie web di Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Override dei rate limit", "rateLimitOverridesMaxConcurrentHint": "Override delle richieste simultanee massime per questa connessione. Esegue l'override del limite a livello di account.", "rateLimitOverridesMaxConcurrentLabel": "Max simultanee (Rate Limit)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Tempo massimo (ms) per cui una richiesta può attendere uno slot soggetto a limite di frequenza prima di non riuscire. Sostituisce l'impostazione globale di resilienza solo per questa connessione.", + "rateLimitOverridesMaxWaitMsLabel": "Attesa massima in coda (ms)", "rateLimitOverridesMinTimeHint": "Tempo minimo (ms) tra le richieste. Esegue l'override del ritardo predefinito del limitatore di frequenza.", "rateLimitOverridesMinTimeLabel": "Intervallo min (ms)", "rateLimitOverridesRpdHint": "Richieste massime al giorno per questa connessione. Sovrascrive il valore predefinito del provider.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Token/giorno)", "rateLimitOverridesTpmHint": "Token massimi al minuto per questa connessione. Esegue l'override del valore predefinito del provider.", "rateLimitOverridesTpmLabel": "TPM (Token/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Aggiorna token OAuth", + "regionHint": "Suggerimento per la regione", + "regionLabel": "Regione", + "removeThisKey": "Rimuovi questa chiave", + "routingTagsHint": "Suggerimento per i tag di routing", + "routingTagsLabel": "Tag di routing", + "routingTagsPlaceholder": "Segnaposto dei tag di routing", + "search": "Cerca", + "searchEngineIdHint": "Suggerimento per l'ID del motore di ricerca", + "searchEngineIdLabel": "ID del motore di ricerca", + "searchEngineIdRequired": "L'ID del motore di ricerca è obbligatorio", + "searchProvider": "Provider di ricerca", + "searchProviderDesc": "Descrizione del provider di ricerca", "searchProviders": "Cerca fornitori...", "searchByModel": "Cerca per modello…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Provider di ricerca", + "searxngBaseUrlHint": "Suggerimento per l'URL di base di Searxng", + "searxngInfo": "Informazioni su Searxng", + "sessionCookieLabel": "Cookie di sessione", + "showEmail": "Mostra email", + "snowflakeBaseUrlHint": "Suggerimento per l'URL di base di Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Suggerimento per il gruppo di tag", + "tagGroupLabel": "Gruppo di tag", + "tagGroupPlaceholder": "Segnaposto del gruppo di tag", + "testModel": "Testa il modello", + "testingModel": "Test del modello", "modelTestQuotaTooltip": "Quota esaurita — si ripristina domani o necessita di un ricarico", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Token scaduto", + "tokenExpiredTitle": "Token scaduto", + "tokenExpiresSoonTitle": "Il token scadrà a breve", + "tokenShort": "Token", + "totalKeysRotating": "{count, plural, one {1 chiave a rotazione} other {# chiavi a rotazione}}", + "unhideModel": "Mostra nuovamente il modello", + "upstreamProxyProviders": "Provider proxy upstream", "validationModelIdHint": "Modello utilizzato per verificare la chiave API. Lascia vuoto per utilizzare il primo modello disponibile del provider.", "validationModelIdLabel": "Modello di convalida", "validationModelIdPlaceholder": "es. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Incolla il JSON del tuo Service Account ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) oppure un OAuth access_token", + "webCookieProviders": "Provider di cookie web", + "weeklyShort": "Sett.", + "xiaomiMimoBaseUrlHint": "Suggerimento per l'URL di base di Xiaomi Mimo", "globalCodexServiceMode": "Modalità di servizio Codex globale", "connect": "Connetti", "manualApiKey": "Chiave API manuale", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Trova le credenziali dei provider AI (OpenAI, Anthropic, Google, Mistral, xAI) memorizzate da Zed IDE nel portachiavi del sistema operativo e importale come connessioni. Zed IDE deve essere installato su questa macchina.", "zedImportButton": "Importa da Zed", "zedImportFailed": "Importazione da Zed fallita", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Suggerimento per l'importazione in Zed", + "zedImportNetworkError": "Errore di rete durante l'importazione in Zed", + "zedImportNone": "Nessuna importazione in Zed", "zedImportSuccess": "Importate {credentials} credenziali da Zed per {providers} provider", "zedImporting": "Importazione in corso…", "zedNoCredentials": "Nessuna credenziale Zed trovata nel portachiavi", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "voce {number}", "claudeImportParseError": "errore di analisi", "claudeImportNoValidEntries": "Nessuna voce valida da importare", - "webFetch": "Web Fetch", + "webFetch": "Recupero web", "webFetchTooltip": "Provider che estraggono contenuti da URL web (HTML → Markdown, scrape, screenshot)", "webFetchProvidersHeading": "Provider Web Fetch", "compatibleProvidersDesc": "Endpoint compatibili con OpenAI e Anthropic che ospiti o configuri. Indirizza qualsiasi SDK OpenAI al tuo URL e instrada le richieste qui.", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Proxy API scontato per oltre 40 modelli tra cui GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Ottieni la tua chiave API su https://freeaiapikey.com/dashboard. URL di base: https://freeaiapikey.com/v1.", "freemodel-dev": "Ottieni 300 $ di crediti API gratuiti su https://freemodel.dev — nessuna informazione di pagamento richiesta. Endpoint compatibile con OpenAI. Modelli GPT-5.4 e GPT-5.5 disponibili.", "friendliai": "Piano gratuito per inferenza serverless — nessuna carta di credito richiesta", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Piano gratuito tramite Google AI Studio; le quote per modello non vengono più pubblicate (consulta la pagina delle quote in AI Studio) — nessuna carta di credito richiesta.", "gigachat": "Connetti GigaChat (Sber) con una chiave API.", "gitlab": "Token di accesso personale GitLab per l'API pubblica Code Suggestions. Configura un URL di base self-hosted quando non utilizzi gitlab.com.", "gitlawb-gmi": "Ottieni la tua chiave API dalla dashboard di Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Connetti GLM Coding (Cina) con una chiave API.", "glmt": "Profilo GLM preimpostato con budget di token più elevato, pensiero abilitato e timeout più lungo.", "getgoapi": "Connetti GoAPI con una chiave API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Piano gratuito: limiti per modello (200K token/giorno per modello di chat; consulta console.groq.com/docs/rate-limits per RPM/RPD) — nessun metodo di pagamento registrato.", "haiper": "Ottieni la chiave API su haiper.ai/haiper-api", "heroku": "Connetti Heroku AI con una chiave API.", "hcnsec": "Ottieni la chiave API su api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Crea una chiave API su https://app.requesty.ai, quindi incollala qui come token Bearer. Endpoint compatibile con OpenAI su https://router.requesty.ai/v1, con un catalogo /v1/models in tempo reale.", "runwayml": "La generazione video di Runway è basata su task. OmniRoute invia lavori text-to-video o image-to-video, interroga /v1/tasks/[id] e normalizza gli output video completati nella risposta simile a OpenAI /v1/videos/generations.", "sambanova": "$5 di crediti gratuiti alla registrazione (validità 30 giorni), nessuna carta di credito richiesta", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Crea una chiave API su https://seekai.cc, quindi incollala qui come token Bearer. URL di base compatibile con OpenAI: https://seekai.cc/v1.", "sap": "La scoperta dei modelli utilizza /v2/lm/scenarios/foundation-models/models su AI_API_URL. Le richieste di chat utilizzano deploymentUrl/chat/completions e richiedono AI-Resource-Group.", "sarvam": "Sarvam AI è compatibile con OpenAI su /v1. OmniRoute controlla /v1/models e instrada il traffico chat verso /v1/chat/completions. I modelli sono ottimizzati per le lingue indiane.", "scaleway": "1M di token gratuiti per i nuovi account — conforme a UE/GDPR (Parigi), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Connetti Claude Code con il flusso OAuth esistente.", "cline": "Connetti Cline con il flusso OAuth esistente.", "cursor": "Connetti Cursor IDE con il flusso OAuth esistente.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Connetti Cursor con una chiave API utente (crsr_...) da cursor.com/dashboard/api; non è necessaria alcuna sessione IDE.", "github": "Connetti GitHub Copilot con il flusso OAuth esistente.", "gitlab-duo": "Applicazione OAuth con scope ai_features + read_user. Configura GITLAB_DUO_OAUTH_CLIENT_ID e opzionalmente GITLAB_DUO_OAUTH_CLIENT_SECRET su questa istanza di OmniRoute.", "kilocode": "Connetti Kilo Code con il flusso OAuth esistente.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Copia le credenziali richieste dal dominio del provider. Per i cookie, copiare solo il valore dell'intestazione Cookie e omettere Cookie:.", "webSessionGuideStep3Manual": "Percorso manuale: apri gli strumenti di sviluppo del browser (F12 → Rete), aggiorna la pagina, apri una richiesta autenticata e copia il valore dell'intestazione Cookie dagli Intestazioni della Richiesta — ometti il prefisso Cookie:.", "webSessionGuideStep4": "Incollalo qui e controlla la connessione. Se smette di funzionare, accedi nuovamente e sostituiscilo con un nuovo valore.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importa file .har", + "harImportButtonBusy": "Importazione…", + "harImportButtonHint": "Esporta dalla scheda Network di DevTools dopo aver inviato almeno un messaggio di chat.", + "harImportStatusValid": "Importato — valido per circa {minutes} min.", + "harImportStatusExpiringSoon": "Importato — valido solo per altri circa {minutes} min.", + "harImportStatusExpired": "Importato, ma questo token è già scaduto ({minutes} min fa) — esporta un nuovo HAR.", + "harImportStatusUnknownExpiry": "Importato. Impossibile leggerne la scadenza.", + "harImportErrorNotJson": "Il file non contiene JSON valido — è davvero un'esportazione .har?", + "harImportErrorNoEntries": "Questo HAR non contiene voci di rete registrate.", + "harImportErrorNoChathubUrl": "Nessuna connessione alla chat di Copilot trovata in questo HAR. Invia almeno un messaggio nella chat su m365.cloud.microsoft prima di esportarlo.", + "harImportErrorUnparsableUrl": "Connessione alla chat trovata, ma è stato impossibile leggerne l'URL.", + "harImportErrorMissingFields": "Connessione alla chat trovata, ma il token era assente.", + "harImportErrorReadFailed": "Impossibile leggere il file.", + "harImportErrorUnknown": "Impossibile estrarre una credenziale dal file HAR.", "webSessionSecurityHint": "Trattala come una password: può accedere al tuo account web a cui hai effettuato l'accesso fino alla scadenza o alla revoca.", "webNoAuthGuideTitle": "Nessuna credenziale richiesta", "webNoAuthGuideBody": "{provider} non necessita di una chiave API o di un cookie. Salva la connessione per utilizzare il suo endpoint web gratuito.", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Modalità servizio Codex aggiornata", "codexServiceTierActive": "Il livello di servizio Codex {tier} è attivo", "codexTierFastLabel": "Veloce", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Flessibile", "commandCodeApplyFailed": "Impossibile applicare il codice di autorizzazione del comando", "commandCodeApplyingApproval": "Browser approvato, applicazione in corso…", "commandCodeApplyingKey": "Applicazione della chiave approvata dal browser…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Il codice di autorizzazione è scaduto", "commandCodeConnected": "Codice comando connesso", "commandCodeConnectionAdded": "Connessione del codice comando aggiunta", + "clearConnectionCooldown": "Azzera il tempo di attesa", + "clearConnectionCooldownInProgress": "Azzeramento…", + "clearConnectionCooldownTitle": "Azzera subito il tempo di attesa — usa questa opzione quando la quota è già stata aggiornata a monte", "commandCodeLinkExpired": "Il link del codice comando è scaduto", "commandCodeOpeningStudio": "Apertura di Command Code Studio…", "commandCodePopupBlocked": "Popup bloccato. Si prega di consentire i popup e riprovare Command Code Connect.", "commandCodeStartFailed": "Impossibile avviare il comando Code auth", "connectionDeleted": "Connessione eliminata", "connectionFallback": "connessione", + "connectionCooldownCleared": "Tempo di attesa azzerato — la connessione è stata reinserita nell'instradamento", "coolingConnectionsDescription": "Queste connessioni si stanno raffreddando dopo l'ultima richiesta. OmniRoute le salterà fino alla scadenza del timer — nessuna disattivazione manuale richiesta.", "coolingConnectionsTitle": "Attualmente raffreddando ({count})", + "failedClearConnectionCooldown": "Impossibile azzerare il tempo di attesa", "failedDeleteAlias": "Impossibile eliminare l'alias", "failedDeleteConnection": "Impossibile eliminare la connessione", "failedDistributeProxies": "Impossibile distribuire i proxy.", @@ -6446,9 +6454,9 @@ "failedUpdateCliproxyRouting": "Impossibile aggiornare il routing di CLIProxyAPI", "failedUpdateCodexLimitPolicy": "Impossibile aggiornare la politica del limite di Codex", "failedUpdateCodexServiceMode": "Impossibile aggiornare la modalità del servizio Codex", - "filterByMedia": "Media", + "filterByMedia": "Contenuti multimediali", "freeBadge": "Gratuito", - "kimiCodeApiKeyLabel": "Kimi Code API Key", + "kimiCodeApiKeyLabel": "Chiave API Kimi Code", "modelTestFailed": "Il test del modello è fallito", "modelTestNetworkError": "Errore di rete durante il test del modello", "networkError": "Errore di rete", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Impostazioni dell'endpoint del modello salvato", "searchByModelAria": "Cerca per modello", "selectSupportedEndpoint": "Seleziona almeno un endpoint supportato", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "Impostazioni", @@ -6554,22 +6557,22 @@ "systemPrompt": "Richiesta di sistema", "thinkingBudget": "Pensare al bilancio", "proxy": "Procura", - "httpProxy": "HTTP Proxy", - "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "httpProxy": "Proxy HTTP", + "1proxy": "1 proxy", + "proxySubTabsAria": "Sezioni proxy", + "requestBodyLimitTitle": "Limite del corpo della richiesta", + "requestBodyLimitDescription": "Dimensione massima del payload API accettata prima che venga analizzato il corpo della richiesta. Le route dedicate al caricamento mantengono almeno il limite integrato di 100 MB.", + "requestBodyLimitInputLabel": "Limite del corpo della richiesta in MB", + "requestBodyLimitEmptyError": "Inserisci un limite in MB", + "requestBodyLimitWholeNumberError": "Usa un numero intero", + "requestBodyLimitMinimumError": "Il minimo è {min} MB", + "requestBodyLimitMaximumError": "Il massimo è {max} MB", + "requestBodyLimitLoadFailed": "Impossibile caricare le impostazioni del limite delle richieste", + "requestBodyLimitSaveSuccess": "Limite del corpo della richiesta salvato", + "requestBodyLimitSaveFailed": "Impossibile salvare il limite del corpo della richiesta", + "requestBodyLimitSaving": "Salvataggio in corso...", + "requestBodyLimitSave": "Salva", + "requestBodyLimitCurrent": "Attuale: {value}", "cacheConfigLoadFailed": "Impossibile caricare le impostazioni della cache", "cacheConfigSaveSuccess": "Impostazioni della cache salvate", "cacheConfigSaveFailed": "Impossibile salvare le impostazioni della cache", @@ -6593,59 +6596,59 @@ "enablePassword": "Abilita password", "darkMode": "Modalità oscura", "lightMode": "Modalità luce", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Memoria", + "memoryDesc": "Memoria conversazionale persistente tra le sessioni", + "memoryEnabled": "Abilita memoria", + "memoryEnabledDesc": "Quando è abilitata, OmniRoute inserirà il contesto passato pertinente.", "memoryTokenCostWarning": "Attenzione: con la memoria abilitata, OmniRoute inserisce fino a {tokens} token di contesto recuperato in ogni richiesta di chat — questo aumenta l'utilizzo dei token e i costi. Per saltare l'inserimento per una richiesta specifica, invia l'intestazione \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Token massimi", + "retentionDays": "Conservazione", + "recent": "Recenti", + "recentDesc": "Finestra cronologica", + "semantic": "Semantica", + "semanticDesc": "Ricerca vettoriale", + "hybrid": "Ibrida", + "hybridDesc": "Recenti + Semantica", + "skillsTitle": "Competenze", + "skillsDesc": "Strumenti per i modelli", + "skillsEnabled": "Abilita competenze", + "skillsEnabledDesc": "Consente agli agenti di attivare funzioni.", + "skillsComingSoon": "Il marketplace delle competenze sarà disponibile prossimamente.", + "memorySkillsTitle": "Memoria e competenze", + "memorySkillsDesc": "Contesto e funzionalità persistenti", + "modelsDevTitle": "Database dei modelli", + "modelsDevDesc": "Sincronizza automaticamente prezzi, funzionalità e specifiche da models.dev", + "modelsDevEnabled": "Abilita la sincronizzazione con models.dev", + "modelsDevEnabledDesc": "Recupera prezzi, funzionalità e specifiche dei modelli dal database open source models.dev", + "modelsDevInterval": "Intervallo di sincronizzazione", + "syncNow": "Sincronizza ora", + "syncing": "Sincronizzazione in corso...", + "lastSync": "Ultima sincronizzazione", + "never": "Mai", "justNow": "proprio adesso", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Statistiche di sincronizzazione", + "modelsDevStatsDesc": "Copertura attuale dei dati di models.dev", "providers": "Fornitori", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modelli con prezzi", + "capabilities": "Funzionalità", + "lastSyncCount": "Conteggio dell'ultima sincronizzazione", + "lastSyncFull": "Ultima sincronizzazione completa", + "modelsDevInfo": "Come funziona", + "modelsDevInfoDesc": "models.dev è un database open source di specifiche dei modelli di IA gestito dal team SST/OpenCode. Fornisce prezzi, funzionalità, limiti di contesto e modalità per oltre 4.000 modelli di più di 100 provider.", + "modelsDevInfoResolution": "Ordine di risoluzione dei prezzi (prima la priorità più alta):", + "modelsDevInfoOrder": "Override utente → models.dev → LiteLLM → Valore predefinito hardcoded", "systemTheme": "Tema del sistema", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Abilita modalità di debug", "logToolSourcesToggle": "Log Sorgenti Tool", "logToolSourcesDescription": "Emette una riga di log diagnostico per richiesta che riepiloga il conteggio tool e la suddivisione per sorgente MCP/hosted/client.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Fissa le informazioni alla pagina Home", "homePinnedSectionsDesc": "Scegli quali sezioni fissare in alto nella pagina Home.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Limiti di quota dei provider", + "homeProviderQuotaLimitsDesc": "Fissa il riquadro dello stato delle quote dei provider (con il pulsante Aggiorna tutto) nella parte superiore della pagina Home.", + "homeQuickStart": "Avvio rapido", + "homeQuickStartDesc": "Mostra il pannello Avvio rapido nella pagina Home.", + "homeProviderTopology": "Topologia dei provider", + "homeProviderTopologyDesc": "Mostra la topologia dei provider nella pagina Home.", "accountEmailVisibility": "Visibilità email account", "accountEmailVisibilityDesc": "Mostra le email complete dell'account nelle schermate di provider, combo, log, quote e playground. Disattiva questa opzione per mascherarle per impostazione predefinita.", "comboConfigMode": "Modalità di configurazione combo", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Intervallo di aggiornamento", "providerQuotaAutoRefreshIntervalDesc": "Frequenza di aggiornamento della vista delle quote, in secondi.", "seconds": "secondi", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Mostra elementi della barra laterale", "enableCache": "Abilita cache", "cacheTTL": "TTL della cache", "maxCacheSize": "Dimensione massima della cache", "clearCache": "Cancella cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Cache svuotata correttamente", + "clearCacheFailed": "Impossibile svuotare la cache", "cacheHits": "Riscontri nella cache", "cacheMisses": "Mancati cache", "hitRate": "Tasso di successo", "cacheEntries": "Voci della cache", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Impostazioni della cache", + "semanticCache": "Cache semantica", + "maxEntries": "Numero massimo di voci", + "ttlMinutes": "TTL (minuti)", "promptCache": "Cache dei suggerimenti", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Strategia", + "preserveClientCache": "Mantieni la cache del client", + "enabled": "Abilitata", "loading": "Loading...", "saving": "Risparmio...", - "save": "Save", + "save": "Salva", "circuitBreaker": "Interruttore automatico", "retryPolicy": "Riprova la policy", "maxRetries": "Numero massimo di tentativi", @@ -6690,21 +6693,21 @@ "timeoutMs": "Timeout (ms)", "enableSystemPrompt": "Abilita richiesta di sistema", "systemPromptText": "Testo della richiesta di sistema", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Disabilita automaticamente gli account bloccati", + "autoDisableDescription": "Contrassegna definitivamente le connessioni ai provider come disattivate se restituiscono specifici segnali terminali di blocco (ad es. HTTP 403 'verifica il tuo account'). In questo modo vengono rimosse dalla rotazione combinata.", + "autoDisableThreshold": "Soglia di blocco", + "autoDisableThresholdDesc": "Numero di segnali di blocco consecutivi necessari prima della disattivazione definitiva.", + "autoDisableBannedScope": "Applica la disattivazione automatica a", + "autoDisableBannedScopeDesc": "Gli accessi (abbonamenti a pagamento e account gratuiti) possono essere bloccati dal servizio upstream se OmniRoute continua a riprovare dopo un blocco. Le chiavi API prepagate a pagamento non presentano questo rischio: lasciale nel pool affinché la strategia fill-first possa utilizzare la chiave successiva.", + "autoDisableBannedScopeAll": "Tutte le connessioni", + "autoDisableBannedScopeAllDesc": "Disattiva ogni connessione che restituisce un segnale di blocco permanente, incluse le chiavi API prepagate.", + "autoDisableBannedScopeSubscription": "Solo account con accesso / abbonamento", + "autoDisableBannedScopeSubscriptionDesc": "Disattiva gli accessi OAuth, tramite cookie, sessione e login web (a pagamento o gratuiti). Le chiavi API prepagate rimangono attive per consentire il failover del routing.", "customBannedSignals": "Parole chiave vietate", "customBannedSignalsDesc": "Parole chiave aggiuntive che attivano il rilevamento del ban permanente dell'account. Le parole chiave integrate si applicano sempre.", "customBannedSignalsPlaceholder": "es. api key revoked", "noCustomBannedSignals": "Nessuna parola chiave personalizzata. Sono attive solo le parole chiave integrate.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Struttura di resilienza", "resilienceStructureDesc": "Questa pagina configura solo il comportamento. Lo stato dell'interruttore live viene visualizzato nella pagina Salute. I tentativi specifici della combo e il controllo degli slot round-robin rimangono nelle impostazioni della combo.", "enableThinking": "Abilita il pensiero", "maxThinkingTokens": "Gettoni pensiero massimo", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Mostra i controlli della canalizzazione Tailscale nella pagina Endpoint.", "showNgrokTunnel": "Ngrok Tunnel", "showNgrokTunnelDesc": "Mostra i controlli del tunnel ngrok nella pagina Endpoint.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Nascondi elementi della barra laterale", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Tutto", + "presetAllDesc": "Mostra tutto", + "presetEssentials": "Elementi essenziali", + "presetEssentialsDesc": "Percorso per principianti: gli strumenti avanzati rimangono ricercabili", + "presetMinimal": "Minimale", + "presetMinimalDesc": "Solo pagine principali", + "presetDeveloper": "Sviluppatore", + "presetDeveloperDesc": "Strumenti di sviluppo e proxy", + "presetAdmin": "Amministrazione", + "presetAdminDesc": "Monitoraggio e audit", + "settingsSidebarTitle": "Personalizzazione della barra laterale", + "settingsSidebarDesc": "Scegli quali elementi mostrare nella barra laterale. La modalità Essenziali mantiene ricercabili gli strumenti avanzati.", "hideHealthLogs": "Nascondi i registri di controllo dello stato", "hideHealthLogsDesc": "Quando è attivo, elimina i messaggi [HealthCheck] nella console del server", "themeAccent": "Colore del tema", @@ -6780,19 +6783,19 @@ "themeOrange": "Arancione", "themeCyan": "Ciano", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Personalizza il nome e il logo dell'applicazione", + "appName": "Nome dell'applicazione", + "appNameDesc": "Nome visualizzato nella barra laterale e nella scheda del browser", + "customLogo": "URL del logo personalizzato", + "customLogoDesc": "URL dell'immagine del logo personalizzato", + "uploadLogo": "Carica logo", + "resetLogo": "Ripristina impostazioni predefinite", + "logoPreview": "Anteprima", + "customFavicon": "Favicon del browser", + "customFaviconDesc": "URL della favicon personalizzata (visualizzata nella scheda del browser)", + "uploadFavicon": "Carica favicon", + "resetFavicon": "Ripristina favicon", + "faviconPreview": "Anteprima favicon", "logoFileTooLarge": "Il file del logo deve essere inferiore a 500KB", "faviconFileTooLarge": "Il file della favicon deve essere inferiore a 50KB", "invalidLogoFileType": "Tipo di file non valido. Carica un file PNG, JPG, SVG, GIF o WebP.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Intervallo di Aggiornamento", "ruleModeDescription": "Descrizione della Modalità Regola" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "Controllo integrità in blocco", + "bulkHealthcheckDesc": "Testa tutti i proxy configurati con un URL di destinazione per individuare quelli funzionanti.", + "healthcheckTesting": "Test in corso...", + "healthcheckAll": "Controlla integrità di tutti", + "healthcheckFailed": "Impossibile eseguire il controllo di integrità", + "healthcheckTestingAll": "Test parallelo di tutti i proxy in corso...", + "healthcheckTotal": "Totale", + "healthcheckWorking": "Funzionanti", + "healthcheckFailedLabel": "Non riusciti", + "healthcheckStatus": "Stato", + "healthcheckProxyUrl": "URL proxy", + "healthcheckLatency": "Latenza", "proxyDocumentationScopeTitle": "Risoluzione dell'ambito del proxy", "proxyDocumentationScopeDescBefore": "OmniRoute risolve il proxy in uscita in ordine di priorità:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "combinazione → account → provider → globale", "proxyDocumentationScopeDescAfter": ". L'ambito più specifico ha la precedenza.", "proxyDocumentationAddTitle": "Aggiunta di un proxy personalizzato", "proxyDocumentationAddDescBefore": "Vai alla scheda", @@ -6984,7 +6987,7 @@ "passthroughDesc": "Nessun cambiamento: il cliente controlla il budget", "thinkingModePassthrough": "Passa attraverso", "thinkingModePassthroughDesc": "Lascia invariata la motivazione del cliente (sforzo, riepilogo, blocchi di pensiero). Richiesto per il pensiero visibile di Codex/Desktop. Predefinito.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automatico (rimuovi)", "thinkingModeAutoDesc": "Rimuovi tutti i campi di pensiero/razionamento del client (razionamento, sforzo_razionamento, pensiero Claude, configurazione_pensiero Gemini) e lascia che il fornitore inventi i valori predefiniti. Può nascondere i pannelli di pensiero e interrompere le richieste di riepilogo del client.", "thinkingModeCustom": "Personalizzato", "thinkingModeCustomDesc": "Sovrascrivi ogni richiesta con un budget fisso di token di pensiero che imposti di seguito.", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} provider bloccati da /models", "blockProviderTitle": "Blocca {provider}", "unblockProviderTitle": "Sblocca {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Corrispondenza dell'impronta digitale CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} provider con impronta digitale CLI attiva", + "enableFingerprintTitle": "Abilita l'impronta digitale per {provider}", + "disableFingerprintTitle": "Disabilita l'impronta digitale per {provider}", "systemTransforms": "Pipeline di trasformazione a blocchi di sistema", "systemTransformsDesc": "Pipeline di trasformazioni ordinata per provider applicata al corpo della richiesta prima dell'inoltro. Supporta qualsiasi ID provider.", "systemTransformsAddProvider": "Aggiungi fornitore", @@ -7067,15 +7070,15 @@ "costOptDesc": "Preferisci il conto più economico disponibile", "resetAware": "RR consapevole del ripristino", "resetAwareDesc": "Preferisci account con una quota rimanente sana e reimpostazioni più vicine", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Ponderato per quota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Casuale rigoroso", + "strictRandomDesc": "Mazzo mescolato: utilizza ogni account una volta prima di rimescolare", "stickyLimit": "Limite appiccicoso", "stickyLimitDesc": "Chiamate per account prima del cambio", "routingStrategyTitle": "Strategia di routing", "routingStrategySubtitle": "Corrisponde a 9router: round-robin degli account, limiti sticky e rotazione combo", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Round robin", "accountRoundRobinDesc": "Alterna gli account per distribuire il carico", "comboRoundRobin": "Round Robin combo", "comboRoundRobinDesc": "Alterna le destinazioni combo invece di iniziare sempre dalla prima", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Sovrascrivi la strategia globale dell'account per questo provider (parità con 9router).", "providerRoutingStrategy": "Strategia account", "providerRoutingInheritGlobal": "Eredita predefinito globale", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Soglia preventiva della quota", + "quotaPreflightSubtitle": "Ignora gli account che hanno esaurito la quota prima di inviare la richiesta upstream", + "quotaPreflightEnable": "Abilita il controllo preventivo della quota", + "quotaPreflightEnableDesc": "Prima di ogni richiesta, controlla la quota rimanente dell'account (finestre di 5 ore / settimanale / mensile). Gli account con una quota pari o inferiore alla soglia vengono ignorati senza effettuare una chiamata upstream. Le soglie per finestra impostate nella pagina Quota provider hanno sempre la precedenza sul valore predefinito qui.", + "quotaPreflightCutoff": "Soglia globale (quota rimanente minima in %)", + "quotaPreflightCutoffDesc": "Smetti di utilizzare un account quando la sua quota rimanente scende a questa percentuale o al di sotto, per ogni finestra priva di una soglia specifica. Corrisponde alle barre della percentuale rimanente nella pagina Quota provider.", + "quotaPreflightWindowsHint": "Le finestre con una soglia specifica per finestra o per provider (impostata nella finestra modale Soglia della pagina Quota provider) non sono interessate da questo valore predefinito.", + "quotaPreflightLoadFailed": "Impossibile caricare le impostazioni del controllo preventivo della quota.", "modelAliases": "Alias ​​del modello", "modelAliasesTitle": "Alias dei Modelli", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Rimappa i nomi dei modelli utilizzando corrispondenze esatte o modelli con caratteri jolly.", "addCustomAlias": "Aggiungi Alias Personalizzato", "deprecatedModelId": "ID modello deprecato", "newModelId": "Nuovo ID modello", @@ -7188,11 +7191,11 @@ "comboStrategyAria": "Strategia combinata", "priority": "Priorità", "weighted": "Ponderato", - "contextRelay": "Context Relay", + "contextRelay": "Inoltro del contesto", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Numero massimo di tentativi", "retryDelayLabel": "Ritardo tentativi (ms)", - "timeoutLabel": "Timeout (ms)", + "timeoutLabel": "Tempo limite (ms)", "healthCheck": "Controllo dello stato di salute", "healthCheckDesc": "Verifica preventiva la disponibilità del fornitore", "trackMetrics": "Tieni traccia delle metriche", @@ -7200,7 +7203,7 @@ "providerOverrides": "Il fornitore esegue l'override", "providerOverridesDesc": "Sostituisci timeout e tentativi per provider. Le impostazioni del provider sovrascrivono le impostazioni predefinite globali.", "providerMaxRetriesAria": "{provider} numero massimo di tentativi", - "providerTimeoutAria": "{provider} timeout ms", + "providerTimeoutAria": "Timeout di {provider} in ms", "removeProviderOverrideAria": "Rimuovi la sostituzione {provider}", "selectProviderPlaceholder": "Seleziona provider...", "searchProviderPlaceholder": "Cerca provider...", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Concorrenza/modello", "queueTimeout": "Timeout coda (ms)", "queueDepth": "Profondità Coda", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Soglia di passaggio", + "contextRelayMaxMessages": "Numero massimo di messaggi per il riepilogo", + "contextRelaySummaryModel": "Modello di riepilogo", + "contextRelayProviderNote": "L'inoltro del contesto attualmente genera passaggi per gli account Codex e utilizza questi valori come impostazioni predefinite globali per le combinazioni nuove o non configurate.", "providerProfiles": "Profili dei fornitori", "providerProfilesDesc": "Impostazioni di resilienza separate per i provider OAuth (basati sulla sessione) e API Key (misurati). I fornitori di OAuth hanno soglie più rigide a causa di limiti di velocità inferiori.", "oauthProviders": "Provider OAuth", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}d fa", "backupReasonManual": "manuale", "backupReasonPreRestore": "pre-ripristino", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# connessione} other {# connessioni}}", "noChangesSinceBackup": "Nessuna modifica dall'ultimo backup", "backupFailed": "Backup non riuscito", "restoreFailed": "Ripristino non riuscito", @@ -7329,7 +7332,7 @@ "configured": "configurato", "none": "Nessuno", "modelOverrideValuePlaceholder": "Valore numerico", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "In inglese, separati da virgole, ad es. low, medium, high", "addKeyValue": "Aggiungi chiave-valore", "noModelOverrides": "Nessun override configurato per questo modello.", "modelOverrideLoadFailed": "Impossibile caricare gli override del modello", @@ -7378,25 +7381,25 @@ "editPricing": "Modifica prezzi", "viewFullDetails": "Visualizza i dettagli completi", "themeCoral": "Corallo", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Instradamento adattivo in base al volume", + "adaptiveVolumeRoutingDesc": "Ridimensiona dinamicamente le connessioni in base al volume del payload e alla pressione sulla velocità effettiva.", + "lkgpToggleTitle": "Ultimo provider funzionante noto (LKGP)", + "lkgpToggleDesc": "Quando questa opzione è abilitata, il router ricorda quale provider ha fornito per ultimo una risposta corretta e prova a utilizzarlo per primo nelle richieste successive.", "echoRequestedModelTitle": "Ripeti il nome del modello richiesto nelle risposte", "echoRequestedModelDesc": "Quando abilitato, il campo `model` della risposta ripete l'alias o il nome della combo richiesto dal client invece del nome del modello a monte. Risolve i problemi con i client rigidi (es. Claude Desktop) che rifiutano una risposta il cui modello non corrisponde alla richiesta.", "webSearchRouteTitle": "Routing della ricerca web", "webSearchRouteDesc": "Quando una richiesta include uno strumento nativo web_search, instrada l'intera richiesta a questo modello invece di quello predefinito — utile per i provider che non implementano lo strumento server web_search di Anthropic. Lascia vuoto per disabilitare.", "webSearchRoutePlaceholder": "es. openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "Questo pattern corrisponde solo ai modelli a pagamento — abilita i modelli a pagamento o regola il pattern.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Cancella la cache LKGP", + "lkgpCacheCleared": "Cache LKGP cancellata correttamente", + "lkgpCacheClearFailed": "Impossibile cancellare la cache LKGP", + "days": "Giorni", + "lkgp": "Modalità LKGP", + "lkgpDesc": "Ultimo provider funzionante noto (resilienza prevedibile)", + "maintenance": "Manutenzione", + "purgeExpiredLogs": "Elimina definitivamente i registri scaduti", + "purgeLogsFailed": "Impossibile eliminare definitivamente i registri", "logsDeleted": "{count, plural, =0 {Nessun log scaduto eliminato} one {Eliminato # log scaduto} other {Eliminati # log scaduti}}", "resetUsageData": "Ripristina Dati di Utilizzo", "resetUsageDataDesc": "Scegli da quanto tempo fa vuoi eliminare l'uso, i log delle richieste e i dati di analisi. Configurazione dei provider, connessioni, chiavi API, combo e impostazioni vengono conservati. Questa azione non può essere annullata.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Ripristino dati di utilizzo fallito", "reset": "Ripristina", "resetting": "Ripristino in corso...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Ottimizzato per il contesto", + "contextOptDesc": "Instrada in base ai requisiti della finestra di contesto e alla lunghezza della conversazione", + "cacheOpt": "Ottimizzato per la cache", + "cacheOptDesc": "Mantiene lo stesso prefisso riutilizzabile del prompt sul medesimo account del provider", + "priorityDesc": "Fallback sequenziale: prova prima il provider 1, poi il provider 2 e così via", + "weightedDesc": "Distribuisce il traffico tra i provider in base a pesi percentuali", + "modelRoutingTitle": "Regole di instradamento dei modelli", + "modelRoutingDesc": "Instrada automaticamente i modelli verso combinazioni specifiche utilizzando pattern glob", + "addRule": "Aggiungi regola", + "routeToCombo": "Instrada alla combinazione", + "selectCombo": "Seleziona combinazione...", + "priorityHint": "Più alto = controllato per primo. Usa 10+ per pattern specifici.", + "patternHint": "Usa * per qualsiasi sequenza di caratteri, ? per un singolo carattere. Non fa distinzione tra maiuscole e minuscole.", + "noRoutingRules": "Nessuna regola di instradamento configurata. Per impostazione predefinita, le richieste utilizzano la combinazione globale.", + "routingRuleHint": "Aggiungi una regola come claude-opus* -> frontier-combo per instradare automaticamente le richieste.", + "deleteRoutingRule": "Eliminare questa regola di instradamento del modello?", + "exactMatchMode": "Corrispondenza esatta", + "wildcardPatternMode": "Pattern con caratteri jolly", + "exactMatchModeDesc": "Usa alias esatti per gli ID dei modelli deprecati o rinominati.", + "wildcardPatternModeDesc": "Usa alias con i caratteri jolly * e ? quando una famiglia di modelli deve essere associata a un'unica destinazione.", + "noExactAliasesConfigured": "Nessun alias con corrispondenza esatta configurato.", + "wildcardRulesTitle": "Regole con caratteri jolly", + "noWildcardAliasesConfigured": "Nessun alias con caratteri jolly configurato.", + "overview": "Panoramica", + "unknownError": "Errore sconosciuto", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Elenco consentiti", + "syncDisabled": "Sincronizzazione disabilitata", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Sincronizzazione abilitata", + "blacklist": "Elenco bloccati", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Modelli sincronizzati", + "budget": "Economico", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Impossibile reimpostare i prezzi: {reason}", - "tab": "Tab", + "tab": "Scheda", "pricingSavedProvider": "Prezzo risparmiato per {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Impossibile salvare i prezzi: {reason}", "pricingResetProvider": "Reimpostazione dei prezzi per {provider}", - "nextSync": "Next Sync", + "nextSync": "Prossima sincronizzazione", "pricingSyncFailedWithReason": "Sincronizzazione dei prezzi non riuscita: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Cancella i prezzi sincronizzati", + "compressionTitle": "Compressione dei prompt", + "compressionDesc": "Riduci l'utilizzo dei token comprimendo i prompt prima di inviarli ai provider", "compressionGuidanceFullGuideLink": "Guida completa alla compressione", "compressionGuidanceShow": "Dettagli", "compressionGuidanceHide": "Nascondi dettagli", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Riscrivi la cronologia della chat idonea preservando codice, URL e intento.", "tokenSaverFineTunePrefix": "Esegui il fine-tuning di ciascun motore su", "tokenSaverFineTuneSuffix": "o combina i motori per richiesta su", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Modalità di compressione", + "compressionModeOff": "Disattivata", + "compressionModeOffDesc": "Nessuna compressione applicata", + "compressionModeLite": "Leggera", + "compressionModeLiteDesc": "Riduzione degli spazi e delle righe vuote", + "compressionModeStandard": "Standard (Cavernicolo)", + "compressionModeStandardDesc": "Compressione basata su regole con oltre 30 pattern, preserva i blocchi di codice e gli URL", + "compressionModeAggressive": "Aggressiva", + "compressionModeAggressiveDesc": "Riepilogo + compressione dei risultati degli strumenti + invecchiamento progressivo per il massimo risparmio", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Configurazione aggressiva del motore", @@ -7506,7 +7509,7 @@ "compressionUltraModelPath": "Percorso del modello SLM", "compressionUltraEngine": "Livello Ultra", "compressionUltraEngineHeuristic": "Euristico (Tier-A, predefinito)", - "compressionUltraEngineSlm": "SLM (LLMLingua-2, opt-in)", + "compressionUltraEngineSlm": "SLM (LLMLingua-2, attivazione facoltativa)", "compressionUltraSlmHint": "SLM scarica un piccolo modello ONNX al primo utilizzo (avvio a freddo) e ripiega in modo trasparente sull'euristica in caso di timeout o se non disponibile.", "compressionUltraSlmPrewarm": "Preriscalda il modello SLM all'abilitazione", "compressionSummarizerEnabled": "Abilita riepilogatore", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Numero di messaggi recenti conservati a ogni livello di invecchiamento (maggiore = più conservati)", "compressionToolStrategies": "Strategie di risultato dello strumento", "compressionToolStrategiesDesc": "Attiva/disattiva le strategie di compressione per diversi tipi di risultati dello strumento", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Impostazioni generali", + "compressionAutoTrigger": "Soglia di attivazione automatica", + "compressionCacheTTL": "TTL della cache", + "compressionPreserveSystem": "Mantieni il prompt di sistema", "compressionPreserveSystemAlways": "Sempre", "compressionPreserveSystemWhenNoCache": "Quando nessuna cache", "compressionPreserveSystemNever": "Mai", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Salvato", "compressionExclusionsCount": "{count, plural, one {# esclusione} other {# esclusioni}} configurate", "compressionExclusionsEmpty": "Nessuna esclusione configurata — ogni modello/endpoint è idoneo alla compressione (comportamento predefinito).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Configurazione del motore Caveman", + "compressionCavemanConfigDesc": "Ottimizza il motore di compressione basato su regole", "compressionCavemanPanelHint": "L'attivazione e il livello si impostano nel panel:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Comprimi i ruoli dei messaggi", + "compressionRoleUser": "Utente", + "compressionRoleAssistant": "Assistente", + "compressionRoleSystem": "Sistema", + "compressionMinLength": "Lunghezza minima del messaggio", + "compressionSkipRules": "Regole da escludere dalla compressione", + "compressionSkipRulesDesc": "Fai clic sulle regole per escluderle durante la compressione", + "compressionPreservePatterns": "Pattern da mantenere", + "compressionPreservePatternsDesc": "Pattern regex che non vengono mai compressi (uno per riga)", + "compressionLogTitle": "Registro di compressione", + "compressionLogEmpty": "Non è stata ancora compressa alcuna richiesta. Le statistiche di compressione appariranno qui quando verranno elaborate richieste con la compressione abilitata.", "minutes": "minuti", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "Filtraggio dell'output degli strumenti in base al comando", + "compressionModeCodexResponses": "Output dello strumento Responses", + "compressionModeCodexResponsesDesc": "Compressione conservativa per gli output idonei di shell, patch, ricerca, build e JSON", + "compressionModeStacked": "Combinato", + "compressionModeStackedDesc": "Filtraggio dell'output degli strumenti tramite RTK seguito dalla compressione dei messaggi tramite Caveman", + "qdrantTitle": "Qdrant (memoria vettoriale)", + "qdrantDesc": "Facoltativo. Indicizza le memorie semantiche in un database vettoriale esterno per velocizzarne il recupero.", + "qdrantStatusActive": "Attivo", + "qdrantStatusError": "Errore", + "qdrantStatusDisabled": "Disabilitato", + "qdrantEnable": "Abilita Qdrant", + "qdrantEnableDesc": "Quando è abilitato, la strategia semantica/ibrida può utilizzare Qdrant per recuperare le memorie.", + "qdrantTesting": "Test in corso...", + "qdrantTestConnection": "Verifica connessione", + "qdrantSaved": "Configurazione salvata", + "qdrantSaveError": "Impossibile salvare la configurazione", + "qdrantHostHint": "Senza porta. Esempio: 127.0.0.1 o http://qdrant", + "qdrantPort": "Porta", + "qdrantPortHint": "Valore predefinito di Qdrant: 6333", + "qdrantCollectionHint": "Posizione in cui verranno archiviati i punti di memoria.", + "qdrantEmbeddingModel": "Modello di embedding", + "qdrantHelpTitle": "Guida alla configurazione rapida", + "qdrantHelpQuickTitle": "Configurazione rapida (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Host: IP/URL di Qdrant, Porta: 6333, Raccolta: omniroute_memory.", + "qdrantHelpStep2": "2. Se utilizzi nvidia/llama-nemotron-embed-vl-1b-v2:free, imposta la dimensione della raccolta su 2048.", + "qdrantHelpStep3": "3. Campo del modello: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Salva, verifica la connessione, quindi prova la ricerca.", + "qdrantEmbeddingQuickSelect": "Seleziona rapidamente tra i modelli rilevati...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Formato: provider/model. Le credenziali del provider devono essere configurate.", + "qdrantApiKeyPlaceholderKeep": "(lascia vuoto per mantenere la chiave attuale)", + "qdrantApiKeyPlaceholderOptional": "(lascia vuoto se non utilizzato)", + "qdrantSaveHint": "Suggerimento: modifica host/porta/raccolta/modello e fai clic su Salva. La chiave API è facoltativa.", + "qdrantSearchTestTitle": "Test di ricerca", + "qdrantSearchTestDesc": "Genera l'embedding ed esegue la ricerca in Qdrant.", + "qdrantSearchPlaceholder": "Esempio: preferenze dell'utente, cronologia, ecc.", + "qdrantNoResults": "Nessun risultato (oppure Qdrant non è configurato).", + "qdrantCleanupTitle": "Conservazione e pulizia", + "qdrantCleanupDesc": "Rimuove i punti scaduti e obsoleti in base a", + "searching": "Ricerca in corso...", + "cleaning": "Pulizia in corso...", + "cleanNow": "Pulisci ora", "optional": "Opzionale", "current": "Attuale", "remove": "Rimuovere", @@ -7600,19 +7603,19 @@ "resilienceScope": "Ambito:", "resilienceTrigger": "Grilletto:", "resilienceEffect": "Effetto:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Coda delle richieste e frequenza", + "resilienceAutoEnableApiKeyProviders": "Abilita automaticamente per i provider con chiave API", + "resilienceRequestsPerMinute": "Richieste al minuto", + "resilienceMinTimeBetweenRequests": "Tempo minimo tra le richieste", + "resilienceConcurrentRequests": "Richieste simultanee", + "resilienceConnectionScopeConcurrentRequests": "Richieste simultanee per connessione/ambito della quota", + "resilienceGlobalConcurrentRequests": "Richieste upstream simultanee globali (0 = disabilitate)", "resilienceMaxQueueWaitTime": "Tempo massimo di attesa in coda", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Tempo di attesa di base", + "resilienceUseUpstreamRetryHints": "Utilizza i suggerimenti upstream per i nuovi tentativi", + "resilienceDefaultPerProvider": "Predefinito (per provider)", + "resilienceAlwaysOn": "Sempre attivo", + "resilienceAlwaysOff": "Sempre disattivato", "routingRemoveEntry": "Rimuovi la voce", "routingNeedlesSubstrings": "Aghi (sottostringhe da abbinare)", "routingCaseSensitive": "Maiuscole e minuscole", @@ -7669,9 +7672,9 @@ "routingAntigravitySignatureDesc": "Controlla se OmniRoute riutilizza solo le firme di pensiero Gemini memorizzate o se accetta firme fornite dal client convalidate nei flussi di chiamata degli strumenti compatibili con Antigravity.", "routingAntigravitySignatureEnabledLabel": "Abilitato", "routingAntigravitySignatureEnabledDesc": "Comportamento corrente. Ignora le firme fornite dal client e continua a utilizzare il flusso OmniRoute memorizzato.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Ignora", "routingAntigravitySignatureBypassDesc": "Accetta le firme fornite dal client dopo una convalida leggera e ripiega sulla firma memorizzata se non valida.", - "routingAntigravitySignatureBypassStrictLabel": "Bypass Strict", + "routingAntigravitySignatureBypassStrictLabel": "Ignora rigorosamente", "routingAntigravitySignatureBypassStrictDesc": "Richiedi la convalida protobuf completa prima di accettare una firma fornita dal client.", "routingHeaderFingerprintTitle": "Impronta digitale dell'intestazione (per fornitore)", "routingServerRejectedSave": "⚠ Salvataggio rifiutato dal server:", @@ -7698,28 +7701,28 @@ "visionBridgePrompt": "Suggerimento del ponte", "visionBridgePromptPlaceholder": "Descrivi questa immagine in modo conciso.", "visionBridgePromptHint": "Inviato al modello di visione prima che la descrizione estratta venga reinserita nella richiesta originale.", - "visionBridgeTimeoutMs": "Timeout (ms)", + "visionBridgeTimeoutMs": "Tempo limite (ms)", "visionBridgeMaxImagesPerRequest": "Numero massimo di immagini per richiesta", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Numero massimo di passaggi di backoff", + "resilienceProviderBreakerTitle": "Circuit breaker per provider", + "resilienceFailureThreshold": "Soglia di errore", + "resilienceDegradationThreshold": "Soglia di degrado", "resilienceResetTimeout": "Reimposta il timeout", "resilienceFailureThresholdLabel": "Soglia di fallimento", "resilienceResetTimeoutLabel": "Reimposta il timeout", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Tempo di attesa della connessione", "resilienceUseUpstreamRetryHintsLabel": "Utilizza suggerimenti per i nuovi tentativi upstream", "resilienceUseUpstream429BreakerLabel": "Utilizza i suggerimenti 429 upstream (interruttore)", "resilienceMaxBackoffStepsLabel": "Passi di backoff massimi", "resilienceYes": "SÌ", "resilienceNo": "NO", - "resilienceDefault": "Default", + "resilienceDefault": "Predefinito", "storageDatabaseBackupRetention": "Conservazione del backup del database", "storageDatabaseBackups": "Backup del database", "storageBackupRetentionDescription": "I backup automatici di SQLite sono memorizzati in", "storageBackupRetentionHelp": "Configura quanti snapshot conservare e facoltativamente elimina i backup più vecchi di un numero di giorni selezionato.", "storageBackupCount": "{count} backup", - "storageBackupMaximum": "Max {count}", + "storageBackupMaximum": "Massimo {count}", "storageBackupAgeRetention": "Conservazione {count} g", "storageBackupAgeRetentionOff": "Conservazione per età disattivata", "storageBackupKeepLatest": "Mantieni i backup più recenti", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "JSON legacy importato con successo!", "jsonImportFailed": "Impossibile importare il JSON", "jsonImportError": "Errore durante l'importazione del JSON", + "jsonImportAuthRequired": "È richiesta l'autenticazione per importare una configurazione JSON legacy. Accedi o completa prima la configurazione.", + "databaseSettingsAuthRequiredTitle": "Autenticazione richiesta", + "databaseSettingsAuthRequiredBody": "Le impostazioni del database e l'importazione JSON sono disponibili solo per un amministratore autenticato. Accedi o completa la configurazione per visualizzarle e modificarle.", + "databaseSettingsAuthRequiredCta": "Accedi", "storagePurgeData": "Elimina dati", "storagePurgeDataDesc": "Elimina immediatamente tutti i record senza applicare i controlli di conservazione. Usare con cautela.", "storageRetentionCleanup": "Impostazioni di conservazione", @@ -7808,7 +7815,7 @@ "redisLauncherStop": "Ferma", "redisLauncherLaunching": "Avvio in corso...", "redisLauncherLaunch": "Avvia Redis", - "redisLauncherContainer": "Container", + "redisLauncherContainer": "Contenitore", "redisLauncherRunning": "In esecuzione", "redisLauncherReachable": "Raggiungibile", "redisLauncherError": "Errore: {message}", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "modalità: {mode}", "compressionAdaptiveOff": "Budget del contesto adattivo: disattivato (attivazione automatica legacy)", "compressionAdaptiveTarget": "Adattivo ({mode}, criterio: {policy}) — target ≈ {target, number} token (per una finestra di {contextLimit, number} token)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Budget di contesto adattivo", + "compressionAdaptiveModeOff": "Disattivato (attivazione automatica legacy)", + "compressionAdaptiveModeFloor": "Minimo (garantisce sempre l'adattamento)", + "compressionAdaptiveModeReplace": "Sostituisci l'attivazione automatica", + "compressionAdaptivePolicy": "Criterio del budget", + "compressionAdaptivePolicyReserve": "Riserva per l'output", + "compressionAdaptivePolicyPercentage": "Percentuale della finestra", + "compressionAdaptivePolicyAbsolute": "Budget assoluto di token", "compressionOutputStylesDescription": "Inserisci istruzioni per modellare la risposta senza riscrivere l'output del provider. Combina liberamente.", "mcpAccessibilityDescription": "Limita l'ambito degli output degli strumenti MCP (archivio separato).", "compressionStylesTileSummary": "{tokens, number} token risparmiati · {runs, plural, one {# esecuzione stilizzata} other {# esecuzioni stilizzate}}", @@ -7854,7 +7861,7 @@ "description": "Deduplicazione dei blocchi cross-turn." }, "ccr": { - "label": "CCR (Retrieval)", + "label": "CCR (recupero)", "description": "Marcatori di recupero indirizzati per contenuto." }, "lite": { @@ -7866,11 +7873,11 @@ "description": "Filtraggio dell'output dei comandi." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Output dello strumento Responses", + "description": "Compressione conservativa per gli output supportati dello strumento Responses." }, "headroom": { - "label": "Headroom", + "label": "Margine", "description": "Compattazione JSON tabellare." }, "relevance": { @@ -7878,7 +7885,7 @@ "description": "Punteggio estrattivo delle frasi rispetto all'ultima query dell'utente." }, "caveman": { - "label": "Caveman", + "label": "Cavernicolo", "description": "Compressione della prosa basata su regole." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "Scala YAGNI: la più piccola modifica funzionante, nessuna astrazione non richiesta." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (sviluppatore senior pigro)", + "description": "Disciplina da sviluppatore senior pigro: scala la gerarchia YAGNI, correggi la causa principale, applica la più piccola modifica funzionante." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Ho l'ADHD (azione prima di tutto)", + "description": "Output orientato all'azione: inizia dalla prossima azione, numera i passaggi, indica un solo passo successivo concreto, senza preamboli." }, "terse-cjk": { "label": "CJK conciso (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "Fallback CLIProxyAPI", "cliproxyapiEnableFallback": "Abilita il fallback CLIProxyAPI", "cliproxyapiUrl": "URL dell'API CLIProxy", + "headroomProxyTitle": "Proxy Headroom", + "headroomProxyDesc": "URL del proxy opzionale Headroom per il risparmio di token. Se vuoto, usa HEADROOM_URL o http://localhost:8787.", + "headroomProxyUrl": "URL Headroom", + "headroomProxyUrlHint": "Gli URL di loopback possono essere avviati da questa pagina. Gli URL esterni vengono solo verificati.", + "headroomProxySave": "Salva", + "headroomProxyStart": "Avvia", + "headroomProxyStop": "Interrompi", + "headroomProxyExternalHint": "Questo URL non è di loopback, quindi OmniRoute non avvierà la CLI locale.", "cliproxyapiStatus": "Stato CLIProxyAPI", "cliproxyapiNotDetected": "Non rilevato", "cliproxyapiImportAuthTitle": "Importa account da CLIProxyAPI", @@ -7938,9 +7953,9 @@ "cliproxyapiImportAuthButton": "Importa account", "payloadRulesTitle": "Regole sul carico utile", "payloadRulesDesc": "Configura le mutazioni del payload della richiesta per modello e protocollo. Le modifiche vengono salvate nelle impostazioni e ricaricate a caldo nel runtime immediatamente dopo il salvataggio.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "predefinito", "payloadRuleDefaultDesc": "Applica i parametri solo quando il percorso di destinazione è mancante nel payload in uscita.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "sostituzione", "payloadRuleOverrideDesc": "Forza i valori nel payload, sostituendo qualsiasi elemento già presente in quel percorso.", "payloadRuleFilterTitle": "filtro", "payloadRuleFilterDesc": "Rimuove i parametri bloccati dal payload prima che la richiesta upstream venga inviata.", @@ -7980,7 +7995,7 @@ "responsesStateTitle": "Stato delle risposte", "responsesStateDesc": "Controlla come OmniRoute inoltra previous_response_id.", "responsesStateModeLabel": "Gestione di previous_response_id", - "responsesStateModeAuto": "Auto", + "responsesStateModeAuto": "Automatico", "responsesStateModeStrip": "Rimuovi", "responsesStateModePreserve": "Conserva", "responsesStateHint": "Auto rimuove previous_response_id a meno che una connessione non abiliti esplicitamente l'archiviazione delle risposte OpenAI. Rimuovi è l'opzione più sicura per i client stateless come VS Code Custom Endpoint; il contesto dipende quindi dal client che invia la cronologia completa.", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "Inserisce globalmente service_tier=priority per le richieste OpenAI Codex.", "codexFastTierHint": "Se abilitato, OmniRoute aggiunge service_tier=priority alle richieste Codex in uscita per le connessioni che non specificano già un livello. Il livello di priorità richiede una chiave API OpenAI Enterprise o il percorso del Codex ChatGPT-auth; altri tipi di chiave riceveranno un errore relativo al livello da OpenAI. Le impostazioni per connessione nella pagina del provider Codex hanno la precedenza.", "codexFastTierSaveError": "Impossibile aggiornare l'impostazione del livello rapido del Codex", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Ping automatico della quota Codex", + "codexAutoPingDesc": "Attivabile per ogni connessione: invia una piccola richiesta subito dopo il ripristino della finestra di sessione Codex, così è già pronta quando serve.", + "codexAutoPingWarning": "Ogni ping consuma una piccola quantità della quota Codex effettiva. Disattivato per impostazione predefinita: abilitalo solo per le connessioni su cui fai affidamento attivamente.", + "codexAutoPingSaveError": "Impossibile aggiornare l'impostazione del ping automatico di Codex", + "codexAutoPingToggleAria": "Attiva o disattiva il ping automatico della quota Codex per {connection}", "codexFastTierTierLabel": "Livello di servizio", "codexFastTierTierPriority": "Priorità", "codexFastTierTierFlex": "Flex", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Intervallo di controllo globale", "resilienceCredentialHealthEveryMinutes": "Ogni {minutes} min", "resilienceCredentialHealthHint": "0 disattiva la scansione in background (max 1440 min = 24 h). Le connessioni con un proprio valore di controllo salute ignorano questo valore globale; uno 0 su una connessione la esclude anche se la scansione globale è attiva.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Sempre abilitato per {provider}: è necessario per la sicurezza dell'account OAuth e non può essere disattivato.", + "forcedFingerprintBadge": "Obbligatorio", "sessionAffinityTitle": "Affinità di sessione", "sessionAffinityDesc": "Mantiene una conversazione sullo stesso account per questo numero di secondi, per qualsiasi provider. 0 lo disabilita.", "sessionAffinityTtl": "TTL affinità (secondi)", @@ -8202,24 +8217,24 @@ "modelLockoutMaxBackoffStepsDescription": "Numero massimo di passaggi di backoff prima che il cooldown smetta di aumentare. Il limite del Cooldown massimo viene raggiunto prima nella maggior parte delle configurazioni, rendendo questo un limite di sicurezza per quando il Cooldown massimo viene aumentato.", "disableSessionStickiness": "Disabilita l'affinità di sessione", "disableSessionStickinessDesc": "Le combinazioni round-robin e casuali ruotano su una connessione diversa a ogni richiesta invece di associare un'intera conversazione a una sola connessione tramite l'hash del primo messaggio. Lascia disattivato per preservare i riscontri della cache dei prompt per le chat a più turni. Le sostituzioni per singola combinazione hanno la precedenza.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Instradamento in base alla località della cache dei prompt", + "promptCacheAffinityDesc": "Preferisci lo stesso account del provider per le chiavi della cache dei prompt corrispondenti, mantenendo il failover basato sullo stato e sulla quota.", + "reasoningTokenBuffer": "Buffer dei token di ragionamento", + "reasoningTokenBufferDesc": "Consenti all'instradamento combinato di aumentare il margine di max_tokens solo per i modelli di ragionamento noti, quando l'intero buffer rientra in un limite di output noto.", + "zeroLatencyOptimizations": "Ottimizzazioni a latenza zero", + "zeroLatencyOptimizationsDesc": "Attiva l'hedging, i salti predittivi del TTFT e la compressione proattiva del fallback. Lascia disattivato per evitare che queste funzionalità di latenza mettano in competizione le destinazioni o comprimano le richieste di fallback.", "credentialRedaction": "Oscuramento delle credenziali", "credentialRedactionDesc": "Oscura chiavi API, token e segreti dal contesto inviato ai provider e dalle risposte.", "enableCredentialRedaction": "Abilita l'oscuramento delle credenziali", "enableCredentialRedactionDesc": "Rimuove chiavi API, token, chiavi private e JWT da messaggi, chiamate di strumenti e risposte.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Sincronizzazione automatica disabilitata", + "pricingAutoSyncEnabled": "Sincronizzazione automatica abilitata", "modalityBridgeIntro": "Converti i contenuti multimodali in testo prima che raggiungano modelli che elaborano solo testo. I ponti per visione, audio e video sono disponibili e configurabili.", "modalityBridgeVisionTab": "Visione", "modalityBridgeAudioTab": "Audio", "modalityBridgeVideoTab": "Video", "modalityBridgeSubTabsAria": "Sezioni del Ponte di Modalità", - "modalityBridgeVisionTitle": "Vision Bridge", + "modalityBridgeVisionTitle": "Bridge visivo", "modalityBridgeVisionDesc": "Descrivi le immagini con un modello di visione e continua con il modello di testo scelto dall'utente.", "modalityBridgeMode": "Modalità", "modalityBridgeModeAuto": "Automatico (consigliato)", @@ -8234,21 +8249,21 @@ "modalityBridgeTaskAwareDesc": "Includi la domanda dell'utente come focus in modo che il modello visivo descriva ciò che conta e trascriva il testo visibile.", "modalityBridgePrompt": "Descrizione prompt", "modalityBridgeAdvanced": "Avanzato", - "modalityBridgeTimeoutMs": "Timeout (ms)", + "modalityBridgeTimeoutMs": "Tempo limite (ms)", "modalityBridgeMaxImages": "Max immagini per richiesta", "visionMaxCharsLabel": "Caratteri massimi per la descrizione", "visionMaxCharsHint": "Limita la lunghezza della descrizione del modello di visione. 0 = illimitato — aumenta per compiti OCR ricchi di dettagli.", "modalityBridgeCacheEnabled": "Descrizioni della cache", "modalityBridgeCacheEnabledDesc": "Riutilizza le descrizioni per immagini identiche (chiave SHA-256, in memoria).", "modalityBridgeCacheTtlMinutes": "Cache TTL (minuti)", - "modalityBridgeCacheMaxEntries": "Cache max entries", + "modalityBridgeCacheMaxEntries": "Numero massimo di voci nella cache", "modalityBridgeStatsBridged": "collegato", "modalityBridgeStatsCacheHits": "cache hit", "modalityBridgeStatsFailures": "errori", "modalityBridgeStatsLastUsed": "ultimo utilizzato", "modalityBridgeStatsNever": "mai", "modalityBridgeTestButton": "Test con immagine di esempio", - "modalityBridgeTestRunning": "Testing…", + "modalityBridgeTestRunning": "Test in corso…", "modalityBridgeTestOk": "Bridge OK — {count} immagine(i) descritta(e) da {model}", "modalityBridgeTestReroute": "Il ponte ha reindirizzato la richiesta a {model}", "modalityBridgeTestNoop": "Il bridge non è stato attivato (il modello potrebbe supportare la visione nativamente o il bridge è disabilitato)", @@ -8257,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge spostato", "modalityBridgeMovedBody": "Le impostazioni di Vision Bridge ora si trovano nella pagina dedicata a Modality Bridge.", "modalityBridgeMovedCta": "Apri le impostazioni del Modality Bridge", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "Bridge audio", "modalityBridgeAudioDesc": "Trascrivi l'audio con un modello di riconoscimento vocale prima di continuare con il modello di testo scelto.", "modalityBridgeAudioEnabled": "Abilita Audio Bridge", "modalityBridgeAudioEnabledDesc": "Sostituisci le parti audio con le trascrizioni quando il modello di destinazione non può elaborare l'audio.", @@ -8309,7 +8324,7 @@ "oneproxyCountry": "Oneproxy Paese", "oneproxyDelete": "Elimina Oneproxy", "oneproxyEmpty": "Oneproxy Vuoto", - "oneproxyHost": "Oneproxy Host", + "oneproxyHost": "Host Oneproxy", "oneproxyLatency": "Latenza Oneproxy", "oneproxyProtocol": "Protocollo Oneproxy", "oneproxyQuality": "Qualità Oneproxy", @@ -8336,14 +8351,14 @@ "oneproxyClearAllConfirm": "Cancellare tutti i proxy 1proxy?", "memorySkillsSkillsmpDescription": "Collegati a SkillsMP per scoprire e installare competenze dal marketplace.", "memorySkillsActiveProviderDescription": "Scegli quale fornitore la pagina Competenze utilizza per la ricerca e l'installazione.", - "memorySkillsSkillsmpProviderTitle": "SkillsMP Marketplace", + "memorySkillsSkillsmpProviderTitle": "Marketplace SkillsMP", "memorySkillsSkillsmpProviderDescription": "Marketplace autenticato (usa la tua chiave API SkillsMP).", "memorySkillsSkillsshProviderTitle": "Directory skills.sh", "memorySkillsSkillsshProviderDescription": "Fornitore della directory pubblica (nessuna chiave API richiesta).", "routingCcBridgeCatalogName": "Bridge CC compatibile con Anthropic", "routingClaudeProviderName": "Claude (OAuth)", "routingClaudeProviderDescription": "Provider Claude nativo con token emessi da OAuth.", - "routingCcBridgeName": "Claude-Code Bridge", + "routingCcBridgeName": "Bridge Claude-Code", "routingCcBridgeDescription": "Endpoint di relay utilizzando le chiavi API (compatibile con anthropic-cc-*).", "routingCustomProviderDescription": "Fornitore personalizzato.", "routingUnknownOpKind": "Tipo di operazione sconosciuto: {kind}", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Salute", "cliproxyapiPort": "Porta", "qdrantHost": "Host", - "qdrantCollection": "Collezione", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Collezione" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", + "title": "Motore RTK", + "description": "Compressione basata sui comandi per l'output degli strumenti, i log del terminale e i risultati delle build.", + "enabled": "Abilitato", + "intensity": "Intensità", + "intensityMinimal": "Minima", "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "intensityAggressive": "Aggressiva", + "toolResults": "Risultati degli strumenti", + "assistantMessages": "Messaggi dell'assistente", + "codeBlocks": "Blocchi di codice", "filterCatalog": "Filtra catalogo", "filterCatalogDesc": "Filtri di output disponibili per categoria", "guidedConfig": "Configurazione", "guidedConfigDesc": "Regola il modo in cui RTK filtra l'output del terminale", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Numero massimo di righe", + "maxChars": "Numero massimo di caratteri", "deduplicateThreshold": "Soglia di deduplicazione", "customFilters": "Filtri personalizzati", "detectedType": "Tipo rilevato", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Fallimenti", "rawOutputAlways": "Sempre", "rawOutputMaxBytes": "Numero massimo di byte di output non elaborati", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Test dei filtri", + "pasteOutput": "Incolla l'output dello strumento per testare i filtri...", "presetHigh": "Aggressivo", "presetLow": "Leggero", "presetMaxChars": "Caratteri di output massimi", "presetMaxLines": "Linee di uscita massime", "presetMedium": "Standard", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Esegui", + "result": "Risultato", + "previewEmpty": "Esegui un esempio per visualizzare in anteprima l'output RTK.", + "detected": "Rilevati", "masterSwitchOffAlert": "L'interruttore principale di Token Saver è disattivato — queste impostazioni non influiranno sulle richieste finché non lo attivi dalla pagina Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Token filtrati", + "filtersActive": "Filtri attivi", + "requests": "Richieste", + "avgSavings": "Risparmio medio", "simpleMode": "Semplice", "advancedMode": "Avanzato", "searchFilters": "Filtri di ricerca...", @@ -8481,7 +8488,7 @@ "savings": "Risparmio", "original": "Originale", "compressed": "Compresso", - "diff": "Diff", + "diff": "Differenza", "last7Days": "Ultimi 7 giorni", "noDataYet": "Ancora nessun dato", "runs": "Esecuzioni", @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", + "title": "Combinazioni di compressione", + "description": "Definisci come vengono combinati i motori per diversi scenari di instradamento.", + "createCombo": "Crea combinazione di compressione", + "editCombo": "Modifica", + "deleteCombo": "Elimina", + "deleteConfirm": "Eliminare questa combinazione di compressione?", "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "addStep": "Aggiungi passaggio", + "removeStep": "Rimuovi", + "name": "Nome", + "descriptionField": "Descrizione", + "languagePacks": "Pacchetti lingua", + "outputMode": "Modalità di output", + "assignToRouting": "Assegna alle combinazioni di routing", + "noAssignments": "Nessuna combinazione di routing disponibile", + "default": "Predefinito", + "setAsDefault": "Imposta come predefinito", + "save": "Salva", + "cancel": "Annulla", + "enabled": "Abilitato", "loading": "Caricamento…", "hubTitle": "Hub di compressione", "hubDescription": "Scegli quale profilo di compressione eseguire a livello globale.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "Attualmente disponibile solo per Claude (Anthropic). È una modalità delegata: il provider cancella i vecchi blocchi di utilizzo degli strumenti lato server — non riscriviamo il messaggio. Non influisce sugli altri provider.", "namedCombos": "Combinazioni con nome", "namedCombosDescription": "Salva diverse pipeline e assegnale a combinazioni di routing specifiche.", + "activeProfileMasterSwitchOffWarning": "Il profilo attivo qui sotto non verrà eseguito finché l'interruttore principale \"Compressione dei prompt\" non sarà attivato.", + "activeProfileMasterSwitchOffCta": "Attivalo nelle Impostazioni", "comboNamePlaceholder": "Nome combinazione", "descriptionPlaceholder": "Descrizione", "nameRequired": "Inserisci un nome per la combinazione prima di salvare.", @@ -8674,16 +8683,14 @@ "languagePacksList": "Pacchetti lingua: {packs}", "dragToReorder": "Trascina per riordinare il passaggio", "engine": "Motore", - "intensity": "Intensità", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensità" }, "compressionStudio": { "noRun": "Nessuna esecuzione di compressione disponibile.", "liveDataHint": "I dati in tempo reale arrivano tramite il canale di compressione WebSocket.", "cockpitView": "Vista cockpit", - "canvas": "Canvas", - "waterfall": "Waterfall", + "canvas": "Tela", + "waterfall": "Cascata", "replayDone": "Riproduzione completata", "pauseReplay": "Metti in pausa la riproduzione", "playReplay": "Avvia riproduzione", @@ -8705,17 +8712,17 @@ "run": "Esegui", "laneRejected": "rifiutato: {reason}", "error": "errore", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "L'anteprima della pipeline combinata non è riuscita: {reason}", "combinedFlow": "Flusso combinato", "eachLayer": "Ogni livello separatamente", "diff": "Differenza", "combined": "combinato", "skipped": "salta", - "input": "INPUT", - "output": "OUTPUT", + "input": "INGRESSO", + "output": "USCITA", "tokenCount": "{count, number} token", "tokenShort": "tok", - "provider": "Provider", + "provider": "Fornitore", "judgeModel": "Modello giudice", "judgeModelPlaceholder": "es. claude-haiku", "maxCostUsd": "Limite USD", @@ -8727,14 +8734,14 @@ "loadAb": "Carica A/B", "engine": "Motore", "savings": "Risparmio", - "retention": "Retention", + "retention": "Conservazione", "outputTokensShort": "Token di output", "fidelity": "Fedeltà", "playTab": "Riproduci", "compareTab": "Confronta", "encoderComparison": "Encoder A/B — {count} array", "encoderWinner": "vincitore: {winner}", - "encoder": "encoder", + "encoder": "codificatore", "bytes": "byte", "tokensCl100k": "token (cl100k)" }, @@ -8780,27 +8787,27 @@ }, "enableTitle": "Abilita il motore", "enableDescription": "Viene eseguito per ultimo nello stack (dopo che RTK/Caveman ha pulito il testo, OmniGlyph converte il resto in immagini) e funziona anche in modalità autonoma tramite la modalità omniglyph. Questa è un'anteprima e rimane disattivata per impostazione predefinita fino al completamento della convalida end-to-end.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Profilo di compressione", + "profileDescription": "Il profilo è un limite massimo, non minimo: un profilo più restrittivo non può essere reso meno restrittivo da un'override per singolo passaggio. Misurato su questa codebase: con coding-safe o balanced, una sessione che non ha ancora accumulato cronologia non comprime nulla, perché entrambi innalzano la soglia minima di caratteri e mantengono nativi il prompt di sistema, gli schemi degli strumenti e i risultati degli strumenti.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Aggressive (predefinito)", + "description": "La policy misurata dalle ricevute pubblicate. Converte in immagini il prompt di sistema, la documentazione degli strumenti e la cronologia densa." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Bilanciato", + "description": "Mantiene nativo lo stato attivo e protegge gli ultimi 8 turni; comprime solo la cronologia chiusa meno recente." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Sicuro per la codifica", + "description": "Mantiene nativi le direttive, gli schemi degli strumenti e l'output attivo degli strumenti, proteggendo gli ultimi 12 turni. Non comprime nulla finché la sessione non accumula cronologia." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Pass-through", + "description": "Esegue il routing senza trasformazioni. Il motore viene ignorato e la richiesta viene inoltrata senza modifiche." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Seleziona il profilo di compressione OmniGlyph", "saved": "Salvato.", "saveFailed": "Impossibile salvare.", "enableAria": "Abilita il motore OmniGlyph", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Compressione dei messaggi basata su regole, pacchetti lingua, analisi e controlli della modalità di output.", "advancedConfig": "Configurazione avanzata", "advancedConfigDesc": "Ottimizzare il comportamento di compressione", "aggressiveSettings": "Impostazioni aggressive", "aggressiveSettingsDesc": "Massima compressione con potenziali compromessi di qualità", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Richieste", + "tokensSaved": "Token risparmiati", + "savingsPercent": "Risparmio %", + "avgLatency": "Latenza media", + "languagePacks": "Pacchetti linguistici", + "languagePacksDesc": "Abilita le regole di compressione per lingue specifiche.", "labelAutoTrigger": "Compressione automatica quando il contesto supera", "labelCompressionRate": "Resistenza alla compressione", "labelMaxTokens": "Token di destinazione per messaggio", "labelMinLength": "Lunghezza minima del messaggio", "labelMinSavings": "Token minimi da salvare", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Abilitato", + "autoDetect": "Rileva automaticamente la lingua", + "rulesCount": "{count} regole", "inputCompressionTitle": "Compressione dell'input", "inputCompressionDesc": "Riscrivi la cronologia della chat con parole più brevi. Riduce i token di input del ~50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Analisi della compressione", + "noAnalytics": "Non sono ancora disponibili analisi della compressione.", "masterDisabledWarning": "L'interruttore principale di Token Saver è disattivato — queste impostazioni non influenzeranno le richieste finché non lo attivi dalle Impostazioni di compressione o lo modifichi qui.", "outputMode": "Modalità di uscita", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Modalità di output", "quickSettings": "Impostazioni rapide", "quickSettingsDesc": "Impostazioni di compressione di base per iniziare", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Bypass automatico della chiarezza", + "bypassConditions": "Condizioni di bypass", "bypassConditionsList": "sicurezza, irreversibile, chiarimento, sensibile all'ordine", "simpleMode": "Semplice", "advancedMode": "Avanzato", @@ -8944,9 +8951,9 @@ "ultraSettings": "Impostazioni ultra", "ultraSettingsDesc": "Compressione semantica basata su SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Rispondi in modo conciso. Mantieni invariati termini tecnici, codice, errori, URL e identificatori.", + "full": "Rispondi in modo succinto e compatto. Mantieni tutto il contenuto tecnico.", + "ultra": "Rispondi in modo estremamente succinto usando abbreviazioni tecniche comuni. Mantieni invariati i simboli esatti." } }, "translator": { @@ -9253,7 +9260,7 @@ "tokens": "token", "pauseAutoRefresh": "Sospendi aggiornamento automatico", "resumeAutoRefresh": "Riprendi aggiornamento automatico", - "live": "Live", + "live": "In tempo reale", "copyInput": "Copia input", "copyOutput": "Copia output", "streamTransformFailed": "Impossibile trasformare lo stream" @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Rimanente", "kiloPassRenews": "Si rinnova tra {count} giorni", "kiloPassUsageLabel": "Utilizzo di questo mese", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Crediti di utilizzo extra", + "kimiExtraUsage": "Utilizzo extra", + "kimiExtraUsageEnabled": "Abilitato", + "kimiExtraUsageDisabled": "Disabilitato", + "kimiExtraUsageFrozen": "Congelato", + "kimiExtraUsageUnavailable": "Non disponibile", + "kimiMonthlyUsed": "Utilizzati questo mese", + "kimiMonthlyLimit": "Limite mensile", + "kimiMonthlyLimitUnlimited": "Illimitato", + "kimiAdditionalCredits": "Crediti aggiuntivi", "loggerTab": "Registratore", "proxyTab": "Procura", "budgetManagement": "Gestione del bilancio", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Interruttori automatici", "lockedIPs": "IP bloccati", "lockoutsAutoRefreshHint": "Blocchi del limite di velocità per modello • Aggiornamento automatico 10 secondi", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# bloccato} other {# bloccati}}", "timeLeft": "{time} rimasto", "howItWorks": "Come funziona", "howItWorksSubtitle": "Scopri come le valutazioni convalidano le tue risposte LLM", @@ -9343,7 +9350,7 @@ "evalsStrategyRegexDescription": "Valida l'output dell'LLM rispetto a un pattern di espressione regolare.", "evalsStrategyCustomDescription": "Logica di valutazione personalizzata (configurata tramite JSON).", "historyColumnSuiteName": "Nome della suite", - "historyColumnTarget": "Target", + "historyColumnTarget": "Destinazione", "historyColumnPassRate": "Tasso di superamento", "historyColumnAvgLatencyMs": "Latenza media", "historyColumnCreatedAt": "Eseguito", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Modelli in prova", "searchSuitesPlaceholder": "Cerca suite...", "passSuffix": "passaggio", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# caso} other {# casi}}", "runEval": "Esegui valutazione", "runAllSuites": "Esegui tutto", "runAllRunning": "Correre tutto...", "runAllProgress": "In esecuzione {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# suite non riuscita} other {# suite non riuscite}}", "runAllCompleted": "Ho eseguito le suite {suites}: {passed} superato, {failed} fallito", "runAllCompletedWithFailures": "Ho eseguito le suite {completed}; Impossibile completare {failedSuites}", "runningProgress": "In esecuzione {current}/{total}...", @@ -9423,7 +9430,7 @@ "providerLimits": "Limiti del fornitore", "noProviders": "Nessun provider connesso", "connectProvidersForQuota": "Connettiti ai provider con OAuth per monitorare i limiti di quota e l'utilizzo dell'API.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# account} other {# account}}", "filteredFromCount": "(filtrato da {count})", "autoRefresh": "Aggiornamento automatico", "refreshAll": "Aggiorna tutto", @@ -9436,13 +9443,13 @@ "quotaVisibilityUpdateFailed": "Impossibile aggiornare la visibilità della quota", "account": "Account", "modelQuotas": "Quote modello", - "lastUsed": "Last Refreshed", + "lastUsed": "Ultimo aggiornamento", "actions": "Azioni", "refreshQuota": "Aggiorna quota", "today": "Oggi", "tomorrow": "Domani", "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "inDuration": "tra {duration}", "notApplicable": "N / A", "rawPlanWithValue": "Piano grezzo: {plan}", "noPlanFromProvider": "Nessun piano dal fornitore", @@ -9452,9 +9459,9 @@ "cardExpand": "Espandi", "cardCollapse": "Comprimi", "moreQuotas": "+{count} altri", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Non raggruppati", + "viewFlat": "Piatto", + "viewByEnvironment": "Per ambiente", "noQuotaDataAvailable": "Nessun dato sulle quote disponibile", "noAccountsForTierFilter": "Nessun account trovato per il filtro del livello", "tierAll": "Tutto", @@ -9475,7 +9482,7 @@ "filterTierLabel": "Livello", "purchaseAll": "Tutti", "purchaseOauthSub": "Abbonamento", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "Senza OAuth", "purchaseApiKey": "Chiave API", "creditsLabel": "Crediti", "creditBalanceHint": "Saldo rimanente", @@ -9504,8 +9511,8 @@ "confirmRedeemResetCreditButton": "Riscatta credito", "resetCreditRedeemed": "Ripristino riscattato", "resetCreditRedeemFailed": "Impossibile riscattare il credito di ripristino", - "suiteBuilderSaveFailed": "Failed to save suite", - "clone": "Clone", + "suiteBuilderSaveFailed": "Impossibile salvare la suite", + "clone": "Clona", "exportSuite": "Esportare", "importSuite": "Importare", "suiteExported": "Suite esportata", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "JSON della suite di valutazione non valida", "suiteBuilderCloneSuffix": "copia", "suiteBuilderImportedSuite": "Suite importata", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Scheda di valutazione", + "evalApiKey": "Chiave API", + "scorecardPassRate": "Tasso di superamento", + "targetTypeModel": "Modello", + "actualOutputLabel": "Output effettivo", + "evalTargetHint": "Seleziona un modello o una combinazione da valutare.", + "suiteBuilderDeleted": "Suite eliminata correttamente", + "suiteBuilderCaseCardHint": "Definisci il prompt di input e i criteri per l'output previsto.", + "nextResetUtc": "Prossimo azzeramento (UTC)", + "scorecardHint": "Tassi di superamento aggregati per tutte le suite di valutazione.", + "suiteLatestRunsHint": "Esecuzioni di valutazione più recenti per questa suite.", + "saving": "Salvataggio", + "suiteBuilderCaseModelLabel": "Modello (facoltativo)", + "evalControlsTitle": "Controlli di valutazione", + "suiteBuilderEditTitle": "Modifica suite di valutazione", + "suiteBuilderCaseStrategyLabel": "Strategia di convalida", + "notifySelectDifferentCompareTarget": "Seleziona una destinazione diversa per il confronto", + "recentRunsHint": "Sono mostrate le esecuzioni di valutazione più recenti. Fai clic su un'esecuzione per visualizzare i risultati dettagliati.", + "evalCompareHint": "Confronta facoltativamente i risultati con una seconda destinazione.", + "suiteBuilderCaseInvalid": "Questo caso presenta errori di convalida. Correggili prima di salvare.", + "historyEmpty": "Nessuna cronologia di valutazione disponibile", + "suiteBuilderUpdated": "Suite aggiornata correttamente", + "resetInterval": "Intervallo di azzeramento", + "suiteBuilderCreateTitle": "Crea suite di valutazione", + "activePeriodSpend": "Spesa del periodo attivo", + "evalApiKeyHint": "Seleziona la chiave API da utilizzare per le richieste di valutazione.", + "evalCompareOptional": "Confronta (facoltativo)", + "suiteBuilderDeleteFailed": "Impossibile eliminare la suite", + "suiteBuilderCaseSystemPromptPlaceholder": "Istruzioni di sistema facoltative...", + "scorecardCases": "Casi", + "runCompletedWithScore": "Valutazione completata — tasso di superamento: {score}%", + "suiteBuilderCustomBadge": "Personalizzato", + "targetSuiteDefaults": "Impostazioni predefinite della suite", + "suiteBuilderDeleteConfirm": "Vuoi davvero eliminare questa suite? Questa azione non può essere annullata.", + "suiteBuilderNameLabel": "Nome della suite", + "scorecardSuites": "Suite", + "evalCompareTarget": "Target di confronto", + "suiteBuilderCaseModelPlaceholder": "es. gpt-4o-mini", + "evalControlsHint": "Configura il target di valutazione e la chiave API, quindi esegui le suite per verificare la qualità del modello.", + "recentRunsTitle": "Esecuzioni recenti", + "suiteBuilderCaseSystemPromptLabel": "Prompt di sistema", + "suiteBuilderCaseExpectedPlaceholder": "es. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "per esempio. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Incolla l'esatta risposta prevista", "suiteBuilderCaseExpectedPlaceholderRegex": "per esempio. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Utilizza un'espressione regolare JavaScript senza racchiudere le barre.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "es. Suite per la qualità del codice", + "suiteBuilderAddCase": "Aggiungi caso", + "cancel": "Annulla", + "evalTarget": "Destinazione", + "suiteBuilderCaseNameLabel": "Nome del caso", + "weeklyLimitUsd": "Limite settimanale (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "es. Scrivi una funzione fibonacci in Python", + "suiteBuilderNameRequired": "Il nome della suite è obbligatorio", + "suiteBuilderCaseUserPromptLabel": "Prompt utente", + "daily": "Giornaliero", + "resultErrorLabel": "Errore", + "suiteBuilderBuiltInBadge": "Integrato", + "suiteBuilderCaseCardTitle": "Caso di test", "suiteBuilderDuplicateCase": "Duplicato", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "es. 50.00", + "suiteBuilderCaseTagsHint": "Tag separati da virgole per organizzare i casi di test.", + "notifyEvalRunFailedWithReason": "Valutazione non riuscita: {reason}", + "weekly": "Settimanale", + "runEvalRunning": "Valutazione in corso...", + "delete": "Elimina", + "resetTimeUtc": "Ora di reimpostazione (UTC)", + "evalApiKeyAuto": "Automatico (usa il valore predefinito)", + "suiteBuilderDescriptionPlaceholder": "Descrizione facoltativa di ciò che questa suite verifica...", + "targetComparisonTitle": "Confronto dei target", + "save": "Salva", + "suiteBuilderCreated": "Suite creata correttamente", + "suiteLatestRuns": "Ultime esecuzioni", + "suiteBuilderCaseExpectedLabel": "Valore atteso", + "historyLatency": "Latenza", + "suiteBuilderCaseTagsPlaceholder": "es. programmazione, python", + "targetTypeCombo": "Combinazione", + "scorecardPassed": "Superato", + "suiteBuilderCaseTagsLabel": "Tag", + "suiteBuilderNewSuite": "Nuova suite", + "notifyEvalLoadFailed": "Impossibile caricare i dati di valutazione", + "notConfigured": "Non configurato", + "suiteBuilderCaseNamePlaceholder": "es. test di Fibonacci in Python", + "intervalLabel": "Intervallo", + "suiteBuilderCreateAction": "Crea suite", + "suiteBuilderCasesHint": "Ogni caso invia un prompt e convalida la risposta.", + "suiteBuilderUpdatedAt": "Aggiornato", + "errorBadge": "Errore", + "suiteBuilderCasesTitle": "Casi di test", + "edit": "Modifica", + "monthly": "Mensile", + "suiteBuilderCasesRequired": "È richiesto almeno un caso di test", + "weeklyLimitSummary": "Riepilogo del limite di budget settimanale", + "suiteBuilderDescriptionLabel": "Descrizione", + "targetComparisonHint": "Confronto affiancato dei risultati della valutazione tra i target.", + "compareCompletedWithScore": "Confronto completato — tasso di superamento: {score}%", + "staleQuotaTooltip": "Ultimo aggiornamento non riuscito — visualizzazione dei dati memorizzati nella cache", "quotaThresholdLabel": "Min rimasto", "quotaCutoffsColumnHelp": "Interrompi le richieste quando la quota rimanente scende a questa percentuale o al di sotto.", "quotaCutoffsButtonDefault": "Predefinito", @@ -9863,19 +9870,19 @@ "backToLogin": "Torna all'accesso", "forgotPassword": "Ha dimenticato la password?", "continueWithOidc": "Continua con OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Password predefinita: CHANGEME (a meno che non sia stato impostato INITIAL_PASSWORD)", "Authorization": "Autorizzazione", "Content-Disposition": "Disposizione del contenuto", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "In attesa dell'autorizzazione...", + "waitingForGoogleAuthorization": "In attesa dell'autorizzazione di Google...", + "waitingForOpenAIAuthorization": "In attesa dell'autorizzazione di OpenAI...", + "waitingForAntigravityAuthorization": "In attesa dell'autorizzazione di Antigravity...", + "waitingForQoderAuthorization": "In attesa dell'autorizzazione di Qoder...", + "exchangingCodeForTokens": "Scambio del codice con i token...", + "nodeIncompatibleTitle": "Versione di Node.js incompatibile", + "nodeIncompatibleDesc": "È in esecuzione Node.js {version}, una versione non conforme ai criteri di sicurezza per gli ambienti di runtime supportati da OmniRoute. Utilizza una versione LTS aggiornata di Node.js 20.x o 22.x.", + "nodeIncompatibleFixLabel": "Soluzione: installa una versione LTS aggiornata di Node.js 22", + "nodeIncompatibleHint": "OmniRoute richiede Node.js 22.22.2+ (22.x LTS) o 24.0.0+ (24.x LTS). Si consiglia Node 24 LTS.", "resetViaAppDataTitle": "Ripristina tramite Dati App", "resetViaAppDataDescription": "Elimina il file delle impostazioni dalla directory dei dati dell'app per ripristinare la tua password:", "quitDesktopApp": "Esci completamente dall'app desktop OmniRoute", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "Fornitori", "commonUseCases": "Casi d'uso comuni", "clientCompatibility": "Compatibilità con il cliente", - "protocolsToc": "Protocols", + "protocolsToc": "Protocolli", "apiReference": "Riferimento API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Riferimento API di gestione", + "managementApiDescription": "Endpoint di automazione per il registro dei proxy, le assegnazioni degli ambiti e la migrazione dei proxy legacy.", "method": "Metodo", "path": "Sentiero", "notes": "Note", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Installa OmniRoute come app Web progressiva su browser Android, iOS e desktop.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Esegui OmniRoute in modalità headless su Android tramite Termux. Accedi alla dashboard dal browser del tuo dispositivo mobile.", "featureRoutingTitle": "Routing multi-provider", "featureRoutingText": "Instrada le richieste a oltre 30 fornitori di intelligenza artificiale attraverso un singolo endpoint compatibile con OpenAI. Supporta API di chat, risposte, audio e immagini.", "featureCombosTitle": "Combo e bilanciamento", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "Utilizza OmniRoute come URL di base stabile ruotando gli account o le combinazioni di provider sottostanti.", "clientKimiBullet2": "Preferire modelli con prefisso nei flussi di codifica in modo che il fallback e la traccia di controllo rimangano espliciti.", "clientKimiBullet3": "Utilizza `/v1/responses` quando desideri un routing in stile Responses nativo per i client che utilizzano strumenti.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "Protocolli: MCP e A2A", + "protocolsDescription": "OmniRoute espone due protocolli operativi oltre alle API compatibili con OpenAI: MCP per l'esecuzione degli strumenti e A2A per i flussi di lavoro tra agenti.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Usa MCP tramite stdio per consentire ai client di individuare e richiamare gli strumenti OmniRoute con visibilità di audit.", + "protocolMcpStep1": "Avvia il trasporto MCP con `omniroute --mcp`.", + "protocolMcpStep2": "Configura il client MCP affinché utilizzi il trasporto stdio.", + "protocolMcpStep3": "Richiama `omniroute_get_health` e `omniroute_list_combos` per verificare la connettività.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "Usa A2A JSON-RPC per inviare attività in modo sincrono o tramite streaming SSE.", + "protocolA2aStep1": "Leggi `/.well-known/agent.json` per individuare l'agente.", + "protocolA2aStep2": "Invia richieste `message/send` o `message/stream` a `POST /a2a`.", + "protocolA2aStep3": "Gestisci il ciclo di vita delle attività con `tasks/get` e `tasks/cancel`.", + "protocolTroubleshootingTitle": "Risoluzione dei problemi dei protocolli", + "protocolTroubleshooting1": "Se lo stato MCP è offline, verifica che il processo stdio sia in esecuzione e che il file heartbeat venga aggiornato.", + "protocolTroubleshooting2": "Se le attività A2A rimangono nello stato `working`, controlla `/api/a2a/tasks/:id` e gli eventi del flusso per individuare lo stato terminale.", + "protocolTroubleshooting3": "Usa `/dashboard/mcp` e `/dashboard/a2a` per i controlli operativi e la visibilità di audit.", "endpointChatNote": "Endpoint chat compatibile con OpenAI (impostazione predefinita).", "endpointResponsesNote": "Endpoint API di risposta (Codex, serie o).", "endpointModelsNote": "Catalogo dei modelli per tutti i fornitori collegati.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Riscrivere l'helper per i client senza /v1.", "endpointRewriteResponsesNote": "Riscrivi l'helper per le risposte senza /v1.", "endpointRewriteModelsNote": "Riscrivere l'helper per l'individuazione dei modelli senza /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Elenca gli elementi salvati nel registro dei proxy (supporta la paginazione).", + "mgmtProxiesCreateNote": "Crea un elemento proxy riutilizzabile nel registro.", + "mgmtProxiesHealthNote": "Ottieni le metriche di integrità delle ultime 24 ore/scorrevoli per ciascun proxy salvato dai log dei proxy.", + "mgmtProxiesBulkAssignNote": "Assegna o rimuovi un proxy per più ID ambito in un'unica richiesta.", + "mgmtAssignmentsListNote": "Elenca le assegnazioni dei proxy per ambito, scope_id o proxy_id.", + "mgmtAssignmentsUpdateNote": "Assegna o rimuovi il proxy per l'ambito globale/provider/account/combo.", + "mgmtLegacyMigrationNote": "Importa le mappe proxyConfig legacy nelle assegnazioni del registro.", "modelPrefixesDescriptionStart": "Utilizzare il prefisso del provider prima del nome del modello per instradare a un provider specifico. Esempio:", "modelPrefixesDescriptionEnd": "percorsi verso GitHub Copilot.", "provider": "Fornitore", @@ -10265,7 +10272,7 @@ "feedbackQuestion": "Questa pagina è stata utile?", "pageMetadataTitle": "{title} — Documentazione OmniRoute", "pageMetadataDescription": "Documentazione di OmniRoute: {title}", - "breadcrumb": "Breadcrumb", + "breadcrumb": "Percorso di navigazione", "apiReferenceTable": { "parameters": "Parametri", "name": "Nome", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute è un software open source. Sei libero di esaminarlo, modificarlo e distribuirlo secondo i termini della sua licenza." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "Agenti CLI", + "description": "Individua gli agenti CLI installati sul sistema. Aggiungi agenti personalizzati per il rilevamento automatico.", + "refresh": "Aggiorna", + "installed": "Installato", + "notFound": "Non trovato", + "builtIn": "Integrato", + "custom": "Personalizzato", + "remove": "Rimuovi", + "addCustomAgent": "Aggiungi agente personalizzato", + "addCustomAgentDesc": "Registra qualsiasi strumento CLI per il rilevamento. Verrà scansionato automaticamente all'aggiornamento.", + "agentName": "Nome agente", + "binaryName": "Nome del binario", + "versionCommand": "Comando per la versione", + "spawnArgs": "Argomenti di avvio", + "addAgent": "Aggiungi agente", + "scanning": "Scansione del sistema alla ricerca di agenti CLI...", + "opencodeIntegration": "Integrazione OpenCode", + "opencodeDetected": "Rilevato opencode {version}", + "opencodeDesc": "Genera un file {configFile} pronto all'uso con l'URL di base di OmniRoute e tutti i modelli disponibili: inseriscilo nella directory principale del progetto ed esegui {command}.", + "downloadConfig": "Scarica {file}", + "downloaded": "Scaricato!", + "setupGuideTitle": "Guida alla configurazione", + "openCliTools": "Apri gli strumenti CLI", + "setupGuideDetectCliTitle": "Rileva le CLI installate", + "setupGuideDetectCliDesc": "Fai clic su Aggiorna dopo aver installato o aggiornato una CLI, affinché OmniRoute possa ripetere la scansione dei binari e delle versioni.", + "setupGuideCustomAgentTitle": "Registra binario personalizzato", + "setupGuideCustomAgentDesc": "Usa Aggiungi agente personalizzato quando la tua CLI non è nell'elenco integrato. Specifica il nome del binario e il comando per la versione.", + "setupGuideCommandMissingTitle": "Correggi l'errore 'comando non trovato'", + "setupGuideCommandMissingDesc": "Assicurati che il comando CLI sia disponibile nel PATH, apri una nuova sessione del terminale e seleziona nuovamente Aggiorna.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10491,12 +10498,12 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", + "simple-chat": "Chat semplice", "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "system-prompt": "Prompt di sistema", + "thinking": "Ragionamento", + "tool-calling": "Chiamata di strumenti", + "multi-turn": "Conversazione multi-turno", "vision": "Visione", "schema-coercion": "Coercizione dello schema" }, @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Gestione della cache", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Aggiorna", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Voci in memoria", + "memoryEntriesSub": "LRU in memoria", + "dbEntries": "Voci nel DB", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Hit della cache", + "cacheHitsSub": "su {total} totali", + "tokensSaved": "Token risparmiati", + "tokensSavedSub": "Stima basata sugli hit", + "hitRate": "Percentuale di hit", + "performance": "Prestazioni della cache", + "autoRefresh": "Aggiornamento automatico ogni {seconds}s", + "hits": "Hit", + "misses": "Miss", + "total": "Totale", + "behavior": "Comportamento della cache", + "behaviorDeterministic": "Vengono memorizzate nella cache solo le richieste non in streaming con temperature=0.", + "behaviorBypass": "Ignora con l'header {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "TTL predefinito: 30 minuti. Configurabile tramite {envVar}.", + "idempotency": "Livello di idempotenza", + "activeDedupKeys": "Chiavi di deduplicazione attive", + "dedupWindow": "Finestra di deduplicazione", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Impossibile svuotare la cache.", + "unavailable": "Cache non disponibile", + "unavailableDesc": "Impossibile recuperare le statistiche della cache. Assicurati che il server sia in esecuzione.", "loadingCacheAria": "Caricamento cache", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Cache dei prompt (lato provider)", + "semanticCache": "Cache semantica", + "promptCacheSectionDesc": "Mostra l'attività di caching dei prompt lato provider dalla cronologia di utilizzo, così puoi vedere dove è attivo il controllo della cache e quanto riutilizzo dell'input stai ottenendo.", + "promptTrendDesc": "Volume orario delle richieste, copertura della cache e volume di lettura dalla cache nelle ultime 24 ore.", + "cachedRequests": "Richieste memorizzate nella cache", + "cachedRequests24h": "Richieste memorizzate nella cache (24 h)", + "cacheHitRate": "Percentuale di hit della cache", + "cacheRate": "Tasso di utilizzo della cache", + "cacheRateDesc": "delle richieste totali", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Metriche della cache dei prompt", + "withCacheControl": "Con controllo della cache", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Rapporto di riutilizzo della cache", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Risparmio stimato", + "lastUpdated": "Ultimo aggiornamento", + "hoursTracked": "ore monitorate", + "busiestHour": "Ora di maggior traffico", + "peakCacheRate": "Tasso massimo della cache", + "trendHour": "Ora", + "activityVolume": "Attività", + "requestsShort": "richieste", + "inputShort": "Input", + "cachedShort": "In cache", + "writeShort": "Scrivi", + "resetting": "Reimpostazione...", + "resetMetrics": "Reimposta metriche", + "byProvider": "Suddivisione per provider", + "providerCacheRateDesc": "Ogni provider mostra il totale dei token di input, i token letti dalla cache e i token scritti nella cache, così puoi verificare il rapporto di riutilizzo rispetto ai totali grezzi.", "provider": "Provider", - "requests": "Requests", + "requests": "Richieste", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", - "tableProvider": "Provider", + "trend24h": "Andamento della cache (24 ore)", + "peakCached": "Picco nella cache", + "cached": "Nella cache", + "overview": "Panoramica", + "tableProvider": "Fornitore", "tableModel": "Modello", "performanceTitle": "Prestazioni", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "La cache deterministica delle risposte di OmniRoute. Quando è abilitata, le richieste ripetute non in streaming con temperature=0 possono essere gestite localmente senza contattare il provider upstream.", + "semanticCacheDisabledDesc": "La cache semantica è disabilitata. OmniRoute ignorerà il riutilizzo locale delle risposte finché non la riattiverai nelle Impostazioni.", + "semanticEntriesDesc": "Record persistenti della cache semantica attualmente archiviati in SQLite. L'attività della cache dei prompt lato provider non è elencata qui.", + "searchEntries": "Cerca voci...", + "search": "Cerca", + "loading": "Caricamento...", + "entriesLoadError": "Impossibile caricare le voci della cache semantica.", + "noEntries": "Nessuna voce trovata nella cache", + "noPromptCacheData": "Non è stata ancora registrata alcuna attività della cache dei prompt lato provider.", + "noTrendData": "Non è stata registrata alcuna attività della cache dei prompt nelle ultime 24 ore.", + "signature": "Firma", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Creazione", + "expires": "Scadenza", + "actions": "Azioni", + "deduplicatedRequests": "Richieste deduplicate", + "savedCalls": "Chiamate API risparmiate", + "totalProcessed": "Totale richieste elaborate", + "disabled": "Disabilitata", + "totalRequests": "Richieste totali", "reasoningCache": "Replica del ragionamento", "reasoningCacheDesc": "Conserva il pensiero del modello per i flussi di chiamata degli strumenti multigiro", "reasoningEntries": "Voci attive", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes}m fa", "hoursAgo": "{hours}h fa", "daysAgo": "{days}g fa", - "entries": "Entries" + "entries": "Voci" }, "proxyConfigModal": { "levelGlobal": "Globale", @@ -10678,7 +10685,7 @@ "levelKey": "Chiave", "levelDirect": "Diretto (senza delega)", "titleGlobal": "Configurazione proxy globale", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "Proxy {level} — {label}", "loading": "Caricamento della configurazione del proxy...", "inheritingFrom": "Ereditando da", "source": "Fonte", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "Incolla una chiave API Devin esistente da una sessione Devin autenticata. La disponibilità dell'esportazione della chiave e i passaggi variano a seconda della versione e dell'account Devin.", "devinPasteDescription": "Fornisci la tua WINDSURF_API_KEY (ottenuta tramite `devin auth login`, o tramite il comando \"Windsurf: Provide Auth Token\" dell'IDE Windsurf).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json di Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Chiave API / Token", "saving": "Salvataggio…", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Connetti l'IDE del cursore", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Accedi con Cursor", + "tabImport": "Importa token", + "loginDescription": "Apre l'accesso tramite browser di Cursor. Funziona in Docker: approva nel browser dell'host, quindi torna qui.", + "loginWithCursor": "Accedi con Cursor", + "startingLogin": "Avvio…", + "waitingApproval": "In attesa dell'approvazione dell'accesso a Cursor…", + "openUrlHint": "Se il browser non si è aperto:", + "openLoginLink": "Apri la pagina di accesso", + "cancelLogin": "Annulla l'accesso", "autoDetecting": "Token di rilevamento automatico...", "readingFromCursor": "Lettura da Cursor IDE o cursor-agent", "tokensAutoDetected": "Token rilevati automaticamente con successo da Cursor IDE!", "cursorNotDetected": "IDE del cursore non rilevato. Incolla manualmente il token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Esecuzione in Docker? È preferibile usare Accedi con Cursor. L'importazione automatica dall'IDE e cursor-agent in genere non sono disponibili all'interno del container. Consulta docs/providers/CURSOR-DOCKER.md.", "accessToken": "Gettone di accesso", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Token di aggiornamento", + "refreshTokenPlaceholder": "Facoltativo — abilita l'aggiornamento automatico del token", "required": "*", "accessTokenPlaceholder": "Il token di accesso si popolerà automaticamente...", "machineId": "ID macchina", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Il rilevamento automatico dei token non è riuscito", "errorEnterToken": "Inserisci il token di accesso", "errorImportFailed": "Importazione non riuscita", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Impossibile avviare l'accesso a Cursor", + "errorLoginPoll": "Accesso a Cursor non riuscito", + "errorLoginTimeout": "Tempo scaduto per l'accesso a Cursor — riprova" }, "pricingModal": { "title": "Configurazione dei prezzi", @@ -10843,9 +10850,9 @@ "selectProxy": "Seleziona {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Importa dati legacy", + "bulkAssign": "Assegna in blocco", + "addProxy": "Aggiungi proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,15 +10861,15 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Testa", + "edit": "Modifica", + "delete": "Elimina", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", "labelType": "Tipo", "labelFamily": "Famiglia IP", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Automatico (dual-stack)", "familyIpv4": "Solo IPv4", "familyIpv6": "Solo IPv6", "familyHint": "Famiglia di indirizzi di uscita. Auto mantiene il dual-stack; IPv4/IPv6 vincolano questo proxy a quella famiglia (previene un leak v4 sotto un proxy solo IPv6).", @@ -10889,9 +10896,9 @@ "labelScope": "Ambito", "labelProxy": "Proxy", "scopeGlobal": "globale", - "scopeProvider": "provider", + "scopeProvider": "fornitore", "scopeAccount": "account", - "scopeCombo": "combo", + "scopeCombo": "combinazione", "bulkImportErrorMissingName": "NOME mancante", "bulkImportErrorMissingHost": "HOST mancante", "bulkImportErrorInvalidPort": "PORTA non valida (deve essere 1-65535)", @@ -10906,7 +10913,7 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Non riuscito", "successRate": "{rate}% di successo", "avgLatency": "{latency}ms in media", "assignmentsCount": "{count} compiti", @@ -10957,13 +10964,13 @@ "poolStrategyFailed": "Impossibile aggiornare la strategia di rotazione", "strategyRoundRobin": "Round-robin", "strategyRandom": "Casuale", - "strategySticky": "Sticky", + "strategySticky": "Persistente", "strategyLatency": "Ottimizzato per la latenza", "poolMembersLabel": "Membri del pool ({count})", "poolNoMembers": "Nessun proxy ancora presente in questo pool.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# uscita} other {# uscite}} in uso per {connections, plural, one {# connessione} other {# connessioni}} · fino a {max} su una singola uscita · ultime {hours} h", + "poolEgressObservationEmpty": "Nessun traffico osservato nelle ultime {hours} h", + "poolEgressObservationHint": "Calcolato dal registro del proxy nella finestra temporale: gli IP di uscita distinti osservati per i membri di questo pool e le connessioni OmniRoute che li hanno utilizzati. \"Su una singola uscita\" si riferisce all'intera finestra temporale, non allo stesso momento. Il blocco 429 per IP sospende solo le connessioni della stessa famiglia di provider.", "poolRemove": "Rimuovi", "poolRemoveFailed": "Impossibile rimuovere il proxy dal pool", "poolAddLabel": "Aggiungi un proxy", @@ -10976,93 +10983,93 @@ "title": "Title", "description": "Description", "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "provider": "Fornitore", + "model": "Modello", "accountKey": "Account Key", "autoAccounts": "Automatico ({count} account)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Invia", + "cancel": "Annulla", + "audioFile": "File audio", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Cancella tutto", + "request": "Richiesta", + "response": "Risposta", + "transcription": "Trascrizione", + "copy": "Copia", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "{count} immagini generate", "generatedImage": "Immagine generata {index}", - "save": "Save", + "save": "Salva", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Risposte", "completions": "Completamenti", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Embedding", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Moderazioni", - "rerank": "Rerank", + "rerank": "Riordina", "search": "Search", - "webFetch": "Web fetch" + "webFetch": "Recupero web" }, "conversationalChat": "Chat conversazionale", "clearChat": "Chiacchierata chiara", "typeMessagePlaceholder": "Digita un messaggio... (Maiusc+Invio per una nuova riga)", "tabChat": "Chat", - "tabCompare": "Compare", + "tabCompare": "Confronta", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", + "tabBuild": "Crea", + "configPane": "Configurazione", + "systemPrompt": "Prompt di sistema", + "systemPromptPlaceholder": "Sei un assistente disponibile.", + "modelPlaceholder": "es. openai/gpt-4o", "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "parametersLabel": "Parametri", + "collapseConfig": "Comprimi il pannello di configurazione", + "expandConfig": "Espandi il pannello di configurazione", + "temperature": "Temperatura", + "maxTokens": "Token massimi", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Penalità di presenza", + "frequencyPenalty": "Penalità di frequenza", "reasoningLabel": "Ragionamento", "thinking": "Pensiero", "effort": "Sforzo", "effortDefault": "Predefinito", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Casuale (lascia vuoto)", + "presetsLabel": "Preimpostazioni", + "loadPreset": "Carica preimpostazione", + "savePreset": "Salva preimpostazione", + "noPresets": "Nessuna preimpostazione", + "presetNamePlaceholder": "Nome della preimpostazione", + "savingPreset": "Salvataggio…", + "nameRequired": "Il nome è obbligatorio", + "failedToSavePreset": "Impossibile salvare la preimpostazione", + "improvePrompt": "Migliora il prompt", + "improvingPrompt": "Miglioramento…", + "improvePromptTitle": "Migliora il prompt con l'IA", + "setModelFirst": "Prima imposta un modello", "setModelInConfigFirst": "Imposta prima un modello nel pannello Config.", "improvePromptFailed": "Miglioramento del prompt non riuscito.", "improvePromptAria": "Migliora il prompt con l'IA", "confirmImprovePrompt": "Conferma miglioramento prompt", "improvePromptDescription": "Questo invierà il prompt di sistema corrente a per generare una versione migliorata.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Questa operazione consumerà la quota del modello configurato in Config.", + "improveConfirm": "Migliora", + "exportCode": "Esporta codice", + "exportCodeTitle": "Esporta codice", "exportShort": "Esporta", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Nessuno stato del playground disponibile per l'esportazione.", "closeExportModal": "Chiudi modale di esportazione", "close": "Chiudi", "exportRealKeyWarning": "Avviso di sicurezza: esportazione bloccata — è stata rilevata una chiave API reale nell'output. Reimposta la chiave API e riprova.", @@ -11071,13 +11078,13 @@ "copyLangCode": "Copia codice {language}", "loadingPresets": "Caricamento…", "loadPresetPlaceholder": "Carica preset…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Copia", + "copiedCode": "Copiato!", + "addModel": "+ Aggiungi modello", + "runAll": "Esegui tutto", + "cancelAll": "Annulla tutto", + "maxColumnsReached": "Massimo {max} colonne", + "modelPlaceholderCompare": "Modello (Cmd+K)…", "noModel": "Nessun modello", "statusLabel": "Stato: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "In attesa di risposta…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "stima lato client", + "tokensLabel": "Token", + "costLabel": "Costo", + "costEstimated": "(stimato)", "ttftTitle": "Tempo al primo token (stima lato client)", "tpsTitle": "Token al secondo (stima lato client)", "tokenCountsTitle": "Token di prompt ↑ / Token di completamento ↓", "estimatedCostTitle": "Costo stimato (accuratezza non garantita)", - "toolsLabel": "Tools", + "toolsLabel": "Strumenti", "toolsCount": "Strumenti ({count})", - "addTool": "Add tool", + "addTool": "Aggiungi strumento", "editTool": "Modifica strumento {name}", "removeTool": "Rimuovi strumento {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Nome della funzione", "toolNameRequiredPlaceholder": "Nome funzione *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Descrizione (facoltativa)", "toolParamsLabel": "Parametri (schema JSON)", "toolParamsJsonSchema": "Schema JSON per i parametri", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "I parametri devono essere JSON valido", + "structuredOutputLabel": "Output strutturato", + "enableJsonMode": "Abilita modalità JSON", + "disableJsonMode": "Disabilita modalità JSON", + "invalidJson": "JSON non valido", "jsonMode": "Modalità JSON", "jsonModeDescription": "Forza response_format: json_schema", "schemaName": "Nome schema", @@ -11128,7 +11135,7 @@ "seed": "Seed", "stopSequences": "Sequenze di stop", "stopSequencesPlaceholder": "es. \"\\n\\n\" o \"END\"", - "autoProvider": "Auto", + "autoProvider": "Automatico", "httpError": "Errore {status}", "requestCancelled": "Richiesta annullata", "networkError": "Errore di rete", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} colonne", "addModelToCompare": "Aggiungi una colonna modello da confrontare", "modelsSimultaneously": "Fino a {max} modelli contemporaneamente", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Esecuzione…", + "runLabel": "Esegui", + "enterToolResult": "Inserisci il risultato dello strumento…", "build": { "step1Label": "Cosa testare?", "step2Label": "Configura", @@ -11214,7 +11221,7 @@ "audioFile": "File audio", "fileTooLarge25Mb": "Il file è troppo grande. Dimensione massima: 25 MB.", "selectAudioFirst": "Seleziona prima un file audio.", - "speechToText": "Speech to Text", + "speechToText": "Da voce a testo", "chooseFile": "Scegli file", "audioFormats25Mb": "MP3, WAV, M4A, OGG o FLAC · Massimo 25 MB", "musicSample": "Un brano ambient calmo con pianoforte caldo e archi morbidi", @@ -11225,7 +11232,7 @@ "imageSample": "Una città futuristica al tramonto, illuminazione cinematografica", "image": "Immagine", "ttsSample": "Ciao da OmniRoute. Questo è un test text-to-speech.", - "textToSpeech": "Text to Speech", + "textToSpeech": "Da testo a voce", "videoSample": "Un aeroplanino di carta che vola sopra una città futuristica", "video": "Video", "webFetch": "Recupero web", @@ -11250,73 +11257,73 @@ "stop": "Interrompi" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "Registrazione", + "paused": "In pausa", + "pipelineLogsOn": "Log della pipeline attivi", + "pipelineLogsOff": "Log della pipeline disattivati", + "updatingPipelineLogs": "Aggiornamento dei log della pipeline...", + "updatePipelineFailed": "Impossibile aggiornare i log della pipeline", + "capturePipeline": "Acquisisci i payload della pipeline per le nuove richieste", + "searchPlaceholder": "Cerca modelli, provider, account, chiavi API, combinazioni...", + "allProviders": "Tutti i provider", + "allModels": "Tutti i modelli", + "allAccounts": "Tutti gli account", + "allApiKeys": "Tutte le chiavi API", + "total": "Totale", + "ok": "Operazione riuscita", + "err": "Errore", + "combo": "Combinazione", + "keys": "Chiavi", + "shown": "Visualizzati", + "sortNewest": "Più recenti", + "sortOldest": "Meno recenti", + "sortTokensDesc": "Token ↓", + "sortTokensAsc": "Token ↑", + "sortDurationDesc": "Durata ↓", + "sortDurationAsc": "Durata ↑", + "sortStatusDesc": "Stato ↓", + "sortStatusAsc": "Stato ↑", + "sortModelAsc": "Modello A-Z", + "sortModelDesc": "Modello Z-A", + "sortLogs": "Ordina i log", + "refresh": "Aggiorna", + "columnsLabel": "Colonne", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "SU", + "semantic": "Semantica", + "upstream": "A monte", + "semanticCacheHit": "Hit della cache semantica (servito da OmniRoute)", + "upstreamResponse": "Risposta del provider upstream", + "noApiKey": "Nessuna chiave API", + "requestedRoutedTitle": "Richiesto {requested}, instradato come {routed}", "statusFilters": { - "all": "All", + "all": "Tutti", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Successo", + "combo": "Combinazione" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", + "status": "Stato", + "cacheSource": "Origine cache", + "model": "Modello", + "requested": "Richiesto", + "provider": "Fornitore", + "protocol": "Protocollo della richiesta", "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "apiKey": "Chiave API", + "combo": "Combinazione", + "tokens": "Token", "compressed": "Compressione", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Durata", + "time": "Ora", + "conversation": "Conversazione", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Caricamento dei log...", + "noLogs": "Non ci sono ancora log. Effettua alcune chiamate API per visualizzarle qui.", + "noMatchingLogs": "Nessun log corrisponde ai filtri correnti.", + "callLogsInfo": "I log delle chiamate vengono salvati anche come file JSON in {dataDir} e ruotati in base a {retentionDays} e {maxEntries}.", "loadMore": "Carica altro", "loadingMore": "Caricamento altro...", "correlationId": "ID di correlazione", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "L'articolo del payload dettagliato non è più disponibile per questa voce di log.", "payloadCorrupt": "L'artifact del payload dettagliato non può essere analizzato.", - "notAvailable": "N/A", + "notAvailable": "N/D", "semanticCache": "Semantico (OmniRoute)", "upstreamCache": "Upstream (Fornitore)", "ariaLabel": "Dettagli del registro delle richieste", @@ -11399,7 +11406,7 @@ "rotated": "Ruotato: {initial} -> {final}", "apiKey": "Chiave API", "noApiKey": "Nessuna chiave API", - "combo": "Combo", + "combo": "Combinazione", "error": "Errore", "unblockAll": "Sblocca tutto", "cleared": "Cancellato", @@ -11408,7 +11415,7 @@ "current": "attuale", "detailStatus": "Dettaglio Stato", "loadingDetails": "Caricamento dettagli della richiesta...", - "providerEventStream": "Provider Event Stream", + "providerEventStream": "Flusso di eventi del provider", "clientEventStream": "Stream di Eventi Clienti", "eventStream": "Flusso Di Eventi", "responsePayloadLegacy": "Payload Di Risposta (Legacy)", @@ -11417,59 +11424,59 @@ "correlationId": "ID di correlazione", "correlationIdValue": "ID di correlazione: {id}", "detailedPayloadInfo": "Abilita prima il logging dettagliato se desideri la visualizzazione del payload client/provider in quattro fasi per le nuove richieste.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Copia tutto", + "copiedAll": "Tutto copiato" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", + "filterAll": "Tutti", + "filterErrors": "Errori", + "filterSuccess": "Successo", "filterTimeout": "Timeout", - "colStatus": "Status", + "colStatus": "Stato", "colProxy": "Proxy", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "Tipo", + "colLevel": "Livello", + "colProvider": "Fornitore", + "colTarget": "Destinazione", + "colLatency": "Latenza", + "colClientIp": "IP client", + "colTime": "Ora", + "recording": "Registrazione", + "paused": "In pausa", + "searchPlaceholder": "Cerca host, provider, destinazione, IP...", + "allTypes": "Tutti i tipi", + "allLevels": "Tutti i livelli", + "allProviders": "Tutti i provider", + "total": "totale", "ok": "OK", "err": "ERR", "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "direct": "diretto", + "newest": "Più recenti", + "oldest": "Meno recenti", + "latencyDesc": "Latenza ↓", + "latencyAsc": "Latenza ↑", + "refresh": "Aggiorna", + "columns": "Colonne", + "loadingProxyLogs": "Caricamento dei log proxy...", + "noProxyLogs": "Non sono ancora presenti log proxy. Configura i proxy ed effettua chiamate API per visualizzarli qui.", + "noMatchingLogs": "Nessun log corrisponde ai filtri attuali.", + "tlsFingerprint": "Impronta TLS di Chrome 124", "colPublicIp": "IP pubblico" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", + "speech": "Voce", + "search": "Ricerca", + "images": "Immagini", "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "music": "Musica", + "responses": "Risposte", + "rerank": "Riordinamento", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Embedding", + "transcription": "Trascrizione" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Ambiente di esecuzione", + "description": "Osservabilità in tempo reale — resilienza a 3 livelli + sessioni + avvisi sulle quote", + "pause": "Metti in pausa", + "resume": "Riprendi", + "refreshNow": "Aggiorna ora", + "kpiSessions": "Sessioni", + "kpiCircuits": "Circuiti", + "kpiCooldowns": "Periodi di attesa", + "kpiLockouts": "Blocchi", + "hintStickyBound": "{count} con associazione persistente", + "hintRecovering": "{count} in ripristino", + "hintAllHealthy": "tutti operativi", + "hintOpen": "aperti", + "hintConnsCooling": "connessioni in attesa", + "hintModelsBlocked": "modelli bloccati", + "resilienceTitle": "Resilienza a 3 livelli", + "resilienceSubtitle": "Rispecchia il modello di resilienza documentato", + "providersHealthy": "{percent}% dei provider operativi", + "layer": "Livello {n}", + "layer1Title": "Interruttori automatici dei provider", + "layer1Desc": "Interrompe il traffico verso i provider che presentano errori a livello upstream", + "layer2Title": "Periodi di attesa delle connessioni", + "layer2Desc": "Ignora un account/una chiave non funzionante; le altre connessioni continuano a servire le richieste", + "layer3Title": "Blocchi dei modelli", + "layer3Desc": "Blocchi dei limiti di frequenza per modello; la stessa connessione continua a servire altri modelli", + "badgeAffectedOf": "{affected} su {total} interessati", + "badgeCooling": "{count} in attesa", + "badgeLocked": "{count} bloccati", + "emptyCircuits": "Nessun interruttore automatico attivo al momento", + "emptyCooldowns": "Nessuna connessione in attesa", + "emptyLockouts": "Nessun blocco dei modelli", + "moreCooldowns": "+ altri {count} periodi di attesa", + "moreLockouts": "+ altri {count} blocchi", + "feedTitle": "Feed in tempo reale", + "feedSubtitle": "Ultimi {count} eventi", + "feedFilterAll": "Tutti", + "feedFilterCircuits": "Circuiti", + "feedFilterCooldowns": "Periodi di attesa", + "feedFilterLockouts": "Blocchi", + "feedFilterSessions": "Sessioni", + "feedFilterQuotas": "Quote", + "feedClear": "Cancella", + "feedEmptyWaiting": "In attesa di eventi... (controllo ogni 5 s)", + "feedEmptyFiltered": "Nessun evento corrisponde a questo filtro", + "sessionsTitle": "Sessioni attive", + "sessionsSubtitle": "Impronte digitali delle richieste associate in modo persistente (in tempo reale)", + "sessionsActive": "{count} attive", + "sessionsEmptyTitle": "Nessuna sessione attiva", + "sessionsEmptyHint": "Le sessioni vengono visualizzate man mano che le richieste passano attraverso il proxy", + "tblSession": "Sessione", + "tblAge": "Età", + "tblIdle": "Inattività", + "tblReqs": "Richieste", + "tblBoundTo": "Associata a", + "topApiKeys": "Principali chiavi API", + "quotaMonitorsTitle": "Monitoraggio delle quote", + "quotaMonitorsSubtitle": "Stato in tempo reale delle quote per finestra dell'account", + "openQuota": "Apri quote", + "allQuotasHealthy": "Tutte le quote sono nella norma", + "statusExhausted": "ESAURITA", + "statusAlerting": "IN ALLERTA", + "statusError": "ERRORE", + "moreSuffix": "+ altre {count}" }, "quotaShare": { "weightPercent": "Peso %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Condivisione delle quote", + "description": "Condividi le quote dei provider tra le chiavi API con limiti percentuali", + "newPool": "Nuovo pool", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", + "betaDescription": "La configurazione viene salvata in localStorage (non è ancora memorizzata in modo persistente sul server). L'applicazione del limite per richiesta non è ancora integrata nella pipeline del proxy. Questa schermata consente di progettare e visualizzare la ripartizione delle quote; l'applicazione effettiva sarà disponibile in un'iterazione futura, con persistenza nel DB e intercettazione delle chiamate upstream.", + "kpiActivePools": "Pool attivi", + "kpiKeysAllocated": "Chiavi allocate", + "kpiAvgUnallocated": "Media non allocata", + "kpiProvidersWithQuota": "Provider con quota", + "emptyTitle": "Nessun pool configurato", + "emptyDescription": "Crea un pool per assegnare le chiavi API alla condivisione della finestra di quota di un provider con allocazioni percentuali.", + "loading": "Caricamento…", + "removePool": "Rimuovi pool", + "removeConfirm": "Rimuovere questo pool?", "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "used": "utilizzato", + "allocationsCount": "Allocazioni ({count})", + "allocatedFree": "{allocated}% allocato · {free}% libero", + "noAllocations": "Nessuna chiave ancora allocata", + "capLabel": "limite {value}", + "notTrackedYet": "(non ancora monitorato)", + "policy": "Criterio", "apiKeyColumn": "Chiave API", "weightColumn": "Peso", "fairShareShort": "equo", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "rigido", + "policySoft": "flessibile", + "policyBurst": "picco", + "policyHardHint": "Blocca quando la chiave esaurisce l'allocazione", + "policySoftHint": "Consenti il superamento, solo avviso", + "policyBurstHint": "Consenti picchi nel pool libero", + "editAllocations": "Modifica allocazioni", + "newPoolTitle": "Nuovo pool di quote", + "providerConnection": "Connessione al provider (account)", + "selectConnection": "Seleziona una connessione…", + "noEligibleConnections": "Nessuna connessione con dati sulle quote. Aggiorna prima da /dashboard/quota.", + "quotaWindow": "Finestra della quota", + "selectWindow": "Seleziona una finestra…", + "alreadyUsedSuffix": "(già utilizzata)", + "windowReset": "Reimposta", + "duplicatePoolError": "Esiste già un pool per questa connessione e finestra", + "cancel": "Annulla", + "createPool": "Crea pool", + "editTitle": "Modifica allocazioni", + "noKeysAdded": "Nessuna chiave allocata. Aggiungine una qui sotto.", + "totalLabel": "Totale: {percent}%", + "totalExceeded": "⚠ supera il 100%", + "addKey": "+ Aggiungi chiave…", + "equalSplit": "Suddivisione equa", + "save": "Salva allocazioni", "betaPreviewLabel": "Beta: anteprima dell'interfaccia utente.", "betaConfigSavedPrefix": "La configurazione viene salvata in", "betaConfigSavedSuffix": "(non ancora persistente sul server). L'applicazione del limite per richiesta non è ancora collegata alla pipeline del proxy. Questa schermata consente di progettare e visualizzare la ripartizione delle quote; l'attuazione reale avverrà in una futura iterazione con la persistenza del DB e l'intercettazione delle chiamate a monte.", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "URL di base", "endpointsCollapse": "Comprimi", "endpointsExpand": "Espandi", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic nativo", "endpointsResponsesNote": "Risposte OpenAI — codex/github", "endpointsWsNote": "WebSocket — solo codex", "betaText": "Quota Share è funzionale ma potrebbero esserci dei bug. Ne hai trovato uno? Segnalalo.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "Questo gruppo ha ancora dei pool — riassegnali o eliminali prima.", "ungroupedTitle": "Non raggruppati", "ungroupedHint": "Questi pool non sono assegnati a un gruppo noto. Modifica un pool per spostarlo in un gruppo reale.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Impossibile rimuovere questo pool.", + "dismiss": "Chiudi" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Plugin", + "description": "Installa e gestisci i plugin per estendere le funzionalità di OmniRoute", + "loading": "Caricamento dei plugin...", + "scanning": "Scansione...", + "scanForPlugins": "Cerca plugin", + "noPlugins": "Nessun plugin installato", + "noPluginsDescription": "Inserisci le directory dei plugin in ~/.omniroute/plugins/ e fai clic su Cerca.", + "activate": "Attiva", + "deactivate": "Disattiva", + "uninstall": "Disinstalla", + "uninstallConfirm": "Disinstallare il plugin \"{name}\"?", + "pluginScanComplete": "Scansione dei plugin completata", + "pluginScanFailed": "Scansione dei plugin non riuscita", + "activated": "{name} attivato", + "deactivated": "{name} disattivato", + "activateFailed": "Impossibile attivare {name}", + "deactivateFailed": "Impossibile disattivare {name}", + "uninstalled": "{name} disinstallato", + "uninstallFailed": "Impossibile disinstallare {name}", + "configure": "Configura: {name}", + "configurePlugin": "Configura", + "noConfigSettings": "Questo plugin non dispone di impostazioni configurabili.", + "saving": "Salvataggio...", + "saveConfiguration": "Salva configurazione", + "configurationSaved": "Configurazione salvata", + "saveConfigurationFailed": "Impossibile salvare la configurazione", + "pluginNotFound": "Plugin non trovato", + "version": "Versione", + "author": "Autore", + "description_label": "Descrizione", + "status": "Stato", + "enabled": "Attivato", + "disabled": "Disattivato", "installedTab": "Installato", "marketplaceTab": "Marketplace", "marketplaceUrlLabel": "URL del marketplace personalizzato", @@ -11729,7 +11736,7 @@ "verified": "Verificato", "install": "Installa", "installedFromMarketplace": "Plugin {name} installato!", - "hooks": "Hooks" + "hooks": "Hook" }, "quotaPlans": { "title": "Piani e quote", @@ -11984,7 +11991,7 @@ "activeProviders": "Provider attivi", "providerBreakdown": "Dettaglio provider", "providerCount": "{count} provider", - "provider": "Provider", + "provider": "Fornitore", "requests": "Richieste", "success": "Successo", "rate": "Tasso", @@ -12059,8 +12066,8 @@ "exportHar": "Esporta .har", "recordSession": "REC", "stopSession": "Interrompi", - "liveBadge": "live", - "offlineBadge": "offline", + "liveBadge": "in tempo reale", + "offlineBadge": "non in linea", "noRequests": "Nessuna richiesta ancora acquisita.", "noRequestsDesc": "Assicurati che AgentBridge sia in esecuzione o abilita un'altra modalità di acquisizione.", "selectRequest": "Seleziona una richiesta per esaminarla.", @@ -12091,7 +12098,7 @@ "llmApiKind": "Tipo di API", "llmModel": "Modello", "llmMessages": "Messaggi", - "llmStream": "Stream", + "llmStream": "Flusso", "llmMappedTo": "Mappato su", "llmCostEstimate": "Stima dei costi", "systemProxyExitWarning": "Proxy a livello di sistema ancora attivo — uscire comunque dalla pagina?", @@ -12102,7 +12109,7 @@ "httpProxyTitle": "Snippet proxy HTTP — porta {port}", "notRecording": "Non in registrazione", "anyStatus": "Qualsiasi stato", - "liveOnly": "Live", + "liveOnly": "In tempo reale", "viewingRecordedSession": "Visualizzazione sessione registrata", "backToLive": "Torna a Live", "untitledSession": "Sessione senza titolo", @@ -12121,7 +12128,7 @@ "timingUpstreamResponse": "Risposta upstream", "timingNoData": "Nessun dato di temporizzazione disponibile.", "timingTotalLatency": "Latenza totale", - "timingTimestamp": "Timestamp", + "timingTimestamp": "Marca temporale", "timingMethod": "Metodo", "timingStatus": "Stato", "timingRequestSize": "Dimensione richiesta", @@ -12160,7 +12167,7 @@ "noRequestBody": "Nessun corpo della richiesta.", "noResponseBody": "Nessun corpo della risposta.", "formatted": "Formattato", - "raw": "Raw" + "raw": "Grezzo" }, "cliCommon": { "concept": { @@ -12179,7 +12186,7 @@ "acp": { "title": "Agenti ACP", "phrase": "CLI che OmniRoute avvia come backend di esecuzione (flusso inverso)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "La maggior parte degli utenti può ignorare questa opzione: utilizzala solo quando richiesta da un'integrazione.", "flow": "Client → OmniRoute → avvio CLI (stdio/ACP) → risposta", "seeOther": "Vedi →" } @@ -12242,7 +12249,7 @@ } }, "cliCode": { - "pageTitle": "CLI Code's", + "pageTitle": "Codice della CLI", "pageSubtitle": "Strumenti di codice che puntano a OmniRoute", "searchPlaceholder": "Cerca CLI…", "filterDetectionLabel": "Rilevamento", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhook", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Registra, elenca, verifica e rimuovi gli endpoint webhook. Configura le sottoscrizioni agli eventi (request.completed, request.failed, quota.exceeded, ecc.) e gestisci i nuovi tentativi di consegna." }, "omni-mcp": { "name": "Server MCP", @@ -12390,11 +12397,11 @@ "description": "Gli endpoint di inferenza principali compatibili con OpenAI: chat completions, embeddings, immagini, audio (TTS/STT), moderazioni, rerank e l'API Responses. La superficie di integrazione principale per gli agenti IA." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Avvia server", "description": "Avvia, arresta e riavvia il server OmniRoute dalla CLI. Gestisci la modalità daemon, la configurazione delle porte, il ripristino automatico, l'integrazione con la barra delle applicazioni e la scorciatoia per aprire la dashboard." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Stato di integrità", "description": "Controlla lo stato di salute del server, lo stato dei componenti e le metriche in tempo reale dalla CLI. Esegui `health`, `health components` e `health watch` per una dashboard in tempo reale dei circuit breaker e dello stato dei provider." }, "cli-providers": { @@ -12470,7 +12477,7 @@ "description": "Esegui la configurazione iniziale, configura le impostazioni globali della CLI, gestisci le variabili d'ambiente, verifica la presenza di aggiornamenti e configura l'avvio automatico tramite i comandi di setup e configurazione della CLI." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI: Raccolta competenze dell'agente", "description": "Rileva gli strumenti di codifica CLI installati (Claude Code, Codex, Cursor, Copilot, Cline e altri), cerca su GitHub le skill dell'agente corrispondenti e installale negli strumenti rilevati tramite le API integrate di OmniRoute." }, "config-codex-cli": { @@ -12519,7 +12526,7 @@ "omni": "SQLite (SkillsMP / skills.sh / locale)" }, "tagline": { - "label": "Tagline", + "label": "Slogan", "agent": "Insegna al tuo agente a usare OmniRoute", "omni": "Fornisci strumenti eseguibili ai modelli OmniRoute" } @@ -12532,7 +12539,7 @@ }, "categoryApi": "API", "categoryCli": "CLI", - "categoryConfig": "Config", + "categoryConfig": "Configurazione", "filterAll": "Tutto", "coverageLabel": "Copertura", "mcpUrl": "URL MCP", @@ -12568,9 +12575,9 @@ "categoryCoding": "Programmazione", "categoryReview": "Revisione", "categoryDocumentation": "Documentazione", - "categoryDebugging": "Debugging", + "categoryDebugging": "Debug", "colRank": "Posizione", - "colProvider": "Provider", + "colProvider": "Fornitore", "colTopModel": "Modello migliore", "colScore": "Punteggio", "colAvgScore": "Punteggio medio", @@ -12589,17 +12596,17 @@ "typeApikey": "Chiave API", "sortTypeFirst": "Più semplice prima", "sortTypeFirstHelp": "Raggruppa per sforzo di registrazione (Nessuna registrazione → Accesso OAuth → Chiave API), mantenendo l'ordine di qualità all'interno di ciascun gruppo", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Prima i più affidabili", + "sortByReliabilityHelp": "Ordina i provider in base alla percentuale di chiamate riuscite nell'intervallo selezionato. I provider con un numero di chiamate insufficiente per determinare una percentuale mantengono l'ordine del proprio punteggio, al di sotto di quelli misurati.", "typeLegend": "Nessuna registrazione = zero configurazione · Accesso OAuth = accedi con il tuo account · Chiave API = usa la tua chiave o il piano gratuito di quel provider", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Affidabilità", + "colReliabilityHelp": "Percentuale di chiamate a cui questo provider ha effettivamente risposto nelle ultime 24 ore. Un trattino indica che ha gestito un traffico insufficiente per determinare una percentuale.", + "reliabilitySample": "{successes} chiamate su {requests} sono riuscite nelle ultime {hours} ore", + "reliabilityTooFew": "Solo {requests} chiamate nelle ultime {hours} ore: troppo poche per determinare una percentuale", + "reliabilityNoTraffic": "Nessuna chiamata registrata nelle ultime 24 ore" }, "discovery": { - "title": "Provider Discovery", + "title": "Individuazione dei provider", "subtitle": "Scansiona i provider per metodi di accesso gratuiti/illimitati e rivedi i risultati. Opt-in, solo locale.", "scanLabel": "Provider da scansionare", "scanPlaceholder": "es. huggingchat", @@ -12619,7 +12626,7 @@ "emptyDescription": "Esegui una scansione qui sopra per cercare metodi di accesso gratuiti su un provider.", "risk": "Rischio", "method": "Metodo", - "auth": "Auth", + "auth": "Autenticazione", "feasibility": "Fattibilità", "models": "Modelli" }, @@ -12692,7 +12699,7 @@ "platinum": "Platino", "diamond": "Diamante" }, - "tierLabel": "Tier: {tier}", + "tierLabel": "Livello: {tier}", "dayStreak": "Serie di {count} giorni", "levelProgress": "Livello {current} → {next}", "totalXpEarned": "{count} XP totali guadagnati", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Sostenitore di Radar", + "description": "Verificato un feed attivo di un sostenitore di OmniRoute Radar", + "criteria": "Verifica un feed attivo firmato di un sostenitore di Radar." }, "first-token": { "name": "Primo Token", @@ -12846,7 +12853,7 @@ "security": "Sicurezza", "network": "Rete", "policies": "Policy", - "runtime": "Runtime", + "runtime": "Ambiente di esecuzione", "cli": "CLI", "health": "Salute", "requiresRestart": "Richiede il riavvio" @@ -12880,12 +12887,12 @@ "resetting": "Ripristino in corso...", "confirmReset": "Conferma ripristino", "enumValues": { - "off": "Off", + "off": "Disattivato", "warn": "Avvisa", "block": "Blocca", "redact": "Oscura", "disabled": "Disabilitato", - "dual": "Dual", + "dual": "Doppio", "alias": "Alias", "canonical": "Canonico" }, @@ -12948,8 +12955,8 @@ "description": "Consenti connessioni multiple per ciascun nodo di compatibilità." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Disabilita i controlli della finestra di contesto", + "description": "Ignora il controllo locale di OmniRoute sulla finestra di contesto e sul numero massimo di token di input per le richieste dirette a un singolo modello. I provider upstream continuano ad applicare i propri limiti effettivi. La compressione dei prompt e i limiti dei token di output rimangono attivi." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Rimuovi gli elementi di output interni della fase di commento dai flussi passthrough dell'API Responses prima di inoltrarli ai client. Disabilita questo flag per ricevere i commenti upstream non elaborati." @@ -12985,7 +12992,7 @@ "description": "Consenti al ripristino del flusso di richiedere nuovamente la risposta e ricongiungerla dopo che i byte hanno già raggiunto il client." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Rendi sicura la continuazione a metà flusso dopo una chiamata a uno strumento: non riprendere mai un flusso interrotto dopo l'invio di una chiamata a uno strumento (ancora in corso o già terminata) e interrompi dopo una continuazione vuota anziché utilizzare l'intero numero di tentativi disponibili." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Esegui un solo failover verso una connessione sorella quando uno stream si chiude prima di emettere qualsiasi frame utile e il nuovo tentativo limitato sulla stessa connessione è esaurito. Senza una connessione sorella utilizzabile viene restituito l'errore early-EOF originale. Disattivato: early-EOF resta terminale dopo il nuovo tentativo." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Abilita l'accesso alla rete nella sandbox delle skill." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Ciclo degli strumenti gestito dal server", + "description": "Continua le chiamate non in streaming agli strumenti gestiti dal server finché il modello non restituisce una risposta utilizzabile dal client." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Provenienza di Retry-After", + "description": "Nelle risposte aggregate 429/503 di indisponibilità, ometti Retry-After quando non è noto un momento futuro concreto per un nuovo tentativo, anziché inviare un valore sintetico di 1 s; aggiungi error.retry_after_provenance e leggi i suggerimenti testuali per i nuovi tentativi nei percorsi di svuotamento delle combo." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Arresti dell'infrastruttura con priorità protetta come 502", + "description": "Rispondi con 502 anziché 503 quando una destinazione prioritaria con fallback basato esclusivamente sulla quota interrompe la combo per una causa dimostrabilmente non correlata alla quota: un circuit breaker del provider aperto o un'esclusione predittiva dovuta alla latenza." } } }, @@ -13108,14 +13119,14 @@ "comboHealth": "Integrità combo", "callLogs": "Log delle chiamate", "costs": "Costi", - "playground": "Playground", + "playground": "Area di prova", "nestedCombo": "Combo nidificata", "modelTarget": "Target del modello", "weight": "Peso {value}%", "comboReference": "Riferimento combo", "accountShort": "account {id}", "keyShort": "chiave {id}", - "stepShort": "step {id}", + "stepShort": "passaggio {id}", "dynamic": "dinamico", "unknown": "sconosciuto", "unknownProvider": "provider sconosciuto", @@ -13171,9 +13182,9 @@ "segmentHint": "Ogni segmento = un pool gratuito · pool deduplicato, conteggio onesto (nessun limite massimo di rate-limit gonfiato).", "boost": "Sblocca ~{tokens} in più al mese con una ricarica una tantum di $10 su OpenRouter (50 → 1000 rich/giorno)", "uncapped": "Permanentemente gratuito, nessun limite pubblicato (soggetto a rate-limit) — accesso reale, non conteggiato nel titolo:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/mese in più subordinati a un controllo regionale dell'identità (ad es. verifica del nome reale nella Cina continentale) — quota effettiva, non inclusa nel valore principale:", "tosRestricted": "{count, plural, one {# modello contrassegnato come limitato dai ToS} other {# modelli contrassegnati come limitati dai ToS}} — decidi tu", - "provider": "Provider", + "provider": "Fornitore", "model": "Modello", "modelName": "Nome modello", "type": "Tipo", @@ -13224,7 +13235,7 @@ "down": "non disponibile" }, "severity": { - "info": "info", + "info": "informazioni", "warning": "avviso", "critical": "critico" }, @@ -13260,7 +13271,7 @@ }, "changelogPage": { "newsTab": "Novità", - "changelogTab": "Changelog", + "changelogTab": "Registro delle modifiche", "loading": "Caricamento del changelog...", "announcementsLoadFailed": "Impossibile caricare gli annunci. Riprova più tardi.", "noAnnouncements": "Nessun nuovo annuncio al momento.", @@ -13270,80 +13281,80 @@ "viewFullHistory": "Visualizza la cronologia completa su GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "Criteri di routing del ragionamento", + "apiKeyTitle": "Routing del ragionamento per questa chiave API", + "subtitle": "Reindirizza i modelli e il livello di ragionamento senza richiedere il supporto del client. Le richieste rimangono invariate quando nessuna regola corrisponde.", + "loadError": "Impossibile caricare le regole di ragionamento.", + "saveError": "La regola non è valida o non è stato possibile salvarla.", + "saved": "Regola di ragionamento salvata.", + "deleteConfirm": "Eliminare questa regola di ragionamento?", + "deleteError": "Impossibile eliminare la regola di ragionamento.", + "empty": "Nessuna regola di ragionamento corrispondente configurata.", + "all": "Tutti", + "any": "Qualsiasi", + "enabled": "Abilitato", + "disabled": "Disabilitato", + "filterSearch": "Cerca regole", + "filterScope": "Filtra per ambito", + "filterStatus": "Filtra per stato", + "allModels": "tutti i modelli", + "keepModel": "Mantieni il modello", + "otherModel": "Altro modello", + "combo": "Combinazione", + "priorityShort": "priorità {value}", + "toggleAria": "Abilita {name}", + "edit": "Modifica", + "delete": "Elimina", + "name": "Nome", + "description": "Descrizione", + "scopeLabel": "Ambito", + "apiKey": "Chiave API", + "sourceCombo": "Combinazione di origine", + "connection": "Connessione", + "sourceModel": "Modello di origine o carattere jolly", + "sourceModelOptional": "Vuoto = tutti i modelli", + "sourceModelExample": "es. gpt-5*", + "sourceEffort": "Livello di elaborazione di origine", + "missing": "Non specificato", + "signalOnly": "Segnale di ragionamento non discreto", + "requestTags": "Tag della richiesta", + "requestTagsExample": "programmazione, interno", + "tagMode": "Corrispondenza dei tag", + "effortMode": "Modalità di elaborazione", + "targetEffort": "Livello di elaborazione di destinazione", + "routingTarget": "Destinazione dell'instradamento", + "targetModel": "Modello di destinazione", + "targetCombo": "Combinazione di destinazione", + "budgetAction": "Budget di ragionamento", + "budgetTokens": "Token del budget", + "priority": "Priorità", + "saveChanges": "Salva modifiche", + "add": "Aggiungi regola", + "cancel": "Annulla", + "simulateTitle": "Simula regola", + "model": "Modello", + "effort": "Livello di elaborazione", + "transport": "Trasporto", + "simulate": "Simula senza upstream", + "extendedComboWarning": "Max/Ultra viene convalidato separatamente per ogni destinazione della combinazione durante l'instradamento.", + "extendedUnknownWarning": "Inserisci un modello di destinazione per verificare il supporto di Max/Ultra.", + "extendedUnsupportedWarning": "È noto che Max/Ultra sia supportato solo dai modelli Codex GPT-5.6 idonei. I modelli personalizzati sconosciuti vengono accettati dal server con un avviso.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "Globale", + "apiKey": "Chiave API", + "combo": "Combinazione", + "model": "Modello", + "connection": "Connessione" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Eredita dal client", + "default": "Usa valore predefinito", + "force": "Forza" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Mantieni", + "remove": "Rimuovi", + "set": "Imposta un valore fisso" } }, "chaosConfig": { @@ -13362,7 +13373,7 @@ "systemPromptDesc": "Istruzioni personalizzate per tutte le istanze di modello in modalità chaos", "providerOverrides": "Override dei provider", "providerOverridesDesc": "Seleziona modelli specifici per provider per la modalità chaos", - "providerId": "Provider", + "providerId": "Fornitore", "modelId": "Modello", "addProvider": "Aggiungi provider", "removeProvider": "Rimuovi", @@ -13382,8 +13393,8 @@ "maxTokensDesc": "Numero massimo di token per risposta del modello. Valori più alti costano di più e richiedono più tempo.", "providerIdPlaceholder": "ID provider (digita o seleziona)", "modelIdPlaceholder": "ID modello (opzionale)", - "on": "ON", - "off": "OFF", + "on": "ATTIVO", + "off": "DISATTIVATO", "availableProviders": "Provider disponibili ({count})", "noProviderOverrides": "Nessun override — tutti i provider attivi parteciperanno con i loro modelli predefiniti", "resetFailed": "Ripristino non riuscito", @@ -13424,92 +13435,92 @@ "tierLive": "Live (in tempo reale)", "tierCommunity": "Comunità (ritardo di 30 giorni)", "activateTitle": "Attiva Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Confronta l'accesso Community con quello in tempo reale, scopri quali dati scambia la tua installazione e scegli come attivare Radar.", + "accessScaleTitle": "Informati sull'accesso a Radar prima di attivarlo", + "accessScaleIntro": "Radar non genera alcun traffico di rete finché non dai il tuo consenso. Scegli l'accesso Community oppure attiva una chiave sostenitore personale dopo aver esaminato queste regole.", + "accessCommunityRule": "Community — nessuna chiave richiesta: il catalogo completo con un ritardo di 30 giorni.", + "accessSingleUseRule": "Stella + follow — dopo che GitHub OAuth ha verificato entrambe le azioni, il tuo account GitHub riceve un accesso in lettura al catalogo in tempo reale; successivamente, l'accesso torna a Community. Questo accesso una tantum non può essere concesso nuovamente a tale account.", + "accessContributorRule": "Contributori — le PR unite, i commit e le righe determinano soltanto l'ordine della classifica settimanale. I primi 10 ricevono 365 giorni; le posizioni dall'11 alla 100 ricevono 90 giorni; i contributori fuori dai primi 100 non ricevono alcuna concessione, indipendentemente dal numero di PR. L'uscita dalla classifica non riduce mai il periodo già concesso.", + "accessSupporterRule": "Sostenitori — gli acquisti una tantum concedono 6 mesi, 1 anno o l'accesso a vita, senza rinnovo automatico. Acquisti, donazioni, periodi da contributore e concessioni manuali si sommano; l'accesso a vita ha sempre la precedenza.", + "accessUseTitle": "Uso personale, recupero e revisione", + "accessInstallationRule": "Licenza personale — usa la chiave su una sola installazione attiva alla volta. OmniRoute non rileva l'impronta digitale dell'hardware. Il recupero revoca e sostituisce una chiave smarrita senza reimpostarne la scadenza.", + "accessAbuseRule": "Revisione per abuso — il 4° indirizzo IP distinto nell'arco di 24 ore genera soltanto una segnalazione per la revisione manuale; non blocca né revoca mai automaticamente una chiave.", + "accessOffersRule": "Le offerte in tempo reale sono curate manualmente e possono cambiare o scadere.", + "privacyTitle": "Dati scambiati da Radar", + "privacyDownloadsRule": "Download — la tua installazione riceve il catalogo e i metadati di referral firmati crittograficamente; una chiave valida per l'accesso in tempo reale sblocca anche offerte firmate e Intel.", + "privacySendsRule": "Invii — la sincronizzazione lato server invia la chiave sostenitore come token Bearer e l'infrastruttura HTTPS riceve l'indirizzo IP della connessione. La contabilizzazione delle richieste del feed non archivia nessuno dei due valori in forma grezza: conserva gli hash delle chiavi, i dati di utilizzo aggregati e un HMAC IP troncato con rotazione giornaliera per la revisione degli abusi.", + "privacyNeverRule": "Mai raccolti — prompt, risposte, conversazioni, credenziali dei provider, traffico dei modelli, tempo di attività, latenza e configurazione locale dei provider non vengono mai inviati a Radar.", + "activateButton": "Attiva Community", "activating": "Attivazione in corso...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Hai già una chiave sostenitore?", + "keyInvalidFormatError": "Formato della chiave non valido. Deve iniziare con \"omr_\" seguito da 40 caratteri esadecimali.", + "activateWithKeyButton": "Attiva l'accesso sostenitore", + "changeKeyButton": "Cambia chiave", + "claimSectionTitle": "Non hai ancora una chiave sostenitore?", + "contributorButton": "Sono un contributore", + "contributorHint": "GitHub OAuth verifica la classifica settimanale corrente: i primi 10 ottengono 365 giorni e le posizioni dall'11ª alla 100ª ottengono 90 giorni. Il solo numero di PR non garantisce mai l'accesso al di fuori dei primi 100.", + "supporterButton": "Sostieni il progetto", + "supporterHint": "Le opzioni una tantum di 6 mesi, 1 anno e a vita non prevedono rinnovo automatico; i periodi idonei si accumulano e l'opzione a vita prevale.", "colProvider": "Fornitore", "colModel": "Modello", "colQuota": "Quota", + "colLimits": "Limiti di frequenza", + "trainsOnPrompts": "Addestramento sui prompt", + "trainsOnPromptsHelp": "I termini di questo provider dichiarano che potrebbe addestrare i modelli sui prompt inviati. I modelli senza questo badge dichiarano di non farlo oppure non forniscono informazioni al riguardo: l'assenza di una dichiarazione non costituisce una garanzia.", + "limitsUnknownHelp": "Limiti riportati solo dal feed di Radar; nessun limite pubblicato per questa voce", + "contextUnknownHelp": "Finestra di contesto sconosciuta per questa voce", + "capabilityUnknownHelp": "Funzionalità non riportata dal feed", "colContext": "Contesto", "colCapabilities": "Capacità", "colTos": "Rischio ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "nuovo", "setupGuide": "Guida alla configurazione", "disabledByFeed": "Disabilitato dal feed Radar", "capTools": "Strumenti", "capVision": "Visione", "capThinking": "Pensiero", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Catalogo", + "freeCreditsTab": "Crediti gratuiti", + "freeCreditsSubtitle": "Link di referral dei provider monitorati da Radar: utilizzarli non comporta alcun costo aggiuntivo e aiuta a sostenere OmniRoute.", + "fixedLinksEmpty": "Non sono ancora disponibili link di referral. Sincronizza Radar per verificare la presenza di aggiornamenti.", + "requiredActionLabel": "Cosa fare:", + "claimButton": "Riscatta i crediti", + "campaignsTitle": "Campagne a tempo limitato", + "campaignsEmpty": "Al momento non ci sono campagne attive: ricontrolla più tardi.", + "campaignsUpsellCommunity": "Le campagne a tempo limitato sono un vantaggio extra per i sostenitori. Tutti i link fissi presenti in questa pagina restano gratuiti per tutti.", + "campaignsValidUntil": "Valido fino al {date}", + "colActions": "Azioni", + "localBadge": "locale", + "editModel": "Modifica", + "saveModel": "Salva", + "cancelEdit": "Annulla", + "resetModel": "Reimposta le modifiche locali", + "hideModel": "Nascondi", + "restoreModel": "Ripristina", + "hiddenModelsTitle": "Modelli nascosti", + "modelDisplayName": "Nome visualizzato locale", + "modelEnabled": "Abilitato localmente", + "localStateSaveFailed": "Impossibile salvare le impostazioni locali di Radar", + "guidedCombos": "Combinazioni guidate", + "offers": "Offerte", + "intel": "Informazioni" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Combinazioni guidate di Radar", + "subtitle": "Crea fallback prioritari a partire da modelli gratuiti equivalenti selezionati da Radar.", + "backToRadar": "Torna a Radar", + "loading": "Caricamento dei suggerimenti per le combinazioni...", + "familyLabel": "Famiglia di modelli", + "modelsLabel": "Ordine di priorità", + "strategyReason": "La priorità utilizza prima il budget gratuito ricorrente più elevato, quindi passa agli altri provider attivi.", + "generateButton": "Genera combinazione", + "generating": "Generazione in corso...", + "alreadyCreated": "Già creata", + "created": "Combinazione creata", + "noSuggestions": "Al momento, nessuna famiglia di modelli idonea dispone di connessioni attive ad almeno due provider.", + "catalogRequired": "Sincronizza prima il catalogo Radar per caricare le famiglie di modelli selezionate.", + "loadFailed": "Impossibile caricare i suggerimenti di combinazioni di Radar.", + "createFailed": "Impossibile creare la combinazione. Controlla le connessioni ai provider e riprova." }, "radarSetupPage": { "title": "Configurazione del fornitore", @@ -13538,24 +13549,24 @@ }, "resilienceConnections": { "title": "Resilienza della Connessione", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Le tue connessioni vengono ripristinate automaticamente", + "reassuranceDetail": "Di solito non è necessario intervenire. OmniRoute sospende temporaneamente una connessione dopo alcuni errori, quindi la riprova in modo sicuro.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Le richieste possono essere inviate", + "coolingDown": "Nuovo tentativo a breve", + "lockedOut": "Richiede la tua attenzione" }, "table": { "status": "Stato", - "provider": "Provider", + "provider": "Fornitore", "connectionId": "Connessione", "authType": "Autenticazione", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "backoffLevel": "Attesa progressiva", + "cooldown": "Pausa", "lastError": "Ultimo Errore", "lockouts": "Blocchi", "healthy": "In Salute", - "coolingDown": "Cooldown", + "coolingDown": "Pausa", "circuitOpen": "Circuito Aperto", "recovering": "In Recupero", "degraded": "Degradato", @@ -13566,9 +13577,9 @@ "timeline": { "title": "Transizioni dell'Interruttore", "window": "Finestra", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 h", + "window6h": "6 h", + "window24h": "24 h", "empty": "Nessuna transizione nella finestra selezionata", "currentState": "Stato Attuale", "state": { @@ -13589,7 +13600,7 @@ "detail": { "title": "Dettaglio Connessione", "metadata": "Metadati", - "cooldown": "Cooldown", + "cooldown": "Pausa", "lastError": "Ultimo Errore", "breaker": "Interruttore", "lockouts": "Blocchi Modello", @@ -13597,7 +13608,7 @@ "backoffLevel": "Livello Backoff", "remaining": "Rimanente", "noLockouts": "Nessun blocco attivo", - "provider": "Provider", + "provider": "Fornitore", "id": "ID", "authType": "Tipo di Autenticazione", "priority": "Priorità", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Rifiuta le richieste prima della spedizione quando il modello di destinazione manca delle capacità richieste (visione, strumenti, output strutturato, finestra di contesto). Protegge le richieste dirette a singolo fornitore che bypassano il filtro di compatibilità del livello combinato.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Ignora il controllo locale di OmniRoute sulla finestra di contesto e sul numero massimo di token di input per le richieste dirette a un singolo modello. I provider upstream applicano comunque i propri limiti effettivi. La compressione dei prompt e i limiti dei token di output rimangono attivi.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Le statistiche di ricerca e le ricerche recenti conteggiano solo i fornitori che dispongono ancora di una connessione attiva (i fornitori senza chiave, come duckduckgo-free, vengono sempre conteggiati). Se l'opzione è disattivata, vengono mantenute tutte le righe di ricerca conservate con un ID fornitore.", "publicSystem": { "notFound": { "title": "Pagina non trovata", @@ -13699,12 +13710,12 @@ "maintenanceInfo": "Informazioni di Manutenzione", "service": "Servizio", "unknown": "sconosciuto", - "notAvailable": "n/a", + "notAvailable": "n/d", "providersTracked": "Fornitori Tracciati", "circuitBreakerState": "Stato del Circuit Breaker del Provider", "lastUpdate": "Ultimo aggiornamento: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes} min", + "uptimeHoursMinutes": "{hours} h {minutes} min" }, "statusPages": { "400": { @@ -13762,7 +13773,7 @@ "secondaryAction": "Apri i Log" }, "502": { - "title": "Bad Gateway", + "title": "Gateway non valido", "description": "Il fornitore upstream o l'integrazione del gateway ha restituito una risposta non valida.", "suggestion1": "Riprova con un altro fornitore o una rotta combo attiva.", "suggestion2": "Controlla le credenziali del fornitore e la disponibilità del modello.", @@ -13876,7 +13887,7 @@ } }, "providerTest": { - "dialogLabel": "Test {provider}", + "dialogLabel": "Testa {provider}", "deprecated": "deprecato", "risk": "rischio", "close": "Chiudi", @@ -13900,7 +13911,7 @@ "refresh": "Aggiorna", "unknownRequester": "richiedente sconosciuto", "fields": { - "timestamp": "Timestamp", + "timestamp": "Data e ora", "status": "Stato", "duration": "Durata", "model": "Modello", @@ -13947,18 +13958,18 @@ "tokens": "Token", "active": "Attivo", "other": "Altro", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "ora", "day": "giorno", "unknownModel": "sconosciuto", "pending": "in attesa" }, "metadata": { - "compressionTitle": "Compression", + "compressionTitle": "Compressione", "compressionDescription": "Configura le impostazioni di compressione del contesto per ridurre l'uso dei token e i costi.", "relayTitle": "OmniRoute — Proxy di Relay", "relayDescription": "Endpoint del proxy relay serverless per la tua infrastruttura AI", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Analisi del traffico — OmniRoute", "trafficInspectorDescription": "Monitora le chiamate LLM + esegui il debug del traffico HTTPS di qualsiasi applicazione" }, "conductor": { @@ -13967,7 +13978,7 @@ "runners": "Corridori", "tasks": "Attività", "colName": "Nome", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "Stato", "colTask": "Compito", "colMode": "Modalità", @@ -14015,7 +14026,7 @@ "title": "Orchestrazione", "description": "Tutto ciò che OmniRoute sta eseguendo in questo momento — agenti, flotta e routing", "tabAgents": "Agenti", - "tabRouting": "Routing", + "tabRouting": "Instradamento", "tabOverview": "Panoramica", "tabHistory": "Cronologia", "historyEmpty": "Nessuna esecuzione completata in questo intervallo", @@ -14070,11 +14081,11 @@ "actionApprove": "Approva piano", "actionCancel": "Annulla", "actionSeeInGraph": "Visualizza nel grafico", + "actionRepeat": "Ripeti", "actionDone": "Azione applicata", "actionFailed": "Azione non riuscita: {error}", "detailFailed": "Impossibile caricare i dettagli: {error}", "mirroredInA2A": "Rispecchiato in A2A", - "actionRepeat": "Ripeti", "repeatConfirm": "Clicca di nuovo per confermare", "repeatDone": "Nuova esecuzione creata", "repeatUnavailable": "Input originale non disponibile" @@ -14088,57 +14099,57 @@ "networkError": "Errore di rete — impossibile aggiornare l'impostazione di esposizione del provider" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", + "title": "Offerte per i sostenitori", + "subtitle": "Sconti ufficiali, crediti, periodi di prova e vantaggi dei partner verificati da Radar.", + "backToRadar": "Torna a Radar", + "loading": "Caricamento delle offerte...", + "refresh": "Aggiorna le offerte", + "refreshing": "Aggiornamento...", + "loadFailed": "Non è stato possibile aggiornare le offerte. È stata mantenuta l'ultima cache locale verificata.", + "empty": "Al momento non sono disponibili offerte attive.", + "keyRequiredTitle": "È necessaria una chiave sostenitore", + "keyRequiredDescription": "Le offerte sono un vantaggio Radar aggiornato in tempo reale. Aggiungi una chiave sostenitore esistente nella schermata Radar, verifica il tuo stato di contributore oppure sostieni il progetto per ottenerne una.", + "contributorButton": "Sono un contributore", + "supporterButton": "Sostieni il progetto", "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "officialBadge": "Ufficiale", + "conditionsLabel": "Condizioni:", + "validUntil": "Valida fino al {date}", + "noExpiry": "Nessuna scadenza annunciata", + "openOffer": "Visualizza l'offerta", + "trialDays": "{days, plural, one {# giorno} other {# giorni}}" }, "radarIntelPage": { "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "subtitle": "Classifiche ELO proprietarie di Radar e variazioni oggettive del catalogo.", + "backToRadar": "Torna a Radar", + "loading": "Caricamento di Intel...", + "refresh": "Aggiorna Intel", + "syncing": "Aggiornamento...", + "loadFailed": "Non è stato possibile aggiornare Intel. È stata mantenuta l'ultima cache locale verificata.", + "empty": "Non è ancora disponibile alcuna istantanea Intel verificata.", + "supporterBadge": "Sostenitore di Radar", + "methodology": "Metodologia", + "eloMethod": "ELO, iniziale {initial}, K={factor}", + "freshness": "Aggiornamento del catalogo", + "ageDays": "{days, plural, one {vecchio di # giorno} other {vecchio di # giorni}}", + "trend": "Tendenza del catalogo", + "modelDelta": "{current} modelli, +{added} / -{removed}", + "ranking": "Classifica dei modelli", + "noRankings": "Non sono ancora disponibili confronti confermati.", + "model": "Modello", + "category": "Categoria", + "rating": "Valutazione", + "matches": "Corrispondenze", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Recente", + "aging": "Invecchiato", + "stale": "Obsoleto" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "In crescita", + "stable": "Stabile", + "shrinking": "In calo" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "La richiesta supera la finestra di contesto del fornitore" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference è un amico open source di OmniRoute", + "description": "Un gateway classificato per costo che rivende decine di modelli all'avanguardia tramite un unico endpoint compatibile con OpenAI, instradando ogni richiesta al provider idoneo più economico, senza mai superare il prezzo di listino.", + "cta": "Ottieni una chiave API", + "partnerLinkNote": "Link del partner", + "dismissAriaLabel": "Ignora" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disabilita la generazione delle varianti del livello di ragionamento (ad es. -low, -medium, -high) nel catalogo /v1/models." } diff --git a/src/i18n/messages/ja.json b/src/i18n/messages/ja.json index 9c888b1654..edad2e2f6b 100644 --- a/src/i18n/messages/ja.json +++ b/src/i18n/messages/ja.json @@ -31,7 +31,7 @@ "active": "アクティブ", "inactive": "非アクティブ", "noData": "利用可能なデータがありません", - "nothingHere": "Nothing here yet", + "nothingHere": "まだ何もありません", "configure": "設定する", "manualConfig": "手動設定", "manage": "管理する", @@ -47,7 +47,7 @@ "time": "時間", "details": "詳細", "created": "作成されました", - "lastUsed": "Last Refreshed", + "lastUsed": "最終更新日時", "loadMore": "もっと読み込む", "noResults": "結果が見つかりませんでした", "reloadPage": "ページをリロードする", @@ -64,14 +64,14 @@ "none": "なし", "yes": "はい", "no": "いいえ", - "on": "ON", - "off": "OFF", + "on": "オン", + "off": "オフ", "warning": "警告", "note": "注記", "free": "無料", "skipToContent": "コンテンツにスキップ", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "サーバーで問題が発生しています。一部の機能が利用できない可能性があります。", + "maintenanceServerUnreachable": "サーバーに接続できません。再接続しています...", "accept": "accept", "accountId": "accountId", "alias": "alias", @@ -150,9 +150,9 @@ "Failed to reset pricing": "価格設定のリセットに失敗しました", "apikey": "APIキー", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "ダッシュボードへ移動", + "checkSystemStatus": "システムステータスを確認", + "selectModel": "モデルを選択", "addModel": "モデルを追加", "effortNone": "なし", "effortLow": "低", @@ -162,12 +162,12 @@ "effortMax": "最大", "effortUltra": "ウルトラ", "reasoningEffort": "推論の取り組み", - "wireApi": "Wire API", + "wireApi": "ワイヤーAPI", "modelAliases": "モデルのエイリアス", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "コンボ", + "noModelsFound": "モデルが見つかりません", + "clear": "クリア", + "done": "完了", "selectAll": "すべて選択", "unselectAll": "選択をすべて解除", "visibleModels": "表示中", @@ -184,519 +184,519 @@ "selectAllProviders": "すべてのプロバイダーを確認する", "clearProviderSelection": "プロバイダーのチェックを外す", "providersSelectedCount": "{count} のプロバイダーが確認されました", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "エラーが発生しました", + "comboDeleted": "コンボを削除しました", + "hide": "非表示", + "creating": "作成中", + "comboCreated": "コンボを作成しました", + "swapFormats": "フォーマットを入れ替え", + "daysAgo": "日前", + "retries": "再試行回数", + "errorDuringRestore": "復元中にエラーが発生しました", + "eventsAppearHint": "イベント表示のヒント", + "noLockouts": "ロックアウトなし", + "webSearchDesc": "ウェブ検索の説明", + "audioProvidersHeading": "音声プロバイダーの見出し", "cloudAgentProviders": "クラウドエージェントプロバイダー", - "minutesAgo": "Minutes Ago", + "minutesAgo": "分前", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "ライブ自動更新中", + "webSearch": "ウェブ検索", + "anthropicPrefixPlaceholder": "Anthropic プレフィックスのプレースホルダー", + "addModelToCombo": "コンボにモデルを追加", + "failedToLoad": "読み込みに失敗しました", + "categoryMedia": "メディアカテゴリー", + "enableCloud": "クラウドを有効化", + "expirationBannerExpiringSoon": "有効期限が近づいています", + "retry": "再試行", + "embeddings": "埋め込み", + "errorCount": "エラー数", + "backupReasonManual": "バックアップ理由:手動", + "safeSearchModerate": "セーフサーチ:中", + "activeLimiters": "有効なリミッター", + "a2aCardTitle": "A2Aカードのタイトル", + "cloudWorkerUnreachable": "Cloud Workerに接続できません", + "testFailed": "テストに失敗しました", + "compatibleBaseUrlHint": "互換ベースURLのヒント", + "usageTracking": "使用状況の追跡", + "disableCloudTitle": "クラウドを無効化", + "noConnections": "接続がありません", + "providerHealth": "プロバイダーの稼働状況", + "confirmDbImport": "DBのインポートを確認", + "notAvailableSymbol": "利用不可の記号", + "backupsAvailable": "利用可能なバックアップ", + "providerAuto": "プロバイダー:自動", + "newProviderNamePlaceholder": "新しいプロバイダー名のプレースホルダー", + "a2aQuickStartStep2": "A2Aクイックスタート:ステップ2", + "ok": "OK", + "available": "利用可能", + "noBackupYet": "バックアップはまだありません", + "more": "さらに表示", + "noCompatibleYet": "互換性のあるものはまだありません", + "multiProvider": "マルチプロバイダー", + "repairEnvHint": "環境修復のヒント", + "disablingCloud": "クラウドを無効化しています", + "testBench": "テストベンチ", + "valid": "有効", + "cloudBenefitShare": "クラウドのメリット:共有", + "mcpCardTitle": "MCPカードのタイトル", + "disableConfirm": "無効化を確認", + "filters": "フィルター", + "expirationBannerExpiredDesc": "有効期限切れバナーの説明", + "saveComboDefaults": "組み合わせのデフォルトを保存", + "cloudConnectedVerified": "クラウド接続を確認済み", + "uptime": "稼働時間", + "compatibleProdPlaceholder": "互換性のある本番環境のプレースホルダー", + "fallbackChainsTitle": "フォールバックチェーンのタイトル", + "oauthLabel": "OAuthラベル", + "a2aCardDescription": "A2Aカードの説明", + "okShort": "OK(短縮)", + "maintenance": "メンテナンス", + "formatConverter": "形式コンバーター", + "zedImportNetworkError": "Zedインポートのネットワークエラー", + "apiKeyLabel": "APIキーのラベル", + "noModelsForProvider": "プロバイダーにモデルがありません", + "mcpCardDescription": "MCPカードの説明", + "apiTypeLabel": "APIタイプのラベル", + "configuredProvidersLabel": "設定済みプロバイダーのラベル", + "maxRetriesLabel": "最大再試行回数のラベル", + "title": "タイトル", + "output": "出力", + "prefixHint": "プレフィックスのヒント", + "skipWizard": "ウィザードをスキップ", + "failedCount": "失敗件数", + "confirmDbImportDesc": "データベースのインポート確認の説明", + "entries": "エントリ", + "until": "終了日時", + "disableCombo": "コンボを無効化", + "liveMonitorDescriptionPrefix": "ライブモニターの説明のプレフィックス", + "runningCount": "実行中の件数", + "noActiveConnectionsInGroup": "グループ内にアクティブな接続がありません", + "savedSuccessfully": "正常に保存されました", + "systemStorage": "システムストレージ", + "videoDesc": "動画の説明", + "maxResults": "最大結果数", + "timeRangeMonth": "期間:1か月", + "testSummary": "テスト概要", + "failedSetPassword": "パスワードの設定に失敗しました", + "audio": "音声", + "restore": "復元", + "disableWarning": "無効化に関する警告", + "moderationsDesc": "モデレーションの説明", + "providerHealthStatusAria": "プロバイダーの稼働状態のARIAラベル", + "modelNamePlaceholder": "モデル名のプレースホルダー", + "mcpQuickStartStep2": "MCPクイックスタートのステップ2", + "quickStart": "クイックスタート", + "fullExportFailedWithError": "完全エクスポートがエラーにより失敗しました", + "loadingBackups": "バックアップを読み込んでいます", + "anthropicBaseUrlPlaceholder": "AnthropicベースURLのプレースホルダー", + "description": "説明", + "noProviderFound": "プロバイダーが見つかりません", + "auto": "自動", + "protocolsDescription": "プロトコルの説明", + "cloudSessionNote": "クラウドセッションに関する注意事項", + "advancedSettings": "詳細設定", + "defaultStrategy": "デフォルト戦略", + "purgeExpiredLogs": "期限切れログを削除", + "justNow": "たった今", + "providerTestFailed": "プロバイダーのテストに失敗しました", + "openaiBaseUrlPlaceholder": "Openai ベース URL のプレースホルダー", + "image": "画像", + "failedCreateChain": "チェーンの作成に失敗しました", + "importDatabase": "データベースをインポート", + "allDataLocal": "すべてのデータはローカルに保存されます", + "sectionTitle": "セクションタイトル", + "failedToggle": "切り替えに失敗しました", + "editCombo": "コンボを編集", + "testResults": "テスト結果", + "searchQuery": "検索クエリ", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "複製", + "createCombo": "コンボを作成", + "searchTypeWeb": "検索タイプ:ウェブ", + "addChain": "チェーンを追加", + "prefixLabel": "プレフィックスラベル", + "listModelsDesc": "モデル一覧の説明", + "databaseSize": "データベースサイズ", + "chainCreated": "チェーンが作成されました", + "providerTestTimeout": "プロバイダーのテストがタイムアウトしました", + "routingStrategy": "ルーティング戦略", + "translateAction": "翻訳アクション", + "exportFailed": "エクスポートに失敗しました", + "connectedVerificationPending": "接続済み(検証保留中)", + "a2aQuickStartTitle": "A2A クイックスタートのタイトル", + "couldNotTest": "テストできませんでした", + "testAllCompatible": "互換性のあるものをすべてテスト", + "anthropicCompatibleName": "Anthropic 互換名", + "disabling": "無効化中", + "failedEnable": "有効化に失敗しました", + "categoryUtility": "ユーティリティカテゴリー", + "customUrlOptional": "カスタム URL(任意)", + "localProviders": "ローカルプロバイダー", + "comboNamePlaceholder": "コンボ名のプレースホルダー", + "memoryRss": "メモリRSS", + "disableProvider": "プロバイダーを無効化", + "welcomeDesc": "ようこそ画面の説明", + "nameLabel": "名前ラベル", + "allOperational": "すべて正常稼働中", + "backupNow": "今すぐバックアップ", + "providerMaxRetriesAria": "プロバイダーの最大再試行回数のARIAラベル", + "textToSpeechDesc": "テキスト読み上げの説明", + "machineId": "マシンID", + "globalProxy": "グローバルプロキシ", + "hitsMisses": "ヒット数とミス数", + "testDesc": "テストの説明", + "chatDesc": "チャットの説明", + "importSuccess": "インポートに成功しました", + "chat": "チャット", + "a2aQuickStartStep1": "A2Aクイックスタートのステップ1", + "importFailed": "インポートに失敗しました", + "inputPlaceholder": "入力プレースホルダー", + "providerModelsTitle": "プロバイダーモデルのタイトル", + "lastBackup": "前回のバックアップ", + "yourEndpoint": "エンドポイント", + "autoDisableThresholdDesc": "自動無効化しきい値の説明", + "rerankDesc": "再ランキングの説明", + "modelsPathPlaceholder": "モデルパスのプレースホルダー", + "noCombosYet": "コンボはまだありません", + "connectedVerificationPendingWithError": "接続済み(検証保留中、エラーあり)", + "comboDefaultsGuideHint1": "コンボのデフォルト設定ガイドのヒント1", + "enableCloudTitle": "クラウドを有効化", + "configuredProvidersHint": "設定済みプロバイダーのヒント", + "paused": "一時停止中", + "llmProviders": "LLMプロバイダー", + "enableCombo": "コンボを有効化", + "removeProviderOverrideAria": "プロバイダーのオーバーライドを削除するARIAラベル", + "nodeVersion": "Nodeのバージョン", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "エラーによりエクスポートに失敗しました", + "proxyConfigured": "プロキシ設定済み", + "concurrencyPerModel": "モデルごとの同時実行数", + "protocolTasksLabel": "プロトコルタスクのラベル", + "oauthProviders": "OAuthプロバイダー", + "lockedCount": "ロック済み件数", + "deleteChainConfirm": "チェーン削除の確認", + "recentTranslations": "最近の翻訳", + "zedImportButton": "Zedインポートボタン", + "responsesDesc": "レスポンスの説明", + "testedCount": "テスト済み件数", + "providersCommaSeparatedPlaceholder": "プロバイダー(カンマ区切り)のプレースホルダー", + "signatureDefaults": "署名のデフォルト設定", + "errorCreating": "作成中にエラーが発生しました", + "timeRangeYear": "期間:年", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "クラウドを無効にしました", + "deleteConfirm": "削除の確認", + "check": "確認", + "safeSearch": "セーフサーチ", + "protocolLastActivity": "プロトコルの最終アクティビティ", + "openMcpDashboard": "MCPダッシュボードを開く", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "チャットパスのラベル", + "retryDelay": "再試行の待機時間", + "errorUpdating": "更新中にエラーが発生しました", + "ideCliIntegrations": "IDE・CLI連携", + "imageGeneration": "画像生成", + "apiKeyRequired": "APIキーが必要です", + "resetAllTitle": "すべてリセット", + "connectionError": "接続エラー", + "modelName": "モデル名", + "apiKeyForCheck": "確認用APIキー", + "cloudRequestTimeout": "クラウドリクエストがタイムアウトしました", + "showConfiguredOnly": "設定済みのみ表示", "showFreeOnly": "無料のみ", "addFirstProvider": "最初のプロバイダーを追加する", "addFirstProviderDesc": "AI プロバイダーに接続して、OmniRoute 経由でリクエストのルーティングを開始します。無料のプロバイダー、API キー、または OAuth アカウントを使用できます。", "learnMore": "さらに詳しく", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "含めるドメイン", + "promptCache": "プロンプトキャッシュ", + "cloudConnected": "クラウドに接続済み", + "deleteChain": "チェーンを削除", + "chatPathPlaceholder": "チャットパスのプレースホルダー", + "databasePath": "データベースパス", + "usingLocalServer": "ローカルサーバーを使用中", + "globalComboConfig": "グローバルコンボ設定", + "backupFailed": "バックアップに失敗しました", + "tabProtocols": "プロトコルタブ", + "continue": "続行", + "categorySearch": "カテゴリー検索", + "rateLimitStatus": "レート制限の状態", + "repairEnvSuccess": "環境の修復に成功しました", + "nameRequired": "名前は必須です", + "country": "国", + "trackMetricsDesc": "メトリクスを追跡する説明", + "durationSecondsShort": "期間(秒、短縮)", + "formatConverterDescription": "フォーマットコンバーターの説明", + "cloudBenefitAccess": "クラウドの利点へのアクセス", + "maxRetries": "最大再試行回数", + "queueTimeout": "キューのタイムアウト", "queueDepth": "キューの深さ", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "プロバイダーを追加", + "realtime": "リアルタイム", + "totalTranslations": "翻訳総数", + "protocolActiveStreamsLabel": "プロトコルのアクティブストリーム", + "repairEnv": "環境を修復", + "modelsCount": "モデル数", + "viewBackups": "バックアップを表示", + "responsesApi": "Responses API", + "copyComboName": "コンボ名をコピー", + "failures": "失敗", + "failedUpdate": "更新に失敗しました", + "imageDesc": "画像の説明", + "failedCreate": "作成に失敗しました", + "remainingOfLimit": "上限までの残り", + "protocolsTitle": "プロトコル", + "expirationBannerExpiringSoonDesc": "有効期限がまもなく切れることを知らせるバナーの説明", + "source": "ソース", + "failed": "失敗", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "MCPクイックスタート:ステップ1", + "runTest": "テストを実行", + "loadingFallbackChains": "フォールバックチェーンを読み込み中", + "healthy": "正常", + "version": "バージョン", + "saveBlockWeighted": "重み付けブロックを保存", + "zedImportNone": "Zedのインポートなし", + "noBackupsYet": "バックアップはまだありません", + "noGlobalProxy": "グローバルプロキシなし", + "noModels": "モデルがありません", + "stickyLimit": "スティッキー上限", + "passedCount": "成功数", + "zedImportFailed": "Zedのインポートに失敗しました", + "saving": "保存中", + "testAll": "すべてテスト", + "globalProxyDesc": "グローバルプロキシの説明", + "latencyP99": "レイテンシー P99", + "connectingToCloud": "クラウドに接続中", + "responses": "レスポンス", + "errorDeleting": "削除エラー", + "openaiPrefixPlaceholder": "Openaiプレフィックスのプレースホルダー", + "enterPassword": "パスワードを入力", + "openA2aDashboard": "A2Aダッシュボードを開く", + "enableProvider": "プロバイダーを有効化", + "modeTest": "テストモード", + "failedDeleteChain": "チェーンの削除に失敗しました", + "providerDesc": "プロバイダーの説明", + "templateLoadHint": "テンプレート読み込みのヒント", + "lastFailure": "前回の失敗", + "moveDown": "下へ移動", + "providerLabel": "プロバイダーのラベル", + "clearCacheFailed": "キャッシュのクリアに失敗しました", + "imagesGenerations": "画像生成", + "repairEnvWorking": "環境を修復中", + "millisecondsShort": "ミリ秒", + "globalLabel": "グローバルラベル", + "failuresPlural": "失敗", + "completionsLegacyDesc": "従来の補完機能の説明", + "searchProviders": "プロバイダーを検索", + "chatPathHint": "チャットパスのヒント", + "defaultStrategyDesc": "デフォルト戦略の説明", + "latencyP95": "レイテンシー P95", + "textToSpeech": "テキスト読み上げ", + "searchType": "検索タイプ", + "messages": "メッセージ", + "aggregatorsGateways": "アグリゲーター/ゲートウェイ", + "comboStrategyAria": "Aria組み合わせ戦略", + "input": "入力", + "testingConnection": "接続をテスト中", + "excludeDomains": "除外するドメイン", + "webCookieProviders": "Web Cookieプロバイダー", + "allTestsPassed": "すべてのテストに合格しました", + "openaiCompatibleName": "OpenAI互換名", + "warningCostOptimizedPartialPricing": "警告:コスト最適化の料金情報が一部のみです", + "comboDefaultsGuideTitle": "組み合わせのデフォルトガイドのタイトル", + "hoursAgo": "時間前", + "notAvailable": "利用できません", + "skipAndContinue": "スキップして続行", + "moderations": "モデレーション", + "proxyConfig": "プロキシ設定", + "upstreamProxyProviders": "アップストリームプロキシプロバイダー", + "exportAll": "すべてエクスポート", + "queuedCount": "キュー内の件数", + "resetAll": "すべてリセット", + "noTranslations": "翻訳なし", + "avgLatency": "平均レイテンシー", + "throttleStatus": "スロットリング状態", + "backupRetentionDesc": "バックアップ保持期間の説明", + "noCBData": "CBデータなし", + "chainDeleted": "チェーンを削除しました", + "timeLeft": "残り時間", + "expirationBannerExpired": "有効期限切れバナー", + "language": "言語", + "invalidFileType": "無効なファイル形式", + "monitoredProviders": "監視対象のプロバイダー", + "errors": "エラー", + "heap": "ヒープ", + "chatCompletions": "チャット補完", + "exampleTemplatesHint": "サンプルテンプレートのヒント", + "retryDelayLabel": "再試行遅延のラベル", + "audioTranscription": "音声文字起こし", + "fallbackChainsDesc": "フォールバックチェーンの説明", + "exampleTemplates": "サンプルテンプレート", + "connectionsCount": "接続数", + "modelsPathLabel": "モデルパスのラベル", + "activeProvidersHint": "有効なプロバイダーのヒント", + "activeLockouts": "有効なロックアウト", + "invalid": "無効", + "skipPassword": "パスワードをスキップ", + "moveUp": "上へ移動", + "timeRange": "時間範囲", + "stickyLimitDesc": "固定上限の説明", + "cloudBenefitEdge": "クラウドのメリット:エッジ", + "custom": "カスタム", + "verifying": "検証中", + "baseUrlLabel": "ベースURLのラベル", + "setPassword": "パスワードを設定", + "safeSearchStrict": "セーフサーチ:厳格", + "noChangesSinceBackup": "バックアップ以降、変更はありません", + "modelsPathHint": "モデルパスのヒント", + "audioTranscriptions": "音声文字起こし", + "testCombo": "コンボをテスト", + "mcpQuickStartTitle": "Mcp クイックスタートのタイトル", + "comboUpdated": "コンボを更新しました", + "weighted": "重み付き", + "providers": "プロバイダー", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "フォールバックチェーンなしの説明", + "yesImport": "はい、インポートします", + "lockoutsAutoRefreshHint": "ロックアウトの自動更新に関するヒント", + "tabApis": "APIタブ", + "sectionDescription": "セクションの説明", + "filter": "フィルター", + "purgeLogsFailed": "ログの消去に失敗しました", + "latency": "レイテンシー", + "testAllOAuth": "すべてのOAuthをテスト", + "mcpQuickStartStep3": "Mcp クイックスタート:ステップ3", + "repairEnvFailed": "環境の修復に失敗しました", + "zedImportHint": "Zed インポートのヒント", + "modelsAcrossEndpoints": "エンドポイント間のモデル", + "autoDisableBannedAccounts": "禁止されたアカウントを自動的に無効化", + "securityDesc": "セキュリティの説明", + "listModels": "モデル一覧", + "backupRestore": "バックアップと復元", + "target": "ターゲット", + "zedImportSuccess": "Zed のインポートに成功しました", + "lastHeaderUpdate": "最終ヘッダー更新", + "categoryCore": "コアカテゴリー", + "noFallbackChains": "フォールバックチェーンなし", + "noSearchProviders": "検索プロバイダーがありません", + "autoBalance": "自動バランス調整", + "noModelsYet": "モデルはまだありません", + "signatureFamily": "シグネチャファミリー", + "externalApiCalls": "外部API呼び出し", + "providerOverridesDesc": "プロバイダーのオーバーライドの説明", + "signatureTool": "シグネチャツール", + "connectionFailed": "接続に失敗しました", + "activeLimitersPlural": "有効なリミッター(複数)", + "doneDesc": "完了の説明", + "down": "停止中", + "noDataYet": "データはまだありません", + "activeProviders": "有効なプロバイダー", + "nameInvalid": "名前が無効です", + "skip": "スキップ", + "createChain": "チェーンを作成", + "audioSpeech": "音声読み上げ", + "cacheCleared": "キャッシュをクリアしました", + "searchTypeNews": "検索タイプ:ニュース", + "durationMillisecondsShort": "所要時間(ミリ秒、短縮)", + "addOpenAICompatible": "Open Ai互換を追加", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "キューに追加済み", + "domainPlaceholder": "ドメインのプレースホルダー", + "durationMinutesShort": "所要時間(分、短縮)", + "verifyingConnection": "接続を確認中", + "imageProviders": "画像プロバイダー", + "protocolToolsLabel": "プロトコルツールのラベル", + "queryPlaceholder": "クエリのプレースホルダー", + "videoGeneration": "動画生成", + "timeRangeWeek": "期間:1週間", + "limitExhausted": "上限に達しました", + "failedDisable": "無効化に失敗しました", + "inMemoryNote": "インメモリに関する注記", + "compatibleHint": "互換性に関するヒント", + "errorShort": "エラー(短縮)", + "advancedHint": "高度な設定に関するヒント", + "restoreFailed": "復元に失敗しました", + "searchProvidersHeading": "検索プロバイダーの見出し", + "comboName": "コンボ名", + "autoDisableDescription": "自動無効化の説明", + "embeddingsDesc": "埋め込みの説明", + "operational": "稼働中", + "testAllApiKey": "すべてのAPIキーをテスト", + "backupCreated": "バックアップを作成しました", + "errorDuringImport": "インポート中にエラーが発生しました", + "comboDefaultsGuideHint2": "コンボのデフォルト設定ガイドのヒント2", + "connecting": "接続中", + "fillModelAndProviders": "モデルとプロバイダーを入力", + "syncing": "同期中", + "resetConfirm": "リセットの確認", + "trackMetrics": "メトリクスを追跡", + "successful": "成功", + "recovering": "復旧中", + "autoDisableThreshold": "自動無効化のしきい値", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "データを同期中", + "cloudBenefitPorts": "クラウドの利点:ポート", + "compatibleProviders": "互換プロバイダー", "freeTierProviders": "無料利用枠プロバイダー", "freeTierLabel": "無料利用枠あり", "freeTierProvidersDesc": "無料枠のあるプロバイダー - API キーのサインアップが必要なプロバイダーもあれば、認証情報がまったく必要ないプロバイダーもあります。", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "キャッシュをクリア", + "reqs": "リクエスト数", + "addAnthropicCompatible": "Anthropic互換プロバイダーを追加", + "apiKeyProviders": "APIキープロバイダー", + "tabsAria": "タブのARIAラベル", + "resetting": "リセット中", + "millisecondsAbbr": "ミリ秒", + "backupReasonPreRestore": "復元前のバックアップ理由", + "disableCloud": "クラウドを無効化", + "newProviderNameAria": "新しいプロバイダー名のARIAラベル", + "passwordsMismatch": "パスワードが一致しません", + "a2aQuickStartStep3": "A2Aクイックスタート手順3", + "liveMonitorDescriptionSuffix": "ライブモニターの説明の接尾辞", + "failedAddProvider": "プロバイダーを追加できませんでした", + "addAtLeastOneProvider": "少なくとも1つのプロバイダーを追加してください", + "reasonSeparator": "理由の区切り文字", + "zedImporting": "Zedをインポート中", + "confirmPasswordPlaceholder": "パスワード確認用プレースホルダー", + "whatYouGet": "利用できるもの", + "signatureSession": "署名セッション", + "errorCountNoCode": "コードなしのエラー数", + "testing": "テスト中", + "providersCommaSeparated": "プロバイダー(カンマ区切り)", + "exportDatabase": "データベースをエクスポート", + "hitRate": "ヒット率", + "completionsLegacy": "従来の補完", + "removeModel": "モデルを削除", + "timeRangeDay": "期間:1日", + "cloudRequestFailed": "クラウドリクエストに失敗しました", + "updatedAt": "更新日時", + "monitoredProvidersHint": "監視対象プロバイダーのヒント", + "connectionSuccessful": "接続に成功しました", + "latencyP50": "レイテンシ P50", + "logsDeleted": "ログを削除しました", + "chatTester": "チャットテスター", + "safeSearchOff": "セーフサーチ:オフ", + "nameHint": "名前のヒント", + "debugToggle": "デバッグ切り替え", + "embedding": "埋め込み", + "issuesLabel": "問題ラベル", + "optionAny": "任意", + "maxNestingDepth": "最大ネスト深度", + "rerank": "再ランキング", + "checking": "確認中", + "getStarted": "始める", + "restoreSuccess": "復元に成功しました", + "issuesDetected": "問題が検出されました", + "signatureCache": "シグネチャキャッシュ", + "modelLockouts": "モデルのロックアウト", + "usingCloudProxy": "クラウドプロキシを使用中", + "loadingHealth": "ヘルス情報を読み込み中", + "providerOverrides": "プロバイダーのオーバーライド", + "audioTranscriptionDesc": "音声文字起こしの説明", + "learnedFromHeaders": "ヘッダーから学習", + "totalRequests": "総リクエスト数", + "cloudUnstableNote": "クラウドが不安定な場合の注意事項", "gamificationAdmin": "ゲーミフィケーション管理者", "monitorAnomaliesAndHealth": "異常とシステムの健全性を監視する", "flaggedAnomalies": "フラグが立てられた異常", @@ -704,7 +704,7 @@ "apiKey": "APIキー", "xpLastHour": "XP (1時間)", "zScore": "Zスコア", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "不審", "tokensCommunityServers": "コミュニティサーバー", "tokensServerNamePlaceholder": "サーバー名", "tokensApiKeyPlaceholder": "APIキー", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "さらに読み込み中…", "recommended": "推奨", "understand": "了解しました", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "バッチ処理", + "batchConceptSubtitle": "数千件のリクエストを約50%のコストで非同期処理します(24時間以内)。評価、分類、埋め込みに最適です。", + "batchConceptHowItWorks": "仕組み", + "batchConceptBenefit50pct": "入力+出力トークンが50%割引", + "batchConceptAsync24h": "24時間以内に完了する非同期処理", + "batchConceptUseCases": "一括分類、評価、埋め込みに最適", + "batchHeaderSubtitle": "多数のリクエストを1つのジョブとして実行", + "batchStep1": "1 · JSONLをアップロード", + "batchStep1Desc": "リクエストを追加", + "batchStep2": "2 · バッチを作成", + "batchStep2Desc": "ジョブを実行", + "batchStep3": "3 · 結果を取得", + "batchStep3Desc": "出力をダウンロード", + "filesConceptTitle": "バッチファイル", + "filesConceptSubtitle": "バッチで使用されるJSONLファイル:入力リクエスト、結果、エラー。", + "filesConceptInput": "入力 — 1行につき1件のリクエストを含むJSONL", + "filesConceptOutput": "出力 — 完了したリクエストの結果", + "filesConceptError": "エラー — 失敗したリクエスト", + "filesConceptRetention": "保持期間:デフォルトで30日間(Anthropicでは29日間)", + "wizardTitle": "新規バッチ", + "wizardClose": "閉じる", + "wizardNext": "次へ", + "wizardBack": "戻る", + "wizardCancel": "キャンセル", + "wizardCreate": "バッチを作成", + "wizardCreating": "作成中…", + "wizardStep1Destination": "送信先", + "wizardStep2Input": "入力", + "wizardStep3Validate": "検証", + "wizardStep4Cost": "コストを確認して作成", + "wizardProviderLabel": "プロバイダー", + "wizardEndpointLabel": "エンドポイント", + "wizardModelLabel": "モデル", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV(変換されます)", + "wizardDropOrPick": "ファイルをドロップするか、クリックして選択", + "wizardCsvMappingTitle": "CSV列をリクエストフィールドにマッピング", + "wizardCsvMappingAddField": "フィールドを追加", "wizardCsvNoColumns": "CSVヘッダーに列が検出されませんでした。", "wizardCsvIgnoreColumn": "— 無視 —", "wizardCsvCustomIdMapped": "custom_id がマッピングされました", @@ -846,8 +846,8 @@ "wizardCsvApplyMapping": "マッピングを適用", "wizardCsvRowsParsed": "{count} 行が解析されました", "wizardCsvRowsSkipped": "{count} 行がスキップされました", - "wizardCsvRowError": "Row {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardCsvRowError": "行{row}:{reason}", + "wizardValidationOk": "すべての行が有効です", "wizardValidating": "検証中…", "wizardValidationParseFailed": "検証に失敗しました — コンテンツを解析できませんでした。", "wizardValidationSummary": "{lines} 行 · {ids} 個の一意の custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "重複する custom_ids が検出されました:", "wizardValidationFirstErrors": "エラー (最初の {count} 件):", "wizardValidationLine": "行 {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "検証エラー", + "wizardValidationPreview": "プレビュー(最初の5件のリクエスト)", + "wizardValidationSamplingNote": "ファイルが大きいため、サンプリング(最初の1000行と最後の100行)で検証しました。完全な検証はサーバー側で実行されます。", + "wizardCostSync": "同期処理のコスト", + "wizardCostBatch": "バッチ処理のコスト(50%オフ)", + "wizardCostSavings": "削減額", + "wizardCostEstimatedNotice": "推定コスト — 実際の請求額は異なる場合があります。", + "wizardErrorUpload": "ファイルのアップロードに失敗しました。もう一度お試しください。", + "wizardErrorCreate": "バッチの作成に失敗しました。もう一度お試しください。", + "wizardEmptyProviders": "バッチを作成するには、バッチに対応したプロバイダー(OpenAI、Anthropic、またはGemini)を接続してください。", + "uploadModalTitle": "バッチファイルをアップロード", + "uploadModalDropOrPick": ".jsonlファイルをドロップするか、クリックして選択", + "uploadModalUpload": "アップロード", + "uploadModalCancel": "キャンセル", + "uploadModalError": "アップロードに失敗しました。もう一度お試しください。", + "uploadModalSuccess": "アップロード済み", + "uploadModalSizeLimit": "最大512 MB", + "batchListNewButton": "新規バッチ", + "batchListAutoRefresh": "30秒ごとに自動更新", + "batchListCostColumn": "コスト", + "batchActionCancel": "キャンセル", + "batchActionDownloadOutput": "出力をダウンロード", + "batchActionDownloadErrors": "エラーをダウンロード", + "batchActionRetry": "失敗したリクエストを再試行", + "batchActionRetryConfirm": "失敗したリクエスト{n}件を再試行しますか?最終的なコストは、実際に消費されたトークン数によって決まります。", + "expirationBadgeCritical": "重大", + "expirationBadgeWarning": "近日中", + "expirationBadgeNormal": "保留中", + "expirationBadgeExpired": "期限切れ", + "filesListUploadButton": "アップロード", + "filesListUsedByColumn": "使用元", + "filesListUsedByNone": "なし", + "filesListUsedByRoleInput": "入力", + "filesListUsedByRoleOutput": "出力", + "filesListUsedByRoleError": "エラー", + "filesListSizeColumn": "サイズ", + "batchListProgressPartial": "(一部)", + "batchListProviderColumn": "プロバイダー", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "その他", + "batchListTitle": "バッチ", + "batchListCount": "{count}件のバッチ", + "batchListRemovingCompleted": "削除中…", + "batchListRemoveCompleted": "完了済みを削除", + "batchListTableStatus": "ステータス", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "エンドポイント", + "batchListTableModel": "モデル", + "batchListTableProgress": "進捗", + "batchListTableCreated": "作成日時", + "batchListTableExpires": "有効期限", + "batchListLoading": "読み込み中…", + "batchListEmpty": "バッチが見つかりません", + "batchListValidating": "検証中…", + "batchStatusAll": "すべてのステータス", + "batchStatusInProgress": "処理中", + "batchStatusValidating": "検証中", + "batchStatusFinalizing": "最終処理中", + "batchStatusCompleted": "完了", + "batchStatusFailed": "失敗", + "batchStatusCancelled": "キャンセル済み", + "batchStatusCancelling": "キャンセル中", + "batchStatusExpired": "期限切れ", + "batchStatusCompletedWithFailures": "一部失敗して完了", + "batchStatusInProgressWithFailures": "一部失敗して処理中", + "batchStatusFinalizingWithFailures": "一部失敗して最終処理中", + "batchStatusCancelledWithFailures": "一部失敗してキャンセル済み", + "batchStatusExpiredWithFailures": "期限切れ(一部処理済み)", + "wizardCostEstimating": "コストを見積もり中…", + "wizardCostRequests": "リクエスト", + "wizardCostInputTok": "入力トークン", + "wizardCostOutputTok": "出力トークン", + "wizardCostWindow": "ウィンドウ", + "wizardDestinationSelectProvider": "プロバイダーを選択…", + "wizardDestinationSelectModel": "モデルを選択…", + "wizardDestinationConnectProvider": "プロバイダーを接続", + "batchListBatchCreated": "バッチ {id} を作成しました — リストを更新中…", + "batchListBatchCreatedDismiss": "閉じる", + "batchListRefreshing": "更新中…", + "batchListRefresh": "更新", + "uploadFileModalRemove": "削除", + "uploadFileModalUploading": "アップロード中…", + "wizardInputReading": "ファイルを読み込み中…", + "wizardInputReady": "準備完了", + "wizardInputLargeFileLabel": "大容量ファイル — サンプリング検証", + "wizardInputCsvJsonlReady": "JSONLを生成しました — 検証の準備ができました。", + "wizardInputLargeFileWarning": "大容量ファイルが検出されました — 検証はサンプリング(先頭5 MB+末尾100 KB)で実行されます。完全な検証はサーバー側で行われます。", + "wizardCostWindow24h": "24時間以内の完了", + "wizardValidationFieldsOk": "必須項目は有効です", + "filesListDelete": "削除", + "filesListDownload": "ダウンロード", + "batchDetailActionCancel": "バッチをキャンセル", + "batchDetailActionRetry": "失敗したリクエストを再試行", + "batchDetailCancelling": "キャンセル中…", + "batchDetailRetrying": "再試行を準備中…", + "batchDetailCancelConfirm": "このバッチをキャンセルしますか?処理中のリクエストは停止します。", + "batchActionCancelError": "バッチをキャンセルできませんでした。もう一度お試しください。", + "batchActionRetryError": "失敗したリクエストを再試行できませんでした。もう一度お試しください。", + "batchConceptRetentionNote": "結果ファイルとエラーファイルは30日間保持されます(Anthropic: 29日間)", "batchFilesSizeColumn": "サイズ", "toggleNoAuthProvider": "認証なしプロバイダーを切り替える", "loadingModels": "モデルを読み込んでいます…", @@ -988,14 +988,14 @@ "disabled": "無効", "featureFlagOmnirouteEmergencyFallbackDescription": "予算を使い果たしたリクエストを、緊急用の無料フォールバックプロバイダー/モデルにルーティングします。", "featureFlagArenaEloSyncEnabledDescription": "モデルのインテリジェンスランキング向けに、定期的な Arena AI リーダーボード ELO 同期を有効にします。", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "コンボルーティングでモデルが切り替わる際に、会話の要約を生成して挿入します。無効にすると、モデルの切り替えが個別に処理され、既存および今後作成されるすべてのコンボでバックグラウンドの引き継ぎリクエストが行われなくなります。", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models で Claude Code ゲートウェイのモデル発見リストに非 Claude モデルを表示するために、claude/<provider>/<model> ミラー ID を広告します。警告: グローバルに有効にすると、すべてのクライアントのカタログエントリが重複します。", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> ゲートウェイエイリアスのマスタースイッチです。オン(デフォルト)の場合、/v1/models は、対象となる思考機能対応の各 Claude モデルについて思考なしのバリアントを提示し、リクエストで送信された no-think/ ID は実際のモデルに解決され、推論が抑制されます。オフの場合、バリアントは提示されず、no-think/ ID は他の不明なモデル ID と同様に扱われます。オンの場合でも、モデルごとの ModelSpec.noThinkingAlias によるオプトイン/オプトアウトが適用されます。", "featureFlagChatVirtualLanesEnabledDescription": "プロバイダーへのディスパッチ用に、テナントごとの適応型仮想受付レーンを有効にします(#9654):あるテナントのバーストが他のテナントに503を返さなくなります。OMNIROUTE_CHAT_VIRTUAL_LANES環境変数はこのダッシュボード設定より優先されます。変更はサーバー再起動時に反映されます。", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ダッシュボードのプロバイダーページ:プロバイダーが正式に対応していることを示すシグナルに対してのみ「Free」バッジを表示します。表示名による推測、ブール値ではない無料フィールド、および無料枠が文書化されていない登録済みプロバイダーの「:free」サフィックスは使用しません。オフにすると、従来のバッジ判定ルールが適用されます。", + "featureFlagProxySkipRecentlyFailedDescription": "プロキシプールと、アカウントごとのopencodeローテーションで、直前に失敗したプロキシ(TCPプローブが拒否された、またはそのプロキシ経由で429を受信したもの)の再使用を、同一プロセス内で一定期間停止します。この期間は失敗を繰り返すたびに倍増し、上限があります。プロキシのステータスは書き込まれません。すべての候補が除外された場合、選択は変更されません。デフォルトではオフです。有効にしない限り、選択順序は通常のローテーションとまったく同じです。", + "featureFlagProxyPoolEgressObservationDescription": "ダッシュボードのプロキシプールの下に、過去24時間にそのメンバーが使用したことが観測された送信元IPの数、それらを使用した接続数、および1つのIPの背後で観測された最大数を表示します。読み取り専用で、プロキシログから算出され、ルーティングには使用されません。デフォルトではオフです。プールエディターは変更されず、観測ルートはnullを返します。", + "featureFlagProxyHealthBlockedResetsStreakDescription": "プロキシのヘルススイープで、ターゲットに拒否されたプローブ(401/403/429:プロキシは中継したが、宛先がこの送信元IPを拒否したもの)が、正常に処理されたプローブと同様に、プロキシの連続失敗回数をリセットできるようにします。デフォルトではオフです。拒否は中立のままで、連続失敗回数は維持されます。どちらの場合も5xxは判定不能のままであり、拒否によってプロキシが削除、無効化、または再有効化されることはありません。", "sidebar": { "home": "ホーム", "dashboard": "ダッシュボード", @@ -1012,11 +1012,11 @@ "settings": "設定", "translator": "翻訳者", "playground": "プレイグラウンド", - "searchTools": "Search Tools", + "searchTools": "ツールを検索", "agents": "エージェント", "cloudAgents": "クラウドエージェント", - "memory": "Memory", - "skills": "Skills", + "memory": "メモリ", + "skills": "スキル", "omniSkills": "オムニスキル", "agentSkills": "エージェントスキル", "chaosConfig": "カオスモード", @@ -1055,64 +1055,64 @@ "serverDisconnectedMsg": "プロキシ サーバーが停止しているか、再起動中です。", "expandSidebar": "サイドバーを展開する", "collapseSidebar": "サイドバーを折りたたむ", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themes": "テーマ", + "presetColors": "人気のカラー", + "createTheme": "テーマを作成", + "chooseColor": "色を1つ選択", + "themeCoral": "コーラル", + "themeBlue": "ブルー", + "themeRed": "レッド", + "themeGreen": "グリーン", + "themeViolet": "バイオレット", + "themeOrange": "オレンジ", + "themeCyan": "シアン", "cliToolsShort": "ツール", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "バッチジョブ", + "themeSystem": "テーマシステム", + "whitelabelingDesc": "ホワイトラベルの説明", + "switchThemes": "テーマを切り替え", + "themeAccentDesc": "テーマのアクセントカラーの説明", + "uploadFavicon": "ファビコンをアップロード", + "themeDark": "ダークテーマ", + "customLogoDesc": "カスタムロゴの説明", + "sidebarVisibilityToggle": "サイドバーの表示切り替え", + "themeAccent": "テーマのアクセントカラー", + "resetFavicon": "ファビコンをリセット", + "whitelabeling": "ホワイトラベル", + "darkMode": "ダークモード", + "uploadLogo": "ロゴをアップロード", + "themeLight": "ライトテーマ", + "appName": "アプリ名", + "appNameDesc": "アプリ名の説明", + "resetLogo": "ロゴをリセット", + "customFavicon": "カスタムファビコン", + "hideHealthLogs": "ヘルスログを非表示", + "customLogo": "カスタムロゴ", + "appearance": "外観", + "themeSelectionAria": "テーマ選択のARIAラベル", + "themeCreate": "テーマを作成", + "customFaviconDesc": "カスタムファビコンの説明", + "logoPreview": "ロゴのプレビュー", + "themeCustom": "カスタムテーマ", + "hideHealthLogsDesc": "ヘルスログを非表示にする設定の説明", + "faviconPreview": "ファビコンのプレビュー", + "changelog": "変更履歴", + "contextSection": "コンテキストとキャッシュ", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "エンジンの組み合わせ", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "ウルトラ", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "圧縮設定", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "コンボスタジオ", "combosLiveSubtitle": "ライブルーティングカスケード", "compressionStudio": "Compression Studio", "compressionExclusions": "除外事項", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "ライブエンジンカスケード", "compressionExclusionsSubtitle": "モデル/エンドポイントごとのバイパス", "chaosConfigSubtitle": "複数モデルの並列実行", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "ルーティング", + "protocolsSection": "プロトコル", + "agentsAiSection": "エージェントとAI", + "cacheContextSection": "キャッシュとコンテキスト", + "analyticsSection": "分析", + "costsSection": "コスト", + "monitoringSection": "モニタリング", + "auditSecuritySection": "監査とセキュリティ", + "devtoolsSection": "開発ツール", + "configurationSection": "設定", + "aiFeaturesSection": "AI機能", "mcp": "MCP", "a2a": "A2A", "plugins": "プラグイン", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "APIエンドポイント", + "batchFiles": "ファイル", + "analyticsEvals": "評価", + "analyticsSearch": "検索", + "analyticsUtilization": "使用状況", + "analyticsComboHealth": "組み合わせの健全性", + "analyticsCompression": "圧縮", + "costsBudget": "予算", "costsFreeTiers": "無料枠予算", "costsFreeTiersSubtitle": "月間無料トークン割り当て", "freeProviderRankings": "無料プロバイダーランキング", "freeProviderRankingsSubtitle": "モデルの ELO スコアでランク付けされた最適な無料プロバイダー", "radar": "レーダーカタログ", "radarSubtitle": "コミュニティで強化された無料モデルカタログ", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "クォータ共有", + "costsPricing": "料金", + "logsProxy": "プロキシログ", + "logsConsole": "コンソール", + "logsActivity": "アクティビティ", + "auditMcp": "MCP監査", "auditA2a": "A2A監査", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "外観", + "settingsAi": "AI設定", + "settingsSecurity": "セキュリティ", "settingsAccessTokens": "アクセストークン", "settingsFeatureFlags": "機能フラグ", "settingsCache": "キャッシュ", "settingsAuthz": "認可", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsRouting": "ルーティング", + "settingsResilience": "耐障害性", "modelLockout": "モデルロックアウト", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "詳細設定", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "プロバイダークォータ", + "providerQuota": "プロバイダークォータ", + "runtime": "ランタイム", + "consoleLogs": "コンソールログ", + "logsTimeline": "タイムライン", "logsTimelineSubtitle": "ビジュアルリクエストタイムライン", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "会話", + "conversationsSubtitle": "複数ターンのエージェント型会話", + "globalRouting": "グローバルルーティング", + "mitmProxy": "MITMプロキシ", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "エージェント機能", + "otherFeaturesSection": "その他の機能", + "compressionContextGroup": "コンテキスト圧縮", + "gamificationGroup": "ゲーミフィケーション", + "toolsGroup": "ツール", + "integrationsGroup": "統合", + "proxyGroup": "プロキシ", + "costsParametersGroup": "コストパラメータ", + "auditGroup": "監査", + "batchGroup": "バッチ", + "homeSubtitle": "ダッシュボード概要", + "providersSubtitle": "AIプロバイダーを管理", + "quotaTrackerSubtitle": "使用量上限を追跡", + "providerQuotaSubtitle": "プロバイダーの使用量上限を追跡", + "runtimeSubtitle": "リアルタイムの耐障害性とセッション", + "contextCombosSubtitle": "圧縮エンジンを組み合わせる", + "cliToolsSubtitle": "CLIランタイムを設定", + "agentsSubtitle": "ローカルエージェントを管理", + "cloudAgentsSubtitle": "クラウドベースのエージェントを管理", + "apiEndpointsSubtitle": "カスタムエンドポイントを公開", + "proxySubtitle": "HTTPプロキシ設定", + "mitmProxySubtitle": "MITMインターセプト", + "oneProxySubtitle": "パブリックプロキシゲートウェイ", + "leaderboard": "ランキング", + "profile": "プロフィール", + "tokens": "トークン", + "gamificationAdmin": "ゲーミフィケーション管理", + "leaderboardSubtitle": "ランキングと実績", + "profileSubtitle": "アカウントと設定", + "tokensSubtitle": "トークン使用量と予算", + "gamificationAdminSubtitle": "異常監視と不正防止", + "usageSubtitle": "トラフィックと使用状況の統計", + "analyticsComboHealthSubtitle": "コンボターゲットの信頼性", + "analyticsUtilizationSubtitle": "プロバイダー利用率", + "costsSubtitle": "支出内訳", + "cacheSubtitle": "キャッシュヒット率", + "analyticsCompressionSubtitle": "トークン節約統計", + "analyticsSearchSubtitle": "検索ツール分析", + "analyticsEvalsSubtitle": "評価スイートの結果", "providerStats": "プロバイダー統計", "providerStatsSubtitle": "レイテンシとパフォーマンスのメトリクス", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "アプリケーションログ", + "logsProxySubtitle": "プロキシトラフィックログ", + "consoleLogsSubtitle": "コンソール出力", + "logsActivitySubtitle": "ユーザーアクティビティログ", + "healthSubtitle": "システムヘルスチェック", + "costsPricingSubtitle": "モデル別料金ルール", + "costsBudgetSubtitle": "予算上限", + "costsQuotaShareSubtitle": "プロバイダーのクォータをキー間で共有", + "auditLogSubtitle": "認可監査", + "auditMcpSubtitle": "MCPサーバー監査", + "auditA2aSubtitle": "A2Aプロトコル監査", + "translatorSubtitle": "形式変換", + "playgroundSubtitle": "プロンプトをリアルタイムでテスト", + "searchToolsSubtitle": "ツールレジストリを検索", + "memorySubtitle": "永続的なエージェントメモリ", + "omniSkillsSubtitle": "サンドボックススキルレジストリ", + "agentSkillsSubtitle": "A2Aスキルレジストリ", + "mcpSubtitle": "MCPサーバー制御", + "a2aSubtitle": "A2Aプロトコルサーバー", "pluginsSubtitle": "プラグインマーケットプレイスとインストール", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "キャッシュ済みメディアファイル", + "batchFilesSubtitle": "バッチ入出力ファイル", + "settingsSubtitle": "すべての設定", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "テーマとレイアウト", + "settingsAiSubtitle": "AIのデフォルト動作", + "globalRoutingSubtitle": "グローバルルーティングルール", + "settingsResilienceSubtitle": "再試行とサーキットブレーカー", + "settingsAdvancedSubtitle": "上級者向けオプション", + "settingsSecuritySubtitle": "認証と暗号化", "settingsAccessTokensSubtitle": "リモートモード用のスコープ付き CLI トークン", "settingsFeatureFlagsSubtitle": "システム機能の切り替え", "settingsCacheSubtitle": "モデルカタログとレスポンスキャッシュ", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "サイドバー", + "settingsSidebarSubtitle": "サイドバーのレイアウトをカスタマイズ", "settingsAuthzSubtitle": "ルートインベントリとバイパスポリシー", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "ドキュメント", + "issuesSubtitle": "バグを報告", + "changelogSubtitle": "リリースノート", "costsQuotaPlans": "プランとクォータ", "costsQuotaPlansSubtitle": "プロバイダーごとのプラン設定", "activity": "アクティビティ", @@ -1275,11 +1275,11 @@ "systemGroup": "システム", "costsOverview": "概要", "costsOverviewSubtitle": "統合コスト分析", - "agentBridge": "Agent Bridge", + "agentBridge": "エージェントブリッジ", "agentBridgeSubtitle": "IDEエージェントのトラフィックをインターセプト", "trafficInspector": "Traffic Inspector", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "アプリからのリクエストとレスポンスの通信を検査", + "trafficInspectorPurpose": "アプリケーションがAIプロバイダーに送信する内容と、AIプロバイダーから受信する内容を正確に確認できます。OpenAI互換のあらゆるクライアントで動作します。", "cliCode": "CLIコード", "cliCodeSubtitle": "OmniRouteを指すコードツール", "cliAgents": "CLIエージェント", @@ -1345,7 +1345,7 @@ "refresh": "リフレッシュ", "loading": "Webhook を読み込んでいます...", "never": "決してしない", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {失敗なし} one {#件の失敗} other {#件の失敗}}", "testWebhook": "テストの送信", "testSuccess": "テスト Webhook が正常に送信されました。", "testFailed": "Webhook のテストが失敗しました。", @@ -1378,54 +1378,54 @@ "step3": "テストペイロードを送信して、エンドポイントがそれを受信できることを確認し、設定を検証します。", "step4": "ウェブフックのシークレットを使用して X-Webhook-Signature HMAC-SHA256 ヘッダーを検証し、エンドポイントを保護します。", "title": "ウェブフックの仕組み", - "customOnly": "Only applicable for custom endpoint integrations.", - "hmacRecipeTitle": "HMAC Verification Recipe", - "hmacRecipe": "To verify webhook payloads in Node.js, compute the HMAC-SHA256 of the raw request body using your secret key. Compare it to the X-Webhook-Signature header using timingSafeEqual.", - "timeoutNote": "Webhook deliveries have a timeout of 10 seconds.", - "retryNote": "Failed deliveries are retried up to 5 times with exponential backoff.", - "docsLink": "Read the full Webhooks developer guide", - "hmacRecipePython": "Python HMAC verification: hmac.new(secret, body, hashlib.sha256).hexdigest()", - "hmacRecipeBash": "Bash HMAC verification: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" + "customOnly": "カスタムエンドポイント統合にのみ適用されます。", + "hmacRecipeTitle": "HMAC検証レシピ", + "hmacRecipe": "Node.jsでWebhookペイロードを検証するには、秘密鍵を使用して生のリクエスト本文のHMAC-SHA256を計算します。timingSafeEqualを使用して、X-Webhook-Signatureヘッダーと比較してください。", + "timeoutNote": "Webhook配信のタイムアウトは10秒です。", + "retryNote": "配信に失敗した場合、指数バックオフを使用して最大5回まで再試行されます。", + "docsLink": "Webhooks開発者ガイド全文を読む", + "hmacRecipePython": "PythonでのHMAC検証:hmac.new(secret, body, hashlib.sha256).hexdigest()", + "hmacRecipeBash": "BashでのHMAC検証:echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" }, "deliveries": { - "title": "Delivery Logs", - "loadFailed": "Failed to load webhook delivery logs.", - "empty": "No deliveries recorded yet. Trigger an event or send a test payload.", - "status": "Status", - "event": "Event", - "latency": "Latency", - "at": "Sent At" + "title": "配信ログ", + "loadFailed": "Webhook配信ログの読み込みに失敗しました。", + "empty": "配信はまだ記録されていません。イベントをトリガーするか、テストペイロードを送信してください。", + "status": "ステータス", + "event": "イベント", + "latency": "レイテンシー", + "at": "送信日時" }, "kinds": { - "comingSoon": "Coming Soon", + "comingSoon": "近日公開", "slack": "Slack", - "slackDesc": "Post system events directly into a Slack channel", + "slackDesc": "システムイベントをSlackチャンネルに直接投稿します", "telegram": "Telegram", - "telegramDesc": "Send event messages using a Telegram bot", + "telegramDesc": "Telegramボットを使用してイベントメッセージを送信します", "discord": "Discord", - "discordDesc": "Deliver real-time updates directly to a Discord server", - "custom": "Custom Webhook", - "customDesc": "Deliver system event payloads to any HTTPS endpoint", - "email": "Email Notification", - "emailDesc": "Receive summary updates via email", + "discordDesc": "リアルタイムの更新をDiscordサーバーに直接配信します", + "custom": "カスタムWebhook", + "customDesc": "システムイベントのペイロードを任意のHTTPSエンドポイントに配信します", + "email": "メール通知", + "emailDesc": "更新内容の概要をメールで受信します", "pagerduty": "PagerDuty", - "pagerdutyDesc": "Trigger alerts on PagerDuty for critical system issues", + "pagerdutyDesc": "重大なシステム問題が発生した際にPagerDutyでアラートをトリガーします", "teams": "Microsoft Teams", - "teamsDesc": "Forward system notifications to Microsoft Teams channels" + "teamsDesc": "システム通知をMicrosoft Teamsチャンネルに転送します" }, - "testPayloadSent": "Test Payload Sent", - "testResponse": "Test Response", + "testPayloadSent": "テストペイロードを送信しました", + "testResponse": "テストレスポンス", "validateUrl": { - "checking": "Checking URL...", - "ok": "URL is valid", - "blockedPrivate": "URL is a blocked private address", - "invalidUrl": "Invalid URL format" + "checking": "URLを確認しています...", + "ok": "URLは有効です", + "blockedPrivate": "URLはブロック対象のプライベートアドレスです", + "invalidUrl": "URLの形式が無効です" }, "custom": { - "endpointUrl": "Endpoint URL", + "endpointUrl": "エンドポイントURL", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", - "secretKey": "Secret Key", - "secretKeyPlaceholder": "Enter secret key or leave blank to auto-generate", + "secretKey": "シークレットキー", + "secretKeyPlaceholder": "シークレットキーを入力するか、空欄のままにして自動生成します", "secretKeyHint": "認証用のペイロードヘッダーの署名に使用されます。" }, "discord": { @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "トップツール" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "テーマ", + "description": "プリセットテーマを選択するか、1色を指定して独自のテーマを作成します", + "presetColors": "人気のカラー", + "customTheme": "カスタムテーマ", + "customThemeDesc": "「テーマを作成」をクリックして色を1つ選択してください", + "createTheme": "テーマを作成", + "activePreset": "使用中のテーマ" }, "header": { "logout": "ログアウト", @@ -1594,60 +1594,60 @@ "endpoint": "エンドポイント", "endpointDescription": "プロキシエンドポイント、MCP、A2A、APIエンドポイントを管理", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocolサーバーの管理とツール", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Agent-to-Agentプロトコルのタスクと可観測性", "settings": "設定", "settingsDescription": "設定を管理します", "openaiCompatible": "OpenAI対応", "anthropicCompatible": "Anthropic 互換", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "media": "メディア", + "mediaDescription": "画像、動画、音楽を生成", + "themes": "テーマ", + "themesDescription": "ダッシュボードパネル全体のカラーテーマを選択", + "costsDescription": "すべてのプロバイダーにわたる支出の追跡、傾向分析、AI予算の管理", + "cacheDescription": "プロバイダーのプロンプトキャッシュ効率とローカルでのセマンティックレスポンス再利用を監視します。", + "limitsDescription": "APIキーおよびプロバイダーごとにレート制限とクォータを設定", + "runtimeDescription": "ランタイムのリアルタイム可観測性 — サーキットブレーカー、クールダウン、モデルのロックアウト、セッション、クォータアラート", + "apiManagerDescription": "OmniRouteインスタンスのAPIキーとアクセス制御を管理", + "batchDescription": "バッチAPI呼び出しを使用して大量のリクエストを非同期処理", + "contextCavemanDescription": "ルールベースのメッセージ圧縮、言語パック、分析、出力モード制御。", + "contextRtkDescription": "ツール出力、ターミナルログ、ビルド結果向けのコマンド対応圧縮。", + "contextCombosDescription": "さまざまなルーティングシナリオでエンジンを組み合わせる方法を定義します。", + "changelogDescription": "最新のプラットフォーム機能やお知らせを常に確認できます。", + "agentsDescription": "AIエージェントツール(Codex、Devin、Jules、カスタムエージェント)の管理と設定", + "cloudAgentsDescription": "ライブタスク追跡とプラン承認を使用してクラウドベースのAIエージェントをオーケストレーション", + "memoryDescription": "セマンティック検索とFTS5全文インデックスに対応した永続的な会話メモリ", + "skillsDescription": "プロンプトとツールの自動実行用サンドボックススキルをインストールおよび管理", + "agentSkillsDescription": "AIクライアント連携用URLをワンクリックでコピーできる、エージェント対応スキルカタログ", + "translatorDescription": "OpenAI ↔ Claude ↔ GeminiのAPI形式間でプロンプトを変換・テスト", + "playgroundDescription": "プロバイダーからのライブレスポンスと形式検査を使用してプロンプトを対話的にテスト", + "searchToolsDescription": "検索分析、プロバイダー別内訳、キャッシュヒット率、コスト追跡", + "logsDescription": "リアルタイムのリクエストログ、エラートレース、ストリーミングイベントインスペクター", + "auditDescription": "APIキーの使用、MCPツール呼び出し、ポリシーイベントのコンプライアンス監査証跡", + "webhooksDescription": "リアルタイムのイベント通知を受信するWebhookエンドポイントを設定", + "healthDescription": "システムの健全性概要:プロバイダー、サーキットブレーカー、レート制限、データベース", + "proxyDescription": "外部プロバイダー接続用のアップストリームプロキシ設定を構成", + "apiEndpointsDescription": "カスタムAPIエンドポイント設定とルーティングオーバーライドを管理", + "batchFilesDescription": "バッチジョブの出力ファイルと結果を参照・管理", + "analyticsEvalsDescription": "モデルの評価結果とパフォーマンスベンチマーク", + "analyticsSearchDescription": "検索クエリ分析、キャッシュヒット率、コスト追跡", + "analyticsUtilizationDescription": "プロバイダー利用率の指標とキャパシティプランニング", + "analyticsComboHealthDescription": "組み合わせルーティング設定のリアルタイムな健全性とパフォーマンス", + "analyticsCompressionDescription": "コンテキスト圧縮の分析とトークン節約量", + "costsBudgetDescription": "APIキーおよびプロバイダーごとの予算上限と支出アラート", + "costsPricingDescription": "トークンコスト計算用のカスタム料金設定", + "logsProxyDescription": "アップストリームプロキシのリクエストログとトラフィック検査", + "logsConsoleDescription": "アプリケーションのコンソール出力とデバッグログ", + "logsActivityDescription": "ユーザー操作とシステムイベントの監査証跡", + "auditMcpDescription": "MCPツール呼び出しの監査証跡とコンプライアンス記録", "auditA2a": "A2A監査", "auditA2aDescription": "A2Aタスク実行監査証跡、状態遷移、スキル呼び出し記録", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "テーマ、ブランディング、外観のカスタマイズ", + "settingsAiDescription": "AIの動作、思考バジェット、ビジョン、メモリの設定", "settingsCacheDescription": "モデルカタログキャッシュエントリのTTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "認証、認可、アクセス制御の設定", "featureFlags": "機能フラグ", "featureFlagsDescription": "制御システムの機能と実験的機能", "featureFlagsActive": "{count} がアクティブです", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "検索に一致するフラグはありません", "featureFlagsSaved": "フラグが更新されました", "featureFlagsError": "フラグの更新に失敗しました", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "ルーティングルール、モデルエイリアス、コンボのデフォルト、デグレード設定", + "settingsResilienceDescription": "サーキットブレーカー、再試行、フォールバックの設定", + "settingsAdvancedDescription": "高度なペイロードルール、リクエスト制限、プロキシAPI設定", + "mitmProxyDescription": "トラフィック検査とデバッグ用のMITMプロキシ設定", + "oneProxyDescription": "高度なプロキシチェーン用の1Proxy設定", "omniSkillsDescription": "自動化されたプロンプトとツールの実行のためのサンドボックススキルをインストールして管理します" }, "cloudSyncStatus": { @@ -1761,8 +1761,8 @@ "quotaShare": "クォータ共有", "discovery": "ディスカバリー", "freeProviderRankings": "無料プロバイダーランキング", - "radar": "Radar", - "setup": "Setup", + "radar": "レーダー", + "setup": "セットアップ", "freeTiers": "無料枠", "gamification": "ゲーミフィケーション", "leaderboard": "リーダーボード", @@ -1812,7 +1812,7 @@ "reportIssue": "問題を報告する", "activeError": "{active} アクティブ · {errors} エラー", "topologyLegendActive": "アクティブ", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "最近", "topologyLegendError": "エラー", "oauthLabel": "OAuth", "apiKeyLabel": "APIキー", @@ -1826,11 +1826,11 @@ "updateStarted": "更新を開始しました...", "reloadingPageAutomatically": "ページを自動的に再読み込みしています...", "providerTopology": "プロバイダー トポロジ", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "最近のリクエスト", + "recentRequestsEmpty": "リクエストはまだありません。", + "recentRequestsModel": "モデル", + "recentRequestsTokens": "入力 / 出力", + "recentRequestsWhen": "日時", "downloadDmg": "DMGをダウンロード (macOS)", "downloadDmgDescription": "OmniRouteデスクトップアプリの新しいバージョンが利用可能です。macOS DMGインストーラーをダウンロードしてインストールし、更新してください(現在のバージョン: v{version})。", "downloadExe": "EXEをダウンロード (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "リリースノート", "readMore": "続きを読む", "noAuthLabel": "認証なし", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "ルーティングの準備をしましょう", + "readinessTitle": "最初のリクエストを送信", + "readinessSubtitle": "わずか4ステップ。進行に合わせてOmniRouteが準備状況を確認します。", + "readinessStep1": "プロバイダーを接続", + "readinessStep2": "エンドポイント認証を設定", + "readinessStep3": "エンドポイントをコピー", + "readinessStep4": "テストリクエストを送信", + "readinessContinue": "セットアップを続ける", + "readinessDismiss": "今は閉じる" }, "analytics": { "title": "分析", @@ -2005,8 +2005,8 @@ "modelStatusError": "エラー", "comboHealth": "コンボ健全性", "comboHealthDescription": "コンボレベルのクォータ、使用分布、パフォーマンスメトリクス", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "圧縮分析", + "compressionAnalyticsDescription": "圧縮分析 — トークン削減量、モード別内訳、プロバイダー統計。", "autoRoutingTotalAutoRequests": "自動リクエストの合計数", "autoRoutingAvgSelectionScore": "平均選択スコア", "autoRoutingExplorationRate": "探索速度", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "パフォーマンス", "comboHealthPerformanceDescription": "ルーティングされたコンボトラフィックの信頼性とスループット。", "comboHealthExecutionTargetsDescription": "構造化されたコンボターゲットのステップレベルのランタイムメトリクスとクォータの可視性。", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count}件のリクエスト", "comboHealthQuotaScope": "クォータスコープ: {scope}", "comboHealthTrendValue": "トレンド: {trend}", "comboHealthFetchFailed": "コンボのヘルスデータの取得に失敗しました", @@ -2168,7 +2168,7 @@ "remainingQuota": "残りのクォータ", "routeTraceTitle": "ルートトレースビュー", "routeTraceDescription": "保存されたリクエストトレース(選択されたターゲット、ルーティング要因、フォールバックの証拠、現在のスコアリングの再現、レイテンシ、トークン、ターゲットの健全性)を検査します。", - "routeTraceRequestLog": "Request log", + "routeTraceRequestLog": "リクエストログ", "routeWeight": "重み {weight}%", "routeNoRelatedEvidence": "関連するターゲットのエビデンスはまだ保存されていません。", "unknown": "不明", @@ -2210,7 +2210,7 @@ "combo": "コンボ", "routeStep": "ステップ", "tokens": "トークン", - "notAvailable": "n/a", + "notAvailable": "該当なし", "routeTokenCounts": "{input} 入力 · {output} 出力", "routeEvidence": "根拠", "routeFactors": "ルーティング要因", @@ -2258,9 +2258,9 @@ "fullAccess": "フルアクセス", "keyManagement": "APIキー管理", "keyManagementDesc": "エンドポイントへのリクエストを認証するための API キーを作成および管理する", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "アプリはAPIキーを使用してOmniRoute経由でリクエストを送信します", + "requestFlowYourApp": "アプリ", + "requestFlowApiKey": "APIキー", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "キーの総数", "restricted": "制限付き", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "このキーをコピーして保存してください。再度表示されなくなります。", "done": "完了", "savePermissions": "権限の保存", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "許可されたエンドポイント", + "allEndpointsAllowed": "このキーはすべてのAPIエンドポイントにアクセスできます。", + "endpointsRestricted": "{count}件のエンドポイントに制限されています。", + "autoResolve": "自動解決", + "autoResolveDesc": "このAPIキーについて、曖昧なモデル名をネイティブプロバイダーに自動解決します。", "streamDefaultMode": "ストリームのデフォルト互換性", "streamDefaultModeDesc": "このキーの省略された `stream` フラグを制御します。クライアントが明示的にSSEを要求しない限り、JSONモードは非ストリーミングレスポンスを返します。", "streamDefaultLegacy": "レガシー", "streamDefaultJson": "JSON互換", "streamDefaultBadge": "JSONストリームのデフォルト", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "キーを有効化", + "keyActiveDesc": "このAPIキーを有効または無効にします。無効化されたキーは即座に403で拒否されます。", + "accessSchedule": "アクセススケジュール", + "accessScheduleDesc": "アクセスを特定の時間帯と曜日に制限します。", + "scheduleFrom": "開始", + "scheduleUntil": "終了", + "scheduleDays": "曜日", + "scheduleTimezone": "タイムゾーン", + "scheduleTimezoneHint": "IANAタイムゾーン名を使用してください(例:America/New_York、Europe/Berlin)", + "scheduleActive": "スケジュール", + "disabled": "無効", + "daySun": "日", + "dayMon": "月", + "dayTue": "火", + "dayWed": "水", + "dayThu": "木", + "dayFri": "金", + "daySat": "土", "allowAll": "すべて許可", "restrict": "制限する", "allowAllInfo": "このキーは、利用可能なすべてのモデルにアクセスできます。", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "権限の更新に失敗しました。もう一度試してください。", "unknownProvider": "不明", "copyMaskedKey": "マスクされたキーをコピーする", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "完全なキーを確認できるのは作成時のみです — キーを初めて作成した際にコピーしてください", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# 台のデバイス} other {# 台のデバイス}}", "devicesTooltip": "{count, plural, one {このキーで検出された # 個の異なるIP/User-Agentデバイス(過去30分間)} other {このキーで検出された # 個の異なるIP/User-Agentデバイス(過去30分間)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "許可された組み合わせ", "allCombosAllowed": "このキーは任意の組み合わせを使用できます。", "restrictedComboCount": "{count, plural, one {# 個の組み合わせ} other {# 個の組み合わせ}}に制限されています。", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {保存済みの#件のエントリは} other {保存済みの#件のエントリは}}このコンボリストに含まれていないため(ルーティングルールなど)、保存された状態のまま保持されます。", + "preservedComboRuleHint": "保存された状態のまま保持されます。このエントリは上記リストのコンボではないため、API経由でのみ変更できます。", "apiManagerCustomRateLimits": "カスタムレート制限", "apiManagerCustomRateLimitsDesc": "グローバルなデフォルト制限をオーバーライドします。デフォルトを使用する場合は空のままにしてください。", "apiManagerRateLimitRequestsPlaceholder": "リクエスト", @@ -2418,16 +2418,16 @@ "quotaKeysSection": "クォータキー", "bypassProviderQuota": "プロバイダーのクォータ制限をバイパス", "bypassProviderQuotaDescription": "ルーティング中に、このキーがアップストリームのプロバイダー/アカウントの制限ポリシーを無視できるようにします。APIキーのUSDクォータは引き続き適用されます。", - "quotaPill": "QUOTA", + "quotaPill": "クォータ", "quotaModeOnly": "qtSdのみ", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "排他的リース", + "exclusiveLeaseNoticeTitle": "排他的リース", + "exclusiveLeaseNoticeDesc": "このAPIキーには、専用接続ルーティングのための排他的リース権限があります。", + "allConnections": "すべての接続", + "onlySelectedConnections": "選択した接続のみ", + "selectAtLeastOneConnection": "少なくとも1つの接続を選択するか、すべての接続を選択してください。", + "allConnectionsDesc": "このキーでは、アクティブな接続をすべて使用できます。", + "restrictedToConnections": "{count, plural, one {#件の接続に制限} other {#件の接続に制限}}。" }, "auditLog": { "title": "監査ログ", @@ -2457,14 +2457,14 @@ "model": "Model", "prompt": "Prompt", "generate": "生成", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "生成中...", + "loadingModels": "利用可能なモデルを読み込んでいます...", + "noModels": "利用可能なモデルがありません。まず、メディア機能を持つプロバイダーを設定してください。", + "error": "生成に失敗しました", + "result": "結果", + "imageDescription": "OpenAI、xAI、Together、Hyperbolic、SD WebUI、ComfyUIなどを使用して、テキストプロンプトから画像を生成します。", + "videoDescription": "ComfyUIまたはSD WebUI経由でAnimateDiff、Stable Video Diffusionを使用して動画を作成します。", + "musicDescription": "ComfyUI経由でStable Audio OpenまたはMusicGenを使用して音楽を作曲します。", "kinds": { "embedding": "埋め込み", "image": "画像", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouterの音声認識モデルは、設定されたOpenRouter接続を使用します。別途認証情報は必要ありません。" }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "検索クエリ", + "searchResults": "検索結果", + "cachedResult": "キャッシュ済み", + "searchCost": "コスト", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "プロバイダー比較が可能な高度な検索テスト", + "compareProviders": "プロバイダーを比較", + "rerankResults": "結果を再ランク付け", + "searchHistory": "検索履歴", + "urlOverlap": "URLの重複", + "noSearchProviders": "検索プロバイダーが設定されていません。設定でプロバイダーを追加してください。", + "noRerankModels": "利用可能な再ランク付けモデルがありません", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "プロバイダー", + "searchType": "検索タイプ", + "maxResults": "最大結果数", + "filters": "フィルター", + "country": "国", + "language": "言語", + "timeRange": "期間", + "includeDomains": "含めるドメイン", + "excludeDomains": "除外するドメイン", + "safeSearch": "セーフサーチ", + "safeSearchOff": "オフ", + "safeSearchModerate": "中程度", + "safeSearchStrict": "厳格", + "queryPlaceholder": "検索クエリを入力...", + "providerAuto": "自動(最安)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "ニュース", + "optionAny": "指定なし", + "timeRangeDay": "過去24時間", + "timeRangeWeek": "過去1週間", + "timeRangeMonth": "過去1か月", + "timeRangeYear": "過去1年", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "リクエストがタイムアウトしました({seconds}秒)", + "networkError": "ネットワークエラー", + "formatted": "フォーマット済み", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "キャッシュミス", + "cacheHit": "キャッシュヒット", + "latency": "レイテンシー", + "cost": "コスト", + "results": "結果", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "再ランキングモデル", + "positionDelta": "順位の変動", + "emptyState": "検索クエリを送信すると結果が表示されます", "copy": "コピー", "resetToDefault": "デフォルトにリセットする", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "検索", + "tabScrape": "スクレイピング", + "tabCompare": "比較", + "modalitiesGuide": "モダリティガイド", + "searchConceptTitle": "検索", + "searchConceptDesc": "検索 = Web検索結果の一覧(タイトル、URL、スニペット、関連度スコア)を取得します", + "scrapeConceptTitle": "スクレイピング", + "scrapeConceptDesc": "スクレイピング = URLの全コンテンツ(markdown、テキスト、HTML)を抽出します", + "compareConceptTitle": "比較", + "compareConceptDesc": "比較 = 同じクエリをN個のプロバイダーで並列実行し、レイテンシー、コスト、結果の重複を比較します", + "rerankConceptTitle": "再ランキング", + "rerankConceptDesc": "再ランキング = クエリに基づいてLLMで結果を並べ替え、関連性を向上させます", + "autoConceptTitle": "自動(最安)", + "autoConceptDesc": "自動(最安) = 設定済みの認証情報で利用可能な最も安価なプロバイダーを自動的に選択します", + "providerCatalogTitle": "プロバイダーカタログ", + "kindSearch": "検索", + "kindFetch": "取得/スクレイピング", + "statusConfigured": "設定済み", + "statusMissing": "認証情報なし", + "statusRateLimited": "レート制限中", + "configureProvider": "「プロバイダー」で設定", + "loadingProviders": "プロバイダーを読み込み中…", + "failedToLoadProviders": "プロバイダーの読み込みに失敗しました", + "costPerQuery": "クエリあたりのコスト", + "freeQuota": "月間無料枠", + "scrapeUrl": "スクレイピングするURL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URLは必須です", "scrapeUrlInvalid": "無効なURLです。http:// または https:// で始まる必要があります", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "抽出", + "scrapeExtracting": "抽出中…", + "scrapeFullPage": "ページ全体", + "scrapeFormat": "形式", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "テキスト", + "scrapePreview": "プレビュー", + "scrapeRaw": "生データ", + "scrapeContentTruncated": "(省略されています。生データを表示)", + "scrapeMetadata": "メタデータ", + "scrapeProvider": "プロバイダー", + "scrapeSize": "サイズ", "scrapeEmptyState": "コンテンツを抽出するURLを入力してください", "scrapeProvidersAvailable": "利用可能なプロバイダー: Firecrawl, Jina Reader, Tavily。", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "比較", + "compareRunning": "比較中…", + "autoProvider": "自動(最安)", + "configuredStatus": "設定済み", + "rateLimitedStatus": "レート制限中", + "noCredential": "認証情報なし", + "searchTypeLabel": "タイプ", + "rerankModelLabel": "リランキングモデル", + "noneOption": "なし", + "size": "サイズ", "configurationPane": "設定ペイン", "configuration": "設定", "status": "ステータス", @@ -2743,7 +2743,7 @@ "effortExtraHigh": "極めて高い", "effortMax": "最大", "effortUltra": "ウルトラ", - "wireApi": "Wire API", + "wireApi": "APIを接続", "modelAliases": "モデルエイリアス", "addModel": "モデルを追加", "routeModelPlaceholder": "{model} のルーティング先...", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2.追加", "antigravityStep2Suffix": "ホスト ファイルに 127.0.0.1 として追加します。", "antigravityStep3": "3. Antigravity を開くと、リクエストがプロキシされます。", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} はプロバイダーのエンドポイントにリクエストを送信します。MITMがそれらを傍受し、OmniRouteへリダイレクトします。", + "mitmStep1": "1. MITMを起動して、リクエストをOmniRoute経由でルーティングします。", + "mitmStep2Prefix": "2. 以下を追加します:", + "mitmStep2Suffix": "hostsファイルに127.0.0.1として追加します。", + "mitmStep3": "3. {toolName} を開くと、リクエストがプロキシされます。", "sudoPasswordRequiredTitle": "Sudo パスワードが必要です", "sudoPasswordHint": "ホスト ファイルとシステム プロキシ設定を変更するには、管理者パスワードが必要です。", "enterSudoPassword": "sudoパスワードを入力してください", @@ -2908,7 +2908,7 @@ "continue": "IDE で続行を実行し、移植可能な JSON ベースのプロバイダー構成が必要な場合に使用します。", "opencode": "ターミナルネイティブのエージェントの実行と OpenCode によるスクリプトによる自動化を希望する場合に使用します。", "kiro": "Kiro を統合し、OmniRoute からモデルのルーティングを一元的に制御する場合に使用します。", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Codeium/WindsurfモデルをOmniRoute経由でルーティングする、AIファーストのIDEを使用したい場合に利用します。", "antigravity": "Antigravity/Kiro トラフィックを MITM 経由でインターセプトし、OmniRoute にルーティングする必要がある場合に使用します。", "copilot": "OmniRoute キーとルーティング ルールを適用しながら、Copilot チャット スタイルの UX が必要な場合に使用します。", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2928,11 +2928,11 @@ "qwen": "Qwen Code CLI", "cursor": "カーソルAIコードエディター", "continue": "AIアシスタントを続ける", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode AIコーディングエージェント(ターミナル)", + "kiro": "Amazon Kiro — AI搭載IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "Sourcegraph AmpコーディングアシスタントCLI", "hermes": "エルメス AI ターミナルアシスタント", "hermes-agent": "Hermes Agent (by Nousresearch) - マルチモデル(委譲、ビジョン、圧縮など)をサポートする高度なターミナルAI", "custom": "汎用の OpenAI 互換 CLI または SDK 構成ジェネレーター", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter自律型コーディングエージェントCLI", "omp": "Oh My Piターミナルコーディングエージェント", "letta": "永続メモリとツール使用を備えたLetta CLIエージェント", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI互換プロバイダーをサポートする自己改善型RLMコーディングハーネス", "warp": "カスタムプロバイダーをサポートするWarp AIターミナル", "agent-deck": "Agent Deckマルチエージェントオーケストレーター", "5dive": "5dive — セルフホスト型のコーディングエージェント群。1つの認証プロファイルで全体をOmniRouteに向けます" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCodeをインストール", + "desc": "npmでインストール:npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "APIキー" }, "3": { - "title": "Set Base URL", + "title": "ベースURLを設定", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "モデルを選択" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Thinkingバリアントを使用", + "desc": "Thinkingモデルでは、--variant high/low/max を指定して実行します(以下のコマンド例を参照)。" } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro設定を開く", + "desc": "「設定」→「AIプロバイダー」に移動" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "ベースURL", + "desc": "OmniRouteのエンドポイントURLを貼り付け" }, "3": { - "title": "API Key" + "title": "APIキー" }, "4": { - "title": "Select Model" + "title": "モデルを選択" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI設定を開く", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "カスタムプロバイダーを追加", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "ベースURL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "APIキー", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "モデルを選択", + "desc": "ドロップダウンからモデルを選択" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "カスタムCLI", - "toolCategories": "Tool Categories", + "toolCategories": "ツールカテゴリー", "visibleToolsCount": "{count} 個のツールが利用可能", "customCliBuilderTitle": "OpenAI互換のCLIビルダー", "customCliBuilderDescription": "OpenAI 互換のベース URL、API キー、およびモデル ID を受け入れる CLI または SDK の環境変数と JSON スニペットを生成します。", @@ -3260,18 +3260,18 @@ "priorityDesc": "順次フォールバック: 最初にモデル 1、次にモデル 2 というように試行します。", "weightedDesc": "フォールバックを使用して重量パーセントに基づいてトラフィックを分散します。", "roundRobinDesc": "循環分散: 各リクエストはローテーションで次のモデルに送信されます。", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "コンテキストリレー", + "contextRelayDesc": "アカウントのローテーション時に引き継ぎ要約を使用してセッションの継続性を維持します", "randomDesc": "均一なランダム選択、その後残りのモデルへのフォールバック", "leastUsedDesc": "リクエストが最も少ないモデルを選択し、時間の経過とともに負荷のバランスをとります", "costOptimizedDesc": "価格に基づいて最初に最も安価なモデルにルーティングします", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "再利用可能な各プロンプトプレフィックスを常に同じプロバイダーアカウントにルーティングします", "resetAware": "リセット対応 RR", "resetAwareDesc": "残りの割り当てと 5 時間および毎週のリセットのバランスをとり、同様のスコアをラウンドロビンします。", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "クォータ加重", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "完全ランダム", + "strictRandomDesc": "シャッフルデッキ方式 — 再シャッフルする前に各モデルを1回ずつ使用します", "fusion": "フュージョン", "fusionDesc": "プロンプトをすべてのパネルモデルに並列で配信し、ジャッジモデルが1つの最終回答を統合します", "fusionJudgeModel": "ジャッジモデル", @@ -3288,13 +3288,13 @@ "retryDelay": "再試行遅延 (ミリ秒)", "concurrencyPerModel": "同時実行性 / モデル", "queueTimeout": "キューのタイムアウト (ミリ秒)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "引き継ぎしきい値", + "contextRelayHandoffThresholdHelp": "クォータ使用量がこのしきい値に達すると、アクティブなアカウントを使い切る前にOmniRouteが構造化された引き継ぎ要約を生成します。", + "contextRelayMaxMessages": "要約対象の最大メッセージ数", + "contextRelayMaxMessagesHelp": "リレー要約に圧縮する直近の履歴量を制限します。", + "contextRelaySummaryModel": "要約モデル", + "contextRelaySummaryModelHelp": "引き継ぎ要約の生成にのみ使用するオプションの上書きモデルです。空欄にすると、アクティブなコンボモデルを再利用します。", + "contextRelayProviderNote": "現在、コンテキストリレーはCodexアカウントのローテーション用に引き継ぎを生成します。継続性を最大限に高めるには、同じプロバイダーの複数アカウントと組み合わせてください。", "advancedHint": "グローバルなデフォルトを使用するには、空のままにします。これらはプロバイダーごとの設定をオーバーライドします。", "failoverBeforeRetry": "再試行前のフェイルオーバー", "maxSetRetries": "最大セット再試行回数", @@ -3345,40 +3345,40 @@ "weighted": "加重", "leastUsed": "最も使用頻度の低いもの", "costOpt": "コスト最適化", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "strategyGuideTitle": "この戦略の使用方法", + "strategyGuideWhen": "使用に適している場合", + "strategyGuideAvoid": "避けるべき場合", + "strategyGuideExample": "例", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "優先モデルが1つあり、障害発生時にのみフォールバックを使用したい場合。", + "avoid": "複数のモデルにリクエストを分散する必要がある場合。", + "example": "主要なコーディングモデルと、障害発生時に備えた低コストのバックアップ。" }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "複数のモデル間でトラフィック配分を制御する必要がある場合。", + "avoid": "長期にわたって正確な重みを維持できない場合。", + "example": "安定版モデル80%+カナリアモデル20%のロールアウト。" }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "予測可能で均等な分散が必要な場合。", + "avoid": "モデル間でレイテンシーやコストが大きく異なる場合。", + "example": "スループットを分散するため、複数のアカウントで同じモデルを使用する場合。" }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "最小限の設定でシンプルに分散したい場合。", + "avoid": "厳密なトラフィック保証が必要な場合。", + "example": "同等のモデルを使用した迅速なプロトタイピング。" }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "リアルタイムの需要に基づく適応型負荷分散が必要な場合。", + "avoid": "使用量ベースの負荷分散の効果が得られないほどトラフィックが少ない場合。", + "example": "特定のモデルに頻繁に負荷が集中する混合ワークロード。" }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "コスト削減を最優先する場合。", + "avoid": "料金データがない、または古い場合。", + "example": "低コストが優先されるバックグラウンドジョブやバッチジョブ。" }, "reset-aware": { "when": "クォータ テレメトリとさまざまなリセット ウィンドウを使用して、複数のアカウント間でルーティングします。", @@ -3386,19 +3386,19 @@ "example": "後で 80% のアカウントをリセットするよりも、明日に毎週 60% のアカウントをリセットすることを優先します。" }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "完全に均等に分散したい場合に使用します。各モデルを1回ずつ使用してから繰り返します。", + "avoid": "モデルごとに品質やレイテンシーが異なり、順序が重要な場合は避けてください。", + "example": "例:同じモデルの複数のアカウントに使用量を均等に分散する。" }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Power-of-Two-Choicesアルゴリズムを使用して低レイテンシーで選択したい場合に使用します。", + "avoid": "モデルが2つ以下の小規模な組み合わせでは、ラウンドロビンを上回る利点がないため避けてください。", + "example": "例:4つ以上の同等なモデルエンドポイントにまたがる高スループット推論。" }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "長時間のセッションで、作業コンテキストを失うことなくアカウントのローテーションに対応する必要がある場合に使用します。", + "avoid": "アカウントの切り替えがまれな場合や、追加の要約リクエストを行いたくない場合は避けてください。", + "example": "例:クォータの上限に近づいた際に複数のアカウントをローテーションするCodexセッション。" }, "fill-first": { "when": "次のプロバイダに移動する前に、あるプロバイダのクォータを完全に使い果たしたい場合に使用します。", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "リクエストが失敗するまでに試行する再試行回数。", + "retryDelay": "再試行までの初期待機時間。値を大きくすると、バースト負荷が軽減されます。", + "timeout": "中断するまでのリクエストの最大処理時間。", + "healthcheck": "異常なモデルやプロバイダーをルーティングの判断から除外します。", + "concurrencyPerModel": "ラウンドロビンでモデルごとに許可される同時リクエストの最大数。", + "queueTimeout": "タイムアウトするまでリクエストがキュー内で待機できる時間。", "failoverBeforeRetry": "有効にすると、アップストリーム エラーが発生すると、次のコンボ ターゲットへの即時フェイルオーバーがトリガーされ、すべての再試行とフォールバック URL がスキップされます。", "maxSetRetries": "すべてのターゲットが失敗した場合にターゲット セット全体を再試行する回数。 0 = セットレベルの再試行なし。", "setRetryDelayMs": "設定レベルの再試行間の遅延により、一時的な問題を解決する時間が与えられます。", "disableSessionStickiness": "最初のメッセージのハッシュによって会話全体を1つの接続に固定する代わりに、リクエストごとに異なる接続にローテーションします。グローバルデフォルトを上書きします。マルチターンチャットのプロンプトキャッシュヒットを維持するには、Inheritのままにしてください。" }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "クイックテンプレート", + "templatesDescription": "開始プロファイルを適用してから、モデルと設定を調整します。", + "templateApply": "テンプレートを適用", + "templateHighAvailability": "高可用性", + "templateHighAvailabilityDesc": "ヘルスチェックと安全な再試行を備えた優先度ベースのルーティング。", + "templateCostSaver": "コスト削減", + "templateCostSaverDesc": "予算を最優先するワークロード向けのコスト最適化ルーティング。", + "templateBalanced": "負荷分散", + "templateBalancedDesc": "需要を長期的に分散するための最少使用ルーティング。", + "usageGuideHide": "非表示", + "usageGuideDontShowAgain": "今後表示しない", + "usageGuideShow": "ガイドを表示", + "quickTestTitle": "コンボを検証できます", + "quickTestDescription": "今すぐテストを実行して、フォールバックとレイテンシーの動作を確認します。", + "testNow": "今すぐテスト", + "pricingCoverage": "料金情報の網羅状況", + "pricingCoverageHint": "コスト最適化は、コンボ内のすべてのモデルに料金情報がある場合に最も効果的です。", + "pricingAvailable": "料金情報あり", + "pricingMissing": "料金情報なし", + "pricingAvailableShort": "料金あり", + "pricingMissingShort": "料金なし", "fallbackOnlyOnQuotaExhaustion": "クォータが尽きたときのみ進む", "fallbackOnlyOnQuotaExhaustionShort": "クォータ専用フォールバック", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "warningRoundRobinSingleModel": "ラウンドロビンは、モデルが2つ以上ある場合に最も有効です。", + "warningCostOptimizedPartialPricing": "{total}個のモデルのうち、料金情報があるのは{priced}個のみです。ルーティングは部分的にのみコストを考慮する可能性があります。", + "warningCostOptimizedNoPricing": "このコンボの料金データが見つかりません。コスト最適化では、予期しないルーティングが行われる可能性があります。", + "filterAll": "すべて", + "filterIntelligent": "インテリジェント", + "filterDeterministic": "決定論的", + "filterEmptyTitle": "この戦略フィルターに一致するコンボはありません。", + "filterEmptyIntelligentDescription": "インテリジェントルーティングダッシュボードに表示するには、autoまたはLKGPコンボを作成してください。", + "filterEmptyDeterministicDescription": "現在存在するのはautoコンボとLKGPコンボのみです。「すべて」に戻すか、決定論的コンボを作成してください。", "readinessTitle": "保存する準備はできましたか?", "readinessDescription": "このコンボを作成または更新する前に、チェックリストを確認してください。", "readinessCheckName": "コンボ名は有効です", @@ -3478,12 +3478,12 @@ "saveBlockModels": "少なくとも 1 つのモデルを追加します。", "saveBlockWeighted": "重みを 100% に設定します (現在: {total}%)。", "saveBlockPricing": "少なくとも 1 つのモデルに価格を追加するか、別の戦略を選択してください。", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "推奨設定", + "applyRecommendations": "推奨事項を適用", + "recommendationsUpdated": "{strategy}の推奨事項を更新しました。", + "recommendationsApplied": "このコンボに推奨事項を適用しました。", + "intelligentPanelTitle": "インテリジェントルーティングダッシュボード", + "intelligentPanelDesc": "この自動ルーティングコンボのリアルタイムスコアと正常性ステータスです。", "configOnlyStatus": "設定ビュー", "configOnlyHint": "このパネルにはルーティング入力のみが表示されます。ライブのブレーカー状態はHealthページで確認できます。", "routingInputs": "ルーティング入力", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "不明なプロバイダープレフィックスです。", "builderDynamicAccountShort": "動的アカウント", "builderNeedValidName": "続行する前に有効なコンボ名を定義してください。", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "ステータス概要", + "normalOperation": "正常稼働", + "allProvidersHealthy": "各プロバイダーのルーティング状態は正常です。", + "incidentMode": "インシデントモード", + "highCircuitBreakerRate": "サーキットブレーカーの作動率が高いことを検出しました。", + "activeModePack": "有効なモードパック", + "modePackUpdated": "モードパックを{pack}に更新しました。", + "modePackHint": "コンボを再構築せずに、プリセットを切り替えてルーティングエンジンの優先傾向を調整できます。", + "providerScores": "プロバイダースコア", + "allProvidersEvaluated": "候補プールが設定されていません。実行時にすべての有効なプロバイダーが評価されます。", + "excludedProviders": "除外されたプロバイダー", + "excludedProvidersHint": "サーキットブレーカーがOPEN状態のプロバイダーは、一時的にルーティングから除外されます。", + "noExcludedProviders": "現在除外されているプロバイダーはありません。", + "cooldownMinutes": "クールダウン:{minutes}分", + "builderIntelligentTitle": "インテリジェントルーティング設定", + "builderIntelligentDesc": "この自動ルーティングコンボの多要素スコアリングエンジンを設定します。", + "candidatePoolLabel": "候補プール", + "candidatePoolHint": "このエンジンが評価するプロバイダーを選択します。すべての有効なプロバイダーを使用する場合は空のままにしてください。", + "candidatePoolEmpty": "有効なプロバイダーはまだありません。", + "candidatePoolAllProviders": "すべてのプロバイダー", + "modePackLabel": "モードパック", + "routerStrategyLabel": "ルーター戦略", + "strategyRules": "ルール(6要素スコアリング)", + "explorationRateLabel": "探索率", + "explorationRateHint": "リクエストの{percent}%で、最適ではないプロバイダーを探索できます。", + "budgetCapLabel": "予算上限(USD/リクエスト)", + "budgetCapPlaceholder": "上限なし", + "advancedWeightsTitle": "詳細設定:スコアリングの重み", "nestedComboFlatten": "ネストされたコンボをフラット化", "nestedComboExecute": "ネストされたコンボをターゲットとして実行", "effectiveRoutingShare": "有効なルーティングシェア (重み ÷ 合計)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "クォータ", + "weightHealth": "稼働状態", + "weightCostInv": "コスト", + "weightLatencyInv": "レイテンシー", + "weightTaskFit": "タスク適合度", + "weightStability": "安定性", + "weightTierPriority": "ティア", + "weightCacheAffinity": "キャッシュヒット親和性", "weightSessionAvailability": "セッションの空き状況", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "インテリジェントルーティング設定", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "フェイルセーフのベースライン", + "description": "1つのプライマリモデルを使用し、フォールバックチェーンは短く信頼性の高いものにします。", + "tip1": "最も信頼性の高いモデルを最初に配置してください。", + "tip2": "同等の品質を持つバックアップモデルを1~2個用意してください。", + "tip3": "安全な再試行を使用して、プロバイダーの一時的な障害を吸収します。" }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "制御されたトラフィック分割", + "description": "カナリアリリースやモデル間の段階的な移行に最適です。", + "tip1": "90/10など、控えめな分割から開始してください。", + "tip2": "合計を100%に保ち、変更後は自動的にバランスを調整します。", + "tip3": "カナリアの比率を増やす前に、成功率とレイテンシーを監視してください。" }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "予測可能な負荷分散", + "description": "モデルが同等で、均等な分散が必要な場合に最適です。", + "tip1": "少なくとも2つのモデルを使用してください。", + "tip2": "急激な過負荷を避けるため、同時実行数の上限を設定してください。", + "tip3": "飽和時に早期失敗させるため、キューのタイムアウトを設定してください。" }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "少ない設定で迅速に分散", + "description": "厳密な保証を必要とせず、シンプルに分散したい場合に使用します。", + "tip1": "レイテンシー特性が類似したモデルを使用してください。", + "tip2": "ランダムな失敗を吸収するため、再試行を有効にしておきます。", + "tip3": "厳格な SLA が求められる用途ではなく、実験用途に適しています。" }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "適応型負荷分散", + "description": "時間の経過とともに負荷集中を軽減するため、使用頻度の低いモデルへルーティングします。", + "tip1": "継続的なトラフィック環境でより効果を発揮します。", + "tip2": "より安全に負荷分散するため、ヘルスチェックと組み合わせてください。", + "tip3": "モデルごとの使用状況を追跡し、分散効果を検証してください。" }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "予算優先ルーティング", + "description": "料金メタデータが利用可能な場合、より低コストのモデルへルーティングします。", + "tip1": "選択したすべてのモデルの料金情報が揃っていることを確認してください。", + "tip2": "難しいプロンプトに備えて、高品質なフォールバックを維持してください。", + "tip3": "コストが主要 KPI となるバッチ処理やバックグラウンドジョブに使用してください。" }, "reset-aware": { "title": "リセットを意識したアカウントのローテーション", @@ -3597,11 +3597,11 @@ "tip3": "タイバンドを小さく保ち、同等のアカウントが引き続き公平にローテーションできるようにします。" }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "シャッフルデッキ分散", + "description": "再シャッフルする前に、各サイクルですべてのモデルが1回ずつ使用されます。", + "tip1": "効果的に分散するには、少なくとも2つのモデルを使用してください。", + "tip2": "同等の性能を持つモデル間で最も効果を発揮します。", + "tip3": "複数の API アカウント間で負荷を分散する場合に最適です。" }, "fill-first": { "description": "フォールバックする前に、プロバイダー クォータを順番に使い果たします。", @@ -3646,86 +3646,86 @@ "title": "2 つの選択肢の力" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "無料スタック($0)", + "templateFreeStackDesc": "すべての無料プロバイダー間でラウンドロビンします:Kiro (Claude)、Qoder (5 models)、Qwen (4 models)。コストはゼロで、コーディングが止まることはありません。", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP モード", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "コンボ入門", + "wizardGuideDesc": "モデルコンボを作成し、AI トラフィックをインテリジェントにルーティングします", + "wizardGuideHint": "または、上の「+ コンボを作成」をクリックします", + "createFirstCombo": "最初のコンボを作成", + "wizardStep1Title": "コンボに名前を付ける", + "wizardStep1Desc": "ルーティングルールで識別できるように、コンボに一意の名前を付けます", + "wizardStep2Title": "モデルを追加", + "wizardStep2Desc": "AI モデルを選択し、フォールバックの優先順位に並べます", + "wizardStep3Title": "戦略を選択", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "確認して保存", + "wizardStep4Desc": "設定を確認し、コンボを有効化します", + "usageGuideInvokeTitle": "このコンボの呼び出し方", + "usageGuideInvokeDesc": "コンボの正確な名前をモデルとして送信します。例:model: \"my-combo\"(または combo/my-combo)。", + "usageGuideInvokeAutoNote": "auto と auto/* は、コンボを使用しない別のゼロ設定ルーターです(コンボ名が文字どおり auto の場合を除く)。", + "usageGuideInvokeOpenrouterNote": "openrouter/auto は実在する有料の OpenRouter 製品(Auto Best Available)であり、OmniRoute のエイリアスではありません。Settings → Routing → Hide paid models から除外してください。", + "emailVisibilityStateOn": "オン", + "emailVisibilityStateOff": "オフ", + "reorderHandle": "ドラッグして並べ替え", + "failedReorder": "モデルの並べ替えに失敗しました", + "builderFlowTitle": "コンボビルダーフロー", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "基本設定", + "description": "名前と開始テンプレート" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "ステップ", + "description": "プロバイダー、モデル、アカウントの選択" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "戦略", + "description": "ルーティング動作と詳細設定" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "スマートルーティング", + "description": "自動ルーティングの候補プール、プリセット、スコアリング" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "確認", + "description": "保存前の最終検証" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "ステージ完了", + "builderStageCurrent": "現在のステージ", + "builderStagePending": "保留中", + "builderStageLocked": "ロック中 — 先に前のステージを完了してください", + "builderTitle": "コンボを作成", + "builderBrowseCatalog": "カタログを閲覧", + "builderProvider": "プロバイダー", + "builderLoadingProviders": "プロバイダーを読み込み中...", + "builderSelectProvider": "プロバイダーを選択", + "builderModel": "モデル", + "builderSelectModel": "モデルを選択", + "builderProviderFirst": "先にプロバイダーを選択", + "builderAccount": "アカウント", + "builderPreview": "プレビュー", + "builderAddStep": "ステップを追加", "builderDuplicateExact": "この正確なプロバイダー/モデル/アカウントのステップはすでにコンボに含まれています。", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "コンボ参照", + "builderAddComboRef": "コンボ参照を追加", + "builderComboRefStep": "コンボ参照を追加", + "builderPinnedAccount": "固定アカウント", + "builderLegacyEntry": "レガシーエントリ", + "reviewName": "名前", + "reviewStrategy": "戦略", + "reviewSteps": "ステップ", + "reviewAccounts": "アカウント", + "reviewProviders": "プロバイダー", + "reviewComboRefs": "コンボ参照", + "reviewAdvanced": "詳細設定", + "reviewAgentFlags": "エージェントフラグ", + "reviewSequence": "モデルシーケンス", + "reviewNoSteps": "ステップが設定されていません", "builderStagesDescription": "各ステージを完了して、コンボを定義し、ステップを構築し、ルーティング戦略を選択し、結果を確認します。", "builderStepsDescription": "各コンボ ステップをプロバイダー、モデル、アカウントの順に構築します。これにより、異なるアカウント間で同じプロバイダーとモデルを再利用できます。", "selectProvider": "プロバイダーの選択", @@ -3800,27 +3800,27 @@ "range7d": "7日間", "range30d": "30日", "range90d": "90日", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180日間", + "range365d": "365日間", "rangeAll": "オールタイム", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "アクティブなモデル", + "flatRateEstimateNotice": "定額制サブスクリプションのトークン料金見積もりを含みます。請求額ではありません。", + "flatRateEstimateForecast": "予測には定額料金の見積もりが含まれます。", + "selectedWindow": "選択した期間", + "activeProviders": "アクティブなプロバイダー", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "本日の支出", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "プロバイダー別シェア", + "topProviders": "上位プロバイダー", + "costTrend": "コスト推移", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "上位モデル", "requestsInWindow": "Requests In Window", "tokenUsage": "トークンの使用法", "totalTokens": "総トークン数", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "APIエンドポイント", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "ほとんどのSDKやツールでは、OpenAI互換エンドポイントを使用してください。", + "testEndpoint": "エンドポイントをテスト →", + "advancedProtocols": "高度なプロトコル", "available": "利用可能なエンドポイント", "cloudProxy": "クラウドプロキシ", "disableConfirm": "クラウド プロキシを無効にしてもよろしいですか?", @@ -3900,7 +3900,7 @@ "disableCloud": "クラウドを無効にする", "enableCloud": "クラウドを有効にする", "modelsAcrossEndpoints": "{endpoints} エンドポイントにわたる {models} モデル", - "loadingModels": "Loading available models...", + "loadingModels": "利用可能なモデルを読み込んでいます...", "chatDesc": "すべてのプロバイダーとのストリーミングおよび非ストリーミング チャット", "embeddings": "埋め込み", "embeddingsDesc": "検索および RAG パイプライン用のテキスト埋め込み", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "音声ファイルをテキストに変換する (Whisper)", "textToSpeech": "テキスト読み上げ", "textToSpeechDesc": "テキストを自然な音声に変換する", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "音楽生成", + "musicDesc": "ComfyUI(Stable Audio、MusicGen)を使用して音楽やオーディオトラックを生成します", "moderations": "モデレーション", "moderationsDesc": "コンテンツの管理と安全性の分類", "responsesDesc": "Codexおよび高度なエージェントワークフロー向けOpenAI Responses API", "listModelsDesc": "接続されたすべてのプロバイダーの利用可能なモデルを一覧表示", "settingsApiDesc": "API経由でOmniRouteの設定を読み取り・変更", - "settingsApi": "Settings API", + "settingsApi": "設定API", "categoryCore": "コアAPI", "categoryMedia": "メディア&マルチモーダル", - "categorySearch": "Search & Discovery", + "categorySearch": "検索とディスカバリー", "categoryUtility": "ユーティリティ&管理", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "ウェブ検索", + "webSearchDesc": "自動フェイルオーバーとキャッシュ機能を備えた、複数プロバイダー横断の統合ウェブ検索", + "searchProvider": "検索プロバイダー", + "searchProviderDesc": "このプロバイダーは、POST /v1/search を介したウェブ検索に使用されます。モデルの設定は不要です。APIキーを接続すれば、検索プロバイダーをすぐに使用できます。", "enableCloudTitle": "クラウドプロキシを有効にする", "whatYouGet": "得られるもの", "cloudBenefitAccess": "世界中のどこからでも API にアクセス", @@ -3963,57 +3963,57 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "トンネルを有効化", + "cloudflaredInstallAndEnable": "インストールして有効化", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "実行中", + "cloudflaredStarting": "起動中", + "cloudflaredStoppedState": "停止中", + "cloudflaredNotInstalled": "未インストール", + "cloudflaredUnsupported": "サポート対象外", + "cloudflaredError": "エラー", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "直近のエラー:{error}", "providerModelsTitle": "{provider} — モデル", "noModelsForProvider": "このプロバイダーで利用できるモデルはありません。", "chat": "チャット", "embedding": "埋め込み", "image": "画像", "custom": "カスタム", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {# モデル} other {# モデル}}", + "sectionTitle": "統合インターフェース", + "sectionDescription": "OpenAI互換APIと運用プロトコルエンドポイント", "tabApis": "API", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "プロトコル", + "tabsAria": "エンドポイントセクション", + "protocolsTitle": "プロトコル", + "protocolsDescription": "MCPとA2Aは、専用の可観測性と制御機能を備えたファーストクラスのエンドポイントです。", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "stdio 経由の Model Context Protocol", + "a2aCardTitle": "A2A サーバー", + "a2aCardDescription": "Agent2Agent JSON-RPC エンドポイント", + "protocolToolsLabel": "ツール", + "protocolTasksLabel": "タスク", + "protocolActiveStreamsLabel": "アクティブなストリーム", + "protocolLastActivity": "最終アクティビティ", + "quickStart": "クイックスタート", + "openMcpDashboard": "MCP 管理を開く", + "openA2aDashboard": "A2A 管理を開く", + "mcpQuickStartTitle": "MCP クイックスタート", + "mcpQuickStartStep1": "`omniroute --mcp` で MCP サーバーを実行します。", + "mcpQuickStartStep2": "stdio トランスポート経由で接続するように MCP クライアントを設定します。", + "mcpQuickStartStep3": "`omniroute_get_health` や `omniroute_list_combos` などのツールを呼び出します。", + "a2aQuickStartTitle": "A2A クイックスタート", + "a2aQuickStartStep1": "`/.well-known/agent.json` でエージェントカードを検出します。", + "a2aQuickStartStep2": "`message/send` または `message/stream` を使用して、JSON-RPC リクエストを `POST /a2a` に送信します。", + "a2aQuickStartStep3": "`tasks/get` と `tasks/cancel` を使用してタスクを追跡および制御します。", + "completionsLegacy": "補完(レガシー)", + "completionsLegacyDesc": "従来の OpenAI テキスト補完 — プロンプト文字列形式とメッセージ配列形式の両方に対応", "messagesApi": "メッセージ", "messagesApiDesc": "Claude 互換プロバイダー用のネイティブ Anthropic Messages API 形式", "imageEdits": "画像編集", @@ -4022,40 +4022,40 @@ "batchApiDesc": "大量のリクエストのバッチを非同期で処理します (OpenAI 互換)", "filesApi": "ファイルAPI", "filesApiDesc": "バッチ処理用にファイルをアップロードおよび管理する", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "動画生成", + "videoDesc": "ComfyUI や Stable Video Diffusion などの AI モデルを使用して動画を生成します。", + "tailscaleRequestFailed": "Tailscale のステータスを読み込めませんでした", + "tailscaleEnableFailed": "Tailscale Funnel を有効にできませんでした", + "tailscaleWaitingForLogin": "開いたブラウザータブで Tailscale へのログインを完了してください。OmniRoute は自動的に再試行します。", + "tailscaleLoginTimedOut": "Tailscale へのログイン待機がタイムアウトしました", + "tailscaleWaitingForFunnel": "開いたブラウザータブで、このデバイスの Funnel を有効にしてください。OmniRoute はポーリングを続けます。", + "tailscaleFunnelTimedOut": "Tailscale Funnel が有効になるまでの待機がタイムアウトしました", + "tailscaleStarted": "Tailscale Funnel が有効になりました", + "tailscaleDisableFailed": "Tailscale Funnel を無効にできませんでした", + "tailscaleStopped": "Tailscale Funnel が無効になりました", + "tailscaleInstallFailed": "Tailscale をインストールできませんでした", + "tailscaleInstallProgress": "処理中...", + "tailscaleInstalled": "Tailscale が正常にインストールされました", + "tailscaleRunning": "実行中", + "tailscaleNeedsLogin": "ログインが必要", + "tailscaleStoppedState": "停止中", + "tailscaleNotInstalled": "未インストール", + "tailscaleUnsupported": "サポート対象外", + "tailscaleError": "エラー", + "tailscaleDisable": "Funnelを停止", + "tailscaleInstallAndEnable": "インストールして有効化", + "tailscaleLoginAndEnable": "ログインして有効化", + "tailscaleEnable": "Funnelを有効化", + "tailscaleUrlNotice": "Tailscaleの.ts.netアドレスを使用します。初回使用時にはログインとFunnelの承認が必要な場合があります。", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "このマシンをTailscaleで認証してから、Funnelを有効にします。", + "tailscaleBinaryPath": "バイナリ: {path}", + "tailscaleLastError": "直近のエラー: {error}", + "tailscaleInstallTitle": "Tailscaleをインストール", + "tailscaleInstallIntro": "このマシンにTailscaleをインストールし、OmniRouteでFunnelを有効にするための準備を行います。", + "tailscaleInstallPasswordHint": "macOSとLinuxでは、パッケージのインストールとデーモンの起動にsudoが必要な場合があります。", + "tailscaleSudoPlaceholder": "sudoパスワード(任意)", + "tailscaleInstalling": "インストール中", "tailscaleSudoLabel": "Sudo パスワード (macOS/Linux では必須)", "ngrokTitle": "ングロク トンネル", "ngrokRunning": "ランニング", @@ -4144,9 +4144,9 @@ "tierPublic": "公開", "hideInternal": "内部を非表示", "showInternal": "内部を表示", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "カスタムシステムプロンプト", + "customSystemPromptDescription": "すべてのモデルリクエストにカスタムシステムプロンプトを挿入します", + "customSystemPromptPlaceholder": "例:常に海賊口調で応答してください...", "obsidianEnterToken": "Obsidian APIトークンを入力してください", "obsidianConnectFailed": "接続に失敗しました", "obsidianConnectionFailed": "接続に失敗しました", @@ -4207,9 +4207,9 @@ "featureAuth": "エンドポイントごとのAPIキーとOAuthスコープ管理" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", + "loading": "MCPダッシュボードを読み込み中...", + "activate": "有効化", + "deactivate": "無効化", "confirmSwitchCombo": "{action} コンボ「{combo}」を確認しますか?", "switchComboFailed": "コンボ状態の切り替えに失敗しました。", "switchComboSuccess": "コンボ「{combo}」を更新しました。", @@ -4237,119 +4237,119 @@ "mcpStep2": "stdioトランスポート経由で接続するようにMCPクライアントを設定します。", "mcpStep3": "{code1} や {code2} などのツールを呼び出します。", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "セッション稼働時間", + "lastHeartbeat": "直近のハートビート", + "activity24h": "アクティビティ(24時間)", + "totalCalls": "総呼び出し回数", + "successRate": "成功率", + "avgLatency": "平均レイテンシー", + "topTools": "使用回数上位のツール", + "noToolCalls24h": "過去24時間にツールの呼び出しはありません。", + "runtimeDetails": "ランタイムの詳細", + "transport": "トランスポート", + "scopesEnforced": "スコープの適用", + "yes": "はい", + "no": "いいえ", + "lastCall": "直近の呼び出し", + "heartbeatPath": "ハートビートパス", + "operationalControls": "運用コントロール", + "switchCombo": "切り替えの組み合わせ", + "inactive": "非アクティブ", + "active": "アクティブ", + "activateCombo": "コンボを有効化", + "deactivateCombo": "コンボを無効化", + "applyResilienceProfile": "レジリエンスプロファイルを適用", + "profileAggressive": "積極的", + "profileBalanced": "バランス型", + "profileConservative": "保守的", + "applyProfile": "プロファイルを適用", + "resetCircuitBreakers": "サーキットブレーカーをリセット", + "resetCircuitBreakersHelp": "プロバイダーの現在のブレーカー状態と失敗回数をクリアします。", + "resetAllBreakers": "すべてのブレーカーをリセット", + "toolsAndScopes": "ツールとスコープ", + "tableTool": "ツール", + "tableScopes": "スコープ", + "tablePhase": "フェーズ", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "監査ログ", + "auditSummary": "呼び出し数: {total} | {totalPages}ページ中{page}ページ", + "allTools": "すべてのツール", + "allResults": "すべての結果", + "success": "成功", + "failure": "失敗", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "監査エントリを読み込んでいます...", + "noAuditEntriesForFilters": "現在のフィルターに一致する監査エントリはありません。", + "tableTimestamp": "タイムスタンプ", + "tableDuration": "所要時間", + "tableResult": "結果", + "tableApiKey": "APIキー", + "failed": "失敗", + "previous": "前へ", + "next": "次へ", + "apiKeyId": "APIキーID", + "offset": "オフセット", + "limit": "上限", + "tool": "ツール" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2Aダッシュボードを読み込んでいます...", + "confirmCancelTask": "タスク {taskId} をキャンセルしますか?", + "cancelTaskFailed": "タスクをキャンセルできませんでした。", + "cancelTaskSuccess": "タスク {taskId} をキャンセルしました。", + "smokeSendFailed": "message/send スモークテストに失敗しました。", + "smokeSendSuccessWithTask": "message/send 成功(タスク {taskId})。", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream のスモークテストに失敗しました。", + "smokeStreamSuccessWithTask": "message/stream 成功(タスク {taskId}{stateSuffix})。", + "smokeStreamNoTaskId": "message/stream はタスク ID なしで終了しました。", + "health": "稼働状況", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "タスク総数", + "activeStreams": "アクティブなストリーム", + "lastTask": "最新のタスク", + "taskStateOverview": "タスク状態の概要", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "送信済み", + "working": "処理中", + "completed": "完了", + "failed": "失敗", + "cancelled": "キャンセル済み" }, - "agentCard": "Agent card", + "agentCard": "エージェントカード", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "バージョン", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "機能", + "agentCardNotAvailable": "エージェントカードを利用できません。", + "quickValidation": "クイック検証", + "quickValidationDescription": "稼働中の `/a2a` エンドポイントを介してスモークテストを実行します。", + "runMessageSend": "message/send を実行", + "runMessageStream": "message/stream を実行", + "taskManagement": "タスク管理", + "taskSummary": "全 {total} 件のタスク | {totalPages} ページ中 {page} ページ目", + "allStates": "すべて", + "allSkills": "すべてのスキル", + "loadingTasks": "タスクを読み込んでいます...", + "noTasksForFilters": "現在のフィルターに一致するタスクはありません。", + "tableTask": "タスク", + "tableSkill": "スキル", + "tableState": "状態", + "tableUpdated": "更新日時", + "tableActions": "操作", + "view": "表示", + "cancel": "キャンセル", + "previous": "前へ", + "next": "次へ", + "taskDetail": "タスク詳細", + "close": "閉じる", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "イベント", + "artifacts": "成果物", + "tablePhase": "テーブルフェーズ", + "offset": "オフセット", + "limit": "上限", + "skill": "スキル", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "メッセージ/送信", "rpcMethodStream": "メッセージ/ストリーム", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "アクション", + "addMemory": "メモリを追加", + "allTypes": "すべてのタイプ", "cancel": "キャンセル", "checkHealth": "健康状態をチェックする", "checkingHealth": "確認中…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "仕組み", "howWorksContent": "1. 自動抽出: 各応答の最後に、事実とエピソードが自動的に検出され保存されます。\n2. 検索: 各応答の前に、FTS5(完全一致)、ベクトル(セマンティック)、またはハイブリッド RRF を介して最も関連性の高いメモリが検索されます。\n3. 挿入: 応答の品質を向上させるために、関連するメモリがアシスタントのコンテキストに挿入されます。\n4. 管理: このページを使用して、古いメモリの表示、編集、エクスポート、圧縮を行います。" }, - "content": "Content", + "content": "内容", "contentPlaceholder": "覚えておくべき値または JSON コンテンツ", - "created": "Created", - "delete": "Delete", + "created": "作成日時", + "delete": "削除", "deleteConfirmDesc": "この操作は取り消せません。メモリは完全に削除されます。", "deleteConfirmTitle": "メモリを削除しますか?", - "description": "View and manage stored memory entries", + "description": "保存されたメモリエントリを表示・管理", "editMemory": "メモリを編集", "editModal": { "title": "メモリの編集", @@ -4444,20 +4444,20 @@ "configureCta": "設定", "vectorStoreInstallHint": "ベクトル検索を有効にするには: npm install sqlite-vec (WASMではなくネイティブのNode.jsが必要) を実行し、再起動してください。" }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "エピソード記憶", + "export": "エクスポート", + "factual": "事実記憶", "healthUnknown": "健康状態不明", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "ヒット率", + "import": "インポート", "importError": "ファイルのインポートに失敗しました", "importResult": "{imported} 件をインポート、{skipped} 件をスキップしました", - "key": "Key", + "key": "キー", "keyPlaceholder": "例: user.preferences.テーマ", "loading": "Loading memories...", - "memories": "Memories", + "memories": "メモリ", "next": "次へ", - "noMemories": "No memories found", + "noMemories": "メモリが見つかりません", "pageInfo": "ページ {page} / {totalPages} (合計 {total})", "pipelineError": "パイプラインエラー", "pipelineOk": "パイプラインは OK ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "プレビューの取得に失敗しました" }, "previous": "前へ", - "procedural": "Procedural", + "procedural": "手続き記憶", "qdrant": { "title": "Qdrant (ベクトルストア ティア2)", "description": "スケーラブルなセマンティック検索のためのオプションのQdrant連携", @@ -4534,8 +4534,8 @@ }, "save": "保存", "saving": "保存中...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "メモリを検索...", + "semantic": "意味記憶", "summarize": { "title": "古いメモリの圧縮", "noCandidates": "圧縮対象のメモリはありません(基準:30日以上経過)。", @@ -4547,8 +4547,8 @@ "playground": "プレイグラウンド", "engine": "エンジン" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "メモリ管理", + "tokensUsed": "使用トークン数", "tooltip": { "totalEntries": "このAPIキーに保存されているメモリの総数", "tokensUsed": "アクティブなメモリによって占有されている推定総トークン数", @@ -4558,15 +4558,15 @@ "procedural": "アシスタントが従うべき手順、ワークフロー、および指示", "semantic": "概念、好み、およびドメイン知識" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "総エントリ数", + "type": "タイプ", "memoryEnabled": "メモリ有効" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "スキル", + "description": "AIスキルの管理と監視", + "skillsTab": "スキル", + "executionsTab": "実行履歴", "selectSkillToInspect": "検査するスキルを左側から選択してください。", "schemaTab": "スキーマ", "handlerTab": "ハンドラー", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "テストを実行 (プレースホルダー)", "setModeAria": "モードを {mode} に設定", "uninstallSkill": "スキルをアンインストール", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "サンドボックス", + "loading": "スキルを読み込んでいます...", + "noSkills": "スキルが見つかりません", + "noExecutions": "実行が見つかりません", + "enabled": "有効", + "disabled": "無効", "delete": "削除", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "バージョン", + "tableDescription": "説明", + "skill": "スキル", + "status": "ステータス", + "duration": "所要時間", + "time": "時刻", + "sandboxConfig": "サンドボックス設定", + "cpuLimit": "CPU 制限", + "cpuLimitDesc": "スキルごとの最大実行時間", + "memoryLimit": "メモリ制限", + "memoryLimitDesc": "最大メモリ割り当て量", + "timeout": "タイムアウト", + "timeoutDesc": "応答の最大待機時間", + "networkAccess": "ネットワークアクセス", + "networkAccessDesc": "外部へのネットワークリクエストを許可", + "mode": "モード", "q": "Q", "filterSkillsPlaceholder": "名前、説明、またはタグでスキルをフィルタリングする", "allModes": "すべてのモード", @@ -4665,13 +4665,13 @@ "retry": "再試行", "allOperational": "すべてのシステムが稼働中", "issuesDetected": "システムの問題が検出されました", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute は準備完了です", + "healthVerdictActionRequired": "完全な動作を復元するには対応が必要です", + "healthVerdictCoolingDown": "最近の変更後のクールダウン中", + "healthSubtitle": "システムヘルスチェック", + "advancedDiagnosticsTitle": "高度な診断", + "hide": "非表示", + "show": "表示", "updatedAt": "{time} を更新しました", "latency": "レイテンシー", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "プロバイダー", "configuredProvidersLabel": "ダッシュボードで設定", "configuredProvidersHint": "実行時の状態に関係なく、認証情報を持つプロバイダーは /dashboard/providers に保存されます。", - "activeProviders": "{count} active", + "activeProviders": "{count} 件がアクティブ", "activeProvidersHint": "リクエストのルーティングが現在有効になっている構成済みプロバイダー。", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} 件を監視中", "monitoredProvidersHint": "現在、プロバイダーはサーキット ブレーカー ヘルス モニターによって追跡されています。", "healthyCount": "{count} は健康です", "nodeVersion": "ノード {version}", @@ -4721,11 +4721,11 @@ "resetting": "リセット中...", "resetAll": "すべてリセット", "until": "{time} まで", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "上限到達", + "learnedFromHeaders": "ヘッダーから取得", + "remainingOfLimit": "残り {remaining}/{limit}", + "throttleStatus": "スロットル:{value}", + "lastHeaderUpdate": "ヘッダー更新:{age}", "databaseHealth": "データベースの健全性", "databaseHealthDescription": "古いクォータ/ドメイン行や破損したコンボ参照を診断して修復します。", "status": "ステータス", @@ -4888,28 +4888,28 @@ "previous": "前へ", "next": "次へ", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "詳細を表示", + "eventMetadata": "イベントメタデータ", + "eventPayload": "イベントペイロード", + "requestId": "リクエスト ID", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "オフセット", + "limit": "上限", + "status": "ステータス", + "resourceType": "リソースタイプ", + "totalEntries": "合計エントリ数", + "tab": "タブ", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "閉じる", + "runningRequests": "アクティブなリクエスト", + "runningRequestsDesc": "現在実行中のアップストリームリクエストをリアルタイムで表示", "clearAll": "すべてクリア", "confirmClearActiveRequests": "アクティブなリクエストをすべてクリアしますか?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "モデル", + "provider": "プロバイダー", + "account": "アカウント", + "elapsed": "経過時間", "activeStage": "ステージ", "activeStageUnknown": "アップストリームに未送信", "activeStageRegistered": "登録済み", @@ -4919,32 +4919,32 @@ "activeStageRateLimitSlotAcquired": "レート制限スロット取得済み", "activeStageSendingToProvider": "アップストリームに送信中", "activeStageProviderResponseStarted": "アップストリームの応答開始", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "件数", + "payloads": "ペイロード", + "viewPayloads": "表示", + "activeCount": "{count} 件がアクティブ", + "clientPayload": "クライアントリクエストのペイロード", + "upstreamPayload": "アップストリームプロバイダーのペイロード", + "upstreamNotSentYet": "まだアップストリームに送信されていません", + "runningRequestDetailMeta": "アカウント: {account} — 経過時間: {elapsed}", + "export": "エクスポート", + "exporting": "エクスポート中...", + "exportFailed": "エクスポートに失敗しました", "cleanHistoryButton": "履歴をクリア", "cleanHistoryTitle": "ログ履歴をクリアしますか?", "cleanHistoryMessage": "これにより、すべてのリクエストログ行、レガシー詳細行、および DATA_DIR/call_logs 配下のローカルアーティファクトファイルが永久に削除されます。クリーンアップ後にライブページが更新されます。", "cleanHistoryConfirm": "履歴をクリア", "cleanHistoryCancel": "キャンセル", "cleanHistorySuccess": "{deleted} 件のログエントリ、{deletedArtifacts} 個のアーティファクト、および {deletedDetailedLogs} 行のレガシー詳細行をクリーンアップしました。", - "cleanHistoryEmpty": "No request log history was found.", - "cleanHistoryFailed": "Failed to clean log history.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "cleanHistoryEmpty": "リクエストログの履歴が見つかりませんでした。", + "cleanHistoryFailed": "ログ履歴の削除に失敗しました。", + "timeRange": "期間", + "lastNHours": "過去{hours}", + "defaultRange": "デフォルト", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "ログの取得に失敗しました", + "copyFailed": "ログエントリのコピーに失敗しました", + "copyLogEntry": "ログエントリをコピー", "filterByLevel": "ログレベルでフィルター", "searchPlaceholder": "ログを検索…", "searchAria": "ログエントリーを検索", @@ -4987,9 +4987,9 @@ "multiProvider": "マルチプロバイダー", "usageTracking": "使用状況の追跡", "securityDesc": "ダッシュボードを保護するためにパスワードを設定するか、今はスキップしてください。", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ パスワードを設定しない場合、セットアップ中にプロバイダーを追加できません。パスワードを設定した後、ダッシュボードから追加できます。", "providerDesc": "初めての AI プロバイダーに接続します。後でさらに追加することもできます。", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "プロバイダーを追加するには、まずパスワードを設定する必要があります。セキュリティの手順に戻ってパスワードを設定するか、後でダッシュボードからプロバイダーを追加してください。", "apiKeyRequired": "APIキー(必須)", "customUrlOptional": "カスタム URL (オプション)", "testDesc": "プロバイダー接続が機能することを確認してみましょう。", @@ -5076,8 +5076,11 @@ "importFromFileImporting": "インポート中…", "importFromFileImport": "{count} 個のプロバイダーをインポート", "importFromFileResult": "{success} 個のプロバイダーをインポートしました({failed} 個失敗)", + "importFromFileDownloadTemplate": "CSVテンプレートをダウンロード", + "importFromFileMoreErrors": "ほか{count}件", + "importFromFileSchemaHint": "CSVの列は位置で決まります: provider、name、apiKey、baseUrl(任意)、priority(任意)。provider列には、既存の管理対象プロバイダーID、または登録済みのOpenAI/Anthropic互換ノードIDを指定する必要があります。このインポートでは新しいエンドポイントノードは作成されません。", "adaptaTutorial": { - "title": "How to connect Adapta Web", + "title": "Adapta Webへの接続方法", "introPrefix": "AdaptaはClerkを通じて認証を行います。トークンは", "introSuffix": "OmniRouteがセッションを自動的に更新できるようにする、有効期限の長いJWTです。", "or": "または", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count}件非表示", "warningCount": "{count} 警告", "noConnections": "接続がありません", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "期限切れ", + "expiringSoonBadge": "まもなく期限切れ", "freeTier": "無料利用枠", "freeTierAvailable": "無料利用枠あり", "hasFreeTooltip": "無料枠あり", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "このプロバイダーは廃止されました", "riskNotice": { "title": "続行する前に", - "detailsTitle": "Usage caveats", + "detailsTitle": "使用上の注意", "tooltip": "使用上の注意点があるプロバイダー — クリックして詳細を表示", "oauth": "このプロバイダーは、プロキシ/ルーターでの使用が許可されていない公式製品のセッション/OAuthを使用します。自律型エージェントの集中的な使用(OpenCloudスタイル、長いマルチステップフロー、大量のバッチ処理)は推奨されません。アップストリームがアカウントを制限または禁止する可能性があります。自己責任でご利用ください。", "webCookie": "このプロバイダーは、Webセッションクッキーを使用して認証します。アップストリームサービスはいつでもセッションを無効化する可能性があり、その場合は再ログインが必要になります。長時間の無人運用には推奨されません。自己責任でご利用ください。", @@ -5188,9 +5191,9 @@ "cancel": "キャンセル" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count}件の接続に問題があります — 直近で最大{maxFailures}件の失敗{lastFailureSuffix}。クリックして接続状態を表示します。", + "lastFailureSuffix": "(最終失敗: {time})", + "ariaLabel": "接続状態の詳細を表示、{count}件の警告" }, "disabled": "無効", "enableProvider": "プロバイダーを有効にする", @@ -5225,7 +5228,7 @@ "failedCreate": "プロバイダーの作成に失敗しました", "errorOccurred": "エラーが発生しました。もう一度試してください。", "modelStatus": "モデルステータス", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "設定済みのみ", "allModelsOperational": "全モデル稼働中", "modelsWithIssues": "{count} モデルに問題があります", "allModelsNormal": "全機種正常に反応しております。", @@ -5236,7 +5239,7 @@ "clearing": "クリア中...", "until": "{time} まで", "providerTestFailed": "プロバイダーのテストに失敗しました", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "プロバイダーのテストがタイムアウトしました — 一度にテストする接続が多すぎます", "modeTest": "{mode} テスト", "passedCount": "{count} が合格しました", "failedCount": "{count} が失敗しました", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "アイコンURL", "iconUrlHint": "任意。このプロバイダーのアイコンとして表示される画像URL。", "iconUrlInvalid": "無効なアイコンURLです。http(s)://またはdata:image/*;base64 URLを使用してください。", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "日次クォータのリセットタイムゾーン", + "dailyQuotaResetTimezoneHint": "アップストリームが X-RateLimit-Reset を省略した場合に使用する、任意の IANA タイムゾーンです。短いクールダウンを維持するには空のままにしてください。", + "dailyQuotaResetHourLabel": "日次クォータのリセット時刻", + "dailyQuotaResetHourHint": "上記のタイムゾーンにおける0~23時の現地時刻です。空の場合、ノードレベルの時刻設定は使用されません。", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "プロバイダーが見つかりません", "deleteConnectionConfirm": "この接続を削除しますか?", "deleteConnectionConfirmNamed": "{name}を削除してもよろしいですか?この操作は元に戻せません。", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "選択項目を削除({count}件)", + "batchDeleteConfirm": "{count}件の接続を削除しますか?この操作は元に戻せません。", + "batchDeleteSuccess": "{count}件の接続を削除しました", "batchActivateSelected": "有効化", "batchDeactivateSelected": "無効化", "batchRetestSelected": "再テスト", @@ -5292,7 +5295,7 @@ "filterError": "エラー", "filterBanned": "禁止", "filterCreditsExhausted": "クレジット切れ", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "アカウントを検索…", "noFilteredConnections": "現在のフィルターに一致する接続はありません。", "failedSetAlias": "エイリアスの設定に失敗しました", "setAliasSuccess": "エイリアス {alias} を設定しました", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "OpenAI互換性の詳細", "messagesApi": "メッセージAPI", "responsesApi": "レスポンスAPI", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "埋め込み", + "audioTranscriptions": "音声文字起こし", + "audioSpeech": "音声合成", + "imagesGenerations": "画像生成", "chatCompletions": "チャットの完了", "importingModels": "インポート中...", "importFromModels": "/models からインポート", - "modelsImported": "{count} models imported", + "modelsImported": "{count}件のモデルをインポートしました", "allModelsAlreadyImported": "すべてのモデルは既にインポート済みです", "noNewModelsToImport": "インポートする新しいモデルはありません — すべてのモデルは既にレジストリまたはカスタムモデルリストにあります", "skippingExistingModels": "{count}件の既存モデルをスキップ", @@ -5350,13 +5353,13 @@ "importFailed": "インポートに失敗しました", "noNewModelsAdded": "新しいモデルは追加されませんでした。", "adding": "追加中...", - "close": "Close", + "close": "閉じる", "importingModelsTitle": "モデルのインポート", "copyModel": "モデルをコピーする", "filterModels": "モデルを絞り込む…", "testAllRateLimited": "レート制限に達したため、途中で停止しました", "hideFailedAuto": "失敗したモデルを自動的に非表示にする", - "selectAllModels": "Select all", + "selectAllModels": "すべて選択", "hideAllModels": "すべて非表示", "modelsActive": "有効", "showModel": "モデルを表示", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "1 行に 1 つのキー。形式: name|apiKey または単に apiKey (インデックスによって自動命名)。", "bulkValidateKeys": "保存する前に各キーを検証します (時間がかかります)", "bulkAddAllKeys": "すべてのキーを追加", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {#件のキーを追加しました} other {#件のキーを追加しました}}", + "bulkFailedCount": "{count, plural, one {#件失敗しました} other {#件失敗しました}}", "optional": "オプション", "anthropicCompatibleName": "人間互換性", "openaiCompatibleName": "OpenAI対応", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "予期しないエラーが発生しました", "getApiKey": "APIキーを取得する", "getApiKeyDescription": "APIキーを登録またはサインアップしてください", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {#件の接続} other {#件の接続}}", "messagesPath": "メッセージ", "responsesPath": "応答", "chatCompletionsPath": "チャット/補完", @@ -5419,17 +5422,17 @@ "configured": "設定済み", "providerProxyConfigureHint": "このプロバイダーのすべての接続に対してプロキシを構成します", "providerProxy": "プロバイダープロキシ", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "envを修復", + "repairEnvWorking": "修復中...", + "repairEnvHint": "既存の値を上書きせずに、不足しているOAuthのデフォルト値を.envに復元します。", + "repairEnvSuccess": "OAuthのデフォルト値を復元しました", + "repairEnvFailed": ".envの修復に失敗しました", "noConnectionsYet": "まだ接続がありません", "addFirstConnectionHint": "最初の接続を追加して開始します", "addConnection": "接続の追加", "availableModels": "利用可能なモデル", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "組み込みモデル", + "builtInModelsHint": "このプロバイダーのレジストリモデルです。鉛筆アイコンを使用して互換性オプションを設定してください。", "pageAutoRefresh": "ページは自動的に更新されます...", "statusDisabled": "無効化された", "statusConnected": "接続されています", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "この接続を再認証します", "proxyConfig": "プロキシ構成", "aliasExistsAlert": "エイリアス「{alias}」はすでに存在します。別のモデルを使用するか、既存のエイリアスを編集してください。", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "エイリアス名", + "clickToSetAlias": "クリックしてエイリアスを設定", + "clickToEditAlias": "エイリアス: {alias}(クリックして編集)", "openRouterAnyModelHint": "OpenRouter はあらゆるモデルをサポートします。モデルを追加し、すぐにアクセスできるようにエイリアスを作成します。", "modelIdFromOpenRouter": "モデルID (OpenRouterから)", "openRouterModelPlaceholder": "人間的/クロード-3-作品", "customModels": "カスタムモデル", "customModelsHint": "デフォルトのリストにないモデル ID を追加します。これらはルーティングに使用できるようになります。", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "ツール呼び出しIDを9文字に正規化(例: Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responsesのdeveloperロールを維持(systemにマッピングしない)", + "compatAdjustmentsTitle": "互換性", + "compatButtonLabel": "互換性", + "compatToolIdShort": "ツールID 9", + "compatDeveloperShort": "developerロール", + "compatDoNotPreserveDeveloper": "developerロールを保持しない", + "compatBadgeNoPreserve": "保持しない", + "compatProtocolLabel": "クライアントリクエストプロトコル", + "compatProtocolHint": "これらのオプションは、OmniRouteがこのリクエスト形式(OpenAI Chat、Responses API、またはAnthropic Messages)を検出した場合に適用されます。", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "ネイティブの web_fetch ツール呼び出しを OmniRoute の /v1/web/fetch に書き換えます。", "interceptionLoadError": "インターセプト設定の読み込みに失敗しました: {error}", "interceptionSaveError": "インターセプト設定の保存に失敗しました: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Claude Code(claude/…)に公開", + "ccAliasSectionHint": "このプロバイダーのモデルをclaude/<provider>/<model>形式のミラーIDでも公開し、Claude Codeのゲートウェイモデル検出で一覧表示できるようにします。デフォルトではオフです。有効にすると、すべてのクライアントでカタログ項目が2倍になります。", + "ccAliasProviderLevelLabel": "プロバイダーのデフォルト", + "ccAliasModelOverridesLabel": "モデルごとのオーバーライド", + "ccAliasModelOverrideAriaLabel": "{modelId}のオーバーライド", + "ccAliasStateInherit": "継承", + "ccAliasStateOn": "オン", + "ccAliasStateOff": "オフ", + "ccAliasAddModelPlaceholder": "モデルID(例:gpt-4o)", + "ccAliasAddModelButton": "オーバーライドを追加", + "ccAliasLoadError": "検出エイリアス設定の読み込みに失敗しました:{error}", + "ccAliasSaveError": "検出エイリアス設定の保存に失敗しました:{error}", + "compatUpstreamHeadersLabel": "追加のアップストリームヘッダー", + "compatUpstreamHeadersHint": "高権限の設定です。プロバイダーのAPI認証情報を編集する場合と同等の信頼レベルが必要なため、信頼できる管理者のみが使用してください。OmniRouteがプロバイダーのAPIキーから認証情報を追加した後にマージされます。カスタムヘッダーが既存のヘッダーと同じ名前(例:Authorization)を使用している場合、入力した値によって自動生成されたヘッダー(Bearerトークンを含む)が完全に置き換えられます。アップストリームに送信されるのは入力した内容のみで、設定内のキーは送信されません。設定を誤ると、401エラーやアップストリーム認証の失敗が発生する可能性があります。ヘッダーごとに1行使用します(例:一部のゲートウェイ用の追加Authentication)。値をプレビューするには、カーソルを合わせるかフォーカスしてください。フォーカスを外したとき、パネル外をクリックしたとき、またはこのパネルを閉じたときに保存されます。", + "compatUpstreamHeaderName": "ヘッダー名", + "compatUpstreamHeaderValue": "値", + "compatUpstreamAddRow": "ヘッダーを追加", + "compatUpstreamRemoveRow": "行を削除", + "compatBadgeUpstreamHeaders": "ヘッダー", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "無料モデルのみをインポート", @@ -5592,26 +5595,26 @@ "email": "電子メール", "healthCheckMinutes": "ヘルスチェック (分)", "healthCheckHint": "プロアクティブなトークンの更新間隔。 0 = 無効。", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "すべての選択を解除", + "modelsActiveCount": "{active}/{total}件が有効", + "noModelsMatch": "「{filter}」に一致するモデルはありません", + "groupLabel": "環境", + "groupPlaceholder": "例:eKaizen、個人用", "failedTestConnection": "接続のテストに失敗しました", "failed": "失敗しました", "leaveBlankKeepCurrentApiKey": "現在の API キーを保持するには、空白のままにします。", "editCompatibleTitle": "編集 {type} 互換", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "{type}互換APIのルートURL。カスタムエンドポイントパスには詳細設定を使用してください。", "apiKeyForCheck": "APIキー(チェック用)", "testModelIdLabel": "モデルID (オプション)", "testModelIdPlaceholder": "例: my-model-id", "testModelIdHint": "プロバイダーに /models エンドポイントがない場合は、代わりに /chat/completions 経由で検証するためのモデルIDを入力してください。", "compatibleProdPlaceholder": "{type} 互換性あり (製品)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "トークンが正常に更新されました", + "tokenRefreshFailed": "トークンの更新に失敗しました", "cursorSessionUnchanged": "セッションはすでに現在のものです", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "認証を適用", + "exportCodexAuthFile": "認証をエクスポート", "applyClaudeAuthLocal": "認証を適用する", "exportClaudeAuthFile": "エクスポート認証", "importClaudeAuth": "インポート認証", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} が失敗しました", "codexImportBulkZipExtracting": "ZIP を解凍中…", "codexImportBulkZipError": "ZIPの解凍に失敗しました", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "詳細設定", + "chatPathLabel": "チャットエンドポイントのパス", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "非標準APIを使用するプロバイダー向けのカスタムチャットパス(例:/v4/chat/completions)", + "modelsPathLabel": "モデルエンドポイントのパス", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "検証用のカスタムモデルパス(例:/v4/models)", "clientIdentityLabel": "クライアント識別情報", "clientIdentityHint": "オプション。これを要求する互換ゲートウェイ向けに、既知の CLI と一致するクライアントフィンガープリントヘッダー (例: User-Agent) を追加します。", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "無効化済み(手動)", + "statusBanned": "禁止済み/サンドボックス違反", + "statusCreditsExhausted": "残高不足/クォータ超過", + "showEmails": "すべてのメールアドレスを表示", + "hideEmails": "すべてのメールアドレスを非表示", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "別のAPIキーを追加するか、複数のキーを貼り付けてください", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "アグリゲーターゲートウェイ", "enterpriseCloud": "エンタープライズとクラウド", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API形式ラベル", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "中国向けAPIリージョン", + "apiRegionHint": "APIリージョンのヒント", + "apiRegionInternational": "国際向けAPIリージョン", + "apiRegionLabel": "APIリージョンラベル", + "apikey": "APIキー", + "audio": "音声", + "audioProvidersHeading": "音声プロバイダーの見出し", "cloudAgentProviders": "クラウドエージェントプロバイダー", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "音声の短縮ラベル", + "azureOpenAiBaseUrlHint": "Azure OpenAIのベースURLに関するヒント", + "bailianBaseUrlHint": "BailianのベースURLに関するヒント", + "claudeWebCookieHint": "claude.aiを開き、DevTools → Application → Cookies → claude.aiの順に移動して、「sessionKey」の値をコピーしてください。Cloudflare用にcf_clearance、__cf_bm、_cfuvidも必要です。", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox WebのCookieに関するヒント", + "blackboxWebCookiePlaceholder": "Blackbox WebのCookieプレースホルダー", "t3ChatWebCookieHint": "t3.chat → DevTools → Application → Local Storage → https://t3.chat を開き、「convex-session-id」をコピーします。次に、[DevTools] → [Network] を開き、チャット リクエストから完全な Cookie ヘッダーをコピーします。両方の値を下のフィールドに貼り付けます。", "t3ChatWebCookiePlaceholder": "凸セッションID=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok WebのCookieに関するヒント", "blockClaudeExtraUsageDescription": "有効にすると、OmniRouteは使用APIがキューに追加された追加使用を報告した時点でこのClaude接続を利用できないとマークし、フォールバックは従量課金の追加請求を続けるのではなく、別の接続に切り替わります。", "blockClaudeExtraUsageLabel": "追加のClaude使用をブロックする", "disableCoolingDescription": "一時的なクールダウンをスキップし、回復可能なエラーの後でもこの接続を対象として維持します (banned/expired などの終端状態は引き続き適用されます)。", "disableCoolingLabel": "この接続のクールダウンを無効化", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1件のキーを追加しました} other {#件のキーを追加しました}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {重複した1件をスキップしました} other {重複した#件をスキップしました}}", + "bulkPasteHint": "1行につき1つのAPIキーを貼り付けてください。空行は無視され、重複するキーはスキップされます。", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "非表示のClaude思考ストリームを必要とするCC Compatibleアップストリーム向けに、redact-thinkingベータヘッダーを追加します。", + "ccCompatibleRedactThinkingLabel": "redact-thinkingベータを有効化", + "ccCompatibleSummarizeThinkingDescription": "CC Compatibleの思考リクエストに`display: \"summarized\"`を追加し、対応するClaudeモデルが表示可能な思考差分をストリーミングできるようにします。", + "ccCompatibleSummarizeThinkingLabel": "要約された思考の表示を有効化", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "利用可能な場合、Codexリクエストに優先サービス階層を使用します。", + "codexFastServiceTierLabel": "Codex高速サービス階層", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "互換アップストリームのヘッダー名プレースホルダー", + "compatUpstreamHeaderValuePlaceholder": "互換アップストリームのヘッダー値プレースホルダー", + "compatible": "互換", + "configuredCount": "設定済み件数", + "consoleApiKeyOracleHint": "コンソールAPIキーOracleのヒント", + "consoleApiKeyOracleLabel": "コンソールAPIキーOracleのラベル", + "consoleApiKeyOraclePlaceholder": "コンソールAPIキーOracleのプレースホルダー", "newApiUserIdLabel": "New-API ユーザーID", "newApiUserIdPlaceholder": "例: 12345", "newApiUserIdHint": "AgentRouter の New-Api-User ヘッダー値。クォータ残高を取得するためにコンソール API キーと合わせて使用します。", @@ -5830,57 +5833,57 @@ "featureFlagNewApiAggregatorBalanceDescription": "New-API / One-API / Sub2API アグリゲーター互換ノードのためのバランス検出を有効にする", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "カスタムユーザーエージェントのヒント", + "customUserAgentLabel": "カスタムユーザーエージェントのラベル", + "databricksBaseUrlHint": "Databricks ベース URL のヒント", + "defaultThinkingStrengthHint": "リクエストで推論の強度が指定されていない場合に使用されます。", + "defaultThinkingStrengthLabel": "デフォルトの思考強度", + "deleteAllExtraApiKeys": "すべて削除", + "excludedModelsHint": "除外するモデルのヒント", + "excludedModelsLabel": "除外するモデルのラベル", + "excludedModelsPlaceholder": "除外するモデルのプレースホルダー", + "expirationBannerExpired": "有効期限切れ", + "expirationBannerExpiredDesc": "有効期限が切れています", + "expirationBannerExpiringSoon": "まもなく有効期限切れ", + "expirationBannerExpiringSoonDesc": "有効期限がまもなく切れます", + "extraApiKeyMasked": "キー {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "追加 API キーのヒント", + "extraApiKeysLabel": "追加 API キーのラベル", + "apiKeyHealthLabel": "API キーの状態", + "apiKeyStatusActive": "有効", + "apiKeyStatusWarning": "警告({count} 回失敗)", + "apiKeyStatusInvalid": "無効", + "primaryKey": "プライマリキー", + "apiKeyInvalidAlert": "接続先 {connections} での認証失敗により、{count} 個の API キーが無効と判定されました。これらはローテーションから除外されます。クリックして確認してください。", + "apiKeyInvalidAlertTitle": "API キー状態アラート", + "apiKeyWarningAlert": "接続先 {connections} で失敗率が上昇しているため、{count} 個の API キーが警告状態です。ローテーションの問題を防ぐために確認してください。", + "apiKeyWarningAlertTitle": "API キー警告", + "googlePseInfo": "Google Pse 情報", "antigravityProjectIdHint": "Antigravity Cloud Code リクエストのオプションのオーバーライド。 Google OAuth 中に検出されたプロジェクトを使用する場合は、空白のままにします。", "antigravityClientProfileLabel": "クライアントプロファイル", "antigravityClientProfileHint": "OmniRoute が API に提示する Antigravity クライアント識別情報を選択します。", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Codex Fast ティアがアクティブです", - "tierFast": "Fast", + "tierFast": "高速", "antigravityProjectIdLabel": "Google Cloud プロジェクト ID", "antigravityProjectIdPlaceholder": "私のgcpプロジェクトID", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok Web Cookie のプレースホルダー", + "herokuBaseUrlHint": "Heroku ベース URL のヒント", + "hideEmail": "メールアドレスを非表示", + "imageProviders": "画像プロバイダー", "videoProviders": "ビデオ生成", "embeddingRerankProviders": "埋め込みと再ランク付け", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "画像の短縮ラベル", + "llmProviders": "LLM プロバイダー", + "localProviderApiKeyOptionalHint": "ローカルプロバイダーの API キー(任意)のヒント", + "localProviderBaseUrlHint": "ローカルプロバイダーのベース URL のヒント", + "localProviders": "ローカルプロバイダー", + "maxConcurrentWholeNumberError": "最大同時実行数には整数を指定してください", "m365TierLabel": "Copilot ティア", "m365TierHint": "この接続で使用する Microsoft 365 Copilot サーフェスを選択します。Individual はデフォルトのコンシューマー向け BizChat です。Education および Enterprise (職場) はそれぞれのテナントサーフェスを選択します。", "m365TierIndividualOption": "Individual (デフォルト)", - "m365TierEduOption": "Education", + "m365TierEduOption": "教育", "m365TierEnterpriseOption": "Enterprise / 職場", "tierOverrideLabel": "ティアのオーバーライド", "tierOverrideAuto": "自動 (ルーティングが決定)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "低コスト", "tierOverridePremium": "プレミアム", "tierOverrideHelpText": "OmniRoute にモデルの価格設定から推測させる代わりに、このプロバイダーをルーティングティアに固定します。", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark Web Cookie のヒント", + "museSparkWebCookiePlaceholder": "Muse Spark Web Cookieのプレースホルダー", + "oauth": "OAuth", + "openCliTools": "CLIツールを開く", + "openSettings": "設定を開く", + "openaiResponsesStoreDescription": "互換性のあるResponses APIリクエストで、保存されたレスポンスの状態を維持できるようにします。", + "openaiResponsesStoreLabel": "OpenAI Responsesの保存", + "perplexitySearchSharedKeyInfo": "Perplexity Search共有キー情報", + "perplexityWebCookieHint": "Perplexity Web Cookieのヒント", + "perplexityWebCookiePlaceholder": "Perplexity Web Cookieのプレースホルダー", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "レート制限のオーバーライド", "rateLimitOverridesMaxConcurrentHint": "この接続の最大同時リクエスト数のオーバーライド。アカウントレベルの上限をオーバーライドします。", "rateLimitOverridesMaxConcurrentLabel": "最大同時実行数 (レート制限)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "レート制限スロットを待機できる最大時間(ミリ秒)です。この接続に限り、グローバルなレジリエンス設定を上書きします。", + "rateLimitOverridesMaxWaitMsLabel": "最大キュー待機時間(ミリ秒)", "rateLimitOverridesMinTimeHint": "リクエスト間の最小時間 (ミリ秒)。デフォルトのレートリミッター遅延をオーバーライドします。", "rateLimitOverridesMinTimeLabel": "最小間隔 (ミリ秒)", "rateLimitOverridesRpdHint": "この接続の1日あたりの最大リクエスト数。プロバイダーのデフォルトを上書きします。", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (トークン数/日)", "rateLimitOverridesTpmHint": "この接続の 1 分あたりの最大トークン数。プロバイダーのデフォルトをオーバーライドします。", "rateLimitOverridesTpmLabel": "TPM (トークン数/分)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "OAuthトークンを更新", + "regionHint": "リージョンのヒント", + "regionLabel": "リージョン", + "removeThisKey": "このキーを削除", + "routingTagsHint": "ルーティングタグのヒント", + "routingTagsLabel": "ルーティングタグ", + "routingTagsPlaceholder": "ルーティングタグのプレースホルダー", + "search": "検索", + "searchEngineIdHint": "検索エンジンIDのヒント", + "searchEngineIdLabel": "検索エンジンID", + "searchEngineIdRequired": "検索エンジンIDは必須です", + "searchProvider": "検索プロバイダー", + "searchProviderDesc": "検索プロバイダーの説明", "searchProviders": "プロバイダーを検索...", "searchByModel": "モデルで検索…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "検索プロバイダー", + "searxngBaseUrlHint": "SearxngベースURLのヒント", + "searxngInfo": "Searxng情報", + "sessionCookieLabel": "セッションCookie", + "showEmail": "メールアドレスを表示", + "snowflakeBaseUrlHint": "SnowflakeベースURLのヒント", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "タググループのヒント", + "tagGroupLabel": "タググループ", + "tagGroupPlaceholder": "タググループのプレースホルダー", + "testModel": "モデルをテスト", + "testingModel": "モデルをテスト中", "modelTestQuotaTooltip": "クォータが使い果たされました — 明日リセットされるか、追加が必要です", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "トークン期限切れ", + "tokenExpiredTitle": "トークンの有効期限が切れています", + "tokenExpiresSoonTitle": "トークンの有効期限がまもなく切れます", + "tokenShort": "トークン", + "totalKeysRotating": "{count, plural, one {1個のキーをローテーション中} other {#個のキーをローテーション中}}", + "unhideModel": "モデルを再表示", + "upstreamProxyProviders": "アップストリームプロキシプロバイダー", "validationModelIdHint": "API キーの検証に使用するモデル。プロバイダーの最初に利用可能なモデルを使用する場合は空白のままにしてください。", "validationModelIdLabel": "検証モデル", "validationModelIdPlaceholder": "例: meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "サービスアカウントJSON({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"})またはOAuth access_tokenを貼り付けてください", + "webCookieProviders": "Web Cookieプロバイダー", + "weeklyShort": "週間(短縮)", + "xiaomiMimoBaseUrlHint": "Xiaomi MimoのベースURLに関するヒント", "globalCodexServiceMode": "グローバル Codex サービスモード", "connect": "接続", "manualApiKey": "手動 API キー", @@ -5975,9 +5978,9 @@ "zedImportDescription": "OS キーチェーンに Zed IDE によって保存された AI プロバイダーの認証情報 (OpenAI、Anthropic、Google、Mistral、xAI) を検出し、接続としてインポートします。このマシンに Zed IDE がインストールされている必要があります。", "zedImportButton": "Zedからインポート", "zedImportFailed": "Zed のインポートに失敗しました", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zedのインポートに関するヒント", + "zedImportNetworkError": "Zedのインポート時にネットワークエラーが発生しました", + "zedImportNone": "インポートできるZedデータはありません", "zedImportSuccess": "{providers}プロバイダーからZedに{credentials}資格情報をインポートしました", "zedImporting": "インポート中…", "zedNoCredentials": "キーチェーンに Zed の認証情報が見つかりませんでした", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "エントリ {number}", "claudeImportParseError": "解析エラー", "claudeImportNoValidEntries": "インポートする有効なエントリがありません", - "webFetch": "Web Fetch", + "webFetch": "Webフェッチ", "webFetchTooltip": "Web URL からコンテンツを抽出するプロバイダー(HTML → Markdown、スクレイピング、スクリーンショット)", "webFetchProvidersHeading": "Web Fetch プロバイダー", "compatibleProvidersDesc": "自身でホストまたは設定する OpenAI 互換および Anthropic 互換のエンドポイント。任意の OpenAI SDK の接続先を独自の URL に指定し、リクエストをここにルーティングします。", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5、Claude Opus 4.6、Claude Sonnet 4.6、Qwen 3.5を含む40以上のモデルに対応した割引APIプロキシ。https://freeaiapikey.com/dashboard でAPIキーを取得してください。ベースURL: https://freeaiapikey.com/v1。", "freemodel-dev": "https://freemodel.dev で$300の無料APIクレジットを取得 — 支払い情報は不要です。OpenAI互換エンドポイント。GPT-5.4およびGPT-5.5モデルが利用可能です。", "friendliai": "サーバーレス推論の無料枠 — クレジットカード不要", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio経由の無料枠。モデルごとのクォータは現在公開されていません(AI Studioのクォータページをご確認ください)。クレジットカードは不要です。", "gigachat": "APIキーでGigaChat (Sber)に接続します。", "gitlab": "パブリックCode Suggestions API用のGitLabパーソナルアクセストークン。gitlab.comを使用しない場合は、セルフホストのベースURLを設定してください。", "gitlawb-gmi": "Gitlawb OpengatewayダッシュボードからAPIキーを取得します。", @@ -6184,7 +6187,7 @@ "glm-cn": "APIキーでGLM Coding (China)に接続します。", "glmt": "より大きなトークンバジェット、思考の有効化、およびより長いタイムアウトを備えたプリセットGLMプロファイル。", "getgoapi": "APIキーでGoAPIに接続します。", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "無料プラン:モデルごとに上限あり(チャットモデルごとに1日200Kトークン。RPM/RPDについてはconsole.groq.com/docs/rate-limitsを参照)。支払い方法の登録は不要です。", "haiper": "haiper.ai/haiper-api でAPIキーを取得", "heroku": "APIキーでHeroku AIに接続します。", "hcnsec": "api.hcnsec.cn でAPIキーを取得", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.aiでAPIキーを作成し、ここにBearerトークンとして貼り付けます。https://router.requesty.ai/v1にあるOpenAI互換のエンドポイントは、有効な/v1/modelsカタログを提供します。", "runwayml": "Runwayの動画生成はタスクベースです。OmniRouteはtext-to-videoまたはimage-to-videoジョブを送信し、/v1/tasks/[id]をポーリングして、完了した動画出力をOpenAI風の/v1/videos/generationsレスポンスに正規化して戻します。", "sambanova": "新規登録時に$5分の無料クレジット(30日間有効)、クレジットカード不要", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.ccでAPIキーを作成し、Bearerトークンとしてここに貼り付けてください。OpenAI互換のベースURL:https://seekai.cc/v1。", "sap": "モデルの検出はAI_API_URL上の/v2/lm/scenarios/foundation-models/modelsを使用します。チャットリクエストはdeploymentUrl/chat/completionsを使用し、AI-Resource-Groupが必要です。", "sarvam": "Sarvam AIは/v1でOpenAI互換です。OmniRouteは/v1/modelsをプローブし、チャットトラフィックを/v1/chat/completionsにルーティングします。モデルはインド系言語に調整されています。", "scaleway": "新規アカウント向けに100万無料トークン — EU/GDPR準拠(パリ)、Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "既存のOAuthフローを使用してClaude Codeに接続します。", "cline": "既存のOAuthフローを使用してClineに接続します。", "cursor": "既存のOAuthフローを使用してCursor IDEに接続します。", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "cursor.com/dashboard/apiで取得したユーザーAPIキー(crsr_...)を使用してCursorに接続します。IDEセッションは不要です。", "github": "既存のOAuthフローを使用してGitHub Copilotに接続します。", "gitlab-duo": "ai_features + read_user スコープを持つOAuthアプリケーション。このOmniRouteインスタンスで GITLAB_DUO_OAUTH_CLIENT_ID と、必要に応じて GITLAB_DUO_OAUTH_CLIENT_SECRET を設定してください。", "kilocode": "既存のOAuthフローを使用してKilo Codeに接続します。", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "プロバイダー独自のドメインから必要な資格情報をコピーします。 Cookie の場合は、Cookie ヘッダー値のみをコピーし、Cookie: を省略します。", "webSessionGuideStep3Manual": "手動パス: ブラウザの開発者ツールを開く (F12 → ネットワーク)、ページをリフレッシュし、認証されたリクエストを開き、リクエストヘッダーからCookieヘッダーの値をコピーします — Cookie: プレフィックスは省略してください。", "webSessionGuideStep4": "ここに貼り付けて接続を確認してください。動作しなくなった場合は、再度サインインして新しい値に置き換えます。", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".harファイルをインポート", + "harImportButtonBusy": "インポート中…", + "harImportButtonHint": "少なくとも1件のチャットメッセージを送信した後、DevToolsのNetworkタブからエクスポートしてください。", + "harImportStatusValid": "インポート済み — 約{minutes}分間有効です。", + "harImportStatusExpiringSoon": "インポート済み — 残りの有効時間は約{minutes}分しかありません。", + "harImportStatusExpired": "インポートされましたが、このトークンはすでに期限切れです({minutes}分前)。新しいHARをエクスポートしてください。", + "harImportStatusUnknownExpiry": "インポートされましたが、有効期限を読み取れませんでした。", + "harImportErrorNotJson": "このファイルは有効なJSONではありません。本当に.har形式でエクスポートされたファイルですか?", + "harImportErrorNoEntries": "このHARにはネットワークエントリが記録されていません。", + "harImportErrorNoChathubUrl": "このHARにCopilotのチャット接続が見つかりませんでした。エクスポートする前に、m365.cloud.microsoftで少なくとも1件のチャットメッセージを送信してください。", + "harImportErrorUnparsableUrl": "チャット接続は見つかりましたが、そのURLを読み取れませんでした。", + "harImportErrorMissingFields": "チャット接続は見つかりましたが、トークンが含まれていませんでした。", + "harImportErrorReadFailed": "そのファイルを読み取れませんでした。", + "harImportErrorUnknown": "そのHARファイルから認証情報を抽出できませんでした。", "webSessionSecurityHint": "これをパスワードのように扱います。有効期限が切れるか取り消されるまで、サインインしている Web アカウントにアクセスできます。", "webNoAuthGuideTitle": "資格情報は必要ありません", "webNoAuthGuideBody": "{provider} には API キーや Cookie は必要ありません。無料の Web エンドポイントを使用するには、接続を保存します。", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "コマンドコードの認証が期限切れです", "commandCodeConnected": "コマンドコードが接続されました", "commandCodeConnectionAdded": "コマンドコード接続が追加されました", + "clearConnectionCooldown": "クールダウンを解除", + "clearConnectionCooldownInProgress": "解除中…", + "clearConnectionCooldownTitle": "クールダウンを今すぐ解除します。アップストリーム側ですでにクォータがリセットされている場合に使用してください", "commandCodeLinkExpired": "コマンドコードのリンクが期限切れです", "commandCodeOpeningStudio": "コマンドコードスタジオを開いています…", "commandCodePopupBlocked": "ポップアップがブロックされました。ポップアップを許可して、再度 Command Code Connect をお試しください。", "commandCodeStartFailed": "Command Code authの起動に失敗しました", "connectionDeleted": "接続が削除されました", "connectionFallback": "接続", + "connectionCooldownCleared": "クールダウンが解除され、接続がルーティングに復帰しました", "coolingConnectionsDescription": "これらの接続は前回のリクエスト後に冷却中です。タイマーが切れるまで OmniRoute はそれらをスキップします — 手動で無効にする必要はありません。", "coolingConnectionsTitle": "現在冷却中 ({count})", + "failedClearConnectionCooldown": "クールダウンを解除できませんでした", "failedDeleteAlias": "エイリアスの削除に失敗しました", "failedDeleteConnection": "接続の削除に失敗しました", "failedDistributeProxies": "プロキシの配布に失敗しました。", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "保存されたモデルエンドポイント設定", "searchByModelAria": "モデルで検索", "selectSupportedEndpoint": "サポートされているエンドポイントを少なくとも1つ選択してください", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "設定", @@ -6554,22 +6557,22 @@ "systemPrompt": "システムプロンプト", "thinkingBudget": "予算を考える", "proxy": "プロキシ", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTPプロキシ", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "プロキシセクション", + "requestBodyLimitTitle": "リクエスト本文の上限", + "requestBodyLimitDescription": "リクエスト本文が解析される前に受け付けるAPIペイロードの最大サイズ。専用のアップロードルートでは、組み込みの100 MB以上の上限が維持されます。", + "requestBodyLimitInputLabel": "リクエスト本文の上限(MB)", + "requestBodyLimitEmptyError": "上限をMB単位で入力", + "requestBodyLimitWholeNumberError": "整数を使用してください", + "requestBodyLimitMinimumError": "最小値は{min} MBです", + "requestBodyLimitMaximumError": "最大値は{max} MBです", + "requestBodyLimitLoadFailed": "リクエスト上限設定の読み込みに失敗しました", + "requestBodyLimitSaveSuccess": "リクエスト本文の上限を保存しました", + "requestBodyLimitSaveFailed": "リクエスト本文の上限の保存に失敗しました", + "requestBodyLimitSaving": "保存中...", + "requestBodyLimitSave": "保存", + "requestBodyLimitCurrent": "現在:{value}", "cacheConfigLoadFailed": "キャッシュ設定の読み込みに失敗しました", "cacheConfigSaveSuccess": "キャッシュ設定が保存されました", "cacheConfigSaveFailed": "キャッシュ設定の保存に失敗しました", @@ -6593,59 +6596,59 @@ "enablePassword": "パスワードを有効にする", "darkMode": "ダークモード", "lightMode": "ライトモード", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "メモリ", + "memoryDesc": "セッションをまたいで保持される会話メモリ", + "memoryEnabled": "メモリを有効化", + "memoryEnabledDesc": "有効にすると、OmniRouteが関連する過去のコンテキストを挿入します。", "memoryTokenCostWarning": "注意: メモリが有効な場合、OmniRouteは取得したコンテキストを最大 {tokens} トークンまですべてのチャットリクエストに注入します。これにより、トークンの使用量とコストが増加します。特定のリクエストで注入をスキップするには、\"x-omniroute-no-memory: true\" ヘッダーを送信してください。", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "最大トークン数", + "retentionDays": "保持", + "recent": "最近", + "recentDesc": "時系列ウィンドウ", + "semantic": "セマンティック", + "semanticDesc": "ベクトル検索", + "hybrid": "ハイブリッド", + "hybridDesc": "最近 + セマンティック", + "skillsTitle": "スキル", + "skillsDesc": "モデル用ツール", + "skillsEnabled": "スキルを有効化", + "skillsEnabledDesc": "エージェントが関数を実行できるようにします。", + "skillsComingSoon": "スキルマーケットプレイスは近日公開予定です。", + "memorySkillsTitle": "メモリとスキル", + "memorySkillsDesc": "永続的なコンテキストと機能", + "modelsDevTitle": "モデルデータベース", + "modelsDevDesc": "models.devから料金、機能、仕様を自動同期", + "modelsDevEnabled": "models.devの同期を有効化", + "modelsDevEnabledDesc": "オープンソースのmodels.devデータベースからモデルの料金、機能、仕様を取得します", + "modelsDevInterval": "同期間隔", + "syncNow": "今すぐ同期", + "syncing": "同期中...", + "lastSync": "最終同期", + "never": "未実行", "justNow": "たった今", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "同期統計", + "modelsDevStatsDesc": "現在の models.dev データカバレッジ", "providers": "プロバイダー", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "料金情報のあるモデル", + "capabilities": "機能", + "lastSyncCount": "前回の同期件数", + "lastSyncFull": "前回の完全同期", + "modelsDevInfo": "仕組み", + "modelsDevInfoDesc": "models.dev は、SST/OpenCode チームが管理する AI モデル仕様のオープンソースデータベースです。100 を超えるプロバイダーの 4,000 以上のモデルについて、料金、機能、コンテキスト上限、モダリティを提供します。", + "modelsDevInfoResolution": "料金の決定順序(優先度の高い順):", + "modelsDevInfoOrder": "ユーザーによる上書き → models.dev → LiteLLM → ハードコードされたデフォルト", "systemTheme": "システムテーマ", - "debugToggle": "Enable Debug Mode", + "debugToggle": "デバッグモードを有効にする", "logToolSourcesToggle": "ツールソースのログ記録", "logToolSourcesDescription": "リクエストごとに、ツールの数とMCP/ホスト型/クライアントソースの内訳をまとめた診断ログ行を出力します。", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "情報をホームページに固定", "homePinnedSectionsDesc": "ホームページの最上部に固定するセクションを選択します。", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "プロバイダーのクォータ上限", + "homeProviderQuotaLimitsDesc": "プロバイダーのクォータステータスコンテナ(「すべて更新」ボタン付き)をホームページ上部に固定します。", + "homeQuickStart": "クイックスタート", + "homeQuickStartDesc": "ホームページにクイックスタートパネルを表示します。", + "homeProviderTopology": "プロバイダーのトポロジー", + "homeProviderTopologyDesc": "ホームページにプロバイダーのトポロジーを表示します。", "accountEmailVisibility": "アカウントメールアドレスの表示", "accountEmailVisibilityDesc": "プロバイダー、コンボ、ログ、クォータ、プレイグラウンドの各画面で、アカウントのメールアドレスをフルで表示します。これをオフにすると、デフォルトでマスクされます。", "comboConfigMode": "コンボ設定モード", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "更新間隔", "providerQuotaAutoRefreshIntervalDesc": "クォータビューを更新する頻度(秒単位)。", "seconds": "秒", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "サイドバー項目を表示", "enableCache": "キャッシュを有効にする", "cacheTTL": "キャッシュTTL", "maxCacheSize": "最大キャッシュサイズ", "clearCache": "キャッシュのクリア", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "キャッシュを正常にクリアしました", + "clearCacheFailed": "キャッシュをクリアできませんでした", "cacheHits": "キャッシュヒット", "cacheMisses": "キャッシュミス", "hitRate": "命中率", "cacheEntries": "キャッシュエントリ", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "キャッシュ設定", + "semanticCache": "セマンティックキャッシュ", + "maxEntries": "最大エントリ数", + "ttlMinutes": "TTL(分)", "promptCache": "プロンプトキャッシュ", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "戦略", + "preserveClientCache": "クライアントキャッシュを保持", + "enabled": "有効", "loading": "Loading...", "saving": "保存中...", - "save": "Save", + "save": "保存", "circuitBreaker": "サーキットブレーカー", "retryPolicy": "再試行ポリシー", "maxRetries": "最大再試行回数", @@ -6690,21 +6693,21 @@ "timeoutMs": "タイムアウト (ミリ秒)", "enableSystemPrompt": "システムプロンプトを有効にする", "systemPromptText": "システムプロンプトテキスト", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "禁止されたアカウントを自動無効化", + "autoDisableDescription": "特定の恒久的な禁止シグナル(例:HTTP 403「アカウントを確認してください」)を返したプロバイダー接続を、無効として恒久的にマークします。これにより、その接続はコンボのローテーションから除外されます。", + "autoDisableThreshold": "禁止しきい値", + "autoDisableThresholdDesc": "恒久的に無効化するまでに必要な連続した禁止シグナルの数。", + "autoDisableBannedScope": "自動無効化の適用対象", + "autoDisableBannedScopeDesc": "ログインシート(有料サブスクリプションおよび無料アカウント)は、禁止後も OmniRoute が再試行を続けると、アップストリーム側でロックされる可能性があります。有料のプリペイド API キーにはそのリスクがないため、プールに残して、fill-first が次のキーを使用できるようにしてください。", + "autoDisableBannedScopeAll": "すべての接続", + "autoDisableBannedScopeAllDesc": "プリペイド API キーを含め、恒久的な禁止シグナルを返すすべての接続を無効化します。", + "autoDisableBannedScopeSubscription": "ログイン/サブスクリプションアカウントのみ", + "autoDisableBannedScopeSubscriptionDesc": "OAuth、Cookie、セッション、Webログインのシート(有料・無料)を無効化します。プリペイドAPIキーは引き続き有効なため、障害時にルーティングをフェイルオーバーできます。", "customBannedSignals": "禁止キーワード", "customBannedSignalsDesc": "アカウントの永久BAN検出のトリガーとなる追加のキーワード。組み込みのキーワードは常に適用されます。", "customBannedSignalsPlaceholder": "例: api key revoked", "noCustomBannedSignals": "カスタムキーワードはありません。組み込みのキーワードのみが有効です。", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "耐障害性の構成", "resilienceStructureDesc": "このページでは動作を設定するだけです。ライブ ブレーカーの状態は [ヘルス] ページに表示されます。コンボ固有のリトライとラウンドロビン スロット制御はコンボ設定に残ります。", "enableThinking": "思考を可能にする", "maxThinkingTokens": "最大思考トークン", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "[エンドポイント] ページに Tailscale Funnel コントロールを表示します。", "showNgrokTunnel": "ングロク トンネル", "showNgrokTunnelDesc": "[エンドポイント] ページに ngrok トンネル コントロールを表示します。", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "サイドバー項目を非表示", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "すべて", + "presetAllDesc": "すべて表示", + "presetEssentials": "基本", + "presetEssentialsDesc": "初心者向け - 高度なツールは検索可能なままです", + "presetMinimal": "最小限", + "presetMinimalDesc": "コアページのみ", + "presetDeveloper": "開発者", + "presetDeveloperDesc": "開発&プロキシツール", + "presetAdmin": "管理者", + "presetAdminDesc": "監視&監査", + "settingsSidebarTitle": "サイドバーのカスタマイズ", + "settingsSidebarDesc": "サイドバーに表示する項目を選択します。「基本」でも高度なツールは検索可能です。", "hideHealthLogs": "ヘルスチェックログを非表示にする", "hideHealthLogsDesc": "ON の場合、サーバー コンソールで [HealthCheck] メッセージを抑制します", "themeAccent": "テーマカラー", @@ -6780,19 +6783,19 @@ "themeOrange": "オレンジ", "themeCyan": "シアン", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "アプリケーション名とロゴをカスタマイズ", + "appName": "アプリケーション名", + "appNameDesc": "サイドバーとブラウザータブに表示される名前", + "customLogo": "カスタムロゴURL", + "customLogoDesc": "カスタムロゴ画像のURL", + "uploadLogo": "ロゴをアップロード", + "resetLogo": "デフォルトに戻す", + "logoPreview": "プレビュー", + "customFavicon": "ブラウザーのファビコン", + "customFaviconDesc": "カスタムファビコンのURL(ブラウザータブに表示)", + "uploadFavicon": "ファビコンをアップロード", + "resetFavicon": "ファビコンをリセット", + "faviconPreview": "ファビコンのプレビュー", "logoFileTooLarge": "ロゴファイルは500KB未満である必要があります", "faviconFileTooLarge": "ファビコンファイルは50KB未満である必要があります", "invalidLogoFileType": "無効なファイル形式です。PNG、JPG、SVG、GIF、またはWebPをアップロードしてください。", @@ -6896,21 +6899,21 @@ "refreshInterval": "更新間隔", "ruleModeDescription": "ルールモードの説明" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "一括ヘルスチェック", + "bulkHealthcheckDesc": "設定済みのすべてのプロキシを対象URLに対してテストし、動作するものを確認します。", + "healthcheckTesting": "テスト中...", + "healthcheckAll": "すべてをヘルスチェック", + "healthcheckFailed": "ヘルスチェックを実行できませんでした", + "healthcheckTestingAll": "すべてのプロキシを並列でテスト中...", + "healthcheckTotal": "合計", + "healthcheckWorking": "稼働中", + "healthcheckFailedLabel": "失敗", + "healthcheckStatus": "ステータス", + "healthcheckProxyUrl": "プロキシURL", + "healthcheckLatency": "レイテンシー", "proxyDocumentationScopeTitle": "プロキシスコープの解決", "proxyDocumentationScopeDescBefore": "OmniRouteは、以下の優先順位でアウトバウンドプロキシを解決します:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "コンボ → アカウント → プロバイダー → グローバル", "proxyDocumentationScopeDescAfter": ". 最も具体的なスコープが優先されます。", "proxyDocumentationAddTitle": "カスタムプロキシの追加", "proxyDocumentationAddDescBefore": "「", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} プロバイダーが /models からブロックされました", "blockProviderTitle": "{provider} をブロックする", "unblockProviderTitle": "{provider} のブロックを解除する", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "CLIフィンガープリント照合", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "CLIフィンガープリントが有効なプロバイダー:{count}件", + "enableFingerprintTitle": "{provider}のフィンガープリントを有効化", + "disableFingerprintTitle": "{provider}のフィンガープリントを無効化", "systemTransforms": "システムブロックの変換パイプライン", "systemTransformsDesc": "転送前にリクエスト本文に適用される、プロバイダーごとに順序付けされた変換のパイプライン。あらゆるプロバイダー ID をサポートします。", "systemTransformsAddProvider": "プロバイダーの追加", @@ -7067,10 +7070,10 @@ "costOptDesc": "利用可能な最も安いアカウントを優先する", "resetAware": "リセット対応 RR", "resetAwareDesc": "残りのクォータが健全でリセットに近いアカウントを優先する", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "クォータ加重", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "完全ランダム", + "strictRandomDesc": "シャッフルデッキ — 再シャッフルする前に各アカウントを1回ずつ使用します", "stickyLimit": "スティッキー制限", "stickyLimitDesc": "切り替える前のアカウントごとの通話数", "routingStrategyTitle": "ルーティング戦略", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "このプロバイダーのグローバルアカウント戦略を上書きします(9router互換)。", "providerRoutingStrategy": "アカウント戦略", "providerRoutingInheritGlobal": "グローバルデフォルトを継承", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "クォータ事前チェックのカットオフ", + "quotaPreflightSubtitle": "リクエストをアップストリームに送信する前に、クォータを使い切ったアカウントをスキップします", + "quotaPreflightEnable": "クォータ事前チェックを有効化", + "quotaPreflightEnableDesc": "各リクエストの前に、アカウントの残りクォータ(5時間/週間/月間ウィンドウ)を確認します。残量がカットオフ以下のアカウントは、アップストリームを呼び出さずにスキップされます。Provider Quotaページで設定されたウィンドウ別のカットオフは、常にここでのデフォルトより優先されます。", + "quotaPreflightCutoff": "グローバルカットオフ(最小残量%)", + "quotaPreflightCutoffDesc": "独自のカットオフが設定されていないすべてのウィンドウで、残りクォータがこの割合以下になったアカウントの使用を停止します。Provider Quotaページの残量%バーと一致します。", + "quotaPreflightWindowsHint": "独自のウィンドウ別またはプロバイダー別カットオフ(Provider QuotaページのCutoffモーダルで設定)があるウィンドウは、このデフォルトの影響を受けません。", + "quotaPreflightLoadFailed": "クォータ事前チェック設定を読み込めません。", "modelAliases": "モデルのエイリアス", "modelAliasesTitle": "モデルエイリアス", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "完全一致またはワイルドカードパターンを使用してモデル名を再マッピングします。", "addCustomAlias": "カスタムエイリアスを追加", "deprecatedModelId": "非推奨モデルID", "newModelId": "新しいモデルID", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "コンボ戦略", "priority": "優先順位", "weighted": "加重", - "contextRelay": "Context Relay", + "contextRelay": "コンテキストリレー", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "最大再試行回数", "retryDelayLabel": "再試行遅延 (ミリ秒)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "同時実行性 / モデル", "queueTimeout": "キューのタイムアウト (ミリ秒)", "queueDepth": "キュー深度", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "引き継ぎしきい値", + "contextRelayMaxMessages": "要約対象の最大メッセージ数", + "contextRelaySummaryModel": "要約モデル", + "contextRelayProviderNote": "現在、Context RelayはCodexアカウント向けの引き継ぎを生成し、これらの値を新規または未設定のコンボのグローバルデフォルトとして使用します。", "providerProfiles": "プロバイダープロファイル", "providerProfilesDesc": "OAuth (セッションベース) プロバイダーと API キー (従量制) プロバイダーの個別の復元設定。 OAuth プロバイダーには、レート制限が低いため、より厳しいしきい値が設定されています。", "oauthProviders": "OAuthプロバイダー", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}日前", "backupReasonManual": "マニュアル", "backupReasonPreRestore": "復元前", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# 接続} other {# 接続}}", "noChangesSinceBackup": "前回のバックアップ以降変更はありません", "backupFailed": "バックアップに失敗しました", "restoreFailed": "復元に失敗しました", @@ -7329,7 +7332,7 @@ "configured": "設定済み", "none": "なし", "modelOverrideValuePlaceholder": "数値", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "英語のカンマ区切り(例:low, medium, high)", "addKeyValue": "キーと値を追加", "noModelOverrides": "このモデル用に設定されたオーバーライドはありません。", "modelOverrideLoadFailed": "モデルのオーバーライドの読み込みに失敗しました", @@ -7378,25 +7381,25 @@ "editPricing": "価格の編集", "viewFullDetails": "詳細を表示", "themeCoral": "コーラル", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "適応型ボリュームルーティング", + "adaptiveVolumeRoutingDesc": "ペイロード量とスループット負荷に基づいて接続数を動的に調整します。", + "lkgpToggleTitle": "最終正常プロバイダー(LKGP)", + "lkgpToggleDesc": "有効にすると、ルーターは最後に正常なレスポンスを返したプロバイダーを記憶し、以降のリクエストでそのプロバイダーを最初に試します。", "echoRequestedModelTitle": "レスポンスで要求されたモデル名をエコーする", "echoRequestedModelDesc": "有効にすると、レスポンスの `model` フィールドは、アップストリームのモデル名ではなく、クライアントが要求したエイリアスまたはコンボ名をエコーします。モデルがリクエストと一致しないレスポンスを拒否する厳格なクライアント(例:Claude Desktop)の問題を修正します。", "webSearchRouteTitle": "Web検索ルーティング", "webSearchRouteDesc": "リクエストにネイティブの web_search ツールが含まれている場合、デフォルトの代わりにリクエスト全体をこのモデルにルーティングします。Anthropic の web_search サーバーツールを実装していないプロバイダーに便利です。無効にするには空白のままにしてください。", "webSearchRoutePlaceholder": "例: openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "このパターンは有料モデルにのみ一致します。有料モデルを有効にするか、パターンを調整してください。", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGPキャッシュをクリア", + "lkgpCacheCleared": "LKGPキャッシュを正常にクリアしました", + "lkgpCacheClearFailed": "LKGPキャッシュをクリアできませんでした", + "days": "日", + "lkgp": "LKGPモード", + "lkgpDesc": "最終正常プロバイダー(予測可能な耐障害性)", + "maintenance": "メンテナンス", + "purgeExpiredLogs": "期限切れログを消去", + "purgeLogsFailed": "ログを消去できませんでした", "logsDeleted": "{count, plural, =0 {期限切れのログはパージされませんでした} one {期限切れのログを # 件パージしました} other {期限切れのログを # 件パージしました}}", "resetUsageData": "使用状況データのリセット", "resetUsageDataDesc": "使用状況、リクエストログ、および分析データをどこまで遡って削除するかを選択します。プロバイダーの設定、接続、APIキー、コンボ、および設定は保持されます。この操作は取り消せません。", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "使用状況データのリセットに失敗しました", "reset": "リセット", "resetting": "リセット中...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "コンテキスト最適化", + "contextOptDesc": "コンテキストウィンドウの要件と会話の長さに基づいてルーティングします", + "cacheOpt": "キャッシュ最適化", + "cacheOptDesc": "再利用可能な同一のプロンプトプレフィックスを同じプロバイダーアカウントに維持します", + "priorityDesc": "順次フォールバック - 最初にプロバイダー1を試し、次にプロバイダー2を試す、という順序で処理します", + "weightedDesc": "割合の重みに基づいてプロバイダー間でトラフィックを分散します", + "modelRoutingTitle": "モデルルーティングルール", + "modelRoutingDesc": "globパターンを使用して、モデルを特定のコンボに自動的にルーティングします", + "addRule": "ルールを追加", + "routeToCombo": "ルーティング先のコンボ", + "selectCombo": "コンボを選択...", + "priorityHint": "値が大きいほど先にチェックされます。具体的なパターンには10以上を使用してください。", + "patternHint": "任意の文字列には*、任意の1文字には?を使用します。大文字と小文字は区別されません。", + "noRoutingRules": "ルーティングルールが設定されていません。デフォルトでは、リクエストはグローバルコンボを使用します。", + "routingRuleHint": "claude-opus* -> frontier-combo のようなルールを追加すると、リクエストが自動的にルーティングされます。", + "deleteRoutingRule": "このモデルルーティングルールを削除しますか?", + "exactMatchMode": "完全一致", + "wildcardPatternMode": "ワイルドカードパターン", + "exactMatchModeDesc": "非推奨または名前が変更されたモデルIDには、完全一致のエイリアスを使用します。", + "wildcardPatternModeDesc": "モデルファミリーを1つのターゲットにマッピングする場合は、*と?を使ったワイルドカードエイリアスを使用します。", + "noExactAliasesConfigured": "完全一致のエイリアスが設定されていません。", + "wildcardRulesTitle": "ワイルドカードルール", + "noWildcardAliasesConfigured": "ワイルドカードエイリアスが設定されていません。", + "overview": "概要", + "unknownError": "不明なエラー", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "許可リスト", + "syncDisabled": "同期無効", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "同期有効", + "blacklist": "拒否リスト", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "同期済みモデル", + "budget": "予算", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "価格をリセットできませんでした: {reason}", - "tab": "Tab", + "tab": "タブ", "pricingSavedProvider": "{provider} の価格を保存しました", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "価格設定を保存できませんでした: {reason}", "pricingResetProvider": "{provider} の料金をリセットしました", - "nextSync": "Next Sync", + "nextSync": "次回の同期", "pricingSyncFailedWithReason": "価格の同期に失敗しました: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "同期済み料金をクリア", + "compressionTitle": "プロンプト圧縮", + "compressionDesc": "プロバイダーに送信する前にプロンプトを圧縮して、トークン使用量を削減します", "compressionGuidanceFullGuideLink": "圧縮の完全ガイド", "compressionGuidanceShow": "詳細", "compressionGuidanceHide": "詳細を非表示", @@ -7485,16 +7488,16 @@ "tokenSaverInputCompressionDesc": "コード、URL、意図を保持しながら、対象となるチャット履歴を書き換えます。", "tokenSaverFineTunePrefix": "各エンジンの微調整は", "tokenSaverFineTuneSuffix": "またはリクエストごとのエンジン結合は", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", - "compressionModeUltra": "Ultra", + "compressionMode": "圧縮モード", + "compressionModeOff": "オフ", + "compressionModeOffDesc": "圧縮は適用されません", + "compressionModeLite": "軽量", + "compressionModeLiteDesc": "空白文字と空行の削減", + "compressionModeStandard": "標準(Caveman)", + "compressionModeStandardDesc": "30種類以上のパターンによるルールベース圧縮。コードブロックとURLは保持されます", + "compressionModeAggressive": "積極的", + "compressionModeAggressiveDesc": "要約、ツール結果の圧縮、段階的なエイジングにより削減量を最大化", + "compressionModeUltra": "ウルトラ", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "アグレッシブなエンジン構成", "compressionAggressiveConfigDesc": "要約、ツール圧縮、およびエージングしきい値を微調整する", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "各エージング層で保持される最近のメッセージの数 (大きいほど保持されます)", "compressionToolStrategies": "ツールの結果戦略", "compressionToolStrategiesDesc": "さまざまなツール結果タイプの圧縮戦略を切り替える", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "一般設定", + "compressionAutoTrigger": "自動トリガーしきい値", + "compressionCacheTTL": "キャッシュTTL", + "compressionPreserveSystem": "システムプロンプトを保持", "compressionPreserveSystemAlways": "常に", "compressionPreserveSystemWhenNoCache": "キャッシュがない場合", "compressionPreserveSystemNever": "使用しない", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "保存されました", "compressionExclusionsCount": "{count, plural, one {# 除外} other {# 除外}} が設定されました", "compressionExclusionsEmpty": "除外設定がありません — すべてのモデル/エンドポイントが圧縮の対象となります(デフォルトの動作)。", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Cavemanエンジンの設定", + "compressionCavemanConfigDesc": "ルールベース圧縮エンジンを微調整します", "compressionCavemanPanelHint": "オン/オフおよびレベルはパネルで設定します:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "圧縮するメッセージロール", + "compressionRoleUser": "ユーザー", + "compressionRoleAssistant": "アシスタント", + "compressionRoleSystem": "システム", + "compressionMinLength": "メッセージの最小文字数", + "compressionSkipRules": "圧縮ルールをスキップ", + "compressionSkipRulesDesc": "圧縮時にスキップするルールをクリックしてください", + "compressionPreservePatterns": "保持するパターン", + "compressionPreservePatternsDesc": "圧縮対象外とする正規表現パターン(1行に1つ)", + "compressionLogTitle": "圧縮ログ", + "compressionLogEmpty": "圧縮されたリクエストはまだありません。圧縮を有効にしてリクエストが処理されると、圧縮統計がここに表示されます。", "minutes": "分", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "コマンドを考慮したツール出力フィルタリング", + "compressionModeCodexResponses": "Responsesツールの出力", + "compressionModeCodexResponsesDesc": "対象となるシェル、パッチ、検索、ビルド、JSON出力を控えめに圧縮", + "compressionModeStacked": "スタック", + "compressionModeStackedDesc": "RTKによるツール出力フィルタリング後にCavemanのメッセージ圧縮を実行", + "qdrantTitle": "Qdrant(ベクトルメモリ)", + "qdrantDesc": "任意。セマンティックメモリを外部ベクトルデータベースにインデックス化し、検索を高速化します。", + "qdrantStatusActive": "有効", + "qdrantStatusError": "エラー", + "qdrantStatusDisabled": "無効", + "qdrantEnable": "Qdrantを有効化", + "qdrantEnableDesc": "有効にすると、セマンティック/ハイブリッド戦略でQdrantを使用してメモリを検索できます。", + "qdrantTesting": "テスト中...", + "qdrantTestConnection": "接続をテスト", + "qdrantSaved": "設定を保存しました", + "qdrantSaveError": "設定の保存に失敗しました", + "qdrantHostHint": "ポートなし。例: 127.0.0.1 または http://qdrant", + "qdrantPort": "ポート", + "qdrantPortHint": "Qdrant のデフォルト: 6333", + "qdrantCollectionHint": "メモリポイントの保存先。", + "qdrantEmbeddingModel": "埋め込みモデル", + "qdrantHelpTitle": "クイックセットアップのヘルプ", + "qdrantHelpQuickTitle": "クイックセットアップ(Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. ホスト: Qdrant の IP/URL、ポート: 6333、コレクション: omniroute_memory。", + "qdrantHelpStep2": "2. nvidia/llama-nemotron-embed-vl-1b-v2:free を使用する場合、コレクションの次元数を 2048 に設定してください。", + "qdrantHelpStep3": "3. モデル欄: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free。", + "qdrantHelpStep4": "4. 保存し、接続をテストしてから、検索をテストしてください。", + "qdrantEmbeddingQuickSelect": "検出されたモデルからクイック選択...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "形式: provider/model。プロバイダーの認証情報を設定する必要があります。", + "qdrantApiKeyPlaceholderKeep": "(現在のキーを維持する場合は空のままにしてください)", + "qdrantApiKeyPlaceholderOptional": "(使用しない場合は空のままにしてください)", + "qdrantSaveHint": "ヒント: ホスト/ポート/コレクション/モデルを編集し、[保存]をクリックしてください。API キーは任意です。", + "qdrantSearchTestTitle": "検索テスト", + "qdrantSearchTestDesc": "埋め込みを生成し、Qdrant で検索します。", + "qdrantSearchPlaceholder": "例: ユーザー設定、履歴など", + "qdrantNoResults": "結果がありません(または Qdrant が設定されていません)。", + "qdrantCleanupTitle": "保持とクリーンアップ", + "qdrantCleanupDesc": "次の設定に基づいて期限切れおよび古いポイントを削除します:", + "searching": "検索中...", + "cleaning": "クリーンアップ中...", + "cleanNow": "今すぐクリーンアップ", "optional": "オプション", "current": "現在", "remove": "削除", @@ -7600,19 +7603,19 @@ "resilienceScope": "範囲:", "resilienceTrigger": "トリガー:", "resilienceEffect": "効果:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "リクエストキューとレート", + "resilienceAutoEnableApiKeyProviders": "API キーを使用するプロバイダーでは自動的に有効化", + "resilienceRequestsPerMinute": "1 分あたりのリクエスト数", + "resilienceMinTimeBetweenRequests": "リクエスト間の最小時間", + "resilienceConcurrentRequests": "同時リクエスト数", + "resilienceConnectionScopeConcurrentRequests": "接続/クォータスコープごとの同時リクエスト数", + "resilienceGlobalConcurrentRequests": "アップストリームへのグローバル同時リクエスト数(0 = 無効)", "resilienceMaxQueueWaitTime": "キューの最大待機時間", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "基本クールダウン時間", + "resilienceUseUpstreamRetryHints": "アップストリームの再試行ヒントを使用", + "resilienceDefaultPerProvider": "デフォルト(プロバイダーごと)", + "resilienceAlwaysOn": "常にオン", + "resilienceAlwaysOff": "常にオフ", "routingRemoveEntry": "エントリを削除", "routingNeedlesSubstrings": "針 (一致する部分文字列)", "routingCaseSensitive": "大文字と小文字を区別する", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "抽出された説明が元のリクエストに再挿入される前に、ビジョンモデルに送信されます。", "visionBridgeTimeoutMs": "タイムアウト (ミリ秒)", "visionBridgeMaxImagesPerRequest": "リクエストあたりの最大画像数", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "最大バックオフステップ数", + "resilienceProviderBreakerTitle": "プロバイダーごとのサーキットブレーカー", + "resilienceFailureThreshold": "障害しきい値", + "resilienceDegradationThreshold": "性能低下しきい値", "resilienceResetTimeout": "リセットタイムアウト", "resilienceFailureThresholdLabel": "失敗のしきい値", "resilienceResetTimeoutLabel": "リセットタイムアウト", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "接続クールダウン", "resilienceUseUpstreamRetryHintsLabel": "アップストリームの再試行ヒントを使用する", "resilienceUseUpstream429BreakerLabel": "上流の 429 ヒントを使用する (ブレーカー)", "resilienceMaxBackoffStepsLabel": "最大バックオフステップ", "resilienceYes": "はい", "resilienceNo": "いいえ", - "resilienceDefault": "Default", + "resilienceDefault": "デフォルト", "storageDatabaseBackupRetention": "データベースバックアップの保持", "storageDatabaseBackups": "データベースバックアップ", "storageBackupRetentionDescription": "自動SQLiteバックアップの保存先", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "レガシーJSONが正常にインポートされました!", "jsonImportFailed": "JSONのインポートに失敗しました", "jsonImportError": "JSONのインポート中にエラーが発生しました", + "jsonImportAuthRequired": "従来のJSON設定をインポートするには認証が必要です。先にサインインするか、セットアップを完了してください。", + "databaseSettingsAuthRequiredTitle": "認証が必要です", + "databaseSettingsAuthRequiredBody": "データベース設定とJSONインポートは、認証済みの管理者のみ利用できます。表示および編集するには、サインインするかセットアップを完了してください。", + "databaseSettingsAuthRequiredCta": "サインイン", "storagePurgeData": "データのパージ", "storagePurgeDataDesc": "保持期間のチェックを適用せずに、すべてのレコードを直ちに削除します。注意して使用してください。", "storageRetentionCleanup": "保持設定", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "モード: {mode}", "compressionAdaptiveOff": "アダプティブコンテキストバジェット: オフ(レガシー自動トリガー)", "compressionAdaptiveTarget": "アダプティブ({mode}、ポリシー: {policy})— ターゲット ≈ {target, number} トークン({contextLimit, number} トークンウィンドウ用)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "適応型コンテキスト予算", + "compressionAdaptiveModeOff": "オフ(従来の自動トリガー)", + "compressionAdaptiveModeFloor": "下限(常に収まることを保証)", + "compressionAdaptiveModeReplace": "自動トリガーを置き換える", + "compressionAdaptivePolicy": "予算ポリシー", + "compressionAdaptivePolicyReserve": "出力用に予約", + "compressionAdaptivePolicyPercentage": "ウィンドウの割合", + "compressionAdaptivePolicyAbsolute": "絶対トークン予算", "compressionOutputStylesDescription": "プロバイダーの出力を書き換えることなく、レスポンス整形指示を挿入します。自由に組み合わせ可能です。", "mcpAccessibilityDescription": "MCPツールの出力をスコープします(別ストア)。", "compressionStylesTileSummary": "{tokens, number} トークン節約 · {runs, plural, one {# 回の実行にスタイル適用} other {# 回の実行にスタイル適用}}", @@ -7866,8 +7873,8 @@ "description": "コマンド出力のフィルタリング。" }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responsesツール出力", + "description": "サポートされているResponsesツール出力に対する控えめな圧縮。" }, "headroom": { "label": "ヘッドルーム", @@ -7886,7 +7893,7 @@ "description": "古いターンを要約し、エージングします。" }, "llmlingua": { - "label": "LLMLingua (SLM)", + "label": "LLMLingua(SLM)", "description": "セマンティックプルーニング (ONNX)。" }, "ultra": { @@ -7908,12 +7915,12 @@ "description": "YAGNIラダー: 動作する最小限の変更、要求されていない抽象化の排除。" }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail(怠け者のシニア開発者)", + "description": "怠け者のシニア開発者の規律:YAGNIの階段を上り、根本原因を修正し、動作する最小限の差分にする。" }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "私にはADHDがあります(行動優先)", + "description": "行動優先の出力:次のアクションを最初に示し、手順には番号を付け、具体的な次の一歩を1つだけ提示し、前置きは省く。" }, "terse-cjk": { "label": "簡潔なCJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI フォールバック", "cliproxyapiEnableFallback": "CLIProxyAPI フォールバックを有効にする", "cliproxyapiUrl": "CLIProxyAPI URL", + "headroomProxyTitle": "Headroomプロキシ", + "headroomProxyDesc": "オプションのHeadroomトークン節約プロキシのURL。空の場合はHEADROOM_URLまたはhttp://localhost:8787を使用します。", + "headroomProxyUrl": "Headroom URL", + "headroomProxyUrlHint": "ループバックURLはこのページから起動できます。外部URLは疎通確認のみ行われます。", + "headroomProxySave": "保存", + "headroomProxyStart": "開始", + "headroomProxyStop": "停止", + "headroomProxyExternalHint": "このURLはループバックではないため、OmniRouteはローカルCLIを起動しません。", "cliproxyapiStatus": "CLIProxyAPI ステータス", "cliproxyapiNotDetected": "検出されませんでした", "cliproxyapiImportAuthTitle": "CLIProxyAPIからアカウントをインポート", @@ -7938,11 +7953,11 @@ "cliproxyapiImportAuthButton": "アカウントをインポート", "payloadRulesTitle": "ペイロードルール", "payloadRulesDesc": "モデルおよびプロトコルごとにリクエストペイロードの変更を設定します。変更は設定に保存され、保存直後にランタイムへホットリロードされます。", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "デフォルト", "payloadRuleDefaultDesc": "送信ペイロードに対象のパスが存在しない場合にのみパラメータを適用します。", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "上書き", "payloadRuleOverrideDesc": "そのパスにすでに存在するすべての値を置き換え、ペイロードに値を強制的に適用します。", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "フィルター", "payloadRuleFilterDesc": "アップストリームリクエストが送信される前に、ブロックされたパラメータをペイロードから削除します。", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "default と同様ですが、可能な場合は文字列値が最初にJSONとして解析されます。保存時にはレガシーな入力エイリアス default-raw も受け入れられます。", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "OpenAI Codex リクエストの service_tier=priority をグローバルに挿入します。", "codexFastTierHint": "有効にすると、OmniRoute は層がまだ指定されていない接続のアウトバウンド Codex リクエストに service_tier=priority を追加します。優先レベルには、OpenAI Enterprise API キーまたは ChatGPT-auth Codex パスが必要です。他のキー タイプは、OpenAI から層関連のエラーを受け取ります。 Codex プロバイダー ページの接続ごとの設定が優先されます。", "codexFastTierSaveError": "Codex 高速層設定の更新に失敗しました", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codexクォータ自動Ping", + "codexAutoPingDesc": "接続ごとのオプトイン設定:Codexセッションのウィンドウがリセットされた直後に小さなリクエストを送信し、必要なときにコールド状態にならないようにします。", + "codexAutoPingWarning": "Pingのたびに実際のCodexクォータを少量消費します。デフォルトではオフです。常用する接続に対してのみ有効にしてください。", + "codexAutoPingSaveError": "Codex自動Ping設定の更新に失敗しました", + "codexAutoPingToggleAria": "{connection}のCodexクォータ自動Pingを切り替える", "codexFastTierTierLabel": "サービスティア", "codexFastTierTierPriority": "プライオリティ", "codexFastTierTierFlex": "フレックス", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "グローバル検査間隔", "resilienceCredentialHealthEveryMinutes": "{minutes} 分ごと", "resilienceCredentialHealthHint": "0 はバックグラウンド掃引を無効にします(最大 1440 分 = 24 時間)。独自のヘルスチェック値を持つ接続はこのグローバル既定を無視します。ある接続を 0 にすると、グローバル掃引がオンでも対象外になります。", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "{provider}では常に有効です。OAuthアカウントの安全性確保に必要なため、無効にできません。", + "forcedFingerprintBadge": "必須", "sessionAffinityTitle": "セッションアフィニティ", "sessionAffinityDesc": "どのプロバイダーであっても、1つの会話を同じアカウントで指定された秒数維持します。0で無効になります。", "sessionAffinityTtl": "アフィニティTTL(秒)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "クールダウンの増加が停止するまでの最大バックオフステップ数。ほとんどの設定では先に「最大クールダウン」の上限に達するため、これは「最大クールダウン」が引き上げられた場合の安全上限として機能します。", "disableSessionStickiness": "セッションスティッキネスを無効にする", "disableSessionStickinessDesc": "ラウンドロビンおよびランダムのコンボにおいて、最初のメッセージのハッシュによって会話全体を1つの接続に固定するのではなく、リクエストごとに異なる接続にローテーションします。複数ターンのチャットでプロンプトキャッシュのヒット率を維持するには、オフのままにしてください。コンボごとの個別設定が優先されます。", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "プロンプトキャッシュの局所性ルーティング", + "promptCacheAffinityDesc": "正常性とクォータのフェイルオーバーを維持しながら、一致するプロンプトキャッシュキーには同じプロバイダーアカウントを優先します。", + "reasoningTokenBuffer": "推論トークンバッファ", + "reasoningTokenBufferDesc": "既知の推論モデルに限り、バッファ全体が既知の出力上限内に収まる場合のみ、コンボルーティングでmax_tokensに余裕を追加できるようにします。", + "zeroLatencyOptimizations": "ゼロレイテンシ最適化", + "zeroLatencyOptimizationsDesc": "ヘッジング、予測的なTTFTスキップ、プロアクティブなフォールバック圧縮を有効にします。これらのレイテンシ機能がターゲットと競合したり、フォールバックリクエストを圧縮したりしないようにするには、オフのままにしてください。", "credentialRedaction": "認証情報の秘匿化", "credentialRedactionDesc": "プロバイダーに送信されるコンテキストおよびレスポンスから、API キー、トークン、シークレットを秘匿化します。", "enableCredentialRedaction": "認証情報の秘匿化を有効にする", "enableCredentialRedactionDesc": "メッセージ、ツール呼び出し、およびレスポンスから、APIキー、トークン、秘密鍵、およびJWTを取り除きます。", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "自動同期は無効です", + "pricingAutoSyncEnabled": "自動同期は有効です", "modalityBridgeIntro": "マルチモーダルコンテンツをテキスト専用モデルに渡す前にテキストへ変換します。画像、音声、動画の各ブリッジを利用、設定できます。", "modalityBridgeVisionTab": "ビジョン", "modalityBridgeAudioTab": "オーディオ", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "健康", "cliproxyapiPort": "ポート", "qdrantHost": "ホスト", - "qdrantCollection": "コレクション", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "コレクション" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "RTKエンジン", + "description": "ツール出力、ターミナルログ、ビルド結果を対象としたコマンド認識型圧縮。", + "enabled": "有効", + "intensity": "強度", + "intensityMinimal": "最小", + "intensityStandard": "標準", + "intensityAggressive": "強力", + "toolResults": "ツール結果", + "assistantMessages": "アシスタントメッセージ", + "codeBlocks": "コードブロック", "filterCatalog": "フィルターカタログ", "filterCatalogDesc": "カテゴリ別の利用可能な出力フィルタ", "guidedConfig": "構成", "guidedConfigDesc": "RTK が端末出力をフィルタリングする方法を調整します", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "最大行数", + "maxChars": "最大文字数", "deduplicateThreshold": "重複排除のしきい値", "customFilters": "カスタムフィルター", "detectedType": "検出された種類", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "失敗", "rawOutputAlways": "いつも", "rawOutputMaxBytes": "未加工出力の最大バイト数", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "フィルターのテスト", + "pasteOutput": "フィルタリングをテストするには、ツール出力を貼り付けてください...", "presetHigh": "アグレッシブ", "presetLow": "ライト", "presetMaxChars": "最大出力文字数", "presetMaxLines": "最大出力ライン", "presetMedium": "標準", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "実行", + "result": "結果", + "previewEmpty": "サンプルを実行してRTK出力をプレビューします。", + "detected": "検出済み", "masterSwitchOffAlert": "Token SaverのマスタースイッチがOFFです — エンドポイントページからONにするまで、これらの設定はリクエストに影響しません。", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "フィルタリングされたトークン", + "filtersActive": "有効なフィルター", + "requests": "リクエスト", + "avgSavings": "平均削減率", "simpleMode": "シンプル", "advancedMode": "上級者向け", "searchFilters": "検索フィルター...", @@ -8463,7 +8470,7 @@ "loadFailed": "エンジン情報の読み込みに失敗しました。", "engineNotFound": "エンジン「{engine}」が見つかりません。", "saveFailed": "設定の保存に失敗しました。", - "previewFailed": "Preview failed.", + "previewFailed": "プレビューに失敗しました。", "panelPointerPrefix": "このレイヤーのオン/オフの切り替えおよびレベルの設定は、", "compressionSettings": "圧縮設定", "panelPointerSuffix": "で行います。このページでは詳細な設定のみを編集します。", @@ -8495,7 +8502,7 @@ }, "engines": { "headroom": { - "name": "Headroom SmartCrusher", + "name": "ヘッドルームSmartCrusher", "description": "明示的な行数マーカーを使用した、同質なJSON配列の可逆的な表形式コンパクト化。" }, "session-dedup": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "圧縮コンボ", + "description": "さまざまなルーティングシナリオでエンジンを組み合わせる方法を定義します。", + "createCombo": "圧縮コンボを作成", + "editCombo": "編集", + "deleteCombo": "削除", + "deleteConfirm": "この圧縮コンボを削除しますか?", + "pipeline": "パイプライン", + "addStep": "ステップを追加", + "removeStep": "削除", + "name": "名前", + "descriptionField": "説明", + "languagePacks": "言語パック", + "outputMode": "出力モード", + "assignToRouting": "ルーティングコンボに割り当て", + "noAssignments": "利用可能なルーティングコンボはありません", + "default": "デフォルト", + "setAsDefault": "デフォルトに設定", + "save": "保存", + "cancel": "キャンセル", + "enabled": "有効", "loading": "読み込み中…", "hubTitle": "圧縮ハブ", "hubDescription": "グローバルに実行する圧縮プロファイルを選択します。", @@ -8661,6 +8668,8 @@ "contextEditingNote": "現在は Claude (Anthropic) のみで利用可能です。これは委任モードです。プロバイダーがサーバー側で古いツール使用ブロックをクリアします。メッセージの書き換えは行いません。他のプロバイダーには影響しません。", "namedCombos": "名前付きコンボ", "namedCombosDescription": "異なるパイプラインを保存し、特定のルーティングコンボに割り当てます。", + "activeProfileMasterSwitchOffWarning": "マスターの「Prompt Compression」スイッチをオンにするまで、以下の有効なプロファイルは実行されません。", + "activeProfileMasterSwitchOffCta": "Settings でオンにする", "comboNamePlaceholder": "コンボ名", "descriptionPlaceholder": "説明", "nameRequired": "保存する前にコンボ名を入力してください。", @@ -8674,9 +8683,7 @@ "languagePacksList": "言語パック: {packs}", "dragToReorder": "ドラッグしてステップを並べ替え", "engine": "エンジン", - "intensity": "強度", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "強度" }, "compressionStudio": { "noRun": "利用可能な圧縮実行はありません。", @@ -8705,7 +8712,7 @@ "run": "実行", "laneRejected": "拒否されました: {reason}", "error": "エラー", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "統合パイプラインのプレビューに失敗しました:{reason}", "combinedFlow": "結合フロー", "eachLayer": "各レイヤー個別", "diff": "差分", @@ -8780,27 +8787,27 @@ }, "enableTitle": "エンジンを有効にする", "enableDescription": "スタックの最後に実行され(RTK/Cavemanがテキストをクリーンアップした後、OmniGlyphが残りを画像に変換)、omniglyph モードを介してスタンドアロンでも実行されます。これはプレビュー版であり、エンドツーエンドの検証が完了するまではデフォルトでオフのままになります。", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "圧縮プロファイル", + "profileDescription": "プロファイルは下限ではなく上限です。より厳格なプロファイルをステップごとのオーバーライドで緩和することはできません。このコードベースでの測定結果:coding-safe または balanced では、履歴がまだ蓄積されていないセッションは何も圧縮しません。これは、どちらも最小文字数のしきい値を引き上げ、システムプロンプト、ツールスキーマ、ツール結果をネイティブのまま保持するためです。", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "アグレッシブ(デフォルト)", + "description": "公開済みレシートで測定されたポリシーです。システムプロンプト、ツールのドキュメント、密度の高い履歴をイメージ化します。" }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "バランス", + "description": "ライブ状態をネイティブのまま保持し、直近8ターンを保護します。古い完了済みの履歴のみを折りたたみます。" }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "コーディングセーフ", + "description": "権限情報、ツールスキーマ、ライブのツール出力をネイティブのまま保持し、直近12ターンを保護します。セッションに履歴が蓄積されるまでは何も圧縮しません。" }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "パススルー", + "description": "変換せずにルーティングします。エンジンはスキップされ、リクエストは変更されずに転送されます。" } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph 圧縮プロファイルを選択", "saved": "保存されました。", "saveFailed": "保存できませんでした。", "enableAria": "OmniGlyphエンジンを有効にする", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "ルールベースのメッセージ圧縮、言語パック、分析、出力モード制御。", "advancedConfig": "高度な構成", "advancedConfigDesc": "圧縮動作を微調整する", "aggressiveSettings": "アグレッシブな設定", "aggressiveSettingsDesc": "最大の圧縮率と潜在的な品質のトレードオフ", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "リクエスト", + "tokensSaved": "節約されたトークン", + "savingsPercent": "節約率(%)", + "avgLatency": "平均レイテンシ", + "languagePacks": "言語パック", + "languagePacksDesc": "特定の言語向けの圧縮ルールを有効にします。", "labelAutoTrigger": "コンテキストが超過した場合に自動圧縮", "labelCompressionRate": "圧縮強度", "labelMaxTokens": "メッセージごとのターゲット トークン", "labelMinLength": "最小メッセージ長", "labelMinSavings": "保存する最小トークン数", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "有効", + "autoDetect": "言語を自動検出", + "rulesCount": "{count}件のルール", "inputCompressionTitle": "入力圧縮", "inputCompressionDesc": "チャット履歴をより短い表現に書き換えます。入力トークンを約50%削減します。", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "圧縮分析", + "noAnalytics": "圧縮分析データはまだありません。", "masterDisabledWarning": "Token SaverのマスタースイッチがOFFです — 圧縮設定からオンにするかここで変更するまで、これらの設定はリクエストに影響しません。", "outputMode": "出力モード", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "出力モード", "quickSettings": "クイック設定", "quickSettingsDesc": "始めるための基本的な圧縮設定", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "明瞭性の自動バイパス", + "bypassConditions": "バイパス条件", "bypassConditionsList": "セキュリティ、不可逆的、明確化、順序依存", "simpleMode": "シンプル", "advancedMode": "上級者向け", @@ -8944,9 +8951,9 @@ "ultraSettings": "ウルトラ設定", "ultraSettingsDesc": "SLM を利用したセマンティック圧縮", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "簡潔に回答してください。技術用語、コード、エラー、URL、識別子は保持してください。", + "full": "簡潔かつコンパクトに回答してください。技術的な内容はすべて保持してください。", + "ultra": "一般的な技術略語を使用して、極めて簡潔に回答してください。記号は正確に保持してください。" } }, "translator": { @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "残り", "kiloPassRenews": "{count} 日後に更新", "kiloPassUsageLabel": "今月の使用量", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "追加使用クレジット", + "kimiExtraUsage": "追加使用量", + "kimiExtraUsageEnabled": "有効", + "kimiExtraUsageDisabled": "無効", + "kimiExtraUsageFrozen": "凍結", + "kimiExtraUsageUnavailable": "利用不可", + "kimiMonthlyUsed": "今月の使用量", + "kimiMonthlyLimit": "月間上限", + "kimiMonthlyLimitUnlimited": "無制限", + "kimiAdditionalCredits": "追加クレジット", "loggerTab": "ロガー", "proxyTab": "プロキシ", "budgetManagement": "予算管理", @@ -9324,7 +9331,7 @@ "circuitBreakers": "サーキットブレーカー", "lockedIPs": "ロックされたIP", "lockoutsAutoRefreshHint": "モデルごとのレート制限ロック • 自動リフレッシュ 10 秒", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {#件がロック中} other {#件がロック中}}", "timeLeft": "{time} 残り", "howItWorks": "仕組み", "howItWorksSubtitle": "評価によって LLM 応答がどのように検証されるかを学びます", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "テスト対象のモデル", "searchSuitesPlaceholder": "スイートを検索...", "passSuffix": "パスする", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {#件のケース} other {#件のケース}}", "runEval": "評価の実行", "runAllSuites": "すべて実行", "runAllRunning": "すべて実行中...", "runAllProgress": "{current}/{total} を実行中: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {#件のスイートが失敗} other {#件のスイートが失敗}}", "runAllCompleted": "{suites} スイートを実行しました — {passed} は成功、{failed} は失敗しました", "runAllCompletedWithFailures": "{completed} スイートを実行しました。 {failedSuites} は完了できませんでした", "runningProgress": "{current}/{total} を実行中...", @@ -9423,7 +9430,7 @@ "providerLimits": "プロバイダーの制限", "noProviders": "プロバイダーが接続されていません", "connectProvidersForQuota": "OAuth を使用してプロバイダーに接続し、API クォータの制限と使用状況を追跡します。", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {#件のアカウント} other {#件のアカウント}}", "filteredFromCount": "({count} からフィルタリング)", "autoRefresh": "自動更新", "refreshAll": "すべて更新", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "クォータの表示設定の更新に失敗しました", "account": "アカウント", "modelQuotas": "モデルのクォータ", - "lastUsed": "Last Refreshed", + "lastUsed": "最終更新", "actions": "アクション", "refreshQuota": "クォータの更新", "today": "今日", @@ -9452,9 +9459,9 @@ "cardExpand": "展開", "cardCollapse": "折りたたむ", "moreQuotas": "+{count}件", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "未グループ化", + "viewFlat": "フラット", + "viewByEnvironment": "環境別", "noQuotaDataAvailable": "利用可能なクォータ データがありません", "noAccountsForTierFilter": "層フィルターのアカウントが見つかりませんでした", "tierAll": "すべて", @@ -9475,7 +9482,7 @@ "filterTierLabel": "ティア", "purchaseAll": "すべて", "purchaseOauthSub": "サブスクリプション", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "OAuth不要", "purchaseApiKey": "APIキー", "creditsLabel": "クレジット", "creditBalanceHint": "残高", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "クレジットを引き換える", "resetCreditRedeemed": "引き換え済みのリセット", "resetCreditRedeemFailed": "リセットクレジットの引き換えに失敗しました", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "スイートの保存に失敗しました", "clone": "クローン", "exportSuite": "エクスポート", "importSuite": "インポート", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "無効な評価スイート JSON", "suiteBuilderCloneSuffix": "コピー", "suiteBuilderImportedSuite": "輸入スイート", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "スコアカード", + "evalApiKey": "APIキー", + "scorecardPassRate": "合格率", + "targetTypeModel": "モデル", + "actualOutputLabel": "実際の出力", + "evalTargetHint": "評価するモデルまたはコンボを選択してください。", + "suiteBuilderDeleted": "スイートを削除しました", + "suiteBuilderCaseCardHint": "入力プロンプトと期待される出力基準を定義します。", + "nextResetUtc": "次回のリセット(UTC)", + "scorecardHint": "すべての評価スイートを集計した合格率。", + "suiteLatestRunsHint": "このスイートの最新の評価実行。", + "saving": "保存中", + "suiteBuilderCaseModelLabel": "モデル(任意)", + "evalControlsTitle": "評価コントロール", + "suiteBuilderEditTitle": "評価スイートを編集", + "suiteBuilderCaseStrategyLabel": "検証方法", + "notifySelectDifferentCompareTarget": "比較には別のターゲットを選択してください", + "recentRunsHint": "最新の評価実行を表示しています。詳細な結果を確認するには、実行をクリックしてください。", + "evalCompareHint": "必要に応じて、結果を2つ目のターゲットと比較できます。", + "suiteBuilderCaseInvalid": "このケースには検証エラーがあります。保存する前に修正してください。", + "historyEmpty": "評価履歴はまだありません", + "suiteBuilderUpdated": "スイートを更新しました", + "resetInterval": "リセット間隔", + "suiteBuilderCreateTitle": "評価スイートを作成", + "activePeriodSpend": "現在の期間の支出額", + "evalApiKeyHint": "評価リクエストに使用するAPIキーを選択してください。", + "evalCompareOptional": "比較(任意)", + "suiteBuilderDeleteFailed": "スイートの削除に失敗しました", + "suiteBuilderCaseSystemPromptPlaceholder": "任意のシステム指示...", + "scorecardCases": "ケース", + "runCompletedWithScore": "評価が完了しました — 合格率{score}%", + "suiteBuilderCustomBadge": "カスタム", + "targetSuiteDefaults": "スイートのデフォルト設定", + "suiteBuilderDeleteConfirm": "このスイートを削除してもよろしいですか?この操作は元に戻せません。", + "suiteBuilderNameLabel": "スイート名", + "scorecardSuites": "スイート", + "evalCompareTarget": "比較ターゲット", + "suiteBuilderCaseModelPlaceholder": "例: gpt-4o-mini", + "evalControlsHint": "評価対象とAPIキーを設定し、スイートを実行してモデルの品質を検証します。", + "recentRunsTitle": "最近の実行", + "suiteBuilderCaseSystemPromptLabel": "システムプロンプト", + "suiteBuilderCaseExpectedPlaceholder": "例: def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "例:デフフィボナッチ", "suiteBuilderCaseExpectedPlaceholderExact": "予想される正確な応答を貼り付けます", "suiteBuilderCaseExpectedPlaceholderRegex": "例: ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "スラッシュを囲まずに JavaScript 正規表現を使用します。", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "例: コーディング品質スイート", + "suiteBuilderAddCase": "ケースを追加", + "cancel": "キャンセル", + "evalTarget": "対象", + "suiteBuilderCaseNameLabel": "ケース名", + "weeklyLimitUsd": "週間上限(USD)", + "suiteBuilderCaseUserPromptPlaceholder": "例: Pythonでフィボナッチ関数を作成してください", + "suiteBuilderNameRequired": "スイート名は必須です", + "suiteBuilderCaseUserPromptLabel": "ユーザープロンプト", + "daily": "毎日", + "resultErrorLabel": "エラー", + "suiteBuilderBuiltInBadge": "組み込み", + "suiteBuilderCaseCardTitle": "テストケース", "suiteBuilderDuplicateCase": "重複", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "例: 50.00", + "suiteBuilderCaseTagsHint": "テストケースを整理するための、カンマ区切りのタグ。", + "notifyEvalRunFailedWithReason": "評価に失敗しました: {reason}", + "weekly": "毎週", + "runEvalRunning": "評価を実行中...", + "delete": "削除", + "resetTimeUtc": "リセット時刻(UTC)", + "evalApiKeyAuto": "自動(デフォルトを使用)", + "suiteBuilderDescriptionPlaceholder": "このスイートのテスト内容についての説明(任意)...", + "targetComparisonTitle": "対象の比較", + "save": "保存", + "suiteBuilderCreated": "スイートが正常に作成されました", + "suiteLatestRuns": "最新の実行", + "suiteBuilderCaseExpectedLabel": "期待値", + "historyLatency": "レイテンシー", + "suiteBuilderCaseTagsPlaceholder": "例: コーディング, python", + "targetTypeCombo": "コンボ", + "scorecardPassed": "合格", + "suiteBuilderCaseTagsLabel": "タグ", + "suiteBuilderNewSuite": "新規スイート", + "notifyEvalLoadFailed": "評価データの読み込みに失敗しました", + "notConfigured": "未設定", + "suiteBuilderCaseNamePlaceholder": "例:Python のフィボナッチテスト", + "intervalLabel": "間隔", + "suiteBuilderCreateAction": "スイートを作成", + "suiteBuilderCasesHint": "各ケースでプロンプトを送信し、レスポンスを検証します。", + "suiteBuilderUpdatedAt": "更新日時", + "errorBadge": "エラー", + "suiteBuilderCasesTitle": "テストケース", + "edit": "編集", + "monthly": "毎月", + "suiteBuilderCasesRequired": "少なくとも1つのテストケースが必要です", + "weeklyLimitSummary": "週間予算上限の概要", + "suiteBuilderDescriptionLabel": "説明", + "targetComparisonHint": "ターゲット間の評価結果を並べて比較します。", + "compareCompletedWithScore": "比較が完了しました — 合格率 {score}%", + "staleQuotaTooltip": "前回の更新に失敗しました — キャッシュされたデータを表示しています", "quotaThresholdLabel": "残り分", "quotaCutoffsColumnHelp": "残りのクォータがこのパーセンテージ以下になった場合、リクエストを停止します。", "quotaCutoffsButtonDefault": "デフォルト", @@ -9863,19 +9870,19 @@ "backToLogin": "ログインに戻る", "forgotPassword": "パスワードをお忘れですか?", "continueWithOidc": "OIDCで続行", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "デフォルトのパスワード:CHANGEME(INITIAL_PASSWORD が設定されていない場合)", "Authorization": "認可", "Content-Disposition": "コンテンツの配置", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "認証を待機しています...", + "waitingForGoogleAuthorization": "Google の認証を待機しています...", + "waitingForOpenAIAuthorization": "OpenAI の認証を待機しています...", + "waitingForAntigravityAuthorization": "Antigravity の認証を待機しています...", + "waitingForQoderAuthorization": "Qoder の認証を待機しています...", + "exchangingCodeForTokens": "コードをトークンと交換しています...", + "nodeIncompatibleTitle": "互換性のない Node.js バージョン", + "nodeIncompatibleDesc": "実行中の Node.js {version} は、OmniRoute がサポートするセキュアランタイムポリシーの対象外です。パッチ適用済みの Node.js 20.x または 22.x LTS リリースを使用してください。", + "nodeIncompatibleFixLabel": "修正方法:パッチ適用済みの Node.js 22 LTS リリースをインストールしてください", + "nodeIncompatibleHint": "OmniRoute には Node.js 22.22.2+(22.x LTS)または 24.0.0+(24.x LTS)が必要です。Node 24 LTS を推奨します。", "resetViaAppDataTitle": "アプリデータを介してリセット", "resetViaAppDataDescription": "アプリデータディレクトリから設定ファイルを削除してパスワードをリセットしてください:", "quitDesktopApp": "OmniRouteデスクトップアプリを完全に終了します", @@ -9984,8 +9991,8 @@ "readyToRoute": "ルートの準備ができました! ✓", "configureProvidersNote": "📝 ダッシュボードでプロバイダーを構成するか、環境変数を使用する", "dataLocation": "データの場所:", - "dataLocationMacLinux": "macOS/Linux:", - "dataLocationWindows": "Windows:", + "dataLocationMacLinux": "macOS/Linux:", + "dataLocationWindows": "Windows:", "product": "製品", "dashboardLink": "ダッシュボード", "changelog": "変更履歴", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "プロバイダー", "commonUseCases": "一般的な使用例", "clientCompatibility": "クライアントの互換性", - "protocolsToc": "Protocols", + "protocolsToc": "プロトコル", "apiReference": "APIリファレンス", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "管理 API リファレンス", + "managementApiDescription": "プロキシレジストリ、スコープの割り当て、旧式プロキシの移行に使用する自動化エンドポイント。", "method": "方法", "path": "パス", "notes": "注意事項", @@ -10074,8 +10081,8 @@ "deployFlyText": "1 つの fly.toml と 1 つのデプロイ コマンドを使用して、Fly.io エッジ ランタイムにデプロイします。", "deployPwaTitle": "PWA", "deployPwaText": "OmniRoute をプログレッシブ Web アプリとして Android、iOS、デスクトップ ブラウザーにインストールします。", - "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxTitle": "Termux(Android)", + "deployTermuxText": "Termux を介して Android 上で OmniRoute をヘッドレス実行します。モバイルブラウザからダッシュボードにアクセスできます。", "featureRoutingTitle": "マルチプロバイダールーティング", "featureRoutingText": "単一の OpenAI 互換エンドポイントを通じて 30 以上の AI プロバイダーにリクエストをルーティングします。チャット、応答、音声、画像 API をサポートします。", "featureCombosTitle": "コンボとバランス調整", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "OmniRoute を安定したベース URL として使用し、その下でアカウントまたはプロバイダーの組み合わせをローテーションします。", "clientKimiBullet2": "フォールバックと監査証跡が明示的なままになるように、コーディング フローではプレフィックス付きのモデルを優先します。", "clientKimiBullet3": "ツールを使用するクライアントに対してネイティブの Responses スタイルのルーティングが必要な場合は、「/v1/responses」を使用します。", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "プロトコル:MCP と A2A", + "protocolsDescription": "OmniRoute は、OpenAI 互換 API に加えて2つの運用プロトコルを提供します。ツール実行用の MCP と、エージェント間ワークフロー用の A2A です。", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "stdio 経由で MCP を使用し、監査可能な状態でクライアントが OmniRoute ツールを検出して呼び出せるようにします。", + "protocolMcpStep1": "`omniroute --mcp` で MCP トランスポートを起動します。", + "protocolMcpStep2": "MCP クライアントを stdio トランスポートに接続します。", + "protocolMcpStep3": "`omniroute_get_health` と `omniroute_list_combos` を呼び出して接続を確認します。", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "A2A JSON-RPC を使用して、タスクを同期的に、または SSE ストリーミング経由で送信します。", + "protocolA2aStep1": "エージェントを検出するには `/.well-known/agent.json` を読み取ります。", + "protocolA2aStep2": "`message/send` または `message/stream` リクエストを `POST /a2a` に送信します。", + "protocolA2aStep3": "`tasks/get` と `tasks/cancel` を使用してタスクのライフサイクルを管理します。", + "protocolTroubleshootingTitle": "プロトコルのトラブルシューティング", + "protocolTroubleshooting1": "MCP のステータスがオフラインの場合は、stdio プロセスが実行中で、ハートビートファイルが更新されていることを確認してください。", + "protocolTroubleshooting2": "A2A タスクが `working` のままの場合は、`/api/a2a/tasks/:id` とストリームイベントを調べ、終了状態を確認してください。", + "protocolTroubleshooting3": "運用管理と監査状況の確認には `/dashboard/mcp` と `/dashboard/a2a` を使用します。", "endpointChatNote": "OpenAI 互換のチャット エンドポイント (デフォルト)。", "endpointResponsesNote": "応答 API エンドポイント (Codex、o シリーズ)。", "endpointModelsNote": "接続されているすべてのプロバイダーのモデル カタログ。", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "/v1 のないクライアント用のヘルパーを書き換えます。", "endpointRewriteResponsesNote": "/v1 のない応答のヘルパーを書き換えます。", "endpointRewriteModelsNote": "/v1 を使用せずにモデル検出用のヘルパーを書き換えます。", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "保存済みのプロキシレジストリアイテムを一覧表示します(ページネーション対応)。", + "mgmtProxiesCreateNote": "レジストリに再利用可能なプロキシアイテムを作成します。", + "mgmtProxiesHealthNote": "プロキシログから、保存済みプロキシごとの24時間/ローリング方式のヘルスメトリクスを取得します。", + "mgmtProxiesBulkAssignNote": "1回のリクエストで、多数のスコープ ID に対して1つのプロキシを割り当てるか、割り当てを解除します。", + "mgmtAssignmentsListNote": "scope、scope_id、または proxy_id ごとにプロキシの割り当てを一覧表示します。", + "mgmtAssignmentsUpdateNote": "global/provider/account/combo スコープのプロキシを割り当てるか、割り当てを解除します。", + "mgmtLegacyMigrationNote": "従来の proxyConfig マップをレジストリの割り当てにインポートします。", "modelPrefixesDescriptionStart": "特定のプロバイダーにルーティングするには、モデル名の前にプロバイダーのプレフィックスを使用します。例:", "modelPrefixesDescriptionEnd": "GitHub Copilot にルートします。", "provider": "プロバイダー", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute はオープンソース ソフトウェアです。ライセンス条項に基づいて、自由に検査、変更、配布することができます。" }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI エージェント", + "description": "システムにインストールされている CLI エージェントを検出します。自動検出用のカスタムエージェントを追加できます。", + "refresh": "更新", + "installed": "インストール済み", + "notFound": "見つかりません", + "builtIn": "組み込み", + "custom": "カスタム", + "remove": "削除", + "addCustomAgent": "カスタムエージェントを追加", + "addCustomAgentDesc": "任意の CLI ツールを検出対象として登録します。更新時に自動的にスキャンされます。", + "agentName": "エージェント名", + "binaryName": "バイナリ名", + "versionCommand": "バージョン確認コマンド", + "spawnArgs": "起動引数", + "addAgent": "エージェントを追加", + "scanning": "システム上の CLI エージェントをスキャンしています...", + "opencodeIntegration": "OpenCode 連携", + "opencodeDetected": "opencode {version} を検出しました", + "opencodeDesc": "OmniRoute のベース URL と利用可能なすべてのモデルを含む、すぐに使える {configFile} を生成します。プロジェクトルートに配置し、{command} を実行してください。", + "downloadConfig": "{file} をダウンロード", + "downloaded": "ダウンロードしました!", + "setupGuideTitle": "セットアップガイド", + "openCliTools": "CLIツールを開く", + "setupGuideDetectCliTitle": "インストール済みのCLIを検出", + "setupGuideDetectCliDesc": "CLIをインストールまたは更新した後、「更新」をクリックすると、OmniRouteがバイナリとバージョンを再スキャンします。", + "setupGuideCustomAgentTitle": "カスタムバイナリを登録", + "setupGuideCustomAgentDesc": "使用するCLIが組み込みリストにない場合は、「カスタムエージェントを追加」を使用してください。バイナリ名とバージョン確認コマンドを入力します。", + "setupGuideCommandMissingTitle": "「command not found」を解決", + "setupGuideCommandMissingDesc": "CLIコマンドがPATHに存在することを確認し、新しいターミナルセッションを開いてから、再度「更新」を実行してください。", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10491,12 +10498,12 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "シンプルチャット", + "streaming": "ストリーミング", + "system-prompt": "システムプロンプト", + "thinking": "思考", + "tool-calling": "ツール呼び出し", + "multi-turn": "マルチターン", "vision": "ビジョン", "schema-coercion": "スキーマの強制" }, @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "キャッシュ管理", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "更新", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "メモリエントリ", + "memoryEntriesSub": "インメモリLRU", + "dbEntries": "DBエントリ", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "キャッシュヒット", + "cacheHitsSub": "全{total}件中", + "tokensSaved": "節約したトークン数", + "tokensSavedSub": "ヒット数から推定", + "hitRate": "ヒット率", + "performance": "キャッシュパフォーマンス", + "autoRefresh": "{seconds}秒ごとに自動更新", + "hits": "ヒット", + "misses": "ミス", + "total": "合計", + "behavior": "キャッシュの動作", + "behaviorDeterministic": "temperature=0の非ストリーミングリクエストのみがキャッシュされます。", + "behaviorBypass": "ヘッダー{header}を指定するとバイパスできます。", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "デフォルトのTTL:30分。{envVar}で設定できます。", + "idempotency": "冪等性レイヤー", + "activeDedupKeys": "アクティブな重複排除キー", + "dedupWindow": "重複排除ウィンドウ", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "キャッシュをクリアできませんでした。", + "unavailable": "キャッシュを利用できません", + "unavailableDesc": "キャッシュ統計を取得できませんでした。サーバーが実行中であることを確認してください。", "loadingCacheAria": "キャッシュを読み込み中", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "プロンプトキャッシュ(プロバイダー側)", + "semanticCache": "セマンティックキャッシュ", + "promptCacheSectionDesc": "利用履歴からプロバイダー側のプロンプトキャッシュのアクティビティを表示し、キャッシュ制御が有効な箇所と、入力がどの程度再利用されているかを確認できます。", + "promptTrendDesc": "過去24時間の1時間ごとのリクエスト数、キャッシュカバレッジ、キャッシュ読み取り量。", + "cachedRequests": "キャッシュ済みリクエスト", + "cachedRequests24h": "キャッシュ済みリクエスト(24時間)", + "cacheHitRate": "キャッシュヒット率", + "cacheRate": "キャッシュ率", + "cacheRateDesc": "全リクエストに占める割合", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "プロンプトキャッシュのメトリクス", + "withCacheControl": "キャッシュ制御あり", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "キャッシュ再利用率", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "推定コスト削減額", + "lastUpdated": "最終更新", + "hoursTracked": "時間分を追跡", + "busiestHour": "最も利用の多い時間帯", + "peakCacheRate": "ピーク時のキャッシュ率", + "trendHour": "時刻", + "activityVolume": "アクティビティ", + "requestsShort": "リクエスト", + "inputShort": "入力", + "cachedShort": "キャッシュ済み", + "writeShort": "書き込み", + "resetting": "リセット中...", + "resetMetrics": "メトリクスをリセット", + "byProvider": "プロバイダー別の内訳", + "providerCacheRateDesc": "各プロバイダーは、入力トークン総数、キャッシュ読み取りトークン数、キャッシュ書き込みトークン数を表示するため、実測値に基づいて再利用率を検証できます。", "provider": "Provider", - "requests": "Requests", + "requests": "リクエスト", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "キャッシュの推移(24時間)", + "peakCached": "キャッシュ数のピーク", + "cached": "キャッシュ済み", + "overview": "概要", "tableProvider": "プロバイダー", "tableModel": "モデル", "performanceTitle": "パフォーマンス", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoute独自の決定論的レスポンスキャッシュです。有効にすると、ストリーミングを使用しないtemperature=0の同一リクエストに対し、上流プロバイダーへアクセスせずにローカルからレスポンスを返せます。", + "semanticCacheDisabledDesc": "セマンティックキャッシュは無効です。Settingsで再度有効にするまで、OmniRouteはローカルレスポンスの再利用をスキップします。", + "semanticEntriesDesc": "現在SQLiteに保存されている永続化済みセマンティックキャッシュレコードです。プロバイダー側のプロンプトキャッシュのアクティビティはここには表示されません。", + "searchEntries": "エントリを検索...", + "search": "検索", + "loading": "読み込み中...", + "entriesLoadError": "セマンティックキャッシュのエントリを読み込めませんでした。", + "noEntries": "キャッシュエントリが見つかりません", + "noPromptCacheData": "プロバイダー側のプロンプトキャッシュのアクティビティはまだ記録されていません。", + "noTrendData": "過去24時間にプロンプトキャッシュのアクティビティは記録されていません。", + "signature": "署名", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "作成日時", + "expires": "有効期限", + "actions": "操作", + "deduplicatedRequests": "重複排除されたリクエスト", + "savedCalls": "節約されたAPI呼び出し", + "totalProcessed": "処理されたリクエストの合計", + "disabled": "無効", + "totalRequests": "リクエスト合計", "reasoningCache": "推理リプレイ", "reasoningCacheDesc": "マルチターン工具呼び出しフローのモデル思考を維持", "reasoningEntries": "アクティブなエントリ", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes}分前", "hoursAgo": "{hours}時間前", "daysAgo": "{days}日前", - "entries": "Entries" + "entries": "エントリ" }, "proxyConfigModal": { "levelGlobal": "グローバル", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "カーソルIDEの接続", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Cursorでログイン", + "tabImport": "トークンをインポート", + "loginDescription": "Cursorのブラウザログインを開きます。Dockerでも動作します。ホストのブラウザで承認してから、ここに戻ってください。", + "loginWithCursor": "Cursorでログイン", + "startingLogin": "開始中…", + "waitingApproval": "Cursorのログイン承認を待っています…", + "openUrlHint": "ブラウザが開かなかった場合:", + "openLoginLink": "ログインページを開く", + "cancelLogin": "ログインをキャンセル", "autoDetecting": "トークンを自動検出しています...", "readingFromCursor": "Cursor IDE またはカーソルエージェントからの読み取り", "tokensAutoDetected": "トークンは Cursor IDE から正常に自動検出されました。", "cursorNotDetected": "カーソル IDE が検出されません。トークンを手動で貼り付けてください。", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Dockerで実行していますか?「Cursorでログイン」の使用をおすすめします。通常、コンテナ内ではIDEからの自動インポートとcursor-agentは利用できません。docs/providers/CURSOR-DOCKER.mdを参照してください。", "accessToken": "アクセストークン", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "更新トークン", + "refreshTokenPlaceholder": "任意 — トークンの自動更新を有効にします", "required": "*", "accessTokenPlaceholder": "アクセストークンは自動入力されます...", "machineId": "マシンID", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "トークンの自動検出に失敗しました", "errorEnterToken": "アクセストークンを入力してください", "errorImportFailed": "インポートに失敗しました", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Cursorログインを開始できませんでした", + "errorLoginPoll": "Cursorログインに失敗しました", + "errorLoginTimeout": "Cursorログインがタイムアウトしました — もう一度お試しください" }, "pricingModal": { "title": "価格設定", @@ -10843,9 +10850,9 @@ "selectProxy": "{name}を選択", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "旧形式からインポート", + "bulkAssign": "一括割り当て", + "addProxy": "プロキシを追加", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "テスト", + "edit": "編集", + "delete": "削除", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10888,10 +10895,10 @@ "bulkApply": "申し込む", "labelScope": "スコープ", "labelProxy": "プロキシ", - "scopeGlobal": "global", - "scopeProvider": "provider", - "scopeAccount": "account", - "scopeCombo": "combo", + "scopeGlobal": "グローバル", + "scopeProvider": "プロバイダー", + "scopeAccount": "アカウント", + "scopeCombo": "コンボ", "bulkImportErrorMissingName": "名前がありません", "bulkImportErrorMissingHost": "ホストが見つかりません", "bulkImportErrorInvalidPort": "無効なポート (1 ~ 65535 である必要があります)", @@ -10906,7 +10913,7 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "失敗", "successRate": "{rate}% 成功", "avgLatency": "平均{latency}ミリ秒", "assignmentsCount": "{count} 件の割り当て", @@ -10961,9 +10968,9 @@ "strategyLatency": "レイテンシー最適化", "poolMembersLabel": "プールメンバー ({count})", "poolNoMembers": "このプールにはまだプロキシがありません。", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# 個の出口} other {# 個の出口}}を{connections, plural, one {# 件の接続} other {# 件の接続}}が使用 · 1つの出口で最大{max}件 · 過去{hours}時間", + "poolEgressObservationEmpty": "過去{hours}時間にトラフィックは観測されませんでした", + "poolEgressObservationHint": "指定期間のプロキシログに基づく集計です。このプールのメンバーで観測された異なる送信元IPと、それらを使用したOmniRoute接続を示します。「1つの出口で」は指定期間全体を意味し、同時に使用された数ではありません。IPごとの429ロックアウトでは、同じプロバイダーファミリーの接続のみが一時停止されます。", "poolRemove": "削除", "poolRemoveFailed": "プールからプロキシを削除できませんでした", "poolAddLabel": "プロキシを追加", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "エンドポイント", + "provider": "プロバイダー", + "model": "モデル", "accountKey": "Account Key", "autoAccounts": "自動 ({count} アカウント)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "送信", + "cancel": "キャンセル", + "audioFile": "音声ファイル", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "すべてクリア", + "request": "リクエスト", + "response": "レスポンス", + "transcription": "文字起こし", + "copy": "コピー", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "生成された画像は {count} 個です", "generatedImage": "生成された画像 {index}", - "save": "Save", + "save": "保存", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "レスポンス", "completions": "補完", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "埋め込み", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "モデレーション", - "rerank": "Rerank", + "rerank": "再ランキング", "search": "Search", "webFetch": "Webフェッチ" }, "conversationalChat": "会話型チャット", "clearChat": "クリアチャット", "typeMessagePlaceholder": "メッセージを入力してください... (Shift+Enter で改行)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "チャット", + "tabCompare": "比較", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "ビルド", + "configPane": "設定", + "systemPrompt": "システムプロンプト", + "systemPromptPlaceholder": "あなたは親切なアシスタントです。", + "modelPlaceholder": "例: openai/gpt-4o", + "endpointLabel": "エンドポイント", + "parametersLabel": "パラメーター", + "collapseConfig": "設定ペインを折りたたむ", + "expandConfig": "設定ペインを展開", + "temperature": "温度", + "maxTokens": "最大トークン数", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "存在ペナルティ", + "frequencyPenalty": "頻度ペナルティ", "reasoningLabel": "推論", "thinking": "思考", "effort": "エフォート", "effortDefault": "デフォルト", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "ランダム(空欄のまま)", + "presetsLabel": "プリセット", + "loadPreset": "プリセットを読み込む", + "savePreset": "プリセットを保存", + "noPresets": "プリセットなし", + "presetNamePlaceholder": "プリセット名", + "savingPreset": "保存中…", + "nameRequired": "名前は必須です", + "failedToSavePreset": "プリセットの保存に失敗しました", + "improvePrompt": "プロンプトを改善", + "improvingPrompt": "改善中…", + "improvePromptTitle": "AIでプロンプトを改善", + "setModelFirst": "先にモデルを設定してください", "setModelInConfigFirst": "最初に設定ペインでモデルを設定してください。", "improvePromptFailed": "プロンプトの改善に失敗しました。", "improvePromptAria": "AIを使用してプロンプトを改善", "confirmImprovePrompt": "プロンプトの改善を確認", "improvePromptDescription": "これにより、現在のシステムプロンプトが に送信され、改善されたバージョンが生成されます。", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Configで設定されたモデルのクォータを消費します。", + "improveConfirm": "改善", + "exportCode": "コードをエクスポート", + "exportCodeTitle": "コードをエクスポート", "exportShort": "エクスポート", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "エクスポート可能なプレイグラウンドの状態がありません。", "closeExportModal": "エクスポートモーダルを閉じる", "close": "閉じる", "exportRealKeyWarning": "セキュリティ警告: エクスポートがブロックされました — 出力内に実際のAPIキーが検出されました。APIキーをリセットして、もう一度お試しください。", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language}コードをコピー", "loadingPresets": "読み込み中…", "loadPresetPlaceholder": "プリセットを読み込む…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "コピー", + "copiedCode": "コピーしました!", + "addModel": "+ モデルを追加", + "runAll": "すべて実行", + "cancelAll": "すべてキャンセル", + "maxColumnsReached": "最大{max}列", + "modelPlaceholderCompare": "モデル(Cmd+K)…", "noModel": "モデルなし", "statusLabel": "ステータス: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "応答を待機中…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "クライアント側の推定値", + "tokensLabel": "トークン", + "costLabel": "コスト", + "costEstimated": "(推定)", "ttftTitle": "最初のトークンまでの時間(クライアント側の推定値)", "tpsTitle": "1秒あたりのトークン数(クライアント側の推定値)", "tokenCountsTitle": "プロンプトトークン ↑ / コンプリートトークン ↓", "estimatedCostTitle": "推定コスト(正確性は保証されません)", - "toolsLabel": "Tools", + "toolsLabel": "ツール", "toolsCount": "ツール ({count})", - "addTool": "Add tool", + "addTool": "ツールを追加", "editTool": "ツール {name} を編集", "removeTool": "ツール {name} を削除", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "関数名", "toolNameRequiredPlaceholder": "関数名 *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "説明(任意)", "toolParamsLabel": "パラメータ (JSONスキーマ)", "toolParamsJsonSchema": "パラメータのJSONスキーマ", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "パラメーターは有効なJSONである必要があります", + "structuredOutputLabel": "構造化出力", + "enableJsonMode": "JSONモードを有効化", + "disableJsonMode": "JSONモードを無効化", + "invalidJson": "無効なJSON", "jsonMode": "JSONモード", "jsonModeDescription": "response_format: json_schema を強制します", "schemaName": "スキーマ名", @@ -11125,7 +11132,7 @@ "jsonSchemaEditor": "JSONスキーマエディタ", "schemaValidated": "スキーマが検証されました", "validateSchema": "スキーマを検証", - "seed": "Seed", + "seed": "シード", "stopSequences": "ストップシーケンス", "stopSequencesPlaceholder": "例: \"\\n\\n\" または \"END\"", "autoProvider": "自動", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} 列", "addModelToCompare": "比較するモデル列を追加", "modelsSimultaneously": "最大 {max} 個のモデルを同時に", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "実行中…", + "runLabel": "実行", + "enterToolResult": "ツールの結果を入力…", "build": { "step1Label": "何をテストしますか?", "step2Label": "設定", @@ -11250,73 +11257,73 @@ "stop": "停止" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "記録中", + "paused": "一時停止中", + "pipelineLogsOn": "パイプラインログ:オン", + "pipelineLogsOff": "パイプラインログ:オフ", + "updatingPipelineLogs": "パイプラインログを更新中...", + "updatePipelineFailed": "パイプラインログの更新に失敗しました", + "capturePipeline": "新しいリクエストのパイプラインペイロードをキャプチャ", + "searchPlaceholder": "モデル、プロバイダー、アカウント、APIキー、組み合わせを検索...", + "allProviders": "すべてのプロバイダー", + "allModels": "すべてのモデル", + "allAccounts": "すべてのアカウント", + "allApiKeys": "すべてのAPIキー", + "total": "合計", + "ok": "成功", + "err": "エラー", + "combo": "組み合わせ", + "keys": "キー", + "shown": "表示件数", + "sortNewest": "新しい順", + "sortOldest": "古い順", + "sortTokensDesc": "トークン数 ↓", + "sortTokensAsc": "トークン数 ↑", + "sortDurationDesc": "所要時間 ↓", + "sortDurationAsc": "所要時間 ↑", + "sortStatusDesc": "ステータス ↓", + "sortStatusAsc": "ステータス ↑", + "sortModelAsc": "モデル A-Z", + "sortModelDesc": "モデル Z-A", + "sortLogs": "ログを並べ替え", + "refresh": "更新", + "columnsLabel": "列", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "稼働中", + "semantic": "セマンティック", + "upstream": "アップストリーム", + "semanticCacheHit": "セマンティックキャッシュヒット(OmniRouteから提供)", + "upstreamResponse": "アップストリームプロバイダーのレスポンス", + "noApiKey": "APIキーなし", + "requestedRoutedTitle": "リクエスト: {requested}、ルーティング先: {routed}", "statusFilters": { - "all": "All", + "all": "すべて", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "成功", + "combo": "組み合わせ" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "ステータス", + "cacheSource": "キャッシュソース", + "model": "モデル", + "requested": "リクエスト", + "provider": "プロバイダー", + "protocol": "リクエストプロトコル", + "account": "アカウント", + "apiKey": "APIキー", + "combo": "組み合わせ", + "tokens": "トークン", "compressed": "圧縮", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "所要時間", + "time": "時刻", + "conversation": "会話", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "ログを読み込み中...", + "noLogs": "ログはまだありません。APIを呼び出すと、ここに表示されます。", + "noMatchingLogs": "現在のフィルターに一致するログはありません。", + "callLogsInfo": "呼び出しログはJSONファイルとして{dataDir}にも保存され、{retentionDays}と{maxEntries}に基づいてローテーションされます。", "loadMore": "さらに読み込む", "loadingMore": "さらに読み込み中...", "correlationId": "相関ID", @@ -11417,59 +11424,59 @@ "correlationId": "相関ID", "correlationIdValue": "相関ID: {id}", "detailedPayloadInfo": "新しいリクエストのために四段階のクライアント/プロバイダー ペイロードビューを表示したい場合は、まず詳細なログ記録を有効にしてください。", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "すべてコピー", + "copiedAll": "すべてコピーしました" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "すべて", + "filterErrors": "エラー", + "filterSuccess": "成功", + "filterTimeout": "タイムアウト", + "colStatus": "ステータス", + "colProxy": "プロキシ", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "タイプ", + "colLevel": "レベル", + "colProvider": "プロバイダー", + "colTarget": "ターゲット", + "colLatency": "レイテンシー", + "colClientIp": "クライアントIP", + "colTime": "時刻", + "recording": "記録中", + "paused": "一時停止中", + "searchPlaceholder": "ホスト、プロバイダー、ターゲット、IPを検索...", + "allTypes": "すべてのタイプ", + "allLevels": "すべてのレベル", + "allProviders": "すべてのプロバイダー", + "total": "合計", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "エラー", + "timeoutShort": "タイムアウト", + "direct": "直接", + "newest": "新しい順", + "oldest": "古い順", + "latencyDesc": "レイテンシー ↓", + "latencyAsc": "レイテンシー ↑", + "refresh": "更新", + "columns": "列", + "loadingProxyLogs": "プロキシログを読み込み中...", + "noProxyLogs": "プロキシログはまだありません。プロキシを設定してAPIを呼び出すと、ここに表示されます。", + "noMatchingLogs": "現在のフィルターに一致するログはありません。", + "tlsFingerprint": "Chrome 124 TLSフィンガープリント", "colPublicIp": "パブリックIP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "音声", + "search": "検索", + "images": "画像", + "chat": "チャット", + "music": "音楽", + "responses": "レスポンス", + "rerank": "再ランキング", + "video": "動画", + "embeddings": "埋め込み", + "transcription": "文字起こし" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "ランタイム", + "description": "リアルタイム可観測性 — 3層レジリエンス + セッション + クォータアラート", + "pause": "一時停止", + "resume": "再開", + "refreshNow": "今すぐ更新", + "kpiSessions": "セッション", + "kpiCircuits": "サーキット", + "kpiCooldowns": "クールダウン", + "kpiLockouts": "ロックアウト", + "hintStickyBound": "{count}件が固定割り当て済み", + "hintRecovering": "{count}件が復旧中", + "hintAllHealthy": "すべて正常", + "hintOpen": "オープン", + "hintConnsCooling": "接続がクールダウン中", + "hintModelsBlocked": "モデルがブロック中", + "resilienceTitle": "3層レジリエンス", + "resilienceSubtitle": "文書化されたレジリエンスモデルを反映", + "providersHealthy": "プロバイダーの{percent}%が正常", + "layer": "レイヤー{n}", + "layer1Title": "プロバイダー・サーキットブレーカー", + "layer1Desc": "アップストリームレベルで障害が発生しているプロバイダーへのトラフィックを停止", + "layer2Title": "接続クールダウン", + "layer2Desc": "問題のあるアカウント/キーを1つスキップし、他の接続は提供を継続", + "layer3Title": "モデルロックアウト", + "layer3Desc": "モデル単位のレート制限ロック。同じ接続で他のモデルは引き続き提供可能", + "badgeAffectedOf": "{total}件中{affected}件に影響", + "badgeCooling": "{count}件がクールダウン中", + "badgeLocked": "{count}件がロック中", + "emptyCircuits": "現在アクティブなサーキットブレーカーはありません", + "emptyCooldowns": "現在アクティブな接続クールダウンはありません", + "emptyLockouts": "モデルロックアウトはありません", + "moreCooldowns": "ほか{count}件のクールダウン", + "moreLockouts": "ほか{count}件のロックアウト", + "feedTitle": "ライブフィード", + "feedSubtitle": "直近{count}件のイベント", + "feedFilterAll": "すべて", + "feedFilterCircuits": "サーキット", + "feedFilterCooldowns": "クールダウン", + "feedFilterLockouts": "ロックアウト", + "feedFilterSessions": "セッション", + "feedFilterQuotas": "クォータ", + "feedClear": "クリア", + "feedEmptyWaiting": "イベントを待機中...(5秒ごとにポーリング)", + "feedEmptyFiltered": "このフィルターに一致するイベントはありません", + "sessionsTitle": "アクティブなセッション", + "sessionsSubtitle": "スティッキー割り当てされたリクエストフィンガープリント(ライブ)", + "sessionsActive": "{count}件がアクティブ", + "sessionsEmptyTitle": "アクティブなセッションはありません", + "sessionsEmptyHint": "プロキシを通じてリクエストが処理されると、セッションが表示されます", + "tblSession": "セッション", + "tblAge": "経過時間", + "tblIdle": "アイドル時間", + "tblReqs": "リクエスト数", + "tblBoundTo": "割り当て先", + "topApiKeys": "上位のAPIキー", + "quotaMonitorsTitle": "クォータモニター", + "quotaMonitorsSubtitle": "アカウントのウィンドウごとのリアルタイムなクォータ状態", + "openQuota": "クォータを開く", + "allQuotasHealthy": "すべてのクォータは正常です", + "statusExhausted": "上限到達", + "statusAlerting": "アラート発生中", + "statusError": "エラー", + "moreSuffix": "ほか{count}件" }, "quotaShare": { "weightPercent": "重み %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "クォータ共有", + "description": "APIキー間でプロバイダーのクォータを割合(%)制限付きで共有", + "newPool": "新しいプール", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "設定はlocalStorageに保存されます(現時点ではサーバーに永続化されません)。リクエストごとの上限適用は、まだプロキシパイプラインに組み込まれていません。この画面ではクォータの分配を設計し、可視化できます。実際の適用機能は、DBへの永続化とアップストリーム呼び出しのインターセプトとともに、今後のイテレーションで実装される予定です。", + "kpiActivePools": "アクティブなプール", + "kpiKeysAllocated": "割り当て済みキー", + "kpiAvgUnallocated": "平均未割り当て率", + "kpiProvidersWithQuota": "クォータ設定済みプロバイダー", + "emptyTitle": "プールが設定されていません", + "emptyDescription": "プールを作成し、APIキーを割り当てて、プロバイダーのクォータウィンドウを割合(%)配分で共有します。", + "loading": "読み込み中…", + "removePool": "プールを削除", + "removeConfirm": "このプールを削除しますか?", + "pool": "プール", + "used": "使用済み", + "allocationsCount": "割り当て({count})", + "allocatedFree": "{allocated}% 割り当て済み · {free}% 空き", + "noAllocations": "まだキーは割り当てられていません", + "capLabel": "上限 {value}", + "notTrackedYet": "(まだ追跡されていません)", + "policy": "ポリシー", "apiKeyColumn": "APIキー", "weightColumn": "重み", "fairShareShort": "公平", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "ハード", + "policySoft": "ソフト", + "policyBurst": "バースト", + "policyHardHint": "キーが割り当て量を使い切ったらブロック", + "policySoftHint": "超過を許可し、アラートのみ通知", + "policyBurstHint": "空きプールへのバーストを許可", + "editAllocations": "割り当てを編集", + "newPoolTitle": "新しいクォータプール", + "providerConnection": "プロバイダー接続(アカウント)", + "selectConnection": "接続を選択…", + "noEligibleConnections": "クォータデータのある接続がありません。まず /dashboard/quota から更新してください。", + "quotaWindow": "クォータ期間", + "selectWindow": "期間を選択…", + "alreadyUsedSuffix": "(使用済み)", + "windowReset": "リセット", + "duplicatePoolError": "この接続と期間のプールはすでに存在します", + "cancel": "キャンセル", + "createPool": "プールを作成", + "editTitle": "割り当てを編集", + "noKeysAdded": "キーが割り当てられていません。以下から追加してください。", + "totalLabel": "合計:{percent}%", + "totalExceeded": "⚠ 100%を超えています", + "addKey": "+ キーを追加…", + "equalSplit": "均等に分割", + "save": "割り当てを保存", "betaPreviewLabel": "ベータ — UI プレビュー。", "betaConfigSavedPrefix": "設定は次の場所に保存されます", "betaConfigSavedSuffix": "(まだサーバー上に永続化されていません)。リクエストごとの上限の強制はまだプロキシ パイプラインに組み込まれていません。この画面では、クォータ分割を設計および視覚化できます。実際の適用は、DB 永続性とアップストリーム コール インターセプトを伴う将来の反復で行われます。", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "このグループにはまだプールがあります — 先に再割り当てするか削除してください。", "ungroupedTitle": "未グループ化", "ungroupedHint": "これらのプールは既知のグループに割り当てられていません。プールを編集して実際のグループに移動してください。", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "このプールを削除できませんでした。", + "dismiss": "閉じる" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "プラグイン", + "description": "OmniRoute の機能を拡張するプラグインをインストール・管理します", + "loading": "プラグインを読み込み中...", + "scanning": "スキャン中...", + "scanForPlugins": "プラグインをスキャン", + "noPlugins": "インストール済みのプラグインはありません", + "noPluginsDescription": "プラグインディレクトリを ~/.omniroute/plugins/ に配置し、[スキャン]をクリックしてください。", + "activate": "有効化", + "deactivate": "無効化", + "uninstall": "アンインストール", + "uninstallConfirm": "プラグイン「{name}」をアンインストールしますか?", + "pluginScanComplete": "プラグインのスキャンが完了しました", + "pluginScanFailed": "プラグインのスキャンに失敗しました", + "activated": "{name} を有効化しました", + "deactivated": "{name} を無効化しました", + "activateFailed": "{name} の有効化に失敗しました", + "deactivateFailed": "{name} の無効化に失敗しました", + "uninstalled": "{name} をアンインストールしました", + "uninstallFailed": "{name} のアンインストールに失敗しました", + "configure": "設定:{name}", + "configurePlugin": "設定", + "noConfigSettings": "このプラグインには設定可能な項目がありません。", + "saving": "保存中...", + "saveConfiguration": "設定を保存", + "configurationSaved": "設定を保存しました", + "saveConfigurationFailed": "設定の保存に失敗しました", + "pluginNotFound": "プラグインが見つかりません", + "version": "バージョン", + "author": "作成者", + "description_label": "説明", + "status": "ステータス", + "enabled": "有効", + "disabled": "無効", "installedTab": "インストール済み", "marketplaceTab": "マーケットプレイス", "marketplaceUrlLabel": "カスタムマーケットプレイスURL", @@ -11729,7 +11736,7 @@ "verified": "認証済み", "install": "インストール", "installedFromMarketplace": "プラグイン {name} がインストールされました!", - "hooks": "Hooks" + "hooks": "フック" }, "quotaPlans": { "title": "プランとクォータ", @@ -12160,7 +12167,7 @@ "noRequestBody": "リクエストボディはありません。", "noResponseBody": "レスポンスボディはありません。", "formatted": "フォーマット済み", - "raw": "Raw" + "raw": "未加工" }, "cliCommon": { "concept": { @@ -12179,7 +12186,7 @@ "acp": { "title": "ACPエージェント", "phrase": "OmniRouteが実行バックエンドとして起動するCLI(逆フロー)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "ほとんどのユーザーはこの設定を無視できます。連携機能で必要な場合にのみ使用してください。", "flow": "クライアント → OmniRoute → CLI起動 (stdio/ACP) → レスポンス", "seeOther": "詳細 →" } @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhook", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Webhookエンドポイントの登録、一覧表示、テスト、削除を行います。イベント購読(request.completed、request.failed、quota.exceededなど)を設定し、配信の再試行を管理します。" }, "omni-mcp": { "name": "MCPサーバー", @@ -12390,27 +12397,27 @@ "description": "コアとなるOpenAI互換の推論エンドポイント:chat completions、embeddings、images、audio (TTS/STT)、moderations、rerank、およびResponses API。AIエージェントの主要な統合インターフェースです。" }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI:サーバー起動", "description": "CLIからOmniRouteサーバーの起動、停止、再起動を行います。デーモンモード、ポート設定、自動復旧、システムトレイ統合、およびダッシュボードを開くショートカットを管理します。" }, "cli-health": { - "name": "CLI: Health", + "name": "CLI:ヘルスチェック", "description": "CLIからサーバーのヘルス、コンポーネントのステータス、およびライブメトリクスを確認します。`health`、`health components`、および`health watch`を実行して、サーキットブレーカーとプロバイダーのステータスのリアルタイムダッシュボードを表示します。" }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI:プロバイダー", "description": "CLIからプロバイダー接続を管理します:利用可能/設定済みのプロバイダーのリスト表示、追加、テスト、一括テスト(test-all)、検証、APIキーのローテーション、およびプロバイダーごとのメトリクスの表示。" }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI:APIキー", "description": "CLIからOmniRoute APIキーの作成、リスト表示、ローテーション、および失効を行います。プロバイダー認証用のOAuthフローを管理し、キーのスコープと有効期限を検査します。" }, "cli-models": { - "name": "CLI: Models", + "name": "CLI:モデル", "description": "CLIから利用可能なAIモデルのクエリ、モデルエイリアスのリスト表示、および完全なモデルカタログの閲覧を行います。プロバイダーによるフィルタリング、機能による検索、およびモデル名バリアントの解決を行います。" }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI:チャット", "description": "CLIからチャットの補完送信、レスポンスのストリーミング、および対話型REPLセッションの開始を行います。すべてのOmniRouteプロバイダー、コンボルーティング、およびシステムプロンプト設定をサポートします。" }, "cli-routing": { @@ -12434,7 +12441,7 @@ "description": "CLIからコストの内訳、トークン使用量、およびコールログを表示します。プロバイダー、モデル、または日付範囲でフィルタリングします。使用状況レポートのエクスポートや、接続ごとの支出の検査を行います。" }, "cli-mcp": { - "name": "CLI: MCP", + "name": "CLI:MCP", "description": "CLIからMCPサーバーのステータス検査、登録されたツールとスコープのリスト表示、ツールの呼び出し実行、およびMCP監査ログの管理を行います。" }, "cli-a2a": { @@ -12458,7 +12465,7 @@ "description": "CLIからバッチ推論ジョブの送信と監視を行います。バッチ処理用のファイルをアップロードおよび管理し、結果を取得して、バッチパイプラインをCI/CDワークフローと統合します。" }, "cli-eval": { - "name": "CLI: Evals", + "name": "CLI:評価", "description": "CLIから評価スイートの作成と実行、ライブベンチマークの進行状況の確認、スコアカードの表示、モデルパフォーマンスの比較、および評価実行とCIワークフローの統合を行います。" }, "cli-plugins-skills": { @@ -12470,7 +12477,7 @@ "description": "CLIのsetupおよびconfigコマンドを使用して、初期セットアップの実行、グローバルCLI設定の構成、環境変数の管理、アップデートの確認、および自動起動の設定を行います。" }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI:エージェントスキルコレクター", "description": "インストールされているCLIコーディングツール(Claude Code、Codex、Cursor、Copilot、Clineなど)を検出し、GitHubで一致するエージェントスキルを検索して、OmniRouteの内蔵API経由で検出されたツールにインストールします。" }, "config-codex-cli": { @@ -12482,7 +12489,7 @@ "description": "SKILL.md、CLAUDE.md、.cursorrules、および同様のエージェントスキルファイルを含むGitHubリポジトリからエージェントスキルを検索、スコアリング、スキャン、およびインポートします。160以上のプロバイダーカテゴリにわたるコミュニティスキルを発見し、ヒューリスティックスコアリングで関連性を評価し、マルウェアやハードコードされたシークレットをチェックして、Hermes、Claude Code、Gemini CLI、またはOpenCodeエージェントディレクトリにインストールします。" } }, - "pageTitle": "Agent Skills", + "pageTitle": "エージェントスキル", "pageSubtitle": "エージェントにOmniRouteの操作方法を学習させる — 22のAPI領域 + 20のCLIファミリー", "conceptCard": { "agent": { @@ -12496,8 +12503,8 @@ "crossLinkLabel": "違いを理解する →" }, "comparison": { - "colAgent": "Agent Skills", - "colOmni": "Omni Skills", + "colAgent": "エージェントスキル", + "colOmni": "Omniスキル", "whatIs": { "label": "概要", "agent": "外部エージェントにOmniRouteの操作方法を学習させる機械可読なSKILL.md", @@ -12575,7 +12582,7 @@ "colScore": "スコア", "colAvgScore": "平均スコア", "colModels": "モデル", - "colType": "Type", + "colType": "タイプ", "filterConfiguredOnly": "設定済みのみ", "filterAvailableOnly": "利用可能のみ", "filterAvailableOnlyHelp": "すべての接続がレート制限中またはクォータ超過のプロバイダーを非表示にします。", @@ -12589,14 +12596,14 @@ "typeApikey": "APIキー", "sortTypeFirst": "簡単な順", "sortTypeFirstHelp": "サインアップの手間(サインアップ不要 → OAuthログイン → APIキー)でグループ化し、各グループ内では品質順を維持", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "信頼性の高い順", + "sortByReliabilityHelp": "選択した期間内で成功した呼び出しの割合に基づいて、プロバイダーを並べます。割合を算出するには呼び出し数が少なすぎるプロバイダーは、測定済みのプロバイダーより下でスコア順を維持します。", "typeLegend": "サインアップ不要 = セットアップ不要 · OAuthログイン = 自身のアカウントでサインイン · APIキー = 自身のキーまたはプロバイダーの無料枠を使用", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "信頼性", + "colReliabilityHelp": "過去24時間に、このプロバイダーが実際に応答した呼び出しの割合です。ダッシュは、割合を算出するには処理したトラフィックが少なすぎることを示します。", + "reliabilitySample": "過去{hours}時間に{requests}件中{successes}件の呼び出しが成功しました", + "reliabilityTooFew": "過去{hours}時間の呼び出しは{requests}件のみです — 割合を算出するには少なすぎます", + "reliabilityNoTraffic": "過去24時間に記録された呼び出しはありません" }, "discovery": { "title": "プロバイダー検出", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radarサポーター", + "description": "稼働中のOmniRoute Radarサポーターフィードを検証済み", + "criteria": "署名された稼働中のRadarサポーターフィードを検証します。" }, "first-token": { "name": "最初のトークン", @@ -12734,12 +12741,12 @@ "criteria": "OmniRoute経由で1,000回のAPIリクエストを完了する。" }, "token-machine": { - "name": "Token Machine", + "name": "トークンマシン", "description": "10,000回以上のAPIリクエストを実行", "criteria": "OmniRoute経由で10,000回以上のAPIリクエストを完了する。" }, "token-whale": { - "name": "Token Whale", + "name": "トークンホエール", "description": "100,000回以上のAPIリクエストを実行", "criteria": "OmniRoute経由で100,000回以上のAPIリクエストを完了する。" }, @@ -12754,7 +12761,7 @@ "criteria": "他のユーザーと合計10,000トークンを共有する。" }, "token-santa": { - "name": "Token Santa", + "name": "トークンサンタ", "description": "他のユーザーと100,000トークンを共有", "criteria": "他のユーザーと合計100,000トークンを共有する。" }, @@ -12859,18 +12866,18 @@ "ccDiscoveryAliasesEnvWarning": "環境変数 (EXPOSE_CC_DISCOVERY_ALIASES) によってアクティブ — これにより、以下のダッシュボードトグルが上書きされます。", "resetFlag": "{label}をデフォルトにリセット", "reset": "リセット", - "loadFailed": "Failed to load feature flags", - "updateFailedHttp": "Failed to update flag: HTTP {status}", - "updateFailed": "Failed to update flag", - "restartFailedHttp": "Restart failed: HTTP {status}", - "restartFailed": "Restart failed", - "resetOverridesFailedHttp": "Failed to reset overrides: HTTP {status}", - "resetOverridesFailed": "Failed to reset overrides", + "loadFailed": "機能フラグの読み込みに失敗しました", + "updateFailedHttp": "フラグの更新に失敗しました:HTTP {status}", + "updateFailed": "フラグの更新に失敗しました", + "restartFailedHttp": "再起動に失敗しました:HTTP {status}", + "restartFailed": "再起動に失敗しました", + "resetOverridesFailedHttp": "オーバーライドのリセットに失敗しました:HTTP {status}", + "resetOverridesFailed": "オーバーライドのリセットに失敗しました", "restartRequiredCount": "{count, plural, one {# 件の変更を反映するには} other {# 件の変更を反映するには}}サーバーの再起動が必要です。", "restartRequiredDescription": "これらのフラグはプロセスの再読み込み後にのみ適用されます。今すぐ再起動するか、編集を続けてください。保留中のフラグは確認するまでキューに保持されます。", - "restartServer": "Restart Server", + "restartServer": "サーバーを再起動", "cancel": "キャンセル", - "restarting": "Restarting…", + "restarting": "再起動中…", "confirmRestart": "再起動の確認", "restartViewDescription": "これらのフラグはサーバーの再起動後にのみ有効になります。他のフラグと同様に切り替えることができます。変更はすぐに保存されますが、新しい値はプロセスの起動時にのみ読み込まれます。適用するには、上の Restart Server バナーを使用してください。", "retry": "再試行", @@ -12927,109 +12934,113 @@ "description": "プロキシの到達性チェックが失敗したときに、OAuthおよびプロバイダー検証フローがピン留めされたプロキシをバイパスできるようにします。アカウントのエグレスIPが変更される可能性があるため、デフォルトではオフになっています。" }, "MITM_DISABLE_TLS_VERIFY": { - "description": "Disable TLS certificate verification for the MITM proxy." + "description": "MITMプロキシのTLS証明書検証を無効にします。" }, "OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS": { - "description": "Allow provider URLs that point to private or internal networks." + "description": "プライベートネットワークまたは内部ネットワークを指すプロバイダーURLを許可します。" }, "OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS": { - "description": "Allow providers on localhost, LAN, and private IP ranges. This is required for local OpenAI-compatible models and enabled by default. Cloud-metadata endpoints such as 169.254.169.254 remain blocked." + "description": "localhost、LAN、プライベートIP範囲上のプロバイダーを許可します。これはローカルのOpenAI互換モデルに必要であり、デフォルトで有効です。169.254.169.254などのクラウドメタデータエンドポイントは引き続きブロックされます。" }, "ENABLE_CC_COMPATIBLE_PROVIDER": { - "description": "Enable Claude Code-compatible provider mode." + "description": "Claude Code互換のプロバイダーモードを有効にします。" }, "TOOL_POLICY_MODE": { - "description": "Set the tool-use policy enforcement mode." + "description": "ツール使用ポリシーの適用モードを設定します。" }, "RATE_LIMIT_AUTO_ENABLE": { - "description": "Automatically enable rate limiting based on usage patterns." + "description": "使用パターンに基づいてレート制限を自動的に有効にします。" }, "ALLOW_MULTI_CONNECTIONS_PER_COMPAT_NODE": { - "description": "Allow multiple connections for each compatibility node." + "description": "各互換性ノードで複数の接続を許可します。" }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "コンテキストウィンドウのチェックを無効化", + "description": "単一モデルへの直接リクエストに対するOmniRouteのローカルなコンテキストウィンドウおよび最大入力トークンのチェックをスキップします。アップストリームプロバイダーでは、引き続き実際の上限が適用されます。プロンプト圧縮と出力トークン上限は引き続き有効です。" }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { - "description": "Remove internal commentary-phase output items from Responses API passthrough streams before forwarding them to clients. Disable this flag to receive raw upstream commentary." + "description": "Responses APIのパススルーストリームから内部のcommentaryフェーズの出力項目を削除してからクライアントに転送します。未加工のアップストリームcommentaryを受信するには、このフラグを無効にしてください。" }, "OMNIROUTE_MCP_ENFORCE_SCOPES": { - "description": "Enforce scope restrictions for MCP tool access." + "description": "MCPツールへのアクセスにスコープ制限を適用します。" }, "OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS": { - "description": "Compress MCP tool descriptions to reduce token usage." + "description": "MCPツールの説明を圧縮してトークン使用量を削減します。" }, "OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS": { - "description": "Enable background-task processing at runtime." + "description": "実行時のバックグラウンドタスク処理を有効にします。" }, "OMNIROUTE_DISABLE_BACKGROUND_SERVICES": { - "description": "Disable all background services, including quota refresh and synchronization." + "description": "クォータの更新や同期を含む、すべてのバックグラウンドサービスを無効にします。" }, "OMNIROUTE_RTK_TRUST_PROJECT_FILTERS": { - "description": "Trust project-level RTK filters without validation." + "description": "プロジェクトレベルのRTKフィルターを検証せずに信頼します。" }, "OMNIROUTE_ENABLE_LIVE_WS": { - "description": "Start the real-time dashboard WebSocket server on import at loopback port 20132. Set the flag to 0 or false to disable it. LAN exposure also requires LIVE_WS_HOST=0.0.0.0 and LIVE_WS_ALLOWED_ORIGINS." + "description": "インポート時に、ループバックポート20132でリアルタイムダッシュボードのWebSocketサーバーを起動します。無効にするには、フラグを0またはfalseに設定します。LANに公開するには、LIVE_WS_HOST=0.0.0.0およびLIVE_WS_ALLOWED_ORIGINSも必要です。" }, "OMNIROUTE_CODEX_WS_ENABLED": { - "description": "Allow Codex to use Responses over WebSocket. When disabled, Codex falls back to HTTP Responses." + "description": "CodexがWebSocket経由でResponsesを使用できるようにします。無効にすると、CodexはHTTP Responsesにフォールバックします。" }, "OMNIROUTE_EMERGENCY_FALLBACK": { - "description": "Route budget-exhausted requests to the emergency free fallback provider and model." + "description": "予算を使い果たしたリクエストを、緊急用の無料フォールバックプロバイダーおよびモデルにルーティングします。" }, "STREAM_RECOVERY_ENABLED": { - "description": "Retry truncated upstream SSE streams transparently before any response bytes reach the client." + "description": "レスポンスのバイトがクライアントに到達する前に、途中で切断されたアップストリームSSEストリームを透過的に再試行します。" }, "STREAM_RECOVERY_MIDSTREAM_ENABLED": { - "description": "Allow stream recovery to request the response again and stitch it after bytes have already reached the client." + "description": "バイトがすでにクライアントに到達した後でも、ストリーム復旧でレスポンスを再リクエストし、結合できるようにします。" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "ストリーム途中の継続をツール呼び出しに対して安全にします。ツール呼び出しが送信された後は(まだ進行中でも、すでに完了していても)、途切れたストリームを再開せず、再試行回数をすべて使い切るのではなく、空の継続が1回発生した時点で停止します。" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "ストリームが有用なフレームを送出する前に閉じ、同一接続での上限付き再試行も使い切った場合に、兄弟接続へ一度だけフェイルオーバーします。使用可能な兄弟接続がない場合は、元の early-EOF エラーを返します。オフ: 再試行後の early-EOF はそのまま終了扱いです。" }, "MODEL_CATALOG_INCLUDE_NAMES": { - "description": "Include display-friendly name fields in /v1/models responses. Disable this for clients that accept model IDs only." + "description": "/v1/modelsのレスポンスに表示用の名前フィールドを含めます。モデルIDのみを受け付けるクライアントでは無効にしてください。" }, "MODELS_CATALOG_PREFIX_MODE": { - "description": "Control model-ID prefixes in /v1/models: dual emits alias and canonical prefixes, alias emits short prefixes only, and canonical emits full provider IDs only." + "description": "/v1/modelsのモデルIDプレフィックスを制御します。dualはエイリアスと正規プレフィックスの両方を出力し、aliasは短いプレフィックスのみを、canonicalは完全なプロバイダーIDのみを出力します。" }, "ARENA_ELO_SYNC_ENABLED": { - "description": "Periodically synchronize Arena AI leaderboard ELO data for model-intelligence rankings." + "description": "モデルインテリジェンスのランキング用に、Arena AIリーダーボードのELOデータを定期的に同期します。" }, "CLI_COMPAT_ALL": { - "description": "Enable compatibility mode for all CLI clients." + "description": "すべてのCLIクライアントで互換モードを有効にします。" }, "MODEL_ALIAS_COMPAT_ENABLED": { - "description": "Enable the model-alias compatibility layer." + "description": "モデルエイリアス互換レイヤーを有効にします。" }, "PRICING_SYNC_ENABLED": { - "description": "Synchronize pricing data automatically. The PRICING_SYNC_ENABLED environment variable must also be true." + "description": "料金データを自動的に同期します。環境変数PRICING_SYNC_ENABLEDもtrueである必要があります。" }, "OMNIROUTE_AUTO_SYNC_CODEX_PROFILES": { - "description": "After provider-model synchronization, regenerate ~/.codex/*.config.toml profiles from the live catalog. This never changes the active or default Codex configuration and is off by default." + "description": "プロバイダーとモデルの同期後、ライブカタログから~/.codex/*.config.tomlプロファイルを再生成します。現在アクティブなCodex設定やデフォルトのCodex設定が変更されることはなく、デフォルトでは無効です。" }, "OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES": { - "description": "After provider-model synchronization, regenerate ~/.claude/profiles/''/settings.json profiles from the live catalog. This never changes the active or default Claude configuration and is off by default." + "description": "プロバイダーとモデルの同期後、ライブカタログから~/.claude/profiles/''/settings.jsonプロファイルを再生成します。現在アクティブなClaude設定やデフォルトのClaude設定が変更されることはなく、デフォルトでは無効です。" }, "OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK": { - "description": "Disable the local instance health-check endpoint." + "description": "ローカルインスタンスのヘルスチェックエンドポイントを無効にします。" }, "OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK": { - "description": "Disable the token-validation health check." + "description": "トークン検証のヘルスチェックを無効にします。" }, "SKILLS_SANDBOX_NETWORK_ENABLED": { - "description": "Enable network access in the skills sandbox." + "description": "スキルサンドボックスでネットワークアクセスを有効にします。" + }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "サーバー所有ツールループ", + "description": "モデルがクライアントで使用可能なレスポンスを返すまで、非ストリーミングのサーバー所有ツール呼び出しを継続します。" }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After の根拠", + "description": "集約された 429/503 利用不可レスポンスでは、具体的な将来の再試行時刻が不明な場合、人工的な1秒を送信する代わりに Retry-After を省略し、error.retry_after_provenance を追加して、コンボのドレイン処理パスで文章形式の再試行ヒントを読み取ります。" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "保護された優先度インフラ停止を 502 として処理", + "description": "クォータのみをフォールバック条件とする優先度ターゲットが、クォータ以外であることが明確に証明できる原因(プロバイダーのサーキットブレーカーが開いている、または予測レイテンシによるスキップ)でコンボを停止した場合、503 ではなく 502 を返します。" } } }, @@ -13046,19 +13057,19 @@ } }, "comboControl": { - "title": "Combo Control Center", - "unavailable": "Combo Control Center unavailable", - "backToCombos": "Back to Combos", - "loadFailed": "Failed to load combo control center", + "title": "コンボコントロールセンター", + "unavailable": "コンボコントロールセンターは利用できません", + "backToCombos": "コンボに戻る", + "loadFailed": "コンボコントロールセンターの読み込みに失敗しました", "state": { - "healthy": "Healthy", - "warning": "Needs attention", - "critical": "Critical", - "idle": "Idle" + "healthy": "正常", + "warning": "要対応", + "critical": "重大", + "idle": "アイドル" }, - "active": "Active", - "disabled": "Disabled", - "description": "Central read-only view for routing behavior, health, quota, runtime metrics and recent decisions for .", + "active": "アクティブ", + "disabled": "無効", + "description": " のルーティング動作、稼働状況、クォータ、ランタイム指標、最近の判断を確認できる一元化された読み取り専用ビューです。", "refresh": "更新", "editInCombos": "コンボで編集", "requests": "リクエスト", @@ -13101,7 +13112,7 @@ "quotaDistribution": "クォータと分散", "noQuotaSnapshots": "このコンボウィンドウのクォータスナップショットはありません。", "usageSkew": "使用率の偏り", - "recentDecisions": "Recent routing decisions", + "recentDecisions": "最近のルーティング判断", "recentDecisionsDescription": "このコンボ名でフィルタリングされた最近のコールログ。完全な説明性についてはアナリティクスを開いてください。", "noRecentLogs": "最近のコンボコールログが見つかりませんでした。", "quickLinks": "クイックリンク", @@ -13143,27 +13154,27 @@ "resetsInDays": "{count}日後にリセット", "saveFailed": "使用制限の保存に失敗しました", "saving": "保存中...", - "saveQuota": "Save quota", - "loadUsdCostsFailed": "Failed to load USD costs", - "usdCost": "USD Cost", - "close": "Close", - "loadingUsdCosts": "Loading USD costs", - "used": "Used", - "quotaUsed": "Quota used", - "estimatedFullQuota": "Est. 100%", - "rows": "Rows", - "window": "Window", - "unknown": "unknown", - "fromRecordedReset": "From recorded {quota} reset", - "fromObservedReset": "From observed {quota} reset", - "fromReset": "From {quota} reset", - "quotaEstimator": "Quota estimator", - "noApiKeyUsage": "No API key usage in this provider window.", + "saveQuota": "クォータを保存", + "loadUsdCostsFailed": "USDコストの読み込みに失敗しました", + "usdCost": "USDコスト", + "close": "閉じる", + "loadingUsdCosts": "USDコストを読み込み中", + "used": "使用済み", + "quotaUsed": "クォータ使用量", + "estimatedFullQuota": "100%到達予測", + "rows": "行数", + "window": "期間", + "unknown": "不明", + "fromRecordedReset": "記録された{quota}のリセット時点から", + "fromObservedReset": "観測された{quota}のリセット時点から", + "fromReset": "{quota}のリセット時点から", + "quotaEstimator": "クォータ推定", + "noApiKeyUsage": "このプロバイダーの期間内にAPIキーの使用はありません。", "requestTokenCounts": "{requests} リクエスト · {tokens} トークン", - "noUsdLimit": "No USD limit" + "noUsdLimit": "USD上限なし" }, "freeBudget": { - "title": "Free-token budget", + "title": "無料トークン予算", "remaining": "残り {remaining} · {total} の {percent}%", "steadyMonth": "毎月一定", "firstMonth": "初月(+ クレジット)", @@ -13171,7 +13182,7 @@ "segmentHint": "各セグメント = 1つの無料プール · プール重複排除、誠実なカウント(誇張されたレート制限上限なし)。", "boost": "1回限りの$10のOpenRouterチャージで、月あたりさらに約{tokens}をアンロック(50 → 1000 リクエスト/日)", "uncapped": "恒久的に無料、公開された上限なし(レート制限あり) — 見出しにはカウントされない、実際のアクセス:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "地域別の本人確認(例:中国本土での実名認証)を行うと、月あたり約{tokens}を追加利用可能 — 実際のクォータですが、主要表示には含まれません:", "tosRestricted": "{count, plural, one {# 個のモデル} other {# 個のモデル}}が利用規約制限としてフラグ立てされています — ご自身で判断してください", "provider": "プロバイダー", "model": "モデル", @@ -13187,7 +13198,7 @@ "creditMonthly": "クレジット/月", "uncapped": "上限なし", "signupCredit": "新規登録クレジット", - "keyless": "keyless", + "keyless": "キー不要", "discontinued": "提供終了" }, "tosTitle": { @@ -13270,80 +13281,80 @@ "viewFullHistory": "GitHubで完全な履歴を表示" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "推論ルーティングポリシー", + "apiKeyTitle": "このAPIキーの推論ルーティング", + "subtitle": "クライアント側の対応を必要とせず、モデルと推論の労力を再ルーティングします。一致するルールがない場合、リクエストは変更されません。", + "loadError": "推論ルールを読み込めませんでした。", + "saveError": "ルールが無効か、保存できませんでした。", + "saved": "推論ルールを保存しました。", + "deleteConfirm": "この推論ルールを削除しますか?", + "deleteError": "推論ルールを削除できませんでした。", + "empty": "一致する推論ルールは設定されていません。", + "all": "すべて", + "any": "いずれか", + "enabled": "有効", + "disabled": "無効", + "filterSearch": "ルールを検索", + "filterScope": "スコープで絞り込み", + "filterStatus": "ステータスで絞り込み", + "allModels": "すべてのモデル", + "keepModel": "モデルを維持", + "otherModel": "その他のモデル", + "combo": "コンボ", + "priorityShort": "優先度 {value}", + "toggleAria": "{name}を有効化", + "edit": "編集", + "delete": "削除", + "name": "名前", + "description": "説明", + "scopeLabel": "スコープ", + "apiKey": "APIキー", + "sourceCombo": "ソースコンボ", + "connection": "接続", + "sourceModel": "ソースモデルまたはワイルドカード", + "sourceModelOptional": "空欄 = すべてのモデル", + "sourceModelExample": "例: gpt-5*", + "sourceEffort": "ソースの推論強度", + "missing": "未指定", + "signalOnly": "非離散的な推論シグナル", + "requestTags": "リクエストタグ", + "requestTagsExample": "コーディング、内部", + "tagMode": "タグの照合", + "effortMode": "推論強度モード", + "targetEffort": "ターゲットの推論強度", + "routingTarget": "ルーティング先", + "targetModel": "ターゲットモデル", + "targetCombo": "ターゲットコンボ", + "budgetAction": "思考トークン予算", + "budgetTokens": "予算トークン数", + "priority": "優先度", + "saveChanges": "変更を保存", + "add": "ルールを追加", + "cancel": "キャンセル", + "simulateTitle": "ルールをシミュレート", + "model": "モデル", + "effort": "推論強度", + "transport": "トランスポート", + "simulate": "アップストリームなしでシミュレート", + "extendedComboWarning": "Max/Ultra は、ルーティング時にコンボの各ターゲットについて個別に検証されます。", + "extendedUnknownWarning": "Max/Ultra のサポートを確認するには、ターゲットモデルを入力してください。", + "extendedUnsupportedWarning": "Max/Ultra のサポートが確認されているのは、対応する Codex GPT-5.6 モデルのみです。不明なカスタムモデルは、警告付きでサーバーに受け入れられます。", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "グローバル", + "apiKey": "API キー", + "combo": "コンボ", + "model": "モデル", + "connection": "接続" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "クライアント設定を継承", + "default": "デフォルトを使用", + "force": "強制" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "保持", + "remove": "削除", + "set": "固定値を設定" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "ライブ(リアルタイム)", "tierCommunity": "コミュニティ(30日遅延)", "activateTitle": "レーダーをアクティブにする", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Community アクセスとライブアクセスを比較し、インストール環境が交換する情報を把握したうえで、Radar の有効化方法を選択してください。", + "accessScaleTitle": "有効化する前に Radar のアクセスについて確認", + "accessScaleIntro": "オプトインするまで、Radar はネットワーク通信を行いません。以下のルールを確認したうえで、Community アクセスを選択するか、個人用サポーターキーを有効化してください。", + "accessCommunityRule": "Community — キー不要:30 日遅れの完全なカタログを利用できます。", + "accessSingleUseRule": "スター+フォロー — GitHub OAuth で両方が確認されると、GitHub アカウントにライブカタログを 1 回閲覧できる権利が付与されます。その後、アクセスは Community に戻ります。この 1 回限りのアクセスは、そのアカウントに再発行できません。", + "accessContributorRule": "コントリビューター — マージされた PR、コミット、変更行数は、週間ランキングの順位決定にのみ使用されます。上位 10 位には 365 日間、11~100 位には 90 日間が付与されます。上位 100 位圏外のコントリビューターには、PR 数にかかわらず付与されません。ランキングから外れても、すでに付与された期間が短縮されることはありません。", + "accessSupporterRule": "サポーター — 1 回限りの購入により、自動更新なしで 6 か月、1 年、または無期限の利用期間が付与されます。購入、寄付、コントリビューター期間、手動付与は累積され、無期限が常に優先されます。", + "accessUseTitle": "個人利用、復旧、審査", + "accessInstallationRule": "個人ライセンス — 一度に 1 つの稼働中のインストール環境でキーを使用できます。OmniRoute はハードウェアのフィンガープリントを取得しません。復旧では、有効期限をリセットせずに紛失したキーを無効化して置き換えます。", + "accessAbuseRule": "不正利用の審査 — 24 時間以内に 4 つ目の異なる IP が使用されると、手動審査用のフラグが作成されるだけです。キーが自動的にブロックまたは無効化されることはありません。", + "accessOffersRule": "ライブオファーは手動で選定されており、変更または期限切れになる場合があります。", + "privacyTitle": "Radar が交換する情報", + "privacyDownloadsRule": "ダウンロード — インストール環境は、暗号署名されたカタログおよび紹介メタデータを受信します。有効なライブキーがある場合は、署名済みのオファーと Intel も利用できます。", + "privacySendsRule": "送信 — サーバー側の同期では、サポーターキーが Bearer トークンとして送信され、HTTPS インフラストラクチャが接続元 IP を受信します。フィードリクエストの集計では、どちらの値もそのまま保存されません。保存されるのは、キーのハッシュ、集計された使用量、および不正利用の審査用に日次でローテーションされる短縮 IP HMAC です。", + "privacyNeverRule": "収集されない情報 — プロンプト、レスポンス、会話、プロバイダーの認証情報、モデルのトラフィック、稼働時間、レイテンシー、ローカルのプロバイダー設定が Radar に送信されることはありません。", + "activateButton": "Community を有効化", "activating": "アクティブにしています...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "すでにサポーターキーをお持ちですか?", + "keyInvalidFormatError": "キーの形式が無効です。\"omr_\" で始まり、その後に 40 文字の 16 進数が続く必要があります。", + "activateWithKeyButton": "サポーターを有効化", + "changeKeyButton": "キーを変更", + "claimSectionTitle": "サポーターキーをまだお持ちでない場合", + "contributorButton": "コントリビューターです", + "contributorHint": "GitHub OAuth は現在の週間ランキングを確認します。上位 10 位には 365 日間、11~100 位には 90 日間が付与されます。上位 100 位圏外では、PR 数だけでアクセスが付与されることはありません。", + "supporterButton": "プロジェクトを支援", + "supporterHint": "買い切りの6か月、1年、無期限オプションには自動更新がありません。対象期間は累積され、無期限が優先されます。", "colProvider": "プロバイダー", "colModel": "モデル", "colQuota": "クォータ", + "colLimits": "レート制限", + "trainsOnPrompts": "プロンプトを学習に使用", + "trainsOnPromptsHelp": "このプロバイダーの利用規約では、送信したプロンプトを学習に使用する場合があると明記されています。このバッジがないモデルは、学習に使用しないと明記しているか、その点について記載していません。記載がないからといって保証されるわけではありません。", + "limitsUnknownHelp": "Radarフィードで報告された制限のみ。この項目について公開されている制限はありません", + "contextUnknownHelp": "この項目のコンテキストウィンドウは不明です", + "capabilityUnknownHelp": "フィードで機能が報告されていません", "colContext": "コンテキスト", "colCapabilities": "機能", "colTos": "ToSリスク", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "新しい", "setupGuide": "セットアップガイド", "disabledByFeed": "レーダーフィードによって無効化されています", "capTools": "ツール", "capVision": "ビジョン", "capThinking": "思考", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", + "catalogTab": "カタログ", + "freeCreditsTab": "無料クレジット", + "freeCreditsSubtitle": "Radarが追跡するプロバイダーの紹介リンクです。利用しても追加費用はかからず、OmniRouteの支援につながります。", + "fixedLinksEmpty": "紹介リンクはまだありません。Radarを同期して更新を確認してください。", + "requiredActionLabel": "手順:", + "claimButton": "クレジットを受け取る", + "campaignsTitle": "期間限定キャンペーン", + "campaignsEmpty": "現在実施中のキャンペーンはありません。後でもう一度ご確認ください。", + "campaignsUpsellCommunity": "期間限定キャンペーンはサポーター向けの追加特典です。このページに掲載されている固定リンクは、引き続きすべての方が無料で利用できます。", + "campaignsValidUntil": "{date}まで有効", + "colActions": "操作", + "localBadge": "ローカル", + "editModel": "編集", + "saveModel": "保存", + "cancelEdit": "キャンセル", + "resetModel": "ローカルでの変更をリセット", + "hideModel": "非表示", + "restoreModel": "復元", + "hiddenModelsTitle": "非表示のモデル", + "modelDisplayName": "ローカル表示名", + "modelEnabled": "ローカルで有効", + "localStateSaveFailed": "ローカルのRadar設定を保存できませんでした", + "guidedCombos": "ガイド付きコンボ", "offers": "オファー", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "intel": "インテリジェンス" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radarガイド付きコンボ", + "subtitle": "Radarが厳選した同等の無料モデルから、優先順位付きのフォールバックを作成します。", + "backToRadar": "Radarに戻る", + "loading": "コンボ候補を読み込んでいます...", + "familyLabel": "モデルファミリー", + "modelsLabel": "優先順位", + "strategyReason": "優先順位では、まず定期的に付与される無料枠が最も大きいものを使用し、その後、利用可能なプロバイダーへフォールバックします。", + "generateButton": "コンボを生成", + "generating": "生成中...", + "alreadyCreated": "すでに作成済み", + "created": "コンボを作成しました", + "noSuggestions": "現在、2つ以上のプロバイダーへのアクティブな接続がある対象モデルファミリーはありません。", + "catalogRequired": "まず Radar カタログを同期して、厳選されたモデルファミリーを読み込んでください。", + "loadFailed": "Radar のコンボ候補を読み込めませんでした。", + "createFailed": "コンボを作成できませんでした。プロバイダー接続を確認して、もう一度お試しください。" }, "radarSetupPage": { "title": "プロバイダーセットアップ", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "接続レジリエンス", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "接続は自動的に復旧します", + "reassuranceDetail": "通常、操作は必要ありません。OmniRoute は障害発生後に接続を一時的に休止し、その後、安全に再試行します。", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "リクエストを送信できます", + "coolingDown": "まもなく再試行します", + "lockedOut": "確認が必要です" }, "table": { "status": "状態", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "ディスパッチ前にリクエストを拒否します。ターゲットモデルに必要な機能(ビジョン、ツール、構造化出力、コンテキストウィンドウ)が欠けている場合。コンボレイヤーの互換性フィルターをバイパスする直接の単一プロバイダーリクエストを保護します。", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "単一モデルへの直接リクエストについて、OmniRoute のローカルなコンテキストウィンドウと最大入力トークン数のチェックをスキップします。上流プロバイダーでは、実際の制限が引き続き適用されます。プロンプト圧縮と出力トークン数の上限も引き続き有効です。", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "検索統計と最近の検索には、接続が有効なプロバイダーのみが含まれます(duckduckgo-free などのキーレスプロバイダーは常に含まれます)。オフにすると、プロバイダー ID が設定された保持済みの検索行がすべて維持されます。", "publicSystem": { "notFound": { "title": "ページが見つかりません", @@ -13853,7 +13864,7 @@ "authorizeImportant": "重要: まず、このブラウザで trae.ai にログインしている必要があります。認証ページは既存のセッションを確認するだけで、サインインすることはできません。「ログイン失敗」と表示された場合は、「solo.trae.aiを開く」をクリックし、サインインしてからここに戻ってください。", "waitingForAuthorization": "trae.aiを待っています…", "authorizeWithBrowser": "ブラウザで認証する", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai を開く", "orPasteManually": "またはトークンを手動で貼り付けます", "manualInstructions": "solo.trae.ai にサインインし、DevTools → ネットワークを開き、任意のチャットメッセージを送信し、Authorization: Cloud-IDE-JWT {tokenPlaceholder} リクエストヘッダーからJWTをコピーします。JWTの有効期限は約14日です。オプションのアイデンティティフィールドは、同じリクエストボディのcommon_paramsから取得されます。", "accessTokenLabel": "アクセストークン (Cloud-IDE-JWT)", @@ -13967,7 +13978,7 @@ "runners": "ランナー", "tasks": "タスク", "colName": "名前", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "ステータス", "colTask": "タスク", "colMode": "モード", @@ -14070,11 +14081,11 @@ "actionApprove": "プランを承認", "actionCancel": "キャンセル", "actionSeeInGraph": "グラフで表示", + "actionRepeat": "再実行", "actionDone": "アクションを適用しました", "actionFailed": "アクションが失敗しました: {error}", "detailFailed": "詳細の読み込みに失敗しました: {error}", "mirroredInA2A": "A2Aにミラーリング", - "actionRepeat": "再実行", "repeatConfirm": "確認するにはもう一度クリック", "repeatDone": "新しい実行を作成しました", "repeatUnavailable": "元の入力を利用できません" @@ -14109,36 +14120,36 @@ "trialDays": "{days} 日間" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "レーダーインテリジェンス", + "subtitle": "Radar が管理する ELO ランキングと、カタログの客観的な変動情報。", + "backToRadar": "Radar に戻る", + "loading": "Intel を読み込み中...", + "refresh": "Intel を更新", + "syncing": "更新中...", + "loadFailed": "Intel を更新できませんでした。最後に検証されたローカルキャッシュは保持されています。", + "empty": "検証済みの Intel スナップショットはまだありません。", + "supporterBadge": "Radar サポーター", + "methodology": "評価方法", + "eloMethod": "ELO、初期値 {initial}、K={factor}", + "freshness": "カタログの鮮度", + "ageDays": "{days, plural, one {# 日前} other {# 日前}}", + "trend": "カタログの傾向", + "modelDelta": "{current} モデル、+{added} / -{removed}", + "ranking": "モデルランキング", + "noRankings": "確定済みの比較データはまだありません。", + "model": "モデル", + "category": "カテゴリー", + "rating": "評価", + "matches": "一致", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "新鮮", + "aging": "経年", + "stale": "陳腐化" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "増加中", + "stable": "安定", + "shrinking": "減少中" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "リクエストがプロバイダーのコンテキストウィンドウを超えています" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper InferenceはOmniRouteのオープンソースフレンドです", + "description": "1つのOpenAI互換エンドポイントを通じて数十の最先端モデルを再販する、コスト順のゲートウェイです。各リクエストを条件を満たす最も安価なプロバイダーへルーティングし、定価を超えることはありません。", + "cta": "APIキーを取得", + "partnerLinkNote": "パートナーリンク", + "dismissAriaLabel": "閉じる" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/modelsカタログで思考レベルのバリアント(例:-low、-medium、-high)を生成しないようにします。" } diff --git a/src/i18n/messages/ka.json b/src/i18n/messages/ka.json index a8f036cb29..f4b4078485 100644 --- a/src/i18n/messages/ka.json +++ b/src/i18n/messages/ka.json @@ -761,7 +761,7 @@ "tierCoverageSubtitle": "თითოეულ სარეზერვო დონეზე კონფიგურირებული პროვაიდერები", "batchDetailCopyId": "ID-ის კოპირება", "batchDetailClose": "დახურვა", - "batchDetailEndpoint": "Endpoint", + "batchDetailEndpoint": "საბოლოო წერტილი", "batchDetailModel": "მოდელი", "batchDetailWindow": "ფანჯარა", "batchDetailCreated": "შექმნილია", @@ -901,7 +901,7 @@ "batchListRemoveCompleted": "წაშლა დასრულებულია", "batchListTableStatus": "სტატუსი", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "საბოლოო წერტილი", "batchListTableModel": "მოდელი", "batchListTableProgress": "პროგრესი", "batchListTableCreated": "შექმნილია", @@ -992,6 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "გამოაქვეყნეთ claude/<provider>/<model> სარკისებური ID-ები /v1/models-ზე, რათა Claude Code-ის კარიბჭის მოდელების აღმოჩენის სიაში არა-Claude მოდელებიც გამოჩნდეს. გაფრთხილება: გლობალურად ჩართვის შემთხვევაში კატალოგის ჩანაწერების რაოდენობა ყველა კლიენტისთვის გაორმაგდება.", "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> კარიბჭის ფსევდონიმების მთავარი გადამრთველი. ჩართულია (ნაგულისხმევი): /v1/models აქვეყნებს აზროვნების გარეშე ვარიანტს ყველა შესაბამისი, აზროვნების უნარის მქონე Claude მოდელისთვის, ხოლო მოთხოვნაში გაგზავნილი no-think/ ID კვლავ რეალურ მოდელზე გადადის, მსჯელობის ჩახშობით. გამორთულია: ვარიანტები არ ქვეყნდება და no-think/ ID განიხილება, როგორც ნებისმიერი სხვა უცნობი მოდელის ID. სანამ ეს ჩართულია, თითოეული მოდელისთვის ModelSpec.noThinkingAlias-ის ჩართვის/გამორთვის პარამეტრი კვლავ მოქმედებს.", "featureFlagChatVirtualLanesEnabledDescription": "ჩართეთ თითოეული ტენანტისთვის ადაპტიური ვირტუალური დაშვების არხები პროვაიდერთან გადაგზავნისთვის (#9654): ერთი ტენანტის მოთხოვნების უეცარი მატება სხვას აღარ დაუბრუნებს 503 შეცდომას. OMNIROUTE_CHAT_VIRTUAL_LANES გარემოს ცვლადს უპირატესობა აქვს მართვის პანელის ამ პარამეტრთან შედარებით; ცვლილებები ძალაში შევა სერვერის გადატვირთვის შემდეგ.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "პროვაიდერის გვერდები მართვის პანელში: „უფასო“ ნიშანი გამოჩნდეს მხოლოდ იმ სიგნალების საფუძველზე, რომლებსაც პროვაიდერი ითვალისწინებს — აღარ გამოიყენება საჩვენებელი სახელის ევრისტიკა, არაბულური უფასო ველები და :free სუფიქსები რეგისტრირებული პროვაიდერებისთვის, რომლებსაც დოკუმენტირებული უფასო დონე არ აქვთ. გამორთვის შემთხვევაში შენარჩუნდება ნიშნის ჩვენების ისტორიული წესი.", + "featureFlagProxySkipRecentlyFailedDescription": "პროქსი-პულები და opencode-ის თითოეულ ანგარიშზე როტაცია აღარ იყენებს ახლახან ჩავარდნილ პროქსის (უარყოფილი TCP შემოწმება ან მისი მეშვეობით მიღებული 429) თითოეული პროცესისთვის განსაზღვრული პერიოდით, რომელიც ყოველი განმეორებისას ორმაგდება მაქსიმალურ ზღვრამდე. პროქსის სტატუსი არ იწერება; ყველა კანდიდატის გვერდზე გადადების შემთხვევაში არჩევანი უცვლელი რჩება. ნაგულისხმევად გამორთულია: არჩევის თანმიმდევრობა ზუსტად ჩვეულებრივი როტაციის იდენტურია.", + "featureFlagProxyPoolEgressObservationDescription": "დეშბორდზე, პროქსი-პულის ქვეშ, აჩვენეთ ბოლო 24 საათში რამდენი დაფიქსირებული გამავალი IP ემსახურებოდა მის წევრებს, რამდენმა კავშირმა გამოიყენა ისინი და ყველაზე მეტი რამდენი კავშირი დაფიქსირდა ერთი IP-ის უკან. მხოლოდ წაკითხვისთვისაა, გამოითვლება პროქსის ჟურნალიდან და არასოდეს გამოიყენება მარშრუტიზაციისთვის. ნაგულისხმევად გამორთულია: პულის რედაქტორი უცვლელია, ხოლო დაკვირვების მარშრუტი აბრუნებს null-ს.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "პროქსის მდგომარეობის შემოწმებისას, სამიზნის მიერ უარყოფილმა მოთხოვნამ (401/403/429: პროქსიმ გადააგზავნა მოთხოვნა, ხოლო დანიშნულების მხარემ უარყო ეს გამავალი IP) გაანულოს პროქსის ზედიზედ წარუმატებლობათა სერია, როგორც წარმატებით შესრულებული შემოწმებისას. ნაგულისხმევად გამორთულია: უარყოფა ნეიტრალური რჩება და სერიას ინარჩუნებს. 5xx ნებისმიერ შემთხვევაში გაურკვეველ შედეგად რჩება, ხოლო უარყოფა არასოდეს შლის, თიშავს ან ხელახლა ააქტიურებს პროქსის.", "sidebar": { "home": "მთავარი", "dashboard": "მართვის პანელი", @@ -1425,13 +1429,13 @@ "secretKeyHint": "გამოიყენება დატვირთვის სათაურის ხელმოსაწერად ავთენტიფიკაციის მიზნით." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "Discord-ის Webhook URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "Webhook-ის URL, რომელიც დაკოპირებულია თქვენი Discord არხის ინტეგრაციის პარამეტრებიდან.", "tutorial": "როგორ შევქმნათ Discord webhook:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "Slack-ის Webhook URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "Webhook-ის URL, რომელიც დაკოპირებულია თქვენი Slack Incoming Webhooks ინტეგრაციიდან.", "tutorial": "როგორ შევქმნათ Slack webhook:" @@ -1441,7 +1445,7 @@ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "HTTP API ტოკენი, რომელიც მიღებულია @BotFather-ისგან თქვენი ბოტის შექმნისას.", "chatId": "Telegram ჩატის ID / არხი", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 ან @channelname", "chatIdHint": "ჩატის/არხის უნიკალური რიცხვითი იდენტიფიკატორი ან საჯარო მომხმარებლის სახელი.", "tutorial": "როგორ დავაკონფიგურიროთ Telegram webhook:" } @@ -2415,7 +2419,7 @@ "bypassProviderQuota": "პროვაიდერის კვოტის ზღვრული შეზღუდვების გვერდის ავლა", "bypassProviderQuotaDescription": "საშუალებას აძლევს ამ გასაღებს, მარშრუტიზაციისას უგულებელყოს ზედა დონის პროვაიდერის/ანგარიშის ზღვრული შეზღუდვის პოლიტიკა. API გასაღების USD კვოტები კვლავ მოქმედებს.", "quotaPill": "კვოტა", - "quotaModeOnly": "qtSd-only", + "quotaModeOnly": "მხოლოდ qtSd", "exclusiveLease": "ექსკლუზიური იჯარა", "exclusiveLeaseNoticeTitle": "ექსკლუზიური იჯარა", "exclusiveLeaseNoticeDesc": "ამ API გასაღებს აქვს გამოყოფილი კავშირების მარშრუტიზაციისთვის ექსკლუზიური იჯარის ნებართვები.", @@ -4123,7 +4127,7 @@ "vscodeAliasDescriptionError": "ნაჩვენებია ჩანაცვლების URL-ები, რადგან ამ სესიაში CLI გასაღებების ჩატვირთვა ვერ მოხერხდა.", "vscodeAliasDescriptionLoading": "CLI გასაღებები იტვირთება. ჩანაცვლების URL-ები ნაჩვენები იქნება, სანამ გასაღები ხელმისაწვდომი გახდება.", "vscodeAliasDescriptionPlaceholder": "ნაჩვენებია ჩანაცვლების URL-ები. TOKEN-ის ჩასანაცვლებლად შექმენით ან გაააქტიურეთ API გასაღები CLI Tools-ში.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI ინსტრუმენტები", "vscodeAliasBaseLabel": "VS Code საბაზო მისამართი", "vscodeAliasModelsLabel": "VS Code მოდელები", "vscodeAliasChatLabel": "VS Code ჩატი", @@ -4135,7 +4139,7 @@ "badgeInternalTooltip": "ეს შიდა სისტემური ბოლო წერტილია", "tierAll": "ყველა", "tierAuth": "ავტორიზებული", - "tierLoopback": "Loopback", + "tierLoopback": "ლუპბეკი", "tierAlwaysProtected": "ყოველთვის დაცული", "tierPublic": "საჯარო", "hideInternal": "შიდა ელემენტების დამალვა", @@ -4429,7 +4433,7 @@ "reindexFailed": "ხელახალი ინდექსირების დაწყება ვერ მოხერხდა", "keywordLabel": "საკვანძო სიტყვა (FTS5)", "keywordReason": "საკვანძო სიტყვებით ძიება ყოველთვის ხელმისაწვდომია", - "embeddingLabel": "Embedding", + "embeddingLabel": "ემბედინგი", "vectorStoreLabel": "ვექტორული საცავი", "qdrantLabel": "Qdrant", "rerankLabel": "ხელახალი რანჟირება", @@ -4603,7 +4607,7 @@ "enabledSkills": "ჩართულია", "totalExecutions": "შესრულებები", "successRate": "წარმატების მაჩვენებელი", - "marketplaceTab": "Marketplace", + "marketplaceTab": "მარკეტპლეისი", "applyFilters": "ფილტრების გამოყენება", "popularDefaultsLabel": "ნაგულისხმევად პოპულარული არჩეული პროვაიდერისთვის:", "onMode": "ჩართულია", @@ -4646,7 +4650,7 @@ "uptime": "უწყვეტი მუშაობის დრო", "memory": "მეხსიერება", "memoryRss": "მეხსიერება (RSS)", - "heap": "Heap", + "heap": "გროვა", "cpu": "CPU", "database": "მონაცემთა ბაზა", "version": "ვერსია", @@ -5372,7 +5376,7 @@ "testAllProgress": "შემოწმებულია {done}/{total}", "testAllFailedHidden": "დამალულია {count} წარუმატებელი მოდელი", "testAllDone": "ყველა მოდელი შემოწმებულია", - "productionKey": "Production Key", + "productionKey": "საწარმოო გასაღები", "enterNewApiKey": "შეიყვანეთ ახალი API გასაღები", "codexApplyModalTitle": "Local Codex-ზე გამოყენება", "codexApplyTargetLabel": "სამიზნე მისამართი", @@ -5797,10 +5801,10 @@ "ccCompatibleSummarizeThinkingDescription": "CC Compatible აზროვნების მოთხოვნებს ამატებს `display: \"summarized\"`-ს, რათა მხარდაჭერილმა Claude მოდელებმა აზროვნების ხილული ცვლილებები ნაკადის სახით გადასცენ.", "ccCompatibleSummarizeThinkingLabel": "აზროვნების შეჯამებული ჩვენების ჩართვა", "ccCompatibleDetailsTitle": "CC-compatible რელეის დეტალები", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "CC-თან თავსებადი", "ccCompatibleModelsDescription": "CC-compatible რელეები მოდელების ჩამონათვალს არ აჩვენებს. დაამატეთ Claude მოდელების ID-ები, რომლებსაც თქვენი რელეი იღებს.", "ccCompatibleNameHint": "ამ მხოლოდ Claude Code-ისთვის განკუთვნილი რელეის საჩვენებელი სახელი.", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay საწარმოო გარემო", "ccCompatiblePrefixHint": "გამოიყენება მოდელის ფსევდონიმებში, როგორიცაა prefix/model-id.", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "გამოიყენეთ ეს პროვაიდერი მხოლოდ იმ რელეებისთვის, რომლებიც ექსკლუზიურად Claude Code კლიენტებს ემსახურება. OmniRoute ყველა შემომავალ მოთხოვნას Claude Code-თან თავსებად სადენოვან ფორმატში გარდაქმნის, რათა ამ რელეებმა მათი მიღება შეძლონ. თუ მხოლოდ Claude Code CLI-ის გამოყენება გსურთ ან დარწმუნებული არ ხართ, რას ნიშნავს რელეის ეს ტიპი, მის ნაცვლად გამოიყენეთ ჩვეულებრივი Anthropic-თან თავსებადი პროვაიდერი.", @@ -6363,15 +6367,15 @@ "checkWebToken": "ტოკენის შემოწმება", "huggingchatLabel": "HuggingChat (უფასო)", "huggingchatDesc": "უფასო LLM ჩატი huggingface.co/chat-ის მეშვეობით", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe ვები", "poeWebDesc": "მრავალმოდელიანი ჩატი poe.com-ის მეშვეობით", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice ვები", "veniceWebDesc": "კონფიდენციალურობაზე ორიენტირებული AI ჩატი", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel ვები", "v0VercelWebDesc": "AI-ით კოდის გენერაცია v0.dev-ის მეშვეობით", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi ვები", "kimiWebDesc": "Moonshot AI-ის სამომხმარებლო ჩატი www.kimi.com-ის მეშვეობით (საერთაშორისო, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola ვები", "doubaoWebDesc": "ByteDance-ის AI ჩატი dola.com-ის მეშვეობით", "overrideBaseUrlAdvanced": "გაფართოებული: საბაზისო URL-ის ჩანაცვლება", "overrideBaseUrlHint": "გაფართოებული: მიუთითეთ ამ ჩაშენებული პროვაიდერისთვის მორგებული ბოლო წერტილი. ნაგულისხმევი მნიშვნელობის გამოსაყენებლად ცარიელი დატოვეთ.", @@ -6452,7 +6456,7 @@ "failedUpdateCodexServiceMode": "Codex-ის სერვისის რეჟიმის განახლება ვერ მოხერხდა", "filterByMedia": "მედია", "freeBadge": "უფასო", - "kimiCodeApiKeyLabel": "Kimi Code API Key", + "kimiCodeApiKeyLabel": "Kimi Code API გასაღები", "modelTestFailed": "მოდელის ტესტი ვერ შესრულდა", "modelTestNetworkError": "მოდელის ტესტირებისას ქსელის შეცდომა მოხდა", "networkError": "ქსელის შეცდომა", @@ -6745,11 +6749,11 @@ "themeSystem": "სისტემა", "endpointTunnelVisibility": "Endpoint-ის გვირაბის ხილვადობა", "endpointTunnelVisibilityDesc": "დამალეთ გვირაბის მართვის ელემენტები Endpoint-ის გვერდიდან გვირაბის მდგომარეობის შეცვლის გარეშე.", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Cloudflare სწრაფი გვირაბი", "showCloudflareTunnelDesc": "აჩვენეთ Cloudflare Quick Tunnel-ის მართვის ელემენტები Endpoint-ის გვერდზე.", "showTailscaleFunnel": "Tailscale Funnel", "showTailscaleFunnelDesc": "აჩვენეთ Tailscale Funnel-ის მართვის ელემენტები Endpoint-ის გვერდზე.", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "ngrok გვირაბი", "showNgrokTunnelDesc": "აჩვენეთ ngrok Tunnel-ის მართვის ელემენტები Endpoint-ის გვერდზე.", "sidebarVisibility": "გვერდითი ზოლის ელემენტების დამალვა", "sidebarVisibilityDesc": "დამალეთ გვერდითი ზოლის ნებისმიერი სანავიგაციო ჩანაწერი ვიზუალური გადატვირთულობის შესამცირებლად, ფუნქციების გამორთვის გარეშე", @@ -7139,7 +7143,7 @@ "ipModeWhitelist": "თეთრი სია", "ipModeWhitelistPriority": "თეთრი სიის პრიორიტეტი", "addIpAddress": "IP მისამართის დამატება", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 ან 10.0.*.*", "block": "+ დაბლოკვა", "allow": "+ დაშვება", "blocked": "დაბლოკილი ({count})", @@ -7927,16 +7931,16 @@ "resilienceEnableServerSideWait": "სერვერის მხარეს ლოდინის ჩართვა", "resilienceMaximumRetries": "განმეორებითი მცდელობების მაქსიმალური რაოდენობა", "resilienceMaximumWaitPerRetry": "მაქსიმალური ლოდინი თითოეულ განმეორებით მცდელობაზე", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "SkillsMP მარკეტპლეისი", "memorySkillsFailedToSave": "შენახვა ვერ მოხერხდა", "memorySkillsApiKey": "API გასაღები", "memorySkillsActiveSkillsProvider": "უნარების აქტიური პროვაიდერი", "cliproxyapiFallback": "CLIProxyAPI-ის სარეზერვო ვარიანტი", "cliproxyapiEnableFallback": "CLIProxyAPI-ის სარეზერვო ვარიანტის ჩართვა", - "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiUrl": "CLIProxyAPI-ის URL", "headroomProxyTitle": "Headroom პროქსი", "headroomProxyDesc": "არასავალდებულო Headroom ტოკენების დამზოგავი პროქსის URL. ცარიელი მნიშვნელობის შემთხვევაში გამოიყენება HEADROOM_URL ან http://localhost:8787.", - "headroomProxyUrl": "Headroom URL", + "headroomProxyUrl": "Headroom-ის URL", "headroomProxyUrlHint": "Loopback URL-ების გაშვება ამ გვერდიდან შეიძლება. გარე URL-ები მხოლოდ მოწმდება.", "headroomProxySave": "შენახვა", "headroomProxyStart": "გაშვება", @@ -8347,9 +8351,9 @@ "oneproxyClearAllConfirm": "გასუფთავდეს ყველა 1proxy-ის პროქსი?", "memorySkillsSkillsmpDescription": "დაუკავშირდით SkillsMP-ს, რათა აღმოაჩინოთ და დააინსტალიროთ უნარები მარკეტფლეისიდან.", "memorySkillsActiveProviderDescription": "აირჩიეთ, რომელ პროვაიდერს გამოიყენებს უნარების გვერდი ძიებისა და ინსტალაციისთვის.", - "memorySkillsSkillsmpProviderTitle": "SkillsMP Marketplace", + "memorySkillsSkillsmpProviderTitle": "SkillsMP მარკეტპლეისი", "memorySkillsSkillsmpProviderDescription": "ავთენტიფიცირებული მარკეტფლეისი (იყენებს თქვენს SkillsMP API გასაღებს).", - "memorySkillsSkillsshProviderTitle": "skills.sh Directory", + "memorySkillsSkillsshProviderTitle": "skills.sh კატალოგი", "memorySkillsSkillsshProviderDescription": "საჯარო კატალოგის პროვაიდერი (API გასაღები არ არის საჭირო).", "routingCcBridgeCatalogName": "Anthropic-თან თავსებადი CC ხიდი", "routingClaudeProviderName": "Claude (OAuth)", @@ -10256,11 +10260,11 @@ "techUsersSubtitle": "სიღრმისეულად გაეცანით არქიტექტურას, API-ებსა და შიდა მექანიზმებს", "apiExplorerMetadataTitle": "API Explorer — OmniRoute-ის დოკუმენტაცია", "apiExplorerMetadataDescription": "ინტერაქციული API Explorer — რეალურ დროში მიღებული პასუხებით გამოცადეთ OmniRoute-ის ენდფოინთები", - "apiExplorerTitle": "API Explorer", + "apiExplorerTitle": "API-ის მკვლევარი", "apiExplorerDescription": "გამოცადეთ OmniRoute-ის ენდფოინთები რეალურ დროში. აირჩიეთ ენდფოინთი, დააკონფიგურირეთ მოთხოვნა და იხილეთ პასუხი რეალურ დროში.", "apiExplorerSseStarted": "SSE ნაკადი დაიწყო — რეალურ დროში გამომავალი მონაცემებისთვის შეამოწმეთ ტერმინალი/devtools.", "apiExplorerError": "შეცდომა: {message}", - "apiExplorerAuth": "auth", + "apiExplorerAuth": "ავტორიზაცია", "apiExplorerResponseLabel": "პასუხი", "apiExplorerSelectEndpoint": "შესასწავლად აირჩიეთ ენდფოინთი", "apiExplorerChooseApi": "დეტალების სანახავად და რეალურ დროში გამოსაცდელად გვერდითა ზოლიდან აირჩიეთ API", @@ -10772,7 +10776,7 @@ "devinDesktopPasteDescription": "ჩასვით არსებული Devin API გასაღები ავთენტიფიცირებული Devin სესიიდან. გასაღების ექსპორტის ხელმისაწვდომობა და ნაბიჯები განსხვავდება Devin-ის ვერსიისა და ანგარიშის მიხედვით.", "devinPasteDescription": "მიუთითეთ თქვენი WINDSURF_API_KEY (მიღებული `devin auth login`-ის ან Windsurf IDE-ის ბრძანების „Windsurf: Provide Auth Token“ მეშვეობით).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "Grok Build-ის auth.json", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "API გასაღები / ტოკენი", "saving": "ინახება…", @@ -10915,7 +10919,7 @@ "assignmentsCount": "{count} მინიჭება", "noData": "—", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency}მწმ", "testFailure": "✗ {error}", "repair": "აღდგენა", "relayAuthMissing": "ავთენტიფიკაცია აკლია", @@ -10964,16 +10968,16 @@ "strategyLatency": "შეყოვნებაზე ოპტიმიზებული", "poolMembersLabel": "პულის წევრები ({count})", "poolNoMembers": "ამ პულში ჯერ პროქსები არ არის.", + "poolEgressObservation": "გამოყენებულია {exits, plural, one {# გასასვლელი} other {# გასასვლელი}} {connections, plural, one {# კავშირის} other {# კავშირის}} მიერ · ერთ გასასვლელზე მაქსიმუმ {max} · ბოლო {hours} სთ", + "poolEgressObservationEmpty": "ბოლო {hours} სთ-ის განმავლობაში ტრაფიკი არ დაფიქსირებულა", + "poolEgressObservationHint": "დათვლილია პროქსის ჟურნალიდან მოცემული დროის შუალედში: ამ პულის წევრებისთვის დაფიქსირებული უნიკალური გამავალი IP-ები და OmniRoute-ის კავშირები, რომლებმაც ისინი გამოიყენეს. „ერთ გასასვლელზე“ გულისხმობს მთელ დროის შუალედს და არა ერთსა და იმავე დროს. თითოეულ IP-ზე 429 დაბლოკვა აჩერებს მხოლოდ იმავე პროვაიდერის ოჯახის კავშირებს.", "poolRemove": "ამოღება", "poolRemoveFailed": "პულიდან პროქსის ამოღება ვერ მოხერხდა", "poolAddLabel": "პროქსის დამატება", "poolAddMember": "დამატება", "poolAddFailed": "პროქსის პულში დამატება ვერ მოხერხდა", "poolSelectProxy": "აირჩიეთ პროქსი…", - "poolSaveFailed": "პულზე მინიჭების შენახვა ვერ მოხერხდა", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family." + "poolSaveFailed": "პულზე მინიჭების შენახვა ვერ მოხერხდა" }, "playground": { "title": "მოდელების სატესტო გარემო", @@ -11447,8 +11451,8 @@ "allProviders": "ყველა პროვაიდერი", "total": "სულ", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "err": "შეცდომა", + "timeoutShort": "დრო ამოიწურა", "direct": "პირდაპირი", "newest": "უახლესი", "oldest": "უძველესი", @@ -11944,7 +11948,7 @@ "diagnosing": "მიმდინარეობს დიაგნოსტიკა…", "diagnoseHealthy": "ტრაფიკის დაფიქსირების კონვეიერი გამართულად მუშაობს.", "diagnoseUnhealthy": "ტრაფიკის დაფიქსირების კონვეიერს აქვს პრობლემები:", - "repair": "Repair", + "repair": "შეკეთება", "repairing": "აღდგენა…", "repairDone": "აღდგენილია: {items}", "repairNothing": "აღსადგენი არაფერია — სისტემის მდგომარეობა სუფთაა.", @@ -12168,7 +12172,7 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "CLI კოდი", "phrase": "კოდის ხელსაწყოები, რომლებსაც OmniRoute-ზე მიუთითებთ", "flow": "თქვენ → CLI Code → OmniRoute → პროვაიდერი", "seeOther": "იხილეთ →" @@ -12236,7 +12240,7 @@ "category": "ტიპი", "detectionStatus": "აღმოჩენა", "configStatus": "კონფიგურაცია", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "საბაზისო URL", "apiKeyLabel": "API გასაღები", "modelMappingLabel": "მოდელების შესაბამისობა", "noActiveProviders": "აქტიური პროვაიდერები არ არის.", @@ -12249,7 +12253,7 @@ "pageSubtitle": "OmniRoute-ზე მიმართული კოდის ინსტრუმენტები", "searchPlaceholder": "CLI-ის ძიება…", "filterDetectionLabel": "აღმოჩენა", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "საბაზისო URL", "detectionAll": "ყველა", "detectionInstalled": "დაყენებული", "detectionNotFound": "ვერ მოიძებნა", @@ -12987,6 +12991,12 @@ "STREAM_RECOVERY_MIDSTREAM_ENABLED": { "description": "ნაკადის აღდგენისას პასუხის ხელახლა მოთხოვნისა და მისი გაერთიანების დაშვება მას შემდეგაც, რაც ბაიტები უკვე მიაღწევს კლიენტამდე." }, + "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { + "description": "ნაკადის შუაში გაგრძელება ინსტრუმენტის გამოძახებისას უსაფრთხო გახადეთ: არასოდეს განაახლოთ შეწყვეტილი ნაკადი ინსტრუმენტის გამოძახების გაგზავნის შემდეგ (მიუხედავად იმისა, ის ჯერ კიდევ მიმდინარეობს თუ უკვე დასრულდა) და ხელახალი ცდების მთელი ლიმიტის გამოყენების ნაცვლად შეჩერდით ერთი ცარიელი გაგრძელების შემდეგ." + }, + "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { + "description": "ერთხელ გადაერთოს მონათესავე კავშირზე, როდესაც ნაკადი იხურება რაიმე სასარგებლო ფრეიმის გამოშვებამდე და იმავე კავშირზე განმეორებითი ცდის დაშვებული რაოდენობა ამოწურულია. თუ გამოსაყენებელი მონათესავე კავშირი არ არსებობს, დაბრუნდება თავდაპირველი early-EOF შეცდომა. გამორთული: განმეორებითი ცდის შემდეგ early-EOF საბოლოო შეცდომად რჩება." + }, "MODEL_CATALOG_INCLUDE_NAMES": { "description": "/v1/models-ის პასუხებში ეკრანზე გამოსატანად მოსახერხებელი სახელის ველების ჩართვა. გამორთეთ ეს იმ კლიენტებისთვის, რომლებიც მხოლოდ მოდელის ID-ებს იღებენ." }, @@ -13025,18 +13035,12 @@ "description": "გააგრძელეთ სერვერის მიერ მართული ხელსაწყოების არასტრიმინგული გამოძახებები, სანამ მოდელი კლიენტისთვის გამოსაყენებელ პასუხს არ დააბრუნებს." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths.", - "label": "__MISSING__:Retry-After Provenance" + "label": "Retry-After-ის წარმოშობა", + "description": "გაერთიანებულ 429/503 მიუწვდომლობის პასუხებში გამოტოვეთ Retry-After, როდესაც მომდევნო ცდის კონკრეტული მომავალი დრო უცნობია, სინთეზური 1 წმ-ის გაგზავნის ნაცვლად; დაამატეთ error.retry_after_provenance და combo-ს დაცლის მარშრუტებზე წაიკითხეთ ტექსტურად მოცემული მინიშნებები ხელახალი ცდის შესახებ." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip.", - "label": "__MISSING__:Protected-Priority Infra Stops as 502" - }, - "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." - }, - "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { - "description": "__MISSING__:Fail over once to a sibling connection when a stream closes before emitting any useful frame and the bounded same-connection retry is spent. With no usable sibling, the original early-EOF error is returned. Off: early-EOF stays terminal after the retry." + "label": "დაცული პრიორიტეტის ინფრასტრუქტურული შეჩერებები, როგორც 502", + "description": "უპასუხეთ 502-ით 503-ის ნაცვლად, როდესაც მხოლოდ კვოტაზე ორიენტირებული სარეზერვო პრიორიტეტული სამიზნე აჩერებს combo-ს მიზეზით, რომელიც დადასტურებულად არ უკავშირდება კვოტას: პროვაიდერის ღია circuit breaker ან პროგნოზული დაყოვნების გამო გამოტოვება." } } }, @@ -13115,7 +13119,7 @@ "comboHealth": "კომბოს მდგომარეობა", "callLogs": "გამოძახებების ჟურნალები", "costs": "ხარჯები", - "playground": "Playground", + "playground": "სატესტო გარემო", "nestedCombo": "ჩადგმული კომბო", "modelTarget": "მოდელის სამიზნე", "weight": "{value}% წონა", @@ -13650,6 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "გაგზავნამდე უარყავით მოთხოვნები, როდესაც სამიზნე მოდელს საჭირო შესაძლებლობები (ხედვა, ხელსაწყოები, სტრუქტურირებული გამომავალი, კონტექსტის ფანჯარა) არ გააჩნია. იცავს უშუალო, ერთი პროვაიდერისადმი გაგზავნილ მოთხოვნებს, რომლებიც კომბინირებული შრის თავსებადობის ფილტრს გვერდს უვლის.", "featureFlagDisableContextWindowChecksDescription": "ერთი მოდელისადმი უშუალოდ გაგზავნილი მოთხოვნებისთვის გამოტოვეთ OmniRoute-ის კონტექსტის ფანჯრისა და შეყვანის ტოკენების მაქსიმალური რაოდენობის ლოკალური შემოწმება. ზემდგომი პროვაიდერები კვლავ იყენებენ საკუთარ რეალურ შეზღუდვებს. მოთხოვნის შეკუმშვა და გამომავალი ტოკენების ლიმიტები აქტიური რჩება.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "ძიების სტატისტიკა და ბოლო ძიებები ითვალისწინებს მხოლოდ იმ პროვაიდერებს, რომლებსაც ჯერ კიდევ აქვთ აქტიური კავშირი (გასაღების არმომთხოვნი პროვაიდერები, როგორიცაა duckduckgo-free, ყოველთვის ითვლება). გამორთვის შემთხვევაში შენარჩუნდება ძიების ყველა ჩანაწერი, რომელსაც პროვაიდერის ID აქვს.", "publicSystem": { "notFound": { "title": "გვერდი ვერ მოიძებნა", @@ -14160,10 +14165,5 @@ "partnerLinkNote": "პარტნიორის ბმული", "dismissAriaLabel": "დახურვა" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "გამორთეთ აზროვნების დონის ვარიანტების (მაგ. -low, -medium, -high) გენერირება /v1/models კატალოგში.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "__MISSING__:Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "__MISSING__:Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "გამორთეთ აზროვნების დონის ვარიანტების (მაგ. -low, -medium, -high) გენერირება /v1/models კატალოგში." } diff --git a/src/i18n/messages/km.json b/src/i18n/messages/km.json index 34960ce503..b9b9489f98 100644 --- a/src/i18n/messages/km.json +++ b/src/i18n/messages/km.json @@ -701,13 +701,13 @@ "monitorAnomaliesAndHealth": "តាមដានភាពមិនប្រក្រតី និងស្ថានភាពប្រព័ន្ធ", "flaggedAnomalies": "ភាពមិនប្រក្រតីដែលបានសម្គាល់", "noAnomaliesDetected": "មិនបានរកឃើញភាពមិនប្រក្រតីទេ", - "apiKey": "API Key", - "xpLastHour": "XP (1h)", - "zScore": "Z-Score", + "apiKey": "សោ API", + "xpLastHour": "XP (1 ម៉ោង)", + "zScore": "ពិន្ទុ Z", "suspicious": "គួរឱ្យសង្ស័យ", "tokensCommunityServers": "ម៉ាស៊ីនមេសហគមន៍", "tokensServerNamePlaceholder": "ឈ្មោះម៉ាស៊ីនមេ", - "tokensApiKeyPlaceholder": "API key", + "tokensApiKeyPlaceholder": "សោ API", "tokensTokenBalance": "សមតុល្យ Token", "tokensSendTokens": "ផ្ញើ Token", "tokensRecipientApiKeyId": "លេខសម្គាល់ API Key របស់អ្នកទទួល", @@ -832,7 +832,7 @@ "wizardStep3Validate": "ផ្ទៀងផ្ទាត់", "wizardStep4Cost": "ថ្លៃចំណាយ និងបង្កើត", "wizardProviderLabel": "អ្នកផ្តល់សេវា", - "wizardEndpointLabel": "Endpoint", + "wizardEndpointLabel": "ចំណុចបញ្ចប់", "wizardModelLabel": "ម៉ូដែល", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (យើងនឹងបម្លែង)", @@ -901,7 +901,7 @@ "batchListRemoveCompleted": "ការលុបបានបញ្ចប់", "batchListTableStatus": "ស្ថានភាព", "batchListTableId": "លេខសម្គាល់", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "ចំណុចបញ្ចប់", "batchListTableModel": "ម៉ូដែល", "batchListTableProgress": "វឌ្ឍនភាព", "batchListTableCreated": "បានបង្កើត", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "ផ្សព្វផ្សាយ mirror ids របស់ claude/<provider>/<model> នៅលើ /v1/models ដើម្បីឱ្យការស្វែងរកម៉ូដែលតាម gateway របស់ Claude Code រាយបញ្ជីម៉ូដែលដែលមិនមែនជា Claude។ ការព្រមាន៖ វានឹងបង្កើនធាតុក្នុងកាតាឡុកទ្វេដងសម្រាប់ client ទាំងអស់ នៅពេលបើកជាសកល។", "featureFlagNoThinkingAliasEnabledDescription": "កុងតាក់មេសម្រាប់ gateway aliases របស់ no-think/<provider>/<model>។ បើក (លំនាំដើម)៖ /v1/models ផ្សព្វផ្សាយវ៉ារ្យ៉ង់មិនគិតសម្រាប់គ្រប់ម៉ូដែល Claude ដែលមានសមត្ថភាពគិត និងមានលក្ខណៈសម្បត្តិគ្រប់គ្រាន់ ហើយ no-think/ id ដែលបានផ្ញើក្នុងសំណើ នឹងត្រូវដោះស្រាយត្រឡប់ទៅម៉ូដែលពិត ដោយបិទការវែកញែក។ បិទ៖ គ្មានវ៉ារ្យ៉ង់ណាមួយត្រូវបានផ្សព្វផ្សាយទេ ហើយ no-think/ id ត្រូវបានចាត់ទុកដូចជា model id មិនស្គាល់ផ្សេងទៀត។ ការជ្រើសរើសបើក/បិទ ModelSpec.noThinkingAlias សម្រាប់ម៉ូដែលនីមួយៗ នៅតែអនុវត្ត ខណៈដែលវាត្រូវបានបើក។", "featureFlagChatVirtualLanesEnabledDescription": "បើកផ្លូវចូលនិម្មិតដែលសម្របខ្លួនតាម tenant នីមួយៗ សម្រាប់ការបញ្ជូនទៅ provider (#9654)៖ ការកើនឡើងខ្លាំងភ្លាមៗរបស់ tenant មួយ នឹងលែងបណ្ដាលឱ្យ tenant មួយទៀតទទួល 503។ env var OMNIROUTE_CHAT_VIRTUAL_LANES មានអាទិភាពលើការកំណត់ជំនួសពី dashboard នេះ ហើយការផ្លាស់ប្ដូរនឹងមានប្រសិទ្ធភាពនៅពេលចាប់ផ្ដើម server ឡើងវិញ។", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ទំព័រអ្នកផ្តល់សេវានៅលើផ្ទាំងគ្រប់គ្រង៖ បង្ហាញស្លាក ឥតគិតថ្លៃ តែលើសញ្ញាដែលអ្នកផ្តល់សេវាទទួលស្គាល់ប៉ុណ្ណោះ — លុបចោលការសន្និដ្ឋានតាមឈ្មោះបង្ហាញ វាលឥតគិតថ្លៃដែលមិនមែនជាតម្លៃប៊ូលីន និងបច្ច័យ :free លើអ្នកផ្តល់សេវាដែលបានចុះបញ្ជី ប៉ុន្តែមិនមានកម្រិតសេវាឥតគិតថ្លៃដែលបានចងក្រងជាឯកសារ។ ការបិទនឹងរក្សាច្បាប់ស្លាកចាស់ដដែល។", + "featureFlagProxySkipRecentlyFailedDescription": "ក្រុមប្រូកស៊ី និងការបង្វិលតាមគណនីនីមួយៗរបស់ opencode នឹងផ្អាកការប្រើប្រូកស៊ីដែលទើបតែបរាជ័យឡើងវិញ (ការស្ទង់ TCP ត្រូវបានបដិសេធ ឬទទួលបាន 429 តាមរយៈវា) ក្នុងរយៈពេលមួយសម្រាប់ដំណើរការនីមួយៗ ដែលកើនទ្វេដងរាល់ពេលកើតឡើងម្តងទៀត រហូតដល់កម្រិតអតិបរមា។ គ្មានស្ថានភាពប្រូកស៊ីត្រូវបានកត់ត្រាទេ ហើយនៅពេលបេក្ខភាពទាំងអស់ត្រូវបានទុកមួយឡែក ជម្រើសនៅតែមិនផ្លាស់ប្តូរ។ បិទតាមលំនាំដើម៖ លំដាប់ជ្រើសរើសគឺដូចគ្នាទាំងស្រុងនឹងការបង្វិលធម្មតា។", + "featureFlagProxyPoolEgressObservationDescription": "បង្ហាញនៅក្រោមក្រុមប្រូកស៊ីក្នុងផ្ទាំងគ្រប់គ្រងថា ក្នុងរយៈពេល 24 ម៉ោងចុងក្រោយ មាន IP ចេញក្រៅដែលបានសង្កេតឃើញចំនួនប៉ុន្មានបានបម្រើសមាជិករបស់ក្រុម មានការតភ្ជាប់ចំនួនប៉ុន្មានបានប្រើពួកវា និងចំនួនអតិបរមាដែលបានឃើញនៅពីក្រោយ IP តែមួយ។ សម្រាប់តែអានប៉ុណ្ណោះ គណនាពីកំណត់ហេតុប្រូកស៊ី និងមិនដែលប្រើសម្រាប់ការកំណត់ផ្លូវទេ។ បិទតាមលំនាំដើម៖ កម្មវិធីកែសម្រួលក្រុមមិនផ្លាស់ប្តូរ ហើយផ្លូវសង្កេតឆ្លើយតបជា null។", + "featureFlagProxyHealthBlockedResetsStreakDescription": "ក្នុងការត្រួតពិនិត្យសុខភាពប្រូកស៊ី អនុញ្ញាតឱ្យការស្ទង់ដែលគោលដៅបានបដិសេធ (401/403/429៖ ប្រូកស៊ីបានបញ្ជូនបន្ត ប៉ុន្តែគោលដៅបានបដិសេធ IP ចេញក្រៅនេះ) កំណត់ចំនួនបរាជ័យជាប់ៗគ្នារបស់ប្រូកស៊ីឡើងវិញ ដូចការស្ទង់ដែលត្រូវបានបម្រើ។ បិទតាមលំនាំដើម៖ ការបដិសេធនៅតែអព្យាក្រឹត និងរក្សាចំនួនបរាជ័យជាប់ៗគ្នា។ 5xx នៅតែមិនអាចសន្និដ្ឋានបានក្នុងករណីទាំងពីរ ហើយការបដិសេធមិនដែលលុប បិទ ឬធ្វើឱ្យប្រូកស៊ីសកម្មឡើងវិញទេ។", "sidebar": { "home": "ទំព័រដើម", "dashboard": "ផ្ទាំងគ្រប់គ្រង", @@ -1424,7 +1424,7 @@ "custom": { "endpointUrl": "URL របស់ Endpoint", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", - "secretKey": "Secret Key", + "secretKey": "សោសម្ងាត់", "secretKeyPlaceholder": "បញ្ចូលសោសម្ងាត់ ឬទុកឱ្យទទេដើម្បីបង្កើតដោយស្វ័យប្រវត្តិ", "secretKeyHint": "ប្រើសម្រាប់ចុះហត្ថលេខាលើបឋមកថារបស់ payload ដើម្បីផ្ទៀងផ្ទាត់អត្តសញ្ញាណ។" }, @@ -1441,11 +1441,11 @@ "tutorial": "របៀបបង្កើត Slack webhook៖" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "ថូខិនបូត Telegram", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "ថូខិន HTTP API ដែលទទួលបានពី @BotFather នៅពេលបង្កើត bot របស់អ្នក។", "chatId": "Telegram Chat ID / ឆានែល", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 ឬ @channelname", "chatIdHint": "លេខសម្គាល់ជាលេខតែមួយគត់ ឬឈ្មោះអ្នកប្រើប្រាស់សាធារណៈរបស់ការជជែក/ឆានែល។", "tutorial": "របៀបកំណត់រចនាសម្ព័ន្ធ Telegram webhook៖" } @@ -1815,7 +1815,7 @@ "topologyLegendRecent": "ថ្មីៗ", "topologyLegendError": "កំហុស", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", + "apiKeyLabel": "សោ API", "requestsShort": "សំណើ {count}", "providerModelsTitle": "{provider} - ម៉ូដែល", "copiedModel": "បានចម្លង៖ {model}", @@ -2207,7 +2207,7 @@ "model": "ម៉ូដែល", "account": "គណនី", "connection": "ការតភ្ជាប់", - "combo": "Combo", + "combo": "បន្សំ", "routeStep": "ជំហាន", "tokens": "ថូខិន", "notAvailable": "មិនមាន", @@ -2717,7 +2717,7 @@ "ccOnboardingTitle": "settings.json សម្រាប់ការស្វែងរកម៉ូដែល gateway", "ccOnboardingCopy": "ចម្លង", "ccOnboardingCopied": "បានចម្លង", - "ccOnboardingKeyPlaceholder": "''", + "ccOnboardingKeyPlaceholder": "'<សោ API OmniRoute របស់អ្នក>'", "ccOnboardingWindowNote": "Claude Code សន្មត់ថាម៉ូដែលដែលមានលេខសម្គាល់ណាមួយដែលវាមិនស្គាល់ មានបង្អួចបរិបទទំហំ 200K។ សម្រាប់ម៉ូដែលដែលមានទំហំបង្អួចពិតប្រាកដខុសពីនេះ សូមបន្ថែម CLAUDE_CODE_AUTO_COMPACT_WINDOW នៅខាងក្រោមវា ដើម្បីកុំឱ្យការបង្រួមដោយស្វ័យប្រវត្តិដំណើរការឆាប់ពេក។", "failedSave": "រក្សាទុកមិនបាន", "profileSyncTitle": "ការធ្វើសមកាលកម្មប្រវត្តិរូប CLI ដោយស្វ័យប្រវត្តិ", @@ -3881,28 +3881,28 @@ "showingTopCostRows": "កំពុងបង្ហាញ {shown} ក្នុងចំណោម {total} ជួរដែលត្រូវគ្នា (50 ជួរដំបូង)។" }, "endpoint": { - "title": "API Endpoint", + "title": "ចំណុចចុង API", "subtitle": "ប្រើ endpoint ដែលត្រូវគ្នាជាមួយ OpenAI ជាមួយ SDK និងឧបករណ៍ភាគច្រើន។", "testEndpoint": "សាកល្បង endpoint →", "advancedProtocols": "ពិធីការកម្រិតខ្ពស់", "available": "Endpoint ដែលអាចប្រើបាន", "cloudProxy": "Cloud Proxy", "disableConfirm": "តើអ្នកប្រាកដថាចង់បិទ cloud proxy មែនទេ?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", + "baseUrl": "URL មូលដ្ឋាន", + "apiKeyLabel": "សោ API", "registeredKeys": "Key ដែលបានចុះឈ្មោះ", "chatCompletions": "ការបំពេញការជជែក", "responses": "ការឆ្លើយតប", "listModels": "បញ្ជីម៉ូដែល", "usingCloudProxy": "កំពុងប្រើ Cloud Proxy", "usingLocalServer": "កំពុងប្រើ Local Server", - "machineId": "Machine ID: {id}...", + "machineId": "លេខសម្គាល់ម៉ាស៊ីន៖ {id}...", "disableCloud": "បិទ Cloud", "enableCloud": "បើក Cloud", "modelsAcrossEndpoints": "ម៉ូដែល {models} នៅលើ endpoint ចំនួន {endpoints}", "loadingModels": "កំពុងផ្ទុកម៉ូដែលដែលអាចប្រើបាន...", "chatDesc": "ការជជែកបែប streaming និង non-streaming ជាមួយ provider ទាំងអស់", - "embeddings": "Embeddings", + "embeddings": "វ៉ិចទ័របង្កប់", "embeddingsDesc": "Text embeddings សម្រាប់ដំណើរការស្វែងរក និង RAG", "imageGeneration": "ការបង្កើតរូបភាព", "imageDesc": "បង្កើតរូបភាពពីពាក្យបញ្ជាអត្ថបទ", @@ -4018,9 +4018,9 @@ "messagesApiDesc": "ទម្រង់ Anthropic Messages API ដើមសម្រាប់អ្នកផ្ដល់សេវាដែលត្រូវគ្នាជាមួយ Claude", "imageEdits": "ការកែសម្រួលរូបភាព", "imageEditsDesc": "កែសម្រួល និងកែប្រែរូបភាពដែលមានស្រាប់ដោយប្រើ AI (inpainting, outpainting, variations)", - "batchApi": "Batch API", + "batchApi": "API ដំណើរការជាបាច់", "batchApiDesc": "ដំណើរការសំណើជាបាច់ធំៗដោយអសមកាល (ត្រូវគ្នាជាមួយ OpenAI)", - "filesApi": "Files API", + "filesApi": "API ឯកសារ", "filesApiDesc": "ផ្ទុកឡើង និងគ្រប់គ្រងឯកសារសម្រាប់ដំណើរការជាបាច់", "videoGeneration": "ការបង្កើតវីដេអូ", "videoDesc": "បង្កើតវីដេអូដោយប្រើម៉ូដែល AI ដូចជា ComfyUI និង Stable Video Diffusion។", @@ -4127,7 +4127,7 @@ "vscodeAliasDescriptionError": "កំពុងបង្ហាញ URL ជំនួស ពីព្រោះមិនអាចផ្ទុកសោ CLI ក្នុងសម័យនេះបានទេ។", "vscodeAliasDescriptionLoading": "កំពុងផ្ទុកសោ CLI។ URL ជំនួសត្រូវបានបង្ហាញរហូតដល់មានសោមួយ។", "vscodeAliasDescriptionPlaceholder": "កំពុងបង្ហាញ URL ជំនួស។ បង្កើត ឬធ្វើឱ្យសោ API សកម្មនៅក្នុង CLI Tools ដើម្បីជំនួស TOKEN។", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "ឧបករណ៍ CLI", "vscodeAliasBaseLabel": "មូលដ្ឋាន VS Code", "vscodeAliasModelsLabel": "ម៉ូដែល VS Code", "vscodeAliasChatLabel": "ការជជែក VS Code", @@ -4433,7 +4433,7 @@ "reindexFailed": "មិនអាចចាប់ផ្ដើមធ្វើលិបិក្រមឡើងវិញបានទេ", "keywordLabel": "ពាក្យគន្លឹះ (FTS5)", "keywordReason": "ការស្វែងរកតាមពាក្យគន្លឹះអាចប្រើបានជានិច្ច", - "embeddingLabel": "Embedding", + "embeddingLabel": "ការបង្កប់", "vectorStoreLabel": "ឃ្លាំងវ៉ិចទ័រ", "qdrantLabel": "Qdrant", "rerankLabel": "តម្រៀបចំណាត់ថ្នាក់ឡើងវិញ", @@ -4650,7 +4650,7 @@ "uptime": "រយៈពេលដំណើរការ", "memory": "អង្គចងចាំ", "memoryRss": "អង្គចងចាំ (RSS)", - "heap": "Heap", + "heap": "ហ៊ីប", "cpu": "CPU", "database": "មូលដ្ឋានទិន្នន័យ", "version": "កំណែ", @@ -5210,7 +5210,7 @@ "selectProvider": "ជ្រើសរើសអ្នកផ្តល់សេវា", "selectedProvider": "អ្នកផ្តល់សេវាដែលបានជ្រើសរើស", "authMethod": "វិធីសាស្ត្រផ្ទៀងផ្ទាត់អត្តសញ្ញាណ", - "apiKeyLabel": "API Key", + "apiKeyLabel": "សោ API", "apiKeyRequired": "តម្រូវឱ្យមាន API Key", "selectProviderRequired": "សូមជ្រើសរើសអ្នកផ្តល់សេវា", "enterApiKey": "បញ្ចូល API Key របស់អ្នក", @@ -5555,7 +5555,7 @@ "compatUpstreamHeaderValue": "តម្លៃ", "compatUpstreamAddRow": "បន្ថែម header", "compatUpstreamRemoveRow": "លុបជួរ", - "compatBadgeUpstreamHeaders": "Headers", + "compatBadgeUpstreamHeaders": "បឋមកថា", "perModelQuotaLabel": "កូតាតាមម៉ូដែល", "perModelQuotaDescription": "នៅពេលបើកដំណើរការ កំហុស 429/404 នឹងចាក់សោតែម៉ូដែលជាក់លាក់ប៉ុណ្ណោះ មិនមែនការតភ្ជាប់ទាំងមូលទេ។ ប្រើសម្រាប់អ្នកផ្តល់សេវាដែលមានដែនកំណត់អត្រាតាមម៉ូដែល (ឧ. ModelScope)។", "importFreeModelsOnlyLabel": "នាំចូលតែម៉ូដែលឥតគិតថ្លៃ", @@ -5804,7 +5804,7 @@ "ccCompatibleLabel": "ឆបគ្នាជាមួយ CC", "ccCompatibleModelsDescription": "Relay ដែលឆបគ្នាជាមួយ CC មិនបង្ហាញបញ្ជីម៉ូដែលទេ។ បន្ថែម ID ម៉ូដែល Claude ដែល relay របស់អ្នកទទួលយក។", "ccCompatibleNameHint": "ឈ្មោះបង្ហាញសម្រាប់ relay ដែលប្រើតែជាមួយ Claude Code នេះ។", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay ផលិតកម្ម", "ccCompatiblePrefixHint": "ប្រើនៅក្នុងឈ្មោះក្លែងក្លាយរបស់ម៉ូដែល ដូចជា prefix/model-id។", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "ប្រើអ្នកផ្ដល់សេវានេះសម្រាប់តែ relay ដែលបម្រើអតិថិជន Claude Code ផ្ដាច់មុខប៉ុណ្ណោះ។ OmniRoute សរសេរសំណើចូលណាមួយឡើងវិញទៅជាទម្រង់បញ្ជូនទិន្នន័យដែលឆបគ្នាជាមួយ Claude Code ដើម្បីឱ្យ relay ទាំងនោះទទួលយកវា។ ប្រសិនបើអ្នកគ្រាន់តែចង់ប្រើ Claude Code CLI ឬមិនប្រាកដថាប្រភេទ relay នេះមានន័យដូចម្ដេច សូមប្រើអ្នកផ្ដល់សេវាធម្មតាដែលឆបគ្នាជាមួយ Anthropic ជំនួសវិញ។", @@ -5901,7 +5901,7 @@ "perplexitySearchSharedKeyInfo": "ព័ត៌មានអំពី Key រួមសម្រាប់ Perplexity Search", "perplexityWebCookieHint": "ព័ត៌មានជំនួយអំពី Web Cookie របស់ Perplexity", "perplexityWebCookiePlaceholder": "អត្ថបទជំនួសសម្រាប់ Web Cookie របស់ Perplexity", - "personalAccessTokenLabel": "Personal Access Token", + "personalAccessTokenLabel": "ថូខឹនចូលប្រើផ្ទាល់ខ្លួន", "qoderPatHint": "បិទភ្ជាប់ Qoder Personal Access Token (PAT) របស់អ្នក។ បង្កើតវាពី Qoder → Settings → Personal Access Tokens។", "qoderPatPlaceholder": "Qoder personal access token របស់អ្នក", "rateLimitOverridesSection": "ការកំណត់ជំនួសដែនកំណត់អត្រា", @@ -6367,15 +6367,15 @@ "checkWebToken": "ពិនិត្យ token", "huggingchatLabel": "HuggingChat (ឥតគិតថ្លៃ)", "huggingchatDesc": "ការជជែកជាមួយ LLM ដោយឥតគិតថ្លៃតាមរយៈ huggingface.co/chat", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe វេប", "poeWebDesc": "ការជជែកជាមួយម៉ូដែលច្រើនតាមរយៈ poe.com", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "វេនីស វេប", "veniceWebDesc": "ការជជែកជាមួយ AI ដែលផ្តោតលើភាពឯកជន", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel គេហទំព័រ", "v0VercelWebDesc": "ការបង្កើតកូដដោយ AI តាមរយៈ v0.dev", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi វេប", "kimiWebDesc": "ការជជែក AI សម្រាប់អ្នកប្រើប្រាស់របស់ Moonshot AI តាមរយៈ www.kimi.com (អន្តរជាតិ, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola វេប", "doubaoWebDesc": "ការជជែក AI របស់ ByteDance តាមរយៈ dola.com", "overrideBaseUrlAdvanced": "កម្រិតខ្ពស់៖ កំណត់ base URL ជំនួស", "overrideBaseUrlHint": "កម្រិតខ្ពស់៖ កំណត់ឱ្យ provider ដែលភ្ជាប់មកជាមួយនេះប្រើ endpoint ផ្ទាល់ខ្លួន។ ទុកឱ្យទទេ ដើម្បីប្រើតម្លៃលំនាំដើម។", @@ -6530,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "លុបកថាខណ្ឌដែលមាន៖ {items}", "routingSummarizeDropParagraphStartsWith": "លុបកថាខណ្ឌដែលចាប់ផ្ដើមដោយ៖ {items}", "routingSummarizeReplaceText": "ជំនួស \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "កន្សោម regex /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "លុបប្លុកដែលមាន៖ {items}", "routingSummarizePrependSystemBlock": "បន្ថែមប្លុកនៅខាងដើម៖ \"{text}\"", "routingSummarizeAppendSystemBlock": "បន្ថែមប្លុកនៅខាងចុង៖ \"{text}\"", @@ -6749,11 +6749,11 @@ "themeSystem": "ប្រព័ន្ធ", "endpointTunnelVisibility": "ភាពមើលឃើញនៃធ្យូនែល Endpoint", "endpointTunnelVisibilityDesc": "លាក់វត្ថុបញ្ជាធ្យូនែលពីទំព័រ Endpoint ដោយមិនផ្លាស់ប្ដូរស្ថានភាពធ្យូនែល។", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "ផ្លូវរូងរហ័ស Cloudflare", "showCloudflareTunnelDesc": "បង្ហាញការគ្រប់គ្រង Cloudflare Quick Tunnel នៅលើទំព័រ Endpoint។", "showTailscaleFunnel": "Tailscale Funnel", "showTailscaleFunnelDesc": "បង្ហាញការគ្រប់គ្រង Tailscale Funnel នៅលើទំព័រ Endpoint។", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "ធ្យូនែល ngrok", "showNgrokTunnelDesc": "បង្ហាញការគ្រប់គ្រង ngrok Tunnel នៅលើទំព័រ Endpoint។", "sidebarVisibility": "លាក់ធាតុរបារចំហៀង", "sidebarVisibilityDesc": "លាក់ធាតុរុករកណាមួយនៅក្នុងរបារចំហៀង ដើម្បីកាត់បន្ថយភាពរញ៉េរញ៉ៃ ដោយមិនបិទមុខងារណាមួយឡើយ", @@ -7056,7 +7056,7 @@ "routingAdvancedGuideTitle": "ការណែនាំកំណត់ផ្លូវកម្រិតខ្ពស់", "routingAdvancedGuideHint1": "យុទ្ធសាស្ត្រនេះត្រូវបានធ្វើសមកាលកម្មទាំងទៅលំនាំដើមនៃបន្សំថ្មី និងការកំណត់ផ្លូវបម្រុងសកលរបស់គណនី។", "routingAdvancedGuideHint2": "ប្រើ Fill First សម្រាប់អាទិភាពគណនីដែលអាចព្យាករបាន, Round Robin ជាមួយ Sticky Limit សម្រាប់ក្រុមគណនី និង P2C សម្រាប់ភាពធន់នឹងភាពយឺតយ៉ាវ។", - "fillFirst": "Fill First", + "fillFirst": "បំពេញមុន", "fillFirstDesc": "ប្រើគណនីតាមលំដាប់អាទិភាព", "roundRobin": "Round Robin", "roundRobinDesc": "ប្ដូរវេនឆ្លងកាត់គណនីទាំងអស់", @@ -7078,9 +7078,9 @@ "stickyLimitDesc": "ចំនួនការហៅក្នុងមួយគណនី មុននឹងប្តូរ នៅពេលការបម្រុងគណនីសកលប្រើ Round Robin", "routingStrategyTitle": "យុទ្ធសាស្ត្រកំណត់ផ្លូវ", "routingStrategySubtitle": "ផ្គូផ្គង 9router៖ Round Robin សម្រាប់គណនី កម្រិតរក្សាភ្ជាប់ និងការបង្វិលបន្សំ", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "ប្ដូរវេនជុំ", "accountRoundRobinDesc": "បង្វិលតាមគណនី ដើម្បីចែកចាយបន្ទុក", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "បន្សំប្ដូរវេនជុំ", "comboRoundRobinDesc": "បង្វិលតាមគោលដៅបន្សំ ជំនួសឱ្យការចាប់ផ្តើមពីគោលដៅទីមួយជានិច្ច", "comboStickyLimit": "កម្រិតរក្សាភ្ជាប់នៃបន្សំ", "comboStickyLimitDesc": "ចំនួនការហៅក្នុងមួយគោលដៅបន្សំ មុននឹងប្តូរ", @@ -7380,7 +7380,7 @@ "customPricingNote": "អ្នកអាចកំណត់តម្លៃផ្ទាល់ខ្លួនជំនួសតម្លៃលំនាំដើមសម្រាប់ម៉ូដែលជាក់លាក់។ តម្លៃកំណត់ផ្ទាល់ខ្លួនមានអាទិភាពលើតម្លៃដែលបានរកឃើញដោយស្វ័យប្រវត្តិ។", "editPricing": "កែសម្រួលតម្លៃ", "viewFullDetails": "មើលព័ត៌មានលម្អិតទាំងអស់", - "themeCoral": "Coral", + "themeCoral": "ផ្កាថ្ម", "adaptiveVolumeRouting": "ការកំណត់ផ្លូវតាមបរិមាណដោយសម្របខ្លួន", "adaptiveVolumeRoutingDesc": "ពង្រីក ឬបន្ថយការតភ្ជាប់ដោយថាមវន្ត ផ្អែកលើបរិមាណ payload និងសម្ពាធ throughput។", "lkgpToggleTitle": "អ្នកផ្តល់សេវាល្អចុងក្រោយដែលបានស្គាល់ (LKGP)", @@ -7885,7 +7885,7 @@ "description": "ការដាក់ពិន្ទុប្រយោគបែបស្រង់ចេញ ដោយផ្អែកលើសំណួរចុងក្រោយរបស់អ្នកប្រើ។" }, "caveman": { - "label": "Caveman", + "label": "មនុស្សរូងភ្នំ", "description": "ការបង្ហាប់អត្ថបទដោយផ្អែកលើច្បាប់។" }, "aggressive": { @@ -8000,11 +8000,11 @@ "responsesStateModePreserve": "រក្សាទុក", "responsesStateHint": "Auto នឹងដក previous_response_id ចេញ លុះត្រាតែការតភ្ជាប់មួយបើកការផ្ទុក OpenAI Responses ដោយជាក់លាក់។ ការដកចេញមានសុវត្ថិភាពបំផុតសម្រាប់កម្មវិធីអតិថិជនដែលមិនរក្សាស្ថានភាព ដូចជា VS Code Custom Endpoint; បន្ទាប់មក បរិបទអាស្រ័យលើកម្មវិធីអតិថិជនដែលផ្ញើប្រវត្តិពេញលេញ។", "responsesStateSaveError": "មិនអាចធ្វើបច្ចុប្បន្នភាពការកំណត់ស្ថានភាព Responses បានទេ", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "កម្រិតល្បឿនលឿន Codex", "codexFastTierDesc": "បញ្ចូល service_tier=priority ជាសកលសម្រាប់សំណើ OpenAI Codex។", "codexFastTierHint": "នៅពេលបើក OmniRoute នឹងបន្ថែម service_tier=priority ទៅសំណើ Codex ដែលផ្ញើចេញ សម្រាប់ការតភ្ជាប់ដែលមិនទាន់បញ្ជាក់កម្រិតសេវា។ កម្រិត Priority តម្រូវឱ្យមាន OpenAI Enterprise API key ឬផ្លូវ Codex ដែលផ្ទៀងផ្ទាត់តាម ChatGPT; ប្រភេទ key ផ្សេងទៀតនឹងទទួលបានកំហុសទាក់ទងនឹងកម្រិតសេវាពី OpenAI។ ការកំណត់តាមការតភ្ជាប់នីមួយៗនៅលើទំព័រអ្នកផ្តល់សេវា Codex មានអាទិភាពជាង។", "codexFastTierSaveError": "មិនអាចធ្វើបច្ចុប្បន្នភាពការកំណត់ Codex Fast Tier បានទេ", - "codexAutoPingTitle": "Codex Quota Auto-Ping", + "codexAutoPingTitle": "ការពិនិត្យកូតា Codex ដោយស្វ័យប្រវត្តិ", "codexAutoPingDesc": "ជ្រើសរើសបើកតាមការតភ្ជាប់នីមួយៗ៖ ផ្ញើសំណើតូចមួយភ្លាមៗ បន្ទាប់ពីចន្លោះសម័យកូតា Codex កំណត់ឡើងវិញ ដើម្បីកុំឱ្យវានៅស្ថានភាពត្រជាក់នៅពេលអ្នកត្រូវការវា។", "codexAutoPingWarning": "ប្រើប្រាស់កូតា Codex ពិតប្រាកដមួយចំនួនតូចរាល់ពេល ping។ បិទតាមលំនាំដើម — បើកតែសម្រាប់ការតភ្ជាប់ដែលអ្នកពឹងផ្អែកយ៉ាងសកម្មប៉ុណ្ណោះ។", "codexAutoPingSaveError": "មិនអាចធ្វើបច្ចុប្បន្នភាពការកំណត់ Codex Auto-Ping បានទេ", @@ -8016,7 +8016,7 @@ "codexFastTierModelsLabel": "ម៉ូដែល Fast-tier", "codexFastTierModelsHint": "មានតែម៉ូដែលដែលបានធីកប៉ុណ្ណោះដែលទទួល service_tier នៅពេលបើក Fast Tier។", "codexFastTierModelCheckbox": "បើក Fast Tier សម្រាប់ {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "របៀបល្បឿនលឿន Claude", "claudeFastModeDesc": "បញ្ចូលសំណើ Claude ដែលបានជ្រើសរើសទៅក្នុង Anthropic Fast Mode (speed:\"fast\")។", "claudeFastModeHint": "Anthropic មិនគាំទ្រ Fast Mode ជាផ្លូវការសម្រាប់កម្មវិធីអតិថិជនបែប SDK ទេ។ នៅពេលបើក OmniRoute នឹងបញ្ជូនបន្ត header X-CPA-Force-Fast-Mode ដើម្បីឱ្យ CLIProxyAPI build ដែលបានផ្គូផ្គង អាចជ្រើសរើសបន្លំ entrypoint។ មានតែម៉ូដែល Opus ដែលបានរាយបញ្ជីប៉ុណ្ណោះដែលត្រូវបានកំហិតដោយការត្រួតពិនិត្យនៅផ្នែកកម្មវិធីអតិថិជនរបស់ Anthropic។ កម្រិតការជាវ គម្រោង Max និងសមតុល្យឥណទាន Fast Mode នៅតែត្រូវបានអនុវត្តនៅផ្នែកម៉ាស៊ីនបម្រើ — Anthropic អាចត្រឡប់ out_of_credits ទោះបីជាប៊ូតុងបិទ/បើកស្ថិតនៅស្ថានភាពបើកក៏ដោយ។", "claudeFastModeModelsLabel": "បានអនុវត្តទៅលើម៉ូដែល ({count})", @@ -8085,7 +8085,7 @@ "remove": "ដកចេញ" }, "resilienceBaseCooldownLabel": "រយៈពេល cooldown មូលដ្ឋាន", - "scopeLabel": "Scope", + "scopeLabel": "វិសាលភាព", "triggerLabel": "កត្តាបង្ក", "effectLabel": "ផលប៉ះពាល់", "statusEnabled": "បានបើក", @@ -8272,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge បានផ្លាស់ទី", "modalityBridgeMovedBody": "ឥឡូវនេះ ការកំណត់ Vision Bridge ស្ថិតនៅក្នុងទំព័រ Modality Bridge ដាច់ដោយឡែក។", "modalityBridgeMovedCta": "បើកការកំណត់ Modality Bridge", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "ស្ពានអូឌីយ៉ូ", "modalityBridgeAudioDesc": "ចម្លងសំឡេងទៅជាអត្ថបទដោយប្រើម៉ូដែលបម្លែងសំឡេងនិយាយទៅជាអត្ថបទ មុនពេលបន្តជាមួយម៉ូដែលអត្ថបទដែលបានជ្រើសរើស។", "modalityBridgeAudioEnabled": "បើក Audio Bridge", "modalityBridgeAudioEnabledDesc": "ជំនួសផ្នែកសំឡេងដោយអត្ថបទចម្លង នៅពេលម៉ូដែលគោលដៅមិនអាចដំណើរការសំឡេងបាន។", @@ -8284,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge ដំណើរការល្អ — ឃ្លីបចំនួន {count} ត្រូវបានចម្លងជាអត្ថបទដោយ {model}", "modalityBridgeAudioTestNoop": "Audio Bridge មិនបានដំណើរការទេ (គោលដៅអាចគាំទ្រសំឡេង គ្មានអ្នកផ្តល់សេវា STT ត្រូវបានភ្ជាប់ ឬ Bridge ត្រូវបានបិទ)", "modalityBridgeAudioTestError": "ការសាកល្បងសំឡេងបានបរាជ័យ៖ {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "ស្ពានវីដេអូ", "modalityBridgeVideoDesc": "យកស៊ុមគំរូពីវីដេអូ ពិពណ៌នាស៊ុមទាំងនោះដោយប្រើម៉ូដែលមើលឃើញ ហើយបន្តជាមួយម៉ូដែលអត្ថបទដែលបានជ្រើសរើស។", "modalityBridgeVideoRuntimeReady": "Runtime រួចរាល់", "modalityBridgeVideoRuntimeChecking": "កំពុងពិនិត្យ Runtime…", @@ -8502,11 +8502,11 @@ }, "engines": { "headroom": { - "name": "Headroom SmartCrusher", + "name": "ចន្លោះកម្រិត SmartCrusher", "description": "ការបង្រួមទិន្នន័យតារាងដោយមិនបាត់បង់ សម្រាប់អារេ JSON ដែលមានលក្ខណៈដូចគ្នា ជាមួយសញ្ញាសម្គាល់ចំនួនជួរដេកច្បាស់លាស់។" }, "session-dedup": { - "name": "Session Dedup", + "name": "ការលុបស្ទួនក្នុងសម័យ", "description": "ការលុបភាពស្ទួននៃប្លុកឆ្លងវេន ជាមួយសញ្ញាសម្គាល់មាតិកាដែលអាចស្ដារឡើងវិញបាន។" }, "ccr": { @@ -9177,7 +9177,7 @@ "comboRouted": "បានកំណត់ផ្លូវតាម Combo", "uniqueEndpoints": "ចំណុចបញ្ចប់មិនស្ទួន", "routeDetails": "ព័ត៌មានលម្អិតអំពីផ្លូវ", - "comboBadge": "Combo", + "comboBadge": "បន្សំ", "routeEndpointLabel": "ចំណុចបញ្ចប់", "routeConnectionLabel": "ការតភ្ជាប់", "scenarioVision": "ចក្ខុវិស័យ (ការយល់ដឹងអំពីរូបភាព)", @@ -9302,7 +9302,7 @@ "loadingBudgetData": "កំពុងផ្ទុកទិន្នន័យថវិកា...", "noApiKeysTitle": "គ្មាន API Keys", "noApiKeysDescription": "សូមបន្ថែម API keys ជាមុនសិន ដើម្បីកំណត់ដែនកំណត់ថវិកា។", - "apiKey": "API Key", + "apiKey": "សោ API", "todaysSpend": "ការចំណាយថ្ងៃនេះ", "thisMonth": "ខែនេះ", "setLimits": "កំណត់ដែនកំណត់", @@ -9343,7 +9343,7 @@ "evaluateStepDescription": "ការឆ្លើយតបត្រូវបានប្រៀបធៀបនឹងលក្ខណៈវិនិច្ឆ័យដែលរំពឹងទុក។ មើលលទ្ធផលជាប់/ធ្លាក់សម្រាប់ករណីនីមួយៗ ព្រមទាំងរង្វាស់រយៈពេលពន្យារ និងមតិកែលម្អលម្អិត។", "evalsStrategyContainsLabel": "មានផ្ទុក", "evalsStrategyExactLabel": "ផ្គូផ្គងពិតប្រាកដ", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "កន្សោមទៀងទាត់", "evalsStrategyCustomLabel": "តក្កវិជ្ជាផ្ទាល់ខ្លួន", "evalsStrategyContainsDescription": "ពិនិត្យថាតើលទ្ធផល LLM មានផ្ទុកខ្សែអក្សររងដែលរំពឹងទុកឬអត់។", "evalsStrategyExactDescription": "ពិនិត្យថាតើលទ្ធផល LLM ផ្គូផ្គងពិតប្រាកដនឹងតម្លៃដែលរំពឹងទុកឬអត់។", @@ -9472,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "ឥតគិតថ្លៃ", - "tierLite": "Lite", + "tierLite": "ស្រាល", "tierUnknown": "មិនស្គាល់", "statTotal": "សរុប", "statCritical": "ធ្ងន់ធ្ងរ", @@ -9562,7 +9562,7 @@ "suiteBuilderCaseModelPlaceholder": "ឧ. gpt-4o-mini", "evalControlsHint": "កំណត់រចនាសម្ព័ន្ធគោលដៅវាយតម្លៃ និង API key របស់អ្នក បន្ទាប់មកដំណើរការឈុតសាកល្បង ដើម្បីផ្ទៀងផ្ទាត់គុណភាពម៉ូដែល។", "recentRunsTitle": "ការដំណើរការថ្មីៗ", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", + "suiteBuilderCaseSystemPromptLabel": "ពាក្យបញ្ជាប្រព័ន្ធ", "suiteBuilderCaseExpectedPlaceholder": "ឧ. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "ឧ. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "បិទភ្ជាប់ចម្លើយដែលរំពឹងទុកឱ្យបានត្រឹមត្រូវដូចដើម", @@ -9576,7 +9576,7 @@ "weeklyLimitUsd": "ដែនកំណត់ប្រចាំសប្ដាហ៍ (USD)", "suiteBuilderCaseUserPromptPlaceholder": "ឧ. សរសេរអនុគមន៍ fibonacci ជា Python", "suiteBuilderNameRequired": "តម្រូវឱ្យមានឈ្មោះឈុត", - "suiteBuilderCaseUserPromptLabel": "User Prompt", + "suiteBuilderCaseUserPromptLabel": "ពាក្យបញ្ជាអ្នកប្រើ", "daily": "ប្រចាំថ្ងៃ", "resultErrorLabel": "កំហុស", "suiteBuilderBuiltInBadge": "មានស្រាប់", @@ -9970,7 +9970,7 @@ "howItWorksDescription": "ទិន្នន័យហូរដោយរលូនពីកម្មវិធីរបស់អ្នក កាត់តាមស្រទាប់កំណត់ផ្លូវឆ្លាតវៃរបស់យើង ទៅកាន់អ្នកផ្តល់សេវាដែលស័ក្តិសមបំផុតសម្រាប់កិច្ចការនោះ។", "howItWorksStep1Title": "1. CLI និង SDKs", "howItWorksStep1Description": "សំណើរបស់អ្នកចាប់ផ្ដើមពីឧបករណ៍ដែលអ្នកពេញចិត្ត ឬ SDK រួមរបស់យើង។ គ្រាន់តែប្ដូរ URL មូលដ្ឋាន។", - "howItWorksStep2Title": "2. OmniRoute Hub", + "howItWorksStep2Title": "2. មជ្ឈមណ្ឌល OmniRoute", "howItWorksStep2Description": "ម៉ាស៊ីនរបស់យើងវិភាគប្រូម បន្ទាប់មកពិនិត្យស្ថានភាពអ្នកផ្តល់សេវា និងកំណត់ផ្លូវដើម្បីទទួលបានភាពយឺត ឬចំណាយទាបបំផុត។", "howItWorksStep3Title": "3. អ្នកផ្តល់សេវា AI", "howItWorksStep3Description": "សំណើត្រូវបានបំពេញភ្លាមៗដោយ OpenAI, Anthropic, Gemini ឬអ្នកផ្តល់សេវាផ្សេងទៀត។", @@ -10043,7 +10043,7 @@ "managementApiReference": "ឯកសារយោង Management API", "managementApiDescription": "Endpoint ស្វ័យប្រវត្តិកម្មសម្រាប់បញ្ជីឈ្មោះ Proxy ការកំណត់វិសាលភាព និងការផ្ទេរ Proxy ចាស់។", "method": "វិធីសាស្ត្រ", - "path": "Path", + "path": "ផ្លូវ", "notes": "កំណត់ចំណាំ", "modelPrefixes": "បុព្វបទម៉ូដែល", "prefix": "បុព្វបទ", @@ -10104,7 +10104,7 @@ "providersCount": "ក្រុមហ៊ុនផ្តល់សេវា {count}", "providerTypeFree": "កម្រិតឥតគិតថ្លៃ", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "សោ API", "useCaseSingleEndpointTitle": "ចំណុចចុងតែមួយសម្រាប់ក្រុមហ៊ុនផ្តល់សេវាច្រើន", "useCaseSingleEndpointText": "កំណត់អតិថិជនឱ្យប្រើ URL មូលដ្ឋានតែមួយ ហើយកំណត់ផ្លូវតាមបុព្វបទម៉ូដែល (ឧទាហរណ៍៖ gh/, cc/, kr/, openai/)។", "useCaseFallbackTitle": "ការប្តូរទៅជម្រើសបម្រុង និងការប្តូរម៉ូដែលដោយប្រើបន្សំ", @@ -10216,7 +10216,7 @@ "mcpToolsCacheDesc": "មើលស្ថិតិ cache និងសម្អាត semantic cache ឬ signature cache។", "mcpToolsCompressionTitle": "ម៉ាស៊ីនបង្ហាប់", "mcpToolsCompressionDesc": "កំណត់រចនាសម្ព័ន្ធការបង្ហាប់ RTK/Brotli ប្តូរម៉ាស៊ីន និងពិនិត្យការវិភាគការបង្ហាប់តាម combo។", - "mcpToolsOneProxyTitle": "1Proxy / Tunnels", + "mcpToolsOneProxyTitle": "1ប្រូកស៊ី / ផ្លូវរូង", "mcpToolsOneProxyDesc": "គ្រប់គ្រង proxy ចេញ បង្វិល IP លំនៅឋាន និងពិនិត្យសុខភាព proxy។", "mcpToolsMemoryTitle": "អង្គចងចាំ", "mcpToolsMemoryDesc": "ស្វែងរក បន្ថែម និងសម្អាតធាតុអង្គចងចាំការសន្ទនាអចិន្ត្រៃយ៍។", @@ -10442,7 +10442,7 @@ "noTasksTitle": "មិនទាន់មានកិច្ចការទេ", "noTasksDesc": "បង្កើតកិច្ចការដំបូងរបស់អ្នកដើម្បីចាប់ផ្តើម។", "tasksTab": "កិច្ចការ", - "agentsTab": "Agents", + "agentsTab": "ភ្នាក់ងារ", "settingsTab": "ការកំណត់", "agentsEnabled": "បានបើក", "agentsDisabled": "បានបិទ", @@ -10702,7 +10702,7 @@ "password": "ពាក្យសម្ងាត់", "passwordPlaceholder": "ពាក្យសម្ងាត់", "connected": "បានតភ្ជាប់", - "ip": "IP:", + "ip": "IP៖", "connectionFailed": "ការតភ្ជាប់បានបរាជ័យ", "testConnection": "សាកល្បងការតភ្ជាប់", "clear": "សម្អាត", @@ -10767,7 +10767,7 @@ "errorImportAccessToken": "មិនអាចនាំចូល access token បានទេ", "errorSessionNotInitialized": "សម័យ OAuth មិនទាន់ត្រូវបានចាប់ផ្តើមទេ។ សូមចាប់ផ្តើមដំណើរការតភ្ជាប់ឡើងវិញ ហើយព្យាយាមម្តងទៀត។", "errorNoAuthorizationCode": "រកមិនឃើញកូដអនុញ្ញាតទេ។ សូមបិទភ្ជាប់ callback URL ឬ Authentication Code។", - "tabDeviceCode": "Device Code", + "tabDeviceCode": "កូដឧបករណ៍", "tabBrowserLogin": "ចូលគណនីតាមកម្មវិធីរុករក", "tabImportAuthJson": "នាំចូល auth.json", "tabPasteApiKey": "បិទភ្ជាប់ API Key", @@ -10776,7 +10776,7 @@ "devinDesktopPasteDescription": "ផ្តល់ Devin API key ដែលមានស្រាប់ពីសម័យ Devin ដែលបានផ្ទៀងផ្ទាត់។ លទ្ធភាពនៃការនាំចេញ key និងជំហានអនុវត្តអាស្រ័យលើកំណែ Devin និងគណនី។", "devinPasteDescription": "ផ្តល់ WINDSURF_API_KEY របស់អ្នក (ទទួលបានតាមរយៈ `devin auth login` ឬតាមរយៈពាក្យបញ្ជា \"Windsurf: Provide Auth Token\" ក្នុង Windsurf IDE)។", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json របស់ Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "សោ API / ថូខិន", "saving": "កំពុងរក្សាទុក…", @@ -10968,9 +10968,9 @@ "strategyLatency": "បង្កើនប្រសិទ្ធភាពតាមភាពយឺតយ៉ាវ", "poolMembersLabel": "សមាជិកក្រុម ({count})", "poolNoMembers": "មិនទាន់មានប្រូកស៊ីនៅក្នុងក្រុមនេះទេ។", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "បានប្រើច្រកចេញ {exits, plural, one {#} other {#}} ដោយការតភ្ជាប់ {connections, plural, one {#} other {#}} · អតិបរមា {max} នៅលើច្រកចេញមួយ · ក្នុងរយៈពេល {hours} ម៉ោងចុងក្រោយ", + "poolEgressObservationEmpty": "មិនបានសង្កេតឃើញចរាចរណ៍ក្នុងរយៈពេល {hours} ម៉ោងចុងក្រោយទេ", + "poolEgressObservationHint": "រាប់ពីកំណត់ហេតុប្រូកស៊ីក្នុងអំឡុងពេលកំណត់៖ អាសយដ្ឋាន IP ចេញផ្សេងៗគ្នាដែលបានសង្កេតឃើញសម្រាប់សមាជិកនៃក្រុមនេះ និងការតភ្ជាប់ OmniRoute ដែលបានប្រើពួកវា។ «នៅលើច្រកចេញមួយ» មានន័យថាក្នុងអំឡុងពេលកំណត់ មិនមែននៅពេលតែមួយទេ។ ការចាក់សោ 429 សម្រាប់ IP នីមួយៗ ផ្អាកតែការតភ្ជាប់នៃគ្រួសារអ្នកផ្តល់សេវាដូចគ្នាប៉ុណ្ណោះ។", "poolRemove": "ដកចេញ", "poolRemoveFailed": "បានបរាជ័យក្នុងការដកប្រូកស៊ីចេញពីក្រុម", "poolAddLabel": "បន្ថែមប្រូកស៊ី", @@ -10982,7 +10982,7 @@ "playground": { "title": "កន្លែងសាកល្បងម៉ូដែល", "description": "សាកល្បងម៉ូដែលណាមួយដោយផ្ទាល់ពីផ្ទាំងគ្រប់គ្រង។ ជ្រើសរើសអ្នកផ្តល់សេវា ម៉ូដែល និងប្រភេទ endpoint រួចផ្ញើសំណើដើម្បីមើលការឆ្លើយតបដើម។", - "endpoint": "Endpoint", + "endpoint": "ចំណុចបញ្ចប់", "provider": "អ្នកផ្តល់សេវា", "model": "ម៉ូដែល", "accountKey": "គណនី / សោ", @@ -11186,8 +11186,8 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", - "apiKey": "API Key", + "endpoint": "ចំណុចបញ្ចប់", + "apiKey": "សោ API", "model": "ម៉ូដែល", "voice": "សំឡេង", "speed": "ល្បឿន", @@ -11273,7 +11273,7 @@ "ok": "ជោគជ័យ", "err": "កំហុស", "combo": "បន្សំ", - "keys": "Keys", + "keys": "សោ", "shown": "បានបង្ហាញ", "sortNewest": "ថ្មីបំផុត", "sortOldest": "ចាស់បំផុត", @@ -11388,7 +11388,7 @@ "endedAt": "បានបញ្ចប់នៅ", "duration": "រយៈពេល", "model": "ម៉ូដែល", - "provider": "Provider", + "provider": "អ្នកផ្តល់សេវា", "account": "គណនី", "input": "ទិន្នន័យបញ្ចូល", "totalIn": "សរុបចូល៖ {value}", @@ -11404,7 +11404,7 @@ "modelPinning": "ការភ្ជាប់ម៉ូដែលថេរ", "activeModelPinning": "សកម្ម — ម៉ូដែលត្រូវបានជ្រើសរើសតាមរយៈការភ្ជាប់ថេរនៃសម័យ", "rotated": "បានប្តូរវេន៖ {initial} -> {final}", - "apiKey": "API Key", + "apiKey": "សោ API", "noApiKey": "គ្មាន API key", "combo": "បន្សំ", "error": "កំហុស", @@ -11556,7 +11556,7 @@ "title": "ការចែករំលែកកូតា", "description": "ចែករំលែកកូតារបស់អ្នកផ្តល់សេវារវាងកូនសោ API ដោយកំណត់ដែនកំណត់ជា %", "newPool": "ពូលថ្មី", - "betaTitle": "Beta", + "betaTitle": "បេតា", "betaDescription": "ការកំណត់រចនាសម្ព័ន្ធត្រូវបានរក្សាទុកក្នុង localStorage (មិនទាន់រក្សាទុកជាអចិន្ត្រៃយ៍នៅលើម៉ាស៊ីនមេនៅឡើយទេ)។ ការអនុវត្តដែនកំណត់ក្នុងមួយសំណើមិនទាន់ត្រូវបានភ្ជាប់ទៅក្នុងខ្សែដំណើរការ proxy នៅឡើយទេ។ អេក្រង់នេះអនុញ្ញាតឱ្យអ្នករចនា និងមើលឃើញការបែងចែកកូតា។ ការអនុវត្តជាក់ស្តែងនឹងមាននៅក្នុងកំណែនាពេលអនាគត ដោយមានការរក្សាទុកជាអចិន្ត្រៃយ៍ក្នុង DB និងការស្ទាក់ចាប់ការហៅទៅប្រភពខាងលើ។", "kpiActivePools": "ពូលសកម្ម", "kpiKeysAllocated": "កូនសោដែលបានបែងចែក", @@ -11678,7 +11678,7 @@ "endpointsBaseUrl": "URL មូលដ្ឋាន", "endpointsCollapse": "បង្រួម", "endpointsExpand": "ពង្រីក", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-ដើម", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — សម្រាប់តែ codex", "betaText": "ការចែករំលែកកូតាអាចប្រើបាន ប៉ុន្តែអាចមានកំហុស។ ប្រទះឃើញកំហុសមួយមែនទេ? សូមរាយការណ៍វា។", @@ -11736,7 +11736,7 @@ "verified": "បានផ្ទៀងផ្ទាត់", "install": "ដំឡើង", "installedFromMarketplace": "បានដំឡើងកម្មវិធីជំនួយ {name}!", - "hooks": "Hooks" + "hooks": "ហ៊ុក" }, "quotaPlans": { "title": "គម្រោង និងកូតា", @@ -12224,7 +12224,7 @@ "versionNotFound": "រកមិនឃើញ", "manualConfig": "ការកំណត់រចនាសម្ព័ន្ធដោយដៃ", "installGuide": "មគ្គុទ្ទេសក៍ដំឡើង", - "endpointLabel": "Endpoint", + "endpointLabel": "ចំណុចបញ្ចប់", "baseUrlFull": "Base URL ពេញលេញ", "baseUrlPartial": "URL មូលដ្ឋានមួយផ្នែក", "refreshDetection": "រកឃើញឡើងវិញ", @@ -12241,7 +12241,7 @@ "detectionStatus": "ការរកឃើញ", "configStatus": "ការកំណត់រចនាសម្ព័ន្ធ", "baseUrlLabel": "URL មូលដ្ឋាន", - "apiKeyLabel": "API Key", + "apiKeyLabel": "សោ API", "modelMappingLabel": "ការផ្គូផ្គងម៉ូដែល", "noActiveProviders": "មិនមានអ្នកផ្តល់សេវាដែលសកម្មទេ។", "noActiveProvidersDesc": "ចូលទៅ Providers ដើម្បីភ្ជាប់អ្នកផ្តល់សេវាយ៉ាងហោចណាស់ 1 មុនពេលកំណត់រចនាសម្ព័ន្ធ CLI។", @@ -12298,7 +12298,7 @@ "addAgent": "បន្ថែមភ្នាក់ងារ", "agentName": "ឈ្មោះ", "agentNamePlaceholder": "ឧទាហរណ៍៖ My Agent", - "binaryName": "Binary", + "binaryName": "ឯកសារគោលពីរ", "binaryNamePlaceholder": "ឧទាហរណ៍៖ myagent", "versionCommand": "ពាក្យបញ្ជាបង្ហាញកំណែ", "versionCommandPlaceholder": "ឧទាហរណ៍៖ myagent --version", @@ -12325,7 +12325,7 @@ "description": "បង្កើត និងគ្រប់គ្រងបន្សំការកំណត់ផ្លូវដោយប្រើយុទ្ធសាស្ត្រ 14 ប្រភេទ (អាទិភាព មានទម្ងន់ round-robin, Auto-combo ជាដើម)។ កំណត់រចនាសម្ព័ន្ធខ្សែសង្វាក់ជំនួស ធ្វើតេស្តលទ្ធផលនៃការកំណត់ផ្លូវ និងទាញយករង្វាស់វាស់វែងរបស់បន្សំ។" }, "omni-api-keys": { - "name": "API Keys", + "name": "សោ API", "description": "បង្កើត រាយបញ្ជី ប្ដូរថ្មី និងដកហូត OmniRoute API key។ គ្រប់គ្រងវិសាលភាព កម្រិតចំណាយ និងកាលបរិច្ឆេទផុតកំណត់សម្រាប់ key នីមួយៗ។ Key គ្រប់គ្រងសិទ្ធិចូលប្រើ endpoint ប្រូកស៊ី និង endpoint គ្រប់គ្រងទាំងអស់។" }, "omni-usage-logs": { @@ -12377,7 +12377,7 @@ "description": "ចាប់ផ្តើមការបម្រុងទុកប្រព័ន្ធ ស្ដារពីឯកសារបម្រុងទុក និងគ្រប់គ្រងវដ្តជីវិតមូលដ្ឋានទិន្នន័យ SQLite។ គាំទ្រយុទ្ធសាស្ត្រនាំចេញ នាំចូល និងរូបថតស្ថានភាពជាបន្តបន្ទាប់។" }, "omni-webhooks": { - "name": "Webhooks", + "name": "វេបហ៊ុក", "description": "ចុះឈ្មោះ រាយបញ្ជី សាកល្បង និងលុប endpoint របស់ webhook។ កំណត់រចនាសម្ព័ន្ធការជាវព្រឹត្តិការណ៍ (request.completed, request.failed, quota.exceeded, etc.) និងគ្រប់គ្រងការព្យាយាមបញ្ជូនម្ដងទៀត។" }, "omni-mcp": { @@ -12523,7 +12523,7 @@ "storage": { "label": "កន្លែងផ្ទុក", "agent": "កាតាឡុកថាមវន្ត (/api/agent-skills) → SKILL.md នៅលើ GitHub", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / មូលដ្ឋាន)" }, "tagline": { "label": "ពាក្យស្លោក", @@ -12542,7 +12542,7 @@ "categoryConfig": "ការកំណត់រចនាសម្ព័ន្ធ", "filterAll": "ទាំងអស់", "coverageLabel": "វិសាលភាពគ្របដណ្តប់", - "mcpUrl": "MCP URL", + "mcpUrl": "URL របស់ MCP", "a2aLink": "A2A", "mcpPrompt": "បន្ថែម MCP endpoint នេះទៅក្នុង Agent របស់អ្នក ដើម្បីផ្តល់ឧបករណ៍ OmniRoute ចំនួន 37 ដល់វា។", "a2aPrompt": "ចុះឈ្មោះ Agent Card នេះជាមួយ orchestrator របស់អ្នក ដើម្បីបើកការផ្ទេរភារកិច្ច A2A។", @@ -12992,7 +12992,7 @@ "description": "អនុញ្ញាតឱ្យការសង្គ្រោះ stream ស្នើសុំ response ម្តងទៀត និងភ្ជាប់វាបន្ត បន្ទាប់ពី bytes បានទៅដល់ client រួចហើយ។" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "ធ្វើឱ្យការបន្តពាក់កណ្តាលស្ទ្រីមមានសុវត្ថិភាពសម្រាប់ការហៅឧបករណ៍៖ កុំបន្តស្ទ្រីមដែលត្រូវបានកាត់ផ្តាច់ បន្ទាប់ពីការហៅឧបករណ៍ត្រូវបានផ្ញើរួច (កំពុងដំណើរការ ឬបានបញ្ចប់រួចហើយ) ហើយបញ្ឈប់បន្ទាប់ពីការបន្តទទេមួយដង ជំនួសឱ្យការប្រើប្រាស់កូតាសាកល្បងឡើងវិញទាំងមូល។" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "ប្តូរទៅការតភ្ជាប់បងប្អូនម្តងគត់ នៅពេល stream បិទមុនពេលបញ្ចេញ frame ដែលមានប្រយោជន៍ណាមួយ ហើយការព្យាយាមឡើងវិញដែលមានកំណត់លើការតភ្ជាប់ដដែលត្រូវបានប្រើអស់ហើយ។ បើគ្មានការតភ្ជាប់បងប្អូនដែលអាចប្រើបាន កំហុស early-EOF ដើមនឹងត្រូវបានត្រឡប់មកវិញ។ បិទ៖ early-EOF នៅតែជាចុងក្រោយបន្ទាប់ពីការព្យាយាមឡើងវិញ។" @@ -13035,12 +13035,12 @@ "description": "បន្តការហៅ tool ដែលគ្រប់គ្រងដោយ server ដោយមិនប្រើ streaming រហូតដល់ model ត្រឡប់ response ដែល client អាចប្រើបាន។" }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "ប្រភពដើមនៃ Retry-After", + "description": "សម្រាប់ការឆ្លើយតប unavailable 429/503 ដែលបានប្រមូលផ្តុំ សូមលុប Retry-After ចេញ នៅពេលមិនដឹងពេលវេលាជាក់លាក់ណាមួយសម្រាប់សាកល្បងឡើងវិញនាពេលអនាគត ជំនួសឱ្យការផ្ញើតម្លៃសិប្បនិម្មិត 1s បន្ថែម error.retry_after_provenance និងអានការណែនាំអំពីការសាកល្បងឡើងវិញជាអត្ថបទនៅលើផ្លូវ combo drain។" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "ការបញ្ឈប់ហេដ្ឋារចនាសម្ព័ន្ធអាទិភាពដែលបានការពារ ជា 502", + "description": "ឆ្លើយតបដោយ 502 ជំនួសឱ្យ 503 នៅពេលគោលដៅអាទិភាព quota-only-fallback បញ្ឈប់ combo ដោយសារមូលហេតុដែលអាចបញ្ជាក់បានថាមិនមែនជា quota៖ ឧបករណ៍បំបែកសៀគ្វីរបស់អ្នកផ្តល់សេវាដែលបើក ឬការរំលងដោយសារការព្យាករណ៍ភាពយឺតយ៉ាវ។" } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "សុខភាព Combo", "callLogs": "កំណត់ហេតុការហៅ", "costs": "ថ្លៃចំណាយ", - "playground": "Playground", + "playground": "កន្លែងសាកល្បង", "nestedCombo": "Combo ជាន់គ្នា", "modelTarget": "គោលដៅម៉ូដែល", "weight": "ទម្ងន់ {value}%", @@ -13308,7 +13308,7 @@ "name": "ឈ្មោះ", "description": "ការពិពណ៌នា", "scopeLabel": "វិសាលភាព", - "apiKey": "API key", + "apiKey": "សោ API", "sourceCombo": "បន្សំប្រភព", "connection": "ការតភ្ជាប់", "sourceModel": "ម៉ូដែលប្រភព ឬ wildcard", @@ -13609,7 +13609,7 @@ "remaining": "នៅសល់", "noLockouts": "គ្មានការចាក់សោសកម្មទេ", "provider": "អ្នកផ្តល់សេវា", - "id": "ID", + "id": "លេខសម្គាល់", "authType": "ប្រភេទការផ្ទៀងផ្ទាត់", "priority": "អាទិភាព", "isActive": "សកម្ម", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "បដិសេធសំណើមុនពេលបញ្ជូន នៅពេលម៉ូដែលគោលដៅខ្វះសមត្ថភាពដែលត្រូវការ (ចក្ខុវិស័យ ឧបករណ៍ លទ្ធផលមានរចនាសម្ព័ន្ធ បង្អួចបរិបទ)។ វាការពារសំណើទៅកាន់អ្នកផ្តល់សេវាតែមួយដោយផ្ទាល់ ដែលរំលងតម្រងភាពត្រូវគ្នានៃស្រទាប់បន្សំ។", "featureFlagDisableContextWindowChecksDescription": "រំលងការត្រួតពិនិត្យបង្អួចបរិបទ និងចំនួនថូខិនបញ្ចូលអតិបរមាក្នុងមូលដ្ឋានរបស់ OmniRoute សម្រាប់សំណើទៅកាន់ម៉ូដែលតែមួយដោយផ្ទាល់។ អ្នកផ្តល់សេវាខាងលើនៅតែអនុវត្តដែនកំណត់ជាក់ស្តែងរបស់ពួកគេ។ ការបង្ហាប់ប្រូម និងដែនកំណត់ថូខិនលទ្ធផលនៅតែដំណើរការ។", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "ស្ថិតិស្វែងរក និងការស្វែងរកថ្មីៗ រាប់បញ្ចូលតែអ្នកផ្តល់សេវាដែលនៅមានការតភ្ជាប់សកម្មប៉ុណ្ណោះ (អ្នកផ្តល់សេវាដែលមិនត្រូវការសោ ដូចជា duckduckgo-free ត្រូវបានរាប់បញ្ចូលជានិច្ច)។ ការបិទនឹងរក្សាទុករាល់ជួរទិន្នន័យស្វែងរកដែលបានរក្សាទុក ដោយមានលេខសម្គាល់អ្នកផ្តល់សេវា។", "publicSystem": { "notFound": { "title": "រកមិនឃើញទំព័រ", @@ -13805,7 +13805,7 @@ "githubDescription": "ចូលដោយប្រើគណនី GitHub របស់អ្នក។", "importToken": "នាំចូល Token", "importDescription": "បិទភ្ជាប់ refresh token ដែលបាននាំចេញពី {providerLabel}។", - "apiKey": "API Key", + "apiKey": "សោ API", "apiKeyDescription": "បិទភ្ជាប់ {providerLabel} / CodeWhisperer API key ដែលមានសុពលភាពរយៈពេលវែង។ វាត្រូវបានរក្សាទុកជាព័ត៌មានសម្គាល់ bearer ដោយគ្មាន refresh token ហើយការស្វែងរកប្រវត្តិរូបនឹងធ្វើឡើងតាមលទ្ធភាព។", "idcStartUrl": "URL ចាប់ផ្តើម IDC", "idcStartUrlPlaceholder": "https://your-org.awsapps.com/start", @@ -13818,7 +13818,7 @@ "autoDetecting": "កំពុងរកឃើញ token ដោយស្វ័យប្រវត្តិ...", "readingCredentials": "កំពុងអានព័ត៌មានសម្គាល់ {providerLabel} ពីឃ្លាំងសម្ងាត់ AWS SSO", "tokenNotDetected": "រកមិនឃើញ token របស់ {providerLabel} ដោយស្វ័យប្រវត្តិទេ។ សូមបិទភ្ជាប់ refresh token របស់អ្នកដោយដៃ។", - "refreshToken": "Refresh Token", + "refreshToken": "ថូខឹនធ្វើឱ្យស្រស់", "tokenPlaceholder": "Token នឹងត្រូវបានបំពេញដោយស្វ័យប្រវត្តិ...", "importing": "កំពុងនាំចូល...", "apiKeyPlaceholder": "បិទភ្ជាប់ {providerLabel} API key របស់អ្នក...", @@ -14051,7 +14051,7 @@ "filterSources": "ប្រភព", "filterProviders": "អ្នកផ្តល់សេវា", "clearFilters": "សម្អាតតម្រង", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "ភ្នាក់ងារក្លោដ", "sourceA2A": "A2A", "sourceConductor": "Conductor", "sourceStale": "លែងទាន់សម័យតាំងពី {since}", diff --git a/src/i18n/messages/kn.json b/src/i18n/messages/kn.json index 5e87887aad..e78bdcf16e 100644 --- a/src/i18n/messages/kn.json +++ b/src/i18n/messages/kn.json @@ -160,7 +160,7 @@ "effortHigh": "ಹೆಚ್ಚು", "effortExtraHigh": "ಹೆಚ್ಚಿನ ಹೆಚ್ಚು", "effortMax": "ಗರಿಷ್ಠ", - "effortUltra": "Ultra", + "effortUltra": "ಅಲ್ಟ್ರಾ", "reasoningEffort": "ಯುಕ್ತಿಯ ಪ್ರಯತ್ನ", "wireApi": "Wire API", "modelAliases": "ಮಾದರಿ ಉಪನಾಮಗಳು", @@ -702,7 +702,7 @@ "flaggedAnomalies": "ಗುರುತಿಸಲಾದ ಅಸ್ವಾಭಾವಿಕತೆಗಳು", "noAnomaliesDetected": "ಯಾವುದೇ ಅಸ್ವಾಭಾವಿಕತೆಗಳು ಪತ್ತೆಯಾಗಿಲ್ಲ", "apiKey": "API ಕೀ", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1ಗಂ)", "zScore": "Z-ಸ್ಕೋರ್", "suspicious": "ಸಂದೇಹಾಸ್ಪದ", "tokensCommunityServers": "ಸಮುದಾಯ ಸರ್ವರ್ಗಳು", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "claude/<provider>/<model> ಮಿರರ್ ಐಡಿಗಳನ್ನು /v1/models ನಲ್ಲಿ ಪ್ರಕಟಿಸಿ, ಆದ್ದರಿಂದ Claude Code gateway ಮಾಡೆಲ್ ಆವಿಷ್ಕಾರವು non-Claude ಮಾಡೆಲ್ಗಳನ್ನು ಪಟ್ಟಿಮಾಡುತ್ತದೆ. ಎಚ್ಚರಿಕೆ: ಜಾಗತಿಕವಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ ಎಲ್ಲಾ ಕ್ಲೈಂಟ್ಗಳಿಗೆ ಕ್ಯಾಟಲಾಗ್ ಎಂಟ್ರಿಗಳನ್ನು ದ್ವಿಗುಣಗೊಳಿಸುತ್ತದೆ.", "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> gateway ಅಲಿಯಾಸ್ಗಳಿಗಾಗಿ ಮಾಸ್ಟರ್ ಸ್ವಿಚ್. ಆನ್ (ಡೀಫಾಲ್ಟ್): /v1/models ಪ್ರತಿ ಅರ್ಹ ಥಿಂಕಿಂಗ್-ಸಾಮರ್ಥ್ಯ Claude ಮಾಡೆಲ್ಗಾಗಿ ನೋ-ಥಿಂಕಿಂಗ್ ವೇರಿಯಂಟ್ ಅನ್ನು ಪ್ರಕಟಿಸುತ್ತದೆ, ಮತ್ತು ವಿನಂತಿಯಲ್ಲಿ ಕಳುಹಿಸಿದ no-think/ ಐಡಿಯು ಕಾರಣವನ್ನು ಅಡಗಿಸಿ ನಿಜವಾದ ಮಾಡೆಲ್ಗೆ ಪರಿಹರಿಸುತ್ತದೆ. ಆಫ್: ಯಾವುದೇ ವೇರಿಯಂಟ್ಗಳನ್ನು ಪ್ರಕಟಿಸಲಾಗುವುದಿಲ್ಲ ಮತ್ತು no-think/ ಐಡಿಯನ್ನು ಯಾವುದೇ ಅಜ್ಞಾತ ಮಾಡೆಲ್ ಐಡಿಯಂತೆ ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಈ ಆನ್ ಆಗಿರುವಾಗ ಪ್ರತಿ-ಮಾಡೆಲ್ ModelSpec.noThinkingAlias ಆಯ್ಕೆ-ಆನ್/ಆಫ್ ಇನ್ನೂ ಅನ್ವಯಿಸುತ್ತದೆ.", "featureFlagChatVirtualLanesEnabledDescription": "ಪ್ರೊವೈಡರ್ ಡಿಸ್ಪ್ಯಾಚ್ ಗಾಗಿ ಪ್ರತಿ-ಟೆನಂಟ್ ಅಡಾಪ್ಟಿವ್ ವರ್ಚುವಲ್ ಅಡ್ಮಿಷನ್ ಲೇನ್ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ (#9654): ಒಂದು ಟೆನಂಟ್ನ ಬರ್ಸ್ಟ್ ಇನ್ನು ಮುಂದೆ ಮತ್ತೊಂದನ್ನು 503 ಮಾಡುವುದಿಲ್ಲ. OMNIROUTE_CHAT_VIRTUAL_LANES ಎನ್ವಿ ವೇರಿಯಬಲ್ ಈ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಓವರ್ರೈಡ್ ಮೇಲೆ ಗೆಲ್ಲುತ್ತದೆ; ಬದಲಾವಣೆಗಳು ಸರ್ವರ್ ರೀಸ್ಟಾರ್ಟ್ ನಲ್ಲಿ ಜಾರಿಗೆ ಬರುತ್ತವೆ.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಪೂರೈಕೆದಾರ ಪುಟಗಳು: ಪೂರೈಕೆದಾರರು ಮಾನ್ಯಗೊಳಿಸುವ ಸಂಕೇತಗಳ ಮೇಲೆ ಮಾತ್ರ ಉಚಿತ ಬ್ಯಾಡ್ಜ್ ಅನ್ನು ತೋರಿಸಿ — ದಾಖಲಿತ ಉಚಿತ ಹಂತವಿಲ್ಲದ ನೋಂದಾಯಿತ ಪೂರೈಕೆದಾರರಿಗೆ ಪ್ರದರ್ಶನ-ಹೆಸರು ಹ್ಯೂರಿಸ್ಟಿಕ್, ಬೂಲಿಯನ್ ಅಲ್ಲದ ಉಚಿತ ಕ್ಷೇತ್ರಗಳು ಮತ್ತು :free ಪ್ರತ್ಯಯಗಳನ್ನು ಕೈಬಿಡುತ್ತದೆ. ಆಫ್ ಮಾಡಿದಾಗ ಐತಿಹಾಸಿಕ ಬ್ಯಾಡ್ಜ್ ನಿಯಮವನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ.", + "featureFlagProxySkipRecentlyFailedDescription": "ಪ್ರಾಕ್ಸಿ ಪೂಲ್ಗಳು ಮತ್ತು opencode ನ ಪ್ರತಿ-ಖಾತೆ ರೊಟೇಶನ್, ಇತ್ತೀಚೆಗೆ ವಿಫಲವಾದ ಪ್ರಾಕ್ಸಿಯನ್ನು (TCP ಪ್ರೋಬ್ ನಿರಾಕರಿಸಲ್ಪಟ್ಟಿದ್ದರೆ ಅಥವಾ ಅದರ ಮೂಲಕ 429 ಬಂದಿದ್ದರೆ) ಪ್ರತಿ ಪ್ರಕ್ರಿಯೆಗೆ ಅನ್ವಯಿಸುವ ಅವಧಿಯವರೆಗೆ ಮತ್ತೆ ಬಳಸುವುದಿಲ್ಲ. ಪ್ರತಿ ಪುನರಾವರ್ತನೆಯಲ್ಲೂ ಈ ಅವಧಿ ದ್ವಿಗುಣಗೊಳ್ಳುತ್ತದೆ, ನಿಗದಿತ ಗರಿಷ್ಠ ಮಿತಿಯವರೆಗೆ. ಯಾವುದೇ ಪ್ರಾಕ್ಸಿ ಸ್ಥಿತಿಯನ್ನು ಬರೆಯಲಾಗುವುದಿಲ್ಲ; ಪ್ರತಿಯೊಂದು ಅಭ್ಯರ್ಥಿಯನ್ನೂ ಬದಿಗಿರಿಸಿದಾಗ ಆಯ್ಕೆಯು ಬದಲಾಗುವುದಿಲ್ಲ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಆಫ್: ಆಯ್ಕೆಯ ಕ್ರಮವು ಸರಳ ರೊಟೇಶನ್ನಂತೆಯೇ ಇರುತ್ತದೆ.", + "featureFlagProxyPoolEgressObservationDescription": "ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಲ್ಲಿ ಪ್ರಾಕ್ಸಿ ಪೂಲ್ನ ಅಡಿಯಲ್ಲಿ, ಕಳೆದ 24 ಗಂಟೆಗಳಲ್ಲಿ ಅದರ ಸದಸ್ಯರಿಗೆ ಸೇವೆ ನೀಡಿದ ಗಮನಿಸಲಾದ ಎಗ್ರೆಸ್ IPಗಳ ಸಂಖ್ಯೆ, ಅವುಗಳನ್ನು ಬಳಸಿದ ಸಂಪರ್ಕಗಳ ಸಂಖ್ಯೆ ಮತ್ತು ಒಂದೇ IPಯ ಹಿಂದೆ ಕಂಡುಬಂದ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ತೋರಿಸಿ. ಇದು ಓದಲು ಮಾತ್ರ; ಪ್ರಾಕ್ಸಿ ಲಾಗ್ನಿಂದ ಲೆಕ್ಕ ಹಾಕಲಾಗುತ್ತದೆ ಮತ್ತು ರೂಟಿಂಗ್ಗಾಗಿ ಎಂದಿಗೂ ಬಳಸಲಾಗುವುದಿಲ್ಲ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಆಫ್: ಪೂಲ್ ಎಡಿಟರ್ ಬದಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ವೀಕ್ಷಣಾ ರೂಟ್ null ಎಂದು ಉತ್ತರಿಸುತ್ತದೆ.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "ಪ್ರಾಕ್ಸಿ ಆರೋಗ್ಯ ಪರಿಶೀಲನೆಯಲ್ಲಿ, ಗುರಿಯು ನಿರಾಕರಿಸಿದ ಪ್ರೋಬ್ (401/403/429: ಪ್ರಾಕ್ಸಿಯು ರಿಲೇ ಮಾಡಿದೆ, ಆದರೆ ಗಮ್ಯಸ್ಥಾನವು ಈ ಎಗ್ರೆಸ್ IPಯನ್ನು ನಿರಾಕರಿಸಿದೆ) ಸೇವೆ ಸಲ್ಲಿಸಿದ ಪ್ರೋಬ್ನಂತೆಯೇ ಪ್ರಾಕ್ಸಿಯ ಸತತ-ವೈಫಲ್ಯ ಸರಣಿಯನ್ನು ಮರುಹೊಂದಿಸಲು ಅನುಮತಿಸಿ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಆಫ್: ನಿರಾಕರಣೆಯು ತಟಸ್ಥವಾಗಿಯೇ ಉಳಿದು ಸರಣಿಯನ್ನು ಹಾಗೆಯೇ ಇಡುತ್ತದೆ. ಎರಡೂ ಸಂದರ್ಭಗಳಲ್ಲಿ 5xx ಅನಿರ್ಣಾಯಕವಾಗಿಯೇ ಉಳಿಯುತ್ತದೆ ಮತ್ತು ನಿರಾಕರಣೆಯು ಪ್ರಾಕ್ಸಿಯನ್ನು ಎಂದಿಗೂ ತೆಗೆದುಹಾಕುವುದಿಲ್ಲ, ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದಿಲ್ಲ ಅಥವಾ ಮರುಸಕ್ರಿಯಗೊಳಿಸುವುದಿಲ್ಲ.", "sidebar": { "home": "ಹೋಮ್", "dashboard": "ಡ್ಯಾಶ್ಬೋರ್ಡ್", @@ -1298,42 +1298,42 @@ "groupSeparatorLabel": "ವಿಭಜಕ", "discovery": "ಶೋಧನೆ", "discoverySubtitle": "ಉಚಿತ ಪ್ರವೇಶಕ್ಕಾಗಿ ಪೂರೈಕೆದಾರರನ್ನು ಶೋಧಿಸಿ", - "conductor": "Conductor", - "conductorSubtitle": "CLI-agent fleet", + "conductor": "ಕಂಡಕ್ಟರ್", + "conductorSubtitle": "CLI-ಏಜೆಂಟ್ ಸಮೂಹ", "orchestration": "ಸಂಯೋಜನೆ", "orchestrationSubtitle": "ಎಲ್ಲಾ ಚಾಲಿತವಾಗಿರುವುದರ ಪ್ರತ್ಯಕ್ಷ ನೋಟ", "resilienceConnections": "ಸಂಪರ್ಕ ಸ್ಥಿತಿಸ್ಥಾಪಕತೆ", - "resilienceConnectionsSubtitle": "Cooldown, breaker, lockout state", - "settingsModalityBridge": "Modality Bridge", + "resilienceConnectionsSubtitle": "ಕೂಲ್ಡೌನ್, ಬ್ರೇಕರ್, ಲಾಕ್ಔಟ್ ಸ್ಥಿತಿ", + "settingsModalityBridge": "ಮೋಡಾಲಿಟಿ ಬ್ರಿಡ್ಜ್", "settingsModalityBridgeSubtitle": "ಚಿತ್ರ/ಆಡಿಯೋ → ಪಠ್ಯಕ್ಕಾಗಿ ಮಾತ್ರ ಮಾದರಿಗಳಿಗೆ ಪಠ್ಯ ಬ್ಯಾಕ್ಅಪ್", "commandPalette": { - "title": "Command palette", + "title": "ಕಮಾಂಡ್ ಪ್ಯಾಲೆಟ್", "searchPlaceholder": "ಪುಟಗಳು, ಸೆಟ್ಟಿಂಗ್ಗಳು, ಸಾಧನಗಳನ್ನು ಹುಡುಕಿ...", "clearSearch": "ಹುಡುಕನ್ನು ತೆರವುಗೊಳಿಸಿ", "noResults": "ಯಾವುದೇ ಫಲಿತಾಂಶಗಳಿಲ್ಲ", - "navigate": "navigate", - "open": "open", - "close": "close" + "navigate": "ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ", + "open": "ತೆರೆಯಿರಿ", + "close": "ಮುಚ್ಚಿರಿ" }, "noResults": "ಯಾವುದೇ ಫಲಿತಾಂಶಗಳಿಲ್ಲ" }, "webhooks": { - "title": "Webhooks", + "title": "ವೆಬ್ಹುಕ್ಗಳು", "description": "ಸಿಸ್ಟಂ ಇವೆಂಟ್ಗಳಿಗಾಗಿ HTTP ಕಾಲ್ಬ್ಯಾಕ್ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ.", - "configuredWebhooks": "Configured Webhooks", + "configuredWebhooks": "ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ವೆಬ್ಹುಕ್ಗಳು", "configuredWebhooksDesc": "ಡೆಲಿವರಿ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು, ಚಂದಾದಾರರಾದ ಇವೆಂಟ್ಗಳು, ಸ್ಥಿತಿ, ಮತ್ತು ಪರೀಕ್ಷಾ ಕಳುಹಿಸುವಿಕೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ.", - "addWebhook": "Add Webhook", - "editWebhook": "Edit Webhook", - "name": "Name", - "namePlaceholder": "Production monitoring", - "unnamedWebhook": "Unnamed webhook", - "url": "Endpoint URL", - "events": "Events", - "allEvents": "All events", - "secret": "Secret", - "secretPlaceholder": "Leave blank to auto-generate a secret", - "secretEditPlaceholder": "Leave blank to keep the current secret", - "status": "Status", + "addWebhook": "ವೆಬ್ಹುಕ್ ಸೇರಿಸಿ", + "editWebhook": "ವೆಬ್ಹುಕ್ ಸಂಪಾದಿಸಿ", + "name": "ಹೆಸರು", + "namePlaceholder": "ಪ್ರೊಡಕ್ಷನ್ ಮೇಲ್ವಿಚಾರಣೆ", + "unnamedWebhook": "ಹೆಸರಿಲ್ಲದ ವೆಬ್ಹುಕ್", + "url": "ಎಂಡ್ಪಾಯಿಂಟ್ URL", + "events": "ಈವೆಂಟ್ಗಳು", + "allEvents": "ಎಲ್ಲಾ ಈವೆಂಟ್ಗಳು", + "secret": "ರಹಸ್ಯ", + "secretPlaceholder": "ರಹಸ್ಯವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲು ಖಾಲಿ ಬಿಡಿ", + "secretEditPlaceholder": "ಪ್ರಸ್ತುತ ರಹಸ್ಯವನ್ನು ಉಳಿಸಿಕೊಳ್ಳಲು ಖಾಲಿ ಬಿಡಿ", + "status": "ಸ್ಥಿತಿ", "active": "ಸಕ್ರಿಯ", "inactive": "ನಿಷ್ಕ್ರಿಯ", "errored": "ದೋಷ ಸಂಭವಿಸಿದೆ", @@ -2387,7 +2387,7 @@ "apiManagerCustomRateLimits": "ಕಸ್ಟಮ್ ದರ ಮಿತಿಗಳು", "apiManagerCustomRateLimitsDesc": "ಗ್ಲೋಬಲ್ ಡೀಫಾಲ್ಟ್ ಮಿತಿಗಳನ್ನು ಓವರ್ರೈಡ್ ಮಾಡಿ. ಡೀಫಾಲ್ಟ್ಗಳನ್ನು ಬಳಸಲು ಖಾಲಿ ಬಿಡಿ.", "apiManagerRateLimitRequestsPlaceholder": "ವಿನಂತಿಗಳು", - "apiManagerRateLimitReqPer": "req /", + "apiManagerRateLimitReqPer": "ವಿನಂತಿ /", "apiManagerRateLimitSecondsPlaceholder": "ಸೆಕೆಂಡುಗಳು", "apiManagerRemoveLimitTitle": "ಮಿತಿಯನ್ನು ತೆಗೆದುಹಾಕಿ", "apiManagerTimezonePlaceholder": "America/Sao_Paulo", @@ -2419,7 +2419,7 @@ "bypassProviderQuota": "ಪ್ರೊವೈಡರ್ ಕ್ವೋಟಾ ಕಟ್-ಆಫ್ಗಳನ್ನು ಬೈಪಾಸ್ ಮಾಡಿ", "bypassProviderQuotaDescription": "ರೂಟಿಂಗ್ ಸಮಯದಲ್ಲಿ ಅಪ್ಸ್ಟ್ರೀಮ್ ಪ್ರೊವೈಡರ್/ಖಾತೆ ಕಟ್-ಆಫ್ ನೀತಿಯನ್ನು ಈ ಕೀ ಅನ್ನು ಅಲಕ್ಷಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. API ಕೀ USD ಕ್ವೋಟಾಗಳು ಇನ್ನೂ ಅನ್ವಯಿಸುತ್ತವೆ.", "quotaPill": "ಕ್ವೋಟಾ", - "quotaModeOnly": "qtSd-only", + "quotaModeOnly": "qtSd-ಮಾತ್ರ", "exclusiveLease": "ಏಕಸ್ವಾಮ್ಯ ಲೀಸ್", "exclusiveLeaseNoticeTitle": "ವಿಶೇಷ ಬಾಡಿಗೆ", "exclusiveLeaseNoticeDesc": "ಈ API ಕೀ ವಿಶೇಷ ಬಾಡಿಗೆ ಅನುಮತಿಗಳನ್ನು ಹೊಂದಿದೆ, ಸಮರ್ಪಿತ ಸಂಪರ್ಕ ಮಾರ್ಗದರ್ಶನಕ್ಕಾಗಿ.", @@ -2717,7 +2717,7 @@ "ccOnboardingTitle": "ಗೇಟ್ವೇ ಮಾದರಿ ಆವಿಷ್ಕಾರಕ್ಕಾಗಿ settings.json", "ccOnboardingCopy": "ನಕಲಿಸಿ", "ccOnboardingCopied": "ನಕಲಿಸಲಾಗಿದೆ", - "ccOnboardingKeyPlaceholder": "''", + "ccOnboardingKeyPlaceholder": "'<ನಿಮ್ಮ OmniRoute API ಕೀ>'", "ccOnboardingWindowNote": "Claude Code ಗುರುತಿಸದ ಯಾವುದೇ ಮಾದರಿ id ಗಾಗಿ 200K ಸಂದರ್ಭ ವಿಂಡೋ ಅನ್ನು ಊಹಿಸುತ್ತದೆ. ವಾಸ್ತವ ವಿಂಡೋ ಭಿನ್ನವಾಗಿರುವ ಮಾದರಿಗಾಗಿ, ಅದರ ಕೆಳಗೆ CLAUDE_CODE_AUTO_COMPACT_WINDOW ಅನ್ನು ಸೇರಿಸಿ ಆದ್ದರಿಂದ ಸ್ವಯಂ-ಸಂಕುಚನವು ತುಂಬಾ ಮೊದಲು ಹಾರಿಹೋಗುವುದಿಲ್ಲ.", "failedSave": "ಉಳಿಸಲು ವಿಫಲವಾಗಿದೆ", "profileSyncTitle": "CLI ಪ್ರೊಫೈಲ್ ಸ್ವಯಂ-ಸಿಂಕ್", @@ -2852,7 +2852,7 @@ "current": "ಪ್ರಸ್ತುತ", "baseUrlPlaceholder": "https://.../v1", "resetToDefault": "ಡೀಫಾಲ್ಟ್ಗೆ ಮರುಹೊಂದಿಸಿ", - "providerModelPlaceholder": "provider/model-id", + "providerModelPlaceholder": "ಒದಗಿಸುವವರು/ಮಾದರಿ-id", "apply": "ಅನ್ವಯಿಸಿ", "reset": "ಮರುಹೊಂದಿಸಿ", "manualConfig": "ಹಸ್ತಚಾಲಿತ ಕಾನ್ಫಿಗರೇಶನ್", @@ -2921,13 +2921,13 @@ "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "xAI Grok ಕಸ್ಟಮ್ ಪ್ರೊವೈಡರ್ ಬೆಂಬಲದೊಂದಿಗೆ TUI ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ ಅನ್ನು ನಿರ್ಮಿಸಿ", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Factory Droid AI ಸಹಾಯಕ", + "openclaw": "Open Claw AI ಸಹಾಯಕ", + "cline": "Cline AI ಕೋಡಿಂಗ್ ಸಹಾಯಕ CLI", + "kilo": "Kilo Code AI ಸಹಾಯಕ CLI", "qwen": "Alibaba Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", + "continue": "Continue AI ಸಹಾಯಕ", "opencode": "OpenCode AI ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ (ಟರ್ಮಿನಲ್)", "kiro": "Amazon Kiro — AI-ಆಧಾರಿತ IDE", "windsurf": "Windsurf AI Code Editor", @@ -3227,7 +3227,7 @@ "random": "ಯಾದೃಚ್ಛಿಕ", "leastLatency": "ಕಡಿಮೆ ವಿಳಂಬ", "comboName": "ಸಂಯೋಜನೆಯ ಹೆಸರು", - "comboNamePlaceholder": "my-combo", + "comboNamePlaceholder": "ನನ್ನ-ಸಂಯೋಜನೆ", "comboDescription": "ವಿವರಣೆ", "comboDescriptionPlaceholder": "ಈ ಸಂಯೋಜನೆಯನ್ನು ವಿವರಿಸುವ ಐಚ್ಛಿಕ ಟಿಪ್ಪಣಿ", "deleteConfirm": "ಈ ಸಂಯೋಜನೆಯನ್ನು ಅಳಿಸಬೇಕೇ?", @@ -4127,7 +4127,7 @@ "vscodeAliasDescriptionError": "ಈ ಸೆಷನ್ನಲ್ಲಿ CLI ಕೀಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗದ ಕಾರಣ ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ URLಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ.", "vscodeAliasDescriptionLoading": "CLI ಕೀಗಳನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ. ಕೀ ಲಭ್ಯವಾಗುವವರೆಗೆ ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ URLಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತದೆ.", "vscodeAliasDescriptionPlaceholder": "ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ URLಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತಿದೆ. TOKEN ಅನ್ನು ಬದಲಿಸಲು CLI Tools ನಲ್ಲಿ API ಕೀಯನ್ನು ರಚಿಸಿ ಅಥವಾ ಸಕ್ರಿಯಗೊಳಿಸಿ.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI ಪರಿಕರಗಳು", "vscodeAliasBaseLabel": "VS Code ಬೇಸ್", "vscodeAliasModelsLabel": "VS Code ಮಾದರಿಗಳು", "vscodeAliasChatLabel": "VS Code ಚಾಟ್", @@ -4907,7 +4907,7 @@ "clearAll": "ಎಲ್ಲವನ್ನೂ ತೆರವುಗೊಳಿಸಿ", "confirmClearActiveRequests": "ಎಲ್ಲಾ ಸಕ್ರಿಯ ವಿನಂತಿಗಳನ್ನು ತೆರವುಗೊಳಿಸುವುದೇ?", "model": "ಮಾದರಿ", - "provider": "Provider", + "provider": "ಪೂರೈಕೆದಾರ", "account": "ಖಾತೆ", "elapsed": "ಕಳೆದ ಸಮಯ", "activeStage": "ಹಂತ", @@ -5801,10 +5801,10 @@ "ccCompatibleSummarizeThinkingDescription": "ಬೆಂಬಲಿತ Claude ಮಾದರಿಗಳು ಗೋಚರಿಸುವ ಚಿಂತನಾ ಡೆಲ್ಟಾಗಳನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡುವಂತೆ CC Compatible ಚಿಂತನಾ ವಿನಂತಿಗಳಿಗೆ `display: \"summarized\"` ಅನ್ನು ಸೇರಿಸುತ್ತದೆ.", "ccCompatibleSummarizeThinkingLabel": "ಸಂಕ್ಷಿಪ್ತ ಚಿಂತನಾ ಪ್ರದರ್ಶನವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ", "ccCompatibleDetailsTitle": "CC-compatible ರಿಲೇ ವಿವರಗಳು", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "CC ಹೊಂದಾಣಿಕೆಯ", "ccCompatibleModelsDescription": "CC-compatible ರಿಲೇಗಳು ಮಾದರಿ ಪಟ್ಟಿಯನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ. ನಿಮ್ಮ ರಿಲೇ ಸ್ವೀಕರಿಸುವ Claude ಮಾದರಿ ID ಗಳನ್ನು ಸೇರಿಸಿ.", "ccCompatibleNameHint": "ಈ Claude Code-ಗೆ ಮಾತ್ರ ಮೀಸಲಾದ ರಿಲೇಯ ಪ್ರದರ್ಶನ ಹೆಸರು.", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay ಪ್ರೊಡಕ್ಷನ್", "ccCompatiblePrefixHint": "prefix/model-id ನಂತಹ ಮಾದರಿ ಅಲಿಯಾಸ್ಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ.", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Claude Code ಕ್ಲೈಂಟ್ಗಳಿಗೆ ಮಾತ್ರ ಸೇವೆ ಒದಗಿಸುವ ರಿಲೇಗಳಿಗಾಗಿ ಈ ಪೂರೈಕೆದಾರರನ್ನು ಬಳಸಿ. ಆ ರಿಲೇಗಳು ವಿನಂತಿಯನ್ನು ಸ್ವೀಕರಿಸುವಂತೆ OmniRoute ಯಾವುದೇ ಒಳಬರುವ ವಿನಂತಿಯನ್ನು Claude Code-compatible ವೈರ್ ಸ್ವರೂಪಕ್ಕೆ ಮರುಬರೆಯುತ್ತದೆ. ನೀವು Claude Code CLI ಅನ್ನು ಮಾತ್ರ ಬಳಸಲು ಬಯಸಿದರೆ ಅಥವಾ ಈ ರಿಲೇ ಪ್ರಕಾರದ ಅರ್ಥವೇನೆಂದು ಖಚಿತವಾಗಿಲ್ಲದಿದ್ದರೆ, ಬದಲಾಗಿ ಸಾಮಾನ್ಯ Anthropic-compatible ಪೂರೈಕೆದಾರರನ್ನು ಬಳಸಿ.", @@ -6100,7 +6100,7 @@ "onboardingBaseUrlOverride": "Base URL ಅತಿಕ್ರಮಣ", "onboardingBaseUrlOverrideHint": "ಐಚ್ಛಿಕ. providerSpecificData.baseUrl ಆಗಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ.", "onboardingRegion": "ಪ್ರದೇಶ", - "onboardingSearchCx": "Search CX / Engine id", + "onboardingSearchCx": "CX / Engine id ಹುಡುಕಿ", "onboardingProviderSpecificIdPlaceholder": "ಐಚ್ಛಿಕ ಪೂರೈಕೆದಾರ-ನಿರ್ದಿಷ್ಟ id", "onboardingCustomUserAgent": "ಕಸ್ಟಮ್ User-Agent", "onboardingWorking": "ಕಾರ್ಯನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ…", @@ -6367,15 +6367,15 @@ "checkWebToken": "ಟೋಕನ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ", "huggingchatLabel": "HuggingChat (ಉಚಿತ)", "huggingchatDesc": "huggingface.co/chat ಮೂಲಕ ಉಚಿತ LLM ಚಾಟ್", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe ವೆಬ್", "poeWebDesc": "poe.com ಮೂಲಕ ಬಹು-ಮಾದರಿ ಚಾಟ್", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice ವೆಬ್", "veniceWebDesc": "ಗೌಪ್ಯತೆ-ಕೇಂದ್ರಿತ AI ಚಾಟ್", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel ವೆಬ್", "v0VercelWebDesc": "v0.dev ಮೂಲಕ AI ಕೋಡ್ ರಚನೆ", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi ವೆಬ್", "kimiWebDesc": "www.kimi.com ಮೂಲಕ Moonshot AI ಗ್ರಾಹಕ ಚಾಟ್ (ಅಂತರರಾಷ್ಟ್ರೀಯ, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola ವೆಬ್", "doubaoWebDesc": "dola.com ಮೂಲಕ ByteDance AI ಚಾಟ್", "overrideBaseUrlAdvanced": "ಸುಧಾರಿತ: ಮೂಲ URL ಅನ್ನು ಅತಿಕ್ರಮಿಸಿ", "overrideBaseUrlHint": "ಸುಧಾರಿತ: ಈ ಅಂತರ್ನಿರ್ಮಿತ ಪೂರೈಕೆದಾರರನ್ನು ಕಸ್ಟಮ್ ಎಂಡ್ಪಾಯಿಂಟ್ಗೆ ನಿರ್ದೇಶಿಸಿ. ಡೀಫಾಲ್ಟ್ ಬಳಸಲು ಖಾಲಿ ಬಿಡಿ.", @@ -6468,7 +6468,7 @@ "pageLoadErrorId": "ದೋಷ ID: {id}", "pageLoadErrorRetry": "ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ", "pageLoadErrorTitle": "ಪೂರೈಕೆದಾರರನ್ನು ಲೋಡ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ", - "playgroundTitle": "Playground", + "playgroundTitle": "ಪ್ರಯೋಗಾಂಗ", "providerDetailConnectionFlexActive": "ಈ ಸಂಪರ್ಕಕ್ಕಾಗಿ Codex flex ಸೇವಾ ಶ್ರೇಣಿ ಸಕ್ರಿಯವಾಗಿದೆ", "providerDetailConnectionPriorityActive": "ಈ ಸಂಪರ್ಕಕ್ಕಾಗಿ Codex priority ಸೇವಾ ಶ್ರೇಣಿ ಸಕ್ರಿಯವಾಗಿದೆ", "providerDetailGlobalFlexActive": "ಜಾಗತಿಕ Codex flex ಸೇವಾ ಶ್ರೇಣಿ ಸಕ್ರಿಯವಾಗಿದೆ", @@ -6478,7 +6478,7 @@ "savedModelEndpointSettings": "ಮಾದರಿ ಎಂಡ್ಪಾಯಿಂಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಉಳಿಸಲಾಗಿದೆ", "searchByModelAria": "ಮಾದರಿಯ ಮೂಲಕ ಹುಡುಕಿ", "selectSupportedEndpoint": "ಬೆಂಬಲಿತ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳಲ್ಲಿ ಕನಿಷ್ಠ ಒಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "antigravityClientProfileHarness": "Harness / CLI" + "antigravityClientProfileHarness": "ಹಾರ್ನೆಸ್ / CLI" }, "settings": { "title": "ಸೆಟ್ಟಿಂಗ್ಗಳು", @@ -6530,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "ಇವುಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಪ್ಯಾರಾಗ್ರಾಫ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ: {items}", "routingSummarizeDropParagraphStartsWith": "ಇವುಗಳಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಪ್ಯಾರಾಗ್ರಾಫ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ: {items}", "routingSummarizeReplaceText": "\"{match}\" ಅನ್ನು \"{replacement}\" ನಿಂದ ಬದಲಿಸಿ", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "ರೆಜೆಕ್ಸ್ /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "ಇವುಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಬ್ಲಾಕ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ: {items}", "routingSummarizePrependSystemBlock": "ಬ್ಲಾಕ್ ಅನ್ನು ಆರಂಭಕ್ಕೆ ಸೇರಿಸಿ: \"{text}\"", "routingSummarizeAppendSystemBlock": "ಬ್ಲಾಕ್ ಅನ್ನು ಅಂತ್ಯಕ್ಕೆ ಸೇರಿಸಿ: \"{text}\"", @@ -7143,7 +7143,7 @@ "ipModeWhitelist": "ಬಿಳಿಪಟ್ಟಿ", "ipModeWhitelistPriority": "WL ಆದ್ಯತೆ", "addIpAddress": "IP ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 ಅಥವಾ 10.0.*.*", "block": "+ ನಿರ್ಬಂಧಿಸಿ", "allow": "+ ಅನುಮತಿಸಿ", "blocked": "ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ ({count})", @@ -7380,7 +7380,7 @@ "customPricingNote": "ನಿರ್ದಿಷ್ಟ ಮಾದರಿಗಳಿಗೆ ಡೀಫಾಲ್ಟ್ ಬೆಲೆ ನಿಗದಿಯನ್ನು ನೀವು ಅತಿಕ್ರಮಿಸಬಹುದು. ಸ್ವಯಂ ಪತ್ತೆಹಚ್ಚಿದ ಬೆಲೆ ನಿಗದಿಗಿಂತ ಕಸ್ಟಮ್ ಅತಿಕ್ರಮಣಗಳಿಗೆ ಆದ್ಯತೆ ಇರುತ್ತದೆ.", "editPricing": "ಬೆಲೆ ನಿಗದಿಯನ್ನು ಸಂಪಾದಿಸಿ", "viewFullDetails": "ಪೂರ್ಣ ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಿ", - "themeCoral": "Coral", + "themeCoral": "ಹವಳ", "adaptiveVolumeRouting": "ಹೊಂದಿಕೊಳ್ಳುವ ವಾಲ್ಯೂಮ್ ರೂಟಿಂಗ್", "adaptiveVolumeRoutingDesc": "ಪೇಲೋಡ್ ಪ್ರಮಾಣ ಮತ್ತು ಥ್ರೂಪುಟ್ ಒತ್ತಡದ ಆಧಾರದ ಮೇಲೆ ಸಂಪರ್ಕಗಳನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಸ್ಕೇಲ್ ಮಾಡಿ.", "lkgpToggleTitle": "ಕೊನೆಯದಾಗಿ ಸಮರ್ಪಕವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಿದ ಪೂರೈಕೆದಾರ (LKGP)", @@ -7478,7 +7478,7 @@ "compressionGuidanceHide": "ವಿವರಗಳನ್ನು ಮರೆಮಾಡಿ", "compressionGuidanceSafeDefault": "ಸುರಕ್ಷಿತ ಪೂರ್ವನಿಯೋಜಿತ ಆಯ್ಕೆ", "compressionGuidanceCacheImpact": "ಕ್ಯಾಶ್ ಮೇಲಿನ ಪರಿಣಾಮ", - "tokenSaverTitle": "Token Saver", + "tokenSaverTitle": "ಟೋಕನ್ ಉಳಿತಾಯಕಾರ", "tokenSaverSubtitle": "ಪ್ರತಿ ವಿನಂತಿಯಲ್ಲೂ ಕಡಿಮೆ ಟೋಕನ್ಗಳನ್ನು ಬಳಸಿ.", "tokenSaverToolOutput": "ಟೂಲ್ ಔಟ್ಪುಟ್", "tokenSaverToolOutputDesc": "ಪೂರೈಕೆದಾರರನ್ನು ತಲುಪುವ ಮೊದಲು git, grep, ls, tree ಮತ್ತು log ಔಟ್ಪುಟ್ ಅನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ.", @@ -7953,9 +7953,9 @@ "cliproxyapiImportAuthButton": "ಖಾತೆಗಳನ್ನು ಆಮದು ಮಾಡಿ", "payloadRulesTitle": "ಪೇಲೋಡ್ ನಿಯಮಗಳು", "payloadRulesDesc": "ಮಾದರಿ ಮತ್ತು ಪ್ರೋಟೋಕಾಲ್ ಪ್ರಕಾರ ವಿನಂತಿ ಪೇಲೋಡ್ ಬದಲಾವಣೆಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ. ಬದಲಾವಣೆಗಳನ್ನು ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಉಳಿಸಿದ ತಕ್ಷಣ ರನ್ಟೈಮ್ಗೆ ಹಾಟ್-ರೀಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "ಡೀಫಾಲ್ಟ್", "payloadRuleDefaultDesc": "ಹೊರಹೋಗುವ ಪೇಲೋಡ್ನಲ್ಲಿ ಗುರಿ ಪಥವು ಇಲ್ಲದಿದ್ದಾಗ ಮಾತ್ರ ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "ಅತಿಕ್ರಮಿಸು", "payloadRuleOverrideDesc": "ಆ ಪಥದಲ್ಲಿ ಈಗಾಗಲೇ ಇರುವ ಯಾವುದನ್ನಾದರೂ ಬದಲಿಸಿ, ಮೌಲ್ಯಗಳನ್ನು ಪೇಲೋಡ್ಗೆ ಬಲವಂತವಾಗಿ ಅನ್ವಯಿಸುತ್ತದೆ.", "payloadRuleFilterTitle": "ಫಿಲ್ಟರ್", "payloadRuleFilterDesc": "ಅಪ್ಸ್ಟ್ರೀಮ್ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುವ ಮೊದಲು ಪೇಲೋಡ್ನಿಂದ ನಿರ್ಬಂಧಿಸಲಾದ ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.", @@ -8073,7 +8073,7 @@ "auth_required": "ದೃಢೀಕರಣ ಅಗತ್ಯವಿದೆ", "public": "ಸಾರ್ವಜನಿಕ", "always_protected": "ಯಾವಾಗಲೂ ಸಂರಕ್ಷಿತ", - "spawn_capable": "Spawn-capable" + "spawn_capable": "ಸ್ಪಾನ್-ಸಾಮರ್ಥ್ಯವುಳ್ಳ" }, "error": { "PASSWORD_REQUIRED": "ಈ ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಲು ಪ್ರಸ್ತುತ ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ.", @@ -8272,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge ಸ್ಥಳಾಂತರಗೊಂಡಿದೆ", "modalityBridgeMovedBody": "Vision Bridge ಸೆಟ್ಟಿಂಗ್ಗಳು ಈಗ ಮೀಸಲಾದ Modality Bridge ಪುಟದಲ್ಲಿವೆ.", "modalityBridgeMovedCta": "Modality Bridge ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೆರೆಯಿರಿ", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "ಆಡಿಯೊ ಬ್ರಿಡ್ಜ್", "modalityBridgeAudioDesc": "ಆಯ್ಕೆಮಾಡಿದ ಪಠ್ಯ ಮಾದರಿಯೊಂದಿಗೆ ಮುಂದುವರಿಯುವ ಮೊದಲು, ಧ್ವನಿಯಿಂದ ಪಠ್ಯಕ್ಕೆ ಪರಿವರ್ತಿಸುವ ಮಾದರಿಯ ಮೂಲಕ ಆಡಿಯೊವನ್ನು ಲಿಪ್ಯಂತರಿಸಿ.", "modalityBridgeAudioEnabled": "Audio Bridge ಸಕ್ರಿಯಗೊಳಿಸಿ", "modalityBridgeAudioEnabledDesc": "ಗುರಿ ಮಾದರಿಯು ಆಡಿಯೊವನ್ನು ಸಂಸ್ಕರಿಸಲು ಸಾಧ್ಯವಾಗದಿದ್ದಾಗ, ಆಡಿಯೊ ಭಾಗಗಳನ್ನು ಲಿಪ್ಯಂತರಗಳೊಂದಿಗೆ ಬದಲಾಯಿಸಿ.", @@ -8284,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge ಸರಿ — {count} ಕ್ಲಿಪ್(ಗಳು) {model} ಮೂಲಕ ಲಿಪ್ಯಂತರಿಸಲಾಗಿದೆ", "modalityBridgeAudioTestNoop": "Audio Bridge ಸಕ್ರಿಯವಾಗಲಿಲ್ಲ (ಗುರಿಯು ಆಡಿಯೊವನ್ನು ಬೆಂಬಲಿಸಬಹುದು, ಯಾವುದೇ STT ಪೂರೈಕೆದಾರ ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ ಅಥವಾ Bridge ನಿಷ್ಕ್ರಿಯಗೊಂಡಿದೆ)", "modalityBridgeAudioTestError": "ಆಡಿಯೊ ಪರೀಕ್ಷೆ ವಿಫಲವಾಗಿದೆ: {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "ವೀಡಿಯೊ ಬ್ರಿಡ್ಜ್", "modalityBridgeVideoDesc": "ಮಾದರಿ ವೀಡಿಯೊ ಫ್ರೇಮ್ಗಳನ್ನು ತೆಗೆದುಕೊಂಡು, ಅವುಗಳನ್ನು ದೃಶ್ಯ ಮಾದರಿಯೊಂದಿಗೆ ವಿವರಿಸಿ ಮತ್ತು ಆಯ್ಕೆಮಾಡಿದ ಪಠ್ಯ ಮಾದರಿಯೊಂದಿಗೆ ಮುಂದುವರಿಯಿರಿ.", "modalityBridgeVideoRuntimeReady": "ರನ್ಟೈಮ್ ಸಿದ್ಧವಾಗಿದೆ", "modalityBridgeVideoRuntimeChecking": "ರನ್ಟೈಮ್ ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ…", @@ -8382,7 +8382,7 @@ "qdrantCollection": "ಸಂಗ್ರಹ" }, "contextRtk": { - "title": "RTK Engine", + "title": "RTK ಎಂಜಿನ್", "description": "ಟೂಲ್ ಔಟ್ಪುಟ್, ಟರ್ಮಿನಲ್ ಲಾಗ್ಗಳು ಮತ್ತು ಬಿಲ್ಡ್ ಫಲಿತಾಂಶಗಳಿಗಾಗಿ ಕಮಾಂಡ್-ಅರಿವಿನ ಸಂಕುಚನ.", "enabled": "ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ", "intensity": "ತೀವ್ರತೆ", @@ -8506,7 +8506,7 @@ "description": "ಸ್ಪಷ್ಟವಾದ ಸಾಲು-ಎಣಿಕೆ ಗುರುತುಗಳೊಂದಿಗೆ ಏಕರೂಪದ JSON ಅರೇಗಳ ನಷ್ಟರಹಿತ ಕೋಷ್ಟಕ ಸಂಕುಚನ." }, "session-dedup": { - "name": "Session Dedup", + "name": "ಸೆಷನ್ ನಕಲು ನಿವಾರಣೆ", "description": "ಮರುಪಡೆಯಬಹುದಾದ ವಿಷಯ ಗುರುತುಗಳೊಂದಿಗೆ ವಿವಿಧ ಟರ್ನ್ಗಳಾದ್ಯಂತ ಬ್ಲಾಕ್ ನಕಲು ನಿವಾರಣೆ." }, "ccr": { @@ -8908,7 +8908,7 @@ "save": "ಉಳಿಸಿ" }, "contextCaveman": { - "title": "Caveman Engine", + "title": "Caveman ಎಂಜಿನ್", "description": "ನಿಯಮ-ಆಧಾರಿತ ಸಂದೇಶ ಸಂಕುಚನ, ಭಾಷಾ ಪ್ಯಾಕ್ಗಳು, ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ಔಟ್ಪುಟ್ ಮೋಡ್ ನಿಯಂತ್ರಣಗಳು.", "advancedConfig": "ಸುಧಾರಿತ ಕಾನ್ಫಿಗರೇಶನ್", "advancedConfigDesc": "ಸಂಕುಚನದ ಕಾರ್ಯವಿಧಾನವನ್ನು ಸೂಕ್ಷ್ಮವಾಗಿ ಹೊಂದಿಸಿ", @@ -9343,7 +9343,7 @@ "evaluateStepDescription": "ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ನಿರೀಕ್ಷಿತ ಮಾನದಂಡಗಳೊಂದಿಗೆ ಹೋಲಿಸಲಾಗುತ್ತದೆ. ವಿಳಂಬ ಮಾಪಕಗಳು ಮತ್ತು ವಿವರವಾದ ಪ್ರತಿಕ್ರಿಯೆಯೊಂದಿಗೆ ಪ್ರತಿ ಪ್ರಕರಣದ ಉತ್ತೀರ್ಣ/ಅನುತ್ತೀರ್ಣ ಸ್ಥಿತಿಯನ್ನು ನೋಡಿ.", "evalsStrategyContainsLabel": "ಒಳಗೊಂಡಿದೆ", "evalsStrategyExactLabel": "ನಿಖರ ಹೊಂದಾಣಿಕೆ", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಷನ್", "evalsStrategyCustomLabel": "ಕಸ್ಟಮ್ ತರ್ಕ", "evalsStrategyContainsDescription": "LLM ಔಟ್ಪುಟ್ ನಿರೀಕ್ಷಿತ ಉಪಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ.", "evalsStrategyExactDescription": "LLM ಔಟ್ಪುಟ್ ನಿರೀಕ್ಷಿತ ಮೌಲ್ಯಕ್ಕೆ ನಿಖರವಾಗಿ ಹೊಂದಾಣಿಕೆಯಾಗುತ್ತದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ.", @@ -9720,8 +9720,8 @@ "chooseAuthMethod": "ನಿಮ್ಮ ದೃಢೀಕರಣ ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡಿ:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", + "googleAccount": "Google ಖಾತೆ", + "githubAccount": "GitHub ಖಾತೆ", "importToken": "ಟೋಕನ್ ಆಮದುಮಾಡಿ", "pasteToken": "Kiro IDE ನಿಂದ ರಿಫ್ರೆಶ್ ಟೋಕನ್ ಅನ್ನು ಅಂಟಿಸಿ.", "awsRegion": "AWS ಪ್ರದೇಶ", @@ -9970,7 +9970,7 @@ "howItWorksDescription": "ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನಿಂದ ನಮ್ಮ ಬುದ್ಧಿವಂತ ರೂಟಿಂಗ್ ಲೇಯರ್ ಮೂಲಕ ಕಾರ್ಯಕ್ಕೆ ಅತ್ಯುತ್ತಮವಾದ ಪೂರೈಕೆದಾರರ ಬಳಿಗೆ ಡೇಟಾ ಸುಗಮವಾಗಿ ಹರಿಯುತ್ತದೆ.", "howItWorksStep1Title": "1. CLI ಮತ್ತು SDKಗಳು", "howItWorksStep1Description": "ನಿಮ್ಮ ವಿನಂತಿಗಳು ನಿಮ್ಮ ಮೆಚ್ಚಿನ ಪರಿಕರಗಳಿಂದ ಅಥವಾ ನಮ್ಮ ಏಕೀಕೃತ SDK ಯಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ. ಕೇವಲ ಬೇಸ್ URL ಅನ್ನು ಬದಲಾಯಿಸಿ.", - "howItWorksStep2Title": "2. OmniRoute Hub", + "howItWorksStep2Title": "2. OmniRoute ಹಬ್", "howItWorksStep2Description": "ನಮ್ಮ ಎಂಜಿನ್ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು ವಿಶ್ಲೇಷಿಸುತ್ತದೆ, ಪೂರೈಕೆದಾರರ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಕನಿಷ್ಠ ವಿಳಂಬ ಅಥವಾ ವೆಚ್ಚಕ್ಕಾಗಿ ರೂಟ್ ಮಾಡುತ್ತದೆ.", "howItWorksStep3Title": "3. AI ಪೂರೈಕೆದಾರರು", "howItWorksStep3Description": "ವಿನಂತಿಯನ್ನು OpenAI, Anthropic, Gemini ಅಥವಾ ಇತರ ಪೂರೈಕೆದಾರರು ತಕ್ಷಣವೇ ಪೂರೈಸುತ್ತಾರೆ.", @@ -10968,9 +10968,9 @@ "strategyLatency": "ಲೇಟೆನ್ಸಿ-ಆಪ್ಟಿಮೈಸ್ಡ್", "poolMembersLabel": "ಪೂಲ್ ಸದಸ್ಯರು ({count})", "poolNoMembers": "ಈ ಪೂಲ್ನಲ್ಲಿ ಇನ್ನೂ ಯಾವುದೇ ಪ್ರಾಕ್ಸಿಗಳಿಲ್ಲ.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# ನಿರ್ಗಮನ} other {# ನಿರ್ಗಮನಗಳು}} ಅನ್ನು {connections, plural, one {# ಸಂಪರ್ಕ} other {# ಸಂಪರ್ಕಗಳು}} ಬಳಸಿವೆ · ಒಂದು ನಿರ್ಗಮನದಲ್ಲಿ ಗರಿಷ್ಠ {max} · ಕಳೆದ {hours} ಗಂ.", + "poolEgressObservationEmpty": "ಕಳೆದ {hours} ಗಂ. ಅವಧಿಯಲ್ಲಿ ಯಾವುದೇ ಟ್ರಾಫಿಕ್ ಕಂಡುಬಂದಿಲ್ಲ", + "poolEgressObservationHint": "ಈ ಸಮಯಾವಧಿಯ ಪ್ರಾಕ್ಸಿ ಲಾಗ್ನಿಂದ ಲೆಕ್ಕಿಸಲಾಗಿದೆ: ಈ ಪೂಲ್ನ ಸದಸ್ಯರಿಗಾಗಿ ಗಮನಿಸಲಾದ ವಿಭಿನ್ನ ಎಗ್ರೆಸ್ IPಗಳು ಮತ್ತು ಅವುಗಳನ್ನು ಬಳಸಿದ OmniRoute ಸಂಪರ್ಕಗಳು. \"ಒಂದು ನಿರ್ಗಮನದಲ್ಲಿ\" ಎಂದರೆ ಈ ಸಮಯಾವಧಿಯುದ್ದಕ್ಕೂ ಎಂದರ್ಥ, ಒಂದೇ ಸಮಯದಲ್ಲಿ ಎಂದಲ್ಲ. ಪ್ರತಿ-IP 429 ಲಾಕ್ಔಟ್ ಅದೇ ಪೂರೈಕೆದಾರ ಕುಟುಂಬದ ಸಂಪರ್ಕಗಳನ್ನು ಮಾತ್ರ ತಾತ್ಕಾಲಿಕವಾಗಿ ನಿಲ್ಲಿಸುತ್ತದೆ.", "poolRemove": "ತೆಗೆದುಹಾಕಿ", "poolRemoveFailed": "ಪೂಲ್ನಿಂದ ಪ್ರಾಕ್ಸಿಯನ್ನು ತೆಗೆದುಹಾಕಲು ವಿಫಲವಾಗಿದೆ", "poolAddLabel": "ಪ್ರಾಕ್ಸಿಯನ್ನು ಸೇರಿಸಿ", @@ -11678,7 +11678,7 @@ "endpointsBaseUrl": "ಮೂಲ URL", "endpointsCollapse": "ಕುಗ್ಗಿಸಿ", "endpointsExpand": "ವಿಸ್ತರಿಸಿ", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-ಸ್ಥಳೀಯ", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — codex ಮಾತ್ರ", "betaText": "Quota Share ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದರೆ ದೋಷಗಳು ಇರಬಹುದು. ಯಾವುದಾದರೂ ಕಂಡುಬಂದಿದೆಯೇ? ದಯವಿಟ್ಟು ವರದಿ ಮಾಡಿ.", @@ -12397,15 +12397,15 @@ "description": "ಪ್ರಮುಖ OpenAI-ಹೊಂದಾಣಿಕೆಯ ಇನ್ಫರೆನ್ಸ್ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು: ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು, ಎಂಬೆಡಿಂಗ್ಗಳು, ಚಿತ್ರಗಳು, ಆಡಿಯೊ (TTS/STT), ಮಾಡರೇಶನ್ಗಳು, ಮರುಶ್ರೇಯಾಂಕ ಮತ್ತು Responses API. AI ಏಜೆಂಟ್ಗಳಿಗಾಗಿ ಪ್ರಾಥಮಿಕ ಏಕೀಕರಣ ಇಂಟರ್ಫೇಸ್." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: ಸರ್ವ್", "description": "CLI ಮೂಲಕ OmniRoute ಸರ್ವರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ, ನಿಲ್ಲಿಸಿ ಮತ್ತು ಮರುಪ್ರಾರಂಭಿಸಿ. ಡೀಮನ್ ಮೋಡ್, ಪೋರ್ಟ್ ಸಂರಚನೆ, ಸ್ವಯಂ-ಚೇತರಿಕೆ, ಸಿಸ್ಟಂ ಟ್ರೇ ಏಕೀಕರಣ ಮತ್ತು ಡ್ಯಾಶ್ಬೋರ್ಡ್ ತೆರೆಯುವ ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ನಿರ್ವಹಿಸಿ." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: ಸ್ಥಿತಿಸ್ವಾಸ್ಥ್ಯ", "description": "CLI ಮೂಲಕ ಸರ್ವರ್ ಆರೋಗ್ಯ, ಘಟಕಗಳ ಸ್ಥಿತಿ ಮತ್ತು ಲೈವ್ ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ. ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ಗಳು ಮತ್ತು ಪೂರೈಕೆದಾರರ ಸ್ಥಿತಿಯ ನೈಜ-ಸಮಯದ ಡ್ಯಾಶ್ಬೋರ್ಡ್ಗಾಗಿ `health`, `health components` ಮತ್ತು `health watch` ಅನ್ನು ಚಲಾಯಿಸಿ." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: ಪೂರೈಕೆದಾರರು", "description": "CLI ಮೂಲಕ ಪೂರೈಕೆದಾರರ ಸಂಪರ್ಕಗಳನ್ನು ನಿರ್ವಹಿಸಿ: ಲಭ್ಯವಿರುವ/ಸಂರಚಿಸಲಾದ ಪೂರೈಕೆದಾರರನ್ನು ಪಟ್ಟಿ ಮಾಡಿ, ಸೇರಿಸಿ, ಪರೀಕ್ಷಿಸಿ, ಎಲ್ಲವನ್ನೂ ಪರೀಕ್ಷಿಸಿ, ಮೌಲ್ಯೀಕರಿಸಿ, API ಕೀಗಳನ್ನು ರೊಟೇಟ್ ಮಾಡಿ ಮತ್ತು ಪ್ರತಿ ಪೂರೈಕೆದಾರರ ಮೆಟ್ರಿಕ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ." }, "cli-keys": { @@ -12992,7 +12992,7 @@ "description": "ಬೈಟ್ಗಳು ಈಗಾಗಲೇ ಕ್ಲೈಂಟ್ ಅನ್ನು ತಲುಪಿದ ನಂತರವೂ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಮತ್ತೊಮ್ಮೆ ವಿನಂತಿಸಿ, ಅದನ್ನು ಜೋಡಿಸಲು ಸ್ಟ್ರೀಮ್ ಮರುಪಡೆಯುವಿಕೆಗೆ ಅನುಮತಿಸಿ." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "ಮಧ್ಯ-ಸ್ಟ್ರೀಮ್ ಮುಂದುವರಿಕೆಯನ್ನು ಟೂಲ್-ಕಾಲ್ಗೆ ಸುರಕ್ಷಿತವಾಗಿಸಿ: ಟೂಲ್ ಕಾಲ್ ಕಳುಹಿಸಿದ ನಂತರ ಕಡಿತಗೊಂಡ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಎಂದಿಗೂ ಪುನರಾರಂಭಿಸಬೇಡಿ (ಅದು ಇನ್ನೂ ಪ್ರಗತಿಯಲ್ಲಿದ್ದರೂ ಅಥವಾ ಈಗಾಗಲೇ ಪೂರ್ಣಗೊಂಡಿದ್ದರೂ), ಮತ್ತು ಸಂಪೂರ್ಣ ಮರುಪ್ರಯತ್ನ ಮಿತಿಯನ್ನು ಬಳಸುವ ಬದಲು ಒಂದು ಖಾಲಿ ಮುಂದುವರಿಕೆಯ ನಂತರ ನಿಲ್ಲಿಸಿ." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "ಸ್ಟ್ರೀಮ್ ಯಾವುದೇ ಉಪಯುಕ್ತ ಫ್ರೇಮ್ ಕಳುಹಿಸುವ ಮೊದಲೇ ಮುಚ್ಚಿದಾಗ ಮತ್ತು ಅದೇ ಸಂಪರ್ಕದ ಸೀಮಿತ ಮರುಪ್ರಯತ್ನ ಮುಗಿದಿದ್ದಾಗ ಒಮ್ಮೆ ಸಹೋದರ ಸಂಪರ್ಕಕ್ಕೆ ಫೇಲ್‌ಓವರ್ ಮಾಡಿ. ಬಳಸಬಹುದಾದ ಸಹೋದರ ಸಂಪರ್ಕ ಇಲ್ಲದಿದ್ದರೆ ಮೂಲ early-EOF ದೋಷವನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ. ಆಫ್: ಮರುಪ್ರಯತ್ನದ ನಂತರ early-EOF ಅಂತಿಮವಾಗಿಯೇ ಉಳಿಯುತ್ತದೆ." @@ -13035,12 +13035,12 @@ "description": "ಮಾದರಿಯು ಕ್ಲೈಂಟ್ಗೆ ಬಳಸಬಹುದಾದ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಹಿಂದಿರುಗಿಸುವವರೆಗೆ ಸ್ಟ್ರೀಮಿಂಗ್ ಅಲ್ಲದ ಸರ್ವರ್-ಸ್ವಾಮ್ಯದ ಪರಿಕರ ಕರೆಗಳನ್ನು ಮುಂದುವರಿಸಿ." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After ಮೂಲಸ್ಥಾನ", + "description": "ಒಟ್ಟುಗೂಡಿಸಿದ 429/503 ಅಲಭ್ಯ ಪ್ರತಿಕ್ರಿಯೆಗಳಲ್ಲಿ, ಖಚಿತವಾದ ಭವಿಷ್ಯದ ಮರುಪ್ರಯತ್ನ ಸಮಯ ತಿಳಿದಿಲ್ಲದಿದ್ದಾಗ ಕೃತಕ 1s ಕಳುಹಿಸುವ ಬದಲು Retry-After ಅನ್ನು ಬಿಟ್ಟುಬಿಡಿ, error.retry_after_provenance ಅನ್ನು ಸೇರಿಸಿ ಮತ್ತು ಕಾಂಬೊ ಡ್ರೇನ್ ಪಥಗಳಲ್ಲಿ ಗದ್ಯರೂಪದ ಮರುಪ್ರಯತ್ನ ಸುಳಿವುಗಳನ್ನು ಓದಿ." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "ರಕ್ಷಿತ-ಆದ್ಯತೆಯ ಮೂಲಸೌಕರ್ಯ ನಿಲುಗಡೆಗಳು 502 ಆಗಿ", + "description": "ಕೇವಲ ಕೋಟಾ-ಫಾಲ್ಬ್ಯಾಕ್ ಆದ್ಯತಾ ಗುರಿಯು ಕಾಂಬೊವನ್ನು ಕೋಟಾದ ಕಾರಣವಲ್ಲ ಎಂದು ಖಚಿತವಾಗಿ ಸಾಬೀತುಪಡಿಸಬಹುದಾದ ಕಾರಣಕ್ಕಾಗಿ ನಿಲ್ಲಿಸಿದಾಗ 503 ಬದಲು 502 ಉತ್ತರಿಸಿ: ತೆರೆದ ಪೂರೈಕೆದಾರ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಅಥವಾ ಮುನ್ಸೂಚಕ ಲೇಟೆನ್ಸಿ ಸ್ಕಿಪ್." } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "ಕಾಂಬೊ ಆರೋಗ್ಯ", "callLogs": "ಕರೆ ಲಾಗ್ಗಳು", "costs": "ವೆಚ್ಚಗಳು", - "playground": "Playground", + "playground": "ಪ್ರಯೋಗಾಂಗಣ", "nestedCombo": "ನೆಸ್ಟೆಡ್ ಕಾಂಬೊ", "modelTarget": "ಮಾದರಿ ಗುರಿ", "weight": "{value}% ತೂಕ", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "ಗುರಿ ಮಾದರಿಯಲ್ಲಿ ಅಗತ್ಯ ಸಾಮರ್ಥ್ಯಗಳು (ದೃಷ್ಟಿ, ಪರಿಕರಗಳು, ರಚನಾತ್ಮಕ ಔಟ್ಪುಟ್, ಸಂದರ್ಭ ವಿಂಡೋ) ಇಲ್ಲದಿದ್ದಾಗ ರವಾನಿಸುವ ಮೊದಲು ವಿನಂತಿಗಳನ್ನು ತಿರಸ್ಕರಿಸಿ. ಇದು ಕಾಂಬೊ-ಲೇಯರ್ ಹೊಂದಾಣಿಕೆ ಫಿಲ್ಟರ್ ಅನ್ನು ತಪ್ಪಿಸುವ ನೇರ ಏಕ-ಪೂರೈಕೆದಾರ ವಿನಂತಿಗಳನ್ನು ರಕ್ಷಿಸುತ್ತದೆ.", "featureFlagDisableContextWindowChecksDescription": "ನೇರ ಏಕ-ಮಾದರಿ ವಿನಂತಿಗಳಿಗಾಗಿ OmniRoute ನ ಸ್ಥಳೀಯ ಸಂದರ್ಭ-ವಿಂಡೋ ಮತ್ತು ಗರಿಷ್ಠ-ಇನ್ಪುಟ್-ಟೋಕನ್ ಪರಿಶೀಲನೆಯನ್ನು ಬಿಟ್ಟುಬಿಡಿ. ಅಪ್ಸ್ಟ್ರೀಮ್ ಪೂರೈಕೆದಾರರು ತಮ್ಮ ನೈಜ ಮಿತಿಗಳನ್ನು ಇನ್ನೂ ಜಾರಿಗೊಳಿಸುತ್ತಾರೆ. ಪ್ರಾಂಪ್ಟ್ ಸಂಕುಚನ ಮತ್ತು ಔಟ್ಪುಟ್-ಟೋಕನ್ ಮಿತಿಗಳು ಸಕ್ರಿಯವಾಗಿಯೇ ಇರುತ್ತವೆ.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "ಹುಡುಕಾಟದ ಅಂಕಿಅಂಶಗಳು ಮತ್ತು ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು ಇನ್ನೂ ಸಕ್ರಿಯ ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿರುವ ಪೂರೈಕೆದಾರರನ್ನು ಮಾತ್ರ ಎಣಿಸುತ್ತವೆ (duckduckgo-free ನಂತಹ ಕೀಲಿರಹಿತ ಪೂರೈಕೆದಾರರನ್ನು ಯಾವಾಗಲೂ ಎಣಿಸಲಾಗುತ್ತದೆ). ಆಫ್ ಮಾಡಿದರೆ, ಉಳಿಸಿಕೊಂಡಿರುವ ಪ್ರತಿಯೊಂದು ಹುಡುಕಾಟ ಸಾಲನ್ನೂ ಪೂರೈಕೆದಾರರ ಐಡಿಯೊಂದಿಗೆ ಇರಿಸಿಕೊಳ್ಳುತ್ತದೆ.", "publicSystem": { "notFound": { "title": "ಪುಟ ಕಂಡುಬಂದಿಲ್ಲ", @@ -13978,7 +13978,7 @@ "runners": "ರನ್ನರ್ಗಳು", "tasks": "ಕಾರ್ಯಗಳು", "colName": "ಹೆಸರು", - "colClis": "CLIs", + "colClis": "CLIಗಳು", "colStatus": "ಸ್ಥಿತಿ", "colTask": "ಕಾರ್ಯ", "colMode": "ಮೋಡ್", @@ -14051,9 +14051,9 @@ "filterSources": "ಮೂಲಗಳು", "filterProviders": "ಪೂರೈಕೆದಾರರು", "clearFilters": "ಫಿಲ್ಟರ್ಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "ಕ್ಲೌಡ್ ಏಜೆಂಟ್", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "ಕಂಡಕ್ಟರ್", "sourceStale": "{since} ರಿಂದ ಹಳೆಯದಾಗಿದೆ", "sourceOffline": "ಆಫ್ಲೈನ್", "sourceCollapse": "ಕುಗ್ಗಿಸಿ", diff --git a/src/i18n/messages/ko.json b/src/i18n/messages/ko.json index 9ba9dc3094..6d4047278f 100644 --- a/src/i18n/messages/ko.json +++ b/src/i18n/messages/ko.json @@ -31,7 +31,7 @@ "active": "활성", "inactive": "비활성", "noData": "사용 가능한 데이터가 없습니다.", - "nothingHere": "Nothing here yet", + "nothingHere": "아직 아무것도 없습니다", "configure": "구성", "manualConfig": "수동 구성", "manage": "관리", @@ -47,7 +47,7 @@ "time": "시간", "details": "세부정보", "created": "생성됨", - "lastUsed": "Last Refreshed", + "lastUsed": "마지막 새로고침", "loadMore": "더 로드하기", "noResults": "검색결과가 없습니다", "reloadPage": "페이지 새로고침", @@ -70,8 +70,8 @@ "note": "참고", "free": "무료", "skipToContent": "콘텐츠로 건너뛰기", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "서버에 문제가 발생했습니다. 일부 기능을 사용할 수 없을 수 있습니다.", + "maintenanceServerUnreachable": "서버에 연결할 수 없습니다. 다시 연결하는 중...", "accept": "accept", "accountId": "accountId", "alias": "alias", @@ -150,9 +150,9 @@ "Failed to reset pricing": "가격을 재설정하지 못했습니다.", "apikey": "API 키", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "대시보드로 이동", + "checkSystemStatus": "시스템 상태 확인", + "selectModel": "모델 선택", "addModel": "모델 추가", "effortNone": "없음", "effortLow": "낮음", @@ -164,10 +164,10 @@ "reasoningEffort": "추론 노력", "wireApi": "Wire API", "modelAliases": "모델 별칭", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "콤보", + "noModelsFound": "모델을 찾을 수 없습니다", + "clear": "지우기", + "done": "완료", "selectAll": "모두 선택", "unselectAll": "선택 해제", "visibleModels": "표시됨", @@ -184,519 +184,519 @@ "selectAllProviders": "모든 공급자를 확인하세요", "clearProviderSelection": "제공자 선택 해제", "providersSelectedCount": "{count}개의 제공자가 확인되었습니다.", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "오류 발생", + "comboDeleted": "콤보가 삭제되었습니다", + "hide": "숨기기", + "creating": "생성 중", + "comboCreated": "콤보가 생성되었습니다", + "swapFormats": "형식 교체", + "daysAgo": "일 전", + "retries": "재시도 횟수", + "errorDuringRestore": "복원 중 오류 발생", + "eventsAppearHint": "이벤트 표시 힌트", + "noLockouts": "잠금 없음", + "webSearchDesc": "웹 검색 설명", + "audioProvidersHeading": "오디오 제공업체 제목", "cloudAgentProviders": "클라우드 에이전트 제공업체", - "minutesAgo": "Minutes Ago", + "minutesAgo": "분 전", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "실시간 자동 새로고침 중", + "webSearch": "웹 검색", + "anthropicPrefixPlaceholder": "Anthropic 접두사 자리표시자", + "addModelToCombo": "콤보에 모델 추가", + "failedToLoad": "불러오지 못했습니다", + "categoryMedia": "미디어 카테고리", + "enableCloud": "클라우드 활성화", + "expirationBannerExpiringSoon": "만료 배너: 곧 만료 예정", + "retry": "다시 시도", + "embeddings": "임베딩", + "errorCount": "오류 수", + "backupReasonManual": "백업 사유: 수동", + "safeSearchModerate": "보통 수준의 안전 검색", + "activeLimiters": "활성 제한기", + "a2aCardTitle": "A2A 카드 제목", + "cloudWorkerUnreachable": "Cloud Worker에 연결할 수 없음", + "testFailed": "테스트 실패", + "compatibleBaseUrlHint": "호환되는 기본 URL 안내", + "usageTracking": "사용량 추적", + "disableCloudTitle": "Cloud 비활성화 제목", + "noConnections": "연결 없음", + "providerHealth": "제공자 상태", + "confirmDbImport": "DB 가져오기 확인", + "notAvailableSymbol": "사용할 수 없음 기호", + "backupsAvailable": "사용 가능한 백업", + "providerAuto": "제공자 자동 선택", + "newProviderNamePlaceholder": "새 제공자 이름 자리표시자", + "a2aQuickStartStep2": "A2A 빠른 시작 2단계", + "ok": "확인", + "available": "사용 가능", + "noBackupYet": "아직 백업 없음", + "more": "더 보기", + "noCompatibleYet": "아직 호환되는 항목 없음", + "multiProvider": "다중 제공자", + "repairEnvHint": "환경 복구 안내", + "disablingCloud": "Cloud 비활성화 중", + "testBench": "테스트 벤치", + "valid": "유효함", + "cloudBenefitShare": "Cloud 혜택 공유", + "mcpCardTitle": "MCP 카드 제목", + "disableConfirm": "비활성화 확인", + "filters": "필터", + "expirationBannerExpiredDesc": "만료된 만료 배너 설명", + "saveComboDefaults": "조합 기본값 저장", + "cloudConnectedVerified": "Cloud 연결 확인됨", + "uptime": "가동 시간", + "compatibleProdPlaceholder": "호환 프로덕션 자리표시자", + "fallbackChainsTitle": "대체 체인 제목", + "oauthLabel": "OAuth 레이블", + "a2aCardDescription": "A2A 카드 설명", + "okShort": "확인", + "maintenance": "유지보수", + "formatConverter": "형식 변환기", + "zedImportNetworkError": "Zed 가져오기 네트워크 오류", + "apiKeyLabel": "API 키 레이블", + "noModelsForProvider": "제공업체에 모델 없음", + "mcpCardDescription": "MCP 카드 설명", + "apiTypeLabel": "API 유형 레이블", + "configuredProvidersLabel": "구성된 제공업체 레이블", + "maxRetriesLabel": "최대 재시도 횟수 레이블", + "title": "제목", + "output": "출력", + "prefixHint": "접두사 힌트", + "skipWizard": "마법사 건너뛰기", + "failedCount": "실패 횟수", + "confirmDbImportDesc": "DB 가져오기 확인 설명", + "entries": "항목", + "until": "종료 시점", + "disableCombo": "콤보 비활성화", + "liveMonitorDescriptionPrefix": "실시간 모니터 설명 접두사", + "runningCount": "실행 중 개수", + "noActiveConnectionsInGroup": "그룹에 활성 연결 없음", + "savedSuccessfully": "저장되었습니다", + "systemStorage": "시스템 저장소", + "videoDesc": "동영상 설명", + "maxResults": "최대 결과 수", + "timeRangeMonth": "기간: 월", + "testSummary": "테스트 요약", + "failedSetPassword": "비밀번호 설정 실패", + "audio": "오디오", + "restore": "복원", + "disableWarning": "비활성화 경고", + "moderationsDesc": "검토 설명", + "providerHealthStatusAria": "제공업체 상태의 ARIA 레이블", + "modelNamePlaceholder": "모델 이름 자리표시자", + "mcpQuickStartStep2": "MCP 빠른 시작 2단계", + "quickStart": "빠른 시작", + "fullExportFailedWithError": "전체 내보내기 실패: 오류 발생", + "loadingBackups": "백업 불러오는 중", + "anthropicBaseUrlPlaceholder": "Anthropic 기본 URL 자리표시자", + "description": "설명", + "noProviderFound": "제공업체를 찾을 수 없음", + "auto": "자동", + "protocolsDescription": "프로토콜 설명", + "cloudSessionNote": "클라우드 세션 참고 사항", + "advancedSettings": "고급 설정", + "defaultStrategy": "기본 전략", + "purgeExpiredLogs": "만료된 로그 삭제", + "justNow": "방금 전", + "providerTestFailed": "Provider 테스트 실패", + "openaiBaseUrlPlaceholder": "OpenAI 기본 URL 자리표시자", + "image": "이미지", + "failedCreateChain": "체인 생성 실패", + "importDatabase": "데이터베이스 가져오기", + "allDataLocal": "모든 데이터는 로컬에 저장됩니다", + "sectionTitle": "섹션 제목", + "failedToggle": "전환 실패", + "editCombo": "콤보 편집", + "testResults": "테스트 결과", + "searchQuery": "검색어", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", - "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "duplicate": "복제", + "createCombo": "콤보 생성", + "searchTypeWeb": "웹 검색 유형", + "addChain": "체인 추가", + "prefixLabel": "접두사 레이블", + "listModelsDesc": "모델 목록 설명", + "databaseSize": "데이터베이스 크기", + "chainCreated": "체인이 생성되었습니다", + "providerTestTimeout": "Provider 테스트 시간 초과", + "routingStrategy": "라우팅 전략", + "translateAction": "번역 작업", + "exportFailed": "내보내기 실패", + "connectedVerificationPending": "연결됨, 확인 대기 중", + "a2aQuickStartTitle": "A2A 빠른 시작 제목", + "couldNotTest": "테스트할 수 없음", + "testAllCompatible": "호환되는 모든 항목 테스트", + "anthropicCompatibleName": "Anthropic 호환 이름", + "disabling": "비활성화 중", + "failedEnable": "활성화 실패", + "categoryUtility": "유틸리티 카테고리", + "customUrlOptional": "사용자 지정 URL(선택 사항)", + "localProviders": "로컬 Provider", + "comboNamePlaceholder": "콤보 이름 자리표시자", + "memoryRss": "메모리 RSS", + "disableProvider": "제공자 비활성화", + "welcomeDesc": "환영 설명", + "nameLabel": "이름 레이블", + "allOperational": "모두 정상 작동 중", + "backupNow": "지금 백업", + "providerMaxRetriesAria": "제공자 최대 재시도 횟수 ARIA", + "textToSpeechDesc": "텍스트 음성 변환 설명", + "machineId": "머신 ID", + "globalProxy": "전역 프록시", + "hitsMisses": "적중 및 미적중", + "testDesc": "테스트 설명", + "chatDesc": "채팅 설명", + "importSuccess": "가져오기 성공", + "chat": "채팅", + "a2aQuickStartStep1": "A2A 빠른 시작 1단계", + "importFailed": "가져오기 실패", + "inputPlaceholder": "입력란 자리 표시자", + "providerModelsTitle": "제공자 모델 제목", + "lastBackup": "마지막 백업", + "yourEndpoint": "내 엔드포인트", + "autoDisableThresholdDesc": "자동 비활성화 임계값 설명", + "rerankDesc": "재순위 지정 설명", + "modelsPathPlaceholder": "모델 경로 자리 표시자", + "noCombosYet": "아직 조합이 없습니다", + "connectedVerificationPendingWithError": "연결됨, 확인 대기 중(오류 발생)", + "comboDefaultsGuideHint1": "조합 기본값 가이드 힌트 1", + "enableCloudTitle": "클라우드 활성화 제목", + "configuredProvidersHint": "구성된 제공자 힌트", + "paused": "일시 중지됨", + "llmProviders": "LLM 제공자", + "enableCombo": "조합 활성화", + "removeProviderOverrideAria": "제공자 재정의 제거 ARIA", + "nodeVersion": "Node 버전", + "openai": "OpenAI", + "exportFailedWithError": "오류로 인해 내보내기 실패", + "proxyConfigured": "프록시 구성됨", + "concurrencyPerModel": "모델별 동시 처리 수", + "protocolTasksLabel": "프로토콜 작업 레이블", + "oauthProviders": "OAuth 제공자", + "lockedCount": "잠긴 수", + "deleteChainConfirm": "체인 삭제 확인", + "recentTranslations": "최근 번역", + "zedImportButton": "Zed 가져오기 버튼", + "responsesDesc": "응답 설명", + "testedCount": "테스트된 수", + "providersCommaSeparatedPlaceholder": "공급자 쉼표 구분 자리표시자", + "signatureDefaults": "서명 기본값", + "errorCreating": "생성 중 오류", + "timeRangeYear": "기간: 1년", "compatibleLabel": "호환", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "클라우드 비활성화 성공", + "deleteConfirm": "삭제 확인", + "check": "확인", + "safeSearch": "세이프서치", + "protocolLastActivity": "프로토콜 최근 활동", + "openMcpDashboard": "Mcp 대시보드 열기", "testBenchTab": "테스트 벤치", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "채팅 경로 레이블", + "retryDelay": "재시도 지연 시간", + "errorUpdating": "업데이트 중 오류", + "ideCliIntegrations": "IDE CLI 통합", + "imageGeneration": "이미지 생성", + "apiKeyRequired": "API 키 필요", + "resetAllTitle": "모두 초기화", + "connectionError": "연결 오류", + "modelName": "모델 이름", + "apiKeyForCheck": "확인용 API 키", + "cloudRequestTimeout": "클라우드 요청 시간 초과", + "showConfiguredOnly": "구성된 항목만 표시", "showFreeOnly": "무료만", "addFirstProvider": "첫 번째 공급자 추가", "addFirstProviderDesc": "OmniRoute를 통해 요청 라우팅을 시작하려면 AI 공급자를 연결하세요. 무료 공급자, API 키 또는 OAuth 계정을 사용할 수 있습니다.", "learnMore": "자세히 알아보기", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "도메인 포함", + "promptCache": "프롬프트 캐시", + "cloudConnected": "클라우드 연결됨", + "deleteChain": "체인 삭제", + "chatPathPlaceholder": "채팅 경로 자리표시자", + "databasePath": "데이터베이스 경로", + "usingLocalServer": "로컬 서버 사용 중", + "globalComboConfig": "전역 콤보 구성", + "backupFailed": "백업 실패", + "tabProtocols": "프로토콜 탭", + "continue": "계속", + "categorySearch": "카테고리 검색", + "rateLimitStatus": "요청 한도 상태", + "repairEnvSuccess": "환경 복구 성공", + "nameRequired": "이름 필수", + "country": "국가", + "trackMetricsDesc": "메트릭 추적 설명", + "durationSecondsShort": "기간(초) 단축", + "formatConverterDescription": "형식 변환기 설명", + "cloudBenefitAccess": "클라우드 혜택 이용", + "maxRetries": "최대 재시도 횟수", + "queueTimeout": "대기열 시간 초과", "queueDepth": "대기열 깊이", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "제공자 추가", + "realtime": "실시간", + "totalTranslations": "총 번역 수", + "protocolActiveStreamsLabel": "프로토콜 활성 스트림 레이블", + "repairEnv": "환경 복구", + "modelsCount": "모델 수", + "viewBackups": "백업 보기", + "responsesApi": "Responses API", + "copyComboName": "조합 이름 복사", + "failures": "실패", + "failedUpdate": "업데이트 실패", + "imageDesc": "이미지 설명", + "failedCreate": "생성 실패", + "remainingOfLimit": "한도 중 남은 양", + "protocolsTitle": "프로토콜 제목", + "expirationBannerExpiringSoonDesc": "만료 배너 곧 만료 설명", + "source": "소스", + "failed": "실패", "apiKeyMgmt": "API 키 관리", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "MCP 빠른 시작 1단계", + "runTest": "테스트 실행", + "loadingFallbackChains": "대체 체인 로드 중", + "healthy": "정상", + "version": "버전", + "saveBlockWeighted": "가중치 블록 저장", + "zedImportNone": "Zed 가져오기 없음", + "noBackupsYet": "아직 백업 없음", + "noGlobalProxy": "전역 프록시 없음", + "noModels": "모델 없음", + "stickyLimit": "고정 한도", + "passedCount": "통과 횟수", + "zedImportFailed": "Zed 가져오기 실패", + "saving": "저장 중", + "testAll": "모두 테스트", + "globalProxyDesc": "전역 프록시 설명", + "latencyP99": "지연 시간 P99", + "connectingToCloud": "클라우드에 연결 중", + "responses": "응답", + "errorDeleting": "삭제 오류", + "openaiPrefixPlaceholder": "Openai 접두사 자리 표시자", + "enterPassword": "비밀번호 입력", + "openA2aDashboard": "A2A 대시보드 열기", + "enableProvider": "제공자 활성화", + "modeTest": "테스트 모드", + "failedDeleteChain": "체인 삭제 실패", + "providerDesc": "제공자 설명", + "templateLoadHint": "템플릿 로드 힌트", + "lastFailure": "최근 실패", + "moveDown": "아래로 이동", + "providerLabel": "제공자 레이블", + "clearCacheFailed": "캐시 지우기 실패", + "imagesGenerations": "이미지 생성", + "repairEnvWorking": "환경 복구 작업 중", + "millisecondsShort": "밀리초", + "globalLabel": "전역 레이블", + "failuresPlural": "실패", + "completionsLegacyDesc": "레거시 완성 설명", + "searchProviders": "제공자 검색", + "chatPathHint": "채팅 경로 힌트", + "defaultStrategyDesc": "기본 전략 설명", + "latencyP95": "지연 시간 P95", + "textToSpeech": "텍스트 음성 변환", + "searchType": "검색 유형", + "messages": "메시지", + "aggregatorsGateways": "애그리게이터 및 게이트웨이", + "comboStrategyAria": "콤보 전략 Aria", + "input": "입력", + "testingConnection": "연결 테스트 중", + "excludeDomains": "도메인 제외", + "webCookieProviders": "웹 쿠키 제공자", + "allTestsPassed": "모든 테스트 통과", + "openaiCompatibleName": "OpenAI 호환 이름", + "warningCostOptimizedPartialPricing": "비용 최적화 부분 가격 책정 경고", + "comboDefaultsGuideTitle": "콤보 기본값 가이드 제목", + "hoursAgo": "시간 전", + "notAvailable": "사용할 수 없음", + "skipAndContinue": "건너뛰고 계속", + "moderations": "검토", + "proxyConfig": "프록시 구성", + "upstreamProxyProviders": "업스트림 프록시 제공업체", + "exportAll": "모두 내보내기", + "queuedCount": "대기 중 수", + "resetAll": "모두 초기화", + "noTranslations": "번역 없음", + "avgLatency": "평균 지연 시간", + "throttleStatus": "제한 상태", + "backupRetentionDesc": "백업 보존 설명", + "noCBData": "회로 차단기 데이터 없음", + "chainDeleted": "체인이 삭제됨", + "timeLeft": "남은 시간", + "expirationBannerExpired": "만료 배너 만료됨", + "language": "언어", + "invalidFileType": "잘못된 파일 형식", + "monitoredProviders": "모니터링 중인 제공업체", + "errors": "오류", + "heap": "힙", + "chatCompletions": "채팅 완성", + "exampleTemplatesHint": "예제 템플릿 힌트", + "retryDelayLabel": "재시도 지연 레이블", + "audioTranscription": "오디오 전사", + "fallbackChainsDesc": "폴백 체인 설명", + "exampleTemplates": "예제 템플릿", + "connectionsCount": "연결 수", + "modelsPathLabel": "모델 경로 레이블", + "activeProvidersHint": "활성 제공업체 힌트", + "activeLockouts": "활성 잠금", + "invalid": "유효하지 않음", + "skipPassword": "비밀번호 건너뛰기", + "moveUp": "위로 이동", + "timeRange": "시간 범위", + "stickyLimitDesc": "고정 제한 설명", + "cloudBenefitEdge": "클라우드 혜택 엣지", + "custom": "사용자 지정", + "verifying": "확인 중", + "baseUrlLabel": "기본 URL 레이블", + "setPassword": "비밀번호 설정", + "safeSearchStrict": "세이프서치 엄격", + "noChangesSinceBackup": "백업 이후 변경 사항 없음", + "modelsPathHint": "모델 경로 힌트", + "audioTranscriptions": "오디오 텍스트 변환", + "testCombo": "조합 테스트", + "mcpQuickStartTitle": "Mcp 빠른 시작 제목", + "comboUpdated": "조합 업데이트됨", + "weighted": "가중치 적용", + "providers": "제공업체", "ccCompatibleLabel": "CC 호환", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "대체 체인 없음 설명", + "yesImport": "예, 가져오기", + "lockoutsAutoRefreshHint": "잠금 자동 새로 고침 힌트", + "tabApis": "API 탭", + "sectionDescription": "섹션 설명", + "filter": "필터", + "purgeLogsFailed": "로그 완전 삭제 실패", + "latency": "지연 시간", + "testAllOAuth": "모든 OAuth 테스트", + "mcpQuickStartStep3": "Mcp 빠른 시작 3단계", + "repairEnvFailed": "환경 복구 실패", + "zedImportHint": "Zed 가져오기 힌트", + "modelsAcrossEndpoints": "엔드포인트 전반의 모델", + "autoDisableBannedAccounts": "차단된 계정 자동 비활성화", + "securityDesc": "보안 설명", + "listModels": "모델 목록", + "backupRestore": "백업 및 복원", + "target": "대상", + "zedImportSuccess": "Zed 가져오기 성공", + "lastHeaderUpdate": "마지막 헤더 업데이트", + "categoryCore": "핵심 카테고리", + "noFallbackChains": "대체 체인 없음", + "noSearchProviders": "검색 제공업체 없음", + "autoBalance": "자동 균형 조정", + "noModelsYet": "아직 모델 없음", + "signatureFamily": "서명 계열", + "externalApiCalls": "외부 API 호출", + "providerOverridesDesc": "공급자 재정의 설명", + "signatureTool": "서명 도구", + "connectionFailed": "연결 실패", + "activeLimitersPlural": "활성 제한기(복수)", + "doneDesc": "완료 설명", + "down": "중단", + "noDataYet": "아직 데이터 없음", + "activeProviders": "활성 공급자", + "nameInvalid": "잘못된 이름", + "skip": "건너뛰기", + "createChain": "체인 생성", + "audioSpeech": "오디오 음성", + "cacheCleared": "캐시 삭제됨", + "searchTypeNews": "검색 유형: 뉴스", + "durationMillisecondsShort": "기간(밀리초, 짧게)", + "addOpenAICompatible": "Open Ai 호환 서비스 추가", "chatTesterTab": "채팅 테스터", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "대기열에 추가됨", + "domainPlaceholder": "도메인 자리표시자", + "durationMinutesShort": "기간(분, 짧게)", + "verifyingConnection": "연결 확인 중", + "imageProviders": "이미지 공급자", + "protocolToolsLabel": "프로토콜 도구 레이블", + "queryPlaceholder": "쿼리 자리표시자", + "videoGeneration": "동영상 생성", + "timeRangeWeek": "기간: 1주", + "limitExhausted": "한도 소진됨", + "failedDisable": "비활성화 실패", + "inMemoryNote": "인메모리 참고 사항", + "compatibleHint": "호환성 힌트", + "errorShort": "오류(짧게)", + "advancedHint": "고급 힌트", + "restoreFailed": "복원 실패", + "searchProvidersHeading": "검색 공급자 제목", + "comboName": "조합 이름", + "autoDisableDescription": "자동 비활성화 설명", + "embeddingsDesc": "임베딩 설명", + "operational": "정상 작동 중", + "testAllApiKey": "모든 API 키 테스트", + "backupCreated": "백업 생성됨", + "errorDuringImport": "가져오는 중 오류 발생", + "comboDefaultsGuideHint2": "콤보 기본값 가이드 힌트 2", + "connecting": "연결 중", + "fillModelAndProviders": "모델 및 제공자 입력", + "syncing": "동기화 중", + "resetConfirm": "초기화 확인", + "trackMetrics": "지표 추적", + "successful": "성공", + "recovering": "복구 중", + "autoDisableThreshold": "자동 비활성화 임계값", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "데이터 동기화 중", + "cloudBenefitPorts": "클라우드 혜택 포트", + "compatibleProviders": "호환 제공자", "freeTierProviders": "무료 계층 공급자", "freeTierLabel": "무료 등급 이용 가능", "freeTierProvidersDesc": "무료 등급이 있는 공급자 - 일부는 API 키 등록이 필요하고 다른 공급자는 자격 증명이 전혀 필요하지 않습니다.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "캐시 지우기", + "reqs": "요청 수", + "addAnthropicCompatible": "Anthropic 호환 제공자 추가", + "apiKeyProviders": "API 키 제공자", + "tabsAria": "탭 ARIA", + "resetting": "초기화 중", + "millisecondsAbbr": "밀리초 약어", + "backupReasonPreRestore": "복원 전 백업 사유", + "disableCloud": "클라우드 비활성화", + "newProviderNameAria": "새 제공자 이름 ARIA", + "passwordsMismatch": "비밀번호가 일치하지 않습니다", + "a2aQuickStartStep3": "A2A 빠른 시작 3단계", + "liveMonitorDescriptionSuffix": "실시간 모니터 설명 접미사", + "failedAddProvider": "제공자 추가 실패", + "addAtLeastOneProvider": "제공자를 하나 이상 추가하세요", + "reasonSeparator": "사유 구분 기호", + "zedImporting": "Zed 가져오는 중", + "confirmPasswordPlaceholder": "비밀번호 확인 자리표시자", + "whatYouGet": "제공되는 기능", + "signatureSession": "서명 세션", + "errorCountNoCode": "코드 없는 오류 수", + "testing": "테스트 중", + "providersCommaSeparated": "쉼표로 구분된 제공자", + "exportDatabase": "데이터베이스 내보내기", + "hitRate": "적중률", + "completionsLegacy": "완료 레거시", + "removeModel": "모델 제거", + "timeRangeDay": "기간: 일", + "cloudRequestFailed": "클라우드 요청 실패", + "updatedAt": "업데이트 시간", + "monitoredProvidersHint": "모니터링되는 제공업체 안내", + "connectionSuccessful": "연결 성공", + "latencyP50": "지연 시간 P50", + "logsDeleted": "로그 삭제됨", + "chatTester": "채팅 테스터", + "safeSearchOff": "안전 검색 꺼짐", + "nameHint": "이름 안내", + "debugToggle": "디버그 토글", + "embedding": "임베딩", + "issuesLabel": "문제 레이블", + "optionAny": "옵션: 모두", + "maxNestingDepth": "최대 중첩 깊이", + "rerank": "재순위화", + "checking": "확인 중", + "getStarted": "시작하기", + "restoreSuccess": "복원 성공", + "issuesDetected": "문제 감지됨", + "signatureCache": "서명 캐시", + "modelLockouts": "모델 잠금", + "usingCloudProxy": "클라우드 프록시 사용 중", + "loadingHealth": "상태 불러오는 중", + "providerOverrides": "제공업체 재정의", + "audioTranscriptionDesc": "오디오 전사 설명", + "learnedFromHeaders": "헤더에서 학습됨", + "totalRequests": "총 요청 수", + "cloudUnstableNote": "클라우드 불안정 안내", "gamificationAdmin": "게임화 관리자", "monitorAnomaliesAndHealth": "이상 현상 및 시스템 상태 모니터링", "flaggedAnomalies": "플래그가 지정된 이상 현상", @@ -704,7 +704,7 @@ "apiKey": "API 키", "xpLastHour": "경험치 (1시간)", "zScore": "Z-점수", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "의심스러움", "tokensCommunityServers": "커뮤니티 서버", "tokensServerNamePlaceholder": "서버 이름", "tokensApiKeyPlaceholder": "API 키", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "더 로드 중…", "recommended": "권장", "understand": "확인했습니다", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "배치 처리", + "batchConceptSubtitle": "24시간 이내에 완료되는 비동기 방식으로 수천 건의 요청을 약 50%의 비용으로 처리하세요. 평가, 분류 및 임베딩에 적합합니다.", + "batchConceptHowItWorks": "작동 방식", + "batchConceptBenefit50pct": "입력 및 출력 토큰 50% 할인", + "batchConceptAsync24h": "24시간 완료 기한의 비동기 처리", + "batchConceptUseCases": "대량 분류, 평가 및 임베딩에 최적", + "batchHeaderSubtitle": "여러 요청을 하나의 작업으로 실행", + "batchStep1": "1 · JSONL 업로드", + "batchStep1Desc": "요청 추가", + "batchStep2": "2 · 배치 생성", + "batchStep2Desc": "작업 실행", + "batchStep3": "3 · 결과 가져오기", + "batchStep3Desc": "출력 다운로드", + "filesConceptTitle": "배치 파일", + "filesConceptSubtitle": "배치에서 사용하는 JSONL 파일: 입력 요청, 결과 및 오류.", + "filesConceptInput": "입력 — 줄마다 하나의 요청이 포함된 JSONL", + "filesConceptOutput": "출력 — 완료된 요청의 결과", + "filesConceptError": "오류 — 실패한 요청", + "filesConceptRetention": "보관 기간: 기본 30일(Anthropic은 29일)", + "wizardTitle": "새 배치", + "wizardClose": "닫기", + "wizardNext": "다음", + "wizardBack": "뒤로", + "wizardCancel": "취소", + "wizardCreate": "배치 생성", + "wizardCreating": "생성 중…", + "wizardStep1Destination": "대상", + "wizardStep2Input": "입력", + "wizardStep3Validate": "검증", + "wizardStep4Cost": "비용 및 생성", + "wizardProviderLabel": "제공업체", + "wizardEndpointLabel": "엔드포인트", + "wizardModelLabel": "모델", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV(자동 변환)", + "wizardDropOrPick": "파일을 끌어다 놓거나 클릭하여 선택", + "wizardCsvMappingTitle": "CSV 열 → 요청 필드 매핑", + "wizardCsvMappingAddField": "필드 추가", "wizardCsvNoColumns": "CSV 헤더에서 열이 감지되지 않았습니다.", "wizardCsvIgnoreColumn": "— 무시 —", "wizardCsvCustomIdMapped": "custom_id 매핑됨", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count}개 행 파싱됨", "wizardCsvRowsSkipped": "{count}개 행 건너뜀", "wizardCsvRowError": "행 {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "모든 줄이 유효함", "wizardValidating": "유효성 검사 중…", "wizardValidationParseFailed": "유효성 검사 실패 — 콘텐츠를 파싱할 수 없습니다.", "wizardValidationSummary": "{lines}개 줄 · {ids}개의 고유 custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "중복된 custom_ids 감지됨:", "wizardValidationFirstErrors": "오류 (처음 {count}개):", "wizardValidationLine": "줄 {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "검증 오류", + "wizardValidationPreview": "미리 보기(처음 5개 요청)", + "wizardValidationSamplingNote": "파일이 큽니다. 샘플링(처음 1000줄 + 마지막 100줄)을 통해 검증되었습니다. 전체 검증은 서버 측에서 실행됩니다.", + "wizardCostSync": "동기식 비용", + "wizardCostBatch": "배치 비용(-50%)", + "wizardCostSavings": "절감액", + "wizardCostEstimatedNotice": "예상 비용 — 실제 청구 금액은 달라질 수 있습니다.", + "wizardErrorUpload": "파일을 업로드하지 못했습니다. 다시 시도하세요.", + "wizardErrorCreate": "배치를 생성하지 못했습니다. 다시 시도하세요.", + "wizardEmptyProviders": "배치를 생성하려면 배치를 지원하는 제공업체(OpenAI, Anthropic 또는 Gemini)를 연결하세요.", + "uploadModalTitle": "배치 파일 업로드", + "uploadModalDropOrPick": ".jsonl 파일을 끌어다 놓거나 클릭하여 선택하세요", + "uploadModalUpload": "업로드", + "uploadModalCancel": "취소", + "uploadModalError": "업로드에 실패했습니다. 다시 시도하세요.", + "uploadModalSuccess": "업로드됨", + "uploadModalSizeLimit": "최대 512 MB", + "batchListNewButton": "새 배치", + "batchListAutoRefresh": "30초마다 자동 새로고침", + "batchListCostColumn": "비용", + "batchActionCancel": "취소", + "batchActionDownloadOutput": "출력 다운로드", + "batchActionDownloadErrors": "오류 다운로드", + "batchActionRetry": "실패한 요청 재시도", + "batchActionRetryConfirm": "실패한 요청 {n}개를 다시 시도하시겠습니까? 최종 비용은 실제 사용된 토큰 수에 따라 달라집니다.", + "expirationBadgeCritical": "긴급", + "expirationBadgeWarning": "임박", + "expirationBadgeNormal": "대기 중", + "expirationBadgeExpired": "만료됨", + "filesListUploadButton": "업로드", + "filesListUsedByColumn": "사용처", + "filesListUsedByNone": "없음", + "filesListUsedByRoleInput": "입력", + "filesListUsedByRoleOutput": "출력", + "filesListUsedByRoleError": "오류", + "filesListSizeColumn": "크기", + "batchListProgressPartial": "(일부)", + "batchListProviderColumn": "제공자", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "기타", + "batchListTitle": "배치", + "batchListCount": "배치 {count}개", + "batchListRemovingCompleted": "삭제 중…", + "batchListRemoveCompleted": "완료된 항목 삭제", + "batchListTableStatus": "상태", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "엔드포인트", + "batchListTableModel": "모델", + "batchListTableProgress": "진행률", + "batchListTableCreated": "생성일", + "batchListTableExpires": "만료", + "batchListLoading": "로딩 중…", + "batchListEmpty": "배치를 찾을 수 없습니다", + "batchListValidating": "검증 중…", + "batchStatusAll": "모든 상태", + "batchStatusInProgress": "진행 중", + "batchStatusValidating": "검증 중", + "batchStatusFinalizing": "마무리 중", + "batchStatusCompleted": "완료됨", + "batchStatusFailed": "실패함", + "batchStatusCancelled": "취소됨", + "batchStatusCancelling": "취소 중", + "batchStatusExpired": "만료됨", + "batchStatusCompletedWithFailures": "실패 항목이 있는 상태로 완료됨", + "batchStatusInProgressWithFailures": "실패 항목이 있는 상태로 진행 중", + "batchStatusFinalizingWithFailures": "실패 항목이 있는 상태로 마무리 중", + "batchStatusCancelledWithFailures": "실패 항목이 있는 상태로 취소됨", + "batchStatusExpiredWithFailures": "만료됨(일부 완료)", + "wizardCostEstimating": "비용 추정 중…", + "wizardCostRequests": "요청", + "wizardCostInputTok": "입력 토큰", + "wizardCostOutputTok": "출력 토큰", + "wizardCostWindow": "기간", + "wizardDestinationSelectProvider": "제공업체 선택…", + "wizardDestinationSelectModel": "모델 선택…", + "wizardDestinationConnectProvider": "제공업체 연결", + "batchListBatchCreated": "배치 {id}이(가) 생성되었습니다. 목록을 새로고침하는 중…", + "batchListBatchCreatedDismiss": "닫기", + "batchListRefreshing": "새로고침 중…", + "batchListRefresh": "새로고침", + "uploadFileModalRemove": "제거", + "uploadFileModalUploading": "업로드 중…", + "wizardInputReading": "파일 읽는 중…", + "wizardInputReady": "준비됨", + "wizardInputLargeFileLabel": "대용량 파일 — 샘플링 검증", + "wizardInputCsvJsonlReady": "JSONL이 생성되었습니다. 검증할 준비가 되었습니다.", + "wizardInputLargeFileWarning": "대용량 파일이 감지되었습니다. 검증은 샘플링 방식(처음 5 MB + 마지막 100 KB)으로 실행됩니다. 전체 검증은 서버 측에서 수행됩니다.", + "wizardCostWindow24h": "24시간 완료 기간", + "wizardValidationFieldsOk": "필수 필드 유효", + "filesListDelete": "삭제", + "filesListDownload": "다운로드", + "batchDetailActionCancel": "배치 취소", + "batchDetailActionRetry": "실패한 요청 재시도", + "batchDetailCancelling": "취소 중…", + "batchDetailRetrying": "재시도 준비 중…", + "batchDetailCancelConfirm": "이 배치를 취소하시겠습니까? 진행 중인 요청이 중지됩니다.", + "batchActionCancelError": "배치를 취소하지 못했습니다. 다시 시도하세요.", + "batchActionRetryError": "실패한 요청을 재시도하지 못했습니다. 다시 시도하세요.", + "batchConceptRetentionNote": "결과 및 오류 파일은 30일 동안 보관됩니다(Anthropic: 29일).", "batchFilesSizeColumn": "크기", "toggleNoAuthProvider": "인증 없는 공급자 전환", "loadingModels": "모델 로딩 중…", @@ -988,14 +988,14 @@ "disabled": "비활성화됨", "featureFlagOmnirouteEmergencyFallbackDescription": "예산이 소진된 요청을 긴급 무료 폴백 제공자/모델로 라우팅합니다.", "featureFlagArenaEloSyncEnabledDescription": "모델 지능 순위를 위해 주기적인 Arena AI 리더보드 ELO 동기화를 활성화합니다.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "콤보 라우팅에서 모델을 전환할 때 대화 요약을 생성하여 삽입합니다. 모델 전환을 서로 독립적으로 처리하고 기존 및 향후 모든 콤보에 대한 백그라운드 핸드오프 요청을 방지하려면 비활성화하세요.", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models에서 Claude Code 게이트웨이 모델 검색 목록에 비Claude 모델이 포함되도록 claude/<provider>/<model> 미러 ID를 광고합니다. 경고: 전역적으로 활성화하면 모든 클라이언트에 대해 카탈로그 항목이 두 배로 증가합니다.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> 게이트웨이 별칭의 마스터 스위치입니다. 켜짐(기본값): /v1/models가 조건에 맞는 모든 사고 가능 Claude 모델에 대해 사고하지 않는 변형을 표시하며, 요청에 전송된 no-think/ ID는 추론이 억제된 실제 모델로 다시 확인됩니다. 꺼짐: 변형이 표시되지 않으며 no-think/ ID는 다른 알 수 없는 모델 ID와 동일하게 처리됩니다. 이 기능이 켜져 있는 동안에도 모델별 ModelSpec.noThinkingAlias 옵트인/옵트아웃이 적용됩니다.", "featureFlagChatVirtualLanesEnabledDescription": "공급자 디스패치를 위해 테넌트별 적응형 가상 승인 레인을 활성화합니다(#9654): 한 테넌트의 폭증이 더 이상 다른 테넌트에 503을 반환하지 않습니다. OMNIROUTE_CHAT_VIRTUAL_LANES 환경 변수가 이 대시보드 설정보다 우선하며, 변경 사항은 서버 재시작 시 적용됩니다.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "대시보드 제공업체 페이지: 제공업체가 인정하는 신호에만 무료 배지를 표시합니다. 문서화된 무료 등급이 없는 등록된 제공업체의 표시 이름 추정 방식, 불리언이 아닌 무료 필드 및 :free 접미사는 사용하지 않습니다. 끄면 기존 배지 규칙이 유지됩니다.", + "featureFlagProxySkipRecentlyFailedDescription": "프록시 풀과 opencode의 계정별 로테이션은 방금 실패한 프록시(TCP 프로브 거부 또는 해당 프록시를 통해 429 응답 수신)를 프로세스별 유예 기간 동안 다시 제공하지 않습니다. 이 기간은 실패가 반복될 때마다 두 배로 늘어나며 상한이 있습니다. 프록시 상태는 기록되지 않으며, 모든 후보가 제외되면 선택 결과는 변경되지 않습니다. 기본적으로 꺼져 있으며, 선택 순서는 일반 로테이션과 정확히 같습니다.", + "featureFlagProxyPoolEgressObservationDescription": "대시보드의 프록시 풀 아래에 지난 24시간 동안 해당 풀의 구성원에 사용된 것으로 관찰된 송신 IP 수, 이를 사용한 연결 수, 단일 IP에서 관찰된 최대 연결 수를 표시합니다. 읽기 전용이며 프록시 로그에서 계산되고 라우팅에는 절대 사용되지 않습니다. 기본적으로 꺼져 있으며, 풀 편집기는 변경되지 않고 관찰 라우트는 null을 반환합니다.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "프록시 상태 점검에서 대상이 거부한 프로브(401/403/429: 프록시는 전달했지만 대상이 이 송신 IP를 거부함)가 정상 처리된 프로브처럼 프록시의 연속 실패 횟수를 초기화하도록 합니다. 기본적으로 꺼져 있으며, 거부는 중립으로 유지되어 연속 실패 횟수에 영향을 주지 않습니다. 어느 경우든 5xx는 판단 불가로 유지되며, 거부로 인해 프록시가 제거, 비활성화 또는 재활성화되는 일은 없습니다.", "sidebar": { "home": "홈", "dashboard": "대시보드", @@ -1012,11 +1012,11 @@ "settings": "설정", "translator": "번역기", "playground": "플레이그라운드", - "searchTools": "Search Tools", + "searchTools": "검색 도구", "agents": "에이전트", "cloudAgents": "클라우드 에이전트", - "memory": "Memory", - "skills": "Skills", + "memory": "메모리", + "skills": "스킬", "omniSkills": "옴니스킬", "agentSkills": "AgentSkills", "chaosConfig": "카오스 모드", @@ -1055,64 +1055,64 @@ "serverDisconnectedMsg": "프록시 서버가 중지되었거나 다시 시작되는 중입니다.", "expandSidebar": "사이드바 확장", "collapseSidebar": "사이드바 접기", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themes": "테마", + "presetColors": "인기 색상", + "createTheme": "테마 만들기", + "chooseColor": "색상 하나 선택", + "themeCoral": "코랄", + "themeBlue": "파란색", + "themeRed": "빨간색", + "themeGreen": "초록색", + "themeViolet": "보라색", + "themeOrange": "주황색", + "themeCyan": "시안", "cliToolsShort": "도구", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "배치 작업", + "themeSystem": "테마 시스템", + "whitelabelingDesc": "화이트 라벨링 설명", + "switchThemes": "테마 전환", + "themeAccentDesc": "테마 강조색 설명", + "uploadFavicon": "파비콘 업로드", + "themeDark": "어두운 테마", + "customLogoDesc": "사용자 지정 로고 설명", + "sidebarVisibilityToggle": "사이드바 표시 여부 전환", + "themeAccent": "테마 강조색", + "resetFavicon": "파비콘 재설정", + "whitelabeling": "화이트 라벨링", + "darkMode": "다크 모드", + "uploadLogo": "로고 업로드", + "themeLight": "밝은 테마", + "appName": "앱 이름", + "appNameDesc": "앱 이름 설명", + "resetLogo": "로고 재설정", + "customFavicon": "사용자 지정 파비콘", + "hideHealthLogs": "상태 로그 숨기기", + "customLogo": "사용자 지정 로고", + "appearance": "모양", + "themeSelectionAria": "테마 선택 ARIA", + "themeCreate": "테마 만들기", + "customFaviconDesc": "사용자 지정 파비콘 설명", + "logoPreview": "로고 미리보기", + "themeCustom": "사용자 지정 테마", + "hideHealthLogsDesc": "상태 로그 숨기기 설명", + "faviconPreview": "파비콘 미리보기", + "changelog": "변경 내역", + "contextSection": "컨텍스트 및 캐시", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "엔진 조합", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "울트라", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "압축 설정", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "조합 스튜디오", "combosLiveSubtitle": "실시간 라우팅 캐스케이드", "compressionStudio": "Compression Studio", "compressionExclusions": "제외 항목", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "실시간 엔진 캐스케이드", "compressionExclusionsSubtitle": "모델/엔드포인트 우회", "chaosConfigSubtitle": "다중 모델 병렬 실행", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "라우팅", + "protocolsSection": "프로토콜", + "agentsAiSection": "에이전트 및 AI", + "cacheContextSection": "캐시 및 컨텍스트", + "analyticsSection": "분석", + "costsSection": "비용", + "monitoringSection": "모니터링", + "auditSecuritySection": "감사 및 보안", + "devtoolsSection": "개발자 도구", + "configurationSection": "구성", + "aiFeaturesSection": "AI 기능", "mcp": "MCP", "a2a": "A2A", "plugins": "플러그인", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "API 엔드포인트", + "batchFiles": "파일", + "analyticsEvals": "평가", + "analyticsSearch": "검색", + "analyticsUtilization": "사용량", + "analyticsComboHealth": "조합 상태", + "analyticsCompression": "압축", + "costsBudget": "예산", "costsFreeTiers": "무료 티어 예산", "costsFreeTiersSubtitle": "월간 무료 토큰 허용량", "freeProviderRankings": "무료 제공자 순위", "freeProviderRankingsSubtitle": "모델 ELO 점수 기준 상위 무료 제공자 순위", "radar": "레이더 카탈로그", "radarSubtitle": "커뮤니티로 강화된 무료 모델 카탈로그", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "할당량 공유", + "costsPricing": "요금", + "logsProxy": "프록시 로그", + "logsConsole": "콘솔", + "logsActivity": "활동", + "auditMcp": "MCP 감사", "auditA2a": "A2A 감사", "settingsGeneral": "저장소", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "외관", + "settingsAi": "AI 설정", + "settingsSecurity": "보안", "settingsAccessTokens": "액세스 토큰", "settingsFeatureFlags": "기능 플래그", "settingsCache": "캐시", "settingsAuthz": "인가", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsRouting": "라우팅", + "settingsResilience": "복원력", "modelLockout": "모델 잠금", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "고급", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "제공업체 할당량", + "providerQuota": "제공업체 할당량", + "runtime": "런타임", + "consoleLogs": "콘솔 로그", + "logsTimeline": "타임라인", "logsTimelineSubtitle": "비주얼 요청 타임라인", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "대화", + "conversationsSubtitle": "다중 턴 에이전트형 대화", + "globalRouting": "글로벌 라우팅", + "mitmProxy": "MITM 프록시", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "에이전트형 기능", + "otherFeaturesSection": "기타 기능", + "compressionContextGroup": "컨텍스트 압축", + "gamificationGroup": "게임화", + "toolsGroup": "도구", + "integrationsGroup": "통합", + "proxyGroup": "프록시", + "costsParametersGroup": "비용 매개변수", + "auditGroup": "감사", + "batchGroup": "일괄 처리", + "homeSubtitle": "대시보드 개요", + "providersSubtitle": "AI 제공업체 관리", + "quotaTrackerSubtitle": "사용량 한도 추적", + "providerQuotaSubtitle": "제공업체 사용량 한도 추적", + "runtimeSubtitle": "실시간 복원력 및 세션", + "contextCombosSubtitle": "압축 엔진 결합", + "cliToolsSubtitle": "CLI 런타임 구성", + "agentsSubtitle": "로컬 에이전트 관리", + "cloudAgentsSubtitle": "클라우드 기반 에이전트 관리", + "apiEndpointsSubtitle": "사용자 지정 엔드포인트 공개", + "proxySubtitle": "HTTP 프록시 설정", + "mitmProxySubtitle": "MITM 가로채기", + "oneProxySubtitle": "공개 프록시 게이트웨이", + "leaderboard": "순위표", + "profile": "프로필", + "tokens": "토큰", + "gamificationAdmin": "게임화 관리자", + "leaderboardSubtitle": "순위 및 업적", + "profileSubtitle": "계정 및 환경설정", + "tokensSubtitle": "토큰 사용량 및 예산", + "gamificationAdminSubtitle": "이상 징후 모니터링 및 부정행위 방지", + "usageSubtitle": "트래픽 및 사용량 통계", + "analyticsComboHealthSubtitle": "콤보 대상 안정성", + "analyticsUtilizationSubtitle": "제공업체 이용률", + "costsSubtitle": "지출 내역", + "cacheSubtitle": "캐시 적중률", + "analyticsCompressionSubtitle": "토큰 절감 통계", + "analyticsSearchSubtitle": "검색 도구 분석", + "analyticsEvalsSubtitle": "평가 모음 결과", "providerStats": "제공자 통계", "providerStatsSubtitle": "지연 시간 및 성능 지표", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "애플리케이션 로그", + "logsProxySubtitle": "프록시 트래픽 로그", + "consoleLogsSubtitle": "콘솔 출력", + "logsActivitySubtitle": "사용자 활동 로그", + "healthSubtitle": "시스템 상태 점검", + "costsPricingSubtitle": "모델별 가격 책정 규칙", + "costsBudgetSubtitle": "예산 한도", + "costsQuotaShareSubtitle": "키 간 제공업체 할당량 공유", + "auditLogSubtitle": "인증 감사", + "auditMcpSubtitle": "MCP 서버 감사", + "auditA2aSubtitle": "A2A 프로토콜 감사", + "translatorSubtitle": "형식 변환", + "playgroundSubtitle": "테스트 프롬프트 실시간 실행", + "searchToolsSubtitle": "도구 레지스트리 검색", + "memorySubtitle": "영구 에이전트 메모리", + "omniSkillsSubtitle": "샌드박스 스킬 레지스트리", + "agentSkillsSubtitle": "A2A 스킬 레지스트리", + "mcpSubtitle": "MCP 서버 제어", + "a2aSubtitle": "A2A 프로토콜 서버", "pluginsSubtitle": "플러그인 마켓플레이스 및 설치", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "캐시된 미디어 파일", + "batchFilesSubtitle": "일괄 입출력 파일", + "settingsSubtitle": "모든 설정", "settingsGeneralSubtitle": "데이터베이스 및 백업", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "테마 및 레이아웃", + "settingsAiSubtitle": "AI 동작 기본값", + "globalRoutingSubtitle": "전역 라우팅 규칙", + "settingsResilienceSubtitle": "재시도 및 회로 차단기", + "settingsAdvancedSubtitle": "고급 사용자 옵션", + "settingsSecuritySubtitle": "인증 및 암호화", "settingsAccessTokensSubtitle": "원격 모드용 범위 지정 CLI 토큰", "settingsFeatureFlagsSubtitle": "시스템 기능 전환", "settingsCacheSubtitle": "모델 카탈로그 및 응답 캐싱", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "사이드바", + "settingsSidebarSubtitle": "사이드바 레이아웃 사용자 지정", "settingsAuthzSubtitle": "라우트 인벤토리 및 바이패스 정책", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "문서", + "issuesSubtitle": "버그 신고", + "changelogSubtitle": "릴리스 노트", "costsQuotaPlans": "플랜 및 할당량", "costsQuotaPlansSubtitle": "제공자별 플랜 구성", "activity": "활동", @@ -1278,8 +1278,8 @@ "agentBridge": "에이전트 브리지", "agentBridgeSubtitle": "IDE 에이전트 트래픽 가로채기", "trafficInspector": "트래픽 인스펙터", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "앱의 요청 및 응답 트래픽 검사", + "trafficInspectorPurpose": "애플리케이션이 AI 제공업체에 보내고 받는 내용을 정확히 확인하세요. 모든 OpenAI 호환 클라이언트에서 작동합니다.", "cliCode": "CLI 코드", "cliCodeSubtitle": "OmniRoute를 가리키는 코드 도구", "cliAgents": "CLI 에이전트", @@ -1345,7 +1345,7 @@ "refresh": "새로고침", "loading": "웹훅 로드 중...", "never": "없음", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {실패 없음} one {#건 실패} other {#건 실패}}", "testWebhook": "테스트 보내기", "testSuccess": "테스트 웹훅이 성공적으로 전송되었습니다.", "testFailed": "웹훅 테스트에 실패했습니다.", @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "최고의 도구" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "테마", + "description": "사전 설정된 테마를 선택하거나 단일 색상으로 나만의 테마를 만드세요", + "presetColors": "인기 색상", + "customTheme": "사용자 지정 테마", + "customThemeDesc": "테마 만들기를 클릭하고 색상을 하나 선택하세요", + "createTheme": "테마 만들기", + "activePreset": "활성 테마" }, "header": { "logout": "로그아웃", @@ -1594,60 +1594,60 @@ "endpoint": "엔드포인트", "endpointDescription": "프록시 엔드포인트, MCP, A2A 및 API 엔드포인트 관리", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol 서버 관리 및 도구", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Agent-to-Agent 프로토콜 작업 및 관측성", "settings": "설정", "settingsDescription": "환경설정 관리", "openaiCompatible": "OpenAI 호환", "anthropicCompatible": "Anthropic 호환", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "media": "미디어", + "mediaDescription": "이미지, 동영상 및 음악 생성", + "themes": "테마", + "themesDescription": "전체 대시보드 패널의 색상 테마를 선택하세요", + "costsDescription": "모든 제공업체의 지출을 추적하고 추세를 분석하며 AI 예산을 관리하세요", + "cacheDescription": "제공업체 프롬프트 캐시 효율성과 로컬 시맨틱 응답 재사용을 모니터링합니다.", + "limitsDescription": "API 키 및 제공업체별 속도 제한과 할당량을 구성합니다", + "runtimeDescription": "실시간 런타임 관측성 — 회로 차단기, 쿨다운, 모델 잠금, 세션 및 할당량 알림", + "apiManagerDescription": "OmniRoute 인스턴스의 API 키와 액세스 제어를 관리합니다", + "batchDescription": "일괄 API 호출을 통해 대량의 요청을 비동기식으로 처리합니다", + "contextCavemanDescription": "규칙 기반 메시지 압축, 언어 팩, 분석 및 출력 모드 제어.", + "contextRtkDescription": "도구 출력, 터미널 로그 및 빌드 결과를 위한 명령어 인식 압축.", + "contextCombosDescription": "다양한 라우팅 시나리오에서 엔진을 조합하는 방식을 정의합니다.", + "changelogDescription": "최신 플랫폼 기능과 공지 사항을 확인하세요.", + "agentsDescription": "AI 에이전트 도구(Codex, Devin, Jules 및 사용자 지정 에이전트)를 관리하고 구성합니다", + "cloudAgentsDescription": "실시간 작업 추적과 계획 승인을 통해 클라우드 기반 AI 에이전트를 오케스트레이션합니다", + "memoryDescription": "시맨틱 검색과 FTS5 전문 색인 기능을 갖춘 영구 대화 메모리", + "skillsDescription": "자동화된 프롬프트 및 도구 실행을 위한 샌드박스 스킬을 설치하고 관리합니다", + "agentSkillsDescription": "AI 클라이언트 통합을 위한 원클릭 URL 복사 기능을 갖춘 에이전트용 스킬 카탈로그", + "translatorDescription": "여러 API 형식 간에 프롬프트를 변환하고 테스트합니다: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "실시간 제공업체 응답과 형식 검사를 통해 프롬프트를 대화형으로 테스트합니다", + "searchToolsDescription": "검색 분석, 제공업체별 분석, 캐시 적중률 및 비용 추적", + "logsDescription": "실시간 요청 로그, 오류 추적 및 스트리밍 이벤트 검사기", + "auditDescription": "API 키 사용, MCP 도구 호출 및 정책 이벤트에 대한 규정 준수 감사 추적", + "webhooksDescription": "실시간 이벤트 알림을 수신하도록 웹훅 엔드포인트를 구성합니다", + "healthDescription": "시스템 상태 개요: 제공업체, 회로 차단기, 속도 제한 및 데이터베이스", + "proxyDescription": "제공업체로의 아웃바운드 연결을 위한 업스트림 프록시 설정을 구성합니다", + "apiEndpointsDescription": "사용자 지정 API 엔드포인트 구성 및 라우팅 재정의를 관리합니다", + "batchFilesDescription": "일괄 작업 출력 파일 및 결과를 탐색하고 관리합니다", + "analyticsEvalsDescription": "모델 평가 결과 및 성능 벤치마크", + "analyticsSearchDescription": "검색 쿼리 분석, 캐시 적중률 및 비용 추적", + "analyticsUtilizationDescription": "제공업체 사용률 지표 및 용량 계획", + "analyticsComboHealthDescription": "조합 라우팅 구성의 실시간 상태 및 성능", + "analyticsCompressionDescription": "컨텍스트 압축 분석 및 토큰 절감", + "costsBudgetDescription": "API 키 및 제공업체별 예산 한도와 지출 알림", + "costsPricingDescription": "토큰 비용 계산을 위한 사용자 지정 가격 설정", + "logsProxyDescription": "업스트림 프록시 요청 로그 및 트래픽 검사", + "logsConsoleDescription": "애플리케이션 콘솔 출력 및 디버그 로그", + "logsActivityDescription": "사용자 작업 및 시스템 이벤트 감사 추적", + "auditMcpDescription": "MCP 도구 호출 감사 추적 및 규정 준수 기록", "auditA2a": "A2A 감사", "auditA2aDescription": "A2A 작업 실행 감사 추적, 상태 전환 및 기술 호출 기록", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "테마, 브랜딩 및 시각적 사용자 지정", + "settingsAiDescription": "AI 동작, 사고 예산, 비전 및 메모리 설정", "settingsCacheDescription": "모델 카탈로그 캐시 항목의 TTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "인증, 권한 부여 및 액세스 제어 설정", "featureFlags": "기능 플래그", "featureFlagsDescription": "시스템 기능과 실험적 기능을 제어합니다", "featureFlagsActive": "{count} 활성", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "검색어와 일치하는 플래그가 없습니다.", "featureFlagsSaved": "플래그가 업데이트되었습니다.", "featureFlagsError": "플래그를 업데이트하지 못했습니다.", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "라우팅 규칙, 모델 별칭, 콤보 기본값 및 성능 저하 설정", + "settingsResilienceDescription": "서킷 브레이커, 재시도 및 폴백 설정", + "settingsAdvancedDescription": "고급 페이로드 규칙, 요청 제한 및 프록시 API 설정", + "mitmProxyDescription": "트래픽 검사 및 디버깅을 위한 MITM 프록시 설정 구성", + "oneProxyDescription": "고급 프록시 체이닝을 위한 1Proxy 설정 구성", "omniSkillsDescription": "자동화된 프롬프트 및 도구 실행을 위한 샌드박스 스킬 설치 및 관리" }, "cloudSyncStatus": { @@ -1701,46 +1701,46 @@ "routing": "라우팅", "resilience": "복원력", "advanced": "고급", - "accessTokens": "Access Tokens", - "featureFlags": "Feature Flags", - "logs": "Logs", - "auditLog": "Audit Log", - "console": "Console", - "logger": "Logger", - "translator": "Translator", - "playground": "Playground", - "add": "Add", - "edit": "Edit", - "apiKeys": "API Keys", - "models": "Models", - "cliCode": "CLI Code", - "cliAgents": "CLI Agents", - "acpAgents": "ACP Agents", - "endpoint": "Endpoint", - "apiManager": "API Manager", - "context": "Context", - "compression": "Compression", - "services": "Services", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", - "runtime": "Runtime", - "webhooks": "Webhooks", - "home": "Home", - "activity": "Activity", + "accessTokens": "액세스 토큰", + "featureFlags": "기능 플래그", + "logs": "로그", + "auditLog": "감사 로그", + "console": "콘솔", + "logger": "로거", + "translator": "번역기", + "playground": "플레이그라운드", + "add": "추가", + "edit": "편집", + "apiKeys": "API 키", + "models": "모델", + "cliCode": "CLI 코드", + "cliAgents": "CLI 에이전트", + "acpAgents": "ACP 에이전트", + "endpoint": "엔드포인트", + "apiManager": "API 관리자", + "context": "컨텍스트", + "compression": "압축", + "services": "서비스", + "analytics": "분석", + "costs": "비용", + "health": "상태", + "runtime": "런타임", + "webhooks": "웹훅", + "home": "홈", + "activity": "활동", "agentSkills": "AgentSkills", - "comboHealth": "Combo Health", - "evals": "Evals", - "search": "Search", - "utilization": "Utilization", - "apiEndpoints": "API Endpoints", - "audit": "Audit", + "comboHealth": "종합 상태", + "evals": "평가", + "search": "검색", + "utilization": "사용률", + "apiEndpoints": "API 엔드포인트", + "audit": "감사", "a2a": "A2A", "mcp": "MCP", - "batch": "Batch", - "files": "Files", - "media": "Media", - "cache": "Cache", + "batch": "배치", + "files": "파일", + "media": "미디어", + "cache": "캐시", "changelog": "변경 사항", "chaos": "카오스", "cloudAgents": "클라우드 에이전트", @@ -1761,8 +1761,8 @@ "quotaShare": "할당량 공유", "discovery": "탐색", "freeProviderRankings": "무료 제공업체 순위", - "radar": "Radar", - "setup": "Setup", + "radar": "레이더", + "setup": "설정", "freeTiers": "무료 티어", "gamification": "게이미피케이션", "leaderboard": "리더보드", @@ -1812,7 +1812,7 @@ "reportIssue": "문제 신고", "activeError": "{active} 활성 · {errors} 오류", "topologyLegendActive": "활성", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "최근", "topologyLegendError": "오류", "oauthLabel": "OAuth", "apiKeyLabel": "API 키", @@ -1826,11 +1826,11 @@ "updateStarted": "업데이트 시작됨...", "reloadingPageAutomatically": "페이지를 자동으로 새로고침하는 중...", "providerTopology": "공급자 토폴로지", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "최근 요청", + "recentRequestsEmpty": "아직 요청이 없습니다.", + "recentRequestsModel": "모델", + "recentRequestsTokens": "입력 / 출력", + "recentRequestsWhen": "시간", "downloadDmg": "DMG 다운로드 (macOS)", "downloadDmgDescription": "OmniRoute 데스크탑 앱의 새 버전이 출시되었습니다. 업데이트를 위해 macOS DMG 설치 프로그램을 다운로드하고 설치해 주십시오(현재: v{version}).", "downloadExe": "EXE 다운로드 (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "릴리스 노트", "readMore": "더 읽기", "noAuthLabel": "인증 없음", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "라우팅을 준비하세요", + "readinessTitle": "첫 번째 요청을 보내세요", + "readinessSubtitle": "간단한 4단계입니다. 진행하는 동안 OmniRoute가 준비 상태를 확인합니다.", + "readinessStep1": "제공업체 연결", + "readinessStep2": "엔드포인트 인증 구성", + "readinessStep3": "엔드포인트 복사", + "readinessStep4": "테스트 요청 보내기", + "readinessContinue": "설정 계속하기", + "readinessDismiss": "지금은 닫기" }, "analytics": { "title": "분석", @@ -2005,8 +2005,8 @@ "modelStatusError": "오류", "comboHealth": "콤보 건강 상태", "comboHealthDescription": "콤보 수준 할당량, 사용 분포 및 성능 메트릭", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "압축 분석", + "compressionAnalyticsDescription": "압축 분석 — 토큰 절감량, 모드별 분석 및 제공업체 통계.", "autoRoutingTotalAutoRequests": "총 자동 요청", "autoRoutingAvgSelectionScore": "평균 선택 점수", "autoRoutingExplorationRate": "탐색률", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "성능", "comboHealthPerformanceDescription": "라우팅된 콤보 트래픽의 신뢰성 및 처리량입니다.", "comboHealthExecutionTargetsDescription": "구조화된 콤보 대상에 대한 단계별 런타임 메트릭 및 할당량 가시성입니다.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "요청 {count}건", "comboHealthQuotaScope": "할당량 범위: {scope}", "comboHealthTrendValue": "트렌드: {trend}", "comboHealthFetchFailed": "콤보 상태 데이터를 가져오지 못했습니다", @@ -2258,9 +2258,9 @@ "fullAccess": "전체 액세스", "keyManagement": "API 키 관리", "keyManagementDesc": "엔드포인트에 대한 요청을 인증하기 위한 API 키 생성 및 관리", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "앱이 API 키를 통해 OmniRoute로 요청을 전송합니다", + "requestFlowYourApp": "앱", + "requestFlowApiKey": "API 키", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "총 키", "restricted": "제한됨", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "지금 이 키를 복사하여 저장하세요. 다시 표시되지 않습니다.", "done": "완료", "savePermissions": "권한 저장", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "허용된 엔드포인트", + "allEndpointsAllowed": "이 키는 모든 API 엔드포인트에 액세스할 수 있습니다.", + "endpointsRestricted": "{count}개의 엔드포인트{count, plural, one {} other {}}로 제한됩니다.", + "autoResolve": "자동 확인", + "autoResolveDesc": "이 API 키에 대해 모호한 모델 이름을 기본 제공업체로 자동 확인합니다.", "streamDefaultMode": "스트림 기본 호환성", "streamDefaultModeDesc": "이 키에 대해 생략된 `stream` 플래그를 제어합니다. JSON 모드는 클라이언트가 SSE를 명시적으로 요청하지 않는 한 비스트리밍 응답을 반환합니다.", "streamDefaultLegacy": "레거시", "streamDefaultJson": "JSON 호환", "streamDefaultBadge": "JSON 스트림 기본값", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "키 활성화", + "keyActiveDesc": "이 API 키를 활성화하거나 비활성화합니다. 비활성화된 키는 즉시 403 오류로 거부됩니다.", + "accessSchedule": "액세스 일정", + "accessScheduleDesc": "특정 시간과 요일에만 액세스하도록 제한합니다.", + "scheduleFrom": "시작", + "scheduleUntil": "종료", + "scheduleDays": "요일", + "scheduleTimezone": "시간대", + "scheduleTimezoneHint": "IANA 시간대 이름을 사용하세요(예: America/New_York, Europe/Berlin).", + "scheduleActive": "일정", + "disabled": "비활성화됨", + "daySun": "일", + "dayMon": "월", + "dayTue": "화", + "dayWed": "수", + "dayThu": "목", + "dayFri": "금", + "daySat": "토", "allowAll": "모두 허용", "restrict": "제한", "allowAllInfo": "이 키는 사용 가능한 모든 모델에 액세스할 수 있습니다.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "권한을 업데이트하지 못했습니다. 다시 시도해 주세요.", "unknownProvider": "알 수 없음", "copyMaskedKey": "마스크된 키 복사", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "전체 키는 생성 시에만 확인할 수 있으므로, 키를 처음 생성할 때 복사하세요", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {#개 기기} other {#개 기기}}", "devicesTooltip": "{count, plural, one {이 키에서 확인된 고유 IP/User-Agent 기기 #개(최근 30분)} other {이 키에서 확인된 고유 IP/User-Agent 기기 #개(최근 30분)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "허용된 조합", "allCombosAllowed": "이 키는 모든 조합을 사용할 수 있습니다.", "restrictedComboCount": "{count, plural, one {#개 조합} other {#개 조합}}으로 제한됨.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {저장된 항목 #개가} other {저장된 항목 #개가}} 이 콤보 목록에 없지만(예: 라우팅 규칙) 저장된 상태로 유지됩니다.", + "preservedComboRuleHint": "저장된 상태로 유지됩니다. 이 항목은 위 목록에 있는 콤보가 아니므로 API를 통해서만 변경할 수 있습니다.", "apiManagerCustomRateLimits": "사용자 정의 속도 제한", "apiManagerCustomRateLimitsDesc": "전역 기본 제한을 재정의합니다. 기본값을 사용하려면 비워 두세요.", "apiManagerRateLimitRequestsPlaceholder": "요청사항", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "라우팅 중에 이 키가 업스트림 공급자/계정 차단 정책을 무시하도록 허용합니다. API 키 USD 할당량은 여전히 적용됩니다.", "quotaPill": "할당량", "quotaModeOnly": "qtSd 전용", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "독점 임대", + "exclusiveLeaseNoticeTitle": "독점 임대", + "exclusiveLeaseNoticeDesc": "이 API 키에는 전용 연결 라우팅을 위한 독점 임대 권한이 있습니다.", + "allConnections": "모든 연결", + "onlySelectedConnections": "선택한 연결만", + "selectAtLeastOneConnection": "연결을 하나 이상 선택하거나 모든 연결을 선택하세요.", + "allConnectionsDesc": "이 키는 활성 연결을 사용할 수 있습니다.", + "restrictedToConnections": "{count, plural, one {#개 연결로 제한됩니다} other {#개 연결로 제한됩니다}}." }, "auditLog": { "title": "감사 로그", @@ -2457,14 +2457,14 @@ "model": "Model", "prompt": "Prompt", "generate": "생성", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "생성 중...", + "loadingModels": "사용 가능한 모델을 불러오는 중...", + "noModels": "사용 가능한 모델이 없습니다. 먼저 미디어 기능을 지원하는 제공업체를 구성하세요.", + "error": "생성 실패", + "result": "결과", + "imageDescription": "OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI 등을 사용하여 텍스트 프롬프트로 이미지를 생성합니다.", + "videoDescription": "ComfyUI 또는 SD WebUI를 통해 AnimateDiff, Stable Video Diffusion으로 동영상을 생성합니다.", + "musicDescription": "ComfyUI를 통해 Stable Audio Open 또는 MusicGen을 사용하여 음악을 작곡합니다.", "kinds": { "embedding": "임베딩", "image": "이미지", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter 음성 인식 모델은 구성된 OpenRouter 연결을 사용합니다. 별도의 자격 증명이 필요하지 않습니다." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "검색어", + "searchResults": "검색 결과", + "cachedResult": "캐시됨", + "searchCost": "비용", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "제공업체 비교를 통한 고급 검색 테스트", + "compareProviders": "제공업체 비교", + "rerankResults": "결과 재순위화", + "searchHistory": "검색 기록", + "urlOverlap": "URL 중복", + "noSearchProviders": "구성된 검색 제공업체가 없습니다. 설정에서 제공업체를 추가하세요.", + "noRerankModels": "사용 가능한 재순위화 모델이 없습니다.", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "제공업체", + "searchType": "검색 유형", + "maxResults": "최대 결과 수", + "filters": "필터", + "country": "국가", + "language": "언어", + "timeRange": "기간", + "includeDomains": "포함할 도메인", + "excludeDomains": "제외할 도메인", + "safeSearch": "세이프서치", + "safeSearchOff": "사용 안 함", + "safeSearchModerate": "보통", + "safeSearchStrict": "엄격", + "queryPlaceholder": "검색어를 입력하세요...", + "providerAuto": "자동(최저 비용)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "뉴스", + "optionAny": "전체", + "timeRangeDay": "지난 1일", + "timeRangeWeek": "지난 1주", + "timeRangeMonth": "지난 1개월", + "timeRangeYear": "지난 1년", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "요청 시간이 초과되었습니다({seconds}초)", + "networkError": "네트워크 오류", + "formatted": "서식 지정됨", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "캐시 미스", + "cacheHit": "캐시 적중", + "latency": "지연 시간", + "cost": "비용", + "results": "결과", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "재순위 모델", + "positionDelta": "순위 변동", + "emptyState": "결과를 보려면 검색어를 전송하세요", "copy": "복사", "resetToDefault": "기본값으로 재설정", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "검색", + "tabScrape": "스크레이핑", + "tabCompare": "비교", + "modalitiesGuide": "모달리티 가이드", + "searchConceptTitle": "검색", + "searchConceptDesc": "검색 = 웹 결과 목록(제목, URL, 스니펫, 관련성 점수)을 가져옵니다", + "scrapeConceptTitle": "스크레이핑", + "scrapeConceptDesc": "스크레이핑 = URL의 전체 콘텐츠(markdown, 텍스트 또는 HTML)를 추출합니다", + "compareConceptTitle": "비교", + "compareConceptDesc": "비교 = N개 제공업체에서 동일한 쿼리를 나란히 실행하여 지연 시간, 비용 및 결과 중복도를 비교합니다", + "rerankConceptTitle": "재순위 지정", + "rerankConceptDesc": "재순위 지정 = 쿼리를 기준으로 관련성을 높이기 위해 LLM을 통해 결과 순서를 다시 지정합니다", + "autoConceptTitle": "자동(최저가)", + "autoConceptDesc": "자동(최저가) = 구성된 자격 증명으로 이용 가능한 최저가 제공업체를 자동으로 선택합니다", + "providerCatalogTitle": "제공업체 카탈로그", + "kindSearch": "검색", + "kindFetch": "가져오기/스크레이핑", + "statusConfigured": "구성됨", + "statusMissing": "자격 증명 없음", + "statusRateLimited": "요청 한도 초과", + "configureProvider": "제공업체에서 구성", + "loadingProviders": "제공업체를 불러오는 중…", + "failedToLoadProviders": "제공업체를 불러오지 못했습니다", + "costPerQuery": "쿼리당 비용", + "freeQuota": "월별 무료 할당량", + "scrapeUrl": "스크랩할 URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL은 필수입니다", "scrapeUrlInvalid": "잘못된 URL — http:// 또는 https://로 시작해야 합니다", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "추출", + "scrapeExtracting": "추출 중…", + "scrapeFullPage": "전체 페이지", + "scrapeFormat": "형식", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "텍스트", + "scrapePreview": "미리보기", + "scrapeRaw": "원본", + "scrapeContentTruncated": "(일부 생략됨, 원본 보기)", + "scrapeMetadata": "메타데이터", + "scrapeProvider": "제공업체", + "scrapeSize": "크기", "scrapeEmptyState": "콘텐츠를 추출할 URL을 입력하세요", "scrapeProvidersAvailable": "사용 가능한 공급자: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "비교", + "compareRunning": "비교 중…", + "autoProvider": "자동(최저가)", + "configuredStatus": "구성됨", + "rateLimitedStatus": "요청 한도 초과", + "noCredential": "자격 증명 없음", + "searchTypeLabel": "유형", + "rerankModelLabel": "재순위 지정 모델", + "noneOption": "없음", + "size": "크기", "configurationPane": "설정 창", "configuration": "설정", "status": "상태", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. 추가", "antigravityStep2Suffix": "호스트 파일에 127.0.0.1로 저장하세요.", "antigravityStep3": "3. Antigravity를 열면 요청이 프록시됩니다.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName}은(는) 제공업체 엔드포인트로 요청을 전송합니다. MITM이 요청을 가로채 OmniRoute로 리디렉션합니다.", + "mitmStep1": "1. OmniRoute를 통해 요청을 라우팅하려면 MITM을 시작하세요.", + "mitmStep2Prefix": "2. 추가:", + "mitmStep2Suffix": "hosts 파일에 127.0.0.1로 추가하세요.", + "mitmStep3": "3. {toolName}을(를) 열면 요청이 프록시를 통해 전달됩니다.", "sudoPasswordRequiredTitle": "Sudo 비밀번호가 필요합니다", "sudoPasswordHint": "호스트 파일 및 시스템 프록시 설정을 수정하려면 관리자 비밀번호가 필요합니다.", "enterSudoPassword": "sudo 비밀번호를 입력하세요", @@ -2908,7 +2908,7 @@ "continue": "IDE에서 Continue를 실행하면서 이식 가능한 JSON 기반 공급자 구성이 필요할 때 사용하세요.", "opencode": "OpenCode를 통해 터미널 기반 에이전트 실행 및 스크립트 자동화를 선호할 때 사용하세요.", "kiro": "Kiro를 통합하고 OmniRoute에서 중앙에서 모델 라우팅을 제어할 때 사용합니다.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Codeium/Windsurf 모델을 OmniRoute를 통해 라우팅하는 AI 중심 IDE를 원할 때 사용하세요.", "antigravity": "Antigravity/Kiro 트래픽이 MITM을 통해 가로채어 OmniRoute로 라우팅되어야 하는 경우에 사용합니다.", "copilot": "OmniRoute 키와 라우팅 규칙을 적용하면서 Copilot 채팅 스타일 UX를 원할 때 사용하세요.", "amp": "Amp 단축 워크플로를 원하면서도 OmniRoute 별칭 및 라우팅 규칙 적용이 필요할 때 사용하세요.", @@ -2928,11 +2928,11 @@ "qwen": "Qwen Code CLI", "cursor": "Cursor AI 코드 편집기", "continue": "Continue AI 어시스턴트", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode AI 코딩 에이전트(터미널)", + "kiro": "Amazon Kiro — AI 기반 IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "Sourcegraph Amp 코딩 어시스턴트 CLI", "hermes": "Hermes AI 터미널 어시스턴트", "hermes-agent": "Hermes Agent(Nousresearch 제공) - 다중 모델 지원(위임, 비전, 압축 등)을 갖춘 고급 터미널 AI", "custom": "일반 OpenAI 호환 CLI 또는 SDK 구성 생성기", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter 자율 코딩 에이전트 CLI", "omp": "Oh My Pi 터미널 코딩 에이전트", "letta": "지속성 메모리 및 도구 사용 기능이 포함된 Letta CLI 에이전트", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI 호환 제공업체를 지원하는 자기 개선형 RLM 코딩 하네스", "warp": "사용자 정의 제공자 지원 기능이 포함된 Warp AI 터미널", "agent-deck": "Agent Deck 다중 에이전트 오케스트레이터", "5dive": "5dive — 자체 호스팅 코딩 에이전트 플릿; 인증 프로필 하나로 전체를 OmniRoute로 연결" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCode 설치", + "desc": "npm을 통해 설치: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API 키" }, "3": { - "title": "Set Base URL", + "title": "기본 URL 설정", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "모델 선택" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Thinking 변형 사용", + "desc": "Thinking 모델의 경우 --variant high/low/max 옵션으로 실행하세요(아래 예시 명령어 참조)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro 설정 열기", + "desc": "설정 → AI 제공업체로 이동" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "기본 URL", + "desc": "OmniRoute 엔드포인트 URL을 붙여넣으세요" }, "3": { - "title": "API Key" + "title": "API 키" }, "4": { - "title": "Select Model" + "title": "모델 선택" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI 설정 열기", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "사용자 지정 제공업체 추가", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "기본 URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API 키", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "모델 선택", + "desc": "드롭다운에서 모델을 선택하세요" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "가이드 클라이언트", "mitmClientsTab": "MITM 클라이언트", "customCliTab": "맞춤형 CLI", - "toolCategories": "Tool Categories", + "toolCategories": "도구 카테고리", "visibleToolsCount": "{count}개의 도구 사용 가능", "customCliBuilderTitle": "OpenAI 호환 CLI 빌더", "customCliBuilderDescription": "OpenAI 호환 기본 URL, API 키 및 모델 ID를 허용하는 CLI 또는 SDK에 대한 환경 변수 및 JSON 스니펫을 생성합니다.", @@ -3260,18 +3260,18 @@ "priorityDesc": "순차적 폴백: 모델 1을 먼저 시도한 다음 2 등을 시도합니다.", "weightedDesc": "폴백을 지원하며 가중치 비율로 트래픽을 분산합니다.", "roundRobinDesc": "순환 배포: 각 요청은 교대로 다음 모델로 이동합니다.", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "컨텍스트 릴레이", + "contextRelayDesc": "계정이 전환될 때 인계 요약을 통해 세션 연속성을 유지합니다", "randomDesc": "균일한 무작위 선택 후 나머지 모델로 대체", "leastUsedDesc": "시간이 지남에 따라 로드 밸런싱을 통해 요청이 가장 적은 모델을 선택합니다.", "costOptimizedDesc": "가격을 기준으로 가장 저렴한 모델로 먼저 라우팅", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "재사용 가능한 각 프롬프트 접두사를 항상 동일한 제공업체 계정으로 라우팅합니다", "resetAware": "재설정 인식 RR", "resetAwareDesc": "5시간 및 주간 재설정을 기준으로 남은 할당량의 균형을 맞추고 비슷한 점수를 라운드 로빈 방식으로 진행합니다.", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "할당량 가중", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "엄격한 무작위", + "strictRandomDesc": "셔플 덱 — 다시 섞기 전에 각 모델을 한 번씩 사용합니다", "fusion": "퓨전", "fusionDesc": "프롬프트를 모든 패널 모델에 병렬로 전송한 다음, 평가자 모델이 하나의 최종 답변을 합성합니다", "fusionJudgeModel": "평가자 모델", @@ -3288,13 +3288,13 @@ "retryDelay": "재시도 지연(ms)", "concurrencyPerModel": "동시성/모델", "queueTimeout": "대기열 시간 초과(밀리초)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "인계 임계값", + "contextRelayHandoffThresholdHelp": "할당량 사용률이 이 임계값에 도달하면 활성 계정의 할당량이 소진되기 전에 OmniRoute가 구조화된 인계 요약을 생성합니다.", + "contextRelayMaxMessages": "요약의 최대 메시지 수", + "contextRelayMaxMessagesHelp": "릴레이 요약에 압축할 최근 기록의 양을 제한합니다.", + "contextRelaySummaryModel": "요약 모델", + "contextRelaySummaryModelHelp": "인계 요약 생성에만 사용되는 선택적 재정의 모델입니다. 활성 조합 모델을 재사용하려면 비워 두세요.", + "contextRelayProviderNote": "현재 컨텍스트 릴레이는 Codex 계정 전환을 위한 인계를 생성합니다. 최상의 연속성을 위해 동일한 제공업체의 여러 계정과 함께 사용하세요.", "advancedHint": "전역 기본값을 사용하려면 비워 두세요. 이는 공급자별 설정을 재정의합니다.", "failoverBeforeRetry": "재시도 전 장애 조치", "maxSetRetries": "최대 세트 재시도 횟수", @@ -3361,24 +3361,24 @@ "example": "80% 안정적인 모델 + 20% 카나리아 모델 출시." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "예측 가능하고 균등한 분배를 원합니다.", + "avoid": "모델 간 지연 시간이나 비용 차이가 너무 큽니다.", + "example": "여러 계정에서 동일한 모델을 사용하여 처리량을 분산합니다." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "최소한의 설정으로 간단하게 분배하고 싶습니다.", + "avoid": "엄격한 트래픽 보장이 필요합니다.", + "example": "동등한 모델을 사용한 빠른 프로토타이핑." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "실시간 수요에 기반한 적응형 밸런싱이 필요할 때 사용합니다.", + "avoid": "트래픽이 너무 적어 사용량 밸런싱의 이점을 얻기 어렵습니다.", + "example": "특정 모델에 부하가 자주 집중되는 혼합 워크로드에 적합합니다." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "비용 절감이 최우선일 때 사용합니다.", + "avoid": "가격 데이터가 없거나 오래되었습니다.", + "example": "낮은 비용이 우선되는 백그라운드 또는 배치 작업에 적합합니다." }, "reset-aware": { "when": "할당량 원격 측정 및 다양한 재설정 기간을 사용하여 여러 계정에 걸쳐 라우팅합니다.", @@ -3386,19 +3386,19 @@ "example": "나중에 80% 계정을 재설정하는 것보다 내일 60% 주간 계정 재설정을 선호합니다." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "완벽하게 균등한 분배가 필요할 때 사용합니다. 반복하기 전에 각 모델을 한 번씩 사용합니다.", + "avoid": "모델마다 품질이나 지연 시간이 다르고 순서가 중요한 경우에는 사용하지 마세요.", + "example": "예: 동일한 모델의 여러 계정에 사용량을 균등하게 분배하는 경우." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Power-of-Two-Choices 알고리즘을 사용해 지연 시간이 짧은 모델을 선택하려는 경우에 사용합니다.", + "avoid": "모델이 2개 이하인 소규모 콤보에는 사용하지 마세요. 라운드 로빈보다 나은 점이 없습니다.", + "example": "예: 4개 이상의 동등한 모델 엔드포인트에 걸친 고처리량 추론." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "작업 컨텍스트를 잃지 않고 계정 로테이션 후에도 긴 세션을 유지해야 하는 경우에 사용합니다.", + "avoid": "계정 전환이 드물거나 추가 요약 요청을 원하지 않는 경우에는 사용하지 마세요.", + "example": "예: 할당량이 거의 소진될 때 여러 계정으로 로테이션되는 Codex 세션." }, "fill-first": { "when": "다음 공급자로 이동하기 전에 한 공급자의 할당량을 완전히 소진하려는 경우에 사용합니다.", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "요청이 실패하기 전까지 시도할 재시도 횟수입니다.", + "retryDelay": "재시도 사이의 초기 대기 시간입니다. 값이 높을수록 버스트 압력이 줄어듭니다.", + "timeout": "요청을 중단하기 전까지의 최대 요청 시간입니다.", + "healthcheck": "라우팅 결정에서 비정상 모델/제공업체를 제외합니다.", + "concurrencyPerModel": "라운드 로빈에서 모델당 허용되는 최대 동시 요청 수입니다.", + "queueTimeout": "요청이 시간 초과되기 전까지 대기열에서 기다릴 수 있는 시간입니다.", "failoverBeforeRetry": "활성화되면 업스트림 오류가 발생하면 모든 재시도 및 대체 URL을 건너뛰고 다음 콤보 대상으로 즉시 장애 조치가 실행됩니다.", "maxSetRetries": "모든 대상이 실패할 경우 전체 대상 세트를 재시도하는 횟수입니다. 0 = 설정 수준 재시도가 없습니다.", "setRetryDelayMs": "설정 수준 재시도 사이의 지연을 통해 일시적인 문제를 해결할 시간을 제공합니다.", "disableSessionStickiness": "첫 번째 메시지 해시로 전체 대화를 하나의 연결에 고정하는 대신, 요청마다 다른 연결로 순환합니다. 글로벌 기본값을 재정의합니다. 다회차 대화에서 프롬프트 캐시 적중을 유지하려면 상속(Inherit)으로 두세요." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "빠른 템플릿", + "templatesDescription": "시작 프로필을 적용한 다음 모델과 설정을 조정하세요.", + "templateApply": "템플릿 적용", + "templateHighAvailability": "고가용성", + "templateHighAvailabilityDesc": "상태 확인 및 안전한 재시도를 사용하는 우선순위 라우팅입니다.", + "templateCostSaver": "비용 절감", + "templateCostSaverDesc": "예산을 우선하는 워크로드를 위한 비용 최적화 라우팅입니다.", + "templateBalanced": "부하 분산", + "templateBalancedDesc": "시간 경과에 따라 수요를 분산하는 최소 사용량 라우팅입니다.", + "usageGuideHide": "숨기기", + "usageGuideDontShowAgain": "다시 표시하지 않기", + "usageGuideShow": "가이드 표시", + "quickTestTitle": "콤보 검증 준비 완료", + "quickTestDescription": "지금 테스트를 실행하여 폴백 및 지연 시간 동작을 확인하세요.", + "testNow": "지금 테스트", + "pricingCoverage": "가격 정보 범위", + "pricingCoverageHint": "비용 최적화는 모든 콤보 모델의 가격 정보가 있을 때 가장 효과적입니다.", + "pricingAvailable": "가격 정보 있음", + "pricingMissing": "가격 정보 없음", + "pricingAvailableShort": "가격 정보 있음", + "pricingMissingShort": "가격 정보 없음", "fallbackOnlyOnQuotaExhaustion": "쿼타 소진 시에만 진행하십시오", "fallbackOnlyOnQuotaExhaustionShort": "쿼타 전용 대체", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "warningRoundRobinSingleModel": "라운드 로빈은 모델이 2개 이상일 때 가장 유용합니다.", + "warningCostOptimizedPartialPricing": "{total}개 모델 중 {priced}개에만 가격 정보가 있습니다. 라우팅에 비용 정보가 일부만 반영될 수 있습니다.", + "warningCostOptimizedNoPricing": "이 조합에 대한 가격 데이터를 찾을 수 없습니다. 비용 최적화 라우팅이 예상과 다르게 작동할 수 있습니다.", + "filterAll": "전체", + "filterIntelligent": "지능형", + "filterDeterministic": "결정론적", + "filterEmptyTitle": "이 전략 필터와 일치하는 조합이 없습니다.", + "filterEmptyIntelligentDescription": "지능형 라우팅 대시보드를 표시하려면 auto 또는 LKGP 조합을 생성하세요.", + "filterEmptyDeterministicDescription": "현재 auto 및 LKGP 조합만 있습니다. 전체로 다시 전환하거나 결정론적 조합을 생성하세요.", "readinessTitle": "저장할 준비가 되셨나요?", "readinessDescription": "이 콤보를 생성하거나 업데이트하기 전에 체크리스트를 검토하세요.", "readinessCheckName": "콤보 이름이 유효합니다.", @@ -3478,12 +3478,12 @@ "saveBlockModels": "모델을 하나 이상 추가하세요.", "saveBlockWeighted": "가중치를 100%(현재: {total}%)로 설정합니다.", "saveBlockPricing": "하나 이상의 모델에 가격을 추가하거나 다른 전략을 선택하세요.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "권장 설정", + "applyRecommendations": "권장 사항 적용", + "recommendationsUpdated": "{strategy}에 대한 권장 사항이 업데이트되었습니다.", + "recommendationsApplied": "이 조합에 권장 사항이 적용되었습니다.", + "intelligentPanelTitle": "지능형 라우팅 대시보드", + "intelligentPanelDesc": "이 자동 라우팅 조합의 실시간 점수 및 상태입니다.", "configOnlyStatus": "구성 보기", "configOnlyHint": "이 패널은 라우팅 입력만 표시합니다. 실시간 브레이커 상태는 Health 페이지에서 확인할 수 있습니다.", "routingInputs": "라우팅 입력", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "알 수 없는 제공업체 접두사입니다.", "builderDynamicAccountShort": "동적 계정", "builderNeedValidName": "계속하기 전에 유효한 콤보 이름을 정의하세요.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "상태 개요", + "normalOperation": "정상 작동", + "allProvidersHealthy": "제공자들이 정상적인 라우팅 상태를 보고하고 있습니다.", + "incidentMode": "인시던트 모드", + "highCircuitBreakerRate": "높은 회로 차단기 작동률이 감지되었습니다.", + "activeModePack": "활성 모드 팩", + "modePackUpdated": "모드 팩이 {pack}(으)로 업데이트되었습니다.", + "modePackHint": "조합을 다시 구성하지 않고도 사전 설정을 전환하여 라우팅 엔진의 동작을 조정할 수 있습니다.", + "providerScores": "제공자 점수", + "allProvidersEvaluated": "구성된 후보 풀이 없습니다. 런타임에 모든 활성 제공자를 평가합니다.", + "excludedProviders": "제외된 제공자", + "excludedProvidersHint": "회로 차단기가 OPEN 상태인 제공자는 라우팅에서 일시적으로 제외됩니다.", + "noExcludedProviders": "현재 제외된 제공자가 없습니다.", + "cooldownMinutes": "재사용 대기시간: {minutes}분", + "builderIntelligentTitle": "지능형 라우팅 구성", + "builderIntelligentDesc": "이 자동 라우팅 조합의 다중 요소 점수 산정 엔진을 구성합니다.", + "candidatePoolLabel": "후보 풀", + "candidatePoolHint": "이 엔진에서 평가할 제공자를 선택하세요. 모든 활성 제공자를 사용하려면 비워 두세요.", + "candidatePoolEmpty": "아직 사용 가능한 활성 제공자가 없습니다.", + "candidatePoolAllProviders": "모든 제공자", + "modePackLabel": "모드 팩", + "routerStrategyLabel": "라우터 전략", + "strategyRules": "규칙(6요소 점수 산정)", + "explorationRateLabel": "탐색 비율", + "explorationRateHint": "요청의 {percent}%가 최적이 아닌 제공자를 탐색할 수 있습니다.", + "budgetCapLabel": "예산 한도(USD/요청)", + "budgetCapPlaceholder": "제한 없음", + "advancedWeightsTitle": "고급: 점수 가중치", "nestedComboFlatten": "중첩된 콤보 평탄화", "nestedComboExecute": "중첩된 콤보를 대상으로 실행", "effectiveRoutingShare": "유효 라우팅 점유율 (가중치 ÷ 합계)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "할당량", + "weightHealth": "상태", + "weightCostInv": "비용", + "weightLatencyInv": "지연 시간", + "weightTaskFit": "작업 적합도", + "weightStability": "안정성", + "weightTierPriority": "등급", + "weightCacheAffinity": "캐시 적중 선호도", "weightSessionAvailability": "세션 가용성", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "지능형 라우팅 구성", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "안전한 기본 구성", + "description": "하나의 기본 모델을 사용하고 대체 체인은 짧고 안정적으로 유지하세요.", + "tip1": "가장 안정적인 모델을 첫 번째로 배치하세요.", + "tip2": "품질이 비슷한 백업 모델을 1~2개 유지하세요.", + "tip3": "안전한 재시도를 사용하여 일시적인 제공자 장애를 완화하세요." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "제어된 트래픽 분할", + "description": "카나리 출시와 모델 간 점진적 마이그레이션에 적합합니다.", + "tip1": "90/10처럼 보수적인 분할로 시작하세요.", + "tip2": "합계를 100%로 유지하고 변경 후 자동으로 균형을 조정하세요.", + "tip3": "카나리 가중치를 높이기 전에 성공률과 지연 시간을 모니터링하세요." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "예측 가능한 부하 분산", + "description": "모델이 동등하고 원활한 분산이 필요할 때 가장 적합합니다.", + "tip1": "모델을 2개 이상 사용하세요.", + "tip2": "갑작스러운 과부하를 방지하도록 동시 실행 제한을 설정하세요.", + "tip3": "포화 상태에서 빠르게 실패하도록 대기열 시간 제한을 설정하세요." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "간단한 설정으로 빠르게 분산", + "description": "엄격한 보장 없이 단순한 분산이 필요할 때 사용하세요.", + "tip1": "지연 시간 특성이 비슷한 모델을 사용하세요.", + "tip2": "무작위 누락을 완화하도록 재시도를 활성화해 두세요.", + "tip3": "엄격한 SLA보다 실험 용도로 사용하는 것이 좋습니다." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "적응형 균형 조정", + "description": "시간이 지남에 따라 병목을 줄이기 위해 사용량이 적은 모델로 라우팅합니다.", + "tip1": "트래픽이 지속적으로 발생할 때 더 효과적입니다.", + "tip2": "더 안전한 균형 조정을 위해 상태 확인과 함께 사용하세요.", + "tip3": "모델별 사용량을 추적하여 분산 개선 효과를 검증하세요." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "예산 우선 라우팅", + "description": "가격 메타데이터를 사용할 수 있는 경우 더 저렴한 모델로 라우팅합니다.", + "tip1": "선택한 모든 모델의 가격 정보가 제공되는지 확인하세요.", + "tip2": "어려운 프롬프트에 대비해 품질이 우수한 폴백을 유지하세요.", + "tip3": "비용이 주요 KPI인 배치/백그라운드 작업에 사용하세요." }, "reset-aware": { "title": "재설정 인식 계정 순환", @@ -3597,11 +3597,11 @@ "tip3": "동등한 계정이 계속 공평하게 순환되도록 동점 허용 범위(tie band)를 작게 유지하세요." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "셔플 덱 분배", + "description": "다시 섞기 전에 각 주기에서 모든 모델을 정확히 한 번씩 사용합니다.", + "tip1": "유의미하게 분배하려면 최소 2개의 모델을 사용하세요.", + "tip2": "성능이 비슷한 모델과 함께 사용할 때 가장 효과적입니다.", + "tip3": "여러 API 계정에 부하를 분산하는 데 적합합니다." }, "fill-first": { "description": "폴백하기 전에 공급자 할당량을 순차적으로 소진합니다.", @@ -3646,86 +3646,86 @@ "title": "Power of Two Choices (P2C)" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "무료 스택 ($0)", + "templateFreeStackDesc": "모든 무료 제공업체에 라운드 로빈 방식으로 분배합니다: Kiro (Claude), Qoder (5개 모델), Qwen (4개 모델). 비용은 전혀 들지 않으며 코딩이 중단되지 않습니다.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP 모드", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "콤보 시작하기", + "wizardGuideDesc": "모델 콤보를 생성하여 AI 트래픽을 지능적으로 라우팅하세요.", + "wizardGuideHint": "또는 위의 + 콤보 만들기를 클릭하세요.", + "createFirstCombo": "첫 번째 콤보 만들기", + "wizardStep1Title": "콤보 이름 지정", + "wizardStep1Desc": "라우팅 규칙에서 식별할 수 있도록 콤보에 고유한 이름을 지정하세요.", + "wizardStep2Title": "모델 추가", + "wizardStep2Desc": "AI 모델을 선택하고 폴백 우선순위에 따라 정렬하세요.", + "wizardStep3Title": "전략 선택", "wizardStep3Desc": "모델 전반에 요청이 분산되는 방식을 선택하세요 - 14가지 전략 사용 가능", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "검토 및 저장", + "wizardStep4Desc": "구성을 검토하고 콤보를 활성화하세요.", + "usageGuideInvokeTitle": "이 콤보를 호출하는 방법", + "usageGuideInvokeDesc": "콤보의 정확한 이름을 모델로 전송하세요. 예: model: \"my-combo\" (또는 combo/my-combo).", + "usageGuideInvokeAutoNote": "auto 및 auto/*는 별도의 무설정 라우터이며 콤보를 사용하지 않습니다(콤보 이름이 실제로 auto인 경우 제외).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto는 OmniRoute 별칭이 아니라 실제 유료 OpenRouter 제품(Auto Best Available)입니다. Settings → Routing → Hide paid models에서 제외하세요.", + "emailVisibilityStateOn": "켜짐", + "emailVisibilityStateOff": "꺼짐", + "reorderHandle": "드래그하여 순서 변경", + "failedReorder": "모델 순서를 변경하지 못했습니다.", + "builderFlowTitle": "콤보 빌더 흐름", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "기본 사항", + "description": "이름 및 시작 템플릿" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "단계", + "description": "제공업체, 모델 및 계정 선택" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "전략", + "description": "라우팅 동작 및 고급 설정" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "스마트 라우팅", + "description": "자동 라우팅 후보 풀, 프리셋 및 점수 산정" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "검토", + "description": "저장 전 최종 검증" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "단계 완료", + "builderStageCurrent": "현재 단계", + "builderStagePending": "대기 중", + "builderStageLocked": "잠김 — 이전 단계를 먼저 완료하세요", + "builderTitle": "콤보 만들기", + "builderBrowseCatalog": "카탈로그 둘러보기", + "builderProvider": "제공업체", + "builderLoadingProviders": "제공업체 불러오는 중...", + "builderSelectProvider": "제공업체 선택", + "builderModel": "모델", + "builderSelectModel": "모델 선택", + "builderProviderFirst": "먼저 제공업체를 선택하세요", + "builderAccount": "계정", + "builderPreview": "미리보기", + "builderAddStep": "단계 추가", "builderDuplicateExact": "이 정확한 공급자/모델/계정 단계는 이미 콤보에 있습니다.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "콤보 참조", + "builderAddComboRef": "콤보 참조 추가", + "builderComboRefStep": "콤보 참조 추가", + "builderPinnedAccount": "고정된 계정", + "builderLegacyEntry": "레거시 항목", + "reviewName": "이름", + "reviewStrategy": "전략", + "reviewSteps": "단계", + "reviewAccounts": "계정", + "reviewProviders": "제공업체", + "reviewComboRefs": "콤보 참조", + "reviewAdvanced": "고급 설정", + "reviewAgentFlags": "에이전트 플래그", + "reviewSequence": "모델 순서", + "reviewNoSteps": "구성된 단계 없음", "builderStagesDescription": "콤보를 정의하고, 단계를 구축하고, 라우팅 전략을 선택하고, 결과를 검토하려면 각 단계를 완료하세요.", "builderStepsDescription": "공급자, 모델, 계정 순으로 각 콤보 단계를 구축합니다. 이를 통해 여러 계정에서 동일한 공급자와 모델을 재사용할 수 있습니다.", "selectProvider": "제공업체 선택", @@ -3800,27 +3800,27 @@ "range7d": "7일", "range30d": "30일", "range90d": "90일", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180일", + "range365d": "365일", "rangeAll": "모든 시간", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "활성 모델", + "flatRateEstimateNotice": "정액제 구독의 토큰 가격 추정치가 포함되며, 실제 청구 비용은 아닙니다.", + "flatRateEstimateForecast": "예측에 정액제 추정치가 포함됩니다.", + "selectedWindow": "선택한 기간", + "activeProviders": "활성 제공업체", "overviewTitle": "비용 개요", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "요청을 시작하면 여기에 비용 데이터가 표시됩니다. 모든 공급자의 비용이 자동으로 추적됩니다.", - "spendToday": "Spend Today", + "spendToday": "오늘의 지출", "overviewLoadFailed": "비용 개요를 로드하지 못했습니다", "overviewDescription": "연결된 모든 공급자 및 모델에 대한 실시간 지출 분석", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "제공업체 점유율", + "topProviders": "상위 제공업체", + "costTrend": "비용 추이", "noCostDataTitle": "아직 비용 데이터가 없습니다", - "topModels": "Top Models", + "topModels": "상위 모델", "requestsInWindow": "Requests In Window", "tokenUsage": "토큰 사용", "totalTokens": "총 토큰", @@ -3862,9 +3862,9 @@ "groupApiKey": "API 키", "groupAccount": "계정", "groupServiceTier": "서비스 등급", - "serviceTierFast": "Fast", - "serviceTierFlex": "Flex", - "serviceTierStandard": "Standard", + "serviceTierFast": "빠름", + "serviceTierFlex": "유연함", + "serviceTierStandard": "표준", "serviceTierBreakdownTitle": "서비스 티어", "serviceTierBreakdownSubtitle": "Fast / Flex / Standard 분할", "serviceTierUsageSaved": "사용량 저장됨", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API 엔드포인트", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "대부분의 SDK 및 도구에서 OpenAI 호환 엔드포인트를 사용하세요.", + "testEndpoint": "엔드포인트 테스트 →", + "advancedProtocols": "고급 프로토콜", "available": "사용 가능한 엔드포인트", "cloudProxy": "클라우드 프록시", "disableConfirm": "클라우드 프록시를 비활성화하시겠습니까?", @@ -3900,7 +3900,7 @@ "disableCloud": "클라우드 비활성화", "enableCloud": "클라우드 활성화", "modelsAcrossEndpoints": "{endpoints} 엔드포인트 전반의 {models} 모델", - "loadingModels": "Loading available models...", + "loadingModels": "사용 가능한 모델을 불러오는 중...", "chatDesc": "모든 제공업체와의 스트리밍 및 비스트리밍 채팅", "embeddings": "임베딩", "embeddingsDesc": "검색 및 RAG 파이프라인을 위한 텍스트 임베딩", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "오디오 파일을 텍스트로 변환 (Whisper)", "textToSpeech": "텍스트 음성 변환", "textToSpeechDesc": "텍스트를 자연스러운 음성으로 변환", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "음악 생성", + "musicDesc": "ComfyUI를 통해 음악 및 오디오 트랙 생성(Stable Audio, MusicGen)", "moderations": "모더레이션", "moderationsDesc": "콘텐츠 모더레이션 및 안전 분류", "responsesDesc": "Codex 및 고급 에이전트 워크플로용 OpenAI Responses API", "listModelsDesc": "연결된 모든 공급자의 사용 가능한 모든 모델 나열", "settingsApiDesc": "API를 통해 OmniRoute 구성 읽기 및 수정", - "settingsApi": "Settings API", + "settingsApi": "설정 API", "categoryCore": "핵심 API", "categoryMedia": "미디어 및 멀티모달", - "categorySearch": "Search & Discovery", + "categorySearch": "검색 및 탐색", "categoryUtility": "유틸리티 및 관리", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "웹 검색", + "webSearchDesc": "자동 장애 조치 및 캐싱을 지원하는 여러 제공업체 통합 웹 검색", + "searchProvider": "검색 제공업체", + "searchProviderDesc": "이 제공업체는 POST /v1/search를 통한 웹 검색에 사용됩니다. 모델 구성은 필요하지 않습니다. API 키가 연결되면 검색 제공업체를 바로 사용할 수 있습니다.", "enableCloudTitle": "클라우드 프록시 활성화", "whatYouGet": "얻게 되는 것", "cloudBenefitAccess": "전 세계 어디에서나 API에 액세스하세요", @@ -3963,57 +3963,57 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "터널 활성화", + "cloudflaredInstallAndEnable": "설치 및 활성화", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "실행 중", + "cloudflaredStarting": "시작 중", + "cloudflaredStoppedState": "중지됨", + "cloudflaredNotInstalled": "설치되지 않음", + "cloudflaredUnsupported": "지원되지 않음", + "cloudflaredError": "오류", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "마지막 오류: {error}", "providerModelsTitle": "{provider} — 모델", "noModelsForProvider": "이 제공업체에 사용할 수 있는 모델이 없습니다.", "chat": "채팅", "embedding": "임베딩", "image": "이미지", "custom": "사용자 정의", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {#개 모델} other {#개 모델}}", + "sectionTitle": "통합 인터페이스", + "sectionDescription": "OpenAI 호환 API 및 운영 프로토콜 엔드포인트", "tabApis": "API", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "프로토콜", + "tabsAria": "엔드포인트 섹션", + "protocolsTitle": "프로토콜", + "protocolsDescription": "MCP 및 A2A는 전용 관측 기능과 제어 기능을 갖춘 핵심 엔드포인트입니다.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "stdio를 통한 Model Context Protocol", + "a2aCardTitle": "A2A 서버", + "a2aCardDescription": "Agent2Agent JSON-RPC 엔드포인트", + "protocolToolsLabel": "도구", + "protocolTasksLabel": "작업", + "protocolActiveStreamsLabel": "활성 스트림", + "protocolLastActivity": "마지막 활동", + "quickStart": "빠른 시작", + "openMcpDashboard": "MCP 관리 열기", + "openA2aDashboard": "A2A 관리 열기", + "mcpQuickStartTitle": "MCP 빠른 시작", + "mcpQuickStartStep1": "`omniroute --mcp`를 통해 MCP 서버를 실행합니다.", + "mcpQuickStartStep2": "stdio 전송을 통해 연결하도록 MCP 클라이언트를 구성합니다.", + "mcpQuickStartStep3": "`omniroute_get_health` 및 `omniroute_list_combos`와 같은 도구를 호출합니다.", + "a2aQuickStartTitle": "A2A 빠른 시작", + "a2aQuickStartStep1": "`/.well-known/agent.json`에서 에이전트 카드를 확인합니다.", + "a2aQuickStartStep2": "`message/send` 또는 `message/stream`을 사용하여 `POST /a2a`로 JSON-RPC 요청을 전송합니다.", + "a2aQuickStartStep3": "`tasks/get` 및 `tasks/cancel`을 사용하여 작업을 추적하고 제어합니다.", + "completionsLegacy": "텍스트 완성(레거시)", + "completionsLegacyDesc": "레거시 OpenAI 텍스트 완성 — 프롬프트 문자열과 메시지 배열 형식을 모두 지원합니다", "messagesApi": "메시지", "messagesApiDesc": "Claude 호환 공급자를 위한 기본 Anthropic Messages API 형식", "imageEdits": "이미지 편집", @@ -4022,40 +4022,40 @@ "batchApiDesc": "대규모 요청 일괄 처리를 비동기식으로 처리(OpenAI 호환)", "filesApi": "파일 API", "filesApiDesc": "일괄 처리를 위한 파일 업로드 및 관리", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "동영상 생성", + "videoDesc": "ComfyUI 및 Stable Video Diffusion과 같은 AI 모델을 사용하여 동영상을 생성합니다.", + "tailscaleRequestFailed": "Tailscale 상태를 불러오지 못했습니다", + "tailscaleEnableFailed": "Tailscale Funnel을 활성화하지 못했습니다", + "tailscaleWaitingForLogin": "열린 브라우저 탭에서 Tailscale 로그인을 완료하세요. OmniRoute가 자동으로 다시 시도합니다.", + "tailscaleLoginTimedOut": "Tailscale 로그인을 기다리는 동안 시간이 초과되었습니다", + "tailscaleWaitingForFunnel": "열린 브라우저 탭에서 이 기기의 Funnel을 활성화하세요. OmniRoute가 계속 상태를 확인합니다.", + "tailscaleFunnelTimedOut": "Tailscale Funnel이 활성화되기를 기다리는 동안 시간이 초과되었습니다", + "tailscaleStarted": "Tailscale Funnel이 활성화되었습니다", + "tailscaleDisableFailed": "Tailscale Funnel을 비활성화하지 못했습니다", + "tailscaleStopped": "Tailscale Funnel이 비활성화되었습니다", + "tailscaleInstallFailed": "Tailscale을 설치하지 못했습니다", + "tailscaleInstallProgress": "처리 중...", + "tailscaleInstalled": "Tailscale이 성공적으로 설치되었습니다", + "tailscaleRunning": "실행 중", + "tailscaleNeedsLogin": "로그인 필요", + "tailscaleStoppedState": "중지됨", + "tailscaleNotInstalled": "설치되지 않음", + "tailscaleUnsupported": "지원되지 않음", + "tailscaleError": "오류", + "tailscaleDisable": "Funnel 중지", + "tailscaleInstallAndEnable": "설치 및 활성화", + "tailscaleLoginAndEnable": "로그인 및 활성화", + "tailscaleEnable": "Funnel 활성화", + "tailscaleUrlNotice": "Tailscale .ts.net 주소를 사용합니다. 처음 사용할 때 로그인 및 Funnel 승인이 필요할 수 있습니다.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "이 머신을 Tailscale로 인증한 다음 Funnel을 활성화합니다.", + "tailscaleBinaryPath": "바이너리: {path}", + "tailscaleLastError": "최근 오류: {error}", + "tailscaleInstallTitle": "Tailscale 설치", + "tailscaleInstallIntro": "이 머신에 Tailscale을 설치하고 OmniRoute에서 Funnel을 활성화할 수 있도록 준비합니다.", + "tailscaleInstallPasswordHint": "macOS 및 Linux에서는 패키지 설치와 데몬 시작에 sudo가 필요할 수 있습니다.", + "tailscaleSudoPlaceholder": "선택적 sudo 비밀번호", + "tailscaleInstalling": "설치 중", "tailscaleSudoLabel": "Sudo 비밀번호(macOS/Linux에 필요)", "ngrokTitle": "ngrok 터널", "ngrokRunning": "실행 중", @@ -4144,9 +4144,9 @@ "tierPublic": "공개", "hideInternal": "내부 숨기기", "showInternal": "내부 표시", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "사용자 지정 시스템 프롬프트", + "customSystemPromptDescription": "모든 모델 요청에 사용자 지정 시스템 프롬프트를 삽입합니다.", + "customSystemPromptPlaceholder": "예: 항상 해적 말투로 응답하세요...", "obsidianEnterToken": "Obsidian API 토큰을 입력하세요", "obsidianConnectFailed": "연결 실패", "obsidianConnectionFailed": "연결에 실패했습니다", @@ -4162,12 +4162,12 @@ "obsidianDescription": "라우팅된 AI 모델을 통해 Obsidian의 노트를 검색, 읽기, 쓰기 및 관리합니다", "obsidianRestToken": "Obsidian 로컬 REST API 토큰", "obsidianApiKeyPlaceholder": "Obsidian API 키", - "obsidianConnect": "Connect", - "obsidianBaseUrlOptional": "Base URL (optional)", + "obsidianConnect": "연결", + "obsidianBaseUrlOptional": "기본 URL(선택 사항)", "obsidianPortWarning": "Port 27124는 MCP 엔드포인트(HTTPS, 자체 서명 인증서)입니다. REST API는 포트 27123에서 HTTP를 사용합니다.", "obsidianRemoteVaultHint": "기본값: {defaultUrl}. 원격 보관소의 경우 Tailscale IP + 포트를 입력하세요(예: http://100.x.x.x:27123). Obsidian이 실행 중인 머신에서 Local REST API 플러그인을 활성화하세요.", "obsidianTokenConfigured": "토큰이 구성되었습니다. MCP를 통해 Obsidian 도구를 사용할 수 있습니다.", - "obsidianDisconnect": "Disconnect", + "obsidianDisconnect": "연결 해제", "obsidianVaultSync": "보관소 동기화 (WebDAV)", "obsidianVaultSyncDescription": "Tailscale을 통한 WebDAV를 사용하여 보관소를 Obsidian 모바일로 동기화하세요. Obsidian 모바일에는 WebDAV 지원이 내장되어 있어 플러그인이 필요하지 않습니다.", "obsidianVaultDirectoryPath": "보관소 디렉터리 경로", @@ -4207,19 +4207,19 @@ "featureAuth": "엔드포인트별 API 키 및 OAuth 범위 관리" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP 대시보드 로드 중...", + "activate": "활성화", + "deactivate": "비활성화", + "confirmSwitchCombo": "콤보 \"{combo}\"을(를) {action}하시겠습니까?", + "switchComboFailed": "콤보 상태를 전환하지 못했습니다.", + "switchComboSuccess": "콤보 \"{combo}\"이(가) 업데이트되었습니다.", + "confirmApplyProfile": "복원력 프로필 \"{profile}\"을(를) 적용하시겠습니까?", + "applyProfileFailed": "복원력 프로필을 적용하지 못했습니다.", + "applyProfileSuccess": "프로필 \"{profile}\"이(가) 적용되었습니다.", + "confirmResetBreakers": "모든 서킷 브레이커를 재설정하시겠습니까?", + "resetBreakersFailed": "서킷 브레이커를 재설정하지 못했습니다.", + "resetBreakersSuccess": "서킷 브레이커가 재설정되었습니다.", + "processStatus": "프로세스 상태", "online": "Online", "offline": "Offline", "disableLabel": "{label} 비활성화", @@ -4237,119 +4237,119 @@ "mcpStep2": "stdio 전송을 통해 연결하도록 MCP 클라이언트를 구성하세요.", "mcpStep3": "{code1} 및 {code2}와 같은 도구를 호출합니다.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "세션 가동 시간", + "lastHeartbeat": "마지막 하트비트", + "activity24h": "활동(24시간)", + "totalCalls": "총 호출 수", + "successRate": "성공률", + "avgLatency": "평균 지연 시간", + "topTools": "상위 도구", + "noToolCalls24h": "지난 24시간 동안 도구 호출이 없습니다.", + "runtimeDetails": "런타임 세부 정보", + "transport": "전송 방식", + "scopesEnforced": "범위 적용됨", + "yes": "예", + "no": "아니요", + "lastCall": "마지막 호출", + "heartbeatPath": "하트비트 경로", + "operationalControls": "운영 제어", + "switchCombo": "콤보 전환", + "inactive": "비활성", + "active": "활성", + "activateCombo": "콤보 활성화", + "deactivateCombo": "콤보 비활성화", + "applyResilienceProfile": "복원력 프로필 적용", + "profileAggressive": "공격적", + "profileBalanced": "균형", + "profileConservative": "보수적", + "applyProfile": "프로필 적용", + "resetCircuitBreakers": "회로 차단기 재설정", + "resetCircuitBreakersHelp": "제공업체의 현재 차단기 상태와 실패 횟수를 초기화합니다.", + "resetAllBreakers": "모든 차단기 재설정", + "toolsAndScopes": "도구 및 범위", + "tableTool": "도구", + "tableScopes": "범위", + "tablePhase": "단계", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "감사 로그", + "auditSummary": "호출: {total} | {totalPages}페이지 중 {page}페이지", + "allTools": "모든 도구", + "allResults": "모든 결과", + "success": "성공", + "failure": "실패", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "감사 항목을 불러오는 중...", + "noAuditEntriesForFilters": "현재 필터에 해당하는 감사 항목이 없습니다.", + "tableTimestamp": "타임스탬프", + "tableDuration": "소요 시간", + "tableResult": "결과", + "tableApiKey": "API 키", + "failed": "실패", + "previous": "이전", + "next": "다음", + "apiKeyId": "API 키 ID", + "offset": "오프셋", + "limit": "제한", + "tool": "도구" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A 대시보드 로드 중...", + "confirmCancelTask": "작업 {taskId}을(를) 취소하시겠습니까?", + "cancelTaskFailed": "작업을 취소하지 못했습니다.", + "cancelTaskSuccess": "작업 {taskId}이(가) 취소되었습니다.", + "smokeSendFailed": "message/send 스모크 테스트에 실패했습니다.", + "smokeSendSuccessWithTask": "message/send 정상 작동(작업 {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream 스모크 테스트에 실패했습니다.", + "smokeStreamSuccessWithTask": "message/stream 정상 작동(작업 {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream이 작업 ID 없이 종료되었습니다.", + "health": "상태", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "전체 작업", + "activeStreams": "활성 스트림", + "lastTask": "최근 작업", + "taskStateOverview": "작업 상태 개요", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "제출됨", + "working": "진행 중", + "completed": "완료됨", + "failed": "실패함", + "cancelled": "취소됨" }, - "agentCard": "Agent card", + "agentCard": "에이전트 카드", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "버전", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", + "capabilities": "기능", + "agentCardNotAvailable": "에이전트 카드를 사용할 수 없습니다.", + "quickValidation": "빠른 검증", + "quickValidationDescription": "실시간 `/a2a` 엔드포인트를 통해 스모크 호출을 실행합니다.", + "runMessageSend": "message/send 실행", + "runMessageStream": "message/stream 실행", + "taskManagement": "작업 관리", + "taskSummary": "작업 {total}개 | {totalPages}페이지 중 {page}페이지", + "allStates": "전체", + "allSkills": "모든 스킬", + "loadingTasks": "작업 로드 중...", "noTasksForFilters": "현재 필터에 대한 작업을 찾을 수 없습니다.", "tableTask": "작업", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", + "tableSkill": "스킬", + "tableState": "상태", + "tableUpdated": "업데이트됨", "tableActions": "동작", "view": "보기", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", + "cancel": "취소", + "previous": "이전", + "next": "다음", "taskDetail": "작업 세부정보", "close": "닫기", "metadata": "메타데이터", "events": "이벤트", "artifacts": "아티팩트", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "tablePhase": "테이블 단계", + "offset": "오프셋", + "limit": "제한", + "skill": "스킬", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "message/send", "rpcMethodStream": "message/stream", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "작업", + "addMemory": "메모리 추가", + "allTypes": "모든 유형", "cancel": "취소", "checkHealth": "상태 확인", "checkingHealth": "확인 중…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "작동 방식", "howWorksContent": "1. 자동 추출: 각 응답이 끝날 때 사실과 에피소드가 자동으로 감지되고 저장됩니다.\n2. 검색: 각 응답 전에 FTS5(정확), 벡터(의미론적) 또는 하이브리드 RRF를 통해 가장 관련성이 높은 메모리를 검색합니다.\n3. 주입: 응답 품질을 향상시키기 위해 관련 메모리가 어시스턴트 컨텍스트에 주입됩니다.\n4. 관리: 이 페이지를 사용하여 오래된 메모리를 보기, 편집, 내보내기 및 압축할 수 있습니다." }, - "content": "Content", + "content": "콘텐츠", "contentPlaceholder": "기억해야 할 값 또는 JSON 콘텐츠", - "created": "Created", - "delete": "Delete", + "created": "생성일", + "delete": "삭제", "deleteConfirmDesc": "이 작업은 취소할 수 없습니다. 메모리가 영구적으로 삭제됩니다.", "deleteConfirmTitle": "메모리를 삭제하시겠습니까?", - "description": "View and manage stored memory entries", + "description": "저장된 메모리 항목 보기 및 관리", "editMemory": "메모리 편집", "editModal": { "title": "메모리 편집", @@ -4444,20 +4444,20 @@ "configureCta": "구성", "vectorStoreInstallHint": "벡터 검색을 활성화하려면: npm install sqlite-vec(WASM이 아닌 네이티브 Node.js 필요)을 실행한 후 다시 시작하세요." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "일화적", + "export": "내보내기", + "factual": "사실적", "healthUnknown": "상태를 알 수 없음", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "적중률", + "import": "가져오기", "importError": "파일을 가져오지 못했습니다", "importResult": "{imported}개 가져옴, {skipped}개 건너뜀", - "key": "Key", + "key": "키", "keyPlaceholder": "예: user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "메모리", "next": "다음", - "noMemories": "No memories found", + "noMemories": "메모리를 찾을 수 없습니다", "pageInfo": "페이지 {page}/{totalPages}(총 {total})", "pipelineError": "파이프라인 오류", "pipelineOk": "파이프라인 정상({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "미리보기를 가져오지 못했습니다" }, "previous": "이전", - "procedural": "Procedural", + "procedural": "절차적", "qdrant": { "title": "Qdrant (벡터 저장소 티어 2)", "description": "확장 가능한 시맨틱 검색을 위한 선택적 Qdrant 연동", @@ -4534,8 +4534,8 @@ }, "save": "저장", "saving": "저장 중...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "메모리 검색...", + "semantic": "의미적", "summarize": { "title": "오래된 메모리 압축", "noCandidates": "압축 대상 메모리가 없습니다(기준: 30일 초과).", @@ -4547,8 +4547,8 @@ "playground": "플레이그라운드", "engine": "엔진" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "메모리 관리", + "tokensUsed": "사용된 토큰", "tooltip": { "totalEntries": "이 API 키에 저장된 총 메모리", "tokensUsed": "활성 메모리가 차지하는 예상 총 토큰 수", @@ -4558,15 +4558,15 @@ "procedural": "어시스턴트가 따라야 하는 절차, 워크플로 및 지침", "semantic": "개념, 선호도 및 도메인 지식" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "총 항목 수", + "type": "유형", "memoryEnabled": "메모리 활성화됨" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "스킬", + "description": "AI 스킬 관리 및 모니터링", + "skillsTab": "스킬", + "executionsTab": "실행", "selectSkillToInspect": "검사할 스킬을 왼쪽에서 선택하세요.", "schemaTab": "스키마", "handlerTab": "핸들러", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "테스트 실행(자리 표시자)", "setModeAria": "{mode} 모드 설정", "uninstallSkill": "스킬 제거", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "샌드박스", + "loading": "스킬을 불러오는 중...", + "noSkills": "스킬을 찾을 수 없습니다", + "noExecutions": "실행 내역을 찾을 수 없습니다", + "enabled": "활성화됨", + "disabled": "비활성화됨", "delete": "삭제", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "버전", + "tableDescription": "설명", + "skill": "스킬", + "status": "상태", + "duration": "소요 시간", + "time": "시간", + "sandboxConfig": "샌드박스 구성", + "cpuLimit": "CPU 제한", + "cpuLimitDesc": "스킬당 최대 실행 시간", + "memoryLimit": "메모리 제한", + "memoryLimitDesc": "최대 메모리 할당량", + "timeout": "시간 초과", + "timeoutDesc": "응답 최대 대기 시간", + "networkAccess": "네트워크 액세스", + "networkAccessDesc": "아웃바운드 네트워크 요청 허용", + "mode": "모드", "q": "Q", "filterSkillsPlaceholder": "이름, 설명 또는 태그로 기술 필터링", "allModes": "모든 모드", @@ -4665,13 +4665,13 @@ "retry": "재시도", "allOperational": "모든 시스템 작동", "issuesDetected": "시스템 문제가 감지되었습니다.", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute가 준비되었습니다", + "healthVerdictActionRequired": "전체 작동을 복원하려면 조치가 필요합니다", + "healthVerdictCoolingDown": "최근 변경 사항 적용 후 안정화 중", + "healthSubtitle": "시스템 상태 확인", + "advancedDiagnosticsTitle": "고급 진단", + "hide": "숨기기", + "show": "표시", "updatedAt": "{time} 업데이트됨", "latency": "대기 시간", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "공급자", "configuredProvidersLabel": "대시보드에 구성됨", "configuredProvidersHint": "런타임 상태에 관계없이 /dashboard/providers에 자격 증명이 저장된 공급자입니다.", - "activeProviders": "{count} active", + "activeProviders": "{count}개 활성", "activeProvidersHint": "현재 요청 라우팅을 위해 활성화된 구성된 공급자입니다.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count}개 모니터링 중", "monitoredProvidersHint": "현재 회로 차단기 상태 모니터로 추적되는 공급자입니다.", "healthyCount": "{count}개 정상", "nodeVersion": "노드 {version}", @@ -4721,11 +4721,11 @@ "resetting": "재설정 중...", "resetAll": "모두 재설정", "until": "{time}까지", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "소진됨", + "learnedFromHeaders": "헤더에서 학습됨", + "remainingOfLimit": "{remaining}/{limit} 남음", + "throttleStatus": "스로틀: {value}", + "lastHeaderUpdate": "헤더 업데이트: {age}", "databaseHealth": "데이터베이스 상태", "databaseHealthDescription": "오래된 할당량/도메인 행 및 손상된 콤보 참조를 진단하고 복구합니다.", "status": "상태", @@ -4888,28 +4888,28 @@ "previous": "이전", "next": "다음", "providerWarningTitle": "공급자 경고", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "세부 정보 보기", + "eventMetadata": "이벤트 메타데이터", + "eventPayload": "이벤트 페이로드", + "requestId": "요청 ID", "providerWarningDesc": "요청 처리 중 일부 공급자가 경고를 반환했습니다", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "오프셋", + "limit": "제한", + "status": "상태", + "resourceType": "리소스 유형", + "totalEntries": "총 항목 수", + "tab": "탭", "auditModalSubtitle": "이벤트 세부정보 및 메타데이터", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "닫기", + "runningRequests": "활성 요청", + "runningRequestsDesc": "현재 실행 중인 업스트림 요청을 실시간으로 표시합니다", "clearAll": "모두 지우기", "confirmClearActiveRequests": "활성 요청을 모두 삭제하시겠습니까?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "모델", + "provider": "제공자", + "account": "계정", + "elapsed": "경과 시간", "activeStage": "단계", "activeStageUnknown": "아직 업스트림으로 전송되지 않음", "activeStageRegistered": "등록됨", @@ -4919,48 +4919,48 @@ "activeStageRateLimitSlotAcquired": "속도 제한 슬롯 확보됨", "activeStageSendingToProvider": "업스트림으로 전송 중", "activeStageProviderResponseStarted": "업스트림 응답 시작됨", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "개수", + "payloads": "페이로드", + "viewPayloads": "보기", + "activeCount": "활성 {count}개", + "clientPayload": "클라이언트 요청 페이로드", + "upstreamPayload": "업스트림 제공자 페이로드", + "upstreamNotSentYet": "아직 업스트림으로 전송되지 않음", + "runningRequestDetailMeta": "계정: {account} — 경과 시간: {elapsed}", + "export": "내보내기", + "exporting": "내보내는 중...", + "exportFailed": "내보내기 실패", "cleanHistoryButton": "기록 정리", "cleanHistoryTitle": "로그 기록을 정리하시겠습니까?", "cleanHistoryMessage": "이 작업은 DATA_DIR/call_logs 아래의 모든 요청 로그 행, 레거시 상세 행 및 로컬 아티팩트 파일을 영구적으로 삭제합니다. 정리 후 실시간 페이지가 새로고침됩니다.", "cleanHistoryConfirm": "기록 정리", "cleanHistoryCancel": "취소", "cleanHistorySuccess": "로그 항목 {deleted}개, 아티팩트 {deletedArtifacts}개, 레거시 상세 행 {deletedDetailedLogs}개를 정리했습니다.", - "cleanHistoryEmpty": "No request log history was found.", - "cleanHistoryFailed": "Failed to clean log history.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "cleanHistoryEmpty": "요청 로그 기록을 찾을 수 없습니다.", + "cleanHistoryFailed": "로그 기록을 정리하지 못했습니다.", + "timeRange": "시간 범위", + "lastNHours": "최근 {hours}", + "defaultRange": "기본값", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", - "filterByLevel": "Filter by log level", - "searchPlaceholder": "Search logs…", - "searchAria": "Search log entries", - "disableAutoScroll": "Disable auto-scroll", - "enableAutoScroll": "Enable auto-scroll", - "autoScroll": "Auto-scroll", + "fetchFailed": "로그를 가져오지 못했습니다", + "copyFailed": "로그 항목을 복사하지 못했습니다", + "copyLogEntry": "로그 항목 복사", + "filterByLevel": "로그 수준별 필터링", + "searchPlaceholder": "로그 검색…", + "searchAria": "로그 항목 검색", + "disableAutoScroll": "자동 스크롤 비활성화", + "enableAutoScroll": "자동 스크롤 활성화", + "autoScroll": "자동 스크롤", "entryCount": "{count, plural, one {#개 항목} other {#개 항목}}", - "lastHour": "Last 1h", + "lastHour": "최근 1시간", "updatedAt": "{time} 업데이트됨", - "fileLoggingRequired": "Make sure the application is writing logs to a file (APP_LOG_TO_FILE=true)", - "consoleAria": "Application console logs", - "applicationConsole": "Application Console", - "emptyFileLoggingHint": "Ensure APP_LOG_TO_FILE=true is set in your .env file" + "fileLoggingRequired": "애플리케이션이 로그를 파일에 기록하도록 설정되어 있는지 확인하세요(APP_LOG_TO_FILE=true)", + "consoleAria": "애플리케이션 콘솔 로그", + "applicationConsole": "애플리케이션 콘솔", + "emptyFileLoggingHint": ".env 파일에 APP_LOG_TO_FILE=true가 설정되어 있는지 확인하세요" }, - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionLogTitle": "압축 로그", + "compressionLogEmpty": "아직 압축된 요청이 없습니다. 압축을 활성화한 상태에서 요청이 처리되면 여기에 압축 통계가 표시됩니다.", "tokens": "토큰" }, "onboarding": { @@ -4987,9 +4987,9 @@ "multiProvider": "다중 공급자", "usageTracking": "사용량 추적", "securityDesc": "대시보드를 보호하기 위해 비밀번호를 설정하거나 지금은 건너뛰세요.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ 비밀번호가 없으면 설정 중에 제공자를 추가할 수 없습니다. 비밀번호를 설정한 후 대시보드에서 나중에 추가할 수 있습니다.", "providerDesc": "첫 번째 AI 공급자를 연결하세요. 나중에 더 추가할 수 있습니다.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "제공자를 추가하려면 먼저 비밀번호를 설정해야 합니다. 보안 단계로 돌아가 비밀번호를 설정하거나 나중에 대시보드에서 제공자를 추가하세요.", "apiKeyRequired": "API 키(필수)", "customUrlOptional": "맞춤 URL(선택사항)", "testDesc": "공급자 연결이 작동하는지 확인해 보겠습니다.", @@ -5010,7 +5010,7 @@ "apiKeyHelp": "API 키는 AI 서비스의 비밀번호입니다. 공급자의 웹사이트(예: platform.openai.com, console.anthropic.com)에서 하나를 받으세요.", "tier": { "subtitle": "OmniRoute는 공급자를 3개의 계층으로 구성하므로 라우팅에서는 가장 안정적이고 비용이 저렴한 경로를 먼저 선호합니다.", - "flowCaption": "Requests flow through your subscription quotas first, then pay-per-token cheap providers, then free-tier providers — automatic, zero-config.", + "flowCaption": "요청은 먼저 구독 할당량을 사용하고, 그다음 토큰당 요금이 저렴한 제공자와 무료 티어 제공자를 차례로 거칩니다. 모든 과정은 별도의 설정 없이 자동으로 처리됩니다.", "afterSetup": "설정 후.", "tier1": { "label": "프리미엄 고객", @@ -5050,7 +5050,7 @@ }, "providers": { "title": "공급자", - "Account Deactivated": "Account Deactivated", + "Account Deactivated": "계정 비활성화됨", "allProviders": "모든 제공자", "audioProviders": "오디오 제공업체", "showFreeOnly": "무료만", @@ -5058,14 +5058,14 @@ "addFirstProvider": "첫 번째 공급자 추가", "addFirstProviderDesc": "OmniRoute를 통해 요청 라우팅을 시작하려면 AI 공급자를 연결하세요. 무료 공급자, API 키 또는 OAuth 계정을 사용할 수 있습니다.", "learnMore": "자세히 알아보기", - "importFromFile": "Import from file", - "importFromFileTitle": "Import providers from file", - "importFromFileDescription": "Upload a CSV or JSON file listing multiple providers (each row can be a different provider type). Review the parsed rows below and pick which ones to import.", - "importFromFileChoose": "Choose file", + "importFromFile": "파일에서 가져오기", + "importFromFileTitle": "파일에서 제공자 가져오기", + "importFromFileDescription": "여러 제공자가 나열된 CSV 또는 JSON 파일을 업로드하세요(각 행의 제공자 유형은 서로 달라도 됩니다). 아래에서 파싱된 행을 검토하고 가져올 항목을 선택하세요.", + "importFromFileChoose": "파일 선택", "importFromFileSelectHint": "{total}개 중 {count}개 선택됨", - "importFromFileColProvider": "Provider", - "importFromFileColName": "Name", - "importFromFileColBaseUrl": "Base URL", + "importFromFileColProvider": "제공자", + "importFromFileColName": "이름", + "importFromFileColBaseUrl": "기본 URL", "importFromFileErrorLine": "{line}행: {reason}", "importErrorMissingProvider": "제공업체 누락", "importErrorMissingName": "이름 누락", @@ -5076,8 +5076,11 @@ "importFromFileImporting": "가져오는 중…", "importFromFileImport": "제공업체 {count}개 가져오기", "importFromFileResult": "제공업체 {success}개를 가져왔습니다 ({failed}개 실패)", + "importFromFileDownloadTemplate": "CSV 템플릿 다운로드", + "importFromFileMoreErrors": "외 {count}개", + "importFromFileSchemaHint": "CSV 열은 provider, name, apiKey, baseUrl(선택 사항), priority(선택 사항) 순서로 배치해야 합니다. provider 열에는 기존의 관리형 제공자 ID 또는 이미 등록된 OpenAI/Anthropic 호환 노드 ID를 입력해야 합니다. 이 가져오기 작업으로 새 엔드포인트 노드가 생성되지는 않습니다.", "adaptaTutorial": { - "title": "How to connect Adapta Web", + "title": "Adapta Web 연결 방법", "introPrefix": "Adapta는 Clerk을 통해 인증합니다. 토큰은", "introSuffix": "OmniRoute가 세션을 자동으로 새로 고칠 수 있도록 하는 수명이 긴 JWT입니다.", "or": "또는", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count}개 숨겨짐", "warningCount": "{count} 경고", "noConnections": "연결 없음", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "만료됨", + "expiringSoonBadge": "곧 만료됨", "freeTier": "프리 티어", "freeTierAvailable": "무료 등급 이용 가능", "hasFreeTooltip": "무료 티어 이용 가능", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "이 공급자는 더 이상 사용되지 않습니다.", "riskNotice": { "title": "계속하기 전에", - "detailsTitle": "Usage caveats", + "detailsTitle": "사용 시 주의 사항", "tooltip": "사용 시 주의 사항이 있는 제공자 — 자세한 내용을 보려면 클릭하세요", "oauth": "이 제공자는 공식 제품 세션/OAuth를 사용하며, 이는 프록시/라우터 사용에 대해 승인되지 않았습니다. 집중적인 자율 에이전트 사용(OpenCloud 스타일, 긴 다단계 흐름, 대량 배치)은 권장하지 않습니다. 업스트림에서 계정을 제한하거나 차단할 수 있습니다. 본인 책임 하에 사용하십시오.", "webCookie": "이 제공자는 웹 세션 쿠키를 통해 인증합니다. 업스트림 서비스가 언제든지 세션을 무효화할 수 있어 다시 로그인해야 할 수 있습니다. 장시간 자리를 비우는 작업에는 권장하지 않습니다. 본인 책임 하에 사용하십시오.", @@ -5188,9 +5191,9 @@ "cancel": "취소" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count}개의 연결에 플래그가 지정되었습니다. 최근 실패 횟수는 최대 {maxFailures}회입니다{lastFailureSuffix}. 클릭하여 연결 상태를 확인하세요.", + "lastFailureSuffix": "(마지막 실패: {time})", + "ariaLabel": "연결 상태 세부 정보 보기, 경고 {count}개" }, "disabled": "비활성화됨", "enableProvider": "공급자 활성화", @@ -5225,7 +5228,7 @@ "failedCreate": "공급자를 생성하지 못했습니다.", "errorOccurred": "오류가 발생했습니다. 다시 시도해 주세요.", "modelStatus": "모델현황", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "구성된 항목만", "allModelsOperational": "모든 모델 작동 가능", "modelsWithIssues": "문제가 있는 {count} 모델", "allModelsNormal": "모든 모델이 정상적으로 반응하고 있습니다.", @@ -5236,7 +5239,7 @@ "clearing": "지우는 중...", "until": "{time}까지", "providerTestFailed": "공급자 테스트 실패", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "제공자 테스트 시간이 초과되었습니다. 한 번에 테스트할 연결이 너무 많습니다.", "modeTest": "{mode} 테스트", "passedCount": "{count} 통과됨", "failedCount": "{count} 실패", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "아이콘 URL", "iconUrlHint": "선택 사항. 이 제공자의 아이콘으로 표시될 이미지 URL입니다.", "iconUrlInvalid": "잘못된 아이콘 URL입니다. http(s):// 또는 data:image/*;base64 URL을 사용하세요.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "일일 할당량 초기화 시간대", + "dailyQuotaResetTimezoneHint": "업스트림에서 X-RateLimit-Reset을 제공하지 않을 때 사용할 선택적 IANA 시간대입니다. 짧은 대기 시간을 유지하려면 비워 두세요.", + "dailyQuotaResetHourLabel": "일일 할당량 초기화 시각", + "dailyQuotaResetHourHint": "위 시간대를 기준으로 한 현지 시각(0~23시)입니다. 비워 두면 노드 수준의 시계가 사용되지 않습니다.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "공급자를 찾을 수 없습니다.", "deleteConnectionConfirm": "이 연결을 삭제하시겠습니까?", "deleteConnectionConfirmNamed": "{name}을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "선택 항목 삭제({count}개)", + "batchDeleteConfirm": "연결 {count}개를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.", + "batchDeleteSuccess": "연결 {count}개를 삭제했습니다.", "batchActivateSelected": "활성화", "batchDeactivateSelected": "비활성화", "batchRetestSelected": "재테스트", @@ -5292,7 +5295,7 @@ "filterError": "오류", "filterBanned": "차단됨", "filterCreditsExhausted": "크레딧 소진", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "계정 검색…", "noFilteredConnections": "현재 필터와 일치하는 연결이 없습니다.", "failedSetAlias": "별칭을 설정하지 못했습니다.", "setAliasSuccess": "별칭 {alias} 설정됨", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "OpenAI 호환 세부정보", "messagesApi": "메시지 API", "responsesApi": "응답 API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "임베딩", + "audioTranscriptions": "오디오 전사", + "audioSpeech": "오디오 음성", + "imagesGenerations": "이미지 생성", "chatCompletions": "Chat Completions", "importingModels": "가져오는 중...", "importFromModels": "/models에서 가져오기", - "modelsImported": "{count} models imported", + "modelsImported": "모델 {count}개를 가져왔습니다", "allModelsAlreadyImported": "모든 모델이 이미 가져왔습니다", "noNewModelsToImport": "가져올 새 모델 없음 — 모든 모델이 이미 레지스트리 또는 사용자 정의 모델 목록에 있습니다", "skippingExistingModels": "{count}개의 기존 모델 건너뛰기", @@ -5350,13 +5353,13 @@ "importFailed": "가져오기 실패", "noNewModelsAdded": "새로운 모델이 추가되지 않았습니다.", "adding": "추가 중...", - "close": "Close", + "close": "닫기", "importingModelsTitle": "모델 가져오기", "copyModel": "모델 복사", "filterModels": "모델 필터링…", "testAllRateLimited": "요청 제한에 도달하여 조기 중단됨", "hideFailedAuto": "실패한 모델 자동 숨기기", - "selectAllModels": "Select all", + "selectAllModels": "모두 선택", "hideAllModels": "모두 숨기기", "modelsActive": "활성", "showModel": "모델 표시", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "한 줄에 하나의 키입니다. 형식: name|apiKey 또는 apiKey(인덱스로 자동 이름 지정).", "bulkValidateKeys": "저장하기 전에 각 키의 유효성을 검사하세요(느림).", "bulkAddAllKeys": "모든 키 추가", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {키 #개 추가됨} other {키 #개 추가됨}}", + "bulkFailedCount": "{count, plural, one {#개 실패} other {#개 실패}}", "optional": "선택사항", "anthropicCompatibleName": "Anthropic 호환", "openaiCompatibleName": "OpenAI 호환", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "예상치 못한 오류가 발생했습니다.", "getApiKey": "API 키 가져오기", "getApiKeyDescription": "API 키를 등록하거나 가입하세요", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {연결 #개} other {연결 #개}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", @@ -5419,17 +5422,17 @@ "configured": "구성된", "providerProxyConfigureHint": "이 공급자의 모든 연결에 대한 프록시 구성", "providerProxy": "공급자 프록시", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "env 복구", + "repairEnvWorking": "복구 중...", + "repairEnvHint": "기존 값을 덮어쓰지 않고 누락된 OAuth 기본값을 .env에 복원합니다.", + "repairEnvSuccess": "OAuth 기본값이 복원되었습니다", + "repairEnvFailed": ".env 복구 실패", "noConnectionsYet": "아직 연결이 없습니다.", "addFirstConnectionHint": "시작하려면 첫 번째 연결을 추가하세요.", "addConnection": "연결 추가", "availableModels": "사용 가능한 모델", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "기본 제공 모델", + "builtInModelsHint": "이 제공자의 레지스트리 모델입니다. 연필 아이콘을 사용하여 호환성 옵션을 설정하세요.", "pageAutoRefresh": "페이지가 자동으로 새로 고쳐집니다...", "statusDisabled": "비활성화됨", "statusConnected": "연결됨", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "이 연결을 다시 인증하세요.", "proxyConfig": "프록시 구성", "aliasExistsAlert": "별칭 \"{alias}\"이(가) 이미 존재합니다. 다른 모델을 사용하거나 기존 별칭을 수정하세요.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "별칭 이름", + "clickToSetAlias": "클릭하여 별칭 설정", + "clickToEditAlias": "별칭: {alias} (클릭하여 편집)", "openRouterAnyModelHint": "OpenRouter는 모든 모델을 지원합니다. 빠른 액세스를 위해 모델을 추가하고 별칭을 만듭니다.", "modelIdFromOpenRouter": "모델 ID(OpenRouter에서)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", "customModels": "맞춤형 모델", "customModelsHint": "기본 목록에 없는 모델 ID를 추가하세요. 라우팅에 사용할 수 있습니다.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "도구 호출 ID를 9자로 정규화합니다(예: Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responses 개발자 역할을 유지합니다(system으로 매핑하지 않음)", + "compatAdjustmentsTitle": "호환성", + "compatButtonLabel": "호환성", + "compatToolIdShort": "도구 ID 9자", + "compatDeveloperShort": "개발자 역할", + "compatDoNotPreserveDeveloper": "개발자 역할 유지 안 함", + "compatBadgeNoPreserve": "유지 안 함", + "compatProtocolLabel": "클라이언트 요청 프로토콜", + "compatProtocolHint": "이 옵션은 OmniRoute가 이 요청 형식(OpenAI Chat, Responses API 또는 Anthropic Messages)을 감지할 때 적용됩니다.", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5522,10 +5525,10 @@ "paramFiltersSaveChanges": "변경 사항 저장", "paramFiltersResetToDefault": "기본값으로 재설정", "paramFiltersLoadError": "매개변수 필터 구성을 로드하지 못했습니다: {error}", - "paramFiltersSaveSuccess": "Param filter config saved", - "paramFiltersSaveError": "Failed to save param filter config: {error}", - "paramFiltersResetSuccess": "Param filter config reset to defaults", - "paramFiltersResetError": "Failed to reset param filter config: {error}", + "paramFiltersSaveSuccess": "매개변수 필터 구성이 저장되었습니다", + "paramFiltersSaveError": "매개변수 필터 구성 저장 실패: {error}", + "paramFiltersResetSuccess": "매개변수 필터 구성이 기본값으로 재설정되었습니다", + "paramFiltersResetError": "매개변수 필터 구성 재설정 실패: {error}", "interceptionSectionTitle": "웹 도구 가로채기", "interceptionSectionHint": "이 제공자의 네이티브 web_search / web_fetch 도구 호출을 제공자가 네이티브로 실행하도록 두는 대신 OmniRoute 자체의 search 및 fetch 엔드포인트를 통해 라우팅합니다. 기본적으로 비활성화되어 있으며, 기존 동작은 변경되지 않습니다.", "interceptSearchLabel": "web_search 가로채기", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "네이티브 web_fetch 도구 호출을 OmniRoute의 /v1/web/fetch로 재작성합니다.", "interceptionLoadError": "가로채기 설정을 불러오지 못했습니다: {error}", "interceptionSaveError": "가로채기 설정을 저장하지 못했습니다: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Claude Code에 표시(claude/…)", + "ccAliasSectionHint": "Claude Code의 게이트웨이 모델 검색에서 해당 모델을 나열할 수 있도록 이 제공자의 모델을 claude/<provider>/<model> 미러 ID로도 표시합니다. 기본적으로 비활성화되어 있으며, 활성화하면 모든 클라이언트의 카탈로그 항목 수가 두 배로 늘어납니다.", + "ccAliasProviderLevelLabel": "제공자 기본값", + "ccAliasModelOverridesLabel": "모델별 재정의", + "ccAliasModelOverrideAriaLabel": "{modelId} 재정의", + "ccAliasStateInherit": "상속", + "ccAliasStateOn": "켜기", + "ccAliasStateOff": "끄기", + "ccAliasAddModelPlaceholder": "모델 ID(예: gpt-4o)", + "ccAliasAddModelButton": "재정의 추가", + "ccAliasLoadError": "검색 별칭 설정을 불러오지 못했습니다: {error}", + "ccAliasSaveError": "검색 별칭 설정을 저장하지 못했습니다: {error}", + "compatUpstreamHeadersLabel": "추가 업스트림 헤더", + "compatUpstreamHeadersHint": "높은 권한이 필요한 설정입니다. 공급자 API 자격 증명을 편집하는 것과 동일한 신뢰 수준이 요구되므로 신뢰할 수 있는 관리자만 사용해야 합니다. OmniRoute가 공급자 API 키의 인증 정보를 추가한 후 병합됩니다. 사용자 지정 헤더의 이름이 기존 헤더와 같으면(예: Authorization) 입력한 값이 자동 생성된 헤더(Bearer 토큰 포함)를 완전히 대체합니다. 업스트림에는 설정의 키가 아닌 입력한 값만 표시됩니다. 잘못 구성하면 401 오류가 발생하거나 업스트림 인증이 중단될 수 있습니다. 헤더당 한 행을 사용하세요(예: 일부 게이트웨이의 추가 Authentication). 값을 미리 보려면 마우스를 올리거나 포커스를 두세요. 포커스를 잃거나 패널 외부를 클릭하거나 이 패널을 닫으면 저장됩니다.", + "compatUpstreamHeaderName": "헤더 이름", + "compatUpstreamHeaderValue": "값", + "compatUpstreamAddRow": "헤더 추가", + "compatUpstreamRemoveRow": "행 제거", + "compatBadgeUpstreamHeaders": "헤더", "perModelQuotaLabel": "모델별 할당량", "perModelQuotaDescription": "활성화하면 429/404 오류가 전체 연결이 아닌 해당 모델만 잠급니다. 모델별 속도 제한이 있는 공급자(예: ModelScope)에 사용하세요.", "importFreeModelsOnlyLabel": "무료 모델만 가져오기", @@ -5592,26 +5595,26 @@ "email": "이메일", "healthCheckMinutes": "상태 점검(분)", "healthCheckHint": "사전 토큰 새로 고침 간격. 0 = 비활성화됨.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "모두 선택 해제", + "modelsActiveCount": "{active}/{total}개 활성", + "noModelsMatch": "\"{filter}\"와 일치하는 모델이 없습니다", + "groupLabel": "환경", + "groupPlaceholder": "예: eKaizen, 개인용", "failedTestConnection": "연결을 테스트하지 못했습니다.", "failed": "실패", "leaveBlankKeepCurrentApiKey": "현재 API 키를 유지하려면 비워 두세요.", "editCompatibleTitle": "{type} 호환 가능 편집", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "{type} 호환 API의 루트 URL입니다. 사용자 지정 엔드포인트 경로는 고급 설정에서 지정하세요.", "apiKeyForCheck": "API Key(확인용)", "testModelIdLabel": "모델 ID (선택 사항)", "testModelIdPlaceholder": "예: my-model-id", "testModelIdHint": "제공자에 /models 엔드포인트가 없는 경우, 대신 /chat/completions를 통해 검증할 모델 ID를 입력하세요.", "compatibleProdPlaceholder": "{type} 호환 가능(프로덕션)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "토큰을 새로 고쳤습니다", + "tokenRefreshFailed": "토큰을 새로 고치지 못했습니다", "cursorSessionUnchanged": "세션이 이미 현재입니다", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "인증 적용", + "exportCodexAuthFile": "인증 내보내기", "applyClaudeAuthLocal": "인증 적용", "exportClaudeAuthFile": "인증 내보내기", "importClaudeAuth": "인증 가져오기", @@ -5736,88 +5739,88 @@ "codexImportBulkFailed": "{count} 실패", "codexImportBulkZipExtracting": "ZIP 추출 중…", "codexImportBulkZipError": "ZIP을 추출하지 못했습니다.", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "고급 설정", + "chatPathLabel": "채팅 엔드포인트 경로", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "비표준 API를 사용하는 공급자의 사용자 지정 채팅 경로(예: /v4/chat/completions)", + "modelsPathLabel": "모델 엔드포인트 경로", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "검증에 사용할 사용자 지정 모델 경로(예: /v4/models)", "clientIdentityLabel": "클라이언트 식별 정보", "clientIdentityHint": "선택 사항. 이를 요구하는 호환 가능한 게이트웨이에 대해 알려진 CLI와 일치하는 클라이언트 핑거프린트 헤더(예: User-Agent)를 추가합니다.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "비활성화됨(수동)", + "statusBanned": "차단됨 / 샌드박스 위반", + "statusCreditsExhausted": "잔액 부족 / 할당량 소진", + "showEmails": "모든 이메일 표시", + "hideEmails": "모든 이메일 숨기기", "a": "A", "accountConcurrencyCapHint": "이 연결/계정이 처리할 수 있는 최대 동시 요청 수입니다. 구독 계정은 보통 소수(1~3개)만 허용하며, 초과하면 429 오류와 쿨다운이 발생합니다. 기본값을 사용하려면 비워 두세요.", "accountConcurrencyCapLabel": "Provider 계정 최대 동시 요청 수", "accountIdHint": "일부 공급자(예: Cloudflare Workers AI)에서 API 토큰과 함께 필요합니다.", "accountIdLabel": "계정 ID", "accountIdPlaceholder": "공급자 계정 ID", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "다른 API 키를 추가하거나 여러 키 붙여넣기", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "애그리게이터 게이트웨이", "enterpriseCloud": "엔터프라이즈 및 클라우드", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API 형식 레이블", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API 지역: 중국", + "apiRegionHint": "API 리전 안내", + "apiRegionInternational": "API 리전 국제", + "apiRegionLabel": "API 리전", + "apikey": "API 키", + "audio": "오디오", + "audioProvidersHeading": "오디오 제공업체", "cloudAgentProviders": "클라우드 에이전트 제공업체", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "오디오", + "azureOpenAiBaseUrlHint": "Azure Open AI 기본 URL 안내", + "bailianBaseUrlHint": "Bailian 기본 URL 안내", + "claudeWebCookieHint": "claude.ai → DevTools → Application → Cookies → claude.ai를 열고 'sessionKey' 값을 복사하세요. Cloudflare용 cf_clearance, __cf_bm, _cfuvid도 필요합니다.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web 쿠키 안내", + "blackboxWebCookiePlaceholder": "Blackbox Web 쿠키 자리표시자", "t3ChatWebCookieHint": "t3.chat → DevTools → Application → Local Storage → https://t3.chat을 열고 'convex-session-id'를 복사하세요. 그런 다음 DevTools → Network를 열고 채팅 요청에서 전체 쿠키 헤더를 복사하세요. 아래 필드에 두 값을 모두 붙여넣습니다.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web 쿠키 안내", "blockClaudeExtraUsageDescription": "활성화하면 사용량 API가 대기 중인 추가 사용량을 보고하는 즉시 OmniRoute가 이 Claude 연결을 사용 불가로 표시하여, 종량제 추가 과금을 계속하는 대신 폴백이 다른 연결로 전환됩니다.", "blockClaudeExtraUsageLabel": "Claude 추가 사용 차단", "disableCoolingDescription": "일시적인 쿨다운을 건너뛰어 복구 가능한 오류가 발생한 후에도 이 연결이 사용 가능한 상태로 유지되도록 합니다(차단됨/만료됨과 같은 최종 상태는 여전히 적용됨).", "disableCoolingLabel": "이 연결에 대한 쿨다운 비활성화", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {키 1개 추가됨} other {키 #개 추가됨}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {중복 1개 건너뜀} other {중복 #개 건너뜀}}", + "bulkPasteHint": "한 줄에 API 키 하나씩 붙여넣으세요. 빈 줄은 무시되며 중복 키는 건너뜁니다.", "ccCompatibleBaseUrlHint": "Claude Code 전용 릴레이의 기본 URL입니다. /messages는 포함하지 마세요.", "ccCompatibleBaseUrlPlaceholder": "https://relay.example.com/v1", "ccCompatibleChatPathHint": "기본값은 Claude Code의 엄격한 Messages API 경로입니다. 릴레이 문서에 다른 경로가 명시된 경우에만 변경하세요.", "ccCompatibleContext1mDescription": "선택한 Claude 모델이 지원하는 경우 context-1m 베타 헤더를 추가합니다.", "ccCompatibleContext1mLabel": "1M 컨텍스트 베타 활성화", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "숨겨진 Claude 사고 스트림이 필요한 CC Compatible 업스트림에 redact-thinking 베타 헤더를 추가합니다.", + "ccCompatibleRedactThinkingLabel": "redact-thinking 베타 활성화", + "ccCompatibleSummarizeThinkingDescription": "지원되는 Claude 모델이 표시 가능한 사고 델타를 스트리밍하도록 CC Compatible 사고 요청에 `display: \"summarized\"`를 추가합니다.", + "ccCompatibleSummarizeThinkingLabel": "요약된 사고 표시 활성화", "ccCompatibleDetailsTitle": "CC 호환 릴레이 세부 정보", "ccCompatibleLabel": "CC 호환", "ccCompatibleModelsDescription": "CC 호환 릴레이는 모델 목록을 제공하지 않습니다. 릴레이가 허용하는 Claude 모델 ID를 추가하세요.", "ccCompatibleNameHint": "이 Claude Code 전용 릴레이의 표시 이름입니다.", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay 프로덕션", "ccCompatiblePrefixHint": "prefix/model-id와 같은 모델 별칭에 사용됩니다.", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Claude Code 클라이언트 전용으로 서비스하는 릴레이에만 이 공급자를 사용하세요. OmniRoute는 들어오는 모든 요청을 Claude Code 호환 와이어 형식으로 재작성하여 해당 릴레이가 수락하도록 합니다. Claude Code CLI만 사용하려는 경우이거나 이 릴레이 유형이 무엇인지 확실하지 않은 경우에는 일반 Anthropic 호환 공급자를 사용하세요.", "claudeExtraUsageShort": "추가 사용량", "claudeExtraUsageToggleTitle": "이 연결에 대해 Claude 추가 사용량 집계 차단", "codex5hToggleTitle": "이 연결에 대해 Codex 5시간 할당량 추적", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "사용 가능한 경우 Codex 요청에 우선 서비스 티어를 사용합니다.", + "codexFastServiceTierLabel": "Codex 고속 서비스 티어", "codexWeeklyToggleTitle": "이 연결에 대해 Codex 주간 할당량 추적", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Compatible 업스트림 헤더 이름 자리표시자", + "compatUpstreamHeaderValuePlaceholder": "Compatible 업스트림 헤더 값 자리표시자", + "compatible": "호환 가능", + "configuredCount": "구성된 개수", + "consoleApiKeyOracleHint": "Console API 키 Oracle 안내", + "consoleApiKeyOracleLabel": "Console API 키 Oracle", + "consoleApiKeyOraclePlaceholder": "Console API 키 Oracle 자리표시자", "newApiUserIdLabel": "New-API 사용자 ID", "newApiUserIdPlaceholder": "예: 12345", "newApiUserIdHint": "AgentRouter의 New-Api-User 헤더 값으로, 할당량 잔액을 조회할 때 콘솔 API 키와 함께 사용됩니다.", @@ -5830,53 +5833,53 @@ "featureFlagNewApiAggregatorBalanceDescription": "New-API / One-API / Sub2API 집계기 호환 노드에 대한 잔액 감지를 활성화합니다.", "cpaModeDisabledTitle": "CLIProxyAPI 호환 모드가 비활성화되어 있습니다", "cpaModeEnabledTitle": "CLIProxyAPI 호환 모드가 활성화되어 있습니다", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "사용자 지정 User-Agent 안내", + "customUserAgentLabel": "사용자 지정 User-Agent", + "databricksBaseUrlHint": "Databricks 기본 URL 안내", + "defaultThinkingStrengthHint": "요청에 추론 강도가 지정되지 않은 경우 사용됩니다.", + "defaultThinkingStrengthLabel": "기본 사고 강도", + "deleteAllExtraApiKeys": "모두 삭제", + "excludedModelsHint": "제외된 모델 도움말", + "excludedModelsLabel": "제외된 모델 레이블", + "excludedModelsPlaceholder": "제외된 모델 자리표시자", + "expirationBannerExpired": "만료 배너: 만료됨", + "expirationBannerExpiredDesc": "만료 배너: 만료됨 설명", + "expirationBannerExpiringSoon": "만료 배너: 곧 만료됨", + "expirationBannerExpiringSoonDesc": "만료 배너: 곧 만료됨 설명", + "extraApiKeyMasked": "키 {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "추가 API 키 도움말", + "extraApiKeysLabel": "추가 API 키 레이블", + "apiKeyHealthLabel": "API 키 상태", + "apiKeyStatusActive": "활성", + "apiKeyStatusWarning": "경고(실패 {count}회)", + "apiKeyStatusInvalid": "유효하지 않음", + "primaryKey": "기본 키", + "apiKeyInvalidAlert": "연결 {connections}에서 인증 실패로 인해 {count}개의 API 키가 유효하지 않은 것으로 표시되었습니다. 해당 키는 순환 사용에서 제외됩니다. 클릭하여 검토하세요.", + "apiKeyInvalidAlertTitle": "API 키 상태 알림", + "apiKeyWarningAlert": "연결 {connections}에서 높은 실패율로 인해 {count}개의 API 키가 경고 상태입니다. 순환 사용 문제를 방지하려면 검토하세요.", + "apiKeyWarningAlertTitle": "API 키 경고", + "googlePseInfo": "Google PSE 정보", "antigravityProjectIdHint": "Antigravity Cloud Code 요청에 대한 선택적 재정의. Google OAuth 중에 발견된 프로젝트를 사용하려면 비워두세요.", "antigravityClientProfileLabel": "클라이언트 프로필", "antigravityClientProfileHint": "OmniRoute가 API에 제시할 Antigravity 클라이언트 식별 정보를 선택합니다.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Codex Fast 티어가 활성화되어 있습니다", - "tierFast": "Fast", + "tierFast": "빠름", "antigravityProjectIdLabel": "Google Cloud 프로젝트 ID", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok 웹 쿠키 자리표시자", + "herokuBaseUrlHint": "Heroku 기본 URL 도움말", + "hideEmail": "이메일 숨기기", + "imageProviders": "이미지 제공업체", "videoProviders": "비디오 생성", "embeddingRerankProviders": "임베딩 및 순위 재지정", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "이미지 짧은 레이블", + "llmProviders": "LLM 제공업체", + "localProviderApiKeyOptionalHint": "로컬 제공업체 API 키 선택 사항 도움말", + "localProviderBaseUrlHint": "로컬 제공업체 기본 URL 도움말", + "localProviders": "로컬 제공업체", + "maxConcurrentWholeNumberError": "최대 동시 실행 수는 정수여야 합니다", "m365TierLabel": "Copilot 티어", "m365TierHint": "이 연결이 사용할 Microsoft 365 Copilot 서피스를 선택합니다. 개인용(Individual)은 기본 소비자용 BizChat이며, 교육용(Education) 및 기업용(Enterprise/회사)은 해당 테넌트 서피스를 사용하도록 선택합니다.", "m365TierIndividualOption": "개인용 (기본값)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "저렴함", "tierOverridePremium": "프리미엄", "tierOverrideHelpText": "OmniRoute가 모델 가격을 기준으로 추론하도록 하는 대신, 이 제공업체를 특정 라우팅 티어에 고정합니다.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark 웹 쿠키 도움말", + "museSparkWebCookiePlaceholder": "Muse Spark 웹 쿠키 자리표시자", + "oauth": "OAuth", + "openCliTools": "CLI 도구 열기", + "openSettings": "설정 열기", + "openaiResponsesStoreDescription": "호환되는 Responses API 요청이 저장된 응답 상태를 유지하도록 허용합니다.", + "openaiResponsesStoreLabel": "OpenAI Responses 저장소", + "perplexitySearchSharedKeyInfo": "Perplexity 검색 공유 키 정보", + "perplexityWebCookieHint": "Perplexity 웹 쿠키 힌트", + "perplexityWebCookiePlaceholder": "Perplexity 웹 쿠키 자리표시자", "personalAccessTokenLabel": "개인 액세스 토큰", "qoderPatHint": "Qoder 개인 액세스 토큰(PAT)을 붙여넣으세요. Qoder → Settings → Personal Access Tokens에서 생성할 수 있습니다.", "qoderPatPlaceholder": "Qoder 개인 액세스 토큰", "rateLimitOverridesSection": "속도 제한 재정의", "rateLimitOverridesMaxConcurrentHint": "이 연결에 대한 최대 동시 요청 수 재정의입니다. 계정 수준의 제한을 재정의합니다.", "rateLimitOverridesMaxConcurrentLabel": "최대 동시 요청 수 (속도 제한)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "요청이 실패하기 전에 속도 제한 슬롯을 기다릴 수 있는 최대 시간(ms)입니다. 이 연결에 대해서만 전역 복원력 설정을 재정의합니다.", + "rateLimitOverridesMaxWaitMsLabel": "최대 대기열 대기 시간(ms)", "rateLimitOverridesMinTimeHint": "요청 간 최소 시간(ms)입니다. 기본 속도 제한기 지연 시간을 재정의합니다.", "rateLimitOverridesMinTimeLabel": "최소 간격 (ms)", "rateLimitOverridesRpdHint": "이 연결에 대한 하루 최대 요청 수입니다. 공급자 기본값을 재정의합니다.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (일일 토큰 수)", "rateLimitOverridesTpmHint": "이 연결에 대한 분당 최대 토큰 수입니다. 제공업체 기본값을 재정의합니다.", "rateLimitOverridesTpmLabel": "TPM (분당 토큰 수)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Oauth 토큰 새로 고침", + "regionHint": "지역 힌트", + "regionLabel": "지역", + "removeThisKey": "이 키 제거", + "routingTagsHint": "라우팅 태그 힌트", + "routingTagsLabel": "라우팅 태그", + "routingTagsPlaceholder": "라우팅 태그 자리표시자", + "search": "검색", + "searchEngineIdHint": "검색 엔진 ID 힌트", + "searchEngineIdLabel": "검색 엔진 ID", + "searchEngineIdRequired": "검색 엔진 ID가 필요합니다", + "searchProvider": "검색 제공업체", + "searchProviderDesc": "검색 제공업체 설명", "searchProviders": "공급자 검색...", "searchByModel": "모델로 검색…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "검색 제공업체", + "searxngBaseUrlHint": "Searxng 기본 URL 힌트", + "searxngInfo": "Searxng 정보", + "sessionCookieLabel": "세션 쿠키", + "showEmail": "이메일 표시", + "snowflakeBaseUrlHint": "Snowflake 기본 URL 힌트", "supportedEndpointAudio": "오디오", "supportedEndpointChat": "채팅", "supportedEndpointEmbeddings": "임베딩", "supportedEndpointImages": "이미지", "supportedEndpointsLabel": "지원되는 엔드포인트", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "태그 그룹 힌트", + "tagGroupLabel": "태그 그룹", + "tagGroupPlaceholder": "태그 그룹 자리표시자", + "testModel": "모델 테스트", + "testingModel": "모델 테스트 중", "modelTestQuotaTooltip": "쿼타 소진 — 내일 리셋되거나 추가 충전이 필요합니다", "toggleOffShort": "끔", "toggleOnShort": "켬", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "토큰 만료됨", + "tokenExpiredTitle": "토큰 만료", + "tokenExpiresSoonTitle": "토큰이 곧 만료됨", + "tokenShort": "토큰", + "totalKeysRotating": "{count, plural, one {키 1개 순환 중} other {키 #개 순환 중}}", + "unhideModel": "모델 숨김 해제", + "upstreamProxyProviders": "업스트림 프록시 제공업체", "validationModelIdHint": "API 키를 검증하는 데 사용할 모델입니다. 비워 두면 공급자의 첫 번째 사용 가능한 모델을 사용합니다.", "validationModelIdLabel": "검증 모델", "validationModelIdPlaceholder": "예: meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "서비스 계정 JSON({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) 또는 OAuth access_token을 붙여넣으세요", + "webCookieProviders": "웹 쿠키 제공업체", + "weeklyShort": "매주", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo 기본 URL 힌트", "globalCodexServiceMode": "글로벌 Codex 서비스 모드", "connect": "연결", "manualApiKey": "수동 API 키", @@ -5975,9 +5978,9 @@ "zedImportDescription": "OS 키체인에 Zed IDE가 저장한 AI 제공업체 자격 증명(OpenAI, Anthropic, Google, Mistral, xAI)을 찾아 연결로 가져옵니다. 이 컴퓨터에 Zed IDE가 설치되어 있어야 합니다.", "zedImportButton": "Zed에서 가져오기", "zedImportFailed": "Zed 가져오기 실패", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed 가져오기 안내", + "zedImportNetworkError": "Zed 가져오기 네트워크 오류", + "zedImportNone": "Zed 가져오기 없음", "zedImportSuccess": "{providers}개 공급자에 대해 Zed에서 {credentials}개의 자격 증명을 가져왔습니다", "zedImporting": "가져오는 중…", "zedNoCredentials": "키체인에서 Zed 자격 증명을 찾을 수 없습니다", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5를 포함한 40개 이상의 모델을 위한 할인된 API 프록시. https://freeaiapikey.com/dashboard 에서 API 키를 가져오세요. 베이스 URL: https://freeaiapikey.com/v1.", "freemodel-dev": "https://freemodel.dev 에서 $300 무료 API 크레딧을 받으세요 — 결제 정보 불필요. OpenAI 호환 엔드포인트. GPT-5.4 및 GPT-5.5 모델 사용 가능.", "friendliai": "서버리스 추론을 위한 무료 티어 — 신용카드 불필요", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio를 통한 무료 등급입니다. 모델별 할당량은 더 이상 공개되지 않으므로 AI Studio의 할당량 페이지에서 확인하세요. 신용카드는 필요하지 않습니다.", "gigachat": "API 키로 GigaChat (Sber) 연결.", "gitlab": "공개 Code Suggestions API용 GitLab 개인 액세스 토큰. gitlab.com을 사용하지 않는 경우 자체 호스팅 베이스 URL을 구성하세요.", "gitlawb-gmi": "Gitlawb Opengateway 대시보드에서 API 키를 가져오세요.", @@ -6184,7 +6187,7 @@ "glm-cn": "API 키로 GLM Coding (China) 연결.", "glmt": "더 높은 토큰 예산, 생각하기(thinking) 활성화 및 더 긴 타임아웃이 설정된 프리셋 GLM 프로필.", "getgoapi": "API 키로 GoAPI 연결.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "무료 요금제: 모델별 한도(채팅 모델당 하루 200K 토큰, RPM/RPD는 console.groq.com/docs/rate-limits 참조) — 등록된 결제 수단이 없어도 됩니다.", "haiper": "haiper.ai/haiper-api 에서 API 키를 가져오세요.", "heroku": "API 키로 Heroku AI 연결.", "hcnsec": "api.hcnsec.cn 에서 API 키를 가져오세요.", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.ai에서 API 키를 생성한 후 여기에 Bearer 토큰으로 붙여넣으세요. https://router.requesty.ai/v1의 OpenAI 호환 엔드포인트는 실시간 /v1/models 카탈로그를 제공합니다.", "runwayml": "Runway 비디오 생성은 작업 기반입니다. OmniRoute는 텍스트-비디오 또는 이미지-비디오 작업을 제출하고, /v1/tasks/[id]를 폴링하며, 완료된 비디오 출력을 OpenAI 스타일의 /v1/videos/generations 응답으로 정규화합니다.", "sambanova": "가입 시 $5 무료 크레딧 제공(유효기간 30일), 신용카드 불필요", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.cc에서 API 키를 생성한 후 여기에 Bearer 토큰으로 붙여넣으세요. OpenAI 호환 기본 URL: https://seekai.cc/v1.", "sap": "모델 검색은 AI_API_URL의 /v2/lm/scenarios/foundation-models/models를 사용합니다. 채팅 요청은 deploymentUrl/chat/completions를 사용하며 AI-Resource-Group이 필요합니다.", "sarvam": "Sarvam AI는 /v1에서 OpenAI와 호환됩니다. OmniRoute는 /v1/models를 탐색하고 채팅 트래픽을 /v1/chat/completions로 라우팅합니다. 모델은 인도 언어에 맞게 조정되었습니다.", "scaleway": "신규 계정 대상 1M 무료 토큰 — EU/GDPR 준수(파리), Qwen3 235B 및 Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "기존 OAuth 흐름으로 Claude Code를 연결합니다.", "cline": "기존 OAuth 흐름으로 Cline을 연결합니다.", "cursor": "기존 OAuth 흐름으로 Cursor IDE를 연결합니다.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "cursor.com/dashboard/api에서 발급한 사용자 API 키(crsr_...)로 Cursor를 연결하세요. IDE 세션은 필요하지 않습니다.", "github": "기존 OAuth 흐름으로 GitHub Copilot을 연결합니다.", "gitlab-duo": "ai_features + read_user 스코프가 있는 OAuth 애플리케이션입니다. 이 OmniRoute 인스턴스에서 GITLAB_DUO_OAUTH_CLIENT_ID 및 선택적으로 GITLAB_DUO_OAUTH_CLIENT_SECRET을 구성하세요.", "kilocode": "기존 OAuth 흐름으로 Kilo Code를 연결합니다.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "공급자의 자체 도메인에서 필수 자격 증명을 복사합니다. 쿠키의 경우 Cookie 헤더 값만 복사하고 Cookie:를 생략하세요.", "webSessionGuideStep3Manual": "수동 경로: 브라우저 개발자 도구를 열고 (F12 → 네트워크), 페이지를 새로 고치고, 인증된 요청을 열고, 요청 헤더에서 쿠키 헤더 값을 복사합니다 — Cookie: 접두사는 생략합니다.", "webSessionGuideStep4": "여기에 붙여넣고 연결을 확인하세요. 작동이 중지되면 다시 로그인하여 새로운 값으로 바꾸세요.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har 파일 가져오기", + "harImportButtonBusy": "가져오는 중…", + "harImportButtonHint": "채팅 메시지를 하나 이상 보낸 후 DevTools의 Network 탭에서 내보내세요.", + "harImportStatusValid": "가져옴 — 약 {minutes}분 동안 유효합니다.", + "harImportStatusExpiringSoon": "가져옴 — 유효 시간이 약 {minutes}분밖에 남지 않았습니다.", + "harImportStatusExpired": "가져왔지만 이 토큰은 이미 만료되었습니다({minutes}분 전). 새 HAR를 내보내세요.", + "harImportStatusUnknownExpiry": "가져왔지만 만료 시간을 읽을 수 없습니다.", + "harImportErrorNotJson": "이 파일은 유효한 JSON이 아닙니다. 정말 .har로 내보낸 파일인가요?", + "harImportErrorNoEntries": "이 HAR에는 기록된 네트워크 항목이 없습니다.", + "harImportErrorNoChathubUrl": "이 HAR에서 Copilot 채팅 연결을 찾을 수 없습니다. 내보내기 전에 m365.cloud.microsoft에서 채팅 메시지를 하나 이상 보내세요.", + "harImportErrorUnparsableUrl": "채팅 연결을 찾았지만 URL을 읽을 수 없습니다.", + "harImportErrorMissingFields": "채팅 연결을 찾았지만 토큰이 누락되어 있습니다.", + "harImportErrorReadFailed": "해당 파일을 읽을 수 없습니다.", + "harImportErrorUnknown": "해당 HAR 파일에서 자격 증명을 추출할 수 없습니다.", "webSessionSecurityHint": "이 값을 비밀번호처럼 취급하세요. 만료되거나 취소되기 전까지 로그인된 웹 계정에 액세스할 수 있습니다.", "webNoAuthGuideTitle": "자격 증명이 필요하지 않습니다", "webNoAuthGuideBody": "{provider}에는 API 키나 쿠키가 필요하지 않습니다. 무료 웹 엔드포인트를 사용하려면 연결을 저장하세요.", @@ -6364,15 +6367,15 @@ "checkWebToken": "토큰 확인", "huggingchatLabel": "HuggingChat (무료)", "huggingchatDesc": "huggingface.co/chat 을 통한 무료 LLM 채팅", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe 웹", "poeWebDesc": "poe.com 을 통한 멀티 모델 채팅", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice 웹", "veniceWebDesc": "개인정보 보호 중심 AI 채팅", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel 웹", "v0VercelWebDesc": "v0.dev를 통한 AI 코드 생성", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi 웹", "kimiWebDesc": "www.kimi.com을 통한 Moonshot AI 소비자 채팅 (국제, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola 웹", "doubaoWebDesc": "dola.com을 통한 ByteDance AI 채팅", "overrideBaseUrlAdvanced": "고급: 기본 URL 재정의", "overrideBaseUrlHint": "고급: 이 기본 제공 공급자가 사용자 지정 엔드포인트를 가리키도록 설정합니다. 기본값을 사용하려면 비워 두세요.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "명령 코드 인증 만료됨", "commandCodeConnected": "명령 코드가 연결되었습니다.", "commandCodeConnectionAdded": "명령 코드 연결 추가됨", + "clearConnectionCooldown": "쿨다운 해제", + "clearConnectionCooldownInProgress": "해제 중…", + "clearConnectionCooldownTitle": "지금 쿨다운을 해제합니다. 업스트림에서 할당량이 이미 갱신된 경우 사용하세요.", "commandCodeLinkExpired": "명령 코드 링크가 만료되었습니다.", "commandCodeOpeningStudio": "명령 코드 스튜디오 열기…", "commandCodePopupBlocked": "팝업이 차단되었습니다. 팝업을 허용하고 Command Code Connect를 다시 시도해 주세요.", "commandCodeStartFailed": "Command Code auth를 시작하지 못했습니다.", "connectionDeleted": "연결이 삭제되었습니다", "connectionFallback": "연결", + "connectionCooldownCleared": "쿨다운이 해제되어 연결이 라우팅에 다시 참여했습니다.", "coolingConnectionsDescription": "이 연결은 마지막 요청 이후 냉각 중입니다. OmniRoute는 타이머가 끝날 때까지 건너뜁니다 — 수동으로 끌 필요 없습니다.", "coolingConnectionsTitle": "현재 냉각 중 ({count})", + "failedClearConnectionCooldown": "쿨다운을 해제하지 못했습니다.", "failedDeleteAlias": "별칭을 삭제하지 못했습니다.", "failedDeleteConnection": "연결 삭제에 실패했습니다.", "failedDistributeProxies": "프록시 배포에 실패했습니다.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "저장된 모델 엔드포인트 설정", "searchByModelAria": "모델로 검색", "selectSupportedEndpoint": "지원되는 엔드포인트를 최소한 하나 선택하세요.", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "하네스 / CLI" }, "settings": { "title": "설정", @@ -6554,22 +6557,22 @@ "systemPrompt": "시스템 프롬프트", "thinkingBudget": "사고 예산", "proxy": "프록시", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP 프록시", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "프록시 섹션", + "requestBodyLimitTitle": "요청 본문 제한", + "requestBodyLimitDescription": "요청 본문을 파싱하기 전에 허용되는 최대 API 페이로드 크기입니다. 전용 업로드 경로에는 최소한 기본 제공 한도인 100 MB가 유지됩니다.", + "requestBodyLimitInputLabel": "요청 본문 제한(MB)", + "requestBodyLimitEmptyError": "MB 단위로 제한값을 입력하세요", + "requestBodyLimitWholeNumberError": "정수를 사용하세요", + "requestBodyLimitMinimumError": "최솟값은 {min}MB입니다", + "requestBodyLimitMaximumError": "최댓값은 {max}MB입니다", + "requestBodyLimitLoadFailed": "요청 제한 설정을 불러오지 못했습니다", + "requestBodyLimitSaveSuccess": "요청 본문 제한이 저장되었습니다", + "requestBodyLimitSaveFailed": "요청 본문 제한을 저장하지 못했습니다", + "requestBodyLimitSaving": "저장 중...", + "requestBodyLimitSave": "저장", + "requestBodyLimitCurrent": "현재: {value}", "cacheConfigLoadFailed": "캐시 설정을 로드하지 못했습니다.", "cacheConfigSaveSuccess": "캐시 설정이 저장되었습니다.", "cacheConfigSaveFailed": "캐시 설정을 저장하지 못했습니다.", @@ -6593,59 +6596,59 @@ "enablePassword": "비밀번호 활성화", "darkMode": "다크 모드", "lightMode": "라이트 모드", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "메모리", + "memoryDesc": "세션 간에 유지되는 대화형 메모리", + "memoryEnabled": "메모리 활성화", + "memoryEnabledDesc": "활성화하면 OmniRoute가 관련 과거 컨텍스트를 삽입합니다.", "memoryTokenCostWarning": "주의: 메모리가 활성화되면 OmniRoute는 모든 채팅 요청에 검색된 컨텍스트를 최대 {tokens}개 토큰까지 삽입합니다 — 이로 인해 토큰 사용량과 비용이 증가합니다. 특정 요청에 대해 삽입을 건너뛰려면 \"x-omniroute-no-memory: true\" 헤더를 보내세요.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "최대 토큰 수", + "retentionDays": "보존 방식", + "recent": "최근 항목", + "recentDesc": "시간순 범위", + "semantic": "시맨틱", + "semanticDesc": "벡터 검색", + "hybrid": "하이브리드", + "hybridDesc": "최근 항목 + 시맨틱", + "skillsTitle": "스킬", + "skillsDesc": "모델용 도구", + "skillsEnabled": "스킬 활성화", + "skillsEnabledDesc": "에이전트가 함수를 실행할 수 있도록 합니다.", + "skillsComingSoon": "스킬 마켓플레이스가 곧 출시됩니다.", + "memorySkillsTitle": "메모리 및 스킬", + "memorySkillsDesc": "지속적인 컨텍스트 및 기능", + "modelsDevTitle": "모델 데이터베이스", + "modelsDevDesc": "models.dev에서 가격, 기능 및 사양 자동 동기화", + "modelsDevEnabled": "models.dev 동기화 활성화", + "modelsDevEnabledDesc": "오픈 소스 models.dev 데이터베이스에서 모델 가격, 기능 및 사양을 가져옵니다", + "modelsDevInterval": "동기화 간격", + "syncNow": "지금 동기화", + "syncing": "동기화 중...", + "lastSync": "마지막 동기화", + "never": "없음", "justNow": "지금 막", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "동기화 통계", + "modelsDevStatsDesc": "현재 models.dev 데이터 범위", "providers": "공급자", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "요금 정보가 있는 모델", + "capabilities": "기능", + "lastSyncCount": "마지막 동기화 수", + "lastSyncFull": "마지막 전체 동기화", + "modelsDevInfo": "작동 방식", + "modelsDevInfoDesc": "models.dev는 SST/OpenCode 팀이 관리하는 오픈 소스 AI 모델 사양 데이터베이스입니다. 100개 이상의 제공업체에서 제공하는 4,000개 이상의 모델에 대한 요금, 기능, 컨텍스트 제한 및 모달리티 정보를 제공합니다.", + "modelsDevInfoResolution": "요금 결정 순서(우선순위가 높은 순):", + "modelsDevInfoOrder": "사용자 재정의 → models.dev → LiteLLM → 하드코딩된 기본값", "systemTheme": "시스템 테마", - "debugToggle": "Enable Debug Mode", + "debugToggle": "디버그 모드 활성화", "logToolSourcesToggle": "도구 소스 로깅", "logToolSourcesDescription": "요청당 도구 수 및 MCP/호스팅/클라이언트 소스 분석을 요약하는 진단 로그 라인을 출력합니다.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "정보를 홈 페이지에 고정", "homePinnedSectionsDesc": "홈 페이지 상단에 고정할 섹션을 선택하세요.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "제공업체 할당량 한도", + "homeProviderQuotaLimitsDesc": "제공업체 할당량 상태 컨테이너(모두 새로고침 버튼 포함)를 홈 페이지 상단에 고정합니다.", + "homeQuickStart": "빠른 시작", + "homeQuickStartDesc": "홈 페이지에 빠른 시작 패널을 표시합니다.", + "homeProviderTopology": "제공업체 토폴로지", + "homeProviderTopologyDesc": "홈 페이지에 제공업체 토폴로지를 표시합니다.", "accountEmailVisibility": "계정 이메일 표시 여부", "accountEmailVisibilityDesc": "제공자, 콤보, 로그, 할당량 및 플레이그라운드 화면에서 전체 계정 이메일을 표시합니다. 기본적으로 마스킹하려면 이 설정을 끄세요.", "comboConfigMode": "콤보 구성 모드", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "새로고침 간격", "providerQuotaAutoRefreshIntervalDesc": "할당량 보기를 새로고침할 주기(초 단위)입니다.", "seconds": "초", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "사이드바 항목 표시", "enableCache": "캐시 활성화", "cacheTTL": "캐시 TTL", "maxCacheSize": "최대 캐시 크기", "clearCache": "캐시 지우기", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "캐시가 성공적으로 삭제되었습니다", + "clearCacheFailed": "캐시를 삭제하지 못했습니다", "cacheHits": "캐시 적중", "cacheMisses": "캐시 미스", "hitRate": "적중률", "cacheEntries": "캐시 항목", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "캐시 설정", + "semanticCache": "시맨틱 캐시", + "maxEntries": "최대 항목 수", + "ttlMinutes": "TTL(분)", "promptCache": "프롬프트 캐시", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "전략", + "preserveClientCache": "클라이언트 캐시 유지", + "enabled": "활성화됨", "loading": "Loading...", "saving": "저장 중...", - "save": "Save", + "save": "저장", "circuitBreaker": "회로 차단기", "retryPolicy": "재시도 정책", "maxRetries": "최대 재시도 횟수", @@ -6690,21 +6693,21 @@ "timeoutMs": "시간 초과(밀리초)", "enableSystemPrompt": "시스템 프롬프트 활성화", "systemPromptText": "시스템 프롬프트 텍스트", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "차단된 계정 자동 비활성화", + "autoDisableDescription": "제공업체 연결에서 특정한 최종 차단 신호(예: HTTP 403 'verify your account')가 반환되면 해당 연결을 영구적으로 비활성화된 상태로 표시합니다. 그러면 해당 연결이 조합 순환에서 제외됩니다.", + "autoDisableThreshold": "차단 임계값", + "autoDisableThresholdDesc": "영구 비활성화 전에 필요한 연속 차단 신호 수입니다.", + "autoDisableBannedScope": "자동 비활성화 적용 대상", + "autoDisableBannedScopeDesc": "OmniRoute가 차단 후에도 재시도를 계속하면 업스트림에서 로그인 시트(유료 구독 및 무료 계정)를 잠글 수 있습니다. 선불형 유료 API 키에는 이러한 위험이 없으므로 풀에 남겨 두어 우선 소진 방식에서 다음 키를 사용할 수 있게 하세요.", + "autoDisableBannedScopeAll": "모든 연결", + "autoDisableBannedScopeAllDesc": "선불형 API 키를 포함하여 영구 차단 신호를 반환하는 모든 연결을 비활성화합니다.", + "autoDisableBannedScopeSubscription": "로그인/구독 계정만", + "autoDisableBannedScopeSubscriptionDesc": "OAuth, 쿠키, 세션 및 웹 로그인 시트(유료 또는 무료)를 비활성화합니다. 선불형 API 키는 활성 상태로 유지되어 라우팅이 장애 조치될 수 있도록 합니다.", "customBannedSignals": "차단 키워드", "customBannedSignalsDesc": "영구 계정 차단 감지를 트리거하는 추가 키워드입니다. 기본 제공 키워드는 항상 적용됩니다.", "customBannedSignalsPlaceholder": "예: api key revoked", "noCustomBannedSignals": "사용자 지정 키워드가 없습니다. 기본 제공 키워드만 활성화되어 있습니다.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "복원력 구조", "resilienceStructureDesc": "이 페이지는 동작만 구성합니다. 라이브 차단기 상태는 상태 페이지에 표시됩니다. 콤보별 재시도 및 라운드 로빈 슬롯 제어는 콤보 설정에 유지됩니다.", "enableThinking": "사고 활성화", "maxThinkingTokens": "최대 사고 토큰 수", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "엔드포인트 페이지에 Tailscale Funnel 컨트롤을 표시합니다.", "showNgrokTunnel": "ngrok 터널", "showNgrokTunnelDesc": "엔드포인트 페이지에 ngrok Tunnel 컨트롤을 표시합니다.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "사이드바 항목 숨기기", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "전체", + "presetAllDesc": "모두 표시", + "presetEssentials": "필수", + "presetEssentialsDesc": "초보자 경로 - 고급 도구는 검색 가능", + "presetMinimal": "최소", + "presetMinimalDesc": "핵심 페이지만", + "presetDeveloper": "개발자", + "presetDeveloperDesc": "개발 및 프록시 도구", + "presetAdmin": "관리자", + "presetAdminDesc": "모니터링 및 감사", + "settingsSidebarTitle": "사이드바 사용자 지정", + "settingsSidebarDesc": "사이드바에 표시할 항목을 선택하세요. 필수 모드에서도 고급 도구를 검색할 수 있습니다.", "hideHealthLogs": "상태 확인 로그 숨기기", "hideHealthLogsDesc": "ON일 때, 서버 콘솔에서 [HealthCheck] 메시지를 억제합니다.", "themeAccent": "테마 색상", @@ -6780,19 +6783,19 @@ "themeOrange": "주황", "themeCyan": "시안", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "애플리케이션 이름 및 로고 사용자 지정", + "appName": "애플리케이션 이름", + "appNameDesc": "사이드바와 브라우저 탭에 표시되는 이름", + "customLogo": "사용자 지정 로고 URL", + "customLogoDesc": "사용자 지정 로고 이미지의 URL", + "uploadLogo": "로고 업로드", + "resetLogo": "기본값으로 재설정", + "logoPreview": "미리보기", + "customFavicon": "브라우저 파비콘", + "customFaviconDesc": "사용자 지정 파비콘의 URL(브라우저 탭에 표시됨)", + "uploadFavicon": "파비콘 업로드", + "resetFavicon": "파비콘 재설정", + "faviconPreview": "파비콘 미리보기", "logoFileTooLarge": "로고 파일 크기는 500KB 미만이어야 합니다", "faviconFileTooLarge": "파비콘 파일 크기는 50KB 미만이어야 합니다", "invalidLogoFileType": "잘못된 파일 형식입니다. PNG, JPG, SVG, GIF 또는 WebP 파일을 업로드해 주세요.", @@ -6896,21 +6899,21 @@ "refreshInterval": "새로 고침 간격", "ruleModeDescription": "규칙 모드 설명" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "일괄 상태 확인", + "bulkHealthcheckDesc": "구성된 모든 프록시를 대상 URL에 대해 테스트하여 작동하는 프록시를 찾습니다.", + "healthcheckTesting": "테스트 중...", + "healthcheckAll": "전체 상태 확인", + "healthcheckFailed": "상태 확인을 실행하지 못했습니다", + "healthcheckTestingAll": "모든 프록시를 병렬로 테스트하는 중...", + "healthcheckTotal": "전체", + "healthcheckWorking": "정상 작동", + "healthcheckFailedLabel": "실패", + "healthcheckStatus": "상태", + "healthcheckProxyUrl": "프록시 URL", + "healthcheckLatency": "지연 시간", "proxyDocumentationScopeTitle": "프록시 범위 확인", "proxyDocumentationScopeDescBefore": "OmniRoute는 다음 우선순위에 따라 아웃바운드 프록시를 결정합니다:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "조합 → 계정 → 제공업체 → 전역", "proxyDocumentationScopeDescAfter": ". 가장 구체적인 범위가 우선 적용됩니다.", "proxyDocumentationAddTitle": "사용자 지정 프록시 추가", "proxyDocumentationAddDescBefore": "다음으로 이동", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} 공급자가 /models에서 차단되었습니다.", "blockProviderTitle": "{provider} 차단", "unblockProviderTitle": "{provider} 차단 해제", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "CLI 핑거프린트 일치", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "CLI 핑거프린트가 활성화된 공급자 {count}개", + "enableFingerprintTitle": "{provider}의 핑거프린트 활성화", + "disableFingerprintTitle": "{provider}의 핑거프린트 비활성화", "systemTransforms": "시스템 블록 변환 파이프라인", "systemTransformsDesc": "전달 전에 요청 본문에 적용되는 공급자별 순서 지정 변환 파이프라인입니다. 모든 공급자 ID를 지원합니다.", "systemTransformsAddProvider": "제공업체 추가", @@ -7067,10 +7070,10 @@ "costOptDesc": "가장 저렴한 계정을 선호합니다", "resetAware": "재설정 인식 RR", "resetAwareDesc": "남은 할당량이 양호하고 재설정이 가까운 계정을 선호합니다.", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "할당량 가중치 적용", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "완전 무작위", + "strictRandomDesc": "셔플 덱 — 다시 섞기 전에 각 계정을 한 번씩 사용합니다", "stickyLimit": "고정 한도", "stickyLimitDesc": "글로벌 계정 폴백이 Round Robin을 사용할 때 전환 전 계정당 호출 수", "routingStrategyTitle": "라우팅 전략", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "이 제공자에 대한 글로벌 계정 전략을 재정의합니다 (9router 패리티).", "providerRoutingStrategy": "계정 전략", "providerRoutingInheritGlobal": "글로벌 기본값 상속", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "할당량 사전 확인 기준값", + "quotaPreflightSubtitle": "업스트림으로 요청을 보내기 전에 할당량이 소진된 계정을 건너뜁니다", + "quotaPreflightEnable": "할당량 사전 확인 활성화", + "quotaPreflightEnableDesc": "각 요청 전에 계정의 남은 할당량(5시간 / 주간 / 월간 기간)을 확인합니다. 기준값 이하인 계정은 업스트림 호출 없이 건너뜁니다. 공급자 할당량 페이지에서 설정한 기간별 기준값이 여기의 기본값보다 항상 우선합니다.", + "quotaPreflightCutoff": "전역 기준값(최소 잔여 %)", + "quotaPreflightCutoffDesc": "자체 기준값이 없는 모든 기간에서 계정의 남은 할당량이 이 비율 이하로 떨어지면 해당 계정 사용을 중지합니다. 공급자 할당량 페이지의 잔여 % 막대와 일치합니다.", + "quotaPreflightWindowsHint": "공급자 할당량 페이지의 기준값 모달에서 설정한 기간별 또는 공급자별 기준값이 있는 기간에는 이 기본값이 적용되지 않습니다.", + "quotaPreflightLoadFailed": "할당량 사전 확인 설정을 불러올 수 없습니다.", "modelAliases": "모델 별칭", "modelAliasesTitle": "모델 별칭", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "정확히 일치하는 이름이나 와일드카드 패턴을 사용하여 모델 이름을 다시 매핑합니다.", "addCustomAlias": "사용자 지정 별칭 추가", "deprecatedModelId": "사용 중단된 모델 ID", "newModelId": "새 모델 ID", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "콤보 전략", "priority": "우선순위", "weighted": "가중", - "contextRelay": "Context Relay", + "contextRelay": "컨텍스트 릴레이", "contextRelayDesc": "계정 로테이션이 발생할 때 자동 컨텍스트 핸드오프를 수행하는 우선순위 방식 라우팅", "maxRetriesLabel": "최대 재시도 횟수", "retryDelayLabel": "재시도 지연(ms)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "동시성/모델", "queueTimeout": "대기열 시간 초과(밀리초)", "queueDepth": "대기열 깊이", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "인계 기준값", + "contextRelayMaxMessages": "요약할 최대 메시지 수", + "contextRelaySummaryModel": "요약 모델", + "contextRelayProviderNote": "현재 컨텍스트 릴레이는 Codex 계정에 대한 인계를 생성하며, 신규 또는 구성되지 않은 조합에 이 값을 전역 기본값으로 사용합니다.", "providerProfiles": "공급자 프로필", "providerProfilesDesc": "OAuth(세션 기반) 및 API 키(종량제) 공급자에 대한 별도의 복원력 설정입니다. OAuth 공급자는 속도 제한이 낮아 더 엄격한 임계값이 적용됩니다.", "oauthProviders": "OAuth 제공자", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}일 전", "backupReasonManual": "수동", "backupReasonPreRestore": "사전 복원", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {#개 연결} other {#개 연결}}", "noChangesSinceBackup": "마지막 백업 이후 변경 사항 없음", "backupFailed": "백업 실패", "restoreFailed": "복원 실패", @@ -7308,35 +7311,35 @@ "errorDuringImport": "가져오는 중에 오류가 발생했습니다.", "modelPricing": "모델 가격", "modelPricingDesc": "모델별 비용 구성 • 모든 비용은 $/1M 토큰 단위", - "pricingCoverage": "Coverage", - "pricingAuth": "Auth", - "pricingSort": "Sort", - "pricingAll": "All", - "pricingAuthUnknown": "Unknown", - "pricingMostModels": "Most models", - "pricingHighestCoverage": "Highest coverage", - "pricingLowestCoverage": "Lowest coverage", - "pricingNameAscending": "Name (A–Z)", - "pricingCoverageGaps": "Coverage gaps", - "pricingClearFilters": "Clear filters", - "pricingShowingProviders": "Showing {visible} of {total}", - "pricingFilteredFrom": "(filtered from {count})", - "pricingShowMoreProviders": "Show {count} more ({remaining} remaining)", - "modelOverridesTitle": "Model Overrides", - "modelOverridesDesc": "Override provider/model capabilities used by routing and request shaping. Targets use the same provider/model form as combos.", - "searchModelOverrideTargets": "Search provider/model...", - "selectedModel": "Selected model", - "configured": "configured", - "none": "None", - "modelOverrideValuePlaceholder": "Numeric value", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", - "addKeyValue": "Add key value", - "noModelOverrides": "No overrides configured for this model.", - "modelOverrideLoadFailed": "Failed to load model overrides", - "modelOverrideSaved": "Model override saved", - "modelOverrideRemoved": "Model override removed", - "modelOverrideSaveFailed": "Failed to save model override", - "modelOverrideRemoveFailed": "Failed to remove model override", + "pricingCoverage": "적용 범위", + "pricingAuth": "인증", + "pricingSort": "정렬", + "pricingAll": "전체", + "pricingAuthUnknown": "알 수 없음", + "pricingMostModels": "모델 수가 가장 많음", + "pricingHighestCoverage": "적용 범위가 가장 넓음", + "pricingLowestCoverage": "적용 범위가 가장 좁음", + "pricingNameAscending": "이름(A–Z)", + "pricingCoverageGaps": "적용 범위 누락", + "pricingClearFilters": "필터 지우기", + "pricingShowingProviders": "{total}개 중 {visible}개 표시", + "pricingFilteredFrom": "({count}개에서 필터링됨)", + "pricingShowMoreProviders": "{count}개 더 표시({remaining}개 남음)", + "modelOverridesTitle": "모델 재정의", + "modelOverridesDesc": "라우팅 및 요청 구성에 사용되는 공급자/모델 기능을 재정의합니다. 대상은 조합과 동일한 공급자/모델 형식을 사용합니다.", + "searchModelOverrideTargets": "공급자/모델 검색...", + "selectedModel": "선택한 모델", + "configured": "구성됨", + "none": "없음", + "modelOverrideValuePlaceholder": "숫자 값", + "modelOverrideReasoningEffortsPlaceholder": "영문 쉼표로 구분(예: low, medium, high)", + "addKeyValue": "키-값 추가", + "noModelOverrides": "이 모델에 구성된 재정의가 없습니다.", + "modelOverrideLoadFailed": "모델 재정의를 불러오지 못했습니다", + "modelOverrideSaved": "모델 재정의가 저장되었습니다", + "modelOverrideRemoved": "모델 재정의가 제거되었습니다", + "modelOverrideSaveFailed": "모델 재정의를 저장하지 못했습니다", + "modelOverrideRemoveFailed": "모델 재정의를 제거하지 못했습니다", "registry": "레지스트리", "priced": "가격", "searchProvidersModels": "공급자 또는 모델 검색...", @@ -7378,31 +7381,31 @@ "editPricing": "가격 편집", "viewFullDetails": "전체 세부정보 보기", "themeCoral": "코랄", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", - "echoRequestedModelTitle": "Echo requested model name in responses", - "echoRequestedModelDesc": "When enabled, the response `model` field echoes the alias or combo name the client requested instead of the upstream model name. Fixes strict clients (e.g. Claude Desktop) that reject a response whose model does not match the request.", - "webSearchRouteTitle": "Web search routing", - "webSearchRouteDesc": "When a request includes a native web_search tool, route the whole request to this model instead of the default — useful for providers that don't implement Anthropic's web_search server tool. Leave blank to disable.", + "adaptiveVolumeRouting": "적응형 볼륨 라우팅", + "adaptiveVolumeRoutingDesc": "페이로드 볼륨과 처리량 부하에 따라 연결 수를 동적으로 조정합니다.", + "lkgpToggleTitle": "마지막 정상 공급자(LKGP)", + "lkgpToggleDesc": "활성화하면 라우터가 마지막으로 요청을 성공적으로 처리한 공급자를 기억하고 이후 요청에서 해당 공급자를 먼저 시도합니다.", + "echoRequestedModelTitle": "응답에 요청된 모델 이름 그대로 표시", + "echoRequestedModelDesc": "활성화하면 응답의 `model` 필드에 업스트림 모델 이름 대신 클라이언트가 요청한 별칭 또는 콤보 이름이 표시됩니다. 응답 모델이 요청과 일치하지 않을 경우 이를 거부하는 엄격한 클라이언트(예: Claude Desktop)와의 호환성 문제를 해결합니다.", + "webSearchRouteTitle": "웹 검색 라우팅", + "webSearchRouteDesc": "요청에 네이티브 web_search 도구가 포함된 경우 기본 모델 대신 이 모델로 전체 요청을 라우팅합니다. Anthropic의 web_search 서버 도구를 구현하지 않은 공급자에 유용합니다. 비활성화하려면 비워 두세요.", "webSearchRoutePlaceholder": "모델 검색 또는 선택…", - "paidModelPatternWarning": "This pattern only matches paid models — enable paid models or adjust the pattern.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "paidModelPatternWarning": "이 패턴은 유료 모델에만 일치합니다. 유료 모델을 활성화하거나 패턴을 조정하세요.", + "clearLkgpCache": "LKGP 캐시 지우기", + "lkgpCacheCleared": "LKGP 캐시가 성공적으로 지워졌습니다", + "lkgpCacheClearFailed": "LKGP 캐시를 지우지 못했습니다", + "days": "일", + "lkgp": "LKGP 모드", + "lkgpDesc": "마지막 정상 공급자(예측 가능한 복원력)", + "maintenance": "유지 관리", + "purgeExpiredLogs": "만료된 로그 삭제", + "purgeLogsFailed": "로그를 삭제하지 못했습니다", "logsDeleted": "{count, plural, =0 {만료된 로그가 삭제되지 않았습니다} one {만료된 로그 #개를 삭제했습니다} other {만료된 로그 #개를 삭제했습니다}}", - "resetUsageData": "Reset Usage Data", - "resetUsageDataDesc": "Select how far back you want to delete usage, request logs, and analytics data. Provider configuration, connections, API keys, combos, and settings are preserved. This action cannot be undone.", - "resetUsagePeriod_5m": "5 minutes", - "resetUsagePeriod_1h": "1 hour", - "resetUsagePeriod_3h": "3 hours", + "resetUsageData": "사용량 데이터 초기화", + "resetUsageDataDesc": "사용량, 요청 로그 및 분석 데이터를 얼마나 이전 시점까지 삭제할지 선택하세요. 공급자 구성, 연결, API 키, 콤보 및 설정은 유지됩니다. 이 작업은 실행 취소할 수 없습니다.", + "resetUsagePeriod_5m": "5분", + "resetUsagePeriod_1h": "1시간", + "resetUsagePeriod_3h": "3시간", "resetUsagePeriod_6h": "6시간", "resetUsagePeriod_12h": "12시간", "resetUsagePeriod_1d": "1일", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "사용량 데이터를 초기화하지 못했습니다", "reset": "초기화", "resetting": "초기화 중...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "컨텍스트 최적화", + "contextOptDesc": "컨텍스트 창 요구 사항과 대화 길이에 따라 라우팅합니다", + "cacheOpt": "캐시 최적화", + "cacheOptDesc": "동일한 재사용 가능 프롬프트 접두사를 동일한 공급자 계정에서 유지합니다", + "priorityDesc": "순차적 대체 - 공급자 1을 먼저 시도한 다음 공급자 2를 시도하는 식으로 진행합니다", + "weightedDesc": "공급자별 백분율 가중치에 따라 트래픽을 분산합니다", + "modelRoutingTitle": "모델 라우팅 규칙", + "modelRoutingDesc": "Glob 패턴을 사용하여 모델을 특정 콤보로 자동 라우팅합니다", + "addRule": "규칙 추가", + "routeToCombo": "콤보로 라우팅", + "selectCombo": "콤보 선택...", + "priorityHint": "값이 높을수록 먼저 확인됩니다. 구체적인 패턴에는 10 이상을 사용하세요.", + "patternHint": "임의의 문자열에는 *, 단일 문자에는 ?를 사용하세요. 대소문자를 구분하지 않습니다.", + "noRoutingRules": "구성된 라우팅 규칙이 없습니다. 요청은 기본적으로 전역 콤보를 사용합니다.", + "routingRuleHint": "요청을 자동으로 라우팅하려면 claude-opus* -> frontier-combo와 같은 규칙을 추가하세요.", + "deleteRoutingRule": "이 모델 라우팅 규칙을 삭제하시겠습니까?", + "exactMatchMode": "정확히 일치", + "wildcardPatternMode": "와일드카드 패턴", + "exactMatchModeDesc": "지원 중단되었거나 이름이 변경된 모델 ID에는 정확한 별칭을 사용하세요.", + "wildcardPatternModeDesc": "모델 제품군을 하나의 대상으로 매핑해야 하는 경우 * 및 ?가 포함된 와일드카드 별칭을 사용하세요.", + "noExactAliasesConfigured": "구성된 정확히 일치하는 별칭이 없습니다.", + "wildcardRulesTitle": "와일드카드 규칙", + "noWildcardAliasesConfigured": "구성된 와일드카드 별칭이 없습니다.", + "overview": "개요", + "unknownError": "알 수 없는 오류", "pricingSourceLiteLLM": "LiteLLM (커뮤니티)", "clearSyncedPricingConfirm": "동기화된 가격 데이터를 모두 삭제하시겠습니까? 대신 공급자 기본값이 사용됩니다.", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "사용자 재정의", "pageDescription": "애플리케이션 설정, 모델 별칭, 가격 및 라우팅 규칙을 관리합니다", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "허용 목록", + "syncDisabled": "동기화 비활성화됨", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "정확한 비용 계산을 위해 외부 소스에서 모델 가격을 자동으로 동기화합니다", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "기본 제공 기본값", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "가격 동기화를 전환하지 못했습니다", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "동기화 활성화됨", + "blacklist": "차단 목록", "pricingSourceModelsDev": "Models.dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "동기화된 모델", + "budget": "예산", "pricingSyncTitle": "가격 동기화", "pricingResetFailedWithReason": "가격 재설정 실패: {reason}", - "tab": "Tab", + "tab": "탭", "pricingSavedProvider": "{provider}의 가격이 저장되었습니다.", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "가격 저장 실패: {reason}", "pricingResetProvider": "{provider}의 가격 재설정", - "nextSync": "Next Sync", + "nextSync": "다음 동기화", "pricingSyncFailedWithReason": "가격 동기화 실패: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "동기화된 요금 정보 지우기", + "compressionTitle": "프롬프트 압축", + "compressionDesc": "제공업체에 보내기 전에 프롬프트를 압축하여 토큰 사용량을 줄입니다", "compressionGuidanceFullGuideLink": "전체 압축 가이드", "compressionGuidanceShow": "상세 정보", "compressionGuidanceHide": "상세 정보 숨기기", @@ -7485,16 +7488,16 @@ "tokenSaverInputCompressionDesc": "코드, URL 및 의도를 보존하면서 대상 대화 기록을 재작성합니다.", "tokenSaverFineTunePrefix": "각 엔진 미세 조정:", "tokenSaverFineTuneSuffix": "또는 요청당 엔진 조합:", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", - "compressionModeUltra": "Ultra", + "compressionMode": "압축 모드", + "compressionModeOff": "끄기", + "compressionModeOffDesc": "압축이 적용되지 않음", + "compressionModeLite": "라이트", + "compressionModeLiteDesc": "공백 및 빈 줄 축소", + "compressionModeStandard": "표준(Caveman)", + "compressionModeStandardDesc": "30개 이상의 패턴을 사용한 규칙 기반 압축으로, 코드 블록과 URL은 유지됩니다", + "compressionModeAggressive": "공격적", + "compressionModeAggressiveDesc": "요약 + 도구 결과 압축 + 점진적 에이징으로 비용을 최대한 절감", + "compressionModeUltra": "울트라", "compressionModeUltraDesc": "선택적 로컬 SLM 폴백이 포함된 휴리스틱 토큰 정리", "compressionAggressiveConfig": "공격적인 엔진 구성", "compressionAggressiveConfigDesc": "요약, 도구 압축 및 에이징 임계값을 미세 조정합니다.", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "각 에이징 계층에 보관된 최근 메시지 수(높을수록 더 많이 보존됨)", "compressionToolStrategies": "도구 결과 전략", "compressionToolStrategiesDesc": "다양한 도구 결과 유형에 대한 압축 전략 전환", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "일반 설정", + "compressionAutoTrigger": "자동 트리거 임계값", + "compressionCacheTTL": "캐시 TTL", + "compressionPreserveSystem": "시스템 프롬프트 유지", "compressionPreserveSystemAlways": "항상", "compressionPreserveSystemWhenNoCache": "캐시가 없을 때", "compressionPreserveSystemNever": "안 함", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "저장됨", "compressionExclusionsCount": "구성된 {count, plural, one {# 제외} other {# 제외}}", "compressionExclusionsEmpty": "구성이 된 제외 항목이 없습니다 — 모든 모델/엔드포인트가 압축 대상입니다(기본 동작).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman 엔진 구성", + "compressionCavemanConfigDesc": "규칙 기반 압축 엔진 세부 조정", "compressionCavemanPanelHint": "켜기/끄기 및 레벨은 패널에서 설정됩니다:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "메시지 역할 압축", + "compressionRoleUser": "사용자", + "compressionRoleAssistant": "어시스턴트", + "compressionRoleSystem": "시스템", + "compressionMinLength": "최소 메시지 길이", + "compressionSkipRules": "압축 제외 규칙", + "compressionSkipRulesDesc": "압축 중 제외할 규칙을 클릭하세요", + "compressionPreservePatterns": "패턴 유지", + "compressionPreservePatternsDesc": "압축하지 않을 정규식 패턴(한 줄에 하나씩)", + "compressionLogTitle": "압축 로그", + "compressionLogEmpty": "아직 압축된 요청이 없습니다. 압축을 활성화한 상태에서 요청이 처리되면 여기에 압축 통계가 표시됩니다.", "minutes": "분", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "명령어 인식 도구 출력 필터링", + "compressionModeCodexResponses": "Responses 도구 출력", + "compressionModeCodexResponsesDesc": "대상 셸, 패치, 검색, 빌드 및 JSON 출력에 대한 보수적 압축", + "compressionModeStacked": "스택형", + "compressionModeStackedDesc": "RTK 도구 출력 필터링 후 Caveman 메시지 압축", + "qdrantTitle": "Qdrant(벡터 메모리)", + "qdrantDesc": "선택 사항입니다. 더 빠른 검색을 위해 외부 벡터 데이터베이스에서 시맨틱 메모리를 인덱싱합니다.", + "qdrantStatusActive": "활성", + "qdrantStatusError": "오류", + "qdrantStatusDisabled": "비활성화됨", + "qdrantEnable": "Qdrant 활성화", + "qdrantEnableDesc": "활성화하면 시맨틱/하이브리드 전략에서 Qdrant를 사용해 메모리를 검색할 수 있습니다.", + "qdrantTesting": "테스트 중...", + "qdrantTestConnection": "연결 테스트", + "qdrantSaved": "구성이 저장되었습니다", + "qdrantSaveError": "구성을 저장하지 못했습니다", + "qdrantHostHint": "포트 제외. 예: 127.0.0.1 또는 http://qdrant", + "qdrantPort": "포트", + "qdrantPortHint": "Qdrant 기본값: 6333", + "qdrantCollectionHint": "메모리 포인트가 저장될 위치입니다.", + "qdrantEmbeddingModel": "임베딩 모델", + "qdrantHelpTitle": "빠른 설정 도움말", + "qdrantHelpQuickTitle": "빠른 설정(Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. 호스트: Qdrant IP/URL, 포트: 6333, 컬렉션: omniroute_memory.", + "qdrantHelpStep2": "2. nvidia/llama-nemotron-embed-vl-1b-v2:free를 사용하는 경우 컬렉션 차원을 2048로 설정하세요.", + "qdrantHelpStep3": "3. 모델 필드: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. 저장한 후 연결을 테스트하고 검색을 테스트하세요.", + "qdrantEmbeddingQuickSelect": "검색된 모델에서 빠르게 선택...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "형식: provider/model. 제공업체 자격 증명을 구성해야 합니다.", + "qdrantApiKeyPlaceholderKeep": "(현재 키를 유지하려면 비워 두세요)", + "qdrantApiKeyPlaceholderOptional": "(사용하지 않는 경우 비워 두세요)", + "qdrantSaveHint": "팁: 호스트/포트/컬렉션/모델을 편집하고 저장을 클릭하세요. API 키는 선택 사항입니다.", + "qdrantSearchTestTitle": "검색 테스트", + "qdrantSearchTestDesc": "임베딩을 생성하고 Qdrant에서 검색합니다.", + "qdrantSearchPlaceholder": "예: 사용자 환경설정, 기록 등", + "qdrantNoResults": "결과가 없습니다(또는 Qdrant가 구성되지 않았습니다).", + "qdrantCleanupTitle": "보존 및 정리", + "qdrantCleanupDesc": "다음을 기준으로 만료되거나 오래된 포인트를 제거합니다", + "searching": "검색 중...", + "cleaning": "정리 중...", + "cleanNow": "지금 정리", "optional": "선택사항", "current": "현재", "remove": "제거", @@ -7600,19 +7603,19 @@ "resilienceScope": "범위:", "resilienceTrigger": "트리거:", "resilienceEffect": "효과:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "요청 대기열 및 속도", + "resilienceAutoEnableApiKeyProviders": "API 키 제공업체에 대해 자동 활성화", + "resilienceRequestsPerMinute": "분당 요청 수", + "resilienceMinTimeBetweenRequests": "요청 간 최소 시간", + "resilienceConcurrentRequests": "동시 요청 수", + "resilienceConnectionScopeConcurrentRequests": "연결/할당량 범위당 동시 요청 수", + "resilienceGlobalConcurrentRequests": "전역 동시 업스트림 요청 수(0 = 비활성화)", "resilienceMaxQueueWaitTime": "최대 대기열 대기 시간", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "기본 쿨다운", + "resilienceUseUpstreamRetryHints": "업스트림 재시도 힌트 사용", + "resilienceDefaultPerProvider": "기본값(제공업체별)", + "resilienceAlwaysOn": "항상 켜기", + "resilienceAlwaysOff": "항상 끄기", "routingRemoveEntry": "항목 삭제", "routingNeedlesSubstrings": "바늘(일치할 하위 문자열)", "routingCaseSensitive": "대소문자 구분", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "추출된 설명이 원래 요청에 다시 주입되기 전에 비전 모델로 전송됩니다.", "visionBridgeTimeoutMs": "시간 초과(밀리초)", "visionBridgeMaxImagesPerRequest": "요청당 최대 이미지", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "최대 백오프 단계", + "resilienceProviderBreakerTitle": "제공업체별 회로 차단기", + "resilienceFailureThreshold": "실패 임계값", + "resilienceDegradationThreshold": "성능 저하 임계값", "resilienceResetTimeout": "재설정 시간 제한", "resilienceFailureThresholdLabel": "실패 임계값", "resilienceResetTimeoutLabel": "재설정 시간 제한", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "연결 쿨다운", "resilienceUseUpstreamRetryHintsLabel": "업스트림 재시도 힌트 사용", "resilienceUseUpstream429BreakerLabel": "업스트림 429 힌트 사용(차단기)", "resilienceMaxBackoffStepsLabel": "최대 백오프 단계", "resilienceYes": "예", "resilienceNo": "아니요", - "resilienceDefault": "Default", + "resilienceDefault": "기본값", "storageDatabaseBackupRetention": "데이터베이스 백업 보존", "storageDatabaseBackups": "데이터베이스 백업", "storageBackupRetentionDescription": "자동 SQLite 백업 저장 위치:", @@ -7740,56 +7743,60 @@ "purgeDetailedLogsFailed": "상세 로그를 영구 삭제하지 못했습니다.", "vacuumCompleted": "VACUUM 완료", "vacuumFailed": "VACUUM 실패", - "jsonExportFailed": "JSON export failed", - "invalidJsonFileType": "Invalid file type. Only .json files are allowed.", - "legacyJsonImportSuccess": "Legacy JSON imported successfully!", - "jsonImportFailed": "Failed to import JSON", - "jsonImportError": "Error during JSON import", + "jsonExportFailed": "JSON 내보내기 실패", + "invalidJsonFileType": "잘못된 파일 형식입니다. .json 파일만 허용됩니다.", + "legacyJsonImportSuccess": "레거시 JSON을 성공적으로 가져왔습니다!", + "jsonImportFailed": "JSON 가져오기 실패", + "jsonImportError": "JSON 가져오기 중 오류 발생", + "jsonImportAuthRequired": "레거시 JSON 구성을 가져오려면 인증이 필요합니다. 먼저 로그인하거나 설정을 완료하세요.", + "databaseSettingsAuthRequiredTitle": "인증 필요", + "databaseSettingsAuthRequiredBody": "데이터베이스 설정 및 JSON 가져오기는 인증된 관리자만 사용할 수 있습니다. 이를 확인하고 편집하려면 로그인하거나 설정을 완료하세요.", + "databaseSettingsAuthRequiredCta": "로그인", "storagePurgeData": "데이터 삭제", - "storagePurgeDataDesc": "Immediately delete all records without applying retention checks. Use with caution.", - "storageRetentionCleanup": "Retention Settings", - "storageRetentionCleanupDesc": "Configure operational record retention and database backup cleanup.", + "storagePurgeDataDesc": "보존 기간 검사를 적용하지 않고 모든 레코드를 즉시 삭제합니다. 주의해서 사용하세요.", + "storageRetentionCleanup": "보존 설정", + "storageRetentionCleanupDesc": "운영 레코드 보존 및 데이터베이스 백업 정리를 구성합니다.", "retentionCallDays": "Call {count}일", "retentionAppDays": "App {count}일", "retentionRows": "{count}개 행", "retentionQuotaSnapshots": "할당량 스냅샷(일)", - "retentionCompressionAnalytics": "Compression Analytics (days)", + "retentionCompressionAnalytics": "압축 분석 데이터 보존 기간(일)", "retentionMcpAudit": "MCP 감사(일)", "retentionA2aEvents": "A2A 이벤트(일)", "retentionCallLogs": "호출 로그(일)", "retentionUsageHistory": "이용내역(일)", "retentionMemoryEntries": "메모리 항목(일)", - "retentionXpAuditLog": "XP Audit Log (days)", - "saveRetentionSettings": "Save retention settings", + "retentionXpAuditLog": "XP 감사 로그 보존 기간(일)", + "saveRetentionSettings": "보존 설정 저장", "storageAutoVacuumMode": "자동 VACUUM 모드", "storageScheduledVacuum": "예약된 VACUUM", "storageVacuumHour": "VACUUM 시간(0-23)", "storagePageSize": "페이지 크기(바이트)", - "storageOptimizationSettings": "Optimization Settings", - "storageJournalModeNone": "None", - "storageJournalModeFull": "Full", - "storageJournalModeIncremental": "Incremental", - "storageVacuumNever": "Never", - "storageVacuumDaily": "Daily", - "storageVacuumWeekly": "Weekly", - "storageVacuumMonthly": "Monthly", - "storageCacheSizeKb": "Cache Size (KB)", - "storageOptimizeOnStartup": "Optimize on Startup", - "storageSaveOptimization": "Save Optimization Settings", - "storageCompressionAggregation": "Compression & Aggregation Settings", - "storageEnableAggregation": "Enable Data Aggregation", - "storageRawDataRetention": "Raw Data Retention (days)", - "storageGranularity": "Granularity", - "storageHourly": "Hourly", - "storageDaily": "Daily", - "storageWeekly": "Weekly", - "storageSaveAggregation": "Save Aggregation Settings", - "exportJson": "Export JSON", - "importJson": "Import JSON", - "manualVacuum": "Manual VACUUM", - "purgeQuotaSnapshots": "Purge Quota Snapshots", - "purgeCallLogs": "Purge Call Logs", - "purgeDetailedLogs": "Purge Detailed Logs", + "storageOptimizationSettings": "최적화 설정", + "storageJournalModeNone": "없음", + "storageJournalModeFull": "전체", + "storageJournalModeIncremental": "증분", + "storageVacuumNever": "안 함", + "storageVacuumDaily": "매일", + "storageVacuumWeekly": "매주", + "storageVacuumMonthly": "매월", + "storageCacheSizeKb": "캐시 크기(KB)", + "storageOptimizeOnStartup": "시작 시 최적화", + "storageSaveOptimization": "최적화 설정 저장", + "storageCompressionAggregation": "압축 및 집계 설정", + "storageEnableAggregation": "데이터 집계 활성화", + "storageRawDataRetention": "원시 데이터 보존 기간(일)", + "storageGranularity": "세분성", + "storageHourly": "시간별", + "storageDaily": "일별", + "storageWeekly": "주별", + "storageSaveAggregation": "집계 설정 저장", + "exportJson": "JSON 내보내기", + "importJson": "JSON 가져오기", + "manualVacuum": "수동 VACUUM", + "purgeQuotaSnapshots": "할당량 스냅샷 삭제", + "purgeCallLogs": "호출 로그 삭제", + "purgeDetailedLogs": "상세 로그 삭제", "storageDatabaseSize": "데이터베이스 크기", "storagePageCount": "페이지 수", "storageFreelistCount": "프리리스트 수", @@ -7799,7 +7806,7 @@ "storageIntegrityOk": "✓ 정상", "storageIntegrityError": "✗ 오류", "storageUsageTokenBuffer": "사용 토큰 버퍼", - "storageUsageTokenBufferDesc": "Extra tokens added to reported usage to account for system prompt overhead.", + "storageUsageTokenBufferDesc": "시스템 프롬프트 오버헤드를 반영하기 위해 보고된 사용량에 추가된 토큰입니다.", "storageUsageTokenBufferHint": "원시 제공자 토큰 수를 보고하려면 0으로 설정하십시오. 기본값: 2000.", "storageUsageTokenBufferCurrent": "현재: {value}", "redisLauncherTitle": "로컬 Redis", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "모드: {mode}", "compressionAdaptiveOff": "적응형 컨텍스트 예산: 꺼짐 (기존 자동 트리거)", "compressionAdaptiveTarget": "적응형 ({mode}, 정책: {policy}) — 대상 ≈ {target, number} 토큰 ({contextLimit, number} 토큰 창 기준)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "적응형 컨텍스트 예산", + "compressionAdaptiveModeOff": "끄기(레거시 자동 트리거)", + "compressionAdaptiveModeFloor": "최솟값(항상 수용 보장)", + "compressionAdaptiveModeReplace": "자동 트리거 대체", + "compressionAdaptivePolicy": "예산 정책", + "compressionAdaptivePolicyReserve": "출력용 예약", + "compressionAdaptivePolicyPercentage": "창의 백분율", + "compressionAdaptivePolicyAbsolute": "절대 토큰 예산", "compressionOutputStylesDescription": "제공자 출력을 다시 작성하지 않고 응답 형성 지침을 주입합니다. 자유롭게 조합하세요.", "mcpAccessibilityDescription": "MCP 도구 출력의 범위를 제한합니다(별도 저장소).", "compressionStylesTileSummary": "{tokens, number} 토큰 절약됨 · {runs, plural, one {#개 실행 스타일 지정됨} other {#개 실행 스타일 지정됨}}", @@ -7866,8 +7873,8 @@ "description": "명령어 출력 필터링." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses 도구 출력", + "description": "지원되는 Responses 도구 출력에 대한 보수적 압축입니다." }, "headroom": { "label": "헤드룸", @@ -7908,12 +7915,12 @@ "description": "YAGNI 사다리: 작동하는 최소한의 변경, 요청되지 않은 추상화 배제." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail(게으른 시니어 개발자)", + "description": "게으른 시니어 개발자의 원칙: YAGNI 사다리를 단계적으로 따르고, 근본 원인을 해결하며, 작동하는 최소한의 변경 사항만 적용합니다." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "저는 ADHD가 있습니다(행동 우선)", + "description": "행동 우선 출력: 다음 행동을 먼저 제시하고, 단계에 번호를 매기며, 구체적인 다음 단계 하나만 제공하고, 서문은 생략합니다." }, "terse-cjk": { "label": "간결한 CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI 대체", "cliproxyapiEnableFallback": "CLIProxyAPI 대체 활성화", "cliproxyapiUrl": "CLIProxyAPI URL", + "headroomProxyTitle": "Headroom 프록시", + "headroomProxyDesc": "선택 사항인 Headroom 토큰 절약 프록시의 URL입니다. 비워 두면 HEADROOM_URL 또는 http://localhost:8787을 사용합니다.", + "headroomProxyUrl": "Headroom URL", + "headroomProxyUrlHint": "루프백 URL은 이 페이지에서 시작할 수 있습니다. 외부 URL은 연결 가능 여부만 확인합니다.", + "headroomProxySave": "저장", + "headroomProxyStart": "시작", + "headroomProxyStop": "중지", + "headroomProxyExternalHint": "이 URL은 루프백이 아니므로 OmniRoute가 로컬 CLI를 실행하지 않습니다.", "cliproxyapiStatus": "CLIProxyAPI 상태", "cliproxyapiNotDetected": "감지되지 않음", "cliproxyapiImportAuthTitle": "CLIProxyAPI에서 계정 가져오기", @@ -7938,13 +7953,13 @@ "cliproxyapiImportAuthButton": "계정 가져오기", "payloadRulesTitle": "페이로드 규칙", "payloadRulesDesc": "모델 및 프로토콜별로 요청 페이로드 변형을 구성합니다. 변경 사항은 설정에 저장되며 저장 즉시 런타임에 핫 리로드됩니다.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "기본값", "payloadRuleDefaultDesc": "대상 경로가 발신 페이로드에 없는 경우에만 매개변수를 적용합니다.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "재정의", "payloadRuleOverrideDesc": "해당 경로에 이미 존재하는 모든 값을 대체하여 페이로드에 값을 강제로 적용합니다.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "필터", "payloadRuleFilterDesc": "업스트림 요청을 보내기 전에 페이로드에서 차단된 매개변수를 제거합니다.", - "payloadRuleDefaultRawTitle": "defaultRaw", + "payloadRuleDefaultRawTitle": "기본 원시값", "payloadRuleDefaultRawDesc": "default와 유사하지만, 가능한 경우 문자열 값을 먼저 JSON으로 파싱합니다. 저장 시 레거시 입력 별칭인 default-raw도 허용됩니다.", "payloadEditorTitle": "에디터", "payloadEditorDesc": "런타임 스키마 형태를 사용하세요: default, override, filter, defaultRaw. API는 레거시 입력 키인 default-raw도 허용합니다.", @@ -7980,20 +7995,20 @@ "responsesStateTitle": "응답 상태", "responsesStateDesc": "OmniRoute가 previous_response_id를 전달하는 방식을 제어합니다.", "responsesStateModeLabel": "previous_response_id 처리", - "responsesStateModeAuto": "Auto", - "responsesStateModeStrip": "Strip", - "responsesStateModePreserve": "Preserve", + "responsesStateModeAuto": "자동", + "responsesStateModeStrip": "제거", + "responsesStateModePreserve": "보존", "responsesStateHint": "연결에서 OpenAI Responses 스토리지를 명시적으로 활성화하지 않는 한 Auto는 previous_response_id를 제거합니다. VS Code Custom Endpoint와 같은 상태 비저장 클라이언트에는 Strip이 가장 안전하며, 이 경우 컨텍스트는 전체 기록을 전송하는 클라이언트에 의존합니다.", "responsesStateSaveError": "응답 상태 설정을 업데이트하지 못했습니다.", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Codex 고속 티어", "codexFastTierDesc": "OpenAI Codex 요청에 대해 service_tier=priority를 전역적으로 삽입합니다.", "codexFastTierHint": "활성화되면 OmniRoute는 아직 계층을 지정하지 않은 연결에 대한 아웃바운드 Codex 요청에 service_tier=priority를 추가합니다. 우선 순위 계층에는 OpenAI Enterprise API 키 또는 ChatGPT 인증 Codex 경로가 필요합니다. 다른 키 유형은 OpenAI로부터 계층 관련 오류를 수신합니다. Codex 공급자 페이지의 연결별 설정이 우선적으로 적용됩니다.", "codexFastTierSaveError": "Codex Fast Tier 설정을 업데이트하지 못했습니다.", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex 할당량 자동 핑", + "codexAutoPingDesc": "연결별 선택 기능: Codex 세션 창이 재설정된 직후 작은 요청을 보내 필요할 때 콜드 상태가 되지 않도록 합니다.", + "codexAutoPingWarning": "핑할 때마다 실제 Codex 할당량을 소량 사용합니다. 기본적으로 꺼져 있으므로 적극적으로 사용하는 연결에만 활성화하세요.", + "codexAutoPingSaveError": "Codex 자동 핑 설정을 업데이트하지 못했습니다.", + "codexAutoPingToggleAria": "{connection}의 Codex 할당량 자동 핑 전환", "codexFastTierTierLabel": "서비스 티어", "codexFastTierTierPriority": "우선순위", "codexFastTierTierFlex": "Flex", @@ -8001,7 +8016,7 @@ "codexFastTierModelsLabel": "Fast 티어 모델", "codexFastTierModelsHint": "Fast Tier가 활성화된 경우 선택된 모델만 service_tier를 받습니다.", "codexFastTierModelCheckbox": "{model}에 Fast Tier 활성화", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Claude 고속 모드", "claudeFastModeDesc": "선택한 Claude 요청에 Anthropic Fast Mode(speed:\"fast\")를 적용합니다.", "claudeFastModeHint": "Anthropic은 SDK 스타일 클라이언트에 대한 Fast Mode를 공식적으로 지원하지 않습니다. 활성화되면 OmniRoute는 X-CPA-Force-Fast-Mode 헤더를 전달하여 쌍을 이루는 CLIProxyAPI 빌드가 진입점 스푸핑을 선택할 수 있도록 합니다. 나열된 Opus 모델만 Anthropic의 클라이언트 측 확인에 의해 통제됩니다. 구독 등급, Max 요금제, Fast Mode 크레딧 잔고는 여전히 서버 측에서 시행되며, 토글이 켜져 있어도 Anthropic이 out_of_credits를 반환할 수 있습니다.", "claudeFastModeModelsLabel": "모델에 적용됨({count})", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "전역 검사 간격", "resilienceCredentialHealthEveryMinutes": "{minutes}분마다", "resilienceCredentialHealthHint": "0은 백그라운드 스윕을 끕니다(최대 1440분 = 24시간). 자체 상태 검사 값이 있는 연결은 이 전역 기본값을 무시합니다. 연결을 0으로 두면 전역 스윕이 켜져 있어도 제외됩니다.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "{provider}에 대해 항상 활성화됨 — OAuth 계정 보안에 필수이며 끌 수 없습니다.", + "forcedFingerprintBadge": "필수", "sessionAffinityTitle": "세션 어피니티", "sessionAffinityDesc": "모든 제공자에 대해 지정된 초 동안 하나의 대화를 동일한 계정으로 유지합니다. 0으로 설정하면 비활성화됩니다.", "sessionAffinityTtl": "어피니티 TTL(초)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "쿨다운 증가가 멈추기 전까지의 최대 백오프 단계 수입니다. 대부분의 구성에서는 최대 쿨다운 상한에 먼저 도달하므로, 이는 최대 쿨다운이 상향 조정될 때를 위한 안전 상한선 역할을 합니다.", "disableSessionStickiness": "세션 고정 비활성화", "disableSessionStickinessDesc": "라운드 로빈 및 랜덤 콤보는 첫 번째 메시지 해시를 통해 전체 대화를 하나의 연결에 고정하는 대신 요청마다 다른 연결로 순환합니다. 멀티턴 대화에서 프롬프트 캐시 히트를 유지하려면 꺼두세요. 콤보별 재정의가 우선 적용됩니다.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "프롬프트 캐시 지역성 라우팅", + "promptCacheAffinityDesc": "상태 및 할당량 장애 조치를 유지하면서 일치하는 프롬프트 캐시 키에는 동일한 제공업체 계정을 우선 사용합니다.", + "reasoningTokenBuffer": "추론 토큰 버퍼", + "reasoningTokenBufferDesc": "전체 버퍼가 알려진 출력 한도 내에 들어가는 경우에만 콤보 라우팅이 알려진 추론 모델의 max_tokens 여유분을 추가하도록 허용합니다.", + "zeroLatencyOptimizations": "제로 레이턴시 최적화", + "zeroLatencyOptimizationsDesc": "헤징, 예측 기반 TTFT 건너뛰기 및 선제적 폴백 압축을 사용합니다. 이러한 지연 시간 기능이 대상 간 경합을 일으키거나 폴백 요청을 압축하지 않도록 하려면 끄십시오.", "credentialRedaction": "자격 증명 마스킹", "credentialRedactionDesc": "공급자에게 전송되는 컨텍스트 및 응답에서 API 키, 토큰, 비밀 정보를 마스킹합니다.", "enableCredentialRedaction": "자격 증명 마스킹 활성화", "enableCredentialRedactionDesc": "메시지, 도구 호출 및 응답에서 API 키, 토큰, 개인 키, JWT를 제거합니다.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "자동 동기화 비활성화됨", + "pricingAutoSyncEnabled": "자동 동기화 활성화됨", "modalityBridgeIntro": "멀티모달 콘텐츠가 텍스트 전용 모델에 도달하기 전에 텍스트로 변환합니다. 비전, 오디오 및 비디오 브리지를 사용하고 구성할 수 있습니다.", "modalityBridgeVisionTab": "비전", "modalityBridgeAudioTab": "오디오", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "건강", "cliproxyapiPort": "포트", "qdrantHost": "호스트", - "qdrantCollection": "컬렉션", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "컬렉션" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "RTK 엔진", + "description": "도구 출력, 터미널 로그 및 빌드 결과를 위한 명령어 인식 압축입니다.", + "enabled": "활성화됨", + "intensity": "강도", + "intensityMinimal": "최소", + "intensityStandard": "표준", + "intensityAggressive": "적극적", + "toolResults": "도구 결과", + "assistantMessages": "어시스턴트 메시지", + "codeBlocks": "코드 블록", "filterCatalog": "필터 카탈로그", "filterCatalogDesc": "카테고리별로 사용 가능한 출력 필터", "guidedConfig": "구성", "guidedConfigDesc": "RTK가 터미널 출력을 필터링하는 방법을 조정하세요.", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "최대 줄 수", + "maxChars": "최대 문자 수", "deduplicateThreshold": "중복 제거 임계값", "customFilters": "맞춤 필터", "detectedType": "감지된 유형", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "실패", "rawOutputAlways": "항상", "rawOutputMaxBytes": "원시 출력 최대 바이트", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "필터 테스트", + "pasteOutput": "필터링을 테스트할 도구 출력을 붙여넣으세요...", "presetHigh": "공격적", "presetLow": "라이트", "presetMaxChars": "최대 출력 문자", "presetMaxLines": "최대 출력 라인", "presetMedium": "표준", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "실행", + "result": "결과", + "previewEmpty": "샘플을 실행하여 RTK 출력을 미리 봅니다.", + "detected": "감지됨", "masterSwitchOffAlert": "Token Saver 마스터 스위치가 OFF 상태입니다 — 압축 설정에서 켤 때까지 이 설정은 요청에 영향을 주지 않습니다.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "필터링된 토큰", + "filtersActive": "활성 필터", + "requests": "요청", + "avgSavings": "평균 절감률", "simpleMode": "단순", "advancedMode": "고급", "searchFilters": "검색 필터...", @@ -8481,7 +8488,7 @@ "savings": "절감량", "original": "원본", "compressed": "압축됨", - "diff": "Diff", + "diff": "차이", "last7Days": "지난 7일", "noDataYet": "아직 데이터가 없습니다", "runs": "실행 횟수", @@ -8602,8 +8609,8 @@ }, "intensity": { "lite": "Lite", - "full": "Full", - "ultra": "Ultra" + "full": "전체", + "ultra": "울트라" } }, "modeOptions": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "압축 조합", + "description": "다양한 라우팅 시나리오에서 엔진을 조합하는 방식을 정의합니다.", + "createCombo": "압축 조합 만들기", + "editCombo": "편집", + "deleteCombo": "삭제", + "deleteConfirm": "이 압축 조합을 삭제하시겠습니까?", + "pipeline": "파이프라인", + "addStep": "단계 추가", + "removeStep": "제거", + "name": "이름", + "descriptionField": "설명", + "languagePacks": "언어 팩", + "outputMode": "출력 모드", + "assignToRouting": "라우팅 조합에 할당", + "noAssignments": "사용 가능한 라우팅 조합 없음", + "default": "기본값", + "setAsDefault": "기본값으로 설정", + "save": "저장", + "cancel": "취소", + "enabled": "활성화됨", "loading": "로딩 중…", "hubTitle": "압축 허브", "hubDescription": "전역으로 실행할 압축 프로필을 선택합니다.", @@ -8648,7 +8655,7 @@ "explanationDefault": "기본값 (패널): 압축 설정에서 구성한 마스터 스위치 및 엔진별 토글에서 파생됩니다.", "explanationNamedCombos": "명명된 콤보: 명명된 콤보 편집기에서 빌드한 저장된 파이프라인입니다. 하나를 선택하면 모든 요청에 대한 활성 프로필이 됩니다.", "explanationPreview": "미리보기: 활성 프로필이 실행하는 엔진을 순서대로 표시합니다.", - "activeProfile": "Active profile", + "activeProfile": "활성 프로필", "activeProfileDescription": "전역으로 실행할 압축 프로필을 선택하세요 — 패널에서 파생된 기본값 또는 저장된 명명된 콤보.", "defaultFromPanel": "기본값 (패널에서 제공)", "runs": "실행:", @@ -8661,6 +8668,8 @@ "contextEditingNote": "현재 Claude(Anthropic)에서만 사용할 수 있습니다. 이는 위임된 모드입니다. 제공자가 서버 측에서 오래된 도구 사용 블록을 지우며, 메시지를 다시 작성하지 않습니다. 다른 제공자에게는 영향을 미치지 않습니다.", "namedCombos": "명명된 콤보", "namedCombosDescription": "서로 다른 파이프라인을 저장하고 특정 라우팅 콤보에 할당합니다.", + "activeProfileMasterSwitchOffWarning": "마스터 \"프롬프트 압축\" 스위치를 켜기 전까지 아래의 활성 프로필은 실행되지 않습니다.", + "activeProfileMasterSwitchOffCta": "설정에서 켜기", "comboNamePlaceholder": "콤보 이름", "descriptionPlaceholder": "설명", "nameRequired": "저장하기 전에 콤보 이름을 입력하세요.", @@ -8674,9 +8683,7 @@ "languagePacksList": "언어 팩: {packs}", "dragToReorder": "드래그하여 단계 순서 변경", "engine": "엔진", - "intensity": "강도", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "강도" }, "compressionStudio": { "noRun": "사용 가능한 압축 실행이 없습니다.", @@ -8692,7 +8699,7 @@ "resetReplay": "재생 재설정", "stepProgress": "단계 {current}/{total}", "inlineView": "인라인", - "splitComingSoon": "Split view (coming soon)", + "splitComingSoon": "분할 보기(곧 제공 예정)", "inputPlaceholder": "프롬프트, 도구 출력 또는 컨텍스트를 붙여넣으세요…", "activeCombined": "결합된 흐름에서 활성화됨", "requiresOnnx": "ONNX 모델 필요", @@ -8705,7 +8712,7 @@ "run": "실행", "laneRejected": "거부됨: {reason}", "error": "오류", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "결합된 파이프라인 미리보기에 실패했습니다: {reason}", "combinedFlow": "결합된 흐름", "eachLayer": "각 레이어 개별", "diff": "차이", @@ -8780,27 +8787,27 @@ }, "enableTitle": "엔진 활성화", "enableDescription": "스택의 마지막에 실행되며(RTK/Caveman이 텍스트를 정리한 후 OmniGlyph가 나머지를 이미지로 변환), omniglyph 모드를 통해 독립 실행형으로도 실행됩니다. 이것은 미리보기이며 엔드투엔드 검증이 완료될 때까지 기본적으로 비활성화되어 있습니다.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "압축 프로필", + "profileDescription": "프로필은 하한선이 아니라 상한선입니다. 더 엄격한 프로필은 단계별 재정의로 완화할 수 없습니다. 이 코드베이스에서 측정한 결과, 코딩 안전 또는 균형 조정 프로필을 사용하면 아직 기록이 쌓이지 않은 세션에서는 아무것도 압축하지 않습니다. 두 프로필 모두 최소 문자 수 임계값을 높이고 시스템 프롬프트, 도구 스키마 및 도구 결과를 원본 상태로 유지하기 때문입니다.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "적극적(기본값)", + "description": "게시된 결과에서 측정에 사용한 정책입니다. 시스템 프롬프트, 도구 문서 및 밀도 높은 기록을 이미지화합니다." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "균형 조정", + "description": "실시간 상태를 원본 상태로 유지하고 최근 8개 턴을 보호하며, 그보다 오래된 종료된 기록만 축약합니다." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "코딩 안전", + "description": "권한 정보, 도구 스키마 및 실시간 도구 출력을 원본 상태로 유지하고 최근 12개 턴을 보호합니다. 세션에 기록이 쌓일 때까지는 아무것도 압축하지 않습니다." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "패스스루", + "description": "변환 없이 라우팅합니다. 엔진을 건너뛰고 요청을 변경하지 않은 채 전달합니다." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph 압축 프로필 선택", "saved": "저장되었습니다.", "saveFailed": "저장할 수 없습니다.", "enableAria": "OmniGlyph 엔진 활성화", @@ -8811,55 +8818,55 @@ "description": "필요에 따라 관리되는 로컬 엔진 — CLIProxyAPI, 9Router, Mux 및 Bifrost. 루프백에서만 액세스할 수 있습니다.", "stateRunning": "실행 중", "stateStopped": "중지됨", - "stateStarting": "Starting", - "stateStopping": "Stopping", - "stateError": "Error", - "stateNotInstalled": "Not installed", - "stateUnknown": "Unknown", - "port": "port {port}", - "externalBadge": "Externally managed", - "externalTitle": "External 9Router detected", - "externalDescription": "OmniRoute found 9Router at {host}:{port}. Its lifecycle, logs, updates, and service key remain managed by the external installation.", - "start": "Start", - "starting": "Starting…", - "stop": "Stop", - "stopping": "Stopping…", - "restart": "Restart", - "restarting": "Restarting…", - "update": "Update", - "updating": "Updating…", - "install": "Install", - "installing": "Installing…", - "autoStart": "Auto-start", - "autoStartDescription": "Launch {name} automatically when OmniRoute starts", - "apiKey": "API Key", - "apiKeyDescription": "Key used by OmniRoute to authenticate with {name}", - "keyRotated": "Key rotated — {name} restarted to apply the new key", - "keyRotateFailed": "Failed to rotate key", - "keyRevealFailed": "Failed to reveal key", - "keyRevealEmpty": "Reveal failed: key not returned", - "reveal": "Reveal", - "revealing": "Revealing…", - "hide": "Hide", - "rotateKey": "Rotate key", - "rotating": "Rotating…", - "keyAutoHide": "Key will be hidden automatically in 30 seconds.", - "revealTitle": "Reveal API Key", - "revealConfirm": "Revealing the API key will be logged in the audit trail. Continue?", - "cancel": "Cancel", - "install9Router": "Install 9Router", - "install9RouterDescription": "Downloads and installs 9Router via npm. Requires approximately 500 MB of disk space.", - "version": "Version", - "versionHint": "Enter “latest” or a specific version (for example, 1.2.3).", - "servicePort": "Port", + "stateStarting": "시작 중", + "stateStopping": "중지 중", + "stateError": "오류", + "stateNotInstalled": "설치되지 않음", + "stateUnknown": "알 수 없음", + "port": "포트 {port}", + "externalBadge": "외부에서 관리됨", + "externalTitle": "외부 9Router 감지됨", + "externalDescription": "OmniRoute가 {host}:{port}에서 9Router를 찾았습니다. 수명 주기, 로그, 업데이트 및 서비스 키는 외부 설치에서 계속 관리됩니다.", + "start": "시작", + "starting": "시작 중…", + "stop": "중지", + "stopping": "중지 중…", + "restart": "다시 시작", + "restarting": "다시 시작 중…", + "update": "업데이트", + "updating": "업데이트 중…", + "install": "설치", + "installing": "설치 중…", + "autoStart": "자동 시작", + "autoStartDescription": "OmniRoute가 시작될 때 {name} 자동 실행", + "apiKey": "API 키", + "apiKeyDescription": "OmniRoute가 {name} 인증에 사용하는 키", + "keyRotated": "키가 교체되었습니다. 새 키를 적용하기 위해 {name}이(가) 다시 시작되었습니다.", + "keyRotateFailed": "키 교체 실패", + "keyRevealFailed": "키 표시 실패", + "keyRevealEmpty": "표시 실패: 키가 반환되지 않았습니다.", + "reveal": "표시", + "revealing": "표시 중…", + "hide": "숨기기", + "rotateKey": "키 교체", + "rotating": "키 교체 중…", + "keyAutoHide": "키는 30초 후 자동으로 숨겨집니다.", + "revealTitle": "API 키 표시", + "revealConfirm": "API 키를 표시하면 감사 로그에 기록됩니다. 계속하시겠습니까?", + "cancel": "취소", + "install9Router": "9Router 설치", + "install9RouterDescription": "npm을 통해 9Router를 다운로드하고 설치합니다. 약 500 MB의 디스크 공간이 필요합니다.", + "version": "버전", + "versionHint": "“latest” 또는 특정 버전(예: 1.2.3)을 입력하세요.", + "servicePort": "포트", "servicePortHint": "OmniRoute와 9Router는 서로 다른 포트를 사용해야 합니다. 기본 9Router 포트는 20130입니다.", - "installationFailed": "Installation failed (HTTP {status})", + "installationFailed": "설치 실패(HTTP {status})", "installationSucceeded": "9Router가 성공적으로 설치되었습니다. 시작하는 중…", - "networkInstallFailed": "Network error — could not reach the install endpoint", + "networkInstallFailed": "네트워크 오류 — 설치 엔드포인트에 연결할 수 없습니다", "availableModels": "사용 가능한 모델", "modelsLoading": "로드 중…", "modelsDiscovered": "{count, plural, one {#개 모델 발견됨} other {#개 모델 발견됨}}", - "modelsLoadFailed": "Failed to load models", + "modelsLoadFailed": "모델을 불러오지 못했습니다", "refreshing": "새로 고침 중…", "refreshNow": "지금 새로 고침", "noModels": "모델을 찾을 수 없습니다. 실행 중인 서비스에서 동기화하려면 “지금 새로 고침”을 선택하세요.", @@ -8871,7 +8878,7 @@ "providerExposureDescription": "9Router 모델을 9router/ 접두사 아래의 라우팅 대상으로 노출합니다.", "providerExposureLabel": "9router/… 경로로 노출", "providerExposureHint": "활성화하면 발견된 모델이 OmniRoute 전체의 프로바이더 선택기에 표시됩니다.", - "providerExposureUpdateFailed": "Failed to update (HTTP {status})", + "providerExposureUpdateFailed": "업데이트 실패(HTTP {status})", "providerExposureNetworkFailed": "네트워크 오류 — 프로바이더 노출 설정을 업데이트할 수 없습니다", "webUi": "9Router 웹 UI", "openNewTab": "새 탭에서 열기", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "규칙 기반 메시지 압축, 언어 팩, 분석 및 출력 모드 제어.", "advancedConfig": "고급 구성", "advancedConfigDesc": "압축 동작 미세 조정", "aggressiveSettings": "공격적인 설정", "aggressiveSettingsDesc": "잠재적인 품질 절충을 통한 최대 압축", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "요청 수", + "tokensSaved": "절약된 토큰", + "savingsPercent": "절감률 %", + "avgLatency": "평균 지연 시간", + "languagePacks": "언어 팩", + "languagePacksDesc": "특정 언어에 대한 압축 규칙을 활성화합니다.", "labelAutoTrigger": "컨텍스트가 초과되면 자동 압축", "labelCompressionRate": "압축 강도", "labelMaxTokens": "메시지당 대상 토큰", "labelMinLength": "최소 메시지 길이", "labelMinSavings": "절약할 최소 토큰 수", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "활성화됨", + "autoDetect": "언어 자동 감지", + "rulesCount": "규칙 {count}개", "inputCompressionTitle": "입력 압축", "inputCompressionDesc": "대화 기록을 더 짧은 표현으로 재작성합니다. 입력 토큰을 약 50% 줄입니다.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "압축 분석", + "noAnalytics": "아직 압축 분석 데이터가 없습니다.", "masterDisabledWarning": "Token Saver 마스터 스위치가 꺼져 있습니다. 압축 설정에서 켜거나 여기에서 변경하기 전까지는 이 설정이 요청에 영향을 미치지 않습니다.", "outputMode": "출력 모드", "outputModeDesc": "압축된 출력이 표시되는 방식을 제어합니다.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "출력 모드", "quickSettings": "빠른 설정", "quickSettingsDesc": "시작하기 위한 기본 압축 설정", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Auto-Clarity 우회", + "bypassConditions": "우회 조건", "bypassConditionsList": "보안, 되돌릴 수 없음, 설명, 순서 구분", "simpleMode": "단순", "advancedMode": "고급", @@ -8944,9 +8951,9 @@ "ultraSettings": "울트라 설정", "ultraSettingsDesc": "SLM 기반 의미 압축", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "간결하게 응답하세요. 기술 용어, 코드, 오류, URL 및 식별자는 그대로 유지하세요.", + "full": "짧고 압축적으로 응답하세요. 모든 기술적 내용을 유지하세요.", + "ultra": "일반적인 기술 약어를 사용해 극도로 짧게 응답하세요. 정확한 기호를 그대로 유지하세요." } }, "translator": { @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "남음", "kiloPassRenews": "{count}일 후 갱신", "kiloPassUsageLabel": "이번 달 사용량", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "추가 사용 크레딧", + "kimiExtraUsage": "추가 사용량", + "kimiExtraUsageEnabled": "활성화됨", + "kimiExtraUsageDisabled": "비활성화됨", + "kimiExtraUsageFrozen": "동결됨", + "kimiExtraUsageUnavailable": "사용할 수 없음", + "kimiMonthlyUsed": "이번 달 사용량", + "kimiMonthlyLimit": "월간 한도", + "kimiMonthlyLimitUnlimited": "무제한", + "kimiAdditionalCredits": "추가 크레딧", "loggerTab": "로거", "proxyTab": "프록시", "budgetManagement": "예산 관리", @@ -9324,7 +9331,7 @@ "circuitBreakers": "회로 차단기", "lockedIPs": "잠긴 IP", "lockoutsAutoRefreshHint": "모델별 속도 제한 잠금 • 10초 자동 새로고침", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {#개 잠김} other {#개 잠김}}", "timeLeft": "{time} 남음", "howItWorks": "작동 방식", "howItWorksSubtitle": "평가를 통해 LLM 응답을 검증하는 방법 알아보기", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "테스트 중인 모델", "searchSuitesPlaceholder": "스위트 검색...", "passSuffix": "통과", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {#건} other {#건}}", "runEval": "평가 실행", "runAllSuites": "모두 실행", "runAllRunning": "모두 실행 중...", "runAllProgress": "{current}/{total} 실행: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {#개 스위트 실패} other {#개 스위트 실패}}", "runAllCompleted": "{suites}개 스위트 실행 — {passed} 통과, {failed} 실패", "runAllCompletedWithFailures": "{completed}개 스위트를 실행했습니다. {failedSuites}개는 완료하지 못했습니다.", "runningProgress": "{current}/{total} 실행 중...", @@ -9423,7 +9430,7 @@ "providerLimits": "공급자 한도", "noProviders": "연결된 제공업체 없음", "connectProvidersForQuota": "OAuth를 통해 공급자에 연결하여 API 할당량 한도 및 사용량을 추적하세요.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {#개 계정} other {#개 계정}}", "filteredFromCount": "({count}에서 필터링됨)", "autoRefresh": "자동 새로고침", "refreshAll": "모두 새로 고침", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "할당량 표시 여부 업데이트 실패", "account": "계정", "modelQuotas": "모델 할당량", - "lastUsed": "Last Refreshed", + "lastUsed": "마지막 새로고침", "actions": "작업", "refreshQuota": "할당량 새로고침", "today": "오늘", @@ -9452,9 +9459,9 @@ "cardExpand": "펼치기", "cardCollapse": "접기", "moreQuotas": "+{count}개 더", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "그룹 없음", + "viewFlat": "단일 목록", + "viewByEnvironment": "환경별", "noQuotaDataAvailable": "사용 가능한 할당량 데이터가 없습니다.", "noAccountsForTierFilter": "등급 필터에 대한 계정을 찾을 수 없습니다.", "tierAll": "모두", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "크레딧 사용", "resetCreditRedeemed": "재설정이 적용되었습니다", "resetCreditRedeemFailed": "재설정 크레딧을 사용하지 못했습니다", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "스위트를 저장하지 못했습니다", "clone": "클론", "exportSuite": "내보내기", "importSuite": "가져오기", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "잘못된 평가 모음 JSON", "suiteBuilderCloneSuffix": "복사", "suiteBuilderImportedSuite": "가져온 스위트", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "스코어카드", + "evalApiKey": "API 키", + "scorecardPassRate": "통과율", + "targetTypeModel": "모델", + "actualOutputLabel": "실제 출력", + "evalTargetHint": "평가할 모델 또는 조합을 선택하세요.", + "suiteBuilderDeleted": "스위트가 삭제되었습니다", + "suiteBuilderCaseCardHint": "입력 프롬프트와 예상 출력 기준을 정의하세요.", + "nextResetUtc": "다음 초기화(UTC)", + "scorecardHint": "모든 평가 스위트의 통과율을 집계한 결과입니다.", + "suiteLatestRunsHint": "이 스위트의 최신 평가 실행입니다.", + "saving": "저장 중", + "suiteBuilderCaseModelLabel": "모델(선택 사항)", + "evalControlsTitle": "평가 제어", + "suiteBuilderEditTitle": "평가 스위트 편집", + "suiteBuilderCaseStrategyLabel": "검증 전략", + "notifySelectDifferentCompareTarget": "비교할 다른 대상을 선택하세요", + "recentRunsHint": "최신 평가 실행을 표시합니다. 실행을 클릭하면 상세 결과를 볼 수 있습니다.", + "evalCompareHint": "선택적으로 두 번째 대상과 결과를 비교할 수 있습니다.", + "suiteBuilderCaseInvalid": "이 케이스에 검증 오류가 있습니다. 저장하기 전에 수정하세요.", + "historyEmpty": "아직 평가 기록이 없습니다", + "suiteBuilderUpdated": "스위트가 업데이트되었습니다", + "resetInterval": "초기화 주기", + "suiteBuilderCreateTitle": "평가 스위트 만들기", + "activePeriodSpend": "활성 기간 지출액", + "evalApiKeyHint": "평가 요청에 사용할 API 키를 선택하세요.", + "evalCompareOptional": "비교(선택 사항)", + "suiteBuilderDeleteFailed": "스위트를 삭제하지 못했습니다", + "suiteBuilderCaseSystemPromptPlaceholder": "선택적 시스템 지침...", + "scorecardCases": "케이스", + "runCompletedWithScore": "평가 완료 — 통과율 {score}%", + "suiteBuilderCustomBadge": "사용자 지정", + "targetSuiteDefaults": "스위트 기본값", + "suiteBuilderDeleteConfirm": "이 스위트를 삭제하시겠습니까? 이 작업은 실행 취소할 수 없습니다.", + "suiteBuilderNameLabel": "스위트 이름", + "scorecardSuites": "스위트", + "evalCompareTarget": "비교 대상", + "suiteBuilderCaseModelPlaceholder": "예: gpt-4o-mini", + "evalControlsHint": "평가 대상과 API 키를 구성한 다음, 스위트를 실행하여 모델 품질을 검증하세요.", + "recentRunsTitle": "최근 실행", + "suiteBuilderCaseSystemPromptLabel": "시스템 프롬프트", + "suiteBuilderCaseExpectedPlaceholder": "예: def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "예: def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "예상되는 정확한 응답을 붙여넣으세요.", "suiteBuilderCaseExpectedPlaceholderRegex": "예를 들어 ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "양쪽을 슬래시로 감싸지 않은 JavaScript 정규 표현식을 사용하세요.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "예: 코딩 품질 스위트", + "suiteBuilderAddCase": "케이스 추가", + "cancel": "취소", + "evalTarget": "대상", + "suiteBuilderCaseNameLabel": "케이스 이름", + "weeklyLimitUsd": "주간 한도(USD)", + "suiteBuilderCaseUserPromptPlaceholder": "예: Python으로 피보나치 함수를 작성하세요", + "suiteBuilderNameRequired": "스위트 이름은 필수입니다", + "suiteBuilderCaseUserPromptLabel": "사용자 프롬프트", + "daily": "매일", + "resultErrorLabel": "오류", + "suiteBuilderBuiltInBadge": "내장", + "suiteBuilderCaseCardTitle": "테스트 케이스", "suiteBuilderDuplicateCase": "복제", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "예: 50.00", + "suiteBuilderCaseTagsHint": "테스트 케이스를 정리하기 위한 쉼표로 구분된 태그입니다.", + "notifyEvalRunFailedWithReason": "평가 실패: {reason}", + "weekly": "매주", + "runEvalRunning": "평가 실행 중...", + "delete": "삭제", + "resetTimeUtc": "재설정 시간(UTC)", + "evalApiKeyAuto": "자동(기본값 사용)", + "suiteBuilderDescriptionPlaceholder": "이 스위트가 테스트하는 항목에 대한 선택적 설명...", + "targetComparisonTitle": "대상 비교", + "save": "저장", + "suiteBuilderCreated": "스위트가 성공적으로 생성되었습니다", + "suiteLatestRuns": "최근 실행", + "suiteBuilderCaseExpectedLabel": "예상 값", + "historyLatency": "지연 시간", + "suiteBuilderCaseTagsPlaceholder": "예: 코딩, python", + "targetTypeCombo": "조합", + "scorecardPassed": "통과", + "suiteBuilderCaseTagsLabel": "태그", + "suiteBuilderNewSuite": "새 스위트", + "notifyEvalLoadFailed": "평가 데이터를 불러오지 못했습니다", + "notConfigured": "구성되지 않음", + "suiteBuilderCaseNamePlaceholder": "예: Python 피보나치 테스트", + "intervalLabel": "간격", + "suiteBuilderCreateAction": "스위트 생성", + "suiteBuilderCasesHint": "각 케이스는 프롬프트를 전송하고 응답을 검증합니다.", + "suiteBuilderUpdatedAt": "업데이트됨", + "errorBadge": "오류", + "suiteBuilderCasesTitle": "테스트 케이스", + "edit": "편집", + "monthly": "월간", + "suiteBuilderCasesRequired": "테스트 케이스가 하나 이상 필요합니다", + "weeklyLimitSummary": "주간 예산 한도 요약", + "suiteBuilderDescriptionLabel": "설명", + "targetComparisonHint": "대상 간 평가 결과를 나란히 비교합니다.", + "compareCompletedWithScore": "비교 완료 — 통과율 {score}%", + "staleQuotaTooltip": "마지막 새로 고침 실패 — 캐시된 데이터를 표시합니다", "quotaThresholdLabel": "최소 잔여", "quotaCutoffsColumnHelp": "남은 할당량이 이 비율 이하로 떨어지면 요청을 중지합니다.", "quotaCutoffsButtonDefault": "기본값", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "시스템 메트릭스", "memory": "메모리", - "memoryShort": "mem", + "memoryShort": "메모리", "uptime": "가동 시간", "ariaLabel": "시스템 모니터링", "title": "시스템 모니터", @@ -9863,19 +9870,19 @@ "backToLogin": "로그인으로 돌아가기", "forgotPassword": "비밀번호를 잊으셨나요?", "continueWithOidc": "OIDC로 계속하기", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "기본 비밀번호: CHANGEME(INITIAL_PASSWORD가 설정되지 않은 경우)", "Authorization": "승인", "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "승인을 기다리는 중...", + "waitingForGoogleAuthorization": "Google 승인을 기다리는 중...", + "waitingForOpenAIAuthorization": "OpenAI 승인을 기다리는 중...", + "waitingForAntigravityAuthorization": "Antigravity 승인을 기다리는 중...", + "waitingForQoderAuthorization": "Qoder 승인을 기다리는 중...", + "exchangingCodeForTokens": "코드를 토큰으로 교환하는 중...", + "nodeIncompatibleTitle": "호환되지 않는 Node.js 버전", + "nodeIncompatibleDesc": "현재 실행 중인 Node.js {version} 버전은 OmniRoute의 보안 런타임 지원 정책 범위를 벗어납니다. 패치가 적용된 Node.js 20.x 또는 22.x LTS 릴리스를 사용하세요.", + "nodeIncompatibleFixLabel": "해결 방법: 패치가 적용된 Node.js 22 LTS 릴리스를 설치하세요", + "nodeIncompatibleHint": "OmniRoute에는 Node.js 22.22.2+(22.x LTS) 또는 24.0.0+(24.x LTS)가 필요합니다. Node 24 LTS를 권장합니다.", "resetViaAppDataTitle": "앱 데이터로 재설정", "resetViaAppDataDescription": "앱 데이터 디렉토리에서 설정 파일을 삭제하여 비밀번호를 재설정하세요:", "quitDesktopApp": "OmniRoute 데스크탑 앱을 완전히 종료합니다.", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "공급자", "commonUseCases": "일반적인 사용 사례", "clientCompatibility": "클라이언트 호환성", - "protocolsToc": "Protocols", + "protocolsToc": "프로토콜", "apiReference": "API 참조", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "관리 API 참조", + "managementApiDescription": "프록시 레지스트리, 범위 할당 및 레거시 프록시 마이그레이션을 위한 자동화 엔드포인트입니다.", "method": "메서드", "path": "경로", "notes": "메모", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Android, iOS 및 데스크톱 브라우저에 OmniRoute를 프로그레시브 웹 앱으로 설치하세요.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Termux를 통해 Android에서 OmniRoute를 헤드리스 모드로 실행하세요. 모바일 브라우저에서 대시보드에 접속할 수 있습니다.", "featureRoutingTitle": "다중 공급자 라우팅", "featureRoutingText": "단일 OpenAI 호환 엔드포인트를 통해 30개 이상의 AI 공급자에게 요청을 라우팅합니다. 채팅, 응답, 오디오 및 이미지 API를 지원합니다.", "featureCombosTitle": "콤보와 밸런싱", @@ -10133,21 +10140,21 @@ "clientKimiBullet2": "대체 및 감사 추적이 명시적으로 유지되도록 코딩 흐름에서 접두사가 붙은 모델을 선호합니다.", "clientKimiBullet3": "도구를 사용하는 클라이언트에 대해 기본 응답 스타일 라우팅을 원할 경우 `/v1/responses`를 사용하세요.", "protocolsTitle": "프로토콜: MCP 및 A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsDescription": "OmniRoute는 OpenAI 호환 API 외에도 두 가지 운영 프로토콜을 제공합니다. 도구 실행을 위한 MCP와 에이전트 간 워크플로를 위한 A2A입니다.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "클라이언트가 감사 가시성을 확보하면서 OmniRoute 도구를 검색하고 호출할 수 있도록 stdio를 통해 MCP를 사용하세요.", + "protocolMcpStep1": "`omniroute --mcp`로 MCP 전송을 시작하세요.", + "protocolMcpStep2": "MCP 클라이언트가 stdio 전송을 사용하도록 설정하세요.", + "protocolMcpStep3": "연결을 검증하려면 `omniroute_get_health`와 `omniroute_list_combos`를 호출하세요.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "A2A JSON-RPC를 사용하여 작업을 동기식으로 또는 SSE 스트리밍을 통해 제출하세요.", + "protocolA2aStep1": "에이전트를 검색하려면 `/.well-known/agent.json`을 읽으세요.", + "protocolA2aStep2": "`POST /a2a`로 `message/send` 또는 `message/stream` 요청을 보내세요.", + "protocolA2aStep3": "`tasks/get`과 `tasks/cancel`을 사용하여 작업 수명 주기를 관리하세요.", + "protocolTroubleshootingTitle": "프로토콜 문제 해결", + "protocolTroubleshooting1": "MCP 상태가 오프라인이면 stdio 프로세스가 실행 중이고 하트비트 파일이 업데이트되고 있는지 확인하세요.", + "protocolTroubleshooting2": "A2A 작업이 `working` 상태에 머무르면 `/api/a2a/tasks/:id`와 스트림 이벤트를 확인하여 최종 상태를 점검하세요.", + "protocolTroubleshooting3": "운영 제어 및 감사 가시성을 위해 `/dashboard/mcp`와 `/dashboard/a2a`를 사용하세요.", "endpointChatNote": "OpenAI 호환 채팅 엔드포인트(기본값)", "endpointResponsesNote": "응답 API 엔드포인트(Codex, o-시리즈).", "endpointModelsNote": "연결된 모든 공급자의 모델 카탈로그입니다.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "/v1이 없는 클라이언트를 위한 재작성(rewrite) 도우미입니다.", "endpointRewriteResponsesNote": "/v1이 없는 Responses 요청을 위한 재작성(rewrite) 도우미입니다.", "endpointRewriteModelsNote": "/v1이 없는 모델 검색을 위한 재작성(rewrite) 도우미입니다.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "저장된 프록시 레지스트리 항목을 나열합니다(페이지네이션 지원).", + "mgmtProxiesCreateNote": "레지스트리에 재사용 가능한 프록시 항목을 생성합니다.", + "mgmtProxiesHealthNote": "프록시 로그에서 저장된 각 프록시의 24시간/이동식 상태 지표를 가져옵니다.", + "mgmtProxiesBulkAssignNote": "한 번의 요청으로 여러 범위 ID에 하나의 프록시를 할당하거나 할당을 해제합니다.", + "mgmtAssignmentsListNote": "범위, scope_id 또는 proxy_id별로 프록시 할당을 나열합니다.", + "mgmtAssignmentsUpdateNote": "전역/제공업체/계정/조합 범위에 프록시를 할당하거나 할당을 해제합니다.", + "mgmtLegacyMigrationNote": "레거시 proxyConfig 맵을 레지스트리 할당으로 가져옵니다.", "modelPrefixesDescriptionStart": "특정 공급자로 라우팅하려면 모델 이름 앞에 공급자 접두사를 사용하십시오. 예:", "modelPrefixesDescriptionEnd": "GitHub Copilot으로 경로를 지정합니다.", "provider": "공급자", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute는 오픈 소스 소프트웨어입니다. 라이센스 조건에 따라 자유롭게 검사, 수정 및 배포할 수 있습니다." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI 에이전트", + "description": "시스템에 설치된 CLI 에이전트를 검색합니다. 자동 감지를 위한 사용자 지정 에이전트를 추가하세요.", + "refresh": "새로 고침", + "installed": "설치됨", + "notFound": "찾을 수 없음", + "builtIn": "기본 제공", + "custom": "사용자 지정", + "remove": "제거", + "addCustomAgent": "사용자 지정 에이전트 추가", + "addCustomAgentDesc": "감지할 CLI 도구를 등록하세요. 새로 고칠 때 자동으로 검색됩니다.", + "agentName": "에이전트 이름", + "binaryName": "바이너리 이름", + "versionCommand": "버전 명령어", + "spawnArgs": "실행 인수", + "addAgent": "에이전트 추가", + "scanning": "시스템에서 CLI 에이전트를 검색하는 중...", + "opencodeIntegration": "OpenCode 연동", + "opencodeDetected": "opencode {version} 감지됨", + "opencodeDesc": "OmniRoute 기본 URL과 사용 가능한 모든 모델이 포함된 즉시 사용 가능한 {configFile}을 생성합니다. 프로젝트 루트에 넣고 {command}을 실행하세요.", + "downloadConfig": "{file} 다운로드", + "downloaded": "다운로드 완료!", + "setupGuideTitle": "설정 가이드", + "openCliTools": "CLI 도구 열기", + "setupGuideDetectCliTitle": "설치된 CLI 감지", + "setupGuideDetectCliDesc": "CLI를 설치하거나 업데이트한 후 새로 고침을 클릭하면 OmniRoute가 바이너리와 버전을 다시 검색합니다.", + "setupGuideCustomAgentTitle": "사용자 지정 바이너리 등록", + "setupGuideCustomAgentDesc": "사용 중인 CLI가 기본 제공 목록에 없으면 사용자 지정 에이전트 추가를 사용하세요. 바이너리 이름과 버전 명령어를 입력하세요.", + "setupGuideCommandMissingTitle": "'command not found' 해결", + "setupGuideCommandMissingDesc": "CLI 명령어가 PATH에 있는지 확인하고 새 터미널 세션을 연 다음 새로 고침을 다시 실행하세요.", "cliToolsRedirectTitle": "IDE를 구성하려고 하시나요?", "cliToolsRedirectDesc": "Claude Code, Cursor, Codex 또는 다른 IDE가 OmniRoute를 프록시로 사용하도록 설정하려면 CLI 도구 페이지로 이동하세요. 이 페이지는 그 반대로, OmniRoute가 로컬 CLI 바이너리를 실행 대상으로 삼아 요청을 라우팅하도록 하는 기능을 위한 것입니다.", "spawnArgsPlaceholder": "예: --quiet, --json, --no-auto-commits", @@ -10491,12 +10498,12 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "간단한 채팅", + "streaming": "스트리밍", + "system-prompt": "시스템 프롬프트", + "thinking": "사고 과정", + "tool-calling": "도구 호출", + "multi-turn": "다중 턴", "vision": "비전", "schema-coercion": "스키마 강제" }, @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "캐시 관리", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "새로 고침", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "메모리 항목", + "memoryEntriesSub": "인메모리 LRU", + "dbEntries": "DB 항목", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "캐시 적중", + "cacheHitsSub": "전체 {total}개 중", + "tokensSaved": "절약된 토큰", + "tokensSavedSub": "적중 횟수를 기준으로 추정", + "hitRate": "적중률", + "performance": "캐시 성능", + "autoRefresh": "{seconds}초마다 자동 새로 고침", + "hits": "적중", + "misses": "미스", + "total": "합계", + "behavior": "캐시 동작", + "behaviorDeterministic": "temperature=0인 비스트리밍 요청만 캐시됩니다.", + "behaviorBypass": "{header} 헤더로 우회합니다.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "기본 TTL: 30분. {envVar}를 통해 구성할 수 있습니다.", + "idempotency": "멱등성 레이어", + "activeDedupKeys": "활성 중복 제거 키", + "dedupWindow": "중복 제거 기간", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "캐시를 지우지 못했습니다.", + "unavailable": "캐시를 사용할 수 없음", + "unavailableDesc": "캐시 통계를 가져오지 못했습니다. 서버가 실행 중인지 확인하세요.", "loadingCacheAria": "캐시 로드 중", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "프롬프트 캐시(제공업체 측)", + "semanticCache": "시맨틱 캐시", + "promptCacheSectionDesc": "사용 내역을 기반으로 제공업체 측 프롬프트 캐싱 활동을 표시하여 캐시 제어가 활성화된 위치와 입력 재사용량을 확인할 수 있습니다.", + "promptTrendDesc": "지난 24시간의 시간별 요청량, 캐시 적용률 및 캐시 읽기량입니다.", + "cachedRequests": "캐시된 요청", + "cachedRequests24h": "캐시된 요청(24시간)", + "cacheHitRate": "캐시 적중률", + "cacheRate": "캐시 비율", + "cacheRateDesc": "전체 요청 중", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "프롬프트 캐시 지표", + "withCacheControl": "캐시 제어 적용", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "캐시 재사용 비율", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "예상 절감 비용", + "lastUpdated": "마지막 업데이트", + "hoursTracked": "시간 추적됨", + "busiestHour": "요청이 가장 많은 시간대", + "peakCacheRate": "최고 캐시 비율", + "trendHour": "시간", + "activityVolume": "활동", + "requestsShort": "요청", + "inputShort": "입력", + "cachedShort": "캐시됨", + "writeShort": "쓰기", + "resetting": "재설정 중...", + "resetMetrics": "지표 재설정", + "byProvider": "제공업체별 분석", + "providerCacheRateDesc": "각 제공업체는 총 입력 토큰, 캐시 읽기 토큰 및 캐시 쓰기 토큰을 제공하므로 원시 합계를 기준으로 재사용 비율을 검증할 수 있습니다.", "provider": "Provider", - "requests": "Requests", + "requests": "요청", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "캐시 추세(24시간)", + "peakCached": "최대 캐시 수", + "cached": "캐시됨", + "overview": "개요", "tableProvider": "제공자", "tableModel": "모델", "performanceTitle": "성능", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoute 자체의 결정론적 응답 캐시입니다. 활성화하면 반복되는 비스트리밍 temperature=0 요청을 업스트림 제공자에 전송하지 않고 로컬에서 처리할 수 있습니다.", + "semanticCacheDisabledDesc": "시맨틱 캐시가 비활성화되어 있습니다. 설정에서 다시 활성화할 때까지 OmniRoute는 로컬 응답 재사용을 건너뜁니다.", + "semanticEntriesDesc": "현재 SQLite에 저장된 영구 시맨틱 캐시 레코드입니다. 제공자 측 프롬프트 캐시 활동은 여기에 표시되지 않습니다.", + "searchEntries": "항목 검색...", + "search": "검색", + "loading": "불러오는 중...", + "entriesLoadError": "시맨틱 캐시 항목을 불러오지 못했습니다.", + "noEntries": "캐시 항목을 찾을 수 없습니다", + "noPromptCacheData": "아직 제공자 측 프롬프트 캐시 활동이 기록되지 않았습니다.", + "noTrendData": "지난 24시간 동안 기록된 프롬프트 캐시 활동이 없습니다.", + "signature": "서명", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "생성 시간", + "expires": "만료 시간", + "actions": "작업", + "deduplicatedRequests": "중복 제거된 요청", + "savedCalls": "절약된 API 호출", + "totalProcessed": "처리된 총 요청 수", + "disabled": "비활성화됨", + "totalRequests": "총 요청 수", "reasoningCache": "추론 재생", "reasoningCacheDesc": "멀티턴 도구 호출 흐름을 위해 모델의 사고 과정을 유지합니다.", "reasoningEntries": "활성 항목", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes}분 전", "hoursAgo": "{hours}시간 전", "daysAgo": "{days}일 전", - "entries": "Entries" + "entries": "항목" }, "proxyConfigModal": { "levelGlobal": "글로벌", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Cursor IDE 연결", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Cursor로 로그인", + "tabImport": "토큰 가져오기", + "loginDescription": "Cursor의 브라우저 로그인 페이지를 엽니다. Docker에서도 작동합니다. 호스트 브라우저에서 승인한 후 여기로 돌아오세요.", + "loginWithCursor": "Cursor로 로그인", + "startingLogin": "시작 중…", + "waitingApproval": "Cursor 로그인 승인을 기다리는 중…", + "openUrlHint": "브라우저가 열리지 않은 경우:", + "openLoginLink": "로그인 페이지 열기", + "cancelLogin": "로그인 취소", "autoDetecting": "토큰 자동 감지 중...", "readingFromCursor": "Cursor IDE 또는 cursor-agent에서 읽는 중", "tokensAutoDetected": "Cursor IDE에서 토큰이 자동 감지되었습니다!", "cursorNotDetected": "Cursor IDE가 감지되지 않았습니다. 토큰을 수동으로 붙여넣으세요.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Docker에서 실행 중인가요? Cursor로 로그인을 권장합니다. IDE 자동 가져오기와 cursor-agent는 일반적으로 컨테이너 내부에서 사용할 수 없습니다. docs/providers/CURSOR-DOCKER.md를 참조하세요.", "accessToken": "액세스 토큰", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "새로 고침 토큰", + "refreshTokenPlaceholder": "선택 사항 — 토큰을 자동으로 갱신할 수 있습니다", "required": "*", "accessTokenPlaceholder": "액세스 토큰이 자동으로 채워집니다...", "machineId": "머신 ID", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "토큰 자동 감지 실패", "errorEnterToken": "액세스 토큰을 입력하세요.", "errorImportFailed": "가져오기 실패", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Cursor 로그인을 시작하지 못했습니다", + "errorLoginPoll": "Cursor 로그인에 실패했습니다", + "errorLoginTimeout": "Cursor 로그인 시간이 초과되었습니다 — 다시 시도하세요" }, "pricingModal": { "title": "가격 구성", @@ -10843,9 +10850,9 @@ "selectProxy": "{name} 선택", "title": "프록시 레지스트리", "description": "재사용 가능한 프록시를 저장하고 할당을 추적합니다.", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "레거시 가져오기", + "bulkAssign": "일괄 할당", + "addProxy": "프록시 추가", "loading": "프록시 로드 중...", "noProxies": "아직 저장된 프록시가 없습니다.", "tableName": "이름", @@ -10854,9 +10861,9 @@ "tableHealth": "상태 (24h)", "tableUsage": "사용량", "tableActions": "작업", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "테스트", + "edit": "편집", + "delete": "삭제", "modalCreateTitle": "프록시 생성", "modalEditTitle": "프록시 편집", "labelName": "이름", @@ -10906,7 +10913,7 @@ "errorBulkFailed": "대량 할당을 실행하지 못했습니다", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "실패", "successRate": "{rate}% 성공", "avgLatency": "{latency}ms 평균", "assignmentsCount": "{count}개 할당", @@ -10948,7 +10955,7 @@ "poolTitle": "프록시 풀 및 로테이션", "poolDescription": "여러 프록시를 스코프에 연결하고 이들 간에 송신 IP를 로테이션합니다. 단일 프록시가 있는 스코프는 일반 할당과 정확히 동일하게 작동합니다.", "poolScopeIdLabel": "스코프 ID", - "poolScopeIdPlaceholder": "provider id / connection id / combo id", + "poolScopeIdPlaceholder": "제공자 ID / 연결 ID / 조합 ID", "poolScopeIdRequired": "provider, account 또는 combo 스코프에는 스코프 ID가 필요합니다.", "poolLoad": "풀 로드", "poolLoadFailed": "프록시 풀을 로드하지 못했습니다", @@ -10961,9 +10968,9 @@ "strategyLatency": "지연 시간 최적화", "poolMembersLabel": "풀 멤버 ({count})", "poolNoMembers": "이 풀에 아직 프록시가 없습니다.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {출구 #개} other {출구 #개}}를 {connections, plural, one {연결 #개} other {연결 #개}}에서 사용 · 출구 한 곳에서 최대 {max}개 · 최근 {hours}시간", + "poolEgressObservationEmpty": "최근 {hours}시간 동안 트래픽이 관찰되지 않았습니다", + "poolEgressObservationHint": "해당 기간의 프록시 로그를 기준으로 집계됩니다. 이 풀의 구성원에서 관찰된 고유 송신 IP와 이를 사용한 OmniRoute 연결을 나타냅니다. \"출구 한 곳에서\"는 동일한 시점이 아니라 해당 기간 전체를 의미합니다. IP별 429 잠금은 동일한 제공업체 계열의 연결만 일시 중지합니다.", "poolRemove": "제거", "poolRemoveFailed": "풀에서 프록시를 제거하지 못했습니다", "poolAddLabel": "프록시 추가", @@ -10975,94 +10982,94 @@ "playground": { "title": "모델 플레이그라운드", "description": "대시보드에서 직접 모든 모델을 테스트하세요. 공급자, 모델, 엔드포인트 유형을 선택한 후 요청을 보내 원시 응답을 확인하세요.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "엔드포인트", + "provider": "제공자", + "model": "모델", "accountKey": "Account Key", "autoAccounts": "자동({count}개 계정)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "전송", + "cancel": "취소", + "audioFile": "오디오 파일", "attachImages": "Attach Images", "multipartFormData": "multipart/form-data", "upToImages": "최대 4개 이미지", "selectAudioFile": "전사할 오디오 파일 선택 (mp3, wav, m4a, ogg, flac…)", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "모두 지우기", + "request": "요청", + "response": "응답", + "transcription": "텍스트 변환", + "copy": "복사", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "전사(Transcription)는 multipart/form-data를 사용합니다. 위에서 오디오 파일을 업로드하세요 — 아래 JSON은 추가 매개변수(model, language)를 제어합니다.", "imagesGenerated": "생성된 {count}개의 이미지", "generatedImage": "생성된 이미지 {index}", - "save": "Save", + "save": "저장", "endpointOptions": { "chat": "Chat", - "responses": "Responses", - "completions": "Completions", + "responses": "응답", + "completions": "완성", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "임베딩", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "모더레이션", - "rerank": "Rerank", + "rerank": "재순위 지정", "search": "Search", "webFetch": "웹 가져오기" }, "conversationalChat": "대화채팅", "clearChat": "채팅 지우기", "typeMessagePlaceholder": "메시지를 입력하세요... (새 줄을 입력하려면 Shift+Enter)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "채팅", + "tabCompare": "비교", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "빌드", + "configPane": "구성", + "systemPrompt": "시스템 프롬프트", + "systemPromptPlaceholder": "당신은 유용한 어시스턴트입니다.", + "modelPlaceholder": "예: openai/gpt-4o", + "endpointLabel": "엔드포인트", + "parametersLabel": "매개변수", + "collapseConfig": "설정 창 접기", + "expandConfig": "설정 창 펼치기", + "temperature": "온도", + "maxTokens": "최대 토큰 수", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "존재 페널티", + "frequencyPenalty": "빈도 페널티", "reasoningLabel": "추론", "thinking": "생각", "effort": "노력", "effortDefault": "기본값", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "무작위(비워 두기)", + "presetsLabel": "프리셋", + "loadPreset": "프리셋 불러오기", + "savePreset": "프리셋 저장", + "noPresets": "프리셋 없음", + "presetNamePlaceholder": "프리셋 이름", + "savingPreset": "저장 중…", + "nameRequired": "이름은 필수입니다", + "failedToSavePreset": "프리셋을 저장하지 못했습니다", + "improvePrompt": "프롬프트 개선", + "improvingPrompt": "개선 중…", + "improvePromptTitle": "AI로 프롬프트 개선", + "setModelFirst": "먼저 모델을 설정하세요", "setModelInConfigFirst": "먼저 Config 패널에서 모델을 설정하세요.", "improvePromptFailed": "프롬프트 개선에 실패했습니다.", "improvePromptAria": "AI를 사용하여 프롬프트 개선", "confirmImprovePrompt": "프롬프트 개선 확인", "improvePromptDescription": "현재 시스템 프롬프트를 에 전송하여 개선된 버전을 생성합니다.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Config에서 설정한 모델의 할당량이 소모됩니다.", + "improveConfirm": "개선", + "exportCode": "코드 내보내기", + "exportCodeTitle": "코드 내보내기", "exportShort": "내보내기", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "내보낼 플레이그라운드 상태가 없습니다.", "closeExportModal": "내보내기 모달 닫기", "close": "닫기", "exportRealKeyWarning": "보안 경고: 내보내기 차단됨 — 출력에서 실제 API 키가 감지되었습니다. API 키를 재설정하고 다시 시도하세요.", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language} 코드 복사", "loadingPresets": "로드 중…", "loadPresetPlaceholder": "프리셋 불러오기…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "복사", + "copiedCode": "복사됨!", + "addModel": "+ 모델 추가", + "runAll": "모두 실행", + "cancelAll": "모두 취소", + "maxColumnsReached": "최대 {max}개 열", + "modelPlaceholderCompare": "모델(Cmd+K)…", "noModel": "모델 없음", "statusLabel": "상태: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "응답 대기 중…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "클라이언트 측 추정치", + "tokensLabel": "토큰", + "costLabel": "비용", + "costEstimated": "(예상)", "ttftTitle": "첫 번째 토큰까지의 시간(클라이언트 측 추정치)", "tpsTitle": "초당 토큰 수(클라이언트 측 추정치)", "tokenCountsTitle": "프롬프트 토큰 ↑ / 완성 토큰 ↓", "estimatedCostTitle": "예상 비용(정확성이 보장되지 않음)", - "toolsLabel": "Tools", + "toolsLabel": "도구", "toolsCount": "도구 ({count})", - "addTool": "Add tool", + "addTool": "도구 추가", "editTool": "{name} 도구 편집", "removeTool": "{name} 도구 제거", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "함수 이름", "toolNameRequiredPlaceholder": "함수 이름 *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "설명(선택 사항)", "toolParamsLabel": "매개변수(JSON 스키마)", "toolParamsJsonSchema": "매개변수용 JSON 스키마", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "매개변수는 유효한 JSON이어야 합니다", + "structuredOutputLabel": "구조화된 출력", + "enableJsonMode": "JSON 모드 활성화", + "disableJsonMode": "JSON 모드 비활성화", + "invalidJson": "유효하지 않은 JSON", "jsonMode": "JSON 모드", "jsonModeDescription": "response_format: json_schema 강제 적용", "schemaName": "스키마 이름", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max}개 열", "addModelToCompare": "비교할 모델 열 추가", "modelsSimultaneously": "동시에 최대 {max}개 모델", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "실행 중…", + "runLabel": "실행", + "enterToolResult": "도구 결과 입력…", "build": { "step1Label": "무엇을 테스트할까요?", "step2Label": "설정", @@ -11250,73 +11257,73 @@ "stop": "중지" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "기록 중", + "paused": "일시 중지됨", + "pipelineLogsOn": "파이프라인 로그 켜짐", + "pipelineLogsOff": "파이프라인 로그 꺼짐", + "updatingPipelineLogs": "파이프라인 로그 업데이트 중...", + "updatePipelineFailed": "파이프라인 로깅을 업데이트하지 못했습니다", + "capturePipeline": "새 요청의 파이프라인 페이로드 캡처", + "searchPlaceholder": "모델, 제공업체, 계정, API 키, 콤보 검색...", + "allProviders": "모든 제공업체", + "allModels": "모든 모델", + "allAccounts": "모든 계정", + "allApiKeys": "모든 API 키", + "total": "합계", + "ok": "성공", + "err": "오류", + "combo": "콤보", + "keys": "키", + "shown": "표시됨", + "sortNewest": "최신순", + "sortOldest": "오래된순", + "sortTokensDesc": "토큰 ↓", + "sortTokensAsc": "토큰 ↑", + "sortDurationDesc": "소요 시간 ↓", + "sortDurationAsc": "소요 시간 ↑", + "sortStatusDesc": "상태 ↓", + "sortStatusAsc": "상태 ↑", + "sortModelAsc": "모델 A-Z", + "sortModelDesc": "모델 Z-A", + "sortLogs": "로그 정렬", + "refresh": "새로 고침", + "columnsLabel": "열", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "가동 중", + "semantic": "시맨틱", + "upstream": "업스트림", + "semanticCacheHit": "시맨틱 캐시 적중(OmniRoute에서 제공)", + "upstreamResponse": "업스트림 제공업체 응답", + "noApiKey": "API 키 없음", + "requestedRoutedTitle": "{requested} 요청, {routed}(으)로 라우팅됨", "statusFilters": { - "all": "All", + "all": "전체", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "성공", + "combo": "조합" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "상태", + "cacheSource": "캐시 소스", + "model": "모델", + "requested": "요청됨", + "provider": "제공업체", + "protocol": "요청 프로토콜", + "account": "계정", + "apiKey": "API 키", + "combo": "조합", + "tokens": "토큰", "compressed": "압축", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "소요 시간", + "time": "시간", + "conversation": "대화", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "로그를 불러오는 중...", + "noLogs": "아직 로그가 없습니다. API를 호출하면 여기에 표시됩니다.", + "noMatchingLogs": "현재 필터와 일치하는 로그가 없습니다.", + "callLogsInfo": "호출 로그는 JSON 파일로 {dataDir}에도 저장되며, {retentionDays} 및 {maxEntries}에 따라 순환됩니다.", "loadMore": "더 불러오기", "loadingMore": "더 불러오는 중...", "correlationId": "상관 ID", @@ -11417,59 +11424,59 @@ "correlationId": "상관 ID", "correlationIdValue": "상관 ID: {id}", "detailedPayloadInfo": "새 요청에 대한 4단계 클라이언트/제공자 페이로드 보기를 원하시면 먼저 자세한 로깅을 활성화하세요.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "모두 복사", + "copiedAll": "모두 복사됨" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "전체", + "filterErrors": "오류", + "filterSuccess": "성공", + "filterTimeout": "시간 초과", + "colStatus": "상태", + "colProxy": "프록시", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "유형", + "colLevel": "수준", + "colProvider": "제공업체", + "colTarget": "대상", + "colLatency": "지연 시간", + "colClientIp": "클라이언트 IP", + "colTime": "시간", + "recording": "기록 중", + "paused": "일시 중지됨", + "searchPlaceholder": "호스트, 제공업체, 대상, IP 검색...", + "allTypes": "모든 유형", + "allLevels": "모든 수준", + "allProviders": "모든 제공업체", + "total": "합계", + "ok": "정상", + "err": "오류", + "timeoutShort": "시간 초과", + "direct": "직접 연결", + "newest": "최신순", + "oldest": "오래된순", + "latencyDesc": "지연 시간 ↓", + "latencyAsc": "지연 시간 ↑", + "refresh": "새로 고침", + "columns": "열", + "loadingProxyLogs": "프록시 로그를 불러오는 중...", + "noProxyLogs": "아직 프록시 로그가 없습니다. 프록시를 구성하고 API를 호출하면 여기에 표시됩니다.", + "noMatchingLogs": "현재 필터와 일치하는 로그가 없습니다.", + "tlsFingerprint": "Chrome 124 TLS 핑거프린트", "colPublicIp": "공인 IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "음성", + "search": "검색", + "images": "이미지", + "chat": "채팅", + "music": "음악", + "responses": "응답", + "rerank": "재순위 지정", + "video": "동영상", + "embeddings": "임베딩", + "transcription": "음성 변환" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "런타임", + "description": "실시간 관찰성 — 3계층 복원력 + 세션 + 할당량 알림", + "pause": "일시 중지", + "resume": "재개", + "refreshNow": "지금 새로 고침", + "kpiSessions": "세션", + "kpiCircuits": "회로", + "kpiCooldowns": "쿨다운", + "kpiLockouts": "잠금", + "hintStickyBound": "{count}개 고정 바인딩됨", + "hintRecovering": "{count}개 복구 중", + "hintAllHealthy": "모두 정상", + "hintOpen": "열림", + "hintConnsCooling": "연결 쿨다운 중", + "hintModelsBlocked": "모델 차단됨", + "resilienceTitle": "3계층 복원력", + "resilienceSubtitle": "문서화된 복원력 모델을 반영합니다", + "providersHealthy": "제공업체 {percent}% 정상", + "layer": "계층 {n}", + "layer1Title": "제공업체 회로 차단기", + "layer1Desc": "업스트림 수준에서 장애가 발생한 제공업체로의 트래픽을 중단합니다", + "layer2Title": "연결 쿨다운", + "layer2Desc": "문제가 있는 계정/키 하나를 건너뛰고 다른 연결은 계속 서비스를 제공합니다", + "layer3Title": "모델 잠금", + "layer3Desc": "모델별 속도 제한 잠금이며, 동일한 연결에서 다른 모델은 계속 제공됩니다", + "badgeAffectedOf": "총 {total}개 중 {affected}개 영향받음", + "badgeCooling": "{count}개 쿨다운 중", + "badgeLocked": "{count}개 잠김", + "emptyCircuits": "아직 활성화된 회로 차단기가 없습니다", + "emptyCooldowns": "활성화된 연결 쿨다운이 없습니다", + "emptyLockouts": "모델 잠금이 없습니다", + "moreCooldowns": "쿨다운 {count}개 더 보기", + "moreLockouts": "잠금 {count}개 더 보기", + "feedTitle": "실시간 피드", + "feedSubtitle": "최근 이벤트 {count}개", + "feedFilterAll": "전체", + "feedFilterCircuits": "회로", + "feedFilterCooldowns": "쿨다운", + "feedFilterLockouts": "잠금", + "feedFilterSessions": "세션", + "feedFilterQuotas": "할당량", + "feedClear": "지우기", + "feedEmptyWaiting": "이벤트를 기다리는 중... (5초마다 폴링)", + "feedEmptyFiltered": "이 필터와 일치하는 이벤트가 없습니다", + "sessionsTitle": "활성 세션", + "sessionsSubtitle": "고정 바인딩된 요청 지문(실시간)", + "sessionsActive": "{count}개 활성", + "sessionsEmptyTitle": "활성 세션이 없습니다", + "sessionsEmptyHint": "요청이 프록시를 통과하면 세션이 표시됩니다", + "tblSession": "세션", + "tblAge": "경과 시간", + "tblIdle": "유휴 시간", + "tblReqs": "요청 수", + "tblBoundTo": "바인딩 대상", + "topApiKeys": "상위 API 키", + "quotaMonitorsTitle": "할당량 모니터", + "quotaMonitorsSubtitle": "계정 기간별 실시간 할당량 상태", + "openQuota": "미사용 할당량", + "allQuotasHealthy": "모든 할당량이 정상입니다", + "statusExhausted": "소진됨", + "statusAlerting": "경고 중", + "statusError": "오류", + "moreSuffix": "외 {count}개" }, "quotaShare": { "weightPercent": "가중치 %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "할당량 공유", + "description": "백분율 제한을 적용하여 여러 API 키 간에 제공업체 할당량 공유", + "newPool": "새 풀", "betaTitle": "베타", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "구성은 localStorage에 저장됩니다(아직 서버에는 영구 저장되지 않음). 요청별 한도 적용은 아직 프록시 파이프라인에 연결되지 않았습니다. 이 화면에서는 할당량 분배를 설계하고 시각화할 수 있습니다. 실제 적용 기능은 향후 DB 영구 저장 및 업스트림 호출 가로채기 기능과 함께 제공될 예정입니다.", + "kpiActivePools": "활성 풀", + "kpiKeysAllocated": "할당된 키", + "kpiAvgUnallocated": "평균 미할당량", + "kpiProvidersWithQuota": "할당량이 있는 제공업체", + "emptyTitle": "구성된 풀이 없습니다", + "emptyDescription": "API 키를 할당할 풀을 생성하여 제공업체의 할당량 기간을 % 비율로 공유하세요.", + "loading": "로드 중…", + "removePool": "풀 제거", + "removeConfirm": "이 풀을 제거하시겠습니까?", + "pool": "풀", + "used": "사용됨", + "allocationsCount": "할당 ({count})", + "allocatedFree": "{allocated}% 할당됨 · {free}% 남음", + "noAllocations": "아직 할당된 키가 없습니다", + "capLabel": "한도 {value}", + "notTrackedYet": "(아직 추적되지 않음)", + "policy": "정책", "apiKeyColumn": "API 키", "weightColumn": "가중치", "fairShareShort": "공정함", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "엄격", + "policySoft": "유연", + "policyBurst": "버스트", + "policyHardHint": "키가 할당량을 소진하면 차단", + "policySoftHint": "초과 사용을 허용하고 알림만 표시", + "policyBurstHint": "여유 풀을 사용한 버스트 허용", + "editAllocations": "할당 편집", + "newPoolTitle": "새 할당량 풀", + "providerConnection": "제공업체 연결(계정)", + "selectConnection": "연결 선택…", + "noEligibleConnections": "할당량 데이터가 있는 연결이 없습니다. 먼저 /dashboard/quota에서 새로고침하세요.", + "quotaWindow": "할당량 기간", + "selectWindow": "기간 선택…", + "alreadyUsedSuffix": "(이미 사용 중)", + "windowReset": "재설정", + "duplicatePoolError": "이 연결 및 기간에 대한 풀이 이미 존재합니다", + "cancel": "취소", + "createPool": "풀 생성", + "editTitle": "할당 편집", + "noKeysAdded": "할당된 키가 없습니다. 아래에서 추가하세요.", + "totalLabel": "합계: {percent}%", + "totalExceeded": "⚠ 100% 초과", + "addKey": "+ 키 추가…", + "equalSplit": "균등 분할", + "save": "할당 저장", "betaPreviewLabel": "베타 — UI 미리보기.", "betaConfigSavedPrefix": "구성은 다음 위치에 저장됩니다.", "betaConfigSavedSuffix": "(아직 서버에 유지되지 않음) 요청별 한도 적용은 아직 프록시 파이프라인에 연결되지 않았습니다. 이 화면을 사용하면 할당량 분할을 디자인하고 시각화할 수 있습니다. 실제 시행은 DB 지속성 및 업스트림 호출 차단을 통해 향후 반복에 착수할 것입니다.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "이 그룹에 아직 풀이 있습니다. 먼저 재할당하거나 삭제하세요.", "ungroupedTitle": "그룹 없음", "ungroupedHint": "이 풀들은 알려진 그룹에 할당되지 않았습니다. 풀을 편집하여 실제 그룹으로 이동하세요.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "이 풀을 제거할 수 없습니다.", + "dismiss": "닫기" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "플러그인", + "description": "OmniRoute 기능을 확장하는 플러그인을 설치하고 관리합니다", + "loading": "플러그인 로드 중...", + "scanning": "검색 중...", + "scanForPlugins": "플러그인 검색", + "noPlugins": "설치된 플러그인이 없습니다", + "noPluginsDescription": "플러그인 디렉터리를 ~/.omniroute/plugins/에 배치한 후 검색을 클릭하세요.", + "activate": "활성화", + "deactivate": "비활성화", + "uninstall": "제거", + "uninstallConfirm": "플러그인 \"{name}\"을(를) 제거하시겠습니까?", + "pluginScanComplete": "플러그인 검색 완료", + "pluginScanFailed": "플러그인 검색 실패", + "activated": "{name} 활성화됨", + "deactivated": "{name} 비활성화됨", + "activateFailed": "{name} 활성화 실패", + "deactivateFailed": "{name} 비활성화 실패", + "uninstalled": "{name} 제거됨", + "uninstallFailed": "{name} 제거 실패", + "configure": "구성: {name}", + "configurePlugin": "구성", + "noConfigSettings": "이 플러그인에는 구성 가능한 설정이 없습니다.", + "saving": "저장 중...", + "saveConfiguration": "구성 저장", + "configurationSaved": "구성이 저장되었습니다", + "saveConfigurationFailed": "구성을 저장하지 못했습니다", + "pluginNotFound": "플러그인을 찾을 수 없습니다", + "version": "버전", + "author": "작성자", + "description_label": "설명", + "status": "상태", + "enabled": "활성화됨", + "disabled": "비활성화됨", "installedTab": "설치됨", "marketplaceTab": "마켓플레이스", "marketplaceUrlLabel": "사용자 지정 마켓플레이스 URL", @@ -11729,7 +11736,7 @@ "verified": "인증됨", "install": "설치", "installedFromMarketplace": "플러그인 {name}이(가) 설치되었습니다!", - "hooks": "Hooks" + "hooks": "후크" }, "quotaPlans": { "title": "플랜 및 할당량", @@ -11857,7 +11864,7 @@ "statusInvestigating": "조사 중", "serverPort": "포트", "serverConns": "연결", - "serverIntercepted": "Intercepted", + "serverIntercepted": "가로챔", "serverLastStarted": "마지막 시작", "startServer": "시작", "stopServer": "중지", @@ -12057,7 +12064,7 @@ "resumeBtn": "재개", "clearBtn": "지우기", "exportHar": ".har 내보내기", - "recordSession": "REC", + "recordSession": "녹화", "stopSession": "중지", "liveBadge": "라이브", "offlineBadge": "오프라인", @@ -12160,7 +12167,7 @@ "noRequestBody": "요청 본문이 없습니다.", "noResponseBody": "응답 본문이 없습니다.", "formatted": "포맷됨", - "raw": "Raw" + "raw": "원시 데이터" }, "cliCommon": { "concept": { @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP 에이전트", "phrase": "OmniRoute가 실행 백엔드로 생성하는 CLI (역방향 흐름)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "대부분의 사용자는 이 항목을 무시해도 됩니다. 통합에 필요한 경우에만 사용하세요.", "flow": "클라이언트 → OmniRoute → CLI 생성 (stdio/ACP) → 응답", "seeOther": "보기 →" } @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "웹훅", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "웹훅 엔드포인트를 등록, 조회, 테스트 및 제거합니다. 이벤트 구독(request.completed, request.failed, quota.exceeded 등)을 구성하고 전송 재시도를 관리합니다." }, "omni-mcp": { "name": "MCP 서버", @@ -12390,11 +12397,11 @@ "description": "핵심 OpenAI 호환 추론 엔드포인트: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank 및 Responses API. AI 에이전트를 위한 기본 통합 인터페이스입니다." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: 서브", "description": "CLI에서 OmniRoute 서버를 시작, 중지 및 재시작합니다. 데몬 모드, 포트 구성, 자동 복구, 시스템 트레이 통합 및 대시보드 열기 바로가기를 관리합니다." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: 상태", "description": "CLI에서 서버 상태, 구성 요소 상태 및 실시간 메트릭을 확인합니다. 서킷 브레이커 및 제공자 상태의 실시간 대시보드를 보려면 `health`, `health components` 및 `health watch`를 실행하십시오." }, "cli-providers": { @@ -12575,7 +12582,7 @@ "colScore": "점수", "colAvgScore": "평균 점수", "colModels": "모델", - "colType": "Type", + "colType": "유형", "filterConfiguredOnly": "구성된 항목만", "filterAvailableOnly": "사용 가능한 항목만", "filterAvailableOnlyHelp": "연결이 모두 속도 제한되었거나 할당량이 초과된 제공업체 숨기기.", @@ -12589,14 +12596,14 @@ "typeApikey": "API 키", "sortTypeFirst": "쉬운 순서대로", "sortTypeFirstHelp": "가입 난이도별로 그룹화(가입 불필요 → OAuth 로그인 → API 키)하고, 각 그룹 내에서 품질 순서 유지", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "가장 안정적인 순", + "sortByReliabilityHelp": "선택한 기간에 성공한 호출 비율을 기준으로 제공업체를 정렬합니다. 호출 수가 너무 적어 성공률을 산정할 수 없는 제공업체는 측정된 제공업체 아래에서 기존 점수 순서를 유지합니다.", "typeLegend": "가입 불필요 = 설정 없음 · OAuth 로그인 = 본인 계정으로 로그인 · API 키 = 본인 키 사용 또는 해당 제공업체의 무료 등급", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "안정성", + "colReliabilityHelp": "지난 24시간 동안 이 제공업체가 실제로 응답한 호출의 비율입니다. 대시가 표시되면 처리한 트래픽이 너무 적어 성공률을 산정할 수 없다는 의미입니다.", + "reliabilitySample": "지난 {hours}시간 동안 {requests}건의 호출 중 {successes}건 성공", + "reliabilityTooFew": "지난 {hours}시간 동안 호출이 {requests}건뿐이어서 성공률을 산정하기에 너무 적습니다", + "reliabilityNoTraffic": "지난 24시간 동안 기록된 호출이 없습니다" }, "discovery": { "title": "제공업체 탐색", @@ -12626,8 +12633,8 @@ "noAuthProvider": { "title": "인증 필요 없음", "description": "이 제공업체는 즉시 사용할 수 있습니다. 가입이나 API 키가 필요하지 않습니다.", - "accountDescription": "Ready to use — no signup needed. Add accounts for rate-limit rotation.", - "addAccount": "Add Account", + "accountDescription": "바로 사용할 수 있으며 가입이 필요하지 않습니다. 속도 제한 시 계정 순환을 사용하려면 계정을 추가하세요.", + "addAccount": "계정 추가", "accountName": "{provider} 계정 {number}", "accounts": "계정 ({count})", "adding": "추가 중...", @@ -12677,7 +12684,7 @@ "name": "이름", "score": "점수", "leaderboardEmpty": "이 범위에 아직 항목이 없습니다. OmniRoute를 사용하여 리더보드에 이름을 올려보세요!", - "profileLoadFailed": "Failed to load profile data", + "profileLoadFailed": "프로필 데이터를 불러오지 못했습니다", "levelTitles": { "beginner": "비기너", "explorer": "익스플로러", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar 후원자", + "description": "실시간 OmniRoute Radar 후원자 피드를 확인했습니다", + "criteria": "서명된 실시간 Radar 후원자 피드를 확인합니다." }, "first-token": { "name": "첫 토큰", @@ -12861,11 +12868,11 @@ "reset": "재설정", "loadFailed": "기능 플래그를 불러오지 못했습니다", "updateFailedHttp": "플래그를 업데이트하지 못했습니다: HTTP {status}", - "updateFailed": "Failed to update flag", - "restartFailedHttp": "Restart failed: HTTP {status}", - "restartFailed": "Restart failed", - "resetOverridesFailedHttp": "Failed to reset overrides: HTTP {status}", - "resetOverridesFailed": "Failed to reset overrides", + "updateFailed": "플래그를 업데이트하지 못했습니다", + "restartFailedHttp": "재시작 실패: HTTP {status}", + "restartFailed": "재시작 실패", + "resetOverridesFailedHttp": "재정의를 초기화하지 못했습니다: HTTP {status}", + "resetOverridesFailed": "오버라이드 재설정 실패", "restartRequiredCount": "{count, plural, one {#개의 변경 사항을 적용하려면} other {#개의 변경 사항을 적용하려면}} 서버를 재시작해야 합니다.", "restartRequiredDescription": "이 플래그는 프로세스가 재로드된 후에만 적용됩니다. 지금 재시작하거나 계속 편집하세요 — 대기 중인 플래그는 확인하기 전까지 대기열에 유지됩니다.", "restartServer": "서버 재시작", @@ -12948,8 +12955,8 @@ "description": "각 호환성 노드에 대해 다중 연결을 허용합니다." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "컨텍스트 창 검사 비활성화", + "description": "단일 모델에 대한 직접 요청 시 OmniRoute의 로컬 컨텍스트 창 및 최대 입력 토큰 검사를 건너뜁니다. 업스트림 제공자는 실제 제한을 계속 적용합니다. 프롬프트 압축 및 출력 토큰 한도는 계속 활성화됩니다." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "클라이언트로 전달하기 전에 Responses API 패스스루 스트림에서 내부 해설 단계 출력 항목을 제거합니다. 원시 업스트림 해설을 수신하려면 이 플래그를 비활성화하세요." @@ -12985,7 +12992,7 @@ "description": "바이트가 이미 클라이언트에 도달한 후에도 스트림 복구가 응답을 다시 요청하고 이어 붙일 수 있도록 허용합니다." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "스트림 중간 이어가기를 도구 호출에 안전하도록 개선: 도구 호출이 전송된 후에는 호출이 아직 진행 중이거나 이미 완료되었는지와 관계없이 중단된 스트림을 절대 재개하지 않으며, 전체 재시도 한도를 사용하는 대신 빈 이어가기 한 번 후 중지합니다." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "스트림이 유용한 프레임을 보내기 전에 닫히고 같은 연결에서의 제한된 재시도도 소진되면 형제 연결로 한 번만 페일오버합니다. 사용할 수 있는 형제 연결이 없으면 원래의 early-EOF 오류를 반환합니다. 끄기: 재시도 후 early-EOF는 그대로 종료로 처리됩니다." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "스킬 샌드박스에서 네트워크 액세스를 활성화합니다." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "서버 소유 도구 루프", + "description": "모델이 클라이언트에서 사용할 수 있는 응답을 반환할 때까지 스트리밍이 아닌 서버 소유 도구 호출을 계속합니다." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After 출처", + "description": "집계된 429/503 사용 불가 응답에서 구체적인 향후 재시도 시간을 알 수 없는 경우 인위적인 1초 값을 보내는 대신 Retry-After를 생략하고, error.retry_after_provenance를 추가하며, 콤보 드레인 경로에서 서술형 재시도 힌트를 읽습니다." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "보호된 우선순위 인프라 중단을 502로 처리", + "description": "할당량 전용 폴백 우선순위 대상이 할당량 문제가 아님을 입증할 수 있는 원인, 즉 열린 공급자 회로 차단기 또는 예측적 지연 시간 건너뛰기로 인해 콤보를 중단하는 경우 503 대신 502로 응답합니다." } } }, @@ -13061,48 +13072,48 @@ "description": "의 라우팅 동작, 상태, 할당량, 런타임 지표 및 최근 결정에 대한 중앙 읽기 전용 보기입니다.", "refresh": "새로고침", "editInCombos": "콤보에서 편집", - "requests": "Requests", - "success": "Success", - "latency": "Latency", - "quota": "Quota", + "requests": "요청", + "success": "성공", + "latency": "지연 시간", + "quota": "할당량", "rangeWindow": "{range} 기간", - "runtimeHealthBlend": "runtime/health blend", - "averageResponseTime": "average response time", - "worstQuota": "Worst quota", - "providerAccountTelemetry": "provider/account telemetry", - "overview": "Overview", - "overviewDescription": "Strategy, runtime status and control links for this combo.", - "strategy": "Strategy", - "targets": "Targets", - "providers": "Providers", + "runtimeHealthBlend": "런타임/상태 혼합", + "averageResponseTime": "평균 응답 시간", + "worstQuota": "최저 할당량", + "providerAccountTelemetry": "제공자/계정 텔레메트리", + "overview": "개요", + "overviewDescription": "이 조합의 전략, 런타임 상태 및 제어 링크입니다.", + "strategy": "전략", + "targets": "대상", + "providers": "제공자", "targetCounts": "{configured}개 구성됨 · {resolved}개 확인됨", - "healthReasons": "Health reasons", + "healthReasons": "상태 원인", "healthReason": { - "noRecentTraffic": "No recent combo traffic", - "lowSuccessRate": "Low success rate", - "successBelowTarget": "Success rate below target", - "highFallbackRate": "High fallback rate", - "elevatedFallbackRate": "Elevated fallback rate", - "quotaExhausted": "At least one quota is exhausted", - "quotaNearlyExhausted": "Quota is nearly exhausted", - "quotaGettingLow": "Quota is getting low", - "trafficHighlySkewed": "Traffic distribution is highly skewed", - "comboHealthy": "Combo looks healthy" + "noRecentTraffic": "최근 조합 트래픽 없음", + "lowSuccessRate": "낮은 성공률", + "successBelowTarget": "성공률이 목표 미만임", + "highFallbackRate": "높은 대체 처리율", + "elevatedFallbackRate": "대체 처리율 상승", + "quotaExhausted": "하나 이상의 할당량이 소진됨", + "quotaNearlyExhausted": "할당량이 거의 소진됨", + "quotaGettingLow": "할당량이 부족해지고 있음", + "trafficHighlySkewed": "트래픽 분포가 심하게 편중됨", + "comboHealthy": "조합 상태가 양호함" }, - "configuredTargets": "Configured targets", - "configuredTargetsDescription": "The saved combo steps, enriched with matching health data when available.", - "noConfiguredTargets": "No targets configured.", - "runtimeConfig": "Runtime config", - "runtimeConfigDescription": "Selected advanced settings for this combo.", - "noRuntimeConfig": "No custom runtime config.", - "resolvedTargets": "Resolved runtime targets", - "resolvedTargetsDescription": "Flattened targets after nested combo resolution and target-level metrics.", - "noResolvedTargetHealth": "No resolved target health yet.", - "quotaDistribution": "Quota and distribution", - "noQuotaSnapshots": "No quota snapshots for this combo window.", - "usageSkew": "Usage skew", - "recentDecisions": "Recent routing decisions", - "recentDecisionsDescription": "Recent call logs filtered by this combo name. Open Analytics for full explainability.", + "configuredTargets": "구성된 대상", + "configuredTargetsDescription": "저장된 조합 단계이며, 가능한 경우 일치하는 상태 데이터가 추가됩니다.", + "noConfiguredTargets": "구성된 대상이 없습니다.", + "runtimeConfig": "런타임 구성", + "runtimeConfigDescription": "이 조합에 대해 선택된 고급 설정입니다.", + "noRuntimeConfig": "사용자 지정 런타임 구성이 없습니다.", + "resolvedTargets": "확인된 런타임 대상", + "resolvedTargetsDescription": "중첩된 조합을 확인한 후 평탄화된 대상 및 대상 수준 측정항목입니다.", + "noResolvedTargetHealth": "확인된 대상 상태가 아직 없습니다.", + "quotaDistribution": "할당량 및 분포", + "noQuotaSnapshots": "이 조합 기간에 대한 할당량 스냅샷이 없습니다.", + "usageSkew": "사용량 편중", + "recentDecisions": "최근 라우팅 결정", + "recentDecisionsDescription": "이 조합 이름으로 필터링된 최근 호출 로그입니다. 전체 설명을 보려면 Analytics를 여세요.", "noRecentLogs": "최근 콤보 호출 로그를 찾을 수 없습니다.", "quickLinks": "빠른 링크", "comboHealth": "콤보 상태", @@ -13171,7 +13182,7 @@ "segmentHint": "각 세그먼트 = 하나의 무료 풀 · 풀 중복 제거, 정직한 집계 (부풀려진 요율 제한 한도 없음).", "boost": "일회성 $10 OpenRouter 충전으로 월 약 {tokens}개 추가 잠금 해제 (일일 50 → 1000회 요청)", "uncapped": "영구 무료, 공개된 제한 없음 (요율 제한됨) — 헤드라인에 집계되지 않는 실제 액세스:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "지역 신원 확인(예: 중국 본토 실명 인증)을 거치면 월 약 {tokens}개 추가 — 실제 할당량이며, 표시된 수치에는 포함되지 않음:", "tosRestricted": "{count, plural, one {#개 모델} other {#개 모델}}이 이용약관(ToS) 제한으로 표시됨 — 귀하가 결정하세요", "provider": "제공업체", "model": "모델", @@ -13270,80 +13281,80 @@ "viewFullHistory": "GitHub에서 전체 기록 보기" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "추론 라우팅 정책", + "apiKeyTitle": "이 API 키의 추론 라우팅", + "subtitle": "클라이언트 지원 없이도 모델과 추론 수준을 재라우팅합니다. 일치하는 규칙이 없으면 요청은 변경되지 않습니다.", + "loadError": "추론 규칙을 불러올 수 없습니다.", + "saveError": "규칙이 유효하지 않거나 저장할 수 없습니다.", + "saved": "추론 규칙이 저장되었습니다.", + "deleteConfirm": "이 추론 규칙을 삭제하시겠습니까?", + "deleteError": "추론 규칙을 삭제할 수 없습니다.", + "empty": "구성된 일치 추론 규칙이 없습니다.", + "all": "모두", + "any": "하나라도", + "enabled": "활성화됨", + "disabled": "비활성화됨", + "filterSearch": "규칙 검색", + "filterScope": "범위로 필터링", + "filterStatus": "상태로 필터링", + "allModels": "모든 모델", + "keepModel": "모델 유지", + "otherModel": "다른 모델", + "combo": "조합", + "priorityShort": "우선순위 {value}", + "toggleAria": "{name} 활성화", + "edit": "편집", + "delete": "삭제", + "name": "이름", + "description": "설명", + "scopeLabel": "범위", + "apiKey": "API 키", + "sourceCombo": "소스 조합", + "connection": "연결", + "sourceModel": "소스 모델 또는 와일드카드", + "sourceModelOptional": "비워 두면 모든 모델", + "sourceModelExample": "예: gpt-5*", + "sourceEffort": "소스 추론 수준", + "missing": "지정되지 않음", + "signalOnly": "비이산형 추론 신호", + "requestTags": "요청 태그", + "requestTagsExample": "코딩, 내부", + "tagMode": "태그 일치", + "effortMode": "작업량 모드", + "targetEffort": "목표 작업량", + "routingTarget": "라우팅 대상", + "targetModel": "대상 모델", + "targetCombo": "대상 조합", + "budgetAction": "추론 예산", + "budgetTokens": "예산 토큰", + "priority": "우선순위", + "saveChanges": "변경 사항 저장", + "add": "규칙 추가", + "cancel": "취소", + "simulateTitle": "규칙 시뮬레이션", + "model": "모델", + "effort": "작업량", + "transport": "전송 방식", + "simulate": "업스트림 없이 시뮬레이션", + "extendedComboWarning": "라우팅 중 각 조합 대상에 대해 Max/Ultra가 개별적으로 검증됩니다.", + "extendedUnknownWarning": "Max/Ultra 지원 여부를 확인하려면 대상 모델을 입력하세요.", + "extendedUnsupportedWarning": "Max/Ultra는 적합한 Codex GPT-5.6 모델에서만 지원되는 것으로 알려져 있습니다. 알 수 없는 사용자 지정 모델은 서버에서 경고와 함께 허용됩니다.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "전역", + "apiKey": "API 키", + "combo": "조합", + "model": "모델", + "connection": "연결" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "클라이언트 설정 상속", + "default": "기본값 사용", + "force": "강제 적용" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "유지", + "remove": "제거", + "set": "고정값 설정" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "실시간", "tierCommunity": "커뮤니티 (30일 지연)", "activateTitle": "레이더 활성화", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Community 액세스와 실시간 액세스를 비교하고 설치 환경에서 어떤 정보를 주고받는지 확인한 다음 Radar 활성화 방법을 선택하세요.", + "accessScaleTitle": "활성화하기 전에 Radar 액세스 알아보기", + "accessScaleIntro": "사용자가 동의하기 전까지 Radar는 네트워크 통신을 하지 않습니다. 다음 규칙을 검토한 후 Community 액세스를 선택하거나 개인 후원자 키를 활성화하세요.", + "accessCommunityRule": "Community — 키 불필요: 30일 지연된 전체 카탈로그를 이용할 수 있습니다.", + "accessSingleUseRule": "별표 + 팔로우 — GitHub OAuth에서 두 조건이 모두 확인되면 GitHub 계정에 실시간 카탈로그 1회 조회 권한이 부여되며, 이후 액세스는 Community로 돌아갑니다. 이 일회성 액세스는 해당 계정에 다시 발급할 수 없습니다.", + "accessContributorRule": "기여자 — 병합된 PR, 커밋 및 코드 줄 수는 주간 순위를 정하는 데만 사용됩니다. 상위 10명은 365일, 11~100위는 90일의 액세스 권한을 받으며, 상위 100위 밖의 기여자는 PR 수와 관계없이 권한을 받지 못합니다. 순위에서 벗어나더라도 이미 부여된 기간은 단축되지 않습니다.", + "accessSupporterRule": "후원자 — 일회성 구매로 자동 갱신 없이 6개월, 1년 또는 평생 이용 권한이 부여됩니다. 구매, 기부, 기여자 기간 및 수동 부여 기간은 누적되며, 평생 이용 권한이 항상 우선합니다.", + "accessUseTitle": "개인 사용, 복구 및 검토", + "accessInstallationRule": "개인 라이선스 — 한 번에 하나의 활성 설치에서만 키를 사용하세요. OmniRoute는 하드웨어 지문을 수집하지 않습니다. 복구 시 만료일을 초기화하지 않고 분실한 키를 폐기한 후 새 키로 교체합니다.", + "accessAbuseRule": "악용 검토 — 24시간 내에 서로 다른 네 번째 IP가 감지되면 수동 검토 플래그만 생성되며, 키를 자동으로 차단하거나 폐기하지 않습니다.", + "accessOffersRule": "현재 제공 중인 혜택은 수동으로 선별되며 변경되거나 만료될 수 있습니다.", + "privacyTitle": "Radar가 주고받는 정보", + "privacyDownloadsRule": "다운로드 — 설치된 OmniRoute는 암호화 방식으로 서명된 카탈로그 및 추천 메타데이터를 수신합니다. 유효한 활성 키가 있으면 서명된 혜택과 Intel도 이용할 수 있습니다.", + "privacySendsRule": "전송 — 서버 측 동기화는 후원자 키를 Bearer 토큰으로 전송하며, HTTPS 인프라는 연결 IP를 수신합니다. 피드 요청 집계 시 두 값 모두 원시 형태로 저장하지 않습니다. 대신 키 해시, 집계된 사용량, 악용 검토를 위해 매일 교체되는 잘린 IP HMAC을 보관합니다.", + "privacyNeverRule": "수집하지 않는 정보 — 프롬프트, 응답, 대화, 제공업체 자격 증명, 모델 트래픽, 가동 시간, 지연 시간 및 로컬 제공업체 구성은 절대 Radar로 전송되지 않습니다.", + "activateButton": "Community 활성화", "activating": "활성화 중...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "이미 후원자 키가 있으신가요?", + "keyInvalidFormatError": "키 형식이 잘못되었습니다. \"omr_\"로 시작하고 그 뒤에 16진수 문자 40개가 와야 합니다.", + "activateWithKeyButton": "후원자 활성화", + "changeKeyButton": "키 변경", + "claimSectionTitle": "아직 후원자 키가 없으신가요?", + "contributorButton": "저는 기여자입니다", + "contributorHint": "GitHub OAuth는 현재 주간 순위를 확인합니다. 상위 10명에게는 365일, 11~100위에게는 90일이 제공됩니다. PR 수만으로는 상위 100위 밖에서 액세스 권한을 받을 수 없습니다.", + "supporterButton": "프로젝트 후원하기", + "supporterHint": "6개월, 1년 및 평생 일회성 옵션은 자동으로 갱신되지 않습니다. 적용 가능한 기간은 누적되며 평생 옵션이 우선합니다.", "colProvider": "제공자", "colModel": "모델", "colQuota": "할당량", + "colLimits": "요청 한도", + "trainsOnPrompts": "프롬프트를 학습에 사용", + "trainsOnPromptsHelp": "이 제공업체의 약관에는 사용자가 전송한 프롬프트를 학습에 사용할 수 있다고 명시되어 있습니다. 이 배지가 없는 모델은 학습에 사용하지 않는다고 명시했거나 관련 내용을 문서화하지 않은 경우입니다. 명시되지 않았다고 해서 사용하지 않는다는 보장은 없습니다.", + "limitsUnknownHelp": "Radar 피드에서 보고된 한도만 표시됩니다. 이 항목에는 공개된 한도가 없습니다.", + "contextUnknownHelp": "이 항목의 컨텍스트 창 크기는 알 수 없습니다.", + "capabilityUnknownHelp": "피드에서 보고되지 않은 기능입니다.", "colContext": "컨텍스트", "colCapabilities": "기능", "colTos": "ToS 위험", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "새로 만들기", "setupGuide": "설정 가이드", "disabledByFeed": "레이더 피드에 의해 비활성화됨", "capTools": "도구", "capVision": "비전", "capThinking": "사고", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "카탈로그", + "freeCreditsTab": "무료 크레딧", + "freeCreditsSubtitle": "Radar가 추적하는 제공업체의 추천 링크 — 이 링크를 사용해도 추가 비용은 없으며 OmniRoute 후원에 도움이 됩니다.", + "fixedLinksEmpty": "아직 사용할 수 있는 추천 링크가 없습니다. 업데이트를 확인하려면 Radar를 동기화하세요.", + "requiredActionLabel": "이용 방법:", + "claimButton": "크레딧 받기", + "campaignsTitle": "기간 한정 캠페인", + "campaignsEmpty": "현재 진행 중인 캠페인이 없습니다. 나중에 다시 확인하세요.", + "campaignsUpsellCommunity": "기간 한정 캠페인은 후원자를 위한 추가 혜택입니다. 이 페이지의 고정 링크에 있는 모든 항목은 누구나 계속 무료로 이용할 수 있습니다.", + "campaignsValidUntil": "{date}까지 유효", + "colActions": "작업", + "localBadge": "로컬", + "editModel": "편집", + "saveModel": "저장", + "cancelEdit": "취소", + "resetModel": "로컬 변경 사항 초기화", + "hideModel": "숨기기", + "restoreModel": "복원", + "hiddenModelsTitle": "숨겨진 모델", + "modelDisplayName": "로컬 표시 이름", + "modelEnabled": "로컬에서 활성화됨", + "localStateSaveFailed": "로컬 Radar 설정을 저장하지 못했습니다", + "guidedCombos": "안내형 조합", + "offers": "혜택", + "intel": "인텔리전스" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar 안내형 조합", + "subtitle": "Radar가 선별한 동급 무료 모델로 우선순위 폴백을 생성합니다.", + "backToRadar": "Radar로 돌아가기", + "loading": "조합 추천을 불러오는 중...", + "familyLabel": "모델 제품군", + "modelsLabel": "우선순위", + "strategyReason": "우선순위는 정기적으로 제공되는 무료 사용량이 가장 많은 모델을 먼저 사용한 후, 활성화된 제공업체로 폴백합니다.", + "generateButton": "조합 생성", + "generating": "생성 중...", + "alreadyCreated": "이미 생성됨", + "created": "조합이 생성되었습니다", + "noSuggestions": "현재 두 곳 이상의 제공업체에 활성 연결이 있는 적격 모델 제품군이 없습니다.", + "catalogRequired": "선별된 모델 제품군을 불러오려면 먼저 Radar 카탈로그를 동기화하세요.", + "loadFailed": "Radar 조합 추천을 불러오지 못했습니다.", + "createFailed": "조합을 생성하지 못했습니다. 제공업체 연결을 확인한 후 다시 시도하세요." }, "radarSetupPage": { "title": "제공자 설정", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "연결 복원력", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "연결은 자동으로 복구됩니다", + "reassuranceDetail": "일반적으로 별도의 조치가 필요하지 않습니다. OmniRoute는 오류가 발생한 연결을 일시적으로 중단한 후 안전하게 다시 시도합니다.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "요청을 보낼 수 있음", + "coolingDown": "곧 다시 시도", + "lockedOut": "확인 필요" }, "table": { "status": "상태", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "대상 모델에 필수 기능(비전, 도구, 구조화된 출력, 컨텍스트 창)이 부족할 경우 요청을 발송 전에 거부합니다. 콤보 레이어 호환성 필터를 우회하는 직접 단일 공급자 요청을 보호합니다.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "단일 모델로 직접 요청할 때 OmniRoute의 로컬 컨텍스트 창 및 최대 입력 토큰 검사를 건너뜁니다. 업스트림 제공업체는 여전히 실제 한도를 적용합니다. 프롬프트 압축과 출력 토큰 상한은 계속 적용됩니다.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "검색 통계와 최근 검색에는 현재 연결이 활성화된 공급자만 포함됩니다(duckduckgo-free와 같은 키가 필요 없는 공급자는 항상 포함됨). 끄면 공급자 ID가 있는 보존된 모든 검색 행을 유지합니다.", "publicSystem": { "notFound": { "title": "페이지를 찾을 수 없습니다", @@ -13853,7 +13864,7 @@ "authorizeImportant": "중요: 먼저 trae.ai 브라우저에서 로그인해야 합니다. 인증 페이지는 기존 세션만 확인하며 — 로그인할 수 없습니다. \"로그인 실패\"가 표시되면 \"solo.trae.ai 열기\"를 클릭하고 로그인한 후 다시 여기로 돌아오세요.", "waitingForAuthorization": "trae.ai를 기다리는 중…", "authorizeWithBrowser": "브라우저로 인증하기", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai 열기", "orPasteManually": "또는 토큰을 수동으로 붙여넣기", "manualInstructions": "solo.trae.ai에 로그인하고 DevTools → Network를 열고, 임의의 채팅 메시지를 보내고 Authorization: Cloud-IDE-JWT {tokenPlaceholder} 요청 헤더에서 JWT를 복사하세요. JWT 수명은 약 14일입니다. 선택적 신원 필드는 동일한 요청 본문의 common_params에서 가져옵니다.", "accessTokenLabel": "액세스 토큰 (Cloud-IDE-JWT)", @@ -14070,11 +14081,11 @@ "actionApprove": "계획 승인", "actionCancel": "취소", "actionSeeInGraph": "그래프에서 보기", + "actionRepeat": "반복", "actionDone": "작업이 적용됨", "actionFailed": "작업 실패: {error}", "detailFailed": "세부정보를 불러오지 못했습니다: {error}", "mirroredInA2A": "A2A에 미러링됨", - "actionRepeat": "반복", "repeatConfirm": "확인하려면 다시 클릭하세요", "repeatDone": "새 실행이 생성되었습니다", "repeatUnavailable": "원본 입력을 사용할 수 없습니다" @@ -14088,57 +14099,57 @@ "networkError": "네트워크 오류 — 공급자 노출 설정을 업데이트할 수 없습니다." }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "후원자 혜택", + "subtitle": "Radar에서 제공하는 공식 할인, 크레딧, 체험판 및 검토된 파트너 혜택입니다.", + "backToRadar": "Radar로 돌아가기", + "loading": "혜택을 불러오는 중...", + "refresh": "혜택 새로고침", + "refreshing": "새로고침 중...", + "loadFailed": "혜택을 새로고칠 수 없습니다. 마지막으로 확인된 로컬 캐시를 유지합니다.", + "empty": "현재 이용 가능한 활성 혜택이 없습니다.", + "keyRequiredTitle": "서포터 키가 필요합니다", + "keyRequiredDescription": "혜택은 실시간 Radar 혜택입니다. Radar 화면에서 기존 서포터 키를 추가하거나, 기여자 상태를 인증하거나, 프로젝트를 후원하여 키를 받으세요.", + "contributorButton": "저는 기여자입니다", + "supporterButton": "프로젝트 후원하기", + "partnerBadge": "파트너", + "officialBadge": "공식", + "conditionsLabel": "조건:", + "validUntil": "{date}까지 유효", + "noExpiry": "공지된 만료일 없음", + "openOffer": "혜택 보기", + "trialDays": "{days, plural, one {#일} other {#일}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Radar 인텔리전스", + "subtitle": "Radar 자체 ELO 순위 및 카탈로그 변동 정보입니다.", + "backToRadar": "Radar로 돌아가기", + "loading": "인텔리전스를 불러오는 중...", + "refresh": "인텔리전스 새로고침", + "syncing": "새로고침 중...", + "loadFailed": "인텔리전스를 새로고칠 수 없습니다. 마지막으로 확인된 로컬 캐시를 유지합니다.", + "empty": "아직 확인된 인텔리전스 스냅샷이 없습니다.", + "supporterBadge": "Radar 서포터", + "methodology": "방법론", + "eloMethod": "ELO, 초깃값 {initial}, K={factor}", + "freshness": "카탈로그 최신도", + "ageDays": "{days, plural, one {#일 경과} other {#일 경과}}", + "trend": "카탈로그 추세", + "modelDelta": "모델 {current}개, +{added} / -{removed}", + "ranking": "모델 순위", + "noRankings": "아직 확인된 비교 결과가 없습니다.", + "model": "모델", + "category": "카테고리", + "rating": "레이팅", + "matches": "매치", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "최신", + "aging": "노후화 중", + "stale": "오래됨" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "성장 중", + "stable": "안정적", + "shrinking": "축소 중" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "요청이 공급자 컨텍스트 창을 초과했습니다" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference는 OmniRoute의 오픈 소스 친구입니다", + "description": "하나의 OpenAI 호환 엔드포인트를 통해 수십 개의 최첨단 모델을 재판매하는 비용 우선순위 게이트웨이로, 각 요청을 이용 가능한 제공업체 중 가장 저렴한 곳으로 라우팅하며 정가를 초과하지 않습니다.", + "cta": "API 키 받기", + "partnerLinkNote": "파트너 링크", + "dismissAriaLabel": "닫기" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models 카탈로그에서 사고 수준 변형(예: -low, -medium, -high)이 생성되지 않도록 설정합니다." } diff --git a/src/i18n/messages/lt.json b/src/i18n/messages/lt.json index c7c6f53711..d0a8f3b3b6 100644 --- a/src/i18n/messages/lt.json +++ b/src/i18n/messages/lt.json @@ -124,8 +124,8 @@ "crypto": "Kriptografija", "hours": "Valandos", "selfsigned": "Savarankiškai pasirašytas", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", + "proxy_id": "Tarpinio serverio ID", + "proxyId": "Tarpinio serverio ID", "connectionId": "Ryšio ID", "resolveConnectionId": "Nustatyti ryšio ID", "resolve_connection_id": "Nustatyti ryšio ID", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Skelbti claude/<provider>/<model> atspindžio ID per /v1/models, kad Claude Code šliuzo modelių aptikimas rodytų ir ne-Claude modelius. Įspėjimas: įjungus visuotinai, katalogo įrašų skaičius padvigubėja visiems klientams.", "featureFlagNoThinkingAliasEnabledDescription": "Pagrindinis no-think/<provider>/<model> šliuzo aliasų jungiklis. Įjungta (numatyta): /v1/models skelbia „no-thinking“ variantą kiekvienam tinkamam mąstymo galimybę turinčiam Claude modeliui, o užklausoje pateiktas no-think/ ID nukreipiamas atgal į tikrąjį modelį su slopintu samprotavimu. Išjungta: variantai nėra skelbiami, o no-think/ ID laikomas kaip bet koks kitas nežinomas modelio ID. Kol tai įjungta, vis tiek taikomas kiekvieno modelio ModelSpec.noThinkingAlias sutikimo/atsisakymo nustatymas.", "featureFlagChatVirtualLanesEnabledDescription": "Įjungti kiekvienam nuomotojui pritaikomas adaptyvias virtualias priėmimo juostas teikėjų siuntimui (#9654): vieno nuomotojo srautas nebesukelia 503 klaidos kitam. Aplinkos kintamasis OMNIROUTE_CHAT_VIRTUAL_LANES turi pirmenybę prieš šį skydelio nustatymą; pakeitimai įsigalioja po serverio paleidimo iš naujo.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Teikėjų puslapiuose valdymo skydelyje ženklelį „Nemokama“ rodyti tik pagal tuos požymius, kuriuos teikėjas palaiko — nebenaudojama rodomo pavadinimo euristika, ne loginio tipo nemokamumo laukai ir :free priesagos registruotiems teikėjams, neturintiems dokumentuoto nemokamo plano. Išjungus taikoma ankstesnė ženklelio taisyklė.", + "featureFlagProxySkipRecentlyFailedDescription": "Tarpinių serverių telkiniai ir kiekvienai paskyrai taikoma opencode rotacija pakartotinai nebenaudoja ką tik nesuveikusio tarpinio serverio (atmestas TCP patikrinimas arba per jį gautas 429 atsakymas) tam procesui nustatytą laikotarpį, kuris po kiekvieno pasikartojimo padvigubėja iki nustatytos ribos. Tarpinio serverio būsena neįrašoma; atidėjus visus kandidatus, pasirinkimas nesikeičia. Pagal numatytąsias nuostatas išjungta: pasirinkimo tvarka yra lygiai tokia pati kaip įprastos rotacijos.", + "featureFlagProxyPoolEgressObservationDescription": "Ataskaitų srityje po tarpinių serverių telkiniu rodyti, kiek stebėtų išeinančių IP adresų per pastarąsias 24 val. aptarnavo jo narius, kiek ryšių juos naudojo ir didžiausią už vieno IP adreso matytą skaičių. Tik skaitymui, apskaičiuojama pagal tarpinių serverių žurnalą ir niekada nenaudojama maršrutizavimui. Pagal numatytąsias nuostatas išjungta: telkinio redagavimo priemonė nesikeičia, o stebėjimo maršrutas grąžina null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Atliekant tarpinių serverių būklės patikrą leisti paskirties vietos atmestam patikrinimui (401/403/429: tarpinis serveris persiuntė užklausą, o paskirties vieta atmetė šį išeinantį IP adresą) iš naujo nustatyti tarpinio serverio nuoseklių nesėkmių seką, kaip ir aptarnauto patikrinimo atveju. Pagal numatytąsias nuostatas išjungta: atmetimas lieka neutralus ir išsaugo seką. 5xx atsakymas abiem atvejais lieka neapibrėžtas, o atmetimas niekada nepašalina, neišjungia ir iš naujo nesuaktyvina tarpinio serverio.", "sidebar": { "home": "Pradžia", "dashboard": "Suvestinė", @@ -1318,7 +1318,7 @@ "noResults": "Rezultatų nerasta" }, "webhooks": { - "title": "Webhooks", + "title": "Webhook’ai", "description": "Konfigūruoti HTTP grįžtamuosius skambučius sistemos įvykiams.", "configuredWebhooks": "Sukonfigūruoti Webhooks", "configuredWebhooksDesc": "Tvarkyti pristatymo galutinius punktus, prenumeruotus įvykius, būseną ir testinius siuntimus.", @@ -1429,13 +1429,13 @@ "secretKeyHint": "Naudojamas užklausos antraštei pasirašyti autentifikacijai." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "„Discord“ webhook’o URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "Webhook URL, nukopijuotas iš jūsų Discord kanalo integracijos nustatymų.", "tutorial": "Kaip sukurti Discord webhook:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "„Slack“ webhook’o URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "Webhook URL, nukopijuotas iš jūsų Slack Incoming Webhooks integracijos.", "tutorial": "Kaip sukurti Slack webhook:" @@ -1725,7 +1725,7 @@ "costs": "Sąnaudos", "health": "Būsena", "runtime": "Vykdymo laikas", - "webhooks": "Webhooks", + "webhooks": "Webhook’ai", "home": "Pradžia", "activity": "Veikla", "agentSkills": "AgentSkills", @@ -1963,11 +1963,11 @@ "rangeCancel": "Atšaukti", "rangeApply": "Taikyti", "rangeErrorInvalid": "Pradžia turi būti anksčiau nei pabaiga", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1 d.", + "period7D": "7 d.", + "period30D": "30 d.", + "period90D": "90 d.", + "periodYTD": "Nuo metų pradžios", "periodAll": "Visi", "totalTokens": "Iš viso žetonų", "inputTokens": "Įvesties žetonai", @@ -2210,7 +2210,7 @@ "combo": "Kombinacija", "routeStep": "Žingsnis", "tokens": "Žetonai", - "notAvailable": "n/a", + "notAvailable": "netaikoma", "routeTokenCounts": "{input} įvestis · {output} išvestis", "routeEvidence": "Įrodymai", "routeFactors": "Maršruto parinkimo veiksniai", @@ -4018,9 +4018,9 @@ "messagesApiDesc": "Natyvus Anthropic Messages API formatas Claude suderintiems tiekėjams", "imageEdits": "Vaizdų redagavimas", "imageEditsDesc": "Redaguokite ir keiskite esamus vaizdus naudodami AI (inpainting, outpainting, variacijos)", - "batchApi": "Batch API", + "batchApi": "Paketinis API", "batchApiDesc": "Apdorokite dideles užklausų partijas asinchroniškai (suderinama su OpenAI)", - "filesApi": "Files API", + "filesApi": "Failų API", "filesApiDesc": "Įkelkite ir tvarkykite failus partiniam apdorojimui", "videoGeneration": "Vaizdo generavimas", "videoDesc": "Generuokite vaizdo įrašus naudodami AI modelius, tokius kaip ComfyUI ir Stable Video Diffusion.", @@ -4139,7 +4139,7 @@ "badgeInternalTooltip": "Tai vidinis sistemos galutinis punktas", "tierAll": "Visi", "tierAuth": "Autentifikuota", - "tierLoopback": "Loopback", + "tierLoopback": "Grįžtamasis ryšys", "tierAlwaysProtected": "Visada saugoma", "tierPublic": "Vieša", "hideInternal": "Slėpti vidinius", @@ -4612,7 +4612,7 @@ "popularDefaultsLabel": "Pagal numatytuosius nustatymus populiaru pasirinktam tiekėjui:", "onMode": "ĮJ.", "offMode": "IŠJ.", - "autoMode": "AUTO", + "autoMode": "AUTOMATIŠKAI", "installSkillButton": "Įdiegti įgūdį", "installSkillModalTitle": "Įdiegti įgūdį", "installJsonPlaceholder": "Įklijuokite įgūdžio manifesto JSON čia...", @@ -5801,10 +5801,10 @@ "ccCompatibleSummarizeThinkingDescription": "Prideda `display: \"summarized\"` prie CC Compatible mąstymo užklausų, kad palaikomi Claude modeliai srautu perduotų matomus mąstymo pokyčius.", "ccCompatibleSummarizeThinkingLabel": "Įjungti apibendrinto mąstymo rodymą", "ccCompatibleDetailsTitle": "Išsami su CC suderinamo perdavimo serverio informacija", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "Suderinama su CC", "ccCompatibleModelsDescription": "Su CC suderinami perdavimo serveriai nepateikia modelių sąrašo. Pridėkite Claude modelių ID, kuriuos priima jūsų perdavimo serveris.", "ccCompatibleNameHint": "Rodomas šio tik Claude Code skirto perdavimo serverio pavadinimas.", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay gamybinė aplinka", "ccCompatiblePrefixHint": "Naudojamas modelių alternatyviuose pavadinimuose, pvz., prefix/model-id.", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Naudokite šį paslaugų teikėją tik perdavimo serveriams, kurie skirti išimtinai Claude Code klientams. OmniRoute perrašo visas gaunamas užklausas į su Claude Code suderinamą perdavimo formatą, kad tie serveriai jas priimtų. Jei norite naudoti tik Claude Code CLI arba nesate tikri, ką reiškia šis perdavimo serverio tipas, vietoje jo naudokite įprastą su Anthropic suderinamą paslaugų teikėją.", @@ -6367,15 +6367,15 @@ "checkWebToken": "Patikrinti prieigos raktą", "huggingchatLabel": "HuggingChat (nemokama)", "huggingchatDesc": "Nemokamas LLM pokalbis per huggingface.co/chat", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe žiniatinklis", "poeWebDesc": "Kelių modelių pokalbis per poe.com", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice žiniatinklis", "veniceWebDesc": "Į privatumą orientuotas DI pokalbis", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel žiniatinklis", "v0VercelWebDesc": "DI kodo generavimas per v0.dev", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi žiniatinklis", "kimiWebDesc": "Moonshot AI pokalbis vartotojams per www.kimi.com (tarptautinė versija, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola žiniatinklis", "doubaoWebDesc": "ByteDance DI pokalbis per dola.com", "overrideBaseUrlAdvanced": "Išplėstiniai nustatymai: pakeisti bazinį URL", "overrideBaseUrlHint": "Išplėstiniai nustatymai: nukreipkite šį integruotą teikėją į pasirinktinį galinį tašką. Norėdami naudoti numatytąjį, palikite lauką tuščią.", @@ -7380,7 +7380,7 @@ "customPricingNote": "Galite pakeisti numatytuosius konkrečių modelių įkainius. Pasirinktiniai pakeitimai turi pirmenybę prieš automatiškai aptiktus įkainius.", "editPricing": "Redaguoti įkainius", "viewFullDetails": "Peržiūrėti visą informaciją", - "themeCoral": "Coral", + "themeCoral": "Koralų", "adaptiveVolumeRouting": "Adaptyvus maršruto parinkimas pagal apimtį", "adaptiveVolumeRoutingDesc": "Dinamiškai keiskite ryšių mastą pagal naudingosios apkrovos apimtį ir pralaidumo apkrovą.", "lkgpToggleTitle": "Paskutinis sėkmingai naudotas teikėjas (LKGP)", @@ -7953,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Importuoti paskyras", "payloadRulesTitle": "Duomenų taisyklės", "payloadRulesDesc": "Konfigūruokite užklausos duomenų pakeitimus pagal modelį ir protokolą. Pakeitimai išsaugomi nustatymuose ir iš karto po išsaugojimo dinamiškai įkeliami į vykdymo aplinką.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "numatytasis", "payloadRuleDefaultDesc": "Parametrai taikomi tik tada, kai siunčiamuose duomenyse nėra tikslinio kelio.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "perrašymas", "payloadRuleOverrideDesc": "Priverstinai nustato duomenų reikšmes ir pakeičia viską, kas jau yra tame kelyje.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "filtras", "payloadRuleFilterDesc": "Pašalina užblokuotus parametrus iš duomenų prieš išsiunčiant užklausą išorinei paslaugai.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Veikia kaip default, tačiau, kai įmanoma, tekstinės reikšmės pirmiausia analizuojamos kaip JSON. Išsaugant taip pat priimamas senasis įvesties alternatyvusis pavadinimas default-raw.", @@ -9472,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "Nemokamas", - "tierLite": "Lite", + "tierLite": "Paprastoji", "tierUnknown": "Nežinoma", "statTotal": "Iš viso", "statCritical": "Kritinė būklė", @@ -10783,7 +10783,7 @@ "saveConnection": "Išsaugoti ryšį", "gheDescription": "Įveskite savo GitHub Enterprise egzemplioriaus pagrindinį URL (pvz., https://ghe.yourcompany.com).", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "GitHub Enterprise URL adresas", "gheUrlRequired": "GitHub Enterprise URL yra privalomas", "gitlabDuoSetupTitle": "GitLab Duo OAuth sąranka", "gitlabDuoSetupMessage": "GitLab Duo OAuth nesukonfigūruotas. Užregistruokite OAuth programą adresu {applicationsUrl}, nurodydami peradresavimo URI {redirectUri} ir aprėptis „{scopes}“, tada nustatykite {clientIdEnv} (ir pasirinktinai {clientSecretEnv}) bei paleiskite iš naujo.", @@ -10968,9 +10968,9 @@ "strategyLatency": "Optimizuota pagal delsą", "poolMembersLabel": "Telkinio nariai ({count})", "poolNoMembers": "Šiame telkinyje dar nėra tarpinių serverių.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "Panaudota {exits, plural, one {# išėjimo IP} few {# išėjimo IP} other {# išėjimo IP}}, kuriuos naudojo {connections, plural, one {# ryšys} few {# ryšiai} other {# ryšių}} · iki {max} viename išėjimo IP · per pastarąsias {hours} val.", + "poolEgressObservationEmpty": "Per pastarąsias {hours} val. srauto nepastebėta", + "poolEgressObservationHint": "Apskaičiuota pagal įgaliotojo serverio žurnalą per nurodytą laikotarpį: atskiri išėjimo IP, pastebėti šio telkinio nariams, ir juos naudoję OmniRoute ryšiai. „Viename išėjimo IP“ reiškia per visą laikotarpį, o ne tuo pačiu metu. Atskiro IP 429 blokavimas pristabdo tik tos pačios teikėjo grupės ryšius.", "poolRemove": "Pašalinti", "poolRemoveFailed": "Nepavyko pašalinti tarpinio serverio iš telkinio", "poolAddLabel": "Pridėti tarpinį serverį", @@ -11289,7 +11289,7 @@ "refresh": "Atnaujinti", "columnsLabel": "Stulpeliai", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "VEIKIA", "semantic": "Semantinis", "upstream": "Pirminis šaltinis", "semanticCacheHit": "Semantinės podėlio atitiktis (pateikta per OmniRoute)", @@ -11678,7 +11678,7 @@ "endpointsBaseUrl": "Bazinis URL", "endpointsCollapse": "Suskleisti", "endpointsExpand": "Išskleisti", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic savasis", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — tik codex", "betaText": "Quota Share veikia, tačiau gali pasitaikyti klaidų. Radote klaidą? Praneškite apie ją.", @@ -12523,7 +12523,7 @@ "storage": { "label": "Saugykla", "agent": "Dinaminis katalogas (/api/agent-skills) → SKILL.md GitHub platformoje", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / vietinis)" }, "tagline": { "label": "Šūkis", @@ -12992,7 +12992,7 @@ "description": "Leisti atkuriant srautą dar kartą paprašyti atsakymo ir jį sujungti, net jei klientas jau gavo dalį baitų." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Užtikrinkite saugų įrankio iškvietimą tęsiant srautą nuo vidurio: niekada neatnaujinkite nutraukto srauto po to, kai buvo išsiųstas įrankio iškvietimas (jis vis dar vykdomas arba jau baigtas), ir sustokite po vieno tuščio tęsinio, užuot išnaudoję visą pakartotinių bandymų limitą." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Vieną kartą perjungti į giminingą ryšį, kai srautas užsidaro neišsiuntęs jokio naudingo kadro ir ribotas pakartotinis bandymas tame pačiame ryšyje išnaudotas. Jei tinkamo giminingo ryšio nėra, grąžinama pradinė early-EOF klaida. Išjungta: early-EOF po pakartotinio bandymo lieka galutinis." @@ -13035,12 +13035,12 @@ "description": "Tęsti serverio valdomus nesrautinius įrankių iškvietimus, kol modelis pateiks klientui tinkamą atsakymą." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After kilmė", + "description": "Gavę agreguotus 429/503 nepasiekiamumo atsakymus, nenurodykite Retry-After, kai konkretus būsimo pakartotinio bandymo laikas nežinomas, užuot siuntę dirbtinę 1 s reikšmę; pridėkite error.retry_after_provenance ir nuskaitykite tekstines pakartotinio bandymo užuominas kombinacijos ištuštinimo keliuose." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Apsaugoto prioriteto infrastruktūros stabdymai pateikiami kaip 502", + "description": "Pateikite 502, o ne 503, kai prioritetinis tik kvotos atsarginiam perėjimui skirtas tikslas sustabdo kombinaciją dėl priežasties, kuri akivaizdžiai nesusijusi su kvota: suveikusio teikėjo grandinės pertraukiklio arba prognozuojamo delsos praleidimo." } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "Derinio būklė", "callLogs": "Iškvietimų žurnalai", "costs": "Išlaidos", - "playground": "Playground", + "playground": "Bandomoji aplinka", "nestedCombo": "Įdėtasis derinys", "modelTarget": "Tikslinis modelis", "weight": "{value}% svoris", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Atmesti užklausas prieš jas perduodant, kai tikslinis modelis neturi reikiamų galimybių (vaizdų apdorojimo, įrankių, struktūrizuotos išvesties, konteksto lango). Tai apsaugo tiesiogines vienam teikėjui skirtas užklausas, kurios apeina derinių lygmens suderinamumo filtrą.", "featureFlagDisableContextWindowChecksDescription": "Tiesioginėms vieno modelio užklausoms praleisti OmniRoute vietinę konteksto lango ir didžiausio įvesties žetonų skaičiaus patikrą. Išoriniai teikėjai vis tiek taiko savo faktinius apribojimus. Raginimų glaudinimas ir išvesties žetonų apribojimai lieka aktyvūs.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Paieškos statistikoje ir naujausiose paieškose skaičiuojami tik tie teikėjai, kurie vis dar turi aktyvų ryšį (teikėjai, kuriems nereikia rakto, pvz., duckduckgo-free, skaičiuojami visada). Pasirinkus „Išjungta“, išsaugomos visos išlaikytos paieškos eilutės su teikėjo ID.", "publicSystem": { "notFound": { "title": "Puslapis nerastas", @@ -14051,9 +14051,9 @@ "filterSources": "Šaltiniai", "filterProviders": "Teikėjai", "clearFilters": "Išvalyti filtrus", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Debesijos agentas", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Dirigentas", "sourceStale": "Neaktyvu nuo {since}", "sourceOffline": "Neprisijungęs", "sourceCollapse": "Suskleisti", diff --git a/src/i18n/messages/lv.json b/src/i18n/messages/lv.json index cc37c74fa6..5818469dde 100644 --- a/src/i18n/messages/lv.json +++ b/src/i18n/messages/lv.json @@ -702,7 +702,7 @@ "flaggedAnomalies": "Atzīmētās anomālijas", "noAnomaliesDetected": "Anomālijas nav konstatētas", "apiKey": "API atslēga", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 h)", "zScore": "Z-rādītājs", "suspicious": "Aizdomīgs", "tokensCommunityServers": "Kopienas serveri", @@ -903,7 +903,7 @@ "batchListTableId": "ID", "batchListTableEndpoint": "Galapunkts", "batchListTableModel": "Modelis", - "batchListTableProgress": "Progress", + "batchListTableProgress": "Norise", "batchListTableCreated": "Izveidots", "batchListTableExpires": "Derīgs līdz", "batchListLoading": "Notiek ielāde…", @@ -964,7 +964,7 @@ "batchRelativeTimeIn": "pēc {value}", "batchRelativeTimeAgo": "pirms {value}", "batchDetailsTitle": "Partijas detaļas", - "batchProgress": "Progress", + "batchProgress": "Norise", "batchCompletedCount": "{count} pabeigti", "batchFailedCount": "{count} neizdevās", "batchPendingCount": "{count} gaida", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Izziņot claude/<provider>/<model> spoguļa ID vietnē /v1/models, lai Claude Code vārtejas modeļu atrašana uzrādītu ne-Claude modeļus. Brīdinājums: kad iespējots globāli, dublējas katalogā ieraksti visiem klientiem.", "featureFlagNoThinkingAliasEnabledDescription": "Galvenais slēdzis no-think/<provider><model> vārtejas aizstājvārdiem. Iesl. (pēc noklusējuma): /v1/models izziņo bezdomāšanas variantu katram atbilstošajam domāšanas spējīgajam Claude modelim, un no-think/ ID, kas nosūtīts pieprasījumā, tiek atrisināts atpakaļ uz reālo modeli ar apspiestu argumentāciju. Izsl.: nekādi varianti netiek izziņoti, un no-think/ ID tiek uzskatīts par jebkuru citu nezināmu modeļa ID. Modeļa ModelSpec.noThinkingAlias iekļaušanās/izslēgšanās iespēja joprojām darbojas, kamēr šis ir iespējots.", "featureFlagChatVirtualLanesEnabledDescription": "Iespējot katra nomnieka adaptīvas virtuālās uzņemšanas joslas nodrošinātāju izsūtīšanai (#9654): viena nomnieka slodzes lēciens vairs neizraisa 503 kļūdu citam. OMNIROUTE_CHAT_VIRTUAL_LANES vides mainīgais ir prioritārāks par šo paneļa iestatījumu; izmaiņas stājas spēkā pēc servera pārstartēšanas.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Pakalpojumu sniedzēju lapas informācijas panelī: rādīt emblēmu “Bezmaksas” tikai tad, ja to apliecina pakalpojumu sniedzēja norādītā informācija — netiek izmantota parādāmā nosaukuma heiristika, brīvformas lauki par bezmaksas pieejamību un reģistrētu pakalpojumu sniedzēju sufiksi :free, ja tiem nav dokumentēta bezmaksas līmeņa. Izslēdzot šo opciju, tiek saglabāts iepriekšējais emblēmas rādīšanas noteikums.", + "featureFlagProxySkipRecentlyFailedDescription": "Starpniekserveru pūli un opencode konta līmeņa rotācija uz katru procesu uz noteiktu laiku pārtrauc atkārtoti izmantot starpniekserveri, kas tikko cieta kļūmi (noraidīta TCP pārbaude vai caur to saņemts 429); šis laiks pēc katras atkārtotas kļūmes dubultojas līdz noteiktajam maksimumam. Starpniekservera statuss netiek ierakstīts; ja visi kandidāti ir atlikti malā, izvēle paliek nemainīga. Pēc noklusējuma izslēgts: atlases secība precīzi atbilst parastajai rotācijai.", + "featureFlagProxyPoolEgressObservationDescription": "Informācijas panelī zem starpniekserveru pūla rādīt, cik novēroto izejošo IP adrešu pēdējo 24 h laikā apkalpoja tā dalībniekus, cik savienojumu tās izmantoja un lielāko aiz vienas IP adreses novēroto skaitu. Tikai lasāms, aprēķināts no starpniekserveru žurnāla un nekad netiek izmantots maršrutēšanai. Pēc noklusējuma izslēgts: pūla redaktors paliek nemainīgs, un novērojumu maršruts atgriež null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Starpniekserveru darbspējas pārbaudē ļaut mērķa noraidītai pārbaudei (401/403/429: starpniekserveris pārsūtīja pieprasījumu, bet galamērķis noraidīja šo izejošo IP adresi) atiestatīt starpniekservera secīgo kļūmju sēriju tāpat kā apkalpotai pārbaudei. Pēc noklusējuma izslēgts: noraidījums paliek neitrāls un saglabā kļūmju sēriju. 5xx jebkurā gadījumā paliek nepārliecinošs, un noraidījums nekad neizraisa starpniekservera noņemšanu, atspējošanu vai atkārtotu aktivizēšanu.", "sidebar": { "home": "Sākums", "dashboard": "Panelis", @@ -1275,7 +1275,7 @@ "systemGroup": "Sistēma", "costsOverview": "Pārskats", "costsOverviewSubtitle": "Konsolidētā izmaksu analīze", - "agentBridge": "Agent Bridge", + "agentBridge": "Aģentu tilts", "agentBridgeSubtitle": "Pārtvert IDE aģenta trafiku", "trafficInspector": "Trafika inspektors", "trafficInspectorSubtitle": "Pārbaudīt pieprasījumu un atbilžu trafiku no jūsu lietotnēm", @@ -1318,7 +1318,7 @@ "noResults": "Nav rezultātu" }, "webhooks": { - "title": "Webhooks", + "title": "Tīmekļa aizķeres", "description": "Konfigurēt HTTP atzvanus sistēmas notikumiem.", "configuredWebhooks": "Konfigurētie Webhooks", "configuredWebhooksDesc": "Pārvaldīt piegādes galapunktus, abonētos notikumus, statusu un testa sūtījumus.", @@ -1429,13 +1429,13 @@ "secretKeyHint": "Izmanto, lai parakstītu datu paketes galveni autentifikācijai." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "Discord tīmekļa aizķeres URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "Webhook URL, kas nokopēts no jūsu Discord kanāla integrāciju iestatījumiem.", "tutorial": "Kā izveidot Discord webhook:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "Slack tīmekļa aizķeres URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "Webhook URL, kas nokopēts no jūsu Slack Incoming Webhooks integrācijas.", "tutorial": "Kā izveidot Slack webhook:" @@ -1963,10 +1963,10 @@ "rangeCancel": "Atcelt", "rangeApply": "Piemērot", "rangeErrorInvalid": "Sākumam jābūt pirms beigām", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", + "period1D": "1 d.", + "period7D": "7 d.", + "period30D": "30 d.", + "period90D": "90 d.", "periodYTD": "GS", "periodAll": "Visi", "totalTokens": "Žetonu skaits kopā", @@ -2210,7 +2210,7 @@ "combo": "Kombinācija", "routeStep": "Solis", "tokens": "Žetoni", - "notAvailable": "n/a", + "notAvailable": "nav pieejams", "routeTokenCounts": "{input} iekšā · {output} ārā", "routeEvidence": "Pierādījumi", "routeFactors": "Maršruta faktori", @@ -2686,7 +2686,7 @@ "noActiveProviderDescription": "Nav aktīva meklēšanas pakalpojumu sniedzēja. Konfigurējiet vienu sadaļā Pakalpojumu sniedzēji.", "configureProviders": "Konfigurēt pakalpojumu sniedzējus", "compareQuery": "Salīdzināmais pieprasījums", - "compareQueryPlaceholder": "artificial intelligence trends 2026", + "compareQueryPlaceholder": "mākslīgā intelekta tendences 2026", "selectedProviders": "Pakalpojumu sniedzēji ({count} atlasīti):", "selectAll": "Atlasīt visus", "clear": "Notīrīt", @@ -4018,7 +4018,7 @@ "messagesApiDesc": "Nativais Anthropic Messages API formāts nodrošinātājiem, kas saderīgi ar Claude", "imageEdits": "Attēlu redaktors", "imageEditsDesc": "Rediģējiet un modificējiet esošos attēlus ar AI (inpainting, outpainting, variācijas)", - "batchApi": "Batch API", + "batchApi": "Pakešu API", "batchApiDesc": "Apstrādājiet lielas pieprasījumu partijas asinhroni (saderīgs ar OpenAI)", "filesApi": "Failu API", "filesApiDesc": "Augšupielādējiet un pārvaldiet failus partiju apstrādei", @@ -4139,7 +4139,7 @@ "badgeInternalTooltip": "Šis ir iekšējs sistēmas galapunkts", "tierAll": "Visi", "tierAuth": "Autentificēts", - "tierLoopback": "Loopback", + "tierLoopback": "Atgriezeniskā cilpa", "tierAlwaysProtected": "Vienmēr aizsargāts", "tierPublic": "Publisks", "hideInternal": "Slēpt iekšējos", @@ -4612,7 +4612,7 @@ "popularDefaultsLabel": "Noklusējuma populārs izvēlētajam nodrošinātājam:", "onMode": "IESLĒGTS", "offMode": "IZSLĒGTS", - "autoMode": "AUTO", + "autoMode": "AUTOMĀTISKI", "installSkillButton": "Instalēt prasmi", "installSkillModalTitle": "Instalēt prasmi", "installJsonPlaceholder": "Ielīmējiet prasmes manifesta JSON šeit...", @@ -5308,7 +5308,7 @@ "openaiCompatibleDetails": "OpenAI saderības detaļas", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", + "embeddings": "Iegultnes", "audioTranscriptions": "Audio Transkripcijas", "audioSpeech": "Audio Runa", "imagesGenerations": "Attēlu Generācijas", @@ -5814,13 +5814,13 @@ "codexFastServiceTierDescription": "Izmantot prioritāro pakalpojuma līmeni Codex pieprasījumiem, kad tas ir pieejams.", "codexFastServiceTierLabel": "Codex ātrais pakalpojuma līmenis", "codexWeeklyToggleTitle": "Izsekot Codex nedēļas kvotu šim savienojumam", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Saderīgā augšupstraumes galvenes nosaukuma vietturis", + "compatUpstreamHeaderValuePlaceholder": "Saderīgās augšupstraumes galvenes vērtības vietturis", "compatible": "Saderīgs", "configuredCount": "Konfigurēto skaits", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "consoleApiKeyOracleHint": "Konsoles API atslēgas Oracle padoms", + "consoleApiKeyOracleLabel": "Konsoles API atslēgas Oracle etiķete", + "consoleApiKeyOraclePlaceholder": "Konsoles API atslēgas Oracle vietturis", "newApiUserIdLabel": "New-API lietotāja ID", "newApiUserIdPlaceholder": "piem., 12345", "newApiUserIdHint": "AgentRouter New-Api-User galvenes vērtība, ko izmanto kopā ar konsoles API atslēgu, lai iegūtu kvotas atlikumu.", @@ -5833,7 +5833,7 @@ "featureFlagNewApiAggregatorBalanceDescription": "Iespējot bilances noteikšanu New-API / One-API / Sub2API apkopotāju saderīgiem mezgliem", "cpaModeDisabledTitle": "CLIProxyAPI saderības režīms ir izslēgts", "cpaModeEnabledTitle": "CLIProxyAPI saderības režīms ir iespējots", - "customUserAgentHint": "Custom User Agent Hint", + "customUserAgentHint": "Pielāgotā lietotāja aģenta padoms", "customUserAgentLabel": "Pielāgota lietotāja aģenta etiķete", "databricksBaseUrlHint": "Databricks bāzes URL norāde", "defaultThinkingStrengthHint": "Tiek izmantots, ja pieprasījumā nav norādīta domāšanas piepūle.", @@ -6530,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "izmest rindkopas, kas satur: {items}", "routingSummarizeDropParagraphStartsWith": "izmest rindkopas, kas sākas ar: {items}", "routingSummarizeReplaceText": "aizvietot \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "regulārā izteiksme /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "izmest blokus, kas satur: {items}", "routingSummarizePrependSystemBlock": "pievienot bloku sākumā: \"{text}\"", "routingSummarizeAppendSystemBlock": "pievienot bloku beigās: \"{text}\"", @@ -7056,7 +7056,7 @@ "routingAdvancedGuideTitle": "Papildu maršrutēšanas norādījumi", "routingAdvancedGuideHint1": "Šī stratēģija ir sinhronizēta gan ar jaunajiem kombinācijas noklusējumiem, gan globālo konta rezerves maršrutēšanu.", "routingAdvancedGuideHint2": "Izmantojiet Fill First prognozējamai kontu prioritātei, Round Robin plus Sticky Limit kontu grupām un P2C noturībai pret latentumu.", - "fillFirst": "Fill First", + "fillFirst": "Vispirms aizpildīt", "fillFirstDesc": "Izmantot kontus prioritārā secībā", "roundRobin": "Round Robin", "roundRobinDesc": "Iet cauri visiem kontiem pēc kārtas", @@ -7068,21 +7068,21 @@ "leastUsedDesc": "Izvēlēties nesenāk lietoto kontu", "costOpt": "Izmaksu optimizācija", "costOptDesc": "Priekšroka lētākajam pieejamajam kontam", - "resetAware": "Reset-Aware RR", + "resetAware": "RR ar atiestates ievērošanu", "resetAwareDesc": "Priekšroka kontiem ar veselīgu atlikušo kvotu un tuvākiem atiestatīšanas laikiem", "quotaWeighted": "Kvotas svērts", "quotaWeightedDesc": "Izlaist kontus ar izsmeltu kvotu, pēc tam izvēlēties no pārējiem proporcionāli atlikumam, dalot ar pašlaik apstrādāto pieprasījumu slodzi. Esošās sarunas paliek piesaistītas.", "strictRandom": "Stingri nejauši", "strictRandomDesc": "Sajaukt komplektu — izmanto katru kontu vienu reizi, pirms sajauc no jauna", - "stickyLimit": "Sticky Limit", + "stickyLimit": "Piesaistes ierobežojums", "stickyLimitDesc": "Izsaukumu skaits uz kontu, pirms pārslēdzas, kad globālā konta rezerves maršrutēšana izmanto Round Robin", "routingStrategyTitle": "Maršrutēšanas stratēģija", "routingStrategySubtitle": "Atbilst 9router: kontu round-robin, sticky limiti un kombinācijas rotācija", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Cikliskā sadale", "accountRoundRobinDesc": "Iet cauri kontiem, lai sadalītu slodzi", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Kombinētā cikliskā sadale", "comboRoundRobinDesc": "Iet cauri kombinācijas mērķiem, nevis vienmēr sākt ar pirmo", - "comboStickyLimit": "Combo Sticky Limit", + "comboStickyLimit": "Kombinētais piesaistes ierobežojums", "comboStickyLimitDesc": "Izsaukumu skaits uz kombinācijas mērķi, pirms pārslēdzas", "routingStrategyAccountSummary": "Pieprasījumi tiek sadalīti starp kontiem ar {limit} izsaukumiem uz kontu.", "routingStrategyFillFirstSummary": "Izmantot kontus prioritārā secībā (Fill First).", @@ -7803,7 +7803,7 @@ "storageLastVacuum": "Pēdējais Vakuums", "storageLastOptimization": "Pēdējā Optimizācija", "storageIntegrityCheck": "Integritātes Pārbaude", - "storageIntegrityOk": "✓ OK", + "storageIntegrityOk": "✓ Labi", "storageIntegrityError": "✗ Kļūda", "storageUsageTokenBuffer": "Lietošanas Žetonu Buferis", "storageUsageTokenBufferDesc": "Papildu žetoni pievienoti ziņotajam lietojumam, lai kompensētu sistēmas uzaicinājuma pārslodzi.", @@ -7865,7 +7865,7 @@ "description": "Satura adresētas izgūšanas atzīmes." }, "lite": { - "label": "Lite", + "label": "Vieglā versija", "description": "Atstarpju un formāta sakārtošana." }, "rtk": { @@ -7881,15 +7881,15 @@ "description": "Tabulāra JSON saspiešana." }, "relevance": { - "label": "Relevance", + "label": "Atbilstība", "description": "Ekstraktīva teikumu vērtēšana pēc pēdējā lietotāja pieprasījuma." }, "caveman": { - "label": "Caveman", + "label": "Alu cilvēks", "description": "Uz noteikumiem balstīta teksta saspiešana." }, "aggressive": { - "label": "Aggressive", + "label": "Agresīvs", "description": "Vecu pagriezienu apkopošana un noveco­šana." }, "llmlingua": { @@ -7953,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Importēt kontus", "payloadRulesTitle": "Slodzes (payload) noteikumi", "payloadRulesDesc": "Konfigurējiet pieprasījuma slodzes (payload) izmaiņas pēc modeļa un protokola. Izmaiņas tiek saglabātas iestatījumos un uzreiz pēc saglabāšanas ielādētas darbības laikā (hot reload).", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "noklusējums", "payloadRuleDefaultDesc": "Piemēro parametrus tikai tad, ja mērķa ceļš izejošajā slodzē (payload) trūkst.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "ignorēt", "payloadRuleOverrideDesc": "Piespiedu kārtā piešķir vērtības slodzei (payload), pārrakstot visu, kas jau ir norādītajā ceļā.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "filtrs", "payloadRuleFilterDesc": "Noņem bloķētos parametrus no slodzes (payload), pirms pieprasījums tiek nosūtīts uzstumtajam (upstream) pakalpojumam.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Līdzīgi kā default, tikai virknes vērtības, kad iespējams, vispirms tiek parsētas kā JSON. Saglabāšanas laikā tiek pieņemts arī mantotais ievades aizstājvārds default-raw.", @@ -8011,7 +8011,7 @@ "codexAutoPingToggleAria": "Pārslēgt Codex kvotas automātisko pingu savienojumam {connection}", "codexFastTierTierLabel": "Pakalpojuma līmenis", "codexFastTierTierPriority": "Prioritāte", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Elastīgs", "codexFastTierTierDefault": "Noklusējums", "codexFastTierModelsLabel": "Ātrā līmeņa modeļi", "codexFastTierModelsHint": "Tikai atzīmētie modeļi saņem service_tier, kad Ātrais līmenis ir iespējots.", @@ -8330,12 +8330,12 @@ "oneproxyQuality": "Oneproxy kvalitāte", "oneproxySyncFailed": "Sinhronizācija neizdevās: {error}", "oneproxySyncSuccess": "Sinhronizēti {total} starpniekserveri ({added} jauni, {updated} atjaunināti)", - "proxyDocumentationSocks5DescAfter": "Proxy Documentation Socks5 Desc After", - "proxyFreePoolAddProxy": "Proxy Free Pool Add Proxy", - "proxyFreePoolAdding": "Proxy Free Pool Adding", - "proxyFreePoolSelectProxy": "Proxy Free Pool Select Proxy", - "proxyStatusActive": "Proxy Status Active", - "proxyStatusInactive": "Proxy Status Inactive", + "proxyDocumentationSocks5DescAfter": "Starpniekservera dokumentācijas Socks5 apraksts pēc", + "proxyFreePoolAddProxy": "Pievienot starpniekserveri bezmaksas starpniekserveru kopai", + "proxyFreePoolAdding": "Pievieno bezmaksas starpniekserveru kopai", + "proxyFreePoolSelectProxy": "Bezmaksas starpniekserveru kopa Atlasīt starpniekserveri", + "proxyStatusActive": "Starpniekservera statuss Aktīvs", + "proxyStatusInactive": "Starpniekservera statuss Neaktīvs", "routingAddEntry": "Pievienot ierakstu", "settingSaveFailed": "Iestatījumu saglabāšana neizdevās", "settingSaved": "Iestatījumi saglabāti", @@ -8880,7 +8880,7 @@ "providerExposureHint": "Ja iespējots, atrastie modeļi tiek parādīti nodrošinātāju izvēlnēs visā OmniRoute.", "providerExposureUpdateFailed": "Neizdevās atjaunināt (HTTP {status})", "providerExposureNetworkFailed": "Tīkla kļūda — nevarēja atjaunināt nodrošinātāja pieejamības iestatījumu", - "webUi": "9Router Web UI", + "webUi": "9Router tīmekļa saskarne", "openNewTab": "Atvērt jaunā cilnē", "filterLogs": "Filtrēt žurnālus…", "resume": "Atsākt", @@ -8994,7 +8994,7 @@ "ideCliIntegrations": "IDE/CLI integrācijas", "inMemoryNote": "Piezīme: notikumi tiek glabāti atmiņā un tiek atiestatīti, restartējot serveri.", "ok": "OK", - "errorShort": "ERR", + "errorShort": "KĻŪDA", "formatConverter": "Formāta pārveidotājs", "formatConverterDescription": "Ielīmējiet vai ierakstiet JSON pieprasījuma pamattekstu. Tulkotājs automātiski noteiks avota formātu un pārveidos to uz mērķa formātu. Izmantojiet šo, lai atkļūdotu, kā OmniRoute pārveido pieprasījumus starp formātiem (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (starpformāts) → {target}", @@ -9465,9 +9465,9 @@ "noQuotaDataAvailable": "Nav pieejamu kvotas datu", "noAccountsForTierFilter": "Netika atrasts neviens konts atlasītajam līmenim", "tierAll": "Visi", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "tierEnterprise": "Uzņēmumiem", + "tierTeam": "Komanda", + "tierBusiness": "Bizness", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", @@ -10685,7 +10685,7 @@ "levelKey": "Atslēga", "levelDirect": "Tieši (bez proxy)", "titleGlobal": "Globālā proxy konfigurācija", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "{level} starpniekserveris — {label}", "loading": "Notiek proxy konfigurācijas ielāde...", "inheritingFrom": "Manto no", "source": "Avots", @@ -10968,9 +10968,9 @@ "strategyLatency": "Ar aizkaves optimizāciju", "poolMembersLabel": "Kopas dalībnieki ({count})", "poolNoMembers": "Šajā kopā vēl nav starpniekserveru.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# izeja izmantota} other {# izejas izmantotas}} {connections, plural, one {# savienojumā} other {# savienojumos}} · līdz {max} vienā izejā · pēdējo {hours} h laikā", + "poolEgressObservationEmpty": "Pēdējo {hours} h laikā datplūsma nav novērota", + "poolEgressObservationHint": "Aprēķināts no starpniekservera žurnāla attiecīgajā laika posmā: atšķirīgās izejošās IP adreses, kas novērotas šī pūla dalībniekiem, un OmniRoute savienojumi, kuri tās izmantoja. “Vienā izejā” nozīmē visā laika posmā, nevis vienlaikus. Katras IP adreses 429 bloķēšana aptur tikai tās pašas pakalpojumu sniedzēju saimes savienojumus.", "poolRemove": "Noņemt", "poolRemoveFailed": "Neizdevās noņemt starpniekserveri no kopas", "poolAddLabel": "Pievienot proksi", @@ -11450,7 +11450,7 @@ "allLevels": "Visi līmeņi", "allProviders": "Visi nodrošinātāji", "total": "kopā", - "ok": "OK", + "ok": "Labi", "err": "KĻŪDA", "timeoutShort": "NOILGST", "direct": "tiešs", @@ -11556,7 +11556,7 @@ "title": "Kvotu dalīšana", "description": "Dalīt piegādātāju kvotas pāri API atslēgām ar % ierobežojumiem", "newPool": "Jauns baseins", - "betaTitle": "Beta", + "betaTitle": "Beta versija", "betaDescription": "Konfigurācija ir saglabāta localStorage (vēl nav saglabāta serverī). Pieprasījuma ierobežojuma izpilde vēl nav integrēta starpniekservera maršrutēšanā. Šis ekrāns ļauj projektēt un vizualizēt kvotu sadalījumu; reāla izpilde notiks nākamajā iterācijā ar DB saglabāšanu un augšupvērstu zvanu pārtraukšanu.", "kpiActivePools": "Aktīvie baseini", "kpiKeysAllocated": "Piešķirtās atslēgas", @@ -11678,7 +11678,7 @@ "endpointsBaseUrl": "Bāzes URL", "endpointsCollapse": "Sakļaut", "endpointsExpand": "Izplest", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic vietējais", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — tikai codex", "betaText": "Quota Share ir funkcionāls, bet ir sagaidāmas kļūdas. Atradāt kādu? Lūdzu, ziņojiet par to.", @@ -11855,7 +11855,7 @@ "riskBannerTitle": "Lietojiet uz savu risku", "riskBannerBody": "AgentBridge pārtver HTTPS satiksmi no IDE aģentiem. Aktivizējot to, jūs uzņematies atbildību par atbilstību katra aģenta pakalpojuma noteikumiem. Nekad neizmantojiet ierīcēs vai tīklos, kur TLS pārbaude ir aizliegta.", "riskBannerDismiss": "Aizvērt", - "serverCardTitle": "AgentBridge Server", + "serverCardTitle": "AgentBridge serveris", "statusRunning": "Darbojas", "statusStopped": "Apturēts", "statusActive": "Aktīvs", @@ -12465,46 +12465,46 @@ "description": "Iesniedziet un pārraugiet pakešu inferēšanas darbus no CLI. Augšupielādējiet un pārvaldiet failus pakešu apstrādei, izgūstiet rezultātus un integrējiet pakešu konveijerus ar CI/CD darbplūsmām." }, "cli-eval": { - "name": "CLI: Evals", + "name": "CLI: Novērtējumi", "description": "Izveidojiet un palaidiet novērtēšanas komplektus, sekojiet līdzi etalona testu norisei reāllaikā, skatiet rezultātu kartītes, salīdziniet modeļu veiktspēju un integrējiet novērtēšanas izpildes ar CI darbplūsmām, izmantojot CLI." }, "cli-plugins-skills": { - "name": "CLI: Plugins, Skills & Memory", + "name": "CLI: Spraudņi, prasmes un atmiņa", "description": "Pārvaldiet Omni Skills (uzskaitīt, instalēt, testēt, noņemt), spraudņus (izveidot, konfigurēt) un pastāvīgo atmiņu (meklēt, pievienot, notīrīt), izmantojot CLI." }, "cli-setup": { - "name": "CLI: Setup & Config", + "name": "CLI: Iestatīšana un konfigurācija", "description": "Veiciet sākotnējo iestatīšanu, konfigurējiet globālos CLI iestatījumus, pārvaldiet vides mainīgos, pārbaudiet atjauninājumus un konfigurējiet automātisko palaišanu, izmantojot CLI iestatīšanas un konfigurācijas komandas." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI: Aģenta prasmju apkopotājs", "description": "Nosakiet instalētos CLI programmēšanas rīkus (Claude Code, Codex, Cursor, Copilot, Cline un citus), meklējiet GitHub atbilstošās aģentu prasmes un instalējiet tās atrastajos rīkos, izmantojot OmniRoute iebūvētās API." }, "config-codex-cli": { - "name": "Config: Codex CLI", + "name": "Konfigurācija: Codex CLI", "description": "Soli pa solim izpildāma aģenta darbplūsma OpenAI Codex CLI konfigurēšanai jebkurā datorā (Linux, macOS, Windows), lai izmantotu OmniRoute kā ar OpenAI saderīgu aizmugursistēmu. Nosaka operētājsistēmu un čaulu, ieraksta config.toml un 7 nosauktus profilus, iestata vides mainīgos un pārbauda iestatījumu." }, "omni-github-skills": { - "name": "GitHub Skill Discovery", + "name": "GitHub prasmju atklāšana", "description": "Meklējiet, vērtējiet, skenējiet un importējiet aģentu prasmes no GitHub repozitorijiem, kuros ir SKILL.md, CLAUDE.md, .cursorrules un līdzīgi aģentu prasmju faili. Atklājiet kopienas prasmes vairāk nekā 160 pakalpojumu sniedzēju kategorijās, novērtējiet atbilstību, izmantojot heiristisku vērtēšanu, pārbaudiet, vai nav ļaunprogrammatūras vai cietkodētu slepeno atslēgu, un instalējiet tās Hermes, Claude Code, Gemini CLI vai OpenCode aģentu direktorijās." } }, - "pageTitle": "Agent Skills", + "pageTitle": "Aģenta prasmes", "pageSubtitle": "Iemāciet savam aģentam darboties ar OmniRoute — 23 API jomas + 21 CLI saime", "conceptCard": { "agent": { - "title": "Agent Skills — Outbound", + "title": "Aģenta prasmes — izejošās", "description": "Agent Skills ir mašīnlasāmi SKILL.md dokumenti, ko ārējie MI aģenti (Claude Code, Cursor, Copilot…) iegūst no GitHub, lai iemācītos izmantot OmniRoute, izmantojot REST vai CLI. Tos nolasa aģents, nevis izpilda OmniRoute.", "crossLinkLabel": "Izprotiet atšķirību →" }, "omni": { - "title": "Omni Skills — Inbound", + "title": "Omni prasmes — ienākošās", "description": "Omni Skills ir smilškastes rīki, ko OmniRoute iekļauj modeļa kontekstā katrā pieprasījumā. Tos izpilda OmniRoute, nevis nolasa aģents.", "crossLinkLabel": "Izprotiet atšķirību →" }, "comparison": { - "colAgent": "Agent Skills", - "colOmni": "Omni Skills", + "colAgent": "Aģenta prasmes", + "colOmni": "Omni prasmes", "whatIs": { "label": "Kas tas ir", "agent": "Mašīnlasāms SKILL.md, kas māca ārējam aģentam darboties ar OmniRoute", @@ -12992,7 +12992,7 @@ "description": "Ļaut straumes atkopšanai atkārtoti pieprasīt atbildi un pievienot to straumei pēc tam, kad baiti jau ir sasnieguši klientu." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Padariet turpināšanu plūsmas vidū drošu rīka izsaukumiem: nekad neatsāciet pārtrauktu plūsmu pēc rīka izsaukuma nosūtīšanas (kamēr tas vēl tiek izpildīts vai jau ir pabeigts) un pārtrauciet pēc viena tukša turpinājuma, nevis izmantojiet visu atkārtoto mēģinājumu limitu." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Vienreiz pārslēgties uz radniecīgu savienojumu, ja straume aizveras, pirms nosūtīts kāds noderīgs kadrs, un ierobežotais atkārtotais mēģinājums tajā pašā savienojumā ir izlietots. Ja nav izmantojama radniecīga savienojuma, tiek atgriezta sākotnējā early-EOF kļūda. Izslēgts: early-EOF pēc atkārtotā mēģinājuma paliek galīgs." @@ -13035,12 +13035,12 @@ "description": "Turpināt servera pārvaldītos rīku izsaukumus bez straumēšanas, līdz modelis atgriež klientam izmantojamu atbildi." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After izcelsme", + "description": "Apkopotajās 429/503 nepieejamības atbildēs izlaidiet Retry-After, ja nav zināms konkrēts atkārtota mēģinājuma laiks nākotnē, nevis nosūtiet mākslīgi izveidotu 1 s vērtību; pievienojiet error.retry_after_provenance un kombināciju iztukšošanas ceļos nolasiet tekstuālas norādes par atkārtotu mēģinājumu." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Aizsargātas prioritātes infrastruktūras apturēšanas kā 502", + "description": "Atbildiet ar 502, nevis 503, ja prioritārais mērķis ar atkāpšanos tikai kvotas dēļ aptur kombināciju tāda iemesla dēļ, kas pierādāmi nav saistīts ar kvotu: atvērts nodrošinātāja automātiskais slēdzis vai prognozējoša latentuma dēļ veikta izlaišana." } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "Kombinācijas veselība", "callLogs": "Izsaukumu žurnāli", "costs": "Izmaksas", - "playground": "Playground", + "playground": "Izmēģinājumu vide", "nestedCombo": "Ligzdota kombinācija", "modelTarget": "Modeļa mērķis", "weight": "{value}% svars", @@ -13210,7 +13210,7 @@ "noApiKeyRequired": "API atslēga nav nepieciešama" }, "providerHealthAutopilot": { - "title": "Provider Health Autopilot", + "title": "Pakalpojumu sniedzēju darbspējas autopilots", "description": "Atrod nestabilus pakalpojumu sniedzējus, kontu atdzišanas periodus, novecojušas kļūdas un drošus manuālus labojumus.", "loadFailed": "Neizdevās ielādēt autopilota pārskatu", "actionApplied": "{action} lietots.", @@ -13503,7 +13503,7 @@ "localStateSaveFailed": "Neizdevās saglabāt vietējos Radar iestatījumus", "guidedCombos": "Ieteiktās kombinācijas", "offers": "Piedāvājumi", - "intel": "Intel" + "intel": "Informācija" }, "radarCombosPage": { "title": "Radar ieteiktās kombinācijas", @@ -13577,9 +13577,9 @@ "timeline": { "title": "Pārtraucēja pārejas", "window": "Intervāls", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 h", + "window6h": "6 h", + "window24h": "24 h", "empty": "Atlasītajā periodā nav pāreju", "currentState": "Pašreizējais stāvoklis", "state": { @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Noraidīt pieprasījumus pirms nosūtīšanas, ja mērķa modelim trūkst nepieciešamo iespēju (redze, rīki, strukturēta izvade, konteksta logs). Aizsargā tiešus viena pakalpojumu sniedzēja pieprasījumus, kas apiet combo-layer saderības filtru.", "featureFlagDisableContextWindowChecksDescription": "Izlaist OmniRoute lokālo konteksta loga un max-input-token pārbaudi tiešiem viena modeļa pieprasījumiem. Augšupējie pakalpojumu sniedzēji joprojām piemēro savus faktiskos ierobežojumus. Uzvedņu saspiešana un izvades marķieru ierobežojumi paliek aktīvi.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Meklēšanas statistikā un nesenajos meklējumos tiek ņemti vērā tikai tie nodrošinātāji, kuriem joprojām ir aktīvs savienojums (nodrošinātāji bez atslēgas, piemēram, duckduckgo-free, tiek ņemti vērā vienmēr). Izslēgts saglabā katru paturēto meklēšanas rindu ar nodrošinātāja ID.", "publicSystem": { "notFound": { "title": "Lapa nav atrasta", @@ -13969,7 +13969,7 @@ "compressionDescription": "Konfigurējiet konteksta saspiešanas iestatījumus, lai samazinātu žetonu lietojumu un izmaksas.", "relayTitle": "OmniRoute — pārsūtīšanas starpniekserveri", "relayDescription": "Bezservera pārsūtīšanas starpniekserveru galapunkti jūsu MI infrastruktūrai", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Datplūsmas inspektors — OmniRoute", "trafficInspectorDescription": "Pārraugiet LLM izsaukumus un atkļūdojiet jebkuras lietotnes HTTPS datplūsmu" }, "conductor": { @@ -13978,7 +13978,7 @@ "runners": "Izpildītāji", "tasks": "Uzdevumi", "colName": "Nosaukums", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "Statuss", "colTask": "Uzdevums", "colMode": "Režīms", diff --git a/src/i18n/messages/ml.json b/src/i18n/messages/ml.json index f23874a8a0..34d872041e 100644 --- a/src/i18n/messages/ml.json +++ b/src/i18n/messages/ml.json @@ -162,7 +162,7 @@ "effortMax": "പരമാവധി", "effortUltra": "അൾട്രാ", "reasoningEffort": "റീസണിംഗ് ശ്രമം", - "wireApi": "Wire API", + "wireApi": "വയർ API", "modelAliases": "മോഡൽ അപരനാമങ്ങൾ", "combos": "കോംബോകൾ", "noModelsFound": "മോഡലുകളൊന്നും കണ്ടെത്തിയില്ല", @@ -761,7 +761,7 @@ "tierCoverageSubtitle": "ഓരോ ഫാൾബാക്ക് ടയറിലും കോൺഫിഗർ ചെയ്ത Providers", "batchDetailCopyId": "ID പകർത്തുക", "batchDetailClose": "അടയ്ക്കുക", - "batchDetailEndpoint": "Endpoint", + "batchDetailEndpoint": "എൻഡ്പോയിന്റ്", "batchDetailModel": "മോഡൽ", "batchDetailWindow": "വിൻഡോ", "batchDetailCreated": "സൃഷ്ടിച്ചത്", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Claude Code ഗേറ്റ്വേ മോഡൽ കണ്ടെത്തലിൽ Claude ഇതര മോഡലുകൾ പട്ടികപ്പെടുത്തുന്നതിനായി /v1/models-ൽ claude/<provider>/<model> മിറർ ഐഡികൾ പ്രസിദ്ധപ്പെടുത്തുക. മുന്നറിയിപ്പ്: ആഗോളതലത്തിൽ പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ എല്ലാ ക്ലയന്റുകൾക്കുമുള്ള കാറ്റലോഗ് എൻട്രികളുടെ എണ്ണം ഇരട്ടിയാകും.", "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> ഗേറ്റ്വേ അപരനാമങ്ങൾക്കുള്ള മാസ്റ്റർ സ്വിച്ച്. ഓൺ (ഡിഫോൾട്ട്): യോഗ്യതയുള്ള, ചിന്താശേഷിയുള്ള ഓരോ Claude മോഡലിനും ചിന്തിക്കാത്ത ഒരു വകഭേദം /v1/models പ്രസിദ്ധപ്പെടുത്തും; കൂടാതെ അഭ്യർത്ഥനയിൽ അയയ്ക്കുന്ന no-think/ ഐഡി, റീസണിങ് അടിച്ചമർത്തിക്കൊണ്ട് യഥാർഥ മോഡലിലേക്ക് തിരികെ പരിഹരിക്കപ്പെടും. ഓഫ്: വകഭേദങ്ങളൊന്നും പ്രസിദ്ധപ്പെടുത്തില്ല; no-think/ ഐഡി മറ്റേതൊരു അജ്ഞാത മോഡൽ ഐഡിയെയും പോലെ പരിഗണിക്കും. ഇത് ഓണായിരിക്കുമ്പോഴും ഓരോ മോഡലിനുമുള്ള ModelSpec.noThinkingAlias ഓപ്റ്റ്-ഇൻ/ഓപ്റ്റ്-ഔട്ട് ബാധകമാണ്.", "featureFlagChatVirtualLanesEnabledDescription": "പ്രൊവൈഡർ ഡിസ്പാച്ചിനായി ഓരോ ടെനന്റിനും അനുയോജ്യമായി മാറുന്ന വെർച്വൽ അഡ്മിഷൻ ലെയിനുകൾ പ്രവർത്തനക്ഷമമാക്കുക (#9654): ഇനി ഒരു ടെനന്റിന്റെ പെട്ടെന്നുള്ള അഭ്യർത്ഥന വർധന മറ്റൊരാൾക്ക് 503 പിശക് സൃഷ്ടിക്കില്ല. ഈ ഡാഷ്ബോർഡ് ഓവർറൈഡിനേക്കാൾ OMNIROUTE_CHAT_VIRTUAL_LANES env var-ന് മുൻഗണനയുണ്ട്; സെർവർ പുനരാരംഭിക്കുമ്പോൾ മാറ്റങ്ങൾ പ്രാബല്യത്തിൽ വരും.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ഡാഷ്ബോർഡ് പ്രൊവൈഡർ പേജുകൾ: പ്രൊവൈഡർ അംഗീകരിക്കുന്ന സൂചനകളിൽ മാത്രം Free ബാഡ്ജ് കാണിക്കുക — രേഖപ്പെടുത്തിയ സൗജന്യ ടയർ ഇല്ലാത്ത രജിസ്റ്റർ ചെയ്ത പ്രൊവൈഡറുകളിൽ ഡിസ്പ്ലേ-നെയിം ഹ്യൂറിസ്റ്റിക്, ബൂളിയൻ അല്ലാത്ത free ഫീൽഡുകൾ, :free സഫിക്സുകൾ എന്നിവ ഒഴിവാക്കുന്നു. ഓഫാക്കിയാൽ പഴയ ബാഡ്ജ് നിയമം നിലനിർത്തും.", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy പൂളുകളും opencode-ന്റെ ഓരോ അക്കൗണ്ടിലുമുള്ള റൊട്ടേഷനും, ഇപ്പോൾ പരാജയപ്പെട്ട ഒരു Proxy-യെ (നിരസിക്കപ്പെട്ട TCP പ്രോബ്, അല്ലെങ്കിൽ അതിലൂടെ ലഭിച്ച 429) ഓരോ ആവർത്തനത്തിലും ഇരട്ടിയാകുന്ന, ഒരു പരമാവധി പരിധിവരെയുള്ള ഓരോ പ്രോസസിനുമുള്ള കാലയളവിൽ വീണ്ടും ഉപയോഗിക്കുന്നത് നിർത്തുന്നു. Proxy നിലയൊന്നും രേഖപ്പെടുത്തില്ല; എല്ലാ സ്ഥാനാർഥികളെയും മാറ്റിവെച്ചാൽ തിരഞ്ഞെടുപ്പ് മാറ്റമില്ലാതെ തുടരും. ഡിഫോൾട്ടായി ഓഫാണ്: തിരഞ്ഞെടുപ്പ് ക്രമം സാധാരണ റൊട്ടേഷൻ തന്നെയാണ്.", + "featureFlagProxyPoolEgressObservationDescription": "ഡാഷ്ബോർഡിലെ ഒരു Proxy പൂളിന് കീഴിൽ, കഴിഞ്ഞ 24 മണിക്കൂറിനിടെ അതിലെ അംഗങ്ങൾക്ക് സേവനം നൽകിയതായി നിരീക്ഷിച്ച എത്ര എഗ്രസ് IP-കൾ ഉണ്ടായിരുന്നു, എത്ര കണക്ഷനുകൾ അവ ഉപയോഗിച്ചു, ഒരു IP-ക്ക് പിന്നിൽ കണ്ട ഏറ്റവും ഉയർന്ന എണ്ണം എത്ര എന്നിവ കാണിക്കുക. വായനയ്ക്ക് മാത്രം; Proxy ലോഗിൽനിന്ന് കണക്കാക്കുന്നതും റൂട്ടിംഗിനായി ഒരിക്കലും ഉപയോഗിക്കാത്തതുമാണ്. ഡിഫോൾട്ടായി ഓഫാണ്: പൂൾ എഡിറ്ററിൽ മാറ്റമില്ല, നിരീക്ഷണ റൂട്ട് null എന്ന് മറുപടി നൽകും.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Proxy ആരോഗ്യ പരിശോധനയിൽ, ലക്ഷ്യം നിരസിച്ച ഒരു പ്രോബ് (401/403/429: Proxy റിലേ ചെയ്തു, ലക്ഷ്യസ്ഥാനം ഈ എഗ്രസ് IP നിരസിച്ചു) സേവനം നൽകിയ പ്രോബിനെപ്പോലെ Proxy-യുടെ തുടർച്ചയായ പരാജയങ്ങളുടെ എണ്ണം പുനഃസജ്ജമാക്കാൻ അനുവദിക്കുക. ഡിഫോൾട്ടായി ഓഫാണ്: ഒരു നിരസിക്കൽ നിഷ്പക്ഷമായി തുടരുകയും പരാജയങ്ങളുടെ എണ്ണം നിലനിർത്തുകയും ചെയ്യും. ഏതുവിധമായാലും 5xx അനിശ്ചിതമായി തുടരും; ഒരു നിരസിക്കൽ ഒരിക്കലും Proxy-യെ നീക്കം ചെയ്യുകയോ പ്രവർത്തനരഹിതമാക്കുകയോ വീണ്ടും സജീവമാക്കുകയോ ചെയ്യില്ല.", "sidebar": { "home": "ഹോം", "dashboard": "ഡാഷ്ബോർഡ്", @@ -1275,7 +1275,7 @@ "systemGroup": "സിസ്റ്റം", "costsOverview": "അവലോകനം", "costsOverviewSubtitle": "ഏകീകൃത ചെലവ് വിശകലനം", - "agentBridge": "Agent Bridge", + "agentBridge": "ഏജന്റ് ബ്രിഡ്ജ്", "agentBridgeSubtitle": "IDE ഏജന്റ് ട്രാഫിക് തടഞ്ഞെടുത്ത് പരിശോധിക്കുക", "trafficInspector": "Traffic Inspector", "trafficInspectorSubtitle": "നിങ്ങളുടെ ആപ്പുകളിൽ നിന്നുള്ള അഭ്യർത്ഥനാ-പ്രതികരണ ട്രാഫിക് പരിശോധിക്കുക", @@ -1298,7 +1298,7 @@ "groupSeparatorLabel": "വേർതിരിവ്", "discovery": "കണ്ടെത്തൽ", "discoverySubtitle": "സൗജന്യ ആക്സസിനായി പ്രൊവൈഡറുകളെ സ്കാൻ ചെയ്യുക", - "conductor": "Conductor", + "conductor": "കണ്ടക്ടർ", "conductorSubtitle": "CLI-ഏജന്റ് സംഘം", "orchestration": "ഓർക്കസ്ട്രേഷൻ", "orchestrationSubtitle": "പ്രവർത്തിക്കുന്ന എല്ലാറ്റിന്റെയും തത്സമയ കാഴ്ച", @@ -1429,23 +1429,23 @@ "secretKeyHint": "പ്രാമാണീകരണത്തിനായി പേലോഡ് ഹെഡറിൽ ഒപ്പിടാൻ ഉപയോഗിക്കുന്നു." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "Discord വെബ്ഹുക്ക് URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "നിങ്ങളുടെ Discord ചാനൽ ഇന്റഗ്രേഷൻ ക്രമീകരണങ്ങളിൽ നിന്ന് പകർത്തിയ വെബ്ഹുക്ക് URL.", "tutorial": "Discord വെബ്ഹുക്ക് സൃഷ്ടിക്കുന്ന വിധം:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "Slack വെബ്ഹുക്ക് URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "നിങ്ങളുടെ Slack Incoming Webhooks ഇന്റഗ്രേഷനിൽ നിന്ന് പകർത്തിയ വെബ്ഹുക്ക് URL.", "tutorial": "Slack വെബ്ഹുക്ക് സൃഷ്ടിക്കുന്ന വിധം:" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "Telegram ബോട്ട് ടോക്കൺ", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "നിങ്ങളുടെ ബോട്ട് സൃഷ്ടിക്കുമ്പോൾ @BotFather-ൽ നിന്ന് ലഭിച്ച HTTP API ടോക്കൺ.", "chatId": "Telegram ചാറ്റ് ID / ചാനൽ", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 അല്ലെങ്കിൽ @channelname", "chatIdHint": "ചാറ്റിന്റെ/ചാനലിന്റെ തനതായ സംഖ്യാ ഐഡന്റിഫയർ അല്ലെങ്കിൽ പൊതു ഉപയോക്തൃനാമം.", "tutorial": "Telegram വെബ്ഹുക്ക് കോൺഫിഗർ ചെയ്യുന്ന വിധം:" } @@ -1815,7 +1815,7 @@ "topologyLegendRecent": "സമീപകാലത്തേത്", "topologyLegendError": "പിശക്", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", + "apiKeyLabel": "API കീ", "requestsShort": "{count} അഭ്യർത്ഥനകൾ", "providerModelsTitle": "{provider} - മോഡലുകൾ", "copiedModel": "പകർത്തി: {model}", @@ -2626,7 +2626,7 @@ "scrapeExtracting": "വേർതിരിച്ചെടുക്കുന്നു…", "scrapeFullPage": "പൂർണ്ണ പേജ്", "scrapeFormat": "ഫോർമാറ്റ്", - "formatMarkdown": "Markdown", + "formatMarkdown": "മാർക്ക്ഡൗൺ", "formatHtml": "HTML", "formatText": "ടെക്സ്റ്റ്", "scrapePreview": "പ്രിവ്യൂ", @@ -3176,8 +3176,8 @@ "copilotToolCalling": "ടൂൾ കോളിംഗ്", "copilotPasteInto": "ഇതിലേക്ക് ഒട്ടിക്കുക:", "copilotReloadInstruction": "തുടർന്ന് VS Code റീലോഡ് ചെയ്ത് ഇൻപുട്ട് പ്രോംപ്റ്റിൽ API കീ സജ്ജമാക്കുക.", - "wireApiChatCompletions": "Chat Completions (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiChatCompletions": "ചാറ്റ് പൂർത്തീകരണങ്ങൾ (/chat/completions)", + "wireApiResponses": "പ്രതികരണ API (/responses)", "cliproxyapiActionFailed": "പ്രവർത്തനം പരാജയപ്പെട്ടു", "cliproxyapiActionSucceeded": "പ്രവർത്തനം വിജയിച്ചു", "cliproxyapiCheckUpdates": "അപ്ഡേറ്റുകൾ പരിശോധിക്കുക", @@ -3862,9 +3862,9 @@ "groupApiKey": "API കീ", "groupAccount": "അക്കൗണ്ട്", "groupServiceTier": "സേവന നിരക്ക്", - "serviceTierFast": "Fast", - "serviceTierFlex": "Flex", - "serviceTierStandard": "Standard", + "serviceTierFast": "വേഗതയേറിയത്", + "serviceTierFlex": "ഫ്ലെക്സ്", + "serviceTierStandard": "സ്റ്റാൻഡേർഡ്", "serviceTierBreakdownTitle": "സേവന നിരക്ക്", "serviceTierBreakdownSubtitle": "Fast / Flex / Standard വിഭജനം", "serviceTierUsageSaved": "ഉപയോഗം ലാഭിച്ചു", @@ -4020,7 +4020,7 @@ "imageEditsDesc": "AI ഉപയോഗിച്ച് നിലവിലുള്ള ചിത്രങ്ങൾ എഡിറ്റ് ചെയ്യുകയും പരിഷ്കരിക്കുകയും ചെയ്യുക (ഇൻപെയിന്റിങ്, ഔട്ട്പെയിന്റിങ്, വേരിയേഷനുകൾ)", "batchApi": "ബാച്ച് API", "batchApiDesc": "വലിയ ബാച്ച് അഭ്യർത്ഥനകൾ അസമന്വിതമായി പ്രോസസ് ചെയ്യുക (OpenAI-അനുയോജ്യം)", - "filesApi": "Files API", + "filesApi": "ഫയലുകൾക്കുള്ള API", "filesApiDesc": "ബാച്ച് പ്രോസസ്സിങ്ങിനായി ഫയലുകൾ അപ്ലോഡ് ചെയ്ത് മാനേജ് ചെയ്യുക", "videoGeneration": "വീഡിയോ ജനറേഷൻ", "videoDesc": "ComfyUI, Stable Video Diffusion എന്നിവ പോലുള്ള AI മോഡലുകൾ ഉപയോഗിച്ച് വീഡിയോകൾ സൃഷ്ടിക്കുക.", @@ -4127,12 +4127,12 @@ "vscodeAliasDescriptionError": "ഈ സെഷനിൽ CLI കീകൾ ലോഡ് ചെയ്യാൻ കഴിയാത്തതിനാൽ പ്ലേസ്ഹോൾഡർ URL-കൾ കാണിക്കുന്നു.", "vscodeAliasDescriptionLoading": "CLI കീകൾ ലോഡ് ചെയ്യുന്നു. ഒരു കീ ലഭ്യമാകുന്നതുവരെ പ്ലേസ്ഹോൾഡർ URL-കൾ കാണിക്കും.", "vscodeAliasDescriptionPlaceholder": "പ്ലേസ്ഹോൾഡർ URL-കൾ കാണിക്കുന്നു. TOKEN മാറ്റിസ്ഥാപിക്കാൻ CLI Tools-ൽ ഒരു API കീ സൃഷ്ടിക്കുകയോ സജീവമാക്കുകയോ ചെയ്യുക.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI ടൂളുകൾ", "vscodeAliasBaseLabel": "VS Code ബേസ്", "vscodeAliasModelsLabel": "VS Code മോഡലുകൾ", "vscodeAliasChatLabel": "VS Code ചാറ്റ്", "localServer": "ലോക്കൽ സെർവർ", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "ക്ലൗഡ് OmniRoute", "copyUrl": "URL പകർത്തുക", "badgeLoopbackTooltip": "ഈ എൻഡ്പോയിന്റ് ലോക്കലായി മാത്രമേ ആക്സസ് ചെയ്യാനാകൂ (ലൂപ്പ്ബാക്ക് മാത്രം)", "badgeAlwaysProtectedTooltip": "ഈ എൻഡ്പോയിന്റ് എല്ലായ്പ്പോഴും പരിരക്ഷിതമാണ്, കൂടാതെ അംഗീകാരം ആവശ്യമാണ്", @@ -5801,10 +5801,10 @@ "ccCompatibleSummarizeThinkingDescription": "പിന്തുണയ്ക്കുന്ന Claude മോഡലുകൾ ദൃശ്യമാകുന്ന ചിന്താ ഡെൽറ്റകൾ സ്ട്രീം ചെയ്യുന്നതിന് CC Compatible ചിന്താ അഭ്യർത്ഥനകളിൽ `display: \"summarized\"` ചേർക്കുന്നു.", "ccCompatibleSummarizeThinkingLabel": "സംഗ്രഹിച്ച ചിന്താ പ്രദർശനം പ്രവർത്തനക്ഷമമാക്കുക", "ccCompatibleDetailsTitle": "CC-അനുയോജ്യ റിലേയുടെ വിശദാംശങ്ങൾ", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "CC അനുയോജ്യം", "ccCompatibleModelsDescription": "CC-അനുയോജ്യ റിലേകൾ മോഡൽ പട്ടിക ലഭ്യമാക്കുന്നില്ല. നിങ്ങളുടെ റിലേ സ്വീകരിക്കുന്ന Claude മോഡൽ ID-കൾ ചേർക്കുക.", "ccCompatibleNameHint": "ഈ Claude Code-ന് മാത്രമുള്ള റിലേയുടെ പ്രദർശന നാമം.", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay പ്രൊഡക്ഷൻ", "ccCompatiblePrefixHint": "prefix/model-id പോലുള്ള മോഡൽ അപരനാമങ്ങളിൽ ഉപയോഗിക്കുന്നു.", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Claude Code ക്ലയന്റുകൾക്ക് മാത്രമായി സേവനം നൽകുന്ന റിലേകൾക്കായി മാത്രം ഈ പ്രൊവൈഡർ ഉപയോഗിക്കുക. ആ റിലേകൾ സ്വീകരിക്കുന്നതിനായി OmniRoute ഇൻകമിംഗ് അഭ്യർത്ഥനകളെല്ലാം Claude Code-അനുയോജ്യമായ വയർ ഫോർമാറ്റിലേക്ക് പുനരെഴുതുന്നു. നിങ്ങൾ Claude Code CLI മാത്രം ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, അല്ലെങ്കിൽ ഈ റിലേ തരം എന്താണെന്ന് ഉറപ്പില്ലെങ്കിൽ, പകരം ഒരു സാധാരണ Anthropic-അനുയോജ്യ പ്രൊവൈഡർ ഉപയോഗിക്കുക.", @@ -5883,8 +5883,8 @@ "m365TierLabel": "Copilot ടിയർ", "m365TierHint": "ഈ കണക്ഷൻ ഉപയോഗിക്കുന്ന Microsoft 365 Copilot സർഫേസ് തിരഞ്ഞെടുക്കുക. Individual എന്നത് ഡിഫോൾട്ട് ഉപഭോക്തൃ BizChat ആണ്; Education, Enterprise (work) എന്നിവ അതത് ടെനന്റ് സർഫേസുകൾ തിരഞ്ഞെടുക്കുന്നു.", "m365TierIndividualOption": "Individual (ഡിഫോൾട്ട്)", - "m365TierEduOption": "Education", - "m365TierEnterpriseOption": "Enterprise / Work", + "m365TierEduOption": "വിദ്യാഭ്യാസം", + "m365TierEnterpriseOption": "എന്റർപ്രൈസ് / ജോലി", "tierOverrideLabel": "ടിയർ ഓവർറൈഡ്", "tierOverrideAuto": "ഓട്ടോ (റൂട്ടിംഗ് തീരുമാനിക്കും)", "tierOverrideFree": "സൗജന്യം", @@ -6100,7 +6100,7 @@ "onboardingBaseUrlOverride": "Base URL ഓവർറൈഡ്", "onboardingBaseUrlOverrideHint": "ഐച്ഛികം. providerSpecificData.baseUrl ആയി സംഭരിക്കും.", "onboardingRegion": "പ്രദേശം", - "onboardingSearchCx": "Search CX / Engine id", + "onboardingSearchCx": "Search CX / എഞ്ചിൻ ഐഡി", "onboardingProviderSpecificIdPlaceholder": "ഐച്ഛികമായ ദാതാവ്-നിർദ്ദിഷ്ട id", "onboardingCustomUserAgent": "ഇഷ്ടാനുസൃത User-Agent", "onboardingWorking": "പ്രവർത്തിക്കുന്നു…", @@ -6367,15 +6367,15 @@ "checkWebToken": "ടോക്കൺ പരിശോധിക്കുക", "huggingchatLabel": "HuggingChat (സൗജന്യം)", "huggingchatDesc": "huggingface.co/chat വഴിയുള്ള സൗജന്യ LLM ചാറ്റ്", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe വെബ്", "poeWebDesc": "poe.com വഴിയുള്ള മൾട്ടി-മോഡൽ ചാറ്റ്", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice വെബ്", "veniceWebDesc": "സ്വകാര്യതയിൽ ശ്രദ്ധ കേന്ദ്രീകരിച്ച AI ചാറ്റ്", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel വെബ്", "v0VercelWebDesc": "v0.dev വഴിയുള്ള AI കോഡ് ജനറേഷൻ", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi വെബ്", "kimiWebDesc": "www.kimi.com വഴിയുള്ള Moonshot AI ഉപഭോക്തൃ ചാറ്റ് (അന്തർദേശീയം, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola വെബ്", "doubaoWebDesc": "dola.com വഴിയുള്ള ByteDance AI ചാറ്റ്", "overrideBaseUrlAdvanced": "വിപുലമായത്: അടിസ്ഥാന URL അസാധുവാക്കുക", "overrideBaseUrlHint": "വിപുലമായത്: ഈ ബിൽറ്റ്-ഇൻ പ്രൊവൈഡറെ ഒരു ഇഷ്ടാനുസൃത എൻഡ്പോയിന്റിലേക്ക് നയിക്കുക. ഡിഫോൾട്ട് ഉപയോഗിക്കാൻ ഇത് ശൂന്യമായി വിടുക.", @@ -6478,7 +6478,7 @@ "savedModelEndpointSettings": "മോഡൽ എൻഡ്പോയിന്റ് ക്രമീകരണങ്ങൾ സംരക്ഷിച്ചു", "searchByModelAria": "മോഡൽ ഉപയോഗിച്ച് തിരയുക", "selectSupportedEndpoint": "പിന്തുണയ്ക്കുന്ന ഒരു എൻഡ്പോയിന്റെങ്കിലും തിരഞ്ഞെടുക്കുക", - "antigravityClientProfileHarness": "Harness / CLI" + "antigravityClientProfileHarness": "ഹാർനെസ് / CLI" }, "settings": { "title": "ക്രമീകരണങ്ങൾ", @@ -6530,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "ഇവ അടങ്ങിയ ഖണ്ഡികകൾ ഒഴിവാക്കുക: {items}", "routingSummarizeDropParagraphStartsWith": "ഇവകൊണ്ട് ആരംഭിക്കുന്ന ഖണ്ഡികകൾ ഒഴിവാക്കുക: {items}", "routingSummarizeReplaceText": "\"{match}\" → \"{replacement}\" ആയി പകരംവയ്ക്കുക", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "റെഗുലർ എക്സ്പ്രഷൻ /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "ഇവ അടങ്ങിയ ബ്ലോക്കുകൾ ഒഴിവാക്കുക: {items}", "routingSummarizePrependSystemBlock": "ബ്ലോക്ക് തുടക്കത്തിൽ ചേർക്കുക: \"{text}\"", "routingSummarizeAppendSystemBlock": "ബ്ലോക്ക് അവസാനത്തിൽ ചേർക്കുക: \"{text}\"", @@ -7143,7 +7143,7 @@ "ipModeWhitelist": "വൈറ്റ്ലിസ്റ്റ്", "ipModeWhitelistPriority": "WL മുൻഗണന", "addIpAddress": "IP വിലാസം ചേർക്കുക", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 അല്ലെങ്കിൽ 10.0.*.*", "block": "+ തടയുക", "allow": "+ അനുവദിക്കുക", "blocked": "തടഞ്ഞവ ({count})", @@ -7380,7 +7380,7 @@ "customPricingNote": "നിർദ്ദിഷ്ട മോഡലുകളുടെ ഡിഫോൾട്ട് നിരക്ക് നിങ്ങൾക്ക് മറികടക്കാം. സ്വയമേവ കണ്ടെത്തിയ നിരക്കുകളേക്കാൾ ഇഷ്ടാനുസൃത ഓവർറൈഡുകൾക്ക് മുൻഗണന ലഭിക്കും.", "editPricing": "നിരക്ക് തിരുത്തുക", "viewFullDetails": "പൂർണ്ണ വിശദാംശങ്ങൾ കാണുക", - "themeCoral": "Coral", + "themeCoral": "കോറൽ", "adaptiveVolumeRouting": "അഡാപ്റ്റീവ് വോള്യം റൂട്ടിംഗ്", "adaptiveVolumeRoutingDesc": "പേലോഡ് വോളിയത്തിന്റെയും ത്രൂപുട്ട് സമ്മർദത്തിന്റെയും അടിസ്ഥാനത്തിൽ കണക്ഷനുകൾ ചലനാത്മകമായി സ്കെയിൽ ചെയ്യുക.", "lkgpToggleTitle": "അവസാനം വിജയകരമായിരുന്ന പ്രൊവൈഡർ (LKGP)", @@ -7931,7 +7931,7 @@ "resilienceEnableServerSideWait": "സെർവർ-സൈഡ് കാത്തിരിപ്പ് പ്രവർത്തനക്ഷമമാക്കുക", "resilienceMaximumRetries": "പരമാവധി പുനഃശ്രമങ്ങൾ", "resilienceMaximumWaitPerRetry": "ഓരോ പുനഃശ്രമത്തിനുമുള്ള പരമാവധി കാത്തിരിപ്പ്", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "SkillsMP മാർക്കറ്റ്പ്ലേസ്", "memorySkillsFailedToSave": "സേവ് ചെയ്യാനായില്ല", "memorySkillsApiKey": "API കീ", "memorySkillsActiveSkillsProvider": "സജീവ Skills ദാതാവ്", @@ -8272,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge മാറ്റി", "modalityBridgeMovedBody": "Vision Bridge ക്രമീകരണങ്ങൾ ഇപ്പോൾ പ്രത്യേക Modality Bridge പേജിലാണ്.", "modalityBridgeMovedCta": "Modality Bridge ക്രമീകരണങ്ങൾ തുറക്കുക", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "ഓഡിയോ ബ്രിഡ്ജ്", "modalityBridgeAudioDesc": "തിരഞ്ഞെടുത്ത ടെക്സ്റ്റ് മോഡലുമായി തുടരുന്നതിന് മുമ്പ് സ്പീച്ച്-ടു-ടെക്സ്റ്റ് മോഡൽ ഉപയോഗിച്ച് ഓഡിയോ ട്രാൻസ്ക്രൈബ് ചെയ്യുക.", "modalityBridgeAudioEnabled": "Audio Bridge പ്രവർത്തനക്ഷമമാക്കുക", "modalityBridgeAudioEnabledDesc": "ലക്ഷ്യ മോഡലിന് ഓഡിയോ പ്രോസസ്സ് ചെയ്യാൻ കഴിയാത്തപ്പോൾ ഓഡിയോ ഭാഗങ്ങൾക്ക് പകരം ട്രാൻസ്ക്രിപ്റ്റുകൾ ഉപയോഗിക്കുക.", @@ -8284,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge ശരിയായി പ്രവർത്തിക്കുന്നു — {model} ട്രാൻസ്ക്രൈബ് ചെയ്ത {count} ക്ലിപ്പ്(കൾ)", "modalityBridgeAudioTestNoop": "Audio Bridge സജീവമായില്ല (ലക്ഷ്യ മോഡൽ ഓഡിയോ പിന്തുണയ്ക്കുന്നുണ്ടാകാം, ഒരു STT ദാതാവും കണക്റ്റുചെയ്തിട്ടില്ലായിരിക്കാം, അല്ലെങ്കിൽ Bridge പ്രവർത്തനരഹിതമായിരിക്കാം)", "modalityBridgeAudioTestError": "ഓഡിയോ പരിശോധന പരാജയപ്പെട്ടു: {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "വീഡിയോ ബ്രിഡ്ജ്", "modalityBridgeVideoDesc": "വീഡിയോ ഫ്രെയിമുകൾ സാമ്പിൾ ചെയ്ത്, വിഷൻ മോഡൽ ഉപയോഗിച്ച് അവയെ വിവരിച്ചശേഷം, തിരഞ്ഞെടുത്ത ടെക്സ്റ്റ് മോഡലുമായി തുടരുക.", "modalityBridgeVideoRuntimeReady": "റൺടൈം തയ്യാറാണ്", "modalityBridgeVideoRuntimeChecking": "റൺടൈം പരിശോധിക്കുന്നു…", @@ -8382,7 +8382,7 @@ "qdrantCollection": "ശേഖരം" }, "contextRtk": { - "title": "RTK Engine", + "title": "RTK എഞ്ചിൻ", "description": "ടൂൾ ഔട്ട്പുട്ട്, ടെർമിനൽ ലോഗുകൾ, ബിൽഡ് ഫലങ്ങൾ എന്നിവയ്ക്കുള്ള കമാൻഡ്-അവബോധമുള്ള കംപ്രഷൻ.", "enabled": "പ്രവർത്തനക്ഷമമാക്കി", "intensity": "തീവ്രത", @@ -8506,7 +8506,7 @@ "description": "വ്യക്തമായ വരി-എണ്ണ മാർക്കറുകളോടുകൂടിയ, ഒരേ ഘടനയുള്ള JSON അറേകളുടെ നഷ്ടരഹിത ടാബുലാർ കോംപാക്ഷൻ." }, "session-dedup": { - "name": "Session Dedup", + "name": "സെഷൻ ഡീഡ്യൂപ്പ്", "description": "വീണ്ടെടുക്കാവുന്ന ഉള്ളടക്ക മാർക്കറുകളോടുകൂടിയ, സംഭാഷണ ടേണുകൾക്കിടയിലെ ബ്ലോക്ക് ഡീഡ്യൂപ്ലിക്കേഷൻ." }, "ccr": { @@ -8908,7 +8908,7 @@ "save": "സംരക്ഷിക്കുക" }, "contextCaveman": { - "title": "Caveman Engine", + "title": "Caveman എഞ്ചിൻ", "description": "നിയമാധിഷ്ഠിത സന്ദേശ കംപ്രഷൻ, ഭാഷാ പാക്കുകൾ, അനലിറ്റിക്സ്, ഔട്ട്പുട്ട് മോഡ് നിയന്ത്രണങ്ങൾ.", "advancedConfig": "വിപുലമായ കോൺഫിഗറേഷൻ", "advancedConfigDesc": "കംപ്രഷൻ പ്രവർത്തനം സൂക്ഷ്മമായി ക്രമീകരിക്കുക", @@ -9720,8 +9720,8 @@ "chooseAuthMethod": "നിങ്ങളുടെ പ്രാമാണീകരണ രീതി തിരഞ്ഞെടുക്കുക:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", + "googleAccount": "Google അക്കൗണ്ട്", + "githubAccount": "GitHub അക്കൗണ്ട്", "importToken": "ടോക്കൺ ഇറക്കുമതി ചെയ്യുക", "pasteToken": "Kiro IDE-യിൽ നിന്നുള്ള റിഫ്രഷ് ടോക്കൺ ഒട്ടിക്കുക.", "awsRegion": "AWS മേഖല", @@ -9970,7 +9970,7 @@ "howItWorksDescription": "നിങ്ങളുടെ ആപ്ലിക്കേഷനിൽ നിന്ന് ഞങ്ങളുടെ ബുദ്ധിപരമായ റൂട്ടിംഗ് ലെയറിലൂടെ ആ ജോലിക്ക് ഏറ്റവും അനുയോജ്യമായ ദാതാവിലേക്ക് ഡാറ്റ തടസ്സമില്ലാതെ ഒഴുകുന്നു.", "howItWorksStep1Title": "1. CLI-കളും SDK-കളും", "howItWorksStep1Description": "നിങ്ങളുടെ അഭ്യർത്ഥനകൾ നിങ്ങളുടെ പ്രിയപ്പെട്ട ടൂളുകളിൽ നിന്നോ ഞങ്ങളുടെ ഏകീകൃത SDK-യിൽ നിന്നോ ആരംഭിക്കുന്നു. base URL മാത്രം മാറ്റുക.", - "howItWorksStep2Title": "2. OmniRoute Hub", + "howItWorksStep2Title": "2. OmniRoute ഹബ്", "howItWorksStep2Description": "ഞങ്ങളുടെ എൻജിൻ പ്രോംപ്റ്റ് വിശകലനം ചെയ്യുകയും ദാതാവിന്റെ നില പരിശോധിക്കുകയും ഏറ്റവും കുറഞ്ഞ ലേറ്റൻസിയോ ചെലവോ ലഭിക്കുന്ന രീതിയിൽ റൂട്ട് ചെയ്യുകയും ചെയ്യുന്നു.", "howItWorksStep3Title": "3. AI ദാതാക്കൾ", "howItWorksStep3Description": "അഭ്യർത്ഥന OpenAI, Anthropic, Gemini അല്ലെങ്കിൽ മറ്റുള്ളവ വഴി തൽക്ഷണം പൂർത്തീകരിക്കപ്പെടുന്നു.", @@ -10104,7 +10104,7 @@ "providersCount": "{count} പ്രൊവൈഡർമാർ", "providerTypeFree": "സൗജന്യ ടയർ", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "API കീ", "useCaseSingleEndpointTitle": "നിരവധി പ്രൊവൈഡർമാർക്കായി ഒരൊറ്റ എൻഡ്പോയിന്റ്", "useCaseSingleEndpointText": "ക്ലയന്റുകളെ ഒരൊറ്റ ബേസ് URL-ലേക്ക് പോയിന്റ് ചെയ്ത് മോഡൽ പ്രിഫിക്സ് അനുസരിച്ച് റൂട്ട് ചെയ്യുക (ഉദാഹരണത്തിന്: gh/, cc/, kr/, openai/).", "useCaseFallbackTitle": "കോംബോകൾ ഉപയോഗിച്ചുള്ള ഫാൾബാക്കും മോഡൽ മാറ്റലും", @@ -10222,7 +10222,7 @@ "mcpToolsMemoryDesc": "സ്ഥിരമായ സംഭാഷണ മെമ്മറി എൻട്രികൾ തിരയുക, ചേർക്കുക, മായ്ക്കുക.", "mcpToolsSkillsTitle": "കഴിവുകൾ", "mcpToolsSkillsDesc": "ഇഷ്ടാനുസൃത കഴിവുകളുടെ നിർവഹണങ്ങൾ പട്ടികപ്പെടുത്തുക, പ്രവർത്തനക്ഷമമാക്കുക, നിർവഹിക്കുക, നിരീക്ഷിക്കുക.", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "ഓട്ടോ-കോംബോ", "featureAutoComboText": "നിങ്ങൾ ബന്ധിപ്പിച്ചിട്ടുള്ള പ്രൊവൈഡർമാർ, ഉപയോഗ രീതികൾ, മോഡൽ ശേഷികൾ എന്നിവയെ അടിസ്ഥാനമാക്കി ഒപ്റ്റിമൈസ് ചെയ്ത കോംബോകൾ സ്വയമേവ സൃഷ്ടിക്കുക.", "featureSearchTitle": "വെബ് തിരയൽ", "featureSearchText": "അനലിറ്റിക്സും ചെലവ് ട്രാക്കിംഗും ഉൾപ്പെടെ 5 പ്രൊവൈഡർമാരുമായുള്ള (Serper, Brave, Exa, Tavily, Perplexity) സംയോജിത വെബ് തിരയൽ.", @@ -10237,10 +10237,10 @@ "protocolAcpStep1": "രജിസ്റ്റർ ചെയ്ത ACP ഏജന്റുകളെ കാണാൻ Dashboard → Agents എന്നതിലേക്ക് പോകുക.", "protocolAcpStep2": "ശേഷികളും എൻഡ്പോയിന്റ് കോൺഫിഗറേഷനും സഹിതം പുതിയ ഏജന്റുകളെ രജിസ്റ്റർ ചെയ്യുക.", "protocolAcpStep3": "ഏജന്റ് ആശയവിനിമയ ചാനലുകൾ കോൺഫിഗർ ചെയ്യാൻ CLI Tools ഉപയോഗിക്കുക.", - "metadataTitleTemplate": "%s — OmniRoute Docs", + "metadataTitleTemplate": "%s — OmniRoute ഡോക്സ്", "metadataDefaultTitle": "OmniRoute ഡോക്യുമെന്റേഷൻ", "metadataDescription": "OmniRoute AI ഗേറ്റ്വേയ്ക്കായുള്ള സമഗ്ര ഡോക്യുമെന്റേഷൻ — സജ്ജീകരണം, API, കംപ്രഷൻ, വിന്യാസം എന്നിവയും അതിലേറെയും.", - "layoutNavTitle": "OmniRoute Docs", + "layoutNavTitle": "OmniRoute ഡോക്സ്", "layoutHomeLink": "ഡോക്സ് ഹോം", "layoutDashboardLink": "← ഡാഷ്ബോർഡിലേക്ക് മടങ്ങുക", "homeTitle": "OmniRoute ഡോക്യുമെന്റേഷൻ", @@ -10442,7 +10442,7 @@ "noTasksTitle": "ഇതുവരെ ടാസ്കുകളൊന്നുമില്ല", "noTasksDesc": "ആരംഭിക്കാൻ നിങ്ങളുടെ ആദ്യ ടാസ്ക് സൃഷ്ടിക്കുക.", "tasksTab": "ടാസ്കുകൾ", - "agentsTab": "Agents", + "agentsTab": "ഏജന്റുകൾ", "settingsTab": "ക്രമീകരണങ്ങൾ", "agentsEnabled": "പ്രവർത്തനക്ഷമമാക്കി", "agentsDisabled": "പ്രവർത്തനരഹിതമാക്കി", @@ -10968,9 +10968,9 @@ "strategyLatency": "ലേറ്റൻസി-ഒപ്റ്റിമൈസ്ഡ്", "poolMembersLabel": "പൂൾ അംഗങ്ങൾ ({count})", "poolNoMembers": "ഈ പൂളിൽ ഇതുവരെ പ്രോക്സികളൊന്നുമില്ല.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# എക്സിറ്റ്} other {# എക്സിറ്റുകൾ}} {connections, plural, one {# കണക്ഷൻ} other {# കണക്ഷനുകൾ}} ഉപയോഗിച്ചു · ഒരു എക്സിറ്റിൽ പരമാവധി {max} · കഴിഞ്ഞ {hours} മണിക്കൂർ", + "poolEgressObservationEmpty": "കഴിഞ്ഞ {hours} മണിക്കൂറിൽ ട്രാഫിക്കൊന്നും നിരീക്ഷിച്ചിട്ടില്ല", + "poolEgressObservationHint": "നിശ്ചിത സമയപരിധിയിലെ പ്രോക്സി ലോഗിൽ നിന്ന് കണക്കാക്കിയത്: ഈ പൂളിലെ അംഗങ്ങൾക്കായി നിരീക്ഷിച്ച വ്യത്യസ്ത എഗ്രസ് IP-കളും അവ ഉപയോഗിച്ച OmniRoute കണക്ഷനുകളും. \"ഒരു എക്സിറ്റിൽ\" എന്നത് ഒരേ സമയത്തെയല്ല, നിശ്ചിത സമയപരിധിയെയാണ് സൂചിപ്പിക്കുന്നത്. ഓരോ IP-യ്ക്കുമുള്ള 429 ലോക്കൗട്ട് ഒരേ പ്രൊവൈഡർ ഫാമിലിയിലെ കണക്ഷനുകൾ മാത്രമേ താൽക്കാലികമായി നിർത്തൂ.", "poolRemove": "നീക്കം ചെയ്യുക", "poolRemoveFailed": "പൂളിൽ നിന്ന് പ്രോക്സി നീക്കം ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു", "poolAddLabel": "ഒരു പ്രോക്സി ചേർക്കുക", @@ -11374,7 +11374,7 @@ }, "payloadMissing": "ഈ ലോഗ് എൻട്രിക്കായുള്ള വിശദമായ പേലോഡ് ആർട്ടിഫാക്റ്റ് ഇനി ലഭ്യമല്ല.", "payloadCorrupt": "വിശദമായ പേലോഡ് ആർട്ടിഫാക്റ്റ് പാഴ്സ് ചെയ്യാനായില്ല.", - "notAvailable": "N/A", + "notAvailable": "ലഭ്യമല്ല", "semanticCache": "സെമാന്റിക് (OmniRoute)", "upstreamCache": "അപ്സ്ട്രീം (Provider)", "ariaLabel": "അഭ്യർത്ഥന ലോഗിന്റെ വിശദാംശങ്ങൾ", @@ -11388,7 +11388,7 @@ "endedAt": "അവസാനിച്ച സമയം", "duration": "ദൈർഘ്യം", "model": "മോഡൽ", - "provider": "Provider", + "provider": "ദാതാവ്", "account": "അക്കൗണ്ട്", "input": "ഇൻപുട്ട്", "totalIn": "ആകെ ഇൻപുട്ട്: {value}", @@ -11450,8 +11450,8 @@ "allLevels": "എല്ലാ നിലവാരങ്ങളും", "allProviders": "എല്ലാ പ്രൊവൈഡർമാരും", "total": "ആകെ", - "ok": "OK", - "err": "ERR", + "ok": "ശരി", + "err": "പിശക്", "timeoutShort": "TMO", "direct": "നേരിട്ട്", "newest": "ഏറ്റവും പുതിയത്", @@ -12992,7 +12992,7 @@ "description": "ബൈറ്റുകൾ ഇതിനകം ക്ലയന്റിൽ എത്തിയതിനുശേഷവും പ്രതികരണം വീണ്ടും അഭ്യർത്ഥിച്ച് കൂട്ടിച്ചേർക്കാൻ സ്ട്രീം വീണ്ടെടുക്കലിനെ അനുവദിക്കുക." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "മിഡ്-സ്ട്രീം തുടർച്ചയിലെ ടൂൾ കോൾ സുരക്ഷിതമാക്കുക: ഒരു ടൂൾ കോൾ അയച്ചതിന് ശേഷം (ഇപ്പോഴും പുരോഗതിയിലായാലും ഇതിനകം പൂർത്തിയായാലും) മുറിഞ്ഞ സ്ട്രീം ഒരിക്കലും പുനരാരംഭിക്കരുത്; മുഴുവൻ റീട്രൈ ബജറ്റും ഉപയോഗിക്കുന്നതിന് പകരം ഒരു ശൂന്യ തുടർച്ചയ്ക്ക് ശേഷം നിർത്തുക." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "ഉപയോഗപ്രദമായ ഒരു ഫ്രെയിമും അയയ്ക്കുന്നതിന് മുമ്പ് സ്ട്രീം അടയുകയും അതേ കണക്ഷനിലെ പരിമിതമായ പുനഃശ്രമം തീരുകയും ചെയ്യുമ്പോൾ ഒരിക്കൽ ഒരു സഹോദര കണക്ഷനിലേക്ക് ഫെയിൽഓവർ ചെയ്യുക. ഉപയോഗിക്കാവുന്ന സഹോദര കണക്ഷൻ ഇല്ലെങ്കിൽ യഥാർത്ഥ early-EOF പിശക് തിരികെ നൽകും. ഓഫ്: പുനഃശ്രമത്തിന് ശേഷം early-EOF അന്തിമമായി തുടരും." @@ -13035,12 +13035,12 @@ "description": "മോഡൽ ക്ലയന്റിന് ഉപയോഗിക്കാവുന്ന പ്രതികരണം നൽകുന്നതുവരെ സ്ട്രീമിംഗ് അല്ലാത്ത, സെർവർ ഉടമസ്ഥതയിലുള്ള ടൂൾ കോളുകൾ തുടരുക." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After ഉറവിടം", + "description": "സമാഹരിച്ച 429/503 ലഭ്യമല്ലാത്ത പ്രതികരണങ്ങളിൽ, വ്യക്തമായ ഭാവി റീട്രൈ സമയം അറിയാത്തപ്പോൾ കൃത്രിമമായ 1s അയയ്ക്കുന്നതിന് പകരം Retry-After ഒഴിവാക്കുക, error.retry_after_provenance ചേർക്കുക, കൂടാതെ കോംബോ ഡ്രെയിൻ പാത്തുകളിലെ വിവരണാത്മക റീട്രൈ സൂചനകൾ വായിക്കുക." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "സംരക്ഷിത-മുൻഗണന ഇൻഫ്രാ സ്റ്റോപ്പുകൾ 502 ആയി", + "description": "ക്വോട്ട-മാത്രം-ഫാൾബാക്ക് മുൻഗണനാ ടാർഗറ്റ്, ക്വോട്ട കാരണമല്ലെന്ന് തെളിയിക്കാവുന്ന ഒരു കാരണത്താൽ കോംബോ നിർത്തുമ്പോൾ 503-ന് പകരം 502 നൽകുക: തുറന്ന പ്രൊവൈഡർ സർക്യൂട്ട് ബ്രേക്കർ അല്ലെങ്കിൽ പ്രവചനാത്മക ലേറ്റൻസി സ്കിപ്പ്." } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "കോംബോ ആരോഗ്യനില", "callLogs": "കോൾ ലോഗുകൾ", "costs": "ചെലവുകൾ", - "playground": "Playground", + "playground": "പ്ലേഗ്രൗണ്ട്", "nestedCombo": "നെസ്റ്റഡ് കോംബോ", "modelTarget": "മോഡൽ ടാർഗെറ്റ്", "weight": "{value}% ഭാരം", @@ -13300,7 +13300,7 @@ "allModels": "എല്ലാ മോഡലുകളും", "keepModel": "മോഡൽ നിലനിർത്തുക", "otherModel": "മറ്റൊരു മോഡൽ", - "combo": "Combo", + "combo": "കോംബോ", "priorityShort": "മുൻഗണന {value}", "toggleAria": "{name} പ്രവർത്തനക്ഷമമാക്കുക", "edit": "തിരുത്തുക", @@ -13318,7 +13318,7 @@ "missing": "വ്യക്തമാക്കിയിട്ടില്ല", "signalOnly": "വ്യതിരിക്തമല്ലാത്ത റീസണിംഗ് സിഗ്നൽ", "requestTags": "അഭ്യർത്ഥന ടാഗുകൾ", - "requestTagsExample": "coding, internal", + "requestTagsExample": "കോഡിംഗ്, ആന്തരികം", "tagMode": "ടാഗ് പൊരുത്തപ്പെടുത്തൽ", "effortMode": "ശ്രമനില മോഡ്", "targetEffort": "ലക്ഷ്യ ശ്രമം", @@ -13358,7 +13358,7 @@ } }, "chaosConfig": { - "pageTitle": "Chaos Mode", + "pageTitle": "കേയോസ് മോഡ്", "pageSubtitle": "ഒരേ ടാസ്ക്കിൽ ഒന്നിലധികം AI മോഡലുകൾ സമാന്തരമായോ സഹകരണപരമായോ പ്രവർത്തിപ്പിക്കുക", "enableChaos": "Chaos Mode പ്രവർത്തനക്ഷമമാക്കുക", "enableChaosDesc": "Chaos Mode പ്രവർത്തനക്ഷമമാക്കിയ API കീകൾക്ക് ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ അനുവദിക്കുക", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "ലക്ഷ്യമാക്കിയ മോഡലിന് ആവശ്യമായ ശേഷികൾ (വിഷൻ, ടൂളുകൾ, ഘടനാബദ്ധമായ ഔട്ട്പുട്ട്, കോൺടെക്സ്റ്റ് വിൻഡോ) ഇല്ലെങ്കിൽ അഭ്യർത്ഥനകൾ അയയ്ക്കുന്നതിന് മുമ്പ് നിരസിക്കുക. കോംബോ-ലെയർ അനുയോജ്യതാ ഫിൽട്ടർ മറികടക്കുന്ന നേരിട്ടുള്ള ഒറ്റ-പ്രൊവൈഡർ അഭ്യർത്ഥനകളെ ഇത് പരിരക്ഷിക്കുന്നു.", "featureFlagDisableContextWindowChecksDescription": "നേരിട്ടുള്ള ഒറ്റ-മോഡൽ അഭ്യർത്ഥനകൾക്കായി OmniRoute-ന്റെ ലോക്കൽ കോൺടെക്സ്റ്റ്-വിൻഡോ, പരമാവധി ഇൻപുട്ട്-ടോക്കൺ പരിശോധനകൾ ഒഴിവാക്കുക. അപ്സ്ട്രീം പ്രൊവൈഡർമാർ അവരുടെ യഥാർഥ പരിധികൾ തുടർന്നും നടപ്പാക്കും. പ്രോംപ്റ്റ് കംപ്രഷനും ഔട്ട്പുട്ട്-ടോക്കൺ പരിധികളും സജീവമായി തുടരും.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "തിരയൽ സ്ഥിതിവിവരക്കണക്കുകളും സമീപകാല തിരയലുകളും ഇപ്പോഴും സജീവ കണക്ഷനുള്ള പ്രൊവൈഡർമാരെ മാത്രമേ കണക്കാക്കൂ (duckduckgo-free പോലുള്ള കീ ആവശ്യമില്ലാത്ത പ്രൊവൈഡർമാരെ എല്ലായ്പ്പോഴും കണക്കാക്കും). ഓഫാക്കിയാൽ, പ്രൊവൈഡർ ഐഡിയുള്ള നിലനിർത്തിയ എല്ലാ തിരയൽ വരികളും സൂക്ഷിക്കും.", "publicSystem": { "notFound": { "title": "പേജ് കണ്ടെത്തിയില്ല", @@ -13978,7 +13978,7 @@ "runners": "റണ്ണറുകൾ", "tasks": "ടാസ്കുകൾ", "colName": "പേര്", - "colClis": "CLIs", + "colClis": "CLI-കൾ", "colStatus": "നില", "colTask": "ടാസ്ക്", "colMode": "മോഡ്", @@ -14051,9 +14051,9 @@ "filterSources": "ഉറവിടങ്ങൾ", "filterProviders": "സേവനദാതാക്കൾ", "clearFilters": "ഫിൽട്ടറുകൾ മായ്ക്കുക", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "ക്ലൗഡ് ഏജന്റ്", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "കണ്ടക്ടർ", "sourceStale": "{since} മുതൽ പുതുക്കിയിട്ടില്ല", "sourceOffline": "ഓഫ്ലൈൻ", "sourceCollapse": "ചുരുക്കുക", diff --git a/src/i18n/messages/mr.json b/src/i18n/messages/mr.json index 71358f0175..036a6215c6 100644 --- a/src/i18n/messages/mr.json +++ b/src/i18n/messages/mr.json @@ -1,15 +1,15 @@ { "common": { - "save": "Save", - "cancel": "Cancel", - "delete": "Delete", - "loading": "Loading...", + "save": "जतन करा", + "cancel": "रद्द करा", + "delete": "हटवा", + "loading": "लोड करत आहे...", "selectOption": "पर्याय निवडा", - "error": "An error occurred", - "success": "Success", - "confirm": "Are you sure?", - "refresh": "Refresh", - "close": "Close", + "error": "एक त्रुटी आली", + "success": "यशस्वी", + "confirm": "तुम्हाला खात्री आहे का?", + "refresh": "रीफ्रेश करा", + "close": "बंद करा", "previousPage": "मागील पृष्ठ", "nextPage": "पुढील पृष्ठ", "capsLockOn": "Caps Lock सुरू आहे", @@ -17,142 +17,142 @@ "toggleColumns": "कॉलम टॉगल करा", "confirmTitle": "निश्चित करा", "confirmAction": "निश्चित करा", - "add": "Add", - "edit": "Edit", - "search": "Search", - "back": "Back", - "next": "Next", - "submit": "Submit", - "reset": "Reset", - "copy": "Copy", - "copied": "Copied!", - "enabled": "Enabled", - "disabled": "Disabled", - "active": "Active", - "inactive": "Inactive", - "noData": "No data available", - "nothingHere": "Nothing here yet", - "configure": "Configure", + "add": "जोडा", + "edit": "संपादित करा", + "search": "शोधा", + "back": "मागे", + "next": "पुढे", + "submit": "सबमिट करा", + "reset": "रीसेट करा", + "copy": "कॉपी करा", + "copied": "कॉपी केले!", + "enabled": "सक्षम", + "disabled": "अक्षम", + "active": "सक्रिय", + "inactive": "निष्क्रिय", + "noData": "कोणताही डेटा उपलब्ध नाही", + "nothingHere": "अद्याप येथे काहीही नाही", + "configure": "कॉन्फिगर करा", "manualConfig": "मॅन्युअल कॉन्फिग", - "manage": "Manage", - "name": "Name", - "actions": "Actions", - "status": "Status", - "type": "Type", + "manage": "व्यवस्थापित करा", + "name": "नाव", + "actions": "क्रिया", + "status": "स्थिती", + "type": "प्रकार", "model": "Model", - "models": "models", - "provider": "Provider", + "models": "मॉडेल्स", + "provider": "प्रदाता", "unknownProvider": "अज्ञात प्रदाता", - "account": "Account", - "time": "Time", - "details": "Details", - "created": "Created", - "lastUsed": "Last Refreshed", - "loadMore": "Load More", - "noResults": "No results found", - "reloadPage": "Reload Page", - "connected": "Connected", - "disconnected": "Disconnected", - "notConfigured": "Not configured", - "testConnection": "Test Connection", - "enable": "Enable", - "disable": "Disable", - "columns": "Columns", - "newest": "Newest", - "oldest": "Oldest", - "all": "All", - "none": "None", - "yes": "Yes", - "no": "No", + "account": "खाते", + "time": "वेळ", + "details": "तपशील", + "created": "तयार केले", + "lastUsed": "शेवटचे रीफ्रेश केले", + "loadMore": "आणखी लोड करा", + "noResults": "कोणतेही परिणाम आढळले नाहीत", + "reloadPage": "पृष्ठ पुन्हा लोड करा", + "connected": "कनेक्ट केलेले", + "disconnected": "डिस्कनेक्ट केलेले", + "notConfigured": "कॉन्फिगर केलेले नाही", + "testConnection": "कनेक्शन तपासा", + "enable": "सक्षम करा", + "disable": "अक्षम करा", + "columns": "स्तंभ", + "newest": "सर्वात नवीन", + "oldest": "सर्वात जुने", + "all": "सर्व", + "none": "काहीही नाही", + "yes": "होय", + "no": "नाही", "on": "चालू", "off": "बंद", - "warning": "Warning", - "note": "Note", - "free": "Free", - "skipToContent": "Skip to content", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", - "accept": "Accept", - "accountId": "Account ID", + "warning": "चेतावणी", + "note": "टीप", + "free": "विनामूल्य", + "skipToContent": "मजकुराकडे जा", + "maintenanceServerIssues": "सर्व्हरमध्ये समस्या येत आहेत. काही वैशिष्ट्ये अनुपलब्ध असू शकतात.", + "maintenanceServerUnreachable": "सर्व्हरशी संपर्क होऊ शकत नाही. पुन्हा कनेक्ट करत आहे...", + "accept": "स्वीकारा", + "accountId": "खाते आयडी", "alias": "Alias", - "apiKeyId": "API Key ID", - "apiKeyName": "API Key Name", - "apiKeySecret": "API Key Secret", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "apiKeyId": "API की आयडी", + "apiKeyName": "API कीचे नाव", + "apiKeySecret": "API की गुपित", + "authorization": "अधिकृतता", + "content-type": "सामग्री प्रकार", + "content-length": "सामग्रीची लांबी", "cookie": "Cookie", - "file": "File", - "host": "Host", + "file": "फाइल", + "host": "होस्ट", "id": "ID", - "import": "Import", + "import": "आयात करा", "limit": "Limit", "offset": "Offset", - "open": "Open", - "origin": "Origin", - "promptTokens": "Prompt Tokens", - "completionTokens": "Completion Tokens", - "totalTokens": "Total Tokens", - "rawModel": "Raw Model", - "scope": "Scope", - "skill": "Skill", - "sortBy": "Sort By", - "sortOrder": "Sort Order", - "tab": "Tab", + "open": "उघडा", + "origin": "मूळ", + "promptTokens": "प्रॉम्प्ट टोकन", + "completionTokens": "पूर्णता टोकन", + "totalTokens": "एकूण टोकन", + "rawModel": "मूळ मॉडेल", + "scope": "व्याप्ती", + "skill": "कौशल्य", + "sortBy": "यानुसार क्रम लावा", + "sortOrder": "क्रमवारीचा क्रम", + "tab": "टॅब", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "मजकूर क्षेत्र", + "tool": "साधन", + "toolId": "साधन ID", "web": "Web", - "whereUsed": "Where Used", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "resolve": "Resolve", - "force": "Force", + "whereUsed": "वापराचे ठिकाण", + "whitelist": "अनुमतीसूची", + "blacklist": "प्रतिबंधसूची", + "resolve": "निराकरण करा", + "force": "सक्ती करा", "base64url": "Base64 URL", "hex": "Hex", - "range": "Range", - "component": "Component", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", - "code": "Code", - "compatible": "Compatible", - "chat-completions": "Chat Completions", + "range": "श्रेणी", + "component": "घटक", + "redirect_uri": "पुनर्निर्देशन URI", + "idempotency-key": "आयडेम्पोटन्सी की", + "error_description": "त्रुटीचे वर्णन", + "code": "कोड", + "compatible": "सुसंगत", + "chat-completions": "चॅट पूर्णता", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", - "hours": "Hours", + "auth_token": "प्रमाणीकरण टोकन", + "crypto": "क्रिप्टो", + "hours": "तास", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", - "resolveConnectionId": "Resolve Connection ID", - "resolve_connection_id": "Resolve Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "proxy_id": "प्रॉक्सी ID", + "proxyId": "प्रॉक्सी ID", + "connectionId": "कनेक्शन ID", + "resolveConnectionId": "कनेक्शन ID निराकरण करा", + "resolve_connection_id": "कनेक्शन ID निराकरण करा", + "scope_id": "व्याप्ती ID", + "scopeId": "व्याप्ती ID", + "jwtSecret": "JWT गुप्त की", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", "builder-id": "Builder ID", - "musicDesc": "Music Description", - "musicGeneration": "Music Generation", + "musicDesc": "संगीताचे वर्णन", + "musicGeneration": "संगीत निर्मिती", "idc": "IDC", - "cloud-status-changed": "Cloud status changed", - "where_used": "Where Used", - "windowMs": "Window (ms)", + "cloud-status-changed": "क्लाउड स्थिती बदलली", + "where_used": "वापराचे ठिकाण", + "windowMs": "कालावधी (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", - "Failed to save pricing": "Failed to save pricing", - "Failed to reset pricing": "Failed to reset pricing", - "apikey": "API Key", + "TOOL_ALLOWLIST": "साधन अनुमतीसूची", + "TOOL_DENYLIST": "साधन प्रतिबंधसूची", + "Failed to save pricing": "किंमत जतन करण्यात अयशस्वी", + "Failed to reset pricing": "किंमत रीसेट करण्यात अयशस्वी", + "apikey": "API की", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "डॅशबोर्डवर जा", + "checkSystemStatus": "सिस्टमची स्थिती तपासा", + "selectModel": "मॉडेल निवडा", "addModel": "मॉडेल जोडा", "effortNone": "काहीही नाही", "effortLow": "कमी", @@ -162,12 +162,12 @@ "effortMax": "कमाल", "effortUltra": "अल्ट्रा", "reasoningEffort": "तार्किक प्रयत्न", - "wireApi": "Wire API", + "wireApi": "API जोडा", "modelAliases": "मॉडेल अलियासेस", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "कॉम्बो", + "noModelsFound": "कोणतेही मॉडेल सापडले नाही", + "clear": "साफ करा", + "done": "पूर्ण झाले", "selectAll": "सर्व निवडा", "unselectAll": "निवड रद्द करा", "visibleModels": "दृश्यमान", @@ -184,527 +184,527 @@ "selectAllProviders": "सर्व प्रदात्यांची तपासणी करा", "clearProviderSelection": "प्रदात्यांचे निवडणे रद्द करा", "providersSelectedCount": "{count} प्रदाते तपासले", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "त्रुटी आली", + "comboDeleted": "कॉम्बो हटवला", + "hide": "लपवा", + "creating": "तयार करत आहे", + "comboCreated": "कॉम्बो तयार केला", + "swapFormats": "स्वरूपांची अदलाबदल करा", + "daysAgo": "दिवसांपूर्वी", + "retries": "पुनःप्रयत्न", + "errorDuringRestore": "पुनर्संचयित करताना त्रुटी", + "eventsAppearHint": "इव्हेंट येथे दिसतील", + "noLockouts": "कोणतेही लॉकआउट नाहीत", + "webSearchDesc": "वेब शोधाचे वर्णन", + "audioProvidersHeading": "ऑडिओ प्रदाते", "cloudAgentProviders": "क्लाउड एजंट प्रदाते", - "minutesAgo": "Minutes Ago", + "minutesAgo": "मिनिटांपूर्वी", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "थेट स्वयं-रीफ्रेश होत आहे", + "webSearch": "वेब शोध", + "anthropicPrefixPlaceholder": "Anthropic उपसर्ग प्लेसहोल्डर", + "addModelToCombo": "कॉम्बोमध्ये मॉडेल जोडा", + "failedToLoad": "लोड करण्यात अयशस्वी", + "categoryMedia": "मीडिया श्रेणी", + "enableCloud": "क्लाउड सक्षम करा", + "expirationBannerExpiringSoon": "कालबाह्यता जवळ आली आहे", + "retry": "पुन्हा प्रयत्न करा", + "embeddings": "एम्बेडिंग्ज", + "errorCount": "त्रुटी संख्या", + "backupReasonManual": "बॅकअपचे कारण: मॅन्युअल", + "safeSearchModerate": "सुरक्षित शोध: मध्यम", + "activeLimiters": "सक्रिय मर्यादक", + "a2aCardTitle": "A2A कार्डचे शीर्षक", + "cloudWorkerUnreachable": "क्लाउड वर्करशी संपर्क होऊ शकत नाही", + "testFailed": "चाचणी अयशस्वी", + "compatibleBaseUrlHint": "सुसंगत बेस URL सूचना", + "usageTracking": "वापराचा मागोवा", + "disableCloudTitle": "क्लाउड अक्षम करा शीर्षक", + "noConnections": "कोणतीही कनेक्शने नाहीत", + "providerHealth": "प्रदात्याची स्थिती", + "confirmDbImport": "Db आयात निश्चित करा", + "notAvailableSymbol": "उपलब्ध नसल्याचे चिन्ह", + "backupsAvailable": "उपलब्ध बॅकअप", + "providerAuto": "स्वयंचलित प्रदाता", + "newProviderNamePlaceholder": "नवीन प्रदात्याच्या नावाचा प्लेसहोल्डर", + "a2aQuickStartStep2": "A2A द्रुत प्रारंभ चरण 2", + "ok": "ठीक आहे", + "available": "उपलब्ध", + "noBackupYet": "अद्याप कोणताही बॅकअप नाही", + "more": "अधिक", + "noCompatibleYet": "अद्याप कोणतेही सुसंगत नाही", + "multiProvider": "एकाधिक प्रदाते", + "repairEnvHint": "Env दुरुस्तीची सूचना", + "disablingCloud": "क्लाउड अक्षम करत आहे", + "testBench": "चाचणी मंच", + "valid": "वैध", + "cloudBenefitShare": "क्लाउड लाभ सामायिकरण", + "mcpCardTitle": "Mcp कार्ड शीर्षक", + "disableConfirm": "अक्षम करण्याची पुष्टी करा", + "filters": "फिल्टर्स", + "expirationBannerExpiredDesc": "कालबाह्य बॅनरचे कालबाह्य वर्णन", + "saveComboDefaults": "कॉम्बो डीफॉल्ट जतन करा", + "cloudConnectedVerified": "क्लाउड कनेक्शन सत्यापित", + "uptime": "कार्यरत कालावधी", + "compatibleProdPlaceholder": "सुसंगत Prod प्लेसहोल्डर", + "fallbackChainsTitle": "फॉलबॅक साखळ्यांचे शीर्षक", + "oauthLabel": "Oauth लेबल", + "a2aCardDescription": "A2A कार्डचे वर्णन", + "okShort": "ठीक", + "maintenance": "देखभाल", + "formatConverter": "स्वरूप परिवर्तक", + "zedImportNetworkError": "Zed आयात नेटवर्क त्रुटी", + "apiKeyLabel": "Api की लेबल", + "noModelsForProvider": "प्रदात्यासाठी कोणतेही मॉडेल नाहीत", + "mcpCardDescription": "Mcp कार्डचे वर्णन", + "apiTypeLabel": "Api प्रकार लेबल", + "configuredProvidersLabel": "कॉन्फिगर केलेले प्रदाते लेबल", + "maxRetriesLabel": "कमाल पुनःप्रयत्न लेबल", + "title": "शीर्षक", + "output": "आउटपुट", + "prefixHint": "उपसर्गाची सूचना", + "skipWizard": "विझार्ड वगळा", + "failedCount": "अयशस्वी संख्या", + "confirmDbImportDesc": "डेटाबेस आयातीच्या पुष्टीकरणाचे वर्णन", + "entries": "नोंदी", + "until": "पर्यंत", + "disableCombo": "संयोजन अक्षम करा", + "liveMonitorDescriptionPrefix": "लाइव्ह मॉनिटरच्या वर्णनाचा उपसर्ग", + "runningCount": "चालू असलेल्यांची संख्या", + "noActiveConnectionsInGroup": "गटात कोणतीही सक्रिय कनेक्शने नाहीत", + "savedSuccessfully": "यशस्वीरीत्या जतन केले", + "systemStorage": "सिस्टम स्टोरेज", + "videoDesc": "व्हिडिओचे वर्णन", + "maxResults": "कमाल परिणाम", + "timeRangeMonth": "कालावधी: महिना", + "testSummary": "चाचणीचा सारांश", + "failedSetPassword": "पासवर्ड सेट करणे अयशस्वी झाले", + "audio": "ऑडिओ", + "restore": "पुनर्संचयित करा", + "disableWarning": "चेतावणी अक्षम करा", + "moderationsDesc": "मॉडरेशन्सचे वर्णन", + "providerHealthStatusAria": "प्रदात्याच्या आरोग्य स्थितीसाठी ARIA", + "modelNamePlaceholder": "मॉडेल नावासाठी प्लेसहोल्डर", + "mcpQuickStartStep2": "Mcp द्रुत प्रारंभ: पायरी 2", + "quickStart": "द्रुत प्रारंभ", + "fullExportFailedWithError": "त्रुटीसह संपूर्ण निर्यात अयशस्वी झाली", + "loadingBackups": "बॅकअप लोड होत आहेत", + "anthropicBaseUrlPlaceholder": "Anthropic बेस URL प्लेसहोल्डर", + "description": "वर्णन", + "noProviderFound": "कोणताही प्रदाता आढळला नाही", + "auto": "स्वयंचलित", + "protocolsDescription": "प्रोटोकॉलचे वर्णन", + "cloudSessionNote": "क्लाउड सत्राची नोंद", + "advancedSettings": "प्रगत सेटिंग्ज", + "defaultStrategy": "डीफॉल्ट धोरण", + "purgeExpiredLogs": "कालबाह्य लॉग हटवा", + "justNow": "आत्ताच", + "providerTestFailed": "प्रदाता चाचणी अयशस्वी", + "openaiBaseUrlPlaceholder": "Openai बेस URL प्लेसहोल्डर", + "image": "प्रतिमा", + "failedCreateChain": "साखळी तयार करण्यात अयशस्वी", + "importDatabase": "डेटाबेस आयात करा", + "allDataLocal": "सर्व डेटा स्थानिक", + "sectionTitle": "विभागाचे शीर्षक", + "failedToggle": "टॉगल करण्यात अयशस्वी", + "editCombo": "कॉम्बो संपादित करा", + "testResults": "चाचणी निकाल", + "searchQuery": "शोध क्वेरी", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "प्रत तयार करा", + "createCombo": "कॉम्बो तयार करा", + "searchTypeWeb": "शोध प्रकार: वेब", + "addChain": "साखळी जोडा", + "prefixLabel": "उपसर्ग लेबल", + "listModelsDesc": "मॉडेल सूचीचे वर्णन", + "databaseSize": "डेटाबेसचा आकार", + "chainCreated": "साखळी तयार झाली", + "providerTestTimeout": "प्रदाता चाचणीची वेळ संपली", + "routingStrategy": "राउटिंग धोरण", + "translateAction": "भाषांतर क्रिया", + "exportFailed": "निर्यात अयशस्वी", + "connectedVerificationPending": "कनेक्ट झाले, पडताळणी प्रलंबित", + "a2aQuickStartTitle": "A2A द्रुत प्रारंभ शीर्षक", + "couldNotTest": "चाचणी करता आली नाही", + "testAllCompatible": "सर्व सुसंगत पर्यायांची चाचणी करा", + "anthropicCompatibleName": "Anthropic-सुसंगत नाव", + "disabling": "अक्षम करत आहे", + "failedEnable": "सक्षम करण्यात अयशस्वी", + "categoryUtility": "उपयुक्तता श्रेणी", + "customUrlOptional": "सानुकूल URL (पर्यायी)", + "localProviders": "स्थानिक प्रदाते", + "comboNamePlaceholder": "कॉम्बो नाव प्लेसहोल्डर", + "memoryRss": "मेमरी RSS", + "disableProvider": "प्रदाता अक्षम करा", + "welcomeDesc": "स्वागत वर्णन", + "nameLabel": "नावाचे लेबल", + "allOperational": "सर्व कार्यरत", + "backupNow": "आत्ताच बॅकअप घ्या", + "providerMaxRetriesAria": "प्रदात्याच्या कमाल पुनर्प्रयत्नांसाठी ARIA", + "textToSpeechDesc": "टेक्स्ट टू स्पीचचे वर्णन", + "machineId": "मशीन आयडी", + "globalProxy": "जागतिक प्रॉक्सी", + "hitsMisses": "हिट्स आणि मिसेस", + "testDesc": "चाचणीचे वर्णन", + "chatDesc": "चॅटचे वर्णन", + "importSuccess": "आयात यशस्वी", + "chat": "चॅट", + "a2aQuickStartStep1": "A2A द्रुत प्रारंभ चरण 1", + "importFailed": "आयात अयशस्वी", + "inputPlaceholder": "इनपुट प्लेसहोल्डर", + "providerModelsTitle": "प्रदाता मॉडेल्सचे शीर्षक", + "lastBackup": "शेवटचा बॅकअप", + "yourEndpoint": "तुमचा एंडपॉइंट", + "autoDisableThresholdDesc": "स्वयं-अक्षम करण्याच्या मर्यादेचे वर्णन", + "rerankDesc": "पुनर्क्रमांकनाचे वर्णन", + "modelsPathPlaceholder": "मॉडेल्स पाथ प्लेसहोल्डर", + "noCombosYet": "अद्याप कोणतेही कॉम्बो नाहीत", + "connectedVerificationPendingWithError": "कनेक्ट केले आहे; त्रुटीमुळे पडताळणी प्रलंबित आहे", + "comboDefaultsGuideHint1": "कॉम्बो डीफॉल्ट्स मार्गदर्शक सूचना 1", + "enableCloudTitle": "क्लाउड सक्षम करा शीर्षक", + "configuredProvidersHint": "कॉन्फिगर केलेल्या प्रदात्यांची सूचना", + "paused": "विराम दिला", + "llmProviders": "LLM प्रदाते", + "enableCombo": "कॉम्बो सक्षम करा", + "removeProviderOverrideAria": "प्रदाता ओव्हरराइड काढण्यासाठी ARIA", + "nodeVersion": "Node आवृत्ती", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "त्रुटीसह निर्यात अयशस्वी", + "proxyConfigured": "प्रॉक्सी कॉन्फिगर केली", + "concurrencyPerModel": "प्रति मॉडेल समकालिकता", + "protocolTasksLabel": "प्रोटोकॉल कार्यांचे लेबल", + "oauthProviders": "OAuth प्रदाते", + "lockedCount": "लॉक केलेल्यांची संख्या", + "deleteChainConfirm": "साखळी हटवण्याची पुष्टी", + "recentTranslations": "अलीकडील भाषांतरे", + "zedImportButton": "Zed आयात बटण", + "responsesDesc": "प्रतिसादांचे वर्णन", + "testedCount": "चाचणी केलेल्यांची संख्या", + "providersCommaSeparatedPlaceholder": "प्रदाते स्वल्पविरामाने विभक्त केलेले प्लेसहोल्डर", + "signatureDefaults": "स्वाक्षरीची डीफॉल्ट मूल्ये", + "errorCreating": "तयार करताना त्रुटी", + "timeRangeYear": "कालावधी: वर्ष", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", - "testBenchTab": "Test Bench", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "cloudDisabledSuccess": "क्लाउड यशस्वीरित्या अक्षम केले", + "deleteConfirm": "हटवण्याची पुष्टी करा", + "check": "तपासा", + "safeSearch": "सुरक्षित शोध", + "protocolLastActivity": "प्रोटोकॉलची शेवटची गतिविधी", + "openMcpDashboard": "Mcp डॅशबोर्ड उघडा", + "testBenchTab": "चाचणी मंच", + "chatPathLabel": "चॅट पथ लेबल", + "retryDelay": "पुन्हा प्रयत्न करण्यापूर्वीचा विलंब", + "errorUpdating": "अपडेट करताना त्रुटी", + "ideCliIntegrations": "IDE CLI एकत्रीकरणे", + "imageGeneration": "प्रतिमा निर्मिती", + "apiKeyRequired": "API की आवश्यक आहे", + "resetAllTitle": "सर्व रीसेट करा", + "connectionError": "कनेक्शन त्रुटी", + "modelName": "मॉडेलचे नाव", + "apiKeyForCheck": "तपासणीसाठी API की", + "cloudRequestTimeout": "क्लाउड विनंतीची कालमर्यादा संपली", + "showConfiguredOnly": "केवळ कॉन्फिगर केलेले दाखवा", "showFreeOnly": "फक्त मोफत", "addFirstProvider": "तुमचा पहिला प्रदाता जोडा", "addFirstProviderDesc": "OmniRoute द्वारे विनंती राउटिंग सुरू करण्यासाठी AI प्रदात्याशी कनेक्ट करा. तुम्ही मोफत प्रदाता, API की किंवा OAuth खाती वापरू शकता.", "learnMore": "अधिक जाणून घ्या", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "डोमेन्स समाविष्ट करा", + "promptCache": "प्रॉम्प्ट कॅशे", + "cloudConnected": "क्लाउड कनेक्ट झाले", + "deleteChain": "शृंखला हटवा", + "chatPathPlaceholder": "चॅट पथ प्लेसहोल्डर", + "databasePath": "डेटाबेस पथ", + "usingLocalServer": "स्थानिक सर्व्हर वापरत आहे", + "globalComboConfig": "जागतिक कॉम्बो कॉन्फिगरेशन", + "backupFailed": "बॅकअप अयशस्वी", + "tabProtocols": "प्रोटोकॉल टॅब", + "continue": "सुरू ठेवा", + "categorySearch": "श्रेणी शोध", + "rateLimitStatus": "दरमर्यादा स्थिती", + "repairEnvSuccess": "वातावरण यशस्वीरित्या दुरुस्त केले", + "nameRequired": "नाव आवश्यक आहे", + "country": "देश", + "trackMetricsDesc": "मेट्रिक्सचा मागोवा घेण्याचे वर्णन", + "durationSecondsShort": "कालावधी (से.)", + "formatConverterDescription": "स्वरूप परिवर्तकाचे वर्णन", + "cloudBenefitAccess": "Cloud लाभाचा वापर", + "maxRetries": "कमाल पुनर्प्रयत्न", + "queueTimeout": "रांग कालबाह्यता", "queueDepth": "क्यू डेप्थ", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "प्रदाता जोडा", + "realtime": "रिअलटाइम", + "totalTranslations": "एकूण भाषांतरे", + "protocolActiveStreamsLabel": "प्रोटोकॉल सक्रिय प्रवाह लेबल", + "repairEnv": "Env दुरुस्त करा", + "modelsCount": "मॉडेलची संख्या", + "viewBackups": "बॅकअप पहा", + "responsesApi": "Responses API", + "copyComboName": "कॉम्बोचे नाव कॉपी करा", + "failures": "अपयश", + "failedUpdate": "अपडेट अयशस्वी", + "imageDesc": "प्रतिमेचे वर्णन", + "failedCreate": "निर्मिती अयशस्वी", + "remainingOfLimit": "मर्यादेपैकी उर्वरित", + "protocolsTitle": "प्रोटोकॉल शीर्षक", + "expirationBannerExpiringSoonDesc": "लवकरच कालबाह्य होण्याच्या सूचनेचे वर्णन", + "source": "स्रोत", + "failed": "अयशस्वी", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "MCP द्रुत प्रारंभ पायरी 1", + "runTest": "चाचणी चालवा", + "loadingFallbackChains": "फॉलबॅक साखळ्या लोड होत आहेत", + "healthy": "सुस्थितीत", + "version": "आवृत्ती", + "saveBlockWeighted": "भारित ब्लॉक जतन करा", + "zedImportNone": "Zed आयात उपलब्ध नाही", + "noBackupsYet": "अद्याप कोणतेही बॅकअप नाहीत", + "noGlobalProxy": "कोणताही ग्लोबल प्रॉक्सी नाही", + "noModels": "कोणतीही मॉडेल्स नाहीत", + "stickyLimit": "स्थिर मर्यादा", + "passedCount": "उत्तीर्ण संख्या", + "zedImportFailed": "Zed आयात अयशस्वी", + "saving": "जतन होत आहे", + "testAll": "सर्वांची चाचणी करा", + "globalProxyDesc": "ग्लोबल प्रॉक्सीचे वर्णन", + "latencyP99": "विलंबता P99", + "connectingToCloud": "क्लाउडशी कनेक्ट करत आहे", + "responses": "प्रतिसाद", + "errorDeleting": "हटवताना त्रुटी", + "openaiPrefixPlaceholder": "Openai उपसर्ग प्लेसहोल्डर", + "enterPassword": "पासवर्ड प्रविष्ट करा", + "openA2aDashboard": "A2A डॅशबोर्ड उघडा", + "enableProvider": "प्रदाता सक्षम करा", + "modeTest": "चाचणी मोड", + "failedDeleteChain": "साखळी हटवण्यात अयशस्वी", + "providerDesc": "प्रदात्याचे वर्णन", + "templateLoadHint": "टेम्पलेट लोड करण्याची सूचना", + "lastFailure": "शेवटचे अपयश", + "moveDown": "खाली हलवा", + "providerLabel": "प्रदात्याचे लेबल", + "clearCacheFailed": "कॅशे साफ करण्यात अयशस्वी", + "imagesGenerations": "प्रतिमा निर्मिती", + "repairEnvWorking": "Env दुरुस्ती सुरू आहे", + "millisecondsShort": "मिलीसेकंद संक्षेप", + "globalLabel": "जागतिक लेबल", + "failuresPlural": "अपयशे", + "completionsLegacyDesc": "लेगसी पूर्णत्वाचे वर्णन", + "searchProviders": "प्रदाते शोधा", + "chatPathHint": "चॅट पथाची सूचना", + "defaultStrategyDesc": "डीफॉल्ट धोरणाचे वर्णन", + "latencyP95": "विलंबता P95", + "textToSpeech": "मजकूर ते भाषण", + "searchType": "शोध प्रकार", + "messages": "संदेश", + "aggregatorsGateways": "अॅग्रीगेटर्स आणि गेटवे", + "comboStrategyAria": "संयोजन धोरण Aria", + "input": "इनपुट", + "testingConnection": "कनेक्शनची चाचणी सुरू आहे", + "excludeDomains": "डोमेन वगळा", + "webCookieProviders": "वेब कुकी प्रदाते", + "allTestsPassed": "सर्व चाचण्या उत्तीर्ण झाल्या", + "openaiCompatibleName": "Openai-सुसंगत नाव", + "warningCostOptimizedPartialPricing": "इशारा: किंमत-अनुकूलित आंशिक मूल्यनिर्धारण", + "comboDefaultsGuideTitle": "संयोजन डीफॉल्ट मार्गदर्शकाचे शीर्षक", + "hoursAgo": "तासांपूर्वी", + "notAvailable": "उपलब्ध नाही", + "skipAndContinue": "वगळा आणि पुढे सुरू ठेवा", + "moderations": "मॉडरेशन्स", + "proxyConfig": "प्रॉक्सी कॉन्फिगरेशन", + "upstreamProxyProviders": "अपस्ट्रीम प्रॉक्सी प्रदाते", + "exportAll": "सर्व निर्यात करा", + "queuedCount": "रांगेतील संख्या", + "resetAll": "सर्व रीसेट करा", + "noTranslations": "भाषांतरे नाहीत", + "avgLatency": "सरासरी विलंब", + "throttleStatus": "थ्रॉटल स्थिती", + "backupRetentionDesc": "बॅकअप धारणा वर्णन", + "noCBData": "Cb डेटा नाही", + "chainDeleted": "साखळी हटवली", + "timeLeft": "उर्वरित वेळ", + "expirationBannerExpired": "कालबाह्यतेचा बॅनर कालबाह्य झाला", + "language": "भाषा", + "invalidFileType": "अवैध फाइल प्रकार", + "monitoredProviders": "निरीक्षण केलेले प्रदाते", + "errors": "त्रुटी", + "heap": "हीप", + "chatCompletions": "चॅट पूर्णता", + "exampleTemplatesHint": "उदाहरण टेम्पलेट्ससाठी सूचना", + "retryDelayLabel": "पुनःप्रयत्न विलंब लेबल", + "audioTranscription": "ऑडिओ लिप्यंतरण", + "fallbackChainsDesc": "फॉलबॅक साखळ्यांचे वर्णन", + "exampleTemplates": "उदाहरण टेम्पलेट्स", + "connectionsCount": "कनेक्शनची संख्या", + "modelsPathLabel": "मॉडेल्स पथ लेबल", + "activeProvidersHint": "सक्रिय प्रदात्यांसाठी सूचना", + "activeLockouts": "सक्रिय लॉकआउट्स", + "invalid": "अवैध", + "skipPassword": "पासवर्ड वगळा", + "moveUp": "वर हलवा", + "timeRange": "कालावधी", + "stickyLimitDesc": "स्टिकी मर्यादेचे वर्णन", + "cloudBenefitEdge": "क्लाउड लाभाचा काठ", + "custom": "सानुकूल", + "verifying": "पडताळणी सुरू आहे", + "baseUrlLabel": "बेस URL लेबल", + "setPassword": "पासवर्ड सेट करा", + "safeSearchStrict": "कठोर सुरक्षित शोध", + "noChangesSinceBackup": "बॅकअपनंतर कोणतेही बदल नाहीत", + "modelsPathHint": "मॉडेल्स पाथसाठी सूचना", + "audioTranscriptions": "ऑडिओ लिप्यंतरणे", + "testCombo": "कॉम्बोची चाचणी करा", + "mcpQuickStartTitle": "Mcp द्रुत प्रारंभ शीर्षक", + "comboUpdated": "कॉम्बो अपडेट केला", + "weighted": "भारित", + "providers": "प्रदाते", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", - "chatTesterTab": "Chat Tester", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "noFallbackChainsDesc": "फॉलबॅक शृंखला उपलब्ध नसल्याचे वर्णन", + "yesImport": "होय, आयात करा", + "lockoutsAutoRefreshHint": "लॉकआउट स्वयंचलित रीफ्रेश सूचना", + "tabApis": "APIs टॅब", + "sectionDescription": "विभागाचे वर्णन", + "filter": "फिल्टर", + "purgeLogsFailed": "लॉग हटवणे अयशस्वी झाले", + "latency": "विलंबता", + "testAllOAuth": "सर्व OAuth ची चाचणी करा", + "mcpQuickStartStep3": "Mcp द्रुत प्रारंभ चरण 3", + "repairEnvFailed": "Env दुरुस्ती अयशस्वी झाली", + "zedImportHint": "Zed आयात सूचना", + "modelsAcrossEndpoints": "सर्व एंडपॉइंट्सवरील मॉडेल्स", + "autoDisableBannedAccounts": "प्रतिबंधित खाती स्वयंचलितपणे निष्क्रिय करा", + "securityDesc": "सुरक्षेचे वर्णन", + "listModels": "मॉडेल्सची यादी", + "backupRestore": "बॅकअप पुनर्संचयित करा", + "target": "लक्ष्य", + "zedImportSuccess": "Zed आयात यशस्वी झाली", + "lastHeaderUpdate": "शेवटचे हेडर अपडेट", + "categoryCore": "मुख्य श्रेणी", + "noFallbackChains": "फॉलबॅक शृंखला नाहीत", + "noSearchProviders": "शोध प्रदाते नाहीत", + "autoBalance": "स्वयंचलित संतुलन", + "noModelsYet": "अद्याप कोणतीही मॉडेल्स नाहीत", + "signatureFamily": "स्वाक्षरी प्रकारसमूह", + "externalApiCalls": "बाह्य API कॉल्स", + "providerOverridesDesc": "प्रदाता ओव्हरराइड्सचे वर्णन", + "signatureTool": "स्वाक्षरी साधन", + "connectionFailed": "कनेक्शन अयशस्वी झाले", + "activeLimitersPlural": "सक्रिय मर्यादक", + "doneDesc": "पूर्ण झाल्याचे वर्णन", + "down": "खाली", + "noDataYet": "अद्याप कोणताही डेटा नाही", + "activeProviders": "सक्रिय प्रदाते", + "nameInvalid": "नाव अवैध आहे", + "skip": "वगळा", + "createChain": "साखळी तयार करा", + "audioSpeech": "ऑडिओ वाणी", + "cacheCleared": "कॅशे साफ केला", + "searchTypeNews": "शोध प्रकार: बातम्या", + "durationMillisecondsShort": "कालावधी (मिलीसेकंद, संक्षिप्त)", + "addOpenAICompatible": "Open Ai सुसंगत जोडा", + "chatTesterTab": "चॅट परीक्षक", + "queued": "रांगेत आहे", + "domainPlaceholder": "डोमेन प्लेसहोल्डर", + "durationMinutesShort": "कालावधी (मिनिटे, संक्षिप्त)", + "verifyingConnection": "कनेक्शनची पडताळणी सुरू आहे", + "imageProviders": "प्रतिमा प्रदाते", + "protocolToolsLabel": "प्रोटोकॉल साधनांचे लेबल", + "queryPlaceholder": "क्वेरी प्लेसहोल्डर", + "videoGeneration": "व्हिडिओ निर्मिती", + "timeRangeWeek": "कालमर्यादा: आठवडा", + "limitExhausted": "मर्यादा संपली", + "failedDisable": "अक्षम करणे अयशस्वी", + "inMemoryNote": "मेमरीमधील नोंद", + "compatibleHint": "सुसंगततेची सूचना", + "errorShort": "संक्षिप्त त्रुटी", + "advancedHint": "प्रगत सूचना", + "restoreFailed": "पुनर्संचयित करणे अयशस्वी", + "searchProvidersHeading": "शोध प्रदाते", + "comboName": "संयोजनाचे नाव", + "autoDisableDescription": "स्वयंचलितपणे अक्षम करण्याचे वर्णन", + "embeddingsDesc": "एम्बेडिंग्जचे वर्णन", + "operational": "कार्यरत", + "testAllApiKey": "सर्व API की तपासा", + "backupCreated": "बॅकअप तयार केला", + "errorDuringImport": "आयात करताना त्रुटी", + "comboDefaultsGuideHint2": "संयोजन डीफॉल्ट मार्गदर्शक सूचना 2", + "connecting": "कनेक्ट करत आहे", + "fillModelAndProviders": "मॉडेल आणि प्रदाते भरा", + "syncing": "समक्रमित करत आहे", + "resetConfirm": "रीसेटची पुष्टी", + "trackMetrics": "मेट्रिक्सचा मागोवा घ्या", + "successful": "यशस्वी", + "recovering": "पुनर्प्राप्त करत आहे", + "autoDisableThreshold": "स्वयं-अक्षम करण्याची मर्यादा", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "डेटा समक्रमित करत आहे", + "cloudBenefitPorts": "Cloud लाभ पोर्ट्स", + "compatibleProviders": "सुसंगत प्रदाते", "freeTierProviders": "मोफत टियर प्रदाते", "freeTierLabel": "मोफत टियर उपलब्ध", "freeTierProvidersDesc": "विनामूल्य स्तरांसह प्रदाते — काहींना API की साइनअप आवश्यक आहे, इतरांना कोणत्याही क्रेडेन्शियल्सची आवश्यकता नाही.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "कॅशे साफ करा", + "reqs": "विनंत्या", + "addAnthropicCompatible": "Anthropic-सुसंगत जोडा", + "apiKeyProviders": "API की प्रदाते", + "tabsAria": "टॅब्स ARIA", + "resetting": "रीसेट करत आहे", + "millisecondsAbbr": "मिलीसेकंद संक्षेप", + "backupReasonPreRestore": "पुनर्संचयित करण्यापूर्वी बॅकअपचे कारण", + "disableCloud": "Cloud अक्षम करा", + "newProviderNameAria": "नवीन प्रदाता नाव ARIA", + "passwordsMismatch": "पासवर्ड जुळत नाहीत", + "a2aQuickStartStep3": "A2A द्रुत प्रारंभ पायरी 3", + "liveMonitorDescriptionSuffix": "थेट निरीक्षण वर्णन प्रत्यय", + "failedAddProvider": "प्रदाता जोडण्यात अयशस्वी", + "addAtLeastOneProvider": "किमान एक प्रदाता जोडा", + "reasonSeparator": "कारण विभाजक", + "zedImporting": "Zed आयात करत आहे", + "confirmPasswordPlaceholder": "पासवर्डची पुष्टी करा", + "whatYouGet": "तुम्हाला काय मिळते", + "signatureSession": "स्वाक्षरी सत्र", + "errorCountNoCode": "कोडशिवाय त्रुटी संख्या", + "testing": "चाचणी करत आहे", + "providersCommaSeparated": "स्वल्पविरामाने विभक्त केलेले प्रदाते", + "exportDatabase": "डेटाबेस निर्यात करा", + "hitRate": "हिट दर", + "completionsLegacy": "पूर्णता (जुनी आवृत्ती)", + "removeModel": "मॉडेल काढा", + "timeRangeDay": "कालावधी: दिवस", + "cloudRequestFailed": "Cloud विनंती अयशस्वी", + "updatedAt": "अद्यतनित केले", + "monitoredProvidersHint": "नियंत्रित प्रदाते सूचना", + "connectionSuccessful": "कनेक्शन यशस्वी", + "latencyP50": "विलंबता P50", + "logsDeleted": "लॉग हटवले", + "chatTester": "चॅट परीक्षक", + "safeSearchOff": "सुरक्षित शोध बंद", + "nameHint": "नावाची सूचना", + "debugToggle": "डीबग टॉगल", + "embedding": "एम्बेडिंग", + "issuesLabel": "समस्यांचे लेबल", + "optionAny": "कोणताही पर्याय", + "maxNestingDepth": "कमाल नेस्टिंग खोली", + "rerank": "पुनःक्रमांकन", + "checking": "तपासत आहे", + "getStarted": "सुरू करा", + "restoreSuccess": "पुनर्स्थापना यशस्वी", + "issuesDetected": "समस्या आढळल्या", + "signatureCache": "स्वाक्षरी कॅशे", + "modelLockouts": "मॉडेल लॉकआउट्स", + "usingCloudProxy": "Cloud Proxy वापरत आहे", + "loadingHealth": "आरोग्य स्थिती लोड करत आहे", + "providerOverrides": "प्रदाता ओव्हरराइड्स", + "audioTranscriptionDesc": "ऑडिओ लिप्यंतरणाचे वर्णन", + "learnedFromHeaders": "हेडर्समधून शिकलेले", + "totalRequests": "एकूण विनंत्या", + "cloudUnstableNote": "Cloud अस्थिरतेबाबत सूचना", "gamificationAdmin": "गेमिफिकेशन प्रशासन", "monitorAnomaliesAndHealth": "विसंगती आणि सिस्टम आरोग्याचे निरीक्षण करा", "flaggedAnomalies": "ध्वजांकित विसंगती", "noAnomaliesDetected": "कोणतीही विसंगती आढळली नाही", "apiKey": "API की", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 तास)", "zScore": "Z-स्कोअर", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "संशयास्पद", "tokensCommunityServers": "समुदाय सर्व्हर", "tokensServerNamePlaceholder": "सर्व्हरचे नाव", "tokensApiKeyPlaceholder": "API की", @@ -737,26 +737,26 @@ "tokensDate": "तारीख", "tokensSent": "पाठवले", "tokensReceived": "प्राप्त झाले", - "tokensCreatingInvite": "Creating...", - "tokensCreateInvite": "Create Invite", - "tokensInviteCreated": "Invite code created", - "tokensRedeeming": "Redeeming...", - "tokensRedeem": "Redeem", - "tokensInviteUses": "{used}/{max} uses", - "tokensRevoked": "REVOKED", - "tokensRevoke": "Revoke", - "tokensConnecting": "Connecting...", - "tokensConnectServer": "Connect Server", - "tokensNoServersConnected": "No servers connected. Connect to a community server to share leaderboards.", + "tokensCreatingInvite": "तयार करत आहे...", + "tokensCreateInvite": "आमंत्रण तयार करा", + "tokensInviteCreated": "आमंत्रण कोड तयार केला", + "tokensRedeeming": "वापरत आहे...", + "tokensRedeem": "वापरा", + "tokensInviteUses": "{used}/{max} वापर", + "tokensRevoked": "रद्द केले", + "tokensRevoke": "रद्द करा", + "tokensConnecting": "कनेक्ट करत आहे...", + "tokensConnectServer": "सर्व्हर कनेक्ट करा", + "tokensNoServersConnected": "कोणतेही सर्व्हर कनेक्ट केलेले नाहीत. लीडरबोर्ड शेअर करण्यासाठी समुदाय सर्व्हरशी कनेक्ट करा.", "tokensServerStatus": { - "connected": "Connected", - "disconnected": "Disconnected", - "pending": "Pending", - "syncing": "Syncing", - "error": "Error" + "connected": "कनेक्ट केले", + "disconnected": "डिस्कनेक्ट केलेले", + "pending": "प्रलंबित", + "syncing": "समक्रमित होत आहे", + "error": "त्रुटी" }, - "tokensLastSync": "Last sync: {date}", - "tokensDisconnect": "Disconnect", + "tokensLastSync": "शेवटचे समक्रमण: {date}", + "tokensDisconnect": "डिस्कनेक्ट करा", "tierCoverageTitle": "टियर कव्हरेज", "tierCoverageSubtitle": "प्रति फॉलबॅक टियर कॉन्फिगर केलेले प्रदाते", "batchDetailCopyId": "आयडी कॉपी करा", @@ -781,179 +781,179 @@ "batchFileDetailCopyId": "आयडी कॉपी करा", "batchFileDetailClose": "बंद करा", "batchFileDetailFailedToLoad": "फाइल सामग्री लोड करण्यात अयशस्वी", - "batchFileDetailLoadError": "Error loading file contents", + "batchFileDetailLoadError": "फाइलमधील मजकूर लोड करताना त्रुटी", "batchFilesListSearchPlaceholder": "आयडी किंवा फाइल नावाने शोधा...", "batchFilesListFilesTable": "फाईल्स", "batchFilesCount": "{count, plural, one {# फाइल} other {# फाइल्स}}", - "batchFilesAllPurposes": "All purposes", - "batchFilesFilename": "Filename", - "batchFilesPurpose": "Purpose", - "batchFilesExpires": "Expires", - "batchFilesNoneFound": "No files found", - "batchFilesNeverExpires": "Never", - "batchFileInUseByActiveBatch": "File in use by an active batch", + "batchFilesAllPurposes": "सर्व उद्देश", + "batchFilesFilename": "फाइलचे नाव", + "batchFilesPurpose": "उद्देश", + "batchFilesExpires": "कालबाह्य होते", + "batchFilesNoneFound": "कोणत्याही फाइल्स सापडल्या नाहीत", + "batchFilesNeverExpires": "कधीही नाही", + "batchFileInUseByActiveBatch": "फाइल सक्रिय बॅचमध्ये वापरात आहे", "batchFilePurpose": { - "batch": "Batch input", - "batch-output": "Batch output", - "fine-tune": "Fine-tuning", - "assistants": "Assistants" + "batch": "बॅच इनपुट", + "batch-output": "बॅच आउटपुट", + "fine-tune": "फाइन-ट्यूनिंग", + "assistants": "असिस्टंट्स" }, "batchPageLoadingMore": "अधिक लोड करत आहे...", - "recommended": "Recommended", - "understand": "I understand", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "recommended": "शिफारस केलेले", + "understand": "मला समजले", + "batchConceptTitle": "बॅच प्रक्रिया", + "batchConceptSubtitle": "सुमारे 50% खर्चात हजारो विनंत्यांवर असिंक्रोनस पद्धतीने प्रक्रिया करा (24 तासांची कालमर्यादा). मूल्यमापन, वर्गीकरण आणि एम्बेडिंग्जसाठी आदर्श.", + "batchConceptHowItWorks": "हे कसे कार्य करते", + "batchConceptBenefit50pct": "इनपुट + आउटपुट टोकन्सवर 50% सवलत", + "batchConceptAsync24h": "24 तासांच्या पूर्णत्व कालमर्यादेसह असिंक्रोनस", + "batchConceptUseCases": "मोठ्या प्रमाणातील वर्गीकरण, मूल्यमापन आणि एम्बेडिंग्जसाठी सर्वोत्तम", + "batchHeaderSubtitle": "अनेक विनंत्या एकाच जॉबच्या रूपात चालवा", + "batchStep1": "1 · JSONL अपलोड करा", + "batchStep1Desc": "विनंत्या जोडा", + "batchStep2": "2 · बॅच तयार करा", + "batchStep2Desc": "जॉब चालवा", + "batchStep3": "3 · परिणाम मिळवा", + "batchStep3Desc": "आउटपुट डाउनलोड करा", + "filesConceptTitle": "बॅच फाइल्स", + "filesConceptSubtitle": "बॅचद्वारे वापरल्या जाणाऱ्या JSONL फाइल्स: इनपुट विनंत्या, परिणाम आणि त्रुटी.", + "filesConceptInput": "इनपुट — प्रत्येक ओळीवर एक विनंती असलेली तुमची JSONL", + "filesConceptOutput": "आउटपुट — पूर्ण झालेल्या विनंत्यांचे परिणाम", + "filesConceptError": "त्रुटी — अयशस्वी झालेल्या विनंत्या", + "filesConceptRetention": "जतन कालावधी: डीफॉल्टनुसार 30 दिवस (Anthropic वर 29 दिवस)", + "wizardTitle": "नवीन बॅच", + "wizardClose": "बंद करा", + "wizardNext": "पुढे", + "wizardBack": "मागे", + "wizardCancel": "रद्द करा", + "wizardCreate": "बॅच तयार करा", + "wizardCreating": "तयार करत आहे…", + "wizardStep1Destination": "गंतव्य", + "wizardStep2Input": "इनपुट", + "wizardStep3Validate": "सत्यापित करा", + "wizardStep4Cost": "खर्च आणि निर्मिती", + "wizardProviderLabel": "प्रदाता", + "wizardEndpointLabel": "एंडपॉइंट", + "wizardModelLabel": "मॉडेल", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", - "wizardCsvNoColumns": "No columns detected in CSV header.", - "wizardCsvIgnoreColumn": "— ignore —", - "wizardCsvCustomIdMapped": "custom_id mapped", - "wizardCsvContentMapped": "Content field mapped (messages, input, or prompt)", - "wizardCsvApplyMapping": "Apply mapping", + "wizardInputKindCsv": "CSV (आम्ही रूपांतरित करू)", + "wizardDropOrPick": "फाइल येथे ड्रॉप करा किंवा निवडण्यासाठी क्लिक करा", + "wizardCsvMappingTitle": "CSV स्तंभ → विनंती फील्ड मॅप करा", + "wizardCsvMappingAddField": "फील्ड जोडा", + "wizardCsvNoColumns": "CSV हेडरमध्ये कोणतेही स्तंभ आढळले नाहीत.", + "wizardCsvIgnoreColumn": "— दुर्लक्ष करा —", + "wizardCsvCustomIdMapped": "custom_id मॅप केले", + "wizardCsvContentMapped": "कंटेंट फील्ड मॅप केले (messages, input किंवा prompt)", + "wizardCsvApplyMapping": "मॅपिंग लागू करा", "wizardCsvRowsParsed": "{count} ओळी पार्स केल्या", "wizardCsvRowsSkipped": "{count} ओळी वगळल्या", - "wizardCsvRowError": "Row {row}: {reason}", - "wizardValidationOk": "All lines valid", - "wizardValidating": "Validating…", - "wizardValidationParseFailed": "Validation failed — could not parse content.", - "wizardValidationSummary": "{lines} lines · {ids} unique custom_ids", + "wizardCsvRowError": "पंक्ती {row}: {reason}", + "wizardValidationOk": "सर्व ओळी वैध आहेत", + "wizardValidating": "सत्यापित करत आहे…", + "wizardValidationParseFailed": "सत्यापन अयशस्वी — कंटेंट पार्स करता आला नाही.", + "wizardValidationSummary": "{lines} ओळी · {ids} अद्वितीय custom_ids", "wizardValidationErrorCount": "{count, plural, one {# त्रुटी} other {# त्रुटी}} आढळल्या", - "wizardValidationDuplicateIds": "Duplicate custom_ids detected:", - "wizardValidationFirstErrors": "Errors (first {count}):", - "wizardValidationLine": "Line {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationDuplicateIds": "डुप्लिकेट custom_ids आढळले:", + "wizardValidationFirstErrors": "त्रुटी (पहिल्या {count}):", + "wizardValidationLine": "ओळ {line}", + "wizardValidationErrors": "सत्यापन त्रुटी", + "wizardValidationPreview": "पूर्वावलोकन (पहिल्या 5 विनंत्या)", + "wizardValidationSamplingNote": "फाइल मोठी आहे — नमुना घेऊन सत्यापित केली (पहिल्या 1000 + शेवटच्या 100 ओळी). संपूर्ण सत्यापन सर्व्हरवर चालते.", + "wizardCostSync": "सिंक खर्च", + "wizardCostBatch": "बॅच खर्च (-50%)", + "wizardCostSavings": "बचत", + "wizardCostEstimatedNotice": "अंदाजित खर्च — प्रत्यक्ष बिलिंगमध्ये फरक असू शकतो.", + "wizardErrorUpload": "फाइल अपलोड करण्यात अयशस्वी. पुन्हा प्रयत्न करा.", + "wizardErrorCreate": "बॅच तयार करण्यात अयशस्वी. पुन्हा प्रयत्न करा.", + "wizardEmptyProviders": "बॅच तयार करण्यासाठी बॅच समर्थन असलेला प्रदाता (OpenAI, Anthropic किंवा Gemini) कनेक्ट करा.", + "uploadModalTitle": "बॅच फाइल अपलोड करा", + "uploadModalDropOrPick": ".jsonl फाइल येथे ड्रॉप करा किंवा निवडण्यासाठी क्लिक करा", + "uploadModalUpload": "अपलोड करा", + "uploadModalCancel": "रद्द करा", + "uploadModalError": "अपलोड अयशस्वी झाले. पुन्हा प्रयत्न करा.", + "uploadModalSuccess": "अपलोड केले", + "uploadModalSizeLimit": "कमाल 512 MB", + "batchListNewButton": "नवीन बॅच", + "batchListAutoRefresh": "दर 30 सेकंदांनी स्वयं-रिफ्रेश", + "batchListCostColumn": "खर्च", + "batchActionCancel": "रद्द करा", + "batchActionDownloadOutput": "आउटपुट डाउनलोड करा", + "batchActionDownloadErrors": "त्रुटी डाउनलोड करा", + "batchActionRetry": "अयशस्वी विनंत्यांचा पुन्हा प्रयत्न करा", + "batchActionRetryConfirm": "अयशस्वी झालेल्या {n} विनंतींचा पुन्हा प्रयत्न करायचा? अंतिम खर्च प्रत्यक्ष वापरलेल्या टोकनवर अवलंबून असतो.", + "expirationBadgeCritical": "गंभीर", + "expirationBadgeWarning": "लवकरच", + "expirationBadgeNormal": "प्रलंबित", + "expirationBadgeExpired": "कालबाह्य", + "filesListUploadButton": "अपलोड करा", + "filesListUsedByColumn": "याद्वारे वापरले जाते", + "filesListUsedByNone": "काहीही नाही", + "filesListUsedByRoleInput": "इनपुट", + "filesListUsedByRoleOutput": "आउटपुट", + "filesListUsedByRoleError": "त्रुटी", + "filesListSizeColumn": "आकार", + "batchListProgressPartial": "(अंशतः)", + "batchListProviderColumn": "प्रदाता", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "इतर", + "batchListTitle": "बॅचेस", + "batchListCount": "{count} बॅचेस", + "batchListRemovingCompleted": "काढून टाकत आहे…", + "batchListRemoveCompleted": "पूर्ण झालेले काढून टाका", + "batchListTableStatus": "स्थिती", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "एंडपॉइंट", + "batchListTableModel": "मॉडेल", + "batchListTableProgress": "प्रगती", + "batchListTableCreated": "तयार केले", + "batchListTableExpires": "कालबाह्य होते", + "batchListLoading": "लोड होत आहे…", + "batchListEmpty": "कोणतेही बॅच आढळले नाहीत", + "batchListValidating": "वैधता तपासत आहे…", + "batchStatusAll": "सर्व स्थिती", + "batchStatusInProgress": "प्रगतीपथावर", + "batchStatusValidating": "वैधता तपासत आहे", + "batchStatusFinalizing": "अंतिम रूप देत आहे", + "batchStatusCompleted": "पूर्ण झाले", + "batchStatusFailed": "अयशस्वी", + "batchStatusCancelled": "रद्द केले", + "batchStatusCancelling": "रद्द करत आहे", + "batchStatusExpired": "कालबाह्य झाले", + "batchStatusCompletedWithFailures": "त्रुटींसह पूर्ण झाले", + "batchStatusInProgressWithFailures": "प्रगतीपथावर (त्रुटींसह)", + "batchStatusFinalizingWithFailures": "अंतिम रूप देत आहे (त्रुटींसह)", + "batchStatusCancelledWithFailures": "त्रुटींसह रद्द केले", + "batchStatusExpiredWithFailures": "कालबाह्य झाले (अंशतः)", + "wizardCostEstimating": "खर्चाचा अंदाज घेत आहे…", + "wizardCostRequests": "विनंत्या", + "wizardCostInputTok": "इनपुट टोकन", + "wizardCostOutputTok": "आउटपुट टोकन", + "wizardCostWindow": "कालावधी", + "wizardDestinationSelectProvider": "प्रदाता निवडा…", + "wizardDestinationSelectModel": "मॉडेल निवडा…", + "wizardDestinationConnectProvider": "प्रदात्याशी कनेक्ट करा", + "batchListBatchCreated": "बॅच {id} तयार केले — सूची रीफ्रेश करत आहे…", + "batchListBatchCreatedDismiss": "बंद करा", + "batchListRefreshing": "रीफ्रेश करत आहे…", + "batchListRefresh": "रीफ्रेश करा", + "uploadFileModalRemove": "काढून टाका", + "uploadFileModalUploading": "अपलोड करत आहे…", + "wizardInputReading": "फाइल वाचत आहे…", + "wizardInputReady": "तयार", + "wizardInputLargeFileLabel": "मोठी फाइल — नमुना-आधारित वैधता तपासणी", + "wizardInputCsvJsonlReady": "JSONL तयार झाले — वैधता तपासणीसाठी सज्ज.", + "wizardInputLargeFileWarning": "मोठी फाइल आढळली — वैधता तपासणी नमुन्यांच्या आधारे केली जाते (पहिले 5 MB + शेवटचे 100 KB). संपूर्ण वैधता तपासणी सर्व्हरवर केली जाते.", + "wizardCostWindow24h": "24 तासांची पूर्णत्वाची मुदत", + "wizardValidationFieldsOk": "आवश्यक फील्ड वैध आहेत", + "filesListDelete": "हटवा", + "filesListDownload": "डाउनलोड करा", + "batchDetailActionCancel": "बॅच रद्द करा", + "batchDetailActionRetry": "अयशस्वी विनंत्यांचा पुन्हा प्रयत्न करा", + "batchDetailCancelling": "रद्द करत आहे…", + "batchDetailRetrying": "पुन्हा प्रयत्न करण्याची तयारी करत आहे…", + "batchDetailCancelConfirm": "हा बॅच रद्द करायचा? सुरू असलेल्या विनंत्या थांबतील.", + "batchActionCancelError": "बॅच रद्द करण्यात अयशस्वी. पुन्हा प्रयत्न करा.", + "batchActionRetryError": "अयशस्वी विनंत्यांचा पुन्हा प्रयत्न करण्यात अयशस्वी. पुन्हा प्रयत्न करा.", + "batchConceptRetentionNote": "परिणाम आणि त्रुटी फाइल्स 30 दिवसांसाठी जतन केल्या जातात (Anthropic: 29 दिवस)", "batchFilesSizeColumn": "आकार", "toggleNoAuthProvider": "नो-ऑथ प्रदाता टॉगल करा", "loadingModels": "मॉडेल लोड करत आहे…", @@ -985,50 +985,50 @@ "batchFilePreviewTruncated": "पहिल्या {shown} ओळी दाखवत आहे ({total} एकूण ओळी)", "batchFileDownloadFull": "पूर्ण फाइल डाउनलोड करा" }, - "disabled": "Disabled", - "featureFlagOmnirouteEmergencyFallbackDescription": "Route budget-exhausted requests to the emergency free fallback provider/model.", - "featureFlagArenaEloSyncEnabledDescription": "Enable periodic Arena AI leaderboard ELO sync for model intelligence rankings.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "disabled": "अक्षम", + "featureFlagOmnirouteEmergencyFallbackDescription": "बजेट संपलेल्या विनंत्या आपत्कालीन मोफत फॉलबॅक प्रदाता/मॉडेलकडे रूट करा.", + "featureFlagArenaEloSyncEnabledDescription": "मॉडेल इंटेलिजन्स क्रमवारीसाठी Arena AI लीडरबोर्डचे नियतकालिक ELO सिंक सक्षम करा.", + "featureFlagUniversalContextHandoffEnabledDescription": "कॉम्बो रूटिंगमध्ये मॉडेल बदलल्यावर संभाषणाचे सारांश तयार करून अंतर्भूत करा. मॉडेल बदल स्वतंत्रपणे हाताळण्यासाठी आणि सर्व विद्यमान व भविष्यातील कॉम्बोंसाठी पार्श्वभूमीतील हँडऑफ विनंत्या रोखण्यासाठी हे अक्षम करा.", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models वर claude/<provider>/<model> मिरर आयडीज जाहिरात करा जेणेकरून Claude Code गेटवे मॉडेल शोध सूचीमध्ये नॉन-Claude मॉडेल्स समाविष्ट होतील. चेतावणी: जागतिक स्तरावर सक्षम केल्यास सर्व क्लायंटसाठी कॅटलॉग नोंदी दुहेरी होतात.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> गेटवे उपनामांसाठी मुख्य स्विच. चालू (डीफॉल्ट): /v1/models प्रत्येक पात्र, विचार-क्षम Claude मॉडेलसाठी विचार न करणारा प्रकार दाखवते आणि विनंतीमध्ये पाठवलेला no-think/ आयडी तर्कप्रक्रिया दडपून पुन्हा वास्तविक मॉडेलकडे निर्देशित केला जातो. बंद: कोणतेही प्रकार दाखवले जात नाहीत आणि no-think/ आयडीला इतर कोणत्याही अज्ञात मॉडेल आयडीप्रमाणे हाताळले जाते. हे चालू असताना प्रत्येक मॉडेलसाठी ModelSpec.noThinkingAlias ची निवड/निवड रद्द करण्याची सेटिंग तरीही लागू होते.", "featureFlagChatVirtualLanesEnabledDescription": "प्रदाता डिस्पॅचसाठी प्रति-टेनंट अनुकूली व्हर्च्युअल अॅडमिशन लेन सक्षम करा (#9654): एका टेनंटचा बर्स्ट यापुढे दुसऱ्या टेनंटला 503 देत नाही. OMNIROUTE_CHAT_VIRTUAL_LANES पर्यावरण चल या डॅशबोर्ड सेटिंगपेक्षा वरचढ आहे; बदल सर्व्हर रीस्टार्ट केल्यावर प्रभावी होतात.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "डॅशबोर्डवरील प्रदाता पृष्ठे: प्रदाता ज्या संकेतांचा आदर करतो, केवळ त्यांवरच मोफत बॅज दाखवा — दस्तऐवजीकृत मोफत स्तर नसलेल्या नोंदणीकृत प्रदात्यांसाठी प्रदर्शन-नाव अनुमान, नॉन-बूलियन मोफत फील्ड आणि :free प्रत्यय वगळते. बंद केल्यास ऐतिहासिक बॅज नियम कायम राहतो.", + "featureFlagProxySkipRecentlyFailedDescription": "प्रॉक्सी पूल आणि opencode चे प्रति-खाते रोटेशन नुकताच अयशस्वी झालेला प्रॉक्सी (TCP प्रोब नाकारला गेला किंवा त्याद्वारे 429 प्राप्त झाला) प्रत्येक प्रक्रियेसाठी ठरावीक कालावधीपर्यंत पुन्हा वापरत नाहीत; प्रत्येक पुनरावृत्तीनंतर हा कालावधी दुप्पट होतो, कमाल मर्यादेपर्यंत. प्रॉक्सीची कोणतीही स्थिती लिहिली जात नाही; प्रत्येक उमेदवार बाजूला ठेवल्यास निवड अपरिवर्तित राहते. डीफॉल्टनुसार बंद: निवडीचा क्रम अगदी साध्या रोटेशनप्रमाणेच असतो.", + "featureFlagProxyPoolEgressObservationDescription": "डॅशबोर्डमध्ये प्रॉक्सी पूलखाली, मागील 24 तासांत त्याच्या सदस्यांना सेवा देणारे किती निरीक्षित इग्रेस IP होते, किती कनेक्शननी त्यांचा वापर केला आणि एका IP मागे दिसलेली सर्वाधिक संख्या किती होती हे दाखवा. हे केवळ-वाचनीय असून प्रॉक्सी लॉगवरून मोजले जाते आणि रूटिंगसाठी कधीही वापरले जात नाही. डीफॉल्टनुसार बंद: पूल एडिटर अपरिवर्तित राहतो आणि निरीक्षण रूट null असे उत्तर देतो.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "प्रॉक्सी आरोग्य तपासणीमध्ये, लक्ष्याने नाकारलेल्या प्रोबला (401/403/429: प्रॉक्सीने पुढे पाठवले, पण गंतव्याने हा इग्रेस IP नाकारला) सेवा दिलेल्या प्रोबप्रमाणे प्रॉक्सीच्या सलग अपयशांची मालिका रीसेट करू द्या. डीफॉल्टनुसार बंद: नकार तटस्थ राहतो आणि मालिका कायम ठेवतो. 5xx दोन्ही बाबतींत अनिर्णीत राहतो आणि नकारामुळे प्रॉक्सी कधीही काढला, अक्षम किंवा पुन्हा सक्रिय केला जात नाही.", "sidebar": { - "home": "Home", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "usage": "Usage", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", + "home": "मुख्यपृष्ठ", + "dashboard": "डॅशबोर्ड", + "providers": "प्रदाते", + "combos": "कॉम्बो", + "usage": "वापर", + "analytics": "विश्लेषण", + "costs": "खर्च", + "health": "स्थिती", "proxy": "प्रॉक्सी", "limits": "Limits & Quotas", - "cliTools": "CLI Tools", - "media": "Media", - "settings": "Settings", - "translator": "Translator", - "playground": "Playground", - "searchTools": "Search Tools", - "agents": "Agents", + "cliTools": "CLI साधने", + "media": "मीडिया", + "settings": "सेटिंग्ज", + "translator": "अनुवादक", + "playground": "प्लेग्राउंड", + "searchTools": "शोध साधने", + "agents": "एजंट्स", "cloudAgents": "क्लाउड एजंट", - "memory": "Memory", - "skills": "Skills", + "memory": "मेमरी", + "skills": "कौशल्ये", "omniSkills": "OmniSkills", "agentSkills": "एजंट स्किल्स", - "chaosConfig": "Chaos Mode", - "docs": "Docs", - "issues": "Issues", - "endpoints": "Endpoints", + "chaosConfig": "केऑस मोड", + "docs": "दस्तऐवज", + "issues": "समस्या", + "endpoints": "एंडपॉइंट्स", "endpointsSubtitle": "तुमचे AI कनेक्शन URL", - "apiManager": "API Keys", + "apiManager": "API कीज", "apiManagerSubtitle": "API की आणि प्रवेश व्यवस्थापित करा", "embeddedServices": "एम्बेडेड सेवा", "embeddedServicesSubtitle": "स्थानिक प्रॉक्सी सेवा व्यवस्थापित करा", - "logs": "Logs", + "logs": "लॉग्स", "webhooks": "वेबहुक", "webhooksSubtitle": "इव्हेंटची सूचना मिळवा", "logExport": "लॉग निर्यात", @@ -1037,239 +1037,239 @@ "batchSubtitle": "एकाधिक विनंत्यांवर प्रक्रिया करा", "contextCavemanSubtitle": "प्रॉम्प्ट कॉम्प्रेशन", "contextRtkSubtitle": "आउटपुट फिल्टरिंग", - "auditLog": "Audit Log", - "shutdown": "Shutdown", - "restart": "Restart", - "shutdownConfirm": "Shut down OmniRoute?", - "restartConfirm": "Restart OmniRoute?", + "auditLog": "ऑडिट लॉग", + "shutdown": "बंद करा", + "restart": "रीस्टार्ट करा", + "shutdownConfirm": "OmniRoute बंद करायचे?", + "restartConfirm": "OmniRoute रीस्टार्ट करायचे?", "version": "v{version}", "debug": "Debug", - "system": "System", - "help": "Help", + "system": "सिस्टम", + "help": "मदत", "primarySection": "Main", "cliSection": "CLI", "debugSection": "Debug", "systemSection": "System", "helpSection": "Help", - "serverDisconnected": "Server Disconnected", - "serverDisconnectedMsg": "The proxy server has been stopped or is restarting.", - "expandSidebar": "Expand sidebar", - "collapseSidebar": "Collapse sidebar", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", - "cliToolsShort": "Tools", + "serverDisconnected": "सर्व्हर डिस्कनेक्ट झाला", + "serverDisconnectedMsg": "प्रॉक्सी सर्व्हर थांबवण्यात आला आहे किंवा तो रीस्टार्ट होत आहे.", + "expandSidebar": "साइडबार विस्तृत करा", + "collapseSidebar": "साइडबार संकुचित करा", + "themes": "थीम्स", + "presetColors": "लोकप्रिय रंग", + "createTheme": "थीम तयार करा", + "chooseColor": "एक रंग निवडा", + "themeCoral": "प्रवाळी", + "themeBlue": "निळा", + "themeRed": "लाल", + "themeGreen": "हिरवा", + "themeViolet": "जांभळा", + "themeOrange": "नारिंगी", + "themeCyan": "निळसर", + "cliToolsShort": "साधने", "cache": "Cache", "cacheShort": "Cache", "batch": "Batch Testing", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "themeSystem": "थीम सिस्टम", + "whitelabelingDesc": "व्हाइटलेबलिंगचे वर्णन", + "switchThemes": "थीम्स बदला", + "themeAccentDesc": "थीम अॅक्सेंटचे वर्णन", + "uploadFavicon": "फेविकॉन अपलोड करा", + "themeDark": "गडद थीम", + "customLogoDesc": "सानुकूल लोगोचे वर्णन", + "sidebarVisibilityToggle": "साइडबार दृश्यमानता टॉगल", + "themeAccent": "थीम अॅक्सेंट", + "resetFavicon": "फेविकॉन रीसेट करा", + "whitelabeling": "व्हाइटलेबलिंग", + "darkMode": "गडद मोड", + "uploadLogo": "लोगो अपलोड करा", + "themeLight": "फिकट थीम", + "appName": "ॲपचे नाव", + "appNameDesc": "ॲपच्या नावाचे वर्णन", + "resetLogo": "लोगो रीसेट करा", + "customFavicon": "सानुकूल फेविकॉन", + "hideHealthLogs": "आरोग्य नोंदी लपवा", + "customLogo": "सानुकूल लोगो", + "appearance": "स्वरूप", + "themeSelectionAria": "थीम निवड Aria", + "themeCreate": "थीम तयार करा", + "customFaviconDesc": "सानुकूल फेविकॉनचे वर्णन", + "logoPreview": "लोगो पूर्वावलोकन", + "themeCustom": "सानुकूल थीम", + "hideHealthLogsDesc": "आरोग्य नोंदी लपवण्याचे वर्णन", + "faviconPreview": "फेविकॉन पूर्वावलोकन", + "changelog": "बदल नोंद", + "contextSection": "संदर्भ आणि कॅशे", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "इंजिन संयोजने", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "अल्ट्रा", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "संक्षेप सेटिंग्ज", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", - "combosLiveSubtitle": "Live routing cascade", + "combosLive": "संयोजन स्टुडिओ", + "combosLiveSubtitle": "थेट रूटिंग शृंखला", "compressionStudio": "Compression Studio", "compressionExclusions": "बाह्यतत्त्वे", - "contextSettingsSubtitle": "Global defaults", - "contextHeadroomSubtitle": "Tabular compaction", - "contextSessionDedupSubtitle": "Cross-turn deduplication", - "contextCcrSubtitle": "Retrieve markers", - "contextLlmlinguaSubtitle": "Semantic pruning", - "contextLiteSubtitle": "Fast whitespace cleanup", - "contextAggressiveSubtitle": "Summary and aging", - "contextUltraSubtitle": "Heuristic pruning", - "contextOmniglyphSubtitle": "Context as images", - "compressionStudioSubtitle": "Live engine cascade", + "contextSettingsSubtitle": "जागतिक डीफॉल्ट्स", + "contextHeadroomSubtitle": "सारणीबद्ध संक्षिप्तीकरण", + "contextSessionDedupSubtitle": "विविध संवाद-फेऱ्यांतील पुनरावृत्ती-निर्मूलन", + "contextCcrSubtitle": "मार्कर पुनर्प्राप्त करा", + "contextLlmlinguaSubtitle": "अर्थाधारित छाटणी", + "contextLiteSubtitle": "जलद रिक्त-जागा स्वच्छता", + "contextAggressiveSubtitle": "सारांश आणि कालबाह्यता", + "contextUltraSubtitle": "अनुमानाधारित छाटणी", + "contextOmniglyphSubtitle": "प्रतिमांच्या स्वरूपात संदर्भ", + "compressionStudioSubtitle": "थेट इंजिन शृंखला", "compressionExclusionsSubtitle": "प्रत्येक मॉडेल/अंतिम बिंदू बायपास", - "chaosConfigSubtitle": "Multi-model parallel execution", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "chaosConfigSubtitle": "बहु-मॉडेल समांतर अंमलबजावणी", + "routingSection": "रूटिंग", + "protocolsSection": "प्रोटोकॉल", + "agentsAiSection": "एजंट्स आणि AI", + "cacheContextSection": "कॅशे आणि संदर्भ", + "analyticsSection": "विश्लेषण", + "costsSection": "खर्च", + "monitoringSection": "देखरेख", + "auditSecuritySection": "लेखापरीक्षण आणि सुरक्षा", + "devtoolsSection": "विकसक साधने", + "configurationSection": "संरचना", + "aiFeaturesSection": "AI वैशिष्ट्ये", "mcp": "MCP", "a2a": "A2A", - "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", - "costsFreeTiers": "Free-Tier Budget", - "costsFreeTiersSubtitle": "Monthly free-token allowances", - "freeProviderRankings": "Free Provider Rankings", - "freeProviderRankingsSubtitle": "Best free providers ranked by model ELO scores", + "plugins": "प्लगइन्स", + "apiEndpoints": "API एंडपॉइंट्स", + "batchFiles": "फायली", + "analyticsEvals": "मूल्यमापने", + "analyticsSearch": "शोध", + "analyticsUtilization": "वापर", + "analyticsComboHealth": "कॉम्बो स्थिती", + "analyticsCompression": "संपीडन", + "costsBudget": "अर्थसंकल्प", + "costsFreeTiers": "मोफत श्रेणीचा अर्थसंकल्प", + "costsFreeTiersSubtitle": "मासिक मोफत टोकन भत्ते", + "freeProviderRankings": "मोफत प्रदात्यांची क्रमवारी", + "freeProviderRankingsSubtitle": "मॉडेल ELO गुणांनुसार क्रमवारी लावलेले सर्वोत्तम मोफत प्रदाते", "radar": "रडार कॅटलॉग", "radarSubtitle": "समुदाय-समृद्ध मोफत मॉडेल कॅटलॉग", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "कोटा सामायिकरण", + "costsPricing": "किंमत निर्धारण", + "logsProxy": "प्रॉक्सी लॉग्स", + "logsConsole": "कन्सोल", + "logsActivity": "क्रियाकलाप", + "auditMcp": "MCP लेखापरीक्षण", "auditA2a": "A2A ऑडिट", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", - "settingsAccessTokens": "Access Tokens", + "settingsAppearance": "स्वरूप", + "settingsAi": "AI सेटिंग्ज", + "settingsSecurity": "सुरक्षा", + "settingsAccessTokens": "प्रवेश टोकन्स", "settingsFeatureFlags": "वैशिष्ट्य ध्वज", "settingsCache": "कॅशे", "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", - "modelLockout": "Model Lockout", - "settingsAdvanced": "Advanced", + "settingsRouting": "मार्गनिर्धारण", + "settingsResilience": "लवचिकता", + "modelLockout": "मॉडेल लॉकआउट", + "settingsAdvanced": "प्रगत", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "प्रदाता कोटा", + "providerQuota": "प्रदाता कोटा", + "runtime": "रनटाइम", + "consoleLogs": "कन्सोल लॉग्स", + "logsTimeline": "कालरेषा", "logsTimelineSubtitle": "दृश्य विनंती कालरेषा", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "संभाषणे", + "conversationsSubtitle": "बहु-चरणीय एजेंटिक संभाषणे", + "globalRouting": "जागतिक रूटिंग", + "mitmProxy": "MITM प्रॉक्सी", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", - "providerStats": "Provider Stats", - "providerStatsSubtitle": "Latency and performance metrics", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", - "pluginsSubtitle": "Plugin marketplace & installs", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "agenticFeaturesSection": "एजेंटिक वैशिष्ट्ये", + "otherFeaturesSection": "इतर वैशिष्ट्ये", + "compressionContextGroup": "संदर्भ संक्षेपण", + "gamificationGroup": "गेमिफिकेशन", + "toolsGroup": "साधने", + "integrationsGroup": "एकत्रीकरणे", + "proxyGroup": "प्रॉक्सी", + "costsParametersGroup": "खर्चाचे मापदंड", + "auditGroup": "लेखापरीक्षण", + "batchGroup": "बॅच", + "homeSubtitle": "डॅशबोर्डचा आढावा", + "providersSubtitle": "AI प्रदाते व्यवस्थापित करा", + "quotaTrackerSubtitle": "वापर मर्यादांचा मागोवा घ्या", + "providerQuotaSubtitle": "प्रदात्याच्या वापर मर्यादांचा मागोवा घ्या", + "runtimeSubtitle": "रिअल-टाइम लवचिकता आणि सत्रे", + "contextCombosSubtitle": "संक्षेपण इंजिने एकत्र करा", + "cliToolsSubtitle": "CLI रनटाइम्स कॉन्फिगर करा", + "agentsSubtitle": "स्थानिक एजंट व्यवस्थापित करा", + "cloudAgentsSubtitle": "क्लाउड-आधारित एजंट व्यवस्थापित करा", + "apiEndpointsSubtitle": "सानुकूल एंडपॉइंट्स उपलब्ध करा", + "proxySubtitle": "HTTP प्रॉक्सी सेटिंग्ज", + "mitmProxySubtitle": "MITM इंटरसेप्शन", + "oneProxySubtitle": "सार्वजनिक प्रॉक्सी गेटवे", + "leaderboard": "अग्रक्रम फलक", + "profile": "प्रोफाइल", + "tokens": "टोकन्स", + "gamificationAdmin": "गेमिफिकेशन प्रशासन", + "leaderboardSubtitle": "क्रमवारी आणि उपलब्धी", + "profileSubtitle": "खाते आणि प्राधान्ये", + "tokensSubtitle": "टोकन वापर आणि अंदाजपत्रके", + "gamificationAdminSubtitle": "विसंगती निरीक्षण आणि फसवणूक-प्रतिबंध", + "usageSubtitle": "ट्रॅफिक आणि वापराची आकडेवारी", + "analyticsComboHealthSubtitle": "कॉम्बो लक्ष्याची विश्वसनीयता", + "analyticsUtilizationSubtitle": "प्रदात्याचा वापर", + "costsSubtitle": "खर्चाचे विभाजन", + "cacheSubtitle": "कॅशे हिट दर", + "analyticsCompressionSubtitle": "टोकन बचतीची आकडेवारी", + "analyticsSearchSubtitle": "शोध साधनाचे विश्लेषण", + "analyticsEvalsSubtitle": "मूल्यमापन संचाचे निकाल", + "providerStats": "प्रदात्याची आकडेवारी", + "providerStatsSubtitle": "विलंब आणि कार्यप्रदर्शन मेट्रिक्स", + "logsSubtitle": "अनुप्रयोग लॉग", + "logsProxySubtitle": "प्रॉक्सी ट्रॅफिक लॉग", + "consoleLogsSubtitle": "कन्सोल आउटपुट", + "logsActivitySubtitle": "वापरकर्ता क्रियाकलाप लॉग", + "healthSubtitle": "सिस्टम स्थिती तपासणी", + "costsPricingSubtitle": "प्रत्येक मॉडेलनुसार किंमत नियम", + "costsBudgetSubtitle": "अर्थसंकल्प मर्यादा", + "costsQuotaShareSubtitle": "प्रदाता कोटा विविध कींमध्ये सामायिक करा", + "auditLogSubtitle": "अधिकृतता लेखापरीक्षण", + "auditMcpSubtitle": "MCP सर्व्हर लेखापरीक्षण", + "auditA2aSubtitle": "A2A प्रोटोकॉल लेखापरीक्षण", + "translatorSubtitle": "स्वरूप रूपांतरण", + "playgroundSubtitle": "प्रॉम्प्टची थेट चाचणी करा", + "searchToolsSubtitle": "शोध साधन नोंदणी", + "memorySubtitle": "सातत्यपूर्ण एजंट मेमरी", + "omniSkillsSubtitle": "सँडबॉक्स कौशल्य नोंदणी", + "agentSkillsSubtitle": "A2A कौशल्य नोंदणी", + "mcpSubtitle": "MCP सर्व्हर नियंत्रणे", + "a2aSubtitle": "A2A प्रोटोकॉल सर्व्हर", + "pluginsSubtitle": "प्लगइन मार्केटप्लेस आणि इंस्टॉलेशन्स", + "mediaSubtitle": "कॅशे केलेल्या मीडिया फाइल्स", + "batchFilesSubtitle": "बॅच इनपुट/आउटपुट फाइल्स", + "settingsSubtitle": "सर्व सेटिंग्ज", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", - "settingsAccessTokensSubtitle": "Scoped CLI tokens for remote mode", + "settingsAppearanceSubtitle": "थीम आणि मांडणी", + "settingsAiSubtitle": "AI वर्तनाची डीफॉल्ट मूल्ये", + "globalRoutingSubtitle": "जागतिक राउटिंग नियम", + "settingsResilienceSubtitle": "पुनर्प्रयत्न आणि सर्किट ब्रेकर", + "settingsAdvancedSubtitle": "प्रगत वापरकर्ता पर्याय", + "settingsSecuritySubtitle": "प्रमाणीकरण आणि एन्क्रिप्शन", + "settingsAccessTokensSubtitle": "रिमोट मोडसाठी मर्यादित-व्याप्तीचे CLI टोकन", "settingsFeatureFlagsSubtitle": "सिस्टम क्षमता टॉगल करा", "settingsCacheSubtitle": "मॉडेल कॅटलॉग आणि प्रतिसाद कॅशिंग", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", - "settingsAuthzSubtitle": "Route inventory and bypass policy", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", - "costsQuotaPlans": "Plans & Quotas", - "costsQuotaPlansSubtitle": "Configure plans by provider", - "activity": "Activity", + "settingsSidebar": "साइडबार", + "settingsSidebarSubtitle": "साइडबार मांडणी सानुकूलित करा", + "settingsAuthzSubtitle": "मार्ग सूची आणि बायपास धोरण", + "docsSubtitle": "दस्तऐवजीकरण", + "issuesSubtitle": "बग नोंदवा", + "changelogSubtitle": "आवृत्ती टिपा", + "costsQuotaPlans": "योजना आणि कोटा", + "costsQuotaPlansSubtitle": "प्रदात्यानुसार योजना कॉन्फिगर करा", + "activity": "क्रियाकलाप", "activitySubtitle": "अलीकडील घटनांचे सुलभ फीड", "logsGroup": "लॉग्स", "systemGroup": "सिस्टम", @@ -1278,8 +1278,8 @@ "agentBridge": "एजंट ब्रिज", "agentBridgeSubtitle": "IDE एजंट ट्रॅफिक इंटरसेप्ट करा", "trafficInspector": "ट्रॅफिक इन्स्पेक्टर", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "तुमच्या अॅप्समधील विनंती आणि प्रतिसाद ट्रॅफिक तपासा", + "trafficInspectorPurpose": "तुमचे अॅप्लिकेशन AI प्रदात्यांना नेमके काय पाठवते आणि त्यांच्याकडून काय प्राप्त करते ते पाहा. कोणत्याही OpenAI-सुसंगत क्लायंटसह कार्य करते.", "cliCode": "CLI कोड", "cliCodeSubtitle": "OmniRoute कडे पॉइंट करणारी कोड टूल्स", "cliAgents": "CLI एजंट्स", @@ -1345,7 +1345,7 @@ "refresh": "रिफ्रेश करा", "loading": "वेबहुक लोड करत आहे...", "never": "कधीच नाही", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {एकही अपयश नाही} one {# अपयश} other {# अपयशे}}", "testWebhook": "चाचणी पाठवा", "testSuccess": "चाचणी वेबहुक यशस्वीरीत्या पाठवला.", "testFailed": "चाचणी वेबहुक अयशस्वी.", @@ -1542,20 +1542,20 @@ "provider.credentials.bulk_imported": "प्रदाता क्रेडेंशियल्स मोठ्या प्रमाणात आयात केली", "provider.credentials.created": "प्रदाता क्रेडेंशियल्स तयार केली", "provider.credentials.imported": "प्रदाता क्रेडेंशियल्स आयात केली", - "provider.credentials.revoked": "Provider Credentials Revoked", - "provider.credentials.updated": "Provider Credentials Updated", - "provider.validation.ssrf_blocked": "Provider SSRF Blocked", - "quota.plan.updated": "Quota Plan Updated", - "quota.pool.created": "Quota Pool Created", - "quota.pool.deleted": "Quota Pool Deleted", - "quota.pool.updated": "Quota Pool Updated", - "quota.store.driver_changed": "Quota Store Driver Changed", - "server.start": "Server Start", - "service.reveal_api_key": "Service API Key Revealed", - "settings.update": "Settings Updated", - "settings.update_failed": "Settings Update Failed", - "sync.token.created": "Sync Token Created", - "sync.token.revoked": "Sync Token Revoked" + "provider.credentials.revoked": "प्रदात्याची क्रेडेन्शियल्स रद्द केली", + "provider.credentials.updated": "प्रदात्याची क्रेडेन्शियल्स अद्ययावत केली", + "provider.validation.ssrf_blocked": "प्रदात्याचा SSRF अवरोधित केला", + "quota.plan.updated": "कोटा योजना अद्ययावत केली", + "quota.pool.created": "कोटा पूल तयार केला", + "quota.pool.deleted": "कोटा पूल हटवला", + "quota.pool.updated": "कोटा पूल अद्ययावत केला", + "quota.store.driver_changed": "कोटा स्टोअर ड्रायव्हर बदलला", + "server.start": "सर्व्हर सुरू झाला", + "service.reveal_api_key": "सेवा API की उघड केली", + "settings.update": "सेटिंग्ज अद्ययावत केल्या", + "settings.update_failed": "सेटिंग्ज अद्ययावत करण्यात अयशस्वी", + "sync.token.created": "सिंक टोकन तयार केले", + "sync.token.revoked": "सिंक टोकन रद्द केले" }, "mcpMetricCalls24h": "कॉल (24 तास)", "mcpMetricSuccessRate": "यशाचा दर", @@ -1563,91 +1563,91 @@ "mcpMetricTopTool": "उच्चतम साधन" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "थीम्स", + "description": "पूर्वनिर्धारित थीम निवडा किंवा एका रंगाने तुमची स्वतःची थीम तयार करा", + "presetColors": "लोकप्रिय रंग", + "customTheme": "सानुकूल थीम", + "customThemeDesc": "थीम तयार करा वर क्लिक करा आणि एक रंग निवडा", + "createTheme": "थीम तयार करा", + "activePreset": "सक्रिय थीम" }, "header": { - "logout": "Logout", + "logout": "लॉग आउट", "quickNavigation": "जलद नेव्हिगेशन", "quickNavigationTitle": "जलद नेव्हिगेशन (⌘K / Ctrl+K)", "openQuickNavigation": "जलद नेव्हिगेशन उघडा", "switchToLightMode": "लाइट मोडवर स्विच करा", "switchToDarkMode": "डार्क मोडवर स्विच करा", - "language": "Language", - "providers": "Providers", - "providerDescription": "Manage your AI provider connections", - "combos": "Combos", - "comboDescription": "Model combos with fallback", - "usage": "Usage & Analytics", - "usageDescription": "Monitor your API usage, token consumption, and request logs", - "analytics": "Analytics", - "analyticsDescription": "Charts, trends, and evaluation insights", - "cliTools": "CLI Tools", - "cliToolsDescription": "Configure CLI tools", - "home": "Home", - "homeDescription": "Welcome to OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "language": "भाषा", + "providers": "प्रदाते", + "providerDescription": "तुमच्या AI प्रदाता जोडण्या व्यवस्थापित करा", + "combos": "कॉम्बो", + "comboDescription": "फॉलबॅकसह मॉडेल कॉम्बो", + "usage": "वापर आणि विश्लेषण", + "usageDescription": "तुमचा API वापर, टोकनचा वापर आणि विनंती लॉगचे निरीक्षण करा", + "analytics": "विश्लेषण", + "analyticsDescription": "आलेख, कल आणि मूल्यमापनविषयक अंतर्दृष्टी", + "cliTools": "CLI साधने", + "cliToolsDescription": "CLI साधने कॉन्फिगर करा", + "home": "मुख्यपृष्ठ", + "homeDescription": "OmniRoute मध्ये आपले स्वागत आहे", + "endpoint": "एंडपॉइंट्स", + "endpointDescription": "प्रॉक्सी एंडपॉइंट्स, MCP, A2A आणि API एंडपॉइंट्स व्यवस्थापित करा", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol सर्व्हर व्यवस्थापन आणि साधने", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", - "settings": "Settings", - "settingsDescription": "Manage your preferences", - "openaiCompatible": "OpenAI Compatible", - "anthropicCompatible": "Anthropic Compatible", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "a2aDescription": "Agent-to-Agent प्रोटोकॉल कार्ये आणि निरीक्षणक्षमता", + "settings": "सेटिंग्ज", + "settingsDescription": "तुमची प्राधान्ये व्यवस्थापित करा", + "openaiCompatible": "OpenAI सुसंगत", + "anthropicCompatible": "Anthropic सुसंगत", + "media": "मीडिया", + "mediaDescription": "प्रतिमा, व्हिडिओ आणि संगीत तयार करा", + "themes": "थीम्स", + "themesDescription": "संपूर्ण डॅशबोर्ड पॅनेलसाठी रंगसंगती निवडा", + "costsDescription": "सर्व प्रदात्यांमधील खर्चाचा मागोवा घ्या, कलांचे विश्लेषण करा आणि तुमचे AI बजेट व्यवस्थापित करा", + "cacheDescription": "प्रदात्याच्या प्रॉम्प्ट कॅशेची कार्यक्षमता आणि स्थानिक सिमॅंटिक प्रतिसादांच्या पुनर्वापराचे निरीक्षण करा.", + "limitsDescription": "प्रत्येक API की आणि प्रदात्यासाठी दरमर्यादा आणि कोटा कॉन्फिगर करा", + "runtimeDescription": "थेट रनटाइम निरीक्षणक्षमता — सर्किट ब्रेकर्स, कूलडाउन्स, मॉडेल लॉकआउट्स, सत्रे आणि कोटा सूचना", + "apiManagerDescription": "तुमच्या OmniRoute इंस्टन्ससाठी API की आणि प्रवेश नियंत्रण व्यवस्थापित करा", + "batchDescription": "बॅच केलेल्या API कॉल्सद्वारे मोठ्या प्रमाणातील विनंत्यांवर असिंक्रोनस पद्धतीने प्रक्रिया करा", + "contextCavemanDescription": "नियम-आधारित संदेश संक्षेपण, भाषा पॅक्स, विश्लेषण आणि आउटपुट मोड नियंत्रणे.", + "contextRtkDescription": "साधनांचे आउटपुट, टर्मिनल लॉग आणि बिल्ड परिणामांसाठी कमांड-जाणिवायुक्त संक्षेपण.", + "contextCombosDescription": "विविध रूटिंग परिस्थितींसाठी इंजिन्स कशी एकत्र केली जातात ते निश्चित करा.", + "changelogDescription": "प्लॅटफॉर्मची नवीनतम वैशिष्ट्ये आणि घोषणांबाबत अद्ययावत राहा.", + "agentsDescription": "AI एजंट साधने व्यवस्थापित आणि कॉन्फिगर करा: Codex, Devin, Jules आणि कस्टम एजंट्स", + "cloudAgentsDescription": "थेट कार्य मागोवा आणि योजना मंजुरीसह क्लाउड-आधारित AI एजंट्सचे समन्वयन करा", + "memoryDescription": "सिमॅंटिक शोध आणि FTS5 पूर्ण-मजकूर अनुक्रमणिकेसह कायमस्वरूपी संभाषणात्मक स्मृती", + "skillsDescription": "स्वयंचलित प्रॉम्प्ट आणि साधन अंमलबजावणीसाठी सँडबॉक्स कौशल्ये स्थापित आणि व्यवस्थापित करा", + "agentSkillsDescription": "AI क्लायंट एकत्रीकरणासाठी एका क्लिकमध्ये URL कॉपी करण्याची सुविधा असलेली एजंट-सज्ज कौशल्य सूची", + "translatorDescription": "API स्वरूपांदरम्यान प्रॉम्प्टचे भाषांतर आणि चाचणी करा: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "थेट प्रदाता प्रतिसाद आणि स्वरूप तपासणीसह प्रॉम्प्टची परस्परसंवादी चाचणी करा", + "searchToolsDescription": "शोध विश्लेषण, प्रदातानिहाय तपशील, कॅशे हिट दर आणि खर्चाचा मागोवा", + "logsDescription": "रिअल-टाइम विनंती लॉग, त्रुटी ट्रेस आणि स्ट्रीमिंग इव्हेंट निरीक्षक", + "auditDescription": "API की वापर, MCP साधन कॉल आणि धोरण इव्हेंटची अनुपालन ऑडिट नोंद", + "webhooksDescription": "रिअल-टाइम इव्हेंट सूचना प्राप्त करण्यासाठी वेबहुक एंडपॉइंट कॉन्फिगर करा", + "healthDescription": "सिस्टमच्या स्थितीचा आढावा: प्रदाते, सर्किट ब्रेकर, दर मर्यादा आणि डेटाबेस", + "proxyDescription": "आउटबाउंड प्रदाता कनेक्शनसाठी अपस्ट्रीम प्रॉक्सी सेटिंग्ज कॉन्फिगर करा", + "apiEndpointsDescription": "सानुकूल API एंडपॉइंट कॉन्फिगरेशन आणि रूटिंग ओव्हरराइड व्यवस्थापित करा", + "batchFilesDescription": "बॅच जॉब आउटपुट फाइल्स आणि निकाल ब्राउझ व व्यवस्थापित करा", + "analyticsEvalsDescription": "मॉडेल मूल्यमापनाचे निकाल आणि कार्यप्रदर्शन बेंचमार्क", + "analyticsSearchDescription": "शोध क्वेरी विश्लेषण, कॅशे हिट दर आणि खर्चाचा मागोवा", + "analyticsUtilizationDescription": "प्रदाता वापराची मेट्रिक्स आणि क्षमता नियोजन", + "analyticsComboHealthDescription": "कॉम्बो रूटिंग कॉन्फिगरेशनची रिअल-टाइम स्थिती आणि कार्यप्रदर्शन", + "analyticsCompressionDescription": "संदर्भ संक्षेपण विश्लेषण आणि टोकन बचत", + "costsBudgetDescription": "प्रत्येक API की आणि प्रदात्यासाठी बजेट मर्यादा आणि खर्च सूचना", + "costsPricingDescription": "टोकन खर्च गणनेसाठी सानुकूल किंमत कॉन्फिगरेशन", + "logsProxyDescription": "अपस्ट्रीम प्रॉक्सी विनंती लॉग आणि ट्रॅफिक तपासणी", + "logsConsoleDescription": "ॲप्लिकेशन कन्सोल आउटपुट आणि डीबग लॉग", + "logsActivityDescription": "वापरकर्ता कृती आणि सिस्टम इव्हेंटची ऑडिट नोंद", + "auditMcpDescription": "MCP साधन वापराची ऑडिट नोंद आणि अनुपालन अभिलेख", "auditA2a": "A2A ऑडिट", "auditA2aDescription": "A2A टास्क एक्झिक्यूशन ऑडिट ट्रेल, राज्य संक्रमण आणि कौशल्य आवाहन रेकॉर्ड", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "थीम, ब्रँडिंग आणि दृश्य सानुकूलन", + "settingsAiDescription": "AI वर्तन, विचार बजेट, व्हिजन आणि स्मृती सेटिंग्ज", "settingsCacheDescription": "मॉडेल कॅटलॉग कॅशे नोंदींसाठी TTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "प्रमाणीकरण, अधिकृतता आणि प्रवेश नियंत्रण सेटिंग्ज", "featureFlags": "वैशिष्ट्य ध्वज", "featureFlagsDescription": "नियंत्रण प्रणाली क्षमता आणि प्रायोगिक वैशिष्ट्ये", "featureFlagsActive": "{count} सक्रिय", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "तुमच्या शोधाशी कोणतेही ध्वज जुळत नाहीत", "featureFlagsSaved": "ध्वज अद्यतनित केला", "featureFlagsError": "ध्वज अद्यतनित करण्यात अयशस्वी", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "रूटिंग नियम, मॉडेल उपनावे, कॉम्बो डीफॉल्ट्स आणि अवनती सेटिंग्ज", + "settingsResilienceDescription": "सर्किट ब्रेकर, पुनर्प्रयत्न आणि फॉलबॅक कॉन्फिगरेशन", + "settingsAdvancedDescription": "प्रगत पेलोड नियम, विनंती मर्यादा आणि प्रॉक्सी API सेटिंग्ज", + "mitmProxyDescription": "ट्रॅफिक तपासणी आणि डीबगिंगसाठी MITM प्रॉक्सी सेटिंग्ज कॉन्फिगर करा", + "oneProxyDescription": "प्रगत प्रॉक्सी शृंखलेसाठी 1Proxy सेटिंग्ज कॉन्फिगर करा", "omniSkillsDescription": "स्वयंचलित प्रॉम्प्ट आणि टूल एक्झिक्यूशनसाठी सँडबॉक्स स्किल्स इन्स्टॉल आणि व्यवस्थापित करा" }, "cloudSyncStatus": { @@ -1762,7 +1762,7 @@ "discovery": "शोध", "freeProviderRankings": "मोफत प्रदाता क्रमवारी", "radar": "Radar", - "setup": "Setup", + "setup": "सेटअप", "freeTiers": "मोफत स्तर", "gamification": "गेमिफिकेशन", "leaderboard": "लीडरबोर्ड", @@ -1784,53 +1784,53 @@ "orchestration": "ऑर्केस्ट्रेशन" }, "home": { - "quickStart": "Quick Start", - "quickStartDesc": "Get up and running in 4 steps. Connect providers, route models, monitor everything.", - "fullDocs": "Full Docs", - "step1Title": "1. Create API key", + "quickStart": "जलद प्रारंभ", + "quickStartDesc": "4 चरणांत सुरुवात करा. प्रदाते कनेक्ट करा, मॉडेल्स रूट करा आणि सर्वकाही निरीक्षण करा.", + "fullDocs": "संपूर्ण दस्तऐवजीकरण", + "step1Title": "1. API की तयार करा", "step1Desc": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "step2Title": "2. Connect providers", - "step2Desc": "Add accounts in Providers. Supports OAuth, API Key, and free tiers.", - "step3Title": "3. Point your client", - "step3Desc": "Set base URL to {url} in your IDE or API client.", - "step4Title": "4. Monitor & optimize", - "step4Desc": "Track tokens, cost and errors in Request Logs and Analytics.", - "providersOverview": "Providers Overview", - "configuredOf": "{configured} configured of {total} available providers", - "noModelsAvailable": "No models available for this provider.", + "step2Title": "2. प्रदाते कनेक्ट करा", + "step2Desc": "प्रदाते मध्ये खाती जोडा. OAuth, API Key आणि मोफत स्तर समर्थित आहेत.", + "step3Title": "3. तुमचा क्लायंट निर्देशित करा", + "step3Desc": "तुमच्या IDE किंवा API क्लायंटमध्ये बेस URL {url} वर सेट करा.", + "step4Title": "4. निरीक्षण आणि ऑप्टिमायझेशन करा", + "step4Desc": "विनंती लॉग्स आणि विश्लेषण मध्ये टोकन्स, खर्च आणि त्रुटींचा मागोवा घ्या.", + "providersOverview": "प्रदात्यांचा आढावा", + "configuredOf": "उपलब्ध {total} प्रदात्यांपैकी {configured} कॉन्फिगर केले", + "noModelsAvailable": "या प्रदात्यासाठी कोणतेही मॉडेल उपलब्ध नाही.", "noProvidersConfigured": "अद्याप कोणतेही प्रदाते कॉन्फिगर केलेले नाहीत", "addProvider": "प्रदाता जोडा", - "configureFirst": "Configure a connection first in {providers}", - "configureProvider": "Configure Provider", - "modelAvailable": "{count} model available", - "modelsAvailable": "{count} models available", - "connectionsActive": "{count} connection active", - "connectionsActivePlural": "{count} connections active", - "copyModelName": "Copy model name", - "documentation": "Documentation", - "healthMonitor": "Health Monitor", - "reportIssue": "Report issue", - "activeError": "{active} active · {errors} error", - "topologyLegendActive": "__MISSING__:Active", - "topologyLegendRecent": "__MISSING__:Recent", - "topologyLegendError": "__MISSING__:Error", + "configureFirst": "प्रथम {providers} मध्ये कनेक्शन कॉन्फिगर करा", + "configureProvider": "प्रदाता कॉन्फिगर करा", + "modelAvailable": "{count} मॉडेल उपलब्ध", + "modelsAvailable": "{count} मॉडेल्स उपलब्ध", + "connectionsActive": "{count} कनेक्शन सक्रिय", + "connectionsActivePlural": "{count} कनेक्शन्स सक्रिय", + "copyModelName": "मॉडेलचे नाव कॉपी करा", + "documentation": "दस्तऐवजीकरण", + "healthMonitor": "स्थिती निरीक्षक", + "reportIssue": "समस्या नोंदवा", + "activeError": "{active} सक्रिय · {errors} त्रुटी", + "topologyLegendActive": "सक्रिय", + "topologyLegendRecent": "अलीकडील", + "topologyLegendError": "त्रुटी", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", - "requestsShort": "{count} reqs", - "providerModelsTitle": "{provider} - Models", - "copiedModel": "Copied: {model}", + "apiKeyLabel": "API की", + "requestsShort": "{count} विनंत्या", + "providerModelsTitle": "{provider} - मॉडेल्स", + "copiedModel": "कॉपी केले: {model}", "aliasLabel": "alias", - "updateNow": "Update Now", - "updating": "Updating...", - "updateAvailableDesc": "A new version is available. Click to update.", - "updateStarted": "Update started...", + "updateNow": "आता अपडेट करा", + "updating": "अपडेट करत आहे...", + "updateAvailableDesc": "नवीन आवृत्ती उपलब्ध आहे. अपडेट करण्यासाठी क्लिक करा.", + "updateStarted": "अपडेट सुरू झाले...", "reloadingPageAutomatically": "पृष्ठ स्वयंचलितपणे रीलोड करत आहे...", "providerTopology": "प्रदाता टोपोलॉजी", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "अलीकडील विनंत्या", + "recentRequestsEmpty": "अद्याप कोणत्याही विनंत्या नाहीत.", + "recentRequestsModel": "मॉडेल", + "recentRequestsTokens": "इन / आउट", + "recentRequestsWhen": "केव्हा", "downloadDmg": "DMG डाउनलोड करा (macOS)", "downloadDmgDescription": "OmniRoute डेस्कटॉप अॅपचा एक नवीन आवृत्ती उपलब्ध आहे. कृपया अद्यतन करण्यासाठी macOS DMG इंस्टॉलर डाउनलोड आणि स्थापित करा (सध्याचे: v{version}).", "downloadExe": "EXE डाउनलोड करा (Windows)", @@ -1888,18 +1888,18 @@ "releaseNotes": "रिलीज नोट्स", "readMore": "अधिक वाचा", "noAuthLabel": "कोणतीही प्रमाणीकरण नाही", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "रूट करण्यासाठी सज्ज व्हा", + "readinessTitle": "तुमची पहिली विनंती पाठवा", + "readinessSubtitle": "चार सोप्या पायऱ्या. तुम्ही पुढे जात असताना OmniRoute सज्जता तपासते.", + "readinessStep1": "प्रदात्याशी कनेक्ट करा", + "readinessStep2": "एंडपॉइंट प्रमाणीकरण कॉन्फिगर करा", + "readinessStep3": "तुमचा एंडपॉइंट कॉपी करा", + "readinessStep4": "चाचणी विनंती पाठवा", + "readinessContinue": "सेटअप सुरू ठेवा", + "readinessDismiss": "सध्या बंद करा" }, "analytics": { - "title": "Analytics", + "title": "विश्लेषण", "usageAnalyticsTitle": "वापर विश्लेषण", "diversityScoreTitle": "प्रदाता विविधता", "diversityScoreDesc": "अलीकडील ट्रॅफिक विंडोसाठी प्रदाता केंद्रीकरणाचा स्नॅपशॉट.", @@ -1963,11 +1963,11 @@ "rangeCancel": "रद्द करा", "rangeApply": "लागू करा", "rangeErrorInvalid": "प्रारंभ शेवटच्या आधी असणे आवश्यक आहे", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1 दिवस", + "period7D": "7 दिवस", + "period30D": "30 दिवस", + "period90D": "90 दिवस", + "periodYTD": "वर्षारंभापासून आजपर्यंत", "periodAll": "सर्व", "totalTokens": "एकूण टोकन्स", "inputTokens": "इनपुट टोकन्स", @@ -1990,21 +1990,21 @@ "highlightsDiversity": "विविधता", "highlightsFallbackRate": "फॉलबॅक दर", "customRange": "सानुकूल", - "overviewDescription": "Monitor your API usage patterns, token consumption, costs, and activity trends across all providers and models.", - "evalsDescription": "Run evaluation suites to test and validate your LLM endpoints. Compare model quality, detect regressions, and benchmark latency.", - "overview": "Overview", - "evals": "Evals", + "overviewDescription": "सर्व प्रदाते आणि मॉडेल्सवरील तुमच्या API वापराचे नमुने, टोकन वापर, खर्च आणि क्रियाकलापांचे कल यांचे निरीक्षण करा.", + "evalsDescription": "तुमचे LLM एंडपॉइंट्स तपासण्यासाठी आणि सत्यापित करण्यासाठी मूल्यमापन संच चालवा. मॉडेलच्या गुणवत्तेची तुलना करा, प्रतिगमन शोधा आणि विलंबाचा बेंचमार्क करा.", + "overview": "आढावा", + "evals": "मूल्यमापने", "search": "शोधा", - "utilization": "Utilization", + "utilization": "वापर", "routeTrace": "रूट ट्रेस", "sectionsAria": "अॅनालिटिक्स विभाग", - "utilizationDescription": "Provider quota usage trends and rate limit tracking", - "modelStatus": "Model Status", - "modelStatusCooldown": "Cooldown", - "modelStatusUnavailable": "Unavailable", - "modelStatusError": "Error", - "comboHealth": "Combo Health", - "comboHealthDescription": "Combo-level quota, usage distribution, and performance metrics", + "utilizationDescription": "प्रदात्याच्या कोटा वापराचे कल आणि दरमर्यादा ट्रॅकिंग", + "modelStatus": "मॉडेल स्थिती", + "modelStatusCooldown": "कूलडाउन", + "modelStatusUnavailable": "अनुपलब्ध", + "modelStatusError": "त्रुटी", + "comboHealth": "कॉम्बोचे आरोग्य", + "comboHealthDescription": "कॉम्बो-स्तरीय कोटा, वापर वितरण आणि कार्यप्रदर्शन मेट्रिक्स", "compressionAnalyticsTitle": "Compression", "compressionAnalyticsDescription": "Compression analytics - token savings, mode breakdown, and provider stats.", "autoRoutingTotalAutoRequests": "एकूण स्वयं विनंत्या", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "कामगिरी", "comboHealthPerformanceDescription": "राउट केलेल्या कॉम्बो ट्रॅफिकसाठी विश्वसनीयता आणि थ्रूपुट.", "comboHealthExecutionTargetsDescription": "संरचित कॉम्बो लक्ष्यांसाठी स्टेप-लेव्हल रनटाइम मेट्रिक्स आणि कोटा दृश्यमानता.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} विनंत्या", "comboHealthQuotaScope": "कोटा व्याप्ती: {scope}", "comboHealthTrendValue": "ट्रेंड: {trend}", "comboHealthFetchFailed": "कॉम्बो आरोग्य डेटा मिळवण्यात अयशस्वी", @@ -2237,55 +2237,55 @@ "freeTierAvailable": "मुक्त स्तर उपलब्ध आहे" }, "apiManager": { - "title": "API Keys", - "createKey": "Create API Key", - "key": "Key", - "revokeKey": "Revoke Key", - "revokeConfirm": "Are you sure you want to revoke this API key?", - "noKeys": "No API keys yet", - "noKeysDesc": "Create your first API key to authenticate requests to your endpoint", - "keyLabel": "Key Label", - "permissions": "Permissions", - "expiresAt": "Expires", - "never": "Never", - "revoke": "Revoke", - "showKey": "Show Key", - "hideKey": "Hide Key", - "copyKey": "Copy API Key", - "allModels": "All models", - "selectedModels": "Selected Models", - "readOnly": "Read Only", - "fullAccess": "Full Access", - "keyManagement": "API Key Management", - "keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "title": "API कीज", + "createKey": "API की तयार करा", + "key": "की", + "revokeKey": "की रद्द करा", + "revokeConfirm": "तुम्हाला खात्री आहे की तुम्ही ही API की रद्द करू इच्छिता?", + "noKeys": "अद्याप कोणत्याही API कीज नाहीत", + "noKeysDesc": "तुमच्या एंडपॉइंटवरील विनंत्यांचे प्रमाणीकरण करण्यासाठी तुमची पहिली API की तयार करा", + "keyLabel": "कीचे लेबल", + "permissions": "परवानग्या", + "expiresAt": "कालबाह्य होते", + "never": "कधीही नाही", + "revoke": "रद्द करा", + "showKey": "की दाखवा", + "hideKey": "की लपवा", + "copyKey": "API की कॉपी करा", + "allModels": "सर्व मॉडेल्स", + "selectedModels": "निवडलेली मॉडेल्स", + "readOnly": "केवळ वाचन", + "fullAccess": "पूर्ण प्रवेश", + "keyManagement": "API की व्यवस्थापन", + "keyManagementDesc": "तुमच्या एंडपॉइंटवरील विनंत्यांचे प्रमाणीकरण करण्यासाठी API की तयार करा आणि व्यवस्थापित करा", + "requestFlowAria": "तुमचे ॲप API कीद्वारे OmniRoute कडे विनंत्या पाठवते", + "requestFlowYourApp": "तुमचे ॲप", + "requestFlowApiKey": "API की", "requestFlowOmniRoute": "OmniRoute", - "totalKeys": "Total Keys", - "restricted": "Restricted", - "totalRequests": "Total Requests", - "modelsAvailable": "Models Available", - "registeredKeys": "Registered Keys", - "keysRegistered": "{count} keys registered", - "keyRegistered": "{count} key registered", - "keysSecurityNote": "Each key isolates usage tracking and can be revoked independently. Keys are masked after creation for security.", - "createFirstKey": "Create Your First Key", - "name": "Name", - "usage": "Usage", - "created": "Created", - "actions": "Actions", - "reqs": "reqs", - "neverUsed": "Never used", - "deleteConfirm": "Delete this API key?", - "usageTips": "Usage Tips", - "tipAuth": "Use API keys in the Authorization header as Bearer YOUR_KEY", - "tipSecure": "Keys are only shown once during creation — store them securely", - "tipSeparate": "Create separate keys for different clients or environments", - "tipRestrict": "Restrict keys to specific models for better security and cost control", - "keyName": "Key Name", + "totalKeys": "एकूण की", + "restricted": "प्रतिबंधित", + "totalRequests": "एकूण विनंत्या", + "modelsAvailable": "उपलब्ध मॉडेल्स", + "registeredKeys": "नोंदणीकृत की", + "keysRegistered": "{count} की नोंदणीकृत", + "keyRegistered": "{count} की नोंदणीकृत", + "keysSecurityNote": "प्रत्येक की वापराचे ट्रॅकिंग स्वतंत्र ठेवते आणि ती स्वतंत्रपणे रद्द करता येते. सुरक्षिततेसाठी तयार केल्यानंतर की लपविल्या जातात.", + "createFirstKey": "तुमची पहिली की तयार करा", + "name": "नाव", + "usage": "वापर", + "created": "तयार केले", + "actions": "क्रिया", + "reqs": "विनंत्या", + "neverUsed": "कधीही वापरलेली नाही", + "deleteConfirm": "ही API की हटवायची?", + "usageTips": "वापराच्या टिपा", + "tipAuth": "Authorization हेडरमध्ये API की Bearer YOUR_KEY या स्वरूपात वापरा", + "tipSecure": "की तयार करतानाच फक्त एकदा दाखवल्या जातात — त्या सुरक्षितपणे संग्रहित करा", + "tipSeparate": "वेगवेगळ्या क्लायंट किंवा वातावरणांसाठी स्वतंत्र की तयार करा", + "tipRestrict": "अधिक चांगली सुरक्षितता आणि खर्च नियंत्रणासाठी की विशिष्ट मॉडेल्सपुरत्या मर्यादित ठेवा", + "keyName": "कीचे नाव", "keyNamePlaceholder": "e.g., Production Key, Development Key", - "keyNameDesc": "Choose a descriptive name to identify this key's purpose", + "keyNameDesc": "या कीचा उद्देश ओळखण्यासाठी वर्णनात्मक नाव निवडा", "managementAccessDesc": "या API कीला OmniRoute संरचना व्यवस्थापित करण्याची परवानगी द्या.", "selfServiceVisibility": "स्व-सेवा दृश्यमानता", "selfServiceVisibilityDesc": "ही की स्वतःचा वापर आणि शेअर केलेला upstream कोटा याबद्दल काय पाहू शकते ते नियंत्रित करा.", @@ -2296,83 +2296,83 @@ "localUsageCommand": "स्थानिक वापर कमांडला अनुमती द्या", "localUsageCommandDesc": "अपस्ट्रीम प्रदात्याला कॉल न करता कॅश केलेली वापर आणि कोटा माहिती मिळवण्यासाठी या API की ला @@om-usage वापरण्याची अनुमती देते.", "localUsageCommandBadge": "वापर cmd", - "keyCreated": "API Key Created", - "keyCreatedSuccess": "Key created successfully!", - "keyCreatedNote": "Copy and store this key now — it won't be shown again.", - "done": "Done", - "savePermissions": "Save Permissions", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "keyCreated": "API की तयार केली", + "keyCreatedSuccess": "की यशस्वीरीत्या तयार केली!", + "keyCreatedNote": "ही की आत्ताच कॉपी करून सुरक्षित ठेवा — ती पुन्हा दाखवली जाणार नाही.", + "done": "पूर्ण झाले", + "savePermissions": "परवानग्या जतन करा", + "endpointRestrictions": "अनुमत एंडपॉइंट्स", + "allEndpointsAllowed": "ही की सर्व API एंडपॉइंट्समध्ये प्रवेश करू शकते.", + "endpointsRestricted": "{count} एंडपॉइंटपुरते मर्यादित{count, plural, one {} other {}}.", + "autoResolve": "स्वयं-निराकरण", + "autoResolveDesc": "या API कीसाठी संदिग्ध मॉडेल नावे मूळ प्रदात्याशी आपोआप जुळवा.", "streamDefaultMode": "स्ट्रीम डीफॉल्ट सुसंगतता", "streamDefaultModeDesc": "या की साठी वगळलेले `stream` फ्लॅग्ज नियंत्रित करते. क्लायंटने स्पष्टपणे SSE ची विनंती केल्याशिवाय JSON मोड नॉन-स्ट्रीमिंग प्रतिसाद देतो.", "streamDefaultLegacy": "लेगसी", "streamDefaultJson": "JSON सुसंगत", "streamDefaultBadge": "JSON स्ट्रीम डीफॉल्ट", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", - "allowAll": "Allow All", - "restrict": "Restrict", - "allowAllInfo": "This key can access all available models.", - "restrictInfo": "This key can access {selected} of {total} models.", - "selected": "{count} selected", - "all": "All", - "clear": "Clear", - "searchModels": "Search models by name or provider...", - "noModelsFound": "No models found", - "keyNameRequired": "Key name is required", - "keyNameTooLong": "Key name must be {max} characters or less", - "keyNameInvalid": "Key name can only contain letters, numbers, spaces, hyphens, and underscores", - "invalidKeyName": "Invalid key name", - "failedCreateKey": "Failed to create key", - "failedCreateKeyRetry": "Failed to create key. Please try again.", - "invalidKeyId": "Invalid key ID", - "failedDeleteKey": "Failed to delete key", - "failedDeleteKeyRetry": "Failed to delete key. Please try again.", - "invalidModelsSelection": "Invalid models selection", - "cannotSelectMoreThanModels": "Cannot select more than {max} models", - "failedUpdatePermissions": "Failed to update permissions", - "failedUpdatePermissionsRetry": "Failed to update permissions. Please try again.", - "unknownProvider": "unknown", - "copyMaskedKey": "Copy masked key", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyActive": "की सक्रिय आहे", + "keyActiveDesc": "ही API की सक्षम किंवा अक्षम करा. अक्षम केलेल्या की 403 सह त्वरित नाकारल्या जातात.", + "accessSchedule": "प्रवेश वेळापत्रक", + "accessScheduleDesc": "आठवड्यातील विशिष्ट तास आणि दिवसांपुरता प्रवेश मर्यादित करा.", + "scheduleFrom": "पासून", + "scheduleUntil": "पर्यंत", + "scheduleDays": "दिवस", + "scheduleTimezone": "वेळ क्षेत्र", + "scheduleTimezoneHint": "IANA वेळ क्षेत्रांची नावे वापरा, उदा. America/New_York, Europe/Berlin", + "scheduleActive": "वेळापत्रक", + "disabled": "अक्षम", + "daySun": "रवि", + "dayMon": "सोम", + "dayTue": "मंगळ", + "dayWed": "बुध", + "dayThu": "गुरु", + "dayFri": "शुक्र", + "daySat": "शनि", + "allowAll": "सर्वांना अनुमती द्या", + "restrict": "मर्यादित करा", + "allowAllInfo": "ही की सर्व उपलब्ध मॉडेल्समध्ये प्रवेश करू शकते.", + "restrictInfo": "ही की {total} पैकी {selected} मॉडेल्समध्ये प्रवेश करू शकते.", + "selected": "{count} निवडले", + "all": "सर्व", + "clear": "साफ करा", + "searchModels": "नाव किंवा प्रदात्यानुसार मॉडेल्स शोधा...", + "noModelsFound": "कोणतेही मॉडेल सापडले नाही", + "keyNameRequired": "कीचे नाव आवश्यक आहे", + "keyNameTooLong": "कीचे नाव {max} किंवा त्यापेक्षा कमी वर्णांचे असणे आवश्यक आहे", + "keyNameInvalid": "कीच्या नावामध्ये केवळ अक्षरे, अंक, स्पेस, हायफन आणि अंडरस्कोअर असू शकतात", + "invalidKeyName": "कीचे नाव अवैध आहे", + "failedCreateKey": "की तयार करण्यात अयशस्वी", + "failedCreateKeyRetry": "की तयार करण्यात अयशस्वी. कृपया पुन्हा प्रयत्न करा.", + "invalidKeyId": "की ID अवैध आहे", + "failedDeleteKey": "की हटवण्यात अयशस्वी", + "failedDeleteKeyRetry": "की हटवण्यात अयशस्वी. कृपया पुन्हा प्रयत्न करा.", + "invalidModelsSelection": "मॉडेलची निवड अवैध आहे", + "cannotSelectMoreThanModels": "{max} पेक्षा जास्त मॉडेल निवडता येत नाहीत", + "failedUpdatePermissions": "परवानग्या अपडेट करण्यात अयशस्वी", + "failedUpdatePermissionsRetry": "परवानग्या अपडेट करण्यात अयशस्वी. कृपया पुन्हा प्रयत्न करा.", + "unknownProvider": "अज्ञात", + "copyMaskedKey": "लपवलेली की कॉपी करा", + "keyOnlyAvailableAtCreation": "संपूर्ण की केवळ तयार करतानाच उपलब्ध असते — पहिल्यांदा की तयार करताना ती कॉपी करा", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# डिव्हाइस} other {# डिव्हाइसेस}}", "devicesTooltip": "{count, plural, one {या की सह पाहिलेले # वेगळे IP/User-Agent डिव्हाइस (शेवटची 30 मिनिटे)} other {या की सह पाहिलेली # वेगळी IP/User-Agent डिव्हाइसेस (शेवटची 30 मिनिटे)}}", - "lastUsedOn": "Last: {date}", + "lastUsedOn": "शेवटचे: {date}", "viewCostsFor": "{name} साठी खर्च पहा", - "editPermissions": "Edit permissions", - "deleteKey": "Delete key", + "editPermissions": "परवानग्या संपादित करा", + "deleteKey": "की हटवा", "regenerateKey": "की पुन्हा निर्माण करा", "regenerateConfirm": "तुम्हाला खात्री आहे की तुम्ही ही API की पुन्हा निर्माण करू इच्छिता? जुनी की त्वरित अवैध केली जाईल.", "failedRegenerateKey": "API की पुन्हा निर्माण करण्यात अयशस्वी", "failedRegenerateKeyRetry": "API की पुन्हा निर्माण करण्यात अयशस्वी. कृपया पुन्हा प्रयत्न करा.", - "model": "{count} model", - "models": "{count} models", - "permissionsTitle": "Permissions: {name}", - "allowAllDesc": "This key can access all available models.", + "model": "{count} मॉडेल", + "models": "{count} मॉडेल", + "permissionsTitle": "परवानग्या: {name}", + "allowAllDesc": "ही की सर्व उपलब्ध मॉडेल्समध्ये प्रवेश करू शकते.", "restrictLoading": "मॉडेल कॅटलॉग लोड होत आहे…", "restrictCatalogUnavailable": "मॉडेल कॅटलॉग उपलब्ध नाही; या की वर {selectedCount} निवडक मॉडेल निर्बंध आहेत.", - "restrictDesc": "This key can access {selectedCount} of {totalModels} models.", - "selectedCount": "{count} selected", + "restrictDesc": "ही की {totalModels} पैकी {selectedCount} मॉडेल्समध्ये प्रवेश करू शकते.", + "selectedCount": "{count} निवडले", "maxActiveSessions": "कमाल सक्रिय सत्रे", "maxActiveSessionsDescription": "0 = अमर्यादित. जेव्हा ही की कॉन्करंट स्टिकी सेशन्स ओलांडते तेव्हा 429 परत करा.", "throttleDelay": "थ्रॉटल विलंब", @@ -2382,8 +2382,8 @@ "allowedCombos": "अनुमत कॉम्बोज", "allCombosAllowed": "ही की कोणताही कॉम्बो वापरू शकते.", "restrictedComboCount": "{count, plural, one {# कॉम्बोपुरते मर्यादित} other {# कॉम्बोजपुरते मर्यादित}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# संग्रहित नोंद} other {# संग्रहित नोंदी}} या कॉम्बो सूचीमध्ये नाहीत (उदाहरणार्थ, राउटिंग नियम) आणि जतन केल्याप्रमाणे ठेवल्या जातील.", + "preservedComboRuleHint": "संग्रहित केल्याप्रमाणे ठेवले आहे. ही नोंद वरील सूचीमधील कॉम्बो नसल्यामुळे ती फक्त API द्वारे बदलता येऊ शकते.", "apiManagerCustomRateLimits": "सानुकूल दर मर्यादा", "apiManagerCustomRateLimitsDesc": "जागतिक डीफॉल्ट मर्यादा ओव्हरराइड करा. डीफॉल्ट वापरण्यासाठी रिकामे सोडा.", "apiManagerRateLimitRequestsPlaceholder": "विनंत्या", @@ -2419,52 +2419,52 @@ "bypassProviderQuota": "प्रदाता कोटा कटऑफ बायपास करा", "bypassProviderQuotaDescription": "राउटिंग दरम्यान अपस्ट्रीम प्रदाता/खाते कटऑफ धोरणाकडे दुर्लक्ष करण्यास या कीला अनुमती देते. API की USD कोटा अद्याप लागू आहेत.", "quotaPill": "कोटा", - "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "quotaModeOnly": "केवळ qtSd", + "exclusiveLease": "विशेष भाडेपट्टा", + "exclusiveLeaseNoticeTitle": "विशेष भाडेपट्टा", + "exclusiveLeaseNoticeDesc": "या API कीला समर्पित कनेक्शन राउटिंगसाठी विशेष भाडेपट्टा परवानग्या आहेत.", + "allConnections": "सर्व कनेक्शन्स", + "onlySelectedConnections": "फक्त निवडलेली कनेक्शन्स", + "selectAtLeastOneConnection": "किमान एक कनेक्शन निवडा किंवा सर्व कनेक्शन्स निवडा.", + "allConnectionsDesc": "ही की कोणतेही सक्रिय कनेक्शन वापरू शकते.", + "restrictedToConnections": "{count, plural, one {# कनेक्शनपुरते} other {# कनेक्शन्सपुरते}} मर्यादित." }, "auditLog": { - "title": "Audit Log", - "searchPlaceholder": "Search actions...", - "action": "Action", - "actor": "Actor", - "target": "Target", - "ipAddress": "IP Address", - "timestamp": "Timestamp", - "noEntries": "No audit entries found", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", + "title": "ऑडिट लॉग", + "searchPlaceholder": "कृती शोधा...", + "action": "कृती", + "actor": "कर्ता", + "target": "लक्ष्य", + "ipAddress": "IP पत्ता", + "timestamp": "टाइमस्टॅम्प", + "noEntries": "कोणत्याही ऑडिट नोंदी आढळल्या नाहीत", + "filterByAction": "कृतीनुसार फिल्टर करा...", + "filterByActor": "कर्ताानुसार फिल्टर करा...", + "filterEntriesAria": "ऑडिट लॉग नोंदी फिल्टर करा", + "filterByActionTypeAria": "कृतीच्या प्रकारानुसार फिल्टर करा", + "filterByActorAria": "कर्ताानुसार फिल्टर करा", + "refreshAuditLogAria": "ऑडिट लॉग रिफ्रेश करा", + "tableAria": "ऑडिट लॉग नोंदी", + "failedFetchAuditLog": "ऑडिट लॉग प्राप्त करण्यात अयशस्वी", "notAvailable": "—", - "description": "Administrative actions and security events", - "showing": "Showing {count} entries (offset {offset})", - "previous": "Previous" + "description": "प्रशासकीय कृती आणि सुरक्षा घटना", + "showing": "{count} नोंदी दाखवत आहे (ऑफसेट {offset})", + "previous": "मागील" }, "media": { - "title": "Media Playground", - "subtitle": "Generate images, videos, and music", + "title": "मीडिया प्लेग्राउंड", + "subtitle": "प्रतिमा, व्हिडिओ आणि संगीत तयार करा", "model": "Model", "prompt": "Prompt", - "generate": "Generate", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generate": "तयार करा", + "generating": "तयार करत आहे...", + "loadingModels": "उपलब्ध मॉडेल लोड करत आहे...", + "noModels": "कोणतेही मॉडेल उपलब्ध नाही. प्रथम मीडिया क्षमता असलेले प्रदाते कॉन्फिगर करा.", + "error": "निर्मिती अयशस्वी", + "result": "निकाल", + "imageDescription": "OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI आणि इतरांचा वापर करून मजकूर प्रॉम्प्टमधून प्रतिमा तयार करा.", + "videoDescription": "ComfyUI किंवा SD WebUI द्वारे AnimateDiff, Stable Video Diffusion वापरून व्हिडिओ तयार करा.", + "musicDescription": "ComfyUI द्वारे Stable Audio Open किंवा MusicGen वापरून संगीत तयार करा.", "kinds": { "embedding": "एम्बेडिंग", "image": "प्रतिमा", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter स्पीच-टू-टेक्स्ट मॉडेल्स तुमच्या कॉन्फिगर केलेल्या OpenRouter कनेक्शनचा वापर करतात. स्वतंत्र प्रमाणपत्राची आवश्यकता नाही." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "शोध क्वेरी", + "searchResults": "शोध परिणाम", + "cachedResult": "कॅश केलेले", + "searchCost": "खर्च", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "प्रदाता तुलनेसह प्रगत शोध चाचणी", + "compareProviders": "प्रदात्यांची तुलना करा", + "rerankResults": "निकालांना पुन्हा क्रम द्या", + "searchHistory": "शोध इतिहास", + "urlOverlap": "URL ओव्हरलॅप", + "noSearchProviders": "कोणतेही शोध प्रदाते कॉन्फिगर केलेले नाहीत. Settings मध्ये प्रदाते जोडा.", + "noRerankModels": "कोणतेही पुनर्क्रमांकन मॉडेल उपलब्ध नाही", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "प्रदाता", + "searchType": "शोध प्रकार", + "maxResults": "कमाल परिणाम", + "filters": "फिल्टर्स", + "country": "देश", + "language": "भाषा", + "timeRange": "कालावधी", + "includeDomains": "डोमेन समाविष्ट करा", + "excludeDomains": "डोमेन वगळा", + "safeSearch": "सुरक्षित शोध", + "safeSearchOff": "बंद", + "safeSearchModerate": "मध्यम", + "safeSearchStrict": "कठोर", + "queryPlaceholder": "शोध क्वेरी प्रविष्ट करा...", + "providerAuto": "स्वयंचलित (सर्वात स्वस्त)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "बातम्या", + "optionAny": "कोणतेही", + "timeRangeDay": "मागील दिवस", + "timeRangeWeek": "मागील आठवडा", + "timeRangeMonth": "मागील महिना", + "timeRangeYear": "मागील वर्ष", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "विनंतीची वेळ संपली ({seconds}s)", + "networkError": "नेटवर्क त्रुटी", + "formatted": "स्वरूपित", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "कॅश मिस", + "cacheHit": "कॅश हिट", + "latency": "विलंब", + "cost": "खर्च", + "results": "निकाल", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "पुनःक्रमांकन मॉडेल", + "positionDelta": "स्थानातील बदल", + "emptyState": "निकाल पाहण्यासाठी शोध क्वेरी पाठवा", "copy": "कॉपी करा", "resetToDefault": "डीफॉल्टवर रीसेट करा", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "शोध", + "tabScrape": "स्क्रेप", + "tabCompare": "तुलना", + "modalitiesGuide": "मोडॅलिटीज मार्गदर्शक", + "searchConceptTitle": "शोध", + "searchConceptDesc": "शोध = वेब निकालांची सूची मिळवते (शीर्षक, URL, स्निपेट, सुसंगतता गुण)", + "scrapeConceptTitle": "स्क्रेप", + "scrapeConceptDesc": "स्क्रेप = URL मधील संपूर्ण सामग्री काढते (markdown, मजकूर किंवा HTML)", + "compareConceptTitle": "तुलना", + "compareConceptDesc": "तुलना = विलंब, खर्च आणि निकालांमधील समानता यांची तुलना करण्यासाठी तीच क्वेरी N प्रदात्यांवर शेजारी-शेजारी चालवते", + "rerankConceptTitle": "पुनःक्रमांकन", + "rerankConceptDesc": "पुनःक्रमांकन = क्वेरीच्या आधारे सुसंगतता सुधारण्यासाठी LLM द्वारे निकालांचा क्रम बदलते", + "autoConceptTitle": "स्वयं (सर्वात स्वस्त)", + "autoConceptDesc": "स्वयं (सर्वात स्वस्त) = कॉन्फिगर केलेली क्रेडेन्शियल्स असलेला उपलब्ध सर्वात स्वस्त प्रदाता आपोआप निवडतो", + "providerCatalogTitle": "प्रदाता सूची", + "kindSearch": "शोध", + "kindFetch": "मिळवा/स्क्रेप करा", + "statusConfigured": "कॉन्फिगर केलेले", + "statusMissing": "क्रेडेन्शियल नाही", + "statusRateLimited": "दर मर्यादित", + "configureProvider": "Providers मध्ये कॉन्फिगर करा", + "loadingProviders": "प्रदाते लोड होत आहेत…", + "failedToLoadProviders": "प्रदाते लोड करण्यात अयशस्वी", + "costPerQuery": "प्रति क्वेरी खर्च", + "freeQuota": "मोफत कोटा/महिना", + "scrapeUrl": "स्क्रेप करण्यासाठी URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL आवश्यक आहे", "scrapeUrlInvalid": "अवैध URL — ती http:// किंवा https:// ने सुरू झाली पाहिजे", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "मजकूर काढा", + "scrapeExtracting": "मजकूर काढत आहे…", + "scrapeFullPage": "संपूर्ण पृष्ठ", + "scrapeFormat": "स्वरूप", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "मजकूर", + "scrapePreview": "पूर्वावलोकन", + "scrapeRaw": "रॉ", + "scrapeContentTruncated": "(संक्षिप्त केले आहे, रॉ पहा)", + "scrapeMetadata": "मेटाडेटा", + "scrapeProvider": "प्रदाता", + "scrapeSize": "आकार", "scrapeEmptyState": "त्यातील सामग्री काढण्यासाठी URL प्रविष्ट करा", "scrapeProvidersAvailable": "उपलब्ध प्रदाते: Firecrawl, Jina Reader, Tavily.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "तुलना करा", + "compareRunning": "तुलना करत आहे…", + "autoProvider": "स्वयं (सर्वात स्वस्त)", + "configuredStatus": "कॉन्फिगर केलेले", + "rateLimitedStatus": "दर मर्यादित", + "noCredential": "क्रेडेन्शियल नाही", + "searchTypeLabel": "प्रकार", + "rerankModelLabel": "पुनर्क्रमांकन मॉडेल", + "noneOption": "काहीही नाही", + "size": "आकार", "configurationPane": "कॉन्फिगरेशन पेन", "configuration": "कॉन्फिगरेशन", "status": "स्थिती", @@ -2701,7 +2701,7 @@ "compareEmptyDescription": "निकाल लेटन्सी, खर्च आणि URL ओव्हरलॅपसह शेजारी शेजारी दाखवले जातील" }, "cliTools": { - "title": "CLI Tools", + "title": "CLI साधने", "classifierCompatTitle": "ऑटो-परमिशन क्लासिफायर सुसंगतता", "classifierCompatDescription": "Claude Code च्या --permission-mode auto सुरक्षा क्लासिफायरला सिंथेटिक allow प्रतिसादासह शॉर्ट-सर्किट करा जेणेकरून फॉलबॅक रूट्स fail closed होणार नाहीत. डीफॉल्टनुसार बंद.", "classifierCompatCycle": "सायकल: बंद → ऑटो → नेहमी", @@ -2727,14 +2727,14 @@ "codexProfilesDescription": "मॉडेल शोधल्यानंतर ~/.codex/*.config.toml पुन्हा तयार करा.", "claudeProfiles": "Claude Code प्रोफाइल्स", "claudeProfilesDescription": "मॉडेल शोधल्यानंतर प्रत्येक ~/.claude/profiles/…/settings.json पुन्हा तयार करा.", - "noActiveProviders": "No active providers", - "noActiveProvidersDesc": "Please add and connect providers first to configure CLI tools.", - "mapModels": "Map Models", - "testConnection": "Test Connection", - "connectionStatus": "Connection Status", - "configureEndpoint": "Configure Endpoint", - "instructions": "Instructions", - "modelMapping": "Model Mapping", + "noActiveProviders": "कोणतेही सक्रिय प्रदाते नाहीत", + "noActiveProvidersDesc": "CLI साधने कॉन्फिगर करण्यासाठी प्रथम प्रदाते जोडा आणि कनेक्ट करा.", + "mapModels": "मॉडेल मॅप करा", + "testConnection": "कनेक्शन तपासा", + "connectionStatus": "कनेक्शन स्थिती", + "configureEndpoint": "एंडपॉइंट कॉन्फिगर करा", + "instructions": "सूचना", + "modelMapping": "मॉडेल मॅपिंग", "reasoningEffort": "{model} साठी रिझनिंग एफर्ट", "effortNone": "काहीही नाही", "effortLow": "कमी", @@ -2743,66 +2743,66 @@ "effortExtraHigh": "अतिरिक्त उच्च", "effortMax": "कमाल", "effortUltra": "अल्ट्रा", - "wireApi": "Wire API", + "wireApi": "API जोडा", "modelAliases": "मॉडेल उपनावे", "addModel": "मॉडेल जोडा", "routeModelPlaceholder": "{model} येथे रूट करा...", - "baseUrl": "Base URL", - "apiKey": "API Key", - "configured": "Configured", - "notConfigured": "Not configured", - "notInstalled": "Not installed", - "custom": "Custom", - "unknown": "Unknown", - "lastSavedAt": "Last saved: {date}", - "never": "Never", - "justNow": "just now", - "minutesAgoShort": "{count}m ago", - "hoursAgoShort": "{count}h ago", - "daysAgoShort": "{count}d ago", - "monthsAgoShort": "{count}mo ago", - "yearsAgoShort": "{count}y ago", - "runtimeCheckFailed": "Runtime check failed", + "baseUrl": "बेस URL", + "apiKey": "API की", + "configured": "कॉन्फिगर केलेले", + "notConfigured": "कॉन्फिगर केलेले नाही", + "notInstalled": "इंस्टॉल केलेले नाही", + "custom": "सानुकूल", + "unknown": "अज्ञात", + "lastSavedAt": "शेवटचे जतन: {date}", + "never": "कधीही नाही", + "justNow": "आत्ताच", + "minutesAgoShort": "{count} मिनिटांपूर्वी", + "hoursAgoShort": "{count} तासांपूर्वी", + "daysAgoShort": "{count} दिवसांपूर्वी", + "monthsAgoShort": "{count} महिन्यांपूर्वी", + "yearsAgoShort": "{count} वर्षांपूर्वी", + "runtimeCheckFailed": "रनटाइम तपासणी अयशस्वी झाली", "yourApiKeyPlaceholder": "your-api-key", "modelPlaceholder": "provider/model-id", - "configurationSaved": "Configuration saved successfully.", - "failedToSave": "Failed to save configuration.", - "noApiKeysCreateOne": "No API keys - Create one in Keys page", - "defaultOmnirouteKey": "sk_omniroute (default)", - "selectModel": "Select Model", - "selectModelForAlias": "Select model for {alias}", - "selectModelForTool": "Select Model for {tool}", - "select": "Select", - "clear": "Clear", - "comingSoon": "Coming soon", - "checkingRuntime": "Checking runtime status...", - "guideOnlyIntegration": "Guide-only integration (no local runtime required)", - "cliRuntimeDetected": "CLI runtime detected and ready", - "cliFoundNotRunnable": "CLI found but not runnable{reason}", - "cliRuntimeNotDetected": "CLI runtime not detected", - "binary": "Binary", - "configPath": "Config path", - "configPathShort": "Config", - "failedCheckRuntimeStatus": "Failed to check runtime status.", - "copy": "Copy", - "copied": "Copied", - "copyConfig": "Copy Config", - "saveConfig": "Save Config", - "selectionSaved": "Selection saved", - "guide": "Guide", - "detected": "Detected", - "notReady": "Not ready", - "active": "Active", - "inactive": "Inactive", + "configurationSaved": "कॉन्फिगरेशन यशस्वीरित्या जतन केले.", + "failedToSave": "कॉन्फिगरेशन जतन करण्यात अयशस्वी.", + "noApiKeysCreateOne": "API की उपलब्ध नाहीत - Keys पृष्ठावर एक तयार करा", + "defaultOmnirouteKey": "sk_omniroute (डीफॉल्ट)", + "selectModel": "मॉडेल निवडा", + "selectModelForAlias": "{alias} साठी मॉडेल निवडा", + "selectModelForTool": "{tool} साठी मॉडेल निवडा", + "select": "निवडा", + "clear": "साफ करा", + "comingSoon": "लवकरच उपलब्ध", + "checkingRuntime": "रनटाइम स्थिती तपासत आहे...", + "guideOnlyIntegration": "केवळ मार्गदर्शक एकत्रीकरण (स्थानिक रनटाइमची आवश्यकता नाही)", + "cliRuntimeDetected": "CLI रनटाइम आढळला आणि तयार आहे", + "cliFoundNotRunnable": "CLI आढळले, परंतु चालवता येत नाही{reason}", + "cliRuntimeNotDetected": "CLI रनटाइम आढळला नाही", + "binary": "बायनरी", + "configPath": "कॉन्फिग पथ", + "configPathShort": "कॉन्फिग", + "failedCheckRuntimeStatus": "रनटाइम स्थिती तपासण्यात अयशस्वी.", + "copy": "कॉपी करा", + "copied": "कॉपी केले", + "copyConfig": "कॉन्फिग कॉपी करा", + "saveConfig": "कॉन्फिग जतन करा", + "selectionSaved": "निवड जतन केली", + "guide": "मार्गदर्शक", + "detected": "आढळले", + "notReady": "तयार नाही", + "active": "सक्रिय", + "inactive": "निष्क्रिय", "startMitm": "Start MITM", "stopMitm": "Stop MITM", - "mitmStarted": "MITM started successfully!", - "mitmStopped": "MITM stopped successfully!", - "failedStart": "Failed to start MITM", - "failedStop": "Failed to stop MITM", - "saveMappings": "Save Mappings", - "mappingsSaved": "Mappings saved!", - "failedSaveMappings": "Failed to save mappings", + "mitmStarted": "MITM यशस्वीरीत्या सुरू झाले!", + "mitmStopped": "MITM यशस्वीरीत्या थांबवले!", + "failedStart": "MITM सुरू करण्यात अयशस्वी", + "failedStop": "MITM थांबवण्यात अयशस्वी", + "saveMappings": "मॅपिंग्ज जतन करा", + "mappingsSaved": "मॅपिंग्ज जतन केली!", + "failedSaveMappings": "मॅपिंग्ज जतन करण्यात अयशस्वी", "reasoningEffortDefault": "डीफॉल्ट", "reasoningEffortHint": "डीफॉल्ट एजंटने पाठवलेला रिझनिंग एफर्ट कायम ठेवतो", "reasoningEffortTier": { @@ -2812,130 +2812,130 @@ "high": "उच्च", "xhigh": "XHigh" }, - "howItWorks": "How it works:", - "antigravityHowWorksDesc": "Antigravity sends requests to Google's endpoint. MITM intercepts and redirects them to OmniRoute.", - "antigravityStep1": "1. Start MITM to route requests through OmniRoute.", - "antigravityStep2Prefix": "2. Add", - "antigravityStep2Suffix": "to your hosts file as 127.0.0.1.", - "antigravityStep3": "3. Open Antigravity and requests will be proxied.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", - "sudoPasswordRequiredTitle": "Sudo Password Required", - "sudoPasswordHint": "Administrator password is required to modify hosts file and system proxy settings.", - "enterSudoPassword": "Enter sudo password", - "sudoPasswordRequiredError": "Sudo password is required.", - "cancel": "Cancel", - "confirm": "Confirm", - "settingsApplied": "Settings applied successfully!", - "failedApplySettings": "Failed to apply settings", - "settingsReset": "Settings reset successfully!", - "failedResetSettings": "Failed to reset settings", - "backupRestored": "Backup restored!", - "failedRestore": "Failed to restore", - "checkingCli": "Checking {tool} CLI...", - "cliNotRunnable": "{tool} CLI installed but not runnable", - "cliNotInstalled": "{tool} CLI not installed", - "cliNotDetected": "{tool} CLI not detected", - "cliDetectedReady": "{tool} CLI detected and ready", - "cliFoundFailedHealthcheck": "{tool} CLI was found but failed runtime healthcheck{reason}.", - "installCliPrompt": "Please install {tool} CLI to use this feature.", - "installCodexPrompt": "Please install Codex CLI to use auto-apply feature.", - "hide": "Hide", - "howToInstall": "How to Install", - "installationGuide": "Installation Guide", + "howItWorks": "हे कसे कार्य करते:", + "antigravityHowWorksDesc": "Antigravity विनंत्या Google च्या एंडपॉइंटकडे पाठवते. MITM त्या अडवून OmniRoute कडे पुनर्निर्देशित करते.", + "antigravityStep1": "1. OmniRoute द्वारे विनंत्या रूट करण्यासाठी MITM सुरू करा.", + "antigravityStep2Prefix": "2. हे जोडा:", + "antigravityStep2Suffix": "तुमच्या hosts फाइलमध्ये 127.0.0.1 म्हणून.", + "antigravityStep3": "3. Antigravity उघडा आणि विनंत्या प्रॉक्सी केल्या जातील.", + "mitmHowWorksDesc": "{toolName} त्याच्या प्रदात्याच्या एंडपॉइंटकडे विनंत्या पाठवते. MITM त्या अडवून OmniRoute कडे पुनर्निर्देशित करते.", + "mitmStep1": "1. OmniRoute द्वारे विनंत्या रूट करण्यासाठी MITM सुरू करा.", + "mitmStep2Prefix": "2. हे जोडा:", + "mitmStep2Suffix": "तुमच्या hosts फाइलमध्ये 127.0.0.1 म्हणून.", + "mitmStep3": "3. {toolName} उघडा आणि विनंत्या प्रॉक्सी केल्या जातील.", + "sudoPasswordRequiredTitle": "Sudo पासवर्ड आवश्यक", + "sudoPasswordHint": "hosts फाइल आणि सिस्टम प्रॉक्सी सेटिंग्जमध्ये बदल करण्यासाठी प्रशासकाचा पासवर्ड आवश्यक आहे.", + "enterSudoPassword": "sudo पासवर्ड प्रविष्ट करा", + "sudoPasswordRequiredError": "Sudo पासवर्ड आवश्यक आहे.", + "cancel": "रद्द करा", + "confirm": "पुष्टी करा", + "settingsApplied": "सेटिंग्ज यशस्वीरित्या लागू केल्या!", + "failedApplySettings": "सेटिंग्ज लागू करण्यात अयशस्वी", + "settingsReset": "सेटिंग्ज यशस्वीरित्या रीसेट केल्या!", + "failedResetSettings": "सेटिंग्ज रीसेट करण्यात अयशस्वी", + "backupRestored": "बॅकअप पुनर्संचयित केला!", + "failedRestore": "पुनर्संचयित करण्यात अयशस्वी", + "checkingCli": "{tool} CLI तपासत आहे...", + "cliNotRunnable": "{tool} CLI इंस्टॉल केले आहे, पण चालवता येत नाही", + "cliNotInstalled": "{tool} CLI इंस्टॉल केलेले नाही", + "cliNotDetected": "{tool} CLI आढळले नाही", + "cliDetectedReady": "{tool} CLI आढळले आणि तयार आहे", + "cliFoundFailedHealthcheck": "{tool} CLI आढळले, पण रनटाइम आरोग्य तपासणी अयशस्वी झाली{reason}.", + "installCliPrompt": "हे वैशिष्ट्य वापरण्यासाठी कृपया {tool} CLI इंस्टॉल करा.", + "installCodexPrompt": "स्वयं-लागू वैशिष्ट्य वापरण्यासाठी कृपया Codex CLI इंस्टॉल करा.", + "hide": "लपवा", + "howToInstall": "इंस्टॉल कसे करावे", + "installationGuide": "इंस्टॉलेशन मार्गदर्शक", "platforms": "macOS / Linux / Windows:", - "afterInstallationRun": "After installation, run", - "toVerify": "to verify.", - "current": "Current", + "afterInstallationRun": "इंस्टॉल केल्यानंतर, चालवा", + "toVerify": "पडताळणी करण्यासाठी.", + "current": "सध्याचे", "baseUrlPlaceholder": "https://.../v1", - "resetToDefault": "Reset to default", + "resetToDefault": "डीफॉल्टवर रीसेट करा", "providerModelPlaceholder": "provider/model-id", - "apply": "Apply", - "reset": "Reset", - "manualConfig": "Manual Config", - "backups": "Backups", - "configBackups": "Config Backups", - "noBackupsYet": "No backups yet. Backups are created automatically before each Apply or Reset.", - "restore": "Restore", - "backupRestoredReloading": "Backup restored! Reloading status...", - "failedRestoreBackup": "Failed to restore backup", - "applied": "Applied!", - "failed": "Failed", - "resetDone": "Reset!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute is configured as OpenAI-compatible provider", - "provider": "Provider", + "apply": "लागू करा", + "reset": "रीसेट करा", + "manualConfig": "मॅन्युअल कॉन्फिगरेशन", + "backups": "बॅकअप्स", + "configBackups": "कॉन्फिगरेशन बॅकअप्स", + "noBackupsYet": "अद्याप कोणतेही बॅकअप नाहीत. प्रत्येक लागू किंवा रीसेट करण्यापूर्वी बॅकअप आपोआप तयार केले जातात.", + "restore": "पुनर्संचयित करा", + "backupRestoredReloading": "बॅकअप पुनर्संचयित केला! स्थिती पुन्हा लोड करत आहे...", + "failedRestoreBackup": "बॅकअप पुनर्संचयित करण्यात अयशस्वी", + "applied": "लागू केले!", + "failed": "अयशस्वी", + "resetDone": "रीसेट केले!", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute हे OpenAI-सुसंगत प्रदाता म्हणून कॉन्फिगर केले आहे", + "provider": "प्रदाता", "model": "Model", - "providers": "Providers", - "auth": "Auth", - "noApiKeysAvailable": "No API keys available", - "usingDefaultOmniroute": "Using default: sk_omniroute", - "updateConfig": "Update Config", - "applyConfig": "Apply Config", - "noBackupsAvailable": "No backups available.", - "profileSaved": "Profile \"{name}\" saved!", - "failedSaveProfile": "Failed to save profile", - "profileActivated": "Profile activated!", - "failedActivateProfile": "Failed to activate profile", - "profiles": "Profiles", - "savedProfiles": "Saved Profiles", - "noProfilesYet": "No profiles saved yet. Save current config as a profile below.", - "activate": "Activate", - "deleteProfile": "Delete profile", - "profileNamePlaceholder": "Profile name (e.g. Personal Account)", - "saveCurrent": "Save Current", - "codexAuthNotePrefix": "Codex uses", - "codexAuthNoteMiddle": "with", - "codexAuthNoteSuffix": "Click \"Apply\" to auto-configure.", - "claudeManualConfiguration": "Claude CLI - Manual Configuration", - "codexManualConfiguration": "Codex CLI - Manual Configuration", - "droidManualConfiguration": "Factory Droid - Manual Configuration", - "openClawManualConfiguration": "Open Claw - Manual Configuration", - "clineManualConfiguration": "Cline Manual Configuration", - "kiloManualConfiguration": "Kilo Code Manual Configuration", - "whenToUseLabel": "When to use", - "openToolDocs": "Open tool docs", + "providers": "प्रदाते", + "auth": "प्रमाणीकरण", + "noApiKeysAvailable": "कोणत्याही API की उपलब्ध नाहीत", + "usingDefaultOmniroute": "डीफॉल्ट वापरत आहे: sk_omniroute", + "updateConfig": "कॉन्फिग अपडेट करा", + "applyConfig": "कॉन्फिग लागू करा", + "noBackupsAvailable": "कोणतेही बॅकअप उपलब्ध नाहीत.", + "profileSaved": "प्रोफाइल \"{name}\" जतन केले!", + "failedSaveProfile": "प्रोफाइल जतन करण्यात अयशस्वी", + "profileActivated": "प्रोफाइल सक्रिय केले!", + "failedActivateProfile": "प्रोफाइल सक्रिय करण्यात अयशस्वी", + "profiles": "प्रोफाइल्स", + "savedProfiles": "जतन केलेली प्रोफाइल्स", + "noProfilesYet": "अद्याप कोणतीही प्रोफाइल्स जतन केलेली नाहीत. खाली सध्याचे कॉन्फिग प्रोफाइल म्हणून जतन करा.", + "activate": "सक्रिय करा", + "deleteProfile": "प्रोफाइल हटवा", + "profileNamePlaceholder": "प्रोफाइलचे नाव (उदा. वैयक्तिक खाते)", + "saveCurrent": "सध्याचे जतन करा", + "codexAuthNotePrefix": "Codex वापरते", + "codexAuthNoteMiddle": "यासह", + "codexAuthNoteSuffix": "स्वयं-कॉन्फिगर करण्यासाठी \"लागू करा\" वर क्लिक करा.", + "claudeManualConfiguration": "Claude CLI - मॅन्युअल कॉन्फिगरेशन", + "codexManualConfiguration": "Codex CLI - मॅन्युअल कॉन्फिगरेशन", + "droidManualConfiguration": "Factory Droid - मॅन्युअल कॉन्फिगरेशन", + "openClawManualConfiguration": "Open Claw - मॅन्युअल कॉन्फिगरेशन", + "clineManualConfiguration": "Cline मॅन्युअल कॉन्फिगरेशन", + "kiloManualConfiguration": "Kilo Code मॅन्युअल कॉन्फिगरेशन", + "whenToUseLabel": "केव्हा वापरावे", + "openToolDocs": "टूलची कागदपत्रे उघडा", "toolUseCases": { - "claude": "Use when you want strong planning workflows and long multi-file refactors with Claude Code.", - "codex": "Use when your team is standardized on OpenAI Codex CLI flows and profile-based auth.", - "droid": "Use when you need a lightweight terminal agent focused on fast coding and command execution loops.", - "openclaw": "Use when you want an Open Claw style coding agent but routed through OmniRoute policies.", - "cline": "Use when you configure coding agents inside editors and want guided setup with OmniRoute models.", - "kilo": "Use when your workflow depends on Kilo Code commands and fast iterative edits.", - "cursor": "Use when coding in Cursor and you need custom OpenAI-compatible models through OmniRoute.", - "continue": "Use when running Continue in IDEs and you need portable JSON-based provider configuration.", - "opencode": "Use when you prefer terminal-native agent runs and scripted automation via OpenCode.", - "kiro": "Use when integrating Kiro and controlling model routing centrally from OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", - "antigravity": "Use when Antigravity/Kiro traffic must be intercepted through MITM and routed to OmniRoute.", - "copilot": "Use when you want Copilot chat style UX while enforcing OmniRoute keys and routing rules.", - "amp": "Use when you want Amp shorthand workflows but still need OmniRoute alias and routing rules enforcement.", - "hermes": "Use when you need a lightweight terminal-native AI assistant for quick tasks.", + "claude": "Claude Code सह प्रभावी नियोजन कार्यप्रवाह आणि अनेक फाइल्समध्ये दीर्घ रिफॅक्टरिंग हवे असेल तेव्हा वापरा.", + "codex": "तुमच्या टीमने OpenAI Codex CLI कार्यप्रवाह आणि प्रोफाइल-आधारित प्रमाणीकरण प्रमाणित केलेले असेल तेव्हा वापरा.", + "droid": "वेगवान कोडिंग आणि कमांड एक्झिक्युशन लूप्सवर केंद्रित असलेला हलका टर्मिनल एजंट हवा असेल तेव्हा वापरा.", + "openclaw": "Open Claw शैलीचा कोडिंग एजंट हवा असेल, पण त्याचे राउटिंग OmniRoute धोरणांद्वारे करायचे असेल तेव्हा वापरा.", + "cline": "एडिटर्समध्ये कोडिंग एजंट्स कॉन्फिगर करताना OmniRoute मॉडेल्ससह मार्गदर्शित सेटअप हवा असेल तेव्हा वापरा.", + "kilo": "तुमचा कार्यप्रवाह Kilo Code कमांड्स आणि वेगवान पुनरावृत्तीपूर्ण संपादनांवर अवलंबून असेल तेव्हा वापरा.", + "cursor": "Cursor मध्ये कोडिंग करताना OmniRoute द्वारे सानुकूल OpenAI-सुसंगत मॉडेल्सची आवश्यकता असेल तेव्हा वापरा.", + "continue": "IDEs मध्ये Continue चालवताना पोर्टेबल JSON-आधारित प्रोव्हायडर कॉन्फिगरेशनची आवश्यकता असेल तेव्हा वापरा.", + "opencode": "OpenCode द्वारे टर्मिनल-नेटिव्ह एजंट रन आणि स्क्रिप्टेड ऑटोमेशनला प्राधान्य देत असाल तेव्हा वापरा.", + "kiro": "Kiro समाकलित करताना आणि OmniRoute मधून मॉडेल राउटिंगचे केंद्रीकृत नियंत्रण करताना वापरा.", + "windsurf": "OmniRoute द्वारे रूट केलेल्या Codeium/Windsurf मॉडेल्ससह AI-प्रथम IDE हवे असेल तेव्हा वापरा.", + "antigravity": "Antigravity/Kiro ट्रॅफिक MITM द्वारे इंटरसेप्ट करून OmniRoute कडे रूट करणे आवश्यक असेल तेव्हा वापरा.", + "copilot": "OmniRoute कीज आणि राउटिंग नियम लागू करताना Copilot चॅट-शैलीचा UX हवा असेल तेव्हा वापरा.", + "amp": "Amp शॉर्टहँड कार्यप्रवाह हवे असतील, पण तरीही OmniRoute उपनाव आणि राउटिंग नियमांची अंमलबजावणी आवश्यक असेल तेव्हा वापरा.", + "hermes": "जलद कामांसाठी हलका, टर्मिनल-नेटिव्ह AI सहाय्यक हवा असेल तेव्हा वापरा.", "hermes-agent": "जेव्हा तुम्हाला OmniRoute द्वारे रूट केलेल्या डीफॉल्ट, डेलिगेशन, व्हिजन आणि ऑक्झिलरी मॉडेल्ससह Hermes Agent (Nousresearch द्वारे) ची आवश्यकता असेल तेव्हा वापरा.", - "custom": "Use for custom tool implementations or generic OpenAI-compatible configurations." + "custom": "कस्टम टूल अंमलबजावणी किंवा सर्वसाधारण OpenAI-सुसंगत कॉन्फिगरेशनसाठी वापरा." }, "toolDescriptions": { - "antigravity": "Google Antigravity IDE with MITM", + "antigravity": "MITM सह Google Antigravity IDE", "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "कस्टम प्रोव्हायडर सपोर्टसह xAI Grok Build TUI कोडिंग एजंट", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Factory Droid AI सहाय्यक", + "openclaw": "Open Claw AI सहाय्यक", + "cline": "Cline AI कोडिंग सहाय्यक CLI", + "kilo": "Kilo Code AI सहाय्यक CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "continue": "Continue AI सहाय्यक", + "opencode": "OpenCode AI कोडिंग एजंट (टर्मिनल)", + "kiro": "Amazon Kiro — AI-सक्षम IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp कोडिंग सहाय्यक CLI", + "hermes": "Hermes AI टर्मिनल सहाय्यक", "hermes-agent": "Hermes Agent (Nousresearch द्वारे) - मल्टी-मॉडेल सपोर्टसह प्रगत टर्मिनल AI (डेलिगेशन, व्हिजन, कॉम्प्रेशन, इत्यादी)", - "custom": "Generic OpenAI-compatible CLI or SDK configuration generator", + "custom": "सर्वसाधारण OpenAI-सुसंगत CLI किंवा SDK कॉन्फिगरेशन जनरेटर", "aider": "OpenAI-सुसंगत बेस URL सह Aider AI पेअर-प्रोग्रामिंग CLI", "forge": "कस्टम प्रोव्हायडरसह ForgeCode कोडिंग एजंट CLI", "cursor-cli": "हेडलेस एजंट मोडमध्ये Cursor Agent CLI", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter ऑटोनॉमस कोडिंग एजंट CLI", "omp": "Oh My Pi टर्मिनल कोडिंग एजंट", "letta": "पर्सिस्टंट मेमरी आणि टूल वापरासह Letta CLI एजंट", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI-सुसंगत प्रदाता समर्थनासह स्वतःमध्ये सुधारणा करणारा RLM कोडिंग हार्नेस", "warp": "कस्टम प्रोव्हायडर सपोर्टसह Warp AI टर्मिनल", "agent-deck": "Agent Deck मल्टी-एजंट ऑर्केस्ट्रेटर", "5dive": "5dive — स्वयं-होस्टेड कोडिंग एजंट्सचा ताफा; एक auth प्रोफाइल सर्वांना OmniRoute कडे निर्देशित करते" @@ -2958,134 +2958,134 @@ "guides": { "cursor": { "notes": { - "0": "Requires Cursor Pro account to use this feature.", - "1": "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings." + "0": "हे वैशिष्ट्य वापरण्यासाठी Cursor Pro खाते आवश्यक आहे.", + "1": "Cursor विनंत्या स्वतःच्या सर्व्हरद्वारे रूट करतो, त्यामुळे स्थानिक एंडपॉइंट समर्थित नाही. कृपया सेटिंग्जमध्ये Cloud Endpoint सक्षम करा." }, "steps": { "1": { - "title": "Open Settings", - "desc": "Go to Settings -> Models" + "title": "सेटिंग्ज उघडा", + "desc": "सेटिंग्ज -> मॉडेल्स येथे जा" }, "2": { - "title": "Enable OpenAI API", - "desc": "Enable \"OpenAI API key\" option" + "title": "OpenAI API सक्षम करा", + "desc": "\"OpenAI API key\" पर्याय सक्षम करा" }, "3": { - "title": "Base URL" + "title": "बेस URL" }, "4": { - "title": "API Key" + "title": "API की" }, "5": { - "title": "Add Custom Model", - "desc": "Click \"View All Model\" -> \"Add Custom Model\"" + "title": "कस्टम मॉडेल जोडा", + "desc": "\"View All Model\" -> \"Add Custom Model\" वर क्लिक करा" }, "6": { - "title": "Select Model" + "title": "मॉडेल निवडा" } } }, "continue": { "steps": { "1": { - "title": "Open Config", - "desc": "Open Continue configuration file" + "title": "कॉन्फिगरेशन उघडा", + "desc": "Continue कॉन्फिगरेशन फाइल उघडा" }, "2": { - "title": "API Key" + "title": "API की" }, "3": { - "title": "Select Model" + "title": "मॉडेल निवडा" }, "4": { - "title": "Add Model Config", - "desc": "Add the following configuration to your models array:" + "title": "मॉडेल कॉन्फिगरेशन जोडा", + "desc": "तुमच्या models अॅरेमध्ये खालील कॉन्फिगरेशन जोडा:" } }, "notes": { - "0": "Continue uses JSON config file." + "0": "Continue JSON कॉन्फिगरेशन फाइल वापरते." } }, "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCode इंस्टॉल करा", + "desc": "npm द्वारे इंस्टॉल करा: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API की" }, "3": { - "title": "Set Base URL", + "title": "बेस URL सेट करा", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "मॉडेल निवडा" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "थिंकिंग व्हेरियंट वापरा", + "desc": "थिंकिंग मॉडेल्ससाठी, --variant high/low/max सह चालवा (खाली उदाहरण कमांड दिली आहे)." } }, "notes": { - "0": "OpenCode requires API key configuration.", - "1": "Set the base URL to your OmniRoute endpoint." + "0": "OpenCode साठी API की कॉन्फिगरेशन आवश्यक आहे.", + "1": "बेस URL तुमच्या OmniRoute एंडपॉइंटवर सेट करा." } }, "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro सेटिंग्ज उघडा", + "desc": "सेटिंग्ज → AI प्रदाता येथे जा" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "बेस URL", + "desc": "तुमची OmniRoute एंडपॉइंट URL पेस्ट करा" }, "3": { - "title": "API Key" + "title": "API की" }, "4": { - "title": "Select Model" + "title": "मॉडेल निवडा" } }, "notes": { - "0": "Kiro requires Amazon account." + "0": "Kiro साठी Amazon खाते आवश्यक आहे." } }, "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI सेटिंग्ज उघडा", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "सानुकूल प्रदाता जोडा", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "बेस URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API की", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "मॉडेल निवडा", + "desc": "ड्रॉपडाउनमधून मॉडेल निवडा" } } } }, - "autoConfiguredTab": "Auto-Configured", - "toolCategoriesDesc": "Configure AI coding assistants to route through OmniRoute", - "allToolsTab": "All Tools", - "guidedClientsTab": "Guided Clients", - "mitmClientsTab": "MITM Clients", + "autoConfiguredTab": "स्वयं-कॉन्फिगर केलेले", + "toolCategoriesDesc": "OmniRoute द्वारे रूट करण्यासाठी AI कोडिंग सहाय्यक कॉन्फिगर करा", + "allToolsTab": "सर्व साधने", + "guidedClientsTab": "मार्गदर्शित क्लायंट्स", + "mitmClientsTab": "MITM क्लायंट्स", "customCliTab": "सानुकूल CLI", - "toolCategories": "Tool Categories", - "visibleToolsCount": "{count} tools available", + "toolCategories": "साधनांच्या श्रेणी", + "visibleToolsCount": "{count} साधने उपलब्ध", "customCliBuilderTitle": "OpenAI- सुसंगत CLI बिल्डर", "customCliBuilderDescription": "OpenAI- सुसंगत बेस URL, API की आणि मॉडेल आयडी स्वीकारणाऱ्या कोणत्याही CLI किंवा SDK साठी env vars आणि JSON स्निपेट्स व्युत्पन्न करा.", "customCliNoModels": "मॉडेल निवडक पॉप्युलेट करण्यासाठी किमान एक प्रदाता कनेक्ट करा.", @@ -3203,75 +3203,75 @@ "cliproxyapiVersion": "आवृत्ती" }, "combos": { - "title": "Combos", - "description": "Create model combos with weighted routing and fallback support", + "title": "कॉम्बोज", + "description": "भारित रूटिंग आणि फॉलबॅक समर्थनासह मॉडेल कॉम्बोज तयार करा", "autoCatalogTitle": "ऑटो-राउटिंग कॅटलॉग", "autoCatalogTemplateCount": "{count} टेम्पलेट्स", "autoCatalogDescription": "बिल्ट-इन ऑटो/* कॉम्बो कनेक्ट केलेल्या प्रदात्यांकडून डायनॅमिकपणे निराकरण केले. यापैकी कोणतेही आयडी मॉडेल फील्ड म्हणून वापरा — कोणत्याही सेटअपची आवश्यकता नाही.", "autoCatalogExpand": "स्वयं-राउटिंग कॅटलॉग विस्तृत करा", "autoCatalogCollapse": "ऑटो-राउटिंग कॅटलॉग संकुचित करा", - "createCombo": "Create Combo", - "editCombo": "Edit Combo", - "deleteCombo": "Delete Combo", - "noModels": "No models", - "noModelsYet": "No models added yet", - "addModel": "Add Model", - "addModelToCombo": "Add Model to Combo", - "routingStrategy": "Routing Strategy", - "maxRetries": "Max Retries", - "timeout": "Timeout (ms)", - "healthcheck": "Healthcheck", - "priority": "Priority", - "fallback": "Fallback", + "createCombo": "कॉम्बो तयार करा", + "editCombo": "कॉम्बो संपादित करा", + "deleteCombo": "कॉम्बो हटवा", + "noModels": "कोणतेही मॉडेल नाही", + "noModelsYet": "अद्याप कोणतेही मॉडेल जोडलेले नाही", + "addModel": "मॉडेल जोडा", + "addModelToCombo": "कॉम्बोमध्ये मॉडेल जोडा", + "routingStrategy": "रूटिंग धोरण", + "maxRetries": "कमाल पुनःप्रयत्न", + "timeout": "टाइमआउट (ms)", + "healthcheck": "आरोग्य तपासणी", + "priority": "प्राधान्य", + "fallback": "फॉलबॅक", "roundRobin": "Round Robin", - "random": "Random", - "leastLatency": "Least Latency", - "comboName": "Combo Name", - "comboNamePlaceholder": "my-combo", + "random": "यादृच्छिक", + "leastLatency": "सर्वात कमी विलंब", + "comboName": "कॉम्बोचे नाव", + "comboNamePlaceholder": "माझा-कॉम्बो", "comboDescription": "वर्णन", "comboDescriptionPlaceholder": "या कॉम्बोचे वर्णन करणारी पर्यायी नोंद", - "deleteConfirm": "Delete this combo?", - "noCombosYet": "No combos yet", - "comboCreated": "Combo created successfully", - "comboUpdated": "Combo updated successfully", - "comboDeleted": "Combo deleted", - "failedCreate": "Failed to create combo", - "failedUpdate": "Failed to update combo", - "errorCreating": "Error creating combo", - "errorUpdating": "Error updating combo", - "errorDeleting": "Error deleting combo", - "testFailed": "Test request failed", - "failedToggle": "Failed to toggle combo", - "testResults": "Test Results — {name}", - "resolvedBy": "Resolved by:", - "more": "+{count} more", - "reqs": "reqs", - "success": "success", - "proxyConfigured": "Proxy configured", - "copyComboName": "Copy combo name", - "enableCombo": "Enable combo", - "disableCombo": "Disable combo", - "testCombo": "Test combo", - "duplicate": "Duplicate", - "proxyConfig": "Proxy configuration", - "nameRequired": "Name is required", - "nameInvalid": "Only letters, numbers, -, _, / and . allowed", - "nameHint": "Letters, numbers, -, _, / and . allowed", - "priorityDesc": "Sequential fallback: tries model 1 first, then 2, etc.", - "weightedDesc": "Distributes traffic by weight percentage with fallback", - "roundRobinDesc": "Circular distribution: each request goes to the next model in rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", - "randomDesc": "Uniform random selection, then fallback to remaining models", - "leastUsedDesc": "Picks the model with fewest requests, balancing load over time", - "costOptimizedDesc": "Routes to the cheapest model first based on pricing", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "deleteConfirm": "हा कॉम्बो हटवायचा?", + "noCombosYet": "अद्याप कोणतेही कॉम्बो नाहीत", + "comboCreated": "कॉम्बो यशस्वीरित्या तयार केला", + "comboUpdated": "कॉम्बो यशस्वीरित्या अपडेट केला", + "comboDeleted": "कॉम्बो हटवला", + "failedCreate": "कॉम्बो तयार करण्यात अयशस्वी", + "failedUpdate": "कॉम्बो अपडेट करण्यात अयशस्वी", + "errorCreating": "कॉम्बो तयार करताना त्रुटी", + "errorUpdating": "कॉम्बो अपडेट करताना त्रुटी", + "errorDeleting": "कॉम्बो हटवताना त्रुटी", + "testFailed": "चाचणी विनंती अयशस्वी", + "failedToggle": "कॉम्बोची स्थिती बदलण्यात अयशस्वी", + "testResults": "चाचणी निकाल — {name}", + "resolvedBy": "याद्वारे निराकरण:", + "more": "आणखी +{count}", + "reqs": "विनंत्या", + "success": "यशस्वी", + "proxyConfigured": "प्रॉक्सी कॉन्फिगर केली", + "copyComboName": "कॉम्बोचे नाव कॉपी करा", + "enableCombo": "कॉम्बो सक्षम करा", + "disableCombo": "कॉम्बो अक्षम करा", + "testCombo": "कॉम्बोची चाचणी करा", + "duplicate": "प्रत तयार करा", + "proxyConfig": "प्रॉक्सी कॉन्फिगरेशन", + "nameRequired": "नाव आवश्यक आहे", + "nameInvalid": "केवळ अक्षरे, अंक, -, _, / आणि . यांना परवानगी आहे", + "nameHint": "अक्षरे, अंक, -, _, / आणि . यांना परवानगी आहे", + "priorityDesc": "क्रमिक फॉलबॅक: प्रथम मॉडेल 1, त्यानंतर 2, अशा क्रमाने प्रयत्न करतो.", + "weightedDesc": "फॉलबॅकसह भाराच्या टक्केवारीनुसार ट्रॅफिक वितरित करतो", + "roundRobinDesc": "चक्रीय वितरण: प्रत्येक विनंती क्रमाने पुढील मॉडेलकडे जाते", + "contextRelay": "कॉन्टेक्स्ट रिले", + "contextRelayDesc": "खाती बदलताना हस्तांतरण सारांशांसह सत्राचे सातत्य जपतो", + "randomDesc": "समान संभाव्यतेने यादृच्छिक निवड, त्यानंतर उर्वरित मॉडेल्सकडे फॉलबॅक", + "leastUsedDesc": "सर्वांत कमी विनंत्या असलेले मॉडेल निवडून कालांतराने भार संतुलित करतो", + "costOptimizedDesc": "किंमतीच्या आधारे प्रथम सर्वांत स्वस्त मॉडेलकडे रूट करतो", + "cacheOptimizedDesc": "प्रत्येक पुनर्वापरयोग्य प्रॉम्प्ट उपसर्गाला सातत्याने त्याच प्रदाता खात्याकडे रूट करतो", "resetAware": "रीसेट-अवेअर RR", "resetAwareDesc": "शिल्लक कोटा 5h आणि साप्ताहिक रीसेट करा, नंतर समान स्कोअर राउंड-रॉबिन", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "कोटा-भारित", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "कठोर यादृच्छिक", + "strictRandomDesc": "शफल डेक — पुन्हा शफल करण्यापूर्वी प्रत्येक मॉडेल एकदा वापरतो", "fusion": "फ्युजन", "fusionDesc": "प्रॉम्प्ट समांतरपणे प्रत्येक पॅनेल मॉडेलकडे पाठवते, त्यानंतर एक जज मॉडेल एका अंतिम उत्तरामध्ये त्याचे संश्लेषण करते", "fusionJudgeModel": "जज मॉडेल", @@ -3282,27 +3282,27 @@ "fusionStragglerGraceMsHelp": "कोरम पूर्ण झाल्यावर संथ पॅनेल मॉडेल्ससाठी किती वेळ प्रतीक्षा करावी (डीफॉल्ट 8000).", "fusionPanelHardTimeoutMs": "पॅनेल हार्ड टाइमआउट (ms)", "fusionPanelHardTimeoutMsHelp": "कमाल मर्यादा जेणेकरून एक अडकलेले मॉडेल संपूर्ण पॅनेल थांबवू शकत नाही (डीफॉल्ट 90000).", - "models": "Models", - "autoBalance": "Auto-balance", - "advancedSettings": "Advanced Settings", - "retryDelay": "Retry Delay (ms)", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", - "advancedHint": "Leave empty to use global defaults. These override per-provider settings.", + "models": "मॉडेल्स", + "autoBalance": "स्वयं-संतुलन", + "advancedSettings": "प्रगत सेटिंग्ज", + "retryDelay": "पुनःप्रयत्न विलंब (ms)", + "concurrencyPerModel": "समवर्तीता / मॉडेल", + "queueTimeout": "रांग कालबाह्यता (ms)", + "contextRelayHandoffThreshold": "हँडऑफ मर्यादा", + "contextRelayHandoffThresholdHelp": "कोटा वापर या मर्यादेपर्यंत पोहोचल्यावर, सक्रिय खाते पूर्णपणे वापरले जाण्यापूर्वी OmniRoute एक संरचित हँडऑफ सारांश तयार करते.", + "contextRelayMaxMessages": "सारांशासाठी कमाल संदेश", + "contextRelayMaxMessagesHelp": "रिले सारांशात अलीकडील इतिहास किती प्रमाणात संक्षिप्त केला जाईल, हे मर्यादित करते.", + "contextRelaySummaryModel": "सारांश मॉडेल", + "contextRelaySummaryModelHelp": "केवळ हँडऑफ सारांश तयार करण्यासाठी वापरले जाणारे पर्यायी ओव्हरराइड मॉडेल. सक्रिय कॉम्बो मॉडेल पुन्हा वापरण्यासाठी हे रिकामे ठेवा.", + "contextRelayProviderNote": "Context Relay सध्या Codex खाते रोटेशनसाठी हँडऑफ तयार करते. सर्वोत्तम सातत्यासाठी ते एकाच provider च्या अनेक खात्यांसोबत वापरा.", + "advancedHint": "जागतिक डीफॉल्ट वापरण्यासाठी रिकामे ठेवा. हे प्रत्येक provider ची सेटिंग्ज ओव्हरराइड करतात.", "failoverBeforeRetry": "पुन्हा प्रयत्न करण्यापूर्वी फेलओव्हर", "maxSetRetries": "कमाल सेट पुन्हा प्रयत्न", "setRetryDelayMs": "पुन्हा प्रयत्न विलंब सेट करा (ms)", - "moveUp": "Move up", - "moveDown": "Move down", - "removeModel": "Remove", - "saving": "Saving...", + "moveUp": "वर हलवा", + "moveDown": "खाली हलवा", + "removeModel": "काढून टाका", + "saving": "जतन करत आहे...", "liveNoProviders": "अद्याप कोणतेही प्रदाते आढळले नाहीत.", "liveFleetDataHint": "फ्लीट डेटा थेट कॉम्बो इव्हेंट्सद्वारे येतो.", "liveActiveCount": "सक्रिय ({count})", @@ -3342,43 +3342,43 @@ "playgroundEmptyHint": "राउटिंग पाथ पाहण्यासाठी एक कॉम्बो निवडा आणि Simulate Route वर क्लिक करा.", "playgroundNoCombosYet": "अद्याप कोणतेही कॉम्बो कॉन्फिगर केलेले नाहीत.", "playgroundCreateFirst": "प्रथम एक तयार करा", - "weighted": "Weighted", - "leastUsed": "Least-Used", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "weighted": "भारित", + "leastUsed": "सर्वात कमी वापरलेले", + "costOpt": "खर्च-अनुकूल", + "strategyGuideTitle": "ही रणनीती कशी वापरावी", + "strategyGuideWhen": "केव्हा वापरावे", + "strategyGuideAvoid": "केव्हा टाळावे", + "strategyGuideExample": "उदाहरण", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "तुमच्याकडे एक पसंतीचे मॉडेल आहे आणि तुम्हाला केवळ अपयश आल्यास फॉलबॅक हवा आहे.", + "avoid": "तुम्हाला विनंत्यांचे विविध मॉडेल्समध्ये वितरण करायचे आहे.", + "example": "आउटेजसाठी स्वस्त बॅकअप असलेले प्राथमिक कोडिंग मॉडेल." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "तुम्हाला विविध मॉडेल्समध्ये नियंत्रित ट्रॅफिक विभाजनाची आवश्यकता आहे.", + "avoid": "तुम्ही कालांतराने अचूक भार राखू शकत नाही.", + "example": "80% स्थिर मॉडेल + 20% कॅनरी मॉडेल रोलआउट." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "तुम्हाला अंदाज करता येण्याजोगे आणि समान वितरण हवे आहे.", + "avoid": "विलंब किंवा खर्चाच्या बाबतीत मॉडेल्समध्ये खूप फरक आहे.", + "example": "थ्रूपुट वितरित करण्यासाठी अनेक खात्यांवर समान मॉडेल." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "तुम्हाला कमीतकमी सेटअपसह सोपे वितरण हवे आहे.", + "avoid": "तुम्हाला ट्रॅफिकच्या कठोर हमींची आवश्यकता आहे.", + "example": "समतुल्य मॉडेल्ससह जलद प्रोटोटायपिंग." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "तुम्हाला प्रत्यक्ष मागणीवर आधारित अनुकूलनीय संतुलन हवे आहे.", + "avoid": "वापर संतुलनाचा लाभ मिळण्यासाठी ट्रॅफिक खूप कमी आहे.", + "example": "मिश्र कार्यभार, ज्यामध्ये एखादे मॉडेल अनेकदा ओव्हरलोड होते." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "खर्च कमी करणे ही तुमची सर्वोच्च प्राथमिकता आहे.", + "avoid": "किंमतविषयक डेटा उपलब्ध नाही किंवा कालबाह्य झाला आहे.", + "example": "कमी खर्चाला प्राधान्य असलेली पार्श्वभूमीतील किंवा बॅच कामे." }, "reset-aware": { "when": "तुम्ही कोटा टेलीमेट्री आणि भिन्न रीसेट विंडोसह एकाधिक खात्यांमधून मार्ग काढता.", @@ -3386,104 +3386,104 @@ "example": "नंतर 80% खाते रीसेट करण्यापेक्षा उद्या 60% साप्ताहिक खाते रीसेट करण्यास प्राधान्य द्या." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "पूर्णपणे समान वितरण हवे असल्यास वापरा — पुनरावृत्ती होण्यापूर्वी प्रत्येक मॉडेल एकदा वापरले जाते.", + "avoid": "मॉडेल्सची गुणवत्ता किंवा विलंब वेगवेगळा असेल आणि क्रम महत्त्वाचा असेल, तर वापर टाळा.", + "example": "उदाहरण: वापराचे समान वितरण करण्यासाठी एकाच मॉडेलची अनेक खाती." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Power-of-Two-Choices अल्गोरिदम वापरून कमी-विलंबाची निवड हवी असल्यास वापरा.", + "avoid": "2 किंवा त्यापेक्षा कमी मॉडेल्स असलेल्या लहान संयोजनांसाठी वापर टाळा — राउंड-रॉबिनच्या तुलनेत कोणताही फायदा नाही.", + "example": "उदाहरण: 4+ समतुल्य मॉडेल एंडपॉइंट्सवर उच्च-थ्रूपुट इन्फरन्स." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "कार्यरत संदर्भ न गमावता खाते रोटेशनदरम्यान दीर्घ सत्रे टिकवायची असल्यास वापरा.", + "avoid": "खाते बदलणे क्वचित होत असल्यास किंवा अतिरिक्त सारांशीकरण विनंत्या नको असल्यास वापर टाळा.", + "example": "उदाहरण: कोटा संपण्याच्या जवळ असताना अनेक खात्यांमध्ये रोटेट होणारी Codex सत्रे." }, "fill-first": { - "when": "Use when you want to fully exhaust one provider's quota before moving to the next.", - "avoid": "Avoid when you need request-level load balancing across providers.", - "example": "Example: Use all $200 Deepgram credits before falling back to Groq." + "when": "पुढील प्रदात्याकडे जाण्यापूर्वी एका प्रदात्याचा कोटा पूर्णपणे वापरायचा असल्यास वापरा.", + "avoid": "प्रदात्यांमध्ये विनंती-स्तरीय लोड बॅलन्सिंग आवश्यक असल्यास वापर टाळा.", + "example": "उदाहरण: Groq कडे फॉलबॅक करण्यापूर्वी सर्व $200 Deepgram क्रेडिट्स वापरा." }, "auto": { - "when": "Use when you need multi-factor scoring routing based on cost, latency, and quality.", - "avoid": "Avoid when you need strict priority ordering or historical persistence.", - "example": "Example: Balance requests across models with different strengths." + "when": "खर्च, विलंब आणि गुणवत्ता यांच्या आधारे बहु-घटक स्कोअरिंग राउटिंग आवश्यक असल्यास वापरा.", + "avoid": "कठोर प्राधान्यक्रम किंवा ऐतिहासिक सातत्य आवश्यक असल्यास वापर टाळा.", + "example": "उदाहरण: वेगवेगळी बलस्थाने असलेल्या मॉडेल्समध्ये विनंत्यांचा समतोल राखा." }, "lkgp": { - "when": "Use when you want to route based on historical success rates and performance.", - "avoid": "Avoid when historical data is limited or unreliable.", - "example": "Example: Route to models with a good track record on specific tasks." + "when": "ऐतिहासिक यशदर आणि कार्यप्रदर्शनाच्या आधारे राउट करायचे असल्यास वापरा.", + "avoid": "ऐतिहासिक डेटा मर्यादित किंवा अविश्वसनीय असल्यास वापर टाळा.", + "example": "उदाहरण: विशिष्ट कामांमध्ये चांगली कामगिरी नोंदवलेल्या मॉडेल्सकडे राउट करा." }, "context-optimized": { - "when": "Use when you need to optimize context window usage across models.", - "avoid": "Avoid when models have similar context lengths or tasks are simple.", - "example": "Example: Distribute long conversations across models with larger context windows." + "when": "मॉडेल्समध्ये कॉन्टेक्स्ट विंडोचा वापर ऑप्टिमाइझ करायचा असल्यास वापरा.", + "avoid": "मॉडेल्सच्या कॉन्टेक्स्टची लांबी सारखी असल्यास किंवा कामे सोपी असल्यास वापर टाळा.", + "example": "उदाहरण: मोठ्या कॉन्टेक्स्ट विंडोज असलेल्या मॉडेल्समध्ये दीर्घ संभाषणे वितरित करा." } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "विनंती अयशस्वी घोषित करण्यापूर्वी किती पुनर्प्रयत्न केले जातात.", + "retryDelay": "पुनर्प्रयत्नांमधील प्रारंभिक प्रतीक्षा. अधिक मूल्यांमुळे अचानक येणाऱ्या भाराचा दबाव कमी होतो.", + "timeout": "रद्द करण्यापूर्वी विनंतीचा कमाल कालावधी.", + "healthcheck": "राउटिंग निर्णयांमधून अस्वस्थ मॉडेल्स/प्रदाते वगळते.", + "concurrencyPerModel": "राउंड-रॉबिनमध्ये प्रत्येक मॉडेलसाठी अनुमत कमाल समकालीन विनंत्या.", + "queueTimeout": "टाइमआउट होण्यापूर्वी विनंती रांगेत किती वेळ प्रतीक्षा करू शकते.", "failoverBeforeRetry": "सक्षम केल्यावर, कोणतीही अपस्ट्रीम त्रुटी पुढील कॉम्बो लक्ष्यावर त्वरित फेलओव्हर ट्रिगर करते, सर्व पुन्हा प्रयत्न आणि फॉलबॅक URL वगळते.", "maxSetRetries": "प्रत्येक लक्ष्य अयशस्वी झाल्यावर पूर्ण लक्ष्य सेट करण्याचा पुन्हा प्रयत्न करण्याची संख्या. 0 = सेट-स्तरीय पुन्हा प्रयत्न नाही.", "setRetryDelayMs": "सेट-लेव्हल पुन्हा प्रयत्न करण्याच्या प्रयत्नांमध्ये विलंब, क्षणिक समस्यांचे निराकरण करण्यासाठी वेळ देते.", "disableSessionStickiness": "पहिल्या-संदेश हॅशद्वारे संपूर्ण संभाषण एकाच कनेक्शनवर पिन करण्याऐवजी प्रत्येक विनंतीवर वेगळ्या कनेक्शनवर रोटेट करा. ग्लोबल डीफॉल्ट ओव्हरराइड करते. मल्टी-टर्न चॅट्ससाठी प्रॉम्प्ट-कॅशे हिट्स जतन करण्यासाठी Inherit वर ठेवा." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "द्रुत टेम्पलेट्स", + "templatesDescription": "प्रारंभिक प्रोफाइल लागू करा, त्यानंतर मॉडेल्स आणि कॉन्फिग समायोजित करा.", + "templateApply": "टेम्पलेट लागू करा", + "templateHighAvailability": "उच्च उपलब्धता", + "templateHighAvailabilityDesc": "आरोग्य तपासण्या आणि सुरक्षित पुनर्प्रयत्नांसह प्राधान्य राउटिंग.", + "templateCostSaver": "खर्च बचत", + "templateCostSaverDesc": "बजेटला प्राधान्य असलेल्या वर्कलोड्ससाठी खर्च-अनुकूलित राउटिंग.", + "templateBalanced": "संतुलित भार", + "templateBalancedDesc": "कालांतराने मागणी वितरित करण्यासाठी सर्वात कमी वापरावर आधारित राउटिंग.", + "usageGuideHide": "लपवा", + "usageGuideDontShowAgain": "पुन्हा दाखवू नका", + "usageGuideShow": "मार्गदर्शक दाखवा", + "quickTestTitle": "कॉम्बो पडताळणीसाठी तयार आहे", + "quickTestDescription": "फॉलबॅक आणि विलंबाचे वर्तन निश्चित करण्यासाठी आत्ताच चाचणी चालवा.", + "testNow": "आत्ताच चाचणी करा", + "pricingCoverage": "किंमत व्याप्ती", + "pricingCoverageHint": "सर्व कॉम्बो मॉडेल्ससाठी किंमत उपलब्ध असताना खर्च-अनुकूलित पर्याय सर्वोत्तम कार्य करतो.", + "pricingAvailable": "किंमत उपलब्ध", + "pricingMissing": "किंमत उपलब्ध नाही", + "pricingAvailableShort": "किंमत असलेले", + "pricingMissingShort": "किंमत-नसलेले", "fallbackOnlyOnQuotaExhaustion": "फक्त कोटा संपल्यावर पुढे जा", "fallbackOnlyOnQuotaExhaustionShort": "कोटा-फक्त बॅकअप", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", - "readinessCheckPricing": "Pricing data is available", - "readinessCheckPricingOptional": "Pricing rule not required", - "saveBlockedTitle": "Save is blocked until the following items are fixed:", - "saveBlockName": "Define a combo name.", - "saveBlockModels": "Add at least one model.", - "saveBlockWeighted": "Set weights to 100% (current: {total}%).", - "saveBlockPricing": "Add pricing for at least one model or choose a different strategy.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "warningRoundRobinSingleModel": "किमान 2 मॉडेल्स असताना राउंड-रॉबिन सर्वाधिक उपयुक्त ठरते.", + "warningCostOptimizedPartialPricing": "{total} पैकी फक्त {priced} मॉडेल्ससाठी किंमत उपलब्ध आहे. रूटिंग अंशतः खर्च-जागरूक असू शकते.", + "warningCostOptimizedNoPricing": "या कॉम्बोसाठी किंमतीचा कोणताही डेटा आढळला नाही. खर्च-अनुकूलित पर्याय अनपेक्षितपणे रूट करू शकतो.", + "filterAll": "सर्व", + "filterIntelligent": "बुद्धिमान", + "filterDeterministic": "निर्धारित", + "filterEmptyTitle": "या धोरण फिल्टरशी कोणतेही कॉम्बो जुळत नाहीत.", + "filterEmptyIntelligentDescription": "बुद्धिमान रूटिंग डॅशबोर्डमध्ये माहिती भरण्यासाठी auto किंवा LKGP कॉम्बो तयार करा.", + "filterEmptyDeterministicDescription": "सध्या फक्त auto आणि LKGP कॉम्बो उपलब्ध आहेत. पुन्हा सर्व वर स्विच करा किंवा निर्धारित कॉम्बो तयार करा.", + "readinessTitle": "जतन करण्यास तयार आहात?", + "readinessDescription": "हा कॉम्बो तयार किंवा अपडेट करण्यापूर्वी तपासणीसूचीचे पुनरावलोकन करा.", + "readinessCheckName": "कॉम्बोचे नाव वैध आहे", + "readinessCheckModels": "किमान एक मॉडेल निवडले आहे", + "readinessCheckWeights": "भारित एकूण 100% आहे", + "readinessCheckWeightsOptional": "वजनाचा नियम आवश्यक नाही", + "readinessCheckPricing": "किंमतीचा डेटा उपलब्ध आहे", + "readinessCheckPricingOptional": "किंमतीचा नियम आवश्यक नाही", + "saveBlockedTitle": "खालील बाबी दुरुस्त होईपर्यंत जतन करता येणार नाही:", + "saveBlockName": "कॉम्बोचे नाव निश्चित करा.", + "saveBlockModels": "किमान एक मॉडेल जोडा.", + "saveBlockWeighted": "वजने 100% वर सेट करा (सध्याचे: {total}%).", + "saveBlockPricing": "किमान एका मॉडेलसाठी किंमत जोडा किंवा वेगळे धोरण निवडा.", + "recommendationsLabel": "शिफारस केलेली संरचना", + "applyRecommendations": "शिफारसी लागू करा", + "recommendationsUpdated": "{strategy} साठी शिफारसी अपडेट केल्या.", + "recommendationsApplied": "या कॉम्बोवर शिफारसी लागू केल्या.", + "intelligentPanelTitle": "बुद्धिमान रूटिंग डॅशबोर्ड", + "intelligentPanelDesc": "या auto-routing कॉम्बोसाठी रिअल-टाइम स्कोअरिंग आणि स्थिती.", "configOnlyStatus": "कॉन्फिगरेशन व्ह्यू", "configOnlyHint": "हे पॅनेल केवळ राउटिंग इनपुट दाखवते. लाइव्ह ब्रेकर स्थिती Health पेजवर उपलब्ध आहे.", "routingInputs": "राउटिंग इनपुट्स", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "अज्ञात प्रोव्हायडर प्रीफिक्स.", "builderDynamicAccountShort": "डायनॅमिक खाते", "builderNeedValidName": "पुढे जाण्यापूर्वी एक वैध कॉम्बो नाव परिभाषित करा.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "स्थितीचा आढावा", + "normalOperation": "सामान्य कार्यप्रणाली", + "allProvidersHealthy": "प्रदाते निरोगी रूटिंग स्थिती नोंदवत आहेत.", + "incidentMode": "घटना मोड", + "highCircuitBreakerRate": "सर्किट ब्रेकर ट्रिप होण्याचा उच्च दर आढळला.", + "activeModePack": "सक्रिय मोड पॅक", + "modePackUpdated": "मोड पॅक {pack} वर अपडेट केला.", + "modePackHint": "कॉम्बो पुन्हा तयार न करता रूटिंग इंजिनला प्राधान्य देण्यासाठी प्रीसेट बदला.", + "providerScores": "प्रदाता गुण", + "allProvidersEvaluated": "कोणताही उमेदवार पूल कॉन्फिगर केलेला नाही. रनटाइममध्ये सर्व सक्रिय प्रदात्यांचे मूल्यमापन केले जाते.", + "excludedProviders": "वगळलेले प्रदाते", + "excludedProvidersHint": "OPEN सर्किट ब्रेकर असलेले प्रदाते रूटिंगमधून तात्पुरते वगळले जातात.", + "noExcludedProviders": "सध्या कोणतेही प्रदाते वगळलेले नाहीत.", + "cooldownMinutes": "कूलडाउन: {minutes}मि.", + "builderIntelligentTitle": "बुद्धिमान रूटिंग कॉन्फिगरेशन", + "builderIntelligentDesc": "या ऑटो-रूटिंग कॉम्बोसाठी बहु-घटक गुणांकन इंजिन कॉन्फिगर करा.", + "candidatePoolLabel": "उमेदवार पूल", + "candidatePoolHint": "या इंजिनने कोणत्या प्रदात्यांचे मूल्यमापन करावे ते निवडा. सर्व सक्रिय प्रदाते वापरण्यासाठी हे रिकामे ठेवा.", + "candidatePoolEmpty": "अद्याप कोणतेही सक्रिय प्रदाते उपलब्ध नाहीत.", + "candidatePoolAllProviders": "सर्व प्रदाते", + "modePackLabel": "मोड पॅक", + "routerStrategyLabel": "राउटर धोरण", + "strategyRules": "नियम (६-घटक गुणांकन)", + "explorationRateLabel": "अन्वेषण दर", + "explorationRateHint": "{percent}% विनंत्या इष्टतम नसलेल्या प्रदात्यांचा वापर करून पाहू शकतात.", + "budgetCapLabel": "बजेट मर्यादा (USD / विनंती)", + "budgetCapPlaceholder": "मर्यादा नाही", + "advancedWeightsTitle": "प्रगत: गुणांकन भार", "nestedComboFlatten": "नेस्टेड कॉम्बो फ्लॅटन करा", "nestedComboExecute": "नेस्टेड कॉम्बो टार्गेट्स म्हणून कार्यान्वित करा", "effectiveRoutingShare": "प्रभावी राउटिंग शेअर (weight ÷ total)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "कोटा", + "weightHealth": "आरोग्य", + "weightCostInv": "खर्च", + "weightLatencyInv": "विलंबता", + "weightTaskFit": "कार्य अनुरूपता", + "weightStability": "स्थिरता", + "weightTierPriority": "स्तर", + "weightCacheAffinity": "कॅश हिट अनुरूपता", "weightSessionAvailability": "सत्र उपलब्धता", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "बुद्धिमान रूटिंग कॉन्फिगरेशन", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "अपयश-सुरक्षित आधाररेषा", + "description": "एक प्राथमिक मॉडेल वापरा आणि फॉलबॅक साखळी लहान व विश्वासार्ह ठेवा.", + "tip1": "तुमचे सर्वाधिक विश्वासार्ह मॉडेल प्रथम ठेवा.", + "tip2": "समान गुणवत्तेची १-२ बॅकअप मॉडेल्स ठेवा.", + "tip3": "प्रदात्यांच्या तात्पुरत्या अपयशांचा परिणाम कमी करण्यासाठी सुरक्षित पुनर्प्रयत्न वापरा." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "नियंत्रित ट्रॅफिक विभाजन", + "description": "कॅनरी रोलआउट्स आणि मॉडेल्समधील टप्प्याटप्प्याने स्थलांतरासाठी उत्तम.", + "tip1": "90/10 सारख्या सावध विभाजनाने सुरुवात करा.", + "tip2": "एकूण प्रमाण 100% ठेवा आणि बदलांनंतर स्वयंचलितपणे संतुलित करा.", + "tip3": "कॅनरीचे वजन वाढवण्यापूर्वी यशाचे प्रमाण आणि विलंबता यांचे निरीक्षण करा." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "अंदाज करता येण्याजोगे लोड वितरण", + "description": "मॉडेल्स समतुल्य असताना आणि सुरळीत वितरण आवश्यक असताना सर्वोत्तम.", + "tip1": "किमान 2 मॉडेल्स वापरा.", + "tip2": "अचानक होणारा ओव्हरलोड टाळण्यासाठी समवर्ती विनंत्यांच्या मर्यादा सेट करा.", + "tip3": "अतिभाराच्या स्थितीत त्वरित अपयशी होण्यासाठी रांग कालबाह्यता वापरा." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "कमी सेटअपसह जलद वितरण", + "description": "कठोर हमींशिवाय साधे वितरण आवश्यक असताना वापरा.", + "tip1": "समान विलंबता प्रोफाइल असलेली मॉडेल्स वापरा.", + "tip2": "यादृच्छिक त्रुटी हाताळण्यासाठी पुनःप्रयत्न सक्षम ठेवा.", + "tip3": "कठोर SLAs ऐवजी प्रयोगांसाठी याला प्राधान्य द्या." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "अनुकूली संतुलन", + "description": "कालांतराने हॉटस्पॉट्स कमी करण्यासाठी कमी वापरल्या जाणाऱ्या मॉडेल्सकडे रूट करते.", + "tip1": "सातत्यपूर्ण ट्रॅफिकमध्ये अधिक चांगले कार्य करते.", + "tip2": "अधिक सुरक्षित संतुलनासाठी हेल्थ चेक्ससह वापरा.", + "tip3": "वितरणातील लाभ पडताळण्यासाठी प्रत्येक मॉडेलच्या वापराचा मागोवा घ्या." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "बजेट-प्रथम रूटिंग", + "description": "किंमत मेटाडेटा उपलब्ध असताना कमी खर्चाच्या मॉडेल्सकडे रूट करते.", + "tip1": "निवडलेल्या सर्व मॉडेल्ससाठी किंमत माहिती उपलब्ध असल्याची खात्री करा.", + "tip2": "कठीण प्रॉम्प्ट्ससाठी उच्च-गुणवत्तेचा फॉलबॅक ठेवा.", + "tip3": "खर्च हा मुख्य KPI असलेल्या बॅच/पार्श्वभूमी जॉब्ससाठी वापरा." }, "reset-aware": { "title": "रीसेट-जागरूक खाते रोटेशन", @@ -3597,155 +3597,155 @@ "tip3": "टाय बँड लहान ठेवा जेणेकरून समतुल्य खाती अजूनही योग्यरित्या फिरतील." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "शफल डेक वितरण", + "description": "पुन्हा शफल करण्यापूर्वी प्रत्येक चक्रात प्रत्येक मॉडेलचा नेमका एकदाच वापर केला जातो.", + "tip1": "अर्थपूर्ण वितरणासाठी किमान 2 मॉडेल्स वापरा.", + "tip2": "समतुल्य कार्यप्रदर्शन असलेल्या मॉडेल्ससह सर्वोत्तम कार्य करते.", + "tip3": "एकाधिक API खात्यांमध्ये लोड संतुलित करण्यासाठी आदर्श." }, "fill-first": { - "description": "Exhaust provider quotas sequentially before falling back.", - "tip1": "Use for quota-based routing with clear fallback chains.", - "tip2": "Set quotas accurately to avoid premature fallback.", - "tip3": "Works best with providers offering free tiers or credit buckets.", - "title": "Quota Exhaustion" + "description": "फॉलबॅक करण्यापूर्वी प्रदात्यांचे कोटे क्रमाक्रमाने पूर्णपणे वापरा.", + "tip1": "स्पष्ट फॉलबॅक साखळ्यांसह कोटा-आधारित रूटिंगसाठी वापरा.", + "tip2": "अकाली फॉलबॅक टाळण्यासाठी कोटे अचूकपणे सेट करा.", + "tip3": "मोफत स्तर किंवा क्रेडिट बकेट्स देणाऱ्या प्रदात्यांसह सर्वोत्तम कार्य करते.", + "title": "कोटा समाप्ती" }, "auto": { - "description": "Route based on real-time scoring for cost, latency, quality, and health.", - "tip1": "Let the engine balance multiple factors automatically.", - "tip2": "Monitor which factors drive routing decisions in logs.", - "tip3": "Use for complex workloads where no single factor dominates.", - "title": "Multi-Factor Optimization" + "description": "खर्च, विलंबता, गुणवत्ता आणि आरोग्य यांच्या रिअल-टाइम स्कोअरिंगवर आधारित रूट करा.", + "tip1": "इंजिनला अनेक घटक स्वयंचलितपणे संतुलित करू द्या.", + "tip2": "लॉग्समध्ये कोणते घटक रूटिंग निर्णयांवर प्रभाव टाकतात याचे निरीक्षण करा.", + "tip3": "ज्या जटिल वर्कलोड्समध्ये कोणताही एक घटक प्रबळ नसतो त्यांच्यासाठी वापरा.", + "title": "बहु-घटक अनुकूलन" }, "lkgp": { - "description": "Route based on historical performance and success patterns.", - "tip1": "Requires sufficient request history for accurate predictions.", - "tip2": "Good for workloads with consistent model performance patterns.", - "tip3": "Monitor prediction accuracy and adjust weights as needed.", - "title": "History-Based Routing" + "description": "ऐतिहासिक कार्यक्षमता आणि यशस्वी नमुन्यांच्या आधारे रूट करा.", + "tip1": "अचूक अंदाजांसाठी पुरेसा विनंती इतिहास आवश्यक आहे.", + "tip2": "सातत्यपूर्ण मॉडेल कार्यक्षमता नमुने असलेल्या वर्कलोडसाठी योग्य.", + "tip3": "अंदाजाच्या अचूकतेचे निरीक्षण करा आणि आवश्यकतेनुसार वजने समायोजित करा.", + "title": "इतिहास-आधारित रूटिंग" }, "context-optimized": { - "description": "Optimize routing based on context window usage and token efficiency.", - "tip1": "Route long conversations to models with larger context windows.", - "tip2": "Monitor context utilization to avoid token waste.", - "tip3": "Best for conversational AI requiring extensive context retention.", - "title": "Context Optimization" + "description": "कॉन्टेक्स्ट विंडोचा वापर आणि टोकन कार्यक्षमतेच्या आधारे रूटिंग ऑप्टिमाइझ करा.", + "tip1": "दीर्घ संभाषणे मोठ्या कॉन्टेक्स्ट विंडो असलेल्या मॉडेलकडे रूट करा.", + "tip2": "टोकनचा अपव्यय टाळण्यासाठी कॉन्टेक्स्ट वापराचे निरीक्षण करा.", + "tip3": "विस्तृत कॉन्टेक्स्ट टिकवून ठेवण्याची आवश्यकता असलेल्या संभाषणात्मक AI साठी सर्वोत्तम.", + "title": "कॉन्टेक्स्ट ऑप्टिमायझेशन" }, "context-relay": { - "description": "Best when account rotation is expected and the next account must inherit a simplified task summary.", - "tip1": "Use with providers rotating accounts for the same model family.", - "tip2": "Set handoff threshold below hard quota cutoffs for summary generation time.", - "tip3": "Only set a dedicated summary model if the primary is too expensive or unstable.", - "title": "Session Continuity Priority" + "description": "खाते रोटेशन अपेक्षित असताना आणि पुढील खात्याला सोप्या स्वरूपातील कार्य सारांश मिळणे आवश्यक असताना सर्वोत्तम.", + "tip1": "समान मॉडेल फॅमिलीसाठी खाती रोटेट करणाऱ्या प्रदात्यांसह वापरा.", + "tip2": "सारांश निर्मितीसाठी वेळ मिळावा म्हणून हँडऑफ थ्रेशोल्ड कठोर कोटा मर्यादेपेक्षा कमी ठेवा.", + "tip3": "प्राथमिक मॉडेल खूप महाग किंवा अस्थिर असेल तरच स्वतंत्र सारांश मॉडेल सेट करा.", + "title": "सत्र सातत्य प्राधान्य" }, "p2c": { - "description": "Route to the provider with the lowest current load based on real-time metrics.", - "tip1": "Monitor provider health metrics for accurate load assessment.", - "tip2": "Works best with homogeneous provider pools.", - "tip3": "Adjust sensitivity to avoid oscillation during traffic spikes.", - "title": "Power of Two Choices" + "description": "रिअल-टाइम मेट्रिक्सच्या आधारे सध्या सर्वात कमी लोड असलेल्या प्रदात्याकडे रूट करा.", + "tip1": "लोडचे अचूक मूल्यांकन करण्यासाठी प्रदात्याच्या आरोग्यविषयक मेट्रिक्सचे निरीक्षण करा.", + "tip2": "एकसमान प्रदाता पूलसह सर्वोत्तम कार्य करते.", + "tip3": "ट्रॅफिक वाढीदरम्यान होणारे दोलन टाळण्यासाठी संवेदनशीलता समायोजित करा.", + "title": "दोन पर्यायांची शक्ती" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", - "auto": "Intelligent Auto", - "autoDesc": "Self-healing smart routing pool with multi-factor scoring", - "lkgp": "LKGP Mode", - "lkgpDesc": "Prioritizes the last provider that successfully completed a request", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "templateFreeStack": "मोफत स्टॅक ($0)", + "templateFreeStackDesc": "सर्व मोफत प्रदात्यांमध्ये राउंड-रॉबिन: Kiro (Claude), Qoder (5 मॉडेल), Qwen (4 मॉडेल). शून्य खर्च, कोडिंग कधीही थांबत नाही.", + "auto": "बुद्धिमान स्वयंचलित", + "autoDesc": "बहु-घटक स्कोअरिंगसह स्वतःहून पूर्ववत होणारा स्मार्ट रूटिंग पूल", + "lkgp": "LKGP मोड", + "lkgpDesc": "विनंती यशस्वीरीत्या पूर्ण करणाऱ्या शेवटच्या प्रदात्याला प्राधान्य देते", + "wizardGuideTitle": "कॉम्बोसह सुरुवात करणे", + "wizardGuideDesc": "AI ट्रॅफिक बुद्धिमानपणे रूट करण्यासाठी मॉडेल कॉम्बो तयार करा", + "wizardGuideHint": "किंवा वरील + कॉम्बो तयार करा वर क्लिक करा", + "createFirstCombo": "तुमचा पहिला कॉम्बो तयार करा", + "wizardStep1Title": "तुमच्या कॉम्बोला नाव द्या", + "wizardStep1Desc": "रूटिंग नियमांमध्ये ओळखता यावे यासाठी तुमच्या कॉम्बोला एक अद्वितीय नाव द्या", + "wizardStep2Title": "मॉडेल जोडा", + "wizardStep2Desc": "AI मॉडेल निवडा आणि त्यांचा फॉलबॅक प्राधान्यक्रम लावा", + "wizardStep3Title": "धोरण निवडा", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "पुनरावलोकन करा आणि जतन करा", + "wizardStep4Desc": "तुमच्या कॉन्फिगरेशनचे पुनरावलोकन करा आणि कॉम्बो सक्रिय करा", + "usageGuideInvokeTitle": "हा कॉम्बो कसा कॉल करावा", + "usageGuideInvokeDesc": "मॉडेल म्हणून कॉम्बोचे अचूक नाव पाठवा, उदा. model: \"my-combo\" (किंवा combo/my-combo).", + "usageGuideInvokeAutoNote": "auto आणि auto/* हा स्वतंत्र शून्य-कॉन्फिगरेशन राउटर आहे, जो तुमचे कॉम्बो वापरत नाही (एखाद्या कॉम्बोचे नाव अक्षरशः auto असल्याशिवाय).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto हे प्रत्यक्ष सशुल्क OpenRouter उत्पादन (Auto Best Available) आहे, OmniRoute उपनाव नाही — Settings → Routing → Hide paid models द्वारे ते वगळा.", + "emailVisibilityStateOn": "चालू", + "emailVisibilityStateOff": "बंद", + "reorderHandle": "क्रम बदलण्यासाठी ड्रॅग करा", + "failedReorder": "मॉडेल्सचा क्रम बदलण्यात अयशस्वी", + "builderFlowTitle": "कॉम्बो बिल्डर प्रवाह", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "मूलभूत बाबी", + "description": "नाव आणि प्रारंभिक टेम्पलेट" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "टप्पे", + "description": "प्रदाता, मॉडेल आणि खाते निवड" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "धोरण", + "description": "रूटिंग वर्तन आणि प्रगत सेटिंग्ज" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "स्मार्ट रूटिंग", + "description": "स्वयं-रूटिंग उमेदवार संच, पूर्वनिश्चित पर्याय आणि गुणांकन" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "पुनरावलोकन", + "description": "जतन करण्यापूर्वी अंतिम प्रमाणीकरण" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", - "builderDuplicateExact": "This exact provider/model/account step is already in the combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", - "builderStagesDescription": "Complete each stage in order to define combos, build steps, select routing strategy, and review results.", - "builderStepsDescription": "Build each combo step in order: provider, model, then account. This allows reusing the same provider and model across different accounts.", - "selectProvider": "Select Provider", - "selectProviderPlaceholder": "Select a provider", - "selectModel": "Select Model", - "selectModelPlaceholder": "Select a provider first", - "selectAccount": "Select Account", - "selectComboToReference": "Select combo to reference", - "comboReference": "Combo Reference", - "addComboReference": "Add Combo Reference", - "addStepBeforeContinue": "Please add at least one step before proceeding to the next stage.", - "previewNextStep": "Preview next step", - "autoSelectAccount": "Automatically select account at runtime", - "modePackBalanced": "Balanced", - "modePackBudget": "Budget", - "modePackPerformance": "Performance", - "modePackCustom": "Custom", - "browseLegacyCatalog": "Browse legacy combo catalog", - "agentFeaturesTitle": "Agent Features", - "agentFeaturesDescription": "Enable advanced features for agents using this combo", + "builderStageVisited": "टप्पा पूर्ण झाला", + "builderStageCurrent": "सध्याचा टप्पा", + "builderStagePending": "प्रलंबित", + "builderStageLocked": "लॉक केलेले — आधी मागील टप्पा पूर्ण करा", + "builderTitle": "कॉम्बो तयार करा", + "builderBrowseCatalog": "कॅटलॉग ब्राउझ करा", + "builderProvider": "प्रदाता", + "builderLoadingProviders": "प्रदाते लोड होत आहेत...", + "builderSelectProvider": "प्रदाता निवडा", + "builderModel": "मॉडेल", + "builderSelectModel": "मॉडेल निवडा", + "builderProviderFirst": "आधी प्रदाता निवडा", + "builderAccount": "खाते", + "builderPreview": "पूर्वावलोकन", + "builderAddStep": "टप्पा जोडा", + "builderDuplicateExact": "हा नेमका प्रदाता/मॉडेल/खाते टप्पा कॉम्बोमध्ये आधीपासूनच आहे.", + "builderComboRef": "कॉम्बो संदर्भ", + "builderAddComboRef": "कॉम्बो संदर्भ जोडा", + "builderComboRefStep": "कॉम्बो संदर्भ जोडा", + "builderPinnedAccount": "पिन केलेले खाते", + "builderLegacyEntry": "वारसा नोंद", + "reviewName": "नाव", + "reviewStrategy": "धोरण", + "reviewSteps": "टप्पे", + "reviewAccounts": "खाती", + "reviewProviders": "प्रदाते", + "reviewComboRefs": "कॉम्बो संदर्भ", + "reviewAdvanced": "प्रगत सेटिंग्ज", + "reviewAgentFlags": "एजंट फ्लॅग्ज", + "reviewSequence": "मॉडेल क्रम", + "reviewNoSteps": "कोणत्याही पायऱ्या कॉन्फिगर केलेल्या नाहीत", + "builderStagesDescription": "कॉम्बो निश्चित करण्यासाठी, पायऱ्या तयार करण्यासाठी, राउटिंग धोरण निवडण्यासाठी आणि परिणामांचे पुनरावलोकन करण्यासाठी प्रत्येक टप्पा क्रमाने पूर्ण करा.", + "builderStepsDescription": "प्रत्येक कॉम्बो पायरी या क्रमाने तयार करा: प्रदाता, मॉडेल आणि नंतर खाते. यामुळे वेगवेगळ्या खात्यांमध्ये समान प्रदाता आणि मॉडेल पुन्हा वापरता येतात.", + "selectProvider": "प्रदाता निवडा", + "selectProviderPlaceholder": "एक प्रदाता निवडा", + "selectModel": "मॉडेल निवडा", + "selectModelPlaceholder": "प्रथम प्रदाता निवडा", + "selectAccount": "खाते निवडा", + "selectComboToReference": "संदर्भासाठी कॉम्बो निवडा", + "comboReference": "कॉम्बो संदर्भ", + "addComboReference": "कॉम्बो संदर्भ जोडा", + "addStepBeforeContinue": "पुढील टप्प्यावर जाण्यापूर्वी कृपया किमान एक पायरी जोडा.", + "previewNextStep": "पुढील पायरीचे पूर्वावलोकन करा", + "autoSelectAccount": "रनटाइमवर खाते स्वयंचलितपणे निवडा", + "modePackBalanced": "संतुलित", + "modePackBudget": "बजेट", + "modePackPerformance": "कार्यक्षमता", + "modePackCustom": "सानुकूल", + "browseLegacyCatalog": "जुना कॉम्बो कॅटलॉग ब्राउझ करा", + "agentFeaturesTitle": "एजंट वैशिष्ट्ये", + "agentFeaturesDescription": "हा कॉम्बो वापरणाऱ्या एजंटसाठी प्रगत वैशिष्ट्ये सक्षम करा", "responseValidationTitle": "प्रतिसाद प्रमाणीकरण", "responseValidationHelp": "जेव्हा 200 OK बॉडी या तपासण्यांमध्ये अयशस्वी होते (असिस्टंट सामग्री), तेव्हा पुढील टार्गेटवर फेल ओव्हर करा.", "responseValidationForbidden": "प्रतिबंधित सबस्ट्रिंग्स (प्रति ओळ एक)", @@ -3753,13 +3753,13 @@ "responseValidationMinLength": "किमान सामग्री लांबी (अक्षरे)", "responseValidationJsonPaths": "JSON-path तपासण्या", "responseValidationAddCheck": "+ तपासणी जोडा", - "agentFeaturesSystemMessageOverride": "Override system message", - "agentFeaturesSystemMessagePlaceholder": "You are an expert assistant...", - "agentFeaturesSystemMessageHint": "System message override for agents", + "agentFeaturesSystemMessageOverride": "सिस्टम संदेश ओव्हरराइड करा", + "agentFeaturesSystemMessagePlaceholder": "तुम्ही एक तज्ज्ञ सहाय्यक आहात...", + "agentFeaturesSystemMessageHint": "एजंटसाठी सिस्टम संदेश ओव्हरराइड", "agentFeaturesToolFilterRegex": "/regex-pattern/", - "agentFeaturesToolFilterHint": "Tool filter regex for agents", - "agentFeaturesContextCacheHint": "Enable in-context cache for agent tools", - "agentFeaturesContextCacheProtection": "Protect cache from agent tool mutations", + "agentFeaturesToolFilterHint": "एजंटसाठी टूल फिल्टर रेगेक्स", + "agentFeaturesContextCacheHint": "एजंट टूल्ससाठी इन-कॉन्टेक्स्ट कॅशे सक्षम करा", + "agentFeaturesContextCacheProtection": "एजंट टूलमधील बदलांपासून कॅशेचे संरक्षण करा", "agentFeaturesContextLength": "संदर्भ लांबी", "agentFeaturesContextLengthPlaceholder": "उदा. 128000", "agentFeaturesContextLengthHint": "या कॉम्बोसाठी संदर्भ विंडो /v1/मॉडेल्समध्ये परिभाषित करते.", @@ -3788,40 +3788,40 @@ "duplicateAutoComboTitle": "{name} मधून स्थिर कॉम्बो तयार करा" }, "costs": { - "title": "Costs", - "pageDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "overview": "Overview", - "budget": "Budget", - "totalCost": "Total Cost", - "breakdown": "Cost Breakdown", - "noData": "No cost data", - "byModel": "By Model", - "byProvider": "By Provider", - "range7d": "7 Days", - "range30d": "30 Days", - "range90d": "90 Days", - "range180d": "180 Days", - "range365d": "365 Days", - "rangeAll": "All Time", - "spend30d": "Spend 30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", - "overviewTitle": "Cost Overview", - "spend7d": "Spend 7D", - "avgCostPerRequest": "Avg Cost / Request", - "noCostDataDescription": "Start making requests to see cost data appear here. Costs are tracked automatically for all providers.", - "spendToday": "Spend Today", - "overviewLoadFailed": "Failed to load cost overview", - "overviewDescription": "Real-time spending breakdown across all connected providers and models", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", - "noCostDataTitle": "No cost data yet", - "topModels": "Top Models", - "requestsInWindow": "Requests in Window", + "title": "खर्च", + "pageDescription": "सर्व प्रदात्यांवरील खर्चाचा मागोवा घ्या, कलांचे विश्लेषण करा आणि तुमचे AI बजेट व्यवस्थापित करा", + "overview": "आढावा", + "budget": "बजेट", + "totalCost": "एकूण खर्च", + "breakdown": "खर्चाचे विभाजन", + "noData": "खर्चाचा डेटा नाही", + "byModel": "मॉडेलनुसार", + "byProvider": "प्रदात्यानुसार", + "range7d": "७ दिवस", + "range30d": "३० दिवस", + "range90d": "९० दिवस", + "range180d": "१८० दिवस", + "range365d": "३६५ दिवस", + "rangeAll": "सर्व कालावधी", + "spend30d": "३० दिवसांचा खर्च", + "activeModels": "सक्रिय मॉडेल्स", + "flatRateEstimateNotice": "यामध्ये निश्चित-दर सदस्यतांसाठी टोकन-किमतीचे अंदाज समाविष्ट आहेत, बिल केलेला खर्च नाही.", + "flatRateEstimateForecast": "अंदाजामध्ये निश्चित-दराचे अंदाज समाविष्ट आहेत.", + "selectedWindow": "निवडलेला कालावधी", + "activeProviders": "सक्रिय प्रदाते", + "overviewTitle": "खर्चाचा आढावा", + "spend7d": "७ दिवसांचा खर्च", + "avgCostPerRequest": "प्रति विनंती सरासरी खर्च", + "noCostDataDescription": "खर्चाचा डेटा येथे दिसण्यासाठी विनंत्या करायला सुरुवात करा. सर्व प्रदात्यांसाठी खर्चाचा मागोवा स्वयंचलितपणे घेतला जातो.", + "spendToday": "आजचा खर्च", + "overviewLoadFailed": "खर्चाचा आढावा लोड करण्यात अयशस्वी", + "overviewDescription": "सर्व कनेक्ट केलेल्या प्रदात्यांमधील आणि मॉडेल्समधील खर्चाचे रिअल-टाइम विश्लेषण", + "providerShare": "प्रदात्याचा वाटा", + "topProviders": "आघाडीचे प्रदाते", + "costTrend": "खर्चाचा कल", + "noCostDataTitle": "अद्याप खर्चाचा डेटा नाही", + "topModels": "आघाडीची मॉडेल्स", + "requestsInWindow": "निवडलेल्या कालावधीतील विनंत्या", "tokenUsage": "टोकन वापर", "totalTokens": "एकूण टोकन", "inputTokens": "इनपुट टोकन", @@ -3881,139 +3881,139 @@ "showingTopCostRows": "जुळणाऱ्या {total} ओळींपैकी {shown} दाखवत आहे (शीर्ष 50)." }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", - "available": "Available Endpoints", + "title": "API एंडपॉइंट", + "subtitle": "बहुतेक SDK आणि साधनांसह OpenAI-सुसंगत एंडपॉइंट वापरा.", + "testEndpoint": "एंडपॉइंटची चाचणी करा →", + "advancedProtocols": "प्रगत प्रोटोकॉल्स", + "available": "उपलब्ध एंडपॉइंट्स", "cloudProxy": "Cloud Proxy", - "disableConfirm": "Are you sure you want to disable cloud proxy?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", - "registeredKeys": "Registered Keys", + "disableConfirm": "तुम्हाला खात्री आहे की तुम्ही क्लाउड प्रॉक्सी अक्षम करू इच्छिता?", + "baseUrl": "बेस URL", + "apiKeyLabel": "API की", + "registeredKeys": "नोंदणीकृत की", "chatCompletions": "Chat Completions", - "responses": "Responses", - "listModels": "List Models", - "usingCloudProxy": "Using Cloud Proxy", - "usingLocalServer": "Using Local Server", - "machineId": "Machine ID: {id}...", - "disableCloud": "Disable Cloud", - "enableCloud": "Enable Cloud", - "modelsAcrossEndpoints": "{models} models across {endpoints} endpoints", - "loadingModels": "Loading available models...", - "chatDesc": "Streaming & non-streaming chat with all providers", - "embeddings": "Embeddings", - "embeddingsDesc": "Text embeddings for search & RAG pipelines", - "imageGeneration": "Image Generation", - "imageDesc": "Generate images from text prompts", + "responses": "प्रतिसाद", + "listModels": "मॉडेल्सची यादी", + "usingCloudProxy": "क्लाउड प्रॉक्सी वापरत आहे", + "usingLocalServer": "स्थानिक सर्व्हर वापरत आहे", + "machineId": "मशीन आयडी: {id}...", + "disableCloud": "क्लाउड अक्षम करा", + "enableCloud": "क्लाउड सक्षम करा", + "modelsAcrossEndpoints": "{endpoints} एंडपॉइंट्सवर {models} मॉडेल्स", + "loadingModels": "उपलब्ध मॉडेल्स लोड होत आहेत...", + "chatDesc": "सर्व प्रदात्यांसह स्ट्रीमिंग आणि नॉन-स्ट्रीमिंग चॅट", + "embeddings": "एम्बेडिंग्ज", + "embeddingsDesc": "शोध आणि RAG पाइपलाइनसाठी मजकूर एम्बेडिंग्ज", + "imageGeneration": "प्रतिमा निर्मिती", + "imageDesc": "मजकूर प्रॉम्प्टवरून प्रतिमा तयार करा", "rerank": "Rerank", - "rerankDesc": "Rerank documents by relevance to a query", - "audioTranscription": "Audio Transcription", - "audioTranscriptionDesc": "Transcribe audio files to text (Whisper)", - "textToSpeech": "Text to Speech", - "textToSpeechDesc": "Convert text to natural-sounding speech", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", - "moderations": "Moderations", - "moderationsDesc": "Content moderation and safety classification", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", - "categoryCore": "Core APIs", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", - "categoryUtility": "Utility & Management", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", - "enableCloudTitle": "Enable Cloud Proxy", - "whatYouGet": "What you will get", - "cloudBenefitAccess": "Access your API from anywhere in the world", - "cloudBenefitShare": "Share endpoint with your team easily", - "cloudBenefitPorts": "No need to open ports or configure firewall", - "cloudBenefitEdge": "Fast global edge network", - "cloudSessionNote": "Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted.", - "cloudUnstableNote": "Cloud is currently unstable with Claude Code OAuth in some cases.", - "cloudConnected": "Cloud Proxy connected!", - "connectingToCloud": "Connecting to cloud...", - "verifyingConnection": "Verifying connection...", - "connecting": "Connecting...", - "verifying": "Verifying...", - "connected": "Connected!", - "disableCloudTitle": "Disable Cloud Proxy", - "disableWarning": "All auth sessions will be deleted from cloud.", - "syncingData": "Syncing latest data...", - "disablingCloud": "Disabling cloud...", - "syncing": "Syncing...", - "disabling": "Disabling...", - "cloudConnectedVerified": "Cloud Proxy connected and verified!", - "connectedVerificationPending": "Connected — verification pending", - "connectedVerificationPendingWithError": "Connected — verification pending: {error}", - "cloudDisabledSuccess": "Cloud disabled successfully", - "syncedSuccess": "Synced successfully", - "failedDisable": "Failed to disable cloud", - "failedEnable": "Failed to enable cloud", - "cloudRequestTimeout": "Cloud request timeout", - "cloudRequestFailed": "Cloud request failed", - "cloudWorkerUnreachable": "Could not reach cloud worker. Make sure the cloud service is running (npm run dev in /cloud).", - "connectionFailed": "Connection failed", - "syncFailed": "Failed to sync cloud data", + "rerankDesc": "क्वेरीशी असलेल्या सुसंगततेनुसार दस्तऐवजांचे पुनर्क्रमांकन करा", + "audioTranscription": "ऑडिओ प्रतिलेखन", + "audioTranscriptionDesc": "ऑडिओ फाइल्सचे मजकुरात प्रतिलेखन करा (Whisper)", + "textToSpeech": "मजकुराचे वाणीमध्ये रूपांतर", + "textToSpeechDesc": "मजकुराचे नैसर्गिक वाटणाऱ्या वाणीमध्ये रूपांतर करा", + "musicGeneration": "संगीत निर्मिती", + "musicDesc": "ComfyUI द्वारे संगीत आणि ऑडिओ ट्रॅक्स तयार करा (Stable Audio, MusicGen)", + "moderations": "नियमन", + "moderationsDesc": "आशयाचे नियमन आणि सुरक्षितता वर्गीकरण", + "responsesDesc": "Codex आणि प्रगत एजंटिक कार्यप्रवाहांसाठी OpenAI Responses API", + "listModelsDesc": "सर्व जोडलेल्या प्रदात्यांमधील सर्व उपलब्ध मॉडेल्सची सूची दाखवा", + "settingsApiDesc": "API द्वारे OmniRoute कॉन्फिगरेशन वाचा आणि सुधारित करा", + "settingsApi": "सेटिंग्ज API", + "categoryCore": "मुख्य APIs", + "categoryMedia": "मीडिया आणि मल्टी-मोडल", + "categorySearch": "शोध आणि अन्वेषण", + "categoryUtility": "उपयुक्तता आणि व्यवस्थापन", + "webSearch": "वेब शोध", + "webSearchDesc": "स्वयंचलित फेलओव्हर आणि कॅशिंगसह अनेक प्रदात्यांवरील एकत्रित वेब शोध", + "searchProvider": "शोध प्रदाता", + "searchProviderDesc": "हा प्रदाता POST /v1/search द्वारे वेब शोधासाठी वापरला जातो. मॉडेल कॉन्फिगरेशनची आवश्यकता नाही — API की जोडल्यानंतर शोध प्रदाते वापरण्यास तयार असतात.", + "enableCloudTitle": "क्लाउड प्रॉक्सी सक्षम करा", + "whatYouGet": "तुम्हाला काय मिळेल", + "cloudBenefitAccess": "जगात कुठूनही तुमच्या API मध्ये प्रवेश करा", + "cloudBenefitShare": "तुमच्या टीमसोबत एंडपॉइंट सहजपणे शेअर करा", + "cloudBenefitPorts": "पोर्ट्स उघडण्याची किंवा फायरवॉल कॉन्फिगर करण्याची आवश्यकता नाही", + "cloudBenefitEdge": "वेगवान जागतिक एज नेटवर्क", + "cloudSessionNote": "क्लाउड तुमचे प्रमाणीकरण सत्र 1 दिवसासाठी ठेवेल. वापरले नाही तर ते आपोआप हटवले जाईल.", + "cloudUnstableNote": "काही प्रकरणांमध्ये Claude Code OAuth सह क्लाउड सध्या अस्थिर आहे.", + "cloudConnected": "Cloud Proxy कनेक्ट झाला!", + "connectingToCloud": "क्लाउडशी कनेक्ट करत आहे...", + "verifyingConnection": "कनेक्शनची पडताळणी करत आहे...", + "connecting": "कनेक्ट करत आहे...", + "verifying": "पडताळणी करत आहे...", + "connected": "कनेक्ट झाले!", + "disableCloudTitle": "Cloud Proxy अक्षम करा", + "disableWarning": "सर्व प्रमाणीकरण सत्रे क्लाउडमधून हटवली जातील.", + "syncingData": "नवीनतम डेटा समक्रमित करत आहे...", + "disablingCloud": "क्लाउड अक्षम करत आहे...", + "syncing": "समक्रमित करत आहे...", + "disabling": "अक्षम करत आहे...", + "cloudConnectedVerified": "Cloud Proxy कनेक्ट झाला आणि त्याची पडताळणी झाली!", + "connectedVerificationPending": "कनेक्ट झाले — पडताळणी प्रलंबित", + "connectedVerificationPendingWithError": "कनेक्ट झाले — पडताळणी प्रलंबित: {error}", + "cloudDisabledSuccess": "क्लाउड यशस्वीरित्या अक्षम केला", + "syncedSuccess": "यशस्वीरित्या समक्रमित झाले", + "failedDisable": "क्लाउड अक्षम करण्यात अयशस्वी", + "failedEnable": "क्लाउड सक्षम करण्यात अयशस्वी", + "cloudRequestTimeout": "क्लाउड विनंतीची वेळमर्यादा संपली", + "cloudRequestFailed": "क्लाउड विनंती अयशस्वी झाली", + "cloudWorkerUnreachable": "क्लाउड वर्करशी संपर्क साधता आला नाही. क्लाउड सेवा सुरू असल्याची खात्री करा (npm run dev in /cloud).", + "connectionFailed": "कनेक्शन अयशस्वी झाले", + "syncFailed": "क्लाउड डेटा समक्रमित करण्यात अयशस्वी", "cloudflaredTitle": "Cloudflare Quick Tunnel", - "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredDescription": "या एंडपॉइंटसाठी Cloudflare Quick Tunnel तयार करा.", + "cloudflaredUrlNotice": "तात्पुरता Cloudflare Quick Tunnel तयार करतो. प्रत्येक रीस्टार्टनंतर URL बदलतो.", + "cloudflaredEnable": "टनल सक्षम करा", + "cloudflaredInstallAndEnable": "इन्स्टॉल करा आणि सक्षम करा", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "चालू आहे", + "cloudflaredStarting": "सुरू होत आहे", + "cloudflaredStoppedState": "थांबले आहे", + "cloudflaredNotInstalled": "इन्स्टॉल केलेले नाही", + "cloudflaredUnsupported": "समर्थित नाही", + "cloudflaredError": "त्रुटी", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", - "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after every restart.", - "cloudflaredUnsupportedNote": "This platform is not supported for managed installs. Install cloudflared manually or point CLOUDFLARED_BIN to an existing binary.", + "cloudflaredTemporaryNote": "Quick Tunnel URL तात्पुरते असतात आणि प्रत्येक रीस्टार्टनंतर बदलतात.", + "cloudflaredUnsupportedNote": "व्यवस्थापित इन्स्टॉलेशनसाठी हे प्लॅटफॉर्म समर्थित नाही. cloudflared व्यक्तिचलितपणे इन्स्टॉल करा किंवा CLOUDFLARED_BIN ला विद्यमान बायनरीकडे निर्देशित करा.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", - "providerModelsTitle": "{provider} — Models", - "noModelsForProvider": "No models available for this provider.", + "cloudflaredLastError": "शेवटची त्रुटी: {error}", + "providerModelsTitle": "{provider} — मॉडेल्स", + "noModelsForProvider": "या प्रदात्यासाठी कोणतीही मॉडेल्स उपलब्ध नाहीत.", "chat": "Chat", - "embedding": "Embedding", - "image": "Image", - "custom": "custom", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "embedding": "एम्बेडिंग", + "image": "प्रतिमा", + "custom": "सानुकूल", + "modelsCount": "{count, plural, one {# मॉडेल} other {# मॉडेल्स}}", + "sectionTitle": "एकत्रीकरण पृष्ठभाग", + "sectionDescription": "OpenAI-सुसंगत APIs आणि कार्यात्मक प्रोटोकॉल एंडपॉइंट्स", "tabApis": "एपीआयज्", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "प्रोटोकॉल्स", + "tabsAria": "एंडपॉइंट विभाग", + "protocolsTitle": "प्रोटोकॉल्स", + "protocolsDescription": "MCP आणि A2A हे समर्पित निरीक्षणक्षमता आणि नियंत्रणांसह प्रथम-श्रेणीचे एंडपॉइंट्स आहेत.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "stdio वरील Model Context Protocol", + "a2aCardTitle": "A2A सर्व्हर", + "a2aCardDescription": "Agent2Agent JSON-RPC एंडपॉइंट", + "protocolToolsLabel": "साधने", + "protocolTasksLabel": "कार्ये", + "protocolActiveStreamsLabel": "सक्रिय स्ट्रीम्स", + "protocolLastActivity": "शेवटची गतिविधी", + "quickStart": "त्वरित प्रारंभ", + "openMcpDashboard": "MCP व्यवस्थापन उघडा", + "openA2aDashboard": "A2A व्यवस्थापन उघडा", + "mcpQuickStartTitle": "MCP त्वरित प्रारंभ", + "mcpQuickStartStep1": "`omniroute --mcp` द्वारे MCP सर्व्हर चालवा.", + "mcpQuickStartStep2": "stdio ट्रान्सपोर्टवरून कनेक्ट होण्यासाठी तुमचा MCP क्लायंट कॉन्फिगर करा.", + "mcpQuickStartStep3": "`omniroute_get_health` आणि `omniroute_list_combos` यांसारखी साधने वापरा.", + "a2aQuickStartTitle": "A2A त्वरित प्रारंभ", + "a2aQuickStartStep1": "`/.well-known/agent.json` येथे एजंट कार्ड शोधा.", + "a2aQuickStartStep2": "`message/send` किंवा `message/stream` वापरून `POST /a2a` वर JSON-RPC विनंत्या पाठवा.", + "a2aQuickStartStep3": "`tasks/get` आणि `tasks/cancel` वापरून कार्यांचा मागोवा घ्या आणि त्यांवर नियंत्रण ठेवा.", + "completionsLegacy": "पूर्णता (लेगसी)", + "completionsLegacyDesc": "लेगसी OpenAI मजकूर पूर्णता — प्रॉम्प्ट स्ट्रिंग आणि मेसेजेस अॅरे हे दोन्ही स्वरूप स्वीकारते", "messagesApi": "संदेश", "messagesApiDesc": "क्लॉड-सुसंगत प्रदात्यांसाठी नेटिव्ह अँथ्रोपिक मेसेजेस API फॉरमॅट", "imageEdits": "प्रतिमा संपादने", @@ -4022,41 +4022,41 @@ "batchApiDesc": "विनंत्यांच्या मोठ्या बॅचवर एसिंक्रोनस पद्धतीने प्रक्रिया करा (ओपनएआय-सुसंगत)", "filesApi": "फाइल API", "filesApiDesc": "बॅच प्रक्रियेसाठी फायली अपलोड आणि व्यवस्थापित करा", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "व्हिडिओ निर्मिती", + "videoDesc": "ComfyUI आणि Stable Video Diffusion यांसारखी AI मॉडेल्स वापरून व्हिडिओ तयार करा.", + "tailscaleRequestFailed": "Tailscale स्थिती लोड करण्यात अयशस्वी", + "tailscaleEnableFailed": "Tailscale Funnel सक्षम करण्यात अयशस्वी", + "tailscaleWaitingForLogin": "उघडलेल्या ब्राउझर टॅबमध्ये Tailscale लॉगिन पूर्ण करा. OmniRoute आपोआप पुन्हा प्रयत्न करेल.", + "tailscaleLoginTimedOut": "Tailscale लॉगिनची वाट पाहण्याची वेळ संपली", + "tailscaleWaitingForFunnel": "उघडलेल्या ब्राउझर टॅबमध्ये या डिव्हाइससाठी Tailscale Funnel सक्षम करा. OmniRoute तपासणी सुरू ठेवेल.", + "tailscaleFunnelTimedOut": "Tailscale Funnel सक्षम होण्याची वाट पाहण्याची वेळ संपली", + "tailscaleStarted": "Tailscale Funnel सक्षम केले", + "tailscaleDisableFailed": "Tailscale Funnel अक्षम करण्यात अयशस्वी", + "tailscaleStopped": "Tailscale Funnel अक्षम केले", + "tailscaleInstallFailed": "Tailscale स्थापित करण्यात अयशस्वी", + "tailscaleInstallProgress": "काम सुरू आहे...", + "tailscaleInstalled": "Tailscale यशस्वीरित्या स्थापित झाले", + "tailscaleRunning": "चालू आहे", + "tailscaleNeedsLogin": "लॉगिन आवश्यक", + "tailscaleStoppedState": "थांबले आहे", + "tailscaleNotInstalled": "स्थापित केलेले नाही", + "tailscaleUnsupported": "समर्थित नाही", + "tailscaleError": "त्रुटी", + "tailscaleDisable": "Funnel थांबवा", + "tailscaleInstallAndEnable": "स्थापित करा आणि सक्षम करा", + "tailscaleLoginAndEnable": "लॉगिन करा आणि सक्षम करा", + "tailscaleEnable": "Funnel सक्षम करा", + "tailscaleUrlNotice": "तुमचा Tailscale .ts.net पत्ता वापरते. प्रथम वापराच्या वेळी लॉगिन आणि Funnel मंजुरी आवश्यक असू शकते.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", - "tailscaleSudoLabel": "Sudo Password (required on macOS/Linux)", + "tailscaleNeedsLoginHint": "हे मशीन Tailscale सह प्रमाणित करा, त्यानंतर Funnel सक्षम करा.", + "tailscaleBinaryPath": "बायनरी: {path}", + "tailscaleLastError": "शेवटची त्रुटी: {error}", + "tailscaleInstallTitle": "Tailscale स्थापित करा", + "tailscaleInstallIntro": "या मशीनवर Tailscale स्थापित करते आणि Funnel सक्षम करण्यासाठी OmniRoute तयार करते.", + "tailscaleInstallPasswordHint": "macOS आणि Linux वर, पॅकेज स्थापित करण्यासाठी आणि डेमन सुरू करण्यासाठी sudo आवश्यक असू शकते.", + "tailscaleSudoPlaceholder": "पर्यायी sudo पासवर्ड", + "tailscaleInstalling": "स्थापित करत आहे", + "tailscaleSudoLabel": "Sudo पासवर्ड (macOS/Linux वर आवश्यक)", "ngrokTitle": "ngrok बोगदा", "ngrokRunning": "धावत आहे", "ngrokStarting": "सुरू होत आहे", @@ -4108,7 +4108,7 @@ "all": "सर्व", "more": "+{count} अधिक", "showInternalTooltip": "अंतर्गत मार्ग दाखवा किंवा लपवा (डीफॉल्टनुसार लपवलेले)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Bearer प्रमाणीकरण", "requestBody": "रिक्वेस्ट बॉडी", "close": "बंद करा", "tryIt": "प्रयत्न करा", @@ -4144,9 +4144,9 @@ "tierPublic": "सार्वजनिक", "hideInternal": "अंतर्गत लपवा", "showInternal": "अंतर्गत दाखवा", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "सानुकूल सिस्टम प्रॉम्प्ट", + "customSystemPromptDescription": "प्रत्येक मॉडेल विनंतीमध्ये सानुकूल सिस्टम प्रॉम्प्ट समाविष्ट करा", + "customSystemPromptPlaceholder": "उदा. नेहमी समुद्री चाच्यासारख्या शैलीत उत्तर द्या...", "obsidianEnterToken": "कृपया Obsidian API टोकन प्रविष्ट करा", "obsidianConnectFailed": "कनेक्ट करण्यात अयशस्वी", "obsidianConnectionFailed": "कनेक्शन अयशस्वी झाले", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "टोकन कॉन्फिगर केले आहे. Notion साधने MCP द्वारे उपलब्ध आहेत." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "एंडपॉइंट प्रॉक्सी", + "tabApiEndpoints": "API एंडपॉइंट्स", + "apiEndpointsTitle": "API एंडपॉइंट्स", + "apiEndpointsDescription": "इतर ॲप्लिकेशन्स आणि सेवांद्वारे वापरता येणारे बॅकएंड API एंडपॉइंट्स. या विभागात दस्तऐवजीकरण आणि चाचणी क्षमतांसह सर्व उपलब्ध REST APIs सूचीबद्ध केले जातील.", + "comingSoon": "लवकरच येत आहे", + "plannedFeatures": "नियोजित वैशिष्ट्ये", + "featureRestApi": "परस्परसंवादी दस्तऐवजीकरणासह REST API एंडपॉइंट कॅटलॉग", + "featureWebhooks": "Webhook कॉन्फिगरेशन आणि इव्हेंट सदस्यत्वे", + "featureSwagger": "OpenAPI / Swagger स्पेसिफिकेशनची स्वयंचलित निर्मिती", + "featureAuth": "प्रत्येक एंडपॉइंटसाठी API की आणि OAuth स्कोप व्यवस्थापन" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP डॅशबोर्ड लोड होत आहे...", + "activate": "सक्रिय करा", + "deactivate": "निष्क्रिय करा", + "confirmSwitchCombo": "कॉम्बो \"{combo}\" {action} करण्याची पुष्टी करायची?", + "switchComboFailed": "कॉम्बोची स्थिती बदलण्यात अयशस्वी.", + "switchComboSuccess": "कॉम्बो \"{combo}\" अद्ययावत केला.", + "confirmApplyProfile": "रेझिलिअन्स प्रोफाइल \"{profile}\" लागू करायचे?", + "applyProfileFailed": "रेझिलिअन्स प्रोफाइल लागू करण्यात अयशस्वी.", + "applyProfileSuccess": "प्रोफाइल \"{profile}\" लागू केले.", + "confirmResetBreakers": "सर्व सर्किट ब्रेकर्स रीसेट करायचे?", + "resetBreakersFailed": "सर्किट ब्रेकर्स रीसेट करण्यात अयशस्वी.", + "resetBreakersSuccess": "सर्किट ब्रेकर्स रीसेट केले.", + "processStatus": "प्रक्रियेची स्थिती", "online": "Online", "offline": "Offline", "disableLabel": "{label} अक्षम करा", @@ -4237,119 +4237,119 @@ "mcpStep2": "stdio ट्रान्सपोर्टवर कनेक्ट करण्यासाठी तुमचा MCP क्लायंट कॉन्फिगर करा.", "mcpStep3": "{code1} आणि {code2} सारखी टूल्स इन्व्होक करा.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "सत्राचा अपटाइम", + "lastHeartbeat": "शेवटचा हार्टबीट", + "activity24h": "क्रियाकलाप (24 तास)", + "totalCalls": "एकूण कॉल्स", + "successRate": "यशाचा दर", + "avgLatency": "सरासरी विलंब", + "topTools": "सर्वाधिक वापरलेली साधने", + "noToolCalls24h": "मागील 24 तासांत कोणतेही टूल कॉल्स झाले नाहीत.", + "runtimeDetails": "रनटाइम तपशील", + "transport": "ट्रान्सपोर्ट", + "scopesEnforced": "स्कोप्स लागू केले", + "yes": "होय", + "no": "नाही", + "lastCall": "शेवटचा कॉल", + "heartbeatPath": "हार्टबीट पाथ", + "operationalControls": "कार्यकारी नियंत्रणे", + "switchCombo": "कॉम्बो बदला", + "inactive": "निष्क्रिय", + "active": "सक्रिय", + "activateCombo": "कॉम्बो सक्रिय करा", + "deactivateCombo": "कॉम्बो निष्क्रिय करा", + "applyResilienceProfile": "रेझिलिअन्स प्रोफाइल लागू करा", + "profileAggressive": "आक्रमक", + "profileBalanced": "संतुलित", + "profileConservative": "पुराणमतवादी", + "applyProfile": "प्रोफाइल लागू करा", + "resetCircuitBreakers": "सर्किट ब्रेकर्स रीसेट करा", + "resetCircuitBreakersHelp": "प्रदात्यांसाठीची सध्याची ब्रेकर स्थिती आणि अपयश मोजणी साफ करते.", + "resetAllBreakers": "सर्व ब्रेकर्स रीसेट करा", + "toolsAndScopes": "साधने आणि व्याप्ती", + "tableTool": "साधन", + "tableScopes": "व्याप्ती", + "tablePhase": "टप्पा", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "ऑडिट लॉग", + "auditSummary": "कॉल्स: {total} | पृष्ठ {page} / {totalPages}", + "allTools": "सर्व साधने", + "allResults": "सर्व परिणाम", + "success": "यशस्वी", + "failure": "अयशस्वी", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "ऑडिट नोंदी लोड होत आहेत...", + "noAuditEntriesForFilters": "सध्याच्या फिल्टर्ससाठी कोणत्याही ऑडिट नोंदी आढळल्या नाहीत.", + "tableTimestamp": "टाइमस्टॅम्प", + "tableDuration": "कालावधी", + "tableResult": "परिणाम", + "tableApiKey": "API की", + "failed": "अयशस्वी", + "previous": "मागील", + "next": "पुढील", + "apiKeyId": "API की आयडी", + "offset": "ऑफसेट", + "limit": "मर्यादा", + "tool": "साधन" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A डॅशबोर्ड लोड होत आहे...", + "confirmCancelTask": "कार्य {taskId} रद्द करायचे?", + "cancelTaskFailed": "कार्य रद्द करण्यात अयशस्वी.", + "cancelTaskSuccess": "कार्य {taskId} रद्द केले.", + "smokeSendFailed": "message/send स्मोक चाचणी अयशस्वी.", + "smokeSendSuccessWithTask": "message/send यशस्वी (कार्य {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream स्मोक चाचणी अयशस्वी.", + "smokeStreamSuccessWithTask": "message/stream यशस्वी (कार्य {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream टास्क आयडीशिवाय पूर्ण झाले.", + "health": "स्थिती", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "एकूण कार्ये", + "activeStreams": "सक्रिय स्ट्रीम्स", + "lastTask": "शेवटचे कार्य", + "taskStateOverview": "कार्य स्थितीचा आढावा", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "सबमिट केले", + "working": "कार्यरत", + "completed": "पूर्ण झाले", + "failed": "अयशस्वी झाले", + "cancelled": "रद्द केले" }, - "agentCard": "Agent card", + "agentCard": "एजंट कार्ड", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "आवृत्ती", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "क्षमता", + "agentCardNotAvailable": "एजंट कार्ड उपलब्ध नाही.", + "quickValidation": "त्वरित प्रमाणीकरण", + "quickValidationDescription": "लाइव्ह `/a2a` एंडपॉइंटद्वारे स्मोक कॉल्स कार्यान्वित करते.", + "runMessageSend": "message/send चालवा", + "runMessageStream": "message/stream चालवा", + "taskManagement": "कार्य व्यवस्थापन", + "taskSummary": "{total} कार्ये | पृष्ठ {page} / {totalPages}", + "allStates": "सर्व", + "allSkills": "सर्व कौशल्ये", + "loadingTasks": "कार्ये लोड होत आहेत...", + "noTasksForFilters": "सध्याच्या फिल्टरसाठी कोणतीही कार्ये आढळली नाहीत.", + "tableTask": "कार्य", + "tableSkill": "कौशल्य", + "tableState": "स्थिती", + "tableUpdated": "अद्यतनित", + "tableActions": "कृती", + "view": "पहा", + "cancel": "रद्द करा", + "previous": "मागील", + "next": "पुढील", + "taskDetail": "कार्य तपशील", + "close": "बंद करा", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "इव्हेंट्स", + "artifacts": "आर्टिफॅक्ट्स", + "tablePhase": "टेबल टप्पा", + "offset": "ऑफसेट", + "limit": "मर्यादा", + "skill": "कौशल्य", "rpcEndpoint": "पोस्ट /a2a", "rpcMethodSend": "संदेश/पाठवा", "rpcMethodStream": "संदेश/प्रवाह", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "कृती", + "addMemory": "मेमरी जोडा", + "allTypes": "सर्व प्रकार", "cancel": "रद्द करा", "checkHealth": "आरोग्य तपासा", "checkingHealth": "तपासत आहे...", @@ -4382,13 +4382,13 @@ "howWorksToggle": "हे कसे कार्य करते", "howWorksContent": "1. स्वयंचलित निष्कर्षण: प्रत्येक प्रतिसादाच्या शेवटी, तथ्ये आणि प्रसंग स्वयंचलितपणे शोधले आणि जतन केले जातात.\n2. पुनर्प्राप्ती: प्रत्येक प्रतिसादापूर्वी, FTS5 (अचूक), वेक्टर (सिमेंटिक), किंवा हायब्रिड RRF द्वारे सर्वात संबंधित मेमरी शोधल्या जातात.\n3. इंजेक्शन: प्रतिसादाची गुणवत्ता सुधारण्यासाठी संबंधित मेमरी असिस्टंटच्या संदर्भात समाविष्ट केल्या जातात.\n4. व्यवस्थापन: जुन्या मेमरी पाहण्यासाठी, संपादित करण्यासाठी, निर्यात करण्यासाठी आणि कॉम्पॅक्ट करण्यासाठी हे पृष्ठ वापरा." }, - "content": "Content", + "content": "मजकूर", "contentPlaceholder": "लक्षात ठेवण्यासाठी मूल्य किंवा JSON सामग्री", - "created": "Created", - "delete": "Delete", + "created": "निर्मितीची वेळ", + "delete": "हटवा", "deleteConfirmDesc": "ही कृती पूर्ववत केली जाऊ शकत नाही. मेमरी कायमची काढून टाकली जाईल.", "deleteConfirmTitle": "मेमरी हटवायची?", - "description": "View and manage stored memory entries", + "description": "संचयित मेमरी नोंदी पहा आणि व्यवस्थापित करा", "editMemory": "मेमरी संपादित करा", "editModal": { "title": "मेमरी संपादित करा", @@ -4444,20 +4444,20 @@ "configureCta": "कॉन्फिगर करा", "vectorStoreInstallHint": "व्हेक्टर शोध सक्षम करण्यासाठी: npm install sqlite-vec (नेटिव्ह Node.js आवश्यक आहे, WASM नाही), नंतर रीस्टार्ट करा." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "प्रासंगिक", + "export": "निर्यात करा", + "factual": "तथ्यात्मक", "healthUnknown": "आरोग्य माहीत नाही", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "यशाचा दर", + "import": "आयात करा", "importError": "फाइल आयात करणे अयशस्वी झाले", "importResult": "{imported} आयात केले, {skipped} वगळले", - "key": "Key", + "key": "की", "keyPlaceholder": "उदा. user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "मेमरी नोंदी", "next": "पुढे", - "noMemories": "No memories found", + "noMemories": "कोणत्याही मेमरी नोंदी आढळल्या नाहीत", "pageInfo": "पृष्ठ {page} पैकी {totalPages} ({total} एकूण)", "pipelineError": "पाइपलाइन त्रुटी", "pipelineOk": "पाइपलाइन ठीक आहे ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "पूर्वावलोकन मिळवण्यात अयशस्वी" }, "previous": "मागील", - "procedural": "Procedural", + "procedural": "प्रक्रियात्मक", "qdrant": { "title": "Qdrant (व्हेक्टर स्टोअर टियर २)", "description": "स्केलेबल सिमेंटिक शोधासाठी पर्यायी Qdrant एकत्रीकरण", @@ -4534,8 +4534,8 @@ }, "save": "जतन करा", "saving": "जतन करत आहे...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "मेमरी नोंदी शोधा...", + "semantic": "अर्थविषयक", "summarize": { "title": "जुन्या मेमरी कॉम्पॅक्ट करा", "noCandidates": "कॉम्पॅक्शनसाठी कोणतीही मेमरी पात्र नाही (निकष: >30 दिवस जुनी).", @@ -4547,8 +4547,8 @@ "playground": "प्लेग्राउंड", "engine": "इंजिन" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "मेमरी व्यवस्थापन", + "tokensUsed": "वापरलेले टोकन", "tooltip": { "totalEntries": "या API की साठी साठवलेल्या एकूण आठवणी", "tokensUsed": "सक्रिय आठवणींनी व्यापलेल्या एकूण टोकन्सचा अंदाजे आकडा", @@ -4558,15 +4558,15 @@ "procedural": "सहाय्यकाने पाळायच्या प्रक्रिया, कार्यप्रवाह आणि सूचना", "semantic": "संकल्पना, प्राधान्ये आणि डोमेन ज्ञान" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "एकूण नोंदी", + "type": "प्रकार", "memoryEnabled": "मेमरी सक्षम केली" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "कौशल्ये", + "description": "AI कौशल्ये व्यवस्थापित करा आणि त्यांचे निरीक्षण करा", + "skillsTab": "कौशल्ये", + "executionsTab": "कार्यनिष्पादने", "selectSkillToInspect": "तपासणी करण्यासाठी डावीकडील कौशल्य निवडा.", "schemaTab": "स्कीमा", "handlerTab": "हँडलर", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "चाचणी चालवा (प्लेसहोल्डर)", "setModeAria": "मोड {mode} सेट करा", "uninstallSkill": "कौशल्य अनइन्स्टॉल करा", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "सँडबॉक्स", + "loading": "कौशल्ये लोड होत आहेत...", + "noSkills": "कोणतीही कौशल्ये आढळली नाहीत", + "noExecutions": "कोणतीही कार्यनिष्पादने आढळली नाहीत", + "enabled": "सक्षम", + "disabled": "अक्षम", "delete": "हटवा", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "आवृत्ती", + "tableDescription": "वर्णन", + "skill": "कौशल्य", + "status": "स्थिती", + "duration": "कालावधी", + "time": "वेळ", + "sandboxConfig": "Sandbox संरचना", + "cpuLimit": "CPU मर्यादा", + "cpuLimitDesc": "प्रति स्किल कमाल कार्यान्वयन वेळ", + "memoryLimit": "मेमरी मर्यादा", + "memoryLimitDesc": "कमाल मेमरी वाटप", + "timeout": "कालबाह्यता", + "timeoutDesc": "प्रतिसादासाठी कमाल प्रतीक्षा वेळ", + "networkAccess": "नेटवर्क प्रवेश", + "networkAccessDesc": "बाह्य नेटवर्क विनंत्यांना अनुमती द्या", + "mode": "मोड", "q": "Q", "filterSkillsPlaceholder": "नाव, वर्णन किंवा टॅगनुसार कौशल्ये फिल्टर करा", "allModes": "सर्व मोड", @@ -4642,90 +4642,90 @@ "installSkill": "कौशल्य स्थापित करा" }, "health": { - "title": "System Health", - "description": "Real-time monitoring of your OmniRoute instance", - "healthy": "Healthy", - "degraded": "Degraded", - "down": "Down", - "uptime": "Uptime", - "memory": "Memory", - "memoryRss": "Memory (RSS)", - "heap": "Heap", + "title": "सिस्टमचे आरोग्य", + "description": "तुमच्या OmniRoute इंस्टन्सचे रिअल-टाइम निरीक्षण", + "healthy": "सुस्थितीत", + "degraded": "कामगिरी खालावलेली", + "down": "बंद", + "uptime": "कार्यरत कालावधी", + "memory": "मेमरी", + "memoryRss": "मेमरी (RSS)", + "heap": "हीप", "cpu": "CPU", - "database": "Database", - "version": "Version", - "lastCheck": "Last Check", - "providerHealth": "Provider Health", - "systemMetrics": "System Metrics", - "tokenHealth": "Token Health", - "refreshAll": "Refresh All", - "checkNow": "Check Now", - "loadingHealth": "Loading health data...", - "failedToLoad": "Failed to load health data: {error}", - "retry": "Retry", - "allOperational": "All systems operational", - "issuesDetected": "System issues detected", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", - "updatedAt": "Updated {time}", - "latency": "Latency", + "database": "डेटाबेस", + "version": "आवृत्ती", + "lastCheck": "शेवटची तपासणी", + "providerHealth": "प्रदात्याचे आरोग्य", + "systemMetrics": "सिस्टम मेट्रिक्स", + "tokenHealth": "टोकनचे आरोग्य", + "refreshAll": "सर्व रिफ्रेश करा", + "checkNow": "आता तपासा", + "loadingHealth": "आरोग्यविषयक डेटा लोड करत आहे...", + "failedToLoad": "आरोग्यविषयक डेटा लोड करण्यात अयशस्वी: {error}", + "retry": "पुन्हा प्रयत्न करा", + "allOperational": "सर्व सिस्टम कार्यरत आहेत", + "issuesDetected": "सिस्टममध्ये समस्या आढळल्या", + "healthVerdictReady": "OmniRoute तयार आहे", + "healthVerdictActionRequired": "पूर्ण कार्यप्रणाली पुनर्संचयित करण्यासाठी कृती आवश्यक आहे", + "healthVerdictCoolingDown": "अलीकडील बदलांनंतर स्थिर होत आहे", + "healthSubtitle": "सिस्टम आरोग्य तपासणी", + "advancedDiagnosticsTitle": "प्रगत निदान", + "hide": "लपवा", + "show": "दाखवा", + "updatedAt": "{time} रोजी अपडेट केले", + "latency": "विलंब", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", "millisecondsShort": "{value}ms", "notAvailable": "—", - "totalRequests": "Total requests", - "noDataYet": "No data yet", - "promptCache": "Prompt Cache", - "entries": "Entries", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "signatureCache": "Signature Cache", - "signatureDefaults": "Defaults", - "signatureTool": "Tool", - "signatureFamily": "Family", - "signatureSession": "Session", - "recovering": "Recovering", - "noCBData": "No circuit breaker data available. Make some requests first.", - "providerHealthStatusAria": "Provider health status", - "issuesLabel": "Issues Detected", - "operational": "Operational", - "providers": "Providers", - "configuredProvidersLabel": "Configured in dashboard", - "configuredProvidersHint": "Providers with credentials saved in /dashboard/providers, regardless of runtime state.", - "activeProviders": "{count} active", - "activeProvidersHint": "Configured providers currently enabled for routing requests.", - "monitoredProviders": "{count} monitored", - "monitoredProvidersHint": "Providers currently tracked by circuit-breaker health monitors.", - "healthyCount": "{count} healthy", + "totalRequests": "एकूण विनंत्या", + "noDataYet": "अद्याप डेटा नाही", + "promptCache": "प्रॉम्प्ट कॅशे", + "entries": "नोंदी", + "hitRate": "हिट दर", + "hitsMisses": "हिट्स / मिसेस", + "signatureCache": "स्वाक्षरी कॅशे", + "signatureDefaults": "डीफॉल्ट्स", + "signatureTool": "साधन", + "signatureFamily": "कुटुंब", + "signatureSession": "सत्र", + "recovering": "पुनर्प्राप्त होत आहे", + "noCBData": "सर्किट ब्रेकरचा डेटा उपलब्ध नाही. प्रथम काही विनंत्या करा.", + "providerHealthStatusAria": "प्रदात्यांच्या आरोग्याची स्थिती", + "issuesLabel": "समस्या आढळल्या", + "operational": "कार्यरत", + "providers": "प्रदाते", + "configuredProvidersLabel": "डॅशबोर्डमध्ये कॉन्फिगर केलेले", + "configuredProvidersHint": "रनटाइम स्थिती काहीही असली तरी /dashboard/providers मध्ये क्रेडेन्शियल्स जतन केलेले प्रदाते.", + "activeProviders": "{count} सक्रिय", + "activeProvidersHint": "रूटिंग विनंत्यांसाठी सध्या सक्षम केलेले कॉन्फिगर केलेले प्रदाते.", + "monitoredProviders": "{count} निरीक्षणाखाली", + "monitoredProvidersHint": "सर्किट-ब्रेकर आरोग्य मॉनिटर्सद्वारे सध्या ट्रॅक केलेले प्रदाते.", + "healthyCount": "{count} निरोगी", "nodeVersion": "Node {version}", - "failures": "{count} failure", - "failuresPlural": "{count} failures", - "lastFailure": "Last", - "rateLimitStatus": "Rate Limit Status", - "activeLimiters": "{count} active limiter", - "activeLimitersPlural": "{count} active limiters", - "queued": "Queued", - "queuedCount": "{count} queued", - "running": "running", - "runningCount": "{count} running", + "failures": "{count} अपयश", + "failuresPlural": "{count} अपयशे", + "lastFailure": "शेवटचे", + "rateLimitStatus": "दर मर्यादा स्थिती", + "activeLimiters": "{count} सक्रिय लिमिटर", + "activeLimitersPlural": "{count} सक्रिय लिमिटर्स", + "queued": "रांगेत", + "queuedCount": "{count} रांगेत", + "running": "चालू", + "runningCount": "{count} चालू", "ok": "OK", - "activeLockouts": "Active Lockouts", - "resetConfirm": "Reset all circuit breakers to healthy state? This will clear all failure counts and restore all providers to operational status.", - "resetAllTitle": "Reset all circuit breakers to healthy state", - "resetting": "Resetting...", - "resetAll": "Reset All", - "until": "Until {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "activeLockouts": "सक्रिय लॉकआउट्स", + "resetConfirm": "सर्व सर्किट ब्रेकर्स निरोगी स्थितीत रीसेट करायचे? यामुळे अपयशांची सर्व संख्या साफ होईल आणि सर्व प्रदाते पुन्हा कार्यरत स्थितीत येतील.", + "resetAllTitle": "सर्व सर्किट ब्रेकर्स निरोगी स्थितीत रीसेट करा", + "resetting": "रीसेट करत आहे...", + "resetAll": "सर्व रीसेट करा", + "until": "{time} पर्यंत", + "limitExhausted": "संपले", + "learnedFromHeaders": "हेडर्समधून शिकलेले", + "remainingOfLimit": "{remaining}/{limit} शिल्लक", + "throttleStatus": "थ्रॉटल: {value}", + "lastHeaderUpdate": "हेडर अपडेट: {age}", "databaseHealth": "डेटाबेस आरोग्य", "databaseHealthDescription": "जुने झालेले कोटा/डोमेन रो आणि तुटलेले कॉम्बो संदर्भ यांचे निदान आणि दुरुस्ती करा.", "status": "स्थिती", @@ -4851,65 +4851,65 @@ "noTargets": "कोणतेही लक्ष्य मार्ग कॉन्फिगर केलेले नाहीत." }, "limits": { - "title": "Limits & Quotas", - "rateLimit": "Rate Limit", - "remaining": "Remaining", - "requestsPerMinute": "Requests/min", - "tokensPerMinute": "Tokens/min", - "dailyLimit": "Daily Limit" + "title": "मर्यादा आणि कोटा", + "rateLimit": "दर मर्यादा", + "remaining": "शिल्लक", + "requestsPerMinute": "विनंत्या/मिनिट", + "tokensPerMinute": "टोकन/मिनिट", + "dailyLimit": "दैनिक मर्यादा" }, "logs": { - "title": "Logs", - "requestLogs": "Request Logs", - "proxyLogs": "Proxy Logs", - "auditLog": "Audit Log", + "title": "लॉग्स", + "requestLogs": "विनंती लॉग्स", + "proxyLogs": "प्रॉक्सी लॉग्स", + "auditLog": "ऑडिट लॉग", "console": "Console", - "auditLogDesc": "Administrative actions and security events", - "loading": "Loading...", - "refresh": "Refresh", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", - "showing": "Showing {count} entries (offset {offset})", - "search": "Search", - "timestamp": "Timestamp", - "action": "Action", - "actor": "Actor", - "target": "Target", - "details": "Details", - "ipAddress": "IP Address", + "auditLogDesc": "प्रशासकीय कृती आणि सुरक्षा घटना", + "loading": "लोड होत आहे...", + "refresh": "रीफ्रेश करा", + "filterByAction": "कृतीनुसार फिल्टर करा...", + "filterByActor": "कर्ताानुसार फिल्टर करा...", + "filterEntriesAria": "ऑडिट लॉग नोंदी फिल्टर करा", + "filterByActionTypeAria": "कृतीच्या प्रकारानुसार फिल्टर करा", + "filterByActorAria": "कर्ताानुसार फिल्टर करा", + "refreshAuditLogAria": "ऑडिट लॉग रीफ्रेश करा", + "tableAria": "ऑडिट लॉग नोंदी", + "failedFetchAuditLog": "ऑडिट लॉग प्राप्त करण्यात अयशस्वी", + "showing": "{count} नोंदी दाखवत आहे (ऑफसेट {offset})", + "search": "शोधा", + "timestamp": "टाइमस्टॅम्प", + "action": "कृती", + "actor": "कर्ता", + "target": "लक्ष्य", + "details": "तपशील", + "ipAddress": "IP पत्ता", "notAvailable": "—", - "noEntries": "No audit log entries found", - "previous": "Previous", - "next": "Next", - "providerWarningTitle": "Provider Warnings", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", - "providerWarningDesc": "Some providers returned warnings during request processing", + "noEntries": "कोणत्याही ऑडिट लॉग नोंदी आढळल्या नाहीत", + "previous": "मागील", + "next": "पुढील", + "providerWarningTitle": "प्रदात्याच्या चेतावण्या", + "viewDetails": "तपशील पहा", + "eventMetadata": "इव्हेंट मेटाडेटा", + "eventPayload": "इव्हेंट पेलोड", + "requestId": "विनंती आयडी", + "providerWarningDesc": "विनंतीवर प्रक्रिया करताना काही प्रदात्यांनी इशारे दिले", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", - "auditModalSubtitle": "Event details and metadata", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "offset": "ऑफसेट", + "limit": "मर्यादा", + "status": "स्थिती", + "resourceType": "संसाधन प्रकार", + "totalEntries": "एकूण नोंदी", + "tab": "टॅब", + "auditModalSubtitle": "इव्हेंटचे तपशील आणि मेटाडेटा", + "close": "बंद करा", + "runningRequests": "सक्रिय विनंत्या", + "runningRequestsDesc": "सध्या सुरू असलेल्या अपस्ट्रीम विनंत्यांचे रिअल-टाइम दृश्य", "clearAll": "सर्व साफ करा", "confirmClearActiveRequests": "सर्व सक्रिय विनंत्या साफ करायच्या?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "मॉडेल", + "provider": "प्रदाता", + "account": "खाते", + "elapsed": "लोटलेला वेळ", "activeStage": "टप्पा", "activeStageUnknown": "अद्याप अपस्ट्रीमवर पाठवले नाही", "activeStageRegistered": "नोंदणीकृत", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "रेट लिमिट स्लॉट प्राप्त झाला", "activeStageSendingToProvider": "अपस्ट्रीमवर पाठवत आहे", "activeStageProviderResponseStarted": "अपस्ट्रीम प्रतिसाद सुरू झाला", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "संख्या", + "payloads": "पेलोड्स", + "viewPayloads": "पहा", + "activeCount": "{count} सक्रिय", + "clientPayload": "क्लायंट विनंती पेलोड", + "upstreamPayload": "अपस्ट्रीम प्रदाता पेलोड", + "upstreamNotSentYet": "अद्याप अपस्ट्रीमकडे पाठवलेले नाही", + "runningRequestDetailMeta": "खाते: {account} — लोटलेला वेळ: {elapsed}", + "export": "निर्यात करा", + "exporting": "निर्यात सुरू आहे...", + "exportFailed": "निर्यात अयशस्वी झाली", "cleanHistoryButton": "इतिहास साफ करा", "cleanHistoryTitle": "लॉग इतिहास साफ करायचा?", "cleanHistoryMessage": "हे DATA_DIR/call_logs अंतर्गत सर्व विनंती लॉग ओळी, जुन्या तपशील ओळी आणि स्थानिक आर्टिफॅक्ट फाइल्स कायमच्या साफ करते. साफसफाईनंतर थेट पृष्ठ रिफ्रेश होईल.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} लॉग नोंदी, {deletedArtifacts} आर्टिफॅक्ट्स आणि {deletedDetailedLogs} जुन्या तपशील ओळी साफ केल्या.", "cleanHistoryEmpty": "कोणताही विनंती लॉग इतिहास आढळला नाही.", "cleanHistoryFailed": "लॉग इतिहास साफ करण्यात अयशस्वी.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "कालमर्यादा", + "lastNHours": "मागील {hours}", + "defaultRange": "डीफॉल्ट", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "लॉग मिळवण्यात अयशस्वी", + "copyFailed": "लॉग नोंद कॉपी करण्यात अयशस्वी", + "copyLogEntry": "लॉग नोंद कॉपी करा", "filterByLevel": "लॉग पातळीनुसार फिल्टर करा", "searchPlaceholder": "लॉग शोधा…", "searchAria": "लॉग नोंदी शोधा", @@ -4964,49 +4964,49 @@ "tokens": "टोकन्स" }, "onboarding": { - "welcome": "Welcome", + "welcome": "स्वागत आहे", "tiers": "टियर्स", - "security": "Security", + "security": "सुरक्षा", "test": "Test", - "ready": "Ready!", - "setPassword": "Set Password", - "addProvider": "Add your first provider", - "getStarted": "Get Started", - "skip": "Skip", - "skipWizard": "Skip wizard entirely", - "skipPassword": "Skip password setup", - "skipAndContinue": "Skip & Continue", - "passwordLabel": "Password", - "confirmPassword": "Confirm Password", - "enterPassword": "Enter password", - "confirmPasswordPlaceholder": "Confirm password", - "passwordsMismatch": "Passwords do not match", - "setupComplete": "Setup Complete!", - "goToDashboard": "Go to Dashboard →", - "welcomeDesc": "OmniRoute is your local AI API proxy. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "multiProvider": "Multi-Provider", - "usageTracking": "Usage Tracking", - "securityDesc": "Set a password to protect your dashboard, or skip for now.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", - "providerDesc": "Connect your first AI provider. You can add more later.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", - "apiKeyRequired": "API Key (required)", - "customUrlOptional": "Custom URL (optional)", - "testDesc": "Let's verify your provider connection works.", - "runTest": "Run Connection Test", - "testingConnection": "Testing connection...", - "connectionSuccessful": "Connection successful! Your provider is ready.", - "noProviderFound": "No provider found. You can add one from the dashboard later.", - "testFailed": "Test failed, but you can configure this later.", - "couldNotTest": "Could not test right now. You can test from the dashboard.", - "doneDesc": "You're all set! Your OmniRoute instance is configured and ready to proxy AI requests.", - "yourEndpoint": "Your endpoint:", - "continue": "Continue", - "retry": "Retry", - "failedSetPassword": "Failed to set password. Try again.", - "failedAddProvider": "Failed to add provider. Try again.", - "connectionError": "Connection error. Please try again.", - "provider": "Provider", + "ready": "तयार!", + "setPassword": "पासवर्ड सेट करा", + "addProvider": "तुमचा पहिला प्रदाता जोडा", + "getStarted": "सुरू करा", + "skip": "वगळा", + "skipWizard": "संपूर्ण विझार्ड वगळा", + "skipPassword": "पासवर्ड सेटअप वगळा", + "skipAndContinue": "वगळा आणि पुढे जा", + "passwordLabel": "पासवर्ड", + "confirmPassword": "पासवर्डची पुष्टी करा", + "enterPassword": "पासवर्ड प्रविष्ट करा", + "confirmPasswordPlaceholder": "पासवर्डची पुष्टी करा", + "passwordsMismatch": "पासवर्ड जुळत नाहीत", + "setupComplete": "सेटअप पूर्ण झाले!", + "goToDashboard": "डॅशबोर्डवर जा →", + "welcomeDesc": "OmniRoute हा तुमचा स्थानिक AI API प्रॉक्सी आहे. तो लोड बॅलन्सिंग, फेलओव्हर आणि वापराचा मागोवा घेण्याच्या सुविधांसह विनंत्या अनेक AI प्रदात्यांकडे रूट करतो.", + "multiProvider": "एकाधिक प्रदाते", + "usageTracking": "वापराचा मागोवा", + "securityDesc": "तुमचा डॅशबोर्ड सुरक्षित ठेवण्यासाठी पासवर्ड सेट करा किंवा आत्तासाठी वगळा.", + "securityDescSkipWarning": "⚠️ पासवर्डशिवाय, सेटअपदरम्यान तुम्हाला प्रदाते जोडता येणार नाहीत. पासवर्ड सेट केल्यानंतर तुम्ही त्यांना नंतर डॅशबोर्डवरून जोडू शकता.", + "providerDesc": "तुमचा पहिला AI प्रदाता कनेक्ट करा. तुम्ही नंतर आणखी प्रदाते जोडू शकता.", + "providerRequiresPassword": "प्रदाते जोडण्यासाठी तुम्हाला आधी पासवर्ड सेट करणे आवश्यक आहे. कृपया सुरक्षा चरणावर परत जाऊन पासवर्ड सेट करा किंवा नंतर डॅशबोर्डवरून प्रदाते जोडा.", + "apiKeyRequired": "API की (आवश्यक)", + "customUrlOptional": "सानुकूल URL (ऐच्छिक)", + "testDesc": "तुमच्या प्रदात्याचे कनेक्शन कार्यरत आहे की नाही ते तपासूया.", + "runTest": "कनेक्शन चाचणी चालवा", + "testingConnection": "कनेक्शनची चाचणी सुरू आहे...", + "connectionSuccessful": "कनेक्शन यशस्वी झाले! तुमचा प्रदाता तयार आहे.", + "noProviderFound": "कोणताही प्रदाता आढळला नाही. तुम्ही नंतर डॅशबोर्डवरून प्रदाता जोडू शकता.", + "testFailed": "चाचणी अयशस्वी झाली, परंतु तुम्ही हे नंतर कॉन्फिगर करू शकता.", + "couldNotTest": "आत्ता चाचणी करता आली नाही. तुम्ही डॅशबोर्डवरून चाचणी करू शकता.", + "doneDesc": "सर्व काही तयार आहे! तुमचा OmniRoute इन्स्टन्स कॉन्फिगर झाला आहे आणि AI विनंत्या प्रॉक्सी करण्यासाठी तयार आहे.", + "yourEndpoint": "तुमचा एंडपॉइंट:", + "continue": "पुढे जा", + "retry": "पुन्हा प्रयत्न करा", + "failedSetPassword": "पासवर्ड सेट करण्यात अयशस्वी. पुन्हा प्रयत्न करा.", + "failedAddProvider": "प्रदाता जोडण्यात अयशस्वी. पुन्हा प्रयत्न करा.", + "connectionError": "कनेक्शन त्रुटी. कृपया पुन्हा प्रयत्न करा.", + "provider": "प्रदाता", "apiKeyHelp": "एपीआय की AI सेवांसाठी पासवर्ड आहे. तुमच्या प्रदात्याच्या वेबसाइटवरून एक मिळवा (उदा. platform.openai.com, console.anthropic.com).", "tier": { "subtitle": "OmniRoute प्रदात्यांचे तीन स्तरांमध्ये आयोजन करते त्यामुळे राउटिंग सर्वात विश्वासार्ह, सर्वात कमी किमतीच्या मार्गाला प्राधान्य देते.", @@ -5049,12 +5049,12 @@ } }, "providers": { - "title": "Providers", + "title": "प्रदाते", "Account Deactivated": "खाते निष्क्रिय केले", "allProviders": "सर्व प्रदाते", "audioProviders": "ऑडिओ प्रदाता", "showFreeOnly": "फक्त मोफत", - "addProvider": "Add Provider", + "addProvider": "प्रदाता जोडा", "addFirstProvider": "तुमचा पहिला प्रदाता जोडा", "addFirstProviderDesc": "OmniRoute द्वारे विनंती राउटिंग सुरू करण्यासाठी AI प्रदात्याशी कनेक्ट करा. तुम्ही मोफत प्रदाता, API की किंवा OAuth खाती वापरू शकता.", "learnMore": "अधिक जाणून घ्या", @@ -5065,7 +5065,7 @@ "importFromFileSelectHint": "{total} पैकी {count} निवडले", "importFromFileColProvider": "प्रोव्हायडर", "importFromFileColName": "नाव", - "importFromFileColBaseUrl": "Base URL", + "importFromFileColBaseUrl": "मूळ URL", "importFromFileErrorLine": "पंक्ती {line}: {reason}", "importErrorMissingProvider": "प्रोव्हायडर गहाळ आहे", "importErrorMissingName": "नाव गहाळ आहे", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "इंपोर्ट करत आहे…", "importFromFileImport": "{count} प्रोव्हायडर्स इंपोर्ट करा", "importFromFileResult": "{success} प्रोव्हायडर्स इंपोर्ट केले ({failed} अयशस्वी)", + "importFromFileDownloadTemplate": "CSV टेम्पलेट डाउनलोड करा", + "importFromFileMoreErrors": "+{count} आणखी", + "importFromFileSchemaHint": "CSV स्तंभ स्थानानुसार आहेत: provider, name, apiKey, baseUrl (पर्यायी), priority (पर्यायी). provider स्तंभामध्ये विद्यमान व्यवस्थापित प्रदाता id किंवा आधीच नोंदणीकृत OpenAI/Anthropic-सुसंगत नोड id असणे आवश्यक आहे — हे आयात नवीन एंडपॉइंट नोड तयार करत नाही.", "adaptaTutorial": { "title": "Adapta Web कसे कनेक्ट करावे", "introPrefix": "Adapta हे Clerk द्वारे प्रमाणीकृत होते. टोकन", @@ -5103,31 +5106,31 @@ "tipPrefix": "ही", "tipSuffix": "कुकी दीर्घकाळ टिकणारी असते, साधारणपणे काही महिने. तुम्ही साइन आउट केल्यास किंवा Adapta ने सत्र अवैध ठरवल्यासच तुम्हाला त्याचे नूतनीकरण करावे लागेल." }, - "editProvider": "Edit Provider", - "deleteProvider": "Delete Provider", - "noProviders": "No providers configured", - "modelAvailability": "Model Availability", - "accounts": "Accounts", - "newAccount": "New Account", - "deleteConfirm": "Are you sure you want to delete this provider?", - "testing": "Testing...", - "testConnection": "Test Connection", - "testSuccess": "Connection successful", - "testFailed": "Connection failed", - "available": "Available", - "cooldown": "Cooldown", - "unavailable": "Unavailable", - "unknown": "Unknown", + "editProvider": "प्रदाता संपादित करा", + "deleteProvider": "प्रदाता हटवा", + "noProviders": "कोणतेही प्रदाते कॉन्फिगर केलेले नाहीत", + "modelAvailability": "मॉडेलची उपलब्धता", + "accounts": "खाती", + "newAccount": "नवीन खाते", + "deleteConfirm": "तुम्हाला हा प्रदाता नक्की हटवायचा आहे का?", + "testing": "चाचणी सुरू आहे...", + "testConnection": "कनेक्शनची चाचणी करा", + "testSuccess": "कनेक्शन यशस्वी झाले", + "testFailed": "कनेक्शन अयशस्वी झाले", + "available": "उपलब्ध", + "cooldown": "कूलडाउन", + "unavailable": "अनुपलब्ध", + "unknown": "अज्ञात", "oauthLabel": "OAuth", - "compatibleLabel": "Compatible", + "compatibleLabel": "सुसंगत", "chat": "Chat", "responses": "Responses", "messages": "Messages", - "oauthProviders": "OAuth Providers", - "freeProviders": "Free Providers", - "apiKeyProviders": "API Key Providers", - "compatibleProviders": "API Key Compatible Providers", - "testAll": "Test All", + "oauthProviders": "OAuth प्रदाते", + "freeProviders": "विनामूल्य प्रदाते", + "apiKeyProviders": "API Key प्रदाते", + "compatibleProviders": "API Key-सुसंगत प्रदाते", + "testAll": "सर्वांची चाचणी करा", "reorderByAvailability": "पुन्हा क्रमवारी लावा", "reorderByAvailabilityTitle": "उपलब्धतेनुसार कनेक्शन पुन्हा क्रमवारी लावा", "reorderByAvailabilityError": "उपलब्धतेनुसार कनेक्शन पुन्हा क्रमवारी लावण्यात अयशस्वी", @@ -5135,10 +5138,10 @@ "distributing": "वितरित करत आहे...", "selectedCount": "{count, plural, one {# निवडले} other {# निवडले}}", "accountsCount": "{count, plural, one {# खाते} other {# खाती}}", - "testAllOAuth": "Test all OAuth connections", - "testAllFree": "Test all Free connections", - "testAllApiKey": "Test all API Key connections", - "testAllCompatible": "Test all Compatible connections", + "testAllOAuth": "सर्व OAuth कनेक्शनची चाचणी करा", + "testAllFree": "सर्व विनामूल्य कनेक्शनची चाचणी करा", + "testAllApiKey": "सर्व API Key कनेक्शनची चाचणी करा", + "testAllCompatible": "सर्व सुसंगत कनेक्शनची चाचणी करा", "testAllModels": "सर्व मॉडेल्सची चाचणी घ्या", "testAllModelsConfirm": "सर्व दृश्यमान मॉडेल्सची चाचणी घ्यायची? ऑटो-हाइड सक्षम असल्यास अयशस्वी मॉडेल्स लपवले जातील.", "testingAllModels": "{done}/{total} ची चाचणी घेत आहे...", @@ -5154,9 +5157,9 @@ "filterByVisibility": "दृश्यमानतेनुसार फिल्टर करा", "autoHideFailed": "अयशस्वी मॉडेल्स आपोआप लपवा", "autoHideFailedHint": "सक्षम केल्यावर, 'सर्व चाचणी घ्या' हे /v1/models सारख्या सार्वजनिक कॅटलॉगमधून तात्पुरत्या नसलेल्या त्रुटी लपवते. सिंगल-मॉडेल चाचण्या कधीही आपोआप लपवल्या जात नाहीत.", - "connected": "{count} Connected", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", + "connected": "{count} कनेक्ट केले", + "errorCount": "{count} त्रुटी ({code})", + "errorCountNoCode": "{count} त्रुटी", "testAllCompleted": "{total} मॉडेल्सची चाचणी केली: {ok} OK, {failed} अयशस्वी", "modelAutoHidden": "मॉडेल {model} आपोआप लपवले गेले (चाचणी अयशस्वी)", "filterAll": "सर्व", @@ -5164,9 +5167,9 @@ "filterHidden": "फक्त लपवलेले", "modelsHiddenCount": "{count} लपवले", "warningCount": "{count} चेतावणी", - "noConnections": "No connections", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "noConnections": "कोणतेही कनेक्शन नाही", + "expiredBadge": "कालबाह्य", + "expiringSoonBadge": "लवकरच कालबाह्य होणार", "freeTier": "मोफत टियर", "freeTierAvailable": "मोफत टियर उपलब्ध", "hasFreeTooltip": "विनामूल्य टियर उपलब्ध", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "हा प्रदाता बहिष्कृत केला गेला आहे", "riskNotice": { "title": "पुढे जाण्यापूर्वी", - "detailsTitle": "Usage caveats", + "detailsTitle": "वापरासंबंधी सूचना", "tooltip": "वापराच्या मर्यादा असलेला प्रदाता — तपशीलांसाठी क्लिक करा", "oauth": "हा प्रदाता तुमचे अधिकृत उत्पादन सत्र/OAuth वापरतो, जे प्रॉक्सी/राऊटर वापरासाठी अधिकृत नाही. आम्ही सघन स्वायत्त एजंट वापराची (OpenCloud-शैली, लांब बहु-चरण प्रवाह, मोठे बॅचेस) शिफारस करत नाही — अपस्ट्रीम खाते प्रतिबंधित किंवा बॅन करून प्रतिक्रिया देऊ शकते. स्वतःच्या जोखमीवर वापरा.", "webCookie": "हा प्रदाता तुमच्या वेब सत्र कुकीजद्वारे प्रमाणीकरण करतो. अपस्ट्रीम सेवा कोणत्याही वेळी सत्र अवैध करू शकते, ज्यामुळे तुम्हाला पुन्हा लॉग इन करावे लागेल. दीर्घकाळ लक्ष न ठेवलेल्या ऑपरेशन्ससाठी शिफारस केलेली नाही. स्वतःच्या जोखमीवर वापरा.", @@ -5188,95 +5191,95 @@ "cancel": "रद्द करा" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} कनेक्शन ध्वजांकित — अलीकडील कमाल {maxFailures} अपयशे{lastFailureSuffix}. कनेक्शनचे आरोग्य पाहण्यासाठी क्लिक करा.", + "lastFailureSuffix": "(शेवटचे अपयश {time})", + "ariaLabel": "कनेक्शनच्या आरोग्याचे तपशील पहा, {count} इशारे" }, - "disabled": "Disabled", - "enableProvider": "Enable provider", - "disableProvider": "Disable provider", - "testResults": "Test Results", - "noCompatibleYet": "No compatible providers added yet", - "compatibleHint": "Use the buttons above to add OpenAI or Anthropic compatible endpoints", - "addOpenAICompatible": "Add OpenAI Compatible", - "addAnthropicCompatible": "Add Anthropic Compatible", - "addNewProvider": "Add New Provider", - "backToProviders": "Back to Providers", - "configureNewProvider": "Configure a new AI provider to use with your applications.", - "providerLabel": "Provider", - "selectProvider": "Select a provider", - "selectedProvider": "Selected provider", - "authMethod": "Authentication Method", - "apiKeyLabel": "API Key", - "apiKeyRequired": "API Key is required", - "selectProviderRequired": "Please select a provider", - "enterApiKey": "Enter your API key", - "apiKeySecure": "Your API key will be encrypted and stored securely.", - "oauth2Connect": "Connect with OAuth2", + "disabled": "अक्षम", + "enableProvider": "प्रदाता सक्षम करा", + "disableProvider": "प्रदाता अक्षम करा", + "testResults": "चाचणीचे निकाल", + "noCompatibleYet": "अद्याप कोणतेही सुसंगत प्रदाते जोडलेले नाहीत", + "compatibleHint": "OpenAI किंवा Anthropic शी सुसंगत एंडपॉइंट जोडण्यासाठी वरील बटणे वापरा", + "addOpenAICompatible": "OpenAI सुसंगत प्रदाता जोडा", + "addAnthropicCompatible": "Anthropic सुसंगत प्रदाता जोडा", + "addNewProvider": "नवीन प्रदाता जोडा", + "backToProviders": "प्रदात्यांकडे परत जा", + "configureNewProvider": "आपल्या ॲप्लिकेशन्ससह वापरण्यासाठी नवीन AI प्रदाता कॉन्फिगर करा.", + "providerLabel": "प्रदाता", + "selectProvider": "प्रदाता निवडा", + "selectedProvider": "निवडलेला प्रदाता", + "authMethod": "प्रमाणीकरण पद्धत", + "apiKeyLabel": "API की", + "apiKeyRequired": "API Key आवश्यक आहे", + "selectProviderRequired": "कृपया प्रदाता निवडा", + "enterApiKey": "आपली API key प्रविष्ट करा", + "apiKeySecure": "आपली API key कूटबद्ध करून सुरक्षितपणे संग्रहित केली जाईल.", + "oauth2Connect": "OAuth2 द्वारे कनेक्ट करा", "oauth2Label": "OAuth2", - "oauth2Desc": "Connect your account using OAuth2 authentication.", - "displayName": "Display Name", - "displayNamePlaceholder": "e.g., Production API, Dev Environment", - "displayNameHint": "Optional. A friendly name to identify this configuration.", - "active": "Active", - "activeDescription": "Enable this provider for use in your applications", - "cancel": "Cancel", - "createProvider": "Create Provider", - "failedCreate": "Failed to create provider", - "errorOccurred": "An error occurred. Please try again.", - "modelStatus": "Model Status", - "showConfiguredOnly": "Configured only", - "allModelsOperational": "All models operational", - "modelsWithIssues": "{count} model(s) with issues", - "allModelsNormal": "All models are responding normally.", - "cooldownCleared": "Cooldown cleared for {model}", - "failedClearCooldown": "Failed to clear cooldown", - "loadingAvailability": "Loading model availability...", - "clearCooldown": "Clear", - "clearing": "Clearing...", - "until": "Until {time}", - "providerTestFailed": "Provider test failed", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "oauth2Desc": "OAuth2 प्रमाणीकरण वापरून आपले खाते कनेक्ट करा.", + "displayName": "प्रदर्शित नाव", + "displayNamePlaceholder": "उदा., Production API, Dev Environment", + "displayNameHint": "पर्यायी. हे कॉन्फिगरेशन ओळखण्यासाठी एक सोपे नाव.", + "active": "सक्रिय", + "activeDescription": "आपल्या ॲप्लिकेशन्समध्ये वापरण्यासाठी हा प्रदाता सक्षम करा", + "cancel": "रद्द करा", + "createProvider": "प्रदाता तयार करा", + "failedCreate": "प्रदाता तयार करण्यात अयशस्वी", + "errorOccurred": "एक त्रुटी आली. कृपया पुन्हा प्रयत्न करा.", + "modelStatus": "मॉडेलची स्थिती", + "showConfiguredOnly": "फक्त कॉन्फिगर केलेले", + "allModelsOperational": "सर्व मॉडेल्स कार्यरत आहेत", + "modelsWithIssues": "{count} मॉडेलमध्ये समस्या आहेत", + "allModelsNormal": "सर्व मॉडेल्स सामान्यपणे प्रतिसाद देत आहेत.", + "cooldownCleared": "{model} साठी कूलडाउन साफ केला", + "failedClearCooldown": "कूलडाउन साफ करण्यात अयशस्वी", + "loadingAvailability": "मॉडेलची उपलब्धता लोड करत आहे...", + "clearCooldown": "साफ करा", + "clearing": "साफ करत आहे...", + "until": "{time} पर्यंत", + "providerTestFailed": "प्रदात्याची चाचणी अयशस्वी झाली", + "providerTestTimeout": "प्रदात्याच्या चाचणीची वेळ संपली — एकाच वेळी चाचणी करण्यासाठी खूप जास्त कनेक्शन्स आहेत", "modeTest": "{mode} Test", - "passedCount": "{count} passed", - "failedCount": "{count} failed", - "testedCount": "{count} tested", + "passedCount": "{count} उत्तीर्ण", + "failedCount": "{count} अयशस्वी", + "testedCount": "{count} तपासले", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", - "noActiveConnectionsInGroup": "No active connections found for this group.", - "allTestsPassed": "All {total} tests passed", - "testSummary": "{passed}/{total} passed, {failed} failed", - "nameLabel": "Name", + "errorShort": "त्रुटी", + "noActiveConnectionsInGroup": "या गटासाठी कोणतीही सक्रिय कनेक्शन्स आढळली नाहीत.", + "allTestsPassed": "सर्व {total} चाचण्या उत्तीर्ण झाल्या", + "testSummary": "{passed}/{total} उत्तीर्ण, {failed} अयशस्वी", + "nameLabel": "नाव", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", - "apiTypeLabel": "API Type", - "prefixHint": "Required. Unique prefix for model names.", - "nameHint": "Required. A friendly label for this node.", - "baseUrlHint": "Required. Provider API base URL.", + "baseUrlLabel": "बेस URL", + "apiTypeLabel": "API प्रकार", + "prefixHint": "आवश्यक. मॉडेलच्या नावांसाठी अद्वितीय उपसर्ग.", + "nameHint": "आवश्यक. या नोडसाठी सुलभ ओळख-नाव.", + "baseUrlHint": "आवश्यक. प्रदाता API चा बेस URL.", "iconUrlLabel": "आयकॉन URL", "iconUrlHint": "पर्यायी. या प्रदात्याचा आयकॉन म्हणून दर्शविलेली इमेज URL.", "iconUrlInvalid": "अवैध आयकॉन URL. http(s):// किंवा data:image/*;base64 URL वापरा.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "दैनिक कोटा रीसेट करण्याचा वेळ क्षेत्र", + "dailyQuotaResetTimezoneHint": "अपस्ट्रीमने X-RateLimit-Reset वगळल्यास वापरले जाणारे पर्यायी IANA वेळ क्षेत्र. अल्प प्रतीक्षा कालावधी कायम ठेवण्यासाठी रिकामे सोडा.", + "dailyQuotaResetHourLabel": "दैनिक कोटा रीसेट करण्याची वेळ", + "dailyQuotaResetHourHint": "वरील वेळ क्षेत्रातील स्थानिक तास 0-23. रिकामे असल्यास नोड-स्तरीय घड्याळ नसेल.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", - "validateConnection": "Validate Connection", - "validating": "Validating...", - "connectionValid": "Connection is valid!", - "connectionFailed": "Connection failed. Check URL and key.", - "testKeyLabel": "Test API Key", - "testKeyPlaceholder": "sk-... (for validation only)", - "providerNotFound": "Provider not found", - "deleteConnectionConfirm": "Delete this connection?", + "validateConnection": "कनेक्शन सत्यापित करा", + "validating": "सत्यापित करत आहे...", + "connectionValid": "कनेक्शन वैध आहे!", + "connectionFailed": "कनेक्शन अयशस्वी झाले. URL आणि की तपासा.", + "testKeyLabel": "API कीची चाचणी करा", + "testKeyPlaceholder": "sk-... (केवळ सत्यापनासाठी)", + "providerNotFound": "प्रदाता आढळला नाही", + "deleteConnectionConfirm": "हे कनेक्शन हटवायचे?", "deleteConnectionConfirmNamed": "तुम्हाला खात्री आहे की तुम्ही {name} हटवू इच्छिता? ही क्रिया पूर्ववत केली जाऊ शकत नाही.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "निवडलेली हटवा ({count})", + "batchDeleteConfirm": "{count} कनेक्शन हटवायची? ही क्रिया पूर्ववत करता येणार नाही.", + "batchDeleteSuccess": "{count} कनेक्शन हटवली", "batchActivateSelected": "सक्रिय करा", "batchDeactivateSelected": "निष्क्रिय करा", "batchRetestSelected": "पुन्हा चाचणी करा", @@ -5292,32 +5295,32 @@ "filterError": "त्रुटी", "filterBanned": "प्रतिबंधित", "filterCreditsExhausted": "क्रेडिट संपले", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "खाती शोधा…", "noFilteredConnections": "सध्याच्या फिल्टरशी कोणतेही कनेक्शन्स जुळत नाहीत.", - "failedSetAlias": "Failed to set alias", + "failedSetAlias": "उपनाव सेट करण्यात अयशस्वी", "setAliasSuccess": "उर्फनाव {alias} सेट केले", "deleteAliasSuccess": "उर्फनाव {alias} हटवले", - "failedSaveConnection": "Failed to save connection", - "failedSaveConnectionRetry": "Failed to save connection. Please try again.", - "failedRetestConnection": "Failed to retest connection", - "deleteCompatibleNodeConfirm": "Delete this {type} Compatible node?", - "anthropicCompatibleDetails": "Anthropic Compatible Details", - "openaiCompatibleDetails": "OpenAI Compatible Details", + "failedSaveConnection": "कनेक्शन जतन करण्यात अयशस्वी", + "failedSaveConnectionRetry": "कनेक्शन जतन करण्यात अयशस्वी. कृपया पुन्हा प्रयत्न करा.", + "failedRetestConnection": "कनेक्शनची पुन्हा चाचणी करण्यात अयशस्वी", + "deleteCompatibleNodeConfirm": "हा {type} Compatible नोड हटवायचा?", + "anthropicCompatibleDetails": "Anthropic Compatible तपशील", + "openaiCompatibleDetails": "OpenAI Compatible तपशील", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "एम्बेडिंग्ज", + "audioTranscriptions": "ऑडिओ लिप्यंतरणे", + "audioSpeech": "ऑडिओ वाणी", + "imagesGenerations": "प्रतिमा निर्मिती", "chatCompletions": "Chat Completions", - "importingModels": "Importing...", - "importFromModels": "Import from /models", - "modelsImported": "{count} models imported", - "allModelsAlreadyImported": "All models already imported", - "noNewModelsToImport": "No new models to import — all models are already in the registry or custom models list", - "skippingExistingModels": "Skipping {count} existing models", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "importingModels": "आयात करत आहे...", + "importFromModels": "/models मधून आयात करा", + "modelsImported": "{count} मॉडेल आयात केली", + "allModelsAlreadyImported": "सर्व मॉडेल आधीच आयात केली आहेत", + "noNewModelsToImport": "आयात करण्यासाठी कोणतीही नवीन मॉडेल नाहीत — सर्व मॉडेल आधीच रजिस्ट्रीमध्ये किंवा सानुकूल मॉडेलच्या यादीत आहेत", + "skippingExistingModels": "अस्तित्वात असलेली {count} मॉडेल वगळत आहे", + "autoSync": "स्वयं-समक्रमण", + "autoSyncShort": "समक्रमित करा", "autoFetchModels": "ऑटो-फेच अपस्ट्रीम मॉडेल्स", "autoFetchModelsTooltip": "आवश्यकतेनुसार अपस्ट्रीम मॉडेल्स आणा आणि कॅश करा", "autoFetchModelsEnabled": "उपधारा मॉडेल स्वयंचलित-आकर्षण सक्षम आहे", @@ -5329,52 +5332,52 @@ "resetToUpstreamDefaults": "अपस्ट्रीम डिफॉल्ट्स पुनर्स्थापित करा", "resetToUpstreamDefaultsSuccess": "उपस्ट्रीम मॉडेल डिफॉल्ट्स पुनर्स्थापित केले", "resetToUpstreamDefaultsFailed": "उपस्ट्रीम मॉडेल डिफॉल्ट्स पुनर्स्थापित करण्यात अयशस्वी", - "autoSyncTooltip": "Automatically refresh model list every 24h (configurable via MODEL_SYNC_INTERVAL_HOURS)", - "autoSyncEnabled": "Auto-sync enabled — models will refresh periodically", - "autoSyncDisabled": "Auto-sync disabled", - "autoSyncToggleFailed": "Failed to toggle auto-sync", - "autoSyncPartialFailure": "Auto-sync updated for some connections, but not all", - "clearAllModels": "Clear All Models", - "clearAllModelsConfirm": "Are you sure you want to remove all models for this provider? This cannot be undone.", - "clearAllModelsSuccess": "All models cleared", - "clearAllModelsFailed": "Failed to clear models", - "addConnectionToImport": "Add a connection to enable importing.", - "noModelsConfigured": "No models configured", - "connectionCount": "{count} connection(s)", - "fetchingModels": "Fetching available models...", - "failedFetchModels": "Failed to fetch models", + "autoSyncTooltip": "दर 24 तासांनी मॉडेलची यादी स्वयंचलितपणे रीफ्रेश करा (MODEL_SYNC_INTERVAL_HOURS द्वारे कॉन्फिगर करता येते)", + "autoSyncEnabled": "स्वयं-समक्रमण सुरू केले — मॉडेल वेळोवेळी रीफ्रेश होतील", + "autoSyncDisabled": "स्वयं-समक्रमण बंद केले", + "autoSyncToggleFailed": "स्वयं-समक्रमण टॉगल करण्यात अयशस्वी", + "autoSyncPartialFailure": "काही कनेक्शनसाठी स्वयं-समक्रमण अद्ययावत केले, परंतु सर्वांसाठी नाही", + "clearAllModels": "सर्व मॉडेल साफ करा", + "clearAllModelsConfirm": "तुम्हाला या प्रदात्याची सर्व मॉडेल काढून टाकायची आहेत याची खात्री आहे का? ही क्रिया पूर्ववत करता येणार नाही.", + "clearAllModelsSuccess": "सर्व मॉडेल साफ केली", + "clearAllModelsFailed": "मॉडेल साफ करण्यात अयशस्वी", + "addConnectionToImport": "आयात सक्षम करण्यासाठी कनेक्शन जोडा.", + "noModelsConfigured": "कोणतीही मॉडेल कॉन्फिगर केलेली नाहीत", + "connectionCount": "{count} कनेक्शन", + "fetchingModels": "उपलब्ध मॉडेल आणत आहे...", + "failedFetchModels": "मॉडेल आणण्यात अयशस्वी", "noFreeModelsFound": "या प्रदात्यासाठी कोणतेही विनामूल्य मॉडेल्स आढळले नाहीत — काहीही आयात केले नाही.", "fetchModelsSuccess": "{count} नवीन मॉडेल्स आढळले", "fetchModelsFailed": "मॉडेल्स आपोआप आणता आले नाहीत (तुम्ही सेटिंग्जमधून पुन्हा प्रयत्न करू शकता)", - "noModelsFound": "No models found", - "importFailed": "Import failed", - "noNewModelsAdded": "No new models were added.", + "noModelsFound": "कोणतीही मॉडेल आढळली नाहीत", + "importFailed": "आयात अयशस्वी", + "noNewModelsAdded": "कोणतीही नवीन मॉडेल जोडली गेली नाहीत.", "adding": "Adding...", - "close": "Close", - "importingModelsTitle": "Importing Models", - "copyModel": "Copy model", - "filterModels": "Filter models...", + "close": "बंद करा", + "importingModelsTitle": "मॉडेल आयात करत आहे", + "copyModel": "मॉडेल कॉपी करा", + "filterModels": "मॉडेल फिल्टर करा...", "testAllRateLimited": "दर मर्यादा गाठली, लवकर थांबवले", "hideFailedAuto": "अयशस्वी मॉडेल्स आपोआप लपवा", - "selectAllModels": "Select all", + "selectAllModels": "सर्व निवडा", "hideAllModels": "सर्व लपवा", - "modelsActive": "Active", - "showModel": "Show model", - "hideModel": "Hide model", - "removeModel": "Remove model", - "rateLimitProtected": "Protected", - "rateLimitUnprotected": "Unprotected", + "modelsActive": "सक्रिय", + "showModel": "मॉडेल दाखवा", + "hideModel": "मॉडेल लपवा", + "removeModel": "मॉडेल काढा", + "rateLimitProtected": "संरक्षित", + "rateLimitUnprotected": "असंरक्षित", "providerQuotaShort": "कोटा", "hideConnectionFromProviderQuota": "हे खाते Provider Quota मधून लपवा", "showConnectionInProviderQuota": "हे खाते Provider Quota मध्ये दाखवा", "quotaVisibilityUpdateFailed": "Provider Quota दृश्यमानता अपडेट करण्यात अयशस्वी", - "enableRateLimitProtection": "Click to enable rate limit protection", - "disableRateLimitProtection": "Click to disable rate limit protection", + "enableRateLimitProtection": "दरमर्यादा संरक्षण सुरू करण्यासाठी क्लिक करा", + "disableRateLimitProtection": "दर मर्यादा संरक्षण अक्षम करण्यासाठी क्लिक करा", "testAllProgress": "{done}/{total} चाचणी केली", "testAllFailedHidden": "{count} अयशस्वी मॉडेल्स लपवले आहेत", "testAllDone": "सर्व मॉडेल्स तपासले", - "productionKey": "Production Key", - "enterNewApiKey": "Enter new API key", + "productionKey": "प्रॉडक्शन की", + "enterNewApiKey": "नवीन API की प्रविष्ट करा", "codexApplyModalTitle": "स्थानिक कोडेक्सवर अर्ज करा", "codexApplyTargetLabel": "लक्ष्य मार्ग", "codexApplyBackupLabel": "बॅकअप", @@ -5386,77 +5389,77 @@ "bulkAddFormatHint": "प्रति ओळ एक की. स्वरूप: नाव|apiKey किंवा फक्त apiKey (अनुक्रमणिका द्वारे स्वयं-नाम).", "bulkValidateKeys": "जतन करण्यापूर्वी प्रत्येक की सत्यापित करा (हळू)", "bulkAddAllKeys": "सर्व की जोडा", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", - "optional": "Optional", + "bulkAddedCount": "{count, plural, one {# की जोडली} other {# की जोडल्या}}", + "bulkFailedCount": "{count, plural, one {# अयशस्वी} other {# अयशस्वी}}", + "optional": "पर्यायी", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", "compatibleDefaultModelLabel": "डीफॉल्ट मॉडेल", "compatibleDefaultModelHint": "तुमचा सुसंगत एंडपॉईंट ज्याप्रमाणे मॉडेल ID ची अपेक्षा करतो तसाच तो प्रविष्ट करा. हे मॉडेल कनेक्शन डीफॉल्ट म्हणून सेव्ह केले जाईल.", - "failedImportModels": "Failed to import models", - "noModelsReturnedFromEndpoint": "No models returned from /models endpoint.", - "importingModelsProgress": "Importing {current} of {total} models...", - "foundModelsStartingImport": "Found {count} models. Starting import...", - "importingModelById": "Importing {modelId}...", - "importSuccessCount": "Successfully imported {count, plural, one {# model} other {# models}}!", - "noNewModelsAddedExisting": "No new models were added (all already exist).", - "importDoneCount": "✓ Done! {count, plural, one {# model imported.} other {# models imported.}}", - "unexpectedErrorOccurred": "An unexpected error occurred", + "failedImportModels": "मॉडेल आयात करण्यात अयशस्वी", + "noModelsReturnedFromEndpoint": "/models एंडपॉइंटवरून कोणतीही मॉडेल मिळाली नाहीत.", + "importingModelsProgress": "{total} पैकी {current} मॉडेल आयात करत आहे...", + "foundModelsStartingImport": "{count} मॉडेल सापडली. आयात सुरू करत आहे...", + "importingModelById": "{modelId} आयात करत आहे...", + "importSuccessCount": "{count, plural, one {# मॉडेल} other {# मॉडेल}} यशस्वीरीत्या आयात केली!", + "noNewModelsAddedExisting": "कोणतीही नवीन मॉडेल जोडली गेली नाहीत (सर्व आधीपासूनच अस्तित्वात आहेत).", + "importDoneCount": "✓ पूर्ण झाले! {count, plural, one {# मॉडेल आयात केले.} other {# मॉडेल आयात केली.}}", + "unexpectedErrorOccurred": "एक अनपेक्षित त्रुटी आली", "getApiKey": "API की मिळवा", "getApiKeyDescription": "API कीसाठी नोंदणी करा किंवा साइन अप करा", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# कनेक्शन} other {# कनेक्शन्स}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", - "add": "Add", - "edit": "Edit", - "delete": "Delete", + "add": "जोडा", + "edit": "संपादित करा", + "delete": "हटवा", "anthropic": "Anthropic", "openai": "OpenAI", - "singleConnectionPerCompatible": "Only one connection is allowed per compatible node. Add another node if you need more connections.", - "connections": "Connections", - "providerProxyTitleConfigured": "Provider proxy: {host}", - "configured": "configured", - "providerProxyConfigureHint": "Configure proxy for all connections of this provider", - "providerProxy": "Provider Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", - "noConnectionsYet": "No connections yet", - "addFirstConnectionHint": "Add your first connection to get started", - "addConnection": "Add Connection", - "availableModels": "Available Models", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", - "pageAutoRefresh": "Page will refresh automatically...", - "statusDisabled": "disabled", - "statusConnected": "connected", - "statusRuntimeIssue": "runtime issue", - "statusAuthFailed": "auth failed", - "statusRateLimited": "rate limited", - "statusNetworkIssue": "network issue", - "statusTestUnsupported": "test unsupported", - "statusUnavailable": "unavailable", - "statusFailed": "failed", - "statusError": "error", - "oauthAccount": "OAuth Account", - "errorTypeRuntime": "Local runtime", - "errorTypeUpstreamAuth": "Upstream auth", - "errorTypeMissingCredential": "Missing credential", - "errorTypeRefreshFailed": "Refresh failed", - "errorTypeTokenExpired": "Token expired", - "errorTypeRateLimited": "Rate limited", - "errorTypeUpstreamUnavailable": "Upstream unavailable", - "errorTypeNetworkError": "Network error", - "errorTypeTestUnsupported": "Test unsupported", - "errorTypeUpstreamError": "Upstream error", + "singleConnectionPerCompatible": "प्रत्येक सुसंगत नोडसाठी फक्त एक कनेक्शन अनुमत आहे. अधिक कनेक्शन्सची आवश्यकता असल्यास आणखी एक नोड जोडा.", + "connections": "कनेक्शन्स", + "providerProxyTitleConfigured": "प्रदाता प्रॉक्सी: {host}", + "configured": "कॉन्फिगर केलेले", + "providerProxyConfigureHint": "या प्रदात्याच्या सर्व कनेक्शन्ससाठी प्रॉक्सी कॉन्फिगर करा", + "providerProxy": "प्रदाता प्रॉक्सी", + "repairEnv": "env दुरुस्त करा", + "repairEnvWorking": "दुरुस्त करत आहे...", + "repairEnvHint": "विद्यमान मूल्ये ओव्हरराइट न करता गहाळ OAuth डीफॉल्ट्स .env मध्ये पुनर्संचयित करा.", + "repairEnvSuccess": "OAuth डीफॉल्ट्स पुनर्संचयित केले", + "repairEnvFailed": ".env दुरुस्त करण्यात अयशस्वी", + "noConnectionsYet": "अद्याप कोणतीही कनेक्शन्स नाहीत", + "addFirstConnectionHint": "सुरुवात करण्यासाठी तुमचे पहिले कनेक्शन जोडा", + "addConnection": "कनेक्शन जोडा", + "availableModels": "उपलब्ध मॉडेल", + "builtInModels": "अंगभूत मॉडेल", + "builtInModelsHint": "या प्रदात्यासाठी रजिस्ट्रीमधील मॉडेल. सुसंगतता पर्याय सेट करण्यासाठी पेन्सिल वापरा.", + "pageAutoRefresh": "पृष्ठ आपोआप रीफ्रेश होईल...", + "statusDisabled": "अक्षम", + "statusConnected": "कनेक्ट केलेले", + "statusRuntimeIssue": "रनटाइम समस्या", + "statusAuthFailed": "प्रमाणीकरण अयशस्वी", + "statusRateLimited": "दर मर्यादित केला", + "statusNetworkIssue": "नेटवर्क समस्या", + "statusTestUnsupported": "चाचणी समर्थित नाही", + "statusUnavailable": "अनुपलब्ध", + "statusFailed": "अयशस्वी", + "statusError": "त्रुटी", + "oauthAccount": "OAuth खाते", + "errorTypeRuntime": "स्थानिक रनटाइम", + "errorTypeUpstreamAuth": "अपस्ट्रीम प्रमाणीकरण", + "errorTypeMissingCredential": "क्रेडेन्शियल उपलब्ध नाही", + "errorTypeRefreshFailed": "रीफ्रेश अयशस्वी", + "errorTypeTokenExpired": "टोकनची मुदत संपली", + "errorTypeRateLimited": "दर मर्यादित केला", + "errorTypeUpstreamUnavailable": "अपस्ट्रीम अनुपलब्ध", + "errorTypeNetworkError": "नेटवर्क त्रुटी", + "errorTypeTestUnsupported": "चाचणी समर्थित नाही", + "errorTypeUpstreamError": "अपस्ट्रीम त्रुटी", "errorTypeCreditsExhausted": "क्रेडिट्स शिल्लक नाहीत", "errorTypeBanned": "403 प्रतिबंधित", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", - "proxySourceKey": "Key", + "proxySourceGlobal": "जागतिक", + "proxySourceProvider": "प्रदाता", + "proxySourceKey": "की", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "प्रॉक्सी सुरू", "proxyOff": "थेट (प्रॉक्सी बायपास करा)", @@ -5468,31 +5471,31 @@ "perKeyProxyDisabledTitle": "या प्रदात्यासाठी प्रति-की प्रॉक्सी असाइनमेंट अक्षम केले आहे", "autoPriority": "Auto: {priority}", "proxy": "Proxy", - "retestAuthentication": "Retest authentication", - "retest": "Retest", - "disableConnection": "Disable connection", - "enableConnection": "Enable connection", - "reauthenticateConnection": "Re-authenticate this connection", - "proxyConfig": "Proxy config", - "aliasExistsAlert": "Alias \"{alias}\" already exists. Please use a different model or edit existing alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter supports any model. Add models and create aliases for quick access.", - "modelIdFromOpenRouter": "Model ID (from OpenRouter)", + "retestAuthentication": "प्रमाणीकरणाची पुन्हा चाचणी करा", + "retest": "पुन्हा चाचणी करा", + "disableConnection": "कनेक्शन अक्षम करा", + "enableConnection": "कनेक्शन सक्षम करा", + "reauthenticateConnection": "या कनेक्शनसाठी पुन्हा प्रमाणीकरण करा", + "proxyConfig": "प्रॉक्सी कॉन्फिगरेशन", + "aliasExistsAlert": "\"{alias}\" हे उपनाव आधीपासून अस्तित्वात आहे. कृपया वेगळे मॉडेल वापरा किंवा विद्यमान उपनाव संपादित करा.", + "aliasInputPlaceholder": "उपनावाचे नाव", + "clickToSetAlias": "उपनाव सेट करण्यासाठी क्लिक करा", + "clickToEditAlias": "उपनाव: {alias} (संपादित करण्यासाठी क्लिक करा)", + "openRouterAnyModelHint": "OpenRouter कोणत्याही मॉडेलला समर्थन देते. द्रुत प्रवेशासाठी मॉडेल जोडा आणि उपनावे तयार करा.", + "modelIdFromOpenRouter": "मॉडेल ID (OpenRouter कडून)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", - "customModels": "Custom Models", - "customModelsHint": "Add model IDs not in the default list. These will be available for routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "customModels": "सानुकूल मॉडेल्स", + "customModelsHint": "डीफॉल्ट सूचीमध्ये नसलेले मॉडेल ID जोडा. ते रूटिंगसाठी उपलब्ध होतील.", + "normalizeToolCallIdLabel": "टूल कॉल ID 9 वर्णांमध्ये प्रमाणित करा (उदा. Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responses ची डेव्हलपर भूमिका कायम ठेवा (सिस्टमशी मॅप करू नका)", + "compatAdjustmentsTitle": "सुसंगतता", + "compatButtonLabel": "सुसंगतता", + "compatToolIdShort": "टूल ID 9", + "compatDeveloperShort": "डेव्हलपर भूमिका", + "compatDoNotPreserveDeveloper": "डेव्हलपर भूमिका जतन करू नका", + "compatBadgeNoPreserve": "जतन करू नका", + "compatProtocolLabel": "क्लायंट विनंती प्रोटोकॉल", + "compatProtocolHint": "OmniRoute ला हा विनंती प्रकार (OpenAI Chat, Responses API किंवा Anthropic Messages) आढळल्यावर हे पर्याय लागू होतात.", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,84 +5537,84 @@ "interceptFetchHint": "मूळ web_fetch टूल कॉल्स OmniRoute च्या /v1/web/fetch वर पुन्हा लिहा.", "interceptionLoadError": "इंटरसेप्शन सेटिंग्ज लोड करण्यात अयशस्वी: {error}", "interceptionSaveError": "इंटरसेप्शन सेटिंग्ज सेव्ह करण्यात अयशस्वी: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", - "perModelQuotaLabel": "Per-Model Quota", - "perModelQuotaDescription": "When enabled, 429/404 errors only lock the specific model, not the entire connection. Use for providers with per-model rate limits (e.g., ModelScope).", + "ccAliasSectionTitle": "Claude Code मध्ये दर्शवा (claude/…)", + "ccAliasSectionHint": "या प्रदात्याची मॉडेल्स claude/<provider>/<model> मिरर आयडी अंतर्गत उपलब्ध म्हणून दर्शवा, जेणेकरून Claude Code चे गेटवे मॉडेल डिस्कव्हरी त्यांची सूची दाखवू शकेल. डीफॉल्टनुसार बंद — हे सुरू केल्यास सर्व क्लायंटसाठी कॅटलॉग नोंदी दुप्पट होतात.", + "ccAliasProviderLevelLabel": "प्रदात्याचे डीफॉल्ट", + "ccAliasModelOverridesLabel": "प्रति-मॉडेल ओव्हरराइड्स", + "ccAliasModelOverrideAriaLabel": "{modelId} साठी ओव्हरराइड", + "ccAliasStateInherit": "वारसा घ्या", + "ccAliasStateOn": "चालू", + "ccAliasStateOff": "बंद", + "ccAliasAddModelPlaceholder": "मॉडेल आयडी (उदा. gpt-4o)", + "ccAliasAddModelButton": "ओव्हरराइड जोडा", + "ccAliasLoadError": "डिस्कव्हरी-अलियास सेटिंग्ज लोड करण्यात अयशस्वी: {error}", + "ccAliasSaveError": "डिस्कव्हरी-अलियास सेटिंग जतन करण्यात अयशस्वी: {error}", + "compatUpstreamHeadersLabel": "अतिरिक्त अपस्ट्रीम हेडर्स", + "compatUpstreamHeadersHint": "उच्च-विशेषाधिकार सेटिंग — प्रदात्याची API क्रेडेन्शियल्स संपादित करण्याइतकीच विश्वासाची पातळी; फक्त विश्वासू प्रशासकांनीच ती वापरावी. OmniRoute ने प्रदात्याच्या API कीमधून प्रमाणीकरण जोडल्यानंतर हे विलीन केले जाते. सानुकूल हेडरचे नाव एखाद्या विद्यमान हेडरसारखेच असल्यास (उदा. Authorization), तुमचे मूल्य स्वयं-निर्मित हेडर पूर्णपणे बदलते (Bearer टोकनसह) — अपस्ट्रीमला फक्त तुम्ही टाइप केलेलेच दिसते, सेटिंग्जमधील की नाही. चुकीच्या कॉन्फिगरेशनमुळे 401 त्रुटी किंवा अपस्ट्रीम प्रमाणीकरण बिघडू शकते. प्रत्येक हेडरसाठी एक ओळ (उदा. काही गेटवेंसाठी अतिरिक्त Authentication). पूर्वावलोकनासाठी मूल्यावर होव्हर करा किंवा फोकस करा. फोकस हटवल्यावर, बाहेर क्लिक केल्यावर किंवा हे पॅनेल बंद केल्यावर जतन होते.", + "compatUpstreamHeaderName": "हेडरचे नाव", + "compatUpstreamHeaderValue": "मूल्य", + "compatUpstreamAddRow": "हेडर जोडा", + "compatUpstreamRemoveRow": "ओळ काढा", + "compatBadgeUpstreamHeaders": "हेडर्स", + "perModelQuotaLabel": "प्रति-मॉडेल कोटा", + "perModelQuotaDescription": "हे सुरू असताना, 429/404 त्रुटी संपूर्ण कनेक्शनऐवजी फक्त संबंधित मॉडेल लॉक करतात. प्रति-मॉडेल दरमर्यादा असलेल्या प्रदात्यांसाठी वापरा (उदा., ModelScope).", "importFreeModelsOnlyLabel": "केवळ मोफत मॉडेल्स इंपोर्ट करा", "importFreeModelsOnlyHint": "सक्षम केल्यावर, केवळ या प्रदात्याचे मोफत मॉडेल्स इंपोर्ट केले जातात. सशुल्क मॉडेल्स वगळले जातात.", - "perModelQuotaToggle": "Per-Model Quota Toggle", - "modelId": "Model ID", - "customModelPlaceholder": "e.g. gpt-4.5-turbo", - "loading": "Loading...", - "removeCustomModel": "Remove custom model", - "noCustomModels": "No custom models added yet.", - "allSuggestedAliasesExist": "All suggested aliases already exist. Please choose a different model or remove conflicting aliases.", - "failedSaveCustomModel": "Failed to save custom model", - "modelAddedSuccess": "Model {modelId} added successfully", - "failedAddModelTryAgain": "Failed to add model. Please try again.", - "failedSaveImportedModel": "Failed to save imported model to custom database", - "failedImportModelsTryAgain": "Failed to import models. Please try again.", - "failedRemoveModelFromDatabase": "Failed to remove model from database", - "modelRemovedSuccess": "Model removed successfully", - "failedDeleteModelTryAgain": "Failed to delete model. Please try again.", - "compatibleModelsDescription": "Add {type}-compatible models manually or import them from the /models endpoint.", + "perModelQuotaToggle": "प्रति-मॉडेल कोटा टॉगल", + "modelId": "मॉडेल आयडी", + "customModelPlaceholder": "उदा. gpt-4.5-turbo", + "loading": "लोड होत आहे...", + "removeCustomModel": "सानुकूल मॉडेल काढा", + "noCustomModels": "अद्याप कोणतेही सानुकूल मॉडेल जोडलेले नाही.", + "allSuggestedAliasesExist": "सर्व सुचवलेले अलियास आधीच अस्तित्वात आहेत. कृपया वेगळे मॉडेल निवडा किंवा परस्परविरोधी अलियास काढा.", + "failedSaveCustomModel": "सानुकूल मॉडेल जतन करण्यात अयशस्वी", + "modelAddedSuccess": "मॉडेल {modelId} यशस्वीरित्या जोडले", + "failedAddModelTryAgain": "मॉडेल जोडण्यात अयशस्वी. कृपया पुन्हा प्रयत्न करा.", + "failedSaveImportedModel": "आयात केलेले मॉडेल सानुकूल डेटाबेसमध्ये जतन करण्यात अयशस्वी", + "failedImportModelsTryAgain": "मॉडेल्स आयात करण्यात अयशस्वी. कृपया पुन्हा प्रयत्न करा.", + "failedRemoveModelFromDatabase": "डेटाबेसमधून मॉडेल काढण्यात अयशस्वी", + "modelRemovedSuccess": "मॉडेल यशस्वीरित्या काढले", + "failedDeleteModelTryAgain": "मॉडेल हटवण्यात अयशस्वी. कृपया पुन्हा प्रयत्न करा.", + "compatibleModelsDescription": "{type}-सुसंगत मॉडेल्स व्यक्तिचलितपणे जोडा किंवा /models एंडपॉइंटवरून आयात करा.", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API key validation failed. Please check your key and try again.", - "addProviderApiKeyTitle": "Add {provider} API Key", - "checking": "Checking...", - "check": "Check", - "valid": "Valid", - "invalid": "Invalid", - "creating": "Creating...", - "validationChecksAnthropicCompatible": "Validation checks {provider} by verifying the API key.", - "validationChecksOpenAiCompatible": "Validation checks {provider} via /models on your base URL.", - "priorityLabel": "Priority", - "saving": "Saving...", - "save": "Save", - "editConnection": "Edit Connection", - "accountName": "Account name", + "apiKeyValidationFailed": "API की पडताळणी अयशस्वी. कृपया तुमची की तपासा आणि पुन्हा प्रयत्न करा.", + "addProviderApiKeyTitle": "{provider} API की जोडा", + "checking": "तपासत आहे...", + "check": "तपासा", + "valid": "वैध", + "invalid": "अवैध", + "creating": "तयार करत आहे...", + "validationChecksAnthropicCompatible": "API कीची पडताळणी करून {provider} ची वैधता तपासली जाते.", + "validationChecksOpenAiCompatible": "तुमच्या बेस URL वरील /models द्वारे {provider} ची वैधता तपासली जाते.", + "priorityLabel": "प्राधान्य", + "saving": "जतन करत आहे...", + "save": "जतन करा", + "editConnection": "कनेक्शन संपादित करा", + "accountName": "खात्याचे नाव", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "स्थिती तपासणी (मिनिटे)", "healthCheckHint": "Proactive token refresh interval. 0 = disabled.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", - "failedTestConnection": "Failed to test connection", - "failed": "Failed", - "leaveBlankKeepCurrentApiKey": "Leave blank to keep the current API key.", - "editCompatibleTitle": "Edit {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", - "apiKeyForCheck": "API Key (for Check)", + "deselectAllModels": "सर्व निवड रद्द करा", + "modelsActiveCount": "{active}/{total} सक्रिय", + "noModelsMatch": "\"{filter}\" शी कोणतेही मॉडेल जुळत नाही", + "groupLabel": "पर्यावरण", + "groupPlaceholder": "उदा. eKaizen, वैयक्तिक", + "failedTestConnection": "कनेक्शनची चाचणी करण्यात अयशस्वी", + "failed": "अयशस्वी", + "leaveBlankKeepCurrentApiKey": "सध्याची API की कायम ठेवण्यासाठी रिक्त सोडा.", + "editCompatibleTitle": "{type} सुसंगत संपादित करा", + "compatibleBaseUrlHint": "तुमच्या {type}-सुसंगत API चा रूट URL. सानुकूल एंडपॉइंट पथांसाठी प्रगत सेटिंग्ज वापरा.", + "apiKeyForCheck": "API की (तपासणीसाठी)", "testModelIdLabel": "मॉडेल आयडी (पर्यायी)", "testModelIdPlaceholder": "उदा. my-model-id", "testModelIdHint": "प्रदात्याकडे /models एंडपॉइंट नसल्यास, त्याऐवजी /chat/completions द्वारे प्रमाणित करण्यासाठी मॉडेल आयडी प्रविष्ट करा.", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "{type} सुसंगत (Prod)", + "tokenRefreshed": "टोकन यशस्वीरित्या रिफ्रेश झाले", + "tokenRefreshFailed": "टोकन रिफ्रेश अयशस्वी", "cursorSessionUnchanged": "सत्र आधीच चालू आहे", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "प्रमाणीकरण लागू करा", + "exportCodexAuthFile": "प्रमाणीकरण निर्यात करा", "applyClaudeAuthLocal": "प्रमाणीकरण लागू करा", "exportClaudeAuthFile": "प्रमाणीकरण निर्यात करा", "importClaudeAuth": "आयात प्रमाणीकरण", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} अयशस्वी", "codexImportBulkZipExtracting": "झिप काढत आहे...", "codexImportBulkZipError": "ZIP काढण्यात अयशस्वी", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "प्रगत सेटिंग्ज", + "chatPathLabel": "चॅट एंडपॉइंट पथ", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "अप्रमाणित API असलेल्या प्रदात्यांसाठी सानुकूल चॅट पथ (उदा. /v4/chat/completions)", + "modelsPathLabel": "मॉडेल्स एंडपॉइंट पथ", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "पडताळणीसाठी सानुकूल मॉडेल्स पथ (उदा. /v4/models)", "clientIdentityLabel": "क्लायंट ओळख", "clientIdentityHint": "पर्यायी. सुसंगत गेटवे ज्यांना आवश्यकता आहे त्यांच्यासाठी ज्ञात CLI शी जुळणारे क्लायंट फिंगरप्रिंट हेडर (उदा. User-Agent) जोडते.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "निष्क्रिय केले (मॅन्युअल)", + "statusBanned": "प्रतिबंधित / Sandbox उल्लंघन", + "statusCreditsExhausted": "अपुरा शिल्लक निधी / कोटा संपला", + "showEmails": "सर्व ईमेल दाखवा", + "hideEmails": "सर्व ईमेल लपवा", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "आणखी एक API key जोडा किंवा एकापेक्षा जास्त keys पेस्ट करा", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "एग्रीगेटर गेटवे", "enterpriseCloud": "एंटरप्राइझ आणि क्लाउड", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API स्वरूपाचे लेबल", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API प्रदेश चीन", + "apiRegionHint": "API प्रदेशाची सूचना", + "apiRegionInternational": "API प्रदेश आंतरराष्ट्रीय", + "apiRegionLabel": "API प्रदेशाचे लेबल", + "apikey": "API key", + "audio": "ऑडिओ", + "audioProvidersHeading": "ऑडिओ प्रदात्यांचे शीर्षक", "cloudAgentProviders": "क्लाउड एजंट प्रदाते", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "ऑडिओचे संक्षिप्त लेबल", + "azureOpenAiBaseUrlHint": "Azure Open AI Base URL सूचना", + "bailianBaseUrlHint": "Bailian Base URL सूचना", + "claudeWebCookieHint": "claude.ai उघडा → DevTools → Application → Cookies → claude.ai, आणि 'sessionKey' मूल्य कॉपी करा. Cloudflare साठी cf_clearance, __cf_bm, _cfuvid देखील आवश्यक आहेत.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web Cookie सूचना", + "blackboxWebCookiePlaceholder": "Blackbox Web Cookie प्लेसहोल्डर", "t3ChatWebCookieHint": "t3.chat → DevTools → Application → Local Storage → https://t3.chat उघडा, 'convex-session-id' कॉपी करा. नंतर DevTools → नेटवर्क उघडा, कोणत्याही चॅट विनंतीवरून संपूर्ण कुकी शीर्षलेख कॉपी करा. खालील फील्डमध्ये दोन्ही मूल्ये पेस्ट करा.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web Cookie सूचना", "blockClaudeExtraUsageDescription": "सक्षम केल्यास, OmniRoute या Claude कनेक्शनला अनुपलब्ध म्हणून चिन्हांकित करते जेव्हा वापर API क्यू केलेल्या अतिरिक्त वापराची माहिती देते, त्यामुळे फॉल्बॅक दुसऱ्या कनेक्शनवर स्विच करतो, पे-एझ-यू-गो अतिरिक्त बिलिंग चालू ठेवण्याऐवजी.", "blockClaudeExtraUsageLabel": "अतिरिक्त Claude वापर थांबवा", "disableCoolingDescription": "अस्थायी कूलडाउन वगळा जेणेकरून पुनर्प्राप्त करण्यायोग्य त्रुटींनंतरही हे कनेक्शन पात्र राहील (प्रतिबंधित/कालबाह्य यांसारख्या अंतिम स्थिती अजूनही लागू होतात).", "disableCoolingLabel": "या कनेक्शनसाठी कूलडाउन अक्षम करा", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 key जोडली} other {# keys जोडल्या}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 डुप्लिकेट वगळली} other {# डुप्लिकेट्स वगळली}}", + "bulkPasteHint": "प्रत्येक ओळीवर एक API key पेस्ट करा. रिकाम्या ओळींकडे दुर्लक्ष केले जाते आणि डुप्लिकेट keys वगळल्या जातात.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "लपविलेले Claude विचारप्रवाह आवश्यक असलेल्या CC Compatible upstreams साठी redact-thinking beta header जोडते.", + "ccCompatibleRedactThinkingLabel": "redact-thinking beta सक्षम करा", + "ccCompatibleSummarizeThinkingDescription": "समर्थित Claude मॉडेल्सना दृश्यमान thinking deltas प्रवाहित करता यावेत म्हणून CC Compatible thinking विनंत्यांमध्ये `display: \"summarized\"` जोडते.", + "ccCompatibleSummarizeThinkingLabel": "सारांशित विचारांचे प्रदर्शन सक्षम करा", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "उपलब्ध असल्यास Codex विनंत्यांसाठी प्राधान्य सेवा स्तर वापरा.", + "codexFastServiceTierLabel": "Codex जलद सेवा स्तर", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header नावाचा प्लेसहोल्डर", + "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header मूल्याचा प्लेसहोल्डर", + "compatible": "सुसंगत", + "configuredCount": "कॉन्फिगर केलेली संख्या", + "consoleApiKeyOracleHint": "Console API Key Oracle सूचना", + "consoleApiKeyOracleLabel": "Console API Key Oracle लेबल", + "consoleApiKeyOraclePlaceholder": "कन्सोल API की Oracle प्लेसहोल्डर", + "newApiUserIdLabel": "New-API वापरकर्ता आयडी", + "newApiUserIdPlaceholder": "उदा. 12345", + "newApiUserIdHint": "AgentRouter चे New-Api-User हेडर मूल्य, कोटा शिल्लक मिळवण्यासाठी कन्सोल API कीसोबत वापरले जाते.", "newApiAggregatorToggleLabel": "एग्रीगेटर गेटवे", "newApiAggregatorToggleHint": "New-API / One-API / Sub2API समाकलन नोडसाठी संतुलन शोध सक्षम करा. डॅशबोर्ड संतुलन बॅज दर्शवेल आणि कोटा-पूर्व उड्डाण मार्गक्रमण थकलेले खाते वगळेल.", "newApiAggregatorConsoleApiKeyHint": "संविधानकर्ता /api/user/self अंतिम बिंदूसाठी प्रणाली प्रवेश टोकन. राउटिंग API की नाही.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "नवीन-एपीआय / वन-एपीआय / सब2एपीआय संकलक सुसंगत नोडसाठी संतुलन शोध सक्षम करा", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "सानुकूल वापरकर्ता एजंटसाठी सूचना", + "customUserAgentLabel": "सानुकूल वापरकर्ता एजंट लेबल", + "databricksBaseUrlHint": "Databricks बेस URL साठी सूचना", + "defaultThinkingStrengthHint": "विनंतीमध्ये तर्काचा प्रयत्न निर्दिष्ट केलेला नसताना वापरले जाते.", + "defaultThinkingStrengthLabel": "डीफॉल्ट विचारशक्ती", + "deleteAllExtraApiKeys": "सर्व हटवा", + "excludedModelsHint": "वगळलेल्या मॉडेल्ससाठी सूचना", + "excludedModelsLabel": "वगळलेल्या मॉडेल्सचे लेबल", + "excludedModelsPlaceholder": "वगळलेल्या मॉडेल्सचा प्लेसहोल्डर", + "expirationBannerExpired": "कालबाह्यता बॅनर: कालबाह्य", + "expirationBannerExpiredDesc": "कालबाह्यता बॅनर: कालबाह्य झाल्याचे वर्णन", + "expirationBannerExpiringSoon": "कालबाह्यता बॅनर: लवकरच कालबाह्य होणार", + "expirationBannerExpiringSoonDesc": "कालबाह्यता बॅनर: लवकरच कालबाह्य होणार असल्याचे वर्णन", + "extraApiKeyMasked": "की {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "अतिरिक्त API कींसाठी सूचना", + "extraApiKeysLabel": "अतिरिक्त API कींचे लेबल", + "apiKeyHealthLabel": "API कीची स्थिती", + "apiKeyStatusActive": "सक्रिय", + "apiKeyStatusWarning": "चेतावणी ({count} अपयश)", + "apiKeyStatusInvalid": "अवैध", + "primaryKey": "प्राथमिक की", + "apiKeyInvalidAlert": "कनेक्शनमधील प्रमाणीकरण अपयशांमुळे {count} API की अवैध म्हणून चिन्हांकित केल्या आहेत: {connections}. रोटेशनमध्ये त्या वगळल्या जातील. पुनरावलोकन करण्यासाठी क्लिक करा.", + "apiKeyInvalidAlertTitle": "API की स्थितीचा इशारा", + "apiKeyWarningAlert": "कनेक्शनमधील वाढलेल्या अपयश दरामुळे {count} API की चेतावणी स्थितीत आहेत: {connections}. रोटेशनमधील समस्या टाळण्यासाठी पुनरावलोकन करा.", + "apiKeyWarningAlertTitle": "API की चेतावणी", + "googlePseInfo": "Google PSE माहिती", "antigravityProjectIdHint": "अँटीग्रॅव्हिटी क्लाउड कोड विनंत्यांसाठी पर्यायी ओव्हरराइड. Google OAuth दरम्यान शोधलेला प्रकल्प वापरण्यासाठी रिक्त सोडा.", "antigravityClientProfileLabel": "क्लायंट प्रोफाइल", "antigravityClientProfileHint": "OmniRoute API ला कोणती Antigravity क्लायंट ओळख सादर करते ते निवडा.", @@ -5865,47 +5868,47 @@ "tierFast": "फास्ट", "antigravityProjectIdLabel": "Google क्लाउड प्रोजेक्ट आयडी", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok वेब कुकी प्लेसहोल्डर", + "herokuBaseUrlHint": "Heroku बेस URL साठी सूचना", + "hideEmail": "ईमेल लपवा", + "imageProviders": "प्रतिमा प्रदाते", "videoProviders": "व्हिडिओ निर्मिती", "embeddingRerankProviders": "एम्बेडिंग आणि रँक", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "प्रतिमांचे संक्षिप्त लेबल", + "llmProviders": "LLM प्रदाते", + "localProviderApiKeyOptionalHint": "स्थानिक प्रदात्याच्या पर्यायी API कीसाठी सूचना", + "localProviderBaseUrlHint": "स्थानिक प्रदात्याच्या बेस URL साठी सूचना", + "localProviders": "स्थानिक प्रदाते", + "maxConcurrentWholeNumberError": "कमाल समवर्ती पूर्णांक त्रुटी", "m365TierLabel": "Copilot स्तर", "m365TierHint": "हे कनेक्शन कोणते Microsoft 365 Copilot पृष्ठभाग वापरते ते निवडा. Individual हे डीफॉल्ट ग्राहक BizChat आहे; Education आणि Enterprise (work) त्यांच्या टेनंट पृष्ठभागांची निवड करतात.", "m365TierIndividualOption": "Individual (डीफॉल्ट)", - "m365TierEduOption": "Education", - "m365TierEnterpriseOption": "Enterprise / Work", + "m365TierEduOption": "शिक्षण", + "m365TierEnterpriseOption": "एंटरप्राइझ / कार्य", "tierOverrideLabel": "स्तर ओव्हरराइड", "tierOverrideAuto": "ऑटो (राउटिंग ठरवते)", "tierOverrideFree": "विनामूल्य", "tierOverrideCheap": "स्वस्त", "tierOverridePremium": "प्रीमियम", "tierOverrideHelpText": "OmniRoute ला मॉडेलच्या किमतीवरून अंदाज लावू देण्याऐवजी या प्रदात्याला राउटिंग स्तरावर पिन करा.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark वेब कुकी सूचना", + "museSparkWebCookiePlaceholder": "Muse Spark वेब कुकी प्लेसहोल्डर", + "oauth": "OAuth", + "openCliTools": "CLI साधने उघडा", + "openSettings": "सेटिंग्ज उघडा", + "openaiResponsesStoreDescription": "सुसंगत Responses API विनंत्यांना संग्रहित प्रतिसाद स्थिती कायम ठेवण्याची परवानगी द्या.", + "openaiResponsesStoreLabel": "OpenAI Responses संग्रह", + "perplexitySearchSharedKeyInfo": "Perplexity Search सामायिक की माहिती", + "perplexityWebCookieHint": "Perplexity वेब कुकी सूचना", + "perplexityWebCookiePlaceholder": "Perplexity वेब कुकी प्लेसहोल्डर", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "रेट लिमिट ओव्हरराइड्स", "rateLimitOverridesMaxConcurrentHint": "या कनेक्शनसाठी कमाल समवर्ती विनंत्या ओव्हरराइड. खाते-पातळीवरील मर्यादा ओव्हरराइड करते.", "rateLimitOverridesMaxConcurrentLabel": "कमाल समवर्ती (रेट लिमिट)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "दर-मर्यादा स्लॉटसाठी विनंती अयशस्वी होण्यापूर्वी प्रतीक्षा करू शकणारा कमाल वेळ (ms). केवळ या कनेक्शनसाठी जागतिक Resilience सेटिंग अधिलिखित करते.", + "rateLimitOverridesMaxWaitMsLabel": "कमाल रांग प्रतीक्षा (ms)", "rateLimitOverridesMinTimeHint": "विनंत्यांमधील किमान वेळ (ms). डीफॉल्ट रेट लिमिटर विलंब ओव्हरराइड करते.", "rateLimitOverridesMinTimeLabel": "किमान मध्यांतर (ms)", "rateLimitOverridesRpdHint": "या कनेक्शनसाठी दररोज कमाल विनंत्या. प्रदाता डीफॉल्ट ओव्हरराइड करते.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (टोकन्स/दिवस)", "rateLimitOverridesTpmHint": "या कनेक्शनसाठी प्रति मिनिट कमाल टोकन्स. प्रदाता डीफॉल्ट ओव्हरराइड करते.", "rateLimitOverridesTpmLabel": "TPM (टोकन्स/मिनिट)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", - "searchProviders": "Search Providers", + "refreshOauthTokenTitle": "OAuth टोकन रीफ्रेश करा", + "regionHint": "प्रदेश सूचना", + "regionLabel": "प्रदेश लेबल", + "removeThisKey": "ही की काढून टाका", + "routingTagsHint": "रूटिंग टॅग सूचना", + "routingTagsLabel": "रूटिंग टॅग लेबल", + "routingTagsPlaceholder": "रूटिंग टॅग प्लेसहोल्डर", + "search": "शोधा", + "searchEngineIdHint": "शोध इंजिन ID सूचना", + "searchEngineIdLabel": "शोध इंजिन ID लेबल", + "searchEngineIdRequired": "शोध इंजिन ID आवश्यक आहे", + "searchProvider": "शोध प्रदाता", + "searchProviderDesc": "शोध प्रदात्याचे वर्णन", + "searchProviders": "शोध प्रदाते", "searchByModel": "मॉडेलनुसार शोधा…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "शोध प्रदात्यांचे शीर्षक", + "searxngBaseUrlHint": "SearXNG बेस URL सूचना", + "searxngInfo": "SearXNG माहिती", + "sessionCookieLabel": "सत्र कुकी लेबल", + "showEmail": "ईमेल दाखवा", + "snowflakeBaseUrlHint": "Snowflake बेस URL सूचना", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "टॅग गट सूचना", + "tagGroupLabel": "टॅग गट लेबल", + "tagGroupPlaceholder": "टॅग गट प्लेसहोल्डर", + "testModel": "मॉडेलची चाचणी करा", + "testingModel": "मॉडेलची चाचणी करत आहे", "modelTestQuotaTooltip": "कोटा संपला — उद्या रीसेट होईल किंवा टॉप-अपची आवश्यकता आहे", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "टोकन कालबाह्य बॅज", + "tokenExpiredTitle": "टोकन कालबाह्य शीर्षक", + "tokenExpiresSoonTitle": "टोकन लवकरच कालबाह्य होईल हे शीर्षक", + "tokenShort": "टोकन संक्षिप्त", + "totalKeysRotating": "{count, plural, one {1 की रोटेट होत आहे} other {# की रोटेट होत आहेत}}", + "unhideModel": "मॉडेल पुन्हा दर्शवा", + "upstreamProxyProviders": "अपस्ट्रीम प्रॉक्सी प्रदाते", "validationModelIdHint": "API की सत्यापित करण्यासाठी वापरले जाणारे मॉडेल. प्रदात्याचे पहिले उपलब्ध मॉडेल वापरण्यासाठी रिकामे सोडा.", "validationModelIdLabel": "प्रमाणीकरण मॉडेल", "validationModelIdPlaceholder": "उदा. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "तुमचे Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) किंवा OAuth access_token पेस्ट करा", + "webCookieProviders": "वेब कुकी प्रदाते", + "weeklyShort": "साप्ताहिक संक्षिप्त", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo बेस URL सूचना", "globalCodexServiceMode": "ग्लोबल Codex सेवा मोड", "connect": "कनेक्ट करा", "manualApiKey": "मॅन्युअल API की", @@ -5975,9 +5978,9 @@ "zedImportDescription": "OS कीचेनमध्ये Zed IDE द्वारे स्टोअर केलेली AI प्रदाता क्रेडेंशियल्स (OpenAI, Anthropic, Google, Mistral, xAI) शोधा आणि त्यांना कनेक्शन्स म्हणून इम्पोर्ट करा. या मशीनवर Zed IDE इन्स्टॉल केलेले असणे आवश्यक आहे.", "zedImportButton": "Zed कडून आयात करा", "zedImportFailed": "Zed आयात अयशस्वी झाला", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed आयात सूचना", + "zedImportNetworkError": "Zed आयात नेटवर्क त्रुटी", + "zedImportNone": "Zed आयात नाही", "zedImportSuccess": "{providers} प्रदाता(s) साठी Zed कडून आयात केलेले {credentials} प्रमाणपत्र(s)", "zedImporting": "आयात करत आहे…", "zedNoCredentials": "कीचेनमध्ये कोणतीही Zed क्रेडेंशियल्स आढळली नाहीत", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5 सह 40+ मॉडेल्ससाठी सवलतीचा API प्रॉक्सी. https://freeaiapikey.com/dashboard वर तुमची API की मिळवा. बेस URL: https://freeaiapikey.com/v1.", "freemodel-dev": "https://freemodel.dev वर $300 विनामूल्य API क्रेडिट्स मिळवा — पेमेंट माहितीची आवश्यकता नाही. OpenAI-सुसंगत एंडपॉइंट. GPT-5.4 आणि GPT-5.5 मॉडेल्स उपलब्ध आहेत.", "friendliai": "सर्व्हरलेस इन्फरन्ससाठी विनामूल्य टियर — क्रेडिट कार्डची आवश्यकता नाही", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio द्वारे विनामूल्य स्तर; प्रत्येक मॉडेलचे कोटे आता प्रकाशित केले जात नाहीत (AI Studio मधील कोटा पृष्ठ तपासा) — क्रेडिट कार्ड आवश्यक नाही.", "gigachat": "API की सह GigaChat (Sber) कनेक्ट करा.", "gitlab": "सार्वजनिक Code Suggestions API साठी GitLab वैयक्तिक ॲक्सेस टोकन. gitlab.com न वापरताना सेल्फ-होस्टेड बेस URL कॉन्फिगर करा.", "gitlawb-gmi": "Gitlawb Opengateway डॅशबोर्डवरून तुमची API की मिळवा.", @@ -6184,7 +6187,7 @@ "glm-cn": "API की सह GLM Coding (China) कनेक्ट करा.", "glmt": "उच्च टोकन बजेट, थिंकिंग सक्षम आणि दीर्घ टाइमआउटसह प्रीसेट GLM प्रोफाइल.", "getgoapi": "API की सह GoAPI कनेक्ट करा.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "विनामूल्य योजना: प्रत्येक मॉडेलसाठी मर्यादा (प्रति चॅट मॉडेल 200K टोकन/दिवस; RPM/RPD साठी console.groq.com/docs/rate-limits पहा) — कोणतीही पेमेंट पद्धत नोंदवलेली नाही.", "haiper": "haiper.ai/haiper-api वर API की मिळवा", "heroku": "API की सह Heroku AI कनेक्ट करा.", "hcnsec": "api.hcnsec.cn वर API की मिळवा", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.ai वर API की तयार करा, नंतर ती येथे Bearer टोकन म्हणून पेस्ट करा. https://router.requesty.ai/v1 वर OpenAI-सुसंगत एंडपॉइंट आहे, ज्यामध्ये थेट /v1/models कॅटलॉग उपलब्ध आहे.", "runwayml": "Runway व्हिडिओ निर्मिती ही टास्क-आधारित आहे. OmniRoute हे text-to-video किंवा image-to-video जॉब्स सबमिट करते, /v1/tasks/[id] पोल करते आणि पूर्ण झालेल्या व्हिडिओ आउटपुटला पुन्हा OpenAI-सारख्या /v1/videos/generations प्रतिसादात सामान्य करते.", "sambanova": "साइनअपवर $5 मोफत क्रेडिट्स (30 दिवसांची वैधता), क्रेडिट कार्डची आवश्यकता नाही", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.cc येथे API की तयार करा, त्यानंतर ती Bearer टोकन म्हणून येथे पेस्ट करा. OpenAI-सुसंगत बेस URL: https://seekai.cc/v1.", "sap": "मॉडेल शोध AI_API_URL वरील /v2/lm/scenarios/foundation-models/models वापरतो. चॅट विनंत्या deploymentUrl/chat/completions वापरतात आणि त्यासाठी AI-Resource-Group आवश्यक आहे.", "sarvam": "Sarvam AI हे OpenAI-संगत आहे /v1. OmniRoute /v1/models चा शोध घेतो आणि चॅट ट्रॅफिक /v1/chat/completions कडे मार्गदर्शित करतो. मॉडेल्स भारतीय भाषांसाठी ट्यून केलेले आहेत.", "scaleway": "नवीन खात्यांसाठी 1M मोफत टोकन्स — EU/GDPR सुसंगत (पॅरिस), Qwen3 235B आणि Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "सध्याच्या OAuth फ्लोसह Claude Code कनेक्ट करा.", "cline": "सध्याच्या OAuth फ्लोसह Cline कनेक्ट करा.", "cursor": "सध्याच्या OAuth फ्लोसह Cursor IDE कनेक्ट करा.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "cursor.com/dashboard/api वरील वापरकर्ता API की (crsr_...) वापरून Cursor कनेक्ट करा; IDE सत्राची आवश्यकता नाही.", "github": "सध्याच्या OAuth फ्लोसह GitHub Copilot कनेक्ट करा.", "gitlab-duo": "ai_features + read_user स्कोप्ससह OAuth ॲप्लिकेशन. या OmniRoute इन्स्टन्सवर GITLAB_DUO_OAUTH_CLIENT_ID आणि पर्यायीपणे GITLAB_DUO_OAUTH_CLIENT_SECRET कॉन्फिगर करा.", "kilocode": "सध्याच्या OAuth फ्लोसह Kilo Code कनेक्ट करा.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "प्रदात्याच्या स्वतःच्या डोमेनवरून आवश्यक क्रेडेंशियल कॉपी करा. कुकीजसाठी, फक्त कुकी हेडर मूल्य कॉपी करा आणि कुकी वगळा:.", "webSessionGuideStep3Manual": "हाताने मार्ग: ब्राउझर डेव्हलपर टूल्स उघडा (F12 → नेटवर्क), पृष्ठ ताजे करा, एक प्रमाणित विनंती उघडा, आणि विनंती हेडर्समधून कुकी हेडर मूल्य कॉपी करा — कुकी: प्रीफिक्स वगळा.", "webSessionGuideStep4": "ते येथे पेस्ट करा आणि कनेक्शन तपासा. ते काम करणे थांबवल्यास, पुन्हा साइन इन करा आणि नवीन मूल्यासह बदला.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har फाइल आयात करा", + "harImportButtonBusy": "आयात करत आहे…", + "harImportButtonHint": "किमान एक चॅट संदेश पाठवल्यानंतर DevTools Network टॅबमधून निर्यात करा.", + "harImportStatusValid": "आयात केले — सुमारे {minutes}मि. वैध.", + "harImportStatusExpiringSoon": "आयात केले — आणखी फक्त सुमारे {minutes}मि. वैध.", + "harImportStatusExpired": "आयात केले, परंतु हे टोकन {minutes}मि. पूर्वीच कालबाह्य झाले — नवीन HAR निर्यात करा.", + "harImportStatusUnknownExpiry": "आयात केले. त्याची कालबाह्यता वाचता आली नाही.", + "harImportErrorNotJson": "ही फाइल वैध JSON नाही — ती खरोखर .har निर्यात आहे का?", + "harImportErrorNoEntries": "या HAR मध्ये कोणत्याही नेटवर्क नोंदी रेकॉर्ड केलेल्या नाहीत.", + "harImportErrorNoChathubUrl": "या HAR मध्ये Copilot चॅट कनेक्शन आढळले नाही. निर्यात करण्यापूर्वी m365.cloud.microsoft मध्ये किमान एक चॅट संदेश पाठवा.", + "harImportErrorUnparsableUrl": "चॅट कनेक्शन सापडले, परंतु त्याचा URL वाचता आला नाही.", + "harImportErrorMissingFields": "चॅट कनेक्शन सापडले, परंतु त्यामध्ये टोकन नव्हते.", + "harImportErrorReadFailed": "ती फाइल वाचता आली नाही.", + "harImportErrorUnknown": "त्या HAR फाइलमधून क्रेडेन्शियल काढता आले नाही.", "webSessionSecurityHint": "याला पासवर्डप्रमाणे वागवा: ते कालबाह्य होईपर्यंत किंवा रद्द होईपर्यंत ते तुमच्या साइन-इन केलेल्या वेब खात्यात प्रवेश करू शकते.", "webNoAuthGuideTitle": "क्रेडेंशियल आवश्यक नाही", "webNoAuthGuideBody": "{provider} ला API की किंवा कुकीची आवश्यकता नाही. विनामूल्य वेब एंडपॉइंट वापरण्यासाठी कनेक्शन जतन करा.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "कमांड कोड प्रमाणपत्र कालबाह्य झाले", "commandCodeConnected": "कमांड कोड कनेक्टेड", "commandCodeConnectionAdded": "कमांड कोड कनेक्शन जोडले गेले", + "clearConnectionCooldown": "कूलडाउन साफ करा", + "clearConnectionCooldownInProgress": "साफ करत आहे…", + "clearConnectionCooldownTitle": "कूलडाउन आत्ताच हटवा — अपस्ट्रीममध्ये कोटा आधीच रीफ्रेश झाला असेल तेव्हा वापरा", "commandCodeLinkExpired": "कमांड कोड लिंक कालबाह्य झाला", "commandCodeOpeningStudio": "कमांड कोड स्टुडिओ उघडत आहे…", "commandCodePopupBlocked": "पॉपअप अवरोधित. कृपया पॉपअपला परवानगी द्या आणि Command Code Connect पुन्हा प्रयत्न करा.", "commandCodeStartFailed": "कमांड कोड प्रमाणीकरण सुरू करण्यात अयशस्वी", "connectionDeleted": "संपर्क हटवला गेला", "connectionFallback": "संपर्क", + "connectionCooldownCleared": "कूलडाउन हटवला — कनेक्शन पुन्हा रूटिंगमध्ये सामील झाले", "coolingConnectionsDescription": "ही कनेक्शन शेवटच्या विनंतीनंतर थंड होत आहेत. टाइमर संपेपर्यंत OmniRoute त्यांना वगळेल — हाताने बंद करण्याची गरज नाही.", "coolingConnectionsTitle": "सध्या थंड करणे ({count})", + "failedClearConnectionCooldown": "कूलडाउन हटवण्यात अयशस्वी", "failedDeleteAlias": "अलियास हटवण्यात अयशस्वी", "failedDeleteConnection": "संपर्क हटवण्यात अयशस्वी", "failedDistributeProxies": "प्रॉक्सी वितरित करण्यात अयशस्वी.", @@ -6470,21 +6478,16 @@ "savedModelEndpointSettings": "सुरक्षित केलेल्या मॉडेल एंडपॉइंट सेटिंग्ज", "searchByModelAria": "मॉडेलद्वारे शोधा", "selectSupportedEndpoint": "किमान एक समर्थित एंडपॉइंट निवडा", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "हार्नेस / CLI" }, "settings": { - "title": "Settings", - "general": "General", - "security": "Security", - "appearance": "Appearance", - "routing": "Routing", - "cache": "Cache", - "resilience": "Resilience", + "title": "सेटिंग्ज", + "general": "सामान्य", + "security": "सुरक्षा", + "appearance": "स्वरूप", + "routing": "रूटिंग", + "cache": "कॅशे", + "resilience": "लवचिकता", "description": "वर्णन", "enable": "सक्षम करा", "disable": "अक्षम करा", @@ -6551,25 +6554,25 @@ "routingOpStatusSeparator": " ·", "resilienceSettingsIntro": "प्रदाते अयशस्वी झाल्यावर स्वयंचलित पुन्हा प्रयत्न करा, कूलडाउन आणि फॉलबॅक.", "aiSettingsIntro": "विचार बजेट, मॉडेल वर्तन आणि कॉम्प्रेशनसाठी AI-विशिष्ट सेटिंग्ज.", - "systemPrompt": "System Prompt", - "thinkingBudget": "Thinking Budget", + "systemPrompt": "सिस्टम प्रॉम्प्ट", + "thinkingBudget": "विचार बजेट", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP प्रॉक्सी", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "प्रॉक्सी विभाग", + "requestBodyLimitTitle": "विनंती बॉडी मर्यादा", + "requestBodyLimitDescription": "विनंती बॉडी पार्स करण्यापूर्वी स्वीकारला जाणारा कमाल API पेलोड आकार. समर्पित अपलोड मार्गांसाठी त्यांची अंगभूत 100 MB मर्यादा किमान कायम राहते.", + "requestBodyLimitInputLabel": "विनंती बॉडीची मर्यादा MB मध्ये", + "requestBodyLimitEmptyError": "MB मध्ये मर्यादा प्रविष्ट करा", + "requestBodyLimitWholeNumberError": "पूर्णांक वापरा", + "requestBodyLimitMinimumError": "किमान मर्यादा {min} MB आहे", + "requestBodyLimitMaximumError": "कमाल मर्यादा {max} MB आहे", + "requestBodyLimitLoadFailed": "विनंती मर्यादा सेटिंग्ज लोड करण्यात अयशस्वी", + "requestBodyLimitSaveSuccess": "विनंती बॉडी मर्यादा जतन केली", + "requestBodyLimitSaveFailed": "विनंती बॉडी मर्यादा जतन करण्यात अयशस्वी", + "requestBodyLimitSaving": "जतन करत आहे...", + "requestBodyLimitSave": "जतन करा", + "requestBodyLimitCurrent": "सध्याचे: {value}", "cacheConfigLoadFailed": "कॅश सेटिंग्ज लोड करण्यात अयशस्वी", "cacheConfigSaveSuccess": "कॅश सेटिंग्ज जतन केल्या गेल्या", "cacheConfigSaveFailed": "कॅश सेटिंग्ज जतन करण्यात अयशस्वी", @@ -6583,69 +6586,69 @@ "modelCatalogCacheTtlSave": "जतन करा", "modelCatalogCacheTtlCurrent": "सद्य: {value} मि.से.", "mitmProxy": "MITM प्रॉक्सी", - "pricing": "Pricing", - "storage": "Storage", - "policies": "Policies", - "ipFilter": "IP Filter", - "comboDefaults": "Combo Defaults", - "fallbackChains": "Fallback Chains", - "changePassword": "Change Password", - "enablePassword": "Enable Password", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "pricing": "किंमत निर्धारण", + "storage": "स्टोरेज", + "policies": "धोरणे", + "ipFilter": "IP फिल्टर", + "comboDefaults": "कॉम्बो डीफॉल्ट्स", + "fallbackChains": "फॉलबॅक साखळ्या", + "changePassword": "पासवर्ड बदला", + "enablePassword": "पासवर्ड सक्षम करा", + "darkMode": "गडद मोड", + "lightMode": "उजळ मोड", + "memoryTitle": "मेमरी", + "memoryDesc": "सत्रांदरम्यान टिकून राहणारी संभाषणात्मक मेमरी", + "memoryEnabled": "मेमरी सक्षम करा", + "memoryEnabledDesc": "सक्षम केल्यावर, OmniRoute संबंधित मागील संदर्भ समाविष्ट करेल.", "memoryTokenCostWarning": "सावधान: मेमरी सक्षम केल्यास, OmniRoute प्रत्येक चॅट विनंतीमध्ये पुनर्प्राप्त केलेल्या संदर्भाचे {tokens} पर्यंतचे टोकन्स इंजेक्ट करते — यामुळे टोकनचा वापर आणि खर्च वाढतो. विशिष्ट विनंतीसाठी इंजेक्शन वगळण्यासाठी, \"x-omniroute-no-memory: true\" हेडर पाठवा.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", - "justNow": "Just now", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", - "providers": "Providers", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", - "systemTheme": "System Theme", - "debugToggle": "Enable Debug Mode", + "maxTokens": "कमाल टोकन्स", + "retentionDays": "धारण कालावधी", + "recent": "अलीकडील", + "recentDesc": "कालानुक्रमिक विंडो", + "semantic": "सिमॅंटिक", + "semanticDesc": "व्हेक्टर शोध", + "hybrid": "हायब्रिड", + "hybridDesc": "अलीकडील + सिमॅंटिक", + "skillsTitle": "कौशल्ये", + "skillsDesc": "मॉडेल्ससाठी साधने", + "skillsEnabled": "कौशल्ये सक्षम करा", + "skillsEnabledDesc": "एजंट्सना फंक्शन्स ट्रिगर करण्याची अनुमती देते.", + "skillsComingSoon": "कौशल्यांचे मार्केटप्लेस लवकरच येत आहे.", + "memorySkillsTitle": "मेमरी आणि कौशल्ये", + "memorySkillsDesc": "टिकून राहणारा संदर्भ आणि क्षमता", + "modelsDevTitle": "मॉडेल डेटाबेस", + "modelsDevDesc": "models.dev वरून किंमत, क्षमता आणि तपशील स्वयंचलितपणे सिंक करा", + "modelsDevEnabled": "models.dev सिंक सक्षम करा", + "modelsDevEnabledDesc": "मुक्त-स्रोत models.dev डेटाबेसमधून मॉडेलची किंमत, क्षमता आणि तपशील मिळवा", + "modelsDevInterval": "सिंकचे अंतराल", + "syncNow": "आता सिंक करा", + "syncing": "सिंक होत आहे...", + "lastSync": "शेवटचे सिंक", + "never": "कधीही नाही", + "justNow": "आत्ताच", + "modelsDevStats": "सिंकची आकडेवारी", + "modelsDevStatsDesc": "सध्याच्या models.dev डेटाचे व्याप्तीक्षेत्र", + "providers": "प्रदाते", + "modelsWithPricing": "किंमत उपलब्ध असलेली मॉडेल्स", + "capabilities": "क्षमता", + "lastSyncCount": "मागील सिंकमधील संख्या", + "lastSyncFull": "शेवटचे पूर्ण सिंक", + "modelsDevInfo": "हे कसे कार्य करते", + "modelsDevInfoDesc": "models.dev हा SST/OpenCode टीमद्वारे देखरेख केला जाणारा AI मॉडेल तपशीलांचा मुक्त-स्रोत डेटाबेस आहे. तो 100+ प्रदात्यांमधील 4,000+ मॉडेल्ससाठी किंमत, क्षमता, संदर्भ मर्यादा आणि मोडॅलिटीज प्रदान करतो.", + "modelsDevInfoResolution": "किंमत निर्धारणाचा क्रम (सर्वोच्च प्राधान्य प्रथम):", + "modelsDevInfoOrder": "वापरकर्ता ओव्हरराइड → models.dev → LiteLLM → हार्डकोड केलेले डीफॉल्ट", + "systemTheme": "सिस्टम थीम", + "debugToggle": "डीबग मोड सक्षम करा", "logToolSourcesToggle": "टूल स्रोत लॉग करा", "logToolSourcesDescription": "टूल संख्या आणि MCP/होस्ट केलेले/क्लायंट स्रोत ब्रेकडाउनचा सारांश देणारी प्रति विनंती एक निदानात्मक लॉग लाइन जारी करा.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "मुख्यपृष्ठावर माहिती पिन करा", "homePinnedSectionsDesc": "मुख्य पृष्ठाच्या शीर्षस्थानी कोणते विभाग पिन करायचे ते निवडा.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "प्रदात्याच्या कोटा मर्यादा", + "homeProviderQuotaLimitsDesc": "प्रदात्याच्या कोटाची स्थिती दर्शवणारा कंटेनर (सर्व रीफ्रेश करा बटणासह) मुख्यपृष्ठाच्या शीर्षस्थानी पिन करा.", + "homeQuickStart": "त्वरित प्रारंभ", + "homeQuickStartDesc": "मुख्यपृष्ठावर त्वरित प्रारंभ पॅनेल दाखवा.", + "homeProviderTopology": "प्रदाता टोपोलॉजी", + "homeProviderTopologyDesc": "मुख्यपृष्ठावर प्रदाता टोपोलॉजी दाखवा.", "accountEmailVisibility": "खाते ईमेल दृश्यमानता", "accountEmailVisibilityDesc": "प्रदाते, कॉम्बो, लॉग, कोटा आणि प्लेग्राउंड स्क्रीनवर संपूर्ण खाते ईमेल दाखवा. डीफॉल्टनुसार ते मास्क करण्यासाठी हे बंद करा.", "comboConfigMode": "कॉम्बो कॉन्फिगरेशन मोड", @@ -6661,89 +6664,89 @@ "providerQuotaAutoRefreshInterval": "रिफ्रेश अंतराल", "providerQuotaAutoRefreshIntervalDesc": "कोटा व्ह्यू किती वेळाने रिफ्रेश व्हावा, सेकंदात.", "seconds": "सेकंद", - "sidebarVisibilityToggle": "Show Sidebar Items", - "enableCache": "Enable Cache", - "cacheTTL": "Cache TTL", - "maxCacheSize": "Max Cache Size", - "clearCache": "Clear Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", - "cacheHits": "Cache Hits", - "cacheMisses": "Cache Misses", - "hitRate": "Hit Rate", - "cacheEntries": "Cache Entries", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "sidebarVisibilityToggle": "साइडबारमधील घटक दाखवा", + "enableCache": "कॅशे सक्षम करा", + "cacheTTL": "कॅशे TTL", + "maxCacheSize": "कॅशेचा कमाल आकार", + "clearCache": "कॅशे साफ करा", + "cacheCleared": "कॅशे यशस्वीरीत्या साफ करण्यात आली", + "clearCacheFailed": "कॅशे साफ करण्यात अयशस्वी", + "cacheHits": "कॅशे हिट्स", + "cacheMisses": "कॅशे मिसेस", + "hitRate": "हिट दर", + "cacheEntries": "कॅशे नोंदी", + "cacheSettings": "कॅशे सेटिंग्ज", + "semanticCache": "अर्थाधारित कॅशे", + "maxEntries": "कमाल नोंदी", + "ttlMinutes": "TTL (मिनिटे)", + "promptCache": "प्रॉम्प्ट कॅशे", + "strategy": "धोरण", + "preserveClientCache": "क्लायंट कॅशे कायम ठेवा", + "enabled": "सक्षम", "loading": "Loading...", - "saving": "Saving...", - "save": "Save", - "circuitBreaker": "Circuit Breaker", - "retryPolicy": "Retry Policy", - "maxRetries": "Max Retries", - "retryDelay": "Retry Delay", - "timeoutMs": "Timeout (ms)", - "enableSystemPrompt": "Enable System Prompt", - "systemPromptText": "System Prompt Text", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "saving": "जतन करत आहे...", + "save": "जतन करा", + "circuitBreaker": "सर्किट ब्रेकर", + "retryPolicy": "पुनःप्रयत्न धोरण", + "maxRetries": "कमाल पुनःप्रयत्न", + "retryDelay": "पुनःप्रयत्न विलंब", + "timeoutMs": "टाइमआउट (ms)", + "enableSystemPrompt": "सिस्टम प्रॉम्प्ट सक्षम करा", + "systemPromptText": "सिस्टम प्रॉम्प्ट मजकूर", + "autoDisableBannedAccounts": "प्रतिबंधित खाती स्वयंचलितपणे अक्षम करा", + "autoDisableDescription": "प्रदाता कनेक्शननी विशिष्ट अंतिम प्रतिबंध संकेत (उदा. HTTP 403 'तुमचे खाते सत्यापित करा') दिल्यास, ती कायमस्वरूपी निष्क्रिय म्हणून चिन्हांकित करा. यामुळे ती कॉम्बो रोटेशनमधून काढली जातात.", + "autoDisableThreshold": "प्रतिबंध मर्यादा", + "autoDisableThresholdDesc": "कायमचे निष्क्रिय करण्यापूर्वी आवश्यक असलेले सलग बंदी संकेत.", + "autoDisableBannedScope": "स्वयं-निष्क्रियता यांना लागू करा", + "autoDisableBannedScopeDesc": "OmniRoute बंदीनंतरही पुन्हा प्रयत्न करत राहिल्यास, अपस्ट्रीमद्वारे लॉगिन सीट्स (सशुल्क सदस्यत्वे आणि मोफत खाती) लॉक केल्या जाऊ शकतात. सशुल्क प्रीपेड API कींना हा धोका नसतो — त्या पूलमध्येच ठेवा, जेणेकरून fill-first पुढील की वापरू शकेल.", + "autoDisableBannedScopeAll": "सर्व कनेक्शन्स", + "autoDisableBannedScopeAllDesc": "प्रीपेड API कींसह, कायमस्वरूपी बंदीचा संकेत देणारे प्रत्येक कनेक्शन निष्क्रिय करा.", + "autoDisableBannedScopeSubscription": "फक्त लॉगिन / सदस्यत्व खाती", + "autoDisableBannedScopeSubscriptionDesc": "OAuth, कुकी, सत्र आणि वेब-लॉगिन सीट्स (सशुल्क किंवा मोफत) निष्क्रिय करा. प्रीपेड API की सक्रिय राहतात, जेणेकरून रूटिंग फेलओव्हर करू शकेल.", "customBannedSignals": "प्रतिबंधित कीवर्ड", "customBannedSignalsDesc": "अतिरिक्त कीवर्ड जे कायमचे खाते बंदी शोधणे ट्रिगर करतात. अंगभूत कीवर्ड नेहमी लागू होतात.", "customBannedSignalsPlaceholder": "उदा. api key revoked", "noCustomBannedSignals": "कोणतेही सानुकूल कीवर्ड नाहीत. फक्त अंगभूत कीवर्ड सक्रिय आहेत.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "लवचिकता संरचना", "resilienceStructureDesc": "हे पृष्ठ फक्त वर्तन कॉन्फिगर करते. थेट ब्रेकर स्थिती आरोग्य पृष्ठावर दर्शविली आहे. कॉम्बो-विशिष्ट पुन्हा प्रयत्न आणि राऊंड-रॉबिन स्लॉट नियंत्रण कॉम्बो सेटिंग्जवर राहतील.", - "enableThinking": "Enable Thinking", - "maxThinkingTokens": "Max Thinking Tokens", - "enableProxy": "Enable Proxy", + "enableThinking": "विचार प्रक्रिया सक्षम करा", + "maxThinkingTokens": "विचार प्रक्रियेसाठी कमाल टोकन्स", + "enableProxy": "प्रॉक्सी सक्षम करा", "perKeyProxyEnabled": "प्रति-की प्रॉक्सी असाइनमेंट सक्षम करा", "perKeyProxyEnabledDesc": "सक्षम केल्यावर, प्रत्येक प्रदाता कनेक्शन स्वतःचे प्रॉक्सी असाइनमेंट वापरू शकते", - "proxyUrl": "Proxy URL", - "pricingRates": "Pricing Rates Format", - "currentPricing": "Current Pricing Overview", - "loadingPricing": "Loading pricing data...", - "noPricing": "No pricing data available", - "input": "Input", - "output": "Output", - "cached": "Cached", + "proxyUrl": "प्रॉक्सी URL", + "pricingRates": "किंमत दरांचे स्वरूप", + "currentPricing": "सध्याच्या किंमतींचा आढावा", + "loadingPricing": "किंमत डेटा लोड करत आहे...", + "noPricing": "किंमत डेटा उपलब्ध नाही", + "input": "इनपुट", + "output": "आउटपुट", + "cached": "कॅश केलेले", "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "customPricing": "Custom Pricing", - "databaseSize": "Database Size", - "backupDb": "Backup Database", - "restoreDb": "Restore Database", - "exportData": "Export Data", - "importData": "Import Data", - "clearData": "Clear All Data", - "clearDataConfirm": "This will permanently delete all data. Are you sure?", - "enableRequestLogs": "Enable Request Logs", - "logRetention": "Log Retention", - "ipWhitelist": "IP Whitelist", - "ipBlacklist": "IP Blacklist", - "addIP": "Add IP", - "savedSuccessfully": "Settings saved successfully", + "cacheCreation": "कॅश निर्मिती", + "customPricing": "सानुकूल किंमत", + "databaseSize": "डेटाबेसचा आकार", + "backupDb": "डेटाबेसचा बॅकअप घ्या", + "restoreDb": "डेटाबेस पुनर्संचयित करा", + "exportData": "डेटा निर्यात करा", + "importData": "डेटा आयात करा", + "clearData": "सर्व डेटा साफ करा", + "clearDataConfirm": "यामुळे सर्व डेटा कायमचा हटवला जाईल. तुम्हाला खात्री आहे का?", + "enableRequestLogs": "विनंती लॉग सक्षम करा", + "logRetention": "लॉग जतन कालावधी", + "ipWhitelist": "IP श्वेतसूची", + "ipBlacklist": "IP काळीसूची", + "addIP": "IP जोडा", + "savedSuccessfully": "सेटिंग्ज यशस्वीरित्या जतन केल्या", "ai": "AI", - "advanced": "Advanced", - "localMode": "Local Mode — All data stored on your machine", - "settingsSectionsAria": "Settings sections", - "switchThemes": "Switch between light and dark themes", - "themeSelectionAria": "Theme selection", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", + "advanced": "प्रगत", + "localMode": "स्थानिक मोड — सर्व डेटा तुमच्या मशीनवर संग्रहित केला जातो", + "settingsSectionsAria": "सेटिंग्ज विभाग", + "switchThemes": "फिकट आणि गडद थीममध्ये स्विच करा", + "themeSelectionAria": "थीम निवड", + "themeLight": "फिकट", + "themeDark": "गडद", + "themeSystem": "सिस्टम", "endpointTunnelVisibility": "एंडपॉइंट बोगदा दृश्यमानता", "endpointTunnelVisibilityDesc": "बोगद्याची स्थिती न बदलता एंडपॉइंट पृष्ठावरून बोगदा नियंत्रणे लपवा.", "showCloudflareTunnel": "क्लाउडफ्लेअर क्विक टनेल", @@ -6752,47 +6755,47 @@ "showTailscaleFunnelDesc": "एंडपॉइंट पृष्ठावर टेलस्केल फनेल नियंत्रणे दर्शवा.", "showNgrokTunnel": "ngrok बोगदा", "showNgrokTunnelDesc": "एंडपॉईंट पेजवर एनग्रोक टनेल कंट्रोल्स दाखवा.", - "sidebarVisibility": "Hide sidebar items", - "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter without disabling any features", - "sidebarVisibilityHint": "Any sidebar section is hidden automatically when all of its entries are hidden", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", - "hideHealthLogs": "Hide Health Check Logs", - "hideHealthLogsDesc": "When ON, suppress [HealthCheck] messages in server console", - "themeAccent": "Theme color", - "themeAccentDesc": "Choose a preset color or create your own theme with one color", - "themeCreate": "Create theme", - "themeCustom": "Custom theme", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "sidebarVisibility": "साइडबारमधील घटक लपवा", + "sidebarVisibilityDesc": "कोणतीही वैशिष्ट्ये अक्षम न करता दृश्यातील गर्दी कमी करण्यासाठी साइडबारमधील कोणतीही नेव्हिगेशन नोंद लपवा", + "sidebarVisibilityHint": "एखाद्या साइडबार विभागातील सर्व नोंदी लपवल्यावर तो विभाग आपोआप लपवला जातो", + "presetAll": "सर्व", + "presetAllDesc": "सर्वकाही दाखवा", + "presetEssentials": "अत्यावश्यक", + "presetEssentialsDesc": "नवशिक्यांसाठी मार्ग - प्रगत साधने शोधता येतील", + "presetMinimal": "किमान", + "presetMinimalDesc": "फक्त मुख्य पृष्ठे", + "presetDeveloper": "डेव्हलपर", + "presetDeveloperDesc": "डेव्हलपमेंट आणि प्रॉक्सी साधने", + "presetAdmin": "प्रशासक", + "presetAdminDesc": "निरीक्षण आणि लेखापरीक्षण", + "settingsSidebarTitle": "साइडबार सानुकूलन", + "settingsSidebarDesc": "साइडबारमधील कोणते घटक दाखवायचे ते निवडा. अत्यावश्यक पर्याय निवडल्यास प्रगत साधने शोधता येतात.", + "hideHealthLogs": "आरोग्य तपासणी लॉग लपवा", + "hideHealthLogsDesc": "सुरू असताना, सर्व्हर कन्सोलमधील [HealthCheck] संदेश दडपले जातात", + "themeAccent": "थीमचा रंग", + "themeAccentDesc": "पूर्वनिर्धारित रंग निवडा किंवा एका रंगासह स्वतःची थीम तयार करा", + "themeCreate": "थीम तयार करा", + "themeCustom": "सानुकूल थीम", + "themeBlue": "निळा", + "themeRed": "लाल", + "themeGreen": "हिरवा", + "themeViolet": "जांभळा", + "themeOrange": "नारिंगी", + "themeCyan": "सायन", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "ॲप्लिकेशनचे नाव आणि लोगो सानुकूलित करा", + "appName": "ॲप्लिकेशनचे नाव", + "appNameDesc": "साइडबार आणि ब्राउझर टॅबमध्ये दिसणारे नाव", + "customLogo": "सानुकूल लोगो URL", + "customLogoDesc": "तुमच्या सानुकूल लोगो प्रतिमेचा URL", + "uploadLogo": "लोगो अपलोड करा", + "resetLogo": "डीफॉल्टवर रीसेट करा", + "logoPreview": "पूर्वावलोकन", + "customFavicon": "ब्राउझर फेविकॉन", + "customFaviconDesc": "तुमच्या सानुकूल फेविकॉनचा URL (ब्राउझर टॅबमध्ये दिसतो)", + "uploadFavicon": "फेविकॉन अपलोड करा", + "resetFavicon": "फॅविकॉन रीसेट करा", + "faviconPreview": "फॅविकॉन पूर्वावलोकन", "logoFileTooLarge": "लोगो फाइल ५००KB पेक्षा कमी असणे आवश्यक आहे", "faviconFileTooLarge": "फॅव्हिकॉन फाइल ५०KB पेक्षा कमी असणे आवश्यक आहे", "invalidLogoFileType": "अवैध फाइल प्रकार. कृपया PNG, JPG, SVG, GIF किंवा WebP अपलोड करा.", @@ -6800,15 +6803,15 @@ "failedToReadFile": "फाइल वाचण्यात अयशस्वी", "startOnLogin": "लॉगिनवर सुरू करा", "startOnLoginDesc": "सिस्टम स्टार्टअपवर OmniRoute स्वयंचलितपणे लाँच करा आणि बॅकग्राउंड ट्रेमध्ये शांतपणे चालवा.", - "flushCache": "Flush Cache", - "flushing": "Flushing…", - "size": "Size", - "hits": "Hits", - "evictions": "Evictions", - "loadingCacheStats": "Loading cache stats…", - "globalProxy": "Global Proxy", - "globalProxyDesc": "Configure a global outbound proxy for all API calls. Individual providers, combos, and keys can override this.", - "noGlobalProxy": "No global proxy configured", + "flushCache": "कॅशे रिकामी करा", + "flushing": "कॅशे रिकामी करत आहे…", + "size": "आकार", + "hits": "हिट्स", + "evictions": "निष्कासने", + "loadingCacheStats": "कॅशेची आकडेवारी लोड करत आहे…", + "globalProxy": "ग्लोबल प्रॉक्सी", + "globalProxyDesc": "सर्व API कॉल्ससाठी ग्लोबल आउटबाउंड प्रॉक्सी कॉन्फिगर करा. स्वतंत्र प्रदाते, कॉम्बोज आणि कीज हे सेटिंग ओव्हरराइड करू शकतात.", + "noGlobalProxy": "ग्लोबल प्रॉक्सी कॉन्फिगर केलेली नाही", "proxyPool": "प्रॉक्सी पूल", "freePool": "विनामूल्य पूल", "proxyDocumentation": "प्रॉक्सी दस्तऐवजीकरण", @@ -6896,21 +6899,21 @@ "refreshInterval": "ताजेतवाने अंतराल", "ruleModeDescription": "नियम मोड वर्णन" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "एकत्रित आरोग्य तपासणी", + "bulkHealthcheckDesc": "कोणते प्रॉक्सी कार्यरत आहेत हे शोधण्यासाठी सर्व कॉन्फिगर केलेले प्रॉक्सी लक्ष्य URL वर तपासा.", + "healthcheckTesting": "तपासत आहे...", + "healthcheckAll": "सर्वांची आरोग्य तपासणी करा", + "healthcheckFailed": "आरोग्य तपासणी चालवण्यात अयशस्वी", + "healthcheckTestingAll": "सर्व प्रॉक्सींची समांतर तपासणी करत आहे...", + "healthcheckTotal": "एकूण", + "healthcheckWorking": "कार्यरत", + "healthcheckFailedLabel": "अयशस्वी", + "healthcheckStatus": "स्थिती", + "healthcheckProxyUrl": "प्रॉक्सी URL", + "healthcheckLatency": "विलंबता", "proxyDocumentationScopeTitle": "प्रॉक्सी स्कोप रिझोल्यूशन", "proxyDocumentationScopeDescBefore": "OmniRoute आउटबाउंड प्रॉक्सीचे प्राधान्य क्रमाने निराकरण करते:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "कॉम्बो → खाते → प्रदाता → ग्लोबल", "proxyDocumentationScopeDescAfter": ". सर्वात विशिष्ट स्कोप जिंकतो.", "proxyDocumentationAddTitle": "सानुकूल प्रॉक्सी जोडणे", "proxyDocumentationAddDescBefore": "येथे जा", @@ -6966,22 +6969,22 @@ "proxyFreePoolLoadMore": "आणखी लोड करा", "close": "बंद करा", "cancel": "रद्द करा", - "globalLabel": "Global", - "configure": "Configure", - "globalSystemPrompt": "Global System Prompt", - "saved": "Saved", + "globalLabel": "ग्लोबल", + "configure": "कॉन्फिगर करा", + "globalSystemPrompt": "ग्लोबल सिस्टम प्रॉम्प्ट", + "saved": "जतन केले", "beforePromptLabel": "प्रॉम्प्टपूर्वी", "beforePromptDesc": "एजंट/प्रदाता सिस्टम सूचनांपूर्वी समाविष्ट केले", "beforePromptPlaceholder": "एजंट/प्रदाता प्रॉम्प्टपूर्वी समाविष्ट केलेल्या सूचना...", "afterPromptLabel": "प्रॉम्प्टनंतर", "afterPromptDesc": "एजंट/प्रदाता सिस्टम सूचनांनंतर समाविष्ट केले", "afterPromptPlaceholder": "एजंट/प्रदाता प्रॉम्प्टनंतर समाविष्ट केलेल्या सूचना...", - "chars": "{count} chars", - "thinkingBudgetTitle": "Thinking Budget", + "chars": "{count} अक्षरे", + "thinkingBudgetTitle": "विचार बजेट", "thinkingBudgetDesc": "Control AI reasoning token usage across all requests", "thinkingBudgetIndependenceHint": "संकुचन, मार्गनिर्देशन, आणि टोकन-सीमा वैशिष्ट्ये प्रत्येक मोडमध्ये कार्यरत राहतात. ऑटो म्हणजे \"ऑटो-शो विचार\" नाही — हे क्लायंट विचार क्षेत्रे काढून टाकते.", - "passthrough": "Passthrough", - "passthroughDesc": "No changes — client controls thinking budget", + "passthrough": "जसेच्या तसे पाठवा", + "passthroughDesc": "कोणतेही बदल नाहीत — क्लायंट विचार बजेट नियंत्रित करतो", "thinkingModePassthrough": "पॅसथ्रू", "thinkingModePassthroughDesc": "क्लायंटचे कारण बदलू नका (प्रयत्न, सारांश, विचार ब्लॉक्स). Codex/Desktop दृश्यमान विचारांसाठी आवश्यक. डिफॉल्ट.", "thinkingModeAuto": "ऑटो (स्ट्रीप)", @@ -6991,36 +6994,36 @@ "thinkingModeAdaptive": "अनुकूलनीय", "thinkingModeAdaptiveDesc": "संदेश संख्या, साधने, आणि प्रॉम्प्ट लांबीचा वापर करून मूलभूत प्रयत्नातून विचारांचा बजेट स्केल करा.", "auto": "Auto Combo", - "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "custom": "Custom", - "customDesc": "Set a fixed token budget for all requests", - "adaptive": "Adaptive", - "adaptiveDesc": "Scale budget based on request complexity", - "effortNone": "None (0 tokens)", - "effortLow": "Low (1K tokens)", - "effortMedium": "Medium (10K tokens)", - "effortHigh": "High (128K tokens)", - "tokenBudget": "Token Budget", - "tokens": "tokens", - "baseEffortLevel": "Base Effort Level", + "autoDesc": "स्वयं-दुरुस्ती करणारा स्मार्ट राउटिंग पूल (कार्यक्षमतेसाठी ऑप्टिमाइझ केलेला)", + "custom": "सानुकूल", + "customDesc": "सर्व विनंत्यांसाठी निश्चित टोकन बजेट सेट करा", + "adaptive": "अनुकूली", + "adaptiveDesc": "विनंतीच्या जटिलतेनुसार बजेट समायोजित करा", + "effortNone": "काहीही नाही (0 टोकन्स)", + "effortLow": "कमी (1K टोकन)", + "effortMedium": "मध्यम (10K टोकन)", + "effortHigh": "जास्त (128K टोकन)", + "tokenBudget": "टोकन बजेट", + "tokens": "टोकन", + "baseEffortLevel": "मूलभूत प्रयत्न पातळी", "adaptiveHint": "Adaptive mode scales from this base level based on message count, tool usage, and prompt length.", - "requireLogin": "Require login", - "requireLoginDesc": "When ON, dashboard requires password. When OFF, access without login.", - "currentPassword": "Current Password", - "enterCurrentPassword": "Enter current password", - "newPassword": "New Password", - "enterNewPassword": "Enter new password", - "confirmPassword": "Confirm New Password", - "confirmPasswordPlaceholder": "Confirm new password", - "passwordsNoMatch": "Passwords do not match", - "passwordUpdated": "Password updated successfully", - "failedUpdatePassword": "Failed to update password", - "errorOccurred": "An error occurred", - "updatePassword": "Update Password", - "setPassword": "Set Password", - "apiEndpointProtection": "API Endpoint Protection", - "requireAuthModels": "Require API key for /models", - "requireAuthModelsDesc": "When ON, the /v1/models endpoint returns 404 for unauthenticated requests. Prevents model discovery by unauthorized users.", + "requireLogin": "लॉगिन आवश्यक", + "requireLoginDesc": "चालू असताना, डॅशबोर्डसाठी पासवर्ड आवश्यक असतो. बंद असताना, लॉगिनशिवाय प्रवेश करता येतो.", + "currentPassword": "सध्याचा पासवर्ड", + "enterCurrentPassword": "सध्याचा पासवर्ड प्रविष्ट करा", + "newPassword": "नवीन पासवर्ड", + "enterNewPassword": "नवीन पासवर्ड प्रविष्ट करा", + "confirmPassword": "नवीन पासवर्डची पुष्टी करा", + "confirmPasswordPlaceholder": "नवीन पासवर्डची पुष्टी करा", + "passwordsNoMatch": "पासवर्ड जुळत नाहीत", + "passwordUpdated": "पासवर्ड यशस्वीरित्या अद्यतनित झाला", + "failedUpdatePassword": "पासवर्ड अद्यतनित करण्यात अयशस्वी", + "errorOccurred": "एक त्रुटी आली", + "updatePassword": "पासवर्ड अद्यतनित करा", + "setPassword": "पासवर्ड सेट करा", + "apiEndpointProtection": "API एंडपॉइंट संरक्षण", + "requireAuthModels": "/models साठी API की आवश्यक करा", + "requireAuthModelsDesc": "चालू असताना, प्रमाणीकरण न केलेल्या विनंत्यांसाठी /v1/models एंडपॉइंट 404 परत करतो. अनधिकृत वापरकर्त्यांना मॉडेल शोधण्यापासून प्रतिबंधित करतो.", "authModelHeading": "सक्रिय अधिकृतता मॉडेल", "authModelClient": "क्लायंट API एंडपॉइंट्स (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) ला Bearer API की आवश्यक आहे.", "authModelManagement": "व्यवस्थापन एंडपॉइंट्स (/dashboard, /api/*) साठी डॅशबोर्ड सत्र किंवा व्यवस्थापन क्रेडेन्शियल आवश्यक आहे.", @@ -7029,16 +7032,16 @@ "bruteForceProtectionDesc": "थ्रॉटल आणि लॉक /api/auth/लॉगिन त्याच IP वरून वारंवार अपयशी झाल्यानंतर.", "corsAllowedOrigins": "CORS अनुमत मूळ", "corsAllowedOriginsDesc": "या सर्व्हरला कॉल करण्याची परवानगी असलेल्या ब्राउझरच्या उत्पत्तीची स्वल्पविरामाने विभक्त केलेली सूची. रिक्त सूची = ब्राउझरमध्ये CORS प्रवेश नाही (सर्व्हर-टू-सर्व्हर अद्याप कार्य करते). केवळ विकासासाठी CORS_ALLOW_ALL=true env var वापरा.", - "blockedProviders": "Blocked Providers", - "blockedProvidersDesc": "Hide specific providers from the /v1/models response. Blocked providers will not appear in model listings.", - "providersBlocked": "{count} provider(s) blocked from /models", - "blockProviderTitle": "Block {provider}", - "unblockProviderTitle": "Unblock {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "blockedProviders": "ब्लॉक केलेले प्रदाते", + "blockedProvidersDesc": "/v1/models प्रतिसादातून विशिष्ट प्रदाते लपवा. ब्लॉक केलेले प्रदाते मॉडेल सूचींमध्ये दिसणार नाहीत.", + "providersBlocked": "/models मधून {count} प्रदाता ब्लॉक केले", + "blockProviderTitle": "{provider} ला ब्लॉक करा", + "unblockProviderTitle": "{provider} वरील ब्लॉक काढा", + "cliFingerprint": "CLI फिंगरप्रिंट जुळवणी", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "CLI फिंगरप्रिंट सक्रिय असलेले {count} प्रदाते", + "enableFingerprintTitle": "{provider} साठी फिंगरप्रिंट सक्षम करा", + "disableFingerprintTitle": "{provider} साठी फिंगरप्रिंट अक्षम करा", "systemTransforms": "सिस्टम-ब्लॉक ट्रान्सफॉर्म पाइपलाइन", "systemTransformsDesc": "प्रति-प्रदात्याने फॉरवर्ड करण्यापूर्वी विनंती मुख्य भागावर लागू केलेल्या ट्रान्सफॉर्म्सची पाइपलाइन ऑर्डर केली. कोणत्याही प्रदाता आयडीला समर्थन देते.", "systemTransformsAddProvider": "प्रदाता जोडा", @@ -7049,29 +7052,29 @@ "systemTransformsOpMoveUp": "वर हलवा", "systemTransformsOpMoveDown": "खाली हलवा", "systemTransformsOpDelete": "ओप हटवा", - "routingStrategy": "Routing Strategy", - "routingAdvancedGuideTitle": "Advanced routing guidance", + "routingStrategy": "रूटिंग धोरण", + "routingAdvancedGuideTitle": "प्रगत रूटिंग मार्गदर्शन", "routingAdvancedGuideHint1": "Use Fill First for predictable priority, Round Robin for fairness, and P2C for latency resilience.", "routingAdvancedGuideHint2": "If providers vary in quality/cost, start with Cost Opt for background work and Least Used for balanced wear.", - "fillFirst": "Fill First", - "fillFirstDesc": "Use accounts in priority order", + "fillFirst": "प्रथम भरा", + "fillFirstDesc": "प्राधान्यक्रमानुसार खाती वापरा", "roundRobin": "Round Robin", - "roundRobinDesc": "Cycle through all accounts", + "roundRobinDesc": "सर्व खाती क्रमाने वापरा", "p2c": "P2C", - "p2cDesc": "Pick 2 random, use the healthier one", - "random": "Random", - "randomDesc": "Random account each request", - "leastUsed": "Least Used", - "leastUsedDesc": "Pick least recently used account", - "costOpt": "Cost Opt", - "costOptDesc": "Prefer cheapest available account", + "p2cDesc": "यादृच्छिकपणे 2 निवडा आणि अधिक सक्षम असलेले वापरा", + "random": "यादृच्छिक", + "randomDesc": "प्रत्येक विनंतीसाठी यादृच्छिक खाते", + "leastUsed": "सर्वात कमी वापरलेले", + "leastUsedDesc": "सर्वात अलीकडे कमी वापरलेले खाते निवडा", + "costOpt": "खर्च अनुकूलन", + "costOptDesc": "उपलब्ध असलेल्या सर्वात स्वस्त खात्याला प्राधान्य द्या", "resetAware": "रीसेट-अवेअर RR", "resetAwareDesc": "निरोगी उर्वरित कोटा आणि जवळच्या रीसेटसह खात्यांना प्राधान्य द्या", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "कोटा-भारित", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "कठोर यादृच्छिक", + "strictRandomDesc": "डेक शफल करा — पुन्हा शफल करण्यापूर्वी प्रत्येक खाते एकदा वापरते", + "stickyLimit": "स्टिकी मर्यादा", "stickyLimitDesc": "Calls per account before switching", "routingStrategyTitle": "राउटिंग धोरण", "routingStrategySubtitle": "9router शी जुळवा: खाते राउंड-रॉबिन, स्टिकी मर्यादा आणि कॉम्बो रोटेशन", @@ -7089,225 +7092,225 @@ "providerAccountRoutingDesc": "या प्रदात्यासाठी ग्लोबल खाते धोरण ओव्हरराइड करा (9router पॅरिटी).", "providerRoutingStrategy": "खाते धोरण", "providerRoutingInheritGlobal": "ग्लोबल डीफॉल्ट इनहेरिट करा", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", - "modelAliases": "Model Aliases", - "modelAliasesTitle": "Model Aliases", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", - "addCustomAlias": "Add Custom Alias", - "deprecatedModelId": "Deprecated model ID", - "newModelId": "New model ID", - "customAliases": "Custom Aliases", - "builtInAliases": "Built-in Aliases", - "backgroundDegradationTitle": "Background Task Degradation", - "backgroundDegradationDesc": "Auto-detect background tasks (titles, summaries) and route to cheaper models", - "enableDegradation": "Enable Background Degradation", - "enableDegradationHint": "When enabled, background tasks like title generation and summarization are routed to cheaper models automatically", - "tasksDetected": "Tasks detected", - "degradationMap": "Model Degradation Map", - "premiumModel": "Premium model", - "cheapModel": "Cheap model", - "detectionPatterns": "Detection Patterns", - "newPattern": "e.g. \"generate a title\"", + "quotaPreflightTitle": "कोटा पूर्वतपासणी कटऑफ", + "quotaPreflightSubtitle": "विनंती अपस्ट्रीमकडे पाठवण्यापूर्वी कोटा संपलेली खाती वगळा", + "quotaPreflightEnable": "कोटा पूर्वतपासणी सक्षम करा", + "quotaPreflightEnableDesc": "प्रत्येक विनंतीपूर्वी खात्याचा उर्वरित कोटा (5h / साप्ताहिक / मासिक कालखंड) तपासा. कटऑफइतका किंवा त्याहून कमी कोटा असलेली खाती अपस्ट्रीम कॉल न करता वगळली जातात. Provider Quota पृष्ठावर सेट केलेले प्रत्येक कालखंडाचे कटऑफ येथील डीफॉल्टपेक्षा नेहमीच प्राधान्य घेतात.", + "quotaPreflightCutoff": "जागतिक कटऑफ (किमान उर्वरित %)", + "quotaPreflightCutoffDesc": "ज्या प्रत्येक कालखंडासाठी स्वतंत्र कटऑफ नाही, त्यामध्ये खात्याचा उर्वरित कोटा या टक्केवारीपर्यंत किंवा त्याहून कमी झाल्यास ते खाते वापरणे थांबवा. हे Provider Quota पृष्ठावरील उर्वरित-% पट्ट्यांशी जुळते.", + "quotaPreflightWindowsHint": "स्वतःचा प्रत्येक-कालखंड किंवा प्रत्येक-provider कटऑफ असलेल्या कालखंडांवर (Provider Quota पृष्ठावरील Cutoff मोडलमध्ये सेट केलेला) या डीफॉल्टचा परिणाम होत नाही.", + "quotaPreflightLoadFailed": "कोटा पूर्वतपासणी सेटिंग्ज लोड करता आल्या नाहीत.", + "modelAliases": "मॉडेल उपनावे", + "modelAliasesTitle": "मॉडेल उपनावे", + "modelAliasesDesc": "अचूक जुळण्या किंवा वाइल्डकार्ड नमुने वापरून मॉडेलची नावे पुन्हा मॅप करा.", + "addCustomAlias": "सानुकूल उपनाव जोडा", + "deprecatedModelId": "कालबाह्य मॉडेल ID", + "newModelId": "नवीन मॉडेल ID", + "customAliases": "सानुकूल उपनावे", + "builtInAliases": "अंगभूत उपनावे", + "backgroundDegradationTitle": "पार्श्वभूमी कार्य अवनती", + "backgroundDegradationDesc": "पार्श्वभूमी कार्ये (शीर्षके, सारांश) स्वयंचलितपणे शोधा आणि स्वस्त मॉडेलकडे रूट करा", + "enableDegradation": "पार्श्वभूमी अवनती सक्षम करा", + "enableDegradationHint": "सक्षम केल्यावर, शीर्षक निर्मिती आणि सारांशीकरण यांसारखी पार्श्वभूमी कार्ये स्वयंचलितपणे स्वस्त मॉडेलकडे रूट केली जातात", + "tasksDetected": "आढळलेली कार्ये", + "degradationMap": "मॉडेल अवनती नकाशा", + "premiumModel": "प्रीमियम मॉडेल", + "cheapModel": "स्वस्त मॉडेल", + "detectionPatterns": "शोध नमुने", + "newPattern": "उदा. \"शीर्षक तयार करा\"", "aliasPatternPlaceholder": "claude-sonnet-*", "aliasTargetPlaceholder": "claude-sonnet-4-20250514", - "pattern": "Pattern", - "targetModel": "Target Model", - "add": "+ Add", - "session": "Session", - "sessionDetailsAria": "Session details", + "pattern": "नमुना", + "targetModel": "लक्ष्य मॉडेल", + "add": "+ जोडा", + "session": "सत्र", + "sessionDetailsAria": "सत्र तपशील", "status": "Status", - "authenticated": "Authenticated", - "guest": "Guest", - "loginTime": "Login Time", - "sessionAge": "Session Age", - "browser": "Browser", - "clearLocalData": "Clear Local Data", - "logout": "Logout", - "clearLocalDataConfirm": "Clear all local data? This will reset your preferences.", - "unknown": "Unknown", - "systemActor": "system", - "ipAccessControl": "IP Access Control", - "ipAccessControlDesc": "Block or allow specific IP addresses", - "ipModeDisabled": "Disabled", - "ipModeBlacklist": "Blacklist", - "ipModeWhitelist": "Whitelist", - "ipModeWhitelistPriority": "WL Priority", - "addIpAddress": "Add IP Address", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", - "block": "+ Block", - "allow": "+ Allow", - "blocked": "Blocked ({count})", - "allowed": "Allowed ({count})", - "temporaryBans": "Temporary Bans ({count})", - "minLeft": "{min}m left", - "auditLog": "Audit Log", - "searchAuditLogs": "Search audit logs...", - "failedLoadAuditLog": "Failed to load audit log", - "noAuditEvents": "No audit events found", - "action": "Action", - "actor": "Actor", - "details": "Details", - "time": "Time", - "fallbackChainsTitle": "Fallback Chains", - "fallbackChainsDesc": "Define provider fallback order per model", - "addChain": "+ Add Chain", - "modelName": "Model Name", + "authenticated": "प्रमाणित", + "guest": "अतिथी", + "loginTime": "लॉगिन वेळ", + "sessionAge": "सत्र कालावधी", + "browser": "ब्राउझर", + "clearLocalData": "स्थानिक डेटा साफ करा", + "logout": "लॉगआउट", + "clearLocalDataConfirm": "सर्व स्थानिक डेटा साफ करायचा? यामुळे तुमची प्राधान्ये रीसेट होतील.", + "unknown": "अज्ञात", + "systemActor": "सिस्टम", + "ipAccessControl": "IP प्रवेश नियंत्रण", + "ipAccessControlDesc": "विशिष्ट IP पत्ते ब्लॉक करा किंवा अनुमती द्या", + "ipModeDisabled": "अक्षम", + "ipModeBlacklist": "ब्लॅकलिस्ट", + "ipModeWhitelist": "व्हाइटलिस्ट", + "ipModeWhitelistPriority": "WL प्राधान्य", + "addIpAddress": "IP पत्ता जोडा", + "ipAddressPlaceholder": "192.168.1.0/24 किंवा 10.0.*.*", + "block": "+ ब्लॉक करा", + "allow": "+ अनुमती द्या", + "blocked": "ब्लॉक केलेले ({count})", + "allowed": "अनुमती दिलेले ({count})", + "temporaryBans": "तात्पुरत्या बंदी ({count})", + "minLeft": "{min} मि. शिल्लक", + "auditLog": "ऑडिट लॉग", + "searchAuditLogs": "ऑडिट लॉग शोधा...", + "failedLoadAuditLog": "ऑडिट लॉग लोड करण्यात अयशस्वी", + "noAuditEvents": "कोणत्याही ऑडिट घटना आढळल्या नाहीत", + "action": "कृती", + "actor": "कर्ता", + "details": "तपशील", + "time": "वेळ", + "fallbackChainsTitle": "फॉलबॅक साखळ्या", + "fallbackChainsDesc": "प्रत्येक मॉडेलसाठी प्रदात्यांचा फॉलबॅक क्रम निश्चित करा", + "addChain": "+ साखळी जोडा", + "modelName": "मॉडेलचे नाव", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "Providers (comma-separated, in priority order)", + "providersCommaSeparated": "प्रदाते (स्वल्पविरामाने विभक्त, प्राधान्यक्रमानुसार)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", - "createChain": "Create Chain", - "noFallbackChains": "No Fallback Chains", - "noFallbackChainsDesc": "Create a chain to define provider fallback order for a model.", - "loadingFallbackChains": "Loading fallback chains...", - "deleteChainConfirm": "Delete fallback chain for \"{model}\"?", - "chainCreated": "Chain created for {model}", - "chainDeleted": "Chain deleted for {model}", - "failedCreateChain": "Failed to create chain", - "failedDeleteChain": "Failed to delete chain", - "deleteChain": "Delete chain", - "fillModelAndProviders": "Please fill model name and providers", - "addAtLeastOneProvider": "Add at least one provider", - "comboDefaultsTitle": "Combo Defaults", - "comboDefaultsGuideTitle": "How to tune combo defaults", - "comboDefaultsGuideHint1": "Keep retries low in low-latency flows; increase timeout only for long generation tasks.", - "comboDefaultsGuideHint2": "Use provider overrides when one provider needs different timeout/retry behavior than global defaults.", - "globalComboConfig": "Global combo configuration", + "createChain": "साखळी तयार करा", + "noFallbackChains": "फॉलबॅक साखळ्या नाहीत", + "noFallbackChainsDesc": "मॉडेलसाठी प्रदात्यांचा फॉलबॅक क्रम निश्चित करण्यासाठी साखळी तयार करा.", + "loadingFallbackChains": "फॉलबॅक साखळ्या लोड होत आहेत...", + "deleteChainConfirm": "\"{model}\" साठी फॉलबॅक साखळी हटवायची?", + "chainCreated": "{model} साठी साखळी तयार केली", + "chainDeleted": "{model} साठी साखळी हटवली", + "failedCreateChain": "साखळी तयार करण्यात अयशस्वी", + "failedDeleteChain": "साखळी हटवण्यात अयशस्वी", + "deleteChain": "साखळी हटवा", + "fillModelAndProviders": "कृपया मॉडेलचे नाव आणि प्रदाते भरा", + "addAtLeastOneProvider": "किमान एक प्रदाता जोडा", + "comboDefaultsTitle": "कॉम्बो डीफॉल्ट्स", + "comboDefaultsGuideTitle": "कॉम्बो डीफॉल्ट्स कसे समायोजित करावेत", + "comboDefaultsGuideHint1": "कमी-विलंबाच्या प्रवाहांमध्ये पुनःप्रयत्नांची संख्या कमी ठेवा; केवळ दीर्घ निर्मिती कार्यांसाठी टाइमआउट वाढवा.", + "comboDefaultsGuideHint2": "एखाद्या प्रदात्यासाठी जागतिक डीफॉल्ट्सपेक्षा वेगळे टाइमआउट/पुनःप्रयत्न वर्तन आवश्यक असल्यास प्रदाता ओव्हरराइड्स वापरा.", + "globalComboConfig": "जागतिक कॉम्बो कॉन्फिगरेशन", "moveUp": "वर हलवा", "moveDown": "खाली हलवा", "allProvidersAdded": "सर्व प्रदाते जोडले", "noProvidersFound": "कोणतेही प्रदाते आढळले नाहीत", - "defaultStrategy": "Default Strategy", + "defaultStrategy": "डीफॉल्ट धोरण", "defaultStrategyDesc": "Applied to new combos without explicit strategy", - "comboStrategyAria": "Combo strategy", - "priority": "Priority", - "weighted": "Weighted", - "contextRelay": "Context Relay", - "contextRelayDesc": "Priority-style routing with automatic context handoffs when account rotation happens", - "maxRetriesLabel": "Max Retries", - "retryDelayLabel": "Retry Delay (ms)", - "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", - "healthCheckDesc": "Pre-check provider availability", - "trackMetrics": "Track Metrics", - "trackMetricsDesc": "Record per-combo request metrics", - "providerOverrides": "Provider Overrides", - "providerOverridesDesc": "Override timeout and retries per provider. Provider settings override global defaults.", - "providerMaxRetriesAria": "{provider} max retries", - "providerTimeoutAria": "{provider} timeout ms", - "removeProviderOverrideAria": "Remove {provider} override", + "comboStrategyAria": "कॉम्बो धोरण", + "priority": "प्राधान्य", + "weighted": "भारित", + "contextRelay": "संदर्भ रिले", + "contextRelayDesc": "खाते रोटेशन झाल्यावर स्वयंचलित संदर्भ हस्तांतरणासह प्राधान्य-शैलीतील रूटिंग", + "maxRetriesLabel": "कमाल पुनःप्रयत्न", + "retryDelayLabel": "पुनःप्रयत्न विलंब (ms)", + "timeoutLabel": "टाइमआउट (ms)", + "healthCheck": "स्थिती तपासणी", + "healthCheckDesc": "प्रदात्याची उपलब्धता आधी तपासा", + "trackMetrics": "मेट्रिक्सचा मागोवा घ्या", + "trackMetricsDesc": "प्रत्येक कॉम्बोसाठी विनंती मेट्रिक्स नोंदवा", + "providerOverrides": "प्रदाता ओव्हरराइड्स", + "providerOverridesDesc": "प्रत्येक प्रदात्यासाठी टाइमआउट आणि पुनःप्रयत्न ओव्हरराइड करा. प्रदाता सेटिंग्ज जागतिक डीफॉल्ट्सना ओव्हरराइड करतात.", + "providerMaxRetriesAria": "{provider} कमाल पुनःप्रयत्न", + "providerTimeoutAria": "{provider} टाइमआउट ms", + "removeProviderOverrideAria": "{provider} ओव्हरराइड काढा", "selectProviderPlaceholder": "प्रदाता निवडा...", "searchProviderPlaceholder": "प्रदाते शोधा...", "searchProviderAria": "प्रदाते शोधा", - "newProviderNamePlaceholder": "e.g. google, openai...", - "newProviderNameAria": "New provider name", - "retries": "retries", + "newProviderNamePlaceholder": "उदा. google, openai...", + "newProviderNameAria": "नवीन प्रदात्याचे नाव", + "retries": "पुनःप्रयत्न", "ms": "ms", - "saveComboDefaults": "Save Combo Defaults", - "maxNestingDepth": "Max Nesting Depth", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", + "saveComboDefaults": "कॉम्बो डीफॉल्ट्स जतन करा", + "maxNestingDepth": "कमाल नेस्टिंग खोली", + "concurrencyPerModel": "समवर्तीता / मॉडेल", + "queueTimeout": "रांग टाइमआउट (ms)", "queueDepth": "रांगेची खोली", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", - "providerProfiles": "Provider Profiles", - "providerProfilesDesc": "Separate resilience settings for OAuth (session-based) and API Key (metered) providers. OAuth providers have stricter thresholds due to lower rate limits.", - "oauthProviders": "OAuth Providers", - "apiKeyProviders": "API Key Providers", - "transientCooldown": "Transient Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", - "cbThreshold": "CB Threshold", - "cbResetTime": "CB Reset Time", - "rateLimiting": "Rate Limiting", - "rateLimitingDesc": "API Key providers are automatically rate-limited with safe defaults. Limits are learned from response headers and adapt over time.", - "defaultSafetyNet": "Default Safety Net", + "contextRelayHandoffThreshold": "हस्तांतरण मर्यादा", + "contextRelayMaxMessages": "सारांशासाठी कमाल संदेश", + "contextRelaySummaryModel": "सारांश मॉडेल", + "contextRelayProviderNote": "Context Relay सध्या Codex खात्यांसाठी हँडऑफ तयार करते आणि नवीन किंवा कॉन्फिगर न केलेल्या कॉम्बोसाठी ही मूल्ये जागतिक डीफॉल्ट म्हणून वापरते.", + "providerProfiles": "प्रदाता प्रोफाइल्स", + "providerProfilesDesc": "OAuth (सत्र-आधारित) आणि API Key (वापरानुसार शुल्क आकारले जाणारे) प्रदात्यांसाठी स्वतंत्र लवचिकता सेटिंग्ज. कमी दर मर्यादांमुळे OAuth प्रदात्यांसाठी अधिक कठोर थ्रेशोल्ड असतात.", + "oauthProviders": "OAuth प्रदाते", + "apiKeyProviders": "API Key प्रदाते", + "transientCooldown": "तात्पुरता कूलडाउन", + "rateLimitCooldown": "दर मर्यादा कूलडाउन", + "maxBackoffLevel": "कमाल बॅकऑफ पातळी", + "cbThreshold": "CB थ्रेशोल्ड", + "cbResetTime": "CB रीसेट वेळ", + "rateLimiting": "दर मर्यादा नियंत्रण", + "rateLimitingDesc": "API Key प्रदात्यांवर सुरक्षित डीफॉल्टसह आपोआप दर मर्यादा लागू केली जाते. प्रतिसाद हेडर्समधून मर्यादा जाणून घेतल्या जातात आणि त्या कालांतराने जुळवून घेतात.", + "defaultSafetyNet": "डीफॉल्ट सुरक्षा जाळे", "rpm": "RPM", - "minGap": "Min Gap", - "maxConcurrent": "Max Concurrent", - "activeLimiters": "Active Limiters", - "noActiveLimiters": "No active rate limiters yet.", - "reservoir": "Reservoir", - "running": "Running", - "queued": "Queued", - "circuitBreakers": "Circuit Breakers", - "breakerStateClosed": "Closed", - "breakerStateOpen": "Open", - "breakerStateHalfOpen": "Half-Open", - "tripped": "{count} tripped", - "healthy": "{count} healthy", - "resetAll": "Reset All", - "noCircuitBreakers": "No circuit breakers active yet. They are created automatically when requests flow through the combo pipeline.", - "failures": "{count} failure(s)", - "policiesLocked": "Policies & Locked Identifiers", - "allOperational": "All systems operational — no lockouts or tripped breakers", - "loadingPolicies": "Loading policies...", - "lockedIdentifiers": "Locked Identifiers", - "unlockedIdentifier": "Unlocked: {identifier}", - "sinceDate": "since {date}", - "forceUnlock": "Force Unlock", - "unlocking": "Unlocking...", - "failedUnlock": "Failed to unlock", - "failedLoadWithStatus": "Failed to load: {status}", - "failedLoadResilience": "Failed to load resilience status", - "saveFailed": "Save failed", - "resetFailed": "Reset failed", - "loadingResilience": "Loading resilience status...", - "retry": "Retry", + "minGap": "किमान अंतर", + "maxConcurrent": "कमाल समवर्ती", + "activeLimiters": "सक्रिय दर मर्यादक", + "noActiveLimiters": "अद्याप कोणतेही सक्रिय दर मर्यादक नाहीत.", + "reservoir": "साठा", + "running": "चालू", + "queued": "रांगेत", + "circuitBreakers": "सर्किट ब्रेकर्स", + "breakerStateClosed": "बंद", + "breakerStateOpen": "उघडे", + "breakerStateHalfOpen": "अर्ध-उघडे", + "tripped": "{count} ट्रिप झाले", + "healthy": "{count} सुस्थितीत", + "resetAll": "सर्व रीसेट करा", + "noCircuitBreakers": "अद्याप कोणतेही सर्किट ब्रेकर सक्रिय नाहीत. कॉम्बो पाइपलाइनमधून विनंत्या प्रवाहित झाल्यावर ते आपोआप तयार केले जातात.", + "failures": "{count} अपयश", + "policiesLocked": "धोरणे आणि लॉक केलेले आयडेंटिफायर्स", + "allOperational": "सर्व प्रणाली कार्यरत आहेत — कोणतेही लॉकआउट किंवा ट्रिप झालेले ब्रेकर नाहीत", + "loadingPolicies": "धोरणे लोड करत आहे...", + "lockedIdentifiers": "लॉक केलेले आयडेंटिफायर्स", + "unlockedIdentifier": "अनलॉक केले: {identifier}", + "sinceDate": "{date} पासून", + "forceUnlock": "सक्तीने अनलॉक करा", + "unlocking": "अनलॉक करत आहे...", + "failedUnlock": "अनलॉक करण्यात अयशस्वी", + "failedLoadWithStatus": "लोड करण्यात अयशस्वी: {status}", + "failedLoadResilience": "लवचिकता स्थिती लोड करण्यात अयशस्वी", + "saveFailed": "जतन करणे अयशस्वी", + "resetFailed": "रीसेट अयशस्वी", + "loadingResilience": "लवचिकता स्थिती लोड होत आहे...", + "retry": "पुन्हा प्रयत्न करा", "systemStorage": "System & Storage", - "allDataLocal": "All data stored locally on your machine", - "databasePath": "Database Path", + "allDataLocal": "सर्व डेटा तुमच्या मशीनवर स्थानिकरीत्या संग्रहित केला जातो", + "databasePath": "डेटाबेस पथ", "export": "निर्यात करा", - "exportDatabase": "Export Database", - "exportAll": "Export All (.tar.gz)", - "importDatabase": "Import Database", - "confirmDbImport": "Confirm Database Import", - "confirmDbImportDesc": "This will replace all current data with the content from {file}. A backup will be created automatically before the import.", - "yesImport": "Yes, Import", - "lastBackup": "Last Backup", - "noBackupYet": "No backup yet", - "backupNow": "Backup Now", - "backupRestore": "Backup & Restore", - "viewBackups": "View Backups", - "hide": "Hide", - "backupRetentionDesc": "Database snapshots are created automatically before restore and every 15 minutes when data changes. Retention: 24 hourly + 30 daily backups with smart rotation.", - "loadingBackups": "Loading backups...", - "noBackupsYet": "No backups available yet. Backups will be created automatically when data changes.", - "backupsAvailable": "{count} backup(s) available", - "refresh": "Refresh", - "confirm": "Confirm?", - "yes": "Yes", - "no": "No", - "restore": "Restore", - "invalidFileType": "Invalid file type. Only .sqlite files are accepted.", - "exportFailed": "Export failed", - "exportFailedWithError": "Export failed: {error}", - "fullExportFailedWithError": "Full export failed: {error}", - "backupCreated": "Backup created: {file}", - "restoreSuccess": "Restored! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "importSuccess": "Database imported! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "minutesAgo": "{count}m ago", - "hoursAgo": "{count}h ago", - "daysAgo": "{count}d ago", - "backupReasonManual": "manual", - "backupReasonPreRestore": "pre-restore", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", - "noChangesSinceBackup": "No changes since last backup", - "backupFailed": "Backup failed", - "restoreFailed": "Restore failed", - "importFailed": "Import failed", - "errorDuringRestore": "An error occurred during restore", - "errorDuringImport": "An error occurred during import", - "modelPricing": "Model Pricing", - "modelPricingDesc": "Configure cost rates per model • All rates in $/1M tokens", + "exportDatabase": "डेटाबेस निर्यात करा", + "exportAll": "सर्व निर्यात करा (.tar.gz)", + "importDatabase": "डेटाबेस आयात करा", + "confirmDbImport": "डेटाबेस आयातीची पुष्टी करा", + "confirmDbImportDesc": "यामुळे सध्याचा सर्व डेटा {file} मधील सामग्रीने बदलला जाईल. आयात करण्यापूर्वी बॅकअप आपोआप तयार केला जाईल.", + "yesImport": "होय, आयात करा", + "lastBackup": "शेवटचा बॅकअप", + "noBackupYet": "अद्याप बॅकअप नाही", + "backupNow": "आता बॅकअप घ्या", + "backupRestore": "बॅकअप आणि पुनर्संचयित करा", + "viewBackups": "बॅकअप पहा", + "hide": "लपवा", + "backupRetentionDesc": "पुनर्संचयित करण्यापूर्वी आणि डेटामध्ये बदल झाल्यावर दर 15 मिनिटांनी डेटाबेस स्नॅपशॉट आपोआप तयार केले जातात. धारणा: स्मार्ट रोटेशनसह 24 तासिक + 30 दैनिक बॅकअप.", + "loadingBackups": "बॅकअप लोड होत आहेत...", + "noBackupsYet": "अद्याप कोणतेही बॅकअप उपलब्ध नाहीत. डेटामध्ये बदल झाल्यावर बॅकअप आपोआप तयार केले जातील.", + "backupsAvailable": "{count} बॅकअप उपलब्ध", + "refresh": "रिफ्रेश करा", + "confirm": "पुष्टी करायची?", + "yes": "होय", + "no": "नाही", + "restore": "पुनर्संचयित करा", + "invalidFileType": "अवैध फाइल प्रकार. फक्त .sqlite फाइल स्वीकारल्या जातात.", + "exportFailed": "निर्यात अयशस्वी", + "exportFailedWithError": "निर्यात अयशस्वी: {error}", + "fullExportFailedWithError": "संपूर्ण निर्यात अयशस्वी: {error}", + "backupCreated": "बॅकअप तयार केला: {file}", + "restoreSuccess": "पुनर्संचयित झाले! {connections} कनेक्शन, {nodes} नोड्स, {combos} कॉम्बो, {apiKeys} API की.", + "importSuccess": "डेटाबेस आयात झाला! {connections} कनेक्शन, {nodes} नोड्स, {combos} कॉम्बो, {apiKeys} API की.", + "minutesAgo": "{count} मि. पूर्वी", + "hoursAgo": "{count} ता. पूर्वी", + "daysAgo": "{count} दि. पूर्वी", + "backupReasonManual": "मॅन्युअल", + "backupReasonPreRestore": "पुनर्संचयित करण्यापूर्वी", + "connectionsCount": "{count, plural, one {# कनेक्शन} other {# कनेक्शन्स}}", + "noChangesSinceBackup": "शेवटच्या बॅकअपनंतर कोणतेही बदल नाहीत", + "backupFailed": "बॅकअप अयशस्वी झाला", + "restoreFailed": "पुनर्संचयित करणे अयशस्वी झाले", + "importFailed": "आयात अयशस्वी झाली", + "errorDuringRestore": "पुनर्संचयित करताना त्रुटी आली", + "errorDuringImport": "आयात करताना त्रुटी आली", + "modelPricing": "मॉडेल किंमत", + "modelPricingDesc": "प्रत्येक मॉडेलसाठी खर्चाचे दर कॉन्फिगर करा • सर्व दर $/1M टोकन्समध्ये", "pricingCoverage": "कव्हरेज", "pricingAuth": "प्रमाणीकरण", "pricingSort": "क्रमवारी लावा", @@ -7329,7 +7332,7 @@ "configured": "कॉन्फिगर केलेले", "none": "काहीही नाही", "modelOverrideValuePlaceholder": "संख्यात्मक मूल्य", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "स्वल्पविरामाने विभक्त केलेले इंग्रजी शब्द, उदा. low, medium, high", "addKeyValue": "की व्हॅल्यू जोडा", "noModelOverrides": "या मॉडेलसाठी कोणतेही ओव्हरराइड्स कॉन्फिगर केलेले नाहीत.", "modelOverrideLoadFailed": "मॉडेल ओव्हरराइड्स लोड करण्यात अयशस्वी", @@ -7337,66 +7340,66 @@ "modelOverrideRemoved": "मॉडेल ओव्हरराइड काढून टाकले", "modelOverrideSaveFailed": "मॉडेल ओव्हरराइड सेव्ह करण्यात अयशस्वी", "modelOverrideRemoveFailed": "मॉडेल ओव्हरराइड काढून टाकण्यात अयशस्वी", - "registry": "Registry", - "priced": "Priced", - "searchProvidersModels": "Search providers or models...", - "showAll": "Show All", - "noProvidersMatch": "No providers match your search.", - "howPricingWorks": "How Pricing Works", - "cacheWrite": "Cache Write", - "unsaved": "unsaved", + "registry": "रेजिस्ट्री", + "priced": "किंमत निर्धारित", + "searchProvidersModels": "प्रदाते किंवा मॉडेल्स शोधा...", + "showAll": "सर्व दाखवा", + "noProvidersMatch": "तुमच्या शोधाशी कोणताही प्रदाता जुळत नाही.", + "howPricingWorks": "किंमत कशी कार्य करते", + "cacheWrite": "कॅश लेखन", + "unsaved": "जतन न केलेले", "resetDefaults": "डिफॉल्ट रीसेट करा", - "saveProvider": "Save Provider", + "saveProvider": "प्रदाता जतन करा", "model": "Model", - "models": "models", - "moreProviders": "{count} more providers", - "withPricing": "with pricing configured", - "policiesCircuitBreakers": "Policies & Circuit Breakers", - "activeIssuesDetected": "Active issues detected", - "off": "Off", - "resetPricingConfirm": "Reset all pricing for {provider} to defaults?", - "pricingDescInput": "Input: tokens sent to the model", - "pricingDescOutput": "Output: tokens generated", - "pricingDescCached": "Cached: reused input (~50% of input rate)", - "pricingDescReasoning": "Reasoning: thinking tokens (falls back to Output)", - "pricingDescCacheWrite": "Cache Write: creating cache entries (falls back to Input)", - "pricingDescFormula": "Cost = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.", - "pricingSettingsTitle": "Pricing Settings", - "totalModels": "Total Models", - "active": "Active", - "costCalculation": "Cost Calculation", - "costCalculationDesc": "Costs are calculated based on token usage and pricing rates configured for each model.", - "pricingFormat": "Pricing Format", - "pricingFormatDesc": "All rates are in $/1M tokens (dollars per million tokens).", - "tokenTypes": "Token Types", - "inputTokenDesc": "Standard prompt tokens", - "outputTokenDesc": "Completion/response tokens", - "cachedTokenDesc": "Cached input tokens (typically 50% of input rate)", - "reasoningTokenDesc": "Special reasoning/thinking tokens (fallback to output rate)", - "cacheCreationTokenDesc": "Tokens used to create cache entries (fallback to input rate)", - "customPricingNote": "You can override default pricing for specific models. Custom overrides take priority over auto-detected pricing.", - "editPricing": "Edit Pricing", - "viewFullDetails": "View Full Details", + "models": "मॉडेल्स", + "moreProviders": "आणखी {count} प्रदाते", + "withPricing": "यांच्यासाठी किंमत कॉन्फिगर केली आहे", + "policiesCircuitBreakers": "धोरणे आणि सर्किट ब्रेकर्स", + "activeIssuesDetected": "सक्रिय समस्या आढळल्या", + "off": "बंद", + "resetPricingConfirm": "{provider} साठी सर्व किंमती डीफॉल्टवर रीसेट करायच्या?", + "pricingDescInput": "इनपुट: मॉडेलला पाठवलेले टोकन्स", + "pricingDescOutput": "आउटपुट: व्युत्पन्न केलेले टोकन्स", + "pricingDescCached": "कॅश केलेले: पुन्हा वापरलेले इनपुट (इनपुट दराच्या ~50%)", + "pricingDescReasoning": "तर्क: विचार प्रक्रियेतील टोकन्स (उपलब्ध नसल्यास आउटपुट दर वापरला जातो)", + "pricingDescCacheWrite": "कॅश लेखन: कॅश नोंदी तयार करणे (उपलब्ध नसल्यास इनपुट दर वापरला जातो)", + "pricingDescFormula": "खर्च = (input × input_rate) + (output × output_rate) + (cached × cached_rate), प्रति दशलक्ष टोकन्स.", + "pricingSettingsTitle": "किंमत सेटिंग्ज", + "totalModels": "एकूण मॉडेल्स", + "active": "सक्रिय", + "costCalculation": "खर्चाची गणना", + "costCalculationDesc": "टोकनचा वापर आणि प्रत्येक मॉडेलसाठी कॉन्फिगर केलेले किंमत दर यांच्या आधारे खर्चाची गणना केली जाते.", + "pricingFormat": "किंमत स्वरूप", + "pricingFormatDesc": "सर्व दर $/1M टोकन्समध्ये आहेत (प्रति दशलक्ष टोकन्ससाठी डॉलर).", + "tokenTypes": "टोकनचे प्रकार", + "inputTokenDesc": "मानक प्रॉम्प्ट टोकन्स", + "outputTokenDesc": "पूर्णता/प्रतिसाद टोकन्स", + "cachedTokenDesc": "कॅश केलेले इनपुट टोकन्स (सामान्यतः इनपुट दराच्या 50%)", + "reasoningTokenDesc": "विशेष तर्क/विचार टोकन्स (पर्याय म्हणून आउटपुट दर)", + "cacheCreationTokenDesc": "कॅश नोंदी तयार करण्यासाठी वापरलेले टोकन्स (पर्याय म्हणून इनपुट दर)", + "customPricingNote": "तुम्ही विशिष्ट मॉडेल्ससाठी डीफॉल्ट किंमत बदलू शकता. सानुकूल बदलांना स्वयं-शोधलेल्या किंमतीपेक्षा प्राधान्य दिले जाते.", + "editPricing": "किंमत संपादित करा", + "viewFullDetails": "संपूर्ण तपशील पहा", "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "अनुकूलनीय व्हॉल्यूम रूटिंग", + "adaptiveVolumeRoutingDesc": "पेलोडचे प्रमाण आणि थ्रूपुटचा ताण यांनुसार कनेक्शन्स गतिशीलपणे स्केल करा.", + "lkgpToggleTitle": "शेवटचा ज्ञात चांगला प्रदाता (LKGP)", + "lkgpToggleDesc": "सक्षम केल्यावर, राउटर शेवटचा यशस्वी प्रतिसाद कोणत्या प्रदात्याने दिला होता हे लक्षात ठेवतो आणि पुढील विनंत्यांमध्ये प्रथम त्याच प्रदात्याचा प्रयत्न करतो.", "echoRequestedModelTitle": "प्रतिसादांमध्ये विनंती केलेले मॉडेल नाव इको करा", "echoRequestedModelDesc": "सक्षम केल्यावर, रिस्पॉन्स `model` फील्ड अपस्ट्रीम मॉडेल नावाऐवजी क्लायंटने विनंती केलेले अलियास किंवा कॉम्बो नाव इको करते. ज्यांचा मॉडेल विनंतीशी जुळत नाही असा रिस्पॉन्स नाकारणाऱ्या स्ट्रिक्ट क्लायंट्सच्या (उदा. Claude Desktop) समस्यांचे हे निवारण करते.", "webSearchRouteTitle": "वेब सर्च राउटिंग", "webSearchRouteDesc": "जेव्हा विनंतीमध्ये मूळ web_search टूल समाविष्ट असते, तेव्हा डीफॉल्टऐवजी संपूर्ण विनंती या मॉडेलकडे राउट करा — Anthropic चे web_search सर्व्हर टूल लागू न करणाऱ्या प्रोव्हायडर्ससाठी उपयुक्त. अक्षम करण्यासाठी रिक्त ठेवा.", "webSearchRoutePlaceholder": "उदा. openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "हा पॅटर्न केवळ सशुल्क मॉडेल्सशी जुळतो — सशुल्क मॉडेल्स सक्षम करा किंवा पॅटर्न समायोजित करा.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP कॅश साफ करा", + "lkgpCacheCleared": "LKGP कॅश यशस्वीरित्या साफ केली", + "lkgpCacheClearFailed": "LKGP कॅश साफ करण्यात अयशस्वी", + "days": "दिवस", + "lkgp": "LKGP मोड", + "lkgpDesc": "शेवटचा ज्ञात चांगला प्रदाता (अंदाज करता येण्याजोगी लवचिकता)", + "maintenance": "देखभाल", + "purgeExpiredLogs": "कालबाह्य लॉग्स हटवा", + "purgeLogsFailed": "लॉग्स हटवण्यात अयशस्वी", "logsDeleted": "{count, plural, =0 {कोणतेही कालबाह्य लॉग हटवले नाहीत} one {# कालबाह्य झालेला लॉग हटवला} other {# कालबाह्य झालेले लॉग हटवले}}", "resetUsageData": "वापर डेटा रीसेट करा", "resetUsageDataDesc": "तुम्हाला वापर, विनंती लॉग्स आणि ॲनालिटिक्स डेटा किती जुना हटवायचा आहे ते निवडा. प्रोव्हायडर कॉन्फिगरेशन, कनेक्शन्स, API कीज, कॉम्बोज आणि सेटिंग्ज जतन केल्या जातात. ही कृती पूर्ववत केली जाऊ शकत नाही.", @@ -7413,63 +7416,63 @@ "resetUsageFailed": "वापर डेटा रीसेट करण्यात अयशस्वी", "reset": "रीसेट करा", "resetting": "रीसेट करत आहे...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", - "pricingSourceLiteLLM": "LiteLLM (Community)", - "clearSyncedPricingConfirm": "Clear all synced pricing data? Provider defaults will be used instead.", - "clearSyncedPricingFailed": "Failed to clear synced pricing", - "pricingSourceUser": "User Override", - "pageDescription": "Manage application settings, model aliases, pricing, and routing rules", - "pricingSyncStatus": "Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", - "pricingLoadFailed": "Failed to load pricing data", - "pricingSyncDescription": "Automatically sync model pricing from external sources to keep cost calculations accurate", - "clearSyncedPricingSuccess": "Synced pricing data cleared", - "clearSyncedPricingFailedWithReason": "Failed to clear pricing: {reason}", - "pricingSourceDefault": "Built-in Default", - "pricingSyncSuccess": "Pricing synced successfully", - "enableSyncError": "Failed to toggle pricing sync", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "contextOpt": "संदर्भासाठी अनुकूलित", + "contextOptDesc": "संदर्भ विंडोच्या आवश्यकता आणि संभाषणाच्या लांबीवर आधारित रूट करते", + "cacheOpt": "कॅशसाठी अनुकूलित", + "cacheOptDesc": "समान पुनर्वापरयोग्य प्रॉम्प्ट उपसर्ग त्याच प्रदाता खात्यावर ठेवतो", + "priorityDesc": "क्रमिक फॉलबॅक - प्रथम प्रदाता 1, नंतर प्रदाता 2 आणि त्यानंतर क्रमाने प्रयत्न करतो", + "weightedDesc": "प्रदात्यांमध्ये टक्केवारी वजनांनुसार ट्रॅफिक वितरित करते", + "modelRoutingTitle": "मॉडेल रूटिंग नियम", + "modelRoutingDesc": "ग्लॉब पॅटर्न्स वापरून मॉडेल्सना विशिष्ट कॉम्बोंकडे स्वयंचलितपणे रूट करा", + "addRule": "नियम जोडा", + "routeToCombo": "कॉम्बोकडे रूट करा", + "selectCombo": "कॉम्बो निवडा...", + "priorityHint": "जास्त मूल्य = आधी तपासले जाते. विशिष्ट पॅटर्न्ससाठी 10+ वापरा.", + "patternHint": "कोणत्याही अक्षरांसाठी * आणि एका अक्षरासाठी ? वापरा. अक्षरांच्या आकाराबाबत असंवेदनशील.", + "noRoutingRules": "कोणतेही रूटिंग नियम कॉन्फिगर केलेले नाहीत. डीफॉल्टनुसार विनंत्या जागतिक कॉम्बो वापरतात.", + "routingRuleHint": "विनंत्या स्वयंचलितपणे रूट करण्यासाठी claude-opus* -> frontier-combo सारखा नियम जोडा.", + "deleteRoutingRule": "हा मॉडेल रूटिंग नियम हटवायचा?", + "exactMatchMode": "अचूक जुळणी", + "wildcardPatternMode": "वाइल्डकार्ड पॅटर्न", + "exactMatchModeDesc": "कालबाह्य किंवा पुनर्नामित केलेल्या मॉडेल ID साठी तंतोतंत उपनावे वापरा.", + "wildcardPatternModeDesc": "मॉडेलचे कुटुंब एका लक्ष्याशी मॅप करायचे असल्यास * आणि ? असलेली वाइल्डकार्ड उपनावे वापरा.", + "noExactAliasesConfigured": "कोणतीही तंतोतंत-जुळणारी उपनावे कॉन्फिगर केलेली नाहीत.", + "wildcardRulesTitle": "वाइल्डकार्ड नियम", + "noWildcardAliasesConfigured": "कोणतीही वाइल्डकार्ड उपनावे कॉन्फिगर केलेली नाहीत.", + "overview": "आढावा", + "unknownError": "अज्ञात त्रुटी", + "pricingSourceLiteLLM": "LiteLLM (समुदाय)", + "clearSyncedPricingConfirm": "सिंक केलेला सर्व किंमत डेटा साफ करायचा? त्याऐवजी प्रदात्याची डीफॉल्ट मूल्ये वापरली जातील.", + "clearSyncedPricingFailed": "सिंक केलेला किंमत डेटा साफ करण्यात अयशस्वी", + "pricingSourceUser": "वापरकर्ता अधिलिखित मूल्य", + "pageDescription": "ॲप्लिकेशन सेटिंग्ज, मॉडेल उपनावे, किंमत आणि राउटिंग नियम व्यवस्थापित करा", + "pricingSyncStatus": "सिंक स्थिती", + "whitelist": "अनुमतसूची", + "syncDisabled": "सिंक अक्षम", + "pricingLoadFailed": "किंमत डेटा लोड करण्यात अयशस्वी", + "pricingSyncDescription": "खर्चाची गणना अचूक ठेवण्यासाठी बाह्य स्रोतांमधून मॉडेलच्या किंमती आपोआप सिंक करा", + "clearSyncedPricingSuccess": "सिंक केलेला किंमत डेटा साफ केला", + "clearSyncedPricingFailedWithReason": "किंमत साफ करण्यात अयशस्वी: {reason}", + "pricingSourceDefault": "अंगभूत डीफॉल्ट", + "pricingSyncSuccess": "किंमत यशस्वीपणे सिंक केली", + "enableSyncError": "किंमत सिंक टॉगल करण्यात अयशस्वी", + "syncEnabled": "सिंक सक्षम", + "blacklist": "प्रतिबंधसूची", "pricingSourceModelsDev": "Models.dev", - "syncedModels": "Synced Models", - "budget": "Budget", - "pricingSyncTitle": "Pricing Sync", - "pricingResetFailedWithReason": "Failed to reset pricing: {reason}", - "tab": "Tab", - "pricingSavedProvider": "Pricing saved for {provider}", - "pricingSyncFailed": "Pricing sync failed", - "pricingSaveFailedWithReason": "Failed to save pricing: {reason}", - "pricingResetProvider": "Pricing reset for {provider}", - "nextSync": "Next Sync", - "pricingSyncFailedWithReason": "Pricing sync failed: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "syncedModels": "सिंक केलेली मॉडेल्स", + "budget": "अर्थसंकल्प", + "pricingSyncTitle": "किंमत सिंक", + "pricingResetFailedWithReason": "किंमत रीसेट करण्यात अयशस्वी: {reason}", + "tab": "टॅब", + "pricingSavedProvider": "{provider} साठी किंमत जतन केली", + "pricingSyncFailed": "किंमत सिंक अयशस्वी", + "pricingSaveFailedWithReason": "किंमत जतन करण्यात अयशस्वी: {reason}", + "pricingResetProvider": "{provider} साठी किंमत रीसेट केली", + "nextSync": "पुढील सिंक", + "pricingSyncFailedWithReason": "किंमत सिंक अयशस्वी: {reason}", + "clearSyncedPricing": "सिंक केलेली किंमत साफ करा", + "compressionTitle": "प्रॉम्प्ट संक्षेपण", + "compressionDesc": "प्रदात्यांना पाठवण्यापूर्वी प्रॉम्प्ट संक्षिप्त करून टोकनचा वापर कमी करा", "compressionGuidanceFullGuideLink": "संपूर्ण कॉम्प्रेशन मार्गदर्शिका", "compressionGuidanceShow": "तपशील", "compressionGuidanceHide": "तपशील लपवा", @@ -7485,13 +7488,13 @@ "tokenSaverInputCompressionDesc": "कोड, URLs आणि हेतू जतन करून पात्र चॅट इतिहास पुन्हा लिहा.", "tokenSaverFineTunePrefix": "प्रत्येक इंजिन यावर फाइन-ट्यून करा", "tokenSaverFineTuneSuffix": "किंवा प्रति विनंती इंजिन यावर एकत्र करा", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", + "compressionMode": "संक्षेपण मोड", + "compressionModeOff": "बंद", + "compressionModeOffDesc": "कोणतेही संक्षेपण लागू केलेले नाही", + "compressionModeLite": "हलके", + "compressionModeLiteDesc": "व्हाइटस्पेस आणि रिकाम्या ओळी कमी करणे", + "compressionModeStandard": "मानक (Caveman)", + "compressionModeStandardDesc": "30+ नमुन्यांसह नियम-आधारित संक्षेपण; कोड ब्लॉक्स आणि URLs जतन करते", "compressionModeAggressive": "आक्रमक", "compressionModeAggressiveDesc": "जास्तीत जास्त बचतीसाठी सारांश + साधन परिणाम कॉम्प्रेशन + प्रगतीशील वृद्धत्व", "compressionModeUltra": "अल्ट्रा", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "प्रत्येक वृद्धत्व स्तरावर ठेवलेल्या अलीकडील संदेशांची संख्या (उच्च = अधिक संरक्षित)", "compressionToolStrategies": "साधन परिणाम धोरणे", "compressionToolStrategiesDesc": "विविध साधन परिणाम प्रकारांसाठी कॉम्प्रेशन धोरण टॉगल करा", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "सामान्य सेटिंग्ज", + "compressionAutoTrigger": "स्वयं-ट्रिगर मर्यादा", + "compressionCacheTTL": "कॅशे TTL", + "compressionPreserveSystem": "सिस्टम प्रॉम्प्ट जतन करा", "compressionPreserveSystemAlways": "नेहमी", "compressionPreserveSystemWhenNoCache": "जेव्हा कॅशे नसेल", "compressionPreserveSystemNever": "कधीही नाही", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "सुरक्षित केलेले", "compressionExclusionsCount": "{count, plural, one {# वगळणे} other {# वगळण्या}} कॉन्फिगर केलेले", "compressionExclusionsEmpty": "कोणतीही वगळणी कॉन्फिगर केलेली नाही — प्रत्येक मॉडेल/एंडपॉइंट संकुचनासाठी पात्र आहे (डीफॉल्ट वर्तन).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman इंजिन कॉन्फिगरेशन", + "compressionCavemanConfigDesc": "नियम-आधारित संक्षेपण इंजिनचे सूक्ष्म समायोजन करा", "compressionCavemanPanelHint": "त्याचे चालू/बंद आणि स्तर पॅनेलमध्ये सेट केले जातात:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "संदेश भूमिका संक्षेपित करा", + "compressionRoleUser": "वापरकर्ता", + "compressionRoleAssistant": "सहाय्यक", + "compressionRoleSystem": "सिस्टम", + "compressionMinLength": "किमान संदेश लांबी", + "compressionSkipRules": "संक्षेपण नियम वगळा", + "compressionSkipRulesDesc": "संक्षेपणादरम्यान नियम वगळण्यासाठी त्यांवर क्लिक करा", + "compressionPreservePatterns": "नमुने जतन करा", + "compressionPreservePatternsDesc": "कधीही संक्षेपित न केले जाणारे Regex नमुने (प्रत्येक ओळीत एक)", + "compressionLogTitle": "संक्षेपण लॉग", + "compressionLogEmpty": "अद्याप कोणत्याही विनंत्या संक्षेपित केलेल्या नाहीत. संक्षेपण सक्षम असताना विनंत्यांवर प्रक्रिया झाल्यानंतर संक्षेपणाची आकडेवारी येथे दिसेल.", "minutes": "मिनिटे", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "कमांड-जागरूक टूल आउटपुट फिल्टरिंग", + "compressionModeCodexResponses": "Responses टूल आउटपुट", + "compressionModeCodexResponsesDesc": "पात्र shell, patch, search, build आणि JSON आउटपुटसाठी मर्यादित संक्षेपण", + "compressionModeStacked": "स्टॅक केलेले", + "compressionModeStackedDesc": "RTK टूल-आउटपुट फिल्टरिंगनंतर Caveman संदेश संक्षेपण", + "qdrantTitle": "Qdrant (व्हेक्टर मेमरी)", + "qdrantDesc": "पर्यायी. जलद पुनर्प्राप्तीसाठी बाह्य व्हेक्टर डेटाबेसमध्ये अर्थाधारित स्मृती अनुक्रमित करते.", + "qdrantStatusActive": "सक्रिय", + "qdrantStatusError": "त्रुटी", + "qdrantStatusDisabled": "अक्षम", + "qdrantEnable": "Qdrant सक्षम करा", + "qdrantEnableDesc": "सक्षम केल्यावर, अर्थाधारित/हायब्रिड रणनीती स्मृती पुनर्प्राप्त करण्यासाठी Qdrant वापरू शकते.", + "qdrantTesting": "चाचणी सुरू आहे...", + "qdrantTestConnection": "कनेक्शनची चाचणी करा", + "qdrantSaved": "कॉन्फिगरेशन जतन केले", + "qdrantSaveError": "कॉन्फिगरेशन जतन करण्यात अयशस्वी", + "qdrantHostHint": "पोर्टशिवाय. उदाहरण: 127.0.0.1 किंवा http://qdrant", + "qdrantPort": "पोर्ट", + "qdrantPortHint": "Qdrant डीफॉल्ट: 6333", + "qdrantCollectionHint": "मेमरी पॉइंट्स जिथे संग्रहित केले जातील.", + "qdrantEmbeddingModel": "एम्बेडिंग मॉडेल", + "qdrantHelpTitle": "द्रुत सेटअप मदत", + "qdrantHelpQuickTitle": "द्रुत सेटअप (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. होस्ट: Qdrant IP/URL, पोर्ट: 6333, कलेक्शन: omniroute_memory.", + "qdrantHelpStep2": "2. nvidia/llama-nemotron-embed-vl-1b-v2:free वापरत असल्यास, कलेक्शन डायमेन्शन 2048 वापरा.", + "qdrantHelpStep3": "3. मॉडेल फील्ड: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. सेव्ह करा, कनेक्शन तपासा आणि नंतर शोध तपासा.", + "qdrantEmbeddingQuickSelect": "शोधलेल्या मॉडेल्समधून द्रुत निवड करा...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "स्वरूप: provider/model. प्रदात्याचे क्रेडेन्शियल कॉन्फिगर केलेले असणे आवश्यक आहे.", + "qdrantApiKeyPlaceholderKeep": "(सध्याची की कायम ठेवण्यासाठी रिकामे सोडा)", + "qdrantApiKeyPlaceholderOptional": "(वापरात नसल्यास रिकामे सोडा)", + "qdrantSaveHint": "टीप: होस्ट/पोर्ट/कलेक्शन/मॉडेल संपादित करा आणि सेव्ह क्लिक करा. API की ऐच्छिक आहे.", + "qdrantSearchTestTitle": "शोध चाचणी", + "qdrantSearchTestDesc": "एम्बेडिंग तयार करते आणि Qdrant मध्ये शोधते.", + "qdrantSearchPlaceholder": "उदाहरण: वापरकर्ता प्राधान्ये, इतिहास इ.", + "qdrantNoResults": "कोणतेही परिणाम नाहीत (किंवा Qdrant कॉन्फिगर केलेले नाही).", + "qdrantCleanupTitle": "धारण आणि साफसफाई", + "qdrantCleanupDesc": "यावर आधारित कालबाह्य आणि जुने पॉइंट्स काढून टाकते", + "searching": "शोध सुरू आहे...", + "cleaning": "साफसफाई सुरू आहे...", + "cleanNow": "आता साफ करा", "optional": "ऐच्छिक", "current": "चालू", "remove": "काढा", @@ -7600,19 +7603,19 @@ "resilienceScope": "व्याप्ती:", "resilienceTrigger": "ट्रिगर:", "resilienceEffect": "प्रभाव:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "विनंती रांग आणि दर", + "resilienceAutoEnableApiKeyProviders": "API-की प्रदात्यांसाठी स्वयं-सक्षम करा", + "resilienceRequestsPerMinute": "प्रति मिनिट विनंत्या", + "resilienceMinTimeBetweenRequests": "विनंत्यांमधील किमान वेळ", + "resilienceConcurrentRequests": "समवर्ती विनंत्या", + "resilienceConnectionScopeConcurrentRequests": "प्रति कनेक्शन/कोटा व्याप्ती समवर्ती विनंत्या", + "resilienceGlobalConcurrentRequests": "जागतिक समवर्ती अपस्ट्रीम विनंत्या (0 = अक्षम)", "resilienceMaxQueueWaitTime": "कमाल रांगेत प्रतीक्षा वेळ", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "मूलभूत कूलडाउन", + "resilienceUseUpstreamRetryHints": "अपस्ट्रीम पुनर्प्रयत्न संकेत वापरा", + "resilienceDefaultPerProvider": "डीफॉल्ट (प्रति प्रदाता)", + "resilienceAlwaysOn": "नेहमी सुरू", + "resilienceAlwaysOff": "नेहमी बंद", "routingRemoveEntry": "एंट्री काढा", "routingNeedlesSubstrings": "सुया (जुळण्यासाठी सबस्ट्रिंग्स)", "routingCaseSensitive": "केस संवेदनशील", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "काढलेले वर्णन मूळ विनंतीमध्ये परत इंजेक्ट करण्यापूर्वी व्हिजन मॉडेलला पाठवले जाते.", "visionBridgeTimeoutMs": "कालबाह्य (ms)", "visionBridgeMaxImagesPerRequest": "प्रति विनंती कमाल प्रतिमा", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "कमाल बॅकऑफ टप्पे", + "resilienceProviderBreakerTitle": "प्रति प्रदाता सर्किट ब्रेकर", + "resilienceFailureThreshold": "अपयश मर्यादा", + "resilienceDegradationThreshold": "कार्यक्षमता घट मर्यादा", "resilienceResetTimeout": "टाइमआउट रीसेट करा", "resilienceFailureThresholdLabel": "अयशस्वी थ्रेशोल्ड", "resilienceResetTimeoutLabel": "टाइमआउट रीसेट करा", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "कनेक्शन कूलडाउन", "resilienceUseUpstreamRetryHintsLabel": "अपस्ट्रीम पुन्हा प्रयत्न करण्याच्या सूचना वापरा", "resilienceUseUpstream429BreakerLabel": "अपस्ट्रीम 429 इशारे वापरा (ब्रेकर)", "resilienceMaxBackoffStepsLabel": "कमाल बॅकऑफ पावले", "resilienceYes": "होय", "resilienceNo": "नाही", - "resilienceDefault": "Default", + "resilienceDefault": "डीफॉल्ट", "storageDatabaseBackupRetention": "डेटाबेस बॅकअप धारणा", "storageDatabaseBackups": "डेटाबेस बॅकअप्स", "storageBackupRetentionDescription": "स्वयंचलित SQLite बॅकअप्स येथे साठवले जातात", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "लेगसी JSON यशस्वीरीत्या आयात केले!", "jsonImportFailed": "JSON आयात करण्यात अयशस्वी", "jsonImportError": "JSON आयात करताना त्रुटी आली", + "jsonImportAuthRequired": "जुने JSON कॉन्फिगरेशन आयात करण्यासाठी प्रमाणीकरण आवश्यक आहे. कृपया साइन इन करा किंवा प्रथम सेटअप पूर्ण करा.", + "databaseSettingsAuthRequiredTitle": "प्रमाणीकरण आवश्यक", + "databaseSettingsAuthRequiredBody": "डेटाबेस सेटिंग्ज आणि JSON आयात फक्त प्रमाणित अॅडमिनसाठी उपलब्ध आहेत. त्या पाहण्यासाठी आणि संपादित करण्यासाठी साइन इन करा किंवा सेटअप पूर्ण करा.", + "databaseSettingsAuthRequiredCta": "साइन इन करा", "storagePurgeData": "डेटा शुद्ध करा", "storagePurgeDataDesc": "रिटेंशन तपासण्या लागू न करता सर्व रेकॉर्ड त्वरित हटवा. सावधगिरीने वापरा.", "storageRetentionCleanup": "रिटेंशन सेटिंग्ज", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "मोड: {mode}", "compressionAdaptiveOff": "अ‍ॅडॉप्टिव्ह संदर्भ बजेट: बंद (लेगसी ऑटो-ट्रिगर)", "compressionAdaptiveTarget": "अ‍ॅडॉप्टिव्ह ({mode}, पॉलिसी: {policy}) — लक्ष्य ≈ {target, number} टोकन्स ({contextLimit, number}-टोकन विंडोसाठी)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "अनुकूलनीय संदर्भ बजेट", + "compressionAdaptiveModeOff": "बंद (जुना ऑटो-ट्रिगर)", + "compressionAdaptiveModeFloor": "किमान मर्यादा (नेहमी समावेशाची खात्री करा)", + "compressionAdaptiveModeReplace": "ऑटो-ट्रिगर बदला", + "compressionAdaptivePolicy": "बजेट धोरण", + "compressionAdaptivePolicyReserve": "आउटपुटसाठी राखीव ठेवा", + "compressionAdaptivePolicyPercentage": "विंडोची टक्केवारी", + "compressionAdaptivePolicyAbsolute": "निश्चित टोकन बजेट", "compressionOutputStylesDescription": "प्रोव्हाइडर आउटपुट पुन्हा न लिहिता रिस्पॉन्स-शेपिंग सूचना इंजेक्ट करा. मुक्तपणे एकत्र करा.", "mcpAccessibilityDescription": "MCP टूल आउटपुटची व्याप्ती ठरवते (स्वतंत्र स्टोअर).", "compressionStylesTileSummary": "{tokens, number} टोकन्स वाचवले · {runs, plural, one {# रन स्टाईल केला} other {# रन्स स्टाईल केले}}", @@ -7866,8 +7873,8 @@ "description": "कमांड-आउटपुट फिल्टरिंग." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses टूल आउटपुट", + "description": "समर्थित Responses टूल आउटपुटसाठी सावध संक्षेपण." }, "headroom": { "label": "हेडरूम", @@ -7908,12 +7915,12 @@ "description": "YAGNI शिडी: सर्वात लहान कार्यरत बदल, कोणतीही न मागितलेली ॲब्स्ट्रॅक्शन्स नाहीत." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (आळशी वरिष्ठ डेव्हलपर)", + "description": "आळशी वरिष्ठ-डेव्हलपरची शिस्त: YAGNI पायरी-पायरीने वापरा, मूळ कारण दुरुस्त करा, कार्य करणारा सर्वात लहान फरक ठेवा." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "मला ADHD आहे (कृती-प्रथम)", + "description": "कृती-प्रथम आउटपुट: पुढील कृती आधी, क्रमांकित पायऱ्या, एक ठोस पुढील पाऊल, प्रस्तावना नाही." }, "terse-cjk": { "label": "संक्षिप्त CJK (文言)", @@ -7930,7 +7937,15 @@ "memorySkillsActiveSkillsProvider": "सक्रिय कौशल्य प्रदाता", "cliproxyapiFallback": "CLIProxyAPI फॉलबॅक", "cliproxyapiEnableFallback": "CLIProxyAPI फॉलबॅक सक्षम करा", - "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiUrl": "CLIProxyAPI यूआरएल", + "headroomProxyTitle": "हेडरूम प्रॉक्सी", + "headroomProxyDesc": "पर्यायी Headroom टोकन-बचत प्रॉक्सीचा URL. रिकामे ठेवल्यास HEADROOM_URL किंवा http://localhost:8787 वापरला जातो.", + "headroomProxyUrl": "Headroom यूआरएल", + "headroomProxyUrlHint": "लूपबॅक URL या पृष्ठावरून सुरू करता येतात. बाह्य URL ची फक्त तपासणी केली जाते.", + "headroomProxySave": "जतन करा", + "headroomProxyStart": "सुरू करा", + "headroomProxyStop": "थांबवा", + "headroomProxyExternalHint": "हा URL लूपबॅक नाही, त्यामुळे OmniRoute स्थानिक CLI सुरू करणार नाही.", "cliproxyapiStatus": "CLIProxyAPI स्थिती", "cliproxyapiNotDetected": "आढळले नाही", "cliproxyapiImportAuthTitle": "CLIProxyAPI मधून खाती आयात करा", @@ -7938,11 +7953,11 @@ "cliproxyapiImportAuthButton": "खाती आयात करा", "payloadRulesTitle": "पेलोड नियम", "payloadRulesDesc": "मॉडेल आणि प्रोटोकॉलनुसार विनंती पेलोड म्यूटेशन्स कॉन्फिगर करा. बदल सेटिंग्जमध्ये सेव्ह केले जातात आणि सेव्ह केल्यानंतर लगेच रनटाइममध्ये हॉट रीलोड केले जातात.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "डीफॉल्ट", "payloadRuleDefaultDesc": "जेव्हा आउटगोइंग पेलोडमधून लक्ष्य पाथ गहाळ असतो तेव्हाच पॅरामीटर्स लागू करतो.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "ओव्हरराइड", "payloadRuleOverrideDesc": "पेलोडवर व्हॅल्यूज सक्तीने लागू करतो, त्या पाथवर आधीपासून असलेल्या कोणत्याही गोष्टीला बदलतो.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "फिल्टर", "payloadRuleFilterDesc": "अपस्ट्रीम विनंती पाठवण्यापूर्वी पेलोडमधून ब्लॉक केलेले पॅरामीटर्स काढून टाकतो.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "default प्रमाणेच, परंतु शक्य असेल तेव्हा स्ट्रिंग व्हॅल्यूज प्रथम JSON म्हणून पार्स केल्या जातात. सेव्ह करताना जुना इनपुट अलाईस default-raw देखील स्वीकारला जातो.", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "OpenAI कोडेक्स विनंत्यांसाठी जागतिक स्तरावर service_tier=प्राधान्य इंजेक्ट करा.", "codexFastTierHint": "सक्षम केल्यावर, OmniRoute आधीपासून टियर निर्दिष्ट करत नसलेल्या कनेक्शनसाठी आउटबाउंड कोडेक्स विनंत्यांना service_tier=priority जोडते. प्राधान्य श्रेणीसाठी OpenAI Enterprise API की किंवा ChatGPT-auth Codex पथ आवश्यक आहे; इतर प्रमुख प्रकारांना OpenAI कडून टियर-संबंधित त्रुटी प्राप्त होईल. कोडेक्स प्रदाता पृष्ठावरील प्रति-कनेक्शन सेटिंग्ज प्राधान्य घेतात.", "codexFastTierSaveError": "कोडेक्स फास्ट टियर सेटिंग अपडेट करण्यात अयशस्वी", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex कोटा ऑटो-पिंग", + "codexAutoPingDesc": "प्रत्येक कनेक्शनसाठी निवडून सक्षम करा: Codex सत्राची विंडो रीसेट झाल्यानंतर लगेच एक छोटी विनंती पाठवते, जेणेकरून गरज पडल्यावर ते कोल्ड नसते.", + "codexAutoPingWarning": "प्रत्येक पिंगसाठी वास्तविक Codex कोट्याची थोडी मात्रा वापरली जाते. डीफॉल्टनुसार बंद — तुम्ही सक्रियपणे अवलंबून असलेल्या कनेक्शनसाठीच सक्षम करा.", + "codexAutoPingSaveError": "Codex Auto-Ping सेटिंग अपडेट करण्यात अयशस्वी", + "codexAutoPingToggleAria": "{connection} साठी Codex कोटा ऑटो-पिंग टॉगल करा", "codexFastTierTierLabel": "सेवा स्तर", "codexFastTierTierPriority": "प्राधान्य", "codexFastTierTierFlex": "फ्लेक्स", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "जागतिक तपासणी अंतराल", "resilienceCredentialHealthEveryMinutes": "दर {minutes} मिनिटे", "resilienceCredentialHealthHint": "0 पार्श्वभूमी स्कॅन बंद करतो (कमाल 1440 मिनिटे = 24 तास). स्वतःचे आरोग्य तपासणी मूल्य असलेली कनेक्शन हे जागतिक डीफॉल्ट दुर्लक्षित करतात; एखाद्या कनेक्शनवर 0 ते जागतिक स्कॅन चालू असतानाही वगळते.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "{provider} साठी नेहमी सक्षम — OAuth खात्याच्या सुरक्षिततेसाठी आवश्यक; बंद करता येत नाही.", + "forcedFingerprintBadge": "आवश्यक", "sessionAffinityTitle": "सत्र एफिनिटी", "sessionAffinityDesc": "कोणत्याही प्रदात्यासाठी, एकाच खात्यावर इतक्या सेकंदांसाठी एक संभाषण ठेवते. 0 हे अक्षम करते.", "sessionAffinityTtl": "एफिनिटी TTL (सेकंद)", @@ -8165,7 +8180,7 @@ "cloudflareRelayModalTitle": "Cloudflare Worker Relay डिप्लॉय करा", "cloudflareRelayWarning": "एक Cloudflare Worker डिप्लॉय करते जे Cloudflare च्या एज नेटवर्कद्वारे LLM विनंत्या प्रॉक्सी करते — डायनॅमिक Cloudflare पत्त्यांमागे होस्ट IP लपवते. Worker एक-वेळचे ऑथ सिक्रेट लागू करतो जेणेकरून सार्वजनिक workers.dev URL चा ओपन रिले म्हणून पुन्हा वापर केला जाऊ शकत नाही.", "cloudflareRelayTokenHowto": "My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit अंतर्गत API टोकन तयार करा.", - "cloudflareRelayAccountIdLabel": "Cloudflare Account ID", + "cloudflareRelayAccountIdLabel": "Cloudflare खाते ID", "cloudflareRelayAccountIdHint": "Cloudflare डॅशबोर्ड ओव्हरव्ह्यू पेजच्या उजव्या बाजूला आढळते.", "cloudflareRelayApiTokenLabel": "Cloudflare API टोकन", "cloudflareRelayApiTokenHint": "'Workers Scripts: Edit' परवानगी आवश्यक आहे. टोकन फक्त डिप्लॉयमेंटच्या वेळी वापरले जाते आणि कधीही साठवले जात नाही.", @@ -8187,33 +8202,33 @@ "removeErrorCode": "{code} काढा", "addErrorCode": "त्रुटी कोड जोडा...", "suggestions": "सुझाव:", - "modelLockoutMaxCooldownHint": "≥ Base Cooldown — 3,600,000ms", + "modelLockoutMaxCooldownHint": "≥ बेस कूलडाउन — 3,600,000ms", "modelLockoutEnabled": "मॉडेल लॉकआउट सक्षम करा", "modelLockoutEnabledDescription": "सक्षम केल्यावर, रीट्राय लूप टाळण्यासाठी कॉन्फिगर केलेल्या त्रुटी कोडसह अपयशी ठरणारे मॉडेल तात्पुरते लॉक केले जातात.", "modelLockoutErrorCodes": "त्रुटी कोड", "modelLockoutErrorCodesDescription": "HTTP स्टेटस कोड जे मॉडेल लॉकआउट ट्रिगर करतात. कोड टाईप करा आणि 'जोडा' वर क्लिक करा, किंवा सुचवलेल्यांमधून निवडा.", - "modelLockoutBaseCooldown": "Base Cooldown (ms)", + "modelLockoutBaseCooldown": "बेस कूलडाउन (ms)", "modelLockoutBaseCooldownDescription": "मॉडेलचा पुन्हा प्रयत्न करण्यापूर्वी मिलिसेकंदमधील सुरुवातीचा कूलडाउन कालावधी.", - "modelLockoutMaxCooldown": "Max Cooldown (ms)", + "modelLockoutMaxCooldown": "कमाल कूलडाउन (ms)", "modelLockoutMaxCooldownDescription": "मिलिसेकंदमधील कमाल कूलडाउन कालावधी. जास्त काळ लॉकआउट होण्यापासून रोखतो.", "modelLockoutExponentialBackoff": "एक्स्पोनेन्शियल बॅकऑफ", "modelLockoutExponentialBackoffDescription": "सक्षम केल्यावर, प्रत्येक लागोपाठच्या अपयशामुळे कूलडाउन कालावधी वेगाने वाढतो.", - "modelLockoutMaxBackoffSteps": "Max Backoff Steps", + "modelLockoutMaxBackoffSteps": "कमाल बॅकऑफ टप्पे", "modelLockoutMaxBackoffStepsDescription": "कूलडाउन वाढणे थांबण्यापूर्वी बॅकऑफ पायऱ्यांची कमाल संख्या. बर्‍याच कॉन्फिगरेशनमध्ये Max Cooldown मर्यादा आधी गाठली जाते, ज्यामुळे Max Cooldown वाढवल्यास ही एक सुरक्षा मर्यादा बनते.", "disableSessionStickiness": "सेशन स्टिकिनेस अक्षम करा", "disableSessionStickinessDesc": "राउंड-रॉबिन आणि रँडम कॉम्बोज पहिल्या-मेसेज हॅशद्वारे संपूर्ण संभाषण एका कनेक्शनवर पिन करण्याऐवजी प्रत्येक विनंतीवर वेगळ्या कनेक्शनवर रोटेट होतात. मल्टी-टर्न चॅट्ससाठी प्रॉम्प्ट-कॅशे हिट्स जतन करण्यासाठी हे बंद ठेवा. प्रति-कॉम्बो ओव्हरराइड्सना प्राधान्य दिले जाईल.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "प्रॉम्प्ट-कॅश लोकॅलिटी राउटिंग", + "promptCacheAffinityDesc": "आरोग्य आणि कोटा फेलओव्हर कायम ठेवत, जुळणाऱ्या प्रॉम्प्ट-कॅश कींसाठी त्याच प्रदाता खात्याला प्राधान्य द्या.", + "reasoningTokenBuffer": "रीझनिंग टोकन बफर", + "reasoningTokenBufferDesc": "संपूर्ण बफर ज्ञात आउटपुट मर्यादेत बसत असेल, तर केवळ ज्ञात रीझनिंग मॉडेल्ससाठी कॉम्बो राउटिंगला max_tokens हेडरूम जोडण्याची अनुमती द्या.", + "zeroLatencyOptimizations": "शून्य-विलंब ऑप्टिमायझेशन्स", + "zeroLatencyOptimizationsDesc": "हेजिंग, प्रेडिक्टिव्ह TTFT स्किप्स आणि प्रोॲक्टिव्ह फॉलबॅक कॉम्प्रेशनसाठी निवडून सक्षम करा. या विलंब वैशिष्ट्यांनी लक्ष्यांशी स्पर्धा करू नये किंवा फॉलबॅक विनंत्या कॉम्प्रेस करू नयेत यासाठी हे बंद ठेवा.", "credentialRedaction": "क्रेडेन्शियल रिडॅक्शन", "credentialRedactionDesc": "प्रदात्यांना पाठवलेल्या संदर्भातून आणि प्रतिसादांमधून API की, टोकन आणि सिक्रेट्स रिडॅक्ट करा.", "enableCredentialRedaction": "क्रेडेंशियल रिडॅक्शन सक्षम करा", "enableCredentialRedactionDesc": "मेसेज, टूल कॉल्स आणि प्रतिसादांमधून API की, टोकन्स, प्रायव्हेट की आणि JWTs काढून टाकते.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "स्वयंचलित सिंक बंद", + "pricingAutoSyncEnabled": "स्वयंचलित सिंक सुरू", "modalityBridgeIntro": "मल्टिमोडल सामग्री केवळ-मजकूर मॉडेलपर्यंत पोहोचण्यापूर्वी मजकूरात रूपांतरित करा. व्हिजन, ऑडिओ आणि व्हिडिओ ब्रिज उपलब्ध व कॉन्फिगर करता येतात.", "modalityBridgeVisionTab": "दृष्टी", "modalityBridgeAudioTab": "ऑडिओ", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "आरोग्य", "cliproxyapiPort": "पोर्ट", "qdrantHost": "होस्ट", - "qdrantCollection": "संग्रह", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "संग्रह" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "RTK इंजिन", + "description": "टूल आउटपुट, टर्मिनल लॉग्स आणि बिल्ड परिणामांसाठी कमांड-जागरूक कॉम्प्रेशन.", + "enabled": "सक्षम", + "intensity": "तीव्रता", + "intensityMinimal": "किमान", + "intensityStandard": "मानक", + "intensityAggressive": "आक्रमक", + "toolResults": "टूल परिणाम", + "assistantMessages": "असिस्टंट संदेश", + "codeBlocks": "कोड ब्लॉक्स", "filterCatalog": "फिल्टर कॅटलॉग", "filterCatalogDesc": "श्रेणीनुसार उपलब्ध आउटपुट फिल्टर", "guidedConfig": "कॉन्फिगरेशन", "guidedConfigDesc": "RTK तुमचे टर्मिनल आउटपुट कसे फिल्टर करते ते समायोजित करा", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "कमाल ओळी", + "maxChars": "कमाल वर्ण", "deduplicateThreshold": "डुप्लिकेट थ्रेशोल्ड", "customFilters": "सानुकूल फिल्टर", "detectedType": "शोधलेला प्रकार", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "अपयश", "rawOutputAlways": "नेहमी", "rawOutputMaxBytes": "कच्चे आउटपुट कमाल बाइट्स", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "फिल्टर चाचणी", + "pasteOutput": "फिल्टरिंगची चाचणी घेण्यासाठी टूल आउटपुट पेस्ट करा...", "presetHigh": "आक्रमक", "presetLow": "प्रकाश", "presetMaxChars": "कमाल आउटपुट वर्ण", "presetMaxLines": "कमाल आउटपुट ओळी", "presetMedium": "मानक", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "चालवा", + "result": "परिणाम", + "previewEmpty": "RTK आउटपुटचे पूर्वावलोकन करण्यासाठी नमुना चालवा.", + "detected": "आढळले", "masterSwitchOffAlert": "टोकन सेव्हर मास्टर स्विच बंद आहे — तुम्ही एंडपॉइंट पेजवरून ते सुरू करेपर्यंत हे सेटिंग्ज विनंत्यांवर परिणाम करणार नाहीत.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "फिल्टर केलेले टोकन्स", + "filtersActive": "सक्रिय फिल्टर्स", + "requests": "विनंत्या", + "avgSavings": "सरासरी बचत", "simpleMode": "साधे", "advancedMode": "प्रगत", "searchFilters": "फिल्टर शोधा...", @@ -8499,7 +8506,7 @@ "description": "स्पष्ट रो-काउंट मार्कर्ससह एकसमान JSON ॲरेचे लॉसलेस टॅब्युलर कॉम्पॅक्शन." }, "session-dedup": { - "name": "Session Dedup", + "name": "सत्र डीडुप्लिकेशन", "description": "रिकव्हरेबल कंटेंट मार्कर्ससह क्रॉस-टर्न ब्लॉक डीडुप्लिकेशन." }, "ccr": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "कॉम्प्रेशन कॉम्बो", + "description": "वेगवेगळ्या रूटिंग परिस्थितींसाठी इंजिने कशी एकत्र केली जातात ते निश्चित करा.", + "createCombo": "कॉम्प्रेशन कॉम्बो तयार करा", + "editCombo": "संपादित करा", + "deleteCombo": "हटवा", + "deleteConfirm": "हा कॉम्प्रेशन कॉम्बो हटवायचा?", + "pipeline": "पाइपलाइन", + "addStep": "चरण जोडा", + "removeStep": "काढून टाका", + "name": "नाव", + "descriptionField": "वर्णन", + "languagePacks": "भाषा पॅक", + "outputMode": "आउटपुट मोड", + "assignToRouting": "रूटिंग कॉम्बोंना नियुक्त करा", + "noAssignments": "कोणतेही रूटिंग कॉम्बो उपलब्ध नाहीत", + "default": "डीफॉल्ट", + "setAsDefault": "डीफॉल्ट म्हणून सेट करा", + "save": "जतन करा", + "cancel": "रद्द करा", + "enabled": "सक्षम", "loading": "लोड होत आहे...", "hubTitle": "कॉम्प्रेशन हब", "hubDescription": "कोणते कॉम्प्रेशन प्रोफाइल जागतिक स्तरावर चालेल ते निवडते.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "सध्या फक्त Claude (Anthropic) साठी उपलब्ध आहे. हा एक डेलिगेटेड मोड आहे: प्रोव्हाइडर सर्व्हर-साइडवरील जुने tool-use ब्लॉक्स साफ करतो — आम्ही संदेश पुन्हा लिहीत नाही. याचा इतर प्रोव्हाइडर्सवर परिणाम होत नाही.", "namedCombos": "नामित कॉम्बोज", "namedCombosDescription": "वेगवेगळ्या पाइपलाइन्स सेव्ह करा आणि त्या विशिष्ट राउटिंग कॉम्बोजना नियुक्त करा.", + "activeProfileMasterSwitchOffWarning": "मास्टर \"Prompt Compression\" स्विच चालू करेपर्यंत खालील सक्रिय प्रोफाइल कार्यान्वित होणार नाही.", + "activeProfileMasterSwitchOffCta": "Settings मध्ये ते चालू करा", "comboNamePlaceholder": "कॉम्बोचे नाव", "descriptionPlaceholder": "वर्णन", "nameRequired": "सेव्ह करण्यापूर्वी कॉम्बोचे नाव प्रविष्ट करा.", @@ -8674,9 +8683,7 @@ "languagePacksList": "भाषा पॅक्स: {packs}", "dragToReorder": "पायरीचा क्रम बदलण्यासाठी ड्रॅग करा", "engine": "इंजिन", - "intensity": "तीव्रता", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "तीव्रता" }, "compressionStudio": { "noRun": "कोणताही कॉम्प्रेशन रन उपलब्ध नाही.", @@ -8705,7 +8712,7 @@ "run": "चालवा", "laneRejected": "नाकारले: {reason}", "error": "त्रुटी", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "एकत्रित पाइपलाइन पूर्वावलोकन अयशस्वी झाले: {reason}", "combinedFlow": "एकत्रित फ्लो", "eachLayer": "प्रत्येक लेयर स्वतंत्रपणे", "diff": "फरक", @@ -8780,27 +8787,27 @@ }, "enableTitle": "इंजिन सक्षम करा", "enableDescription": "स्टॅकमध्ये शेवटी चालते (RTK/Caveman मजकूर साफ केल्यानंतर, OmniGlyph उर्वरित मजकूर इमेजेसमध्ये रूपांतरित करते) आणि omniglyph मोडद्वारे स्वतंत्रपणे देखील चालते. हे एक पूर्वावलोकन आहे आणि एंड-टू-एंड प्रमाणीकरण पूर्ण होईपर्यंत डीफॉल्टनुसार बंद राहते.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "कॉम्प्रेशन प्रोफाइल", + "profileDescription": "प्रोफाइल ही कमाल मर्यादा आहे, किमान नाही: अधिक कठोर प्रोफाइल प्रति-चरण ओव्हरराइडद्वारे पुन्हा शिथिल करता येत नाही. या कोडबेसवर मोजल्याप्रमाणे: coding-safe किंवा balanced वापरताना, अद्याप इतिहास जमा न झालेल्या सत्रात काहीही कॉम्प्रेस होत नाही, कारण दोन्ही किमान-अक्षर मर्यादा वाढवतात आणि सिस्टम प्रॉम्प्ट, टूल स्कीमा व टूल परिणाम मूळ स्वरूपात ठेवतात.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "आक्रमक (डीफॉल्ट)", + "description": "प्रकाशित पावत्यांनी मोजलेले धोरण. सिस्टम प्रॉम्प्ट, टूल दस्तऐवजीकरण आणि सघन इतिहासाचे प्रतिमारूप तयार करते." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "संतुलित", + "description": "सक्रिय स्थिती मूळ स्वरूपात ठेवते आणि शेवटच्या 8 संवाद-फेऱ्यांचे संरक्षण करते; फक्त जुना पूर्ण झालेला इतिहास संक्षिप्त करते." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "कोडिंग-सुरक्षित", + "description": "अधिकार-सूचना, टूल स्कीमा आणि सक्रिय टूल आउटपुट मूळ स्वरूपात ठेवून शेवटच्या 12 संवाद-फेऱ्यांचे संरक्षण करते. सत्रात इतिहास जमा होईपर्यंत काहीही कॉम्प्रेस करत नाही." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "पासथ्रू", + "description": "कोणतेही रूपांतरण न करता रूट करते. इंजिन वगळले जाते आणि विनंती कोणताही बदल न करता पुढे पाठवली जाते." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph कॉम्प्रेशन प्रोफाइल निवडा", "saved": "जतन केले.", "saveFailed": "जतन करता आले नाही.", "enableAria": "OmniGlyph इंजिन सक्षम करा", @@ -8873,7 +8880,7 @@ "providerExposureHint": "सक्षम केल्यावर, शोधलेली मॉडेल्स OmniRoute मधील प्रोव्हायडर सिलेक्टर्समध्ये दिसतात.", "providerExposureUpdateFailed": "अपडेट करण्यात अयशस्वी (HTTP {status})", "providerExposureNetworkFailed": "नेटवर्क त्रुटी — प्रोव्हायडर एक्सपोजर सेटिंग अपडेट करता आली नाही", - "webUi": "9Router Web UI", + "webUi": "9Router वेब UI", "openNewTab": "नवीन टॅबमध्ये उघडा", "filterLogs": "लॉग्स फिल्टर करा…", "resume": "पुन्हा सुरू करा", @@ -8885,7 +8892,7 @@ "fallbackRouting": "फॉलबॅक राउटिंग", "fallbackRoutingDescription": "CLIProxyAPI द्वारे अयशस्वी प्रोव्हायडर विनंत्यांचा पुन्हा प्रयत्न करा", "enableFallback": "फॉलबॅक सक्षम करा", - "cliproxyUrl": "CLIProxyAPI URL", + "cliproxyUrl": "CLIProxyAPI यूआरएल", "fallbackCodes": "फॉलबॅक स्टेटस कोड (स्वल्पविरामाने विभक्त)", "invalidUrl": "अवैध URL — http:// किंवा https:// ने सुरू होणे आवश्यक आहे", "saved": "जतन केले", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "नियम-आधारित संदेश संक्षेपण, भाषा पॅक, विश्लेषण आणि आउटपुट मोड नियंत्रणे.", "advancedConfig": "प्रगत कॉन्फिगरेशन", "advancedConfigDesc": "फाइन-ट्यून कॉम्प्रेशन वर्तन", "aggressiveSettings": "आक्रमक सेटिंग्ज", "aggressiveSettingsDesc": "संभाव्य गुणवत्तेच्या ट्रेड-ऑफसह जास्तीत जास्त कॉम्प्रेशन", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "विनंत्या", + "tokensSaved": "वाचवलेले टोकन", + "savingsPercent": "बचत %", + "avgLatency": "सरासरी विलंब", + "languagePacks": "भाषा पॅक", + "languagePacksDesc": "विशिष्ट भाषांसाठी संक्षेपण नियम सक्षम करा.", "labelAutoTrigger": "संदर्भ ओलांडल्यावर स्वयं-संकुचित करा", "labelCompressionRate": "संक्षेप शक्ती", "labelMaxTokens": "प्रति संदेश लक्ष्य टोकन", "labelMinLength": "किमान संदेश लांबी", "labelMinSavings": "जतन करण्यासाठी किमान टोकन", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "सक्षम", + "autoDetect": "भाषा आपोआप ओळखा", + "rulesCount": "{count} नियम", "inputCompressionTitle": "इनपुट कॉम्प्रेशन", "inputCompressionDesc": "चॅट इतिहास कमी शब्दांत पुन्हा लिहा. इनपुट टोकन्स ~50% ने कमी करते.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "संक्षेपण विश्लेषण", + "noAnalytics": "अद्याप संक्षेपण विश्लेषण उपलब्ध नाही.", "masterDisabledWarning": "Token Saver मास्टर स्विच OFF आहे — तुम्ही ते Compression Settings मधून सुरू करेपर्यंत किंवा येथे बदलेपर्यंत या सेटिंग्जचा विनंत्यांवर परिणाम होणार नाही.", "outputMode": "आउटपुट मोड", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "आउटपुट मोड", "quickSettings": "द्रुत सेटिंग्ज", "quickSettingsDesc": "प्रारंभ करण्यासाठी मूलभूत कॉम्प्रेशन सेटिंग्ज", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "स्वयं-स्पष्टता बायपास", + "bypassConditions": "बायपास अटी", "bypassConditionsList": "सुरक्षा, अपरिवर्तनीय, स्पष्टीकरण, ऑर्डर-संवेदनशील", "simpleMode": "साधे", "advancedMode": "प्रगत", @@ -8944,52 +8951,52 @@ "ultraSettings": "अल्ट्रा सेटिंग्ज", "ultraSettingsDesc": "SLM-चालित सिमेंटिक कॉम्प्रेशन", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "संक्षिप्त उत्तर द्या. तांत्रिक संज्ञा, कोड, त्रुटी, URLs आणि आयडेंटिफायर्स जसेच्या तसे ठेवा.", + "full": "अतिशय थोडक्यात आणि नेमके उत्तर द्या. सर्व तांत्रिक आशय जतन करा.", + "ultra": "सामान्य तांत्रिक संक्षेप वापरून अत्यंत थोडक्यात उत्तर द्या. अचूक चिन्हे जशीच्या तशी ठेवा." } }, "translator": { - "title": "Translator", - "metaTitle": "Translator Playground | OmniRoute", - "metaDescription": "Debug, test, and visualize API format translations between providers", - "playgroundTitle": "Translator Playground", - "playground": "Playground", - "realtime": "Real-Time Translation Activity", + "title": "भाषांतरक", + "metaTitle": "भाषांतरक प्लेग्राउंड | OmniRoute", + "metaDescription": "प्रदात्यांमधील API स्वरूप भाषांतरे डीबग करा, तपासा आणि दृश्यरूपात पाहा", + "playgroundTitle": "भाषांतरक प्लेग्राउंड", + "playground": "प्लेग्राउंड", + "realtime": "रिअल-टाइम भाषांतर क्रियाकलाप", "chatTester": "Chat Tester", - "testBench": "Test Bench", - "liveMonitor": "Live Monitor", - "modeDescriptionPlayground": "Paste any API request body and see how OmniRoute translates it between provider formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", - "modeDescriptionChatTester": "Send real chat requests through OmniRoute and inspect the full round-trip: input, translated request, provider response, and translated output.", - "modeDescriptionTestBench": "Run predefined scenarios and compare compatibility across providers and models.", - "modeDescriptionLiveMonitor": "Watch translation events in real time as requests flow through OmniRoute.", - "modeDescriptionFallback": "Debug, test, and visualize how OmniRoute translates API requests between providers.", - "recentTranslations": "Recent Translations", - "noTranslations": "No translations yet", - "source": "Source", - "target": "Target", - "time": "Time", + "testBench": "चाचणी मंच", + "liveMonitor": "थेट निरीक्षण", + "modeDescriptionPlayground": "कोणत्याही API विनंतीचा मुख्य भाग पेस्ट करा आणि OmniRoute त्याचे प्रदाता स्वरूपांमध्ये (OpenAI ↔ Claude ↔ Gemini ↔ Responses API) भाषांतर कसे करते ते पाहा", + "modeDescriptionChatTester": "OmniRoute द्वारे वास्तविक चॅट विनंत्या पाठवा आणि संपूर्ण फेरी तपासा: इनपुट, भाषांतरित विनंती, प्रदात्याचा प्रतिसाद आणि भाषांतरित आउटपुट.", + "modeDescriptionTestBench": "पूर्वनिर्धारित परिस्थिती चालवा आणि प्रदाते व मॉडेल्समधील सुसंगततेची तुलना करा.", + "modeDescriptionLiveMonitor": "विनंत्या OmniRoute मधून प्रवाहित होत असताना भाषांतर इव्हेंट्स रिअल टाइममध्ये पाहा.", + "modeDescriptionFallback": "OmniRoute प्रदात्यांदरम्यान API विनंत्यांचे भाषांतर कसे करते ते डीबग करा, तपासा आणि दृश्यरूपात पाहा.", + "recentTranslations": "अलीकडील भाषांतरे", + "noTranslations": "अद्याप कोणतेही भाषांतर नाही", + "source": "स्रोत", + "target": "लक्ष्य", + "time": "वेळ", "model": "Model", "status": "Status", - "latency": "Latency", - "totalTranslations": "Total Translations", - "successful": "Successful", - "errors": "Errors", - "avgLatency": "Avg Latency", + "latency": "विलंब", + "totalTranslations": "एकूण भाषांतरे", + "successful": "यशस्वी", + "errors": "त्रुटी", + "avgLatency": "सरासरी विलंब", "millisecondsShort": "{value}ms", "notAvailableSymbol": "—", - "liveAutoRefreshing": "Live — Auto-refreshing", - "paused": "Paused", - "eventsAppearHint": "Translation events appear here as requests flow through OmniRoute. Use any of these methods to generate events:", + "liveAutoRefreshing": "लाइव्ह — स्वयंचलितपणे रिफ्रेश होत आहे", + "paused": "विराम दिला", + "eventsAppearHint": "OmniRoute मधून विनंत्या प्रवाहित होत असताना भाषांतर इव्हेंट येथे दिसतात. इव्हेंट निर्माण करण्यासाठी यापैकी कोणतीही पद्धत वापरा:", "chatTesterTab": "Chat Tester", "testBenchTab": "Test Bench", - "externalApiCalls": "External API calls", - "ideCliIntegrations": "IDE/CLI integrations", - "inMemoryNote": "Note: Events are stored in-memory and reset when the server restarts.", + "externalApiCalls": "बाह्य API कॉल्स", + "ideCliIntegrations": "IDE/CLI एकत्रीकरणे", + "inMemoryNote": "टीप: इव्हेंट्स मेमरीमध्ये संग्रहित केले जातात आणि सर्व्हर रीस्टार्ट झाल्यावर रीसेट होतात.", "ok": "OK", "errorShort": "ERR", - "formatConverter": "Format Converter", - "formatConverterDescription": "Paste or type a JSON request body. The translator will auto-detect the source format and convert it to the target format. Use this to debug how OmniRoute translates requests between formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", + "formatConverter": "फॉरमॅट कन्व्हर्टर", + "formatConverterDescription": "JSON विनंतीचा मुख्य भाग पेस्ट करा किंवा टाइप करा. ट्रान्सलेटर स्रोत फॉरमॅट आपोआप ओळखून त्याचे लक्ष्य फॉरमॅटमध्ये रूपांतर करेल. OmniRoute विविध फॉरमॅटदरम्यान विनंत्यांचे भाषांतर कसे करते हे डीबग करण्यासाठी याचा वापर करा (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (मध्यवर्ती) → {target}", "translationPathDirect": "{source} → {target} (थेट अनुवादक)", "translationPathPassthrough": "समान स्वरूप — भाषांतर आवश्यक नाही", @@ -9012,79 +9019,79 @@ "featureDirectPathsDesc": "काही फॉरमॅट जोड्या (क्लॉड→जेमिनी) मध्ये थेट अनुवादक असतात जे OpenAI हबला बायपास करतात, अधिक अचूक आउटपुट देतात.", "featureImageMapping": "प्रतिमा आकार मॅपिंग", "featureImageMappingDesc": "API फॉरमॅट (उदा. OpenAI तपशील स्तर → मिथुन परिमाणे) दरम्यान प्रतिमा परिमाण नियमांचे भाषांतर करते.", - "input": "Input", - "output": "Output", + "input": "इनपुट", + "output": "आउटपुट", "auto": "Auto", - "swapFormats": "Swap formats", - "translateAction": "Translate", - "clear": "Clear", - "inputPlaceholder": "Paste a request body here or select a template below...", - "exampleTemplates": "Example Templates", - "exampleTemplatesHint": "— Click to load", - "templateLoadHint": "Template loads the request in {format} format. Change Source Format to load in a different format.", - "compatibilityTester": "Compatibility Tester", - "compatibilityReport": "Compatibility Report", - "testBenchDescription": "Run predefined scenarios (Simple Chat, Tool Calling, etc.) to verify translation and provider compatibility. Select a source format and target provider, then run all tests to see a compatibility percentage. Use this to find which features work across providers.", - "targetProvider": "Target Provider", - "runAllTests": "Run All Tests", - "runTest": "Run Test", - "reRun": "Re-run", - "running": "Running...", - "passed": "passed", - "failed": "failed", - "passedIconLabel": "✅ Passed", - "chunks": "chunks", - "scenarioSimpleChat": "Simple Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "swapFormats": "फॉरमॅट अदलाबदल करा", + "translateAction": "भाषांतर करा", + "clear": "साफ करा", + "inputPlaceholder": "येथे विनंतीचा मुख्य भाग पेस्ट करा किंवा खालील टेम्पलेट निवडा...", + "exampleTemplates": "उदाहरण टेम्पलेट्स", + "exampleTemplatesHint": "— लोड करण्यासाठी क्लिक करा", + "templateLoadHint": "टेम्पलेट विनंती {format} फॉरमॅटमध्ये लोड करते. वेगळ्या फॉरमॅटमध्ये लोड करण्यासाठी स्रोत फॉरमॅट बदला.", + "compatibilityTester": "सुसंगतता परीक्षक", + "compatibilityReport": "सुसंगतता अहवाल", + "testBenchDescription": "भाषांतर आणि प्रदाता सुसंगतता पडताळण्यासाठी पूर्वनिर्धारित परिस्थिती (साधे चॅट, टूल कॉलिंग इ.) चालवा. स्रोत फॉरमॅट आणि लक्ष्य प्रदाता निवडा, त्यानंतर सुसंगततेची टक्केवारी पाहण्यासाठी सर्व चाचण्या चालवा. विविध प्रदात्यांमध्ये कोणती वैशिष्ट्ये कार्य करतात हे शोधण्यासाठी याचा वापर करा.", + "targetProvider": "लक्ष्य प्रदाता", + "runAllTests": "सर्व चाचण्या चालवा", + "runTest": "चाचणी चालवा", + "reRun": "पुन्हा चालवा", + "running": "चालू आहे...", + "passed": "उत्तीर्ण", + "failed": "अयशस्वी", + "passedIconLabel": "✅ उत्तीर्ण", + "chunks": "खंड", + "scenarioSimpleChat": "साधे चॅट", + "scenarioToolCalling": "टूल कॉलिंग", + "scenarioMultiTurn": "बहु-सत्रीय", "scenarioThinking": "Thinking", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "सिस्टम प्रॉम्प्ट", + "scenarioStreaming": "स्ट्रीमिंग", "templateNames": { - "simple-chat": "Simple Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "साधी चॅट", + "tool-calling": "टूल कॉलिंग", + "multi-turn": "बहु-टप्प्यांचा संवाद", "thinking": "Thinking", - "system-prompt": "System Prompt", - "streaming": "Streaming", + "system-prompt": "सिस्टम प्रॉम्प्ट", + "streaming": "स्ट्रीमिंग", "vision": "दृष्टी", "schema-coercion": "स्कीमा जबरदस्ती" }, "templateDescriptions": { - "simple-chat": "Basic text message", - "tool-calling": "Function/tool invocation", - "multi-turn": "Conversation with history", - "thinking": "Extended thinking / reasoning", - "system-prompt": "Complex system instructions", - "streaming": "SSE streaming request", + "simple-chat": "मूलभूत मजकूर संदेश", + "tool-calling": "फंक्शन/टूलचे आवाहन", + "multi-turn": "इतिहासासह संभाषण", + "thinking": "विस्तारित विचार / तर्क", + "system-prompt": "जटिल सिस्टम सूचना", + "streaming": "SSE स्ट्रीमिंग विनंती", "vision": "इमेज इनपुटसह मल्टीमोडल विनंती", "schema-coercion": "संरचित-आउटपुट / JSON स्कीमा अंमलबजावणी" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful assistant.", - "userGreeting": "Hello! How are you today?" + "system": "तुम्ही एक उपयुक्त सहाय्यक आहात.", + "userGreeting": "नमस्कार! आज तुम्ही कसे आहात?" }, "toolCalling": { - "userWeather": "What's the weather in São Paulo?", - "toolDescription": "Get current weather for a location", - "cityNameDescription": "City name" + "userWeather": "São Paulo मधील हवामान कसे आहे?", + "toolDescription": "एखाद्या स्थानाचे सध्याचे हवामान मिळवा", + "cityNameDescription": "शहराचे नाव" }, "multiTurn": { - "system": "You are a coding assistant.", - "userInitial": "Write a function to sort an array in Python.", - "assistantExample": "Here's a simple sort function: ```python\ndef sort_array(arr): return sorted(arr)\n```", - "userFollowUp": "Now make it sort in descending order." + "system": "तुम्ही एक कोडिंग सहाय्यक आहात.", + "userInitial": "Python मध्ये अॅरे क्रमबद्ध करण्यासाठी फंक्शन लिहा.", + "assistantExample": "हे एक साधे क्रमवारी लावणारे फंक्शन आहे: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userFollowUp": "आता ते उतरत्या क्रमाने क्रमबद्ध करा." }, "thinking": { - "question": "What is the sum of the first 100 prime numbers?" + "question": "पहिल्या 100 मूळ संख्यांची बेरीज किती आहे?" }, "systemPrompt": { - "systemInstruction": "You are a senior software engineer specializing in distributed systems. Answer questions concisely using industry best practices. Always provide code examples when relevant. Format your responses using markdown.", - "question": "How do I implement a circuit breaker pattern?" + "systemInstruction": "तुम्ही वितरित प्रणालींमध्ये विशेषज्ञ असलेले वरिष्ठ सॉफ्टवेअर अभियंता आहात. उद्योगातील सर्वोत्तम पद्धती वापरून प्रश्नांची संक्षिप्त उत्तरे द्या. जेव्हा संबंधित असेल तेव्हा नेहमी कोडची उदाहरणे द्या. तुमची उत्तरे markdown वापरून स्वरूपित करा.", + "question": "मी सर्किट ब्रेकर पॅटर्न कसा अंमलात आणू?" }, "streaming": { - "prompt": "Tell me a short story about a robot learning to paint." + "prompt": "चित्रकला शिकणाऱ्या रोबोटबद्दल मला एक छोटी गोष्ट सांगा." }, "vision": { "system": "तुम्ही सहाय्यक आहात जे प्रतिमांचे अचूक वर्णन करतात.", @@ -9097,12 +9104,12 @@ "cityDescription": "क्वेरी करण्यासाठी शहर, उदा. 'टोक्यो' किंवा 'न्यूयॉर्क'." } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", - "noTemplateForFormat": "No template for this format", - "translationFailed": "Translation failed: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "openaiCompatibleLabel": "OpenAI सुसंगत", + "anthropicCompatibleLabel": "Anthropic सुसंगत", + "noTemplateForFormat": "या स्वरूपासाठी कोणताही टेम्पलेट नाही", + "translationFailed": "भाषांतर अयशस्वी: {error}", + "pipelineDebugger": "पाइपलाइन डीबगर", + "translationPipeline": "भाषांतर पाइपलाइन", "loading": "लोड होत आहे…", "compressionOriginal": "मूळ", "compressionCompressed": "कॉम्प्रेस केलेले", @@ -9111,44 +9118,44 @@ "pipelineStepsAria": "पाइपलाइन पायऱ्या", "copyIntermediateJson": "इंटरमीडिएट JSON कॉपी करा", "copyOutputJson": "आउटपुट JSON कॉपी करा", - "pipelineVisualization": "Pipeline visualization", - "pipelineVisualizationHint": "Send a message to see how your request flows through detection → translation → provider call.", - "chatTesterDescription": "Send messages as a specific client format and inspect each step of the translation pipeline.", - "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response", - "clickStepToInspect": "Click any step to inspect the data at that stage.", - "clientFormat": "Client Format", - "provider": "Provider", - "modelPlaceholder": "Select or type a model name...", - "sendMessageToSeePipeline": "Send a message to see the translation pipeline", - "chatMessageHintPrefix": "Your message will be formatted as a", - "chatMessageHintSuffix": "request, translated through the pipeline, and sent to the selected provider.", - "youWithFormat": "You ({format})", - "assistant": "Assistant", - "typeMessage": "Type a message...", - "send": "Send", - "clientRequest": "Client Request", - "clientRequestDescription": "The request body as your client would send it", - "formatDetected": "Format Detected", - "formatDetectedDescription": "OmniRoute auto-detects the API format from the request structure", - "openaiIntermediate": "OpenAI Intermediate", - "openaiIntermediateDescription": "All formats are first normalized to OpenAI format (the universal bridge)", - "providerFormat": "Provider Format", - "providerFormatDescription": "OpenAI format is translated to the provider's native format", - "providerResponse": "Provider Response", - "providerResponseRawDescription": "The raw response from the provider API", - "providerResponseSseDescription": "The raw SSE stream from the provider API", - "unexpectedError": "An unexpected error occurred", - "error": "Error", - "errorMessage": "Error: {message}", - "requestFailed": "Request failed", - "noTextExtracted": "(No text extracted)", + "pipelineVisualization": "पाइपलाइन दृश्यीकरण", + "pipelineVisualizationHint": "तुमची विनंती शोध → भाषांतर → प्रदाता कॉल या प्रक्रियेतून कशी जाते हे पाहण्यासाठी संदेश पाठवा.", + "chatTesterDescription": "विशिष्ट क्लायंट स्वरूपात संदेश पाठवा आणि भाषांतर पाइपलाइनच्या प्रत्येक टप्प्याचे निरीक्षण करा.", + "chatTesterFlow": "क्लायंट विनंती → स्वरूप शोध → OpenAI मध्यवर्ती स्वरूप → प्रदाता स्वरूप → प्रतिसाद", + "clickStepToInspect": "त्या टप्प्यावरील डेटाचे निरीक्षण करण्यासाठी कोणत्याही टप्प्यावर क्लिक करा.", + "clientFormat": "क्लायंट स्वरूप", + "provider": "प्रदाता", + "modelPlaceholder": "मॉडेलचे नाव निवडा किंवा टाइप करा...", + "sendMessageToSeePipeline": "भाषांतर पाइपलाइन पाहण्यासाठी संदेश पाठवा", + "chatMessageHintPrefix": "तुमचा संदेश या स्वरूपात मांडला जाईल:", + "chatMessageHintSuffix": "विनंती, पाइपलाइनद्वारे भाषांतरित केली जाईल आणि निवडलेल्या प्रदात्याकडे पाठवली जाईल.", + "youWithFormat": "तुम्ही ({format})", + "assistant": "सहाय्यक", + "typeMessage": "संदेश टाइप करा...", + "send": "पाठवा", + "clientRequest": "क्लायंट विनंती", + "clientRequestDescription": "तुमचा क्लायंट जसा पाठवेल तसा विनंतीचा मजकूर", + "formatDetected": "आढळलेले स्वरूप", + "formatDetectedDescription": "OmniRoute विनंतीच्या संरचनेवरून API स्वरूप आपोआप ओळखते", + "openaiIntermediate": "OpenAI मध्यवर्ती स्वरूप", + "openaiIntermediateDescription": "सर्व स्वरूपे प्रथम OpenAI स्वरूपात (सार्वत्रिक दुवा) प्रमाणित केली जातात", + "providerFormat": "प्रदाता स्वरूप", + "providerFormatDescription": "OpenAI स्वरूपाचे प्रदात्याच्या मूळ स्वरूपात भाषांतर केले जाते", + "providerResponse": "प्रदात्याचा प्रतिसाद", + "providerResponseRawDescription": "प्रदाता API कडून मिळालेला कच्चा प्रतिसाद", + "providerResponseSseDescription": "प्रदाता API कडून मिळालेला कच्चा SSE प्रवाह", + "unexpectedError": "एक अनपेक्षित त्रुटी आली", + "error": "त्रुटी", + "errorMessage": "त्रुटी: {message}", + "requestFailed": "विनंती अयशस्वी झाली", + "noTextExtracted": "(कोणताही मजकूर काढता आला नाही)", "liveMonitorMemoryNote": "इव्हेंट मेमरीमध्ये संग्रहित केले जातात आणि रीस्टार्ट केल्यावर गमावले जातात.", "liveMonitorMemoryCapNote": "कमाल 200 इव्हेंट राखले.", "eventSourcesLabel": "इव्हेंट स्रोत:", "eventSourceTranslatorPage": "• अनुवादक पृष्ठ (चॅट परीक्षक, चाचणी खंडपीठ)", "eventSourceMainPipeline": "• मुख्य विनंती पाइपलाइन (CLI/IDE/API रहदारी)", - "liveMonitorDescriptionPrefix": "Shows translation events as API calls flow through OmniRoute. Events come from the in-memory buffer (resets on restart). Use", - "liveMonitorDescriptionSuffix": ", or external API calls to generate events.", + "liveMonitorDescriptionPrefix": "API कॉल OmniRoute मधून प्रवाहित होताना भाषांतर घटना दाखवते. घटना इन-मेमरी बफरमधून येतात (रीस्टार्ट केल्यावर रीसेट होतात). वापरा", + "liveMonitorDescriptionSuffix": ", किंवा घटना निर्माण करण्यासाठी बाह्य API कॉल वापरा.", "streamTransformer": "प्रवाह ट्रान्सफॉर्मर", "modeDescriptionStreamTransformer": "प्रतिसाद ट्रान्सफॉर्मरद्वारे चॅट पूर्णता SSE प्रवाह चालवा.", "streamTransformerTitle": "प्रतिसाद प्रवाह ट्रान्सफॉर्मर", @@ -9259,7 +9266,7 @@ "streamTransformFailed": "स्ट्रीम रूपांतरित करण्यात अयशस्वी" }, "usage": { - "title": "Usage", + "title": "वापर", "grokExtraUsageCredits": "अतिरिक्त वापर क्रेडिट्स", "grokAutoTopUp": "स्वयंचलित टॉप-अप", "grokAutoTopUpUnavailable": "उपलब्ध नाही", @@ -9277,66 +9284,66 @@ "kiloPassRemaining": "शिल्लक", "kiloPassRenews": "{count} दिवसांत नूतनीकरण होईल", "kiloPassUsageLabel": "या महिन्याचा वापर", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "अतिरिक्त वापर क्रेडिट्स", + "kimiExtraUsage": "अतिरिक्त वापर", + "kimiExtraUsageEnabled": "सक्षम", + "kimiExtraUsageDisabled": "अक्षम", + "kimiExtraUsageFrozen": "गोठवलेले", + "kimiExtraUsageUnavailable": "अनुपलब्ध", + "kimiMonthlyUsed": "या महिन्यात वापरलेले", + "kimiMonthlyLimit": "मासिक मर्यादा", + "kimiMonthlyLimitUnlimited": "अमर्यादित", + "kimiAdditionalCredits": "अतिरिक्त क्रेडिट्स", + "loggerTab": "लॉगर", "proxyTab": "Proxy", - "budgetManagement": "Budget Management", - "budgetSaved": "Budget limits saved", - "budgetSaveFailed": "Failed to save budget", - "loadingBudgetData": "Loading budget data...", - "noApiKeysTitle": "No API Keys", - "noApiKeysDescription": "Add API keys first to set up budget limits.", - "apiKey": "API Key", - "todaysSpend": "Today's Spend", - "thisMonth": "This Month", - "setLimits": "Set Limits", - "dailyLimitUsd": "Daily Limit (USD)", - "monthlyLimitUsd": "Monthly Limit (USD)", - "warningThresholdPercent": "Warning Threshold (%)", - "dailyLimitPlaceholder": "e.g. 5.00", - "monthlyLimitPlaceholder": "e.g. 50.00", + "budgetManagement": "बजेट व्यवस्थापन", + "budgetSaved": "बजेट मर्यादा जतन केल्या", + "budgetSaveFailed": "बजेट जतन करण्यात अयशस्वी", + "loadingBudgetData": "बजेट डेटा लोड होत आहे...", + "noApiKeysTitle": "API की उपलब्ध नाहीत", + "noApiKeysDescription": "बजेट मर्यादा सेट करण्यासाठी प्रथम API की जोडा.", + "apiKey": "API की", + "todaysSpend": "आजचा खर्च", + "thisMonth": "या महिन्यातील खर्च", + "setLimits": "मर्यादा सेट करा", + "dailyLimitUsd": "दैनिक मर्यादा (USD)", + "monthlyLimitUsd": "मासिक मर्यादा (USD)", + "warningThresholdPercent": "चेतावणीची मर्यादा (%)", + "dailyLimitPlaceholder": "उदा. 5.00", + "monthlyLimitPlaceholder": "उदा. 50.00", "warningThresholdPlaceholder": "80", - "saveLimits": "Save Limits", - "budgetOk": "Budget OK — {remaining} remaining", - "budgetExceeded": "Budget exceeded — requests may be blocked", + "saveLimits": "मर्यादा जतन करा", + "budgetOk": "बजेट ठीक आहे — {remaining} शिल्लक", + "budgetExceeded": "बजेट ओलांडले — विनंत्या अवरोधित केल्या जाऊ शकतात", "totalRequests": "Total requests", - "noDataYet": "No data yet", - "latency": "Latency", + "noDataYet": "अद्याप कोणताही डेटा नाही", + "latency": "विलंबता", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", - "systemHealth": "System Health", - "entries": "Entries", - "activeCount": "{count} active", - "openCircuitBreakersDetected": "Open circuit breakers detected", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "circuitBreakers": "Circuit Breakers", - "lockedIPs": "Locked IPs", - "lockoutsAutoRefreshHint": "Per-model rate limit locks • Auto-refresh 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", - "timeLeft": "{time} left", - "howItWorks": "How It Works", - "howItWorksSubtitle": "Learn how evaluations validate your LLM responses", - "define": "Define", - "defineStepDescription": "Create test cases with input prompts and expected output criteria using strategies like contains, regex, or exact match.", - "run": "Run", - "runStepDescription": "Execute test cases against your LLM endpoints through OmniRoute. Each case is sent as a real API request.", - "evaluate": "Evaluate", - "evaluateStepDescription": "Responses are compared against expected criteria. See pass/fail for each case with latency metrics and detailed feedback.", + "promptCache": "प्रॉम्प्ट कॅशे", + "systemHealth": "सिस्टमचे आरोग्य", + "entries": "नोंदी", + "activeCount": "{count} सक्रिय", + "openCircuitBreakersDetected": "ओपन सर्किट ब्रेकर आढळले", + "hitRate": "हिट दर", + "hitsMisses": "हिट्स / मिसेस", + "circuitBreakers": "सर्किट ब्रेकर्स", + "lockedIPs": "लॉक केलेले IP", + "lockoutsAutoRefreshHint": "प्रति-मॉडेल दरमर्यादा लॉक • दर 10 सेकंदांनी स्वयं-रीफ्रेश", + "lockedCount": "{count, plural, one {# लॉक} other {# लॉक}}", + "timeLeft": "{time} शिल्लक", + "howItWorks": "हे कसे कार्य करते", + "howItWorksSubtitle": "मूल्यमापन तुमच्या LLM प्रतिसादांची पडताळणी कशी करते ते जाणून घ्या", + "define": "परिभाषित करा", + "defineStepDescription": "contains, regex किंवा exact match यांसारख्या पद्धती वापरून इनपुट प्रॉम्प्ट आणि अपेक्षित आउटपुट निकषांसह चाचणी प्रकरणे तयार करा.", + "run": "चालवा", + "runStepDescription": "OmniRoute द्वारे तुमच्या LLM एंडपॉइंट्सवर चाचणी प्रकरणे चालवा. प्रत्येक प्रकरण वास्तविक API विनंती म्हणून पाठवले जाते.", + "evaluate": "मूल्यमापन करा", + "evaluateStepDescription": "प्रतिसादांची अपेक्षित निकषांशी तुलना केली जाते. विलंबता मेट्रिक्स आणि तपशीलवार अभिप्रायासह प्रत्येक प्रकरणाचा यशस्वी/अयशस्वी निकाल पाहा.", "evalsStrategyContainsLabel": "समाविष्ट आहे", "evalsStrategyExactLabel": "अचूक जुळणी", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "रेगेक्स", "evalsStrategyCustomLabel": "सानुकूल लॉजिक", "evalsStrategyContainsDescription": "LLM आउटपुटमध्ये अपेक्षित सबस्ट्रिंग समाविष्ट आहे की नाही हे तपासते.", "evalsStrategyExactDescription": "LLM आउटपुट अपेक्षित मूल्याशी तंतोतंत जुळते की नाही हे तपासते.", @@ -9347,126 +9354,126 @@ "historyColumnPassRate": "पास दर", "historyColumnAvgLatencyMs": "सरासरी विलंबता", "historyColumnCreatedAt": "कार्यान्वित केले", - "evalSuites": "Evaluation Suites", - "evalSuitesHint": "Click a suite to view test cases, then run to evaluate your LLM endpoints", - "evalsLoading": "Loading eval suites...", - "noEvalSuitesFound": "No Eval Suites Found", - "noEvalSuitesDescription": "Eval suites can be defined via the API or in code. They test model outputs against expected results using strategies like contains, regex, exact match, and custom functions.", - "columnCase": "Case", + "evalSuites": "मूल्यमापन संच", + "evalSuitesHint": "चाचणी प्रकरणे पाहण्यासाठी संचावर क्लिक करा, त्यानंतर तुमच्या LLM एंडपॉइंट्सचे मूल्यमापन करण्यासाठी तो चालवा", + "evalsLoading": "मूल्यमापन संच लोड होत आहेत...", + "noEvalSuitesFound": "कोणतेही मूल्यमापन संच आढळले नाहीत", + "noEvalSuitesDescription": "मूल्यमापन संच API द्वारे किंवा कोडमध्ये परिभाषित करता येतात. ते contains, regex, exact match आणि custom functions यांसारख्या धोरणांचा वापर करून अपेक्षित परिणामांच्या तुलनेत मॉडेलच्या आउटपुटची चाचणी करतात.", + "columnCase": "प्रकरण", "columnStatus": "Status", - "columnLatency": "Latency", - "columnDetails": "Details", + "columnLatency": "विलंब", + "columnDetails": "तपशील", "columnModel": "Model", - "columnStrategy": "Strategy", - "columnExpected": "Expected", - "statsSuites": "Suites", - "statsTestCases": "Test Cases", - "statsModels": "Models", - "statsCoverage": "Coverage", - "statsStrategiesCount": "{count} strategies", - "evaluationStrategies": "Evaluation Strategies", - "modelsUnderTest": "Models Under Test", - "searchSuitesPlaceholder": "Search suites...", + "columnStrategy": "धोरण", + "columnExpected": "अपेक्षित", + "statsSuites": "संच", + "statsTestCases": "चाचणी प्रकरणे", + "statsModels": "मॉडेल्स", + "statsCoverage": "व्याप्ती", + "statsStrategiesCount": "{count} धोरणे", + "evaluationStrategies": "मूल्यमापन धोरणे", + "modelsUnderTest": "चाचणीअंतर्गत मॉडेल्स", + "searchSuitesPlaceholder": "संच शोधा...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", - "runEval": "Run Eval", + "casesCount": "{count, plural, one {# प्रकरण} other {# प्रकरणे}}", + "runEval": "मूल्यमापन चालवा", "runAllSuites": "सर्व चालवा", "runAllRunning": "सर्व चालवत आहे...", "runAllProgress": "{current}/{total} धावत आहे: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# संच अयशस्वी झाला} other {# संच अयशस्वी झाले}}", "runAllCompleted": "{suites} संच चालवले — {passed} उत्तीर्ण झाले, {failed} अयशस्वी", "runAllCompletedWithFailures": "{completed} संच चालवले; {failedSuites} पूर्ण करण्यात अयशस्वी", - "runningProgress": "Running {current}/{total}...", - "passRate": "pass rate", - "summaryBreakdown": "{passed} passed · {failed} failed · {total} total", - "passedIconLabel": "✅ Passed", - "failedIconLabel": "❌ Failed", + "runningProgress": "{current}/{total} चालू आहे...", + "passRate": "उत्तीर्ण होण्याचे प्रमाण", + "summaryBreakdown": "{passed} उत्तीर्ण · {failed} अयशस्वी · एकूण {total}", + "passedIconLabel": "✅ उत्तीर्ण", + "failedIconLabel": "❌ अयशस्वी", "resultPassed": "उत्तीर्ण", "resultFailed": "अयशस्वी", "expandResult": "परिणाम तपशील विस्तृत करा", "collapseResult": "परिणाम तपशील संक्षिप्त करा", - "detailsContains": "Contains: \"{term}\"", + "detailsContains": "समाविष्ट आहे: \"{term}\"", "detailsRegex": "Regex: {pattern}", - "detailsExpected": "Expected: \"{expected}\"", + "detailsExpected": "अपेक्षित: \"{expected}\"", "expectedOutputLabel": "अपेक्षित आउटपुट", - "noResultsYet": "No results yet", - "testCasesCount": "Test Cases ({count})", - "noTestCasesDefined": "No test cases defined", - "runEvalHint": "Click \"Run Eval\" to execute all cases against your LLM endpoint. Each test sends a real request through OmniRoute.", - "notifyNoTestCases": "No test cases defined for this suite", - "notifyAllCasesPassed": "All {total} cases passed ✅", - "notifySomeCasesFailed": "{passed}/{total} passed, {failed} failed", - "notifyEvalRunFailed": "Eval run failed", - "notifyEvalTitle": "Eval: {name}", - "modelEvals": "Model Evaluations", - "evalsHeroDescription": "Test and validate your LLM endpoints by running predefined evaluation suites. Each suite contains test cases that send real prompts through OmniRoute and compare responses against expected criteria — helping you detect regressions, compare models, and ensure response quality across providers.", - "qualityValidation": "Quality Validation", - "modelComparison": "Model Comparison", - "regressionDetection": "Regression Detection", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", - "noLockouts": "No models currently locked", - "activeSessions": "Active Sessions", - "noSessions": "No active sessions", - "sessionsHint": "Sessions appear as requests flow through the proxy", - "sessionsTrackedHint": "Tracked via request fingerprinting • Auto-refresh 5s", - "session": "Session", - "age": "Age", - "requests": "Requests", - "connection": "Connection", + "noResultsYet": "अद्याप कोणतेही परिणाम नाहीत", + "testCasesCount": "चाचणी प्रकरणे ({count})", + "noTestCasesDefined": "कोणतीही चाचणी प्रकरणे परिभाषित केलेली नाहीत", + "runEvalHint": "तुमच्या LLM एंडपॉइंटवर सर्व प्रकरणे कार्यान्वित करण्यासाठी \"मूल्यमापन चालवा\" वर क्लिक करा. प्रत्येक चाचणी OmniRoute द्वारे प्रत्यक्ष विनंती पाठवते.", + "notifyNoTestCases": "या संचासाठी कोणतीही चाचणी प्रकरणे परिभाषित केलेली नाहीत", + "notifyAllCasesPassed": "सर्व {total} प्रकरणे उत्तीर्ण झाली ✅", + "notifySomeCasesFailed": "{passed}/{total} उत्तीर्ण, {failed} अयशस्वी", + "notifyEvalRunFailed": "मूल्यमापन चालवणे अयशस्वी झाले", + "notifyEvalTitle": "मूल्यमापन: {name}", + "modelEvals": "मॉडेल मूल्यमापने", + "evalsHeroDescription": "पूर्वपरिभाषित मूल्यमापन संच चालवून तुमच्या LLM एंडपॉइंट्सची चाचणी आणि पडताळणी करा. प्रत्येक संचामध्ये अशी चाचणी प्रकरणे असतात जी OmniRoute द्वारे प्रत्यक्ष प्रॉम्प्ट पाठवतात आणि प्रतिसादांची अपेक्षित निकषांशी तुलना करतात—यामुळे तुम्हाला रिग्रेशन्स शोधणे, मॉडेल्सची तुलना करणे आणि विविध प्रदात्यांमध्ये प्रतिसादाची गुणवत्ता सुनिश्चित करणे शक्य होते.", + "qualityValidation": "गुणवत्ता पडताळणी", + "modelComparison": "मॉडेल तुलना", + "regressionDetection": "रिग्रेशन शोध", + "latencyBenchmarks": "विलंब बेंचमार्क", + "modelLockouts": "मॉडेल लॉकआउट्स", + "noLockouts": "सध्या कोणतेही मॉडेल लॉक केलेले नाही", + "activeSessions": "सक्रिय सत्रे", + "noSessions": "कोणतीही सक्रिय सत्रे नाहीत", + "sessionsHint": "प्रॉक्सीद्वारे विनंत्या प्रवाहित होताना सत्रे दिसतात", + "sessionsTrackedHint": "विनंती फिंगरप्रिंटिंगद्वारे ट्रॅक केलेले • स्वयं-रिफ्रेश 5s", + "session": "सत्र", + "age": "कालावधी", + "requests": "विनंत्या", + "connection": "कनेक्शन", "durationMillisecondsShort": "{value}ms", "durationSecondsShort": "{value}s", "durationMinutesShort": "{value}m", "durationHoursShort": "{value}h", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "Provider Limits", - "noProviders": "No Providers Connected", - "connectProvidersForQuota": "Connect to providers with OAuth to track your API quota limits and usage.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", - "filteredFromCount": "(filtered from {count})", - "autoRefresh": "Auto-refresh", - "refreshAll": "Refresh All", - "loadingQuotas": "Loading...", + "providerLimits": "प्रदाता मर्यादा", + "noProviders": "कोणतेही प्रदाते कनेक्ट केलेले नाहीत", + "connectProvidersForQuota": "तुमच्या API कोटा मर्यादा आणि वापराचा मागोवा घेण्यासाठी OAuth वापरून प्रदात्यांशी कनेक्ट करा.", + "accountsCount": "{count, plural, one {# खाते} other {# खाती}}", + "filteredFromCount": "({count} मधून फिल्टर केलेले)", + "autoRefresh": "स्वयं-रिफ्रेश", + "refreshAll": "सर्व रिफ्रेश करा", + "loadingQuotas": "लोड होत आहे...", "showMoreQuotas": "आणखी {count} दाखवा", "showLessQuotas": "कमी दाखवा", "hideQuotaRow": "हा कोटा रो लपवा", "showQuotaRow": "हा कोटा रो दाखवा", "hiddenQuotaRowsLabel": "लपवलेले:", - "quotaVisibilityUpdateFailed": "Failed to update quota visibility", - "account": "Account", - "modelQuotas": "Model Quotas", - "lastUsed": "Last Refreshed", - "actions": "Actions", - "refreshQuota": "Refresh quota", - "today": "Today", - "tomorrow": "Tomorrow", + "quotaVisibilityUpdateFailed": "कोटा दृश्यमानता अपडेट करण्यात अयशस्वी", + "account": "खाते", + "modelQuotas": "मॉडेल कोटे", + "lastUsed": "शेवटचे रिफ्रेश केले", + "actions": "क्रिया", + "refreshQuota": "कोटा रिफ्रेश करा", + "today": "आज", + "tomorrow": "उद्या", "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "inDuration": "{duration} मध्ये", "notApplicable": "N/A", - "rawPlanWithValue": "Raw plan: {plan}", - "noPlanFromProvider": "No plan from provider", + "rawPlanWithValue": "मूळ प्लॅन: {plan}", + "noPlanFromProvider": "प्रदात्याकडून कोणताही प्लॅन नाही", "tokenExpiresIn": "टोकन {time} मध्ये कालबाह्य होईल", "tokenExpired": "टोकन कालबाह्य झाले", - "noQuotaData": "No quota data", + "noQuotaData": "कोटा डेटा नाही", "cardExpand": "विस्तार करा", "cardCollapse": "संकुचित करा", "moreQuotas": "+{count} अधिक", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", - "noQuotaDataAvailable": "No quota data available", - "noAccountsForTierFilter": "No accounts found for tier filter", - "tierAll": "All", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "ungrouped": "गटबद्ध न केलेले", + "viewFlat": "सपाट", + "viewByEnvironment": "वातावरणानुसार", + "noQuotaDataAvailable": "कोणताही कोटा डेटा उपलब्ध नाही", + "noAccountsForTierFilter": "टियर फिल्टरसाठी कोणतीही खाती आढळली नाहीत", + "tierAll": "सर्व", + "tierEnterprise": "एंटरप्राइझ", + "tierTeam": "टीम", + "tierBusiness": "व्यवसाय", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", + "tierFree": "विनामूल्य", "tierLite": "लाईट", - "tierUnknown": "Unknown", + "tierUnknown": "अज्ञात", "statTotal": "एकूण", "statCritical": "गंभीर", "statAlert": "अलर्ट", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "क्रेडिट रिडीम करा", "resetCreditRedeemed": "रिडीम केलेले रीसेट करा", "resetCreditRedeemFailed": "रीसेट क्रेडिट रिडीम करण्यात अयशस्वी", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "संच जतन करण्यात अयशस्वी", "clone": "क्लोन", "exportSuite": "निर्यात करा", "importSuite": "आयात करा", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "अवैध eval सूट JSON", "suiteBuilderCloneSuffix": "कॉपी", "suiteBuilderImportedSuite": "इंपोर्टेड सुट", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "गुणपत्रक", + "evalApiKey": "API की", + "scorecardPassRate": "उत्तीर्णता दर", + "targetTypeModel": "मॉडेल", + "actualOutputLabel": "प्रत्यक्ष आउटपुट", + "evalTargetHint": "मूल्यमापनासाठी मॉडेल किंवा कॉम्बो निवडा.", + "suiteBuilderDeleted": "संच यशस्वीरित्या हटवला", + "suiteBuilderCaseCardHint": "इनपुट प्रॉम्प्ट आणि अपेक्षित आउटपुट निकष निश्चित करा.", + "nextResetUtc": "पुढील रीसेट (UTC)", + "scorecardHint": "सर्व मूल्यमापन संचांमधील एकत्रित उत्तीर्णता दर.", + "suiteLatestRunsHint": "या संचासाठी सर्वात अलीकडील मूल्यमापन रन.", + "saving": "जतन करत आहे", + "suiteBuilderCaseModelLabel": "मॉडेल (ऐच्छिक)", + "evalControlsTitle": "मूल्यमापन नियंत्रणे", + "suiteBuilderEditTitle": "मूल्यमापन संच संपादित करा", + "suiteBuilderCaseStrategyLabel": "वैधता तपासणी धोरण", + "notifySelectDifferentCompareTarget": "तुलनेसाठी कृपया वेगळे लक्ष्य निवडा", + "recentRunsHint": "सर्वात अलीकडील मूल्यमापन रन दाखवत आहे. तपशीलवार निकाल पाहण्यासाठी रनवर क्लिक करा.", + "evalCompareHint": "ऐच्छिकरित्या निकालांची दुसऱ्या लक्ष्याशी तुलना करा.", + "suiteBuilderCaseInvalid": "या प्रकरणात वैधता तपासणीच्या त्रुटी आहेत. जतन करण्यापूर्वी कृपया त्या दुरुस्त करा.", + "historyEmpty": "अद्याप कोणताही मूल्यमापन इतिहास नाही", + "suiteBuilderUpdated": "संच यशस्वीरित्या अद्यतनित केला", + "resetInterval": "रीसेट मध्यांतर", + "suiteBuilderCreateTitle": "मूल्यमापन संच तयार करा", + "activePeriodSpend": "सक्रिय कालावधीतील खर्च", + "evalApiKeyHint": "मूल्यमापन विनंत्यांसाठी कोणती API की वापरायची ते निवडा.", + "evalCompareOptional": "तुलना करा (ऐच्छिक)", + "suiteBuilderDeleteFailed": "संच हटवण्यात अयशस्वी", + "suiteBuilderCaseSystemPromptPlaceholder": "ऐच्छिक सिस्टम सूचना...", + "scorecardCases": "प्रकरणे", + "runCompletedWithScore": "मूल्यमापन पूर्ण झाले — {score}% उत्तीर्णता दर", + "suiteBuilderCustomBadge": "सानुकूल", + "targetSuiteDefaults": "संचाची डीफॉल्ट मूल्ये", + "suiteBuilderDeleteConfirm": "तुम्हाला खात्री आहे की तुम्ही हा संच हटवू इच्छिता? ही कृती पूर्ववत करता येणार नाही.", + "suiteBuilderNameLabel": "संचाचे नाव", + "scorecardSuites": "संच", + "evalCompareTarget": "तुलना लक्ष्य", + "suiteBuilderCaseModelPlaceholder": "उदा. gpt-4o-mini", + "evalControlsHint": "तुमचे मूल्यमापन लक्ष्य आणि API की कॉन्फिगर करा, त्यानंतर मॉडेलची गुणवत्ता तपासण्यासाठी संच चालवा.", + "recentRunsTitle": "अलीकडील रन", + "suiteBuilderCaseSystemPromptLabel": "सिस्टम प्रॉम्प्ट", + "suiteBuilderCaseExpectedPlaceholder": "उदा. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "उदा. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "अचूक अपेक्षित प्रतिसाद पेस्ट करा", "suiteBuilderCaseExpectedPlaceholderRegex": "उदा. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "स्लॅश न गुंडाळता JavaScript रेग्युलर एक्सप्रेशन वापरा.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "उदा. कोडिंग गुणवत्ता संच", + "suiteBuilderAddCase": "केस जोडा", + "cancel": "रद्द करा", + "evalTarget": "लक्ष्य", + "suiteBuilderCaseNameLabel": "केसचे नाव", + "weeklyLimitUsd": "साप्ताहिक मर्यादा (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "उदा. Python मध्ये fibonacci फंक्शन लिहा", + "suiteBuilderNameRequired": "संचाचे नाव आवश्यक आहे", + "suiteBuilderCaseUserPromptLabel": "वापरकर्ता प्रॉम्प्ट", + "daily": "दैनिक", + "resultErrorLabel": "त्रुटी", + "suiteBuilderBuiltInBadge": "अंगभूत", + "suiteBuilderCaseCardTitle": "चाचणी केस", "suiteBuilderDuplicateCase": "डुप्लिकेट", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "उदा. 50.00", + "suiteBuilderCaseTagsHint": "चाचणी केसेस व्यवस्थित करण्यासाठी स्वल्पविरामाने विभक्त केलेले टॅग.", + "notifyEvalRunFailedWithReason": "मूल्यमापन अयशस्वी: {reason}", + "weekly": "साप्ताहिक", + "runEvalRunning": "मूल्यमापन सुरू आहे...", + "delete": "हटवा", + "resetTimeUtc": "रीसेट वेळ (UTC)", + "evalApiKeyAuto": "स्वयंचलित (डीफॉल्ट वापरा)", + "suiteBuilderDescriptionPlaceholder": "हा संच कशाची चाचणी करतो याचे पर्यायी वर्णन...", + "targetComparisonTitle": "लक्ष्य तुलना", + "save": "जतन करा", + "suiteBuilderCreated": "संच यशस्वीरित्या तयार केला", + "suiteLatestRuns": "नवीनतम रन", + "suiteBuilderCaseExpectedLabel": "अपेक्षित मूल्य", + "historyLatency": "विलंब", + "suiteBuilderCaseTagsPlaceholder": "उदा. coding, python", + "targetTypeCombo": "संयोजन", + "scorecardPassed": "उत्तीर्ण", + "suiteBuilderCaseTagsLabel": "टॅग", + "suiteBuilderNewSuite": "नवीन संच", + "notifyEvalLoadFailed": "मूल्यांकन डेटा लोड करण्यात अयशस्वी", + "notConfigured": "कॉन्फिगर केलेले नाही", + "suiteBuilderCaseNamePlaceholder": "उदा. Python fibonacci चाचणी", + "intervalLabel": "मध्यांतर", + "suiteBuilderCreateAction": "संच तयार करा", + "suiteBuilderCasesHint": "प्रत्येक केस एक प्रॉम्प्ट पाठवते आणि प्रतिसादाची पडताळणी करते.", + "suiteBuilderUpdatedAt": "अद्ययावत केले", + "errorBadge": "त्रुटी", + "suiteBuilderCasesTitle": "चाचणी केसेस", + "edit": "संपादित करा", + "monthly": "मासिक", + "suiteBuilderCasesRequired": "किमान एक चाचणी केस आवश्यक आहे", + "weeklyLimitSummary": "साप्ताहिक बजेट मर्यादेचा सारांश", + "suiteBuilderDescriptionLabel": "वर्णन", + "targetComparisonHint": "लक्ष्यांमधील मूल्यांकन परिणामांची शेजारी-शेजारी तुलना.", + "compareCompletedWithScore": "तुलना पूर्ण झाली — {score}% उत्तीर्ण दर", + "staleQuotaTooltip": "मागील रीफ्रेश अयशस्वी — कॅश केलेला डेटा दाखवत आहे", "quotaThresholdLabel": "मि बाकी", "quotaCutoffsColumnHelp": "उर्वरित कोटा या टक्केवारीवर किंवा त्यापेक्षा कमी झाल्यास विनंत्या थांबवा.", "quotaCutoffsButtonDefault": "डीफॉल्ट", @@ -9704,70 +9711,70 @@ "providerQuotaHomeHint": "कनेक्ट केलेल्या खात्यांमधील थेट स्थिती" }, "modals": { - "waitingAuth": "Waiting for Authorization", - "verificationUrl": "Verification URL", - "yourCode": "Your Code", - "remoteAccess": "Remote access:", - "connectedSuccess": "Connected Successfully!", - "connectionFailed": "Connection Failed", - "chooseAuthMethod": "Choose your authentication method:", + "waitingAuth": "अधिकृततेची प्रतीक्षा करत आहे", + "verificationUrl": "पडताळणी URL", + "yourCode": "तुमचा कोड", + "remoteAccess": "दूरस्थ प्रवेश:", + "connectedSuccess": "यशस्वीरित्या कनेक्ट झाले!", + "connectionFailed": "कनेक्शन अयशस्वी", + "chooseAuthMethod": "तुमची प्रमाणीकरण पद्धत निवडा:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", - "importToken": "Import Token", - "pasteToken": "Paste refresh token from Kiro IDE.", + "googleAccount": "Google खाते", + "githubAccount": "GitHub खाते", + "importToken": "टोकन आयात करा", + "pasteToken": "Kiro IDE मधील रीफ्रेश टोकन पेस्ट करा.", "awsRegion": "AWS Region", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCache": "Reading from AWS SSO cache", - "readingFromCursor": "Reading from Cursor IDE database", - "initializing": "Initializing...", - "pricingConfig": "Pricing Configuration", - "loadingPricing": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "noPricingData": "No pricing data available", - "noModelsFound": "No models found" + "autoDetecting": "टोकन स्वयंचलितपणे शोधत आहे...", + "readingFromCache": "AWS SSO कॅशेमधून वाचत आहे", + "readingFromCursor": "Cursor IDE डेटाबेसमधून वाचत आहे", + "initializing": "आरंभ करत आहे...", + "pricingConfig": "किंमत कॉन्फिगरेशन", + "loadingPricing": "किंमतीचा डेटा लोड करत आहे...", + "pricingRatesFormat": "किंमत दरांचे स्वरूप", + "noPricingData": "किंमतीचा डेटा उपलब्ध नाही", + "noModelsFound": "कोणतीही मॉडेल्स आढळली नाहीत" }, "loggers": { - "allProviders": "All Providers", - "allModels": "All Models", - "allAccounts": "All Accounts", - "allApiKeys": "All API Keys", - "allTypes": "All Types", - "allLevels": "All Levels", + "allProviders": "सर्व प्रदाते", + "allModels": "सर्व मॉडेल्स", + "allAccounts": "सर्व खाती", + "allApiKeys": "सर्व API कळा", + "allTypes": "सर्व प्रकार", + "allLevels": "सर्व स्तर", "modelAZ": "Model A-Z", "modelZA": "Model Z-A", - "loadingLogs": "Loading logs...", - "loadingProxyLogs": "Loading proxy logs...", - "noLogEntries": "No log entries found", - "noPayloadData": "No payload data available for this log entry.", - "proxyEvent": "Proxy Event", + "loadingLogs": "लॉग लोड होत आहेत...", + "loadingProxyLogs": "प्रॉक्सी लॉग लोड होत आहेत...", + "noLogEntries": "कोणत्याही लॉग नोंदी आढळल्या नाहीत", + "noPayloadData": "या लॉग नोंदीसाठी कोणताही पेलोड डेटा उपलब्ध नाही.", + "proxyEvent": "प्रॉक्सी इव्हेंट", "proxy": "Proxy", - "level": "Level", - "directNative": "Direct (native)", - "combo": "Combo", + "level": "स्तर", + "directNative": "थेट (मूळ)", + "combo": "कॉम्बो", "inputTokens": "I:", "outputTokens": "O:" }, "stats": { - "usageOverview": "Usage Overview", - "outputTokens": "Output Tokens", - "totalCost": "Total Cost", - "usageByModel": "Usage by Model", - "usageByAccount": "Usage by Account", - "failedToLoad": "Failed to load usage statistics.", - "tokenHealth": "Token Health", - "totalOAuth": "Total OAuth", - "healthy": "Healthy", - "warning": "Warning", - "errored": "Errored", - "lastCheck": "Last check", - "noData": "No data", - "share": "Share", - "unableToLoad": "Unable to load system metrics", - "product": "Product", - "resources": "Resources", - "company": "Company", + "usageOverview": "वापराचा आढावा", + "outputTokens": "आउटपुट टोकन्स", + "totalCost": "एकूण खर्च", + "usageByModel": "मॉडेलनुसार वापर", + "usageByAccount": "खात्यानुसार वापर", + "failedToLoad": "वापराची आकडेवारी लोड करण्यात अयशस्वी.", + "tokenHealth": "टोकनची स्थिती", + "totalOAuth": "एकूण OAuth", + "healthy": "सुस्थितीत", + "warning": "इशारा", + "errored": "त्रुटीग्रस्त", + "lastCheck": "शेवटची तपासणी", + "noData": "डेटा उपलब्ध नाही", + "share": "शेअर करा", + "unableToLoad": "सिस्टम मेट्रिक्स लोड करता आले नाहीत", + "product": "उत्पादन", + "resources": "संसाधने", + "company": "कंपनी", "tokenHealthTooltips": { "allHealthy": "सर्व टोकन आरोग्यदायी आहेत", "needsAttention": "काही टोकनला लक्ष देण्याची आवश्यकता आहे", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "सिस्टम मेट्रिक्स", "memory": "स्मृती", - "memoryShort": "mem", + "memoryShort": "मेमरी", "uptime": "उपलब्धता", "ariaLabel": "सिस्टम मॉनिटरिंग", "title": "सिस्टम मॉनिटर", @@ -9812,70 +9819,70 @@ "noAccountUsage": "अजून कोणतीही खाते-विशिष्ट वापराची नोंद केलेली नाही. येथे डेटा पाहण्यासाठी OAuth खात्यांचा वापर करून विनंत्या करा." }, "auth": { - "welcome": "Welcome", - "signIn": "Sign in", - "enterPassword": "Enter your password to continue", - "password": "Password", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", - "unifiedAiApiProxyDesc": "Route requests to multiple AI providers through a single endpoint. Load balancing, failover, and usage tracking built in.", - "passwordNotEnabled": "Password protection is not enabled", - "loading": "Loading...", - "invalidPassword": "Invalid password", - "errorOccurredRetry": "An error occurred. Please try again.", - "configureInstance": "Let's get your OmniRoute instance configured", - "runOnboardingWizard": "Run the onboarding wizard to set up your password and connect your first AI provider.", - "startOnboarding": "Start Onboarding", - "secureYourInstance": "Secure Your Instance", - "setPasswordDescription": "Set a password to protect your dashboard and secure your API endpoints from unauthorized access.", - "configurePassword": "Configure Password", - "continue": "Continue", - "windowWillClose": "This window will close automatically...", - "closeTabNow": "You can close this tab now.", - "copyUrlManual": "Please copy the URL from the address bar and paste it in the application.", - "accessDeniedDescription": "You don't have permission to access this resource. Check your API key or contact the administrator.", - "goToDashboard": "Go to Dashboard", - "featureMultiProviderTitle": "Multi-Provider", - "featureMultiProviderDesc": "OpenAI, Anthropic, Google, and more", - "featureLoadBalancingTitle": "Load Balancing", - "featureLoadBalancingDesc": "Distribute requests intelligently", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Monitor costs and tokens", - "resetPassword": "Reset Password", - "resetDescription": "Choose a method to recover access to your dashboard", - "stopServer": "Stop the OmniRoute server", - "processing": "Processing...", - "pleaseWait": "Please wait while we complete the authorization.", - "authSuccess": "Authorization Successful!", - "copyUrl": "Copy This URL", - "accessDenied": "Access Denied", - "methodCliTitle": "Method 1: CLI Reset", - "methodCliDescription": "Run the following command on the server where OmniRoute is running:", - "methodCliHint": "This will prompt you to set a new password. The server must be stopped first.", - "methodManualTitle": "Method 2: Manual Reset", - "methodManualDescription": "Delete the password from the database and set a new one on startup:", - "setPasswordInYour": "Set a new password in your", - "fileLabelSuffix": "file:", + "welcome": "स्वागत आहे", + "signIn": "साइन इन करा", + "enterPassword": "पुढे सुरू ठेवण्यासाठी तुमचा पासवर्ड प्रविष्ट करा", + "password": "पासवर्ड", + "unifiedProxy": "एकत्रित AI API प्रॉक्सी", + "unifiedAiApiProxy": "एकत्रित AI API प्रॉक्सी", + "unifiedAiApiProxyDesc": "एका एंडपॉइंटद्वारे अनेक AI प्रदात्यांकडे विनंत्या पाठवा. लोड बॅलन्सिंग, फेलओव्हर आणि वापराचे ट्रॅकिंग अंगभूत आहे.", + "passwordNotEnabled": "पासवर्ड संरक्षण सक्षम केलेले नाही", + "loading": "लोड होत आहे...", + "invalidPassword": "अवैध पासवर्ड", + "errorOccurredRetry": "एक त्रुटी आली. कृपया पुन्हा प्रयत्न करा.", + "configureInstance": "चला, तुमचे OmniRoute इन्स्टन्स कॉन्फिगर करूया", + "runOnboardingWizard": "तुमचा पासवर्ड सेट करण्यासाठी आणि तुमचा पहिला AI प्रदाता कनेक्ट करण्यासाठी ऑनबोर्डिंग विझार्ड चालवा.", + "startOnboarding": "ऑनबोर्डिंग सुरू करा", + "secureYourInstance": "तुमचे इन्स्टन्स सुरक्षित करा", + "setPasswordDescription": "तुमच्या डॅशबोर्डचे संरक्षण करण्यासाठी आणि अनधिकृत प्रवेशापासून तुमचे API एंडपॉइंट्स सुरक्षित ठेवण्यासाठी पासवर्ड सेट करा.", + "configurePassword": "पासवर्ड कॉन्फिगर करा", + "continue": "पुढे सुरू ठेवा", + "windowWillClose": "ही विंडो आपोआप बंद होईल...", + "closeTabNow": "तुम्ही आता हा टॅब बंद करू शकता.", + "copyUrlManual": "कृपया ॲड्रेस बारमधील URL कॉपी करून ॲप्लिकेशनमध्ये पेस्ट करा.", + "accessDeniedDescription": "तुम्हाला या रिसोर्समध्ये प्रवेश करण्याची परवानगी नाही. तुमची API की तपासा किंवा प्रशासकाशी संपर्क साधा.", + "goToDashboard": "डॅशबोर्डवर जा", + "featureMultiProviderTitle": "एकाधिक प्रदाते", + "featureMultiProviderDesc": "OpenAI, Anthropic, Google आणि इतर", + "featureLoadBalancingTitle": "लोड बॅलन्सिंग", + "featureLoadBalancingDesc": "विनंत्यांचे बुद्धिमान पद्धतीने वितरण करा", + "featureUsageTrackingTitle": "वापराचा मागोवा", + "featureUsageTrackingDesc": "खर्च आणि टोकन्सचे निरीक्षण करा", + "resetPassword": "पासवर्ड रीसेट करा", + "resetDescription": "तुमच्या डॅशबोर्डवरील प्रवेश पुनर्प्राप्त करण्यासाठी एक पद्धत निवडा", + "stopServer": "OmniRoute सर्व्हर थांबवा", + "processing": "प्रक्रिया सुरू आहे...", + "pleaseWait": "आम्ही प्रमाणीकरण पूर्ण करेपर्यंत कृपया प्रतीक्षा करा.", + "authSuccess": "प्रमाणीकरण यशस्वी झाले!", + "copyUrl": "हा URL कॉपी करा", + "accessDenied": "प्रवेश नाकारला", + "methodCliTitle": "पद्धत 1: CLI रीसेट", + "methodCliDescription": "OmniRoute चालू असलेल्या सर्व्हरवर खालील कमांड चालवा:", + "methodCliHint": "यामुळे तुम्हाला नवीन पासवर्ड सेट करण्यास सांगितले जाईल. प्रथम सर्व्हर थांबवणे आवश्यक आहे.", + "methodManualTitle": "पद्धत 2: मॅन्युअल रीसेट", + "methodManualDescription": "डेटाबेसमधून पासवर्ड हटवा आणि स्टार्टअपच्या वेळी नवीन पासवर्ड सेट करा:", + "setPasswordInYour": "तुमच्या", + "fileLabelSuffix": "फाइलमध्ये नवीन पासवर्ड सेट करा:", "newPasswordPlaceholder": "your_new_password", - "deleteSettingsFile": "Delete", - "orRemovePasswordHashField": "or remove the passwordHash field", - "restartServerWithNewPassword": "Restart the server - it will use the new password", - "backToLogin": "Back to Login", - "forgotPassword": "Forgot password?", + "deleteSettingsFile": "हटवा", + "orRemovePasswordHashField": "किंवा passwordHash फील्ड काढून टाका", + "restartServerWithNewPassword": "सर्व्हर रीस्टार्ट करा - तो नवीन पासवर्ड वापरेल", + "backToLogin": "लॉगिनकडे परत जा", + "forgotPassword": "पासवर्ड विसरलात?", "continueWithOidc": "OIDC सह पुढे जा", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", - "Authorization": "Authorization", + "defaultPasswordHint": "डीफॉल्ट पासवर्ड: CHANGEME (INITIAL_PASSWORD सेट केला नसल्यास)", + "Authorization": "अधिकृतता", "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "अधिकृततेची प्रतीक्षा करत आहे...", + "waitingForGoogleAuthorization": "Google अधिकृततेची प्रतीक्षा करत आहे...", + "waitingForOpenAIAuthorization": "OpenAI अधिकृततेची प्रतीक्षा करत आहे...", + "waitingForAntigravityAuthorization": "Antigravity अधिकृततेची प्रतीक्षा करत आहे...", + "waitingForQoderAuthorization": "Qoder अधिकृततेची प्रतीक्षा करत आहे...", + "exchangingCodeForTokens": "टोकन्ससाठी कोडची देवाणघेवाण करत आहे...", + "nodeIncompatibleTitle": "विसंगत Node.js आवृत्ती", + "nodeIncompatibleDesc": "तुम्ही Node.js {version} वापरत आहात, जी OmniRoute च्या समर्थित सुरक्षित रनटाइम धोरणाच्या कक्षेबाहेर आहे. पॅच केलेली Node.js 20.x किंवा 22.x LTS आवृत्ती वापरा.", + "nodeIncompatibleFixLabel": "उपाय: पॅच केलेली Node.js 22 LTS आवृत्ती इंस्टॉल करा", + "nodeIncompatibleHint": "OmniRoute साठी Node.js 22.22.2+ (22.x LTS) किंवा 24.0.0+ (24.x LTS) आवश्यक आहे. Node 24 LTS ची शिफारस केली जाते.", "resetViaAppDataTitle": "अॅप डेटा द्वारे रीसेट करा", "resetViaAppDataDescription": "आपला पासवर्ड रीसेट करण्यासाठी अॅप डेटा निर्देशिकेतून सेटिंग्ज फाइल हटवा:", "quitDesktopApp": "OmniRoute डेस्कटॉप अॅप पूर्णपणे बंद करा", @@ -9930,72 +9937,72 @@ }, "landing": { "brandName": "OmniRoute", - "navigateHome": "Navigate to home", - "toggleMenu": "Toggle menu", - "featuresLink": "Features", - "docsLink": "Docs", + "navigateHome": "मुख्यपृष्ठावर जा", + "toggleMenu": "मेनू उघडा किंवा बंद करा", + "featuresLink": "वैशिष्ट्ये", + "docsLink": "दस्तऐवजीकरण", "github": "GitHub", - "versionLive": "v1.0 is now live", - "oneEndpoint": "One Endpoint for", - "allProviders": "All AI Providers", - "heroDescription": "AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.", - "getStarted": "Get Started", - "viewOnGithub": "View on GitHub", - "powerfulFeatures": "Powerful Features", - "featuresSubtitle": "Everything you need to manage your AI infrastructure in one place, built for scale.", - "featureUnifiedEndpointTitle": "Unified Endpoint", - "featureUnifiedEndpointDesc": "Access all providers via a single standard API URL.", - "featureEasySetupTitle": "Easy Setup", - "featureEasySetupDesc": "Get up and running in minutes with npx command.", - "featureModelFallbackTitle": "Model Fallback", - "featureModelFallbackDesc": "Automatically switch providers on failure or high latency.", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Detailed analytics and cost monitoring across all models.", - "featureOAuthApiKeysTitle": "OAuth & API Keys", - "featureOAuthApiKeysDesc": "Securely manage credentials in one vault.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncDesc": "Sync your configurations across devices instantly.", - "featureCliSupportTitle": "CLI Support", - "featureCliSupportDesc": "Works with Claude Code, Codex, Cline, Cursor, and more.", - "featureDashboardTitle": "Dashboard", - "featureDashboardDesc": "Visual dashboard for real-time traffic analysis.", - "howItWorks": "How OmniRoute Works", - "howItWorksDescription": "Data flows seamlessly from your application through our intelligent routing layer to the best provider for the job.", - "howItWorksStep1Title": "1. CLI & SDKs", - "howItWorksStep1Description": "Your requests start from your favorite tools or our unified SDK. Just change the base URL.", - "howItWorksStep2Title": "2. OmniRoute Hub", - "howItWorksStep2Description": "Our engine analyzes the prompt, checks provider health, and routes for lowest latency or cost.", - "howItWorksStep3Title": "3. AI Providers", - "howItWorksStep3Description": "The request is fulfilled by OpenAI, Anthropic, Gemini, or others instantly.", - "getStartedIn30Seconds": "Get Started in 30 Seconds", - "getStartedDescription": "Install OmniRoute, configure your providers via web dashboard, and start routing AI requests.", - "installOmniRoute": "Install OmniRoute", - "installStepDescription": "Run npx command to start the server instantly", - "openDashboard": "Open Dashboard", - "openDashboardStepDescription": "Configure providers and API keys via web interface", - "routeRequests": "Route Requests", - "routeRequestsStepDescription": "Point your CLI tools to {endpoint}", - "terminal": "terminal", - "copy": "Copy", - "copied": "✓ Copied", - "startingOmniRoute": "Starting OmniRoute...", - "serverRunningOnLabel": "Server running on", - "dashboardLabel": "Dashboard", - "readyToRoute": "Ready to route! ✓", - "configureProvidersNote": "📝 Configure providers in dashboard or use environment variables", - "dataLocation": "Data Location:", + "versionLive": "v1.0 आता उपलब्ध आहे", + "oneEndpoint": "एक एंडपॉइंट", + "allProviders": "सर्व AI प्रदात्यांसाठी", + "heroDescription": "वेब डॅशबोर्डसह AI एंडपॉइंट प्रॉक्सी — CLIProxyAPI चे JavaScript पोर्ट. Claude Code, OpenAI Codex, Cline, RooCode आणि इतर CLI साधनांसह अखंडपणे कार्य करते.", + "getStarted": "सुरुवात करा", + "viewOnGithub": "GitHub वर पहा", + "powerfulFeatures": "शक्तिशाली वैशिष्ट्ये", + "featuresSubtitle": "तुमच्या AI पायाभूत सुविधांचे एकाच ठिकाणी व्यवस्थापन करण्यासाठी आवश्यक असलेले सर्व काही, मोठ्या प्रमाणावर वापरासाठी तयार केलेले.", + "featureUnifiedEndpointTitle": "एकीकृत एंडपॉइंट", + "featureUnifiedEndpointDesc": "एकाच मानक API URL द्वारे सर्व प्रदात्यांमध्ये प्रवेश करा.", + "featureEasySetupTitle": "सुलभ सेटअप", + "featureEasySetupDesc": "npx कमांड वापरून काही मिनिटांत कार्य सुरू करा.", + "featureModelFallbackTitle": "मॉडेल फॉलबॅक", + "featureModelFallbackDesc": "अयशस्वी झाल्यास किंवा विलंब जास्त असल्यास प्रदाता आपोआप बदला.", + "featureUsageTrackingTitle": "वापराचे ट्रॅकिंग", + "featureUsageTrackingDesc": "सर्व मॉडेल्ससाठी तपशीलवार विश्लेषण आणि खर्चाचे निरीक्षण.", + "featureOAuthApiKeysTitle": "OAuth आणि API कीज", + "featureOAuthApiKeysDesc": "एका व्हॉल्टमध्ये क्रेडेन्शियल्स सुरक्षितपणे व्यवस्थापित करा.", + "featureCloudSyncTitle": "क्लाउड सिंक", + "featureCloudSyncDesc": "तुमची कॉन्फिगरेशन्स सर्व डिव्हाइसेसवर त्वरित सिंक करा.", + "featureCliSupportTitle": "CLI समर्थन", + "featureCliSupportDesc": "Claude Code, Codex, Cline, Cursor आणि इतरांसह कार्य करते.", + "featureDashboardTitle": "डॅशबोर्ड", + "featureDashboardDesc": "रिअल-टाइम ट्रॅफिक विश्लेषणासाठी दृश्यात्मक डॅशबोर्ड.", + "howItWorks": "OmniRoute कसे कार्य करते", + "howItWorksDescription": "तुमच्या अनुप्रयोगातून डेटा आमच्या बुद्धिमान रूटिंग स्तराद्वारे त्या कामासाठी सर्वोत्तम प्रदात्याकडे अखंडपणे प्रवाहित होतो.", + "howItWorksStep1Title": "1. CLI आणि SDKs", + "howItWorksStep1Description": "तुमच्या विनंत्या तुमच्या आवडत्या साधनांमधून किंवा आमच्या एकीकृत SDK मधून सुरू होतात. फक्त बेस URL बदला.", + "howItWorksStep2Title": "2. OmniRoute हब", + "howItWorksStep2Description": "आमचे इंजिन प्रॉम्प्टचे विश्लेषण करते, प्रदात्याची स्थिती तपासते आणि सर्वात कमी विलंब किंवा खर्चासाठी रूट करते.", + "howItWorksStep3Title": "3. AI प्रदाते", + "howItWorksStep3Description": "विनंती OpenAI, Anthropic, Gemini किंवा इतर प्रदात्यांकडून त्वरित पूर्ण केली जाते.", + "getStartedIn30Seconds": "30 सेकंदांत सुरुवात करा", + "getStartedDescription": "OmniRoute इंस्टॉल करा, वेब डॅशबोर्डद्वारे तुमचे प्रदाते कॉन्फिगर करा आणि AI विनंत्या रूट करणे सुरू करा.", + "installOmniRoute": "OmniRoute इंस्टॉल करा", + "installStepDescription": "सर्व्हर त्वरित सुरू करण्यासाठी npx कमांड चालवा", + "openDashboard": "डॅशबोर्ड उघडा", + "openDashboardStepDescription": "वेब इंटरफेसद्वारे प्रदाते आणि API की कॉन्फिगर करा", + "routeRequests": "विनंत्या रूट करा", + "routeRequestsStepDescription": "तुमची CLI साधने {endpoint} कडे निर्देशित करा", + "terminal": "टर्मिनल", + "copy": "कॉपी करा", + "copied": "✓ कॉपी केले", + "startingOmniRoute": "OmniRoute सुरू होत आहे...", + "serverRunningOnLabel": "सर्व्हर येथे चालू आहे", + "dashboardLabel": "डॅशबोर्ड", + "readyToRoute": "रूट करण्यासाठी तयार! ✓", + "configureProvidersNote": "📝 डॅशबोर्डमध्ये प्रदाते कॉन्फिगर करा किंवा एन्व्हायर्नमेंट व्हेरिएबल्स वापरा", + "dataLocation": "डेटाचे स्थान:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", - "product": "Product", - "dashboardLink": "Dashboard", - "changelog": "Changelog", - "resources": "Resources", - "documentation": "Documentation", + "product": "उत्पादन", + "dashboardLink": "डॅशबोर्ड", + "changelog": "बदल नोंद", + "resources": "संसाधने", + "documentation": "दस्तऐवजीकरण", "npm": "NPM", - "legal": "Legal", - "mitLicense": "MIT License", - "footerTagline": "The unified endpoint for AI generation. Connect, route, and manage your AI providers with ease.", - "copyright": "© {year} OmniRoute. All rights reserved.", + "legal": "कायदेशीर", + "mitLicense": "MIT परवाना", + "footerTagline": "AI निर्मितीसाठी एकीकृत एंडपॉइंट. तुमचे AI प्रदाते सहजपणे कनेक्ट, रूट आणि व्यवस्थापित करा.", + "copyright": "© {year} OmniRoute. सर्व हक्क राखीव.", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", "flowToolCline": "Cline", @@ -10004,11 +10011,11 @@ "flowProviderAnthropic": "Anthropic", "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", - "interactiveDiagram": "Interactive diagram visible on desktop", - "ctaTitle": "Ready to Simplify Your AI Infrastructure?", - "ctaDescription": "Join developers who are streamlining their AI integrations with OmniRoute. Open source and free to start.", - "startFree": "Start Free", - "readDocumentation": "Read Documentation", + "interactiveDiagram": "डेस्कटॉपवर परस्परसंवादी आकृती दृश्यमान आहे", + "ctaTitle": "तुमची AI पायाभूत सुविधा सुलभ करण्यास तयार आहात?", + "ctaDescription": "OmniRoute सह आपली AI एकत्रीकरणे सुव्यवस्थित करणाऱ्या विकसकांमध्ये सामील व्हा. हे मुक्त-स्रोत आहे आणि सुरुवात करण्यासाठी विनामूल्य आहे.", + "startFree": "विनामूल्य सुरू करा", + "readDocumentation": "दस्तऐवजीकरण वाचा", "company": "कंपनी", "pricing": "किमती", "apiReference": "API संदर्भ", @@ -10023,45 +10030,45 @@ "communityDiscussions": "समुदाय चर्चा" }, "docs": { - "title": "Documentation", - "quickStart": "Quick Start", + "title": "दस्तऐवजीकरण", + "quickStart": "त्वरित सुरुवात", "deploymentGuides": "उपयोजन मार्गदर्शक", - "features": "Features", - "supportedProviders": "Supported Providers", - "supportedProvidersToc": "Providers", - "commonUseCases": "Common Use Cases", - "clientCompatibility": "Client Compatibility", - "protocolsToc": "Protocols", - "apiReference": "API Reference", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", - "method": "Method", - "path": "Path", - "notes": "Notes", - "modelPrefixes": "Model Prefixes", - "prefix": "Prefix", - "troubleshooting": "Troubleshooting", - "supportsChat": "Supports both chat and responses endpoints.", - "oauthAutoRefresh": "OAuth connection with automatic token refresh.", - "fullStreaming": "Full streaming support for all models.", - "docsLabel": "Docs", + "features": "वैशिष्ट्ये", + "supportedProviders": "समर्थित प्रदाते", + "supportedProvidersToc": "प्रदाते", + "commonUseCases": "सामान्य वापर प्रकरणे", + "clientCompatibility": "क्लायंट सुसंगतता", + "protocolsToc": "प्रोटोकॉल", + "apiReference": "API संदर्भ", + "managementApiReference": "व्यवस्थापन API संदर्भ", + "managementApiDescription": "प्रॉक्सी रजिस्ट्री, स्कोप असाइनमेंट्स आणि लेगसी प्रॉक्सी माइग्रेशनसाठी ऑटोमेशन एंडपॉइंट्स.", + "method": "पद्धत", + "path": "पाथ", + "notes": "टिपा", + "modelPrefixes": "मॉडेल प्रीफिक्सेस", + "prefix": "प्रीफिक्स", + "troubleshooting": "समस्यानिवारण", + "supportsChat": "चॅट आणि रिस्पॉन्सेस या दोन्ही एंडपॉइंट्सना समर्थन देते.", + "oauthAutoRefresh": "स्वयंचलित टोकन रिफ्रेशसह OAuth कनेक्शन.", + "fullStreaming": "सर्व मॉडेल्ससाठी संपूर्ण स्ट्रीमिंग समर्थन.", + "docsLabel": "दस्तऐवज", "docsHeroDescription": "AI gateway for multi-provider LLMs. One endpoint for OpenAI, Anthropic, Gemini, DeepSeek, GitHub Copilot, Claude Code, Cursor, and 100+ more providers.", - "openDashboard": "Open Dashboard", - "endpointPage": "Endpoint Page", + "openDashboard": "डॅशबोर्ड उघडा", + "endpointPage": "एंडपॉइंट पृष्ठ", "github": "GitHub", - "reportIssue": "Report Issue", - "onThisPage": "On this page", - "documentationVersion": "Documentation - v{version}", - "quickStartStep1Title": "1. Install and run", - "quickStartStep1Prefix": "Run", - "quickStartStep1Middle": "or clone from GitHub and run", - "quickStartStep2Title": "2. Create API key", - "quickStartStep2Text": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "quickStartStep3Title": "3. Connect providers", - "quickStartStep3Text": "Add provider accounts via OAuth login, API key, or free-tier auto-connect.", - "quickStartStep4Title": "4. Set client base URL", - "quickStartStep4Prefix": "Point your IDE or API client to", - "quickStartStep4Suffix": "Use provider prefix, for example", + "reportIssue": "समस्या नोंदवा", + "onThisPage": "या पृष्ठावर", + "documentationVersion": "दस्तऐवजीकरण - v{version}", + "quickStartStep1Title": "1. इंस्टॉल करा आणि चालवा", + "quickStartStep1Prefix": "चालवा", + "quickStartStep1Middle": "किंवा GitHub वरून क्लोन करा आणि चालवा", + "quickStartStep2Title": "2. API की तयार करा", + "quickStartStep2Text": "Endpoint -> Registered Keys वर जा. प्रत्येक एन्व्हायर्नमेंटसाठी एक की तयार करा.", + "quickStartStep3Title": "3. प्रदाते कनेक्ट करा", + "quickStartStep3Text": "OAuth लॉगिन, API की किंवा फ्री-टियर ऑटो-कनेक्टद्वारे प्रदाता खाती जोडा.", + "quickStartStep4Title": "4. क्लायंट बेस URL सेट करा", + "quickStartStep4Prefix": "तुमचा IDE किंवा API क्लायंट याकडे निर्देशित करा", + "quickStartStep4Suffix": "प्रोव्हायडर प्रीफिक्स वापरा, उदाहरणार्थ", "deploySetupTitle": "सेटअप मार्गदर्शक", "deploySetupText": "OmniRoute साठी चरण-दर-चरण स्थापना, पर्यावरण कॉन्फिगरेशन आणि प्रथम-रन वॉकथ्रू.", "deployElectronTitle": "इलेक्ट्रॉन डेस्कटॉप", @@ -10075,161 +10082,161 @@ "deployPwaTitle": "पीडब्ल्यूए", "deployPwaText": "Android, iOS आणि डेस्कटॉप ब्राउझरवर प्रोग्रेसिव्ह वेब ॲप म्हणून OmniRoute इंस्टॉल करा.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", - "featureRoutingTitle": "Multi-Provider Routing", - "featureRoutingText": "Route requests to 30+ AI providers through a single OpenAI-compatible endpoint. Supports chat, responses, audio, and image APIs.", - "featureCombosTitle": "Combos and Balancing", - "featureCombosText": "Create model combos with fallback chains and balancing strategies: round-robin, priority, random, least-used, and cost-optimized.", - "featureUsageTitle": "Usage and Cost Tracking", - "featureUsageText": "Real-time token counting, cost calculation per provider/model, and detailed usage breakdown by API key and account.", - "featureAnalyticsTitle": "Analytics Dashboard", - "featureAnalyticsText": "Visual analytics with charts for requests, tokens, errors, latency, costs, and model popularity over time.", - "featureHealthTitle": "Health Monitoring", - "featureHealthText": "Live health checks, provider status, circuit breaker states, and automatic rate limit detection with exponential backoff.", - "featureCliTitle": "CLI Tools", - "featureCliText": "Manage IDE configurations, export/import backups, discover codex profiles, and configure settings from the dashboard.", - "featureSecurityTitle": "Security and Policies", - "featureSecurityText": "API key authentication, IP filtering, prompt injection guard, domain policies, session management, and audit logging.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncText": "Sync your configuration to Cloudflare Workers for remote access with encrypted credentials and automatic failover.", - "providersAcrossConnectionTypes": "{count} providers across three connection types.", - "manageProviders": "Manage Providers", - "providersCount": "{count} providers", - "providerTypeFree": "Free Tier", + "deployTermuxText": "Termux द्वारे Android वर OmniRoute हेडलेस पद्धतीने चालवा. तुमच्या मोबाइल ब्राउझरमधून डॅशबोर्ड उघडा.", + "featureRoutingTitle": "मल्टी-प्रोव्हायडर राउटिंग", + "featureRoutingText": "एका OpenAI-सुसंगत एंडपॉइंटद्वारे 30+ AI प्रोव्हायडर्सकडे विनंत्या रूट करा. चॅट, प्रतिसाद, ऑडिओ आणि इमेज API समर्थित आहेत.", + "featureCombosTitle": "कॉम्बोज आणि संतुलन", + "featureCombosText": "फॉलबॅक साखळ्या आणि संतुलन धोरणांसह मॉडेल कॉम्बोज तयार करा: राउंड-रॉबिन, प्राधान्य, यादृच्छिक, सर्वात कमी वापरलेले आणि खर्च-अनुकूलित.", + "featureUsageTitle": "वापर आणि खर्चाचा मागोवा", + "featureUsageText": "रिअल-टाइम टोकन मोजणी, प्रत्येक प्रोव्हायडर/मॉडेलनुसार खर्चाची गणना आणि API की व खात्यानुसार वापराचे तपशीलवार विभाजन.", + "featureAnalyticsTitle": "विश्लेषण डॅशबोर्ड", + "featureAnalyticsText": "कालांतराने विनंत्या, टोकन्स, त्रुटी, विलंब, खर्च आणि मॉडेलची लोकप्रियता यांसाठी चार्टसह दृश्यात्मक विश्लेषण.", + "featureHealthTitle": "स्थितीचे निरीक्षण", + "featureHealthText": "लाइव्ह आरोग्य तपासण्या, प्रोव्हायडर स्थिती, सर्किट ब्रेकर अवस्था आणि एक्स्पोनेन्शियल बॅकऑफसह दरमर्यादेचा स्वयंचलित शोध.", + "featureCliTitle": "CLI साधने", + "featureCliText": "IDE कॉन्फिगरेशन्स व्यवस्थापित करा, बॅकअप निर्यात/आयात करा, codex प्रोफाइल शोधा आणि डॅशबोर्डमधून सेटिंग्ज कॉन्फिगर करा.", + "featureSecurityTitle": "सुरक्षा आणि धोरणे", + "featureSecurityText": "API की प्रमाणीकरण, IP फिल्टरिंग, प्रॉम्प्ट इंजेक्शन संरक्षण, डोमेन धोरणे, सत्र व्यवस्थापन आणि ऑडिट लॉगिंग.", + "featureCloudSyncTitle": "क्लाउड सिंक", + "featureCloudSyncText": "एन्क्रिप्टेड क्रेडेन्शियल्स आणि स्वयंचलित फेलओव्हरसह दूरस्थ प्रवेशासाठी तुमचे कॉन्फिगरेशन Cloudflare Workers वर सिंक करा.", + "providersAcrossConnectionTypes": "तीन कनेक्शन प्रकारांमध्ये {count} प्रोव्हायडर्स.", + "manageProviders": "प्रोव्हायडर्स व्यवस्थापित करा", + "providersCount": "{count} प्रोव्हायडर्स", + "providerTypeFree": "मोफत स्तर", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", - "useCaseSingleEndpointTitle": "Single endpoint for many providers", - "useCaseSingleEndpointText": "Point clients to one base URL and route by model prefix (for example: gh/, cc/, kr/, openai/).", - "useCaseFallbackTitle": "Fallback and model switching with combos", - "useCaseFallbackText": "Create combo models in Dashboard and keep client config stable while providers rotate internally.", - "useCaseUsageVisibilityTitle": "Usage, cost and debug visibility", - "useCaseUsageVisibilityText": "Track tokens and cost by provider, account, and API key in Usage and Analytics tabs.", + "providerTypeApiKey": "API की", + "useCaseSingleEndpointTitle": "अनेक प्रोव्हायडर्ससाठी एकच एंडपॉइंट", + "useCaseSingleEndpointText": "क्लायंट्सना एका बेस URL कडे निर्देशित करा आणि मॉडेल प्रीफिक्सनुसार रूट करा (उदाहरणार्थ: gh/, cc/, kr/, openai/).", + "useCaseFallbackTitle": "कॉम्बोजसह फॉलबॅक आणि मॉडेल स्विचिंग", + "useCaseFallbackText": "Dashboard मध्ये कॉम्बो मॉडेल्स तयार करा आणि प्रोव्हायडर्स अंतर्गत बदलत असतानाही क्लायंट कॉन्फिगरेशन स्थिर ठेवा.", + "useCaseUsageVisibilityTitle": "वापर, खर्च आणि डीबगची दृश्यमानता", + "useCaseUsageVisibilityText": "Usage आणि Analytics टॅबमध्ये प्रोव्हायडर, खाते आणि API कीनुसार टोकन्स व खर्चाचा मागोवा घ्या.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", - "modelRecommendationLabel": "Model recommendation: explicit prefix", - "clientCodexTitle": "Codex / GitHub Copilot Models", - "clientCodexBullet1": "Use model IDs with", - "clientCodexBullet2": "Codex-family models auto-route to", - "clientCodexBullet3": "Non-Codex models continue on", + "baseUrlLabel": "बेस URL", + "chatEndpointLabel": "चॅट एंडपॉइंट", + "modelRecommendationLabel": "मॉडेल शिफारस: स्पष्ट प्रीफिक्स", + "clientCodexTitle": "Codex / GitHub Copilot मॉडेल्स", + "clientCodexBullet1": "यासह मॉडेल ID वापरा", + "clientCodexBullet2": "Codex-फॅमिली मॉडेल्स आपोआप याकडे रूट होतात", + "clientCodexBullet3": "Codex व्यतिरिक्त इतर मॉडेल्स यावर सुरू राहतात", "clientCursorTitle": "Cursor IDE", - "clientCursorBullet1": "Use", - "clientCursorBullet1Suffix": "prefix for Cursor models.", - "clientCursorBullet2": "OAuth connection - login from the Providers page.", + "clientCursorBullet1": "वापरा", + "clientCursorBullet1Suffix": "Cursor मॉडेल्ससाठी प्रीफिक्स वापरा.", + "clientCursorBullet2": "OAuth कनेक्शन - Providers पृष्ठावरून लॉग इन करा.", "clientClaudeTitle": "Claude Code / Antigravity", - "clientClaudeBullet1Prefix": "Use", - "clientClaudeBullet1Middle": "(Claude) or", - "clientClaudeBullet1Suffix": "(Antigravity) prefix.", + "clientClaudeBullet1Prefix": "वापरा", + "clientClaudeBullet1Middle": "(Claude) किंवा", + "clientClaudeBullet1Suffix": "(Antigravity) उपसर्ग.", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "Use OmniRoute as an OpenAI-compatible base URL and keep explicit provider prefixes for deterministic routing.", - "clientWindsurfBullet2": "Point models to `/v1/chat/completions` for general traffic and preserve `/v1/responses` for Codex-style flows.", - "clientWindsurfBullet3": "Use Dashboard -> CLI Tools for a ready-made Windsurf configuration guide.", + "clientWindsurfBullet1": "OmniRoute चा OpenAI-सुसंगत बेस URL म्हणून वापर करा आणि निर्धारक रूटिंगसाठी स्पष्ट प्रोव्हायडर उपसर्ग कायम ठेवा.", + "clientWindsurfBullet2": "सामान्य ट्रॅफिकसाठी मॉडेल्सना `/v1/chat/completions` कडे निर्देशित करा आणि Codex-शैलीतील प्रवाहांसाठी `/v1/responses` कायम ठेवा.", + "clientWindsurfBullet3": "तयार Windsurf कॉन्फिगरेशन मार्गदर्शिकेसाठी Dashboard -> CLI Tools वापरा.", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline works best with explicit provider/model prefixes so the router never has to guess the backend.", - "clientClineBullet2": "Use `/v1/chat/completions` for general models and reuse the same OmniRoute base URL across different accounts.", - "clientClineBullet3": "Use the Providers dashboard to validate OAuth/API key before debugging Cline runtime issues.", + "clientClineBullet1": "स्पष्ट प्रोव्हायडर/मॉडेल उपसर्गांसह Cline सर्वोत्तम प्रकारे कार्य करते, त्यामुळे राउटरला बॅकएंडचा अंदाज लावावा लागत नाही.", + "clientClineBullet2": "सामान्य मॉडेल्ससाठी `/v1/chat/completions` वापरा आणि वेगवेगळ्या खात्यांमध्ये तोच OmniRoute बेस URL पुन्हा वापरा.", + "clientClineBullet3": "Cline रनटाइम समस्यांचे डीबगिंग करण्यापूर्वी OAuth/API की सत्यापित करण्यासाठी Providers डॅशबोर्ड वापरा.", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "Use OmniRoute as a stable base URL while rotating accounts or provider combos underneath.", - "clientKimiBullet2": "Prefer prefixed models in coding flows so fallback and audit trail remain explicit.", - "clientKimiBullet3": "Use `/v1/responses` when you want native Responses-style routing for tool-using clients.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "clientKimiBullet1": "अंतर्गत खाती किंवा प्रोव्हायडर संयोजने बदलत असताना OmniRoute चा स्थिर बेस URL म्हणून वापर करा.", + "clientKimiBullet2": "कोडिंग प्रवाहांमध्ये उपसर्ग असलेल्या मॉडेल्सना प्राधान्य द्या, जेणेकरून फॉलबॅक आणि ऑडिट ट्रेल स्पष्ट राहतील.", + "clientKimiBullet3": "टूल्स वापरणाऱ्या क्लायंटसाठी नेटिव्ह Responses-शैलीतील रूटिंग हवे असल्यास `/v1/responses` वापरा.", + "protocolsTitle": "प्रोटोकॉल्स: MCP आणि A2A", + "protocolsDescription": "OpenAI-सुसंगत API व्यतिरिक्त OmniRoute दोन कार्यकारी प्रोटोकॉल उपलब्ध करून देते: टूल अंमलबजावणीसाठी MCP आणि एजंट-टू-एजंट वर्कफ्लोजसाठी A2A.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "क्लायंटना ऑडिट दृश्यमानतेसह OmniRoute टूल्स शोधता आणि कॉल करता यावीत यासाठी stdio वरील MCP वापरा.", + "protocolMcpStep1": "`omniroute --mcp` सह MCP ट्रान्सपोर्ट सुरू करा.", + "protocolMcpStep2": "तुमच्या MCP क्लायंटला stdio ट्रान्सपोर्टकडे निर्देशित करा.", + "protocolMcpStep3": "कनेक्टिव्हिटी सत्यापित करण्यासाठी `omniroute_get_health` आणि `omniroute_list_combos` कॉल करा.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", - "endpointChatNote": "OpenAI-compatible chat endpoint (default).", - "endpointResponsesNote": "Responses API endpoint (Codex, o-series).", - "endpointModelsNote": "Model catalog for all connected providers.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", - "endpointSpeechNote": "Text-to-speech generation (ElevenLabs, OpenAI TTS).", - "endpointEmbeddingsNote": "Text embedding generation (OpenAI, Cohere, Voyage).", - "endpointImagesNote": "Image generation (NanoBanana).", - "endpointRewriteChatNote": "Rewrite helper for clients without /v1.", - "endpointRewriteResponsesNote": "Rewrite helper for Responses without /v1.", - "endpointRewriteModelsNote": "Rewrite helper for model discovery without /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", - "modelPrefixesDescriptionStart": "Use the provider prefix before the model name to route to a specific provider. Example:", - "modelPrefixesDescriptionEnd": "routes to GitHub Copilot.", - "provider": "Provider", - "type": "Type", - "troubleshootingModelRouting": "If the client fails with model routing, use explicit provider/model (for example: gh/gpt-5.1-codex).", - "troubleshootingAmbiguousModels": "If you receive ambiguous model errors, pick a provider prefix instead of a bare model ID.", - "troubleshootingCodexFamily": "For GitHub Codex-family models, keep model as gh/codex-model; router selects /responses automatically.", - "troubleshootingTestConnection": "Use Dashboard > Providers > Test Connection before testing from IDEs or external clients.", - "troubleshootingCircuitBreaker": "If a provider shows circuit breaker open, wait for the cooldown or check Health page for details.", - "troubleshootingOAuth": "For OAuth providers, re-authenticate if tokens expire. Check the provider card status indicator.", - "endpointCompletionsNote": "Legacy completions endpoint for text generation.", - "endpointModerationsNote": "Content moderation and safety classification.", - "endpointRerankNote": "Document reranking for retrieval-augmented generation (Cohere, Jina).", - "endpointSearchNote": "Web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity).", - "endpointSearchAnalyticsNote": "Analytics and metrics for search requests.", - "endpointVideoNote": "Video generation (ComfyUI, SD WebUI workflows).", - "endpointMusicNote": "Music generation via ComfyUI workflows.", - "endpointMessagesNote": "Anthropic-native messages endpoint.", - "endpointCountTokensNote": "Count tokens for a given message payload.", - "endpointFilesNote": "File upload for multimodal inputs.", - "endpointBatchesNote": "Batch processing for bulk API requests.", - "endpointWsNote": "WebSocket endpoint for real-time streaming.", - "mgmtProvidersListNote": "List all registered provider connections.", - "mgmtProvidersCreateNote": "Create a new provider connection.", - "mgmtProvidersUpdateNote": "Update an existing provider connection.", - "mgmtProvidersDeleteNote": "Delete a provider connection.", - "mgmtProvidersTestNote": "Test connectivity and authentication for a provider.", - "mgmtProvidersModelsNote": "List available models for a specific provider.", - "mgmtSettingsGetNote": "Retrieve current application settings.", - "mgmtSettingsUpdateNote": "Update application settings.", - "mgmtPayloadRulesGetNote": "Get payload transformation rules.", - "mgmtPayloadRulesUpdateNote": "Update payload transformation rules.", - "mcpToolsTitle": "MCP Tools", - "mcpToolsDescription": "OmniRoute exposes {count} tools via Model Context Protocol for agent orchestration.", - "mcpToolsCount": "{count} tools", - "mcpToolsToc": "MCP Tools", - "mcpToolsRoutingTitle": "Routing & Discovery", - "mcpToolsRoutingDesc": "Health checks, combo management, quota monitoring, cost reporting, and model catalog access.", - "mcpToolsOperationsTitle": "Operations & Strategy", - "mcpToolsOperationsDesc": "Route simulation, budget guards, strategy switching, resilience profiles, and provider metrics.", - "mcpToolsCacheTitle": "Cache Management", - "mcpToolsCacheDesc": "View cache statistics and flush semantic or signature caches.", + "protocolA2aDesc": "टास्क समकालिकपणे किंवा SSE स्ट्रीमिंगद्वारे सबमिट करण्यासाठी A2A JSON-RPC वापरा.", + "protocolA2aStep1": "एजंट शोधण्यासाठी `/.well-known/agent.json` वाचा.", + "protocolA2aStep2": "`POST /a2a` वर `message/send` किंवा `message/stream` विनंत्या पाठवा.", + "protocolA2aStep3": "`tasks/get` आणि `tasks/cancel` वापरून टास्कचे जीवनचक्र व्यवस्थापित करा.", + "protocolTroubleshootingTitle": "प्रोटोकॉल समस्यानिवारण", + "protocolTroubleshooting1": "MCP स्थिती ऑफलाइन असल्यास, stdio प्रक्रिया सुरू असल्याची आणि हार्टबीट फाइल अपडेट होत असल्याची खात्री करा.", + "protocolTroubleshooting2": "A2A टास्क `working` मध्येच राहिल्यास, अंतिम स्थितीसाठी `/api/a2a/tasks/:id` आणि स्ट्रीम इव्हेंट्स तपासा.", + "protocolTroubleshooting3": "कार्यकारी नियंत्रणे आणि ऑडिट दृश्यमानतेसाठी `/dashboard/mcp` आणि `/dashboard/a2a` वापरा.", + "endpointChatNote": "OpenAI-सुसंगत चॅट एंडपॉइंट (डीफॉल्ट).", + "endpointResponsesNote": "Responses API एंडपॉइंट (Codex, o-series).", + "endpointModelsNote": "सर्व कनेक्ट केलेल्या प्रोव्हायडर्ससाठी मॉडेल कॅटलॉग.", + "endpointAudioNote": "ऑडिओ ट्रान्सक्रिप्शन (Deepgram, AssemblyAI).", + "endpointSpeechNote": "टेक्स्ट-टू-स्पीच निर्मिती (ElevenLabs, OpenAI TTS).", + "endpointEmbeddingsNote": "टेक्स्ट एम्बेडिंग निर्मिती (OpenAI, Cohere, Voyage).", + "endpointImagesNote": "प्रतिमा निर्मिती (NanoBanana).", + "endpointRewriteChatNote": "/v1 नसलेल्या क्लायंटसाठी पुनर्लेखन सहाय्यक.", + "endpointRewriteResponsesNote": "/v1 नसलेल्या Responses साठी पुनर्लेखन सहाय्यक.", + "endpointRewriteModelsNote": "/v1 शिवाय मॉडेल शोधण्यासाठी पुनर्लेखन सहाय्यक.", + "mgmtProxiesListNote": "जतन केलेल्या प्रॉक्सी रजिस्ट्री आयटमची सूची दाखवा (पृष्ठांकन समर्थित).", + "mgmtProxiesCreateNote": "रजिस्ट्रीमध्ये पुन्हा वापरता येणारा प्रॉक्सी आयटम तयार करा.", + "mgmtProxiesHealthNote": "प्रॉक्सी लॉगमधून प्रत्येक जतन केलेल्या प्रॉक्सीसाठी 24 तासांची/रोलिंग आरोग्य मेट्रिक्स मिळवा.", + "mgmtProxiesBulkAssignNote": "एका विनंतीमध्ये अनेक स्कोप ID साठी एक प्रॉक्सी नियुक्त करा किंवा त्याची नियुक्ती काढून टाका.", + "mgmtAssignmentsListNote": "स्कोप, scope_id किंवा proxy_id नुसार प्रॉक्सी नियुक्त्यांची सूची दाखवा.", + "mgmtAssignmentsUpdateNote": "ग्लोबल/प्रोव्हायडर/अकाउंट/कॉम्बो स्कोपसाठी प्रॉक्सी नियुक्त करा किंवा त्याची नियुक्ती काढून टाका.", + "mgmtLegacyMigrationNote": "लेगसी proxyConfig मॅप्स रजिस्ट्री नियुक्त्यांमध्ये आयात करा.", + "modelPrefixesDescriptionStart": "विशिष्ट प्रोव्हायडरकडे रूट करण्यासाठी मॉडेलच्या नावापूर्वी प्रोव्हायडर प्रीफिक्स वापरा. उदाहरण:", + "modelPrefixesDescriptionEnd": "GitHub Copilot कडे रूट करते.", + "provider": "प्रोव्हायडर", + "type": "प्रकार", + "troubleshootingModelRouting": "मॉडेल रूटिंगमध्ये क्लायंट अयशस्वी झाल्यास, स्पष्ट provider/model वापरा (उदाहरणार्थ: gh/gpt-5.1-codex).", + "troubleshootingAmbiguousModels": "मॉडेलसंबंधी संदिग्ध त्रुटी आल्यास, केवळ मॉडेल ID ऐवजी प्रोव्हायडर प्रीफिक्स निवडा.", + "troubleshootingCodexFamily": "GitHub Codex-फॅमिली मॉडेल्ससाठी, मॉडेल gh/codex-model असेच ठेवा; राउटर आपोआप /responses निवडतो.", + "troubleshootingTestConnection": "IDEs किंवा बाह्य क्लायंटमधून चाचणी करण्यापूर्वी Dashboard > Providers > Test Connection वापरा.", + "troubleshootingCircuitBreaker": "एखाद्या प्रोव्हायडरसाठी सर्किट ब्रेकर उघडा असल्याचे दिसल्यास, कूलडाउनची प्रतीक्षा करा किंवा तपशीलांसाठी Health पृष्ठ तपासा.", + "troubleshootingOAuth": "OAuth प्रोव्हायडर्ससाठी, टोकन्सची मुदत संपल्यास पुन्हा प्रमाणीकरण करा. प्रोव्हायडर कार्डवरील स्थिती निर्देशक तपासा.", + "endpointCompletionsNote": "मजकूर निर्मितीसाठी लेगसी कम्प्लिशन्स एंडपॉइंट.", + "endpointModerationsNote": "आशय मॉडरेशन आणि सुरक्षितता वर्गीकरण.", + "endpointRerankNote": "रिट्रीव्हल-ऑगमेंटेड जनरेशनसाठी दस्तऐवजांचे पुनःरँकिंग (Cohere, Jina).", + "endpointSearchNote": "5 प्रोव्हायडर्ससह वेब शोध (Serper, Brave, Exa, Tavily, Perplexity).", + "endpointSearchAnalyticsNote": "शोध विनंत्यांसाठी विश्लेषण आणि मेट्रिक्स.", + "endpointVideoNote": "व्हिडिओ निर्मिती (ComfyUI, SD WebUI वर्कफ्लोज).", + "endpointMusicNote": "ComfyUI वर्कफ्लोजद्वारे संगीत निर्मिती.", + "endpointMessagesNote": "Anthropic-नेटिव्ह मेसेजेस एंडपॉइंट.", + "endpointCountTokensNote": "दिलेल्या मेसेज पेलोडसाठी टोकन्स मोजा.", + "endpointFilesNote": "मल्टिमोडल इनपुट्ससाठी फाइल अपलोड.", + "endpointBatchesNote": "मोठ्या प्रमाणातील API विनंत्यांसाठी बॅच प्रक्रिया.", + "endpointWsNote": "रिअल-टाइम स्ट्रीमिंगसाठी WebSocket एंडपॉइंट.", + "mgmtProvidersListNote": "सर्व नोंदणीकृत प्रोव्हायडर कनेक्शन्सची सूची दाखवा.", + "mgmtProvidersCreateNote": "नवीन प्रोव्हायडर कनेक्शन तयार करा.", + "mgmtProvidersUpdateNote": "विद्यमान प्रोव्हायडर कनेक्शन अपडेट करा.", + "mgmtProvidersDeleteNote": "प्रोव्हायडर कनेक्शन हटवा.", + "mgmtProvidersTestNote": "प्रोव्हायडरसाठी कनेक्टिव्हिटी आणि प्रमाणीकरणाची चाचणी करा.", + "mgmtProvidersModelsNote": "विशिष्ट प्रोव्हायडरसाठी उपलब्ध मॉडेल्सची सूची दाखवा.", + "mgmtSettingsGetNote": "सध्याच्या ॲप्लिकेशन सेटिंग्ज मिळवा.", + "mgmtSettingsUpdateNote": "ॲप्लिकेशन सेटिंग्ज अपडेट करा.", + "mgmtPayloadRulesGetNote": "पेलोड रूपांतरणाचे नियम मिळवा.", + "mgmtPayloadRulesUpdateNote": "पेलोड रूपांतरणाचे नियम अपडेट करा.", + "mcpToolsTitle": "MCP साधने", + "mcpToolsDescription": "OmniRoute एजंट ऑर्केस्ट्रेशनसाठी Model Context Protocol द्वारे {count} साधने उपलब्ध करून देते.", + "mcpToolsCount": "{count} साधने", + "mcpToolsToc": "MCP साधने", + "mcpToolsRoutingTitle": "रूटिंग आणि शोध", + "mcpToolsRoutingDesc": "स्थिती तपासण्या, कॉम्बो व्यवस्थापन, कोटा निरीक्षण, खर्च अहवाल आणि मॉडेल कॅटलॉगचा ॲक्सेस.", + "mcpToolsOperationsTitle": "कार्यप्रणाली आणि धोरण", + "mcpToolsOperationsDesc": "रूट सिम्युलेशन, बजेट मर्यादा, धोरण बदल, लवचिकता प्रोफाइल आणि प्रदाता मेट्रिक्स.", + "mcpToolsCacheTitle": "कॅशे व्यवस्थापन", + "mcpToolsCacheDesc": "कॅशेची आकडेवारी पाहा आणि सिमॅंटिक किंवा सिग्नेचर कॅशे रिकामे करा.", "mcpToolsCompressionTitle": "कॉम्प्रेशन इंजिन", "mcpToolsCompressionDesc": "RTK/Brotli कॉम्प्रेशन कॉन्फिगर करा, इंजिन स्वॅप करा आणि कॉम्बोद्वारे कॉम्प्रेशन ॲनालिटिक्सची तपासणी करा.", "mcpToolsOneProxyTitle": "1 प्रॉक्सी / बोगदे", "mcpToolsOneProxyDesc": "आउटबाउंड प्रॉक्सी व्यवस्थापित करा, निवासी IP फिरवा आणि प्रॉक्सी आरोग्याची तपासणी करा.", - "mcpToolsMemoryTitle": "Memory", - "mcpToolsMemoryDesc": "Search, add, and clear persistent conversational memory entries.", - "mcpToolsSkillsTitle": "Skills", - "mcpToolsSkillsDesc": "List, enable, execute, and monitor custom skill executions.", - "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "Automatically create optimized combos based on your connected providers, usage patterns, and model capabilities.", - "featureSearchTitle": "Web Search", - "featureSearchText": "Integrated web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity) including analytics and cost tracking.", - "featureMemoryTitle": "Memory System", - "featureMemoryText": "Persistent conversational memory with extraction, injection, retrieval, and summarization across sessions.", - "featureSkillsTitle": "Skills Framework", - "featureSkillsText": "Extensible skill system with built-in and custom skills, sandbox execution, request interception, and context injection.", - "featureAcpTitle": "Agent Communication", - "featureAcpText": "Agent Communication Protocol (ACP) registry for managing agent-to-agent workflows and tool orchestration.", - "protocolAcpTitle": "ACP (Agent Communication)", - "protocolAcpDesc": "Register and manage agents via the ACP registry for inter-agent communication and tool sharing.", - "protocolAcpStep1": "Navigate to Dashboard → Agents to view registered ACP agents.", - "protocolAcpStep2": "Register new agents with capabilities and endpoint configuration.", - "protocolAcpStep3": "Use CLI Tools to configure agent communication channels.", + "mcpToolsMemoryTitle": "मेमरी", + "mcpToolsMemoryDesc": "कायमस्वरूपी संभाषण मेमरी नोंदी शोधा, जोडा आणि साफ करा.", + "mcpToolsSkillsTitle": "कौशल्ये", + "mcpToolsSkillsDesc": "सानुकूल कौशल्य अंमलबजावण्यांची सूची पाहा, त्या सक्षम व कार्यान्वित करा आणि त्यांचे निरीक्षण करा.", + "featureAutoComboTitle": "ऑटो-कॉम्बो", + "featureAutoComboText": "तुमचे कनेक्ट केलेले प्रदाते, वापर पद्धती आणि मॉडेल क्षमता यांच्या आधारे ऑप्टिमाइझ केलेले कॉम्बो स्वयंचलितपणे तयार करा.", + "featureSearchTitle": "वेब शोध", + "featureSearchText": "विश्लेषण आणि खर्च ट्रॅकिंगसह 5 प्रदात्यांचा (Serper, Brave, Exa, Tavily, Perplexity) एकात्मिक वेब शोध.", + "featureMemoryTitle": "मेमरी प्रणाली", + "featureMemoryText": "सत्रांमध्ये निष्कर्षण, अंतःक्षेपण, पुनर्प्राप्ती आणि सारांशीकरणासह कायमस्वरूपी संभाषण मेमरी.", + "featureSkillsTitle": "कौशल्य फ्रेमवर्क", + "featureSkillsText": "अंगभूत आणि सानुकूल कौशल्ये, सँडबॉक्स अंमलबजावणी, विनंती इंटरसेप्शन आणि संदर्भ अंतःक्षेपणासह विस्तारक्षम कौशल्य प्रणाली.", + "featureAcpTitle": "एजंट संप्रेषण", + "featureAcpText": "एजंट-टू-एजंट कार्यप्रवाह आणि साधन ऑर्केस्ट्रेशन व्यवस्थापित करण्यासाठी Agent Communication Protocol (ACP) रजिस्ट्री.", + "protocolAcpTitle": "ACP (एजंट संप्रेषण)", + "protocolAcpDesc": "एजंटमधील संप्रेषण आणि साधन सामायिकरणासाठी ACP रजिस्ट्रीद्वारे एजंटची नोंदणी आणि व्यवस्थापन करा.", + "protocolAcpStep1": "नोंदणीकृत ACP एजंट पाहण्यासाठी Dashboard → Agents येथे जा.", + "protocolAcpStep2": "क्षमता आणि एंडपॉइंट कॉन्फिगरेशनसह नवीन एजंटची नोंदणी करा.", + "protocolAcpStep3": "एजंट संप्रेषण चॅनेल कॉन्फिगर करण्यासाठी CLI Tools वापरा.", "metadataTitleTemplate": "%s — OmniRoute दस्तऐवज", "metadataDefaultTitle": "OmniRoute दस्तऐवज", "metadataDescription": "OmniRoute AI गेटवे साठी व्यापक दस्तऐवज — सेटअप, API, संकुचन, तैनाती, आणि अधिक.", @@ -10276,95 +10283,95 @@ } }, "legal": { - "privacyPolicy": "Privacy Policy", - "termsOfService": "Terms of Service", - "providerConfigurations": "Provider configurations", - "apiKeys": "API keys", - "usageLogs": "Usage logs", - "applicationSettings": "Application settings", - "viewExportAnalytics": "View and export usage analytics", - "clearHistory": "Clear usage history at any time", - "configureRetention": "Configure log retention policies", - "backupRestore": "Back up and restore your database", - "privacyMetadataTitle": "Privacy Policy | OmniRoute", - "privacyMetadataDescription": "Privacy policy for the OmniRoute AI API proxy router.", - "termsMetadataTitle": "Terms of Service | OmniRoute", - "termsMetadataDescription": "Terms of service for the OmniRoute AI API proxy router.", - "backToHome": "Back to home", - "lastUpdated": "Last updated: {date}", - "policyLastUpdatedDate": "February 13, 2026", + "privacyPolicy": "गोपनीयता धोरण", + "termsOfService": "सेवा अटी", + "providerConfigurations": "प्रदाता कॉन्फिगरेशन्स", + "apiKeys": "API की", + "usageLogs": "वापर लॉग", + "applicationSettings": "ॲप्लिकेशन सेटिंग्ज", + "viewExportAnalytics": "वापर विश्लेषण पाहा आणि निर्यात करा", + "clearHistory": "वापर इतिहास कधीही साफ करा", + "configureRetention": "लॉग धारणा धोरणे कॉन्फिगर करा", + "backupRestore": "तुमच्या डेटाबेसचा बॅकअप घ्या आणि तो पुनर्संचयित करा", + "privacyMetadataTitle": "गोपनीयता धोरण | OmniRoute", + "privacyMetadataDescription": "OmniRoute AI API प्रॉक्सी राउटरसाठी गोपनीयता धोरण.", + "termsMetadataTitle": "सेवा अटी | OmniRoute", + "termsMetadataDescription": "OmniRoute AI API प्रॉक्सी राउटरसाठी सेवा अटी.", + "backToHome": "मुख्यपृष्ठावर परत जा", + "lastUpdated": "शेवटचे अद्यतन: {date}", + "policyLastUpdatedDate": "13 फेब्रुवारी 2026", "listSeparator": "-", - "questionsVisit": "Questions? Visit our", - "githubRepository": "GitHub repository", - "privacySection1Title": "1. Local-First Architecture", - "privacySection1Text": "OmniRoute is designed as a local-first application. All data processing and storage occurs entirely on your machine. There is no centralized server collecting your information.", - "privacySection2Title": "2. Data We Store", - "privacyDataStoredIn": "The following data is stored locally in", - "privacyDataProviderConfigurationsDesc": "connection URLs, provider types, and priority settings", - "privacyDataApiKeysDesc": "encrypted and stored locally for authenticating with AI providers", - "privacyDataUsageLogsDesc": "request counts, token usage, model names, timestamps, and response times", - "privacyDataApplicationSettingsDesc": "theme preferences, routing strategy, and combo configurations", - "privacySection3Title": "3. No Telemetry", - "privacySection3Text": "OmniRoute does not collect telemetry, analytics, or crash reports. No data is sent to us or any third party. Your usage patterns, API calls, and configurations remain entirely private.", - "privacySection4Title": "4. Third-Party AI Providers", - "privacySection4Text": "When you make API calls through OmniRoute, your requests are forwarded to the AI providers you have configured (for example: OpenAI, Anthropic, Google). These providers have their own privacy policies that govern how they handle your data. Please review:", - "privacyOpenAiPolicy": "OpenAI Privacy Policy", - "privacyAnthropicPolicy": "Anthropic Privacy Policy", - "privacyGooglePolicy": "Google Privacy Policy", - "privacySection5Title": "5. Cloud Sync (Optional)", - "privacySection5Text": "If you enable the optional cloud sync feature, provider configurations and API keys may be transmitted to a configured cloud endpoint. This feature is disabled by default and requires explicit opt-in.", - "privacySection6Title": "6. Logging", - "privacyLoggingIntro": "Request logs can be configured through the dashboard settings. You can:", - "privacySection7Title": "7. Your Rights", - "privacySection7TextStart": "Since all data is stored locally, you have full control. You can delete your data at any time by removing the", - "privacySection7TextEnd": "directory or using the database backup and restore features in the dashboard.", - "termsSection1Title": "1. Overview", - "termsSection1Text": "OmniRoute is a local-first AI API proxy router that operates entirely on your machine. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "termsSection2Title": "2. User Responsibilities", - "termsResponsibilityApiKeys": "You are solely responsible for managing your own API keys and credentials for third-party AI providers (OpenAI, Anthropic, Google, etc.).", - "termsResponsibilityCompliance": "You must comply with the terms of service of each AI provider whose API you access through OmniRoute.", - "termsResponsibilitySecurity": "You are responsible for the security of your local OmniRoute installation, including setting a password and restricting network access.", - "termsSection3Title": "3. How It Works", - "termsSection3Text": "OmniRoute acts as an intermediary proxy. API calls sent to OmniRoute are translated and forwarded to your configured AI providers. OmniRoute does not modify the content of your requests or responses beyond the necessary protocol translation.", - "termsSection4Title": "4. Data Handling", - "termsDataStoredLocally": "All data is stored locally on your machine in a SQLite database.", - "termsNoTransmission": "OmniRoute does not transmit any data to external servers unless you explicitly enable cloud sync features.", - "termsDataLocationText": "Usage logs, API keys, and configuration are stored in", - "termsSection5Title": "5. Disclaimer", - "termsSection5Text": "OmniRoute is provided \"as is\" without warranty of any kind. We are not responsible for any costs incurred through API usage, service disruptions, or data loss. Always maintain backups of your configuration.", - "termsSection6Title": "6. Open Source", - "termsSection6Text": "OmniRoute is open-source software. You are free to inspect, modify, and distribute it under the terms of its license." + "questionsVisit": "प्रश्न आहेत? आमच्या येथे भेट द्या:", + "githubRepository": "GitHub रिपॉझिटरी", + "privacySection1Title": "1. स्थानिक-प्रथम आर्किटेक्चर", + "privacySection1Text": "OmniRoute हे स्थानिक-प्रथम ॲप्लिकेशन म्हणून डिझाइन केले आहे. सर्व डेटा प्रक्रिया आणि संचयन पूर्णपणे तुमच्या मशीनवर होते. तुमची माहिती गोळा करणारा कोणताही केंद्रीकृत सर्व्हर नाही.", + "privacySection2Title": "2. आम्ही संचयित करत असलेला डेटा", + "privacyDataStoredIn": "खालील डेटा स्थानिक पातळीवर येथे संचयित केला जातो:", + "privacyDataProviderConfigurationsDesc": "कनेक्शन URLs, प्रदात्यांचे प्रकार आणि प्राधान्य सेटिंग्ज", + "privacyDataApiKeysDesc": "AI प्रदात्यांसोबत प्रमाणीकरणासाठी कूटबद्ध करून स्थानिक पातळीवर संचयित केले जाते", + "privacyDataUsageLogsDesc": "विनंती संख्या, टोकन वापर, मॉडेलची नावे, टाइमस्टॅम्प आणि प्रतिसाद वेळा", + "privacyDataApplicationSettingsDesc": "थीम प्राधान्ये, राउटिंग धोरण आणि कॉम्बो कॉन्फिगरेशन्स", + "privacySection3Title": "3. कोणतीही टेलिमेट्री नाही", + "privacySection3Text": "OmniRoute टेलिमेट्री, विश्लेषण किंवा क्रॅश अहवाल गोळा करत नाही. आम्हाला किंवा कोणत्याही तृतीय पक्षाला कोणताही डेटा पाठवला जात नाही. तुमच्या वापराच्या पद्धती, API कॉल्स आणि कॉन्फिगरेशन्स पूर्णपणे खाजगी राहतात.", + "privacySection4Title": "4. तृतीय-पक्ष AI प्रदाते", + "privacySection4Text": "तुम्ही OmniRoute द्वारे API कॉल करता तेव्हा, तुमच्या विनंत्या तुम्ही कॉन्फिगर केलेल्या AI प्रदात्यांकडे (उदाहरणार्थ: OpenAI, Anthropic, Google) अग्रेषित केल्या जातात. हे प्रदाते तुमचा डेटा कसा हाताळतात हे त्यांच्या स्वतःच्या गोपनीयता धोरणांद्वारे नियंत्रित केले जाते. कृपया पुढील धोरणे पाहा:", + "privacyOpenAiPolicy": "OpenAI गोपनीयता धोरण", + "privacyAnthropicPolicy": "Anthropic गोपनीयता धोरण", + "privacyGooglePolicy": "Google गोपनीयता धोरण", + "privacySection5Title": "5. क्लाउड सिंक (पर्यायी)", + "privacySection5Text": "तुम्ही पर्यायी क्लाउड सिंक वैशिष्ट्य सक्षम केल्यास, प्रदाता कॉन्फिगरेशन्स आणि API कीज कॉन्फिगर केलेल्या क्लाउड एंडपॉइंटवर पाठवल्या जाऊ शकतात. हे वैशिष्ट्य डीफॉल्टनुसार अक्षम असते आणि ते स्पष्टपणे स्वीकारून सक्षम करावे लागते.", + "privacySection6Title": "6. लॉगिंग", + "privacyLoggingIntro": "विनंती लॉग्स डॅशबोर्ड सेटिंग्जमधून कॉन्फिगर करता येतात. तुम्ही पुढील गोष्टी करू शकता:", + "privacySection7Title": "7. तुमचे अधिकार", + "privacySection7TextStart": "सर्व डेटा स्थानिक पातळीवर संचयित केला जात असल्यामुळे, त्यावर तुमचे पूर्ण नियंत्रण असते. तुम्ही कोणत्याही वेळी पुढील गोष्ट काढून टाकून तुमचा डेटा हटवू शकता:", + "privacySection7TextEnd": "डिरेक्टरी किंवा डॅशबोर्डमधील डेटाबेस बॅकअप आणि पुनर्संचयित करण्याची वैशिष्ट्ये वापरून.", + "termsSection1Title": "1. आढावा", + "termsSection1Text": "OmniRoute हा स्थानिक-प्रथम AI API प्रॉक्सी राउटर आहे, जो पूर्णपणे तुमच्या मशीनवर चालतो. तो लोड बॅलन्सिंग, फेलओव्हर आणि वापराचा मागोवा घेण्यासह अनेक AI प्रदात्यांकडे विनंत्या रूट करतो.", + "termsSection2Title": "2. वापरकर्त्याच्या जबाबदाऱ्या", + "termsResponsibilityApiKeys": "तृतीय-पक्ष AI प्रदात्यांसाठी (OpenAI, Anthropic, Google इ.) तुमच्या स्वतःच्या API कीज आणि क्रेडेन्शियल्स व्यवस्थापित करण्याची संपूर्ण जबाबदारी तुमची आहे.", + "termsResponsibilityCompliance": "OmniRoute द्वारे ज्या प्रत्येक AI प्रदात्याच्या API मध्ये तुम्ही प्रवेश करता, त्या प्रदात्याच्या सेवा अटींचे तुम्ही पालन करणे आवश्यक आहे.", + "termsResponsibilitySecurity": "पासवर्ड सेट करणे आणि नेटवर्क प्रवेश मर्यादित करणे यांसह तुमच्या स्थानिक OmniRoute इंस्टॉलेशनच्या सुरक्षिततेची जबाबदारी तुमची आहे.", + "termsSection3Title": "3. हे कसे कार्य करते", + "termsSection3Text": "OmniRoute मध्यस्थ प्रॉक्सी म्हणून काम करते. OmniRoute कडे पाठवलेले API कॉल्स रूपांतरित करून तुम्ही कॉन्फिगर केलेल्या AI प्रदात्यांकडे अग्रेषित केले जातात. आवश्यक प्रोटोकॉल रूपांतरणाव्यतिरिक्त OmniRoute तुमच्या विनंत्या किंवा प्रतिसादांमधील मजकूर बदलत नाही.", + "termsSection4Title": "4. डेटा हाताळणी", + "termsDataStoredLocally": "सर्व डेटा तुमच्या मशीनवरील SQLite डेटाबेसमध्ये स्थानिक पातळीवर संचयित केला जातो.", + "termsNoTransmission": "तुम्ही क्लाउड सिंक वैशिष्ट्ये स्पष्टपणे सक्षम केल्याशिवाय OmniRoute कोणताही डेटा बाह्य सर्व्हरवर पाठवत नाही.", + "termsDataLocationText": "वापर नोंदी, API की आणि कॉन्फिगरेशन येथे संग्रहित केले जातात", + "termsSection5Title": "5. अस्वीकरण", + "termsSection5Text": "OmniRoute कोणत्याही प्रकारच्या हमीशिवाय \"जसे आहे तसे\" प्रदान केले जाते. API वापरामुळे आलेला कोणताही खर्च, सेवा खंडित होणे किंवा डेटा गमावणे यासाठी आम्ही जबाबदार नाही. तुमच्या कॉन्फिगरेशनच्या बॅकअप प्रती नेहमी ठेवा.", + "termsSection6Title": "6. मुक्त स्रोत", + "termsSection6Text": "OmniRoute हे मुक्त-स्रोत सॉफ्टवेअर आहे. त्याच्या परवान्याच्या अटींनुसार तुम्ही त्याचे परीक्षण, बदल आणि वितरण करू शकता." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI एजंट्स", + "description": "तुमच्या सिस्टमवर इंस्टॉल केलेले CLI एजंट्स शोधा. स्वयंचलित शोधासाठी सानुकूल एजंट्स जोडा.", + "refresh": "रीफ्रेश करा", + "installed": "इंस्टॉल केलेले", + "notFound": "आढळले नाही", + "builtIn": "अंगभूत", + "custom": "सानुकूल", + "remove": "काढून टाका", + "addCustomAgent": "सानुकूल एजंट जोडा", + "addCustomAgentDesc": "शोधासाठी कोणतेही CLI साधन नोंदणीकृत करा. रीफ्रेश केल्यावर ते स्वयंचलितपणे स्कॅन केले जाईल.", + "agentName": "एजंटचे नाव", + "binaryName": "बायनरीचे नाव", + "versionCommand": "आवृत्ती कमांड", + "spawnArgs": "स्पॉन आर्ग्युमेंट्स", + "addAgent": "एजंट जोडा", + "scanning": "CLI एजंट्ससाठी सिस्टम स्कॅन करत आहे...", + "opencodeIntegration": "OpenCode एकत्रीकरण", + "opencodeDetected": "opencode {version} आढळले", + "opencodeDesc": "तुमचा OmniRoute बेस URL आणि सर्व उपलब्ध मॉडेल्ससह वापरण्यास तयार {configFile} तयार करा — ती तुमच्या प्रकल्पाच्या रूटमध्ये ठेवा आणि {command} चालवा.", + "downloadConfig": "{file} डाउनलोड करा", + "downloaded": "डाउनलोड झाले!", + "setupGuideTitle": "सेटअप मार्गदर्शक", + "openCliTools": "CLI साधने उघडा", + "setupGuideDetectCliTitle": "इंस्टॉल केलेले CLI शोधा", + "setupGuideDetectCliDesc": "CLI इंस्टॉल किंवा अपडेट केल्यानंतर रीफ्रेश करा क्लिक करा, जेणेकरून OmniRoute बायनरी आणि आवृत्त्या पुन्हा स्कॅन करू शकेल.", + "setupGuideCustomAgentTitle": "सानुकूल बायनरी नोंदणीकृत करा", + "setupGuideCustomAgentDesc": "तुमचे CLI अंगभूत सूचीमध्ये नसल्यास सानुकूल एजंट जोडा वापरा. बायनरीचे नाव आणि आवृत्ती कमांड द्या.", + "setupGuideCommandMissingTitle": "'command not found' चे निराकरण करा", + "setupGuideCommandMissingDesc": "CLI कमांड PATH मध्ये अस्तित्वात असल्याची खात्री करा, नवीन टर्मिनल सत्र उघडा आणि रीफ्रेश पुन्हा चालवा.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10491,148 +10498,148 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "साधा चॅट", + "streaming": "स्ट्रीमिंग", + "system-prompt": "सिस्टम प्रॉम्प्ट", + "thinking": "विचार प्रक्रिया", + "tool-calling": "साधन कॉलिंग", + "multi-turn": "बहु-टर्न", "vision": "दृष्टी", "schema-coercion": "स्कीमा जबरदस्ती" }, "templateDescriptions": { - "simple-chat": "Basic chat template with system message", - "streaming": "Template for streaming responses", - "system-prompt": "Template with custom system prompt", - "thinking": "Template with reasoning/thinking budget", - "tool-calling": "Template for tool/function calling", - "multi-turn": "Template for multi-turn conversations", + "simple-chat": "सिस्टम संदेशासह मूलभूत चॅट टेम्पलेट", + "streaming": "स्ट्रीमिंग प्रतिसादांसाठी टेम्पलेट", + "system-prompt": "सानुकूल सिस्टम प्रॉम्प्टसह टेम्पलेट", + "thinking": "तर्क/विचार बजेटसह टेम्पलेट", + "tool-calling": "टूल/फंक्शन कॉलिंगसाठी टेम्पलेट", + "multi-turn": "बहु-टर्न संभाषणांसाठी टेम्पलेट", "vision": "प्रतिमा इनपुटसह मल्टीमोडल टेम्पलेट", "schema-coercion": "संरचित-आउटपुट / JSON स्कीमा अंमलबजावणी" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful AI assistant.", - "userGreeting": "Hello! How can I help you today?" + "system": "तुम्ही एक उपयुक्त AI सहाय्यक आहात.", + "userGreeting": "नमस्कार! आज मी तुम्हाला कशी मदत करू शकतो?" }, "streaming": { - "prompt": "Write a story about" + "prompt": "याबद्दल एक कथा लिहा" }, "systemPrompt": { - "question": "What is the meaning of life?", - "systemInstruction": "Provide a thoughtful, philosophical answer." + "question": "जीवनाचा अर्थ काय आहे?", + "systemInstruction": "विचारपूर्वक, तात्त्विक उत्तर द्या." }, "thinking": { - "question": "Explain quantum computing" + "question": "क्वांटम संगणन समजावून सांगा" }, "toolCalling": { - "cityNameDescription": "The name of the city to get weather for", - "toolDescription": "Get current weather for a location", - "userWeather": "What's the weather in Tokyo?" + "cityNameDescription": "हवामानाची माहिती मिळवण्यासाठी शहराचे नाव", + "toolDescription": "एखाद्या ठिकाणचे सध्याचे हवामान मिळवा", + "userWeather": "Tokyo मधील हवामान कसे आहे?" }, "multiTurn": { - "system": "You are a helpful assistant.", - "assistantExample": "I'd be happy to help you with that.", - "userInitial": "I need help with", - "userFollowUp": "Can you elaborate on that?" + "system": "तुम्ही एक उपयुक्त सहाय्यक आहात.", + "assistantExample": "याबाबत तुम्हाला मदत करण्यात मला आनंद होईल.", + "userInitial": "मला याबाबत मदत हवी आहे", + "userFollowUp": "तुम्ही याबद्दल अधिक सविस्तर सांगू शकता का?" } }, "cache": { - "title": "Cache Management", - "description": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "refresh": "Refresh", - "clearAll": "Clear Semantic Cache", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "title": "कॅशे व्यवस्थापन", + "description": "प्रदात्याच्या प्रॉम्प्ट कॅशेची कार्यक्षमता आणि स्थानिक सिमॅंटिक प्रतिसादांचा पुनर्वापर यांचे निरीक्षण करा.", + "refresh": "रीफ्रेश करा", + "clearAll": "सिमॅंटिक कॅशे साफ करा", + "memoryEntries": "मेमरी नोंदी", + "memoryEntriesSub": "इन-मेमरी LRU", + "dbEntries": "DB नोंदी", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "कॅशे हिट्स", + "cacheHitsSub": "एकूण {total} पैकी", + "tokensSaved": "वाचवलेले टोकन", + "tokensSavedSub": "हिट्सवरून अंदाजित", + "hitRate": "हिट दर", + "performance": "कॅशे कार्यप्रदर्शन", + "autoRefresh": "प्रत्येक {seconds}s नंतर आपोआप रीफ्रेश होते", + "hits": "हिट्स", + "misses": "मिसेस", + "total": "एकूण", + "behavior": "कॅशेचे वर्तन", + "behaviorDeterministic": "केवळ temperature=0 असलेल्या नॉन-स्ट्रीमिंग विनंत्या कॅशे केल्या जातात.", + "behaviorBypass": "{header} हेडर वापरून वगळा.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", - "clearSuccess": "Semantic cache cleared. {count} entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "behaviorTtl": "डीफॉल्ट TTL: 30 मिनिटे. {envVar} द्वारे कॉन्फिगर करा.", + "idempotency": "आयडेम्पोटन्सी स्तर", + "activeDedupKeys": "सक्रिय डीड्युप कीज", + "dedupWindow": "डीड्युप कालावधी", + "clearSuccess": "सिमॅंटिक कॅशे साफ केली. {count} नोंदी काढल्या.", + "clearError": "कॅशे साफ करण्यात अयशस्वी.", + "unavailable": "कॅशे अनुपलब्ध", + "unavailableDesc": "कॅशेची आकडेवारी मिळवता आली नाही. सर्व्हर सुरू असल्याची खात्री करा.", "loadingCacheAria": "कॅश लोड होत आहे", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", - "cachedTokens": "Cache Read Tokens", - "cacheCreationTokens": "Cache Write Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", - "cachedTokensRead": "Read from cache", - "cacheCreationWrite": "Written to cache", - "cacheReuseRatio": "Cache Reuse Ratio", - "cacheReuseRatioDesc": "Cache read tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "promptCache": "प्रॉम्प्ट कॅशे (प्रदात्याच्या बाजूचे)", + "semanticCache": "सिमॅंटिक कॅशे", + "promptCacheSectionDesc": "वापर इतिहासातील प्रदात्याच्या बाजूच्या प्रॉम्प्ट कॅशिंगची गतिविधी दाखवते, ज्यामुळे कॅशे नियंत्रण कुठे सक्रिय आहे आणि इनपुटचा किती पुनर्वापर होत आहे हे तुम्ही पाहू शकता.", + "promptTrendDesc": "मागील 24 तासांमधील तासानुसार विनंती संख्या, कॅशे व्याप्ती आणि कॅशे वाचन संख्या.", + "cachedRequests": "कॅशे केलेल्या विनंत्या", + "cachedRequests24h": "कॅशे केलेल्या विनंत्या (24 तास)", + "cacheHitRate": "कॅशे हिट दर", + "cacheRate": "कॅशे दर", + "cacheRateDesc": "एकूण विनंत्यांपैकी", + "cachedTokens": "कॅशे वाचन टोकन", + "cacheCreationTokens": "कॅशे लेखन टोकन", + "cacheMetrics": "प्रॉम्प्ट कॅशे मेट्रिक्स", + "withCacheControl": "कॅशे नियंत्रणासह", + "cachedTokensRead": "कॅशेमधून वाचले", + "cacheCreationWrite": "कॅशेमध्ये लिहिले", + "cacheReuseRatio": "कॅशे पुनर्वापर गुणोत्तर", + "cacheReuseRatioDesc": "कॅशे वाचन टोकन / एकूण इनपुट टोकन", + "estCostSaved": "अंदाजे वाचलेला खर्च", + "lastUpdated": "शेवटचे अद्यतन", + "hoursTracked": "ट्रॅक केलेले तास", + "busiestHour": "सर्वाधिक व्यस्त तास", + "peakCacheRate": "कमाल कॅशे दर", + "trendHour": "तास", + "activityVolume": "गतिविधी", + "requestsShort": "विनंत्या", + "inputShort": "इनपुट", + "cachedShort": "कॅशे केलेले", + "writeShort": "लेखन", + "resetting": "रीसेट करत आहे...", + "resetMetrics": "मेट्रिक्स रीसेट करा", + "byProvider": "प्रदात्यानुसार तपशील", + "providerCacheRateDesc": "प्रत्येक प्रदाता एकूण इनपुट टोकन, कॅशे वाचन टोकन आणि कॅशे लेखन टोकन दाखवतो, ज्यामुळे तुम्ही मूळ एकूण संख्यांशी पुनर्वापर गुणोत्तर पडताळू शकता.", "provider": "Provider", - "requests": "Requests", - "inputTokens": "Total Input Tokens", - "cachedTokensCol": "Cache Read", - "cacheCreation": "Cache Write", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "requests": "विनंत्या", + "inputTokens": "एकूण इनपुट टोकन्स", + "cachedTokensCol": "कॅशे वाचन", + "cacheCreation": "कॅशे लेखन", + "trend24h": "कॅशे कल (24 तास)", + "peakCached": "कमाल कॅश केलेले", + "cached": "कॅश केलेले", + "overview": "आढावा", "tableProvider": "प्रदाता", "tableModel": "मॉडेल", "performanceTitle": "कामगिरी", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoute ची स्वतःची निर्धारक प्रतिसाद कॅशे. सक्षम केल्यावर, वारंवार येणाऱ्या नॉन-स्ट्रीमिंग temperature=0 विनंत्या अपस्ट्रीम प्रदात्याकडे न पाठवता स्थानिकरीत्या पूर्ण केल्या जाऊ शकतात.", + "semanticCacheDisabledDesc": "सिमॅंटिक कॅशे अक्षम आहे. तुम्ही Settings मध्ये ती पुन्हा सुरू करेपर्यंत OmniRoute स्थानिक प्रतिसादांचा पुनर्वापर वगळेल.", + "semanticEntriesDesc": "सध्या SQLite मध्ये संग्रहित केलेल्या कायमस्वरूपी सिमॅंटिक कॅशे नोंदी. प्रदात्याच्या बाजूची प्रॉम्प्ट कॅशे गतिविधी येथे सूचीबद्ध केलेली नाही.", + "searchEntries": "नोंदी शोधा...", + "search": "शोधा", + "loading": "लोड होत आहे...", + "entriesLoadError": "सिमॅंटिक कॅशे नोंदी लोड करण्यात अयशस्वी.", + "noEntries": "कॅशे नोंदी आढळल्या नाहीत", + "noPromptCacheData": "प्रदात्याच्या बाजूची कोणतीही प्रॉम्प्ट कॅशे गतिविधी अद्याप नोंदवली गेलेली नाही.", + "noTrendData": "गेल्या 24 तासांत कोणतीही प्रॉम्प्ट कॅशे गतिविधी नोंदवली गेलेली नाही.", + "signature": "स्वाक्षरी", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "निर्मितीची वेळ", + "expires": "कालबाह्यता", + "actions": "क्रिया", + "deduplicatedRequests": "डिडुप्लिकेट केलेल्या विनंत्या", + "savedCalls": "वाचवलेले API कॉल्स", + "totalProcessed": "प्रक्रिया केलेल्या एकूण विनंत्या", + "disabled": "अक्षम", + "totalRequests": "एकूण विनंत्या", "reasoningCache": "रिझनिंग रीप्ले", "reasoningCacheDesc": "मल्टी-टर्न टूल कॉलिंग फ्लोसाठी मॉडेल विचार जतन करते", "reasoningEntries": "सक्रिय नोंदी", @@ -10669,56 +10676,56 @@ "minutesAgo": "{minutes}m पूर्वी", "hoursAgo": "{hours}h पूर्वी", "daysAgo": "{days}d पूर्वी", - "entries": "Entries" + "entries": "नोंदी" }, "proxyConfigModal": { - "levelGlobal": "Global", - "levelProvider": "Provider", - "levelCombo": "Combo", - "levelKey": "Key", - "levelDirect": "Direct (no proxy)", - "titleGlobal": "Global Proxy Configuration", - "titleLevel": "{level} Proxy — {label}", - "loading": "Loading proxy configuration...", - "inheritingFrom": "Inheriting from", - "source": "Source", - "savedProxy": "Saved Proxy", - "custom": "Custom", - "selectSavedProxyPlaceholder": "Select saved proxy...", - "proxyType": "Proxy Type", - "host": "Host", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", - "port": "Port", - "authOptional": "Authentication (optional)", - "username": "Username", - "usernamePlaceholder": "Username", - "password": "Password", - "passwordPlaceholder": "Password", - "connected": "Connected", - "ip": "IP:", - "connectionFailed": "Connection failed", - "testConnection": "Test connection", - "clear": "Clear", - "cancel": "Cancel", - "save": "Save", - "errorSelectSavedProxy": "Please select a saved proxy first.", - "errorSelectProxyFirst": "Please select a proxy first.", - "errorProxyNotFound": "Selected proxy not found.", - "errorClearSavedProxy": "Failed to clear saved proxy", - "errorSaveProxy": "Failed to save proxy configuration", - "errorClearProxy": "Failed to clear proxy configuration", - "errorSocks5Hidden": "SOCKS5 is configured but hidden because NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false." + "levelGlobal": "जागतिक", + "levelProvider": "प्रदाता", + "levelCombo": "संयोजन", + "levelKey": "की", + "levelDirect": "थेट (प्रॉक्सी नाही)", + "titleGlobal": "जागतिक प्रॉक्सी कॉन्फिगरेशन", + "titleLevel": "{level} प्रॉक्सी — {label}", + "loading": "प्रॉक्सी कॉन्फिगरेशन लोड होत आहे...", + "inheritingFrom": "याकडून वारसा घेत आहे", + "source": "स्रोत", + "savedProxy": "जतन केलेला प्रॉक्सी", + "custom": "सानुकूल", + "selectSavedProxyPlaceholder": "जतन केलेली प्रॉक्सी निवडा...", + "proxyType": "प्रॉक्सी प्रकार", + "host": "होस्ट", + "hostPlaceholder": "1.2.3.4 किंवा proxy.example.com", + "port": "पोर्ट", + "authOptional": "प्रमाणीकरण (पर्यायी)", + "username": "वापरकर्तानाव", + "usernamePlaceholder": "वापरकर्तानाव", + "password": "पासवर्ड", + "passwordPlaceholder": "पासवर्ड", + "connected": "कनेक्ट झाले", + "ip": "आयपी:", + "connectionFailed": "कनेक्शन अयशस्वी", + "testConnection": "कनेक्शनची चाचणी घ्या", + "clear": "साफ करा", + "cancel": "रद्द करा", + "save": "जतन करा", + "errorSelectSavedProxy": "कृपया प्रथम जतन केलेली प्रॉक्सी निवडा.", + "errorSelectProxyFirst": "कृपया प्रथम प्रॉक्सी निवडा.", + "errorProxyNotFound": "निवडलेली प्रॉक्सी सापडली नाही.", + "errorClearSavedProxy": "जतन केलेली प्रॉक्सी साफ करण्यात अयशस्वी", + "errorSaveProxy": "प्रॉक्सी कॉन्फिगरेशन जतन करण्यात अयशस्वी", + "errorClearProxy": "प्रॉक्सी कॉन्फिगरेशन साफ करण्यात अयशस्वी", + "errorSocks5Hidden": "SOCKS5 कॉन्फिगर केले आहे, परंतु NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false असल्यामुळे ते लपवले आहे." }, "oauthModal": { - "title": "Connect {providerName}", - "waiting": "Waiting for authorization", - "completeAuthInPopup": "Complete authorization in popup.", + "title": "{providerName} कनेक्ट करा", + "waiting": "अधिकृततेची प्रतीक्षा करत आहे", + "completeAuthInPopup": "पॉपअपमध्ये अधिकृतता पूर्ण करा.", "popupClosedHint": "If the popup closed without redirecting back (e.g. Qoder), this dialog will auto-switch to manual URL entry mode.", - "popupBlocked": "Popup blocked? Enter URL manually", - "deviceCodeVisitUrl": "Visit the URL below and enter code:", - "deviceCodeVerificationUrl": "Verification URL", - "deviceCodeYourCode": "Your code", - "deviceCodeWaiting": "Waiting for authorization...", + "popupBlocked": "पॉपअप ब्लॉक झाला? URL स्वतः प्रविष्ट करा", + "deviceCodeVisitUrl": "खालील URL ला भेट द्या आणि कोड प्रविष्ट करा:", + "deviceCodeVerificationUrl": "पडताळणी URL", + "deviceCodeYourCode": "तुमचा कोड", + "deviceCodeWaiting": "अधिकृततेची प्रतीक्षा करत आहे...", "googleLoopbackTitle": "या पत्त्यावरून Google साइन-इन पूर्ण होऊ शकत नाही", "googleLoopbackWhatHappens": "Google फक्त अधिकृतता कोड जारी करतो जेव्हा {redirectUri} त्या ब्राउझरमधून पोहोचता येतो जो साइन-इनला मान्यता देतो. येथे त्या पत्त्याचा निर्देश या संगणकाकडे आहे, OmniRoute सर्व्हरकडे नाही — त्यामुळे संमती स्क्रीन थांबते, पुनर्निर्देशित होत नाही, आणि कॉपी करण्यासाठी कोणतीही कॉलबॅक URL नाही.", "googleLoopbackRecommended": "शिफारस केलेले — हे तुमच्या स्वतःच्या संगणकावर चालवा, नंतर खाली परिणाम पेस्ट करा:", @@ -10726,7 +10733,7 @@ "googleLoopbackTunnelLabel": "किंवा SSH द्वारे डॅशबोर्ड पोर्ट पुढे करा आणि टनेलद्वारे OmniRoute पुनः लोड करा:", "googleLoopbackTunnelNote": "{userPlaceholder} आपल्या SSH वापरकर्तानावाने बदला, टर्मिनल उघडे ठेवा, नंतर {localUrl} उघडा आणि तिथून पुन्हा कनेक्ट करा.", "googleLoopbackHeadlessAlt": "पूर्ण हेडलेस वापरासाठी स्थानिक कॉलबॅकशिवाय, आपले स्वतःचे Google OAuth प्रमाणपत्रे आणि एक सार्वजनिक बेस URL कॉन्फिगर करा.", - "remoteAccessInfo": "Remote access: Since you're accessing OmniRoute remotely, after authorization you'll see an error page (localhost not found). This is normal — just copy the full URL from your browser address bar and paste it below.", + "remoteAccessInfo": "दूरस्थ प्रवेश: तुम्ही OmniRoute मध्ये दूरस्थपणे प्रवेश करत असल्यामुळे, अधिकृततेनंतर तुम्हाला त्रुटी पृष्ठ दिसेल (localhost सापडले नाही). हे सामान्य आहे — फक्त तुमच्या ब्राउझरच्या अॅड्रेस बारमधील संपूर्ण URL कॉपी करा आणि खाली पेस्ट करा.", "loopbackMismatchTitle": "या पत्त्यावर साइन-इन पूर्ण होऊ शकत नाही", "loopbackMismatchWhatHappened": "काय चालले आहे", "loopbackMismatchExplanation": "लॉगिन मंजूर केल्यानंतर, {providerName} नेहमी ब्राउझरला {redirectUri} कडे परत पाठवतो. ती पत्ता या ब्राउझर चालवणाऱ्या संगणकाकडे निर्देशित करते, OmniRoute सर्व्हरकडे नाही — त्यामुळे अधिकृतता कोड कधीच OmniRoute कडे पोहोचत नाही आणि प्रदाता त्रुटी न दाखवता साइन-इनमध्ये अपयशी ठरतो.", @@ -10736,17 +10743,17 @@ "loopbackMismatchStep2": "या ब्राउझरमध्ये, टनेलद्वारे OmniRoute पुन्हा उघडा:", "loopbackMismatchStep3": "त्यानंतर नवीन टॅबमधून {providerName} पुन्हा कनेक्ट करा. कॉलबॅक आता सर्व्हरपर्यंत पोहोचतो आणि लॉगिन सामान्यपणे पूर्ण होते.", "loopbackMismatchAlternative": "SSH प्रवेश नाही का? जर या प्रदात्याकडे टोकन आयात टॅब असेल, तर टोकनद्वारे कनेक्ट करा — ती पद्धत लूपबॅक कॉलबॅकचा वापर करत नाही.", - "step1OpenUrl": "Step 1: Open this URL in your browser", - "copy": "Copy", - "step2PasteCallback": "Step 2: Paste callback URL or authorization code here", - "step2Hint": "After authorization, paste the full callback URL. For Claude Code and Cline, you can also paste the authentication code directly, e.g. code#state.", - "connect": "Connect", - "cancel": "Cancel", - "success": "Connection successful!", - "successMessage": "Your {providerName} account has been connected.", - "done": "Done", - "error": "Connection failed", - "tryAgain": "Try again", + "step1OpenUrl": "पायरी 1: हा URL तुमच्या ब्राउझरमध्ये उघडा", + "copy": "कॉपी करा", + "step2PasteCallback": "पायरी 2: कॉलबॅक URL किंवा अधिकृतता कोड येथे पेस्ट करा", + "step2Hint": "अधिकृततेनंतर, संपूर्ण कॉलबॅक URL पेस्ट करा. Claude Code आणि Cline साठी, तुम्ही प्रमाणीकरण कोड थेटही पेस्ट करू शकता, उदा. code#state.", + "connect": "कनेक्ट करा", + "cancel": "रद्द करा", + "success": "कनेक्शन यशस्वी झाले!", + "successMessage": "तुमचे {providerName} खाते कनेक्ट केले आहे.", + "done": "पूर्ण झाले", + "error": "कनेक्शन अयशस्वी झाले", + "tryAgain": "पुन्हा प्रयत्न करा", "errorSessionIncomplete": "OAuth सत्र अपूर्ण आहे (पुनर्निर्देश URI किंवा कोड सत्यापक गहाळ आहे). कनेक्शन पुन्हा सुरू करा आणि पुन्हा प्रयत्न करा.", "errorExchangeFailed": "विनिमय अयशस्वी झाला", "errorGoogleRedirectMismatch": "redirect_uri_mismatch: डिफॉल्ट Google OAuth क्रेडेन्शियल्स फक्त localhost वर कार्य करतात. दूरस्थ वापरासाठी, आपल्या स्वतःच्या OAuth क्रेडेन्शियल्स पर्यावरणीय चलांद्वारे कॉन्फिगर करा: ANTIGRAVITY_OAUTH_CLIENT_ID आणि ANTIGRAVITY_OAUTH_CLIENT_SECRET. 'दूरस्थ सर्व्हरवरील OAuth' या README विभागाकडे पहा.", @@ -10769,14 +10776,14 @@ "devinDesktopPasteDescription": "एक प्रमाणित Devin सत्रातून विद्यमान Devin API की पेस्ट करा. की निर्यात उपलब्धता आणि चरण Devin आवृत्ती आणि खात्यानुसार भिन्न असू शकतात.", "devinPasteDescription": "आपला WINDSURF_API_KEY प्रदान करा (जो `devin auth login` द्वारे किंवा Windsurf IDE \"Windsurf: Provide Auth Token\" कमांडद्वारे मिळविला जातो).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "Grok बिल्ड auth.json", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "API की / टोकन", "saving": "जतन करत आहे…", "saveConnection": "संपर्क जतन करा", "gheDescription": "तुमच्या GitHub Enterprise उदाहरणाचा बेस URL प्रविष्ट करा (उदाहरणार्थ, https://ghe.yourcompany.com).", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "GitHub Enterprise यूआरएल", "gheUrlRequired": "GitHub Enterprise URL आवश्यक आहे", "gitlabDuoSetupTitle": "GitLab Duo OAuth सेटअप", "gitlabDuoSetupMessage": "GitLab Duo OAuth कॉन्फिगर केलेले नाही. {applicationsUrl} येथे एक OAuth अनुप्रयोग नोंदणी करा ज्यामध्ये पुनर्निर्देश URI {redirectUri} आणि स्कोप्स \"{scopes}\" आहेत, नंतर {clientIdEnv} (आणि पर्यायी {clientSecretEnv}) सेट करा आणि पुन्हा सुरू करा.", @@ -10785,107 +10792,107 @@ }, "cursorAuthModal": { "title": "Connect Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCursor": "Reading from Cursor IDE or cursor-agent", - "tokensAutoDetected": "Tokens successfully auto-detected from Cursor IDE!", + "tabLogin": "Cursor द्वारे लॉग इन करा", + "tabImport": "टोकन आयात करा", + "loginDescription": "Cursor चे ब्राउझर लॉगिन उघडते. Docker मध्ये कार्य करते — तुमच्या होस्ट ब्राउझरमध्ये मंजुरी द्या, त्यानंतर येथे परत या.", + "loginWithCursor": "Cursor द्वारे लॉग इन करा", + "startingLogin": "सुरू करत आहे…", + "waitingApproval": "Cursor लॉगिनच्या मंजुरीची प्रतीक्षा करत आहे…", + "openUrlHint": "ब्राउझर उघडला नसल्यास:", + "openLoginLink": "लॉगिन पृष्ठ उघडा", + "cancelLogin": "लॉगिन रद्द करा", + "autoDetecting": "टोकन आपोआप शोधत आहे...", + "readingFromCursor": "Cursor IDE किंवा cursor-agent मधून वाचत आहे", + "tokensAutoDetected": "Cursor IDE मधून टोकन यशस्वीरीत्या आपोआप शोधली गेली!", "cursorNotDetected": "Cursor IDE not detected. Please manually paste your token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Docker मध्ये चालवत आहात? Cursor द्वारे लॉग इन करण्यास प्राधान्य द्या. कंटेनरमध्ये IDE स्वयंचलित आयात आणि cursor-agent सहसा उपलब्ध नसतात. docs/providers/CURSOR-DOCKER.md पहा.", + "accessToken": "अॅक्सेस टोकन", + "refreshToken": "रिफ्रेश टोकन", + "refreshTokenPlaceholder": "पर्यायी — स्वयंचलित टोकन रिफ्रेश सक्षम करते", "required": "*", - "accessTokenPlaceholder": "Access token will auto-populate...", - "machineId": "Machine ID", - "optional": "(optional)", - "machineIdPlaceholder": "Machine ID will auto-populate...", - "importing": "Importing...", - "importToken": "Import Token", - "cancel": "Cancel", - "errorAutoDetect": "Unable to auto-detect tokens", - "errorAutoDetectFailed": "Auto-detect tokens failed", - "errorEnterToken": "Please enter access token", - "errorImportFailed": "Import failed", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "accessTokenPlaceholder": "अॅक्सेस टोकन आपोआप भरले जाईल...", + "machineId": "मशीन ID", + "optional": "(पर्यायी)", + "machineIdPlaceholder": "मशीन ID आपोआप भरला जाईल...", + "importing": "आयात करत आहे...", + "importToken": "टोकन आयात करा", + "cancel": "रद्द करा", + "errorAutoDetect": "टोकन आपोआप शोधता आली नाहीत", + "errorAutoDetectFailed": "टोकन स्वयंचलितपणे शोधणे अयशस्वी झाले", + "errorEnterToken": "कृपया अॅक्सेस टोकन प्रविष्ट करा", + "errorImportFailed": "आयात अयशस्वी झाली", + "errorLoginStart": "Cursor लॉगिन सुरू करण्यात अयशस्वी", + "errorLoginPoll": "Cursor लॉगिन अयशस्वी झाले", + "errorLoginTimeout": "Cursor लॉगिनची वेळ संपली — पुन्हा प्रयत्न करा" }, "pricingModal": { - "title": "Pricing Configuration", - "loading": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "ratesDescription": "All rates are in dollars per million tokens ($/1M tokens). Example: Input rate of 2.50 means $2.50 per 1,000,000 input tokens.", - "model": "Model", - "input": "Input", - "output": "Output", - "cached": "Cached", - "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "noPricingData": "No pricing data available", - "resetToDefaults": "Reset to defaults", - "cancel": "Cancel", - "saving": "Saving...", - "saveChanges": "Save changes", - "resetConfirm": "Reset all pricing to defaults? This cannot be undone.", - "errorSaveFailed": "Failed to save pricing", - "errorResetFailed": "Failed to reset pricing" + "title": "किंमत संरचना", + "loading": "किंमत डेटा लोड होत आहे...", + "pricingRatesFormat": "किंमत दरांचे स्वरूप", + "ratesDescription": "सर्व दर प्रति दशलक्ष टोकनमागे डॉलरमध्ये ($/1M tokens) आहेत. उदाहरण: 2.50 चा इनपुट दर म्हणजे प्रति 1,000,000 इनपुट टोकनसाठी $2.50.", + "model": "मॉडेल", + "input": "इनपुट", + "output": "आउटपुट", + "cached": "कॅश केलेले", + "reasoning": "तर्क", + "cacheCreation": "कॅश निर्मिती", + "noPricingData": "किंमत डेटा उपलब्ध नाही", + "resetToDefaults": "डीफॉल्टवर रीसेट करा", + "cancel": "रद्द करा", + "saving": "जतन करत आहे...", + "saveChanges": "बदल जतन करा", + "resetConfirm": "सर्व किंमती डीफॉल्टवर रीसेट करायच्या? ही क्रिया पूर्ववत करता येणार नाही.", + "errorSaveFailed": "किंमती जतन करण्यात अयशस्वी", + "errorResetFailed": "किंमती रीसेट करण्यात अयशस्वी" }, "proxyRegistry": { "selectAllProxies": "सर्व प्रॉक्सी निवडा", "selectProxy": "{name} निवडा", - "title": "Proxy Registry", - "description": "Store reusable proxies and track assignments.", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", - "loading": "Loading proxies...", - "noProxies": "No saved proxies yet.", - "tableName": "Name", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", - "tableHealth": "Health (24h)", - "tableUsage": "Usage", - "tableActions": "Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", - "modalCreateTitle": "Create Proxy", - "modalEditTitle": "Edit Proxy", - "labelName": "Name", - "labelType": "Type", + "title": "प्रॉक्सी रजिस्ट्री", + "description": "पुन्हा वापरता येणारे प्रॉक्सी साठवा आणि त्यांच्या नेमणुकांचा मागोवा घ्या.", + "importLegacy": "जुना डेटा आयात करा", + "bulkAssign": "एकत्रित नेमणूक", + "addProxy": "प्रॉक्सी जोडा", + "loading": "प्रॉक्सी लोड होत आहेत...", + "noProxies": "अद्याप कोणतेही प्रॉक्सी जतन केलेले नाहीत.", + "tableName": "नाव", + "tableEndpoint": "एंडपॉइंट", + "tableStatus": "स्थिती", + "tableHealth": "आरोग्य (24h)", + "tableUsage": "वापर", + "tableActions": "क्रिया", + "test": "चाचणी करा", + "edit": "संपादित करा", + "delete": "हटवा", + "modalCreateTitle": "प्रॉक्सी तयार करा", + "modalEditTitle": "प्रॉक्सी संपादित करा", + "labelName": "नाव", + "labelType": "प्रकार", "labelFamily": "IP फॅमिली", "familyAuto": "ऑटो (ड्युअल-स्टॅक)", "familyIpv4": "फक्त IPv4", "familyIpv6": "फक्त IPv6", "familyHint": "इग्रेस ॲड्रेस फॅमिली. ऑटो ड्युअल-स्टॅक ठेवते; IPv4/IPv6 या प्रॉक्सीला त्या फॅमिलीशी पिन करते (फक्त IPv6 प्रॉक्सी अंतर्गत v4 लीक होण्यापासून रोखते).", - "labelHost": "Host", - "labelPort": "Port", - "labelUsername": "Username", - "labelPassword": "Password", - "labelRegion": "Region", - "labelStatus": "Status", - "labelNotes": "Notes", - "usernamePlaceholderEdit": "Leave blank to keep current username", - "passwordPlaceholderEdit": "Leave blank to keep current password", - "statusActive": "Active", - "statusInactive": "Inactive", - "cancel": "Cancel", - "save": "Save", - "bulkModalTitle": "Bulk Proxy Assignment", - "bulkLabelScope": "Scope", - "bulkLabelProxy": "Proxy", - "bulkClearAssignment": "(Clear assignment)", - "bulkLabelScopeIds": "Scope IDs (comma or newline separated)", + "labelHost": "होस्ट", + "labelPort": "पोर्ट", + "labelUsername": "वापरकर्तानाव", + "labelPassword": "पासवर्ड", + "labelRegion": "प्रदेश", + "labelStatus": "स्थिती", + "labelNotes": "नोंदी", + "usernamePlaceholderEdit": "सध्याचे वापरकर्तानाव कायम ठेवण्यासाठी रिक्त सोडा", + "passwordPlaceholderEdit": "सध्याचा पासवर्ड कायम ठेवण्यासाठी रिक्त सोडा", + "statusActive": "सक्रिय", + "statusInactive": "निष्क्रिय", + "cancel": "रद्द करा", + "save": "जतन करा", + "bulkModalTitle": "मोठ्या प्रमाणात प्रॉक्सी नेमणूक", + "bulkLabelScope": "व्याप्ती", + "bulkLabelProxy": "प्रॉक्सी", + "bulkClearAssignment": "(नेमणूक काढून टाका)", + "bulkLabelScopeIds": "व्याप्ती ID (स्वल्पविरामाने किंवा नवीन ओळीने विभक्त)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", - "bulkApply": "Apply", + "bulkApply": "लागू करा", "labelScope": "स्कोप", "labelProxy": "प्रॉक्सी", "scopeGlobal": "ग्लोबल", @@ -10897,19 +10904,19 @@ "bulkImportErrorInvalidPort": "अवैध PORT (1-65535 असणे आवश्यक आहे)", "bulkImportErrorInvalidType": "अवैध प्रकार (http, https किंवा सॉक्स5 वापरा)", "bulkImportErrorInvalidStatus": "अवैध स्थिती (सक्रिय किंवा निष्क्रिय वापरा)", - "errorLoadFailed": "Failed to load proxy registry", - "errorNameHostRequired": "Name and host are required", - "errorSaveFailed": "Failed to save proxy", - "errorDeleteFailed": "Failed to delete proxy", - "errorForceDeleteConfirm": "This proxy is still assigned. Force delete and remove all assignments?", - "errorMigrateFailed": "Failed to migrate legacy proxy config", - "errorBulkFailed": "Failed to execute bulk assignment", + "errorLoadFailed": "प्रॉक्सी नोंदणी लोड करण्यात अयशस्वी", + "errorNameHostRequired": "नाव आणि होस्ट आवश्यक आहेत", + "errorSaveFailed": "प्रॉक्सी जतन करण्यात अयशस्वी", + "errorDeleteFailed": "प्रॉक्सी हटवण्यात अयशस्वी", + "errorForceDeleteConfirm": "हा प्रॉक्सी अजूनही नेमलेला आहे. सक्तीने हटवून सर्व नेमणुका काढून टाकायच्या?", + "errorMigrateFailed": "जुने प्रॉक्सी कॉन्फिग स्थलांतरित करण्यात अयशस्वी", + "errorBulkFailed": "मोठ्या प्रमाणातील नेमणूक कार्यान्वित करण्यात अयशस्वी", "success": "✓", "failure": "✗", - "failed": "Failed", - "successRate": "{rate}% success", - "avgLatency": "{latency}ms average", - "assignmentsCount": "{count} assignments", + "failed": "अयशस्वी", + "successRate": "{rate}% यशस्वी", + "avgLatency": "सरासरी {latency}ms", + "assignmentsCount": "{count} नेमणुका", "noData": "—", "testSuccess": "✓ {ip}", "testLatency": "{latency}ms", @@ -10961,9 +10968,9 @@ "strategyLatency": "लेटन्सी-ऑप्टिमाइझ्ड", "poolMembersLabel": "पूल सदस्य ({count})", "poolNoMembers": "या पूलमध्ये अद्याप कोणतेही प्रॉक्सी नाहीत.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# निर्गमन} other {# निर्गमने}} {connections, plural, one {# कनेक्शनद्वारे} other {# कनेक्शनद्वारे}} वापरले · एका निर्गमनावर कमाल {max} · मागील {hours} तास", + "poolEgressObservationEmpty": "मागील {hours} तासांत कोणतीही वाहतूक आढळली नाही", + "poolEgressObservationHint": "या कालावधीतील प्रॉक्सी लॉगवरून मोजलेले: या पूलच्या सदस्यांसाठी आढळलेले वेगवेगळे निर्गमन IP आणि त्यांचा वापर करणारी OmniRoute कनेक्शने. \"एका निर्गमनावर\" याचा अर्थ संपूर्ण कालावधीत असा आहे, एकाच वेळी नाही. प्रति-IP 429 लॉकआउट केवळ त्याच प्रदाता कुटुंबातील कनेक्शने थांबवते.", "poolRemove": "काढून टाका", "poolRemoveFailed": "पूलमधून प्रॉक्सी काढून टाकण्यात अयशस्वी", "poolAddLabel": "प्रॉक्सी जोडा", @@ -10973,96 +10980,96 @@ "poolSaveFailed": "पूल असाइनमेंट सेव्ह करण्यात अयशस्वी" }, "playground": { - "title": "Model Playground", - "description": "Test any model directly from the dashboard. Select provider, model, and endpoint type, then send a request to see the raw response.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", - "accountKey": "Account / Key", - "autoAccounts": "Auto ({count} accounts)", - "noAccounts": "No accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", - "attachImages": "Attach Images (Vision)", + "title": "मॉडेल प्लेग्राउंड", + "description": "डॅशबोर्डवरून कोणत्याही मॉडेलची थेट चाचणी करा. प्रदाता, मॉडेल आणि एंडपॉइंट प्रकार निवडा, त्यानंतर मूळ प्रतिसाद पाहण्यासाठी विनंती पाठवा.", + "endpoint": "एंडपॉइंट", + "provider": "प्रदाता", + "model": "मॉडेल", + "accountKey": "खाते / की", + "autoAccounts": "स्वयं ({count} खाती)", + "noAccounts": "कोणतीही खाती नाहीत", + "send": "पाठवा", + "cancel": "रद्द करा", + "audioFile": "ऑडिओ फाइल", + "attachImages": "प्रतिमा संलग्न करा (व्हिजन)", "multipartFormData": "multipart/form-data", - "upToImages": "Up to 4 images", - "selectAudioFile": "Select audio file for transcription (mp3, wav, m4a, ogg, flac…)", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", - "resetToDefault": "Reset to default", - "downloadAudio": "Download audio", - "copyText": "Copy text", - "transcriptionHint": "Transcription uses multipart/form-data. Upload the audio file above — the JSON below controls extra parameters (model, language).", - "imagesGenerated": "Generated {count} images", - "generatedImage": "Generated image {index}", - "save": "Save", + "upToImages": "कमाल 4 प्रतिमा", + "selectAudioFile": "लिप्यंतरणासाठी ऑडिओ फाइल निवडा (mp3, wav, m4a, ogg, flac…)", + "clearAll": "सर्व साफ करा", + "request": "विनंती", + "response": "प्रतिसाद", + "transcription": "लिप्यंतरण", + "copy": "कॉपी करा", + "resetToDefault": "डीफॉल्टवर रीसेट करा", + "downloadAudio": "ऑडिओ डाउनलोड करा", + "copyText": "मजकूर कॉपी करा", + "transcriptionHint": "लिप्यंतरणासाठी multipart/form-data वापरले जाते. वरील ऑडिओ फाइल अपलोड करा — खालील JSON अतिरिक्त पॅरामीटर्स (model, language) नियंत्रित करते.", + "imagesGenerated": "{count} प्रतिमा तयार केल्या", + "generatedImage": "तयार केलेली प्रतिमा {index}", + "save": "जतन करा", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", + "chat": "चॅट पूर्णता", + "responses": "प्रतिसाद", "completions": "कम्प्लिशन्स", - "images": "Image generation", - "embeddings": "Embeddings", - "speech": "Text-to-speech", - "transcription": "Audio transcription", - "video": "Video generation", - "music": "Music generation", + "images": "प्रतिमा निर्मिती", + "embeddings": "एम्बेडिंग्ज", + "speech": "मजकूर-ते-वाणी", + "transcription": "ऑडिओ लिप्यंतरण", + "video": "व्हिडिओ निर्मिती", + "music": "संगीत निर्मिती", "moderations": "मॉडरेशन्स", - "rerank": "Rerank", - "search": "Web search", + "rerank": "पुनःक्रमांकन", + "search": "वेब शोध", "webFetch": "वेब फेच" }, "conversationalChat": "संभाषणात्मक गप्पा", "clearChat": "चॅट साफ करा", "typeMessagePlaceholder": "संदेश टाइप करा... (नवीन ओळीसाठी Shift+Enter)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "चॅट", + "tabCompare": "तुलना करा", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "बिल्ड", + "configPane": "कॉन्फिग", + "systemPrompt": "सिस्टम प्रॉम्प्ट", + "systemPromptPlaceholder": "तुम्ही एक उपयुक्त सहाय्यक आहात.", + "modelPlaceholder": "उदा. openai/gpt-4o", + "endpointLabel": "एंडपॉइंट", + "parametersLabel": "पॅरामीटर्स", + "collapseConfig": "कॉन्फिग पेन संकुचित करा", + "expandConfig": "कॉन्फिग पेन विस्तृत करा", + "temperature": "तापमान", + "maxTokens": "कमाल टोकन्स", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "उपस्थिती दंड", + "frequencyPenalty": "वारंवारता दंड", "reasoningLabel": "रीझनिंग", "thinking": "थिंकिंग", "effort": "प्रयत्न", "effortDefault": "डिफॉल्ट", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "यादृच्छिक (रिकामे ठेवा)", + "presetsLabel": "प्रीसेट्स", + "loadPreset": "प्रीसेट लोड करा", + "savePreset": "प्रीसेट जतन करा", + "noPresets": "प्रीसेट्स नाहीत", + "presetNamePlaceholder": "प्रीसेटचे नाव", + "savingPreset": "जतन करत आहे…", + "nameRequired": "नाव आवश्यक आहे", + "failedToSavePreset": "प्रीसेट जतन करण्यात अयशस्वी", + "improvePrompt": "प्रॉम्प्ट सुधारा", + "improvingPrompt": "सुधारत आहे…", + "improvePromptTitle": "AI वापरून तुमचा प्रॉम्प्ट सुधारा", + "setModelFirst": "प्रथम मॉडेल सेट करा", "setModelInConfigFirst": "प्रथम Config पॅनेलमध्ये मॉडेल सेट करा.", "improvePromptFailed": "प्रॉम्प्ट सुधारणे अयशस्वी झाले.", "improvePromptAria": "AI वापरून प्रॉम्प्ट सुधारा", "confirmImprovePrompt": "प्रॉम्प्ट सुधारण्याची पुष्टी करा", "improvePromptDescription": "हे सुधारित आवृत्ती तयार करण्यासाठी तुमचे सध्याचे सिस्टम प्रॉम्प्ट कडे पाठवेल.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "यामुळे Config मध्ये कॉन्फिगर केलेल्या मॉडेलचा कोटा वापरला जाईल.", + "improveConfirm": "सुधारा", + "exportCode": "कोड निर्यात करा", + "exportCodeTitle": "कोड निर्यात करा", "exportShort": "एक्सपोर्ट", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "निर्यात करण्यासाठी कोणतीही प्लेग्राउंड स्थिती उपलब्ध नाही.", "closeExportModal": "एक्सपोर्ट मोडल बंद करा", "close": "बंद करा", "exportRealKeyWarning": "सुरक्षा चेतावणी: एक्सपोर्ट ब्लॉक केले आहे — आउटपुटमध्ये एक वास्तविक API की आढळली आहे. कृपया तुमची API की रीसेट करा आणि पुन्हा प्रयत्न करा.", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language} कोड कॉपी करा", "loadingPresets": "लोड होत आहे…", "loadPresetPlaceholder": "प्रिसेट लोड करा…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "कॉपी करा", + "copiedCode": "कॉपी केले!", + "addModel": "+ मॉडेल जोडा", + "runAll": "सर्व चालवा", + "cancelAll": "सर्व रद्द करा", + "maxColumnsReached": "कमाल {max} स्तंभ", + "modelPlaceholderCompare": "मॉडेल (Cmd+K)…", "noModel": "कोणतेही मॉडेल नाही", "statusLabel": "स्थिती: {status}", "status": { @@ -11095,33 +11102,33 @@ "waitingForResponse": "प्रतिसादाची वाट पाहत आहे…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "क्लायंट-साइड अंदाज", + "tokensLabel": "टोकन्स", + "costLabel": "खर्च", + "costEstimated": "(अंदाजित)", "ttftTitle": "पहिल्या टोकनचा वेळ (क्लायंट-साइड अंदाज)", "tpsTitle": "प्रति सेकंद टोकन्स (क्लायंट-साइड अंदाज)", "tokenCountsTitle": "प्रॉम्प्ट टोकन्स ↑ / कम्प्लीशन टोकन्स ↓", "estimatedCostTitle": "अंदाजित खर्च (अचूकतेची हमी नाही)", - "toolsLabel": "Tools", + "toolsLabel": "साधने", "toolsCount": "टूल्स ({count})", - "addTool": "Add tool", + "addTool": "साधन जोडा", "editTool": "{name} टूल संपादित करा", "removeTool": "{name} टूल काढा", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "फंक्शनचे नाव", "toolNameRequiredPlaceholder": "फंक्शनचे नाव *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "वर्णन (ऐच्छिक)", "toolParamsLabel": "पॅरामीटर्स (JSON schema)", "toolParamsJsonSchema": "पॅरामीटर्ससाठी JSON schema", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "पॅरामीटर्स वैध JSON असणे आवश्यक आहे", + "structuredOutputLabel": "संरचित आउटपुट", + "enableJsonMode": "JSON मोड सक्षम करा", + "disableJsonMode": "JSON मोड अक्षम करा", + "invalidJson": "अवैध JSON", "jsonMode": "JSON मोड", "jsonModeDescription": "response_format: json_schema सक्तीचे करते", "schemaName": "स्कीमाचे नाव", - "jsonSchema": "JSON schema", + "jsonSchema": "JSON स्कीमा", "jsonSchemaEditor": "JSON schema संपादक", "schemaValidated": "स्कीमा सत्यापित केला", "validateSchema": "स्कीमा सत्यापित करा", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} कॉलम्स", "addModelToCompare": "तुलना करण्यासाठी मॉडेल कॉलम जोडा", "modelsSimultaneously": "एकाच वेळी {max} मॉडेल्सपर्यंत", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "चालू आहे…", + "runLabel": "चालवा", + "enterToolResult": "साधनाचा निकाल प्रविष्ट करा…", "build": { "step1Label": "काय चाचणी करायची?", "step2Label": "कॉन्फिगर करा", @@ -11250,73 +11257,73 @@ "stop": "थांबवा" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "रेकॉर्डिंग सुरू आहे", + "paused": "विराम दिला आहे", + "pipelineLogsOn": "पाइपलाइन लॉग सुरू", + "pipelineLogsOff": "पाइपलाइन लॉग बंद", + "updatingPipelineLogs": "पाइपलाइन लॉग अपडेट करत आहे...", + "updatePipelineFailed": "पाइपलाइन लॉगिंग अपडेट करण्यात अयशस्वी", + "capturePipeline": "नवीन विनंत्यांसाठी पाइपलाइन पेलोड्स कॅप्चर करा", + "searchPlaceholder": "मॉडेल्स, प्रदाते, खाती, API कीज, कॉम्बोज शोधा...", + "allProviders": "सर्व प्रदाते", + "allModels": "सर्व मॉडेल्स", + "allAccounts": "सर्व खाती", + "allApiKeys": "सर्व API कीज", + "total": "एकूण", + "ok": "यशस्वी", + "err": "त्रुटी", + "combo": "कॉम्बो", + "keys": "कीज", + "shown": "दर्शवलेले", + "sortNewest": "सर्वात नवीन", + "sortOldest": "सर्वात जुने", + "sortTokensDesc": "टोकन्स ↓", + "sortTokensAsc": "टोकन्स ↑", + "sortDurationDesc": "कालावधी ↓", + "sortDurationAsc": "कालावधी ↑", + "sortStatusDesc": "स्थिती ↓", + "sortStatusAsc": "स्थिती ↑", + "sortModelAsc": "मॉडेल A-Z", + "sortModelDesc": "मॉडेल Z-A", + "sortLogs": "लॉग क्रमवारी लावा", + "refresh": "रीफ्रेश करा", + "columnsLabel": "स्तंभ", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semantic": "सिमॅंटिक", + "upstream": "अपस्ट्रीम", + "semanticCacheHit": "सिमॅंटिक कॅश हिट (OmniRoute द्वारे पुरवलेले)", + "upstreamResponse": "अपस्ट्रीम प्रदात्याचा प्रतिसाद", + "noApiKey": "API की नाही", + "requestedRoutedTitle": "विनंती केलेले {requested}, {routed} म्हणून रूट केले", "statusFilters": { - "all": "All", - "error": "Error", - "success": "Success", - "combo": "Combo" + "all": "सर्व", + "error": "त्रुटी", + "success": "यशस्वी", + "combo": "कॉम्बो" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "स्थिती", + "cacheSource": "कॅश स्रोत", + "model": "मॉडेल", + "requested": "विनंती केलेले", + "provider": "प्रदाता", + "protocol": "विनंती प्रोटोकॉल", + "account": "खाते", + "apiKey": "API की", + "combo": "कॉम्बो", + "tokens": "टोकन्स", "compressed": "संक्षेप", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "कालावधी", + "time": "वेळ", + "conversation": "संभाषण", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "लॉग लोड होत आहेत...", + "noLogs": "अद्याप कोणतेही लॉग नाहीत. ते येथे पाहण्यासाठी काही API कॉल करा.", + "noMatchingLogs": "सध्याच्या फिल्टर्सशी जुळणारे कोणतेही लॉग नाहीत.", + "callLogsInfo": "कॉल लॉग्स {dataDir} येथे JSON फाइल्स म्हणूनही जतन केले जातात आणि {retentionDays} व {maxEntries} यांच्या आधारे रोटेट केले जातात.", "loadMore": "आणखी लोड करा", "loadingMore": "आणखी लोड होत आहे...", "correlationId": "संबंधित आयडी", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "या लॉग नोंदीसाठी तपशीलवार पेलोड आर्टिफॅक्ट आता उपलब्ध नाही.", "payloadCorrupt": "तपशीलवार पेलोड आर्टिफॅक्ट पार्स केला जाऊ शकला नाही.", - "notAvailable": "N/A", + "notAvailable": "लागू नाही", "semanticCache": "सामान्य (OmniRoute)", "upstreamCache": "उपस्ट्रीम (प्रदाते)", "ariaLabel": "अनुरोध लॉग तपशील", @@ -11417,59 +11424,59 @@ "correlationId": "संबंधित आयडी", "correlationIdValue": "संबंधित आयडी: {id}", "detailedPayloadInfo": "नवीन विनंत्यांसाठी चार-चरणीय क्लायंट/प्रदाता पेलोड दृश्य पाहण्यासाठी प्रथम तपशीलवार लॉगिंग सक्षम करा.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "सर्व कॉपी करा", + "copiedAll": "सर्व कॉपी केले" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "सर्व", + "filterErrors": "त्रुटी", + "filterSuccess": "यशस्वी", + "filterTimeout": "कालबाह्य", + "colStatus": "स्थिती", + "colProxy": "प्रॉक्सी", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "प्रकार", + "colLevel": "पातळी", + "colProvider": "प्रदाता", + "colTarget": "लक्ष्य", + "colLatency": "विलंब", + "colClientIp": "क्लायंट IP", + "colTime": "वेळ", + "recording": "रेकॉर्डिंग", + "paused": "विराम दिला", + "searchPlaceholder": "होस्ट, प्रदाता, लक्ष्य, IP शोधा...", + "allTypes": "सर्व प्रकार", + "allLevels": "सर्व पातळ्या", + "allProviders": "सर्व प्रदाते", + "total": "एकूण", + "ok": "ठीक", + "err": "त्रुटी", + "timeoutShort": "कालबाह्य", + "direct": "थेट", + "newest": "सर्वात नवीन", + "oldest": "सर्वात जुने", + "latencyDesc": "विलंब ↓", + "latencyAsc": "विलंब ↑", + "refresh": "रिफ्रेश करा", + "columns": "स्तंभ", + "loadingProxyLogs": "प्रॉक्सी लॉग लोड होत आहेत...", + "noProxyLogs": "अद्याप कोणतेही प्रॉक्सी लॉग नाहीत. ते येथे पाहण्यासाठी प्रॉक्सी कॉन्फिगर करा आणि API कॉल करा.", + "noMatchingLogs": "सध्याच्या फिल्टरशी कोणतेही लॉग जुळत नाहीत.", + "tlsFingerprint": "Chrome 124 TLS फिंगरप्रिंट", "colPublicIp": "सार्वजनिक IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "वाणी", + "search": "शोध", + "images": "प्रतिमा", + "chat": "चॅट", + "music": "संगीत", + "responses": "प्रतिसाद", + "rerank": "पुनर्क्रमांकन", + "video": "व्हिडिओ", + "embeddings": "एम्बेडिंग्ज", + "transcription": "लिप्यंतरण" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "रनटाइम", + "description": "रिअलटाइम निरीक्षणक्षमता — 3-स्तरीय लवचिकता + सत्रे + कोटा सूचना", + "pause": "विराम द्या", + "resume": "पुन्हा सुरू करा", + "refreshNow": "आता रीफ्रेश करा", + "kpiSessions": "सत्रे", + "kpiCircuits": "सर्किट्स", + "kpiCooldowns": "कूलडाउन", + "kpiLockouts": "लॉकआउट्स", + "hintStickyBound": "{count} स्टिकी-बाउंड", + "hintRecovering": "{count} पूर्ववत होत आहेत", + "hintAllHealthy": "सर्व निरोगी", + "hintOpen": "उघडे", + "hintConnsCooling": "कनेक्शन्स कूलडाउनमध्ये", + "hintModelsBlocked": "मॉडेल्स अवरोधित", + "resilienceTitle": "3-स्तरीय लवचिकता", + "resilienceSubtitle": "दस्तऐवजीकृत लवचिकता मॉडेलचे प्रतिबिंब", + "providersHealthy": "{percent}% प्रदाते निरोगी", + "layer": "स्तर {n}", + "layer1Title": "प्रदाता सर्किट ब्रेकर्स", + "layer1Desc": "अपस्ट्रीम स्तरावर अपयशी ठरणाऱ्या प्रदात्यांकडे जाणारी रहदारी थांबवा", + "layer2Title": "कनेक्शन कूलडाउन", + "layer2Desc": "एक खराब खाते/की वगळा; इतर कनेक्शन्स सेवा देत राहतील", + "layer3Title": "मॉडेल लॉकआउट्स", + "layer3Desc": "प्रति-मॉडेल दर-मर्यादा लॉक; तेच कनेक्शन इतर मॉडेल्सना सेवा देत राहते", + "badgeAffectedOf": "एकूण {total} पैकी {affected} प्रभावित", + "badgeCooling": "{count} कूलडाउनमध्ये", + "badgeLocked": "{count} लॉक केलेले", + "emptyCircuits": "अद्याप कोणतेही सर्किट ब्रेकर सक्रिय नाहीत", + "emptyCooldowns": "कोणतेही कनेक्शन कूलडाउन सक्रिय नाहीत", + "emptyLockouts": "कोणतेही मॉडेल लॉकआउट नाहीत", + "moreCooldowns": "+{count} आणखी कूलडाउन", + "moreLockouts": "+{count} आणखी लॉकआउट", + "feedTitle": "थेट फीड", + "feedSubtitle": "शेवटचे {count} इव्हेंट", + "feedFilterAll": "सर्व", + "feedFilterCircuits": "सर्किट्स", + "feedFilterCooldowns": "कूलडाउन", + "feedFilterLockouts": "लॉकआउट", + "feedFilterSessions": "सत्रे", + "feedFilterQuotas": "कोटा", + "feedClear": "साफ करा", + "feedEmptyWaiting": "इव्हेंटची प्रतीक्षा करत आहे... (दर 5 सेकंदांनी तपासले जाते)", + "feedEmptyFiltered": "या फिल्टरशी कोणतेही इव्हेंट जुळत नाहीत", + "sessionsTitle": "सक्रिय सत्रे", + "sessionsSubtitle": "स्टिकी-बाउंड विनंती फिंगरप्रिंट्स (थेट)", + "sessionsActive": "{count} सक्रिय", + "sessionsEmptyTitle": "कोणतीही सक्रिय सत्रे नाहीत", + "sessionsEmptyHint": "प्रॉक्सीद्वारे विनंत्या प्रवाहित होताना सत्रे दिसतात", + "tblSession": "सत्र", + "tblAge": "वय", + "tblIdle": "निष्क्रिय कालावधी", + "tblReqs": "विनंत्या", + "tblBoundTo": "याच्याशी बांधलेले", + "topApiKeys": "प्रमुख API की", + "quotaMonitorsTitle": "कोटा मॉनिटर्स", + "quotaMonitorsSubtitle": "प्रत्येक खाते विंडोसाठी थेट कोटा स्थिती", + "openQuota": "कोटा उघडा", + "allQuotasHealthy": "सर्व कोटा सुस्थितीत आहेत", + "statusExhausted": "संपला", + "statusAlerting": "इशारा सक्रिय", + "statusError": "त्रुटी", + "moreSuffix": "+{count} आणखी" }, "quotaShare": { "weightPercent": "वजन %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "कोटा शेअरिंग", + "description": "% मर्यादांसह API कींमध्ये प्रदात्यांचे कोटा सामायिक करा", + "newPool": "नवीन पूल", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "कॉन्फिगरेशन localStorage मध्ये जतन केले आहे (अद्याप सर्व्हरवर कायमस्वरूपी साठवलेले नाही). प्रत्येक विनंतीवरील मर्यादेची अंमलबजावणी अद्याप प्रॉक्सी पाइपलाइनमध्ये जोडलेली नाही. ही स्क्रीन तुम्हाला कोटा विभागणीची रचना आणि दृश्यरूप तयार करू देते; प्रत्यक्ष अंमलबजावणी भविष्यातील आवृत्तीत DB पर्सिस्टन्स आणि अपस्ट्रीम कॉल इंटरसेप्शनसह उपलब्ध होईल.", + "kpiActivePools": "सक्रिय पूल", + "kpiKeysAllocated": "वाटप केलेल्या की", + "kpiAvgUnallocated": "सरासरी वाटप न केलेले", + "kpiProvidersWithQuota": "कोटा असलेले प्रदाते", + "emptyTitle": "कोणतेही पूल कॉन्फिगर केलेले नाहीत", + "emptyDescription": "प्रदात्याची कोटा विंडो % वाटपांसह सामायिक करण्यासाठी API की नियुक्त करण्याकरिता पूल तयार करा.", + "loading": "लोड होत आहे…", + "removePool": "पूल काढा", + "removeConfirm": "हा पूल काढायचा?", + "pool": "पूल", + "used": "वापरले", + "allocationsCount": "वाटप ({count})", + "allocatedFree": "{allocated}% वाटप केले · {free}% मोकळे", + "noAllocations": "अद्याप कोणत्याही कीचे वाटप केलेले नाही", + "capLabel": "मर्यादा {value}", + "notTrackedYet": "(अद्याप ट्रॅक केलेले नाही)", + "policy": "धोरण", "apiKeyColumn": "API की", "weightColumn": "वजन", "fairShareShort": "निष्पक्ष", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "कठोर", + "policySoft": "लवचिक", + "policyBurst": "बर्स्ट", + "policyHardHint": "कीचे वाटप संपल्यावर ब्लॉक करा", + "policySoftHint": "मर्यादेपेक्षा जास्त वापरास परवानगी द्या, फक्त सूचना द्या", + "policyBurstHint": "मोकळ्या पूलमध्ये बर्स्ट वापरास परवानगी द्या", + "editAllocations": "वाटप संपादित करा", + "newPoolTitle": "नवीन कोटा पूल", + "providerConnection": "प्रदाता कनेक्शन (खाते)", + "selectConnection": "कनेक्शन निवडा…", + "noEligibleConnections": "कोटा डेटा असलेली कोणतीही कनेक्शने नाहीत. प्रथम /dashboard/quota येथून रिफ्रेश करा.", + "quotaWindow": "कोटा विंडो", + "selectWindow": "विंडो निवडा…", + "alreadyUsedSuffix": "(आधीच वापरलेले)", + "windowReset": "रीसेट", + "duplicatePoolError": "या कनेक्शन + विंडोसाठी पूल आधीच अस्तित्वात आहे", + "cancel": "रद्द करा", + "createPool": "पूल तयार करा", + "editTitle": "वाटप संपादित करा", + "noKeysAdded": "कोणत्याही कीचे वाटप केलेले नाही. खाली एक जोडा.", + "totalLabel": "एकूण: {percent}%", + "totalExceeded": "⚠ 100% पेक्षा जास्त", + "addKey": "+ की जोडा…", + "equalSplit": "समान विभागणी", + "save": "वाटप जतन करा", "betaPreviewLabel": "बीटा — UI पूर्वावलोकन.", "betaConfigSavedPrefix": "मध्ये कॉन्फिगरेशन जतन केले आहे", "betaConfigSavedSuffix": "(अद्याप सर्व्हरवर टिकून नाही). प्रति-विनंती कॅप अंमलबजावणी अद्याप प्रॉक्सी पाइपलाइनमध्ये वायर्ड केलेली नाही. ही स्क्रीन तुम्हाला कोटा विभाजनाची रचना आणि कल्पना करू देते; वास्तविक अंमलबजावणी DB चिकाटी आणि अपस्ट्रीम कॉल इंटरसेप्शनसह भविष्यातील पुनरावृत्तीमध्ये उतरेल.", @@ -11672,7 +11679,7 @@ "endpointsCollapse": "संकुचित करा", "endpointsExpand": "विस्तारित करा", "endpointsAnthropicNote": "Anthropic-नेटिव्ह", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsResponsesNote": "OpenAI प्रतिसाद — codex/github", "endpointsWsNote": "WebSocket — फक्त codex", "betaText": "Quota Share कार्यरत आहे परंतु बग्स अपेक्षित आहेत. एखादा आढळला? कृपया त्याची तक्रार करा.", "betaReportLink": "समस्येची तक्रार करा", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "या गटात अजूनही पूल्स आहेत — प्रथम त्यांना पुन्हा नियुक्त करा किंवा हटवा.", "ungroupedTitle": "गट नसलेले", "ungroupedHint": "हे पूल्स कोणत्याही ज्ञात गटाला नियुक्त केलेले नाहीत. पूलला वास्तविक गटात हलवण्यासाठी तो संपादित करा.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "हा पूल काढता आला नाही.", + "dismiss": "बंद करा" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "प्लगइन्स", + "description": "OmniRoute ची कार्यक्षमता वाढवण्यासाठी प्लगइन्स स्थापित आणि व्यवस्थापित करा", + "loading": "प्लगइन्स लोड होत आहेत...", + "scanning": "स्कॅन करत आहे...", + "scanForPlugins": "प्लगइन्ससाठी स्कॅन करा", + "noPlugins": "कोणतेही प्लगइन्स स्थापित केलेले नाहीत", + "noPluginsDescription": "प्लगइन निर्देशिका ~/.omniroute/plugins/ मध्ये ठेवा आणि स्कॅन करा वर क्लिक करा.", + "activate": "सक्रिय करा", + "deactivate": "निष्क्रिय करा", + "uninstall": "विस्थापित करा", + "uninstallConfirm": "प्लगइन \"{name}\" विस्थापित करायचे?", + "pluginScanComplete": "प्लगइन स्कॅन पूर्ण झाले", + "pluginScanFailed": "प्लगइन स्कॅन अयशस्वी झाले", + "activated": "{name} सक्रिय केले", + "deactivated": "{name} निष्क्रिय केले", + "activateFailed": "{name} सक्रिय करण्यात अयशस्वी", + "deactivateFailed": "{name} निष्क्रिय करण्यात अयशस्वी", + "uninstalled": "{name} विस्थापित केले", + "uninstallFailed": "{name} विस्थापित करण्यात अयशस्वी", + "configure": "कॉन्फिगर करा: {name}", + "configurePlugin": "कॉन्फिगर करा", + "noConfigSettings": "या प्लगइनमध्ये कॉन्फिगर करण्यायोग्य सेटिंग्ज नाहीत.", + "saving": "जतन करत आहे...", + "saveConfiguration": "कॉन्फिगरेशन जतन करा", + "configurationSaved": "कॉन्फिगरेशन जतन केले", + "saveConfigurationFailed": "कॉन्फिगरेशन जतन करण्यात अयशस्वी", + "pluginNotFound": "प्लगइन सापडले नाही", + "version": "आवृत्ती", + "author": "लेखक", + "description_label": "वर्णन", + "status": "स्थिती", + "enabled": "सक्षम", + "disabled": "अक्षम", "installedTab": "इन्स्टॉल केलेले", "marketplaceTab": "मार्केटप्लेस", "marketplaceUrlLabel": "सानुकूल मार्केटप्लेस URL", @@ -11729,7 +11736,7 @@ "verified": "सत्यापित", "install": "इन्स्टॉल करा", "installedFromMarketplace": "प्लगइन {name} इन्स्टॉल झाले!", - "hooks": "Hooks" + "hooks": "हुक्स" }, "quotaPlans": { "title": "प्लॅन्स आणि कोटा", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP एजंट्स", "phrase": "OmniRoute एक्झिक्यूशन बॅकएंड म्हणून स्पॉन करत असलेले CLIs (रिव्हर्स फ्लो)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "बहुतेक वापरकर्ते याकडे दुर्लक्ष करू शकतात — एखाद्या इंटिग्रेशनसाठी आवश्यक असेल तेव्हाच वापरा.", "flow": "क्लायंट → OmniRoute → spawn CLI (stdio/ACP) → रिस्पॉन्स", "seeOther": "पहा →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "Omni द्वारे बॅकएंड म्हणून वापरले जाणारे CLI", "desc": "रिव्हर्स एक्झिक्यूशन", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → CLI स्पॉन करा → resp", "examples": "उदा.: claude, codex (ACP)" } }, @@ -12233,8 +12240,8 @@ "category": "प्रकार", "detectionStatus": "डिटेक्शन", "configStatus": "कॉन्फिगरेशन", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "बेस URL", + "apiKeyLabel": "API की", "modelMappingLabel": "मॉडेल मॅपिंग", "noActiveProviders": "कोणतेही सक्रिय प्रदाते नाहीत.", "noActiveProvidersDesc": "CLI कॉन्फिगर करण्यापूर्वी किमान १ प्रदाता कनेक्ट करण्यासाठी Providers वर जा.", @@ -12242,11 +12249,11 @@ } }, "cliCode": { - "pageTitle": "CLI Code's", + "pageTitle": "CLI कोडचे", "pageSubtitle": "OmniRoute कडे पॉइंट करणारी कोड टूल्स", "searchPlaceholder": "CLI शोधा…", "filterDetectionLabel": "डिटेक्शन", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "बेस URL", "detectionAll": "सर्व", "detectionInstalled": "इन्स्टॉल केलेले", "detectionNotFound": "सापडले नाही", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "वेबहूक्स", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "वेबहुक एंडपॉइंटची नोंदणी करा, यादी पाहा, चाचणी करा आणि ते काढून टाका. इव्हेंट सदस्यत्वे (request.completed, request.failed, quota.exceeded इ.) कॉन्फिगर करा आणि वितरणाचे पुनर्प्रयत्न व्यवस्थापित करा." }, "omni-mcp": { "name": "MCP सर्व्हर", @@ -12497,7 +12504,7 @@ }, "comparison": { "colAgent": "एजंट स्किल्स", - "colOmni": "Omni Skills", + "colOmni": "Omni कौशल्ये", "whatIs": { "label": "हे काय आहे", "agent": "मशीन-वाचनीय SKILL.md जे बाह्य एजंटला OmniRoute ऑपरेट करायला शिकवते", @@ -12516,7 +12523,7 @@ "storage": { "label": "स्टोरेज", "agent": "डायनॅमिक कॅटलॉग (/api/agent-skills) → GitHub वरील SKILL.md", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / स्थानिक)" }, "tagline": { "label": "टॅगलाइन", @@ -12575,7 +12582,7 @@ "colScore": "स्कोअर", "colAvgScore": "सरासरी स्कोअर", "colModels": "मॉडेल्स", - "colType": "Type", + "colType": "प्रकार", "filterConfiguredOnly": "फक्त कॉन्फिगर केलेले", "filterAvailableOnly": "फक्त उपलब्ध", "filterAvailableOnlyHelp": "ज्या प्रदात्यांचे सर्व कनेक्शन्स रेट-लिमिटेड आहेत किंवा ज्यांचा कोटा संपला आहे ते लपवा.", @@ -12589,14 +12596,14 @@ "typeApikey": "API की", "sortTypeFirst": "सर्वात सोपे आधी", "sortTypeFirstHelp": "साइन-अपच्या त्रासानुसार गटबद्ध करा (साइन-अप नाही → OAuth लॉगिन → API की), प्रत्येक गटामध्ये गुणवत्तेचा क्रम राखून", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "सर्वात विश्वासार्ह प्रथम", + "sortByReliabilityHelp": "निवडलेल्या कालावधीत यशस्वी झालेल्या कॉलच्या प्रमाणानुसार प्रदात्यांचा क्रम लावा. दर निश्चित करण्यासाठी खूप कमी कॉल असलेले प्रदाते मोजलेल्या प्रदात्यांच्या खाली त्यांचा स्कोअरनुसार क्रम कायम ठेवतात.", "typeLegend": "साइन-अप नाही = शून्य सेटअप · OAuth लॉगिन = तुमच्या स्वतःच्या खात्याने साइन इन करा · API की = तुमची स्वतःची की आणा किंवा त्या प्रदात्याची विनामूल्य श्रेणी वापरा", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "विश्वसनीयता", + "colReliabilityHelp": "गेल्या 24 तासांत या प्रदात्याने प्रत्यक्ष प्रतिसाद दिलेल्या कॉलचे प्रमाण. डॅशचा अर्थ असा की दर निश्चित करण्याइतकी रहदारी त्याने हाताळलेली नाही.", + "reliabilitySample": "गेल्या {hours} तासांत {requests} पैकी {successes} कॉल यशस्वी झाले", + "reliabilityTooFew": "गेल्या {hours} तासांत केवळ {requests} कॉल — दर निश्चित करण्यासाठी खूप कमी", + "reliabilityNoTraffic": "गेल्या 24 तासांत कोणतेही कॉल नोंदवलेले नाहीत" }, "discovery": { "title": "प्रदाता शोध", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar समर्थक", + "description": "थेट OmniRoute Radar समर्थक फीडची पडताळणी केली", + "criteria": "स्वाक्षरी केलेल्या थेट Radar समर्थक फीडची पडताळणी करा." }, "first-token": { "name": "पहिला टोकन", @@ -12734,72 +12741,72 @@ "criteria": "OmniRoute द्वारे १,००० API विनंत्या पूर्ण करा." }, "token-machine": { - "name": "Token Machine", + "name": "टोकन मशीन", "description": "10,000 API विनंत्या केल्या", "criteria": "OmniRoute द्वारे 10,000 API विनंत्या पूर्ण करा." }, "token-whale": { - "name": "Token Whale", + "name": "टोकन व्हेल", "description": "100,000 API विनंत्या केल्या", "criteria": "OmniRoute द्वारे 100,000 API विनंत्या पूर्ण करा." }, "generous": { - "name": "Generous", + "name": "उदार", "description": "इतरांसोबत 1,000 टोकन्स शेअर केले", "criteria": "इतर वापरकर्त्यांसोबत एकूण 1,000 टोकन्स शेअर करा." }, "philanthropist": { - "name": "Philanthropist", + "name": "परोपकारी", "description": "इतरांसोबत 10,000 टोकन्स शेअर केले", "criteria": "इतर वापरकर्त्यांसोबत एकूण 10,000 टोकन्स शेअर करा." }, "token-santa": { - "name": "Token Santa", + "name": "टोकन सांता", "description": "इतरांसोबत 100,000 टोकन्स शेअर केले", "criteria": "इतर वापरकर्त्यांसोबत एकूण 100,000 टोकन्स शेअर करा." }, "community-hero": { - "name": "Community Hero", + "name": "समुदाय नायक", "description": "इतरांसोबत 1,000,000 टोकन्स शेअर केले", "criteria": "इतर वापरकर्त्यांसोबत एकूण 1,000,000 टोकन्स शेअर करा." }, "explorer": { - "name": "Explorer", + "name": "अन्वेषक", "description": "5 वेगवेगळे प्रदाते वापरले", "criteria": "किमान 5 वेगवेगळे AI प्रदाते वापरा." }, "polyglot": { - "name": "Polyglot", + "name": "बहुभाषिक", "description": "10 वेगवेगळे मॉडेल्स वापरले", "criteria": "किमान 10 वेगवेगळे AI मॉडेल्स वापरा." }, "architect": { - "name": "Architect", + "name": "वास्तुविशारद", "description": "3 कॉम्बो रूट्स तयार केले", "criteria": "3 कॉम्बो रूट्स तयार करा." }, "speedster": { - "name": "Speedster", + "name": "वेगवान", "description": "100 विनंत्यांसाठी सरासरी 500 ms पेक्षा कमी लॅटन्सी राखली", "criteria": "100 विनंत्यांमध्ये सरासरी लॅटन्सी 500 ms च्या खाली ठेवा." }, "resilient": { - "name": "Resilient", + "name": "लवचिक", "description": "7 दिवसांसाठी 100% अपटाइम राखला", "criteria": "सलग 7 दिवसांसाठी 100% अपटाइम राखा." }, "daily-user": { - "name": "Daily User", + "name": "दैनंदिन वापरकर्ता", "description": "सलग 3 दिवस सक्रिय", "criteria": "सलग 3 दिवस OmniRoute वापरा." }, "weekly-warrior": { - "name": "Weekly Warrior", + "name": "साप्ताहिक योद्धा", "description": "सलग 7 दिवस सक्रिय", "criteria": "सलग 7 दिवस OmniRoute वापरा." }, "monthly-master": { - "name": "Monthly Master", + "name": "मासिक महारथी", "description": "सलग 30 दिवस सक्रिय", "criteria": "सलग 30 दिवस OmniRoute वापरा." }, @@ -12948,8 +12955,8 @@ "description": "प्रत्येक सुसंगतता नोडसाठी एकाधिक कनेक्शन्सना अनुमती द्या." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "कॉन्टेक्स्ट विंडो तपासण्या अक्षम करा", + "description": "थेट एकल-मॉडेल विनंत्यांसाठी OmniRoute ची स्थानिक कॉन्टेक्स्ट-विंडो आणि कमाल-इनपुट-टोकन तपासणी वगळा. अपस्ट्रीम प्रदाते त्यांच्या वास्तविक मर्यादा तरीही लागू करतात. प्रॉम्प्ट कॉम्प्रेशन आणि आउटपुट-टोकन मर्यादा सक्रिय राहतात." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "क्लायंटकडे फॉरवर्ड करण्यापूर्वी Responses API पासथ्रू स्ट्रीम्समधून अंतर्गत समालोचन-टप्पा आउटपुट आयटम्स काढा. कच्चा अपस्ट्रीम समालोचन प्राप्त करण्यासाठी हा फ्लॅग अक्षम करा." @@ -12985,7 +12992,7 @@ "description": "बाइट्स आधीच क्लायंटपर्यंत पोहोचल्यानंतर प्रतिसादाची पुन्हा विनंती करण्यासाठी आणि तो जोडण्यासाठी स्ट्रीम रिकव्हरीला अनुमती द्या." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "मध्य-प्रवाह सातत्य टूल-कॉलसाठी सुरक्षित करा: टूल कॉल पाठवल्यानंतर (तो अद्याप सुरू असो किंवा आधीच पूर्ण झालेला असो) खंडित झालेला प्रवाह कधीही पुन्हा सुरू करू नका आणि संपूर्ण पुनर्प्रयत्न मर्यादा वापरण्याऐवजी एका रिकाम्या सातत्यानंतर थांबा." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "स्ट्रीम कोणतीही उपयुक्त फ्रेम पाठवण्यापूर्वी बंद झाल्यास आणि त्याच कनेक्शनवरील मर्यादित पुनर्प्रयत्न संपल्यास एकदा सहोदर कनेक्शनवर फेलओव्हर करा. वापरण्यायोग्य सहोदर कनेक्शन नसल्यास मूळ early-EOF त्रुटी परत केली जाते. बंद: पुनर्प्रयत्नानंतर early-EOF अंतिम राहतो." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "स्किल्स सँडबॉक्समध्ये नेटवर्क ॲक्सेस सक्षम करा." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "सर्व्हरच्या मालकीचे टूल लूप", + "description": "मॉडेल क्लायंटसाठी वापरण्यायोग्य प्रतिसाद देईपर्यंत नॉन-स्ट्रीमिंग, सर्व्हरच्या मालकीचे टूल कॉल सुरू ठेवा." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After चा उगम", + "description": "एकत्रित 429/503 अनुपलब्ध प्रतिसादांमध्ये, भविष्यातील पुनर्प्रयत्नाची ठोस वेळ माहीत नसल्यास कृत्रिम 1s पाठवण्याऐवजी Retry-After वगळा, error.retry_after_provenance जोडा आणि कॉम्बो ड्रेन मार्गांवरील मजकूररूपी पुनर्प्रयत्न सूचना वाचा." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "संरक्षित-प्राधान्य इन्फ्रा थांबे 502 म्हणून", + "description": "केवळ-कोटा-फॉलबॅक प्राधान्य लक्ष्याने निश्चितपणे कोटाशी संबंधित नसलेल्या कारणामुळे कॉम्बो थांबवल्यास 503 ऐवजी 502 उत्तर द्या: उघडा प्रोव्हायडर सर्किट ब्रेकर किंवा पूर्वानुमानित विलंब वगळणे." } } }, @@ -13171,7 +13182,7 @@ "segmentHint": "प्रत्येक विभाग = एक मोफत पूल · पूल-डिड्युप केलेले, प्रामाणिक मोजणी (कोणतीही फुगवलेली रेट-लिमिट कमाल मर्यादा नाही).", "boost": "एकवेळच्या $10 OpenRouter टॉप-अपसह आणखी ~{tokens}/महिना अनलॉक करा (50 → 1000 req/day)", "uncapped": "कायमस्वरूपी मोफत, कोणतीही प्रकाशित मर्यादा नाही (रेट-लिमिटेड) — खरा ॲक्सेस, हेडलाइनमध्ये मोजला जात नाही:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "प्रादेशिक ओळख पडताळणीमागे (उदा. मुख्य भूमी चीनमधील खऱ्या नावाची पडताळणी) आणखी ~{tokens}/महिना — हा वास्तविक कोटा आहे, शीर्षकातील आकड्यात मोजलेला नाही:", "tosRestricted": "{count, plural, one {# मॉडेल} other {# मॉडेल्स}} ToS-प्रतिबंधित म्हणून चिन्हांकित — तुम्ही ठरवा", "provider": "प्रदाता", "model": "मॉडेल", @@ -13270,80 +13281,80 @@ "viewFullHistory": "GitHub वर संपूर्ण इतिहास पहा" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "रिझनिंग राउटिंग धोरणे", + "apiKeyTitle": "या API कीसाठी रिझनिंग राउटिंग", + "subtitle": "क्लायंट समर्थनाची आवश्यकता न ठेवता मॉडेल्स आणि रिझनिंग प्रयत्न पुन्हा रूट करा. कोणताही नियम जुळत नसल्यास विनंत्या अपरिवर्तित राहतात.", + "loadError": "रिझनिंग नियम लोड करता आले नाहीत.", + "saveError": "नियम अवैध आहे किंवा जतन करता आला नाही.", + "saved": "रिझनिंग नियम जतन केला.", + "deleteConfirm": "हा रिझनिंग नियम हटवायचा?", + "deleteError": "रिझनिंग नियम हटवता आला नाही.", + "empty": "जुळणारे कोणतेही रिझनिंग नियम कॉन्फिगर केलेले नाहीत.", + "all": "सर्व", + "any": "कोणतेही", + "enabled": "सक्षम", + "disabled": "अक्षम", + "filterSearch": "नियम शोधा", + "filterScope": "व्याप्तीनुसार फिल्टर करा", + "filterStatus": "स्थितीनुसार फिल्टर करा", + "allModels": "सर्व मॉडेल्स", + "keepModel": "मॉडेल कायम ठेवा", + "otherModel": "इतर मॉडेल", + "combo": "संयोजन", + "priorityShort": "प्राधान्य {value}", + "toggleAria": "{name} सक्षम करा", + "edit": "संपादित करा", + "delete": "हटवा", + "name": "नाव", + "description": "वर्णन", + "scopeLabel": "व्याप्ती", + "apiKey": "API की", + "sourceCombo": "स्रोत कॉम्बो", + "connection": "कनेक्शन", + "sourceModel": "स्रोत मॉडेल किंवा वाइल्डकार्ड", + "sourceModelOptional": "रिक्त = सर्व मॉडेल्स", + "sourceModelExample": "उदा. gpt-5*", + "sourceEffort": "स्रोत प्रयत्न", + "missing": "निर्दिष्ट केलेले नाही", + "signalOnly": "अ-विस्कळीत तर्क संकेत", + "requestTags": "विनंती टॅग्ज", + "requestTagsExample": "कोडिंग, अंतर्गत", + "tagMode": "टॅग जुळवणी", + "effortMode": "प्रयत्न मोड", + "targetEffort": "लक्ष्य प्रयत्न", + "routingTarget": "रूटिंग लक्ष्य", + "targetModel": "लक्ष्य मॉडेल", + "targetCombo": "लक्ष्य कॉम्बो", + "budgetAction": "विचार बजेट", + "budgetTokens": "बजेट टोकन्स", + "priority": "प्राधान्य", + "saveChanges": "बदल जतन करा", + "add": "नियम जोडा", + "cancel": "रद्द करा", + "simulateTitle": "नियमाचे अनुकरण करा", + "model": "मॉडेल", + "effort": "प्रयत्न", + "transport": "ट्रान्सपोर्ट", + "simulate": "अपस्ट्रीमशिवाय अनुकरण करा", + "extendedComboWarning": "रूटिंगदरम्यान प्रत्येक कॉम्बो लक्ष्यासाठी Max/Ultra स्वतंत्रपणे सत्यापित केले जाते.", + "extendedUnknownWarning": "Max/Ultra समर्थन सत्यापित करण्यासाठी लक्ष्य मॉडेल प्रविष्ट करा.", + "extendedUnsupportedWarning": "Max/Ultra केवळ योग्य Codex GPT-5.6 मॉडेल्सद्वारे समर्थित असल्याचे ज्ञात आहे. अज्ञात कस्टम मॉडेल्स सर्व्हरद्वारे चेतावणीसह स्वीकारली जातात.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "जागतिक", + "apiKey": "API की", + "combo": "कॉम्बो", + "model": "मॉडेल", + "connection": "कनेक्शन" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "क्लायंटकडून वारसा घ्या", + "default": "डीफॉल्ट वापरा", + "force": "सक्ती करा" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "जतन करा", + "remove": "काढून टाका", + "set": "निश्चित मूल्य सेट करा" } }, "chaosConfig": { @@ -13425,91 +13436,91 @@ "tierCommunity": "समुदाय (30-दिवसांचा विलंब)", "activateTitle": "रडार सक्रिय करा", "activateDescription": "रडार मोफत मॉडेल कॅटलॉगला समुदाय-स्रोत बुद्धिमत्तेसह समृद्ध करतो - अद्ययावत मॉडेल उपलब्धता, कोटा, आणि सेटअप मार्गदर्शक.", + "accessScaleTitle": "सक्रिय करण्यापूर्वी Radar प्रवेश समजून घ्या", + "accessScaleIntro": "तुम्ही संमती देईपर्यंत Radar नेटवर्कवर निष्क्रिय राहते. हे नियम वाचल्यानंतर Community प्रवेश निवडा किंवा वैयक्तिक समर्थक की सक्रिय करा.", + "accessCommunityRule": "Community — की आवश्यक नाही: 30 दिवसांच्या विलंबासह संपूर्ण कॅटलॉग.", + "accessSingleUseRule": "Star + follow — GitHub OAuth द्वारे दोन्हींची पडताळणी झाल्यानंतर, तुमच्या GitHub खात्याला लाइव्ह कॅटलॉग एकदा वाचण्याचा प्रवेश मिळतो; त्यानंतर प्रवेश पुन्हा Community स्तरावर जातो. त्या खात्यासाठी हा एकदाच मिळणारा प्रवेश पुन्हा जारी केला जाऊ शकत नाही.", + "accessContributorRule": "योगदानकर्ते — मर्ज केलेले PR, कमिट आणि ओळी केवळ साप्ताहिक क्रमवारी ठरवतात. शीर्ष 10 जणांना 365 दिवस; 11–100 क्रमांकावरील योगदानकर्त्यांना 90 दिवस मिळतात; शीर्ष 100 च्या बाहेरील योगदानकर्त्यांना PR ची संख्या कितीही असली तरी प्रवेश मिळत नाही. क्रमवारीतून बाहेर पडल्याने आधीच दिलेला कालावधी कधीही कमी होत नाही.", + "accessSupporterRule": "समर्थक — एकदाच केलेल्या खरेदीद्वारे स्वयंचलित नूतनीकरणाशिवाय 6 महिने, 1 वर्ष किंवा आजीवन प्रवेश मिळतो. खरेदी, देणग्या, योगदानकर्त्यांचे कालावधी आणि व्यक्तिशः दिलेले प्रवेश एकत्रित होतात; आजीवन प्रवेशाला नेहमी प्राधान्य असते.", + "accessUseTitle": "वैयक्तिक वापर, पुनर्प्राप्ती आणि पुनरावलोकन", + "accessInstallationRule": "वैयक्तिक परवाना — एका वेळी एका सक्रिय इंस्टॉलेशनवर ही की वापरा. OmniRoute हार्डवेअरचे फिंगरप्रिंटिंग करत नाही. पुनर्प्राप्तीद्वारे हरवलेली की रद्द करून तिच्या कालबाह्यता तारखेत बदल न करता नवीन की दिली जाते.", + "accessAbuseRule": "गैरवापर पुनरावलोकन — 24 तासांत चौथा वेगळा IP आढळल्यास केवळ व्यक्तिशः पुनरावलोकनासाठी ध्वजांकित केले जाते; त्यामुळे की कधीही स्वयंचलितपणे ब्लॉक किंवा रद्द होत नाही.", + "accessOffersRule": "लाइव्ह ऑफर व्यक्तिशः निवडल्या जातात आणि त्या बदलू किंवा कालबाह्य होऊ शकतात.", + "privacyTitle": "Radar कोणत्या माहितीची देवाणघेवाण करते", + "privacyDownloadsRule": "डाउनलोड — तुमच्या इंस्टॉलेशनला क्रिप्टोग्राफिकरीत्या स्वाक्षरी केलेला कॅटलॉग आणि रेफरल मेटाडेटा मिळतो; वैध लाइव्ह कीमुळे स्वाक्षरी केलेल्या ऑफर आणि Intel देखील अनलॉक होतात.", + "privacySendsRule": "पाठवली जाणारी माहिती — सर्व्हर-साइड सिंक समर्थक की Bearer token म्हणून पाठवते आणि HTTPS पायाभूत सुविधांना कनेक्शनचा IP मिळतो. फीड-विनंतीच्या हिशोबात यापैकी कोणतेही मूल्य मूळ स्वरूपात साठवले जात नाही: त्याऐवजी की हॅश, एकत्रित वापर आणि गैरवापर पुनरावलोकनासाठी दररोज बदलणारा संक्षिप्त IP HMAC ठेवला जातो.", + "privacyNeverRule": "कधीही संकलित न केलेली माहिती — प्रॉम्प्ट, प्रतिसाद, संभाषणे, प्रदाता क्रेडेन्शियल्स, मॉडेल ट्रॅफिक, अपटाइम, विलंब आणि स्थानिक प्रदाता कॉन्फिगरेशन Radar कडे कधीही पाठवले जात नाहीत.", "activateButton": "सक्रिय करा", "activating": "सक्रिय करत आहे...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", + "keySectionTitle": "तुमच्याकडे आधीपासून समर्थक की आहे?", + "keyInvalidFormatError": "कीचे स्वरूप अवैध आहे. ती \"omr_\" ने सुरू होऊन त्यानंतर 40 हेक्स वर्ण असणे आवश्यक आहे.", + "activateWithKeyButton": "समर्थक प्रवेश सक्रिय करा", + "changeKeyButton": "की बदला", + "claimSectionTitle": "तुमच्याकडे अजून समर्थक की नाही?", + "contributorButton": "मी योगदानकर्ता आहे", + "contributorHint": "GitHub OAuth सध्याची साप्ताहिक क्रमवारी तपासते: शीर्ष 10 जणांना 365 दिवस आणि 11–100 क्रमांकावरील योगदानकर्त्यांना 90 दिवस मिळतात. केवळ PR च्या संख्येच्या आधारावर शीर्ष 100 च्या बाहेरील योगदानकर्त्यांना कधीही प्रवेश मिळत नाही.", + "supporterButton": "प्रकल्पाला पाठिंबा द्या", "supporterHint": "Support OmniRoute to get a supporter key with the live catalog and extra perks.", "colProvider": "प्रदाता", "colModel": "मॉडेल", "colQuota": "कोटा", + "colLimits": "दर मर्यादा", + "trainsOnPrompts": "प्रॉम्प्टवर प्रशिक्षण देते", + "trainsOnPromptsHelp": "या प्रदात्याच्या अटींनुसार, तुम्ही पाठवलेल्या प्रॉम्प्टवर तो प्रशिक्षण देऊ शकतो. हा बॅज नसलेली मॉडेल्स एकतर असे करत नसल्याचे सांगतात किंवा त्याबद्दल माहिती देत नाहीत — विधान नसणे ही हमी नाही.", + "limitsUnknownHelp": "केवळ Radar फीडद्वारे नोंदवलेल्या मर्यादा; या नोंदीसाठी कोणत्याही मर्यादा प्रकाशित केलेल्या नाहीत", + "contextUnknownHelp": "या नोंदीसाठी संदर्भ विंडो अज्ञात आहे", + "capabilityUnknownHelp": "फीडद्वारे क्षमता नोंदवलेली नाही", "colContext": "संदर्भ", "colCapabilities": "क्षमता", "colTos": "ToS धोका", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "नवीन", "setupGuide": "सेटअप मार्गदर्शक", "disabledByFeed": "रडार फीडद्वारे अक्षम", "capTools": "साधने", "capVision": "दृष्टिकोन", "capThinking": "विचार", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "कॅटलॉग", + "freeCreditsTab": "मोफत क्रेडिट्स", + "freeCreditsSubtitle": "Radar द्वारे ट्रॅक केलेल्या प्रदात्यांचे रेफरल दुवे — ते वापरल्याने तुम्हाला कोणताही अतिरिक्त खर्च येत नाही आणि OmniRoute ला पाठिंबा देण्यास मदत होते.", + "fixedLinksEmpty": "अद्याप कोणतेही रेफरल दुवे उपलब्ध नाहीत. अपडेट तपासण्यासाठी Radar सिंक करा.", + "requiredActionLabel": "काय करावे:", + "claimButton": "क्रेडिट्स मिळवा", + "campaignsTitle": "मर्यादित कालावधीच्या मोहिमा", + "campaignsEmpty": "सध्या कोणत्याही सक्रिय मोहिमा नाहीत — नंतर पुन्हा तपासा.", + "campaignsUpsellCommunity": "मर्यादित कालावधीच्या मोहिमा ही समर्थकांसाठीची अतिरिक्त सुविधा आहे. या पृष्ठावरील स्थिर दुव्यांमधील सर्व काही प्रत्येकासाठी मोफत राहते.", + "campaignsValidUntil": "{date} पर्यंत वैध", + "colActions": "कृती", + "localBadge": "स्थानिक", + "editModel": "संपादित करा", + "saveModel": "जतन करा", + "cancelEdit": "रद्द करा", + "resetModel": "स्थानिक बदल रीसेट करा", + "hideModel": "लपवा", + "restoreModel": "पुनर्स्थापित करा", + "hiddenModelsTitle": "लपवलेली मॉडेल्स", + "modelDisplayName": "स्थानिक प्रदर्शन नाव", + "modelEnabled": "स्थानिकरीत्या सक्षम", + "localStateSaveFailed": "स्थानिक Radar सेटिंग्ज जतन करण्यात अयशस्वी", + "guidedCombos": "मार्गदर्शित कॉम्बो", + "offers": "ऑफर्स", + "intel": "माहिती" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar मार्गदर्शित कॉम्बो", + "subtitle": "Radar ने निवडलेल्या समतुल्य मोफत मॉडेल्सपासून प्राधान्यक्रमानुसार फॉलबॅक तयार करा.", + "backToRadar": "Radar कडे परत जा", + "loading": "कॉम्बो सूचना लोड होत आहेत...", + "familyLabel": "मॉडेल कुटुंब", + "modelsLabel": "प्राधान्यक्रम", + "strategyReason": "प्राधान्यक्रमात प्रथम सर्वात मोठे आवर्ती मोफत बजेट वापरले जाते आणि त्यानंतर सक्रिय प्रदात्यांमध्ये फॉलबॅक केले जाते.", + "generateButton": "कॉम्बो तयार करा", + "generating": "तयार होत आहे...", + "alreadyCreated": "आधीच तयार केले आहे", + "created": "कॉम्बो तयार झाला", + "noSuggestions": "सध्या कोणत्याही पात्र मॉडेल कुटुंबाकडे किमान दोन प्रदात्यांसाठी सक्रिय कनेक्शन्स नाहीत.", + "catalogRequired": "निवडलेली मॉडेल कुटुंबे लोड करण्यासाठी प्रथम Radar कॅटलॉग सिंक करा.", + "loadFailed": "Radar कॉम्बो सूचना लोड करण्यात अयशस्वी.", + "createFailed": "कॉम्बो तयार करण्यात अयशस्वी. तुमची प्रदाता कनेक्शन्स तपासा आणि पुन्हा प्रयत्न करा." }, "radarSetupPage": { "title": "प्रदाता सेटअप", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "कनेक्शन लवचिकता", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "तुमची कनेक्शन्स आपोआप पूर्ववत होतात", + "reassuranceDetail": "सहसा कोणतीही कृती आवश्यक नसते. अपयशानंतर OmniRoute एखाद्या कनेक्शनला तात्पुरती विश्रांती देते आणि नंतर सुरक्षितपणे पुन्हा प्रयत्न करते.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "विनंत्या पाठवता येतात", + "coolingDown": "लवकरच पुन्हा प्रयत्न केला जाईल", + "lockedOut": "तुमचे लक्ष आवश्यक आहे" }, "table": { "status": "स्थिती", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "डिस्पॅच करण्यापूर्वी विनंत्या नाकारल्या जातात जेव्हा लक्ष्य मॉडेल आवश्यक क्षमतांचा अभाव असतो (दृष्टी, साधने, संरचित आउटपुट, संदर्भ विंडो). कॉम्बो-लेयर सुसंगतता फिल्टरला बायपास करणाऱ्या थेट एकल-प्रदात्याच्या विनंत्यांचे संरक्षण करते.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "थेट एकल-मॉडेल विनंत्यांसाठी OmniRoute ची स्थानिक context-window आणि max-input-token तपासणी वगळा. अपस्ट्रीम प्रदाते तरीही त्यांच्या वास्तविक मर्यादा लागू करतात. प्रॉम्प्ट कॉम्प्रेशन आणि आउटपुट-टोकन मर्यादा सक्रिय राहतात.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "शोध आकडेवारी आणि अलीकडील शोधांमध्ये फक्त अद्याप सक्रिय कनेक्शन असलेले प्रदाते मोजले जातात (duckduckgo-free सारखे की-विरहित प्रदाते नेहमी मोजले जातात). बंद केल्यास, प्रदाता आयडी असलेली प्रत्येक जतन केलेली शोध पंक्ती ठेवली जाते.", "publicSystem": { "notFound": { "title": "पृष्ठ सापडले नाही", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "देखभाल माहिती", "service": "सेवा", "unknown": "अज्ञात", - "notAvailable": "n/a", + "notAvailable": "लागू नाही", "providersTracked": "प्रदात्यांचे ट्रॅकिंग केले आहे", "circuitBreakerState": "प्रदाता सर्किट ब्रेकर स्थिती", "lastUpdate": "अखेरचा अद्यतन: {timestamp}", @@ -13853,7 +13864,7 @@ "authorizeImportant": "महत्त्वाचे: तुम्हाला trae.ai मध्ये या ब्राउझरमध्ये प्रथम लॉगिन केलेले असावे. अधिकृत पृष्ठ फक्त विद्यमान सत्राची पुष्टी करते — ते तुम्हाला लॉगिन करू शकत नाही. तुम्हाला \"लॉगिन अयशस्वी\" दिसल्यास, \"open solo.trae.ai\" वर क्लिक करा, लॉगिन करा, आणि नंतर येथे परत या.", "waitingForAuthorization": "trae.ai साठी वाट पाहत आहे…", "authorizeWithBrowser": "ब्राउझरद्वारे अधिकृत करा", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai उघडा", "orPasteManually": "किंवा टोकन हाताने पेस्ट करा", "manualInstructions": "solo.trae.ai मध्ये साइन इन करा, DevTools → Network उघडा, कोणतीही चॅट संदेश पाठवा, आणि Authorization: Cloud-IDE-JWT {tokenPlaceholder} विनंती हेडरमधून JWT कॉपी करा. JWT आयुष्य ~14 दिवस आहे. वैकल्पिक ओळख क्षेत्रे त्याच विनंती शरीरातील common_params मधून येतात.", "accessTokenLabel": "ऍक्सेस टोकन (क्लाउड-आयडीई-जेडब्ल्यूटी)", @@ -14070,11 +14081,11 @@ "actionApprove": "योजना मंजूर करा", "actionCancel": "रद्द करा", "actionSeeInGraph": "आलेखात पहा", + "actionRepeat": "पुनरावृत्ती करा", "actionDone": "क्रिया लागू केली", "actionFailed": "क्रिया अयशस्वी: {error}", "detailFailed": "तपशील लोड करण्यात अयशस्वी: {error}", "mirroredInA2A": "A2A मध्ये प्रतिबिंबित", - "actionRepeat": "पुनरावृत्ती करा", "repeatConfirm": "पुष्टीसाठी पुन्हा क्लिक करा", "repeatDone": "नवीन रन तयार केला", "repeatUnavailable": "मूळ इनपुट उपलब्ध नाही" @@ -14088,57 +14099,57 @@ "networkError": "नेटवर्क त्रुटी — प्रदाता एक्सपोजर सेटिंग अद्यतनित करता येत नाही" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "समर्थकांसाठी ऑफर", + "subtitle": "Radar कडून अधिकृत सवलती, क्रेडिट्स, चाचणी कालावधी आणि पुनरावलोकन केलेले भागीदार लाभ.", + "backToRadar": "Radar कडे परत जा", + "loading": "ऑफर लोड होत आहेत...", + "refresh": "ऑफर रीफ्रेश करा", + "refreshing": "रीफ्रेश करत आहे...", + "loadFailed": "आम्हाला ऑफर रीफ्रेश करता आल्या नाहीत. शेवटची सत्यापित स्थानिक कॅशे जतन केली आहे.", + "empty": "सध्या कोणत्याही सक्रिय ऑफर उपलब्ध नाहीत.", + "keyRequiredTitle": "समर्थक की आवश्यक आहे", + "keyRequiredDescription": "ऑफर हा Radar चा थेट लाभ आहे. Radar स्क्रीनवर विद्यमान समर्थक की जोडा, तुमची योगदानकर्ता स्थिती सत्यापित करा किंवा ती मिळवण्यासाठी प्रकल्पाला समर्थन द्या.", + "contributorButton": "मी योगदानकर्ता आहे", + "supporterButton": "प्रकल्पाला समर्थन द्या", + "partnerBadge": "भागीदार", + "officialBadge": "अधिकृत", + "conditionsLabel": "अटी:", + "validUntil": "{date} पर्यंत वैध", + "noExpiry": "कालबाह्यता जाहीर केलेली नाही", + "openOffer": "ऑफर पहा", + "trialDays": "{days, plural, one {# दिवस} other {# दिवस}}" }, "radarIntelPage": { "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "subtitle": "Radar च्या मालकीची ELO क्रमवारी आणि कॅटलॉगमधील वस्तुनिष्ठ बदल.", + "backToRadar": "Radar कडे परत जा", + "loading": "Intel लोड होत आहे...", + "refresh": "Intel रीफ्रेश करा", + "syncing": "रीफ्रेश करत आहे...", + "loadFailed": "आम्हाला Intel रीफ्रेश करता आले नाही. शेवटची सत्यापित स्थानिक कॅशे जतन केली आहे.", + "empty": "अद्याप कोणताही सत्यापित Intel स्नॅपशॉट उपलब्ध नाही.", + "supporterBadge": "Radar समर्थक", + "methodology": "कार्यपद्धती", + "eloMethod": "ELO, प्रारंभिक {initial}, K={factor}", + "freshness": "कॅटलॉगचा अद्ययावतपणा", + "ageDays": "{days, plural, one {# दिवस जुना} other {# दिवस जुना}}", + "trend": "कॅटलॉगचा कल", + "modelDelta": "{current} मॉडेल, +{added} / -{removed}", + "ranking": "मॉडेल क्रमवारी", + "noRankings": "अद्याप कोणत्याही पुष्टी झालेल्या तुलना उपलब्ध नाहीत.", + "model": "मॉडेल", + "category": "श्रेणी", + "rating": "रेटिंग", + "matches": "जुळण्या", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "नवीन", + "aging": "जुने होत आहे", + "stale": "कालबाह्य" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "वाढत आहे", + "stable": "स्थिर", + "shrinking": "घटत आहे" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "विनंती प्रदाता संदर्भ विंडो ओलांडते" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference हा OmniRoute चा मुक्त-स्रोत मित्र आहे", + "description": "एकाच OpenAI-सुसंगत एंडपॉइंटद्वारे डझनभर अत्याधुनिक मॉडेल्सची पुनर्विक्री करणारे, किंमतीनुसार क्रमबद्ध केलेले गेटवे — प्रत्येक विनंती सर्वात स्वस्त पात्र प्रदात्याकडे रूट करते आणि सूची किमतीपेक्षा कधीही जास्त आकारत नाही.", + "cta": "API की मिळवा", + "partnerLinkNote": "भागीदार लिंक", + "dismissAriaLabel": "बंद करा" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models कॅटलॉगमध्ये विचार-पातळीच्या प्रकारांची (उदा. -low, -medium, -high) निर्मिती अक्षम करा." } diff --git a/src/i18n/messages/ms.json b/src/i18n/messages/ms.json index 95c1e7cb66..82d40caada 100644 --- a/src/i18n/messages/ms.json +++ b/src/i18n/messages/ms.json @@ -31,7 +31,7 @@ "active": "Aktif", "inactive": "Tidak aktif", "noData": "Tiada data tersedia", - "nothingHere": "Nothing here yet", + "nothingHere": "Belum ada apa-apa di sini", "configure": "Konfigurasikan", "manualConfig": "Konfigurasi manual", "manage": "Urus", @@ -47,7 +47,7 @@ "time": "Masa", "details": "Butiran", "created": "Dicipta", - "lastUsed": "Last Refreshed", + "lastUsed": "Kali Terakhir Disegar Semula", "loadMore": "Muatkan Lagi", "noResults": "Tiada hasil ditemui", "reloadPage": "Muat Semula Halaman", @@ -70,8 +70,8 @@ "note": "Nota", "free": "Percuma", "skipToContent": "Langkau ke kandungan", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Pelayan sedang mengalami masalah. Sesetengah ciri mungkin tidak tersedia.", + "maintenanceServerUnreachable": "Pelayan tidak dapat dicapai. Menyambung semula...", "accept": "Terima", "accountId": "ID Akaun", "alias": "Alias", @@ -100,7 +100,7 @@ "sortOrder": "Susun Susunan", "tab": "Tab", "text": "Teks", - "textarea": "Textarea", + "textarea": "Kawasan Teks", "tool": "alat", "toolId": "ID alat", "web": "Web", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Gagal menetapkan semula harga", "apikey": "Kunci API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Pergi ke Papan Pemuka", + "checkSystemStatus": "Semak Status Sistem", + "selectModel": "Pilih Model", "addModel": "Tambah model", "effortNone": "Tiada", "effortLow": "Rendah", @@ -162,12 +162,12 @@ "effortMax": "Maks", "effortUltra": "Ultra", "reasoningEffort": "Usaha penaakulan", - "wireApi": "Wire API", + "wireApi": "API Wire", "modelAliases": "Alias model", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Gabungan", + "noModelsFound": "Tiada model ditemukan", + "clear": "Kosongkan", + "done": "Selesai", "selectAll": "Pilih semua", "unselectAll": "Batal pilih semua", "visibleModels": "kelihatan", @@ -184,519 +184,519 @@ "selectAllProviders": "Semak semua penyedia", "clearProviderSelection": "Nyahpilih penyedia", "providersSelectedCount": "{count} penyedia diperiksa", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Ralat Berlaku", + "comboDeleted": "Gabungan Dipadamkan", + "hide": "Sembunyikan", + "creating": "Sedang Mencipta", + "comboCreated": "Gabungan Dicipta", + "swapFormats": "Tukar Format", + "daysAgo": "Hari Lalu", + "retries": "Percubaan Semula", + "errorDuringRestore": "Ralat Semasa Pemulihan", + "eventsAppearHint": "Petunjuk Kemunculan Acara", + "noLockouts": "Tiada Sekatan", + "webSearchDesc": "Perihalan Carian Web", + "audioProvidersHeading": "Tajuk Penyedia Audio", "cloudAgentProviders": "Pembekal Agen Awan", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Minit Lalu", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", + "liveAutoRefreshing": "Penyegaran Automatik Langsung", + "webSearch": "Carian Web", + "anthropicPrefixPlaceholder": "Ruang Letak Awalan Anthropic", + "addModelToCombo": "Tambah Model pada Gabungan", + "failedToLoad": "Gagal Dimuatkan", + "categoryMedia": "Kategori Media", + "enableCloud": "Dayakan Awan", + "expirationBannerExpiringSoon": "Sepanduk Tamat Tempoh Tidak Lama Lagi", + "retry": "Cuba semula", + "embeddings": "Pembenaman", + "errorCount": "Bilangan Ralat", + "backupReasonManual": "Sebab Sandaran Manual", + "safeSearchModerate": "Carian Selamat Sederhana", + "activeLimiters": "Pengehad Aktif", + "a2aCardTitle": "Tajuk Kad A2A", + "cloudWorkerUnreachable": "Cloud Worker Tidak Dapat Dihubungi", + "testFailed": "Ujian Gagal", + "compatibleBaseUrlHint": "Petunjuk URL Asas Serasi", + "usageTracking": "Penjejakan Penggunaan", + "disableCloudTitle": "Tajuk Lumpuhkan Cloud", + "noConnections": "Tiada Sambungan", + "providerHealth": "Kesihatan Penyedia", + "confirmDbImport": "Sahkan Import Pangkalan Data", + "notAvailableSymbol": "Simbol Tidak Tersedia", + "backupsAvailable": "Sandaran Tersedia", + "providerAuto": "Penyedia Automatik", + "newProviderNamePlaceholder": "Ruang Letak Nama Penyedia Baharu", + "a2aQuickStartStep2": "Langkah 2 Mula Pantas A2A", + "ok": "OK", + "available": "Tersedia", + "noBackupYet": "Belum Ada Sandaran", + "more": "Lagi", + "noCompatibleYet": "Belum Ada yang Serasi", + "multiProvider": "Berbilang Penyedia", + "repairEnvHint": "Petunjuk Baiki Env", + "disablingCloud": "Melumpuhkan Cloud", + "testBench": "Bangku Ujian", + "valid": "Sah", + "cloudBenefitShare": "Perkongsian Manfaat Cloud", + "mcpCardTitle": "Tajuk Kad MCP", + "disableConfirm": "Sahkan Pelumpuhan", + "filters": "Penapis", + "expirationBannerExpiredDesc": "Perihalan Sepanduk Tamat Tempoh", + "saveComboDefaults": "Simpan Lalai Gabungan", + "cloudConnectedVerified": "Cloud Disambungkan dan Disahkan", + "uptime": "Masa Operasi", + "compatibleProdPlaceholder": "Ruang Letak Produksi Serasi", + "fallbackChainsTitle": "Tajuk Rantaian Sandaran", + "oauthLabel": "Label OAuth", + "a2aCardDescription": "Perihalan Kad A2A", + "okShort": "OK Ringkas", + "maintenance": "Penyelenggaraan", + "formatConverter": "Penukar Format", + "zedImportNetworkError": "Ralat Rangkaian Import Zed", + "apiKeyLabel": "Label Kunci API", + "noModelsForProvider": "Tiada Model untuk Penyedia", + "mcpCardDescription": "Perihalan Kad MCP", + "apiTypeLabel": "Label Jenis API", + "configuredProvidersLabel": "Label Penyedia yang Dikonfigurasikan", + "maxRetriesLabel": "Label Percubaan Semula Maksimum", + "title": "Tajuk", "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", + "prefixHint": "Petunjuk Awalan", + "skipWizard": "Langkau Pembantu Persediaan", + "failedCount": "Bilangan Gagal", + "confirmDbImportDesc": "Perihalan Pengesahan Import Pangkalan Data", + "entries": "Entri", + "until": "Sehingga", + "disableCombo": "Nyahdayakan Kombo", + "liveMonitorDescriptionPrefix": "Awalan Perihalan Pemantau Langsung", + "runningCount": "Bilangan Sedang Berjalan", + "noActiveConnectionsInGroup": "Tiada Sambungan Aktif dalam Kumpulan", + "savedSuccessfully": "Berjaya Disimpan", + "systemStorage": "Storan Sistem", + "videoDesc": "Perihalan Video", + "maxResults": "Hasil Maksimum", + "timeRangeMonth": "Julat Masa Bulan", + "testSummary": "Ringkasan Ujian", + "failedSetPassword": "Gagal Menetapkan Kata Laluan", "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", + "restore": "Pulihkan", + "disableWarning": "Amaran Penyahdayaan", + "moderationsDesc": "Perihalan Penyederhanaan", + "providerHealthStatusAria": "ARIA Status Kesihatan Penyedia", + "modelNamePlaceholder": "Ruang Letak Nama Model", + "mcpQuickStartStep2": "Langkah 2 Mula Pantas MCP", + "quickStart": "Mula Pantas", + "fullExportFailedWithError": "Eksport Penuh Gagal dengan Ralat", + "loadingBackups": "Memuatkan Sandaran", + "anthropicBaseUrlPlaceholder": "Ruang Letak URL Asas Anthropic", + "description": "Penerangan", + "noProviderFound": "Tiada Penyedia Ditemui", "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "protocolsDescription": "Penerangan Protokol", + "cloudSessionNote": "Nota Sesi Awan", + "advancedSettings": "Tetapan Lanjutan", + "defaultStrategy": "Strategi Lalai", + "purgeExpiredLogs": "Bersihkan Log Tamat Tempoh", + "justNow": "Baru Sahaja", + "providerTestFailed": "Ujian Penyedia Gagal", + "openaiBaseUrlPlaceholder": "Ruang Letak URL Asas OpenAI", + "image": "Imej", + "failedCreateChain": "Gagal Mencipta Rantaian", + "importDatabase": "Import Pangkalan Data", + "allDataLocal": "Semua Data Disimpan Secara Setempat", + "sectionTitle": "Tajuk Bahagian", + "failedToggle": "Gagal Menogol", + "editCombo": "Edit Gabungan", + "testResults": "Keputusan Ujian", + "searchQuery": "Pertanyaan Carian", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "Duplikat", + "createCombo": "Cipta Gabungan", + "searchTypeWeb": "Jenis Carian Web", + "addChain": "Tambah Rantaian", + "prefixLabel": "Label Awalan", + "listModelsDesc": "Penerangan Senarai Model", + "databaseSize": "Saiz Pangkalan Data", + "chainCreated": "Rantaian Dicipta", + "providerTestTimeout": "Ujian Penyedia Tamat Masa", + "routingStrategy": "Strategi Penghalaan", + "translateAction": "Tindakan Terjemah", + "exportFailed": "Eksport Gagal", + "connectedVerificationPending": "Disambungkan, Pengesahan Belum Selesai", + "a2aQuickStartTitle": "Tajuk Mula Pantas A2A", + "couldNotTest": "Tidak Dapat Menguji", + "testAllCompatible": "Uji Semua yang Serasi", + "anthropicCompatibleName": "Nama Serasi Anthropic", + "disabling": "Melumpuhkan", + "failedEnable": "Gagal Didayakan", + "categoryUtility": "Kategori Utiliti", + "customUrlOptional": "URL Tersuai Pilihan", + "localProviders": "Penyedia Tempatan", + "comboNamePlaceholder": "Ruang Letak Nama Gabungan", + "memoryRss": "RSS Memori", + "disableProvider": "Lumpuhkan Penyedia", + "welcomeDesc": "Penerangan Selamat Datang", + "nameLabel": "Label Nama", + "allOperational": "Semua Beroperasi", + "backupNow": "Sandarkan Sekarang", + "providerMaxRetriesAria": "ARIA Percubaan Semula Maksimum Penyedia", + "textToSpeechDesc": "Penerangan Teks kepada Pertuturan", + "machineId": "ID Mesin", + "globalProxy": "Proksi Global", + "hitsMisses": "Capaian dan Kegagalan", + "testDesc": "Penerangan Ujian", + "chatDesc": "Penerangan Sembang", + "importSuccess": "Import Berjaya", + "chat": "Sembang", + "a2aQuickStartStep1": "Langkah 1 Mula Pantas A2A", + "importFailed": "Import Gagal", + "inputPlaceholder": "Ruang Letak Input", + "providerModelsTitle": "Tajuk Model Penyedia", + "lastBackup": "Sandaran Terakhir", + "yourEndpoint": "Titik Akhir Anda", + "autoDisableThresholdDesc": "Penerangan Ambang Lumpuh Automatik", + "rerankDesc": "Penerangan Susun Semula Kedudukan", + "modelsPathPlaceholder": "Ruang Letak Laluan Model", + "noCombosYet": "Belum Ada Gabungan", + "connectedVerificationPendingWithError": "Disambungkan, Pengesahan Belum Selesai dengan Ralat", + "comboDefaultsGuideHint1": "Petunjuk 1 Panduan Lalai Gabungan", + "enableCloudTitle": "Tajuk Dayakan Awan", + "configuredProvidersHint": "Petunjuk Penyedia yang Dikonfigurasikan", + "paused": "Dijeda", + "llmProviders": "Penyedia LLM", + "enableCombo": "Dayakan Gabungan", + "removeProviderOverrideAria": "ARIA Alih Keluar Penggantian Penyedia", + "nodeVersion": "Versi Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Eksport Gagal Dengan Ralat", + "proxyConfigured": "Proksi Dikonfigurasikan", + "concurrencyPerModel": "Keserentakan Bagi Setiap Model", + "protocolTasksLabel": "Label Tugas Protokol", + "oauthProviders": "Penyedia OAuth", + "lockedCount": "Bilangan Dikunci", + "deleteChainConfirm": "Sahkan Pemadaman Rantaian", + "recentTranslations": "Terjemahan Terkini", + "zedImportButton": "Butang Import Zed", + "responsesDesc": "Penerangan Respons", + "testedCount": "Bilangan Diuji", + "providersCommaSeparatedPlaceholder": "Ruang Letak Penyedia Dipisahkan Koma", + "signatureDefaults": "Lalai Tandatangan", + "errorCreating": "Ralat Semasa Mencipta", + "timeRangeYear": "Julat Masa Tahun", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Awan Berjaya Dilumpuhkan", + "deleteConfirm": "Sahkan Pemadaman", + "check": "Semak", + "safeSearch": "Carian Selamat", + "protocolLastActivity": "Aktiviti Terakhir Protokol", + "openMcpDashboard": "Buka Papan Pemuka MCP", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Label Laluan Sembang", + "retryDelay": "Kelewatan Cubaan Semula", + "errorUpdating": "Ralat Semasa Mengemas Kini", + "ideCliIntegrations": "Integrasi IDE dan CLI", + "imageGeneration": "Penjanaan Imej", + "apiKeyRequired": "Kunci API Diperlukan", + "resetAllTitle": "Tajuk Tetapkan Semula Semua", + "connectionError": "Ralat Sambungan", + "modelName": "Nama Model", + "apiKeyForCheck": "Kunci API Untuk Semakan", + "cloudRequestTimeout": "Tamat Masa Permintaan Awan", + "showConfiguredOnly": "Tunjukkan Yang Dikonfigurasikan Sahaja", "showFreeOnly": "Percuma sahaja", "addFirstProvider": "Tambahkan pembekal pertama anda", "addFirstProviderDesc": "Sambungkan pembekal AI untuk memulakan penghalaan permintaan melalui OmniRoute. Anda boleh menggunakan pembekal percuma, kunci API atau akaun OAuth.", "learnMore": "Ketahui lebih lanjut", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Sertakan Domain", + "promptCache": "Cache Prom", + "cloudConnected": "Awan Disambungkan", + "deleteChain": "Padam Rantaian", + "chatPathPlaceholder": "Ruang Letak Laluan Sembang", + "databasePath": "Laluan Pangkalan Data", + "usingLocalServer": "Menggunakan Pelayan Tempatan", + "globalComboConfig": "Konfigurasi Kombo Global", + "backupFailed": "Sandaran Gagal", + "tabProtocols": "Protokol Tab", + "continue": "Teruskan", + "categorySearch": "Carian Kategori", + "rateLimitStatus": "Status Had Kadar", + "repairEnvSuccess": "Pembaikan Persekitaran Berjaya", + "nameRequired": "Nama Diperlukan", + "country": "Negara", + "trackMetricsDesc": "Perihalan Penjejakan Metrik", + "durationSecondsShort": "Tempoh Saat Pendek", + "formatConverterDescription": "Perihalan Penukar Format", + "cloudBenefitAccess": "Akses Manfaat Awan", + "maxRetries": "Percubaan Semula Maksimum", + "queueTimeout": "Tamat Masa Baris Gilir", "queueDepth": "Kedalaman Baris Gilir", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Tambah Penyedia", + "realtime": "Masa Nyata", + "totalTranslations": "Jumlah Terjemahan", + "protocolActiveStreamsLabel": "Label Strim Aktif Protokol", + "repairEnv": "Baiki Persekitaran", + "modelsCount": "Bilangan Model", + "viewBackups": "Lihat Sandaran", + "responsesApi": "Responses API", + "copyComboName": "Salin Nama Kombo", + "failures": "Kegagalan", + "failedUpdate": "Kemas Kini Gagal", + "imageDesc": "Perihalan Imej", + "failedCreate": "Penciptaan Gagal", + "remainingOfLimit": "Baki Daripada Had", + "protocolsTitle": "Tajuk Protokol", + "expirationBannerExpiringSoonDesc": "Perihalan Sepanduk Tamat Tempoh Tidak Lama Lagi", + "source": "Sumber", + "failed": "Gagal", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", + "mcpQuickStartStep1": "Langkah 1 Permulaan Pantas MCP", + "runTest": "Jalankan Ujian", + "loadingFallbackChains": "Memuatkan Rantaian Sandaran", + "healthy": "Sihat", + "version": "Versi", + "saveBlockWeighted": "Simpan Blok Berwajaran", + "zedImportNone": "Tiada Import Zed", + "noBackupsYet": "Belum Ada Sandaran", + "noGlobalProxy": "Tiada Proksi Global", + "noModels": "Tiada Model", + "stickyLimit": "Had Kekal", + "passedCount": "Bilangan Lulus", + "zedImportFailed": "Import Zed Gagal", + "saving": "Menyimpan", + "testAll": "Uji Semua", + "globalProxyDesc": "Perihalan Proksi Global", + "latencyP99": "Kependaman P99", + "connectingToCloud": "Menyambung ke Cloud", + "responses": "Respons", + "errorDeleting": "Ralat Semasa Memadam", + "openaiPrefixPlaceholder": "Ruang Letak Awalan OpenAI", + "enterPassword": "Masukkan Kata Laluan", + "openA2aDashboard": "Buka Papan Pemuka A2A", + "enableProvider": "Dayakan Penyedia", + "modeTest": "Mod Ujian", + "failedDeleteChain": "Gagal Memadam Rantaian", + "providerDesc": "Perihalan Penyedia", + "templateLoadHint": "Petunjuk Memuatkan Templat", + "lastFailure": "Kegagalan Terakhir", + "moveDown": "Alih ke Bawah", + "providerLabel": "Label Penyedia", + "clearCacheFailed": "Gagal Mengosongkan Cache", + "imagesGenerations": "Penjanaan Imej", + "repairEnvWorking": "Membaiki Persekitaran Kerja", + "millisecondsShort": "ms", + "globalLabel": "Label Global", + "failuresPlural": "Kegagalan", + "completionsLegacyDesc": "Perihalan Pelengkapan Legasi", + "searchProviders": "Cari Penyedia", + "chatPathHint": "Petunjuk Laluan Sembang", + "defaultStrategyDesc": "Perihalan Strategi Lalai", + "latencyP95": "Kependaman P95", + "textToSpeech": "Teks kepada Pertuturan", + "searchType": "Jenis Carian", + "messages": "Mesej", + "aggregatorsGateways": "Pengagregat dan Gerbang", + "comboStrategyAria": "Strategi Gabungan Aria", "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "testingConnection": "Menguji Sambungan", + "excludeDomains": "Kecualikan Domain", + "webCookieProviders": "Penyedia Kuki Web", + "allTestsPassed": "Semua Ujian Lulus", + "openaiCompatibleName": "Nama Serasi Openai", + "warningCostOptimizedPartialPricing": "Amaran Harga Separa Dioptimumkan untuk Kos", + "comboDefaultsGuideTitle": "Tajuk Panduan Lalai Kombo", + "hoursAgo": "Jam yang Lalu", + "notAvailable": "Tidak Tersedia", + "skipAndContinue": "Langkau dan Teruskan", + "moderations": "Moderasi", + "proxyConfig": "Konfigurasi Proksi", + "upstreamProxyProviders": "Penyedia Proksi Huluan", + "exportAll": "Eksport Semua", + "queuedCount": "Bilangan dalam Baris Gilir", + "resetAll": "Tetapkan Semula Semua", + "noTranslations": "Tiada Terjemahan", + "avgLatency": "Purata Kependaman", + "throttleStatus": "Status Pendikitan", + "backupRetentionDesc": "Penerangan Pengekalan Sandaran", + "noCBData": "Tiada Data Cb", + "chainDeleted": "Rantaian Dipadamkan", + "timeLeft": "Masa Berbaki", + "expirationBannerExpired": "Sepanduk Tamat Tempoh Telah Luput", + "language": "Bahasa", + "invalidFileType": "Jenis Fail Tidak Sah", + "monitoredProviders": "Penyedia yang Dipantau", + "errors": "Ralat", + "heap": "Timbunan", + "chatCompletions": "Pelengkapan Sembang", + "exampleTemplatesHint": "Petunjuk Templat Contoh", + "retryDelayLabel": "Label Kelewatan Cuba Semula", + "audioTranscription": "Transkripsi Audio", + "fallbackChainsDesc": "Penerangan Rantaian Sandaran", + "exampleTemplates": "Templat Contoh", + "connectionsCount": "Bilangan Sambungan", + "modelsPathLabel": "Label Laluan Model", + "activeProvidersHint": "Petunjuk Penyedia Aktif", + "activeLockouts": "Sekatan Aktif", + "invalid": "Tidak Sah", + "skipPassword": "Langkau Kata Laluan", + "moveUp": "Alih ke Atas", + "timeRange": "Julat Masa", + "stickyLimitDesc": "Perihalan Had Lekat", + "cloudBenefitEdge": "Kelebihan Cloud Edge", + "custom": "Tersuai", + "verifying": "Mengesahkan", + "baseUrlLabel": "Label URL Asas", + "setPassword": "Tetapkan Kata Laluan", + "safeSearchStrict": "Carian Selamat Ketat", + "noChangesSinceBackup": "Tiada Perubahan Sejak Sandaran", + "modelsPathHint": "Petunjuk Laluan Model", + "audioTranscriptions": "Transkripsi Audio", + "testCombo": "Uji Gabungan", + "mcpQuickStartTitle": "Tajuk Mula Pantas Mcp", + "comboUpdated": "Gabungan Dikemas Kini", + "weighted": "Berwajaran", + "providers": "Penyedia", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Perihalan Tiada Rantaian Sandaran", + "yesImport": "Ya, Import", + "lockoutsAutoRefreshHint": "Petunjuk Muat Semula Automatik Penguncian", + "tabApis": "Tab API", + "sectionDescription": "Perihalan Bahagian", + "filter": "Tapis", + "purgeLogsFailed": "Gagal Menghapuskan Log", + "latency": "Kependaman", + "testAllOAuth": "Uji Semua O Auth", + "mcpQuickStartStep3": "Langkah 3 Mula Pantas Mcp", + "repairEnvFailed": "Gagal Membaiki Env", + "zedImportHint": "Petunjuk Import Zed", + "modelsAcrossEndpoints": "Model Merentas Titik Akhir", + "autoDisableBannedAccounts": "Nyahdayakan Akaun Dilarang Secara Automatik", + "securityDesc": "Perihalan Keselamatan", + "listModels": "Senaraikan Model", + "backupRestore": "Sandaran dan Pemulihan", + "target": "Sasaran", + "zedImportSuccess": "Import Zed Berjaya", + "lastHeaderUpdate": "Kemas Kini Pengepala Terakhir", + "categoryCore": "Kategori Teras", + "noFallbackChains": "Tiada Rantaian Sandaran", + "noSearchProviders": "Tiada Penyedia Carian", + "autoBalance": "Pengimbangan Automatik", + "noModelsYet": "Belum Ada Model", + "signatureFamily": "Keluarga Tandatangan", + "externalApiCalls": "Panggilan API Luaran", + "providerOverridesDesc": "Penerangan Penggantian Penyedia", + "signatureTool": "Alat Tandatangan", + "connectionFailed": "Sambungan Gagal", + "activeLimitersPlural": "Pengehad Aktif Jamak", + "doneDesc": "Penerangan Selesai", + "down": "Tidak Beroperasi", + "noDataYet": "Belum Ada Data", + "activeProviders": "Penyedia Aktif", + "nameInvalid": "Nama Tidak Sah", + "skip": "Langkau", + "createChain": "Cipta Rantaian", + "audioSpeech": "Pertuturan Audio", + "cacheCleared": "Cache Dikosongkan", + "searchTypeNews": "Jenis Carian Berita", + "durationMillisecondsShort": "Tempoh ms", + "addOpenAICompatible": "Tambah yang Serasi dengan Open Ai", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "Dalam Baris Gilir", + "domainPlaceholder": "Ruang Letak Domain", + "durationMinutesShort": "Tempoh min", + "verifyingConnection": "Mengesahkan Sambungan", + "imageProviders": "Penyedia Imej", + "protocolToolsLabel": "Label Alat Protokol", + "queryPlaceholder": "Ruang Letak Pertanyaan", + "videoGeneration": "Penjanaan Video", + "timeRangeWeek": "Julat Masa Minggu", + "limitExhausted": "Had Telah Habis", + "failedDisable": "Gagal Dilumpuhkan", + "inMemoryNote": "Nota Dalam Memori", + "compatibleHint": "Petunjuk Keserasian", + "errorShort": "Ralat Ringkas", + "advancedHint": "Petunjuk Lanjutan", + "restoreFailed": "Pemulihan Gagal", + "searchProvidersHeading": "Tajuk Penyedia Carian", + "comboName": "Nama Gabungan", + "autoDisableDescription": "Penerangan Nyahdaya Automatik", + "embeddingsDesc": "Penerangan Pembenaman", + "operational": "Beroperasi", + "testAllApiKey": "Uji Semua Kunci API", + "backupCreated": "Sandaran Dicipta", + "errorDuringImport": "Ralat Semasa Import", + "comboDefaultsGuideHint2": "Petunjuk 2 Panduan Lalai Kombo", + "connecting": "Menyambung", + "fillModelAndProviders": "Isi Model dan Penyedia", + "syncing": "Menyegerakkan", + "resetConfirm": "Sahkan Tetapan Semula", + "trackMetrics": "Jejaki Metrik", + "successful": "Berjaya", + "recovering": "Memulihkan", + "autoDisableThreshold": "Ambang Nyahdaya Automatik", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Menyegerakkan Data", + "cloudBenefitPorts": "Port Manfaat Awan", + "compatibleProviders": "Penyedia Serasi", "freeTierProviders": "Pembekal Peringkat Percuma", "freeTierLabel": "Peringkat percuma tersedia", "freeTierProvidersDesc": "Penyedia dengan peringkat percuma — sesetengahnya memerlukan pendaftaran kunci API, yang lain tidak memerlukan bukti kelayakan langsung.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Kosongkan Cache", + "reqs": "Keperluan", + "addAnthropicCompatible": "Tambah Penyedia Serasi Anthropic", + "apiKeyProviders": "Penyedia Kunci API", + "tabsAria": "ARIA Tab", + "resetting": "Menetapkan Semula", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Sebab Sandaran Sebelum Pemulihan", + "disableCloud": "Nyahdayakan Awan", + "newProviderNameAria": "ARIA Nama Penyedia Baharu", + "passwordsMismatch": "Kata Laluan Tidak Sepadan", + "a2aQuickStartStep3": "Langkah 3 Permulaan Pantas A2A", + "liveMonitorDescriptionSuffix": "Akhiran Penerangan Pemantau Langsung", + "failedAddProvider": "Gagal Menambah Penyedia", + "addAtLeastOneProvider": "Tambah Sekurang-kurangnya Satu Penyedia", + "reasonSeparator": "Pemisah Sebab", + "zedImporting": "Zed Sedang Mengimport", + "confirmPasswordPlaceholder": "Ruang Letak Sahkan Kata Laluan", + "whatYouGet": "Apa yang Anda Dapat", + "signatureSession": "Sesi Tandatangan", + "errorCountNoCode": "Kiraan Ralat Tanpa Kod", + "testing": "Pengujian", + "providersCommaSeparated": "Penyedia Dipisahkan dengan Koma", + "exportDatabase": "Eksport Pangkalan Data", + "hitRate": "Kadar Hit", + "completionsLegacy": "Pelengkapan Legasi", + "removeModel": "Alih Keluar Model", + "timeRangeDay": "Julat Masa Hari", + "cloudRequestFailed": "Permintaan Awan Gagal", + "updatedAt": "Dikemas Kini Pada", + "monitoredProvidersHint": "Petunjuk Penyedia yang Dipantau", + "connectionSuccessful": "Sambungan Berjaya", + "latencyP50": "Kependaman P50", + "logsDeleted": "Log Dipadamkan", + "chatTester": "Penguji Sembang", + "safeSearchOff": "Carian Selamat Dimatikan", + "nameHint": "Petunjuk Nama", + "debugToggle": "Togol Nyahpepijat", + "embedding": "Pembenaman", + "issuesLabel": "Label Isu", + "optionAny": "Pilihan Mana-mana", + "maxNestingDepth": "Kedalaman Bersarang Maksimum", + "rerank": "Susun Semula Kedudukan", + "checking": "Sedang Menyemak", + "getStarted": "Mulakan", + "restoreSuccess": "Pemulihan Berjaya", + "issuesDetected": "Isu Dikesan", + "signatureCache": "Cache Tandatangan", + "modelLockouts": "Sekatan Model", + "usingCloudProxy": "Menggunakan Proksi Awan", + "loadingHealth": "Memuatkan Status Kesihatan", + "providerOverrides": "Penggantian Penyedia", + "audioTranscriptionDesc": "Perihalan Transkripsi Audio", + "learnedFromHeaders": "Dipelajari daripada Pengepala", + "totalRequests": "Jumlah Permintaan", + "cloudUnstableNote": "Nota Ketidakstabilan Awan", "gamificationAdmin": "Pentadbir gamification", "monitorAnomaliesAndHealth": "Pantau anomali dan kesihatan sistem", "flaggedAnomalies": "Anomali Dibenderakan", @@ -704,7 +704,7 @@ "apiKey": "Kunci API", "xpLastHour": "XP (1j)", "zScore": "Skor Z", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Mencurigakan", "tokensCommunityServers": "Pelayan Komuniti", "tokensServerNamePlaceholder": "Nama pelayan", "tokensApiKeyPlaceholder": "kunci API", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Memuatkan lagi…", "recommended": "Disyorkan", "understand": "Saya faham", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", + "batchConceptTitle": "Pemprosesan kelompok", + "batchConceptSubtitle": "Proses beribu-ribu permintaan secara tak segerak pada kos ~50% (tempoh 24 jam). Sesuai untuk penilaian, pengelasan dan pembenaman.", + "batchConceptHowItWorks": "Cara ia berfungsi", + "batchConceptBenefit50pct": "Diskaun 50% untuk token input + output", + "batchConceptAsync24h": "Tak segerak dengan tempoh penyelesaian 24j", + "batchConceptUseCases": "Terbaik untuk pengelasan pukal, penilaian dan pembenaman", + "batchHeaderSubtitle": "Jalankan banyak permintaan sebagai satu tugas", + "batchStep1": "1 · Muat naik JSONL", + "batchStep1Desc": "Tambah permintaan", + "batchStep2": "2 · Cipta kelompok", + "batchStep2Desc": "Jalankan tugas", + "batchStep3": "3 · Dapatkan hasil", + "batchStep3Desc": "Muat turun output", + "filesConceptTitle": "Fail kelompok", + "filesConceptSubtitle": "Fail JSONL yang digunakan oleh kelompok: permintaan input, hasil dan ralat.", + "filesConceptInput": "Input — JSONL anda dengan satu permintaan bagi setiap baris", + "filesConceptOutput": "Output — hasil daripada permintaan yang selesai", + "filesConceptError": "Ralat — permintaan yang gagal", + "filesConceptRetention": "Pengekalan: 30 hari secara lalai (29 hari di Anthropic)", + "wizardTitle": "Kelompok baharu", + "wizardClose": "Tutup", + "wizardNext": "Seterusnya", + "wizardBack": "Kembali", + "wizardCancel": "Batal", + "wizardCreate": "Cipta kelompok", + "wizardCreating": "Sedang mencipta…", + "wizardStep1Destination": "Destinasi", "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", + "wizardStep3Validate": "Sahkan", + "wizardStep4Cost": "Kos & cipta", + "wizardProviderLabel": "Penyedia", + "wizardEndpointLabel": "Titik akhir", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (kami akan menukarnya)", + "wizardDropOrPick": "Lepaskan fail atau klik untuk memilih", + "wizardCsvMappingTitle": "Petakan lajur CSV → medan permintaan", + "wizardCsvMappingAddField": "Tambah medan", "wizardCsvNoColumns": "Tiada lajur dikesan dalam pengepala CSV.", "wizardCsvIgnoreColumn": "— abaikan —", "wizardCsvCustomIdMapped": "custom_id dipetakan", @@ -846,114 +846,114 @@ "wizardCsvApplyMapping": "Gunakan pemetaan", "wizardCsvRowsParsed": "{count} baris dihuraikan", "wizardCsvRowsSkipped": "{count} baris dilangkau", - "wizardCsvRowError": "Row {row}: {reason}", - "wizardValidationOk": "All lines valid", - "wizardValidating": "Validating…", - "wizardValidationParseFailed": "Validation failed — could not parse content.", - "wizardValidationSummary": "{lines} lines · {ids} unique custom_ids", + "wizardCsvRowError": "Baris {row}: {reason}", + "wizardValidationOk": "Semua baris sah", + "wizardValidating": "Sedang mengesahkan…", + "wizardValidationParseFailed": "Pengesahan gagal — kandungan tidak dapat dihuraikan.", + "wizardValidationSummary": "{lines} baris · {ids} custom_id unik", "wizardValidationErrorCount": "{count, plural, one {# ralat} other {# ralat}} ditemui", - "wizardValidationDuplicateIds": "Duplicate custom_ids detected:", - "wizardValidationFirstErrors": "Errors (first {count}):", - "wizardValidationLine": "Line {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", + "wizardValidationDuplicateIds": "custom_id pendua dikesan:", + "wizardValidationFirstErrors": "Ralat ({count} pertama):", + "wizardValidationLine": "Baris {line}", + "wizardValidationErrors": "Ralat pengesahan", + "wizardValidationPreview": "Pratonton (5 permintaan pertama)", + "wizardValidationSamplingNote": "Fail bersaiz besar — disahkan melalui pensampelan (1000 baris pertama + 100 baris terakhir). Pengesahan penuh dijalankan pada pelayan.", + "wizardCostSync": "Kos segerak", + "wizardCostBatch": "Kos kelompok (-50%)", + "wizardCostSavings": "Penjimatan", + "wizardCostEstimatedNotice": "Anggaran kos — pengebilan sebenar mungkin berbeza.", + "wizardErrorUpload": "Gagal memuat naik fail. Cuba lagi.", + "wizardErrorCreate": "Gagal mencipta kelompok. Cuba lagi.", + "wizardEmptyProviders": "Sambungkan penyedia yang menyokong kelompok (OpenAI, Anthropic, atau Gemini) untuk mencipta kelompok.", + "uploadModalTitle": "Muat naik fail kelompok", + "uploadModalDropOrPick": "Lepaskan fail .jsonl atau klik untuk memilih", + "uploadModalUpload": "Muat naik", + "uploadModalCancel": "Batal", + "uploadModalError": "Muat naik gagal. Cuba lagi.", + "uploadModalSuccess": "Dimuat naik", + "uploadModalSizeLimit": "Maksimum 512 MB", + "batchListNewButton": "Kelompok baharu", + "batchListAutoRefresh": "Muat semula automatik setiap 30 saat", + "batchListCostColumn": "Kos", + "batchActionCancel": "Batal", + "batchActionDownloadOutput": "Muat turun output", + "batchActionDownloadErrors": "Muat turun ralat", + "batchActionRetry": "Cuba semula yang gagal", + "batchActionRetryConfirm": "Cuba semula {n} permintaan yang gagal? Kos akhir bergantung pada token sebenar yang digunakan.", + "expirationBadgeCritical": "Kritikal", + "expirationBadgeWarning": "Tidak lama lagi", + "expirationBadgeNormal": "Belum selesai", + "expirationBadgeExpired": "Tamat tempoh", + "filesListUploadButton": "Muat naik", + "filesListUsedByColumn": "Digunakan oleh", + "filesListUsedByNone": "Tiada", "filesListUsedByRoleInput": "input", "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "filesListUsedByRoleError": "ralat", + "filesListSizeColumn": "Saiz", + "batchListProgressPartial": "(separa)", + "batchListProviderColumn": "Penyedia", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", + "batchListProviderOther": "Lain-lain", + "batchListTitle": "Kelompok", + "batchListCount": "{count} kelompok", + "batchListRemovingCompleted": "Mengalih keluar…", + "batchListRemoveCompleted": "Pengalihan keluar selesai", "batchListTableStatus": "Status", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Titik akhir", "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableProgress": "Kemajuan", + "batchListTableCreated": "Dicipta", + "batchListTableExpires": "Tamat tempoh", + "batchListLoading": "Memuatkan…", + "batchListEmpty": "Tiada kelompok ditemukan", + "batchListValidating": "Mengesahkan…", + "batchStatusAll": "Semua status", + "batchStatusInProgress": "Sedang diproses", + "batchStatusValidating": "Mengesahkan", + "batchStatusFinalizing": "Memuktamadkan", + "batchStatusCompleted": "Selesai", + "batchStatusFailed": "Gagal", + "batchStatusCancelled": "Dibatalkan", + "batchStatusCancelling": "Sedang membatalkan", + "batchStatusExpired": "Tamat tempoh", + "batchStatusCompletedWithFailures": "selesai dengan kegagalan", + "batchStatusInProgressWithFailures": "sedang diproses (dengan kegagalan)", + "batchStatusFinalizingWithFailures": "sedang dimuktamadkan (dengan kegagalan)", + "batchStatusCancelledWithFailures": "dibatalkan dengan kegagalan", + "batchStatusExpiredWithFailures": "tamat tempoh (separa)", + "wizardCostEstimating": "Menganggarkan kos…", + "wizardCostRequests": "Permintaan", + "wizardCostInputTok": "token input", + "wizardCostOutputTok": "token output", + "wizardCostWindow": "Tetingkap", + "wizardDestinationSelectProvider": "Pilih penyedia…", + "wizardDestinationSelectModel": "Pilih model…", + "wizardDestinationConnectProvider": "Sambungkan penyedia", + "batchListBatchCreated": "Kelompok {id} dicipta — memuat semula senarai…", + "batchListBatchCreatedDismiss": "Tutup", + "batchListRefreshing": "Memuat semula…", + "batchListRefresh": "Muat semula", + "uploadFileModalRemove": "Alih keluar", + "uploadFileModalUploading": "Memuat naik…", + "wizardInputReading": "Membaca fail…", + "wizardInputReady": "Sedia", + "wizardInputLargeFileLabel": "Fail besar — pengesahan secara pensampelan", + "wizardInputCsvJsonlReady": "JSONL dijana — sedia untuk disahkan.", + "wizardInputLargeFileWarning": "Fail besar dikesan — pengesahan dijalankan secara pensampelan (5 MB pertama + 100 KB terakhir). Pengesahan penuh dilakukan di sebelah pelayan.", + "wizardCostWindow24h": "Tempoh penyiapan 24 jam", + "wizardValidationFieldsOk": "medan wajib sah", + "filesListDelete": "Padam", + "filesListDownload": "Muat turun", + "batchDetailActionCancel": "Batalkan kelompok", + "batchDetailActionRetry": "Cuba semula permintaan yang gagal", + "batchDetailCancelling": "Membatalkan…", + "batchDetailRetrying": "Menyediakan percubaan semula…", + "batchDetailCancelConfirm": "Batalkan kelompok ini? Permintaan yang sedang diproses akan dihentikan.", + "batchActionCancelError": "Gagal membatalkan kelompok. Cuba lagi.", + "batchActionRetryError": "Gagal mencuba semula permintaan yang gagal. Cuba lagi.", + "batchConceptRetentionNote": "Fail hasil dan ralat disimpan selama 30 hari (Anthropic: 29 hari)", "batchFilesSizeColumn": "Saiz", "toggleNoAuthProvider": "Togol penyedia tanpa pengesahan", "loadingModels": "Memuatkan model…", @@ -985,17 +985,17 @@ "batchFilePreviewTruncated": "Menunjukkan {shown} baris pertama ({total} jumlah baris)", "batchFileDownloadFull": "Muat Turun Fail Penuh" }, - "disabled": "Disabled", - "featureFlagOmnirouteEmergencyFallbackDescription": "Route budget-exhausted requests to the emergency free fallback provider/model.", - "featureFlagArenaEloSyncEnabledDescription": "Enable periodic Arena AI leaderboard ELO sync for model intelligence rankings.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "disabled": "Dilumpuhkan", + "featureFlagOmnirouteEmergencyFallbackDescription": "Halakan permintaan yang telah kehabisan belanjawan kepada penyedia/model sandaran percuma kecemasan.", + "featureFlagArenaEloSyncEnabledDescription": "Dayakan penyegerakan ELO papan kedudukan Arena AI secara berkala untuk kedudukan kecerdasan model.", + "featureFlagUniversalContextHandoffEnabledDescription": "Jana dan masukkan ringkasan perbualan apabila penghalaan kombo bertukar model. Lumpuhkan untuk mengendalikan pertukaran model secara berasingan dan menghalang permintaan penyerahan latar belakang bagi semua kombo sedia ada dan akan datang.", "featureFlagExposeCcDiscoveryAliasesDescription": "Iklankan claude/<provider>/<model> mirror ids pada /v1/models supaya senarai penemuan model gerbang Claude Code termasuk model bukan Claude. Amaran: menggandakan entri katalog untuk semua klien apabila diaktifkan secara global.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Suis utama untuk alias get laluan no-think/<provider>/<model>. Hidup (lalai): /v1/models memaparkan varian tanpa penaakulan bagi setiap model Claude berkeupayaan menaakul yang layak, dan id no-think/ yang dihantar dalam permintaan akan dipadankan semula kepada model sebenar dengan penaakulan disekat. Mati: tiada varian dipaparkan dan id no-think/ dianggap seperti mana-mana id model tidak diketahui yang lain. Pilihan ikut serta/tarik diri ModelSpec.noThinkingAlias bagi setiap model masih terpakai semasa tetapan ini dihidupkan.", "featureFlagChatVirtualLanesEnabledDescription": "Aktifkan lorong kemasukan maya adaptif setiap-tenant untuk penghantaran pembekal (#9654): lonjakan satu tenant tidak lagi memberikan 503 kepada tenant lain. Pemboleh ubah persekitaran OMNIROUTE_CHAT_VIRTUAL_LANES mengatasi tetapan papan pemuka ini; perubahan berkuat kuasa apabila pelayan dimulakan semula.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Halaman penyedia papan pemuka: tunjukkan lencana Percuma hanya pada isyarat yang disokong oleh penyedia — menggugurkan heuristik nama paparan, medan percuma bukan boolean dan akhiran :free pada penyedia berdaftar tanpa peringkat percuma yang didokumenkan. Mati mengekalkan peraturan lencana terdahulu.", + "featureFlagProxySkipRecentlyFailedDescription": "Kumpulan proksi dan penggiliran opencode bagi setiap akaun akan berhenti menyediakan semula proksi yang baru sahaja gagal (menolak probe TCP atau menerima 429 melaluinya) untuk tempoh setiap proses yang berganda pada setiap kegagalan berulang, sehingga had maksimum. Tiada status proksi direkodkan; apabila setiap calon diketepikan, pilihan tidak berubah. Dimatikan secara lalai: susunan pemilihan adalah sama seperti penggiliran biasa.", + "featureFlagProxyPoolEgressObservationDescription": "Tunjukkan, di bawah kumpulan proksi dalam papan pemuka, bilangan IP keluar yang diperhatikan telah digunakan oleh ahlinya sepanjang 24 jam yang lalu, bilangan sambungan yang menggunakannya dan bilangan terbanyak yang dilihat di sebalik satu IP. Baca sahaja, dikira daripada log proksi dan tidak pernah digunakan untuk penghalaan. Dimatikan secara lalai: editor kumpulan tidak berubah dan laluan pemerhatian memberikan null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Dalam imbasan kesihatan proksi, benarkan probe yang ditolak oleh sasaran (401/403/429: proksi telah menyampaikan permintaan, tetapi destinasi menolak IP keluar ini) menetapkan semula rentetan kegagalan berturut-turut proksi, seperti probe yang berjaya disediakan. Dimatikan secara lalai: penolakan kekal neutral dan mengekalkan rentetan tersebut. 5xx kekal tidak muktamad dalam kedua-dua keadaan dan penolakan tidak akan mengalih keluar, menyahdayakan atau mengaktifkan semula proksi.", "sidebar": { "home": "Rumah", "dashboard": "Papan pemuka", @@ -1011,15 +1011,15 @@ "media": "Media", "settings": "tetapan", "translator": "Penterjemah", - "playground": "Playground", - "searchTools": "Search Tools", + "playground": "Ruang Uji", + "searchTools": "Alat Carian", "agents": "Ejen", "cloudAgents": "Agen Awan", - "memory": "Memory", - "skills": "Skills", + "memory": "Memori", + "skills": "Kemahiran", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", - "chaosConfig": "Chaos Mode", + "chaosConfig": "Mod Kecelaruan", "docs": "Dokumen", "issues": "Isu", "endpoints": "Titik Akhir", @@ -1029,7 +1029,7 @@ "embeddedServices": "Perkhidmatan Terbenam", "embeddedServicesSubtitle": "Urus perkhidmatan proksi tempatan", "logs": "Log", - "webhooks": "Webhooks", + "webhooks": "Webhook", "webhooksSubtitle": "Dapatkan pemberitahuan tentang acara", "logExport": "Eksport log", "logExportSubtitle": "Hantar log panggilan ke luar", @@ -1055,231 +1055,231 @@ "serverDisconnectedMsg": "Pelayan proksi telah dihentikan atau dimulakan semula.", "expandSidebar": "Kembangkan bar sisi", "collapseSidebar": "Runtuhkan bar sisi", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themes": "Tema", + "presetColors": "Warna popular", + "createTheme": "Cipta tema", + "chooseColor": "Pilih satu warna", + "themeCoral": "Karang", + "themeBlue": "Biru", + "themeRed": "Merah", + "themeGreen": "Hijau", + "themeViolet": "Ungu lembayung", + "themeOrange": "Jingga", + "themeCyan": "Sian", "cliToolsShort": "Alat", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Tugas Kelompok", + "themeSystem": "Sistem Tema", + "whitelabelingDesc": "Perihalan Penjenamaan Label Putih", + "switchThemes": "Tukar Tema", + "themeAccentDesc": "Perihalan Warna Aksen Tema", + "uploadFavicon": "Muat Naik Favicon", + "themeDark": "Tema Gelap", + "customLogoDesc": "Perihalan Logo Tersuai", + "sidebarVisibilityToggle": "Togol Keterlihatan Bar Sisi", + "themeAccent": "Aksen Tema", + "resetFavicon": "Tetapkan Semula Favicon", + "whitelabeling": "Penjenamaan Label Putih", + "darkMode": "Mod Gelap", + "uploadLogo": "Muat Naik Logo", + "themeLight": "Tema Cerah", + "appName": "Nama Aplikasi", + "appNameDesc": "Perihalan Nama Aplikasi", + "resetLogo": "Tetapkan Semula Logo", + "customFavicon": "Favicon Tersuai", + "hideHealthLogs": "Sembunyikan Log Kesihatan", + "customLogo": "Logo Tersuai", + "appearance": "Penampilan", + "themeSelectionAria": "ARIA Pemilihan Tema", + "themeCreate": "Cipta Tema", + "customFaviconDesc": "Perihalan Favicon Tersuai", + "logoPreview": "Pratonton Logo", + "themeCustom": "Tema Tersuai", + "hideHealthLogsDesc": "Perihalan Sembunyikan Log Kesihatan", + "faviconPreview": "Pratonton Favicon", + "changelog": "Log Perubahan", + "contextSection": "Konteks & Cache", + "contextCaveman": "Manusia Gua", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Gabungan Enjin", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Tetapan Pemampatan", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", - "combosLiveSubtitle": "Live routing cascade", + "combosLive": "Studio Gabungan", + "combosLiveSubtitle": "Lata penghalaan langsung", "compressionStudio": "Compression Studio", "compressionExclusions": "Pengecualian", - "contextSettingsSubtitle": "Global defaults", - "contextHeadroomSubtitle": "Tabular compaction", - "contextSessionDedupSubtitle": "Cross-turn deduplication", - "contextCcrSubtitle": "Retrieve markers", - "contextLlmlinguaSubtitle": "Semantic pruning", - "contextLiteSubtitle": "Fast whitespace cleanup", - "contextAggressiveSubtitle": "Summary and aging", - "contextUltraSubtitle": "Heuristic pruning", - "contextOmniglyphSubtitle": "Context as images", - "compressionStudioSubtitle": "Live engine cascade", + "contextSettingsSubtitle": "Tetapan lalai global", + "contextHeadroomSubtitle": "Pemadatan berjadual", + "contextSessionDedupSubtitle": "Penyahduplikasian rentas giliran", + "contextCcrSubtitle": "Dapatkan semula penanda", + "contextLlmlinguaSubtitle": "Pemangkasan semantik", + "contextLiteSubtitle": "Pembersihan ruang kosong pantas", + "contextAggressiveSubtitle": "Peringkasan dan penuaan", + "contextUltraSubtitle": "Pemangkasan heuristik", + "contextOmniglyphSubtitle": "Konteks sebagai imej", + "compressionStudioSubtitle": "Lata enjin langsung", "compressionExclusionsSubtitle": "Pintas per-model/endpoint", - "chaosConfigSubtitle": "Multi-model parallel execution", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "chaosConfigSubtitle": "Pelaksanaan berbilang model secara selari", + "routingSection": "Penghalaan", + "protocolsSection": "Protokol", + "agentsAiSection": "Ejen & AI", + "cacheContextSection": "Cache & Konteks", + "analyticsSection": "Analitik", + "costsSection": "Kos", + "monitoringSection": "Pemantauan", + "auditSecuritySection": "Audit & Keselamatan", + "devtoolsSection": "Alat Pembangun", + "configurationSection": "Konfigurasi", + "aiFeaturesSection": "Ciri AI", "mcp": "MCP", "a2a": "A2A", - "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", - "costsFreeTiers": "Free-Tier Budget", - "costsFreeTiersSubtitle": "Monthly free-token allowances", - "freeProviderRankings": "Free Provider Rankings", - "freeProviderRankingsSubtitle": "Best free providers ranked by model ELO scores", + "plugins": "Pemalam", + "apiEndpoints": "Titik Akhir API", + "batchFiles": "Fail", + "analyticsEvals": "Penilaian", + "analyticsSearch": "Cari", + "analyticsUtilization": "Penggunaan", + "analyticsComboHealth": "Kesihatan Kombo", + "analyticsCompression": "Pemampatan", + "costsBudget": "Bajet", + "costsFreeTiers": "Bajet Peringkat Percuma", + "costsFreeTiersSubtitle": "Elaun token percuma bulanan", + "freeProviderRankings": "Kedudukan Penyedia Percuma", + "freeProviderRankingsSubtitle": "Penyedia percuma terbaik berdasarkan skor ELO model", "radar": "Katalog Radar", "radarSubtitle": "Katalog model percuma yang diperkaya komuniti", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Perkongsian Kuota", + "costsPricing": "Harga", + "logsProxy": "Log Proksi", + "logsConsole": "Konsol", + "logsActivity": "Aktiviti", + "auditMcp": "Audit MCP", "auditA2a": "Audit A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", - "settingsAccessTokens": "Access Tokens", + "settingsAppearance": "Penampilan", + "settingsAi": "Tetapan AI", + "settingsSecurity": "Keselamatan", + "settingsAccessTokens": "Token Akses", "settingsFeatureFlags": "Bendera Ciri", "settingsCache": "Cache", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", - "modelLockout": "Model Lockout", - "settingsAdvanced": "Advanced", + "settingsAuthz": "Kebenaran", + "settingsRouting": "Penghalaan", + "settingsResilience": "Daya Tahan", + "modelLockout": "Sekatan Model", + "settingsAdvanced": "Lanjutan", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Kuota Penyedia", + "providerQuota": "Kuota Penyedia", + "runtime": "Masa Jalan", + "consoleLogs": "Log Konsol", + "logsTimeline": "Garis Masa", "logsTimelineSubtitle": "Garis Masa Permintaan Visual", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Perbualan", + "conversationsSubtitle": "Perbualan agentik berbilang giliran", + "globalRouting": "Penghalaan Global", + "mitmProxy": "Proksi MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", + "agenticFeaturesSection": "Ciri Agentik", + "otherFeaturesSection": "Ciri Lain", + "compressionContextGroup": "Konteks Pemampatan", + "gamificationGroup": "Gamifikasi", + "toolsGroup": "Alat", + "integrationsGroup": "Integrasi", + "proxyGroup": "Proksi", + "costsParametersGroup": "Parameter Kos", "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", - "providerStats": "Provider Stats", - "providerStatsSubtitle": "Latency and performance metrics", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", - "pluginsSubtitle": "Plugin marketplace & installs", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "batchGroup": "Kelompok", + "homeSubtitle": "Gambaran keseluruhan papan pemuka", + "providersSubtitle": "Urus penyedia AI", + "quotaTrackerSubtitle": "Jejak had penggunaan", + "providerQuotaSubtitle": "Jejak had penggunaan penyedia", + "runtimeSubtitle": "Ketahanan masa nyata & sesi", + "contextCombosSubtitle": "Gabungkan enjin pemampatan", + "cliToolsSubtitle": "Konfigurasikan persekitaran masa jalan CLI", + "agentsSubtitle": "Urus ejen setempat", + "cloudAgentsSubtitle": "Urus ejen berasaskan awan", + "apiEndpointsSubtitle": "Dedahkan titik akhir tersuai", + "proxySubtitle": "Tetapan proksi HTTP", + "mitmProxySubtitle": "Pemintasan MITM", + "oneProxySubtitle": "Gerbang proksi awam", + "leaderboard": "Carta kedudukan", + "profile": "Profil", + "tokens": "Token", + "gamificationAdmin": "Pentadbir Gamifikasi", + "leaderboardSubtitle": "Kedudukan dan pencapaian", + "profileSubtitle": "Akaun dan keutamaan", + "tokensSubtitle": "Penggunaan token dan belanjawan", + "gamificationAdminSubtitle": "Pemantauan anomali dan antipenipuan", + "usageSubtitle": "Statistik trafik dan penggunaan", + "analyticsComboHealthSubtitle": "Kebolehpercayaan sasaran gabungan", + "analyticsUtilizationSubtitle": "Penggunaan penyedia", + "costsSubtitle": "Pecahan perbelanjaan", + "cacheSubtitle": "Kadar kejayaan cache", + "analyticsCompressionSubtitle": "Statistik penjimatan token", + "analyticsSearchSubtitle": "Analitik alat carian", + "analyticsEvalsSubtitle": "Keputusan set penilaian", + "providerStats": "Statistik Penyedia", + "providerStatsSubtitle": "Metrik kependaman dan prestasi", + "logsSubtitle": "Log aplikasi", + "logsProxySubtitle": "Log trafik proksi", + "consoleLogsSubtitle": "Output konsol", + "logsActivitySubtitle": "Log aktiviti pengguna", + "healthSubtitle": "Pemeriksaan kesihatan sistem", + "costsPricingSubtitle": "Peraturan harga mengikut model", + "costsBudgetSubtitle": "Had belanjawan", + "costsQuotaShareSubtitle": "Kongsi kuota penyedia merentas kunci", + "auditLogSubtitle": "Audit kebenaran", + "auditMcpSubtitle": "Audit pelayan MCP", + "auditA2aSubtitle": "Audit protokol A2A", + "translatorSubtitle": "Penukaran format", + "playgroundSubtitle": "Uji gesaan secara langsung", + "searchToolsSubtitle": "Cari daftar alat", + "memorySubtitle": "Memori ejen berterusan", + "omniSkillsSubtitle": "Daftar kemahiran sandbox", + "agentSkillsSubtitle": "Daftar kemahiran A2A", + "mcpSubtitle": "Kawalan pelayan MCP", + "a2aSubtitle": "Pelayan protokol A2A", + "pluginsSubtitle": "Pasaran pemalam & pemasangan", + "mediaSubtitle": "Fail media dalam cache", + "batchFilesSubtitle": "Fail input/output kelompok", + "settingsSubtitle": "Semua tetapan", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", - "settingsAccessTokensSubtitle": "Scoped CLI tokens for remote mode", + "settingsAppearanceSubtitle": "Tema dan susun atur", + "settingsAiSubtitle": "Tetapan lalai tingkah laku AI", + "globalRoutingSubtitle": "Peraturan penghalaan global", + "settingsResilienceSubtitle": "Percubaan semula dan pemutus litar", + "settingsAdvancedSubtitle": "Pilihan pengguna lanjutan", + "settingsSecuritySubtitle": "Pengesahan dan penyulitan", + "settingsAccessTokensSubtitle": "Token CLI berskop untuk mod jauh", "settingsFeatureFlagsSubtitle": "Togol keupayaan sistem", "settingsCacheSubtitle": "Katalog Model dan Cache Respons", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", - "settingsAuthzSubtitle": "Route inventory and bypass policy", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", - "costsQuotaPlans": "Plans & Quotas", - "costsQuotaPlansSubtitle": "Configure plans by provider", - "activity": "Activity", + "settingsSidebar": "Bar sisi", + "settingsSidebarSubtitle": "Sesuaikan susun atur bar sisi", + "settingsAuthzSubtitle": "Inventori laluan dan dasar pintasan", + "docsSubtitle": "Dokumentasi", + "issuesSubtitle": "Laporkan pepijat", + "changelogSubtitle": "Nota keluaran", + "costsQuotaPlans": "Pelan & Kuota", + "costsQuotaPlansSubtitle": "Konfigurasikan pelan mengikut penyedia", + "activity": "Aktiviti", "activitySubtitle": "Suapan mesra acara baru-baru ini", "logsGroup": "Log", "systemGroup": "Sistem", "costsOverview": "Gambaran Keseluruhan", "costsOverviewSubtitle": "Analisis kos disatukan", - "agentBridge": "Agent Bridge", + "agentBridge": "Jambatan Ejen", "agentBridgeSubtitle": "Pintas trafik ejen IDE", "trafficInspector": "Pemeriksa Trafik", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Periksa trafik permintaan dan respons daripada aplikasi anda", + "trafficInspectorPurpose": "Lihat dengan tepat perkara yang dihantar oleh aplikasi anda kepada dan diterima daripada penyedia AI. Berfungsi dengan mana-mana klien yang serasi dengan OpenAI.", "cliCode": "Kod CLI", "cliCodeSubtitle": "Alatan kod yang menghala ke OmniRoute", "cliAgents": "Ejen CLI", @@ -1318,7 +1318,7 @@ "noResults": "Tiada hasil" }, "webhooks": { - "title": "Webhooks", + "title": "Webhook", "description": "Konfigurasikan panggilan balik HTTP untuk acara sistem.", "configuredWebhooks": "Webhook yang dikonfigurasikan", "configuredWebhooksDesc": "Urus titik akhir penghantaran, acara yang dilanggan, status dan hantaran ujian.", @@ -1345,7 +1345,7 @@ "refresh": "Muat semula", "loading": "Memuatkan webhook...", "never": "tidak pernah", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {tiada kegagalan} one {# kegagalan} other {# kegagalan}}", "testWebhook": "Hantar Ujian", "testSuccess": "Ujian webhook berjaya dihantar.", "testFailed": "Ujian webhook gagal.", @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "Alat Terbaik" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "Tema", + "description": "Pilih tema praset atau cipta tema anda sendiri dengan satu warna", + "presetColors": "Warna popular", + "customTheme": "Tema tersuai", + "customThemeDesc": "Klik cipta tema dan pilih satu warna", + "createTheme": "Cipta tema", + "activePreset": "Tema aktif" }, "header": { "logout": "Log keluar", @@ -1591,63 +1591,63 @@ "cliToolsDescription": "Konfigurasikan alatan CLI", "home": "Rumah", "homeDescription": "Selamat datang ke OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Titik akhir", + "endpointDescription": "Urus titik akhir proksi, MCP, A2A dan titik akhir API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Pengurusan dan alatan pelayan Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Tugas dan kebolehcerapan protokol Agent-to-Agent", "settings": "tetapan", "settingsDescription": "Urus pilihan anda", "openaiCompatible": "Serasi OpenAI", "anthropicCompatible": "Serasi Anthropic", "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "mediaDescription": "Jana imej, video dan muzik", + "themes": "Tema", + "themesDescription": "Pilih tema warna untuk seluruh panel papan pemuka", + "costsDescription": "Jejaki perbelanjaan, analisis trend dan urus belanjawan AI anda merentas semua penyedia", + "cacheDescription": "Pantau kecekapan cache gesaan penyedia dan penggunaan semula respons semantik setempat.", + "limitsDescription": "Konfigurasikan had kadar dan kuota bagi setiap kunci API dan penyedia", + "runtimeDescription": "Kebolehcerapan masa jalan secara langsung — pemutus litar, tempoh bertenang, sekatan model, sesi dan amaran kuota", + "apiManagerDescription": "Urus kunci API dan kawalan akses untuk tika OmniRoute anda", + "batchDescription": "Proses jumlah permintaan yang besar secara tak segerak dengan panggilan API berkelompok", + "contextCavemanDescription": "Pemampatan mesej berasaskan peraturan, pek bahasa, analitik dan kawalan mod output.", + "contextRtkDescription": "Pemampatan peka perintah untuk output alat, log terminal dan hasil binaan.", + "contextCombosDescription": "Tentukan cara enjin digabungkan untuk senario penghalaan yang berbeza.", + "changelogDescription": "Ikuti perkembangan terkini tentang ciri dan pengumuman platform.", + "agentsDescription": "Urus dan konfigurasikan alat ejen AI: Codex, Devin, Jules, dan ejen tersuai", + "cloudAgentsDescription": "Orkestrakan ejen AI berasaskan awan dengan penjejakan tugas secara langsung dan kelulusan pelan", + "memoryDescription": "Memori perbualan berterusan dengan carian semantik dan pengindeksan teks penuh FTS5", + "skillsDescription": "Pasang dan urus kemahiran kotak pasir untuk pelaksanaan gesaan dan alat secara automatik", + "agentSkillsDescription": "Katalog kemahiran sedia ejen dengan penyalinan URL satu klik untuk penyepaduan klien AI", + "translatorDescription": "Terjemah dan uji gesaan merentas format API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Uji gesaan secara interaktif dengan respons penyedia secara langsung dan pemeriksaan format", + "searchToolsDescription": "Analitis carian, pecahan mengikut penyedia, kadar padanan cache, dan penjejakan kos", + "logsDescription": "Log permintaan masa nyata, jejak ralat, dan pemeriksa peristiwa penstriman", + "auditDescription": "Jejak audit pematuhan bagi penggunaan kunci API, panggilan alat MCP, dan peristiwa dasar", + "webhooksDescription": "Konfigurasikan titik akhir webhook untuk menerima pemberitahuan peristiwa masa nyata", + "healthDescription": "Gambaran keseluruhan kesihatan sistem: penyedia, pemutus litar, had kadar, dan pangkalan data", + "proxyDescription": "Konfigurasikan tetapan proksi huluan untuk sambungan keluar penyedia", + "apiEndpointsDescription": "Urus konfigurasi titik akhir API tersuai dan penggantian penghalaan", + "batchFilesDescription": "Semak imbas dan urus fail output serta hasil kerja kelompok", + "analyticsEvalsDescription": "Hasil penilaian model dan penanda aras prestasi", + "analyticsSearchDescription": "Analitis pertanyaan carian, kadar padanan cache, dan penjejakan kos", + "analyticsUtilizationDescription": "Metrik penggunaan penyedia dan perancangan kapasiti", + "analyticsComboHealthDescription": "Kesihatan dan prestasi masa nyata bagi konfigurasi penghalaan gabungan", + "analyticsCompressionDescription": "Analitis pemampatan konteks dan penjimatan token", + "costsBudgetDescription": "Had belanjawan dan amaran perbelanjaan bagi setiap kunci API dan penyedia", + "costsPricingDescription": "Konfigurasi harga tersuai untuk pengiraan kos token", + "logsProxyDescription": "Log permintaan proksi huluan dan pemeriksaan trafik", + "logsConsoleDescription": "Output konsol aplikasi dan log penyahpepijatan", + "logsActivityDescription": "Jejak audit tindakan pengguna dan peristiwa sistem", + "auditMcpDescription": "Jejak audit panggilan alat MCP dan rekod pematuhan", "auditA2a": "Audit A2A", "auditA2aDescription": "Jejak audit pelaksanaan tugas A2A, peralihan negeri dan rekod permohonan kemahiran", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Tema, penjenamaan, dan penyesuaian visual", + "settingsAiDescription": "Tingkah laku AI, belanjawan pemikiran, penglihatan, dan tetapan memori", "settingsCacheDescription": "TTL untuk entri cache katalog model", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Tetapan pengesahan, pemberian kuasa, dan kawalan akses", "featureFlags": "Bendera Ciri", "featureFlagsDescription": "Keupayaan sistem kawalan dan ciri eksperimen", "featureFlagsActive": "{count} aktif", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Tiada bendera yang sepadan dengan carian anda", "featureFlagsSaved": "Bendera dikemas kini", "featureFlagsError": "Gagal mengemas kini bendera", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Peraturan penghalaan, alias model, tetapan lalai gabungan, dan tetapan degradasi", + "settingsResilienceDescription": "Konfigurasi pemutus litar, percubaan semula, dan sandaran", + "settingsAdvancedDescription": "Peraturan muatan lanjutan, had permintaan, dan tetapan API proksi", + "mitmProxyDescription": "Konfigurasikan tetapan proksi MITM untuk pemeriksaan trafik dan penyahpepijatan", + "oneProxyDescription": "Konfigurasikan tetapan 1Proxy untuk perangkaian proksi lanjutan", "omniSkillsDescription": "Pasang dan urus kemahiran kotak pasir untuk pelaksanaan gesaan dan alat automatik" }, "cloudSyncStatus": { @@ -1708,7 +1708,7 @@ "console": "Konsol", "logger": "Pencatat Log", "translator": "Penterjemah", - "playground": "Playground", + "playground": "Ruang Uji", "add": "Tambah", "edit": "Sunting", "apiKeys": "Kunci API", @@ -1724,7 +1724,7 @@ "analytics": "Analitis", "costs": "Kos", "health": "Kesihatan", - "runtime": "Runtime", + "runtime": "Masa jalan", "webhooks": "Webhook", "home": "Utama", "activity": "Aktiviti", @@ -1742,7 +1742,7 @@ "media": "Media", "cache": "Cache", "changelog": "Log Perubahan", - "chaos": "Chaos", + "chaos": "Kekacauan", "cloudAgents": "Ejen Awan", "live": "Langsung", "studio": "Studio", @@ -1762,7 +1762,7 @@ "discovery": "Penemuan", "freeProviderRankings": "Kedudukan Penyedia Percuma", "radar": "Radar", - "setup": "Setup", + "setup": "Persediaan", "freeTiers": "Tier Percuma", "gamification": "Gamifikasi", "leaderboard": "Papan Pendahulu", @@ -1812,7 +1812,7 @@ "reportIssue": "Laporkan isu", "activeError": "{active} aktif · {errors} ralat", "topologyLegendActive": "Aktif", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Terkini", "topologyLegendError": "ralat", "oauthLabel": "OAuth", "apiKeyLabel": "Kunci API", @@ -1826,11 +1826,11 @@ "updateStarted": "Kemas kini bermula...", "reloadingPageAutomatically": "Memuat semula halaman secara automatik...", "providerTopology": "Topologi Pembekal", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Permintaan Terkini", + "recentRequestsEmpty": "Belum ada permintaan.", + "recentRequestsModel": "Model", + "recentRequestsTokens": "Masuk / Keluar", + "recentRequestsWhen": "Bila", "downloadDmg": "Muat Turun DMG (macOS)", "downloadDmgDescription": "Versi baru aplikasi desktop OmniRoute tersedia. Sila muat turun dan pasang pemasang DMG macOS untuk mengemas kini (semasa: v{version}).", "downloadExe": "Muat Turun EXE (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "Nota Rilisan", "readMore": "Baca Lagi", "noAuthLabel": "Tiada Auth", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Bersedia untuk menghalakan", + "readinessTitle": "Hantar permintaan pertama anda", + "readinessSubtitle": "Empat langkah ringkas. OmniRoute menyemak kesediaan semasa anda meneruskan.", + "readinessStep1": "Sambungkan penyedia", + "readinessStep2": "Konfigurasikan pengesahan titik akhir", + "readinessStep3": "Salin titik akhir anda", + "readinessStep4": "Hantar permintaan ujian", + "readinessContinue": "Teruskan persediaan", + "readinessDismiss": "Abaikan buat masa ini" }, "analytics": { "title": "Analitis", @@ -1967,7 +1967,7 @@ "period7D": "7H", "period30D": "30H", "period90D": "90H", - "periodYTD": "YTD", + "periodYTD": "Tahun Semasa", "periodAll": "Semua", "totalTokens": "Jumlah Token", "inputTokens": "Token Input", @@ -1993,20 +1993,20 @@ "overviewDescription": "Pantau corak penggunaan API anda, penggunaan token, kos dan aliran aktiviti merentas semua pembekal dan model.", "evalsDescription": "Jalankan suite penilaian untuk menguji dan mengesahkan titik akhir LLM anda. Bandingkan kualiti model, mengesan regresi dan kependaman penanda aras.", "overview": "Gambaran keseluruhan", - "evals": "Evals", + "evals": "Penilaian", "search": "Cari", "utilization": "Pemanfaatan", "routeTrace": "Jejak Laluan", "sectionsAria": "Bahagian analitis", "utilizationDescription": "Tren penggunaan kuota pembekal dan penjejakan had kadar", "modelStatus": "Status Model", - "modelStatusCooldown": "Cooldown", + "modelStatusCooldown": "Tempoh Bertenang", "modelStatusUnavailable": "Tidak tersedia", "modelStatusError": "ralat", "comboHealth": "Kesihatan Combo", "comboHealthDescription": "Kuota peringkat combo, pengagihan penggunaan dan metrik prestasi", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Analitik Pemampatan", + "compressionAnalyticsDescription": "Analitik pemampatan — penjimatan token, pecahan mod dan statistik penyedia.", "autoRoutingTotalAutoRequests": "Jumlah Permintaan Auto", "autoRoutingAvgSelectionScore": "Purata Skor Pemilihan", "autoRoutingExplorationRate": "Kadar Penerokaan", @@ -2110,7 +2110,7 @@ "compressionAnalyticsAvgSavings": "Purata Simpanan", "compressionAnalyticsAvgDuration": "Purata Tempoh", "compressionAnalyticsReceipts": "resit", - "compressionAnalyticsFallbacks": "Fallbacks", + "compressionAnalyticsFallbacks": "Sandaran", "compressionAnalyticsPromptTokens": "Token segera", "compressionAnalyticsCompletionTokens": "Token penyiapan", "compressionAnalyticsTotalTokens": "Jumlah token", @@ -2210,7 +2210,7 @@ "combo": "Kombo", "routeStep": "Langkah", "tokens": "Token", - "notAvailable": "n/a", + "notAvailable": "tiada", "routeTokenCounts": "{input} masuk · {output} keluar", "routeEvidence": "Bukti", "routeFactors": "Faktor penghalaan", @@ -2258,9 +2258,9 @@ "fullAccess": "Akses Penuh", "keyManagement": "Pengurusan Kunci API", "keyManagementDesc": "Buat dan urus kunci API untuk mengesahkan permintaan ke titik akhir anda", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Aplikasi anda menghantar permintaan melalui kunci API ke OmniRoute", + "requestFlowYourApp": "Aplikasi anda", + "requestFlowApiKey": "Kunci API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Jumlah Kunci", "restricted": "Terhad", @@ -2275,7 +2275,7 @@ "usage": "Penggunaan", "created": "Dicipta", "actions": "Tindakan", - "reqs": "reqs", + "reqs": "permintaan", "neverUsed": "Tidak pernah digunakan", "deleteConfirm": "Padamkan kunci API ini?", "usageTips": "Petua Penggunaan", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Salin dan simpan kunci ini sekarang — ia tidak akan ditunjukkan lagi.", "done": "Selesai", "savePermissions": "Simpan Kebenaran", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Titik Akhir yang Dibenarkan", + "allEndpointsAllowed": "Kunci ini boleh mengakses semua titik akhir API.", + "endpointsRestricted": "Terhad kepada {count} titik akhir.", + "autoResolve": "Penyelesaian Automatik", + "autoResolveDesc": "Selesaikan nama model yang kabur secara automatik kepada penyedia asal untuk kunci API ini.", "streamDefaultMode": "Keserasian Lalai Penstriman", "streamDefaultModeDesc": "Mengawal bendera `stream` yang diabaikan untuk kunci ini. Mod JSON mengembalikan respons bukan penstriman melainkan pelanggan meminta SSE secara eksplisit.", "streamDefaultLegacy": "Legasi", "streamDefaultJson": "Serasi JSON", "streamDefaultBadge": "Lalai strim JSON", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Kunci Aktif", + "keyActiveDesc": "Dayakan atau nyahdayakan kunci API ini. Kunci yang dinyahdayakan akan ditolak serta-merta dengan kod 403.", + "accessSchedule": "Jadual Akses", + "accessScheduleDesc": "Hadkan akses kepada waktu dan hari tertentu dalam seminggu.", + "scheduleFrom": "Dari", + "scheduleUntil": "Hingga", + "scheduleDays": "Hari", + "scheduleTimezone": "Zon waktu", + "scheduleTimezoneHint": "Gunakan nama zon waktu IANA, cth. America/New_York, Europe/Berlin", + "scheduleActive": "Jadual", + "disabled": "Dinyahdayakan", + "daySun": "Ahd", + "dayMon": "Isn", + "dayTue": "Sel", + "dayWed": "Rab", + "dayThu": "Kha", + "dayFri": "Jum", + "daySat": "Sab", "allowAll": "Benarkan Semua", "restrict": "Sekat", "allowAllInfo": "Kunci ini boleh mengakses semua model yang tersedia.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Gagal mengemas kini kebenaran. Sila cuba lagi.", "unknownProvider": "tidak diketahui", "copyMaskedKey": "Salin kunci bertopeng", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Kunci penuh hanya tersedia semasa penciptaan — salin apabila anda mula-mula mencipta kunci tersebut", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# peranti} other {# peranti}}", "devicesTooltip": "{count, plural, one {# peranti IP/User-Agent berbeza dilihat dengan kunci ini (30 minit terakhir)} other {# peranti IP/User-Agent berbeza dilihat dengan kunci ini (30 minit terakhir)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Kombo yang Dibenarkan", "allCombosAllowed": "Kunci ini boleh menggunakan mana-mana kombo.", "restrictedComboCount": "Terhad kepada {count, plural, one {# kombo} other {# kombo}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# entri tersimpan} other {# entri tersimpan}} tidak terdapat dalam senarai kombo ini (contohnya peraturan penghalaan) dan akan dikekalkan seperti yang disimpan.", + "preservedComboRuleHint": "Dikekalkan seperti yang disimpan. Entri ini bukan kombo dalam senarai di atas, jadi ia hanya boleh diubah melalui API.", "apiManagerCustomRateLimits": "Had Kadar Tersuai", "apiManagerCustomRateLimitsDesc": "Gantikan had lalai global. Biarkan kosong untuk menggunakan lalai.", "apiManagerRateLimitRequestsPlaceholder": "Permintaan", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Membenarkan kunci ini mengabaikan dasar had penyedia/akaun huluan semasa penghalaan. Kuota USD kunci API masih terpakai.", "quotaPill": "KUOTA", "quotaModeOnly": "qtSd-sahaja", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Pajakan Eksklusif", + "exclusiveLeaseNoticeTitle": "Pajakan Eksklusif", + "exclusiveLeaseNoticeDesc": "Kunci API ini mempunyai kebenaran pajakan eksklusif untuk penghalaan sambungan khusus.", + "allConnections": "Semua sambungan", + "onlySelectedConnections": "Hanya sambungan yang dipilih", + "selectAtLeastOneConnection": "Pilih sekurang-kurangnya satu sambungan atau pilih Semua sambungan.", + "allConnectionsDesc": "Kunci ini boleh menggunakan mana-mana sambungan aktif.", + "restrictedToConnections": "Terhad kepada {count, plural, one {# sambungan} other {# sambungan}}." }, "auditLog": { "title": "Log Audit", @@ -2457,16 +2457,16 @@ "model": "Model", "prompt": "Prompt", "generate": "Jana", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Sedang menjana...", + "loadingModels": "Sedang memuatkan model yang tersedia...", + "noModels": "Tiada model tersedia. Konfigurasikan penyedia dengan keupayaan media terlebih dahulu.", + "error": "Penjanaan Gagal", + "result": "Hasil", + "imageDescription": "Jana imej daripada gesaan teks menggunakan OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI dan banyak lagi.", + "videoDescription": "Cipta video dengan AnimateDiff, Stable Video Diffusion melalui ComfyUI atau SD WebUI.", + "musicDescription": "Gubah muzik menggunakan Stable Audio Open atau MusicGen melalui ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Pembenaman", "image": "Imej", "imageToText": "Imej ke Teks", "tts": "Teks ke Ucapan", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "Model suara-ke-teks OpenRouter menggunakan sambungan OpenRouter yang telah anda konfigurasi. Tiada kelayakan berasingan diperlukan." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Pertanyaan Carian", + "searchResults": "Hasil Carian", + "cachedResult": "Dicache", + "searchCost": "Kos", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Ujian carian lanjutan dengan perbandingan penyedia", + "compareProviders": "Bandingkan Penyedia", + "rerankResults": "Susun Semula Kedudukan Hasil", + "searchHistory": "Sejarah Carian", + "urlOverlap": "Pertindihan URL", + "noSearchProviders": "Tiada penyedia carian dikonfigurasikan. Tambahkan penyedia dalam Tetapan.", + "noRerankModels": "Tiada model penyusunan semula kedudukan tersedia", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Penyedia", + "searchType": "Jenis Carian", + "maxResults": "Hasil Maksimum", + "filters": "Penapis", + "country": "Negara", + "language": "Bahasa", + "timeRange": "Julat Masa", + "includeDomains": "Sertakan Domain", + "excludeDomains": "Kecualikan Domain", + "safeSearch": "Carian Selamat", + "safeSearchOff": "Dimatikan", + "safeSearchModerate": "Sederhana", + "safeSearchStrict": "Ketat", + "queryPlaceholder": "Masukkan pertanyaan carian...", + "providerAuto": "auto (termurah)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "berita", + "optionAny": "mana-mana", + "timeRangeDay": "Hari lalu", + "timeRangeWeek": "Minggu lalu", + "timeRangeMonth": "Bulan lalu", + "timeRangeYear": "Tahun lalu", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Permintaan tamat masa ({seconds}s)", + "networkError": "Ralat rangkaian", + "formatted": "Diformatkan", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "cache tidak ditemui", + "cacheHit": "cache ditemui", + "latency": "Kependaman", + "cost": "Kos", + "results": "Hasil", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Model Penyusunan Semula", + "positionDelta": "Perubahan Kedudukan", + "emptyState": "Hantar pertanyaan carian untuk melihat hasil", "copy": "salin", "resetToDefault": "Tetapkan semula kepada lalai", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Cari", + "tabScrape": "Kikis", + "tabCompare": "Bandingkan", + "modalitiesGuide": "Panduan modaliti", + "searchConceptTitle": "Carian", + "searchConceptDesc": "Carian = mendapatkan senarai hasil web (tajuk, URL, petikan, skor kerelevanan)", + "scrapeConceptTitle": "Pengikisan", + "scrapeConceptDesc": "Pengikisan = mengekstrak kandungan penuh URL (markdown, teks atau HTML)", + "compareConceptTitle": "Perbandingan", + "compareConceptDesc": "Perbandingan = menjalankan pertanyaan yang sama merentas N penyedia secara bersebelahan untuk membandingkan kependaman, kos dan pertindihan hasil", + "rerankConceptTitle": "Susun Semula", + "rerankConceptDesc": "Susun Semula = menyusun semula hasil melalui LLM untuk meningkatkan kerelevanan berdasarkan pertanyaan", + "autoConceptTitle": "Auto (termurah)", + "autoConceptDesc": "Auto (termurah) = memilih penyedia tersedia yang paling murah secara automatik dengan kelayakan yang telah dikonfigurasikan", + "providerCatalogTitle": "Katalog Penyedia", + "kindSearch": "Cari", + "kindFetch": "Ambil/Kikis", + "statusConfigured": "Dikonfigurasikan", + "statusMissing": "Tiada kelayakan", + "statusRateLimited": "Kadar dihadkan", + "configureProvider": "Konfigurasikan dalam Penyedia", + "loadingProviders": "Memuatkan penyedia…", + "failedToLoadProviders": "Gagal memuatkan penyedia", + "costPerQuery": "Kos/pertanyaan", + "freeQuota": "Kuota percuma/bln", + "scrapeUrl": "URL untuk dikikis", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL diperlukan", "scrapeUrlInvalid": "URL tidak sah — ia mesti bermula dengan http:// atau https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", + "scrapeExtract": "Ekstrak", + "scrapeExtracting": "Mengekstrak…", + "scrapeFullPage": "Halaman penuh", "scrapeFormat": "Format", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", + "formatText": "Teks", + "scrapePreview": "Pratonton", + "scrapeRaw": "Mentah", + "scrapeContentTruncated": "(dipendekkan, lihat data mentah)", "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "scrapeProvider": "Penyedia", + "scrapeSize": "Saiz", "scrapeEmptyState": "Masukkan URL untuk mengekstrak kandungannya", "scrapeProvidersAvailable": "Penyedia yang tersedia: Firecrawl, Jina Reader, Tavily.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Bandingkan", + "compareRunning": "Membandingkan…", + "autoProvider": "Auto (termurah)", + "configuredStatus": "Dikonfigurasikan", + "rateLimitedStatus": "Kadar dihadkan", + "noCredential": "Tiada kelayakan", + "searchTypeLabel": "Jenis", + "rerankModelLabel": "Model penyusunan semula", + "noneOption": "Tiada", + "size": "Saiz", "configurationPane": "Panel konfigurasi", "configuration": "Konfigurasi", "status": "Status", @@ -2681,7 +2681,7 @@ "ttsSample": "Hello, ini ialah ujian teks-ke-pertuturan.", "video": "Video", "videoSample": "Selang masa awan di atas banjaran gunung", - "webFetch": "Web Fetch", + "webFetch": "Pengambilan Web", "webSearchSample": "Apakah itu get laluan AI OmniRoute?", "noActiveProviderDescription": "Tiada penyedia carian aktif. Konfigurasikan satu di Penyedia.", "configureProviders": "Konfigurasikan penyedia", @@ -2708,7 +2708,7 @@ "classifierCompatLoadFailed": "Gagal memuatkan tetapan", "classifierCompatMode": { "off": "Mati", - "auto": "Auto", + "auto": "Automatik", "always": "Sentiasa" }, "ccDiscoveryInfoButton": "Cara mengaktifkan penemuan dalam Claude Code", @@ -2743,7 +2743,7 @@ "effortExtraHigh": "Sangat tinggi", "effortMax": "Maks", "effortUltra": "Ultra", - "wireApi": "Wire API", + "wireApi": "API Wire", "modelAliases": "Alias model", "addModel": "Tambah model", "routeModelPlaceholder": "Hala {model} ke...", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Tambah", "antigravityStep2Suffix": "ke fail hos anda sebagai 127.0.0.1.", "antigravityStep3": "3. Buka Antigraviti dan permintaan akan diproksikan.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} menghantar permintaan ke titik akhir penyedianya. MITM memintas dan mengalihkannya ke OmniRoute.", + "mitmStep1": "1. Mulakan MITM untuk menghalakan permintaan melalui OmniRoute.", + "mitmStep2Prefix": "2. Tambahkan", + "mitmStep2Suffix": "ke fail hosts anda sebagai 127.0.0.1.", + "mitmStep3": "3. Buka {toolName} dan permintaan akan diproksikan.", "sudoPasswordRequiredTitle": "Kata Laluan Sudo Diperlukan", "sudoPasswordHint": "Kata laluan pentadbir diperlukan untuk mengubah suai fail hos dan tetapan proksi sistem.", "enterSudoPassword": "Masukkan kata laluan sudo", @@ -2908,7 +2908,7 @@ "continue": "Gunakan semasa menjalankan Teruskan dalam IDE dan anda memerlukan konfigurasi pembekal berasaskan JSON mudah alih.", "opencode": "Gunakan apabila anda lebih suka ejen terminal-native run dan automasi skrip melalui OpenCode.", "kiro": "Gunakan apabila menyepadukan Kiro dan mengawal penghalaan model secara berpusat daripada OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Gunakan apabila anda mahukan IDE berteraskan AI dengan model Codeium/Windsurf yang dihalakan melalui OmniRoute.", "antigravity": "Gunakan apabila trafik Antigraviti/Kiro mesti dipintas melalui MITM dan dihalakan ke OmniRoute.", "copilot": "Gunakan apabila anda mahu Copilot gaya sembang UX sambil menguatkuasakan kekunci OmniRoute dan peraturan penghalaan.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2924,15 +2924,15 @@ "droid": "Pembantu AI Droid Kilang", "openclaw": "Buka Pembantu AI Claw", "cline": "Pembantu Pengekodan AI Cline CLI", - "kilo": "Kilo Code AI Assistant CLI", + "kilo": "CLI Pembantu AI Kilo Code", "qwen": "Qwen Code CLI", "cursor": "Editor Kod AI Kursor", "continue": "Teruskan AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "Ejen pengekodan AI OpenCode (Terminal)", + "kiro": "Amazon Kiro — IDE dikuasakan AI", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "CLI pembantu pengekodan Sourcegraph Amp", "hermes": "Pembantu Terminal AI Hermes", "hermes-agent": "Hermes Agent (oleh Nousresearch) - AI terminal lanjutan dengan sokongan berbilang model (delegasi, penglihatan, pemampatan, dll.)", "custom": "Generik penjana konfigurasi CLI atau SDK serasi OpenAI", @@ -2950,7 +2950,7 @@ "interpreter": "CLI ejen pengekodan autonomi Open Interpreter", "omp": "Ejen pengekodan terminal Oh My Pi", "letta": "Ejen CLI Letta dengan memori berterusan dan penggunaan alat", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — kerangka pengekodan RLM yang menambah baik sendiri dengan sokongan penyedia serasi OpenAI", "warp": "Terminal Warp AI dengan sokongan penyedia tersuai", "agent-deck": "Orkestrator berbilang ejen Agent Deck", "5dive": "5dive — armada ejen pengekodan yang dihoskan sendiri; satu profil auth menghalakan semuanya ke OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Pasang OpenCode", + "desc": "Pasang melalui npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Kunci API" }, "3": { - "title": "Set Base URL", + "title": "Tetapkan URL Asas", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Pilih Model" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Gunakan Varian Pemikiran", + "desc": "Untuk model pemikiran, jalankan dengan --variant high/low/max (contoh arahan di bawah)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Buka Tetapan Kiro", + "desc": "Pergi ke Tetapan → Penyedia AI" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "URL Asas", + "desc": "Tampalkan URL titik akhir OmniRoute anda" }, "3": { - "title": "API Key" + "title": "Kunci API" }, "4": { - "title": "Select Model" + "title": "Pilih Model" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Buka Tetapan AI", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Tambah Penyedia Tersuai", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "URL Asas", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Kunci API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Pilih Model", + "desc": "Pilih model daripada menu juntai bawah" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "CLI tersuai", - "toolCategories": "Tool Categories", + "toolCategories": "Kategori Alat", "visibleToolsCount": "{count} alatan tersedia", "customCliBuilderTitle": "Pembina CLI serasi OpenAI", "customCliBuilderDescription": "Hasilkan env vars dan coretan JSON untuk mana-mana CLI atau SDK yang menerima URL asas, kunci API dan ID model yang serasi dengan OpenAI.", @@ -3222,7 +3222,7 @@ "timeout": "Tamat masa (ms)", "healthcheck": "Pemeriksaan kesihatan", "priority": "Keutamaan", - "fallback": "Fallback", + "fallback": "Sandaran", "roundRobin": "Round Robin", "random": "rawak", "leastLatency": "Kependaman Terkecil", @@ -3245,7 +3245,7 @@ "testResults": "Keputusan Ujian — {name}", "resolvedBy": "diselesaikan oleh:", "more": "+{count} lagi", - "reqs": "reqs", + "reqs": "permintaan", "success": "kejayaan", "proxyConfigured": "Proksi dikonfigurasikan", "copyComboName": "Salin nama kombo", @@ -3260,23 +3260,23 @@ "priorityDesc": "Saling berurutan: cuba model 1 dahulu, kemudian 2, dsb.", "weightedDesc": "Mengagihkan trafik mengikut peratusan berat dengan sandaran", "roundRobinDesc": "Pengedaran pekeliling: setiap permintaan pergi ke model seterusnya secara bergilir", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Penyampaian Konteks", + "contextRelayDesc": "Mengekalkan kesinambungan sesi dengan ringkasan serahan apabila akaun bertukar gilir", "randomDesc": "Pemilihan rawak seragam, kemudian sandarkan kepada model yang tinggal", "leastUsedDesc": "Memilih model dengan permintaan paling sedikit, mengimbangi beban dari semasa ke semasa", "costOptimizedDesc": "Laluan ke model termurah dahulu berdasarkan harga", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Menghalakan setiap awalan gesaan boleh guna semula secara konsisten ke akaun penyedia yang sama", "resetAware": "Set Semula-Sedar RR", "resetAwareDesc": "Baki baki kuota dengan tetapan semula 5j dan mingguan, kemudian round-robin markah yang serupa", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Berwajaran Kuota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Rawak Ketat", + "strictRandomDesc": "Dek kocok — menggunakan setiap model sekali sebelum dikocok semula", "fusion": "Gabungan", "fusionDesc": "Menyebarkan prom ke setiap model panel secara selari, kemudian model hakim mensintesis satu jawapan akhir", "fusionJudgeModel": "Model hakim", "fusionJudgeModelHelp": "Model yang mensintesis jawapan panel menjadi satu respons akhir. Biarkan kosong untuk menggunakan model panel pertama.", - "fusionMinPanel": "Min panel", + "fusionMinPanel": "Panel minimum", "fusionMinPanelHelp": "Jawapan panel yang berjaya diperlukan sebelum model yang lambat mendapat tempoh ihsan (lalai 2).", "fusionStragglerGraceMs": "Tempoh ihsan model lambat (ms)", "fusionStragglerGraceMsHelp": "Berapa lama untuk menunggu model panel yang lambat setelah kuorum dicapai (lalai 8000).", @@ -3286,15 +3286,15 @@ "autoBalance": "Imbangan automatik", "advancedSettings": "Tetapan Lanjutan", "retryDelay": "Cuba Semula Kelewatan (ms)", - "concurrencyPerModel": "Concurrency / Model", + "concurrencyPerModel": "Keserentakan / Model", "queueTimeout": "Waktu Beratur (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Ambang Penyerahan", + "contextRelayHandoffThresholdHelp": "Apabila penggunaan kuota mencapai ambang ini, OmniRoute menjana ringkasan penyerahan berstruktur sebelum akaun aktif kehabisan kuota.", + "contextRelayMaxMessages": "Mesej Maksimum untuk Ringkasan", + "contextRelayMaxMessagesHelp": "Mengehadkan jumlah sejarah terkini yang diringkaskan ke dalam ringkasan penyampaian.", + "contextRelaySummaryModel": "Model Ringkasan", + "contextRelaySummaryModelHelp": "Model penggantian pilihan yang digunakan hanya untuk menjana ringkasan penyerahan. Biarkan kosong untuk menggunakan semula model kombo aktif.", + "contextRelayProviderNote": "Context Relay kini menjana penyerahan untuk penggiliran akaun Codex. Padankan ciri ini dengan berbilang akaun daripada penyedia yang sama untuk kesinambungan terbaik.", "advancedHint": "Biarkan kosong untuk menggunakan lalai global. Ini mengatasi tetapan setiap pembekal.", "failoverBeforeRetry": "Failover Sebelum Cuba Semula", "maxSetRetries": "Percubaan Semula Set Maks", @@ -3345,40 +3345,40 @@ "weighted": "Ditimbang", "leastUsed": "Paling Kurang Digunakan", "costOpt": "Kos-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "strategyGuideTitle": "Cara menggunakan strategi ini", + "strategyGuideWhen": "Bila hendak digunakan", + "strategyGuideAvoid": "Elakkan apabila", + "strategyGuideExample": "Contoh", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "Anda mempunyai satu model pilihan dan hanya mahu beralih kepada model sandaran apabila berlaku kegagalan.", + "avoid": "Anda memerlukan pengagihan permintaan merentas model.", + "example": "Model pengekodan utama dengan sandaran lebih murah semasa gangguan." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Anda memerlukan pembahagian trafik terkawal merentas model.", + "avoid": "Anda tidak dapat mengekalkan pemberat yang tepat dari semasa ke semasa.", + "example": "Pelancaran 80% model stabil + 20% model canary." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Anda mahukan pengagihan yang boleh diramal dan sekata.", + "avoid": "Model terlalu berbeza dari segi kependaman atau kos.", + "example": "Model yang sama pada berbilang akaun untuk mengagihkan daya pemprosesan." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Anda mahukan pengagihan mudah dengan persediaan minimum.", + "avoid": "Anda memerlukan jaminan trafik yang ketat.", + "example": "Penciptaan prototaip pantas dengan model yang setara." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Anda mahukan pengimbangan adaptif berdasarkan permintaan semasa.", + "avoid": "Trafik terlalu rendah untuk mendapat manfaat daripada pengimbangan penggunaan.", + "example": "Beban kerja bercampur yang menyebabkan satu model kerap terlebih beban." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Pengurangan kos ialah keutamaan utama anda.", + "avoid": "Data harga tiada atau sudah lapuk.", + "example": "Tugas latar belakang atau kelompok yang mengutamakan kos lebih rendah." }, "reset-aware": { "when": "Anda membuat laluan merentasi berbilang akaun dengan telemetri kuota dan tetingkap tetapan semula yang berbeza.", @@ -3386,19 +3386,19 @@ "example": "Lebih suka penetapan semula akaun mingguan 60% esok berbanding penetapan semula akaun 80% kemudian." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Gunakan apabila anda mahukan pengagihan yang benar-benar sekata — setiap model digunakan sekali sebelum diulangi.", + "avoid": "Elakkan apabila model mempunyai kualiti atau kependaman yang berbeza dan urutan adalah penting.", + "example": "Contoh: Berbilang akaun bagi model yang sama untuk mengagihkan penggunaan secara sekata." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Gunakan apabila anda mahukan pemilihan berkependaman rendah menggunakan algoritma Power-of-Two-Choices.", + "avoid": "Elakkan untuk kombo kecil dengan 2 atau kurang model — tiada kelebihan berbanding round-robin.", + "example": "Contoh: Inferens daya pemprosesan tinggi merentas 4+ titik akhir model yang setara." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Gunakan apabila sesi panjang perlu bertahan melalui penggiliran akaun tanpa kehilangan konteks kerja.", + "avoid": "Elakkan apabila pertukaran akaun jarang berlaku atau apabila anda tidak mahu permintaan peringkasan tambahan.", + "example": "Contoh: Sesi Codex yang bergilir merentas berbilang akaun apabila hampir kehabisan kuota." }, "fill-first": { "when": "Gunakan apabila anda ingin menghabiskan sepenuhnya kuota satu pembekal sebelum beralih ke yang seterusnya.", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Berapa banyak percubaan semula dilakukan sebelum permintaan dianggap gagal.", + "retryDelay": "Masa menunggu awal antara percubaan semula. Nilai yang lebih tinggi mengurangkan tekanan lonjakan.", + "timeout": "Tempoh maksimum permintaan sebelum dibatalkan.", + "healthcheck": "Mengecualikan model/penyedia yang tidak sihat daripada keputusan penghalaan.", + "concurrencyPerModel": "Permintaan serentak maksimum yang dibenarkan bagi setiap model dalam giliran bergilir.", + "queueTimeout": "Tempoh permintaan boleh menunggu dalam baris gilir sebelum tamat masa.", "failoverBeforeRetry": "Apabila didayakan, sebarang ralat huluan mencetuskan kegagalan serta-merta ke sasaran kombo seterusnya, melangkau semua percubaan semula dan URL sandaran.", "maxSetRetries": "Bilangan kali untuk mencuba semula sasaran penuh yang ditetapkan apabila setiap sasaran gagal. 0 = tiada percubaan semula peringkat set.", "setRetryDelayMs": "Kelewatan antara percubaan percubaan semula peringkat set, memberikan masa untuk menyelesaikan masalah sementara.", "disableSessionStickiness": "Putar ke sambungan berbeza pada setiap permintaan dan bukannya menambat keseluruhan perbualan ke satu sambungan mengikut hash mesej pertama. Mengatasi lalai global. Biarkan pada Warisi untuk mengekalkan hit cache gesaan bagi sembang berbilang pusingan." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "Templat pantas", + "templatesDescription": "Gunakan profil permulaan, kemudian laraskan model dan konfigurasi.", + "templateApply": "Gunakan templat", + "templateHighAvailability": "Ketersediaan tinggi", + "templateHighAvailabilityDesc": "Penghalaan keutamaan dengan pemeriksaan kesihatan dan percubaan semula yang selamat.", + "templateCostSaver": "Penjimatan kos", + "templateCostSaverDesc": "Penghalaan yang dioptimumkan untuk kos bagi beban kerja yang mengutamakan bajet.", + "templateBalanced": "Beban seimbang", + "templateBalancedDesc": "Penghalaan berdasarkan penggunaan paling rendah untuk mengagihkan permintaan dari semasa ke semasa.", + "usageGuideHide": "Sembunyikan", + "usageGuideDontShowAgain": "Jangan tunjukkan lagi", + "usageGuideShow": "Tunjukkan panduan", + "quickTestTitle": "Kombo sedia untuk disahkan", + "quickTestDescription": "Jalankan ujian sekarang untuk mengesahkan tingkah laku sandaran dan kependaman.", + "testNow": "Uji sekarang", + "pricingCoverage": "Liputan harga", + "pricingCoverageHint": "Pengoptimuman kos berfungsi paling baik apabila semua model kombo mempunyai maklumat harga.", + "pricingAvailable": "Harga tersedia", + "pricingMissing": "Tiada harga", + "pricingAvailableShort": "mempunyai harga", + "pricingMissingShort": "tanpa harga", "fallbackOnlyOnQuotaExhaustion": "Hanya maju apabila kuota habis", "fallbackOnlyOnQuotaExhaustionShort": "fallback hanya kuota", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "warningRoundRobinSingleModel": "Giliran bergilir paling berguna dengan sekurang-kurangnya 2 model.", + "warningCostOptimizedPartialPricing": "Hanya {priced} daripada {total} model mempunyai maklumat harga. Penghalaan mungkin hanya mengambil kira kos secara separa.", + "warningCostOptimizedNoPricing": "Tiada data harga ditemukan untuk kombo ini. Penghalaan yang dioptimumkan untuk kos mungkin berlaku di luar jangkaan.", + "filterAll": "Semua", + "filterIntelligent": "Pintar", + "filterDeterministic": "Deterministik", + "filterEmptyTitle": "Tiada kombo yang sepadan dengan penapis strategi ini.", + "filterEmptyIntelligentDescription": "Cipta kombo auto atau LKGP untuk mengisi papan pemuka penghalaan pintar.", + "filterEmptyDeterministicDescription": "Hanya kombo auto dan LKGP yang wujud sekarang. Tukar kembali kepada Semua atau cipta kombo deterministik.", "readinessTitle": "Bersedia untuk menyimpan?", "readinessDescription": "Semak senarai semak sebelum membuat atau mengemas kini kombo ini.", "readinessCheckName": "Nama kombo adalah sah", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Tambah sekurang-kurangnya satu model.", "saveBlockWeighted": "Tetapkan berat kepada 100% (semasa: {total}%).", "saveBlockPricing": "Tambahkan harga untuk sekurang-kurangnya satu model atau pilih strategi lain.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Persediaan disyorkan", + "applyRecommendations": "Gunakan cadangan", + "recommendationsUpdated": "Cadangan dikemas kini untuk {strategy}.", + "recommendationsApplied": "Cadangan digunakan pada kombo ini.", + "intelligentPanelTitle": "Papan Pemuka Penghalaan Pintar", + "intelligentPanelDesc": "Pemarkahan masa nyata dan status kesihatan untuk gabungan penghalaan automatik ini.", "configOnlyStatus": "Paparan Konfigurasi", "configOnlyHint": "Panel ini menunjukkan input penghalaan sahaja. Keadaan pemutus langsung tersedia di halaman Kesihatan.", "routingInputs": "Input Penghalaan", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Awalan penyedia tidak diketahui.", "builderDynamicAccountShort": "Akaun dinamik", "builderNeedValidName": "Takrifkan nama kombo yang sah sebelum meneruskan.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Gambaran Keseluruhan Status", + "normalOperation": "Operasi Normal", + "allProvidersHealthy": "Penyedia melaporkan keadaan penghalaan yang sihat.", + "incidentMode": "Mod Insiden", + "highCircuitBreakerRate": "Kadar pengaktifan pemutus litar yang tinggi dikesan.", + "activeModePack": "Pek Mod Aktif", + "modePackUpdated": "Pek mod dikemas kini kepada {pack}.", + "modePackHint": "Tukar pratetap untuk menyesuaikan kecenderungan enjin penghalaan tanpa membina semula gabungan.", + "providerScores": "Skor Penyedia", + "allProvidersEvaluated": "Tiada kumpulan calon dikonfigurasikan. Semua penyedia aktif dinilai semasa masa jalan.", + "excludedProviders": "Penyedia yang Dikecualikan", + "excludedProvidersHint": "Penyedia dengan pemutus litar OPEN dikecualikan buat sementara waktu daripada penghalaan.", + "noExcludedProviders": "Tiada penyedia yang sedang dikecualikan.", + "cooldownMinutes": "Tempoh bertenang: {minutes}m", + "builderIntelligentTitle": "Konfigurasi Penghalaan Pintar", + "builderIntelligentDesc": "Konfigurasikan enjin pemarkahan berbilang faktor untuk gabungan penghalaan automatik ini.", + "candidatePoolLabel": "Kumpulan Calon", + "candidatePoolHint": "Pilih penyedia yang patut dinilai oleh enjin ini. Biarkan kosong untuk menggunakan semua penyedia aktif.", + "candidatePoolEmpty": "Belum ada penyedia aktif yang tersedia.", + "candidatePoolAllProviders": "Semua penyedia", + "modePackLabel": "Pek Mod", + "routerStrategyLabel": "Strategi Penghala", + "strategyRules": "Peraturan (Pemarkahan 6 Faktor)", + "explorationRateLabel": "Kadar Penerokaan", + "explorationRateHint": "{percent}% daripada permintaan boleh meneroka penyedia yang tidak optimum.", + "budgetCapLabel": "Had Belanjawan (USD / permintaan)", + "budgetCapPlaceholder": "Tiada had", + "advancedWeightsTitle": "Lanjutan: Wajaran Pemarkahan", "nestedComboFlatten": "Ratakan kombo bersarang", "nestedComboExecute": "Laksanakan kombo bersarang sebagai sasaran", "effectiveRoutingShare": "Kongsi penghalaan berkesan (pemberat ÷ jumlah)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kuota", + "weightHealth": "Kesihatan", + "weightCostInv": "Kos", + "weightLatencyInv": "Kependaman", + "weightTaskFit": "Kesesuaian Tugas", + "weightStability": "Kestabilan", + "weightTierPriority": "Peringkat", + "weightCacheAffinity": "Afiniti Padanan Cache", "weightSessionAvailability": "Ketersediaan Sesi", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Konfigurasi Penghalaan Pintar", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Garis dasar selamat gagal", + "description": "Gunakan satu model utama dan pastikan rantaian sandaran ringkas serta boleh dipercayai.", + "tip1": "Letakkan model anda yang paling boleh dipercayai di tempat pertama.", + "tip2": "Sediakan 1-2 model sandaran dengan kualiti yang setara.", + "tip3": "Gunakan percubaan semula yang selamat untuk menangani kegagalan sementara penyedia." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Pembahagian trafik terkawal", + "description": "Sesuai untuk pelancaran canary dan migrasi beransur-ansur antara model.", + "tip1": "Mulakan dengan pembahagian konservatif seperti 90/10.", + "tip2": "Pastikan jumlah keseluruhan kekal pada 100% dan seimbangkan secara automatik selepas perubahan.", + "tip3": "Pantau kejayaan dan kependaman sebelum meningkatkan wajaran canary." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Perkongsian beban yang boleh diramal", + "description": "Terbaik apabila model adalah setara dan anda memerlukan pengagihan yang lancar.", + "tip1": "Gunakan sekurang-kurangnya 2 model.", + "tip2": "Tetapkan had keserentakan untuk mengelakkan beban lampau akibat lonjakan.", + "tip3": "Gunakan tamat masa baris gilir untuk menggagalkan permintaan dengan cepat apabila tepu." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Pengagihan pantas dengan persediaan minimum", + "description": "Gunakan apabila anda memerlukan pengagihan mudah tanpa jaminan yang ketat.", + "tip1": "Gunakan model dengan profil kependaman yang serupa.", + "tip2": "Pastikan percubaan semula didayakan untuk menangani kegagalan rawak.", + "tip3": "Utamakan pilihan ini untuk percubaan, bukan SLA yang ketat." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Pengimbangan adaptif", + "description": "Menghalakan permintaan kepada model yang kurang digunakan untuk mengurangkan titik sesak dari semasa ke semasa.", + "tip1": "Berfungsi dengan lebih baik di bawah trafik berterusan.", + "tip2": "Gabungkan dengan pemeriksaan kesihatan untuk pengimbangan yang lebih selamat.", + "tip3": "Jejaki penggunaan setiap model untuk mengesahkan peningkatan pengagihan." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Penghalaan berasaskan bajet", + "description": "Menghalakan permintaan kepada model berkos lebih rendah apabila metadata harga tersedia.", + "tip1": "Pastikan maklumat harga tersedia untuk semua model yang dipilih.", + "tip2": "Kekalkan model sandaran berkualiti untuk gesaan yang sukar.", + "tip3": "Gunakan untuk tugas kelompok/latar belakang apabila kos ialah KPI utama." }, "reset-aware": { "title": "Tetapkan semula putaran akaun sedar", @@ -3597,11 +3597,11 @@ "tip3": "Pastikan jalur seri kecil supaya akaun yang setara masih berputar secara adil." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Pengagihan dek kocok", + "description": "Setiap model digunakan tepat sekali bagi setiap kitaran sebelum dikocok semula.", + "tip1": "Gunakan sekurang-kurangnya 2 model untuk pengagihan yang bermakna.", + "tip2": "Berfungsi paling baik dengan model yang mempunyai prestasi setara.", + "tip3": "Sesuai untuk pengimbangan beban merentas berbilang akaun API." }, "fill-first": { "description": "Habiskan kuota pembekal ekzos secara berurutan sebelum jatuh semula.", @@ -3646,86 +3646,86 @@ "title": "Kuasa Dua Pilihan" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Tindanan Percuma ($0)", + "templateFreeStackDesc": "Penggiliran round-robin merentas semua penyedia percuma: Kiro (Claude), Qoder (5 model), Qwen (4 model). Kos sifar, pengekodan tidak pernah berhenti.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "Mod LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Bermula dengan Combo", + "wizardGuideDesc": "Cipta combo model untuk menghalakan trafik AI secara pintar", + "wizardGuideHint": "atau klik + Cipta Combo di atas", + "createFirstCombo": "Cipta Kombo Pertama Anda", + "wizardStep1Title": "Namakan Kombo Anda", + "wizardStep1Desc": "Berikan kombo anda nama unik untuk mengenal pastinya dalam peraturan penghalaan", + "wizardStep2Title": "Tambah Model", + "wizardStep2Desc": "Pilih model AI dan susun keutamaan sandaran model tersebut", + "wizardStep3Title": "Pilih Strategi", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Semak & Simpan", + "wizardStep4Desc": "Semak konfigurasi anda dan aktifkan kombo", + "usageGuideInvokeTitle": "Cara memanggil kombo ini", + "usageGuideInvokeDesc": "Hantar nama tepat kombo sebagai model, cth. model: \"my-combo\" (atau combo/my-combo).", + "usageGuideInvokeAutoNote": "auto dan auto/* ialah penghala konfigurasi sifar berasingan yang tidak menggunakan kombo anda (melainkan kombo benar-benar dinamakan auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto ialah produk OpenRouter berbayar sebenar (Auto Best Available), bukan alias OmniRoute — kecualikannya melalui Settings → Routing → Hide paid models.", + "emailVisibilityStateOn": "Hidup", + "emailVisibilityStateOff": "Mati", + "reorderHandle": "Seret untuk menyusun semula", + "failedReorder": "Gagal menyusun semula model", + "builderFlowTitle": "Aliran Pembina Kombo", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Asas", + "description": "Nama dan templat permulaan" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Langkah", + "description": "Pemilihan penyedia, model dan akaun" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategi", + "description": "Tingkah laku penghalaan dan tetapan lanjutan" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Penghalaan Pintar", + "description": "Kumpulan calon penghalaan automatik, pratetap dan pemarkahan" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Semakan", + "description": "Pengesahan akhir sebelum menyimpan" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", + "builderStageVisited": "Peringkat selesai", + "builderStageCurrent": "Peringkat semasa", + "builderStagePending": "Belum selesai", + "builderStageLocked": "Dikunci — lengkapkan peringkat sebelumnya dahulu", + "builderTitle": "Bina Kombo", + "builderBrowseCatalog": "Layari katalog", + "builderProvider": "Penyedia", + "builderLoadingProviders": "Memuatkan penyedia...", + "builderSelectProvider": "Pilih penyedia", "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderSelectModel": "Pilih model", + "builderProviderFirst": "Pilih penyedia dahulu", + "builderAccount": "Akaun", + "builderPreview": "Pratonton", + "builderAddStep": "Tambah langkah", "builderDuplicateExact": "Langkah pembekal/model/akaun yang tepat ini sudah ada dalam kombo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Rujukan Kombo", + "builderAddComboRef": "Tambah rujukan kombo", + "builderComboRefStep": "Tambah rujukan kombo", + "builderPinnedAccount": "Akaun Disematkan", + "builderLegacyEntry": "Entri legasi", + "reviewName": "Nama", + "reviewStrategy": "Strategi", + "reviewSteps": "Langkah", + "reviewAccounts": "Akaun", + "reviewProviders": "Penyedia", + "reviewComboRefs": "Rujukan Kombo", + "reviewAdvanced": "Tetapan Lanjutan", + "reviewAgentFlags": "Bendera Ejen", + "reviewSequence": "Urutan Model", + "reviewNoSteps": "Tiada langkah dikonfigurasikan", "builderStagesDescription": "Lengkapkan setiap peringkat untuk menentukan gabungan, membina langkah, memilih strategi penghalaan dan menyemak hasil.", "builderStepsDescription": "Bina setiap langkah kombo mengikut urutan: pembekal, model, kemudian akaun. Ini membolehkan penggunaan semula pembekal dan model yang sama merentas akaun yang berbeza.", "selectProvider": "Pilih Pembekal", @@ -3800,27 +3800,27 @@ "range7d": "7 Hari", "range30d": "30 Hari", "range90d": "90 Hari", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 Hari", + "range365d": "365 Hari", "rangeAll": "Sepanjang Masa", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Model Aktif", + "flatRateEstimateNotice": "Termasuk anggaran harga token untuk langganan kadar rata, bukan kos yang dibilkan.", + "flatRateEstimateForecast": "Unjuran termasuk anggaran kadar rata.", + "selectedWindow": "Tempoh Dipilih", + "activeProviders": "Penyedia Aktif", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Perbelanjaan Hari Ini", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Bahagian Penyedia", + "topProviders": "Penyedia Teratas", + "costTrend": "Trend Kos", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Model Teratas", "requestsInWindow": "Requests In Window", "tokenUsage": "Penggunaan Token", "totalTokens": "Jumlah Token", @@ -3863,7 +3863,7 @@ "groupAccount": "Akaun", "groupServiceTier": "Tahap perkhidmatan", "serviceTierFast": "Pantas", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Fleksibel", "serviceTierStandard": "Standard", "serviceTierBreakdownTitle": "Tahap Perkhidmatan", "serviceTierBreakdownSubtitle": "Pecahan Pantas / Flex / Standard", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "Titik Akhir API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Gunakan titik akhir yang serasi dengan OpenAI bersama kebanyakan SDK dan alat.", + "testEndpoint": "Uji titik akhir →", + "advancedProtocols": "Protokol lanjutan", "available": "Titik Akhir Tersedia", "cloudProxy": "Proksi Awan", "disableConfirm": "Adakah anda pasti mahu melumpuhkan proksi awan?", @@ -3900,9 +3900,9 @@ "disableCloud": "Lumpuhkan Cloud", "enableCloud": "Dayakan Cloud", "modelsAcrossEndpoints": "{models} model merentas {endpoints} titik akhir", - "loadingModels": "Loading available models...", + "loadingModels": "Memuatkan model yang tersedia...", "chatDesc": "Sembang penstriman & bukan penstriman dengan semua pembekal", - "embeddings": "Embeddings", + "embeddings": "Pembenaman", "embeddingsDesc": "Pembenaman teks untuk carian & saluran paip RAG", "imageGeneration": "Penjanaan Imej", "imageDesc": "Hasilkan imej daripada gesaan teks", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Transkripsikan fail audio kepada teks (Bisikan)", "textToSpeech": "Teks kepada Ucapan", "textToSpeechDesc": "Tukar teks kepada pertuturan yang berbunyi semula jadi", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Penjanaan Muzik", + "musicDesc": "Jana muzik dan trek audio melalui ComfyUI (Stable Audio, MusicGen)", "moderations": "Kesederhanaan", "moderationsDesc": "Penyederhanaan kandungan dan klasifikasi keselamatan", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API untuk Codex dan aliran kerja berasaskan ejen yang lanjutan", + "listModelsDesc": "Senaraikan semua model yang tersedia merentas semua penyedia yang disambungkan", + "settingsApiDesc": "Baca dan ubah suai konfigurasi OmniRoute melalui API", + "settingsApi": "API Tetapan", "categoryCore": "API Teras", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", + "categoryMedia": "Media & Multimodal", + "categorySearch": "Carian & Penemuan", "categoryUtility": "Utiliti & Pengurusan", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Carian Web", + "webSearchDesc": "Carian web bersepadu merentas berbilang penyedia dengan failover dan cache automatik", + "searchProvider": "Penyedia Carian", + "searchProviderDesc": "Penyedia ini digunakan untuk carian web melalui POST /v1/search. Tiada konfigurasi model diperlukan — penyedia carian sedia untuk digunakan sebaik sahaja kunci API disambungkan.", "enableCloudTitle": "Dayakan Cloud Proxy", "whatYouGet": "Apa yang anda akan dapat", "cloudBenefitAccess": "Akses API anda dari mana-mana sahaja di dunia", @@ -3963,48 +3963,48 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Dayakan Terowong", + "cloudflaredInstallAndEnable": "Pasang & Dayakan", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Sedang berjalan", + "cloudflaredStarting": "Sedang dimulakan", + "cloudflaredStoppedState": "Dihentikan", + "cloudflaredNotInstalled": "Tidak dipasang", + "cloudflaredUnsupported": "Tidak disokong", + "cloudflaredError": "Ralat", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Ralat terakhir: {error}", "providerModelsTitle": "{provider} — Model", "noModelsForProvider": "Tiada model tersedia untuk pembekal ini.", "chat": "Sembang", "embedding": "Membenamkan", "image": "Imej", "custom": "adat", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {# model} other {# model}}", + "sectionTitle": "Permukaan Integrasi", + "sectionDescription": "API yang serasi dengan OpenAI dan titik akhir protokol operasi", "tabApis": "API", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "Protokol", + "tabsAria": "Bahagian titik akhir", + "protocolsTitle": "Protokol", + "protocolsDescription": "MCP dan A2A ialah titik akhir kelas pertama dengan kebolehcerapan dan kawalan khusus.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", + "mcpCardDescription": "Model Context Protocol melalui stdio", + "a2aCardTitle": "Pelayan A2A", + "a2aCardDescription": "Titik akhir JSON-RPC Agent2Agent", + "protocolToolsLabel": "Alat", + "protocolTasksLabel": "Tugasan", "protocolActiveStreamsLabel": "Aliran aktif", "protocolLastActivity": "Aktiviti terakhir", "quickStart": "Mula Pantas", "openMcpDashboard": "Buka pengurusan MCP", "openA2aDashboard": "Buka pengurusan A2A", - "mcpQuickStartTitle": "MCP Quick Start", + "mcpQuickStartTitle": "Panduan Mula Pantas MCP", "mcpQuickStartStep1": "Jalankan pelayan MCP melalui `omniroute --mcp`.", "mcpQuickStartStep2": "Konfigurasikan klien MCP anda untuk menyambung melalui pengangkutan stdio.", "mcpQuickStartStep3": "Panggil alatan seperti `omniroute_get_health` dan `omniroute_list_combos`.", @@ -4012,8 +4012,8 @@ "a2aQuickStartStep1": "Temui kad ejen di `/.well-known/agent.json`.", "a2aQuickStartStep2": "Hantar permintaan JSON-RPC ke `POST /a2a` menggunakan `message/send` atau `message/stream`.", "a2aQuickStartStep3": "Jejak dan kawal tugas menggunakan `tasks/get` dan `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Pelengkapan (Legasi)", + "completionsLegacyDesc": "Pelengkapan teks OpenAI legasi — menerima kedua-dua format rentetan prompt dan tatasusunan messages", "messagesApi": "Mesej", "messagesApiDesc": "Format API Native Anthropic Messages untuk pembekal yang serasi dengan Claude", "imageEdits": "Suntingan Imej", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Proses kumpulan besar permintaan secara tidak segerak (serasi OpenAI)", "filesApi": "API Fail", "filesApiDesc": "Muat naik dan urus fail untuk pemprosesan kelompok", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Penjanaan Video", + "videoDesc": "Jana video menggunakan model AI seperti ComfyUI dan Stable Video Diffusion.", + "tailscaleRequestFailed": "Gagal memuatkan status Tailscale", + "tailscaleEnableFailed": "Gagal mendayakan Tailscale Funnel", + "tailscaleWaitingForLogin": "Lengkapkan log masuk Tailscale dalam tab pelayar yang dibuka. OmniRoute akan mencuba semula secara automatik.", + "tailscaleLoginTimedOut": "Tamat masa ketika menunggu log masuk Tailscale", + "tailscaleWaitingForFunnel": "Dayakan Funnel untuk peranti ini dalam tab pelayar yang dibuka. OmniRoute akan terus membuat tinjauan.", + "tailscaleFunnelTimedOut": "Masa menunggu tamat sementara menanti Tailscale Funnel didayakan", + "tailscaleStarted": "Tailscale Funnel didayakan", + "tailscaleDisableFailed": "Gagal menyahdayakan Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel dinyahdayakan", + "tailscaleInstallFailed": "Gagal memasang Tailscale", + "tailscaleInstallProgress": "Sedang diproses...", + "tailscaleInstalled": "Tailscale berjaya dipasang", + "tailscaleRunning": "Sedang Berjalan", + "tailscaleNeedsLogin": "Perlu Log Masuk", + "tailscaleStoppedState": "Dihentikan", + "tailscaleNotInstalled": "Belum dipasang", + "tailscaleUnsupported": "Tidak disokong", + "tailscaleError": "Ralat", + "tailscaleDisable": "Hentikan Funnel", + "tailscaleInstallAndEnable": "Pasang & Dayakan", + "tailscaleLoginAndEnable": "Log Masuk & Dayakan", + "tailscaleEnable": "Dayakan Funnel", + "tailscaleUrlNotice": "Menggunakan alamat .ts.net Tailscale anda. Log masuk dan kelulusan Funnel mungkin diperlukan pada penggunaan pertama.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Sahkan mesin ini dengan Tailscale, kemudian dayakan Funnel.", + "tailscaleBinaryPath": "Binari: {path}", + "tailscaleLastError": "Ralat terakhir: {error}", + "tailscaleInstallTitle": "Pasang Tailscale", + "tailscaleInstallIntro": "Memasang Tailscale pada mesin ini dan menyediakan OmniRoute untuk mendayakan Funnel.", + "tailscaleInstallPasswordHint": "Pada macOS dan Linux, sudo mungkin diperlukan untuk pemasangan pakej dan memulakan daemon.", + "tailscaleSudoPlaceholder": "Kata laluan sudo pilihan", + "tailscaleInstalling": "Sedang memasang", "tailscaleSudoLabel": "Kata Laluan Sudo (diperlukan pada macOS/Linux)", "ngrokTitle": "Terowong ngrok", "ngrokRunning": "Berlari", @@ -4108,7 +4108,7 @@ "all": "Semua", "more": "+{count} lagi", "showInternalTooltip": "Tunjukkan atau sembunyikan laluan dalaman (disembunyikan secara lalai)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Pengesahan Bearer", "requestBody": "Badan Permintaan", "close": "Tutup", "tryIt": "Cuba", @@ -4132,21 +4132,21 @@ "vscodeAliasModelsLabel": "Model VS Code", "vscodeAliasChatLabel": "Sembang VS Code", "localServer": "Pelayan Tempatan", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute Awan", "copyUrl": "Salin URL", "badgeLoopbackTooltip": "Titik akhir ini hanya boleh diakses secara setempat (loopback sahaja)", "badgeAlwaysProtectedTooltip": "Titik akhir ini sentiasa dilindungi dan memerlukan kebenaran", "badgeInternalTooltip": "Ini ialah titik akhir sistem dalaman", "tierAll": "Semua", "tierAuth": "Disahkan", - "tierLoopback": "Loopback", + "tierLoopback": "Gelung Balik", "tierAlwaysProtected": "Sentiasa Dilindungi", "tierPublic": "Awam", "hideInternal": "Sembunyikan Dalaman", "showInternal": "Tunjukkan Dalaman", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Prom Sistem Tersuai", + "customSystemPromptDescription": "Masukkan prom sistem tersuai ke dalam setiap permintaan model", + "customSystemPromptPlaceholder": "cth. Sentiasa balas dalam gaya pertuturan lanun...", "obsidianEnterToken": "Sila masukkan token API Obsidian", "obsidianConnectFailed": "Gagal menyambung", "obsidianConnectionFailed": "Sambungan gagal", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "Token telah dikonfigurasikan. Alat Notion boleh didapati melalui MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Proksi Titik Akhir", + "tabApiEndpoints": "Titik Akhir API", + "apiEndpointsTitle": "Titik Akhir API", + "apiEndpointsDescription": "Titik akhir API bahagian belakang yang boleh digunakan oleh aplikasi dan perkhidmatan lain. Bahagian ini akan menyenaraikan semua REST API yang tersedia berserta dokumentasi dan keupayaan pengujian.", + "comingSoon": "Akan Datang", + "plannedFeatures": "Ciri Dirancang", + "featureRestApi": "Katalog titik akhir REST API dengan dokumentasi interaktif", + "featureWebhooks": "Konfigurasi webhook dan langganan acara", + "featureSwagger": "Penjanaan automatik spesifikasi OpenAPI / Swagger", + "featureAuth": "Pengurusan kunci API dan skop OAuth bagi setiap titik akhir" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", + "loading": "Memuatkan papan pemuka MCP...", "activate": "aktifkan", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "deactivate": "nyahaktifkan", + "confirmSwitchCombo": "Sahkan untuk {action} gabungan \"{combo}\"?", + "switchComboFailed": "Gagal menukar keadaan gabungan.", + "switchComboSuccess": "Gabungan \"{combo}\" dikemas kini.", + "confirmApplyProfile": "Gunakan profil daya tahan \"{profile}\"?", + "applyProfileFailed": "Gagal menggunakan profil daya tahan.", + "applyProfileSuccess": "Profil \"{profile}\" digunakan.", + "confirmResetBreakers": "Tetapkan semula semua pemutus litar?", + "resetBreakersFailed": "Gagal menetapkan semula pemutus litar.", + "resetBreakersSuccess": "Pemutus litar telah ditetapkan semula.", + "processStatus": "Status proses", "online": "Online", "offline": "Offline", "disableLabel": "Nyahdayakan {label}", @@ -4237,119 +4237,119 @@ "mcpStep2": "Konfigurasikan klien MCP anda untuk menyambung melalui pengangkutan stdio.", "mcpStep3": "Panggil alat seperti {code1} dan {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "Masa aktif sesi", + "lastHeartbeat": "Denyutan jantung terakhir", + "activity24h": "Aktiviti (24j)", + "totalCalls": "Jumlah panggilan", + "successRate": "Kadar kejayaan", + "avgLatency": "Purata kependaman", + "topTools": "Alat teratas", + "noToolCalls24h": "Tiada panggilan alat dalam tempoh 24 jam yang lalu.", + "runtimeDetails": "Butiran masa jalan", + "transport": "Pengangkutan", + "scopesEnforced": "Skop dikuatkuasakan", + "yes": "ya", + "no": "tidak", + "lastCall": "Panggilan terakhir", + "heartbeatPath": "Laluan denyutan jantung", + "operationalControls": "Kawalan operasi", + "switchCombo": "Tukar gabungan", + "inactive": "tidak aktif", + "active": "aktif", + "activateCombo": "Aktifkan gabungan", + "deactivateCombo": "Nyahaktifkan gabungan", + "applyResilienceProfile": "Gunakan profil daya tahan", + "profileAggressive": "agresif", + "profileBalanced": "seimbang", + "profileConservative": "konservatif", + "applyProfile": "Gunakan profil", + "resetCircuitBreakers": "Tetapkan semula pemutus litar", + "resetCircuitBreakersHelp": "Mengosongkan keadaan pemutus semasa dan kaunter kegagalan untuk penyedia.", + "resetAllBreakers": "Tetapkan semula semua pemutus", + "toolsAndScopes": "Alat dan skop", + "tableTool": "Alat", + "tableScopes": "Skop", + "tablePhase": "Fasa", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Log audit", + "auditSummary": "Panggilan: {total} | halaman {page} daripada {totalPages}", + "allTools": "Semua alat", + "allResults": "Semua hasil", + "success": "Berjaya", + "failure": "Gagal", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "Memuatkan entri audit...", + "noAuditEntriesForFilters": "Tiada entri audit ditemukan untuk penapis semasa.", + "tableTimestamp": "Cap masa", + "tableDuration": "Tempoh", + "tableResult": "Hasil", + "tableApiKey": "Kunci API", + "failed": "gagal", + "previous": "Sebelumnya", + "next": "Seterusnya", + "apiKeyId": "ID Kunci API", + "offset": "Ofset", + "limit": "Had", + "tool": "Alat" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "Memuatkan papan pemuka A2A...", + "confirmCancelTask": "Batalkan tugas {taskId}?", + "cancelTaskFailed": "Gagal membatalkan tugas.", + "cancelTaskSuccess": "Tugas {taskId} dibatalkan.", + "smokeSendFailed": "Ujian ringkas message/send gagal.", + "smokeSendSuccessWithTask": "message/send berjaya (tugas {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "Ujian ringkas message/stream gagal.", + "smokeStreamSuccessWithTask": "message/stream berjaya (tugas {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream selesai tanpa ID tugas.", + "health": "Kesihatan", "ok": "ok", - "totalTasks": "Total tasks", + "totalTasks": "Jumlah tugas", "activeStreams": "Aliran aktif", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "lastTask": "Tugas terakhir", + "taskStateOverview": "Gambaran keseluruhan status tugas", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "diserahkan", + "working": "sedang diproses", + "completed": "selesai", + "failed": "gagal", + "cancelled": "dibatalkan" }, - "agentCard": "Agent card", + "agentCard": "Kad ejen", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "Versi", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "Keupayaan", + "agentCardNotAvailable": "Kad ejen tidak tersedia.", + "quickValidation": "Pengesahan pantas", + "quickValidationDescription": "Melaksanakan panggilan ujian asas melalui titik akhir `/a2a` secara langsung.", + "runMessageSend": "Jalankan message/send", + "runMessageStream": "Jalankan message/stream", + "taskManagement": "Pengurusan tugas", + "taskSummary": "{total} tugas | halaman {page} daripada {totalPages}", + "allStates": "semua", + "allSkills": "semua kemahiran", + "loadingTasks": "Memuatkan tugas...", + "noTasksForFilters": "Tiada tugas ditemukan untuk penapis semasa.", + "tableTask": "Tugas", + "tableSkill": "Kemahiran", + "tableState": "Status", + "tableUpdated": "Dikemas kini", + "tableActions": "Tindakan", + "view": "Lihat", + "cancel": "Batalkan", + "previous": "Sebelumnya", + "next": "Seterusnya", + "taskDetail": "Butiran tugas", + "close": "Tutup", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "Peristiwa", + "artifacts": "Artifak", + "tablePhase": "Fasa Jadual", + "offset": "Ofset", + "limit": "Had", + "skill": "Kemahiran", "rpcEndpoint": "POS /a2a", "rpcMethodSend": "mesej/hantar", "rpcMethodStream": "mesej/strim", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Tindakan", + "addMemory": "Tambah Memori", + "allTypes": "Semua Jenis", "cancel": "Batal", "checkHealth": "Periksa kesihatan", "checkingHealth": "Menyemak…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Cara ia berfungsi", "howWorksContent": "1. Pengekstrakan automatik: pada akhir setiap respons, fakta dan episod dikesan dan disimpan secara automatik.\n2. Pengambilan semula: sebelum setiap respons, memori yang paling berkaitan dicari melalui FTS5 (tepat), vektor (semantik), atau RRF hibrid.\n3. Suntikan: memori yang berkaitan disuntik ke dalam konteks pembantu untuk meningkatkan kualiti respons.\n4. Pengurusan: gunakan halaman ini untuk melihat, mengedit, mengeksport dan memadatkan memori lama." }, - "content": "Content", + "content": "Kandungan", "contentPlaceholder": "Nilai atau kandungan JSON untuk diingati", - "created": "Created", - "delete": "Delete", + "created": "Dicipta", + "delete": "Padam", "deleteConfirmDesc": "Tindakan ini tidak boleh dibuat asal. Memori akan dipadamkan secara kekal.", "deleteConfirmTitle": "Padamkan memori?", - "description": "View and manage stored memory entries", + "description": "Lihat dan urus entri memori yang disimpan", "editMemory": "Edit memori", "editModal": { "title": "Edit Memori", @@ -4444,20 +4444,20 @@ "configureCta": "Konfigurasi", "vectorStoreInstallHint": "Untuk mendayakan carian vektor: npm install sqlite-vec (memerlukan Node.js asli, bukan WASM), kemudian mulakan semula." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodik", + "export": "Eksport", + "factual": "Fakta", "healthUnknown": "Kesihatan tidak diketahui", - "hitRate": "Hit Rate", + "hitRate": "Kadar Padanan", "import": "Import", "importError": "Gagal mengimport fail", "importResult": "{imported} diimport, {skipped} dilangkau", - "key": "Key", + "key": "Kunci", "keyPlaceholder": "cth. pengguna.keutamaan.tema", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Memori", "next": "Seterusnya", - "noMemories": "No memories found", + "noMemories": "Tiada memori ditemukan", "pageInfo": "Halaman {page} daripada {totalPages} ({total} jumlah)", "pipelineError": "Ralat saluran paip", "pipelineOk": "Saluran paip OK ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "Gagal mengambil pratonton" }, "previous": "Sebelumnya", - "procedural": "Procedural", + "procedural": "Prosedural", "qdrant": { "title": "Qdrant (Storan Vektor Tahap 2)", "description": "Penyepaduan Qdrant pilihan untuk carian semantik berskala", @@ -4534,8 +4534,8 @@ }, "save": "Jimat", "saving": "Menyimpan...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Cari memori...", + "semantic": "Semantik", "summarize": { "title": "Mampatkan memori lama", "noCandidates": "Tiada memori yang layak untuk pemampatan (kriteria: berusia >30 hari).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Memori", - "playground": "Playground", + "playground": "Ruang Uji", "engine": "Enjin" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Pengurusan Memori", + "tokensUsed": "Token Digunakan", "tooltip": { "totalEntries": "Jumlah memori yang disimpan untuk kunci API ini", "tokensUsed": "Anggaran jumlah token yang diduduki oleh memori aktif", @@ -4558,15 +4558,15 @@ "procedural": "Prosedur, aliran kerja, dan arahan yang harus diikuti oleh pembantu", "semantic": "Konsep, keutamaan, dan pengetahuan domain" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Jumlah Entri", + "type": "Jenis", "memoryEnabled": "Memori didayakan" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Kemahiran", + "description": "Urus dan pantau kemahiran AI", + "skillsTab": "Kemahiran", + "executionsTab": "Pelaksanaan", "selectSkillToInspect": "Pilih kemahiran di sebelah kiri untuk diperiksa.", "schemaTab": "Skema", "handlerTab": "Pengendali", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Jalankan ujian (penjaga tempat)", "setModeAria": "Tetapkan mod {mode}", "uninstallSkill": "Nyahpasang kemahiran", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Kotak Pasir", + "loading": "Memuatkan kemahiran...", + "noSkills": "Tiada kemahiran ditemukan", + "noExecutions": "Tiada pelaksanaan ditemukan", + "enabled": "Didayakan", + "disabled": "Dilumpuhkan", "delete": "Padam", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", + "version": "Versi", + "tableDescription": "Penerangan", + "skill": "Kemahiran", "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "duration": "Tempoh", + "time": "Masa", + "sandboxConfig": "Konfigurasi Kotak Pasir", + "cpuLimit": "Had CPU", + "cpuLimitDesc": "Masa pelaksanaan maksimum bagi setiap kemahiran", + "memoryLimit": "Had Memori", + "memoryLimitDesc": "Peruntukan memori maksimum", + "timeout": "Tamat Masa", + "timeoutDesc": "Masa menunggu maksimum untuk respons", + "networkAccess": "Akses Rangkaian", + "networkAccessDesc": "Benarkan permintaan rangkaian keluar", + "mode": "Mod", "q": "Q", "filterSkillsPlaceholder": "Tapis kemahiran mengikut nama, perihalan atau tag", "allModes": "Semua mod", @@ -4612,7 +4612,7 @@ "popularDefaultsLabel": "Popular secara lalai untuk penyedia yang dipilih:", "onMode": "HIDUP", "offMode": "MATI", - "autoMode": "AUTO", + "autoMode": "AUTOMATIK", "installSkillButton": "Pasang Kemahiran", "installSkillModalTitle": "Pasang Kemahiran", "installJsonPlaceholder": "Tampal JSON manifes kemahiran di sini...", @@ -4665,13 +4665,13 @@ "retry": "Cuba semula", "allOperational": "Semua sistem beroperasi", "issuesDetected": "Isu sistem dikesan", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute sedia digunakan", + "healthVerdictActionRequired": "Tindakan diperlukan untuk memulihkan operasi sepenuhnya", + "healthVerdictCoolingDown": "Sedang menyejuk selepas perubahan terkini", + "healthSubtitle": "Pemeriksaan kesihatan sistem", + "advancedDiagnosticsTitle": "Diagnostik lanjutan", + "hide": "Sembunyikan", + "show": "Tunjukkan", "updatedAt": "Dikemas kini {time}", "latency": "Latensi", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "Pembekal", "configuredProvidersLabel": "Dikonfigurasikan dalam papan pemuka", "configuredProvidersHint": "Pembekal dengan bukti kelayakan disimpan dalam /papan pemuka/penyedia, tanpa mengira keadaan masa jalan.", - "activeProviders": "{count} active", + "activeProviders": "{count} aktif", "activeProvidersHint": "Penyedia yang dikonfigurasikan pada masa ini didayakan untuk permintaan penghalaan.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} dipantau", "monitoredProvidersHint": "Pembekal kini dijejaki oleh pemantau kesihatan pemutus litar.", "healthyCount": "{count} sihat", "nodeVersion": "Nod {version}", @@ -4721,11 +4721,11 @@ "resetting": "Menetapkan semula...", "resetAll": "Tetapkan Semula Semua", "until": "Sehingga {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Kehabisan", + "learnedFromHeaders": "Dipelajari daripada pengepala", + "remainingOfLimit": "{remaining}/{limit} berbaki", + "throttleStatus": "Pendikitan: {value}", + "lastHeaderUpdate": "Kemas kini pengepala: {age}", "databaseHealth": "Kesihatan Pangkalan Data", "databaseHealthDescription": "Diagnosis dan baiki baris kuota/domain lapuk serta rujukan kombo yang rosak.", "status": "Status", @@ -4744,7 +4744,7 @@ "errors": "Ralat", "degradationFull": "Penuh", "degradationReduced": "Dikurangkan", - "degradationMinimal": "Minimal", + "degradationMinimal": "Minimum", "degradationDefault": "Lalai", "sinceTime": "Sejak {time}", "retryIn": "cuba lagi dalam {duration}", @@ -4758,7 +4758,7 @@ "providerHealthMatrixDescription": "Keadaan penyedia × akaun × model daripada pemutus, tempoh bertenang, sekatan masuk dan log.", "healthMatrixRange": "Julat matriks kesihatan", "providerFilter": "Penapis penyedia", - "onlyIssues": "Only issues", + "onlyIssues": "Isu sahaja", "refresh": "Muat semula", "accounts": "Akaun", "models": "Model", @@ -4773,11 +4773,11 @@ "inactive": "Tidak aktif", "noConnectionId": "tiada id sambungan", "accountModelSummary": "{connectionId} · {count} model", - "cooldown": "cooldown", + "cooldown": "tempoh bertenang", "durationRemaining": "{duration} berbaki", "noSyncedModelsOrTraffic": "Belum ada model yang disinkronkan atau trafik terkini.", "providerRowSummary": "{active}/{total} akaun aktif · {requests} req · {successRate} berjaya · {latency} purata", - "cooldownCount": "{count} cooldown", + "cooldownCount": "{count} dalam tempoh bertenang", "lockoutCount": "{count} sekatan", "issueCount": "{count} isu", "score": "Skor", @@ -4888,28 +4888,28 @@ "previous": "Sebelumnya", "next": "Seterusnya", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Lihat Butiran", + "eventMetadata": "Metadata Peristiwa", + "eventPayload": "Muatan Peristiwa", + "requestId": "ID Permintaan", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", + "offset": "Ofset", + "limit": "Had", "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", + "resourceType": "Jenis Sumber", + "totalEntries": "Jumlah Entri", "tab": "Tab", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Tutup", + "runningRequests": "Permintaan Aktif", + "runningRequestsDesc": "Paparan masa nyata bagi permintaan huluan yang sedang berjalan", "clearAll": "Kosongkan Semua", "confirmClearActiveRequests": "Kosongkan semua permintaan aktif?", "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "provider": "Penyedia", + "account": "Akaun", + "elapsed": "Masa Berlalu", "activeStage": "Peringkat", "activeStageUnknown": "Belum dihantar ke upstream", "activeStageRegistered": "Didaftarkan", @@ -4919,35 +4919,35 @@ "activeStageRateLimitSlotAcquired": "Slot had kadar diperoleh", "activeStageSendingToProvider": "Menghantar ke upstream", "activeStageProviderResponseStarted": "Respons upstream bermula", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Bilangan", + "payloads": "Muatan", + "viewPayloads": "Lihat", + "activeCount": "{count} aktif", + "clientPayload": "Muatan Permintaan Klien", + "upstreamPayload": "Muatan Penyedia Huluan", + "upstreamNotSentYet": "Belum dihantar ke huluan", + "runningRequestDetailMeta": "Akaun: {account} — Masa berlalu: {elapsed}", + "export": "Eksport", + "exporting": "Sedang mengeksport...", + "exportFailed": "Eksport gagal", "cleanHistoryButton": "Bersihkan sejarah", "cleanHistoryTitle": "Bersihkan sejarah log?", "cleanHistoryMessage": "Ini memadamkan secara kekal semua baris log permintaan, baris butiran legasi, dan fail artifak tempatan di bawah DATA_DIR/call_logs. Halaman langsung akan dimuat semula selepas pembersihan.", "cleanHistoryConfirm": "Bersihkan sejarah", "cleanHistoryCancel": "Batal", "cleanHistorySuccess": "Membersihkan {deleted} entri log, {deletedArtifacts} artifak, dan {deletedDetailedLogs} baris butiran legasi.", - "cleanHistoryEmpty": "No request log history was found.", - "cleanHistoryFailed": "Failed to clean log history.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "cleanHistoryEmpty": "Tiada sejarah log permintaan ditemukan.", + "cleanHistoryFailed": "Gagal membersihkan sejarah log.", + "timeRange": "Julat Masa", + "lastNHours": "{hours} Terakhir", + "defaultRange": "lalai", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", - "filterByLevel": "Filter by log level", - "searchPlaceholder": "Search logs…", - "searchAria": "Search log entries", + "fetchFailed": "Gagal mendapatkan log", + "copyFailed": "Gagal menyalin entri log", + "copyLogEntry": "Salin entri log", + "filterByLevel": "Tapis mengikut tahap log", + "searchPlaceholder": "Cari log…", + "searchAria": "Cari entri log", "disableAutoScroll": "Nyahdayakan tatal automatik", "enableAutoScroll": "Dayakan tatal automatik", "autoScroll": "Tatal automatik", @@ -4987,9 +4987,9 @@ "multiProvider": "Pelbagai Pembekal", "usageTracking": "Penjejakan Penggunaan", "securityDesc": "Tetapkan kata laluan untuk melindungi papan pemuka anda atau langkau buat masa ini.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Tanpa kata laluan, anda tidak akan dapat menambah penyedia semasa persediaan. Anda boleh menambahnya kemudian daripada papan pemuka selepas menetapkan kata laluan.", "providerDesc": "Sambungkan pembekal AI pertama anda. Anda boleh menambah lagi kemudian.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Anda perlu menetapkan kata laluan terlebih dahulu untuk menambah penyedia. Sila kembali ke langkah keselamatan dan tetapkan kata laluan, atau tambah penyedia kemudian daripada papan pemuka.", "apiKeyRequired": "Kunci API (diperlukan)", "customUrlOptional": "URL tersuai (pilihan)", "testDesc": "Mari sahkan sambungan pembekal anda berfungsi.", @@ -5076,8 +5076,11 @@ "importFromFileImporting": "Mengimport…", "importFromFileImport": "Import {count} penyedia", "importFromFileResult": "Berjaya mengimport {success} penyedia ({failed} gagal)", + "importFromFileDownloadTemplate": "Muat turun templat CSV", + "importFromFileMoreErrors": "+{count} lagi", + "importFromFileSchemaHint": "Lajur CSV adalah mengikut kedudukan: provider, name, apiKey, baseUrl (pilihan), priority (pilihan). Lajur provider mestilah id penyedia terurus yang sedia ada atau id nod serasi OpenAI/Anthropic yang telah didaftarkan — import ini tidak mencipta nod titik akhir baharu.", "adaptaTutorial": { - "title": "How to connect Adapta Web", + "title": "Cara menyambungkan Adapta Web", "introPrefix": "Adapta mengesahkan identiti melalui Clerk. Token tersebut", "introSuffix": "ialah JWT tahan lama yang membolehkan OmniRoute menyegarkan sesi secara automatik.", "or": "atau", @@ -5099,7 +5102,7 @@ "step5DescPrefix": "Klik", "step5DescMiddle": "tampal", "step5DescSuffix": "nilai ke dalam medan Kunci API, kemudian simpan. OmniRoute akan menyegarkan sesi secara automatik.", - "tipLabel": "Tip:", + "tipLabel": "Petua:", "tipPrefix": "Kuki", "tipSuffix": "adalah tahan lama, biasanya untuk berbulan-bulan. Anda hanya perlu memperbaharuinya jika anda log keluar atau Adapta membatalkan sesi tersebut." }, @@ -5115,7 +5118,7 @@ "testSuccess": "Sambungan berjaya", "testFailed": "Sambungan gagal", "available": "Tersedia", - "cooldown": "Cooldown", + "cooldown": "Tempoh bertenang", "unavailable": "Tidak tersedia", "unknown": "Tidak diketahui", "oauthLabel": "OAuth", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} tersembunyi", "warningCount": "{count} Amaran", "noConnections": "Tiada sambungan", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Tamat tempoh", + "expiringSoonBadge": "Akan Tamat Tempoh Tidak Lama Lagi", "freeTier": "Peringkat Percuma", "freeTierAvailable": "Peringkat percuma tersedia", "hasFreeTooltip": "Pelan percuma tersedia", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Pembekal ini telah ditamatkan", "riskNotice": { "title": "Sebelum meneruskan", - "detailsTitle": "Usage caveats", + "detailsTitle": "Peringatan penggunaan", "tooltip": "Penyedia dengan kekangan penggunaan — klik untuk butiran", "oauth": "Penyedia ini menggunakan sesi produk/OAuth rasmi anda, yang tidak dibenarkan untuk penggunaan proksi/penghala. Kami tidak mengesyorkan penggunaan ejen autonomi yang intensif (gaya OpenCloud, aliran berbilang langkah yang panjang, kelompok besar) — upstream mungkin bertindak balas dengan menyekat atau mengharamkan akaun tersebut. Gunakan atas risiko anda sendiri.", "webCookie": "Penyedia ini mengesahkan melalui kuki sesi web anda. Perkhidmatan upstream mungkin membatalkan sesi pada bila-bila masa, memerlukan anda untuk log masuk semula. Tidak disyorkan untuk operasi tanpa pengawasan yang lama. Gunakan atas risiko anda sendiri.", @@ -5188,9 +5191,9 @@ "cancel": "Batal" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} sambungan ditandai — sehingga {maxFailures} kegagalan terkini{lastFailureSuffix}. Klik untuk melihat status sambungan.", + "lastFailureSuffix": "(kegagalan terakhir {time})", + "ariaLabel": "Lihat butiran status sambungan, {count} amaran" }, "disabled": "Dilumpuhkan", "enableProvider": "Dayakan pembekal", @@ -5225,7 +5228,7 @@ "failedCreate": "Gagal membuat pembekal", "errorOccurred": "Ralat berlaku. Sila cuba lagi.", "modelStatus": "Status Model", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Yang dikonfigurasikan sahaja", "allModelsOperational": "Semua model beroperasi", "modelsWithIssues": "{count} model dengan isu", "allModelsNormal": "Semua model bertindak balas secara normal.", @@ -5236,7 +5239,7 @@ "clearing": "Membersihkan...", "until": "Sehingga {time}", "providerTestFailed": "Ujian pembekal gagal", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Ujian penyedia tamat masa — terlalu banyak sambungan untuk diuji serentak", "modeTest": "{mode} Ujian", "passedCount": "{count} lulus", "failedCount": "{count} gagal", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL Ikon", "iconUrlHint": "Pilihan. URL imej yang ditunjukkan sebagai ikon penyedia ini.", "iconUrlInvalid": "URL ikon tidak sah. Gunakan URL http(s):// atau data:image/*;base64.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Zon waktu penetapan semula kuota harian", + "dailyQuotaResetTimezoneHint": "Zon waktu IANA pilihan yang digunakan apabila perkhidmatan huluan tidak menyertakan X-RateLimit-Reset. Biarkan kosong untuk mengekalkan tempoh bertenang yang singkat.", + "dailyQuotaResetHourLabel": "Waktu penetapan semula kuota harian", + "dailyQuotaResetHourHint": "Jam tempatan 0-23 dalam zon waktu di atas. Kosong bermaksud tiada jam peringkat nod.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Pembekal tidak ditemui", "deleteConnectionConfirm": "Padamkan sambungan ini?", "deleteConnectionConfirmNamed": "Adakah anda pasti mahu memadamkan {name}? Tindakan ini tidak boleh dibuat asal.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Padam yang Dipilih ({count})", + "batchDeleteConfirm": "Padam {count} sambungan? Tindakan ini tidak boleh dibuat asal.", + "batchDeleteSuccess": "{count} sambungan dipadamkan", "batchActivateSelected": "Aktifkan", "batchDeactivateSelected": "Nyahaktifkan", "batchRetestSelected": "Uji semula", @@ -5292,7 +5295,7 @@ "filterError": "Ralat", "filterBanned": "Disekat", "filterCreditsExhausted": "Kredit habis", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Cari akaun…", "noFilteredConnections": "Tiada sambungan yang sepadan dengan penapis semasa.", "failedSetAlias": "Gagal menetapkan alias", "setAliasSuccess": "Alias {alias} ditetapkan", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "Butiran Serasi OpenAI", "messagesApi": "API Messages", "responsesApi": "API Respons", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Pembenaman", + "audioTranscriptions": "Transkripsi Audio", + "audioSpeech": "Pertuturan Audio", + "imagesGenerations": "Penjanaan Imej", "chatCompletions": "Selesai Sembang", "importingModels": "Mengimport...", "importFromModels": "Import daripada /models", - "modelsImported": "{count} models imported", + "modelsImported": "{count} model diimport", "allModelsAlreadyImported": "Semua model sudah diimport", "noNewModelsToImport": "Tiada model baru untuk diimport — semua model sudah ada dalam registri atau senarai model tersuai", "skippingExistingModels": "Melangkau {count} model sedia ada", @@ -5350,13 +5353,13 @@ "importFailed": "Import gagal", "noNewModelsAdded": "Tiada model baharu ditambahkan.", "adding": "Menambah...", - "close": "Close", + "close": "Tutup", "importingModelsTitle": "Mengimport Model", "copyModel": "Salin model", "filterModels": "Tapis model…", "testAllRateLimited": "Had kadar dicapai, dihentikan awal", "hideFailedAuto": "Sembunyikan model yang gagal secara automatik", - "selectAllModels": "Select all", + "selectAllModels": "Pilih semua", "hideAllModels": "Sembunyikan semua", "modelsActive": "aktif", "showModel": "Tunjukkan model", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Satu kunci setiap baris. Format: nama|apiKey atau hanya apiKey (dinamakan secara automatik mengikut indeks).", "bulkValidateKeys": "Sahkan setiap kunci sebelum menyimpan (lebih perlahan)", "bulkAddAllKeys": "Tambah Semua Kekunci", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# kunci ditambahkan} other {# kunci ditambahkan}}", + "bulkFailedCount": "{count, plural, one {# gagal} other {# gagal}}", "optional": "Pilihan", "anthropicCompatibleName": "Serasi Anthropic", "openaiCompatibleName": "Serasi OpenAI", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Ralat yang tidak dijangka berlaku", "getApiKey": "Dapatkan kunci API", "getApiKeyDescription": "Daftar atau mendaftar untuk kunci API", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# sambungan} other {# sambungan}}", "messagesPath": "mesej", "responsesPath": "maklum balas", "chatCompletionsPath": "sembang/penyelesaian", @@ -5419,17 +5422,17 @@ "configured": "dikonfigurasikan", "providerProxyConfigureHint": "Konfigurasikan proksi untuk semua sambungan pembekal ini", "providerProxy": "Proksi Pembekal", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Baiki env", + "repairEnvWorking": "Sedang membaiki...", + "repairEnvHint": "Pulihkan nilai lalai OAuth yang tiada ke dalam .env tanpa menulis ganti nilai sedia ada.", + "repairEnvSuccess": "Nilai lalai OAuth dipulihkan", + "repairEnvFailed": "Gagal membaiki .env", "noConnectionsYet": "Tiada sambungan lagi", "addFirstConnectionHint": "Tambahkan sambungan pertama anda untuk bermula", "addConnection": "Tambah Sambungan", "availableModels": "Model Tersedia", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Model terbina dalam", + "builtInModelsHint": "Model pendaftaran untuk penyedia ini. Gunakan ikon pensel untuk menetapkan pilihan keserasian.", "pageAutoRefresh": "Halaman akan dimuat semula secara automatik...", "statusDisabled": "kurang upaya", "statusConnected": "bersambung", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Sahkan semula sambungan ini", "proxyConfig": "Konfigurasi proksi", "aliasExistsAlert": "Alias \"{alias}\" sudah wujud. Sila gunakan model lain atau edit alias sedia ada.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "nama alias", + "clickToSetAlias": "Klik untuk menetapkan alias", + "clickToEditAlias": "Alias: {alias} (klik untuk mengedit)", "openRouterAnyModelHint": "OpenRouter menyokong mana-mana model. Tambah model dan buat alias untuk akses pantas.", "modelIdFromOpenRouter": "ID Model (dari OpenRouter)", "openRouterModelPlaceholder": "antropik/claude-3-opus", "customModels": "Model Tersuai", "customModelsHint": "Tambahkan ID model yang tiada dalam senarai lalai. Ini akan tersedia untuk penghalaan.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normalkan ID panggilan alat kepada 9 aksara (cth. Mistral)", + "preserveDeveloperRoleLabel": "Kekalkan peranan pembangun OpenAI Responses (jangan petakan kepada sistem)", + "compatAdjustmentsTitle": "Keserasian", + "compatButtonLabel": "Keserasian", + "compatToolIdShort": "ID alat 9", + "compatDeveloperShort": "Peranan pembangun", + "compatDoNotPreserveDeveloper": "Jangan kekalkan peranan pembangun", + "compatBadgeNoPreserve": "Jangan kekalkan", + "compatProtocolLabel": "Protokol permintaan klien", + "compatProtocolHint": "Pilihan ini digunakan apabila OmniRoute mengesan bentuk permintaan ini (OpenAI Chat, Responses API atau Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5500,7 +5503,7 @@ "targetFormatHint": "Pintas format wayar huluan. Gunakan 'Anthropic Messages' untuk menghalakan penyedia serasi OpenAI (cth. opencode-go) melalui titik akhir /v1/messages.", "targetFormatAuto": "Lalai (auto)", "targetFormatGemini": "Gemini", - "targetFormatAntigravity": "Antigravity", + "targetFormatAntigravity": "Antigraviti", "contextWindowOverrideLabel": "Pintasan Tetingkap Konteks", "contextWindowOverridePlaceholder": "cth. 131072", "contextWindowOverrideHint": "Tetapkan tetingkap konteks sebenar model ini (token) secara manual apabila penyedia salah melaporkannya. Mengatasi nilai yang dikesan secara automatik/katalog dan menghalang penghalaan kombo daripada menggugurkan model.", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Tulis semula panggilan alat web_fetch asli ke /v1/web/fetch OmniRoute.", "interceptionLoadError": "Gagal memuatkan tetapan pintasan: {error}", "interceptionSaveError": "Gagal menyimpan tetapan pintasan: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Paparkan dalam Claude Code (claude/…)", + "ccAliasSectionHint": "Iklankan model penyedia ini di bawah ID cermin claude/<provider>/<model> supaya penemuan model get laluan Claude Code boleh menyenaraikannya. Dimatikan secara lalai — mendayakan pilihan ini akan menggandakan entri katalog untuk semua klien.", + "ccAliasProviderLevelLabel": "Lalai penyedia", + "ccAliasModelOverridesLabel": "Penggantian mengikut model", + "ccAliasModelOverrideAriaLabel": "Penggantian untuk {modelId}", + "ccAliasStateInherit": "Warisi", + "ccAliasStateOn": "Hidup", + "ccAliasStateOff": "Mati", + "ccAliasAddModelPlaceholder": "ID model (cth. gpt-4o)", + "ccAliasAddModelButton": "Tambah penggantian", + "ccAliasLoadError": "Gagal memuatkan tetapan alias penemuan: {error}", + "ccAliasSaveError": "Gagal menyimpan tetapan alias penemuan: {error}", + "compatUpstreamHeadersLabel": "Pengepala huluan tambahan", + "compatUpstreamHeadersHint": "Tetapan berkeistimewaan tinggi — tahap kepercayaan yang sama seperti mengedit kelayakan API penyedia; hanya pentadbir yang dipercayai patut menggunakannya. Digabungkan selepas OmniRoute menambahkan pengesahan daripada kunci API penyedia. Jika pengepala tersuai menggunakan nama yang sama dengan pengepala sedia ada (cth. Authorization), nilai anda menggantikan sepenuhnya pengepala yang dijana secara automatik (termasuk token Bearer) — pihak huluan hanya melihat apa yang anda taip, bukan kunci daripada tetapan. Salah konfigurasi boleh menyebabkan ralat 401 atau kegagalan pengesahan huluan. Satu baris bagi setiap pengepala (cth. Authentication tambahan untuk sesetengah get laluan). Tuding atau fokus pada nilai untuk pratonton. Disimpan apabila fokus beralih, mengklik di luar atau menutup panel ini.", + "compatUpstreamHeaderName": "Nama pengepala", + "compatUpstreamHeaderValue": "Nilai", + "compatUpstreamAddRow": "Tambah pengepala", + "compatUpstreamRemoveRow": "Alih keluar baris", + "compatBadgeUpstreamHeaders": "Pengepala", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Import model percuma sahaja", @@ -5592,26 +5595,26 @@ "email": "E-mel", "healthCheckMinutes": "Pemeriksaan Kesihatan (min)", "healthCheckHint": "Selang penyegaran token proaktif. 0 = kurang upaya.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Nyahpilih semua", + "modelsActiveCount": "{active}/{total} aktif", + "noModelsMatch": "Tiada model yang sepadan dengan \"{filter}\"", + "groupLabel": "Persekitaran", + "groupPlaceholder": "cth. eKaizen, Peribadi", "failedTestConnection": "Gagal menguji sambungan", "failed": "gagal", "leaveBlankKeepCurrentApiKey": "Biarkan kosong untuk mengekalkan kunci API semasa.", "editCompatibleTitle": "Edit {type} Serasi", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "URL akar bagi API serasi {type} anda. Gunakan Tetapan Lanjutan untuk laluan titik akhir tersuai.", "apiKeyForCheck": "Kunci API (untuk Semakan)", "testModelIdLabel": "ID Model (pilihan)", "testModelIdPlaceholder": "cth. my-model-id", "testModelIdHint": "Jika penyedia tidak mempunyai titik akhir /models, masukkan ID model untuk mengesahkan melalui /chat/completions sebagai ganti.", "compatibleProdPlaceholder": "{type} Serasi (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Token berjaya dimuat semula", + "tokenRefreshFailed": "Penyegaran token gagal", "cursorSessionUnchanged": "Sesi sudah sedia ada", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Gunakan pengesahan", + "exportCodexAuthFile": "Eksport pengesahan", "applyClaudeAuthLocal": "Gunakan pengesahan", "exportClaudeAuthFile": "Eksport pengesahan", "importClaudeAuth": "Import pengesahan", @@ -5626,7 +5629,7 @@ "claudeAuthApplyFailed": "Gagal menggunakan pengesahan Claude secara setempat", "claudeAuthExported": "Fail pengesahan Claude dieksport", "claudeAuthExportFailed": "Gagal mengeksport fail pengesahan Claude", - "claudeImportModalTitle": "Import Claude Auth", + "claudeImportModalTitle": "Import Pengesahan Claude", "claudeImportTabSingle": "Bujang", "claudeImportTabBulk": "Pukal", "claudeImportTabUpload": "Muat naik fail", @@ -5658,7 +5661,7 @@ "geminiAuthApplyFailed": "Gagal menggunakan pengesahan Gemini secara tempatan", "geminiAuthExported": "Fail pengesahan Gemini dieksport", "geminiAuthExportFailed": "Gagal mengeksport fail pengesahan Gemini", - "geminiImportModalTitle": "Import Gemini Auth", + "geminiImportModalTitle": "Import Pengesahan Gemini", "geminiImportTabSingle": "Bujang", "geminiImportTabBulk": "Pukal", "geminiImportTabUpload": "Muat naik fail", @@ -5704,7 +5707,7 @@ "codexExternalLinkConnected": "Akaun Codex disambungkan melalui pautan luaran.", "codexExternalLinkExpired": "Pautan telah tamat tempoh sebelum selesai.", "importCodexAuth": "Import pengesahan", - "codexImportModalTitle": "Import Codex Auth", + "codexImportModalTitle": "Import Pengesahan Codex", "codexImportTabSingle": "Bujang", "codexImportTabBulk": "Pukal", "codexImportTabUpload": "Muat naik fail", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} gagal", "codexImportBulkZipExtracting": "Mengeluarkan ZIP…", "codexImportBulkZipError": "Gagal mengeluarkan ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Tetapan Lanjutan", + "chatPathLabel": "Laluan Titik Akhir Sembang", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Laluan sembang tersuai untuk penyedia dengan API bukan standard (cth. /v4/chat/completions)", + "modelsPathLabel": "Laluan Titik Akhir Model", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Laluan model tersuai untuk pengesahan (cth. /v4/models)", "clientIdentityLabel": "Identiti Klien", "clientIdentityHint": "Pilihan. Menambah pengepala cap jari klien (cth. User-Agent) yang sepadan dengan CLI yang dikenali untuk get laluan serasi yang mengharapkannya.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Dinyahaktifkan (Manual)", + "statusBanned": "Disekat / Pelanggaran Sandbox", + "statusCreditsExhausted": "Baki Tidak Mencukupi / Kuota Habis", + "showEmails": "Tunjukkan semua e-mel", + "hideEmails": "Sembunyikan semua e-mel", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Tambah kunci API lain atau tampal berbilang kunci", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Gerbang Pengagregat", "enterpriseCloud": "Perusahaan & Awan", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Label Format API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", + "apiRegionChina": "Rantau API China", + "apiRegionHint": "Petunjuk Rantau API", + "apiRegionInternational": "Rantau API Antarabangsa", + "apiRegionLabel": "Label Rantau API", + "apikey": "Kunci API", "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "audioProvidersHeading": "Tajuk Penyedia Audio", "cloudAgentProviders": "Pembekal Agen Awan", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Label Ringkas Audio", + "azureOpenAiBaseUrlHint": "Petunjuk URL Asas Azure Open AI", + "bailianBaseUrlHint": "Petunjuk URL Asas Bailian", + "claudeWebCookieHint": "Buka claude.ai → DevTools → Application → Cookies → claude.ai, salin nilai 'sessionKey'. Turut memerlukan cf_clearance, __cf_bm, _cfuvid untuk Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Petunjuk Kuki Blackbox Web", + "blackboxWebCookiePlaceholder": "Ruang Letak Kuki Blackbox Web", "t3ChatWebCookieHint": "Buka t3.chat → DevTools → Aplikasi → Storan Tempatan → https://t3.chat, salin 'convex-session-id'. Kemudian buka DevTools → Rangkaian, salin pengepala Kuki penuh daripada sebarang permintaan sembang. Tampalkan kedua-dua nilai dalam medan di bawah.", "t3ChatWebCookiePlaceholder": "cembung-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Petunjuk Kuki Grok Web", "blockClaudeExtraUsageDescription": "Apabila diaktifkan, OmniRoute menandakan sambungan Claude ini tidak tersedia sebaik sahaja API penggunaan melaporkan penggunaan tambahan yang beratur, jadi fallback beralih ke sambungan lain dan bukannya meneruskan dengan pengebilan tambahan bayar mengikut penggunaan.", "blockClaudeExtraUsageLabel": "Sekat penggunaan Claude yang berlebihan", "disableCoolingDescription": "Langkau tempoh bertenang sementara supaya sambungan ini kekal layak walaupun selepas ralat yang boleh dipulihkan (keadaan terminal seperti disekat/tamat tempoh masih terpakai).", "disableCoolingLabel": "Nyahdayakan tempoh bertenang untuk sambungan ini", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 kunci ditambahkan} other {# kunci ditambahkan}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 pendua dilangkau} other {# pendua dilangkau}}", + "bulkPasteHint": "Tampal satu kunci API bagi setiap baris. Baris kosong akan diabaikan dan kunci pendua akan dilangkau.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Menambahkan pengepala beta redact-thinking untuk huluan CC Compatible yang memerlukan strim pemikiran Claude tersembunyi.", + "ccCompatibleRedactThinkingLabel": "Dayakan beta redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Menambahkan `display: \"summarized\"` pada permintaan pemikiran CC Compatible supaya model Claude yang disokong menstrim delta pemikiran yang boleh dilihat.", + "ccCompatibleSummarizeThinkingLabel": "Dayakan paparan pemikiran diringkaskan", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Gunakan peringkat perkhidmatan keutamaan untuk permintaan Codex apabila tersedia.", + "codexFastServiceTierLabel": "Peringkat perkhidmatan pantas Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Ruang Letak Nama Pengepala Huluan Serasi", + "compatUpstreamHeaderValuePlaceholder": "Ruang Letak Nilai Pengepala Huluan Serasi", + "compatible": "Serasi", + "configuredCount": "Bilangan Dikonfigurasikan", + "consoleApiKeyOracleHint": "Petunjuk Kunci API Konsol Oracle", + "consoleApiKeyOracleLabel": "Label Kunci API Konsol Oracle", + "consoleApiKeyOraclePlaceholder": "Ruang Letak Kunci API Konsol Oracle", + "newApiUserIdLabel": "ID Pengguna New-API", + "newApiUserIdPlaceholder": "cth. 12345", + "newApiUserIdHint": "Nilai pengepala AgentRouter New-Api-User, digunakan bersama-sama dengan kunci API konsol untuk mendapatkan baki kuota.", "newApiAggregatorToggleLabel": "Gerbang Pengumpul", "newApiAggregatorToggleHint": "Aktifkan pengesanan baki untuk nod pengumpul New-API / One-API / Sub2API. Papan pemuka akan menunjukkan lencana baki dan penghalaan pra-penggunaan kuota akan mengabaikan akaun yang telah habis.", "newApiAggregatorConsoleApiKeyHint": "Token Akses Sistem untuk titik akhir /api/user/self pengumpul. Bukan kunci API penghalaan.", @@ -5830,53 +5833,53 @@ "featureFlagNewApiAggregatorBalanceDescription": "Aktifkan pengesanan baki untuk nod yang serasi dengan New-API / One-API / Sub2API aggregator", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Petunjuk Ejen Pengguna Tersuai", + "customUserAgentLabel": "Label Ejen Pengguna Tersuai", + "databricksBaseUrlHint": "Petunjuk URL Asas Databricks", + "defaultThinkingStrengthHint": "Digunakan apabila permintaan tidak menentukan tahap usaha penaakulan.", + "defaultThinkingStrengthLabel": "Kekuatan pemikiran lalai", + "deleteAllExtraApiKeys": "Padam semua", + "excludedModelsHint": "Petunjuk Model Dikecualikan", + "excludedModelsLabel": "Label Model Dikecualikan", + "excludedModelsPlaceholder": "Ruang Letak Model Dikecualikan", + "expirationBannerExpired": "Sepanduk Tamat Tempoh: Telah Tamat Tempoh", + "expirationBannerExpiredDesc": "Perihalan Sepanduk Tamat Tempoh", + "expirationBannerExpiringSoon": "Sepanduk Tamat Tempoh: Akan Tamat Tidak Lama Lagi", + "expirationBannerExpiringSoonDesc": "Perihalan Sepanduk Akan Tamat Tidak Lama Lagi", + "extraApiKeyMasked": "Kunci {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Petunjuk Kunci API Tambahan", + "extraApiKeysLabel": "Label Kunci API Tambahan", + "apiKeyHealthLabel": "Status Kunci API", + "apiKeyStatusActive": "Aktif", + "apiKeyStatusWarning": "Amaran ({count} kegagalan)", + "apiKeyStatusInvalid": "Tidak sah", + "primaryKey": "Kunci Utama", + "apiKeyInvalidAlert": "{count} kunci API ditandai sebagai tidak sah disebabkan kegagalan pengesahan dalam sambungan: {connections}. Kunci tersebut akan dilangkau dalam penggiliran. Klik untuk menyemak.", + "apiKeyInvalidAlertTitle": "Amaran Status Kunci API", + "apiKeyWarningAlert": "{count} kunci API berada dalam keadaan amaran disebabkan kadar kegagalan sambungan yang tinggi: {connections}. Semak untuk mengelakkan isu penggiliran.", + "apiKeyWarningAlertTitle": "Amaran Kunci API", + "googlePseInfo": "Maklumat Google Pse", "antigravityProjectIdHint": "Penggantian pilihan untuk permintaan Kod Awan Antigraviti. Biarkan kosong untuk menggunakan projek yang ditemui semasa Google OAuth.", "antigravityClientProfileLabel": "Profil klien", "antigravityClientProfileHint": "Pilih identiti klien Antigravity yang dibentangkan oleh OmniRoute kepada API.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Tier Fast Codex aktif", - "tierFast": "Fast", + "tierFast": "Pantas", "antigravityProjectIdLabel": "ID Projek Awan Google", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Ruang Letak Cookie Web Grok", + "herokuBaseUrlHint": "Petunjuk URL Asas Heroku", + "hideEmail": "Sembunyikan E-mel", + "imageProviders": "Penyedia Imej", "videoProviders": "Penjanaan Video", "embeddingRerankProviders": "Pembenaman & Kedudukan Semula", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Label Ringkas Imej", + "llmProviders": "Penyedia LLM", + "localProviderApiKeyOptionalHint": "Petunjuk Kunci API Pilihan bagi Penyedia Setempat", + "localProviderBaseUrlHint": "Petunjuk URL Asas Penyedia Setempat", + "localProviders": "Penyedia Setempat", + "maxConcurrentWholeNumberError": "Ralat Nombor Bulat bagi Bilangan Serentak Maksimum", "m365TierLabel": "Tahap Copilot", "m365TierHint": "Pilih permukaan Microsoft 365 Copilot yang digunakan oleh sambungan ini. Individu ialah BizChat pengguna lalai; Pendidikan dan Perusahaan (kerja) memilih permukaan penyewa mereka.", "m365TierIndividualOption": "Individu (lalai)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Murah", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Sematkan penyedia ini ke tahap penghalaan dan bukannya membiarkan OmniRoute menentukannya daripada harga model.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Petunjuk Cookie Web Muse Spark", + "museSparkWebCookiePlaceholder": "Ruang Letak Cookie Web Muse Spark", + "oauth": "OAuth", + "openCliTools": "Buka Alat CLI", + "openSettings": "Buka Tetapan", + "openaiResponsesStoreDescription": "Benarkan permintaan Responses API yang serasi mengekalkan keadaan respons yang disimpan.", + "openaiResponsesStoreLabel": "Storan OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Maklumat Kunci Dikongsi Perplexity Search", + "perplexityWebCookieHint": "Petunjuk Cookie Web Perplexity", + "perplexityWebCookiePlaceholder": "Ruang Letak Cookie Web Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Ganti Had Kadar", "rateLimitOverridesMaxConcurrentHint": "Ganti permintaan serentak maksimum untuk sambungan ini. Menggantikan had tahap akaun.", "rateLimitOverridesMaxConcurrentLabel": "Maksimum Serentak (Had Kadar)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Tempoh maksimum (ms) sesuatu permintaan boleh menunggu slot had kadar sebelum gagal. Mengatasi tetapan Ketahanan global untuk sambungan ini sahaja.", + "rateLimitOverridesMaxWaitMsLabel": "Masa Menunggu Baris Gilir Maksimum (ms)", "rateLimitOverridesMinTimeHint": "Masa minimum (ms) antara permintaan. Menggantikan kelewatan pengehad kadar lalai.", "rateLimitOverridesMinTimeLabel": "Selang Minimum (ms)", "rateLimitOverridesRpdHint": "Permintaan maksimum sehari untuk sambungan ini. Mengatasi lalai penyedia.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Token/hari)", "rateLimitOverridesTpmHint": "Token maksimum seminit untuk sambungan ini. Menggantikan lalai penyedia.", "rateLimitOverridesTpmLabel": "TPM (Token/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Tajuk Muat Semula Token OAuth", + "regionHint": "Petunjuk Rantau", + "regionLabel": "Label Rantau", + "removeThisKey": "Alih Keluar Kunci Ini", + "routingTagsHint": "Petunjuk Tag Penghalaan", + "routingTagsLabel": "Label Tag Penghalaan", + "routingTagsPlaceholder": "Ruang Letak Tag Penghalaan", + "search": "Cari", + "searchEngineIdHint": "Petunjuk ID Enjin Carian", + "searchEngineIdLabel": "Label ID Enjin Carian", + "searchEngineIdRequired": "ID Enjin Carian Diperlukan", + "searchProvider": "Penyedia Carian", + "searchProviderDesc": "Perihalan Penyedia Carian", "searchProviders": "Cari pembekal...", "searchByModel": "Cari mengikut model…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Tajuk Penyedia Carian", + "searxngBaseUrlHint": "Petunjuk URL Asas Searxng", + "searxngInfo": "Maklumat Searxng", + "sessionCookieLabel": "Label Kuki Sesi", + "showEmail": "Tunjukkan E-mel", + "snowflakeBaseUrlHint": "Petunjuk URL Asas Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Petunjuk Kumpulan Tag", + "tagGroupLabel": "Label Kumpulan Tag", + "tagGroupPlaceholder": "Ruang Letak Kumpulan Tag", + "testModel": "Uji Model", + "testingModel": "Menguji Model", "modelTestQuotaTooltip": "Kuota habis — akan diset semula esok atau memerlukan tambah nilai", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Lencana Token Tamat Tempoh", + "tokenExpiredTitle": "Tajuk Token Tamat Tempoh", + "tokenExpiresSoonTitle": "Tajuk Token Akan Tamat Tempoh Tidak Lama Lagi", + "tokenShort": "Token Ringkas", + "totalKeysRotating": "{count, plural, one {1 kunci bergilir} other {# kunci bergilir}}", + "unhideModel": "Nyahsembunyikan Model", + "upstreamProxyProviders": "Penyedia Proksi Huluan", "validationModelIdHint": "Model yang digunakan untuk mengesahkan kunci API. Biarkan kosong untuk menggunakan model pertama yang tersedia daripada penyedia.", "validationModelIdLabel": "Model pengesahan", "validationModelIdPlaceholder": "cth. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Tampalkan JSON Akaun Perkhidmatan anda ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) atau OAuth access_token", + "webCookieProviders": "Penyedia Kuki Web", + "weeklyShort": "Mingguan Ringkas", + "xiaomiMimoBaseUrlHint": "Petunjuk URL Asas Xiaomi Mimo", "globalCodexServiceMode": "Mod perkhidmatan Codex Global", "connect": "Sambung", "manualApiKey": "Kunci API manual", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Kesan kelayakan penyedia AI (OpenAI, Anthropic, Google, Mistral, xAI) yang disimpan oleh Zed IDE dalam rantai kunci OS dan importnya sebagai sambungan. Zed IDE mesti dipasang pada mesin ini.", "zedImportButton": "Import dari Zed", "zedImportFailed": "Zed gagal diimport", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Petunjuk Import Zed", + "zedImportNetworkError": "Ralat Rangkaian Import Zed", + "zedImportNone": "Tiada Import Zed", "zedImportSuccess": "Mengimport {credentials} kelayakan dari Zed untuk {providers} penyedia(s)", "zedImporting": "Mengimport…", "zedNoCredentials": "Tiada kelayakan Zed ditemui dalam rantai kunci", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Proksi API berdiskaun untuk 40+ model termasuk GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Dapatkan kunci API anda di https://freeaiapikey.com/dashboard. URL asas: https://freeaiapikey.com/v1.", "freemodel-dev": "Dapatkan kredit API percuma $300 di https://freemodel.dev — tiada maklumat pembayaran diperlukan. Titik akhir serasi OpenAI. Model GPT-5.4 dan GPT-5.5 tersedia.", "friendliai": "Peringkat percuma untuk inferens tanpa pelayan — tiada kad kredit diperlukan", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Peringkat percuma melalui Google AI Studio; kuota bagi setiap model tidak lagi diterbitkan (semak halaman kuota dalam AI Studio) — tiada kad kredit.", "gigachat": "Sambungkan GigaChat (Sber) dengan kunci API.", "gitlab": "Token akses peribadi GitLab untuk API Code Suggestions awam. Konfigurasikan URL asas dihoskan sendiri apabila tidak menggunakan gitlab.com.", "gitlawb-gmi": "Dapatkan kunci API anda daripada papan pemuka Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Sambungkan GLM Coding (China) dengan kunci API.", "glmt": "Profil GLM pratetap dengan belanjawan token yang lebih tinggi, pemikiran didayakan dan tamat masa yang lebih lama.", "getgoapi": "Sambungkan GoAPI dengan kunci API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Pelan percuma: had bagi setiap model (200K token/hari bagi setiap model sembang; lihat console.groq.com/docs/rate-limits untuk RPM/RPD) — tiada kaedah pembayaran dalam fail.", "haiper": "Dapatkan kunci API di haiper.ai/haiper-api", "heroku": "Sambungkan Heroku AI dengan kunci API.", "hcnsec": "Dapatkan kunci API di api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Cipta kunci API di https://app.requesty.ai, kemudian tampalkannya di sini sebagai token Bearer. Titik akhir serasi OpenAI di https://router.requesty.ai/v1, dengan katalog /v1/models langsung.", "runwayml": "Penjanaan video Runway adalah berasaskan tugas. OmniRoute menyerahkan kerja teks-ke-video atau imej-ke-video, meninjau /v1/tasks/[id], dan menormalkan output video yang telah selesai kembali ke dalam respons /v1/videos/generations seperti OpenAI.", "sambanova": "Kredit percuma $5 semasa pendaftaran (tempoh sah 30 hari), tiada kad kredit diperlukan", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Cipta kunci API di https://seekai.cc, kemudian tampalkannya di sini sebagai token Bearer. URL asas yang serasi dengan OpenAI: https://seekai.cc/v1.", "sap": "Penemuan model menggunakan /v2/lm/scenarios/foundation-models/models pada AI_API_URL. Permintaan sembang menggunakan deploymentUrl/chat/completions dan memerlukan AI-Resource-Group.", "sarvam": "Sarvam AI adalah serasi dengan OpenAI pada /v1. OmniRoute menyiasat /v1/models dan mengarahkan trafik sembang ke /v1/chat/completions. Model disesuaikan untuk bahasa-bahasa India.", "scaleway": "1M token percuma untuk akaun baharu — mematuhi EU/GDPR (Paris), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Sambungkan Claude Code dengan aliran OAuth sedia ada.", "cline": "Sambungkan Cline dengan aliran OAuth sedia ada.", "cursor": "Sambungkan Cursor IDE dengan aliran OAuth sedia ada.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Sambungkan Cursor dengan kunci API pengguna (crsr_...) daripada cursor.com/dashboard/api; sesi IDE tidak diperlukan.", "github": "Sambungkan GitHub Copilot dengan aliran OAuth sedia ada.", "gitlab-duo": "Aplikasi OAuth dengan skop ai_features + read_user. Konfigurasikan GITLAB_DUO_OAUTH_CLIENT_ID dan secara pilihan GITLAB_DUO_OAUTH_CLIENT_SECRET pada tika OmniRoute ini.", "kilocode": "Sambungkan Kilo Code dengan aliran OAuth sedia ada.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Salin bukti kelayakan yang diperlukan daripada domain penyedia sendiri. Untuk kuki, salin hanya nilai pengepala Kuki dan tinggalkan Kuki:.", "webSessionGuideStep3Manual": "Jalan manual: buka alat pemaju pelayar (F12 → Rangkaian), segarkan halaman, buka permintaan yang telah disahkan, dan salin nilai tajuk Cookie dari Tajuk Permintaan — abaikan awalan Cookie:.", "webSessionGuideStep4": "Tampalkannya di sini dan semak sambungannya. Jika ia berhenti berfungsi, log masuk semula dan gantikannya dengan nilai baharu.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Import fail .har", + "harImportButtonBusy": "Sedang mengimport…", + "harImportButtonHint": "Eksport daripada tab Network DevTools selepas menghantar sekurang-kurangnya satu mesej sembang.", + "harImportStatusValid": "Diimport — sah selama ~{minutes}m.", + "harImportStatusExpiringSoon": "Diimport — hanya sah selama ~{minutes}m lagi.", + "harImportStatusExpired": "Diimport, tetapi token ini telah tamat tempoh ({minutes}m yang lalu) — eksport HAR yang baharu.", + "harImportStatusUnknownExpiry": "Diimport. Tarikh luputnya tidak dapat dibaca.", + "harImportErrorNotJson": "Fail itu bukan JSON yang sah — adakah ia benar-benar eksport .har?", + "harImportErrorNoEntries": "HAR ini tidak mempunyai entri rangkaian yang direkodkan.", + "harImportErrorNoChathubUrl": "Tiada sambungan sembang Copilot ditemui dalam HAR ini. Hantar sekurang-kurangnya satu mesej sembang dalam m365.cloud.microsoft sebelum mengeksport.", + "harImportErrorUnparsableUrl": "Sambungan sembang ditemui, tetapi URL-nya tidak dapat dibaca.", + "harImportErrorMissingFields": "Sambungan sembang ditemui, tetapi token tiada daripadanya.", + "harImportErrorReadFailed": "Fail itu tidak dapat dibaca.", + "harImportErrorUnknown": "Tidak dapat mengekstrak kelayakan daripada fail HAR itu.", "webSessionSecurityHint": "Anggap ini seperti kata laluan: ia boleh mengakses akaun web anda yang dilog masuk sehingga ia tamat tempoh atau dibatalkan.", "webNoAuthGuideTitle": "Tiada kelayakan diperlukan", "webNoAuthGuideBody": "{provider} tidak memerlukan kunci API atau kuki. Simpan sambungan untuk menggunakan titik akhir web percumanya.", @@ -6364,13 +6367,13 @@ "checkWebToken": "Semak token", "huggingchatLabel": "HuggingChat (Percuma)", "huggingchatDesc": "Sembang LLM percuma melalui huggingface.co/chat", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Web Poe", "poeWebDesc": "Sembang pelbagai model melalui poe.com", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Web Venice", "veniceWebDesc": "Sembang AI berfokuskan privasi", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "Web v0 Vercel", "v0VercelWebDesc": "Penjanaan kod AI melalui v0.dev", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Web Kimi", "kimiWebDesc": "Sembang pengguna Moonshot AI melalui www.kimi.com (antarabangsa, API Connect-RPC)", "doubaoWebLabel": "Doubao Web", "doubaoWebDesc": "Sembang AI ByteDance melalui doubao.com", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Modus perkhidmatan Codex telah dikemas kini", "codexServiceTierActive": "Tahap perkhidmatan Codex {tier} sedang aktif", "codexTierFastLabel": "Cepat", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Fleksibel", "commandCodeApplyFailed": "Gagal untuk memohon Kod Perintah auth", "commandCodeApplyingApproval": "Pelayar diluluskan, sedang memohon…", "commandCodeApplyingKey": "Memohon kunci yang diluluskan oleh pelayar…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Kod Perintah auth telah tamat tempoh", "commandCodeConnected": "Kod Perintah disambungkan", "commandCodeConnectionAdded": "Kod Perintah sambungan ditambah", + "clearConnectionCooldown": "Kosongkan tempoh bertenang", + "clearConnectionCooldownInProgress": "Sedang mengosongkan…", + "clearConnectionCooldownTitle": "Kosongkan tempoh bertenang sekarang — gunakan apabila kuota telah dimuat semula di huluan", "commandCodeLinkExpired": "Pautan Kod Perintah telah tamat tempoh", "commandCodeOpeningStudio": "Membuka Command Code Studio…", "commandCodePopupBlocked": "Popup disekat. Sila benarkan popup dan cuba Command Code Connect sekali lagi.", "commandCodeStartFailed": "Gagal untuk memulakan Command Code auth", "connectionDeleted": "Sambungan dipadamkan", "connectionFallback": "sambungan", + "connectionCooldownCleared": "Tempoh bertenang dikosongkan — sambungan menyertai semula penghalaan", "coolingConnectionsDescription": "Sambungan ini sedang menyejuk selepas permintaan terakhir. OmniRoute akan langkauinya sehingga pemasa tamat — tidak perlu dinyahaktif secara manual.", "coolingConnectionsTitle": "Sedang menyejukkan ({count})", + "failedClearConnectionCooldown": "Gagal mengosongkan tempoh bertenang", "failedDeleteAlias": "Gagal untuk memadam alias", "failedDeleteConnection": "Gagal untuk memadam sambungan", "failedDistributeProxies": "Gagal untuk mengedarkan proksi.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Tetapan titik akhir model yang disimpan", "searchByModelAria": "Cari mengikut model", "selectSupportedEndpoint": "Pilih sekurang-kurangnya satu titik akhir yang disokong", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "tetapan", @@ -6554,22 +6557,22 @@ "systemPrompt": "Gesaan Sistem", "thinkingBudget": "Belanjawan Berfikir", "proxy": "proksi", - "httpProxy": "HTTP Proxy", - "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "httpProxy": "Proksi HTTP", + "1proxy": "1proksi", + "proxySubTabsAria": "Bahagian proksi", + "requestBodyLimitTitle": "Had Badan Permintaan", + "requestBodyLimitDescription": "Saiz muatan API maksimum yang diterima sebelum badan permintaan dihuraikan. Laluan muat naik khusus mengekalkan sekurang-kurangnya had terbina dalam sebanyak 100 MB.", + "requestBodyLimitInputLabel": "Had badan permintaan dalam MB", + "requestBodyLimitEmptyError": "Masukkan had dalam MB", + "requestBodyLimitWholeNumberError": "Gunakan nombor bulat", + "requestBodyLimitMinimumError": "Minimum ialah {min} MB", + "requestBodyLimitMaximumError": "Maksimum ialah {max} MB", + "requestBodyLimitLoadFailed": "Gagal memuatkan tetapan had permintaan", + "requestBodyLimitSaveSuccess": "Had badan permintaan disimpan", + "requestBodyLimitSaveFailed": "Gagal menyimpan had badan permintaan", + "requestBodyLimitSaving": "Sedang menyimpan...", + "requestBodyLimitSave": "Simpan", + "requestBodyLimitCurrent": "Semasa: {value}", "cacheConfigLoadFailed": "Gagal memuat tetapan cache", "cacheConfigSaveSuccess": "Tetapan cache disimpan", "cacheConfigSaveFailed": "Gagal menyimpan tetapan cache", @@ -6593,59 +6596,59 @@ "enablePassword": "Dayakan Kata Laluan", "darkMode": "Mod Gelap", "lightMode": "Mod Cahaya", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Memori", + "memoryDesc": "Memori perbualan rentas sesi yang berterusan", + "memoryEnabled": "Dayakan Memori", + "memoryEnabledDesc": "Apabila didayakan, OmniRoute akan memasukkan konteks lampau yang berkaitan.", "memoryTokenCostWarning": "Perhatian: dengan memori didayakan, OmniRoute menyuntik sehingga {tokens} token konteks yang diperoleh semula ke dalam setiap permintaan sembang — ini meningkatkan penggunaan token dan kos. Untuk melangkau suntikan bagi permintaan tertentu, hantar pengepala \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Token Maksimum", + "retentionDays": "Pengekalan", + "recent": "Terkini", + "recentDesc": "Tetingkap kronologi", + "semantic": "Semantik", + "semanticDesc": "Carian vektor", + "hybrid": "Hibrid", + "hybridDesc": "Terkini + Semantik", + "skillsTitle": "Kemahiran", + "skillsDesc": "Alat untuk model", + "skillsEnabled": "Dayakan Kemahiran", + "skillsEnabledDesc": "Membolehkan ejen mencetuskan fungsi.", + "skillsComingSoon": "Pasaran kemahiran akan datang tidak lama lagi.", + "memorySkillsTitle": "Memori & Kemahiran", + "memorySkillsDesc": "Konteks & keupayaan berterusan", + "modelsDevTitle": "Pangkalan Data Model", + "modelsDevDesc": "Segerakkan harga, keupayaan & spesifikasi secara automatik daripada models.dev", + "modelsDevEnabled": "Dayakan Penyegerakan models.dev", + "modelsDevEnabledDesc": "Dapatkan harga, keupayaan dan spesifikasi model daripada pangkalan data sumber terbuka models.dev", + "modelsDevInterval": "Selang Penyegerakan", + "syncNow": "Segerakkan Sekarang", + "syncing": "Sedang menyegerakkan...", + "lastSync": "Penyegerakan terakhir", + "never": "Tidak pernah", "justNow": "tadi", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Statistik Penyegerakan", + "modelsDevStatsDesc": "Liputan data models.dev semasa", "providers": "Pembekal", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Model dengan Maklumat Harga", + "capabilities": "Keupayaan", + "lastSyncCount": "Kiraan Penyegerakan Terakhir", + "lastSyncFull": "Penyegerakan penuh terakhir", + "modelsDevInfo": "Cara Ia Berfungsi", + "modelsDevInfoDesc": "models.dev ialah pangkalan data sumber terbuka bagi spesifikasi model AI yang diselenggara oleh pasukan SST/OpenCode. Ia menyediakan harga, keupayaan, had konteks dan modaliti untuk lebih 4,000 model daripada lebih 100 penyedia.", + "modelsDevInfoResolution": "Turutan penentuan harga (keutamaan tertinggi dahulu):", + "modelsDevInfoOrder": "Tetapan Pengguna → models.dev → LiteLLM → Lalai Terbina Dalam", "systemTheme": "Tema Sistem", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Dayakan Mod Nyahpepijat", "logToolSourcesToggle": "Log Sumber Alat", "logToolSourcesDescription": "Keluarkan baris log diagnostik bagi setiap permintaan yang meringkaskan bilangan alat dan pecahan sumber MCP/dihoskan/klien.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Sematkan Maklumat pada Halaman Utama", "homePinnedSectionsDesc": "Pilih bahagian yang ingin disematkan ke bahagian atas halaman Utama.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Had Kuota Penyedia", + "homeProviderQuotaLimitsDesc": "Sematkan bekas status Kuota Penyedia (dengan butang Segar Semula Semua) di bahagian atas halaman Utama.", + "homeQuickStart": "Mula Pantas", + "homeQuickStartDesc": "Tunjukkan panel Mula Pantas pada halaman Utama.", + "homeProviderTopology": "Topologi Penyedia", + "homeProviderTopologyDesc": "Tunjukkan Topologi Penyedia pada halaman Utama.", "accountEmailVisibility": "Keterlihatan e-mel akaun", "accountEmailVisibilityDesc": "Tunjukkan e-mel akaun penuh merentas penyedia, kombo, log, kuota dan skrin playground. Matikan ini untuk menyamarkannya secara lalai.", "comboConfigMode": "Mod konfigurasi kombo", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Selang masa segar semula", "providerQuotaAutoRefreshIntervalDesc": "Kekerapan paparan kuota harus disegarkan semula, dalam saat.", "seconds": "saat", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Tunjukkan Item Bar Sisi", "enableCache": "Dayakan Cache", - "cacheTTL": "Cache TTL", + "cacheTTL": "TTL Cache", "maxCacheSize": "Saiz Cache Maks", "clearCache": "Kosongkan Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", - "cacheHits": "Cache Hits", + "cacheCleared": "Cache berjaya dikosongkan", + "clearCacheFailed": "Gagal mengosongkan cache", + "cacheHits": "Capaian Cache", "cacheMisses": "Cache Rindu", "hitRate": "Kadar Hit", "cacheEntries": "Entri Cache", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Tetapan Cache", + "semanticCache": "Cache Semantik", + "maxEntries": "Entri Maksimum", + "ttlMinutes": "TTL (minit)", "promptCache": "Cache Prompt", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Strategi", + "preserveClientCache": "Kekalkan Cache Klien", + "enabled": "Didayakan", "loading": "Loading...", "saving": "Menyimpan...", - "save": "Save", + "save": "Simpan", "circuitBreaker": "Pemutus Litar", "retryPolicy": "Dasar Cuba semula", "maxRetries": "Max Cuba Semula", @@ -6690,21 +6693,21 @@ "timeoutMs": "Tamat masa (ms)", "enableSystemPrompt": "Dayakan Sistem Prompt", "systemPromptText": "Teks Gesaan Sistem", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Nyahdayakan Akaun Disekat Secara Automatik", + "autoDisableDescription": "Tandai sambungan penyedia sebagai dinyahaktifkan secara kekal jika sambungan tersebut mengembalikan isyarat sekatan muktamad tertentu (cth. HTTP 403 'verify your account'). Ini akan mengeluarkannya daripada giliran kombo.", + "autoDisableThreshold": "Ambang Sekatan", + "autoDisableThresholdDesc": "Bilangan isyarat sekatan berturut-turut yang diperlukan sebelum penyahaktifan kekal.", + "autoDisableBannedScope": "Gunakan penyahdayaan automatik pada", + "autoDisableBannedScopeDesc": "Slot log masuk (langganan berbayar dan akaun percuma) boleh dikunci oleh penyedia huluan jika OmniRoute terus mencuba semula selepas sekatan. Kunci API prabayar berbayar tidak menghadapi risiko tersebut — biarkannya dalam kumpulan supaya strategi isi-dahulu boleh menggunakan kunci seterusnya.", + "autoDisableBannedScopeAll": "Semua sambungan", + "autoDisableBannedScopeAllDesc": "Nyahaktifkan setiap sambungan yang mengembalikan isyarat sekatan kekal, termasuk kunci API prabayar.", + "autoDisableBannedScopeSubscription": "Akaun log masuk / langganan sahaja", + "autoDisableBannedScopeSubscriptionDesc": "Nyahaktifkan slot OAuth, kuki, sesi dan log masuk web (berbayar atau percuma). Kunci API prabayar kekal aktif supaya penghalaan boleh beralih apabila berlaku kegagalan.", "customBannedSignals": "Kata Kunci Disekat", "customBannedSignalsDesc": "Kata kunci tambahan yang mencetuskan pengesanan sekatan akaun kekal. Kata kunci terbina dalam sentiasa digunakan.", "customBannedSignalsPlaceholder": "cth. api key revoked", "noCustomBannedSignals": "Tiada kata kunci tersuai. Hanya kata kunci terbina dalam yang aktif.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Struktur Ketahanan", "resilienceStructureDesc": "Halaman ini hanya mengkonfigurasi tingkah laku. Keadaan pemutus langsung ditunjukkan pada halaman Kesihatan. Percubaan semula khusus kombo dan kawalan slot round-robin kekal pada tetapan kombo.", "enableThinking": "Dayakan Berfikir", "maxThinkingTokens": "Token Pemikiran Maks", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Tunjukkan kawalan Corong Skala Ekor pada halaman Endpoint.", "showNgrokTunnel": "Terowong ngrok", "showNgrokTunnelDesc": "Tunjukkan kawalan Terowong ngrok pada halaman Endpoint.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Sembunyikan item bar sisi", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Semua", + "presetAllDesc": "Tunjukkan semuanya", + "presetEssentials": "Asas", + "presetEssentialsDesc": "Laluan pemula - Alat lanjutan kekal boleh dicari", + "presetMinimal": "Minimum", + "presetMinimalDesc": "Halaman teras sahaja", + "presetDeveloper": "Pembangun", + "presetDeveloperDesc": "Alat pembangunan & proksi", + "presetAdmin": "Pentadbir", + "presetAdminDesc": "Pemantauan & audit", + "settingsSidebarTitle": "Penyesuaian Bar Sisi", + "settingsSidebarDesc": "Pilih item bar sisi yang hendak dipaparkan. Keperluan Asas memastikan alat Lanjutan boleh dicari.", "hideHealthLogs": "Sembunyikan Log Pemeriksaan Kesihatan", "hideHealthLogsDesc": "Apabila HIDUP, sekat mesej [HealthCheck] dalam konsol pelayan", "themeAccent": "Warna tema", @@ -6780,19 +6783,19 @@ "themeOrange": "Oren", "themeCyan": "Sian", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Sesuaikan nama dan logo aplikasi", + "appName": "Nama Aplikasi", + "appNameDesc": "Nama paparan yang ditunjukkan dalam bar sisi dan tab pelayar", + "customLogo": "URL Logo Tersuai", + "customLogoDesc": "URL imej logo tersuai anda", + "uploadLogo": "Muat Naik Logo", + "resetLogo": "Tetapkan Semula kepada Lalai", + "logoPreview": "Pratonton", + "customFavicon": "Favicon Pelayar", + "customFaviconDesc": "URL favicon tersuai anda (ditunjukkan dalam tab pelayar)", + "uploadFavicon": "Muat Naik Favicon", + "resetFavicon": "Tetapkan Semula Favicon", + "faviconPreview": "Pratonton Favicon", "logoFileTooLarge": "Fail logo mestilah kurang daripada 500KB", "faviconFileTooLarge": "Fail favicon mestilah kurang daripada 50KB", "invalidLogoFileType": "Jenis fail tidak sah. Sila muat naik PNG, JPG, SVG, GIF, atau WebP.", @@ -6800,10 +6803,10 @@ "failedToReadFile": "Gagal membaca fail", "startOnLogin": "Mula semasa Log Masuk", "startOnLoginDesc": "Lancar OmniRoute secara automatik semasa permulaan sistem dan jalankan secara senyap di talam latar belakang.", - "flushCache": "Flush Cache", + "flushCache": "Kosongkan Cache", "flushing": "Membilas…", "size": "Saiz", - "hits": "Hits", + "hits": "Hit", "evictions": "Pengusiran", "loadingCacheStats": "Memuatkan statistik cache…", "globalProxy": "Proksi Global", @@ -6896,21 +6899,21 @@ "refreshInterval": "Selang Penyegaran", "ruleModeDescription": "Deskripsi Mod Peraturan" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", + "bulkHealthcheck": "Pemeriksaan Kesihatan Pukal", + "bulkHealthcheckDesc": "Uji semua proksi yang dikonfigurasikan terhadap URL sasaran untuk mengenal pasti proksi yang berfungsi.", + "healthcheckTesting": "Sedang menguji...", + "healthcheckAll": "Periksa Kesihatan Semua", + "healthcheckFailed": "Gagal menjalankan pemeriksaan kesihatan", + "healthcheckTestingAll": "Sedang menguji semua proksi secara selari...", + "healthcheckTotal": "Jumlah", + "healthcheckWorking": "Berfungsi", + "healthcheckFailedLabel": "Gagal", "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "healthcheckProxyUrl": "URL Proksi", + "healthcheckLatency": "Kependaman", "proxyDocumentationScopeTitle": "Resolusi skop proksi", "proxyDocumentationScopeDescBefore": "OmniRoute menyelesaikan proksi keluar mengikut urutan keutamaan:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "gabungan → akaun → penyedia → global", "proxyDocumentationScopeDescAfter": ". Skop yang paling khusus menang.", "proxyDocumentationAddTitle": "Menambah proksi tersuai", "proxyDocumentationAddDescBefore": "Pergi ke", @@ -6982,9 +6985,9 @@ "thinkingBudgetIndependenceHint": "Ciri pemampatan, penghalaan, dan had token terus berfungsi dalam setiap mod. Auto tidak bermaksud “auto-tunjuk pemikiran” — ia menghapuskan medan pemikiran klien.", "passthrough": "Laluan", "passthroughDesc": "Tiada perubahan — pelanggan mengawal belanjawan berfikir", - "thinkingModePassthrough": "Passthrough", + "thinkingModePassthrough": "Laluan Terus", "thinkingModePassthroughDesc": "Biarkan alasan klien tidak berubah (usaha, ringkasan, blok pemikiran). Diperlukan untuk pemikiran terlihat Codex/Desktop. Lalai.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Auto (buang)", "thinkingModeAutoDesc": "Buang semua medan pemikiran/pertimbangan klien (reasoning, reasoning_effort, Claude thinking, Gemini thinking_config) dan biarkan penyedia mencipta lalai. Boleh menyembunyikan panel pemikiran dan memecahkan permintaan ringkasan klien.", "thinkingModeCustom": "Kustom", "thinkingModeCustomDesc": "Tulis semula setiap permintaan dengan bajet token pemikiran tetap yang anda tetapkan di bawah.", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} pembekal disekat daripada /models", "blockProviderTitle": "Sekat {provider}", "unblockProviderTitle": "Nyahsekat {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Pemadanan Cap Jari CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} penyedia dengan cap jari CLI aktif", + "enableFingerprintTitle": "Dayakan cap jari untuk {provider}", + "disableFingerprintTitle": "Lumpuhkan cap jari untuk {provider}", "systemTransforms": "Talian Transformasi Blok Sistem", "systemTransformsDesc": "Setiap pembekal mengarahkan saluran paip perubahan yang digunakan pada badan permintaan sebelum pemajuan. Menyokong sebarang ID pembekal.", "systemTransformsAddProvider": "Tambah pembekal", @@ -7067,15 +7070,15 @@ "costOptDesc": "Pilih akaun termurah yang tersedia", "resetAware": "Set Semula-Sedar RR", "resetAwareDesc": "Lebih suka akaun dengan baki kuota yang sihat dan penetapan semula yang lebih hampir", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Berwajaran Kuota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Rawak Ketat", + "strictRandomDesc": "Kocok dek — menggunakan setiap akaun sekali sebelum dikocok semula", "stickyLimit": "Had Melekit", "stickyLimitDesc": "Panggilan setiap akaun sebelum bertukar", "routingStrategyTitle": "Strategi Penghalaan", "routingStrategySubtitle": "Padankan 9router: round-robin akaun, had melekit, dan putaran kombo", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Giliran Bergilir", "accountRoundRobinDesc": "Kitar melalui akaun untuk mengagihkan beban", "comboRoundRobin": "Round Robin Kombo", "comboRoundRobinDesc": "Kitar melalui sasaran kombo dan bukannya sentiasa bermula dengan yang pertama", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Batalkan strategi akaun global untuk penyedia ini (pariti 9router).", "providerRoutingStrategy": "Strategi akaun", "providerRoutingInheritGlobal": "Warisi lalai global", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Ambang Prasemakan Kuota", + "quotaPreflightSubtitle": "Langkau akaun yang telah kehabisan kuota sebelum menghantar permintaan ke huluan", + "quotaPreflightEnable": "Dayakan prasemakan kuota", + "quotaPreflightEnableDesc": "Sebelum setiap permintaan, semak baki kuota akaun (tetingkap 5 jam / mingguan / bulanan). Akaun yang berada pada atau di bawah ambang akan dilangkau tanpa panggilan ke huluan. Ambang bagi setiap tetingkap yang ditetapkan pada halaman Kuota Penyedia sentiasa mengatasi nilai lalai di sini.", + "quotaPreflightCutoff": "Ambang global (baki minimum %)", + "quotaPreflightCutoffDesc": "Berhenti menggunakan akaun apabila baki kuotanya menurun kepada peratusan ini atau lebih rendah, bagi setiap tetingkap yang tidak mempunyai ambangnya sendiri. Sepadan dengan bar baki-% pada halaman Kuota Penyedia.", + "quotaPreflightWindowsHint": "Tetingkap yang mempunyai ambang setiap tetingkap atau setiap penyedia sendiri (ditetapkan dalam modal Ambang pada halaman Kuota Penyedia) tidak dipengaruhi oleh nilai lalai ini.", + "quotaPreflightLoadFailed": "Tidak dapat memuatkan tetapan prasemakan kuota.", "modelAliases": "Alias Model", "modelAliasesTitle": "Alias Model", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Petakan semula nama model menggunakan padanan tepat atau corak kad bebas.", "addCustomAlias": "Tambah Alias Tersuai", "deprecatedModelId": "ID model yang ditamatkan", "newModelId": "ID model baharu", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Strategi kombo", "priority": "Keutamaan", "weighted": "Ditimbang", - "contextRelay": "Context Relay", + "contextRelay": "Penyampaian Konteks", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Max Cuba Semula", "retryDelayLabel": "Cuba Semula Kelewatan (ms)", @@ -7211,13 +7214,13 @@ "ms": "ms", "saveComboDefaults": "Simpan Combo Lalai", "maxNestingDepth": "Kedalaman Bersarang Maks", - "concurrencyPerModel": "Concurrency / Model", + "concurrencyPerModel": "Keserentakan / Model", "queueTimeout": "Waktu Beratur (ms)", "queueDepth": "Kedalaman Baris Gilir", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Ambang Penyerahan", + "contextRelayMaxMessages": "Mesej Maksimum untuk Ringkasan", + "contextRelaySummaryModel": "Model Ringkasan", + "contextRelayProviderNote": "Penyampaian Konteks kini menjana penyerahan untuk akaun Codex dan menggunakan nilai ini sebagai nilai lalai global bagi gabungan baharu atau yang belum dikonfigurasikan.", "providerProfiles": "Profil Pembekal", "providerProfilesDesc": "Tetapan daya tahan yang berasingan untuk pembekal OAuth (berasaskan sesi) dan Kunci API (bermeter). Pembekal OAuth mempunyai ambang yang lebih ketat disebabkan oleh had kadar yang lebih rendah.", "oauthProviders": "Pembekal OAuth", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}h yang lalu", "backupReasonManual": "manual", "backupReasonPreRestore": "pra-pemulihan", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# sambungan} other {# sambungan}}", "noChangesSinceBackup": "Tiada perubahan sejak sandaran terakhir", "backupFailed": "Sandaran gagal", "restoreFailed": "Pemulihan gagal", @@ -7329,7 +7332,7 @@ "configured": "dikonfigurasikan", "none": "Tiada", "modelOverrideValuePlaceholder": "Nilai angka", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Dipisahkan dengan koma bahasa Inggeris, cth. low, medium, high", "addKeyValue": "Tambah nilai kunci", "noModelOverrides": "Tiada pintasan dikonfigurasikan untuk model ini.", "modelOverrideLoadFailed": "Gagal memuatkan pintasan model", @@ -7378,25 +7381,25 @@ "editPricing": "Edit Harga", "viewFullDetails": "Lihat Butiran Penuh", "themeCoral": "Koral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Penghalaan Volum Adaptif", + "adaptiveVolumeRoutingDesc": "Skalakan sambungan secara dinamik berdasarkan volum muatan dan tekanan daya pemprosesan.", + "lkgpToggleTitle": "Penyedia Terakhir Diketahui Baik (LKGP)", + "lkgpToggleDesc": "Apabila didayakan, penghala akan mengingati penyedia yang terakhir memberikan respons yang berjaya dan mencubanya dahulu untuk permintaan berikutnya.", "echoRequestedModelTitle": "Gema nama model yang diminta dalam respons", "echoRequestedModelDesc": "Apabila didayakan, medan `model` respons menggema nama alias atau kombo yang diminta oleh klien dan bukannya nama model huluan. Memperbaiki klien ketat (cth. Claude Desktop) yang menolak respons yang modelnya tidak sepadan dengan permintaan.", "webSearchRouteTitle": "Penghalaan carian web", "webSearchRouteDesc": "Apabila permintaan menyertakan alat web_search asli, halakan keseluruhan permintaan ke model ini dan bukannya lalai — berguna untuk penyedia yang tidak melaksanakan alat pelayan web_search Anthropic. Biarkan kosong untuk menyahdayakan.", "webSearchRoutePlaceholder": "cth. openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "Corak ini hanya sepadan dengan model berbayar — dayakan model berbayar atau laraskan corak.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Kosongkan Cache LKGP", + "lkgpCacheCleared": "Cache LKGP berjaya dikosongkan", + "lkgpCacheClearFailed": "Gagal mengosongkan cache LKGP", + "days": "Hari", + "lkgp": "Mod LKGP", + "lkgpDesc": "Penyedia Terakhir Diketahui Baik (Ketahanan yang boleh diramal)", + "maintenance": "Penyelenggaraan", + "purgeExpiredLogs": "Hapuskan Log Tamat Tempoh", + "purgeLogsFailed": "Gagal menghapuskan log", "logsDeleted": "{count, plural, =0 {Tiada log tamat tempoh dibersihkan} one {Dibersihkan # log tamat tempoh} other {Dibersihkan # log tamat tempoh}}", "resetUsageData": "Set Semula Data Penggunaan", "resetUsageDataDesc": "Pilih sejauh mana ke belakang anda mahu memadamkan penggunaan, log permintaan dan data analitik. Konfigurasi penyedia, sambungan, kunci API, kombo dan tetapan akan dikekalkan. Tindakan ini tidak boleh diundur.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Gagal menetapkan semula data penggunaan", "reset": "Set semula", "resetting": "Menetapkan semula...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Dioptimumkan untuk Konteks", + "contextOptDesc": "Menghalakan berdasarkan keperluan tetingkap konteks dan panjang perbualan", + "cacheOpt": "Dioptimumkan untuk Cache", + "cacheOptDesc": "Mengekalkan awalan gesaan boleh guna semula yang sama pada akaun penyedia yang sama", + "priorityDesc": "Sandaran berurutan - mencuba penyedia 1 dahulu, kemudian penyedia 2, dan seterusnya", + "weightedDesc": "Mengagihkan trafik mengikut pemberat peratusan merentas penyedia", + "modelRoutingTitle": "Peraturan Penghalaan Model", + "modelRoutingDesc": "Halakan model secara automatik ke kombo tertentu menggunakan corak glob", + "addRule": "Tambah Peraturan", + "routeToCombo": "Halakan ke Kombo", + "selectCombo": "Pilih kombo...", + "priorityHint": "Lebih tinggi = disemak dahulu. Gunakan 10+ untuk corak khusus.", + "patternHint": "Gunakan * untuk sebarang aksara, ? untuk satu aksara. Tidak sensitif huruf besar/kecil.", + "noRoutingRules": "Tiada peraturan penghalaan dikonfigurasikan. Permintaan menggunakan kombo global secara lalai.", + "routingRuleHint": "Tambah peraturan seperti claude-opus* -> frontier-combo untuk menghalakan permintaan secara automatik.", + "deleteRoutingRule": "Padam peraturan penghalaan model ini?", + "exactMatchMode": "Padanan Tepat", + "wildcardPatternMode": "Corak Kad Bebas", + "exactMatchModeDesc": "Gunakan alias tepat untuk ID model yang telah ditamatkan atau dinamakan semula.", + "wildcardPatternModeDesc": "Gunakan alias kad bebas dengan * dan ? apabila satu keluarga model perlu dipetakan kepada satu sasaran.", + "noExactAliasesConfigured": "Tiada alias padanan tepat dikonfigurasikan.", + "wildcardRulesTitle": "Peraturan Kad Bebas", + "noWildcardAliasesConfigured": "Tiada alias kad bebas dikonfigurasikan.", + "overview": "Gambaran Keseluruhan", + "unknownError": "Ralat Tidak Diketahui", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Senarai Putih", + "syncDisabled": "Penyegerakan Dilumpuhkan", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,11 +7456,11 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Penyegerakan Didayakan", + "blacklist": "Senarai Hitam", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Model Disegerakkan", + "budget": "Bajet", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Gagal menetapkan semula harga: {reason}", "tab": "Tab", @@ -7465,11 +7468,11 @@ "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Gagal menyimpan harga: {reason}", "pricingResetProvider": "Penetapan semula harga untuk {provider}", - "nextSync": "Next Sync", + "nextSync": "Penyegerakan Seterusnya", "pricingSyncFailedWithReason": "Penyegerakan harga gagal: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Kosongkan Harga Disegerakkan", + "compressionTitle": "Pemampatan Prom", + "compressionDesc": "Kurangkan penggunaan token dengan memampatkan prom sebelum dihantar kepada penyedia", "compressionGuidanceFullGuideLink": "Panduan pemampatan penuh", "compressionGuidanceShow": "Butiran", "compressionGuidanceHide": "Sembunyikan butiran", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Tulis semula sejarah sembang yang layak sambil mengekalkan kod, URL dan niat.", "tokenSaverFineTunePrefix": "Perhalusi setiap enjin pada", "tokenSaverFineTuneSuffix": "atau gabungkan enjin bagi setiap permintaan pada", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Mod Pemampatan", + "compressionModeOff": "Mati", + "compressionModeOffDesc": "Tiada pemampatan digunakan", + "compressionModeLite": "Ringan", + "compressionModeLiteDesc": "Pengurangan ruang putih dan baris kosong", + "compressionModeStandard": "Standard (Manusia Gua)", + "compressionModeStandardDesc": "Pemampatan berasaskan peraturan dengan lebih 30 corak, mengekalkan blok kod dan URL", + "compressionModeAggressive": "Agresif", + "compressionModeAggressiveDesc": "Peringkasan + pemampatan hasil alat + penuaan progresif untuk penjimatan maksimum", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Konfigurasi Enjin Agresif", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Bilangan mesej terbaharu yang disimpan pada setiap peringkat penuaan (lebih tinggi = lebih dipelihara)", "compressionToolStrategies": "Strategi Hasil Alat", "compressionToolStrategiesDesc": "Togol strategi mampatan untuk jenis hasil alat yang berbeza", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Tetapan Umum", + "compressionAutoTrigger": "Ambang Pencetus Automatik", + "compressionCacheTTL": "TTL Cache", + "compressionPreserveSystem": "Kekalkan Prom Sistem", "compressionPreserveSystemAlways": "Sentiasa", "compressionPreserveSystemWhenNoCache": "Apabila tiada cache", "compressionPreserveSystemNever": "Tidak pernah", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Disimpan", "compressionExclusionsCount": "{count, plural, one {# pengecualian} other {# pengecualian}} dikonfigurasikan", "compressionExclusionsEmpty": "Tiada pengecualian yang dikonfigurasikan — setiap model/titik akhir layak untuk pemampatan (tingkah laku lalai).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Konfigurasi Enjin Caveman", + "compressionCavemanConfigDesc": "Perhalus enjin pemampatan berasaskan peraturan", "compressionCavemanPanelHint": "Keadaan hidup/mati dan tahapnya ditetapkan dalam panel:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Mampatkan Peranan Mesej", + "compressionRoleUser": "Pengguna", + "compressionRoleAssistant": "Pembantu", + "compressionRoleSystem": "Sistem", + "compressionMinLength": "Panjang Mesej Minimum", + "compressionSkipRules": "Peraturan Langkau Pemampatan", + "compressionSkipRulesDesc": "Klik peraturan untuk melangkaunya semasa pemampatan", + "compressionPreservePatterns": "Kekalkan Corak", + "compressionPreservePatternsDesc": "Corak regex yang tidak pernah dimampatkan (satu setiap baris)", + "compressionLogTitle": "Log Pemampatan", + "compressionLogEmpty": "Belum ada permintaan yang dimampatkan. Statistik pemampatan akan dipaparkan di sini apabila permintaan diproses dengan pemampatan didayakan.", "minutes": "minit", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Penapisan output alat yang peka terhadap perintah", + "compressionModeCodexResponses": "Output alat respons", + "compressionModeCodexResponsesDesc": "Pemampatan konservatif untuk output shell, tampalan, carian, binaan dan JSON yang layak", + "compressionModeStacked": "Bertindan", + "compressionModeStackedDesc": "Penapisan output alat RTK diikuti oleh pemampatan mesej Caveman", + "qdrantTitle": "Qdrant (Memori vektor)", + "qdrantDesc": "Pilihan. Mengindeks memori semantik dalam pangkalan data vektor luaran untuk capaian semula yang lebih pantas.", + "qdrantStatusActive": "Aktif", + "qdrantStatusError": "Ralat", + "qdrantStatusDisabled": "Dilumpuhkan", + "qdrantEnable": "Dayakan Qdrant", + "qdrantEnableDesc": "Apabila didayakan, strategi semantik/hibrid boleh menggunakan Qdrant untuk mendapatkan semula memori.", + "qdrantTesting": "Menguji...", + "qdrantTestConnection": "Uji sambungan", + "qdrantSaved": "Konfigurasi disimpan", + "qdrantSaveError": "Gagal menyimpan konfigurasi", + "qdrantHostHint": "Tanpa port. Contoh: 127.0.0.1 atau http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Lalai Qdrant: 6333", + "qdrantCollectionHint": "Lokasi titik memori akan disimpan.", + "qdrantEmbeddingModel": "Model pembenaman", + "qdrantHelpTitle": "Bantuan persediaan pantas", + "qdrantHelpQuickTitle": "Persediaan pantas (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Hos: IP/URL Qdrant, Port: 6333, Koleksi: omniroute_memory.", + "qdrantHelpStep2": "2. Jika menggunakan nvidia/llama-nemotron-embed-vl-1b-v2:free, gunakan dimensi koleksi 2048.", + "qdrantHelpStep3": "3. Medan model: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Simpan, uji sambungan, kemudian uji carian.", + "qdrantEmbeddingQuickSelect": "Pilih dengan pantas daripada model yang ditemui...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Format: provider/model. Kelayakan penyedia mesti dikonfigurasikan.", + "qdrantApiKeyPlaceholderKeep": "(biarkan kosong untuk mengekalkan kunci semasa)", + "qdrantApiKeyPlaceholderOptional": "(biarkan kosong jika tidak digunakan)", + "qdrantSaveHint": "Petua: edit hos/port/koleksi/model dan klik Simpan. Kunci API adalah pilihan.", + "qdrantSearchTestTitle": "Ujian carian", + "qdrantSearchTestDesc": "Menjana pembenaman dan membuat carian dalam Qdrant.", + "qdrantSearchPlaceholder": "Contoh: keutamaan pengguna, sejarah dan sebagainya", + "qdrantNoResults": "Tiada hasil (atau Qdrant tidak dikonfigurasikan).", + "qdrantCleanupTitle": "Pengekalan dan pembersihan", + "qdrantCleanupDesc": "Mengalih keluar titik yang telah tamat tempoh dan titik lama berdasarkan", + "searching": "Sedang mencari...", + "cleaning": "Sedang membersihkan...", + "cleanNow": "Bersihkan sekarang", "optional": "Pilihan", "current": "semasa", "remove": "Alih keluar", @@ -7600,19 +7603,19 @@ "resilienceScope": "Skop:", "resilienceTrigger": "Pencetus:", "resilienceEffect": "Kesan:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Baris Gilir Permintaan & Had Kadar", + "resilienceAutoEnableApiKeyProviders": "Dayakan secara automatik untuk penyedia kunci API", + "resilienceRequestsPerMinute": "Permintaan seminit", + "resilienceMinTimeBetweenRequests": "Masa minimum antara permintaan", + "resilienceConcurrentRequests": "Permintaan serentak", + "resilienceConnectionScopeConcurrentRequests": "Permintaan serentak bagi setiap skop sambungan/kuota", + "resilienceGlobalConcurrentRequests": "Permintaan huluan serentak global (0 = dinyahdayakan)", "resilienceMaxQueueWaitTime": "Masa menunggu giliran maksimum", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Tempoh bertenang asas", + "resilienceUseUpstreamRetryHints": "Gunakan petunjuk percubaan semula huluan", + "resilienceDefaultPerProvider": "Lalai (bagi setiap penyedia)", + "resilienceAlwaysOn": "Sentiasa aktif", + "resilienceAlwaysOff": "Sentiasa tidak aktif", "routingRemoveEntry": "Alih keluar masukan", "routingNeedlesSubstrings": "Jarum (substring untuk dipadankan)", "routingCaseSensitive": "Kes sensitif", @@ -7625,7 +7628,7 @@ "routingNeedles": "Jarum", "routingBlockText": "Sekat teks", "routingIdempotencyKey": "Kunci mati pucuk", - "routingEntrypoint": "Entrypoint", + "routingEntrypoint": "Titik masuk", "routingVersionFormat": "Format versi", "routingCchAlgorithm": "Algoritma CCH", "routingWordsToObfuscate": "Perkataan untuk mengelirukan (ZWJ disisipkan selepas aksara pertama)", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "Dihantar ke model penglihatan sebelum perihalan yang diekstrak disuntik semula ke dalam permintaan asal.", "visionBridgeTimeoutMs": "Tamat masa (ms)", "visionBridgeMaxImagesPerRequest": "Imej Maks Setiap Permintaan", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Langkah undur maksimum", + "resilienceProviderBreakerTitle": "Pemutus Litar bagi Setiap Penyedia", + "resilienceFailureThreshold": "Ambang kegagalan", + "resilienceDegradationThreshold": "Ambang kemerosotan", "resilienceResetTimeout": "Tetapkan semula tamat masa", "resilienceFailureThresholdLabel": "Ambang kegagalan", "resilienceResetTimeoutLabel": "Tetapkan semula tamat masa", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Tempoh Bertenang Sambungan", "resilienceUseUpstreamRetryHintsLabel": "Gunakan petunjuk percubaan semula huluan", "resilienceUseUpstream429BreakerLabel": "Gunakan huluan 429 petunjuk (pemutus)", "resilienceMaxBackoffStepsLabel": "Langkah mundur maksimum", "resilienceYes": "ya", "resilienceNo": "Tidak", - "resilienceDefault": "Default", + "resilienceDefault": "Lalai", "storageDatabaseBackupRetention": "Pengekalan sandaran pangkalan data", "storageDatabaseBackups": "Sandaran pangkalan data", "storageBackupRetentionDescription": "Sandaran SQLite automatik disimpan di", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "JSON legasi berjaya diimport!", "jsonImportFailed": "Gagal mengimport JSON", "jsonImportError": "Ralat semasa import JSON", + "jsonImportAuthRequired": "Pengesahan diperlukan untuk mengimport konfigurasi JSON lama. Sila log masuk atau lengkapkan persediaan terlebih dahulu.", + "databaseSettingsAuthRequiredTitle": "Pengesahan diperlukan", + "databaseSettingsAuthRequiredBody": "Tetapan pangkalan data dan import JSON hanya tersedia kepada pentadbir yang telah disahkan. Log masuk atau lengkapkan persediaan untuk melihat dan mengeditnya.", + "databaseSettingsAuthRequiredCta": "Log masuk", "storagePurgeData": "Bersihkan Data", "storagePurgeDataDesc": "Padamkan semua rekod dengan segera tanpa menggunakan semakan penahanan. Gunakan dengan berhati-hati.", "storageRetentionCleanup": "Tetapan Penahanan", @@ -7828,23 +7835,23 @@ "compressionDerivedMode": "mod: {mode}", "compressionAdaptiveOff": "Belanjawan konteks adaptif: mati (pencetus automatik legasi)", "compressionAdaptiveTarget": "Adaptif ({mode}, dasar: {policy}) — sasaran ≈ {target, number} token (untuk tetingkap {contextLimit, number}-token)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Bajet konteks adaptif", + "compressionAdaptiveModeOff": "Mati (pencetus automatik lama)", + "compressionAdaptiveModeFloor": "Had minimum (sentiasa pastikan muat)", + "compressionAdaptiveModeReplace": "Gantikan pencetus automatik", + "compressionAdaptivePolicy": "Dasar bajet", + "compressionAdaptivePolicyReserve": "Rizab output", + "compressionAdaptivePolicyPercentage": "Peratusan tetingkap", + "compressionAdaptivePolicyAbsolute": "Bajet token mutlak", "compressionOutputStylesDescription": "Suntik arahan pembentukan respons tanpa menulis semula output penyedia. Gabungkan secara bebas.", "mcpAccessibilityDescription": "Menskupkan output alat MCP (storan berasingan).", "compressionStylesTileSummary": "{tokens, number} token dijimatkan · {runs, plural, one {# larian digayakan} other {# larian digayakan}}", "compressionStylesTileEmpty": "Belum ada larian yang digayakan.", "compressionLevel": { - "minimal": "Minimal", - "standard": "Standard", + "minimal": "Minimum", + "standard": "Piawai", "aggressive": "Agresif", - "lite": "Lite", + "lite": "Ringan", "full": "Penuh", "ultra": "Ultra" }, @@ -7858,7 +7865,7 @@ "description": "Penanda pengambilan beralamat kandungan." }, "lite": { - "label": "Lite", + "label": "Ringan", "description": "Pembersihan ruang putih dan format." }, "rtk": { @@ -7866,11 +7873,11 @@ "description": "Penapisan output arahan." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Output Alat Responses", + "description": "Pemampatan konservatif untuk output alat Responses yang disokong." }, "headroom": { - "label": "Headroom", + "label": "Ruang lebihan", "description": "Pemadatan JSON berjadual." }, "relevance": { @@ -7878,7 +7885,7 @@ "description": "Pemarkahan ayat ekstraktif terhadap pertanyaan pengguna terakhir." }, "caveman": { - "label": "Caveman", + "label": "Manusia Gua", "description": "Pemampatan prosa berasaskan peraturan." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "Tangga YAGNI: perubahan berfungsi terkecil, tiada abstraksi yang tidak diminta." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (pembangun kanan yang malas)", + "description": "Disiplin pembangun kanan yang malas: naiki tangga YAGNI, baiki punca masalah, perbezaan kerja yang paling kecil." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Saya mempunyai ADHD (tindakan dahulu)", + "description": "Output berorientasikan tindakan: mulakan dengan tindakan seterusnya, langkah dinomborkan, satu langkah seterusnya yang konkrit, tanpa mukadimah." }, "terse-cjk": { "label": "CJK Ringkas (文言)", @@ -7924,13 +7931,21 @@ "resilienceEnableServerSideWait": "Dayakan menunggu sebelah pelayan", "resilienceMaximumRetries": "Percubaan semula maksimum", "resilienceMaximumWaitPerRetry": "Penantian maksimum setiap percubaan semula", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "Pasaran SkillsMP", "memorySkillsFailedToSave": "Gagal menyimpan", "memorySkillsApiKey": "Kunci API", "memorySkillsActiveSkillsProvider": "Pembekal Kemahiran Aktif", - "cliproxyapiFallback": "CLIProxyAPI Fallback", + "cliproxyapiFallback": "Sandaran CLIProxyAPI", "cliproxyapiEnableFallback": "Dayakan CLIProxyAPI Fallback", "cliproxyapiUrl": "URL CLIProxyAPI", + "headroomProxyTitle": "Proksi Headroom", + "headroomProxyDesc": "URL bagi proksi penjimat token Headroom pilihan. Jika kosong, gunakan HEADROOM_URL atau http://localhost:8787.", + "headroomProxyUrl": "URL Headroom", + "headroomProxyUrlHint": "URL gelung balik boleh dimulakan dari halaman ini. URL luaran hanya diuji.", + "headroomProxySave": "Simpan", + "headroomProxyStart": "Mula", + "headroomProxyStop": "Henti", + "headroomProxyExternalHint": "URL ini bukan gelung balik, jadi OmniRoute tidak akan memulakan CLI setempat.", "cliproxyapiStatus": "Status CLIProxyAPI", "cliproxyapiNotDetected": "Tidak dikesan", "cliproxyapiImportAuthTitle": "Import akaun daripada CLIProxyAPI", @@ -7938,15 +7953,15 @@ "cliproxyapiImportAuthButton": "Import akaun", "payloadRulesTitle": "Peraturan Muatan", "payloadRulesDesc": "Konfigurasikan mutasi payload permintaan mengikut model dan protokol. Perubahan dikekalkan dalam tetapan dan dimuat semula secara langsung ke dalam runtime serta-merta selepas disimpan.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "lalai", "payloadRuleDefaultDesc": "Menerapkan parameter hanya apabila laluan sasaran tiada dalam payload keluar.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "ganti", "payloadRuleOverrideDesc": "Memaksa nilai ke dalam payload, menggantikan apa-apa sahaja yang sedia ada pada laluan tersebut.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "tapis", "payloadRuleFilterDesc": "Mengalih keluar parameter yang disekat daripada payload sebelum permintaan huluan dihantar.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Seperti default, tetapi nilai rentetan dihuraikan sebagai JSON terlebih dahulu jika boleh. Alias input legasi default-raw juga diterima semasa menyimpan.", - "payloadEditorTitle": "Editor", + "payloadEditorTitle": "Penyunting", "payloadEditorDesc": "Gunakan bentuk skema runtime: default, override, filter, defaultRaw. API ini juga menerima kunci input legasi default-raw.", "payloadEditorReady": "Sedia", "payloadResetInfo": "Editor ditetapkan semula kepada templat neutral. Simpan untuk menggunakannya.", @@ -7980,7 +7995,7 @@ "responsesStateTitle": "Keadaan Respons", "responsesStateDesc": "Kawal cara OmniRoute memajukan previous_response_id.", "responsesStateModeLabel": "Pengendalian previous_response_id", - "responsesStateModeAuto": "Auto", + "responsesStateModeAuto": "Automatik", "responsesStateModeStrip": "Buang", "responsesStateModePreserve": "Kekalkan", "responsesStateHint": "Auto membuang previous_response_id melainkan sambungan mendayakan storan OpenAI Responses secara eksplisit. Buang adalah paling selamat untuk klien tanpa keadaan seperti VS Code Custom Endpoint; konteks kemudiannya bergantung pada klien yang menghantar sejarah penuh.", @@ -7989,14 +8004,14 @@ "codexFastTierDesc": "Suntikan service_tier=keutamaan secara global untuk permintaan OpenAI Codex.", "codexFastTierHint": "Apabila didayakan, OmniRoute menambah service_tier=priority kepada permintaan Codex keluar untuk sambungan yang belum menentukan peringkat. Peringkat keutamaan memerlukan kunci API OpenAI Enterprise atau laluan ChatGPT-auth Codex; jenis kunci lain akan menerima ralat berkaitan peringkat daripada OpenAI. Tetapan per sambungan pada halaman penyedia Codex diutamakan.", "codexFastTierSaveError": "Gagal mengemas kini tetapan Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Ping Auto Kuota Codex", + "codexAutoPingDesc": "Pilih serta bagi setiap sambungan: menghantar permintaan kecil sejurus selepas tetingkap sesi Codex ditetapkan semula supaya ia sedia digunakan apabila anda memerlukannya.", + "codexAutoPingWarning": "Menggunakan sejumlah kecil kuota Codex sebenar pada setiap ping. Dimatikan secara lalai — dayakan hanya untuk sambungan yang anda gunakan secara aktif.", + "codexAutoPingSaveError": "Gagal mengemas kini tetapan Ping Auto Codex", + "codexAutoPingToggleAria": "Togol ping auto kuota Codex untuk {connection}", "codexFastTierTierLabel": "Tier perkhidmatan", "codexFastTierTierPriority": "Keutamaan", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Fleksibel", "codexFastTierTierDefault": "Lalai", "codexFastTierModelsLabel": "Model tier pantas", "codexFastTierModelsHint": "Hanya model yang ditandakan menerima service_tier apabila Fast Tier didayakan.", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Selang pemeriksaan global", "resilienceCredentialHealthEveryMinutes": "Setiap {minutes} min", "resilienceCredentialHealthHint": "0 mematikan imbasan latar (maks. 1440 min = 24 jam). Sambungan dengan nilai Pemeriksaan Kesihatan sendiri mengabaikan lalai global ini; 0 pada sesuatu sambungan mengeluarkannya walaupun imbasan global dihidupkan.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Sentiasa didayakan untuk {provider} — diperlukan untuk keselamatan akaun OAuth; tidak boleh dimatikan.", + "forcedFingerprintBadge": "Diperlukan", "sessionAffinityTitle": "Afiniti sesi", "sessionAffinityDesc": "Mengekalkan satu perbualan pada akaun yang sama selama bilangan saat ini, untuk mana-mana penyedia. 0 melumpuhkannya.", "sessionAffinityTtl": "TTL Afiniti (saat)", @@ -8172,7 +8187,7 @@ "cloudflareRelayProjectNameLabel": "Nama Worker", "cloudflareRelayFreeTierNote": "Peringkat percuma: 100,000 permintaan/hari bagi setiap akaun Cloudflare.", "cloudflareRelayDeploying": "Sedang deploy...", - "cloudflareRelayDeploy": "Deploy", + "cloudflareRelayDeploy": "Laksana", "cloudflareRelayCredsRequired": "ID Akaun dan Token API diperlukan", "cloudflareRelayDeployFailed": "Deploy gagal", "modelLockout": "Sekatan Model", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "Bilangan maksimum langkah backoff sebelum cooldown berhenti meningkat. Had Cooldown Maksimum dicapai terlebih dahulu dalam kebanyakan konfigurasi, menjadikannya siling keselamatan apabila Cooldown Maksimum dinaikkan.", "disableSessionStickiness": "Nyahdayakan kelekatan sesi", "disableSessionStickinessDesc": "Kombinasi round-robin dan rawak bertukar ke sambungan yang berbeza pada setiap permintaan dan bukannya menyematkan keseluruhan perbualan pada satu sambungan melalui hash mesej pertama. Biarkan dimatikan untuk mengekalkan hit cache prompt bagi sembang berbilang giliran. Penggantian bagi setiap kombinasi diutamakan.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Penghalaan kelokalan cache gesaan", + "promptCacheAffinityDesc": "Utamakan akaun penyedia yang sama untuk kunci cache gesaan yang sepadan sambil mengekalkan pertukaran semasa kegagalan berdasarkan kesihatan dan kuota.", + "reasoningTokenBuffer": "Penimbal token penaakulan", + "reasoningTokenBufferDesc": "Benarkan penghalaan gabungan menambah ruang tambahan max_tokens hanya untuk model penaakulan yang diketahui apabila penimbal penuh muat dalam had output yang diketahui.", + "zeroLatencyOptimizations": "Pengoptimuman kependaman sifar", + "zeroLatencyOptimizationsDesc": "Pilih serta untuk perlindungan nilai, langkauan TTFT ramalan dan pemampatan sandaran proaktif. Biarkan dimatikan untuk menghalang ciri kependaman ini daripada menjalankan sasaran secara serentak atau memampatkan permintaan sandaran.", "credentialRedaction": "Redaksi Kredensial", "credentialRedactionDesc": "Redaksikan kunci API, token, dan rahsia daripada konteks yang dihantar kepada penyedia dan daripada respons.", "enableCredentialRedaction": "Dayakan penyuntingan kelayakan", "enableCredentialRedactionDesc": "Membersihkan kunci API, token, kunci peribadi, dan JWT daripada mesej, panggilan alat, dan respons.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Penyegerakan Automatik Dilumpuhkan", + "pricingAutoSyncEnabled": "Penyegerakan Automatik Didayakan", "modalityBridgeIntro": "Tukarkan kandungan berbilang mod kepada teks sebelum sampai kepada model teks sahaja. Jambatan penglihatan, audio dan video tersedia serta boleh dikonfigurasi.", "modalityBridgeVisionTab": "Visi", "modalityBridgeAudioTab": "Audio", @@ -8243,7 +8258,7 @@ "modalityBridgeCacheTtlMinutes": "Cache TTL (minit)", "modalityBridgeCacheMaxEntries": "Cache maksimum entri", "modalityBridgeStatsBridged": "dijembatani", - "modalityBridgeStatsCacheHits": "cache hits", + "modalityBridgeStatsCacheHits": "padanan cache", "modalityBridgeStatsFailures": "kegagalan", "modalityBridgeStatsLastUsed": "terakhir digunakan", "modalityBridgeStatsNever": "tidak pernah", @@ -8309,7 +8324,7 @@ "oneproxyCountry": "Satuproxy Negara", "oneproxyDelete": "Oneproxy Padam", "oneproxyEmpty": "Oneproxy Kosong", - "oneproxyHost": "Oneproxy Host", + "oneproxyHost": "Hos Oneproxy", "oneproxyLatency": "Kelewatan Oneproxy", "oneproxyProtocol": "Protokol Oneproxy", "oneproxyQuality": "Kualiti Oneproxy", @@ -8355,7 +8370,7 @@ "routingOpMissingKind": "Op #{index}: `kind` hilang atau tidak sah", "routingOpUnknownKind": "Op #{index}: jenis tidak diketahui \"{kind}\"", "routingJsonEditorHide": "Sembunyikan penyunting JSON", - "routingJsonEditorImportExport": "Import / export JSON", + "routingJsonEditorImportExport": "Import / eksport JSON", "routingJsonEditorLabel": "JSON (edit dan terapkan, atau tampal untuk mengimport)", "routingApplyJson": "Terapkan JSON", "routingTransformsFootnote": "Semua operasi transform adalah idempotent pada pengulangan. Perubahan berkuat kuasa serta-merta pada permintaan seterusnya.", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Kesihatan", "cliproxyapiPort": "Pelabuhan", "qdrantHost": "Hos", - "qdrantCollection": "Koleksi", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Koleksi" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "Enjin RTK", + "description": "Pemampatan peka perintah untuk output alat, log terminal dan hasil binaan.", + "enabled": "Didayakan", + "intensity": "Keamatan", + "intensityMinimal": "Minimum", + "intensityStandard": "Piawai", + "intensityAggressive": "Agresif", + "toolResults": "Hasil alat", + "assistantMessages": "Mesej pembantu", + "codeBlocks": "Blok kod", "filterCatalog": "Katalog Penapis", "filterCatalogDesc": "Penapis keluaran yang tersedia mengikut kategori", "guidedConfig": "Konfigurasi", "guidedConfigDesc": "Laraskan cara RTK menapis output terminal anda", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Baris maksimum", + "maxChars": "Aksara maksimum", "deduplicateThreshold": "Nyahduplikasi ambang", "customFilters": "Penapis tersuai", "detectedType": "Jenis yang dikesan", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Kegagalan", "rawOutputAlways": "Sentiasa", "rawOutputMaxBytes": "Bait maksimum keluaran mentah", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Pengujian Penapis", + "pasteOutput": "Tampal output alat untuk menguji penapisan...", "presetHigh": "Agresif", "presetLow": "Cahaya", "presetMaxChars": "Aksara output maksimum", "presetMaxLines": "Garis keluaran maksimum", - "presetMedium": "Standard", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "presetMedium": "Piawai", + "run": "Jalankan", + "result": "Hasil", + "previewEmpty": "Jalankan sampel untuk pratonton output RTK.", + "detected": "Dikesan", "masterSwitchOffAlert": "Suis utama Token Saver adalah MATI — tetapan ini tidak akan mempengaruhi permintaan sehingga anda menghidupkannya dari halaman Titik Akhir.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Token ditapis", + "filtersActive": "Penapis aktif", + "requests": "Permintaan", + "avgSavings": "Purata penjimatan", "simpleMode": "Mudah", "advancedMode": "Maju", "searchFilters": "Cari penapis...", @@ -8511,7 +8518,7 @@ "description": "Klasifikasi token semantik berasaskan ONNX. Memampatkan prosa sahaja; blok kod dan binaan yang dipelihara dilindungi. Gagal buka jika berlaku ralat model atau pekerja." }, "lite": { - "name": "Lite", + "name": "Ringan", "description": "Pengurangan pantas ruang putih, hasil alat dan URL imej." }, "aggressive": { @@ -8601,7 +8608,7 @@ "bert-base": "BERT-base (710 MB, ketepatan lebih tinggi)" }, "intensity": { - "lite": "Lite", + "lite": "Ringan", "full": "Penuh", "ultra": "Ultra" } @@ -8609,34 +8616,34 @@ "modeOptions": { "default": "Paparansedia", "off": "Matikan", - "lite": "Lite", - "standard": "Standard", + "lite": "Ringan", + "standard": "Piawai", "aggressive": "Agresif", "ultra": "Ultra", "responsesToolOutput": "Keluaran alat respons" } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Gabungan Pemampatan", + "description": "Tentukan cara enjin digabungkan untuk senario penghalaan yang berbeza.", + "createCombo": "Cipta Gabungan Pemampatan", + "editCombo": "Sunting", + "deleteCombo": "Padam", + "deleteConfirm": "Padam gabungan pemampatan ini?", + "pipeline": "Saluran Paip", + "addStep": "Tambah Langkah", + "removeStep": "Alih Keluar", + "name": "Nama", + "descriptionField": "Penerangan", + "languagePacks": "Pek Bahasa", + "outputMode": "Mod Output", + "assignToRouting": "Tetapkan kepada Kombo Penghalaan", + "noAssignments": "Tiada kombo penghalaan tersedia", + "default": "Lalai", + "setAsDefault": "Tetapkan sebagai Lalai", + "save": "Simpan", + "cancel": "Batal", + "enabled": "Didayakan", "loading": "Memuatkan…", "hubTitle": "Hab Pemampatan", "hubDescription": "Pilih profil pemampatan yang dijalankan secara global.", @@ -8661,29 +8668,29 @@ "contextEditingNote": "Kini tersedia untuk Claude (Anthropic) sahaja. Ia adalah mod yang didelegasikan: penyedia mengosongkan blok penggunaan alat yang lama di sebelah pelayan — kami tidak menulis semula mesej tersebut. Ia tidak menjejaskan penyedia lain.", "namedCombos": "Kombo bernama", "namedCombosDescription": "Simpan talian paip yang berbeza dan tetapkan ia kepada kombo penghalaan tertentu.", + "activeProfileMasterSwitchOffWarning": "Profil aktif di bawah tidak akan berjalan sehingga suis utama \"Pemampatan Prom\" dihidupkan.", + "activeProfileMasterSwitchOffCta": "Hidupkannya dalam Tetapan", "comboNamePlaceholder": "Nama kombo", "descriptionPlaceholder": "Penerangan", "nameRequired": "Masukkan nama kombo sebelum menyimpan.", "pipelineRequired": "Tambah sekurang-kurangnya satu langkah talian paip sebelum menyimpan.", "saveComboFailed": "Gagal menyimpan kombo (HTTP {status}).", "deleteNamedConfirm": "Padam kombo “{name}”?", - "intensityLite": "Lite", + "intensityLite": "Ringan", "intensityFull": "Penuh", "intensityUltra": "Ultra", "active": "Aktif", "languagePacksList": "Pek bahasa: {packs}", "dragToReorder": "Seret untuk menyusun semula langkah", "engine": "Enjin", - "intensity": "Keamatan", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Keamatan" }, "compressionStudio": { "noRun": "Tiada larian pemampatan tersedia.", "liveDataHint": "Data langsung tiba melalui saluran pemampatan WebSocket.", "cockpitView": "Paparan kokpit", "canvas": "Kanvas", - "waterfall": "Waterfall", + "waterfall": "Bertingkat", "replayDone": "Main semula selesai", "pauseReplay": "Jeda main semula", "playReplay": "Mainkan main semula", @@ -8705,14 +8712,14 @@ "run": "Jalankan", "laneRejected": "ditolak: {reason}", "error": "ralat", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Pratonton saluran paip gabungan gagal: {reason}", "combinedFlow": "Aliran gabungan", "eachLayer": "Setiap lapisan secara berasingan", "diff": "Perbezaan", "combined": "digabungkan", "skipped": "langkau", - "input": "INPUT", - "output": "OUTPUT", + "input": "MASUKAN", + "output": "KELUARAN", "tokenCount": "{count, number} token", "tokenShort": "tok", "provider": "Penyedia", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Dayakan enjin", "enableDescription": "Berjalan terakhir dalam tindanan (selepas RTK/Caveman membersihkan teks, OmniGlyph menukar baki kepada imej) dan juga berjalan secara bersendirian melalui mod omniglyph. Ini ialah pratonton dan kekal dimatikan secara lalai sehingga pengesahan hujung-ke-hujung selesai.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Profil pemampatan", + "profileDescription": "Profil ialah had maksimum, bukannya had minimum: profil yang lebih ketat tidak boleh dilonggarkan semula oleh penggantian pada setiap langkah. Diukur pada pangkalan kod ini: dengan mod selamat untuk pengekodan atau seimbang, sesi yang belum mengumpulkan sejarah tidak memampatkan apa-apa, kerana kedua-duanya meningkatkan ambang aksara minimum dan mengekalkan prom sistem, skema alat serta hasil alat dalam bentuk asal.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agresif (lalai)", + "description": "Dasar yang diukur oleh resit yang diterbitkan. Memimejkan prom sistem, dokumentasi alat dan sejarah padat." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Seimbang", + "description": "Mengekalkan keadaan aktif dalam bentuk asal dan melindungi 8 pusingan terakhir; hanya meruntuhkan sejarah lama yang telah ditutup." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Selamat untuk pengekodan", + "description": "Mengekalkan autoriti, skema alat dan output alat aktif dalam bentuk asal, sambil melindungi 12 pusingan terakhir. Tidak memampatkan apa-apa sehingga sesi mengumpulkan sejarah." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Laluan terus", + "description": "Menghalakan tanpa mengubah. Enjin dilangkau dan permintaan dimajukan tanpa sebarang perubahan." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Pilih profil pemampatan OmniGlyph", "saved": "Disimpan.", "saveFailed": "Tidak dapat menyimpan.", "enableAria": "Dayakan enjin OmniGlyph", @@ -8901,38 +8908,38 @@ "save": "Simpan" }, "contextCaveman": { - "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "title": "Enjin Caveman", + "description": "Pemampatan mesej berasaskan peraturan, pek bahasa, analitik dan kawalan mod output.", "advancedConfig": "Konfigurasi Lanjutan", "advancedConfigDesc": "Perhalusi tingkah laku mampatan", "aggressiveSettings": "Tetapan Agresif", "aggressiveSettingsDesc": "Pemampatan maksimum dengan potensi pertukaran kualiti", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Permintaan", + "tokensSaved": "Token dijimatkan", + "savingsPercent": "Penjimatan %", + "avgLatency": "Purata kependaman", + "languagePacks": "Pek Bahasa", + "languagePacksDesc": "Dayakan peraturan pemampatan untuk bahasa tertentu.", "labelAutoTrigger": "Automampat apabila konteks melebihi", "labelCompressionRate": "Kekuatan mampatan", "labelMaxTokens": "Token sasaran setiap mesej", "labelMinLength": "Panjang mesej minimum", "labelMinSavings": "Token minimum untuk disimpan", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Didayakan", + "autoDetect": "Kesan bahasa secara automatik", + "rulesCount": "{count} peraturan", "inputCompressionTitle": "Pemampatan input", "inputCompressionDesc": "Tulis semula sejarah sembang dengan perkataan yang lebih pendek. Mengurangkan token input sebanyak ~50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Analitis Pemampatan", + "noAnalytics": "Belum ada analitis pemampatan.", "masterDisabledWarning": "Suis utama Penjimat Token adalah MATI — tetapan ini tidak akan mempengaruhi permintaan sehingga anda menghidupkannya dari Tetapan Pemampatan atau mengubahnya di sini.", "outputMode": "Mod Output", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Mod Output", "quickSettings": "Tetapan Pantas", "quickSettingsDesc": "Tetapan mampatan asas untuk bermula", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Pintasan Auto-Clarity", + "bypassConditions": "Syarat pintasan", "bypassConditionsList": "keselamatan, tidak boleh balik, penjelasan, peka perintah", "simpleMode": "Mudah", "advancedMode": "Maju", @@ -8944,9 +8951,9 @@ "ultraSettings": "Tetapan Ultra", "ultraSettingsDesc": "Pemampatan semantik berkuasa SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Berikan respons ringkas. Kekalkan istilah teknikal, kod, ralat, URL dan pengecam.", + "full": "Berikan respons padat dan ringkas. Kekalkan semua kandungan teknikal.", + "ultra": "Berikan respons amat ringkas dengan singkatan teknikal lazim. Kekalkan simbol tepat." } }, "translator": { @@ -8993,7 +9000,7 @@ "translationPathHubSpoke": "{source} → OpenAI (perantaraan) → {target}", "translationPathDirect": "{source} → {target} (penterjemah langsung)", "translationPathPassthrough": "Format yang sama — tiada terjemahan diperlukan", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "Perantaraan OpenAI", "autoFeaturesTitle": "Perkara yang dilakukan oleh OmniRoute secara automatik", "autoFeaturesCount": "8 ciri", "featureReasoningCache": "Cache Penaakulan", @@ -9130,7 +9137,7 @@ "clientRequestDescription": "Badan permintaan sebagai pelanggan anda akan menghantarnya", "formatDetected": "Format Dikesan", "formatDetectedDescription": "OmniRoute mengesan secara automatik format API daripada struktur permintaan", - "openaiIntermediate": "OpenAI Intermediate", + "openaiIntermediate": "Perantaraan OpenAI", "openaiIntermediateDescription": "Semua format mula-mula dinormalkan kepada format OpenAI (jambatan universal)", "providerFormat": "Format Pembekal", "providerFormatDescription": "Format OpenAI diterjemahkan kepada format asal pembekal", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Baki", "kiloPassRenews": "Diperbaharui dalam {count} hari", "kiloPassUsageLabel": "Penggunaan bulan ini", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Kredit Penggunaan Tambahan", + "kimiExtraUsage": "Penggunaan Tambahan", + "kimiExtraUsageEnabled": "Didayakan", + "kimiExtraUsageDisabled": "Dilumpuhkan", + "kimiExtraUsageFrozen": "Dibekukan", + "kimiExtraUsageUnavailable": "Tidak tersedia", + "kimiMonthlyUsed": "Digunakan bulan ini", + "kimiMonthlyLimit": "Had bulanan", + "kimiMonthlyLimitUnlimited": "Tanpa had", + "kimiAdditionalCredits": "Kredit Tambahan", "loggerTab": "Pembalak", "proxyTab": "proksi", "budgetManagement": "Pengurusan Belanjawan", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Pemutus Litar", "lockedIPs": "IP berkunci", "lockoutsAutoRefreshHint": "Kunci had kadar setiap model • Muat semula automatik 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# dikunci} other {# dikunci}}", "timeLeft": "{time} tinggal", "howItWorks": "Bagaimana Ia Berfungsi", "howItWorksSubtitle": "Ketahui cara penilaian mengesahkan respons LLM anda", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Model Dalam Ujian", "searchSuitesPlaceholder": "Cari suite...", "passSuffix": "lulus", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# kes} other {# kes}}", "runEval": "Lari Eval", "runAllSuites": "Jalankan Semua", "runAllRunning": "Berjalan semua...", "runAllProgress": "Berjalan {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# set ujian gagal} other {# set ujian gagal}}", "runAllCompleted": "Menjalankan {suites} suite — {passed} lulus, {failed} gagal", "runAllCompletedWithFailures": "Menjalankan {completed} suite; {failedSuites} gagal diselesaikan", "runningProgress": "Menjalankan {current}/{total}...", @@ -9397,7 +9404,7 @@ "notifyAllCasesPassed": "Semua kes {total} lulus ✅", "notifySomeCasesFailed": "{passed}/{total} lulus, {failed} gagal", "notifyEvalRunFailed": "Larian Eval gagal", - "notifyEvalTitle": "Eval: {name}", + "notifyEvalTitle": "Penilaian: {name}", "modelEvals": "Penilaian Model", "evalsHeroDescription": "Uji dan sahkan titik akhir LLM anda dengan menjalankan suite penilaian yang telah ditetapkan. Setiap suite mengandungi kes ujian yang menghantar gesaan sebenar melalui OmniRoute dan membandingkan respons dengan kriteria yang dijangkakan — membantu anda mengesan regresi, membandingkan model dan memastikan kualiti respons merentas penyedia.", "qualityValidation": "Pengesahan Kualiti", @@ -9423,7 +9430,7 @@ "providerLimits": "Had Pembekal", "noProviders": "Tiada Pembekal Disambungkan", "connectProvidersForQuota": "Sambung kepada pembekal dengan OAuth untuk menjejak had kuota dan penggunaan API anda.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# akaun} other {# akaun}}", "filteredFromCount": "(ditapis daripada {count})", "autoRefresh": "Muat semula automatik", "refreshAll": "Muat semula Semua", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Gagal mengemas kini keterlihatan kuota", "account": "Akaun", "modelQuotas": "Kuota Model", - "lastUsed": "Last Refreshed", + "lastUsed": "Kali Terakhir Disegar Semula", "actions": "Tindakan", "refreshQuota": "Muat semula kuota", "today": "Hari ini", @@ -9452,9 +9459,9 @@ "cardExpand": "Kembangkan", "cardCollapse": "Kuncupkan", "moreQuotas": "+{count} lagi", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Tidak dikumpulkan", + "viewFlat": "Rata", + "viewByEnvironment": "Mengikut Persekitaran", "noQuotaDataAvailable": "Tiada data kuota tersedia", "noAccountsForTierFilter": "Tiada akaun ditemui untuk penapis peringkat", "tierAll": "Semua", @@ -9465,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Tambahan pula", "tierFree": "Percuma", - "tierLite": "Lite", + "tierLite": "Ringan", "tierUnknown": "Tidak diketahui", "statTotal": "Jumlah", "statCritical": "Kritikal", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Tebus kredit", "resetCreditRedeemed": "Tetapan semula ditebus", "resetCreditRedeemFailed": "Gagal menebus kredit tetapan semula", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Gagal menyimpan set ujian", "clone": "Klon", "exportSuite": "Eksport", "importSuite": "Import", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "JSON suite eval tidak sah", "suiteBuilderCloneSuffix": "salinan", "suiteBuilderImportedSuite": "Suite Diimport", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", + "scorecardTitle": "Kad Skor", + "evalApiKey": "Kunci API", + "scorecardPassRate": "Kadar Lulus", "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "actualOutputLabel": "Output Sebenar", + "evalTargetHint": "Pilih model atau gabungan untuk dinilai.", + "suiteBuilderDeleted": "Set ujian berjaya dipadamkan", + "suiteBuilderCaseCardHint": "Tentukan gesaan input dan kriteria output yang dijangkakan.", + "nextResetUtc": "Tetapan semula seterusnya (UTC)", + "scorecardHint": "Kadar lulus teragregat merentas semua set ujian penilaian.", + "suiteLatestRunsHint": "Jalankan penilaian terkini bagi set ujian ini.", + "saving": "Menyimpan", + "suiteBuilderCaseModelLabel": "Model (pilihan)", + "evalControlsTitle": "Kawalan Penilaian", + "suiteBuilderEditTitle": "Edit Set Ujian Penilaian", + "suiteBuilderCaseStrategyLabel": "Strategi Pengesahan", + "notifySelectDifferentCompareTarget": "Sila pilih sasaran lain untuk perbandingan", + "recentRunsHint": "Menunjukkan pelaksanaan penilaian terkini. Klik pelaksanaan untuk melihat hasil terperinci.", + "evalCompareHint": "Bandingkan hasil dengan sasaran kedua secara pilihan.", + "suiteBuilderCaseInvalid": "Kes ini mempunyai ralat pengesahan. Sila betulkan sebelum menyimpan.", + "historyEmpty": "Belum ada sejarah penilaian", + "suiteBuilderUpdated": "Set ujian berjaya dikemas kini", + "resetInterval": "Selang Tetapan Semula", + "suiteBuilderCreateTitle": "Cipta Set Ujian Penilaian", + "activePeriodSpend": "Perbelanjaan Tempoh Aktif", + "evalApiKeyHint": "Pilih kunci API yang hendak digunakan untuk permintaan penilaian.", + "evalCompareOptional": "Bandingkan (pilihan)", + "suiteBuilderDeleteFailed": "Gagal memadamkan set ujian", + "suiteBuilderCaseSystemPromptPlaceholder": "Arahan sistem pilihan...", + "scorecardCases": "Kes", + "runCompletedWithScore": "Penilaian selesai — kadar lulus {score}%", + "suiteBuilderCustomBadge": "Tersuai", + "targetSuiteDefaults": "Tetapan lalai set ujian", + "suiteBuilderDeleteConfirm": "Adakah anda pasti mahu memadamkan set ujian ini? Tindakan ini tidak boleh dibuat asal.", + "suiteBuilderNameLabel": "Nama Set Ujian", + "scorecardSuites": "Set Ujian", + "evalCompareTarget": "Bandingkan Sasaran", + "suiteBuilderCaseModelPlaceholder": "cth. gpt-4o-mini", + "evalControlsHint": "Konfigurasikan sasaran penilaian dan kunci API anda, kemudian jalankan set ujian untuk mengesahkan kualiti model.", + "recentRunsTitle": "Jalankan Terkini", + "suiteBuilderCaseSystemPromptLabel": "Prom Sistem", + "suiteBuilderCaseExpectedPlaceholder": "cth. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "cth. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Tampalkan jawapan yang dijangkakan dengan tepat", "suiteBuilderCaseExpectedPlaceholderRegex": "cth. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Gunakan ungkapan biasa JavaScript tanpa membalut garis miring.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "cth. Set Ujian Kualiti Pengekodan", + "suiteBuilderAddCase": "Tambah Kes", + "cancel": "Batal", + "evalTarget": "Sasaran", + "suiteBuilderCaseNameLabel": "Nama Kes", + "weeklyLimitUsd": "Had Mingguan (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "cth. Tulis fungsi fibonacci dalam Python", + "suiteBuilderNameRequired": "Nama set ujian diperlukan", + "suiteBuilderCaseUserPromptLabel": "Prom Pengguna", + "daily": "Harian", + "resultErrorLabel": "Ralat", + "suiteBuilderBuiltInBadge": "Terbina dalam", + "suiteBuilderCaseCardTitle": "Kes Ujian", "suiteBuilderDuplicateCase": "Pendua", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "cth. 50.00", + "suiteBuilderCaseTagsHint": "Tag dipisahkan koma untuk menyusun kes ujian.", + "notifyEvalRunFailedWithReason": "Penilaian gagal: {reason}", + "weekly": "Mingguan", + "runEvalRunning": "Menjalankan penilaian...", + "delete": "Padam", + "resetTimeUtc": "Masa Tetapan Semula (UTC)", + "evalApiKeyAuto": "Auto (gunakan lalai)", + "suiteBuilderDescriptionPlaceholder": "Perihalan pilihan tentang perkara yang diuji oleh set ujian ini...", + "targetComparisonTitle": "Perbandingan Sasaran", + "save": "Simpan", + "suiteBuilderCreated": "Set ujian berjaya dicipta", + "suiteLatestRuns": "Jalankan Terbaharu", + "suiteBuilderCaseExpectedLabel": "Nilai Dijangka", + "historyLatency": "Kependaman", + "suiteBuilderCaseTagsPlaceholder": "cth. pengekodan, python", + "targetTypeCombo": "Gabungan", + "scorecardPassed": "Lulus", + "suiteBuilderCaseTagsLabel": "Tag", + "suiteBuilderNewSuite": "Set Ujian Baharu", + "notifyEvalLoadFailed": "Gagal memuatkan data penilaian", + "notConfigured": "Belum Dikonfigurasikan", + "suiteBuilderCaseNamePlaceholder": "cth. ujian fibonacci Python", + "intervalLabel": "Selang", + "suiteBuilderCreateAction": "Cipta Suit", + "suiteBuilderCasesHint": "Setiap kes menghantar prom dan mengesahkan respons.", + "suiteBuilderUpdatedAt": "Dikemas kini", + "errorBadge": "Ralat", + "suiteBuilderCasesTitle": "Kes Ujian", + "edit": "Sunting", + "monthly": "Bulanan", + "suiteBuilderCasesRequired": "Sekurang-kurangnya satu kes ujian diperlukan", + "weeklyLimitSummary": "Ringkasan had belanjawan mingguan", + "suiteBuilderDescriptionLabel": "Perihalan", + "targetComparisonHint": "Perbandingan keputusan penilaian antara sasaran secara sebelah-menyebelah.", + "compareCompletedWithScore": "Perbandingan selesai — kadar lulus {score}%", + "staleQuotaTooltip": "Penyegaran terakhir gagal — memaparkan data cache", "quotaThresholdLabel": "Min pergi", "quotaCutoffsColumnHelp": "Hentikan permintaan apabila baki kuota jatuh kepada peratusan ini atau lebih rendah.", "quotaCutoffsButtonDefault": "Lalai", @@ -9863,7 +9870,7 @@ "backToLogin": "Kembali ke Log Masuk", "forgotPassword": "Lupa kata laluan?", "continueWithOidc": "Teruskan dengan OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Kata laluan lalai: CHANGEME (melainkan INITIAL_PASSWORD telah ditetapkan)", "Authorization": "Keizinan", "Content-Disposition": "Kandungan-Pelupusan", "waitingForAuthorization": "Menunggu kebenaran...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Menunggu kebenaran Antigraviti...", "waitingForQoderAuthorization": "Menunggu kebenaran Qoder...", "exchangingCodeForTokens": "Bertukar kod untuk token...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Versi Node.js Tidak Serasi", + "nodeIncompatibleDesc": "Anda sedang menjalankan Node.js {version}, yang berada di luar dasar masa jalan selamat yang disokong oleh OmniRoute. Gunakan keluaran Node.js 20.x atau 22.x LTS yang telah ditampal.", + "nodeIncompatibleFixLabel": "Penyelesaian: pasang keluaran Node.js 22 LTS yang telah ditampal", + "nodeIncompatibleHint": "OmniRoute memerlukan Node.js 22.22.2+ (22.x LTS) atau 24.0.0+ (24.x LTS). Node 24 LTS disyorkan.", "resetViaAppDataTitle": "Tetapkan Semula melalui Data Aplikasi", "resetViaAppDataDescription": "Padam fail tetapan dari direktori data aplikasi untuk menetapkan semula kata laluan anda:", "quitDesktopApp": "Tutup aplikasi desktop OmniRoute sepenuhnya", @@ -9947,7 +9954,7 @@ "featureUnifiedEndpointDesc": "Akses semua pembekal melalui URL API standard tunggal.", "featureEasySetupTitle": "Persediaan Mudah", "featureEasySetupDesc": "Bangun dan jalankan dalam beberapa minit dengan arahan npx.", - "featureModelFallbackTitle": "Model Fallback", + "featureModelFallbackTitle": "Sandaran Model", "featureModelFallbackDesc": "Tukar pembekal secara automatik pada kegagalan atau kependaman tinggi.", "featureUsageTrackingTitle": "Penjejakan Penggunaan", "featureUsageTrackingDesc": "Analisis terperinci dan pemantauan kos merentas semua model.", @@ -9988,7 +9995,7 @@ "dataLocationWindows": "Windows:", "product": "produk", "dashboardLink": "Papan pemuka", - "changelog": "Changelog", + "changelog": "Log Perubahan", "resources": "Sumber", "documentation": "Dokumentasi", "npm": "NPM", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "Pembekal", "commonUseCases": "Kes Penggunaan Biasa", "clientCompatibility": "Keserasian Pelanggan", - "protocolsToc": "Protocols", + "protocolsToc": "Protokol", "apiReference": "Rujukan API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Rujukan API Pengurusan", + "managementApiDescription": "Titik akhir automasi untuk pendaftaran proksi, penugasan skop dan migrasi proksi legasi.", "method": "Kaedah", "path": "Laluan", "notes": "Nota", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Pasang OmniRoute sebagai Apl Web Progresif pada penyemak imbas Android, iOS dan desktop.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Jalankan OmniRoute tanpa antara muka pada Android melalui Termux. Akses papan pemuka daripada pelayar mudah alih anda.", "featureRoutingTitle": "Penghalaan Berbilang Penyedia", "featureRoutingText": "Halakan permintaan kepada 30+ pembekal AI melalui satu titik akhir serasi OpenAI. Menyokong sembang, respons, audio dan API imej.", "featureCombosTitle": "Kombo dan Pengimbangan", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "Gunakan OmniRoute sebagai URL asas yang stabil sambil memutarkan akaun atau gabungan penyedia di bawahnya.", "clientKimiBullet2": "Lebih suka model awalan dalam aliran pengekodan supaya sandaran dan jejak audit kekal eksplisit.", "clientKimiBullet3": "Gunakan `/v1/responses` apabila anda mahukan penghalaan gaya Respons asli untuk pelanggan yang menggunakan alat.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "Protokol: MCP & A2A", + "protocolsDescription": "OmniRoute menyediakan dua protokol operasi sebagai tambahan kepada API yang serasi dengan OpenAI: MCP untuk pelaksanaan alat dan A2A untuk aliran kerja antara ejen.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Gunakan MCP melalui stdio untuk membolehkan klien menemui dan memanggil alat OmniRoute dengan kebolehlihatan audit.", + "protocolMcpStep1": "Mulakan pengangkutan MCP dengan `omniroute --mcp`.", + "protocolMcpStep2": "Halakan klien MCP anda kepada pengangkutan stdio.", + "protocolMcpStep3": "Panggil `omniroute_get_health` dan `omniroute_list_combos` untuk mengesahkan kesambungan.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "Gunakan A2A JSON-RPC untuk menyerahkan tugasan secara segerak atau melalui penstriman SSE.", + "protocolA2aStep1": "Baca `/.well-known/agent.json` untuk penemuan ejen.", + "protocolA2aStep2": "Hantar permintaan `message/send` atau `message/stream` ke `POST /a2a`.", + "protocolA2aStep3": "Urus kitar hayat tugasan dengan `tasks/get` dan `tasks/cancel`.", + "protocolTroubleshootingTitle": "Penyelesaian Masalah Protokol", + "protocolTroubleshooting1": "Jika status MCP di luar talian, sahkan proses stdio sedang berjalan dan fail denyutan jantung sedang dikemas kini.", + "protocolTroubleshooting2": "Jika tugasan A2A kekal dalam keadaan `working`, periksa `/api/a2a/tasks/:id` dan strimkan peristiwa untuk keadaan akhir.", + "protocolTroubleshooting3": "Gunakan `/dashboard/mcp` dan `/dashboard/a2a` untuk kawalan operasi dan kebolehlihatan audit.", "endpointChatNote": "Titik akhir sembang serasi OpenAI (lalai).", "endpointResponsesNote": "Titik akhir API Respons (Codex, o-siri).", "endpointModelsNote": "Katalog model untuk semua pembekal yang disambungkan.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Tulis semula pembantu untuk pelanggan tanpa /v1.", "endpointRewriteResponsesNote": "Tulis semula pembantu untuk Respons tanpa /v1.", "endpointRewriteModelsNote": "Tulis semula pembantu untuk penemuan model tanpa /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Senaraikan item pendaftaran proksi yang disimpan (menyokong penomboran halaman).", + "mgmtProxiesCreateNote": "Cipta item proksi boleh guna semula dalam pendaftaran.", + "mgmtProxiesHealthNote": "Dapatkan metrik kesihatan 24 jam/berterusan bagi setiap proksi yang disimpan daripada log proksi.", + "mgmtProxiesBulkAssignNote": "Tetapkan atau kosongkan satu proksi merentas banyak ID skop dalam satu permintaan.", + "mgmtAssignmentsListNote": "Senaraikan penetapan proksi mengikut scope, scope_id atau proxy_id.", + "mgmtAssignmentsUpdateNote": "Tetapkan atau kosongkan proksi untuk skop global/penyedia/akaun/gabungan.", + "mgmtLegacyMigrationNote": "Import peta proxyConfig legasi ke dalam penetapan pendaftaran.", "modelPrefixesDescriptionStart": "Gunakan awalan pembekal sebelum nama model untuk menghala ke pembekal tertentu. Contoh:", "modelPrefixesDescriptionEnd": "laluan ke GitHub Copilot.", "provider": "Pembekal", @@ -10257,7 +10264,7 @@ "apiExplorerDescription": "Cuba ujian titik akhir OmniRoute secara langsung. Pilih titik akhir, konfigurasikan permintaan anda, dan lihat responsnya secara masa nyata.", "apiExplorerSseStarted": "Aliran SSE bermula — semak terminal/devtools untuk output masa nyata.", "apiExplorerError": "Ralat: {message}", - "apiExplorerAuth": "auth", + "apiExplorerAuth": "pengesahan", "apiExplorerResponseLabel": "Tindak Balas", "apiExplorerSelectEndpoint": "Pilih titik akhir untuk diterokai", "apiExplorerChooseApi": "Pilih API dari bar sisi untuk melihat butiran dan mencubanya secara langsung", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute ialah perisian sumber terbuka. Anda bebas untuk memeriksa, mengubah suai dan mengedarkannya di bawah syarat lesennya." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "Ejen CLI", + "description": "Temui ejen CLI yang dipasang pada sistem anda. Tambahkan ejen tersuai untuk pengesanan automatik.", + "refresh": "Segar Semula", + "installed": "Dipasang", + "notFound": "Tidak Ditemui", + "builtIn": "Terbina Dalam", + "custom": "Tersuai", + "remove": "Alih Keluar", + "addCustomAgent": "Tambah Ejen Tersuai", + "addCustomAgentDesc": "Daftarkan sebarang alat CLI untuk pengesanan. Alat tersebut akan diimbas secara automatik apabila disegar semula.", + "agentName": "Nama Ejen", + "binaryName": "Nama Binari", + "versionCommand": "Perintah Versi", + "spawnArgs": "Argumen Pelancaran", + "addAgent": "Tambah Ejen", + "scanning": "Mengimbas sistem untuk ejen CLI...", + "opencodeIntegration": "Integrasi OpenCode", + "opencodeDetected": "opencode {version} dikesan", + "opencodeDesc": "Jana {configFile} sedia digunakan dengan URL asas OmniRoute anda dan semua model yang tersedia — letakkannya dalam akar projek anda dan jalankan {command}.", + "downloadConfig": "Muat turun {file}", + "downloaded": "Dimuat turun!", + "setupGuideTitle": "Panduan persediaan", + "openCliTools": "Buka Alat CLI", + "setupGuideDetectCliTitle": "Kesan CLI yang dipasang", + "setupGuideDetectCliDesc": "Klik Muat Semula selepas memasang atau mengemas kini CLI supaya OmniRoute boleh mengimbas semula binari dan versi.", + "setupGuideCustomAgentTitle": "Daftar binari tersuai", + "setupGuideCustomAgentDesc": "Gunakan Tambah Ejen Tersuai apabila CLI anda tiada dalam senarai terbina dalam. Berikan nama binari dan perintah versi.", + "setupGuideCommandMissingTitle": "Baiki 'command not found'", + "setupGuideCommandMissingDesc": "Pastikan perintah CLI wujud dalam PATH, buka sesi terminal baharu dan jalankan semula Muat Semula.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Pengurusan Cache", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Muat Semula", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Entri Memori", + "memoryEntriesSub": "LRU dalam memori", + "dbEntries": "Entri DB", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Padanan Cache", + "cacheHitsSub": "daripada {total} keseluruhan", + "tokensSaved": "Token Dijimatkan", + "tokensSavedSub": "Anggaran daripada padanan", + "hitRate": "Kadar Padanan", + "performance": "Prestasi Cache", + "autoRefresh": "Muat semula secara automatik setiap {seconds}s", + "hits": "Padanan", + "misses": "Tidak Padanan", + "total": "Jumlah", + "behavior": "Tingkah Laku Cache", + "behaviorDeterministic": "Hanya permintaan tanpa penstriman dengan temperature=0 dicache.", + "behaviorBypass": "Pintas dengan pengepala {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "TTL lalai: 30 minit. Konfigurasikan melalui {envVar}.", + "idempotency": "Lapisan Idempotensi", + "activeDedupKeys": "Kunci Penyahduplikasian Aktif", + "dedupWindow": "Tetingkap Penyahduplikasian", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Gagal mengosongkan cache.", + "unavailable": "Cache tidak tersedia", + "unavailableDesc": "Tidak dapat mendapatkan statistik cache. Pastikan pelayan sedang berjalan.", "loadingCacheAria": "Memuatkan cache", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Cache Prom (Bahagian Penyedia)", + "semanticCache": "Cache Semantik", + "promptCacheSectionDesc": "Memaparkan aktiviti cache gesaan di pihak penyedia daripada sejarah penggunaan supaya anda dapat melihat tempat kawalan cache aktif dan jumlah input yang digunakan semula.", + "promptTrendDesc": "Jumlah permintaan setiap jam, liputan cache dan jumlah bacaan cache sepanjang 24 jam yang lalu.", + "cachedRequests": "Permintaan Dicache", + "cachedRequests24h": "Permintaan Dicache (24j)", + "cacheHitRate": "Kadar Capaian Cache", + "cacheRate": "Kadar Cache", + "cacheRateDesc": "daripada jumlah permintaan", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Metrik Cache Gesaan", + "withCacheControl": "Dengan Kawalan Cache", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Nisbah Penggunaan Semula Cache", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Anggaran Kos Dijimatkan", + "lastUpdated": "Kemas kini terakhir", + "hoursTracked": "jam dijejaki", + "busiestHour": "Waktu Paling Sibuk", + "peakCacheRate": "Kadar Cache Tertinggi", + "trendHour": "Jam", + "activityVolume": "Aktiviti", + "requestsShort": "permintaan", + "inputShort": "Input", + "cachedShort": "Dicache", + "writeShort": "Tulis", + "resetting": "Menetapkan semula...", + "resetMetrics": "Tetapkan Semula Metrik", + "byProvider": "Pecahan mengikut Penyedia", + "providerCacheRateDesc": "Setiap penyedia memaparkan jumlah token input, token bacaan cache dan token penulisan cache supaya anda boleh mengesahkan nisbah penggunaan semula berbanding jumlah mentah.", "provider": "Provider", - "requests": "Requests", + "requests": "Permintaan", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Trend Cache (24j)", + "peakCached": "Cache tertinggi", + "cached": "Dicache", + "overview": "Gambaran Keseluruhan", "tableProvider": "Penyedia", "tableModel": "Model", "performanceTitle": "Prestasi", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "Cache respons deterministik OmniRoute sendiri. Apabila didayakan, permintaan berulang tanpa penstriman dengan temperature=0 boleh disampaikan secara setempat tanpa menghubungi penyedia huluan.", + "semanticCacheDisabledDesc": "Cache semantik dinyahdayakan. OmniRoute akan melangkau penggunaan semula respons setempat sehingga anda menghidupkannya semula dalam Tetapan.", + "semanticEntriesDesc": "Rekod cache semantik tersimpan yang kini disimpan dalam SQLite. Aktiviti cache gesaan di pihak penyedia tidak disenaraikan di sini.", + "searchEntries": "Cari entri...", + "search": "Cari", + "loading": "Memuatkan...", + "entriesLoadError": "Gagal memuatkan entri cache semantik.", + "noEntries": "Tiada entri cache ditemukan", + "noPromptCacheData": "Belum ada aktiviti cache gesaan di pihak penyedia direkodkan.", + "noTrendData": "Tiada aktiviti cache gesaan direkodkan sepanjang 24 jam yang lalu.", + "signature": "Tandatangan", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Dicipta", + "expires": "Tamat Tempoh", + "actions": "Tindakan", + "deduplicatedRequests": "Permintaan Dinyahduplikasi", + "savedCalls": "Panggilan API yang Dijimatkan", + "totalProcessed": "Jumlah Permintaan Diproses", + "disabled": "Dilumpuhkan", + "totalRequests": "Jumlah Permintaan", "reasoningCache": "Main Semula Penaakulan", "reasoningCacheDesc": "Mengekalkan pemikiran model untuk aliran panggilan alat berbilang pusingan", "reasoningEntries": "Penyertaan Aktif", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes}m lalu", "hoursAgo": "{hours}j lalu", "daysAgo": "{days}h lalu", - "entries": "Entries" + "entries": "Entri" }, "proxyConfigModal": { "levelGlobal": "Global", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "Tampal kunci API Devin yang sedia ada dari sesi Devin yang telah disahkan. Ketersediaan eksport kunci dan langkah-langkah berbeza mengikut versi Devin dan akaun.", "devinPasteDescription": "Sila berikan WINDSURF_API_KEY anda (diperoleh melalui `devin auth login`, atau melalui perintah IDE Windsurf \"Windsurf: Provide Auth Token\").", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "Bina auth.json Grok", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Kunci API / Token", "saving": "Menyimpan…", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Sambungkan IDE Kursor", - "tabLogin": "Login with Cursor", + "tabLogin": "Log masuk dengan Cursor", "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "loginDescription": "Membuka log masuk pelayar Cursor. Berfungsi dalam Docker — luluskan dalam pelayar hos anda, kemudian kembali ke sini.", + "loginWithCursor": "Log masuk dengan Cursor", + "startingLogin": "Memulakan…", + "waitingApproval": "Menunggu kelulusan log masuk Cursor…", + "openUrlHint": "Jika pelayar tidak dibuka:", + "openLoginLink": "Buka halaman log masuk", + "cancelLogin": "Batalkan log masuk", "autoDetecting": "Token pengesan automatik...", "readingFromCursor": "Membaca daripada Cursor IDE atau cursor-agent", "tokensAutoDetected": "Token berjaya dikesan secara automatik daripada Cursor IDE!", "cursorNotDetected": "IDE kursor tidak dikesan. Sila tampal token anda secara manual.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Berjalan dalam Docker? Sebaiknya gunakan Log masuk dengan Cursor. Import automatik IDE dan cursor-agent biasanya tidak tersedia dalam bekas. Lihat docs/providers/CURSOR-DOCKER.md.", "accessToken": "Token Akses", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Token Muat Semula", + "refreshTokenPlaceholder": "Pilihan — membolehkan token dimuat semula secara automatik", "required": "*", "accessTokenPlaceholder": "Token akses akan diisi secara automatik...", "machineId": "ID mesin", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Autokesan token gagal", "errorEnterToken": "Sila masukkan token akses", "errorImportFailed": "Import gagal", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Gagal memulakan log masuk Cursor", + "errorLoginPoll": "Log masuk Cursor gagal", + "errorLoginTimeout": "Log masuk Cursor tamat masa — cuba lagi" }, "pricingModal": { "title": "Konfigurasi Harga", @@ -10843,9 +10850,9 @@ "selectProxy": "Pilih {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Import Legasi", + "bulkAssign": "Tetapkan Secara Pukal", + "addProxy": "Tambah Proksi", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Uji", + "edit": "Sunting", + "delete": "Padam", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10906,7 +10913,7 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Gagal", "successRate": "{rate}% kejayaan", "avgLatency": "{latency}ms purata", "assignmentsCount": "{count} tugasan", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Strategi putaran", "poolStrategyHint": "round-robin mengitar ahli mengikut urutan; rawak memilih secara seragam; sticky mengekalkan satu ahli untuk satu tetingkap; dioptimumkan kependaman memilih yang terpantas berdasarkan log.", "poolStrategyFailed": "Gagal mengemas kini strategi putaran", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Giliran bergilir", "strategyRandom": "Rawak", - "strategySticky": "Sticky", + "strategySticky": "Kekal", "strategyLatency": "Dioptimumkan kependaman", "poolMembersLabel": "Ahli kolam ({count})", "poolNoMembers": "Belum ada proksi dalam kolam ini.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# laluan keluar} other {# laluan keluar}} digunakan oleh {connections, plural, one {# sambungan} other {# sambungan}} · sehingga {max} pada satu laluan keluar · {hours} j terakhir", + "poolEgressObservationEmpty": "Tiada trafik dikesan dalam tempoh {hours} j terakhir", + "poolEgressObservationHint": "Dikira daripada log proksi sepanjang tempoh tersebut: IP egress berbeza yang dikesan untuk ahli kumpulan ini dan sambungan OmniRoute yang menggunakannya. \"Pada satu laluan keluar\" bermaksud sepanjang tempoh tersebut, bukan pada masa yang sama. Sekatan 429 bagi setiap IP hanya menjeda sambungan daripada keluarga penyedia yang sama.", "poolRemove": "Alih keluar", "poolRemoveFailed": "Gagal mengalih keluar proksi daripada kolam", "poolAddLabel": "Tambah proksi", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", + "endpoint": "Titik akhir", + "provider": "Penyedia", "model": "Model", "accountKey": "Account Key", "autoAccounts": "Auto ({count} akaun)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Hantar", + "cancel": "Batal", + "audioFile": "Fail Audio", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Kosongkan Semua", + "request": "Permintaan", + "response": "Respons", + "transcription": "Transkripsi", + "copy": "Salin", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Imej {count} dihasilkan", "generatedImage": "Imej yang dihasilkan {index}", - "save": "Save", + "save": "Simpan", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Respons", "completions": "Penyempurnaan", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Pembenaman", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Moderasi", - "rerank": "Rerank", + "rerank": "Susun Semula", "search": "Search", "webFetch": "Ambilan web" }, "conversationalChat": "Sembang Perbualan", "clearChat": "Kosongkan sembang", "typeMessagePlaceholder": "Taip mesej... (Shift+Enter untuk baris baharu)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Sembang", + "tabCompare": "Bandingkan", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Bina", + "configPane": "Konfigurasi", + "systemPrompt": "Prom sistem", + "systemPromptPlaceholder": "Anda ialah pembantu yang suka menolong.", + "modelPlaceholder": "cth. openai/gpt-4o", + "endpointLabel": "Titik akhir", + "parametersLabel": "Parameter", + "collapseConfig": "Runtuhkan anak tetingkap konfigurasi", + "expandConfig": "Kembangkan anak tetingkap konfigurasi", + "temperature": "Suhu", + "maxTokens": "Token maksimum", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Penalti kehadiran", + "frequencyPenalty": "Penalti kekerapan", "reasoningLabel": "Penaakulan", "thinking": "Pemikiran", "effort": "Usaha", "effortDefault": "Lalai", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Rawak (biarkan kosong)", + "presetsLabel": "Pratetap", + "loadPreset": "Muatkan pratetap", + "savePreset": "Simpan pratetap", + "noPresets": "Tiada pratetap", + "presetNamePlaceholder": "Nama pratetap", + "savingPreset": "Menyimpan…", + "nameRequired": "Nama diperlukan", + "failedToSavePreset": "Gagal menyimpan pratetap", + "improvePrompt": "Perbaik gesaan", + "improvingPrompt": "Sedang memperbaik…", + "improvePromptTitle": "Perbaik gesaan anda dengan AI", + "setModelFirst": "Tetapkan model terlebih dahulu", "setModelInConfigFirst": "Tetapkan model dalam panel Konfigurasi terlebih dahulu.", "improvePromptFailed": "Gagal menambah baik gesaan.", "improvePromptAria": "Tambah baik gesaan menggunakan AI", "confirmImprovePrompt": "Sahkan tambah baik gesaan", "improvePromptDescription": "Ini akan menghantar gesaan sistem semasa anda ke untuk menjana versi yang lebih baik.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Ini akan menggunakan kuota daripada model yang dikonfigurasikan dalam Config.", + "improveConfirm": "Perbaik", + "exportCode": "Eksport kod", + "exportCodeTitle": "Eksport Kod", "exportShort": "Eksport", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Tiada keadaan playground tersedia untuk dieksport.", "closeExportModal": "Tutup modal eksport", "close": "Tutup", "exportRealKeyWarning": "Amaran keselamatan: eksport disekat — kunci API sebenar telah dikesan dalam output. Sila tetapkan semula kunci API anda dan cuba lagi.", @@ -11071,12 +11078,12 @@ "copyLangCode": "Salin kod {language}", "loadingPresets": "Memuatkan…", "loadPresetPlaceholder": "Muat pratetap…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", + "copyCode": "Salin", + "copiedCode": "Disalin!", + "addModel": "+ Tambah model", + "runAll": "Jalankan semua", + "cancelAll": "Batalkan semua", + "maxColumnsReached": "Maksimum {max} lajur", "modelPlaceholderCompare": "Model (Cmd+K)…", "noModel": "Tiada model", "statusLabel": "Status: {status}", @@ -11095,29 +11102,29 @@ "waitingForResponse": "Menunggu respons…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "anggaran sebelah klien", + "tokensLabel": "Token", + "costLabel": "Kos", + "costEstimated": "(dianggarkan)", "ttftTitle": "Masa untuk token pertama (anggaran pihak klien)", "tpsTitle": "Token sesaat (anggaran pihak klien)", "tokenCountsTitle": "Token gesaan ↑ / Token pelengkap ↓", "estimatedCostTitle": "Anggaran kos (tidak dijamin tepat)", - "toolsLabel": "Tools", + "toolsLabel": "Alat", "toolsCount": "Alatan ({count})", - "addTool": "Add tool", + "addTool": "Tambah alat", "editTool": "Edit alat {name}", "removeTool": "Alih keluar alat {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Nama fungsi", "toolNameRequiredPlaceholder": "Nama fungsi *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Penerangan (pilihan)", "toolParamsLabel": "Parameter (skema JSON)", "toolParamsJsonSchema": "Skema JSON untuk parameter", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parameter mestilah JSON yang sah", + "structuredOutputLabel": "Output Berstruktur", + "enableJsonMode": "Dayakan mod JSON", + "disableJsonMode": "Nyahdayakan mod JSON", + "invalidJson": "JSON tidak sah", "jsonMode": "Mod JSON", "jsonModeDescription": "Memaksa response_format: json_schema", "schemaName": "Nama skema", @@ -11128,7 +11135,7 @@ "seed": "Benih", "stopSequences": "Jujukan henti", "stopSequencesPlaceholder": "cth. \"\\n\\n\" atau \"END\"", - "autoProvider": "Auto", + "autoProvider": "Automatik", "httpError": "Ralat {status}", "requestCancelled": "Permintaan dibatalkan", "networkError": "Ralat rangkaian", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} lajur", "addModelToCompare": "Tambah lajur model untuk membandingkan", "modelsSimultaneously": "Sehingga {max} model secara serentak", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Sedang berjalan…", + "runLabel": "Jalankan", + "enterToolResult": "Masukkan hasil alat…", "build": { "step1Label": "Apakah yang ingin diuji?", "step2Label": "Konfigurasi", @@ -11179,7 +11186,7 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Titik akhir", "apiKey": "Kunci API", "model": "Model", "voice": "Suara", @@ -11207,7 +11214,7 @@ "play": "Main", "query": "Kueri", "numResults": "Hasil maksimum", - "prompt": "Prompt", + "prompt": "Prom", "size": "Saiz", "duration": "Durasi", "question": "Soalan", @@ -11250,73 +11257,73 @@ "stop": "Henti" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", + "recording": "Merakam", + "paused": "Dijeda", + "pipelineLogsOn": "Log pipeline dihidupkan", + "pipelineLogsOff": "Log pipeline dimatikan", + "updatingPipelineLogs": "Sedang mengemas kini log pipeline...", + "updatePipelineFailed": "Gagal mengemas kini pengelogan pipeline", + "capturePipeline": "Tangkap muatan pipeline untuk permintaan baharu", + "searchPlaceholder": "Cari model, penyedia, akaun, kunci API, kombo...", + "allProviders": "Semua penyedia", + "allModels": "Semua model", + "allAccounts": "Semua akaun", + "allApiKeys": "Semua kunci API", + "total": "Jumlah", + "ok": "Berjaya", + "err": "Ralat", + "combo": "Kombo", + "keys": "Kunci", + "shown": "Ditunjukkan", + "sortNewest": "Terbaharu", + "sortOldest": "Terlama", + "sortTokensDesc": "Token ↓", + "sortTokensAsc": "Token ↑", + "sortDurationDesc": "Tempoh ↓", + "sortDurationAsc": "Tempoh ↑", "sortStatusDesc": "Status ↓", "sortStatusAsc": "Status ↑", "sortModelAsc": "Model A-Z", "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortLogs": "Isih log", + "refresh": "Muat semula", + "columnsLabel": "Lajur", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "AKTIF", + "semantic": "Semantik", + "upstream": "Huluan", + "semanticCacheHit": "Padanan cache semantik (disediakan oleh OmniRoute)", + "upstreamResponse": "Respons penyedia huluan", + "noApiKey": "Tiada kunci API", + "requestedRoutedTitle": "Meminta {requested}, dihalakan sebagai {routed}", "statusFilters": { - "all": "All", + "all": "Semua", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Berjaya", + "combo": "Gabungan" }, "columns": { "status": "Status", - "cacheSource": "Cache Source", + "cacheSource": "Sumber Cache", "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "requested": "Diminta", + "provider": "Penyedia", + "protocol": "Protokol Permintaan", + "account": "Akaun", + "apiKey": "Kunci API", + "combo": "Gabungan", + "tokens": "Token", "compressed": "Mampatan", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Tempoh", + "time": "Masa", + "conversation": "Perbualan", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Memuatkan log...", + "noLogs": "Belum ada log. Buat beberapa panggilan API untuk melihatnya di sini.", + "noMatchingLogs": "Tiada log yang sepadan dengan penapis semasa.", + "callLogsInfo": "Log panggilan juga disimpan sebagai fail JSON di {dataDir} dan digilirkan berdasarkan {retentionDays} dan {maxEntries}.", "loadMore": "Muat Lebih Banyak", "loadingMore": "Memuatkan lebih banyak...", "correlationId": "ID Korelasi", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Artifak payload terperinci tidak lagi tersedia untuk entri log ini.", "payloadCorrupt": "Artifak payload terperinci tidak dapat dianalisis.", - "notAvailable": "N/A", + "notAvailable": "T/B", "semanticCache": "Semantik (OmniRoute)", "upstreamCache": "Huluan (Penyedia)", "ariaLabel": "Butiran log permintaan", @@ -11417,59 +11424,59 @@ "correlationId": "ID Korelasi", "correlationIdValue": "ID Korelasi: {id}", "detailedPayloadInfo": "Aktifkan log terperinci terlebih dahulu jika anda ingin pandangan muatan klien/pemberi perkhidmatan empat peringkat untuk permintaan baru.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Salin semua", + "copiedAll": "Semua telah disalin" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", + "filterAll": "Semua", + "filterErrors": "Ralat", + "filterSuccess": "Berjaya", + "filterTimeout": "Tamat masa", "colStatus": "Status", - "colProxy": "Proxy", + "colProxy": "Proksi", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "Jenis", + "colLevel": "Tahap", + "colProvider": "Penyedia", + "colTarget": "Sasaran", + "colLatency": "Kependaman", + "colClientIp": "IP Klien", + "colTime": "Masa", + "recording": "Rakaman", + "paused": "Dijeda", + "searchPlaceholder": "Cari hos, penyedia, sasaran, IP...", + "allTypes": "Semua Jenis", + "allLevels": "Semua Tahap", + "allProviders": "Semua Penyedia", + "total": "jumlah", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "Ralat", + "timeoutShort": "Tamat Masa", + "direct": "terus", + "newest": "Terbaharu", + "oldest": "Terlama", + "latencyDesc": "Kependaman ↓", + "latencyAsc": "Kependaman ↑", + "refresh": "Muat semula", + "columns": "Lajur", + "loadingProxyLogs": "Memuatkan log proksi...", + "noProxyLogs": "Belum ada log proksi. Konfigurasikan proksi dan buat panggilan API untuk melihatnya di sini.", + "noMatchingLogs": "Tiada log yang sepadan dengan penapis semasa.", + "tlsFingerprint": "Cap Jari TLS Chrome 124", "colPublicIp": "IP Awam" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "speech": "Pertuturan", + "search": "Carian", + "images": "Imej", + "chat": "Sembang", + "music": "Muzik", + "responses": "Respons", + "rerank": "Pemeringkatan Semula", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Pembenaman", + "transcription": "Transkripsi" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Masa Jalan", + "description": "Kebolehcerapan masa nyata — daya tahan 3 lapisan + sesi + amaran kuota", + "pause": "Jeda", + "resume": "Sambung", + "refreshNow": "Segarkan sekarang", + "kpiSessions": "Sesi", + "kpiCircuits": "Litar", + "kpiCooldowns": "Tempoh Bertenang", + "kpiLockouts": "Penguncian", + "hintStickyBound": "{count} terikat secara kekal", + "hintRecovering": "{count} sedang pulih", + "hintAllHealthy": "semuanya sihat", + "hintOpen": "terbuka", + "hintConnsCooling": "sambungan dalam tempoh bertenang", + "hintModelsBlocked": "model disekat", + "resilienceTitle": "Daya Tahan 3 Lapisan", + "resilienceSubtitle": "Mencerminkan model daya tahan yang didokumenkan", + "providersHealthy": "{percent}% penyedia sihat", + "layer": "Lapisan {n}", + "layer1Title": "Pemutus Litar Penyedia", + "layer1Desc": "Hentikan trafik kepada penyedia yang gagal pada peringkat huluan", + "layer2Title": "Tempoh Bertenang Sambungan", + "layer2Desc": "Langkau satu akaun/kunci yang bermasalah; sambungan lain terus berkhidmat", + "layer3Title": "Sekatan Model", + "layer3Desc": "Sekatan had kadar mengikut model; sambungan yang sama masih menyediakan model lain", + "badgeAffectedOf": "{affected} daripada {total} terjejas", + "badgeCooling": "{count} sedang bertenang", + "badgeLocked": "{count} disekat", + "emptyCircuits": "Belum ada pemutus litar yang aktif", + "emptyCooldowns": "Tiada tempoh bertenang sambungan yang aktif", + "emptyLockouts": "Tiada sekatan model", + "moreCooldowns": "+{count} lagi tempoh bertenang", + "moreLockouts": "+{count} lagi sekatan", + "feedTitle": "Suapan Langsung", + "feedSubtitle": "{count} peristiwa terakhir", + "feedFilterAll": "Semua", + "feedFilterCircuits": "Litar", + "feedFilterCooldowns": "Tempoh Bertenang", + "feedFilterLockouts": "Sekatan", + "feedFilterSessions": "Sesi", + "feedFilterQuotas": "Kuota", + "feedClear": "Kosongkan", + "feedEmptyWaiting": "Menunggu peristiwa... (disemak setiap 5 saat)", + "feedEmptyFiltered": "Tiada peristiwa yang sepadan dengan penapis ini", + "sessionsTitle": "Sesi Aktif", + "sessionsSubtitle": "Cap jari permintaan terikat secara lekat (langsung)", + "sessionsActive": "{count} aktif", + "sessionsEmptyTitle": "Tiada sesi aktif", + "sessionsEmptyHint": "Sesi muncul apabila permintaan melalui proksi", + "tblSession": "Sesi", + "tblAge": "Usia", + "tblIdle": "Melahu", + "tblReqs": "Permintaan", + "tblBoundTo": "Terikat kepada", + "topApiKeys": "Kunci API teratas", + "quotaMonitorsTitle": "Pemantau Kuota", + "quotaMonitorsSubtitle": "Status kuota langsung bagi setiap tetingkap akaun", + "openQuota": "Kuota Terbuka", + "allQuotasHealthy": "Semua kuota dalam keadaan baik", + "statusExhausted": "HABIS", + "statusAlerting": "MEMBERI AMARAN", + "statusError": "RALAT", + "moreSuffix": "+{count} lagi" }, "quotaShare": { "weightPercent": "Pemberat %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Perkongsian Kuota", + "description": "Kongsi kuota penyedia merentas kekunci API dengan had %", + "newPool": "Kumpulan baharu", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Konfigurasi disimpan dalam localStorage (belum dikekalkan pada pelayan). Penguatkuasaan had bagi setiap permintaan masih belum disepadukan ke dalam saluran proksi. Skrin ini membolehkan anda mereka bentuk dan menggambarkan pembahagian kuota; penguatkuasaan sebenar akan dilaksanakan dalam iterasi akan datang dengan pengekalan DB dan pemintasan panggilan huluan.", + "kpiActivePools": "Kumpulan aktif", + "kpiKeysAllocated": "Kekunci diperuntukkan", + "kpiAvgUnallocated": "Purata tidak diperuntukkan", + "kpiProvidersWithQuota": "Penyedia dengan kuota", + "emptyTitle": "Tiada kumpulan dikonfigurasikan", + "emptyDescription": "Cipta kumpulan untuk menetapkan kekunci API agar berkongsi tetingkap kuota penyedia dengan peruntukan %.", + "loading": "Memuatkan…", + "removePool": "Alih keluar kumpulan", + "removeConfirm": "Alih keluar kumpulan ini?", + "pool": "Kumpulan", + "used": "digunakan", + "allocationsCount": "Peruntukan ({count})", + "allocatedFree": "{allocated}% diperuntukkan · {free}% bebas", + "noAllocations": "Belum ada kekunci diperuntukkan", + "capLabel": "had {value}", + "notTrackedYet": "(belum dijejaki)", + "policy": "Dasar", "apiKeyColumn": "Kunci API", "weightColumn": "Pemberat", "fairShareShort": "saksama", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "ketat", + "policySoft": "longgar", + "policyBurst": "lonjakan", + "policyHardHint": "Sekat apabila kekunci kehabisan peruntukan", + "policySoftHint": "Benarkan lebihan, makluman sahaja", + "policyBurstHint": "Benarkan lonjakan menggunakan kumpulan bebas", + "editAllocations": "Edit peruntukan", + "newPoolTitle": "Kumpulan kuota baharu", + "providerConnection": "Sambungan penyedia (akaun)", + "selectConnection": "Pilih sambungan…", + "noEligibleConnections": "Tiada sambungan dengan data kuota. Segar semula daripada /dashboard/quota dahulu.", + "quotaWindow": "Tetingkap kuota", + "selectWindow": "Pilih tetingkap…", + "alreadyUsedSuffix": "(sudah digunakan)", + "windowReset": "Tetapkan semula", + "duplicatePoolError": "Kumpulan untuk sambungan + tetingkap ini sudah wujud", + "cancel": "Batal", + "createPool": "Cipta kumpulan", + "editTitle": "Edit peruntukan", + "noKeysAdded": "Tiada kunci diperuntukkan. Tambahkan satu di bawah.", + "totalLabel": "Jumlah: {percent}%", + "totalExceeded": "⚠ melebihi 100%", + "addKey": "+ Tambah kunci…", + "equalSplit": "Bahagikan sama rata", + "save": "Simpan peruntukan", "betaPreviewLabel": "Beta — pratonton UI.", "betaConfigSavedPrefix": "Konfigurasi disimpan dalam", "betaConfigSavedSuffix": "(belum berterusan pada pelayan). Penguatkuasaan had setiap permintaan belum disambungkan ke saluran paip proksi. Skrin ini membolehkan anda mereka bentuk dan menggambarkan pembahagian kuota; penguatkuasaan sebenar akan tiba dalam lelaran masa depan dengan kegigihan DB dan pemintasan panggilan huluan.", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "URL Asas", "endpointsCollapse": "Kuncupkan", "endpointsExpand": "Kembangkan", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Natif Anthropic", "endpointsResponsesNote": "Respons OpenAI — codex/github", "endpointsWsNote": "WebSocket — codex sahaja", "betaText": "Kongsi Kuota berfungsi tetapi pepijat dijangka berlaku. Menemui satu? Sila laporkannya.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Kumpulan ini masih mempunyai kolam — peruntukkan semula atau padamkannya terlebih dahulu.", "ungroupedTitle": "Tanpa kumpulan", "ungroupedHint": "Kolam ini tidak diperuntukkan kepada kumpulan yang dikenali. Edit kolam untuk memindahkannya ke dalam kumpulan sebenar.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Tidak dapat mengalih keluar kumpulan ini.", + "dismiss": "Tutup" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", + "title": "Pemalam", + "description": "Pasang dan urus pemalam untuk memperluas fungsi OmniRoute", + "loading": "Memuatkan pemalam...", + "scanning": "Mengimbas...", + "scanForPlugins": "Imbas Pemalam", + "noPlugins": "Tiada pemalam dipasang", + "noPluginsDescription": "Letakkan direktori pemalam dalam ~/.omniroute/plugins/ dan klik Imbas.", + "activate": "Aktifkan", + "deactivate": "Nyahaktifkan", + "uninstall": "Nyahpasang", + "uninstallConfirm": "Nyahpasang pemalam \"{name}\"?", + "pluginScanComplete": "Imbasan pemalam selesai", + "pluginScanFailed": "Imbasan pemalam gagal", + "activated": "{name} diaktifkan", + "deactivated": "{name} dinyahaktifkan", + "activateFailed": "Gagal mengaktifkan {name}", + "deactivateFailed": "Gagal menyahaktifkan {name}", + "uninstalled": "{name} dinyahpasang", + "uninstallFailed": "Gagal menyahpasang {name}", + "configure": "Konfigurasikan: {name}", + "configurePlugin": "Konfigurasikan", + "noConfigSettings": "Pemalam ini tidak mempunyai tetapan yang boleh dikonfigurasikan.", + "saving": "Menyimpan...", + "saveConfiguration": "Simpan Konfigurasi", + "configurationSaved": "Konfigurasi disimpan", + "saveConfigurationFailed": "Gagal menyimpan konfigurasi", + "pluginNotFound": "Pemalam tidak ditemukan", + "version": "Versi", + "author": "Pengarang", + "description_label": "Penerangan", "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "enabled": "Didayakan", + "disabled": "Dilumpuhkan", "installedTab": "Dipasang", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Pasaran", "marketplaceUrlLabel": "URL Marketplace Tersuai", "marketplaceUrlPlaceholder": "Biarkan kosong untuk pendaftar rasmi Omniroute", "saveMarketplaceUrl": "Simpan & Muat Semula", @@ -11729,7 +11736,7 @@ "verified": "Disahkan", "install": "Pasang", "installedFromMarketplace": "Pemalam {name} dipasang!", - "hooks": "Hooks" + "hooks": "Cangkuk" }, "quotaPlans": { "title": "Pelan & Kuota", @@ -12179,7 +12186,7 @@ "acp": { "title": "Ejen ACP", "phrase": "CLI yang dimulakan oleh OmniRoute sebagai backend pelaksanaan (aliran songsang)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Kebanyakan pengguna boleh mengabaikan ini — gunakan hanya apabila sesuatu integrasi memerlukannya.", "flow": "Klien → OmniRoute → mulakan CLI (stdio/ACP) → respons", "seeOther": "Lihat →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI yang digunakan sebagai backend oleh Omni", "desc": "Pelaksanaan terbalik", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → lancarkan CLI → respons", "examples": "cth.: claude, codex (ACP)" } }, @@ -12217,7 +12224,7 @@ "versionNotFound": "tidak ditemui", "manualConfig": "Konfigurasi manual", "installGuide": "Panduan pemasangan", - "endpointLabel": "Endpoint", + "endpointLabel": "Titik akhir", "baseUrlFull": "URL Asas Penuh", "baseUrlPartial": "URL Asas Separa", "refreshDetection": "Segarkan pengesanan", @@ -12229,7 +12236,7 @@ "apply": "Simpan", "reset": "Kosongkan", "manualConfig": "Konfigurasi manual", - "vendor": "Vendor", + "vendor": "Pembekal", "category": "Jenis", "detectionStatus": "Pengesanan", "configStatus": "Konfigurasi", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhook", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Daftar, senaraikan, uji dan alih keluar titik akhir webhook. Konfigurasikan langganan peristiwa (request.completed, request.failed, quota.exceeded dan sebagainya) serta urus percubaan semula penghantaran." }, "omni-mcp": { "name": "Pelayan MCP", @@ -12390,11 +12397,11 @@ "description": "Titik akhir inferens teras yang serasi dengan OpenAI: penyelesaian sembang, benaman, imej, audio (TTS/STT), kesederhanaan, susun semula dan Responses API. Permukaan penyepaduan utama untuk ejen AI." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Sediakan", "description": "Mulakan, hentikan dan mulakan semula pelayan OmniRoute daripada CLI. Urus mod daemon, konfigurasi port, pemulihan auto, penyepaduan talam sistem dan pintasan buka papan pemuka." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Kesihatan", "description": "Semak kesihatan pelayan, status komponen dan metrik langsung daripada CLI. Jalankan `health`, `health components` dan `health watch` untuk papan pemuka masa nyata bagi pemutus litar dan status penyedia." }, "cli-providers": { @@ -12497,7 +12504,7 @@ }, "comparison": { "colAgent": "Kemahiran Ejen", - "colOmni": "Omni Skills", + "colOmni": "Kemahiran Omni", "whatIs": { "label": "Apakah ia", "agent": "SKILL.md boleh dibaca mesin yang mengajar ejen luaran untuk mengendalikan OmniRoute", @@ -12575,7 +12582,7 @@ "colScore": "Skor", "colAvgScore": "Skor Purata", "colModels": "Model", - "colType": "Type", + "colType": "Jenis", "filterConfiguredOnly": "Dikonfigurasikan sahaja", "filterAvailableOnly": "Tersedia sahaja", "filterAvailableOnlyHelp": "Sembunyikan penyedia yang semua sambungannya dihadkan kadar atau kehabisan kuota.", @@ -12589,14 +12596,14 @@ "typeApikey": "Kunci API", "sortTypeFirst": "Paling mudah dahulu", "sortTypeFirstHelp": "Kumpulkan mengikut usaha pendaftaran (Tanpa Pendaftaran → Log Masuk OAuth → Kunci API), mengekalkan susunan kualiti dalam setiap kumpulan", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Paling boleh dipercayai dahulu", + "sortByReliabilityHelp": "Susun penyedia mengikut bahagian panggilan yang berjaya dalam tempoh yang dipilih. Penyedia dengan bilangan panggilan yang terlalu sedikit untuk menentukan kadar akan mengekalkan susunan skor mereka, di bawah penyedia yang telah diukur.", "typeLegend": "Tanpa Pendaftaran = sifar persediaan · Log Masuk OAuth = log masuk dengan akaun anda sendiri · Kunci API = bawa kunci anda sendiri atau peringkat percuma penyedia tersebut", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Kebolehpercayaan", + "colReliabilityHelp": "Bahagian panggilan yang benar-benar dijawab oleh penyedia ini sepanjang 24 jam yang lalu. Tanda sengkang bermaksud trafik yang dikendalikannya terlalu sedikit untuk menyatakan kadar.", + "reliabilitySample": "{successes} daripada {requests} panggilan berjaya dalam {hours}j yang lalu", + "reliabilityTooFew": "Hanya {requests} panggilan dalam {hours}j yang lalu — terlalu sedikit untuk menyatakan kadar", + "reliabilityNoTraffic": "Tiada panggilan direkodkan dalam 24j yang lalu" }, "discovery": { "title": "Penemuan Penyedia", @@ -12682,7 +12689,7 @@ "beginner": "Pemula", "explorer": "Penjelajah", "expert": "Pakar", - "master": "Master", + "master": "Induk", "legend": "Legenda" }, "tiers": { @@ -12692,7 +12699,7 @@ "platinum": "Platinum", "diamond": "Berlian" }, - "tierLabel": "Tier: {tier}", + "tierLabel": "Tahap: {tier}", "dayStreak": "Rentetan {count} hari", "levelProgress": "Tahap {current} → {next}", "totalXpEarned": "{count} jumlah XP diperoleh", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Penyokong Radar", + "description": "Telah mengesahkan suapan langsung penyokong OmniRoute Radar", + "criteria": "Sahkan suapan langsung penyokong Radar yang ditandatangani." }, "first-token": { "name": "Token Pertama", @@ -12754,7 +12761,7 @@ "criteria": "Kongsi sejumlah 10,000 token dengan pengguna lain." }, "token-santa": { - "name": "Token Santa", + "name": "Santa Token", "description": "Berkongsi 100,000 token dengan orang lain", "criteria": "Kongsi sejumlah 100,000 token dengan pengguna lain." }, @@ -12948,8 +12955,8 @@ "description": "Benarkan berbilang sambungan untuk setiap nod keserasian." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Lumpuhkan Semakan Tetingkap Konteks", + "description": "Langkau semakan setempat OmniRoute bagi tetingkap konteks dan token input maksimum untuk permintaan langsung model tunggal. Penyedia huluan masih menguatkuasakan had sebenar mereka. Pemampatan prom dan had token output kekal aktif." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Alih keluar item output fasa ulasan dalaman daripada strim laluan Responses API sebelum memajukannya kepada pelanggan. Nyahdayakan bendera ini untuk menerima ulasan huluan mentah." @@ -12985,7 +12992,7 @@ "description": "Benarkan pemulihan strim untuk meminta respons semula dan mencantumkannya selepas bait telah sampai ke pelanggan." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Jadikan panggilan alat sambungan pertengahan strim selamat: jangan sekali-kali sambung semula strim yang terputus selepas panggilan alat dihantar (masih berlangsung atau sudah selesai), dan hentikan selepas satu sambungan kosong dan bukannya menggunakan keseluruhan had percubaan semula." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Tukar sekali ke sambungan adik-beradik apabila strim ditutup sebelum menghantar sebarang bingkai berguna dan cubaan semula terhad pada sambungan yang sama telah habis. Tanpa sambungan adik-beradik yang boleh digunakan, ralat early-EOF asal dikembalikan. Mati: early-EOF kekal muktamad selepas cubaan semula." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Dayakan akses rangkaian dalam kotak pasir kemahiran." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Gelung Alat Milik Pelayan", + "description": "Teruskan panggilan alat milik pelayan tanpa penstriman sehingga model mengembalikan respons yang boleh digunakan oleh klien." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Asal Usul Retry-After", + "description": "Pada respons tidak tersedia 429/503 yang diagregatkan, abaikan Retry-After apabila tiada masa percubaan semula masa hadapan yang khusus diketahui dan bukannya menghantar nilai sintetik 1s, tambahkan error.retry_after_provenance, dan baca petunjuk percubaan semula dalam bentuk prosa pada laluan pengosongan gabungan." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Hentian Infrastruktur Keutamaan Terlindung sebagai 502", + "description": "Berikan respons 502 dan bukannya 503 apabila sasaran keutamaan sandaran-kuota-sahaja menghentikan gabungan atas sebab yang dapat dibuktikan bukan berkaitan kuota: pemutus litar penyedia yang terbuka atau pelangkauan latensi ramalan." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Kesihatan Kombo", "callLogs": "Log Panggilan", "costs": "Kos", - "playground": "Playground", + "playground": "Ruang Uji", "nestedCombo": "Kombo bersarang", "modelTarget": "Sasaran model", "weight": "Pemberat {value}%", @@ -13171,7 +13182,7 @@ "segmentHint": "Setiap segmen = satu kolam percuma · kolam dinyahduplikasi, pengiraan jujur (tiada siling had kadar yang melambung).", "boost": "Nyahkunci ~{tokens} lagi/bln dengan tambah nilai OpenRouter $10 sekali sahaja (50 → 1000 perm/hari)", "uncapped": "Percuma selama-lamanya, tiada had diterbitkan (had kadar dikenakan) — akses sebenar, tidak dikira dalam tajuk utama:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/bln lagi di sebalik semakan identiti serantau (cth. pengesahan nama sebenar tanah besar China) — kuota sebenar, tidak dikira dalam angka utama:", "tosRestricted": "{count, plural, one {# model} other {# model}} ditandakan sebagai disekat ToS — anda tentukan", "provider": "Penyedia", "model": "Model", @@ -13270,80 +13281,80 @@ "viewFullHistory": "Lihat sejarah penuh di GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", + "title": "Dasar penghalaan penaakulan", + "apiKeyTitle": "Penghalaan penaakulan untuk kunci API ini", + "subtitle": "Halakan semula model dan tahap usaha penaakulan tanpa memerlukan sokongan klien. Permintaan kekal tidak berubah apabila tiada peraturan yang sepadan.", + "loadError": "Peraturan penaakulan tidak dapat dimuatkan.", + "saveError": "Peraturan tidak sah atau tidak dapat disimpan.", + "saved": "Peraturan penaakulan disimpan.", + "deleteConfirm": "Padamkan peraturan penaakulan ini?", + "deleteError": "Peraturan penaakulan tidak dapat dipadamkan.", + "empty": "Tiada peraturan penaakulan sepadan yang dikonfigurasikan.", + "all": "Semua", + "any": "Mana-mana", + "enabled": "Didayakan", + "disabled": "Dilumpuhkan", + "filterSearch": "Cari peraturan", + "filterScope": "Tapis mengikut skop", + "filterStatus": "Tapis mengikut status", + "allModels": "semua model", + "keepModel": "Kekalkan model", + "otherModel": "Model lain", + "combo": "Kombo", + "priorityShort": "keutamaan {value}", + "toggleAria": "Dayakan {name}", + "edit": "Sunting", + "delete": "Padam", + "name": "Nama", + "description": "Penerangan", + "scopeLabel": "Skop", + "apiKey": "Kunci API", + "sourceCombo": "Kombo sumber", + "connection": "Sambungan", + "sourceModel": "Model sumber atau kad bebas", + "sourceModelOptional": "Kosong = semua model", + "sourceModelExample": "cth. gpt-5*", + "sourceEffort": "Usaha sumber", + "missing": "Tidak dinyatakan", + "signalOnly": "Isyarat penaakulan bukan diskret", + "requestTags": "Tag permintaan", + "requestTagsExample": "pengekodan, dalaman", + "tagMode": "Pemadanan tag", + "effortMode": "Mod usaha", + "targetEffort": "Usaha sasaran", + "routingTarget": "Sasaran penghalaan", + "targetModel": "Model sasaran", + "targetCombo": "Kombo sasaran", + "budgetAction": "Bajet pemikiran", + "budgetTokens": "Token bajet", + "priority": "Keutamaan", + "saveChanges": "Simpan perubahan", + "add": "Tambah peraturan", + "cancel": "Batal", + "simulateTitle": "Simulasikan peraturan", "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "effort": "Usaha", + "transport": "Pengangkutan", + "simulate": "Simulasikan tanpa huluan", + "extendedComboWarning": "Max/Ultra disahkan secara berasingan untuk setiap sasaran kombo semasa penghalaan.", + "extendedUnknownWarning": "Masukkan model sasaran untuk mengesahkan sokongan Max/Ultra.", + "extendedUnsupportedWarning": "Max/Ultra hanya diketahui disokong oleh model Codex GPT-5.6 yang sesuai. Model tersuai yang tidak diketahui diterima oleh pelayan dengan amaran.", "scope": { "global": "Global", - "apiKey": "API key", - "combo": "Combo", + "apiKey": "Kunci API", + "combo": "Kombo", "model": "Model", - "connection": "Connection" + "connection": "Sambungan" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Warisi klien", + "default": "Gunakan lalai", + "force": "Paksa" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Kekalkan", + "remove": "Alih keluar", + "set": "Tetapkan nilai tetap" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "Langsung (masa nyata)", "tierCommunity": "Komuniti (kelewatan 30 hari)", "activateTitle": "Aktifkan Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Bandingkan akses Community dan akses langsung, fahami perkara yang ditukar oleh pemasangan anda, kemudian pilih cara untuk mengaktifkan Radar.", + "accessScaleTitle": "Fahami akses Radar sebelum mengaktifkannya", + "accessScaleIntro": "Radar kekal tidak aktif pada rangkaian sehingga anda memilih untuk menyertainya. Pilih akses Community atau aktifkan kunci penyokong peribadi selepas menyemak peraturan ini.", + "accessCommunityRule": "Community — tiada kunci diperlukan: katalog lengkap dengan kelewatan 30 hari.", + "accessSingleUseRule": "Bintang + ikuti — selepas GitHub OAuth mengesahkan kedua-duanya, akaun GitHub anda menerima satu bacaan katalog langsung; kemudian akses kembali kepada Community. Akses sekali sahaja ini tidak boleh dikeluarkan semula untuk akaun tersebut.", + "accessContributorRule": "Penyumbang — PR yang digabungkan, komit dan baris hanya menentukan susunan kedudukan mingguan. 10 Teratas menerima 365 hari; kedudukan 11–100 menerima 90 hari; penyumbang di luar 100 Teratas tidak menerima pemberian tanpa mengira bilangan PR. Keluar daripada kedudukan tidak akan memendekkan tempoh yang telah diberikan.", + "accessSupporterRule": "Penyokong — pembelian sekali sahaja memberikan tempoh 6 bulan, 1 tahun atau seumur hidup tanpa pembaharuan automatik. Pembelian, derma, tempoh penyumbang dan pemberian manual dikumpulkan; tempoh seumur hidup sentiasa diutamakan.", + "accessUseTitle": "Penggunaan peribadi, pemulihan dan semakan", + "accessInstallationRule": "Lesen peribadi — gunakan kunci pada satu pemasangan aktif pada satu-satu masa. OmniRoute tidak mengecap jari perkakasan. Pemulihan membatalkan dan menggantikan kunci yang hilang tanpa menetapkan semula tarikh luputnya.", + "accessAbuseRule": "Semakan penyalahgunaan — IP berbeza yang ke-4 dalam tempoh 24 jam hanya menghasilkan tanda semakan manual; ia tidak akan menyekat atau membatalkan kunci secara automatik.", + "accessOffersRule": "Tawaran langsung dipilih secara manual dan mungkin berubah atau tamat tempoh.", + "privacyTitle": "Perkara yang ditukar oleh Radar", + "privacyDownloadsRule": "Muat turun — pemasangan anda menerima metadata katalog dan rujukan yang ditandatangani secara kriptografi; kunci langsung yang sah turut membuka kunci tawaran dan Intel yang ditandatangani.", + "privacySendsRule": "Dihantar — penyegerakan pada bahagian pelayan menghantar kunci penyokong sebagai token Bearer dan infrastruktur HTTPS menerima IP sambungan. Perakaunan permintaan suapan tidak menyimpan kedua-dua nilai dalam bentuk mentah: ia menyimpan cincangan kunci, penggunaan agregat dan HMAC IP terpenggal yang berputar setiap hari untuk semakan penyalahgunaan.", + "privacyNeverRule": "Tidak pernah dikumpulkan — gesaan, respons, perbualan, kelayakan penyedia, trafik model, masa operasi, kependaman dan konfigurasi penyedia setempat tidak pernah dihantar kepada Radar.", + "activateButton": "Aktifkan Community", "activating": "Mengaktifkan...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Sudah mempunyai kunci penyokong?", + "keyInvalidFormatError": "Format kunci tidak sah. Ia mesti bermula dengan \"omr_\" diikuti oleh 40 aksara perenambelasan.", + "activateWithKeyButton": "Aktifkan penyokong", + "changeKeyButton": "Tukar kunci", + "claimSectionTitle": "Belum mempunyai kunci penyokong?", + "contributorButton": "Saya seorang penyumbang", + "contributorHint": "GitHub OAuth menyemak kedudukan mingguan semasa: 10 Teratas mendapat 365 hari dan kedudukan 11–100 mendapat 90 hari. Bilangan PR sahaja tidak akan memberikan akses di luar 100 Teratas.", + "supporterButton": "Sokong projek ini", + "supporterHint": "Pilihan sekali sahaja untuk 6 bulan, 1 tahun dan seumur hidup tidak mempunyai pembaharuan automatik; tempoh yang layak dikumpulkan dan tempoh seumur hidup diutamakan.", "colProvider": "Penyedia", "colModel": "Model", "colQuota": "Kuota", + "colLimits": "Had kadar", + "trainsOnPrompts": "Melatih menggunakan gesaan", + "trainsOnPromptsHelp": "Terma penyedia ini menyatakan bahawa ia mungkin melatih menggunakan gesaan yang anda hantar. Model tanpa lencana ini sama ada menyatakan bahawa mereka tidak berbuat demikian atau tidak mendokumentasikannya — ketiadaan kenyataan bukanlah jaminan.", + "limitsUnknownHelp": "Had dilaporkan oleh suapan Radar sahaja; tiada had diterbitkan untuk entri ini", + "contextUnknownHelp": "Tetingkap konteks tidak diketahui untuk entri ini", + "capabilityUnknownHelp": "Keupayaan tidak dilaporkan oleh suapan", "colContext": "Konteks", "colCapabilities": "Kebolehan", "colTos": "Risiko ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "baru", "setupGuide": "Panduan penyediaan", "disabledByFeed": "Dilumpuhkan oleh suapan Radar", "capTools": "Alat", "capVision": "Visi", "capThinking": "Berfikir", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalog", + "freeCreditsTab": "Kredit percuma", + "freeCreditsSubtitle": "Pautan rujukan daripada penyedia yang dijejaki Radar — penggunaannya tidak mengenakan sebarang kos tambahan kepada anda dan membantu menyokong OmniRoute.", + "fixedLinksEmpty": "Belum ada pautan rujukan tersedia. Segerakkan Radar untuk menyemak kemas kini.", + "requiredActionLabel": "Tindakan yang perlu dilakukan:", + "claimButton": "Tuntut kredit", + "campaignsTitle": "Kempen masa terhad", + "campaignsEmpty": "Tiada kempen aktif buat masa ini — semak lagi kemudian.", + "campaignsUpsellCommunity": "Kempen masa terhad ialah manfaat tambahan untuk penyokong. Semua pautan tetap pada halaman ini kekal percuma untuk semua orang.", + "campaignsValidUntil": "Sah sehingga {date}", + "colActions": "Tindakan", + "localBadge": "setempat", + "editModel": "Sunting", + "saveModel": "Simpan", + "cancelEdit": "Batal", + "resetModel": "Tetapkan semula perubahan setempat", + "hideModel": "Sembunyikan", + "restoreModel": "Pulihkan", + "hiddenModelsTitle": "Model tersembunyi", + "modelDisplayName": "Nama paparan setempat", + "modelEnabled": "Didayakan secara setempat", + "localStateSaveFailed": "Gagal menyimpan tetapan Radar setempat", + "guidedCombos": "Gabungan berpandu", + "offers": "Tawaran", + "intel": "Maklumat risikan" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Gabungan berpandu Radar", + "subtitle": "Cipta sandaran keutamaan daripada model percuma setara yang dipilih susun oleh Radar.", + "backToRadar": "Kembali ke Radar", + "loading": "Memuatkan cadangan gabungan...", + "familyLabel": "Keluarga model", + "modelsLabel": "Susunan keutamaan", + "strategyReason": "Keutamaan menggunakan belanjawan percuma berulang yang terbesar dahulu, kemudian beralih kepada penyedia aktif yang lain.", + "generateButton": "Jana gabungan", + "generating": "Menjana...", + "alreadyCreated": "Sudah dicipta", + "created": "Kombo dicipta", + "noSuggestions": "Tiada keluarga model yang layak pada masa ini mempunyai sambungan aktif kepada sekurang-kurangnya dua penyedia.", + "catalogRequired": "Segerakkan katalog Radar terlebih dahulu untuk memuatkan keluarga model terpilih.", + "loadFailed": "Gagal memuatkan cadangan kombo Radar.", + "createFailed": "Gagal mencipta kombo. Semak sambungan penyedia anda dan cuba lagi." }, "radarSetupPage": { "title": "Penyediaan Penyedia", @@ -13538,28 +13549,28 @@ }, "resilienceConnections": { "title": "Daya Tahan Sambungan", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Sambungan anda pulih secara automatik", + "reassuranceDetail": "Biasanya tiada tindakan diperlukan. OmniRoute merehatkan sambungan buat sementara waktu selepas kegagalan, kemudian mencubanya semula dengan selamat.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Permintaan boleh dihantar", + "coolingDown": "Akan mencuba lagi tidak lama lagi", + "lockedOut": "Memerlukan perhatian anda" }, "table": { "status": "Status", "provider": "Pembekal", "connectionId": "Sambungan", "authType": "Pengesahan", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "backoffLevel": "Jeda cuba semula", + "cooldown": "Tempoh bertenang", "lastError": "Ralat Terakhir", "lockouts": "Penguncian", "healthy": "Sihat", - "coolingDown": "Cooldown", + "coolingDown": "Tempoh bertenang", "circuitOpen": "Litar Terbuka", "recovering": "Memulihkan", "degraded": "Merosot", - "terminal": "Terminal", + "terminal": "Muktamad", "unknown": "Tidak Diketahui", "never": "-" }, @@ -13589,9 +13600,9 @@ "detail": { "title": "Perincian Sambungan", "metadata": "Metadata", - "cooldown": "Cooldown", + "cooldown": "Tempoh bertenang", "lastError": "Ralat Terakhir", - "breaker": "Circuit Breaker", + "breaker": "Pemutus Litar", "lockouts": "Penguncian Model", "rateLimitedUntil": "Dihadkan Kadar Sehingga", "backoffLevel": "Tahap Backoff", @@ -13635,15 +13646,15 @@ "message": "Data separa: sumber tidak tersedia: {sources}", "source": { "database": "Pangkalan Data", - "circuitBreaker": "Circuit Breaker", + "circuitBreaker": "Pemutus Litar", "modelLockouts": "Penguncian Model", "count": "Bilangan Sambungan" } } }, "featureFlagCapabilityFilterEnabledDescription": "Tolak permintaan sebelum penghantaran apabila model sasaran tidak mempunyai keupayaan yang diperlukan (penglihatan, alat, output terstruktur, tetingkap konteks). Melindungi permintaan penyedia tunggal secara langsung yang mengabaikan penapis keserasian lapisan gabungan.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Langkau semakan tetingkap konteks dan token input maksimum setempat OmniRoute untuk permintaan terus bagi model tunggal. Penyedia huluan masih menguatkuasakan had sebenar mereka. Pemampatan gesaan dan had token output kekal aktif.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Statistik carian dan carian terkini hanya mengira penyedia yang masih mempunyai sambungan aktif (penyedia tanpa kunci seperti duckduckgo-free sentiasa dikira). Mati mengekalkan setiap baris carian yang disimpan dengan ID penyedia.", "publicSystem": { "notFound": { "title": "Halaman tidak ditemui", @@ -13699,11 +13710,11 @@ "maintenanceInfo": "Info Penyelenggaraan", "service": "Perkhidmatan", "unknown": "tidak diketahui", - "notAvailable": "n/a", + "notAvailable": "tiada", "providersTracked": "Penyedia Dipantau", "circuitBreakerState": "Keadaan Pemutus Litar Penyedia", "lastUpdate": "Kemaskini terakhir: {timestamp}", - "uptimeMinutes": "{minutes}m", + "uptimeMinutes": "{minutes} min", "uptimeHoursMinutes": "{hours}j {minutes}m" }, "statusPages": { @@ -13792,7 +13803,7 @@ "googleDescription": "Log masuk dengan akaun Google anda.", "githubAccount": "Akaun GitHub", "githubDescription": "Log masuk dengan akaun GitHub anda.", - "importToken": "Import Token", + "importToken": "Token Import", "importDescription": "Tampal token penyegaran yang dieksport dari {providerLabel}.", "apiKey": "Kunci API", "apiKeyDescription": "Tampal kunci API {providerLabel} / CodeWhisperer yang tahan lama. Ia disimpan sebagai kelayakan pembawa tanpa token penyegaran; penemuan profil adalah usaha terbaik.", @@ -13865,7 +13876,7 @@ "tenant": "Penyewa", "region": "Wilayah", "importing": "Mengimport…", - "importToken": "Import Token", + "importToken": "Token Import", "cancel": "Batal" }, "sharedComponents": { @@ -13947,7 +13958,7 @@ "tokens": "Token", "active": "Aktif", "other": "Lain-lain", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "jam", "day": "hari", "unknownModel": "tidak diketahui", @@ -13967,7 +13978,7 @@ "runners": "Pelari", "tasks": "Tugas", "colName": "Nama", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "Status", "colTask": "Tugas", "colMode": "Modus", @@ -14070,11 +14081,11 @@ "actionApprove": "Luluskan pelan", "actionCancel": "Batal", "actionSeeInGraph": "Lihat dalam graf", + "actionRepeat": "Ulang", "actionDone": "Tindakan digunakan", "actionFailed": "Tindakan gagal: {error}", "detailFailed": "Gagal memuatkan butiran: {error}", "mirroredInA2A": "Dicerminkan dalam A2A", - "actionRepeat": "Ulang", "repeatConfirm": "Klik sekali lagi untuk sahkan", "repeatDone": "Larian baharu dicipta", "repeatUnavailable": "Input asal tidak tersedia" @@ -14088,57 +14099,57 @@ "networkError": "Ralat rangkaian — tidak dapat mengemas kini tetapan pendedahan penyedia" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Tawaran penyokong", + "subtitle": "Diskaun rasmi, kredit, percubaan dan manfaat rakan kongsi yang telah disemak daripada Radar.", + "backToRadar": "Kembali ke Radar", + "loading": "Memuatkan tawaran...", + "refresh": "Muat semula tawaran", + "refreshing": "Sedang memuat semula...", + "loadFailed": "Kami tidak dapat memuat semula tawaran. Cache setempat terakhir yang disahkan dikekalkan.", + "empty": "Tiada tawaran aktif tersedia buat masa ini.", + "keyRequiredTitle": "Kunci penyokong diperlukan", + "keyRequiredDescription": "Tawaran ialah manfaat langsung Radar. Tambahkan kunci penyokong sedia ada pada skrin Radar, sahkan status penyumbang anda atau sokong projek ini untuk mendapatkannya.", + "contributorButton": "Saya penyumbang", + "supporterButton": "Sokong projek ini", + "partnerBadge": "Rakan kongsi", + "officialBadge": "Rasmi", + "conditionsLabel": "Syarat:", + "validUntil": "Sah sehingga {date}", + "noExpiry": "Tiada tarikh luput diumumkan", + "openOffer": "Lihat tawaran", + "trialDays": "{days, plural, one {# hari} other {# hari}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", + "title": "Perisikan Radar", + "subtitle": "Kedudukan ELO milik Radar dan pergerakan katalog berdasarkan fakta.", + "backToRadar": "Kembali ke Radar", + "loading": "Memuatkan Intel...", + "refresh": "Muat semula Intel", + "syncing": "Sedang memuat semula...", + "loadFailed": "Kami tidak dapat memuat semula Intel. Cache setempat terakhir yang disahkan dikekalkan.", + "empty": "Belum ada petikan Intel yang disahkan.", + "supporterBadge": "Penyokong Radar", + "methodology": "Metodologi", + "eloMethod": "ELO, awal {initial}, K={factor}", + "freshness": "Kesegaran katalog", + "ageDays": "{days, plural, one {Berusia # hari} other {Berusia # hari}}", + "trend": "Trend katalog", + "modelDelta": "{current} model, +{added} / -{removed}", + "ranking": "Kedudukan model", + "noRankings": "Belum ada perbandingan yang disahkan.", "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "category": "Kategori", + "rating": "Penarafan", + "matches": "Perlawanan", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Baharu", + "aging": "Semakin lama", + "stale": "Lapuk" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Berkembang", + "stable": "Stabil", + "shrinking": "Mengecil" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Permintaan melebihi tetingkap konteks penyedia" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference ialah Rakan Sumber Terbuka OmniRoute", + "description": "Gerbang berperingkat kos yang menjual semula puluhan model tercanggih melalui satu titik akhir yang serasi dengan OpenAI — menghalakan setiap permintaan kepada penyedia layak yang paling murah, tanpa melebihi harga senarai.", + "cta": "Dapatkan Kunci API", + "partnerLinkNote": "Pautan rakan kongsi", + "dismissAriaLabel": "Abaikan" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Lumpuhkan penjanaan varian tahap pemikiran (cth. -low, -medium, -high) dalam katalog /v1/models." } diff --git a/src/i18n/messages/mt.json b/src/i18n/messages/mt.json index b7539064a5..e8a0e46309 100644 --- a/src/i18n/messages/mt.json +++ b/src/i18n/messages/mt.json @@ -348,7 +348,7 @@ "testDesc": "Deskrizzjoni tat-Test", "chatDesc": "Deskrizzjoni taċ-Chat", "importSuccess": "L-Importazzjoni Rnexxiet", - "chat": "Chat", + "chat": "Taħdita", "a2aQuickStartStep1": "Pass 1 tal-Bidu Rapidu ta' A2A", "importFailed": "L-Importazzjoni Falliet", "inputPlaceholder": "Test Indikattiv għall-Input", @@ -497,7 +497,7 @@ "messages": "Messaġġi", "aggregatorsGateways": "Aggregaturi u Gateways", "comboStrategyAria": "Strateġija Kombinata Aria", - "input": "Input", + "input": "Dħul", "testingConnection": "Qed Tiġi Ttestjata l-Konnessjoni", "excludeDomains": "Eskludi Dominji", "webCookieProviders": "Fornituri tal-Cookies tal-Web", @@ -992,13 +992,13 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Uri l-IDs mera claude/<provider>/<model> fuq /v1/models sabiex l-iskoperta tal-mudelli mill-gateway ta' Claude Code telenka mudelli mhux ta' Claude. Twissija: meta din l-għażla tkun attivata globalment, tirdoppja l-entrati fil-katalgu għall-klijenti kollha.", "featureFlagNoThinkingAliasEnabledDescription": "Swiċċ ewlieni għall-aliases tal-gateway no-think/<provider>/<model>. Mixgħul (predefinit): /v1/models juri varjant mingħajr ħsieb għal kull mudell Claude eliġibbli li kapaċi jaħseb, u ID no-think/ mibgħut f'talba jiġi solvut lura għall-mudell reali bir-raġunament imrażżan. Mitfi: ma jintwera l-ebda varjant u ID no-think/ jiġi ttrattat bħal kull ID ieħor ta' mudell mhux magħruf. L-għażla ta' inklużjoni/esklużjoni ModelSpec.noThinkingAlias għal kull mudell tibqa' tapplika waqt li din l-għażla tkun mixgħula.", "featureFlagChatVirtualLanesEnabledDescription": "Ippermetti korsiji virtwali adattivi tad-dħul għal kull tenant għad-dispaċċ tal-fornituri (#9654): żieda f'daqqa fit-traffiku ta' tenant wieħed ma tibqax tikkawża żball 503 għal ieħor. Il-varjabbli tal-ambjent OMNIROUTE_CHAT_VIRTUAL_LANES jieħu preċedenza fuq din is-sovrasKitba tad-dashboard; il-bidliet jidħlu fis-seħħ meta jerġa' jinbeda s-server.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Paġni tal-fornituri fid-dashboard: uri l-badge B’Xejn biss fuq is-sinjali li l-fornitur jirrispetta — ineħħi l-ewristika tal-isem muri, il-kampijiet mhux Boolejani dwar l-użu bla ħlas u s-suffissi :free fuq fornituri rreġistrati mingħajr livell bla ħlas dokumentat. Meta jkun Mitfi, tinżamm ir-regola storika tal-badge.", + "featureFlagProxySkipRecentlyFailedDescription": "Il-pools tal-proxy u r-rotazzjoni għal kull kont ta’ opencode jieqfu jerġgħu jservu proxy li jkun għadu kemm falla (sonda TCP miċħuda, jew 429 riċevut permezz tiegħu) għal perjodu għal kull proċess li jirdoppja ma’ kull ripetizzjoni, sa limitu massimu. Ma jinkiteb ebda status tal-proxy; meta kull kandidat jitwarrab, l-għażla tibqa’ l-istess. Mitfi b’mod awtomatiku: l-ordni tal-għażla hija eżattament ir-rotazzjoni sempliċi.", + "featureFlagProxyPoolEgressObservationDescription": "Uri, taħt pool tal-proxy fid-dashboard, kemm-il IP ta’ ħruġ osservat serva lill-membri tiegħu matul l-aħħar 24 siegħa, kemm-il konnessjoni użathom u l-ogħla għadd osservat wara IP wieħed. Għall-qari biss, ikkalkulat mil-log tal-proxy, u qatt ma jintuża għar-routing. Mitfi b’mod awtomatiku: l-editur tal-pool ma jinbidilx u r-rotta tal-osservazzjoni twieġeb null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Fl-iskennjar tas-saħħa tal-proxy, ħalli sonda li l-mira tkun irrifjutat (401/403/429: il-proxy għadda t-talba, iżda d-destinazzjoni rrifjutat dan l-IP ta’ ħruġ) tirrisettja s-sensiela ta’ fallimenti konsekuttivi tal-proxy, bħal sonda moqdija. Mitfi b’mod awtomatiku: rifjut jibqa’ newtrali u jżomm is-sensiela. 5xx jibqa’ inkonklussiv fiż-żewġ każijiet, u rifjut qatt ma jneħħi, jiddiżattiva jew jerġa’ jattiva proxy.", "sidebar": { "home": "Paġna Ewlenija", - "dashboard": "Dashboard", + "dashboard": "Pannell tal-kontroll", "providers": "Fornituri", "combos": "Kombinazzjonijiet", "usage": "Użu", @@ -1009,7 +1009,7 @@ "limits": "Limiti tal-Kwota", "cliTools": "Għodod CLI", "media": "Midja", - "settings": "Settings", + "settings": "Issettjar", "translator": "Traduttur", "playground": "Ambjent tal-ittestjar", "searchTools": "Għodod tat-Tiftix", @@ -1445,7 +1445,7 @@ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "It-token tal-HTTP API li rċevejt mingħand @BotFather meta ħloqt il-bot tiegħek.", "chatId": "ID taċ-Chat / Kanal ta’ Telegram", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 jew @channelname", "chatIdHint": "L-identifikatur numeriku uniku jew l-isem tal-utent pubbliku taċ-chat/tal-kanal.", "tutorial": "Kif tikkonfigura webhook ta’ Telegram:" } @@ -1591,13 +1591,13 @@ "cliToolsDescription": "Ikkonfigura l-għodod CLI", "home": "Paġna ewlenija", "homeDescription": "Merħba f'OmniRoute", - "endpoint": "Endpoints", + "endpoint": "Punti tat-tmiem", "endpointDescription": "Immaniġġja l-endpoints tal-proxy, MCP, A2A u tal-API", "mcp": "Server MCP", "mcpDescription": "Ġestjoni u għodod tas-server tal-Model Context Protocol", "a2a": "Server A2A", "a2aDescription": "Kompiti u osservabbiltà tal-protokoll Agent-to-Agent", - "settings": "Settings", + "settings": "Issettjar", "settingsDescription": "Immaniġġja l-preferenzi tiegħek", "openaiCompatible": "Kompatibbli ma' OpenAI", "anthropicCompatible": "Kompatibbli ma’ Anthropic", @@ -1656,9 +1656,9 @@ "featureFlagsSearch": "Fittex indikaturi...", "featureFlagsCategoryAll": "Kollha", "featureFlagsCategorySecurity": "Sigurtà", - "featureFlagsCategoryNetwork": "Network", + "featureFlagsCategoryNetwork": "Netwerk", "featureFlagsCategoryPolicies": "Politiki", - "featureFlagsCategoryRuntime": "Runtime", + "featureFlagsCategoryRuntime": "Ambjent tal-eżekuzzjoni", "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "Saħħa", "featureFlagsSourceDb": "DB", @@ -1691,10 +1691,10 @@ }, "breadcrumbs": { "ariaLabel": "Mogħdija tan-navigazzjoni", - "dashboard": "Dashboard", + "dashboard": "Pannell tal-kontroll", "providers": "Fornituri", "combos": "Kombinazzjonijiet", - "settings": "Settings", + "settings": "Issettjar", "general": "Ġenerali", "appearance": "Dehra", "ai": "Settings tal-IA", @@ -1912,8 +1912,8 @@ "diversityHigherExplanation": "Valuri ogħla jfissru li t-traffiku huwa mqassam bejn diversi fornituri.", "diversityNoData": "M’hemmx data riċenti dwar l-użu disponibbli.", "chartRequests": "Talbiet", - "chartInput": "Input", - "chartOutput": "Output", + "chartInput": "Dħul", + "chartOutput": "Ħruġ", "chartTotal": "Total", "chartCost": "Spiża", "chartShare": "Sehem", @@ -2207,7 +2207,7 @@ "model": "Mudell", "account": "Kont", "connection": "Konnessjoni", - "combo": "Combo", + "combo": "Kombinazzjoni", "routeStep": "Pass", "tokens": "Tokens", "notAvailable": "mhux applikabbli", @@ -2649,13 +2649,13 @@ "size": "Daqs", "configurationPane": "Panew tal-konfigurazzjoni", "configuration": "Konfigurazzjoni", - "status": "Status", + "status": "Stat", "compareProviderHint": "Agħżel sa 4 fornituri fit-tab Qabbel biex tqabbilhom ħdejn xulxin.", "history": "Storja", "historyHint": "L-istorja hija disponibbli fit-tab Fittex.", "noActiveProvider": "Ebda fornitur tat-tiftix attiv", "configureMoreProviders": "Ikkonfigura aktar fornituri", - "links": "Links", + "links": "Ħoloq", "contentTruncated": "Il-kontenut tqassar għal 256 KB (daqs oriġinali: {size})", "viewFullRaw": "Ara l-kontenut sħiħ mhux ipproċessat", "rawScrapedContent": "Kontenut estratt mhux ipproċessat", @@ -4084,7 +4084,7 @@ "tabContextSources": "Sorsi tal-Kuntest", "activeEndpoints": "Endpoints Attivi", "activeLocal": "Lokali", - "activeCloud": "Cloud", + "activeCloud": "Sħaba", "copyUrlTitle": "Ikkopja {url}", "statusRunning": "Qed jaħdem", "tunnels": "Mini", @@ -4127,7 +4127,7 @@ "vscodeAliasDescriptionError": "Qed jintwerew URLs proviżorji għax iċ-ċwievet CLI ma setgħux jitgħabbew f’din is-sessjoni.", "vscodeAliasDescriptionLoading": "Qed jitgħabbew iċ-ċwievet CLI. Se jintwerew URLs proviżorji sakemm tkun disponibbli ċavetta.", "vscodeAliasDescriptionPlaceholder": "Qed jintwerew URLs proviżorji. Oħloq jew attiva ċavetta API fi CLI Tools biex tissostitwixxi TOKEN.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "Għodod CLI", "vscodeAliasBaseLabel": "Bażi ta’ VS Code", "vscodeAliasModelsLabel": "Mudelli ta’ VS Code", "vscodeAliasChatLabel": "Chat ta’ VS Code", @@ -4347,7 +4347,7 @@ "events": "Avvenimenti", "artifacts": "Artefatti", "tablePhase": "Fażi tat-Tabella", - "offset": "Offset", + "offset": "Spostament", "limit": "Limitu", "skill": "Ħila", "rpcEndpoint": "POST /a2a", @@ -4356,8 +4356,8 @@ "rpcMethodGet": "tasks/get", "rpcMethodCancel": "tasks/cancel", "serviceLabel": "A2A", - "online": "Online", - "offline": "Offline", + "online": "Onlajn", + "offline": "Mhux konness", "disableLabel": "Iddiżattiva {label}", "enableLabel": "Attiva {label}", "a2aDisabledTitle": "A2A huwa diżattivat", @@ -4392,7 +4392,7 @@ "editMemory": "Editja l-memorja", "editModal": { "title": "Editja l-Memorja", - "metadataLabel": "Metadata (JSON)", + "metadataLabel": "Metadejta (JSON)", "metadataInvalid": "JSON invalidu", "saveFailed": "Ma rnexxilniex nissejvjaw il-memorja" }, @@ -4433,7 +4433,7 @@ "reindexFailed": "Ma setax jinbeda l-indiċjar mill-ġdid", "keywordLabel": "Kelma ewlenija (FTS5)", "keywordReason": "It-tiftix bil-kliem ewlieni huwa dejjem disponibbli", - "embeddingLabel": "Embedding", + "embeddingLabel": "Rappreżentazzjoni vettorjali", "vectorStoreLabel": "Ħażna tal-Vetturi", "qdrantLabel": "Qdrant", "rerankLabel": "Klassifikazzjoni mill-ġdid", @@ -4521,7 +4521,7 @@ "cleanNow": "Naddaf issa", "cleanupSuccess": "Tneħħew {count} punt(i)", "cleanupFailed": "It-tindif falla", - "hostLabel": "Host", + "hostLabel": "Ħost", "collectionLabel": "Kollezzjoni" }, "rerank": { @@ -4569,7 +4569,7 @@ "executionsTab": "Eżekuzzjonijiet", "selectSkillToInspect": "Agħżel ħila fuq ix-xellug biex tispezzjonaha.", "schemaTab": "Skema", - "handlerTab": "Handler", + "handlerTab": "Maniġġatur", "inputSchema": "Skema tal-Input", "outputSchema": "Skema tal-Output", "handlerCode": "Kodiċi tal-Handler", @@ -4577,7 +4577,7 @@ "runTestPlaceholder": "Ħaddem test (placeholder)", "setModeAria": "Issettja l-modalità {mode}", "uninstallSkill": "Iddiżinstalla l-ħila", - "sandboxTab": "Sandbox", + "sandboxTab": "Ambjent ta' prova", "loading": "Qed jitgħabbew il-ħiliet...", "noSkills": "Ma nstabet l-ebda ħila", "noExecutions": "Ma nstabet l-ebda eżekuzzjoni", @@ -4587,7 +4587,7 @@ "version": "Verżjoni", "tableDescription": "Deskrizzjoni", "skill": "Ħila", - "status": "Status", + "status": "Stat", "duration": "Tul ta' żmien", "time": "Ħin", "sandboxConfig": "Konfigurazzjoni tas-Sandbox", @@ -4650,7 +4650,7 @@ "uptime": "Ħin ta' Tħaddim", "memory": "Memorja", "memoryRss": "Memorja (RSS)", - "heap": "Heap", + "heap": "Munzell", "cpu": "CPU", "database": "Bażi tad-Data", "version": "Verżjoni", @@ -4728,7 +4728,7 @@ "lastHeaderUpdate": "Aġġornament tal-intestatura: {age}", "databaseHealth": "Saħħa tad-Database", "databaseHealthDescription": "Iddijanjostika u sewwi ringieli skaduti tal-kwota/dominju u referenzi miksura tal-kombinazzjonijiet.", - "status": "Status", + "status": "Stat", "attentionNeeded": "Jeħtieġ attenzjoni", "repairs": "Tiswijiet", "repairing": "Qed jissewwa...", @@ -4806,7 +4806,7 @@ "description": "Proxy trasparenti għall-interċettazzjoni u l-instradament tat-talbiet tal-klijenti.", "enable": "Attiva l-Proxy MITM", "enableDesc": "Ibda jew waqqaf il-proċess lokali ta' interċettazzjoni u s-sostituzzjoni tad-DNS.", - "status": "Status", + "status": "Stat", "running": "Qed jaħdem", "stopped": "Imwaqqaf", "start": "Ibda", @@ -4896,7 +4896,7 @@ "a": "A", "offset": "Spostament", "limit": "Limitu", - "status": "Status", + "status": "Stat", "resourceType": "Tip ta' Riżorsa", "totalEntries": "Entrati Totali", "tab": "Tab", @@ -4976,7 +4976,7 @@ "skipWizard": "Aqbeż il-wizard kollu", "skipPassword": "Aqbeż l-issettjar tal-password", "skipAndContinue": "Aqbeż u Kompli", - "passwordLabel": "Password", + "passwordLabel": "Kelma tal-pass", "confirmPassword": "Ikkonferma l-Password", "enterPassword": "Daħħal il-password", "confirmPasswordPlaceholder": "Ikkonferma l-password", @@ -5801,7 +5801,7 @@ "ccCompatibleSummarizeThinkingDescription": "Iżid `display: \"summarized\"` mat-talbiet ta’ ħsieb CC Compatible sabiex il-mudelli Claude appoġġjati jittrażmettu bidliet viżibbli fil-ħsieb.", "ccCompatibleSummarizeThinkingLabel": "Ippermetti l-wiri fil-qosor tal-ħsieb", "ccCompatibleDetailsTitle": "Dettalji tar-relay kompatibbli ma’ CC", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "Kompatibbli ma' CC", "ccCompatibleModelsDescription": "Ir-relays kompatibbli ma’ CC ma jurux lista tal-mudelli. Żid l-IDs tal-mudelli Claude li jaċċetta r-relay tiegħek.", "ccCompatibleNameHint": "Isem għall-wiri għal dan ir-relay esklużiv għal Claude Code.", "ccCompatibleNamePlaceholder": "Relay CC tal-Produzzjoni", @@ -5865,7 +5865,7 @@ "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "CLI", "codexFastTierActiveChip": "Il-livell Codex Fast huwa attiv", - "tierFast": "Fast", + "tierFast": "Mgħaġġel", "antigravityProjectIdLabel": "ID tal-Proġett ta’ Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", "grokWebCookiePlaceholder": "Test indikattiv għall-cookie tal-web ta’ Grok", @@ -5889,7 +5889,7 @@ "tierOverrideAuto": "Awtomatiku (ir-routing jiddeċiedi)", "tierOverrideFree": "B’xejn", "tierOverrideCheap": "Irħis", - "tierOverridePremium": "Premium", + "tierOverridePremium": "Primjum", "tierOverrideHelpText": "Assenja dan il-fornitur ma’ livell tar-routing minflok tħalli lil OmniRoute jiddeterminah mill-prezzijiet tal-mudelli.", "museSparkWebCookieHint": "Ħjiel dwar il-cookie tal-web ta’ Muse Spark", "museSparkWebCookiePlaceholder": "Test proviżorju għall-cookie tal-web ta’ Muse Spark", @@ -5918,7 +5918,7 @@ "rateLimitOverridesTpdHint": "Għadd massimu ta’ tokens kuljum għal din il-konnessjoni. Jieħu post il-valur predefinit tal-fornitur.", "rateLimitOverridesTpdLabel": "TPD (Tokens/jum)", "rateLimitOverridesTpmHint": "Għadd massimu ta’ tokens kull minuta għal din il-konnessjoni. Jieħu post il-valur predefinit tal-fornitur.", - "rateLimitOverridesTpmLabel": "TPM (Tokens/min)", + "rateLimitOverridesTpmLabel": "TPM (tokens/min)", "refreshOauthTokenTitle": "Titlu għat-tiġdid tat-token Oauth", "regionHint": "Ħjiel dwar ir-reġjun", "regionLabel": "Tikketta tar-reġjun", @@ -5941,8 +5941,8 @@ "showEmail": "Uri l-email", "snowflakeBaseUrlHint": "Ħjiel dwar il-URL bażi ta’ Snowflake", "supportedEndpointAudio": "Awdjo", - "supportedEndpointChat": "Chat", - "supportedEndpointEmbeddings": "Embeddings", + "supportedEndpointChat": "Taħdita", + "supportedEndpointEmbeddings": "Inkorporazzjonijiet", "supportedEndpointImages": "Stampi", "supportedEndpointsLabel": "Endpoints appoġġjati", "tagGroupHint": "Ħjiel dwar il-grupp ta’ tikketti", @@ -6012,7 +6012,7 @@ "freeTierProviders": "Fornituri b’livell bla ħlas", "freeTierLabel": "Livell bla ħlas disponibbli", "freeTierProvidersDesc": "Fornituri b’livelli bla ħlas — xi wħud jeħtieġu reġistrazzjoni għal ċavetta API, filwaqt li oħrajn ma jeħtieġu l-ebda kredenzjali.", - "providerSummaryAll": "Total", + "providerSummaryAll": "Totali", "ideProviders": "Fornituri tal-IDE", "ideProvidersDesc": "Edituri b’abbonament AI integrat. Uża l-paġna tal-fornitur biex timporta l-kredenzjali direttament mill-ħażna taċ-ċwievet tal-IDE.", "noIdeProviders": "L-ebda fornitur tal-IDE ma jaqbel mal-filtri attwali.", @@ -6905,10 +6905,10 @@ "healthcheckAll": "Iċċekkja s-Saħħa ta' Kollha", "healthcheckFailed": "Ma rnexxiex jitwettaq il-kontroll tas-saħħa", "healthcheckTestingAll": "Qed jiġu ttestjati l-proxies kollha b'mod parallel...", - "healthcheckTotal": "Total", + "healthcheckTotal": "Totali", "healthcheckWorking": "Jaħdmu", "healthcheckFailedLabel": "Fallew", - "healthcheckStatus": "Status", + "healthcheckStatus": "Stat", "healthcheckProxyUrl": "URL tal-Proxy", "healthcheckLatency": "Latenza", "proxyDocumentationScopeTitle": "Riżoluzzjoni tal-ambitu tal-proxy", @@ -6941,7 +6941,7 @@ "proxyFreePoolMinQualityPlaceholder": "Kwalità minima", "proxyFreePoolMinQualityLabel": "Punteġġ minimu tal-kwalità", "proxyFreePoolSyncAll": "Issinkronizza Kollox", - "proxyFreePoolTotal": "Total", + "proxyFreePoolTotal": "Totali", "proxyFreePoolInPool": "Fil-ġabra", "proxyFreePoolAvgQuality": "Kwalità medja", "proxyFreePoolSelected": "{count} magħżula", @@ -7078,7 +7078,7 @@ "stickyLimitDesc": "Sejħiet għal kull kont qabel il-bidla meta l-instradament globali ta’ riżerva tal-kontijiet juża Round Robin", "routingStrategyTitle": "Strateġija tal-Instradament", "routingStrategySubtitle": "Qabbel 9router: Round Robin tal-kontijiet, limiti persistenti u rotazzjoni tal-kombinazzjonijiet", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Rotazzjoni Ċirkolari", "accountRoundRobinDesc": "Aqleb ċiklikament bejn il-kontijiet biex tqassam it-tagħbija", "comboRoundRobin": "Round Robin tal-Kombinazzjonijiet", "comboRoundRobinDesc": "Aqleb ċiklikament bejn il-miri tal-kombinazzjoni minflok dejjem tibda bl-ewwel waħda", @@ -7143,7 +7143,7 @@ "ipModeWhitelist": "Lista Bajda", "ipModeWhitelistPriority": "Prijorità tal-WL", "addIpAddress": "Żid Indirizz IP", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 jew 10.0.*.*", "block": "+ Imblokka", "allow": "+ Ippermetti", "blocked": "Imblukkati ({count})", @@ -7380,7 +7380,7 @@ "customPricingNote": "Tista’ tissostitwixxi l-ipprezzar predefinit għal mudelli speċifiċi. Is-sostituzzjonijiet personalizzati jieħdu prijorità fuq l-ipprezzar identifikat awtomatikament.", "editPricing": "Immodifika l-Ipprezzar", "viewFullDetails": "Ara d-Dettalji Kollha", - "themeCoral": "Coral", + "themeCoral": "Qroll", "adaptiveVolumeRouting": "Rotot Adattivi skont il-Volum", "adaptiveVolumeRoutingDesc": "Skala l-konnessjonijiet b’mod dinamiku skont il-volum tal-payload u l-pressjoni fuq il-fluss tad-data.", "lkgpToggleTitle": "L-Aħħar Fornitur Magħruf li Ħadem (LKGP)", @@ -7493,7 +7493,7 @@ "compressionModeOffDesc": "Ma tiġi applikata l-ebda kompressjoni", "compressionModeLite": "Ħafifa", "compressionModeLiteDesc": "Tnaqqis tal-ispazji bojod u tal-linji vojta", - "compressionModeStandard": "Standard (Caveman)", + "compressionModeStandard": "Standard (Bniedem tal-Għerien)", "compressionModeStandardDesc": "Kompressjoni bbażata fuq ir-regoli b'aktar minn 30 mudell, li tippreserva l-blokok tal-kodiċi u l-URLs", "compressionModeAggressive": "Aggressiva", "compressionModeAggressiveDesc": "Taqsir + kompressjoni tar-riżultati tal-għodod + tixjiħ progressiv għall-iffrankar massimu", @@ -7953,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Importa l-kontijiet", "payloadRulesTitle": "Regoli tal-payload", "payloadRulesDesc": "Ikkonfigura l-modifiki fil-payload tat-talba skont il-mudell u l-protokoll. Il-bidliet jinħażnu fis-settings u jiġu applikati mill-ġdid immedjatament fl-ambjent ta’ eżekuzzjoni wara li jiġu ssejvjati.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "predefinit", "payloadRuleDefaultDesc": "Japplika l-parametri biss meta l-passaġġ fil-mira jkun nieqes mill-payload li jkun ħiereġ.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "sovrascrivi", "payloadRuleOverrideDesc": "Jimponi l-valuri fuq il-payload, u jissostitwixxi kull ħaġa li tkun diġà preżenti f’dak il-passaġġ.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "filtru", "payloadRuleFilterDesc": "Ineħħi l-parametri mblukkati mill-payload qabel tintbagħat it-talba lis-servizz upstream.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Bħal default, iżda fejn possibbli l-valuri tas-sekwenzi ta’ karattri l-ewwel jiġu analizzati bħala JSON. L-alias preċedenti tal-input default-raw jiġi aċċettat ukoll waqt is-salvataġġ.", @@ -8608,7 +8608,7 @@ "bert-base": "BERT-base (710 MB, preċiżjoni ogħla)" }, "intensity": { - "lite": "Lite", + "lite": "Ħafif", "full": "Sħiħ", "ultra": "Ultra" } @@ -8616,7 +8616,7 @@ "modeOptions": { "default": "Predefinit", "off": "Mitfi", - "lite": "Lite", + "lite": "Ħafif", "standard": "Standard", "aggressive": "Aggressiv", "ultra": "Ultra", @@ -8630,7 +8630,7 @@ "editCombo": "Editja", "deleteCombo": "Ħassar", "deleteConfirm": "Tħassar din il-kombinazzjoni tal-kompressjoni?", - "pipeline": "Pipeline", + "pipeline": "Katina tal-ipproċessar", "addStep": "Żid Pass", "removeStep": "Neħħi", "name": "Isem", @@ -8742,7 +8742,7 @@ "encoderComparison": "Kodifikatur A/B — {count} matriċi", "encoderWinner": "rebbieħ: {winner}", "encoder": "kodifikatur", - "bytes": "bytes", + "bytes": "bajts", "tokensCl100k": "tokens (cl100k)" }, "omniglyph": { @@ -9019,8 +9019,8 @@ "featureDirectPathsDesc": "Xi pari ta' formati (Claude→Gemini) għandhom tradutturi diretti li jevitaw il-hub OpenAI, u jipproduċu output aktar preċiż.", "featureImageMapping": "Immappjar tad-Daqs tal-Immaġni", "featureImageMappingDesc": "Jittraduċi l-konvenzjonijiet tad-dimensjonijiet tal-immaġni bejn formati tal-API (eż., livelli ta' dettall ta' OpenAI → dimensjonijiet ta' Gemini).", - "input": "Input", - "output": "Output", + "input": "Dħul", + "output": "Ħruġ", "auto": "Awtomatiku", "swapFormats": "Aqleb il-formati", "translateAction": "Ittraduċi", @@ -9178,7 +9178,7 @@ "uniqueEndpoints": "Endpoints uniċi", "routeDetails": "Dettalji tar-rotta", "comboBadge": "Kombinazzjoni", - "routeEndpointLabel": "Endpoint", + "routeEndpointLabel": "Punt tat-tmiem", "routeConnectionLabel": "Konnessjoni", "scenarioVision": "Viżjoni (fehim tal-immaġnijiet)", "scenarioSchemaCoercion": "Koerżjoni tal-iskema (output strutturat)", @@ -9343,7 +9343,7 @@ "evaluateStepDescription": "It-tweġibiet jitqabblu mal-kriterji mistennija. Ara jekk kull każ għaddiex jew falliex, flimkien mal-metriċi tal-latenza u feedback dettaljat.", "evalsStrategyContainsLabel": "Fih", "evalsStrategyExactLabel": "Taqbila Eżatta", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Espressjoni regolari", "evalsStrategyCustomLabel": "Loġika Personalizzata", "evalsStrategyContainsDescription": "Jiċċekkja jekk l-output tal-LLM fihx is-substring mistennija.", "evalsStrategyExactDescription": "Jiċċekkja jekk l-output tal-LLM jaqbilx eżattament mal-valur mistenni.", @@ -9784,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Metriċi tas-sistema", "memory": "Memorja", - "memoryShort": "mem", + "memoryShort": "memorja", "uptime": "Ħin ta' tħaddim", "ariaLabel": "Monitoraġġ tas-sistema", "title": "Moniter tas-Sistema", @@ -9822,7 +9822,7 @@ "welcome": "Merħba", "signIn": "Idħol", "enterPassword": "Daħħal il-password tiegħek biex tkompli", - "password": "Password", + "password": "Kelma ta' aċċess", "unifiedProxy": "Proxy Unifikat tal-API tal-AI", "unifiedAiApiProxy": "Proxy Unifikat tal-API tal-AI", "unifiedAiApiProxyDesc": "Idderieġi t-talbiet lejn diversi fornituri tal-AI permezz ta’ endpoint wieħed. Jinkludi bbilanċjar tat-tagħbija, qlib f’każ ta’ ħsara u traċċar tal-użu.", @@ -9964,7 +9964,7 @@ "featureCloudSyncDesc": "Issinkronizza l-konfigurazzjonijiet tiegħek minnufih bejn l-apparati.", "featureCliSupportTitle": "Appoġġ għall-CLI", "featureCliSupportDesc": "Jaħdem ma’ Claude Code, Codex, Cline, Cursor, u aktar.", - "featureDashboardTitle": "Dashboard", + "featureDashboardTitle": "Daxxbord", "featureDashboardDesc": "Dashboard viżiv għall-analiżi tat-traffiku f’ħin reali.", "howItWorks": "Kif Jaħdem OmniRoute", "howItWorksDescription": "Id-data tgħaddi bla xkiel mill-applikazzjoni tiegħek permezz tas-saff intelliġenti tagħna tar-rotot lejn l-aħjar fornitur għax-xogħol.", @@ -10021,7 +10021,7 @@ "apiReference": "Referenza tal-API", "helpCenter": "Ċentru tal-Għajnuna", "about": "Dwarna", - "blog": "Blog", + "blog": "Blogg", "contact": "Kuntatt", "terms": "Termini", "privacy": "Privatezza", @@ -10104,7 +10104,7 @@ "providersCount": "{count} fornitur", "providerTypeFree": "Livell Bla Ħlas", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "Ċavetta tal-API", "useCaseSingleEndpointTitle": "Endpoint wieħed għal ħafna fornituri", "useCaseSingleEndpointText": "Ipponta l-klijenti lejn URL bażi wieħed u dderieġi skont il-prefiss tal-mudell (pereżempju: gh/, cc/, kr/, openai/).", "useCaseFallbackTitle": "Fallback u bdil tal-mudelli permezz ta’ combos", @@ -10135,7 +10135,7 @@ "clientClineBullet1": "Cline jaħdem l-aħjar bi prefissi espliċiti tal-fornitur/mudell sabiex ir-router qatt ma jkollu għalfejn jaqta' liema backend għandu juża.", "clientClineBullet2": "Uża `/v1/chat/completions` għal mudelli ġenerali u erġa' uża l-istess URL bażi ta' OmniRoute ma' kontijiet differenti.", "clientClineBullet3": "Uża d-dashboard tal-Fornituri biex tivvalida OAuth/iċ-ċavetta API qabel ma tinvestiga problemi waqt it-tħaddim ta' Cline.", - "clientKimiTitle": "Kimi Coding", + "clientKimiTitle": "Kodifikazzjoni Kimi", "clientKimiBullet1": "Uża OmniRoute bħala URL bażi stabbli waqt li tibdel il-kontijiet jew il-kombinazzjonijiet ta' fornituri sottostanti.", "clientKimiBullet2": "Ippreferi mudelli bi prefiss fil-flussi tal-kodifikazzjoni sabiex il-fallback u r-rekord tal-awditjar jibqgħu espliċiti.", "clientKimiBullet3": "Uża `/v1/responses` meta tkun trid routing nattiv stil Responses għal klijenti li jużaw l-għodod.", @@ -10222,7 +10222,7 @@ "mcpToolsMemoryDesc": "Fittex, żid, u ħassar entrati tal-memorja persistenti tal-konversazzjonijiet.", "mcpToolsSkillsTitle": "Ħiliet", "mcpToolsSkillsDesc": "Elenka, attiva, eżegwixxi, u mmonitorja l-eżekuzzjonijiet ta’ ħiliet personalizzati.", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "Awto-Kombinazzjoni", "featureAutoComboText": "Oħloq awtomatikament kombinazzjonijiet ottimizzati abbażi tal-fornituri konnessi tiegħek, ix-xejriet tal-użu, u l-kapaċitajiet tal-mudelli.", "featureSearchTitle": "Tiftix fuq il-Web", "featureSearchText": "Tiftix integrat fuq il-web b’5 fornituri (Serper, Brave, Exa, Tavily, Perplexity), inklużi l-analitika u t-traċċar tal-ispejjeż.", @@ -10699,8 +10699,8 @@ "authOptional": "Awtentikazzjoni (mhux obbligatorja)", "username": "Isem tal-utent", "usernamePlaceholder": "Isem tal-utent", - "password": "Password", - "passwordPlaceholder": "Password", + "password": "Kelma tal-pass", + "passwordPlaceholder": "Kelma tal-pass", "connected": "Konness", "ip": "IP:", "connectionFailed": "Il-konnessjoni falliet", @@ -10776,7 +10776,7 @@ "devinDesktopPasteDescription": "Daħħal ċavetta API eżistenti ta' Devin minn sessjoni awtentikata ta' Devin. Id-disponibbiltà u l-passi għall-esportazzjoni taċ-ċavetta jvarjaw skont il-verżjoni ta' Devin u l-kont.", "devinPasteDescription": "Daħħal il-WINDSURF_API_KEY tiegħek (miksuba permezz ta' `devin auth login`, jew permezz tal-kmand \"Windsurf: Provide Auth Token\" fl-IDE Windsurf).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "Ibni auth.json ta’ Grok", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Ċavetta API / Token", "saving": "Qed jiġi ssejvjat…", @@ -10831,8 +10831,8 @@ "pricingRatesFormat": "Format tar-Rati tal-Ipprezzar", "ratesDescription": "Ir-rati kollha huma f'dollari għal kull miljun token ($/1M tokens). Eżempju: Rata ta' input ta' 2.50 tfisser $2.50 għal kull 1,000,000 token ta' input.", "model": "Mudell", - "input": "Input", - "output": "Output", + "input": "Dħul", + "output": "Ħruġ", "cached": "Fil-cache", "reasoning": "Raġunament", "cacheCreation": "Ħolqien tal-Cache", @@ -10856,8 +10856,8 @@ "loading": "Qed jitgħabbew il-proxies...", "noProxies": "Għad m'hemmx proxies salvati.", "tableName": "Isem", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", + "tableEndpoint": "Punt tat-tmiem", + "tableStatus": "Stat", "tableHealth": "Saħħa (24s)", "tableUsage": "Użu", "tableActions": "Azzjonijiet", @@ -10873,12 +10873,12 @@ "familyIpv4": "IPv4 biss", "familyIpv6": "IPv6 biss", "familyHint": "Il-familja tal-indirizz tal-ħruġ. Awtomatiku jżomm id-dual-stack; IPv4/IPv6 jillimita dan il-proxy għal dik il-familja (u jipprevjeni tnixxija v4 taħt proxy IPv6-only).", - "labelHost": "Host", + "labelHost": "Ħost", "labelPort": "Port", "labelUsername": "Isem tal-utent", - "labelPassword": "Password", + "labelPassword": "Kelma tal-pass", "labelRegion": "Reġjun", - "labelStatus": "Status", + "labelStatus": "Stat", "labelNotes": "Noti", "usernamePlaceholderEdit": "Ħalli vojt biex iżżomm l-isem tal-utent attwali", "passwordPlaceholderEdit": "Ħalli vojt biex iżżomm il-password attwali", @@ -10949,7 +10949,7 @@ "batchSelectedCount": "{count} magħżula", "batchDeleteSelected": "Ħassar {count} magħżula", "batchActivateSelected": "Attiva {count} magħżula", - "testPassed": "✓ OK", + "testPassed": "✓ Tajjeb", "close": "Agħlaq", "managePool": "Immaniġġja l-Pool", "poolTitle": "Pool tal-Proxy u Rotazzjoni", @@ -10968,9 +10968,9 @@ "strategyLatency": "Ottimizzata għal-latenza", "poolMembersLabel": "Membri tal-pool ({count})", "poolNoMembers": "Għad m’hemm l-ebda proxy f’dan il-pool.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# ħruġ użat} other {# ħruġ użati}} minn {connections, plural, one {# konnessjoni} other {# konnessjonijiet}} · sa {max} fuq ħruġ wieħed · fl-aħħar {hours} h", + "poolEgressObservationEmpty": "Ma ġie osservat l-ebda traffiku fl-aħħar {hours} h", + "poolEgressObservationHint": "Magħduda mir-reġistru tal-proxy tul il-perjodu: l-indirizzi IP distinti tal-ħruġ osservati għall-membri ta’ dan il-pool, u l-konnessjonijiet OmniRoute li użawhom. \"Fuq ħruġ wieħed\" tfisser tul il-perjodu, mhux fl-istess ħin. L-imblukkar 429 għal kull indirizz IP iwaqqaf temporanjament biss il-konnessjonijiet tal-istess familja ta’ fornituri.", "poolRemove": "Neħħi", "poolRemoveFailed": "Ma rnexxiex it-tneħħija tal-proxy mill-pool", "poolAddLabel": "Żid proxy", @@ -10982,7 +10982,7 @@ "playground": { "title": "Żona tal-Ittestjar tal-Mudelli", "description": "Ittestja kwalunkwe mudell direttament mid-dashboard. Agħżel il-fornitur, il-mudell u t-tip ta’ endpoint, imbagħad ibgħat talba biex tara r-rispons mhux ipproċessat.", - "endpoint": "Endpoint", + "endpoint": "Punt tat-tmiem", "provider": "Fornitur", "model": "Mudell", "accountKey": "Kont / Ċavetta", @@ -11012,7 +11012,7 @@ "responses": "Risposti", "completions": "Kompletazzjonijiet", "images": "Ġenerazzjoni tal-immaġnijiet", - "embeddings": "Embeddings", + "embeddings": "Inkorporazzjonijiet", "speech": "Test għal diskors", "transcription": "Traskrizzjoni tal-awdjo", "video": "Ġenerazzjoni tal-vidjow", @@ -11025,7 +11025,7 @@ "conversationalChat": "Chat konversazzjonali", "clearChat": "Ħassar iċ-chat", "typeMessagePlaceholder": "Ikteb messaġġ... (Shift+Enter għal linja ġdida)", - "tabChat": "Chat", + "tabChat": "Taħdita", "tabCompare": "Qabbel", "tabApi": "API", "tabBuild": "Ibni", @@ -11045,7 +11045,7 @@ "reasoningLabel": "Raġunament", "thinking": "Ħsieb", "effort": "Sforz", - "effortDefault": "Default", + "effortDefault": "Predefinit", "seedPlaceholder": "Każwali (ħalli vojt)", "presetsLabel": "Konfigurazzjonijiet issettjati minn qabel", "loadPreset": "Għabbi konfigurazzjoni ssettjata minn qabel", @@ -11086,7 +11086,7 @@ "maxColumnsReached": "Massimu ta’ {max} kolonni", "modelPlaceholderCompare": "Mudell (Cmd+K)…", "noModel": "L-ebda mudell", - "statusLabel": "Status: {status}", + "statusLabel": "Stat: {status}", "status": { "idle": "inattiv", "streaming": "qed jittrażmetti", @@ -11132,7 +11132,7 @@ "jsonSchemaEditor": "Editur tal-iskema JSON", "schemaValidated": "L-iskema ġiet ivvalidata", "validateSchema": "Ivvalida l-iskema", - "seed": "Seed", + "seed": "Żerriegħa", "stopSequences": "Sekwenzi ta’ waqfien", "stopSequencesPlaceholder": "eż. \"\\n\\n\" jew \"END\"", "autoProvider": "Awtomatiku", @@ -11193,7 +11193,7 @@ "speed": "Veloċità", "input": "Dħul", "url": "URL", - "format": "Format", + "format": "Ifformattja", "depth": "Fond", "copyCurl": "Ikkopja cURL", "copied": "Ikkupjat!", @@ -11281,17 +11281,17 @@ "sortTokensAsc": "Tokens ↑", "sortDurationDesc": "Tul taż-żmien ↓", "sortDurationAsc": "Tul taż-żmien ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", + "sortStatusDesc": "Stat ↓", + "sortStatusAsc": "Stat ↑", "sortModelAsc": "Mudell A-Z", "sortModelDesc": "Mudell Z-A", "sortLogs": "Issortja r-reġistri", "refresh": "Aġġorna", "columnsLabel": "Kolonni", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "ATTIV", "semantic": "Semantiku", - "upstream": "Upstream", + "upstream": "Lejn is-sors", "semanticCacheHit": "Instabet fil-cache semantika (ipprovduta minn OmniRoute)", "upstreamResponse": "Rispons tal-fornitur upstream", "noApiKey": "Ebda ċavetta API", @@ -11303,7 +11303,7 @@ "combo": "Kombinazzjoni" }, "columns": { - "status": "Status", + "status": "Stat", "cacheSource": "Sors tal-cache", "model": "Mudell", "requested": "Mitlub", @@ -11433,7 +11433,7 @@ "filterErrors": "Żbalji", "filterSuccess": "Suċċess", "filterTimeout": "Skadenza tal-ħin", - "colStatus": "Status", + "colStatus": "Stat", "colProxy": "Proxy", "colTls": "TLS", "colType": "Tip", @@ -11449,9 +11449,9 @@ "allTypes": "It-Tipi Kollha", "allLevels": "Il-Livelli Kollha", "allProviders": "Il-Fornituri Kollha", - "total": "total", + "total": "totali", "ok": "OK", - "err": "ERR", + "err": "ŻBALL", "timeoutShort": "TMO", "direct": "dirett", "newest": "L-aktar Ġodda", @@ -11470,7 +11470,7 @@ "speech": "Diskors", "search": "Fittex", "images": "Stampi", - "chat": "Chat", + "chat": "Taħdita", "music": "Mużika", "responses": "Tweġibiet", "rerank": "Klassifikazzjoni mill-Ġdid", @@ -11608,7 +11608,7 @@ "betaConfigSavedSuffix": "(għadha mhix maħżuna b'mod permanenti fuq is-server). L-infurzar tal-limitu għal kull talba għadu mhux integrat fil-fluss tal-proxy. Dan l-iskrin jippermettilek tfassal u tara viżwalment il-qsim tal-kwoti; l-infurzar reali se jiżdied f'verżjoni futura, flimkien mal-ħżin permanenti fid-DB u l-interċettazzjoni tas-sejħiet upstream.", "policyLabel": "Politika:", "resetIn": "jerġa' jiġi ssettjat fi", - "quotaTotal": "total", + "quotaTotal": "totali", "kpiAvgUtilization": "Użu medju", "kpiBorrowingNow": "Self attwali", "conceptTitle": "Kif taħdem il-Kondiviżjoni tal-Kwota", @@ -11679,7 +11679,7 @@ "endpointsCollapse": "Ikkollassa", "endpointsExpand": "Espandi", "endpointsAnthropicNote": "Nattiv għal Anthropic", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsResponsesNote": "Risposti OpenAI — codex/github", "endpointsWsNote": "WebSocket — codex biss", "betaText": "Quota Share huwa funzjonali, iżda huma mistennija xi żbalji. Sibt wieħed? Jekk jogħġbok irrapportah.", "betaReportLink": "Irrapporta problema", @@ -11722,7 +11722,7 @@ "version": "Verżjoni", "author": "Awtur", "description_label": "Deskrizzjoni", - "status": "Status", + "status": "Stat", "enabled": "Attivat", "disabled": "Diżattivat", "installedTab": "Installat", @@ -11780,7 +11780,7 @@ "filterProviders": "Fornituri", "filterCombos": "Kombinazzjonijiet", "filterApiKeys": "Ċwievet tal-API", - "filterSettings": "Settings", + "filterSettings": "Issettjar", "filterQuota": "Kwota", "filterAuth": "Awtentikazzjoni", "filterSystem": "Sistema", @@ -12337,7 +12337,7 @@ "description": "Ikkonfigura limiti tal-infiq, kwoti tat-tokens, u politiki tal-limitu tar-rata għal kull ċavetta tal-API jew globalment. Spezzjona l-konsum attwali u infurza kontrolli tal-ispejjeż fost il-fornituri." }, "omni-settings": { - "name": "Settings", + "name": "Konfigurazzjoni", "description": "Aqra u aġġorna s-settings globali tal-applikazzjoni: prompts tas-sistema, baġit tal-ħsieb, filtri tal-IP, regoli tal-payload, valuri predefiniti tal-kombinazzjonijiet, u l-konfigurazzjoni li tirrikjedi login." }, "omni-proxies": { @@ -12365,7 +12365,7 @@ "description": "Immaniġġja l-integrazzjonijiet tal-għodod CLI esposti permezz tal-API. Elenka, ikkonfigura, u ħaddem plugins tal-għodod CLI li jestendu l-kapaċitajiet ta’ awtomazzjoni ta’ OmniRoute." }, "omni-tunnels": { - "name": "Tunnels", + "name": "Mini", "description": "Oħloq u mmaniġġja tunnels siguri (ngrok, Cloudflare Tunnel, personalizzati) biex tesponi OmniRoute għall-internet jew taqsam l-aċċess ma’ aġenti remoti u pipelines CI." }, "omni-sync-cloud": { @@ -12417,7 +12417,7 @@ "description": "Fittex il-mudelli tal-IA disponibbli, elenka l-ismijiet alternattivi tal-mudelli u esplora l-katalgu sħiħ tal-mudelli mis-CLI. Iffiltra skont il-fornitur, fittex skont il-kapaċità u identifika l-varjanti tal-isem tal-mudell." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Ċat", "description": "Ibgħat kompletamenti taċ-chat, ittrażmetti t-tweġibiet u ibda sessjoni REPL interattiva mis-CLI. Jappoġġja l-fornituri kollha ta' OmniRoute, routing ikkombinat u l-konfigurazzjoni tal-prompt tas-sistema." }, "cli-routing": { @@ -12449,7 +12449,7 @@ "description": "Interaġixxi mas-server A2A ta' OmniRoute mis-CLI. Ibgħat kompiti, spezzjona l-istorja tal-eżekuzzjoni tal-ħiliet u ttestja l-protokoll JSON-RPC 2.0 minn aġent għal aġent b'mod interattiv." }, "cli-tunnel": { - "name": "CLI: Tunnels", + "name": "CLI: Mini", "description": "Ibda u waqqaf konnessjonijiet tunnel (ngrok, Cloudflare, personalizzati) mis-CLI. Spezzjona l-URLs tat-tunnels attivi, ikkonfigura l-awtentikazzjoni u ttestja jekk jistgħux jintlaħqu minn barra." }, "cli-backup-sync": { @@ -12504,7 +12504,7 @@ }, "comparison": { "colAgent": "Ħiliet tal-Aġenti", - "colOmni": "Omni Skills", + "colOmni": "Ħiliet Omni", "whatIs": { "label": "X'inhu", "agent": "SKILL.md li jista' jinqara mill-magni u li jgħallem lil aġent estern juża OmniRoute", @@ -12575,7 +12575,7 @@ "categoryCoding": "Kodifikazzjoni", "categoryReview": "Reviżjoni", "categoryDocumentation": "Dokumentazzjoni", - "categoryDebugging": "Debugging", + "categoryDebugging": "Iddibaggjar", "colRank": "Pożizzjoni", "colProvider": "Fornitur", "colTopModel": "L-Aqwa Mudell", @@ -12647,7 +12647,7 @@ "custom": "Personalizzat", "noSavedProxies": "L-ebda proxy ssejvjat — żid wieħed f’Settings → Proxy", "directConnection": "Dirett (mingħajr proxy)", - "host": "Host", + "host": "Ħost", "port": "Port", "usernameOptional": "Isem tal-utent (mhux obbligatorju)", "passwordOptional": "Password (mhux obbligatorja)", @@ -12992,7 +12992,7 @@ "description": "Ħalli l-irkupru tal-fluss jitlob it-tweġiba mill-ġdid u jgħaqqadha wara li l-bytes ikunu diġà waslu għand il-klijent." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Agħmel is-sejħa tal-għodda tal-kontinwazzjoni f’nofs il-fluss sikura: qatt tkomplix fluss maqtugħ wara li tkun intbagħtet sejħa tal-għodda (kemm jekk għadha għaddejja kif ukoll jekk diġà tlestiet), u waqqaf wara kontinwazzjoni vojta waħda minflok tuża l-baġit kollu tat-tentattivi mill-ġdid." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Aqleb darba waħda għal konnessjoni oħt meta fluss jingħalaq qabel ma jibgħat xi frame utli u l-attentat mill-ġdid limitat fuq l-istess konnessjoni jkun intuża. Jekk ma jkunx hemm konnessjoni oħt li tista' tintuża, jintbagħat lura l-iżball early-EOF oriġinali. Mitfi: early-EOF jibqa' finali wara l-attentat mill-ġdid." @@ -13035,12 +13035,12 @@ "description": "Kompli s-sejħiet mhux streaming tal-għodod immexxija mis-server sakemm il-mudell jirritorna tweġiba li tista’ tintuża mill-klijent." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Provenjenza ta’ Retry-After", + "description": "Fuq tweġibiet aggregati 429/503 ta’ indisponibbiltà, ħalli barra Retry-After meta ma jkun magħruf l-ebda ħin konkret futur għal tentattiv mill-ġdid minflok tibgħat 1s sintetika, żid error.retry_after_provenance, u aqra l-indikazzjonijiet testwali dwar tentattivi mill-ġdid fil-mogħdijiet ta’ combo drain." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Waqfiet tal-Infrastruttura bi Prijorità Protetta bħala 502", + "description": "Wieġeb b’502 minflok 503 meta mira ta’ prijorità li tuża biss fallback tal-kwota twaqqaf il-combo għal kawża li tista’ tiġi ppruvata li mhijiex il-kwota: circuit breaker miftuħ tal-fornitur jew qbiż predittiv minħabba l-latenza." } } }, @@ -13599,7 +13599,7 @@ }, "detail": { "title": "Dettalji tal-Konnessjoni", - "metadata": "Metadata", + "metadata": "Metadejta", "cooldown": "Perjodu ta' Stennija", "lastError": "L-Aħħar Żball", "breaker": "Interruttur taċ-Ċirkwit", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Irrifjuta t-talbiet qabel jintbagħtu meta l-mudell fil-mira ma jkollux il-kapaċitajiet meħtieġa (viżjoni, għodod, output strutturat, tieqa tal-kuntest). Jipproteġi t-talbiet diretti lil fornitur wieħed li jaqbżu l-filtru tal-kompatibbiltà tas-saff tal-kombinazzjonijiet.", "featureFlagDisableContextWindowChecksDescription": "Aqbeż il-verifika lokali ta' OmniRoute għat-tieqa tal-kuntest u l-għadd massimu ta' tokens tal-input għal talbiet diretti lil mudell wieħed. Il-fornituri upstream xorta jinfurzaw il-limiti effettivi tagħhom. Il-kompressjoni tal-prompt u l-limiti tat-tokens tal-output jibqgħu attivi.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "L-istatistika tat-tiftix u t-tiftix reċenti jgħoddu biss il-fornituri li għad għandhom konnessjoni attiva (fornituri mingħajr ċavetta bħal duckduckgo-free dejjem jingħaddu). Meta jkun Mitfi, tinżamm kull ringiela ta’ tfittxija miżmuma b’ID tal-fornitur.", "publicSystem": { "notFound": { "title": "Il-paġna ma nstabitx", @@ -13958,7 +13958,7 @@ "tokens": "Tokens", "active": "Attiv", "other": "Oħrajn", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "siegħa", "day": "jum", "unknownModel": "mhux magħruf", @@ -13984,8 +13984,8 @@ "colMode": "Modalità", "colRunner": "Eżekutur", "colSummary": "Sommarju", - "online": "online", - "offline": "offline", + "online": "onlajn", + "offline": "offlajn", "draining": "qed jitbattal", "hubOffline": "Il-hub ta’ Conductor huwa offline jew mhux ikkonfigurat (CONDUCTOR_HUB_URL) — mhu qed jintwera xejn minflok data skaduta.", "noRunners": "Ebda eżekutur irreġistrat", @@ -14051,9 +14051,9 @@ "filterSources": "Sorsi", "filterProviders": "Fornituri", "clearFilters": "Neħħi l-filtri", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Aġent tal-Cloud", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Konduttur", "sourceStale": "Mhux aġġornat minn {since}", "sourceOffline": "Mhux konness", "sourceCollapse": "Agħlaq", diff --git a/src/i18n/messages/my.json b/src/i18n/messages/my.json index 25c91e45a1..ece36889ab 100644 --- a/src/i18n/messages/my.json +++ b/src/i18n/messages/my.json @@ -75,7 +75,7 @@ "accept": "လက်ခံရန်", "accountId": "အကောင့် ID", "alias": "အမည်လွှဲ", - "apiKeyId": "API Key ID", + "apiKeyId": "API ကီး ID", "apiKeyName": "API Key အမည်", "apiKeySecret": "API Key လျှို့ဝှက်ကုဒ်", "authorization": "ခွင့်ပြုချက်", @@ -83,7 +83,7 @@ "content-length": "အကြောင်းအရာ အရှည်", "cookie": "Cookie", "file": "ဖိုင်", - "host": "Host", + "host": "ဟို့စ်", "id": "ID", "import": "တင်သွင်းရန်", "limit": "ကန့်သတ်ချက်", @@ -114,7 +114,7 @@ "range": "အပိုင်းအခြား", "component": "အစိတ်အပိုင်း", "redirect_uri": "ပြန်ညွှန်း URI", - "idempotency-key": "Idempotency Key", + "idempotency-key": "ထပ်တူလုပ်ဆောင်မှုကာကွယ်ရေး ကီး", "error_description": "အမှားဖော်ပြချက်", "code": "ကုဒ်", "compatible": "လိုက်ဖက်ညီသော", @@ -209,7 +209,7 @@ "enableCloud": "Cloud ကို ဖွင့်ရန်", "expirationBannerExpiringSoon": "သက်တမ်းမကြာမီကုန်ဆုံးမည့် အသိပေးချက်", "retry": "ထပ်မံကြိုးစားရန်", - "embeddings": "Embeddings", + "embeddings": "ထည့်သွင်းဖော်ပြချက်များ", "errorCount": "အမှားအရေအတွက်", "backupReasonManual": "ကိုယ်တိုင် အရန်သိမ်းရသည့် အကြောင်းရင်း", "safeSearchModerate": "အလယ်အလတ်အဆင့် လုံခြုံသောရှာဖွေမှု", @@ -409,15 +409,15 @@ "addFirstProviderDesc": "OmniRoute မှတစ်ဆင့် တောင်းဆိုမှုများကို စတင်လမ်းကြောင်းပေးရန် AI provider တစ်ခုကို ချိတ်ဆက်ပါ။ အခမဲ့ provider များ၊ API ကီးများ သို့မဟုတ် OAuth အကောင့်များကို အသုံးပြုနိုင်သည်။", "learnMore": "ပိုမိုလေ့လာရန်", "includeDomains": "ဒိုမိန်းများ ထည့်သွင်းရန်", - "promptCache": "Prompt Cache", + "promptCache": "ပရောမ့် ကက်ရှ်", "cloudConnected": "Cloud ချိတ်ဆက်ပြီး", "deleteChain": "Chain ကို ဖျက်ရန်", - "chatPathPlaceholder": "Chat Path Placeholder", + "chatPathPlaceholder": "ချတ်လမ်းကြောင်း နေရာယူကွက်", "databasePath": "ဒေတာဘေ့စ် လမ်းကြောင်း", "usingLocalServer": "Local Server ကို အသုံးပြုနေသည်", "globalComboConfig": "Global Combo စီစဉ်သတ်မှတ်ချက်", "backupFailed": "အရန်သိမ်းဆည်းမှု မအောင်မြင်ပါ", - "tabProtocols": "Tab Protocols", + "tabProtocols": "တက်ဘ် ပရိုတိုကောများ", "continue": "ဆက်လုပ်ရန်", "categorySearch": "အမျိုးအစား ရှာဖွေမှု", "rateLimitStatus": "နှုန်းကန့်သတ်ချက် အခြေအနေ", @@ -701,13 +701,13 @@ "monitorAnomaliesAndHealth": "ပုံမှန်မဟုတ်မှုများနှင့် စနစ်အခြေအနေကို စောင့်ကြည့်ပါ", "flaggedAnomalies": "အမှတ်အသားပြုထားသော ပုံမှန်မဟုတ်မှုများ", "noAnomaliesDetected": "ပုံမှန်မဟုတ်မှုများ မတွေ့ရှိပါ", - "apiKey": "API Key", - "xpLastHour": "XP (1h)", + "apiKey": "API ကီး", + "xpLastHour": "XP (1 နာရီ)", "zScore": "Z-Score", "suspicious": "သံသယဖြစ်ဖွယ်", "tokensCommunityServers": "အသိုင်းအဝိုင်း ဆာဗာများ", "tokensServerNamePlaceholder": "ဆာဗာအမည်", - "tokensApiKeyPlaceholder": "API key", + "tokensApiKeyPlaceholder": "API ကီး", "tokensTokenBalance": "တိုကင် လက်ကျန်", "tokensSendTokens": "တိုကင်များ ပေးပို့ရန်", "tokensRecipientApiKeyId": "လက်ခံသူ API Key ID", @@ -761,7 +761,7 @@ "tierCoverageSubtitle": "အရန်အဆင့်တစ်ခုစီအလိုက် စီစဉ်သတ်မှတ်ထားသော ဝန်ဆောင်မှုပေးသူများ", "batchDetailCopyId": "ID ကူးယူရန်", "batchDetailClose": "ပိတ်ရန်", - "batchDetailEndpoint": "Endpoint", + "batchDetailEndpoint": "အဆုံးမှတ်", "batchDetailModel": "မော်ဒယ်", "batchDetailWindow": "အချိန်ကာလ", "batchDetailCreated": "ဖန်တီးထားသည့်အချိန်", @@ -795,8 +795,8 @@ "batchFilePurpose": { "batch": "Batch ထည့်သွင်းမှု", "batch-output": "Batch ထုတ်ပေးမှု", - "fine-tune": "Fine-tuning", - "assistants": "Assistants" + "fine-tune": "အသေးစိတ်ချိန်ညှိခြင်း", + "assistants": "လက်ထောက်များ" }, "batchPageLoadingMore": "နောက်ထပ် ဖွင့်နေသည်…", "recommended": "အကြံပြုထားသည်", @@ -831,9 +831,9 @@ "wizardStep2Input": "အဝင်", "wizardStep3Validate": "အတည်ပြုစစ်ဆေးပါ", "wizardStep4Cost": "ကုန်ကျစရိတ်နှင့် ဖန်တီးခြင်း", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "wizardProviderLabel": "ဝန်ဆောင်မှုပေးသူ", + "wizardEndpointLabel": "အဆုံးမှတ်", + "wizardModelLabel": "မော်ဒယ်", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (ကျွန်ုပ်တို့ ပြောင်းပေးပါမည်)", "wizardDropOrPick": "ဖိုင်တစ်ခုကို ဆွဲချပါ သို့မဟုတ် ရွေးရန် နှိပ်ပါ", @@ -901,8 +901,8 @@ "batchListRemoveCompleted": "ပြီးစီးထားသည်များကို ဖယ်ရှားရန်", "batchListTableStatus": "အခြေအနေ", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", + "batchListTableEndpoint": "အဆုံးမှတ်", + "batchListTableModel": "မော်ဒယ်", "batchListTableProgress": "တိုးတက်မှု", "batchListTableCreated": "ဖန်တီးခဲ့သည့်အချိန်", "batchListTableExpires": "သက်တမ်းကုန်မည့်အချိန်", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Claude Code gateway ၏ မော်ဒယ်ရှာဖွေမှုစာရင်းတွင် Claude မဟုတ်သော မော်ဒယ်များ ပါဝင်စေရန် /v1/models တွင် claude/<provider>/<model> mirror ids များကို ဖော်ပြပါ။ သတိပေးချက်- အားလုံးအတွက် ဖွင့်ထားပါက client အားလုံးတွင် catalog entry အရေအတွက် နှစ်ဆဖြစ်စေသည်။", "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> gateway aliases များအတွက် အဓိကခလုတ်။ ဖွင့်ထားလျှင် (မူလသတ်မှတ်ချက်)- /v1/models သည် သတ်မှတ်ချက်ပြည့်မီသော စဉ်းစားဆင်ခြင်နိုင်သည့် Claude မော်ဒယ်တိုင်းအတွက် မစဉ်းစားသည့် မူကွဲတစ်ခုကို ဖော်ပြပြီး တောင်းဆိုမှုတစ်ခုတွင် ပေးပို့သော no-think/ id ကို reasoning ပိတ်ထားသည့် တကယ့်မော်ဒယ်သို့ ပြန်လည်ချိတ်ဆက်ပေးသည်။ ပိတ်ထားလျှင်- မည်သည့်မူကွဲကိုမျှ မဖော်ပြဘဲ no-think/ id ကို အခြားမသိသော model id များကဲ့သို့ သတ်မှတ်သည်။ ဤခလုတ်ဖွင့်ထားစဉ် မော်ဒယ်တစ်ခုချင်းစီ၏ ModelSpec.noThinkingAlias opt-in/opt-out သတ်မှတ်ချက်သည် ဆက်လက်သက်ရောက်သည်။", "featureFlagChatVirtualLanesEnabledDescription": "provider dispatch (#9654) အတွက် tenant တစ်ခုချင်းစီအလိုက် အလိုက်သင့်ပြောင်းလဲနိုင်သော virtual admission lanes များကို ဖွင့်ပါ။ tenant တစ်ခု၏ ရုတ်တရက်မြင့်တက်လာသော အသုံးပြုမှုကြောင့် အခြား tenant တွင် 503 ဖြစ်ပေါ်တော့မည်မဟုတ်ပါ။ OMNIROUTE_CHAT_VIRTUAL_LANES env var သည် ဤ dashboard override ထက် ဦးစားပေးသက်ရောက်ပြီး ပြောင်းလဲမှုများသည် server ပြန်လည်စတင်ချိန်တွင် အသက်ဝင်မည်ဖြစ်သည်။", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ဒက်ရှ်ဘုတ် ဝန်ဆောင်မှုပေးသူ စာမျက်နှာများတွင် ဝန်ဆောင်မှုပေးသူက အသိအမှတ်ပြုသည့် အချက်ပြမှုများ၌သာ Free တံဆိပ်ကို ပြပါ — မှတ်တမ်းတင်ထားသော အခမဲ့အဆင့် မရှိသည့် ဝန်ဆောင်မှုပေးသူများအတွက် ဖော်ပြအမည်အခြေပြု ခန့်မှန်းနည်း၊ boolean မဟုတ်သော free အကွက်များနှင့် :free နောက်ဆက်များကို မသုံးတော့ပါ။ ပိတ်ထားပါက ယခင်တံဆိပ် စည်းမျဉ်းကို ဆက်သုံးပါမည်။", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy pool များနှင့် opencode ၏ အကောင့်တစ်ခုချင်းစီအလိုက် အလှည့်ကျရွေးချယ်မှုသည် ပျက်ကွက်ခဲ့သည့် proxy (TCP probe ကို ငြင်းပယ်ခဲ့ခြင်း သို့မဟုတ် ၎င်းမှတစ်ဆင့် 429 တုံ့ပြန်မှုရရှိခြင်း) ကို process တစ်ခုချင်းစီအလိုက် သတ်မှတ်ကာလအတွင်း ပြန်လည်အသုံးမပြုတော့ပါ။ ထပ်မံဖြစ်ပွားတိုင်း ထိုကာလသည် နှစ်ဆတိုးလာပြီး သတ်မှတ်အများဆုံးပမာဏအထိသာ တိုးပါမည်။ Proxy အခြေအနေကို မှတ်တမ်းတင်မည်မဟုတ်ပါ။ Candidate အားလုံးကို ဘေးဖယ်ထားရသည့်အခါ ရွေးချယ်မှုသည် မပြောင်းလဲပါ။ မူလအားဖြင့် ပိတ်ထားသည်။ ရွေးချယ်မှုအစီအစဉ်သည် ရိုးရိုးအလှည့်ကျအစီအစဉ်အတိုင်း အတိအကျဖြစ်သည်။", + "featureFlagProxyPoolEgressObservationDescription": "Dashboard ရှိ proxy pool တစ်ခု၏အောက်တွင် လွန်ခဲ့သော 24 နာရီအတွင်း ၎င်း၏ member များအတွက် အသုံးပြုခဲ့သည့် စောင့်ကြည့်တွေ့ရှိထားသော egress IP အရေအတွက်၊ ထို IP များကို အသုံးပြုခဲ့သည့် connection အရေအတွက်နှင့် IP တစ်ခုတည်း၏နောက်ကွယ်တွင် အများဆုံးတွေ့ရှိရသည့် အရေအတွက်တို့ကို ပြသပါ။ ၎င်းသည် ဖတ်ရှုရန်သာဖြစ်ပြီး proxy log မှ တွက်ချက်ထားကာ routing အတွက် မည်သည့်အခါမျှ အသုံးမပြုပါ။ မူလအားဖြင့် ပိတ်ထားသည်။ Pool editor သည် မပြောင်းလဲဘဲ observation route က null ကို ပြန်ပေးသည်။", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Proxy health sweep တွင် target က ငြင်းပယ်ခဲ့သော probe (401/403/429—proxy က လက်ဆင့်ကမ်းပေးခဲ့သော်လည်း destination က ဤ egress IP ကို ငြင်းပယ်ခြင်း) ကို အောင်မြင်စွာ ဆောင်ရွက်ခဲ့သည့် probe ကဲ့သို့ proxy ၏ ဆက်တိုက်ပျက်ကွက်မှုအရေအတွက်ကို ပြန်လည်သတ်မှတ်ခွင့်ပြုပါ။ မူလအားဖြင့် ပိတ်ထားသည်။ ငြင်းပယ်မှုသည် သက်ရောက်မှုမရှိဘဲ streak ကို ဆက်လက်ထိန်းထားသည်။ မည်သည့်အခြေအနေတွင်မဆို 5xx သည် အတည်မပြုနိုင်သည့်အခြေအနေအဖြစ် ဆက်ရှိနေပြီး ငြင်းပယ်မှုတစ်ခုကြောင့် proxy ကို ဖယ်ရှားခြင်း၊ ပိတ်ခြင်း သို့မဟုတ် ပြန်လည်အသက်သွင်းခြင်း မည်သည့်အခါမျှ မပြုလုပ်ပါ။", "sidebar": { "home": "ပင်မစာမျက်နှာ", "dashboard": "ဒက်ရှ်ဘုတ်", @@ -1029,7 +1029,7 @@ "embeddedServices": "ထည့်သွင်းထားသော ဝန်ဆောင်မှုများ", "embeddedServicesSubtitle": "ရွေးချယ်အသုံးပြုနိုင်သော စက်တွင်းဝန်ဆောင်မှုများ", "logs": "မှတ်တမ်းများ", - "webhooks": "Webhooks", + "webhooks": "ဝက်ဘ်ဟုခ်များ", "webhooksSubtitle": "ဖြစ်ရပ်များအကြောင်း အသိပေးချက်ရယူရန်", "logExport": "မှတ်တမ်း ထုတ်ယူခြင်း", "logExportSubtitle": "ခေါ်ဆိုမှုမှတ်တမ်းများကို ပြင်ပသို့ ပို့ရန်", @@ -1193,7 +1193,7 @@ "gamificationGroup": "ဂိမ်းပုံစံ ထည့်သွင်းခြင်း", "toolsGroup": "ကိရိယာများ", "integrationsGroup": "ပေါင်းစည်းချိတ်ဆက်မှုများ", - "proxyGroup": "Proxy", + "proxyGroup": "ပရောက်စီ", "costsParametersGroup": "ကုန်ကျစရိတ် ကန့်သတ်ချက်များ", "auditGroup": "စာရင်းစစ်ဆေးခြင်း", "batchGroup": "အသုတ်လိုက်", @@ -1275,16 +1275,16 @@ "systemGroup": "စနစ်", "costsOverview": "ခြုံငုံသုံးသပ်ချက်", "costsOverviewSubtitle": "ပေါင်းစည်းထားသော ကုန်ကျစရိတ်ခွဲခြမ်းစိတ်ဖြာမှု", - "agentBridge": "Agent Bridge", + "agentBridge": "အေးဂျင့် ချိတ်ဆက်တံတား", "agentBridgeSubtitle": "IDE agent အသွားအလာကို ကြားဖြတ်ဖမ်းယူရန်", "trafficInspector": "အသွားအလာ စစ်ဆေးကိရိယာ", "trafficInspectorSubtitle": "သင့်အက်ပ်များမှ တောင်းဆိုချက်နှင့် တုံ့ပြန်ချက် အသွားအလာကို စစ်ဆေးရန်", "trafficInspectorPurpose": "သင့်အပလီကေးရှင်းက AI ဝန်ဆောင်မှုပေးသူများထံ ပေးပို့သည့်အရာနှင့် ၎င်းတို့ထံမှ လက်ခံရရှိသည့်အရာကို အတိအကျ ကြည့်ရှုပါ။ OpenAI နှင့် ကိုက်ညီသော မည်သည့် client နှင့်မဆို အလုပ်လုပ်ပါသည်။", "cliCode": "CLI Code", "cliCodeSubtitle": "OmniRoute ကို ညွှန်ထားသော ကုဒ်ကိရိယာများ", - "cliAgents": "CLI Agents", + "cliAgents": "CLI အေးဂျင့်များ", "cliAgentsSubtitle": "အလိုအလျောက် လုပ်ဆောင်သော CLI agent များ", - "acpAgents": "ACP Agents", + "acpAgents": "ACP အေးဂျင့်များ", "acpAgentsSubtitle": "OmniRoute မှ စတင်လုပ်ဆောင်ပေးသည့် CLI များ", "skipToContent": "အကြောင်းအရာသို့ ကျော်သွားရန်", "mainNavigation": "ပင်မလမ်းညွှန်", @@ -1318,7 +1318,7 @@ "noResults": "ရလဒ်မရှိပါ" }, "webhooks": { - "title": "Webhooks", + "title": "ဝဘ်ဟုတ်များ", "description": "စနစ်ဖြစ်ရပ်များအတွက် HTTP ပြန်ခေါ်မှုများကို စီစဉ်သတ်မှတ်ပါ။", "configuredWebhooks": "စီစဉ်သတ်မှတ်ထားသော Webhooks", "configuredWebhooksDesc": "ပေးပို့ရမည့် endpoint များ၊ စာရင်းသွင်းထားသော ဖြစ်ရပ်များ၊ အခြေအနေနှင့် စမ်းသပ်ပေးပို့မှုများကို စီမံပါ။", @@ -1327,7 +1327,7 @@ "name": "အမည်", "namePlaceholder": "ထုတ်လုပ်မှုပတ်ဝန်းကျင် စောင့်ကြည့်မှု", "unnamedWebhook": "အမည်မပေးထားသော webhook", - "url": "Endpoint URL", + "url": "အဆုံးမှတ် URL", "events": "ဖြစ်ရပ်များ", "allEvents": "ဖြစ်ရပ်အားလုံး", "secret": "လျှို့ဝှက်ကီး", @@ -1392,7 +1392,7 @@ "loadFailed": "Webhook ပေးပို့မှုမှတ်တမ်းများကို ဖွင့်၍မရပါ။", "empty": "ပေးပို့မှုများကို မှတ်တမ်းတင်ထားခြင်း မရှိသေးပါ။ event တစ်ခုကို အစပျိုးပါ သို့မဟုတ် စမ်းသပ် payload တစ်ခု ပေးပို့ပါ။", "status": "အခြေအနေ", - "event": "Event", + "event": "ဖြစ်ရပ်", "latency": "ကြာချိန်", "at": "ပေးပို့သည့်အချိန်" }, @@ -1422,30 +1422,30 @@ "invalidUrl": "URL ဖော်မတ် မမှန်ကန်ပါ" }, "custom": { - "endpointUrl": "Endpoint URL", + "endpointUrl": "အဆုံးမှတ် URL", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", "secretKey": "လျှို့ဝှက်ကီး", "secretKeyPlaceholder": "လျှို့ဝှက်ကီးကို ထည့်ပါ သို့မဟုတ် အလိုအလျောက်ထုတ်လုပ်ရန် ကွက်လပ်ထားပါ", "secretKeyHint": "အထောက်အထားစစ်ဆေးရန် payload header ကို လက်မှတ်ရေးထိုးရာတွင် အသုံးပြုသည်။" }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "Discord ဝဘ်ဟုတ် URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "သင့် Discord ချန်နယ်၏ ပေါင်းစည်းမှုဆက်တင်များမှ ကူးယူထားသော webhook URL။", "tutorial": "Discord webhook ဖန်တီးနည်း-" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "Slack ဝဘ်ဟုတ် URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "သင့် Slack Incoming Webhooks ပေါင်းစည်းမှုမှ ကူးယူထားသော webhook URL။", "tutorial": "Slack webhook ဖန်တီးနည်း-" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "Telegram ဘော့တ် တိုကင်", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "သင့် bot ကို ဖန်တီးစဉ် @BotFather ထံမှ ရရှိသော HTTP API token။", "chatId": "Telegram Chat ID / ချန်နယ်", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 သို့မဟုတ် @channelname", "chatIdHint": "chat/channel ၏ သီးသန့်ဂဏန်းအမှတ်အသား သို့မဟုတ် အများသုံးအသုံးပြုသူအမည်။", "tutorial": "Telegram webhook ပြင်ဆင်သတ်မှတ်နည်း-" } @@ -1494,7 +1494,7 @@ "tool": "ကိရိယာ", "toolPlaceholder": "ကိရိယာအမည်ဖြင့် စစ်ထုတ်ရန်", "duration": "ကြာချိန်", - "apiKey": "API Key", + "apiKey": "API ကီး", "output": "ရလဒ်အထွက်", "allResults": "ရလဒ်အားလုံး", "success": "အောင်မြင်သည်", @@ -1658,7 +1658,7 @@ "featureFlagsCategorySecurity": "လုံခြုံရေး", "featureFlagsCategoryNetwork": "ကွန်ရက်", "featureFlagsCategoryPolicies": "မူဝါဒများ", - "featureFlagsCategoryRuntime": "Runtime", + "featureFlagsCategoryRuntime": "လည်ပတ်မှုပတ်ဝန်းကျင်", "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "စနစ်အခြေအနေ", "featureFlagsSourceDb": "DB", @@ -1725,7 +1725,7 @@ "costs": "ကုန်ကျစရိတ်များ", "health": "စနစ်အခြေအနေ", "runtime": "လည်ပတ်ချိန်", - "webhooks": "Webhooks", + "webhooks": "ဝဘ်ဟုတ်များ", "home": "ပင်မစာမျက်နှာ", "activity": "လုပ်ဆောင်ချက်များ", "agentSkills": "AgentSkills", @@ -1743,7 +1743,7 @@ "cache": "ကက်ရှ်", "changelog": "ပြောင်းလဲမှုမှတ်တမ်း", "chaos": "မတည်ငြိမ်မှု", - "cloudAgents": "Cloud Agents", + "cloudAgents": "Cloud အေးဂျင့်များ", "live": "တိုက်ရိုက်", "studio": "စတူဒီယို", "aggressive": "ပြင်းထန်သော", @@ -1772,13 +1772,13 @@ "providerStats": "Provider စာရင်းအင်းများ", "new": "အသစ်", "quota": "ခွဲတမ်း", - "relay": "Relay", + "relay": "ထပ်ဆင့်ပို့စနစ်", "searchTools": "ရှာဖွေရေးကိရိယာများ", "security": "လုံခြုံရေး", "sidebar": "ဘေးဘက်မီနူး", "tokens": "တိုကင်များ", "tools": "ကိရိယာများ", - "agentBridge": "Agent Bridge", + "agentBridge": "အေးဂျင့် ချိတ်ဆက်တံတား", "trafficInspector": "အသွားအလာ စစ်ဆေးကိရိယာ", "usage": "အသုံးပြုမှု", "orchestration": "စီမံညှိနှိုင်းမှု" @@ -1815,7 +1815,7 @@ "topologyLegendRecent": "မကြာသေးမီက", "topologyLegendError": "အမှား", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", + "apiKeyLabel": "API ကီး", "requestsShort": "တောင်းဆိုမှု {count} ခု", "providerModelsTitle": "{provider} - မော်ဒယ်များ", "copiedModel": "ကူးယူပြီးပါပြီ- {model}", @@ -1903,7 +1903,7 @@ "usageAnalyticsTitle": "အသုံးပြုမှု ခွဲခြမ်းစိတ်ဖြာချက်များ", "diversityScoreTitle": "ဝန်ဆောင်မှုပေးသူ ကွဲပြားစုံလင်မှု", "diversityScoreDesc": "လတ်တလော traffic ကာလအတွင်း ဝန်ဆောင်မှုပေးသူထံ စုစည်းရောက်ရှိမှု အခြေအနေ။", - "diversityShannonEntropy": "Shannon entropy", + "diversityShannonEntropy": "ရှန်နွန် အင်ထရိုပီ", "diversityWindow": "ကာလအပိုင်းအခြား- တောင်းဆိုမှု {count} ခု · နောက်ဆုံး {mins} မိနစ်", "diversityHealthy": "ကောင်းမွန်သော ဖြန့်ဝေမှု", "diversityRiskHigh": "ဝန်ဆောင်မှုပေးသူတစ်ခုတည်းအပေါ် မှီခိုရနိုင်ခြေ မြင့်မားသည်", @@ -2024,7 +2024,7 @@ "comboHealthExecutionTargets": "လုပ်ဆောင်ရန် ပစ်မှတ်များ", "comboHealthSuccess": "အောင်မြင်မှု", "comboHealthLatency": "ကြာချိန်", - "comboHealthQuota": "Quota", + "comboHealthQuota": "ခွဲတမ်း", "comboHealthTitle": "Combo အခြေအနေ", "comboHealthUnableToLoad": "Combo အခြေအနေကို ဖွင့်၍မရပါ", "comboHealthGettingStarted": "စတင်အသုံးပြုခြင်း", @@ -2188,7 +2188,7 @@ "routeRuntimeScoreNow": "လက်ရှိ runtime ရမှတ်", "routeWouldSelectNow": "ယခု ရွေးချယ်မည့်အရာ", "routeNoRecomputeCandidates": "ဤတောင်းဆိုမှုအတွက် combo candidate အဆင့်သတ်မှတ်ချက်ကို ပြန်လည်တွက်ချက်၍ မရပါ။", - "runtime": "Runtime", + "runtime": "လည်ပတ်ချိန်", "routeTopNow": "လက်ရှိ ထိပ်ဆုံး", "routeFetchLogsFailed": "တောင်းဆိုမှု log များကို ရယူ၍ မရပါ", "routeExplainFailed": "လမ်းကြောင်းကို ရှင်းပြ၍ မရပါ", @@ -2203,11 +2203,11 @@ "routeRecentSuccess": "မကြာသေးမီက အောင်မြင်မှု", "routeAvgTargetLatency": "ပျမ်းမျှ ပစ်မှတ်ကြာချိန်", "routeSelectedTarget": "ရွေးချယ်ထားသော ပစ်မှတ်", - "provider": "Provider", - "model": "Model", - "account": "Account", + "provider": "ဝန်ဆောင်မှုပေးသူ", + "model": "မော်ဒယ်", + "account": "အကောင့်", "connection": "ချိတ်ဆက်မှု", - "combo": "Combo", + "combo": "ပေါင်းစပ်မှု", "routeStep": "အဆင့်", "tokens": "Token များ", "notAvailable": "မသက်ဆိုင်ပါ", @@ -2387,7 +2387,7 @@ "apiManagerCustomRateLimits": "စိတ်ကြိုက် Rate Limits", "apiManagerCustomRateLimitsDesc": "ကမ္ဘာလုံးဆိုင်ရာ မူလကန့်သတ်ချက်များကို အစားထိုးသတ်မှတ်ပါ။ မူလသတ်မှတ်ချက်များကို အသုံးပြုရန် ဗလာထားပါ။", "apiManagerRateLimitRequestsPlaceholder": "တောင်းဆိုမှုများ", - "apiManagerRateLimitReqPer": "req /", + "apiManagerRateLimitReqPer": "တောင်းဆိုမှု /", "apiManagerRateLimitSecondsPlaceholder": "စက္ကန့်", "apiManagerRemoveLimitTitle": "ကန့်သတ်ချက်ကို ဖယ်ရှားရန်", "apiManagerTimezonePlaceholder": "America/Sao_Paulo", @@ -2418,7 +2418,7 @@ "quotaKeysSection": "Quota keys များ", "bypassProviderQuota": "provider quota ဖြတ်တောက်မှုများကို ကျော်လွှားရန်", "bypassProviderQuotaDescription": "ဤ key ကို routing လုပ်နေစဉ် upstream provider/account ဖြတ်တောက်ရေးမူဝါဒအား လျစ်လျူရှုခွင့်ပြုသည်။ API key ၏ USD quotas များမှာ ဆက်လက်သက်ရောက်သည်။", - "quotaPill": "QUOTA", + "quotaPill": "ခွဲတမ်း", "quotaModeOnly": "qtSd-only", "exclusiveLease": "သီးသန့် ငှားရမ်းခွင့်", "exclusiveLeaseNoticeTitle": "သီးသန့် ငှားရမ်းခွင့်", @@ -2747,8 +2747,8 @@ "modelAliases": "မော်ဒယ် အမည်ကွဲများ", "addModel": "မော်ဒယ် ထည့်ရန်", "routeModelPlaceholder": "{model} ကို လမ်းကြောင်းလွှဲရန်...", - "baseUrl": "Base URL", - "apiKey": "API Key", + "baseUrl": "အခြေခံ URL", + "apiKey": "API ကီး", "configured": "စီစဉ်သတ်မှတ်ပြီး", "notConfigured": "စီစဉ်သတ်မှတ်မထားပါ", "notInstalled": "ထည့်သွင်းမထားပါ", @@ -2780,9 +2780,9 @@ "cliRuntimeDetected": "CLI runtime ကို တွေ့ရှိပြီး အသင့်ဖြစ်နေပါပြီ", "cliFoundNotRunnable": "CLI ကို တွေ့ရှိသော်လည်း လုပ်ဆောင်၍မရပါ{reason}", "cliRuntimeNotDetected": "CLI runtime ကို မတွေ့ရှိပါ", - "binary": "Binary", + "binary": "ဘိုင်နရီ", "configPath": "Config လမ်းကြောင်း", - "configPathShort": "Config", + "configPathShort": "ဖွဲ့စည်းသတ်မှတ်ချက်", "failedCheckRuntimeStatus": "Runtime အခြေအနေကို စစ်ဆေး၍ မရပါ။", "copy": "ကူးယူပါ", "copied": "ကူးယူပြီးပါပြီ", @@ -3103,7 +3103,7 @@ "customCliEndpointHintLabel": "Endpoint ကို ချိတ်ဆက်သတ်မှတ်နည်း", "customCliEndpointHint": "မည်သည့် OpenAI-compatible client ကိုမဆို OmniRoute /v1 base URL သို့ ညွှန်ပါ။ မူရင်း chat completions endpoint မှာ {endpoint} ဖြစ်သည်။ ကိရိယာက provider object လိုအပ်သည့်အခါ JSON block ကို အသုံးပြုပါ၊ သို့မဟုတ် OPENAI_* variable များကို ဖတ်သည့်အခါ env script ကို အသုံးပြုပါ။", "customCliEnvBlockTitle": "Env / shell အတိုအထွာ", - "customCliJsonBlockTitle": "Provider JSON block", + "customCliJsonBlockTitle": "ဝန်ဆောင်မှုပေးသူ JSON ဘလော့ခ်", "networkError": "ကွန်ရက် အမှား", "other": "အခြား", "preview": "အစမ်းကြည့်ရန်", @@ -3176,8 +3176,8 @@ "copilotToolCalling": "ကိရိယာ ခေါ်ယူအသုံးပြုခြင်း", "copilotPasteInto": "ဤနေရာသို့ ကူးထည့်ပါ:", "copilotReloadInstruction": "ထို့နောက် VS Code ကို ပြန်လည်ဖွင့်ပြီး ထည့်သွင်းရန်အကွက်တွင် API သော့ကို သတ်မှတ်ပါ။", - "wireApiChatCompletions": "Chat Completions (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiChatCompletions": "ချတ်ပြီးစီးမှုများ (/chat/completions)", + "wireApiResponses": "တုံ့ပြန်မှု API (/responses)", "cliproxyapiActionFailed": "လုပ်ဆောင်ချက် မအောင်မြင်ပါ", "cliproxyapiActionSucceeded": "လုပ်ဆောင်ချက် အောင်မြင်ပါသည်", "cliproxyapiCheckUpdates": "အပ်ဒိတ်များကို စစ်ဆေးပါ", @@ -3186,7 +3186,7 @@ "cliproxyapiHealthy": "ကောင်းမွန်သည်", "cliproxyapiInstall": "ထည့်သွင်းပါ", "cliproxyapiNotInstalledValue": "မထည့်သွင်းရသေးပါ", - "cliproxyapiPort": "Port", + "cliproxyapiPort": "ပေါ့တ်", "cliproxyapiRequestFailed": "တောင်းဆိုမှု မအောင်မြင်ပါ", "cliproxyapiRestart": "ပြန်လည်စတင်ပါ", "cliproxyapiStart": "စတင်ပါ", @@ -3315,7 +3315,7 @@ "liveSelectComboPlaceholder": "— combo ရွေးချယ်ပါ —", "liveTargetCount": "{count, plural, one {# ပစ်မှတ်} other {# ပစ်မှတ်များ}}", "liveSingle": "တစ်ခုတည်း", - "liveFleet": "Fleet", + "liveFleet": "အစုအဖွဲ့", "playgroundStatusAvailable": "အသုံးပြုနိုင်သည်", "playgroundStatusNoQuota": "Quota မရှိပါ", "playgroundStatusDegraded": "စွမ်းဆောင်ရည် ကျဆင်းနေသည်", @@ -3836,7 +3836,7 @@ "outOfRequests": "တောင်းဆိုမှု {total} ခုအနက်", "costByApiKey": "API Key အလိုက် ကုန်ကျစရိတ်", "costByAccount": "အကောင့်အလိုက် ကုန်ကျစရိတ်", - "apiKeyName": "API Key", + "apiKeyName": "API ကီး", "account": "အကောင့်", "requests": "တောင်းဆိုမှုများ", "cost": "ကုန်ကျစရိတ်", @@ -3859,7 +3859,7 @@ "costExplorerDescription": "ပံ့ပိုးသူ၊ မော်ဒယ်၊ API Key၊ အကောင့် သို့မဟုတ် ဝန်ဆောင်မှုအဆင့်အလိုက် အသုံးစရိတ်ကို လေ့လာပါ။", "groupProvider": "ပံ့ပိုးသူ", "groupModel": "မော်ဒယ်", - "groupApiKey": "API Key", + "groupApiKey": "API ကီး", "groupAccount": "အကောင့်", "groupServiceTier": "ဝန်ဆောင်မှုအဆင့်", "serviceTierFast": "မြန်ဆန်", @@ -3881,18 +3881,18 @@ "showingTopCostRows": "ကိုက်ညီသော အတန်း {total} ခုအနက် {shown} ခုကို ပြသနေသည် (ထိပ်ဆုံး 50 ခု)။" }, "endpoint": { - "title": "API Endpoint", + "title": "API အဆုံးမှတ်", "subtitle": "SDK နှင့် ကိရိယာအများစုတွင် OpenAI-compatible endpoint ကို အသုံးပြုပါ။", "testEndpoint": "endpoint ကို စမ်းသပ်ရန် →", "advancedProtocols": "အဆင့်မြင့် ပရိုတိုကောများ", "available": "ရရှိနိုင်သော Endpoints", "cloudProxy": "Cloud Proxy", "disableConfirm": "Cloud Proxy ကို ပိတ်ရန် သေချာပါသလား။", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", + "baseUrl": "အခြေခံ URL", + "apiKeyLabel": "API ကီး", "registeredKeys": "မှတ်ပုံတင်ထားသော Keys", "chatCompletions": "Chat Completions", - "responses": "Responses", + "responses": "တုံ့ပြန်မှုများ", "listModels": "Models စာရင်း", "usingCloudProxy": "Cloud Proxy ကို အသုံးပြုနေသည်", "usingLocalServer": "Local Server ကို အသုံးပြုနေသည်", @@ -3902,7 +3902,7 @@ "modelsAcrossEndpoints": "endpoints {endpoints} ခုရှိ models {models} ခု", "loadingModels": "ရရှိနိုင်သော models များကို ဖွင့်နေသည်...", "chatDesc": "provider အားလုံးဖြင့် streaming နှင့် non-streaming chat", - "embeddings": "Embeddings", + "embeddings": "အမ်ဘက်ဒင်းများ", "embeddingsDesc": "ရှာဖွေမှုနှင့် RAG pipelines များအတွက် စာသား embeddings", "imageGeneration": "ပုံထုတ်လုပ်ခြင်း", "imageDesc": "စာသား prompts များမှ ပုံများ ထုတ်လုပ်ရန်", @@ -3919,7 +3919,7 @@ "responsesDesc": "Codex နှင့် အဆင့်မြင့် agentic workflows များအတွက် OpenAI Responses API", "listModelsDesc": "ချိတ်ဆက်ထားသော provider အားလုံးရှိ ရနိုင်သည့် model အားလုံးကို စာရင်းပြုစုပါ", "settingsApiDesc": "API မှတစ်ဆင့် OmniRoute configuration ကို ဖတ်ရှုပြီး ပြင်ဆင်ပါ", - "settingsApi": "Settings API", + "settingsApi": "ဆက်တင် API", "categoryCore": "အဓိက API များ", "categoryMedia": "မီဒီယာနှင့် Multi-Modal", "categorySearch": "ရှာဖွေခြင်းနှင့် ရှာဖွေဖော်ထုတ်ခြင်း", @@ -3982,7 +3982,7 @@ "providerModelsTitle": "{provider} — မော်ဒယ်များ", "noModelsForProvider": "ဤ provider အတွက် မော်ဒယ်များ မရရှိနိုင်ပါ။", "chat": "ချတ်", - "embedding": "Embedding", + "embedding": "အမ်ဘက်ဒင်း", "image": "ပုံ", "custom": "စိတ်ကြိုက်", "modelsCount": "{count, plural, one {# မော်ဒယ်} other {# မော်ဒယ်များ}}", @@ -3995,8 +3995,8 @@ "protocolsDescription": "MCP နှင့် A2A တို့သည် သီးသန့်စောင့်ကြည့်နိုင်စွမ်းနှင့် ထိန်းချုပ်မှုများပါရှိသော အဓိက endpoint များဖြစ်သည်။", "mcpCardTitle": "MCP Server", "mcpCardDescription": "stdio မှတစ်ဆင့် Model Context Protocol", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", + "a2aCardTitle": "A2A ဆာဗာ", + "a2aCardDescription": "Agent2Agent JSON-RPC အဆုံးမှတ်", "protocolToolsLabel": "ကိရိယာများ", "protocolTasksLabel": "လုပ်ငန်းများ", "protocolActiveStreamsLabel": "လက်ရှိအသုံးပြုနေသော စီးကြောင်းများ", @@ -4084,7 +4084,7 @@ "tabContextSources": "အကြောင်းအရာ ရင်းမြစ်များ", "activeEndpoints": "အသုံးပြုနေသော Endpoint များ", "activeLocal": "စက်တွင်း", - "activeCloud": "Cloud", + "activeCloud": "ကလောက်", "copyUrlTitle": "{url} ကို ကူးယူရန်", "statusRunning": "လုပ်ဆောင်နေသည်", "tunnels": "Tunnel များ", @@ -4108,12 +4108,12 @@ "all": "အားလုံး", "more": "နောက်ထပ် +{count} ခု", "showInternalTooltip": "အတွင်းပိုင်း route များကို ပြရန် သို့မဟုတ် ဖျောက်ရန် (မူလအတိုင်း ဖျောက်ထားသည်)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Bearer စစ်မှန်ကြောင်းအတည်ပြုခြင်း", "requestBody": "တောင်းဆိုမှု Body", "close": "ပိတ်ရန်", "tryIt": "စမ်းသုံးရန်", "example": "ဥပမာ", - "apiKey": "API Key", + "apiKey": "API သော့", "switchToSelection": "ရွေးချယ်မှုသို့ ပြောင်းရန်", "enterManually": "ကိုယ်တိုင် ထည့်သွင်းရန်", "pasteApiKey": "သင့် API key ကို ဤနေရာတွင် ကူးထည့်ပါ", @@ -4122,16 +4122,16 @@ "sending": "ပေးပို့နေသည်...", "sendRequest": "တောင်းဆိုမှု ပေးပို့ရန်", "dataSchemas": "ဒေတာ Schema များ", - "vscodeAliasTitle": "VS Code Token Alias", + "vscodeAliasTitle": "VS Code တိုကင်အမည်လွှဲ", "vscodeAliasDescriptionReady": "/api/v1/vscode/TOKEN/... endpoint ကို အသုံးပြုထားသော တိုက်ရိုက်ကူးထည့်နိုင်သည့် လိုက်ဖက်ညီမှု URL များ။", "vscodeAliasDescriptionError": "ဤ session တွင် CLI key များကို မရယူနိုင်သောကြောင့် placeholder URL များကို ပြသထားသည်။", "vscodeAliasDescriptionLoading": "CLI key များကို ရယူနေသည်။ key တစ်ခု ရရှိသည်အထိ placeholder URL များကို ပြသထားမည်။", "vscodeAliasDescriptionPlaceholder": "Placeholder URL များကို ပြသထားသည်။ TOKEN ကို အစားထိုးရန် CLI Tools တွင် API key တစ်ခု ဖန်တီးပါ သို့မဟုတ် အသက်သွင်းပါ။", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI ကိရိယာများ", "vscodeAliasBaseLabel": "VS Code အခြေခံ URL", "vscodeAliasModelsLabel": "VS Code မော်ဒယ်များ", "vscodeAliasChatLabel": "VS Code ချတ်", - "localServer": "Local Server", + "localServer": "စက်တွင်းဆာဗာ", "cloudOmniroute": "Cloud OmniRoute", "copyUrl": "URL ကူးယူရန်", "badgeLoopbackTooltip": "ဤ endpoint ကို local မှသာ ဝင်ရောက်အသုံးပြုနိုင်သည် (loopback သာ)", @@ -4139,7 +4139,7 @@ "badgeInternalTooltip": "ဤသည်မှာ အတွင်းပိုင်း system endpoint ဖြစ်သည်", "tierAll": "အားလုံး", "tierAuth": "အထောက်အထားစစ်ဆေးပြီး", - "tierLoopback": "Loopback", + "tierLoopback": "ကွန်ရက်ပြန်ပတ်ချိတ်ဆက်မှု", "tierAlwaysProtected": "အမြဲကာကွယ်ထားသည်", "tierPublic": "အများသုံး", "hideInternal": "အတွင်းပိုင်းများကို ဝှက်ရန်", @@ -4433,8 +4433,8 @@ "reindexFailed": "အညွှန်းပြန်တည်ဆောက်ခြင်းကို စတင်၍မရပါ", "keywordLabel": "သော့ချက်စကားလုံး (FTS5)", "keywordReason": "သော့ချက်စကားလုံးဖြင့် ရှာဖွေခြင်းကို အမြဲအသုံးပြုနိုင်သည်", - "embeddingLabel": "Embedding", - "vectorStoreLabel": "Vector Store", + "embeddingLabel": "အမ်ဘက်ဒင်း", + "vectorStoreLabel": "ဗက်တာသိုလှောင်ရုံ", "qdrantLabel": "Qdrant", "rerankLabel": "ပြန်လည်အဆင့်သတ်မှတ်ခြင်း", "qdrantDisabled": "ပိတ်ထားသည်", @@ -4474,7 +4474,7 @@ "simulate": "စမ်းသပ်မည်", "resultsTitle": "ရလဒ် {count} ခု", "resolutionTitle": "ရှာဖွေမှု ဖြေရှင်းပုံ", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "အမ်ဘက်ဒင်း", "resolutionStore": "Vector သိုလှောင်ရုံ", "resolutionStrategy": "အသုံးပြုထားသော နည်းဗျူဟာ", "rerankApplied": "ပြန်လည်အဆင့်သတ်မှတ်မှု ပြုလုပ်ထားသည်", @@ -4487,7 +4487,7 @@ "previous": "ယခင်", "procedural": "လုပ်ထုံးလုပ်နည်းဆိုင်ရာ", "qdrant": { - "title": "Qdrant (Vector Store Tier 2)", + "title": "Qdrant (ဗက်တာသိုလှောင်ရုံ အဆင့် ၂)", "description": "တိုးချဲ့နိုင်သော အဓိပ္ပာယ်အခြေပြု ရှာဖွေမှုအတွက် ရွေးချယ်အသုံးပြုနိုင်သည့် Qdrant ပေါင်းစပ်မှု", "enableLabel": "Qdrant ကို ဖွင့်မည်", "enableDesc": "ဖွင့်ထားသောအခါ Qdrant ကို အဓိက vector store အဖြစ် အသုံးပြုသည်", @@ -4521,8 +4521,8 @@ "cleanNow": "ယခု ရှင်းလင်းရန်", "cleanupSuccess": "point {count} ခု ဖယ်ရှားပြီးပါပြီ", "cleanupFailed": "ရှင်းလင်းမှု မအောင်မြင်ပါ", - "hostLabel": "Host", - "collectionLabel": "Collection" + "hostLabel": "ဟို့စ်တ်", + "collectionLabel": "စုစည်းမှု" }, "rerank": { "enableLabel": "Rerank ကို ဖွင့်ရန်", @@ -4535,7 +4535,7 @@ "save": "သိမ်းဆည်းရန်", "saving": "သိမ်းဆည်းနေသည်...", "search": "မှတ်ဉာဏ်များကို ရှာဖွေပါ...", - "semantic": "Semantic", + "semantic": "အဓိပ္ပာယ်ဆိုင်ရာ", "summarize": { "title": "မှတ်ဉာဏ်အဟောင်းများကို ကျစ်လျစ်အောင်လုပ်ရန်", "noCandidates": "ကျစ်လျစ်အောင်လုပ်ရန် သတ်မှတ်ချက်နှင့်ကိုက်ညီသော မှတ်ဉာဏ်မရှိပါ (သတ်မှတ်ချက်: ရက် 30 ကျော် အဟောင်း)။", @@ -4607,7 +4607,7 @@ "enabledSkills": "ဖွင့်ထားသည်", "totalExecutions": "လုပ်ဆောင်မှုများ", "successRate": "အောင်မြင်မှုနှုန်း", - "marketplaceTab": "Marketplace", + "marketplaceTab": "ဈေးကွက်", "applyFilters": "စစ်ထုတ်မှုများကို အသုံးပြုပါ", "popularDefaultsLabel": "ရွေးချယ်ထားသော provider အတွက် မူလသတ်မှတ်ထားသည့် လူကြိုက်များမှုအခြေအနေ-", "onMode": "ဖွင့်", @@ -4802,7 +4802,7 @@ "partialData": "တယ်လီမက်ထရီကို တစ်စိတ်တစ်ပိုင်းသာ ရရှိနိုင်သည်- {error}" }, "mitm": { - "title": "MITM Proxy", + "title": "MITM ပရောက်စီ", "description": "ကလိုင်းယင့် တောင်းဆိုမှုများကို ကြားဖြတ်ဖမ်းယူပြီး လမ်းကြောင်းသတ်မှတ်ပေးရန် ပွင့်လင်းမြင်သာသော ပရောက်စီ။", "enable": "MITM Proxy ကို ဖွင့်ရန်", "enableDesc": "စက်တွင်း ကြားဖြတ်ဖမ်းယူမှု လုပ်ငန်းစဉ်နှင့် DNS အစားထိုးမှုကို စတင်ရန် သို့မဟုတ် ရပ်တန့်ရန်။", @@ -4813,7 +4813,7 @@ "stop": "ရပ်တန့်ရန်", "refresh": "ပြန်လည်စတင်ရန်", "port": "Proxy ပို့တ်", - "apiKey": "Router API Key", + "apiKey": "Router API သော့", "apiKeyPlaceholder": "ထည့်သွင်းရန်မလိုပါ၊ မထည့်ပါက စက်တွင်းကီးကို အသုံးပြုမည်", "sudoPassword": "Sudo စကားဝှက်", "cachedPassword": "ဤလုပ်ငန်းစဉ်အတွက် ကက်ရှ်တွင် သိမ်းထားသည်", @@ -4891,7 +4891,7 @@ "viewDetails": "အသေးစိတ်ကြည့်ရန်", "eventMetadata": "ဖြစ်ရပ် Metadata", "eventPayload": "ဖြစ်ရပ် Payload", - "requestId": "Request Id", + "requestId": "တောင်းဆိုမှု ID", "providerWarningDesc": "တောင်းဆိုချက်ကို လုပ်ဆောင်နေစဉ် အချို့သော provider များမှ သတိပေးချက်များ ပြန်ပေးခဲ့သည်", "a": "A", "offset": "အော့ဖ်ဆက်", @@ -4907,7 +4907,7 @@ "clearAll": "အားလုံးရှင်းရန်", "confirmClearActiveRequests": "လုပ်ဆောင်နေသော တောင်းဆိုချက်အားလုံးကို ရှင်းမလား။", "model": "မော်ဒယ်", - "provider": "Provider", + "provider": "ဝန်ဆောင်မှုပေးသူ", "account": "အကောင့်", "elapsed": "ကြာချိန်", "activeStage": "အဆင့်", @@ -4920,11 +4920,11 @@ "activeStageSendingToProvider": "upstream သို့ ပို့နေသည်", "activeStageProviderResponseStarted": "Upstream တုံ့ပြန်မှု စတင်ပြီး", "count": "အရေအတွက်", - "payloads": "Payloads", + "payloads": "ပေးပို့ဒေတာများ", "viewPayloads": "ကြည့်ရန်", "activeCount": "အသုံးပြုနေသည် {count} ခု", "clientPayload": "Client တောင်းဆိုမှု Payload", - "upstreamPayload": "Upstream Provider Payload", + "upstreamPayload": "အထက်စီးကြောင်း ဝန်ဆောင်မှုပေးသူ၏ ပေးပို့ဒေတာ", "upstreamNotSentYet": "Upstream သို့ မပို့ရသေးပါ", "runningRequestDetailMeta": "အကောင့်: {account} — ကြာချိန်: {elapsed}", "export": "ထုတ်ယူရန်", @@ -4956,10 +4956,10 @@ "updatedAt": "{time} တွင် အပ်ဒိတ်လုပ်ထားသည်", "fileLoggingRequired": "Application သည် Log များကို ဖိုင်တစ်ခုသို့ ရေးသားနေကြောင်း သေချာပါစေ (APP_LOG_TO_FILE=true)", "consoleAria": "Application Console Log များ", - "applicationConsole": "Application Console", + "applicationConsole": "အပလီကေးရှင်း ကွန်ဆိုးလ်", "emptyFileLoggingHint": "သင်၏ .env ဖိုင်တွင် APP_LOG_TO_FILE=true ဟု သတ်မှတ်ထားကြောင်း သေချာပါစေ" }, - "compressionLogTitle": "Compression Log", + "compressionLogTitle": "ချုံ့ခြင်း မှတ်တမ်း", "compressionLogEmpty": "ချုံ့ထားသော တောင်းဆိုမှုများ မရှိသေးပါ။ Compression ဖွင့်ထားပြီး တောင်းဆိုမှုများကို လုပ်ဆောင်သည့်အခါ Compression စာရင်းအင်းများကို ဤနေရာတွင် ပြသပါမည်။", "tokens": "Token များ" }, @@ -5210,7 +5210,7 @@ "selectProvider": "ဝန်ဆောင်မှုပေးသူတစ်ခု ရွေးချယ်ပါ", "selectedProvider": "ရွေးချယ်ထားသော ဝန်ဆောင်မှုပေးသူ", "authMethod": "အထောက်အထားစိစစ်နည်း", - "apiKeyLabel": "API Key", + "apiKeyLabel": "API ကီး", "apiKeyRequired": "API Key လိုအပ်ပါသည်", "selectProviderRequired": "ဝန်ဆောင်မှုပေးသူတစ်ခု ရွေးချယ်ပါ", "enterApiKey": "သင်၏ API key ကို ထည့်ပါ", @@ -5457,9 +5457,9 @@ "errorTypeUpstreamError": "Upstream အမှား", "errorTypeCreditsExhausted": "Credit မရှိပါ", "errorTypeBanned": "403 ပိတ်ပင်ခံထားရသည်", - "proxySourceGlobal": "Global", + "proxySourceGlobal": "ကမ္ဘာလုံးဆိုင်ရာ", "proxySourceProvider": "ဝန်ဆောင်မှုပေးသူ", - "proxySourceKey": "Key", + "proxySourceKey": "ကီး", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "Proxy ဖွင့်ထားသည်", "proxyOff": "တိုက်ရိုက် (proxy ကို ကျော်သွားမည်)", @@ -5491,7 +5491,7 @@ "compatAdjustmentsTitle": "ကိုက်ညီအသုံးပြုနိုင်မှု", "compatButtonLabel": "ကိုက်ညီအသုံးပြုနိုင်မှု", "compatToolIdShort": "ကိရိယာ ID ၉ လုံး", - "compatDeveloperShort": "Developer role", + "compatDeveloperShort": "ဆော့ဖ်ဝဲရေးသားသူ အခန်းကဏ္ဍ", "compatDoNotPreserveDeveloper": "Developer role ကို မထိန်းသိမ်းပါနှင့်", "compatBadgeNoPreserve": "မထိန်းသိမ်းပါ", "compatProtocolLabel": "ကလိုင်းယင့် တောင်းဆိုမှု ပရိုတိုကော", @@ -5609,7 +5609,7 @@ "testModelIdLabel": "မော်ဒယ် ID (မဖြစ်မနေမဟုတ်)", "testModelIdPlaceholder": "ဥပမာ my-model-id", "testModelIdHint": "ပံ့ပိုးသူတွင် /models endpoint မရှိပါက /chat/completions မှတစ်ဆင့် အစားထိုးအတည်ပြုရန် မော်ဒယ် ID ကို ထည့်ပါ။", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", + "compatibleProdPlaceholder": "{type} နှင့် ကိုက်ညီမှုရှိသော (Prod)", "tokenRefreshed": "တိုကင်ကို အောင်မြင်စွာ ပြန်လည်ရယူပြီးပါပြီ", "tokenRefreshFailed": "တိုကင် ပြန်လည်ရယူမှု မအောင်မြင်ပါ", "cursorSessionUnchanged": "စက်ရှင်သည် လက်ရှိအခြေအနေဖြစ်ပြီးသားပါ", @@ -5757,7 +5757,7 @@ "accountConcurrencyCapHint": "ဤ connection/account က တစ်ပြိုင်နက် ကိုင်တွယ်နိုင်သည့် request အများဆုံးအရေအတွက်။ Subscription account များသည် ပုံမှန်အားဖြင့် အနည်းငယ် (1–3) သာ ခွင့်ပြုသည် — ကျော်လွန်ပါက 429 များနှင့် cooldown များ ဖြစ်ပေါ်မည်။ မူလသတ်မှတ်ချက်ကို အသုံးပြုရန် ကွက်လပ်ထားပါ။", "accountConcurrencyCapLabel": "Account ၏ တစ်ပြိုင်နက်လုပ်ဆောင်နိုင်မှု ကန့်သတ်ချက်", "accountIdHint": "API token နှင့်အတူ အချို့ provider များ (ဥပမာ Cloudflare Workers AI) က လိုအပ်သည်။", - "accountIdLabel": "Account ID", + "accountIdLabel": "အကောင့် ID", "accountIdPlaceholder": "သင့် provider account ID", "addAnotherApiKey": "နောက်ထပ် API key တစ်ခုထည့်ပါ သို့မဟုတ် key များစွာကို ကူးထည့်ပါ", "addCcCompatible": "CC Compatible ထည့်ရန်", @@ -5801,10 +5801,10 @@ "ccCompatibleSummarizeThinkingDescription": "ပံ့ပိုးထားသော Claude မော်ဒယ်များက မြင်နိုင်သော thinking delta များကို stream လုပ်နိုင်ရန် CC Compatible thinking request များတွင် `display: \"summarized\"` ကို ထည့်ပေးသည်။", "ccCompatibleSummarizeThinkingLabel": "အကျဉ်းချုပ် thinking ပြသမှုကို ဖွင့်ရန်", "ccCompatibleDetailsTitle": "CC-compatible relay အသေးစိတ်များ", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "CC နှင့် ကိုက်ညီမှုရှိသော", "ccCompatibleModelsDescription": "CC-compatible relay များသည် မော်ဒယ်စာရင်းကို ဖော်ပြမပေးပါ။ သင့် relay က လက်ခံသော Claude မော်ဒယ် ID များကို ထည့်ပါ။", "ccCompatibleNameHint": "ဤ Claude Code သီးသန့် relay အတွက် ပြသမည့်အမည်။", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay ထုတ်လုပ်ရေး", "ccCompatiblePrefixHint": "prefix/model-id ကဲ့သို့သော မော်ဒယ် alias များတွင် အသုံးပြုသည်။", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Claude Code client များကိုသာ သီးသန့်ဝန်ဆောင်မှုပေးသည့် relay များအတွက်သာ ဤ provider ကို အသုံးပြုပါ။ OmniRoute သည် ဝင်လာသည့် request မှန်သမျှကို Claude Code-compatible wire format သို့ ပြန်လည်ရေးသားပေးသောကြောင့် ထို relay များက လက်ခံနိုင်ပါသည်။ Claude Code CLI ကိုသာ အသုံးပြုလိုခြင်းဖြစ်စေ၊ ဤ relay အမျိုးအစား၏ အဓိပ္ပာယ်ကို မသေချာခြင်းဖြစ်စေ ယင်းအစား ပုံမှန် Anthropic-compatible provider ကို အသုံးပြုပါ။", @@ -5824,7 +5824,7 @@ "newApiUserIdLabel": "New-API အသုံးပြုသူ ID", "newApiUserIdPlaceholder": "ဥပမာ 12345", "newApiUserIdHint": "quota လက်ကျန်ကို ရယူရန် console API ကီးနှင့်အတူ အသုံးပြုသော AgentRouter New-Api-User header တန်ဖိုး။", - "newApiAggregatorToggleLabel": "Aggregator Gateway", + "newApiAggregatorToggleLabel": "စုစည်းဝန်ဆောင်မှု ဂိတ်ဝေး", "newApiAggregatorToggleHint": "New-API / One-API / Sub2API စုစည်းပေးသည့် node များအတွက် လက်ကျန်ငွေ စစ်ဆေးမှုကို ဖွင့်ပါ။ dashboard တွင် လက်ကျန်ငွေ badge ကို ပြသမည်ဖြစ်ပြီး quota-preflight routing က လက်ကျန်ကုန်ဆုံးနေသော account များကို ကျော်သွားပါမည်။", "newApiAggregatorConsoleApiKeyHint": "စုစည်းပေးသည့်စနစ်၏ /api/user/self endpoint အတွက် System Access Token ဖြစ်သည်။ routing API key မဟုတ်ပါ။", "newApiAggregatorUserIdHint": "စုစည်းပေးသည့်စနစ် အသုံးပြုသူ၏ quota လက်ကျန်ကို ရယူရန် အသုံးပြုသည့် New-Api-User header တန်ဖိုး။", @@ -5846,7 +5846,7 @@ "expirationBannerExpiredDesc": "သက်တမ်းကုန်ဆုံးမှု banner — သက်တမ်းကုန်သွားပြီဟူသော ဖော်ပြချက်", "expirationBannerExpiringSoon": "သက်တမ်းကုန်ဆုံးမှု banner — မကြာမီ သက်တမ်းကုန်မည်", "expirationBannerExpiringSoonDesc": "သက်တမ်းကုန်ဆုံးမှု banner — မကြာမီ သက်တမ်းကုန်မည်ဟူသော ဖော်ပြချက်", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", + "extraApiKeyMasked": "ကီး {index}: {prefix}••••{suffix}", "extraApiKeysHint": "အပို API Key များအတွက် အရိပ်အမြွက်", "extraApiKeysLabel": "အပို API Key များအတွက် အညွှန်း", "apiKeyHealthLabel": "API Key အခြေအနေ", @@ -5860,7 +5860,7 @@ "apiKeyWarningAlertTitle": "API Key သတိပေးချက်", "googlePseInfo": "Google Pse အချက်အလက်", "antigravityProjectIdHint": "Antigravity Cloud Code request များအတွက် စိတ်ကြိုက်အစားထိုးသတ်မှတ်ချက်။ Google OAuth ပြုလုပ်စဉ် ရှာဖွေတွေ့ရှိထားသော project ကို အသုံးပြုရန် ကွက်လပ်ထားပါ။", - "antigravityClientProfileLabel": "Client profile", + "antigravityClientProfileLabel": "ကလိုင်းယင့် ပရိုဖိုင်", "antigravityClientProfileHint": "OmniRoute က API သို့ တင်ပြမည့် Antigravity client identity ကို ရွေးချယ်ပါ။", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "CLI", @@ -5942,7 +5942,7 @@ "snowflakeBaseUrlHint": "Snowflake အခြေခံ URL ဆိုင်ရာ အရိပ်အမြွက်", "supportedEndpointAudio": "အသံ", "supportedEndpointChat": "စကားပြောခန်း", - "supportedEndpointEmbeddings": "Embeddings", + "supportedEndpointEmbeddings": "Embedding များ", "supportedEndpointImages": "ပုံများ", "supportedEndpointsLabel": "ပံ့ပိုးထားသော endpoint များ", "tagGroupHint": "တဂ်အုပ်စု အရိပ်အမြွက်", @@ -6019,8 +6019,8 @@ "providerDetailFastTierTooltip": "ပုံသေအားဖြင့် Codex ချိတ်ဆက်မှုအားလုံးတွင် Codex Fast အဆင့်ကို အသုံးပြုမည်", "providerDetailFastDefaultLabel": "Fast ကို ပုံသေအဖြစ်ထားမည်", "providerDetailBrowserManualConnect": "ဘရောက်ဇာ/ကိုယ်တိုင် ချိတ်ဆက်မည်", - "providerDetailAuthUrl": "Auth URL", - "providerDetailCallbackUrl": "Callback URL", + "providerDetailAuthUrl": "အထောက်အထားစိစစ်ရေး URL", + "providerDetailCallbackUrl": "ပြန်လည်ခေါ်ယူမှု URL", "providerDetailValidClaudeCredentialsFile": "မှန်ကန်သော Claude အထောက်အထားဖိုင်", "providerDetailPathAutoDetectedAllOs": "OS တစ်ခုချင်းစီအလိုက် path ကို အလိုအလျောက် ရှာဖွေသတ်မှတ်သည် (Linux/Mac/Windows)။", "providerDetailMyClaudeAccountPlaceholder": "ကျွန်ုပ်၏ Claude အကောင့်", @@ -6100,7 +6100,7 @@ "onboardingBaseUrlOverride": "Base URL ကို အစားထိုးသတ်မှတ်ရန်", "onboardingBaseUrlOverrideHint": "မထည့်လည်း ရသည်။ providerSpecificData.baseUrl အဖြစ် သိမ်းဆည်းပါမည်။", "onboardingRegion": "ဒေသ", - "onboardingSearchCx": "Search CX / Engine id", + "onboardingSearchCx": "ရှာဖွေရေး CX / Engine ID", "onboardingProviderSpecificIdPlaceholder": "မထည့်လည်းရသော ပံ့ပိုးသူသီးသန့် id", "onboardingCustomUserAgent": "စိတ်ကြိုက် User-Agent", "onboardingWorking": "လုပ်ဆောင်နေသည်…", @@ -6109,9 +6109,9 @@ "onboardingCreateCustomCompatibleProvider": "စိတ်ကြိုက် သဟဇာတ provider ဖန်တီးရန်", "onboardingCreateCustomCompatibleDescription": "ဤ wizard သည် provider node တစ်ခုကို ဦးစွာဖန်တီးပြီးနောက် ၎င်း၏ API-key ချိတ်ဆက်မှုကို သိမ်းဆည်းကာ စမ်းသပ်ပါသည်။", "onboardingProtocol": "ပရိုတိုကော", - "onboardingOpenAiCompatible": "OpenAI-compatible", - "onboardingAnthropicCompatible": "Anthropic-compatible", - "onboardingClaudeCodeCompatible": "Claude Code-compatible", + "onboardingOpenAiCompatible": "OpenAI နှင့် ကိုက်ညီမှုရှိသော", + "onboardingAnthropicCompatible": "Anthropic နှင့် ကိုက်ညီမှုရှိသော", + "onboardingClaudeCodeCompatible": "Claude Code နှင့် ကိုက်ညီမှုရှိသော", "onboardingProviderPrefix": "Provider ရှေ့ဆက်စာလုံး", "onboardingProviderPrefixHint": "စီမံခန့်ခွဲထားသော provider id ကို ဖန်တီးရန် အသုံးပြုသည်။", "onboardingChatPath": "Chat လမ်းကြောင်း", @@ -6329,7 +6329,7 @@ "openWebProviderSite": "{host} ကို ဖွင့်ပါ", "addProviderWebTokenTitle": "{provider} web token ထည့်ပါ", "addProviderConnectionTitle": "{provider} ချိတ်ဆက်မှု ထည့်ပါ", - "webTokenCredentialLabel": "Web session token", + "webTokenCredentialLabel": "ဝဘ်ဆက်ရှင် တိုကင်", "webNoAuthCredentialLabel": "အထောက်အထား မလိုအပ်ပါ", "webCookieCredentialHint": "လိုအပ်သော cookie: {credential}။ သင်ကိုယ်တိုင် အကောင့်ဝင်ထားသည့် {provider} web session မှ Cookie header တန်ဖိုးကို ကူးထည့်ပါ။ Cookie: ရှေ့ဆက်စာသားကို မထည့်ပါနှင့်။", "webTokenCredentialHint": "အထောက်အထား- {credential}။ သင်ကိုယ်တိုင် အကောင့်ဝင်ထားသည့် {provider} web session မှ token တန်ဖိုးကို ကူးထည့်ပါ၊ သို့မဟုတ် provider က ပံ့ပိုးပါက DevTools HAR export ကို ထည့်ပါ။", @@ -6369,13 +6369,13 @@ "huggingchatDesc": "huggingface.co/chat မှတစ်ဆင့် အခမဲ့ LLM ချတ်", "poeWebLabel": "Poe Web", "poeWebDesc": "poe.com မှတစ်ဆင့် မော်ဒယ်မျိုးစုံသုံး ချတ်", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice ဝဘ်", "veniceWebDesc": "ကိုယ်ရေးလုံခြုံမှုကို ဦးစားပေးသော AI ချတ်", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel ဝဘ်", "v0VercelWebDesc": "v0.dev မှတစ်ဆင့် AI ကုဒ်ဖန်တီးခြင်း", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi ဝဘ်", "kimiWebDesc": "www.kimi.com မှတစ်ဆင့် Moonshot AI သုံးစွဲသူချတ် (နိုင်ငံတကာ၊ Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola ဝဘ်", "doubaoWebDesc": "dola.com မှတစ်ဆင့် ByteDance AI ချတ်", "overrideBaseUrlAdvanced": "အဆင့်မြင့်- မူလ URL ကို အစားထိုးသတ်မှတ်ရန်", "overrideBaseUrlHint": "အဆင့်မြင့်- ဤထည့်သွင်းပြီးသား ပံ့ပိုးသူကို စိတ်ကြိုက် endpoint တစ်ခုသို့ ညွှန်ပါ။ မူလသတ်မှတ်ချက်ကို အသုံးပြုရန် ကွက်လပ်ထားပါ။", @@ -6408,7 +6408,7 @@ "batchUpdateFailed": "အစုလိုက်အပ်ဒိတ်လုပ်ခြင်း မအောင်မြင်ပါ", "batchUpdateNetworkError": "အစုလိုက်အပ်ဒိတ်လုပ်နေစဉ် ကွန်ရက်အမှား ဖြစ်ပွားခဲ့သည်", "categoryAudio": "အသံ", - "categoryCloudAgent": "Cloud Agent", + "categoryCloudAgent": "ကလောက်ဒ် အေးဂျင့်", "categoryIde": "IDE", "categoryLocal": "စက်တွင်း", "categorySearch": "ရှာဖွေမှု", @@ -6456,7 +6456,7 @@ "failedUpdateCodexServiceMode": "Codex ဝန်ဆောင်မှုမုဒ်ကို အပ်ဒိတ်လုပ်၍မရပါ", "filterByMedia": "မီဒီယာ", "freeBadge": "အခမဲ့", - "kimiCodeApiKeyLabel": "Kimi Code API Key", + "kimiCodeApiKeyLabel": "Kimi Code API သော့", "modelTestFailed": "မော်ဒယ်စမ်းသပ်မှု မအောင်မြင်ပါ", "modelTestNetworkError": "မော်ဒယ်ကို စမ်းသပ်စဉ် ကွန်ရက်အမှား ဖြစ်ပေါ်ခဲ့သည်", "networkError": "ကွန်ရက်အမှား", @@ -6666,7 +6666,7 @@ "seconds": "စက္ကန့်", "sidebarVisibilityToggle": "ဘေးဘက်မီနူး အရာများကို ပြသရန်", "enableCache": "Cache ကို ဖွင့်ရန်", - "cacheTTL": "Cache TTL", + "cacheTTL": "ကက်ရှ် TTL", "maxCacheSize": "Cache အများဆုံး အရွယ်အစား", "clearCache": "Cache ကို ရှင်းလင်းရန်", "cacheCleared": "ကက်ရှ်ကို အောင်မြင်စွာ ရှင်းလင်းပြီးပါပြီ", @@ -6714,7 +6714,7 @@ "enableProxy": "Proxy ကို ဖွင့်ရန်", "perKeyProxyEnabled": "ကီးတစ်ခုချင်းစီအလိုက် Proxy သတ်မှတ်မှုကို ဖွင့်ရန်", "perKeyProxyEnabledDesc": "ဖွင့်ထားပါက provider ချိတ်ဆက်မှုတစ်ခုစီသည် ၎င်း၏ကိုယ်ပိုင် Proxy သတ်မှတ်မှုကို အသုံးပြုနိုင်သည်", - "proxyUrl": "Proxy URL", + "proxyUrl": "ပရောက်စီ URL", "pricingRates": "ဈေးနှုန်းနှုန်းထား ဖော်မတ်", "currentPricing": "လက်ရှိဈေးနှုန်း အနှစ်ချုပ်", "loadingPricing": "ဈေးနှုန်းဒေတာကို ဖွင့်နေသည်...", @@ -6749,11 +6749,11 @@ "themeSystem": "စနစ်", "endpointTunnelVisibility": "Endpoint tunnel မြင်နိုင်မှု", "endpointTunnelVisibilityDesc": "Tunnel အခြေအနေကို မပြောင်းလဲဘဲ Endpoint စာမျက်နှာမှ tunnel ထိန်းချုပ်မှုများကို ဝှက်ထားရန်။", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Cloudflare အမြန်တန်နယ်", "showCloudflareTunnelDesc": "Endpoint စာမျက်နှာတွင် Cloudflare Quick Tunnel ထိန်းချုပ်မှုများကို ပြသပါ။", - "showTailscaleFunnel": "Tailscale Funnel", + "showTailscaleFunnel": "Tailscale ဖန်နယ်", "showTailscaleFunnelDesc": "Endpoint စာမျက်နှာတွင် Tailscale Funnel ထိန်းချုပ်မှုများကို ပြသပါ။", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "ngrok တန်နယ်", "showNgrokTunnelDesc": "Endpoint စာမျက်နှာတွင် ngrok Tunnel ထိန်းချုပ်မှုများကို ပြသပါ။", "sidebarVisibility": "ဘေးဘားအရာများကို ဖျောက်ရန်", "sidebarVisibilityDesc": "မည်သည့်လုပ်ဆောင်ချက်ကိုမျှ မပိတ်ဘဲ မြင်ကွင်းရှုပ်ထွေးမှုကို လျှော့ချရန် ဘေးဘားလမ်းညွှန်အရာများကို ဖျောက်ပါ", @@ -6913,7 +6913,7 @@ "healthcheckLatency": "ကြာချိန်", "proxyDocumentationScopeTitle": "ပရောက်စီအကျုံးဝင်မှု သတ်မှတ်ခြင်း", "proxyDocumentationScopeDescBefore": "OmniRoute သည် အထွက်ပရောက်စီကို အောက်ပါ ဦးစားပေးအစီအစဉ်အတိုင်း သတ်မှတ်သည်။", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "ကွန်ဘို → အကောင့် → ပံ့ပိုးသူ → ကမ္ဘာလုံးဆိုင်ရာ", "proxyDocumentationScopeDescAfter": "။ အတိကျဆုံး scope က ဦးစားပေးမည်။", "proxyDocumentationAddTitle": "စိတ်ကြိုက် proxy တစ်ခု ထည့်ခြင်း", "proxyDocumentationAddDescBefore": "အောက်ပါနေရာသို့ သွားပါ —", @@ -6935,7 +6935,7 @@ "denoRelayTokenHint": "console.deno.com → Organization → Settings → Organization Tokens မှ Organization token (prefix ddo_)။ Deploy လုပ်ရန် တစ်ကြိမ်သာ အသုံးပြုပြီး မည်သည့်အခါမျှ သိမ်းဆည်းမထားပါ။", "denoRelayOrgDomainHint": "သင်၏ Deno Deploy organization ၏ မူလ domain (ဥပမာ acme.deno.net)။ Relay ကို https://<app-name>.<org-slug>.deno.net တွင် ဝင်ရောက်အသုံးပြုနိုင်မည်။", "proxyFreePoolFilterProtocol": "Protocol ဖြင့် စစ်ထုတ်ရန်", - "proxyFreePoolProtocol": "Protocol", + "proxyFreePoolProtocol": "ပရိုတိုကော", "proxyFreePoolCountryPlaceholder": "နိုင်ငံ (ဥပမာ US)", "proxyFreePoolFilterCountry": "နိုင်ငံအလိုက် စစ်ထုတ်ရန်", "proxyFreePoolMinQualityPlaceholder": "အနည်းဆုံး အရည်အသွေး", @@ -6948,7 +6948,7 @@ "proxyFreePoolAddSelected": "ရွေးထားသည်များကို pool သို့ ထည့်ရန်", "proxyFreePoolAddVisible": "မြင်ရသည့်အရာအားလုံးကို pool သို့ ထည့်ရန်", "proxyFreePoolSource": "ရင်းမြစ်", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "ဟို့စ်:ပို့တ်", "proxyFreePoolType": "အမျိုးအစား", "proxyFreePoolCountry": "နိုင်ငံ", "proxyFreePoolQuality": "အရည်အသွေး", @@ -7078,7 +7078,7 @@ "stickyLimitDesc": "ကမ္ဘာလုံးဆိုင်ရာ အကောင့်အရန်ပြောင်းလဲမှုက Round Robin ကို အသုံးပြုသည့်အခါ မပြောင်းမီ အကောင့်တစ်ခုလျှင် ခေါ်ဆိုမှုအရေအတွက်", "routingStrategyTitle": "လမ်းကြောင်းရွေးချယ်မှု မဟာဗျူဟာ", "routingStrategySubtitle": "9router နှင့် ကိုက်ညီမှု- အကောင့် Round Robin၊ တည်မြဲအသုံးပြုမှု ကန့်သတ်ချက်များနှင့် ကွန်ဘို အလှည့်ကျပြောင်းလဲမှု", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "အလှည့်ကျ", "accountRoundRobinDesc": "ဝန်အားကို ဖြန့်ဝေရန် အကောင့်များကို အလှည့်ကျ အသုံးပြုပါ", "comboRoundRobin": "ကွန်ဘို Round Robin", "comboRoundRobinDesc": "ပထမတစ်ခုဖြင့် အမြဲစတင်မည့်အစား ကွန်ဘိုပစ်မှတ်များကို အလှည့်ကျ အသုံးပြုပါ", @@ -7506,7 +7506,7 @@ "compressionUltraRate": "ထိန်းသိမ်းနှုန်း", "compressionUltraMinScore": "အနည်းဆုံး ရမှတ်သတ်မှတ်ချက်", "compressionUltraSlmFallback": "Aggressive သို့ fallback လုပ်ရန်", - "compressionUltraModelPath": "SLM Model Path", + "compressionUltraModelPath": "SLM မော်ဒယ်လမ်းကြောင်း", "compressionUltraEngine": "Ultra အဆင့်", "compressionUltraEngineHeuristic": "Heuristic (Tier-A၊ မူလသတ်မှတ်ချက်)", "compressionUltraEngineSlm": "SLM (LLMLingua-2၊ ရွေးချယ်ဖွင့်နိုင်သည်)", @@ -7568,7 +7568,7 @@ "qdrantSaved": "စီစဉ်သတ်မှတ်ချက်ကို သိမ်းဆည်းပြီးပါပြီ", "qdrantSaveError": "စီစဉ်သတ်မှတ်ချက်ကို သိမ်းဆည်း၍မရပါ", "qdrantHostHint": "Port မပါဘဲ။ ဥပမာ- 127.0.0.1 သို့မဟုတ် http://qdrant", - "qdrantPort": "Port", + "qdrantPort": "ပို့တ်", "qdrantPortHint": "Qdrant မူလသတ်မှတ်ချက်- 6333", "qdrantCollectionHint": "မှတ်ဉာဏ် point များကို သိမ်းဆည်းမည့်နေရာ။", "qdrantEmbeddingModel": "Embedding မော်ဒယ်", @@ -7627,10 +7627,10 @@ "routingFlags": "အလံများ", "routingNeedles": "ရှာဖွေမည့် စာသားအပိုင်းများ", "routingBlockText": "စာသားကို ပိတ်ဆို့ရန်", - "routingIdempotencyKey": "Idempotency key", + "routingIdempotencyKey": "Idempotency သော့", "routingEntrypoint": "ဝင်ပေါက်", "routingVersionFormat": "ဗားရှင်းဖော်မတ်", - "routingCchAlgorithm": "CCH algorithm", + "routingCchAlgorithm": "CCH အယ်လ်ဂိုရီသမ်", "routingWordsToObfuscate": "ရှုပ်ထွေးဖုံးကွယ်မည့် စကားလုံးများ (ပထမစာလုံးနောက်တွင် ZWJ ထည့်မည်)", "logsSettingsTitle": "မှတ်တမ်းဆက်တင်များ", "detailedLogsLabel": "အသေးစိတ် မှတ်တမ်းများကို ဖွင့်ထားသည်", @@ -7644,7 +7644,7 @@ "semanticCacheEnabledLabel": "Semantic Cache ကို ဖွင့်ထားသည်", "semanticCacheMaxSizeLabel": "Semantic Cache အများဆုံးအရွယ်အစား", "semanticCacheMaxSizeDesc": "Semantic Cache အချက်များ၏ အများဆုံးအရေအတွက်", - "semanticCacheTTLLabel": "Semantic Cache TTL", + "semanticCacheTTLLabel": "Semantic ကက်ရှ် TTL", "promptCacheEnabledLabel": "Prompt Cache ကို ဖွင့်ထားသည်", "promptCacheEnabledDesc": "Prompt သိမ်းဆည်းခြင်းကို ဖွင့်ရန်", "promptCacheStrategyLabel": "Prompt Cache မဟာဗျူဟာ", @@ -7679,7 +7679,7 @@ "routingHeaderFingerprintTitle": "Header fingerprint (provider တစ်ခုချင်းစီအလိုက်)", "routingServerRejectedSave": "⚠ Server က သိမ်းဆည်းမှုကို ငြင်းပယ်ခဲ့သည်-", "routingAddTransformOp": "ပြောင်းလဲမှုလုပ်ဆောင်ချက်တစ်ခု ထည့်ပါ", - "routingClientCacheControlTitle": "Client Cache Control", + "routingClientCacheControlTitle": "ကလိုင်းယင့် ကက်ရှ်ထိန်းချုပ်မှု", "routingClientCacheControlDesc": "OmniRoute က client မှ ပေးသော cache_control marker များကို ထိန်းသိမ်းမထား သတ်မှတ်ပါ", "routingClientCacheControlAutoDesc": "အမြဲတမ်း တူညီသောရလဒ်ပေးသည့် Claude-compatible flow များအတွက် client မှ ပေးသော cache_control ကို မူလအတိုင်း ထိန်းသိမ်းပါ။ request တွင် cache_control မရှိပါက CC-compatible third-party proxy များနှင့် ကိုက်ညီစေရန် OmniRoute သည် bridge ပိုင် marker များကို ထည့်သွင်းမည်မဟုတ်ပါ။", "routingClientCacheControlAlwaysLabel": "အမြဲတမ်း ထိန်းသိမ်းပါ", @@ -7689,16 +7689,16 @@ "routingZeroConfigTitle": "ပြင်ဆင်သတ်မှတ်ရန်မလိုသော အလိုအလျောက် လမ်းကြောင်းရွေးချယ်မှု", "routingZeroConfigDesc": "auto/ prefix ကို အသုံးပြု၍ provider အလိုအလျောက် ရွေးချယ်ခြင်းကို ဖွင့်ပါ။ ဖွင့်ထားသည့်အခါ auto, auto/coding, auto/fast စသည်တို့ထံ request များကို ချိတ်ဆက်ထားသော provider အားလုံးကြားတွင် အခြေအနေအလိုက် လမ်းကြောင်းရွေးချယ်ပေးမည်။", "routingDefaultAutoVariant": "မူလ Auto Variant", - "visionBridge": "Vision Bridge", + "visionBridge": "ဗီရှင်းဘရစ်ချ်", "visionBridgeDesc": "ပုံ request များကို စာသားသာ ပံ့ပိုးသည့် model များထံ လမ်းကြောင်းမပို့မီ ပုံမှစာသားသို့ အလိုအလျောက် fallback လုပ်ဆောင်ပါ။", "visionBridgeEnabledLabel": "ဖွင့်ထားသည်", "visionBridgeEnabledDesc": "ပုံအစိတ်အပိုင်းများကို ထုတ်ယူထားသော စာသားဖြင့် အစားထိုးသည့် pre-call bridge ကို အဖွင့်အပိတ်လုပ်ပါ။", "visionBridgeRerouteTextOnlyLabel": "စာသားသာ ပံ့ပိုးသည့် model များထံ လမ်းကြောင်းပြန်ရွေးပါ", "visionBridgeRerouteTextOnlyDesc": "ရွေးချယ်ထားသော model တွင် ပုံထည့်သွင်းမှု မရှိပါက ပုံများအပါအဝင် request အပြည့်အစုံကို bridge model ထံ ပေးပို့ပါ။", - "visionBridgeModel": "Bridge Model", + "visionBridgeModel": "ဘရစ်ချ်မော်ဒယ်", "visionBridgeModelPlaceholder": "openai/gpt-4o-mini", "visionBridgeModelHint": "vision ကို ပံ့ပိုးသည့် မည်သည့် OmniRoute model ID ကိုမဆို ဤနေရာတွင် အသုံးပြုနိုင်သည်။", - "visionBridgePrompt": "Bridge Prompt", + "visionBridgePrompt": "ဘရစ်ချ် ပရွမ့်", "visionBridgePromptPlaceholder": "ဤပုံကို တိုတိုရှင်းရှင်း ဖော်ပြပါ။", "visionBridgePromptHint": "ထုတ်ယူထားသော ဖော်ပြချက်ကို မူလ request ထဲသို့ ပြန်လည်ထည့်သွင်းခြင်းမပြုမီ vision model ထံ ပေးပို့သည်။", "visionBridgeTimeoutMs": "အချိန်ကုန်ဆုံးသတ်မှတ်ချက် (ms)", @@ -7933,12 +7933,12 @@ "resilienceMaximumWaitPerRetry": "ပြန်လည်ကြိုးစားမှုတစ်ကြိမ်လျှင် အများဆုံးစောင့်ဆိုင်းချိန်", "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", "memorySkillsFailedToSave": "သိမ်းဆည်း၍ မရပါ", - "memorySkillsApiKey": "API Key", + "memorySkillsApiKey": "API ကီး", "memorySkillsActiveSkillsProvider": "လက်ရှိအသုံးပြုနေသော Skills Provider", "cliproxyapiFallback": "CLIProxyAPI အရန်စနစ်", "cliproxyapiEnableFallback": "CLIProxyAPI အရန်စနစ်ကို ဖွင့်ပါ", "cliproxyapiUrl": "CLIProxyAPI URL", - "headroomProxyTitle": "Headroom proxy", + "headroomProxyTitle": "Headroom ပရောက်စီ", "headroomProxyDesc": "ရွေးချယ်အသုံးပြုနိုင်သော Headroom တိုကင်ချွေတာရေး proxy ၏ URL။ ဗလာထားပါက HEADROOM_URL သို့မဟုတ် http://localhost:8787 ကို အသုံးပြုမည်။", "headroomProxyUrl": "Headroom URL", "headroomProxyUrlHint": "Loopback URL များကို ဤစာမျက်နှာမှ စတင်နိုင်သည်။ ပြင်ပ URL များကို စမ်းသပ်စစ်ဆေးရုံသာ ပြုလုပ်သည်။", @@ -8037,11 +8037,11 @@ "LOCAL_ONLY": "Local သီးသန့်", "ALWAYS_PROTECTED": "အမြဲတမ်း ကာကွယ်ထားသည်", "MANAGEMENT": "စီမံခန့်ခွဲမှု", - "CLIENT_API": "Client API", + "CLIENT_API": "ကလိုင်းယင့် API", "PUBLIC": "အများသုံး" }, "bypass": { - "section": "Manage-scope bypass", + "section": "စီမံခန့်ခွဲမှုနယ်ပယ် ကျော်လွှားခြင်း", "kill_switch": { "label": "Bypass အရေးပေါ်ပိတ်ခလုတ်", "desc": "ပင်မ toggle ဖြစ်သည်။ ပိတ်ထားသည့်အခါ prefix တစ်ခုချင်းစီ၏ စာရင်းကို မကြည့်ဘဲ LOCAL_ONLY prefix မည်သည့်တစ်ခုကိုမျှ non-loopback မှ ဝင်ရောက်၍မရပါ။" @@ -8073,7 +8073,7 @@ "auth_required": "Auth လိုအပ်သည်", "public": "အများသုံး", "always_protected": "အမြဲတမ်း ကာကွယ်ထားသည်", - "spawn_capable": "Spawn-capable" + "spawn_capable": "လုပ်ငန်းစဉ်အသစ် ဖန်တီးနိုင်သော" }, "error": { "PASSWORD_REQUIRED": "ဤပြောင်းလဲမှုများကို အသုံးပြုရန် လက်ရှိစကားဝှက် လိုအပ်သည်။", @@ -8085,7 +8085,7 @@ "remove": "ဖယ်ရှားရန်" }, "resilienceBaseCooldownLabel": "အခြေခံ cooldown", - "scopeLabel": "Scope", + "scopeLabel": "နယ်ပယ်", "triggerLabel": "အစပျိုးအခြေအနေ", "effectLabel": "အကျိုးသက်ရောက်မှု", "statusEnabled": "ဖွင့်ထားသည်", @@ -8234,7 +8234,7 @@ "modalityBridgeAudioTab": "အသံ", "modalityBridgeVideoTab": "ဗီဒီယို", "modalityBridgeSubTabsAria": "Modality Bridge အပိုင်းများ", - "modalityBridgeVisionTitle": "Vision Bridge", + "modalityBridgeVisionTitle": "ရုပ်ပုံ ချိတ်ဆက်တံတား", "modalityBridgeVisionDesc": "ရုပ်ပုံများကို vision model ဖြင့် ဖော်ပြပြီး အသုံးပြုသူ ရွေးချယ်ထားသော text model ဖြင့် ဆက်လက်လုပ်ဆောင်ပါ။", "modalityBridgeMode": "မုဒ်", "modalityBridgeModeAuto": "အလိုအလျောက် (အကြံပြုထားသည်)", @@ -8243,7 +8243,7 @@ "modalityBridgeModeDescribeHint": "သင်ရွေးချယ်ထားသော model က အမြဲတမ်း ဖြေကြားမည်ဖြစ်ပြီး ရုပ်ပုံများကို စာသားဖော်ပြချက်များဖြင့် အစားထိုးမည်။", "modalityBridgeModeReroute": "အမြဲတမ်း လမ်းကြောင်းပြောင်းရန်", "modalityBridgeModeRerouteHint": "Request တစ်ခုလုံးကို အသင့်တော်ဆုံး vision-capable model ထံ ပို့ပါ (အသုံးပြုနိုင်သည့် model မရှိပါက ဖော်ပြချက်ပေးသည့်နည်းလမ်းသို့ fallback လုပ်မည်)။", - "modalityBridgeVisionModel": "Vision model", + "modalityBridgeVisionModel": "မြင်ကွင်း မော်ဒယ်", "modalityBridgeVisionModelAuto": "အလိုအလျောက် (ရရှိနိုင်သမျှထဲမှ အကောင်းဆုံး)", "modalityBridgeTaskAware": "လုပ်ငန်းတာဝန်အလိုက် ဖော်ပြချက်", "modalityBridgeTaskAwareDesc": "Vision model က အရေးကြီးသည့်အရာများကို ဖော်ပြပြီး မြင်ရသောစာသားကို ကူးရေးနိုင်ရန် အသုံးပြုသူ၏ မေးခွန်းကို အဓိကအာရုံစိုက်ရမည့်အချက်အဖြစ် ထည့်သွင်းပါ။", @@ -8272,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge ကို ရွှေ့ထားသည်", "modalityBridgeMovedBody": "Vision Bridge ဆက်တင်များကို သီးသန့် Modality Bridge စာမျက်နှာတွင် ယခု ရရှိနိုင်ပါသည်။", "modalityBridgeMovedCta": "Modality Bridge ဆက်တင်များကို ဖွင့်ရန်", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "အသံ ချိတ်ဆက်တံတား", "modalityBridgeAudioDesc": "ရွေးချယ်ထားသော စာသားမော်ဒယ်ဖြင့် ဆက်လက်မလုပ်ဆောင်မီ အသံကို speech-to-text မော်ဒယ်ဖြင့် စာသားအဖြစ် ပြောင်းလဲပါ။", "modalityBridgeAudioEnabled": "Audio Bridge ကို ဖွင့်ရန်", "modalityBridgeAudioEnabledDesc": "ပစ်မှတ်မော်ဒယ်က အသံကို မလုပ်ဆောင်နိုင်သည့်အခါ အသံအပိုင်းများကို စာသားမှတ်တမ်းများဖြင့် အစားထိုးပါ။", @@ -8284,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge အဆင်ပြေသည် — {model} က ကလစ် {count} ခုကို စာသားအဖြစ် ပြောင်းလဲပေးခဲ့သည်", "modalityBridgeAudioTestNoop": "Audio Bridge အလုပ်မလုပ်ခဲ့ပါ (ပစ်မှတ်က အသံကို ပံ့ပိုးနိုင်သည်၊ STT provider ချိတ်ဆက်ထားခြင်းမရှိပါ၊ သို့မဟုတ် Bridge ကို ပိတ်ထားနိုင်သည်)", "modalityBridgeAudioTestError": "အသံစမ်းသပ်မှု မအောင်မြင်ပါ: {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "ဗီဒီယို ချိတ်ဆက်တံတား", "modalityBridgeVideoDesc": "ဗီဒီယိုဘောင်များကို နမူနာယူ၍ vision မော်ဒယ်ဖြင့် ဖော်ပြပြီး ရွေးချယ်ထားသော စာသားမော်ဒယ်ဖြင့် ဆက်လက်လုပ်ဆောင်ပါ။", "modalityBridgeVideoRuntimeReady": "Runtime အဆင်သင့်ဖြစ်သည်", "modalityBridgeVideoRuntimeChecking": "Runtime ကို စစ်ဆေးနေသည်…", @@ -8351,9 +8351,9 @@ "oneproxyClearAllConfirm": "1proxy proxy များအားလုံးကို ရှင်းမလား။", "memorySkillsSkillsmpDescription": "Marketplace မှ skill များကို ရှာဖွေပြီး ထည့်သွင်းရန် SkillsMP နှင့် ချိတ်ဆက်ပါ။", "memorySkillsActiveProviderDescription": "Skills စာမျက်နှာတွင် ရှာဖွေခြင်းနှင့် ထည့်သွင်းခြင်းအတွက် အသုံးပြုမည့် provider ကို ရွေးချယ်ပါ။", - "memorySkillsSkillsmpProviderTitle": "SkillsMP Marketplace", + "memorySkillsSkillsmpProviderTitle": "SkillsMP ဈေးကွက်", "memorySkillsSkillsmpProviderDescription": "အထောက်အထားစိစစ်ထားသော marketplace (သင်၏ SkillsMP API key ကို အသုံးပြုသည်)။", - "memorySkillsSkillsshProviderTitle": "skills.sh Directory", + "memorySkillsSkillsshProviderTitle": "skills.sh လမ်းညွှန်", "memorySkillsSkillsshProviderDescription": "အများသုံး directory provider (API key မလိုအပ်ပါ)။", "routingCcBridgeCatalogName": "Anthropic နှင့် ကိုက်ညီသော CC bridge", "routingClaudeProviderName": "Claude (OAuth)", @@ -8377,8 +8377,8 @@ "cliproxyapiUnknown": "မသိပါ", "cliproxyapiVersion": "ဗားရှင်း", "cliproxyapiHealth": "စနစ်အခြေအနေ", - "cliproxyapiPort": "Port", - "qdrantHost": "Host", + "cliproxyapiPort": "ပို့တ်", + "qdrantHost": "ဟို့စ်", "qdrantCollection": "စုစည်းမှု" }, "contextRtk": { @@ -8506,7 +8506,7 @@ "description": "တစ်ပုံစံတည်းဖြစ်သော JSON array များကို row အရေအတွက်ပြ marker များဖြင့် အချက်အလက်မဆုံးရှုံးဘဲ ဇယားပုံစံကျစ်လျစ်အောင် ပြုလုပ်ခြင်း။" }, "session-dedup": { - "name": "Session Dedup", + "name": "ဆက်ရှင် ထပ်နေမှုဖယ်ရှားခြင်း", "description": "ပြန်လည်ရယူနိုင်သော အကြောင်းအရာ marker များဖြင့် turn များအကြား ထပ်နေသော block များကို ဖယ်ရှားခြင်း။" }, "ccr": { @@ -9177,8 +9177,8 @@ "comboRouted": "Combo ဖြင့် လမ်းကြောင်းသတ်မှတ်ထားသည်", "uniqueEndpoints": "မတူညီသော endpoint များ", "routeDetails": "လမ်းကြောင်းအသေးစိတ်", - "comboBadge": "Combo", - "routeEndpointLabel": "Endpoint", + "comboBadge": "ပေါင်းစပ်မှု", + "routeEndpointLabel": "အဆုံးမှတ်", "routeConnectionLabel": "ချိတ်ဆက်မှု", "scenarioVision": "Vision (ပုံရိပ်နားလည်မှု)", "scenarioSchemaCoercion": "Schema အမျိုးအစားပြောင်းလဲမှု (ဖွဲ့စည်းပုံကျသော အထွက်)", @@ -9226,7 +9226,7 @@ "advancedRawJsonSubtitle": "JSON တောင်းဆိုချက်တစ်ခုကို ကူးထည့်ပါ၊ ဖော်မတ်ကို အလိုအလျောက် ရှာဖွေမည်။", "advancedPipelineTitle": "OpenAI ကြားခံလုပ်ငန်းစဉ်ပိုက်လိုင်း", "advancedPipelineSubtitle": "ဘာသာပြန်ဆိုမှုအဆင့်တစ်ခုစီကို ပုံဖော်ကြည့်ရှုပါ (hub-and-spoke)။", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "စီးကြောင်း ပြောင်းလဲကိရိယာ (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Chat Completions SSE ကို Responses API အဖြစ် ပြောင်းလဲပေးသည်။", "advancedTestBenchTitle": "စမ်းသပ်ခုံ (ဖြစ်ရပ် 8 ခု)", "advancedTestBenchSubtitle": "ဖြစ်ရပ်အားလုံးကို လုပ်ဆောင်ပြီး အောင်မြင်/မအောင်မြင် ရလဒ်နှင့် ကိုက်ညီမှု % ကို အစီရင်ခံသည်။", @@ -9302,7 +9302,7 @@ "loadingBudgetData": "ဘတ်ဂျက်ဒေတာကို ဖွင့်နေသည်...", "noApiKeysTitle": "API Key မရှိပါ", "noApiKeysDescription": "ဘတ်ဂျက်ကန့်သတ်ချက်များ သတ်မှတ်ရန် API key များကို ဦးစွာထည့်ပါ။", - "apiKey": "API Key", + "apiKey": "API ကီး", "todaysSpend": "ယနေ့ ကုန်ကျငွေ", "thisMonth": "ယခုလ", "setLimits": "ကန့်သတ်ချက်များ သတ်မှတ်ရန်", @@ -9321,7 +9321,7 @@ "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", + "promptCache": "ပရောမ့် ကက်ရှ်", "systemHealth": "စနစ် ကျန်းမာရေး", "entries": "ထည့်သွင်းချက်များ", "activeCount": "အသုံးပြုနေသော {count} ခု", @@ -9343,7 +9343,7 @@ "evaluateStepDescription": "တုံ့ပြန်ချက်များကို မျှော်မှန်းထားသော စံနှုန်းများနှင့် နှိုင်းယှဉ်သည်။ ကိစ္စတစ်ခုစီအတွက် အောင်မြင်/မအောင်မြင် ရလဒ်၊ latency တိုင်းတာချက်များနှင့် အသေးစိတ် တုံ့ပြန်အကြံပြုချက်များကို ကြည့်ပါ။", "evalsStrategyContainsLabel": "ပါဝင်မှု", "evalsStrategyExactLabel": "အတိအကျ ကိုက်ညီမှု", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "ပုံမှန်ဖော်ပြချက်", "evalsStrategyCustomLabel": "စိတ်ကြိုက် လုပ်ဆောင်ချက်", "evalsStrategyContainsDescription": "LLM output တွင် မျှော်မှန်းထားသော substring ပါဝင်ခြင်း ရှိမရှိ စစ်ဆေးသည်။", "evalsStrategyExactDescription": "LLM output သည် မျှော်မှန်းထားသော တန်ဖိုးနှင့် အတိအကျ ကိုက်ညီခြင်း ရှိမရှိ စစ်ဆေးသည်။", @@ -9417,7 +9417,7 @@ "noSessions": "လက်ရှိ အသုံးပြုနေသော Session မရှိပါ", "sessionsHint": "Proxy မှတစ်ဆင့် request များ စီးဆင်းလာသည့်အခါ Session များ ပေါ်လာပါမည်", "sessionsTrackedHint": "Request fingerprinting ဖြင့် ခြေရာခံထားသည် • 5s တိုင်း အလိုအလျောက် ပြန်လည်စတင်မည်", - "session": "Session", + "session": "ဆက်ရှင်", "age": "ကြာချိန်", "requests": "Request များ", "connection": "ချိတ်ဆက်မှု", @@ -9472,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "အခမဲ့", - "tierLite": "Lite", + "tierLite": "အပေါ့စား", "tierUnknown": "မသိရှိရ", "statTotal": "စုစုပေါင်း", "statCritical": "အရေးကြီး", @@ -9483,7 +9483,7 @@ "purchaseAll": "အားလုံး", "purchaseOauthSub": "စာရင်းသွင်းမှု", "purchaseOauthFree": "OAuth အခမဲ့", - "purchaseApiKey": "API Key", + "purchaseApiKey": "API သော့", "creditsLabel": "ခရက်ဒစ်များ", "creditBalanceHint": "လက်ကျန်ငွေ", "unlimitedLabel": "အကန့်အသတ်မရှိ", @@ -9523,7 +9523,7 @@ "suiteBuilderCloneSuffix": "ကူးယူရန်", "suiteBuilderImportedSuite": "တင်သွင်းထားသော စမ်းသပ်မှုအစုံ", "scorecardTitle": "ရမှတ်ကတ်", - "evalApiKey": "API Key", + "evalApiKey": "API သော့", "scorecardPassRate": "အောင်မြင်မှုနှုန်း", "targetTypeModel": "မော်ဒယ်", "actualOutputLabel": "အမှန်တကယ် ရလဒ်", @@ -9720,8 +9720,8 @@ "chooseAuthMethod": "သင်၏ အထောက်အထားစိစစ်နည်းကို ရွေးချယ်ပါ:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", + "googleAccount": "Google အကောင့်", + "githubAccount": "GitHub အကောင့်", "importToken": "Token တင်သွင်းရန်", "pasteToken": "Kiro IDE မှ refresh token ကို ကူးထည့်ပါ။", "awsRegion": "AWS ဒေသ", @@ -9960,7 +9960,7 @@ "featureUsageTrackingDesc": "မော်ဒယ်အားလုံးအတွက် အသေးစိတ်ဆန်းစစ်ချက်များနှင့် ကုန်ကျစရိတ် စောင့်ကြည့်မှု။", "featureOAuthApiKeysTitle": "OAuth နှင့် API Keys", "featureOAuthApiKeysDesc": "အထောက်အထားများကို vault တစ်ခုတည်းတွင် လုံခြုံစွာ စီမံခန့်ခွဲပါ။", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Cloud ထပ်တူပြုခြင်း", "featureCloudSyncDesc": "သင့်စက်များအကြား configuration များကို ချက်ချင်း ထပ်တူပြုပါ။", "featureCliSupportTitle": "CLI ပံ့ပိုးမှု", "featureCliSupportDesc": "Claude Code၊ Codex၊ Cline၊ Cursor နှင့် အခြားကိရိယာများဖြင့် အလုပ်လုပ်သည်။", @@ -10071,11 +10071,11 @@ "quickStartStep4Suffix": "provider prefix ကို အသုံးပြုပါ၊ ဥပမာ", "deploySetupTitle": "ထည့်သွင်းသတ်မှတ်မှု လမ်းညွှန်", "deploySetupText": "OmniRoute အတွက် အဆင့်ဆင့် ထည့်သွင်းခြင်း၊ environment စီစဉ်သတ်မှတ်ခြင်းနှင့် ပထမဆုံး စတင်အသုံးပြုပုံ လမ်းညွှန်။", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron ဒက်စ်တော့", "deployElectronText": "OmniRoute ကို Windows၊ macOS နှင့် Linux တွင် native desktop application အဖြစ် အသုံးပြုပါ။", "deployDockerTitle": "Docker", "deployDockerText": "Docker Compose ဖြင့် containerized deployment ပြုလုပ်နိုင်ပြီး production stack များနှင့် Kubernetes အတွက် အသင့်ဖြစ်သည်။", - "deployVmTitle": "Virtual Machine", + "deployVmTitle": "ဗာချွယ်စက်", "deployVmText": "မည်သည့် Linux VM တွင်မဆို ကိုယ်တိုင် host လုပ်ပါ။ systemd unit၊ log rotation နှင့် backup tooling တို့ ပါဝင်သည်။", "deployFlyTitle": "Fly.io", "deployFlyText": "fly.toml တစ်ခုနှင့် deploy command တစ်ခုတည်းဖြင့် Fly.io edge runtime သို့ deploy လုပ်ပါ။", @@ -10097,14 +10097,14 @@ "featureCliText": "IDE configuration များကို စီမံခြင်း၊ backup များကို export/import လုပ်ခြင်း၊ codex profile များကို ရှာဖွေခြင်းနှင့် dashboard မှ setting များကို စီစဉ်သတ်မှတ်ခြင်း။", "featureSecurityTitle": "လုံခြုံရေးနှင့် မူဝါဒများ", "featureSecurityText": "API key authentication၊ IP filtering၊ prompt injection guard၊ domain policy များ၊ session management နှင့် audit logging။", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Cloud ထပ်တူပြုခြင်း", "featureCloudSyncText": "ကုဒ်ဝှက်ထားသော credential များနှင့် automatic failover ကို အသုံးပြု၍ အဝေးမှ ဝင်ရောက်နိုင်ရန် သင့် configuration ကို Cloudflare Workers သို့ sync လုပ်ပါ။", "providersAcrossConnectionTypes": "ချိတ်ဆက်မှုအမျိုးအစား သုံးမျိုးရှိ provider {count} ခု။", "manageProviders": "ဝန်ဆောင်မှုပေးသူများကို စီမံရန်", "providersCount": "ဝန်ဆောင်မှုပေးသူ {count} ခု", "providerTypeFree": "အခမဲ့အဆင့်", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "API သော့", "useCaseSingleEndpointTitle": "ဝန်ဆောင်မှုပေးသူများစွာအတွက် endpoint တစ်ခုတည်း", "useCaseSingleEndpointText": "Client များကို base URL တစ်ခုတည်းသို့ ညွှန်ပြီး model prefix အလိုက် လမ်းကြောင်းသတ်မှတ်ပါ (ဥပမာ- gh/, cc/, kr/, openai/)။", "useCaseFallbackTitle": "Combo များဖြင့် အရန်လမ်းကြောင်းနှင့် model ပြောင်းလဲခြင်း", @@ -10112,10 +10112,10 @@ "useCaseUsageVisibilityTitle": "အသုံးပြုမှု၊ ကုန်ကျစရိတ်နှင့် debug အခြေအနေကို မြင်နိုင်ခြင်း", "useCaseUsageVisibilityText": "Usage နှင့် Analytics tab များတွင် ဝန်ဆောင်မှုပေးသူ၊ account နှင့် API key အလိုက် token များနှင့် ကုန်ကျစရိတ်ကို ခြေရာခံပါ။", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", + "baseUrlLabel": "အခြေခံ URL", + "chatEndpointLabel": "ချတ် endpoint", "modelRecommendationLabel": "Model အကြံပြုချက်- prefix ကို တိတိကျကျ သတ်မှတ်ပါ", - "clientCodexTitle": "Codex / GitHub Copilot Models", + "clientCodexTitle": "Codex / GitHub Copilot မော်ဒယ်များ", "clientCodexBullet1": "အောက်ပါတို့ပါဝင်သော model ID များကို အသုံးပြုပါ", "clientCodexBullet2": "Codex မျိုးနွယ် model များကို အောက်ပါနေရာသို့ အလိုအလျောက် လမ်းကြောင်းပို့သည်", "clientCodexBullet3": "Codex မဟုတ်သော model များသည် အောက်ပါနေရာတွင် ဆက်လက်လုပ်ဆောင်သည်", @@ -10174,7 +10174,7 @@ "mgmtLegacyMigrationNote": "ယခင် proxyConfig map များကို registry သတ်မှတ်ချက်များအဖြစ် ထည့်သွင်းပါ။", "modelPrefixesDescriptionStart": "သတ်မှတ်ထားသော provider တစ်ခုသို့ လမ်းကြောင်းပို့ရန် model အမည်ရှေ့တွင် provider prefix ကို အသုံးပြုပါ။ ဥပမာ-", "modelPrefixesDescriptionEnd": "GitHub Copilot သို့ လမ်းကြောင်းပို့သည်။", - "provider": "Provider", + "provider": "ဝန်ဆောင်မှုပေးသူ", "type": "အမျိုးအစား", "troubleshootingModelRouting": "client သည် model လမ်းကြောင်းရွေးချယ်မှုကြောင့် မအောင်မြင်ပါက provider/model ကို အတိအကျ အသုံးပြုပါ (ဥပမာ- gh/gpt-5.1-codex)။", "troubleshootingAmbiguousModels": "model မရှင်းလင်းမှုဆိုင်ရာ error များ ရရှိပါက model ID သက်သက်အစား provider prefix တစ်ခုကို ရွေးချယ်ပါ။", @@ -10222,7 +10222,7 @@ "mcpToolsMemoryDesc": "အမြဲတမ်းသိမ်းဆည်းထားသော စကားဝိုင်းမှတ်ဉာဏ် entry များကို ရှာဖွေ၊ ထည့်သွင်းပြီး ရှင်းလင်းပါ။", "mcpToolsSkillsTitle": "စွမ်းရည်များ", "mcpToolsSkillsDesc": "စိတ်ကြိုက်စွမ်းရည် လုပ်ဆောင်မှုများကို စာရင်းပြုစုခြင်း၊ ဖွင့်အသုံးပြုခြင်း၊ လုပ်ဆောင်ခြင်းနှင့် စောင့်ကြည့်ခြင်းတို့ ပြုလုပ်ပါ။", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "အလိုအလျောက်ပေါင်းစပ်မှု", "featureAutoComboText": "သင်ချိတ်ဆက်ထားသော ဝန်ဆောင်မှုပေးသူများ၊ အသုံးပြုမှုပုံစံများနှင့် မော်ဒယ်စွမ်းဆောင်ရည်များအပေါ် အခြေခံ၍ အကောင်းဆုံးပြင်ဆင်ထားသော ပေါင်းစပ်မှုများကို အလိုအလျောက်ဖန်တီးပါ။", "featureSearchTitle": "ဝဘ်ရှာဖွေမှု", "featureSearchText": "ခွဲခြမ်းစိတ်ဖြာမှုနှင့် ကုန်ကျစရိတ်ခြေရာခံမှုတို့ ပါဝင်သော ဝန်ဆောင်မှုပေးသူ ၅ ခု (Serper, Brave, Exa, Tavily, Perplexity) ဖြင့် ပေါင်းစပ်ထားသည့် ဝဘ်ရှာဖွေမှု။", @@ -10394,17 +10394,17 @@ "comparisonAgentsDesc": "OmniRoute သည် စက်တွင်းရှိ CLI binary များ (claude, codex, goose) ကို လုပ်ဆောင်မှု backend များအဖြစ် စတင်နိုင်သည်။ CLI tool သည် ၎င်း၏ကိုယ်ပိုင် authentication ကို အသုံးပြု၍ တောင်းဆိုမှုကို လုပ်ဆောင်ပြီး ရလဒ်ကို ပြန်ပေးသည်။", "comparisonSummary": "အကျဉ်းချုပ်အားဖြင့် — CLI Tools = tools များကို OmniRoute ထံ ညွှန်ပြရန် သင်စီစဉ်သတ်မှတ်သည်။ Agent Targets = OmniRoute က tools များကို ၎င်း၏ endpoint များအဖြစ် အသုံးပြုသည်။", "agentUseCaseHint": "ACP protocol မှတစ်ဆင့် လုပ်ဆောင်မှု target အဖြစ် အသုံးပြုနိုင်သည်", - "flowDiagramClient": "Client App", + "flowDiagramClient": "ကလိုင်းယင့်အက်ပ်", "flowDiagramClientDesc": "SDK, API သို့မဟုတ် upstream service", "flowDiagramOmniRoute": "OmniRoute", "flowDiagramOmniRouteDesc": "တောင်းဆိုမှုကို လက်ခံပြီး target ကို ရွေးချယ်သည်", "flowDiagramSpawn": "Process စတင်ခြင်း", "flowDiagramSpawnDesc": "stdio မှတစ်ဆင့် CLI binary ကို စတင်သည်", - "flowDiagramCli": "CLI Agent", + "flowDiagramCli": "CLI အေးဂျင့်", "flowDiagramCliDesc": "ကိုယ်ပိုင် authentication/model ဖြင့် လုပ်ဆောင်သည်", "fingerprintSettingsHint": "CLI Fingerprint ကိုက်ညီမှု (တောင်းဆိုမှုများကို သီးခြား CLI tools များမှလာသကဲ့သို့ ဖုံးကွယ်ခြင်း) ကို ဤနေရာတွင် စီစဉ်သတ်မှတ်နိုင်သည် —", - "settingsRoutingLink": "Settings/Routing", - "openSettings": "Settings", + "settingsRoutingLink": "ဆက်တင်များ/လမ်းကြောင်းသတ်မှတ်ခြင်း", + "openSettings": "ဆက်တင်များ", "copyRawUrlTitle": "URL အကြမ်းကို clipboard သို့ ကူးယူပါ", "copied": "ကူးယူပြီးပါပြီ!", "copyUrl": "URL ကူးယူရန်", @@ -10413,8 +10413,8 @@ "viewOnGithub": "GitHub တွင် ကြည့်ရန်", "howToUse": "အသုံးပြုပုံ", "browseAllSkillsOnGithub": "GitHub ပေါ်ရှိ skills အားလုံးကို ကြည့်ရှုရန်", - "apiSkills": "API Skills", - "cliSkills": "CLI Skills", + "apiSkills": "API ကျွမ်းကျင်မှုများ", + "cliSkills": "CLI ကျွမ်းကျင်မှုများ", "apiSkillsSubtitle": "skills {count} ခု — REST / HTTP မှတစ်ဆင့် OmniRoute ကို ထိန်းချုပ်ရန်", "cliSkillsSubtitle": "skills {count} ခု — omniroute terminal binary မှတစ်ဆင့် OmniRoute ကို ထိန်းချုပ်ရန်", "howToUseStep1": "သင့် agent ကို သိစေလိုသော skill ပေါ်ရှိ {copyUrl} ကို နှိပ်ပါ။", @@ -10423,7 +10423,7 @@ "howToUseStep3": "agent သည် SKILL.md ကို ရယူပြီး OmniRoute ၏ API သို့မဟုတ် CLI ကို လေ့လာသည် — လမ်းညွှန်စာတမ်းများကို ကိုယ်တိုင်ဖတ်ရန် မလိုအပ်ပါ။" }, "cloudAgents": { - "title": "Cloud Agents", + "title": "Cloud Agent များ", "description": "အလိုအလျောက် လုပ်ဆောင်နိုင်သော coding agent များ (Jules, Devin, Codex Cloud) ကို စီမံရန်", "loading": "လုပ်ဆောင်စရာများကို ဖွင့်နေသည်...", "aboutTitle": "Cloud Agents အကြောင်း", @@ -10442,7 +10442,7 @@ "noTasksTitle": "လုပ်ဆောင်စရာများ မရှိသေးပါ", "noTasksDesc": "စတင်ရန် သင့်ပထမဆုံးလုပ်ဆောင်စရာကို ဖန်တီးပါ။", "tasksTab": "လုပ်ဆောင်စရာများ", - "agentsTab": "Agents", + "agentsTab": "Agent များ", "settingsTab": "ဆက်တင်များ", "agentsEnabled": "ဖွင့်ထားသည်", "agentsDisabled": "ပိတ်ထားသည်", @@ -10480,8 +10480,8 @@ "statusFailed": "မအောင်မြင်ပါ", "statusCancelled": "ပယ်ဖျက်ပြီးသည်", "repositoryName": "Repository အမည်", - "repositoryUrl": "Repository URL", - "branch": "Branch", + "repositoryUrl": "သိုလှောင်ရုံ URL", + "branch": "ဘရန်ချ်", "agentDescriptions": { "jules": "Google ၏ အလိုအလျောက်ကုဒ်ရေးသားသည့် အေးဂျင့်", "devin": "Cognition ၏ AI ဆော့ဖ်ဝဲအင်ဂျင်နီယာ", @@ -10650,7 +10650,7 @@ "reasoningByProvider": "ဝန်ဆောင်မှုပေးသူအလိုက်", "reasoningByModel": "မော်ဒယ်အလိုက်", "reasoningRecentEntries": "မကြာသေးမီက မှတ်တမ်းများ", - "reasoningToolCallId": "Tool Call ID", + "reasoningToolCallId": "တူးလ်ခေါ်ဆိုမှု ID", "reasoningChars": "စာလုံးအရေအတွက်", "reasoningAge": "သက်တမ်း", "reasoningView": "ကြည့်ရန်", @@ -10806,8 +10806,8 @@ "tokensAutoDetected": "Cursor IDE မှ တိုကင်များကို အလိုအလျောက် ရှာဖွေတွေ့ရှိခဲ့သည်။", "cursorNotDetected": "Cursor IDE ကို ရှာမတွေ့ပါ။ သင်၏ access token (နှင့် ရရှိနိုင်ပါက refresh token) ကို ကူးထည့်ပါ။", "dockerImportHint": "Docker တွင် လုပ်ဆောင်နေပါသလား။ Cursor ဖြင့် အကောင့်ဝင်ရန်ကို အသုံးပြုခြင်းက ပိုကောင်းပါသည်။ IDE အလိုအလျောက်တင်သွင်းမှုနှင့် cursor-agent ကို container အတွင်း ပုံမှန်အားဖြင့် အသုံးမပြုနိုင်ပါ။ docs/providers/CURSOR-DOCKER.md ကို ကြည့်ပါ။", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", + "accessToken": "ဝင်ရောက်ခွင့် တိုကင်", + "refreshToken": "ပြန်လည်စတင်ရန် တိုကင်", "refreshTokenPlaceholder": "မဖြစ်မနေ မဟုတ်ပါ — တိုကင်ကို အလိုအလျောက် အသစ်ပြန်လည်ရယူနိုင်စေသည်", "required": "*", "accessTokenPlaceholder": "Access token ကို အလိုအလျောက် ဖြည့်ပေးမည်...", @@ -10919,7 +10919,7 @@ "assignmentsCount": "သတ်မှတ်ချက် {count} ခု", "noData": "—", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} မီလီစက္ကန့်", "testFailure": "✗ {error}", "repair": "ပြုပြင်ရန်", "relayAuthMissing": "auth မရှိပါ", @@ -10968,9 +10968,9 @@ "strategyLatency": "တုံ့ပြန်ချိန်အကောင်းဆုံး", "poolMembersLabel": "ပူးလ်အဖွဲ့ဝင်များ ({count})", "poolNoMembers": "ဤပူးလ်တွင် ပရောက်စီများ မရှိသေးပါ။", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {ထွက်ပေါက် # ခု} other {ထွက်ပေါက် # ခု}}ကို {connections, plural, one {ချိတ်ဆက်မှု # ခု} other {ချိတ်ဆက်မှု # ခု}}က အသုံးပြုထားသည် · ထွက်ပေါက်တစ်ခုတွင် အများဆုံး {max} ခု · ပြီးခဲ့သည့် {hours} နာရီ", + "poolEgressObservationEmpty": "ပြီးခဲ့သည့် {hours} နာရီအတွင်း ကွန်ရက်အသွားအလာ မတွေ့ရှိရပါ", + "poolEgressObservationHint": "သတ်မှတ်အချိန်ကာလအတွင်း proxy မှတ်တမ်းမှ ရေတွက်ထားသည်- ဤ pool ၏ အဖွဲ့ဝင်များအတွက် တွေ့ရှိခဲ့သော မတူညီသည့် အထွက် IP များနှင့် ၎င်းတို့ကို အသုံးပြုခဲ့သော OmniRoute ချိတ်ဆက်မှုများ။ \"ထွက်ပေါက်တစ်ခုတွင်\" ဆိုသည်မှာ တစ်ချိန်တည်းတွင်ဟု မဆိုလိုဘဲ သတ်မှတ်အချိန်ကာလတစ်ခုလုံးအတွင်းဟု ဆိုလိုသည်။ IP တစ်ခုချင်းစီအလိုက် 429 ပိတ်ဆို့မှုသည် တူညီသော provider family ၏ ချိတ်ဆက်မှုများကိုသာ ယာယီရပ်နားစေသည်။", "poolRemove": "ဖယ်ရှားရန်", "poolRemoveFailed": "ပရောက်စီကို ပူးလ်မှ ဖယ်ရှား၍ မရပါ", "poolAddLabel": "ပရောက်စီတစ်ခု ထည့်ရန်", @@ -11125,14 +11125,14 @@ "enableJsonMode": "JSON mode ကို ဖွင့်ရန်", "disableJsonMode": "JSON mode ကို ပိတ်ရန်", "invalidJson": "မမှန်ကန်သော JSON", - "jsonMode": "JSON mode", + "jsonMode": "JSON မုဒ်", "jsonModeDescription": "response_format: json_schema ကို မဖြစ်မနေ အသုံးပြုစေသည်", "schemaName": "Schema အမည်", - "jsonSchema": "JSON schema", + "jsonSchema": "JSON စခီမာ", "jsonSchemaEditor": "JSON schema တည်းဖြတ်ကိရိယာ", "schemaValidated": "Schema ကို အတည်ပြုပြီးပါပြီ", "validateSchema": "Schema ကို စစ်ဆေးအတည်ပြုရန်", - "seed": "Seed", + "seed": "ကနဦးကိန်း", "stopSequences": "ရပ်တန့်ရန် အစီအစဉ်များ", "stopSequencesPlaceholder": "ဥပမာ \"\\n\\n\" သို့မဟုတ် \"END\"", "autoProvider": "အလိုအလျောက်", @@ -11187,7 +11187,7 @@ }, "miniPlayground": { "endpoint": "အဆုံးမှတ်", - "apiKey": "API Key", + "apiKey": "API သော့", "model": "မော်ဒယ်", "voice": "အသံ", "speed": "အမြန်နှုန်း", @@ -11202,7 +11202,7 @@ "loading": "ဖွင့်နေသည်...", "retry": "ပြန်လည်ကြိုးစားရန်", "response": "တုံ့ပြန်ချက်", - "tunnel": "Tunnel", + "tunnel": "ချိတ်ဆက်လမ်းကြောင်း", "send": "ပို့ရန်", "selectKey": "ကီးရွေးရန်", "testLabel": "စမ်းသပ်ရန်", @@ -11228,7 +11228,7 @@ "noAudioUrl": "တုံ့ပြန်ချက်တွင် အသံ URL မပါဝင်ပါ- {response}", "music": "ဂီတ", "embeddingSample": "OmniRoute သည် AI တောင်းဆိုချက်များကို ဝန်ဆောင်မှုပေးသူအများအပြားထံ လမ်းကြောင်းခွဲပို့ပေးသည်။", - "embedding": "Embedding", + "embedding": "မြှုပ်သွင်းမှု", "imageSample": "နေဝင်ချိန်ရှိ အနာဂတ်ဆန်သောမြို့၊ ရုပ်ရှင်ဆန်သည့် အလင်းရောင်", "image": "ရုပ်ပုံ", "ttsSample": "OmniRoute မှ မင်္ဂလာပါ။ ဤသည်မှာ စာသားမှ အသံသို့ ပြောင်းလဲခြင်း စမ်းသပ်မှုဖြစ်သည်။", @@ -11272,7 +11272,7 @@ "total": "စုစုပေါင်း", "ok": "အောင်မြင်သည်", "err": "အမှား", - "combo": "Combo", + "combo": "ပေါင်းစပ်မှု", "keys": "Key များ", "shown": "ပြသထားသည်", "sortNewest": "နောက်ဆုံးပေါ်", @@ -11388,7 +11388,7 @@ "endedAt": "ပြီးဆုံးချိန်", "duration": "ကြာချိန်", "model": "မော်ဒယ်", - "provider": "Provider", + "provider": "ဝန်ဆောင်မှုပေးသူ", "account": "အကောင့်", "input": "အဝင်", "totalIn": "စုစုပေါင်းအဝင်: {value}", @@ -11404,7 +11404,7 @@ "modelPinning": "မော်ဒယ် ပင်ထိုးသတ်မှတ်မှု", "activeModelPinning": "အသုံးပြုနေသည် — session pinning ဖြင့် မော်ဒယ်ကို ရွေးချယ်ထားသည်", "rotated": "ပြောင်းလဲရွေးချယ်ခဲ့သည်: {initial} -> {final}", - "apiKey": "API Key", + "apiKey": "API သော့", "noApiKey": "API key မရှိပါ", "combo": "ပေါင်းစပ်မှု", "error": "အမှား", @@ -11434,14 +11434,14 @@ "filterSuccess": "အောင်မြင်မှု", "filterTimeout": "အချိန်ကုန်ဆုံးမှု", "colStatus": "အခြေအနေ", - "colProxy": "Proxy", + "colProxy": "ပရောက်စီ", "colTls": "TLS", "colType": "အမျိုးအစား", "colLevel": "အဆင့်", - "colProvider": "Provider", + "colProvider": "ဝန်ဆောင်မှုပေးသူ", "colTarget": "ပစ်မှတ်", "colLatency": "တုံ့ပြန်ချိန်", - "colClientIp": "Client IP", + "colClientIp": "ကလိုင်းယင့် IP", "colTime": "အချိန်", "recording": "မှတ်တမ်းတင်နေသည်", "paused": "ခေတ္တရပ်ထားသည်", @@ -11450,9 +11450,9 @@ "allLevels": "အဆင့်အားလုံး", "allProviders": "Provider အားလုံး", "total": "စုစုပေါင်း", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "ok": "အဆင်ပြေ", + "err": "အမှား", + "timeoutShort": "အချိန်ကုန်", "direct": "တိုက်ရိုက်", "newest": "နောက်ဆုံးအသစ်ဆုံး", "oldest": "အဟောင်းဆုံး", @@ -11536,7 +11536,7 @@ "sessionsActive": "{count} ခု အသက်ဝင်နေသည်", "sessionsEmptyTitle": "အသက်ဝင်နေသော session မရှိပါ", "sessionsEmptyHint": "တောင်းဆိုမှုများ proxy မှတစ်ဆင့် ဖြတ်သန်းလာသည်နှင့် session များ ပေါ်လာမည်", - "tblSession": "Session", + "tblSession": "ဆက်ရှင်", "tblAge": "သက်တမ်း", "tblIdle": "အလုပ်မလုပ်သည့်ကြာချိန်", "tblReqs": "တောင်းဆိုမှုများ", @@ -11556,7 +11556,7 @@ "title": "Quota မျှဝေခြင်း", "description": "% ကန့်သတ်ချက်များဖြင့် API key များအကြား provider quota များကို မျှဝေပါ", "newPool": "Pool အသစ်", - "betaTitle": "Beta", + "betaTitle": "ဘီတာ", "betaDescription": "ဖွဲ့စည်းသတ်မှတ်ချက်ကို localStorage တွင် သိမ်းဆည်းထားသည် (ဆာဗာတွင် မသိမ်းဆည်းရသေးပါ)။ Request တစ်ခုချင်းစီအလိုက် cap သတ်မှတ်ချက်ကို proxy pipeline နှင့် မချိတ်ဆက်ရသေးပါ။ ဤစာမျက်နှာတွင် quota ခွဲဝေမှုကို ဒီဇိုင်းရေးဆွဲပြီး မြင်သာအောင် ကြည့်ရှုနိုင်သည်။ အမှန်တကယ် သတ်မှတ်အကောင်အထည်ဖော်မှုကို DB တွင် အမြဲတမ်းသိမ်းဆည်းခြင်းနှင့် upstream call ကြားဖြတ်ခြင်းတို့နှင့်အတူ နောင် iteration တစ်ခုတွင် ထည့်သွင်းမည်။", "kpiActivePools": "အသုံးပြုနေသော pool များ", "kpiKeysAllocated": "ခွဲဝေသတ်မှတ်ထားသော key များ", @@ -11567,15 +11567,15 @@ "loading": "ဖွင့်နေသည်…", "removePool": "Pool ကို ဖယ်ရှားရန်", "removeConfirm": "ဤ pool ကို ဖယ်ရှားမည်လား။", - "pool": "Pool", + "pool": "အစု", "used": "အသုံးပြုပြီး", "allocationsCount": "ခွဲဝေသတ်မှတ်မှုများ ({count})", "allocatedFree": "{allocated}% ခွဲဝေသတ်မှတ်ပြီး · {free}% လွတ်နေသည်", "noAllocations": "Key များ မခွဲဝေရသေးပါ", - "capLabel": "cap {value}", + "capLabel": "ကန့်သတ်ချက် {value}", "notTrackedYet": "(မခြေရာခံရသေးပါ)", "policy": "မူဝါဒ", - "apiKeyColumn": "API Key", + "apiKeyColumn": "API ကီး", "weightColumn": "အလေးချိန်", "fairShareShort": "မျှတ", "policyHard": "တင်းကျပ်", @@ -11679,7 +11679,7 @@ "endpointsCollapse": "ခေါက်သိမ်းရန်", "endpointsExpand": "ဖြန့်ရန်", "endpointsAnthropicNote": "Anthropic မူရင်းပုံစံ", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsResponsesNote": "OpenAI တုံ့ပြန်မှုများ — codex/github", "endpointsWsNote": "WebSocket — codex အတွက်သာ", "betaText": "Quota Share ကို အသုံးပြုနိုင်သော်လည်း ချို့ယွင်းချက်များ ရှိနိုင်ပါသည်။ တစ်ခုခုတွေ့ပါသလား။ ကျေးဇူးပြု၍ အစီရင်ခံပါ။", "betaReportLink": "ပြဿနာတစ်ခုကို အစီရင်ခံရန်", @@ -11736,7 +11736,7 @@ "verified": "အတည်ပြုပြီး", "install": "ထည့်သွင်းမည်", "installedFromMarketplace": "ပလပ်အင် {name} ကို ထည့်သွင်းပြီးပါပြီ!", - "hooks": "Hooks" + "hooks": "ချိတ်ဆက်လုပ်ဆောင်ချက်များ" }, "quotaPlans": { "title": "အစီအစဉ်များနှင့် အသုံးပြုခွင့်ကန့်သတ်ချက်များ", @@ -11862,7 +11862,7 @@ "statusDnsOff": "DNS ပိတ်ထားသည်", "statusSetupRequired": "စနစ်ထည့်သွင်းရန် လိုအပ်သည်", "statusInvestigating": "စုံစမ်းစစ်ဆေးနေသည်", - "serverPort": "Port", + "serverPort": "ပေါ့တ်", "serverConns": "ချိတ်ဆက်မှုများ", "serverIntercepted": "ကြားဖြတ်ဖမ်းယူထားသည်", "serverLastStarted": "နောက်ဆုံး စတင်ခဲ့သည့်အချိန်", @@ -11999,7 +11999,7 @@ "tokensOut": "ထွက်သွားသော Token များ", "ttftAfterTool": "Tool အသုံးပြုပြီးနောက် TTFT", "gapAfterTool": "Tool အသုံးပြုပြီးနောက် ကြားကာလ", - "model": "Model", + "model": "မော်ဒယ်", "noProviderData": "ဝန်ဆောင်မှုပေးသူဆိုင်ရာ ဒေတာကို မမှတ်တမ်းတင်ရသေးပါ။", "comboMetrics": "ပေါင်းစပ် မက်ထရစ်များ", "comboMetricsDescription": "Streaming မှ ပေါင်းစပ်မှုတစ်ခုချင်းစီအလိုက် တုံ့ပြန်ချိန်နှင့် စီးဆင်းနှုန်း", @@ -12093,12 +12093,12 @@ "allTraffic": "Traffic အားလုံး (session မရှိ)", "sessionsDropdown": "Session များ", "annotationPlaceholder": "မှတ်စုတစ်ခု ထည့်ပါ…", - "contextFingerprint": "Context fingerprint", + "contextFingerprint": "ကွန်တက်စ် လက်ဗွေ", "llmProvider": "ရှာဖွေတွေ့ရှိထားသော provider", "llmApiKind": "API အမျိုးအစား", - "llmModel": "Model", + "llmModel": "မော်ဒယ်", "llmMessages": "Message များ", - "llmStream": "Stream", + "llmStream": "စီးကြောင်း", "llmMappedTo": "ချိတ်ဆက်ထားသည့်နေရာ", "llmCostEstimate": "ခန့်မှန်းကုန်ကျစရိတ်", "systemProxyExitWarning": "စနစ်တစ်ခုလုံးသုံး proxy သည် အသုံးပြုနေဆဲဖြစ်သည် — မည်သို့ပင်ဖြစ်စေ စာမျက်နှာမှ ထွက်မည်လား။", @@ -12106,7 +12106,7 @@ "loading": "ဖွင့်နေသည်…", "copied": "ကူးယူပြီးပါပြီ!", "copy": "ကူးယူရန်", - "httpProxyTitle": "HTTP Proxy Snippet — port {port}", + "httpProxyTitle": "HTTP ပရောက်စီ ကုဒ်အပိုင်းအစ — ပေါ့တ် {port}", "notRecording": "မှတ်တမ်းတင်မနေပါ", "anyStatus": "မည်သည့် status မဆို", "liveOnly": "တိုက်ရိုက်", @@ -12153,7 +12153,7 @@ "expand": "ဖြန့်ရန်", "collapse": "ခေါက်ရန်", "systemPromptHidden": "စနစ် prompt ကို ဝှက်ထားသည် — ဖြန့်ကြည့်ရန် နှိပ်ပါ", - "sessionName": "Session {id}", + "sessionName": "ဆက်ရှင် {id}", "sessions": "Session များ", "requestCountShort": "တောင်းဆိုမှု {count} ခု", "deleteSession": "Session ကို ဖျက်ရန်", @@ -12172,19 +12172,19 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "CLI ကုဒ်", "phrase": "OmniRoute သို့ ချိတ်ဆက်ညွှန်ပြထားသော ကုဒ်ရေးကိရိယာများ", "flow": "သင် → CLI Code → OmniRoute → Provider", "seeOther": "ကြည့်ရန် →" }, "agent": { - "title": "CLI Agents", + "title": "CLI အေးဂျင့်များ", "phrase": "OmniRoute သို့ ချိတ်ဆက်ညွှန်ပြထားသော အထွေထွေရည်ရွယ်ချက်သုံး ကိုယ်တိုင်လုပ်ဆောင်နိုင်သည့် CLI agents များ", "flow": "သင် → CLI Agent → OmniRoute → Provider", "seeOther": "ကြည့်ရန် →" }, "acp": { - "title": "ACP Agents", + "title": "ACP အေးဂျင့်များ", "phrase": "ရှုပ်ထွေးပြီး အချိန်ကြာမြင့်စွာ လုပ်ဆောင်ရသော logic ကို backend တွင် လုပ်ဆောင်ပါ", "warning": "အသုံးပြုသူအများစုအနေဖြင့် ဤအရာကို လျစ်လျူရှုနိုင်ပါသည် — integration တစ်ခုက လိုအပ်မှသာ အသုံးပြုပါ။", "flow": "Client → OmniRoute → CLI ကို စတင်လုပ်ဆောင်ရန် (stdio/ACP) → တုံ့ပြန်ချက်", @@ -12224,7 +12224,7 @@ "versionNotFound": "မတွေ့ရှိပါ", "manualConfig": "ကိုယ်တိုင်စီစဉ်သတ်မှတ်ခြင်း", "installGuide": "ထည့်သွင်းခြင်း လမ်းညွှန်", - "endpointLabel": "Endpoint", + "endpointLabel": "အဆုံးမှတ်", "baseUrlFull": "Base URL အပြည့်အစုံ", "baseUrlPartial": "Base URL တစ်စိတ်တစ်ပိုင်း", "refreshDetection": "ရှာဖွေတွေ့ရှိမှုကို ပြန်လည်စစ်ဆေးရန်", @@ -12236,12 +12236,12 @@ "apply": "သိမ်းဆည်းရန်", "reset": "ရှင်းလင်းရန်", "manualConfig": "ကိုယ်တိုင် စီစဉ်သတ်မှတ်ခြင်း", - "vendor": "Vendor", + "vendor": "ထုတ်လုပ်သူ", "category": "အမျိုးအစား", "detectionStatus": "ရှာဖွေတွေ့ရှိမှု", "configStatus": "စီစဉ်သတ်မှတ်မှု", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "အခြေခံ URL", + "apiKeyLabel": "API သော့", "modelMappingLabel": "Model ချိတ်ဆက်သတ်မှတ်မှု", "noActiveProviders": "အသုံးပြုနေသော provider မရှိပါ။", "noActiveProvidersDesc": "CLI ကို စီစဉ်သတ်မှတ်ခြင်းမပြုမီ အနည်းဆုံး provider 1 ခုကို ချိတ်ဆက်ရန် Providers သို့ သွားပါ။", @@ -12253,7 +12253,7 @@ "pageSubtitle": "OmniRoute သို့ ညွှန်ထားသော code tool များ", "searchPlaceholder": "CLI ရှာရန်…", "filterDetectionLabel": "ရှာဖွေတွေ့ရှိမှု", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "အခြေခံ URL", "detectionAll": "အားလုံး", "detectionInstalled": "ထည့်သွင်းပြီး", "detectionNotFound": "မတွေ့ပါ", @@ -12298,9 +12298,9 @@ "addAgent": "အေးဂျင့် ထည့်ရန်", "agentName": "အမည်", "agentNamePlaceholder": "ဥပမာ - My Agent", - "binaryName": "Binary", + "binaryName": "ဘိုင်နရီ", "binaryNamePlaceholder": "ဥပမာ - myagent", - "versionCommand": "Version command", + "versionCommand": "ဗားရှင်း စစ်ဆေးသည့် command", "versionCommandPlaceholder": "ဥပမာ - myagent --version", "spawnArgs": "စတင်အသုံးပြုရန် argument များ", "spawnArgsPlaceholder": "ဥပမာ - --quiet, --json", @@ -12345,7 +12345,7 @@ "description": "အထက်အဆင့် ဝန်ဆောင်မှုပေးသူ တောင်းဆိုချက်များအတွက် HTTP/HTTPS/SOCKS proxy များကို သတ်မှတ်ပါ။ ဝန်ဆောင်မှုပေးသူတစ်ခုချင်းအလိုက် သို့မဟုတ် စနစ်တစ်ခုလုံးအတွက် proxy စည်းမျဉ်းများ သတ်မှတ်ခြင်း၊ ချိတ်ဆက်နိုင်မှု စမ်းသပ်ခြင်းနှင့် proxy အလှည့်ကျပြောင်းလဲမှုကို စီမံခြင်းတို့ ပြုလုပ်ပါ။" }, "omni-cache": { - "name": "Cache", + "name": "ကက်ရှ်", "description": "LLM တုံ့ပြန်ချက် cache ကို စီမံပါ။ cache စာရင်းအင်းများကို ကြည့်ရှုခြင်း၊ ထည့်သွင်းချက်များကို ရှင်းလင်းခြင်း၊ TTL မူဝါဒများ သတ်မှတ်ခြင်းနှင့် အဓိပ္ပာယ်ဆင်တူမှုအခြေခံ caching အတွက် သတ်မှတ်အဆင့်များကို ထိန်းချုပ်ခြင်းတို့ ပြုလုပ်ပါ။" }, "omni-compression": { @@ -12393,7 +12393,7 @@ "description": "ထည့်သွင်းထားသော ဝန်ဆောင်မှုများ (9Router, CLIProxyAPI) ကို install လုပ်ခြင်း၊ စတင်ခြင်း၊ ရပ်တန့်ခြင်း၊ ပြန်လည်စတင်ခြင်းနှင့် update လုပ်ခြင်းတို့ ပြုလုပ်ပါ။ ဝန်ဆောင်မှုအခြေအနေကို စောင့်ကြည့်ခြင်း၊ မှတ်တမ်းများ ရယူခြင်းနှင့် local-only service endpoint များအတွက် အလိုအလျောက်စတင်မှု သတ်မှတ်ခြင်းတို့ ပြုလုပ်ပါ။" }, "omni-inference": { - "name": "Inference (OpenAI-compatible)", + "name": "ကောက်ချက်ချခြင်း (OpenAI-compatible)", "description": "အဓိက OpenAI-compatible inference endpoint များ- chat completions၊ embeddings၊ images၊ audio (TTS/STT)၊ moderations၊ rerank နှင့် Responses API။ AI agent များအတွက် အဓိက ပေါင်းစည်းအသုံးပြုရာ မျက်နှာပြင်ဖြစ်သည်။" }, "cli-serve": { @@ -12417,7 +12417,7 @@ "description": "CLI မှ ရရှိနိုင်သော AI မော်ဒယ်များကို ရှာဖွေမေးမြန်းခြင်း၊ မော်ဒယ် alias များကို စာရင်းပြုစုခြင်းနှင့် မော်ဒယ် catalog အပြည့်အစုံကို ကြည့်ရှုခြင်းတို့ ပြုလုပ်ပါ။ Provider အလိုက် စစ်ထုတ်ခြင်း၊ စွမ်းဆောင်ရည်အလိုက် ရှာဖွေခြင်းနှင့် မော်ဒယ်အမည် မူကွဲများကို သတ်မှတ်ဖြေရှင်းခြင်းတို့ ပြုလုပ်နိုင်သည်။" }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: ချတ်", "description": "CLI မှ chat completion များ ပေးပို့ခြင်း၊ တုံ့ပြန်ချက်များကို stream ပြုလုပ်ခြင်းနှင့် အပြန်အလှန်အသုံးပြုနိုင်သော REPL session တစ်ခု စတင်ခြင်းတို့ ပြုလုပ်ပါ။ OmniRoute provider အားလုံး၊ combo routing နှင့် system prompt ဖွဲ့စည်းသတ်မှတ်မှုတို့ကို ပံ့ပိုးသည်။" }, "cli-routing": { @@ -12445,7 +12445,7 @@ "description": "CLI မှ MCP server အခြေအနေကို စစ်ဆေးခြင်း၊ မှတ်ပုံတင်ထားသော tool များနှင့် scope များကို စာရင်းပြုစုခြင်း၊ tool invocation များကို လုပ်ဆောင်ခြင်းနှင့် MCP audit log များကို စီမံခြင်းတို့ ပြုလုပ်ပါ။" }, "cli-a2a": { - "name": "CLI: A2A Protocol", + "name": "CLI: A2A ပရိုတိုကော", "description": "CLI မှ OmniRoute A2A server နှင့် အပြန်အလှန် ဆက်သွယ်ပါ။ Task များ ပေးပို့ခြင်း၊ skill လုပ်ဆောင်မှုမှတ်တမ်းကို စစ်ဆေးခြင်းနှင့် JSON-RPC 2.0 agent-to-agent protocol ကို အပြန်အလှန် စမ်းသပ်ခြင်းတို့ ပြုလုပ်ပါ။" }, "cli-tunnel": { @@ -12481,7 +12481,7 @@ "description": "ထည့်သွင်းထားသော CLI coding tool များ (Claude Code, Codex, Cursor, Copilot, Cline နှင့် အခြားများ) ကို ရှာဖွေသတ်မှတ်ခြင်း၊ ကိုက်ညီသော agent skill များအတွက် GitHub တွင် ရှာဖွေခြင်းနှင့် OmniRoute ၏ built-in API များမှတစ်ဆင့် တွေ့ရှိထားသော tool များသို့ ၎င်းတို့ကို ထည့်သွင်းခြင်းတို့ ပြုလုပ်ပါ။" }, "config-codex-cli": { - "name": "Config: Codex CLI", + "name": "စီစဉ်သတ်မှတ်မှု: Codex CLI", "description": "မည်သည့်စက် (Linux, macOS, Windows) တွင်မဆို OpenAI Codex CLI ကို OmniRoute အား OpenAI-compatible backend အဖြစ် အသုံးပြုရန် ဖွဲ့စည်းသတ်မှတ်ပေးသည့် အဆင့်ဆင့် agent လုပ်ငန်းစဉ်ဖြစ်သည်။ OS နှင့် shell ကို ရှာဖွေသတ်မှတ်ခြင်း၊ config.toml နှင့် အမည်ပေးထားသော profile ၇ ခုကို ရေးသားခြင်း၊ environment variable များ သတ်မှတ်ခြင်းနှင့် setup ကို အတည်ပြုစစ်ဆေးခြင်းတို့ ပြုလုပ်သည်။" }, "omni-github-skills": { @@ -12523,7 +12523,7 @@ "storage": { "label": "သိုလှောင်မှု", "agent": "ပြောင်းလဲနိုင်သော ကတ်တလောက် (/api/agent-skills) → GitHub ပေါ်ရှိ SKILL.md", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / စက်တွင်း)" }, "tagline": { "label": "ဆောင်ပုဒ်", @@ -12992,7 +12992,7 @@ "description": "Byte များ client ထံ ရောက်ရှိပြီးနောက်တွင်ပင် stream recovery က response ကို ထပ်မံတောင်းခံ၍ ဆက်စပ်ပေါင်းစည်းနိုင်ရန် ခွင့်ပြုပါ။" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "စီးဆင်းမှုအလယ်တွင် ဆက်လက်လုပ်ဆောင်ခြင်းကို tool-call အတွက် ဘေးကင်းအောင် ပြုလုပ်ပါ။ tool call တစ်ခု ပို့ပြီးသွားပါက (လုပ်ဆောင်နေဆဲဖြစ်စေ၊ ပြီးဆုံးပြီးဖြစ်စေ) ဖြတ်တောက်သွားသော stream ကို မည်သည့်အခါမျှ ပြန်လည်မဆက်ပါနှင့်။ ထို့ပြင် retry budget အားလုံးကို အသုံးပြုမည့်အစား ဗလာ continuation တစ်ကြိမ်ပြီးနောက် ရပ်တန့်ပါ။" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "stream သည် အသုံးဝင်သော frame တစ်ခုမျှ မထုတ်မီ ပိတ်သွားပြီး ချိတ်ဆက်မှုတစ်ခုတည်းပေါ်ရှိ ကန့်သတ်ထားသော ပြန်လည်ကြိုးစားမှုလည်း ကုန်သွားပါက ညီအစ်ကိုချိတ်ဆက်မှုသို့ တစ်ကြိမ်သာ failover လုပ်ပါ။ အသုံးပြုနိုင်သော ညီအစ်ကိုချိတ်ဆက်မှု မရှိပါက မူလ early-EOF အမှားကို ပြန်ပေးပါသည်။ ပိတ်ထားလျှင်: ပြန်လည်ကြိုးစားပြီးနောက် early-EOF သည် နောက်ဆုံးအဖြစ် ရှိနေပါသည်။" @@ -13035,12 +13035,12 @@ "description": "Model က client အသုံးပြုနိုင်သော response တစ်ခုကို ပြန်ပေးသည်အထိ non-streaming server-owned tool call များကို ဆက်လက်လုပ်ဆောင်ပါ။" }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After ၏ မူလရင်းမြစ်", + "description": "ပေါင်းစည်းထားသော 429/503 unavailable တုံ့ပြန်မှုများတွင် အနာဂတ် ပြန်လည်ကြိုးစားမည့်အချိန်ကို တိတိကျကျ မသိရပါက အတုဖန်တီးထားသော 1s ကို ပို့မည့်အစား Retry-After ကို ချန်လှပ်ပါ၊ error.retry_after_provenance ကို ထည့်ပါ၊ ထို့ပြင် combo drain လမ်းကြောင်းများရှိ စာသားဖြင့်ဖော်ပြထားသော retry အရိပ်အမြွက်များကို ဖတ်ပါ။" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "ကာကွယ်ထားသော ဦးစားပေး အခြေခံစနစ် ရပ်တန့်မှုများကို 502 အဖြစ် သတ်မှတ်ခြင်း", + "description": "quota ကြောင့်သာ fallback လုပ်သည့် ဦးစားပေး target တစ်ခုက quota မဟုတ်ကြောင်း သက်သေပြနိုင်သော အကြောင်းရင်း—ဖွင့်နေသည့် provider circuit breaker သို့မဟုတ် ကြိုတင်ခန့်မှန်းထားသော latency ကြောင့် ကျော်သွားခြင်း—ကြောင့် ပေါင်းစပ်မှုကို ရပ်တန့်သည့်အခါ 503 အစား 502 ဖြင့် တုံ့ပြန်ပါ။" } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "Combo လုပ်ဆောင်မှုအခြေအနေ", "callLogs": "Call Log များ", "costs": "ကုန်ကျစရိတ်များ", - "playground": "Playground", + "playground": "စမ်းသပ်ကွင်း", "nestedCombo": "အဆင့်ဆင့်ပါဝင်သော combo", "modelTarget": "မော်ဒယ် ပစ်မှတ်", "weight": "အလေးချိန် {value}%", @@ -13308,7 +13308,7 @@ "name": "အမည်", "description": "ဖော်ပြချက်", "scopeLabel": "သက်ရောက်မှုနယ်ပယ်", - "apiKey": "API key", + "apiKey": "API သော့", "sourceCombo": "မူလပေါင်းစပ်မှု", "connection": "ချိတ်ဆက်မှု", "sourceModel": "မူလမော်ဒယ် သို့မဟုတ် wildcard", @@ -13318,7 +13318,7 @@ "missing": "မသတ်မှတ်ထားပါ", "signalOnly": "အဆင့်ခွဲမထားသော တွေးခေါ်မှု အချက်ပြမှု", "requestTags": "တောင်းဆိုချက် tag များ", - "requestTagsExample": "coding, internal", + "requestTagsExample": "ကုဒ်ရေးသားခြင်း၊ အတွင်းပိုင်း", "tagMode": "Tag ကိုက်ညီမှု", "effortMode": "အားထုတ်မှု မုဒ်", "targetEffort": "ပစ်မှတ်အားထုတ်မှု", @@ -13341,7 +13341,7 @@ "extendedUnsupportedWarning": "Max/Ultra ကို သင့်လျော်သော Codex GPT-5.6 မော်ဒယ်များကသာ ပံ့ပိုးကြောင်း သိရှိထားသည်။ မသိရှိသော စိတ်ကြိုက်မော်ဒယ်များကို ဆာဗာက သတိပေးချက်ဖြင့် လက်ခံသည်။", "scope": { "global": "ကမ္ဘာလုံးဆိုင်ရာ", - "apiKey": "API key", + "apiKey": "API သော့", "combo": "ကွန်ဘို", "model": "မော်ဒယ်", "connection": "ချိတ်ဆက်မှု" @@ -13358,7 +13358,7 @@ } }, "chaosConfig": { - "pageTitle": "Chaos Mode", + "pageTitle": "Chaos မုဒ်", "pageSubtitle": "တူညီသောလုပ်ငန်းတွင် AI မော်ဒယ်များစွာကို တစ်ပြိုင်နက် သို့မဟုတ် ပူးပေါင်း၍ လုပ်ဆောင်ရန်", "enableChaos": "Chaos Mode ကို ဖွင့်ရန်", "enableChaosDesc": "Chaos Mode ဖွင့်ထားသော API key များကို ဤအင်္ဂါရပ်အား အသုံးပြုခွင့်ပေးရန်", @@ -13373,7 +13373,7 @@ "systemPromptDesc": "Chaos Mode မော်ဒယ် instance အားလုံးအတွက် စိတ်ကြိုက်ညွှန်ကြားချက်များ", "providerOverrides": "Provider အစားထိုးသတ်မှတ်ချက်များ", "providerOverridesDesc": "Chaos Mode အတွက် Provider တစ်ခုချင်းစီရှိ သီးခြားမော်ဒယ်များကို ရွေးချယ်ပါ", - "providerId": "Provider", + "providerId": "ဝန်ဆောင်မှုပေးသူ", "modelId": "မော်ဒယ်", "addProvider": "Provider ထည့်ရန်", "removeProvider": "ဖယ်ရှားရန်", @@ -13418,7 +13418,7 @@ }, "featureFlagExposeFunctionalGatewayMirrorsDescription": "မူလပိုင်ရှင်တွင် အသုံးပြုနိုင်သည့် credential မရှိသော်လည်း အသုံးပြုနိုင်သည့် credential ပါသော passthrough gateway က လမ်းကြောင်းပေးထားသည့် မော်ဒယ်များအတွက် / mirror ID များကို /v1/models တွင် ဖော်ပြပါ။ သတိပေးချက်—တစ်ကမ္ဘာလုံးအတိုင်းအတာဖြင့် ဖွင့်ထားပါက client အားလုံးအတွက် catalog entry များကို ထည့်သွင်းပေးမည်။", "radarPage": { - "title": "Radar Catalog", + "title": "Radar ကတ်တလောက်", "subtitle": "အသိုင်းအဝိုင်း၏ အသိပညာဖြင့် ဖြည့်စွက်ထားသော အခမဲ့ မော်ဒယ် catalog", "loading": "Catalog ကို တင်နေသည်...", "errorLoading": "Radar catalog ကို တင်၍မရပါ", @@ -13470,7 +13470,7 @@ "limitsUnknownHelp": "Radar feed မှ တင်ပြထားသော ကန့်သတ်ချက်များသာ ဖြစ်သည်။ ဤစာရင်းအတွက် ထုတ်ပြန်ထားသော ကန့်သတ်ချက်များ မရှိပါ", "contextUnknownHelp": "ဤစာရင်းအတွက် context window ကို မသိရှိရပါ", "capabilityUnknownHelp": "လုပ်ဆောင်နိုင်စွမ်းကို feed မှ တင်ပြထားခြင်း မရှိပါ", - "colContext": "Context", + "colContext": "အကြောင်းအရာ", "colCapabilities": "လုပ်ဆောင်နိုင်စွမ်းများ", "colTos": "ToS အန္တရာယ်", "newBadge": "အသစ်", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "ပစ်မှတ်မော်ဒယ်တွင် လိုအပ်သော စွမ်းဆောင်ရည်များ (အမြင်၊ ကိရိယာများ၊ ဖွဲ့စည်းပုံကျ အထွက်၊ ကွန်တက်စ်ဝင်းဒိုး) မရှိပါက ဖြန့်ပို့ခြင်းမပြုမီ တောင်းဆိုမှုများကို ပယ်ချပါ။ ၎င်းသည် combo-layer လိုက်ဖက်ညီမှု စစ်ထုတ်မှုကို ကျော်လွှားသော တစ်ခုတည်းသောပံ့ပိုးသူထံ တိုက်ရိုက်တောင်းဆိုမှုများကို ကာကွယ်ပေးသည်။", "featureFlagDisableContextWindowChecksDescription": "တစ်ခုတည်းသောမော်ဒယ်ထံ တိုက်ရိုက်တောင်းဆိုမှုများအတွက် OmniRoute ၏ စက်တွင်း ကွန်တက်စ်ဝင်းဒိုးနှင့် အများဆုံးထည့်သွင်းတိုကင် စစ်ဆေးမှုကို ကျော်ပါ။ မူလပံ့ပိုးသူများက ၎င်းတို့၏ အမှန်တကယ်ကန့်သတ်ချက်များကို ဆက်လက်အတည်ပြုကျင့်သုံးမည်ဖြစ်သည်။ ပရောမ့်ချုံ့ခြင်းနှင့် အထွက်တိုကင် အများဆုံးကန့်သတ်ချက်များမှာ ဆက်လက်အသက်ဝင်နေမည်ဖြစ်သည်။", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "ရှာဖွေမှုစာရင်းအင်းများနှင့် မကြာသေးမီက ရှာဖွေမှုများတွင် လက်ရှိချိတ်ဆက်မှုရှိနေသေးသော ဝန်ဆောင်မှုပေးသူများကိုသာ ထည့်သွင်းရေတွက်သည် (duckduckgo-free ကဲ့သို့ သော့မလိုသော ဝန်ဆောင်မှုပေးသူများကို အမြဲရေတွက်သည်)။ ပိတ်ထားပါက ထိန်းသိမ်းထားသော ရှာဖွေမှုအတန်းတိုင်းကို ဝန်ဆောင်မှုပေးသူ ID နှင့်အတူ ဆက်လက်ထားရှိသည်။", "publicSystem": { "notFound": { "title": "စာမျက်နှာကို ရှာမတွေ့ပါ", @@ -13867,13 +13867,13 @@ "openSoloTrae": "solo.trae.ai ကို ဖွင့်ပါ", "orPasteManually": "သို့မဟုတ် တိုကင်တစ်ခုကို ကိုယ်တိုင်ထည့်သွင်းပါ", "manualInstructions": "solo.trae.ai သို့ လော့ဂ်အင်ဝင်ပြီး DevTools → Network ကို ဖွင့်ပါ၊ မည်သည့် ချတ်မက်ဆေ့ချ်မဆို ပို့ပြီး Authorization: Cloud-IDE-JWT {tokenPlaceholder} request header မှ JWT ကို ကူးယူပါ။ JWT ၏ သက်တမ်းမှာ ~14 ရက်ဖြစ်သည်။ ထည့်သွင်းရန် မဖြစ်မနေမလိုသော အထောက်အထားအကွက်များကို အလားတူ request body ရှိ common_params မှ ရယူသည်။", - "accessTokenLabel": "Access Token (Cloud-IDE-JWT)", - "webId": "Web ID", + "accessTokenLabel": "အသုံးပြုခွင့် တိုကင် (Cloud-IDE-JWT)", + "webId": "ဝဘ် ID", "optional": "ထည့်သွင်းရန် မဖြစ်မနေမလိုပါ", - "bizUserId": "Biz User ID", - "userUniqueId": "User Unique ID", - "scope": "Scope", - "tenant": "Tenant", + "bizUserId": "လုပ်ငန်းသုံး အသုံးပြုသူ ID", + "userUniqueId": "အသုံးပြုသူ သီးသန့် ID", + "scope": "နယ်ပယ်", + "tenant": "အဖွဲ့အစည်းခွဲ", "region": "ဒေသ", "importing": "ထည့်သွင်းနေသည်…", "importToken": "တိုကင်ကို ထည့်သွင်းပါ", @@ -13969,7 +13969,7 @@ "compressionDescription": "တိုကင်အသုံးပြုမှုနှင့် ကုန်ကျစရိတ်များကို လျှော့ချရန် အကြောင်းအရာချုံ့ခြင်း ဆက်တင်များကို စီစဉ်သတ်မှတ်ပါ။", "relayTitle": "OmniRoute — Relay Proxy များ", "relayDescription": "သင်၏ AI အခြေခံအဆောက်အအုံအတွက် ဆာဗာမဲ့ Relay Proxy Endpoint များ", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "အသွားအလာ စစ်ဆေးကိရိယာ — OmniRoute", "trafficInspectorDescription": "LLM ခေါ်ဆိုမှုများကို စောင့်ကြည့်ပြီး မည်သည့်အပလီကေးရှင်း၏ HTTPS လမ်းကြောင်းကိုမဆို အမှားရှာပါ" }, "conductor": { @@ -13992,7 +13992,7 @@ "noTasks": "လုပ်ငန်းများ မရှိသေးပါ", "detailTitle": "လုပ်ငန်းအသေးစိတ်", "prompt": "ညွှန်ကြားချက်", - "branch": "Branch", + "branch": "ဘရန်ချ်", "fetchHint": "ရလဒ်ကို ဤအမိန့်ဖြင့် ရယူပါ- git fetch origin {branch}", "council": "ကောင်စီ", "candidates": "အဆိုပြုရလဒ်များ", @@ -14051,9 +14051,9 @@ "filterSources": "ရင်းမြစ်များ", "filterProviders": "ဝန်ဆောင်မှုပေးသူများ", "clearFilters": "စစ်ထုတ်မှုများကို ရှင်းရန်", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Cloud အေးဂျင့်", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "စီမံထိန်းချုပ်သူ", "sourceStale": "{since} မှစ၍ အပ်ဒိတ်မရှိပါ", "sourceOffline": "အော့ဖ်လိုင်း", "sourceCollapse": "ခေါက်သိမ်းရန်", diff --git a/src/i18n/messages/ne.json b/src/i18n/messages/ne.json index 0b6318a9eb..3f5cf4fab2 100644 --- a/src/i18n/messages/ne.json +++ b/src/i18n/messages/ne.json @@ -832,8 +832,8 @@ "wizardStep3Validate": "प्रमाणीकरण गर्नुहोस्", "wizardStep4Cost": "लागत र सिर्जना", "wizardProviderLabel": "प्रदायक", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "wizardEndpointLabel": "अन्तिम बिन्दु", + "wizardModelLabel": "मोडेल", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (हामी रूपान्तरण गर्नेछौँ)", "wizardDropOrPick": "फाइल यहाँ छोड्नुहोस् वा छनोट गर्न क्लिक गर्नुहोस्", @@ -901,7 +901,7 @@ "batchListRemoveCompleted": "पूरा भएकाहरू हटाउनुहोस्", "batchListTableStatus": "स्थिति", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "अन्तिम बिन्दु", "batchListTableModel": "मोडेल", "batchListTableProgress": "प्रगति", "batchListTableCreated": "सिर्जना गरिएको", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Claude Code गेटवे मोडेल खोजले गैर-Claude मोडेलहरू सूचीबद्ध गरोस् भन्नका लागि /v1/models मा claude/<provider>/<model> मिरर id हरू देखाउनुहोस्। चेतावनी: विश्वव्यापी रूपमा सक्षम गर्दा सबै क्लाइन्टका लागि क्याटलग प्रविष्टिहरू दोब्बर हुन्छन्।", "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> गेटवे एलियसहरूका लागि मुख्य स्विच। अन (पूर्वनिर्धारित): /v1/models ले हरेक योग्य सोच्न-सक्षम Claude मोडेलका लागि सोचाइ-विहीन भेरियन्ट देखाउँछ, र अनुरोधमा पठाइएको no-think/ id वास्तविक मोडेलमा फर्केर रिजोल्भ हुन्छ र रिजनिङ दबाइन्छ। अफ: कुनै पनि भेरियन्ट देखाइँदैन र no-think/ id लाई अन्य कुनै अज्ञात मोडेल id सरह व्यवहार गरिन्छ। यो अन हुँदा पनि प्रत्येक मोडेलको ModelSpec.noThinkingAlias अप्ट-इन/अप्ट-आउट लागू हुन्छ।", "featureFlagChatVirtualLanesEnabledDescription": "प्रदायक डिस्प्याच (#9654) का लागि प्रत्येक टेनेन्टअनुसार अनुकूल हुने भर्चुअल एडमिसन लेनहरू सक्षम गर्नुहोस्: अब एउटा टेनेन्टको अचानक बढेको ट्राफिकले अर्कोलाई 503 गराउँदैन। OMNIROUTE_CHAT_VIRTUAL_LANES env var ले यस ड्यासबोर्ड ओभरराइडभन्दा प्राथमिकता पाउँछ; परिवर्तनहरू सर्भर पुनः सुरु भएपछि लागू हुन्छन्।", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ड्यासबोर्डका प्रदायक पृष्ठहरू: प्रदायकले मान्ने सङ्केतहरूमा मात्र निःशुल्क ब्याज देखाउनुहोस् — दस्तावेजीकृत निःशुल्क तह नभएका दर्ता गरिएका प्रदायकहरूमा प्रदर्शन-नामको अनुमान, गैर-बुलियन निःशुल्क फिल्डहरू र :free प्रत्ययहरू हटाउँछ। बन्द गर्दा ऐतिहासिक ब्याज नियम कायम रहन्छ।", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy pools र opencode को प्रति-खाता रोटेसनले भर्खरै असफल भएको प्रोक्सी (TCP प्रोब अस्वीकार भएको वा त्यसमार्फत 429 प्राप्त भएको) लाई प्रत्येक पटक दोब्बर हुँदै अधिकतम सीमासम्म पुग्ने प्रति-प्रक्रिया अवधिका लागि पुनः प्रयोग गर्न रोक्छ। कुनै प्रोक्सी स्थिति लेखिँदैन; प्रत्येक उम्मेदवारलाई अलग राख्दा छनोट अपरिवर्तित रहन्छ। पूर्वनिर्धारित रूपमा बन्द: छनोट क्रम ठ्याक्कै साधारण रोटेसन नै हुन्छ।", + "featureFlagProxyPoolEgressObservationDescription": "ड्यासबोर्डमा प्रोक्सी पूलअन्तर्गत, पछिल्लो २४ घण्टामा त्यसका सदस्यहरूलाई सेवा दिने कति वटा अवलोकित इग्रेस IP थिए, कति जडानले तिनलाई प्रयोग गरे र एउटै IP पछाडि देखिएको अधिकतम संख्या कति थियो भन्ने देखाउनुहोस्। पढ्नका लागि मात्र, प्रोक्सी लगबाट गणना गरिएको र राउटिङका लागि कहिल्यै प्रयोग नगरिने। पूर्वनिर्धारित रूपमा बन्द: पूल सम्पादक अपरिवर्तित रहन्छ र अवलोकन रुटले null फर्काउँछ।", + "featureFlagProxyHealthBlockedResetsStreakDescription": "प्रोक्सी स्वास्थ्य स्वीपमा, लक्ष्यले अस्वीकार गरेको प्रोब (401/403/429: प्रोक्सीले रिले गर्यो, गन्तव्यले यो इग्रेस IP अस्वीकार गर्यो) लाई सेवा दिइएको प्रोबजस्तै प्रोक्सीको लगातार-असफलता क्रम रिसेट गर्न दिनुहोस्। पूर्वनिर्धारित रूपमा बन्द: अस्वीकृति तटस्थ रहन्छ र क्रम कायम राख्छ। दुवै अवस्थामा 5xx अनिर्णायक नै रहन्छ, र अस्वीकृतिले प्रोक्सीलाई कहिल्यै हटाउँदैन, निष्क्रिय पार्दैन वा पुनः सक्रिय गर्दैन।", "sidebar": { "home": "गृहपृष्ठ", "dashboard": "ड्यासबोर्ड", @@ -1429,19 +1429,19 @@ "secretKeyHint": "प्रमाणीकरणका लागि पेलोड हेडरमा हस्ताक्षर गर्न प्रयोग गरिन्छ।" }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "Discord वेबहुक URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "तपाईंको Discord च्यानल एकीकरण सेटिङहरूबाट प्रतिलिपि गरिएको वेबहुक URL।", "tutorial": "Discord वेबहुक कसरी सिर्जना गर्ने:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "Slack वेबहुक URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "तपाईंको Slack Incoming Webhooks एकीकरणबाट प्रतिलिपि गरिएको वेबहुक URL।", "tutorial": "Slack वेबहुक कसरी सिर्जना गर्ने:" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "Telegram बट टोकन", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "तपाईंको बट सिर्जना गर्दा @BotFather बाट प्राप्त HTTP API टोकन।", "chatId": "Telegram च्याट ID / च्यानल", @@ -1815,7 +1815,7 @@ "topologyLegendRecent": "हालैको", "topologyLegendError": "त्रुटि", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", + "apiKeyLabel": "एपीआई कुञ्जी", "requestsShort": "{count} अनुरोधहरू", "providerModelsTitle": "{provider} - मोडेलहरू", "copiedModel": "प्रतिलिपि गरियो: {model}", @@ -1903,7 +1903,7 @@ "usageAnalyticsTitle": "प्रयोग विश्लेषण", "diversityScoreTitle": "प्रदायक विविधता", "diversityScoreDesc": "हालैको ट्राफिक अवधिका लागि प्रदायक एकाग्रताको झलक।", - "diversityShannonEntropy": "Shannon entropy", + "diversityShannonEntropy": "श्यानन एन्ट्रोपी", "diversityWindow": "अवधि: {count} अनुरोधहरू · पछिल्ला {mins} मिनेट", "diversityHealthy": "स्वस्थ वितरण", "diversityRiskHigh": "उच्च विक्रेता निर्भरता जोखिम", @@ -2626,7 +2626,7 @@ "scrapeExtracting": "निकालिँदै छ…", "scrapeFullPage": "पूरा पृष्ठ", "scrapeFormat": "ढाँचा", - "formatMarkdown": "Markdown", + "formatMarkdown": "मार्कडाउन", "formatHtml": "HTML", "formatText": "पाठ", "scrapePreview": "पूर्वावलोकन", @@ -2717,7 +2717,7 @@ "ccOnboardingTitle": "गेटवे मोडेल खोजका लागि settings.json", "ccOnboardingCopy": "प्रतिलिपि गर्नुहोस्", "ccOnboardingCopied": "प्रतिलिपि गरियो", - "ccOnboardingKeyPlaceholder": "''", + "ccOnboardingKeyPlaceholder": "'<तपाईंको OmniRoute API कुञ्जी>'", "ccOnboardingWindowNote": "Claude Code ले आफूले नचिनेको कुनै पनि मोडेल id का लागि 200K कन्टेक्स्ट विन्डो मान्छ। वास्तविक विन्डो फरक भएको मोडेलका लागि, स्वतः-कम्प्याक्सन धेरै चाँडो सुरु नहोस् भनेर त्यसको ठीक तल CLAUDE_CODE_AUTO_COMPACT_WINDOW थप्नुहोस्।", "failedSave": "सुरक्षित गर्न असफल भयो", "profileSyncTitle": "CLI प्रोफाइल स्वतः-सिङ्क", @@ -3176,8 +3176,8 @@ "copilotToolCalling": "उपकरण कलिङ", "copilotPasteInto": "यहाँ टाँस्नुहोस्:", "copilotReloadInstruction": "त्यसपछि VS Code पुनः लोड गर्नुहोस् र इनपुट प्रम्प्टमा API कुञ्जी सेट गर्नुहोस्।", - "wireApiChatCompletions": "Chat Completions (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiChatCompletions": "च्याट पूर्णताहरू (/chat/completions)", + "wireApiResponses": "प्रतिक्रिया एपीआई (/responses)", "cliproxyapiActionFailed": "कार्य असफल भयो", "cliproxyapiActionSucceeded": "कार्य सफल भयो", "cliproxyapiCheckUpdates": "अद्यावधिकहरू जाँच गर्नुहोस्", @@ -4127,7 +4127,7 @@ "vscodeAliasDescriptionError": "यस सत्रमा CLI कुञ्जीहरू लोड गर्न नसकिएकाले प्लेसहोल्डर URL हरू देखाइँदै छन्।", "vscodeAliasDescriptionLoading": "CLI कुञ्जीहरू लोड हुँदै छन्। कुञ्जी उपलब्ध नभएसम्म प्लेसहोल्डर URL हरू देखाइन्छन्।", "vscodeAliasDescriptionPlaceholder": "प्लेसहोल्डर URL हरू देखाइँदै छन्। TOKEN प्रतिस्थापन गर्न CLI Tools मा API कुञ्जी सिर्जना वा सक्रिय गर्नुहोस्।", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI उपकरणहरू", "vscodeAliasBaseLabel": "VS Code आधार", "vscodeAliasModelsLabel": "VS Code मोडेलहरू", "vscodeAliasChatLabel": "VS Code च्याट", @@ -5210,7 +5210,7 @@ "selectProvider": "प्रदायक चयन गर्नुहोस्", "selectedProvider": "चयन गरिएको प्रदायक", "authMethod": "प्रमाणीकरण विधि", - "apiKeyLabel": "API Key", + "apiKeyLabel": "एपीआई कुञ्जी", "apiKeyRequired": "API Key आवश्यक छ", "selectProviderRequired": "कृपया प्रदायक चयन गर्नुहोस्", "enterApiKey": "आफ्नो API key प्रविष्ट गर्नुहोस्", @@ -5801,10 +5801,10 @@ "ccCompatibleSummarizeThinkingDescription": "CC Compatible विचार अनुरोधहरूमा `display: \"summarized\"` थप्छ, ताकि समर्थित Claude मोडेलहरूले देखिने विचार डेल्टाहरू स्ट्रिम गर्न सकून्।", "ccCompatibleSummarizeThinkingLabel": "सारांशित विचार प्रदर्शन सक्षम गर्नुहोस्", "ccCompatibleDetailsTitle": "CC-compatible रिले विवरणहरू", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "CC अनुकूल", "ccCompatibleModelsDescription": "CC-compatible रिलेहरूले मोडेल सूची उपलब्ध गराउँदैनन्। तपाईंको रिलेले स्वीकार गर्ने Claude मोडेल ID हरू थप्नुहोस्।", "ccCompatibleNameHint": "यस Claude Code-मात्र रिलेको प्रदर्शन नाम।", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay उत्पादन", "ccCompatiblePrefixHint": "prefix/model-id जस्ता मोडेल उपनामहरूमा प्रयोग हुन्छ।", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "यो प्रदायकलाई Claude Code क्लाइन्टहरूलाई मात्र सेवा दिने रिलेहरूका लागि प्रयोग गर्नुहोस्। OmniRoute ले आउने कुनै पनि अनुरोधलाई Claude Code-compatible वायर ढाँचामा पुनर्लेखन गर्छ, ताकि ती रिलेहरूले यसलाई स्वीकार गर्न सकून्। यदि तपाईं Claude Code CLI मात्र प्रयोग गर्न चाहनुहुन्छ, वा यो रिले प्रकारको अर्थबारे निश्चित हुनुहुन्न भने, यसको सट्टा नियमित Anthropic-compatible प्रदायक प्रयोग गर्नुहोस्।", @@ -6100,7 +6100,7 @@ "onboardingBaseUrlOverride": "Base URL ओभरराइड", "onboardingBaseUrlOverrideHint": "वैकल्पिक। providerSpecificData.baseUrl का रूपमा भण्डारण गरिन्छ।", "onboardingRegion": "क्षेत्र", - "onboardingSearchCx": "Search CX / Engine id", + "onboardingSearchCx": "CX / Engine id खोज्नुहोस्", "onboardingProviderSpecificIdPlaceholder": "वैकल्पिक प्रदायक-विशिष्ट id", "onboardingCustomUserAgent": "कस्टम User-Agent", "onboardingWorking": "काम हुँदै छ…", @@ -6371,11 +6371,11 @@ "poeWebDesc": "poe.com मार्फत बहु-मोडेल च्याट", "veniceWebLabel": "Venice Web", "veniceWebDesc": "गोपनीयता-केन्द्रित AI च्याट", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel वेब", "v0VercelWebDesc": "v0.dev मार्फत AI कोड उत्पादन", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi वेब", "kimiWebDesc": "www.kimi.com मार्फत Moonshot AI उपभोक्ता च्याट (अन्तर्राष्ट्रिय, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola वेब", "doubaoWebDesc": "dola.com मार्फत ByteDance AI च्याट", "overrideBaseUrlAdvanced": "उन्नत: आधार URL ओभरराइड गर्नुहोस्", "overrideBaseUrlHint": "उन्नत: यो अन्तर्निर्मित प्रदायकलाई आफूले चाहेको एन्डपोइन्टमा निर्देशित गर्नुहोस्। पूर्वनिर्धारित प्रयोग गर्न खाली छोड्नुहोस्।", @@ -6456,7 +6456,7 @@ "failedUpdateCodexServiceMode": "Codex सेवा मोड अपडेट गर्न असफल भयो", "filterByMedia": "मिडिया", "freeBadge": "निःशुल्क", - "kimiCodeApiKeyLabel": "Kimi Code API Key", + "kimiCodeApiKeyLabel": "Kimi Code API कुञ्जी", "modelTestFailed": "मोडेल परीक्षण असफल भयो", "modelTestNetworkError": "मोडेल परीक्षण गर्दा नेटवर्क त्रुटि भयो", "networkError": "नेटवर्क त्रुटि", @@ -6530,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "यी समावेश भएका अनुच्छेदहरू हटाउनुहोस्: {items}", "routingSummarizeDropParagraphStartsWith": "यीबाट सुरु हुने अनुच्छेदहरू हटाउनुहोस्: {items}", "routingSummarizeReplaceText": "\"{match}\" लाई \"{replacement}\" ले प्रतिस्थापन गर्नुहोस्", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "रेगेक्स /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "यी समावेश भएका ब्लकहरू हटाउनुहोस्: {items}", "routingSummarizePrependSystemBlock": "ब्लक अगाडि थप्नुहोस्: \"{text}\"", "routingSummarizeAppendSystemBlock": "ब्लक पछाडि थप्नुहोस्: \"{text}\"", @@ -7056,7 +7056,7 @@ "routingAdvancedGuideTitle": "उन्नत राउटिङ मार्गदर्शन", "routingAdvancedGuideHint1": "यो रणनीति नयाँ कम्बोका पूर्वनिर्धारित सेटिङहरू र विश्वव्यापी खाता फलब्याक राउटिङ दुवैसँग सिंक गरिएको छ।", "routingAdvancedGuideHint2": "पूर्वानुमानयोग्य खाता प्राथमिकताका लागि Fill First, खाताका ब्याचहरूका लागि Round Robin र Sticky Limit, तथा विलम्बता सहनशीलताका लागि P2C प्रयोग गर्नुहोस्।", - "fillFirst": "Fill First", + "fillFirst": "पहिले भर्नुहोस्", "fillFirstDesc": "प्राथमिकता क्रममा खाताहरू प्रयोग गर्नुहोस्", "roundRobin": "Round Robin", "roundRobinDesc": "सबै खाताहरू पालैपालो प्रयोग गर्नुहोस्", @@ -7135,7 +7135,7 @@ "logout": "लगआउट", "clearLocalDataConfirm": "सबै स्थानीय डेटा खाली गर्ने? यसले तपाईंका प्राथमिकताहरू रिसेट गर्नेछ।", "unknown": "अज्ञात", - "systemActor": "system", + "systemActor": "प्रणाली", "ipAccessControl": "IP पहुँच नियन्त्रण", "ipAccessControlDesc": "विशिष्ट IP ठेगानाहरू रोक्नुहोस् वा अनुमति दिनुहोस्", "ipModeDisabled": "असक्षम", @@ -7143,7 +7143,7 @@ "ipModeWhitelist": "श्वेतसूची", "ipModeWhitelistPriority": "श्वेतसूची प्राथमिकता", "addIpAddress": "IP ठेगाना थप्नुहोस्", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 वा 10.0.*.*", "block": "+ रोक्नुहोस्", "allow": "+ अनुमति दिनुहोस्", "blocked": "रोकिएका ({count})", @@ -7380,7 +7380,7 @@ "customPricingNote": "तपाईं निश्चित मोडेलहरूका लागि पूर्वनिर्धारित मूल्य निर्धारण ओभरराइड गर्न सक्नुहुन्छ। अनुकूलित ओभरराइडहरूले स्वतः पत्ता लागेको मूल्य निर्धारणभन्दा प्राथमिकता पाउँछन्।", "editPricing": "मूल्य निर्धारण सम्पादन गर्नुहोस्", "viewFullDetails": "पूर्ण विवरण हेर्नुहोस्", - "themeCoral": "Coral", + "themeCoral": "प्रवाल", "adaptiveVolumeRouting": "अनुकूलनीय भोल्युम राउटिङ", "adaptiveVolumeRoutingDesc": "पेलोडको मात्रा र थ्रुपुट दबाबका आधारमा कनेक्सनहरू गतिशील रूपमा स्केल गर्नुहोस्।", "lkgpToggleTitle": "पछिल्लो सफल प्रदायक (LKGP)", @@ -7931,14 +7931,14 @@ "resilienceEnableServerSideWait": "सर्भर-साइड प्रतीक्षा सक्षम गर्नुहोस्", "resilienceMaximumRetries": "पुनःप्रयासको अधिकतम सङ्ख्या", "resilienceMaximumWaitPerRetry": "प्रति पुनःप्रयास अधिकतम प्रतीक्षा", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "SkillsMP मार्केटप्लेस", "memorySkillsFailedToSave": "सुरक्षित गर्न असफल", - "memorySkillsApiKey": "API Key", + "memorySkillsApiKey": "API कुञ्जी", "memorySkillsActiveSkillsProvider": "सक्रिय Skills Provider", - "cliproxyapiFallback": "CLIProxyAPI Fallback", + "cliproxyapiFallback": "CLIProxyAPI फलब्याक", "cliproxyapiEnableFallback": "CLIProxyAPI Fallback सक्षम गर्नुहोस्", "cliproxyapiUrl": "CLIProxyAPI URL", - "headroomProxyTitle": "Headroom proxy", + "headroomProxyTitle": "Headroom प्रोक्सी", "headroomProxyDesc": "वैकल्पिक Headroom token-saver proxy को URL। खाली राख्दा HEADROOM_URL वा http://localhost:8787 प्रयोग हुन्छ।", "headroomProxyUrl": "Headroom URL", "headroomProxyUrlHint": "Loopback URL हरू यस पृष्ठबाट सुरु गर्न सकिन्छ। बाह्य URL हरूको जाँच मात्र गरिन्छ।", @@ -8230,9 +8230,9 @@ "pricingAutoSyncDisabled": "स्वचालित सिङ्क असक्षम छ", "pricingAutoSyncEnabled": "स्वचालित सिङ्क सक्षम छ", "modalityBridgeIntro": "टेक्स्ट-मात्र मोडेलहरूमा पुग्नुअघि मल्टिमोडल सामग्रीलाई टेक्स्टमा रूपान्तरण गर्नुहोस्। Vision, Audio र Video ब्रिजहरू उपलब्ध र कन्फिगर गर्न मिल्ने छन्।", - "modalityBridgeVisionTab": "Vision", - "modalityBridgeAudioTab": "Audio", - "modalityBridgeVideoTab": "Video", + "modalityBridgeVisionTab": "दृश्य", + "modalityBridgeAudioTab": "अडियो", + "modalityBridgeVideoTab": "भिडियो", "modalityBridgeSubTabsAria": "मोडालिटी ब्रिज खण्डहरू", "modalityBridgeVisionTitle": "Vision ब्रिज", "modalityBridgeVisionDesc": "भिजन मोडेलमार्फत छविहरू वर्णन गर्नुहोस् र प्रयोगकर्ताले रोजेको टेक्स्ट मोडेलसँग जारी राख्नुहोस्।", @@ -8272,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge सारियो", "modalityBridgeMovedBody": "Vision Bridge का सेटिङहरू अब समर्पित Modality Bridge पृष्ठमा छन्।", "modalityBridgeMovedCta": "Modality Bridge सेटिङहरू खोल्नुहोस्", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "अडियो ब्रिज", "modalityBridgeAudioDesc": "छनोट गरिएको टेक्स्ट मोडेलसँग जारी राख्नुअघि speech-to-text मोडेल प्रयोग गरी अडियो ट्रान्सक्राइब गर्नुहोस्।", "modalityBridgeAudioEnabled": "Audio Bridge सक्षम गर्नुहोस्", "modalityBridgeAudioEnabledDesc": "लक्षित मोडेलले अडियो प्रशोधन गर्न नसक्दा अडियो भागहरूलाई ट्रान्सक्रिप्टले प्रतिस्थापन गर्नुहोस्।", @@ -8284,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge ठीक छ — {model} द्वारा {count} क्लिप ट्रान्सक्राइब गरियो", "modalityBridgeAudioTestNoop": "Audio Bridge सक्रिय भएन (लक्षित मोडेलले अडियो समर्थन गर्न सक्छ, कुनै STT प्रदायक जडान गरिएको छैन, वा Bridge असक्षम गरिएको छ)", "modalityBridgeAudioTestError": "अडियो परीक्षण असफल भयो: {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "भिडियो ब्रिज", "modalityBridgeVideoDesc": "भिडियो फ्रेमहरूको नमुना लिनुहोस्, तिनलाई भिजन मोडेलद्वारा वर्णन गर्नुहोस्, र छनोट गरिएको टेक्स्ट मोडेलसँग जारी राख्नुहोस्।", "modalityBridgeVideoRuntimeReady": "रनटाइम तयार छ", "modalityBridgeVideoRuntimeChecking": "रनटाइम जाँच हुँदै…", @@ -8506,7 +8506,7 @@ "description": "स्पष्ट पङ्क्ति-सङ्ख्या सूचकहरू भएका समानधर्मी JSON एरेहरूको क्षतिरहित तालिकीय सङ्कुचन।" }, "session-dedup": { - "name": "Session Dedup", + "name": "सत्र डिडुप", "description": "पुनःप्राप्त गर्न सकिने सामग्री सूचकहरूसहित विभिन्न टर्नहरूबीच ब्लकहरूको दोहोरोपन हटाउने प्रक्रिया।" }, "ccr": { @@ -8514,7 +8514,7 @@ "description": "दोहोरिएका सन्दर्भ ब्लकहरूका लागि सामग्री-ठेगानायुक्त पुनःप्राप्ति सूचकहरू।" }, "llmlingua": { - "name": "LLMLingua-2 (Semantic Pruning)", + "name": "LLMLingua-2 (अर्थगत छाँटकाँट)", "description": "ONNX-आधारित अर्थगत टोकन वर्गीकरण। गद्य मात्र सङ्कुचित गर्छ; कोड ब्लकहरू र संरक्षित संरचनाहरू सुरक्षित रहन्छन्। मोडेल वा वर्करमा त्रुटि हुँदा सङ्कुचन नगरी अघि बढ्छ।" }, "lite": { @@ -10104,7 +10104,7 @@ "providersCount": "{count} प्रदायकहरू", "providerTypeFree": "निःशुल्क तह", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "API कुञ्जी", "useCaseSingleEndpointTitle": "धेरै प्रदायकहरूका लागि एउटै एन्डपोइन्ट", "useCaseSingleEndpointText": "क्लाइन्टहरूलाई एउटै आधार URL तर्फ निर्देशित गर्नुहोस् र मोडेलको प्रिफिक्सअनुसार रुट गर्नुहोस् (उदाहरणका लागि: gh/, cc/, kr/, openai/)।", "useCaseFallbackTitle": "कम्बोहरूमार्फत फलब्याक र मोडेल परिवर्तन", @@ -10403,7 +10403,7 @@ "flowDiagramCli": "CLI एजेन्ट", "flowDiagramCliDesc": "आफ्नै प्रमाणीकरण/मोडेल प्रयोग गरी प्रशोधन गर्छ", "fingerprintSettingsHint": "CLI Fingerprint मिलान (अनुरोधहरूलाई विशिष्ट CLI उपकरणहरूका रूपमा देखाउने) यहाँ कन्फिगर गर्न सकिन्छ:", - "settingsRoutingLink": "Settings/Routing", + "settingsRoutingLink": "सेटिङहरू/राउटिङ", "openSettings": "सेटिङहरू", "copyRawUrlTitle": "कच्चा URL क्लिपबोर्डमा प्रतिलिपि गर्नुहोस्", "copied": "प्रतिलिपि गरियो!", @@ -10968,9 +10968,9 @@ "strategyLatency": "लेटेन्सी-अनुकूलित", "poolMembersLabel": "पुल सदस्यहरू ({count})", "poolNoMembers": "यस पुलमा अहिलेसम्म कुनै प्रोक्सी छैन।", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{connections, plural, one {# जडान} other {# जडानहरू}} द्वारा प्रयोग गरिएका {exits, plural, one {# निकास} other {# निकासहरू}} · एउटै निकासमा बढीमा {max} · पछिल्लो {hours} घण्टा", + "poolEgressObservationEmpty": "पछिल्लो {hours} घण्टामा कुनै ट्राफिक देखिएन", + "poolEgressObservationHint": "यो समयावधिको प्रोक्सी लगबाट गणना गरिएको हो: यस पूलका सदस्यहरूका लागि देखिएका फरक बहिर्गमन IP हरू र तिनलाई प्रयोग गर्ने OmniRoute जडानहरू। \"एउटै निकासमा\" भन्नाले एकै समयमा नभई उक्त समयावधिभर भन्ने बुझिन्छ। प्रति-IP 429 लकआउटले एउटै प्रदायक परिवारका जडानहरूलाई मात्र अस्थायी रूपमा रोक्छ।", "poolRemove": "हटाउनुहोस्", "poolRemoveFailed": "पुलबाट प्रोक्सी हटाउन असफल भयो", "poolAddLabel": "प्रोक्सी थप्नुहोस्", @@ -11128,7 +11128,7 @@ "jsonMode": "JSON मोड", "jsonModeDescription": "response_format: json_schema अनिवार्य गर्छ", "schemaName": "स्किमाको नाम", - "jsonSchema": "JSON schema", + "jsonSchema": "JSON स्किमा", "jsonSchemaEditor": "JSON schema सम्पादक", "schemaValidated": "स्किमा प्रमाणीकरण भयो", "validateSchema": "स्किमा प्रमाणीकरण गर्नुहोस्", @@ -11434,7 +11434,7 @@ "filterSuccess": "सफल", "filterTimeout": "समय समाप्त", "colStatus": "स्थिति", - "colProxy": "Proxy", + "colProxy": "प्रोक्सी", "colTls": "TLS", "colType": "प्रकार", "colLevel": "स्तर", @@ -12523,7 +12523,7 @@ "storage": { "label": "भण्डारण", "agent": "गतिशील क्याटलग (/api/agent-skills) → GitHub मा SKILL.md", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / स्थानीय)" }, "tagline": { "label": "नारा", @@ -12992,7 +12992,7 @@ "description": "बाइटहरू क्लाइन्टसम्म पुगिसकेपछि पनि स्ट्रिम पुनर्प्राप्तिलाई प्रतिक्रिया पुनः अनुरोध गरेर जोड्न अनुमति दिनुहोस्।" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "मध्य-प्रवाह निरन्तरता टुल-कललाई सुरक्षित बनाउनुहोस्: टुल कल पठाइसकेपछि (अझै प्रगतिमा रहेको वा पहिले नै समाप्त भइसकेको) काटिएको स्ट्रिम कहिल्यै पुनः सुरु नगर्नुहोस्, र पुनः प्रयासको सम्पूर्ण सीमा प्रयोग गर्नुको सट्टा एउटा खाली निरन्तरतापछि रोक्नुहोस्।" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "स्ट्रिमले कुनै उपयोगी फ्रेम पठाउनुअघि नै बन्द भएमा र उही जडानमा सीमित पुनःप्रयास सकिएमा एक पटक सहोदर जडानमा फेलओभर गर्नुहोस्। प्रयोगयोग्य सहोदर जडान नभएमा मूल early-EOF त्रुटि फिर्ता गरिन्छ। बन्द: पुनःप्रयासपछि early-EOF अन्तिम रहन्छ।" @@ -13035,12 +13035,12 @@ "description": "मोडेलले क्लाइन्टले प्रयोग गर्न मिल्ने प्रतिक्रिया नफर्काएसम्म नन-स्ट्रिमिङ सर्भर-स्वामित्वका उपकरण कलहरू जारी राख्नुहोस्।" }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After को स्रोत", + "description": "समग्र 429/503 अनुपलब्ध प्रतिक्रियाहरूमा, पुनः प्रयास गर्ने ठोस भावी समय थाहा नभएमा कृत्रिम 1s पठाउनुको सट्टा Retry-After हटाउनुहोस्, error.retry_after_provenance थप्नुहोस्, र कम्बो ड्रेन पथहरूमा गद्यमा लेखिएका पुनः प्रयास सङ्केतहरू पढ्नुहोस्।" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "सुरक्षित-प्राथमिकता पूर्वाधार रोकावटहरूलाई 502 का रूपमा", + "description": "कोटा-मात्र-वैकल्पिक प्राथमिकता लक्ष्यले कोटासँग सम्बन्धित नभएको प्रमाणित कारणले कम्बो रोक्दा 503 को सट्टा 502 उत्तर दिनुहोस्: खुला प्रदायक सर्किट ब्रेकर वा पूर्वानुमानात्मक विलम्बता स्किप।" } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "कम्बो स्वास्थ्य", "callLogs": "कल लगहरू", "costs": "लागतहरू", - "playground": "Playground", + "playground": "प्लेग्राउन्ड", "nestedCombo": "नेस्टेड कम्बो", "modelTarget": "मोडेल लक्ष्य", "weight": "{value}% भार", @@ -13308,7 +13308,7 @@ "name": "नाम", "description": "विवरण", "scopeLabel": "स्कोप", - "apiKey": "API key", + "apiKey": "API कुञ्जी", "sourceCombo": "स्रोत कम्बो", "connection": "कनेक्सन", "sourceModel": "स्रोत मोडेल वा वाइल्डकार्ड", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "लक्षित मोडेलमा आवश्यक क्षमताहरू (भिजन, उपकरणहरू, संरचित आउटपुट, कन्टेक्स्ट विन्डो) नभएमा डिस्प्याच गर्नुअघि अनुरोधहरू अस्वीकार गर्नुहोस्। यसले कम्बो-लेयरको अनुकूलता फिल्टरलाई बाइपास गर्ने प्रत्यक्ष एकल-प्रदायक अनुरोधहरूलाई सुरक्षित गर्छ।", "featureFlagDisableContextWindowChecksDescription": "प्रत्यक्ष एकल-मोडेल अनुरोधहरूका लागि OmniRoute को स्थानीय कन्टेक्स्ट-विन्डो र अधिकतम-इनपुट-टोकन जाँच छोड्नुहोस्। अपस्ट्रिम प्रदायकहरूले अझै पनि आफ्ना वास्तविक सीमाहरू लागू गर्छन्। प्रम्प्ट कम्प्रेसन र आउटपुट-टोकन सीमाहरू सक्रिय रहन्छन्।", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "खोज तथ्याङ्क र हालैका खोजहरूले अझै सक्रिय जडान भएका प्रदायकहरूलाई मात्र गणना गर्छन् (duckduckgo-free जस्ता कुञ्जीरहित प्रदायकहरू सधैँ गणना हुन्छन्)। बन्द गर्दा प्रदायक ID भएका सुरक्षित राखिएका सबै खोज पङ्क्तिहरू कायम रहन्छन्।", "publicSystem": { "notFound": { "title": "पृष्ठ फेला परेन", diff --git a/src/i18n/messages/nl.json b/src/i18n/messages/nl.json index 05c5611a3b..95eb77fb44 100644 --- a/src/i18n/messages/nl.json +++ b/src/i18n/messages/nl.json @@ -31,7 +31,7 @@ "active": "Actief", "inactive": "Inactief", "noData": "Geen gegevens beschikbaar", - "nothingHere": "Nothing here yet", + "nothingHere": "Nog niets hier", "configure": "Configureer", "manualConfig": "Handmatige configuratie", "manage": "Beheer", @@ -47,7 +47,7 @@ "time": "Tijd", "details": "Details", "created": "Gemaakt", - "lastUsed": "Last Refreshed", + "lastUsed": "Laatst vernieuwd", "loadMore": "Laad meer", "noResults": "Geen resultaten gevonden", "reloadPage": "Pagina opnieuw laden", @@ -70,8 +70,8 @@ "note": "Let op", "free": "Gratis", "skipToContent": "Ga naar de inhoud", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "De server ondervindt problemen. Sommige functies zijn mogelijk niet beschikbaar.", + "maintenanceServerUnreachable": "De server is onbereikbaar. Opnieuw verbinding maken...", "accept": "Accepteer", "accountId": "Account-ID", "alias": "Alias", @@ -98,7 +98,7 @@ "skill": "Vaardigheid", "sortBy": "Sorteer op", "sortOrder": "Sorteervolgorde", - "tab": "Tab", + "tab": "Tabblad", "text": "Tekst", "textarea": "Tekstgebied", "tool": "Gereedschap", @@ -150,24 +150,24 @@ "Failed to reset pricing": "Kan de prijzen niet opnieuw instellen", "apikey": "API-sleutel", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Ga naar Dashboard", + "checkSystemStatus": "Systeemstatus controleren", + "selectModel": "Model selecteren", "addModel": "Model toevoegen", "effortNone": "Geen", "effortLow": "Laag", "effortMedium": "Gemiddeld", "effortHigh": "Hoog", "effortExtraHigh": "Extra hoog", - "effortMax": "Max", + "effortMax": "Max.", "effortUltra": "Ultra", "reasoningEffort": "Redeneerinspanning", "wireApi": "Wire API", "modelAliases": "Modelaliassen", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Combinaties", + "noModelsFound": "Geen modellen gevonden", + "clear": "Wissen", + "done": "Gereed", "selectAll": "Alles selecteren", "unselectAll": "Selectie opheffen", "visibleModels": "zichtbaar", @@ -184,519 +184,519 @@ "selectAllProviders": "Controleer alle providers", "clearProviderSelection": "Deselecteer providers", "providersSelectedCount": "{count} providers gecontroleerd", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Er is een fout opgetreden", + "comboDeleted": "Combinatie verwijderd", + "hide": "Verbergen", + "creating": "Bezig met maken", + "comboCreated": "Combinatie gemaakt", + "swapFormats": "Indelingen omwisselen", + "daysAgo": "Dagen geleden", + "retries": "Nieuwe pogingen", + "errorDuringRestore": "Fout tijdens het herstellen", + "eventsAppearHint": "Hint voor weergegeven gebeurtenissen", + "noLockouts": "Geen blokkeringen", + "webSearchDesc": "Beschrijving van zoeken op internet", + "audioProvidersHeading": "Kop voor audioproviders", "cloudAgentProviders": "Aanbieders van cloudagenten", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Minuten geleden", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", + "liveAutoRefreshing": "Live automatisch vernieuwen", + "webSearch": "Zoeken op internet", + "anthropicPrefixPlaceholder": "Tijdelijke aanduiding voor Anthropic-voorvoegsel", + "addModelToCombo": "Model aan combinatie toevoegen", + "failedToLoad": "Laden mislukt", + "categoryMedia": "Categorie Media", + "enableCloud": "Cloud inschakelen", + "expirationBannerExpiringSoon": "Vervalt binnenkort-banner", + "retry": "Opnieuw proberen", "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", + "errorCount": "Aantal fouten", + "backupReasonManual": "Reden voor handmatige back-up", + "safeSearchModerate": "Safe Search: gemiddeld", + "activeLimiters": "Actieve limieten", + "a2aCardTitle": "A2A-kaarttitel", + "cloudWorkerUnreachable": "Cloud Worker onbereikbaar", + "testFailed": "Test mislukt", + "compatibleBaseUrlHint": "Hint voor compatibele basis-URL", + "usageTracking": "Gebruiksregistratie", + "disableCloudTitle": "Titel voor cloud uitschakelen", + "noConnections": "Geen verbindingen", + "providerHealth": "Providerstatus", + "confirmDbImport": "Database-import bevestigen", + "notAvailableSymbol": "Symbool voor niet beschikbaar", + "backupsAvailable": "Back-ups beschikbaar", + "providerAuto": "Provider automatisch selecteren", + "newProviderNamePlaceholder": "Tijdelijke aanduiding voor nieuwe providernaam", + "a2aQuickStartStep2": "A2A-snelstart stap 2", + "ok": "Oké", + "available": "Beschikbaar", + "noBackupYet": "Nog geen back-up", + "more": "Meer", + "noCompatibleYet": "Nog geen compatibele providers", + "multiProvider": "Meerdere providers", + "repairEnvHint": "Hint voor omgevingsherstel", + "disablingCloud": "Cloud wordt uitgeschakeld", + "testBench": "Testomgeving", + "valid": "Geldig", + "cloudBenefitShare": "Voordeel van delen via de cloud", + "mcpCardTitle": "MCP-kaarttitel", + "disableConfirm": "Uitschakelen bevestigen", "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", + "expirationBannerExpiredDesc": "Beschrijving van banner voor verlopen item", + "saveComboDefaults": "Standaardinstellingen voor combinatie opslaan", + "cloudConnectedVerified": "Cloudverbinding geverifieerd", + "uptime": "Beschikbaarheid", + "compatibleProdPlaceholder": "Tijdelijke aanduiding voor compatibele productieomgeving", + "fallbackChainsTitle": "Titel van fallbackketens", + "oauthLabel": "OAuth-label", + "a2aCardDescription": "Beschrijving van A2A-kaart", + "okShort": "Kort oké", + "maintenance": "Onderhoud", + "formatConverter": "Formaatconverter", + "zedImportNetworkError": "Netwerkfout bij Zed-import", + "apiKeyLabel": "API-sleutellabel", + "noModelsForProvider": "Geen modellen voor provider", + "mcpCardDescription": "Beschrijving van MCP-kaart", + "apiTypeLabel": "Label voor API-type", + "configuredProvidersLabel": "Label voor geconfigureerde providers", + "maxRetriesLabel": "Label voor maximaal aantal pogingen", + "title": "Titel", + "output": "Uitvoer", + "prefixHint": "Voorvoegselhint", + "skipWizard": "Wizard overslaan", + "failedCount": "Aantal mislukt", + "confirmDbImportDesc": "Beschrijving van bevestiging database-import", + "entries": "Items", + "until": "Tot", + "disableCombo": "Combinatie uitschakelen", + "liveMonitorDescriptionPrefix": "Voorvoegsel voor beschrijving van livemonitor", + "runningCount": "Aantal actief", + "noActiveConnectionsInGroup": "Geen actieve verbindingen in groep", + "savedSuccessfully": "Succesvol opgeslagen", + "systemStorage": "Systeemopslag", + "videoDesc": "Videobeschrijving", + "maxResults": "Maximaal aantal resultaten", + "timeRangeMonth": "Tijdsbereik: maand", + "testSummary": "Testsamenvatting", + "failedSetPassword": "Instellen van wachtwoord mislukt", "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "restore": "Herstellen", + "disableWarning": "Waarschuwing voor uitschakelen", + "moderationsDesc": "Beschrijving van moderaties", + "providerHealthStatusAria": "ARIA-label voor providerstatus", + "modelNamePlaceholder": "Tijdelijke aanduiding voor modelnaam", + "mcpQuickStartStep2": "MCP-snelstart stap 2", + "quickStart": "Snelstart", + "fullExportFailedWithError": "Volledige export mislukt met fout", + "loadingBackups": "Back-ups laden", + "anthropicBaseUrlPlaceholder": "Tijdelijke aanduiding voor Anthropic-basis-URL", + "description": "Beschrijving", + "noProviderFound": "Geen provider gevonden", + "auto": "Automatisch", + "protocolsDescription": "Beschrijving van protocollen", + "cloudSessionNote": "Opmerking over cloudsessie", + "advancedSettings": "Geavanceerde instellingen", + "defaultStrategy": "Standaardstrategie", + "purgeExpiredLogs": "Verlopen logboeken wissen", + "justNow": "Zojuist", + "providerTestFailed": "Providertest mislukt", + "openaiBaseUrlPlaceholder": "Tijdelijke aanduiding voor OpenAI-basis-URL", + "image": "Afbeelding", + "failedCreateChain": "Kan keten niet maken", + "importDatabase": "Database importeren", + "allDataLocal": "Alle gegevens lokaal", + "sectionTitle": "Sectietitel", + "failedToggle": "Omschakelen mislukt", + "editCombo": "Combinatie bewerken", + "testResults": "Testresultaten", + "searchQuery": "Zoekopdracht", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", + "duplicate": "Dupliceren", + "createCombo": "Combinatie maken", + "searchTypeWeb": "Zoektype web", + "addChain": "Keten toevoegen", + "prefixLabel": "Voorvoegsellabel", + "listModelsDesc": "Beschrijving van modellenlijst", + "databaseSize": "Databasegrootte", + "chainCreated": "Keten gemaakt", + "providerTestTimeout": "Time-out bij providertest", + "routingStrategy": "Routeringsstrategie", + "translateAction": "Vertaalactie", + "exportFailed": "Export mislukt", + "connectedVerificationPending": "Verbonden, verificatie in behandeling", + "a2aQuickStartTitle": "Titel voor A2A-snelstart", + "couldNotTest": "Kan niet testen", + "testAllCompatible": "Alle compatibele testen", + "anthropicCompatibleName": "Naam van Anthropic-compatibele provider", + "disabling": "Uitschakelen", + "failedEnable": "Inschakelen mislukt", + "categoryUtility": "Categorie Hulpprogramma", + "customUrlOptional": "Aangepaste URL (optioneel)", + "localProviders": "Lokale providers", + "comboNamePlaceholder": "Placeholder voor combinatienaam", + "memoryRss": "Geheugen-RSS", + "disableProvider": "Provider uitschakelen", + "welcomeDesc": "Welkomstbeschrijving", + "nameLabel": "Naamlabel", + "allOperational": "Alles operationeel", + "backupNow": "Nu een back-up maken", + "providerMaxRetriesAria": "ARIA-label voor maximaal aantal pogingen van provider", + "textToSpeechDesc": "Beschrijving van tekst-naar-spraak", + "machineId": "Machine-ID", + "globalProxy": "Globale proxy", + "hitsMisses": "Treffers en missers", + "testDesc": "Testbeschrijving", + "chatDesc": "Chatbeschrijving", + "importSuccess": "Importeren geslaagd", "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "a2aQuickStartStep1": "Stap 1 van A2A-snelstart", + "importFailed": "Importeren mislukt", + "inputPlaceholder": "Placeholder voor invoer", + "providerModelsTitle": "Titel van providermodellen", + "lastBackup": "Laatste back-up", + "yourEndpoint": "Uw eindpunt", + "autoDisableThresholdDesc": "Beschrijving van drempel voor automatisch uitschakelen", + "rerankDesc": "Beschrijving van opnieuw rangschikken", + "modelsPathPlaceholder": "Placeholder voor modellenpad", + "noCombosYet": "Nog geen combinaties", + "connectedVerificationPendingWithError": "Verbonden, verificatie in afwachting met fout", + "comboDefaultsGuideHint1": "Tip 1 voor de handleiding voor standaardinstellingen van combinaties", + "enableCloudTitle": "Titel voor inschakelen van cloud", + "configuredProvidersHint": "Tip voor geconfigureerde providers", + "paused": "Gepauzeerd", + "llmProviders": "LLM-providers", + "enableCombo": "Combinatie inschakelen", + "removeProviderOverrideAria": "ARIA-label voor verwijderen van provideroverschrijving", + "nodeVersion": "Node-versie", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Exporteren mislukt met fout", + "proxyConfigured": "Proxy geconfigureerd", + "concurrencyPerModel": "Gelijktijdigheid per model", + "protocolTasksLabel": "Label voor protocoltaken", + "oauthProviders": "Oauth-providers", + "lockedCount": "Aantal vergrendeld", + "deleteChainConfirm": "Verwijderen van keten bevestigen", + "recentTranslations": "Recente vertalingen", + "zedImportButton": "Zed-importknop", + "responsesDesc": "Beschrijving van antwoorden", + "testedCount": "Aantal getest", + "providersCommaSeparatedPlaceholder": "Tijdelijke aanduiding voor door komma's gescheiden providers", + "signatureDefaults": "Standaardwaarden voor ondertekening", + "errorCreating": "Fout bij aanmaken", + "timeRangeYear": "Tijdsbereik: jaar", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Cloud succesvol uitgeschakeld", + "deleteConfirm": "Verwijderen bevestigen", + "check": "Controleren", + "safeSearch": "Veilig zoeken", + "protocolLastActivity": "Laatste protocolactiviteit", + "openMcpDashboard": "Mcp-dashboard openen", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Label voor chatpad", + "retryDelay": "Vertraging voor opnieuw proberen", + "errorUpdating": "Fout bij bijwerken", + "ideCliIntegrations": "Ide-Cli-integraties", + "imageGeneration": "Afbeeldingen genereren", + "apiKeyRequired": "Api-sleutel vereist", + "resetAllTitle": "Titel voor alles resetten", + "connectionError": "Verbindingsfout", + "modelName": "Modelnaam", + "apiKeyForCheck": "Api-sleutel voor controle", + "cloudRequestTimeout": "Time-out voor cloudaanvraag", + "showConfiguredOnly": "Alleen geconfigureerde tonen", "showFreeOnly": "Alleen gratis", "addFirstProvider": "Voeg uw eerste provider toe", "addFirstProviderDesc": "Sluit een AI-provider aan om verzoeken via OmniRoute te routeren. U kunt gratis providers, API-sleutels of OAuth-accounts gebruiken.", "learnMore": "Meer informatie", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Domeinen opnemen", + "promptCache": "Promptcache", + "cloudConnected": "Cloud verbonden", + "deleteChain": "Keten verwijderen", + "chatPathPlaceholder": "Tijdelijke aanduiding voor chatpad", + "databasePath": "Databasepad", + "usingLocalServer": "Lokale server gebruiken", + "globalComboConfig": "Algemene combinatieconfiguratie", + "backupFailed": "Back-up mislukt", + "tabProtocols": "Tabblad Protocollen", + "continue": "Doorgaan", + "categorySearch": "Categorie zoeken", + "rateLimitStatus": "Status van snelheidslimiet", + "repairEnvSuccess": "Omgeving hersteld", + "nameRequired": "Naam vereist", + "country": "Land", + "trackMetricsDesc": "Beschrijving van metriekregistratie", + "durationSecondsShort": "Duur in seconden (kort)", + "formatConverterDescription": "Beschrijving van formaatconverter", + "cloudBenefitAccess": "Toegang tot cloudvoordelen", + "maxRetries": "Maximaal aantal pogingen", + "queueTimeout": "Time-out van wachtrij", "queueDepth": "Wachtrijdiepte", - "addProvider": "Add Provider", + "addProvider": "Provider toevoegen", "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "totalTranslations": "Totaal aantal vertalingen", + "protocolActiveStreamsLabel": "Label voor actieve protocolstreams", + "repairEnv": "Omgeving herstellen", + "modelsCount": "Aantal modellen", + "viewBackups": "Back-ups bekijken", + "responsesApi": "Responses API", + "copyComboName": "Naam van combinatie kopiëren", + "failures": "Mislukkingen", + "failedUpdate": "Bijwerken mislukt", + "imageDesc": "Beschrijving van afbeelding", + "failedCreate": "Aanmaken mislukt", + "remainingOfLimit": "Resterend van limiet", + "protocolsTitle": "Titel van protocollen", + "expirationBannerExpiringSoonDesc": "Beschrijving van banner voor bijna verlopen items", + "source": "Bron", + "failed": "Mislukt", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", + "mcpQuickStartStep1": "MCP-snelstart stap 1", + "runTest": "Test uitvoeren", + "loadingFallbackChains": "Fallback-ketens laden", + "healthy": "In orde", + "version": "Versie", + "saveBlockWeighted": "Gewogen blok opslaan", + "zedImportNone": "Geen Zed-import", + "noBackupsYet": "Nog geen back-ups", + "noGlobalProxy": "Geen globale proxy", + "noModels": "Geen modellen", + "stickyLimit": "Vaste limiet", + "passedCount": "Aantal geslaagd", + "zedImportFailed": "Zed-import mislukt", + "saving": "Opslaan", + "testAll": "Alles testen", + "globalProxyDesc": "Beschrijving globale proxy", + "latencyP99": "Latentie P99", + "connectingToCloud": "Verbinding maken met de cloud", + "responses": "Antwoorden", + "errorDeleting": "Fout bij verwijderen", + "openaiPrefixPlaceholder": "OpenAI-voorvoegselplaceholder", + "enterPassword": "Voer wachtwoord in", + "openA2aDashboard": "A2A-dashboard openen", + "enableProvider": "Provider inschakelen", + "modeTest": "Testmodus", + "failedDeleteChain": "Keten verwijderen mislukt", + "providerDesc": "Beschrijving provider", + "templateLoadHint": "Hint voor laden van sjabloon", + "lastFailure": "Laatste fout", + "moveDown": "Omlaag verplaatsen", + "providerLabel": "Providerlabel", + "clearCacheFailed": "Cache wissen mislukt", + "imagesGenerations": "Afbeeldingsgeneraties", + "repairEnvWorking": "Omgevingsherstel wordt uitgevoerd", + "millisecondsShort": "Milliseconden (kort)", + "globalLabel": "Globaal label", + "failuresPlural": "Mislukkingen (meervoud)", + "completionsLegacyDesc": "Beschrijving verouderde aanvullingen", + "searchProviders": "Providers zoeken", + "chatPathHint": "Hint voor chatpad", + "defaultStrategyDesc": "Beschrijving standaardstrategie", + "latencyP95": "Latentie P95", + "textToSpeech": "Tekst-naar-spraak", + "searchType": "Zoektype", + "messages": "Berichten", + "aggregatorsGateways": "Aggregators en gateways", + "comboStrategyAria": "Combo-strategie Aria", + "input": "Invoer", + "testingConnection": "Verbinding testen", + "excludeDomains": "Domeinen uitsluiten", + "webCookieProviders": "Webcookieproviders", + "allTestsPassed": "Alle tests geslaagd", + "openaiCompatibleName": "OpenAI-compatibele naam", + "warningCostOptimizedPartialPricing": "Waarschuwing: kostengeoptimaliseerde gedeeltelijke prijsstelling", + "comboDefaultsGuideTitle": "Titel van de handleiding voor standaardinstellingen van combo's", + "hoursAgo": "Uur geleden", + "notAvailable": "Niet beschikbaar", + "skipAndContinue": "Overslaan en doorgaan", + "moderations": "Moderaties", + "proxyConfig": "Proxyconfiguratie", + "upstreamProxyProviders": "Upstream-proxyproviders", + "exportAll": "Alles exporteren", + "queuedCount": "Aantal in wachtrij", + "resetAll": "Alles resetten", + "noTranslations": "Geen vertalingen", + "avgLatency": "Gemiddelde latentie", + "throttleStatus": "Beperkingsstatus", + "backupRetentionDesc": "Beschrijving van back-upretentie", + "noCBData": "Geen CB-gegevens", + "chainDeleted": "Keten verwijderd", + "timeLeft": "Resterende tijd", + "expirationBannerExpired": "Verloopbanner: verlopen", + "language": "Taal", + "invalidFileType": "Ongeldig bestandstype", + "monitoredProviders": "Bewaakte providers", + "errors": "Fouten", "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", + "chatCompletions": "Chatvoltooiingen", + "exampleTemplatesHint": "Hint voor voorbeeldsjablonen", + "retryDelayLabel": "Label voor vertraging bij opnieuw proberen", + "audioTranscription": "Audiotranscriptie", + "fallbackChainsDesc": "Beschrijving van fallback-ketens", + "exampleTemplates": "Voorbeeldsjablonen", + "connectionsCount": "Aantal verbindingen", + "modelsPathLabel": "Label voor modellenpad", + "activeProvidersHint": "Hint voor actieve providers", + "activeLockouts": "Actieve vergrendelingen", + "invalid": "Ongeldig", + "skipPassword": "Wachtwoord overslaan", + "moveUp": "Omhoog verplaatsen", + "timeRange": "Tijdsbereik", + "stickyLimitDesc": "Beschrijving van vaste limiet", + "cloudBenefitEdge": "Cloudvoordeel aan de edge", + "custom": "Aangepast", + "verifying": "Bezig met verifiëren", + "baseUrlLabel": "Label voor basis-URL", + "setPassword": "Wachtwoord instellen", + "safeSearchStrict": "Strikt veilig zoeken", + "noChangesSinceBackup": "Geen wijzigingen sinds back-up", + "modelsPathHint": "Hint voor modellenpad", + "audioTranscriptions": "Audiotranscripties", + "testCombo": "Combinatie testen", + "mcpQuickStartTitle": "Titel voor snelle start met MCP", + "comboUpdated": "Combinatie bijgewerkt", + "weighted": "Gewogen", "providers": "Providers", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Beschrijving van geen fallback-ketens", + "yesImport": "Ja, importeren", + "lockoutsAutoRefreshHint": "Hint voor automatisch vernieuwen van vergrendelingen", + "tabApis": "Tabblad API's", + "sectionDescription": "Sectiebeschrijving", + "filter": "Filteren", + "purgeLogsFailed": "Wissen van logboeken mislukt", + "latency": "Latentie", + "testAllOAuth": "Alle OAuth-verbindingen testen", + "mcpQuickStartStep3": "Stap 3 van snelle start met MCP", + "repairEnvFailed": "Herstellen van omgeving mislukt", + "zedImportHint": "Hint voor importeren uit Zed", + "modelsAcrossEndpoints": "Modellen over verschillende eindpunten", + "autoDisableBannedAccounts": "Geblokkeerde accounts automatisch uitschakelen", + "securityDesc": "Beveiligingsbeschrijving", + "listModels": "Modellen weergeven", + "backupRestore": "Back-up en herstel", + "target": "Doel", + "zedImportSuccess": "Importeren uit Zed geslaagd", + "lastHeaderUpdate": "Laatste headerupdate", + "categoryCore": "Categorie Kern", + "noFallbackChains": "Geen fallbackketens", + "noSearchProviders": "Geen zoekproviders", + "autoBalance": "Automatisch balanceren", + "noModelsYet": "Nog geen modellen", + "signatureFamily": "Handtekeningfamilie", + "externalApiCalls": "Externe API-aanroepen", + "providerOverridesDesc": "Beschrijving van provideroverschrijvingen", + "signatureTool": "Handtekeningtool", + "connectionFailed": "Verbinding mislukt", + "activeLimitersPlural": "Actieve begrenzers meervoud", + "doneDesc": "Beschrijving voltooid", + "down": "Niet beschikbaar", + "noDataYet": "Nog geen gegevens", + "activeProviders": "Actieve providers", + "nameInvalid": "Ongeldige naam", + "skip": "Overslaan", + "createChain": "Keten maken", + "audioSpeech": "Audi spraak", + "cacheCleared": "Cache gewist", + "searchTypeNews": "Zoektype Nieuws", + "durationMillisecondsShort": "Duur in milliseconden, kort", + "addOpenAICompatible": "Open Ai-compatibele provider toevoegen", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "In wachtrij", + "domainPlaceholder": "Domeinplaceholder", + "durationMinutesShort": "Duur in minuten, kort", + "verifyingConnection": "Verbinding verifiëren", + "imageProviders": "Afbeeldingsproviders", + "protocolToolsLabel": "Label voor protocoltools", + "queryPlaceholder": "Zoekopdrachtplaceholder", + "videoGeneration": "Videogeneratie", + "timeRangeWeek": "Tijdsbereik Week", + "limitExhausted": "Limiet bereikt", + "failedDisable": "Uitschakelen mislukt", + "inMemoryNote": "Opmerking over geheugenopslag", + "compatibleHint": "Compatibiliteitstip", + "errorShort": "Korte foutmelding", + "advancedHint": "Geavanceerde tip", + "restoreFailed": "Herstellen mislukt", + "searchProvidersHeading": "Koptekst zoekproviders", + "comboName": "Combinatienaam", + "autoDisableDescription": "Beschrijving van automatisch uitschakelen", + "embeddingsDesc": "Beschrijving van embeddings", + "operational": "Operationeel", + "testAllApiKey": "Alle API-sleutels testen", + "backupCreated": "Back-up gemaakt", + "errorDuringImport": "Fout tijdens importeren", + "comboDefaultsGuideHint2": "Hint 2 voor de handleiding voor standaardinstellingen van combinaties", + "connecting": "Verbinding maken", + "fillModelAndProviders": "Vul het model en de providers in", + "syncing": "Synchroniseren", + "resetConfirm": "Opnieuw instellen bevestigen", + "trackMetrics": "Statistieken bijhouden", + "successful": "Geslaagd", + "recovering": "Herstellen", + "autoDisableThreshold": "Drempelwaarde voor automatisch uitschakelen", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Gegevens synchroniseren", + "cloudBenefitPorts": "Poorten voor cloudvoordelen", + "compatibleProviders": "Compatibele providers", "freeTierProviders": "Gratis niveau-aanbieders", "freeTierLabel": "Gratis niveau beschikbaar", "freeTierProvidersDesc": "Providers met gratis niveaus: sommige vereisen een API-sleutelaanmelding, andere hebben helemaal geen inloggegevens nodig.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", + "clearCache": "Cache wissen", + "reqs": "Vereisten", + "addAnthropicCompatible": "Anthropic-compatibele provider toevoegen", + "apiKeyProviders": "Providers van API-sleutels", + "tabsAria": "ARIA voor tabbladen", + "resetting": "Opnieuw instellen", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Reden voor back-up vóór herstel", + "disableCloud": "Cloud uitschakelen", + "newProviderNameAria": "ARIA voor naam van nieuwe provider", + "passwordsMismatch": "Wachtwoorden komen niet overeen", + "a2aQuickStartStep3": "Stap 3 van de A2A-snelstartgids", + "liveMonitorDescriptionSuffix": "Achtervoegsel voor beschrijving van livemonitor", + "failedAddProvider": "Provider toevoegen mislukt", + "addAtLeastOneProvider": "Voeg ten minste één provider toe", + "reasonSeparator": "Redenscheidingsteken", + "zedImporting": "Zed importeren", + "confirmPasswordPlaceholder": "Bevestig wachtwoord", + "whatYouGet": "Wat u krijgt", + "signatureSession": "Handtekeningsessie", + "errorCountNoCode": "Aantal fouten zonder code", + "testing": "Testen", + "providersCommaSeparated": "Providers, door komma's gescheiden", + "exportDatabase": "Database exporteren", + "hitRate": "Trefferpercentage", + "completionsLegacy": "Voltooiingen (verouderd)", + "removeModel": "Model verwijderen", + "timeRangeDay": "Tijdsbereik: dag", + "cloudRequestFailed": "Cloudaanvraag mislukt", + "updatedAt": "Bijgewerkt op", + "monitoredProvidersHint": "Hint voor bewaakte providers", + "connectionSuccessful": "Verbinding geslaagd", + "latencyP50": "Latentie P50", + "logsDeleted": "Logboeken verwijderd", + "chatTester": "Chattester", + "safeSearchOff": "Veilig zoeken uit", + "nameHint": "Naamhint", + "debugToggle": "Debugschakelaar", "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "issuesLabel": "Label voor problemen", + "optionAny": "Optie: alle", + "maxNestingDepth": "Maximale nestingsdiepte", + "rerank": "Herrangschikken", + "checking": "Controleren", + "getStarted": "Aan de slag", + "restoreSuccess": "Herstel geslaagd", + "issuesDetected": "Problemen gedetecteerd", + "signatureCache": "Handtekeningcache", + "modelLockouts": "Modelblokkeringen", + "usingCloudProxy": "Cloudproxy wordt gebruikt", + "loadingHealth": "Status laden", + "providerOverrides": "Provideroverschrijvingen", + "audioTranscriptionDesc": "Beschrijving van audiotranscriptie", + "learnedFromHeaders": "Afgeleid uit headers", + "totalRequests": "Totaal aantal aanvragen", + "cloudUnstableNote": "Opmerking over instabiele cloud", "gamificationAdmin": "Gamification-beheerder", "monitorAnomaliesAndHealth": "Bewaak afwijkingen en systeemgezondheid", "flaggedAnomalies": "Gemarkeerde afwijkingen", @@ -704,7 +704,7 @@ "apiKey": "API-sleutel", "xpLastHour": "XP (1 uur)", "zScore": "Z-score", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Verdacht", "tokensCommunityServers": "Gemeenschapsservers", "tokensServerNamePlaceholder": "Servernaam", "tokensApiKeyPlaceholder": "API-sleutel", @@ -795,50 +795,50 @@ "batchFilePurpose": { "batch": "Batchinvoer", "batch-output": "Batchuitvoer", - "fine-tune": "Fine-tuning", + "fine-tune": "Finetuning", "assistants": "Assistenten" }, "batchPageLoadingMore": "Meer laden…", "recommended": "Aanbevolen", "understand": "Ik begrijp het", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", + "batchConceptTitle": "Batchverwerking", + "batchConceptSubtitle": "Verwerk duizenden aanvragen asynchroon tegen ~50% van de kosten (venster van 24 uur). Ideaal voor evaluaties, classificatie en embeddings.", + "batchConceptHowItWorks": "Hoe het werkt", + "batchConceptBenefit50pct": "50% korting op invoer- en uitvoertokens", + "batchConceptAsync24h": "Asynchroon met een voltooiingsvenster van 24 uur", + "batchConceptUseCases": "Ideaal voor bulkclassificatie, evaluaties en embeddings", + "batchHeaderSubtitle": "Voer veel aanvragen uit als één taak", + "batchStep1": "1 · JSONL uploaden", + "batchStep1Desc": "Aanvragen toevoegen", + "batchStep2": "2 · Batch maken", + "batchStep2Desc": "Taak uitvoeren", + "batchStep3": "3 · Resultaten ophalen", + "batchStep3Desc": "Uitvoer downloaden", + "filesConceptTitle": "Batchbestanden", + "filesConceptSubtitle": "JSONL-bestanden die door batches worden gebruikt: invoeraanvragen, resultaten en fouten.", + "filesConceptInput": "Invoer — je JSONL met één aanvraag per regel", + "filesConceptOutput": "Uitvoer — resultaten van voltooide aanvragen", + "filesConceptError": "Fouten — mislukte aanvragen", + "filesConceptRetention": "Bewaartermijn: standaard 30 dagen (29 dagen bij Anthropic)", + "wizardTitle": "Nieuwe batch", + "wizardClose": "Sluiten", + "wizardNext": "Volgende", + "wizardBack": "Terug", + "wizardCancel": "Annuleren", + "wizardCreate": "Batch maken", + "wizardCreating": "Bezig met maken…", + "wizardStep1Destination": "Bestemming", + "wizardStep2Input": "Invoer", + "wizardStep3Validate": "Valideren", + "wizardStep4Cost": "Kosten en maken", "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", + "wizardEndpointLabel": "Eindpunt", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (we converteren dit)", + "wizardDropOrPick": "Sleep een bestand hierheen of klik om er een te kiezen", + "wizardCsvMappingTitle": "CSV-kolommen → aanvraagvelden toewijzen", + "wizardCsvMappingAddField": "Veld toevoegen", "wizardCsvNoColumns": "Geen kolommen gedetecteerd in CSV-header.", "wizardCsvIgnoreColumn": "— negeren —", "wizardCsvCustomIdMapped": "custom_id toegewezen", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} rijen geparseerd", "wizardCsvRowsSkipped": "{count} rijen overgeslagen", "wizardCsvRowError": "Rij {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Alle regels zijn geldig", "wizardValidating": "Valideren…", "wizardValidationParseFailed": "Validatie mislukt — kon inhoud niet parseren.", "wizardValidationSummary": "{lines} regels · {ids} unieke custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Dubbele custom_ids gedetecteerd:", "wizardValidationFirstErrors": "Fouten (eerste {count}):", "wizardValidationLine": "Regel {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", + "wizardValidationErrors": "Validatiefouten", + "wizardValidationPreview": "Voorbeeld (eerste 5 verzoeken)", + "wizardValidationSamplingNote": "Het bestand is groot — gevalideerd via steekproeven (eerste 1000 + laatste 100 regels). De volledige validatie wordt server-side uitgevoerd.", + "wizardCostSync": "Kosten bij synchronisatie", + "wizardCostBatch": "Batchkosten (-50%)", + "wizardCostSavings": "Besparing", + "wizardCostEstimatedNotice": "Geschatte kosten — de werkelijke facturering kan afwijken.", + "wizardErrorUpload": "Uploaden van bestand mislukt. Probeer het opnieuw.", + "wizardErrorCreate": "Aanmaken van batch mislukt. Probeer het opnieuw.", + "wizardEmptyProviders": "Koppel een provider met batchondersteuning (OpenAI, Anthropic of Gemini) om een batch aan te maken.", + "uploadModalTitle": "Batchbestand uploaden", + "uploadModalDropOrPick": "Sleep een .jsonl-bestand hierheen of klik om er een te selecteren", + "uploadModalUpload": "Uploaden", + "uploadModalCancel": "Annuleren", + "uploadModalError": "Uploaden mislukt. Probeer het opnieuw.", + "uploadModalSuccess": "Geüpload", + "uploadModalSizeLimit": "Max. 512 MB", + "batchListNewButton": "Nieuwe batch", + "batchListAutoRefresh": "Automatisch vernieuwen om de 30 s", + "batchListCostColumn": "Kosten", + "batchActionCancel": "Annuleren", + "batchActionDownloadOutput": "Uitvoer downloaden", + "batchActionDownloadErrors": "Fouten downloaden", + "batchActionRetry": "Mislukte opnieuw proberen", + "batchActionRetryConfirm": "{n} mislukte verzoek(en) opnieuw proberen? De uiteindelijke kosten zijn afhankelijk van het werkelijke aantal verbruikte tokens.", + "expirationBadgeCritical": "Kritiek", + "expirationBadgeWarning": "Binnenkort", + "expirationBadgeNormal": "In behandeling", + "expirationBadgeExpired": "Verlopen", + "filesListUploadButton": "Uploaden", + "filesListUsedByColumn": "Gebruikt door", + "filesListUsedByNone": "Geen", + "filesListUsedByRoleInput": "invoer", + "filesListUsedByRoleOutput": "uitvoer", + "filesListUsedByRoleError": "fout", + "filesListSizeColumn": "Grootte", + "batchListProgressPartial": "(gedeeltelijk)", "batchListProviderColumn": "Provider", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", + "batchListProviderOther": "Overig", "batchListTitle": "Batches", "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", + "batchListRemovingCompleted": "Verwijderen…", + "batchListRemoveCompleted": "Verwijderen voltooid", "batchListTableStatus": "Status", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Eindpunt", "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableProgress": "Voortgang", + "batchListTableCreated": "Aangemaakt", + "batchListTableExpires": "Verloopt", + "batchListLoading": "Laden…", + "batchListEmpty": "Geen batches gevonden", + "batchListValidating": "Valideren…", + "batchStatusAll": "Alle statussen", + "batchStatusInProgress": "Wordt uitgevoerd", + "batchStatusValidating": "Valideren", + "batchStatusFinalizing": "Afronden", + "batchStatusCompleted": "Voltooid", + "batchStatusFailed": "Mislukt", + "batchStatusCancelled": "Geannuleerd", + "batchStatusCancelling": "Annuleren", + "batchStatusExpired": "Verlopen", + "batchStatusCompletedWithFailures": "voltooid met fouten", + "batchStatusInProgressWithFailures": "wordt uitgevoerd (met fouten)", + "batchStatusFinalizingWithFailures": "wordt afgerond (met fouten)", + "batchStatusCancelledWithFailures": "geannuleerd met fouten", + "batchStatusExpiredWithFailures": "verlopen (gedeeltelijk)", + "wizardCostEstimating": "Kosten schatten…", + "wizardCostRequests": "Verzoeken", + "wizardCostInputTok": "invoertokens", + "wizardCostOutputTok": "uitvoertokens", + "wizardCostWindow": "Venster", + "wizardDestinationSelectProvider": "Selecteer een provider…", + "wizardDestinationSelectModel": "Selecteer een model…", + "wizardDestinationConnectProvider": "Koppel een provider", + "batchListBatchCreated": "Batch {id} aangemaakt — lijst vernieuwen…", + "batchListBatchCreatedDismiss": "Sluiten", + "batchListRefreshing": "Vernieuwen…", + "batchListRefresh": "Vernieuwen", + "uploadFileModalRemove": "Verwijderen", + "uploadFileModalUploading": "Uploaden…", + "wizardInputReading": "Bestand lezen…", + "wizardInputReady": "Gereed", + "wizardInputLargeFileLabel": "Groot bestand — validatie via steekproef", + "wizardInputCsvJsonlReady": "JSONL gegenereerd — klaar voor validatie.", + "wizardInputLargeFileWarning": "Groot bestand gedetecteerd — validatie wordt uitgevoerd via een steekproef (eerste 5 MB + laatste 100 KB). Volledige validatie vindt server-side plaats.", + "wizardCostWindow24h": "Voltooiingsvenster van 24 uur", + "wizardValidationFieldsOk": "vereiste velden geldig", + "filesListDelete": "Verwijderen", + "filesListDownload": "Downloaden", + "batchDetailActionCancel": "Batch annuleren", + "batchDetailActionRetry": "Mislukte verzoeken opnieuw proberen", + "batchDetailCancelling": "Annuleren…", + "batchDetailRetrying": "Nieuwe poging voorbereiden…", + "batchDetailCancelConfirm": "Deze batch annuleren? Lopende verzoeken worden gestopt.", + "batchActionCancelError": "Kan batch niet annuleren. Probeer het opnieuw.", + "batchActionRetryError": "Kan mislukte verzoeken niet opnieuw proberen. Probeer het opnieuw.", + "batchConceptRetentionNote": "Resultaat- en foutbestanden worden 30 dagen bewaard (Anthropic: 29 dagen)", "batchFilesSizeColumn": "Grootte", "toggleNoAuthProvider": "Schakel no-auth provider in/uit", "loadingModels": "Modellen laden…", @@ -961,7 +961,7 @@ "degraded": "Afgebroken", "zeroConfigBannerTitle": "Uitvoeren in zero-config-modus", "zeroConfigBannerBody": "OmniRoute genereert automatisch veilige versleutelingssleutels bij de eerste lancering. Ze worden opgeslagen in {dataDir}. Er is geen actie vereist — uw gegevens zijn versleuteld en veilig. Om aangepaste sleutels te gebruiken, voeg JWT_SECRET en STORAGE_ENCRYPTION_KEY toe aan dat bestand.", - "batchRelativeTimeIn": "in {value}", + "batchRelativeTimeIn": "over {value}", "batchRelativeTimeAgo": "{value} geleden", "batchDetailsTitle": "Batchdetails", "batchProgress": "Voortgang", @@ -978,7 +978,7 @@ "batchTimelineCancelling": "Annuleren", "batchTimelineCancelled": "Geannuleerd", "batchTokenUsage": "Tokengebruik", - "batchMetadata": "Metadata", + "batchMetadata": "Metagegevens", "batchFileContents": "Bestandsinhoud", "batchFileUsedByCount": "Gebruikt door {count, plural, one {# batch} other {# batches}}", "batchFilePreview": "Voorbeeld", @@ -988,14 +988,14 @@ "disabled": "Uitgeschakeld", "featureFlagOmnirouteEmergencyFallbackDescription": "Routeer verzoeken met uitgeput budget naar de gratis nood-fallbackprovider/-model.", "featureFlagArenaEloSyncEnabledDescription": "Schakel periodieke ELO-synchronisatie van het Arena AI-leaderboard in voor modelintelligentieranglijsten.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Genereer en voeg gesprekssamenvattingen toe wanneer bij combinatieroutering van model wordt gewisseld. Schakel dit uit om modelwisselingen onafhankelijk te behandelen en overdrachtsverzoeken op de achtergrond te voorkomen voor alle bestaande en toekomstige combinaties.", "featureFlagExposeCcDiscoveryAliasesDescription": "Adverteer claude/<provider>/<model> spiegel-id's op /v1/models zodat Claude Code gateway modelontdekking niet-Claude modellen vermeldt. Waarschuwing: dubbele catalogusvermeldingen voor alle klanten wanneer wereldwijd ingeschakeld.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Hoofdschakelaar voor de no-think/<provider>/<model>-gatewayaliassen. Aan (standaard): /v1/models vermeldt een variant zonder denkproces voor elk geschikt Claude-model met denkfunctionaliteit, en een no-think/-id dat met een verzoek wordt meegestuurd, wordt omgezet naar het echte model waarbij redeneren wordt onderdrukt. Uit: er worden geen varianten vermeld en een no-think/-id wordt behandeld als elke andere onbekende model-id. De opt-in/opt-out per model via ModelSpec.noThinkingAlias blijft van toepassing zolang dit is ingeschakeld.", "featureFlagChatVirtualLanesEnabledDescription": "Schakel adaptieve virtuele toegangsbanen per tenant in voor provider-dispatch (#9654): een piek van de ene tenant geeft de andere niet langer een 503. De omgevingsvariabele OMNIROUTE_CHAT_VIRTUAL_LANES wint het van deze dashboard-instelling; wijzigingen gaan in bij een serverherstart.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Providerpagina's in het dashboard: toon de badge Gratis alleen bij signalen die de provider respecteert — de heuristiek voor weergavenamen, niet-booleaanse gratis-velden en :free-achtervoegsels bij geregistreerde providers zonder een gedocumenteerde gratis laag worden niet meer gebruikt. Uit behoudt de historische badgeregel.", + "featureFlagProxySkipRecentlyFailedDescription": "Proxypools en de rotatie per account van opencode zorgen ervoor dat een proxy die zojuist is mislukt (geweigerde TCP-probe of een 429 die via de proxy is ontvangen) gedurende een periode per proces niet opnieuw wordt aangeboden. Deze periode verdubbelt bij elke herhaling, tot een maximum. Er wordt geen proxystatus opgeslagen; wanneer elke kandidaat terzijde is geschoven, blijft de keuze ongewijzigd. Standaard uitgeschakeld: de selectievolgorde is exact gelijk aan de gewone rotatie.", + "featureFlagProxyPoolEgressObservationDescription": "Toon onder een proxypool in het dashboard hoeveel waargenomen uitgaande IP-adressen de leden ervan in de afgelopen 24 uur hebben bediend, hoeveel verbindingen deze hebben gebruikt en hoeveel verbindingen maximaal achter één IP zijn waargenomen. Alleen-lezen, berekend op basis van het proxylogboek en nooit gebruikt voor routering. Standaard uitgeschakeld: de pooleditor blijft ongewijzigd en de observatieroute antwoordt met null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Laat bij de proxygezondheidscontrole een probe die door het doel is geweigerd (401/403/429: de proxy heeft doorgestuurd, maar de bestemming heeft dit uitgaande IP-adres geweigerd) de reeks opeenvolgende fouten van de proxy resetten, net als een geslaagde probe. Standaard uitgeschakeld: een weigering blijft neutraal en behoudt de reeks. Een 5xx blijft in beide gevallen onbeslist, en een weigering verwijdert, deactiveert of heractiveert een proxy nooit.", "sidebar": { "home": "Thuis", "dashboard": "Dashboard", @@ -1012,11 +1012,11 @@ "settings": "Instellingen", "translator": "Vertaler", "playground": "Speeltuin", - "searchTools": "Search Tools", + "searchTools": "Zoektools", "agents": "Agenten", "cloudAgents": "Cloudagenten", - "memory": "Memory", - "skills": "Skills", + "memory": "Geheugen", + "skills": "Vaardigheden", "omniSkills": "OmniSkills", "agentSkills": "Agentvaardigheden", "chaosConfig": "Chaosmodus", @@ -1055,59 +1055,59 @@ "serverDisconnectedMsg": "De proxyserver is gestopt of wordt opnieuw opgestart.", "expandSidebar": "Vouw zijbalk uit", "collapseSidebar": "Zijbalk samenvouwen", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", + "themes": "Thema's", + "presetColors": "Populaire kleuren", + "createTheme": "Thema maken", + "chooseColor": "Kies één kleur", + "themeCoral": "Koraal", + "themeBlue": "Blauw", + "themeRed": "Rood", + "themeGreen": "Groen", "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themeOrange": "Oranje", + "themeCyan": "Cyaan", "cliToolsShort": "Gereedschap", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", + "batch": "Batchtaken", + "themeSystem": "Themasysteem", + "whitelabelingDesc": "Beschrijving van whitelabeling", + "switchThemes": "Van thema wisselen", + "themeAccentDesc": "Beschrijving van thematische accentkleur", + "uploadFavicon": "Favicon uploaden", + "themeDark": "Donker thema", + "customLogoDesc": "Beschrijving van aangepast logo", + "sidebarVisibilityToggle": "Zichtbaarheid van zijbalk in-/uitschakelen", + "themeAccent": "Thematische accentkleur", + "resetFavicon": "Favicon herstellen", "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "darkMode": "Donkere modus", + "uploadLogo": "Logo uploaden", + "themeLight": "Licht thema", + "appName": "Appnaam", + "appNameDesc": "Beschrijving van appnaam", + "resetLogo": "Logo herstellen", + "customFavicon": "Aangepast favicon", + "hideHealthLogs": "Statuslogs verbergen", + "customLogo": "Aangepast logo", + "appearance": "Weergave", + "themeSelectionAria": "ARIA-label voor themaselectie", + "themeCreate": "Thema maken", + "customFaviconDesc": "Beschrijving van aangepast favicon", + "logoPreview": "Logovoorbeeld", + "themeCustom": "Aangepast thema", + "hideHealthLogsDesc": "Beschrijving voor het verbergen van statuslogs", + "faviconPreview": "Faviconvoorbeeld", + "changelog": "Wijzigingslogboek", + "contextSection": "Context en cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Engine-combinaties", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Compressie-instellingen", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", @@ -1128,27 +1128,27 @@ "compressionStudioSubtitle": "Live engine-cascade", "compressionExclusionsSubtitle": "Per-model/eindpunt omzeiling", "chaosConfigSubtitle": "Multi-model parallelle uitvoering", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", + "routingSection": "Routering", + "protocolsSection": "Protocollen", + "agentsAiSection": "Agents en AI", + "cacheContextSection": "Cache en context", + "analyticsSection": "Analyses", + "costsSection": "Kosten", "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "auditSecuritySection": "Audit en beveiliging", + "devtoolsSection": "Ontwikkelaarstools", + "configurationSection": "Configuratie", + "aiFeaturesSection": "AI-functies", "mcp": "MCP", "a2a": "A2A", "plugins": "Plug-ins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", + "apiEndpoints": "API-eindpunten", + "batchFiles": "Bestanden", + "analyticsEvals": "Evaluaties", + "analyticsSearch": "Zoeken", + "analyticsUtilization": "Gebruik", + "analyticsComboHealth": "Combostatus", + "analyticsCompression": "Compressie", "costsBudget": "Budget", "costsFreeTiers": "Free-tier-budget", "costsFreeTiersSubtitle": "Maandelijkse toewijzingen van gratis tokens", @@ -1156,135 +1156,135 @@ "freeProviderRankingsSubtitle": "Beste gratis providers gerangschikt op model-ELO-scores", "radar": "Radar Catalogus", "radarSubtitle": "Community-verrijkte gratis modelcatalogus", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", + "costsQuotaShare": "Quotumdeling", + "costsPricing": "Prijzen", + "logsProxy": "Proxylogboeken", "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "logsActivity": "Activiteit", + "auditMcp": "MCP-audit", "auditA2a": "A2A-audit", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Weergave", + "settingsAi": "AI-instellingen", + "settingsSecurity": "Beveiliging", "settingsAccessTokens": "Toegangstokens", "settingsFeatureFlags": "Functievlaggen", "settingsCache": "Cache", "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsRouting": "Routering", + "settingsResilience": "Veerkracht", "modelLockout": "Modelvergrendeling", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Geavanceerd", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", + "quotaTracker": "Providerquotum", + "providerQuota": "Providerquotum", "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "consoleLogs": "Consolelogboeken", + "logsTimeline": "Tijdlijn", "logsTimelineSubtitle": "Visueel verzoek tijdlijn", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Gesprekken", + "conversationsSubtitle": "Agentgestuurde gesprekken met meerdere beurten", + "globalRouting": "Globale routering", + "mitmProxy": "MITM-proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Agentfuncties", + "otherFeaturesSection": "Overige functies", + "compressionContextGroup": "Contextcompressie", + "gamificationGroup": "Gamificatie", + "toolsGroup": "Hulpmiddelen", + "integrationsGroup": "Integraties", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", + "costsParametersGroup": "Kostenparameters", "auditGroup": "Audit", "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", + "homeSubtitle": "Dashboardoverzicht", + "providersSubtitle": "AI-providers beheren", + "quotaTrackerSubtitle": "Gebruikslimieten bijhouden", + "providerQuotaSubtitle": "Gebruikslimieten van providers bijhouden", + "runtimeSubtitle": "Realtime veerkracht en sessies", + "contextCombosSubtitle": "Compressie-engines combineren", + "cliToolsSubtitle": "CLI-runtimes configureren", + "agentsSubtitle": "Lokale agents beheren", + "cloudAgentsSubtitle": "Cloudgebaseerde agents beheren", + "apiEndpointsSubtitle": "Aangepaste eindpunten beschikbaar stellen", + "proxySubtitle": "HTTP-proxy-instellingen", + "mitmProxySubtitle": "MITM-interceptie", + "oneProxySubtitle": "Openbare proxygateway", + "leaderboard": "Ranglijst", + "profile": "Profiel", "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "gamificationAdmin": "Gamificatiebeheer", + "leaderboardSubtitle": "Ranglijsten en prestaties", + "profileSubtitle": "Account en voorkeuren", + "tokensSubtitle": "Tokengebruik en budgetten", + "gamificationAdminSubtitle": "Anomaliebewaking en fraudepreventie", + "usageSubtitle": "Verkeers- en gebruiksstatistieken", + "analyticsComboHealthSubtitle": "Betrouwbaarheid van combinatiedoelen", + "analyticsUtilizationSubtitle": "Providergebruik", + "costsSubtitle": "Kostenverdeling", + "cacheSubtitle": "Cachetrefferpercentages", + "analyticsCompressionSubtitle": "Statistieken over tokenbesparingen", + "analyticsSearchSubtitle": "Analyse van zoektools", + "analyticsEvalsSubtitle": "Resultaten van evaluatiesuites", "providerStats": "Providerstatistieken", "providerStatsSubtitle": "Latentie- en prestatiemetrieken", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Applicatielogs", + "logsProxySubtitle": "Proxyverkeerslogs", + "consoleLogsSubtitle": "Console-uitvoer", + "logsActivitySubtitle": "Gebruikersactiviteitenlog", + "healthSubtitle": "Systeemstatuscontrole", + "costsPricingSubtitle": "Prijsregels per model", + "costsBudgetSubtitle": "Budgetlimieten", + "costsQuotaShareSubtitle": "Providerquota delen tussen sleutels", + "auditLogSubtitle": "Autorisatie-audit", + "auditMcpSubtitle": "MCP-serveraudit", + "auditA2aSubtitle": "A2A-protocolaudit", + "translatorSubtitle": "Formaatconversie", + "playgroundSubtitle": "Prompts live testen", + "searchToolsSubtitle": "Register voor zoektools", + "memorySubtitle": "Permanent agentgeheugen", + "omniSkillsSubtitle": "Register voor sandboxvaardigheden", + "agentSkillsSubtitle": "Register voor A2A-vaardigheden", + "mcpSubtitle": "MCP-serverbeheer", + "a2aSubtitle": "A2A-protocolserver", "pluginsSubtitle": "Plug-inmarktplaats & -installaties", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Gecachte mediabestanden", + "batchFilesSubtitle": "Bestanden voor batchinvoer en -uitvoer", + "settingsSubtitle": "Alle instellingen", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Thema en lay-out", + "settingsAiSubtitle": "Standaardinstellingen voor AI-gedrag", + "globalRoutingSubtitle": "Algemene routeringsregels", + "settingsResilienceSubtitle": "Nieuwe pogingen en circuitbreakers", + "settingsAdvancedSubtitle": "Opties voor ervaren gebruikers", + "settingsSecuritySubtitle": "Authenticatie en versleuteling", "settingsAccessTokensSubtitle": "Scoped CLI-tokens voor externe modus", "settingsFeatureFlagsSubtitle": "Schakel systeemmogelijkheden in", "settingsCacheSubtitle": "Modelcatalogus en responscaching", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Zijbalk", + "settingsSidebarSubtitle": "Zijbalkindeling aanpassen", "settingsAuthzSubtitle": "Route-inventaris en bypassbeleid", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Documentatie", + "issuesSubtitle": "Een bug melden", + "changelogSubtitle": "Releaseopmerkingen", "costsQuotaPlans": "Abonnementen & quota", "costsQuotaPlansSubtitle": "Configureer abonnementen per provider", "activity": "Activiteit", "activitySubtitle": "Overzichtelijke feed van recente gebeurtenissen", - "logsGroup": "Logs", + "logsGroup": "Logboeken", "systemGroup": "Systeem", "costsOverview": "Overzicht", "costsOverviewSubtitle": "Geconsolideerde kostenanalyse", - "agentBridge": "Agent Bridge", + "agentBridge": "Agentbrug", "agentBridgeSubtitle": "IDE-agentverkeer onderscheppen", "trafficInspector": "Traffic Inspector", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Inspecteer aanvraag- en antwoordverkeer van je apps", + "trafficInspectorPurpose": "Bekijk precies wat je applicatie naar AI-providers verzendt en van hen ontvangt. Werkt met elke OpenAI-compatibele client.", "cliCode": "CLI Code", "cliCodeSubtitle": "Codetools die naar OmniRoute verwijzen", - "cliAgents": "CLI Agents", + "cliAgents": "CLI-agents", "cliAgentsSubtitle": "Autonome CLI-agents", - "acpAgents": "ACP Agents", + "acpAgents": "ACP-agents", "acpAgentsSubtitle": "CLI's gestart door OmniRoute", "skipToContent": "Naar inhoud springen", "mainNavigation": "Hoofdnavigatie", @@ -1345,7 +1345,7 @@ "refresh": "Vernieuwen", "loading": "Webhooks laden...", "never": "Nooit", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {geen fouten} one {# fout} other {# fouten}}", "testWebhook": "Test verzenden", "testSuccess": "Testwebhook succesvol verzonden.", "testFailed": "Testwebhook mislukt.", @@ -1461,7 +1461,7 @@ "eventTypePlaceholder": "Filter op actie of gebeurtenistype", "severity": "Ernst", "allSeverities": "Alle ernst", - "info": "Info", + "info": "Informatie", "warning": "Waarschuwing", "critical": "Kritisch", "sourceIp": "Bron-IP", @@ -1517,7 +1517,7 @@ "a2aArtifacts": "Artefacten", "a2aNoTasks": "Geen A2A-taken geregistreerd.", "a2aLoadingTasks": "A2A-taken laden...", - "actor": "Actor", + "actor": "Uitvoerder", "actorPlaceholder": "Filteren op actor", "eventTypes": { "apiKey.activate": "API-sleutel Geactiveerd", @@ -1560,15 +1560,15 @@ "mcpMetricCalls24h": "Oproepen (24u)", "mcpMetricSuccessRate": "Succespercentage", "mcpMetricAvgDuration": "Gem. duur", - "mcpMetricTopTool": "Top tool" + "mcpMetricTopTool": "Meestgebruikte tool" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", + "title": "Thema's", + "description": "Kies een vooraf ingesteld thema of maak je eigen thema met één kleur", + "presetColors": "Populaire kleuren", + "customTheme": "Aangepast thema", + "customThemeDesc": "Klik op Thema maken en kies één kleur", + "createTheme": "Thema maken", "activePreset": "Actief thema" }, "header": { @@ -1591,63 +1591,63 @@ "cliToolsDescription": "Configureer CLI-tools", "home": "Thuis", "homeDescription": "Welkom bij OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Eindpunten", + "endpointDescription": "Beheer proxy-endpoints, MCP-, A2A- en API-endpoints", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Beheer en tools voor Model Context Protocol-servers", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Agent-to-Agent-protocoltaken en observeerbaarheid", "settings": "Instellingen", "settingsDescription": "Beheer uw voorkeuren", "openaiCompatible": "OpenAI-compatibel", "anthropicCompatible": "Antropisch compatibel", "media": "Media", "mediaDescription": "Genereer afbeeldingen, video's en muziek", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "themes": "Thema's", + "themesDescription": "Kies een kleurthema voor het volledige dashboardpaneel", + "costsDescription": "Houd uitgaven bij, analyseer trends en beheer je AI-budget voor alle providers", + "cacheDescription": "Bewaak de efficiëntie van de promptcache van providers en lokaal semantisch hergebruik van antwoorden.", + "limitsDescription": "Configureer snelheidslimieten en quota per API-sleutel en provider", + "runtimeDescription": "Live observatie van de runtime — stroomonderbrekers, afkoelperioden, modelblokkeringen, sessies en quotawaarschuwingen", + "apiManagerDescription": "Beheer API-sleutels en toegangsbeheer voor je OmniRoute-instance", + "batchDescription": "Verwerk grote hoeveelheden verzoeken asynchroon met gebundelde API-aanroepen", + "contextCavemanDescription": "Regelgebaseerde berichtcompressie, taalpakketten, analyses en instellingen voor de uitvoermodus.", + "contextRtkDescription": "Opdrachtherkennende compressie voor tooluitvoer, terminallogboeken en buildresultaten.", + "contextCombosDescription": "Definieer hoe engines worden gecombineerd voor verschillende routeringsscenario's.", + "changelogDescription": "Blijf op de hoogte van de nieuwste platformfuncties en aankondigingen.", + "agentsDescription": "Beheer en configureer tools voor AI-agenten: Codex, Devin, Jules en aangepaste agenten", + "cloudAgentsDescription": "Orkestreer cloudgebaseerde AI-agenten met live taaktracking en goedkeuring van plannen", + "memoryDescription": "Permanent gespreksgeheugen met semantisch zoeken en FTS5-indexering van volledige tekst", + "skillsDescription": "Installeer en beheer sandboxvaardigheden voor geautomatiseerde uitvoering van prompts en tools", + "agentSkillsDescription": "Catalogus met vaardigheden voor agenten, met één klik de URL kopiëren voor integratie met AI-clients", + "translatorDescription": "Vertaal en test prompts tussen API-indelingen: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Test prompts interactief met live antwoorden van providers en inspectie van de indeling", + "searchToolsDescription": "Zoekanalyses, uitsplitsing per provider, cachetrefferpercentages en kostentracking", + "logsDescription": "Realtime verzoeklogboeken, fouttraceringen en inspectie van streaminggebeurtenissen", + "auditDescription": "Compliance-audittrail van API-sleutelgebruik, MCP-toolaanroepen en beleidsgebeurtenissen", + "webhooksDescription": "Configureer webhook-eindpunten om realtime gebeurtenismeldingen te ontvangen", + "healthDescription": "Overzicht van de systeemstatus: providers, stroomonderbrekers, snelheidslimieten en database", + "proxyDescription": "Configureer upstream-proxyinstellingen voor uitgaande providerverbindingen", + "apiEndpointsDescription": "Beheer aangepaste configuraties van API-eindpunten en routeringsoverschrijvingen", + "batchFilesDescription": "Bekijk en beheer uitvoerbestanden en resultaten van batchtaken", + "analyticsEvalsDescription": "Resultaten van modelevaluaties en prestatiebenchmarks", + "analyticsSearchDescription": "Analyses van zoekopdrachten, cachetrefferpercentages en kostentracking", + "analyticsUtilizationDescription": "Gebruiksstatistieken van providers en capaciteitsplanning", + "analyticsComboHealthDescription": "Realtime status en prestaties van configuraties voor combinatieroutering", + "analyticsCompressionDescription": "Analyses van contextcompressie en tokenbesparingen", + "costsBudgetDescription": "Budgetlimieten en uitgavenwaarschuwingen per API-sleutel en provider", + "costsPricingDescription": "Aangepaste prijsconfiguratie voor berekeningen van tokenkosten", + "logsProxyDescription": "Logboeken van upstream-proxyverzoeken en verkeersinspectie", + "logsConsoleDescription": "Console-uitvoer van de applicatie en foutopsporingslogboeken", + "logsActivityDescription": "Audittrail van gebruikersacties en systeemgebeurtenissen", + "auditMcpDescription": "Audittrail van MCP-toolaanroepen en complianceregistraties", "auditA2a": "A2A-audit", "auditA2aDescription": "A2A-audittraject voor taakuitvoering, statusovergangen en records voor het aanroepen van vaardigheden", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Thema, huisstijl en visuele aanpassingen", + "settingsAiDescription": "AI-gedrag, denkbudgetten, beeldverwerking en geheugeninstellingen", "settingsCacheDescription": "TTL voor modelcatalogus cache-items", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Instellingen voor authenticatie, autorisatie en toegangsbeheer", "featureFlags": "Functievlaggen", "featureFlagsDescription": "Besturingssysteemmogelijkheden en experimentele functies", "featureFlagsActive": "{count} actief", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Er zijn geen vlaggen die overeenkomen met uw zoekopdracht", "featureFlagsSaved": "Vlag bijgewerkt", "featureFlagsError": "Kan de vlag niet updaten", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Routeringsregels, modelaliassen, standaardinstellingen voor combinaties en degradatie-instellingen", + "settingsResilienceDescription": "Configuratie voor circuitonderbreking, nieuwe pogingen en terugvalopties", + "settingsAdvancedDescription": "Geavanceerde payloadregels, aanvraaglimieten en proxy-API-instellingen", + "mitmProxyDescription": "Configureer MITM-proxy-instellingen voor verkeersinspectie en foutopsporing", + "oneProxyDescription": "Configureer 1Proxy-instellingen voor geavanceerde proxyketens", "omniSkillsDescription": "Installeer en beheer sandbox-skills voor geautomatiseerde prompt- en tooluitvoering" }, "cloudSyncStatus": { @@ -1692,7 +1692,7 @@ "breadcrumbs": { "ariaLabel": "Kruimelpad", "dashboard": "Dashboard", - "providers": "Providers", + "providers": "Aanbieders", "combos": "Combinaties", "settings": "Instellingen", "general": "Algemeen", @@ -1703,12 +1703,12 @@ "advanced": "Geavanceerd", "accessTokens": "Toegangstokens", "featureFlags": "Feature flags", - "logs": "Logs", + "logs": "Logboeken", "auditLog": "Auditlog", "console": "Console", "logger": "Logger", "translator": "Vertaler", - "playground": "Playground", + "playground": "Testomgeving", "add": "Toevoegen", "edit": "Bewerken", "apiKeys": "API-sleutels", @@ -1716,17 +1716,17 @@ "cliCode": "CLI-code", "cliAgents": "CLI-agents", "acpAgents": "ACP-agents", - "endpoint": "Endpoint", + "endpoint": "Eindpunt", "apiManager": "API-manager", "context": "Context", "compression": "Compressie", - "services": "Services", - "analytics": "Analytics", + "services": "Diensten", + "analytics": "Analyses", "costs": "Kosten", "health": "Gezondheid", "runtime": "Runtime", "webhooks": "Webhooks", - "home": "Home", + "home": "Start", "activity": "Activiteit", "agentSkills": "AgentSkills", "comboHealth": "Combo-gezondheid", @@ -1741,7 +1741,7 @@ "files": "Bestanden", "media": "Media", "cache": "Cache", - "changelog": "Changelog", + "changelog": "Wijzigingslogboek", "chaos": "Chaos", "cloudAgents": "Cloud-agents", "live": "Live", @@ -1762,23 +1762,23 @@ "discovery": "Ontdekking", "freeProviderRankings": "Ranglijst gratis providers", "radar": "Radar", - "setup": "Setup", + "setup": "Configuratie", "freeTiers": "Gratis niveaus", - "gamification": "Gamification", - "leaderboard": "Leaderboard", + "gamification": "Gamificatie", + "leaderboard": "Ranglijst", "limits": "Limieten", "profile": "Profiel", - "plugins": "Plugins", + "plugins": "Plug-ins", "providerStats": "Providerstatistieken", "new": "Nieuw", - "quota": "Quota", + "quota": "Quotum", "relay": "Relay", "searchTools": "Zoektools", "security": "Beveiliging", "sidebar": "Zijbalk", "tokens": "Tokens", - "tools": "Tools", - "agentBridge": "Agent Bridge", + "tools": "Hulpmiddelen", + "agentBridge": "Agentbrug", "trafficInspector": "Verkeersinspectie", "usage": "Gebruik", "orchestration": "Orkestratie" @@ -1812,7 +1812,7 @@ "reportIssue": "Probleem melden", "activeError": "{active} actief · {errors} fout", "topologyLegendActive": "Actief", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Recent", "topologyLegendError": "Fout", "oauthLabel": "OAuth", "apiKeyLabel": "API-sleutel", @@ -1826,18 +1826,18 @@ "updateStarted": "Update gestart...", "reloadingPageAutomatically": "Pagina automatisch herladen...", "providerTopology": "Provider-topologie", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", - "downloadDmg": "Download DMG (macOS)", + "recentRequests": "Recente verzoeken", + "recentRequestsEmpty": "Nog geen verzoeken.", + "recentRequestsModel": "Model", + "recentRequestsTokens": "In/uit", + "recentRequestsWhen": "Wanneer", + "downloadDmg": "DMG downloaden (macOS)", "downloadDmgDescription": "Er is een nieuwe versie van de OmniRoute desktopapp beschikbaar. Download en installeer alstublieft de macOS DMG-installatieprogramma om bij te werken (huidig: v{version}).", - "downloadExe": "Download EXE (Windows)", + "downloadExe": "EXE downloaden (Windows)", "downloadExeDescription": "Er is een nieuwe versie van de OmniRoute desktopapp beschikbaar. Download en installeer alstublieft de Windows EXE-installatieprogramma om bij te werken (huidig: v{version}).", - "downloadAppImage": "Download AppImage (Linux)", + "downloadAppImage": "AppImage downloaden (Linux)", "downloadAppImageDescription": "Er is een nieuwe versie van de OmniRoute desktop-app beschikbaar. Download alstublieft het Linux AppImage-pakket om bij te werken (huidig: v{version}).", - "downloadUpdate": "Download Update", + "downloadUpdate": "Update downloaden", "downloadUpdateDescription": "Er is een nieuwe versie van de OmniRoute desktop-app beschikbaar. Download alstublieft het respectieve app-formaat voor uw systeem om bij te werken (huidig: v{version}).", "updateQueued": "Geplande update naar v{version}.", "updateDockerRebuilding": "Docker-image wordt op de achtergrond opnieuw opgebouwd.", @@ -1888,15 +1888,15 @@ "releaseNotes": "Release-opmerkingen", "readMore": "Lees Meer", "noAuthLabel": "Geen Auth", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Maak je klaar om te routeren", + "readinessTitle": "Verstuur je eerste verzoek", + "readinessSubtitle": "Vier kleine stappen. OmniRoute controleert gaandeweg of alles gereed is.", + "readinessStep1": "Verbind een provider", + "readinessStep2": "Configureer eindpuntauthenticatie", + "readinessStep3": "Kopieer je eindpunt", + "readinessStep4": "Verstuur een testverzoek", + "readinessContinue": "Doorgaan met configureren", + "readinessDismiss": "Voorlopig sluiten" }, "analytics": { "title": "Analyses", @@ -1912,8 +1912,8 @@ "diversityHigherExplanation": "Hogere waarden betekenen dat het verkeer over meerdere providers is verspreid.", "diversityNoData": "Geen recente gebruiksgegevens beschikbaar.", "chartRequests": "Verzoeken", - "chartInput": "Input", - "chartOutput": "Output", + "chartInput": "Invoer", + "chartOutput": "Uitvoer", "chartTotal": "Totaal", "chartCost": "Kosten", "chartShare": "Aandeel", @@ -1942,7 +1942,7 @@ "unknownApiKey": "Onbekende API-key", "chartModelBreakdown": "Specificatie per model", "chartModel": "Model", - "chartProvider": "Provider", + "chartProvider": "Aanbieder", "chartProviderBreakdown": "Verdeling per provider", "chartDate": "Datum", "chartRequestsByProviderDate": "Verzoeken per provider en datum", @@ -1958,16 +1958,16 @@ "rangeLast14Days": "Afgelopen 14 dagen", "rangeThisMonth": "Deze maand", "rangeQuickSelect": "Snelle selectie", - "rangeStart": "Start", + "rangeStart": "Begin", "rangeEnd": "Einde", "rangeCancel": "Annuleren", "rangeApply": "Toepassen", "rangeErrorInvalid": "Start moet voor einde liggen", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1 d", + "period7D": "7 d", + "period30D": "30 d", + "period90D": "90 d", + "periodYTD": "JTD", "periodAll": "Alles", "totalTokens": "Totaal aantal tokens", "inputTokens": "Input-tokens", @@ -1975,7 +1975,7 @@ "estCost": "Gesch. kosten", "infraTitle": "Infrastructuur", "infraAccounts": "Accounts", - "infraProviders": "Providers", + "infraProviders": "Aanbieders", "infraApiKeys": "API-sleutels", "infraModels": "Modellen", "perfTitle": "Prestaties", @@ -1993,7 +1993,7 @@ "overviewDescription": "Houd toezicht op uw API-gebruikspatronen, tokenverbruik, kosten en activiteitstrends voor alle providers en modellen.", "evalsDescription": "Voer evaluatiesuites uit om uw LLM-eindpunten te testen en te valideren. Vergelijk de modelkwaliteit, detecteer regressies en benchmark de latentie.", "overview": "Overzicht", - "evals": "Evals", + "evals": "Evaluaties", "search": "Zoeken", "utilization": "Benutting", "routeTrace": "Route-tracering", @@ -2005,8 +2005,8 @@ "modelStatusError": "Fout", "comboHealth": "Combo-gezondheid", "comboHealthDescription": "Quota op combo-niveau, gebruiksdistributie en prestatiegegevens", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Compressieanalyse", + "compressionAnalyticsDescription": "Compressieanalyse — tokenbesparingen, uitsplitsing per modus en providerstatistieken.", "autoRoutingTotalAutoRequests": "Totaal aantal automatische verzoeken", "autoRoutingAvgSelectionScore": "Gemiddelde selectiescore", "autoRoutingExplorationRate": "Verkenningssnelheid", @@ -2042,11 +2042,11 @@ "comboHealthTraffic": "verkeer", "comboHealthProjectedQuota": "Geprojecteerd quotum", "comboHealthPricingCoverage": "Prijsdekking", - "comboHealthAutopilotTitle": "Combo Health Autopilot", + "comboHealthAutopilotTitle": "Autopilot voor combinatiegezondheid", "comboHealthAutopilotDescription": "Geprioriteerde aanbevelingen op basis van combo-gezondheid, prognoses, quota en providergezondheid.", "comboHealthIssues": "Problemen", "comboHealthActionable": "{count} actiegericht", - "comboHealthDown": "Down", + "comboHealthDown": "Uitgevallen", "comboHealthDegraded": "Verslechterd", "comboHealthHealthy": "Gezond", "comboHealthNoActiveIssues": "Geen actieve combo-gezondheidsproblemen gedetecteerd voor het geselecteerde bereik.", @@ -2062,24 +2062,24 @@ "latencyInv": "Latentie", "taskFit": "Task-fit", "stability": "Stabiliteit", - "tierPriority": "Tier", + "tierPriority": "Niveau", "tierAffinity": "Tier-fit", "specificityMatch": "Specificiteit", "contextAffinity": "Context", "resetWindowAffinity": "Reset-venster" }, - "comboHealthQuotaValue": "Quota {value}", + "comboHealthQuotaValue": "Quotum {value}", "comboHealthLatencyValue": "Latentie {value}ms", "comboHealthIssueCount": "Problemen {count}", "comboHealthNoInspectableTargets": "Geen inspecteerbare doelen voor deze combo.", "comboHealthAutopilotState": { - "down": "Down", + "down": "Uitgevallen", "degraded": "Aandacht vereist", "healthy": "Gezond" }, "comboHealthModelProviderCount": "{models} modellen over {providers} providers", "comboHealthGiniCoefficient": "Gini-coëfficiënt", - "comboHealthRequestCount": "{count} requests", + "comboHealthRequestCount": "{count} verzoeken", "comboHealthQuotaHealthDescription": "Laagste resterende quota over providers met korte trendsignalen.", "comboHealthRemainingQuota": "Resterend quota {value}", "comboHealthTrend": { @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "Prestaties", "comboHealthPerformanceDescription": "Betrouwbaarheid en doorvoer voor gerouteerd comboverkeer.", "comboHealthExecutionTargetsDescription": "Runtime-statistieken op stapniveau en quota-zichtbaarheid voor gestructureerde combodoelen.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} verz.", "comboHealthQuotaScope": "Quota-scope: {scope}", "comboHealthTrendValue": "Trend: {trend}", "comboHealthFetchFailed": "Ophalen van combo-gezondheidsgegevens mislukt", @@ -2111,7 +2111,7 @@ "compressionAnalyticsAvgDuration": "Gem. duur", "compressionAnalyticsReceipts": "Ontvangsten", "compressionAnalyticsFallbacks": "Terugval", - "compressionAnalyticsPromptTokens": "Prompt tokens", + "compressionAnalyticsPromptTokens": "Prompttokens", "compressionAnalyticsCompletionTokens": "Voltooiingstokens", "compressionAnalyticsTotalTokens": "Totaal tokens", "compressionAnalyticsCacheTokens": "Cachetokens", @@ -2188,11 +2188,11 @@ "routeRuntimeScoreNow": "Runtime-score nu", "routeWouldSelectNow": "Zou nu selecteren", "routeNoRecomputeCandidates": "Er kan geen rangschikking van combo-kandidaten worden herberekend voor deze aanvraag.", - "runtime": "Runtime", + "runtime": "Uitvoeringstijd", "routeTopNow": "Top nu", "routeFetchLogsFailed": "Ophalen van aanvraaglogs mislukt", "routeExplainFailed": "Toelichten van route mislukt", - "direct": "direct", + "direct": "rechtstreeks", "routeUnableToLoad": "Kan routetoelichting niet laden", "routeNoRequestLogs": "Geen aanvraaglogs beschikbaar", "routeNoRequestLogsDescription": "Stuur eerst verkeer via OmniRoute. Routetoelichtingen worden gegenereerd op basis van opgeslagen gestructureerde call-logs.", @@ -2203,11 +2203,11 @@ "routeRecentSuccess": "Recent succes", "routeAvgTargetLatency": "Gemiddelde doellatentie", "routeSelectedTarget": "Geselecteerd doel", - "provider": "Provider", + "provider": "Aanbieder", "model": "Model", "account": "Account", "connection": "Verbinding", - "combo": "Combo", + "combo": "Combinatie", "routeStep": "Stap", "tokens": "Tokens", "notAvailable": "n.v.t.", @@ -2258,9 +2258,9 @@ "fullAccess": "Volledige toegang", "keyManagement": "API-sleutelbeheer", "keyManagementDesc": "Maak en beheer API-sleutels voor het verifiëren van verzoeken aan uw eindpunt", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Je app verstuurt verzoeken via een API-sleutel naar OmniRoute", + "requestFlowYourApp": "Je app", + "requestFlowApiKey": "API-sleutel", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Totaal aantal sleutels", "restricted": "Beperkt", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Kopieer en bewaar deze sleutel nu. Deze wordt niet meer weergegeven.", "done": "Klaar", "savePermissions": "Bewaar machtigingen", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Toegestane eindpunten", + "allEndpointsAllowed": "Deze sleutel heeft toegang tot alle API-eindpunten.", + "endpointsRestricted": "Beperkt tot {count} API-endpoint{count, plural, one {} other {s}}.", + "autoResolve": "Automatisch oplossen", + "autoResolveDesc": "Los dubbelzinnige modelnamen voor deze API-sleutel automatisch op naar de oorspronkelijke provider.", "streamDefaultMode": "Standaardcompatibiliteit voor streaming", "streamDefaultModeDesc": "Bepaalt weggelaten `stream`-vlaggen voor deze sleutel. JSON-modus retourneert niet-streamende antwoorden, tenzij de client expliciet om SSE verzoekt.", - "streamDefaultLegacy": "Legacy", + "streamDefaultLegacy": "Verouderd", "streamDefaultJson": "JSON-compatibel", "streamDefaultBadge": "JSON-streamstandaard", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Sleutel actief", + "keyActiveDesc": "Schakel deze API-sleutel in of uit. Uitgeschakelde sleutels worden onmiddellijk geweigerd met 403.", + "accessSchedule": "Toegangsschema", + "accessScheduleDesc": "Beperk de toegang tot specifieke uren en dagen van de week.", + "scheduleFrom": "Van", + "scheduleUntil": "Tot", + "scheduleDays": "Dagen", + "scheduleTimezone": "Tijdzone", + "scheduleTimezoneHint": "Gebruik IANA-tijdzonenamen, bijvoorbeeld America/New_York, Europe/Berlin", + "scheduleActive": "Schema", + "disabled": "Uitgeschakeld", + "daySun": "Zo", + "dayMon": "Ma", + "dayTue": "Di", + "dayWed": "Wo", + "dayThu": "Do", + "dayFri": "Vr", + "daySat": "Za", "allowAll": "Alles toestaan", "restrict": "Beperken", "allowAllInfo": "Met deze sleutel heeft u toegang tot alle beschikbare modellen.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Kan rechten niet updaten. Probeer het opnieuw.", "unknownProvider": "onbekend", "copyMaskedKey": "Kopieer gemaskeerde sleutel", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "De volledige sleutel is alleen beschikbaar bij het aanmaken — kopieer deze wanneer je de sleutel voor het eerst aanmaakt", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# apparaat} other {# apparaten}}", "devicesTooltip": "{count, plural, one {# uniek IP/User-Agent-apparaat gezien met deze sleutel (laatste 30 min)} other {# unieke IP/User-Agent-apparaten gezien met deze sleutel (laatste 30 min)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Toegestane combo's", "allCombosAllowed": "Deze sleutel kan elke combo gebruiken.", "restrictedComboCount": "Beperkt tot {count, plural, one {# combo} other {# combo's}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# opgeslagen vermelding staat} other {# opgeslagen vermeldingen staan}} niet in deze keuzelijst (bijvoorbeeld routeringsregels) en blijft ongewijzigd opgeslagen.", + "preservedComboRuleHint": "Blijft ongewijzigd opgeslagen. Deze vermelding is geen optie in de bovenstaande keuzelijst en kan daarom alleen via de API worden gewijzigd.", "apiManagerCustomRateLimits": "Aangepaste tarieflimieten", "apiManagerCustomRateLimitsDesc": "Overschrijf de algemene standaardlimieten. Laat leeg om standaardinstellingen te gebruiken.", "apiManagerRateLimitRequestsPlaceholder": "Verzoeken", @@ -2418,16 +2418,16 @@ "quotaKeysSection": "Quotasleutels", "bypassProviderQuota": "Quotalimieten van provider omzeilen", "bypassProviderQuotaDescription": "Hiermee kan deze sleutel het afsluitbeleid van de upstream-provider/het upstream-account negeren tijdens routering. USD-quota voor API-sleutels blijven van toepassing.", - "quotaPill": "QUOTA", + "quotaPill": "QUOTUM", "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Exclusieve lease", + "exclusiveLeaseNoticeTitle": "Exclusieve lease", + "exclusiveLeaseNoticeDesc": "Deze API-sleutel heeft exclusieve leaserechten voor routering via een gereserveerde verbinding.", + "allConnections": "Alle verbindingen", + "onlySelectedConnections": "Alleen geselecteerde verbindingen", + "selectAtLeastOneConnection": "Selecteer ten minste één verbinding of kies Alle verbindingen.", + "allConnectionsDesc": "Deze sleutel kan elke actieve verbinding gebruiken.", + "restrictedToConnections": "Beperkt tot {count, plural, one {# verbinding} other {# verbindingen}}." }, "auditLog": { "title": "Auditlogboek", @@ -2457,16 +2457,16 @@ "model": "Model", "prompt": "Prompt", "generate": "Genereren", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Genereren...", + "loadingModels": "Beschikbare modellen laden...", + "noModels": "Geen modellen beschikbaar. Configureer eerst providers met mediamogelijkheden.", + "error": "Genereren mislukt", + "result": "Resultaat", + "imageDescription": "Genereer afbeeldingen op basis van tekstprompts met OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI en meer.", + "videoDescription": "Maak video's met AnimateDiff, Stable Video Diffusion via ComfyUI of SD WebUI.", + "musicDescription": "Componeer muziek met Stable Audio Open of MusicGen via ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Inbedding", "image": "Afbeelding", "imageToText": "Afbeelding naar tekst", "tts": "Tekst naar spraak", @@ -2510,7 +2510,7 @@ "failedToReadFile": "Bestand lezen mislukt", "generationFailed": "Genereren mislukt", "requestFailed": "Verzoek mislukt ({status})", - "provider": "Provider", + "provider": "Aanbieder", "credentialsRequired": "Vereist API-sleutel in Providers", "voice": "Stem", "format": "Formaat", @@ -2534,7 +2534,7 @@ "downloadFormat": "{format} downloaden", "noTextReturned": "Geen tekst geretourneerd", "wordTimestamps": "Tijdstempels op woordniveau ({count} woorden)", - "providerCount": "{count} providers", + "providerCount": "{count} aanbieders", "imageToTextBridgeAvailable": "Modality Bridge kan nu afbeeldingen beschrijven voor tekst-only modellen. De inline playground zal beschikbaar zijn wanneer /api/v1/images/understanding is geïmplementeerd.", "imageToTextBridgeCta": "Configureer de Image→Text-brug in de Modality Bridge-instellingen", "sttBridgeCta": "Configureer de Spraak→Tekst brug in de Modality Bridge-instellingen", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter spraak-naar-tekstmodellen gebruiken uw geconfigureerde OpenRouter-verbinding. Er zijn geen aparte inloggegevens vereist." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Zoekopdracht", + "searchResults": "Zoekresultaten", + "cachedResult": "In cache", + "searchCost": "Kosten", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Geavanceerde zoektests met providervergelijking", + "compareProviders": "Providers vergelijken", + "rerankResults": "Resultaten opnieuw rangschikken", + "searchHistory": "Zoekgeschiedenis", + "urlOverlap": "URL-overlap", + "noSearchProviders": "Geen zoekproviders geconfigureerd. Voeg providers toe in Instellingen.", + "noRerankModels": "Geen model voor herrangschikking beschikbaar", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", + "provider": "Aanbieder", + "searchType": "Zoektype", + "maxResults": "Maximumaantal resultaten", "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "country": "Land", + "language": "Taal", + "timeRange": "Tijdsbereik", + "includeDomains": "Domeinen opnemen", + "excludeDomains": "Domeinen uitsluiten", + "safeSearch": "Veilig zoeken", + "safeSearchOff": "Uit", + "safeSearchModerate": "Gemiddeld", + "safeSearchStrict": "Strikt", + "queryPlaceholder": "Voer een zoekopdracht in...", + "providerAuto": "automatisch (goedkoopste)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "nieuws", + "optionAny": "willekeurig", + "timeRangeDay": "Afgelopen dag", + "timeRangeWeek": "Afgelopen week", + "timeRangeMonth": "Afgelopen maand", + "timeRangeYear": "Afgelopen jaar", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Time-out van aanvraag ({seconds}s)", + "networkError": "Netwerkfout", + "formatted": "Opgemaakt", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "cachemisser", + "cacheHit": "cachetreffer", + "latency": "Latentie", + "cost": "Kosten", + "results": "Resultaten", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Hersorteermodel", + "positionDelta": "Positiewijziging", + "emptyState": "Voer een zoekopdracht uit om resultaten te bekijken", "copy": "Kopieer", "resetToDefault": "Resetten naar standaard", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Zoeken", + "tabScrape": "Scrapen", + "tabCompare": "Vergelijken", + "modalitiesGuide": "Handleiding voor modaliteiten", + "searchConceptTitle": "Zoeken", + "searchConceptDesc": "Zoeken = haalt een lijst met webresultaten op (titel, URL, fragment, relevantiescore)", + "scrapeConceptTitle": "Scrapen", + "scrapeConceptDesc": "Scrapen = extraheert de volledige inhoud van een URL (markdown, tekst of HTML)", + "compareConceptTitle": "Vergelijken", + "compareConceptDesc": "Vergelijken = voert dezelfde zoekopdracht naast elkaar uit bij N providers om latentie, kosten en overlap van resultaten te vergelijken", + "rerankConceptTitle": "Hersorteren", + "rerankConceptDesc": "Hersorteren = ordent resultaten opnieuw via LLM om de relevantie op basis van de zoekopdracht te verbeteren", + "autoConceptTitle": "Automatisch (goedkoopste)", + "autoConceptDesc": "Automatisch (goedkoopste) = selecteert automatisch de goedkoopste beschikbare provider met geconfigureerde inloggegevens", + "providerCatalogTitle": "Providercatalogus", + "kindSearch": "Zoeken", + "kindFetch": "Ophalen/scrapen", + "statusConfigured": "Geconfigureerd", + "statusMissing": "Geen inloggegevens", + "statusRateLimited": "Snelheidslimiet bereikt", + "configureProvider": "Configureren in Providers", + "loadingProviders": "Providers laden…", + "failedToLoadProviders": "Laden van providers mislukt", + "costPerQuery": "Kosten/zoekopdracht", + "freeQuota": "Gratis quotum/mnd.", + "scrapeUrl": "URL om te scrapen", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL is verplicht", "scrapeUrlInvalid": "Ongeldige URL — deze moet beginnen met http:// of https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Extraheren", + "scrapeExtracting": "Extraheren…", + "scrapeFullPage": "Volledige pagina", + "scrapeFormat": "Indeling", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Tekst", + "scrapePreview": "Voorbeeld", + "scrapeRaw": "Onbewerkt", + "scrapeContentTruncated": "(ingekort, bekijk onbewerkt)", + "scrapeMetadata": "Metagegevens", + "scrapeProvider": "Aanbieder", + "scrapeSize": "Grootte", "scrapeEmptyState": "Voer een URL in om de inhoud ervan te extraheren", "scrapeProvidersAvailable": "Beschikbare providers: Firecrawl, Jina Reader, Tavily.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", + "compareRun": "Vergelijken", + "compareRunning": "Bezig met vergelijken…", + "autoProvider": "Automatisch (goedkoopste)", + "configuredStatus": "Geconfigureerd", + "rateLimitedStatus": "Snelheidslimiet bereikt", + "noCredential": "Geen inloggegevens", "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "rerankModelLabel": "Rerank-model", + "noneOption": "Geen", + "size": "Grootte", "configurationPane": "Configuratiepaneel", "configuration": "Configuratie", "status": "Status", @@ -2664,7 +2664,7 @@ "httpError": "Fout {status}", "failed": "Mislukt", "requestFailed": "Verzoek mislukt", - "embedding": "Embedding", + "embedding": "Inbedding", "embeddingSample": "Hallo, wereld!", "image": "Afbeelding", "imageSample": "Een sereen landschap met bergen bij zonsondergang", @@ -2681,7 +2681,7 @@ "ttsSample": "Hallo, dit is een tekst-naar-spraaktest.", "video": "Video", "videoSample": "Een time-lapse van wolken boven een bergketen", - "webFetch": "Web Fetch", + "webFetch": "Web ophalen", "webSearchSample": "Wat is OmniRoute AI gateway?", "noActiveProviderDescription": "Geen actieve zoekprovider. Configureer er een in Providers.", "configureProviders": "Providers configureren", @@ -2708,12 +2708,12 @@ "classifierCompatLoadFailed": "Instelling laden mislukt", "classifierCompatMode": { "off": "Uit", - "auto": "Auto", + "auto": "Automatisch", "always": "Altijd" }, "ccDiscoveryInfoButton": "Hoe ontdekking in Claude Code in te schakelen", "ccDiscoveryInfoTooltip": "Adverteer non-Claude-modellen onder claude/<provider>/<model> mirror-id's zodat Claude Code's gateway modelontdekking ze kan weergeven. Verdubbelt catalogusvermeldingen voor alle klanten wanneer wereldwijd ingeschakeld.", - "ccDiscoveryInfoLink": "Open Feature Flags", + "ccDiscoveryInfoLink": "Functievlaggen openen", "ccOnboardingTitle": "settings.json voor gateway model ontdekking", "ccOnboardingCopy": "Kopiëren", "ccOnboardingCopied": "Gekopieerd", @@ -2743,7 +2743,7 @@ "effortExtraHigh": "Extra hoog", "effortMax": "Max", "effortUltra": "Ultra", - "wireApi": "Wire API", + "wireApi": "API koppelen", "modelAliases": "Modelaliassen", "addModel": "Model toevoegen", "routeModelPlaceholder": "Routeer {model} naar...", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Toevoegen", "antigravityStep2Suffix": "naar uw hosts-bestand als 127.0.0.1.", "antigravityStep3": "3. Open Antigravity en verzoeken zullen worden geproxyd.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} stuurt verzoeken naar het endpoint van de provider. MITM onderschept deze en leidt ze om naar OmniRoute.", + "mitmStep1": "1. Start MITM om verzoeken via OmniRoute te routeren.", + "mitmStep2Prefix": "2. Voeg", + "mitmStep2Suffix": "toe aan je hosts-bestand als 127.0.0.1.", + "mitmStep3": "3. Open {toolName}; verzoeken worden dan via een proxy geleid.", "sudoPasswordRequiredTitle": "Sudo-wachtwoord vereist", "sudoPasswordHint": "Het beheerderswachtwoord is vereist om de hosts-bestand- en systeemproxy-instellingen te wijzigen.", "enterSudoPassword": "Voer het sudo-wachtwoord in", @@ -2908,7 +2908,7 @@ "continue": "Gebruik dit wanneer u Doorgaan in IDE's uitvoert en u een draagbare, op JSON gebaseerde providerconfiguratie nodig hebt.", "opencode": "Gebruik dit wanneer u de voorkeur geeft aan terminal-native agentruns en scriptautomatisering via OpenCode.", "kiro": "Te gebruiken bij het integreren van Kiro en het centraal beheren van modelrouting vanuit OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Gebruik dit wanneer je een AI-first IDE wilt met Codeium/Windsurf-modellen die via OmniRoute worden gerouteerd.", "antigravity": "Gebruik wanneer Antigravity/Kiro-verkeer moet worden onderschept via MITM en naar OmniRoute moet worden gerouteerd.", "copilot": "Gebruik wanneer u UX in Copilot-chatstijl wilt terwijl u OmniRoute-sleutels en routeringsregels afdwingt.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2928,11 +2928,11 @@ "qwen": "Qwen Code CLI", "cursor": "Cursor AI-code-editor", "continue": "Ga door met AI-assistent", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode AI-codeeragent (Terminal)", + "kiro": "Amazon Kiro — AI-aangedreven IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "Sourcegraph Amp CLI-codeerassistent", "hermes": "Hermes AI Terminalassistent", "hermes-agent": "Hermes Agent (van Nousresearch) - Geavanceerde terminal-AI met ondersteuning voor meerdere modellen (delegatie, visie, compressie, enz.)", "custom": "Generieke OpenAI-compatibele CLI- of SDK-configuratiegenerator", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter autonome codeeragent-CLI", "omp": "Oh My Pi terminal-codeeragent", "letta": "Letta CLI-agent met persistent geheugen en toolgebruik", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — zelfverbeterende RLM-codeeromgeving met ondersteuning voor OpenAI-compatibele providers", "warp": "Warp AI-terminal met ondersteuning voor aangepaste providers", "agent-deck": "Agent Deck multi-agent-orchestrator", "5dive": "5dive — zelf gehoste vloot van codeeragents; één auth-profiel wijst ze allemaal naar OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCode installeren", + "desc": "Installeren via npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API-sleutel" }, "3": { - "title": "Set Base URL", + "title": "Basis-URL instellen", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Model selecteren" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Denkvariant gebruiken", + "desc": "Voer denkmodellen uit met --variant high/low/max (zie de voorbeeldopdracht hieronder)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro-instellingen openen", + "desc": "Ga naar Instellingen → AI-provider" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Basis-URL", + "desc": "Plak de URL van je OmniRoute-eindpunt" }, "3": { - "title": "API Key" + "title": "API-sleutel" }, "4": { - "title": "Select Model" + "title": "Model selecteren" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI-instellingen openen", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Aangepaste provider toevoegen", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Basis-URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API-sleutel", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Model selecteren", + "desc": "Kies een model in de vervolgkeuzelijst" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Aangepaste CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Toolcategorieën", "visibleToolsCount": "{count} tools beschikbaar", "customCliBuilderTitle": "OpenAI-compatibele CLI-builder", "customCliBuilderDescription": "Genereer env vars en JSON-fragmenten voor elke CLI of SDK die een OpenAI-compatibele basis-URL, API-sleutel en model-ID accepteert.", @@ -3112,13 +3112,13 @@ "hermesRoleDefaultDesc": "Primair conversatiemodel", "hermesRoleDelegation": "Delegatie (subagenten)", "hermesRoleDelegationDesc": "Orchestrator- en subagentmodel", - "hermesRoleVision": "Vision", + "hermesRoleVision": "Visie", "hermesRoleVisionDesc": "Begrip van afbeeldingen en screenshots", "hermesRoleCompression": "Compressie", "hermesRoleCompressionDesc": "Prompt-compressie en samenvatting", "hermesRoleWebExtract": "Webextractie", "hermesRoleWebExtractDesc": "Extractie van webpagina-inhoud", - "hermesRoleSkillsHub": "Skills Hub", + "hermesRoleSkillsHub": "Vaardighedenhub", "hermesRoleSkillsHubDesc": "Vaardigheden en redeneren over toolgebruik", "hermesRoleApproval": "Goedkeuring", "hermesRoleApprovalDesc": "Veiligheids- en goedkeuringsbeslissingen", @@ -3128,11 +3128,11 @@ "hermesRoleTitleGenerationDesc": "Generatie van sessietitels", "hermesRoleMemoryQueryRewrite": "Geheugenquery herschrijven", "hermesRoleMemoryQueryRewriteDesc": "Herschrijven van geheugenzoekopdrachten", - "hermesRoleTtsAudioTags": "TTS Audio Tags", + "hermesRoleTtsAudioTags": "TTS-audiotags", "hermesRoleTtsAudioTagsDesc": "TTS-audio-tag generatie", "hermesRoleTriageSpecifier": "Triage Specificatie", "hermesRoleTriageSpecifierDesc": "Specificatie voor het triëren van issues en PR's", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Kanban-opsplitser", "hermesRoleKanbanDecomposerDesc": "Kanban-taakdecompositie", "hermesRoleProfileDescriber": "Profielbeschrijving", "hermesRoleProfileDescriberDesc": "Gebruikersprofielbeschrijving", @@ -3168,7 +3168,7 @@ "selectAll": "Alles selecteren", "loadingModels": "Modellen laden...", "advancedOptions": "Geavanceerde opties", - "vision": "Vision", + "vision": "Visie", "copilotCopyConfigForModels": "Configuratie kopiëren ({count, plural, one {# model} other {# modellen}})", "copilotFilterModelsPlaceholder": "Modellen filteren...", "copilotMaxInputTokens": "Max. invoertokens", @@ -3189,13 +3189,13 @@ "cliproxyapiPort": "Haven", "cliproxyapiRequestFailed": "Verzoek mislukt", "cliproxyapiRestart": "Herstarten", - "cliproxyapiStart": "Start", + "cliproxyapiStart": "Starten", "cliproxyapiStatusError": "Fout", "cliproxyapiStatusInstalled": "Geïnstalleerd", "cliproxyapiStatusNotInstalled": "Niet Geïnstalleerd", "cliproxyapiStatusRunning": "Lopen", "cliproxyapiStatusStopped": "Gestopt", - "cliproxyapiStop": "Stop", + "cliproxyapiStop": "Stoppen", "cliproxyapiUnhealthy": "Ongezond", "cliproxyapiUnknown": "Onbekend", "cliproxyapiUpdate": "Bijwerken", @@ -3260,19 +3260,19 @@ "priorityDesc": "Sequentiële fallback: probeert eerst model 1, dan 2, etc.", "weightedDesc": "Verdeelt verkeer op basis van gewichtspercentage met terugval", "roundRobinDesc": "Circulaire distributie: elke aanvraag gaat roulerend naar het volgende model", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Contextoverdracht", + "contextRelayDesc": "Behoudt de sessiecontinuïteit met overdrachtssamenvattingen wanneer er tussen accounts wordt gewisseld", "randomDesc": "Uniforme willekeurige selectie en vervolgens terugvallen op de resterende modellen", "leastUsedDesc": "Kiest het model met de minste verzoeken, waarbij de belasting in de loop van de tijd wordt verdeeld", "costOptimizedDesc": "Routes eerst naar het goedkoopste model op basis van prijzen", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Stuurt elk herbruikbaar promptvoorvoegsel consequent naar hetzelfde provideraccount", "resetAware": "Reset-bewuste RR", "resetAwareDesc": "Brengt het resterende quotum in evenwicht met 5 uur en wekelijkse resets, waarna vergelijkbare scores worden afgerond", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Quotagewogen", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", - "fusion": "Fusion", + "strictRandom": "Strikt willekeurig", + "strictRandomDesc": "Geschud kaartspel — gebruikt elk model één keer voordat er opnieuw wordt geschud", + "fusion": "Fusie", "fusionDesc": "Stuurt de prompt parallel naar elk panelmodel, waarna een judgemodel één definitief antwoord synthetiseert", "fusionJudgeModel": "Judgemodel", "fusionJudgeModelHelp": "Model dat de panelantwoorden synthetiseert tot één definitief antwoord. Laat leeg om het eerste panelmodel te gebruiken.", @@ -3288,13 +3288,13 @@ "retryDelay": "Vertraging opnieuw proberen (ms)", "concurrencyPerModel": "Gelijktijdigheid / model", "queueTimeout": "Wachtrijtime-out (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Overdrachtsdrempel", + "contextRelayHandoffThresholdHelp": "Wanneer het quotagebruik deze drempel bereikt, genereert OmniRoute een gestructureerde overdrachtssamenvatting voordat het actieve account is uitgeput.", + "contextRelayMaxMessages": "Maximaal aantal berichten voor samenvatting", + "contextRelayMaxMessagesHelp": "Beperkt hoeveel recente geschiedenis wordt samengevat in de relay-samenvatting.", + "contextRelaySummaryModel": "Samenvattingsmodel", + "contextRelaySummaryModelHelp": "Optioneel vervangend model dat alleen wordt gebruikt om de overdrachtssamenvatting te genereren. Laat dit leeg om het actieve combinatiemodel opnieuw te gebruiken.", + "contextRelayProviderNote": "Context Relay genereert momenteel overdrachten voor Codex-accountrotatie. Combineer dit met meerdere accounts van dezelfde provider voor optimale continuïteit.", "advancedHint": "Laat leeg om globale standaardwaarden te gebruiken. Deze overschrijven de instellingen per provider.", "failoverBeforeRetry": "Failover vóór nieuwe poging", "maxSetRetries": "Max. aantal nieuwe pogingen", @@ -3315,14 +3315,14 @@ "liveSelectComboPlaceholder": "— selecteer combo —", "liveTargetCount": "{count, plural, one {# doel} other {# doelen}}", "liveSingle": "Enkel", - "liveFleet": "Fleet", + "liveFleet": "Vloot", "playgroundStatusAvailable": "Beschikbaar", "playgroundStatusNoQuota": "Geen quotum", "playgroundStatusDegraded": "Gedegradeerd", "playgroundStatusError": "Fout", "playgroundStatusUnknown": "Onbekend", "playgroundNetworkError": "Netwerkfout tijdens simulatie", - "playgroundTitle": "Combo Playground", + "playgroundTitle": "Combinatie-speelomgeving", "playgroundDescription": "Simuleer hoe verzoeken door uw combo's worden gerouteerd", "playgroundConfiguration": "Configuratie", "playgroundNoCombosConfigured": "Geen combo's geconfigureerd", @@ -3335,7 +3335,7 @@ "playgroundStrategy": "Strategie", "playgroundEstimatedCost": "Gesch. kosten", "playgroundEstimatedLatency": "Gesch. latentie", - "playgroundFallback": "fallback", + "playgroundFallback": "terugvaloptie", "playgroundWeight": "gewicht {value}", "playgroundWarningCount": "Waarschuwingen ({count})", "playgroundErrorCount": "Fouten ({count})", @@ -3352,33 +3352,33 @@ "strategyGuide": { "priority": { "when": "U heeft één voorkeursmodel en wilt alleen terugvallen op mislukkingen.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "avoid": "Je hebt verdeling van verzoeken over modellen nodig.", + "example": "Primair programmeermodel met een goedkoper reservemodel voor storingen." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Je hebt een gecontroleerde verdeling van verkeer over modellen nodig.", + "avoid": "Je kunt de gewichten niet langdurig nauwkeurig bijhouden.", + "example": "Uitrol met 80% stabiel model en 20% canarymodel." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Je wilt een voorspelbare en gelijkmatige verdeling.", + "avoid": "De modellen verschillen te veel in latentie of kosten.", + "example": "Hetzelfde model op meerdere accounts om de doorvoer te verdelen." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Je wilt een eenvoudige verdeling met minimale configuratie.", + "avoid": "Je hebt strikte verkeersgaranties nodig.", + "example": "Snel prototypen met gelijkwaardige modellen." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Je wilt adaptieve taakverdeling op basis van de actuele vraag.", + "avoid": "Het verkeer is te beperkt om te profiteren van verdeling op basis van gebruik.", + "example": "Gemengde workloads waarbij één model vaak overbelast raakt." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Kostenverlaging heeft je hoogste prioriteit.", + "avoid": "Prijsgegevens ontbreken of zijn verouderd.", + "example": "Achtergrond- of batchtaken waarbij lagere kosten de voorkeur hebben." }, "reset-aware": { "when": "U routeert over meerdere accounts met quota-telemetrie en verschillende reset-vensters.", @@ -3386,19 +3386,19 @@ "example": "Geef de voorkeur aan een wekelijkse account van 60% die morgen wordt gereset boven een account van 80% die later wordt gereset." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Gebruik dit als je een perfect gelijkmatige verdeling wilt: elk model wordt één keer gebruikt voordat de cyclus opnieuw begint.", + "avoid": "Vermijd dit wanneer modellen verschillen in kwaliteit of latentie en de volgorde belangrijk is.", + "example": "Voorbeeld: meerdere accounts van hetzelfde model om het gebruik gelijkmatig te verdelen." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Gebruik dit als je selectie met lage latentie wilt via het Power-of-Two-Choices-algoritme.", + "avoid": "Vermijd dit voor kleine combinaties met 2 of minder modellen: het biedt geen voordeel ten opzichte van round-robin.", + "example": "Voorbeeld: inference met hoge doorvoer via 4 of meer gelijkwaardige modeleindpunten." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Gebruik dit wanneer lange sessies accountrotatie moeten doorstaan zonder de werkcontext te verliezen.", + "avoid": "Vermijd dit wanneer er zelden van account wordt gewisseld of wanneer je geen extra samenvattingsverzoeken wilt.", + "example": "Voorbeeld: Codex-sessies die bij het bijna bereiken van het quotum tussen meerdere accounts roteren." }, "fill-first": { "when": "Gebruik dit wanneer u het quotum van de ene provider volledig wilt benutten voordat u naar de volgende overstapt.", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Het aantal nieuwe pogingen voordat een verzoek als mislukt wordt beschouwd.", + "retryDelay": "Initiële wachttijd tussen nieuwe pogingen. Hogere waarden verminderen piekbelasting.", + "timeout": "Maximale duur van een verzoek voordat het wordt afgebroken.", + "healthcheck": "Sluit niet goed functionerende modellen/providers uit van routeringsbeslissingen.", + "concurrencyPerModel": "Maximaal aantal gelijktijdige verzoeken per model bij round-robin.", + "queueTimeout": "Hoe lang een verzoek in de wachtrij mag staan voordat er een time-out optreedt.", "failoverBeforeRetry": "Indien ingeschakeld, activeert elke upstream-fout onmiddellijke failover naar het volgende combo-doel, waarbij alle nieuwe pogingen en reserve-URL's worden overgeslagen.", "maxSetRetries": "Aantal keren dat de volledige doelset opnieuw moet worden geprobeerd als elk doel mislukt. 0 = geen nieuwe poging op ingesteld niveau.", "setRetryDelayMs": "Vertraging tussen nieuwe pogingen op ingesteld niveau, waardoor tijdelijke problemen de tijd krijgen om op te lossen.", "disableSessionStickiness": "Roteer naar een andere verbinding bij elk verzoek in plaats van een heel gesprek vast te pinnen op één verbinding via de hash van het eerste bericht. Overschrijft de globale standaardinstelling. Laat op Overnemen staan om prompt-cache hits te behouden voor chats met meerdere beurten." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "Snelle sjablonen", + "templatesDescription": "Pas een startprofiel toe en pas daarna de modellen en configuratie aan.", + "templateApply": "Sjabloon toepassen", + "templateHighAvailability": "Hoge beschikbaarheid", + "templateHighAvailabilityDesc": "Prioriteitsroutering met statuscontroles en veilige nieuwe pogingen.", + "templateCostSaver": "Kostenbesparing", + "templateCostSaverDesc": "Kostengeoptimaliseerde routering voor workloads waarbij het budget vooropstaat.", + "templateBalanced": "Gebalanceerde belasting", + "templateBalancedDesc": "Routering naar het minst gebruikte model om de vraag over tijd te spreiden.", + "usageGuideHide": "Verbergen", + "usageGuideDontShowAgain": "Niet meer weergeven", + "usageGuideShow": "Handleiding weergeven", + "quickTestTitle": "Combinatie klaar voor validatie", + "quickTestDescription": "Voer nu een test uit om het fallback- en latentiegedrag te bevestigen.", + "testNow": "Nu testen", + "pricingCoverage": "Prijsdekking", + "pricingCoverageHint": "Kostengeoptimaliseerde routering werkt het best wanneer alle modellen in de combinatie prijsgegevens hebben.", + "pricingAvailable": "Prijs beschikbaar", + "pricingMissing": "Geen prijsgegevens", + "pricingAvailableShort": "met prijs", + "pricingMissingShort": "zonder prijs", "fallbackOnlyOnQuotaExhaustion": "Alleen doorgaan bij quota-uitputting", - "fallbackOnlyOnQuotaExhaustionShort": "quota-only fallback", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", + "fallbackOnlyOnQuotaExhaustionShort": "fallback alleen op basis van quota", + "warningRoundRobinSingleModel": "Round-robin is het nuttigst met minstens 2 modellen.", + "warningCostOptimizedPartialPricing": "Slechts {priced} van de {total} modellen hebben prijsgegevens. De routering houdt mogelijk slechts gedeeltelijk rekening met kosten.", + "warningCostOptimizedNoPricing": "Geen prijsgegevens gevonden voor deze combinatie. Kostengeoptimaliseerde routering kan onverwachte routes kiezen.", + "filterAll": "Alle", "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterDeterministic": "Deterministisch", + "filterEmptyTitle": "Geen combinaties komen overeen met dit strategiefilter.", + "filterEmptyIntelligentDescription": "Maak een automatische of LKGP-combinatie om het dashboard voor intelligente routering te vullen.", + "filterEmptyDeterministicDescription": "Er bestaan momenteel alleen automatische en LKGP-combinaties. Schakel terug naar Alle of maak een deterministische combinatie.", "readinessTitle": "Klaar om te besparen?", "readinessDescription": "Bekijk de checklist voordat u deze combo maakt of bijwerkt.", "readinessCheckName": "Combinatienaam is geldig", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Voeg ten minste één model toe.", "saveBlockWeighted": "Stel de gewichten in op 100% (huidig: {total}%).", "saveBlockPricing": "Voeg prijzen toe voor ten minste één model of kies een andere strategie.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Aanbevolen configuratie", + "applyRecommendations": "Aanbevelingen toepassen", + "recommendationsUpdated": "Aanbevelingen bijgewerkt voor {strategy}.", + "recommendationsApplied": "Aanbevelingen toegepast op deze combinatie.", + "intelligentPanelTitle": "Dashboard voor intelligente routering", + "intelligentPanelDesc": "Realtime scores en status voor deze combinatie met automatische routering.", "configOnlyStatus": "Configuratieweergave", "configOnlyHint": "Dit paneel toont alleen routeringsinvoer. De live breaker-status is beschikbaar op de Statuspagina.", "routingInputs": "Routeringsinvoer", @@ -3496,7 +3496,7 @@ "builderGlobalAddAll": "Alles toevoegen", "builderGlobalShortcuts": "Sneltoetsen:", "builderGlobalNoResults": "Geen model gevonden voor \"{query}\".", - "builderGlobalProviderLabel": "Provider:", + "builderGlobalProviderLabel": "Aanbieder:", "builderGlobalAccountCount": "{count, plural, one {# account} other {# accounts}}", "builderGlobalAdded": "Toegevoegd", "builderGlobalAdd": "Toevoegen", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Onbekend provider-voorvoegsel.", "builderDynamicAccountShort": "Dynamisch account", "builderNeedValidName": "Definieer een geldige combonaam voordat u doorgaat.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Statusoverzicht", + "normalOperation": "Normale werking", + "allProvidersHealthy": "Providers melden gezonde routeringsomstandigheden.", + "incidentMode": "Incidentmodus", + "highCircuitBreakerRate": "Een hoog activeringspercentage van de stroomonderbreker is gedetecteerd.", + "activeModePack": "Actief moduspakket", + "modePackUpdated": "Moduspakket bijgewerkt naar {pack}.", + "modePackHint": "Wissel van voorinstelling om de routeringsengine bij te sturen zonder de combinatie opnieuw samen te stellen.", + "providerScores": "Providerscores", + "allProvidersEvaluated": "Geen kandidatenpool geconfigureerd. Alle actieve providers worden tijdens runtime geëvalueerd.", + "excludedProviders": "Uitgesloten providers", + "excludedProvidersHint": "Providers met een OPEN stroomonderbreker worden tijdelijk uitgesloten van routering.", + "noExcludedProviders": "Er zijn momenteel geen providers uitgesloten.", + "cooldownMinutes": "Afkoelperiode: {minutes} m", + "builderIntelligentTitle": "Configuratie voor intelligente routering", + "builderIntelligentDesc": "Configureer de multifactoriële scoringengine voor deze combinatie met automatische routering.", + "candidatePoolLabel": "Kandidatenpool", + "candidatePoolHint": "Selecteer welke providers deze engine moet evalueren. Laat dit leeg om alle actieve providers te gebruiken.", + "candidatePoolEmpty": "Er zijn nog geen actieve providers beschikbaar.", + "candidatePoolAllProviders": "Alle providers", + "modePackLabel": "Moduspakket", + "routerStrategyLabel": "Routerstrategie", + "strategyRules": "Regels (scoring op basis van 6 factoren)", + "explorationRateLabel": "Verkenningspercentage", + "explorationRateHint": "{percent}% van de verzoeken kan niet-optimale providers verkennen.", + "budgetCapLabel": "Budgetlimiet (USD/verzoek)", + "budgetCapPlaceholder": "Geen limiet", + "advancedWeightsTitle": "Geavanceerd: scoringsgewichten", "nestedComboFlatten": "Geneste combo's afvlakken", "nestedComboExecute": "Geneste combo's uitvoeren als doelen", "effectiveRoutingShare": "Effectief routeringsaandeel (gewicht ÷ totaal)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Quotum", + "weightHealth": "Status", + "weightCostInv": "Kosten", + "weightLatencyInv": "Latentie", + "weightTaskFit": "Geschiktheid voor taak", + "weightStability": "Stabiliteit", + "weightTierPriority": "Niveau", + "weightCacheAffinity": "Affiniteit voor cachetreffers", "weightSessionAvailability": "Beschikbaarheid van de Sessie", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Configuratie voor intelligente routering", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Fail-safe-basislijn", + "description": "Gebruik één primair model en houd de fallbackketen kort en betrouwbaar.", + "tip1": "Plaats uw betrouwbaarste model als eerste.", + "tip2": "Gebruik 1-2 reservemodellen van vergelijkbare kwaliteit.", + "tip3": "Gebruik veilige nieuwe pogingen om tijdelijke providerstoringen op te vangen." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Gecontroleerde verkeersverdeling", + "description": "Ideaal voor canary-uitrol en geleidelijke migratie tussen modellen.", + "tip1": "Begin met een conservatieve verdeling, zoals 90/10.", + "tip2": "Houd het totaal op 100% en balanceer automatisch na wijzigingen.", + "tip3": "Monitor het succespercentage en de latentie voordat je het canary-aandeel verhoogt." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Voorspelbare belastingverdeling", + "description": "Ideaal wanneer modellen gelijkwaardig zijn en je een gelijkmatige verdeling nodig hebt.", + "tip1": "Gebruik minimaal 2 modellen.", + "tip2": "Stel gelijktijdigheidslimieten in om overbelasting door pieken te voorkomen.", + "tip3": "Gebruik een time-out voor de wachtrij om bij verzadiging snel een fout te retourneren." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Snelle verdeling met weinig configuratie", + "description": "Gebruik dit wanneer je een eenvoudige verdeling zonder strikte garanties nodig hebt.", + "tip1": "Gebruik modellen met vergelijkbare latentieprofielen.", + "tip2": "Houd nieuwe pogingen ingeschakeld om willekeurige missers op te vangen.", + "tip3": "Gebruik dit bij voorkeur voor experimenten, niet voor strikte SLA's." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Adaptieve balancering", + "description": "Routeert naar minder gebruikte modellen om hotspots na verloop van tijd te verminderen.", + "tip1": "Werkt beter bij continu verkeer.", + "tip2": "Combineer dit met statuscontroles voor een veiligere balancering.", + "tip3": "Houd het gebruik per model bij om de verbeterde verdeling te verifiëren." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Budgetgerichte routering", + "description": "Routeert naar goedkopere modellen wanneer prijsmetadata beschikbaar is.", + "tip1": "Zorg dat prijsinformatie beschikbaar is voor alle geselecteerde modellen.", + "tip2": "Behoud een kwalitatief terugvalmodel voor moeilijke prompts.", + "tip3": "Gebruik dit voor batch- en achtergrondtaken waarbij kosten de belangrijkste KPI zijn." }, "reset-aware": { "title": "Resetbewuste accountrotatie", @@ -3597,11 +3597,11 @@ "tip3": "Houd de band klein, zodat gelijkwaardige accounts nog steeds eerlijk roteren." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Verdeling met geschud kaartspel", + "description": "Elk model wordt per cyclus precies één keer gebruikt voordat er opnieuw wordt geschud.", + "tip1": "Gebruik minimaal 2 modellen voor een zinvolle verdeling.", + "tip2": "Werkt het beste met modellen die gelijkwaardig presteren.", + "tip3": "Ideaal voor taakverdeling over meerdere API-accounts." }, "fill-first": { "description": "Voer de quota's van leveranciers opeenvolgend uit voordat u terugvalt.", @@ -3646,86 +3646,86 @@ "title": "Kracht van twee keuzes" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Gratis stack ($0)", + "templateFreeStackDesc": "Round-robin over alle gratis providers: Kiro (Claude), Qoder (5 modellen), Qwen (4 modellen). Kost niets en blijft altijd coderen.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP-modus", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Aan de slag met combo's", + "wizardGuideDesc": "Maak modelcombo's om AI-verkeer intelligent te routeren", + "wizardGuideHint": "of klik hierboven op + Combo maken", + "createFirstCombo": "Maak je eerste combo", + "wizardStep1Title": "Geef je combo een naam", + "wizardStep1Desc": "Geef je combo een unieke naam om deze in routeringsregels te herkennen", + "wizardStep2Title": "Modellen toevoegen", + "wizardStep2Desc": "Selecteer AI-modellen en rangschik hun terugvalprioriteit", + "wizardStep3Title": "Strategie kiezen", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Controleren en opslaan", + "wizardStep4Desc": "Controleer je configuratie en activeer de combo", + "usageGuideInvokeTitle": "Deze combo aanroepen", + "usageGuideInvokeDesc": "Stuur de exacte naam van de combo als model, bijvoorbeeld model: \"my-combo\" (of combo/my-combo).", + "usageGuideInvokeAutoNote": "auto en auto/* vormen een afzonderlijke router zonder configuratie die je combo's niet gebruikt (tenzij een combo letterlijk auto heet).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto is een echt betaald product van OpenRouter (Auto Best Available), geen alias van OmniRoute — sluit het uit via Instellingen → Routering → Betaalde modellen verbergen.", + "emailVisibilityStateOn": "Aan", + "emailVisibilityStateOff": "Uit", + "reorderHandle": "Sleep om de volgorde te wijzigen", + "failedReorder": "Kan de volgorde van modellen niet wijzigen", + "builderFlowTitle": "Combo Builder-proces", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Basisinstellingen", + "description": "Naam en beginsjabloon" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Stappen", + "description": "Selectie van provider, model en account" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategie", + "description": "Routeringsgedrag en geavanceerde instellingen" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Slimme routering", + "description": "Kandidatenpool, voorinstellingen en scores voor automatische routering" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Controleren", + "description": "Definitieve validatie vóór het opslaan" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", + "builderStageVisited": "Fase voltooid", + "builderStageCurrent": "Huidige fase", + "builderStagePending": "In afwachting", + "builderStageLocked": "Vergrendeld — voltooi eerst de vorige fase", + "builderTitle": "Een combo maken", + "builderBrowseCatalog": "Catalogus bekijken", + "builderProvider": "Aanbieder", + "builderLoadingProviders": "Providers laden...", + "builderSelectProvider": "Selecteer provider", "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", + "builderSelectModel": "Selecteer model", + "builderProviderFirst": "Kies eerst een provider", "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderPreview": "Voorbeeld", + "builderAddStep": "Stap toevoegen", "builderDuplicateExact": "Deze exacte provider/model/account-stap zit al in de combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", + "builderComboRef": "Combo-referentie", + "builderAddComboRef": "Comboreferentie toevoegen", + "builderComboRefStep": "Comboreferentie toevoegen", + "builderPinnedAccount": "Vastgezet account", + "builderLegacyEntry": "Verouderde invoer", + "reviewName": "Naam", + "reviewStrategy": "Strategie", + "reviewSteps": "Stappen", "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "reviewProviders": "Aanbieders", + "reviewComboRefs": "Comboreferenties", + "reviewAdvanced": "Geavanceerde instellingen", + "reviewAgentFlags": "Agentvlaggen", + "reviewSequence": "Modelvolgorde", + "reviewNoSteps": "Geen stappen geconfigureerd", "builderStagesDescription": "Voltooi elke fase om combo's te definiëren, stappen te bouwen, routeringsstrategie te selecteren en de resultaten te bekijken.", "builderStepsDescription": "Bouw elke combinatiestap op volgorde: provider, model en vervolgens account. Hierdoor kunt u dezelfde provider en hetzelfde model voor verschillende accounts hergebruiken.", "selectProvider": "Selecteer Aanbieder", @@ -3774,13 +3774,13 @@ "kimiPresetDescription": "Kimi K3 als het primaire model (Moonshot API), met automatische terugval naar uw Kimi Code-verbindingen (kimi-coding, kimi-web) indien geconfigureerd.", "kimiPresetCta": "Preset toevoegen", "intelligentComboCount": "{count, plural, one {# intelligente combinatie} other {# intelligente combinaties}}", - "providersInScope": "{count, plural, one {# provider in scope} other {# providers in scope}}", + "providersInScope": "{count, plural, one {# provider binnen bereik} other {# providers binnen bereik}}", "savingModePack": "Opslaan {pack}…", "errorTitle": "Kon combos niet laden", "errorDescription": "We konden de combogegevens op dit moment niet laden. Controleer je verbinding en probeer het opnieuw.", "errorId": "Fout-ID: {id}", "errorRetry": "Probeer het opnieuw", - "comboLabel": "Combo", + "comboLabel": "Combinatie", "duplicateAutoComboConfirm": "Een statische combinatie maken van \"{name}\"?", "duplicateAutoComboSnapshotMsg": "Dit maakt een momentopname van de momenteel verbonden providers/modellen die overeenkomen met dit sjabloon in een bewerkbare combinatie.", "duplicateAutoComboFailedPrefix": "Automatische combinatie dupliceren mislukt:", @@ -3800,27 +3800,27 @@ "range7d": "7 dagen", "range30d": "30 dagen", "range90d": "90 dagen", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 dagen", + "range365d": "365 dagen", "rangeAll": "Altijd", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Actieve modellen", + "flatRateEstimateNotice": "Bevat schattingen van tokenprijzen voor abonnementen met een vast tarief, niet de gefactureerde kosten.", + "flatRateEstimateForecast": "De prognose bevat schattingen op basis van vaste tarieven.", + "selectedWindow": "Geselecteerde periode", + "activeProviders": "Actieve providers", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Uitgaven vandaag", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Aandeel per provider", + "topProviders": "Belangrijkste providers", + "costTrend": "Kostentrend", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Belangrijkste modellen", "requestsInWindow": "Requests In Window", "tokenUsage": "Tokengebruik", "totalTokens": "Totaal tokens", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API-eindpunt", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Gebruik het OpenAI-compatibele eindpunt met de meeste SDK's en tools.", + "testEndpoint": "Eindpunt testen →", + "advancedProtocols": "Geavanceerde protocollen", "available": "Beschikbare eindpunten", "cloudProxy": "Cloud-proxy", "disableConfirm": "Weet u zeker dat u cloudproxy wilt uitschakelen?", @@ -3900,7 +3900,7 @@ "disableCloud": "Schakel Cloud uit", "enableCloud": "Schakel Cloud in", "modelsAcrossEndpoints": "{models} modellen voor {endpoints} eindpunten", - "loadingModels": "Loading available models...", + "loadingModels": "Beschikbare modellen laden...", "chatDesc": "Streaming & non-streaming chat met alle providers", "embeddings": "Inbedding", "embeddingsDesc": "Tekstinsluitingen voor zoek- en RAG-pijplijnen", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Audiobestanden omzetten naar tekst (Whisper)", "textToSpeech": "Tekst naar spraak", "textToSpeechDesc": "Converteer tekst naar natuurlijk klinkende spraak", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Muziek genereren", + "musicDesc": "Genereer muziek en audiotracks via ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderaties", "moderationsDesc": "Contentmoderatie en veiligheidsclassificatie", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API voor Codex en geavanceerde agentische workflows", + "listModelsDesc": "Toon alle beschikbare modellen van alle verbonden providers", + "settingsApiDesc": "Lees en wijzig de OmniRoute-configuratie via de API", + "settingsApi": "Instellingen-API", "categoryCore": "Kern-API's", "categoryMedia": "Media & Multi-Modaal", - "categorySearch": "Search & Discovery", + "categorySearch": "Zoeken en ontdekken", "categoryUtility": "Hulpmiddelen & Beheer", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Zoeken op het web", + "webSearchDesc": "Geïntegreerd zoeken op het web via meerdere providers, met automatische failover en caching", + "searchProvider": "Zoekprovider", + "searchProviderDesc": "Deze provider wordt gebruikt voor zoeken op het web via POST /v1/search. Er is geen modelconfiguratie nodig — zoekproviders zijn klaar voor gebruik zodra een API-sleutel is gekoppeld.", "enableCloudTitle": "Schakel Cloudproxy in", "whatYouGet": "Wat je krijgt", "cloudBenefitAccess": "Krijg overal ter wereld toegang tot uw API", @@ -3963,57 +3963,57 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Tunnel inschakelen", + "cloudflaredInstallAndEnable": "Installeren en inschakelen", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Actief", + "cloudflaredStarting": "Wordt gestart", + "cloudflaredStoppedState": "Gestopt", + "cloudflaredNotInstalled": "Niet geïnstalleerd", + "cloudflaredUnsupported": "Niet ondersteund", + "cloudflaredError": "Fout", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Laatste fout: {error}", "providerModelsTitle": "{provider} — Modellen", "noModelsForProvider": "Er zijn geen modellen beschikbaar voor deze aanbieder.", "chat": "Chatten", "embedding": "Inbedding", "image": "Afbeelding", "custom": "gewoonte", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {# model} other {# modellen}}", + "sectionTitle": "Integratie-interface", + "sectionDescription": "OpenAI-compatibele API's en operationele protocoleindpunten", "tabApis": "API's", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "Protocollen", + "tabsAria": "Eindpuntsecties", + "protocolsTitle": "Protocollen", + "protocolsDescription": "MCP en A2A zijn volwaardige eindpunten met specifieke observatiemogelijkheden en bedieningselementen.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "Model Context Protocol via stdio", + "a2aCardTitle": "A2A-server", + "a2aCardDescription": "Agent2Agent JSON-RPC-eindpunt", + "protocolToolsLabel": "Hulpmiddelen", + "protocolTasksLabel": "Taken", + "protocolActiveStreamsLabel": "Actieve streams", + "protocolLastActivity": "Laatste activiteit", + "quickStart": "Snel aan de slag", + "openMcpDashboard": "MCP-beheer openen", + "openA2aDashboard": "A2A-beheer openen", + "mcpQuickStartTitle": "Snel aan de slag met MCP", + "mcpQuickStartStep1": "Voer de MCP-server uit via `omniroute --mcp`.", + "mcpQuickStartStep2": "Configureer je MCP-client om verbinding te maken via stdio-transport.", + "mcpQuickStartStep3": "Roep tools aan zoals `omniroute_get_health` en `omniroute_list_combos`.", + "a2aQuickStartTitle": "Snel aan de slag met A2A", + "a2aQuickStartStep1": "Vind de agentkaart op `/.well-known/agent.json`.", + "a2aQuickStartStep2": "Stuur JSON-RPC-verzoeken naar `POST /a2a` met `message/send` of `message/stream`.", + "a2aQuickStartStep3": "Volg en beheer taken met `tasks/get` en `tasks/cancel`.", + "completionsLegacy": "Voltooiingen (verouderd)", + "completionsLegacyDesc": "Verouderde OpenAI-tekstaanvullingen — accepteert zowel een prompttekenreeks als een berichtenarray", "messagesApi": "Berichten", "messagesApiDesc": "Native Anthropic Messages API-indeling voor Claude-compatibele providers", "imageEdits": "Afbeeldingsbewerkingen", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Verwerk grote batches verzoeken asynchroon (OpenAI-compatibel)", "filesApi": "Bestanden-API", "filesApiDesc": "Upload en beheer bestanden voor batchverwerking", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Videogeneratie", + "videoDesc": "Genereer video's met AI-modellen zoals ComfyUI en Stable Video Diffusion.", + "tailscaleRequestFailed": "Kan de Tailscale-status niet laden", + "tailscaleEnableFailed": "Kan Tailscale Funnel niet inschakelen", + "tailscaleWaitingForLogin": "Voltooi de Tailscale-aanmelding in het geopende browsertabblad. OmniRoute probeert het automatisch opnieuw.", + "tailscaleLoginTimedOut": "Time-out tijdens het wachten op de Tailscale-aanmelding", + "tailscaleWaitingForFunnel": "Schakel Funnel voor dit apparaat in via het geopende browsertabblad. OmniRoute blijft de status controleren.", + "tailscaleFunnelTimedOut": "Time-out tijdens het wachten tot Tailscale Funnel is ingeschakeld", + "tailscaleStarted": "Tailscale Funnel ingeschakeld", + "tailscaleDisableFailed": "Kan Tailscale Funnel niet uitschakelen", + "tailscaleStopped": "Tailscale Funnel uitgeschakeld", + "tailscaleInstallFailed": "Kan Tailscale niet installeren", + "tailscaleInstallProgress": "Bezig...", + "tailscaleInstalled": "Tailscale is geïnstalleerd", + "tailscaleRunning": "Actief", + "tailscaleNeedsLogin": "Aanmelding vereist", + "tailscaleStoppedState": "Gestopt", + "tailscaleNotInstalled": "Niet geïnstalleerd", + "tailscaleUnsupported": "Niet ondersteund", + "tailscaleError": "Fout", + "tailscaleDisable": "Funnel stoppen", + "tailscaleInstallAndEnable": "Installeren en inschakelen", + "tailscaleLoginAndEnable": "Aanmelden en inschakelen", + "tailscaleEnable": "Funnel inschakelen", + "tailscaleUrlNotice": "Gebruikt je Tailscale .ts.net-adres. Bij het eerste gebruik zijn mogelijk aanmelding en goedkeuring voor Funnel vereist.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Verifieer deze machine bij Tailscale en schakel daarna Funnel in.", + "tailscaleBinaryPath": "Binair bestand: {path}", + "tailscaleLastError": "Laatste fout: {error}", + "tailscaleInstallTitle": "Tailscale installeren", + "tailscaleInstallIntro": "Installeert Tailscale op deze machine en bereidt OmniRoute voor om Funnel in te schakelen.", + "tailscaleInstallPasswordHint": "Op macOS en Linux kan sudo vereist zijn voor de installatie van het pakket en het starten van de daemon.", + "tailscaleSudoPlaceholder": "Optioneel sudo-wachtwoord", + "tailscaleInstalling": "Bezig met installeren", "tailscaleSudoLabel": "Sudo-wachtwoord (vereist op macOS/Linux)", "ngrokTitle": "ngrok-tunnel", "ngrokRunning": "Rennen", @@ -4108,8 +4108,8 @@ "all": "Alle", "more": "+{count} meer", "showInternalTooltip": "Interne routes tonen of verbergen (standaard verborgen)", - "bearerAuth": "Bearer Auth", - "requestBody": "Request Body", + "bearerAuth": "Bearer-authenticatie", + "requestBody": "Requestbody", "close": "Sluiten", "tryIt": "Probeer het uit", "example": "Voorbeeld", @@ -4144,9 +4144,9 @@ "tierPublic": "Openbaar", "hideInternal": "Interne verbergen", "showInternal": "Interne tonen", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Aangepaste systeemprompt", + "customSystemPromptDescription": "Voeg aan elk modelverzoek een aangepaste systeemprompt toe", + "customSystemPromptPlaceholder": "bijv. Antwoord altijd als een piraat...", "obsidianEnterToken": "Voer een Obsidian API-token in", "obsidianConnectFailed": "Verbinding maken mislukt", "obsidianConnectionFailed": "Verbinding mislukt", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "Token geconfigureerd. Notion-tools zijn beschikbaar via MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Endpointproxy", + "tabApiEndpoints": "API-endpoints", + "apiEndpointsTitle": "API-endpoints", + "apiEndpointsDescription": "Backend-API-endpoints die door andere applicaties en services kunnen worden gebruikt. In deze sectie worden alle beschikbare REST-API's vermeld, inclusief documentatie en testmogelijkheden.", + "comingSoon": "Binnenkort beschikbaar", + "plannedFeatures": "Geplande functies", + "featureRestApi": "Catalogus met REST-API-endpoints en interactieve documentatie", + "featureWebhooks": "Webhookconfiguratie en gebeurtenisabonnementen", + "featureSwagger": "Automatische generatie van OpenAPI-/Swagger-specificaties", + "featureAuth": "Beheer van API-sleutels en OAuth-scopes per endpoint" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP-dashboard laden...", + "activate": "activeren", + "deactivate": "deactiveren", + "confirmSwitchCombo": "Combinatie \"{combo}\" {action}?", + "switchComboFailed": "Kan de status van de combinatie niet wijzigen.", + "switchComboSuccess": "Combinatie \"{combo}\" bijgewerkt.", + "confirmApplyProfile": "Weerbaarheidsprofiel \"{profile}\" toepassen?", + "applyProfileFailed": "Kan het weerbaarheidsprofiel niet toepassen.", + "applyProfileSuccess": "Profiel \"{profile}\" toegepast.", + "confirmResetBreakers": "Alle circuitbreakers resetten?", + "resetBreakersFailed": "Kan de circuitbreakers niet resetten.", + "resetBreakersSuccess": "Circuitbreakers gereset.", + "processStatus": "Processtatus", "online": "Online", "offline": "Offline", "disableLabel": "{label} uitschakelen", @@ -4237,84 +4237,84 @@ "mcpStep2": "Configureer je MCP-client om verbinding te maken via stdio-transport.", "mcpStep3": "Roep tools aan zoals {code1} en {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", + "sessionUptime": "Sessieduur", + "lastHeartbeat": "Laatste heartbeat", + "activity24h": "Activiteit (24 u)", + "totalCalls": "Totaal aantal aanroepen", + "successRate": "Slagingspercentage", + "avgLatency": "Gem. latentie", + "topTools": "Meest gebruikte tools", + "noToolCalls24h": "Geen toolaanroepen in de afgelopen 24 uur.", + "runtimeDetails": "Runtimegegevens", "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", + "scopesEnforced": "Scopes afgedwongen", + "yes": "ja", + "no": "nee", + "lastCall": "Laatste aanroep", + "heartbeatPath": "Heartbeat-pad", + "operationalControls": "Operationele bedieningselementen", + "switchCombo": "Combinatie omschakelen", + "inactive": "inactief", + "active": "actief", + "activateCombo": "Combinatie activeren", + "deactivateCombo": "Combinatie deactiveren", + "applyResilienceProfile": "Veerkrachtprofiel toepassen", + "profileAggressive": "agressief", + "profileBalanced": "gebalanceerd", + "profileConservative": "conservatief", + "applyProfile": "Profiel toepassen", + "resetCircuitBreakers": "Stroomonderbrekers resetten", + "resetCircuitBreakersHelp": "Wist de huidige status en fouttellers van de stroomonderbrekers voor providers.", + "resetAllBreakers": "Alle stroomonderbrekers resetten", + "toolsAndScopes": "Tools en bereiken", "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "tableScopes": "Bereiken", + "tablePhase": "Fase", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Auditlogboek", + "auditSummary": "Aanroepen: {total} | pagina {page} van {totalPages}", + "allTools": "Alle tools", + "allResults": "Alle resultaten", + "success": "Geslaagd", + "failure": "Mislukt", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", + "loadingAuditEntries": "Auditvermeldingen laden...", + "noAuditEntriesForFilters": "Geen auditvermeldingen gevonden voor de huidige filters.", + "tableTimestamp": "Tijdstempel", + "tableDuration": "Duur", + "tableResult": "Resultaat", + "tableApiKey": "API-sleutel", + "failed": "mislukt", + "previous": "Vorige", + "next": "Volgende", + "apiKeyId": "API-sleutel-ID", + "offset": "Verschuiving", + "limit": "Limiet", "tool": "Tool" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A-dashboard laden...", + "confirmCancelTask": "Taak {taskId} annuleren?", + "cancelTaskFailed": "Kan taak niet annuleren.", + "cancelTaskSuccess": "Taak {taskId} geannuleerd.", + "smokeSendFailed": "message/send-rooktest mislukt.", + "smokeSendSuccessWithTask": "message/send geslaagd (taak {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream-rooktest mislukt.", + "smokeStreamSuccessWithTask": "message/stream geslaagd (taak {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream voltooid zonder taak-ID.", + "health": "Status", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "Totaal aantal taken", + "activeStreams": "Actieve streams", + "lastTask": "Laatste taak", + "taskStateOverview": "Overzicht van taakstatussen", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "ingediend", + "working": "in uitvoering", + "completed": "voltooid", + "failed": "mislukt", + "cancelled": "geannuleerd" }, "agentCard": "Agentenkaart", "agentCardPath": "/.well-known/agent.json", @@ -4324,32 +4324,32 @@ "agentCardNotAvailable": "Agentenkaart niet beschikbaar.", "quickValidation": "Snelle validatie", "quickValidationDescription": "Voert rookoproepen uit via het live `/a2a` eindpunt.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "runMessageSend": "message/send uitvoeren", + "runMessageStream": "message/stream uitvoeren", + "taskManagement": "Taakbeheer", + "taskSummary": "{total} taken | pagina {page} van {totalPages}", + "allStates": "alle", + "allSkills": "alle vaardigheden", + "loadingTasks": "Taken laden...", + "noTasksForFilters": "Geen taken gevonden voor de huidige filters.", + "tableTask": "Taak", + "tableSkill": "Vaardigheid", + "tableState": "Status", + "tableUpdated": "Bijgewerkt", + "tableActions": "Acties", + "view": "Bekijken", + "cancel": "Annuleren", + "previous": "Vorige", + "next": "Volgende", + "taskDetail": "Taakdetails", + "close": "Sluiten", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "Gebeurtenissen", + "artifacts": "Artefacten", + "tablePhase": "Tabelfase", + "offset": "Verschuiving", + "limit": "Limiet", + "skill": "Vaardigheid", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "bericht/verzenden", "rpcMethodStream": "bericht/stream", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Acties", + "addMemory": "Geheugen toevoegen", + "allTypes": "Alle typen", "cancel": "Annuleer", "checkHealth": "Controleer de gezondheid", "checkingHealth": "Controleren…", @@ -4382,17 +4382,17 @@ "howWorksToggle": "Hoe het werkt", "howWorksContent": "1. Automatische extractie: aan het einde van elk antwoord worden feiten en episodes automatisch gedetecteerd en opgeslagen.\n2. Ophalen: voorafgaand aan elk antwoord wordt er gezocht naar de meest relevante herinneringen via FTS5 (exact), vector (semantisch) of hybride RRF.\n3. Injectie: relevante herinneringen worden in de context van de assistent geïnjecteerd om de kwaliteit van de antwoorden te verbeteren.\n4. Beheer: gebruik deze pagina om oude herinneringen te bekijken, te bewerken, te exporteren en te comprimeren." }, - "content": "Content", + "content": "Inhoud", "contentPlaceholder": "Waarde- of JSON-inhoud om te onthouden", - "created": "Created", - "delete": "Delete", + "created": "Aangemaakt", + "delete": "Verwijderen", "deleteConfirmDesc": "Deze actie kan niet ongedaan worden gemaakt. De herinnering wordt permanent verwijderd.", "deleteConfirmTitle": "Herinnering verwijderen?", - "description": "View and manage stored memory entries", + "description": "Opgeslagen geheugenitems bekijken en beheren", "editMemory": "Herinnering bewerken", "editModal": { "title": "Herinnering bewerken", - "metadataLabel": "Metadata (JSON)", + "metadataLabel": "Metagegevens (JSON)", "metadataInvalid": "Ongeldige JSON", "saveFailed": "Opslaan van herinnering mislukt" }, @@ -4405,7 +4405,7 @@ "staticDesc": "Lokale embedding zonder WASM of externe afhankelijkheden", "transformersLabel": "Transformers.js (MiniLM)", "transformersDesc": "Lokale embedding via @huggingface/transformers (~400MB RAM)", - "providerModelLabel": "Provider / Model", + "providerModelLabel": "Provider / model", "noRemoteProviders": "Geen providers met geconfigureerde API-sleutel", "selectProviderModel": "Selecteer een model", "customBaseUrlLabel": "Aangepaste basis-URL (optioneel)", @@ -4433,10 +4433,10 @@ "reindexFailed": "Starten van herindexeren mislukt", "keywordLabel": "Trefwoord (FTS5)", "keywordReason": "Zoeken op trefwoord is altijd beschikbaar", - "embeddingLabel": "Embedding", + "embeddingLabel": "Inbedding", "vectorStoreLabel": "Vector store", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Herrangschikken", "qdrantDisabled": "Uitgeschakeld", "qdrantOk": "Gezond ({latencyMs}ms)", "qdrantError": "Verbindingsfout", @@ -4444,25 +4444,25 @@ "configureCta": "Configureren", "vectorStoreInstallHint": "Om vectorgestuurd zoeken in te schakelen: npm install sqlite-vec (vereist native Node.js, niet WASM), start daarna opnieuw op." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodisch", + "export": "Exporteren", + "factual": "Feitelijk", "healthUnknown": "Gezondheid onbekend", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Trefferpercentage", + "import": "Importeren", "importError": "Importeren van bestand mislukt", "importResult": "{imported} geïmporteerd, {skipped} overgeslagen", - "key": "Key", + "key": "Sleutel", "keyPlaceholder": "bijv. gebruikersvoorkeuren.thema", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Geheugens", "next": "Volgende", - "noMemories": "No memories found", + "noMemories": "Geen geheugens gevonden", "pageInfo": "Pagina {page} van {totalPages} ({total} totaal)", "pipelineError": "Pijplijnfout", "pipelineOk": "Pijplijn OK ({latencyMs}ms)", "playground": { - "infoTitle": "Memory Playground", + "infoTitle": "Geheugenproeftuin", "infoDesc": "Simuleer wat er zou worden opgehaald voor een gegeven zoekopdracht. Er worden geen geheugens gewijzigd — alleen-lezen voorbeeld.", "queryLabel": "Testzoekopdracht", "queryPlaceholder": "Typ een vraag of testzin...", @@ -4474,18 +4474,18 @@ "simulate": "Simuleren", "resultsTitle": "{count} resulta(a)t(en)", "resolutionTitle": "Zoekresolutie", - "resolutionEmbedding": "Embedding", - "resolutionStore": "Vector store", + "resolutionEmbedding": "Inbedding", + "resolutionStore": "Vectoropslag", "resolutionStrategy": "Gebruikte strategie", "rerankApplied": "Rerank toegepast", - "fallback": "Fallback", + "fallback": "Terugvaloptie", "noResults": "Geen geheugens gevonden voor deze zoekopdracht.", "tokensUsed": "tokens gebruikt", "none": "geen", "errorFetch": "Ophalen van voorbeeld mislukt" }, "previous": "Vorige", - "procedural": "Procedural", + "procedural": "Procedureel", "qdrant": { "title": "Qdrant (Vector store Tier 2)", "description": "Optionele Qdrant-integratie voor schaalbaar semantisch zoeken", @@ -4534,8 +4534,8 @@ }, "save": "Opslaan", "saving": "Opslaan...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Herinneringen zoeken...", + "semantic": "Semantisch", "summarize": { "title": "Oude herinneringen comprimeren", "noCandidates": "Geen herinneringen die in aanmerking komen voor compressie (criteria: >30 dagen oud).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Herinneringen", - "playground": "Playground", + "playground": "Speelomgeving", "engine": "Engine" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Geheugenbeheer", + "tokensUsed": "Gebruikte tokens", "tooltip": { "totalEntries": "Totaal aantal herinneringen opgeslagen voor deze API-sleutel", "tokensUsed": "Geschat totaal aantal tokens ingenomen door actieve herinneringen", @@ -4558,18 +4558,18 @@ "procedural": "Procedures, workflows en instructies die de assistent moet volgen", "semantic": "Concepten, voorkeuren en domeinkennis" }, - "totalEntries": "Total Entries", + "totalEntries": "Totaal aantal vermeldingen", "type": "Type", "memoryEnabled": "Geheugen ingeschakeld" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Vaardigheden", + "description": "AI-vaardigheden beheren en monitoren", + "skillsTab": "Vaardigheden", + "executionsTab": "Uitvoeringen", "selectSkillToInspect": "Selecteer links een skill om te inspecteren.", "schemaTab": "Schema", - "handlerTab": "Handler", + "handlerTab": "Afhandelaar", "inputSchema": "Invoerschema", "outputSchema": "Uitvoerschema", "handlerCode": "Handlercode", @@ -4578,28 +4578,28 @@ "setModeAria": "Modus {mode} instellen", "uninstallSkill": "Skill deïnstalleren", "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "loading": "Vaardigheden laden...", + "noSkills": "Geen vaardigheden gevonden", + "noExecutions": "Geen uitvoeringen gevonden", + "enabled": "Ingeschakeld", + "disabled": "Uitgeschakeld", "delete": "Verwijderen", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", + "version": "Versie", + "tableDescription": "Beschrijving", + "skill": "Vaardigheid", "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "duration": "Duur", + "time": "Tijd", + "sandboxConfig": "Sandboxconfiguratie", + "cpuLimit": "CPU-limiet", + "cpuLimitDesc": "Maximale uitvoeringstijd per vaardigheid", + "memoryLimit": "Geheugenlimiet", + "memoryLimitDesc": "Maximale geheugentoewijzing", + "timeout": "Time-out", + "timeoutDesc": "Maximale wachttijd voor antwoord", + "networkAccess": "Netwerktoegang", + "networkAccessDesc": "Uitgaande netwerkverzoeken toestaan", + "mode": "Modus", "q": "Q", "filterSkillsPlaceholder": "Filter vaardigheden op naam, beschrijving of tag", "allModes": "Alle modi", @@ -4607,7 +4607,7 @@ "enabledSkills": "Ingeschakeld", "totalExecutions": "Uitvoeringen", "successRate": "Slagingspercentage", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Marktplaats", "applyFilters": "Filters toepassen", "popularDefaultsLabel": "Standaard populair voor geselecteerde provider:", "onMode": "AAN", @@ -4647,7 +4647,7 @@ "healthy": "Gezond", "degraded": "Gedegradeerd", "down": "Naar beneden", - "uptime": "Uptime", + "uptime": "Bedrijfstijd", "memory": "Geheugen", "memoryRss": "Geheugen (RSS)", "heap": "Hoop", @@ -4665,13 +4665,13 @@ "retry": "Opnieuw proberen", "allOperational": "Alle systemen operationeel", "issuesDetected": "Systeemproblemen gedetecteerd", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute is gereed", + "healthVerdictActionRequired": "Actie vereist om de volledige werking te herstellen", + "healthVerdictCoolingDown": "Afkoelen na recente wijzigingen", + "healthSubtitle": "Systeemstatuscontrole", + "advancedDiagnosticsTitle": "Geavanceerde diagnostiek", + "hide": "Verbergen", + "show": "Tonen", "updatedAt": "{time} bijgewerkt", "latency": "Latentie", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "Aanbieders", "configuredProvidersLabel": "Geconfigureerd in dashboard", "configuredProvidersHint": "Providers met inloggegevens opgeslagen in /dashboard/providers, ongeacht de runtimestatus.", - "activeProviders": "{count} active", + "activeProviders": "{count} actief", "activeProvidersHint": "Geconfigureerde providers die momenteel zijn ingeschakeld voor het routeren van verzoeken.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} gemonitord", "monitoredProvidersHint": "Providers worden momenteel gevolgd door gezondheidsmonitors van stroomonderbrekers.", "healthyCount": "{count} gezond", "nodeVersion": "Knooppunt {version}", @@ -4721,11 +4721,11 @@ "resetting": "Resetten...", "resetAll": "Alles resetten", "until": "Tot {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Uitgeput", + "learnedFromHeaders": "Afgeleid uit headers", + "remainingOfLimit": "{remaining}/{limit} resterend", + "throttleStatus": "Beperking: {value}", + "lastHeaderUpdate": "Headerupdate: {age}", "databaseHealth": "Databasestatus", "databaseHealthDescription": "Diagnosticeer en herstel verouderde quota-/domeinrijen en verbroken combo-verwijzingen.", "status": "Status", @@ -4773,11 +4773,11 @@ "inactive": "Inactief", "noConnectionId": "geen verbindings-id", "accountModelSummary": "{connectionId} · {count} modellen", - "cooldown": "cooldown", + "cooldown": "afkoelperiode", "durationRemaining": "{duration} resterend", "noSyncedModelsOrTraffic": "Nog geen gesynchroniseerde modellen of recent verkeer.", "providerRowSummary": "{active}/{total} actieve accounts · {requests} req · {successRate} succes · {latency} gem.", - "cooldownCount": "{count} cooldown", + "cooldownCount": "{count} in afkoelperiode", "lockoutCount": "{count} vergrendelingen", "issueCount": "{count} problemen", "score": "Score", @@ -4787,7 +4787,7 @@ "telemetry": { "title": "Systeemtelemetrie", "description": "Rolling request-, runtime-, sessie- en geheugensignalen van dit OmniRoute-proces.", - "uptime": "Uptime", + "uptime": "Beschikbaarheid", "totalRequests": "Totaal aantal verzoeken", "avgLatency": "Gem. latentie", "errorRate": "Foutpercentage", @@ -4810,7 +4810,7 @@ "running": "Rennen", "stopped": "Gestopt", "start": "Begin", - "stop": "Stop", + "stop": "Stoppen", "refresh": "Vernieuwen", "port": "Proxy-poort", "apiKey": "Router-API-sleutel", @@ -4888,28 +4888,28 @@ "previous": "Vorige", "next": "Volgende", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Details bekijken", + "eventMetadata": "Gebeurtenismetadata", + "eventPayload": "Gebeurtenisgegevens", + "requestId": "Aanvraag-ID", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", + "offset": "Verschuiving", + "limit": "Limiet", "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "resourceType": "Resourcetype", + "totalEntries": "Totaal aantal vermeldingen", + "tab": "Tabblad", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Sluiten", + "runningRequests": "Actieve aanvragen", + "runningRequestsDesc": "Realtimeweergave van momenteel actieve upstreamaanvragen", "clearAll": "Alles wissen", "confirmClearActiveRequests": "Alle actieve verzoeken wissen?", "model": "Model", - "provider": "Provider", + "provider": "Aanbieder", "account": "Account", - "elapsed": "Elapsed", + "elapsed": "Verstreken tijd", "activeStage": "Fase", "activeStageUnknown": "Nog niet verzonden naar upstream", "activeStageRegistered": "Geregistreerd", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Rate limit-slot verkregen", "activeStageSendingToProvider": "Verzenden naar upstream", "activeStageProviderResponseStarted": "Upstream-respons gestart", - "count": "Count", + "count": "Aantal", "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "viewPayloads": "Bekijken", + "activeCount": "{count} actief", + "clientPayload": "Payload van clientverzoek", + "upstreamPayload": "Payload van upstreamprovider", + "upstreamNotSentYet": "Nog niet naar upstream verzonden", + "runningRequestDetailMeta": "Account: {account} — Verstreken tijd: {elapsed}", + "export": "Exporteren", + "exporting": "Bezig met exporteren...", + "exportFailed": "Exporteren mislukt", "cleanHistoryButton": "Geschiedenis opschonen", "cleanHistoryTitle": "Loggeschiedenis opschonen?", "cleanHistoryMessage": "Dit wist permanent alle verzoeklogrijen, verouderde detailrijen en lokale artefactbestanden onder DATA_DIR/call_logs. De livepagina wordt na het opschonen vernieuwd.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} logvermeldingen, {deletedArtifacts} artefacten en {deletedDetailedLogs} verouderde detailrijen opgeschoond.", "cleanHistoryEmpty": "Er is geen aanvraagloggeschiedenis gevonden.", "cleanHistoryFailed": "Loggeschiedenis opschonen mislukt.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Tijdsbereik", + "lastNHours": "Afgelopen {hours}", + "defaultRange": "standaard", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Kan logboeken niet ophalen", + "copyFailed": "Kan logboekvermelding niet kopiëren", + "copyLogEntry": "Logboekvermelding kopiëren", "filterByLevel": "Filteren op logniveau", "searchPlaceholder": "Logs zoeken…", "searchAria": "Logitems zoeken", @@ -4987,9 +4987,9 @@ "multiProvider": "Meerdere aanbieders", "usageTracking": "Gebruik volgen", "securityDesc": "Stel een wachtwoord in om uw dashboard te beschermen, of sla dit voorlopig over.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Zonder wachtwoord kun je tijdens de configuratie geen providers toevoegen. Je kunt ze later vanuit het dashboard toevoegen nadat je een wachtwoord hebt ingesteld.", "providerDesc": "Sluit uw eerste AI-provider aan. Je kunt later meer toevoegen.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Je moet eerst een wachtwoord instellen om providers toe te voegen. Ga terug naar de beveiligingsstap en stel een wachtwoord in, of voeg providers later vanuit het dashboard toe.", "apiKeyRequired": "API-sleutel (vereist)", "customUrlOptional": "Aangepaste URL (optioneel)", "testDesc": "Laten we controleren of uw providerverbinding werkt.", @@ -5063,7 +5063,7 @@ "importFromFileDescription": "Upload een CSV- of JSON-bestand met meerdere providers (elke rij kan een ander providertype zijn). Controleer de verwerkte rijen hieronder en kies welke u wilt importeren.", "importFromFileChoose": "Bestand kiezen", "importFromFileSelectHint": "{count} van {total} geselecteerd", - "importFromFileColProvider": "Provider", + "importFromFileColProvider": "Aanbieder", "importFromFileColName": "Naam", "importFromFileColBaseUrl": "Basis-URL", "importFromFileErrorLine": "Rij {line}: {reason}", @@ -5076,15 +5076,18 @@ "importFromFileImporting": "Importeren…", "importFromFileImport": "{count} providers importeren", "importFromFileResult": "{success} providers geïmporteerd ({failed} mislukt)", + "importFromFileDownloadTemplate": "CSV-sjabloon downloaden", + "importFromFileMoreErrors": "Nog +{count}", + "importFromFileSchemaHint": "CSV-kolommen zijn positioneel: provider, name, apiKey, baseUrl (optioneel), priority (optioneel). De kolom provider moet een bestaande beheerde provider-id of een reeds geregistreerde OpenAI/Anthropic-compatibele node-id bevatten — met deze import worden geen nieuwe endpointnodes aangemaakt.", "adaptaTutorial": { "title": "Hoe Adapta Web te verbinden", "introPrefix": "Adapta authenticeert via Clerk. Het token", "introSuffix": "is een JWT met een lange levensduur waarmee OmniRoute sessies automatisch kan vernieuwen.", "or": "of", "step1Title": "Open Adapta-chat", - "step1DescPrefix": "Open", + "step1DescPrefix": "Openen", "step1DescSuffix": "en meld u aan met uw Gold- of Business-account.", - "step2Title": "Open DevTools", + "step2Title": "DevTools openen", "step2DescPrefix": "Druk op", "step2DescSuffix": "om Developer Tools te openen.", "step3Title": "Ga naar Application → Cookies", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} verborgen", "warningCount": "{count} Waarschuwing", "noConnections": "Geen verbindingen", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Verlopen", + "expiringSoonBadge": "Verloopt binnenkort", "freeTier": "Gratis niveau", "freeTierAvailable": "Gratis niveau beschikbaar", "hasFreeTooltip": "Gratis niveau beschikbaar", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Deze aanbieder is beëindigd", "riskNotice": { "title": "Voordat je doorgaat", - "detailsTitle": "Usage caveats", + "detailsTitle": "Aandachtspunten voor gebruik", "tooltip": "Provider met gebruiksvoorbehouden — klik voor details", "oauth": "Deze provider gebruikt je officiële productsessie/OAuth, die niet is geautoriseerd voor proxy-/routergebruik. We raden intensief gebruik van autonome agenten (OpenCloud-stijl, lange stappenreeksen, grote batches) af — de upstream kan reageren door het account te beperken of te blokkeren. Gebruik op eigen risico.", "webCookie": "Deze provider authenticeert via je websessiecookies. De upstream-dienst kan de sessie op elk moment ongeldig maken, waardoor je opnieuw moet inloggen. Niet aanbevolen voor langdurig onbeheerd gebruik. Gebruik op eigen risico.", @@ -5188,9 +5191,9 @@ "cancel": "Annuleren" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} verbinding(en) gemarkeerd — maximaal {maxFailures} recente fouten{lastFailureSuffix}. Klik om de verbindingsstatus te bekijken.", + "lastFailureSuffix": "(laatste fout {time})", + "ariaLabel": "Details van de verbindingsstatus bekijken, {count} waarschuwing(en)" }, "disabled": "Uitgeschakeld", "enableProvider": "Aanbieder inschakelen", @@ -5225,7 +5228,7 @@ "failedCreate": "Kan provider niet maken", "errorOccurred": "Er is een fout opgetreden. Probeer het opnieuw.", "modelStatus": "Modelstatus", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Alleen geconfigureerd", "allModelsOperational": "Alle modellen operationeel", "modelsWithIssues": "{count} model(len) met problemen", "allModelsNormal": "Alle modellen reageren normaal.", @@ -5236,7 +5239,7 @@ "clearing": "Wissen...", "until": "Tot {time}", "providerTestFailed": "Providertest mislukt", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Time-out bij providertest — te veel verbindingen om tegelijk te testen", "modeTest": "{mode} Testen", "passedCount": "{count} geslaagd", "failedCount": "{count} mislukt", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "Pictogram-URL", "iconUrlHint": "Optioneel. Afbeeldings-URL die wordt getoond als het pictogram van deze provider.", "iconUrlInvalid": "Ongeldige pictogram-URL. Gebruik een http(s):// of data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Tijdzone voor dagelijkse quotareset", + "dailyQuotaResetTimezoneHint": "Optionele IANA-tijdzone die wordt gebruikt wanneer de upstream X-RateLimit-Reset weglaat. Laat leeg om een korte afkoelperiode te behouden.", + "dailyQuotaResetHourLabel": "Uur waarop het dagelijkse quotum wordt gereset", + "dailyQuotaResetHourHint": "Lokaal uur van 0-23 in de bovenstaande tijdzone. Leeg betekent dat er geen klok op knooppuntniveau is.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Aanbieder niet gevonden", "deleteConnectionConfirm": "Deze verbinding verwijderen?", "deleteConnectionConfirmNamed": "Weet u zeker dat u {name} wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Geselecteerde verwijderen ({count})", + "batchDeleteConfirm": "{count} verbinding(en) verwijderen? Deze actie kan niet ongedaan worden gemaakt.", + "batchDeleteSuccess": "{count} verbinding(en) verwijderd", "batchActivateSelected": "Activeren", "batchDeactivateSelected": "Deactiveren", "batchRetestSelected": "Opnieuw testen", @@ -5292,7 +5295,7 @@ "filterError": "Fout", "filterBanned": "Geblokkeerd", "filterCreditsExhausted": "Tegoed op", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Accounts zoeken…", "noFilteredConnections": "Geen verbindingen komen overeen met het huidige filter.", "failedSetAlias": "Kan alias niet instellen", "setAliasSuccess": "Alias {alias} ingesteld", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "OpenAI-compatibele details", "messagesApi": "Berichten-API", "responsesApi": "Reacties-API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Inbeddingen", + "audioTranscriptions": "Audiotranscripties", + "audioSpeech": "Audiospraak", + "imagesGenerations": "Afbeeldingen genereren", "chatCompletions": "Chat-voltooiingen", "importingModels": "Importeren...", "importFromModels": "Importeren uit /modellen", - "modelsImported": "{count} models imported", + "modelsImported": "{count} modellen geïmporteerd", "allModelsAlreadyImported": "Alle modellen zijn al geïmporteerd", "noNewModelsToImport": "Geen nieuwe modellen om te importeren — alle modellen staan al in het register of de lijst met aangepaste modellen", "skippingExistingModels": "{count} bestaande modellen overgeslagen", @@ -5350,13 +5353,13 @@ "importFailed": "Importeren is mislukt", "noNewModelsAdded": "Er zijn geen nieuwe modellen toegevoegd.", "adding": "Toevoegen...", - "close": "Close", + "close": "Sluiten", "importingModelsTitle": "Modellen importeren", "copyModel": "Kopieermodel", "filterModels": "Modellen filteren…", "testAllRateLimited": "Limiet bereikt, vroegtijdig gestopt", "hideFailedAuto": "Mislukte modellen automatisch verbergen", - "selectAllModels": "Select all", + "selectAllModels": "Alles selecteren", "hideAllModels": "Alles verbergen", "modelsActive": "actief", "showModel": "Model tonen", @@ -5364,7 +5367,7 @@ "removeModel": "Model verwijderen", "rateLimitProtected": "Beschermd", "rateLimitUnprotected": "Onbeschermd", - "providerQuotaShort": "Quota", + "providerQuotaShort": "Quotum", "hideConnectionFromProviderQuota": "Verberg dit account voor Provider Quota", "showConnectionInProviderQuota": "Toon dit account in Provider Quota", "quotaVisibilityUpdateFailed": "Bijwerken van zichtbaarheid van Provider Quota mislukt", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Eén sleutel per regel. Formaat: naam|apiKey of gewoon apiKey (automatisch benoemd door index).", "bulkValidateKeys": "Valideer elke sleutel voordat u deze opslaat (langzamer)", "bulkAddAllKeys": "Voeg alle sleutels toe", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# sleutel toegevoegd} other {# sleutels toegevoegd}}", + "bulkFailedCount": "{count, plural, one {# mislukt} other {# mislukt}}", "optional": "Optioneel", "anthropicCompatibleName": "Antropisch compatibel", "openaiCompatibleName": "OpenAI-compatibel", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Er is een onverwachte fout opgetreden", "getApiKey": "API-sleutel ophalen", "getApiKeyDescription": "Registreer of meld je aan voor een API-sleutel", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# verbinding} other {# verbindingen}}", "messagesPath": "berichten", "responsesPath": "reacties", "chatCompletionsPath": "chat/voltooiingen", @@ -5419,17 +5422,17 @@ "configured": "geconfigureerd", "providerProxyConfigureHint": "Configureer proxy voor alle verbindingen van deze provider", "providerProxy": "Proxy van aanbieder", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": ".env herstellen", + "repairEnvWorking": "Bezig met herstellen...", + "repairEnvHint": "Herstel ontbrekende standaardwaarden voor OAuth in .env zonder bestaande waarden te overschrijven.", + "repairEnvSuccess": "Standaardwaarden voor OAuth hersteld", + "repairEnvFailed": "Herstellen van .env mislukt", "noConnectionsYet": "Nog geen verbindingen", "addFirstConnectionHint": "Voeg uw eerste verbinding toe om aan de slag te gaan", "addConnection": "Verbinding toevoegen", "availableModels": "Beschikbare modellen", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Ingebouwde modellen", + "builtInModelsHint": "Registermodellen voor deze provider. Gebruik het potlood om compatibiliteitsopties in te stellen.", "pageAutoRefresh": "Pagina wordt automatisch vernieuwd...", "statusDisabled": "uitgeschakeld", "statusConnected": "verbonden", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Authenticeer deze verbinding opnieuw", "proxyConfig": "Proxy-configuratie", "aliasExistsAlert": "Alias \"{alias}\" bestaat al. Gebruik een ander model of bewerk de bestaande alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "aliasnaam", + "clickToSetAlias": "Klik om alias in te stellen", + "clickToEditAlias": "Alias: {alias} (klik om te bewerken)", "openRouterAnyModelHint": "OpenRouter ondersteunt elk model. Voeg modellen toe en maak aliassen voor snelle toegang.", "modelIdFromOpenRouter": "Model-ID (van OpenRouter)", "openRouterModelPlaceholder": "antropisch/claude-3-opus", "customModels": "Aangepaste modellen", "customModelsHint": "Voeg model-ID's toe die niet in de standaardlijst staan. Deze zullen beschikbaar zijn voor routering.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normaliseer toolaanroep-ID's naar 9 tekens (bijv. Mistral)", + "preserveDeveloperRoleLabel": "Behoud de ontwikkelaarsrol van OpenAI Responses (niet toewijzen aan system)", + "compatAdjustmentsTitle": "Compatibiliteit", + "compatButtonLabel": "Compatibiliteit", + "compatToolIdShort": "Tool-ID 9", + "compatDeveloperShort": "Ontwikkelaarsrol", + "compatDoNotPreserveDeveloper": "Ontwikkelaarsrol niet behouden", + "compatBadgeNoPreserve": "Niet behouden", + "compatProtocolLabel": "Protocol voor clientverzoeken", + "compatProtocolHint": "Deze opties zijn van toepassing wanneer OmniRoute deze verzoekstructuur detecteert (OpenAI Chat, Responses API of Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,24 +5537,24 @@ "interceptFetchHint": "Herschrijf systeemeigen web_fetch-tool-aanroepen naar /v1/web/fetch van OmniRoute.", "interceptionLoadError": "Laden van onderscheppingsinstellingen mislukt: {error}", "interceptionSaveError": "Opslaan van onderscheppingsinstellingen mislukt: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", + "ccAliasSectionTitle": "Beschikbaar maken in Claude Code (claude/…)", + "ccAliasSectionHint": "Bied de modellen van deze provider aan onder gespiegelde id's met de indeling claude/<provider>/<model>, zodat ze kunnen worden vermeld via de modeldetectie van de gateway van Claude Code. Standaard uitgeschakeld — als u dit inschakelt, verdubbelt het aantal catalogusvermeldingen voor alle clients.", + "ccAliasProviderLevelLabel": "Standaardinstelling van provider", + "ccAliasModelOverridesLabel": "Overschrijvingen per model", + "ccAliasModelOverrideAriaLabel": "Overschrijving voor {modelId}", + "ccAliasStateInherit": "Overnemen", + "ccAliasStateOn": "Aan", + "ccAliasStateOff": "Uit", + "ccAliasAddModelPlaceholder": "Model-id (bijv. gpt-4o)", + "ccAliasAddModelButton": "Overschrijving toevoegen", + "ccAliasLoadError": "Kan instellingen voor detectiealiassen niet laden: {error}", + "ccAliasSaveError": "Kan instelling voor detectiealias niet opslaan: {error}", + "compatUpstreamHeadersLabel": "Extra upstream-headers", + "compatUpstreamHeadersHint": "Instelling met hoge bevoegdheden — hetzelfde vertrouwensniveau als het bewerken van API-inloggegevens van de provider; alleen vertrouwde beheerders mogen deze gebruiken. Wordt samengevoegd nadat OmniRoute authenticatie via de API-sleutel van de provider heeft toegevoegd. Als een aangepaste header dezelfde naam gebruikt als een bestaande header (bijv. Authorization), vervangt uw waarde de automatisch gegenereerde header volledig (inclusief het Bearer-token) — de upstream ziet alleen wat u hebt ingevoerd, niet de sleutel uit de instellingen. Een verkeerde configuratie kan een 401-fout of defecte upstream-authenticatie veroorzaken. Eén rij per header (bijv. extra Authentication voor sommige gateways). Plaats de muisaanwijzer op de waarde of geef deze focus om een voorbeeld te bekijken. Wordt opgeslagen bij verlies van focus, klikken buiten dit paneel of het sluiten ervan.", + "compatUpstreamHeaderName": "Headernaam", + "compatUpstreamHeaderValue": "Waarde", + "compatUpstreamAddRow": "Header toevoegen", + "compatUpstreamRemoveRow": "Rij verwijderen", "compatBadgeUpstreamHeaders": "Headers", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", @@ -5592,26 +5595,26 @@ "email": "E-mail", "healthCheckMinutes": "Gezondheidscontrole (min)", "healthCheckHint": "Proactief tokenvernieuwingsinterval. 0 = uitgeschakeld.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Alles deselecteren", + "modelsActiveCount": "{active}/{total} actief", + "noModelsMatch": "Geen modellen komen overeen met \"{filter}\"", + "groupLabel": "Omgeving", + "groupPlaceholder": "bijv. eKaizen, Persoonlijk", "failedTestConnection": "Kan de verbinding niet testen", "failed": "Mislukt", "leaveBlankKeepCurrentApiKey": "Laat dit leeg om de huidige API-sleutel te behouden.", "editCompatibleTitle": "Bewerk {type} Compatibel", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "Basis-URL van uw {type}-compatibele API. Gebruik Geavanceerde instellingen voor aangepaste endpointpaden.", "apiKeyForCheck": "API-sleutel (ter controle)", "testModelIdLabel": "Model-ID (optioneel)", "testModelIdPlaceholder": "bijv. my-model-id", "testModelIdHint": "Als de provider geen /models-endpoint heeft, voer dan een model-ID in om in plaats daarvan te valideren via /chat/completions.", "compatibleProdPlaceholder": "{type} Compatibel (product)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Token vernieuwd", + "tokenRefreshFailed": "Vernieuwen van token mislukt", "cursorSessionUnchanged": "Sessie al actueel", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Authenticatie toepassen", + "exportCodexAuthFile": "Authenticatie exporteren", "applyClaudeAuthLocal": "Autorisatie toepassen", "exportClaudeAuthFile": "Autorisatie exporteren", "importClaudeAuth": "Autorisatie importeren", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} mislukt", "codexImportBulkZipExtracting": "ZIP uitpakken...", "codexImportBulkZipError": "Kan ZIP niet uitpakken", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Geavanceerde instellingen", + "chatPathLabel": "Pad van chatendpoint", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Aangepast chatpad voor providers met niet-standaard-API's (bijv. /v4/chat/completions)", + "modelsPathLabel": "Pad van modellenendpoint", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Aangepast modellenpad voor validatie (bijv. /v4/models)", "clientIdentityLabel": "Clientidentiteit", "clientIdentityHint": "Optioneel. Voegt client-fingerprint-headers toe (bijv. User-Agent) die overeenkomen met een bekende CLI voor compatibele gateways die er een verwachten.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Gedeactiveerd (handmatig)", + "statusBanned": "Geblokkeerd / schending van sandboxregels", + "statusCreditsExhausted": "Onvoldoende saldo / quotum opgebruikt", + "showEmails": "Alle e-mails tonen", + "hideEmails": "Alle e-mails verbergen", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Nog een API-sleutel toevoegen of meerdere sleutels plakken", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Aggregatorgateways", "enterpriseCloud": "Onderneming en cloud", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Label voor API-indeling", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", + "apiRegionChina": "API-regio China", + "apiRegionHint": "Hint voor API-regio", + "apiRegionInternational": "API-regio Internationaal", + "apiRegionLabel": "Label voor API-regio", + "apikey": "API-sleutel", "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "audioProvidersHeading": "Koptekst voor audioproviders", "cloudAgentProviders": "Aanbieders van cloudagenten", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Kort label voor audio", + "azureOpenAiBaseUrlHint": "Hint voor Azure Open AI-basis-URL", + "bailianBaseUrlHint": "Hint voor Bailian-basis-URL", + "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai en kopieer de waarde van 'sessionKey'. cf_clearance, __cf_bm en _cfuvid zijn ook vereist voor Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Hint voor Blackbox Web-cookie", + "blackboxWebCookiePlaceholder": "Tijdelijke aanduiding voor Blackbox Web-cookie", "t3ChatWebCookieHint": "Open t3.chat → DevTools → Applicatie → Lokale opslag → https://t3.chat, kopieer 'convex-session-id'. Open vervolgens DevTools → Netwerk en kopieer de volledige Cookie-header van elk chatverzoek. Plak beide waarden in de onderstaande velden.", "t3ChatWebCookiePlaceholder": "convexe-sessie-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Hint voor Grok Web-cookie", "blockClaudeExtraUsageDescription": "Wanneer ingeschakeld, markeert OmniRoute deze Claude-verbinding als niet beschikbaar zodra de usage API gerapporteerde extra gebruik in de wachtrij plaatst, zodat de fallback overschakelt naar een andere verbinding in plaats van door te gaan met pay-as-you-go extra facturering.", "blockClaudeExtraUsageLabel": "Blokkeer extra Claude-gebruik", "disableCoolingDescription": "Sla de tijdelijke afkoelperiode over, zodat deze verbinding in aanmerking blijft komen, zelfs na herstelbare fouten (definitieve statussen zoals verbannen/verlopen zijn nog steeds van toepassing).", "disableCoolingLabel": "Afkoelperiode uitschakelen voor deze verbinding", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 sleutel toegevoegd} other {# sleutels toegevoegd}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicaat overgeslagen} other {# duplicaten overgeslagen}}", + "bulkPasteHint": "Plak één API-sleutel per regel. Lege regels worden genegeerd en dubbele sleutels worden overgeslagen.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Voegt de bètaheader voor redact-thinking toe voor CC Compatible-upstreams die verborgen Claude-denkstreams vereisen.", + "ccCompatibleRedactThinkingLabel": "Bètafunctie redact-thinking inschakelen", + "ccCompatibleSummarizeThinkingDescription": "Voegt `display: \"summarized\"` toe aan CC Compatible-denkverzoeken, zodat ondersteunde Claude-modellen zichtbare denkdelta's streamen.", + "ccCompatibleSummarizeThinkingLabel": "Samengevatte weergave van denkproces inschakelen", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,20 +5811,20 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Gebruik waar mogelijk de prioriteitsservicelaag voor Codex-verzoeken.", + "codexFastServiceTierLabel": "Snelle Codex-servicelaag", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Tijdelijke aanduiding voor headernaam van compatibele upstream", + "compatUpstreamHeaderValuePlaceholder": "Tijdelijke aanduiding voor headerwaarde van compatibele upstream", + "compatible": "Compatibel", + "configuredCount": "Aantal geconfigureerd", + "consoleApiKeyOracleHint": "Hint voor Console API Key Oracle", + "consoleApiKeyOracleLabel": "Label voor Console API Key Oracle", + "consoleApiKeyOraclePlaceholder": "Tijdelijke aanduiding voor Console API Key Oracle", "newApiUserIdLabel": "New-API-gebruikers-ID", "newApiUserIdPlaceholder": "bijv. 12345", "newApiUserIdHint": "Waarde van de New-Api-User-header van AgentRouter, gebruikt samen met de console-API-sleutel om het quotasaldo op te halen.", - "newApiAggregatorToggleLabel": "Aggregator Gateway", + "newApiAggregatorToggleLabel": "Aggregatorgateway", "newApiAggregatorToggleHint": "Schakel balansdetectie in voor New-API / One-API / Sub2API aggregator nodes. Het dashboard toont de balansbadge en quota-preflight routering zal uitgeputte accounts overslaan.", "newApiAggregatorConsoleApiKeyHint": "Systeemtoegangstoken voor de aggregator's /api/user/self eindpunt. Niet de routerings-API-sleutel.", "newApiAggregatorUserIdHint": "New-Api-User headerwaarde gebruikt om de quotabalans van de aggregator-gebruiker op te halen.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Schakel balansdetectie in voor New-API / One-API / Sub2API aggregator compatibele knooppunten", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Hint voor aangepaste user-agent", + "customUserAgentLabel": "Label voor aangepaste user-agent", + "databricksBaseUrlHint": "Hint voor Databricks-basis-URL", + "defaultThinkingStrengthHint": "Wordt gebruikt wanneer in een verzoek geen redeneerinspanning is opgegeven.", + "defaultThinkingStrengthLabel": "Standaard denkkracht", + "deleteAllExtraApiKeys": "Alles verwijderen", + "excludedModelsHint": "Hint voor uitgesloten modellen", + "excludedModelsLabel": "Label voor uitgesloten modellen", + "excludedModelsPlaceholder": "Plaatshouder voor uitgesloten modellen", + "expirationBannerExpired": "Vervaldatumbanner: verlopen", + "expirationBannerExpiredDesc": "Beschrijving van vervaldatumbanner: verlopen", + "expirationBannerExpiringSoon": "Vervaldatumbanner: verloopt binnenkort", + "expirationBannerExpiringSoonDesc": "Beschrijving van vervaldatumbanner: verloopt binnenkort", + "extraApiKeyMasked": "Sleutel {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Hint voor extra API-sleutels", + "extraApiKeysLabel": "Label voor extra API-sleutels", + "apiKeyHealthLabel": "Status van API-sleutel", + "apiKeyStatusActive": "Actief", + "apiKeyStatusWarning": "Waarschuwing ({count} mislukkingen)", + "apiKeyStatusInvalid": "Ongeldig", + "primaryKey": "Primaire sleutel", + "apiKeyInvalidAlert": "{count} API-sleutel(s) als ongeldig gemarkeerd vanwege authenticatiefouten in verbindingen: {connections}. Ze worden overgeslagen bij de rotatie. Klik om te controleren.", + "apiKeyInvalidAlertTitle": "Statuswaarschuwing voor API-sleutels", + "apiKeyWarningAlert": "{count} API-sleutel(s) met de waarschuwingsstatus vanwege een verhoogd foutpercentage in verbindingen: {connections}. Controleer ze om rotatieproblemen te voorkomen.", + "apiKeyWarningAlertTitle": "Waarschuwing voor API-sleutel", + "googlePseInfo": "Informatie over Google PSE", "antigravityProjectIdHint": "Optionele overschrijving voor Antigravity Cloud Code-verzoeken. Laat dit veld leeg om het project te gebruiken dat tijdens Google OAuth is ontdekt.", "antigravityClientProfileLabel": "Clientprofiel", "antigravityClientProfileHint": "Kies welke Antigravity-clientidentiteit OmniRoute aan de API presenteert.", @@ -5865,18 +5868,18 @@ "tierFast": "Snel", "antigravityProjectIdLabel": "Google Cloud-project-ID", "antigravityProjectIdPlaceholder": "mijn-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Plaatshouder voor Grok Web-cookie", + "herokuBaseUrlHint": "Hint voor Heroku-basis-URL", + "hideEmail": "E-mailadres verbergen", + "imageProviders": "Afbeeldingsproviders", "videoProviders": "Videogeneratie", "embeddingRerankProviders": "Insluitingen en herrangschikking", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Kort label voor afbeeldingen", + "llmProviders": "LLM-providers", + "localProviderApiKeyOptionalHint": "Hint voor optionele API-sleutel van lokale provider", + "localProviderBaseUrlHint": "Hint voor basis-URL van lokale provider", + "localProviders": "Lokale providers", + "maxConcurrentWholeNumberError": "Fout: maximum aantal gelijktijdige aanvragen moet een geheel getal zijn", "m365TierLabel": "Copilot-tier", "m365TierHint": "Kies welke Microsoft 365 Copilot-omgeving deze verbinding gebruikt. Individueel is de standaard consumenten-BizChat; Onderwijs en Enterprise (werk) kiezen voor hun tenant-omgevingen.", "m365TierIndividualOption": "Individueel (standaard)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Goedkoop", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Zet deze provider vast op een routerings-tier in plaats van OmniRoute dit te laten afleiden uit de modelprijzen.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Hint voor Muse Spark Web-cookie", + "museSparkWebCookiePlaceholder": "Plaatshouder voor Muse Spark Web-cookie", + "oauth": "OAuth", + "openCliTools": "CLI-tools openen", + "openSettings": "Instellingen openen", + "openaiResponsesStoreDescription": "Toestaan dat compatibele Responses API-verzoeken de opgeslagen responsstatus behouden.", + "openaiResponsesStoreLabel": "OpenAI Responses-opslag", + "perplexitySearchSharedKeyInfo": "Informatie over gedeelde sleutel voor Perplexity Search", + "perplexityWebCookieHint": "Hint voor Perplexity Web-cookie", + "perplexityWebCookiePlaceholder": "Tijdelijke aanduiding voor Perplexity Web-cookie", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Rate limit-overschrijvingen", "rateLimitOverridesMaxConcurrentHint": "Overschrijving van het maximaal aantal gelijktijdige verzoeken voor deze verbinding. Overschrijft de limiet op accountniveau.", "rateLimitOverridesMaxConcurrentLabel": "Max. gelijktijdig (rate limit)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Maximale tijd (ms) dat een verzoek op een plek binnen de snelheidslimiet mag wachten voordat het mislukt. Overschrijft de algemene weerbaarheidsinstelling alleen voor deze verbinding.", + "rateLimitOverridesMaxWaitMsLabel": "Max. wachttijd in wachtrij (ms)", "rateLimitOverridesMinTimeHint": "Minimale tijd (ms) tussen verzoeken. Overschrijft de standaardvertraging van de rate limiter.", "rateLimitOverridesMinTimeLabel": "Min. interval (ms)", "rateLimitOverridesRpdHint": "Maximaal aantal verzoeken per dag voor deze verbinding. Overschrijft de standaardinstelling van de provider.", @@ -5915,55 +5918,55 @@ "rateLimitOverridesTpdHint": "Maximaal aantal tokens per dag voor deze verbinding. Overschrijft de standaardwaarde van de provider.", "rateLimitOverridesTpdLabel": "TPD (Tokens/dag)", "rateLimitOverridesTpmHint": "Maximaal aantal tokens per minuut voor deze verbinding. Overschrijft de standaardwaarde van de provider.", - "rateLimitOverridesTpmLabel": "TPM (Tokens/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "rateLimitOverridesTpmLabel": "TPM (tokens/min)", + "refreshOauthTokenTitle": "Titel voor vernieuwen van OAuth-token", + "regionHint": "Regiohint", + "regionLabel": "Regiolabel", + "removeThisKey": "Deze sleutel verwijderen", + "routingTagsHint": "Hint voor routeringstags", + "routingTagsLabel": "Label voor routeringstags", + "routingTagsPlaceholder": "Tijdelijke aanduiding voor routeringstags", + "search": "Zoeken", + "searchEngineIdHint": "Hint voor zoekmachine-ID", + "searchEngineIdLabel": "Label voor zoekmachine-ID", + "searchEngineIdRequired": "Zoekmachine-ID vereist", + "searchProvider": "Zoekprovider", + "searchProviderDesc": "Beschrijving van zoekprovider", "searchProviders": "Zoekaanbieders...", "searchByModel": "Zoeken op model…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Koptekst voor zoekproviders", + "searxngBaseUrlHint": "Hint voor Searxng-basis-URL", + "searxngInfo": "Searxng-informatie", + "sessionCookieLabel": "Label voor sessiecookie", + "showEmail": "E-mailadres tonen", + "snowflakeBaseUrlHint": "Hint voor Snowflake-basis-URL", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Hint voor taggroep", + "tagGroupLabel": "Label voor taggroep", + "tagGroupPlaceholder": "Tijdelijke aanduiding voor taggroep", + "testModel": "Model testen", + "testingModel": "Model wordt getest", "modelTestQuotaTooltip": "Quota uitgeput — wordt morgen gereset of heeft een aanvulling nodig", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Badge voor verlopen token", + "tokenExpiredTitle": "Titel voor verlopen token", + "tokenExpiresSoonTitle": "Titel voor token dat binnenkort verloopt", + "tokenShort": "Token kort", + "totalKeysRotating": "{count, plural, one {1 sleutel wordt geroteerd} other {# sleutels worden geroteerd}}", + "unhideModel": "Model zichtbaar maken", + "upstreamProxyProviders": "Upstream-proxyproviders", "validationModelIdHint": "Model dat wordt gebruikt om de API-sleutel te verifiëren. Laat leeg om het eerste beschikbare model van de provider te gebruiken.", "validationModelIdLabel": "Validatiemodel", "validationModelIdPlaceholder": "bijv. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Plak je Service Account-JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) of een OAuth-access_token", + "webCookieProviders": "Webcookieproviders", + "weeklyShort": "Wekelijks kort", + "xiaomiMimoBaseUrlHint": "Hint voor Xiaomi Mimo-basis-URL", "globalCodexServiceMode": "Globale Codex-servicemodus", "connect": "Verbinden", "manualApiKey": "Handmatige API-sleutel", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Ontdek inloggegevens van AI-providers (OpenAI, Anthropic, Google, Mistral, xAI) die door Zed IDE zijn opgeslagen in de sleutelhanger van het besturingssysteem en importeer ze als verbindingen. Zed IDE moet op deze machine zijn geïnstalleerd.", "zedImportButton": "Importeren vanuit Zed", "zedImportFailed": "Zed importeren mislukt", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Hint voor Zed-import", + "zedImportNetworkError": "Netwerkfout bij Zed-import", + "zedImportNone": "Geen Zed-import", "zedImportSuccess": "Geïmporteerde {credentials} referentie(s) van Zed voor {providers} provider(s)", "zedImporting": "Importeren…", "zedNoCredentials": "Geen Zed-inloggegevens gevonden in de sleutelhanger", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "item {number}", "claudeImportParseError": "parsefout", "claudeImportNoValidEntries": "Geen geldige items om te importeren", - "webFetch": "Web Fetch", + "webFetch": "Web ophalen", "webFetchTooltip": "Providers die inhoud extraheren uit web-URL's (HTML → Markdown, scrapen, screenshot)", "webFetchProvidersHeading": "Web Fetch-providers", "compatibleProvidersDesc": "OpenAI-compatibele en Anthropic-compatibele eindpunten die u host of configureert. Verwijs elke OpenAI SDK naar uw eigen URL en leid verzoeken hiernaartoe.", @@ -6175,7 +6178,7 @@ "freeaiapikey": "API-proxy met korting voor meer dan 40 modellen, waaronder GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Haal je API-sleutel op via https://freeaiapikey.com/dashboard. Basis-URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Ontvang $300 gratis API-tegoed op https://freemodel.dev — geen betalingsgegevens vereist. OpenAI-compatibel eindpunt. GPT-5.4- en GPT-5.5-modellen beschikbaar.", "friendliai": "Gratis abonnement voor serverloze inferentie — geen creditcard vereist", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Gratis niveau via Google AI Studio; quota per model worden niet langer gepubliceerd (bekijk de quotapagina in AI Studio) — geen creditcard vereist.", "gigachat": "Verbind GigaChat (Sber) met een API-sleutel.", "gitlab": "Persoonlijk toegangstoken van GitLab voor de openbare Code Suggestions-API. Configureer een zelf-gehoste basis-URL als je gitlab.com niet gebruikt.", "gitlawb-gmi": "Haal je API-sleutel op uit het Gitlawb Opengateway-dashboard.", @@ -6184,7 +6187,7 @@ "glm-cn": "Verbind GLM Coding (China) met een API-sleutel.", "glmt": "Vooraf ingesteld GLM-profiel met een hoger tokenbudget, denken ingeschakeld en een langere time-out.", "getgoapi": "Verbind GoAPI met een API-sleutel.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Gratis abonnement: limieten per model (200K tokens/dag per chatmodel; zie console.groq.com/docs/rate-limits voor RPM/RPD) — geen betaalmethode geregistreerd.", "haiper": "Haal de API-sleutel op via haiper.ai/haiper-api", "heroku": "Verbind Heroku AI met een API-sleutel.", "hcnsec": "Haal de API-sleutel op via api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Maak een API-sleutel aan op https://app.requesty.ai en plak deze hier als een Bearer-token. OpenAI-compatibel eindpunt op https://router.requesty.ai/v1, met een live /v1/models-catalogus.", "runwayml": "Runway-videogeneratie is taakgebaseerd. OmniRoute dient text-to-video- of image-to-video-taken in, peilt /v1/tasks/[id] en normaliseert de voltooide video-uitvoer terug naar het OpenAI-achtige /v1/videos/generations-antwoord.", "sambanova": "$5 gratis tegoed bij aanmelding (30 dagen geldig), geen creditcard vereist", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Maak een API-sleutel aan op https://seekai.cc en plak deze hier als Bearer-token. OpenAI-compatibele basis-URL: https://seekai.cc/v1.", "sap": "Modeldetectie gebruikt /v2/lm/scenarios/foundation-models/models op AI_API_URL. Chatverzoeken gebruiken deploymentUrl/chat/completions en vereisen AI-Resource-Group.", "sarvam": "Sarvam AI is OpenAI-compatibel op /v1. OmniRoute onderzoekt /v1/models en leidt chatverkeer naar /v1/chat/completions. Modellen zijn afgestemd op Indic-talen.", "scaleway": "1M gratis tokens voor nieuwe accounts — EU/AVG-conform (Parijs), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Verbind Claude Code met de bestaande OAuth-flow.", "cline": "Verbind Cline met de bestaande OAuth-flow.", "cursor": "Verbind Cursor IDE met de bestaande OAuth-flow.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Verbind Cursor met een gebruikers-API-sleutel (crsr_...) van cursor.com/dashboard/api; geen IDE-sessie nodig.", "github": "Verbind GitHub Copilot met de bestaande OAuth-flow.", "gitlab-duo": "OAuth-applicatie met ai_features + read_user scopes. Configureer GITLAB_DUO_OAUTH_CLIENT_ID en optioneel GITLAB_DUO_OAUTH_CLIENT_SECRET op deze OmniRoute-instantie.", "kilocode": "Verbind Kilo Code met de bestaande OAuth-flow.", @@ -6323,7 +6326,7 @@ "bedrockModelsDescription": "Amazon Bedrock-modellen zijn afgestemd op de AWS-regio. Importeer uit /models of voeg Bedrock-model-ID's toe die zijn ingeschakeld in de geselecteerde regio.", "bedrockModelPlaceholder": "antropisch.claude-sonnet-4-6", "addProviderSessionCookieTitle": "Voeg {provider} sessiecookie toe", - "openWebProviderSite": "Open {host}", + "openWebProviderSite": "{host} openen", "addProviderWebTokenTitle": "Voeg {provider} webtoken toe", "addProviderConnectionTitle": "Voeg {provider}-verbinding toe", "webTokenCredentialLabel": "Token voor websessie", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Kopieer de vereiste inloggegevens uit het eigen domein van de provider. Kopieer voor cookies alleen de waarde van de Cookie-header en laat Cookie: weg.", "webSessionGuideStep3Manual": "Handmatige pad: open de browserontwikkelaarstools (F12 → Netwerk), vernieuw de pagina, open een geauthenticeerd verzoek en kopieer de waarde van de Cookie-header uit de Verzoekheaders — laat de Cookie: prefix weg.", "webSessionGuideStep4": "Plak het hier en controleer de verbinding. Als het niet meer werkt, logt u opnieuw in en vervangt u het door een nieuwe waarde.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har-bestand importeren", + "harImportButtonBusy": "Importeren…", + "harImportButtonHint": "Exporteer vanuit het tabblad Network van DevTools nadat je ten minste één chatbericht hebt verzonden.", + "harImportStatusValid": "Geïmporteerd — nog ~{minutes}m geldig.", + "harImportStatusExpiringSoon": "Geïmporteerd — nog slechts ~{minutes}m geldig.", + "harImportStatusExpired": "Geïmporteerd, maar dit token is al verlopen ({minutes}m geleden) — exporteer een nieuw HAR-bestand.", + "harImportStatusUnknownExpiry": "Geïmporteerd. De vervaldatum kon niet worden gelezen.", + "harImportErrorNotJson": "Dat bestand bevat geen geldige JSON — is het echt een .har-export?", + "harImportErrorNoEntries": "Deze HAR bevat geen geregistreerde netwerkvermeldingen.", + "harImportErrorNoChathubUrl": "Geen Copilot-chatverbinding gevonden in deze HAR. Stuur ten minste één chatbericht in m365.cloud.microsoft voordat je exporteert.", + "harImportErrorUnparsableUrl": "De chatverbinding is gevonden, maar de URL kon niet worden gelezen.", + "harImportErrorMissingFields": "De chatverbinding is gevonden, maar het token ontbrak.", + "harImportErrorReadFailed": "Dat bestand kon niet worden gelezen.", + "harImportErrorUnknown": "Er kon geen inloggegeven uit dat HAR-bestand worden gehaald.", "webSessionSecurityHint": "Behandel dit als een wachtwoord: het heeft toegang tot uw ingelogde webaccount totdat het verloopt of wordt ingetrokken.", "webNoAuthGuideTitle": "Geen legitimatie vereist", "webNoAuthGuideBody": "{provider} heeft geen API-sleutel of cookie nodig. Sla de verbinding op om het gratis webeindpunt te gebruiken.", @@ -6365,7 +6368,7 @@ "huggingchatLabel": "HuggingChat (Gratis)", "huggingchatDesc": "Gratis LLM-chat via huggingface.co/chat", "poeWebLabel": "Poe Web", - "poeWebDesc": "Multi-model chat via poe.com", + "poeWebDesc": "Chat met meerdere modellen via poe.com", "veniceWebLabel": "Venice Web", "veniceWebDesc": "Privacygerichte AI-chat", "v0VercelWebLabel": "v0 Vercel Web", @@ -6405,7 +6408,7 @@ "batchUpdateFailed": "Batch-update mislukt", "batchUpdateNetworkError": "Netwerkfout tijdens batchupdate", "categoryAudio": "Audio", - "categoryCloudAgent": "Cloud Agent", + "categoryCloudAgent": "Cloudagent", "categoryIde": "IDE", "categoryLocal": "Lokaal", "categorySearch": "Zoeken", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Opdrachtcode is verlopen", "commandCodeConnected": "Opdrachtcode verbonden", "commandCodeConnectionAdded": "Command Code verbinding toegevoegd", + "clearConnectionCooldown": "Afkoelperiode wissen", + "clearConnectionCooldownInProgress": "Wissen…", + "clearConnectionCooldownTitle": "Wis de afkoelperiode nu — gebruik dit wanneer het quota upstream al is vernieuwd", "commandCodeLinkExpired": "De link voor de opdrachtcode is verlopen", "commandCodeOpeningStudio": "Opdracht Code Studio openen…", "commandCodePopupBlocked": "Pop-up geblokkeerd. Sta pop-ups toe en probeer Command Code Connect opnieuw.", "commandCodeStartFailed": "Kon opdracht Code auth niet starten", "connectionDeleted": "Verbinding verwijderd", "connectionFallback": "verbinding", + "connectionCooldownCleared": "Cooldown gewist — verbinding opnieuw aan routering toegevoegd", "coolingConnectionsDescription": "Deze verbindingen koelen af na hun laatste verzoek. OmniRoute slaat ze over tot de timer verloopt — handmatig uitschakelen is niet nodig.", "coolingConnectionsTitle": "Momenteel aan het koelen ({count})", + "failedClearConnectionCooldown": "Wissen van cooldown mislukt", "failedDeleteAlias": "Kon alias niet verwijderen", "failedDeleteConnection": "Verbinding verwijderen mislukt", "failedDistributeProxies": "Mislukt om proxies te distribueren.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Instellingen voor opgeslagen model-eindpunt", "searchByModelAria": "Zoeken op model", "selectSupportedEndpoint": "Selecteer ten minste één ondersteunde eindpunt", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Testomgeving / CLI" }, "settings": { "title": "Instellingen", @@ -6554,29 +6557,29 @@ "systemPrompt": "Systeemprompt", "thinkingBudget": "Denkbudget", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP-proxy", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", + "proxySubTabsAria": "Proxysecties", + "requestBodyLimitTitle": "Limiet voor aanvraagbody", + "requestBodyLimitDescription": "Maximale grootte van de API-payload die wordt geaccepteerd voordat een aanvraagbody wordt geparseerd. Speciale uploadroutes behouden ten minste hun ingebouwde limiet van 100 MB.", + "requestBodyLimitInputLabel": "Limiet voor aanvraagbody in MB", + "requestBodyLimitEmptyError": "Voer een limiet in MB in", + "requestBodyLimitWholeNumberError": "Gebruik een geheel getal", "requestBodyLimitMinimumError": "Minimum is {min} MB", "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "requestBodyLimitLoadFailed": "Laden van instellingen voor de aanvraaglimiet mislukt", + "requestBodyLimitSaveSuccess": "Limiet voor aanvraagbody opgeslagen", + "requestBodyLimitSaveFailed": "Opslaan van limiet voor aanvraagbody mislukt", + "requestBodyLimitSaving": "Opslaan...", + "requestBodyLimitSave": "Opslaan", + "requestBodyLimitCurrent": "Huidig: {value}", "cacheConfigLoadFailed": "Kon de cache-instellingen niet laden", "cacheConfigSaveSuccess": "Cache-instellingen opgeslagen", "cacheConfigSaveFailed": "Kon de cache-instellingen niet opslaan", "modelCatalogTtlWholeNumberError": "Gebruik een geheel getal", "modelCatalogTtlMinimumError": "Minimum is {min} ms", "modelCatalogTtlMaximumError": "Maximaal is {max} ms", - "modelCatalogCacheTtl": "Model Catalog Cache TTL", + "modelCatalogCacheTtl": "TTL van modelcataloguscache", "modelCatalogCacheTtlDescription": "Hoe lang worden modelcatalogusreacties gecached voordat ze worden vernieuwd", "modelCatalogCacheTtlLabel": "Model catalog cache TTL in milliseconden", "modelCatalogCacheTtlSaving": "Opslaan...", @@ -6593,59 +6596,59 @@ "enablePassword": "Wachtwoord inschakelen", "darkMode": "Donkere modus", "lightMode": "Lichtmodus", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Geheugen", + "memoryDesc": "Permanent gespreksgeheugen voor meerdere sessies", + "memoryEnabled": "Geheugen inschakelen", + "memoryEnabledDesc": "Wanneer ingeschakeld, voegt OmniRoute relevante eerdere context toe.", "memoryTokenCostWarning": "Let op: wanneer geheugen is ingeschakeld, injecteert OmniRoute tot {tokens} tokens aan opgehaalde context in elk chatverzoek — dit verhoogt het tokengebruik en de kosten. Om injectie voor een specifiek verzoek over te slaan, verzendt u de header \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", + "maxTokens": "Max. aantal tokens", + "retentionDays": "Bewaartermijn", "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "recentDesc": "Chronologisch venster", + "semantic": "Semantisch", + "semanticDesc": "Vectorzoekopdracht", + "hybrid": "Hybride", + "hybridDesc": "Recent + semantisch", + "skillsTitle": "Vaardigheden", + "skillsDesc": "Tools voor modellen", + "skillsEnabled": "Vaardigheden inschakelen", + "skillsEnabledDesc": "Hiermee kunnen agents functies activeren.", + "skillsComingSoon": "Marketplace voor skills binnenkort beschikbaar.", + "memorySkillsTitle": "Geheugen en skills", + "memorySkillsDesc": "Permanente context en mogelijkheden", + "modelsDevTitle": "Modeldatabase", + "modelsDevDesc": "Prijzen, mogelijkheden en specificaties automatisch synchroniseren vanuit models.dev", + "modelsDevEnabled": "Synchronisatie met models.dev inschakelen", + "modelsDevEnabledDesc": "Modelprijzen, mogelijkheden en specificaties ophalen uit de opensourcedatabase models.dev", + "modelsDevInterval": "Synchronisatie-interval", + "syncNow": "Nu synchroniseren", + "syncing": "Bezig met synchroniseren...", + "lastSync": "Laatste synchronisatie", + "never": "Nooit", "justNow": "zojuist", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Synchronisatiestatistieken", + "modelsDevStatsDesc": "Huidige gegevensdekking van models.dev", "providers": "Aanbieders", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modellen met prijsgegevens", + "capabilities": "Mogelijkheden", + "lastSyncCount": "Aantal bij laatste synchronisatie", + "lastSyncFull": "Laatste volledige synchronisatie", + "modelsDevInfo": "Hoe het werkt", + "modelsDevInfoDesc": "models.dev is een opensourcedatabase met specificaties van AI-modellen, onderhouden door het SST/OpenCode-team. De database bevat prijzen, mogelijkheden, contextlimieten en modaliteiten voor meer dan 4.000 modellen van meer dan 100 providers.", + "modelsDevInfoResolution": "Volgorde voor prijsbepaling (hoogste prioriteit eerst):", + "modelsDevInfoOrder": "Gebruikersoverschrijving → models.dev → LiteLLM → Hardcoded standaardwaarde", "systemTheme": "Systeem Thema", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Debugmodus inschakelen", "logToolSourcesToggle": "Toolbronnen loggen", "logToolSourcesDescription": "Genereer per verzoek een diagnostische logregel met een samenvatting van het aantal tools en de uitsplitsing naar MCP-/hosted-/client-bronnen.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Informatie vastmaken aan de startpagina", "homePinnedSectionsDesc": "Kies welke secties u bovenaan de startpagina wilt vastpinnen.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Quotumlimieten van providers", + "homeProviderQuotaLimitsDesc": "De container met de quotumstatus van providers (met de knop Alles vernieuwen) bovenaan de startpagina vastmaken.", + "homeQuickStart": "Snel aan de slag", + "homeQuickStartDesc": "Het paneel Snel aan de slag op de startpagina weergeven.", + "homeProviderTopology": "Providertopologie", + "homeProviderTopologyDesc": "De providertopologie op de startpagina weergeven.", "accountEmailVisibility": "Zichtbaarheid van account-e-mails", "accountEmailVisibilityDesc": "Toon volledige account-e-mails op de schermen voor providers, combo's, logs, quota en playground. Schakel dit uit om ze standaard te maskeren.", "comboConfigMode": "Combo-configuratiemodus", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Vernieuwingsinterval", "providerQuotaAutoRefreshIntervalDesc": "Hoe vaak de quotaweergave moet worden vernieuwd, in seconden.", "seconds": "seconden", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Zijbalkitems weergeven", "enableCache": "Cache inschakelen", "cacheTTL": "TTL cachen", "maxCacheSize": "Maximale cachegrootte", "clearCache": "Cache wissen", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Cache is gewist", + "clearCacheFailed": "Cache wissen mislukt", "cacheHits": "Cache-hits", "cacheMisses": "Cache-missers", "hitRate": "Hitpercentage", "cacheEntries": "Cache-invoer", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Cache-instellingen", + "semanticCache": "Semantische cache", + "maxEntries": "Maximumaantal vermeldingen", + "ttlMinutes": "TTL (minuten)", "promptCache": "Snelle cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Strategie", + "preserveClientCache": "Clientcache behouden", + "enabled": "Ingeschakeld", "loading": "Loading...", "saving": "Opslaan...", - "save": "Save", + "save": "Opslaan", "circuitBreaker": "Stroomonderbreker", "retryPolicy": "Beleid voor opnieuw proberen", "maxRetries": "Maximaal aantal nieuwe pogingen", @@ -6690,21 +6693,21 @@ "timeoutMs": "Time-out (ms)", "enableSystemPrompt": "Systeemprompt inschakelen", "systemPromptText": "Systeemprompttekst", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Geblokkeerde accounts automatisch uitschakelen", + "autoDisableDescription": "Markeer providerverbindingen permanent als gedeactiveerd wanneer ze specifieke definitieve blokkeringssignalen retourneren (bijv. HTTP 403 'verify your account'). Hierdoor worden ze uit de combinatieroulatie verwijderd.", + "autoDisableThreshold": "Blokkeringsdrempel", + "autoDisableThresholdDesc": "Aantal opeenvolgende blokkeringssignalen dat vereist is vóór permanente deactivering.", + "autoDisableBannedScope": "Automatisch uitschakelen toepassen op", + "autoDisableBannedScopeDesc": "Inlogaccounts (betaalde abonnementen en gratis accounts) kunnen door de upstreamprovider worden geblokkeerd als OmniRoute na een blokkering pogingen blijft uitvoeren. Betaalde prepaid-API-sleutels lopen dat risico niet — laat ze in de pool zodat fill-first de volgende sleutel kan gebruiken.", + "autoDisableBannedScopeAll": "Alle verbindingen", + "autoDisableBannedScopeAllDesc": "Deactiveer elke verbinding die een permanent blokkeringssignaal retourneert, inclusief prepaid-API-sleutels.", + "autoDisableBannedScopeSubscription": "Alleen inlog-/abonnementsaccounts", + "autoDisableBannedScopeSubscriptionDesc": "Deactiveer OAuth-, cookie-, sessie- en webinlogaccounts (betaald of gratis). Prepaid-API-sleutels blijven actief, zodat de routering kan overschakelen.", "customBannedSignals": "Verboden trefwoorden", "customBannedSignalsDesc": "Aanvullende trefwoorden die detectie van permanente accountblokkering activeren. Ingebouwde trefwoorden zijn altijd van toepassing.", "customBannedSignalsPlaceholder": "bijv. api key revoked", "noCustomBannedSignals": "Geen aangepaste trefwoorden. Alleen ingebouwde trefwoorden zijn actief.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Veerkrachtstructuur", "resilienceStructureDesc": "Deze pagina configureert alleen gedrag. De status van de live-breker wordt weergegeven op de Gezondheidspagina. Combo-specifieke nieuwe pogingen en round-robin slotcontrole blijven op de combo-instellingen staan.", "enableThinking": "Maak het denken mogelijk", "maxThinkingTokens": "Max Thinking-tokens", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Toon Tailscale Funnel-besturingselementen op de eindpuntpagina.", "showNgrokTunnel": "ngrok-tunnel", "showNgrokTunnelDesc": "Toon ngrok Tunnel-besturingselementen op de eindpuntpagina.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Zijbalkitems verbergen", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Alles", + "presetAllDesc": "Alles weergeven", + "presetEssentials": "Essentieel", + "presetEssentialsDesc": "Beginnerstraject - Geavanceerde tools blijven vindbaar via zoeken", + "presetMinimal": "Minimaal", + "presetMinimalDesc": "Alleen kernpagina's", + "presetDeveloper": "Ontwikkelaar", + "presetDeveloperDesc": "Ontwikkelaars- en proxytools", + "presetAdmin": "Beheerder", + "presetAdminDesc": "Monitoring en audit", + "settingsSidebarTitle": "Zijbalk aanpassen", + "settingsSidebarDesc": "Kies welke zijbalkitems worden weergegeven. Met Essentieel blijven Geavanceerde tools vindbaar via zoeken.", "hideHealthLogs": "Statuschecklogboeken verbergen", "hideHealthLogsDesc": "Indien AAN: onderdruk [HealthCheck]-berichten in de serverconsole", "themeAccent": "Themakleur", @@ -6776,23 +6779,23 @@ "themeBlue": "Blauw", "themeRed": "Rood", "themeGreen": "Groen", - "themeViolet": "Violet", + "themeViolet": "Paars", "themeOrange": "Oranje", "themeCyan": "Cyaan", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Pas de naam en het logo van de toepassing aan", + "appName": "Naam van toepassing", + "appNameDesc": "Weergavenaam in de zijbalk en het browsertabblad", + "customLogo": "URL van aangepast logo", + "customLogoDesc": "URL naar uw aangepaste logoafbeelding", + "uploadLogo": "Logo uploaden", + "resetLogo": "Standaardinstellingen herstellen", + "logoPreview": "Voorbeeld", + "customFavicon": "Browserfavicon", + "customFaviconDesc": "URL naar uw aangepaste favicon (weergegeven in het browsertabblad)", + "uploadFavicon": "Favicon uploaden", + "resetFavicon": "Favicon herstellen", + "faviconPreview": "Faviconvoorbeeld", "logoFileTooLarge": "Logobestand moet kleiner zijn dan 500 KB", "faviconFileTooLarge": "Faviconbestand moet kleiner zijn dan 50 KB", "invalidLogoFileType": "Ongeldig bestandstype. Upload PNG, JPG, SVG, GIF of WebP.", @@ -6803,7 +6806,7 @@ "flushCache": "Cache leegmaken", "flushing": "Doorspoelen…", "size": "Grootte", - "hits": "Hits", + "hits": "Treffers", "evictions": "Uitzettingen", "loadingCacheStats": "Cachestatistieken laden…", "globalProxy": "Mondiale proxy", @@ -6891,26 +6894,26 @@ "localCoreHint": "Lokale Kernhint", "nodeSummary": "Knoop Samenvatting", "providerRequired": "Provider Vereist", - "providerRouting": "Provider Routing", + "providerRouting": "Providerroutering", "refresh": "Vernieuwen", "refreshInterval": "Vernieuwingsinterval", "ruleModeDescription": "Regelmodus Beschrijving" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", + "bulkHealthcheck": "Bulkstatuscontrole", + "bulkHealthcheckDesc": "Test alle geconfigureerde proxy's met een doel-URL om te bepalen welke werken.", + "healthcheckTesting": "Bezig met testen...", + "healthcheckAll": "Alles controleren", + "healthcheckFailed": "Kan statuscontrole niet uitvoeren", + "healthcheckTestingAll": "Alle proxy's worden parallel getest...", + "healthcheckTotal": "Totaal", + "healthcheckWorking": "Werkend", + "healthcheckFailedLabel": "Mislukt", "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "healthcheckProxyUrl": "Proxy-URL", + "healthcheckLatency": "Latentie", "proxyDocumentationScopeTitle": "Proxy-scope-resolutie", "proxyDocumentationScopeDescBefore": "OmniRoute herleidt de uitgaande proxy in volgorde van prioriteit:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "combinatie → account → provider → globaal", "proxyDocumentationScopeDescAfter": ". De meest specifieke scope wint.", "proxyDocumentationAddTitle": "Een aangepaste proxy toevoegen", "proxyDocumentationAddDescBefore": "Ga naar de", @@ -6984,7 +6987,7 @@ "passthroughDesc": "Geen wijzigingen – de klant bepaalt het denkbudget", "thinkingModePassthrough": "Doorvoer", "thinkingModePassthroughDesc": "Laat de reden van de cliënt ongewijzigd (inspanningen, samenvatting, denkblokken). Vereist voor Codex/Desktop zichtbare gedachten. Standaard.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automatisch (verwijderen)", "thinkingModeAutoDesc": "Verwijder alle velden voor klantdenken/redenering (redenering, redenering_inspanning, Claude denken, Gemini denken_config) en laat de provider standaardwaarden verzinnen. Kan denkpanelen verbergen en klant samenvattingsverzoeken onderbreken.", "thinkingModeCustom": "Aangepast", "thinkingModeCustomDesc": "Overschrijf elke aanvraag met een vast denk-tokenbudget dat je hieronder instelt.", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} provider(s) geblokkeerd voor /models", "blockProviderTitle": "Blokkeer {provider}", "unblockProviderTitle": "Deblokkeer {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "CLI-fingerprintmatching", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} provider(s) met actieve CLI-fingerprint", + "enableFingerprintTitle": "Fingerprint inschakelen voor {provider}", + "disableFingerprintTitle": "Fingerprint uitschakelen voor {provider}", "systemTransforms": "Systeemblok-transformatiepijplijn", "systemTransformsDesc": "Per provider bestelde pijplijn met transformaties die op de aanvraagtekst worden toegepast voordat deze wordt doorgestuurd. Ondersteunt elke provider-ID.", "systemTransformsAddProvider": "Aanbieder toevoegen", @@ -7067,17 +7070,17 @@ "costOptDesc": "Geef de voorkeur aan het goedkoopste beschikbare account", "resetAware": "Reset-bewuste RR", "resetAwareDesc": "Geef de voorkeur aan accounts met een gezond resterend quotum en een bijna-reset", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Quotagewogen", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Strikt willekeurig", + "strictRandomDesc": "Geschud kaartspel — gebruikt elk account één keer voordat opnieuw wordt geschud", "stickyLimit": "Kleverige limiet", "stickyLimitDesc": "Gesprekken per account voordat u overstapt", "routingStrategyTitle": "Routeringsstrategie", "routingStrategySubtitle": "Overeenkomen met 9router: account round-robin, sticky limieten en combo-rotatie", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Roulerend", "accountRoundRobinDesc": "Doorloop accounts om de belasting te verdelen", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Combinatie roulerend", "comboRoundRobinDesc": "Doorloop combo-doelen in plaats van altijd met de eerste te beginnen", "comboStickyLimit": "Combo Sticky-limiet", "comboStickyLimitDesc": "Aanroepen per combo-doel voor het wisselen", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Globale accountstrategie overschrijven voor deze provider (9router-pariteit).", "providerRoutingStrategy": "Accountstrategie", "providerRoutingInheritGlobal": "Globale standaard overnemen", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Drempelwaarde voor quotumcontrole vooraf", + "quotaPreflightSubtitle": "Accounts waarvan het quotum is opgebruikt overslaan voordat de aanvraag upstream wordt verzonden", + "quotaPreflightEnable": "Quotumcontrole vooraf inschakelen", + "quotaPreflightEnableDesc": "Controleer vóór elke aanvraag het resterende quotum van het account (vensters van 5 uur / wekelijks / maandelijks). Accounts op of onder de drempelwaarde worden overgeslagen zonder upstream-aanroep. Drempelwaarden per venster die zijn ingesteld op de pagina Provider Quota hebben altijd voorrang op de standaardwaarde hier.", + "quotaPreflightCutoff": "Globale drempelwaarde (min. resterend %)", + "quotaPreflightCutoffDesc": "Stop met het gebruik van een account wanneer het resterende quotum daalt tot dit percentage of lager, voor elk venster zonder eigen drempelwaarde. Komt overeen met de balken voor het resterende percentage op de pagina Provider Quota.", + "quotaPreflightWindowsHint": "Vensters met een eigen drempelwaarde per venster of per provider (ingesteld in het dialoogvenster Cutoff op de pagina Provider Quota) worden niet beïnvloed door deze standaardwaarde.", + "quotaPreflightLoadFailed": "Kan instellingen voor quotumcontrole vooraf niet laden.", "modelAliases": "Modelaliassen", - "modelAliasesTitle": "Model Aliases", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesTitle": "Modelaliassen", + "modelAliasesDesc": "Wijs modelnamen opnieuw toe met exacte overeenkomsten of jokertekenpatronen.", "addCustomAlias": "Aangepast Alias Toevoegen", "deprecatedModelId": "Verouderd model-ID", "newModelId": "Nieuw model-ID", @@ -7111,7 +7114,7 @@ "enableDegradationHint": "Wanneer ingeschakeld, worden achtergrondtaken zoals titelgeneratie en samenvattingen automatisch naar goedkopere modellen gerouteerd", "tasksDetected": "Taken gedetecteerd", "degradationMap": "Model Degradatie Kaart", - "premiumModel": "Premium model", + "premiumModel": "Premiummodel", "cheapModel": "Goedkoop model", "detectionPatterns": "Detectiepatronen", "newPattern": "bijv. \"genereer een titel\"", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Combinatiestrategie", "priority": "Prioriteit", "weighted": "Gewogen", - "contextRelay": "Context Relay", + "contextRelay": "Contextdoorgifte", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Maximaal aantal nieuwe pogingen", "retryDelayLabel": "Vertraging opnieuw proberen (ms)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Gelijktijdigheid / model", "queueTimeout": "Wachtrijtime-out (ms)", "queueDepth": "Wachtrijdiepte", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Overdrachtsdrempel", + "contextRelayMaxMessages": "Max. aantal berichten voor samenvatting", + "contextRelaySummaryModel": "Samenvattingsmodel", + "contextRelayProviderNote": "Contextdoorgifte genereert momenteel overdrachten voor Codex-accounts en gebruikt deze waarden als globale standaardinstellingen voor nieuwe of niet-geconfigureerde combinaties.", "providerProfiles": "Providerprofielen", "providerProfilesDesc": "Afzonderlijke veerkrachtinstellingen voor OAuth (sessiegebaseerd) en API Key (gemeten) providers. OAuth-providers hanteren strengere drempels vanwege lagere tarieflimieten.", "oauthProviders": "OAuth-providers", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}d geleden", "backupReasonManual": "handleiding", "backupReasonPreRestore": "vooraf herstellen", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# verbinding} other {# verbindingen}}", "noChangesSinceBackup": "Geen wijzigingen sinds de laatste back-up", "backupFailed": "Back-up mislukt", "restoreFailed": "Herstellen mislukt", @@ -7329,7 +7332,7 @@ "configured": "geconfigureerd", "none": "Geen", "modelOverrideValuePlaceholder": "Numerieke waarde", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Engelse kommagescheiden waarden, bijv. low, medium, high", "addKeyValue": "Sleutelwaarde toevoegen", "noModelOverrides": "Geen overschrijvingen geconfigureerd voor dit model.", "modelOverrideLoadFailed": "Laden van modeloverschrijvingen mislukt", @@ -7378,25 +7381,25 @@ "editPricing": "Prijzen bewerken", "viewFullDetails": "Bekijk volledige details", "themeCoral": "Koraal", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Adaptieve volumeroutering", + "adaptiveVolumeRoutingDesc": "Schaal verbindingen dynamisch op basis van het payloadvolume en de doorvoerbelasting.", + "lkgpToggleTitle": "Laatst bekende goede provider (LKGP)", + "lkgpToggleDesc": "Als dit is ingeschakeld, onthoudt de router welke provider als laatste een succesvol antwoord heeft geleverd en probeert deze bij volgende aanvragen als eerste.", "echoRequestedModelTitle": "Gevraagde modelnaam echoën in antwoorden", "echoRequestedModelDesc": "Indien ingeschakeld, echoot het `model`-veld in het antwoord de alias of combonaam die de client heeft aangevraagd in plaats van de upstream modelnaam. Dit lost problemen op met strikte clients (bijv. Claude Desktop) die een antwoord weigeren waarvan het model niet overeenkomt met het verzoek.", "webSearchRouteTitle": "Webzoekroutering", "webSearchRouteDesc": "Wanneer een verzoek een systeemeigen web_search-tool bevat, routeer dan het hele verzoek naar dit model in plaats van het standaardmodel — handig voor providers die de web_search-servertool van Anthropic niet implementeren. Laat leeg om uit te schakelen.", "webSearchRoutePlaceholder": "bijv. openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "Dit patroon komt alleen overeen met betaalde modellen — schakel betaalde modellen in of pas het patroon aan.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP-cache wissen", + "lkgpCacheCleared": "LKGP-cache is gewist", + "lkgpCacheClearFailed": "Wissen van LKGP-cache is mislukt", + "days": "Dagen", + "lkgp": "LKGP-modus", + "lkgpDesc": "Laatst bekende goede provider (voorspelbare veerkracht)", + "maintenance": "Onderhoud", + "purgeExpiredLogs": "Verlopen logs verwijderen", + "purgeLogsFailed": "Verwijderen van logs is mislukt", "logsDeleted": "{count, plural, =0 {Geen verlopen logboeken opgeschoond} one {# verlopen logboek opgeschoond} other {# verlopen logboeken opgeschoond}}", "resetUsageData": "Gebruiksgegevens resetten", "resetUsageDataDesc": "Selecteer hoe ver terug u gebruiksgegevens, verzoeklogboeken en analysegegevens wilt verwijderen. Providerconfiguratie, verbindingen, API-sleutels, combo's en instellingen blijven behouden. Deze actie kan niet ongedaan worden gemaakt.", @@ -7407,45 +7410,45 @@ "resetUsagePeriod_12h": "12 uur", "resetUsagePeriod_1d": "1 dag", "resetUsagePeriod_7d": "7 dagen", - "resetUsagePeriod_30d": "30 days", + "resetUsagePeriod_30d": "30 dagen", "resetUsagePeriod_all": "Altijd", "resetUsageSuccess": "{count, plural, =0 {Geen verbruiksgegevensrijen verwijderd} one {Verbruiksgegevens resetten (# rij verwijderd)} other {Verbruiksgegevens resetten (# rijen verwijderd)}}", "resetUsageFailed": "Resetten van verbruiksgegevens mislukt", "reset": "Resetten", "resetting": "Resetten...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Contextgeoptimaliseerd", + "contextOptDesc": "Routeert op basis van de vereisten voor het contextvenster en de gesprekslengte", + "cacheOpt": "Cachegeoptimaliseerd", + "cacheOptDesc": "Behoudt hetzelfde herbruikbare promptvoorvoegsel op hetzelfde provideraccount", + "priorityDesc": "Sequentiële terugval: probeert eerst provider 1, daarna provider 2, enzovoort", + "weightedDesc": "Verdeelt verkeer volgens procentuele gewichten over providers", + "modelRoutingTitle": "Modelrouteringsregels", + "modelRoutingDesc": "Routeer modellen automatisch naar specifieke combinaties met glob-patronen", + "addRule": "Regel toevoegen", + "routeToCombo": "Routeren naar combinatie", + "selectCombo": "Selecteer combinatie...", + "priorityHint": "Hoger = eerder gecontroleerd. Gebruik 10+ voor specifieke patronen.", + "patternHint": "Gebruik * voor willekeurige tekens en ? voor één teken. Niet hoofdlettergevoelig.", + "noRoutingRules": "Er zijn geen routeringsregels geconfigureerd. Aanvragen gebruiken standaard de globale combinatie.", + "routingRuleHint": "Voeg een regel toe zoals claude-opus* -> frontier-combo om aanvragen automatisch te routeren.", + "deleteRoutingRule": "Deze modelrouteringsregel verwijderen?", + "exactMatchMode": "Exacte overeenkomst", + "wildcardPatternMode": "Jokertekenpatroon", + "exactMatchModeDesc": "Gebruik exacte aliassen voor verouderde of hernoemde model-ID's.", + "wildcardPatternModeDesc": "Gebruik jokertekenaliassen met * en ? wanneer een reeks modellen naar één doel moet verwijzen.", + "noExactAliasesConfigured": "Geen aliassen voor exacte overeenkomsten geconfigureerd.", + "wildcardRulesTitle": "Jokertekenregels", + "noWildcardAliasesConfigured": "Geen jokertekenaliassen geconfigureerd.", + "overview": "Overzicht", + "unknownError": "Onbekende fout", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Witte lijst", + "syncDisabled": "Synchronisatie uitgeschakeld", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,29 +7456,29 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Synchronisatie ingeschakeld", + "blacklist": "Zwarte lijst", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", + "syncedModels": "Gesynchroniseerde modellen", "budget": "Budget", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Kan de prijzen niet opnieuw instellen: {reason}", - "tab": "Tab", + "tab": "Tabblad", "pricingSavedProvider": "Prijzen opgeslagen voor {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Kan prijzen niet opslaan: {reason}", "pricingResetProvider": "Prijsreset voor {provider}", - "nextSync": "Next Sync", + "nextSync": "Volgende synchronisatie", "pricingSyncFailedWithReason": "Synchronisatie van prijzen mislukt: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Gesynchroniseerde prijzen wissen", + "compressionTitle": "Promptcompressie", + "compressionDesc": "Verminder het tokengebruik door prompts te comprimeren voordat ze naar providers worden verzonden", "compressionGuidanceFullGuideLink": "Volledige compressiegids", "compressionGuidanceShow": "Details", "compressionGuidanceHide": "Details verbergen", "compressionGuidanceSafeDefault": "Veilige standaard", "compressionGuidanceCacheImpact": "Cache-impact", - "tokenSaverTitle": "Token Saver", + "tokenSaverTitle": "Tokenbesparing", "tokenSaverSubtitle": "Verbruik minder tokens per verzoek.", "tokenSaverToolOutput": "Tool-output", "tokenSaverToolOutputDesc": "Schoon de output van git, grep, ls, tree en log op voordat deze de provider bereikt.", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Herschrijf geschikte chatgeschiedenis met behoud van code, URL's en intentie.", "tokenSaverFineTunePrefix": "Elke engine fine-tunen op", "tokenSaverFineTuneSuffix": "of engines per verzoek combineren op", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Compressiemodus", + "compressionModeOff": "Uit", + "compressionModeOffDesc": "Geen compressie toegepast", + "compressionModeLite": "Licht", + "compressionModeLiteDesc": "Vermindering van witruimte en lege regels", + "compressionModeStandard": "Standaard (Caveman)", + "compressionModeStandardDesc": "Regelgebaseerde compressie met meer dan 30 patronen; codeblokken en URL's blijven behouden", + "compressionModeAggressive": "Agressief", + "compressionModeAggressiveDesc": "Samenvatting + compressie van toolresultaten + progressieve veroudering voor maximale besparing", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Agressieve motorconfiguratie", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Aantal recente berichten dat op elke verouderingslaag wordt bewaard (hoger = beter bewaard)", "compressionToolStrategies": "Tool Resultaatstrategieën", "compressionToolStrategiesDesc": "Schakel compressiestrategieën in voor verschillende typen toolresultaten", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Algemene instellingen", + "compressionAutoTrigger": "Drempelwaarde voor automatisch activeren", + "compressionCacheTTL": "Cache-TTL", + "compressionPreserveSystem": "Systeemprompt behouden", "compressionPreserveSystemAlways": "Altijd", "compressionPreserveSystemWhenNoCache": "Wanneer geen cache", "compressionPreserveSystemNever": "Nooit", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Opgeslagen", "compressionExclusionsCount": "{count, plural, one {# uitsluiting} other {# uitsluitingen}} geconfigureerd", "compressionExclusionsEmpty": "Geen uitsluitingen geconfigureerd — elk model/eindpunt komt in aanmerking voor compressie (standaardgedrag).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Configuratie van de Caveman-engine", + "compressionCavemanConfigDesc": "Stem de regelgebaseerde compressie-engine nauwkeurig af", "compressionCavemanPanelHint": "De aan/uit-status en het niveau worden ingesteld in het paneel:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Berichtrollen comprimeren", + "compressionRoleUser": "Gebruiker", + "compressionRoleAssistant": "Assistent", + "compressionRoleSystem": "Systeem", + "compressionMinLength": "Minimale berichtlengte", + "compressionSkipRules": "Compressieregels overslaan", + "compressionSkipRulesDesc": "Klik op regels om ze tijdens de compressie over te slaan", + "compressionPreservePatterns": "Patronen behouden", + "compressionPreservePatternsDesc": "Regex-patronen die nooit worden gecomprimeerd (één per regel)", + "compressionLogTitle": "Compressielogboek", + "compressionLogEmpty": "Nog geen gecomprimeerde aanvragen. Compressiestatistieken verschijnen hier wanneer aanvragen worden verwerkt terwijl compressie is ingeschakeld.", "minutes": "minuten", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "Opdrachtafhankelijke filtering van tooluitvoer", + "compressionModeCodexResponses": "Tooluitvoer van Responses", + "compressionModeCodexResponsesDesc": "Voorzichtige compressie voor geschikte shell-, patch-, zoek-, build- en JSON-uitvoer", + "compressionModeStacked": "Gestapeld", + "compressionModeStackedDesc": "RTK-filtering van tooluitvoer, gevolgd door Caveman-berichtcompressie", + "qdrantTitle": "Qdrant (vectorgeheugen)", + "qdrantDesc": "Optioneel. Indexeert semantische herinneringen in een externe vectordatabase om ze sneller op te halen.", + "qdrantStatusActive": "Actief", + "qdrantStatusError": "Fout", + "qdrantStatusDisabled": "Uitgeschakeld", + "qdrantEnable": "Qdrant inschakelen", + "qdrantEnableDesc": "Wanneer dit is ingeschakeld, kan de semantische/hybride strategie Qdrant gebruiken om herinneringen op te halen.", + "qdrantTesting": "Testen...", + "qdrantTestConnection": "Verbinding testen", + "qdrantSaved": "Configuratie opgeslagen", + "qdrantSaveError": "Opslaan van configuratie mislukt", + "qdrantHostHint": "Zonder poort. Voorbeeld: 127.0.0.1 of http://qdrant", + "qdrantPort": "Poort", + "qdrantPortHint": "Standaardwaarde van Qdrant: 6333", + "qdrantCollectionHint": "Waar geheugenpunten worden opgeslagen.", + "qdrantEmbeddingModel": "Embeddingmodel", + "qdrantHelpTitle": "Hulp bij snelle configuratie", + "qdrantHelpQuickTitle": "Snelle configuratie (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Host: IP/URL van Qdrant, poort: 6333, collectie: omniroute_memory.", + "qdrantHelpStep2": "2. Gebruik bij nvidia/llama-nemotron-embed-vl-1b-v2:free een collectiedimensie van 2048.", + "qdrantHelpStep3": "3. Modelveld: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Sla op, test de verbinding en test vervolgens het zoeken.", + "qdrantEmbeddingQuickSelect": "Snel kiezen uit gevonden modellen...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Indeling: provider/model. De inloggegevens van de provider moeten zijn geconfigureerd.", + "qdrantApiKeyPlaceholderKeep": "(laat leeg om de huidige sleutel te behouden)", + "qdrantApiKeyPlaceholderOptional": "(laat leeg indien niet gebruikt)", + "qdrantSaveHint": "Tip: bewerk host/port/collection/model en klik op Opslaan. De API-sleutel is optioneel.", + "qdrantSearchTestTitle": "Zoektest", + "qdrantSearchTestDesc": "Genereert een embedding en zoekt in Qdrant.", + "qdrantSearchPlaceholder": "Voorbeeld: gebruikersvoorkeuren, geschiedenis, enz.", + "qdrantNoResults": "Geen resultaten (of Qdrant is niet geconfigureerd).", + "qdrantCleanupTitle": "Bewaartermijn en opschoning", + "qdrantCleanupDesc": "Verwijdert verlopen en oude punten op basis van", + "searching": "Bezig met zoeken...", + "cleaning": "Bezig met opschonen...", + "cleanNow": "Nu opschonen", "optional": "Optioneel", "current": "Huidig", "remove": "Verwijderen", @@ -7598,21 +7601,21 @@ "oneproxyTotalProxies": "Totaal proxy's", "oneproxyAvgQuality": "Gemiddelde kwaliteit", "resilienceScope": "Toepassingsgebied:", - "resilienceTrigger": "Trigger:", + "resilienceTrigger": "Activering:", "resilienceEffect": "Effect:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Aanvraagwachtrij en -frequentie", + "resilienceAutoEnableApiKeyProviders": "Automatisch inschakelen voor providers met API-sleutel", + "resilienceRequestsPerMinute": "Aanvragen per minuut", + "resilienceMinTimeBetweenRequests": "Minimale tijd tussen aanvragen", + "resilienceConcurrentRequests": "Gelijktijdige aanvragen", + "resilienceConnectionScopeConcurrentRequests": "Gelijktijdige aanvragen per verbinding/quotabereik", + "resilienceGlobalConcurrentRequests": "Globale gelijktijdige upstream-aanvragen (0 = uitgeschakeld)", "resilienceMaxQueueWaitTime": "Maximale wachtrijwachttijd", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Basisafkoelperiode", + "resilienceUseUpstreamRetryHints": "Hints voor opnieuw proberen van upstream gebruiken", + "resilienceDefaultPerProvider": "Standaard (per provider)", + "resilienceAlwaysOn": "Altijd aan", + "resilienceAlwaysOff": "Altijd uit", "routingRemoveEntry": "Invoer verwijderen", "routingNeedlesSubstrings": "Naalden (substrings die overeenkomen)", "routingCaseSensitive": "Hoofdlettergevoelig", @@ -7669,7 +7672,7 @@ "routingAntigravitySignatureDesc": "Bepaal of OmniRoute alleen opgeslagen Gemini-gedachtesignaturen hergebruikt of ook gevalideerde, door de client geleverde signaturen accepteert in Antigravity-compatibele tool-call-flows.", "routingAntigravitySignatureEnabledLabel": "Ingeschakeld", "routingAntigravitySignatureEnabledDesc": "Huidig gedrag. Negeer door de client geleverde handtekeningen en blijf de opgeslagen OmniRoute-flow gebruiken.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Omzeilen", "routingAntigravitySignatureBypassDesc": "Accepteer door de client geleverde handtekeningen na een lichte validatie en val terug op de opgeslagen handtekening wanneer deze ongeldig is.", "routingAntigravitySignatureBypassStrictLabel": "Strikte bypass", "routingAntigravitySignatureBypassStrictDesc": "Vereis volledige protobuf-validatie alvorens een door de client geleverde handtekening te accepteren.", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "Verzonden naar het vision-model voordat de geëxtraheerde beschrijving weer in het oorspronkelijke verzoek wordt geïnjecteerd.", "visionBridgeTimeoutMs": "Time-out (ms)", "visionBridgeMaxImagesPerRequest": "Max. aantal afbeeldingen per aanvraag", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Maximaal aantal back-offstappen", + "resilienceProviderBreakerTitle": "Circuitbreaker per provider", + "resilienceFailureThreshold": "Drempelwaarde voor fouten", + "resilienceDegradationThreshold": "Drempelwaarde voor degradatie", "resilienceResetTimeout": "Time-out opnieuw instellen", "resilienceFailureThresholdLabel": "Mislukkingsdrempel", "resilienceResetTimeoutLabel": "Time-out opnieuw instellen", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Afkoelperiode voor verbinding", "resilienceUseUpstreamRetryHintsLabel": "Gebruik upstream-tips voor opnieuw proberen", "resilienceUseUpstream429BreakerLabel": "Gebruik upstream 429-hints (breker)", "resilienceMaxBackoffStepsLabel": "Max. uitstelstappen", "resilienceYes": "Ja", "resilienceNo": "Nee", - "resilienceDefault": "Default", + "resilienceDefault": "Standaard", "storageDatabaseBackupRetention": "Bewaren van databaseback-ups", "storageDatabaseBackups": "Databaseback-ups", "storageBackupRetentionDescription": "Automatische SQLite-back-ups worden opgeslagen in", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "Legacy JSON succesvol geïmporteerd!", "jsonImportFailed": "Importeren van JSON mislukt", "jsonImportError": "Fout tijdens JSON-import", + "jsonImportAuthRequired": "Authenticatie is vereist om een verouderde JSON-configuratie te importeren. Meld u aan of voltooi eerst de configuratie.", + "databaseSettingsAuthRequiredTitle": "Authenticatie vereist", + "databaseSettingsAuthRequiredBody": "Database-instellingen en JSON-import zijn alleen beschikbaar voor een geverifieerde beheerder. Meld u aan of voltooi de configuratie om ze te bekijken en te bewerken.", + "databaseSettingsAuthRequiredCta": "Aanmelden", "storagePurgeData": "Gegevens opschonen", "storagePurgeDataDesc": "Verwijder onmiddellijk alle records zonder retentiecontroles toe te passen. Wees voorzichtig.", "storageRetentionCleanup": "Retentie-instellingen", @@ -7824,18 +7831,18 @@ "compressionSettingsAutoClarityBypass": "Automatische helderheidsbypass", "compressionEffectivePipeline": "Effectieve pipeline:", "compressionDerivedOff": "uit", - "compressionDerivedRuns": "runs: {pipeline}", + "compressionDerivedRuns": "uitvoeringen: {pipeline}", "compressionDerivedMode": "modus: {mode}", "compressionAdaptiveOff": "Adaptief contextbudget: uit (legacy auto-trigger)", "compressionAdaptiveTarget": "Adaptief ({mode}, beleid: {policy}) — doel ≈ {target, number} tokens (voor een venster van {contextLimit, number} tokens)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Adaptief contextbudget", + "compressionAdaptiveModeOff": "Uit (verouderde automatische activering)", + "compressionAdaptiveModeFloor": "Ondergrens (altijd garanderen dat het past)", + "compressionAdaptiveModeReplace": "Automatische activering vervangen", + "compressionAdaptivePolicy": "Budgetbeleid", + "compressionAdaptivePolicyReserve": "Uitvoer reserveren", + "compressionAdaptivePolicyPercentage": "Percentage van venster", + "compressionAdaptivePolicyAbsolute": "Absoluut tokenbudget", "compressionOutputStylesDescription": "Injecteer instructies voor responsvormgeving zonder de uitvoer van de provider te herschrijven. Vrij te combineren.", "mcpAccessibilityDescription": "Beperkt de scope van MCP-tooluitvoer (afzonderlijke opslag).", "compressionStylesTileSummary": "{tokens, number} tokens bespaard · {runs, plural, one {# run gestyled} other {# runs gestyled}}", @@ -7854,7 +7861,7 @@ "description": "Blokdeduplicatie over meerdere beurten." }, "ccr": { - "label": "CCR (Retrieval)", + "label": "CCR (Ophalen)", "description": "Inhoudsgeadresseerde retrieval-markers." }, "lite": { @@ -7866,11 +7873,11 @@ "description": "Filteren van opdrachtuitvoer." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Uitvoer van Responses-tool", + "description": "Voorzichtige compressie voor ondersteunde uitvoer van de Responses-tool." }, "headroom": { - "label": "Headroom", + "label": "Speling", "description": "Tabelvormige JSON-compactie." }, "relevance": { @@ -7878,7 +7885,7 @@ "description": "Extractieve zinsscore ten opzichte van de laatste gebruikersquery." }, "caveman": { - "label": "Caveman", + "label": "Holbewoner", "description": "Op regels gebaseerde prozacompressie." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "YAGNI-ladder: kleinste werkende wijziging, geen ongevraagde abstracties." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (luie senior developer)", + "description": "Discipline van een luie senior developer: beklim de YAGNI-ladder, los de hoofdoorzaak op, maak de kleinst mogelijke werkende wijziging." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Ik heb ADHD (actie eerst)", + "description": "Actiegerichte uitvoer: begin met de volgende actie, nummer de stappen, geef één concrete volgende stap, geen inleiding." }, "terse-cjk": { "label": "Beknopt CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI-terugval", "cliproxyapiEnableFallback": "Schakel CLIProxyAPI Fallback in", "cliproxyapiUrl": "CLIProxyAPI-URL", + "headroomProxyTitle": "Headroom-proxy", + "headroomProxyDesc": "URL van de optionele Headroom-proxy voor tokenbesparing. Indien leeg, wordt HEADROOM_URL of http://localhost:8787/ gebruikt.", + "headroomProxyUrl": "Headroom-URL", + "headroomProxyUrlHint": "Loopback-URL's kunnen vanaf deze pagina worden gestart. Externe URL's worden alleen getest.", + "headroomProxySave": "Opslaan", + "headroomProxyStart": "Starten", + "headroomProxyStop": "Stoppen", + "headroomProxyExternalHint": "Deze URL is geen loopback-URL, dus OmniRoute zal de lokale CLI niet starten.", "cliproxyapiStatus": "CLIProxyAPI-status", "cliproxyapiNotDetected": "Niet gedetecteerd", "cliproxyapiImportAuthTitle": "Accounts importeren uit CLIProxyAPI", @@ -7938,9 +7953,9 @@ "cliproxyapiImportAuthButton": "Accounts importeren", "payloadRulesTitle": "Payload-regels", "payloadRulesDesc": "Configureer payloadmutaties voor verzoeken per model en protocol. Wijzigingen worden opgeslagen in de instellingen en direct na het opslaan hot-reloaded in de runtime.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "standaard", "payloadRuleDefaultDesc": "Past parameters alleen toe wanneer het doelpad ontbreekt in de uitgaande payload.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "overschrijven", "payloadRuleOverrideDesc": "Dwingt waarden af op de payload en vervangt alles wat al aanwezig is op dat pad.", "payloadRuleFilterTitle": "filter", "payloadRuleFilterDesc": "Verwijdert geblokkeerde parameters uit de payload voordat het upstream-verzoek wordt verzonden.", @@ -7980,8 +7995,8 @@ "responsesStateTitle": "Status van antwoorden", "responsesStateDesc": "Beheer hoe OmniRoute previous_response_id doorstuurt.", "responsesStateModeLabel": "Afhandeling van previous_response_id", - "responsesStateModeAuto": "Auto", - "responsesStateModeStrip": "Strip", + "responsesStateModeAuto": "Automatisch", + "responsesStateModeStrip": "Strook", "responsesStateModePreserve": "Behouden", "responsesStateHint": "Auto verwijdert previous_response_id tenzij een verbinding expliciet OpenAI Responses-opslag inschakelt. Strip is het veiligst voor stateless clients zoals VS Code Custom Endpoint; context hangt dan af van de client die de volledige geschiedenis verzendt.", "responsesStateSaveError": "Bijwerken van instelling voor antwoordenstatus mislukt", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "Injecteer wereldwijd service_tier=priority voor OpenAI Codex-verzoeken.", "codexFastTierHint": "Indien ingeschakeld, voegt OmniRoute service_tier=priority toe aan uitgaande Codex-aanvragen voor verbindingen die nog geen laag specificeren. Prioriteitslaag vereist een OpenAI Enterprise API-sleutel of het ChatGPT-auth Codex-pad; andere sleuteltypen ontvangen een laaggerelateerde fout van OpenAI. Instellingen per verbinding op de Codex-providerpagina hebben voorrang.", "codexFastTierSaveError": "Kan Codex Fast Tier-instelling niet updaten", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Automatische Codex-quotaping", + "codexAutoPingDesc": "Aanmelding per verbinding: verstuurt direct na het resetten van een Codex-sessievenster een klein verzoek, zodat de verbinding niet koud is wanneer je die nodig hebt.", + "codexAutoPingWarning": "Verbruikt bij elke ping een kleine hoeveelheid echt Codex-quotum. Standaard uitgeschakeld — schakel dit alleen in voor verbindingen waarop je actief vertrouwt.", + "codexAutoPingSaveError": "Bijwerken van de instelling voor automatische Codex-pings mislukt", + "codexAutoPingToggleAria": "Automatische Codex-quotaping voor {connection} in- of uitschakelen", "codexFastTierTierLabel": "Serviceniveau", "codexFastTierTierPriority": "Prioriteit", "codexFastTierTierFlex": "Flex", @@ -8071,7 +8086,7 @@ }, "resilienceBaseCooldownLabel": "Basis afkoeling", "scopeLabel": "Reikwijdte", - "triggerLabel": "Trigger", + "triggerLabel": "Activering", "effectLabel": "Effect", "statusEnabled": "Ingeschakeld", "statusDisabled": "Uitgeschakeld", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Globaal controle-interval", "resilienceCredentialHealthEveryMinutes": "Elke {minutes} min", "resilienceCredentialHealthHint": "0 schakelt de achtergrondscan uit (max. 1440 min = 24 u). Verbindingen met een eigen gezondheidscontrolewaarde negeren deze globale standaard; 0 op een verbinding sluit die uit, ook als de globale scan aanstaat.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Altijd ingeschakeld voor {provider} — vereist voor de beveiliging van OAuth-accounts; kan niet worden uitgeschakeld.", + "forcedFingerprintBadge": "Vereist", "sessionAffinityTitle": "Sessie-affiniteit", "sessionAffinityDesc": "Houdt één gesprek gedurende dit aantal seconden op hetzelfde account, voor elke provider. 0 schakelt dit uit.", "sessionAffinityTtl": "Affiniteit TTL (seconden)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "Maximaal aantal backoff-stappen voordat de cooldown stopt met groeien. De limiet voor Max. cooldown wordt in de meeste configuraties als eerste bereikt, waardoor dit een veiligheidsplafond is voor wanneer Max. cooldown wordt verhoogd.", "disableSessionStickiness": "Sessie-stickiness uitschakelen", "disableSessionStickinessDesc": "Round-robin- en willekeurige combinaties wisselen bij elk verzoek naar een andere verbinding in plaats van een heel gesprek vast te pinnen aan één verbinding op basis van de hash van het eerste bericht. Laat uitgeschakeld om prompt-cache-hits voor multi-turn chats te behouden. Overschrijvingen per combinatie hebben voorrang.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Routering op basis van promptcachelokaliteit", + "promptCacheAffinityDesc": "Geef bij overeenkomende promptcachesleutels de voorkeur aan hetzelfde provideraccount, met behoud van failover voor status en quotum.", + "reasoningTokenBuffer": "Buffer voor redeneertokens", + "reasoningTokenBufferDesc": "Sta combinatieroutering toe om alleen voor bekende redeneermodellen extra ruimte aan max_tokens toe te voegen wanneer de volledige buffer binnen een bekende uitvoerlimiet past.", + "zeroLatencyOptimizations": "Optimalisaties zonder latentie", + "zeroLatencyOptimizationsDesc": "Meld je aan voor hedging, voorspellend overslaan op basis van TTFT en proactieve fallbackcompressie. Laat dit uitgeschakeld om te voorkomen dat deze latentiefuncties met doelen concurreren of fallbackverzoeken comprimeren.", "credentialRedaction": "Maskeren van inloggegevens", "credentialRedactionDesc": "Maskeer API-sleutels, tokens en geheimen in context die naar providers wordt verzonden en in antwoorden.", "enableCredentialRedaction": "Maskeren van inloggegevens inschakelen", "enableCredentialRedactionDesc": "Verwijdert API-sleutels, tokens, privésleutels en JWT's uit berichten, tool-aanroepen en reacties.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Automatische synchronisatie uitgeschakeld", + "pricingAutoSyncEnabled": "Automatische synchronisatie ingeschakeld", "modalityBridgeIntro": "Zet multimodale inhoud om in tekst voordat die modellen bereikt die alleen tekst verwerken. De bruggen voor beeld, audio en video zijn beschikbaar en configureerbaar.", "modalityBridgeVisionTab": "Visie", "modalityBridgeAudioTab": "Audio", @@ -8243,7 +8258,7 @@ "modalityBridgeCacheTtlMinutes": "Cache TTL (minuten)", "modalityBridgeCacheMaxEntries": "Cache max items", "modalityBridgeStatsBridged": "verbonden", - "modalityBridgeStatsCacheHits": "cache hits", + "modalityBridgeStatsCacheHits": "cachetreffers", "modalityBridgeStatsFailures": "fouten", "modalityBridgeStatsLastUsed": "laatst gebruikt", "modalityBridgeStatsNever": "nooit", @@ -8282,17 +8297,17 @@ "modalityBridgeVideoFrameCount": "Videobeelden per video", "modalityBridgeVideoMaxVideos": "Maximaal aantal video's per aanvraag", "modelRoutingDescriptionPlaceholder": "Route Opus-modellen naar frontier-combo", - "cliproxyapiFallbackCodes": "Cliproxyapi Fallback Codes", + "cliproxyapiFallbackCodes": "Cliproxyapi-fallbackcodes", "cliproxyapiFallbackDescription": "Cliproxyapi Fallback Beschrijving", "cliproxyapiHealthLabel": "Cliproxyapi Gezondheidslabel", "cliproxyapiImportFailed": "Cliproxyapi Importeren Mislukt", - "cliproxyapiImportResult": "Cliproxyapi Import Result", + "cliproxyapiImportResult": "Cliproxyapi-importresultaat", "cliproxyapiInvalidUrl": "Cliproxyapi Ongeldige URL", "cliproxyapiLifecycleNoticeAfter": "Cliproxyapi Levenscyclusmelding Na", "cliproxyapiLifecycleNoticeBefore": "Cliproxyapi Levenscyclusmelding Voor", "cliproxyapiLifecycleNoticeLink": "Cliproxyapi Levenscyclus Kennisgeving Link", "cliproxyapiPortLabel": "Cliproxyapi Poortlabel", - "cliproxyapiStatusLabel": "Cliproxyapi Status Label", + "cliproxyapiStatusLabel": "Cliproxyapi-statuslabel", "cliproxyapiVersionLabel": "Cliproxyapi Versie Label", "collection": "Verzameling", "errorPage": { @@ -8309,9 +8324,9 @@ "oneproxyCountry": "Oneproxy Land", "oneproxyDelete": "Oneproxy Verwijderen", "oneproxyEmpty": "Oneproxy Leeg", - "oneproxyHost": "Oneproxy Host", + "oneproxyHost": "Oneproxy-host", "oneproxyLatency": "Oneproxy Latentie", - "oneproxyProtocol": "Oneproxy Protocol", + "oneproxyProtocol": "Oneproxy-protocol", "oneproxyQuality": "Oneproxy Kwaliteit", "oneproxySyncFailed": "Synchronisatie mislukt: {error}", "oneproxySyncSuccess": "Gesynchroniseerde {total} proxies ({added} nieuw, {updated} bijgewerkt)", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Gezondheid", "cliproxyapiPort": "Haven", "qdrantHost": "Host", - "qdrantCollection": "Verzameling", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Verzameling" }, "contextRtk": { "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "description": "Opdrachtbewuste compressie voor tooluitvoer, terminallogboeken en buildresultaten.", + "enabled": "Ingeschakeld", + "intensity": "Intensiteit", + "intensityMinimal": "Minimaal", + "intensityStandard": "Standaard", + "intensityAggressive": "Agressief", + "toolResults": "Toolresultaten", + "assistantMessages": "Assistentberichten", + "codeBlocks": "Codeblokken", "filterCatalog": "Filtercatalogus", "filterCatalogDesc": "Beschikbare uitvoerfilters per categorie", "guidedConfig": "Configuratie", "guidedConfigDesc": "Pas aan hoe RTK uw terminaluitvoer filtert", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Max. aantal regels", + "maxChars": "Max. aantal tekens", "deduplicateThreshold": "Drempel ontdubbelen", "customFilters": "Aangepaste filters", "detectedType": "Gedetecteerd type", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Mislukkingen", "rawOutputAlways": "Altijd", "rawOutputMaxBytes": "Max. aantal bytes onbewerkte uitvoer", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Filters testen", + "pasteOutput": "Plak tooluitvoer om de filtering te testen...", "presetHigh": "Agressief", "presetLow": "Licht", "presetMaxChars": "Maximale uitvoertekens", "presetMaxLines": "Maximale uitvoerlijnen", "presetMedium": "Standaard", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Uitvoeren", + "result": "Resultaat", + "previewEmpty": "Voer een voorbeeld uit om een voorvertoning van de RTK-uitvoer te bekijken.", + "detected": "Gedetecteerd", "masterSwitchOffAlert": "Token Saver-hoofdschakelaar staat UIT — deze instellingen hebben geen invloed op verzoeken totdat u deze inschakelt via de Endpoint-pagina.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Gefilterde tokens", + "filtersActive": "Actieve filters", + "requests": "Verzoeken", + "avgSavings": "Gem. besparing", "simpleMode": "Eenvoudig", "advancedMode": "Geavanceerd", "searchFilters": "Zoekfilters...", @@ -8481,7 +8488,7 @@ "savings": "Besparingen", "original": "Origineel", "compressed": "Gecomprimeerd", - "diff": "Diff", + "diff": "Verschil", "last7Days": "Laatste 7 dagen", "noDataYet": "Nog geen gegevens", "runs": "Uitvoeringen", @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Compressiecombinaties", + "description": "Definieer hoe engines worden gecombineerd voor verschillende routeringsscenario's.", + "createCombo": "Compressiecombinatie maken", + "editCombo": "Bewerken", + "deleteCombo": "Verwijderen", + "deleteConfirm": "Deze compressiecombinatie verwijderen?", + "pipeline": "Pijplijn", + "addStep": "Stap toevoegen", + "removeStep": "Verwijderen", + "name": "Naam", + "descriptionField": "Beschrijving", + "languagePacks": "Taalpakketten", + "outputMode": "Uitvoermodus", + "assignToRouting": "Toewijzen aan routeringscombinaties", + "noAssignments": "Geen routeringscombinaties beschikbaar", + "default": "Standaard", + "setAsDefault": "Instellen als standaard", + "save": "Opslaan", + "cancel": "Annuleren", + "enabled": "Ingeschakeld", "loading": "Laden…", "hubTitle": "Compressiehub", "hubDescription": "Kies welk compressieprofiel globaal wordt uitgevoerd.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "Momenteel alleen beschikbaar voor Claude (Anthropic). Het is een gedelegeerde modus: de provider wist oude tool-use-blokken aan de serverzijde — we herschrijven het bericht niet. Het heeft geen invloed op andere providers.", "namedCombos": "Benoemde combo's", "namedCombosDescription": "Sla verschillende pipelines op en wijs ze toe aan specifieke routingcombo's.", + "activeProfileMasterSwitchOffWarning": "Het onderstaande actieve profiel wordt pas uitgevoerd wanneer de hoofdschakelaar 'Promptcompressie' is ingeschakeld.", + "activeProfileMasterSwitchOffCta": "Schakel deze in bij Instellingen", "comboNamePlaceholder": "Combonaam", "descriptionPlaceholder": "Beschrijving", "nameRequired": "Voer een combonaam in voordat u opslaat.", @@ -8674,9 +8683,7 @@ "languagePacksList": "Taalpakketten: {packs}", "dragToReorder": "Sleep om stap opnieuw te ordenen", "engine": "Engine", - "intensity": "Intensiteit", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensiteit" }, "compressionStudio": { "noRun": "Geen compressierun beschikbaar.", @@ -8688,10 +8695,10 @@ "pauseReplay": "Replay pauzeren", "playReplay": "Replay afspelen", "pause": "Pauzeren", - "replay": "Replay", + "replay": "Opnieuw afspelen", "resetReplay": "Replay resetten", "stepProgress": "stap {current}/{total}", - "inlineView": "Inline", + "inlineView": "Ingebed", "splitComingSoon": "Gesplitste weergave (binnenkort beschikbaar)", "inputPlaceholder": "Plak een prompt, tooluitvoer of context…", "activeCombined": "Actief in de gecombineerde flow", @@ -8705,7 +8712,7 @@ "run": "Uitvoeren", "laneRejected": "afgewezen: {reason}", "error": "fout", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Voorbeeld van gecombineerde pipeline mislukt: {reason}", "combinedFlow": "Gecombineerde flow", "eachLayer": "Elke laag afzonderlijk", "diff": "Verschil", @@ -8715,7 +8722,7 @@ "output": "UITVOER", "tokenCount": "{count, number} tokens", "tokenShort": "tok", - "provider": "Provider", + "provider": "Aanbieder", "judgeModel": "Judge-model", "judgeModelPlaceholder": "bijv. claude-haiku", "maxCostUsd": "USD-limiet", @@ -8729,7 +8736,7 @@ "savings": "Besparingen", "retention": "Retentie", "outputTokensShort": "Uitvoertokens", - "fidelity": "Fidelity", + "fidelity": "Getrouwheid", "playTab": "Afspelen", "compareTab": "Vergelijken", "encoderComparison": "Encoder A/B — {count} array(s)", @@ -8739,7 +8746,7 @@ "tokensCl100k": "tokens (cl100k)" }, "omniglyph": { - "preview": "Preview", + "preview": "Voorbeeld", "description": "Context-als-afbeelding-compressie. Rendert de systeemprompt, tooldocumentatie en dichte geschiedenis als compacte PNG-pagina's die Claude Fable 5 leest in plaats van tekst. Afbeeldingstokens worden gefactureerd op basis van afmetingen in plaats van tekens, waardoor het geconverteerde blok ongeveer 10× minder kost. Alleen directe Anthropic-route.", "economicsTitle": "De economische aspecten", "economics": { @@ -8768,7 +8775,7 @@ "why": "Aggregators resamplen afbeeldingen en vernietigen de leesbaarheid — alleen de directe route is leidend." }, "format": { - "label": "Format", + "label": "Indeling", "pass": "native Claude", "why": "De body moet het Claude-format gebruiken en mag nooit een systeemrol binnen berichten plaatsen." }, @@ -8780,27 +8787,27 @@ }, "enableTitle": "Schakel de engine in", "enableDescription": "Draait als laatste in de stack (nadat RTK/Caveman de tekst opschoont, converteert OmniGlyph de rest naar afbeeldingen) en draait ook standalone via de omniglyph-modus. Dit is een preview en blijft standaard uitgeschakeld totdat de end-to-end-validatie is voltooid.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Compressieprofiel", + "profileDescription": "Het profiel is een bovengrens, geen ondergrens: een strenger profiel kan niet opnieuw worden verruimd door een overschrijving per stap. Gemeten op deze codebase: met coding-safe of balanced wordt er niets gecomprimeerd voor een sessie die nog geen geschiedenis heeft opgebouwd, omdat beide de drempel voor het minimumaantal tekens verhogen en de systeemprompt, toolschema's en toolresultaten in hun oorspronkelijke vorm behouden.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agressief (standaard)", + "description": "Het beleid waarop de gepubliceerde meetresultaten zijn gebaseerd. Zet de systeemprompt, tooldocumentatie en compacte geschiedenis om in afbeeldingen." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Gebalanceerd", + "description": "Behoudt de actuele status in de oorspronkelijke vorm en beschermt de laatste 8 beurten; alleen oudere, afgesloten geschiedenis wordt samengevouwen." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Veilig voor code", + "description": "Behoudt autoriteit, toolschema's en actuele tooluitvoer in de oorspronkelijke vorm en beschermt de laatste 12 beurten. Er wordt niets gecomprimeerd totdat de sessie geschiedenis heeft opgebouwd." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Ongewijzigd doorgeven", + "description": "Routeert zonder transformatie. De engine wordt overgeslagen en het verzoek wordt ongewijzigd doorgestuurd." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Selecteer het OmniGlyph-compressieprofiel", "saved": "Opgeslagen.", "saveFailed": "Opslaan mislukt.", "enableAria": "Schakel de OmniGlyph-engine in", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Regelgebaseerde berichtcompressie, taalpakketten, analyses en instellingen voor de uitvoermodus.", "advancedConfig": "Geavanceerde configuratie", "advancedConfigDesc": "Verfijn het compressiegedrag", "aggressiveSettings": "Agressieve instellingen", "aggressiveSettingsDesc": "Maximale compressie met potentiële kwaliteitsafwegingen", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Verzoeken", + "tokensSaved": "Bespaarde tokens", + "savingsPercent": "Besparing in %", + "avgLatency": "Gem. latentie", + "languagePacks": "Taalpakketten", + "languagePacksDesc": "Compressieregels inschakelen voor specifieke talen.", "labelAutoTrigger": "Automatisch comprimeren wanneer de context groter is", "labelCompressionRate": "Compressie sterkte", "labelMaxTokens": "Doeltokens per bericht", "labelMinLength": "Minimale berichtlengte", "labelMinSavings": "Minimale tokens om op te slaan", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Ingeschakeld", + "autoDetect": "Taal automatisch detecteren", + "rulesCount": "{count} regels", "inputCompressionTitle": "Invoercompressie", "inputCompressionDesc": "Herschrijf chatgeschiedenis met kortere bewoordingen. Vermindert invoertokens met ~50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Compressieanalyse", + "noAnalytics": "Nog geen compressieanalyses.", "masterDisabledWarning": "De hoofdschakelaar van Token Saver staat UIT — deze instellingen hebben geen invloed op verzoeken totdat u deze inschakelt via Compressie-instellingen of hier wijzigt.", "outputMode": "Uitvoermodus", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Uitvoermodus", "quickSettings": "Snelle instellingen", "quickSettingsDesc": "Basiscompressie-instellingen om aan de slag te gaan", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Automatische omzeiling voor duidelijkheid", + "bypassConditions": "Omzeilingsvoorwaarden", "bypassConditionsList": "veiligheid, onomkeerbaar, verduidelijking, ordergevoelig", "simpleMode": "Eenvoudig", "advancedMode": "Geavanceerd", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ultra-instellingen", "ultraSettingsDesc": "SLM-aangedreven semantische compressie", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Antwoord bondig. Behoud technische termen, code, fouten, URLs en identificatiecodes.", + "full": "Antwoord beknopt en compact. Behoud alle technische inhoud.", + "ultra": "Antwoord uiterst beknopt met gangbare technische afkortingen. Behoud exacte symbolen." } }, "translator": { @@ -8987,7 +8994,7 @@ "ideCliIntegrations": "IDE/CLI-integraties", "inMemoryNote": "Opmerking: Gebeurtenissen worden in het geheugen opgeslagen en opnieuw ingesteld wanneer de server opnieuw opstart.", "ok": "Oké", - "errorShort": "ERR", + "errorShort": "FOUT", "formatConverter": "Formaatconverter", "formatConverterDescription": "Plak of typ een JSON-aanvraagtekst. De vertaler detecteert automatisch het bronformaat en converteert dit naar het doelformaat. Gebruik dit om fouten op te sporen in de manier waarop OmniRoute verzoeken tussen formaten vertaalt (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (gemiddeld) → {target}", @@ -9036,14 +9043,14 @@ "chunks": "brokken", "scenarioSimpleChat": "Eenvoudig chatten", "scenarioToolCalling": "Gereedschap bellen", - "scenarioMultiTurn": "Multi-turn", + "scenarioMultiTurn": "Meerdere beurten", "scenarioThinking": "Denken", "scenarioSystemPrompt": "Systeemprompt", "scenarioStreaming": "Streamen", "templateNames": { "simple-chat": "Eenvoudig chatten", "tool-calling": "Gereedschap bellen", - "multi-turn": "Multi-turn", + "multi-turn": "Meerdere beurten", "thinking": "Denken", "system-prompt": "Systeemprompt", "streaming": "Streamen", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Plak een JSON-verzoek; het formaat wordt automatisch gedetecteerd.", "advancedPipelineTitle": "OpenAI tussenliggende pipeline", "advancedPipelineSubtitle": "Visualiseer elke vertaalstap (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Streamtransformator (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Converteert Chat Completions SSE naar Responses API.", "advancedTestBenchTitle": "Testbench (8 scenario's)", "advancedTestBenchSubtitle": "Voert alle scenario's uit en rapporteert geslaagd/mislukt + compatibiliteit %.", @@ -9267,7 +9274,7 @@ "grokAutoTopUpDisabled": "Uitgeschakeld", "grokAutoTopUpAt": "bij", "grokAutoTopUpAdd": "toevoegen", - "grokAutoTopUpMax": "max", + "grokAutoTopUpMax": "max.", "grokAutoTopUpMonth": "maand", "grokAdditionalCredits": "Aanvullende Credits", "kiloAccountBalance": "Accountsaldo", @@ -9277,17 +9284,17 @@ "kiloPassRemaining": "Resterend", "kiloPassRenews": "Verlengt over {count} dagen", "kiloPassUsageLabel": "Verbruik van deze maand", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Extra gebruikstegoed", + "kimiExtraUsage": "Extra gebruik", + "kimiExtraUsageEnabled": "Ingeschakeld", + "kimiExtraUsageDisabled": "Uitgeschakeld", + "kimiExtraUsageFrozen": "Bevroren", + "kimiExtraUsageUnavailable": "Niet beschikbaar", + "kimiMonthlyUsed": "Deze maand gebruikt", + "kimiMonthlyLimit": "Maandelijkse limiet", + "kimiMonthlyLimitUnlimited": "Onbeperkt", + "kimiAdditionalCredits": "Extra credits", + "loggerTab": "Logboek", "proxyTab": "Proxy", "budgetManagement": "Budgetbeheer", "budgetSaved": "Budgetlimieten opgeslagen", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Stroomonderbrekers", "lockedIPs": "Vergrendelde IP's", "lockoutsAutoRefreshHint": "Tarieflimietvergrendelingen per model • Automatisch vernieuwen 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# vergrendeld} other {# vergrendeld}}", "timeLeft": "{time} over", "howItWorks": "Hoe het werkt", "howItWorksSubtitle": "Ontdek hoe evaluaties uw LLM-reacties valideren", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Modellen die worden getest", "searchSuitesPlaceholder": "Zoek suites...", "passSuffix": "passeren", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# testgeval} other {# testgevallen}}", "runEval": "Voer Eval uit", "runAllSuites": "Alles uitvoeren", "runAllRunning": "Alles draaien...", "runAllProgress": "{current}/{total} wordt uitgevoerd: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# suite mislukt} other {# suites mislukt}}", "runAllCompleted": "Heeft {suites} suites uitgevoerd — {passed} geslaagd, {failed} mislukt", "runAllCompletedWithFailures": "Heeft {completed} suites uitgevoerd; {failedSuites} kan niet worden voltooid", "runningProgress": "{current}/{total} wordt uitgevoerd...", @@ -9436,13 +9443,13 @@ "quotaVisibilityUpdateFailed": "Bijwerken van quotazichtbaarheid mislukt", "account": "Rekening", "modelQuotas": "Modelquota", - "lastUsed": "Last Refreshed", + "lastUsed": "Laatst vernieuwd", "actions": "Acties", "refreshQuota": "Quota vernieuwen", "today": "Vandaag", "tomorrow": "Morgen", "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "inDuration": "over {duration}", "notApplicable": "N.v.t", "rawPlanWithValue": "Ruw plan: {plan}", "noPlanFromProvider": "Geen abonnement van aanbieder", @@ -9452,9 +9459,9 @@ "cardExpand": "Uitvouwen", "cardCollapse": "Inklappen", "moreQuotas": "+{count} meer", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Niet gegroepeerd", + "viewFlat": "Plat", + "viewByEnvironment": "Op omgeving", "noQuotaDataAvailable": "Geen quotagegevens beschikbaar", "noAccountsForTierFilter": "Er zijn geen accounts gevonden voor niveaufilter", "tierAll": "Allemaal", @@ -9475,9 +9482,9 @@ "filterTierLabel": "Niveau", "purchaseAll": "Alle", "purchaseOauthSub": "Abonnement", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "OAuth-vrij", "purchaseApiKey": "API-sleutel", - "creditsLabel": "Credits", + "creditsLabel": "Tegoed", "creditBalanceHint": "Resterend saldo", "unlimitedLabel": "Onbeperkt", "refreshing": "Vernieuwen", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Credit inwisselen", "resetCreditRedeemed": "Inwisseling gereset", "resetCreditRedeemFailed": "Inwisselen van reset-tegoed mislukt", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Suite opslaan mislukt", "clone": "Kloon", "exportSuite": "Exporteren", "importSuite": "Importeren", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Ongeldige evaluatiesuite JSON", "suiteBuilderCloneSuffix": "kopiëren", "suiteBuilderImportedSuite": "Geïmporteerde suite", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", + "scorecardTitle": "Scorekaart", + "evalApiKey": "API-sleutel", + "scorecardPassRate": "Slagingspercentage", "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", + "actualOutputLabel": "Werkelijke uitvoer", + "evalTargetHint": "Selecteer een model of combinatie om te evalueren.", + "suiteBuilderDeleted": "Suite is verwijderd", + "suiteBuilderCaseCardHint": "Definieer de invoerprompt en de criteria voor de verwachte uitvoer.", + "nextResetUtc": "Volgende reset (UTC)", + "scorecardHint": "Geaggregeerde slagingspercentages voor alle evaluatiesuites.", + "suiteLatestRunsHint": "Meest recente evaluatieruns voor deze suite.", + "saving": "Opslaan", + "suiteBuilderCaseModelLabel": "Model (optioneel)", + "evalControlsTitle": "Evaluatie-instellingen", + "suiteBuilderEditTitle": "Evaluatiesuite bewerken", + "suiteBuilderCaseStrategyLabel": "Validatiestrategie", + "notifySelectDifferentCompareTarget": "Selecteer een ander doel voor de vergelijking", + "recentRunsHint": "De meest recente evaluatieruns worden weergegeven. Klik op een run om gedetailleerde resultaten te bekijken.", + "evalCompareHint": "Vergelijk de resultaten desgewenst met een tweede doel.", + "suiteBuilderCaseInvalid": "Deze testcase bevat validatiefouten. Los deze op voordat je opslaat.", + "historyEmpty": "Nog geen evaluatiegeschiedenis", + "suiteBuilderUpdated": "Suite is bijgewerkt", + "resetInterval": "Interval resetten", + "suiteBuilderCreateTitle": "Evaluatiesuite maken", + "activePeriodSpend": "Uitgaven in actieve periode", + "evalApiKeyHint": "Selecteer welke API-sleutel moet worden gebruikt voor evaluatieverzoeken.", + "evalCompareOptional": "Vergelijken (optioneel)", + "suiteBuilderDeleteFailed": "Verwijderen van suite mislukt", + "suiteBuilderCaseSystemPromptPlaceholder": "Optionele systeeminstructies...", + "scorecardCases": "Testcases", + "runCompletedWithScore": "Evaluatie voltooid — slagingspercentage: {score}%", + "suiteBuilderCustomBadge": "Aangepast", + "targetSuiteDefaults": "Standaardinstellingen van suite", + "suiteBuilderDeleteConfirm": "Weet je zeker dat je deze suite wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", + "suiteBuilderNameLabel": "Suitenaam", "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "evalCompareTarget": "Vergelijkingsdoel", + "suiteBuilderCaseModelPlaceholder": "bijv. gpt-4o-mini", + "evalControlsHint": "Configureer je evaluatiedoel en API-sleutel en voer vervolgens suites uit om de modelkwaliteit te valideren.", + "recentRunsTitle": "Recente runs", + "suiteBuilderCaseSystemPromptLabel": "Systeemprompt", + "suiteBuilderCaseExpectedPlaceholder": "bijv. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "bijv. zeker fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Plak het exacte verwachte antwoord", "suiteBuilderCaseExpectedPlaceholderRegex": "bijv. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Gebruik een reguliere JavaScript-expressie zonder schuine strepen.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "bijv. suite voor codekwaliteit", + "suiteBuilderAddCase": "Testcase toevoegen", + "cancel": "Annuleren", + "evalTarget": "Doel", + "suiteBuilderCaseNameLabel": "Naam van testcase", + "weeklyLimitUsd": "Wekelijkse limiet (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "bijv. Schrijf een fibonacci-functie in Python", + "suiteBuilderNameRequired": "Suitenaam is verplicht", + "suiteBuilderCaseUserPromptLabel": "Gebruikersprompt", + "daily": "Dagelijks", + "resultErrorLabel": "Fout", + "suiteBuilderBuiltInBadge": "Ingebouwd", + "suiteBuilderCaseCardTitle": "Testcase", "suiteBuilderDuplicateCase": "Duplicaat", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", + "weeklyLimitPlaceholder": "bijv. 50,00", + "suiteBuilderCaseTagsHint": "Door komma's gescheiden tags voor het organiseren van testcases.", + "notifyEvalRunFailedWithReason": "Evaluatie mislukt: {reason}", + "weekly": "Wekelijks", + "runEvalRunning": "Evaluatie wordt uitgevoerd...", + "delete": "Verwijderen", + "resetTimeUtc": "Resettijd (UTC)", + "evalApiKeyAuto": "Automatisch (standaard gebruiken)", + "suiteBuilderDescriptionPlaceholder": "Optionele beschrijving van wat deze suite test...", + "targetComparisonTitle": "Doelvergelijking", + "save": "Opslaan", + "suiteBuilderCreated": "Suite succesvol aangemaakt", + "suiteLatestRuns": "Meest recente uitvoeringen", + "suiteBuilderCaseExpectedLabel": "Verwachte waarde", + "historyLatency": "Latentie", + "suiteBuilderCaseTagsPlaceholder": "bijv. coding, python", + "targetTypeCombo": "Combinatie", + "scorecardPassed": "Geslaagd", "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", + "suiteBuilderNewSuite": "Nieuwe suite", + "notifyEvalLoadFailed": "Kan evaluatiegegevens niet laden", + "notConfigured": "Niet geconfigureerd", + "suiteBuilderCaseNamePlaceholder": "bijv. Python-fibonaccitest", "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "suiteBuilderCreateAction": "Suite aanmaken", + "suiteBuilderCasesHint": "Elke testcase verzendt een prompt en valideert het antwoord.", + "suiteBuilderUpdatedAt": "Bijgewerkt", + "errorBadge": "Fout", + "suiteBuilderCasesTitle": "Testcases", + "edit": "Bewerken", + "monthly": "Maandelijks", + "suiteBuilderCasesRequired": "Er is ten minste één testcase vereist", + "weeklyLimitSummary": "Samenvatting van de wekelijkse budgetlimiet", + "suiteBuilderDescriptionLabel": "Beschrijving", + "targetComparisonHint": "Vergelijking van evaluatieresultaten tussen doelen naast elkaar.", + "compareCompletedWithScore": "Vergelijking voltooid — slagingspercentage van {score}%", + "staleQuotaTooltip": "Laatste vernieuwing mislukt — gecachte gegevens worden weergegeven", "quotaThresholdLabel": "Min. resterend", "quotaCutoffsColumnHelp": "Stop verzoeken als het resterende quotum dit percentage of lager bereikt.", "quotaCutoffsButtonDefault": "Standaard", @@ -9744,7 +9751,7 @@ "proxyEvent": "Proxy-evenement", "proxy": "Proxy", "level": "Niveau", - "directNative": "Direct (native)", + "directNative": "Rechtstreeks (native)", "combo": "Combinatie", "inputTokens": "ik:", "outputTokens": "O:" @@ -9777,13 +9784,13 @@ "systemMonitor": { "metricsAriaLabel": "Systeemstatistieken", "memory": "Geheugen", - "memoryShort": "mem", - "uptime": "Uptime", + "memoryShort": "geh", + "uptime": "Bedrijfstijd", "ariaLabel": "Systeemmonitoring", "title": "Systeemmonitor", "version": "Versie", "connections": "Verbindingen", - "circuitBreakers": "Circuit Breakers", + "circuitBreakers": "Stroomonderbrekers", "open": "{count} open", "memoryUsage": "Geheugengebruik" }, @@ -9799,7 +9806,7 @@ "totalRequests": "Totaal Aantal Verzoeken", "totalInputTokens": "Totaal Invoertokens", "model": "Model", - "provider": "Provider", + "provider": "Aanbieder", "requests": "Verzoeken", "lastUsed": "Laatst Gebruikt", "inputTokens": "Invoertokens", @@ -9863,7 +9870,7 @@ "backToLogin": "Terug naar Inloggen", "forgotPassword": "Wachtwoord vergeten?", "continueWithOidc": "Doorgaan met OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Standaardwachtwoord: CHANGEME (tenzij INITIAL_PASSWORD is ingesteld)", "Authorization": "Autorisatie", "Content-Disposition": "Inhoud-dispositie", "waitingForAuthorization": "Wachten op toestemming...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Wachten op toestemming voor anti-zwaartekracht...", "waitingForQoderAuthorization": "Wachten op Qoder-autorisatie...", "exchangingCodeForTokens": "Code uitwisselen voor tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Incompatibele Node.js-versie", + "nodeIncompatibleDesc": "Je gebruikt Node.js {version}, dat buiten het beleid van OmniRoute voor veilige ondersteunde runtimes valt. Gebruik een gepatchte Node.js 20.x- of 22.x LTS-release.", + "nodeIncompatibleFixLabel": "Oplossing: installeer een gepatchte Node.js 22 LTS-release", + "nodeIncompatibleHint": "OmniRoute vereist Node.js 22.22.2+ (22.x LTS) of 24.0.0+ (24.x LTS). Node 24 LTS wordt aanbevolen.", "resetViaAppDataTitle": "Reset via App Gegevens", "resetViaAppDataDescription": "Verwijder het instellingenbestand uit de app-datamap om je wachtwoord opnieuw in te stellen:", "quitDesktopApp": "Sluit de OmniRoute desktopapp volledig af", @@ -9884,7 +9891,7 @@ "relaunchDesktopFreshSetup": "Herstart de OmniRoute desktopapp — het zal een nieuwe installatie starten", "alternativeSetPasswordTitle": "Alternatief: Stel Nieuw Wachtwoord In", "alternativeSetPasswordDescription": "Stel een nieuw initieel wachtwoord in via het serveromgeving bestand:", - "openServerEnvFilePrefix": "Open", + "openServerEnvFilePrefix": "Openen", "relaunchDesktopApp": "Herstart de OmniRoute desktop-app", "codexLinkInvalidOrExpired": "Deze link is ongeldig of is verlopen.", "codexValidationServerError": "Kon de server niet bereiken om deze link te valideren.", @@ -9897,7 +9904,7 @@ "codexConnectDescription": "Authorize een ChatGPT-account om deze verbinding af te ronden.", "validatingCodexLink": "Link aan het valideren…", "codexGenerateCodeDescription": "Klik hieronder om een eenmalige code te genereren en meld je vervolgens aan bij OpenAI.", - "startCodexFlow": "Start", + "startCodexFlow": "Starten", "requestingOpenAiCode": "Code opvragen bij OpenAI…", "codexVerificationInstructions": "1. Open de OpenAI verificatiepagina en 2. voer deze code in. Deze pagina wordt automatisch bijgewerkt zodra je autoriseert.", "yourCode": "Je code", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "Aanbieders", "commonUseCases": "Veelvoorkomende gebruiksscenario's", "clientCompatibility": "Compatibiliteit met klanten", - "protocolsToc": "Protocols", + "protocolsToc": "Protocollen", "apiReference": "API-referentie", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Naslagwerk voor de beheer-API", + "managementApiDescription": "Automatiseringseindpunten voor het proxyregister, scopetoewijzingen en migratie van verouderde proxy's.", "method": "Methode", "path": "Pad", "notes": "Opmerkingen", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Installeer OmniRoute als een progressieve webapp op Android-, iOS- en desktopbrowsers.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Voer OmniRoute zonder grafische interface uit op Android via Termux. Open het dashboard vanuit je mobiele browser.", "featureRoutingTitle": "Routering door meerdere providers", "featureRoutingText": "Routeer verzoeken naar meer dan 30 AI-providers via één enkel OpenAI-compatibel eindpunt. Ondersteunt API's voor chat, reacties, audio en afbeeldingen.", "featureCombosTitle": "Combo's en balanceren", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "Gebruik OmniRoute als een stabiele basis-URL terwijl u daaronder accounts of providercombinaties roteert.", "clientKimiBullet2": "Geef de voorkeur aan vooraf ingestelde modellen in codeerstromen, zodat fallback en audittrail expliciet blijven.", "clientKimiBullet3": "Gebruik `/v1/responses` als u routering in native Response-stijl wilt voor clients die tools gebruiken.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "Protocollen: MCP en A2A", + "protocolsDescription": "Naast OpenAI-compatibele API's biedt OmniRoute twee operationele protocollen: MCP voor het uitvoeren van tools en A2A voor workflows tussen agents.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Gebruik MCP via stdio zodat clients OmniRoute-tools kunnen ontdekken en aanroepen met inzicht in de auditgegevens.", + "protocolMcpStep1": "Start het MCP-transport met `omniroute --mcp`.", + "protocolMcpStep2": "Stel je MCP-client in op stdio-transport.", + "protocolMcpStep3": "Roep `omniroute_get_health` en `omniroute_list_combos` aan om de connectiviteit te valideren.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "Gebruik A2A JSON-RPC om taken synchroon of via SSE-streaming in te dienen.", + "protocolA2aStep1": "Lees `/.well-known/agent.json` voor agentdetectie.", + "protocolA2aStep2": "Stuur `message/send`- of `message/stream`-verzoeken naar `POST /a2a`.", + "protocolA2aStep3": "Beheer de taaklevenscyclus met `tasks/get` en `tasks/cancel`.", + "protocolTroubleshootingTitle": "Protocolproblemen oplossen", + "protocolTroubleshooting1": "Als de MCP-status offline is, controleer dan of het stdio-proces actief is en het heartbeatbestand wordt bijgewerkt.", + "protocolTroubleshooting2": "Als A2A-taken in `working` blijven staan, controleer dan `/api/a2a/tasks/:id` en streamgebeurtenissen op een eindstatus.", + "protocolTroubleshooting3": "Gebruik `/dashboard/mcp` en `/dashboard/a2a` voor operationele bediening en inzicht in audits.", "endpointChatNote": "OpenAI-compatibel chat-eindpunt (standaard).", "endpointResponsesNote": "Reacties API-eindpunt (Codex, o-serie).", "endpointModelsNote": "Modelcatalogus voor alle aangesloten providers.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Herschrijfhulp voor clients zonder /v1.", "endpointRewriteResponsesNote": "Herschrijfhulp voor reacties zonder /v1.", "endpointRewriteModelsNote": "Herschrijfhulp voor modeldetectie zonder /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Opgeslagen items in het proxyregister weergeven (ondersteunt paginering).", + "mgmtProxiesCreateNote": "Een herbruikbaar proxy-item in het register maken.", + "mgmtProxiesHealthNote": "24-uurs-/voortschrijdende statusstatistieken per opgeslagen proxy ophalen uit proxylogboeken.", + "mgmtProxiesBulkAssignNote": "Eén proxy in één aanvraag toewijzen aan of verwijderen uit meerdere bereik-ID's.", + "mgmtAssignmentsListNote": "Proxytoewijzingen weergeven op bereik, scope_id of proxy_id.", + "mgmtAssignmentsUpdateNote": "Een proxy toewijzen aan of verwijderen uit een globaal/provider-/account-/combinatiebereik.", + "mgmtLegacyMigrationNote": "Verouderde proxyConfig-toewijzingen importeren in registertoewijzingen.", "modelPrefixesDescriptionStart": "Gebruik het providervoorvoegsel vóór de modelnaam om naar een specifieke provider te routeren. Voorbeeld:", "modelPrefixesDescriptionEnd": "routes naar GitHub Copilot.", "provider": "Aanbieder", @@ -10209,7 +10216,7 @@ "mcpToolsCacheDesc": "Bekijk cachestatistieken en spoel semantische caches of handtekeningcaches.", "mcpToolsCompressionTitle": "Compressiemotoren", "mcpToolsCompressionDesc": "Configureer RTK/Brotli-compressie, wissel van engine en inspecteer compressieanalyses per combo.", - "mcpToolsOneProxyTitle": "1Proxy / Tunnels", + "mcpToolsOneProxyTitle": "1Proxy / tunnels", "mcpToolsOneProxyDesc": "Beheer uitgaande proxy's, roteer residentiële IP's en inspecteer de proxystatus.", "mcpToolsMemoryTitle": "Geheugen", "mcpToolsMemoryDesc": "Zoeken, toevoegen en wissen van persistente gespreksgeheugenvermeldingen.", @@ -10251,13 +10258,13 @@ "nonTechUsersSubtitle": "Begin snel — geen technische achtergrond nodig", "techUsersTitle": "Voor Techgebruikers", "techUsersSubtitle": "Diepgaande verkenning van architectuur, API's en interne systemen", - "apiExplorerMetadataTitle": "API Explorer — OmniRoute Docs", + "apiExplorerMetadataTitle": "API-verkenner — OmniRoute-documentatie", "apiExplorerMetadataDescription": "Interactieve API-onderzoeker — probeer OmniRoute-eindpunten live met realtime reacties", "apiExplorerTitle": "API Verkenner", "apiExplorerDescription": "Probeer OmniRoute-eindpunten live. Selecteer een eindpunt, configureer uw verzoek en zie de reactie in real time.", "apiExplorerSseStarted": "SSE-stream gestart — controleer de terminal/devtools voor realtime-uitvoer.", "apiExplorerError": "Fout: {message}", - "apiExplorerAuth": "auth", + "apiExplorerAuth": "authenticatie", "apiExplorerResponseLabel": "Antwoord", "apiExplorerSelectEndpoint": "Selecteer een eindpunt om te verkennen", "apiExplorerChooseApi": "Kies een API uit de zijbalk om details te zien en het live uit te proberen", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute is open source-software. U bent vrij om het te inspecteren, wijzigen en distribueren onder de voorwaarden van de licentie." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI-agents", + "description": "Ontdek geïnstalleerde CLI-agents op je systeem. Voeg aangepaste agents toe voor automatische detectie.", + "refresh": "Vernieuwen", + "installed": "Geïnstalleerd", + "notFound": "Niet gevonden", + "builtIn": "Ingebouwd", + "custom": "Aangepast", + "remove": "Verwijderen", + "addCustomAgent": "Aangepaste agent toevoegen", + "addCustomAgentDesc": "Registreer een willekeurige CLI-tool voor detectie. Deze wordt bij het vernieuwen automatisch gescand.", + "agentName": "Agentnaam", + "binaryName": "Naam van binair bestand", + "versionCommand": "Versieopdracht", + "spawnArgs": "Opstartargumenten", + "addAgent": "Agent toevoegen", + "scanning": "Systeem wordt gescand op CLI-agents...", + "opencodeIntegration": "OpenCode-integratie", + "opencodeDetected": "opencode {version} gedetecteerd", + "opencodeDesc": "Genereer een gebruiksklaar {configFile} met je OmniRoute-basis-URL en alle beschikbare modellen — plaats het in de hoofdmap van je project en voer {command} uit.", + "downloadConfig": "{file} downloaden", + "downloaded": "Gedownload!", + "setupGuideTitle": "Installatiehandleiding", + "openCliTools": "CLI-tools openen", + "setupGuideDetectCliTitle": "Geïnstalleerde CLI's detecteren", + "setupGuideDetectCliDesc": "Klik na het installeren of bijwerken van een CLI op Vernieuwen, zodat OmniRoute opnieuw naar uitvoerbare bestanden en versies kan zoeken.", + "setupGuideCustomAgentTitle": "Aangepast uitvoerbaar bestand registreren", + "setupGuideCustomAgentDesc": "Gebruik Aangepaste agent toevoegen als je CLI niet in de ingebouwde lijst staat. Geef de naam van het uitvoerbare bestand en de versieopdracht op.", + "setupGuideCommandMissingTitle": "'command not found' oplossen", + "setupGuideCommandMissingDesc": "Controleer of de CLI-opdracht in PATH staat, open een nieuwe terminalsessie en voer Vernieuwen opnieuw uit.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10482,7 +10489,7 @@ "cursorCloud": "Cursor's achtergrond- / cloudagents (officiële API-sleutel)" }, "activityTypes": { - "plan": "Plan", + "plan": "Abonnement", "command": "Commando", "code_change": "Codewijziging", "message": "Bericht", @@ -10496,7 +10503,7 @@ "system-prompt": "Systeemprompt", "thinking": "Denken", "tool-calling": "Gereedschap bellen", - "multi-turn": "Multi-turn", + "multi-turn": "Meerdere beurten", "vision": "Visie", "schema-coercion": "Schema dwang" }, @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Cachebeheer", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Vernieuwen", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Geheugenitems", + "memoryEntriesSub": "LRU in het geheugen", + "dbEntries": "Database-items", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Cachetreffers", + "cacheHitsSub": "van in totaal {total}", + "tokensSaved": "Bespaarde tokens", + "tokensSavedSub": "Geschat op basis van treffers", + "hitRate": "Trefferpercentage", + "performance": "Cacheprestaties", + "autoRefresh": "Wordt elke {seconds} s automatisch vernieuwd", + "hits": "Treffers", + "misses": "Missers", + "total": "Totaal", + "behavior": "Cachegedrag", + "behaviorDeterministic": "Alleen niet-streamende verzoeken met temperature=0 worden gecachet.", + "behaviorBypass": "Omzeil dit met de header {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "Standaard-TTL: 30 minuten. Configureer via {envVar}.", + "idempotency": "Idempotentielaag", + "activeDedupKeys": "Actieve deduplicatiesleutels", + "dedupWindow": "Deduplicatievenster", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Kan de cache niet wissen.", + "unavailable": "Cache niet beschikbaar", + "unavailableDesc": "Kan cachestatistieken niet ophalen. Controleer of de server actief is.", "loadingCacheAria": "Cache laden", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Promptcache (aan de kant van de provider)", + "semanticCache": "Semantische cache", + "promptCacheSectionDesc": "Toont promptcacheactiviteit aan de kant van de provider uit de gebruiksgeschiedenis, zodat je kunt zien waar cachebeheer actief is en hoeveel invoer wordt hergebruikt.", + "promptTrendDesc": "Uurlijks verzoekvolume, cachedekking en cacheleesvolume gedurende de afgelopen 24 uur.", + "cachedRequests": "Gecachete verzoeken", + "cachedRequests24h": "Gecachete verzoeken (24u)", + "cacheHitRate": "Cachetrefferpercentage", + "cacheRate": "Cachepercentage", + "cacheRateDesc": "van alle verzoeken", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Promptcache-statistieken", + "withCacheControl": "Met cachebeheer", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Hergebruiksratio van cache", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Geschatte kostenbesparing", + "lastUpdated": "Laatst bijgewerkt", + "hoursTracked": "bijgehouden uren", + "busiestHour": "Drukste uur", + "peakCacheRate": "Hoogste cachepercentage", + "trendHour": "Uur", + "activityVolume": "Activiteit", + "requestsShort": "verzoeken", + "inputShort": "Invoer", + "cachedShort": "Gecachet", + "writeShort": "Schrijven", + "resetting": "Bezig met resetten...", + "resetMetrics": "Statistieken resetten", + "byProvider": "Uitsplitsing per provider", + "providerCacheRateDesc": "Elke provider toont het totale aantal invoertokens, uit de cache gelezen tokens en naar de cache geschreven tokens, zodat u de hergebruiksratio aan de hand van de ruwe totalen kunt controleren.", "provider": "Provider", - "requests": "Requests", + "requests": "Verzoeken", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", - "tableProvider": "Provider", + "trend24h": "Cachetrend (24u)", + "peakCached": "Piek gecachet", + "cached": "Gecachet", + "overview": "Overzicht", + "tableProvider": "Aanbieder", "tableModel": "Model", "performanceTitle": "Prestaties", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "De eigen deterministische responscache van OmniRoute. Wanneer deze is ingeschakeld, kunnen herhaalde niet-streamingverzoeken met temperature=0 lokaal worden afgehandeld zonder de upstream-provider aan te spreken.", + "semanticCacheDisabledDesc": "De semantische cache is uitgeschakeld. OmniRoute slaat lokaal hergebruik van antwoorden over totdat u dit weer inschakelt in Instellingen.", + "semanticEntriesDesc": "Permanent opgeslagen semantische cacherecords die momenteel in SQLite zijn opgeslagen. Promptcache-activiteit aan de providerzijde wordt hier niet weergegeven.", + "searchEntries": "Items zoeken...", + "search": "Zoeken", + "loading": "Laden...", + "entriesLoadError": "Kan semantische cache-items niet laden.", + "noEntries": "Geen cache-items gevonden", + "noPromptCacheData": "Er is nog geen promptcache-activiteit aan de providerzijde geregistreerd.", + "noTrendData": "Er is de afgelopen 24 uur geen promptcache-activiteit geregistreerd.", + "signature": "Handtekening", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Aangemaakt", + "expires": "Verloopt", + "actions": "Acties", + "deduplicatedRequests": "Ontdubbelde verzoeken", + "savedCalls": "Bespaarde API-aanroepen", + "totalProcessed": "Totaal aantal verwerkte verzoeken", + "disabled": "Uitgeschakeld", + "totalRequests": "Totaal aantal verzoeken", "reasoningCache": "Redenering herhaling", "reasoningCacheDesc": "Behoudt modeldenken voor multi-turn tool-aanroepstromen", "reasoningEntries": "Actieve inzendingen", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes}m geleden", "hoursAgo": "{hours}u geleden", "daysAgo": "{days}d geleden", - "entries": "Entries" + "entries": "Items" }, "proxyConfigModal": { "levelGlobal": "Globaal", @@ -10678,7 +10685,7 @@ "levelKey": "Sleutel", "levelDirect": "Direct (geen proxy)", "titleGlobal": "Algemene proxyconfiguratie", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "{level}-proxy — {label}", "loading": "Proxyconfiguratie laden...", "inheritingFrom": "Erven van", "source": "Bron", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Sluit Cursor-IDE aan", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Inloggen met Cursor", + "tabImport": "Token importeren", + "loginDescription": "Opent de browseraanmelding van Cursor. Werkt in Docker — keur de aanmelding goed in de browser op je host en keer daarna hier terug.", + "loginWithCursor": "Inloggen met Cursor", + "startingLogin": "Starten…", + "waitingApproval": "Wachten op goedkeuring voor aanmelding bij Cursor…", + "openUrlHint": "Als de browser niet is geopend:", + "openLoginLink": "Aanmeldpagina openen", + "cancelLogin": "Aanmelding annuleren", "autoDetecting": "Tokens automatisch detecteren...", "readingFromCursor": "Lezen vanuit Cursor IDE of cursor-agent", "tokensAutoDetected": "Tokens succesvol automatisch gedetecteerd vanuit Cursor IDE!", "cursorNotDetected": "Cursor-IDE niet gedetecteerd. Plak uw token handmatig.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Werk je in Docker? Gebruik bij voorkeur Inloggen met Cursor. Automatisch importeren vanuit de IDE en cursor-agent zijn doorgaans niet beschikbaar in de container. Zie docs/providers/CURSOR-DOCKER.md.", "accessToken": "Toegangstoken", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Vernieuwingstoken", + "refreshTokenPlaceholder": "Optioneel — schakelt automatische tokenvernieuwing in", "required": "*", "accessTokenPlaceholder": "Toegangstoken wordt automatisch ingevuld...", "machineId": "Machine-ID", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Automatische detectie van tokens is mislukt", "errorEnterToken": "Voer een toegangstoken in", "errorImportFailed": "Importeren is mislukt", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Kan aanmelding bij Cursor niet starten", + "errorLoginPoll": "Aanmelding bij Cursor mislukt", + "errorLoginTimeout": "Time-out bij aanmelding bij Cursor — probeer het opnieuw" }, "pricingModal": { "title": "Prijsconfiguratie", @@ -10843,9 +10850,9 @@ "selectProxy": "{name} selecteren", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Legacy importeren", + "bulkAssign": "Bulksgewijs toewijzen", + "addProxy": "Proxy toevoegen", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Testen", + "edit": "Bewerken", + "delete": "Verwijderen", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10886,10 +10893,10 @@ "bulkLabelScopeIds": "Bereik-ID's (door komma's of nieuwe regels gescheiden)", "bulkScopeIdsPlaceholder": "provider-openai,provider-antropisch", "bulkApply": "Toepassen", - "labelScope": "Scope", + "labelScope": "Bereik", "labelProxy": "Proxy", "scopeGlobal": "globaal", - "scopeProvider": "provider", + "scopeProvider": "aanbieder", "scopeAccount": "account", "scopeCombo": "combinatie", "bulkImportErrorMissingName": "NAAM ontbreekt", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Mislukt", "successRate": "{rate}% succes", "avgLatency": "{latency}ms gemiddeld", "assignmentsCount": "{count} opdrachten", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Herstellen", "relayAuthMissing": "authenticatie ontbreekt", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Rotatiestrategie", "poolStrategyHint": "round-robin doorloopt leden op volgorde; random kiest gelijkmatig; sticky behoudt één lid gedurende een tijdvenster; latency-optimized kiest de snelste op basis van logs.", "poolStrategyFailed": "Kan de rotatiestrategie niet bijwerken", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Roulerend", "strategyRandom": "Willekeurig", - "strategySticky": "Sticky", + "strategySticky": "Permanent", "strategyLatency": "Latentie-geoptimaliseerd", "poolMembersLabel": "Poolleden ({count})", "poolNoMembers": "Nog geen proxy's in deze pool.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# uitgang} other {# uitgangen}} gebruikt door {connections, plural, one {# verbinding} other {# verbindingen}} · maximaal {max} op één uitgang · laatste {hours} u", + "poolEgressObservationEmpty": "Geen verkeer waargenomen in de afgelopen {hours} u", + "poolEgressObservationHint": "Geteld op basis van het proxylogboek binnen dit tijdsvenster: afzonderlijke uitgaande IP-adressen die zijn waargenomen voor de leden van deze pool, en de OmniRoute-verbindingen die deze hebben gebruikt. ‘Op één uitgang’ heeft betrekking op het tijdsvenster, niet op hetzelfde moment. De 429-blokkering per IP pauzeert alleen verbindingen van dezelfde providerfamilie.", "poolRemove": "Verwijderen", "poolRemoveFailed": "Kan de proxy niet uit de pool verwijderen", "poolAddLabel": "Een proxy toevoegen", @@ -10975,43 +10982,43 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", + "endpoint": "Eindpunt", + "provider": "Aanbieder", "model": "Model", "accountKey": "Account Key", "autoAccounts": "Automatisch ({count} accounts)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Verzenden", + "cancel": "Annuleren", + "audioFile": "Audiobestand", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Alles wissen", + "request": "Verzoek", + "response": "Antwoord", + "transcription": "Transcriptie", + "copy": "Kopiëren", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Gegenereerde {count} afbeeldingen", "generatedImage": "Gegenereerde afbeelding {index}", - "save": "Save", + "save": "Opslaan", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Antwoorden", "completions": "Voltooiingen", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Insluitingen", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Moderaties", - "rerank": "Rerank", + "rerank": "Herrangschikken", "search": "Search", "webFetch": "Web ophalen" }, @@ -11019,50 +11026,50 @@ "clearChat": "Duidelijke chat", "typeMessagePlaceholder": "Typ een bericht... (Shift+Enter voor nieuwe regel)", "tabChat": "Chat", - "tabCompare": "Compare", + "tabCompare": "Vergelijken", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", + "tabBuild": "Bouwen", + "configPane": "Configuratie", + "systemPrompt": "Systeemprompt", + "systemPromptPlaceholder": "Je bent een behulpzame assistent.", + "modelPlaceholder": "bijv. openai/gpt-4o", + "endpointLabel": "Eindpunt", "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "collapseConfig": "Configuratievenster inklappen", + "expandConfig": "Configuratievenster uitklappen", + "temperature": "Temperatuur", + "maxTokens": "Max. tokens", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Aanwezigheidsstraf", + "frequencyPenalty": "Frequentiestraf", "reasoningLabel": "Redeneren", "thinking": "Denken", "effort": "Inspanning", "effortDefault": "Standaard", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Willekeurig (leeg laten)", + "presetsLabel": "Voorinstellingen", + "loadPreset": "Voorinstelling laden", + "savePreset": "Voorinstelling opslaan", + "noPresets": "Geen voorinstellingen", + "presetNamePlaceholder": "Naam van voorinstelling", + "savingPreset": "Opslaan…", + "nameRequired": "Naam is vereist", + "failedToSavePreset": "Opslaan van voorinstelling mislukt", + "improvePrompt": "Prompt verbeteren", + "improvingPrompt": "Verbeteren…", + "improvePromptTitle": "Verbeter je prompt met AI", + "setModelFirst": "Stel eerst een model in", "setModelInConfigFirst": "Stel eerst een model in het Config-venster in.", "improvePromptFailed": "Prompt verbeteren mislukt.", "improvePromptAria": "Prompt verbeteren met AI", "confirmImprovePrompt": "Prompt verbeteren bevestigen", "improvePromptDescription": "Dit verzendt uw huidige systeemprompt naar om een verbeterde versie te genereren.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Dit verbruikt quotum van het model dat in Config is geconfigureerd.", + "improveConfirm": "Verbeteren", + "exportCode": "Code exporteren", + "exportCodeTitle": "Code exporteren", "exportShort": "Exporteren", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Geen playgroundstatus beschikbaar om te exporteren.", "closeExportModal": "Exportvenster sluiten", "close": "Sluiten", "exportRealKeyWarning": "Beveiligingswaarschuwing: export geblokkeerd — er is een echte API-sleutel gedetecteerd in de uitvoer. Reset uw API-sleutel en probeer het opnieuw.", @@ -11071,12 +11078,12 @@ "copyLangCode": "{language}-code kopiëren", "loadingPresets": "Laden…", "loadPresetPlaceholder": "Preset laden…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", + "copyCode": "Kopiëren", + "copiedCode": "Gekopieerd!", + "addModel": "+ Model toevoegen", + "runAll": "Alles uitvoeren", + "cancelAll": "Alles annuleren", + "maxColumnsReached": "Maximaal {max} kolommen", "modelPlaceholderCompare": "Model (Cmd+K)…", "noModel": "Geen model", "statusLabel": "Status: {status}", @@ -11095,29 +11102,29 @@ "waitingForResponse": "Wachten op antwoord…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", + "metricsDisclaimer": "schatting aan clientzijde", "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "costLabel": "Kosten", + "costEstimated": "(geschat)", "ttftTitle": "Tijd tot eerste token (schatting aan clientzijde)", "tpsTitle": "Tokens per seconde (schatting aan clientzijde)", "tokenCountsTitle": "Prompt-tokens ↑ / Completion-tokens ↓", "estimatedCostTitle": "Geschatte kosten (niet gegarandeerd nauwkeurig)", - "toolsLabel": "Tools", - "toolsCount": "Tools ({count})", - "addTool": "Add tool", + "toolsLabel": "Hulpmiddelen", + "toolsCount": "Hulpmiddelen ({count})", + "addTool": "Tool toevoegen", "editTool": "Tool {name} bewerken", "removeTool": "Tool {name} verwijderen", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Functienaam", "toolNameRequiredPlaceholder": "Functienaam *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Beschrijving (optioneel)", "toolParamsLabel": "Parameters (JSON-schema)", "toolParamsJsonSchema": "JSON-schema voor parameters", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parameters moeten geldige JSON zijn", + "structuredOutputLabel": "Gestructureerde uitvoer", + "enableJsonMode": "JSON-modus inschakelen", + "disableJsonMode": "JSON-modus uitschakelen", + "invalidJson": "Ongeldige JSON", "jsonMode": "JSON-modus", "jsonModeDescription": "Forceert response_format: json_schema", "schemaName": "Schemanaam", @@ -11125,7 +11132,7 @@ "jsonSchemaEditor": "JSON-schema-editor", "schemaValidated": "Schema gevalideerd", "validateSchema": "Schema valideren", - "seed": "Seed", + "seed": "Beginwaarde", "stopSequences": "Stopsequenties", "stopSequencesPlaceholder": "bijv. \"\\n\\n\" of \"END\"", "autoProvider": "Automatisch", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} kolommen", "addModelToCompare": "Voeg een modelkolom toe om te vergelijken", "modelsSimultaneously": "Tot {max} modellen tegelijkertijd", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Wordt uitgevoerd…", + "runLabel": "Uitvoeren", + "enterToolResult": "Voer het toolresultaat in…", "build": { "step1Label": "Wat te testen?", "step2Label": "Configureren", @@ -11166,11 +11173,11 @@ "step2Title": "Configureren", "step2Subtitle": "Stel de tools of het JSON-schema in die in het verzoek worden gebruikt.", "step3Title": "Uitvoeren", - "modeToolsTitle": "Tools", + "modeToolsTitle": "Hulpmiddelen", "modeToolsDesc": "Test function calling — definieer tools en bekijk hoe het model ze aanroept.", "modeJsonTitle": "JSON", "modeJsonDesc": "Test gestructureerde uitvoer — beperk het antwoord tot een JSON-schema.", - "modeBothTitle": "Tools + JSON", + "modeBothTitle": "Hulpmiddelen + JSON", "modeBothDesc": "Combineer function calling en gestructureerde uitvoer in één enkel verzoek.", "backButton": "Terug", "nextButton": "Volgende", @@ -11179,7 +11186,7 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Eindpunt", "apiKey": "API-sleutel", "model": "Model", "voice": "Stem", @@ -11198,7 +11205,7 @@ "tunnel": "Tunnel", "send": "Verzenden", "selectKey": "Sleutel selecteren", - "testLabel": "Test", + "testLabel": "Testen", "expandTest": "Test uitvouwen", "collapseTest": "Test inklappen", "revealKey": "Sleutel tonen", @@ -11221,7 +11228,7 @@ "noAudioUrl": "Het antwoord bevatte geen audio-URL: {response}", "music": "Muziek", "embeddingSample": "OmniRoute routeert AI-verzoeken over meerdere providers.", - "embedding": "Embedding", + "embedding": "Inbedding", "imageSample": "Een futuristische stad bij zonsondergang, filmische belichting", "image": "Afbeelding", "ttsSample": "Hallo vanuit OmniRoute. Dit is een tekst-naar-spraaktest.", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Resultaat {number}", "noKeysFound": "Geen API-sleutels gevonden. Voeg er een toe in de sectie Sleutels.", "exampleLabel": "Voorbeeld", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} in / {tokensOut} uit tokens", "defaultKey": "(standaard)", "clear": "Wissen", @@ -11250,73 +11257,73 @@ "stop": "Stoppen" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", + "recording": "Opname", + "paused": "Gepauzeerd", + "pipelineLogsOn": "Pipelinelogboeken aan", + "pipelineLogsOff": "Pipelinelogboeken uit", + "updatingPipelineLogs": "Pipelinelogboeken bijwerken...", + "updatePipelineFailed": "Bijwerken van pipelinelogboeken mislukt", + "capturePipeline": "Pipelinepayloads vastleggen voor nieuwe aanvragen", + "searchPlaceholder": "Zoek naar modellen, providers, accounts, API-sleutels, combo's...", + "allProviders": "Alle providers", + "allModels": "Alle modellen", + "allAccounts": "Alle accounts", + "allApiKeys": "Alle API-sleutels", + "total": "Totaal", + "ok": "Geslaagd", + "err": "Fout", + "combo": "Combinatie", + "keys": "Sleutels", + "shown": "Weergegeven", + "sortNewest": "Nieuwste", + "sortOldest": "Oudste", "sortTokensDesc": "Tokens ↓", "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", + "sortDurationDesc": "Duur ↓", + "sortDurationAsc": "Duur ↑", "sortStatusDesc": "Status ↓", "sortStatusAsc": "Status ↑", "sortModelAsc": "Model A-Z", "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortLogs": "Logs sorteren", + "refresh": "Vernieuwen", + "columnsLabel": "Kolommen", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", + "cacheUp": "OMHOOG", + "semantic": "Semantisch", "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semanticCacheHit": "Semantische cachetreffer (geleverd door OmniRoute)", + "upstreamResponse": "Antwoord van upstreamprovider", + "noApiKey": "Geen API-sleutel", + "requestedRoutedTitle": "{requested} aangevraagd, gerouteerd als {routed}", "statusFilters": { - "all": "All", + "all": "Alle", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Geslaagd", + "combo": "Combinatie" }, "columns": { "status": "Status", - "cacheSource": "Cache Source", + "cacheSource": "Cachebron", "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", + "requested": "Aangevraagd", + "provider": "Aanbieder", + "protocol": "Aanvraagprotocol", "account": "Account", - "apiKey": "API Key", - "combo": "Combo", + "apiKey": "API-sleutel", + "combo": "Combinatie", "tokens": "Tokens", "compressed": "Compressie", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Duur", + "time": "Tijd", + "conversation": "Gesprek", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Logs laden...", + "noLogs": "Nog geen logs. Voer enkele API-aanroepen uit om ze hier te zien.", + "noMatchingLogs": "Geen logs die overeenkomen met de huidige filters.", + "callLogsInfo": "Aanroeplogs worden ook als JSON-bestanden opgeslagen in {dataDir} en geroteerd op basis van {retentionDays} en {maxEntries}.", "loadMore": "Meer laden", "loadingMore": "Meer laden...", "correlationId": "Correlatie-ID", @@ -11367,9 +11374,9 @@ }, "payloadMissing": "Gedetailleerde payload-artifact is niet langer beschikbaar voor deze logvermelding.", "payloadCorrupt": "Gedetailleerde payload-artifact kon niet worden geparsed.", - "notAvailable": "N/A", + "notAvailable": "N.v.t.", "semanticCache": "Semantisch (OmniRoute)", - "upstreamCache": "Upstream (Provider)", + "upstreamCache": "Upstream (provider)", "ariaLabel": "Verzoeklogdetails", "completed": "Voltooid", "upstreamStatus": "Stroomopwaarts: {status}", @@ -11381,7 +11388,7 @@ "endedAt": "Eindigde Op", "duration": "Duur", "model": "Model", - "provider": "Provider", + "provider": "Aanbieder", "account": "Account", "input": "Invoer", "totalIn": "Totaal In: {value}", @@ -11392,14 +11399,14 @@ "totalOut": "Totaal Uit: {value}", "reasoning": "Redenering: {value}", "requestedModel": "Aangevraagd Model", - "requestProtocol": "Req Protocol", + "requestProtocol": "Aanvraagprotocol", "cacheSource": "Cachebron", - "modelPinning": "Model Pinning", + "modelPinning": "Modelvastzetting", "activeModelPinning": "Actief — model geselecteerd via sessiepinnen", "rotated": "Geroteerd: {initial} -> {final}", "apiKey": "API-sleutel", "noApiKey": "Geen API-sleutel", - "combo": "Combo", + "combo": "Combinatie", "error": "Fout", "unblockAll": "Alle deblokkeren", "cleared": "Geverwijderd", @@ -11417,59 +11424,59 @@ "correlationId": "Correlatie-ID", "correlationIdValue": "Correlatie-ID: {id}", "detailedPayloadInfo": "Schakel eerst gedetailleerde logging in als je de vier-fasen client/provider payloadweergave voor nieuwe verzoeken wilt.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Alles kopiëren", + "copiedAll": "Alles gekopieerd" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", + "filterAll": "Alles", + "filterErrors": "Fouten", + "filterSuccess": "Geslaagd", + "filterTimeout": "Time-out", "colStatus": "Status", "colProxy": "Proxy", "colTls": "TLS", "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colLevel": "Niveau", + "colProvider": "Aanbieder", + "colTarget": "Doel", + "colLatency": "Latentie", + "colClientIp": "Client-IP", + "colTime": "Tijd", + "recording": "Opname", + "paused": "Gepauzeerd", + "searchPlaceholder": "Zoeken op host, provider, doel, IP...", + "allTypes": "Alle typen", + "allLevels": "Alle niveaus", + "allProviders": "Alle providers", + "total": "totaal", "ok": "OK", - "err": "ERR", + "err": "FOUT", "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "direct": "rechtstreeks", + "newest": "Nieuwste", + "oldest": "Oudste", + "latencyDesc": "Latentie ↓", + "latencyAsc": "Latentie ↑", + "refresh": "Vernieuwen", + "columns": "Kolommen", + "loadingProxyLogs": "Proxylogboeken laden...", + "noProxyLogs": "Nog geen proxylogboeken. Configureer proxy's en voer API-aanroepen uit om ze hier te zien.", + "noMatchingLogs": "Geen logboeken komen overeen met de huidige filters.", + "tlsFingerprint": "Chrome 124 TLS-vingerafdruk", "colPublicIp": "Openbaar IP-adres" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", + "speech": "Spraak", + "search": "Zoeken", + "images": "Afbeeldingen", "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "music": "Muziek", + "responses": "Antwoorden", + "rerank": "Herrangschikking", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Inbeddingen", + "transcription": "Transcriptie" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", + "title": "Uitvoeringstijd", + "description": "Realtime-observatie — veerkracht met 3 lagen + sessies + quotawaarschuwingen", + "pause": "Pauzeren", + "resume": "Hervatten", + "refreshNow": "Nu vernieuwen", + "kpiSessions": "Sessies", + "kpiCircuits": "Stroomonderbrekers", + "kpiCooldowns": "Afkoelperiodes", + "kpiLockouts": "Blokkeringen", + "hintStickyBound": "{count} permanent gekoppeld", + "hintRecovering": "{count} wordt hersteld", + "hintAllHealthy": "allemaal in orde", "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "hintConnsCooling": "verbindingen koelen af", + "hintModelsBlocked": "modellen geblokkeerd", + "resilienceTitle": "3-laagse veerkracht", + "resilienceSubtitle": "Weerspiegelt het gedocumenteerde veerkrachtmodel", + "providersHealthy": "{percent}% van de providers is gezond", + "layer": "Laag {n}", + "layer1Title": "Circuitbreakers voor providers", + "layer1Desc": "Verkeer naar providers stoppen bij fouten op upstreamniveau", + "layer2Title": "Afkoelperioden voor verbindingen", + "layer2Desc": "Eén onjuist account of onjuiste sleutel overslaan; andere verbindingen blijven actief", + "layer3Title": "Modelblokkeringen", + "layer3Desc": "Snelheidslimietblokkeringen per model; dezelfde verbinding blijft andere modellen bedienen", + "badgeAffectedOf": "{affected} van {total} getroffen", + "badgeCooling": "{count} in afkoeling", + "badgeLocked": "{count} geblokkeerd", + "emptyCircuits": "Nog geen actieve circuitbreakers", + "emptyCooldowns": "Geen actieve afkoelperioden voor verbindingen", + "emptyLockouts": "Geen modelblokkeringen", + "moreCooldowns": "+{count} meer afkoelperioden", + "moreLockouts": "+{count} meer blokkeringen", + "feedTitle": "Livefeed", + "feedSubtitle": "Laatste {count} gebeurtenissen", + "feedFilterAll": "Alle", + "feedFilterCircuits": "Circuitbreakers", + "feedFilterCooldowns": "Afkoelperioden", + "feedFilterLockouts": "Blokkeringen", + "feedFilterSessions": "Sessies", + "feedFilterQuotas": "Quota", + "feedClear": "Wissen", + "feedEmptyWaiting": "Wachten op gebeurtenissen... (elke 5 s opgehaald)", + "feedEmptyFiltered": "Geen gebeurtenissen komen overeen met dit filter", + "sessionsTitle": "Actieve sessies", + "sessionsSubtitle": "Permanent gekoppelde aanvraagvingerafdrukken (live)", + "sessionsActive": "{count} actief", + "sessionsEmptyTitle": "Geen actieve sessies", + "sessionsEmptyHint": "Sessies verschijnen wanneer aanvragen door de proxy worden geleid", + "tblSession": "Sessie", + "tblAge": "Leeftijd", + "tblIdle": "Inactief", + "tblReqs": "Aanvragen", + "tblBoundTo": "Gekoppeld aan", + "topApiKeys": "Populairste API-sleutels", + "quotaMonitorsTitle": "Quotamonitors", + "quotaMonitorsSubtitle": "Live quotastatus per accountvenster", + "openQuota": "Quota openen", + "allQuotasHealthy": "Alle quota's zijn in orde", + "statusExhausted": "UITGEPUT", + "statusAlerting": "WAARSCHUWING", + "statusError": "FOUT", + "moreSuffix": "+{count} meer" }, "quotaShare": { "weightPercent": "Gewicht %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Quota delen", + "description": "Deel providerquota's tussen API-sleutels met %-limieten", + "newPool": "Nieuwe pool", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", + "betaDescription": "De configuratie wordt opgeslagen in localStorage (nog niet permanent opgeslagen op de server). De handhaving van de limiet per aanvraag is nog niet geïntegreerd in de proxypijplijn. In dit scherm kun je de quotaverdeling ontwerpen en visualiseren; daadwerkelijke handhaving volgt in een toekomstige iteratie met permanente databaseopslag en interceptie van upstream-aanroepen.", + "kpiActivePools": "Actieve pools", + "kpiKeysAllocated": "Toegewezen sleutels", + "kpiAvgUnallocated": "Gem. niet-toegewezen", + "kpiProvidersWithQuota": "Providers met quota", + "emptyTitle": "Geen pools geconfigureerd", + "emptyDescription": "Maak een pool om API-sleutels toe te wijzen die het quotavenster van een provider delen volgens procentuele toewijzingen.", + "loading": "Laden…", + "removePool": "Pool verwijderen", + "removeConfirm": "Deze pool verwijderen?", "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "used": "gebruikt", + "allocationsCount": "Toewijzingen ({count})", + "allocatedFree": "{allocated}% toegewezen · {free}% vrij", + "noAllocations": "Nog geen sleutels toegewezen", + "capLabel": "limiet {value}", + "notTrackedYet": "(nog niet bijgehouden)", + "policy": "Beleid", "apiKeyColumn": "API-sleutel", "weightColumn": "Gewicht", "fairShareShort": "redelijk", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "strikt", + "policySoft": "flexibel", + "policyBurst": "piek", + "policyHardHint": "Blokkeren wanneer de sleutel zijn toewijzing heeft verbruikt", + "policySoftHint": "Overschrijding toestaan, alleen waarschuwen", + "policyBurstHint": "Piekgebruik van de vrije pool toestaan", + "editAllocations": "Toewijzingen bewerken", + "newPoolTitle": "Nieuwe quotapool", + "providerConnection": "Providerverbinding (account)", + "selectConnection": "Selecteer een verbinding…", + "noEligibleConnections": "Geen verbindingen met quotagegevens. Vernieuw eerst via /dashboard/quota.", + "quotaWindow": "Quotavenster", + "selectWindow": "Selecteer een venster…", + "alreadyUsedSuffix": "(al gebruikt)", + "windowReset": "Resetten", + "duplicatePoolError": "Er bestaat al een pool voor deze verbinding en dit venster", + "cancel": "Annuleren", + "createPool": "Pool aanmaken", + "editTitle": "Toewijzingen bewerken", + "noKeysAdded": "Geen sleutels toegewezen. Voeg er hieronder een toe.", + "totalLabel": "Totaal: {percent}%", + "totalExceeded": "⚠ overschrijdt 100%", + "addKey": "+ Sleutel toevoegen…", + "equalSplit": "Gelijk verdelen", + "save": "Toewijzingen opslaan", "betaPreviewLabel": "Bèta: UI-voorbeeld.", "betaConfigSavedPrefix": "Configuratie wordt opgeslagen in", "betaConfigSavedSuffix": "(nog niet aanwezig op de server). Het afdwingen van limieten per verzoek is nog niet opgenomen in de proxypijplijn. Op dit scherm kunt u de quotaverdeling ontwerpen en visualiseren; echte handhaving zal in een toekomstige iteratie terechtkomen met DB-persistentie en upstream-gespreksonderschepping.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "Deze groep heeft nog pools — wijs ze eerst opnieuw toe of verwijder ze.", "ungroupedTitle": "Niet gegroepeerd", "ungroupedHint": "Deze pools zijn niet toegewezen aan een bekende groep. Bewerk een pool om deze naar een echte groep te verplaatsen.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Deze pool kon niet worden verwijderd.", + "dismiss": "Sluiten" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", + "title": "Plug-ins", + "description": "Installeer en beheer plug-ins om de functionaliteit van OmniRoute uit te breiden", + "loading": "Plug-ins laden...", + "scanning": "Scannen...", + "scanForPlugins": "Scannen naar plug-ins", + "noPlugins": "Geen plug-ins geïnstalleerd", + "noPluginsDescription": "Plaats plug-inmappen in ~/.omniroute/plugins/ en klik op Scannen.", + "activate": "Activeren", + "deactivate": "Deactiveren", + "uninstall": "Verwijderen", + "uninstallConfirm": "Plug-in \"{name}\" verwijderen?", + "pluginScanComplete": "Scannen naar plug-ins voltooid", + "pluginScanFailed": "Scannen naar plug-ins mislukt", + "activated": "{name} geactiveerd", + "deactivated": "{name} gedeactiveerd", + "activateFailed": "Activeren van {name} mislukt", + "deactivateFailed": "Deactiveren van {name} mislukt", + "uninstalled": "{name} verwijderd", + "uninstallFailed": "Verwijderen van {name} mislukt", + "configure": "Configureren: {name}", + "configurePlugin": "Configureren", + "noConfigSettings": "Deze plug-in heeft geen configureerbare instellingen.", + "saving": "Opslaan...", + "saveConfiguration": "Configuratie opslaan", + "configurationSaved": "Configuratie opgeslagen", + "saveConfigurationFailed": "Configuratie opslaan mislukt", + "pluginNotFound": "Plug-in niet gevonden", + "version": "Versie", + "author": "Auteur", + "description_label": "Beschrijving", "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "enabled": "Ingeschakeld", + "disabled": "Uitgeschakeld", "installedTab": "Geïnstalleerd", "marketplaceTab": "Marktplaats", "marketplaceUrlLabel": "Aangepaste Marketplace-URL", @@ -11770,11 +11777,11 @@ "todayHeader": "Vandaag", "yesterdayHeader": "Gisteren", "filterAll": "Alles", - "filterProviders": "Providers", + "filterProviders": "Aanbieders", "filterCombos": "Combinaties", "filterApiKeys": "API-sleutels", "filterSettings": "Instellingen", - "filterQuota": "Quota", + "filterQuota": "Quotum", "filterAuth": "Authenticatie", "filterSystem": "Systeem", "filterAria": "Filteren op gebeurtenistype", @@ -11859,8 +11866,8 @@ "serverConns": "Verbindingen", "serverIntercepted": "Onderschept", "serverLastStarted": "Laatst gestart", - "startServer": "Start", - "stopServer": "Stop", + "startServer": "Starten", + "stopServer": "Stoppen", "restartServer": "Herstart", "trustCert": "Certificaat vertrouwen", "downloadCert": "Certificaat downloaden", @@ -11937,7 +11944,7 @@ "maintenanceTitle": "Onderhoud & Diagnostiek", "maintenanceSubtitle": "Voer een zelftest uit op de capture-pipeline, maak achtergebleven systeemstatus ongedaan en verplaats je installatie tussen machines.", "orphanedStateWarning": "Een eerdere sessie heeft systeemstatus achtergelaten (DNS-spoof, CA of systeemproxy). Voer Repair uit om dit op te schonen.", - "diagnose": "Diagnose", + "diagnose": "Diagnosticeren", "diagnosing": "Diagnosticeren…", "diagnoseHealthy": "Capture-pijplijn is in orde.", "diagnoseUnhealthy": "Capture-pijplijn heeft problemen:", @@ -11983,8 +11990,8 @@ "successRate": "Slagingspercentage", "activeProviders": "Actieve providers", "providerBreakdown": "Uitsplitsing per provider", - "providerCount": "{count} providers", - "provider": "Provider", + "providerCount": "{count} aanbieders", + "provider": "Aanbieder", "requests": "Verzoeken", "success": "Succes", "rate": "Percentage", @@ -12068,7 +12075,7 @@ "tabHeaders": "Headers", "tabRequest": "Verzoek", "tabResponse": "Respons", - "tabTiming": "Timing", + "tabTiming": "Tijdmeting", "tabLlm": "LLM", "tabStats": "Statistieken", "requestHeaders": "Verzoekheaders", @@ -12165,21 +12172,21 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "CLI-code", "phrase": "Codetools die je op OmniRoute richt", "flow": "Jij → CLI Code → OmniRoute → Provider", "seeOther": "Bekijk →" }, "agent": { - "title": "CLI Agents", + "title": "CLI-agents", "phrase": "Veelzijdige autonome CLI-agents die je op OmniRoute richt", "flow": "Jij → CLI Agent → OmniRoute → Provider", "seeOther": "Bekijk →" }, "acp": { - "title": "ACP Agents", + "title": "ACP-agents", "phrase": "CLI's die OmniRoute start als uitvoeringsbackend (omgekeerde flow)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "De meeste gebruikers kunnen dit negeren — gebruik dit alleen wanneer een integratie dit vereist.", "flow": "Client → OmniRoute → CLI spawnen (stdio/ACP) → respons", "seeOther": "Bekijk →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI gebruikt als backend door Omni", "desc": "Omgekeerde uitvoering", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → CLI starten → antwoord", "examples": "bijv.: claude, codex (ACP)" } }, @@ -12217,7 +12224,7 @@ "versionNotFound": "niet gevonden", "manualConfig": "Handmatige configuratie", "installGuide": "Installatiehandleiding", - "endpointLabel": "Endpoint", + "endpointLabel": "Eindpunt", "baseUrlFull": "Volledige basis-URL", "baseUrlPartial": "Gedeeltelijke basis-URL", "refreshDetection": "Detectie vernieuwen", @@ -12238,7 +12245,7 @@ "modelMappingLabel": "Modeltoewijzing", "noActiveProviders": "Geen actieve providers.", "noActiveProvidersDesc": "Ga naar Providers om ten minste 1 provider te verbinden voordat je de CLI configureert.", - "openProviders": "Open Providers →" + "openProviders": "Providers openen →" } }, "cliCode": { @@ -12291,7 +12298,7 @@ "addAgent": "Agent toevoegen", "agentName": "Naam", "agentNamePlaceholder": "bijv.: Mijn agent", - "binaryName": "Binary", + "binaryName": "Binair bestand", "binaryNamePlaceholder": "bijv.: myagent", "versionCommand": "Versiecommando", "versionCommandPlaceholder": "bijv.: myagent --version", @@ -12306,7 +12313,7 @@ "description": "Beheer API-sleutelauthenticatie en sessietokens. Begin hier om verzoeken te authenticeren via Bearer-token, sessiecookies te verkrijgen en inlogvereisten voor de OmniRoute-API te configureren." }, "omni-providers": { - "name": "Providers", + "name": "Aanbieders", "description": "Beheer providerverbindingen, API-sleutels, OAuth-flows en verbindingstests via the REST-API. Toon, voeg toe, update, verwijder en test AI-providerintegraties (OpenAI, Anthropic, Gemini en 160+)." }, "omni-models": { @@ -12346,7 +12353,7 @@ "description": "Configureer RTK (opdrachtuitvoer), Caveman (proza) en gestapelde compressiemodi. Beheer taalpakketten, aangepaste regels en test promptcompressie waarmee tokens met 60–90% worden verminderd." }, "omni-context-rtk": { - "name": "Context & RTK", + "name": "Context en RTK", "description": "Configureer RTK-filters, context-engineeringregels en context-doorstuurinstellingen. Test compressie met echte promptvoorbeelden en beheer contexttransformatiepipelines." }, "omni-resilience": { @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Registreer, bekijk, test en verwijder webhook-eindpunten. Configureer gebeurtenisabonnementen (request.completed, request.failed, quota.exceeded, enz.) en beheer nieuwe afleverpogingen." }, "omni-mcp": { "name": "MCP-server", @@ -12390,15 +12397,15 @@ "description": "De kern-inferenceservice-eindpunten die compatibel zijn met OpenAI: chat completions, embeddings, afbeeldingen, audio (TTS/STT), moderaties, rerank en de Responses API. Het primaire integratieoppervlak voor AI-agents." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Server starten", "description": "Start, stop en herstart de OmniRoute-server vanaf de CLI. Beheer daemon-modus, poortconfiguratie, automatisch herstel, systeemvakintegratie en de snelkoppeling om het dashboard te openen." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Statuscontrole", "description": "Controleer de serverstatus, componentstatus en live statistieken vanaf de CLI. Voer `health`, `health components` en `health watch` uit voor een realtime dashboard van circuit breakers en providerstatus." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Aanbieders", "description": "Beheer providerverbindingen vanaf de CLI: toon beschikbare/geconfigureerde providers, voeg toe, test, test-all, valideer, roteer API-sleutels en bekijk statistieken per provider." }, "cli-keys": { @@ -12466,11 +12473,11 @@ "description": "Beheer Omni Skills (lijst, installeren, testen, verwijderen), plug-ins (maken, configureren) en persistent geheugen (zoeken, toevoegen, wissen) vanuit de CLI." }, "cli-setup": { - "name": "CLI: Setup & Config", + "name": "CLI: Installatie en configuratie", "description": "Voer de initiële installatie uit, configureer globale CLI-instellingen, beheer omgevingsvariabelen, controleer op updates en configureer automatisch opstarten via de CLI-setup- en configuratiecommando's." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI: Agentvaardigheden verzamelen", "description": "Detecteer geïnstalleerde CLI-codeertools (Claude Code, Codex, Cursor, Copilot, Cline en meer), zoek op GitHub naar overeenkomstige agent-skills en installeer ze in de gedetecteerde tools via de ingebouwde API's van OmniRoute." }, "config-codex-cli": { @@ -12519,7 +12526,7 @@ "omni": "SQLite (SkillsMP / skills.sh / lokaal)" }, "tagline": { - "label": "Tagline", + "label": "Slogan", "agent": "Leer je agent om OmniRoute te gebruiken", "omni": "Geef uitvoerbare tools aan OmniRoute-modellen" } @@ -12532,7 +12539,7 @@ }, "categoryApi": "API", "categoryCli": "CLI", - "categoryConfig": "Config", + "categoryConfig": "Configuratie", "filterAll": "Alle", "coverageLabel": "Dekking", "mcpUrl": "MCP-URL", @@ -12566,11 +12573,11 @@ "allCategories": "Alle categorieën", "categoryDefault": "Standaard", "categoryCoding": "Coderen", - "categoryReview": "Review", + "categoryReview": "Beoordeling", "categoryDocumentation": "Documentatie", - "categoryDebugging": "Debugging", + "categoryDebugging": "Foutopsporing", "colRank": "Rang", - "colProvider": "Provider", + "colProvider": "Aanbieder", "colTopModel": "Beste model", "colScore": "Score", "colAvgScore": "Gemiddelde score", @@ -12589,14 +12596,14 @@ "typeApikey": "API-sleutel", "sortTypeFirst": "Makkelijkste eerst", "sortTypeFirstHelp": "Groeperen op registratie-inspanning (Geen registratie → OAuth-inloggen → API-sleutel), met behoud van kwaliteitsvolgorde binnen elke groep", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Betrouwbaarste eerst", + "sortByReliabilityHelp": "Sorteer providers op basis van het aandeel geslaagde aanroepen binnen de geselecteerde periode. Providers met te weinig aanroepen om een slagingspercentage vast te stellen, behouden hun volgorde op basis van hun score en worden onder de gemeten providers weergegeven.", "typeLegend": "Geen registratie = geen configuratie · OAuth-inloggen = inloggen met uw eigen account · API-sleutel = gebruik uw eigen sleutel of het gratis abonnement van die provider", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Betrouwbaarheid", + "colReliabilityHelp": "Het aandeel oproepen dat deze provider de afgelopen 24 uur daadwerkelijk heeft beantwoord. Een streepje betekent dat er te weinig verkeer is verwerkt om een percentage te kunnen geven.", + "reliabilitySample": "{successes} van {requests} oproepen zijn in de afgelopen {hours}u geslaagd", + "reliabilityTooFew": "Slechts {requests} oproepen in de afgelopen {hours}u — te weinig om een percentage te kunnen geven", + "reliabilityNoTraffic": "Geen oproepen geregistreerd in de afgelopen 24u" }, "discovery": { "title": "Provider-ontdekking", @@ -12682,7 +12689,7 @@ "beginner": "Beginner", "explorer": "Verkenner", "expert": "Expert", - "master": "Master", + "master": "Meester", "legend": "Legende" }, "tiers": { @@ -12692,9 +12699,9 @@ "platinum": "Platina", "diamond": "Diamant" }, - "tierLabel": "Tier: {tier}", + "tierLabel": "Niveau: {tier}", "dayStreak": "{count}-daagse streak", - "levelProgress": "Level {current} → {next}", + "levelProgress": "Niveau {current} → {next}", "totalXpEarned": "Totaal {count} XP verdiend", "maintainStreak": "Blijf OmniRoute elke dag gebruiken om je streak te behouden!", "badgesTitle": "Badges ({earned}/{total})", @@ -12714,14 +12721,14 @@ "usage": "Gebruik", "sharing": "Delen", "contribution": "Bijdrage", - "streak": "Streak", + "streak": "Reeks", "rare": "Zeldzame prestaties" }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar-supporter", + "description": "Een actieve feed van een OmniRoute Radar-supporter geverifieerd", + "criteria": "Verifieer een ondertekende, actieve feed van een Radar-supporter." }, "first-token": { "name": "Eerste token", @@ -12734,12 +12741,12 @@ "criteria": "Voltooi 1.000 API-verzoeken via OmniRoute." }, "token-machine": { - "name": "Token Machine", + "name": "Tokenmachine", "description": "10.000 API-verzoeken gedaan", "criteria": "Voltooi 10.000 API-verzoeken via OmniRoute." }, "token-whale": { - "name": "Token Whale", + "name": "Tokenwalvis", "description": "100.000 API-verzoeken gedaan", "criteria": "Voltooi 100.000 API-verzoeken via OmniRoute." }, @@ -12754,7 +12761,7 @@ "criteria": "Deel in totaal 10.000 tokens met andere gebruikers." }, "token-santa": { - "name": "Token Santa", + "name": "Tokenkerstman", "description": "100.000 tokens gedeeld met anderen", "criteria": "Deel in totaal 100.000 tokens met andere gebruikers." }, @@ -12809,12 +12816,12 @@ "criteria": "Gebruik OmniRoute 365 opeenvolgende dagen." }, "early-adopter": { - "name": "Early Adopter", + "name": "Vroege gebruiker", "description": "Lid geworden binnen de eerste maand van gamificatie", "criteria": "Word lid binnen de eerste maand na de lancering van gamificatie." }, "bug-hunter": { - "name": "Bug Hunter", + "name": "Bugjager", "description": "5 issues gemeld", "criteria": "Meld 5 geldige issues." }, @@ -12836,7 +12843,7 @@ } }, "featureFlags": { - "title": "Feature Flags", + "title": "Functievlaggen", "activeCount": "{count} actief", "inactiveCount": "{count} inactief", "dbOverrideCount": "{count} DB-overrides", @@ -12885,7 +12892,7 @@ "block": "Blokkeren", "redact": "Maskeren", "disabled": "Uitgeschakeld", - "dual": "Dual", + "dual": "Dubbel", "alias": "Alias", "canonical": "Canoniek" }, @@ -12948,8 +12955,8 @@ "description": "Sta meerdere verbindingen toe voor elke compatibiliteitsnode." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Controles van het contextvenster uitschakelen", + "description": "Sla OmniRoute's lokale controle van het contextvenster en het maximale aantal invoertokens over voor rechtstreekse aanvragen aan één model. Externe providers blijven hun werkelijke limieten handhaven. Promptcompressie en limieten voor uitvoertokens blijven actief." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Verwijder interne commentary-fase-uitvoeritems uit Responses API-passthrough-streams voordat ze worden doorgestuurd naar clients. Schakel deze vlag uit om onbewerkte upstream-commentary te ontvangen." @@ -12985,7 +12992,7 @@ "description": "Sta streamherstel toe om de respons opnieuw aan te vragen en samen te voegen nadat bytes de client al hebben bereikt." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Maak voortzetting halverwege een stream veilig voor toolaanroepen: hervat nooit een afgebroken stream nadat een toolaanroep is verzonden (ongeacht of deze nog wordt uitgevoerd of al is voltooid) en stop na één lege voortzetting in plaats van het volledige aantal nieuwe pogingen te benutten." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Schakel eenmaal over naar een zusterverbinding wanneer een stream sluit voordat er een bruikbaar frame is verzonden en de beperkte nieuwe poging op dezelfde verbinding is opgebruikt. Zonder bruikbare zusterverbinding wordt de oorspronkelijke early-EOF-fout teruggegeven. Uit: early-EOF blijft na de nieuwe poging definitief." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Schakel netwerktoegang in de skills-sandbox in." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Door de server beheerde toolcyclus", + "description": "Ga door met niet-streamende, door de server beheerde toolaanroepen totdat het model een voor de client bruikbaar antwoord retourneert." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Herkomst van Retry-After", + "description": "Laat bij geaggregeerde 429/503-antwoorden wegens onbeschikbaarheid Retry-After weg wanneer geen concreet toekomstig tijdstip voor een nieuwe poging bekend is, in plaats van een synthetische 1s te verzenden; voeg error.retry_after_provenance toe en lees tekstuele aanwijzingen voor nieuwe pogingen op combo-drainpaden." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Infrastructuurstops met beschermde prioriteit als 502", + "description": "Antwoord met 502 in plaats van 503 wanneer een prioriteitsdoel met uitsluitend quota als fallback de combo stopt om een oorzaak waarvan aantoonbaar is dat die niet quotagerelateerd is: een open circuitbreaker van een provider of een voorspellende latentie-overslag." } } }, @@ -13064,7 +13075,7 @@ "requests": "Verzoeken", "success": "Succes", "latency": "Latentie", - "quota": "Quota", + "quota": "Quotum", "rangeWindow": "{range}-venster", "runtimeHealthBlend": "runtime/health-mix", "averageResponseTime": "gemiddelde responstijd", @@ -13108,7 +13119,7 @@ "comboHealth": "Combo-status", "callLogs": "Call-logs", "costs": "Kosten", - "playground": "Playground", + "playground": "Speelomgeving", "nestedCombo": "Geneste combo", "modelTarget": "Modeldoel", "weight": "{value}% gewicht", @@ -13171,7 +13182,7 @@ "segmentHint": "Elk segment = één gratis pool · pool-ontdubbeld, eerlijke telling (geen opgeblazen rate-limit-plafonds).", "boost": "Ontgrendel ~{tokens} extra/mnd met een eenmalige OpenRouter-opwaardering van $10 (50 → 1000 req/dag)", "uncapped": "Permanent gratis, geen gepubliceerde limiet (rate-limited) — echte toegang, niet meegeteld in de kop:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/mnd meer achter een regionale identiteitscontrole (bijv. echte-naamverificatie voor het Chinese vasteland) — werkelijk quotum, niet meegerekend in de kop:", "tosRestricted": "{count, plural, one {# model} other {# modellen}} gemarkeerd als ToS-beperkt — jij bepaalt", "provider": "Provider", "model": "Model", @@ -13187,7 +13198,7 @@ "creditMonthly": "tegoed/mnd", "uncapped": "onbeperkt", "signupCredit": "aanmeldtegoed", - "keyless": "keyless", + "keyless": "zonder sleutel", "discontinued": "stopgezet" }, "tosTitle": { @@ -13221,7 +13232,7 @@ "providerState": { "healthy": "gezond", "degraded": "verslechterd", - "down": "down" + "down": "niet beschikbaar" }, "severity": { "info": "info", @@ -13241,16 +13252,16 @@ "cooldownTitle": "{label} bevindt zich in een tijdelijke cooldown", "cooldownRecommendation": "Wacht op het upstream-herpogingsvenster of wis de cooldown na het valideren van het herstel.", "staleErrorTitle": "{label} heeft een verouderde foutstatus", - "staleErrorRecommendation": "Clear stale error fields so the connection is eligible for normal routing again.", - "inactiveTitle": "{label} is disabled", - "inactiveRecommendation": "Reactivate only if this was not intentionally disabled.", - "modelLockoutTitle": "{model} is locked out for one connection", - "modelLockoutRecommendation": "Resolve the connection state or confirm model quota/availability has recovered before clearing the lockout.", - "quotaTitle": "Quota monitor reports {status}", - "quotaRecommendation": "Review quota usage and rotate traffic to another healthy connection if needed." + "staleErrorRecommendation": "Wis verouderde foutvelden zodat de verbinding weer in aanmerking komt voor normale routering.", + "inactiveTitle": "{label} is uitgeschakeld", + "inactiveRecommendation": "Activeer dit alleen opnieuw als het niet opzettelijk is uitgeschakeld.", + "modelLockoutTitle": "{model} is voor één verbinding geblokkeerd", + "modelLockoutRecommendation": "Los de verbindingsstatus op of bevestig dat het modelquotum/de beschikbaarheid is hersteld voordat je de blokkering opheft.", + "quotaTitle": "Quotummonitor meldt {status}", + "quotaRecommendation": "Controleer het quotumgebruik en leid het verkeer indien nodig om naar een andere goed werkende verbinding." }, "action": { - "resetProviderBreaker": "Reset provider breaker", + "resetProviderBreaker": "Provider-circuitbreaker resetten", "clearConnectionCooldown": "Afkoeltijd van verbinding wissen", "disableConnection": "Deze verbinding uitschakelen", "clearStaleError": "Verouderde foutstatus wissen", @@ -13260,7 +13271,7 @@ }, "changelogPage": { "newsTab": "Nieuws", - "changelogTab": "Changelog", + "changelogTab": "Wijzigingslogboek", "loading": "Changelog laden...", "announcementsLoadFailed": "Kan aankondigingen niet laden. Probeer het later opnieuw.", "noAnnouncements": "Geen nieuwe aankondigingen op dit moment.", @@ -13270,80 +13281,80 @@ "viewFullHistory": "Bekijk de volledige geschiedenis op GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", + "title": "Routeringsbeleid voor redeneervermogen", + "apiKeyTitle": "Routering van redeneervermogen voor deze API-sleutel", + "subtitle": "Routeer modellen en de redeneerinspanning om zonder clientondersteuning. Verzoeken blijven ongewijzigd wanneer geen enkele regel overeenkomt.", + "loadError": "De redeneerregels konden niet worden geladen.", + "saveError": "De regel is ongeldig of kon niet worden opgeslagen.", + "saved": "Redeneerregel opgeslagen.", + "deleteConfirm": "Deze redeneerregel verwijderen?", + "deleteError": "De redeneerregel kon niet worden verwijderd.", + "empty": "Er zijn geen overeenkomende redeneerregels geconfigureerd.", + "all": "Alles", + "any": "Elke", + "enabled": "Ingeschakeld", + "disabled": "Uitgeschakeld", + "filterSearch": "Regels zoeken", + "filterScope": "Filteren op bereik", + "filterStatus": "Filteren op status", + "allModels": "alle modellen", + "keepModel": "Model behouden", + "otherModel": "Ander model", + "combo": "Combinatie", + "priorityShort": "prioriteit {value}", + "toggleAria": "{name} inschakelen", + "edit": "Bewerken", + "delete": "Verwijderen", + "name": "Naam", + "description": "Beschrijving", + "scopeLabel": "Bereik", + "apiKey": "API-sleutel", + "sourceCombo": "Broncombinatie", + "connection": "Verbinding", + "sourceModel": "Bronmodel of jokerteken", + "sourceModelOptional": "Leeg = alle modellen", + "sourceModelExample": "bijv. gpt-5*", + "sourceEffort": "Broninspanning", + "missing": "Niet opgegeven", + "signalOnly": "Niet-discreet redeneersignaal", + "requestTags": "Aanvraagtags", + "requestTagsExample": "programmeren, intern", + "tagMode": "Tagovereenkomst", + "effortMode": "Inspanningsmodus", + "targetEffort": "Doelinspanning", + "routingTarget": "Routeringsdoel", + "targetModel": "Doelmodel", + "targetCombo": "Doelcombinatie", + "budgetAction": "Denkbudget", + "budgetTokens": "Budgettokens", + "priority": "Prioriteit", + "saveChanges": "Wijzigingen opslaan", + "add": "Regel toevoegen", + "cancel": "Annuleren", + "simulateTitle": "Regel simuleren", "model": "Model", - "effort": "Effort", + "effort": "Inspanning", "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "simulate": "Simuleren zonder upstream", + "extendedComboWarning": "Max/Ultra wordt tijdens de routering afzonderlijk gevalideerd voor elk combinatiedoel.", + "extendedUnknownWarning": "Voer een doelmodel in om ondersteuning voor Max/Ultra te verifiëren.", + "extendedUnsupportedWarning": "Van Max/Ultra is alleen bekend dat het wordt ondersteund door geschikte Codex GPT-5.6-modellen. Onbekende aangepaste modellen worden door de server geaccepteerd met een waarschuwing.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", + "global": "Globaal", + "apiKey": "API-sleutel", + "combo": "Combinatie", "model": "Model", - "connection": "Connection" + "connection": "Verbinding" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Overnemen van client", + "default": "Standaard gebruiken", + "force": "Forceren" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Behouden", + "remove": "Verwijderen", + "set": "Vaste waarde instellen" } }, "chaosConfig": { @@ -13421,95 +13432,95 @@ "feedVersion": "Feedversie", "feedTier": "Niveau", "feedFetched": "Laatst opgehaald", - "tierLive": "Live (real-time)", + "tierLive": "Live (realtime)", "tierCommunity": "Community (30 dagen vertraging)", "activateTitle": "Activeer Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Vergelijk Community- en live-toegang, krijg inzicht in wat je installatie uitwisselt en kies vervolgens hoe je Radar wilt activeren.", + "accessScaleTitle": "Begrijp Radar-toegang voordat je activeert", + "accessScaleIntro": "Radar maakt geen netwerkverbinding totdat je hiervoor kiest. Kies Community-toegang of activeer een persoonlijke supporterssleutel nadat je deze regels hebt doorgenomen.", + "accessCommunityRule": "Community — geen sleutel vereist: de volledige catalogus met een vertraging van 30 dagen.", + "accessSingleUseRule": "Ster geven + volgen — nadat GitHub OAuth beide heeft geverifieerd, krijgt je GitHub-account één keer leestoegang tot de livecatalogus; daarna keert de toegang terug naar Community. Deze eenmalige toegang kan niet opnieuw aan dat account worden verleend.", + "accessContributorRule": "Bijdragers — samengevoegde PR's, commits en regels bepalen alleen de wekelijkse ranglijst. De top 10 krijgt 365 dagen; nummers 11–100 krijgen 90 dagen; bijdragers buiten de top 100 krijgen geen toegang, ongeacht het aantal PR's. Uit de ranglijst verdwijnen verkort nooit de reeds toegekende periode.", + "accessSupporterRule": "Supporters — eenmalige aankopen geven 6 maanden, 1 jaar of levenslange toegang zonder automatische verlenging. Aankopen, donaties, bijdragersperiodes en handmatige toekenningen worden opgeteld; levenslange toegang heeft altijd voorrang.", + "accessUseTitle": "Persoonlijk gebruik, herstel en beoordeling", + "accessInstallationRule": "Persoonlijke licentie — gebruik de sleutel op één actieve installatie tegelijk. OmniRoute maakt geen hardwarevingerafdruk. Bij herstel wordt een verloren sleutel ingetrokken en vervangen zonder de vervaldatum opnieuw in te stellen.", + "accessAbuseRule": "Misbruikbeoordeling — het 4e unieke IP-adres binnen 24 uur genereert alleen een markering voor handmatige beoordeling; een sleutel wordt hierdoor nooit automatisch geblokkeerd of ingetrokken.", + "accessOffersRule": "Live-aanbiedingen worden handmatig samengesteld en kunnen wijzigen of verlopen.", + "privacyTitle": "Wat Radar uitwisselt", + "privacyDownloadsRule": "Downloads — je installatie ontvangt cryptografisch ondertekende catalogus- en verwijzingsmetadata; een geldige livesleutel ontgrendelt ook ondertekende aanbiedingen en Intel.", + "privacySendsRule": "Verzonden gegevens — serversynchronisatie verstuurt de supporterssleutel als een Bearer-token en de HTTPS-infrastructuur ontvangt het IP-adres van de verbinding. Voor het bijhouden van feedverzoeken wordt geen van beide waarden onbewerkt opgeslagen: alleen sleutelhashes, geaggregeerd gebruik en een dagelijks roterende, ingekorte IP-HMAC voor misbruikbeoordeling worden bewaard.", + "privacyNeverRule": "Nooit verzameld — prompts, antwoorden, gesprekken, providerreferenties, modelverkeer, uptime, latentie en lokale providerconfiguratie worden nooit naar Radar verzonden.", + "activateButton": "Community activeren", "activating": "Activeren...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Heb je al een supporterssleutel?", + "keyInvalidFormatError": "Ongeldige sleutelindeling. Deze moet beginnen met \"omr_\", gevolgd door 40 hexadecimale tekens.", + "activateWithKeyButton": "Supporter activeren", + "changeKeyButton": "Sleutel wijzigen", + "claimSectionTitle": "Heb je nog geen supporterssleutel?", + "contributorButton": "Ik ben een bijdrager", + "contributorHint": "GitHub OAuth controleert de huidige wekelijkse ranglijst: de top 10 krijgt 365 dagen en nummers 11–100 krijgen 90 dagen. Alleen het aantal PR's geeft nooit toegang buiten de top 100.", + "supporterButton": "Steun het project", + "supporterHint": "Eenmalige opties voor 6 maanden, 1 jaar en levenslang hebben geen automatische verlenging; in aanmerking komende periodes worden opgeteld en levenslange toegang heeft voorrang.", "colProvider": "Leverancier", "colModel": "Model", - "colQuota": "Quota", + "colQuota": "Quotum", + "colLimits": "Snelheidslimieten", + "trainsOnPrompts": "Traint op prompts", + "trainsOnPromptsHelp": "In de voorwaarden van deze provider staat dat deze mogelijk traint op de prompts die je verstuurt. Modellen zonder deze badge geven aan dat ze dit niet doen, of documenteren dit niet — het ontbreken van een verklaring is geen garantie.", + "limitsUnknownHelp": "Limieten uitsluitend gerapporteerd via de Radar-feed; voor dit item zijn geen limieten gepubliceerd", + "contextUnknownHelp": "Contextvenster onbekend voor dit item", + "capabilityUnknownHelp": "Mogelijkheid niet gerapporteerd door de feed", "colContext": "Context", "colCapabilities": "Capaciteiten", "colTos": "ToS Risico", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "nieuw", "setupGuide": "Installatiehandleiding", "disabledByFeed": "Uitgeschakeld door Radar-feed", "capTools": "Hulpmiddelen", "capVision": "Visie", "capThinking": "Denken", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Catalogus", + "freeCreditsTab": "Gratis tegoed", + "freeCreditsSubtitle": "Verwijzingslinks van door Radar gevolgde providers — het gebruik ervan kost je niets extra en helpt OmniRoute te ondersteunen.", + "fixedLinksEmpty": "Er zijn nog geen verwijzingslinks beschikbaar. Synchroniseer Radar om te controleren op updates.", + "requiredActionLabel": "Wat je moet doen:", + "claimButton": "Tegoed claimen", + "campaignsTitle": "Tijdelijke campagnes", + "campaignsEmpty": "Er zijn momenteel geen actieve campagnes — kom later terug.", + "campaignsUpsellCommunity": "Tijdelijke campagnes zijn een extraatje voor supporters. Alle vaste links op deze pagina blijven voor iedereen gratis.", + "campaignsValidUntil": "Geldig tot {date}", + "colActions": "Acties", + "localBadge": "lokaal", + "editModel": "Bewerken", + "saveModel": "Opslaan", + "cancelEdit": "Annuleren", + "resetModel": "Lokale wijzigingen herstellen", + "hideModel": "Verbergen", + "restoreModel": "Terugzetten", + "hiddenModelsTitle": "Verborgen modellen", + "modelDisplayName": "Lokale weergavenaam", + "modelEnabled": "Lokaal ingeschakeld", + "localStateSaveFailed": "Lokale Radar-instellingen konden niet worden opgeslagen", + "guidedCombos": "Begeleide combinaties", + "offers": "Aanbiedingen", + "intel": "Informatie" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Door Radar begeleide combinaties", + "subtitle": "Maak prioriteits-fallbacks van gelijkwaardige gratis modellen die door Radar zijn geselecteerd.", + "backToRadar": "Terug naar Radar", + "loading": "Combinatiesuggesties laden...", + "familyLabel": "Modelfamilie", + "modelsLabel": "Prioriteitsvolgorde", + "strategyReason": "Bij de prioritering wordt eerst het grootste terugkerende gratis budget gebruikt, waarna wordt teruggevallen op andere actieve providers.", + "generateButton": "Combinatie genereren", + "generating": "Genereren...", + "alreadyCreated": "Al aangemaakt", + "created": "Combo aangemaakt", + "noSuggestions": "Geen enkele geschikte modelfamilie heeft momenteel actieve verbindingen met ten minste twee providers.", + "catalogRequired": "Synchroniseer eerst de Radar-catalogus om samengestelde modelfamilies te laden.", + "loadFailed": "Kan Radar-combosuggesties niet laden.", + "createFailed": "Kan de combo niet aanmaken. Controleer je providerverbindingen en probeer het opnieuw." }, "radarSetupPage": { "title": "Leverancier Configuratie", @@ -13538,28 +13549,28 @@ }, "resilienceConnections": { "title": "Verbindingsveerkracht", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Je verbindingen herstellen automatisch", + "reassuranceDetail": "Meestal hoef je niets te doen. OmniRoute onderbreekt een verbinding na fouten tijdelijk en probeert deze daarna veilig opnieuw.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Verzoeken kunnen worden verzonden", + "coolingDown": "Binnenkort opnieuw proberen", + "lockedOut": "Vereist je aandacht" }, "table": { "status": "Status", "provider": "Provider", "connectionId": "Verbinding", - "authType": "Auth", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "authType": "Authenticatie", + "backoffLevel": "Wachttijd", + "cooldown": "Afkoelperiode", "lastError": "Laatste Fout", - "lockouts": "Lockouts", + "lockouts": "Blokkeringen", "healthy": "Gezond", - "coolingDown": "Cooldown", - "circuitOpen": "Circuit Open", + "coolingDown": "Afkoelperiode", + "circuitOpen": "Circuitbreaker open", "recovering": "Herstellend", "degraded": "Verslechterd", - "terminal": "Terminal", + "terminal": "Definitief", "unknown": "Onbekend", "never": "-" }, @@ -13572,8 +13583,8 @@ "empty": "Geen overgangen in geselecteerd venster", "currentState": "Huidige Status", "state": { - "open": "Open", - "half_open": "Half Open", + "open": "Openen", + "half_open": "Halfopen", "closed": "Gesloten", "degraded": "Verslechterd" }, @@ -13588,10 +13599,10 @@ }, "detail": { "title": "Verbindingsdetail", - "metadata": "Metadata", - "cooldown": "Cooldown", + "metadata": "Metagegevens", + "cooldown": "Afkoelperiode", "lastError": "Laatste Fout", - "breaker": "Circuit Breaker", + "breaker": "Circuitbreaker", "lockouts": "Modelvergrendelingen", "rateLimitedUntil": "Rate-limited Tot", "backoffLevel": "Backoff-niveau", @@ -13635,15 +13646,15 @@ "message": "Gedeeltelijke gegevens: niet-beschikbare bronnen: {sources}", "source": { "database": "Database", - "circuitBreaker": "Circuit Breaker", + "circuitBreaker": "Circuitbreaker", "modelLockouts": "Modelvergrendelingen", "count": "Aantal Verbindingen" } } }, "featureFlagCapabilityFilterEnabledDescription": "Weiger verzoeken vóór verzending wanneer het doellmodel ontbrekende vereiste mogelijkheden heeft (zicht, tools, gestructureerde output, contextvenster). Beschermt directe verzoeken van een enkele aanbieder die de compatibiliteitsfilter van de comb-laag omzeilen.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Sla OmniRoute's lokale controle van het contextvenster en het maximale aantal invoertokens over voor rechtstreekse verzoeken aan één model. Upstreamproviders blijven hun daadwerkelijke limieten afdwingen. Promptcompressie en limieten voor uitvoertokens blijven actief.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Zoekstatistieken en recente zoekopdrachten tellen alleen providers mee die nog een actieve verbinding hebben (providers zonder sleutel, zoals duckduckgo-free, tellen altijd mee). Uitgeschakeld behoudt elke opgeslagen zoekrij met een provider-id.", "publicSystem": { "notFound": { "title": "Pagina niet gevonden", @@ -13695,15 +13706,15 @@ "failedToLoad": "Kon systeemgezondheid niet laden.", "unableToReachHealth": "Kan de gezondheids-eindpunt niet bereiken. Controleer de connectiviteit en probeer het opnieuw.", "healthCheckFailed": "Gezondheidscontrole Mislukt", - "openConnectivityHelp": "Open Connectivity Help", + "openConnectivityHelp": "Hulp bij connectiviteit openen", "maintenanceInfo": "Onderhoudsinformatie", "service": "Dienst", "unknown": "onbekend", - "notAvailable": "n/a", + "notAvailable": "n.v.t.", "providersTracked": "Gevolgde Providers", "circuitBreakerState": "Provider Circuit Breaker Status", "lastUpdate": "Laatste update: {timestamp}", - "uptimeMinutes": "{minutes}m", + "uptimeMinutes": "{minutes} min.", "uptimeHoursMinutes": "{hours}u {minutes}m" }, "statusPages": { @@ -13750,7 +13761,7 @@ "suggestion2": "Schakel over naar een combinatie met fallback-providers.", "suggestion3": "Stel de veerkracht-/snelheidslimietprofielen van de provider in de instellingen af.", "primaryAction": "Open Weerbaarheidsinstellingen", - "secondaryAction": "Open Combos" + "secondaryAction": "Combo's openen" }, "500": { "title": "Interne Serverfout", @@ -13759,7 +13770,7 @@ "suggestion2": "Controleer de gezondheids-telemetrie en serverlogs op gecorreleerde aanvraag-ID's.", "suggestion3": "Als het aanhoudt, rapporteer het probleem met tijdstempel en verzoekcontext.", "primaryAction": "Open Gezondheidsdashboard", - "secondaryAction": "Open Logs" + "secondaryAction": "Logboeken openen" }, "502": { "title": "Slechte Gateway", @@ -13767,7 +13778,7 @@ "suggestion1": "Probeer het opnieuw met een andere provider of actieve combo-route.", "suggestion2": "Controleer de providerreferenties en de beschikbaarheid van het model.", "suggestion3": "Inspecteer de uitvoer van de vertaler als er een formaatconversie betrokken is.", - "primaryAction": "Open Providers", + "primaryAction": "Providers openen", "secondaryAction": "Open Vertaler" }, "503": { @@ -13796,7 +13807,7 @@ "importDescription": "Plak een vernieuwings-token geëxporteerd van {providerLabel}.", "apiKey": "API-sleutel", "apiKeyDescription": "Plak een langdurige {providerLabel} / CodeWhisperer API-sleutel. Deze wordt opgeslagen als een bearer-credential zonder verversingstoken; profielontdekking is op beste inspanning.", - "idcStartUrl": "IDC Start URL", + "idcStartUrl": "IDC-start-URL", "idcStartUrlPlaceholder": "https://your-org.awsapps.com/start", "idcStartUrlDescription": "De URL van het AWS IAM Identity Center van uw organisatie", "awsRegion": "AWS-regio", @@ -13853,7 +13864,7 @@ "authorizeImportant": "Belangrijk: je moet eerst ingelogd zijn op trae.ai in browser. De autorisatiepagina bevestigt alleen een bestaande sessie — het kan je niet inloggen. Als je \"Inloggen mislukt\" ziet, klik dan op \"Open solo.trae.ai\", log in en keer dan hier terug.", "waitingForAuthorization": "Wachten op trae.ai…", "authorizeWithBrowser": "Autoriseren met Browser", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai openen", "orPasteManually": "of plak een token handmatig in", "manualInstructions": "Log in op solo.trae.ai, open DevTools → Netwerk, stuur een chatbericht en kopieer de JWT uit de Authorization: Cloud-IDE-JWT {tokenPlaceholder} aanvraagheader. De levensduur van de JWT is ~14 dagen. Optionele identiteitsvelden komen van common_params in dezelfde aanvraagbody.", "accessTokenLabel": "Toegangstoken (Cloud-IDE-JWT)", @@ -13876,7 +13887,7 @@ } }, "providerTest": { - "dialogLabel": "Test {provider}", + "dialogLabel": "{provider} testen", "deprecated": "verouderd", "risk": "risico", "close": "Sluiten", @@ -13905,7 +13916,7 @@ "duration": "Duur", "model": "Model", "requestedModel": "Aangevraagd model", - "provider": "Provider", + "provider": "Aanbieder", "requester": "Aanvrager", "tokens": "Tokens" } @@ -13918,10 +13929,10 @@ "latency": "Latentie", "clientIp": "Klant IP", "proxy": "Proxy", - "direct": "Direct", + "direct": "Rechtstreeks", "type": "Type", "level": "Niveau", - "provider": "Provider", + "provider": "Aanbieder", "tlsFingerprint": "TLS-vingerafdruk", "directNative": "Direct", "targetUrl": "Doel-URL", @@ -13935,7 +13946,7 @@ "followDescription": "As as de as naar links, blijft de NOW-lijn op 75%", "now": "Nu", "nowDescription": "Spring naar huidige tijd, NOW-lijn reset naar midden", - "pan": "Pan", + "pan": "Verschuiven", "panDescription": "Sleep om te verkennen, achtergrond is bevroren" }, "reset": "Resetten", @@ -13943,11 +13954,11 @@ "ended": "Eindigde", "duration": "Duur", "status": "Status", - "provider": "Provider", + "provider": "Aanbieder", "tokens": "Tokens", "active": "Actief", "other": "Overig", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "uur", "day": "dag", "unknownModel": "onbekend", @@ -13956,9 +13967,9 @@ "metadata": { "compressionTitle": "Compressie", "compressionDescription": "Configureer de instellingen voor contextcompressie om het tokenverbruik en de kosten te verlagen.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — Relayproxy's", "relayDescription": "Serverless relay proxy-eindpunten voor je AI-infrastructuur", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Verkeersinspecteur — OmniRoute", "trafficInspectorDescription": "Monitor LLM-aanroepen + debug het HTTPS-verkeer van elke applicatie" }, "conductor": { @@ -13967,7 +13978,7 @@ "runners": "Hardlopers", "tasks": "Taken", "colName": "Naam", - "colClis": "CLIs", + "colClis": "CLI's", "colStatus": "Status", "colTask": "Taak", "colMode": "Modus", @@ -14014,7 +14025,7 @@ "orchestration": { "title": "Orkestratie", "description": "Alles wat OmniRoute op dit moment uitvoert — agents, vloot en routering", - "tabAgents": "Agents", + "tabAgents": "Agenten", "tabRouting": "Routering", "tabOverview": "Overzicht", "tabHistory": "Geschiedenis", @@ -14040,7 +14051,7 @@ "filterSources": "Bronnen", "filterProviders": "Aanbieders", "clearFilters": "Filters wissen", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Cloudagent", "sourceA2A": "A2A", "sourceConductor": "Conductor", "sourceStale": "Verouderd sinds {since}", @@ -14070,11 +14081,11 @@ "actionApprove": "Plan goedkeuren", "actionCancel": "Annuleren", "actionSeeInGraph": "Bekijk in grafiek", + "actionRepeat": "Herhalen", "actionDone": "Actie toegepast", "actionFailed": "Actie mislukt: {error}", "detailFailed": "Details laden mislukt: {error}", "mirroredInA2A": "Weergegeven in A2A", - "actionRepeat": "Herhalen", "repeatConfirm": "Klik nogmaals om te bevestigen", "repeatDone": "Nieuwe run aangemaakt", "repeatUnavailable": "Oorspronkelijke invoer niet beschikbaar" @@ -14088,57 +14099,57 @@ "networkError": "Netwerkfout — kon de blootstellingsinstelling van de provider niet bijwerken" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", + "title": "Aanbiedingen voor supporters", + "subtitle": "Officiële kortingen, tegoeden, proefperiodes en beoordeelde partnervoordelen van Radar.", + "backToRadar": "Terug naar Radar", + "loading": "Aanbiedingen laden...", + "refresh": "Aanbiedingen vernieuwen", + "refreshing": "Vernieuwen...", + "loadFailed": "We konden de aanbiedingen niet vernieuwen. De laatst geverifieerde lokale cache blijft behouden.", + "empty": "Er zijn momenteel geen actieve aanbiedingen beschikbaar.", + "keyRequiredTitle": "Een supporterssleutel is vereist", + "keyRequiredDescription": "Aanbiedingen zijn een livevoordeel van Radar. Voeg op het Radar-scherm een bestaande supporterssleutel toe, verifieer je bijdragersstatus of steun het project om er een te verkrijgen.", + "contributorButton": "Ik ben een bijdrager", + "supporterButton": "Steun het project", "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "officialBadge": "Officieel", + "conditionsLabel": "Voorwaarden:", + "validUntil": "Geldig tot {date}", + "noExpiry": "Geen vervaldatum aangekondigd", + "openOffer": "Aanbieding bekijken", + "trialDays": "{days, plural, one {# dag} other {# dagen}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", + "title": "Radarinformatie", + "subtitle": "Door Radar beheerde ELO-ranglijsten en feitelijke cataloguswijzigingen.", + "backToRadar": "Terug naar Radar", + "loading": "Intel laden...", + "refresh": "Intel vernieuwen", + "syncing": "Vernieuwen...", + "loadFailed": "We konden Intel niet vernieuwen. De laatst geverifieerde lokale cache blijft behouden.", + "empty": "Er is nog geen geverifieerde Intel-momentopname beschikbaar.", + "supporterBadge": "Radar-supporter", + "methodology": "Methodologie", + "eloMethod": "ELO, initieel {initial}, K={factor}", + "freshness": "Actualiteit van de catalogus", + "ageDays": "{days, plural, one {# dag oud} other {# dagen oud}}", + "trend": "Catalogustrend", + "modelDelta": "{current} modellen, +{added} / -{removed}", + "ranking": "Modelranglijst", + "noRankings": "Er zijn nog geen bevestigde vergelijkingen beschikbaar.", "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "category": "Categorie", + "rating": "Beoordeling", + "matches": "Wedstrijden", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Actueel", + "aging": "Verouderend", + "stale": "Verouderd" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Groeiend", + "stable": "Stabiel", + "shrinking": "Krimpend" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Verzoek overschrijdt de contextvenster van de provider" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference is een opensourcevriend van OmniRoute", + "description": "Een op kosten gerangschikte gateway die tientallen geavanceerde modellen via één OpenAI-compatibel endpoint doorverkoopt — waarbij elk verzoek naar de goedkoopste geschikte provider wordt gerouteerd, nooit boven de catalogusprijs.", + "cta": "Een API-sleutel verkrijgen", + "partnerLinkNote": "Partnerlink", + "dismissAriaLabel": "Sluiten" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Schakel het genereren van varianten op denkniveau (bijv. -low, -medium, -high) in de catalogus /v1/models uit." } diff --git a/src/i18n/messages/no.json b/src/i18n/messages/no.json index c0bd2006ed..1b561286bf 100644 --- a/src/i18n/messages/no.json +++ b/src/i18n/messages/no.json @@ -31,7 +31,7 @@ "active": "Aktiv", "inactive": "Inaktiv", "noData": "Ingen data tilgjengelig", - "nothingHere": "Nothing here yet", + "nothingHere": "Ingenting her ennå", "configure": "Konfigurer", "manualConfig": "Manuell konfig", "manage": "Administrer", @@ -47,7 +47,7 @@ "time": "Tid", "details": "Detaljer", "created": "Opprettet", - "lastUsed": "Last Refreshed", + "lastUsed": "Sist oppdatert", "loadMore": "Last inn mer", "noResults": "Ingen resultater funnet", "reloadPage": "Last inn siden på nytt", @@ -70,8 +70,8 @@ "note": "Merk", "free": "Gratis", "skipToContent": "Gå til innhold", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Serveren har problemer. Enkelte funksjoner kan være utilgjengelige.", + "maintenanceServerUnreachable": "Serveren er ikke tilgjengelig. Kobler til på nytt...", "accept": "Godta", "accountId": "Konto-ID", "alias": "Alias", @@ -98,7 +98,7 @@ "skill": "Ferdighet", "sortBy": "Sorter etter", "sortOrder": "Sorteringsrekkefølge", - "tab": "Tab", + "tab": "Fane", "text": "Tekst", "textarea": "Tekstområde", "tool": "Verktøy", @@ -120,12 +120,12 @@ "compatible": "Kompatibel", "chat-completions": "Chatfullføringer", "oauth": "OAuth", - "auth_token": "Auth Token", + "auth_token": "Autentiseringstoken", "crypto": "Krypto", "hours": "Timer", "selfsigned": "Selvsignert", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", + "proxy_id": "Proxy-ID", + "proxyId": "Proxy-ID", "connectionId": "Tilkoblings-ID", "resolveConnectionId": "Løs tilkoblings-ID", "resolve_connection_id": "Løs tilkoblings-ID", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Kunne ikke tilbakestille priser", "apikey": "API-nøkkel", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Gå til kontrollpanelet", + "checkSystemStatus": "Sjekk systemstatus", + "selectModel": "Velg modell", "addModel": "Legg til modell", "effortNone": "Ingen", "effortLow": "Lav", @@ -164,10 +164,10 @@ "reasoningEffort": "Resonneringsinnsats", "wireApi": "Wire API", "modelAliases": "Modellaliaser", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Kombinasjoner", + "noModelsFound": "Ingen modeller funnet", + "clear": "Tøm", + "done": "Ferdig", "selectAll": "Velg alle", "unselectAll": "Fjern alle valg", "visibleModels": "synlige", @@ -184,527 +184,527 @@ "selectAllProviders": "Sjekk alle leverandører", "clearProviderSelection": "Fjern merket for leverandører", "providersSelectedCount": "{count} leverandører sjekket", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Det oppstod en feil", + "comboDeleted": "Kombinasjonen ble slettet", + "hide": "Skjul", + "creating": "Oppretter", + "comboCreated": "Kombinasjonen ble opprettet", + "swapFormats": "Bytt formater", + "daysAgo": "Dager siden", + "retries": "Nye forsøk", + "errorDuringRestore": "Feil under gjenoppretting", + "eventsAppearHint": "Hint om visning av hendelser", + "noLockouts": "Ingen utestengninger", + "webSearchDesc": "Beskrivelse av nettsøk", + "audioProvidersHeading": "Overskrift for lydleverandører", "cloudAgentProviders": "Cloud Agent-leverandører", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Minutter siden", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "Automatisk oppdatering i sanntid", + "webSearch": "Nettsøk", + "anthropicPrefixPlaceholder": "Plassholder for Anthropic-prefiks", + "addModelToCombo": "Legg til modell i kombinasjonen", + "failedToLoad": "Kunne ikke laste inn", + "categoryMedia": "Mediekategori", + "enableCloud": "Aktiver sky", + "expirationBannerExpiringSoon": "Utløpsbanner – utløper snart", + "retry": "Prøv på nytt", + "embeddings": "Innebygginger", + "errorCount": "Antall feil", + "backupReasonManual": "Sikkerhetskopieringsårsak – manuell", + "safeSearchModerate": "Moderat sikkert søk", + "activeLimiters": "Aktive begrensere", + "a2aCardTitle": "A2A-korttittel", + "cloudWorkerUnreachable": "Skyarbeideren kan ikke nås", + "testFailed": "Test mislyktes", + "compatibleBaseUrlHint": "Tips for kompatibel basis-URL", + "usageTracking": "Brukssporing", + "disableCloudTitle": "Tittel for deaktivering av sky", + "noConnections": "Ingen tilkoblinger", + "providerHealth": "Leverandørstatus", + "confirmDbImport": "Bekreft databaseimport", + "notAvailableSymbol": "Symbol for ikke tilgjengelig", + "backupsAvailable": "Tilgjengelige sikkerhetskopier", + "providerAuto": "Automatisk leverandør", + "newProviderNamePlaceholder": "Plassholder for nytt leverandørnavn", + "a2aQuickStartStep2": "A2A-hurtigstart – trinn 2", + "ok": "OK", + "available": "Tilgjengelig", + "noBackupYet": "Ingen sikkerhetskopi ennå", + "more": "Mer", + "noCompatibleYet": "Ingen kompatible ennå", + "multiProvider": "Flere leverandører", + "repairEnvHint": "Tips for reparasjon av miljø", + "disablingCloud": "Deaktiverer sky", + "testBench": "Testbenk", + "valid": "Gyldig", + "cloudBenefitShare": "Fordel med skydeling", + "mcpCardTitle": "MCP-korttittel", + "disableConfirm": "Bekreft deaktivering", + "filters": "Filtre", + "expirationBannerExpiredDesc": "Beskrivelse for utløpsbanner – utløpt", + "saveComboDefaults": "Lagre standardinnstillinger for kombinasjon", + "cloudConnectedVerified": "Skytilkobling bekreftet", + "uptime": "Oppetid", + "compatibleProdPlaceholder": "Plassholder for kompatibelt produkt", + "fallbackChainsTitle": "Tittel for reservekjeder", + "oauthLabel": "OAuth-etikett", + "a2aCardDescription": "Beskrivelse av A2A-kort", + "okShort": "Kort OK", + "maintenance": "Vedlikehold", + "formatConverter": "Formatkonverterer", + "zedImportNetworkError": "Nettverksfeil ved import fra Zed", + "apiKeyLabel": "API-nøkkeletikett", + "noModelsForProvider": "Ingen modeller for leverandøren", + "mcpCardDescription": "Beskrivelse av MCP-kort", + "apiTypeLabel": "Etikett for API-type", + "configuredProvidersLabel": "Etikett for konfigurerte leverandører", + "maxRetriesLabel": "Etikett for maksimalt antall nye forsøk", + "title": "Tittel", + "output": "Utdata", + "prefixHint": "Tips for prefiks", + "skipWizard": "Hopp over veiviseren", + "failedCount": "Antall mislykkede", + "confirmDbImportDesc": "Beskrivelse av bekreftelse på databaseimport", + "entries": "Oppføringer", + "until": "Til", + "disableCombo": "Deaktiver kombinasjon", + "liveMonitorDescriptionPrefix": "Prefiks for beskrivelse av sanntidsovervåking", + "runningCount": "Antall som kjører", + "noActiveConnectionsInGroup": "Ingen aktive tilkoblinger i gruppen", + "savedSuccessfully": "Lagret", + "systemStorage": "Systemlagring", + "videoDesc": "Videobeskrivelse", + "maxResults": "Maksimalt antall resultater", + "timeRangeMonth": "Tidsperiode: måned", + "testSummary": "Testsammendrag", + "failedSetPassword": "Kunne ikke angi passord", + "audio": "Lyd", + "restore": "Gjenopprett", + "disableWarning": "Advarsel om deaktivering", + "moderationsDesc": "Beskrivelse av modereringer", + "providerHealthStatusAria": "ARIA for leverandørens helsestatus", + "modelNamePlaceholder": "Plassholder for modellnavn", + "mcpQuickStartStep2": "MCP-hurtigstart, trinn 2", + "quickStart": "Hurtigstart", + "fullExportFailedWithError": "Full eksport mislyktes med feil", + "loadingBackups": "Laster inn sikkerhetskopier", + "anthropicBaseUrlPlaceholder": "Plassholder for Anthropic-basis-URL", + "description": "Beskrivelse", + "noProviderFound": "Ingen leverandør funnet", + "auto": "Automatisk", + "protocolsDescription": "Beskrivelse av protokoller", + "cloudSessionNote": "Merknad om skyøkt", + "advancedSettings": "Avanserte innstillinger", + "defaultStrategy": "Standardstrategi", + "purgeExpiredLogs": "Slett utløpte logger", + "justNow": "Akkurat nå", + "providerTestFailed": "Leverandørtest mislyktes", + "openaiBaseUrlPlaceholder": "Plassholder for OpenAI-basis-URL", + "image": "Bilde", + "failedCreateChain": "Kunne ikke opprette kjede", + "importDatabase": "Importer database", + "allDataLocal": "Alle data er lokale", + "sectionTitle": "Seksjonstittel", + "failedToggle": "Kunne ikke veksle", + "editCombo": "Rediger kombinasjon", + "testResults": "Testresultater", + "searchQuery": "Søkespørring", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", + "duplicate": "Dupliser", + "createCombo": "Opprett kombinasjon", + "searchTypeWeb": "Søketype: nett", + "addChain": "Legg til kjede", + "prefixLabel": "Prefiksetikett", + "listModelsDesc": "Beskrivelse av modelliste", + "databaseSize": "Databasestørrelse", + "chainCreated": "Kjede opprettet", + "providerTestTimeout": "Tidsavbrudd for leverandørtest", + "routingStrategy": "Rutingsstrategi", + "translateAction": "Oversettelseshandling", + "exportFailed": "Eksport mislyktes", + "connectedVerificationPending": "Tilkoblet, venter på bekreftelse", + "a2aQuickStartTitle": "Tittel for hurtigstart av A2A", + "couldNotTest": "Kunne ikke teste", + "testAllCompatible": "Test alle kompatible", + "anthropicCompatibleName": "Anthropic-kompatibelt navn", + "disabling": "Deaktiverer", + "failedEnable": "Kunne ikke aktivere", + "categoryUtility": "Kategori: verktøy", + "customUrlOptional": "Egendefinert URL (valgfritt)", + "localProviders": "Lokale leverandører", + "comboNamePlaceholder": "Plassholder for kombinasjonsnavn", + "memoryRss": "Minne-RSS", + "disableProvider": "Deaktiver leverandør", + "welcomeDesc": "Velkomstbeskrivelse", + "nameLabel": "Navneetikett", + "allOperational": "Alle er operative", + "backupNow": "Sikkerhetskopier nå", + "providerMaxRetriesAria": "ARIA-etikett for maksimalt antall leverandørforsøk", + "textToSpeechDesc": "Beskrivelse av tekst til tale", + "machineId": "Maskin-ID", + "globalProxy": "Global proxy", + "hitsMisses": "Treff og bom", + "testDesc": "Testbeskrivelse", + "chatDesc": "Chatbeskrivelse", + "importSuccess": "Importen var vellykket", "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "a2aQuickStartStep1": "A2A-hurtigstart, trinn 1", + "importFailed": "Importen mislyktes", + "inputPlaceholder": "Plassholder for inndata", + "providerModelsTitle": "Tittel for leverandørmodeller", + "lastBackup": "Siste sikkerhetskopi", + "yourEndpoint": "Endepunktet ditt", + "autoDisableThresholdDesc": "Beskrivelse av terskel for automatisk deaktivering", + "rerankDesc": "Beskrivelse av omrangering", + "modelsPathPlaceholder": "Plassholder for modellbane", + "noCombosYet": "Ingen kombinasjoner ennå", + "connectedVerificationPendingWithError": "Tilkoblet, venter på bekreftelse med feil", + "comboDefaultsGuideHint1": "Tips 1 i veiledningen for standardinnstillinger for kombinasjoner", + "enableCloudTitle": "Tittel for aktivering av skyen", + "configuredProvidersHint": "Tips om konfigurerte leverandører", + "paused": "Satt på pause", + "llmProviders": "LLM-leverandører", + "enableCombo": "Aktiver kombinasjon", + "removeProviderOverrideAria": "ARIA-etikett for å fjerne leverandøroverstyring", + "nodeVersion": "Node-versjon", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Eksport mislyktes med feil", + "proxyConfigured": "Proxy konfigurert", + "concurrencyPerModel": "Samtidighet per modell", + "protocolTasksLabel": "Etikett for protokolloppgaver", + "oauthProviders": "Oauth-leverandører", + "lockedCount": "Antall låste", + "deleteChainConfirm": "Bekreft sletting av kjede", + "recentTranslations": "Nylige oversettelser", + "zedImportButton": "Importknapp for Zed", + "responsesDesc": "Beskrivelse av svar", + "testedCount": "Antall testede", + "providersCommaSeparatedPlaceholder": "Plassholder for kommaseparerte leverandører", + "signatureDefaults": "Standardverdier for signatur", + "errorCreating": "Feil under oppretting", + "timeRangeYear": "Tidsperiode: år", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Skyen ble deaktivert", + "deleteConfirm": "Bekreft sletting", + "check": "Kontroller", + "safeSearch": "Sikkert søk", + "protocolLastActivity": "Siste protokollaktivitet", + "openMcpDashboard": "Åpne Mcp-kontrollpanelet", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Etikett for chatbane", + "retryDelay": "Forsinkelse før nytt forsøk", + "errorUpdating": "Feil under oppdatering", + "ideCliIntegrations": "IDE- og CLI-integrasjoner", + "imageGeneration": "Bildegenerering", + "apiKeyRequired": "API-nøkkel kreves", + "resetAllTitle": "Tilbakestill alt", + "connectionError": "Tilkoblingsfeil", + "modelName": "Modellnavn", + "apiKeyForCheck": "API-nøkkel for kontroll", + "cloudRequestTimeout": "Tidsavbrudd for skyforespørsel", + "showConfiguredOnly": "Vis bare konfigurerte", "showFreeOnly": "Bare gratis", "addFirstProvider": "Legg til din første leverandør", "addFirstProviderDesc": "Koble til en AI-leverandør for å starte ruting av forespørsler gjennom OmniRoute. Du kan bruke gratisleverandører, API-nøkler eller OAuth-kontoer.", "learnMore": "Lær mer", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Inkluder domener", + "promptCache": "Promptbuffer", + "cloudConnected": "Tilkoblet skyen", + "deleteChain": "Slett kjede", + "chatPathPlaceholder": "Plassholder for chatbane", + "databasePath": "Databasebane", + "usingLocalServer": "Bruker lokal server", + "globalComboConfig": "Global kombinasjonskonfigurasjon", + "backupFailed": "Sikkerhetskopiering mislyktes", + "tabProtocols": "Faneprotokoller", + "continue": "Fortsett", + "categorySearch": "Kategorisøk", + "rateLimitStatus": "Status for hastighetsbegrensning", + "repairEnvSuccess": "Miljøet ble reparert", + "nameRequired": "Navn er påkrevd", + "country": "Land", + "trackMetricsDesc": "Beskrivelse av metrikksporing", + "durationSecondsShort": "Varighet i sekunder (kort)", + "formatConverterDescription": "Beskrivelse av formatkonverterer", + "cloudBenefitAccess": "Tilgang til skyfordeler", + "maxRetries": "Maksimalt antall forsøk", + "queueTimeout": "Tidsavbrudd for kø", "queueDepth": "Kødybde", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Legg til leverandør", + "realtime": "Sanntid", + "totalTranslations": "Totalt antall oversettelser", + "protocolActiveStreamsLabel": "Aktive protokollstrømmer", + "repairEnv": "Reparer miljø", + "modelsCount": "Antall modeller", + "viewBackups": "Vis sikkerhetskopier", + "responsesApi": "Responses API", + "copyComboName": "Kopier kombinasjonsnavn", + "failures": "Feil", + "failedUpdate": "Oppdatering mislyktes", + "imageDesc": "Bildebeskrivelse", + "failedCreate": "Opprettelse mislyktes", + "remainingOfLimit": "Gjenstår av grensen", + "protocolsTitle": "Protokoller", + "expirationBannerExpiringSoonDesc": "Beskrivelse for banner om snarlig utløp", + "source": "Kilde", + "failed": "Mislyktes", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", + "mcpQuickStartStep1": "MCP-hurtigstart, trinn 1", + "runTest": "Kjør test", + "loadingFallbackChains": "Laster reservekjeder", + "healthy": "Fungerer som den skal", + "version": "Versjon", + "saveBlockWeighted": "Lagre blokkvektet", + "zedImportNone": "Ingen Zed-import", + "noBackupsYet": "Ingen sikkerhetskopier ennå", + "noGlobalProxy": "Ingen global proxy", + "noModels": "Ingen modeller", + "stickyLimit": "Grense for fastholding", + "passedCount": "Antall beståtte", + "zedImportFailed": "Zed-import mislyktes", + "saving": "Lagrer", + "testAll": "Test alle", + "globalProxyDesc": "Beskrivelse av global proxy", + "latencyP99": "Ventetid P99", + "connectingToCloud": "Kobler til skyen", + "responses": "Svar", + "errorDeleting": "Feil ved sletting", + "openaiPrefixPlaceholder": "Plassholder for Openai-prefiks", + "enterPassword": "Skriv inn passord", + "openA2aDashboard": "Åpne A2A-kontrollpanelet", + "enableProvider": "Aktiver leverandør", + "modeTest": "Testmodus", + "failedDeleteChain": "Kunne ikke slette kjeden", + "providerDesc": "Leverandørbeskrivelse", + "templateLoadHint": "Tips for lasting av mal", + "lastFailure": "Siste feil", + "moveDown": "Flytt ned", + "providerLabel": "Leverandøretikett", + "clearCacheFailed": "Tømming av hurtigbuffer mislyktes", + "imagesGenerations": "Bildegenereringer", + "repairEnvWorking": "Reparerer miljøet", + "millisecondsShort": "ms", + "globalLabel": "Global etikett", + "failuresPlural": "Feil", + "completionsLegacyDesc": "Beskrivelse av eldre fullføringer", + "searchProviders": "Søk etter leverandører", + "chatPathHint": "Tips for chatbane", + "defaultStrategyDesc": "Beskrivelse av standardstrategi", + "latencyP95": "Ventetid P95", + "textToSpeech": "Tekst til tale", + "searchType": "Søketype", + "messages": "Meldinger", + "aggregatorsGateways": "Aggregator-gatewayer", + "comboStrategyAria": "ARIA for kombinasjonsstrategi", + "input": "Inndata", + "testingConnection": "Tester tilkobling", + "excludeDomains": "Ekskluder domener", + "webCookieProviders": "Leverandører av nettinformasjonskapsler", + "allTestsPassed": "Alle tester bestått", + "openaiCompatibleName": "OpenAI-kompatibelt navn", + "warningCostOptimizedPartialPricing": "Advarsel om kostnadsoptimalisert delvis prissetting", + "comboDefaultsGuideTitle": "Tittel på veiledning for standardinnstillinger for kombinasjoner", + "hoursAgo": "Timer siden", + "notAvailable": "Ikke tilgjengelig", + "skipAndContinue": "Hopp over og fortsett", + "moderations": "Modereringer", + "proxyConfig": "Proxy-konfigurasjon", + "upstreamProxyProviders": "Leverandører av oppstrømsproxy", + "exportAll": "Eksporter alle", + "queuedCount": "Antall i kø", + "resetAll": "Tilbakestill alle", + "noTranslations": "Ingen oversettelser", + "avgLatency": "Gjennomsnittlig ventetid", + "throttleStatus": "Begrensningsstatus", + "backupRetentionDesc": "Beskrivelse av oppbevaring av sikkerhetskopier", + "noCBData": "Ingen CB-data", + "chainDeleted": "Kjeden er slettet", + "timeLeft": "Tid igjen", + "expirationBannerExpired": "Utløpsbanner utløpt", + "language": "Språk", + "invalidFileType": "Ugyldig filtype", + "monitoredProviders": "Overvåkede leverandører", + "errors": "Feil", "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "chatCompletions": "Chat-fullføringer", + "exampleTemplatesHint": "Tips for eksempelmaler", + "retryDelayLabel": "Etikett for forsinkelse før nytt forsøk", + "audioTranscription": "Lydtranskripsjon", + "fallbackChainsDesc": "Beskrivelse av reservekjeder", + "exampleTemplates": "Eksempelmaler", + "connectionsCount": "Antall tilkoblinger", + "modelsPathLabel": "Etikett for modellbane", + "activeProvidersHint": "Tips om aktive leverandører", + "activeLockouts": "Aktive sperringer", + "invalid": "Ugyldig", + "skipPassword": "Hopp over passord", + "moveUp": "Flytt opp", + "timeRange": "Tidsintervall", + "stickyLimitDesc": "Beskrivelse av fast grense", + "cloudBenefitEdge": "Fordel med skybasert edge", + "custom": "Egendefinert", + "verifying": "Verifiserer", + "baseUrlLabel": "Etikett for basis-URL", + "setPassword": "Angi passord", + "safeSearchStrict": "Strengt sikkert søk", + "noChangesSinceBackup": "Ingen endringer siden sikkerhetskopieringen", + "modelsPathHint": "Tips om modellbane", + "audioTranscriptions": "Lydtranskripsjoner", + "testCombo": "Test kombinasjon", + "mcpQuickStartTitle": "Tittel for hurtigstart med MCP", + "comboUpdated": "Kombinasjonen er oppdatert", + "weighted": "Vektet", + "providers": "Leverandører", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", + "noFallbackChainsDesc": "Beskrivelse av ingen reservekjeder", + "yesImport": "Ja, importer", + "lockoutsAutoRefreshHint": "Tips om automatisk oppdatering av sperringer", + "tabApis": "API-er-fane", + "sectionDescription": "Seksjonsbeskrivelse", "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "purgeLogsFailed": "Kunne ikke tømme logger", + "latency": "Forsinkelse", + "testAllOAuth": "Test all O Auth", + "mcpQuickStartStep3": "Trinn 3 i hurtigstart med MCP", + "repairEnvFailed": "Kunne ikke reparere miljøet", + "zedImportHint": "Tips om Zed-import", + "modelsAcrossEndpoints": "Modeller på tvers av endepunkter", + "autoDisableBannedAccounts": "Deaktiver utestengte kontoer automatisk", + "securityDesc": "Sikkerhetsbeskrivelse", + "listModels": "Vis modeller", + "backupRestore": "Sikkerhetskopiering og gjenoppretting", + "target": "Mål", + "zedImportSuccess": "Zed-importen var vellykket", + "lastHeaderUpdate": "Siste oppdatering av topptekst", + "categoryCore": "Kjernekategori", + "noFallbackChains": "Ingen reservekjeder", + "noSearchProviders": "Ingen søkeleverandører", + "autoBalance": "Automatisk balansering", + "noModelsYet": "Ingen modeller ennå", + "signatureFamily": "Signaturfamilie", + "externalApiCalls": "Eksterne API-kall", + "providerOverridesDesc": "Beskrivelse av leverandøroverstyringer", + "signatureTool": "Signaturverktøy", + "connectionFailed": "Tilkoblingen mislyktes", + "activeLimitersPlural": "Aktive begrensere i flertall", + "doneDesc": "Beskrivelse av fullført", + "down": "Nede", + "noDataYet": "Ingen data ennå", + "activeProviders": "Aktive leverandører", + "nameInvalid": "Ugyldig navn", + "skip": "Hopp over", + "createChain": "Opprett kjede", + "audioSpeech": "Lyd og tale", + "cacheCleared": "Hurtigbufferen er tømt", + "searchTypeNews": "Søketype: nyheter", + "durationMillisecondsShort": "Varighet i millisekunder, kortformat", + "addOpenAICompatible": "Legg til Open Ai-kompatibel", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "I kø", + "domainPlaceholder": "Plassholder for domene", + "durationMinutesShort": "Varighet i minutter, kortformat", + "verifyingConnection": "Bekrefter tilkoblingen", + "imageProviders": "Bildeleverandører", + "protocolToolsLabel": "Etikett for protokollverktøy", + "queryPlaceholder": "Plassholder for spørring", + "videoGeneration": "Videogenerering", + "timeRangeWeek": "Tidsrom: uke", + "limitExhausted": "Grensen er nådd", + "failedDisable": "Kunne ikke deaktivere", + "inMemoryNote": "Merknad om lagring i minnet", + "compatibleHint": "Kompatibilitetstips", + "errorShort": "Kort feilbeskrivelse", + "advancedHint": "Avansert tips", + "restoreFailed": "Gjenoppretting mislyktes", + "searchProvidersHeading": "Overskrift for søk etter leverandører", + "comboName": "Kombinasjonsnavn", + "autoDisableDescription": "Beskrivelse av automatisk deaktivering", + "embeddingsDesc": "Beskrivelse av embeddings", + "operational": "Operativ", + "testAllApiKey": "Test alle API-nøkler", + "backupCreated": "Sikkerhetskopi opprettet", + "errorDuringImport": "Feil under import", + "comboDefaultsGuideHint2": "Tips 2 i veiledningen for standardinnstillinger for kombinasjoner", + "connecting": "Kobler til", + "fillModelAndProviders": "Fyll ut modell og leverandører", + "syncing": "Synkroniserer", + "resetConfirm": "Bekreft tilbakestilling", + "trackMetrics": "Spor måledata", + "successful": "Vellykket", + "recovering": "Gjenoppretter", + "autoDisableThreshold": "Terskel for automatisk deaktivering", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Synkroniserer data", + "cloudBenefitPorts": "Fordeler med skyporter", + "compatibleProviders": "Kompatible leverandører", "freeTierProviders": "Gratis Tier-leverandører", "freeTierLabel": "Gratis lag tilgjengelig", "freeTierProvidersDesc": "Leverandører med gratis nivåer - noen krever en API-nøkkelregistrering, andre trenger ingen legitimasjon i det hele tatt.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", + "clearCache": "Tøm hurtigbuffer", + "reqs": "Krav", + "addAnthropicCompatible": "Legg til Anthropic-kompatibel leverandør", + "apiKeyProviders": "API-nøkkelleverandører", + "tabsAria": "ARIA for faner", + "resetting": "Tilbakestiller", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Årsak til sikkerhetskopiering før gjenoppretting", + "disableCloud": "Deaktiver skyen", + "newProviderNameAria": "ARIA for navn på ny leverandør", + "passwordsMismatch": "Passordene samsvarer ikke", + "a2aQuickStartStep3": "Trinn 3 i hurtigstarten for A2A", + "liveMonitorDescriptionSuffix": "Suffiks for beskrivelse av sanntidsovervåking", + "failedAddProvider": "Kunne ikke legge til leverandør", + "addAtLeastOneProvider": "Legg til minst én leverandør", + "reasonSeparator": "Årsaksskille", + "zedImporting": "Importerer Zed", + "confirmPasswordPlaceholder": "Bekreft passord", + "whatYouGet": "Dette får du", + "signatureSession": "Signaturøkt", + "errorCountNoCode": "Antall feil uten kode", "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", - "gamificationAdmin": "Gamification Admin", + "providersCommaSeparated": "Leverandører, kommaseparert", + "exportDatabase": "Eksporter database", + "hitRate": "Treffrate", + "completionsLegacy": "Fullføringer (eldre versjon)", + "removeModel": "Fjern modell", + "timeRangeDay": "Tidsperiode: dag", + "cloudRequestFailed": "Skyforespørsel mislyktes", + "updatedAt": "Oppdatert", + "monitoredProvidersHint": "Tips for overvåkede leverandører", + "connectionSuccessful": "Tilkoblingen var vellykket", + "latencyP50": "Latens P50", + "logsDeleted": "Logger slettet", + "chatTester": "Chat-tester", + "safeSearchOff": "Sikkert søk av", + "nameHint": "Navnetips", + "debugToggle": "Feilsøkingsbryter", + "embedding": "Innebygging", + "issuesLabel": "Problemmerking", + "optionAny": "Alternativ: alle", + "maxNestingDepth": "Maksimal nestingsdybde", + "rerank": "Rangering på nytt", + "checking": "Kontrollerer", + "getStarted": "Kom i gang", + "restoreSuccess": "Gjenoppretting fullført", + "issuesDetected": "Problemer oppdaget", + "signatureCache": "Signaturhurtigbuffer", + "modelLockouts": "Modellsperringer", + "usingCloudProxy": "Bruker skyproxy", + "loadingHealth": "Laster inn helsestatus", + "providerOverrides": "Leverandøroverstyringer", + "audioTranscriptionDesc": "Beskrivelse av lydtranskripsjon", + "learnedFromHeaders": "Lært fra headere", + "totalRequests": "Totalt antall forespørsler", + "cloudUnstableNote": "Merknad om ustabil sky", + "gamificationAdmin": "Spillifisering – administrasjon", "monitorAnomaliesAndHealth": "Overvåk avvik og systemhelse", "flaggedAnomalies": "Merkede anomalier", "noAnomaliesDetected": "Ingen avvik oppdaget", "apiKey": "API-nøkkel", "xpLastHour": "XP (1t)", "zScore": "Z-score", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Mistenkelig", "tokensCommunityServers": "Fellesskapsservere", "tokensServerNamePlaceholder": "Servernavn", "tokensApiKeyPlaceholder": "API-nøkkel", @@ -737,26 +737,26 @@ "tokensDate": "Dato", "tokensSent": "Sendt", "tokensReceived": "Mottatt", - "tokensCreatingInvite": "Creating...", - "tokensCreateInvite": "Create Invite", - "tokensInviteCreated": "Invite code created", - "tokensRedeeming": "Redeeming...", - "tokensRedeem": "Redeem", + "tokensCreatingInvite": "Oppretter...", + "tokensCreateInvite": "Opprett invitasjon", + "tokensInviteCreated": "Invitasjonskode opprettet", + "tokensRedeeming": "Løser inn …", + "tokensRedeem": "Løs inn", "tokensInviteUses": "{used}/{max} bruk", "tokensRevoked": "TILBAKEKALT", - "tokensRevoke": "Revoke", - "tokensConnecting": "Connecting...", - "tokensConnectServer": "Connect Server", - "tokensNoServersConnected": "No servers connected. Connect to a community server to share leaderboards.", + "tokensRevoke": "Tilbakekall", + "tokensConnecting": "Kobler til …", + "tokensConnectServer": "Koble til server", + "tokensNoServersConnected": "Ingen servere er tilkoblet. Koble til en fellesskapsserver for å dele resultatlister.", "tokensServerStatus": { - "connected": "Connected", - "disconnected": "Disconnected", - "pending": "Pending", - "syncing": "Syncing", - "error": "Error" + "connected": "Tilkoblet", + "disconnected": "Frakoblet", + "pending": "Venter", + "syncing": "Synkroniserer", + "error": "Feil" }, - "tokensLastSync": "Last sync: {date}", - "tokensDisconnect": "Disconnect", + "tokensLastSync": "Siste synkronisering: {date}", + "tokensDisconnect": "Koble fra", "tierCoverageTitle": "Nivådekning", "tierCoverageSubtitle": "Leverandører konfigurert per reservenivå", "batchDetailCopyId": "Kopier ID", @@ -781,73 +781,73 @@ "batchFileDetailCopyId": "Kopier ID", "batchFileDetailClose": "Lukk", "batchFileDetailFailedToLoad": "Kunne ikke laste inn filinnholdet", - "batchFileDetailLoadError": "Error loading file contents", + "batchFileDetailLoadError": "Feil ved lasting av filinnhold", "batchFilesListSearchPlaceholder": "Søk etter ID eller filnavn...", "batchFilesListFilesTable": "Filer", "batchFilesCount": "{count, plural, one {# fil} other {# filer}}", - "batchFilesAllPurposes": "All purposes", - "batchFilesFilename": "Filename", - "batchFilesPurpose": "Purpose", - "batchFilesExpires": "Expires", - "batchFilesNoneFound": "No files found", - "batchFilesNeverExpires": "Never", - "batchFileInUseByActiveBatch": "File in use by an active batch", + "batchFilesAllPurposes": "Alle formål", + "batchFilesFilename": "Filnavn", + "batchFilesPurpose": "Formål", + "batchFilesExpires": "Utløper", + "batchFilesNoneFound": "Fant ingen filer", + "batchFilesNeverExpires": "Aldri", + "batchFileInUseByActiveBatch": "Filen brukes av en aktiv batch", "batchFilePurpose": { - "batch": "Batch input", - "batch-output": "Batch output", - "fine-tune": "Fine-tuning", - "assistants": "Assistants" + "batch": "Batchinndata", + "batch-output": "Batchutdata", + "fine-tune": "Finjustering", + "assistants": "Assistenter" }, "batchPageLoadingMore": "Laster inn mer …", - "recommended": "Recommended", - "understand": "I understand", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "recommended": "Anbefalt", + "understand": "Jeg forstår", + "batchConceptTitle": "Batchbehandling", + "batchConceptSubtitle": "Behandle tusenvis av forespørsler asynkront til ~50 % av kostnaden (24-timersvindu). Ideelt for evalueringer, klassifisering og embeddings.", + "batchConceptHowItWorks": "Slik fungerer det", + "batchConceptBenefit50pct": "50 % rabatt på inndata- og utdata-tokens", + "batchConceptAsync24h": "Asynkront med et fullføringsvindu på 24 timer", + "batchConceptUseCases": "Best egnet for masseklassifisering, evalueringer og embeddings", + "batchHeaderSubtitle": "Kjør mange forespørsler som én jobb", + "batchStep1": "1 · Last opp JSONL", + "batchStep1Desc": "Legg til forespørsler", + "batchStep2": "2 · Opprett batch", + "batchStep2Desc": "Kjør jobb", + "batchStep3": "3 · Hent resultater", + "batchStep3Desc": "Last ned utdata", + "filesConceptTitle": "Batchfiler", + "filesConceptSubtitle": "JSONL-filer som brukes av batcher: inndataforespørsler, resultater og feil.", + "filesConceptInput": "Inndata — JSONL-filen din med én forespørsel per linje", + "filesConceptOutput": "Utdata — resultater fra fullførte forespørsler", + "filesConceptError": "Feil — forespørsler som mislyktes", + "filesConceptRetention": "Oppbevaring: 30 dager som standard (29 dager hos Anthropic)", + "wizardTitle": "Ny batch", + "wizardClose": "Lukk", + "wizardNext": "Neste", + "wizardBack": "Tilbake", + "wizardCancel": "Avbryt", + "wizardCreate": "Opprett batch", + "wizardCreating": "Oppretter…", + "wizardStep1Destination": "Mål", + "wizardStep2Input": "Inndata", + "wizardStep3Validate": "Valider", + "wizardStep4Cost": "Kostnad og opprettelse", + "wizardProviderLabel": "Leverandør", + "wizardEndpointLabel": "Endepunkt", + "wizardModelLabel": "Modell", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", - "wizardCsvNoColumns": "No columns detected in CSV header.", - "wizardCsvIgnoreColumn": "— ignore —", + "wizardInputKindCsv": "CSV (vi konverterer)", + "wizardDropOrPick": "Slipp en fil her, eller klikk for å velge", + "wizardCsvMappingTitle": "Tilordne CSV-kolonner → forespørselsfelt", + "wizardCsvMappingAddField": "Legg til felt", + "wizardCsvNoColumns": "Ingen kolonner funnet i CSV-overskriften.", + "wizardCsvIgnoreColumn": "— ignorer —", "wizardCsvCustomIdMapped": "custom_id tilordnet", - "wizardCsvContentMapped": "Content field mapped (messages, input, or prompt)", - "wizardCsvApplyMapping": "Apply mapping", - "wizardCsvRowsParsed": "{count} rows parsed", - "wizardCsvRowsSkipped": "{count} rows skipped", + "wizardCsvContentMapped": "Innholdsfelt tilordnet (messages, input eller prompt)", + "wizardCsvApplyMapping": "Bruk tilordning", + "wizardCsvRowsParsed": "{count} rader analysert", + "wizardCsvRowsSkipped": "{count} rader hoppet over", "wizardCsvRowError": "Rad {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Alle linjer er gyldige", "wizardValidating": "Validerer…", "wizardValidationParseFailed": "Validering mislyktes — kunne ikke tolke innhold.", "wizardValidationSummary": "{lines} linjer · {ids} unike custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Dupliserte custom_ids oppdaget:", "wizardValidationFirstErrors": "Feil (første {count}):", "wizardValidationLine": "Linje {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Valideringsfeil", + "wizardValidationPreview": "Forhåndsvisning (de første 5 forespørslene)", + "wizardValidationSamplingNote": "Filen er stor — validert ved stikkprøver (de første 1000 + de siste 100 linjene). Full validering kjøres på serversiden.", + "wizardCostSync": "Synkron kostnad", + "wizardCostBatch": "Batchkostnad (-50 %)", + "wizardCostSavings": "Besparelse", + "wizardCostEstimatedNotice": "Estimert kostnad – faktisk fakturering kan variere.", + "wizardErrorUpload": "Kunne ikke laste opp filen. Prøv igjen.", + "wizardErrorCreate": "Kunne ikke opprette batchen. Prøv igjen.", + "wizardEmptyProviders": "Koble til en leverandør med batchstøtte (OpenAI, Anthropic eller Gemini) for å opprette en batch.", + "uploadModalTitle": "Last opp batchfil", + "uploadModalDropOrPick": "Slipp en .jsonl-fil her, eller klikk for å velge", + "uploadModalUpload": "Last opp", + "uploadModalCancel": "Avbryt", + "uploadModalError": "Opplastingen mislyktes. Prøv igjen.", + "uploadModalSuccess": "Lastet opp", + "uploadModalSizeLimit": "Maks. 512 MB", + "batchListNewButton": "Ny batch", + "batchListAutoRefresh": "Automatisk oppdatering hvert 30. sekund", + "batchListCostColumn": "Kostnad", + "batchActionCancel": "Avbryt", + "batchActionDownloadOutput": "Last ned utdata", + "batchActionDownloadErrors": "Last ned feil", + "batchActionRetry": "Prøv mislykkede på nytt", + "batchActionRetryConfirm": "Prøve {n} mislykkede forespørsel/forespørsler på nytt? Den endelige kostnaden avhenger av det faktiske antallet tokens som brukes.", + "expirationBadgeCritical": "Kritisk", + "expirationBadgeWarning": "Snart", + "expirationBadgeNormal": "Venter", + "expirationBadgeExpired": "Utløpt", + "filesListUploadButton": "Last opp", + "filesListUsedByColumn": "Brukes av", + "filesListUsedByNone": "Ingen", + "filesListUsedByRoleInput": "inndata", + "filesListUsedByRoleOutput": "utdata", + "filesListUsedByRoleError": "feil", + "filesListSizeColumn": "Størrelse", + "batchListProgressPartial": "(delvis)", + "batchListProviderColumn": "Leverandør", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", + "batchListProviderOther": "Annet", + "batchListTitle": "Batcher", + "batchListCount": "{count} batcher", + "batchListRemovingCompleted": "Fjerner …", + "batchListRemoveCompleted": "Fjern fullførte", "batchListTableStatus": "Status", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "Endepunkt", + "batchListTableModel": "Modell", + "batchListTableProgress": "Fremdrift", + "batchListTableCreated": "Opprettet", + "batchListTableExpires": "Utløper", + "batchListLoading": "Laster inn…", + "batchListEmpty": "Ingen batcher funnet", + "batchListValidating": "Validerer…", + "batchStatusAll": "Alle statuser", + "batchStatusInProgress": "Pågår", + "batchStatusValidating": "Validerer", + "batchStatusFinalizing": "Sluttfører", + "batchStatusCompleted": "Fullført", + "batchStatusFailed": "Mislyktes", + "batchStatusCancelled": "Avbrutt", + "batchStatusCancelling": "Avbryter", + "batchStatusExpired": "Utløpt", + "batchStatusCompletedWithFailures": "fullført med feil", + "batchStatusInProgressWithFailures": "pågår (med feil)", + "batchStatusFinalizingWithFailures": "sluttfører (med feil)", + "batchStatusCancelledWithFailures": "avbrutt med feil", + "batchStatusExpiredWithFailures": "utløpt (delvis)", + "wizardCostEstimating": "Estimerer kostnad…", + "wizardCostRequests": "Forespørsler", + "wizardCostInputTok": "inndata-tok.", + "wizardCostOutputTok": "utdata-tok.", + "wizardCostWindow": "Vindu", + "wizardDestinationSelectProvider": "Velg en leverandør…", + "wizardDestinationSelectModel": "Velg en modell…", + "wizardDestinationConnectProvider": "Koble til en leverandør", + "batchListBatchCreated": "Batch {id} opprettet — oppdaterer listen…", + "batchListBatchCreatedDismiss": "Lukk", + "batchListRefreshing": "Oppdaterer…", + "batchListRefresh": "Oppdater", + "uploadFileModalRemove": "Fjern", + "uploadFileModalUploading": "Laster opp…", + "wizardInputReading": "Leser fil…", + "wizardInputReady": "Klar", + "wizardInputLargeFileLabel": "Stor fil — utfører stikkprøvevalidering", + "wizardInputCsvJsonlReady": "JSONL generert — klar til validering.", + "wizardInputLargeFileWarning": "Stor fil oppdaget — validering utføres ved stikkprøver (første 5 MB + siste 100 KB). Full validering utføres på serversiden.", + "wizardCostWindow24h": "24 timers fullføringsvindu", + "wizardValidationFieldsOk": "obligatoriske felt er gyldige", + "filesListDelete": "Slett", + "filesListDownload": "Last ned", + "batchDetailActionCancel": "Avbryt batch", + "batchDetailActionRetry": "Prøv mislykkede forespørsler på nytt", + "batchDetailCancelling": "Avbryter…", + "batchDetailRetrying": "Forbereder nytt forsøk…", + "batchDetailCancelConfirm": "Vil du avbryte denne batchen? Pågående forespørsler blir stoppet.", + "batchActionCancelError": "Kunne ikke avbryte batchen. Prøv igjen.", + "batchActionRetryError": "Kunne ikke prøve mislykkede forespørsler på nytt. Prøv igjen.", + "batchConceptRetentionNote": "Resultat- og feilfiler oppbevares i 30 dager (Anthropic: 29 dager)", "batchFilesSizeColumn": "Størrelse", "toggleNoAuthProvider": "Bytt til ingen-autentisering leverandør", "loadingModels": "Laster inn modeller…", @@ -988,21 +988,21 @@ "disabled": "Deaktivert", "featureFlagOmnirouteEmergencyFallbackDescription": "Rut forespørsler med oppbrukt budsjett til gratis reserveleverandør/-modell for nødstilfeller.", "featureFlagArenaEloSyncEnabledDescription": "Aktiver periodisk synkronisering av Arena AI-ledertavlens ELO for rangering av modellintelligens.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Generer og legg inn samtalesammendrag når kombinasjonsruting bytter modell. Deaktiver dette for å behandle modellbytter uavhengig og forhindre bakgrunnsforespørsler for overlevering for alle eksisterende og fremtidige kombinasjoner.", "featureFlagExposeCcDiscoveryAliasesDescription": "Reklamer claude/<provider>/<model> speil-id-er på /v1/models slik at Claude Code gateway-modelloppdagelse viser ikke-Claude-modeller. Advarsel: dobler katalogoppføringer for alle klienter når det er aktivert globalt.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Hovedbryter for gateway-aliasene no-think/<provider>/<model>. På (standard): /v1/models viser en variant uten tenking for alle kvalifiserte Claude-modeller som støtter tenking, og en no-think/-ID som sendes i en forespørsel, blir løst tilbake til den faktiske modellen med resonnering deaktivert. Av: Ingen varianter vises, og en no-think/-ID behandles som enhver annen ukjent modell-ID. Påmelding eller avmelding per modell via ModelSpec.noThinkingAlias gjelder fortsatt mens dette er slått på.", "featureFlagChatVirtualLanesEnabledDescription": "Aktiver adaptive virtuelle tilgangsfelt per tenant for leverandørdistribusjon (#9654): et utbrudd fra én tenant gir ikke lenger en annen 503. Miljøvariabelen OMNIROUTE_CHAT_VIRTUAL_LANES overstyrer denne innstillingen i dashbordet; endringer trer i kraft ved omstart av serveren.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Leverandørsider i kontrollpanelet: Vis Gratis-merket bare basert på signaler som leverandøren støtter — ignorerer heuristikken for visningsnavn, ikke-boolske gratisfelt og :free-suffikser for registrerte leverandører uten et dokumentert gratisnivå. Når dette er slått av, brukes den tidligere merkeregelen.", + "featureFlagProxySkipRecentlyFailedDescription": "Proxygrupper og opencodes rotasjon per konto slutter midlertidig å bruke en proxy som nettopp sviktet (avvist TCP-sonde eller en 429 mottatt gjennom den), i en prosesspesifikk periode som dobles for hver gjentakelse, opptil en øvre grense. Ingen proxystatus lagres. Hvis alle kandidater settes til side, forblir valget uendret. Av som standard: Valgrekkefølgen er nøyaktig den vanlige rotasjonen.", + "featureFlagProxyPoolEgressObservationDescription": "Vis under en proxygruppe i kontrollpanelet hvor mange observerte utgående IP-adresser som betjente medlemmene i løpet av de siste 24 timene, hvor mange tilkoblinger som brukte dem, og det høyeste antallet som ble observert bak én IP-adresse. Skrivebeskyttet, beregnet fra proxyloggen og aldri brukt til ruting. Av som standard: Redigeringen av proxygruppen er uendret, og observasjonsruten returnerer null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "La en sonde som målet avviste under helsesjekken av proxyer (401/403/429: proxyen videresendte forespørselen, men destinasjonen avviste denne utgående IP-adressen), nullstille proxyens rekke av påfølgende feil, på samme måte som en sonde som ble betjent. Av som standard: En avvisning forblir nøytral og beholder rekken. En 5xx forblir ikke-konkluderende i begge tilfeller, og en avvisning fjerner, deaktiverer eller reaktiverer aldri en proxy.", "sidebar": { "home": "Hjem", "dashboard": "Dashbord", "providers": "Leverandører", - "combos": "Combos", + "combos": "Kombinasjoner", "usage": "Bruk", - "analytics": "Analytics", + "analytics": "Analyse", "costs": "Kostnader", "health": "Helse", "proxy": "Proxy", @@ -1012,11 +1012,11 @@ "settings": "Innstillinger", "translator": "Oversetter", "playground": "Lekeplass", - "searchTools": "Search Tools", + "searchTools": "Søkeverktøy", "agents": "Agenter", "cloudAgents": "Skyagenter", - "memory": "Memory", - "skills": "Skills", + "memory": "Minne", + "skills": "Ferdigheter", "omniSkills": "OmniSkills", "agentSkills": "Agentferdigheter", "chaosConfig": "Kaosmodus", @@ -1029,7 +1029,7 @@ "embeddedServices": "Innebygde tjenester", "embeddedServicesSubtitle": "Administrer lokale proxytjenester", "logs": "Logger", - "webhooks": "Webhooks", + "webhooks": "Webhooker", "webhooksSubtitle": "Bli varslet om hendelser", "logExport": "Loggeksport", "logExportSubtitle": "Send kallelogger ut", @@ -1055,64 +1055,64 @@ "serverDisconnectedMsg": "Proxy-serveren er stoppet eller starter på nytt.", "expandSidebar": "Utvid sidefeltet", "collapseSidebar": "Skjul sidefeltet", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", + "themes": "Temaer", + "presetColors": "Populære farger", + "createTheme": "Opprett tema", + "chooseColor": "Velg én farge", + "themeCoral": "Korall", + "themeBlue": "Blå", + "themeRed": "Rød", + "themeGreen": "Grønn", + "themeViolet": "Fiolett", + "themeOrange": "Oransje", "themeCyan": "Cyan", "cliToolsShort": "Verktøy", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Batchjobber", + "themeSystem": "Temasystem", + "whitelabelingDesc": "Beskrivelse av hvitmerking", + "switchThemes": "Bytt tema", + "themeAccentDesc": "Beskrivelse av temaets aksentfarge", + "uploadFavicon": "Last opp favicon", + "themeDark": "Mørkt tema", + "customLogoDesc": "Beskrivelse av egendefinert logo", + "sidebarVisibilityToggle": "Veksle synlighet for sidefelt", + "themeAccent": "Temaets aksentfarge", + "resetFavicon": "Tilbakestill favicon", + "whitelabeling": "Egen profilering", + "darkMode": "Mørk modus", + "uploadLogo": "Last opp logo", + "themeLight": "Lyst tema", + "appName": "Appnavn", + "appNameDesc": "Beskrivelse av appnavn", + "resetLogo": "Tilbakestill logo", + "customFavicon": "Egendefinert favicon", + "hideHealthLogs": "Skjul helselogger", + "customLogo": "Egendefinert logo", + "appearance": "Utseende", + "themeSelectionAria": "ARIA-etikett for temavalg", + "themeCreate": "Opprett tema", + "customFaviconDesc": "Beskrivelse av egendefinert favicon", + "logoPreview": "Forhåndsvisning av logo", + "themeCustom": "Egendefinert tema", + "hideHealthLogsDesc": "Beskrivelse av skjuling av helselogger", + "faviconPreview": "Forhåndsvisning av favicon", + "changelog": "Endringslogg", + "contextSection": "Kontekst og hurtigbuffer", + "contextCaveman": "Huleboer", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Motorkombinasjoner", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Komprimeringsinnstillinger", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Kombinasjonsstudio", "combosLiveSubtitle": "Direkte rutingkaskade", "compressionStudio": "Compression Studio", "compressionExclusions": "Unntak", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Direkte motorkaskade", "compressionExclusionsSubtitle": "Per-modell/endpoint omgåelse", "chaosConfigSubtitle": "Parallellkjøring av flere modeller", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Ruting", + "protocolsSection": "Protokoller", + "agentsAiSection": "Agenter og KI", + "cacheContextSection": "Hurtigbuffer og kontekst", + "analyticsSection": "Analyse", + "costsSection": "Kostnader", + "monitoringSection": "Overvåking", + "auditSecuritySection": "Revisjon og sikkerhet", + "devtoolsSection": "Utviklerverktøy", + "configurationSection": "Konfigurasjon", + "aiFeaturesSection": "KI-funksjoner", "mcp": "MCP", "a2a": "A2A", - "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "plugins": "Programtillegg", + "apiEndpoints": "API-endepunkter", + "batchFiles": "Filer", + "analyticsEvals": "Evalueringer", + "analyticsSearch": "Søk", + "analyticsUtilization": "Utnyttelse", + "analyticsComboHealth": "Kombinasjonsstatus", + "analyticsCompression": "Komprimering", + "costsBudget": "Budsjett", "costsFreeTiers": "Budsjett for gratisnivå", "costsFreeTiersSubtitle": "Månedlige gratiskvoter for tokener", "freeProviderRankings": "Rangering av gratisleverandører", "freeProviderRankingsSubtitle": "Beste gratisleverandører rangert etter modellens ELO-poengsum", "radar": "Radar Katalog", "radarSubtitle": "Fellesskapsberiket gratis modellkatalog", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Kvotedeling", + "costsPricing": "Priser", + "logsProxy": "Proxy-logger", + "logsConsole": "Konsoll", + "logsActivity": "Aktivitet", + "auditMcp": "MCP-revisjon", "auditA2a": "A2A revisjon", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Utseende", + "settingsAi": "KI-innstillinger", + "settingsSecurity": "Sikkerhet", "settingsAccessTokens": "Tilgangstokener", "settingsFeatureFlags": "Funksjonsflagg", - "settingsCache": "Cache", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsCache": "Hurtigbuffer", + "settingsAuthz": "Autorisasjon", + "settingsRouting": "Ruting", + "settingsResilience": "Robusthet", "modelLockout": "Modellsperre", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Avansert", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Leverandørkvote", + "providerQuota": "Leverandørkvote", + "runtime": "Kjøremiljø", + "consoleLogs": "Konsollogger", + "logsTimeline": "Tidslinje", "logsTimelineSubtitle": "Visuell forespørselstidslinje", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Samtaler", + "conversationsSubtitle": "Agentbaserte samtaler med flere runder", + "globalRouting": "Global ruting", + "mitmProxy": "MITM-proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Agentbaserte funksjoner", + "otherFeaturesSection": "Andre funksjoner", + "compressionContextGroup": "Kontekstkomprimering", + "gamificationGroup": "Spillifisering", + "toolsGroup": "Verktøy", + "integrationsGroup": "Integrasjoner", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "costsParametersGroup": "Kostnadsparametere", + "auditGroup": "Revisjon", + "batchGroup": "Gruppebehandling", + "homeSubtitle": "Oversikt over kontrollpanelet", + "providersSubtitle": "Administrer AI-leverandører", + "quotaTrackerSubtitle": "Spor bruksgrenser", + "providerQuotaSubtitle": "Spor leverandørenes bruksgrenser", + "runtimeSubtitle": "Robusthet og økter i sanntid", + "contextCombosSubtitle": "Kombiner komprimeringsmotorer", + "cliToolsSubtitle": "Konfigurer CLI-kjøremiljøer", + "agentsSubtitle": "Administrer lokale agenter", + "cloudAgentsSubtitle": "Administrer skybaserte agenter", + "apiEndpointsSubtitle": "Tilgjengeliggjør egendefinerte endepunkter", + "proxySubtitle": "HTTP-proxyinnstillinger", + "mitmProxySubtitle": "MITM-avskjæring", + "oneProxySubtitle": "Offentlig proxy-gateway", + "leaderboard": "Resultatliste", + "profile": "Profil", + "tokens": "Tokener", + "gamificationAdmin": "Administrasjon av spillifisering", + "leaderboardSubtitle": "Rangeringer og prestasjoner", + "profileSubtitle": "Konto og innstillinger", + "tokensSubtitle": "Tokenbruk og budsjetter", + "gamificationAdminSubtitle": "Overvåking av avvik og beskyttelse mot juks", + "usageSubtitle": "Trafikk- og bruksstatistikk", + "analyticsComboHealthSubtitle": "Pålitelighet for kombinasjonsmål", + "analyticsUtilizationSubtitle": "Leverandørutnyttelse", + "costsSubtitle": "Kostnadsfordeling", + "cacheSubtitle": "Treffrater for hurtigbuffer", + "analyticsCompressionSubtitle": "Statistikk over tokenbesparelser", + "analyticsSearchSubtitle": "Analyse av søkeverktøy", + "analyticsEvalsSubtitle": "Resultater fra evalueringspakke", "providerStats": "Leverandørstatistikk", "providerStatsSubtitle": "Latens- og ytelsesmetrikker", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Applikasjonslogger", + "logsProxySubtitle": "Logger for proxytrafikk", + "consoleLogsSubtitle": "Konsollutdata", + "logsActivitySubtitle": "Brukeraktivitetslogg", + "healthSubtitle": "Systemhelsesjekk", + "costsPricingSubtitle": "Prisregler per modell", + "costsBudgetSubtitle": "Budsjettgrenser", + "costsQuotaShareSubtitle": "Del leverandørkvoter mellom nøkler", + "auditLogSubtitle": "Autorisasjonsrevisjon", + "auditMcpSubtitle": "Revisjon av MCP-server", + "auditA2aSubtitle": "Revisjon av A2A-protokoll", + "translatorSubtitle": "Formatkonvertering", + "playgroundSubtitle": "Test ledetekster direkte", + "searchToolsSubtitle": "Register over søkeverktøy", + "memorySubtitle": "Permanent agentminne", + "omniSkillsSubtitle": "Register over sandkasseferdigheter", + "agentSkillsSubtitle": "Register over A2A-ferdigheter", + "mcpSubtitle": "Kontroller for MCP-server", + "a2aSubtitle": "A2A-protokollserver", "pluginsSubtitle": "Markedsplass og installasjoner for plugins", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Mellomlagrede mediefiler", + "batchFilesSubtitle": "Filer for satsvis inn- og utdata", + "settingsSubtitle": "Alle innstillinger", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Tema og oppsett", + "settingsAiSubtitle": "Standardinnstillinger for AI-atferd", + "globalRoutingSubtitle": "Globale rutingsregler", + "settingsResilienceSubtitle": "Nye forsøk og strømbrytere", + "settingsAdvancedSubtitle": "Alternativer for avanserte brukere", + "settingsSecuritySubtitle": "Autentisering og kryptering", "settingsAccessTokensSubtitle": "Avgrensede CLI-tokener for fjernmodus", "settingsFeatureFlagsSubtitle": "Bytt systemfunksjoner", "settingsCacheSubtitle": "Modellkatalog og responsbufring", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Sidefelt", + "settingsSidebarSubtitle": "Tilpass oppsettet for sidefeltet", "settingsAuthzSubtitle": "Rutebeholdning og omgåelsespolicy", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Dokumentasjon", + "issuesSubtitle": "Rapporter en feil", + "changelogSubtitle": "Versjonsmerknader", "costsQuotaPlans": "Abonnementer og kvoter", "costsQuotaPlansSubtitle": "Konfigurer abonnementer etter leverandør", "activity": "Aktivitet", @@ -1275,11 +1275,11 @@ "systemGroup": "System", "costsOverview": "Oversikt", "costsOverviewSubtitle": "Konsolidert kostnadsanalyse", - "agentBridge": "Agent Bridge", + "agentBridge": "Agentbro", "agentBridgeSubtitle": "Avskjær IDE-agenttrafikk", "trafficInspector": "Trafikkinspektør", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Inspiser forespørsels- og svartrafikk fra appene dine", + "trafficInspectorPurpose": "Se nøyaktig hva applikasjonen din sender til og mottar fra AI-leverandører. Fungerer med alle OpenAI-kompatible klienter.", "cliCode": "CLI-kode", "cliCodeSubtitle": "Kodeverktøy som peker til OmniRoute", "cliAgents": "CLI-agenter", @@ -1304,7 +1304,7 @@ "orchestrationSubtitle": "Direktevisning av alt som kjører", "resilienceConnections": "Tilkoblingsresiliens", "resilienceConnectionsSubtitle": "Cooldown, bryter, lockout-status", - "settingsModalityBridge": "Modality Bridge", + "settingsModalityBridge": "Modalitetsbro", "settingsModalityBridgeSubtitle": "Bilde/lyd → tekst fallback for tekstbare modeller", "commandPalette": { "title": "Kommando palett", @@ -1318,7 +1318,7 @@ "noResults": "Ingen resultater" }, "webhooks": { - "title": "Webhooks", + "title": "Webhooker", "description": "Konfigurer HTTP-tilbakekalling for systemhendelser.", "configuredWebhooks": "Konfigurerte Webhooks", "configuredWebhooksDesc": "Administrer leveringsendepunkter, abonnerte hendelser, status og testsendinger.", @@ -1327,7 +1327,7 @@ "name": "Navn", "namePlaceholder": "Produksjonsovervåking", "unnamedWebhook": "Unavngitt webhook", - "url": "Endpoint URL", + "url": "Endepunkt-URL", "events": "Hendelser", "allEvents": "Alle arrangementer", "secret": "Hemmelig", @@ -1345,7 +1345,7 @@ "refresh": "Oppdater", "loading": "Laster inn webhooks...", "never": "Aldri", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {ingen feil} one {# feil} other {# feil}}", "testWebhook": "Send test", "testSuccess": "Test webhook sendt.", "testFailed": "Test webhook mislyktes.", @@ -1461,7 +1461,7 @@ "eventTypePlaceholder": "Filtrer etter handling eller hendelsestype", "severity": "Alvorlighetsgrad", "allSeverities": "Alle alvorlighetsgrader", - "info": "Info", + "info": "Informasjon", "warning": "Advarsel", "critical": "Kritisk", "sourceIp": "Kilde IP", @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "Topp verktøy" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "Temaer", + "description": "Velg et forhåndsinnstilt tema, eller lag ditt eget med én enkelt farge", + "presetColors": "Populære farger", + "customTheme": "Egendefinert tema", + "customThemeDesc": "Klikk på «Opprett tema» og velg én farge", + "createTheme": "Opprett tema", + "activePreset": "Aktivt tema" }, "header": { "logout": "Logg ut", @@ -1581,73 +1581,73 @@ "language": "Språk", "providers": "Leverandører", "providerDescription": "Administrer AI-leverandørtilkoblingene dine", - "combos": "Combos", + "combos": "Kombinasjoner", "comboDescription": "Modellkombinasjoner med fallback", "usage": "Bruk og analyse", "usageDescription": "Overvåk API-bruken din, tokenforbruk og forespørselslogger", - "analytics": "Analytics", + "analytics": "Analyse", "analyticsDescription": "Diagrammer, trender og evalueringsinnsikt", "cliTools": "CLI-verktøy", "cliToolsDescription": "Konfigurer CLI-verktøy", "home": "Hjem", "homeDescription": "Velkommen til OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Endepunkter", + "endpointDescription": "Administrer proxy-endepunkter, MCP-, A2A- og API-endepunkter", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Administrasjon av Model Context Protocol-servere og -verktøy", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Agent-to-Agent-protokolloppgaver og observerbarhet", "settings": "Innstillinger", "settingsDescription": "Administrer dine preferanser", "openaiCompatible": "OpenAI-kompatibel", "anthropicCompatible": "Antropisk kompatibel", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "media": "Medier", + "mediaDescription": "Generer bilder, videoer og musikk", + "themes": "Temaer", + "themesDescription": "Velg et fargetema for hele dashbordpanelet", + "costsDescription": "Spor kostnader, analyser trender og administrer AI-budsjettet ditt på tvers av alle leverandører", + "cacheDescription": "Overvåk effektiviteten til leverandørenes hurtigbuffer for prompter og lokal semantisk gjenbruk av svar.", + "limitsDescription": "Konfigurer hastighetsgrenser og kvoter per API-nøkkel og leverandør", + "runtimeDescription": "Observerbarhet av kjøretid i sanntid — effektbrytere, nedkjølingsperioder, modellsperrer, økter og kvotevarsler", + "apiManagerDescription": "Administrer API-nøkler og tilgangskontroll for OmniRoute-instansen din", + "batchDescription": "Behandle store mengder forespørsler asynkront med grupperte API-kall", + "contextCavemanDescription": "Regelbasert meldingskomprimering, språkpakker, analyse og kontroll av utdatamodus.", + "contextRtkDescription": "Kommandobevisst komprimering av verktøyutdata, terminallogger og byggeresultater.", + "contextCombosDescription": "Definer hvordan motorer kombineres for ulike rutingsscenarioer.", + "changelogDescription": "Hold deg oppdatert på de nyeste plattformfunksjonene og kunngjøringene.", + "agentsDescription": "Administrer og konfigurer AI-agentverktøy: Codex, Devin, Jules og egendefinerte agenter", + "cloudAgentsDescription": "Orkestrer skybaserte AI-agenter med oppgavesporing i sanntid og plangodkjenning", + "memoryDescription": "Vedvarende samtaleminne med semantisk søk og FTS5-fulltekstindeksering", + "skillsDescription": "Installer og administrer sandkasseferdigheter for automatisert kjøring av ledetekster og verktøy", + "agentSkillsDescription": "Agentklart ferdighetsbibliotek med ettklikkskopiering av URL for integrasjon med AI-klienter", + "translatorDescription": "Oversett og test ledetekster på tvers av API-formater: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Test ledetekster interaktivt med leverandørsvar i sanntid og formatinspeksjon", + "searchToolsDescription": "Søkeanalyse, leverandørfordeling, treffrater for hurtigbuffer og kostnadssporing", + "logsDescription": "Forespørselslogger i sanntid, feilsporing og inspektør for strømmehendelser", + "auditDescription": "Samsvarsrevisjonsspor for bruk av API-nøkler, MCP-verktøykall og policyhendelser", + "webhooksDescription": "Konfigurer webhook-endepunkter for å motta hendelsesvarsler i sanntid", + "healthDescription": "Oversikt over systemtilstand: leverandører, effektbrytere, hastighetsgrenser og database", + "proxyDescription": "Konfigurer innstillinger for oppstrøms proxy for utgående leverandørtilkoblinger", + "apiEndpointsDescription": "Administrer egendefinerte API-endepunktkonfigurasjoner og overstyringer av ruting", + "batchFilesDescription": "Bla gjennom og administrer utdatafiler og resultater fra batchjobber", + "analyticsEvalsDescription": "Resultater fra modellevaluering og ytelsesreferanser", + "analyticsSearchDescription": "Analyse av søkespørringer, treffrater for hurtigbuffer og kostnadssporing", + "analyticsUtilizationDescription": "Målinger av leverandørutnyttelse og kapasitetsplanlegging", + "analyticsComboHealthDescription": "Tilstand og ytelse i sanntid for konfigurasjoner av kombinasjonsruting", + "analyticsCompressionDescription": "Analyse av kontekstkomprimering og tokenbesparelser", + "costsBudgetDescription": "Budsjettgrenser og forbruksvarsler per API-nøkkel og leverandør", + "costsPricingDescription": "Egendefinert priskonfigurasjon for beregning av tokenkostnader", + "logsProxyDescription": "Forespørselslogger for oppstrøms proxy og trafikkinspeksjon", + "logsConsoleDescription": "Utdata fra applikasjonskonsollen og feilsøkingslogger", + "logsActivityDescription": "Revisjonsspor for brukerhandlinger og systemhendelser", + "auditMcpDescription": "Revisjonsspor og samsvarsregistre for kall til MCP-verktøy", "auditA2a": "A2A revisjon", "auditA2aDescription": "Revisjonsspor for A2A-oppgaveutførelse, tilstandsoverganger og registreringer av ferdighetsanrop", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Tema, profilering og visuell tilpasning", + "settingsAiDescription": "AI-atferd, tenkebudsjetter, syns- og minneinnstillinger", "settingsCacheDescription": "TTL for modellkatalog cacheoppføringer", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Innstillinger for autentisering, autorisasjon og tilgangskontroll", "featureFlags": "Funksjonsflagg", "featureFlagsDescription": "Kontrollsystemfunksjoner og eksperimentelle funksjoner", "featureFlagsActive": "{count} aktiv", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Ingen flagg samsvarer med søket ditt", "featureFlagsSaved": "Flagget er oppdatert", "featureFlagsError": "Kunne ikke oppdatere flagget", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Rutingsregler, modellaliaser, standardinnstillinger for kombinasjoner og degraderingsinnstillinger", + "settingsResilienceDescription": "Konfigurasjon av kretsbryter, nye forsøk og reserveløsning", + "settingsAdvancedDescription": "Avanserte nyttelastregler, forespørselsgrenser og API-innstillinger for proxy", + "mitmProxyDescription": "Konfigurer MITM-proxyinnstillinger for inspeksjon og feilsøking av trafikk", + "oneProxyDescription": "Konfigurer 1Proxy-innstillinger for avansert proxykjeding", "omniSkillsDescription": "Installer og administrer sandkasseferdigheter for automatisert prompt- og verktøykjøring" }, "cloudSyncStatus": { @@ -1725,7 +1725,7 @@ "costs": "Kostnader", "health": "Helse", "runtime": "Kjøretid", - "webhooks": "Webhooks", + "webhooks": "Webhooker", "home": "Hjem", "activity": "Aktivitet", "agentSkills": "AgentSkills", @@ -1762,7 +1762,7 @@ "discovery": "Oppdagelse", "freeProviderRankings": "Rangering av gratisleverandører", "radar": "Radar", - "setup": "Setup", + "setup": "Oppsett", "freeTiers": "Gratisnivåer", "gamification": "Spillifisering", "leaderboard": "Ledertavle", @@ -1776,7 +1776,7 @@ "searchTools": "Søkeverktøy", "security": "Sikkerhet", "sidebar": "Sidefelt", - "tokens": "Tokens", + "tokens": "Tokener", "tools": "Verktøy", "agentBridge": "Agentbro", "trafficInspector": "Trafikkinspektør", @@ -1812,7 +1812,7 @@ "reportIssue": "Rapporter problem", "activeError": "{active} aktiv · {errors} feil", "topologyLegendActive": "Aktiv", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Nylige", "topologyLegendError": "Feil", "oauthLabel": "OAuth", "apiKeyLabel": "API-nøkkel", @@ -1826,11 +1826,11 @@ "updateStarted": "Oppdatering startet...", "reloadingPageAutomatically": "Laster siden automatisk på nytt...", "providerTopology": "Leverandørtopologi", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Nylige forespørsler", + "recentRequestsEmpty": "Ingen forespørsler ennå.", + "recentRequestsModel": "Modell", + "recentRequestsTokens": "Inn / ut", + "recentRequestsWhen": "Når", "downloadDmg": "Last ned DMG (macOS)", "downloadDmgDescription": "En ny versjon av OmniRoute skrivebordsappen er tilgjengelig. Vennligst last ned og installer macOS DMG-installasjonsprogrammet for å oppdatere (nåværende: v{version}).", "downloadExe": "Last ned EXE (Windows)", @@ -1888,18 +1888,18 @@ "releaseNotes": "Utgivelsesnotater", "readMore": "Les Mer", "noAuthLabel": "Ingen autentisering", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Gjør deg klar til å rute", + "readinessTitle": "Send din første forespørsel", + "readinessSubtitle": "Fire enkle trinn. OmniRoute kontrollerer at alt er klart underveis.", + "readinessStep1": "Koble til en leverandør", + "readinessStep2": "Konfigurer endepunktsautentisering", + "readinessStep3": "Kopier endepunktet ditt", + "readinessStep4": "Send en testforespørsel", + "readinessContinue": "Fortsett oppsettet", + "readinessDismiss": "Avvis inntil videre" }, "analytics": { - "title": "Analytics", + "title": "Analyse", "usageAnalyticsTitle": "Bruksanalyse", "diversityScoreTitle": "Leverandørmangfold", "diversityScoreDesc": "Øyeblikksbilde av leverandørkonsentrasjon for det nylige trafikkvinduet.", @@ -1928,13 +1928,13 @@ "chartNoData": "Ingen data", "chartWeekly": "Ukentlig", "activitySummary": "{active} aktive dager · {tokens} tokens · {days} dager", - "activityCellTitle": "{date}: {tokens} tokens", + "activityCellTitle": "{date}: {tokens} tokener", "activityLess": "Mindre", "activityMore": "Mer", "chartApiKeyBreakdown": "API-nøkkelfordeling", "chartApiKey": "API-nøkkel", "mostActiveDay": "Mest aktive dag", - "datedTokenCount": "{date} · {tokens} tokens", + "datedTokenCount": "{date} · {tokens} tokener", "noDataLast7Days": "Ingen data de siste 7 dagene", "requestTokenSummary": "{requests} forespørsler · {tokens} tokens", "chartByAccount": "Per konto", @@ -1963,11 +1963,11 @@ "rangeCancel": "Avbryt", "rangeApply": "Bruk", "rangeErrorInvalid": "Start må være før slutt", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1 d", + "period7D": "7 d", + "period30D": "30 d", + "period90D": "90 d", + "periodYTD": "Hittil i år", "periodAll": "Alle", "totalTokens": "Totale tokens", "inputTokens": "Inndata-tokens", @@ -1993,7 +1993,7 @@ "overviewDescription": "Overvåk API-bruksmønstre, tokenforbruk, kostnader og aktivitetstrender på tvers av alle leverandører og modeller.", "evalsDescription": "Kjør evalueringspakker for å teste og validere LLM-endepunktene dine. Sammenlign modellkvalitet, registrer regresjoner og benchmark latens.", "overview": "Oversikt", - "evals": "Evals", + "evals": "Evalueringer", "search": "Søk", "utilization": "Utnyttelse", "routeTrace": "Rutesporing", @@ -2005,8 +2005,8 @@ "modelStatusError": "Feil", "comboHealth": "Kombohelse", "comboHealthDescription": "Kombonivåkvote, bruksfordeling og ytelsesmålinger", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Komprimeringsanalyse", + "compressionAnalyticsDescription": "Komprimeringsanalyse – tokenbesparelser, modusfordeling og leverandørstatistikk.", "autoRoutingTotalAutoRequests": "Totalt antall automatiske forespørsler", "autoRoutingAvgSelectionScore": "Gjennomsnittlig utvalgspoeng", "autoRoutingExplorationRate": "Utforskningshastighet", @@ -2018,7 +2018,7 @@ "comboHealthSuccessRate": "Suksessrate", "comboHealthQuotaHealth": "Kvote helse", "comboHealthRequests": "Forespørsler", - "comboHealthTokens": "Tokens", + "comboHealthTokens": "Tokener", "comboHealthAvgLatency": "Gjennomsnittlig ventetid", "comboHealthTotalRequests": "Totalt antall forespørsler", "comboHealthExecutionTargets": "Gjennomføringsmål", @@ -2104,7 +2104,7 @@ "comboHealthStepCreate": "Opprett kombinasjoner i Kombinasjoner med flere leverandører", "comboHealthStepSend": "Send forespørsler til kombinasjonsendepunkter for å generere trafikkdata", "comboHealthStepAutomatic": "Helseberegninger vil vises automatisk etter hvert som forespørsler rutes", - "comboHealthTracking": "Tracking {count} combos for {range}", + "comboHealthTracking": "Sporer {count} kombinasjoner for {range}", "compressionAnalyticsTotalRequests": "Totalt antall forespørsler", "compressionAnalyticsTokensSaved": "Tokens lagret", "compressionAnalyticsAvgSavings": "Gj.sn. besparelser", @@ -2114,28 +2114,28 @@ "compressionAnalyticsPromptTokens": "Spør tokens", "compressionAnalyticsCompletionTokens": "Fullføringssymboler", "compressionAnalyticsTotalTokens": "Totalt tokens", - "compressionAnalyticsCacheTokens": "Cache tokens", + "compressionAnalyticsCacheTokens": "Bufrede tokener", "compressionAnalyticsNoDataYet": "Ingen komprimeringsdata ennå", - "compressionAnalyticsLoading": "Loading compression analytics…", - "compressionAnalyticsNoDataDescription": "Compression requests will appear here after the first request through /v1/chat/completions with compression enabled.", - "rangeLast24h": "Last 24h", - "rangeLast7d": "Last 7d", - "rangeLast30d": "Last 30d", - "rangeAllTime": "All time", - "compressionAnalyticsModeStats": "{count} requests · {tokens} tokens saved", - "compressionAnalyticsSkipped": " · {count} skipped (no-op)", - "compressionAnalyticsRealTokens": "{count} real tokens", - "compressionAnalyticsValidationRestores": "validation restores", - "compressionAnalyticsRealUsageReceipts": "Real Usage Receipts", - "compressionAnalyticsSources": "Sources", - "compressionAnalyticsModeBreakdown": "Mode Breakdown", - "compressionAnalyticsProviderBreakdown": "Provider Breakdown", - "compressionAnalyticsLast24HoursActivity": "Last 24 Hours (Activity)", - "compressionAnalyticsChartPoint": "{hour}: {count} requests, {tokens} tokens saved", - "compressionAnalyticsMaxRequests": "Max requests/hour: {count}", - "compressionAnalyticsMaxTokens": "Max tokens/hour: {count}", - "compressionAnalyticsStartTracking": "Use POST /v1/chat/completions with compression configuration to start tracking compression analytics.", - "compressionAnalyticsInfo": "Compression analytics: Token savings tracked per mode (off, lite, standard, aggressive, ultra, RTK, stacked), engine, compression combo, and provider. Hover over charts for details. Use the time selector to view different time periods.", + "compressionAnalyticsLoading": "Laster inn komprimeringsanalyse …", + "compressionAnalyticsNoDataDescription": "Komprimeringsforespørsler vises her etter den første forespørselen via /v1/chat/completions med komprimering aktivert.", + "rangeLast24h": "Siste 24 t", + "rangeLast7d": "Siste 7 d", + "rangeLast30d": "Siste 30 d", + "rangeAllTime": "Hele perioden", + "compressionAnalyticsModeStats": "{count} forespørsler · {tokens} tokener spart", + "compressionAnalyticsSkipped": "· {count} hoppet over (ingen effekt)", + "compressionAnalyticsRealTokens": "{count} faktiske tokener", + "compressionAnalyticsValidationRestores": "valideringsgjenopprettinger", + "compressionAnalyticsRealUsageReceipts": "Kvitteringer for faktisk bruk", + "compressionAnalyticsSources": "Kilder", + "compressionAnalyticsModeBreakdown": "Modusfordeling", + "compressionAnalyticsProviderBreakdown": "Leverandørfordeling", + "compressionAnalyticsLast24HoursActivity": "Siste 24 timer (aktivitet)", + "compressionAnalyticsChartPoint": "{hour}: {count} forespørsler, {tokens} tokener spart", + "compressionAnalyticsMaxRequests": "Maks. forespørsler/time: {count}", + "compressionAnalyticsMaxTokens": "Maks. tokener/time: {count}", + "compressionAnalyticsStartTracking": "Bruk POST /v1/chat/completions med komprimeringskonfigurasjon for å begynne å spore komprimeringsanalyse.", + "compressionAnalyticsInfo": "Komprimeringsanalyse: Tokenbesparelser spores per modus (off, lite, standard, aggressive, ultra, RTK, stacked), motor, komprimeringskombinasjon og leverandør. Hold pekeren over diagrammene for detaljer. Bruk tidsvelgeren for å vise ulike tidsperioder.", "searchAnalyticsTotalSearches": "Totalt antall søk", "searchAnalyticsCacheHitRate": "Hurtigbuffertrefffrekvens", "searchAnalyticsTotalCost": "Total kostnad", @@ -2148,26 +2148,26 @@ "providerUtilizationLatestSnapshot": "Siste øyeblikksbilde av kvoten", "providerUtilizationRemainingCapacity": "Gjenværende kapasitet", "utilizationRange": { - "1h": "Last hour", - "24h": "Last 24 hours", - "7d": "Last 7 days", - "30d": "Last 30 days" + "1h": "Siste time", + "24h": "Siste 24 timer", + "7d": "Siste 7 dager", + "30d": "Siste 30 dager" }, - "providerUtilizationGlobalView": "Global View", - "providerUtilizationAccountSplit": "Account Split", - "providerUtilizationLoading": "Loading utilization data…", - "retrying": "Retrying…", - "retry": "Retry", - "providerUtilizationNoDataDescription": "Provider quota snapshots will appear here after utilization data is collected.", - "providerUtilizationStepConnect": "Connect providers through OAuth or API keys in Providers", - "providerUtilizationStepEnable": "Enable quota tracking by using the provider in a combo or direct request", - "providerUtilizationStepAutomatic": "Data will appear automatically as quota snapshots are collected", - "statusExhausted": "Exhausted", - "statusLow": "Low", - "statusHealthy": "Healthy", - "remainingQuota": "Remaining quota", - "routeTraceTitle": "Route Trace View", - "routeTraceDescription": "Inspect the persisted request trace: selected target, routing factors, fallback evidence, current scoring replay, latency, tokens and target health.", + "providerUtilizationGlobalView": "Global visning", + "providerUtilizationAccountSplit": "Kontofordeling", + "providerUtilizationLoading": "Laster inn utnyttelsesdata …", + "retrying": "Prøver på nytt …", + "retry": "Prøv på nytt", + "providerUtilizationNoDataDescription": "Øyeblikksbilder av leverandørkvoter vises her etter at utnyttelsesdata er samlet inn.", + "providerUtilizationStepConnect": "Koble til leverandører via OAuth eller API-nøkler i Leverandører", + "providerUtilizationStepEnable": "Aktiver kvotesporing ved å bruke leverandøren i en kombinasjon eller direkte forespørsel", + "providerUtilizationStepAutomatic": "Data vises automatisk etter hvert som kvoteøyeblikksbilder samles inn", + "statusExhausted": "Oppbrukt", + "statusLow": "Lav", + "statusHealthy": "God", + "remainingQuota": "Gjenværende kvote", + "routeTraceTitle": "Visning av rutesporing", + "routeTraceDescription": "Inspiser det lagrede forespørselssporet: valgt mål, rutingsfaktorer, dokumentasjon på reserveløsning, gjeldende poengberegning, ventetid, tokens og målstatus.", "routeTraceRequestLog": "Forespørselslogg", "routeWeight": "Vekt {weight}%", "routeNoRelatedEvidence": "Ingen relaterte målbevis er lagret ennå.", @@ -2209,7 +2209,7 @@ "connection": "Tilkobling", "combo": "Kombi", "routeStep": "Trinn", - "tokens": "Tokens", + "tokens": "Tokener", "notAvailable": "i/t", "routeTokenCounts": "{input} inn · {output} ut", "routeEvidence": "Bevis", @@ -2256,11 +2256,11 @@ "selectedModels": "Utvalgte modeller", "readOnly": "Kun lesetilgang", "fullAccess": "Full tilgang", - "keyManagement": "API Key Management", + "keyManagement": "Administrasjon av API-nøkler", "keyManagementDesc": "Opprett og administrer API-nøkler for autentisering av forespørsler til endepunktet ditt", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Appen din sender forespørsler til OmniRoute via en API-nøkkel", + "requestFlowYourApp": "Appen din", + "requestFlowApiKey": "API-nøkkel", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Totalnøkler", "restricted": "Begrenset", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Kopier og lagre denne nøkkelen nå – den vises ikke igjen.", "done": "Ferdig", "savePermissions": "Lagre tillatelser", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Tillatte endepunkter", + "allEndpointsAllowed": "Denne nøkkelen har tilgang til alle API-endepunkter.", + "endpointsRestricted": "Begrenset til {count} endepunkt{count, plural, one {} other {er}}.", + "autoResolve": "Automatisk løsning", + "autoResolveDesc": "Knytt automatisk tvetydige modellnavn til den opprinnelige leverandøren for denne API-nøkkelen.", "streamDefaultMode": "Standardkompatibilitet for strøm", "streamDefaultModeDesc": "Kontrollerer utelatte `stream`-flagg for denne nøkkelen. JSON-modus returnerer ikke-strømmende svar med mindre klienten eksplisitt ber om SSE.", "streamDefaultLegacy": "Foreldet", "streamDefaultJson": "JSON-kompatibel", "streamDefaultBadge": "Standard for JSON-strøm", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Aktiv nøkkel", + "keyActiveDesc": "Aktiver eller deaktiver denne API-nøkkelen. Deaktiverte nøkler avvises umiddelbart med 403.", + "accessSchedule": "Tilgangsplan", + "accessScheduleDesc": "Begrens tilgangen til bestemte klokkeslett og ukedager.", + "scheduleFrom": "Fra", + "scheduleUntil": "Til", + "scheduleDays": "Dager", + "scheduleTimezone": "Tidssone", + "scheduleTimezoneHint": "Bruk IANA-tidssonenavn, f.eks. America/New_York, Europe/Berlin", + "scheduleActive": "Tidsplan", + "disabled": "Deaktivert", + "daySun": "Søn", + "dayMon": "Man", + "dayTue": "Tir", + "dayWed": "Ons", + "dayThu": "Tor", + "dayFri": "Fre", + "daySat": "Lør", "allowAll": "Tillat alle", "restrict": "Begrens", "allowAllInfo": "Denne nøkkelen har tilgang til alle tilgjengelige modeller.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Kunne ikke oppdatere tillatelser. Vennligst prøv igjen.", "unknownProvider": "ukjent", "copyMaskedKey": "Kopier maskert nøkkel", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Hele nøkkelen er bare tilgjengelig når den opprettes – kopier den første gang du oppretter nøkkelen", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# enhet} other {# enheter}}", "devicesTooltip": "{count, plural, one {# unik IP/User-Agent-enhet sett med denne nøkkelen (siste 30 min)} other {# unike IP/User-Agent-enheter sett med denne nøkkelen (siste 30 min)}}", @@ -2382,12 +2382,12 @@ "allowedCombos": "Tillatte kombinasjoner", "allCombosAllowed": "Denne nøkkelen kan bruke alle kombinasjoner.", "restrictedComboCount": "Begrenset til {count, plural, one {# kombinasjon} other {# kombinasjoner}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# lagret oppføring finnes} other {# lagrede oppføringer finnes}} ikke i denne kombinasjonslisten (for eksempel rutingsregler) og beholdes som lagret.", + "preservedComboRuleHint": "Beholdt som lagret. Denne oppføringen er ikke en kombinasjon i listen ovenfor, så den kan bare endres via API-et.", "apiManagerCustomRateLimits": "Egendefinerte satsgrenser", "apiManagerCustomRateLimitsDesc": "Overstyr globale standardgrenser. La stå tomt for å bruke standardinnstillinger.", "apiManagerRateLimitRequestsPlaceholder": "Forespørsler", - "apiManagerRateLimitReqPer": "req /", + "apiManagerRateLimitReqPer": "foresp. /", "apiManagerRateLimitSecondsPlaceholder": "Sekunder", "apiManagerRemoveLimitTitle": "Fjern grensen", "apiManagerTimezonePlaceholder": "Amerika/Sao_Paulo", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Lar denne nøkkelen ignorere oppstrøms leverandør-/kontogrensepolicy under ruting. API-nøkkel USD-kvoter gjelder fortsatt.", "quotaPill": "KVOTE", "quotaModeOnly": "kun qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Eksklusiv leie", + "exclusiveLeaseNoticeTitle": "Eksklusiv leie", + "exclusiveLeaseNoticeDesc": "Denne API-nøkkelen har tillatelse til eksklusiv leie for ruting av dedikerte tilkoblinger.", + "allConnections": "Alle tilkoblinger", + "onlySelectedConnections": "Bare valgte tilkoblinger", + "selectAtLeastOneConnection": "Velg minst én tilkobling, eller velg Alle tilkoblinger.", + "allConnectionsDesc": "Denne nøkkelen kan bruke alle aktive tilkoblinger.", + "restrictedToConnections": "Begrenset til {count, plural, one {# tilkobling} other {# tilkoblinger}}." }, "auditLog": { "title": "Revisjonslogg", @@ -2457,16 +2457,16 @@ "model": "Model", "prompt": "Prompt", "generate": "Generer", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Genererer...", + "loadingModels": "Laster inn tilgjengelige modeller...", + "noModels": "Ingen modeller er tilgjengelige. Konfigurer først leverandører med mediefunksjoner.", + "error": "Generering mislyktes", + "result": "Resultat", + "imageDescription": "Generer bilder fra tekstbeskrivelser med OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI og flere.", + "videoDescription": "Lag videoer med AnimateDiff, Stable Video Diffusion via ComfyUI eller SD WebUI.", + "musicDescription": "Komponer musikk med Stable Audio Open eller MusicGen via ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Innebygging", "image": "Bilde", "imageToText": "Bilde til tekst", "tts": "Tekst til tale", @@ -2531,7 +2531,7 @@ "generateModality": "Generer {modality}", "apiKeyRequired": "API-nøkkel kreves", "configureApiKeys": "Konfigurer API-nøkler i Leverandører", - "downloadFormat": "Download {format}", + "downloadFormat": "Last ned {format}", "noTextReturned": "Ingen tekst returnert", "wordTimestamps": "Tidsstempler på ordnivå ({count} ord)", "providerCount": "{count} leverandører", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter tale-til-tekst modeller bruker din konfigurerte OpenRouter-tilkobling. Ingen separate legitimasjon er nødvendig." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Søkeforespørsel", + "searchResults": "Søkeresultater", + "cachedResult": "Bufret", + "searchCost": "Kostnad", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Avansert søketesting med sammenligning av leverandører", + "compareProviders": "Sammenlign leverandører", + "rerankResults": "Omranger resultater", + "searchHistory": "Søkehistorikk", + "urlOverlap": "URL-overlapping", + "noSearchProviders": "Ingen søkeleverandører er konfigurert. Legg til leverandører i Innstillinger.", + "noRerankModels": "Ingen modell for omrangering er tilgjengelig", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Leverandør", + "searchType": "Søketype", + "maxResults": "Maksimalt antall resultater", + "filters": "Filtre", + "country": "Land", + "language": "Språk", + "timeRange": "Tidsperiode", + "includeDomains": "Inkluder domener", + "excludeDomains": "Ekskluder domener", + "safeSearch": "Sikkert søk", + "safeSearchOff": "Av", + "safeSearchModerate": "Moderat", + "safeSearchStrict": "Strengt", + "queryPlaceholder": "Skriv inn søk...", + "providerAuto": "auto (billigst)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "nyheter", + "optionAny": "alle", + "timeRangeDay": "Siste døgn", + "timeRangeWeek": "Siste uke", + "timeRangeMonth": "Siste måned", + "timeRangeYear": "Siste år", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Forespørselen fikk tidsavbrudd ({seconds}s)", + "networkError": "Nettverksfeil", + "formatted": "Formatert", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "ikke i hurtigbuffer", + "cacheHit": "funnet i hurtigbuffer", + "latency": "Forsinkelse", + "cost": "Kostnad", + "results": "Resultater", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Rerangeringsmodell", + "positionDelta": "Endring i plassering", + "emptyState": "Send et søk for å se resultater", "copy": "Kopier", "resetToDefault": "Tilbakestill til standard", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Søk", + "tabScrape": "Hent innhold", + "tabCompare": "Sammenlign", + "modalitiesGuide": "Veiledning for modaliteter", + "searchConceptTitle": "Søk", + "searchConceptDesc": "Søk = henter en liste over nettresultater (tittel, URL, utdrag, relevanspoeng)", + "scrapeConceptTitle": "Hent innhold", + "scrapeConceptDesc": "Hent innhold = trekker ut alt innholdet fra en URL (markdown, tekst eller HTML)", + "compareConceptTitle": "Sammenlign", + "compareConceptDesc": "Sammenlign = kjører det samme søket hos N leverandører side om side for å sammenligne forsinkelse, kostnad og overlapp mellom resultater", + "rerankConceptTitle": "Omrangering", + "rerankConceptDesc": "Omrangering = endrer rekkefølgen på resultatene via en LLM for å forbedre relevansen basert på søket", + "autoConceptTitle": "Auto (billigst)", + "autoConceptDesc": "Auto (billigst) = velger automatisk den billigste tilgjengelige leverandøren med konfigurerte tilgangsopplysninger", + "providerCatalogTitle": "Leverandørkatalog", + "kindSearch": "Søk", + "kindFetch": "Hent/skrap", + "statusConfigured": "Konfigurert", + "statusMissing": "Ingen tilgangsopplysninger", + "statusRateLimited": "Hastighetsbegrenset", + "configureProvider": "Konfigurer under Leverandører", + "loadingProviders": "Laster inn leverandører…", + "failedToLoadProviders": "Kunne ikke laste inn leverandører", + "costPerQuery": "Kostnad/spørring", + "freeQuota": "Gratis kvote/md.", + "scrapeUrl": "URL som skal skrapes", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL er påkrevd", "scrapeUrlInvalid": "Ugyldig URL — den må starte med http:// eller https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", + "scrapeExtract": "Trekk ut", + "scrapeExtracting": "Trekker ut…", + "scrapeFullPage": "Hele siden", "scrapeFormat": "Format", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", + "formatText": "Tekst", + "scrapePreview": "Forhåndsvisning", + "scrapeRaw": "Rådata", + "scrapeContentTruncated": "(avkortet, vis rådata)", "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "scrapeProvider": "Leverandør", + "scrapeSize": "Størrelse", "scrapeEmptyState": "Oppgi en URL for å hente ut innholdet", "scrapeProvidersAvailable": "Tilgjengelige leverandører: Firecrawl, Jina Reader, Tavily.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", + "compareRun": "Sammenlign", + "compareRunning": "Sammenligner…", + "autoProvider": "Auto (billigst)", + "configuredStatus": "Konfigurert", + "rateLimitedStatus": "Hastighetsbegrenset", + "noCredential": "Ingen tilgangsopplysninger", "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "rerankModelLabel": "Omrangeringsmodell", + "noneOption": "Ingen", + "size": "Størrelse", "configurationPane": "Konfigurasjonspanel", "configuration": "Konfigurasjon", "status": "Status", @@ -2664,7 +2664,7 @@ "httpError": "Feil {status}", "failed": "Mislyktes", "requestFailed": "Forespørsel mislyktes", - "embedding": "Embedding", + "embedding": "Innebygging", "embeddingSample": "Hei, verden!", "image": "Bilde", "imageSample": "Et rolig landskap med fjell ved solnedgang", @@ -2708,7 +2708,7 @@ "classifierCompatLoadFailed": "Kunne ikke laste inn innstilling", "classifierCompatMode": { "off": "Av", - "auto": "Auto", + "auto": "Automatisk", "always": "Alltid" }, "ccDiscoveryInfoButton": "Hvordan aktivere oppdagelse i Claude Code", @@ -2747,7 +2747,7 @@ "modelAliases": "Modellaliaser", "addModel": "Legg til modell", "routeModelPlaceholder": "Rut {model} til...", - "baseUrl": "Base URL", + "baseUrl": "Basis-URL", "apiKey": "API-nøkkel", "configured": "Konfigurert", "notConfigured": "Ikke konfigurert", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Legg til", "antigravityStep2Suffix": "til vertsfilen din som 127.0.0.1.", "antigravityStep3": "3. Åpne Antigravity og forespørsler vil bli fullført.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} sender forespørsler til leverandørens endepunkt. MITM fanger dem opp og omdirigerer dem til OmniRoute.", + "mitmStep1": "1. Start MITM for å rute forespørsler gjennom OmniRoute.", + "mitmStep2Prefix": "2. Legg til", + "mitmStep2Suffix": "i hosts-filen din som 127.0.0.1.", + "mitmStep3": "3. Åpne {toolName}, så sendes forespørslene via proxy.", "sudoPasswordRequiredTitle": "Sudo-passord kreves", "sudoPasswordHint": "Administratorpassord kreves for å endre vertsfil og systemproxyinnstillinger.", "enterSudoPassword": "Skriv inn sudo-passord", @@ -2869,7 +2869,7 @@ "provider": "Leverandør", "model": "Modell", "providers": "Leverandører", - "auth": "Auth", + "auth": "Autentisering", "noApiKeysAvailable": "Ingen API-nøkler tilgjengelig", "usingDefaultOmniroute": "Bruker standard: sk_omniroute", "updateConfig": "Oppdater konfig", @@ -2890,7 +2890,7 @@ "codexAuthNoteMiddle": "med", "codexAuthNoteSuffix": "Klikk \"Bruk\" for å konfigurere automatisk.", "claudeManualConfiguration": "Claude CLI - Manuell konfigurasjon", - "codexManualConfiguration": "Codex CLI - Manual Configuration", + "codexManualConfiguration": "Codex CLI – manuell konfigurasjon", "droidManualConfiguration": "Factory Droid - Manuell konfigurasjon", "openClawManualConfiguration": "Åpne Claw - Manuell konfigurasjon", "clineManualConfiguration": "Cline manuell konfigurasjon", @@ -2908,7 +2908,7 @@ "continue": "Bruk når du kjører Continue i IDEer og du trenger bærbar JSON-basert leverandørkonfigurasjon.", "opencode": "Bruk når du foretrekker terminal-native agentkjøringer og skriptautomatisering via OpenCode.", "kiro": "Brukes når du integrerer Kiro og kontrollerer modellruting sentralt fra OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Bruk dette når du ønsker et KI-fokusert IDE med Codeium/Windsurf-modeller rutet gjennom OmniRoute.", "antigravity": "Brukes når Antigravity/Kiro-trafikk må avskjæres gjennom MITM og rutes til OmniRoute.", "copilot": "Bruk når du vil ha Copilot chat-stil UX mens du håndhever OmniRoute-nøkler og rutingsregler.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2921,18 +2921,18 @@ "claude": "Antropisk Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "xAI Grok Build TUI-kodingsagent med støtte for tilpasset leverandør", - "droid": "Factory Droid AI Assistant", + "droid": "Factory Droid KI-assistent", "openclaw": "Åpne Claw AI Assistant", "cline": "Cline AI-kodingsassistent CLI", "kilo": "Kilokode AI Assistant CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", "continue": "Fortsett AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode KI-kodingsagent (terminal)", + "kiro": "Amazon Kiro – KI-drevet IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "Sourcegraph Amp CLI-kodingsassistent", "hermes": "Hermes AI terminalassistent", "hermes-agent": "Hermes Agent (av Nousresearch) - Avansert terminal-AI med støtte for flere modeller (delegasjon, visjon, komprimering, osv.)", "custom": "Generisk OpenAI-kompatibel CLI- eller SDK-konfigurasjonsgenerator", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter autonom kodingsagent-CLI", "omp": "Oh My Pi terminal-kodingsagent", "letta": "Letta CLI-agent med vedvarende minne og verktøybruk", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent – selvlærende RLM-kodingsverktøy med støtte for OpenAI-kompatible leverandører", "warp": "Warp AI-terminal med støtte for tilpasset leverandør", "agent-deck": "Agent Deck multi-agent-orkestrator", "5dive": "5dive — selvhostet flåte av kodeagenter; én auth-profil peker dem alle mot OmniRoute" @@ -2971,7 +2971,7 @@ "desc": "Aktiver alternativet \"OpenAI API-nøkkel\"." }, "3": { - "title": "Base URL" + "title": "Basis-URL" }, "4": { "title": "API-nøkkel" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Installer OpenCode", + "desc": "Installer via npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API-nøkkel" }, "3": { - "title": "Set Base URL", + "title": "Angi basis-URL", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Velg modell" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Bruk resonneringsvariant", + "desc": "For resonneringsmodeller, kjør med --variant high/low/max (se eksempelkommandoen nedenfor)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Åpne Kiro-innstillinger", + "desc": "Gå til Innstillinger → KI-leverandør" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Basis-URL", + "desc": "Lim inn URL-en til OmniRoute-endepunktet ditt" }, "3": { - "title": "API Key" + "title": "API-nøkkel" }, "4": { - "title": "Select Model" + "title": "Velg modell" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Åpne KI-innstillinger", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Legg til egendefinert leverandør", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Basis-URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API-nøkkel", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Velg modell", + "desc": "Velg en modell fra rullegardinmenyen" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Egendefinert CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Verktøykategorier", "visibleToolsCount": "{count} verktøy tilgjengelig", "customCliBuilderTitle": "OpenAI-kompatibel CLI-bygger", "customCliBuilderDescription": "Generer env vars og JSON-kodebiter for en hvilken som helst CLI eller SDK som godtar en OpenAI-kompatibel basis-URL, API-nøkkel og modell-ID.", @@ -3112,13 +3112,13 @@ "hermesRoleDefaultDesc": "Primær samtalemodell", "hermesRoleDelegation": "Delegering (underagenter)", "hermesRoleDelegationDesc": "Orkestrator- og underagentmodell", - "hermesRoleVision": "Vision", + "hermesRoleVision": "Visjon", "hermesRoleVisionDesc": "Forståelse av bilder og skjermbilder", "hermesRoleCompression": "Komprimering", "hermesRoleCompressionDesc": "Prompt-komprimering og oppsummering", "hermesRoleWebExtract": "Web-uttrekk", "hermesRoleWebExtractDesc": "Uttrekk av nettsideinnhold", - "hermesRoleSkillsHub": "Skills Hub", + "hermesRoleSkillsHub": "Ferdighetssenter", "hermesRoleSkillsHubDesc": "Resonnering for ferdigheter og verktøybruk", "hermesRoleApproval": "Godkjenning", "hermesRoleApprovalDesc": "Sikkerhets- og godkjenningsbeslutninger", @@ -3132,7 +3132,7 @@ "hermesRoleTtsAudioTagsDesc": "Generering av TTS-lydtagger", "hermesRoleTriageSpecifier": "Triage Spesifiserer", "hermesRoleTriageSpecifierDesc": "Spesifikasjon for triage av problemer og PR-er", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Kanban-dekomponering", "hermesRoleKanbanDecomposerDesc": "Kanban oppgaveoppdeling", "hermesRoleProfileDescriber": "Profilbeskriver", "hermesRoleProfileDescriberDesc": "Brukerprofilbeskrivelse", @@ -3159,7 +3159,7 @@ "hermesRolesWillUpdate": "{count, plural, one {# rolle vil bli oppdatert} other {# roller vil bli oppdatert}}", "hermesPreviewPath": "Forhåndsvisning — vil skrive til ~/.hermes/config.yaml", "hermesSaveDescription": "Lagrer den valgte modellen for hver rolle i", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "Konfigurasjonsgenerator for GitHub Copilot", "copilotGeneratorDescriptionPrefix": "Genererer ", "copilotGeneratorDescriptionSuffix": "blokken for VS Code GitHub Copilot ved hjelp av Azure-leverandørmønsteret. Velg modellene du vil ha, og kopier deretter JSON-koden inn i konfigurasjonsfilen din.", "copilotCompatibilityWarning": "Denne konfigurasjonen bruker Azure-leverandøromgåelsen for egendefinerte modellister. Testet med VS Code ≥ 1.109 og GitHub Copilot Chat ≥ v0.37. Fremtidige utvidelsesoppdateringer kan endre denne virkemåten.", @@ -3168,7 +3168,7 @@ "selectAll": "Velg alle", "loadingModels": "Laster inn modeller...", "advancedOptions": "Avanserte alternativer", - "vision": "Vision", + "vision": "Visjon", "copilotCopyConfigForModels": "Kopier konfigurasjon ({count, plural, one {# modell} other {# modeller}})", "copilotFilterModelsPlaceholder": "Filtermodeller...", "copilotMaxInputTokens": "Maks input-tokens", @@ -3177,7 +3177,7 @@ "copilotPasteInto": "Lim inn i:", "copilotReloadInstruction": "Last deretter inn VS Code på nytt og angi API-nøkkelen i inndatafeltet.", "wireApiChatCompletions": "Chatfullføringer (/chat/fullføringer)", - "wireApiResponses": "Responses API (/responses)", + "wireApiResponses": "Svar-API (/responses)", "cliproxyapiActionFailed": "Handling mislyktes", "cliproxyapiActionSucceeded": "Handling fullført", "cliproxyapiCheckUpdates": "Sjekk oppdateringer", @@ -3203,7 +3203,7 @@ "cliproxyapiVersion": "Versjon" }, "combos": { - "title": "Combos", + "title": "Kombinasjoner", "description": "Lag modellkombinasjoner med vektet ruting og reservestøtte", "autoCatalogTitle": "Automatisk rutekatalog", "autoCatalogTemplateCount": "{count} maler", @@ -3260,23 +3260,23 @@ "priorityDesc": "Sekvensiell fallback: prøver modell 1 først, deretter 2 osv.", "weightedDesc": "Fordeler trafikk etter vektprosent med reserve", "roundRobinDesc": "Sirkulær fordeling: hver forespørsel går til neste modell i rotasjon", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Kontekstreleer", + "contextRelayDesc": "Bevarer kontinuiteten i økten med overleveringssammendrag når kontoer roteres", "randomDesc": "Ensartet tilfeldig valg, deretter fallback til gjenværende modeller", "leastUsedDesc": "Velger modellen med færrest forespørsler, og balanserer belastningen over tid", "costOptimizedDesc": "Ruter til den billigste modellen først basert på priser", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Ruter hvert gjenbrukbare ledetekstprefiks konsekvent til den samme leverandørkontoen", + "resetAware": "Tilbakestillingsbevisst round-robin", "resetAwareDesc": "Balanserer gjenværende kvote mot 5 timer og ukentlige tilbakestillinger, og runder deretter lignende resultater", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kvotevektet", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Strengt tilfeldig", + "strictRandomDesc": "Bland kortstokken – bruker hver modell én gang før ny blanding", "fusion": "Fusjon", "fusionDesc": "Sender prompten til alle panelmodeller parallelt, deretter syntetiserer en dommermodell ett endelig svar", "fusionJudgeModel": "Dommermodell", "fusionJudgeModelHelp": "Modell som syntetiserer panelsvarene til ett endelig svar. La stå tom for å bruke den første panelmodellen.", - "fusionMinPanel": "Min panel", + "fusionMinPanel": "Min.-panel", "fusionMinPanelHelp": "Vellykkede panelsvar som kreves før etternølere får en respittperiode (standard 2).", "fusionStragglerGraceMs": "Etternøler-respitt (ms)", "fusionStragglerGraceMsHelp": "Hvor lenge det skal ventes på trege panelmodeller når kvorum er nådd (standard 8000).", @@ -3288,13 +3288,13 @@ "retryDelay": "Forsinkelse på nytt (ms)", "concurrencyPerModel": "Samtidighet / modell", "queueTimeout": "Tidsavbrudd for kø (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Terskel for overlevering", + "contextRelayHandoffThresholdHelp": "Når kvotebruken når denne terskelen, genererer OmniRoute et strukturert overleveringssammendrag før den aktive kontoen er oppbrukt.", + "contextRelayMaxMessages": "Maks. antall meldinger i sammendraget", + "contextRelayMaxMessagesHelp": "Begrenser hvor mye av den nylige historikken som komprimeres i overleveringssammendraget.", + "contextRelaySummaryModel": "Sammendragsmodell", + "contextRelaySummaryModelHelp": "Valgfri overstyringsmodell som kun brukes til å generere overleveringssammendraget. La feltet stå tomt for å gjenbruke den aktive kombinasjonsmodellen.", + "contextRelayProviderNote": "Kontekstreleet genererer for øyeblikket overleveringer ved rotering av Codex-kontoer. Kombiner det med flere kontoer fra samme leverandør for best mulig kontinuitet.", "advancedHint": "La stå tomt for å bruke globale standardinnstillinger. Disse overstyrer innstillingene per leverandør.", "failoverBeforeRetry": "Failover før forsøk på nytt", "maxSetRetries": "Maks innstilte forsøk på nytt", @@ -3322,7 +3322,7 @@ "playgroundStatusError": "Feil", "playgroundStatusUnknown": "Ukjent", "playgroundNetworkError": "Nettverksfeil under simulering", - "playgroundTitle": "Combo Playground", + "playgroundTitle": "Testområde for kombinasjoner", "playgroundDescription": "Simuler hvordan forespørsler vil bli rutet gjennom dine comboer", "playgroundConfiguration": "Konfigurasjon", "playgroundNoCombosConfigured": "Ingen comboer konfigurert", @@ -3344,41 +3344,41 @@ "playgroundCreateFirst": "Opprett en først", "weighted": "Vektet", "leastUsed": "Minst brukt", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "costOpt": "Kostnadsoptimalisering", + "strategyGuideTitle": "Slik bruker du denne strategien", + "strategyGuideWhen": "Når den bør brukes", + "strategyGuideAvoid": "Unngå den når", + "strategyGuideExample": "Eksempel", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "Du har én foretrukket modell og ønsker bare reserve ved feil.", + "avoid": "Du trenger fordeling av forespørsler på tvers av modeller.", + "example": "Primær kodemodell med et rimeligere reservealternativ ved driftsavbrudd." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Du trenger kontrollert fordeling av trafikk på tvers av modeller.", + "avoid": "Du kan ikke opprettholde nøyaktige vektinger over tid.", + "example": "Utrulling med 80 % stabil modell + 20 % kanarimodell." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Du ønsker forutsigbar og jevn fordeling.", + "avoid": "Modellene varierer for mye i responstid eller kostnad.", + "example": "Samme modell på flere kontoer for å fordele gjennomstrømningen." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Du ønsker enkel fordeling med minimalt oppsett.", + "avoid": "Du trenger strenge trafikkgarantier.", + "example": "Rask prototyping med likeverdige modeller." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Du ønsker adaptiv balansering basert på etterspørsel i sanntid.", + "avoid": "Trafikken er for lav til å dra nytte av bruksbalansering.", + "example": "Blandede arbeidsbelastninger der én modell ofte blir overbelastet." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Kostnadsreduksjon har høyest prioritet.", + "avoid": "Prisdata mangler eller er utdatert.", + "example": "Bakgrunns- eller satsvise jobber der lavere kostnader foretrekkes." }, "reset-aware": { "when": "Du ruter over flere kontoer med kvotetelemetri og forskjellige tilbakestillingsvinduer.", @@ -3386,19 +3386,19 @@ "example": "Foretrekk en 60 % ukentlig kontotilbakestilling i morgen fremfor en 80 % kontotilbakestilling senere." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Bruk når du ønsker helt jevn fordeling – hver modell brukes én gang før en modell brukes på nytt.", + "avoid": "Unngå når modellene har ulik kvalitet eller responstid, og rekkefølgen er viktig.", + "example": "Eksempel: Flere kontoer med samme modell for å fordele bruken jevnt." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Bruk når du ønsker valg med lav responstid ved hjelp av Power-of-Two-Choices-algoritmen.", + "avoid": "Unngå for små kombinasjoner med 2 eller færre modeller – ingen fordel sammenlignet med round-robin.", + "example": "Eksempel: Inferens med høy gjennomstrømning på tvers av 4+ likeverdige modellendepunkter." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Bruk når lange økter må tåle kontorotasjon uten å miste den aktive konteksten.", + "avoid": "Unngå når kontobytte skjer sjelden, eller når du ikke ønsker ekstra forespørsler om oppsummering.", + "example": "Eksempel: Codex-økter som roterer mellom flere kontoer når kvoten nesten er brukt opp." }, "fill-first": { "when": "Bruk når du ønsker å utnytte en leverandørs kvote fullt ut før du går til neste.", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Hvor mange nye forsøk som gjøres før en forespørsel mislykkes.", + "retryDelay": "Opprinnelig ventetid mellom nye forsøk. Høyere verdier reduserer belastningstopper.", + "timeout": "Maksimal varighet for en forespørsel før den avbrytes.", + "healthcheck": "Utelater modeller/leverandører med driftsproblemer fra rutingsbeslutninger.", + "concurrencyPerModel": "Maksimalt antall samtidige forespørsler per modell i round-robin.", + "queueTimeout": "Hvor lenge en forespørsel kan vente i kø før tidsavbrudd.", "failoverBeforeRetry": "Når den er aktivert, utløser enhver oppstrømsfeil umiddelbar failover til neste kombinasjonsmål, og hopper over alle gjenforsøk og reservenettadresser.", "maxSetRetries": "Antall ganger å prøve hele målet satt på nytt når hvert mål mislykkes. 0 = ingen forsøk på nytt på satt nivå.", "setRetryDelayMs": "Forsinkelse mellom gjenforsøk på sett-nivå, noe som gir forbigående problemer tid til å løse.", "disableSessionStickiness": "Roter til en annen tilkobling ved hver forespørsel i stedet for å låse en hel samtale til én tilkobling basert på hashen til første melding. Overstyrer den globale standarden. La stå på Arv for å bevare prompt-cache-treff for flertrinns-samtaler." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "Hurtigmaler", + "templatesDescription": "Bruk en startprofil, og juster deretter modeller og konfigurasjon.", + "templateApply": "Bruk mal", + "templateHighAvailability": "Høy tilgjengelighet", + "templateHighAvailabilityDesc": "Prioritetsruting med helsesjekker og sikre nye forsøk.", + "templateCostSaver": "Kostnadsbesparende", + "templateCostSaverDesc": "Kostnadsoptimalisert ruting for arbeidsbelastninger der budsjettet prioriteres.", + "templateBalanced": "Balansert belastning", + "templateBalancedDesc": "Ruting til den minst brukte modellen for å fordele etterspørselen over tid.", + "usageGuideHide": "Skjul", + "usageGuideDontShowAgain": "Ikke vis igjen", + "usageGuideShow": "Vis veiledning", + "quickTestTitle": "Kombinasjonen er klar til validering", + "quickTestDescription": "Kjør en test nå for å bekrefte reserve- og responstidsatferd.", + "testNow": "Test nå", + "pricingCoverage": "Prisdekning", + "pricingCoverageHint": "Kostnadsoptimalisering fungerer best når alle modellene i kombinasjonen har prisinformasjon.", + "pricingAvailable": "Pris tilgjengelig", + "pricingMissing": "Ingen prisinformasjon", + "pricingAvailableShort": "med pris", + "pricingMissingShort": "uten pris", "fallbackOnlyOnQuotaExhaustion": "Bare gå videre ved kvoteutløp", "fallbackOnlyOnQuotaExhaustionShort": "kvote-eller-fallback", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", + "warningRoundRobinSingleModel": "Round-robin er mest nyttig med minst 2 modeller.", + "warningCostOptimizedPartialPricing": "Bare {priced} av {total} modeller har prisinformasjon. Rutingen kan være delvis kostnadsbevisst.", + "warningCostOptimizedNoPricing": "Fant ingen prisdata for denne kombinasjonen. Kostnadsoptimalisering kan føre til uventet ruting.", + "filterAll": "Alle", "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterDeterministic": "Deterministisk", + "filterEmptyTitle": "Ingen kombinasjoner samsvarer med dette strategifilteret.", + "filterEmptyIntelligentDescription": "Opprett en automatisk kombinasjon eller en LKGP-kombinasjon for å fylle ut instrumentpanelet for intelligent ruting.", + "filterEmptyDeterministicDescription": "Det finnes bare automatiske kombinasjoner og LKGP-kombinasjoner akkurat nå. Bytt tilbake til Alle, eller opprett en deterministisk kombinasjon.", "readinessTitle": "Klar til å spare?", "readinessDescription": "Se gjennom sjekklisten før du oppretter eller oppdaterer denne kombinasjonen.", "readinessCheckName": "Kombinasjonsnavnet er gyldig", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Legg til minst én modell.", "saveBlockWeighted": "Sett vekter til 100 % (gjeldende: {total}%).", "saveBlockPricing": "Legg til priser for minst én modell eller velg en annen strategi.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Anbefalt oppsett", + "applyRecommendations": "Bruk anbefalinger", + "recommendationsUpdated": "Anbefalingene er oppdatert for {strategy}.", + "recommendationsApplied": "Anbefalingene er tatt i bruk for denne kombinasjonen.", + "intelligentPanelTitle": "Instrumentpanel for intelligent ruting", + "intelligentPanelDesc": "Sanntidspoeng og helsestatus for denne kombinasjonen med automatisk ruting.", "configOnlyStatus": "Konfigurasjonsvisning", "configOnlyHint": "Dette panelet viser kun rutinginndata. Sanntidsstatus for kretsbryter er tilgjengelig på Helse-siden.", "routingInputs": "Rutinginndata", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Ukjent leverandørprefiks.", "builderDynamicAccountShort": "Dynamisk konto", "builderNeedValidName": "Definer et gyldig kombonavn før du fortsetter.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Statusoversikt", + "normalOperation": "Normal drift", + "allProvidersHealthy": "Leverandørene rapporterer gode rutingforhold.", + "incidentMode": "Hendelsesmodus", + "highCircuitBreakerRate": "Høy utløsningsfrekvens for kretsbryteren er oppdaget.", + "activeModePack": "Aktiv moduspakke", + "modePackUpdated": "Moduspakken er oppdatert til {pack}.", + "modePackHint": "Bytt forhåndsinnstillinger for å styre rutingmotorens prioriteringer uten å bygge kombinasjonen på nytt.", + "providerScores": "Leverandørpoeng", + "allProvidersEvaluated": "Ingen kandidatgruppe er konfigurert. Alle aktive leverandører evalueres under kjøring.", + "excludedProviders": "Ekskluderte leverandører", + "excludedProvidersHint": "Leverandører med en OPEN-kretsbryter ekskluderes midlertidig fra rutingen.", + "noExcludedProviders": "Ingen leverandører er ekskludert for øyeblikket.", + "cooldownMinutes": "Nedkjøling: {minutes} min", + "builderIntelligentTitle": "Konfigurasjon av intelligent ruting", + "builderIntelligentDesc": "Konfigurer poengmotoren med flere faktorer for denne kombinasjonen med automatisk ruting.", + "candidatePoolLabel": "Kandidatgruppe", + "candidatePoolHint": "Velg hvilke leverandører denne motoren skal evaluere. La feltet stå tomt for å bruke alle aktive leverandører.", + "candidatePoolEmpty": "Ingen aktive leverandører er tilgjengelige ennå.", + "candidatePoolAllProviders": "Alle leverandører", + "modePackLabel": "Moduspakke", + "routerStrategyLabel": "Ruterstrategi", + "strategyRules": "Regler (6-faktors poengberegning)", + "explorationRateLabel": "Utforskningsrate", + "explorationRateHint": "{percent}% av forespørslene kan utforske ikke-optimale leverandører.", + "budgetCapLabel": "Budsjettgrense (USD / forespørsel)", + "budgetCapPlaceholder": "Ingen grense", + "advancedWeightsTitle": "Avansert: Vekting av poeng", "nestedComboFlatten": "Flat ut nøstede komboer", "nestedComboExecute": "Kjør nøstede komboer som mål", "effectiveRoutingShare": "Effektiv rutingandel (vekt ÷ totalt)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kvote", + "weightHealth": "Tilstand", + "weightCostInv": "Kostnad", + "weightLatencyInv": "Ventetid", + "weightTaskFit": "Oppgavetilpasning", + "weightStability": "Stabilitet", + "weightTierPriority": "Nivå", + "weightCacheAffinity": "Preferanse for hurtigbuffertreff", "weightSessionAvailability": "Økt Tilgjengelighet", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Konfigurasjon av intelligent ruting", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Feilsikker grunnkonfigurasjon", + "description": "Bruk én primærmodell, og hold reservekjeden kort og pålitelig.", + "tip1": "Plasser den mest pålitelige modellen først.", + "tip2": "Behold 1–2 reservemodeller med tilsvarende kvalitet.", + "tip3": "Bruk sikre nye forsøk for å håndtere midlertidige leverandørfeil." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Kontrollert trafikkfordeling", + "description": "Ideelt for kanarilanseringer og gradvis migrering mellom modeller.", + "tip1": "Start med en forsiktig fordeling, for eksempel 90/10.", + "tip2": "Hold totalen på 100 %, og balanser automatisk etter endringer.", + "tip3": "Overvåk vellykkede forespørsler og ventetid før du øker kanarivekten." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Forutsigbar lastfordeling", + "description": "Best når modellene er likeverdige og du trenger jevn fordeling.", + "tip1": "Bruk minst 2 modeller.", + "tip2": "Angi grenser for samtidighet for å unngå overbelastning ved trafikktopper.", + "tip3": "Bruk tidsavbrudd for køen for å feile raskt ved metning." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Rask fordeling med lite oppsett", + "description": "Bruk dette når du trenger enkel fordeling uten strenge garantier.", + "tip1": "Bruk modeller med lignende ventetidsprofiler.", + "tip2": "La nye forsøk være aktivert for å håndtere tilfeldige feil.", + "tip3": "Foretrekk dette for eksperimentering, ikke strenge SLA-er." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Adaptiv balansering", + "description": "Ruter til mindre brukte modeller for å redusere flaskehalser over tid.", + "tip1": "Fungerer bedre ved kontinuerlig trafikk.", + "tip2": "Kombiner med helsesjekker for tryggere balansering.", + "tip3": "Spor bruken per modell for å bekrefte bedre fordeling." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Budsjettstyrt ruting", + "description": "Ruter til rimeligere modeller når prisinformasjon er tilgjengelig.", + "tip1": "Sørg for at prisinformasjon finnes for alle valgte modeller.", + "tip2": "Behold en kvalitetsmodell som reserve for krevende forespørsler.", + "tip3": "Bruk dette til batch- og bakgrunnsjobber der kostnad er den viktigste KPI-en." }, "reset-aware": { "title": "Tilbakestillingsbevisst kontorotasjon", @@ -3597,11 +3597,11 @@ "tip3": "Hold båndet lite slik at tilsvarende kontoer fortsatt roterer ganske." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Kortstokkfordeling", + "description": "Hver modell brukes nøyaktig én gang per syklus før det stokkes på nytt.", + "tip1": "Bruk minst 2 modeller for en meningsfull fordeling.", + "tip2": "Fungerer best med modeller som har tilsvarende ytelse.", + "tip3": "Ideelt for lastbalansering på tvers av flere API-kontoer." }, "fill-first": { "description": "Eksosleverandørkvoter sekvensielt før de faller tilbake.", @@ -3646,86 +3646,86 @@ "title": "Kraften til to valg" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Gratisstabel ($0)", + "templateFreeStackDesc": "Round-robin mellom alle gratisleverandører: Kiro (Claude), Qoder (5 modeller), Qwen (4 modeller). Helt gratis og slutter aldri å kode.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP-modus", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Kom i gang med kombinasjoner", + "wizardGuideDesc": "Opprett modellkombinasjoner for å rute AI-trafikk på en intelligent måte", + "wizardGuideHint": "eller klikk på + Opprett kombinasjon ovenfor", + "createFirstCombo": "Opprett din første kombinasjon", + "wizardStep1Title": "Gi kombinasjonen et navn", + "wizardStep1Desc": "Gi kombinasjonen et unikt navn for å identifisere den i rutingsregler", + "wizardStep2Title": "Legg til modeller", + "wizardStep2Desc": "Velg AI-modeller og angi prioritetsrekkefølgen for reservemodeller", + "wizardStep3Title": "Velg strategi", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Se gjennom og lagre", + "wizardStep4Desc": "Se gjennom konfigurasjonen og aktiver kombinasjonen", + "usageGuideInvokeTitle": "Slik kaller du denne kombinasjonen", + "usageGuideInvokeDesc": "Send kombinasjonens nøyaktige navn som modell, f.eks. model: \"my-combo\" (eller combo/my-combo).", + "usageGuideInvokeAutoNote": "auto og auto/* er en separat ruter uten konfigurasjon som ikke bruker kombinasjonene dine (med mindre en kombinasjon faktisk heter auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto er et ekte, betalt OpenRouter-produkt (Auto Best Available), ikke et OmniRoute-alias – ekskluder det via Innstillinger → Ruting → Skjul betalte modeller.", + "emailVisibilityStateOn": "På", + "emailVisibilityStateOff": "Av", + "reorderHandle": "Dra for å endre rekkefølgen", + "failedReorder": "Kunne ikke endre rekkefølgen på modellene", + "builderFlowTitle": "Flyt for bygging av kombinasjoner", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Grunnleggende", + "description": "Navn og startmal" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Trinn", + "description": "Valg av leverandør, modell og konto" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategi", + "description": "Rutingsatferd og avanserte innstillinger" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Smart ruting", + "description": "Kandidatutvalg, forhåndsinnstillinger og poengberegning for automatisk ruting" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Gjennomgang", + "description": "Endelig validering før lagring" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Trinn fullført", + "builderStageCurrent": "Gjeldende trinn", + "builderStagePending": "Venter", + "builderStageLocked": "Låst – fullfør forrige trinn først", + "builderTitle": "Bygg en kombinasjon", + "builderBrowseCatalog": "Bla gjennom katalogen", + "builderProvider": "Leverandør", + "builderLoadingProviders": "Laster inn leverandører...", + "builderSelectProvider": "Velg leverandør", + "builderModel": "Modell", + "builderSelectModel": "Velg modell", + "builderProviderFirst": "Velg leverandør først", + "builderAccount": "Konto", + "builderPreview": "Forhåndsvisning", + "builderAddStep": "Legg til trinn", "builderDuplicateExact": "Dette eksakte leverandør-/modell-/kontotrinnet er allerede i kombinasjonen.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Kombinasjonsreferanse", + "builderAddComboRef": "Legg til kombinasjonsreferanse", + "builderComboRefStep": "Legg til kombinasjonsreferanse", + "builderPinnedAccount": "Festet konto", + "builderLegacyEntry": "Eldre oppføring", + "reviewName": "Navn", + "reviewStrategy": "Strategi", + "reviewSteps": "Trinn", + "reviewAccounts": "Kontoer", + "reviewProviders": "Leverandører", + "reviewComboRefs": "Kombinasjonsreferanser", + "reviewAdvanced": "Avanserte innstillinger", + "reviewAgentFlags": "Agentflagg", + "reviewSequence": "Modellrekkefølge", + "reviewNoSteps": "Ingen trinn er konfigurert", "builderStagesDescription": "Fullfør hvert trinn for å definere kombinasjoner, bygge trinn, velge rutingstrategi og gjennomgå resultater.", "builderStepsDescription": "Bygg hvert kombinasjonstrinn i rekkefølge: leverandør, modell og deretter konto. Dette gjør det mulig å gjenbruke samme leverandør og modell på tvers av forskjellige kontoer.", "selectProvider": "Velg Leverandør", @@ -3800,34 +3800,34 @@ "range7d": "7 dager", "range30d": "30 dager", "range90d": "90 dager", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 dager", + "range365d": "365 dager", "rangeAll": "Hele tiden", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Aktive modeller", + "flatRateEstimateNotice": "Inkluderer estimater for tokenpriser for abonnementer med fastpris, ikke fakturert kostnad.", + "flatRateEstimateForecast": "Prognosen inkluderer fastprisestimater.", + "selectedWindow": "Valgt tidsvindu", + "activeProviders": "Aktive leverandører", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Forbruk i dag", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Leverandørandel", + "topProviders": "Topp leverandører", + "costTrend": "Kostnadstrend", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Toppmodeller", "requestsInWindow": "Requests In Window", "tokenUsage": "Tokenbruk", "totalTokens": "Totalt tokens", "inputTokens": "Skriv inn tokens", "outputTokens": "Output tokens", "inputOutputRatio": "Input/output ratio", - "tokens": "tokens", + "tokens": "tokener", "routingEfficiency": "Ruting effektivitet", "fallbackCount": "Reserveforespørsler", "fallbackRate": "Fallback rate", @@ -3863,7 +3863,7 @@ "groupAccount": "Konto", "groupServiceTier": "Tjenestenivå", "serviceTierFast": "Rask", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Fleksibel", "serviceTierStandard": "Standard", "serviceTierBreakdownTitle": "Tjenestenivå", "serviceTierBreakdownSubtitle": "Rask / Flex / Standard-fordeling", @@ -3882,13 +3882,13 @@ }, "endpoint": { "title": "API-endepunkt", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Bruk det OpenAI-kompatible endepunktet med de fleste SDK-er og verktøy.", + "testEndpoint": "Test endepunkt →", + "advancedProtocols": "Avanserte protokoller", "available": "Tilgjengelige endepunkter", "cloudProxy": "Cloud Proxy", "disableConfirm": "Er du sikker på at du vil deaktivere skyproxy?", - "baseUrl": "Base URL", + "baseUrl": "Basis-URL", "apiKeyLabel": "API-nøkkel", "registeredKeys": "Registrerte nøkler", "chatCompletions": "Chatfullføringer", @@ -3900,7 +3900,7 @@ "disableCloud": "Deaktiver Cloud", "enableCloud": "Aktiver Cloud", "modelsAcrossEndpoints": "{models} modeller på tvers av {endpoints} endepunkter", - "loadingModels": "Loading available models...", + "loadingModels": "Laster inn tilgjengelige modeller...", "chatDesc": "Streaming og ikke-streaming chat med alle leverandører", "embeddings": "Innstøpinger", "embeddingsDesc": "Tekstinnbygging for søk og RAG-rørledninger", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Transkribere lydfiler til tekst (Whisper)", "textToSpeech": "Tekst til tale", "textToSpeechDesc": "Konverter tekst til tale med naturlig lyd", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Musikkgenerering", + "musicDesc": "Generer musikk og lydspor via ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderasjoner", "moderationsDesc": "Innholdsmoderering og sikkerhetsklassifisering", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API for Codex og avanserte agentbaserte arbeidsflyter", + "listModelsDesc": "List opp alle tilgjengelige modeller på tvers av alle tilkoblede leverandører", + "settingsApiDesc": "Les og endre OmniRoute-konfigurasjonen via API", + "settingsApi": "Innstillings-API", "categoryCore": "Kjerne-API-er", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", + "categoryMedia": "Medier og multimodalt innhold", + "categorySearch": "Søk og utforsking", "categoryUtility": "Verktøy & Administrasjon", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Nettsøk", + "webSearchDesc": "Samlet nettsøk på tvers av flere leverandører med automatisk reserveløsning og hurtigbufring", + "searchProvider": "Søkeleverandør", + "searchProviderDesc": "Denne leverandøren brukes til nettsøk via POST /v1/search. Ingen modellkonfigurasjon er nødvendig — søkeleverandører er klare til bruk så snart en API-nøkkel er tilkoblet.", "enableCloudTitle": "Aktiver Cloud Proxy", "whatYouGet": "Hva du vil få", "cloudBenefitAccess": "Få tilgang til API-en din fra hvor som helst i verden", @@ -3963,99 +3963,99 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Aktiver tunnel", + "cloudflaredInstallAndEnable": "Installer og aktiver", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Kjører", + "cloudflaredStarting": "Starter", + "cloudflaredStoppedState": "Stoppet", + "cloudflaredNotInstalled": "Ikke installert", + "cloudflaredUnsupported": "Ikke støttet", + "cloudflaredError": "Feil", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Siste feil: {error}", "providerModelsTitle": "{provider} — Modeller", "noModelsForProvider": "Ingen modeller tilgjengelig for denne leverandøren.", "chat": "Chat", "embedding": "Innebygging", "image": "Bilde", "custom": "tilpasset", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {# modell} other {# modeller}}", + "sectionTitle": "Integrasjonsflate", + "sectionDescription": "OpenAI-kompatible API-er og endepunkter for operative protokoller", "tabApis": "API-er", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "Protokoller", + "tabsAria": "Endepunktseksjoner", + "protocolsTitle": "Protokoller", + "protocolsDescription": "MCP og A2A er fullverdige endepunkter med dedikert observerbarhet og egne kontroller.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", + "mcpCardDescription": "Model Context Protocol via stdio", + "a2aCardTitle": "A2A-server", + "a2aCardDescription": "Agent2Agent JSON-RPC-endepunkt", + "protocolToolsLabel": "Verktøy", + "protocolTasksLabel": "Oppgaver", + "protocolActiveStreamsLabel": "Aktive strømmer", + "protocolLastActivity": "Siste aktivitet", + "quickStart": "Hurtigstart", + "openMcpDashboard": "Åpne MCP-administrasjon", + "openA2aDashboard": "Åpne A2A-administrasjon", + "mcpQuickStartTitle": "Hurtigstart for MCP", + "mcpQuickStartStep1": "Kjør MCP-serveren via `omniroute --mcp`.", + "mcpQuickStartStep2": "Konfigurer MCP-klienten til å koble til via stdio-transport.", "mcpQuickStartStep3": "Påkall verktøy som `omniroute_get_health` og `omniroute_list_combos`.", "a2aQuickStartTitle": "A2A hurtigstart", "a2aQuickStartStep1": "Oppdag agentkortet på `/.well-known/agent.json`.", "a2aQuickStartStep2": "Send JSON-RPC-forespørsler til `POST /a2a` ved å bruke `message/send` eller `message/stream`.", "a2aQuickStartStep3": "Spor og kontroller oppgaver ved å bruke `tasks/get` og `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Fullføringer (eldre)", + "completionsLegacyDesc": "Eldre OpenAI-tekstfullføringer – godtar både ledetekst som streng og meldingsmatriseformat", "messagesApi": "Meldinger", "messagesApiDesc": "Native Anthropic Messages API-format for Claude-kompatible leverandører", "imageEdits": "Bilderedigeringer", "imageEditsDesc": "Rediger og modifiser eksisterende bilder med AI (inpainting, outpainting, variasjoner)", - "batchApi": "Batch API", + "batchApi": "Batch-API", "batchApiDesc": "Behandle store grupper med forespørsler asynkront (OpenAI-kompatibel)", - "filesApi": "Files API", + "filesApi": "Fil-API", "filesApiDesc": "Last opp og administrer filer for batchbehandling", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Videogenerering", + "videoDesc": "Generer videoer ved hjelp av AI-modeller som ComfyUI og Stable Video Diffusion.", + "tailscaleRequestFailed": "Kunne ikke laste inn Tailscale-status", + "tailscaleEnableFailed": "Kunne ikke aktivere Tailscale Funnel", + "tailscaleWaitingForLogin": "Fullfør Tailscale-påloggingen i nettleserfanen som ble åpnet. OmniRoute prøver automatisk på nytt.", + "tailscaleLoginTimedOut": "Tidsavbrudd under venting på Tailscale-pålogging", + "tailscaleWaitingForFunnel": "Aktiver Funnel for denne enheten i nettleserfanen som ble åpnet. OmniRoute fortsetter å sjekke.", + "tailscaleFunnelTimedOut": "Tidsavbrudd under venting på at Tailscale Funnel skulle bli aktivert", + "tailscaleStarted": "Tailscale Funnel er aktivert", + "tailscaleDisableFailed": "Kunne ikke deaktivere Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel er deaktivert", + "tailscaleInstallFailed": "Kunne ikke installere Tailscale", + "tailscaleInstallProgress": "Arbeider ...", + "tailscaleInstalled": "Tailscale ble installert", + "tailscaleRunning": "Kjører", + "tailscaleNeedsLogin": "Krever pålogging", + "tailscaleStoppedState": "Stoppet", + "tailscaleNotInstalled": "Ikke installert", + "tailscaleUnsupported": "Ikke støttet", + "tailscaleError": "Feil", + "tailscaleDisable": "Stopp Funnel", + "tailscaleInstallAndEnable": "Installer og aktiver", + "tailscaleLoginAndEnable": "Logg inn og aktiver", + "tailscaleEnable": "Aktiver Funnel", + "tailscaleUrlNotice": "Bruker Tailscale .ts.net-adressen din. Innlogging og godkjenning av Funnel kan være nødvendig ved første gangs bruk.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Autentiser denne maskinen med Tailscale, og aktiver deretter Funnel.", + "tailscaleBinaryPath": "Binærfil: {path}", + "tailscaleLastError": "Siste feil: {error}", + "tailscaleInstallTitle": "Installer Tailscale", + "tailscaleInstallIntro": "Installerer Tailscale på denne maskinen og klargjør OmniRoute for aktivering av Funnel.", + "tailscaleInstallPasswordHint": "På macOS og Linux kan sudo være nødvendig for å installere pakken og starte daemonen.", + "tailscaleSudoPlaceholder": "Valgfritt sudo-passord", + "tailscaleInstalling": "Installerer", "tailscaleSudoLabel": "Sudo-passord (påkrevd på macOS/Linux)", "ngrokTitle": "ngrok tunnel", "ngrokRunning": "Løper", @@ -4132,21 +4132,21 @@ "vscodeAliasModelsLabel": "VS Code-modeller", "vscodeAliasChatLabel": "VS Code-chat", "localServer": "Lokal server", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute i skyen", "copyUrl": "Kopier URL", "badgeLoopbackTooltip": "Dette endepunktet er bare tilgjengelig lokalt (kun loopback)", "badgeAlwaysProtectedTooltip": "Dette endepunktet er alltid beskyttet og krever autorisasjon", "badgeInternalTooltip": "Dette er et internt systemendepunkt", "tierAll": "Alle", "tierAuth": "Autentisert", - "tierLoopback": "Loopback", + "tierLoopback": "Tilbakekobling", "tierAlwaysProtected": "Alltid beskyttet", "tierPublic": "Offentlig", "hideInternal": "Skjul interne", "showInternal": "Vis interne", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Egendefinert systemprompt", + "customSystemPromptDescription": "Sett inn en egendefinert systemprompt i hver modellforespørsel", + "customSystemPromptPlaceholder": "f.eks. Svar alltid som en pirat...", "obsidianEnterToken": "Vennligst oppgi et Obsidian API-token", "obsidianConnectFailed": "Kunne ikke koble til", "obsidianConnectionFailed": "Tilkobling mislyktes", @@ -4195,16 +4195,16 @@ "notionTokenConfigured": "Token konfigurert. Notion-verktøy er tilgjengelige via MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Endepunktproxy", + "tabApiEndpoints": "API-endepunkter", + "apiEndpointsTitle": "API-endepunkter", + "apiEndpointsDescription": "API-endepunkter for backend som kan brukes av andre applikasjoner og tjenester. Denne delen vil vise alle tilgjengelige REST-API-er med dokumentasjon og testmuligheter.", + "comingSoon": "Kommer snart", + "plannedFeatures": "Planlagte funksjoner", + "featureRestApi": "Katalog over REST-API-endepunkter med interaktiv dokumentasjon", + "featureWebhooks": "Webhook-konfigurasjon og hendelsesabonnementer", + "featureSwagger": "Automatisk generering av OpenAPI-/Swagger-spesifikasjon", + "featureAuth": "Administrasjon av API-nøkler og OAuth-tilgangsområder per endepunkt" }, "mcpDashboard": { "loading": "Laster inn MCP-dashbordet ...", @@ -4212,14 +4212,14 @@ "deactivate": "deaktivere", "confirmSwitchCombo": "Bekreft {action} kombinasjonen \"{combo}\"?", "switchComboFailed": "Kunne ikke bytte kombinasjonstilstand.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "switchComboSuccess": "Kombinasjonen «{combo}» ble oppdatert.", + "confirmApplyProfile": "Vil du bruke robusthetsprofilen «{profile}»?", + "applyProfileFailed": "Kunne ikke bruke robusthetsprofilen.", + "applyProfileSuccess": "Profilen «{profile}» er tatt i bruk.", + "confirmResetBreakers": "Vil du tilbakestille alle effektbrytere?", + "resetBreakersFailed": "Kunne ikke tilbakestille effektbryterne.", + "resetBreakersSuccess": "Effektbrytere tilbakestilt.", + "processStatus": "Prosessstatus", "online": "Online", "offline": "Offline", "disableLabel": "Deaktiver {label}", @@ -4237,119 +4237,119 @@ "mcpStep2": "Konfigurer MCP-klienten din til å koble til over stdio-transport.", "mcpStep3": "Kall verktøy som {code1} og {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", + "sessionUptime": "Øktens oppetid", + "lastHeartbeat": "Siste livstegn", + "activity24h": "Aktivitet (24 t)", + "totalCalls": "Totalt antall kall", + "successRate": "Suksessrate", + "avgLatency": "Gj.sn. ventetid", + "topTools": "Mest brukte verktøy", + "noToolCalls24h": "Ingen verktøykall de siste 24 timene.", + "runtimeDetails": "Kjøretidsdetaljer", "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "scopesEnforced": "Omfang håndheves", + "yes": "ja", + "no": "nei", + "lastCall": "Siste kall", + "heartbeatPath": "Bane for livstegn", + "operationalControls": "Driftskontroller", + "switchCombo": "Kombinasjonsbryter", + "inactive": "inaktiv", + "active": "aktiv", + "activateCombo": "Aktiver kombinasjon", + "deactivateCombo": "Deaktiver kombinasjon", + "applyResilienceProfile": "Bruk robusthetsprofil", + "profileAggressive": "aggressiv", + "profileBalanced": "balansert", + "profileConservative": "konservativ", + "applyProfile": "Bruk profil", + "resetCircuitBreakers": "Tilbakestill effektbrytere", + "resetCircuitBreakersHelp": "Tømmer gjeldende brytertilstand og feiltellere for leverandører.", + "resetAllBreakers": "Tilbakestill alle brytere", + "toolsAndScopes": "Verktøy og omfang", + "tableTool": "Verktøy", + "tableScopes": "Omfang", + "tablePhase": "Fase", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Revisjonslogg", + "auditSummary": "Kall: {total} | side {page} av {totalPages}", + "allTools": "Alle verktøy", + "allResults": "Alle resultater", + "success": "Vellykket", + "failure": "Feil", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "Laster revisjonsoppføringer...", + "noAuditEntriesForFilters": "Ingen revisjonsoppføringer funnet for gjeldende filtre.", + "tableTimestamp": "Tidsstempel", + "tableDuration": "Varighet", + "tableResult": "Resultat", + "tableApiKey": "API-nøkkel", + "failed": "mislyktes", + "previous": "Forrige", + "next": "Neste", + "apiKeyId": "API-nøkkel-ID", + "offset": "Forskyvning", + "limit": "Grense", + "tool": "Verktøy" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "Laster A2A-instrumentbord...", + "confirmCancelTask": "Avbryte oppgave {taskId}?", + "cancelTaskFailed": "Kunne ikke avbryte oppgaven.", + "cancelTaskSuccess": "Oppgave {taskId} ble avbrutt.", + "smokeSendFailed": "Røyktest av message/send mislyktes.", + "smokeSendSuccessWithTask": "message/send er OK (oppgave {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "Røyktest av message/stream mislyktes.", + "smokeStreamSuccessWithTask": "message/stream er OK (oppgave {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream ble fullført uten oppgave-ID.", + "health": "Tilstand", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "Totalt antall oppgaver", + "activeStreams": "Aktive strømmer", + "lastTask": "Siste oppgave", + "taskStateOverview": "Oversikt over oppgavetilstander", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "sendt inn", + "working": "under arbeid", + "completed": "fullført", + "failed": "mislyktes", + "cancelled": "avbrutt" }, - "agentCard": "Agent card", + "agentCard": "Agentkort", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "Versjon", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "Funksjoner", + "agentCardNotAvailable": "Agentkortet er ikke tilgjengelig.", + "quickValidation": "Hurtigvalidering", + "quickValidationDescription": "Utfører røyktestkall via det aktive `/a2a`-endepunktet.", + "runMessageSend": "Kjør message/send", + "runMessageStream": "Kjør message/stream", + "taskManagement": "Oppgavebehandling", + "taskSummary": "{total} oppgaver | side {page} av {totalPages}", + "allStates": "alle", + "allSkills": "alle ferdigheter", + "loadingTasks": "Laster oppgaver...", + "noTasksForFilters": "Fant ingen oppgaver for gjeldende filtre.", + "tableTask": "Oppgave", + "tableSkill": "Ferdighet", + "tableState": "Status", + "tableUpdated": "Oppdatert", + "tableActions": "Handlinger", + "view": "Vis", + "cancel": "Avbryt", + "previous": "Forrige", + "next": "Neste", + "taskDetail": "Oppgavedetaljer", + "close": "Lukk", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "Hendelser", + "artifacts": "Artefakter", + "tablePhase": "Tabellfase", + "offset": "Forskyvning", + "limit": "Grense", + "skill": "Ferdighet", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "melding/send", "rpcMethodStream": "melding/strøm", @@ -4364,14 +4364,14 @@ "a2aDisabledDesc": "Aktiver A2A ovenfor for å vise oppgavetelemetri, agentdetaljer og valideringsverktøy.", "a2aIntro": "Agent2Agent JSON-RPC 2.0-endepunkt — send oppgaver, strøm svar, avbryt pågående jobber.", "a2aStep1": "Oppdag agentkortet på {code}.", - "a2aStep2": "Send JSON-RPC to {code1} using {code2} or {code3}.", - "a2aStep3": "Track and cancel tasks with {code1} and {code2}." + "a2aStep2": "Send JSON-RPC til {code1} ved hjelp av {code2} eller {code3}.", + "a2aStep3": "Spor og avbryt oppgaver med {code1} og {code2}." }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Handlinger", + "addMemory": "Legg til minne", + "allTypes": "Alle typer", "cancel": "Avbryt", "checkHealth": "Sjekk helsen", "checkingHealth": "Sjekker …", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Slik fungerer det", "howWorksContent": "1. Automatisk uthenting: på slutten av hvert svar blir fakta og episoder oppdaget og lagret automatisk.\n2. Henting: før hvert svar søkes det etter de mest relevante minnene via FTS5 (nøyaktig), vektor (semantisk) eller hybrid RRF.\n3. Injeksjon: relevante minner injiseres i assistentkonteksten for å forbedre svarkvaliteten.\n4. Administrasjon: bruk denne siden til å vise, redigere, eksportere og kompaktere gamle minner." }, - "content": "Content", + "content": "Innhold", "contentPlaceholder": "Verdi eller JSON-innhold å huske", - "created": "Created", - "delete": "Delete", + "created": "Opprettet", + "delete": "Slett", "deleteConfirmDesc": "Denne handlingen kan ikke angres. Minnet vil bli permanent fjernet.", "deleteConfirmTitle": "Slett minne?", - "description": "View and manage stored memory entries", + "description": "Vis og administrer lagrede minneoppføringer", "editMemory": "Rediger minne", "editModal": { "title": "Rediger minne", @@ -4433,7 +4433,7 @@ "reindexFailed": "Kunne ikke starte reindeksering", "keywordLabel": "Nøkkelord (FTS5)", "keywordReason": "Nøkkelordsøk er alltid tilgjengelig", - "embeddingLabel": "Embedding", + "embeddingLabel": "Innebygging", "vectorStoreLabel": "Vektorlager", "qdrantLabel": "Qdrant", "rerankLabel": "Rerangering", @@ -4444,20 +4444,20 @@ "configureCta": "Konfigurer", "vectorStoreInstallHint": "For å aktivere vektorsøk: npm install sqlite-vec (krever nativ Node.js, ikke WASM), og start deretter på nytt." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodisk", + "export": "Eksporter", + "factual": "Faktabasert", "healthUnknown": "Helse ukjent", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Treffrate", + "import": "Importer", "importError": "Kunne ikke importere fil", "importResult": "{imported} importert, {skipped} hoppet over", - "key": "Key", + "key": "Nøkkel", "keyPlaceholder": "f.eks. bruker.preferencer.tema", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Minner", "next": "Neste", - "noMemories": "No memories found", + "noMemories": "Ingen minner funnet", "pageInfo": "Side {page} av {totalPages} ({total} totalt)", "pipelineError": "Rørledningsfeil", "pipelineOk": "Rørledning OK ({latencyMs}ms)", @@ -4474,18 +4474,18 @@ "simulate": "Simuler", "resultsTitle": "{count} resultat(er)", "resolutionTitle": "Søkeresolusjon", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Innebygging", "resolutionStore": "Vektorlager", "resolutionStrategy": "Brukt strategi", "rerankApplied": "Rerangering brukt", - "fallback": "Fallback", + "fallback": "Reserveløsning", "noResults": "Fant ingen minner for dette søket.", "tokensUsed": "tokens brukt", "none": "ingen", "errorFetch": "Kunne ikke hente forhåndsvisning" }, "previous": "Forrige", - "procedural": "Procedural", + "procedural": "Prosedyremessig", "qdrant": { "title": "Qdrant (Vektorlager nivå 2)", "description": "Valgfri Qdrant-integrasjon for skalerbart semantisk søk", @@ -4534,8 +4534,8 @@ }, "save": "Lagre", "saving": "Lagrer...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Søk i minner...", + "semantic": "Semantisk", "summarize": { "title": "Komprimer gamle minner", "noCandidates": "Ingen minner er kvalifisert for komprimering (kriterium: >30 dager gamle).", @@ -4547,8 +4547,8 @@ "playground": "Lekeplass", "engine": "Motor" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Minneadministrasjon", + "tokensUsed": "Brukte tokener", "tooltip": { "totalEntries": "Totalt antall minner lagret for denne API-nøkkelen", "tokensUsed": "Estimert totalt antall tokener brukt av aktive minner", @@ -4558,15 +4558,15 @@ "procedural": "Prosedyrer, arbeidsflyter og instruksjoner som assistenten skal følge", "semantic": "Konsepter, preferanser og domenekunnskap" }, - "totalEntries": "Total Entries", + "totalEntries": "Totalt antall oppføringer", "type": "Type", "memoryEnabled": "Minne aktivert" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Ferdigheter", + "description": "Administrer og overvåk AI-ferdigheter", + "skillsTab": "Ferdigheter", + "executionsTab": "Kjøringer", "selectSkillToInspect": "Velg en ferdighet til venstre for å inspisere.", "schemaTab": "Skjema", "handlerTab": "Behandler", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Kjør test (plassholder)", "setModeAria": "Sett modus {mode}", "uninstallSkill": "Avinstaller ferdighet", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Sandkasse", + "loading": "Laster inn ferdigheter...", + "noSkills": "Ingen ferdigheter funnet", + "noExecutions": "Ingen kjøringer funnet", + "enabled": "Aktivert", + "disabled": "Deaktivert", "delete": "Slett", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", + "version": "Versjon", + "tableDescription": "Beskrivelse", + "skill": "Ferdighet", "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "duration": "Varighet", + "time": "Tid", + "sandboxConfig": "Sandkassekonfigurasjon", + "cpuLimit": "CPU-grense", + "cpuLimitDesc": "Maksimal kjøretid per ferdighet", + "memoryLimit": "Minnegrense", + "memoryLimitDesc": "Maksimal minnetildeling", + "timeout": "Tidsavbrudd", + "timeoutDesc": "Maksimal ventetid på svar", + "networkAccess": "Nettverkstilgang", + "networkAccessDesc": "Tillat utgående nettverksforespørsler", + "mode": "Modus", "q": "Q", "filterSkillsPlaceholder": "Filtrer ferdigheter etter navn, beskrivelse eller tag", "allModes": "Alle moduser", @@ -4612,7 +4612,7 @@ "popularDefaultsLabel": "Populær som standard for valgt leverandør:", "onMode": "PÅ", "offMode": "AV", - "autoMode": "AUTO", + "autoMode": "AUTOMATISK", "installSkillButton": "Installer ferdighet", "installSkillModalTitle": "Installer ferdighet", "installJsonPlaceholder": "Lim inn JSON for ferdighetsmanifest her...", @@ -4626,7 +4626,7 @@ "marketplaceError": "Søk mislyktes", "installingFromMarketplace": "Installerer fra markedsplassen...", "popularSkills": "Populære ferdigheter", - "skillsMarketplace": "Skills Marketplace", + "skillsMarketplace": "Markedsplass for ferdigheter", "searching": "Søker...", "pageInfo": "Side {page} av {totalPages} ({total} totalt)", "previous": "Forrige", @@ -4657,7 +4657,7 @@ "lastCheck": "Siste sjekk", "providerHealth": "Leverandørhelse", "systemMetrics": "Systemmålinger", - "tokenHealth": "Token Health", + "tokenHealth": "Tokenhelse", "refreshAll": "Oppdater alle", "checkNow": "Sjekk nå", "loadingHealth": "Laster inn helsedata ...", @@ -4665,13 +4665,13 @@ "retry": "Prøv på nytt", "allOperational": "Alle systemer i drift", "issuesDetected": "Systemproblemer oppdaget", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute er klar", + "healthVerdictActionRequired": "Handling kreves for å gjenopprette full drift", + "healthVerdictCoolingDown": "Nedkjøling etter nylige endringer", + "healthSubtitle": "Systemhelsesjekk", + "advancedDiagnosticsTitle": "Avansert diagnostikk", + "hide": "Skjul", + "show": "Vis", "updatedAt": "Oppdatert {time}", "latency": "Latens", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "Leverandører", "configuredProvidersLabel": "Konfigurert i dashbordet", "configuredProvidersHint": "Leverandører med legitimasjon lagret i /dashboard/leverandører, uavhengig av kjøretidstilstand.", - "activeProviders": "{count} active", + "activeProviders": "{count} aktive", "activeProvidersHint": "Konfigurerte leverandører er for øyeblikket aktivert for rutingforespørsler.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} overvåket", "monitoredProvidersHint": "Leverandører spores for øyeblikket av strømbryterhelsemonitorer.", "healthyCount": "{count} sunn", "nodeVersion": "Node {version}", @@ -4721,11 +4721,11 @@ "resetting": "Tilbakestiller...", "resetAll": "Tilbakestill alle", "until": "Inntil {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Oppbrukt", + "learnedFromHeaders": "Hentet fra headere", + "remainingOfLimit": "{remaining}/{limit} gjenstår", + "throttleStatus": "Begrensning: {value}", + "lastHeaderUpdate": "Headeroppdatering: {age}", "databaseHealth": "Database helse", "databaseHealthDescription": "Diagnostiser og reparer foreldede kvote-/domenerader og ødelagte kombinasjonsreferanser.", "status": "Status", @@ -4742,7 +4742,7 @@ "quotaMonitors": "Kvotemonitorer", "alerting": "Varsling", "errors": "Feil", - "degradationFull": "Full", + "degradationFull": "Fullstendig", "degradationReduced": "Redusert", "degradationMinimal": "Minimal", "degradationDefault": "Standard", @@ -4780,7 +4780,7 @@ "cooldownCount": "{count} nedkjøling", "lockoutCount": "{count} utestengelser", "issueCount": "{count} problemer", - "score": "Score", + "score": "Poengsum", "lastRequest": "Siste forespørsel", "lastError": "Siste feil" }, @@ -4793,7 +4793,7 @@ "errorRate": "Feilfrekvens", "activeConnections": "Aktive tilkoblinger", "memoryUsage": "Minnebruk", - "latencyTrend": "Latency trend", + "latencyTrend": "Forsinkelsestrend", "throughputTrend": "Gjennomstrømningstrend", "memoryTrend": "Minnetrenden", "refresh": "Oppdater", @@ -4888,28 +4888,28 @@ "previous": "Forrige", "next": "Neste", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Vis detaljer", + "eventMetadata": "Hendelsesmetadata", + "eventPayload": "Hendelsesdata", + "requestId": "Forespørsels-ID", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", + "offset": "Forskyvning", + "limit": "Grense", "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "resourceType": "Ressurstype", + "totalEntries": "Totalt antall oppføringer", + "tab": "Fane", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Lukk", + "runningRequests": "Aktive forespørsler", + "runningRequestsDesc": "Sanntidsvisning av aktive oppstrømsforespørsler", "clearAll": "Fjern alle", "confirmClearActiveRequests": "Vil du fjerne alle aktive forespørsler?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "Modell", + "provider": "Leverandør", + "account": "Konto", + "elapsed": "Forløpt tid", "activeStage": "Fase", "activeStageUnknown": "Ikke sendt til oppstrøm ennå", "activeStageRegistered": "Registrert", @@ -4919,32 +4919,32 @@ "activeStageRateLimitSlotAcquired": "Hastighetsbegrenserplass tildelt", "activeStageSendingToProvider": "Sender til oppstrøm", "activeStageProviderResponseStarted": "Oppstrømsrespons startet", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Antall", + "payloads": "Nyttelaster", + "viewPayloads": "Vis", + "activeCount": "{count} aktive", + "clientPayload": "Nyttelast for klientforespørsel", + "upstreamPayload": "Nyttelast for oppstrømsleverandør", + "upstreamNotSentYet": "Ikke sendt oppstrøms ennå", + "runningRequestDetailMeta": "Konto: {account} — Forløpt tid: {elapsed}", + "export": "Eksporter", + "exporting": "Eksporterer...", + "exportFailed": "Eksport mislyktes", "cleanHistoryButton": "Tøm historikk", "cleanHistoryTitle": "Tøm logghistorikk?", "cleanHistoryMessage": "Dette sletter permanent alle forespørselsloggrader, eldre detaljrader og lokale artefaktfiler under DATA_DIR/call_logs. Live-siden vil oppdateres etter opprydding.", "cleanHistoryConfirm": "Tøm historikk", "cleanHistoryCancel": "Avbryt", "cleanHistorySuccess": "Slettet {deleted} loggoppføringer, {deletedArtifacts} artefakter og {deletedDetailedLogs} eldre detaljrader.", - "cleanHistoryEmpty": "No request log history was found.", - "cleanHistoryFailed": "Failed to clean log history.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "cleanHistoryEmpty": "Fant ingen historikk for forespørselslogger.", + "cleanHistoryFailed": "Kunne ikke tømme logghistorikken.", + "timeRange": "Tidsintervall", + "lastNHours": "Siste {hours}", + "defaultRange": "standard", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Kunne ikke hente logger", + "copyFailed": "Kunne ikke kopiere loggoppføringen", + "copyLogEntry": "Kopier loggoppføring", "filterByLevel": "Filtrer etter loggnivå", "searchPlaceholder": "Søk i logger…", "searchAria": "Søk i loggoppføringer", @@ -4961,7 +4961,7 @@ }, "compressionLogTitle": "Komprimeringslogg", "compressionLogEmpty": "Ingen komprimerte forespørsler ennå. Komprimeringsstatistikk vil vises her når forespørsler behandles med komprimering aktivert.", - "tokens": "tokens" + "tokens": "tokener" }, "onboarding": { "welcome": "Velkommen", @@ -4987,9 +4987,9 @@ "multiProvider": "Multileverandør", "usageTracking": "Brukssporing", "securityDesc": "Angi et passord for å beskytte dashbordet ditt, eller hopp over nå.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Uten et passord kan du ikke legge til leverandører under oppsettet. Du kan legge dem til senere fra kontrollpanelet etter at du har angitt et passord.", "providerDesc": "Koble til din første AI-leverandør. Du kan legge til flere senere.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Du må angi et passord før du kan legge til leverandører. Gå tilbake til sikkerhetstrinnet og angi et passord, eller legg til leverandører senere fra kontrollpanelet.", "apiKeyRequired": "API-nøkkel (påkrevd)", "customUrlOptional": "Egendefinert URL (valgfritt)", "testDesc": "La oss kontrollere at leverandørtilkoblingen din fungerer.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Importerer…", "importFromFileImport": "Importer {count} leverandører", "importFromFileResult": "Importerte {success} leverandører ({failed} feilet)", + "importFromFileDownloadTemplate": "Last ned CSV-mal", + "importFromFileMoreErrors": "+{count} til", + "importFromFileSchemaHint": "CSV-kolonnene er posisjonsbaserte: provider, name, apiKey, baseUrl (valgfritt), priority (valgfritt). provider-kolonnen må være en eksisterende administrert leverandør-ID eller en allerede registrert OpenAI/Anthropic-kompatibel node-ID — denne importen oppretter ikke nye endepunktnoder.", "adaptaTutorial": { "title": "Slik kobler du til Adapta Web", "introPrefix": "Adapta autentiserer via Clerk. Tokenet", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} skjult", "warningCount": "{count} Advarsel", "noConnections": "Ingen tilkoblinger", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Utløpt", + "expiringSoonBadge": "Utløper snart", "freeTier": "Gratis lag", "freeTierAvailable": "Gratis lag tilgjengelig", "hasFreeTooltip": "Gratisnivå tilgjengelig", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Denne leverandøren er avviklet", "riskNotice": { "title": "Før du fortsetter", - "detailsTitle": "Usage caveats", + "detailsTitle": "Forbehold ved bruk", "tooltip": "Leverandør med forbehold om bruk — klikk for detaljer", "oauth": "Denne leverandøren bruker din offisielle produktøkt/OAuth, som ikke er autorisert for proxy-/rutingsbruk. Vi anbefaler ikke intensiv bruk av autonome agenter (OpenCloud-stil, lange flertrinnsflyter, store batcher) — oppstrømmen kan reagere med å begrense eller utestenge kontoen. Bruk på egen risiko.", "webCookie": "Denne leverandøren autentiserer via informasjonskapsler (cookies) fra nettøkten din. Oppstrømstjenesten kan ugyldiggjøre økten når som helst, noe som krever at du logger inn på nytt. Anbefales ikke for lange uovervåkede operasjoner. Bruk på egen risiko.", @@ -5188,9 +5191,9 @@ "cancel": "Avbryt" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} tilkobling(er) markert – opptil {maxFailures} nylige feil{lastFailureSuffix}. Klikk for å se tilkoblingsstatus.", + "lastFailureSuffix": "(siste feil {time})", + "ariaLabel": "Vis detaljer om tilkoblingsstatus, {count} advarsel/advarsler" }, "disabled": "Deaktivert", "enableProvider": "Aktiver leverandør", @@ -5225,7 +5228,7 @@ "failedCreate": "Kunne ikke opprette leverandør", "errorOccurred": "Det oppsto en feil. Vennligst prøv igjen.", "modelStatus": "Modellstatus", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Kun konfigurerte", "allModelsOperational": "Alle modeller i drift", "modelsWithIssues": "{count} modell(er) med problemer", "allModelsNormal": "Alle modellene reagerer normalt.", @@ -5236,7 +5239,7 @@ "clearing": "Rydder...", "until": "Inntil {time}", "providerTestFailed": "Providertesten mislyktes", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Tidsavbrudd under leverandørtesten – for mange tilkoblinger å teste samtidig", "modeTest": "{mode} Test", "passedCount": "{count} bestått", "failedCount": "{count} mislyktes", @@ -5249,7 +5252,7 @@ "testSummary": "{passed}/{total} bestått, {failed} mislyktes", "nameLabel": "Navn", "prefixLabel": "Prefiks", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "Basis-URL", "apiTypeLabel": "API-type", "prefixHint": "Obligatorisk. Unikt prefiks for modellnavn.", "nameHint": "Obligatorisk. En vennlig etikett for denne noden.", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "Ikon-URL", "iconUrlHint": "Valgfritt. Bilde-URL som vises som denne leverandørens ikon.", "iconUrlInvalid": "Ugyldig ikon-URL. Bruk en http(s):// eller data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Tidssone for daglig nullstilling av kvoten", + "dailyQuotaResetTimezoneHint": "Valgfri IANA-tidssone som brukes når oppstrømstjenesten utelater X-RateLimit-Reset. La feltet stå tomt for å beholde en kort nedkjølingsperiode.", + "dailyQuotaResetHourLabel": "Klokkeslett for daglig nullstilling av kvoten", + "dailyQuotaResetHourHint": "Lokal time fra 0–23 i tidssonen ovenfor. Tomt betyr ingen klokke på nodenivå.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Finner ikke leverandør", "deleteConnectionConfirm": "Vil du slette denne tilkoblingen?", "deleteConnectionConfirmNamed": "Er du sikker på at du vil slette {name}? Denne handlingen kan ikke angres.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Slett valgte ({count})", + "batchDeleteConfirm": "Slette {count} tilkobling(er)? Denne handlingen kan ikke angres.", + "batchDeleteSuccess": "Slettet {count} tilkobling(er)", "batchActivateSelected": "Aktiver", "batchDeactivateSelected": "Deaktiver", "batchRetestSelected": "Test på nytt", @@ -5292,7 +5295,7 @@ "filterError": "Feil", "filterBanned": "Blokkert", "filterCreditsExhausted": "Kreditter oppbrukt", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Søk i kontoer …", "noFilteredConnections": "Ingen tilkoblinger samsvarer med gjeldende filter.", "failedSetAlias": "Kunne ikke angi alias", "setAliasSuccess": "Alias {alias} satt", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "OpenAI-kompatible detaljer", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Embeddinger", + "audioTranscriptions": "Lydtranskripsjoner", + "audioSpeech": "Talesyntese", + "imagesGenerations": "Bildegenerering", "chatCompletions": "Chatfullføringer", "importingModels": "Importerer...", "importFromModels": "Importer fra /models", - "modelsImported": "{count} models imported", + "modelsImported": "{count} modeller importert", "allModelsAlreadyImported": "Alle modeller er allerede importert", "noNewModelsToImport": "Ingen nye modeller å importere — alle modeller finnes allerede i registeret eller listen over egendefinerte modeller", "skippingExistingModels": "Hopper over {count} eksisterende modeller", @@ -5350,13 +5353,13 @@ "importFailed": "Import mislyktes", "noNewModelsAdded": "Ingen nye modeller ble lagt til.", "adding": "Legger til...", - "close": "Close", + "close": "Lukk", "importingModelsTitle": "Importere modeller", "copyModel": "Kopier modell", "filterModels": "Filtrer modeller…", "testAllRateLimited": "Hastighetsgrense nådd, stoppet tidlig", "hideFailedAuto": "Skjul mislykkede modeller automatisk", - "selectAllModels": "Select all", + "selectAllModels": "Velg alle", "hideAllModels": "Skjul alle", "modelsActive": "aktive", "showModel": "Vis modell", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "En nøkkel per linje. Format: navn|apiKey eller bare apiKey (automatisk navngitt av indeks).", "bulkValidateKeys": "Valider hver nøkkel før du lagrer (tregere)", "bulkAddAllKeys": "Legg til alle nøkler", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# nøkkel lagt til} other {# nøkler lagt til}}", + "bulkFailedCount": "{count, plural, one {# mislyktes} other {# mislyktes}}", "optional": "Valgfritt", "anthropicCompatibleName": "Antropisk kompatibel", "openaiCompatibleName": "OpenAI-kompatibel", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Det oppstod en uventet feil", "getApiKey": "Få API-nøkkel", "getApiKeyDescription": "Registrer deg eller meld deg på for en API-nøkkel", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# tilkobling} other {# tilkoblinger}}", "messagesPath": "meldinger", "responsesPath": "svar", "chatCompletionsPath": "chat/fullføringer", @@ -5419,17 +5422,17 @@ "configured": "konfigurert", "providerProxyConfigureHint": "Konfigurer proxy for alle tilkoblinger til denne leverandøren", "providerProxy": "Leverandørfullmakt", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Reparer miljøet", + "repairEnvWorking": "Reparerer ...", + "repairEnvHint": "Gjenopprett manglende OAuth-standardverdier i .env uten å overskrive eksisterende verdier.", + "repairEnvSuccess": "OAuth-standardverdier gjenopprettet", + "repairEnvFailed": "Kunne ikke reparere .env", "noConnectionsYet": "Ingen tilkoblinger ennå", "addFirstConnectionHint": "Legg til din første tilkobling for å komme i gang", "addConnection": "Legg til tilkobling", "availableModels": "Tilgjengelige modeller", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Innebygde modeller", + "builtInModelsHint": "Registermodeller for denne leverandøren. Bruk blyanten til å angi kompatibilitetsalternativer.", "pageAutoRefresh": "Siden oppdateres automatisk...", "statusDisabled": "deaktivert", "statusConnected": "tilkoblet", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Autentiser denne tilkoblingen på nytt", "proxyConfig": "Proxy konfig", "aliasExistsAlert": "Aliaset \"{alias}\" eksisterer allerede. Bruk en annen modell eller rediger eksisterende alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "aliasnavn", + "clickToSetAlias": "Klikk for å angi alias", + "clickToEditAlias": "Alias: {alias} (klikk for å redigere)", "openRouterAnyModelHint": "OpenRouter støtter alle modeller. Legg til modeller og lag aliaser for rask tilgang.", "modelIdFromOpenRouter": "Modell-ID (fra OpenRouter)", "openRouterModelPlaceholder": "antropisk/claude-3-opus", "customModels": "Egendefinerte modeller", "customModelsHint": "Legg til modell-ID-er som ikke er i standardlisten. Disse vil være tilgjengelige for ruting.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normaliser ID-er for verktøykall til 9 tegn (f.eks. Mistral)", + "preserveDeveloperRoleLabel": "Behold utviklerrollen for OpenAI Responses (ikke tilordne den til system)", + "compatAdjustmentsTitle": "Kompatibilitet", + "compatButtonLabel": "Kompatibilitet", + "compatToolIdShort": "Verktøy-ID 9", + "compatDeveloperShort": "Utviklerrolle", + "compatDoNotPreserveDeveloper": "Ikke bevar utviklerrollen", + "compatBadgeNoPreserve": "Ikke bevar", + "compatProtocolLabel": "Protokoll for klientforespørsler", + "compatProtocolHint": "Disse alternativene gjelder når OmniRoute oppdager dette forespørselsformatet (OpenAI Chat, Responses API eller Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Omskriv innebygde web_fetch-verktøykall til OmniRoutes /v1/web/fetch.", "interceptionLoadError": "Kunne ikke laste inn avskjæringsinnstillinger: {error}", "interceptionSaveError": "Kunne ikke lagre avskjæringsinnstillinger: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Vis i Claude Code (claude/…)", + "ccAliasSectionHint": "Annonser modellene til denne leverandøren under speil-ID-er av typen claude/<provider>/<model>, slik at gateways modelloppdagelse i Claude Code kan liste dem. Av som standard — aktivering av dette dobler antallet katalogoppføringer for alle klienter.", + "ccAliasProviderLevelLabel": "Leverandørstandard", + "ccAliasModelOverridesLabel": "Overstyringer per modell", + "ccAliasModelOverrideAriaLabel": "Overstyring for {modelId}", + "ccAliasStateInherit": "Arv", + "ccAliasStateOn": "På", + "ccAliasStateOff": "Av", + "ccAliasAddModelPlaceholder": "Modell-ID (f.eks. gpt-4o)", + "ccAliasAddModelButton": "Legg til overstyring", + "ccAliasLoadError": "Kunne ikke laste inn innstillingene for oppdagelsesaliaser: {error}", + "ccAliasSaveError": "Kunne ikke lagre innstillingen for oppdagelsesalias: {error}", + "compatUpstreamHeadersLabel": "Ekstra oppstrøms-headere", + "compatUpstreamHeadersHint": "Innstilling med utvidede rettigheter — samme tillitsnivå som redigering av leverandørens API-legitimasjon. Bare betrodde administratorer bør bruke den. Slås sammen etter at OmniRoute har lagt til autentisering fra leverandørens API-nøkkel. Hvis en egendefinert header bruker samme navn som en eksisterende (f.eks. Authorization), erstatter verdien din hele den automatisk genererte headeren (inkludert Bearer-tokenet) — oppstrømstjenesten ser bare det du skrev inn, ikke nøkkelen fra innstillingene. Feilkonfigurasjon kan føre til 401-feil eller ødelagt oppstrømsautentisering. Én rad per header (f.eks. ekstra Authentication for enkelte gatewayer). Hold pekeren over eller fokuser på verdien for å forhåndsvise. Lagres når feltet mister fokus, ved klikk utenfor eller når dette panelet lukkes.", + "compatUpstreamHeaderName": "Headernavn", + "compatUpstreamHeaderValue": "Verdi", + "compatUpstreamAddRow": "Legg til header", + "compatUpstreamRemoveRow": "Fjern rad", + "compatBadgeUpstreamHeaders": "Headere", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Importer kun gratismodeller", @@ -5592,26 +5595,26 @@ "email": "E-post", "healthCheckMinutes": "Helsesjekk (min)", "healthCheckHint": "Proaktivt token-oppdateringsintervall. 0 = deaktivert.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Fjern alle valg", + "modelsActiveCount": "{active}/{total} aktive", + "noModelsMatch": "Ingen modeller samsvarer med «{filter}»", + "groupLabel": "Miljø", + "groupPlaceholder": "f.eks. eKaizen, Personlig", "failedTestConnection": "Kunne ikke teste tilkoblingen", "failed": "Mislyktes", "leaveBlankKeepCurrentApiKey": "La stå tomt for å beholde gjeldende API-nøkkel.", "editCompatibleTitle": "Rediger {type} Kompatibel", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "Rot-URL-en til det {type}-kompatible API-et ditt. Bruk Avanserte innstillinger for egendefinerte endepunktbaner.", "apiKeyForCheck": "API-nøkkel (for sjekk)", "testModelIdLabel": "Modell-ID (valgfritt)", "testModelIdPlaceholder": "f.eks. my-model-id", "testModelIdHint": "Hvis leverandøren mangler et /models-endepunkt, oppgir du en modell-ID for å validere via /chat/completions i stedet.", "compatibleProdPlaceholder": "{type} Kompatibel (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Tokenet ble oppdatert", + "tokenRefreshFailed": "Oppdatering av token mislyktes", "cursorSessionUnchanged": "Økten er allerede aktiv", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Bruk autentisering", + "exportCodexAuthFile": "Eksporter autentisering", "applyClaudeAuthLocal": "Bruk autentisering", "exportClaudeAuthFile": "Eksporter auth", "importClaudeAuth": "Importer auth", @@ -5628,7 +5631,7 @@ "claudeAuthExportFailed": "Kunne ikke eksportere Claude auth-fil", "claudeImportModalTitle": "Importer Claude Auth", "claudeImportTabSingle": "Singel", - "claudeImportTabBulk": "Bulk", + "claudeImportTabBulk": "Massehandlinger", "claudeImportTabUpload": "Last opp fil", "claudeImportTabPaste": "Lim inn JSON", "claudeImportFileLabel": "Velg .credentials.json", @@ -5660,7 +5663,7 @@ "geminiAuthExportFailed": "Kunne ikke eksportere Gemini auth-fil", "geminiImportModalTitle": "Importer Gemini Auth", "geminiImportTabSingle": "Singel", - "geminiImportTabBulk": "Bulk", + "geminiImportTabBulk": "Massehandlinger", "geminiImportTabUpload": "Last opp fil", "geminiImportTabPaste": "Lim inn JSON", "geminiImportFileLabel": "Velg oauth_creds.json", @@ -5706,7 +5709,7 @@ "importCodexAuth": "Importer auth", "codexImportModalTitle": "Importer Codex Auth", "codexImportTabSingle": "Singel", - "codexImportTabBulk": "Bulk", + "codexImportTabBulk": "Massehandlinger", "codexImportTabUpload": "Last opp fil", "codexImportTabPaste": "Lim inn JSON", "codexImportFileLabel": "Velg auth.json", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} mislyktes", "codexImportBulkZipExtracting": "Trekker ut ZIP …", "codexImportBulkZipError": "Kunne ikke pakke ut ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Avanserte innstillinger", + "chatPathLabel": "Bane for chat-endepunkt", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Egendefinert chatbane for leverandører med ikke-standardiserte API-er (f.eks. /v4/chat/completions)", + "modelsPathLabel": "Bane for modellendepunkt", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Egendefinert modellbane for validering (f.eks. /v4/models)", "clientIdentityLabel": "Klientidentitet", "clientIdentityHint": "Valgfritt. Legger til klientfingeravtrykk-headere (f.eks. User-Agent) som samsvarer med en kjent CLI for kompatible gatewayer som forventer en.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Deaktivert (manuelt)", + "statusBanned": "Utestengt / brudd på sandkassereglene", + "statusCreditsExhausted": "Utilstrekkelig saldo / oppbrukt kvote", + "showEmails": "Vis alle e-postadresser", + "hideEmails": "Skjul alle e-postadresser", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Legg til en ny API-nøkkel, eller lim inn flere nøkler", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "aggregatorsGateways": "Aggregatorer og gatewayer", + "enterpriseCloud": "Bedrift og sky", + "apiFormatLabel": "Etikett for API-format", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "Kina som API-region", + "apiRegionHint": "Hint for API-region", + "apiRegionInternational": "Internasjonal API-region", + "apiRegionLabel": "Etikett for API-region", + "apikey": "API-nøkkel", + "audio": "Lyd", + "audioProvidersHeading": "Overskrift for lydleverandører", "cloudAgentProviders": "Cloud Agent-leverandører", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Kort etikett for lyd", + "azureOpenAiBaseUrlHint": "Hint for basis-URL til Azure Open AI", + "bailianBaseUrlHint": "Hint for basis-URL til Bailian", + "claudeWebCookieHint": "Åpne claude.ai → DevTools → Application → Cookies → claude.ai, og kopier verdien for 'sessionKey'. cf_clearance, __cf_bm og _cfuvid kreves også for Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Hint for Blackbox Web-informasjonskapsel", + "blackboxWebCookiePlaceholder": "Plassholder for Blackbox Web-informasjonskapsel", "t3ChatWebCookieHint": "Åpne t3.chat → DevTools → Applikasjon → Lokal lagring → https://t3.chat, kopier 'convex-session-id'. Åpne deretter DevTools → Nettverk, kopier hele informasjonskapseloverskriften fra enhver chat-forespørsel. Lim inn begge verdiene i feltene nedenfor.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Hint for Grok Web-informasjonskapsel", "blockClaudeExtraUsageDescription": "Når aktivert, markerer OmniRoute denne Claude-tilkoblingen som utilgjengelig så snart bruks-API-et rapporterer køet ekstra bruk, slik at fallback bytter til en annen tilkobling i stedet for å fortsette med betaling-per-bruk ekstra fakturering.", "blockClaudeExtraUsageLabel": "Blokker ekstra Claude-bruk", "disableCoolingDescription": "Hopp over den forbigående nedkjølingen slik at denne tilkoblingen forblir kvalifisert selv etter gjenopprettelige feil (sluttilstander som utestengt/utløpt gjelder fortsatt).", "disableCoolingLabel": "Deaktiver nedkjøling for denne tilkoblingen", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 nøkkel lagt til} other {# nøkler lagt til}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplikat hoppet over} other {# duplikater hoppet over}}", + "bulkPasteHint": "Lim inn én API-nøkkel per linje. Tomme linjer ignoreres, og duplikatnøkler hoppes over.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Legger til beta-headeren redact-thinking for CC Compatible-oppstrømstjenester som krever skjulte Claude-tankestrømmer.", + "ccCompatibleRedactThinkingLabel": "Aktiver redact-thinking-beta", + "ccCompatibleSummarizeThinkingDescription": "Legger til `display: \"summarized\"` i CC Compatible-forespørsler om tenkning, slik at støttede Claude-modeller strømmer synlige tankeoppdateringer.", + "ccCompatibleSummarizeThinkingLabel": "Aktiver oppsummert visning av tenkning", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,20 +5811,20 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Bruk tjenestenivået priority for Codex-forespørsler når det er tilgjengelig.", + "codexFastServiceTierLabel": "Codex-tjenestenivået fast", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", - "newApiAggregatorToggleLabel": "Aggregator Gateway", + "compatUpstreamHeaderNamePlaceholder": "Plassholder for headernavn til kompatibel oppstrømstjeneste", + "compatUpstreamHeaderValuePlaceholder": "Plassholder for verdi i Compat-oppstrømshode", + "compatible": "Kompatibel", + "configuredCount": "Konfigurert antall", + "consoleApiKeyOracleHint": "Tips for Oracle-konsollens API-nøkkel", + "consoleApiKeyOracleLabel": "API-nøkkel for Oracle-konsollen", + "consoleApiKeyOraclePlaceholder": "Plassholder for Oracle-konsollens API-nøkkel", + "newApiUserIdLabel": "New-API-bruker-ID", + "newApiUserIdPlaceholder": "f.eks. 12345", + "newApiUserIdHint": "Verdien for AgentRouter New-Api-User-hodet, som brukes sammen med konsollens API-nøkkel for å hente kvotebalansen.", + "newApiAggregatorToggleLabel": "Aggregator-gateway", "newApiAggregatorToggleHint": "Aktiver balanseoppdagelse for New-API / One-API / Sub2API aggregator-noder. Dashbordet vil vise balanse-merket, og kvote-preflight-ruting vil hoppe over utmattede kontoer.", "newApiAggregatorConsoleApiKeyHint": "System Access Token for aggregatorens /api/user/self-endepunkt. Ikke routing API-nøkkelen.", "newApiAggregatorUserIdHint": "New-Api-User header-verdi brukt for å hente aggregatbrugerens kvote-balanse.", @@ -5830,53 +5833,53 @@ "featureFlagNewApiAggregatorBalanceDescription": "Aktiver balanseringsdeteksjon for New-API / One-API / Sub2API aggregator-kompatible noder", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Tips for egendefinert brukeragent", + "customUserAgentLabel": "Egendefinert brukeragent", + "databricksBaseUrlHint": "Tips for Databricks-basis-URL", + "defaultThinkingStrengthHint": "Brukes når en forespørsel ikke angir resonneringsinnsats.", + "defaultThinkingStrengthLabel": "Standard tenkestyrke", + "deleteAllExtraApiKeys": "Slett alle", + "excludedModelsHint": "Tips for ekskluderte modeller", + "excludedModelsLabel": "Ekskluderte modeller", + "excludedModelsPlaceholder": "Plassholder for ekskluderte modeller", + "expirationBannerExpired": "Utløpsbanner: Utløpt", + "expirationBannerExpiredDesc": "Beskrivelse av utløpsbanner: Utløpt", + "expirationBannerExpiringSoon": "Utløpsbanner: Utløper snart", + "expirationBannerExpiringSoonDesc": "Beskrivelse av utløpsbanner: Utløper snart", + "extraApiKeyMasked": "Nøkkel {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Tips for ekstra API-nøkler", + "extraApiKeysLabel": "Ekstra API-nøkler", + "apiKeyHealthLabel": "API-nøkkelstatus", + "apiKeyStatusActive": "Aktiv", + "apiKeyStatusWarning": "Advarsel ({count} feil)", + "apiKeyStatusInvalid": "Ugyldig", + "primaryKey": "Primærnøkkel", + "apiKeyInvalidAlert": "{count} API-nøkkel/-nøkler er merket som ugyldige på grunn av autentiseringsfeil i tilkoblingene: {connections}. De hoppes over i rotasjonen. Klikk for å se gjennom.", + "apiKeyInvalidAlertTitle": "Varsel om API-nøkkelstatus", + "apiKeyWarningAlert": "{count} API-nøkkel/-nøkler har advarselsstatus på grunn av en forhøyet feilrate i tilkoblingene: {connections}. Se gjennom for å forhindre rotasjonsproblemer.", + "apiKeyWarningAlertTitle": "API-nøkkeladvarsel", + "googlePseInfo": "Informasjon om Google Pse", "antigravityProjectIdHint": "Valgfri overstyring for Antigravity Cloud Code-forespørsler. La feltet stå tomt for å bruke prosjektet som ble oppdaget under Google OAuth.", "antigravityClientProfileLabel": "Klientprofil", "antigravityClientProfileHint": "Velg hvilken Antigravity-klientidentitet OmniRoute presenterer for API-et.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Codex Fast-nivået er aktivt", - "tierFast": "Fast", - "antigravityProjectIdLabel": "Google Cloud Project ID", + "tierFast": "Rask", + "antigravityProjectIdLabel": "Google Cloud-prosjekt-ID", "antigravityProjectIdPlaceholder": "min-gcp-prosjekt-ID", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Plassholder for Grok Web-informasjonskapsel", + "herokuBaseUrlHint": "Hint for Heroku-base-URL", + "hideEmail": "Skjul e-post", + "imageProviders": "Bildeleverandører", "videoProviders": "Videogenerering", "embeddingRerankProviders": "Innebygging og omrangering", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Bilder", + "llmProviders": "LLM-leverandører", + "localProviderApiKeyOptionalHint": "Hint for valgfri API-nøkkel for lokal leverandør", + "localProviderBaseUrlHint": "Hint for base-URL til lokal leverandør", + "localProviders": "Lokale leverandører", + "maxConcurrentWholeNumberError": "Feilmelding for maksimalt antall samtidige må være et heltall", "m365TierLabel": "Copilot-nivå", "m365TierHint": "Velg hvilken Microsoft 365 Copilot-flate denne tilkoblingen bruker. Individuell er standard forbruker-BizChat; Utdanning og Enterprise (arbeid) velger sine leietakerflater.", "m365TierIndividualOption": "Individuell (standard)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Billig", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Fest denne leverandøren til et rutingsnivå i stedet for å la OmniRoute utlede det fra modellprising.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Hint for Muse Spark-nettinformasjonskapsel", + "museSparkWebCookiePlaceholder": "Plassholder for Muse Spark-nettinformasjonskapsel", + "oauth": "OAuth", + "openCliTools": "Åpne CLI-verktøy", + "openSettings": "Åpne innstillinger", + "openaiResponsesStoreDescription": "Tillat at kompatible Responses API-forespørsler bevarer lagret responstilstand.", + "openaiResponsesStoreLabel": "OpenAI Responses-lagring", + "perplexitySearchSharedKeyInfo": "Informasjon om delt nøkkel for Perplexity Search", + "perplexityWebCookieHint": "Hint for Perplexity-nettinformasjonskapsel", + "perplexityWebCookiePlaceholder": "Plassholder for Perplexity-nettinformasjonskapsel", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Overstyringer av hastighetsgrense", "rateLimitOverridesMaxConcurrentHint": "Overstyring av maks samtidige forespørsler for denne tilkoblingen. Overstyrer grensen på kontonivå.", "rateLimitOverridesMaxConcurrentLabel": "Maks samtidige (hastighetsgrense)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Maksimal tid (ms) en forespørsel kan vente på en ledig plass innenfor hastighetsbegrensningen før den mislykkes. Overstyrer den globale robusthetsinnstillingen kun for denne tilkoblingen.", + "rateLimitOverridesMaxWaitMsLabel": "Maksimal ventetid i kø (ms)", "rateLimitOverridesMinTimeHint": "Minimumstid (ms) mellom forespørsler. Overstyrer standardforsinkelsen for hastighetsbegrenseren.", "rateLimitOverridesMinTimeLabel": "Min. intervall (ms)", "rateLimitOverridesRpdHint": "Maksimalt antall forespørsler per dag for denne tilkoblingen. Overstyrer leverandørens standard.", @@ -5915,55 +5918,55 @@ "rateLimitOverridesTpdHint": "Maks tokens per dag for denne tilkoblingen. Overstyrer leverandørstandarden.", "rateLimitOverridesTpdLabel": "TPD (Tokens/dag)", "rateLimitOverridesTpmHint": "Maks tokens per minutt for denne tilkoblingen. Overstyrer leverandørstandarden.", - "rateLimitOverridesTpmLabel": "TPM (Tokens/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "rateLimitOverridesTpmLabel": "TPM (tokener/min)", + "refreshOauthTokenTitle": "Oppdater OAuth-token", + "regionHint": "Hint for region", + "regionLabel": "Region", + "removeThisKey": "Fjern denne nøkkelen", + "routingTagsHint": "Hint for rutingstagger", + "routingTagsLabel": "Rutingstagger", + "routingTagsPlaceholder": "Plassholder for rutingstagger", + "search": "Søk", + "searchEngineIdHint": "Hint for søkemotor-ID", + "searchEngineIdLabel": "Søkemotor-ID", + "searchEngineIdRequired": "Søkemotor-ID er påkrevd", + "searchProvider": "Søkeleverandør", + "searchProviderDesc": "Beskrivelse av søkeleverandør", "searchProviders": "Søk etter leverandører...", "searchByModel": "Søk etter modell…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Søkeleverandører", + "searxngBaseUrlHint": "Hint for Searxng-base-URL", + "searxngInfo": "Informasjon om Searxng", + "sessionCookieLabel": "Øktinformasjonskapsel", + "showEmail": "Vis e-post", + "snowflakeBaseUrlHint": "Hint for Snowflake-basis-URL", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Hint for etikettgruppe", + "tagGroupLabel": "Etikettgruppe", + "tagGroupPlaceholder": "Plassholder for etikettgruppe", + "testModel": "Test modell", + "testingModel": "Tester modell", "modelTestQuotaTooltip": "Kvote brukt opp — tilbakestilles i morgen eller trenger påfyll", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Merke for utløpt token", + "tokenExpiredTitle": "Tokenet er utløpt", + "tokenExpiresSoonTitle": "Tokenet utløper snart", + "tokenShort": "Kort token", + "totalKeysRotating": "{count, plural, one {1 nøkkel roteres} other {# nøkler roteres}}", + "unhideModel": "Vis modell igjen", + "upstreamProxyProviders": "Oppstrøms proxy-leverandører", "validationModelIdHint": "Modell som brukes til å verifisere API-nøkkelen. La stå tomt for å bruke leverandørens første tilgjengelige modell.", "validationModelIdLabel": "Valideringsmodell", "validationModelIdPlaceholder": "f.eks. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Lim inn JSON-filen for tjenestekontoen din ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) eller et OAuth access_token", + "webCookieProviders": "Leverandører av nettcookies", + "weeklyShort": "Ukentlig", + "xiaomiMimoBaseUrlHint": "Hint for Xiaomi Mimo-basis-URL", "globalCodexServiceMode": "Global Codex-tjenestemodus", "connect": "Koble til", "manualApiKey": "Manuell API-nøkkel", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Oppdag påloggingsinformasjon for AI-leverandører (OpenAI, Anthropic, Google, Mistral, xAI) lagret av Zed IDE i operativsystemets nøkkelring, og importer dem som tilkoblinger. Zed IDE må være installert på denne maskinen.", "zedImportButton": "Importer fra Zed", "zedImportFailed": "Zed import feilet", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Hint for Zed-import", + "zedImportNetworkError": "Nettverksfeil ved Zed-import", + "zedImportNone": "Ingen Zed-import", "zedImportSuccess": "Importerte {credentials} legitimasjon(er) fra Zed for {providers} leverandør(er)", "zedImporting": "Importerer…", "zedNoCredentials": "Ingen Zed-påloggingsinformasjon funnet i nøkkelringen", @@ -6016,7 +6019,7 @@ "providerDetailFastTierTooltip": "Bruk Codex Fast tier på alle Codex-tilkoblinger som standard", "providerDetailFastDefaultLabel": "Rask standard", "providerDetailBrowserManualConnect": "Nettleser/manuell tilkobling", - "providerDetailAuthUrl": "Auth URL", + "providerDetailAuthUrl": "Autentiserings-URL", "providerDetailCallbackUrl": "Tilbakeringings-URL", "providerDetailValidClaudeCredentialsFile": "Gyldig Claude-legitimasjonsfil", "providerDetailPathAutoDetectedAllOs": "Banen oppdages automatisk per OS (Linux/Mac/Windows).", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "oppføring {number}", "claudeImportParseError": "analysefeil", "claudeImportNoValidEntries": "Ingen gyldige oppføringer å importere", - "webFetch": "Web Fetch", + "webFetch": "Netthenting", "webFetchTooltip": "Leverandører som henter ut innhold fra nettadresser (HTML → Markdown, skraping, skjermbilde)", "webFetchProvidersHeading": "Web Fetch-leverandører", "compatibleProvidersDesc": "OpenAI-kompatible og Anthropic-kompatible endepunkter du drifter eller konfigurerer. Pek en hvilken som helst OpenAI-SDK til din egen URL og rut forespørsler hit.", @@ -6052,7 +6055,7 @@ "imageProvidersDesc": "Bildegenererings- og datasynleverandører — lag bilder fra tekst eller analyser eksisterende.", "videoProvidersDesc": "Videogenereringsleverandører. Lag korte videoklipp fra tekstledetekster eller bilder.", "onboardingWizard": "Veiviser for onboarding av leverandør", - "onboardingWizardShort": "Onboarding Wizard", + "onboardingWizardShort": "Oppstartsveiviser", "onboardingWizardDescription": "Koble API-nøkkel, tilpasset kompatible og OAuth-leverandører med validering, utholdenhet og en umiddelbar tilkoblingstest.", "onboardingStepType": "Type", "onboardingStepProvider": "Leverandør", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Rabattert API-proxy for 40+ modeller inkludert GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Hent API-nøkkelen din på https://freeaiapikey.com/dashboard. Base-URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Få $300 i gratis API-kreditter på https://freemodel.dev — ingen betalingsinformasjon påkrevd. OpenAI-kompatibelt endepunkt. GPT-5.4- og GPT-5.5-modeller tilgjengelig.", "friendliai": "Gratisnivå for serverløs inferens — ingen kredittkort påkrevd", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Gratisnivå via Google AI Studio; kvoter per modell publiseres ikke lenger (sjekk kvotesiden i AI Studio) — ingen kredittkort kreves.", "gigachat": "Koble til GigaChat (Sber) med en API-nøkkel.", "gitlab": "GitLab personlig adgangstoken for det offentlige Code Suggestions-API-et. Konfigurer en selvvertet base-URL når du ikke bruker gitlab.com.", "gitlawb-gmi": "Hent API-nøkkelen din fra Gitlawb Opengateway-dashbordet.", @@ -6184,7 +6187,7 @@ "glm-cn": "Koble til GLM Coding (Kina) med en API-nøkkel.", "glmt": "Forhåndsinnstilt GLM-profil med høyere token-budsjett, tenkning aktivert og lengre tidsavbrudd.", "getgoapi": "Koble til GoAPI med en API-nøkkel.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Gratisabonnement: grenser per modell (200K tokener/dag per chatmodell; se console.groq.com/docs/rate-limits for RPM/RPD) — ingen betalingsmåte er registrert.", "haiper": "Hent API-nøkkel på haiper.ai/haiper-api", "heroku": "Koble til Heroku AI med en API-nøkkel.", "hcnsec": "Hent API-nøkkel på api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Opprett en API-nøkkel på https://app.requesty.ai, og lim den deretter inn her som et Bearer-token. OpenAI-kompatibelt endepunkt på https://router.requesty.ai/v1, med en live /v1/models-katalog.", "runwayml": "Runway-videogenerering er oppgavebasert. OmniRoute sender inn tekst-til-video- eller bilde-til-video-jobber, poller /v1/tasks/[id], og normaliserer de ferdige videoresultatene tilbake til den OpenAI-lignende /v1/videos/generations-responsen.", "sambanova": "$5 gratis kreditt ved registrering (30 dagers gyldighet), ikke krav om kredittkort", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Opprett en API-nøkkel på https://seekai.cc, og lim den deretter inn her som et Bearer-token. OpenAI-kompatibel basis-URL: https://seekai.cc/v1.", "sap": "Modellsøk bruker /v2/lm/scenarios/foundation-models/models på AI_API_URL. Chat-forespørsler bruker deploymentUrl/chat/completions og krever AI-Resource-Group.", "sarvam": "Sarvam AI er OpenAI-kompatibel på /v1. OmniRoute undersøker /v1/models og ruter chat-trafikk til /v1/chat/completions. Modeller er tilpasset for indiske språk.", "scaleway": "1M gratis tokens for nye kontoer — EU/GDPR-kompatibel (Paris), Qwen3 235B og Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Koble til Claude Code med den eksisterende OAuth-flyten.", "cline": "Koble til Cline med den eksisterende OAuth-flyten.", "cursor": "Koble til Cursor IDE med den eksisterende OAuth-flyten.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Koble til Cursor med en bruker-API-nøkkel (crsr_...) fra cursor.com/dashboard/api; ingen IDE-økt er nødvendig.", "github": "Koble til GitHub Copilot med den eksisterende OAuth-flyten.", "gitlab-duo": "OAuth-applikasjon med ai_features + read_user-scopes. Konfigurer GITLAB_DUO_OAUTH_CLIENT_ID og eventuelt GITLAB_DUO_OAUTH_CLIENT_SECRET på denne OmniRoute-instansen.", "kilocode": "Koble til Kilo Code med den eksisterende OAuth-flyten.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Kopier den nødvendige legitimasjonen fra leverandørens eget domene. For informasjonskapsler kopierer du bare informasjonskapseloverskriften og utelat informasjonskapsel:.", "webSessionGuideStep3Manual": "Manuell sti: åpne nettleserens utviklerverktøy (F12 → Nettverk), oppdater siden, åpne en autentisert forespørsel, og kopier Cookie-headerverdien fra Forespørselshoder — utelat Cookie:-prefikset.", "webSessionGuideStep4": "Lim den inn her og kontroller tilkoblingen. Hvis den slutter å fungere, logger du på igjen og erstatter den med en ny verdi.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importer .har-fil", + "harImportButtonBusy": "Importerer…", + "harImportButtonHint": "Eksporter fra Network-fanen i DevTools etter at du har sendt minst én chatmelding.", + "harImportStatusValid": "Importert — gyldig i ~{minutes} min.", + "harImportStatusExpiringSoon": "Importert — bare gyldig i ~{minutes} min til.", + "harImportStatusExpired": "Importert, men dette tokenet utløp allerede (for {minutes} min siden) — eksporter en ny HAR-fil.", + "harImportStatusUnknownExpiry": "Importert. Kunne ikke lese utløpstiden.", + "harImportErrorNotJson": "Filen inneholder ikke gyldig JSON — er den virkelig en .har-eksport?", + "harImportErrorNoEntries": "Denne HAR-filen har ingen registrerte nettverksoppføringer.", + "harImportErrorNoChathubUrl": "Fant ingen Copilot-chattilkobling i denne HAR-filen. Send minst én chatmelding i m365.cloud.microsoft før du eksporterer.", + "harImportErrorUnparsableUrl": "Fant chattilkoblingen, men kunne ikke lese URL-en.", + "harImportErrorMissingFields": "Fant chattilkoblingen, men tokenet manglet.", + "harImportErrorReadFailed": "Kunne ikke lese filen.", + "harImportErrorUnknown": "Kunne ikke hente ut en påloggingsopplysning fra HAR-filen.", "webSessionSecurityHint": "Behandle dette som et passord: det kan få tilgang til den påloggede nettkontoen din til den utløper eller blir opphevet.", "webNoAuthGuideTitle": "Ingen legitimasjon kreves", "webNoAuthGuideBody": "{provider} trenger ikke en API-nøkkel eller informasjonskapsel. Lagre tilkoblingen for å bruke dets gratis webendepunkt.", @@ -6364,13 +6367,13 @@ "checkWebToken": "Sjekk token", "huggingchatLabel": "HuggingChat (Gratis)", "huggingchatDesc": "Gratis LLM-chat via huggingface.co/chat", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe-nett", "poeWebDesc": "Multimodell-chat via poe.com", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice-nett", "veniceWebDesc": "Personvernfokusert AI-chat", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel-nett", "v0VercelWebDesc": "AI-kodegenerering via v0.dev", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi-nett", "kimiWebDesc": "Moonshot AI forbruker-chat via www.kimi.com (internasjonal, Connect-RPC API)", "doubaoWebLabel": "Doubao Web", "doubaoWebDesc": "ByteDance AI-chat via doubao.com", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Codex tjenestemodus oppdatert", "codexServiceTierActive": "Codex {tier} tjenestelag er aktivt", "codexTierFastLabel": "Rask", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Fleksibel", "commandCodeApplyFailed": "Kunne ikke bruke kommandoen Code auth", "commandCodeApplyingApproval": "Nettleser godkjent, anvender…", "commandCodeApplyingKey": "Bruker nettlesergodkjent nøkkel…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Kommando Kode auth utløpt", "commandCodeConnected": "Kommando Kode tilkoblet", "commandCodeConnectionAdded": "Kommando Kode-tilkobling lagt til", + "clearConnectionCooldown": "Nullstill ventetid", + "clearConnectionCooldownInProgress": "Nullstiller…", + "clearConnectionCooldownTitle": "Nullstill ventetiden nå – bruk dette når kvoten allerede er oppdatert hos oppstrømstjenesten", "commandCodeLinkExpired": "Kommando Kode-lenke utløpt", "commandCodeOpeningStudio": "Åpner Command Code Studio…", "commandCodePopupBlocked": "Popup blokkert. Vennligst tillat popup-vinduer og prøv Command Code Connect igjen.", "commandCodeStartFailed": "Kunne ikke starte Command Code auth", "connectionDeleted": "Tilkobling slettet", "connectionFallback": "tilkobling", + "connectionCooldownCleared": "Ventetiden er nullstilt – tilkoblingen er med i rutingen igjen", "coolingConnectionsDescription": "Disse tilkoblingene kjøler ned etter siste forespørsel. OmniRoute hopper over dem til timeren utløper — ingen manuell deaktivering nødvendig.", "coolingConnectionsTitle": "For øyeblikket kjøler ({count})", + "failedClearConnectionCooldown": "Kunne ikke nullstille ventetiden", "failedDeleteAlias": "Kunne ikke slette aliaset", "failedDeleteConnection": "Kunne ikke slette tilkoblingen", "failedDistributeProxies": "Kunne ikke distribuere proxyer.", @@ -6446,7 +6454,7 @@ "failedUpdateCliproxyRouting": "Kunne ikke oppdatere CLIProxyAPI-ruting", "failedUpdateCodexLimitPolicy": "Kunne ikke oppdatere Codex grensepolicy", "failedUpdateCodexServiceMode": "Kunne ikke oppdatere Codex-tjenestemodus", - "filterByMedia": "Media", + "filterByMedia": "Medier", "freeBadge": "Gratis", "kimiCodeApiKeyLabel": "Kimi Code API-nøkkel", "modelTestFailed": "Modelltesten feilet", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Innstillinger for lagrede modellendepunkter", "searchByModelAria": "Søk etter modell", "selectSupportedEndpoint": "Velg minst ett støttet endepunkt", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Testverktøy / CLI" }, "settings": { "title": "Innstillinger", @@ -6483,7 +6486,7 @@ "security": "Sikkerhet", "appearance": "Utseende", "routing": "Ruting", - "cache": "Cache", + "cache": "Hurtigbuffer", "resilience": "Spenst", "description": "Beskrivelse", "enable": "Aktiver", @@ -6554,22 +6557,22 @@ "systemPrompt": "Systemmelding", "thinkingBudget": "Tenker budsjett", "proxy": "Fullmakt", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP-proxy", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Proxyseksjoner", + "requestBodyLimitTitle": "Grense for forespørselskropp", + "requestBodyLimitDescription": "Maksimal størrelse på API-nyttelasten som godtas før forespørselskroppen analyseres. Dedikerte opplastingsruter beholder minst den innebygde grensen på 100 MB.", + "requestBodyLimitInputLabel": "Grense for forespørselskropp i MB", + "requestBodyLimitEmptyError": "Angi en grense i MB", + "requestBodyLimitWholeNumberError": "Bruk et heltall", + "requestBodyLimitMinimumError": "Minimum er {min} MB", + "requestBodyLimitMaximumError": "Maksimum er {max} MB", + "requestBodyLimitLoadFailed": "Kunne ikke laste inn innstillingene for forespørselsgrensen", + "requestBodyLimitSaveSuccess": "Grensen for forespørselskropp er lagret", + "requestBodyLimitSaveFailed": "Kunne ikke lagre grensen for forespørselskropp", + "requestBodyLimitSaving": "Lagrer...", + "requestBodyLimitSave": "Lagre", + "requestBodyLimitCurrent": "Gjeldende: {value}", "cacheConfigLoadFailed": "Kunne ikke laste inn cache-innstillinger", "cacheConfigSaveSuccess": "Cache-innstillinger lagret", "cacheConfigSaveFailed": "Kunne ikke lagre hurtigkataloginnstillinger", @@ -6593,59 +6596,59 @@ "enablePassword": "Aktiver passord", "darkMode": "Mørk modus", "lightMode": "Lysmodus", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Minne", + "memoryDesc": "Permanent samtaleminne på tvers av økter", + "memoryEnabled": "Aktiver minne", + "memoryEnabledDesc": "Når dette er aktivert, setter OmniRoute inn relevant kontekst fra tidligere.", "memoryTokenCostWarning": "Obs: med minne aktivert, injiserer OmniRoute opptil {tokens} tokener med hentet kontekst i hver chat-forespørsel — dette øker tokenbruk og kostnad. For å hoppe over injeksjon for en spesifikk forespørsel, send headeren \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", + "maxTokens": "Maks antall tokener", + "retentionDays": "Oppbevaring", + "recent": "Nylige", + "recentDesc": "Kronologisk vindu", + "semantic": "Semantisk", + "semanticDesc": "Vektorsøk", "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "hybridDesc": "Nylige + semantisk", + "skillsTitle": "Ferdigheter", + "skillsDesc": "Verktøy for modeller", + "skillsEnabled": "Aktiver ferdigheter", + "skillsEnabledDesc": "Lar agenter utløse funksjoner.", + "skillsComingSoon": "Markedsplass for ferdigheter kommer snart.", + "memorySkillsTitle": "Minne og ferdigheter", + "memorySkillsDesc": "Vedvarende kontekst og funksjoner", + "modelsDevTitle": "Modelldatabase", + "modelsDevDesc": "Synkroniser priser, funksjoner og spesifikasjoner automatisk fra models.dev", + "modelsDevEnabled": "Aktiver synkronisering med models.dev", + "modelsDevEnabledDesc": "Hent modellpriser, funksjoner og spesifikasjoner fra open source-databasen models.dev", + "modelsDevInterval": "Synkroniseringsintervall", + "syncNow": "Synkroniser nå", + "syncing": "Synkroniserer...", + "lastSync": "Siste synkronisering", + "never": "Aldri", "justNow": "akkurat nå", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Synkroniseringsstatistikk", + "modelsDevStatsDesc": "Gjeldende datadekning fra models.dev", "providers": "Leverandører", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modeller med prisinformasjon", + "capabilities": "Funksjoner", + "lastSyncCount": "Antall ved siste synkronisering", + "lastSyncFull": "Siste fullstendige synkronisering", + "modelsDevInfo": "Slik fungerer det", + "modelsDevInfoDesc": "models.dev er en open source-database med spesifikasjoner for KI-modeller som vedlikeholdes av SST/OpenCode-teamet. Den inneholder priser, funksjoner, kontekstgrenser og modaliteter for over 4 000 modeller fra over 100 leverandører.", + "modelsDevInfoResolution": "Rekkefølge for prisfastsettelse (høyeste prioritet først):", + "modelsDevInfoOrder": "Brukeroverstyring → models.dev → LiteLLM → Hardkodet standardverdi", "systemTheme": "Systemtema", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Aktiver feilsøkingsmodus", "logToolSourcesToggle": "Loggfør verktøykilder", "logToolSourcesDescription": "Generer en diagnostisk logglinje per forespørsel som oppsummerer antall verktøy og fordelingen mellom MCP/hostet/klient-kilder.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Fest informasjon på startsiden", "homePinnedSectionsDesc": "Velg hvilke seksjoner som skal festes øverst på startsiden.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Leverandørenes kvotegrenser", + "homeProviderQuotaLimitsDesc": "Fest statuspanelet for leverandørkvoter (med knappen Oppdater alle) øverst på startsiden.", + "homeQuickStart": "Hurtigstart", + "homeQuickStartDesc": "Vis Hurtigstart-panelet på startsiden.", + "homeProviderTopology": "Leverandørtopologi", + "homeProviderTopologyDesc": "Vis leverandørtopologien på startsiden.", "accountEmailVisibility": "Synlighet for konto-e-post", "accountEmailVisibilityDesc": "Vis fullstendige e-postadresser for kontoer på tvers av leverandører, kombinasjoner, logger, kvoter og sandkasseskjermer. Slå dette av for å maskere dem som standard.", "comboConfigMode": "Konfigurasjonsmodus for komboer", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Oppdateringsintervall", "providerQuotaAutoRefreshIntervalDesc": "Hvor ofte kvotevisningen skal oppdateres, i sekunder.", "seconds": "sekunder", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Vis sidefeltelementer", "enableCache": "Aktiver cache", - "cacheTTL": "Cache TTL", + "cacheTTL": "TTL for hurtigbuffer", "maxCacheSize": "Maks cachestørrelse", "clearCache": "Tøm buffer", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Hurtigbufferen ble tømt", + "clearCacheFailed": "Kunne ikke tømme hurtigbufferen", "cacheHits": "Cache-treff", - "cacheMisses": "Cache Misses", + "cacheMisses": "Hurtigbuffermiss", "hitRate": "Trefffrekvens", "cacheEntries": "Bufferoppføringer", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Innstillinger for hurtigbuffer", + "semanticCache": "Semantisk hurtigbuffer", + "maxEntries": "Maksimalt antall oppføringer", + "ttlMinutes": "TTL (minutter)", "promptCache": "Spør Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Strategi", + "preserveClientCache": "Behold klientens hurtigbuffer", + "enabled": "Aktivert", "loading": "Loading...", "saving": "Lagrer...", - "save": "Save", + "save": "Lagre", "circuitBreaker": "Strømbryter", "retryPolicy": "Retningslinjer for forsøk", "maxRetries": "Max prøver på nytt", @@ -6690,28 +6693,28 @@ "timeoutMs": "Tidsavbrudd (ms)", "enableSystemPrompt": "Aktiver systemforespørsel", "systemPromptText": "Systemmeldingstekst", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Deaktiver utestengte kontoer automatisk", + "autoDisableDescription": "Merk leverandørtilkoblinger permanent som deaktiverte hvis de returnerer bestemte definitive utestengingssignaler (f.eks. HTTP 403 «verify your account»). Dette fjerner dem fra kombinasjonsrotasjonen.", + "autoDisableThreshold": "Utestengingsterskel", + "autoDisableThresholdDesc": "Antall påfølgende utestengingssignaler som kreves før permanent deaktivering.", + "autoDisableBannedScope": "Bruk automatisk deaktivering på", + "autoDisableBannedScopeDesc": "Påloggingsplasser (betalte abonnementer og gratiskontoer) kan låses av oppstrømstjenesten hvis OmniRoute fortsetter å prøve etter en utestenging. Forhåndsbetalte API-nøkler har ikke denne risikoen – behold dem i utvalget, slik at «fyll først» kan bruke neste nøkkel.", + "autoDisableBannedScopeAll": "Alle tilkoblinger", + "autoDisableBannedScopeAllDesc": "Deaktiver alle tilkoblinger som returnerer et permanent utestengingssignal, inkludert forhåndsbetalte API-nøkler.", + "autoDisableBannedScopeSubscription": "Kun påloggings-/abonnementskontoer", + "autoDisableBannedScopeSubscriptionDesc": "Deaktiver OAuth-, informasjonskapsel-, økt- og nettpåloggingsplasser (betalte eller gratis). Forhåndsbetalte API-nøkler forblir aktive, slik at rutingen kan bytte til en reserve.", "customBannedSignals": "Forbudte nøkkelord", "customBannedSignalsDesc": "Ytterligere nøkkelord som utløser deteksjon av permanent kontoutestengelse. Innebygde nøkkelord gjelder alltid.", "customBannedSignalsPlaceholder": "f.eks. api key revoked", "noCustomBannedSignals": "Ingen egendefinerte nøkkelord. Kun innebygde nøkkelord er aktive.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Robusthetsstruktur", "resilienceStructureDesc": "Denne siden konfigurerer bare atferd. Live breaker-tilstand vises på helsesiden. Kombinasjonsspesifikk gjenforsøk og round-robin sporkontroll forblir på kombinasjonsinnstillinger.", "enableThinking": "Aktiver tenkning", - "maxThinkingTokens": "Max Thinking Tokens", + "maxThinkingTokens": "Maksimalt antall tenketokener", "enableProxy": "Aktiver proxy", "perKeyProxyEnabled": "Aktiver proxytildeling per nøkkel", "perKeyProxyEnabledDesc": "Når aktivert, kan hver leverandørtilkobling bruke sin egen proxytildeling", - "proxyUrl": "Proxy URL", + "proxyUrl": "Proxy-URL", "pricingRates": "Prisformat", "currentPricing": "Gjeldende prisoversikt", "loadingPricing": "Laster inn prisdata ...", @@ -6746,27 +6749,27 @@ "themeSystem": "System", "endpointTunnelVisibility": "Synlighet for endepunkttunnel", "endpointTunnelVisibilityDesc": "Skjul tunnelkontroller fra endepunktsiden uten å endre tunneltilstand.", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Cloudflare-hurtigtunnel", "showCloudflareTunnelDesc": "Vis Cloudflare Quick Tunnel-kontroller på endepunktsiden.", "showTailscaleFunnel": "Halescale trakt", "showTailscaleFunnelDesc": "Vis Tailscale traktkontroller på Endpoint-siden.", "showNgrokTunnel": "ngrok tunnel", "showNgrokTunnelDesc": "Vis ngrok-tunnelkontroller på endepunktsiden.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Skjul sidefeltelementer", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Alle", + "presetAllDesc": "Vis alt", + "presetEssentials": "Grunnleggende", + "presetEssentialsDesc": "Nybegynnersti – avanserte verktøy er fortsatt søkbare", + "presetMinimal": "Minimalistisk", + "presetMinimalDesc": "Kun kjernesider", + "presetDeveloper": "Utvikler", + "presetDeveloperDesc": "Utvikler- og proxyverktøy", + "presetAdmin": "Administrator", + "presetAdminDesc": "Overvåking og revisjon", + "settingsSidebarTitle": "Tilpasning av sidefelt", + "settingsSidebarDesc": "Velg hvilke elementer som skal vises i sidefeltet. Essensielle elementer gjør at avanserte verktøy fortsatt kan søkes opp.", "hideHealthLogs": "Skjul helsesjekklogger", "hideHealthLogsDesc": "Når PÅ, undertrykk [HealthCheck]-meldinger i serverkonsollen", "themeAccent": "Temafarge", @@ -6780,19 +6783,19 @@ "themeOrange": "Oransje", "themeCyan": "Cyan", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Tilpass applikasjonsnavnet og logoen", + "appName": "Applikasjonsnavn", + "appNameDesc": "Visningsnavn som vises i sidefeltet og nettleserfanen", + "customLogo": "URL til egendefinert logo", + "customLogoDesc": "URL til det egendefinerte logobildet ditt", + "uploadLogo": "Last opp logo", + "resetLogo": "Tilbakestill til standard", + "logoPreview": "Forhåndsvisning", + "customFavicon": "Nettleserikon", + "customFaviconDesc": "URL til det egendefinerte nettleserikonet ditt (vises i nettleserfanen)", + "uploadFavicon": "Last opp nettleserikon", + "resetFavicon": "Tilbakestill nettleserikon", + "faviconPreview": "Forhåndsvisning av nettleserikon", "logoFileTooLarge": "Logofilen må være mindre enn 500 KB", "faviconFileTooLarge": "Faviconfilen må være mindre enn 50 KB", "invalidLogoFileType": "Ugyldig filtype. Vennligst last opp PNG, JPG, SVG, GIF eller WebP.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Oppdateringsintervall", "ruleModeDescription": "Regelmodus Beskrivelse" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", + "bulkHealthcheck": "Massekontroll av tilstand", + "bulkHealthcheckDesc": "Test alle konfigurerte proxyer mot en mål-URL for å finne ut hvilke som fungerer.", + "healthcheckTesting": "Tester ...", + "healthcheckAll": "Kontroller tilstanden til alle", + "healthcheckFailed": "Kunne ikke kjøre tilstandskontroll", + "healthcheckTestingAll": "Tester alle proxyer parallelt ...", + "healthcheckTotal": "Totalt", + "healthcheckWorking": "Fungerer", + "healthcheckFailedLabel": "Mislyktes", "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "healthcheckProxyUrl": "Proxy-URL", + "healthcheckLatency": "Ventetid", "proxyDocumentationScopeTitle": "Oppløsning av proxy-omfang", "proxyDocumentationScopeDescBefore": "OmniRoute oppløser utgående proxy i prioritert rekkefølge:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "combo → konto → leverandør → global", "proxyDocumentationScopeDescAfter": ". Det mest spesifikke omfanget vinner.", "proxyDocumentationAddTitle": "Legge til en egendefinert proxy", "proxyDocumentationAddDescBefore": "Gå til", @@ -6982,9 +6985,9 @@ "thinkingBudgetIndependenceHint": "Komprimering, ruting og token-grensefunksjoner fortsetter å fungere i alle moduser. Auto betyr ikke \"auto-vis tenkning\" — det fjerner klientens resonneringsfelt.", "passthrough": "Gjennomgang", "passthroughDesc": "Ingen endringer – klienten kontrollerer tenkebudsjettet", - "thinkingModePassthrough": "Passthrough", + "thinkingModePassthrough": "Direkteoverføring", "thinkingModePassthroughDesc": "La klientens begrunnelse være uendret (innsats, sammendrag, tankeblokker). Påkrevd for Codex/Desktop synlig tenkning. Standard.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automatisk (fjern)", "thinkingModeAutoDesc": "Fjern alle klienttenkning/ressoneringsfelt (ressonering, resoneringsinnsats, Claude tenkning, Gemini tenkning_config) og la leverandøren finne på standardverdier. Kan skjule tenkningspaneler og bryte klientoppsummeringsforespørslene.", "thinkingModeCustom": "Egendefinert", "thinkingModeCustomDesc": "Overskriv hver forespørsel med et fast tenketoken-budsjett du setter nedenfor.", @@ -7001,7 +7004,7 @@ "effortMedium": "Medium (10 000 tokens)", "effortHigh": "Høy (128 000 tokens)", "tokenBudget": "Tokenbudsjett", - "tokens": "tokens", + "tokens": "tokener", "baseEffortLevel": "Grunninnsatsnivå", "adaptiveHint": "Adaptiv modus skalerer fra dette basisnivået basert på antall meldinger, verktøybruk og forespørselslengde.", "requireLogin": "Krev innlogging", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} leverandør(er) blokkert fra /modeller", "blockProviderTitle": "Blokkér {provider}", "unblockProviderTitle": "Fjern blokkering av {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Samsvar med CLI-fingeravtrykk", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} leverandør(er) med aktivt CLI-fingeravtrykk", + "enableFingerprintTitle": "Aktiver fingeravtrykk for {provider}", + "disableFingerprintTitle": "Deaktiver fingeravtrykk for {provider}", "systemTransforms": "Systemblokk Transform Pipeline", "systemTransformsDesc": "Per leverandør bestilt pipeline med transformasjoner brukt på forespørselsteksten før videresending. Støtter enhver leverandør-ID.", "systemTransformsAddProvider": "Legg til leverandør", @@ -7065,17 +7068,17 @@ "leastUsedDesc": "Velg minst nylig brukte konto", "costOpt": "Kostnad Opt", "costOptDesc": "Foretrekker den billigste tilgjengelige kontoen", - "resetAware": "Reset-Aware RR", + "resetAware": "Tilbakestillingsbevisst RR", "resetAwareDesc": "Foretrekk kontoer med sunn gjenværende kvote og nærmere tilbakestillinger", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kvotevektet", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "Strengt tilfeldig", + "strictRandomDesc": "Blandet kortstokk — bruker hver konto én gang før den blandes på nytt", + "stickyLimit": "Fast grense", "stickyLimitDesc": "Anrop per konto før bytte", "routingStrategyTitle": "Rutingsstrategi", "routingStrategySubtitle": "Match 9router: konto-round-robin, sticky-grenser og kombinasjonsrotasjon", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Rundgang", "accountRoundRobinDesc": "Gå gjennom kontoer i syklus for å distribuere belastning", "comboRoundRobin": "Kombinasjons-Round Robin", "comboRoundRobinDesc": "Gå gjennom kombinasjonsmål i syklus i stedet for å alltid starte med den første", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Overstyr global kontostrategi for denne leverandøren (9router-paritet).", "providerRoutingStrategy": "Kontostrategi", "providerRoutingInheritGlobal": "Arv global standard", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Forhåndsgrense for kvote", + "quotaPreflightSubtitle": "Hopp over kontoer som har brukt opp kvoten, før forespørselen sendes oppstrøms", + "quotaPreflightEnable": "Aktiver forhåndskontroll av kvote", + "quotaPreflightEnableDesc": "Før hver forespørsel kontrolleres kontoens gjenværende kvote (vinduer på 5 t / ukentlig / månedlig). Kontoer som er på eller under grensen, hoppes over uten et oppstrømskall. Grensene per vindu som er angitt på siden Provider Quota, overstyrer alltid standardverdien her.", + "quotaPreflightCutoff": "Global grense (min. gjenværende %)", + "quotaPreflightCutoffDesc": "Slutt å bruke en konto når den gjenværende kvoten synker til denne prosentandelen eller lavere, for alle vinduer uten en egen grense. Samsvarer med stolpene for gjenværende prosent på siden Provider Quota.", + "quotaPreflightWindowsHint": "Vinduer med en egen grense per vindu eller leverandør (angitt i dialogboksen Cutoff på siden Provider Quota) påvirkes ikke av denne standardverdien.", + "quotaPreflightLoadFailed": "Kan ikke laste innstillingene for forhåndskontroll av kvote.", "modelAliases": "Modellaliaser", "modelAliasesTitle": "Modellaliaser", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Tilordne modellnavn på nytt ved hjelp av nøyaktige treff eller jokertegnmønstre.", "addCustomAlias": "Legg til Tilpasset Alias", "deprecatedModelId": "Utdatert modell-ID", "newModelId": "Ny modell-ID", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Kombinasjonsstrategi", "priority": "Prioritet", "weighted": "Vektet", - "contextRelay": "Context Relay", + "contextRelay": "Kontekstoverføring", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Max prøver på nytt", "retryDelayLabel": "Forsinkelse på nytt (ms)", @@ -7214,16 +7217,16 @@ "concurrencyPerModel": "Samtidighet / modell", "queueTimeout": "Tidsavbrudd for kø (ms)", "queueDepth": "Kødybde", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Overføringsterskel", + "contextRelayMaxMessages": "Maks. antall meldinger for sammendrag", + "contextRelaySummaryModel": "Sammendragsmodell", + "contextRelayProviderNote": "Context Relay genererer for øyeblikket overføringer for Codex-kontoer og bruker disse verdiene som globale standardverdier for nye eller ukonfigurerte kombinasjoner.", "providerProfiles": "Leverandørprofiler", "providerProfilesDesc": "Separate innstillinger for motstandskraft for OAuth (øktbasert) og API Key (målt) leverandører. OAuth-leverandører har strengere terskler på grunn av lavere takstgrenser.", "oauthProviders": "OAuth-leverandører", "apiKeyProviders": "API-nøkkelleverandører", "transientCooldown": "Forbigående nedkjøling", - "rateLimitCooldown": "Rate Limit Cooldown", + "rateLimitCooldown": "Nedkjøling etter hastighetsbegrensning", "maxBackoffLevel": "Maks Backoff Level", "cbThreshold": "CB-terskel", "cbResetTime": "CB-tilbakestillingstid", @@ -7231,7 +7234,7 @@ "rateLimitingDesc": "API-nøkkelleverandører er automatisk hastighetsbegrenset med sikre standardinnstillinger. Grenser læres fra responsoverskrifter og tilpasses over tid.", "defaultSafetyNet": "Standard sikkerhetsnett", "rpm": "RPM", - "minGap": "Min Gap", + "minGap": "Minimumsintervall", "maxConcurrent": "Maks samtidig", "activeLimiters": "Aktive begrensere", "noActiveLimiters": "Ingen aktive ratebegrensere ennå.", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}d siden", "backupReasonManual": "manuell", "backupReasonPreRestore": "forhåndsgjenoppretting", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# tilkobling} other {# tilkoblinger}}", "noChangesSinceBackup": "Ingen endringer siden siste sikkerhetskopiering", "backupFailed": "Sikkerhetskopiering mislyktes", "restoreFailed": "Gjenoppretting mislyktes", @@ -7329,7 +7332,7 @@ "configured": "konfigurert", "none": "Ingen", "modelOverrideValuePlaceholder": "Numerisk verdi", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Engelsk, kommadelt, f.eks. low, medium, high", "addKeyValue": "Legg til nøkkelverdi", "noModelOverrides": "Ingen overstyringer er konfigurert for denne modellen.", "modelOverrideLoadFailed": "Kunne ikke laste modelloverstyringer", @@ -7378,25 +7381,25 @@ "editPricing": "Rediger priser", "viewFullDetails": "Se alle detaljer", "themeCoral": "Korall", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Adaptiv volumruting", + "adaptiveVolumeRoutingDesc": "Skaler tilkoblinger dynamisk basert på nyttelastvolum og kapasitetspress.", + "lkgpToggleTitle": "Sist fungerende leverandør (LKGP)", + "lkgpToggleDesc": "Når dette er aktivert, husker ruteren hvilken leverandør som sist leverte et vellykket svar, og prøver denne først ved etterfølgende forespørsler.", "echoRequestedModelTitle": "Ekko forespurt modellnavn i svar", "echoRequestedModelDesc": "Når aktivert, vil `model`-feltet i svaret gjenspeile aliaset eller kombinasjonsnavnet klienten ba om, i stedet for navnet på oppstrømsmodellen. Løser problemer med strenge klienter (f.eks. Claude Desktop) som avviser svar der modellen ikke samsvarer med forespørselen.", "webSearchRouteTitle": "Ruting for nettsøk", "webSearchRouteDesc": "Når en forespørsel inkluderer et innebygd web_search-verktøy, rutes hele forespørselen til denne modellen i stedet for standardmodellen – nyttig for leverandører som ikke implementerer Anthropics web_search-serververktøy. La stå tomt for å deaktivere.", "webSearchRoutePlaceholder": "f.eks. openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "Dette mønsteret samsvarer bare med betalte modeller – aktiver betalte modeller eller juster mønsteret.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Tøm LKGP-hurtigbufferen", + "lkgpCacheCleared": "LKGP-hurtigbufferen ble tømt", + "lkgpCacheClearFailed": "Kunne ikke tømme LKGP-hurtigbufferen", + "days": "Dager", + "lkgp": "LKGP-modus", + "lkgpDesc": "Sist fungerende leverandør (forutsigbar robusthet)", + "maintenance": "Vedlikehold", + "purgeExpiredLogs": "Fjern utløpte logger", + "purgeLogsFailed": "Kunne ikke fjerne logger", "logsDeleted": "{count, plural, =0 {Ingen utløpte logger slettet} one {Slettet # utløpt logg} other {Slettet # utløpte logger}}", "resetUsageData": "Nullstill bruksdata", "resetUsageDataDesc": "Velg hvor langt tilbake du vil slette bruksdata, forespørselslogger og analysedata. Leverandørkonfigurasjon, tilkoblinger, API-nøkler, kombinasjoner og innstillinger bevares. Denne handlingen kan ikke angres.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Kunne ikke tilbakestille bruksdata", "reset": "Tilbakestill", "resetting": "Tilbakestiller...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Kontekstoptimalisert", + "contextOptDesc": "Ruter basert på krav til kontekstvindu og samtalelengde", + "cacheOpt": "Hurtigbufferoptimalisert", + "cacheOptDesc": "Beholder det samme gjenbrukbare ledetekstprefikset på den samme leverandørkontoen", + "priorityDesc": "Sekvensiell reserve – prøver leverandør 1 først, deretter leverandør 2 og så videre", + "weightedDesc": "Fordeler trafikken mellom leverandører basert på prosentvise vekter", + "modelRoutingTitle": "Regler for modellruting", + "modelRoutingDesc": "Rut modeller automatisk til bestemte kombinasjoner ved hjelp av glob-mønstre", + "addRule": "Legg til regel", + "routeToCombo": "Rut til kombinasjon", + "selectCombo": "Velg kombinasjon ...", + "priorityHint": "Høyere = kontrolleres først. Bruk 10+ for spesifikke mønstre.", + "patternHint": "Bruk * for vilkårlige tegn og ? for ett enkelt tegn. Skiller ikke mellom store og små bokstaver.", + "noRoutingRules": "Ingen rutingsregler er konfigurert. Forespørsler bruker den globale kombinasjonen som standard.", + "routingRuleHint": "Legg til en regel som claude-opus* -> frontier-combo for å rute forespørsler automatisk.", + "deleteRoutingRule": "Vil du slette denne regelen for modellruting?", + "exactMatchMode": "Eksakt samsvar", + "wildcardPatternMode": "Jokertegnmønster", + "exactMatchModeDesc": "Bruk eksakte aliaser for avviklede eller omdøpte modell-ID-er.", + "wildcardPatternModeDesc": "Bruk jokertegnaliaser med * og ? når en modellfamilie skal tilordnes ett mål.", + "noExactAliasesConfigured": "Ingen aliaser med eksakt samsvar er konfigurert.", + "wildcardRulesTitle": "Jokertegnregler", + "noWildcardAliasesConfigured": "Ingen jokertegnaliaser er konfigurert.", + "overview": "Oversikt", + "unknownError": "Ukjent feil", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Hviteliste", + "syncDisabled": "Synkronisering deaktivert", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Synkronisering aktivert", + "blacklist": "Svarteliste", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Synkroniserte modeller", + "budget": "Budsjett", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Kunne ikke tilbakestille prisen: {reason}", - "tab": "Tab", + "tab": "Fane", "pricingSavedProvider": "Priser lagret for {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Kunne ikke lagre pris: {reason}", "pricingResetProvider": "Pristilbakestilling for {provider}", - "nextSync": "Next Sync", + "nextSync": "Neste synkronisering", "pricingSyncFailedWithReason": "Prissynkronisering mislyktes: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Fjern synkroniserte priser", + "compressionTitle": "Komprimering av ledetekst", + "compressionDesc": "Reduser tokenbruken ved å komprimere ledetekster før de sendes til leverandører", "compressionGuidanceFullGuideLink": "Fullstendig komprimeringsveiledning", "compressionGuidanceShow": "Detaljer", "compressionGuidanceHide": "Skjul detaljer", @@ -7485,20 +7488,20 @@ "tokenSaverInputCompressionDesc": "Omskriv kvalifisert samtalehistorikk samtidig som kode, URL-er og intensjon bevares.", "tokenSaverFineTunePrefix": "Finjuster hver motor på", "tokenSaverFineTuneSuffix": "eller kombiner motorer per forespørsel på", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Komprimeringsmodus", + "compressionModeOff": "Av", + "compressionModeOffDesc": "Ingen komprimering brukes", + "compressionModeLite": "Lett", + "compressionModeLiteDesc": "Reduksjon av mellomrom og tomme linjer", + "compressionModeStandard": "Standard (huleboer)", + "compressionModeStandardDesc": "Regelbasert komprimering med over 30 mønstre, bevarer kodeblokker og URL-er", + "compressionModeAggressive": "Aggressiv", + "compressionModeAggressiveDesc": "Oppsummering + komprimering av verktøyresultater + gradvis aldring for maksimal besparelse", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Aggressiv motorkonfigurasjon", "compressionAggressiveConfigDesc": "Finjuster oppsummering, verktøykomprimering og aldringsterskler", - "compressionUltraConfig": "Ultra Engine Configuration", + "compressionUltraConfig": "Konfigurasjon av Ultra-motoren", "compressionUltraConfigDesc": "Finjuster heuristisk beskjæring, SLM-reservering og terskler per melding", "compressionUltraRate": "Behold sats", "compressionUltraMinScore": "Minimum poenggrense", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Antall nylige meldinger holdt på hvert aldringsnivå (høyere = mer bevart)", "compressionToolStrategies": "Verktøyresultatstrategier", "compressionToolStrategiesDesc": "Veksle komprimeringsstrategier for ulike verktøyresultattyper", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Generelle innstillinger", + "compressionAutoTrigger": "Terskel for automatisk aktivering", + "compressionCacheTTL": "Cache-TTL", + "compressionPreserveSystem": "Bevar systemprompt", "compressionPreserveSystemAlways": "Alltid", "compressionPreserveSystemWhenNoCache": "Når det ikke er cache", "compressionPreserveSystemNever": "Aldri", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Laget", "compressionExclusionsCount": "{count, plural, one {# ekskludering} other {# ekskluderinger}} konfigurert", "compressionExclusionsEmpty": "Ingen ekskluderinger konfigurert — hver modell/endpoint er kvalifisert for komprimering (standard oppførsel).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Konfigurasjon av Caveman-motoren", + "compressionCavemanConfigDesc": "Finjuster den regelbaserte komprimeringsmotoren", "compressionCavemanPanelHint": "Av/på og nivå angis i panelet:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", + "compressionRoles": "Komprimer meldingsroller", + "compressionRoleUser": "Bruker", + "compressionRoleAssistant": "Assistent", "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionMinLength": "Minste meldingslengde", + "compressionSkipRules": "Regler som skal utelates fra komprimering", + "compressionSkipRulesDesc": "Klikk på regler for å hoppe over dem under komprimering", + "compressionPreservePatterns": "Bevar mønstre", + "compressionPreservePatternsDesc": "Regex-mønstre som aldri komprimeres (ett per linje)", + "compressionLogTitle": "Komprimeringslogg", + "compressionLogEmpty": "Ingen komprimerte forespørsler ennå. Komprimeringsstatistikk vises her når forespørsler behandles med komprimering aktivert.", "minutes": "minutter", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Kommandoavhengig filtrering av verktøyutdata", + "compressionModeCodexResponses": "Verktøyutdata fra Responses", + "compressionModeCodexResponsesDesc": "Konservativ komprimering av kvalifiserte skall-, patch-, søke-, bygge- og JSON-utdata", + "compressionModeStacked": "Stablet", + "compressionModeStackedDesc": "RTK-filtrering av verktøyutdata etterfulgt av Caveman-meldingskomprimering", + "qdrantTitle": "Qdrant (vektorminne)", + "qdrantDesc": "Valgfritt. Indekserer semantiske minner i en ekstern vektordatabase for raskere gjenfinning.", + "qdrantStatusActive": "Aktiv", + "qdrantStatusError": "Feil", + "qdrantStatusDisabled": "Deaktivert", + "qdrantEnable": "Aktiver Qdrant", + "qdrantEnableDesc": "Når dette er aktivert, kan den semantiske/hybride strategien bruke Qdrant til å hente minner.", + "qdrantTesting": "Tester ...", + "qdrantTestConnection": "Test tilkoblingen", + "qdrantSaved": "Konfigurasjonen er lagret", + "qdrantSaveError": "Kunne ikke lagre konfigurasjonen", + "qdrantHostHint": "Uten port. Eksempel: 127.0.0.1 eller http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Qdrant-standard: 6333", + "qdrantCollectionHint": "Hvor minnepunkter skal lagres.", + "qdrantEmbeddingModel": "Innebyggingsmodell", + "qdrantHelpTitle": "Hjelp med hurtigoppsett", + "qdrantHelpQuickTitle": "Hurtigoppsett (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Vert: Qdrant-IP/URL, port: 6333, samling: omniroute_memory.", + "qdrantHelpStep2": "2. Hvis du bruker nvidia/llama-nemotron-embed-vl-1b-v2:free, bruker du samlingsdimensjon 2048.", + "qdrantHelpStep3": "3. Modellfelt: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Lagre, test tilkoblingen og test deretter søket.", + "qdrantEmbeddingQuickSelect": "Velg raskt blant oppdagede modeller ...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Format: provider/model. Leverandørens påloggingsinformasjon må være konfigurert.", + "qdrantApiKeyPlaceholderKeep": "(la stå tomt for å beholde gjeldende nøkkel)", + "qdrantApiKeyPlaceholderOptional": "(la stå tomt hvis den ikke brukes)", + "qdrantSaveHint": "Tips: Rediger vert/port/samling/modell og klikk på Lagre. API-nøkkelen er valgfri.", + "qdrantSearchTestTitle": "Søketest", + "qdrantSearchTestDesc": "Genererer innebygging og søker i Qdrant.", + "qdrantSearchPlaceholder": "Eksempel: brukerpreferanser, historikk osv.", + "qdrantNoResults": "Ingen resultater (eller Qdrant er ikke konfigurert).", + "qdrantCleanupTitle": "Oppbevaring og opprydding", + "qdrantCleanupDesc": "Fjerner utløpte og gamle punkter basert på", + "searching": "Søker ...", + "cleaning": "Rydder opp ...", + "cleanNow": "Rydd opp nå", "optional": "Valgfritt", "current": "Gjeldende", "remove": "Fjern", @@ -7600,24 +7603,24 @@ "resilienceScope": "Omfang:", "resilienceTrigger": "Utløser:", "resilienceEffect": "Effekt:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Forespørselskø og hastighet", + "resilienceAutoEnableApiKeyProviders": "Aktiver automatisk for API-nøkkelleverandører", + "resilienceRequestsPerMinute": "Forespørsler per minutt", + "resilienceMinTimeBetweenRequests": "Minste tid mellom forespørsler", + "resilienceConcurrentRequests": "Samtidige forespørsler", + "resilienceConnectionScopeConcurrentRequests": "Samtidige forespørsler per tilkobling/kvoteomfang", + "resilienceGlobalConcurrentRequests": "Globalt antall samtidige oppstrømsforespørsler (0 = deaktivert)", "resilienceMaxQueueWaitTime": "Maksimal ventetid i kø", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Grunnleggende nedkjølingstid", + "resilienceUseUpstreamRetryHints": "Bruk oppstrøms hint for nye forsøk", + "resilienceDefaultPerProvider": "Standard (per leverandør)", + "resilienceAlwaysOn": "Alltid på", + "resilienceAlwaysOff": "Alltid av", "routingRemoveEntry": "Fjern oppføring", "routingNeedlesSubstrings": "Nåler (understrenger for å matche)", "routingCaseSensitive": "Skiller mellom store og små bokstaver", "routingPrefixes": "Prefikser", - "routingMatch": "Match", + "routingMatch": "Samsvar", "routingReplacement": "Utskifting", "routingReplaceAllOccurrences": "Erstatt alle forekomster", "routingPatternRegex": "Mønster (regex)", @@ -7683,7 +7686,7 @@ "routingClientCacheControlAlwaysDesc": "Videresend alltid klientoppgitte cache_control-headere til oppstrømsleverandører som de er.", "routingClientCacheControlNeverLabel": "Bevar aldri", "routingClientCacheControlNeverDesc": "Fjern alltid klientens cache_control-headere og la OmniRoute administrere hurtigbufring der opprinnelige leverandørflyter støtter det.", - "routingZeroConfigTitle": "Zero-Config Auto-Routing", + "routingZeroConfigTitle": "Automatisk ruting uten konfigurasjon", "routingZeroConfigDesc": "Aktiver automatisk valg av leverandør ved hjelp av auto/-prefikset. Når dette er aktivert, vil forespørsler til auto, auto/coding, auto/fast osv. rutes dynamisk på tvers av alle tilkoblede leverandører.", "routingDefaultAutoVariant": "Standard autovariant", "visionBridge": "Visjonsbro", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "Sendes til synsmodellen før den ekstraherte beskrivelsen injiseres tilbake i den opprinnelige forespørselen.", "visionBridgeTimeoutMs": "Tidsavbrudd (ms)", "visionBridgeMaxImagesPerRequest": "Maks bilder per forespørsel", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Maksimalt antall trinn for eksponentiell ventetid", + "resilienceProviderBreakerTitle": "Kretsbryter per leverandør", + "resilienceFailureThreshold": "Feilterskel", + "resilienceDegradationThreshold": "Forringelsesterskel", "resilienceResetTimeout": "Tilbakestill tidsavbrudd", "resilienceFailureThresholdLabel": "Feilterskel", "resilienceResetTimeoutLabel": "Tilbakestill tidsavbrudd", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Nedkjølingstid for tilkobling", "resilienceUseUpstreamRetryHintsLabel": "Bruk oppstrøms tips om nytt forsøk", "resilienceUseUpstream429BreakerLabel": "Bruk oppstrøms 429 hint (breaker)", "resilienceMaxBackoffStepsLabel": "Maks tilbakeslagstrinn", "resilienceYes": "Ja", "resilienceNo": "Nei", - "resilienceDefault": "Default", + "resilienceDefault": "Standard", "storageDatabaseBackupRetention": "Oppbevaring av sikkerhetskopiering av database", "storageDatabaseBackups": "Databasesikkerhetskopier", "storageBackupRetentionDescription": "Automatiske SQLite-sikkerhetskopier lagres i", @@ -7745,12 +7748,16 @@ "legacyJsonImportSuccess": "Legacy-JSON ble importert!", "jsonImportFailed": "Kunne ikke importere JSON", "jsonImportError": "Feil under JSON-import", + "jsonImportAuthRequired": "Autentisering kreves for å importere en eldre JSON-konfigurasjon. Logg inn eller fullfør oppsettet først.", + "databaseSettingsAuthRequiredTitle": "Autentisering kreves", + "databaseSettingsAuthRequiredBody": "Databaseinnstillinger og JSON-import er bare tilgjengelige for en autentisert administrator. Logg inn eller fullfør oppsettet for å vise og redigere dem.", + "databaseSettingsAuthRequiredCta": "Logg inn", "storagePurgeData": "Tøm data", "storagePurgeDataDesc": "Slett alle oppføringer umiddelbart uten å utføre oppbevaringskontroller. Bruk med forsiktighet.", "storageRetentionCleanup": "Oppbevaringsinnstillinger", "storageRetentionCleanupDesc": "Konfigurer oppbevaring av driftsoppføringer og opprydding av sikkerhetskopier for databasen.", "retentionCallDays": "Anrop {count}d", - "retentionAppDays": "App {count}d", + "retentionAppDays": "App {count} d", "retentionRows": "{count} rader", "retentionQuotaSnapshots": "Kvoteøyeblikksbilder (dager)", "retentionCompressionAnalytics": "Komprimeringsanalyse (dager)", @@ -7808,7 +7815,7 @@ "redisLauncherStop": "Stopp", "redisLauncherLaunching": "Starter...", "redisLauncherLaunch": "Start Redis", - "redisLauncherContainer": "Container", + "redisLauncherContainer": "Beholder", "redisLauncherRunning": "Kjører", "redisLauncherReachable": "Tilgjengelig", "redisLauncherError": "Feil: {message}", @@ -7828,23 +7835,23 @@ "compressionDerivedMode": "modus: {mode}", "compressionAdaptiveOff": "Adaptivt kontekstbudsjett: av (foreldet automatisk utløser)", "compressionAdaptiveTarget": "Adaptiv ({mode}, policy: {policy}) — mål ≈ {target, number} tokener (for et vindu på {contextLimit, number} tokener)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Adaptivt kontekstbudsjett", + "compressionAdaptiveModeOff": "Av (eldre automatisk utløsing)", + "compressionAdaptiveModeFloor": "Minimum (garanter alltid at det passer)", + "compressionAdaptiveModeReplace": "Erstatt automatisk utløsing", + "compressionAdaptivePolicy": "Budsjettpolicy", + "compressionAdaptivePolicyReserve": "Reserver utdata", + "compressionAdaptivePolicyPercentage": "Prosentandel av vinduet", + "compressionAdaptivePolicyAbsolute": "Absolutt tokenbudsjett", "compressionOutputStylesDescription": "Sett inn instruksjoner for responsforming uten å omskrive leverandørutdata. Kombiner fritt.", "mcpAccessibilityDescription": "Avgrenser MCP-verktøyutdata (eget lager).", "compressionStylesTileSummary": "{tokens, number} tokener spart · {runs, plural, one {# kjøring stiltilpasset} other {# kjøringer stiltilpasset}}", "compressionStylesTileEmpty": "Ingen stiltilpassede kjøringer ennå.", "compressionLevel": { - "minimal": "Minimal", + "minimal": "Minimalistisk", "standard": "Standard", "aggressive": "Aggressiv", - "lite": "Lite", + "lite": "Lett", "full": "Full", "ultra": "Ultra" }, @@ -7858,7 +7865,7 @@ "description": "Innholdsadresserte gjenfinningsmarkører." }, "lite": { - "label": "Lite", + "label": "Lett", "description": "Opprydding i blanktegn og formatering." }, "rtk": { @@ -7866,8 +7873,8 @@ "description": "Kommando-utdatafiltrering." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Utdata fra Responses-verktøyet", + "description": "Konservativ komprimering for støttede utdata fra Responses-verktøyet." }, "headroom": { "label": "Takhøyde", @@ -7908,12 +7915,12 @@ "description": "YAGNI-stige: minste fungerende endring, ingen ubedte abstraksjoner." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Hestehale (lat seniorutvikler)", + "description": "Disiplin som en lat seniorutvikler: klatre opp YAGNI-stigen, løs grunnårsaken, bruk den minste fungerende endringen." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Jeg har ADHD (handling først)", + "description": "Handlingsorienterte utdata: neste handling kommer først, trinnene er nummererte, ett konkret neste trinn, ingen innledning." }, "terse-cjk": { "label": "Kortfattet CJK (文言)", @@ -7924,13 +7931,21 @@ "resilienceEnableServerSideWait": "Aktiver venting på serversiden", "resilienceMaximumRetries": "Maksimalt antall forsøk igjen", "resilienceMaximumWaitPerRetry": "Maksimal venting per nytt forsøk", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "SkillsMP-markedsplass", "memorySkillsFailedToSave": "Kunne ikke lagre", "memorySkillsApiKey": "API-nøkkel", "memorySkillsActiveSkillsProvider": "Aktiv ferdighetsleverandør", - "cliproxyapiFallback": "CLIProxyAPI Fallback", + "cliproxyapiFallback": "CLIProxyAPI-reserveløsning", "cliproxyapiEnableFallback": "Aktiver CLIProxyAPI Fallback", - "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiUrl": "CLIProxyAPI-URL", + "headroomProxyTitle": "Proxy for sikkerhetsmargin", + "headroomProxyDesc": "URL til den valgfrie Headroom-proxyen for tokensparing. Hvis feltet er tomt, brukes HEADROOM_URL eller http://localhost:8787.", + "headroomProxyUrl": "Headroom-URL", + "headroomProxyUrlHint": "Loopback-URL-er kan startes fra denne siden. Eksterne URL-er kontrolleres bare.", + "headroomProxySave": "Lagre", + "headroomProxyStart": "Start", + "headroomProxyStop": "Stopp", + "headroomProxyExternalHint": "Denne URL-en er ikke en loopback-adresse, så OmniRoute vil ikke starte den lokale CLI-en.", "cliproxyapiStatus": "CLIProxyAPI-status", "cliproxyapiNotDetected": "Ikke oppdaget", "cliproxyapiImportAuthTitle": "Importer kontoer fra CLIProxyAPI", @@ -7938,15 +7953,15 @@ "cliproxyapiImportAuthButton": "Importer kontoer", "payloadRulesTitle": "Regler for nyttelast", "payloadRulesDesc": "Konfigurer mutasjoner for forespørselsnyttelast etter modell og protokoll. Endringer lagres i innstillinger og oppdateres direkte i kjøretidsmiljøet umiddelbart etter lagring.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "standard", "payloadRuleDefaultDesc": "Bruker parametere bare når målbanen mangler i den utgående nyttelasten.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "overstyring", "payloadRuleOverrideDesc": "Tvinger verdier inn i nyttelasten, og erstatter alt som allerede finnes på den banen.", "payloadRuleFilterTitle": "filter", "payloadRuleFilterDesc": "Fjerner blokkerte parametere fra nyttelasten før oppstrømsforespørselen sendes.", - "payloadRuleDefaultRawTitle": "defaultRaw", + "payloadRuleDefaultRawTitle": "standardRaw", "payloadRuleDefaultRawDesc": "Lik default, men strengverdier tolkes som JSON først når det er mulig. Det foreldede inndata-aliaset default-raw godtas også ved lagring.", - "payloadEditorTitle": "Editor", + "payloadEditorTitle": "Redigeringsprogram", "payloadEditorDesc": "Bruk formen til kjøretidsskjemaet: default, override, filter, defaultRaw. API-et godtar også den foreldede inndatanøkkelen default-raw.", "payloadEditorReady": "Klar", "payloadResetInfo": "Editoren er tilbakestilt til den nøytrale malen. Lagre for å ta den i bruk.", @@ -7980,28 +7995,28 @@ "responsesStateTitle": "Responstilstand", "responsesStateDesc": "Kontroller hvordan OmniRoute videresender previous_response_id.", "responsesStateModeLabel": "Håndtering av previous_response_id", - "responsesStateModeAuto": "Auto", + "responsesStateModeAuto": "Automatisk", "responsesStateModeStrip": "Fjern", "responsesStateModePreserve": "Behold", "responsesStateHint": "Auto fjerner previous_response_id med mindre en tilkobling eksplisitt aktiverer OpenAI Responses-lagring. Fjern er tryggest for tilstandsløse klienter som VS Code Custom Endpoint; konteksten avhenger da av at klienten sender full historikk.", "responsesStateSaveError": "Kunne ikke oppdatere innstilling for responstilstand", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Codex-hurtignivå", "codexFastTierDesc": "Globalt inject service_tier=prioritet for OpenAI Codex-forespørsler.", "codexFastTierHint": "Når aktivert, legger OmniRoute service_tier=prioritet til utgående Codex-forespørsler for tilkoblinger som ikke allerede spesifiserer et nivå. Prioritetsnivået krever en OpenAI Enterprise API-nøkkel eller ChatGPT-auth Codex-banen; andre nøkkeltyper vil motta en nivårelatert feil fra OpenAI. Innstillinger per tilkobling på Codex-leverandørsiden har forrang.", "codexFastTierSaveError": "Kunne ikke oppdatere Codex Fast Tier-innstillingen", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Automatisk ping av Codex-kvote", + "codexAutoPingDesc": "Aktiveres per tilkobling: sender en liten forespørsel rett etter at et Codex-øktvindu tilbakestilles, slik at det ikke er kaldt når du trenger det.", + "codexAutoPingWarning": "Bruker en liten mengde faktisk Codex-kvote ved hvert ping. Deaktivert som standard – aktiver bare for tilkoblinger du bruker aktivt.", + "codexAutoPingSaveError": "Kunne ikke oppdatere innstillingen for automatisk Codex-ping", + "codexAutoPingToggleAria": "Slå automatisk ping av Codex-kvote av eller på for {connection}", "codexFastTierTierLabel": "Tjenestenivå", "codexFastTierTierPriority": "Prioritet", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Fleksibel", "codexFastTierTierDefault": "Standard", "codexFastTierModelsLabel": "Fast-tier-modeller", "codexFastTierModelsHint": "Bare avmerkede modeller mottar service_tier når Fast Tier er aktivert.", "codexFastTierModelCheckbox": "Aktiver Fast Tier for {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Claude-hurtigmodus", "claudeFastModeDesc": "Velg utvalgte Claude-forespørsler til Antropisk hurtigmodus (hastighet: \"rask\").", "claudeFastModeHint": "Anthropic støtter ikke offisielt Fast Mode for klienter i SDK-stil. Når den er aktivert, videresender OmniRoute en X-CPA-Force-Fast-Mode-overskrift slik at en sammenkoblet CLIProxyAPI-bygning kan velge å forfalske inngangspunktet. Bare de listede Opus-modellene er lukket av Anthropics klientsidesjekk. Abonnementsnivå, Max-plan og Fast Mode-kredittsaldo er fortsatt håndhevet på serversiden – Anthropic kan returnere out_of_credits selv når bryteren er på.", "claudeFastModeModelsLabel": "Gjelder modeller ({count})", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Globalt sjekkintervall", "resilienceCredentialHealthEveryMinutes": "Hver {minutes} min", "resilienceCredentialHealthHint": "0 slår av bakgrunnsskanningen (maks. 1440 min = 24 t). Tilkoblinger med egen helsessjekkverdi ignorerer denne globale standarden; 0 på en tilkobling utelater den selv når den globale skanningen er på.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Alltid aktivert for {provider} – nødvendig for sikkerheten til OAuth-kontoen; kan ikke deaktiveres.", + "forcedFingerprintBadge": "Påkrevd", "sessionAffinityTitle": "Sesjonsaffinitet", "sessionAffinityDesc": "Holder én samtale på samme konto i så mange sekunder, for enhver leverandør. 0 deaktiverer det.", "sessionAffinityTtl": "Affinitet-TTL (sekunder)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "Maksimalt antall backoff-trinn før nedkjølingen slutter å øke. Grensen for maksimal nedkjøling nås først i de fleste konfigurasjoner, noe som gjør dette til et sikkerhetstak når maksimal nedkjøling økes.", "disableSessionStickiness": "Deaktiver sesjonsfasthet", "disableSessionStickinessDesc": "Round-robin- og tilfeldige kombinasjoner roterer til en annen tilkobling for hver forespørsel i stedet for å låse en hel samtale til én tilkobling basert på hashen til den første meldingen. La være av for å bevare prompt-cache-treff for samtaler med flere runder. Overstyringer per kombinasjon har forrang.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Ruting basert på nærhet til ledetekstbuffer", + "promptCacheAffinityDesc": "Foretrekk samme leverandørkonto for samsvarende nøkler i ledetekstbufferen, samtidig som failover basert på tilstand og kvote opprettholdes.", + "reasoningTokenBuffer": "Buffer for resonneringstokener", + "reasoningTokenBufferDesc": "Tillat at kombinasjonsruting legger til max_tokens-margin bare for kjente resonneringsmodeller når hele bufferen får plass innenfor en kjent utdatakapasitet.", + "zeroLatencyOptimizations": "Optimaliseringer uten ventetid", + "zeroLatencyOptimizationsDesc": "Aktiver sikring, prediktiv hopping over TTFT og proaktiv komprimering ved failover. La dette være deaktivert for å hindre at disse ventetidsfunksjonene konkurrerer mot mål eller komprimerer failover-forespørsler.", "credentialRedaction": "Sladding av legitimasjon", "credentialRedactionDesc": "Sladd API-nøkler, tokener og hemmeligheter fra kontekst som sendes til leverandører, og fra svar.", "enableCredentialRedaction": "Aktiver sladding av legitimasjon", "enableCredentialRedactionDesc": "Renser API-nøkler, tokener, private nøkler og JWT-er fra meldinger, verktøykall og svar.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Automatisk synkronisering deaktivert", + "pricingAutoSyncEnabled": "Automatisk synkronisering aktivert", "modalityBridgeIntro": "Gjør multimodalt innhold om til tekst før det når modeller som bare behandler tekst. Broene for bilde, lyd og video er tilgjengelige og kan konfigureres.", "modalityBridgeVisionTab": "Visjon", "modalityBridgeAudioTab": "Lyd", @@ -8234,7 +8249,7 @@ "modalityBridgeTaskAwareDesc": "Inkluder brukerens spørsmål som fokus slik at visjonsmodellen beskriver hva som er viktig og transkriberer synlig tekst.", "modalityBridgePrompt": "Beskrivelse prompt", "modalityBridgeAdvanced": "Avansert", - "modalityBridgeTimeoutMs": "Timeout (ms)", + "modalityBridgeTimeoutMs": "Tidsavbrudd (ms)", "modalityBridgeMaxImages": "Maks bilder per forespørsel", "visionMaxCharsLabel": "Maks antall tegn i beskrivelsen", "visionMaxCharsHint": "Begrens lengden på beskrivelsen av visjonsmodellen. 0 = ubegrenset — øk for detaljrike OCR-oppgaver.", @@ -8248,7 +8263,7 @@ "modalityBridgeStatsLastUsed": "sist brukt", "modalityBridgeStatsNever": "aldri", "modalityBridgeTestButton": "Test med eksempelbilde", - "modalityBridgeTestRunning": "Testing…", + "modalityBridgeTestRunning": "Tester …", "modalityBridgeTestOk": "Bro OK — {count} bilde(r) beskrevet av {model}", "modalityBridgeTestReroute": "Broen omdirigerte forespørselen til {model}", "modalityBridgeTestNoop": "Broen ble ikke aktivert (modellen kan støtte visjon nativt eller broen er deaktivert)", @@ -8286,7 +8301,7 @@ "cliproxyapiFallbackDescription": "Cliproxyapi Fallback Beskrivelse", "cliproxyapiHealthLabel": "Cliproxyapi Helse Etikett", "cliproxyapiImportFailed": "Cliproxyapi Import Mislyktes", - "cliproxyapiImportResult": "Cliproxyapi Import Result", + "cliproxyapiImportResult": "Importresultat for Cliproxyapi", "cliproxyapiInvalidUrl": "Cliproxyapi Ugyldig URL", "cliproxyapiLifecycleNoticeAfter": "Cliproxyapi Livssyklusvarsel Etter", "cliproxyapiLifecycleNoticeBefore": "Cliproxyapi Livssyklusvarsel Før", @@ -8310,7 +8325,7 @@ "oneproxyDelete": "Oneproxy Slett", "oneproxyEmpty": "Oneproxy Tomt", "oneproxyHost": "Oneproxy Vertskap", - "oneproxyLatency": "Oneproxy Latency", + "oneproxyLatency": "Oneproxy-ventetid", "oneproxyProtocol": "Oneproxy-protokoll", "oneproxyQuality": "Oneproxy Kvalitet", "oneproxySyncFailed": "Synkronisering mislyktes: {error}", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Helse", "cliproxyapiPort": "Port", "qdrantHost": "Vert", - "qdrantCollection": "Samling", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Samling" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", + "title": "RTK-motor", + "description": "Kommandoorientert komprimering for verktøyutdata, terminallogger og byggeresultater.", + "enabled": "Aktivert", + "intensity": "Intensitet", "intensityMinimal": "Minimal", "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "intensityAggressive": "Aggressiv", + "toolResults": "Verktøyresultater", + "assistantMessages": "Assistentmeldinger", + "codeBlocks": "Kodeblokker", "filterCatalog": "Filterkatalog", "filterCatalogDesc": "Tilgjengelige utgangsfiltre etter kategori", "guidedConfig": "Konfigurasjon", "guidedConfigDesc": "Juster hvordan RTK filtrerer terminalutgangen din", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Maks. linjer", + "maxChars": "Maks. tegn", "deduplicateThreshold": "Deduplikatterskel", "customFilters": "Egendefinerte filtre", "detectedType": "Oppdaget type", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Feil", "rawOutputAlways": "Alltid", "rawOutputMaxBytes": "Raw output maks byte", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Filtertesting", + "pasteOutput": "Lim inn verktøyutdata for å teste filtrering...", "presetHigh": "Aggressiv", "presetLow": "Lys", "presetMaxChars": "Maks utdatategn", "presetMaxLines": "Maks utgangslinjer", "presetMedium": "Standard", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Kjør", + "result": "Resultat", + "previewEmpty": "Kjør et eksempel for å forhåndsvise RTK-utdata.", + "detected": "Oppdaget", "masterSwitchOffAlert": "Hovedbryteren for Token Saver er AV — disse innstillingene vil ikke påvirke forespørsler før du slår den på fra Endpoint-siden.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Filtrerte tokener", + "filtersActive": "Aktive filtre", + "requests": "Forespørsler", + "avgSavings": "Gj.sn. besparelse", "simpleMode": "Enkelt", "advancedMode": "Avansert", "searchFilters": "Søkefiltre...", @@ -8463,9 +8470,9 @@ "loadFailed": "Kunne ikke laste inn motorinformasjon.", "engineNotFound": "Motoren \"{engine}\" ble ikke funnet.", "saveFailed": "Kunne ikke lagre konfigurasjonen.", - "previewFailed": "Preview failed.", + "previewFailed": "Forhåndsvisningen mislyktes.", "panelPointerPrefix": "Slå dette laget på eller av og angi nivået i", - "compressionSettings": "Compression Settings", + "compressionSettings": "Komprimeringsinnstillinger", "panelPointerSuffix": ". Denne siden redigerer kun den detaljerte konfigurasjonen.", "configuration": "Konfigurasjon", "noAdditionalConfiguration": "Ingen ytterligere konfigurasjon.", @@ -8481,7 +8488,7 @@ "savings": "Besparelser", "original": "Original", "compressed": "Komprimert", - "diff": "Diff", + "diff": "Differanse", "last7Days": "Siste 7 dager", "noDataYet": "Ingen data ennå", "runs": "Kjøringer", @@ -8601,7 +8608,7 @@ "bert-base": "BERT-base (710 MB, høyere nøyaktighet)" }, "intensity": { - "lite": "Lite", + "lite": "Lett", "full": "Full", "ultra": "Ultra" } @@ -8609,7 +8616,7 @@ "modeOptions": { "default": "Standard", "off": "Av", - "lite": "Lite", + "lite": "Lett", "standard": "Standard", "aggressive": "Aggressiv", "ultra": "Ultra", @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Komprimeringskombinasjoner", + "description": "Definer hvordan motorer kombineres for ulike rutingsscenarioer.", + "createCombo": "Opprett komprimeringskombinasjon", + "editCombo": "Rediger", + "deleteCombo": "Slett", + "deleteConfirm": "Slette denne komprimeringskombinasjonen?", + "pipeline": "Prosesslinje", + "addStep": "Legg til trinn", + "removeStep": "Fjern", + "name": "Navn", + "descriptionField": "Beskrivelse", + "languagePacks": "Språkpakker", + "outputMode": "Utdatamodus", + "assignToRouting": "Tilordne til rutekombinasjoner", + "noAssignments": "Ingen rutekombinasjoner tilgjengelig", + "default": "Standard", + "setAsDefault": "Angi som standard", + "save": "Lagre", + "cancel": "Avbryt", + "enabled": "Aktivert", "loading": "Laster inn…", "hubTitle": "Komprimeringssenter", "hubDescription": "Velg hvilken komprimeringsprofil som kjører globalt.", @@ -8661,28 +8668,28 @@ "contextEditingNote": "For øyeblikket bare tilgjengelig for Claude (Anthropic). Det er en delegert modus: leverandøren fjerner gamle verktøybruksblokker på serversiden — vi skriver ikke om meldingen. Det påvirker ikke andre leverandører.", "namedCombos": "Navngitte kombinasjoner", "namedCombosDescription": "Lagre ulike pipelines og tilordne dem til spesifikke rutingkombinasjoner.", + "activeProfileMasterSwitchOffWarning": "Den aktive profilen nedenfor vil ikke kjøre før hovedbryteren «Prompt Compression» er slått på.", + "activeProfileMasterSwitchOffCta": "Slå den på i Innstillinger", "comboNamePlaceholder": "Kombinasjonsnavn", "descriptionPlaceholder": "Beskrivelse", "nameRequired": "Skriv inn et kombinasjonsnavn før du lagrer.", "pipelineRequired": "Legg til minst ett pipeline-trinn før du lagrer.", "saveComboFailed": "Kunne ikke lagre kombinasjon (HTTP {status}).", "deleteNamedConfirm": "Slett kombinasjonen “{name}”?", - "intensityLite": "Lite", + "intensityLite": "Lett", "intensityFull": "Full", "intensityUltra": "Ultra", "active": "Aktiv", "languagePacksList": "Språkpakker: {packs}", "dragToReorder": "Dra for å endre rekkefølge på trinn", "engine": "Motor", - "intensity": "Intensitet", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensitet" }, "compressionStudio": { "noRun": "Ingen komprimeringskjøring tilgjengelig.", "liveDataHint": "Sanntidsdata ankommer via WebSocket-komprimeringskanalen.", "cockpitView": "Cockpit-visning", - "canvas": "Canvas", + "canvas": "Lerret", "waterfall": "Vannfall", "replayDone": "Avspilling fullført", "pauseReplay": "Sett avspilling på pause", @@ -8691,7 +8698,7 @@ "replay": "Spill av på nytt", "resetReplay": "Nullstill avspilling", "stepProgress": "trinn {current}/{total}", - "inlineView": "Inline", + "inlineView": "Integrert", "splitComingSoon": "Delt visning (kommer snart)", "inputPlaceholder": "Lim inn en prompt, verktøyutdata eller kontekst…", "activeCombined": "Aktiv i den kombinerte flyten", @@ -8705,7 +8712,7 @@ "run": "Kjør", "laneRejected": "avvist: {reason}", "error": "feil", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Forhåndsvisning av kombinert pipeline mislyktes: {reason}", "combinedFlow": "Kombinert flyt", "eachLayer": "Hvert lag separat", "diff": "Differanse", @@ -8735,8 +8742,8 @@ "encoderComparison": "Koder A/B — {count} array(er)", "encoderWinner": "vinner: {winner}", "encoder": "koder", - "bytes": "bytes", - "tokensCl100k": "tokens (cl100k)" + "bytes": "byte", + "tokensCl100k": "tokener (cl100k)" }, "omniglyph": { "preview": "Forhåndsvisning", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Aktiver motoren", "enableDescription": "Kjører sist i stakken (etter at RTK/Caveman renser teksten, og OmniGlyph konverterer resten til bilder) og kjører også frittstående via omniglyph-modus. Dette er en forhåndsvisning og forblir deaktivert som standard til end-til-end-validering er fullført.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Komprimeringsprofil", + "profileDescription": "Profilen er et tak, ikke et gulv: En strengere profil kan ikke åpnes igjen av en overstyring per trinn. Målt på denne kodebasen: Med kodesikker eller balansert komprimeres ingenting i en økt som ennå ikke har opparbeidet historikk, fordi begge hever terskelen for minimum antall tegn og beholder systemprompten, verktøyskjemaene og verktøyresultatene i opprinnelig format.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Aggressiv (standard)", + "description": "Retningslinjene som ble målt i de publiserte kvitteringene. Avbilder systemprompten, verktøydokumentasjonen og tett historikk." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Balansert", + "description": "Beholder aktiv tilstand i opprinnelig format og beskytter de siste 8 turene; komprimerer bare eldre, lukket historikk." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Kodesikker", + "description": "Beholder autoritet, verktøyskjemaer og aktive verktøyresultater i opprinnelig format, og beskytter de siste 12 turene. Komprimerer ingenting før økten har opparbeidet historikk." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Uendret gjennomføring", + "description": "Ruter uten transformasjon. Motoren hoppes over, og forespørselen videresendes uendret." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Velg komprimeringsprofilen for OmniGlyph", "saved": "Lagret.", "saveFailed": "Kunne ikke lagre.", "enableAria": "Aktiver OmniGlyph-motoren", @@ -8873,7 +8880,7 @@ "providerExposureHint": "Når aktivert, vises oppdagede modeller i leverandørvelgere i hele OmniRoute.", "providerExposureUpdateFailed": "Kunne ikke oppdatere (HTTP {status})", "providerExposureNetworkFailed": "Nettverksfeil — kunne ikke oppdatere innstillingen for leverandøreksponering", - "webUi": "9Router Web UI", + "webUi": "9Router-nettgrensesnitt", "openNewTab": "Åpne i ny fane", "filterLogs": "Filtrer logger…", "resume": "Gjenoppta", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Regelbasert meldingskomprimering, språkpakker, analyse og kontroller for utdatamodus.", "advancedConfig": "Avansert konfigurasjon", "advancedConfigDesc": "Finjuster kompresjonsadferd", "aggressiveSettings": "Aggressive innstillinger", "aggressiveSettingsDesc": "Maksimal komprimering med potensielle kvalitetsavveininger", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Forespørsler", + "tokensSaved": "Sparte tokener", + "savingsPercent": "Besparelse i %", + "avgLatency": "Gj.sn. ventetid", + "languagePacks": "Språkpakker", + "languagePacksDesc": "Aktiver komprimeringsregler for bestemte språk.", "labelAutoTrigger": "Autokomprimer når konteksten overskrider", "labelCompressionRate": "Kompresjonsstyrke", "labelMaxTokens": "Mål tokens per melding", "labelMinLength": "Minimum meldingslengde", "labelMinSavings": "Minimum tokens å lagre", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Aktivert", + "autoDetect": "Oppdag språk automatisk", + "rulesCount": "{count} regler", "inputCompressionTitle": "Inndatakomprimering", "inputCompressionDesc": "Omskriv samtalehistorikk med kortere ordlyd. Reduserer inndata-tokens med ~50 %.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Komprimeringsanalyse", + "noAnalytics": "Ingen komprimeringsanalyse ennå.", "masterDisabledWarning": "Hovedbryteren for Token Saver er AV — disse innstillingene vil ikke påvirke forespørsler før du slår den på fra Komprimeringsinnstillinger eller endrer den her.", "outputMode": "Utgangsmodus", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Utdatamodus", "quickSettings": "Hurtiginnstillinger", "quickSettingsDesc": "Grunnleggende komprimeringsinnstillinger for å komme i gang", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Automatisk klarhetsomgåelse", + "bypassConditions": "Vilkår for omgåelse", "bypassConditionsList": "sikkerhet, irreversibel, avklaring, ordresensitiv", "simpleMode": "Enkelt", "advancedMode": "Avansert", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ultra-innstillinger", "ultraSettingsDesc": "SLM-drevet semantisk komprimering", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Svar kortfattet. Bevar tekniske termer, kode, feil, URL-er og identifikatorer.", + "full": "Svar knapt og kompakt. Bevar alt teknisk innhold.", + "ultra": "Svar svært knapt med vanlige tekniske forkortelser. Bevar eksakte symboler." } }, "translator": { @@ -8958,7 +8965,7 @@ "realtime": "Oversettelsesaktivitet i sanntid", "chatTester": "Chat Tester", "testBench": "Testbenk", - "liveMonitor": "Live Monitor", + "liveMonitor": "Direkteovervåking", "modeDescriptionPlayground": "Lim inn en hvilken som helst API-forespørselstekst og se hvordan OmniRoute oversetter den mellom leverandørformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", "modeDescriptionChatTester": "Send ekte chatteforespørsler gjennom OmniRoute og inspiser hele rundturen: inndata, oversatt forespørsel, leverandørsvar og oversatt utdata.", "modeDescriptionTestBench": "Kjør forhåndsdefinerte scenarier og sammenlign kompatibilitet på tvers av leverandører og modeller.", @@ -8993,7 +9000,7 @@ "translationPathHubSpoke": "{source} → OpenAI (mellomliggende) → {target}", "translationPathDirect": "{source} → {target} (direkte oversetter)", "translationPathPassthrough": "Samme format - ingen oversettelse nødvendig", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "OpenAI-mellomledd", "autoFeaturesTitle": "Hva OmniRoute gjør automatisk", "autoFeaturesCount": "8 funksjoner", "featureReasoningCache": "Begrunnelse Cache", @@ -9004,7 +9011,7 @@ "featureRoleNormalizationDesc": "Kartutvikler→system for ikke-OpenAI-mål. Kartsystem→bruker for modeller som ikke støtter systemrollen.", "featureToolCallIds": "Verktøy Call ID Normalization", "featureToolCallIdsDesc": "Genererer unike tool_call ID-er når de mangler. Normaliserer til 9-tegnsformat for leverandører som Mistral.", - "featureMissingToolResponse": "Tool Response Injection", + "featureMissingToolResponse": "Injisering av verktøysvar", "featureMissingToolResponseDesc": "Injiserer tomme tool_result-meldinger når klienter sender tool_calls uten tilsvarende svar.", "featureThinkingBudget": "Tenker budsjett", "featureThinkingBudgetDesc": "Administrerer automatisk tenkekonfigurasjon. Fjerner tenkeparametere når den siste meldingen ikke er fra brukeren.", @@ -9039,14 +9046,14 @@ "scenarioMultiTurn": "Multisving", "scenarioThinking": "Tenker", "scenarioSystemPrompt": "Systemmelding", - "scenarioStreaming": "Streaming", + "scenarioStreaming": "Strømming", "templateNames": { "simple-chat": "Enkel chat", "tool-calling": "Verktøyanrop", "multi-turn": "Multisving", "thinking": "Tenker", "system-prompt": "Systemmelding", - "streaming": "Streaming", + "streaming": "Strømming", "vision": "Visjon", "schema-coercion": "Skjematvang" }, @@ -9101,7 +9108,7 @@ "anthropicCompatibleLabel": "Antropisk kompatibel", "noTemplateForFormat": "Ingen mal for dette formatet", "translationFailed": "Oversettelse mislyktes: {error}", - "pipelineDebugger": "Pipeline Debugger", + "pipelineDebugger": "Feilsøking av databehandlingskjede", "translationPipeline": "Oversettelsesrørledning", "loading": "Laster inn…", "compressionOriginal": "Original", @@ -9130,7 +9137,7 @@ "clientRequestDescription": "Forespørselsteksten slik klienten din ville sende den", "formatDetected": "Format oppdaget", "formatDetectedDescription": "OmniRoute oppdager automatisk API-formatet fra forespørselsstrukturen", - "openaiIntermediate": "OpenAI Intermediate", + "openaiIntermediate": "OpenAI-mellomledd", "openaiIntermediateDescription": "Alle formater normaliseres først til OpenAI-format (den universelle broen)", "providerFormat": "Leverandørformat", "providerFormatDescription": "OpenAI-formatet er oversatt til leverandørens opprinnelige format", @@ -9149,7 +9156,7 @@ "eventSourceMainPipeline": "• Hovedforespørselspipeline (CLI/IDE/API-trafikk)", "liveMonitorDescriptionPrefix": "Viser oversettelseshendelser når API-anrop flyter gjennom OmniRoute. Hendelser kommer fra bufferen i minnet (tilbakestilles ved omstart). Bruk", "liveMonitorDescriptionSuffix": ", eller eksterne API-kall for å generere hendelser.", - "streamTransformer": "Stream Transformer", + "streamTransformer": "Strømtransformator", "modeDescriptionStreamTransformer": "Kjør chatfullføringer SSE-strømmer gjennom Responses-transformatoren.", "streamTransformerTitle": "Svar Stream Transformer", "streamTransformerDescription": "Lim inn en SSE-strøm for chatfullføringer, kjør den gjennom OmniRoutes Responses-transformator, og inspiser de utsendte responsen.*-hendelsene før du kobler en klient.", @@ -9157,7 +9164,7 @@ "loadToolSample": "Last verktøy-anrop prøve", "transformToResponses": "Transformer til svar", "rawChatSseInput": "Rå chat fullføringer SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "Transformert Responses API SSE", "noResultsYet": "Ingen resultater ennå", "transformedEvents": "Forvandlede hendelser", "uniqueEventTypes": "Unike hendelsestyper", @@ -9170,7 +9177,7 @@ "comboRouted": "Combo rutet", "uniqueEndpoints": "Unike endepunkter", "routeDetails": "Rutedetaljer", - "comboBadge": "Combo", + "comboBadge": "Kombinasjon", "routeEndpointLabel": "Endepunkt", "routeConnectionLabel": "Tilkobling", "scenarioVision": "Visjon (bildeforståelse)", @@ -9181,7 +9188,7 @@ "conceptHeadline": "Appen din snakker ett APIs \"språk\". Oversetteren konverterer det til å bruke en annen leverandør.", "conceptDiagramAppLabel": "Appen din", "conceptDiagramSourceLabel": "Kildeformat", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (knutepunkt)", "conceptDiagramTargetLabel": "Målleverandør", "conceptDiagramExampleApp": "f.eks. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Lim inn en JSON-forespørsel; formatet oppdages automatisk.", "advancedPipelineTitle": "OpenAI mellomliggende pipeline", "advancedPipelineSubtitle": "Visualiser hvert oversettelsestrinn (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Strømtransformator (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Konverterer Chat Completions SSE til Responses API.", "advancedTestBenchTitle": "Testbenk (8 scenarioer)", "advancedTestBenchSubtitle": "Kjører alle scenarioer og rapporterer bestått/feilet + kompatibilitets-%.", @@ -9250,7 +9257,7 @@ "compressionPreviewButton": "Forhåndsvis komprimering", "compressionPreviewing": "Forhåndsviser…", "compressionPreviewFailed": "Forhåndsvisning av komprimering mislyktes", - "tokens": "tokens", + "tokens": "tokener", "pauseAutoRefresh": "Pause automatisk oppdatering", "resumeAutoRefresh": "Gjenoppta automatisk oppdatering", "live": "Direkte", @@ -9277,17 +9284,17 @@ "kiloPassRemaining": "Gjenværende", "kiloPassRenews": "Fornyes om {count} dager", "kiloPassUsageLabel": "Denne månedens forbruk", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Ekstra brukskreditter", + "kimiExtraUsage": "Ekstra bruk", + "kimiExtraUsageEnabled": "Aktivert", + "kimiExtraUsageDisabled": "Deaktivert", + "kimiExtraUsageFrozen": "Frosset", + "kimiExtraUsageUnavailable": "Utilgjengelig", + "kimiMonthlyUsed": "Brukt denne måneden", + "kimiMonthlyLimit": "Månedsgrense", + "kimiMonthlyLimitUnlimited": "Ubegrenset", + "kimiAdditionalCredits": "Tilleggskreditter", + "loggerTab": "Loggfører", "proxyTab": "Fullmakt", "budgetManagement": "Budsjettstyring", "budgetSaved": "Budsjettgrenser lagret", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Strømbrytere", "lockedIPs": "Låste IP-er", "lockoutsAutoRefreshHint": "Per-modell hastighetsgrense låser • Auto-refresh 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# låst} other {# låst}}", "timeLeft": "{time} igjen", "howItWorks": "Hvordan det fungerer", "howItWorksSubtitle": "Finn ut hvordan evalueringer validerer LLM-svarene dine", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "Svar sammenlignes mot forventede kriterier. Se bestått/ikke bestått for hver sak med ventetid og detaljert tilbakemelding.", "evalsStrategyContainsLabel": "Inneholder", "evalsStrategyExactLabel": "Nøyaktig treff", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Regulært uttrykk", "evalsStrategyCustomLabel": "Egendefinert logikk", "evalsStrategyContainsDescription": "Sjekker om LLM-utdataene inneholder den forventede delstrengen.", "evalsStrategyExactDescription": "Sjekker om LLM-utdataene samsvarer nøyaktig med den forventede verdien.", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Modeller under test", "searchSuitesPlaceholder": "Søk etter suiter...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# tilfelle} other {# tilfeller}}", "runEval": "Kjør Eval", "runAllSuites": "Kjør alle", "runAllRunning": "Kjører alle...", "runAllProgress": "Kjører {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# testsamling mislyktes} other {# testsamlinger mislyktes}}", "runAllCompleted": "Kjørte {suites} suiter — {passed} bestått, {failed} mislyktes", "runAllCompletedWithFailures": "Kjørte {completed} suiter; {failedSuites} kunne ikke fullføres", "runningProgress": "Kjører {current}/{total}...", @@ -9397,13 +9404,13 @@ "notifyAllCasesPassed": "Alle {total} saker bestått ✅", "notifySomeCasesFailed": "{passed}/{total} bestått, {failed} mislyktes", "notifyEvalRunFailed": "Evalkjøring mislyktes", - "notifyEvalTitle": "Eval: {name}", + "notifyEvalTitle": "Evaluering: {name}", "modelEvals": "Modellvurderinger", "evalsHeroDescription": "Test og valider LLM-endepunktene dine ved å kjøre forhåndsdefinerte evalueringspakker. Hver suite inneholder testtilfeller som sender reelle spørsmål gjennom OmniRoute og sammenligner svar med forventede kriterier – som hjelper deg med å oppdage regresjoner, sammenligne modeller og sikre svarkvalitet på tvers av leverandører.", "qualityValidation": "Kvalitetsvalidering", "modelComparison": "Modellsammenligning", "regressionDetection": "Regresjonsdeteksjon", - "latencyBenchmarks": "Latency Benchmarks", + "latencyBenchmarks": "Ytelsestester for latenstid", "modelLockouts": "Modellsperringer", "noLockouts": "Ingen modeller er for øyeblikket låst", "activeSessions": "Aktive økter", @@ -9423,7 +9430,7 @@ "providerLimits": "Leverandørgrenser", "noProviders": "Ingen leverandører tilkoblet", "connectProvidersForQuota": "Koble til leverandører med OAuth for å spore API-kvotegrenser og bruk.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# konto} other {# kontoer}}", "filteredFromCount": "(filtrert fra {count})", "autoRefresh": "Automatisk oppdatering", "refreshAll": "Oppdater alle", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Kunne ikke oppdatere kvotesynlighet", "account": "Konto", "modelQuotas": "Modellkvoter", - "lastUsed": "Last Refreshed", + "lastUsed": "Sist oppdatert", "actions": "Handlinger", "refreshQuota": "Oppdater kvote", "today": "I dag", @@ -9452,15 +9459,15 @@ "cardExpand": "Utvid", "cardCollapse": "Slå sammen", "moreQuotas": "+{count} flere", - "ungrouped": "Ungrouped", + "ungrouped": "Ugruppert", "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "viewByEnvironment": "Etter miljø", "noQuotaDataAvailable": "Ingen kvotedata tilgjengelig", "noAccountsForTierFilter": "Fant ingen kontoer for nivåfilter", "tierAll": "Alle", - "tierEnterprise": "Enterprise", + "tierEnterprise": "Bedrift", "tierTeam": "Team", - "tierBusiness": "Business", + "tierBusiness": "Bedrift", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Pluss", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Løs inn kreditt", "resetCreditRedeemed": "Tilbakestill innløste", "resetCreditRedeemFailed": "Kunne ikke innløse tilbakestillingskreditt", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Kunne ikke lagre testsamlingen", "clone": "Klone", "exportSuite": "Eksporter", "importSuite": "Importer", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Ugyldig eval suite JSON", "suiteBuilderCloneSuffix": "kopi", "suiteBuilderImportedSuite": "Importert Suite", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Resultatkort", + "evalApiKey": "API-nøkkel", + "scorecardPassRate": "Beståttandel", + "targetTypeModel": "Modell", + "actualOutputLabel": "Faktisk utdata", + "evalTargetHint": "Velg en modell eller kombinasjon som skal evalueres.", + "suiteBuilderDeleted": "Suiten ble slettet", + "suiteBuilderCaseCardHint": "Definer inndataprompten og kriteriene for forventet resultat.", + "nextResetUtc": "Neste tilbakestilling (UTC)", + "scorecardHint": "Samlede beståttandeler på tvers av alle evalueringssuiter.", + "suiteLatestRunsHint": "De nyeste evalueringskjøringene for denne suiten.", + "saving": "Lagrer", + "suiteBuilderCaseModelLabel": "Modell (valgfritt)", + "evalControlsTitle": "Evalueringskontroller", + "suiteBuilderEditTitle": "Rediger evalueringssuite", + "suiteBuilderCaseStrategyLabel": "Valideringsstrategi", + "notifySelectDifferentCompareTarget": "Velg et annet mål for sammenligning", + "recentRunsHint": "Viser de nyeste evalueringskjøringene. Klikk på en kjøring for å se detaljerte resultater.", + "evalCompareHint": "Sammenlign eventuelt resultatene med et annet mål.", + "suiteBuilderCaseInvalid": "Dette tilfellet har valideringsfeil. Rett dem før du lagrer.", + "historyEmpty": "Ingen evalueringshistorikk ennå", + "suiteBuilderUpdated": "Suiten ble oppdatert", + "resetInterval": "Tilbakestillingsintervall", + "suiteBuilderCreateTitle": "Opprett evalueringssuite", + "activePeriodSpend": "Forbruk i aktiv periode", + "evalApiKeyHint": "Velg hvilken API-nøkkel som skal brukes til evalueringsforespørsler.", + "evalCompareOptional": "Sammenlign (valgfritt)", + "suiteBuilderDeleteFailed": "Kunne ikke slette suiten", + "suiteBuilderCaseSystemPromptPlaceholder": "Valgfrie systeminstruksjoner ...", + "scorecardCases": "Tilfeller", + "runCompletedWithScore": "Evalueringen er fullført — {score}% beståttandel", + "suiteBuilderCustomBadge": "Egendefinert", + "targetSuiteDefaults": "Standardinnstillinger for suiten", + "suiteBuilderDeleteConfirm": "Er du sikker på at du vil slette denne suiten? Denne handlingen kan ikke angres.", + "suiteBuilderNameLabel": "Navn på suite", + "scorecardSuites": "Suiter", + "evalCompareTarget": "Sammenligningsmål", + "suiteBuilderCaseModelPlaceholder": "f.eks. gpt-4o-mini", + "evalControlsHint": "Konfigurer evalueringsmålet og API-nøkkelen, og kjør deretter suiter for å validere modellkvaliteten.", + "recentRunsTitle": "Nylige kjøringer", + "suiteBuilderCaseSystemPromptLabel": "Systemprompt", + "suiteBuilderCaseExpectedPlaceholder": "f.eks. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "f.eks. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Lim inn nøyaktig forventet svar", "suiteBuilderCaseExpectedPlaceholderRegex": "f.eks. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Bruk et regulært JavaScript uten å pakke skråstreker.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "f.eks. suite for kodekvalitet", + "suiteBuilderAddCase": "Legg til tilfelle", + "cancel": "Avbryt", + "evalTarget": "Mål", + "suiteBuilderCaseNameLabel": "Navn på testtilfelle", + "weeklyLimitUsd": "Ukentlig grense (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "f.eks. Skriv en Fibonacci-funksjon i Python", + "suiteBuilderNameRequired": "Navn på testsamling er påkrevd", + "suiteBuilderCaseUserPromptLabel": "Brukerforespørsel", + "daily": "Daglig", + "resultErrorLabel": "Feil", + "suiteBuilderBuiltInBadge": "Innebygd", + "suiteBuilderCaseCardTitle": "Testtilfelle", "suiteBuilderDuplicateCase": "Duplikat", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "f.eks. 50.00", + "suiteBuilderCaseTagsHint": "Komma-separerte tagger for organisering av testtilfeller.", + "notifyEvalRunFailedWithReason": "Evalueringen mislyktes: {reason}", + "weekly": "Ukentlig", + "runEvalRunning": "Kjører evaluering...", + "delete": "Slett", + "resetTimeUtc": "Tilbakestillingstidspunkt (UTC)", + "evalApiKeyAuto": "Automatisk (bruk standard)", + "suiteBuilderDescriptionPlaceholder": "Valgfri beskrivelse av hva denne testsamlingen tester...", + "targetComparisonTitle": "Målsammenligning", + "save": "Lagre", + "suiteBuilderCreated": "Testsamlingen ble opprettet", + "suiteLatestRuns": "Siste kjøringer", + "suiteBuilderCaseExpectedLabel": "Forventet verdi", + "historyLatency": "Ventetid", + "suiteBuilderCaseTagsPlaceholder": "f.eks. koding, python", + "targetTypeCombo": "Kombinasjon", + "scorecardPassed": "Bestått", + "suiteBuilderCaseTagsLabel": "Tagger", + "suiteBuilderNewSuite": "Ny testsamling", + "notifyEvalLoadFailed": "Kunne ikke laste evalueringsdata", + "notConfigured": "Ikke konfigurert", + "suiteBuilderCaseNamePlaceholder": "f.eks. Python-test av Fibonacci", + "intervalLabel": "Intervall", + "suiteBuilderCreateAction": "Opprett testsamling", + "suiteBuilderCasesHint": "Hvert tilfelle sender en forespørsel og validerer svaret.", + "suiteBuilderUpdatedAt": "Oppdatert", + "errorBadge": "Feil", + "suiteBuilderCasesTitle": "Testtilfeller", + "edit": "Rediger", + "monthly": "Månedlig", + "suiteBuilderCasesRequired": "Minst ett testtilfelle er påkrevd", + "weeklyLimitSummary": "Sammendrag av ukentlig budsjettgrense", + "suiteBuilderDescriptionLabel": "Beskrivelse", + "targetComparisonHint": "Sammenligning side om side av evalueringsresultater mellom mål.", + "compareCompletedWithScore": "Sammenligning fullført — {score} % bestått", + "staleQuotaTooltip": "Siste oppdatering mislyktes — viser bufrede data", "quotaThresholdLabel": "Min igjen", "quotaCutoffsColumnHelp": "Stopp forespørsler når gjenværende kvote faller til denne prosentandelen eller lavere.", "quotaCutoffsButtonDefault": "Standard", @@ -9630,7 +9637,7 @@ "quotaThresholdInvalid": "Skriv inn et helt tall fra 0 til 100.", "budgetKpiToday": "I dag", "budgetKpiThisMonth": "Denne måneden", - "budgetKpiProjEom": "Proj EOM", + "budgetKpiProjEom": "Prognose ved månedsslutt", "budgetKpiBlocked": "Blokkert", "budgetKpiAtRisk": "I faresonen", "budgetKpiActiveKeys": "Aktive nøkler", @@ -9652,7 +9659,7 @@ "budgetTemplateNames": { "tpl-prod": "Produksjon", "tpl-dev": "Utvikling", - "tpl-ci": "CI" + "tpl-ci": "KI" }, "budgetStatus": { "all": "Alle", @@ -9745,7 +9752,7 @@ "proxy": "Fullmakt", "level": "Nivå", "directNative": "Direkte (innfødt)", - "combo": "Combo", + "combo": "Kombinasjon", "inputTokens": "jeg:", "outputTokens": "O:" }, @@ -9756,7 +9763,7 @@ "usageByModel": "Bruk etter modell", "usageByAccount": "Bruk etter konto", "failedToLoad": "Kunne ikke laste inn bruksstatistikk.", - "tokenHealth": "Token Health", + "tokenHealth": "Tokenstatus", "totalOAuth": "Totalt OAuth", "healthy": "Sunn", "warning": "Advarsel", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Systemmetrikker", "memory": "Minne", - "memoryShort": "mem", + "memoryShort": "minne", "uptime": "Oppetid", "ariaLabel": "Systemovervåking", "title": "Systemovervåkning", @@ -9816,8 +9823,8 @@ "signIn": "Logg på", "enterPassword": "Skriv inn passordet ditt for å fortsette", "password": "Passord", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", + "unifiedProxy": "Samlet AI API-proxy", + "unifiedAiApiProxy": "Samlet AI API-proxy", "unifiedAiApiProxyDesc": "Rut forespørsler til flere AI-leverandører gjennom ett enkelt endepunkt. Lastbalansering, failover og brukssporing innebygd.", "passwordNotEnabled": "Passordbeskyttelse er ikke aktivert", "loading": "Laster inn...", @@ -9863,7 +9870,7 @@ "backToLogin": "Tilbake til pålogging", "forgotPassword": "Glemt passord?", "continueWithOidc": "Fortsett med OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Standardpassord: CHANGEME (med mindre INITIAL_PASSWORD er angitt)", "Authorization": "Autorisasjon", "Content-Disposition": "Innhold-Disposisjon", "waitingForAuthorization": "Venter på autorisasjon...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Venter på antigravity-autorisasjon...", "waitingForQoderAuthorization": "Venter på Qoder-autorisasjon...", "exchangingCodeForTokens": "Utveksler kode for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Inkompatibel Node.js-versjon", + "nodeIncompatibleDesc": "Du kjører Node.js {version}, som ikke er i samsvar med OmniRoutes retningslinjer for sikre kjøretidsmiljøer. Bruk en oppdatert Node.js 20.x- eller 22.x LTS-versjon.", + "nodeIncompatibleFixLabel": "Løsning: Installer en oppdatert Node.js 22 LTS-versjon", + "nodeIncompatibleHint": "OmniRoute krever Node.js 22.22.2+ (22.x LTS) eller 24.0.0+ (24.x LTS). Node 24 LTS anbefales.", "resetViaAppDataTitle": "Tilbakestill via App-data", "resetViaAppDataDescription": "Slett innstillingsfilen fra appdata-katalogen for å tilbakestille passordet ditt:", "quitDesktopApp": "Avslutt OmniRoute skrivebordsapp helt", @@ -9953,7 +9960,7 @@ "featureUsageTrackingDesc": "Detaljert analyse og kostnadsovervåking på tvers av alle modeller.", "featureOAuthApiKeysTitle": "OAuth- og API-nøkler", "featureOAuthApiKeysDesc": "Administrer legitimasjon på en sikker måte i ett hvelv.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Skysynkronisering", "featureCloudSyncDesc": "Synkroniser konfigurasjonene dine på tvers av enheter umiddelbart.", "featureCliSupportTitle": "CLI-støtte", "featureCliSupportDesc": "Fungerer med Claude Code, Codex, Cline, Cursor og mer.", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "Leverandører", "commonUseCases": "Vanlige brukstilfeller", "clientCompatibility": "Klientkompatibilitet", - "protocolsToc": "Protocols", + "protocolsToc": "Protokoller", "apiReference": "API-referanse", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Referanse for administrasjons-API", + "managementApiDescription": "Automatiseringsendepunkter for proxyregister, omfangstildelinger og migrering av eldre proxyer.", "method": "Metode", "path": "Sti", "notes": "Notater", @@ -10064,7 +10071,7 @@ "quickStartStep4Suffix": "Bruk for eksempel leverandørprefiks", "deploySetupTitle": "Oppsettveiledning", "deploySetupText": "Trinn-for-trinn-installasjon, miljøkonfigurasjon og førstegangsgjennomgang for OmniRoute.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron-skrivebordsapp", "deployElectronText": "Kjør OmniRoute som et innebygd skrivebordsprogram på Windows, macOS og Linux.", "deployDockerTitle": "Docker", "deployDockerText": "Containerisert distribusjon med Docker Compose; klar for produksjonsstabler og Kubernetes.", @@ -10075,14 +10082,14 @@ "deployPwaTitle": "PWA", "deployPwaText": "Installer OmniRoute som en progressiv nettapp på Android-, iOS- og stasjonære nettlesere.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Kjør OmniRoute uten grafisk grensesnitt på Android via Termux. Åpne kontrollpanelet i mobilnettleseren.", "featureRoutingTitle": "Ruting for flere leverandører", "featureRoutingText": "Rut forespørsler til 30+ AI-leverandører gjennom ett enkelt OpenAI-kompatibelt endepunkt. Støtter chat, svar, lyd og bilde-APIer.", "featureCombosTitle": "Kombinasjoner og balansering", "featureCombosText": "Lag modellkombinasjoner med reservekjeder og balanseringsstrategier: round-robin, prioritet, tilfeldig, minst brukt og kostnadsoptimalisert.", "featureUsageTitle": "Bruk og kostnadssporing", "featureUsageText": "Sanntids-tokentelling, kostnadsberegning per leverandør/modell og detaljert bruksoppdeling etter API-nøkkel og konto.", - "featureAnalyticsTitle": "Analytics Dashboard", + "featureAnalyticsTitle": "Analysepanel", "featureAnalyticsText": "Visuell analyse med diagrammer for forespørsler, tokens, feil, ventetid, kostnader og modellpopularitet over tid.", "featureHealthTitle": "Helseovervåking", "featureHealthText": "Live helsesjekker, leverandørstatus, strømbrytertilstander og automatisk hastighetsgrensedeteksjon med eksponentiell tilbakekobling.", @@ -10090,7 +10097,7 @@ "featureCliText": "Administrer IDE-konfigurasjoner, eksporter/importer sikkerhetskopier, oppdag kodex-profiler og konfigurer innstillinger fra dashbordet.", "featureSecurityTitle": "Sikkerhet og retningslinjer", "featureSecurityText": "API-nøkkelautentisering, IP-filtrering, prompt-injeksjonsvakt, domenepolicyer, øktadministrasjon og revisjonslogging.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Skysynkronisering", "featureCloudSyncText": "Synkroniser konfigurasjonen din med Cloudflare Workers for ekstern tilgang med kryptert legitimasjon og automatisk failover.", "providersAcrossConnectionTypes": "{count}-leverandører på tvers av tre tilkoblingstyper.", "manageProviders": "Administrer leverandører", @@ -10105,7 +10112,7 @@ "useCaseUsageVisibilityTitle": "Bruk, kostnader og feilsøkingssynlighet", "useCaseUsageVisibilityText": "Spor tokens og kostnader etter leverandør, konto og API-nøkkel i fanene Bruk og Analytics.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "Basis-URL", "chatEndpointLabel": "Chat-endepunkt", "modelRecommendationLabel": "Modellanbefaling: eksplisitt prefiks", "clientCodexTitle": "Codex / GitHub Copilot-modeller", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "Bruk OmniRoute som en stabil basis-URL mens du roterer kontoer eller leverandørkombinasjoner under.", "clientKimiBullet2": "Foretrekk prefiksmodeller i kodingsflyter, slik at reserve- og revisjonsspor forblir eksplisitte.", "clientKimiBullet3": "Bruk `/v1/responses` når du vil ha native Responses-stil ruting for verktøybrukende klienter.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "Protokoller: MCP og A2A", + "protocolsDescription": "OmniRoute tilbyr to operative protokoller i tillegg til OpenAI-kompatible API-er: MCP for verktøykjøring og A2A for arbeidsflyter mellom agenter.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Bruk MCP over stdio for å la klienter oppdage og kalle OmniRoute-verktøy med innsyn i revisjonsloggen.", + "protocolMcpStep1": "Start MCP-transport med `omniroute --mcp`.", + "protocolMcpStep2": "Konfigurer MCP-klienten til å bruke stdio-transport.", + "protocolMcpStep3": "Kall `omniroute_get_health` og `omniroute_list_combos` for å bekrefte tilkoblingen.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "Bruk A2A JSON-RPC til å sende inn oppgaver synkront eller via SSE-strømming.", + "protocolA2aStep1": "Les `/.well-known/agent.json` for å finne agenter.", + "protocolA2aStep2": "Send `message/send`- eller `message/stream`-forespørsler til `POST /a2a`.", + "protocolA2aStep3": "Administrer oppgavens livssyklus med `tasks/get` og `tasks/cancel`.", + "protocolTroubleshootingTitle": "Feilsøking av protokoller", + "protocolTroubleshooting1": "Hvis MCP-statusen er frakoblet, må du kontrollere at stdio-prosessen kjører, og at heartbeat-filen oppdateres.", + "protocolTroubleshooting2": "Hvis A2A-oppgaver blir værende i `working`, kan du kontrollere `/api/a2a/tasks/:id` og strømme hendelser for å finne sluttilstanden.", + "protocolTroubleshooting3": "Bruk `/dashboard/mcp` og `/dashboard/a2a` for operativ styring og innsyn i revisjonsloggen.", "endpointChatNote": "OpenAI-kompatibelt chat-endepunkt (standard).", "endpointResponsesNote": "Responses API-endepunkt (Codex, o-serien).", "endpointModelsNote": "Modellkatalog for alle tilkoblede leverandører.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Omskrivehjelper for klienter uten /v1.", "endpointRewriteResponsesNote": "Omskriv hjelper for svar uten /v1.", "endpointRewriteModelsNote": "Omskrivehjelper for modelloppdagelse uten /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Vis lagrede elementer i proxyregisteret (støtter paginering).", + "mgmtProxiesCreateNote": "Opprett et gjenbrukbart proxyelement i registeret.", + "mgmtProxiesHealthNote": "Hent 24-timers og løpende helsemålinger per lagrede proxy fra proxylogger.", + "mgmtProxiesBulkAssignNote": "Tilordne eller fjern én proxy for flere omfangs-ID-er i én forespørsel.", + "mgmtAssignmentsListNote": "Vis proxytilordninger etter omfang, scope_id eller proxy_id.", + "mgmtAssignmentsUpdateNote": "Tilordne eller fjern proxy for globalt omfang, leverandør, konto eller kombinasjon.", + "mgmtLegacyMigrationNote": "Importer eldre proxyConfig-kart til registertilordninger.", "modelPrefixesDescriptionStart": "Bruk leverandørprefikset før modellnavnet for å rute til en bestemt leverandør. Eksempel:", "modelPrefixesDescriptionEnd": "ruter til GitHub Copilot.", "provider": "Leverandør", @@ -10313,7 +10320,7 @@ "privacyGooglePolicy": "Googles personvernregler", "privacySection5Title": "5. Cloud Sync (valgfritt)", "privacySection5Text": "Hvis du aktiverer den valgfrie skysynkroniseringsfunksjonen, kan leverandørkonfigurasjoner og API-nøkler overføres til et konfigurert skyendepunkt. Denne funksjonen er deaktivert som standard og krever eksplisitt opt-in.", - "privacySection6Title": "6. Logging", + "privacySection6Title": "6. Loggføring", "privacyLoggingIntro": "Forespørselslogger kan konfigureres gjennom dashbordinnstillingene. Du kan:", "privacySection7Title": "7. Dine rettigheter", "privacySection7TextStart": "Siden all data er lagret lokalt, har du full kontroll. Du kan slette dataene dine når som helst ved å fjerne", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute er åpen kildekode-programvare. Du står fritt til å inspisere, modifisere og distribuere den under lisensvilkårene." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI-agenter", + "description": "Finn installerte CLI-agenter på systemet ditt. Legg til egendefinerte agenter for automatisk gjenkjenning.", + "refresh": "Oppdater", + "installed": "Installert", + "notFound": "Ikke funnet", + "builtIn": "Innebygd", + "custom": "Egendefinert", + "remove": "Fjern", + "addCustomAgent": "Legg til egendefinert agent", + "addCustomAgentDesc": "Registrer et hvilket som helst CLI-verktøy for gjenkjenning. Det skannes automatisk ved oppdatering.", + "agentName": "Agentnavn", + "binaryName": "Binærfilnavn", + "versionCommand": "Versjonskommando", + "spawnArgs": "Oppstartsargumenter", + "addAgent": "Legg til agent", + "scanning": "Søker etter CLI-agenter på systemet...", + "opencodeIntegration": "OpenCode-integrasjon", + "opencodeDetected": "opencode {version} oppdaget", + "opencodeDesc": "Generer en bruksklar {configFile} med OmniRoute-base-URL-en din og alle tilgjengelige modeller – legg den i prosjektets rotmappe og kjør {command}.", + "downloadConfig": "Last ned {file}", + "downloaded": "Lastet ned!", + "setupGuideTitle": "Oppsettsveiledning", + "openCliTools": "Åpne CLI-verktøy", + "setupGuideDetectCliTitle": "Finn installerte CLI-er", + "setupGuideDetectCliDesc": "Klikk på Oppdater etter at du har installert eller oppdatert en CLI, slik at OmniRoute kan søke etter binærfiler og versjoner på nytt.", + "setupGuideCustomAgentTitle": "Registrer egendefinert binærfil", + "setupGuideCustomAgentDesc": "Bruk Legg til egendefinert agent når CLI-en din ikke finnes i den innebygde listen. Oppgi navnet på binærfilen og versjonskommandoen.", + "setupGuideCommandMissingTitle": "Løs «kommandoen ble ikke funnet»", + "setupGuideCommandMissingDesc": "Kontroller at CLI-kommandoen finnes i PATH, åpne en ny terminaløkt og kjør Oppdater på nytt.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10473,7 +10480,7 @@ "statusFailed": "Mislyktes", "statusCancelled": "Kansellert", "repositoryName": "Depotnavn", - "repositoryUrl": "Repository URL", + "repositoryUrl": "URL til kodelager", "branch": "gren", "agentDescriptions": { "jules": "Googles autonome kodeagent", @@ -10482,7 +10489,7 @@ "cursorCloud": "Cursors bakgrunns- / skyagenter (offisiell API-nøkkel)" }, "activityTypes": { - "plan": "Plan", + "plan": "Abonnement", "command": "Kommando", "code_change": "Kodeendring", "message": "Melding", @@ -10492,7 +10499,7 @@ }, "templateNames": { "simple-chat": "Enkel chat", - "streaming": "Streaming", + "streaming": "Strømming", "system-prompt": "Systemmelding", "thinking": "Tenker", "tool-calling": "Verktøyanrop", @@ -10538,108 +10545,108 @@ } }, "cache": { - "title": "Cache Management", + "title": "Hurtigbufferadministrasjon", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Oppdater", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Minneoppføringer", + "memoryEntriesSub": "LRU i minnet", + "dbEntries": "Databaseoppføringer", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Hurtigbuffertreff", + "cacheHitsSub": "av totalt {total}", + "tokensSaved": "Sparte token", + "tokensSavedSub": "Estimert fra treff", + "hitRate": "Treffprosent", + "performance": "Hurtigbufferytelse", + "autoRefresh": "Oppdateres automatisk hvert {seconds}. sekund", + "hits": "Treff", + "misses": "Bom", + "total": "Totalt", + "behavior": "Hurtigbufferatferd", + "behaviorDeterministic": "Bare forespørsler uten strømming og med temperature=0 bufres.", + "behaviorBypass": "Omgå med toppteksten {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "Standard TTL: 30 minutter. Konfigurer via {envVar}.", + "idempotency": "Idempotenslag", + "activeDedupKeys": "Aktive dedupliseringsnøkler", + "dedupWindow": "Dedupliseringsvindu", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Kunne ikke tømme hurtigbufferen.", + "unavailable": "Hurtigbufferen er utilgjengelig", + "unavailableDesc": "Kunne ikke hente statistikk for hurtigbufferen. Kontroller at serveren kjører.", "loadingCacheAria": "Laster hurtigbuffer", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Ledetekstbuffer (hos leverandøren)", + "semanticCache": "Semantisk hurtigbuffer", + "promptCacheSectionDesc": "Viser aktivitet for ledetekstbufring hos leverandøren fra brukshistorikken, slik at du kan se hvor hurtigbufferstyring er aktiv, og hvor mye inndata som gjenbrukes.", + "promptTrendDesc": "Timevis forespørselsvolum, hurtigbufferdekning og lesevolum fra hurtigbufferen de siste 24 timene.", + "cachedRequests": "Bufrede forespørsler", + "cachedRequests24h": "Bufrede forespørsler (24 t)", + "cacheHitRate": "Treffrate for hurtigbuffer", + "cacheRate": "Hurtigbufferrate", + "cacheRateDesc": "av totalt antall forespørsler", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Måledata for ledetekstbuffer", + "withCacheControl": "Med hurtigbufferstyring", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Gjenbruksgrad for hurtigbuffer", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Anslått kostnadsbesparelse", + "lastUpdated": "Sist oppdatert", + "hoursTracked": "timer sporet", + "busiestHour": "Travleste time", + "peakCacheRate": "Høyeste hurtigbufferrate", + "trendHour": "Time", + "activityVolume": "Aktivitet", + "requestsShort": "foresp.", + "inputShort": "Inn", + "cachedShort": "Bufret", + "writeShort": "Skriving", + "resetting": "Tilbakestiller...", + "resetMetrics": "Tilbakestill måledata", + "byProvider": "Fordeling etter leverandør", + "providerCacheRateDesc": "Hver leverandør viser totalt antall inndatatokener, tokener lest fra hurtigbufferen og tokener skrevet til hurtigbufferen, slik at du kan kontrollere gjenbruksgraden mot råtotalene.", "provider": "Provider", - "requests": "Requests", + "requests": "Forespørsler", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Hurtigbuffertrend (24 t)", + "peakCached": "Mest bufret", + "cached": "Bufret", + "overview": "Oversikt", "tableProvider": "Leverandør", "tableModel": "Modell", "performanceTitle": "Ytelse", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoutes egen deterministiske responsbuffer. Når den er aktivert, kan gjentatte ikke-strømmende forespørsler med temperature=0 behandles lokalt uten å kontakte den eksterne leverandøren.", + "semanticCacheDisabledDesc": "Semantisk hurtigbuffer er deaktivert. OmniRoute hopper over lokal gjenbruk av svar til du aktiverer den igjen i Innstillinger.", + "semanticEntriesDesc": "Lagrede oppføringer i den semantiske hurtigbufferen som for øyeblikket er lagret i SQLite. Aktivitet i ledetekstbufferen hos leverandøren vises ikke her.", + "searchEntries": "Søk i oppføringer...", + "search": "Søk", + "loading": "Laster inn...", + "entriesLoadError": "Kunne ikke laste inn oppføringer i semantisk hurtigbuffer.", + "noEntries": "Ingen hurtigbufferoppføringer funnet", + "noPromptCacheData": "Ingen aktivitet i leverandørens ledetekstbuffer er registrert ennå.", + "noTrendData": "Ingen aktivitet i ledetekstbufferen er registrert de siste 24 timene.", + "signature": "Signatur", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Opprettet", + "expires": "Utløper", + "actions": "Handlinger", + "deduplicatedRequests": "Dedupliserte forespørsler", + "savedCalls": "Sparte API-kall", + "totalProcessed": "Totalt antall behandlede forespørsler", + "disabled": "Deaktivert", + "totalRequests": "Totalt antall forespørsler", "reasoningCache": "Resonnement Replay", "reasoningCacheDesc": "Bevarer modelltenkning for multi-sving verktøyoppkallingsflyter", "reasoningEntries": "Aktive oppføringer", "reasoningReplayRate": "Replay rate", "reasoningReplays": "Totale repriser", "reasoningCharsCached": "Karakterer bufret", - "reasoningMisses": "Cache Misses", + "reasoningMisses": "Hurtigbuffermisser", "reasoningByProvider": "Av leverandør", "reasoningByModel": "Etter modell", "reasoningRecentEntries": "Nylige oppføringer", @@ -10669,23 +10676,23 @@ "minutesAgo": "{minutes}m siden", "hoursAgo": "{hours}t siden", "daysAgo": "{days}d siden", - "entries": "Entries" + "entries": "Oppføringer" }, "proxyConfigModal": { "levelGlobal": "Globalt", "levelProvider": "Leverandør", - "levelCombo": "Combo", + "levelCombo": "Kombinasjon", "levelKey": "Nøkkel", "levelDirect": "Direkte (ingen proxy)", "titleGlobal": "Global proxy-konfigurasjon", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "{level}-proxy — {label}", "loading": "Laster proxy-konfigurasjon ...", "inheritingFrom": "Arver fra", "source": "Kilde", "savedProxy": "Lagret proxy", "custom": "Egendefinert", "selectSavedProxyPlaceholder": "Velg lagret proxy...", - "proxyType": "Proxy Type", + "proxyType": "Proxytype", "host": "Vert", "hostPlaceholder": "1.2.3.4 eller proxy.example.com", "port": "Port", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Koble til markør-IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Logg inn med Cursor", + "tabImport": "Importer token", + "loginDescription": "Åpner Cursors nettleserinnlogging. Fungerer i Docker — godkjenn i nettleseren på vertsmaskinen, og gå deretter tilbake hit.", + "loginWithCursor": "Logg inn med Cursor", + "startingLogin": "Starter…", + "waitingApproval": "Venter på godkjenning av Cursor-innlogging…", + "openUrlHint": "Hvis nettleseren ikke åpnet seg:", + "openLoginLink": "Åpne innloggingssiden", + "cancelLogin": "Avbryt innlogging", "autoDetecting": "Automatisk oppdager tokens...", "readingFromCursor": "Leser fra Cursor IDE eller cursor-agent", "tokensAutoDetected": "Tokens ble automatisk oppdaget fra Cursor IDE!", "cursorNotDetected": "Markør-IDE ble ikke oppdaget. Vennligst lim inn tokenet ditt manuelt.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Kjører du i Docker? Bruk helst Logg inn med Cursor. Automatisk import fra IDE og cursor-agent er vanligvis ikke tilgjengelig inne i containeren. Se docs/providers/CURSOR-DOCKER.md.", "accessToken": "Tilgangstoken", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Oppdateringstoken", + "refreshTokenPlaceholder": "Valgfritt — aktiverer automatisk oppdatering av token", "required": "*", "accessTokenPlaceholder": "Tilgangstoken fylles ut automatisk...", "machineId": "Maskin-ID", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Automatisk gjenkjenning av tokens mislyktes", "errorEnterToken": "Vennligst skriv inn tilgangstoken", "errorImportFailed": "Import mislyktes", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Kunne ikke starte Cursor-innlogging", + "errorLoginPoll": "Cursor-innlogging mislyktes", + "errorLoginTimeout": "Tidsavbrudd for Cursor-innlogging — prøv igjen" }, "pricingModal": { "title": "Priskonfigurasjon", @@ -10843,9 +10850,9 @@ "selectProxy": "Velg {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Importer eldre", + "bulkAssign": "Massetildel", + "addProxy": "Legg til proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10855,14 +10862,14 @@ "tableUsage": "Table Usage", "tableActions": "Table Actions", "test": "Test", - "edit": "Edit", - "delete": "Delete", + "edit": "Rediger", + "delete": "Slett", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", "labelType": "Type", "labelFamily": "IP-familie", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Automatisk (dual-stack)", "familyIpv4": "Kun IPv4", "familyIpv6": "Kun IPv6", "familyHint": "Utgående adressefamilie. Auto beholder dual-stack; IPv4/IPv6 låser denne proxyen til den familien (forhindrer en v4-lekkasje under en proxy som kun bruker IPv6).", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Mislyktes", "successRate": "{rate} % suksess", "avgLatency": "{latency} ms i gjennomsnitt", "assignmentsCount": "{count} oppgaver", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Reparer", "relayAuthMissing": "autentisering mangler", @@ -10924,7 +10931,7 @@ "bulkImport": "Bulk import", "bulkImportTitle": "Bulk import proxyer", "bulkImportDescription": "Lim inn proxy-profiler ved å bruke rørdelt format. Én proxy per linje. Eksisterende proxyer (samme vert + port) vil bli oppdatert.", - "bulkImportParse": "Parse", + "bulkImportParse": "Tolk", "bulkImportImport": "Importer {count} proxyer", "bulkImportImporting": "Importerer...", "bulkImportParsed": "{count} proxyer analysert", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Rotasjonsstrategi", "poolStrategyHint": "round-robin veksler mellom medlemmer i rekkefølge; random velger jevnt; sticky beholder ett medlem i et tidsvindu; latency-optimized velger den raskeste basert på logger.", "poolStrategyFailed": "Kunne ikke oppdatere rotasjonsstrategien", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Rundgang", "strategyRandom": "Tilfeldig", - "strategySticky": "Sticky", + "strategySticky": "Fast", "strategyLatency": "Latensoptimalisert", "poolMembersLabel": "Pool-medlemmer ({count})", "poolNoMembers": "Ingen proxyer i denne poolen ennå.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# utgang} other {# utganger}} brukt av {connections, plural, one {# tilkobling} other {# tilkoblinger}} · opptil {max} på én utgang · siste {hours} t", + "poolEgressObservationEmpty": "Ingen trafikk registrert de siste {hours} t", + "poolEgressObservationHint": "Beregnet fra proxyloggen i løpet av perioden: unike utgående IP-adresser observert for medlemmene i denne gruppen, og OmniRoute-tilkoblingene som brukte dem. «På én utgang» betyr i løpet av perioden, ikke samtidig. 429-sperren per IP setter bare tilkoblinger fra samme leverandørfamilie på pause.", "poolRemove": "Fjern", "poolRemoveFailed": "Kunne ikke fjerne proxyen fra poolen", "poolAddLabel": "Legg til en proxy", @@ -10975,43 +10982,43 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Endepunkt", + "provider": "Leverandør", + "model": "Modell", "accountKey": "Account Key", "autoAccounts": "Auto ({count} kontoer)", "noAccounts": "No Accounts", "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "cancel": "Avbryt", + "audioFile": "Lydfil", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Fjern alle", + "request": "Forespørsel", + "response": "Svar", + "transcription": "Transkripsjon", + "copy": "Kopier", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Genererte {count} bilder", "generatedImage": "Generert bilde {index}", - "save": "Save", + "save": "Lagre", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Svar", "completions": "Fullføringer", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Innebygginger", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Modereringer", - "rerank": "Rerank", + "rerank": "Omranger", "search": "Search", "webFetch": "Netthenting" }, @@ -11019,50 +11026,50 @@ "clearChat": "Tøm chat", "typeMessagePlaceholder": "Skriv inn en melding... (Shift+Enter for ny linje)", "tabChat": "Chat", - "tabCompare": "Compare", + "tabCompare": "Sammenlign", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Bygg", + "configPane": "Konfigurasjon", + "systemPrompt": "Systeminstruksjon", + "systemPromptPlaceholder": "Du er en hjelpsom assistent.", + "modelPlaceholder": "f.eks. openai/gpt-4o", + "endpointLabel": "Endepunkt", + "parametersLabel": "Parametere", + "collapseConfig": "Skjul konfigurasjonspanelet", + "expandConfig": "Vis konfigurasjonspanelet", + "temperature": "Temperatur", + "maxTokens": "Maks antall tokener", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Tilstedeværelsesstraff", + "frequencyPenalty": "Frekvensstraff", "reasoningLabel": "Resonnering", "thinking": "Tenking", "effort": "Innsats", "effortDefault": "Standard", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Tilfeldig (la stå tomt)", + "presetsLabel": "Forhåndsinnstillinger", + "loadPreset": "Last inn forhåndsinnstilling", + "savePreset": "Lagre forhåndsinnstilling", + "noPresets": "Ingen forhåndsinnstillinger", + "presetNamePlaceholder": "Navn på forhåndsinnstilling", + "savingPreset": "Lagrer…", + "nameRequired": "Navn er påkrevd", + "failedToSavePreset": "Kunne ikke lagre forhåndsinnstillingen", + "improvePrompt": "Forbedre instruksjonen", + "improvingPrompt": "Forbedrer…", + "improvePromptTitle": "Forbedre instruksjonen din med KI", + "setModelFirst": "Velg en modell først", "setModelInConfigFirst": "Angi en modell i Config-panelet først.", "improvePromptFailed": "Forbedring av ledetekst mislyktes.", "improvePromptAria": "Forbedre ledetekst med AI", "confirmImprovePrompt": "Bekreft forbedring av ledetekst", "improvePromptDescription": "Dette vil sende din gjeldende system-prompt til for å generere en forbedret versjon.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Dette vil bruke kvote fra modellen som er konfigurert under Konfigurasjon.", + "improveConfirm": "Forbedre", + "exportCode": "Eksporter kode", + "exportCodeTitle": "Eksporter kode", "exportShort": "Eksporter", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Ingen tilgjengelig playground-tilstand å eksportere.", "closeExportModal": "Lukk eksportmodal", "close": "Lukk", "exportRealKeyWarning": "Sikkerhetsadvarsel: eksport blokkert — en ekte API-nøkkel ble oppdaget i utdataene. Vennligst tilbakestill API-nøkkelen din og prøv igjen.", @@ -11071,13 +11078,13 @@ "copyLangCode": "Kopier {language}-kode", "loadingPresets": "Laster…", "loadPresetPlaceholder": "Last forhåndsinnstilling…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Kopier", + "copiedCode": "Kopiert!", + "addModel": "+ Legg til modell", + "runAll": "Kjør alle", + "cancelAll": "Avbryt alle", + "maxColumnsReached": "Maksimalt {max} kolonner", + "modelPlaceholderCompare": "Modell (Cmd+K)…", "noModel": "Ingen modell", "statusLabel": "Status: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "Venter på svar…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "estimat på klientsiden", + "tokensLabel": "Tokener", + "costLabel": "Kostnad", + "costEstimated": "(estimert)", "ttftTitle": "Tid til første token (estimat på klientsiden)", "tpsTitle": "Tokens per sekund (estimat på klientsiden)", "tokenCountsTitle": "Prompt-tokens ↑ / Fullføringstokens ↓", "estimatedCostTitle": "Estimert kostnad (ikke garantert nøyaktig)", - "toolsLabel": "Tools", + "toolsLabel": "Verktøy", "toolsCount": "Verktøy ({count})", - "addTool": "Add tool", + "addTool": "Legg til verktøy", "editTool": "Rediger verktøy {name}", "removeTool": "Fjern verktøy {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Funksjonsnavn", "toolNameRequiredPlaceholder": "Funksjonsnavn *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Beskrivelse (valgfritt)", "toolParamsLabel": "Parametere (JSON-skjema)", "toolParamsJsonSchema": "JSON-skjema for parametere", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parametere må være gyldig JSON", + "structuredOutputLabel": "Strukturert utdata", + "enableJsonMode": "Aktiver JSON-modus", + "disableJsonMode": "Deaktiver JSON-modus", + "invalidJson": "Ugyldig JSON", "jsonMode": "JSON-modus", "jsonModeDescription": "Tvinger response_format: json_schema", "schemaName": "Skjemanavn", @@ -11125,10 +11132,10 @@ "jsonSchemaEditor": "JSON-skjemaredigering", "schemaValidated": "Skjema validert", "validateSchema": "Valider skjema", - "seed": "Seed", + "seed": "Startverdi", "stopSequences": "Stoppsekvenser", "stopSequencesPlaceholder": "f.eks. \"\\n\\n\" eller \"END\"", - "autoProvider": "Auto", + "autoProvider": "Automatisk", "httpError": "Feil {status}", "requestCancelled": "Forespørsel avbrutt", "networkError": "Nettverksfeil", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} kolonner", "addModelToCompare": "Legg til en modellkolonne for å sammenligne", "modelsSimultaneously": "Opptil {max} modeller samtidig", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Kjører…", + "runLabel": "Kjør", + "enterToolResult": "Skriv inn verktøyresultat…", "build": { "step1Label": "Hva skal testes?", "step2Label": "Konfigurer", @@ -11207,7 +11214,7 @@ "play": "Spill av", "query": "Spørring", "numResults": "Maks antall resultater", - "prompt": "Prompt", + "prompt": "Ledetekst", "size": "Størrelse", "duration": "Varighet", "question": "Spørsmål", @@ -11221,7 +11228,7 @@ "noAudioUrl": "Responsen inkluderte ikke en lyd-URL: {response}", "music": "Musikk", "embeddingSample": "OmniRoute ruter AI-forespørsler på tvers av flere leverandører.", - "embedding": "Embedding", + "embedding": "Innebygging", "imageSample": "En futuristisk by i solnedgang, kinematisk belysning", "image": "Bilde", "ttsSample": "Hei fra OmniRoute. Dette er en tekst-til-tale-test.", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Resultat {number}", "noKeysFound": "Ingen API-nøkler funnet. Legg til en i Nøkler-seksjonen.", "exampleLabel": "Eksempel", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} inn / {tokensOut} ut tokens", "defaultKey": "(standard)", "clear": "Tøm", @@ -11250,73 +11257,73 @@ "stop": "Stopp" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", + "recording": "Tar opp", + "paused": "Satt på pause", + "pipelineLogsOn": "Pipeline-logging på", + "pipelineLogsOff": "Pipeline-logging av", + "updatingPipelineLogs": "Oppdaterer pipeline-logging...", + "updatePipelineFailed": "Kunne ikke oppdatere pipeline-logging", + "capturePipeline": "Registrer pipeline-data for nye forespørsler", + "searchPlaceholder": "Søk etter modeller, leverandører, kontoer, API-nøkler, kombinasjoner...", + "allProviders": "Alle leverandører", + "allModels": "Alle modeller", + "allAccounts": "Alle kontoer", + "allApiKeys": "Alle API-nøkler", + "total": "Totalt", + "ok": "Vellykket", + "err": "Feil", + "combo": "Kombinert", + "keys": "Nøkler", + "shown": "Vist", + "sortNewest": "Nyeste", + "sortOldest": "Eldste", + "sortTokensDesc": "Tokener ↓", + "sortTokensAsc": "Tokener ↑", + "sortDurationDesc": "Varighet ↓", + "sortDurationAsc": "Varighet ↑", "sortStatusDesc": "Status ↓", "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortModelAsc": "Modell A–Å", + "sortModelDesc": "Modell Å–A", + "sortLogs": "Sorter logger", + "refresh": "Oppdater", + "columnsLabel": "Kolonner", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "OPPE", + "semantic": "Semantisk", + "upstream": "Oppstrøms", + "semanticCacheHit": "Treff i semantisk hurtigbuffer (levert av OmniRoute)", + "upstreamResponse": "Svar fra oppstrømsleverandør", + "noApiKey": "Ingen API-nøkkel", + "requestedRoutedTitle": "Forespurte {requested}, rutet som {routed}", "statusFilters": { - "all": "All", + "all": "Alle", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Vellykket", + "combo": "Kombinert" }, "columns": { "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "cacheSource": "Hurtigbufferkilde", + "model": "Modell", + "requested": "Forespurt", + "provider": "Leverandør", + "protocol": "Forespørselsprotokoll", + "account": "Konto", + "apiKey": "API-nøkkel", + "combo": "Kombinasjon", + "tokens": "Tokener", "compressed": "Komprimering", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Varighet", + "time": "Tid", + "conversation": "Samtale", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Laster inn logger...", + "noLogs": "Ingen logger ennå. Foreta noen API-kall for å se dem her.", + "noMatchingLogs": "Ingen logger samsvarer med gjeldende filtre.", + "callLogsInfo": "Kalllogger lagres også som JSON-filer i {dataDir} og roteres basert på {retentionDays} og {maxEntries}.", "loadMore": "Last inn mer", "loadingMore": "Laster inn mer...", "correlationId": "Korrelerings-ID", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Detaljert nyttelastartefakt er ikke lenger tilgjengelig for denne loggoppføringen.", "payloadCorrupt": "Detaljert nyttelastartefakt kunne ikke bli analysert.", - "notAvailable": "N/A", + "notAvailable": "Ikke relevant", "semanticCache": "Semantisk (OmniRoute)", "upstreamCache": "Oppstrøms (Leverandør)", "ariaLabel": "Forespørsel loggdetalj", @@ -11417,59 +11424,59 @@ "correlationId": "Korrelasjons-ID", "correlationIdValue": "Korrelerings-ID: {id}", "detailedPayloadInfo": "Aktiver detaljert logging først hvis du vil ha den fire-trinns klient/leverandør nyttelastvisningen for nye forespørseler.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Kopier alle", + "copiedAll": "Alle kopiert" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", + "filterAll": "Alle", + "filterErrors": "Feil", + "filterSuccess": "Vellykket", + "filterTimeout": "Tidsavbrudd", "colStatus": "Status", "colProxy": "Proxy", "colTls": "TLS", "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colLevel": "Nivå", + "colProvider": "Leverandør", + "colTarget": "Mål", + "colLatency": "Latens", + "colClientIp": "Klient-IP", + "colTime": "Tid", + "recording": "Opptak", + "paused": "Satt på pause", + "searchPlaceholder": "Søk etter vert, leverandør, mål, IP...", + "allTypes": "Alle typer", + "allLevels": "Alle nivåer", + "allProviders": "Alle leverandører", + "total": "totalt", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "FEIL", + "timeoutShort": "TIDSAVBRUDD", + "direct": "direkte", + "newest": "Nyeste", + "oldest": "Eldste", + "latencyDesc": "Ventetid ↓", + "latencyAsc": "Ventetid ↑", + "refresh": "Oppdater", + "columns": "Kolonner", + "loadingProxyLogs": "Laster proxylogger...", + "noProxyLogs": "Ingen proxylogger ennå. Konfigurer proxyer og utfør API-kall for å se dem her.", + "noMatchingLogs": "Ingen logger samsvarer med gjeldende filtre.", + "tlsFingerprint": "Chrome 124 TLS-fingeravtrykk", "colPublicIp": "Offentlig IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", + "speech": "Tale", + "search": "Søk", + "images": "Bilder", "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "music": "Musikk", + "responses": "Svar", + "rerank": "Omrangering", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Embeddinger", + "transcription": "Transkripsjon" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Kjøretid", + "description": "Sanntidsobservabilitet – trelags robusthet + økter + kvotevarsler", + "pause": "Sett på pause", + "resume": "Fortsett", + "refreshNow": "Oppdater nå", + "kpiSessions": "Økter", + "kpiCircuits": "Kretsbrytere", + "kpiCooldowns": "Nedkjølingsperioder", + "kpiLockouts": "Sperringer", + "hintStickyBound": "{count} med fast tilknytning", + "hintRecovering": "{count} gjenopprettes", + "hintAllHealthy": "alle er friske", + "hintOpen": "åpen", + "hintConnsCooling": "tilkoblinger i nedkjøling", + "hintModelsBlocked": "modeller blokkert", + "resilienceTitle": "3-lags robusthet", + "resilienceSubtitle": "Gjenspeiler den dokumenterte robusthetsmodellen", + "providersHealthy": "{percent}% av leverandørene er operative", + "layer": "Lag {n}", + "layer1Title": "Kretsbrytere for leverandører", + "layer1Desc": "Stopp trafikk til leverandører som svikter på oppstrømsnivå", + "layer2Title": "Nedkjøling av tilkoblinger", + "layer2Desc": "Hopp over én ugyldig konto/nøkkel; andre tilkoblinger fortsetter å betjene forespørsler", + "layer3Title": "Modellblokkeringer", + "layer3Desc": "Hastighetsbegrensede låser per modell; samme tilkobling betjener fortsatt andre modeller", + "badgeAffectedOf": "{affected} av {total} berørt", + "badgeCooling": "{count} i nedkjøling", + "badgeLocked": "{count} låst", + "emptyCircuits": "Ingen aktive kretsbrytere ennå", + "emptyCooldowns": "Ingen aktive nedkjølinger av tilkoblinger", + "emptyLockouts": "Ingen modellblokkeringer", + "moreCooldowns": "+{count} flere nedkjølinger", + "moreLockouts": "+{count} flere blokkeringer", + "feedTitle": "Direktesending", + "feedSubtitle": "Siste {count} hendelser", + "feedFilterAll": "Alle", + "feedFilterCircuits": "Kretsbrytere", + "feedFilterCooldowns": "Nedkjølinger", + "feedFilterLockouts": "Blokkeringer", + "feedFilterSessions": "Økter", + "feedFilterQuotas": "Kvoter", + "feedClear": "Tøm", + "feedEmptyWaiting": "Venter på hendelser ... (sjekkes hvert 5. sekund)", + "feedEmptyFiltered": "Ingen hendelser samsvarer med dette filteret", + "sessionsTitle": "Aktive økter", + "sessionsSubtitle": "Fast tilknyttede forespørselsfingeravtrykk (direkte)", + "sessionsActive": "{count} aktive", + "sessionsEmptyTitle": "Ingen aktive økter", + "sessionsEmptyHint": "Økter vises når forespørsler går gjennom proxyen", + "tblSession": "Økt", + "tblAge": "Alder", + "tblIdle": "Inaktiv", + "tblReqs": "Foresp.", + "tblBoundTo": "Knyttet til", + "topApiKeys": "Mest brukte API-nøkler", + "quotaMonitorsTitle": "Kvotemonitorer", + "quotaMonitorsSubtitle": "Gjeldende kvotestatus per kontovindu", + "openQuota": "Åpne kvote", + "allQuotasHealthy": "Alle kvoter er innenfor grensene", + "statusExhausted": "OPPBRUKT", + "statusAlerting": "VARSLER", + "statusError": "FEIL", + "moreSuffix": "+{count} til" }, "quotaShare": { "weightPercent": "Vekt %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Kvotedeling", + "description": "Del leverandørkvoter mellom API-nøkler med prosentgrenser", + "newPool": "Ny pulje", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Konfigurasjonen lagres i localStorage (den lagres ennå ikke permanent på serveren). Håndheving av grenser per forespørsel er ennå ikke koblet til proxy-pipelinen. På denne skjermen kan du utforme og visualisere kvotefordelingen. Faktisk håndheving kommer i en fremtidig versjon med permanent lagring i databasen og avskjæring av oppstrømskall.", + "kpiActivePools": "Aktive puljer", + "kpiKeysAllocated": "Tildelte nøkler", + "kpiAvgUnallocated": "Gj.sn. ikke tildelt", + "kpiProvidersWithQuota": "Leverandører med kvote", + "emptyTitle": "Ingen puljer er konfigurert", + "emptyDescription": "Opprett en pulje for å tilordne API-nøkler som skal dele en leverandørs kvotevindu med prosentvise tildelinger.", + "loading": "Laster inn …", + "removePool": "Fjern pulje", + "removeConfirm": "Vil du fjerne denne puljen?", + "pool": "Pulje", + "used": "brukt", + "allocationsCount": "Tildelinger ({count})", + "allocatedFree": "{allocated}% tildelt · {free}% ledig", + "noAllocations": "Ingen nøkler er tildelt ennå", + "capLabel": "grense {value}", + "notTrackedYet": "(spores ikke ennå)", + "policy": "Retningslinje", "apiKeyColumn": "API-nøkkel", "weightColumn": "Vekt", "fairShareShort": "rettferdig", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "streng", + "policySoft": "myk", + "policyBurst": "ekstra kapasitet", + "policyHardHint": "Blokker når nøkkelen har brukt opp tildelingen", + "policySoftHint": "Tillat overskridelse, bare varsle", + "policyBurstHint": "Tillat bruk av ekstra kapasitet fra den ledige puljen", + "editAllocations": "Rediger tildelinger", + "newPoolTitle": "Ny kvotepulje", + "providerConnection": "Leverandørtilkobling (konto)", + "selectConnection": "Velg en tilkobling…", + "noEligibleConnections": "Ingen tilkoblinger med kvotedata. Oppdater først fra /dashboard/quota.", + "quotaWindow": "Kvoteperiode", + "selectWindow": "Velg en periode…", + "alreadyUsedSuffix": "(allerede brukt)", + "windowReset": "Tilbakestill", + "duplicatePoolError": "Det finnes allerede en pool for denne tilkoblingen og perioden", + "cancel": "Avbryt", + "createPool": "Opprett pool", + "editTitle": "Rediger tildelinger", + "noKeysAdded": "Ingen nøkler er tildelt. Legg til en nedenfor.", + "totalLabel": "Totalt: {percent}%", + "totalExceeded": "⚠ overstiger 100 %", + "addKey": "+ Legg til nøkkel…", + "equalSplit": "Lik fordeling", + "save": "Lagre tildelinger", "betaPreviewLabel": "Beta – UI forhåndsvisning.", "betaConfigSavedPrefix": "Konfigurasjonen er lagret i", "betaConfigSavedSuffix": "(ikke vedvart på serveren ennå). Håndhevelse av grense per forespørsel er ennå ikke koblet til proxy-pipelinen. Denne skjermen lar deg designe og visualisere kvotefordelingen; reell håndhevelse vil lande i en fremtidig iterasjon med DB-persistens og oppstrøms samtaleavlytting.", @@ -11603,7 +11610,7 @@ "resetIn": "tilbakestille inn", "quotaTotal": "totalt", "kpiAvgUtilization": "Gjennomsnittlig utnyttelse", - "kpiBorrowingNow": "Borrowing now", + "kpiBorrowingNow": "Låner nå", "conceptTitle": "Hvordan Quota Share fungerer", "conceptIntro": "Quota Share deler en leverandørs kvote mellom flere API-nøkler ved hjelp av arbeidskonserverende rettferdig deling (fair-share): hver nøkkel mottar en proporsjonal andel, men kan låne fra den ledige saldoen uten å overskride den globale grensen.", "conceptFairShare": "Rettferdig deling (fair-share): hver nøkkel mottar kvote proporsjonalt med sin konfigurerte vekt", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "Base-URL", "endpointsCollapse": "Slå sammen", "endpointsExpand": "Utvid", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-opprinnelig", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — kun codex", "betaText": "Quota Share er funksjonell, men feil kan forventes. Fant du en? Vennligst rapporter den.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "Denne gruppen har fortsatt pooler — tilordne dem på nytt eller slett dem først.", "ungroupedTitle": "Ugruppert", "ungroupedHint": "Disse poolene er ikke tilordnet en kjent gruppe. Rediger en pool for å flytte den til en reell gruppe.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Kunne ikke fjerne denne poolen.", + "dismiss": "Lukk" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", + "title": "Programtillegg", + "description": "Installer og administrer programtillegg som utvider funksjonaliteten i OmniRoute", + "loading": "Laster inn programtillegg...", + "scanning": "Skanner...", + "scanForPlugins": "Søk etter programtillegg", + "noPlugins": "Ingen programtillegg installert", + "noPluginsDescription": "Plasser programtilleggsmapper i ~/.omniroute/plugins/ og klikk på Søk.", + "activate": "Aktiver", + "deactivate": "Deaktiver", + "uninstall": "Avinstaller", + "uninstallConfirm": "Avinstallere programtillegget «{name}»?", + "pluginScanComplete": "Søk etter programtillegg fullført", + "pluginScanFailed": "Søk etter programtillegg mislyktes", + "activated": "{name} er aktivert", + "deactivated": "{name} er deaktivert", + "activateFailed": "Kunne ikke aktivere {name}", + "deactivateFailed": "Kunne ikke deaktivere {name}", + "uninstalled": "{name} er avinstallert", + "uninstallFailed": "Kunne ikke avinstallere {name}", + "configure": "Konfigurer: {name}", + "configurePlugin": "Konfigurer", + "noConfigSettings": "Dette programtillegget har ingen konfigurerbare innstillinger.", + "saving": "Lagrer...", + "saveConfiguration": "Lagre konfigurasjon", + "configurationSaved": "Konfigurasjonen er lagret", + "saveConfigurationFailed": "Kunne ikke lagre konfigurasjonen", + "pluginNotFound": "Fant ikke programtillegget", + "version": "Versjon", + "author": "Forfatter", + "description_label": "Beskrivelse", "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "enabled": "Aktivert", + "disabled": "Deaktivert", "installedTab": "Installert", "marketplaceTab": "Markedsplass", "marketplaceUrlLabel": "Egendefinert markedsplass-URL", @@ -11729,7 +11736,7 @@ "verified": "Verifisert", "install": "Installer", "installedFromMarketplace": "Programtillegg {name} installert!", - "hooks": "Hooks" + "hooks": "Kroker" }, "quotaPlans": { "title": "Planer og kvoter", @@ -11987,7 +11994,7 @@ "provider": "Tilbyder", "requests": "Forespørsler", "success": "Suksess", - "rate": "Rate", + "rate": "Sats", "tokensIn": "Tokens inn", "tokensOut": "Tokens ut", "ttftAfterTool": "TTFT etter verktøy", @@ -12053,13 +12060,13 @@ "filterHost": "Filtrer vert…", "filterAgent": "Agent", "filterStatus": "Status", - "pauseBtn": "Pause", + "pauseBtn": "Sett på pause", "resumeBtn": "Gjenoppta", "clearBtn": "Tøm", "exportHar": "Eksporter .har", "recordSession": "REC", "stopSession": "Stopp", - "liveBadge": "live", + "liveBadge": "direkte", "offlineBadge": "frakoblet", "noRequests": "Ingen forespørsler er fanget opp ennå.", "noRequestsDesc": "Forsikre deg om at AgentBridge kjører, eller aktiver en annen fangstmodus.", @@ -12068,7 +12075,7 @@ "tabHeaders": "Headere", "tabRequest": "Forespørsel", "tabResponse": "Respons", - "tabTiming": "Timing", + "tabTiming": "Tidsmåling", "tabLlm": "LLM", "tabStats": "Statistikk", "requestHeaders": "Forespørselsheadere", @@ -12102,7 +12109,7 @@ "httpProxyTitle": "HTTP-proxy-kodesnutt — port {port}", "notRecording": "Tar ikke opp", "anyStatus": "Uansett status", - "liveOnly": "Live", + "liveOnly": "Direkte", "viewingRecordedSession": "Viser opptak av økt", "backToLive": "Tilbake til live", "untitledSession": "Navnløs økt", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP-agenter", "phrase": "CLI-er som OmniRoute starter som kjørings-backend (omvendt flyt)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "De fleste brukere kan ignorere dette — bruk det bare når en integrasjon krever det.", "flow": "Klient → OmniRoute → start CLI (stdio/ACP) → respons", "seeOther": "Se →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI brukt som backend av Omni", "desc": "Omvendt kjøring", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → start CLI → svar", "examples": "f.eks.: claude, codex (ACP)" } }, @@ -12251,7 +12258,7 @@ "detectionInstalled": "Installert", "detectionNotFound": "Ikke funnet", "baseUrlAll": "Alle", - "baseUrlFull": "Full", + "baseUrlFull": "Fullstendig", "baseUrlPartial": "Delvis" }, "cliAgents": { @@ -12370,8 +12377,8 @@ "description": "Utløs systemsikkerhetskopiering, gjenopprett fra sikkerhetskopifiler og administrer livssyklusen til SQLite-databasen. Støtter eksport-, import- og trinnvise (inkrementelle) øyeblikksbildestrategier." }, "omni-webhooks": { - "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "name": "Webhooker", + "description": "Registrer, vis, test og fjern webhook-endepunkter. Konfigurer hendelsesabonnementer (request.completed, request.failed, quota.exceeded osv.) og administrer nye leveringsforsøk." }, "omni-mcp": { "name": "MCP-server", @@ -12390,7 +12397,7 @@ "description": "De sentrale OpenAI-kompatible inferensendepunktene: chat completions, embeddings, bilder, lyd (TTS/STT), modereringer, rerank og Responses API. Den primære integrasjonsflaten for AI-agenter." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Tjen", "description": "Start, stopp og start OmniRoute-serveren på nytt fra CLI. Administrer daemon-modus, portkonfigurasjon, automatisk gjenoppretting, systemstatusfelt-integrasjon og snarveien for å åpne dashbordet." }, "cli-health": { @@ -12589,14 +12596,14 @@ "typeApikey": "API-nøkkel", "sortTypeFirst": "Enkleste først", "sortTypeFirstHelp": "Grupper etter registreringsinnsats (Ingen registrering → OAuth-innlogging → API-nøkkel), og behold kvalitetsrekkefølgen innenfor hver gruppe", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Mest pålitelige først", + "sortByReliabilityHelp": "Sorter leverandører etter andelen kall som lyktes i det valgte tidsrommet. Leverandører med for få kall til å angi en rate, beholder sin poengrekkefølge under dem som er målt.", "typeLegend": "Ingen registrering = null oppsett · OAuth-innlogging = logg inn med din egen konto · API-nøkkel = ta med din egen nøkkel eller leverandørens gratisnivå", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Pålitelighet", + "colReliabilityHelp": "Andelen kall som denne leverandøren faktisk besvarte i løpet av de siste 24 timene. En strek betyr at den håndterte for lite trafikk til å angi en rate.", + "reliabilitySample": "{successes} av {requests} kall lyktes i løpet av de siste {hours} t", + "reliabilityTooFew": "Bare {requests} kall i løpet av de siste {hours} t — for få til å angi en rate", + "reliabilityNoTraffic": "Ingen kall registrert i løpet av de siste 24 t" }, "discovery": { "title": "Leverandøroppdagelse", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar-støttespiller", + "description": "Bekreftet en aktiv støttefeed for OmniRoute Radar", + "criteria": "Bekreft en signert, aktiv støttefeed for Radar." }, "first-token": { "name": "Første token", @@ -12859,13 +12866,13 @@ "ccDiscoveryAliasesEnvWarning": "Aktivert via miljøvariabel (EXPOSE_CC_DISCOVERY_ALIASES) — dette overstyrer enhver dashboard-bryter nedenfor.", "resetFlag": "Tilbakestill {label} til standard", "reset": "Tilbakestill", - "loadFailed": "Failed to load feature flags", - "updateFailedHttp": "Failed to update flag: HTTP {status}", - "updateFailed": "Failed to update flag", - "restartFailedHttp": "Restart failed: HTTP {status}", - "restartFailed": "Restart failed", - "resetOverridesFailedHttp": "Failed to reset overrides: HTTP {status}", - "resetOverridesFailed": "Failed to reset overrides", + "loadFailed": "Kunne ikke laste inn funksjonsflagg", + "updateFailedHttp": "Kunne ikke oppdatere flagget: HTTP {status}", + "updateFailed": "Kunne ikke oppdatere flagget", + "restartFailedHttp": "Omstart mislyktes: HTTP {status}", + "restartFailed": "Omstart mislyktes", + "resetOverridesFailedHttp": "Kunne ikke tilbakestille overstyringer: HTTP {status}", + "resetOverridesFailed": "Kunne ikke tilbakestille overstyringer", "restartRequiredCount": "{count, plural, one {# endring krever} other {# endringer krever}} en serveromstart for å tre i kraft.", "restartRequiredDescription": "Disse flaggene gjelder først etter at prosessen starter på nytt. Start på nytt nå eller fortsett å redigere — ventende flagg forblir i kø til du bekrefter.", "restartServer": "Start serveren på nytt", @@ -12885,7 +12892,7 @@ "block": "Blokker", "redact": "Sladd", "disabled": "Deaktivert", - "dual": "Dual", + "dual": "Dobbel", "alias": "Alias", "canonical": "Kanonisk" }, @@ -12948,8 +12955,8 @@ "description": "Tillat flere tilkoblinger for hver kompatibilitetsnode." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Deaktiver kontroller av kontekstvindu", + "description": "Hopp over OmniRoutes lokale kontroll av kontekstvindu og maksimalt antall inndatatokener for direkte forespørsler til én enkelt modell. Oppstrømsleverandører håndhever fortsatt sine faktiske grenser. Promptkomprimering og grenser for utdatatokener forblir aktive." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Fjern interne utdataelementer fra kommentarfase fra Responses API-gjennomstrømmingsstrømmer før de videresendes til klienter. Deaktiver dette flagget for å motta rå oppstrømskommentarer." @@ -12985,7 +12992,7 @@ "description": "Tillat strømgjenoppretting å be om svaret på nytt og sy det sammen etter at bytes allerede har nådd klienten." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Gjør fortsettelse midt i en strøm trygg ved verktøykall: Gjenoppta aldri en avbrutt strøm etter at et verktøykall er sendt (enten det fortsatt pågår eller allerede er fullført), og stopp etter én tom fortsettelse i stedet for å bruke hele budsjettet for nye forsøk." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Bytt én gang over til en søskentilkobling når en strøm lukkes før den har sendt en nyttig ramme, og det begrensede nye forsøket på samme tilkobling er brukt opp. Uten en brukbar søskentilkobling returneres den opprinnelige early-EOF-feilen. Av: early-EOF forblir endelig etter det nye forsøket." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Aktiver nettverkstilgang i ferdighetssandkassen." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Serverstyrt verktøyløkke", + "description": "Fortsett ikke-strømmende, serverstyrte verktøykall til modellen returnerer et svar som klienten kan bruke." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Opprinnelse for Retry-After", + "description": "For aggregerte 429/503-svar om utilgjengelighet skal Retry-After utelates når det ikke finnes et konkret kjent tidspunkt for et fremtidig forsøk, i stedet for å sende en syntetisk verdi på 1 s. Legg til error.retry_after_provenance, og les tekstlige hint om nye forsøk i tømmingsbaner for kombinasjoner." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Beskyttet prioritetsinfrastruktur stopper som 502", + "description": "Svar med 502 i stedet for 503 når et prioritetsmål med reserve kun ved kvoteproblemer stopper kombinasjonen av en årsak som beviselig ikke skyldes kvoten: en åpen effektbryter hos leverandøren eller en prediktiv forsinkelseshopp." } } }, @@ -13143,16 +13154,16 @@ "resetsInDays": "tilbakestilles om {count}d", "saveFailed": "Kunne ikke lagre bruksgrenser", "saving": "Lagrer...", - "saveQuota": "Save quota", - "loadUsdCostsFailed": "Failed to load USD costs", - "usdCost": "USD Cost", - "close": "Close", - "loadingUsdCosts": "Loading USD costs", - "used": "Used", - "quotaUsed": "Quota used", - "estimatedFullQuota": "Est. 100%", - "rows": "Rows", - "window": "Window", + "saveQuota": "Lagre kvote", + "loadUsdCostsFailed": "Kunne ikke laste inn kostnader i USD", + "usdCost": "Kostnad i USD", + "close": "Lukk", + "loadingUsdCosts": "Laster inn kostnader i USD", + "used": "Brukt", + "quotaUsed": "Brukt kvote", + "estimatedFullQuota": "Estimert 100 %", + "rows": "Rader", + "window": "Vindu", "unknown": "ukjent", "fromRecordedReset": "Fra registrert {quota}-tilbakestilling", "fromObservedReset": "Fra observert {quota}-tilbakestilling", @@ -13171,7 +13182,7 @@ "segmentHint": "Hvert segment = én gratis pool · pool-deduplisert, ærlig telling (ingen oppblåste tak for hastighetsbegrensning).", "boost": "Lås opp ~{tokens} mer/mnd med en engangs $10 OpenRouter-påfylling (50 → 1000 forespørsler/dag)", "uncapped": "Permanent gratis, ingen publisert grense (hastighetsbegrenset) — reell tilgang, ikke talt med i overskriften:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "Ytterligere ~{tokens}/md. bak en regional identitetskontroll (f.eks. verifisering med ekte navn i Fastlands-Kina) – reell kvote som ikke er medregnet i hovedtallet:", "tosRestricted": "{count, plural, one {# modell} other {# modeller}} flagget som ToS-begrenset — du bestemmer", "provider": "Leverandør", "model": "Modell", @@ -13241,130 +13252,130 @@ "cooldownTitle": "{label} er i midlertidig nedkjøling", "cooldownRecommendation": "Vent på oppstrøms forsøksvindu eller fjern nedkjølingen etter å ha bekreftet gjenoppretting.", "staleErrorTitle": "{label} har en foreldet feiltilstand", - "staleErrorRecommendation": "Clear stale error fields so the connection is eligible for normal routing again.", - "inactiveTitle": "{label} is disabled", - "inactiveRecommendation": "Reactivate only if this was not intentionally disabled.", - "modelLockoutTitle": "{model} is locked out for one connection", - "modelLockoutRecommendation": "Resolve the connection state or confirm model quota/availability has recovered before clearing the lockout.", - "quotaTitle": "Quota monitor reports {status}", - "quotaRecommendation": "Review quota usage and rotate traffic to another healthy connection if needed." + "staleErrorRecommendation": "Fjern utdaterte feilfelt slik at forbindelsen igjen kan brukes til normal ruting.", + "inactiveTitle": "{label} er deaktivert", + "inactiveRecommendation": "Aktiver bare på nytt hvis dette ikke ble deaktivert med hensikt.", + "modelLockoutTitle": "{model} er utestengt for én forbindelse", + "modelLockoutRecommendation": "Løs tilstanden for forbindelsen, eller bekreft at modellkvoten eller tilgjengeligheten er gjenopprettet, før utestengingen oppheves.", + "quotaTitle": "Kvoteovervåkingen rapporterer {status}", + "quotaRecommendation": "Se gjennom kvotebruken, og omdiriger trafikken til en annen fungerende forbindelse ved behov." }, "action": { - "resetProviderBreaker": "Reset provider breaker", - "clearConnectionCooldown": "Clear connection cooldown", - "disableConnection": "Disable this connection", - "clearStaleError": "Clear stale error state", - "reactivateConnection": "Reactivate connection", - "clearModelLockout": "Clear model lockout" + "resetProviderBreaker": "Tilbakestill leverandørens kretsbryter", + "clearConnectionCooldown": "Fjern nedkjøling for forbindelsen", + "disableConnection": "Deaktiver denne forbindelsen", + "clearStaleError": "Fjern utdatert feiltilstand", + "reactivateConnection": "Aktiver forbindelsen på nytt", + "clearModelLockout": "Opphev modellutestenging" } }, "changelogPage": { - "newsTab": "News", - "changelogTab": "Changelog", - "loading": "Loading changelog...", - "announcementsLoadFailed": "Could not load announcements. Please try again later.", - "noAnnouncements": "No new announcements at this time.", - "learnMore": "Learn more", - "changelogLoadFailed": "Could not load the changelog. Please try again later.", - "retry": "Retry", - "viewFullHistory": "View full history on GitHub" + "newsTab": "Nyheter", + "changelogTab": "Endringslogg", + "loading": "Laster inn endringsloggen ...", + "announcementsLoadFailed": "Kunne ikke laste inn kunngjøringer. Prøv igjen senere.", + "noAnnouncements": "Ingen nye kunngjøringer akkurat nå.", + "learnMore": "Finn ut mer", + "changelogLoadFailed": "Kunne ikke laste inn endringsloggen. Prøv igjen senere.", + "retry": "Prøv igjen", + "viewFullHistory": "Vis hele historikken på GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", + "title": "Rutingspolicyer for resonnering", + "apiKeyTitle": "Resonneringsruting for denne API-nøkkelen", + "subtitle": "Omdiriger modeller og resonneringsinnsats uten å kreve klientstøtte. Forespørsler forblir uendret når ingen regel samsvarer.", + "loadError": "Resonneringsreglene kunne ikke lastes inn.", + "saveError": "Regelen er ugyldig eller kunne ikke lagres.", + "saved": "Resonneringsregelen er lagret.", + "deleteConfirm": "Vil du slette denne resonneringsregelen?", + "deleteError": "Resonneringsregelen kunne ikke slettes.", + "empty": "Ingen samsvarende resonneringsregler er konfigurert.", + "all": "Alle", + "any": "Vilkårlig", + "enabled": "Aktivert", + "disabled": "Deaktivert", + "filterSearch": "Søk i regler", + "filterScope": "Filtrer etter omfang", + "filterStatus": "Filtrer etter status", + "allModels": "alle modeller", + "keepModel": "Behold modell", + "otherModel": "Annen modell", + "combo": "Kombinasjon", + "priorityShort": "prioritet {value}", + "toggleAria": "Aktiver {name}", + "edit": "Rediger", + "delete": "Slett", + "name": "Navn", + "description": "Beskrivelse", + "scopeLabel": "Omfang", + "apiKey": "API-nøkkel", + "sourceCombo": "Kildekombinasjon", + "connection": "Tilkobling", + "sourceModel": "Kildemodell eller jokertegn", + "sourceModelOptional": "Tomt = alle modeller", + "sourceModelExample": "f.eks. gpt-5*", + "sourceEffort": "Kildeinnsats", + "missing": "Ikke angitt", + "signalOnly": "Ikke-diskret resonneringssignal", + "requestTags": "Forespørselstagger", + "requestTagsExample": "koding, intern", + "tagMode": "Taggsamsvar", + "effortMode": "Innsatsmodus", + "targetEffort": "Målinnsats", + "routingTarget": "Rutingsmål", + "targetModel": "Målmodell", + "targetCombo": "Målkombinasjon", + "budgetAction": "Resonneringsbudsjett", + "budgetTokens": "Budsjettsymboler", + "priority": "Prioritet", + "saveChanges": "Lagre endringer", + "add": "Legg til regel", + "cancel": "Avbryt", + "simulateTitle": "Simuler regel", + "model": "Modell", + "effort": "Innsats", "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "simulate": "Simuler uten oppstrømsforbindelse", + "extendedComboWarning": "Max/Ultra valideres separat for hvert kombinasjonsmål under ruting.", + "extendedUnknownWarning": "Angi en målmodell for å bekrefte støtte for Max/Ultra.", + "extendedUnsupportedWarning": "Max/Ultra støttes så vidt kjent bare av egnede Codex GPT-5.6-modeller. Ukjente egendefinerte modeller godtas av serveren med en advarsel.", "scope": { "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "apiKey": "API-nøkkel", + "combo": "Kombinasjon", + "model": "Modell", + "connection": "Tilkobling" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Arv fra klient", + "default": "Bruk standard", + "force": "Tving" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Behold", + "remove": "Fjern", + "set": "Angi fast verdi" } }, "chaosConfig": { - "pageTitle": "Chaos Mode", - "pageSubtitle": "Run multiple AI models in parallel or collaboratively on the same task", - "enableChaos": "Enable Chaos Mode", - "enableChaosDesc": "Allow API keys with chaos mode enabled to use this feature", - "mode": "Default Mode", - "modeParallel": "Parallel", - "modeCollaborative": "Collaborative", - "modeParallelDesc": "All models run simultaneously — fastest results", - "modeCollaborativeDesc": "Models chain outputs — each sees the previous result", - "timeout": "Timeout (ms)", - "timeoutDesc": "Max time per model call (5000-600000ms)", - "systemPrompt": "System Prompt (optional)", - "systemPromptDesc": "Custom instructions for all chaos mode model instances", - "providerOverrides": "Provider Overrides", - "providerOverridesDesc": "Select specific models per provider for chaos mode", - "providerId": "Provider", - "modelId": "Model", - "addProvider": "Add Provider", + "pageTitle": "Kaosmodus", + "pageSubtitle": "Kjør flere KI-modeller parallelt eller i samarbeid på samme oppgave", + "enableChaos": "Aktiver kaosmodus", + "enableChaosDesc": "Tillat at API-nøkler med aktivert kaosmodus bruker denne funksjonen", + "mode": "Standardmodus", + "modeParallel": "Parallell", + "modeCollaborative": "Samarbeid", + "modeParallelDesc": "Alle modellene kjører samtidig – raskest resultat", + "modeCollaborativeDesc": "Modellene kjører i kjede – hver modell ser det forrige resultatet", + "timeout": "Tidsavbrudd (ms)", + "timeoutDesc": "Maksimal tid per modellkall (5000–600000 ms)", + "systemPrompt": "Systeminstruks (valgfritt)", + "systemPromptDesc": "Egendefinerte instruksjoner for alle modellforekomster i kaosmodus", + "providerOverrides": "Leverandøroverstyringer", + "providerOverridesDesc": "Velg bestemte modeller per leverandør for kaosmodus", + "providerId": "Leverandør", + "modelId": "Modell", + "addProvider": "Legg til leverandør", "removeProvider": "Fjern", "saveConfig": "Lagre konfigurasjon", "configSaved": "Kaoskonfigurasjonen ble lagret", @@ -13424,92 +13435,92 @@ "tierLive": "Live (sanntid)", "tierCommunity": "Fellesskap (30-dagers forsinkelse)", "activateTitle": "Aktiver Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Sammenlign fellesskapstilgang og direktetilgang, forstå hva installasjonen din utveksler, og velg deretter hvordan du vil aktivere Radar.", + "accessScaleTitle": "Forstå Radar-tilgangen før aktivering", + "accessScaleIntro": "Radar forblir nettverksinaktivt til du velger å delta. Velg fellesskapstilgang, eller aktiver en personlig støttespillernøkkel etter å ha gjennomgått disse reglene.", + "accessCommunityRule": "Fellesskap — ingen nøkkel kreves: hele katalogen med 30 dagers forsinkelse.", + "accessSingleUseRule": "Gi stjerne + følg — etter at GitHub OAuth har bekreftet begge deler, får GitHub-kontoen din én avlesning av den direkte katalogen. Deretter går tilgangen tilbake til fellesskapstilgang. Denne engangstilgangen kan ikke utstedes på nytt til den kontoen.", + "accessContributorRule": "Bidragsytere — flettede PR-er, commits og linjer avgjør bare den ukentlige rangeringen. Topp 10 får 365 dager; plasseringene 11–100 får 90 dager; bidragsytere utenfor topp 100 får ingen tilgangsperiode, uansett antall PR-er. Å falle ut av rangeringen forkorter aldri en periode som allerede er tildelt.", + "accessSupporterRule": "Støttespillere — engangskjøp gir 6 måneder, 1 år eller livstid uten automatisk fornyelse. Kjøp, donasjoner, bidragsyterperioder og manuelle tildelinger legges sammen; livstid gjelder alltid foran alt annet.", + "accessUseTitle": "Personlig bruk, gjenoppretting og gjennomgang", + "accessInstallationRule": "Personlig lisens — bruk nøkkelen på én aktiv installasjon om gangen. OmniRoute lager ikke fingeravtrykk av maskinvare. Gjenoppretting tilbakekaller og erstatter en mistet nøkkel uten å nullstille utløpsdatoen.", + "accessAbuseRule": "Gjennomgang av misbruk — den fjerde unike IP-adressen i løpet av 24 timer oppretter kun et flagg for manuell gjennomgang; det blokkerer eller tilbakekaller aldri en nøkkel automatisk.", + "accessOffersRule": "Direktetilbud kurateres manuelt og kan endres eller utløpe.", + "privacyTitle": "Hva Radar utveksler", + "privacyDownloadsRule": "Nedlastinger — installasjonen din mottar kryptografisk signerte katalog- og henvisningsmetadata. En gyldig direktenøkkel låser også opp signerte tilbud og Intel.", + "privacySendsRule": "Sendinger — synkronisering på serversiden sender støttespillernøkkelen som et Bearer-token, og HTTPS-infrastrukturen mottar tilkoblingens IP-adresse. Registrering av forespørsler til datastrømmen lagrer ingen av verdiene i råformat: den beholder nøkkelhasher, samlet bruk og en daglig roterende, avkortet IP-HMAC for gjennomgang av misbruk.", + "privacyNeverRule": "Samles aldri inn — ledetekster, svar, samtaler, leverandørlegitimasjon, modelltrafikk, oppetid, ventetid og lokal leverandørkonfigurasjon sendes aldri til Radar.", + "activateButton": "Aktiver fellesskapstilgang", "activating": "Aktiverer...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Har du allerede en støttespillernøkkel?", + "keyInvalidFormatError": "Ugyldig nøkkelformat. Den må begynne med \"omr_\" etterfulgt av 40 heksadesimale tegn.", + "activateWithKeyButton": "Aktiver støttespillertilgang", + "changeKeyButton": "Bytt nøkkel", + "claimSectionTitle": "Har du ikke en støttespillernøkkel ennå?", + "contributorButton": "Jeg er bidragsyter", + "contributorHint": "GitHub OAuth kontrollerer den gjeldende ukentlige rangeringen: Topp 10 får 365 dager, og plasseringene 11–100 får 90 dager. Antall PR-er alene gir aldri tilgang utenfor topp 100.", + "supporterButton": "Støtt prosjektet", + "supporterHint": "Engangsalternativene på 6 måneder, 1 år og livstid har ingen automatisk fornyelse. Kvalifiserende perioder legges sammen, og livstid gjelder foran alt annet.", "colProvider": "Leverandør", "colModel": "Modell", "colQuota": "Kvote", + "colLimits": "Hastighetsgrenser", + "trainsOnPrompts": "Trener på ledetekster", + "trainsOnPromptsHelp": "Vilkårene til denne leverandøren sier at den kan trene på ledetekstene du sender. Modeller uten dette merket oppgir enten at de ikke gjør det, eller dokumenterer det ikke — fravær av en slik erklæring er ingen garanti.", + "limitsUnknownHelp": "Grenser rapportert kun av Radar-datastrømmen; ingen publiserte grenser for denne oppføringen", + "contextUnknownHelp": "Kontekstvinduet er ukjent for denne oppføringen", + "capabilityUnknownHelp": "Funksjonen er ikke rapportert av datastrømmen", "colContext": "Kontekst", "colCapabilities": "Muligheter", "colTos": "ToS Risiko", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "ny", "setupGuide": "Oppsettsveiledning", "disabledByFeed": "Deaktivert av Radar-strøm", "capTools": "Verktøy", "capVision": "Visjon", "capThinking": "Tenking", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalog", + "freeCreditsTab": "Gratis kreditter", + "freeCreditsSubtitle": "Henvisningslenker fra leverandører som spores av Radar — det koster deg ikke noe ekstra å bruke dem, og det bidrar til å støtte OmniRoute.", + "fixedLinksEmpty": "Ingen vervelenker er tilgjengelige ennå. Synkroniser Radar for å se etter oppdateringer.", + "requiredActionLabel": "Dette gjør du:", + "claimButton": "Gjør krav på kreditter", + "campaignsTitle": "Tidsbegrensede kampanjer", + "campaignsEmpty": "Ingen aktive kampanjer akkurat nå – kom tilbake senere.", + "campaignsUpsellCommunity": "Tidsbegrensede kampanjer er en ekstra fordel for støttespillere. Alt under de faste lenkene på denne siden forblir gratis for alle.", + "campaignsValidUntil": "Gyldig til {date}", + "colActions": "Handlinger", + "localBadge": "lokal", + "editModel": "Rediger", + "saveModel": "Lagre", + "cancelEdit": "Avbryt", + "resetModel": "Tilbakestill lokale endringer", + "hideModel": "Skjul", + "restoreModel": "Gjenopprett", + "hiddenModelsTitle": "Skjulte modeller", + "modelDisplayName": "Lokalt visningsnavn", + "modelEnabled": "Aktivert lokalt", + "localStateSaveFailed": "Kunne ikke lagre lokale Radar-innstillinger", + "guidedCombos": "Veiledede kombinasjoner", + "offers": "Tilbud", + "intel": "Informasjon" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar-veiledede kombinasjoner", + "subtitle": "Opprett prioriterte reserveløsninger fra tilsvarende gratis modeller utvalgt av Radar.", + "backToRadar": "Tilbake til Radar", + "loading": "Laster inn kombinasjonsforslag ...", + "familyLabel": "Modellfamilie", + "modelsLabel": "Prioritetsrekkefølge", + "strategyReason": "Prioriteringen bruker først det største gjentakende gratisbudsjettet og går deretter videre til aktive leverandører ved behov.", + "generateButton": "Generer kombinasjon", + "generating": "Genererer ...", + "alreadyCreated": "Allerede opprettet", + "created": "Kombinasjon opprettet", + "noSuggestions": "Ingen kvalifiserte modellfamilier har for øyeblikket aktive tilkoblinger til minst to leverandører.", + "catalogRequired": "Synkroniser Radar-katalogen først for å laste inn utvalgte modellfamilier.", + "loadFailed": "Kunne ikke laste inn kombinasjonsforslag fra Radar.", + "createFailed": "Kunne ikke opprette kombinasjonen. Kontroller leverandørtilkoblingene dine, og prøv på nytt." }, "radarSetupPage": { "title": "Leverandøroppsett", @@ -13538,24 +13549,24 @@ }, "resilienceConnections": { "title": "Tilkoblingsresiliens", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Tilkoblingene dine gjenopprettes automatisk", + "reassuranceDetail": "Vanligvis trenger du ikke å gjøre noe. OmniRoute setter en tilkobling midlertidig på pause etter feil og prøver den deretter trygt på nytt.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Forespørsler kan sendes", + "coolingDown": "Prøver igjen snart", + "lockedOut": "Krever din oppmerksomhet" }, "table": { "status": "Status", "provider": "Leverandør", "connectionId": "Tilkobling", "authType": "Autentisering", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "backoffLevel": "Tilbakeventing", + "cooldown": "Ventetid", "lastError": "Siste Feil", - "lockouts": "Lockouts", + "lockouts": "Utestenginger", "healthy": "Frisk", - "coolingDown": "Cooldown", + "coolingDown": "Ventetid", "circuitOpen": "Krets Åpen", "recovering": "Gjenoppretter", "degraded": "Forringet", @@ -13589,7 +13600,7 @@ "detail": { "title": "Tilkoblingsdetalj", "metadata": "Metadata", - "cooldown": "Cooldown", + "cooldown": "Ventetid", "lastError": "Siste Feil", "breaker": "Kretsbryter", "lockouts": "Modelllåsinger", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Avvis forespørselene før utsendelse når målmodellen mangler nødvendige funksjoner (visjon, verktøy, strukturert utdata, kontekstvindu). Beskytter direkte forespørseler fra enkeltleverandører som omgår kombinasjonslagets kompatibilitetsfilter.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Hopp over OmniRoutes lokale kontroll av kontekstvindu og maksimalt antall inndatatokener for direkte forespørsler til én enkelt modell. Oppstrømsleverandører håndhever fortsatt sine faktiske grenser. Komprimering av ledetekster og grenser for utdatatokener forblir aktive.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Søkestatistikk og nylige søk teller bare leverandører som fortsatt har en aktiv tilkobling (leverandører uten nøkkel, som duckduckgo-free, teller alltid). Av beholder alle lagrede søkerader med en leverandør-ID.", "publicSystem": { "notFound": { "title": "Siden ble ikke funnet", @@ -13699,11 +13710,11 @@ "maintenanceInfo": "Vedlikeholdsinfo", "service": "Tjeneste", "unknown": "ukjent", - "notAvailable": "n/a", + "notAvailable": "i/a", "providersTracked": "Leverandører Sporet", "circuitBreakerState": "Leverandør Kretsbryterstatus", "lastUpdate": "Siste oppdatering: {timestamp}", - "uptimeMinutes": "{minutes}m", + "uptimeMinutes": "{minutes} min", "uptimeHoursMinutes": "{hours}t {minutes}m" }, "statusPages": { @@ -13796,7 +13807,7 @@ "importDescription": "Lim inn en oppfriskningstoken eksportert fra {providerLabel}.", "apiKey": "API-nøkkel", "apiKeyDescription": "Lim inn en langvarig {providerLabel} / CodeWhisperer API-nøkkel. Den lagres som en bærerlegitimasjon uten oppdateringsnøkkel; profiloppdagelse er best-effort.", - "idcStartUrl": "IDC Start URL", + "idcStartUrl": "IDC-start-URL", "idcStartUrlPlaceholder": "https://your-org.awsapps.com/start", "idcStartUrlDescription": "Din organisasjons AWS IAM Identity Center-URL", "awsRegion": "AWS-region", @@ -13894,7 +13905,7 @@ "noLogsYet": "Ingen logger ennå", "noLogsDescription": "Send en testmelding fra Test-fanen — logger for denne leverandøren vil vises her.", "openFullLogs": "Åpne fullstendige loggsider", - "live": "Live", + "live": "Direkte", "tailingLast": "viser de siste {count}", "refreshNow": "Oppdater nå", "refresh": "Oppdater", @@ -13907,7 +13918,7 @@ "requestedModel": "Forespurt modell", "provider": "Leverandør", "requester": "Forespørsel", - "tokens": "Tokens" + "tokens": "Tokener" } }, "proxyLog": { @@ -13935,7 +13946,7 @@ "followDescription": "Aksen ruller til venstre, NOW-linjen forblir på 75%", "now": "Nå", "nowDescription": "Hopp til nåværende tid, NÅ-linjen tilbakestilles til sentrum", - "pan": "Pan", + "pan": "Panorer", "panDescription": "Dra for å utforske, bakgrunnen er fryst" }, "reset": "Tilbakestill", @@ -13944,10 +13955,10 @@ "duration": "Varighet", "status": "Status", "provider": "Leverandør", - "tokens": "Tokens", + "tokens": "Tokener", "active": "Aktiv", "other": "Annet", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "time", "day": "dag", "unknownModel": "ukjent", @@ -13956,9 +13967,9 @@ "metadata": { "compressionTitle": "Komprimering", "compressionDescription": "Konfigurer innstillinger for kontekstkomprimering for å redusere tokenbruk og kostnader.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — reléproxyer", "relayDescription": "Serverless relay proxy-endepunkter for din AI-infrastruktur", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Trafikkinspektør — OmniRoute", "trafficInspectorDescription": "Overvåk LLM-anrop + feilsøk HTTPS-trafikken til enhver applikasjon" }, "conductor": { @@ -13967,7 +13978,7 @@ "runners": "Løpere", "tasks": "Oppgaver", "colName": "Navn", - "colClis": "CLIs", + "colClis": "CLI-er", "colStatus": "Status", "colTask": "Oppgave", "colMode": "Modus", @@ -14070,11 +14081,11 @@ "actionApprove": "Godkjenn plan", "actionCancel": "Avbryt", "actionSeeInGraph": "Se i grafen", + "actionRepeat": "Gjenta", "actionDone": "Handling utført", "actionFailed": "Handling mislyktes: {error}", "detailFailed": "Kunne ikke laste inn detaljer: {error}", "mirroredInA2A": "Speilet i A2A", - "actionRepeat": "Gjenta", "repeatConfirm": "Klikk igjen for å bekrefte", "repeatDone": "Ny kjøring opprettet", "repeatUnavailable": "Opprinnelig inndata ikke tilgjengelig" @@ -14088,57 +14099,57 @@ "networkError": "Nettverksfeil — kunne ikke oppdatere leverandørens eksponeringsinnstilling" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", + "title": "Supportertilbud", + "subtitle": "Offisielle rabatter, kreditter, prøveperioder og kvalitetssikrede partnerfordeler fra Radar.", + "backToRadar": "Tilbake til Radar", + "loading": "Laster inn tilbud ...", + "refresh": "Oppdater tilbud", + "refreshing": "Oppdaterer ...", + "loadFailed": "Vi kunne ikke oppdatere tilbudene. Den sist bekreftede lokale hurtigbufferen beholdes.", + "empty": "Ingen aktive tilbud er tilgjengelige akkurat nå.", + "keyRequiredTitle": "En støttenøkkel kreves", + "keyRequiredDescription": "Tilbud er en direktetilkoblet Radar-fordel. Legg til en eksisterende støttenøkkel på Radar-skjermen, bekreft statusen din som bidragsyter, eller støtt prosjektet for å få en.", + "contributorButton": "Jeg er en bidragsyter", + "supporterButton": "Støtt prosjektet", "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "officialBadge": "Offisiell", + "conditionsLabel": "Vilkår:", + "validUntil": "Gyldig til {date}", + "noExpiry": "Ingen kunngjort utløpsdato", + "openOffer": "Se tilbudet", + "trialDays": "{days, plural, one {# dag} other {# dager}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Radarinformasjon", + "subtitle": "Radar-eide ELO-rangeringer og faktabaserte endringer i katalogen.", + "backToRadar": "Tilbake til Radar", + "loading": "Laster inn Intel ...", + "refresh": "Oppdater Intel", + "syncing": "Oppdaterer ...", + "loadFailed": "Vi kunne ikke oppdatere Intel. Den sist bekreftede lokale hurtigbufferen beholdes.", + "empty": "Ingen bekreftet Intel-øyeblikksbilde er tilgjengelig ennå.", + "supporterBadge": "Radar-støttespiller", + "methodology": "Metodikk", + "eloMethod": "ELO, innledende {initial}, K={factor}", + "freshness": "Katalogens aktualitet", + "ageDays": "{days, plural, one {# dag gammel} other {# dager gammel}}", + "trend": "Katalogtrend", + "modelDelta": "{current} modeller, +{added} / -{removed}", + "ranking": "Modellrangering", + "noRankings": "Ingen bekreftede sammenligninger er tilgjengelige ennå.", + "model": "Modell", + "category": "Kategori", + "rating": "Rangering", + "matches": "Kamper", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Oppdatert", + "aging": "Aldrende", + "stale": "Utdatert" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Voksende", + "stable": "Stabil", + "shrinking": "Krympende" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Forespørselen overskrider leverandørens kontekstvindu" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference er en Open Source-venn av OmniRoute", + "description": "En kostnadsrangert gateway som videreselger dusinvis av ledende modeller bak ett OpenAI-kompatibelt endepunkt – og ruter hver forespørsel til den billigste kvalifiserte leverandøren, aldri over listepris.", + "cta": "Få en API-nøkkel", + "partnerLinkNote": "Partnerlenke", + "dismissAriaLabel": "Lukk" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Deaktiver generering av varianter for resonneringsnivå (f.eks. -low, -medium, -high) i /v1/models-katalogen." } diff --git a/src/i18n/messages/or.json b/src/i18n/messages/or.json index 5ab1756cc2..3cd5d0a788 100644 --- a/src/i18n/messages/or.json +++ b/src/i18n/messages/or.json @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/modelsରେ claude/<provider>/<model> ମିରର୍ IDଗୁଡ଼ିକ ପ୍ରକାଶ କରନ୍ତୁ, ଯାହାଦ୍ୱାରା Claude Code ଗେଟୱେ ମଡେଲ୍ ଆବିଷ୍କାରରେ Claude ବ୍ୟତୀତ ଅନ୍ୟ ମଡେଲ୍ଗୁଡ଼ିକ ତାଲିକାଭୁକ୍ତ ହେବ। ଚେତାବନୀ: ବିଶ୍ୱବ୍ୟାପୀ ଭାବେ ସକ୍ଷମ କଲେ ଏହା ସମସ୍ତ କ୍ଲାଏଣ୍ଟ ପାଇଁ କ୍ୟାଟାଲଗ୍ ଏଣ୍ଟ୍ରି ସଂଖ୍ୟାକୁ ଦ୍ୱିଗୁଣିତ କରେ।", "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> ଗେଟୱେ ଉପନାମଗୁଡ଼ିକ ପାଇଁ ମୁଖ୍ୟ ସ୍ୱିଚ୍। ଚାଲୁ (ଡିଫଲ୍ଟ): /v1/models ପ୍ରତ୍ୟେକ ଯୋଗ୍ୟ ବିଚାର-ସକ୍ଷମ Claude ମଡେଲ୍ ପାଇଁ ଏକ ବିଚାର-ବିହୀନ ଭାର୍ସନ୍ ପ୍ରକାଶ କରେ, ଏବଂ ଅନୁରୋଧରେ ପଠାଯାଇଥିବା no-think/ ID ବିଚାର ପ୍ରକ୍ରିୟାକୁ ଦମନ କରି ପ୍ରକୃତ ମଡେଲ୍କୁ ପୁନଃ ସମାଧାନ ହୁଏ। ବନ୍ଦ: କୌଣସି ଭାର୍ସନ୍ ପ୍ରକାଶ କରାଯାଏ ନାହିଁ ଏବଂ no-think/ IDକୁ ଅନ୍ୟ ଯେକୌଣସି ଅଜଣା ମଡେଲ୍ ID ପରି ବିବେଚନା କରାଯାଏ। ଏହା ଚାଲୁ ଥିବାବେଳେ ମଧ୍ୟ ପ୍ରତି-ମଡେଲ୍ ModelSpec.noThinkingAlias ଅପ୍ଟ-ଇନ୍/ଅପ୍ଟ-ଆଉଟ୍ ପ୍ରଯୁଜ୍ୟ ହୁଏ।", "featureFlagChatVirtualLanesEnabledDescription": "ପ୍ରଦାତା ଡିସ୍ପାଚ୍ (#9654) ପାଇଁ ପ୍ରତି-ଟେନାଣ୍ଟ ଅନୁକୂଳନଶୀଳ ଭର୍ଚୁଆଲ୍ ଆଡମିଶନ୍ ଲେନ୍ଗୁଡ଼ିକ ସକ୍ଷମ କରନ୍ତୁ: ଗୋଟିଏ ଟେନାଣ୍ଟର ହଠାତ୍ ଟ୍ରାଫିକ୍ ବୃଦ୍ଧି ଆଉ ଅନ୍ୟ ଟେନାଣ୍ଟ ପାଇଁ 503 ତ୍ରୁଟି ସୃଷ୍ଟି କରିବ ନାହିଁ। OMNIROUTE_CHAT_VIRTUAL_LANES env var ଏହି ଡ୍ୟାସ୍ବୋର୍ଡ ଓଭର୍ରାଇଡ୍ଠାରୁ ପ୍ରାଥମିକତା ପାଏ; ସର୍ଭର୍ ପୁନଃଚାଳନ ପରେ ପରିବର୍ତ୍ତନଗୁଡ଼ିକ କାର୍ଯ୍ୟକାରୀ ହୁଏ।", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ଡ୍ୟାଶବୋର୍ଡ ପ୍ରଦାନକାରୀ ପୃଷ୍ଠାଗୁଡ଼ିକ: କେବଳ ପ୍ରଦାନକାରୀ ସମ୍ମାନ କରୁଥିବା ସଙ୍କେତଗୁଡ଼ିକରେ ମାଗଣା ବ୍ୟାଜ୍ ଦେଖାନ୍ତୁ — ଲିପିବଦ୍ଧ ମାଗଣା ସ୍ତର ନଥିବା ପଞ୍ଜୀକୃତ ପ୍ରଦାନକାରୀଙ୍କ ପାଇଁ ପ୍ରଦର୍ଶନ-ନାମ ଅନୁମାନ, ଅଣ-ବୁଲିୟନ୍ ମାଗଣା ଫିଲ୍ଡ ଏବଂ :free ପ୍ରତ୍ୟୟଗୁଡ଼ିକୁ ବାଦ ଦିଏ। ବନ୍ଦ ରଖିଲେ ଐତିହାସିକ ବ୍ୟାଜ୍ ନିୟମ ବଜାୟ ରହେ।", + "featureFlagProxySkipRecentlyFailedDescription": "ପ୍ରକ୍ସି ପୁଲ୍ ଏବଂ opencodeର ପ୍ରତି-ଆକାଉଣ୍ଟ ରୋଟେସନ୍, ସଦ୍ୟ ବିଫଳ ହୋଇଥିବା ପ୍ରକ୍ସିକୁ (ପ୍ରତ୍ୟାଖ୍ୟାନ ହୋଇଥିବା TCP ପ୍ରୋବ୍ କିମ୍ବା ତାହା ମାଧ୍ୟମରେ ପ୍ରାପ୍ତ 429) ପ୍ରତ୍ୟେକ ପୁନରାବୃତ୍ତିରେ ଦ୍ୱିଗୁଣିତ ହେଉଥିବା, ଏକ ସର୍ବାଧିକ ସୀମା ପର୍ଯ୍ୟନ୍ତ ପ୍ରତି-ପ୍ରକ୍ରିୟା ଅବଧି ପାଇଁ ପୁଣି ସେବାରେ ବ୍ୟବହାର କରିବା ବନ୍ଦ କରେ। କୌଣସି ପ୍ରକ୍ସି ସ୍ଥିତି ଲେଖାଯାଏ ନାହିଁ; ପ୍ରତ୍ୟେକ ପ୍ରାର୍ଥୀକୁ ପାଖକୁ ରଖାଗଲେ ଚୟନ ଅପରିବର୍ତ୍ତିତ ରହେ। ଡିଫଲ୍ଟ ଭାବେ ବନ୍ଦ: ଚୟନ କ୍ରମ ଠିକ୍ ସାଧାରଣ ରୋଟେସନ୍ ପରି।", + "featureFlagProxyPoolEgressObservationDescription": "ଡ୍ୟାସବୋର୍ଡରେ ଗୋଟିଏ ପ୍ରକ୍ସି ପୁଲ୍ ଅଧୀନରେ, ଗତ 24 ଘଣ୍ଟାରେ କେତୋଟି ପର୍ଯ୍ୟବେକ୍ଷିତ ଏଗ୍ରେସ୍ IP ଏହାର ସଦସ୍ୟମାନଙ୍କୁ ସେବା ଦେଇଥିଲା, କେତୋଟି ସଂଯୋଗ ସେଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିଥିଲା ଏବଂ ଗୋଟିଏ IP ପଛରେ ସର୍ବାଧିକ କେତୋଟି ଦେଖାଯାଇଥିଲା, ତାହା ଦେଖାନ୍ତୁ। କେବଳ ପଠନୀୟ, ପ୍ରକ୍ସି ଲଗ୍ରୁ ଗଣନା କରାଯାଏ, ରାଉଟିଂ ପାଇଁ କେବେ ବ୍ୟବହୃତ ହୁଏ ନାହିଁ। ଡିଫଲ୍ଟ ଭାବେ ବନ୍ଦ: ପୁଲ୍ ଏଡିଟର୍ ଅପରିବର୍ତ୍ତିତ ରହେ ଏବଂ ପର୍ଯ୍ୟବେକ୍ଷଣ ରୁଟ୍ null ଉତ୍ତର ଦିଏ।", + "featureFlagProxyHealthBlockedResetsStreakDescription": "ପ୍ରକ୍ସି ସ୍ୱାସ୍ଥ୍ୟ ଯାଞ୍ଚରେ, ଲକ୍ଷ୍ୟ ଦ୍ୱାରା ପ୍ରତ୍ୟାଖ୍ୟାନ ହୋଇଥିବା ପ୍ରୋବ୍କୁ (401/403/429: ପ୍ରକ୍ସି ରିଲେ କରିଥିଲା, ଗନ୍ତବ୍ୟସ୍ଥଳ ଏହି ଏଗ୍ରେସ୍ IPକୁ ପ୍ରତ୍ୟାଖ୍ୟାନ କରିଥିଲା) ଏକ ସେବା ପ୍ରଦାନ କରାଯାଇଥିବା ପ୍ରୋବ୍ ପରି ପ୍ରକ୍ସିର କ୍ରମାଗତ ବିଫଳତା ଧାରାକୁ ରିସେଟ୍ କରିବାକୁ ଦିଅନ୍ତୁ। ଡିଫଲ୍ଟ ଭାବେ ବନ୍ଦ: ଏକ ପ୍ରତ୍ୟାଖ୍ୟାନ ନିରପେକ୍ଷ ରହେ ଏବଂ ଧାରାକୁ ଅପରିବର୍ତ୍ତିତ ରଖେ। ଉଭୟ କ୍ଷେତ୍ରରେ 5xx ଅନିର୍ଣ୍ଣାୟକ ରହେ, ଏବଂ ଏକ ପ୍ରତ୍ୟାଖ୍ୟାନ କେବେ ମଧ୍ୟ ପ୍ରକ୍ସିକୁ ହଟାଏ, ଅକ୍ଷମ କରେ କିମ୍ବା ପୁନଃସକ୍ରିୟ କରେ ନାହିଁ।", "sidebar": { "home": "ମୂଳପୃଷ୍ଠା", "dashboard": "ଡ୍ୟାସ୍ବୋର୍ଡ", @@ -1275,7 +1275,7 @@ "systemGroup": "ସିଷ୍ଟମ୍", "costsOverview": "ସାରାଂଶ", "costsOverviewSubtitle": "ଏକୀକୃତ ଖର୍ଚ୍ଚ ବିଶ୍ଳେଷଣ", - "agentBridge": "Agent Bridge", + "agentBridge": "ଏଜେଣ୍ଟ ବ୍ରିଜ୍", "agentBridgeSubtitle": "IDE ଏଜେଣ୍ଟ ଟ୍ରାଫିକ୍କୁ ଇଣ୍ଟରସେପ୍ଟ କରନ୍ତୁ", "trafficInspector": "Traffic Inspector", "trafficInspectorSubtitle": "ଆପଣଙ୍କ ଆପ୍ଗୁଡ଼ିକର ଅନୁରୋଧ ଏବଂ ପ୍ରତିକ୍ରିୟା ଟ୍ରାଫିକ୍ ଯାଞ୍ଚ କରନ୍ତୁ", @@ -1298,7 +1298,7 @@ "groupSeparatorLabel": "ବିଭାଜକ", "discovery": "ଆବିଷ୍କାର", "discoverySubtitle": "ମାଗଣା ପ୍ରବେଶ ପାଇଁ ପ୍ରଦାନକାରୀମାନଙ୍କୁ ସ୍କାନ୍ କରନ୍ତୁ", - "conductor": "Conductor", + "conductor": "କଣ୍ଡକ୍ଟର୍", "conductorSubtitle": "CLI-agent ବହିନୀ", "orchestration": "ସମନ୍ୱୟ", "orchestrationSubtitle": "ଚାଲୁଥିବା ସମସ୍ତ ବିଷୟର ସଜୀବ ଦୃଶ୍ୟ", @@ -1445,7 +1445,7 @@ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "ଆପଣଙ୍କ ବଟ୍ ସୃଷ୍ଟି କରିବା ସମୟରେ @BotFather ଠାରୁ ପ୍ରାପ୍ତ HTTP API ଟୋକେନ୍।", "chatId": "Telegram ଚାଟ୍ ID / ଚ୍ୟାନେଲ୍", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 କିମ୍ବା @channelname", "chatIdHint": "ଚାଟ୍/ଚ୍ୟାନେଲ୍ର ଅନନ୍ୟ ସାଂଖ୍ୟିକ ପରିଚୟକ କିମ୍ବା ସାର୍ବଜନୀନ ବ୍ୟବହାରକାରୀ ନାମ।", "tutorial": "Telegram ୱେବହୁକ୍ କିପରି ବିନ୍ୟାସ କରିବେ:" } @@ -1815,7 +1815,7 @@ "topologyLegendRecent": "ସାମ୍ପ୍ରତିକ", "topologyLegendError": "ତ୍ରୁଟି", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", + "apiKeyLabel": "API କୀ", "requestsShort": "{count} ଅନୁରୋଧ", "providerModelsTitle": "{provider} - ମଡେଲ୍ଗୁଡ଼ିକ", "copiedModel": "କପି ହୋଇଛି: {model}", @@ -2717,7 +2717,7 @@ "ccOnboardingTitle": "ଗେଟୱେ ମଡେଲ୍ ଆବିଷ୍କାର ପାଇଁ settings.json", "ccOnboardingCopy": "କପି କରନ୍ତୁ", "ccOnboardingCopied": "କପି ହୋଇଛି", - "ccOnboardingKeyPlaceholder": "''", + "ccOnboardingKeyPlaceholder": "'<ଆପଣଙ୍କ OmniRoute API କୀ>'", "ccOnboardingWindowNote": "Claude Code ଚିହ୍ନିପାରୁ ନଥିବା ଯେକୌଣସି ମଡେଲ୍ ID ପାଇଁ 200K କଣ୍ଟେକ୍ସ୍ଟ ୱିଣ୍ଡୋ ଅଛି ବୋଲି ଧରିନିଏ। ଭିନ୍ନ ବାସ୍ତବ ୱିଣ୍ଡୋ ଥିବା ମଡେଲ୍ ପାଇଁ, ତାହାର ଠିକ୍ ତଳେ CLAUDE_CODE_AUTO_COMPACT_WINDOW ଯୋଡ଼ନ୍ତୁ, ଯାହାଦ୍ୱାରା ସ୍ୱୟଂ-କମ୍ପାକ୍ସନ୍ ଅତି ଶୀଘ୍ର ସକ୍ରିୟ ହେବ ନାହିଁ।", "failedSave": "ସେଭ୍ କରିବାରେ ବିଫଳ", "profileSyncTitle": "CLI ପ୍ରୋଫାଇଲ୍ ସ୍ୱୟଂ-ସିଙ୍କ୍", @@ -3862,9 +3862,9 @@ "groupApiKey": "API କୀ", "groupAccount": "ଆକାଉଣ୍ଟ", "groupServiceTier": "ସେବା ସ୍ତର", - "serviceTierFast": "Fast", - "serviceTierFlex": "Flex", - "serviceTierStandard": "Standard", + "serviceTierFast": "ଦ୍ରୁତ", + "serviceTierFlex": "ନମନୀୟ", + "serviceTierStandard": "ମାନକ", "serviceTierBreakdownTitle": "ସେବା ସ୍ତର", "serviceTierBreakdownSubtitle": "Fast / Flex / Standard ବିଭାଜନ", "serviceTierUsageSaved": "ବ୍ୟବହାର ସଞ୍ଚୟ ହୋଇଛି", @@ -4127,7 +4127,7 @@ "vscodeAliasDescriptionError": "ଏହି ସେସନ୍ରେ CLI କୀଗୁଡ଼ିକ ଲୋଡ୍ ହୋଇପାରି ନଥିବାରୁ ପ୍ଲେସହୋଲ୍ଡର୍ URLଗୁଡ଼ିକ ଦେଖାଯାଉଛି।", "vscodeAliasDescriptionLoading": "CLI କୀଗୁଡ଼ିକ ଲୋଡ୍ ହେଉଛି। ଗୋଟିଏ କୀ ଉପଲବ୍ଧ ହେବା ପର୍ଯ୍ୟନ୍ତ ପ୍ଲେସହୋଲ୍ଡର୍ URLଗୁଡ଼ିକ ଦେଖାଯିବ।", "vscodeAliasDescriptionPlaceholder": "ପ୍ଲେସହୋଲ୍ଡର୍ URLଗୁଡ଼ିକ ଦେଖାଯାଉଛି। TOKENକୁ ବଦଳାଇବା ପାଇଁ CLI Toolsରେ ଏକ API କୀ ସୃଷ୍ଟି କିମ୍ବା ସକ୍ରିୟ କରନ୍ତୁ।", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI ଉପକରଣଗୁଡ଼ିକ", "vscodeAliasBaseLabel": "VS Code ବେସ୍", "vscodeAliasModelsLabel": "VS Code ମଡେଲ୍ଗୁଡ଼ିକ", "vscodeAliasChatLabel": "VS Code ଚାଟ୍", @@ -5801,7 +5801,7 @@ "ccCompatibleSummarizeThinkingDescription": "ସମର୍ଥିତ Claude ମଡେଲ୍ଗୁଡ଼ିକ ଦୃଶ୍ୟମାନ ଚିନ୍ତନ ଡେଲ୍ଟା ଷ୍ଟ୍ରିମ୍ କରିବା ପାଇଁ CC Compatible ଚିନ୍ତନ ଅନୁରୋଧଗୁଡ଼ିକରେ `display: \"summarized\"` ଯୋଡ଼େ।", "ccCompatibleSummarizeThinkingLabel": "ସଂକ୍ଷିପ୍ତ ଚିନ୍ତନ ପ୍ରଦର୍ଶନ ସକ୍ଷମ କରନ୍ତୁ", "ccCompatibleDetailsTitle": "CC-ସୁସଙ୍ଗତ ରିଲେର ବିବରଣୀ", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "CC ସୁସଙ୍ଗତ", "ccCompatibleModelsDescription": "CC-ସୁସଙ୍ଗତ ରିଲେଗୁଡ଼ିକ ମଡେଲ୍ ତାଲିକା ପ୍ରଦର୍ଶନ କରନ୍ତି ନାହିଁ। ଆପଣଙ୍କ ରିଲେ ଗ୍ରହଣ କରୁଥିବା Claude ମଡେଲ୍ IDଗୁଡ଼ିକ ଯୋଡ଼ନ୍ତୁ।", "ccCompatibleNameHint": "କେବଳ Claude Code ପାଇଁ ଉଦ୍ଦିଷ୍ଟ ଏହି ରିଲେର ପ୍ରଦର୍ଶନ ନାମ।", "ccCompatibleNamePlaceholder": "CC ରିଲେ ପ୍ରୋଡକ୍ସନ୍", @@ -6367,15 +6367,15 @@ "checkWebToken": "ଟୋକେନ୍ ଯାଞ୍ଚ କରନ୍ତୁ", "huggingchatLabel": "HuggingChat (ମାଗଣା)", "huggingchatDesc": "huggingface.co/chat ମାଧ୍ୟମରେ ମାଗଣା LLM ଚାଟ୍", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe ୱେବ୍", "poeWebDesc": "poe.com ମାଧ୍ୟମରେ ବହୁ-ମଡେଲ୍ ଚାଟ୍", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice ୱେବ୍", "veniceWebDesc": "ଗୋପନୀୟତା-କେନ୍ଦ୍ରିତ AI ଚାଟ୍", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel ୱେବ୍", "v0VercelWebDesc": "v0.dev ମାଧ୍ୟମରେ AI କୋଡ୍ ଜେନେରେସନ୍", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi ୱେବ୍", "kimiWebDesc": "www.kimi.com ମାଧ୍ୟମରେ Moonshot AI ଉପଭୋକ୍ତା ଚାଟ୍ (ଆନ୍ତର୍ଜାତୀୟ, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola ୱେବ୍", "doubaoWebDesc": "dola.com ମାଧ୍ୟମରେ ByteDance AI ଚାଟ୍", "overrideBaseUrlAdvanced": "ଉନ୍ନତ: ବେସ୍ URL ଓଭର୍ରାଇଡ୍ କରନ୍ତୁ", "overrideBaseUrlHint": "ଉନ୍ନତ: ଏହି ବିଲ୍ଟ-ଇନ୍ ପ୍ରଦାନକାରୀକୁ ଏକ କଷ୍ଟମ୍ ଏଣ୍ଡପଏଣ୍ଟକୁ ନିର୍ଦ୍ଦେଶ କରନ୍ତୁ। ଡିଫଲ୍ଟ ବ୍ୟବହାର କରିବାକୁ ଖାଲି ଛାଡ଼ନ୍ତୁ।", @@ -6478,7 +6478,7 @@ "savedModelEndpointSettings": "ମଡେଲ୍ ଏଣ୍ଡପଏଣ୍ଟ ସେଟିଂସ୍ ସଞ୍ଚୟ ହୋଇଛି", "searchByModelAria": "ମଡେଲ୍ ଅନୁସାରେ ସନ୍ଧାନ କରନ୍ତୁ", "selectSupportedEndpoint": "ଅତି କମରେ ଗୋଟିଏ ସମର୍ଥିତ ଏଣ୍ଡପଏଣ୍ଟ ବାଛନ୍ତୁ", - "antigravityClientProfileHarness": "Harness / CLI" + "antigravityClientProfileHarness": "ହାର୍ନେସ୍ / CLI" }, "settings": { "title": "ସେଟିଂସ୍", @@ -6749,11 +6749,11 @@ "themeSystem": "ସିଷ୍ଟମ୍", "endpointTunnelVisibility": "ଏଣ୍ଡପଏଣ୍ଟ ଟନେଲ୍ ଦୃଶ୍ୟମାନତା", "endpointTunnelVisibilityDesc": "ଟନେଲ୍ର ସ୍ଥିତି ପରିବର୍ତ୍ତନ ନକରି ଏଣ୍ଡପଏଣ୍ଟ ପୃଷ୍ଠାରୁ ଟନେଲ୍ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ।", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Cloudflare କ୍ୱିକ୍ ଟନେଲ୍", "showCloudflareTunnelDesc": "ଏଣ୍ଡପଏଣ୍ଟ ପୃଷ୍ଠାରେ Cloudflare Quick Tunnel ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ ଦେଖାନ୍ତୁ।", - "showTailscaleFunnel": "Tailscale Funnel", + "showTailscaleFunnel": "Tailscale ଫନେଲ୍", "showTailscaleFunnelDesc": "ଏଣ୍ଡପଏଣ୍ଟ ପୃଷ୍ଠାରେ Tailscale Funnel ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ ଦେଖାନ୍ତୁ।", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "ngrok ଟନେଲ୍", "showNgrokTunnelDesc": "ଏଣ୍ଡପଏଣ୍ଟ ପୃଷ୍ଠାରେ ngrok Tunnel ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ ଦେଖାନ୍ତୁ।", "sidebarVisibility": "ସାଇଡବାର୍ ଆଇଟମ୍ଗୁଡ଼ିକ ଲୁଚାନ୍ତୁ", "sidebarVisibilityDesc": "କୌଣସି ବୈଶିଷ୍ଟ୍ୟକୁ ଅକ୍ଷମ ନକରି ଦୃଶ୍ୟଗତ ଅବ୍ୟବସ୍ଥା କମାଇବା ପାଇଁ ଯେକୌଣସି ସାଇଡବାର୍ ନେଭିଗେସନ୍ ଏଣ୍ଟ୍ରି ଲୁଚାନ୍ତୁ", @@ -7143,7 +7143,7 @@ "ipModeWhitelist": "ହ୍ୱାଇଟ୍ଲିଷ୍ଟ", "ipModeWhitelistPriority": "WL ପ୍ରାଥମିକତା", "addIpAddress": "IP ଠିକଣା ଯୋଡ଼ନ୍ତୁ", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 କିମ୍ବା 10.0.*.*", "block": "+ ଅବରୋଧ କରନ୍ତୁ", "allow": "+ ଅନୁମତି ଦିଅନ୍ତୁ", "blocked": "ଅବରୋଧିତ ({count})", @@ -7931,7 +7931,7 @@ "resilienceEnableServerSideWait": "ସର୍ଭର୍-ପାର୍ଶ୍ୱ ଅପେକ୍ଷା ସକ୍ଷମ କରନ୍ତୁ", "resilienceMaximumRetries": "ସର୍ବାଧିକ ପୁନଃଚେଷ୍ଟା", "resilienceMaximumWaitPerRetry": "ପ୍ରତ୍ୟେକ ପୁନଃଚେଷ୍ଟା ପାଇଁ ସର୍ବାଧିକ ଅପେକ୍ଷା ସମୟ", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "SkillsMP ମାର୍କେଟପ୍ଲେସ୍", "memorySkillsFailedToSave": "ସେଭ୍ କରିବା ବିଫଳ ହେଲା", "memorySkillsApiKey": "API କୀ", "memorySkillsActiveSkillsProvider": "ସକ୍ରିୟ Skills ପ୍ରଦାନକାରୀ", @@ -7957,7 +7957,7 @@ "payloadRuleDefaultDesc": "ଯେତେବେଳେ ଆଉଟ୍ଗୋଇଂ ପେଲୋଡ୍ରେ ଲକ୍ଷ୍ୟ ପଥ ନଥାଏ, କେବଳ ସେତେବେଳେ ପାରାମିଟର୍ଗୁଡ଼ିକ ପ୍ରୟୋଗ କରେ।", "payloadRuleOverrideTitle": "ଓଭର୍ରାଇଡ୍", "payloadRuleOverrideDesc": "ପେଲୋଡ୍ରେ ମୂଲ୍ୟଗୁଡ଼ିକୁ ବାଧ୍ୟତାମୂଳକ ଭାବେ ପ୍ରୟୋଗ କରେ ଏବଂ ସେହି ପଥରେ ପୂର୍ବରୁ ଥିବା ଯେକୌଣସି ମୂଲ୍ୟକୁ ବଦଳାଇଦିଏ।", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "ଫିଲ୍ଟର୍", "payloadRuleFilterDesc": "ଅପ୍ଷ୍ଟ୍ରିମ୍ ଅନୁରୋଧ ପଠାଯିବା ପୂର୍ବରୁ ପେଲୋଡ୍ରୁ ଅବରୋଧିତ ପାରାମିଟରଗୁଡ଼ିକୁ ହଟାଏ।", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "default ପରି, କିନ୍ତୁ ସମ୍ଭବ ହେଲେ ଷ୍ଟ୍ରିଙ୍ଗ୍ ମୂଲ୍ୟଗୁଡ଼ିକୁ ପ୍ରଥମେ JSON ଭାବେ ପାର୍ସ କରାଯାଏ। ସେଭ୍ କରିବା ସମୟରେ ପୁରୁଣା ଇନ୍ପୁଟ୍ ଉପନାମ default-raw ମଧ୍ୟ ଗ୍ରହଣ କରାଯାଏ।", @@ -8073,7 +8073,7 @@ "auth_required": "ପ୍ରମାଣୀକରଣ ଆବଶ୍ୟକ", "public": "ସାର୍ବଜନୀନ", "always_protected": "ସର୍ବଦା ସୁରକ୍ଷିତ", - "spawn_capable": "Spawn-capable" + "spawn_capable": "ସ୍ପନ୍-ସକ୍ଷମ" }, "error": { "PASSWORD_REQUIRED": "ଏହି ପରିବର୍ତ୍ତନଗୁଡ଼ିକ ପ୍ରୟୋଗ କରିବାକୁ ବର୍ତ୍ତମାନର ପାସୱାର୍ଡ ଆବଶ୍ୟକ।", @@ -8085,8 +8085,8 @@ "remove": "ଅପସାରଣ କରନ୍ତୁ" }, "resilienceBaseCooldownLabel": "ମୂଳ cooldown", - "scopeLabel": "Scope", - "triggerLabel": "Trigger", + "scopeLabel": "ପରିସର", + "triggerLabel": "ଟ୍ରିଗର", "effectLabel": "ପ୍ରଭାବ", "statusEnabled": "ସକ୍ଷମ", "statusDisabled": "ଅକ୍ଷମ", @@ -9720,8 +9720,8 @@ "chooseAuthMethod": "ଆପଣଙ୍କ ପ୍ରମାଣୀକରଣ ପଦ୍ଧତି ବାଛନ୍ତୁ:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", + "googleAccount": "Google ଆକାଉଣ୍ଟ", + "githubAccount": "GitHub ଆକାଉଣ୍ଟ", "importToken": "ଟୋକେନ୍ ଆମଦାନୀ କରନ୍ତୁ", "pasteToken": "Kiro IDEରୁ ରିଫ୍ରେଶ୍ ଟୋକେନ୍ ପେଷ୍ଟ କରନ୍ତୁ।", "awsRegion": "AWS ଅଞ୍ଚଳ", @@ -9871,7 +9871,7 @@ "forgotPassword": "ପାସୱାର୍ଡ ଭୁଲିଗଲେ?", "continueWithOidc": "OIDC ସହିତ ଜାରି ରଖନ୍ତୁ", "defaultPasswordHint": "ଡିଫଲ୍ଟ ପାସୱାର୍ଡ: CHANGEME (ଯଦି INITIAL_PASSWORD ସେଟ୍ କରାଯାଇନଥାଏ)", - "Authorization": "Authorization", + "Authorization": "ପ୍ରାଧିକରଣ", "Content-Disposition": "Content-Disposition", "waitingForAuthorization": "ଅନୁମୋଦନ ପାଇଁ ଅପେକ୍ଷା କରାଯାଉଛି...", "waitingForGoogleAuthorization": "Google ଅନୁମୋଦନ ପାଇଁ ଅପେକ୍ଷା କରାଯାଉଛି...", @@ -9970,7 +9970,7 @@ "howItWorksDescription": "ଆପଣଙ୍କ ଆପ୍ଲିକେସନ୍ରୁ ଡାଟା ଆମ ବୁଦ୍ଧିମାନ ରାଉଟିଂ ସ୍ତର ମାଧ୍ୟମରେ କାମ ପାଇଁ ସର୍ବୋତ୍ତମ ପ୍ରଦାନକାରୀଙ୍କ ନିକଟକୁ ନିର୍ବିଘ୍ନରେ ପ୍ରବାହିତ ହୁଏ।", "howItWorksStep1Title": "1. CLI ଏବଂ SDKଗୁଡ଼ିକ", "howItWorksStep1Description": "ଆପଣଙ୍କ ଅନୁରୋଧଗୁଡ଼ିକ ଆପଣଙ୍କ ପ୍ରିୟ ଟୁଲ୍ କିମ୍ବା ଆମ ଏକୀକୃତ SDKରୁ ଆରମ୍ଭ ହୁଏ। କେବଳ ବେସ୍ URL ପରିବର୍ତ୍ତନ କରନ୍ତୁ।", - "howItWorksStep2Title": "2. OmniRoute Hub", + "howItWorksStep2Title": "2. OmniRoute ହବ୍", "howItWorksStep2Description": "ଆମ ଇଞ୍ଜିନ୍ ପ୍ରମ୍ପ୍ଟକୁ ବିଶ୍ଳେଷଣ କରେ, ପ୍ରଦାନକାରୀଙ୍କ ସ୍ଥିତି ଯାଞ୍ଚ କରେ ଏବଂ ସର୍ବନିମ୍ନ ବିଳମ୍ବ କିମ୍ବା ଖର୍ଚ୍ଚ ପାଇଁ ରାଉଟ୍ କରେ।", "howItWorksStep3Title": "3. AI ପ୍ରଦାନକାରୀମାନେ", "howItWorksStep3Description": "ଅନୁରୋଧଟି OpenAI, Anthropic, Gemini କିମ୍ବା ଅନ୍ୟମାନଙ୍କ ଦ୍ୱାରା ତୁରନ୍ତ ପୂରଣ କରାଯାଏ।", @@ -10403,7 +10403,7 @@ "flowDiagramCli": "CLI ଏଜେଣ୍ଟ", "flowDiagramCliDesc": "ନିଜସ୍ୱ ପ୍ରମାଣୀକରଣ/ମଡେଲ୍ ସହିତ ପ୍ରକ୍ରିୟାକରଣ କରେ", "fingerprintSettingsHint": "CLI ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ମେଳକରଣ (ଅନୁରୋଧଗୁଡ଼ିକୁ ନିର୍ଦ୍ଦିଷ୍ଟ CLI ଟୁଲ୍ ଭାବେ ଛଦ୍ମବେଶ ଦେବା) ଏଠାରେ ବିନ୍ୟାସ କରାଯାଇପାରେ:", - "settingsRoutingLink": "Settings/Routing", + "settingsRoutingLink": "ସେଟିଂସ୍/ରାଉଟିଂ", "openSettings": "ସେଟିଂସ୍", "copyRawUrlTitle": "ଅପରିବର୍ତ୍ତିତ URLଟିକୁ କ୍ଲିପ୍ବୋର୍ଡକୁ କପି କରନ୍ତୁ", "copied": "କପି ହୋଇଗଲା!", @@ -10783,7 +10783,7 @@ "saveConnection": "ସଂଯୋଗ ସଂରକ୍ଷଣ କରନ୍ତୁ", "gheDescription": "ଆପଣଙ୍କ GitHub Enterprise ଇନ୍ଷ୍ଟାନ୍ସର ମୂଳ URL ପ୍ରବେଶ କରନ୍ତୁ (ଯଥା https://ghe.yourcompany.com)।", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "GitHub ଏଣ୍ଟରପ୍ରାଇଜ୍ URL", "gheUrlRequired": "GitHub Enterprise URL ଆବଶ୍ୟକ", "gitlabDuoSetupTitle": "GitLab Duo OAuth ସେଟଅପ୍", "gitlabDuoSetupMessage": "GitLab Duo OAuth ବିନ୍ୟାସ କରାଯାଇନାହିଁ। {applicationsUrl}ରେ ରିଡାଇରେକ୍ଟ URI {redirectUri} ଏବଂ ସ୍କୋପ୍ \"{scopes}\" ସହିତ ଏକ OAuth ଆପ୍ଲିକେସନ୍ ପଞ୍ଜୀକରଣ କରନ୍ତୁ, ତା’ପରେ {clientIdEnv} (ଏବଂ ଇଚ୍ଛାନୁସାରେ {clientSecretEnv}) ସେଟ୍ କରି ପୁନଃଚାଳନ କରନ୍ତୁ।", @@ -10968,9 +10968,9 @@ "strategyLatency": "ଲେଟେନ୍ସି-ଅପ୍ଟିମାଇଜ୍ଡ", "poolMembersLabel": "ପୁଲ୍ ସଦସ୍ୟ ({count})", "poolNoMembers": "ଏହି ପୁଲ୍ରେ ଏପର୍ଯ୍ୟନ୍ତ କୌଣସି ପ୍ରକ୍ସି ନାହିଁ।", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{connections, plural, one {#ଟି ସଂଯୋଗ} other {#ଟି ସଂଯୋଗ}} ଦ୍ୱାରା {exits, plural, one {#ଟି ନିର୍ଗମ} other {#ଟି ନିର୍ଗମ}} ବ୍ୟବହୃତ · ଗୋଟିଏ ନିର୍ଗମରେ ସର୍ବାଧିକ {max} · ଗତ {hours} ଘଣ୍ଟା", + "poolEgressObservationEmpty": "ଗତ {hours} ଘଣ୍ଟାରେ କୌଣସି ଟ୍ରାଫିକ୍ ଦେଖାଯାଇନାହିଁ", + "poolEgressObservationHint": "ଏହି ସମୟସୀମାର ପ୍ରକ୍ସି ଲଗ୍ରୁ ଗଣନା କରାଯାଇଛି: ଏହି ପୁଲ୍ର ସଦସ୍ୟମାନଙ୍କ ପାଇଁ ଦେଖାଯାଇଥିବା ପୃଥକ ନିର୍ଗମ IPଗୁଡ଼ିକ ଏବଂ ସେଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିଥିବା OmniRoute ସଂଯୋଗଗୁଡ଼ିକ। \"ଗୋଟିଏ ନିର୍ଗମରେ\"ର ଅର୍ଥ ଏହି ସମୟସୀମା ମଧ୍ୟରେ, ଏକା ସମୟରେ ନୁହେଁ। ପ୍ରତି-IP 429 ଲକ୍ଆଉଟ୍ କେବଳ ସମାନ ପ୍ରଦାନକାରୀ ପରିବାରର ସଂଯୋଗଗୁଡ଼ିକୁ ବିରତ କରେ।", "poolRemove": "ହଟାନ୍ତୁ", "poolRemoveFailed": "ପୁଲ୍ରୁ ପ୍ରକ୍ସିକୁ ହଟାଇବାରେ ବିଫଳ", "poolAddLabel": "ଏକ ପ୍ରକ୍ସି ଯୋଡ଼ନ୍ତୁ", @@ -11128,7 +11128,7 @@ "jsonMode": "JSON ମୋଡ୍", "jsonModeDescription": "response_format: json_schemaକୁ ବାଧ୍ୟତାମୂଳକ କରେ", "schemaName": "ସ୍କିମା ନାମ", - "jsonSchema": "JSON schema", + "jsonSchema": "JSON ସ୍କିମା", "jsonSchemaEditor": "JSON schema ସମ୍ପାଦକ", "schemaValidated": "ସ୍କିମା ଯାଞ୍ଚ ହୋଇଛି", "validateSchema": "ସ୍କିମା ଯାଞ୍ଚ କରନ୍ତୁ", @@ -11679,7 +11679,7 @@ "endpointsCollapse": "ସଙ୍କୁଚିତ କରନ୍ତୁ", "endpointsExpand": "ବିସ୍ତାର କରନ୍ତୁ", "endpointsAnthropicNote": "Anthropic-ନେଟିଭ୍", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsResponsesNote": "OpenAI ପ୍ରତିକ୍ରିୟାଗୁଡ଼ିକ — codex/github", "endpointsWsNote": "WebSocket — କେବଳ codex", "betaText": "କୋଟା ସେୟାର୍ କାର୍ଯ୍ୟକ୍ଷମ ଅଛି, କିନ୍ତୁ ତ୍ରୁଟି ଥିବାର ଆଶଙ୍କା ରହିଛି। କୌଣସି ତ୍ରୁଟି ମିଳିଲା କି? ଦୟାକରି ଏହାକୁ ରିପୋର୍ଟ କରନ୍ତୁ।", "betaReportLink": "ଏକ ସମସ୍ୟା ରିପୋର୍ଟ କରନ୍ତୁ", @@ -12240,8 +12240,8 @@ "category": "ପ୍ରକାର", "detectionStatus": "ଚିହ୍ନଟ", "configStatus": "ବିନ୍ୟାସ", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "ମୂଳ URL", + "apiKeyLabel": "API କୀ", "modelMappingLabel": "ମଡେଲ୍ ମ୍ୟାପିଂ", "noActiveProviders": "କୌଣସି ସକ୍ରିୟ ପ୍ରଦାନକାରୀ ନାହାନ୍ତି।", "noActiveProvidersDesc": "CLI ବିନ୍ୟାସ କରିବା ପୂର୍ବରୁ ଅତି କମରେ 1 ଜଣ ପ୍ରଦାନକାରୀଙ୍କୁ ସଂଯୋଗ କରିବା ପାଇଁ Providersକୁ ଯାଆନ୍ତୁ।", @@ -12253,7 +12253,7 @@ "pageSubtitle": "OmniRouteକୁ ସୂଚାଉଥିବା କୋଡ୍ ଟୁଲ୍ଗୁଡ଼ିକ", "searchPlaceholder": "CLI ଖୋଜନ୍ତୁ…", "filterDetectionLabel": "ଚିହ୍ନଟ", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "ମୂଳ URL", "detectionAll": "ସମସ୍ତ", "detectionInstalled": "ଇନ୍ଷ୍ଟଲ୍ ହୋଇଛି", "detectionNotFound": "ମିଳିଲା ନାହିଁ", @@ -12523,7 +12523,7 @@ "storage": { "label": "ଷ୍ଟୋରେଜ୍", "agent": "ଡାଇନାମିକ୍ କ୍ୟାଟାଲଗ୍ (/api/agent-skills) → GitHubରେ SKILL.md", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / ସ୍ଥାନୀୟ)" }, "tagline": { "label": "ଟ୍ୟାଗ୍ଲାଇନ୍", @@ -12992,7 +12992,7 @@ "description": "ବାଇଟ୍ଗୁଡ଼ିକ କ୍ଲାଏଣ୍ଟ ପାଖରେ ପହଞ୍ଚିସାରିବା ପରେ ମଧ୍ୟ ଷ୍ଟ୍ରିମ୍ ପୁନରୁଦ୍ଧାରକୁ ପୁନର୍ବାର ପ୍ରତିକ୍ରିୟା ଅନୁରୋଧ କରି ତାହାକୁ ଯୋଡ଼ିବା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ।" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "ମଧ୍ୟ-ଷ୍ଟ୍ରିମ୍ ଅବ୍ୟାହତିକୁ ଟୁଲ୍-କଲ୍ ପାଇଁ ସୁରକ୍ଷିତ କରନ୍ତୁ: ଏକ ଟୁଲ୍ କଲ୍ ପଠାଯିବା ପରେ (ଏବେ ମଧ୍ୟ ଚାଲିଥାଉ କିମ୍ବା ପୂର୍ବରୁ ସମାପ୍ତ ହୋଇଥାଉ) କଟିଯାଇଥିବା ଷ୍ଟ୍ରିମ୍କୁ କେବେବି ପୁନଃଆରମ୍ଭ କରନ୍ତୁ ନାହିଁ, ଏବଂ ସମ୍ପୂର୍ଣ୍ଣ ପୁନଃପ୍ରୟାସ ବଜେଟ୍ ବ୍ୟବହାର କରିବା ପରିବର୍ତ୍ତେ ଗୋଟିଏ ଖାଲି ଅବ୍ୟାହତି ପରେ ବନ୍ଦ କରନ୍ତୁ।" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "ଷ୍ଟ୍ରିମ୍ କୌଣସି ଉପଯୋଗୀ ଫ୍ରେମ୍ ପଠାଇବା ପୂର୍ବରୁ ବନ୍ଦ ହେଲେ ଏବଂ ସେହି ସଂଯୋଗରେ ସୀମିତ ପୁନଃପ୍ରଚେଷ୍ଟା ଶେଷ ହୋଇଗଲେ ଥରେ ଏକ ସହୋଦର ସଂଯୋଗକୁ ଫେଲଓଭର କରନ୍ତୁ। ବ୍ୟବହାରଯୋଗ୍ୟ ସହୋଦର ସଂଯୋଗ ନଥିଲେ ମୂଳ early-EOF ତ୍ରୁଟି ଫେରାଇ ଦିଆଯାଏ। ବନ୍ଦ: ପୁନଃପ୍ରଚେଷ୍ଟା ପରେ early-EOF ଅନ୍ତିମ ରହେ।" @@ -13035,12 +13035,12 @@ "description": "ମଡେଲ୍ ଏକ କ୍ଲାଏଣ୍ଟ-ବ୍ୟବହାରଯୋଗ୍ୟ ପ୍ରତିକ୍ରିୟା ଫେରାଇବା ପର୍ଯ୍ୟନ୍ତ ନନ୍-ଷ୍ଟ୍ରିମିଂ ସର୍ଭର-ମାଲିକାନାଧୀନ ଟୁଲ୍ କଲ୍ଗୁଡ଼ିକୁ ଜାରି ରଖନ୍ତୁ।" }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After ଉତ୍ସ", + "description": "ସମୁଚ୍ଚିତ 429/503 ଅନୁପଲବ୍ଧ ପ୍ରତିକ୍ରିୟାଗୁଡ଼ିକରେ, କୌଣସି ନିର୍ଦ୍ଦିଷ୍ଟ ଭବିଷ୍ୟତ ପୁନଃପ୍ରୟାସ ସମୟ ଜଣା ନଥିଲେ କୃତ୍ରିମ 1s ପଠାଇବା ପରିବର୍ତ୍ତେ Retry-After ବାଦ ଦିଅନ୍ତୁ, error.retry_after_provenance ଯୋଡ଼ନ୍ତୁ, ଏବଂ କମ୍ବୋ ଡ୍ରେନ୍ ପଥଗୁଡ଼ିକରେ ଗଦ୍ୟରୂପୀ ପୁନଃପ୍ରୟାସ ସୂଚନା ପଢ଼ନ୍ତୁ।" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "ସୁରକ୍ଷିତ-ପ୍ରାଥମିକତା ଇନ୍ଫ୍ରା ବନ୍ଦଗୁଡ଼ିକୁ 502 ଭାବେ", + "description": "ଯେତେବେଳେ ଏକ କେବଳ-କୋଟା-ଫଲ୍ବ୍ୟାକ୍ ପ୍ରାଥମିକତା ଲକ୍ଷ୍ୟ ଏପରି ଏକ କାରଣରୁ କମ୍ବୋକୁ ବନ୍ଦ କରେ ଯାହା ପ୍ରମାଣଯୋଗ୍ୟ ଭାବେ କୋଟା ନୁହେଁ—ଏକ ଖୋଲା ପ୍ରଦାନକାରୀ ସର୍କିଟ୍ ବ୍ରେକର୍ କିମ୍ବା ଏକ ପୂର୍ବାନୁମାନିତ ବିଳମ୍ବତା ସ୍କିପ୍—ସେତେବେଳେ 503 ପରିବର୍ତ୍ତେ 502 ଉତ୍ତର ଦିଅନ୍ତୁ।" } } }, @@ -13358,7 +13358,7 @@ } }, "chaosConfig": { - "pageTitle": "Chaos Mode", + "pageTitle": "ବିଶୃଙ୍ଖଳା ମୋଡ୍", "pageSubtitle": "ସମାନ କାର୍ଯ୍ୟରେ ଏକାଧିକ AI ମଡେଲ୍କୁ ସମାନ୍ତରାଳ ଭାବେ କିମ୍ବା ସହଯୋଗମୂଳକ ଭାବେ ଚଲାନ୍ତୁ", "enableChaos": "Chaos Mode ସକ୍ଷମ କରନ୍ତୁ", "enableChaosDesc": "Chaos Mode ସକ୍ଷମ ଥିବା API କୀଗୁଡ଼ିକୁ ଏହି ବୈଶିଷ୍ଟ୍ୟ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ", @@ -13609,7 +13609,7 @@ "remaining": "ଅବଶିଷ୍ଟ", "noLockouts": "କୌଣସି ସକ୍ରିୟ ଲକ୍ଆଉଟ୍ ନାହିଁ", "provider": "ପ୍ରଦାନକାରୀ", - "id": "ID", + "id": "ଆଇଡି", "authType": "ପ୍ରମାଣୀକରଣ ପ୍ରକାର", "priority": "ପ୍ରାଥମିକତା", "isActive": "ସକ୍ରିୟ", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "ଲକ୍ଷ୍ୟ ମଡେଲ୍ରେ ଆବଶ୍ୟକ କ୍ଷମତାଗୁଡ଼ିକ (ଭିଜନ୍, ଟୁଲ୍, ଷ୍ଟ୍ରକ୍ଚର୍ଡ ଆଉଟପୁଟ୍, କଣ୍ଟେକ୍ସ୍ଟ ୱିଣ୍ଡୋ) ନଥିଲେ ଡିସ୍ପାଚ୍ ପୂର୍ବରୁ ଅନୁରୋଧଗୁଡ଼ିକୁ ପ୍ରତ୍ୟାଖ୍ୟାନ କରନ୍ତୁ। ଏହା କମ୍ବୋ-ଲେୟର୍ ସୁସଙ୍ଗତତା ଫିଲ୍ଟର୍କୁ ବାଇପାସ୍ କରୁଥିବା ସିଧାସଳଖ ଏକକ-ପ୍ରଦାନକାରୀ ଅନୁରୋଧଗୁଡ଼ିକୁ ସୁରକ୍ଷିତ କରେ।", "featureFlagDisableContextWindowChecksDescription": "ସିଧାସଳଖ ଏକକ-ମଡେଲ୍ ଅନୁରୋଧଗୁଡ଼ିକ ପାଇଁ OmniRouteର ସ୍ଥାନୀୟ କଣ୍ଟେକ୍ସ୍ଟ-ୱିଣ୍ଡୋ ଏବଂ ସର୍ବାଧିକ-ଇନପୁଟ୍-ଟୋକନ୍ ଯାଞ୍ଚକୁ ଏଡ଼ାନ୍ତୁ। ଅପ୍ଷ୍ଟ୍ରିମ୍ ପ୍ରଦାନକାରୀମାନେ ତଥାପି ସେମାନଙ୍କର ପ୍ରକୃତ ସୀମାଗୁଡ଼ିକୁ ଲାଗୁ କରିବେ। ପ୍ରମ୍ପ୍ଟ କମ୍ପ୍ରେସନ୍ ଏବଂ ଆଉଟପୁଟ୍-ଟୋକନ୍ ସୀମା ସକ୍ରିୟ ରହିବ।", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "ସନ୍ଧାନ ପରିସଂଖ୍ୟାନ ଏବଂ ସାମ୍ପ୍ରତିକ ସନ୍ଧାନଗୁଡ଼ିକରେ କେବଳ ସେହି ପ୍ରଦାନକାରୀମାନଙ୍କୁ ଗଣନା କରାଯାଏ ଯେଉଁମାନଙ୍କର ସଂଯୋଗ ଏବେ ବି ସକ୍ରିୟ ଅଛି (duckduckgo-free ପରି କୀ-ବିହୀନ ପ୍ରଦାନକାରୀମାନଙ୍କୁ ସବୁବେଳେ ଗଣନା କରାଯାଏ)। ବନ୍ଦ କଲେ ପ୍ରଦାନକାରୀ ଆଇଡି ସହିତ ରଖାଯାଇଥିବା ପ୍ରତ୍ୟେକ ସନ୍ଧାନ ଧାଡ଼ି ଅପରିବର୍ତ୍ତିତ ରହେ।", "publicSystem": { "notFound": { "title": "ପୃଷ୍ଠା ମିଳିଲା ନାହିଁ", @@ -13795,7 +13795,7 @@ "kiroAuthModal": { "title": "{providerLabel} ସହିତ ସଂଯୋଗ କରନ୍ତୁ", "chooseMethod": "ଆପଣଙ୍କ ପ୍ରମାଣୀକରଣ ପଦ୍ଧତି ବାଛନ୍ତୁ:", - "builderId": "AWS Builder ID", + "builderId": "AWS ବିଲ୍ଡର ID", "builderDescription": "ଅଧିକାଂଶ ବ୍ୟବହାରକାରୀଙ୍କ ପାଇଁ ସୁପାରିଶ କରାଯାଏ। {providerLabel} ସହିତ ଲିଙ୍କ୍ ହୋଇଥିବା AWS ଆକାଉଣ୍ଟ୍ରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।", "organization": "ଆପଣଙ୍କ ସଂସ୍ଥା (AWS IAM Identity Center)", "organizationDescription": "ଆପଣଙ୍କ କମ୍ପାନୀର SSO ଆରମ୍ଭ URL ବ୍ୟବହାର କରନ୍ତୁ (ଉଦାହରଣ: {url})।", @@ -13978,7 +13978,7 @@ "runners": "ରନର୍ଗୁଡ଼ିକ", "tasks": "କାର୍ଯ୍ୟଗୁଡ଼ିକ", "colName": "ନାମ", - "colClis": "CLIs", + "colClis": "CLIଗୁଡ଼ିକ", "colStatus": "ସ୍ଥିତି", "colTask": "କାର୍ଯ୍ୟ", "colMode": "ମୋଡ୍", @@ -14051,9 +14051,9 @@ "filterSources": "ଉତ୍ସଗୁଡ଼ିକ", "filterProviders": "ପ୍ରଦାନକାରୀମାନେ", "clearFilters": "ଫିଲ୍ଟରଗୁଡ଼ିକ ସଫା କରନ୍ତୁ", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "କ୍ଲାଉଡ୍ ଏଜେଣ୍ଟ", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "କଣ୍ଡକ୍ଟର", "sourceStale": "{since} ଠାରୁ ଅଚଳ", "sourceOffline": "ଅଫ୍ଲାଇନ୍", "sourceCollapse": "ସଂକୁଚିତ କରନ୍ତୁ", diff --git a/src/i18n/messages/pa.json b/src/i18n/messages/pa.json index f3443a6100..44798575c5 100644 --- a/src/i18n/messages/pa.json +++ b/src/i18n/messages/pa.json @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models ਉੱਤੇ claude/<provider>/<model> ਮਿਰਰ IDs ਦਾ ਪ੍ਰਚਾਰ ਕਰੋ, ਤਾਂ ਜੋ Claude Code ਗੇਟਵੇ ਮਾਡਲ ਖੋਜ ਵਿੱਚ ਗੈਰ-Claude ਮਾਡਲ ਸੂਚੀਬੱਧ ਹੋਣ। ਚੇਤਾਵਨੀ: ਗਲੋਬਲ ਤੌਰ 'ਤੇ ਸਮਰੱਥ ਕਰਨ 'ਤੇ ਇਹ ਸਾਰੇ ਕਲਾਇੰਟਾਂ ਲਈ ਕੈਟਾਲਾਗ ਐਂਟਰੀਆਂ ਨੂੰ ਦੁੱਗਣਾ ਕਰ ਦਿੰਦਾ ਹੈ।", "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> ਗੇਟਵੇ ਉਪਨਾਮਾਂ ਲਈ ਮੁੱਖ ਸਵਿੱਚ। ਚਾਲੂ (ਡਿਫਾਲਟ): /v1/models ਹਰ ਯੋਗ, ਸੋਚਣ-ਸਮਰੱਥ Claude ਮਾਡਲ ਲਈ ਇੱਕ ਬਿਨਾਂ-ਸੋਚ ਵਾਲਾ ਰੂਪ ਦਰਸਾਉਂਦਾ ਹੈ, ਅਤੇ ਬੇਨਤੀ ਵਿੱਚ ਭੇਜਿਆ ਗਿਆ no-think/ ID ਤਰਕ ਨੂੰ ਦਬਾ ਕੇ ਮੁੜ ਅਸਲ ਮਾਡਲ ਵਿੱਚ ਹੱਲ ਹੁੰਦਾ ਹੈ। ਬੰਦ: ਕੋਈ ਰੂਪ ਦਰਸਾਏ ਨਹੀਂ ਜਾਂਦੇ ਅਤੇ no-think/ ID ਨੂੰ ਕਿਸੇ ਹੋਰ ਅਣਜਾਣ ਮਾਡਲ ID ਵਾਂਗ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ ਇਹ ਚਾਲੂ ਹੋਵੇ, ਤਾਂ ਪ੍ਰਤੀ-ਮਾਡਲ ModelSpec.noThinkingAlias ਔਪਟ-ਇਨ/ਔਪਟ-ਆਉਟ ਫਿਰ ਵੀ ਲਾਗੂ ਹੁੰਦਾ ਹੈ।", "featureFlagChatVirtualLanesEnabledDescription": "ਪ੍ਰਦਾਤਾ ਡਿਸਪੈਚ (#9654) ਲਈ ਪ੍ਰਤੀ-ਟੈਨੈਂਟ ਅਨੁਕੂਲ ਵਰਚੁਅਲ ਐਡਮਿਸ਼ਨ ਲੇਨ ਸਮਰੱਥ ਕਰੋ: ਹੁਣ ਇੱਕ ਟੈਨੈਂਟ ਦਾ ਅਚਾਨਕ ਵਧਿਆ ਲੋਡ ਦੂਜੇ ਲਈ 503 ਪੈਦਾ ਨਹੀਂ ਕਰੇਗਾ। OMNIROUTE_CHAT_VIRTUAL_LANES env var ਨੂੰ ਇਸ ਡੈਸ਼ਬੋਰਡ ਓਵਰਰਾਈਡ ਉੱਤੇ ਤਰਜੀਹ ਮਿਲਦੀ ਹੈ; ਤਬਦੀਲੀਆਂ ਸਰਵਰ ਮੁੜ ਚਾਲੂ ਹੋਣ 'ਤੇ ਲਾਗੂ ਹੁੰਦੀਆਂ ਹਨ।", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ਡੈਸ਼ਬੋਰਡ ਪ੍ਰਦਾਤਾ ਪੰਨੇ: ਮੁਫ਼ਤ ਬੈਜ ਸਿਰਫ਼ ਉਹਨਾਂ ਸੰਕੇਤਾਂ ਉੱਤੇ ਦਿਖਾਓ ਜਿਨ੍ਹਾਂ ਨੂੰ ਪ੍ਰਦਾਤਾ ਮੰਨਦਾ ਹੈ — ਇਹ ਡਿਸਪਲੇ-ਨਾਮ ਅਨੁਮਾਨ, ਗੈਰ-ਬੂਲੀਅਨ free ਫ਼ੀਲਡਾਂ ਅਤੇ ਬਿਨਾਂ ਦਸਤਾਵੇਜ਼ਬੱਧ ਮੁਫ਼ਤ ਟੀਅਰ ਵਾਲੇ ਰਜਿਸਟਰਡ ਪ੍ਰਦਾਤਾਵਾਂ ਉੱਤੇ :free ਪਿਛੇਤਰਾਂ ਨੂੰ ਹਟਾਉਂਦਾ ਹੈ। ਬੰਦ ਹੋਣ ਉੱਤੇ ਪੁਰਾਣਾ ਬੈਜ ਨਿਯਮ ਬਰਕਰਾਰ ਰਹਿੰਦਾ ਹੈ।", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy ਪੂਲ ਅਤੇ opencode ਦੀ ਪ੍ਰਤੀ-ਖਾਤਾ ਰੋਟੇਸ਼ਨ ਉਸ Proxy ਨੂੰ ਮੁੜ ਵਰਤਣਾ ਬੰਦ ਕਰ ਦਿੰਦੇ ਹਨ ਜੋ ਹੁਣੇ ਅਸਫਲ ਹੋਇਆ ਹੈ (TCP ਪ੍ਰੋਬ ਅਸਵੀਕਾਰ ਹੋਈ, ਜਾਂ ਇਸ ਰਾਹੀਂ 429 ਮਿਲਿਆ), ਇੱਕ ਪ੍ਰਤੀ-ਪ੍ਰਕਿਰਿਆ ਮਿਆਦ ਲਈ ਜੋ ਹਰ ਦੁਹਰਾਅ ਨਾਲ ਦੁੱਗਣੀ ਹੁੰਦੀ ਹੈ, ਇੱਕ ਅਧਿਕਤਮ ਹੱਦ ਤੱਕ। ਕੋਈ Proxy ਸਥਿਤੀ ਲਿਖੀ ਨਹੀਂ ਜਾਂਦੀ; ਹਰ ਉਮੀਦਵਾਰ ਨੂੰ ਪਾਸੇ ਰੱਖਣ ’ਤੇ ਚੋਣ ਬਦਲਦੀ ਨਹੀਂ ਹੈ। ਮੂਲ ਰੂਪ ਵਿੱਚ ਬੰਦ: ਚੋਣ ਕ੍ਰਮ ਬਿਲਕੁਲ ਸਧਾਰਨ ਰੋਟੇਸ਼ਨ ਵਰਗਾ ਹੈ।", + "featureFlagProxyPoolEgressObservationDescription": "ਡੈਸ਼ਬੋਰਡ ਵਿੱਚ ਕਿਸੇ Proxy ਪੂਲ ਹੇਠ ਦਿਖਾਓ ਕਿ ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਦੌਰਾਨ ਕਿੰਨੇ ਦੇਖੇ ਗਏ egress IPs ਨੇ ਇਸ ਦੇ ਮੈਂਬਰਾਂ ਨੂੰ ਸੇਵਾ ਦਿੱਤੀ, ਕਿੰਨੇ ਕਨੈਕਸ਼ਨਾਂ ਨੇ ਉਨ੍ਹਾਂ ਨੂੰ ਵਰਤਿਆ ਅਤੇ ਇੱਕ IP ਦੇ ਪਿੱਛੇ ਸਭ ਤੋਂ ਵੱਧ ਕਿੰਨੇ ਦੇਖੇ ਗਏ। ਕੇਵਲ ਪੜ੍ਹਨਯੋਗ, Proxy ਲੌਗ ਤੋਂ ਗਣਨਾ ਕੀਤੀ ਗਈ, ਰੂਟਿੰਗ ਲਈ ਕਦੇ ਨਹੀਂ ਵਰਤੀ ਜਾਂਦੀ। ਮੂਲ ਰੂਪ ਵਿੱਚ ਬੰਦ: ਪੂਲ ਸੰਪਾਦਕ ਬਦਲਦਾ ਨਹੀਂ ਹੈ ਅਤੇ ਨਿਰੀਖਣ ਰੂਟ null ਜਵਾਬ ਦਿੰਦਾ ਹੈ।", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Proxy ਸਿਹਤ ਜਾਂਚ ਵਿੱਚ, ਟਾਰਗੇਟ ਵੱਲੋਂ ਅਸਵੀਕਾਰ ਕੀਤੀ ਪ੍ਰੋਬ (401/403/429: Proxy ਨੇ ਅੱਗੇ ਭੇਜਿਆ, ਮੰਜ਼ਿਲ ਨੇ ਇਸ egress IP ਨੂੰ ਅਸਵੀਕਾਰ ਕੀਤਾ) ਨੂੰ, ਸਫਲਤਾਪੂਰਵਕ ਸੇਵਾ ਕੀਤੀ ਪ੍ਰੋਬ ਵਾਂਗ, Proxy ਦੀ ਲਗਾਤਾਰ ਅਸਫਲਤਾ ਲੜੀ ਰੀਸੈੱਟ ਕਰਨ ਦਿਓ। ਮੂਲ ਰੂਪ ਵਿੱਚ ਬੰਦ: ਅਸਵੀਕਾਰਤਾ ਨਿਰਪੱਖ ਰਹਿੰਦੀ ਹੈ ਅਤੇ ਲੜੀ ਨੂੰ ਕਾਇਮ ਰੱਖਦੀ ਹੈ। 5xx ਦੋਵਾਂ ਹਾਲਤਾਂ ਵਿੱਚ ਅਨਿਰਣਾਇਕ ਰਹਿੰਦਾ ਹੈ, ਅਤੇ ਅਸਵੀਕਾਰਤਾ ਕਦੇ ਵੀ ਕਿਸੇ Proxy ਨੂੰ ਹਟਾਉਂਦੀ, ਅਯੋਗ ਜਾਂ ਮੁੜ ਸਰਗਰਮ ਨਹੀਂ ਕਰਦੀ।", "sidebar": { "home": "ਮੁੱਖ ਪੰਨਾ", "dashboard": "ਡੈਸ਼ਬੋਰਡ", @@ -1429,19 +1429,19 @@ "secretKeyHint": "ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਪੇਲੋਡ ਹੈਡਰ 'ਤੇ ਦਸਤਖਤ ਕਰਨ ਵਾਸਤੇ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।" }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "Discord ਵੈੱਬਹੁੱਕ URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "ਤੁਹਾਡੇ Discord ਚੈਨਲ ਦੀ ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਸੈਟਿੰਗਾਂ ਤੋਂ ਕਾਪੀ ਕੀਤਾ ਵੈੱਬਹੁੱਕ URL।", "tutorial": "Discord ਵੈੱਬਹੁੱਕ ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "Slack ਵੈੱਬਹੁੱਕ URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "ਤੁਹਾਡੀ Slack Incoming Webhooks ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਤੋਂ ਕਾਪੀ ਕੀਤਾ ਵੈੱਬਹੁੱਕ URL।", "tutorial": "Slack ਵੈੱਬਹੁੱਕ ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ:" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "Telegram ਬੌਟ ਟੋਕਨ", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "ਤੁਹਾਡਾ ਬੋਟ ਬਣਾਉਂਦੇ ਸਮੇਂ @BotFather ਤੋਂ ਪ੍ਰਾਪਤ ਹੋਇਆ HTTP API ਟੋਕਨ।", "chatId": "Telegram ਚੈਟ ID / ਚੈਨਲ", @@ -1494,7 +1494,7 @@ "tool": "ਟੂਲ", "toolPlaceholder": "ਟੂਲ ਦੇ ਨਾਮ ਮੁਤਾਬਕ ਫਿਲਟਰ ਕਰੋ", "duration": "ਅਵਧੀ", - "apiKey": "API Key", + "apiKey": "API ਕੁੰਜੀ", "output": "ਆਉਟਪੁੱਟ", "allResults": "ਸਾਰੇ ਨਤੀਜੇ", "success": "ਸਫਲ", @@ -2717,7 +2717,7 @@ "ccOnboardingTitle": "ਗੇਟਵੇ ਮਾਡਲ ਖੋਜ ਲਈ settings.json", "ccOnboardingCopy": "ਕਾਪੀ ਕਰੋ", "ccOnboardingCopied": "ਕਾਪੀ ਹੋ ਗਿਆ", - "ccOnboardingKeyPlaceholder": "''", + "ccOnboardingKeyPlaceholder": "'<ਤੁਹਾਡੀ OmniRoute API ਕੁੰਜੀ>'", "ccOnboardingWindowNote": "Claude Code ਕਿਸੇ ਵੀ ਅਣਪਛਾਤੀ ਮਾਡਲ id ਲਈ 200K ਕਾਂਟੈਕਸਟ ਵਿੰਡੋ ਮੰਨਦਾ ਹੈ। ਵੱਖਰੀ ਅਸਲ ਵਿੰਡੋ ਵਾਲੇ ਮਾਡਲ ਲਈ, ਉਸਦੇ ਬਿਲਕੁਲ ਹੇਠਾਂ CLAUDE_CODE_AUTO_COMPACT_WINDOW ਜੋੜੋ ਤਾਂ ਜੋ ਆਟੋ-ਕੰਪੈਕਸ਼ਨ ਬਹੁਤ ਜਲਦੀ ਚਾਲੂ ਨਾ ਹੋਵੇ।", "failedSave": "ਸੁਰੱਖਿਅਤ ਕਰਨ ਵਿੱਚ ਅਸਫਲ", "profileSyncTitle": "CLI ਪ੍ਰੋਫ਼ਾਈਲ ਆਟੋ-ਸਿੰਕ", @@ -2748,7 +2748,7 @@ "addModel": "ਮਾਡਲ ਜੋੜੋ", "routeModelPlaceholder": "{model} ਨੂੰ ਇੱਥੇ ਰੂਟ ਕਰੋ...", "baseUrl": "ਬੇਸ URL", - "apiKey": "API Key", + "apiKey": "API ਕੁੰਜੀ", "configured": "ਸੰਰਚਿਤ", "notConfigured": "ਸੰਰਚਿਤ ਨਹੀਂ", "notInstalled": "ਇੰਸਟਾਲ ਨਹੀਂ", @@ -4127,7 +4127,7 @@ "vscodeAliasDescriptionError": "ਪਲੇਸਹੋਲਡਰ URL ਦਿਖਾਏ ਜਾ ਰਹੇ ਹਨ ਕਿਉਂਕਿ ਇਸ ਸੈਸ਼ਨ ਵਿੱਚ CLI ਕੁੰਜੀਆਂ ਲੋਡ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕੀਆਂ।", "vscodeAliasDescriptionLoading": "CLI ਕੁੰਜੀਆਂ ਲੋਡ ਹੋ ਰਹੀਆਂ ਹਨ। ਕੁੰਜੀ ਉਪਲਬਧ ਹੋਣ ਤੱਕ ਪਲੇਸਹੋਲਡਰ URL ਦਿਖਾਏ ਜਾਂਦੇ ਹਨ।", "vscodeAliasDescriptionPlaceholder": "ਪਲੇਸਹੋਲਡਰ URL ਦਿਖਾਏ ਜਾ ਰਹੇ ਹਨ। TOKEN ਨੂੰ ਬਦਲਣ ਲਈ CLI Tools ਵਿੱਚ ਇੱਕ API ਕੁੰਜੀ ਬਣਾਓ ਜਾਂ ਸਰਗਰਮ ਕਰੋ।", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI ਟੂਲ", "vscodeAliasBaseLabel": "VS Code ਬੇਸ", "vscodeAliasModelsLabel": "VS Code ਮਾਡਲ", "vscodeAliasChatLabel": "VS Code ਚੈਟ", @@ -4907,7 +4907,7 @@ "clearAll": "ਸਭ ਸਾਫ਼ ਕਰੋ", "confirmClearActiveRequests": "ਕੀ ਸਾਰੀਆਂ ਸਰਗਰਮ ਬੇਨਤੀਆਂ ਸਾਫ਼ ਕਰਨੀਆਂ ਹਨ?", "model": "ਮਾਡਲ", - "provider": "Provider", + "provider": "ਪ੍ਰਦਾਤਾ", "account": "ਖਾਤਾ", "elapsed": "ਲੰਘਿਆ ਸਮਾਂ", "activeStage": "ਪੜਾਅ", @@ -5804,7 +5804,7 @@ "ccCompatibleLabel": "CC ਅਨੁਕੂਲ", "ccCompatibleModelsDescription": "CC-ਅਨੁਕੂਲ ਰੀਲੇ ਮਾਡਲ ਸੂਚੀ ਉਪਲਬਧ ਨਹੀਂ ਕਰਦੇ। ਉਹ Claude ਮਾਡਲ ID ਜੋੜੋ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਹਾਡਾ ਰੀਲੇ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ।", "ccCompatibleNameHint": "ਸਿਰਫ਼ Claude Code ਲਈ ਇਸ ਰੀਲੇ ਦਾ ਪ੍ਰਦਰਸ਼ਿਤ ਨਾਮ।", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay ਪ੍ਰੋਡਕਸ਼ਨ", "ccCompatiblePrefixHint": "prefix/model-id ਵਰਗੇ ਮਾਡਲ ਉਪਨਾਮਾਂ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "ਇਸ ਪ੍ਰਦਾਤਾ ਨੂੰ ਸਿਰਫ਼ ਉਹਨਾਂ ਰੀਲੇਆਂ ਲਈ ਵਰਤੋ ਜੋ ਕੇਵਲ Claude Code ਕਲਾਇੰਟਾਂ ਨੂੰ ਸੇਵਾ ਦਿੰਦੇ ਹਨ। OmniRoute ਹਰ ਆਉਣ ਵਾਲੀ ਬੇਨਤੀ ਨੂੰ Claude Code-ਅਨੁਕੂਲ ਵਾਇਰ ਫਾਰਮੈਟ ਵਿੱਚ ਮੁੜ ਲਿਖਦਾ ਹੈ, ਤਾਂ ਜੋ ਉਹ ਰੀਲੇ ਇਸਨੂੰ ਸਵੀਕਾਰ ਕਰ ਸਕਣ। ਜੇ ਤੁਸੀਂ ਸਿਰਫ਼ Claude Code CLI ਵਰਤਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਜਾਂ ਤੁਹਾਨੂੰ ਪੱਕਾ ਨਹੀਂ ਕਿ ਇਸ ਰੀਲੇ ਕਿਸਮ ਦਾ ਕੀ ਅਰਥ ਹੈ, ਤਾਂ ਇਸਦੀ ਬਜਾਏ ਇੱਕ ਆਮ Anthropic-ਅਨੁਕੂਲ ਪ੍ਰਦਾਤਾ ਵਰਤੋ।", @@ -5893,7 +5893,7 @@ "tierOverrideHelpText": "OmniRoute ਨੂੰ ਮਾਡਲ ਦੀ ਕੀਮਤ ਤੋਂ ਇਸਦਾ ਅਨੁਮਾਨ ਲਗਾਉਣ ਦੇਣ ਦੀ ਬਜਾਏ, ਇਸ ਪ੍ਰਦਾਤਾ ਨੂੰ ਕਿਸੇ ਰੂਟਿੰਗ ਪੱਧਰ ਨਾਲ ਪਿੰਨ ਕਰੋ।", "museSparkWebCookieHint": "Muse Spark ਵੈੱਬ ਕੂਕੀ ਸੰਕੇਤ", "museSparkWebCookiePlaceholder": "Muse Spark ਵੈੱਬ ਕੂਕੀ ਪਲੇਸਹੋਲਡਰ", - "oauth": "Oauth", + "oauth": "OAuth", "openCliTools": "CLI ਟੂਲ ਖੋਲ੍ਹੋ", "openSettings": "ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ", "openaiResponsesStoreDescription": "ਅਨੁਕੂਲ Responses API ਬੇਨਤੀਆਂ ਨੂੰ ਸਟੋਰ ਕੀਤੀ ਜਵਾਬ ਸਥਿਤੀ ਬਰਕਰਾਰ ਰੱਖਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ।", @@ -6019,8 +6019,8 @@ "providerDetailFastTierTooltip": "ਮੂਲ ਰੂਪ ਵਿੱਚ ਸਾਰੇ Codex ਕਨੈਕਸ਼ਨਾਂ 'ਤੇ Codex Fast ਟੀਅਰ ਲਾਗੂ ਕਰੋ", "providerDetailFastDefaultLabel": "Fast ਨੂੰ ਡਿਫੌਲਟ ਬਣਾਓ", "providerDetailBrowserManualConnect": "ਬ੍ਰਾਊਜ਼ਰ/ਹੱਥੀਂ ਕਨੈਕਟ ਕਰੋ", - "providerDetailAuthUrl": "Auth URL", - "providerDetailCallbackUrl": "Callback URL", + "providerDetailAuthUrl": "ਪ੍ਰਮਾਣੀਕਰਨ URL", + "providerDetailCallbackUrl": "ਕਾਲਬੈਕ URL", "providerDetailValidClaudeCredentialsFile": "ਵੈਧ Claude ਪ੍ਰਮਾਣ-ਪੱਤਰ ਫ਼ਾਈਲ", "providerDetailPathAutoDetectedAllOs": "ਪਾਥ ਹਰ OS (Linux/Mac/Windows) ਲਈ ਆਪਣੇ ਆਪ ਖੋਜਿਆ ਜਾਂਦਾ ਹੈ।", "providerDetailMyClaudeAccountPlaceholder": "ਮੇਰਾ Claude ਖਾਤਾ", @@ -6456,7 +6456,7 @@ "failedUpdateCodexServiceMode": "Codex ਸੇਵਾ ਮੋਡ ਅੱਪਡੇਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ", "filterByMedia": "ਮੀਡੀਆ", "freeBadge": "ਮੁਫ਼ਤ", - "kimiCodeApiKeyLabel": "Kimi Code API Key", + "kimiCodeApiKeyLabel": "Kimi Code API ਕੁੰਜੀ", "modelTestFailed": "ਮਾਡਲ ਟੈਸਟ ਅਸਫਲ ਰਿਹਾ", "modelTestNetworkError": "ਮਾਡਲ ਦੀ ਜਾਂਚ ਦੌਰਾਨ ਨੈੱਟਵਰਕ ਗਲਤੀ", "networkError": "ਨੈੱਟਵਰਕ ਗਲਤੀ", @@ -6749,11 +6749,11 @@ "themeSystem": "ਸਿਸਟਮ", "endpointTunnelVisibility": "ਐਂਡਪੌਇੰਟ ਟਨਲ ਦੀ ਦਿੱਖ", "endpointTunnelVisibilityDesc": "ਟਨਲ ਦੀ ਸਥਿਤੀ ਬਦਲੇ ਬਿਨਾਂ ਐਂਡਪੌਇੰਟ ਪੰਨੇ ਤੋਂ ਟਨਲ ਕੰਟਰੋਲ ਲੁਕਾਓ।", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Cloudflare ਤੁਰੰਤ ਟਨਲ", "showCloudflareTunnelDesc": "Endpoint ਪੰਨੇ 'ਤੇ Cloudflare Quick Tunnel ਦੇ ਕੰਟਰੋਲ ਦਿਖਾਓ।", - "showTailscaleFunnel": "Tailscale Funnel", + "showTailscaleFunnel": "Tailscale ਫਨਲ", "showTailscaleFunnelDesc": "Endpoint ਪੰਨੇ 'ਤੇ Tailscale Funnel ਦੇ ਕੰਟਰੋਲ ਦਿਖਾਓ।", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "ngrok ਟਨਲ", "showNgrokTunnelDesc": "Endpoint ਪੰਨੇ 'ਤੇ ngrok Tunnel ਦੇ ਕੰਟਰੋਲ ਦਿਖਾਓ।", "sidebarVisibility": "ਸਾਈਡਬਾਰ ਆਈਟਮਾਂ ਲੁਕਾਓ", "sidebarVisibilityDesc": "ਕਿਸੇ ਵੀ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਅਯੋਗ ਕੀਤੇ ਬਿਨਾਂ ਦ੍ਰਿਸ਼ਟੀਗਤ ਭੀੜ ਘਟਾਉਣ ਲਈ ਸਾਈਡਬਾਰ ਦੀ ਕੋਈ ਵੀ ਨੈਵੀਗੇਸ਼ਨ ਐਂਟਰੀ ਲੁਕਾਓ", @@ -7143,7 +7143,7 @@ "ipModeWhitelist": "ਵਾਈਟਲਿਸਟ", "ipModeWhitelistPriority": "WL ਤਰਜੀਹ", "addIpAddress": "IP ਪਤਾ ਸ਼ਾਮਲ ਕਰੋ", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 ਜਾਂ 10.0.*.*", "block": "+ ਬਲੌਕ ਕਰੋ", "allow": "+ ਆਗਿਆ ਦਿਓ", "blocked": "ਬਲੌਕ ਕੀਤੇ ({count})", @@ -7380,7 +7380,7 @@ "customPricingNote": "ਤੁਸੀਂ ਖਾਸ ਮਾਡਲਾਂ ਲਈ ਡਿਫੌਲਟ ਕੀਮਤ ਨੂੰ ਓਵਰਰਾਈਡ ਕਰ ਸਕਦੇ ਹੋ। ਕਸਟਮ ਓਵਰਰਾਈਡਾਂ ਨੂੰ ਆਪਣੇ ਆਪ ਪਤਾ ਲੱਗੀ ਕੀਮਤ ਨਾਲੋਂ ਤਰਜੀਹ ਮਿਲਦੀ ਹੈ।", "editPricing": "ਕੀਮਤ ਸੋਧੋ", "viewFullDetails": "ਪੂਰਾ ਵੇਰਵਾ ਵੇਖੋ", - "themeCoral": "Coral", + "themeCoral": "ਮੂੰਗਾ", "adaptiveVolumeRouting": "ਅਨੁਕੂਲਨਸ਼ੀਲ ਵਾਲਿਊਮ ਰੂਟਿੰਗ", "adaptiveVolumeRoutingDesc": "ਪੇਲੋਡ ਵਾਲਿਊਮ ਅਤੇ ਥਰੂਪੁੱਟ ਦਬਾਅ ਦੇ ਆਧਾਰ 'ਤੇ ਕਨੈਕਸ਼ਨਾਂ ਨੂੰ ਗਤੀਸ਼ੀਲ ਢੰਗ ਨਾਲ ਸਕੇਲ ਕਰੋ।", "lkgpToggleTitle": "ਆਖਰੀ ਜਾਣਿਆ ਚੰਗਾ ਪ੍ਰਦਾਤਾ (LKGP)", @@ -7957,7 +7957,7 @@ "payloadRuleDefaultDesc": "ਪੈਰਾਮੀਟਰ ਕੇਵਲ ਉਦੋਂ ਲਾਗੂ ਕਰਦਾ ਹੈ ਜਦੋਂ ਨਿਸ਼ਾਨਾ ਪਾਥ ਬਾਹਰ ਜਾਣ ਵਾਲੇ ਪੇਲੋਡ ਵਿੱਚ ਮੌਜੂਦ ਨਾ ਹੋਵੇ।", "payloadRuleOverrideTitle": "ਓਵਰਰਾਈਡ", "payloadRuleOverrideDesc": "ਪੇਲੋਡ ਉੱਤੇ ਮੁੱਲ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਲਾਗੂ ਕਰਦਾ ਹੈ ਅਤੇ ਉਸ ਪਾਥ 'ਤੇ ਪਹਿਲਾਂ ਤੋਂ ਮੌਜੂਦ ਹਰ ਚੀਜ਼ ਨੂੰ ਬਦਲ ਦਿੰਦਾ ਹੈ।", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "ਫਿਲਟਰ", "payloadRuleFilterDesc": "ਅੱਪਸਟ੍ਰੀਮ ਬੇਨਤੀ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਪੇਲੋਡ ਵਿੱਚੋਂ ਬਲੌਕ ਕੀਤੇ ਪੈਰਾਮੀਟਰ ਹਟਾਉਂਦਾ ਹੈ।", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "default ਵਾਂਗ, ਪਰ ਜਦੋਂ ਸੰਭਵ ਹੋਵੇ ਤਾਂ ਸਟ੍ਰਿੰਗ ਮੁੱਲਾਂ ਨੂੰ ਪਹਿਲਾਂ JSON ਵਜੋਂ ਪਾਰਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਸੇਵ ਕਰਨ ਵੇਲੇ ਪੁਰਾਣਾ ਇਨਪੁੱਟ ਉਪਨਾਮ default-raw ਵੀ ਸਵੀਕਾਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।", @@ -8272,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge ਤਬਦੀਲ ਹੋ ਗਿਆ", "modalityBridgeMovedBody": "Vision Bridge ਦੀਆਂ ਸੈਟਿੰਗਾਂ ਹੁਣ ਸਮਰਪਿਤ Modality Bridge ਪੰਨੇ 'ਤੇ ਹਨ।", "modalityBridgeMovedCta": "Modality Bridge ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "ਆਡੀਓ ਬ੍ਰਿਜ", "modalityBridgeAudioDesc": "ਚੁਣੇ ਹੋਏ ਟੈਕਸਟ ਮਾਡਲ ਨਾਲ ਜਾਰੀ ਰੱਖਣ ਤੋਂ ਪਹਿਲਾਂ ਸਪੀਚ-ਟੂ-ਟੈਕਸਟ ਮਾਡਲ ਨਾਲ ਆਡੀਓ ਨੂੰ ਲਿਖਤ ਵਿੱਚ ਬਦਲੋ।", "modalityBridgeAudioEnabled": "Audio Bridge ਸਮਰੱਥ ਕਰੋ", "modalityBridgeAudioEnabledDesc": "ਜਦੋਂ ਟਾਰਗੇਟ ਮਾਡਲ ਆਡੀਓ ਨੂੰ ਪ੍ਰੋਸੈਸ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਤਾਂ ਆਡੀਓ ਭਾਗਾਂ ਨੂੰ ਲਿਖਤਾਂ ਨਾਲ ਬਦਲੋ।", @@ -8284,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge ਠੀਕ ਹੈ — {model} ਵੱਲੋਂ {count} ਕਲਿੱਪ ਲਿਖਤ ਵਿੱਚ ਬਦਲੇ ਗਏ", "modalityBridgeAudioTestNoop": "Audio Bridge ਸਰਗਰਮ ਨਹੀਂ ਹੋਇਆ (ਟਾਰਗੇਟ ਆਡੀਓ ਦਾ ਸਮਰਥਨ ਕਰ ਸਕਦਾ ਹੈ, ਕੋਈ STT ਪ੍ਰਦਾਤਾ ਕਨੈਕਟ ਨਹੀਂ ਹੈ, ਜਾਂ Bridge ਅਯੋਗ ਹੈ)", "modalityBridgeAudioTestError": "ਆਡੀਓ ਟੈਸਟ ਅਸਫਲ ਰਿਹਾ: {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "ਵੀਡੀਓ ਬ੍ਰਿਜ", "modalityBridgeVideoDesc": "ਵੀਡੀਓ ਫ੍ਰੇਮਾਂ ਦੇ ਨਮੂਨੇ ਲਓ, ਵਿਜ਼ਨ ਮਾਡਲ ਨਾਲ ਉਨ੍ਹਾਂ ਦਾ ਵਰਣਨ ਕਰੋ ਅਤੇ ਚੁਣੇ ਹੋਏ ਟੈਕਸਟ ਮਾਡਲ ਨਾਲ ਜਾਰੀ ਰੱਖੋ।", "modalityBridgeVideoRuntimeReady": "ਰਨਟਾਈਮ ਤਿਆਰ ਹੈ", "modalityBridgeVideoRuntimeChecking": "ਰਨਟਾਈਮ ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…", @@ -9104,8 +9104,8 @@ "cityDescription": "ਪੁੱਛਗਿੱਛ ਲਈ ਸ਼ਹਿਰ, ਉਦਾਹਰਨ ਵਜੋਂ 'Tokyo' ਜਾਂ 'New York'।" } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", + "openaiCompatibleLabel": "OpenAI ਅਨੁਕੂਲ", + "anthropicCompatibleLabel": "Anthropic ਅਨੁਕੂਲ", "noTemplateForFormat": "ਇਸ ਫਾਰਮੈਟ ਲਈ ਕੋਈ ਟੈਂਪਲੇਟ ਨਹੀਂ ਹੈ", "translationFailed": "ਅਨੁਵਾਦ ਅਸਫਲ ਰਿਹਾ: {error}", "pipelineDebugger": "ਪਾਈਪਲਾਈਨ ਡੀਬੱਗਰ", @@ -9343,7 +9343,7 @@ "evaluateStepDescription": "ਜਵਾਬਾਂ ਦੀ ਤੁਲਨਾ ਉਮੀਦ ਕੀਤੇ ਮਾਪਦੰਡਾਂ ਨਾਲ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਲੇਟੈਂਸੀ ਮੈਟ੍ਰਿਕਸ ਅਤੇ ਵਿਸਤ੍ਰਿਤ ਫੀਡਬੈਕ ਸਮੇਤ ਹਰ ਕੇਸ ਦਾ ਪਾਸ/ਫੇਲ ਦੇਖੋ।", "evalsStrategyContainsLabel": "ਸ਼ਾਮਲ ਹੈ", "evalsStrategyExactLabel": "ਬਿਲਕੁਲ ਮੇਲ", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "ਰੈਗੂਲਰ ਐਕਸਪ੍ਰੈਸ਼ਨ", "evalsStrategyCustomLabel": "ਕਸਟਮ ਲੌਜਿਕ", "evalsStrategyContainsDescription": "ਜਾਂਚਦਾ ਹੈ ਕਿ ਕੀ LLM ਆਉਟਪੁੱਟ ਵਿੱਚ ਉਮੀਦ ਕੀਤੀ ਸਬਸਟਰਿੰਗ ਸ਼ਾਮਲ ਹੈ।", "evalsStrategyExactDescription": "ਜਾਂਚਦਾ ਹੈ ਕਿ ਕੀ LLM ਆਉਟਪੁੱਟ ਉਮੀਦ ਕੀਤੇ ਮੁੱਲ ਨਾਲ ਬਿਲਕੁਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।", @@ -9523,9 +9523,9 @@ "suiteBuilderCloneSuffix": "ਕਾਪੀ ਕਰੋ", "suiteBuilderImportedSuite": "ਆਯਾਤ ਕੀਤਾ ਸੂਟ", "scorecardTitle": "ਸਕੋਰਕਾਰਡ", - "evalApiKey": "API Key", + "evalApiKey": "API ਕੁੰਜੀ", "scorecardPassRate": "ਪਾਸ ਦਰ", - "targetTypeModel": "Model", + "targetTypeModel": "ਮਾਡਲ", "actualOutputLabel": "ਅਸਲ ਆਉਟਪੁੱਟ", "evalTargetHint": "ਮੁਲਾਂਕਣ ਲਈ ਇੱਕ ਮਾਡਲ ਜਾਂ ਕੌਂਬੋ ਚੁਣੋ।", "suiteBuilderDeleted": "ਸੂਟ ਸਫਲਤਾਪੂਰਵਕ ਮਿਟਾਇਆ ਗਿਆ", @@ -9720,8 +9720,8 @@ "chooseAuthMethod": "ਆਪਣਾ ਪ੍ਰਮਾਣੀਕਰਨ ਢੰਗ ਚੁਣੋ:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", + "googleAccount": "Google ਖਾਤਾ", + "githubAccount": "GitHub ਖਾਤਾ", "importToken": "ਟੋਕਨ ਆਯਾਤ ਕਰੋ", "pasteToken": "Kiro IDE ਤੋਂ ਰਿਫ੍ਰੈਸ਼ ਟੋਕਨ ਪੇਸਟ ਕਰੋ।", "awsRegion": "AWS ਖੇਤਰ", @@ -10000,7 +10000,7 @@ "documentation": "ਦਸਤਾਵੇਜ਼", "npm": "NPM", "legal": "ਕਾਨੂੰਨੀ", - "mitLicense": "MIT License", + "mitLicense": "MIT ਲਾਇਸੈਂਸ", "footerTagline": "AI ਜਨਰੇਸ਼ਨ ਲਈ ਏਕੀਕ੍ਰਿਤ ਐਂਡਪੌਇੰਟ। ਆਪਣੇ AI ਪ੍ਰਦਾਤਾਵਾਂ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਕਨੈਕਟ, ਰੂਟ ਅਤੇ ਪ੍ਰਬੰਧਿਤ ਕਰੋ।", "copyright": "© {year} OmniRoute. ਸਾਰੇ ਅਧਿਕਾਰ ਰਾਖਵੇਂ ਹਨ।", "flowToolClaudeCode": "Claude Code", @@ -10403,7 +10403,7 @@ "flowDiagramCli": "CLI ਏਜੰਟ", "flowDiagramCliDesc": "ਆਪਣੇ ਪ੍ਰਮਾਣੀਕਰਨ/ਮਾਡਲ ਨਾਲ ਪ੍ਰੋਸੈਸ ਕਰਦਾ ਹੈ", "fingerprintSettingsHint": "CLI ਫਿੰਗਰਪ੍ਰਿੰਟ ਮੈਚਿੰਗ (ਬੇਨਤੀਆਂ ਨੂੰ ਖਾਸ CLI ਟੂਲਾਂ ਵਾਂਗ ਦਿਖਾਉਣਾ) ਨੂੰ ਇੱਥੇ ਸੰਰਚਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:", - "settingsRoutingLink": "Settings/Routing", + "settingsRoutingLink": "ਸੈਟਿੰਗਾਂ/ਰੂਟਿੰਗ", "openSettings": "ਸੈਟਿੰਗਾਂ", "copyRawUrlTitle": "ਕੱਚਾ URL ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰੋ", "copied": "ਕਾਪੀ ਹੋ ਗਿਆ!", @@ -10442,7 +10442,7 @@ "noTasksTitle": "ਹਾਲੇ ਕੋਈ ਟਾਸਕ ਨਹੀਂ ਹੈ", "noTasksDesc": "ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਆਪਣਾ ਪਹਿਲਾ ਟਾਸਕ ਬਣਾਓ।", "tasksTab": "ਟਾਸਕ", - "agentsTab": "Agents", + "agentsTab": "ਏਜੰਟ", "settingsTab": "ਸੈਟਿੰਗਾਂ", "agentsEnabled": "ਸਮਰੱਥ", "agentsDisabled": "ਅਸਮਰੱਥ", @@ -10702,7 +10702,7 @@ "password": "ਪਾਸਵਰਡ", "passwordPlaceholder": "ਪਾਸਵਰਡ", "connected": "ਕਨੈਕਟ ਹੈ", - "ip": "IP:", + "ip": "ਆਈਪੀ:", "connectionFailed": "ਕਨੈਕਸ਼ਨ ਅਸਫਲ ਰਿਹਾ", "testConnection": "ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰੋ", "clear": "ਸਾਫ਼ ਕਰੋ", @@ -10968,9 +10968,9 @@ "strategyLatency": "ਲੇਟੈਂਸੀ-ਅਨੁਕੂਲਿਤ", "poolMembersLabel": "ਪੂਲ ਮੈਂਬਰ ({count})", "poolNoMembers": "ਇਸ ਪੂਲ ਵਿੱਚ ਹਾਲੇ ਕੋਈ ਪ੍ਰੌਕਸੀ ਨਹੀਂ ਹੈ।", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{connections, plural, one {# ਕਨੈਕਸ਼ਨ} other {# ਕਨੈਕਸ਼ਨਾਂ}} ਵੱਲੋਂ ਵਰਤੇ ਗਏ {exits, plural, one {# ਨਿਕਾਸ} other {# ਨਿਕਾਸ}} · ਇੱਕ ਨਿਕਾਸ 'ਤੇ ਵੱਧ ਤੋਂ ਵੱਧ {max} · ਪਿਛਲੇ {hours} ਘੰਟੇ", + "poolEgressObservationEmpty": "ਪਿਛਲੇ {hours} ਘੰਟਿਆਂ ਵਿੱਚ ਕੋਈ ਟ੍ਰੈਫ਼ਿਕ ਨਹੀਂ ਦੇਖਿਆ ਗਿਆ", + "poolEgressObservationHint": "ਇਸ ਸਮਾਂ-ਵਿੰਡੋ ਦੌਰਾਨ ਪ੍ਰੌਕਸੀ ਲੌਗ ਤੋਂ ਗਿਣਤੀ ਕੀਤੀ ਗਈ ਹੈ: ਇਸ ਪੂਲ ਦੇ ਮੈਂਬਰਾਂ ਲਈ ਦੇਖੇ ਗਏ ਵੱਖ-ਵੱਖ ਈਗ੍ਰੈੱਸ IP ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਵਰਤਣ ਵਾਲੇ OmniRoute ਕਨੈਕਸ਼ਨ। \"ਇੱਕ ਨਿਕਾਸ 'ਤੇ\" ਦਾ ਮਤਲਬ ਇਸ ਸਮਾਂ-ਵਿੰਡੋ ਦੌਰਾਨ ਹੈ, ਇੱਕੋ ਸਮੇਂ ਨਹੀਂ। ਪ੍ਰਤੀ-IP 429 ਲੌਕਆਉਟ ਸਿਰਫ਼ ਉਸੇ ਪ੍ਰਦਾਤਾ ਪਰਿਵਾਰ ਦੇ ਕਨੈਕਸ਼ਨਾਂ ਨੂੰ ਰੋਕਦਾ ਹੈ।", "poolRemove": "ਹਟਾਓ", "poolRemoveFailed": "ਪੂਲ ਵਿੱਚੋਂ ਪ੍ਰੌਕਸੀ ਹਟਾਉਣ ਵਿੱਚ ਅਸਫਲ", "poolAddLabel": "ਇੱਕ ਪ੍ਰੌਕਸੀ ਜੋੜੋ", @@ -11289,7 +11289,7 @@ "refresh": "ਰਿਫ੍ਰੈਸ਼ ਕਰੋ", "columnsLabel": "ਕਾਲਮ", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "ਚਾਲੂ", "semantic": "ਸਿਮੈਂਟਿਕ", "upstream": "ਅੱਪਸਟ੍ਰੀਮ", "semanticCacheHit": "ਸਿਮੈਂਟਿਕ ਕੈਸ਼ ਹਿੱਟ (OmniRoute ਵੱਲੋਂ ਪ੍ਰਦਾਨ ਕੀਤਾ ਗਿਆ)", @@ -11388,7 +11388,7 @@ "endedAt": "ਸਮਾਪਤ ਹੋਣ ਦਾ ਸਮਾਂ", "duration": "ਮਿਆਦ", "model": "ਮਾਡਲ", - "provider": "Provider", + "provider": "ਪ੍ਰਦਾਤਾ", "account": "ਖਾਤਾ", "input": "ਇਨਪੁੱਟ", "totalIn": "ਕੁੱਲ ਇਨ: {value}", @@ -11438,7 +11438,7 @@ "colTls": "TLS", "colType": "ਕਿਸਮ", "colLevel": "ਪੱਧਰ", - "colProvider": "Provider", + "colProvider": "ਪ੍ਰਦਾਤਾ", "colTarget": "ਟੀਚਾ", "colLatency": "ਲੇਟੈਂਸੀ", "colClientIp": "ਕਲਾਇੰਟ IP", @@ -11679,7 +11679,7 @@ "endpointsCollapse": "ਸਮੇਟੋ", "endpointsExpand": "ਫੈਲਾਓ", "endpointsAnthropicNote": "Anthropic-ਨੇਟਿਵ", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsResponsesNote": "OpenAI ਜਵਾਬ — codex/github", "endpointsWsNote": "WebSocket — ਸਿਰਫ਼ codex", "betaText": "ਕੋਟਾ ਸਾਂਝਾਕਰਨ ਕਾਰਜਸ਼ੀਲ ਹੈ, ਪਰ ਬੱਗ ਹੋਣ ਦੀ ਸੰਭਾਵਨਾ ਹੈ। ਕੋਈ ਮਿਲਿਆ? ਕਿਰਪਾ ਕਰਕੇ ਇਸਦੀ ਰਿਪੋਰਟ ਕਰੋ।", "betaReportLink": "ਸਮੱਸਿਆ ਦੀ ਰਿਪੋਰਟ ਕਰੋ", @@ -12064,7 +12064,7 @@ "resumeBtn": "ਮੁੜ ਸ਼ੁਰੂ ਕਰੋ", "clearBtn": "ਸਾਫ਼ ਕਰੋ", "exportHar": ".har ਐਕਸਪੋਰਟ ਕਰੋ", - "recordSession": "REC", + "recordSession": "ਰਿਕਾਰਡ", "stopSession": "ਰੋਕੋ", "liveBadge": "ਲਾਈਵ", "offlineBadge": "ਆਫ਼ਲਾਈਨ", @@ -12240,8 +12240,8 @@ "category": "ਕਿਸਮ", "detectionStatus": "ਪਛਾਣ", "configStatus": "ਸੰਰਚਨਾ", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "ਮੂਲ URL", + "apiKeyLabel": "API ਕੁੰਜੀ", "modelMappingLabel": "ਮਾਡਲ ਮੈਪਿੰਗ", "noActiveProviders": "ਕੋਈ ਸਰਗਰਮ ਪ੍ਰਦਾਤਾ ਨਹੀਂ ਹੈ।", "noActiveProvidersDesc": "CLI ਨੂੰ ਸੰਰਚਿਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਘੱਟੋ-ਘੱਟ 1 ਪ੍ਰਦਾਤਾ ਕਨੈਕਟ ਕਰਨ ਲਈ Providers 'ਤੇ ਜਾਓ।", @@ -12253,7 +12253,7 @@ "pageSubtitle": "OmniRoute ਵੱਲ ਸੰਕੇਤ ਕਰਦੇ ਕੋਡ ਟੂਲ", "searchPlaceholder": "CLI ਖੋਜੋ…", "filterDetectionLabel": "ਪਛਾਣ", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "ਮੂਲ URL", "detectionAll": "ਸਾਰੇ", "detectionInstalled": "ਇੰਸਟਾਲ ਕੀਤੇ", "detectionNotFound": "ਨਹੀਂ ਮਿਲੇ", @@ -12523,7 +12523,7 @@ "storage": { "label": "ਸਟੋਰੇਜ", "agent": "ਡਾਇਨਾਮਿਕ ਕੈਟਾਲਾਗ (/api/agent-skills) → GitHub 'ਤੇ SKILL.md", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / ਸਥਾਨਕ)" }, "tagline": { "label": "ਟੈਗਲਾਈਨ", @@ -12542,7 +12542,7 @@ "categoryConfig": "ਕੌਂਫਿਗ", "filterAll": "ਸਾਰੇ", "coverageLabel": "ਕਵਰੇਜ", - "mcpUrl": "MCP URL", + "mcpUrl": "MCP ਯੂਆਰਐਲ", "a2aLink": "A2A", "mcpPrompt": "ਆਪਣੇ ਏਜੰਟ ਨੂੰ 37 OmniRoute ਟੂਲ ਦੇਣ ਲਈ ਇਹ MCP ਐਂਡਪੌਇੰਟ ਸ਼ਾਮਲ ਕਰੋ।", "a2aPrompt": "A2A ਟਾਸਕ ਡੈਲੀਗੇਸ਼ਨ ਸਮਰੱਥ ਕਰਨ ਲਈ ਇਸ Agent Card ਨੂੰ ਆਪਣੇ ਆਰਕੈਸਟਰੇਟਰ ਨਾਲ ਰਜਿਸਟਰ ਕਰੋ।", @@ -12854,7 +12854,7 @@ "network": "ਨੈੱਟਵਰਕ", "policies": "ਨੀਤੀਆਂ", "runtime": "ਰਨਟਾਈਮ", - "cli": "CLI", + "cli": "ਕਮਾਂਡ ਲਾਈਨ ਇੰਟਰਫੇਸ", "health": "ਸਿਹਤ", "requiresRestart": "ਮੁੜ ਚਾਲੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ" }, @@ -12992,7 +12992,7 @@ "description": "ਬਾਈਟਾਂ ਦੇ ਕਲਾਇੰਟ ਤੱਕ ਪਹੁੰਚ ਜਾਣ ਤੋਂ ਬਾਅਦ ਵੀ ਸਟ੍ਰੀਮ ਰਿਕਵਰੀ ਨੂੰ ਜਵਾਬ ਦੁਬਾਰਾ ਮੰਗਣ ਅਤੇ ਉਸਨੂੰ ਜੋੜਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ।" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "ਮੱਧ-ਸਟ੍ਰੀਮ ਜਾਰੀਕਰਨ ਨੂੰ ਟੂਲ-ਕਾਲ ਲਈ ਸੁਰੱਖਿਅਤ ਬਣਾਓ: ਟੂਲ-ਕਾਲ ਭੇਜੇ ਜਾਣ ਤੋਂ ਬਾਅਦ ਕਦੇ ਵੀ ਕੱਟੀ ਹੋਈ ਸਟ੍ਰੀਮ ਨੂੰ ਮੁੜ ਸ਼ੁਰੂ ਨਾ ਕਰੋ (ਭਾਵੇਂ ਇਹ ਹਾਲੇ ਜਾਰੀ ਹੋਵੇ ਜਾਂ ਪਹਿਲਾਂ ਹੀ ਮੁਕੰਮਲ ਹੋ ਚੁੱਕੀ ਹੋਵੇ), ਅਤੇ ਪੂਰਾ ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਬਜਟ ਵਰਤਣ ਦੀ ਬਜਾਏ ਇੱਕ ਖਾਲੀ ਜਾਰੀਕਰਨ ਤੋਂ ਬਾਅਦ ਰੁਕ ਜਾਓ।" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "ਜਦੋਂ ਸਟ੍ਰੀਮ ਕੋਈ ਉਪਯੋਗੀ ਫ੍ਰੇਮ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਬੰਦ ਹੋ ਜਾਵੇ ਅਤੇ ਉਸੇ ਕਨੈਕਸ਼ਨ 'ਤੇ ਸੀਮਤ ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਖਤਮ ਹੋ ਜਾਵੇ, ਤਾਂ ਇੱਕ ਵਾਰ ਸਹੋਦਰ ਕਨੈਕਸ਼ਨ 'ਤੇ ਫੇਲਓਵਰ ਕਰੋ। ਵਰਤੋਂਯੋਗ ਸਹੋਦਰ ਕਨੈਕਸ਼ਨ ਨਾ ਹੋਣ 'ਤੇ ਮੂਲ early-EOF ਗਲਤੀ ਵਾਪਸ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਬੰਦ: ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਤੋਂ ਬਾਅਦ early-EOF ਅੰਤਿਮ ਰਹਿੰਦਾ ਹੈ।" @@ -13035,12 +13035,12 @@ "description": "ਸਰਵਰ-ਮਲਕੀਅਤ ਵਾਲੀਆਂ ਗੈਰ-ਸਟ੍ਰੀਮਿੰਗ ਟੂਲ ਕਾਲਾਂ ਨੂੰ ਉਦੋਂ ਤੱਕ ਜਾਰੀ ਰੱਖੋ ਜਦੋਂ ਤੱਕ ਮਾਡਲ ਕਲਾਇੰਟ ਲਈ ਵਰਤਣਯੋਗ ਜਵਾਬ ਨਾ ਦੇਵੇ।" }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After ਦਾ ਮੂਲ", + "description": "ਇਕੱਠੇ ਕੀਤੇ 429/503 ਅਣਉਪਲਬਧ ਜਵਾਬਾਂ ਉੱਤੇ, ਜਦੋਂ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਦਾ ਕੋਈ ਠੋਸ ਭਵਿੱਖੀ ਸਮਾਂ ਪਤਾ ਨਾ ਹੋਵੇ ਤਾਂ ਬਣਾਵਟੀ 1s ਭੇਜਣ ਦੀ ਬਜਾਏ Retry-After ਨੂੰ ਛੱਡ ਦਿਓ, error.retry_after_provenance ਸ਼ਾਮਲ ਕਰੋ, ਅਤੇ combo drain ਪਾਥਾਂ ਉੱਤੇ ਗੱਦ-ਰੂਪੀ ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਸੰਕੇਤ ਪੜ੍ਹੋ।" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "ਸੁਰੱਖਿਅਤ-ਤਰਜੀਹ ਵਾਲਾ ਬੁਨਿਆਦੀ ਢਾਂਚਾ 502 ਵਜੋਂ ਰੁਕ ਜਾਂਦਾ ਹੈ", + "description": "ਜਦੋਂ ਸਿਰਫ਼-ਕੋਟਾ-ਫਾਲਬੈਕ ਤਰਜੀਹੀ ਟਾਰਗੇਟ ਕਿਸੇ ਅਜਿਹੇ ਕਾਰਨ ਕਰਕੇ ਕੌਂਬੋ ਨੂੰ ਰੋਕਦਾ ਹੈ ਜੋ ਸਾਬਤ ਤੌਰ 'ਤੇ ਕੋਟਾ ਨਹੀਂ ਹੈ, ਤਾਂ 503 ਦੀ ਬਜਾਏ 502 ਨਾਲ ਜਵਾਬ ਦਿਓ: ਇੱਕ ਖੁੱਲ੍ਹਾ ਪ੍ਰਦਾਤਾ ਸਰਕਿਟ ਬ੍ਰੇਕਰ ਜਾਂ ਪੂਰਵ-ਅਨੁਮਾਨਿਤ ਲੇਟੈਂਸੀ ਸਕਿਪ।" } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "ਕੌਂਬੋ ਦੀ ਸਿਹਤ", "callLogs": "ਕਾਲ ਲੌਗ", "costs": "ਲਾਗਤਾਂ", - "playground": "Playground", + "playground": "ਪਲੇਗ੍ਰਾਊਂਡ", "nestedCombo": "ਨੇਸਟਡ ਕੌਂਬੋ", "modelTarget": "ਮਾਡਲ ਟਾਰਗੇਟ", "weight": "{value}% ਭਾਰ", @@ -13308,7 +13308,7 @@ "name": "ਨਾਮ", "description": "ਵੇਰਵਾ", "scopeLabel": "ਦਾਇਰਾ", - "apiKey": "API key", + "apiKey": "API ਕੁੰਜੀ", "sourceCombo": "ਸਰੋਤ ਕੌਂਬੋ", "connection": "ਕਨੈਕਸ਼ਨ", "sourceModel": "ਸਰੋਤ ਮਾਡਲ ਜਾਂ ਵਾਈਲਡਕਾਰਡ", @@ -13358,7 +13358,7 @@ } }, "chaosConfig": { - "pageTitle": "Chaos Mode", + "pageTitle": "ਅਵਿਵਸਥਾ ਮੋਡ", "pageSubtitle": "ਇੱਕੋ ਕੰਮ 'ਤੇ ਕਈ AI ਮਾਡਲਾਂ ਨੂੰ ਸਮਾਂਤਰ ਜਾਂ ਸਹਿਯੋਗੀ ਢੰਗ ਨਾਲ ਚਲਾਓ", "enableChaos": "Chaos Mode ਸਮਰੱਥ ਕਰੋ", "enableChaosDesc": "Chaos Mode ਸਮਰੱਥ ਕੀਤੀਆਂ API ਕੁੰਜੀਆਂ ਨੂੰ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਤਣ ਦੀ ਆਗਿਆ ਦਿਓ", @@ -13609,7 +13609,7 @@ "remaining": "ਬਾਕੀ", "noLockouts": "ਕੋਈ ਸਰਗਰਮ ਲਾਕਆਊਟ ਨਹੀਂ", "provider": "ਪ੍ਰਦਾਤਾ", - "id": "ID", + "id": "ਆਈਡੀ", "authType": "ਪ੍ਰਮਾਣੀਕਰਨ ਕਿਸਮ", "priority": "ਤਰਜੀਹ", "isActive": "ਸਰਗਰਮ", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "ਜਦੋਂ ਟਾਰਗੇਟ ਮਾਡਲ ਵਿੱਚ ਲੋੜੀਂਦੀਆਂ ਸਮਰੱਥਾਵਾਂ (ਵਿਜ਼ਨ, ਟੂਲ, ਸਟ੍ਰਕਚਰਡ ਆਉਟਪੁੱਟ, ਕਾਂਟੈਕਸਟ ਵਿੰਡੋ) ਨਾ ਹੋਣ, ਤਾਂ ਡਿਸਪੈਚ ਤੋਂ ਪਹਿਲਾਂ ਬੇਨਤੀਆਂ ਅਸਵੀਕਾਰ ਕਰੋ। ਇਹ ਉਹਨਾਂ ਸਿੱਧੀਆਂ ਸਿੰਗਲ-ਪ੍ਰੋਵਾਈਡਰ ਬੇਨਤੀਆਂ ਦੀ ਸੁਰੱਖਿਆ ਕਰਦਾ ਹੈ ਜੋ ਕੌਂਬੋ-ਲੇਅਰ ਅਨੁਕੂਲਤਾ ਫਿਲਟਰ ਨੂੰ ਬਾਈਪਾਸ ਕਰਦੀਆਂ ਹਨ।", "featureFlagDisableContextWindowChecksDescription": "ਸਿੱਧੀਆਂ ਸਿੰਗਲ-ਮਾਡਲ ਬੇਨਤੀਆਂ ਲਈ OmniRoute ਦੀ ਸਥਾਨਕ ਕਾਂਟੈਕਸਟ-ਵਿੰਡੋ ਅਤੇ ਅਧਿਕਤਮ-ਇਨਪੁੱਟ-ਟੋਕਨ ਜਾਂਚ ਨੂੰ ਛੱਡੋ। ਅੱਪਸਟ੍ਰੀਮ ਪ੍ਰੋਵਾਈਡਰ ਫਿਰ ਵੀ ਆਪਣੀਆਂ ਅਸਲ ਸੀਮਾਵਾਂ ਲਾਗੂ ਕਰਦੇ ਹਨ। ਪ੍ਰੌਂਪਟ ਕੰਪ੍ਰੈਸ਼ਨ ਅਤੇ ਆਉਟਪੁੱਟ-ਟੋਕਨ ਸੀਮਾਵਾਂ ਸਰਗਰਮ ਰਹਿੰਦੀਆਂ ਹਨ।", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "ਖੋਜ ਅੰਕੜੇ ਅਤੇ ਹਾਲੀਆ ਖੋਜਾਂ ਸਿਰਫ਼ ਉਹਨਾਂ ਪ੍ਰਦਾਤਾਵਾਂ ਨੂੰ ਗਿਣਦੀਆਂ ਹਨ ਜਿਨ੍ਹਾਂ ਦਾ ਕਨੈਕਸ਼ਨ ਅਜੇ ਵੀ ਸਰਗਰਮ ਹੈ (ਕੁੰਜੀ-ਰਹਿਤ ਪ੍ਰਦਾਤਾ, ਜਿਵੇਂ ਕਿ duckduckgo-free, ਹਮੇਸ਼ਾ ਗਿਣੇ ਜਾਂਦੇ ਹਨ)। ਬੰਦ ਕਰਨ ਨਾਲ ਪ੍ਰਦਾਤਾ ID ਵਾਲੀ ਹਰ ਸੰਭਾਲੀ ਹੋਈ ਖੋਜ ਕਤਾਰ ਬਰਕਰਾਰ ਰਹਿੰਦੀ ਹੈ।", "publicSystem": { "notFound": { "title": "ਪੰਨਾ ਨਹੀਂ ਮਿਲਿਆ", @@ -13795,7 +13795,7 @@ "kiroAuthModal": { "title": "{providerLabel} ਨਾਲ ਕਨੈਕਟ ਕਰੋ", "chooseMethod": "ਆਪਣਾ ਪ੍ਰਮਾਣੀਕਰਨ ਤਰੀਕਾ ਚੁਣੋ:", - "builderId": "AWS Builder ID", + "builderId": "AWS ਬਿਲਡਰ ID", "builderDescription": "ਜ਼ਿਆਦਾਤਰ ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਸਿਫ਼ਾਰਸ਼ੀ। {providerLabel} ਨਾਲ ਲਿੰਕ ਕੀਤੇ AWS ਖਾਤੇ ਰਾਹੀਂ ਸਾਈਨ ਇਨ ਕਰੋ।", "organization": "ਤੁਹਾਡੀ ਸੰਸਥਾ (AWS IAM Identity Center)", "organizationDescription": "ਆਪਣੀ ਕੰਪਨੀ ਦਾ SSO ਸ਼ੁਰੂਆਤੀ URL ਵਰਤੋ (ਉਦਾਹਰਨ: {url})।", @@ -13978,7 +13978,7 @@ "runners": "ਰਨਰ", "tasks": "ਟਾਸਕ", "colName": "ਨਾਮ", - "colClis": "CLIs", + "colClis": "ਕਮਾਂਡ-ਲਾਈਨ ਇੰਟਰਫੇਸਾਂ", "colStatus": "ਸਥਿਤੀ", "colTask": "ਟਾਸਕ", "colMode": "ਮੋਡ", @@ -14051,9 +14051,9 @@ "filterSources": "ਸਰੋਤ", "filterProviders": "ਪ੍ਰਦਾਤਾ", "clearFilters": "ਫਿਲਟਰ ਸਾਫ਼ ਕਰੋ", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "ਕਲਾਉਡ ਏਜੰਟ", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "ਕੰਡਕਟਰ", "sourceStale": "{since} ਤੋਂ ਪੁਰਾਣਾ", "sourceOffline": "ਆਫ਼ਲਾਈਨ", "sourceCollapse": "ਸਮੇਟੋ", @@ -14120,7 +14120,7 @@ "trialDays": "{days, plural, one {# ਦਿਨ} other {# ਦਿਨ}}" }, "radarIntelPage": { - "title": "Radar Intel", + "title": "ਰਾਡਾਰ ਜਾਣਕਾਰੀ", "subtitle": "Radar ਦੀ ਮਲਕੀਅਤ ਵਾਲੀਆਂ ELO ਦਰਜਾਬੰਦੀਆਂ ਅਤੇ ਤੱਥ-ਆਧਾਰਿਤ ਕੈਟਾਲਾਗ ਤਬਦੀਲੀਆਂ।", "backToRadar": "Radar 'ਤੇ ਵਾਪਸ ਜਾਓ", "loading": "Intel ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...", diff --git a/src/i18n/messages/phi.json b/src/i18n/messages/phi.json index 6e219167e1..4f7ea29592 100644 --- a/src/i18n/messages/phi.json +++ b/src/i18n/messages/phi.json @@ -31,7 +31,7 @@ "active": "Aktibo", "inactive": "Hindi aktibo", "noData": "Walang available na data", - "nothingHere": "Nothing here yet", + "nothingHere": "Wala pa rito", "configure": "I-configure", "manualConfig": "Manual na config", "manage": "Pamahalaan", @@ -41,13 +41,13 @@ "type": "Uri", "model": "Modelo", "models": "mga modelo", - "provider": "Provider", + "provider": "Tagapagbigay", "unknownProvider": "Hindi kilalang provider", "account": "Account", "time": "Oras", "details": "Mga Detalye", "created": "Nilikha", - "lastUsed": "Last Refreshed", + "lastUsed": "Huling Na-refresh", "loadMore": "Mag-load ng Higit Pa", "noResults": "Walang nakitang resulta", "reloadPage": "I-reload ang Pahina", @@ -70,12 +70,12 @@ "note": "Tandaan", "free": "Libre", "skipToContent": "Lumaktaw sa nilalaman", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Nakakaranas ng mga problema ang server. Maaaring hindi available ang ilang feature.", + "maintenanceServerUnreachable": "Hindi maabot ang server. Muling kumokonekta...", "accept": "Tanggapin", - "accountId": "Account ID", + "accountId": "ID ng Account", "alias": "alyas", - "apiKeyId": "API Key ID", + "apiKeyId": "ID ng API Key", "apiKeyName": "Pangalan ng API Key", "apiKeySecret": "Lihim ng Key ng API", "authorization": "Awtorisasyon", @@ -100,32 +100,32 @@ "sortOrder": "Pagbukud-bukurin", "tab": "Tab", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "Lugar ng Teksto", + "tool": "Kasangkapan", + "toolId": "ID ng Tool", "web": "Web", "whereUsed": "Kung Saan Ginamit", - "whitelist": "Whitelist", - "blacklist": "Blacklist", + "whitelist": "Listahan ng Pinapayagan", + "blacklist": "Listahan ng Hinaharangan", "resolve": "Lutasin", "force": "Puwersa", "base64url": "Base64 URL", "hex": "Hex", "range": "Saklaw", - "component": "Component", + "component": "Bahagi", "redirect_uri": "I-redirect ang URI", "idempotency-key": "Idepotency Key", "error_description": "Paglalarawan ng Error", - "code": "Code", + "code": "Kodigo", "compatible": "Magkatugma", "chat-completions": "Mga Pagkumpleto ng Chat", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", + "auth_token": "Token sa Pag-authenticate", + "crypto": "Kripto", "hours": "Oras", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", + "proxy_id": "ID ng Proxy", + "proxyId": "ID ng Proxy", "connectionId": "ID ng Koneksyon", "resolveConnectionId": "Lutasin ang Connection ID", "resolve_connection_id": "Lutasin ang Connection ID", @@ -141,33 +141,33 @@ "idc": "IDC", "cloud-status-changed": "Nagbago ang status ng cloud", "where_used": "Kung Saan Ginamit", - "windowMs": "Window (ms)", + "windowMs": "Saklaw (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", + "TOOL_ALLOWLIST": "Listahan ng Mga Pinapayagang Tool", + "TOOL_DENYLIST": "Listahan ng Mga Ipinagbabawal na Tool", "Failed to save pricing": "Nabigong i-save ang pagpepresyo", "Failed to reset pricing": "Nabigong i-reset ang pagpepresyo", - "apikey": "API Key", + "apikey": "Susi ng API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Pumunta sa Dashboard", + "checkSystemStatus": "Tingnan ang Status ng System", + "selectModel": "Pumili ng Model", "addModel": "Magdagdag ng modelo", "effortNone": "Wala", "effortLow": "Mababa", "effortMedium": "Katamtaman", "effortHigh": "Mataas", "effortExtraHigh": "Napakataas", - "effortMax": "Max", + "effortMax": "Pinakamataas", "effortUltra": "Ultra", "reasoningEffort": "Pagsisikap sa pangangatwiran", "wireApi": "Wire API", "modelAliases": "Mga alias ng modelo", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Mga Combo", + "noModelsFound": "Walang nakitang mga model", + "clear": "I-clear", + "done": "Tapos na", "selectAll": "Piliin lahat", "unselectAll": "Alisin ang pagkakapili", "visibleModels": "nakikita", @@ -184,533 +184,533 @@ "selectAllProviders": "Suriin ang lahat ng mga provider", "clearProviderSelection": "Huwag i-check ang mga provider", "providersSelectedCount": "{count} mga tagapagbigay na sinuri", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Nagkaroon ng Error", + "comboDeleted": "Tinanggal ang Combo", + "hide": "Itago", + "creating": "Ginagawa", + "comboCreated": "Nagawa ang Combo", + "swapFormats": "Pagpalitin ang mga Format", + "daysAgo": "Mga Araw ang Nakalipas", + "retries": "Mga Muling Pagsubok", + "errorDuringRestore": "Error Habang Nagre-restore", + "eventsAppearHint": "Pahiwatig sa Paglitaw ng mga Event", + "noLockouts": "Walang Lockout", + "webSearchDesc": "Paglalarawan ng Paghahanap sa Web", + "audioProvidersHeading": "Heading ng mga Audio Provider", "cloudAgentProviders": "Mga Provider ng Cloud Agent", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Mga Minuto ang Nakalipas", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", + "liveAutoRefreshing": "Live na Awtomatikong Nire-refresh", + "webSearch": "Paghahanap sa Web", + "anthropicPrefixPlaceholder": "Placeholder ng Prefix ng Anthropic", + "addModelToCombo": "Idagdag ang Modelo sa Combo", + "failedToLoad": "Hindi Na-load", + "categoryMedia": "Kategorya ng Media", + "enableCloud": "Paganahin ang Cloud", + "expirationBannerExpiringSoon": "Banner ng Pag-expire: Malapit Nang Mag-expire", + "retry": "Subukang Muli", + "embeddings": "Mga Embedding", + "errorCount": "Bilang ng mga Error", + "backupReasonManual": "Dahilan ng Backup: Manu-mano", + "safeSearchModerate": "Katamtamang Ligtas na Paghahanap", + "activeLimiters": "Mga Aktibong Limiter", + "a2aCardTitle": "Pamagat ng A2A Card", + "cloudWorkerUnreachable": "Hindi Maabot ang Cloud Worker", + "testFailed": "Nabigo ang Pagsubok", + "compatibleBaseUrlHint": "Pahiwatig sa Compatible na Base URL", + "usageTracking": "Pagsubaybay sa Paggamit", + "disableCloudTitle": "Pamagat ng Pag-disable sa Cloud", + "noConnections": "Walang Koneksyon", + "providerHealth": "Kalagayan ng Provider", + "confirmDbImport": "Kumpirmahin ang Pag-import ng DB", + "notAvailableSymbol": "Simbolo ng Hindi Available", + "backupsAvailable": "Mga Available na Backup", + "providerAuto": "Awtomatikong Provider", + "newProviderNamePlaceholder": "Placeholder ng Pangalan ng Bagong Provider", + "a2aQuickStartStep2": "A2A Mabilisang Pagsisimula, Hakbang 2", + "ok": "OK", + "available": "Magagamit", + "noBackupYet": "Wala Pang Backup", + "more": "Higit Pa", + "noCompatibleYet": "Wala Pang Compatible", + "multiProvider": "Maramihang Provider", + "repairEnvHint": "Pahiwatig sa Pag-ayos ng Env", + "disablingCloud": "Hindi Pinapagana ang Cloud", + "testBench": "Lugar ng Pagsubok", + "valid": "Balido", + "cloudBenefitShare": "Pagbabahagi ng Benepisyo ng Cloud", + "mcpCardTitle": "Pamagat ng MCP Card", + "disableConfirm": "Kumpirmahin ang Hindi Pagpapagana", + "filters": "Mga Filter", + "expirationBannerExpiredDesc": "Paglalarawan ng Nag-expire na Banner", + "saveComboDefaults": "I-save ang mga Default ng Combo", + "cloudConnectedVerified": "Nakakonekta at Beripikado ang Cloud", + "uptime": "Oras ng Pagiging Aktibo", + "compatibleProdPlaceholder": "Placeholder para sa Compatible na Prod", + "fallbackChainsTitle": "Pamagat ng mga Fallback Chain", + "oauthLabel": "Label ng OAuth", + "a2aCardDescription": "Paglalarawan ng A2A Card", + "okShort": "OK", + "maintenance": "Pagmamantini", + "formatConverter": "Converter ng Format", + "zedImportNetworkError": "Error sa Network sa Pag-import ng Zed", + "apiKeyLabel": "Label ng API Key", + "noModelsForProvider": "Walang Modelo para sa Provider", + "mcpCardDescription": "Paglalarawan ng MCP Card", + "apiTypeLabel": "Label ng Uri ng API", + "configuredProvidersLabel": "Label ng mga Naka-configure na Provider", + "maxRetriesLabel": "Label ng Maximum na Bilang ng Pagsubok Muli", + "title": "Pamagat", "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", + "prefixHint": "Pahiwatig sa Prefix", + "skipWizard": "Laktawan ang Wizard", + "failedCount": "Bilang ng Nabigo", + "confirmDbImportDesc": "Paglalarawan ng Pagkumpirma sa Pag-import ng DB", + "entries": "Mga Entry", + "until": "Hanggang", + "disableCombo": "Huwag Paganahin ang Combo", + "liveMonitorDescriptionPrefix": "Prefix ng Paglalarawan ng Live Monitor", + "runningCount": "Bilang ng Tumatakbo", + "noActiveConnectionsInGroup": "Walang Aktibong Koneksyon sa Grupo", + "savedSuccessfully": "Matagumpay na Na-save", + "systemStorage": "Storage ng System", + "videoDesc": "Paglalarawan ng Video", + "maxResults": "Pinakamaraming Resulta", + "timeRangeMonth": "Saklaw ng Oras: Buwan", + "testSummary": "Buod ng Pagsubok", + "failedSetPassword": "Hindi Maitakda ang Password", "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "restore": "I-restore", + "disableWarning": "I-disable ang Babala", + "moderationsDesc": "Paglalarawan ng Mga Moderasyon", + "providerHealthStatusAria": "ARIA ng Katayuan ng Provider", + "modelNamePlaceholder": "Placeholder ng Pangalan ng Model", + "mcpQuickStartStep2": "Hakbang 2 ng Mabilisang Pagsisimula ng Mcp", + "quickStart": "Mabilisang Pagsisimula", + "fullExportFailedWithError": "Nabigo ang Buong Pag-export Dahil sa Error", + "loadingBackups": "Nilo-load ang Mga Backup", + "anthropicBaseUrlPlaceholder": "Placeholder ng Anthropic Base URL", + "description": "Paglalarawan", + "noProviderFound": "Walang Nahanap na Provider", + "auto": "Awtomatiko", + "protocolsDescription": "Paglalarawan ng Mga Protocol", + "cloudSessionNote": "Tala sa Cloud Session", + "advancedSettings": "Mga Advanced na Setting", + "defaultStrategy": "Default na Estratehiya", + "purgeExpiredLogs": "I-purge ang Mga Nag-expire na Log", + "justNow": "Ngayon Lang", + "providerTestFailed": "Nabigo ang Pagsubok sa Provider", + "openaiBaseUrlPlaceholder": "Placeholder ng Openai Base URL", + "image": "Larawan", + "failedCreateChain": "Hindi Magawa ang Chain", + "importDatabase": "I-import ang Database", + "allDataLocal": "Lokal ang Lahat ng Data", + "sectionTitle": "Pamagat ng Seksyon", + "failedToggle": "Hindi Mailipat ang Toggle", + "editCombo": "I-edit ang Combo", + "testResults": "Mga Resulta ng Pagsubok", + "searchQuery": "Query sa Paghahanap", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", + "duplicate": "I-duplicate", + "createCombo": "Gumawa ng Combo", + "searchTypeWeb": "Uri ng Paghahanap: Web", + "addChain": "Magdagdag ng Chain", + "prefixLabel": "Label ng Prefix", + "listModelsDesc": "Paglalarawan ng Listahan ng mga Modelo", + "databaseSize": "Laki ng Database", + "chainCreated": "Nagawa na ang Chain", + "providerTestTimeout": "Timeout ng Pagsubok sa Provider", + "routingStrategy": "Diskarte sa Pag-route", + "translateAction": "Aksyon sa Pagsasalin", + "exportFailed": "Hindi Na-export", + "connectedVerificationPending": "Nakakonekta, Nakabinbin ang Beripikasyon", + "a2aQuickStartTitle": "Pamagat ng Mabilisang Pagsisimula sa A2A", + "couldNotTest": "Hindi Masubukan", + "testAllCompatible": "Subukan ang Lahat ng Compatible", + "anthropicCompatibleName": "Pangalan na Compatible sa Anthropic", + "disabling": "Dini-disable", + "failedEnable": "Hindi Na-enable", + "categoryUtility": "Kategorya ng Utility", + "customUrlOptional": "Custom URL (Opsyonal)", + "localProviders": "Mga Lokal na Provider", + "comboNamePlaceholder": "Placeholder ng Pangalan ng Combo", + "memoryRss": "RSS ng Memory", + "disableProvider": "I-disable ang Provider", + "welcomeDesc": "Paglalarawan ng Welcome", + "nameLabel": "Label ng Pangalan", + "allOperational": "Gumagana ang Lahat", + "backupNow": "Mag-backup Ngayon", + "providerMaxRetriesAria": "ARIA ng Pinakamaraming Retry ng Provider", + "textToSpeechDesc": "Paglalarawan ng Text to Speech", + "machineId": "ID ng Machine", + "globalProxy": "Pangkalahatang Proxy", + "hitsMisses": "Mga Hit at Miss", + "testDesc": "Paglalarawan ng Pagsubok", + "chatDesc": "Paglalarawan ng Chat", + "importSuccess": "Matagumpay na Na-import", "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "a2aQuickStartStep1": "Hakbang 1 ng Mabilisang Pagsisimula sa A2A", + "importFailed": "Hindi Na-import", + "inputPlaceholder": "Placeholder ng Input", + "providerModelsTitle": "Pamagat ng Mga Modelo ng Provider", + "lastBackup": "Huling Backup", + "yourEndpoint": "Iyong Endpoint", + "autoDisableThresholdDesc": "Paglalarawan ng Threshold para sa Awtomatikong Pag-disable", + "rerankDesc": "Paglalarawan ng Muling Pagraranggo", + "modelsPathPlaceholder": "Placeholder ng Path ng Mga Modelo", + "noCombosYet": "Wala Pang Mga Combo", + "connectedVerificationPendingWithError": "Nakakonekta, Nakabinbin ang Beripikasyon na May Error", + "comboDefaultsGuideHint1": "Hint 1 ng Gabay sa Mga Default ng Combo", + "enableCloudTitle": "Pamagat ng Pag-enable sa Cloud", + "configuredProvidersHint": "Hint sa Mga Naka-configure na Provider", + "paused": "Naka-pause", + "llmProviders": "Mga LLM Provider", + "enableCombo": "I-enable ang Combo", + "removeProviderOverrideAria": "ARIA para sa Pag-alis ng Override ng Provider", + "nodeVersion": "Bersyon ng Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Nabigo ang Pag-export na May Error", + "proxyConfigured": "Naka-configure ang Proxy", + "concurrencyPerModel": "Concurrency Bawat Modelo", + "protocolTasksLabel": "Label ng Mga Gawain ng Protocol", + "oauthProviders": "Mga OAuth Provider", + "lockedCount": "Bilang ng Mga Naka-lock", + "deleteChainConfirm": "Kumpirmasyon sa Pag-delete ng Chain", + "recentTranslations": "Mga Kamakailang Pagsasalin", + "zedImportButton": "Button sa Pag-import ng Zed", + "responsesDesc": "Paglalarawan ng Mga Tugon", + "testedCount": "Bilang ng Mga Nasubukan", + "providersCommaSeparatedPlaceholder": "Placeholder ng Mga Provider na Pinaghihiwalay ng Kuwit", + "signatureDefaults": "Mga Default ng Signature", + "errorCreating": "Error sa Paggawa", + "timeRangeYear": "Saklaw ng Oras: Taon", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Matagumpay na Na-disable ang Cloud", + "deleteConfirm": "Kumpirmasyon sa Pag-delete", + "check": "Suriin", + "safeSearch": "Ligtas na Paghahanap", + "protocolLastActivity": "Huling Aktibidad ng Protocol", + "openMcpDashboard": "Buksan ang Mcp Dashboard", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Label ng Path ng Chat", + "retryDelay": "Pagkaantala Bago Muling Subukan", + "errorUpdating": "Error sa Pag-update", + "ideCliIntegrations": "Mga Integrasyon ng IDE CLI", + "imageGeneration": "Pagbuo ng Larawan", + "apiKeyRequired": "Kinakailangan ang API Key", + "resetAllTitle": "I-reset Lahat ng Pamagat", + "connectionError": "Error sa Koneksyon", + "modelName": "Pangalan ng Modelo", + "apiKeyForCheck": "API Key para sa Pagsusuri", + "cloudRequestTimeout": "Timeout ng Cloud Request", + "showConfiguredOnly": "Ipakita Lamang ang mga Naka-configure", "showFreeOnly": "Libre lang", "addFirstProvider": "Idagdag ang iyong unang provider", "addFirstProviderDesc": "Ikonekta ang isang AI provider para simulan ang pagruruta ng mga kahilingan sa pamamagitan ng OmniRoute. Maaari kang gumamit ng mga libreng provider, API key, o OAuth account.", "learnMore": "Matuto pa", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Isama ang mga Domain", + "promptCache": "Cache ng Prompt", + "cloudConnected": "Nakakonekta sa Cloud", + "deleteChain": "Tanggalin ang Chain", + "chatPathPlaceholder": "Placeholder ng Chat Path", + "databasePath": "Path ng Database", + "usingLocalServer": "Gumagamit ng Lokal na Server", + "globalComboConfig": "Pandaigdigang Combo Config", + "backupFailed": "Nabigo ang Pag-backup", + "tabProtocols": "Mga Protocol ng Tab", + "continue": "Magpatuloy", + "categorySearch": "Paghahanap ng Kategorya", + "rateLimitStatus": "Status ng Rate Limit", + "repairEnvSuccess": "Matagumpay na Naayos ang Env", + "nameRequired": "Kinakailangan ang Pangalan", + "country": "Bansa", + "trackMetricsDesc": "Paglalarawan ng Pagsubaybay sa Metrics", + "durationSecondsShort": "Tagal sa Segundo (Maikli)", + "formatConverterDescription": "Paglalarawan ng Format Converter", + "cloudBenefitAccess": "Access sa mga Benepisyo ng Cloud", + "maxRetries": "Pinakamaraming Muling Pagsubok", + "queueTimeout": "Timeout ng Queue", "queueDepth": "Lalim ng Queue", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Magdagdag ng Provider", + "realtime": "Real-time", + "totalTranslations": "Kabuuang mga Salin", + "protocolActiveStreamsLabel": "Label ng mga Aktibong Stream ng Protocol", + "repairEnv": "Ayusin ang Env", + "modelsCount": "Bilang ng mga Modelo", + "viewBackups": "Tingnan ang mga Backup", + "responsesApi": "API ng Responses", + "copyComboName": "Kopyahin ang Pangalan ng Combo", + "failures": "Mga Pagkabigo", + "failedUpdate": "Nabigong Pag-update", + "imageDesc": "Paglalarawan ng Larawan", + "failedCreate": "Nabigong Gumawa", + "remainingOfLimit": "Natitira sa Limitasyon", + "protocolsTitle": "Pamagat ng Mga Protocol", + "expirationBannerExpiringSoonDesc": "Paglalarawan ng Banner na Malapit Nang Mag-expire", + "source": "Pinagmulan", + "failed": "Nabigo", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", + "mcpQuickStartStep1": "Unang Hakbang sa Mabilisang Pagsisimula ng Mcp", + "runTest": "Patakbuhin ang Pagsubok", + "loadingFallbackChains": "Nilo-load ang Mga Fallback Chain", + "healthy": "Maayos", + "version": "Bersyon", + "saveBlockWeighted": "I-save ang Naka-block na Weighted", + "zedImportNone": "Walang Mai-import mula sa Zed", + "noBackupsYet": "Wala Pang Mga Backup", + "noGlobalProxy": "Walang Pandaigdigang Proxy", + "noModels": "Walang Mga Modelo", + "stickyLimit": "Sticky na Limitasyon", + "passedCount": "Bilang ng mga Pumasa", + "zedImportFailed": "Nabigo ang Pag-import mula sa Zed", + "saving": "Sine-save", + "testAll": "Subukan Lahat", + "globalProxyDesc": "Paglalarawan ng Pandaigdigang Proxy", + "latencyP99": "Pagkaantala P99", + "connectingToCloud": "Kumokonekta sa Cloud", + "responses": "Mga Tugon", + "errorDeleting": "Error sa Pagtanggal", + "openaiPrefixPlaceholder": "Placeholder ng Openai Prefix", + "enterPassword": "Ilagay ang Password", + "openA2aDashboard": "Buksan ang A2A Dashboard", + "enableProvider": "I-enable ang Provider", + "modeTest": "Mode ng Pagsubok", + "failedDeleteChain": "Nabigong Tanggalin ang Chain", + "providerDesc": "Paglalarawan ng Provider", + "templateLoadHint": "Pahiwatig sa Pag-load ng Template", + "lastFailure": "Huling Pagkabigo", + "moveDown": "Ilipat Pababa", + "providerLabel": "Label ng Provider", + "clearCacheFailed": "Nabigong I-clear ang Cache", + "imagesGenerations": "Pagbuo ng mga Larawan", + "repairEnvWorking": "Gumagana ang Pag-aayos ng Env", + "millisecondsShort": "ms", + "globalLabel": "Pandaigdigang Label", + "failuresPlural": "Mga Pagkabigo", + "completionsLegacyDesc": "Paglalarawan ng Legacy na Completions", + "searchProviders": "Maghanap ng mga Provider", + "chatPathHint": "Pahiwatig sa Path ng Chat", + "defaultStrategyDesc": "Paglalarawan ng Default na Diskarte", + "latencyP95": "Pagkaantala P95", + "textToSpeech": "Teksto Patungong Pagsasalita", + "searchType": "Uri ng Paghahanap", + "messages": "Mga Mensahe", + "aggregatorsGateways": "Mga Aggregator at Gateway", + "comboStrategyAria": "ARIA ng Combo na Diskarte", "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", + "testingConnection": "Sinusubukan ang Koneksyon", + "excludeDomains": "Ibukod ang mga Domain", + "webCookieProviders": "Mga Provider ng Web Cookie", + "allTestsPassed": "Pumasa ang Lahat ng Pagsubok", + "openaiCompatibleName": "Pangalan ng OpenAI-Compatible", + "warningCostOptimizedPartialPricing": "Babala: Bahagyang Pagpepresyo na Na-optimize para sa Gastos", + "comboDefaultsGuideTitle": "Pamagat ng Gabay sa mga Default ng Combo", + "hoursAgo": "Oras ang Nakalipas", + "notAvailable": "Hindi Available", + "skipAndContinue": "Laktawan at Magpatuloy", + "moderations": "Mga Moderation", + "proxyConfig": "Configuration ng Proxy", + "upstreamProxyProviders": "Mga Provider ng Upstream Proxy", + "exportAll": "I-export Lahat", + "queuedCount": "Bilang na Nakapila", + "resetAll": "I-reset Lahat", + "noTranslations": "Walang mga Salin", + "avgLatency": "Average na Latency", + "throttleStatus": "Status ng Throttle", + "backupRetentionDesc": "Paglalarawan ng Pananatili ng Backup", + "noCBData": "Walang Data ng CB", + "chainDeleted": "Na-delete ang Chain", + "timeLeft": "Natitirang Oras", + "expirationBannerExpired": "Nag-expire na ang Banner ng Pag-expire", + "language": "Wika", + "invalidFileType": "Di-wastong Uri ng File", + "monitoredProviders": "Mga Minomonitor na Provider", + "errors": "Mga Error", "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "chatCompletions": "Mga Chat Completion", + "exampleTemplatesHint": "Pahiwatig sa mga Halimbawang Template", + "retryDelayLabel": "Label ng Pagkaantala Bago Subukang Muli", + "audioTranscription": "Transkripsyon ng Audio", + "fallbackChainsDesc": "Paglalarawan ng mga Fallback Chain", + "exampleTemplates": "Mga Halimbawang Template", + "connectionsCount": "Bilang ng mga Koneksyon", + "modelsPathLabel": "Label ng Path ng mga Model", + "activeProvidersHint": "Pahiwatig sa mga Aktibong Provider", + "activeLockouts": "Mga Aktibong Lockout", + "invalid": "Di-wasto", + "skipPassword": "Laktawan ang Password", + "moveUp": "Ilipat Pataas", + "timeRange": "Saklaw ng Oras", + "stickyLimitDesc": "Paglalarawan ng Sticky Limit", + "cloudBenefitEdge": "Benepisyo ng Cloud Edge", + "custom": "Pasadya", + "verifying": "Bine-verify", + "baseUrlLabel": "Label ng Base URL", + "setPassword": "Magtakda ng Password", + "safeSearchStrict": "Mahigpit na Safe Search", + "noChangesSinceBackup": "Walang Pagbabago Mula Noong Backup", + "modelsPathHint": "Pahiwatig sa Path ng mga Model", + "audioTranscriptions": "Mga Transkripsyon ng Audio", + "testCombo": "Subukan ang Combo", + "mcpQuickStartTitle": "Pamagat ng Mabilisang Pagsisimula sa MCP", + "comboUpdated": "Na-update ang Combo", + "weighted": "May Timbang", + "providers": "Mga Provider", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", + "noFallbackChainsDesc": "Paglalarawan Kapag Walang mga Fallback Chain", + "yesImport": "Oo, I-import", + "lockoutsAutoRefreshHint": "Pahiwatig sa Awtomatikong Pag-refresh ng mga Lockout", + "tabApis": "Mga Tab API", + "sectionDescription": "Paglalarawan ng Seksyon", + "filter": "I-filter", + "purgeLogsFailed": "Nabigong I-purge ang Mga Log", + "latency": "Pagkaantala", + "testAllOAuth": "Subukan ang Lahat ng OAuth", + "mcpQuickStartStep3": "Mabilisang Pagsisimula ng MCP Hakbang 3", + "repairEnvFailed": "Nabigong Ayusin ang Env", + "zedImportHint": "Pahiwatig sa Pag-import sa Zed", + "modelsAcrossEndpoints": "Mga Modelo sa Iba't Ibang Endpoint", + "autoDisableBannedAccounts": "Awtomatikong I-disable ang Mga Na-ban na Account", + "securityDesc": "Paglalarawan ng Seguridad", + "listModels": "Ilista ang Mga Modelo", + "backupRestore": "Pag-backup at Pag-restore", "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "zedImportSuccess": "Matagumpay ang Pag-import sa Zed", + "lastHeaderUpdate": "Huling Pag-update ng Header", + "categoryCore": "Kategoryang Core", + "noFallbackChains": "Walang Mga Fallback Chain", + "noSearchProviders": "Walang Mga Search Provider", + "autoBalance": "Awtomatikong Pagbabalanse", + "noModelsYet": "Wala Pang Mga Modelo", + "signatureFamily": "Pamilya ng Signature", + "externalApiCalls": "Mga Panlabas na Tawag sa API", + "providerOverridesDesc": "Paglalarawan ng Mga Override ng Provider", + "signatureTool": "Tool sa Signature", + "connectionFailed": "Nabigo ang Koneksyon", + "activeLimitersPlural": "Mga Aktibong Limiter", + "doneDesc": "Paglalarawan ng Tapos Na", + "down": "Hindi Gumagana", + "noDataYet": "Wala Pang Data", + "activeProviders": "Mga Aktibong Provider", + "nameInvalid": "Hindi Wasto ang Pangalan", + "skip": "Laktawan", + "createChain": "Gumawa ng Chain", + "audioSpeech": "Audio na Pagsasalita", + "cacheCleared": "Na-clear ang Cache", + "searchTypeNews": "Uri ng Paghahanap: Balita", + "durationMillisecondsShort": "Tagal sa Millisecond (Maikli)", + "addOpenAICompatible": "Magdagdag ng OpenAI-Compatible", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "Nakapila", + "domainPlaceholder": "Placeholder ng Domain", + "durationMinutesShort": "Tagal (min)", + "verifyingConnection": "Bine-verify ang Koneksyon", + "imageProviders": "Mga Provider ng Larawan", + "protocolToolsLabel": "Label ng Mga Tool sa Protocol", + "queryPlaceholder": "Placeholder ng Query", + "videoGeneration": "Pagbuo ng Video", + "timeRangeWeek": "Saklaw ng Oras: Linggo", + "limitExhausted": "Naubos na ang Limitasyon", + "failedDisable": "Nabigong I-disable", + "inMemoryNote": "Tala sa Memorya", + "compatibleHint": "Pahiwatig sa Compatibility", + "errorShort": "Error", + "advancedHint": "Advanced na Pahiwatig", + "restoreFailed": "Nabigo ang Pag-restore", + "searchProvidersHeading": "Mga Provider ng Paghahanap", + "comboName": "Pangalan ng Combo", + "autoDisableDescription": "Paglalarawan ng Awtomatikong Pag-disable", + "embeddingsDesc": "Paglalarawan ng Embeddings", + "operational": "Gumagana", + "testAllApiKey": "Subukan ang Lahat ng API Key", + "backupCreated": "Nagawa ang Backup", + "errorDuringImport": "Nagkaroon ng Error Habang Nag-i-import", + "comboDefaultsGuideHint2": "Pahiwatig 2 sa Gabay ng Mga Default ng Combo", + "connecting": "Kumokonekta", + "fillModelAndProviders": "Punan ang Modelo at Mga Provider", + "syncing": "Nagsi-sync", + "resetConfirm": "Kumpirmahin ang Pag-reset", + "trackMetrics": "Subaybayan ang Mga Sukatan", + "successful": "Matagumpay", + "recovering": "Nagbabalik", + "autoDisableThreshold": "Threshold ng Awtomatikong Pag-disable", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Nagsi-sync ng Data", + "cloudBenefitPorts": "Benepisyo ng Cloud: Mga Port", + "compatibleProviders": "Mga Compatible na Provider", "freeTierProviders": "Libreng Tier Provider", "freeTierLabel": "Available ang libreng tier", "freeTierProvidersDesc": "Mga provider na may mga libreng tier — ang ilan ay nangangailangan ng pag-signup ng API key, ang iba ay hindi nangangailangan ng mga kredensyal.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "I-clear ang Cache", + "reqs": "Mga Kahilingan", + "addAnthropicCompatible": "Magdagdag ng Compatible sa Anthropic", + "apiKeyProviders": "Mga Provider ng API Key", + "tabsAria": "ARIA ng Mga Tab", + "resetting": "Nire-reset", + "millisecondsAbbr": "Daglat ng Milliseconds", + "backupReasonPreRestore": "Dahilan ng Backup Bago ang Pag-restore", + "disableCloud": "I-disable ang Cloud", + "newProviderNameAria": "ARIA ng Pangalan ng Bagong Provider", + "passwordsMismatch": "Hindi Magkatugma ang Mga Password", + "a2aQuickStartStep3": "Hakbang 3 ng Mabilisang Pagsisimula sa A2A", + "liveMonitorDescriptionSuffix": "Hulapi ng Paglalarawan ng Live Monitor", + "failedAddProvider": "Hindi Maidagdag ang Provider", + "addAtLeastOneProvider": "Magdagdag ng Kahit Isang Provider", + "reasonSeparator": "Panghiwalay ng Dahilan", + "zedImporting": "Nag-i-import ang Zed", + "confirmPasswordPlaceholder": "Placeholder ng Pagkumpirma ng Password", + "whatYouGet": "Ano ang Makukuha Mo", + "signatureSession": "Session ng Lagda", + "errorCountNoCode": "Bilang ng Error na Walang Code", + "testing": "Sinusubukan", + "providersCommaSeparated": "Mga Provider na Pinaghihiwalay ng Kuwit", + "exportDatabase": "I-export ang Database", + "hitRate": "Rate ng Hit", + "completionsLegacy": "Mga Legacy na Completion", + "removeModel": "Alisin ang Modelo", + "timeRangeDay": "Saklaw ng Oras: Araw", + "cloudRequestFailed": "Nabigo ang Kahilingan sa Cloud", + "updatedAt": "Na-update Noong", + "monitoredProvidersHint": "Pahiwatig para sa Mga Minomonitor na Provider", + "connectionSuccessful": "Matagumpay ang Koneksyon", + "latencyP50": "Pagkaantala P50", + "logsDeleted": "Na-delete ang Mga Log", + "chatTester": "Tagasubok ng Chat", + "safeSearchOff": "Naka-off ang Ligtas na Paghahanap", + "nameHint": "Pahiwatig sa Pangalan", + "debugToggle": "Toggle ng Debug", + "embedding": "Pag-embed", + "issuesLabel": "Label ng Mga Isyu", + "optionAny": "Opsyong Alinman", + "maxNestingDepth": "Pinakamataas na Lalim ng Nesting", + "rerank": "Muling Pag-rank", + "checking": "Sinusuri", + "getStarted": "Magsimula", + "restoreSuccess": "Matagumpay na Naibalik", + "issuesDetected": "May Natukoy na mga Isyu", + "signatureCache": "Cache ng Lagda", + "modelLockouts": "Mga Pag-lockout ng Modelo", + "usingCloudProxy": "Gumagamit ng Cloud Proxy", + "loadingHealth": "Nilo-load ang Kalagayan", + "providerOverrides": "Mga Override ng Provider", + "audioTranscriptionDesc": "Paglalarawan ng Transkripsyon ng Audio", + "learnedFromHeaders": "Natutuhan mula sa mga Header", + "totalRequests": "Kabuuang mga Kahilingan", + "cloudUnstableNote": "Tala tungkol sa Hindi Matatag na Cloud", "gamificationAdmin": "Admin ng Gamification", "monitorAnomaliesAndHealth": "Subaybayan ang mga anomalya at kalusugan ng system", "flaggedAnomalies": "Mga Na-flag na Anomalya", "noAnomaliesDetected": "Walang nakitang anomalya", - "apiKey": "API Key", + "apiKey": "Susi ng API", "xpLastHour": "XP (1h)", "zScore": "Z-Score", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Kahina-hinala", "tokensCommunityServers": "Mga Server ng Komunidad", "tokensServerNamePlaceholder": "Pangalan ng server", - "tokensApiKeyPlaceholder": "API key", + "tokensApiKeyPlaceholder": "Susi ng API", "tokensTokenBalance": "Balanse ng Token", "tokensSendTokens": "Magpadala ng mga Token", - "tokensRecipientApiKeyId": "Recipient API Key ID", + "tokensRecipientApiKeyId": "ID ng API Key ng Tatanggap", "tokensRecipientApiKeyIdPlaceholder": "Ilagay ang recipient API key ID", "tokensReasonOptional": "Dahilan (opsyonal)", "tokensReasonPlaceholder": "hal. bonus, gantimpala", @@ -753,11 +753,11 @@ "disconnected": "Nadiskonekta", "pending": "Nakabinbin", "syncing": "Nagsi-sync", - "error": "Error" + "error": "Kamalian" }, "tokensLastSync": "Huling pag-sync: {date}", "tokensDisconnect": "Idiskonekta", - "tierCoverageTitle": "Tier coverage", + "tierCoverageTitle": "Saklaw ng Tier", "tierCoverageSubtitle": "Mga provider na na-configure sa bawat fallback tier", "batchDetailCopyId": "Kopyahin ang ID", "batchDetailClose": "Isara", @@ -795,50 +795,50 @@ "batchFilePurpose": { "batch": "Input ng batch", "batch-output": "Output ng batch", - "fine-tune": "Fine-tuning", + "fine-tune": "Masusing pagsasanay", "assistants": "Mga Assistant" }, "batchPageLoadingMore": "Naglo-load ng higit pa…", "recommended": "Inirerekomenda", "understand": "Naiintindihan ko", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", + "batchConceptTitle": "Batch na Pagproseso", + "batchConceptSubtitle": "Magproseso ng libo-libong kahilingan nang asynchronous sa ~50% ng gastos (24h na palugit). Mainam para sa mga pagsusuri, pag-uuri, at embedding.", + "batchConceptHowItWorks": "Paano ito gumagana", + "batchConceptBenefit50pct": "50% diskuwento sa mga input + output token", + "batchConceptAsync24h": "Asynchronous na may 24h na palugit para makumpleto", + "batchConceptUseCases": "Pinakamainam para sa maramihang pag-uuri, mga pagsusuri, at embedding", + "batchHeaderSubtitle": "Magpatakbo ng maraming kahilingan bilang isang job", + "batchStep1": "1 · Mag-upload ng JSONL", + "batchStep1Desc": "Magdagdag ng mga kahilingan", + "batchStep2": "2 · Gumawa ng batch", + "batchStep2Desc": "Patakbuhin ang job", + "batchStep3": "3 · Kunin ang mga resulta", + "batchStep3Desc": "I-download ang output", + "filesConceptTitle": "Mga batch file", + "filesConceptSubtitle": "Mga JSONL file na ginagamit ng mga batch: mga input na kahilingan, resulta, at error.", + "filesConceptInput": "Input — ang iyong JSONL na may isang kahilingan sa bawat linya", + "filesConceptOutput": "Output — mga resulta mula sa mga nakumpletong kahilingan", + "filesConceptError": "Mga error — mga kahilingang nabigo", + "filesConceptRetention": "Pagpapanatili: 30 araw bilang default (29 na araw sa Anthropic)", + "wizardTitle": "Bagong batch", + "wizardClose": "Isara", + "wizardNext": "Susunod", + "wizardBack": "Bumalik", + "wizardCancel": "Kanselahin", + "wizardCreate": "Gumawa ng batch", + "wizardCreating": "Ginagawa…", + "wizardStep1Destination": "Destinasyon", "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", + "wizardStep3Validate": "I-validate", + "wizardStep4Cost": "Gastos at paggawa", + "wizardProviderLabel": "Tagapagbigay", "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "wizardModelLabel": "Modelo", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (iko-convert namin)", + "wizardDropOrPick": "Mag-drop ng file o mag-click para pumili", + "wizardCsvMappingTitle": "Itugma ang mga column ng CSV → mga field ng kahilingan", + "wizardCsvMappingAddField": "Magdagdag ng field", "wizardCsvNoColumns": "Walang nakitang column sa header ng CSV.", "wizardCsvIgnoreColumn": "— balewalain —", "wizardCsvCustomIdMapped": "Nai-map ang custom_id", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} na row ang na-parse", "wizardCsvRowsSkipped": "{count} na row ang nilaktawan", "wizardCsvRowError": "Hilera {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Wasto ang lahat ng linya", "wizardValidating": "Bina-validate…", "wizardValidationParseFailed": "Nabigo ang validation — hindi ma-parse ang nilalaman.", "wizardValidationSummary": "{lines} linya · {ids} natatanging custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "May natukoy na duplicate na custom_ids:", "wizardValidationFirstErrors": "Mga error (unang {count}):", "wizardValidationLine": "Linya {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", + "wizardValidationErrors": "Mga error sa pag-validate", + "wizardValidationPreview": "Preview (unang 5 kahilingan)", + "wizardValidationSamplingNote": "Malaki ang file — na-validate sa pamamagitan ng sampling (unang 1000 + huling 100 linya). Isinasagawa sa server-side ang buong pag-validate.", + "wizardCostSync": "Gastos sa sync", + "wizardCostBatch": "Gastos sa batch (-50%)", + "wizardCostSavings": "Matitipid", + "wizardCostEstimatedNotice": "Tinatayang gastos — maaaring mag-iba ang aktuwal na singil.", + "wizardErrorUpload": "Hindi na-upload ang file. Subukang muli.", + "wizardErrorCreate": "Hindi nagawa ang batch. Subukang muli.", + "wizardEmptyProviders": "Kumonekta sa provider na sumusuporta sa batch (OpenAI, Anthropic, o Gemini) upang gumawa ng batch.", + "uploadModalTitle": "Mag-upload ng batch file", + "uploadModalDropOrPick": "Mag-drop ng .jsonl file o mag-click para pumili", + "uploadModalUpload": "I-upload", + "uploadModalCancel": "Kanselahin", + "uploadModalError": "Nabigo ang pag-upload. Subukang muli.", + "uploadModalSuccess": "Na-upload", + "uploadModalSizeLimit": "Maximum na 512 MB", + "batchListNewButton": "Bagong batch", + "batchListAutoRefresh": "Awtomatikong pag-refresh kada 30s", + "batchListCostColumn": "Gastos", + "batchActionCancel": "Kanselahin", + "batchActionDownloadOutput": "I-download ang output", + "batchActionDownloadErrors": "I-download ang mga error", + "batchActionRetry": "Subukang muli ang mga nabigo", + "batchActionRetryConfirm": "Subukang muli ang {n} nabigong kahilingan? Nakadepende ang panghuling gastos sa aktuwal na nakonsumong mga token.", + "expirationBadgeCritical": "Kritikal", + "expirationBadgeWarning": "Malapit na", + "expirationBadgeNormal": "Nakabinbin", + "expirationBadgeExpired": "Nag-expire na", + "filesListUploadButton": "Mag-upload", + "filesListUsedByColumn": "Ginagamit ng", + "filesListUsedByNone": "Wala", "filesListUsedByRoleInput": "input", "filesListUsedByRoleOutput": "output", "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "filesListSizeColumn": "Laki", + "batchListProgressPartial": "(bahagya)", + "batchListProviderColumn": "Tagapagbigay", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "Iba pa", + "batchListTitle": "Mga batch", + "batchListCount": "{count} batch", + "batchListRemovingCompleted": "Inaalis…", + "batchListRemoveCompleted": "Alisin ang mga nakumpleto", + "batchListTableStatus": "Katayuan", "batchListTableId": "ID", "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableModel": "Modelo", + "batchListTableProgress": "Progreso", + "batchListTableCreated": "Ginawa", + "batchListTableExpires": "Mag-e-expire", + "batchListLoading": "Naglo-load…", + "batchListEmpty": "Walang nakitang mga batch", + "batchListValidating": "Vina-validate…", + "batchStatusAll": "Lahat ng status", + "batchStatusInProgress": "Isinasagawa", + "batchStatusValidating": "Vina-validate", + "batchStatusFinalizing": "Tinatapos", + "batchStatusCompleted": "Nakumpleto", + "batchStatusFailed": "Nabigo", + "batchStatusCancelled": "Kinansela", + "batchStatusCancelling": "Kinakansela", + "batchStatusExpired": "Nag-expire", + "batchStatusCompletedWithFailures": "nakumpleto nang may mga kabiguan", + "batchStatusInProgressWithFailures": "isinasagawa (may mga kabiguan)", + "batchStatusFinalizingWithFailures": "tinatapos (may mga kabiguan)", + "batchStatusCancelledWithFailures": "kinansela nang may mga kabiguan", + "batchStatusExpiredWithFailures": "nag-expire (bahagya)", + "wizardCostEstimating": "Tinatantiya ang gastos…", + "wizardCostRequests": "Mga Kahilingan", + "wizardCostInputTok": "input na tok", + "wizardCostOutputTok": "output na tok", + "wizardCostWindow": "Palugit", + "wizardDestinationSelectProvider": "Pumili ng provider…", + "wizardDestinationSelectModel": "Pumili ng modelo…", + "wizardDestinationConnectProvider": "Kumonekta ng provider", + "batchListBatchCreated": "Nagawa ang batch {id} — nire-refresh ang listahan…", + "batchListBatchCreatedDismiss": "Isara", + "batchListRefreshing": "Nire-refresh…", + "batchListRefresh": "I-refresh", + "uploadFileModalRemove": "Alisin", + "uploadFileModalUploading": "Ina-upload…", + "wizardInputReading": "Binabasa ang file…", + "wizardInputReady": "Handa na", + "wizardInputLargeFileLabel": "Malaking file — sinusuri ang sample", + "wizardInputCsvJsonlReady": "Nabuo ang JSONL — handa nang suriin.", + "wizardInputLargeFileWarning": "May natukoy na malaking file — isinasagawa ang pagsusuri gamit ang sample (unang 5 MB + huling 100 KB). Isasagawa sa server ang buong pagsusuri.", + "wizardCostWindow24h": "24 na oras na palugit para makumpleto", + "wizardValidationFieldsOk": "wasto ang mga kinakailangang field", + "filesListDelete": "I-delete", + "filesListDownload": "I-download", + "batchDetailActionCancel": "Kanselahin ang batch", + "batchDetailActionRetry": "Subukang muli ang mga nabigong kahilingan", + "batchDetailCancelling": "Kinakansela…", + "batchDetailRetrying": "Inihahanda ang muling pagsubok…", + "batchDetailCancelConfirm": "Kanselahin ang batch na ito? Hihinto ang mga kasalukuyang kahilingan.", + "batchActionCancelError": "Hindi nakansela ang batch. Subukan muli.", + "batchActionRetryError": "Hindi muling nasubukan ang mga nabigong kahilingan. Subukan muli.", + "batchConceptRetentionNote": "Pinapanatili ang mga file ng resulta at error sa loob ng 30 araw (Anthropic: 29 na araw)", "batchFilesSizeColumn": "Sukat", "toggleNoAuthProvider": "I-toggle ang no-auth provider", "loadingModels": "Naglo-load ng mga modelo…", @@ -968,7 +968,7 @@ "batchCompletedCount": "{count} natapos", "batchFailedCount": "{count} nabigo", "batchPendingCount": "{count} nakabinbin", - "batchTimeline": "Timeline", + "batchTimeline": "Kronolohiya", "batchTimelineInProgress": "Nasa Progreso", "batchTimelineFinalizing": "Pinal na Pagsasaayos", "batchTimelineCompleted": "Natapos", @@ -988,39 +988,39 @@ "disabled": "Naka-disable", "featureFlagOmnirouteEmergencyFallbackDescription": "I-route ang mga request na naubusan ng budget sa emergency free fallback provider/model.", "featureFlagArenaEloSyncEnabledDescription": "I-enable ang pana-panahong Arena AI leaderboard ELO sync para sa mga ranking ng intelligence ng modelo.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Bumuo at awtomatikong maglagay ng mga buod ng pag-uusap kapag nagpapalit ng mga modelo ang combo routing. I-disable upang ituring nang hiwalay ang mga pagpapalit ng modelo at pigilan ang mga kahilingan sa paglipat sa background para sa lahat ng kasalukuyan at hinaharap na combo.", "featureFlagExposeCcDiscoveryAliasesDescription": "I-anunsyo ang claude/<provider>/<model> mirror ids sa /v1/models upang ang Claude Code gateway model discovery ay maglista ng mga non-Claude models. Babala: nagdodoble ng catalog entries para sa lahat ng kliyente kapag pinagana nang globally.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Pangunahing switch para sa mga gateway alias na no-think/<provider>/<model>. Naka-on (default): nag-aanunsyo ang /v1/models ng variant na walang pag-iisip para sa bawat kwalipikadong Claude model na may kakayahang mag-isip, at ang no-think/ id na ipinadala sa isang kahilingan ay ibinabalik sa tunay na modelo nang naka-suppress ang reasoning. Naka-off: walang mga variant na inaanunsyo at ang no-think/ id ay itinuturing tulad ng anumang ibang hindi kilalang model id. Nalalapat pa rin ang opt-in/opt-out na ModelSpec.noThinkingAlias ng bawat modelo habang naka-on ito.", "featureFlagChatVirtualLanesEnabledDescription": "Paganahin ang adaptive virtual admission lanes para sa bawat tenant sa pagpapadala ng provider (#9654): ang pag-akyat ng trapiko ng isang tenant ay hindi na nagbibigay ng 503 sa iba. Ang environment variable na OMNIROUTE_CHAT_VIRTUAL_LANES ay mas nangingibabaw sa setting na ito sa dashboard; magkakabisa ang mga pagbabago sa pag-restart ng server.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Mga page ng provider sa Dashboard: ipakita lamang ang Libre na badge sa mga signal na kinikilala ng provider — inaalis nito ang heuristic ng display-name, mga non-boolean na free field, at mga :free suffix sa mga nakarehistrong provider na walang dokumentadong libreng tier. Kapag naka-off, pinananatili ang dating panuntunan sa badge.", + "featureFlagProxySkipRecentlyFailedDescription": "Pinipigilan ng mga proxy pool at ng pag-ikot ng opencode sa bawat account na muling gumamit ng proxy na kabibigo lang (tinanggihan ang TCP probe, o nakatanggap ng 429 sa pamamagitan nito) sa loob ng isang panahon para sa bawat proseso na dumodoble sa bawat pag-ulit, hanggang sa itinakdang limitasyon. Walang isinusulat na status ng proxy; kapag isinantabi ang bawat kandidato, hindi nagbabago ang pagpili. Naka-off bilang default: ang pagkakasunod-sunod ng pagpili ay eksaktong gaya ng karaniwang pag-ikot.", + "featureFlagProxyPoolEgressObservationDescription": "Ipakita sa ilalim ng isang proxy pool sa dashboard kung ilang naobserbahang egress IP ang ginamit ng mga miyembro nito sa nakalipas na 24 h, kung ilang koneksyon ang gumamit sa mga ito, at ang pinakamataas na bilang na nakita sa likod ng isang IP. Read-only, kinukuwenta mula sa proxy log, at hindi kailanman ginagamit sa pagruruta. Naka-off bilang default: hindi nagbabago ang editor ng pool at null ang isinasagot ng route ng obserbasyon.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Sa pagsusuri sa kalagayan ng proxy, hayaan ang isang probe na tinanggihan ng target (401/403/429: ipinasa ito ng proxy, ngunit tinanggihan ng destinasyon ang egress IP na ito) na i-reset ang sunod-sunod na pagkabigo ng proxy, tulad ng isang naihatid na probe. Naka-off bilang default: nananatiling neutral ang pagtanggi at hindi nito binabago ang sunod-sunod na pagkabigo. Nananatiling walang tiyak na resulta ang isang 5xx sa alinmang paraan, at ang pagtanggi ay hindi kailanman nag-aalis, nagdi-disable, o muling nag-a-activate ng proxy.", "sidebar": { "home": "Bahay", "dashboard": "Dashboard", "providers": "Mga provider", "combos": "Mga combo", "usage": "Paggamit", - "analytics": "Analytics", + "analytics": "Analitika", "costs": "Mga gastos", "health": "Kalusugan", "proxy": "Proxy", "limits": "Mga Limitasyon at Quota", - "cliTools": "CLI Tools", - "media": "Media", + "cliTools": "Mga CLI Tool", + "media": "Midya", "settings": "Mga setting", "translator": "Tagasalin", - "playground": "Playground", - "searchTools": "Search Tools", + "playground": "Palaruan", + "searchTools": "Mga Tool sa Paghahanap", "agents": "Mga Agent", "cloudAgents": "Mga Ahente ng Cloud", - "memory": "Memory", - "skills": "Skills", + "memory": "Memorya", + "skills": "Mga Kasanayan", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", - "chaosConfig": "Chaos Mode", - "docs": "Docs", + "chaosConfig": "Mode ng Kaguluhan", + "docs": "Dokumentasyon", "issues": "Mga isyu", "endpoints": "Mga Endpoint", "endpointsSubtitle": "Ang iyong mga URL ng koneksyon sa AI", @@ -1055,218 +1055,218 @@ "serverDisconnectedMsg": "Ang proxy server ay itinigil o nagre-restart.", "expandSidebar": "Palawakin ang sidebar", "collapseSidebar": "I-collapse ang sidebar", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themes": "Mga Tema", + "presetColors": "Mga sikat na kulay", + "createTheme": "Gumawa ng tema", + "chooseColor": "Pumili ng isang kulay", + "themeCoral": "Korales", + "themeBlue": "Asul", + "themeRed": "Pula", + "themeGreen": "Berde", + "themeViolet": "Lila", + "themeOrange": "Kahel", + "themeCyan": "Siyan", "cliToolsShort": "Mga Tool", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Mga Batch Job", + "themeSystem": "Sistema ng Tema", + "whitelabelingDesc": "Paglalarawan ng Whitelabeling", + "switchThemes": "Magpalit ng mga Tema", + "themeAccentDesc": "Paglalarawan ng Accent ng Tema", + "uploadFavicon": "Mag-upload ng Favicon", + "themeDark": "Madilim na Tema", + "customLogoDesc": "Paglalarawan ng Custom na Logo", + "sidebarVisibilityToggle": "Toggle ng Visibility ng Sidebar", + "themeAccent": "Accent ng Tema", + "resetFavicon": "I-reset ang Favicon", + "whitelabeling": "Paglalagay ng Sariling Branding", + "darkMode": "Madilim na Mode", + "uploadLogo": "Mag-upload ng Logo", + "themeLight": "Maliwanag na Tema", + "appName": "Pangalan ng App", + "appNameDesc": "Paglalarawan ng Pangalan ng App", + "resetLogo": "I-reset ang Logo", + "customFavicon": "Custom na Favicon", + "hideHealthLogs": "Itago ang mga Health Log", + "customLogo": "Custom na Logo", + "appearance": "Hitsura", + "themeSelectionAria": "ARIA ng Pagpili ng Tema", + "themeCreate": "Gumawa ng Tema", + "customFaviconDesc": "Paglalarawan ng Custom na Favicon", + "logoPreview": "Preview ng Logo", + "themeCustom": "Custom na Tema", + "hideHealthLogsDesc": "Paglalarawan sa Pagtatago ng mga Health Log", + "faviconPreview": "Preview ng Favicon", + "changelog": "Talaan ng mga Pagbabago", + "contextSection": "Konteksto at Cache", + "contextCaveman": "Taong-Kuweba", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Mga Kumbinasyon ng Engine", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Mga Setting ng Compression", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", - "combosLiveSubtitle": "Live routing cascade", + "combosLive": "Studio ng mga Kumbinasyon", + "combosLiveSubtitle": "Live na cascade ng routing", "compressionStudio": "Compression Studio", "compressionExclusions": "Mga Pagsasawalang-bisa", "contextSettingsSubtitle": "Mga global default", - "contextHeadroomSubtitle": "Tabular compaction", - "contextSessionDedupSubtitle": "Cross-turn deduplication", + "contextHeadroomSubtitle": "Pag-compact ng tabular na data", + "contextSessionDedupSubtitle": "Pag-aalis ng mga duplikado sa magkakasunod na turn", "contextCcrSubtitle": "Kunin ang mga marker", - "contextLlmlinguaSubtitle": "Semantic pruning", + "contextLlmlinguaSubtitle": "Semantikong pruning", "contextLiteSubtitle": "Mabilis na paglilinis ng whitespace", "contextAggressiveSubtitle": "Summary at aging", - "contextUltraSubtitle": "Heuristic pruning", + "contextUltraSubtitle": "Heuristikong pruning", "contextOmniglyphSubtitle": "Konteksto bilang mga larawan", - "compressionStudioSubtitle": "Live engine cascade", - "compressionExclusionsSubtitle": "Per-model/endpoint bypass", - "chaosConfigSubtitle": "Multi-model parallel execution", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "compressionStudioSubtitle": "Live na cascade ng engine", + "compressionExclusionsSubtitle": "Pag-bypass sa bawat modelo/endpoint", + "chaosConfigSubtitle": "Sabayang pagpapatakbo ng maraming modelo", + "routingSection": "Pagruruta", + "protocolsSection": "Mga Protocol", + "agentsAiSection": "Mga Agent at AI", + "cacheContextSection": "Cache at Konteksto", + "analyticsSection": "Analitika", + "costsSection": "Mga Gastos", + "monitoringSection": "Pagsubaybay", + "auditSecuritySection": "Pag-audit at Seguridad", + "devtoolsSection": "Mga Tool para sa Developer", + "configurationSection": "Kumpigurasyon", + "aiFeaturesSection": "Mga Feature ng AI", "mcp": "MCP", "a2a": "A2A", "plugins": "Mga Plugin", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "Mga API Endpoint", + "batchFiles": "Mga File", + "analyticsEvals": "Mga Ebalwasyon", + "analyticsSearch": "Paghahanap", + "analyticsUtilization": "Paggamit", + "analyticsComboHealth": "Kalagayan ng Combo", + "analyticsCompression": "Pag-compress", + "costsBudget": "Badyet", "costsFreeTiers": "Budget ng Free-Tier", "costsFreeTiersSubtitle": "Buwanang allowance ng libreng token", "freeProviderRankings": "Mga Ranking ng Libreng Provider", "freeProviderRankingsSubtitle": "Pinakamahuhusay na libreng provider na niranggo ayon sa mga ELO score ng modelo", - "radar": "Radar Catalog", - "radarSubtitle": "Community-enriched free model catalog", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", - "auditA2a": "A2A Audit", + "radar": "Catalog ng Radar", + "radarSubtitle": "Catalog ng mga libreng modelo na pinagyaman ng komunidad", + "costsQuotaShare": "Pagbabahagi ng Quota", + "costsPricing": "Pagpepresyo", + "logsProxy": "Mga Log ng Proxy", + "logsConsole": "Konsola", + "logsActivity": "Aktibidad", + "auditMcp": "Pag-audit ng MCP", + "auditA2a": "Pag-audit ng A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Hitsura", + "settingsAi": "Mga Setting ng AI", + "settingsSecurity": "Seguridad", "settingsAccessTokens": "Mga Access Token", "settingsFeatureFlags": "Mga Flag ng Tampok", "settingsCache": "Cache", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", - "modelLockout": "Model Lockout", - "settingsAdvanced": "Advanced", + "settingsAuthz": "Awtorisasyon", + "settingsRouting": "Pagruruta", + "settingsResilience": "Katatagan", + "modelLockout": "Pag-lockout ng Modelo", + "settingsAdvanced": "Masulong", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", + "quotaTracker": "Quota ng Provider", + "providerQuota": "Quota ng Provider", "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "consoleLogs": "Mga Log ng Console", + "logsTimeline": "Kronolohiya", "logsTimelineSubtitle": "Visual na kahilingan ng timeline", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", + "conversations": "Mga Pag-uusap", + "conversationsSubtitle": "Mga agentic na pag-uusap na may maraming yugto", + "globalRouting": "Pandaigdigang Pagruruta", "mitmProxy": "MITM Proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Mga Agentic na Feature", + "otherFeaturesSection": "Iba Pang Mga Feature", + "compressionContextGroup": "Konteksto ng Pag-compress", + "gamificationGroup": "Gamipikasyon", + "toolsGroup": "Mga Tool", + "integrationsGroup": "Mga Integrasyon", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", + "costsParametersGroup": "Mga Parameter ng Gastos", + "auditGroup": "Pag-audit", + "batchGroup": "Pangkat", + "homeSubtitle": "Pangkalahatang-ideya ng dashboard", + "providersSubtitle": "Pamahalaan ang mga AI provider", + "quotaTrackerSubtitle": "Subaybayan ang mga limitasyon sa paggamit", + "providerQuotaSubtitle": "Subaybayan ang mga limitasyon sa paggamit ng provider", + "runtimeSubtitle": "Real-time na katatagan at mga session", + "contextCombosSubtitle": "Pagsamahin ang mga compression engine", + "cliToolsSubtitle": "I-configure ang mga CLI runtime", + "agentsSubtitle": "Pamahalaan ang mga lokal na agent", + "cloudAgentsSubtitle": "Pamahalaan ang mga cloud-based na agent", + "apiEndpointsSubtitle": "Ilantad ang mga custom na endpoint", + "proxySubtitle": "Mga setting ng HTTP proxy", + "mitmProxySubtitle": "Pagharang ng MITM", + "oneProxySubtitle": "Pampublikong proxy gateway", + "leaderboard": "Talaan ng mga Nangunguna", "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "tokens": "Mga Token", + "gamificationAdmin": "Admin ng Gamification", + "leaderboardSubtitle": "Mga ranggo at achievement", + "profileSubtitle": "Account at mga kagustuhan", + "tokensSubtitle": "Paggamit ng token at mga badyet", + "gamificationAdminSubtitle": "Pagsubaybay sa anomalya at pag-iwas sa pandaraya", + "usageSubtitle": "Mga estadistika ng trapiko at paggamit", + "analyticsComboHealthSubtitle": "Pagiging maaasahan ng combo target", + "analyticsUtilizationSubtitle": "Paggamit sa provider", + "costsSubtitle": "Detalye ng mga gastos", + "cacheSubtitle": "Mga antas ng cache hit", + "analyticsCompressionSubtitle": "Mga estadistika ng natipid na token", + "analyticsSearchSubtitle": "Analitika ng search tool", + "analyticsEvalsSubtitle": "Mga resulta ng eval suite", "providerStats": "Mga Stats ng Provider", "providerStatsSubtitle": "Mga sukatan ng latency at performance", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Mga log ng application", + "logsProxySubtitle": "Mga log ng trapiko ng proxy", + "consoleLogsSubtitle": "Output ng console", + "logsActivitySubtitle": "Log ng aktibidad ng user", + "healthSubtitle": "Pagsusuri sa kalagayan ng system", + "costsPricingSubtitle": "Mga panuntunan sa pagpepresyo kada modelo", + "costsBudgetSubtitle": "Mga limitasyon sa badyet", + "costsQuotaShareSubtitle": "Ibahagi ang mga quota ng provider sa iba't ibang key", + "auditLogSubtitle": "Audit ng awtorisasyon", + "auditMcpSubtitle": "Audit ng MCP server", + "auditA2aSubtitle": "Audit ng A2A protocol", + "translatorSubtitle": "Pag-convert ng format", + "playgroundSubtitle": "Subukan nang live ang mga prompt", + "searchToolsSubtitle": "Registry ng search tool", + "memorySubtitle": "Persistent na memorya ng agent", + "omniSkillsSubtitle": "Registry ng sandbox skill", + "agentSkillsSubtitle": "Registry ng A2A skill", + "mcpSubtitle": "Mga kontrol ng MCP server", + "a2aSubtitle": "Server ng A2A protocol", "pluginsSubtitle": "Marketplace at mga pag-install ng plugin", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Mga naka-cache na media file", + "batchFilesSubtitle": "Mga batch input/output file", + "settingsSubtitle": "Lahat ng setting", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Tema at layout", + "settingsAiSubtitle": "Mga default na gawi ng AI", + "globalRoutingSubtitle": "Mga pangkalahatang panuntunan sa routing", + "settingsResilienceSubtitle": "Mga retry at breaker", + "settingsAdvancedSubtitle": "Mga opsyon para sa power user", + "settingsSecuritySubtitle": "Awtorisasyon at encryption", "settingsAccessTokensSubtitle": "Mga naka-scope na CLI token para sa remote mode", "settingsFeatureFlagsSubtitle": "I-toggle ang mga kakayahan ng system", "settingsCacheSubtitle": "Katalogo ng Modelo at Pag-cache ng Tugon", "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebarSubtitle": "I-customize ang layout ng sidebar", "settingsAuthzSubtitle": "Imbentaryo ng ruta at patakaran sa pag-bypass", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Dokumentasyon", + "issuesSubtitle": "Mag-ulat ng bug", + "changelogSubtitle": "Mga tala sa release", "costsQuotaPlans": "Mga Plano at Quota", "costsQuotaPlansSubtitle": "I-configure ang mga plano ayon sa provider", "activity": "Aktibidad", @@ -1275,11 +1275,11 @@ "systemGroup": "Sistema", "costsOverview": "Pangkalahatang-ideya", "costsOverviewSubtitle": "Pinagsama-samang pagsusuri ng gastos", - "agentBridge": "Agent Bridge", + "agentBridge": "Tulay ng Agent", "agentBridgeSubtitle": "I-intercept ang traffic ng IDE agent", "trafficInspector": "Traffic Inspector", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Suriin ang trapiko ng request at response mula sa iyong mga app", + "trafficInspectorPurpose": "Tingnan mismo kung ano ang ipinapadala ng iyong application sa mga AI provider at kung ano ang natatanggap nito mula sa mga ito. Gumagana sa anumang client na compatible sa OpenAI.", "cliCode": "CLI Code", "cliCodeSubtitle": "Mga code tool na nakaturo sa OmniRoute", "cliAgents": "Mga CLI Agent", @@ -1295,16 +1295,16 @@ "dragReorderItem": "I-drag upang muling isaayos", "cannotHide": "Hindi maitatago ang item na ito", "alwaysVisible": "Palaging nakikita", - "groupSeparatorLabel": "Separator", + "groupSeparatorLabel": "Panghiwalay", "discovery": "Pagtuklas", "discoverySubtitle": "I-scan ang mga provider para sa libreng access", "conductor": "Konduktor", - "conductorSubtitle": "CLI-agent fleet", + "conductorSubtitle": "Pangkat ng mga CLI agent", "orchestration": "Orkestrasyon", "orchestrationSubtitle": "Live na tanawin ng lahat ng tumatakbo", "resilienceConnections": "Katatagan ng Koneksyon", "resilienceConnectionsSubtitle": "Cooldown, breaker, katayuan ng lockout", - "settingsModalityBridge": "Modality Bridge", + "settingsModalityBridge": "Tulay ng Modalidad", "settingsModalityBridgeSubtitle": "Fallback ng imahe/audio → teksto para sa mga modelong teksto lamang", "commandPalette": { "title": "Command Palette", @@ -1345,7 +1345,7 @@ "refresh": "I-refresh", "loading": "Naglo-load ng mga webhook...", "never": "Hindi kailanman", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {walang pagkabigo} one {# pagkabigo} other {# pagkabigo}}", "testWebhook": "Ipadala ang Pagsusulit", "testSuccess": "Matagumpay na naipadala ang test webhook.", "testFailed": "Nabigo ang pagsubok sa webhook.", @@ -1391,9 +1391,9 @@ "title": "Mga Log ng Paghahatid", "loadFailed": "Nabigong i-load ang mga log ng paghahatid ng webhook.", "empty": "Wala pang naitalang paghahatid. Mag-trigger ng event o magpadala ng test payload.", - "status": "Status", - "event": "Event", - "latency": "Latency", + "status": "Katayuan", + "event": "Kaganapan", + "latency": "Pagkaantala", "at": "Ipinadala Noong" }, "kinds": { @@ -1424,27 +1424,27 @@ "custom": { "endpointUrl": "URL ng Endpoint", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", - "secretKey": "Secret Key", + "secretKey": "Lihim na Susi", "secretKeyPlaceholder": "Ilagay ang secret key o iwanang blangko upang awtomatikong bumuo", "secretKeyHint": "Ginagamit para pirmahan ang payload header para sa authentication." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "URL ng Discord Webhook", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "Ang webhook URL na kinopya mula sa mga setting ng integrasyon ng iyong Discord channel.", "tutorial": "Paano gumawa ng Discord webhook:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "URL ng Slack Webhook", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "Ang webhook URL na kinopya mula sa integrasyon ng iyong Slack Incoming Webhooks.", "tutorial": "Paano gumawa ng Slack webhook:" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "Token ng Telegram Bot", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "Ang HTTP API token na natanggap mula sa @BotFather noong ginawa ang iyong bot.", - "chatId": "Telegram Chat ID / Channel", + "chatId": "Chat ID / Channel sa Telegram", "chatIdPlaceholder": "-100123456789 o @channelname", "chatIdHint": "Ang natatanging numerical identifier o pampublikong username ng chat/channel.", "tutorial": "Paano i-configure ang Telegram webhook:" @@ -1454,7 +1454,7 @@ "auditTitle": "Pag-audit", "auditDescription": "Suriin ang mga kaganapan sa pagsunod at mga tawag sa tool ng MCP mula sa isang operational view.", "complianceTab": "Pagsunod", - "mcpTab": "MCP Audit", + "mcpTab": "Pag-audit sa MCP", "title": "Pag-audit ng Pagsunod", "description": "Mga kaganapan sa patakaran, pag-access, provider, at seguridad na naitala ng log ng audit ng pagsunod.", "eventType": "Uri ng Kaganapan", @@ -1465,11 +1465,11 @@ "warning": "Babala", "critical": "Kritikal", "sourceIp": "Pinagmulan ng IP", - "userOrKey": "User / Key", + "userOrKey": "User / Susi", "action": "Aksyon", "result": "Resulta", "details": "Mga Detalye", - "timestamp": "Timestamp", + "timestamp": "Tatak ng Oras", "from": "Mula sa", "to": "Upang", "refresh": "I-refresh", @@ -1488,19 +1488,19 @@ "system": "sistema", "previous": "Nakaraang", "next": "Susunod", - "mcpAudit": "MCP Audit", + "mcpAudit": "Pag-audit sa MCP", "mcpAuditDesc": "Mga entry sa pag-audit ng tawag sa tool na naitala ng MCP server.", "failedFetchMcpAudit": "Nabigong makuha ang audit log ng MCP.", - "tool": "Tool", + "tool": "Kasangkapan", "toolPlaceholder": "I-filter ayon sa pangalan ng tool", "duration": "Tagal", - "apiKey": "API Key", + "apiKey": "Susi ng API", "output": "Output", "allResults": "Lahat ng resulta", "success": "Tagumpay", "failure": "Kabiguan", "noMcpEvents": "Walang naitala na mga kaganapan sa pag-audit ng MCP.", - "a2aAudit": "A2A Audit", + "a2aAudit": "Pag-audit sa A2A", "a2aAuditDesc": "Ang audit trail ng pagpapatupad ng gawain na naitala ng A2A server.", "a2aShowingTasks": "Ipinapakita ang {count} ng {total} na gawain", "a2aSkill": "Kasanayan", @@ -1512,12 +1512,12 @@ "a2aStateCompleted": "Nakumpleto", "a2aStateFailed": "Nabigo", "a2aStateCancelled": "Kinansela", - "a2aTaskId": "Task ID", + "a2aTaskId": "ID ng Task", "a2aEvents": "Mga kaganapan", "a2aArtifacts": "Mga artifact", "a2aNoTasks": "Walang mga gawaing A2A na naitala.", "a2aLoadingTasks": "Nilo-load ang mga gawaing A2A...", - "actor": "Actor", + "actor": "Aktor", "actorPlaceholder": "I-filter ayon sa actor", "eventTypes": { "apiKey.activate": "Na-activate ang API Key", @@ -1535,7 +1535,7 @@ "auth.login.setup_required": "Kinakailangan ang Setup ng Pag-login", "auth.login.success": "Matagumpay ang Pag-login", "auth.logout.success": "Matagumpay ang Pag-logout", - "compliance.cleanup": "Compliance Cleanup", + "compliance.cleanup": "Paglilinis para sa Pagsunod", "provider.credentials.applied": "Inilapat ang mga Credential ng Provider", "provider.credentials.batch_revoked": "Batch na Binawi ang mga Credential ng Provider", "provider.credentials.bulk_created": "Maramihang Ginawa ang mga Credential ng Provider", @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "Nangungunang Kasangkapan" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "Mga Tema", + "description": "Pumili ng preset na tema o gumawa ng sarili gamit ang iisang kulay", + "presetColors": "Mga sikat na kulay", + "customTheme": "Custom na tema", + "customThemeDesc": "I-click ang gumawa ng tema at pumili ng isang kulay", + "createTheme": "Gumawa ng tema", + "activePreset": "Aktibong tema" }, "header": { "logout": "Mag-logout", @@ -1585,69 +1585,69 @@ "comboDescription": "Mga kumbinasyon ng modelo na may fallback", "usage": "Paggamit at Analytics", "usageDescription": "Subaybayan ang iyong paggamit ng API, pagkonsumo ng token, at mga log ng kahilingan", - "analytics": "Analytics", + "analytics": "Analitika", "analyticsDescription": "Mga chart, trend, at insight sa pagsusuri", - "cliTools": "CLI Tools", + "cliTools": "Mga CLI Tool", "cliToolsDescription": "I-configure ang mga tool sa CLI", "home": "Bahay", "homeDescription": "Maligayang pagdating sa OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Mga Endpoint", + "endpointDescription": "Pamahalaan ang mga proxy endpoint, MCP, A2A, at API endpoint", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Pamamahala at mga tool ng Model Context Protocol server", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Mga gawain at obserbabilidad ng Agent-to-Agent protocol", "settings": "Mga setting", "settingsDescription": "Pamahalaan ang iyong mga kagustuhan", - "openaiCompatible": "OpenAI Compatible", - "anthropicCompatible": "Anthropic Compatible", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", - "auditA2a": "A2A Audit", + "openaiCompatible": "Compatible sa OpenAI", + "anthropicCompatible": "Compatible sa Anthropic", + "media": "Midya", + "mediaDescription": "Bumuo ng mga larawan, video, at musika", + "themes": "Mga Tema", + "themesDescription": "Pumili ng kulay na tema para sa buong dashboard panel", + "costsDescription": "Subaybayan ang paggastos, suriin ang mga trend, at pamahalaan ang iyong AI budget sa lahat ng provider", + "cacheDescription": "Subaybayan ang kahusayan ng prompt cache ng provider at lokal na muling paggamit ng semantic response.", + "limitsDescription": "I-configure ang mga rate limit at quota para sa bawat API key at provider", + "runtimeDescription": "Live na obserbabilidad ng runtime — mga circuit breaker, cooldown, model lockout, session, at quota alert", + "apiManagerDescription": "Pamahalaan ang mga API key at access control para sa iyong OmniRoute instance", + "batchDescription": "Magproseso ng maraming request nang asynchronous gamit ang mga batched API call", + "contextCavemanDescription": "Rule-based na compression ng mensahe, mga language pack, analytics, at mga kontrol sa output mode.", + "contextRtkDescription": "Command-aware na compression para sa output ng tool, mga terminal log, at resulta ng build.", + "contextCombosDescription": "Tukuyin kung paano pinagsasama ang mga engine para sa iba't ibang routing scenario.", + "changelogDescription": "Manatiling may alam sa mga pinakabagong feature at anunsyo ng platform.", + "agentsDescription": "Pamahalaan at i-configure ang mga tool ng AI agent: Codex, Devin, Jules, at mga custom na agent", + "cloudAgentsDescription": "I-orkestra ang mga cloud-based AI agent gamit ang live na pagsubaybay sa gawain at pag-apruba ng plano", + "memoryDescription": "Persistent na conversational memory na may semantic search at FTS5 full-text indexing", + "skillsDescription": "Mag-install at mamahala ng mga sandbox skill para sa awtomatikong pagpapatupad ng prompt at tool", + "agentSkillsDescription": "Catalog ng mga agent-ready skill na may isang-click na pagkopya ng URL para sa integrasyon ng AI client", + "translatorDescription": "Isalin at subukan ang mga prompt sa iba't ibang API format: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Subukan ang mga prompt nang interactive gamit ang live na tugon ng provider at inspeksyon ng format", + "searchToolsDescription": "Search analytics, breakdown ayon sa provider, mga cache hit rate, at pagsubaybay sa gastos", + "logsDescription": "Mga real-time request log, error trace, at inspector ng streaming event", + "auditDescription": "Compliance audit trail ng paggamit ng API key, mga MCP tool call, at policy event", + "webhooksDescription": "I-configure ang mga webhook endpoint upang makatanggap ng mga real-time na notification ng event", + "healthDescription": "Pangkalahatang-ideya ng kalagayan ng system: mga provider, circuit breaker, rate limit, at database", + "proxyDescription": "I-configure ang mga setting ng upstream proxy para sa mga papalabas na koneksyon sa provider", + "apiEndpointsDescription": "Pamahalaan ang mga custom na configuration ng API endpoint at mga override sa routing", + "batchFilesDescription": "Mag-browse at pamahalaan ang mga output file at resulta ng batch job", + "analyticsEvalsDescription": "Mga resulta ng pagsusuri sa modelo at mga benchmark ng performance", + "analyticsSearchDescription": "Analytics ng query sa paghahanap, mga cache hit rate, at pagsubaybay sa gastos", + "analyticsUtilizationDescription": "Mga sukatan sa paggamit ng provider at pagpaplano ng kapasidad", + "analyticsComboHealthDescription": "Real-time na kalagayan at performance ng mga configuration ng combo routing", + "analyticsCompressionDescription": "Analytics ng context compression at natipid na mga token", + "costsBudgetDescription": "Mga limitasyon sa badyet at alerto sa paggastos para sa bawat API key at provider", + "costsPricingDescription": "Custom na configuration ng presyo para sa pagkalkula ng halaga ng token", + "logsProxyDescription": "Mga log ng request sa upstream proxy at inspeksyon ng traffic", + "logsConsoleDescription": "Output ng application console at mga debug log", + "logsActivityDescription": "Audit trail ng mga kilos ng user at mga event ng system", + "auditMcpDescription": "Audit trail ng invocation ng MCP tool at mga talaan ng compliance", + "auditA2a": "Pag-audit ng A2A", "auditA2aDescription": "A2A task execution audit trail, state transition, at skill invocation records", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Theme, branding, at visual na pag-customize", + "settingsAiDescription": "Mga gawi ng AI, badyet sa pag-iisip, vision, at mga setting ng memorya", "settingsCacheDescription": "TTL para sa mga entry ng cache ng model catalog", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Mga setting ng authentication, authorization, at access control", "featureFlags": "Mga Flag ng Tampok", "featureFlagsDescription": "Mga kakayahan ng system ng kontrol at mga tampok na pang-eksperimento", "featureFlagsActive": "{count} aktibo", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Walang mga flag na tumutugma sa iyong paghahanap", "featureFlagsSaved": "Na-update ang bandila", "featureFlagsError": "Nabigong i-update ang flag", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Mga panuntunan sa routing, mga alias ng modelo, mga default ng combo, at mga setting ng degradation", + "settingsResilienceDescription": "Configuration ng circuit breaker, retry, at fallback", + "settingsAdvancedDescription": "Mga advanced na panuntunan sa payload, limitasyon sa request, at mga setting ng proxy API", + "mitmProxyDescription": "I-configure ang mga setting ng MITM proxy para sa inspeksyon at pag-debug ng traffic", + "oneProxyDescription": "I-configure ang mga setting ng 1Proxy para sa advanced na proxy chaining", "omniSkillsDescription": "Mag-install at mamahala ng mga sandbox skill para sa awtomatikong prompt at pagpapagana ng tool" }, "cloudSyncStatus": { @@ -1690,7 +1690,7 @@ "statusLabel": "Katayuan ng malayuang pag-sync ng mga setting: {status}" }, "breadcrumbs": { - "ariaLabel": "Breadcrumb", + "ariaLabel": "Landas ng nabigasyon", "dashboard": "Dashboard", "providers": "Mga Provider", "combos": "Mga Combo", @@ -1698,88 +1698,88 @@ "general": "Pangkalahatan", "appearance": "Hitsura", "ai": "Mga Setting ng AI", - "routing": "Routing", - "resilience": "Resilience", + "routing": "Pagru-ruta", + "resilience": "Katatagan", "advanced": "Advanced", "accessTokens": "Mga Access Token", "featureFlags": "Mga Feature Flag", "logs": "Mga Log", - "auditLog": "Audit Log", + "auditLog": "Log ng Pag-audit", "console": "Console", - "logger": "Logger", + "logger": "Tagapagtala", "translator": "Tagasalin", - "playground": "Playground", + "playground": "Palabalaruan", "add": "Idagdag", "edit": "I-edit", "apiKeys": "Mga API Key", "models": "Mga Modelo", - "cliCode": "CLI Code", + "cliCode": "Code ng CLI", "cliAgents": "Mga CLI Agent", "acpAgents": "Mga ACP Agent", "endpoint": "Endpoint", - "apiManager": "API Manager", + "apiManager": "Tagapamahala ng API", "context": "Konteksto", "compression": "Kompresyon", "services": "Mga Serbisyo", - "analytics": "Analytics", + "analytics": "Analitika", "costs": "Mga Gastos", "health": "Kalusugan", "runtime": "Runtime", "webhooks": "Mga Webhook", - "home": "Home", + "home": "Pangunahing Pahina", "activity": "Aktibidad", - "agentSkills": "AgentSkills", - "comboHealth": "Combo Health", + "agentSkills": "Mga Kasanayan ng Ahente", + "comboHealth": "Kalagayan ng Combo", "evals": "Mga Eval", "search": "Maghanap", "utilization": "Paggamit", "apiEndpoints": "Mga API Endpoint", - "audit": "Audit", + "audit": "Pag-audit", "a2a": "A2A", "mcp": "MCP", - "batch": "Batch", + "batch": "Maramihan", "files": "Mga File", - "media": "Media", + "media": "Midya", "cache": "Cache", - "changelog": "Changelog", - "chaos": "Chaos", + "changelog": "Talaan ng mga Pagbabago", + "chaos": "Kaguluhan", "cloudAgents": "Mga Cloud Agent", "live": "Live", "studio": "Studio", "aggressive": "Agresibo", "caveman": "Caveman", "ccr": "CCR", - "headroom": "Headroom", + "headroom": "Ekstrang kapasidad", "lite": "Lite", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", "rtk": "RTK", - "sessionDedup": "Session Dedup", + "sessionDedup": "Pag-aalis ng Doble sa Session", "ultra": "Ultra", "budget": "Badyet", "pricing": "Pagpepresyo", - "quotaShare": "Quota Share", + "quotaShare": "Pagbabahagi ng Quota", "discovery": "Pagtuklas", "freeProviderRankings": "Mga Ranggo ng Libreng Provider", "radar": "Radar", - "setup": "Setup", + "setup": "Pag-set up", "freeTiers": "Mga Libreng Tier", - "gamification": "Gamification", - "leaderboard": "Leaderboard", + "gamification": "Gamipikasyon", + "leaderboard": "Talaan ng mga Nangunguna", "limits": "Mga Limitasyon", "profile": "Profile", "plugins": "Mga Plugin", "providerStats": "Mga Stat ng Provider", "new": "Bago", - "quota": "Quota", + "quota": "Kota", "relay": "Relay", "searchTools": "Mga Tool sa Paghahanap", "security": "Seguridad", "sidebar": "Sidebar", "tokens": "Mga Token", "tools": "Mga Tool", - "agentBridge": "Agent Bridge", - "trafficInspector": "Traffic Inspector", + "agentBridge": "Tulay ng Agent", + "trafficInspector": "Inspektor ng Trapiko", "usage": "Paggamit", "orchestration": "Orkestrasyon" }, @@ -1812,10 +1812,10 @@ "reportIssue": "Iulat ang isyu", "activeError": "{active} aktibo · {errors} error", "topologyLegendActive": "Aktibo", - "topologyLegendRecent": "__MISSING__:Recent", - "topologyLegendError": "__MISSING__:Error", + "topologyLegendRecent": "Kamakailan", + "topologyLegendError": "Error", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", + "apiKeyLabel": "Susi ng API", "requestsShort": "{count} mga kahilingan", "providerModelsTitle": "{provider} - Mga Modelo", "copiedModel": "Nakopya: {model}", @@ -1826,11 +1826,11 @@ "updateStarted": "Nagsimula ang pag-update...", "reloadingPageAutomatically": "Awtomatikong nire-reload ang page...", "providerTopology": "Topology ng Provider", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Mga Kamakailang Kahilingan", + "recentRequestsEmpty": "Wala pang mga kahilingan.", + "recentRequestsModel": "Modelo", + "recentRequestsTokens": "Papasok / Papalabas", + "recentRequestsWhen": "Kailan", "downloadDmg": "I-download ang DMG (macOS)", "downloadDmgDescription": "Isang bagong bersyon ng OmniRoute desktop app ang available. Mangyaring i-download at i-install ang macOS DMG installer upang mag-update (kasalukuyan: v{version}).", "downloadExe": "I-download ang EXE (Windows)", @@ -1861,7 +1861,7 @@ "stepRebuildNativeModules": "I-rebuild ang Mga Katutubong Module", "stepRestartService": "I-restart ang Serbisyo", "stepComplete": "Kumpleto", - "stepError": "Error", + "stepError": "Kamalian", "updateCompleteTitle": "Kumpletong Pag-update!", "updateFailedTitle": "Nabigong I-update", "updatingTitle": "Nag-a-update ng OmniRoute...", @@ -1872,7 +1872,7 @@ "closeUpdate": "Isara", "retryUpdate": "Subukan Muli", "updateAvailableTitle": "Available na Update: v{version}{desktop}", - "desktopAppLabel": "(Desktop App)", + "desktopAppLabel": "(Desktop na App)", "checkingForUpdates": "Nagsusuri para sa mga update...", "versionAvailableForDownload": "Available na ang bersyon v{version} para sa pag-download.", "downloadingUpdate": "Nagda-download ng update... {percent}% kumpleto.", @@ -1888,32 +1888,32 @@ "releaseNotes": "Mga Tala ng Paglabas", "readMore": "Magbasa Pa Nang Higit", "noAuthLabel": "Walang Awtorisasyon", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Maghandang mag-route", + "readinessTitle": "Ipadala ang iyong unang kahilingan", + "readinessSubtitle": "Apat na simpleng hakbang. Sinusuri ng OmniRoute ang kahandaan habang nagpapatuloy ka.", + "readinessStep1": "Kumonekta sa isang provider", + "readinessStep2": "I-configure ang authentication ng endpoint", + "readinessStep3": "Kopyahin ang iyong endpoint", + "readinessStep4": "Magpadala ng pansubok na kahilingan", + "readinessContinue": "Ipagpatuloy ang pag-setup", + "readinessDismiss": "Huwag munang ipakita" }, "analytics": { - "title": "Analytics", + "title": "Analitika", "usageAnalyticsTitle": "Analytics ng Paggamit", "diversityScoreTitle": "Pagkakaiba-iba ng Provider", "diversityScoreDesc": "Snapshot ng konsentrasyon ng provider para sa kamakailang window ng trapiko.", - "diversityShannonEntropy": "Shannon entropy", + "diversityShannonEntropy": "Entropiyang Shannon", "diversityWindow": "Window: {count} na req · Huling {mins} na min", "diversityHealthy": "Maayos na Pamamahagi", "diversityRiskHigh": "Mataas na Panganib sa Vendor Lock-in", "diversityRiskModerate": "Katamtamang Pamamahagi", - "diversityScoreLabel": "score", + "diversityScoreLabel": "iskor", "diversityHigherExplanation": "Ang mas matataas na value ay nangangahulugang ang trapiko ay nakakalat sa maraming provider.", "diversityNoData": "Walang available na kamakailang data ng paggamit.", "chartRequests": "Mga Request", - "chartInput": "Input", - "chartOutput": "Output", + "chartInput": "Pasok", + "chartOutput": "Labas", "chartTotal": "Kabuuan", "chartCost": "Gastos", "chartShare": "Bahagi", @@ -1932,7 +1932,7 @@ "activityLess": "Mas kaunti", "activityMore": "Mas marami", "chartApiKeyBreakdown": "Breakdown ng API Key", - "chartApiKey": "API Key", + "chartApiKey": "Susi ng API", "mostActiveDay": "Pinaka-aktibong Araw", "datedTokenCount": "{date} · {tokens} na token", "noDataLast7Days": "Walang data sa nakalipas na 7 araw", @@ -1942,14 +1942,14 @@ "unknownApiKey": "Hindi kilalang API key", "chartModelBreakdown": "Breakdown ng Modelo", "chartModel": "Modelo", - "chartProvider": "Provider", + "chartProvider": "Tagapagbigay", "chartProviderBreakdown": "Breakdown ng Provider", "chartDate": "Petsa", "chartRequestsByProviderDate": "Mga Request ayon sa Provider at Petsa", "filterAllKeys": "Lahat ng Key", "filterSearchKeys": "Maghanap ng mga key…", "filterNoKeysMatch": "Walang tumutugmang key", - "filterOneKey": "1 key", + "filterOneKey": "1 susi", "filterMultipleKeys": "{count} na key", "rangeToday": "Ngayon", "rangeYesterday": "Kahapon", @@ -1988,25 +1988,25 @@ "highlightsTopProvider": "Nangungunang Provider", "highlightsBusiestDay": "Pinaka-abalang Araw", "highlightsDiversity": "Pagkakaiba-iba", - "highlightsFallbackRate": "Fallback Rate", - "customRange": "Custom", + "highlightsFallbackRate": "Rate ng Fallback", + "customRange": "Pasadya", "overviewDescription": "Subaybayan ang iyong mga pattern ng paggamit ng API, pagkonsumo ng token, gastos, at mga trend ng aktibidad sa lahat ng provider at modelo.", "evalsDescription": "Magpatakbo ng mga evaluation suite para subukan at patunayan ang iyong mga LLM endpoint. Ihambing ang kalidad ng modelo, tuklasin ang mga regression, at benchmark na latency.", "overview": "Pangkalahatang-ideya", - "evals": "Evals", + "evals": "Mga Eval", "search": "Maghanap", "utilization": "Paggamit", - "routeTrace": "Route Trace", + "routeTrace": "Trace ng Route", "sectionsAria": "Mga seksyon ng Analytics", "utilizationDescription": "Mga trend sa paggamit ng quota ng provider at pagsubaybay sa rate limit", "modelStatus": "Katayuan ng Modelo", - "modelStatusCooldown": "Cooldown", + "modelStatusCooldown": "Panahon ng paghihintay", "modelStatusUnavailable": "Hindi available", - "modelStatusError": "Error", + "modelStatusError": "Kamalian", "comboHealth": "Kalusugan ng Combo", "comboHealthDescription": "Quota sa antas ng combo, pamamahagi ng paggamit, at mga metrics ng pagganap", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Analytics ng Compression", + "compressionAnalyticsDescription": "Analytics ng compression — natipid na mga token, breakdown ng mode, at mga istatistika ng provider.", "autoRoutingTotalAutoRequests": "Kabuuang Mga Kahilingan sa Auto", "autoRoutingAvgSelectionScore": "Avg na Marka ng Pinili", "autoRoutingExplorationRate": "Rate ng Paggalugad", @@ -2019,12 +2019,12 @@ "comboHealthQuotaHealth": "kalusugan ng quota", "comboHealthRequests": "Mga kahilingan", "comboHealthTokens": "Mga token", - "comboHealthAvgLatency": "Avg latency", + "comboHealthAvgLatency": "Average na latency", "comboHealthTotalRequests": "Kabuuang mga kahilingan", "comboHealthExecutionTargets": "Mga target sa pagpapatupad", "comboHealthSuccess": "Tagumpay", - "comboHealthLatency": "Latency", - "comboHealthQuota": "Quota", + "comboHealthLatency": "Latensiya", + "comboHealthQuota": "Kota", "comboHealthTitle": "Combo kalusugan", "comboHealthUnableToLoad": "Hindi ma-load ang combo health", "comboHealthGettingStarted": "Pagsisimula", @@ -2039,16 +2039,16 @@ "comboHealthWorstProjectedQuota": "Pinakamalalang inaasahang quota", "comboHealthNoDepletionEstimate": "Walang pagtatantya ng pagkaubos", "comboHealthDaysToExhaust": "{days}d bago maubos", - "comboHealthTraffic": "traffic", + "comboHealthTraffic": "trapiko", "comboHealthProjectedQuota": "Inaasahang quota", "comboHealthPricingCoverage": "Saklaw ng pagpepresyo", - "comboHealthAutopilotTitle": "Combo Health Autopilot", + "comboHealthAutopilotTitle": "Autopilot ng Kalagayan ng Combo", "comboHealthAutopilotDescription": "Mga priyoridad na rekomendasyon mula sa combo health, mga pagtataya, mga quota, at kalusugan ng provider.", "comboHealthIssues": "Mga Isyu", "comboHealthActionable": "{count} na maaaring aksyunan", - "comboHealthDown": "Down", - "comboHealthDegraded": "Degraded", - "comboHealthHealthy": "Healthy", + "comboHealthDown": "Hindi gumagana", + "comboHealthDegraded": "Humina", + "comboHealthHealthy": "Maayos", "comboHealthNoActiveIssues": "Walang nakitang aktibong isyu sa combo health para sa napiling hanay.", "comboHealthScoringInspector": "Matalinong inspector ng pag-score", "comboHealthReadOnlyRecompute": "Read-only na muling pagkalkula", @@ -2056,45 +2056,45 @@ "comboHealthTask": "Gawain: {task}", "comboHealthSelectedRank": "Napiling ranggo #1", "comboHealthFactor": { - "quota": "Quota", + "quota": "Kota", "health": "Kalusugan", "costInv": "Gastos", - "latencyInv": "Latency", + "latencyInv": "Latensiya", "taskFit": "Pagkakaakma sa task", "stability": "Katatagan", - "tierPriority": "Tier", + "tierPriority": "Antas", "tierAffinity": "Pagkakaakma sa tier", - "specificityMatch": "Specificity", + "specificityMatch": "Ispesipisidad", "contextAffinity": "Konteksto", - "resetWindowAffinity": "Reset window" + "resetWindowAffinity": "Panahon ng pag-reset" }, - "comboHealthQuotaValue": "Quota {value}", - "comboHealthLatencyValue": "Latency {value}ms", + "comboHealthQuotaValue": "Kota {value}", + "comboHealthLatencyValue": "Latensiya {value}ms", "comboHealthIssueCount": "Mga isyu {count}", "comboHealthNoInspectableTargets": "Walang maiinspekang target para sa combo na ito.", "comboHealthAutopilotState": { - "down": "Down", + "down": "Hindi gumagana", "degraded": "Nangangailangan ng pansin", - "healthy": "Healthy" + "healthy": "Maayos" }, "comboHealthModelProviderCount": "{models} na model sa {providers} na provider", - "comboHealthGiniCoefficient": "Gini coefficient", + "comboHealthGiniCoefficient": "Koepisyent ng Gini", "comboHealthRequestCount": "{count} na request", "comboHealthQuotaHealthDescription": "Pinakamababang natitirang quota sa mga provider na may maiikling signal ng trend.", "comboHealthRemainingQuota": "Natitirang quota {value}", "comboHealthTrend": { "improving": "Bumubuti", "declining": "Bumababa", - "stable": "Stable" + "stable": "Matatag" }, "comboHealthUsageSkewDescription": "Bahagi ng request ng model at bahagi ng token sa loob ng combo na ito.", "comboHealthShareSummary": "Bahagi ng request {requests} · Bahagi ng token {tokens}", - "comboHealthPerformance": "Performance", + "comboHealthPerformance": "Pagganap", "comboHealthPerformanceDescription": "Pagkakaasahan at throughput para sa na-route na trapiko ng combo.", "comboHealthExecutionTargetsDescription": "Mga runtime metric sa antas ng hakbang at visibility ng quota para sa mga structured na target ng combo.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} kahilingan", "comboHealthQuotaScope": "Saklaw ng quota: {scope}", - "comboHealthTrendValue": "Trend: {trend}", + "comboHealthTrendValue": "Kalakaran: {trend}", "comboHealthFetchFailed": "Nabigong kunin ang data ng kalusugan ng combo", "unknownError": "Hindi alam na error", "comboHealthIntro": "Subaybayan ang pressure sa quota, skewed na paggamit ng model, at performance ng paghahatid ayon sa combo.", @@ -2169,7 +2169,7 @@ "routeTraceTitle": "View ng Route Trace", "routeTraceDescription": "I-inspect ang na-persist na trace ng request: napiling target, mga salik sa pag-route, ebidensya ng fallback, kasalukuyang replay ng scoring, latency, mga token, at kalusugan ng target.", "routeTraceRequestLog": "Log ng request", - "routeWeight": "Weight {weight}%", + "routeWeight": "Timbang {weight}%", "routeNoRelatedEvidence": "Wala pang kaugnay na target evidence na na-persist.", "unknown": "hindi alam", "selected": "Napili", @@ -2182,13 +2182,13 @@ "routeWhyTarget": "Bakit ang target na ito?", "routeWhyTargetSubtitle": "Eksaktong runtime metadata kasama ang read-only na scoring replay", "routeExactRuntimeLog": "Eksaktong runtime log", - "routeCallLogsExact": "call_logs exact", + "routeCallLogsExact": "eksaktong call_logs", "routeReadOnlyRecompute": "Read-only na recompute", "routeRuntimeRankNow": "Runtime rank ngayon", "routeRuntimeScoreNow": "Runtime score ngayon", "routeWouldSelectNow": "Pipiliin ngayon", "routeNoRecomputeCandidates": "Walang ranking ng kandidatong combo ang maaaring muling i-compute para sa request na ito.", - "runtime": "Runtime", + "runtime": "Oras ng pagpapatakbo", "routeTopNow": "Nangunguna ngayon", "routeFetchLogsFailed": "Hindi nagawang i-fetch ang mga log ng request", "routeExplainFailed": "Hindi nagawang ipaliwanag ang ruta", @@ -2199,18 +2199,18 @@ "routeDecisionSummary": "Buod ng desisyon", "routeConfidence": "{confidence} kumpiyansa", "routeScore": "Score ng ruta", - "latency": "Latency", + "latency": "Latensiya", "routeRecentSuccess": "Kamakailang tagumpay", "routeAvgTargetLatency": "Avg na latency ng target", "routeSelectedTarget": "Napiling target", - "provider": "Provider", - "model": "Model", + "provider": "Tagapagbigay", + "model": "Modelo", "account": "Account", "connection": "Koneksyon", - "combo": "Combo", + "combo": "Kumbinasyon", "routeStep": "Hakbang", "tokens": "Mga Token", - "notAvailable": "n/a", + "notAvailable": "hindi naaangkop", "routeTokenCounts": "{input} papasok · {output} palabas", "routeEvidence": "Ebidensya", "routeFactors": "Mga salik sa routing", @@ -2233,7 +2233,7 @@ "searchAnalyticsEmptyDescription": "Gamitin ang POST /v1/search upang simulan ang pag-route ng mga web search.", "searchAnalyticsFreeTier": "Magagamit ang libreng tier: Serper (2,500/buwan), Brave (2,000/buwan), Exa (1,000/buwan), Tavily (1,000/buwan) — kabuuang 6,500+ libreng paghahanap/buwan na may awtomatikong failover.", "autoRoutingNoDataAvailable": "Walang available na auto-routing analytics. Gumawa ng mga kahilingan gamit ang auto/ prefix upang makita ang mga sukatan.", - "defaultVariantLabel": "Default", + "defaultVariantLabel": "Paunang-takda", "freeTierAvailable": "Available ang libreng tier" }, "apiManager": { @@ -2244,7 +2244,7 @@ "revokeConfirm": "Sigurado ka bang gusto mong bawiin ang API key na ito?", "noKeys": "Wala pang API key", "noKeysDesc": "Gawin ang iyong unang API key upang patotohanan ang mga kahilingan sa iyong endpoint", - "keyLabel": "Key Label", + "keyLabel": "Label ng Key", "permissions": "Mga Pahintulot", "expiresAt": "Mag-e-expire", "never": "Hindi kailanman", @@ -2254,13 +2254,13 @@ "copyKey": "Kopyahin ang API Key", "allModels": "Lahat ng mga modelo", "selectedModels": "Mga Napiling Modelo", - "readOnly": "Read Only", + "readOnly": "Basahin Lamang", "fullAccess": "Buong Access", "keyManagement": "Pamamahala ng Key ng API", "keyManagementDesc": "Gumawa at mamahala ng mga API key para sa pag-authenticate ng mga kahilingan sa iyong endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Nagpapadala ang iyong app ng mga kahilingan sa OmniRoute gamit ang isang API key", + "requestFlowYourApp": "Ang iyong app", + "requestFlowApiKey": "Susi ng API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Kabuuang Mga Susi", "restricted": "Pinaghihigpitan", @@ -2275,7 +2275,7 @@ "usage": "Paggamit", "created": "Nilikha", "actions": "Mga aksyon", - "reqs": "reqs", + "reqs": "mga kahilingan", "neverUsed": "Hindi kailanman ginamit", "deleteConfirm": "Tanggalin ang API key na ito?", "usageTips": "Mga Tip sa Paggamit", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Kopyahin at iimbak ang key na ito ngayon — hindi na ito muling ipapakita.", "done": "Tapos na", "savePermissions": "I-save ang Mga Pahintulot", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Mga Pinapayagang Endpoint", + "allEndpointsAllowed": "Maa-access ng key na ito ang lahat ng API endpoint.", + "endpointsRestricted": "Limitado sa {count} endpoint{count, plural, one {} other {s}}.", + "autoResolve": "Awtomatikong Lutasin", + "autoResolveDesc": "Awtomatikong lutasin ang mga hindi tiyak na pangalan ng modelo sa native provider para sa API key na ito.", "streamDefaultMode": "Compatibility ng Default na Stream", "streamDefaultModeDesc": "Kinokontrol ang mga hindi isinamang `stream` flag para sa key na ito. Nagbabalik ang JSON mode ng mga non-streaming na tugon maliban kung tahasang humiling ang client ng SSE.", - "streamDefaultLegacy": "Legacy", + "streamDefaultLegacy": "Lumang bersyon", "streamDefaultJson": "Tugma sa JSON", "streamDefaultBadge": "Default na JSON stream", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Aktibong Key", + "keyActiveDesc": "I-enable o i-disable ang API key na ito. Ang mga naka-disable na key ay agad na tinatanggihan gamit ang 403.", + "accessSchedule": "Iskedyul ng Access", + "accessScheduleDesc": "Limitahan ang access sa mga partikular na oras at araw ng linggo.", + "scheduleFrom": "Mula", + "scheduleUntil": "Hanggang", + "scheduleDays": "Mga Araw", + "scheduleTimezone": "Sona ng oras", + "scheduleTimezoneHint": "Gumamit ng mga pangalan ng IANA timezone, hal. America/New_York, Europe/Berlin", + "scheduleActive": "Iskedyul", + "disabled": "Naka-disable", + "daySun": "Lin", + "dayMon": "Lun", + "dayTue": "Mar", + "dayWed": "Miy", + "dayThu": "Huw", + "dayFri": "Biy", + "daySat": "Sab", "allowAll": "Payagan ang Lahat", "restrict": "Paghigpitan", "allowAllInfo": "Maa-access ng key na ito ang lahat ng available na modelo.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Nabigong i-update ang mga pahintulot. Pakisubukang muli.", "unknownProvider": "hindi kilala", "copyMaskedKey": "Kopyahin ang nakamaskara na susi", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Makukuha lamang ang buong key sa oras ng paggawa — kopyahin ito sa unang paggawa mo ng key", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# device} other {# na device}}", "devicesTooltip": "{count, plural, one {# natatanging IP/User-Agent device na nakita gamit ang key na ito (huling 30 min)} other {# na natatanging IP/User-Agent device na nakita gamit ang key na ito (huling 30 min)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Mga Pinapayagang Combo", "allCombosAllowed": "Maaaring gumamit ng anumang combo ang key na ito.", "restrictedComboCount": "Limitado sa {count, plural, one {# combo} other {# na combo}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "Ang {count, plural, one {# nakaimbak na entry ay} other {# nakaimbak na entry ay}} wala sa listahan ng combo na ito (halimbawa, mga panuntunan sa routing) at pananatilihin ayon sa pagkaka-save.", + "preservedComboRuleHint": "Pinanatili ayon sa pagkakaimbak. Ang entry na ito ay hindi isang combo sa listahan sa itaas, kaya maaari lamang itong baguhin sa pamamagitan ng API.", "apiManagerCustomRateLimits": "Mga Limitasyon ng Custom na Rate", "apiManagerCustomRateLimitsDesc": "I-override ang mga pandaigdigang default na limitasyon. Iwanang walang laman upang gamitin ang mga default.", "apiManagerRateLimitRequestsPlaceholder": "Mga kahilingan", @@ -2392,7 +2392,7 @@ "apiManagerRemoveLimitTitle": "Alisin ang limitasyon", "apiManagerTimezonePlaceholder": "America/Sao_Paulo", "noLogPayloadPrivacy": "Walang-Log Payload Privacy", - "bannedStatus": "Banned Status", + "bannedStatus": "Katayuan ng Pagka-ban", "managementApiAccess": "Access sa Management API", "expirationDate": "Petsa ng Pag-expire", "managementAccess": "Access sa Pamamahala", @@ -2406,7 +2406,7 @@ "filterStatusDisabled": "Hindi pinagana", "filterStatusBanned": "Ipinagbawal", "filterStatusExpired": "Nag-expire", - "filterTypeStandard": "Standard", + "filterTypeStandard": "Karaniwan", "filterTypeManage": "Pamahalaan", "filterTypeRestricted": "Pinaghihigpitan", "shownOf": "{shown} sa {total} ang ipinapakita", @@ -2418,25 +2418,25 @@ "quotaKeysSection": "Mga quota key", "bypassProviderQuota": "I-bypass ang mga cutoff ng quota ng provider", "bypassProviderQuotaDescription": "Pinapayagan ang key na ito na balewalain ang patakaran sa cutoff ng upstream provider/account habang nagruruta. Nalalapat pa rin ang mga quota sa USD ng API key.", - "quotaPill": "QUOTA", + "quotaPill": "KOTA", "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Eksklusibong Lease", + "exclusiveLeaseNoticeTitle": "Eksklusibong Lease", + "exclusiveLeaseNoticeDesc": "Ang API key na ito ay may mga pahintulot sa eksklusibong lease para sa routing ng nakalaang koneksyon.", + "allConnections": "Lahat ng koneksyon", + "onlySelectedConnections": "Mga napiling koneksyon lamang", + "selectAtLeastOneConnection": "Pumili ng kahit isang koneksyon o piliin ang Lahat ng koneksyon.", + "allConnectionsDesc": "Maaaring gumamit ang key na ito ng anumang aktibong koneksyon.", + "restrictedToConnections": "Limitado sa {count, plural, one {# koneksyon} other {# koneksyon}}." }, "auditLog": { "title": "Log ng Audit", "searchPlaceholder": "Mga aksyon sa paghahanap...", "action": "Aksyon", "actor": "artista", - "target": "Target", - "ipAddress": "IP Address", - "timestamp": "Timestamp", + "target": "Puntirya", + "ipAddress": "Address ng IP", + "timestamp": "Tatak ng oras", "noEntries": "Walang nakitang audit entry", "filterByAction": "I-filter ayon sa pagkilos...", "filterByActor": "Salain ayon sa aktor...", @@ -2452,28 +2452,28 @@ "previous": "Nakaraang" }, "media": { - "title": "Media Playground", + "title": "Playground ng Media", "subtitle": "Bumuo ng mga larawan, video, at musika", "model": "Model", "prompt": "Prompt", "generate": "Bumuo", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Bumubuo...", + "loadingModels": "Nilo-load ang mga available na modelo...", + "noModels": "Walang available na modelo. I-configure muna ang mga provider na may kakayahan sa media.", + "error": "Nabigo ang Pagbuo", + "result": "Resulta", + "imageDescription": "Bumuo ng mga larawan mula sa mga text prompt gamit ang OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI, at iba pa.", + "videoDescription": "Gumawa ng mga video gamit ang AnimateDiff, Stable Video Diffusion sa pamamagitan ng ComfyUI o SD WebUI.", + "musicDescription": "Lumikha ng musika gamit ang Stable Audio Open o MusicGen sa pamamagitan ng ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Pag-embed", "image": "Larawan", "imageToText": "Larawan sa Teksto", "tts": "Teksto sa Pagsasalita", "stt": "Pagsasalita sa Teksto", "webSearch": "Paghahanap sa Web", - "webFetch": "Web Fetch", - "video": "Video", + "webFetch": "Pagkuha mula sa Web", + "video": "Bidyo", "music": "Musika", "ocr": "OCR" }, @@ -2510,16 +2510,16 @@ "failedToReadFile": "Bigo sa pagbasa ng file", "generationFailed": "Bigo ang pag-generate", "requestFailed": "Bigo ang kahilingan ({status})", - "provider": "Provider", + "provider": "Tagapagbigay", "credentialsRequired": "Nangangailangan ng API key sa Providers", "voice": "Boses", - "format": "Format", - "audioVideoFile": "Audio / Video File", + "format": "Pormat", + "audioVideoFile": "File ng Audio / Bidyo", "fileTooLarge": "Masyadong malaki ang file ({size}). Pinakamataas na pinapayagan: {max}.", "audioVideoFileHint": "Sumusuporta sa mga audio at video file hanggang 4 GB", "sourceImage": "Pinagmulang Larawan", "sourceImageHint": "Opsyonal para sa image-to-image, pag-edit at mga workflow ng pag-upscale.", - "maskImage": "Mask Image", + "maskImage": "Larawang Mask", "maskImageHint": "Opsyonal. Ginagamit ng mga inpaint-style na modelo na sumusuporta sa mga mask.", "text": "Teksto", "promptOptional": "Prompt (opsyonal)", @@ -2542,113 +2542,113 @@ "openrouterSttDescription": "Ang mga modelo ng speech-to-text ng OpenRouter ay gumagamit ng iyong nakatakdang koneksyon sa OpenRouter. Walang hiwalay na kredensyal ang kinakailangan." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Query sa Paghahanap", + "searchResults": "Mga Resulta ng Paghahanap", + "cachedResult": "Naka-cache", + "searchCost": "Gastos", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Advanced na pagsubok sa paghahanap na may paghahambing ng mga provider", + "compareProviders": "Paghambingin ang mga Provider", + "rerankResults": "Muling I-rank ang mga Resulta", + "searchHistory": "Kasaysayan ng Paghahanap", + "urlOverlap": "Overlap ng URL", + "noSearchProviders": "Walang naka-configure na provider ng paghahanap. Magdagdag ng mga provider sa Mga Setting.", + "noRerankModels": "Walang available na modelo para sa muling pag-rank", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Tagapagbigay", + "searchType": "Uri ng Paghahanap", + "maxResults": "Maximum na Resulta", + "filters": "Mga Filter", + "country": "Bansa", + "language": "Wika", + "timeRange": "Saklaw ng Panahon", + "includeDomains": "Mga Domain na Isasama", + "excludeDomains": "Mga Domain na Ibubukod", + "safeSearch": "Ligtas na Paghahanap", + "safeSearchOff": "Naka-off", + "safeSearchModerate": "Katamtaman", + "safeSearchStrict": "Mahigpit", + "queryPlaceholder": "Maglagay ng query sa paghahanap...", + "providerAuto": "awtomatiko (pinakamura)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "balita", + "optionAny": "anuman", + "timeRangeDay": "Nakalipas na araw", + "timeRangeWeek": "Nakalipas na linggo", + "timeRangeMonth": "Nakalipas na buwan", + "timeRangeYear": "Nakalipas na taon", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Nag-timeout ang kahilingan ({seconds}s)", + "networkError": "Error sa network", + "formatted": "Na-format", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "wala sa cache", + "cacheHit": "nasa cache", + "latency": "Latensi", + "cost": "Gastos", + "results": "Mga Resulta", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Modelo ng Muling Pagraranggo", + "positionDelta": "Pagbabago ng Posisyon", + "emptyState": "Magpadala ng query sa paghahanap upang makita ang mga resulta", "copy": "Kopyahin", "resetToDefault": "I-reset sa default", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Maghanap", + "tabScrape": "Kumuha ng Nilalaman", + "tabCompare": "Ihambing", + "modalitiesGuide": "Gabay sa mga modality", + "searchConceptTitle": "Maghanap", + "searchConceptDesc": "Maghanap = kumukuha ng listahan ng mga resulta sa web (pamagat, URL, snippet, marka ng kaugnayan)", + "scrapeConceptTitle": "Kumuha ng Nilalaman", + "scrapeConceptDesc": "Kumuha ng Nilalaman = kinukuha ang buong nilalaman ng isang URL (markdown, text o HTML)", + "compareConceptTitle": "Ihambing", + "compareConceptDesc": "Ihambing = pinapatakbo ang parehong query sa N provider nang magkatabi upang paghambingin ang latency, gastos, at pagkakapareho ng mga resulta", + "rerankConceptTitle": "Muling Iranggo", + "rerankConceptDesc": "Muling Iranggo = muling inaayos ang mga resulta sa pamamagitan ng LLM upang mapahusay ang kaugnayan batay sa query", + "autoConceptTitle": "Awtomatiko (pinakamura)", + "autoConceptDesc": "Awtomatiko (pinakamura) = awtomatikong pinipili ang pinakamurang available na provider na may naka-configure na mga kredensyal", + "providerCatalogTitle": "Katalogo ng Provider", + "kindSearch": "Maghanap", + "kindFetch": "Kunin/Kumuha ng Nilalaman", + "statusConfigured": "Naka-configure", + "statusMissing": "Walang kredensyal", + "statusRateLimited": "Nilimitahan ang rate", + "configureProvider": "I-configure sa Mga Provider", + "loadingProviders": "Nilo-load ang mga provider…", + "failedToLoadProviders": "Hindi na-load ang mga provider", + "costPerQuery": "Gastos/query", + "freeQuota": "Libreng quota/buwan", + "scrapeUrl": "URL na kukunan ng data", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "Kinakailangan ang URL", "scrapeUrlInvalid": "Di-wastong URL — dapat itong magsimula sa http:// o https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Kunin", + "scrapeExtracting": "Kinukuha…", + "scrapeFullPage": "Buong pahina", + "scrapeFormat": "Pormat", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", + "formatText": "Teksto", + "scrapePreview": "Paunang Tingin", + "scrapeRaw": "Hilaw", + "scrapeContentTruncated": "(pinaikli, tingnan ang raw)", "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "scrapeProvider": "Tagapagbigay", + "scrapeSize": "Laki", "scrapeEmptyState": "Maglagay ng URL upang i-extract ang nilalaman nito", "scrapeProvidersAvailable": "Mga available na provider: Firecrawl, Jina Reader, Tavily.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Ihambing", + "compareRunning": "Inihahambing…", + "autoProvider": "Awtomatiko (pinakamura)", + "configuredStatus": "Naka-configure", + "rateLimitedStatus": "Nilimitahan ang rate", + "noCredential": "Walang kredensyal", + "searchTypeLabel": "Uri", + "rerankModelLabel": "Modelo sa muling pagraranggo", + "noneOption": "Wala", + "size": "Laki", "configurationPane": "Pane ng configuration", - "configuration": "Configuration", + "configuration": "Konfigurasyon", "status": "Katayuan", "compareProviderHint": "Pumili ng hanggang 4 na provider sa tab na Compare upang paghambingin ang mga ito nang magkatabi.", "history": "Kasaysayan", @@ -2664,7 +2664,7 @@ "httpError": "Error {status}", "failed": "Nabigo", "requestFailed": "Nabigo ang kahilingan", - "embedding": "Embedding", + "embedding": "Pag-embed", "embeddingSample": "Kumusta, mundo!", "image": "Larawan", "imageSample": "Isang payapang tanawin na may mga bundok sa paglubog ng araw", @@ -2674,14 +2674,14 @@ "documentUrl": "URL ng Dokumento", "fileTooLarge25Mb": "Masyadong malaki ang file — max 25 MB", "selectAudioFirst": "Mangyaring pumili muna ng audio file.", - "speechToText": "Speech to Text", + "speechToText": "Pagsasalita Patungong Teksto", "chooseFile": "Pumili ng file…", - "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — max 25 MB", - "textToSpeech": "Text to Speech", + "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — hanggang 25 MB", + "textToSpeech": "Teksto Patungong Pagsasalita", "ttsSample": "Kumusta, ito ay isang pagsubok sa text-to-speech.", - "video": "Video", + "video": "Bidyo", "videoSample": "Isang time-lapse ng mga ulap sa ibabaw ng bulubundukin", - "webFetch": "Web Fetch", + "webFetch": "Pagkuha mula sa Web", "webSearchSample": "Ano ang OmniRoute AI gateway?", "noActiveProviderDescription": "Walang aktibong search provider. Mag-configure ng isa sa Providers.", "configureProviders": "I-configure ang mga provider", @@ -2701,14 +2701,14 @@ "compareEmptyDescription": "Ipapakita ang mga resulta nang magkatabi kasama ang latency, gastos, at overlap ng URL" }, "cliTools": { - "title": "CLI Tools", + "title": "Mga CLI Tool", "classifierCompatTitle": "Compatibility ng auto-permission classifier", "classifierCompatDescription": "I-short-circuit ang security classifier ng --permission-mode auto ng Claude Code gamit ang isang synthetic allow response upang hindi mag-fail closed ang mga fallback route. Naka-off bilang default.", - "classifierCompatCycle": "Cycle: off → auto → always", + "classifierCompatCycle": "Siklo: naka-off → awtomatiko → palagi", "classifierCompatLoadFailed": "Nabigong i-load ang setting", "classifierCompatMode": { "off": "Naka-off", - "auto": "Auto", + "auto": "Awtomatiko", "always": "Palagi" }, "ccDiscoveryInfoButton": "Paano i-enable ang discovery sa Claude Code", @@ -2717,7 +2717,7 @@ "ccOnboardingTitle": "settings.json para sa pagtuklas ng modelo ng gateway", "ccOnboardingCopy": "Kopyahin", "ccOnboardingCopied": "Nakopya", - "ccOnboardingKeyPlaceholder": "''", + "ccOnboardingKeyPlaceholder": "''", "ccOnboardingWindowNote": "Ipinapalagay ng Claude Code ang 200K na konteksto para sa anumang model id na hindi nito nakikilala. Para sa isang modelo na may ibang tunay na bintana, idagdag ang CLAUDE_CODE_AUTO_COMPACT_WINDOW sa ilalim nito upang hindi masyadong maaga ang pag-activate ng auto-compaction.", "failedSave": "Nabigong i-save", "profileSyncTitle": "Auto-sync ng profile ng CLI", @@ -2741,18 +2741,18 @@ "effortMedium": "Katamtaman", "effortHigh": "Mataas", "effortExtraHigh": "Napakataas", - "effortMax": "Max", + "effortMax": "Pinakamataas", "effortUltra": "Ultra", "wireApi": "Wire API", "modelAliases": "Mga alias ng modelo", "addModel": "Magdagdag ng modelo", "routeModelPlaceholder": "I-route ang {model} sa...", - "baseUrl": "Base URL", - "apiKey": "API Key", + "baseUrl": "Batayang URL", + "apiKey": "Susi ng API", "configured": "Na-configure", "notConfigured": "Hindi naka-configure", "notInstalled": "Hindi naka-install", - "custom": "Custom", + "custom": "Pasadya", "unknown": "Hindi alam", "lastSavedAt": "Huling na-save: {date}", "never": "Hindi kailanman", @@ -2768,7 +2768,7 @@ "configurationSaved": "Matagumpay na na-save ang configuration.", "failedToSave": "Nabigong i-save ang configuration.", "noApiKeysCreateOne": "Walang mga API key - Gumawa ng isa sa pahina ng Keys", - "defaultOmnirouteKey": "sk_omniroute (default)", + "defaultOmnirouteKey": "sk_omniroute (paunang-takda)", "selectModel": "Piliin ang Modelo", "selectModelForAlias": "Pumili ng modelo para sa {alias}", "selectModelForTool": "Pumili ng Modelo para sa {tool}", @@ -2780,9 +2780,9 @@ "cliRuntimeDetected": "Nakita at handa na ang runtime ng CLI", "cliFoundNotRunnable": "Natagpuan ang CLI ngunit hindi mapapatakbo{reason}", "cliRuntimeNotDetected": "Hindi nakita ang runtime ng CLI", - "binary": "Binary", + "binary": "Binaryo", "configPath": "I-configure ang landas", - "configPathShort": "Config", + "configPathShort": "Configuration", "failedCheckRuntimeStatus": "Nabigong suriin ang katayuan ng runtime.", "copy": "Kopyahin", "copied": "Kinopya", @@ -2803,7 +2803,7 @@ "saveMappings": "I-save ang Mappings", "mappingsSaved": "Na-save ang mga pagmamapa!", "failedSaveMappings": "Nabigong i-save ang mga pagmamapa", - "reasoningEffortDefault": "Default", + "reasoningEffortDefault": "Paunang-takda", "reasoningEffortHint": "Pinapanatili ng default ang reasoning effort na ipinadala ng agent", "reasoningEffortTier": { "none": "Wala", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Idagdag", "antigravityStep2Suffix": "sa iyong host file bilang 127.0.0.1.", "antigravityStep3": "3. Buksan ang Antigravity at ang mga kahilingan ay i-proxy.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "Nagpapadala ang {toolName} ng mga request sa endpoint ng provider nito. Sinasagap at nire-redirect ng MITM ang mga ito sa OmniRoute.", + "mitmStep1": "1. Simulan ang MITM upang iruta ang mga request sa pamamagitan ng OmniRoute.", + "mitmStep2Prefix": "2. Idagdag ang", + "mitmStep2Suffix": "sa iyong hosts file bilang 127.0.0.1.", + "mitmStep3": "3. Buksan ang {toolName} at dadaan sa proxy ang mga request.", "sudoPasswordRequiredTitle": "Kinakailangan ang Sudo Password", "sudoPasswordHint": "Kinakailangan ang password ng administrator upang baguhin ang mga host file at mga setting ng proxy ng system.", "enterSudoPassword": "Ipasok ang sudo password", @@ -2866,7 +2866,7 @@ "failed": "Nabigo", "resetDone": "I-reset!", "omnirouteConfiguredOpenAiCompatible": "Ang OmniRoute ay na-configure bilang OpenAI-compatible na provider", - "provider": "Provider", + "provider": "Tagapagbigay", "model": "Modelo", "providers": "Mga provider", "auth": "Awth", @@ -2908,7 +2908,7 @@ "continue": "Gamitin kapag nagpapatakbo ng Magpatuloy sa mga IDE at kailangan mo ng portable JSON-based na configuration ng provider.", "opencode": "Gamitin kapag mas gusto mo ang terminal-native agent run at scripted automation sa pamamagitan ng OpenCode.", "kiro": "Gamitin kapag isinasama ang Kiro at kinokontrol ang pagruruta ng modelo sa gitna mula sa OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Gamitin kapag gusto mo ng AI-first IDE na may mga Codeium/Windsurf model na iniruruta sa pamamagitan ng OmniRoute.", "antigravity": "Gamitin kapag ang trapiko ng Antigravity/Kiro ay dapat ma-intercept sa MITM at iruta sa OmniRoute.", "copilot": "Gamitin kapag gusto mong Copilot chat style UX habang ipinapatupad ang mga OmniRoute key at mga panuntunan sa pagruruta.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2921,38 +2921,38 @@ "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "xAI Grok Build TUI coding agent na may suporta sa custom provider", - "droid": "Factory Droid AI Assistant", + "droid": "AI Assistant ng Factory Droid", "openclaw": "Buksan ang Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "cline": "CLI ng Cline AI Coding Assistant", + "kilo": "CLI ng Kilo Code AI Assistant", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", "continue": "Ipagpatuloy ang AI Assistant", "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "kiro": "Amazon Kiro — IDE na pinapagana ng AI", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp CLI na katulong sa coding", + "hermes": "Hermes AI na Katulong sa Terminal", "hermes-agent": "Hermes Agent (ng Nousresearch) - Advanced terminal AI na may suporta sa multi-model (delegation, vision, compression, atbp.)", "custom": "Generic na OpenAI-compatible CLI o SDK configuration generator", "aider": "Aider AI pair-programming CLI na may OpenAI-compatible na base URL", "forge": "ForgeCode coding agent CLI na may custom provider", "cursor-cli": "Cursor Agent CLI sa headless agent mode", "roo": "Roo Code AI assistant para sa VS Code", - "jcode": "jcode terminal coding agent", + "jcode": "jcode na ahente sa coding sa terminal", "deepseek-tui": "DeepSeek TUI coding agent na nakasulat sa Rust", "codewhale": "CodeWhale coding agent, ang kahalili sa DeepSeek TUI", - "smelt": "Smelt coding agent CLI", - "pi": "Lightweight Pi terminal coding agent", + "smelt": "Smelt na CLI ng ahente sa coding", + "pi": "Magaan na Pi terminal coding agent", "crush": "Crush terminal coding agent ng Charm", - "goose": "Goose autonomous agent CLI", - "interpreter": "Open Interpreter autonomous coding agent CLI", - "omp": "Oh My Pi terminal coding agent", + "goose": "Goose na CLI ng awtonomong ahente", + "interpreter": "Open Interpreter na CLI ng awtonomong ahente sa coding", + "omp": "Oh My Pi na ahente sa coding sa terminal", "letta": "Letta CLI agent na may persistent memory at paggamit ng tool", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — kusang humuhusay na RLM coding harness na may suporta para sa OpenAI-compatible na provider", "warp": "Warp AI terminal na may suporta sa custom provider", - "agent-deck": "Agent Deck multi-agent orchestrator", + "agent-deck": "Agent Deck na tagapag-orkestra ng maraming ahente", "5dive": "5dive — self-hosted fleet ng coding agents; isang auth profile ang nagtuturo sa kanilang lahat sa OmniRoute" }, "guides": { @@ -2971,10 +2971,10 @@ "desc": "Paganahin ang opsyong \"OpenAI API key\"." }, "3": { - "title": "Base URL" + "title": "Batayang URL" }, "4": { - "title": "API Key" + "title": "Susi ng API" }, "5": { "title": "Magdagdag ng Custom na Modelo", @@ -2992,7 +2992,7 @@ "desc": "Buksan ang Continue configuration file" }, "2": { - "title": "API Key" + "title": "Susi ng API" }, "3": { "title": "Piliin ang Modelo" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "I-install ang OpenCode", + "desc": "I-install gamit ang npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Susi ng API" }, "3": { - "title": "Set Base URL", + "title": "Itakda ang Base URL", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Pumili ng Modelo" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Gamitin ang Variant ng Pag-iisip", + "desc": "Para sa mga modelong may pag-iisip, patakbuhin gamit ang --variant high/low/max (halimbawang command sa ibaba)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Buksan ang Mga Setting ng Kiro", + "desc": "Pumunta sa Mga Setting → AI Provider" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Batayang URL", + "desc": "I-paste ang URL ng iyong OmniRoute endpoint" }, "3": { - "title": "API Key" + "title": "Susi ng API" }, "4": { - "title": "Select Model" + "title": "Pumili ng Modelo" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Buksan ang Mga Setting ng AI", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Magdagdag ng Custom na Provider", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Batayang URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Susi ng API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Pumili ng Modelo", + "desc": "Pumili ng modelo mula sa dropdown" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Custom na CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Mga Kategorya ng Tool", "visibleToolsCount": "{count} tool ang available", "customCliBuilderTitle": "Tagabuo ng CLI na katugma sa OpenAI", "customCliBuilderDescription": "Bumuo ng mga env vars at JSON snippet para sa anumang CLI o SDK na tumatanggap ng base URL, API key, at model ID na tugma sa OpenAI.", @@ -3102,23 +3102,23 @@ "customCliTargetModelLabel": "Target na modelo", "customCliEndpointHintLabel": "Paano i-wire ang endpoint", "customCliEndpointHint": "Ituro ang alinmang OpenAI-compatible na client sa OmniRoute /v1 base URL. Ang endpoint ng raw chat completions ay {endpoint}. Gamitin ang block ng JSON kapag gusto ng tool ng object ng provider, o ang env script kapag nagbabasa ito ng mga variable na OPENAI_*.", - "customCliEnvBlockTitle": "Env / shell snippet", + "customCliEnvBlockTitle": "Snippet ng env / shell", "customCliJsonBlockTitle": "Ang provider ng JSON block", "networkError": "Error sa network", "other": "Iba pa", - "preview": "Preview", + "preview": "Paunang Tingin", "refreshAll": "I-refresh lahat", "hermesRoleDefault": "Default (pangunahin)", "hermesRoleDefaultDesc": "Pangunahing modelo ng pag-uusap", "hermesRoleDelegation": "Delegasyon (mga subagent)", "hermesRoleDelegationDesc": "Modelong orchestrator at sub-agent", - "hermesRoleVision": "Vision", + "hermesRoleVision": "Biswal", "hermesRoleVisionDesc": "Pag-unawa sa imahe at screenshot", "hermesRoleCompression": "Kompresyon", "hermesRoleCompressionDesc": "Kompresyon at pagbubuod ng prompt", - "hermesRoleWebExtract": "Web Extract", + "hermesRoleWebExtract": "Pagkuha mula sa Web", "hermesRoleWebExtractDesc": "Pag-extract ng nilalaman ng web page", - "hermesRoleSkillsHub": "Skills Hub", + "hermesRoleSkillsHub": "Sentro ng mga Kasanayan", "hermesRoleSkillsHubDesc": "Pangangatwiran sa mga kasanayan at paggamit ng tool", "hermesRoleApproval": "Pag-apruba", "hermesRoleApprovalDesc": "Mga desisyon sa kaligtasan at pag-apruba", @@ -3130,9 +3130,9 @@ "hermesRoleMemoryQueryRewriteDesc": "Pagsusuri ng query sa paghahanap ng memorya", "hermesRoleTtsAudioTags": "Mga Tag ng TTS Audio", "hermesRoleTtsAudioTagsDesc": "Pagbuo ng TTS Audio Tag", - "hermesRoleTriageSpecifier": "Triage Specifier", + "hermesRoleTriageSpecifier": "Tagatukoy ng Triage", "hermesRoleTriageSpecifierDesc": "Tiyak na ispesipikasyon ng isyu at PR", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Tagahati-hati ng Kanban", "hermesRoleKanbanDecomposerDesc": "Pagbabasag ng mga Gawain sa Kanban", "hermesRoleProfileDescriber": "Tagapaglarawan ng Profile", "hermesRoleProfileDescriberDesc": "Paglalarawan ng profile ng gumagamit", @@ -3140,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Paghuhusga ng pagkumpleto ng layunin", "hermesRoleCurator": "Kurador", "hermesRoleCuratorDesc": "Pag-aalaga ng Kasanayan at Memorya", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Pagsubaybay", "hermesRoleMonitorDesc": "Pagsubaybay sa Background", "hermesRoleBackgroundReview": "Pagsusuri ng Background", "hermesRoleBackgroundReviewDesc": "Pagsusuri ng background code", @@ -3159,21 +3159,21 @@ "hermesRolesWillUpdate": "{count, plural, one {# tungkulin ang mau-update} other {# na tungkulin ang mau-update}}", "hermesPreviewPath": "Preview — isusulat sa ~/.hermes/config.yaml", "hermesSaveDescription": "Inise-save ang napiling modelo para sa bawat tungkulin sa", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "Generator ng Config ng GitHub Copilot", "copilotGeneratorDescriptionPrefix": "Bumubuo sa", "copilotGeneratorDescriptionSuffix": "block para sa VS Code GitHub Copilot gamit ang pattern ng Azure vendor. Piliin ang mga modelong gusto mo, pagkatapos ay kopyahin ang JSON sa iyong config file.", "copilotCompatibilityWarning": "Gumagamit ang configuration na ito ng Azure vendor workaround para sa mga custom na listahan ng modelo. Sinubukan sa VS Code ≥ 1.109 at GitHub Copilot Chat ≥ v0.37. Maaaring baguhin ng mga susunod na update sa extension ang gawi na ito.", - "copilotApiKey": "API Key", + "copilotApiKey": "Susi ng API", "copilotSelectModels": "Pumili ng mga modelo ({selected}/{total})", "selectAll": "Piliin lahat", "loadingModels": "Naglo-load ng mga modelo...", "advancedOptions": "Mga advanced na opsyon", - "vision": "Vision", + "vision": "Biswal", "copilotCopyConfigForModels": "Kopyahin ang config ({count, plural, one {# modelo} other {# na modelo}})", "copilotFilterModelsPlaceholder": "I-filter ang mga modelo...", "copilotMaxInputTokens": "Max Input Token", "copilotMaxOutputTokens": "Max Output Token", - "copilotToolCalling": "Tool Calling", + "copilotToolCalling": "Pagtawag sa Tool", "copilotPasteInto": "Idikit sa:", "copilotReloadInstruction": "Pagkatapos ay i-reload ang VS Code at i-set ang API key sa input prompt.", "wireApiChatCompletions": "Mga Pagkumpleto ng Chat (/chat/pagkumpleto)", @@ -3190,7 +3190,7 @@ "cliproxyapiRequestFailed": "Nabigong humiling", "cliproxyapiRestart": "I-restart", "cliproxyapiStart": "Simulan", - "cliproxyapiStatusError": "Error", + "cliproxyapiStatusError": "Pagkakamali", "cliproxyapiStatusInstalled": "Naka-install", "cliproxyapiStatusNotInstalled": "Hindi Naka-install", "cliproxyapiStatusRunning": "Nagtatakbo", @@ -3219,15 +3219,15 @@ "addModelToCombo": "Magdagdag ng Modelo sa Combo", "routingStrategy": "Diskarte sa Pagruruta", "maxRetries": "Max na muling sumusubok", - "timeout": "Timeout (ms)", - "healthcheck": "Healthcheck", + "timeout": "Palugit (ms)", + "healthcheck": "Pagsusuri sa Kalagayan", "priority": "Priyoridad", - "fallback": "Fallback", + "fallback": "Pamalit", "roundRobin": "Round Robin", - "random": "Random", + "random": "Sapalaran", "leastLatency": "Pinakamababang Latency", "comboName": "Pangalan ng Combo", - "comboNamePlaceholder": "my-combo", + "comboNamePlaceholder": "aking-kumbinasyon", "comboDescription": "Paglalarawan", "comboDescriptionPlaceholder": "Opsyonal na tala na naglalarawan sa combo na ito", "deleteConfirm": "I-delete ang combo na ito?", @@ -3245,14 +3245,14 @@ "testResults": "Mga Resulta ng Pagsubok — {name}", "resolvedBy": "Nalutas ni:", "more": "+{count} higit pa", - "reqs": "reqs", + "reqs": "mga kinakailangan", "success": "tagumpay", "proxyConfigured": "Na-configure ang proxy", "copyComboName": "Kopyahin ang pangalan ng combo", "enableCombo": "Paganahin ang combo", "disableCombo": "Huwag paganahin ang combo", - "testCombo": "Test combo", - "duplicate": "Duplicate", + "testCombo": "Subukan ang kumbinasyon", + "duplicate": "Gumawa ng Kopya", "proxyConfig": "Configuration ng proxy", "nameRequired": "Pangalan ang kailangan", "nameInvalid": "Tanging mga titik, numero, -, _, / at . pinapayagan", @@ -3260,23 +3260,23 @@ "priorityDesc": "Sequential fallback: subukan muna ang modelo 1, pagkatapos ay 2, atbp.", "weightedDesc": "Namamahagi ng trapiko ayon sa porsyento ng timbang na may fallback", "roundRobinDesc": "Paikot na pamamahagi: ang bawat kahilingan ay mapupunta sa susunod na modelo sa pag-ikot", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Pagpapasa ng Konteksto", + "contextRelayDesc": "Pinananatili ang pagpapatuloy ng session gamit ang mga buod ng pagpapasa kapag nagpapalit-palit ang mga account", "randomDesc": "Uniform random selection, pagkatapos ay fallback sa natitirang mga modelo", "leastUsedDesc": "Pinipili ang modelo na may kaunting mga kahilingan, binabalanse ang pagkarga sa paglipas ng panahon", "costOptimizedDesc": "Mga ruta muna sa pinakamurang modelo batay sa pagpepresyo", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Pare-parehong idinidirekta ang bawat muling magagamit na prefix ng prompt sa parehong account ng provider", "resetAware": "I-reset-Aware RR", "resetAwareDesc": "Binabalanse ang natitirang quota laban sa 5h at lingguhang pag-reset, pagkatapos ay round-robins ang mga katulad na marka", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Batay sa Timbang ng Quota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", - "fusion": "Fusion", + "strictRandom": "Mahigpit na Random", + "strictRandomDesc": "Naka-shuffle na deck — ginagamit nang isang beses ang bawat modelo bago muling i-shuffle", + "fusion": "Pagsasanib", "fusionDesc": "Ipinapadala ang prompt sa bawat panel model nang sabay-sabay, pagkatapos ay bubuo ang isang judge model ng isang pangwakas na sagot", - "fusionJudgeModel": "Judge model", + "fusionJudgeModel": "Modelong tagahatol", "fusionJudgeModelHelp": "Modelo na nagsasama-sama ng mga sagot ng panel sa isang pangwakas na tugon. Iwanang walang laman upang gamitin ang unang panel model.", - "fusionMinPanel": "Min panel", + "fusionMinPanel": "Minimum na panel", "fusionMinPanelHelp": "Mga matagumpay na sagot ng panel na kinakailangan bago bigyan ng grace window ang mga nahuhuli (default 2).", "fusionStragglerGraceMs": "Grace ng straggler (ms)", "fusionStragglerGraceMsHelp": "Kung gaano katagal maghihintay para sa mabagal na mga panel model kapag naabot na ang quorum (default 8000).", @@ -3287,14 +3287,14 @@ "advancedSettings": "Mga Advanced na Setting", "retryDelay": "Subukan muli ang Pagkaantala (ms)", "concurrencyPerModel": "Concurrency / Modelo", - "queueTimeout": "Queue Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "queueTimeout": "Timeout ng Queue (ms)", + "contextRelayHandoffThreshold": "Threshold ng Pagpapasa", + "contextRelayHandoffThresholdHelp": "Kapag umabot sa threshold na ito ang paggamit ng quota, bumubuo ang OmniRoute ng isang nakabalangkas na buod ng pagpapasa bago maubos ang quota ng aktibong account.", + "contextRelayMaxMessages": "Maximum na Bilang ng Mensahe para sa Buod", + "contextRelayMaxMessagesHelp": "Nililimitahan kung gaano karaming kamakailang history ang pinaiikli sa buod ng pagpapasa.", + "contextRelaySummaryModel": "Modelo ng Buod", + "contextRelaySummaryModelHelp": "Opsyonal na pamalit na modelo na ginagamit lamang sa pagbuo ng buod ng pagpapasa. Iwanang walang laman upang muling gamitin ang aktibong modelo ng kumbinasyon.", + "contextRelayProviderNote": "Kasalukuyang bumubuo ang Pagpapasa ng Konteksto ng mga pagpapasa para sa pagpapalit-palit ng Codex account. Ipares ito sa maraming account ng parehong provider para sa pinakamahusay na pagpapatuloy.", "advancedHint": "Iwanang walang laman upang gumamit ng mga pandaigdigang default. Ino-override ng mga ito ang mga setting ng bawat provider.", "failoverBeforeRetry": "Failover Bago Subukang Muli", "maxSetRetries": "Max Set Retry", @@ -3314,15 +3314,15 @@ "liveSelectCombo": "Pumili ng combo", "liveSelectComboPlaceholder": "— pumili ng combo —", "liveTargetCount": "{count, plural, one {# target} other {# na target}}", - "liveSingle": "Single", - "liveFleet": "Fleet", - "playgroundStatusAvailable": "Available", + "liveSingle": "Isa", + "liveFleet": "Pangkat", + "playgroundStatusAvailable": "Magagamit", "playgroundStatusNoQuota": "Walang Quota", - "playgroundStatusDegraded": "Degraded", - "playgroundStatusError": "Error", + "playgroundStatusDegraded": "Humina", + "playgroundStatusError": "Pagkakamali", "playgroundStatusUnknown": "Hindi Alam", "playgroundNetworkError": "Error sa network habang nagpapatakbo ng simulasyon", - "playgroundTitle": "Combo Playground", + "playgroundTitle": "Playground ng Kumbinasyon", "playgroundDescription": "Isimulate kung paano iruruta ang mga request sa iyong mga combo", "playgroundConfiguration": "Konfigurasyon", "playgroundNoCombosConfigured": "Walang naka-configure na mga combo", @@ -3335,7 +3335,7 @@ "playgroundStrategy": "Estratehiya", "playgroundEstimatedCost": "Tantiyang Gastos", "playgroundEstimatedLatency": "Tinatayang Latency", - "playgroundFallback": "fallback", + "playgroundFallback": "reserba", "playgroundWeight": "timbang {value}", "playgroundWarningCount": "Mga Babala ({count})", "playgroundErrorCount": "Mga Error ({count})", @@ -3344,41 +3344,41 @@ "playgroundCreateFirst": "Gumawa muna ng isa", "weighted": "Natimbang", "leastUsed": "Hindi gaanong nagamit", - "costOpt": "Cost-Opt", + "costOpt": "Optimisado sa Gastos", "strategyGuideTitle": "Paano gamitin ang diskarteng ito", "strategyGuideWhen": "Kailan gagamitin", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "strategyGuideAvoid": "Iwasan kapag", + "strategyGuideExample": "Halimbawa", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "Mayroon kang isang gustong modelo at nais mo lamang gumamit ng reserba kapag pumalya ito.", + "avoid": "Kailangan mong ipamahagi ang mga request sa iba't ibang modelo.", + "example": "Pangunahing modelo para sa coding na may mas murang reserba kapag may outage." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Kailangan mo ng kontroladong paghahati ng traffic sa iba't ibang modelo.", + "avoid": "Hindi mo kayang mapanatiling tumpak ang mga timbang sa paglipas ng panahon.", + "example": "80% matatag na modelo + 20% rollout ng canary model." }, "round-robin": { - "when": "You want predictable and even distribution.", + "when": "Gusto mo ng mahuhulaan at pantay na pamamahagi.", "avoid": "Masyadong malaki ang pagkakaiba ng mga modelo sa latency o gastos.", "example": "Parehong modelo sa maraming account upang maikalat ang throughput." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Gusto mo ng simpleng pamamahagi na may kaunting setup.", + "avoid": "Kailangan mo ng mahihigpit na garantiya sa traffic.", + "example": "Mabilisang pagbuo ng prototype gamit ang magkakatumbas na modelo." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Gusto mo ng umaangkop na pagbabalanse batay sa kasalukuyang demand.", + "avoid": "Masyadong mababa ang trapiko para makinabang sa pagbabalanse ng paggamit.", + "example": "Magkahalong workload kung saan madalas ma-overload ang isang modelo." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Ang pagbawas ng gastos ang iyong pangunahing priyoridad.", + "avoid": "Kulang o luma na ang datos ng pagpepresyo.", + "example": "Mga background o batch job kung saan mas pinipili ang mas mababang gastos." }, "reset-aware": { "when": "Nagruruta ka sa maraming account na may quota telemetry at iba't ibang mga reset window.", @@ -3386,19 +3386,19 @@ "example": "Mas gusto ang isang 60% lingguhang pag-reset ng account bukas kaysa sa isang 80% na pag-reset ng account sa ibang pagkakataon." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Gamitin kapag gusto mo ng ganap na pantay na pamamahagi — gagamitin muna nang tig-iisang beses ang bawat modelo bago umulit.", + "avoid": "Iwasan kapag magkakaiba ang kalidad o latency ng mga modelo at mahalaga ang pagkakasunod-sunod.", + "example": "Halimbawa: Maraming account ng iisang modelo upang pantay na maipamahagi ang paggamit." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Gamitin kapag gusto mo ng pagpiling may mababang latency gamit ang Power-of-Two-Choices algorithm.", + "avoid": "Iwasan para sa maliliit na combo na may 2 o mas kaunting modelo — wala itong bentahe kumpara sa round-robin.", + "example": "Halimbawa: Mataas na throughput na inference sa 4+ na magkakatumbas na endpoint ng modelo." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Gamitin kapag kailangang magpatuloy ang mahahabang session sa kabila ng pagpapalit-palit ng account nang hindi nawawala ang kasalukuyang konteksto.", + "avoid": "Iwasan kapag bihira ang pagpapalit ng account o kapag ayaw mo ng mga karagdagang kahilingan sa pagbubuod.", + "example": "Halimbawa: Mga Codex session na nagpapalit-palit sa maraming account kapag malapit nang maubos ang quota." }, "fill-first": { "when": "Gamitin kapag gusto mong ganap na maubos ang quota ng isang provider bago lumipat sa susunod.", @@ -3423,48 +3423,48 @@ }, "advancedHelp": { "maxRetries": "Ilang muling pagsubok ang sinubukan bago mabigo ang isang kahilingan.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "retryDelay": "Paunang paghihintay sa pagitan ng mga muling pagsubok. Nababawasan ng mas matataas na halaga ang biglaang pagdami ng mga kahilingan.", + "timeout": "Pinakamahabang tagal ng kahilingan bago ito ihinto.", + "healthcheck": "Nilalaktawan sa mga pagpapasya sa pagruruta ang mga hindi maayos na modelo/provider.", + "concurrencyPerModel": "Pinakamaraming sabay-sabay na kahilingang pinapayagan sa bawat modelo sa round-robin.", + "queueTimeout": "Gaano katagal maaaring maghintay sa pila ang isang kahilingan bago mag-timeout.", "failoverBeforeRetry": "Kapag pinagana, ang anumang upstream na error ay magti-trigger ng agarang failover sa susunod na combo target, na nilalaktawan ang lahat ng muling pagsubok at fallback na URL.", "maxSetRetries": "Bilang ng beses na muling subukan ang buong target na itinakda kapag nabigo ang bawat target. 0 = walang set-level na muling subukan.", "setRetryDelayMs": "Pagkaantala sa pagitan ng mga set-level na muling pagsubok, na nagbibigay ng mga lumilipas na isyu ng oras upang malutas.", "disableSessionStickiness": "Mag-rotate sa ibang koneksyon sa bawat request sa halip na i-pin ang buong pag-uusap sa isang koneksyon sa pamamagitan ng first-message hash. Ino-override ang global default. Iwanan sa Inherit upang mapanatili ang mga prompt-cache hit para sa mga multi-turn chat." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", + "templatesTitle": "Mabilisang template", + "templatesDescription": "Maglapat ng panimulang profile, pagkatapos ay i-adjust ang mga modelo at config.", "templateApply": "Ilapat ang template", "templateHighAvailability": "Mataas na kakayahang magamit", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", + "templateHighAvailabilityDesc": "Pagruruta ayon sa priyoridad na may mga pagsusuri sa kalagayan at ligtas na muling pagsubok.", + "templateCostSaver": "Pangtipid sa gastos", + "templateCostSaverDesc": "Pagruruta na naka-optimize sa gastos para sa mga workload na inuuna ang badyet.", + "templateBalanced": "Balanseng load", + "templateBalancedDesc": "Pagruruta sa hindi gaanong ginagamit upang maipamahagi ang demand sa paglipas ng panahon.", + "usageGuideHide": "Itago", + "usageGuideDontShowAgain": "Huwag nang ipakita muli", + "usageGuideShow": "Ipakita ang gabay", + "quickTestTitle": "Handa nang i-validate ang combo", + "quickTestDescription": "Magpatakbo ng pagsubok ngayon upang kumpirmahin ang fallback at gawi ng latency.", "testNow": "Subukan ngayon", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "pricingCoverage": "Saklaw ng pagpepresyo", + "pricingCoverageHint": "Pinakamahusay na gumagana ang cost-optimized kapag may presyo ang lahat ng modelo sa combo.", + "pricingAvailable": "May available na presyo", + "pricingMissing": "Walang presyo", + "pricingAvailableShort": "may presyo", + "pricingMissingShort": "walang-presyo", "fallbackOnlyOnQuotaExhaustion": "Tanging umusad sa pagkaubos ng quota", - "fallbackOnlyOnQuotaExhaustionShort": "quota-only fallback", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "fallbackOnlyOnQuotaExhaustionShort": "fallback na quota-only", + "warningRoundRobinSingleModel": "Pinakakapaki-pakinabang ang round-robin kapag may hindi bababa sa 2 modelo.", + "warningCostOptimizedPartialPricing": "Tanging {priced} sa {total} modelo ang may impormasyon sa presyo. Maaaring bahagyang isaalang-alang ng pagruruta ang gastos.", + "warningCostOptimizedNoPricing": "Walang nakitang data ng presyo para sa combo na ito. Maaaring hindi inaasahan ang pagruruta ng Cost-optimized.", + "filterAll": "Lahat", + "filterIntelligent": "Matalino", + "filterDeterministic": "Deterministiko", + "filterEmptyTitle": "Walang combo na tumutugma sa filter ng estratehiyang ito.", + "filterEmptyIntelligentDescription": "Gumawa ng auto o LKGP combo upang magkaroon ng laman ang dashboard ng matalinong pagruruta.", + "filterEmptyDeterministicDescription": "Mga auto at LKGP combo lang ang umiiral sa ngayon. Bumalik sa Lahat o gumawa ng deterministikong combo.", "readinessTitle": "Handa nang makatipid?", "readinessDescription": "Suriin ang checklist bago gawin o i-update ang combo na ito.", "readinessCheckName": "May bisa ang combo name", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Magdagdag ng kahit isang modelo.", "saveBlockWeighted": "Itakda ang mga timbang sa 100% (kasalukuyan: {total}%).", "saveBlockPricing": "Magdagdag ng pagpepresyo para sa hindi bababa sa isang modelo o pumili ng ibang diskarte.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Inirerekomendang setup", + "applyRecommendations": "Ilapat ang mga rekomendasyon", + "recommendationsUpdated": "Na-update ang mga rekomendasyon para sa {strategy}.", + "recommendationsApplied": "Inilapat ang mga rekomendasyon sa combo na ito.", + "intelligentPanelTitle": "Dashboard ng Matalinong Pagruruta", + "intelligentPanelDesc": "Real-time na pagmamarka at katayuan ng kalusugan para sa auto-routing combo na ito.", "configOnlyStatus": "View ng Configuration", "configOnlyHint": "Ipinapakita lamang ng panel na ito ang mga routing input. Ang live na estado ng breaker ay available sa page ng Health.", "routingInputs": "Mga Routing Input", @@ -3497,7 +3497,7 @@ "builderGlobalShortcuts": "Mga Shortcut:", "builderGlobalNoResults": "Walang model na natagpuan para sa \"{query}\".", "builderGlobalProviderLabel": "Tagapagbigay:", - "builderGlobalAccountCount": "{count, plural, one {# account} other {# accounts}}", + "builderGlobalAccountCount": "{count, plural, one {# account} other {# account}}", "builderGlobalAdded": "Idinagdag", "builderGlobalAdd": "Magdagdag", "manualModel": "Manwal na modelo", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Hindi kilalang prefix ng provider.", "builderDynamicAccountShort": "Dynamic na account", "builderNeedValidName": "Magtakda ng wastong pangalan ng combo bago magpatuloy.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Pangkalahatang-ideya ng Katayuan", + "normalOperation": "Normal na Operasyon", + "allProvidersHealthy": "Nag-uulat ang mga provider ng maayos na kondisyon ng pagruruta.", + "incidentMode": "Mode ng Insidente", + "highCircuitBreakerRate": "May natukoy na mataas na rate ng pag-trip ng circuit breaker.", + "activeModePack": "Aktibong Mode Pack", + "modePackUpdated": "Na-update ang mode pack sa {pack}.", + "modePackHint": "Lumipat ng mga preset upang baguhin ang prayoridad ng engine ng pagruruta nang hindi muling binubuo ang combo.", + "providerScores": "Mga Iskor ng Provider", + "allProvidersEvaluated": "Walang naka-configure na candidate pool. Sinusuri ang lahat ng aktibong provider sa runtime.", + "excludedProviders": "Mga Ibinukod na Provider", + "excludedProvidersHint": "Pansamantalang ibinubukod sa pagruruta ang mga provider na may OPEN na circuit breaker.", + "noExcludedProviders": "Walang provider na kasalukuyang ibinubukod.", + "cooldownMinutes": "Panahon ng paghihintay: {minutes}m", + "builderIntelligentTitle": "Configuration ng Matalinong Pagruruta", + "builderIntelligentDesc": "I-configure ang multi-factor scoring engine para sa auto-routing combo na ito.", + "candidatePoolLabel": "Pangkat ng mga Kandidato", + "candidatePoolHint": "Piliin kung aling mga provider ang dapat suriin ng engine na ito. Iwanang walang laman upang gamitin ang lahat ng aktibong provider.", + "candidatePoolEmpty": "Wala pang available na aktibong provider.", + "candidatePoolAllProviders": "Lahat ng provider", + "modePackLabel": "Pakete ng Mode", + "routerStrategyLabel": "Estratehiya ng Router", + "strategyRules": "Mga Panuntunan (6-Factor Scoring)", + "explorationRateLabel": "Rate ng Eksplorasyon", + "explorationRateHint": "Maaaring galugarin ng {percent}% ng mga kahilingan ang mga provider na hindi pinakamainam.", + "budgetCapLabel": "Limitasyon sa Badyet (USD / kahilingan)", + "budgetCapPlaceholder": "Walang limitasyon", + "advancedWeightsTitle": "Advanced: Mga Timbang sa Pagmamarka", "nestedComboFlatten": "I-flatten ang mga nested combo", "nestedComboExecute": "I-execute ang mga nested combo bilang mga target", "effectiveRoutingShare": "Epektibong bahagi ng routing (timbang ÷ kabuuan)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kota", + "weightHealth": "Kalagayan", + "weightCostInv": "Gastos", + "weightLatencyInv": "Latensiya", + "weightTaskFit": "Pagiging Angkop sa Gawain", + "weightStability": "Katatagan", + "weightTierPriority": "Antas", + "weightCacheAffinity": "Pagkiling sa Cache Hit", "weightSessionAvailability": "K availability ng Sesyon", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Config ng Intelligent Routing", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Fail-safe na baseline", + "description": "Gumamit ng isang pangunahing modelo at panatilihing maikli at maaasahan ang fallback chain.", + "tip1": "Ilagay muna ang iyong pinakamaaasahang modelo.", + "tip2": "Magpanatili ng 1-2 backup na modelo na may katulad na kalidad.", + "tip3": "Gumamit ng mga ligtas na retry upang masalo ang mga pansamantalang pagkabigo ng provider." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Kontroladong paghahati ng traffic", + "description": "Mainam para sa mga canary rollout at unti-unting paglipat sa pagitan ng mga modelo.", + "tip1": "Magsimula sa konserbatibong hati gaya ng 90/10.", + "tip2": "Panatilihin sa 100% ang kabuuan at awtomatikong balansehin ito pagkatapos ng mga pagbabago.", + "tip3": "Subaybayan ang tagumpay at latency bago dagdagan ang canary weight." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Nahuhulaang pagbabahagi ng load", + "description": "Pinakamainam kapag magkakatumbas ang mga modelo at kailangan mo ng maayos na distribusyon.", + "tip1": "Gumamit ng hindi bababa sa 2 modelo.", + "tip2": "Magtakda ng mga limitasyon sa concurrency upang maiwasan ang biglaang overload.", + "tip3": "Gumamit ng queue timeout upang mabilis na mabigo kapag sagad na ang kapasidad." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Mabilis na pamamahagi na may kaunting setup", + "description": "Gamitin kapag kailangan mo ng simpleng distribusyon nang walang mahihigpit na garantiya.", + "tip1": "Gumamit ng mga modelong may magkakatulad na latency profile.", + "tip2": "Panatilihing naka-enable ang mga retry upang masalo ang mga random na miss.", + "tip3": "Piliin ito para sa pag-eeksperimento, hindi para sa mahihigpit na SLA." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Adaptive na pagbabalanse", + "description": "Nagruruta sa mga modelong hindi gaanong ginagamit upang mabawasan ang mga hotspot sa paglipas ng panahon.", + "tip1": "Mas mahusay itong gumagana sa tuloy-tuloy na traffic.", + "tip2": "Isama sa mga health check para sa mas ligtas na pagbabalanse.", + "tip3": "Subaybayan ang paggamit ng bawat modelo upang mapatunayan ang mga pakinabang sa distribusyon." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Pagru-ruta na inuuna ang badyet", + "description": "Nagruruta sa mga modelong mas mura kapag available ang metadata ng presyo.", + "tip1": "Tiyaking sakop ng pagpepresyo ang lahat ng napiling modelo.", + "tip2": "Magpanatili ng de-kalidad na fallback para sa mahihirap na prompt.", + "tip3": "Gamitin para sa mga batch/background job kung saan gastos ang pangunahing KPI." }, "reset-aware": { "title": "I-reset-aware ang pag-ikot ng account", @@ -3597,11 +3597,11 @@ "tip3": "Panatilihing maliit ang tie band para patas pa rin ang pag-ikot ng mga katumbas na account." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Pamamahagi gamit ang shuffle deck", + "description": "Ginagamit nang eksaktong isang beses ang bawat modelo sa bawat cycle bago muling i-shuffle.", + "tip1": "Gumamit ng hindi bababa sa 2 modelo para sa makabuluhang pamamahagi.", + "tip2": "Pinakamahusay itong gumagana sa mga modelong may magkatumbas na performance.", + "tip3": "Mainam para sa load balancing sa maraming API account." }, "fill-first": { "description": "Ubusin ang mga quota ng provider nang sunud-sunod bago bumalik.", @@ -3615,7 +3615,7 @@ "tip1": "Hayaang awtomatikong balansehin ang engine ng maraming salik.", "tip2": "Subaybayan kung aling mga salik ang nagtutulak ng mga desisyon sa pagruruta sa mga log.", "tip3": "Gamitin para sa mga kumplikadong workload kung saan walang iisang salik ang nangingibabaw.", - "title": "Multi-Factor Optimization" + "title": "Pag-optimize gamit ang Maraming Salik" }, "lkgp": { "description": "Ruta batay sa makasaysayang pagganap at mga pattern ng tagumpay.", @@ -3646,86 +3646,86 @@ "title": "Kapangyarihan ng Dalawang Pagpipilian" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Libreng Stack ($0)", + "templateFreeStackDesc": "Round-robin sa lahat ng libreng provider: Kiro (Claude), Qoder (5 modelo), Qwen (4 na modelo). Walang gastos at tuloy-tuloy ang pag-code.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "Mode ng LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Pagsisimula sa Mga Combo", + "wizardGuideDesc": "Gumawa ng mga combo ng modelo upang matalinong i-route ang AI traffic", + "wizardGuideHint": "o i-click ang + Create Combo sa itaas", + "createFirstCombo": "Gawin ang Iyong Unang Combo", + "wizardStep1Title": "Pangalanan ang Iyong Combo", + "wizardStep1Desc": "Bigyan ang iyong combo ng natatanging pangalan upang matukoy ito sa mga routing rule", + "wizardStep2Title": "Magdagdag ng Mga Modelo", + "wizardStep2Desc": "Pumili ng mga AI model at ayusin ang pagkakasunod-sunod ng kanilang fallback priority", + "wizardStep3Title": "Pumili ng Strategy", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Suriin at I-save", + "wizardStep4Desc": "Suriin ang iyong configuration at i-activate ang combo", + "usageGuideInvokeTitle": "Paano tawagin ang combo na ito", + "usageGuideInvokeDesc": "Ipadala ang eksaktong pangalan ng combo bilang model, hal. model: \"my-combo\" (o combo/my-combo).", + "usageGuideInvokeAutoNote": "Ang auto at auto/* ay hiwalay na zero-config router na hindi gumagamit ng iyong mga combo (maliban kung may combo na literal na pinangalanang auto).", + "usageGuideInvokeOpenrouterNote": "Ang openrouter/auto ay isang tunay at may bayad na produkto ng OpenRouter (Auto Best Available), hindi isang alias ng OmniRoute — ibukod ito sa pamamagitan ng Settings → Routing → Hide paid models.", + "emailVisibilityStateOn": "Naka-on", + "emailVisibilityStateOff": "Naka-off", + "reorderHandle": "I-drag upang muling ayusin", + "failedReorder": "Hindi muling naayos ang mga modelo", + "builderFlowTitle": "Daloy ng Combo Builder", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Mga Pangunahing Detalye", + "description": "Pangalan at panimulang template" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Mga Hakbang", + "description": "Pagpili ng provider, modelo, at account" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Estratehiya", + "description": "Gawi sa routing at mga advanced na setting" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Matalinong Pagruruta", + "description": "Pool ng mga kandidato para sa auto-routing, mga preset, at pagmamarka" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Suriin", + "description": "Panghuling pagpapatunay bago i-save" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Nakumpleto ang yugto", + "builderStageCurrent": "Kasalukuyang yugto", + "builderStagePending": "Nakabinbin", + "builderStageLocked": "Naka-lock — kumpletuhin muna ang nakaraang yugto", + "builderTitle": "Bumuo ng Combo", + "builderBrowseCatalog": "I-browse ang catalog", + "builderProvider": "Tagapagbigay", + "builderLoadingProviders": "Nilo-load ang mga provider...", + "builderSelectProvider": "Pumili ng provider", + "builderModel": "Modelo", + "builderSelectModel": "Pumili ng modelo", + "builderProviderFirst": "Pumili muna ng provider", + "builderAccount": "Akawnt", + "builderPreview": "Paunang tingin", + "builderAddStep": "Magdagdag ng hakbang", "builderDuplicateExact": "Ang eksaktong hakbang ng provider/modelo/account na ito ay nasa combo na.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Ref ng Combo", + "builderAddComboRef": "Magdagdag ng combo reference", + "builderComboRefStep": "Magdagdag ng combo reference", + "builderPinnedAccount": "Naka-pin na Account", + "builderLegacyEntry": "Lumang entry", + "reviewName": "Pangalan", + "reviewStrategy": "Estratehiya", + "reviewSteps": "Mga Hakbang", + "reviewAccounts": "Mga Account", + "reviewProviders": "Mga Provider", + "reviewComboRefs": "Mga Combo Reference", + "reviewAdvanced": "Mga Advanced na Setting", + "reviewAgentFlags": "Mga Flag ng Agent", + "reviewSequence": "Pagkakasunod-sunod ng Modelo", + "reviewNoSteps": "Walang naka-configure na hakbang", "builderStagesDescription": "Kumpletuhin ang bawat yugto upang tukuyin ang mga combo, bumuo ng mga hakbang, pumili ng diskarte sa pagruruta, at suriin ang mga resulta.", "builderStepsDescription": "Buuin ang bawat combo step sa pagkakasunud-sunod: provider, modelo, pagkatapos ay account. Nagbibigay-daan ito sa muling paggamit ng parehong provider at modelo sa iba't ibang account.", "selectProvider": "Piliin ang Provider", @@ -3734,7 +3734,7 @@ "selectModelPlaceholder": "Pumili muna ng provider", "selectAccount": "Piliin ang Account", "selectComboToReference": "Pumili ng combo upang sanggunian", - "comboReference": "Combo Reference", + "comboReference": "Sanggunian ng Combo", "addComboReference": "Magdagdag ng Combo Reference", "addStepBeforeContinue": "Mangyaring magdagdag ng hindi bababa sa isang hakbang bago magpatuloy sa susunod na yugto.", "previewNextStep": "Silipin ang susunod na hakbang", @@ -3742,7 +3742,7 @@ "modePackBalanced": "Balanseng", "modePackBudget": "Badyet", "modePackPerformance": "Pagganap", - "modePackCustom": "Custom", + "modePackCustom": "Pasadya", "browseLegacyCatalog": "Mag-browse ng legacy na combo catalog", "agentFeaturesTitle": "Mga Tampok ng Ahente", "agentFeaturesDescription": "Paganahin ang mga advanced na feature para sa mga ahente na gumagamit ng combo na ito", @@ -3766,7 +3766,7 @@ "agentFeaturesContextLengthErrorInteger": "Ang haba ng konteksto ay dapat na isang wastong integer", "agentFeaturesContextLengthErrorRange": "Ang haba ng konteksto ay dapat nasa pagitan ng 1000 at 2000000", "compressionOverride": "Override sa Compression", - "modePack": "Mode Pack", + "modePack": "Pack ng Mode", "disableSessionStickiness": "I-disable ang session stickiness", "sessionStickinessEnabled": "Naka-on ang stickiness", "sessionStickinessDisabled": "Naka-off ang stickiness", @@ -3778,7 +3778,7 @@ "savingModePack": "Nagsasave ng {pack}…", "errorTitle": "Nabigong i-load ang mga combo", "errorDescription": "Hindi namin ma-load ang combo data sa ngayon. Suriin ang iyong koneksyon at subukan muli.", - "errorId": "Error ID: {id}", + "errorId": "ID ng error: {id}", "errorRetry": "Subukan Muli", "comboLabel": "Kumbinasyon", "duplicateAutoComboConfirm": "Gumawa ng static combo mula sa \"{name}\"?", @@ -3800,33 +3800,33 @@ "range7d": "7 Araw", "range30d": "30 Araw", "range90d": "90 Araw", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 Araw", + "range365d": "365 Araw", "rangeAll": "Lahat ng Panahon", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Mga Aktibong Modelo", + "flatRateEstimateNotice": "Kasama ang mga pagtataya ng presyo batay sa token para sa mga flat-rate na subscription, hindi ang aktuwal na sinisingil na halaga.", + "flatRateEstimateForecast": "Kasama sa projection ang mga pagtataya para sa flat-rate.", + "selectedWindow": "Napiling Saklaw", + "activeProviders": "Mga Aktibong Provider", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Gastos Ngayon", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Bahagi ng Provider", + "topProviders": "Mga Nangungunang Provider", + "costTrend": "Trend ng Gastos", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Mga Nangungunang Modelo", "requestsInWindow": "Requests In Window", "tokenUsage": "Paggamit ng Token", "totalTokens": "Kabuuang Token", "inputTokens": "Mga Token ng Input", "outputTokens": "Mga Token ng Output", - "inputOutputRatio": "Input/Output Ratio", + "inputOutputRatio": "Proporsyon ng Input/Output", "tokens": "mga token", "routingEfficiency": "Kahusayan sa Pagruruta", "fallbackCount": "Mga Fallback na Kahilingan", @@ -3836,7 +3836,7 @@ "outOfRequests": "sa {total} na mga kahilingan", "costByApiKey": "Gastos ayon sa API Key", "costByAccount": "Gastos ayon sa Account", - "apiKeyName": "API Key", + "apiKeyName": "Susi ng API", "account": "Account", "requests": "Mga kahilingan", "cost": "Gastos", @@ -3864,8 +3864,8 @@ "groupServiceTier": "Antas ng serbisyo", "serviceTierFast": "Mabilis", "serviceTierFlex": "Flex", - "serviceTierStandard": "Standard", - "serviceTierBreakdownTitle": "Service Tier", + "serviceTierStandard": "Karaniwan", + "serviceTierBreakdownTitle": "Antas ng Serbisyo", "serviceTierBreakdownSubtitle": "Paghahati ng Fast / Flex / Standard", "serviceTierUsageSaved": "na-save ang paggamit", "serviceTierCostSaved": "na-save", @@ -3882,25 +3882,25 @@ }, "endpoint": { "title": "Endpoint ng API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Gamitin ang endpoint na compatible sa OpenAI sa karamihan ng mga SDK at tool.", + "testEndpoint": "Subukan ang endpoint →", + "advancedProtocols": "Mga advanced na protocol", "available": "Magagamit na Mga Endpoint", "cloudProxy": "Cloud Proxy", "disableConfirm": "Sigurado ka bang gusto mong i-disable ang cloud proxy?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", + "baseUrl": "Batayang URL", + "apiKeyLabel": "Susi ng API", "registeredKeys": "Mga Rehistradong Susi", "chatCompletions": "Mga Pagkumpleto ng Chat", "responses": "Mga tugon", "listModels": "Listahan ng mga Modelo", "usingCloudProxy": "Gamit ang Cloud Proxy", "usingLocalServer": "Gamit ang Lokal na Server", - "machineId": "Machine ID: {id}...", + "machineId": "ID ng machine: {id}...", "disableCloud": "Huwag paganahin ang Cloud", "enableCloud": "Paganahin ang Cloud", "modelsAcrossEndpoints": "{models} na mga modelo sa {endpoints} na mga endpoint", - "loadingModels": "Loading available models...", + "loadingModels": "Nilo-load ang mga available na modelo...", "chatDesc": "Streaming at non-streaming na chat sa lahat ng provider", "embeddings": "Mga pag-embed", "embeddingsDesc": "Mga text embed para sa paghahanap at RAG pipeline", @@ -3910,24 +3910,24 @@ "rerankDesc": "I-rerank ang mga dokumento ayon sa kaugnayan sa isang query", "audioTranscription": "Transkripsyon ng Audio", "audioTranscriptionDesc": "I-transcribe ang mga audio file sa text (Bulong)", - "textToSpeech": "Text to Speech", + "textToSpeech": "Teksto tungo sa Pananalita", "textToSpeechDesc": "I-convert ang teksto sa natural na tunog na pananalita", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Pagbuo ng Musika", + "musicDesc": "Bumuo ng musika at mga audio track sa pamamagitan ng ComfyUI (Stable Audio, MusicGen)", "moderations": "Mga moderation", "moderationsDesc": "Pag-moderate ng nilalaman at pag-uuri ng kaligtasan", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API para sa Codex at mga advanced na agentic workflow", + "listModelsDesc": "Ilista ang lahat ng available na modelo mula sa lahat ng nakakonektang provider", + "settingsApiDesc": "Basahin at baguhin ang configuration ng OmniRoute sa pamamagitan ng API", + "settingsApi": "API ng Mga Setting", "categoryCore": "Mga Core na API", "categoryMedia": "Media at Multi-Modal", - "categorySearch": "Search & Discovery", + "categorySearch": "Paghahanap at Pagtuklas", "categoryUtility": "Mga Utility at Pamamahala", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Paghahanap sa Web", + "webSearchDesc": "Pinag-isang paghahanap sa web mula sa maraming provider na may awtomatikong failover at caching", + "searchProvider": "Provider ng Paghahanap", + "searchProviderDesc": "Ginagamit ang provider na ito para sa paghahanap sa web sa pamamagitan ng POST /v1/search. Hindi kailangang i-configure ang modelo — handa nang gamitin ang mga provider ng paghahanap kapag nakakonekta na ang isang API key.", "enableCloudTitle": "Paganahin ang Cloud Proxy", "whatYouGet": "Kung ano ang makukuha mo", "cloudBenefitAccess": "I-access ang iyong API mula saanman sa mundo", @@ -3963,99 +3963,99 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Paganahin ang Tunnel", + "cloudflaredInstallAndEnable": "I-install at Paganahin", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Tumatakbo", + "cloudflaredStarting": "Nagsisimula", + "cloudflaredStoppedState": "Huminto", + "cloudflaredNotInstalled": "Hindi naka-install", + "cloudflaredUnsupported": "Hindi sinusuportahan", + "cloudflaredError": "Kamalian", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Huling error: {error}", "providerModelsTitle": "{provider} — Mga modelo", "noModelsForProvider": "Walang available na mga modelo para sa provider na ito.", "chat": "Chat", "embedding": "Pag-embed", "image": "Imahe", "custom": "kaugalian", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", - "tabApis": "APIs", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "modelsCount": "{count, plural, one {# modelo} other {# modelo}}", + "sectionTitle": "Saklaw ng Integrasyon", + "sectionDescription": "Mga API na compatible sa OpenAI at mga endpoint ng operasyonal na protocol", + "tabApis": "Mga API", + "tabProtocols": "Mga Protocol", + "tabsAria": "Mga seksyon ng endpoint", + "protocolsTitle": "Mga Protocol", + "protocolsDescription": "Ang MCP at A2A ay mga pangunahing endpoint na may nakalaang obserbabilidad at mga kontrol.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", + "mcpCardDescription": "Model Context Protocol sa pamamagitan ng stdio", + "a2aCardTitle": "Server ng A2A", + "a2aCardDescription": "Endpoint ng Agent2Agent JSON-RPC", + "protocolToolsLabel": "Mga Tool", "protocolTasksLabel": "Mga gawain", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", + "protocolActiveStreamsLabel": "Mga aktibong stream", + "protocolLastActivity": "Huling aktibidad", + "quickStart": "Mabilisang Pagsisimula", + "openMcpDashboard": "Buksan ang pamamahala ng MCP", + "openA2aDashboard": "Buksan ang pamamahala ng A2A", + "mcpQuickStartTitle": "Mabilisang Pagsisimula sa MCP", + "mcpQuickStartStep1": "Patakbuhin ang MCP server gamit ang `omniroute --mcp`.", + "mcpQuickStartStep2": "I-configure ang iyong MCP client upang kumonekta gamit ang stdio transport.", + "mcpQuickStartStep3": "Gumamit ng mga tool gaya ng `omniroute_get_health` at `omniroute_list_combos`.", + "a2aQuickStartTitle": "Mabilisang Pagsisimula sa A2A", + "a2aQuickStartStep1": "Hanapin ang agent card sa `/.well-known/agent.json`.", + "a2aQuickStartStep2": "Magpadala ng mga kahilingang JSON-RPC sa `POST /a2a` gamit ang `message/send` o `message/stream`.", "a2aQuickStartStep3": "Subaybayan at kontrolin ang mga gawain gamit ang `tasks/get` at `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Mga Completion (Legacy)", + "completionsLegacyDesc": "Legacy OpenAI text completions — tumatanggap ng parehong format na prompt string at messages array", "messagesApi": "Mga mensahe", "messagesApiDesc": "Native Anthropic Messages API na format para sa mga provider na katugma sa Claude", "imageEdits": "Mga Pag-edit ng Larawan", "imageEditsDesc": "I-edit at baguhin ang mga kasalukuyang larawan gamit ang AI (inpainting, outpainting, variations)", "batchApi": "Batch API", "batchApiDesc": "Iproseso ang malalaking batch ng mga kahilingan nang asynchronous (OpenAI-compatible)", - "filesApi": "Files API", + "filesApi": "API ng mga File", "filesApiDesc": "Mag-upload at pamahalaan ang mga file para sa pagpoproseso ng batch", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Pagbuo ng Video", + "videoDesc": "Bumuo ng mga video gamit ang mga AI model gaya ng ComfyUI at Stable Video Diffusion.", + "tailscaleRequestFailed": "Hindi na-load ang status ng Tailscale", + "tailscaleEnableFailed": "Hindi na-enable ang Tailscale Funnel", + "tailscaleWaitingForLogin": "Kumpletuhin ang pag-login sa Tailscale sa binuksang tab ng browser. Awtomatikong susubukan muli ng OmniRoute.", + "tailscaleLoginTimedOut": "Nag-timeout habang hinihintay ang pag-login sa Tailscale", + "tailscaleWaitingForFunnel": "I-enable ang Funnel para sa device na ito sa binuksang tab ng browser. Patuloy na magsusuri ang OmniRoute.", + "tailscaleFunnelTimedOut": "Nag-timeout habang hinihintay na ma-enable ang Tailscale Funnel", + "tailscaleStarted": "Naka-enable ang Tailscale Funnel", + "tailscaleDisableFailed": "Hindi na-disable ang Tailscale Funnel", + "tailscaleStopped": "Na-disable ang Tailscale Funnel", + "tailscaleInstallFailed": "Hindi na-install ang Tailscale", + "tailscaleInstallProgress": "Pinoproseso...", + "tailscaleInstalled": "Matagumpay na na-install ang Tailscale", + "tailscaleRunning": "Tumatakbo", + "tailscaleNeedsLogin": "Kailangang Mag-login", + "tailscaleStoppedState": "Nakahinto", + "tailscaleNotInstalled": "Hindi naka-install", + "tailscaleUnsupported": "Hindi suportado", + "tailscaleError": "Kamalian", + "tailscaleDisable": "Ihinto ang Funnel", + "tailscaleInstallAndEnable": "I-install at I-enable", + "tailscaleLoginAndEnable": "Mag-login at I-enable", + "tailscaleEnable": "I-enable ang Funnel", + "tailscaleUrlNotice": "Ginagamit ang iyong Tailscale .ts.net address. Maaaring kailanganin ang pag-login at pag-apruba sa Funnel sa unang paggamit.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "I-authenticate ang machine na ito gamit ang Tailscale, pagkatapos ay i-enable ang Funnel.", + "tailscaleBinaryPath": "Binaryo: {path}", + "tailscaleLastError": "Huling error: {error}", + "tailscaleInstallTitle": "I-install ang Tailscale", + "tailscaleInstallIntro": "Ini-install ang Tailscale sa machine na ito at inihahanda ang OmniRoute upang i-enable ang Funnel.", + "tailscaleInstallPasswordHint": "Sa macOS at Linux, maaaring kailanganin ang sudo para sa pag-install ng package at pagsisimula ng daemon.", + "tailscaleSudoPlaceholder": "Opsyonal na sudo password", + "tailscaleInstalling": "Ini-install", "tailscaleSudoLabel": "Sudo Password (kinakailangan sa macOS/Linux)", "ngrokTitle": "ngrok Tunnel", "ngrokRunning": "Tumatakbo", @@ -4064,7 +4064,7 @@ "ngrokNeedsAuth": "Kailangan ng Auth", "ngrokNotInstalled": "Hindi naka-install", "ngrokUnsupported": "Hindi suportado", - "ngrokError": "Error", + "ngrokError": "Kamalian", "ngrokEnable": "Paganahin ang Tunnel", "ngrokDisable": "Itigil ang Tunnel", "ngrokUrlNotice": "Lumilikha ng pampublikong ngrok tunnel.", @@ -4091,7 +4091,7 @@ "activeTunnelCount": "{active} / {total} na aktibo", "badgeLocal": "LOKAL", "badgeProtected": "PROTEKTADO", - "badgeInternal": "INTERNAL", + "badgeInternal": "PANLOOB", "catalogLoadFailed": "Nabigo ang kahilingan sa catalog ng API sa HTTP {status}", "catalogLoadFailedGeneric": "Nabigong i-load ang catalog ng API", "apiKeysLoadFailed": "Nabigong i-load ang mga API key ({status})", @@ -4101,24 +4101,24 @@ "apiKeyRevealInvalid": "Nagbalik ng hindi wastong tugon ang pagpapakita ng API key", "apiKeyRequired": "Kinakailangan ng isang API key para sa endpoint na ito.", "requestFailed": "Nabigo ang kahilingan ({status})", - "errorStatus": "Error", + "errorStatus": "Kamalian", "catalogStats": "{endpoints} na endpoint sa {categories} na kategorya", "catalogUnavailableDescription": "Hindi ma-load ang OpenAPI specification.", "openJsonResponse": "Buksan ang JSON response", "all": "Lahat", "more": "+{count} pa", "showInternalTooltip": "Ipakita o itago ang mga internal na ruta (nakatago bilang default)", - "bearerAuth": "Bearer Auth", - "requestBody": "Request Body", + "bearerAuth": "Bearer Authentication", + "requestBody": "Nilalaman ng Kahilingan", "close": "Isara", "tryIt": "Subukan Ito", "example": "Halimbawa", - "apiKey": "API Key", + "apiKey": "Susi ng API", "switchToSelection": "Lumipat sa Pagpipilian", "enterManually": "Ilagay nang Manu-mano", "pasteApiKey": "I-paste ang iyong API key rito", "noActiveApiKeys": "Walang nahanap na aktibong mga API key. I-toggle ang manual entry para mag-paste ng isa.", - "requestBodyJson": "Request Body (JSON)", + "requestBodyJson": "Nilalaman ng Kahilingan (JSON)", "sending": "Ipinapadala...", "sendRequest": "Ipadala ang Request", "dataSchemas": "Mga Data Schema", @@ -4127,10 +4127,10 @@ "vscodeAliasDescriptionError": "Ipinapakita ang mga placeholder URL dahil hindi ma-load ang mga CLI key sa session na ito.", "vscodeAliasDescriptionLoading": "Nilo-load ang mga CLI key. Ipinapakita ang mga placeholder URL hanggang sa maging available ang isang key.", "vscodeAliasDescriptionPlaceholder": "Ipinapakita ang mga placeholder URL. Gumawa o mag-activate ng API key sa CLI Tools para palitan ang TOKEN.", - "vscodeAliasManage": "CLI Tools", - "vscodeAliasBaseLabel": "VS Code base", + "vscodeAliasManage": "Mga CLI Tool", + "vscodeAliasBaseLabel": "Base ng VS Code", "vscodeAliasModelsLabel": "Mga modelo ng VS Code", - "vscodeAliasChatLabel": "VS Code chat", + "vscodeAliasChatLabel": "Chat ng VS Code", "localServer": "Lokal na Server", "cloudOmniroute": "Cloud OmniRoute", "copyUrl": "Kopyahin ang URL", @@ -4144,9 +4144,9 @@ "tierPublic": "Publiko", "hideInternal": "Itago ang Internal", "showInternal": "Ipakita ang Internal", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Custom na System Prompt", + "customSystemPromptDescription": "Maglagay ng custom na system prompt sa bawat request sa modelo", + "customSystemPromptPlaceholder": "hal. Palaging sumagot na parang pirata...", "obsidianEnterToken": "Mangyaring maglagay ng Obsidian API token", "obsidianConnectFailed": "Nabigong kumonekta", "obsidianConnectionFailed": "Nabigo ang koneksyon", @@ -4158,17 +4158,17 @@ "obsidianDisableWebdavFailed": "Nabigong i-disable ang WebDAV", "obsidianConnected": "Konektado", "obsidianNotConnected": "Hindi konektado", - "obsidianWebdavSync": "WebDAV Sync", + "obsidianWebdavSync": "Pag-sync sa WebDAV", "obsidianDescription": "Maghanap, magbasa, magsulat, at mamahala ng mga tala sa Obsidian sa pamamagitan ng mga ni-route na AI model", - "obsidianRestToken": "Obsidian Local REST API Token", - "obsidianApiKeyPlaceholder": "Obsidian API key", + "obsidianRestToken": "Token ng Obsidian Local REST API", + "obsidianApiKeyPlaceholder": "API key ng Obsidian", "obsidianConnect": "Kumonekta", "obsidianBaseUrlOptional": "Base URL (opsyonal)", "obsidianPortWarning": "Ang Port 27124 ay ang MCP endpoint (HTTPS, self-signed certificate). Gumagamit ang REST API ng HTTP sa port 27123.", "obsidianRemoteVaultHint": "Default: {defaultUrl}. Para sa mga remote vault, ilagay ang Tailscale IP + port (hal., http://100.x.x.x:27123). I-enable ang Local REST API plugin sa machine na nagpapatakbo ng Obsidian.", "obsidianTokenConfigured": "Naka-configure na ang token. Available ang mga tool ng Obsidian sa pamamagitan ng MCP.", "obsidianDisconnect": "Idiskonekta", - "obsidianVaultSync": "Vault Sync (WebDAV)", + "obsidianVaultSync": "Pag-sync ng Vault (WebDAV)", "obsidianVaultSyncDescription": "I-sync ang iyong vault sa Obsidian mobile gamit ang WebDAV sa Tailscale. May built-in na suporta sa WebDAV ang Obsidian mobile — walang kinakailangang plugin.", "obsidianVaultDirectoryPath": "Path ng Directory ng Vault", "obsidianEnable": "I-enable", @@ -4176,8 +4176,8 @@ "obsidianDisable": "I-disable", "obsidianConfigureMobile": "I-configure ang Obsidian Mobile", "obsidianMobileInstructions": "Sa Obsidian mobile: Settings → Sync → WebDAV → ilagay ang sumusunod:", - "obsidianWebdavUrl": "WebDAV URL", - "obsidianUsername": "Username", + "obsidianWebdavUrl": "URL ng WebDAV", + "obsidianUsername": "Pangalan ng user", "obsidianPassword": "Password", "obsidianTailscaleHint": "Gamitin ang iyong Tailscale IP sa halip na localhost kung kumokonekta mula sa mobile. Ang parehong device ay dapat nasa parehong Tailscale network.", "cloudSyncNotConfigured": "Hindi naka-configure ang cloud sync sa instance na ito.", @@ -4190,41 +4190,41 @@ "notionDisconnectFailed": "Nabigong idiskonekta", "notionEnterToken": "Pakisok ang isang Notion integration token", "notionIntegrationHelp": "Gumawa ng Panloob na Pagsasama sa", - "notionIntegrationToken": "Notion Internal Integration Token", + "notionIntegrationToken": "Token ng Notion Internal Integration", "notionNotConnected": "Hindi nakakonekta", "notionTokenConfigured": "Naka-configure ang token. Ang mga tool ng Notion ay available sa pamamagitan ng MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Proxy ng Endpoint", + "tabApiEndpoints": "Mga API Endpoint", + "apiEndpointsTitle": "Mga API Endpoint", + "apiEndpointsDescription": "Mga backend API endpoint na maaaring gamitin ng ibang mga application at serbisyo. Ililista sa seksyong ito ang lahat ng available na REST API kasama ang dokumentasyon at mga kakayahan sa pagsubok.", + "comingSoon": "Malapit Na", + "plannedFeatures": "Mga Nakaplanong Feature", + "featureRestApi": "Catalog ng REST API endpoint na may interactive na dokumentasyon", + "featureWebhooks": "Configuration ng webhook at mga subscription sa event", + "featureSwagger": "Awtomatikong pagbuo ng OpenAPI / Swagger spec", + "featureAuth": "Pamamahala ng API key at OAuth scope para sa bawat endpoint" }, "mcpDashboard": { "loading": "Nilo-load ang MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", + "activate": "paganahin", + "deactivate": "huwag paganahin", + "confirmSwitchCombo": "Kumpirmahing {action} ang kumbinasyong \"{combo}\"?", + "switchComboFailed": "Hindi nabago ang estado ng kumbinasyon.", + "switchComboSuccess": "Na-update ang kumbinasyong \"{combo}\".", + "confirmApplyProfile": "Ilapat ang profile ng katatagan na \"{profile}\"?", + "applyProfileFailed": "Hindi nailapat ang profile ng katatagan.", + "applyProfileSuccess": "Nailapat ang profile na \"{profile}\".", + "confirmResetBreakers": "I-reset ang lahat ng circuit breaker?", + "resetBreakersFailed": "Hindi na-reset ang mga circuit breaker.", "resetBreakersSuccess": "Ni-reset ang mga circuit breaker.", - "processStatus": "Process status", + "processStatus": "Katayuan ng proseso", "online": "Online", "offline": "Offline", "disableLabel": "I-disable ang {label}", "enableLabel": "I-enable ang {label}", - "transportMode": "Transport Mode", + "transportMode": "Mode ng Transport", "transportStdioDesc": "Lokal — nag-i-spawn ang IDE ng proseso sa pamamagitan ng omniroute --mcp", "transportSseDesc": "Remote — Server-Sent Events sa HTTP", "transportStreamableHttpDesc": "Remote — Modernong bidirectional HTTP", @@ -4237,95 +4237,95 @@ "mcpStep2": "I-configure ang iyong MCP client para kumonekta sa stdio transport.", "mcpStep3": "I-invoke ang mga tool tulad ng {code1} at {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", + "sessionUptime": "Tagal ng session", + "lastHeartbeat": "Huling heartbeat", + "activity24h": "Aktibidad (24h)", + "totalCalls": "Kabuuang tawag", + "successRate": "Rate ng tagumpay", + "avgLatency": "Average na latency", "topTools": "Mga nangungunang tool", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", + "noToolCalls24h": "Walang tawag sa tool sa nakalipas na 24 na oras.", + "runtimeDetails": "Mga detalye ng runtime", "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", + "scopesEnforced": "Mga saklaw na ipinapatupad", + "yes": "oo", + "no": "hindi", + "lastCall": "Huling tawag", + "heartbeatPath": "Path ng heartbeat", + "operationalControls": "Mga kontrol sa operasyon", + "switchCombo": "Combo ng paglipat", + "inactive": "hindi aktibo", "active": "aktibo", "activateCombo": "I-activate ang combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "deactivateCombo": "I-deactivate ang combo", + "applyResilienceProfile": "Ilapat ang profile ng katatagan", + "profileAggressive": "agresibo", + "profileBalanced": "balanse", + "profileConservative": "konserbatibo", + "applyProfile": "Ilapat ang profile", + "resetCircuitBreakers": "I-reset ang mga circuit breaker", + "resetCircuitBreakersHelp": "Nililinis ang kasalukuyang estado ng breaker at mga bilang ng pagkabigo para sa mga provider.", + "resetAllBreakers": "I-reset ang lahat ng breaker", + "toolsAndScopes": "Mga tool at saklaw", + "tableTool": "Kasangkapan", + "tableScopes": "Mga saklaw", + "tablePhase": "Yugto", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Log ng pag-audit", + "auditSummary": "Mga tawag: {total} | pahina {page} ng {totalPages}", + "allTools": "Lahat ng tool", + "allResults": "Lahat ng resulta", + "success": "Tagumpay", + "failure": "Pagkabigo", "apiKeyIdPlaceholder": "apiKeyId", "loadingAuditEntries": "Nilo-load ang mga entry sa pag-audit...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", + "noAuditEntriesForFilters": "Walang nakitang entry sa pag-audit para sa kasalukuyang mga filter.", + "tableTimestamp": "Tatak ng oras", + "tableDuration": "Tagal", + "tableResult": "Resulta", + "tableApiKey": "Susi ng API", + "failed": "nabigo", + "previous": "Nakaraan", + "next": "Susunod", + "apiKeyId": "ID ng API Key", "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "limit": "Hangganan", + "tool": "Kasangkapan" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", + "loading": "Nilo-load ang A2A dashboard...", + "confirmCancelTask": "Kanselahin ang gawain {taskId}?", "cancelTaskFailed": "Nabigong kanselahin ang gawain.", "cancelTaskSuccess": "Kinansela ang gawain {taskId}.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "smokeSendFailed": "Nabigo ang paunang pagsubok ng message/send.", + "smokeSendSuccessWithTask": "Maayos ang message/send (gawain {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "Nabigo ang paunang pagsubok ng message/stream.", + "smokeStreamSuccessWithTask": "Maayos ang message/stream (gawain {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "Natapos ang message/stream nang walang ID ng gawain.", + "health": "Kalagayan", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", + "totalTasks": "Kabuuang mga gawain", + "activeStreams": "Mga aktibong stream", + "lastTask": "Huling gawain", "taskStateOverview": "Pangkalahatang-ideya ng estado ng gawain", "state": { "submitted": "isinumite", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "working": "isinasagawa", + "completed": "nakumpleto", + "failed": "nabigo", + "cancelled": "kinansela" }, - "agentCard": "Agent card", + "agentCard": "Card ng agent", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "Bersyon", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", + "capabilities": "Mga kakayahan", + "agentCardNotAvailable": "Hindi available ang card ng agent.", + "quickValidation": "Mabilisang pagpapatunay", + "quickValidationDescription": "Nagsasagawa ng mga paunang tawag sa pamamagitan ng aktibong `/a2a` endpoint.", + "runMessageSend": "Patakbuhin ang message/send", + "runMessageStream": "Patakbuhin ang message/stream", "taskManagement": "Pamamahala ng gawain", "taskSummary": "{total} mga gawain | pahina {page} ng {totalPages}", "allStates": "lahat", @@ -4339,39 +4339,39 @@ "tableActions": "Mga aksyon", "view": "Tingnan", "cancel": "Kanselahin", - "previous": "Previous", - "next": "Next", + "previous": "Nakaraan", + "next": "Susunod", "taskDetail": "Detalye ng gawain", "close": "Isara", "metadata": "Metadata", "events": "Mga kaganapan", "artifacts": "Mga artifact", - "tablePhase": "Table Phase", + "tablePhase": "Yugto ng Talahanayan", "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "limit": "Hangganan", + "skill": "Kasanayan", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "mensahe/ipadala", "rpcMethodStream": "mensahe/stream", "rpcMethodGet": "mga gawain/kunin", "rpcMethodCancel": "mga gawain/kanselahin", "serviceLabel": "A2A", - "online": "Online", - "offline": "Offline", + "online": "Naka-online", + "offline": "Naka-offline", "disableLabel": "I-disable ang {label}", "enableLabel": "I-enable ang {label}", "a2aDisabledTitle": "Naka-disable ang A2A", "a2aDisabledDesc": "I-enable ang A2A sa itaas para tingnan ang telemetry ng gawain, mga detalye ng agent, at mga tool sa pag-validate.", "a2aIntro": "Agent2Agent JSON-RPC 2.0 endpoint — magpadala ng mga gawain, mag-stream ng mga tugon, kanselahin ang mga in-flight na trabaho.", "a2aStep1": "Tuklasin ang agent card sa {code}.", - "a2aStep2": "Send JSON-RPC to {code1} using {code2} or {code3}.", - "a2aStep3": "Track and cancel tasks with {code1} and {code2}." + "a2aStep2": "Magpadala ng JSON-RPC sa {code1} gamit ang {code2} o {code3}.", + "a2aStep3": "Subaybayan at kanselahin ang mga gawain gamit ang {code1} at {code2}." }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Mga Aksyon", + "addMemory": "Magdagdag ng Alaala", + "allTypes": "Lahat ng Uri", "cancel": "Kanselahin", "checkHealth": "Suriin ang kalusugan", "checkingHealth": "Sinusuri…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Paano ito gumagana", "howWorksContent": "1. Awtomatikong pagkuha: sa dulo ng bawat tugon, ang mga katotohanan at episode ay awtomatikong nade-detect at nai-save.\n2. Pagbawi: bago ang bawat tugon, ang pinakanauugnay na mga memorya ay hinahanap sa pamamagitan ng FTS5 (eksakto), vector (semantiko), o hybrid RRF.\n3. Iniksyon: ang mga nauugnay na memorya ay inilalagay sa konteksto ng assistant upang mapabuti ang kalidad ng tugon.\n4. Pamamahala: gamitin ang pahinang ito upang tingnan, i-edit, i-export, at i-compact ang mga lumang memorya." }, - "content": "Content", + "content": "Nilalaman", "contentPlaceholder": "Halaga o nilalaman ng JSON na dapat tandaan", - "created": "Created", - "delete": "Delete", + "created": "Ginawa", + "delete": "Tanggalin", "deleteConfirmDesc": "Hindi na mababawi ang aksyong ito. Permanenteng aalisin ang memorya.", "deleteConfirmTitle": "I-delete ang memorya?", - "description": "View and manage stored memory entries", + "description": "Tingnan at pamahalaan ang mga nakaimbak na tala ng alaala", "editMemory": "I-edit ang memorya", "editModal": { "title": "I-edit ang Memorya", @@ -4399,9 +4399,9 @@ "embedding": { "autoLabel": "Awtomatiko", "autoDesc": "Gumagamit ng pinakamahusay na magagamit: remote provider > static > transformers", - "remoteLabel": "Remote provider", + "remoteLabel": "Malayuang provider", "remoteDesc": "Gumagamit ng embedding sa pamamagitan ng provider API (nangangailangan ng API key)", - "staticLabel": "Static local (potion)", + "staticLabel": "Lokal na static (potion)", "staticDesc": "Lokal na embedding nang walang WASM o panlabas na mga dependency", "transformersLabel": "Transformers.js (MiniLM)", "transformersDesc": "Lokal na embedding sa pamamagitan ng @huggingface/transformers (~400MB RAM)", @@ -4431,38 +4431,38 @@ "reindexNow": "I-reindex ngayon", "reindexStarted": "Nagsimula na ang pag-reindex ({pending} nakabinbin)", "reindexFailed": "Bigo sa pagsisimula ng pag-reindex", - "keywordLabel": "Keyword (FTS5)", + "keywordLabel": "Susing salita (FTS5)", "keywordReason": "Palaging magagamit ang paghahanap gamit ang keyword", - "embeddingLabel": "Embedding", - "vectorStoreLabel": "Vector Store", + "embeddingLabel": "Pag-embed", + "vectorStoreLabel": "Imbakan ng Vector", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Muling Pagraranggo", "qdrantDisabled": "Naka-disable", - "qdrantOk": "Healthy ({latencyMs}ms)", + "qdrantOk": "Maayos ({latencyMs}ms)", "qdrantError": "Error sa koneksyon", "needsReindex": "{count} (na) memory ang kailangang i-reindex", "configureCta": "I-configure", "vectorStoreInstallHint": "Para paganahin ang vector search: npm install sqlite-vec (kailangan ng native Node.js, hindi WASM), pagkatapos ay i-restart." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodiko", + "export": "I-export", + "factual": "Makatotohanan", "healthUnknown": "Hindi alam ang kalusugan", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Antas ng Pagtama", + "import": "I-import", "importError": "Bigo sa pag-import ng file", "importResult": "{imported} ang na-import, {skipped} ang nilaktawan", - "key": "Key", + "key": "Susi", "keyPlaceholder": "hal. user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Mga Alaala", "next": "Susunod", - "noMemories": "No memories found", + "noMemories": "Walang nakitang alaala", "pageInfo": "Pahina {page} ng {totalPages} ({total} kabuuan)", "pipelineError": "Error sa pipeline", - "pipelineOk": "Pipeline OK ({latencyMs}ms)", + "pipelineOk": "Maayos ang pipeline ({latencyMs}ms)", "playground": { - "infoTitle": "Memory Playground", + "infoTitle": "Lugar ng Pagsubok ng Alaala", "infoDesc": "I-simulate kung ano ang makukuha para sa isang ibinigay na query. Walang binagong memory — read-only na preview.", "queryLabel": "Subukan ang query", "queryPlaceholder": "Mag-type ng tanong o pariralang pang-test...", @@ -4474,20 +4474,20 @@ "simulate": "I-simulate", "resultsTitle": "{count} (na) resulta", "resolutionTitle": "Resolusyon ng paghahanap", - "resolutionEmbedding": "Embedding", - "resolutionStore": "Vector store", + "resolutionEmbedding": "Pag-embed", + "resolutionStore": "Imbakan ng vector", "resolutionStrategy": "Estratehiyang ginamit", "rerankApplied": "Inilapat ang rerank", - "fallback": "Fallback", + "fallback": "Pamalit", "noResults": "Walang nahanap na memory para sa query na ito.", "tokensUsed": "mga token na ginamit", "none": "wala", "errorFetch": "Bigo sa pag-fetch ng preview" }, "previous": "Nakaraang", - "procedural": "Procedural", + "procedural": "Prosidyural", "qdrant": { - "title": "Qdrant (Vector Store Tier 2)", + "title": "Qdrant (Imbakan ng Vector Tier 2)", "description": "Opsyonal na integrasyon ng Qdrant para sa scalable na semantikong paghahanap", "enableLabel": "Paganahin ang Qdrant", "enableDesc": "Kapag pinagana, gagamitin ang Qdrant bilang pangunahing vector store", @@ -4498,14 +4498,14 @@ "testConnection": "Subukan ang koneksyon", "testing": "Sinusubukan...", "statusActive": "Aktibo", - "statusError": "Error", + "statusError": "Kamalian", "statusDisabled": "Hindi pinagana", "healthOk": "OK ang koneksyon ({latencyMs}ms)", "healthError": "Error sa koneksyon", "saved": "Nai-save ang mga setting", "saveError": "Nabigong i-save", "portLabel": "Port", - "embeddingModelLabel": "Embedding Model", + "embeddingModelLabel": "Modelo ng Pag-embed", "optional": "opsyonal", "apiKeyKeepPlaceholder": "Iwanang blangko upang panatilihin ang kasalukuyang key", "apiKeyOptional": "Iwanang blangko kung hindi gumagamit ng authentication", @@ -4528,14 +4528,14 @@ "enableLabel": "Paganahin ang Rerank", "enableDesc": "Muling inaayos ang mga resulta gamit ang isang reranking model pagkatapos maghanap", "warning": "Nagdaragdag ang Rerank ng +200-500ms na latency at karagdagang gastos bawat request. Gamitin nang madalang.", - "providerModelLabel": "Rerank Provider / Model", + "providerModelLabel": "Provider / Modelo ng Muling Pagraranggo", "noProviderWithKey": "Walang provider na may naka-configure na API key. Mag-configure ng provider para magamit ang rerank.", "selectProviderModel": "Pumili ng provider/model" }, "save": "I-save", "saving": "Nagse-save...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Maghanap ng mga alaala...", + "semantic": "Semantiko", "summarize": { "title": "I-compact ang mga lumang memory", "noCandidates": "Walang mga memory na kwalipikado para sa compaction (pamantayan: >30 araw na ang tagal).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Mga Memory", - "playground": "Playground", - "engine": "Engine" + "playground": "Lugar ng Pagsubok", + "engine": "Makina" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Pamamahala ng Memorya", + "tokensUsed": "Mga Token na Nagamit", "tooltip": { "totalEntries": "Kabuuang mga memory na nakaimbak para sa API key na ito", "tokensUsed": "Tinatayang kabuuang mga token na inookupa ng mga aktibong memory", @@ -4558,47 +4558,47 @@ "procedural": "Mga pamamaraan, workflow, at tagubilin na dapat sundin ng assistant", "semantic": "Mga konsepto, kagustuhan, at kaalaman sa domain" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Kabuuang Bilang ng mga Entry", + "type": "Uri", "memoryEnabled": "Naka-enable ang memory" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Mga Kasanayan", + "description": "Pamahalaan at subaybayan ang mga kasanayan ng AI", + "skillsTab": "Mga Kasanayan", + "executionsTab": "Mga Pagpapatupad", "selectSkillToInspect": "Pumili ng skill sa kaliwa upang suriin.", - "schemaTab": "Schema", - "handlerTab": "Handler", - "inputSchema": "Input Schema", - "outputSchema": "Output Schema", - "handlerCode": "Handler Code", + "schemaTab": "Iskema", + "handlerTab": "Tagapangasiwa", + "inputSchema": "Schema ng Input", + "outputSchema": "Schema ng Output", + "handlerCode": "Code ng Handler", "handlerUnavailable": "Hindi available ang handler", "runTestPlaceholder": "Patakbuhin ang test (placeholder)", "setModeAria": "Itakda ang mode {mode}", "uninstallSkill": "I-uninstall ang skill", "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "loading": "Nilo-load ang mga kasanayan...", + "noSkills": "Walang nakitang mga kasanayan", + "noExecutions": "Walang nakitang mga pagpapatupad", + "enabled": "Naka-enable", + "disabled": "Naka-disable", "delete": "Burahin", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", + "version": "Bersyon", + "tableDescription": "Paglalarawan", + "skill": "Kasanayan", + "status": "Katayuan", + "duration": "Tagal", + "time": "Oras", + "sandboxConfig": "Configuration ng Sandbox", + "cpuLimit": "Limitasyon ng CPU", + "cpuLimitDesc": "Pinakamahabang oras ng pagpapatupad sa bawat kasanayan", + "memoryLimit": "Limitasyon ng Memorya", + "memoryLimitDesc": "Pinakamalaking alokasyon ng memorya", + "timeout": "Palugit", + "timeoutDesc": "Pinakamahabang oras ng paghihintay para sa tugon", + "networkAccess": "Access sa Network", + "networkAccessDesc": "Payagan ang mga papalabas na kahilingan sa network", "mode": "Mode", "q": "Q", "filterSkillsPlaceholder": "I-filter ang mga kasanayan ayon sa pangalan, paglalarawan, o tag", @@ -4607,12 +4607,12 @@ "enabledSkills": "Naka-enable", "totalExecutions": "Mga Pagpapatupad", "successRate": "Rate ng Tagumpay", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Pamilihan", "applyFilters": "Ilapat ang mga filter", "popularDefaultsLabel": "Sikat bilang default para sa napiling provider:", - "onMode": "ON", - "offMode": "OFF", - "autoMode": "AUTO", + "onMode": "NAKA-ON", + "offMode": "NAKA-OFF", + "autoMode": "AWTOMATIKO", "installSkillButton": "I-install ang Skill", "installSkillModalTitle": "I-install ang Skill", "installJsonPlaceholder": "I-paste ang skill manifest JSON dito...", @@ -4645,9 +4645,9 @@ "title": "Kalusugan ng System", "description": "Real-time na pagsubaybay sa iyong OmniRoute instance", "healthy": "Malusog", - "degraded": "Degraded", + "degraded": "Humina", "down": "Pababa", - "uptime": "Uptime", + "uptime": "Oras ng Paggana", "memory": "Alaala", "memoryRss": "Memorya (RSS)", "heap": "Bunton", @@ -4657,7 +4657,7 @@ "lastCheck": "Huling Pagsusuri", "providerHealth": "Kalusugan ng Provider", "systemMetrics": "Mga Sukatan ng System", - "tokenHealth": "Token Health", + "tokenHealth": "Kalagayan ng Token", "refreshAll": "I-refresh Lahat", "checkNow": "Suriin Ngayon", "loadingHealth": "Nilo-load ang data ng kalusugan...", @@ -4665,15 +4665,15 @@ "retry": "Subukan muli", "allOperational": "Ang lahat ng mga sistema ay gumagana", "issuesDetected": "May nakitang mga isyu sa system", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "Handa na ang OmniRoute", + "healthVerdictActionRequired": "Kailangang kumilos upang maibalik ang buong operasyon", + "healthVerdictCoolingDown": "Nagpapalamig pagkatapos ng mga kamakailang pagbabago", + "healthSubtitle": "Pagsusuri sa kalagayan ng system", + "advancedDiagnosticsTitle": "Advanced na diagnostic", + "hide": "Itago", + "show": "Ipakita", "updatedAt": "Na-update {time}", - "latency": "Latency", + "latency": "Pagkaantala", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", @@ -4681,13 +4681,13 @@ "notAvailable": "—", "totalRequests": "Kabuuang mga kahilingan", "noDataYet": "Wala pang data", - "promptCache": "Prompt Cache", + "promptCache": "Cache ng Prompt", "entries": "Mga entry", - "hitRate": "Hit Rate", + "hitRate": "Antas ng Pagtama", "hitsMisses": "Mga Hit / Miss", - "signatureCache": "Signature Cache", + "signatureCache": "Cache ng Signature", "signatureDefaults": "Mga Default", - "signatureTool": "Tool", + "signatureTool": "Kasangkapan", "signatureFamily": "Pamilya", "signatureSession": "Sesyon", "recovering": "Nagpapagaling", @@ -4698,9 +4698,9 @@ "providers": "Mga provider", "configuredProvidersLabel": "Na-configure sa dashboard", "configuredProvidersHint": "Mga provider na may mga kredensyal na naka-save sa /dashboard/providers, anuman ang estado ng runtime.", - "activeProviders": "{count} active", + "activeProviders": "{count} aktibo", "activeProvidersHint": "Kasalukuyang pinagana ang mga naka-configure na provider para sa mga kahilingan sa pagruruta.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} sinusubaybayan", "monitoredProvidersHint": "Ang mga provider ay kasalukuyang sinusubaybayan ng mga circuit-breaker na monitor ng kalusugan.", "healthyCount": "{count} malusog", "nodeVersion": "Node {version}", @@ -4721,11 +4721,11 @@ "resetting": "Nire-reset...", "resetAll": "I-reset Lahat", "until": "Hanggang {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Naubos", + "learnedFromHeaders": "Natutuhan mula sa mga header", + "remainingOfLimit": "{remaining}/{limit} ang natitira", + "throttleStatus": "Paglilimita: {value}", + "lastHeaderUpdate": "Update sa header: {age}", "databaseHealth": "Kalusugan ng Database", "databaseHealthDescription": "I-diagnose at kumpunihin ang mga stale na quota/domain row at sirang combo reference.", "status": "Katayuan", @@ -4737,7 +4737,7 @@ "sessionActivity": "Aktibidad ng Session", "activeCount": "{count} aktibo", "requestCount": "{count, plural, one {# kahilingan} other {# na kahilingan}}", - "idleSeconds": "{count}s idle", + "idleSeconds": "Hindi aktibo nang {count}s", "ageSeconds": "{count}s tagal", "quotaMonitors": "Mga Monitor ng Quota", "alerting": "Nag-aalerto", @@ -4745,7 +4745,7 @@ "degradationFull": "Buo", "degradationReduced": "Binawasan", "degradationMinimal": "Minimal", - "degradationDefault": "Default", + "degradationDefault": "Paunang itinakda", "sinceTime": "Mula noong {time}", "retryIn": "subukang muli sa loob ng {duration}", "stickyBoundSessions": "Mga malagkit na session", @@ -4773,11 +4773,11 @@ "inactive": "Hindi aktibo", "noConnectionId": "walang connection id", "accountModelSummary": "{connectionId} · {count} modelo", - "cooldown": "cooldown", + "cooldown": "pagpapalamig", "durationRemaining": "{duration} natitira", "noSyncedModelsOrTraffic": "Wala pang naka-sync na mga modelo o kamakailang trapiko.", "providerRowSummary": "{active}/{total} aktibong account · {requests} req · {successRate} tagumpay · {latency} avg", - "cooldownCount": "{count} cooldown", + "cooldownCount": "{count} nasa cooldown", "lockoutCount": "{count} lockout", "issueCount": "{count} isyu", "score": "Iskor", @@ -4785,16 +4785,16 @@ "lastError": "Huling error" }, "telemetry": { - "title": "System Telemetry", + "title": "Telemetry ng System", "description": "Rolling request, runtime, session, at memory signal mula sa prosesong ito ng OmniRoute.", - "uptime": "Uptime", + "uptime": "Oras ng Paggana", "totalRequests": "Kabuuang Mga Kahilingan", - "avgLatency": "Avg Latency", + "avgLatency": "Average na Latency", "errorRate": "Rate ng Error", "activeConnections": "Mga Aktibong Koneksyon", "memoryUsage": "Paggamit ng Memory", - "latencyTrend": "Latency trend", - "throughputTrend": "Throughput trend", + "latencyTrend": "Trend ng latency", + "throughputTrend": "Trend ng throughput", "memoryTrend": "Trend ng memorya", "refresh": "I-refresh", "updatedAt": "Na-update {time}", @@ -4812,10 +4812,10 @@ "start": "Magsimula", "stop": "Tumigil ka", "refresh": "I-refresh", - "port": "Proxy Port", - "apiKey": "Router API Key", + "port": "Port ng Proxy", + "apiKey": "API Key ng Router", "apiKeyPlaceholder": "Opsyonal; bumabalik sa isang lokal na susi", - "sudoPassword": "Sudo Password", + "sudoPassword": "Password ng Sudo", "cachedPassword": "Naka-cache para sa prosesong ito", "saveSettings": "I-save ang Mga Setting", "settingsSaved": "Na-save ang mga setting ng MITM.", @@ -4827,10 +4827,10 @@ "certificate": "Sertipiko ng CA", "certificateReady": "Available ang sertipiko para sa pag-install ng tiwala ng kliyente.", "certificateMissing": "Hindi pa nabuo ang sertipiko.", - "available": "Available", + "available": "Magagamit", "missing": "Nawawala", "downloadCert": "I-download ang CA Certificate", - "regenerateCert": "Regenerate Certificate", + "regenerateCert": "Gumawa Muli ng Certificate", "regenerateConfirm": "Ito ay magpapawalang-bisa sa kasalukuyang tiwala ng kliyente. Magpatuloy?", "regenerateSuccess": "Ang sertipiko ng MITM ay muling nabuo.", "regenerateFailed": "Nabigong muling buuin ang sertipiko ng MITM.", @@ -4840,7 +4840,7 @@ "dnsConfigured": "Na-configure ang DNS", "pid": "PID", "lastIntercept": "Huling Harang", - "target": "Target", + "target": "Patutunguhan", "host": "Host", "localPort": "Lokal na Port", "endpoints": "Mga Endpoint", @@ -4877,10 +4877,10 @@ "failedFetchAuditLog": "Nabigong makuha ang audit log", "showing": "Ipinapakita ang {count} entry (offset {offset})", "search": "Maghanap", - "timestamp": "Timestamp", + "timestamp": "Tatak ng oras", "action": "Aksyon", "actor": "artista", - "target": "Target", + "target": "Patutunguhan", "details": "Mga Detalye", "ipAddress": "IP Address", "notAvailable": "—", @@ -4888,28 +4888,28 @@ "previous": "Nakaraang", "next": "Susunod", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Tingnan ang Mga Detalye", + "eventMetadata": "Metadata ng Kaganapan", + "eventPayload": "Payload ng Kaganapan", + "requestId": "ID ng Kahilingan", "providerWarningDesc": "Provider Warning Desc", "a": "A", "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", + "limit": "Limitasyon", + "status": "Katayuan", + "resourceType": "Uri ng Resource", + "totalEntries": "Kabuuang Bilang ng Entry", "tab": "Tab", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Isara", + "runningRequests": "Mga Aktibong Kahilingan", + "runningRequestsDesc": "Real-time na view ng mga kasalukuyang tumatakbong upstream na kahilingan", "clearAll": "I-clear ang Lahat", "confirmClearActiveRequests": "I-clear ang lahat ng aktibong kahilingan?", - "model": "Model", - "provider": "Provider", + "model": "Modelo", + "provider": "Tagapagbigay", "account": "Account", - "elapsed": "Elapsed", + "elapsed": "Lumipas na Oras", "activeStage": "Yugto", "activeStageUnknown": "Hindi pa naipapadala sa upstream", "activeStageRegistered": "Nakarehistro", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Nakuha ang slot ng rate limit", "activeStageSendingToProvider": "Ipinapadala sa upstream", "activeStageProviderResponseStarted": "Nagsimula na ang tugon ng upstream", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Bilang", + "payloads": "Mga Payload", + "viewPayloads": "Tingnan", + "activeCount": "{count} aktibo", + "clientPayload": "Payload ng Kahilingan ng Client", + "upstreamPayload": "Payload ng Upstream Provider", + "upstreamNotSentYet": "Hindi pa naipapadala sa upstream", + "runningRequestDetailMeta": "Account: {account} — Lumipas na oras: {elapsed}", + "export": "I-export", + "exporting": "Ini-export...", + "exportFailed": "Nabigo ang pag-export", "cleanHistoryButton": "Linisin ang history", "cleanHistoryTitle": "Linisin ang history ng log?", "cleanHistoryMessage": "Permanenteng buburahin nito ang lahat ng row ng log ng kahilingan, mga legacy detail row, at mga lokal na artifact file sa ilalim ng DATA_DIR/call_logs. Magre-refresh ang live page pagkatapos ng paglilinis.", @@ -4938,19 +4938,19 @@ "cleanHistorySuccess": "Nalinis ang {deleted} log entry, {deletedArtifacts} artifact, at {deletedDetailedLogs} legacy detail row.", "cleanHistoryEmpty": "Walang nahanap na log history ng request.", "cleanHistoryFailed": "Nabigong linisin ang log history.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Saklaw ng Oras", + "lastNHours": "Nakaraang {hours}", + "defaultRange": "paunang itinakda", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Nabigong kunin ang mga log", + "copyFailed": "Nabigong kopyahin ang entry ng log", + "copyLogEntry": "Kopyahin ang entry sa log", "filterByLevel": "I-filter ayon sa log level", "searchPlaceholder": "Maghanap sa mga log…", "searchAria": "Maghanap sa mga entry ng log", "disableAutoScroll": "I-disable ang auto-scroll", "enableAutoScroll": "I-enable ang auto-scroll", - "autoScroll": "Auto-scroll", + "autoScroll": "Awtomatikong pag-scroll", "entryCount": "{count, plural, one {# entry} other {# na entry}}", "lastHour": "Huling 1h", "updatedAt": "Na-update {time}", @@ -4984,12 +4984,12 @@ "setupComplete": "Kumpleto na ang Setup!", "goToDashboard": "Pumunta sa Dashboard →", "welcomeDesc": "Ang OmniRoute ay ang iyong lokal na AI API proxy. Nagruruta ito ng mga kahilingan sa maraming AI provider na may load balancing, failover, at pagsubaybay sa paggamit.", - "multiProvider": "Multi-Provider", + "multiProvider": "Maramihang Provider", "usageTracking": "Pagsubaybay sa Paggamit", "securityDesc": "Magtakda ng password para protektahan ang iyong dashboard, o laktawan muna.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Kung walang password, hindi ka makakapagdagdag ng mga provider habang nagsasagawa ng paunang pag-setup. Maaari mong idagdag ang mga ito sa ibang pagkakataon mula sa dashboard pagkatapos magtakda ng password.", "providerDesc": "Ikonekta ang iyong unang AI provider. Maaari kang magdagdag ng higit pa sa ibang pagkakataon.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Kailangan mo munang magtakda ng password para makapagdagdag ng mga provider. Bumalik sa hakbang sa seguridad at magtakda ng password, o magdagdag ng mga provider sa ibang pagkakataon mula sa dashboard.", "apiKeyRequired": "API Key (kinakailangan)", "customUrlOptional": "Custom na URL (opsyonal)", "testDesc": "I-verify natin na gumagana ang iyong koneksyon sa provider.", @@ -5006,7 +5006,7 @@ "failedSetPassword": "Nabigong itakda ang password. Subukan muli.", "failedAddProvider": "Nabigong magdagdag ng provider. Subukan muli.", "connectionError": "Error sa koneksyon. Pakisubukang muli.", - "provider": "Provider", + "provider": "Tagapagbigay", "apiKeyHelp": "Ang API key ay isang password para sa mga serbisyo ng AI. Kumuha ng isa mula sa website ng iyong provider (hal., platform.openai.com, console.anthropic.com).", "tier": { "subtitle": "Inaayos ng OmniRoute ang mga provider sa tatlong tier kaya mas pinipili ng pagruruta ang pinaka-maaasahan, pinakamababang-gastos na landas muna.", @@ -5026,7 +5026,7 @@ }, "configure": "I-configure ang mga provider" }, - "tierFlowDiagramAlt": "OmniRoute 3-tier fallback diagram", + "tierFlowDiagramAlt": "Diagram ng 3-tier fallback ng OmniRoute", "apiKeyMgmt": "API Key Mgmt", "freeProviders": { "title": "I-set up ang mga libreng provider", @@ -5063,10 +5063,10 @@ "importFromFileDescription": "Mag-upload ng CSV o JSON file na naglilista ng maraming provider (maaaring magkakaibang uri ng provider ang bawat row). Suriin ang mga na-parse na row sa ibaba at piliin kung alin ang ii-import.", "importFromFileChoose": "Pumili ng file", "importFromFileSelectHint": "{count} sa {total} ang napili", - "importFromFileColProvider": "Provider", + "importFromFileColProvider": "Tagapagbigay", "importFromFileColName": "Pangalan", - "importFromFileColBaseUrl": "Base URL", - "importFromFileErrorLine": "Row {line}: {reason}", + "importFromFileColBaseUrl": "Batayang URL", + "importFromFileErrorLine": "Hanay {line}: {reason}", "importErrorMissingProvider": "nawawalang provider", "importErrorMissingName": "nawawalang pangalan", "importErrorMissingApiKey": "nawawalang API key", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Nag-i-import…", "importFromFileImport": "Mag-import ng {count} na provider", "importFromFileResult": "Na-import ang {success} na provider ({failed} ang nabigo)", + "importFromFileDownloadTemplate": "I-download ang template ng CSV", + "importFromFileMoreErrors": "+{count} pa", + "importFromFileSchemaHint": "Nakabatay sa posisyon ang mga column ng CSV: provider, name, apiKey, baseUrl (opsyonal), priority (opsyonal). Ang column na provider ay dapat isang umiiral na ID ng pinamamahalaang provider o ID ng nakarehistro nang node na compatible sa OpenAI/Anthropic — hindi gumagawa ang pag-import na ito ng mga bagong endpoint node.", "adaptaTutorial": { "title": "Paano ikonekta ang Adapta Web", "introPrefix": "Nag-a-authenticate ang Adapta sa pamamagitan ng Clerk. Ang token", @@ -5099,7 +5102,7 @@ "step5DescPrefix": "I-click ang", "step5DescMiddle": "i-paste ang", "step5DescSuffix": "na value sa field ng API Key, pagkatapos ay i-save. Awtomatikong ire-refresh ng OmniRoute ang session.", - "tipLabel": "Tip:", + "tipLabel": "Payo:", "tipPrefix": "Ang", "tipSuffix": "cookie ay long-lived, karaniwang tumatagal ng ilang buwan. Kailangan mo lang itong i-renew kung mag-sign out ka o kung i-invalidate ng Adapta ang session." }, @@ -5114,8 +5117,8 @@ "testConnection": "Subukan ang Koneksyon", "testSuccess": "Matagumpay ang koneksyon", "testFailed": "Nabigo ang koneksyon", - "available": "Available", - "cooldown": "Cooldown", + "available": "Magagamit", + "cooldown": "Panahon ng paghihintay", "unavailable": "Hindi magagamit", "unknown": "Hindi alam", "oauthLabel": "OAuth", @@ -5155,8 +5158,8 @@ "autoHideFailed": "Awtomatikong itago ang mga nabigong model", "autoHideFailedHint": "Kapag naka-enable, itinatago ng Test all ang mga hindi pansamantalang pagkabigo mula sa mga pampublikong catalog tulad ng /v1/models. Ang mga single-model test ay hindi kailanman awtomatikong itinatago.", "connected": "{count} Nakakonekta", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", + "errorCount": "{count} Pagkakamali ({code})", + "errorCountNoCode": "{count} Pagkakamali", "testAllCompleted": "Na-test ang {total} na model: {ok} OK, {failed} ang nabigo", "modelAutoHidden": "Awtomatikong itinago ang model na {model} (nabigo ang test)", "filterAll": "Lahat", @@ -5165,20 +5168,20 @@ "modelsHiddenCount": "{count} na nakatago", "warningCount": "{count} Babala", "noConnections": "Walang koneksyon", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Nag-expire na", + "expiringSoonBadge": "Malapit nang mag-expire", "freeTier": "Libreng Tier", "freeTierAvailable": "Available ang libreng tier", "hasFreeTooltip": "May libreng tier", "noAuthLabel": "Walang Auth", "noAuthProviders": "Walang mga Auth Provider", - "upstreamProxyLabel": "Upstream Proxy", + "upstreamProxyLabel": "Upstream na Proxy", "freeAggregated": "Lahat ng provider na may libreng tier (ipinapakita rin sa kanilang sariling kategorya)", "deprecated": "Hindi na ginagamit", "deprecatedProvider": "Ang provider na ito ay hindi na ginagamit", "riskNotice": { "title": "Bago magpatuloy", - "detailsTitle": "Usage caveats", + "detailsTitle": "Mga paalala sa paggamit", "tooltip": "Provider na may mga paalala sa paggamit — i-click para sa mga detalye", "oauth": "Gumagamit ang provider na ito ng iyong opisyal na session ng produkto/OAuth, na hindi awtorisado para sa paggamit ng proxy/router. Hindi namin inirerekomenda ang masinsinang paggamit ng autonomous agent (estilong OpenCloud, mahabang multi-step na flow, malalaking batch) — maaaring tumugon ang upstream sa pamamagitan ng paghihigpit o pag-ban sa account. Gamitin sa sarili mong panganib.", "webCookie": "Nagpapatotoo ang provider na ito sa pamamagitan ng iyong mga cookie sa web session. Maaaring pawalang-bisa ng upstream na serbisyo ang session anumang oras, na nangangailangan sa iyong mag-log in muli. Hindi inirerekomenda para sa mahabang operasyon na walang bantay. Gamitin sa sarili mong panganib.", @@ -5188,9 +5191,9 @@ "cancel": "Kanselahin" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "May flag ang {count} koneksyon — hanggang {maxFailures} kamakailang pagkabigo{lastFailureSuffix}. I-click para tingnan ang kalagayan ng koneksyon.", + "lastFailureSuffix": "(huling pagkabigo noong {time})", + "ariaLabel": "Tingnan ang mga detalye ng kalagayan ng koneksyon, {count} babala" }, "disabled": "Hindi pinagana", "enableProvider": "Paganahin ang provider", @@ -5203,11 +5206,11 @@ "addNewProvider": "Magdagdag ng Bagong Provider", "backToProviders": "Bumalik sa Provider", "configureNewProvider": "Mag-configure ng bagong AI provider na gagamitin sa iyong mga application.", - "providerLabel": "Provider", + "providerLabel": "Tagapagbigay", "selectProvider": "Pumili ng provider", "selectedProvider": "Napiling provider", "authMethod": "Paraan ng Pagpapatunay", - "apiKeyLabel": "API Key", + "apiKeyLabel": "Susi ng API", "apiKeyRequired": "Kinakailangan ang API Key", "selectProviderRequired": "Mangyaring pumili ng provider", "enterApiKey": "Ilagay ang iyong API key", @@ -5215,7 +5218,7 @@ "oauth2Connect": "Kumonekta sa OAuth2", "oauth2Label": "OAuth2", "oauth2Desc": "Ikonekta ang iyong account gamit ang OAuth2 authentication.", - "displayName": "Display Name", + "displayName": "Pangalang Ipinapakita", "displayNamePlaceholder": "hal., Production API, Dev Environment", "displayNameHint": "Opsyonal. Isang friendly na pangalan para matukoy ang configuration na ito.", "active": "Aktibo", @@ -5225,7 +5228,7 @@ "failedCreate": "Nabigong gumawa ng provider", "errorOccurred": "May naganap na error. Pakisubukang muli.", "modelStatus": "Katayuan ng Modelo", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Mga naka-configure lang", "allModelsOperational": "Ang lahat ng mga modelo ay gumagana", "modelsWithIssues": "{count} (mga) modelong may mga isyu", "allModelsNormal": "Ang lahat ng mga modelo ay tumutugon nang normal.", @@ -5236,20 +5239,20 @@ "clearing": "Nililinis...", "until": "Hanggang {time}", "providerTestFailed": "Nabigo ang pagsubok ng provider", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Nag-timeout ang pagsubok sa provider — napakaraming koneksyon ang sabay-sabay na sinusubukan", "modeTest": "{mode} Pagsubok", "passedCount": "{count} pumasa", "failedCount": "Nabigo ang {count}", "testedCount": "{count} sinubukan", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", + "errorShort": "PAGKAKAMALI", "noActiveConnectionsInGroup": "Walang nakitang aktibong koneksyon para sa grupong ito.", "allTestsPassed": "Naipasa ang lahat ng {total} na pagsubok", "testSummary": "{passed}/{total} nakapasa, {failed} nabigo", "nameLabel": "Pangalan", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "Batayang URL", "apiTypeLabel": "Uri ng API", "prefixHint": "Kinakailangan. Natatanging prefix para sa mga pangalan ng modelo.", "nameHint": "Kinakailangan. Isang friendly na label para sa node na ito.", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL ng Icon", "iconUrlHint": "Opsyonal. URL ng larawan na ipinapakita bilang icon ng provider na ito.", "iconUrlInvalid": "Hindi wastong URL ng icon. Gumamit ng http(s):// o data:image/*;base64 na URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Timezone ng araw-araw na pag-reset ng quota", + "dailyQuotaResetTimezoneHint": "Opsyonal na IANA timezone na gagamitin kapag hindi isinama ng upstream ang X-RateLimit-Reset. Iwanang walang laman upang mapanatili ang maikling cooldown.", + "dailyQuotaResetHourLabel": "Oras ng araw-araw na pag-reset ng quota", + "dailyQuotaResetHourHint": "Lokal na oras mula 0-23 sa timezone sa itaas. Kapag walang laman, walang clock sa antas ng node.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Hindi nahanap ang provider", "deleteConnectionConfirm": "Tanggalin ang koneksyon na ito?", "deleteConnectionConfirmNamed": "Sigurado ka bang gusto mong tanggalin ang {name}? Hindi na maaaring bawiin ang pagkilos na ito.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "I-delete ang mga Napili ({count})", + "batchDeleteConfirm": "I-delete ang {count} koneksyon? Hindi na mababawi ang pagkilos na ito.", + "batchDeleteSuccess": "Na-delete ang {count} koneksyon", "batchActivateSelected": "I-activate", "batchDeactivateSelected": "I-deactivate", "batchRetestSelected": "Subukang muli", @@ -5289,10 +5292,10 @@ "batchDeleteConfirmTitle": "Burahin ang mga koneksyon", "batchDeleteConfirmButton": "Burahin", "filterActive": "Aktibo", - "filterError": "Error", + "filterError": "Pagkakamali", "filterBanned": "Naka-ban", "filterCreditsExhausted": "Ubos na ang kredito", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Maghanap ng mga account…", "noFilteredConnections": "Walang koneksyon na tumutugma sa kasalukuyang filter.", "failedSetAlias": "Nabigong itakda ang alias", "setAliasSuccess": "Naitakda ang alias na {alias}", @@ -5305,18 +5308,18 @@ "openaiCompatibleDetails": "Mga Detalye ng Tugma sa OpenAI", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Mga Embedding", + "audioTranscriptions": "Mga Transkripsyon ng Audio", + "audioSpeech": "Audio na Pananalita", + "imagesGenerations": "Pagbuo ng mga Larawan", "chatCompletions": "Mga Pagkumpleto ng Chat", "importingModels": "Ini-import...", "importFromModels": "Mag-import mula sa /models", - "modelsImported": "{count} models imported", + "modelsImported": "{count} modelo ang na-import", "allModelsAlreadyImported": "Lahat ng mga modelo ay nai-import na", "noNewModelsToImport": "Walang bagong modelo na i-import — lahat ng mga modelo ay nasa registry o custom na listahan na", "skippingExistingModels": "Pinapalampas ang {count} na umiiral na mga modelo", - "autoSync": "Auto-Sync", + "autoSync": "Awtomatikong Pag-sync", "autoSyncShort": "I-sync", "autoFetchModels": "Awtomatikong kunin ang mga upstream na modelo", "autoFetchModelsTooltip": "Kunin at i-cache ang upstream models kapag kinakailangan", @@ -5350,13 +5353,13 @@ "importFailed": "Nabigo ang pag-import", "noNewModelsAdded": "Walang naidagdag na mga bagong modelo.", "adding": "Idinaragdag...", - "close": "Close", + "close": "Isara", "importingModelsTitle": "Pag-import ng mga Modelo", "copyModel": "Kopyahin ang modelo", "filterModels": "I-filter ang mga modelo…", "testAllRateLimited": "Naabot ang limitasyon sa rate, maagang huminto", "hideFailedAuto": "Awtomatikong itago ang mga nabigong modelo", - "selectAllModels": "Select all", + "selectAllModels": "Piliin lahat", "hideAllModels": "Itago lahat", "modelsActive": "aktibo", "showModel": "Ipakita ang modelo", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Isang susi bawat linya. Format: pangalan|apiKey o apiKey lang (awtomatikong pinangalanan ng index).", "bulkValidateKeys": "I-validate ang bawat key bago i-save (mas mabagal)", "bulkAddAllKeys": "Idagdag ang Lahat ng Susi", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# key ang idinagdag} other {# key ang idinagdag}}", + "bulkFailedCount": "{count, plural, one {# ang nabigo} other {# ang nabigo}}", "optional": "Opsyonal", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "May naganap na hindi inaasahang error", "getApiKey": "Kumuha ng API key", "getApiKeyDescription": "Magrehistro o mag-sign up para sa isang API key", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# koneksyon} other {# koneksyon}}", "messagesPath": "mga mensahe", "responsesPath": "mga tugon", "chatCompletionsPath": "chat/pagkumpleto", @@ -5419,17 +5422,17 @@ "configured": "naka-configure", "providerProxyConfigureHint": "I-configure ang proxy para sa lahat ng koneksyon ng provider na ito", "providerProxy": "Proxy ng Provider", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Ayusin ang env", + "repairEnvWorking": "Inaayos...", + "repairEnvHint": "Ibalik sa .env ang mga nawawalang default ng OAuth nang hindi pinapatungan ang mga kasalukuyang value.", + "repairEnvSuccess": "Naibalik ang mga default ng OAuth", + "repairEnvFailed": "Hindi naayos ang .env", "noConnectionsYet": "Wala pang koneksyon", "addFirstConnectionHint": "Idagdag ang iyong unang koneksyon upang makapagsimula", "addConnection": "Magdagdag ng Koneksyon", "availableModels": "Mga Magagamit na Modelo", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Mga built-in na modelo", + "builtInModelsHint": "Mga modelo sa registry para sa provider na ito. Gamitin ang lapis upang itakda ang mga opsyon sa compatibility.", "pageAutoRefresh": "Awtomatikong magre-refresh ang page...", "statusDisabled": "may kapansanan", "statusConnected": "konektado", @@ -5451,11 +5454,11 @@ "errorTypeUpstreamUnavailable": "Upstream ay hindi magagamit", "errorTypeNetworkError": "Error sa network", "errorTypeTestUnsupported": "Hindi sinusuportahan ang pagsubok", - "errorTypeUpstreamError": "Upstream error", + "errorTypeUpstreamError": "Error sa upstream", "errorTypeCreditsExhausted": "Walang credits", - "errorTypeBanned": "403 Banned", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", + "errorTypeBanned": "403 Na-ban", + "proxySourceGlobal": "Pangkalahatan", + "proxySourceProvider": "Tagapagbigay", "proxySourceKey": "Susi", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "Naka-on ang Proxy", @@ -5468,37 +5471,37 @@ "perKeyProxyDisabledTitle": "Naka-disable ang pagtatalaga ng proxy kada key para sa provider na ito", "autoPriority": "Auto: {priority}", "proxy": "Proxy", - "retestAuthentication": "Retest authentication", - "retest": "Retest", + "retestAuthentication": "Subukang muli ang authentication", + "retest": "Subukan muli", "disableConnection": "Huwag paganahin ang koneksyon", "enableConnection": "Paganahin ang koneksyon", "reauthenticateConnection": "Muling patotohanan ang koneksyong ito", - "proxyConfig": "Proxy config", + "proxyConfig": "Configuration ng proxy", "aliasExistsAlert": "Umiiral na ang alyas na \"{alias}\". Mangyaring gumamit ng ibang modelo o i-edit ang kasalukuyang alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "pangalan ng alias", + "clickToSetAlias": "I-click upang magtakda ng alias", + "clickToEditAlias": "Alias: {alias} (i-click upang i-edit)", "openRouterAnyModelHint": "Sinusuportahan ng OpenRouter ang anumang modelo. Magdagdag ng mga modelo at lumikha ng mga alias para sa mabilis na pag-access.", "modelIdFromOpenRouter": "Model ID (mula sa OpenRouter)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", "customModels": "Mga Custom na Modelo", "customModelsHint": "Magdagdag ng mga model ID na wala sa default na listahan. Magiging available ang mga ito para sa pagruruta.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", + "normalizeToolCallIdLabel": "I-normalize sa 9 na character ang mga tool call ID (hal. Mistral)", + "preserveDeveloperRoleLabel": "Panatilihin ang developer role ng OpenAI Responses (huwag i-map sa system)", + "compatAdjustmentsTitle": "Pagkakatugma", + "compatButtonLabel": "Pagkakatugma", "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "compatDeveloperShort": "Tungkulin ng developer", + "compatDoNotPreserveDeveloper": "Huwag panatilihin ang developer role", + "compatBadgeNoPreserve": "Huwag panatilihin", + "compatProtocolLabel": "Protocol ng kahilingan ng client", + "compatProtocolHint": "Nalalapat ang mga opsyong ito kapag natukoy ng OmniRoute ang ganitong anyo ng kahilingan (OpenAI Chat, Responses API, o Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", "targetFormatLabel": "Target na Format", "targetFormatHint": "I-override ang upstream wire format. Gamitin ang 'Anthropic Messages' para i-route ang mga OpenAI-compatible na provider (hal. opencode-go) sa pamamagitan ng /v1/messages endpoint.", - "targetFormatAuto": "Default (auto)", + "targetFormatAuto": "Default (awtomatiko)", "targetFormatGemini": "Gemini", "targetFormatAntigravity": "Antigravity", "contextWindowOverrideLabel": "Override sa Context Window", @@ -5534,31 +5537,31 @@ "interceptFetchHint": "I-rewrite ang mga native na tawag sa tool na web_fetch sa /v1/web/fetch ng OmniRoute.", "interceptionLoadError": "Hindi nai-load ang mga setting ng interception: {error}", "interceptionSaveError": "Hindi nai-save ang mga setting ng interception: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Ilantad sa Claude Code (claude/…)", + "ccAliasSectionHint": "Ipakita ang mga modelo ng provider na ito sa ilalim ng mga mirror ID na claude/<provider>/<model> upang mailista ang mga ito ng pagtuklas ng gateway model ng Claude Code. Naka-off bilang default — kapag pinagana ito, madodoble ang mga entry sa catalog para sa lahat ng client.", + "ccAliasProviderLevelLabel": "Default ng provider", + "ccAliasModelOverridesLabel": "Mga override kada modelo", + "ccAliasModelOverrideAriaLabel": "Override para sa {modelId}", + "ccAliasStateInherit": "Manahin", + "ccAliasStateOn": "Naka-on", + "ccAliasStateOff": "Naka-off", + "ccAliasAddModelPlaceholder": "ID ng modelo (hal. gpt-4o)", + "ccAliasAddModelButton": "Magdagdag ng override", + "ccAliasLoadError": "Hindi na-load ang mga setting ng discovery-alias: {error}", + "ccAliasSaveError": "Hindi na-save ang setting ng discovery-alias: {error}", + "compatUpstreamHeadersLabel": "Mga karagdagang upstream header", + "compatUpstreamHeadersHint": "Setting na may mataas na pribilehiyo — kapareho ng antas ng tiwala sa pag-edit ng mga kredensyal ng provider API; mga pinagkakatiwalaang admin lamang ang dapat gumamit nito. Pinagsasama ito pagkatapos idagdag ng OmniRoute ang auth mula sa provider API key. Kung gumagamit ang isang custom header ng kaparehong pangalan ng umiiral na header (hal. Authorization), ganap na papalitan ng iyong value ang awtomatikong ginawang header (kabilang ang Bearer token) — ang inilagay mo lamang ang makikita ng upstream, hindi ang key mula sa mga setting. Maaaring magdulot ang maling configuration ng 401 o sirang upstream auth. Isang row bawat header (hal. karagdagang Authentication para sa ilang gateway). I-hover o i-focus ang value upang i-preview. Nase-save kapag nawalan ng focus, nag-click sa labas, o isinara ang panel na ito.", + "compatUpstreamHeaderName": "Pangalan ng header", + "compatUpstreamHeaderValue": "Halaga", + "compatUpstreamAddRow": "Magdagdag ng header", + "compatUpstreamRemoveRow": "Alisin ang row", + "compatBadgeUpstreamHeaders": "Mga header", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "I-import lang ang mga libreng modelo", "importFreeModelsOnlyHint": "Kapag pinagana, ang mga libreng modelo lang ng provider na ito ang ii-import. Lalaktawan ang mga may bayad na modelo.", "perModelQuotaToggle": "Toggle ng Quota Bawat Modelo", - "modelId": "Model ID", + "modelId": "ID ng Modelo", "customModelPlaceholder": "hal. gpt-4.5-turbo", "loading": "Naglo-load...", "removeCustomModel": "Alisin ang custom na modelo", @@ -5590,28 +5593,28 @@ "editConnection": "I-edit ang Koneksyon", "accountName": "Pangalan ng account", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "Pagsusuri ng Kalagayan (min)", "healthCheckHint": "Proactive token refresh interval. 0 = hindi pinagana.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Alisin sa pagkakapili ang lahat", + "modelsActiveCount": "{active}/{total} ang aktibo", + "noModelsMatch": "Walang modelong tumutugma sa \"{filter}\"", + "groupLabel": "Kapaligiran", + "groupPlaceholder": "hal. eKaizen, Personal", "failedTestConnection": "Nabigong subukan ang koneksyon", "failed": "Nabigo", "leaveBlankKeepCurrentApiKey": "Iwanang blangko upang mapanatili ang kasalukuyang API key.", "editCompatibleTitle": "I-edit ang {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "Root URL ng iyong API na compatible sa {type}. Gamitin ang Mga Advanced na Setting para sa mga custom na endpoint path.", "apiKeyForCheck": "API Key (para sa Pagsusuri)", "testModelIdLabel": "Model ID (opsyonal)", "testModelIdPlaceholder": "hal. my-model-id", "testModelIdHint": "Kung walang /models endpoint ang provider, maglagay ng model ID para mag-validate sa pamamagitan ng /chat/completions sa halip.", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "Compatible sa {type} (Prod)", + "tokenRefreshed": "Matagumpay na na-refresh ang token", + "tokenRefreshFailed": "Hindi na-refresh ang token", "cursorSessionUnchanged": "Kasalukuyan na ang sesyon", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Ilapat ang auth", + "exportCodexAuthFile": "I-export ang auth", "applyClaudeAuthLocal": "Ilapat ang auth", "exportClaudeAuthFile": "I-export ang auth", "importClaudeAuth": "Mag-import ng auth", @@ -5726,7 +5729,7 @@ "codexImportNoEmailDetected": "Walang email na nakita sa file", "codexImportBulkModeUpload": "Mag-upload ng mga file", "codexImportBulkModePaste": "Idikit ang listahan", - "codexImportBulkModeZip": "ZIP archive", + "codexImportBulkModeZip": "Arkibong ZIP", "codexImportBulkUploadHint": "Pumili ng maramihang .json file o i-drag at i-drop", "codexImportBulkPasteHint": "JSON array [ {...}, {...} ] o maraming JSON na pinaghihiwalay ng --- sa sarili nitong linya", "codexImportBulkZipHint": "Mag-upload ng .zip na naglalaman ng mga auth.json file (max 50 file, 10 MB)", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "Nabigo ang {count}", "codexImportBulkZipExtracting": "Kinukuha ang ZIP…", "codexImportBulkZipError": "Nabigong i-extract ang ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Mga Advanced na Setting", + "chatPathLabel": "Path ng Chat Endpoint", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Custom na path ng chat para sa mga provider na may hindi karaniwang API (hal. /v4/chat/completions)", + "modelsPathLabel": "Path ng Endpoint ng Mga Modelo", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Custom na path ng mga modelo para sa pagpapatunay (hal. /v4/models)", "clientIdentityLabel": "Identidad ng Client", "clientIdentityHint": "Opsyonal. Nagdaragdag ng mga header ng fingerprint ng client (hal. User-Agent) na tumutugma sa isang kilalang CLI para sa mga katugmang gateway na nag-aabang nito.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Na-deactivate (Manwal)", + "statusBanned": "Na-ban / Paglabag sa Sandbox", + "statusCreditsExhausted": "Hindi Sapat ang Balanse / Naubos ang Quota", + "showEmails": "Ipakita ang lahat ng email", + "hideEmails": "Itago ang lahat ng email", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Magdagdag ng isa pang API key o mag-paste ng maraming key", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Mga Gateway ng Aggregator", "enterpriseCloud": "Enterprise at Cloud", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Label ng Format ng API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", + "apiRegionChina": "Rehiyon ng API: China", + "apiRegionHint": "Pahiwatig sa Rehiyon ng API", + "apiRegionInternational": "Rehiyon ng API: Internasyonal", + "apiRegionLabel": "Label ng Rehiyon ng API", + "apikey": "API key", "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "audioProvidersHeading": "Heading ng Mga Provider ng Audio", "cloudAgentProviders": "Mga Provider ng Cloud Agent", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Maikling Label ng Audio", + "azureOpenAiBaseUrlHint": "Pahiwatig sa Base URL ng Azure Open Ai", + "bailianBaseUrlHint": "Pahiwatig sa Base URL ng Bailian", + "claudeWebCookieHint": "Buksan ang claude.ai → DevTools → Application → Cookies → claude.ai, at kopyahin ang value ng 'sessionKey'. Kailangan din ang cf_clearance, __cf_bm, _cfuvid para sa Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Pahiwatig sa Cookie ng Blackbox Web", + "blackboxWebCookiePlaceholder": "Placeholder ng Cookie ng Blackbox Web", "t3ChatWebCookieHint": "Buksan ang t3.chat → DevTools → Application → Local Storage → https://t3.chat, kopyahin ang 'convex-session-id'. Pagkatapos ay buksan ang DevTools → Network, kopyahin ang buong Cookie header mula sa anumang kahilingan sa chat. I-paste ang parehong mga halaga sa mga patlang sa ibaba.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Pahiwatig sa Cookie ng Grok Web", "blockClaudeExtraUsageDescription": "Kapag naka-enable, minamarkahan ng OmniRoute ang koneksyong ito ng Claude bilang hindi magagamit sa sandaling iulat ng usage API ang naka-queue na dagdag na paggamit, kaya ang fallback ay lumilipat sa ibang koneksyon sa halip na magpatuloy sa pay-as-you-go na dagdag na pagsingil.", "blockClaudeExtraUsageLabel": "I-block ang labis na paggamit ng Claude", "disableCoolingDescription": "Laktawan ang transient cooldown para manatiling kwalipikado ang koneksyong ito kahit pagkatapos ng mga error na maaaring ma-recover (nalalapat pa rin ang mga terminal state tulad ng banned/expired).", "disableCoolingLabel": "I-disable ang cooldown para sa koneksyong ito", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 key ang naidagdag} other {# key ang naidagdag}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate ang nilaktawan} other {# duplicate ang nilaktawan}}", + "bulkPasteHint": "Mag-paste ng isang API key sa bawat linya. Binabalewala ang mga walang lamang linya at nilalaktawan ang mga duplicate na key.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Idinaragdag ang beta header na redact-thinking para sa mga CC Compatible upstream na nangangailangan ng mga nakatagong thinking stream ng Claude.", + "ccCompatibleRedactThinkingLabel": "I-enable ang redact-thinking beta", + "ccCompatibleSummarizeThinkingDescription": "Idinaragdag ang `display: \"summarized\"` sa mga CC Compatible thinking request upang makapag-stream ang mga sinusuportahang Claude model ng mga nakikitang thinking delta.", + "ccCompatibleSummarizeThinkingLabel": "I-enable ang summarized thinking display", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,20 +5811,20 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Gamitin ang priority service tier para sa mga Codex request kapag available.", + "codexFastServiceTierLabel": "Mabilis na service tier ng Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", - "newApiAggregatorToggleLabel": "Aggregator Gateway", + "compatUpstreamHeaderNamePlaceholder": "Placeholder ng Pangalan ng Header ng Compat Upstream", + "compatUpstreamHeaderValuePlaceholder": "Placeholder ng Value ng Header ng Compat Upstream", + "compatible": "Katugma", + "configuredCount": "Bilang na Na-configure", + "consoleApiKeyOracleHint": "Pahiwatig sa Console API Key ng Oracle", + "consoleApiKeyOracleLabel": "Label ng Console API Key ng Oracle", + "consoleApiKeyOraclePlaceholder": "Placeholder ng Console API Key ng Oracle", + "newApiUserIdLabel": "User ID ng New-API", + "newApiUserIdPlaceholder": "hal. 12345", + "newApiUserIdHint": "Value ng AgentRouter New-Api-User header, na ginagamit kasama ng console API key upang kunin ang balanse ng quota.", + "newApiAggregatorToggleLabel": "Gateway ng Aggregator", "newApiAggregatorToggleHint": "I-enable ang pagtukoy ng balanse para sa New-API / One-API / Sub2API aggregator nodes. Ipapakita ng dashboard ang badge ng balanse at ang quota-preflight routing ay laktawan ang mga ubos na account.", "newApiAggregatorConsoleApiKeyHint": "Token ng Access ng Sistema para sa endpoint na /api/user/self ng aggregator. Hindi ang routing API key.", "newApiAggregatorUserIdHint": "New-Api-User header value na ginamit upang kunin ang quota balance ng aggregator user.", @@ -5830,57 +5833,57 @@ "featureFlagNewApiAggregatorBalanceDescription": "I-enable ang pagtuklas ng balanse para sa mga node na katugma ng New-API / One-API / Sub2API aggregator", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Pahiwatig sa Custom User Agent", + "customUserAgentLabel": "Label ng Custom User Agent", + "databricksBaseUrlHint": "Pahiwatig sa Base URL ng Databricks", + "defaultThinkingStrengthHint": "Ginagamit kapag walang tinukoy na antas ng pagsisikap sa pangangatwiran ang isang request.", + "defaultThinkingStrengthLabel": "Default na antas ng pag-iisip", + "deleteAllExtraApiKeys": "Tanggalin lahat", + "excludedModelsHint": "Pahiwatig sa mga Hindi Kasamang Modelo", + "excludedModelsLabel": "Label ng mga Hindi Kasamang Modelo", + "excludedModelsPlaceholder": "Placeholder ng mga Hindi Kasamang Modelo", + "expirationBannerExpired": "Nag-expire na", + "expirationBannerExpiredDesc": "Paglalarawan ng nag-expire nang banner", + "expirationBannerExpiringSoon": "Malapit Nang Mag-expire", + "expirationBannerExpiringSoonDesc": "Paglalarawan ng banner na malapit nang mag-expire", + "extraApiKeyMasked": "Susi {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Pahiwatig sa mga Karagdagang API Key", + "extraApiKeysLabel": "Label ng mga Karagdagang API Key", + "apiKeyHealthLabel": "Kalagayan ng API Key", + "apiKeyStatusActive": "Aktibo", + "apiKeyStatusWarning": "Babala ({count} pagkabigo)", + "apiKeyStatusInvalid": "Hindi Wasto", + "primaryKey": "Pangunahing Key", + "apiKeyInvalidAlert": "Minarkahan bilang hindi wasto ang {count} API key dahil sa mga pagkabigo sa authentication sa mga koneksyon: {connections}. Lalaktawan ang mga ito sa rotation. I-click upang suriin.", + "apiKeyInvalidAlertTitle": "Alerto sa Kalagayan ng API Key", + "apiKeyWarningAlert": "Nasa estado ng babala ang {count} API key dahil sa mataas na antas ng pagkabigo sa mga koneksyon: {connections}. Suriin upang maiwasan ang mga problema sa rotation.", + "apiKeyWarningAlertTitle": "Babala sa API Key", + "googlePseInfo": "Impormasyon ng Google PSE", "antigravityProjectIdHint": "Opsyonal na override para sa mga kahilingan sa Antigravity Cloud Code. Iwanang blangko upang magamit ang proyektong natuklasan sa panahon ng Google OAuth.", "antigravityClientProfileLabel": "Profile ng client", "antigravityClientProfileHint": "Pumili kung aling identidad ng Antigravity client ang ipapakita ng OmniRoute sa API.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Aktibo ang Codex Fast tier", - "tierFast": "Fast", - "antigravityProjectIdLabel": "Google Cloud Project ID", + "tierFast": "Mabilis", + "antigravityProjectIdLabel": "Project ID ng Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Placeholder ng Grok Web Cookie", + "herokuBaseUrlHint": "Pahiwatig sa Base URL ng Heroku", + "hideEmail": "Itago ang Email", + "imageProviders": "Mga Provider ng Larawan", "videoProviders": "Pagbuo ng Video", "embeddingRerankProviders": "Mga Pag-embed at Muling Ranggo", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Maikling Label ng Mga Larawan", + "llmProviders": "Mga Provider ng LLM", + "localProviderApiKeyOptionalHint": "Pahiwatig sa Opsyonal na API Key ng Lokal na Provider", + "localProviderBaseUrlHint": "Pahiwatig sa Base URL ng Lokal na Provider", + "localProviders": "Mga Lokal na Provider", + "maxConcurrentWholeNumberError": "Error sa Buong Numero para sa Maximum na Magkakasabay", "m365TierLabel": "Tier ng Copilot", "m365TierHint": "Piliin kung aling Microsoft 365 Copilot surface ang gagamitin ng koneksyong ito. Ang Individual ang default na consumer BizChat; ang Education at Enterprise (work) ay nag-o-opt in sa kanilang mga tenant surface.", - "m365TierIndividualOption": "Individual (default)", - "m365TierEduOption": "Education", + "m365TierIndividualOption": "Indibidwal (default)", + "m365TierEduOption": "Edukasyon", "m365TierEnterpriseOption": "Enterprise / Trabaho", "tierOverrideLabel": "Override ng tier", "tierOverrideAuto": "Auto (pagpapasya ng routing)", @@ -5888,26 +5891,26 @@ "tierOverrideCheap": "Mura", "tierOverridePremium": "Premium", "tierOverrideHelpText": "I-pin ang provider na ito sa isang routing tier sa halip na hayaan ang OmniRoute na tukuyin ito mula sa pagpepresyo ng modelo.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Pahiwatig sa Web Cookie ng Muse Spark", + "museSparkWebCookiePlaceholder": "Placeholder ng Web Cookie ng Muse Spark", + "oauth": "OAuth", + "openCliTools": "Buksan ang Mga CLI Tool", + "openSettings": "Buksan ang Mga Setting", + "openaiResponsesStoreDescription": "Payagan ang mga katugmang request sa Responses API na mapanatili ang nakaimbak na estado ng tugon.", + "openaiResponsesStoreLabel": "Imbakan ng OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Impormasyon sa Nakabahaging Key ng Perplexity Search", + "perplexityWebCookieHint": "Pahiwatig sa Web Cookie ng Perplexity", + "perplexityWebCookiePlaceholder": "Placeholder ng Web Cookie ng Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Mga Override sa Rate Limit", "rateLimitOverridesMaxConcurrentHint": "Override sa max concurrent requests para sa koneksyong ito. Ino-override ang cap sa antas ng account.", - "rateLimitOverridesMaxConcurrentLabel": "Max Concurrent (Rate Limit)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxConcurrentLabel": "Maximum na Magkakasabay (Limitasyon sa Rate)", + "rateLimitOverridesMaxWaitMsHint": "Maximum na oras (ms) na maaaring maghintay ang isang request para sa slot ng limitasyon sa rate bago ito mabigo. Ino-override nito ang pangkalahatang setting ng Resilience para lamang sa koneksiyong ito.", + "rateLimitOverridesMaxWaitMsLabel": "Maximum na Paghihintay sa Queue (ms)", "rateLimitOverridesMinTimeHint": "Minimum na oras (ms) sa pagitan ng mga request. Ino-override ang default na delay ng rate limiter.", - "rateLimitOverridesMinTimeLabel": "Min Interval (ms)", + "rateLimitOverridesMinTimeLabel": "Minimum na Agwat (ms)", "rateLimitOverridesRpdHint": "Pinakamataas na kahilingan bawat araw para sa koneksyong ito. Ino-override ang default ng provider.", "rateLimitOverridesRpdLabel": "RPD (Kahilingan/araw)", "rateLimitOverridesRpmHint": "Max na request bawat minuto para sa koneksyong ito. Ino-override ang default ng provider.", @@ -5916,55 +5919,55 @@ "rateLimitOverridesTpdLabel": "TPD (Mga Token/araw)", "rateLimitOverridesTpmHint": "Max na token bawat minuto para sa koneksyong ito. Ino-override ang default ng provider.", "rateLimitOverridesTpmLabel": "TPM (Mga Token/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Pamagat ng Pag-refresh ng OAuth Token", + "regionHint": "Pahiwatig sa Rehiyon", + "regionLabel": "Label ng Rehiyon", + "removeThisKey": "Alisin ang Key na Ito", + "routingTagsHint": "Pahiwatig sa Mga Routing Tag", + "routingTagsLabel": "Label ng Mga Routing Tag", + "routingTagsPlaceholder": "Placeholder ng Mga Routing Tag", + "search": "Maghanap", + "searchEngineIdHint": "Pahiwatig sa ID ng Search Engine", + "searchEngineIdLabel": "Label ng ID ng Search Engine", + "searchEngineIdRequired": "Kinakailangan ang ID ng Search Engine", + "searchProvider": "Provider ng Paghahanap", + "searchProviderDesc": "Paglalarawan ng Provider ng Paghahanap", "searchProviders": "Maghanap ng mga provider...", "searchByModel": "Maghanap ayon sa modelo…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Heading ng Mga Provider ng Paghahanap", + "searxngBaseUrlHint": "Pahiwatig sa Base URL ng Searxng", + "searxngInfo": "Impormasyon ng Searxng", + "sessionCookieLabel": "Label ng Cookie ng Session", + "showEmail": "Ipakita ang Email", + "snowflakeBaseUrlHint": "Pahiwatig sa Base URL ng Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Pahiwatig sa Grupo ng Tag", + "tagGroupLabel": "Label ng Grupo ng Tag", + "tagGroupPlaceholder": "Placeholder ng Grupo ng Tag", + "testModel": "Subukan ang Modelo", + "testingModel": "Sinusubukan ang Modelo", "modelTestQuotaTooltip": "Nakaubos na ang quota — magre-reset bukas o kailangan ng dagdag na pondo", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Badge ng Nag-expire na Token", + "tokenExpiredTitle": "Nag-expire na ang Token", + "tokenExpiresSoonTitle": "Malapit Nang Mag-expire ang Token", + "tokenShort": "Maikling Token", + "totalKeysRotating": "{count, plural, one {1 key ang iniikot} other {# key ang iniikot}}", + "unhideModel": "Ipakitang Muli ang Modelo", + "upstreamProxyProviders": "Mga Provider ng Upstream Proxy", "validationModelIdHint": "Modelong ginagamit para i-verify ang API key. Iwanang blangko para gamitin ang unang available na model ng provider.", "validationModelIdLabel": "Modelo ng validation", "validationModelIdPlaceholder": "hal. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", - "globalCodexServiceMode": "Global Codex service mode", + "vertexServiceAccountPlaceholder": "I-paste ang iyong Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) o isang OAuth access_token", + "webCookieProviders": "Mga Provider ng Web Cookie", + "weeklyShort": "Lingguhang Maikli", + "xiaomiMimoBaseUrlHint": "Pahiwatig sa Base URL ng Xiaomi Mimo", + "globalCodexServiceMode": "Pandaigdigang service mode ng Codex", "connect": "I-connect", "manualApiKey": "Manwal na API key", "addPat": "Magdagdag ng PAT", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Tukuyin ang mga credential ng AI provider (OpenAI, Anthropic, Google, Mistral, xAI) na nakaimbak sa pamamagitan ng Zed IDE sa OS keychain at i-import ang mga ito bilang mga koneksyon. Dapat ay naka-install ang Zed IDE sa makinang ito.", "zedImportButton": "I-import mula sa Zed", "zedImportFailed": "Nabigong i-import ang Zed", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Pahiwatig sa Pag-import ng Zed", + "zedImportNetworkError": "Error sa Network Habang Nag-i-import mula sa Zed", + "zedImportNone": "Walang Na-import mula sa Zed", "zedImportSuccess": "Inangkat na ang {credentials} credential(s) mula sa Zed para sa {providers} provider(s)", "zedImporting": "Nag-iimport…", "zedNoCredentials": "Walang nahanap na mga credential ng Zed sa keychain", @@ -6028,11 +6031,11 @@ "paramFiltersBlockedPlaceholder": "thinking, reasoning_budget, … (pinaghiwalay ng kuwit)", "paramFiltersAllowedPlaceholder": "reasoning, … (pinaghiwalay ng kuwit)", "customGatewayNamePlaceholder": "Aking Gateway", - "inherit": "Inherit", - "claudeImportEntryName": "entry {number}", + "inherit": "Manahin", + "claudeImportEntryName": "Tala {number}", "claudeImportParseError": "error sa pag-parse", "claudeImportNoValidEntries": "Walang wastong mga entry na mai-import", - "webFetch": "Web Fetch", + "webFetch": "Pagkuha mula sa Web", "webFetchTooltip": "Mga provider na nag-e-extract ng nilalaman mula sa mga web URL (HTML → Markdown, scrape, screenshot)", "webFetchProvidersHeading": "Mga Web Fetch Provider", "compatibleProvidersDesc": "Mga endpoint na compatible sa OpenAI at Anthropic na hino-host o kino-configure mo. Ituro ang anumang OpenAI SDK sa sarili mong URL at i-route ang mga request dito.", @@ -6051,14 +6054,14 @@ "embeddingRerankProvidersDesc": "Mga provider ng vector embedding at reranking para sa semantic search, mga RAG pipeline, at similarity scoring.", "imageProvidersDesc": "Mga provider ng image generation at vision — gumawa ng mga larawan mula sa text o suriin ang mga umiiral na.", "videoProvidersDesc": "Mga provider ng video generation. Gumawa ng maiikling video clip mula sa mga text prompt o larawan.", - "onboardingWizard": "Provider Onboarding Wizard", - "onboardingWizardShort": "Onboarding Wizard", + "onboardingWizard": "Wizard sa Pag-onboard ng Provider", + "onboardingWizardShort": "Wizard sa Pag-onboard", "onboardingWizardDescription": "Ikonekta ang API-key, custom na compatible, at OAuth provider na may validation, persistence, at isang agarang pagsubok sa koneksyon.", "onboardingStepType": "Uri", - "onboardingStepProvider": "Provider", + "onboardingStepProvider": "Tagapagbigay", "onboardingStepCredentials": "Mga kredensyal", "onboardingStepResult": "Resulta", - "onboardingTypeApiKeyTitle": "API-key provider", + "onboardingTypeApiKeyTitle": "Provider ng API key", "onboardingTypeApiKeyText": "Gumamit ng mga built-in na provider tulad ng OpenAI, Anthropic, Gemini, Groq, Azure, at higit pa.", "onboardingTypeCustomTitle": "Custom na katugmang provider", "onboardingTypeCustomText": "Gumawa ng OpenAI-, Anthropic-, o Claude Code-compatible na endpoint at idagdag ang susi nito.", @@ -6097,7 +6100,7 @@ "onboardingBaseUrlOverride": "Pag-override ng base URL", "onboardingBaseUrlOverrideHint": "Opsyonal. Naka-store bilang providerSpecificData.baseUrl.", "onboardingRegion": "Rehiyon", - "onboardingSearchCx": "Search CX / Engine id", + "onboardingSearchCx": "Maghanap ng CX / Engine id", "onboardingProviderSpecificIdPlaceholder": "Opsyonal na id na tukoy sa provider", "onboardingCustomUserAgent": "Custom na Ahente ng Gumagamit", "onboardingWorking": "Nagtatrabaho…", @@ -6105,10 +6108,10 @@ "onboardingBack": "Bumalik", "onboardingCreateCustomCompatibleProvider": "Gumawa ng custom na compatible na provider", "onboardingCreateCustomCompatibleDescription": "Ang wizard ay lumikha muna ng isang provider node, pagkatapos ay iimbak at subukan ang API-key na koneksyon nito.", - "onboardingProtocol": "Protocol", - "onboardingOpenAiCompatible": "OpenAI-compatible", + "onboardingProtocol": "Protokol", + "onboardingOpenAiCompatible": "Compatible sa OpenAI", "onboardingAnthropicCompatible": "Antropic-compatible", - "onboardingClaudeCodeCompatible": "Claude Code-compatible", + "onboardingClaudeCodeCompatible": "Compatible sa Claude Code", "onboardingProviderPrefix": "Prefix ng provider", "onboardingProviderPrefixHint": "Ginagamit para buuin ang pinamamahalaang provider id.", "onboardingChatPath": "Daanan ng chat", @@ -6175,7 +6178,7 @@ "freeaiapikey": "May diskwentong API proxy para sa 40+ na modelo kabilang ang GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Kumuha ng iyong API key sa https://freeaiapikey.com/dashboard. Base URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Kumuha ng $300 libreng API credits sa https://freemodel.dev — walang kinakailangang impormasyon sa pagbabayad. OpenAI-compatible na endpoint. Available ang mga modelong GPT-5.4 at GPT-5.5.", "friendliai": "Libreng tier para sa serverless inference — walang kinakailangang credit card", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Libreng tier sa pamamagitan ng Google AI Studio; hindi na inilalathala ang mga quota kada modelo (tingnan ang pahina ng quota sa AI Studio) — hindi kailangan ng credit card.", "gigachat": "Ikonekta ang GigaChat (Sber) gamit ang isang API key.", "gitlab": "GitLab personal access token para sa pampublikong Code Suggestions API. Mag-configure ng self-hosted na base URL kapag hindi gumagamit ng gitlab.com.", "gitlawb-gmi": "Kumuha ng iyong API key mula sa Gitlawb Opengateway dashboard.", @@ -6184,7 +6187,7 @@ "glm-cn": "Ikonekta ang GLM Coding (China) gamit ang isang API key.", "glmt": "Preset na GLM profile na may mas mataas na token budget, naka-enable ang thinking, at mas mahabang timeout.", "getgoapi": "Ikonekta ang GoAPI gamit ang isang API key.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Libreng plano: mga limitasyon kada modelo (200K token/araw bawat chat model; tingnan ang console.groq.com/docs/rate-limits para sa RPM/RPD) — walang nakatalang paraan ng pagbabayad.", "haiper": "Kumuha ng API key sa haiper.ai/haiper-api", "heroku": "Ikonekta ang Heroku AI gamit ang isang API key.", "hcnsec": "Kumuha ng API key sa api.hcnsec.cn", @@ -6198,7 +6201,7 @@ "internlm": "Libreng buwanang quota ~1M input / 3M output tokens (~10 RPM)", "jina-ai": "Bearer API key para sa Jina AI rerank API.", "jina-reader": "Ikonekta ang Jina Reader gamit ang isang API key.", - "kenari": "Kenari exposes an OpenAI-compatible chat completions endpoint at https://kenari.id/v1/chat/completions, plus a live /v1/models catalog covering Claude, GPT, DeepSeek, GLM, Kimi and more. OmniRoute uses the OpenAI protocol and lists models via passthrough.", + "kenari": "Nagbibigay ang Kenari ng OpenAI-compatible chat completions endpoint sa https://kenari.id/v1/chat/completions, kasama ang live na /v1/models catalog na sumasaklaw sa Claude, GPT, DeepSeek, GLM, Kimi, at iba pa. Ginagamit ng OmniRoute ang OpenAI protocol at inililista ang mga modelo sa pamamagitan ng passthrough.", "kie": "Ikonekta ang KIE.AI gamit ang isang API key.", "kilo-gateway": "Ikonekta ang Kilo Gateway gamit ang isang API key.", "kimi": "Ikonekta ang Kimi gamit ang isang API key.", @@ -6252,7 +6255,7 @@ "requesty": "Gumawa ng API key sa https://app.requesty.ai, pagkatapos ay i-paste ito rito bilang isang Bearer token. OpenAI-compatible na endpoint sa https://router.requesty.ai/v1, na may live na catalog ng /v1/models.", "runwayml": "Ang pagbuo ng video sa Runway ay task-based. Nagpapasa ang OmniRoute ng mga text-to-video o image-to-video na job, nagpo-poll sa /v1/tasks/[id], at nino-normalize ang mga natapos na video output pabalik sa OpenAI-like na tugon ng /v1/videos/generations.", "sambanova": "$5 na libreng credits sa pag-signup (may bisa sa loob ng 30 araw), walang kinakailangang credit card", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Gumawa ng API key sa https://seekai.cc, pagkatapos ay i-paste ito rito bilang Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", "sap": "Gumagamit ang pagtuklas ng modelo ng /v2/lm/scenarios/foundation-models/models sa AI_API_URL. Gumagamit ang mga kahilingan sa chat ng deploymentUrl/chat/completions at nangangailangan ng AI-Resource-Group.", "sarvam": "Ang Sarvam AI ay katugma ng OpenAI sa /v1. Ang OmniRoute ay nag-uusisa sa /v1/models at nagruruta ng chat traffic sa /v1/chat/completions. Ang mga modelo ay na-tune para sa mga wikang Indic.", "scaleway": "1M libreng token para sa mga bagong account — sumusunod sa EU/GDPR (Paris), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Ikonekta ang Claude Code gamit ang umiiral na OAuth flow.", "cline": "Ikonekta ang Cline gamit ang umiiral na OAuth flow.", "cursor": "Ikonekta ang Cursor IDE gamit ang umiiral na OAuth flow.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Ikonekta ang Cursor gamit ang isang user API key (crsr_...) mula sa cursor.com/dashboard/api; hindi kailangan ng IDE session.", "github": "Ikonekta ang GitHub Copilot gamit ang umiiral na OAuth flow.", "gitlab-duo": "OAuth application na may ai_features + read_user scopes. I-configure ang GITLAB_DUO_OAUTH_CLIENT_ID at opsyonal ang GITLAB_DUO_OAUTH_CLIENT_SECRET sa OmniRoute instance na ito.", "kilocode": "Ikonekta ang Kilo Code gamit ang umiiral na OAuth flow.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Kopyahin ang kinakailangang kredensyal mula sa sariling domain ng provider. Para sa cookies, kopyahin lang ang value ng Cookie header at alisin ang Cookie:.", "webSessionGuideStep3Manual": "Manwal na landas: buksan ang mga developer tools ng browser (F12 → Network), i-refresh ang pahina, buksan ang isang authenticated na request, at kopyahin ang halaga ng Cookie header mula sa Request Headers — alisin ang prefix na Cookie:.", "webSessionGuideStep4": "I-paste ito dito at suriin ang koneksyon. Kung huminto ito sa paggana, mag-sign in muli at palitan ito ng bagong halaga.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Mag-import ng .har file", + "harImportButtonBusy": "Ini-import…", + "harImportButtonHint": "Mag-export mula sa tab na Network ng DevTools pagkatapos magpadala ng kahit isang mensahe sa chat.", + "harImportStatusValid": "Na-import — valid nang ~{minutes}m.", + "harImportStatusExpiringSoon": "Na-import — valid na lang nang ~{minutes}m.", + "harImportStatusExpired": "Na-import, pero nag-expire na ang token na ito ({minutes}m ang nakalipas) — mag-export ng bagong HAR.", + "harImportStatusUnknownExpiry": "Na-import. Hindi mabasa ang oras ng pag-expire nito.", + "harImportErrorNotJson": "Hindi valid na JSON ang file na iyon — .har export ba talaga iyon?", + "harImportErrorNoEntries": "Walang naka-record na network entry sa HAR na ito.", + "harImportErrorNoChathubUrl": "Walang nakitang koneksyon sa Copilot chat sa HAR na ito. Magpadala ng kahit isang mensahe sa chat sa m365.cloud.microsoft bago mag-export.", + "harImportErrorUnparsableUrl": "Nakita ang koneksyon sa chat, pero hindi mabasa ang URL nito.", + "harImportErrorMissingFields": "Nakita ang koneksyon sa chat, pero nawawala ang token dito.", + "harImportErrorReadFailed": "Hindi mabasa ang file na iyon.", + "harImportErrorUnknown": "Hindi makakuha ng credential mula sa HAR file na iyon.", "webSessionSecurityHint": "Tratuhin ito bilang isang password: maaari nitong i-access ang iyong naka-sign-in na web account hanggang sa mag-expire o mabawi ito.", "webNoAuthGuideTitle": "Walang kinakailangang kredensyal", "webNoAuthGuideBody": "Hindi kailangan ng {provider} ng API key o cookie. I-save ang koneksyon upang magamit ang libreng web endpoint nito.", @@ -6376,7 +6379,7 @@ "doubaoWebDesc": "ByteDance AI chat sa pamamagitan ng doubao.com", "overrideBaseUrlAdvanced": "Advanced: i-override ang base URL", "overrideBaseUrlHint": "Advanced: ituro ang built-in provider na ito sa isang custom endpoint. Iwanang blangko upang gamitin ang default.", - "apiProtocolLabel": "API protocol", + "apiProtocolLabel": "Protocol ng API", "apiProtocolDefault": "Katugmang OpenAI (default)", "apiProtocolHint": "Ang ilang mga provider ay naglalathala ng parehong mga modelo sa higit sa isang protocol. Iwanan ang default maliban kung kailangan mo ang alternatibo.", "bulkAddFormatHintCloudflare": "Isang key bawat linya. Format: name|accountId|apiKey (Cloudflare account ID + API token).", @@ -6395,7 +6398,7 @@ "codexPoolCoolingDown": "Nasa panahon ng paghihintay", "codexPoolUsed": "nagamit", "codexPoolUntil": "Hanggang {value}", - "anonymousFallbackTitle": "Anonymous fallback", + "anonymousFallbackTitle": "Anonymous na fallback", "anonymousFallbackDesc": "Kapag naubos na ang lahat ng nakatakdang koneksyon (quota, kredito, o pag-expire), pansamantalang gamitin ang keyless tier ng provider na ito. Patayin upang laktawan ang provider na ito sa halip na magpadala ng mga hindi nagpapakilalang kahilingan — inirerekomenda kapag tinanggihan ng keyless tier ang mga ito (401).", "anonymousFallbackEnabled": "Naka-enable ang anonymous fallback para sa {provider}", "anonymousFallbackDisabled": "Naka-disable ang anonymous fallback para sa {provider} — ang mga nauubos na koneksyon ay laktawan ang provider na ito", @@ -6405,11 +6408,11 @@ "batchUpdateFailed": "Nabigo ang batch update", "batchUpdateNetworkError": "Error sa network habang nag-a-update ng batch", "categoryAudio": "Audio", - "categoryCloudAgent": "Cloud Agent", + "categoryCloudAgent": "Ahente sa Cloud", "categoryIde": "IDE", - "categoryLocal": "Local", + "categoryLocal": "Lokal", "categorySearch": "Maghanap", - "categoryWebCookie": "Web Cookie", + "categoryWebCookie": "Cookie sa Web", "claudeExtraUsageBlockingDisabled": "Naka-disable ang blocking ng extra-usage ng Claude (pinapayagan ang extra usage)", "claudeExtraUsageBlockingEnabled": "Naka-enable ang pag-block ng sobrang paggamit ng Claude (ang sobrang paggamit ay ma-block)", "claudeRoutingPreferenceDisabled": "Hindi na pinipili ng mga unprefixed na modelo ng Claude ang Claude Code", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Na-update ang mode ng serbisyo ng Codex", "codexServiceTierActive": "Ang Codex {tier} service tier ay aktibo", "codexTierFastLabel": "Mabilis", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Flexible", "commandCodeApplyFailed": "Nabigong ilapat ang Command Code na awtorisasyon", "commandCodeApplyingApproval": "Naaprubahan ng browser, inaaplay…", "commandCodeApplyingKey": "Nag-aaplay ng susi na aprubado ng browser…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Nawalan ng bisa ang Command Code auth", "commandCodeConnected": "Naka-konekta ang Command Code", "commandCodeConnectionAdded": "Nagdagdag ng Command Code na koneksyon", + "clearConnectionCooldown": "I-clear ang cooldown", + "clearConnectionCooldownInProgress": "Kino-clear…", + "clearConnectionCooldownTitle": "I-clear ang cooldown ngayon — gamitin kapag na-refresh na ang quota sa upstream", "commandCodeLinkExpired": "Nawalan ng bisa ang link ng Command Code", "commandCodeOpeningStudio": "Binubuksan ang Command Code Studio…", "commandCodePopupBlocked": "Naka-block ang popup. Mangyaring payagan ang mga popup at subukang muli ang Command Code Connect.", "commandCodeStartFailed": "Nabigong simulan ang Command Code auth", "connectionDeleted": "Nabura ang koneksyon", "connectionFallback": "koneksyon", + "connectionCooldownCleared": "Na-clear ang cooldown — muling isinama ang koneksyon sa routing", "coolingConnectionsDescription": "Ang mga koneksyong ito ay nagpapalamig pagkatapos ng huling kahilingan. Lalaktawan sila ng OmniRoute hanggang mag-expire ang timer — hindi kailangang i-disable nang mano-mano.", "coolingConnectionsTitle": "Kasalukuyang nagpapalamig ({count})", + "failedClearConnectionCooldown": "Hindi na-clear ang cooldown", "failedDeleteAlias": "Nabigong tanggalin ang alias", "failedDeleteConnection": "Nabigong tanggalin ang koneksyon", "failedDistributeProxies": "Nabigong ipamahagi ang mga proxy.", @@ -6446,9 +6454,9 @@ "failedUpdateCliproxyRouting": "Nabigong i-update ang routing ng CLIProxyAPI", "failedUpdateCodexLimitPolicy": "Nabigo ang pag-update ng patakaran sa limitasyon ng Codex", "failedUpdateCodexServiceMode": "Nabigong i-update ang mode ng serbisyo ng Codex", - "filterByMedia": "Media", + "filterByMedia": "Midya", "freeBadge": "Libre", - "kimiCodeApiKeyLabel": "Kimi Code API Key", + "kimiCodeApiKeyLabel": "Susi ng Kimi Code API", "modelTestFailed": "Nabigo ang pagsubok sa modelo", "modelTestNetworkError": "Error sa Network sa Pagsusuri ng Modelo", "networkError": "Error sa Network", @@ -6457,7 +6465,7 @@ "noProvidersMatch": "Walang mga provider na tumutugma sa iyong paghahanap.", "noSavedProxies": "Walang natagpuang naka-save na proxy. Magdagdag ng mga proxy sa Mga Setting → Proxy muna.", "pageLoadErrorDescription": "Hindi namin ma-load ang provider data sa ngayon. Suriin ang iyong koneksyon at subukang muli.", - "pageLoadErrorId": "Error ID: {id}", + "pageLoadErrorId": "ID ng Error: {id}", "pageLoadErrorRetry": "Subukan Muli", "pageLoadErrorTitle": "Nabigong i-load ang mga provider", "playgroundTitle": "Palaruan", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Naka-save na mga setting ng endpoint ng modelo", "searchByModelAria": "Maghanap ayon sa modelo", "selectSupportedEndpoint": "Pumili ng hindi bababa sa isang sinusuportahang endpoint", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "Mga setting", @@ -6551,32 +6554,32 @@ "routingOpStatusSeparator": " · ", "resilienceSettingsIntro": "Awtomatikong muling subukan, cooldown, at fallback kapag nabigo ang mga provider.", "aiSettingsIntro": "Mga setting na partikular sa AI para sa pag-iisip na badyet, gawi ng modelo, at compression.", - "systemPrompt": "System Prompt", + "systemPrompt": "Prompt ng System", "thinkingBudget": "Pag-iisip na Badyet", "proxy": "Proxy", "httpProxy": "HTTP Proxy", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Mga seksyon ng proxy", + "requestBodyLimitTitle": "Limitasyon sa Laki ng Katawan ng Request", + "requestBodyLimitDescription": "Pinakamalaking laki ng API payload na tatanggapin bago i-parse ang katawan ng request. Pananatilihin ng mga nakalaang route sa pag-upload ang hindi bababa sa built-in nilang limitasyong 100 MB.", + "requestBodyLimitInputLabel": "Limitasyon sa katawan ng request sa MB", + "requestBodyLimitEmptyError": "Maglagay ng limitasyon sa MB", + "requestBodyLimitWholeNumberError": "Gumamit ng buong numero", + "requestBodyLimitMinimumError": "Ang minimum ay {min} MB", + "requestBodyLimitMaximumError": "Ang maximum ay {max} MB", + "requestBodyLimitLoadFailed": "Hindi na-load ang mga setting ng limitasyon sa request", + "requestBodyLimitSaveSuccess": "Na-save ang limitasyon sa katawan ng request", + "requestBodyLimitSaveFailed": "Hindi na-save ang limitasyon sa katawan ng request", + "requestBodyLimitSaving": "Sine-save...", + "requestBodyLimitSave": "I-save", + "requestBodyLimitCurrent": "Kasalukuyan: {value}", "cacheConfigLoadFailed": "Nabigong i-load ang mga setting ng cache", "cacheConfigSaveSuccess": "Naka-save ang mga setting ng cache", "cacheConfigSaveFailed": "Nabigong i-save ang mga setting ng cache", "modelCatalogTtlWholeNumberError": "Gumamit ng buong numero", "modelCatalogTtlMinimumError": "Minimum ay {min} ms", "modelCatalogTtlMaximumError": "Maximum ay {max} ms", - "modelCatalogCacheTtl": "Model Catalog Cache TTL", + "modelCatalogCacheTtl": "TTL ng Cache ng Katalogo ng Modelo", "modelCatalogCacheTtlDescription": "Gaano katagal naka-cache ang mga tugon ng model catalog bago mag-refresh", "modelCatalogCacheTtlLabel": "TTL ng cache ng katalogo ng modelo sa milisegundo", "modelCatalogCacheTtlSaving": "Nagsasave...", @@ -6586,66 +6589,66 @@ "pricing": "Pagpepresyo", "storage": "Imbakan", "policies": "Mga patakaran", - "ipFilter": "IP Filter", + "ipFilter": "Filter ng IP", "comboDefaults": "Combo Default", "fallbackChains": "Fallback Chain", "changePassword": "Baguhin ang Password", "enablePassword": "Paganahin ang Password", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "darkMode": "Madilim na Mode", + "lightMode": "Maliwanag na Mode", + "memoryTitle": "Memorya", + "memoryDesc": "Permanenteng memorya ng pag-uusap sa iba't ibang session", + "memoryEnabled": "I-enable ang Memorya", + "memoryEnabledDesc": "Kapag naka-enable, maglalagay ang OmniRoute ng nauugnay na konteksto mula sa nakaraan.", "memoryTokenCostWarning": "Paalala: kapag naka-enable ang memory, nag-i-inject ang OmniRoute ng hanggang {tokens} na token ng nakuhang konteksto sa bawat kahilingan sa chat — pinapataas nito ang paggamit ng token at gastos. Upang laktawan ang pag-inject para sa isang partikular na kahilingan, ipadala ang \"x-omniroute-no-memory: true\" na header.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", + "maxTokens": "Maximum na Token", + "retentionDays": "Panahon ng Pagpapanatili", + "recent": "Kamakailan", + "recentDesc": "Kronolohikal na window", + "semantic": "Semantiko", + "semanticDesc": "Paghahanap gamit ang vector", "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "hybridDesc": "Kamakailan + Semantiko", + "skillsTitle": "Mga Kasanayan", + "skillsDesc": "Mga tool para sa mga modelo", + "skillsEnabled": "I-enable ang Mga Kasanayan", + "skillsEnabledDesc": "Nagbibigay-daan sa mga agent na mag-trigger ng mga function.", + "skillsComingSoon": "Malapit nang dumating ang marketplace ng mga kasanayan.", + "memorySkillsTitle": "Memorya at Mga Kasanayan", + "memorySkillsDesc": "Permanenteng konteksto at mga kakayahan", + "modelsDevTitle": "Database ng Modelo", + "modelsDevDesc": "Awtomatikong i-sync ang presyo, mga kakayahan, at mga detalye mula sa models.dev", + "modelsDevEnabled": "I-enable ang models.dev Sync", + "modelsDevEnabledDesc": "Kunin ang pagpepresyo, mga kakayahan, at mga espesipikasyon ng modelo mula sa open-source na database ng models.dev", + "modelsDevInterval": "Agwat ng Pag-sync", + "syncNow": "I-sync Ngayon", + "syncing": "Nagsi-sync...", + "lastSync": "Huling pag-sync", + "never": "Hindi kailanman", "justNow": "ngayon lang", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Mga Estadistika ng Pag-sync", + "modelsDevStatsDesc": "Kasalukuyang saklaw ng data ng models.dev", "providers": "Mga provider", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Mga Modelong may Pagpepresyo", + "capabilities": "Mga Kakayahan", + "lastSyncCount": "Bilang sa Huling Pag-sync", + "lastSyncFull": "Huling buong pag-sync", + "modelsDevInfo": "Paano Ito Gumagana", + "modelsDevInfoDesc": "Ang models.dev ay isang open-source na database ng mga espesipikasyon ng AI model na pinapanatili ng SST/OpenCode team. Nagbibigay ito ng pagpepresyo, mga kakayahan, mga limitasyon sa context, at mga modality para sa 4,000+ modelo mula sa 100+ provider.", + "modelsDevInfoResolution": "Pagkakasunod-sunod ng pagtukoy sa presyo (pinakamataas na priyoridad muna):", + "modelsDevInfoOrder": "Override ng User → models.dev → LiteLLM → Naka-hardcode na Default", "systemTheme": "Tema ng System", - "debugToggle": "Enable Debug Mode", + "debugToggle": "I-enable ang Debug Mode", "logToolSourcesToggle": "I-log ang mga Pinagmulan ng Tool", "logToolSourcesDescription": "Maglabas ng diagnostic log line bawat kahilingan na nagbubuod sa bilang ng tool at breakdown ng pinagmulan ng MCP/hosted/client.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "I-pin ang Impormasyon sa Home Page", "homePinnedSectionsDesc": "Piliin kung aling mga seksyon ang ipe-pin sa itaas ng Home page.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Mga Limitasyon sa Quota ng Provider", + "homeProviderQuotaLimitsDesc": "I-pin ang container ng status ng Provider Quota (kasama ang button na Refresh All) sa itaas ng Home page.", + "homeQuickStart": "Mabilisang Pagsisimula", + "homeQuickStartDesc": "Ipakita ang panel ng Mabilisang Pagsisimula sa Home page.", + "homeProviderTopology": "Topolohiya ng Provider", + "homeProviderTopologyDesc": "Ipakita ang Topolohiya ng Provider sa Home page.", "accountEmailVisibility": "Visibility ng email ng account", "accountEmailVisibilityDesc": "Ipakita ang buong mga email ng account sa mga provider, combo, log, quota, at mga screen ng playground. I-off ito upang i-mask ang mga ito bilang default.", "comboConfigMode": "Mode ng configuration ng combo", @@ -6661,50 +6664,50 @@ "providerQuotaAutoRefreshInterval": "Interbal ng pag-refresh", "providerQuotaAutoRefreshIntervalDesc": "Kung gaano kadalas dapat mag-refresh ang view ng quota, sa mga segundo.", "seconds": "segundo", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Ipakita ang mga Item sa Sidebar", "enableCache": "Paganahin ang Cache", "cacheTTL": "I-cache ang TTL", "maxCacheSize": "Max na Laki ng Cache", "clearCache": "I-clear ang Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Matagumpay na na-clear ang cache", + "clearCacheFailed": "Hindi na-clear ang cache", "cacheHits": "Mga Cache Hit", "cacheMisses": "Nakakamiss ang cache", - "hitRate": "Hit Rate", + "hitRate": "Antas ng Pagtama", "cacheEntries": "Mga Cache Entry", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "cacheSettings": "Mga Setting ng Cache", + "semanticCache": "Semantikong Cache", + "maxEntries": "Pinakamaraming Entry", + "ttlMinutes": "TTL (minuto)", + "promptCache": "Cache ng Prompt", + "strategy": "Diskarte", + "preserveClientCache": "Panatilihin ang Client Cache", + "enabled": "Naka-enable", "loading": "Loading...", "saving": "Nagse-save...", - "save": "Save", + "save": "I-save", "circuitBreaker": "Circuit Breaker", "retryPolicy": "Subukang muli ang Patakaran", "maxRetries": "Max na muling sumusubok", "retryDelay": "Subukan muli ang Pagkaantala", "timeoutMs": "Timeout (ms)", "enableSystemPrompt": "Paganahin ang System Prompt", - "systemPromptText": "System Prompt Text", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "systemPromptText": "Teksto ng Prompt ng System", + "autoDisableBannedAccounts": "Awtomatikong I-disable ang mga Na-ban na Account", + "autoDisableDescription": "Permanenteng markahan bilang naka-deactivate ang mga koneksyon sa provider kapag nagbalik ang mga ito ng partikular na pangwakas na senyales ng ban (hal. HTTP 403 'i-verify ang iyong account'). Aalisin nito ang mga iyon sa pag-ikot ng combo.", + "autoDisableThreshold": "Threshold ng Ban", + "autoDisableThresholdDesc": "Bilang ng magkakasunod na senyales ng ban na kinakailangan bago ang permanenteng pag-deactivate.", + "autoDisableBannedScope": "Ilapat ang awtomatikong pag-disable sa", + "autoDisableBannedScopeDesc": "Maaaring i-lock ng upstream ang mga puwesto sa pag-login (mga bayad na subscription at libreng account) kung patuloy na susubok muli ang OmniRoute pagkatapos ng ban. Walang ganoong panganib ang mga bayad nang prepaid API key — iwan ang mga ito sa pool upang magamit ng fill-first ang susunod na key.", + "autoDisableBannedScopeAll": "Lahat ng koneksyon", + "autoDisableBannedScopeAllDesc": "I-deactivate ang bawat koneksyong nagbabalik ng permanenteng senyales ng ban, kabilang ang mga prepaid API key.", + "autoDisableBannedScopeSubscription": "Mga account sa pag-login / subscription lamang", + "autoDisableBannedScopeSubscriptionDesc": "I-deactivate ang mga puwesto sa OAuth, cookie, session, at web login (bayad man o libre). Mananatiling aktibo ang mga prepaid API key upang makalipat sa alternatibo ang pagruruta kapag pumalya.", "customBannedSignals": "Mga Banned na Keyword", "customBannedSignalsDesc": "Mga karagdagang keyword na nagti-trigger ng pagtukoy sa permanenteng pag-ban ng account. Palaging nalalapat ang mga built-in na keyword.", "customBannedSignalsPlaceholder": "hal. api key revoked", "noCustomBannedSignals": "Walang custom na mga keyword. Mga built-in na keyword lamang ang aktibo.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Istruktura ng Resilience", "resilienceStructureDesc": "Kino-configure lang ng page na ito ang gawi. Ang estado ng live breaker ay ipinapakita sa pahina ng Kalusugan. Nananatili sa mga setting ng combo na partikular sa combo at kontrol ng round-robin slot.", "enableThinking": "Paganahin ang Pag-iisip", "maxThinkingTokens": "Max Thinking Token", @@ -6731,8 +6734,8 @@ "clearDataConfirm": "Permanente nitong tatanggalin ang lahat ng data. Sigurado ka ba?", "enableRequestLogs": "Paganahin ang Mga Log ng Kahilingan", "logRetention": "Pagpapanatili ng Log", - "ipWhitelist": "IP Whitelist", - "ipBlacklist": "IP Blacklist", + "ipWhitelist": "Whitelist ng IP", + "ipBlacklist": "Blacklist ng IP", "addIP": "Magdagdag ng IP", "savedSuccessfully": "Matagumpay na na-save ang mga setting", "ai": "AI", @@ -6746,27 +6749,27 @@ "themeSystem": "Sistema", "endpointTunnelVisibility": "Pagpapakita ng endpoint tunnel", "endpointTunnelVisibilityDesc": "Itago ang mga kontrol ng tunnel mula sa pahina ng Endpoint nang hindi binabago ang katayuan ng tunnel.", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Quick Tunnel ng Cloudflare", "showCloudflareTunnelDesc": "Ipakita ang mga kontrol ng Cloudflare Quick Tunnel sa pahina ng Endpoint.", - "showTailscaleFunnel": "Tailscale Funnel", + "showTailscaleFunnel": "Funnel ng Tailscale", "showTailscaleFunnelDesc": "Ipakita ang mga kontrol ng Tailscale Funnel sa pahina ng Endpoint.", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "Tunnel ng ngrok", "showNgrokTunnelDesc": "Ipakita ang mga kontrol ng Tunnel ngrok sa pahina ng Endpoint.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Itago ang mga item sa sidebar", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", + "presetAll": "Lahat", + "presetAllDesc": "Ipakita ang lahat", + "presetEssentials": "Mahahalaga", + "presetEssentialsDesc": "Landas para sa baguhan - Mananatiling nahahanap ang mga advanced na tool", "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", + "presetMinimalDesc": "Mga pangunahing pahina lamang", "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", + "presetDeveloperDesc": "Mga tool para sa development at proxy", "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAdminDesc": "Pagsubaybay at pag-audit", + "settingsSidebarTitle": "Pag-customize ng Sidebar", + "settingsSidebarDesc": "Piliin kung aling mga item sa sidebar ang ipapakita. Kapag Mahahalaga ang pinili, mananatiling nahahanap ang mga advanced na tool.", "hideHealthLogs": "Itago ang Health Check Logs", "hideHealthLogsDesc": "Kapag NAKA-ON, sugpuin ang mga mensahe ng [HealthCheck] sa server console", "themeAccent": "Kulay ng tema", @@ -6780,19 +6783,19 @@ "themeOrange": "Kahel", "themeCyan": "Siyan", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "I-customize ang pangalan at logo ng application", + "appName": "Pangalan ng Application", + "appNameDesc": "Pangalang ipinapakita sa sidebar at tab ng browser", + "customLogo": "URL ng Custom na Logo", + "customLogoDesc": "URL ng iyong custom na larawan ng logo", + "uploadLogo": "Mag-upload ng Logo", + "resetLogo": "I-reset sa Default", + "logoPreview": "Paunang Tingin", + "customFavicon": "Favicon ng Browser", + "customFaviconDesc": "URL ng iyong custom na favicon (ipinapakita sa tab ng browser)", + "uploadFavicon": "Mag-upload ng Favicon", + "resetFavicon": "I-reset ang Favicon", + "faviconPreview": "Preview ng Favicon", "logoFileTooLarge": "Ang file ng logo ay dapat mas mababa sa 500KB", "faviconFileTooLarge": "Ang file ng favicon ay dapat mas mababa sa 50KB", "invalidLogoFileType": "Hindi wastong uri ng file. Mangyaring mag-upload ng PNG, JPG, SVG, GIF, o WebP.", @@ -6800,7 +6803,7 @@ "failedToReadFile": "Nabigong basahin ang file", "startOnLogin": "Magsimula sa Pag-login", "startOnLoginDesc": "Awtomatikong ilunsad ang OmniRoute sa pagsisimula ng system at tahimik na patakbuhin sa background tray.", - "flushCache": "Flush Cache", + "flushCache": "I-clear ang Cache", "flushing": "Nag-flush...", "size": "Sukat", "hits": "Mga hit", @@ -6809,12 +6812,12 @@ "globalProxy": "Pandaigdigang Proxy", "globalProxyDesc": "Mag-configure ng pandaigdigang papalabas na proxy para sa lahat ng tawag sa API. Maaaring i-override ito ng mga indibidwal na provider, combo, at key.", "noGlobalProxy": "Walang na-configure na pandaigdigang proxy", - "proxyPool": "Proxy Pool", - "freePool": "Free Pool", + "proxyPool": "Pool ng Proxy", + "freePool": "Libreng Pool", "proxyDocumentation": "Dokumentasyon ng Proxy", - "proxyGlobalConfigTab": "Global Config", - "proxyPoolTab": "Proxy Pool", - "freePoolTab": "Free Pool", + "proxyGlobalConfigTab": "Pangkalahatang Configuration", + "proxyPoolTab": "Pool ng Proxy", + "freePoolTab": "Libreng Pool", "proxyDocumentationTab": "Dokumentasyon", "proxySubscriptionsTab": "Mga Subscription", "proxySubscription": { @@ -6851,7 +6854,7 @@ "statusOk": "OK", "statusError": "Error", "statusEmpty": "Walang laman", - "global": "Global", + "global": "Pangkalahatan", "rule": "Panuntunan", "enabled": "Pinagana", "disabled": "Hindi pinagana", @@ -6888,29 +6891,29 @@ "deleteConfirm": "Kumpirmahin ang Tanggalin", "empty": "Walang laman", "globalModeDescription": "Paglalarawan ng Pandaigdigang Mode", - "localCoreHint": "Local Core Hint", + "localCoreHint": "Pahiwatig sa Lokal na Core", "nodeSummary": "Buod ng Node", "providerRequired": "Kinakailangan ang Tagapagbigay", - "providerRouting": "Provider Routing", + "providerRouting": "Pagruruta ng Provider", "refresh": "I-refresh", "refreshInterval": "Oras ng Pag-refresh", "ruleModeDescription": "Paglalarawan ng Mode ng Batas" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "Maramihang Pagsusuri sa Kalagayan", + "bulkHealthcheckDesc": "Subukan ang lahat ng naka-configure na proxy gamit ang isang target na URL upang malaman kung alin ang gumagana.", + "healthcheckTesting": "Sinusubukan...", + "healthcheckAll": "Suriin ang Kalagayan ng Lahat", + "healthcheckFailed": "Hindi maisagawa ang pagsusuri sa kalagayan", + "healthcheckTestingAll": "Sinusubukan nang sabay-sabay ang lahat ng proxy...", + "healthcheckTotal": "Kabuuan", + "healthcheckWorking": "Gumagana", + "healthcheckFailedLabel": "Nabigo", + "healthcheckStatus": "Katayuan", + "healthcheckProxyUrl": "URL ng Proxy", + "healthcheckLatency": "Pagkaantala", "proxyDocumentationScopeTitle": "Resolusyon ng saklaw ng proxy", "proxyDocumentationScopeDescBefore": "Nilulutas ng OmniRoute ang outbound proxy ayon sa pagkakasunod-sunod ng priyoridad:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "combo → account → provider → pangkalahatan", "proxyDocumentationScopeDescAfter": ". Ang pinaka-espesipikong saklaw ang mangingibabaw.", "proxyDocumentationAddTitle": "Pagdaragdag ng custom na proxy", "proxyDocumentationAddDescBefore": "Pumunta sa", @@ -6932,7 +6935,7 @@ "denoRelayTokenHint": "Token ng organisasyon (prefix na ddo_) mula sa console.deno.com → Organization → Settings → Organization Tokens. Ginamit nang isang beses para sa pag-deploy at hindi kailanman iniimbak.", "denoRelayOrgDomainHint": "Ang default na domain ng iyong organisasyon sa Deno Deploy (hal. acme.deno.net). Maaabot ang relay sa https://<app-name>.<org-slug>.deno.net.", "proxyFreePoolFilterProtocol": "I-filter ayon sa protocol", - "proxyFreePoolProtocol": "Protocol", + "proxyFreePoolProtocol": "Protokol", "proxyFreePoolCountryPlaceholder": "Bansa (hal. US)", "proxyFreePoolFilterCountry": "I-filter ayon sa bansa", "proxyFreePoolMinQualityPlaceholder": "Min na kalidad", @@ -6949,7 +6952,7 @@ "proxyFreePoolType": "Uri", "proxyFreePoolCountry": "Bansa", "proxyFreePoolQuality": "Kalidad", - "proxyFreePoolLatency": "Latency", + "proxyFreePoolLatency": "Pagkaantala", "proxyFreePoolEmpty": "Walang nahanap na mga proxy. I-click ang I-sync Lahat upang kumuha mula sa mga pinagmulan.", "proxyToggleSources": "I-toggle ang mga pinagmulan ng proxy", "proxyFreePoolTesting": "Sinusubukan ang mga proxy...", @@ -6960,15 +6963,15 @@ "proxyFreePoolSearchLabel": "Maghanap ng mga proxy ayon sa host", "proxyFreePoolSortLabel": "I-sort ang mga proxy", "proxyFreePoolSortQuality": "Kalidad", - "proxyFreePoolSortLatency": "Latency", + "proxyFreePoolSortLatency": "Pagkaantala", "proxyFreePoolSortRecent": "Kamakailang na-validate", "proxyFreePoolListTotal": "Nakalista", "proxyFreePoolLoadMore": "Mag-load pa", "close": "Isara", "cancel": "Kanselahin", - "globalLabel": "Global", + "globalLabel": "Pangkalahatan", "configure": "I-configure", - "globalSystemPrompt": "Global System Prompt", + "globalSystemPrompt": "Pangkalahatang System Prompt", "saved": "Nai-save", "beforePromptLabel": "Bago ang Prompt", "beforePromptDesc": "Inilagay bago ang mga tagubilin sa system ng agent/provider", @@ -6980,11 +6983,11 @@ "thinkingBudgetTitle": "Pag-iisip na Badyet", "thinkingBudgetDesc": "Kontrolin ang paggamit ng token ng pangangatwiran ng AI sa lahat ng kahilingan", "thinkingBudgetIndependenceHint": "Ang mga tampok ng compression, routing, at token-limit ay patuloy na gumagana sa bawat mode. Ang Auto ay hindi nangangahulugang \"auto-show thinking\" — inaalis nito ang mga field ng pag-iisip ng kliyente.", - "passthrough": "Passthrough", + "passthrough": "Direktang Pagpasa", "passthroughDesc": "Walang pagbabago — kinokontrol ng kliyente ang pag-iisip na badyet", - "thinkingModePassthrough": "Passthrough", + "thinkingModePassthrough": "Direktang Pagpasa", "thinkingModePassthroughDesc": "Iwanang hindi nagbago ang dahilan ng kliyente (pagsisikap, buod, mga bloke ng pag-iisip). Kinakailangan para sa Codex/Desktop na nakikitang pag-iisip. Default.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Awtomatiko (alisin)", "thinkingModeAutoDesc": "Tanggalin ang lahat ng mga patlang ng pag-iisip/pag-iisip ng kliyente (reasoning, reasoning_effort, Claude thinking, Gemini thinking_config) at hayaan ang provider na mag-imbento ng mga default. Maaaring itago ang mga panel ng pag-iisip at sirain ang mga kahilingan sa buod ng kliyente.", "thinkingModeCustom": "Pasadya", "thinkingModeCustomDesc": "I-override ang bawat kahilingan gamit ang isang nakatakdang badyet ng token sa pag-iisip na itinakda mo sa ibaba.", @@ -6992,15 +6995,15 @@ "thinkingModeAdaptiveDesc": "I-scale ang pag-iisip ng badyet mula sa isang pangunahing pagsisikap gamit ang bilang ng mensahe, mga tool, at haba ng prompt.", "auto": "Auto", "autoDesc": "I-strip ang lahat ng thinking config — hayaan ang provider na magpasya", - "custom": "Custom", + "custom": "Pasadya", "customDesc": "Magtakda ng nakapirming token na badyet para sa lahat ng kahilingan", - "adaptive": "Adaptive", + "adaptive": "Umaangkop", "adaptiveDesc": "I-scale ang badyet batay sa pagiging kumplikado ng kahilingan", "effortNone": "Wala (0 token)", "effortLow": "Mababa (1K token)", "effortMedium": "Katamtaman (10K token)", "effortHigh": "Mataas (128K token)", - "tokenBudget": "Token Budget", + "tokenBudget": "Badyet ng Token", "tokens": "mga token", "baseEffortLevel": "Batayang Antas ng Pagsisikap", "adaptiveHint": "Ang adaptive mode ay sumusukat mula sa base level na ito batay sa bilang ng mensahe, paggamit ng tool, at haba ng prompt.", @@ -7034,12 +7037,12 @@ "providersBlocked": "{count} provider (mga) na-block mula sa /models", "blockProviderTitle": "I-block ang {provider}", "unblockProviderTitle": "I-unblock ang {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Pagtutugma ng CLI Fingerprint", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", - "systemTransforms": "System-block Transform Pipeline", + "cliFingerprintEnabled": "{count} provider na may aktibong CLI fingerprint", + "enableFingerprintTitle": "I-enable ang fingerprint para sa {provider}", + "disableFingerprintTitle": "I-disable ang fingerprint para sa {provider}", + "systemTransforms": "Pipeline ng Pagbabago ng System-block", "systemTransformsDesc": "Iniutos ng bawat provider ang pipeline ng mga pagbabagong inilapat sa katawan ng kahilingan bago ipasa. Sinusuportahan ang anumang ID ng provider.", "systemTransformsAddProvider": "Magdagdag ng provider", "systemTransformsAddProviderPlaceholder": "Pumili ng provider…", @@ -7059,53 +7062,53 @@ "roundRobinDesc": "Ikot sa lahat ng account", "p2c": "P2C", "p2cDesc": "Pumili ng 2 random, gamitin ang mas malusog", - "random": "Random", + "random": "Sapalaran", "randomDesc": "Random na account ang bawat kahilingan", "leastUsed": "Hindi gaanong nagamit", "leastUsedDesc": "Pumili ng hindi bababa sa kamakailang ginamit na account", - "costOpt": "Cost Opt", + "costOpt": "Pag-optimize ng Gastos", "costOptDesc": "Mas gusto ang pinakamurang available na account", "resetAware": "I-reset-Aware RR", "resetAwareDesc": "Mas gusto ang mga account na may malusog na natitirang quota at mas malapit na pag-reset", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Tinimbang ayon sa Quota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Mahigpit na Random", + "strictRandomDesc": "Hinalong deck — ginagamit nang isang beses ang bawat account bago muling haluin", "stickyLimit": "Malagkit na Limitasyon", "stickyLimitDesc": "Mga tawag sa bawat account bago lumipat", "routingStrategyTitle": "Diskarte sa Pag-route", "routingStrategySubtitle": "Itugma sa 9router: account round-robin, mga sticky limit, at combo rotation", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Paikot na Salitan", "accountRoundRobinDesc": "Mag-cycle sa mga account para ipamahagi ang load", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Pinagsamang Paikot na Salitan", "comboRoundRobinDesc": "Mag-cycle sa mga combo target sa halip na laging magsimula sa una", - "comboStickyLimit": "Combo Sticky Limit", + "comboStickyLimit": "Limitasyon ng Combo Sticky", "comboStickyLimitDesc": "Mga tawag bawat combo target bago lumipat", "routingStrategyAccountSummary": "Ipinapamahagi ang mga request sa mga account na may {limit} na tawag bawat account.", "routingStrategyFillFirstSummary": "Paggamit ng mga account sa pagkakasunud-sunod ng priyoridad (Punuin Muna).", "routingStrategyComboSummary": " Umiikot ang mga combo pagkatapos ng {limit} na tawag bawat target.", "routingStrategyComboFallbackSummary": " Ginagamit ng mga combo ang na-configure na diskarte ng bawat combo (default na priyoridad/fallback).", - "providerAccountRoutingTitle": "Multi-account routing", + "providerAccountRoutingTitle": "Pag-route ng maraming account", "providerAccountRoutingDesc": "I-override ang pandaigdigang diskarte sa account para sa provider na ito (pagkakatugma sa 9router).", "providerRoutingStrategy": "Diskarte sa account", "providerRoutingInheritGlobal": "Inherit ang pandaigdigang default", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Cutoff ng Paunang Pagsusuri ng Quota", + "quotaPreflightSubtitle": "Laktawan ang mga account na wala nang quota bago ipadala ang request sa upstream", + "quotaPreflightEnable": "I-enable ang paunang pagsusuri ng quota", + "quotaPreflightEnableDesc": "Bago ang bawat request, tingnan ang natitirang quota ng account (mga window na 5h / lingguhan / buwanan). Nilalaktawan nang walang upstream call ang mga account na nasa cutoff o mas mababa rito. Palaging nangingibabaw sa default dito ang mga cutoff sa bawat window na itinakda sa page na Provider Quota.", + "quotaPreflightCutoff": "Pangkalahatang cutoff (min. na natitirang %)", + "quotaPreflightCutoffDesc": "Itigil ang paggamit ng account kapag bumaba ang natitirang quota nito sa porsiyentong ito o mas mababa pa, para sa bawat window na walang sariling cutoff. Tumutugma ito sa mga bar ng natitirang % sa page na Provider Quota.", + "quotaPreflightWindowsHint": "Hindi naaapektuhan ng default na ito ang mga window na may sariling cutoff para sa bawat window o provider (itinakda sa modal na Cutoff sa page na Provider Quota).", + "quotaPreflightLoadFailed": "Hindi ma-load ang mga setting ng paunang pagsusuri ng quota.", "modelAliases": "Mga Alyas ng Modelo", "modelAliasesTitle": "Mga Alias ng Model", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Muling imapa ang mga pangalan ng model gamit ang mga eksaktong tugma o wildcard pattern.", "addCustomAlias": "Magdagdag ng Custom na Alias", "deprecatedModelId": "Deprecated na Model ID", "newModelId": "Bagong Model ID", "customAliases": "Mga Custom na Alias", "builtInAliases": "Mga Built-in na Alias", - "backgroundDegradationTitle": "Background Task Degradation", + "backgroundDegradationTitle": "Pagbaba ng Antas ng Background Task", "backgroundDegradationDesc": "Auto-detect ang mga background task (titulo, buod) at i-route sa mas murang modelo", "enableDegradation": "I-enable ang Background Degradation", "enableDegradationHint": "Kapag naka-enable, ang mga background task tulad ng paggawa ng titulo at buod ay awtomatikong nire-route sa mas murang modelo", @@ -7133,11 +7136,11 @@ "clearLocalDataConfirm": "I-clear ang lahat ng lokal na data? Ire-reset nito ang iyong mga kagustuhan.", "unknown": "Hindi alam", "systemActor": "sistema", - "ipAccessControl": "IP Access Control", + "ipAccessControl": "Kontrol sa Access ng IP", "ipAccessControlDesc": "I-block o payagan ang mga partikular na IP address", "ipModeDisabled": "Hindi pinagana", - "ipModeBlacklist": "Blacklist", - "ipModeWhitelist": "Whitelist", + "ipModeBlacklist": "Listahan ng Hinarang", + "ipModeWhitelist": "Listahan ng Pinapayagan", "ipModeWhitelistPriority": "WL Priyoridad", "addIpAddress": "Magdagdag ng IP Address", "ipAddressPlaceholder": "192.168.1.0/24 o 10.0.*.*", @@ -7188,19 +7191,19 @@ "comboStrategyAria": "Diskarte ng combo", "priority": "Priyoridad", "weighted": "Natimbang", - "contextRelay": "Context Relay", + "contextRelay": "Pagpapasa ng Konteksto", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Max na muling sumusubok", "retryDelayLabel": "Subukan muli ang Pagkaantala (ms)", "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", + "healthCheck": "Pagsusuri sa Kalagayan", "healthCheckDesc": "Paunang suriin ang availability ng provider", "trackMetrics": "Subaybayan ang Sukatan", "trackMetricsDesc": "Magtala ng mga sukatan ng bawat-combo na kahilingan", "providerOverrides": "Mga Override ng Provider", "providerOverridesDesc": "I-override ang timeout at subukang muli bawat provider. Ino-override ng mga setting ng provider ang mga pandaigdigang default.", "providerMaxRetriesAria": "{provider} max na muling pagsubok", - "providerTimeoutAria": "{provider} timeout ms", + "providerTimeoutAria": "Timeout ng {provider} sa ms", "removeProviderOverrideAria": "Alisin ang {provider} override", "selectProviderPlaceholder": "Pumili ng provider...", "searchProviderPlaceholder": "Maghanap ng mga provider...", @@ -7210,38 +7213,38 @@ "retries": "muling sumusubok", "ms": "ms", "saveComboDefaults": "I-save ang Mga Default ng Combo", - "maxNestingDepth": "Max Nesting Depth", + "maxNestingDepth": "Pinakamataas na Lalim ng Nesting", "concurrencyPerModel": "Concurrency / Modelo", - "queueTimeout": "Queue Timeout (ms)", + "queueTimeout": "Timeout ng Queue (ms)", "queueDepth": "Lalim ng Queue", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Threshold ng Handoff", + "contextRelayMaxMessages": "Pinakamaraming Mensahe para sa Buod", + "contextRelaySummaryModel": "Modelo para sa Buod", + "contextRelayProviderNote": "Kasalukuyang gumagawa ang Context Relay ng mga handoff para sa mga Codex account at ginagamit ang mga halagang ito bilang mga pangkalahatang default para sa mga bago o hindi pa naka-configure na combo.", "providerProfiles": "Mga Profile ng Provider", "providerProfilesDesc": "Paghiwalayin ang mga setting ng resilience para sa OAuth (session-based) at API Key (metered) provider. Ang mga provider ng OAuth ay may mas mahigpit na mga limitasyon dahil sa mas mababang mga limitasyon sa rate.", "oauthProviders": "Mga Provider ng OAuth", "apiKeyProviders": "Mga API Key Provider", "transientCooldown": "Pansamantalang Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", + "rateLimitCooldown": "Cooldown ng Rate Limit", "maxBackoffLevel": "Max na Antas ng Backoff", - "cbThreshold": "CB Threshold", + "cbThreshold": "Threshold ng CB", "cbResetTime": "Oras ng Pag-reset ng CB", "rateLimiting": "Paglilimita sa Rate", "rateLimitingDesc": "Awtomatikong nililimitahan ng rate ang mga provider ng API Key na may mga ligtas na default. Ang mga limitasyon ay natutunan mula sa mga header ng tugon at umaangkop sa paglipas ng panahon.", "defaultSafetyNet": "Default na Safety Net", "rpm": "RPM", - "minGap": "Min Gap", + "minGap": "Pinakamaliit na Agwat", "maxConcurrent": "Max Kasabay", "activeLimiters": "Mga Aktibong Limitasyon", "noActiveLimiters": "Wala pang aktibong mga limiter ng rate.", - "reservoir": "Reservoir", + "reservoir": "Imbakan", "running": "Tumatakbo", "queued": "Nakapila", "circuitBreakers": "Mga Circuit Breaker", "breakerStateClosed": "sarado", "breakerStateOpen": "Bukas", - "breakerStateHalfOpen": "Half-Open", + "breakerStateHalfOpen": "Bahagyang Bukas", "tripped": "{count} nabadtrip", "healthy": "{count} malusog", "resetAll": "I-reset Lahat", @@ -7253,7 +7256,7 @@ "lockedIdentifiers": "Mga Naka-lock na Identifier", "unlockedIdentifier": "Na-unlock: {identifier}", "sinceDate": "mula noong {date}", - "forceUnlock": "Force Unlock", + "forceUnlock": "Sapilitang I-unlock", "unlocking": "Ina-unlock...", "failedUnlock": "Nabigong i-unlock", "failedLoadWithStatus": "Nabigong mag-load: {status}", @@ -7298,8 +7301,8 @@ "hoursAgo": "{count}h ang nakalipas", "daysAgo": "{count}d ang nakalipas", "backupReasonManual": "manwal", - "backupReasonPreRestore": "pre-restore", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "backupReasonPreRestore": "bago i-restore", + "connectionsCount": "{count, plural, one {# koneksyon} other {# koneksyon}}", "noChangesSinceBackup": "Walang mga pagbabago mula noong huling backup", "backupFailed": "Nabigo ang backup", "restoreFailed": "Nabigo ang pag-restore", @@ -7309,7 +7312,7 @@ "modelPricing": "Pagpepresyo ng Modelo", "modelPricingDesc": "I-configure ang mga rate ng gastos sa bawat modelo • Lahat ng mga rate sa $/1M token", "pricingCoverage": "Saklaw", - "pricingAuth": "Auth", + "pricingAuth": "Pagpapatunay", "pricingSort": "Pagsunud-sunurin", "pricingAll": "Lahat", "pricingAuthUnknown": "Hindi alam", @@ -7329,7 +7332,7 @@ "configured": "naka-configure", "none": "Wala", "modelOverrideValuePlaceholder": "Numerikong halaga", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Pinaghihiwalay ng mga kuwit, hal. low, medium, high", "addKeyValue": "Magdagdag ng key value", "noModelOverrides": "Walang naka-configure na mga override para sa modelong ito.", "modelOverrideLoadFailed": "Bigo sa pag-load ng mga override ng modelo", @@ -7343,7 +7346,7 @@ "showAll": "Ipakita ang Lahat", "noProvidersMatch": "Walang provider na tumutugma sa iyong paghahanap.", "howPricingWorks": "Paano Gumagana ang Pagpepresyo", - "cacheWrite": "Cache Write", + "cacheWrite": "Pagsulat sa Cache", "unsaved": "hindi naligtas", "resetDefaults": "Ibalik ang mga default", "saveProvider": "I-save ang Provider", @@ -7377,26 +7380,26 @@ "customPricingNote": "Maaari mong i-override ang default na pagpepresyo para sa mga partikular na modelo. Mas inuuna ang mga custom na override kaysa sa awtomatikong natukoy na pagpepresyo.", "editPricing": "I-edit ang Pagpepresyo", "viewFullDetails": "Tingnan ang Buong Detalye", - "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "themeCoral": "Korales", + "adaptiveVolumeRouting": "Adaptive na Pag-route ayon sa Dami", + "adaptiveVolumeRoutingDesc": "Dinamikong i-scale ang mga koneksyon batay sa dami ng payload at pressure sa throughput.", + "lkgpToggleTitle": "Huling Kilalang Mahusay na Provider (LKGP)", + "lkgpToggleDesc": "Kapag naka-enable, tinatandaan ng router kung aling provider ang huling naghatid ng matagumpay na tugon at ito muna ang sinusubukan sa mga susunod na kahilingan.", "echoRequestedModelTitle": "I-echo ang hiniling na pangalan ng modelo sa mga tugon", "echoRequestedModelDesc": "Kapag pinagana, ang field na `model` sa tugon ay nag-e-echo sa alias o pangalan ng combo na hiniling ng client sa halip na ang pangalan ng upstream na modelo. Inaayos nito ang mga strict client (hal. Claude Desktop) na tinatanggihan ang tugon kung saan hindi tumutugma ang modelo sa kahilingan.", "webSearchRouteTitle": "Routing ng paghahanap sa web", "webSearchRouteDesc": "Kapag ang isang kahilingan ay may kasamang native na web_search tool, i-route ang buong kahilingan sa modelong ito sa halip na sa default — kapaki-pakinabang para sa mga provider na hindi nagpapatupad ng web_search server tool ng Anthropic. Iwanang blanko upang i-disable.", "webSearchRoutePlaceholder": "hal. openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "Ang pattern na ito ay tumutugma lamang sa mga bayad na modelo — paganahin ang mga bayad na modelo o i-adjust ang pattern.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "I-clear ang LKGP Cache", + "lkgpCacheCleared": "Matagumpay na na-clear ang LKGP cache", + "lkgpCacheClearFailed": "Hindi na-clear ang LKGP cache", + "days": "Mga Araw", + "lkgp": "Mode ng LKGP", + "lkgpDesc": "Huling Kilalang Mahusay na Provider (Nahuhulaang katatagan)", + "maintenance": "Pagpapanatili", + "purgeExpiredLogs": "I-purge ang mga Nag-expire na Log", + "purgeLogsFailed": "Hindi na-purge ang mga log", "logsDeleted": "{count, plural, =0 {Walang na-purge na nag-expire na log} one {Na-purge ang # nag-expire na log} other {Na-purge ang # nag-expire na mga log}}", "resetUsageData": "I-reset ang Data ng Paggamit", "resetUsageDataDesc": "Piliin kung gaano kalayo sa nakaraan ang gusto mong burahin na paggamit, mga log ng kahilingan, at data ng analytics. Ang configuration ng provider, mga koneksyon, mga API key, mga combo, at mga setting ay mapapanatili. Ang aksyong ito ay hindi na mababawi.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Nabigong i-reset ang data ng paggamit", "reset": "I-reset", "resetting": "Inirereset...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Na-optimize para sa Context", + "contextOptDesc": "Nagre-route batay sa mga kinakailangan sa context window at haba ng pag-uusap", + "cacheOpt": "Na-optimize para sa Cache", + "cacheOptDesc": "Pinananatili ang parehong magagamit-muling prompt prefix sa parehong provider account", + "priorityDesc": "Sunod-sunod na fallback—sinusubukan muna ang provider 1, pagkatapos ang provider 2, at iba pa", + "weightedDesc": "Ipinamamahagi ang trapiko ayon sa mga porsiyentong timbang sa mga provider", + "modelRoutingTitle": "Mga Panuntunan sa Pag-route ng Modelo", + "modelRoutingDesc": "Awtomatikong i-route ang mga modelo sa mga partikular na combo gamit ang mga glob pattern", + "addRule": "Magdagdag ng Panuntunan", + "routeToCombo": "I-route sa Combo", + "selectCombo": "Pumili ng combo...", + "priorityHint": "Mas mataas = mas unang sinusuri. Gumamit ng 10+ para sa mga partikular na pattern.", + "patternHint": "Gamitin ang * para sa anumang mga character, at ? para sa isang character. Hindi sensitibo sa laki o liit ng titik.", + "noRoutingRules": "Walang naka-configure na mga panuntunan sa pagruruta. Bilang default, ginagamit ng mga kahilingan ang global na combo.", + "routingRuleHint": "Magdagdag ng panuntunan tulad ng claude-opus* -> frontier-combo upang awtomatikong iruta ang mga kahilingan.", + "deleteRoutingRule": "I-delete ang panuntunang ito sa pagruruta ng modelo?", + "exactMatchMode": "Eksaktong Tugma", + "wildcardPatternMode": "Pattern na may Wildcard", + "exactMatchModeDesc": "Gumamit ng mga eksaktong alias para sa mga hindi na ginagamit o pinalitang-pangalan na model ID.", + "wildcardPatternModeDesc": "Gumamit ng mga wildcard alias na may * at ? kapag dapat imapa sa iisang target ang isang pamilya ng mga modelo.", + "noExactAliasesConfigured": "Walang naka-configure na mga alias na eksaktong tumutugma.", + "wildcardRulesTitle": "Mga Panuntunan sa Wildcard", + "noWildcardAliasesConfigured": "Walang naka-configure na mga wildcard alias.", + "overview": "Pangkalahatang-ideya", + "unknownError": "Hindi Kilalang Error", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Listahan ng Pinapayagan", + "syncDisabled": "Naka-disable ang Pag-sync", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,11 +7456,11 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Naka-enable ang Pag-sync", + "blacklist": "Listahan ng Hinarang", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Mga Naka-sync na Modelo", + "budget": "Badyet", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Nabigong i-reset ang pagpepresyo: {reason}", "tab": "Tab", @@ -7465,17 +7468,17 @@ "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Nabigong i-save ang pagpepresyo: {reason}", "pricingResetProvider": "Pag-reset ng presyo para sa {provider}", - "nextSync": "Next Sync", + "nextSync": "Susunod na Pag-sync", "pricingSyncFailedWithReason": "Nabigo ang pag-sync ng pagpepresyo: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "I-clear ang Naka-sync na Pagpepresyo", + "compressionTitle": "Pag-compress ng Prompt", + "compressionDesc": "Bawasan ang paggamit ng token sa pamamagitan ng pag-compress ng mga prompt bago ipadala ang mga ito sa mga provider", "compressionGuidanceFullGuideLink": "Buong gabay sa compression", "compressionGuidanceShow": "Mga Detalye", "compressionGuidanceHide": "Itago ang mga detalye", "compressionGuidanceSafeDefault": "Ligtas na default", "compressionGuidanceCacheImpact": "Epekto sa cache", - "tokenSaverTitle": "Token Saver", + "tokenSaverTitle": "Pangtipid ng Token", "tokenSaverSubtitle": "Gumamit ng mas kaunting token sa bawat request.", "tokenSaverToolOutput": "Output ng tool", "tokenSaverToolOutputDesc": "Linisin ang output ng git, grep, ls, tree, at log bago ito makarating sa provider.", @@ -7485,45 +7488,45 @@ "tokenSaverInputCompressionDesc": "Muling isulat ang kwalipikadong chat history habang pinapanatili ang code, mga URL, at layunin.", "tokenSaverFineTunePrefix": "I-fine-tune ang bawat engine sa", "tokenSaverFineTuneSuffix": "o pagsamahin ang mga engine bawat request sa", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Mode ng Pag-compress", + "compressionModeOff": "Naka-off", + "compressionModeOffDesc": "Walang inilapat na pag-compress", + "compressionModeLite": "Magaan", + "compressionModeLiteDesc": "Pagbabawas ng whitespace at mga blangkong linya", + "compressionModeStandard": "Karaniwan (Taong-Kuweba)", + "compressionModeStandardDesc": "Pag-compress na nakabatay sa mga panuntunang may 30+ pattern, habang pinapanatili ang mga code block at URL", + "compressionModeAggressive": "Agresibo", + "compressionModeAggressiveDesc": "Pagbubuod + pag-compress ng resulta ng tool + progresibong pagtanda para sa pinakamalaking matitipid", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", - "compressionAggressiveConfig": "Aggressive Engine Configuration", + "compressionAggressiveConfig": "Configuration ng Aggressive Engine", "compressionAggressiveConfigDesc": "Fine-tune summarization, tool compression, at aging threshold", - "compressionUltraConfig": "Ultra Engine Configuration", + "compressionUltraConfig": "Configuration ng Ultra Engine", "compressionUltraConfigDesc": "I-fine-tune ang heuristic pruning, SLM fallback, at bawat-message threshold", "compressionUltraRate": "Panatilihin ang Rate", "compressionUltraMinScore": "Minimum na Threshold ng Marka", "compressionUltraSlmFallback": "Fallback sa Agresibo", "compressionUltraModelPath": "Path ng Modelong SLM", - "compressionUltraEngine": "Ultra tier", - "compressionUltraEngineHeuristic": "Heuristic (Tier-A, default)", - "compressionUltraEngineSlm": "SLM (LLMLingua-2, opt-in)", + "compressionUltraEngine": "Antas na Ultra", + "compressionUltraEngineHeuristic": "Heuristiko (Tier-A, default)", + "compressionUltraEngineSlm": "SLM (LLMLingua-2, opsyonal)", "compressionUltraSlmHint": "Nagda-download ang SLM ng maliit na ONNX model sa unang paggamit (cold-start) at transparent na bumabalik sa heuristic kapag nag-timeout o kung hindi magagamit.", "compressionUltraSlmPrewarm": "I-pre-warm ang SLM model kapag pinagana", "compressionSummarizerEnabled": "Paganahin ang Summarizer", "compressionMaxTokensPerMessage": "Max Token Bawat Mensahe", - "compressionMinSavings": "Min Savings Threshold", - "compressionAgingThresholds": "Aging Thresholds", + "compressionMinSavings": "Minimum na Hangganan ng Pagtitipid", + "compressionAgingThresholds": "Mga Hangganan ng Pagtanda", "compressionAgingThresholdsDesc": "Bilang ng mga kamakailang mensahe na itinago sa bawat antas ng pagtanda (mas mataas = mas napanatili)", "compressionToolStrategies": "Mga Istratehiya sa Resulta ng Tool", "compressionToolStrategiesDesc": "I-toggle ang mga diskarte sa compression para sa iba't ibang uri ng resulta ng tool", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Mga Pangkalahatang Setting", + "compressionAutoTrigger": "Hangganan ng Awtomatikong Pag-trigger", + "compressionCacheTTL": "TTL ng Cache", + "compressionPreserveSystem": "Panatilihin ang System Prompt", "compressionPreserveSystemAlways": "Palagi", "compressionPreserveSystemWhenNoCache": "Kapag walang cache", "compressionPreserveSystemNever": "Hindi kailanman", - "compressionLiveZoneTitle": "Cache-aligned Live Zone", + "compressionLiveZoneTitle": "Live Zone na Nakaayon sa Cache", "compressionLiveZoneDesc": "Panatilihing stable ang compressed na prefix ng pag-uusap at iproseso lamang ang mga bagong idinagdag na item.", "compressionExclusionsTitle": "Mga Pagbubukod sa Kompresyon", "compressionExclusionsDesc": "Mga model id o provider/model na mga pattern na hindi dapat i-compress. Ang `*` ang tanging wildcard (hal. `openai/*`, `*embedding*`). Ang isang tumutugmang kahilingan ay dumadaan sa byte-identical — walang compression engine na tumatakbo.", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Naka-save", "compressionExclusionsCount": "{count, plural, one {# pagbubukod} other {# mga pagbubukod}} na naka-configure", "compressionExclusionsEmpty": "Walang nakatakdang pagbubukod — bawat modelo/endpoint ay karapat-dapat para sa compression (default na pag-uugali).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Configuration ng Caveman Engine", + "compressionCavemanConfigDesc": "I-fine-tune ang rule-based na compression engine", "compressionCavemanPanelHint": "Ang on/off at antas nito ay itinatakda sa panel:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "I-compress ang mga Role ng Mensahe", + "compressionRoleUser": "Gumagamit", + "compressionRoleAssistant": "Katulong", + "compressionRoleSystem": "Sistema", + "compressionMinLength": "Minimum na Haba ng Mensahe", + "compressionSkipRules": "Mga Panuntunan sa Paglaktaw sa Compression", + "compressionSkipRulesDesc": "I-click ang mga panuntunan upang laktawan ang mga ito habang nagko-compress", + "compressionPreservePatterns": "Panatilihin ang mga Pattern", + "compressionPreservePatternsDesc": "Mga regex pattern na hindi kailanman kino-compress (isa bawat linya)", + "compressionLogTitle": "Log ng Compression", + "compressionLogEmpty": "Wala pang na-compress na request. Lalabas dito ang mga istatistika ng compression kapag naproseso ang mga request na naka-enable ang compression.", "minutes": "minuto", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", + "compressionModeRtkDesc": "Pag-filter ng output ng tool na isinasaalang-alang ang command", + "compressionModeCodexResponses": "Output ng tool na Responses", + "compressionModeCodexResponsesDesc": "Konserbatibong compression para sa mga kwalipikadong output ng shell, patch, search, build, at JSON", + "compressionModeStacked": "Nakasalansan", + "compressionModeStackedDesc": "Pag-filter ng output ng tool gamit ang RTK na sinusundan ng pag-compress ng mensahe gamit ang Caveman", "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "qdrantDesc": "Opsyonal. Ini-index ang mga semantic memory sa isang external vector database para sa mas mabilis na pagkuha.", + "qdrantStatusActive": "Aktibo", + "qdrantStatusError": "Kamalian", + "qdrantStatusDisabled": "Naka-disable", + "qdrantEnable": "I-enable ang Qdrant", + "qdrantEnableDesc": "Kapag naka-enable, maaaring gamitin ng semantic/hybrid strategy ang Qdrant upang kunin ang mga memory.", + "qdrantTesting": "Sinusubukan...", + "qdrantTestConnection": "Subukan ang koneksyon", + "qdrantSaved": "Na-save ang configuration", + "qdrantSaveError": "Hindi na-save ang configuration", + "qdrantHostHint": "Walang port. Halimbawa: 127.0.0.1 o http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Default ng Qdrant: 6333", + "qdrantCollectionHint": "Kung saan iimbak ang mga memory point.", + "qdrantEmbeddingModel": "Modelo ng embedding", + "qdrantHelpTitle": "Tulong sa mabilisang pag-setup", + "qdrantHelpQuickTitle": "Mabilisang pag-setup (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Koleksiyon: omniroute_memory.", + "qdrantHelpStep2": "2. Kung ginagamit ang nvidia/llama-nemotron-embed-vl-1b-v2:free, gumamit ng collection dimension na 2048.", + "qdrantHelpStep3": "3. Field ng model: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. I-save, subukan ang koneksyon, pagkatapos ay subukan ang paghahanap.", + "qdrantEmbeddingQuickSelect": "Mabilisang pumili mula sa mga natuklasang model...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Format: provider/model. Dapat naka-configure ang credential ng provider.", + "qdrantApiKeyPlaceholderKeep": "(iwanang walang laman upang panatilihin ang kasalukuyang key)", + "qdrantApiKeyPlaceholderOptional": "(iwanang walang laman kung hindi ginagamit)", + "qdrantSaveHint": "Tip: i-edit ang host/port/collection/model at i-click ang I-save. Opsyonal ang API key.", + "qdrantSearchTestTitle": "Pagsubok sa paghahanap", + "qdrantSearchTestDesc": "Bumubuo ng embedding at naghahanap sa Qdrant.", + "qdrantSearchPlaceholder": "Halimbawa: mga kagustuhan ng user, kasaysayan, atbp.", + "qdrantNoResults": "Walang resulta (o hindi naka-configure ang Qdrant).", + "qdrantCleanupTitle": "Pagpapanatili at paglilinis", + "qdrantCleanupDesc": "Nag-aalis ng mga nag-expire at lumang point batay sa", + "searching": "Naghahanap...", + "cleaning": "Naglilinis...", + "cleanNow": "Linisin ngayon", "optional": "Opsyonal", "current": "Kasalukuyan", "remove": "Alisin", @@ -7598,41 +7601,41 @@ "oneproxyTotalProxies": "Kabuuang mga Proxies", "oneproxyAvgQuality": "Avg na Kalidad", "resilienceScope": "Saklaw:", - "resilienceTrigger": "Trigger:", + "resilienceTrigger": "Pag-trigger:", "resilienceEffect": "Epekto:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Queue at Rate ng Kahilingan", + "resilienceAutoEnableApiKeyProviders": "Awtomatikong i-enable para sa mga provider na gumagamit ng API key", + "resilienceRequestsPerMinute": "Mga kahilingan kada minuto", + "resilienceMinTimeBetweenRequests": "Pinakamababang oras sa pagitan ng mga kahilingan", + "resilienceConcurrentRequests": "Magkakasabay na kahilingan", + "resilienceConnectionScopeConcurrentRequests": "Magkakasabay na kahilingan bawat koneksyon/saklaw ng quota", + "resilienceGlobalConcurrentRequests": "Pangkalahatang magkakasabay na upstream na kahilingan (0 = naka-disable)", "resilienceMaxQueueWaitTime": "Pinakamataas na oras ng paghihintay sa pila", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Batayang cooldown", + "resilienceUseUpstreamRetryHints": "Gamitin ang mga upstream na pahiwatig sa muling pagsubok", + "resilienceDefaultPerProvider": "Default (bawat provider)", + "resilienceAlwaysOn": "Palaging naka-on", + "resilienceAlwaysOff": "Palaging naka-off", "routingRemoveEntry": "Alisin ang entry", "routingNeedlesSubstrings": "Mga karayom (substrings upang tumugma)", - "routingCaseSensitive": "Case sensitive", + "routingCaseSensitive": "Sensitibo sa laki ng titik", "routingPrefixes": "Mga prefix", "routingMatch": "tugma", "routingReplacement": "Pagpapalit", "routingReplaceAllOccurrences": "Palitan ang lahat ng mga pangyayari", - "routingPatternRegex": "Pattern (regex)", + "routingPatternRegex": "Padron (regex)", "routingFlags": "Mga bandila", "routingNeedles": "Mga karayom", "routingBlockText": "I-block ang text", "routingIdempotencyKey": "Idepotency key", - "routingEntrypoint": "Entrypoint", + "routingEntrypoint": "Panimulang punto", "routingVersionFormat": "Format ng bersyon", - "routingCchAlgorithm": "CCH algorithm", + "routingCchAlgorithm": "Algoritmong CCH", "routingWordsToObfuscate": "Mga salitang dapat i-obfuscate (Inilagay ang ZWJ pagkatapos ng unang char)", "logsSettingsTitle": "Mga Setting ng Log", "detailedLogsLabel": "Naka-enable ang Detalyadong Log", "detailedLogsDesc": "Paganahin ang detalyadong pag-log ng kahilingan/tugon", - "callLogPipelineLabel": "Call Log Pipeline", + "callLogPipelineLabel": "Pipeline ng Log ng Tawag", "callLogPipelineDesc": "Paganahin ang pipeline ng pagpoproseso ng log ng tawag", "maxDetailSizeLabel": "Max na Laki ng Detalye (KB)", "maxDetailSizeDesc": "Pinakamataas na laki para sa detalyadong mga entry sa log", @@ -7641,7 +7644,7 @@ "semanticCacheEnabledLabel": "Pinagana ang Semantic Cache", "semanticCacheMaxSizeLabel": "Max na Sukat ng Semantic Cache", "semanticCacheMaxSizeDesc": "Pinakamataas na bilang ng mga entry ng semantic cache", - "semanticCacheTTLLabel": "Semantic Cache TTL", + "semanticCacheTTLLabel": "TTL ng Semantic Cache", "promptCacheEnabledLabel": "Pinagana ang Prompt Cache", "promptCacheEnabledDesc": "Paganahin ang agarang pag-cache", "promptCacheStrategyLabel": "Prompt na Diskarte sa Cache", @@ -7660,30 +7663,30 @@ "oneproxyLastSyncLabel": "Huling pag-sync:", "oneproxyProxiesFetched": "Kinuha ang mga proxy:", "oneproxyConsecutiveFailures": "Magkasunod na pagkabigo:", - "oneproxyErrorLabel": "Error:", + "oneproxyErrorLabel": "Kamalian:", "oneproxyNever": "Hindi kailanman", "oneproxySyncStatusTitle": "Katayuan ng Pag-sync", "oneproxySuccess": "Tagumpay", "oneproxyFailed": "Nabigo", - "routingAntigravitySignatureTitle": "Antigravity Signature Cache Mode", + "routingAntigravitySignatureTitle": "Mode ng Cache ng Antigravity Signature", "routingAntigravitySignatureDesc": "Kontrolin kung muling gagamitin lamang ng OmniRoute ang mga nakaimbak na Gemini thought signature o tatanggapin ang mga validated na signature na ibinigay ng client sa mga Antigravity-compatible na tool-call flow.", "routingAntigravitySignatureEnabledLabel": "Pinagana", "routingAntigravitySignatureEnabledDesc": "Kasalukuyang gawi. Balewalain ang mga signature na ibinigay ng client at patuloy na gamitin ang nakaimbak na OmniRoute flow.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Laktawan", "routingAntigravitySignatureBypassDesc": "Tanggapin ang mga signature na ibinigay ng client pagkatapos ng magaan na pag-validate at bumalik sa nakaimbak na signature kapag hindi valid.", - "routingAntigravitySignatureBypassStrictLabel": "Bypass Strict", + "routingAntigravitySignatureBypassStrictLabel": "Mahigpit na Paglaktaw", "routingAntigravitySignatureBypassStrictDesc": "Kailanganin ang buong protobuf validation bago tanggapin ang signature na ibinigay ng client.", "routingHeaderFingerprintTitle": "fingerprint ng header (bawat provider)", "routingServerRejectedSave": "⚠ Tinanggihan ng server ang pag-save:", "routingAddTransformOp": "Magdagdag ng transform op", - "routingClientCacheControlTitle": "Client Cache Control", + "routingClientCacheControlTitle": "Kontrol sa Cache ng Client", "routingClientCacheControlDesc": "I-configure kung pananatilihin ng OmniRoute ang mga cache_control marker na ibinigay ng client", "routingClientCacheControlAutoDesc": "Para sa mga deterministic na Claude-compatible flow, panatilihin ang cache_control na ibinigay ng client nang walang pagbabago. Kung walang cache_control ang request, hindi mag-iinject ang OmniRoute ng anumang bridge-owned marker para sa CC-compatible na third-party proxy compatibility.", "routingClientCacheControlAlwaysLabel": "Palaging Panatilihin", "routingClientCacheControlAlwaysDesc": "Palaging i-forward ang mga cache_control header na ibinigay ng client sa mga upstream provider nang walang pagbabago.", "routingClientCacheControlNeverLabel": "Huwag Kailanman Panatilihin", "routingClientCacheControlNeverDesc": "Palaging alisin ang mga cache_control header ng client at hayaan ang OmniRoute na mamahala ng caching kung saan sinusuportahan ito ng mga native provider flow.", - "routingZeroConfigTitle": "Zero-Config Auto-Routing", + "routingZeroConfigTitle": "Awtomatikong Pagruruta na Walang Configuration", "routingZeroConfigDesc": "I-enable ang awtomatikong pagpili ng provider gamit ang auto/ prefix. Kapag naka-enable, ang mga request sa auto, auto/coding, auto/fast, atbp. ay dynamic na magro-route sa lahat ng konektadong provider.", "routingDefaultAutoVariant": "Default na Auto Variant", "visionBridge": "Tulay ng Paningin", @@ -7695,31 +7698,31 @@ "visionBridgeModel": "Modelo ng Tulay", "visionBridgeModelPlaceholder": "openai/gpt-4o-mini", "visionBridgeModelHint": "Anumang OmniRoute model ID na sumusuporta sa vision ay maaaring gamitin dito.", - "visionBridgePrompt": "Bridge Prompt", + "visionBridgePrompt": "Prompt ng Bridge", "visionBridgePromptPlaceholder": "Ilarawan ang larawang ito nang maigsi.", "visionBridgePromptHint": "Ipinapadala sa vision model bago i-inject pabalik ang na-extract na paglalarawan sa orihinal na request.", - "visionBridgeTimeoutMs": "Timeout (ms)", + "visionBridgeTimeoutMs": "Palugit (ms)", "visionBridgeMaxImagesPerRequest": "Max na Mga Larawan Bawat Kahilingan", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Pinakamaraming hakbang ng backoff", + "resilienceProviderBreakerTitle": "Circuit Breaker bawat Provider", + "resilienceFailureThreshold": "Threshold ng pagkabigo", + "resilienceDegradationThreshold": "Threshold ng degradation", "resilienceResetTimeout": "I-reset ang timeout", "resilienceFailureThresholdLabel": "Ang limitasyon ng pagkabigo", "resilienceResetTimeoutLabel": "I-reset ang timeout", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Cooldown ng Koneksyon", "resilienceUseUpstreamRetryHintsLabel": "Gumamit ng upstream retry na mga pahiwatig", "resilienceUseUpstream429BreakerLabel": "Gumamit ng upstream 429 na mga pahiwatig (breaker)", "resilienceMaxBackoffStepsLabel": "Max backoff na hakbang", "resilienceYes": "Oo", "resilienceNo": "Hindi", - "resilienceDefault": "Default", + "resilienceDefault": "Paunang-takda", "storageDatabaseBackupRetention": "Pagpapanatili ng backup ng database", "storageDatabaseBackups": "Mga backup ng database", "storageBackupRetentionDescription": "Ang mga awtomatikong SQLite backup ay nakaimbak sa", "storageBackupRetentionHelp": "I-configure kung ilang snapshot ang pananatilihin at opsyonal na burahin ang mga backup na mas luma sa napiling bilang ng mga araw.", "storageBackupCount": "{count} na backup", - "storageBackupMaximum": "Max {count}", + "storageBackupMaximum": "Maximum na {count}", "storageBackupAgeRetention": "{count}d na retention", "storageBackupAgeRetentionOff": "Naka-off ang age retention", "storageBackupKeepLatest": "Panatilihin ang mga pinakabagong backup", @@ -7745,12 +7748,16 @@ "legacyJsonImportSuccess": "Matagumpay na na-import ang legacy JSON!", "jsonImportFailed": "Hindi ma-import ang JSON", "jsonImportError": "Error habang nag-i-import ng JSON", - "storagePurgeData": "Purge Data", + "jsonImportAuthRequired": "Kailangan ang authentication upang mag-import ng legacy na JSON configuration. Mangyaring mag-sign in o kumpletuhin muna ang setup.", + "databaseSettingsAuthRequiredTitle": "Kailangan ang authentication", + "databaseSettingsAuthRequiredBody": "Available lamang sa authenticated na admin ang mga setting ng database at pag-import ng JSON. Mag-sign in o kumpletuhin ang setup upang tingnan at i-edit ang mga ito.", + "databaseSettingsAuthRequiredCta": "Mag-sign in", + "storagePurgeData": "I-purge ang Data", "storagePurgeDataDesc": "Agad na burahin ang lahat ng record nang hindi inilalapat ang mga pagsusuri sa pagpapanatili. Gamitin nang may pag-iingat.", "storageRetentionCleanup": "Mga Setting ng Pagpapanatili", "storageRetentionCleanupDesc": "I-configure ang pagpapanatili ng operational record at paglilinis ng backup ng database.", "retentionCallDays": "Tawag {count}d", - "retentionAppDays": "App {count}d", + "retentionAppDays": "Aplikasyon {count}d", "retentionRows": "{count} na row", "retentionQuotaSnapshots": "Quota Snapshots (mga araw)", "retentionCompressionAnalytics": "Analytics ng Compression (mga araw)", @@ -7761,14 +7768,14 @@ "retentionMemoryEntries": "Mga Entry ng Memorya (mga araw)", "retentionXpAuditLog": "XP Audit Log (mga araw)", "saveRetentionSettings": "I-save ang mga setting ng pagpapanatili", - "storageAutoVacuumMode": "Auto Vacuum Mode", + "storageAutoVacuumMode": "Mode ng Awtomatikong Vacuum", "storageScheduledVacuum": "Naka-iskedyul na Vacuum", "storageVacuumHour": "Oras ng Vacuum (0-23)", "storagePageSize": "Laki ng Pahina (bytes)", "storageOptimizationSettings": "Mga Setting ng Pag-optimize", "storageJournalModeNone": "Wala", "storageJournalModeFull": "Buo", - "storageJournalModeIncremental": "Incremental", + "storageJournalModeIncremental": "Paunti-unti", "storageVacuumNever": "Hindi kailanman", "storageVacuumDaily": "Araw-araw", "storageVacuumWeekly": "Linggu-linggo", @@ -7779,7 +7786,7 @@ "storageCompressionAggregation": "Mga Setting ng Compression at Aggregation", "storageEnableAggregation": "Paganahin ang Aggregation ng Data", "storageRawDataRetention": "Pagpapanatili ng Raw Data (mga araw)", - "storageGranularity": "Granularity", + "storageGranularity": "Antas ng detalye", "storageHourly": "Oras-oras", "storageDaily": "Araw-araw", "storageWeekly": "Linggu-linggo", @@ -7797,7 +7804,7 @@ "storageLastOptimization": "Huling Pag-optimize", "storageIntegrityCheck": "Pagsusuri ng Integridad", "storageIntegrityOk": "✓ OK", - "storageIntegrityError": "✗ Error", + "storageIntegrityError": "✗ Kamalian", "storageUsageTokenBuffer": "Paggamit ng Token Buffer", "storageUsageTokenBufferDesc": "Karagdagang mga token na idinagdag sa iniulat na paggamit upang isaalang-alang ang overhead ng system prompt.", "storageUsageTokenBufferHint": "Itakda sa 0 upang iulat ang raw na bilang ng token ng provider. Default: 2000.", @@ -7808,53 +7815,53 @@ "redisLauncherStop": "Ihinto", "redisLauncherLaunching": "Inilulunsad...", "redisLauncherLaunch": "Ilunsad ang Redis", - "redisLauncherContainer": "Container", + "redisLauncherContainer": "Lalagyan", "redisLauncherRunning": "Tumatakbo", "redisLauncherReachable": "Maaabot", - "redisLauncherError": "Error: {message}", + "redisLauncherError": "Kamalian: {message}", "redisLauncherHint": "Katumbas ng pagpapatakbo ng `omniroute redis up`. Ang container ay pinangalanang `omniroute-redis` at nakikinig sa 127.0.0.1:6379.", - "compressionSettingsAutoTriggerMode": "Auto trigger mode", + "compressionSettingsAutoTriggerMode": "Mode ng awtomatikong pag-trigger", "compressionSettingsMcpDescriptionCompression": "compression ng paglalarawan ng MCP", "mcpAccessibilityTitle": "Output ng accessibility ng MCP", "compressionSettingsCavemanIntensity": "Ang intensity ng Caveman", "compressionSettingsCavemanOutputMode": "Output mode ng Caveman", "compressionSettingsOutputStyles": "Mga istilo ng output", "compressionStylesTileTitle": "Mga istilo ng output", - "compressionSettingsOutputIntensity": "Output intensity", - "compressionSettingsAutoClarityBypass": "Auto clarity bypass", + "compressionSettingsOutputIntensity": "Intensidad ng output", + "compressionSettingsAutoClarityBypass": "Awtomatikong paglaktaw para sa kalinawan", "compressionEffectivePipeline": "Epektibong pipeline:", "compressionDerivedOff": "naka-off", "compressionDerivedRuns": "mga pagtakbo: {pipeline}", "compressionDerivedMode": "mode: {mode}", "compressionAdaptiveOff": "Adaptive context budget: naka-off (legacy na auto-trigger)", "compressionAdaptiveTarget": "Adaptive ({mode}, patakaran: {policy}) — target ≈ {target, number} na token (para sa isang {contextLimit, number}-token na window)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Naaangkop na badyet ng konteksto", + "compressionAdaptiveModeOff": "Naka-off (legacy na awtomatikong pag-trigger)", + "compressionAdaptiveModeFloor": "Minimum (palaging tiyaking kasya)", + "compressionAdaptiveModeReplace": "Palitan ang awtomatikong pag-trigger", + "compressionAdaptivePolicy": "Patakaran sa badyet", + "compressionAdaptivePolicyReserve": "Nakareserbang output", + "compressionAdaptivePolicyPercentage": "Porsiyento ng window", + "compressionAdaptivePolicyAbsolute": "Tiyak na badyet ng token", "compressionOutputStylesDescription": "Mag-inject ng mga tagubilin sa paghubog ng tugon nang hindi muling isinusulat ang output ng provider. Malayang pagsamahin.", "mcpAccessibilityDescription": "Nililimitahan ang mga output ng MCP tool (hiwalay na store).", "compressionStylesTileSummary": "{tokens, number} na token ang na-save · {runs, plural, one {# run ang na-style} other {# na run ang na-style}}", "compressionStylesTileEmpty": "Wala pang na-style na mga run.", "compressionLevel": { - "minimal": "Minimal", - "standard": "Standard", + "minimal": "Pinakamababa", + "standard": "Karaniwan", "aggressive": "Agresibo", "lite": "Lite", - "full": "Full", + "full": "Buo", "ultra": "Ultra" }, "compressionEngine": { "session-dedup": { - "label": "Session Dedup", + "label": "Pag-aalis ng duplikado sa session", "description": "Deduplication ng cross-turn block." }, "ccr": { - "label": "CCR (Retrieval)", + "label": "CCR (Pagkuha)", "description": "Mga content-addressed retrieval marker." }, "lite": { @@ -7866,11 +7873,11 @@ "description": "Pag-filter ng command-output." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Output ng Responses Tool", + "description": "Konserbatibong compression para sa mga sinusuportahang output ng Responses tool." }, "headroom": { - "label": "Headroom", + "label": "Ekstrang kapasidad", "description": "Tabular na pag-compact ng JSON." }, "relevance": { @@ -7908,12 +7915,12 @@ "description": "YAGNI ladder: pinakamaliit na gumaganang pagbabago, walang hindi hiniling na mga abstraction." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (tamad na senior dev)", + "description": "Disiplina ng tamad na senior dev: umakyat sa YAGNI ladder, ayusin ang ugat ng problema, at gawin ang pinakamaliit na gumaganang diff." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "May ADHD ako (aksyon muna)", + "description": "Output na aksyon muna: unahin ang susunod na aksyon, lagyan ng numero ang mga hakbang, magbigay ng isang tiyak na susunod na hakbang, walang pambungad." }, "terse-cjk": { "label": "Maikling CJK (文言)", @@ -7926,11 +7933,19 @@ "resilienceMaximumWaitPerRetry": "Pinakamataas na paghihintay sa bawat muling pagsubok", "memorySkillsSkillsmpMarketplace": "Marketplace ng SkillsMP", "memorySkillsFailedToSave": "Nabigong i-save", - "memorySkillsApiKey": "API Key", + "memorySkillsApiKey": "Susi ng API", "memorySkillsActiveSkillsProvider": "Aktibong Tagabigay ng Kasanayan", - "cliproxyapiFallback": "CLIProxyAPI Fallback", + "cliproxyapiFallback": "Fallback ng CLIProxyAPI", "cliproxyapiEnableFallback": "Paganahin ang CLIProxyAPI Fallback", "cliproxyapiUrl": "URL ng CLIProxyAPI", + "headroomProxyTitle": "Headroom proxy", + "headroomProxyDesc": "URL ng opsyonal na Headroom token-saver proxy. Kapag walang laman, gagamitin ang HEADROOM_URL o http://localhost:8787.", + "headroomProxyUrl": "Headroom URL", + "headroomProxyUrlHint": "Maaaring simulan mula sa pahinang ito ang mga loopback URL. Sinusuri lamang ang mga external URL.", + "headroomProxySave": "I-save", + "headroomProxyStart": "Simulan", + "headroomProxyStop": "Ihinto", + "headroomProxyExternalHint": "Hindi loopback ang URL na ito, kaya hindi sisimulan ng OmniRoute ang lokal na CLI.", "cliproxyapiStatus": "Katayuan ng CLIProxyAPI", "cliproxyapiNotDetected": "Hindi natukoy", "cliproxyapiImportAuthTitle": "Mag-import ng mga account mula sa CLIProxyAPI", @@ -7938,9 +7953,9 @@ "cliproxyapiImportAuthButton": "Mag-import ng mga account", "payloadRulesTitle": "Mga Panuntunan sa Payload", "payloadRulesDesc": "I-configure ang mga mutation ng payload ng request ayon sa modelo at protocol. Ang mga pagbabago ay sine-save sa mga setting at agad na nire-reload sa runtime pagkatapos i-save.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "paunang-takda", "payloadRuleDefaultDesc": "Inilalapat lamang ang mga param kapag ang target na path ay nawawala sa papalabas na payload.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "pag-override", "payloadRuleOverrideDesc": "Pinipilit ang mga value sa payload, pinapalitan ang anumang naroroon na sa path na iyon.", "payloadRuleFilterTitle": "filter", "payloadRuleFilterDesc": "Inaalis ang mga naka-block na param mula sa payload bago ipadala ang upstream na request.", @@ -7980,28 +7995,28 @@ "responsesStateTitle": "Estado ng mga Response", "responsesStateDesc": "Kontrolin kung paano ipinapasa ng OmniRoute ang previous_response_id.", "responsesStateModeLabel": "pamamahala sa previous_response_id", - "responsesStateModeAuto": "Auto", - "responsesStateModeStrip": "Strip", - "responsesStateModePreserve": "Preserve", + "responsesStateModeAuto": "Awtomatiko", + "responsesStateModeStrip": "Alisin", + "responsesStateModePreserve": "Panatilihin", "responsesStateHint": "Awtomatikong inaalis ng Auto ang previous_response_id maliban kung tahasang pinagana ng isang koneksyon ang OpenAI Responses storage. Ang Strip ang pinakaligtas para sa mga stateless client tulad ng VS Code Custom Endpoint; ang konteksto ay nakadepende sa pagpapadala ng client ng buong kasaysayan.", "responsesStateSaveError": "Nabigong i-update ang setting ng estado ng mga Response", "codexFastTierTitle": "Mabilis na Tier ng Codex", "codexFastTierDesc": "Globally inject service_tier=priority para sa mga kahilingan sa OpenAI Codex.", "codexFastTierHint": "Kapag pinagana, ang OmniRoute ay nagdaragdag ng service_tier=priority sa mga papalabas na kahilingan ng Codex para sa mga koneksyon na hindi pa tumutukoy ng isang tier. Ang priority tier ay nangangailangan ng OpenAI Enterprise API key o ang ChatGPT-auth Codex path; ang iba pang mga pangunahing uri ay makakatanggap ng error na nauugnay sa tier mula sa OpenAI. Pangunahin ang mga setting ng bawat koneksyon sa page ng provider ng Codex.", "codexFastTierSaveError": "Nabigong i-update ang setting ng Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Awtomatikong Pag-ping ng Quota ng Codex", + "codexAutoPingDesc": "Kusang pag-enable sa bawat koneksyon: nagpapadala ng maliit na request kaagad pagkatapos mag-reset ang window ng session ng Codex para handa ito kapag kailangan mo.", + "codexAutoPingWarning": "Gumagamit ng kaunting aktuwal na quota ng Codex sa bawat pag-ping. Naka-off bilang default — i-enable lamang para sa mga koneksyong aktibo mong ginagamit.", + "codexAutoPingSaveError": "Hindi na-update ang setting ng Awtomatikong Pag-ping ng Codex", + "codexAutoPingToggleAria": "I-toggle ang awtomatikong pag-ping ng quota ng Codex para sa {connection}", "codexFastTierTierLabel": "Tier ng serbisyo", - "codexFastTierTierPriority": "Priority", - "codexFastTierTierFlex": "Flex", - "codexFastTierTierDefault": "Default", + "codexFastTierTierPriority": "Priyoridad", + "codexFastTierTierFlex": "Flexible", + "codexFastTierTierDefault": "Paunang itinakda", "codexFastTierModelsLabel": "Mga modelong nasa Fast-tier", "codexFastTierModelsHint": "Ang mga may markang modelo lamang ang makakatanggap ng service_tier kapag pinagana ang Fast Tier.", "codexFastTierModelCheckbox": "Paganahin ang Fast Tier para sa {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Mabilis na Mode ng Claude", "claudeFastModeDesc": "I-opt ang mga napiling kahilingan ni Claude sa Anthropic Fast Mode (bilis:\"mabilis\").", "claudeFastModeHint": "Hindi opisyal na sinusuportahan ng Anthropic ang Fast Mode para sa mga kliyenteng istilo ng SDK. Kapag naka-enable, ang OmniRoute ay nagpapasa ng isang X-CPA-Force-Fast-Mode na header upang ang isang nakapares na CLIProxyAPI build ay maaaring mag-opt-in sa spoof ng entrypoint. Tanging ang mga nakalistang modelo ng Opus ang naka-gate ng pagsusuri sa panig ng kliyente ng Anthropic. Ang antas ng subscription, Max na plano, at balanse ng kredito sa Fast Mode ay ipinapatupad pa rin sa panig ng server — Maaaring bumalik si Anthropic ng mga_mga_kredito kahit na naka-on ang toggle.", "claudeFastModeModelsLabel": "Inilapat sa mga modelo ({count})", @@ -8022,7 +8037,7 @@ "LOCAL_ONLY": "Lokal lamang", "ALWAYS_PROTECTED": "Laging protektado", "MANAGEMENT": "Pamamahala", - "CLIENT_API": "Client API", + "CLIENT_API": "API ng Kliyente", "PUBLIC": "Publiko" }, "bypass": { @@ -8058,7 +8073,7 @@ "auth_required": "Kinakailangan ng auth", "public": "Publiko", "always_protected": "Laging protektado", - "spawn_capable": "Spawn-capable" + "spawn_capable": "May kakayahang mag-spawn" }, "error": { "PASSWORD_REQUIRED": "Kinakailangan ang kasalukuyang password upang ilapat ang mga pagbabagong ito.", @@ -8069,7 +8084,7 @@ }, "remove": "Alisin" }, - "resilienceBaseCooldownLabel": "Base cooldown", + "resilienceBaseCooldownLabel": "Batayang cooldown", "scopeLabel": "Saklaw", "triggerLabel": "Trigger", "effectLabel": "Epekto", @@ -8129,9 +8144,9 @@ "resilienceCredentialHealthInterval": "Pandaigdigang agwat ng pagsusuri", "resilienceCredentialHealthEveryMinutes": "Bawat {minutes} min", "resilienceCredentialHealthHint": "Ang 0 ay nagdi-disable ng background sweep (max 1440 min = 24 oras). Ang mga koneksyong may sariling Health Check value ay hindi tumitingin sa global default na ito; ang 0 sa isang koneksyon ay inaalis ito kahit naka-on ang global sweep.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", - "sessionAffinityTitle": "Session affinity", + "forcedFingerprintTitle": "Palaging naka-enable para sa {provider} — kinakailangan para sa seguridad ng OAuth account; hindi maaaring i-off.", + "forcedFingerprintBadge": "Kinakailangan", + "sessionAffinityTitle": "Pagkakaugnay ng session", "sessionAffinityDesc": "Pinapanatili ang isang pag-uusap sa parehong account sa loob ng ganitong karaming segundo, para sa anumang provider. Hindi ito pinapagana ng 0.", "sessionAffinityTtl": "Affinity TTL (segundo)", "resetAwareQuotaCacheTitle": "I-reset ang-aware na quota cache", @@ -8140,12 +8155,12 @@ "resetAwareQuotaCacheMaxStale": "Max stale (segundo)", "qdrantCleanupSuccess": "OK: inalis ang {count} (mga) punto (pagpapanatili: {days} araw)", "qdrantCleanupFailed": "Nabigo ang paglilinis", - "qdrantCleanupError": "Error: {error}", + "qdrantCleanupError": "Kamalian: {error}", "vercelRelaySuccess": "Matagumpay na na-deploy ang Vercel Relay", "vercelRelayButton": "I-deploy ang Vercel Relay", "vercelRelayModalTitle": "I-deploy ang Vercel Relay", "vercelRelayWarning": "Babala: Kinakailangan ang isang Vercel deployment token. Gagamitin lamang ang token na ito upang likhain ang serverless relay at hindi kailanman itatabi ng OmniRoute.", - "vercelRelayTokenLabel": "Vercel Access Token", + "vercelRelayTokenLabel": "Token sa Pag-access ng Vercel", "vercelRelayProjectNameLabel": "Pangalan ng Vercel Project", "vercelRelayFreeTierNote": "Ang mga relay ay magagaan na proxy endpoint na naka-deploy sa libreng tier ng Vercel upang lampasan ang mga limitasyon sa lokal na network/rehiyon.", "vercelRelayDeploying": "Nagde-deploy...", @@ -8154,7 +8169,7 @@ "denoRelayButton": "I-deploy ang Deno Relay", "denoRelayModalTitle": "I-deploy ang Deno Relay", "denoRelayWarning": "Babala: Kinakailangan ang isang Deno Deploy organization token. Gagamitin lamang ang token na ito upang likhain ang relay app at hindi kailanman itatabi ng OmniRoute.", - "denoRelayTokenLabel": "Deno Deploy Organization Token", + "denoRelayTokenLabel": "Token ng Organisasyon sa Deno Deploy", "denoRelayOrgDomainLabel": "Domain ng Organisasyon", "denoRelayProjectNameLabel": "Pangalan ng Deno App", "denoRelayFreeTierNote": "Gumagana ang Deno Deploy v2 sa isang pandaigdigang edge network. Libreng tier: 1M kahilingan at 100GiB outbound traffic bawat buwan, walang limitasyon sa CPU bawat kahilingan, hanggang 20 aktibong app at 50 custom domain.", @@ -8165,9 +8180,9 @@ "cloudflareRelayModalTitle": "I-deploy ang Cloudflare Worker Relay", "cloudflareRelayWarning": "Nagde-deploy ng isang Cloudflare Worker na nagpo-proxy ng mga kahilingan sa LLM sa pamamagitan ng edge network ng Cloudflare — itinatago ang host IP sa likod ng mga dynamic na Cloudflare address. Ipinapatupad ng Worker ang isang one-time auth secret upang hindi magamit muli ang pampublikong workers.dev URL bilang isang open relay.", "cloudflareRelayTokenHowto": "Lumikha ng API token sa ilalim ng My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit.", - "cloudflareRelayAccountIdLabel": "Cloudflare Account ID", + "cloudflareRelayAccountIdLabel": "Account ID ng Cloudflare", "cloudflareRelayAccountIdHint": "Makikita sa kanang bahagi ng overview page ng Cloudflare dashboard.", - "cloudflareRelayApiTokenLabel": "Cloudflare API Token", + "cloudflareRelayApiTokenLabel": "API Token ng Cloudflare", "cloudflareRelayApiTokenHint": "Nangangailangan ng pahintulot na 'Workers Scripts: Edit'. Ginagamit lamang ang token sa oras ng pag-deploy at hindi kailanman iniimbak.", "cloudflareRelayProjectNameLabel": "Pangalan ng Worker", "cloudflareRelayFreeTierNote": "Libreng tier: 100,000 request/araw bawat Cloudflare account.", @@ -8187,37 +8202,37 @@ "removeErrorCode": "Alisin ang {code}", "addErrorCode": "Magdagdag ng error code...", "suggestions": "Mga Mungkahi:", - "modelLockoutMaxCooldownHint": "≥ Base Cooldown — 3,600,000ms", + "modelLockoutMaxCooldownHint": "≥ Batayang Cooldown — 3,600,000ms", "modelLockoutEnabled": "Paganahin ang Lockout ng Modelo", "modelLockoutEnabledDescription": "Kapag pinagana, ang mga modelong nabigo gamit ang mga na-configure na error code ay pansamantalang ila-lock upang maiwasan ang mga retry loop.", "modelLockoutErrorCodes": "Mga Error Code", "modelLockoutErrorCodesDescription": "Mga HTTP status code na nagti-trigger ng lockout ng modelo. Mag-type ng code at i-click ang Add, o pumili mula sa mga mungkahi.", - "modelLockoutBaseCooldown": "Base Cooldown (ms)", + "modelLockoutBaseCooldown": "Batayang Cooldown (ms)", "modelLockoutBaseCooldownDescription": "Paunang tagal ng cooldown sa millisecond bago masubukang muli ang isang modelo.", - "modelLockoutMaxCooldown": "Max Cooldown (ms)", + "modelLockoutMaxCooldown": "Pinakamataas na Cooldown (ms)", "modelLockoutMaxCooldownDescription": "Pinakamataas na tagal ng cooldown sa millisecond. Pinipigilan ang labis na mahabang mga lockout.", - "modelLockoutExponentialBackoff": "Exponential Backoff", + "modelLockoutExponentialBackoff": "Eksponensiyal na Backoff", "modelLockoutExponentialBackoffDescription": "Kapag pinagana, ang bawat sunod-sunod na pagkabigo ay nagpapataas ng tagal ng cooldown nang exponential.", - "modelLockoutMaxBackoffSteps": "Max Backoff Steps", + "modelLockoutMaxBackoffSteps": "Pinakamaraming Hakbang ng Backoff", "modelLockoutMaxBackoffStepsDescription": "Pinakamataas na bilang ng mga backoff step bago huminto sa paglaki ang cooldown. Ang limitasyon ng Max Cooldown ay unang naaabot sa karamihan ng mga configuration, na ginagawa itong safety ceiling kapag itinaas ang Max Cooldown.", "disableSessionStickiness": "I-disable ang session stickiness", "disableSessionStickinessDesc": "Ang mga round-robin at random combo ay umiikot sa ibang koneksyon sa bawat request sa halip na i-pin ang buong pag-uusap sa isang koneksyon sa pamamagitan ng hash ng unang mensahe. Iwanang naka-off upang mapanatili ang mga prompt-cache hit para sa mga multi-turn chat. Mas nangingibabaw ang mga per-combo override.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Pagruruta batay sa lokasyon ng prompt-cache", + "promptCacheAffinityDesc": "Mas piliin ang parehong provider account para sa magkatugmang mga prompt-cache key habang pinapanatili ang failover para sa kalagayan at quota.", + "reasoningTokenBuffer": "Buffer ng reasoning token", + "reasoningTokenBufferDesc": "Payagan ang combo routing na magdagdag ng palugit sa max_tokens para lamang sa mga kilalang reasoning model kapag kasya ang buong buffer sa loob ng kilalang limitasyon ng output.", + "zeroLatencyOptimizations": "Mga pag-optimize na walang latency", + "zeroLatencyOptimizationsDesc": "Kusang i-enable ang hedging, mga predictive na paglaktaw sa TTFT, at maagap na compression ng fallback. Panatilihing naka-off upang pigilan ang mga feature na ito sa latency na makipag-unahan sa mga target o mag-compress ng mga fallback request.", "credentialRedaction": "Pag-redact ng Kredensyal", "credentialRedactionDesc": "I-redact ang mga API key, token, at secret mula sa kontekstong ipinadala sa mga provider at mula sa mga tugon.", "enableCredentialRedaction": "I-enable ang credential redaction", "enableCredentialRedactionDesc": "Nililinis ang mga API key, token, private key, at JWT mula sa mga mensahe, tool call, at tugon.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Naka-disable ang Awtomatikong Pag-sync", + "pricingAutoSyncEnabled": "Naka-enable ang Awtomatikong Pag-sync", "modalityBridgeIntro": "Gawing teksto ang multimodal na nilalaman bago ito makarating sa mga modelong text-only. Available at nako-configure ang mga tulay para sa paningin, audio, at video.", "modalityBridgeVisionTab": "Bisyon", "modalityBridgeAudioTab": "Audio", - "modalityBridgeVideoTab": "Video", + "modalityBridgeVideoTab": "Bidyo", "modalityBridgeSubTabsAria": "Mga Seksyon ng Modality Bridge", "modalityBridgeVisionTitle": "Tulay ng Bisyon", "modalityBridgeVisionDesc": "Ilahad ang mga larawan gamit ang isang vision model at ipagpatuloy gamit ang napiling text model ng gumagamit.", @@ -8234,7 +8249,7 @@ "modalityBridgeTaskAwareDesc": "Isama ang tanong ng gumagamit bilang pokus upang ilarawan ng modelo ng bisyon kung ano ang mahalaga at i-transcribe ang nakikitang teksto.", "modalityBridgePrompt": "Paglalarawan ng prompt", "modalityBridgeAdvanced": "Sopistikado", - "modalityBridgeTimeoutMs": "Timeout (ms)", + "modalityBridgeTimeoutMs": "Palugit (ms)", "modalityBridgeMaxImages": "Max na mga larawan bawat kahilingan", "visionMaxCharsLabel": "Max na mga karakter sa paglalarawan", "visionMaxCharsHint": "I-cap ang haba ng paglalarawan ng modelo ng bisyon. 0 = walang limitasyon — itaas para sa mga detalyadong gawain ng OCR.", @@ -8243,7 +8258,7 @@ "modalityBridgeCacheTtlMinutes": "Cache TTL (minuto)", "modalityBridgeCacheMaxEntries": "Maksimal na mga entry ng cache", "modalityBridgeStatsBridged": "naka-bridge", - "modalityBridgeStatsCacheHits": "cache hits", + "modalityBridgeStatsCacheHits": "mga cache hit", "modalityBridgeStatsFailures": "mga pagkabigo", "modalityBridgeStatsLastUsed": "huling ginamit", "modalityBridgeStatsNever": "hindi kailanman", @@ -8257,7 +8272,7 @@ "modalityBridgeMovedTitle": "Inilipat ang Vision Bridge", "modalityBridgeMovedBody": "Ang mga setting ng Vision Bridge ay ngayon nasa nakalaang pahina ng Modality Bridge.", "modalityBridgeMovedCta": "Buksan ang mga setting ng Modality Bridge", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "Tulay ng Audio", "modalityBridgeAudioDesc": "I-transcribe ang audio gamit ang speech-to-text na modelo bago magpatuloy sa napiling text model.", "modalityBridgeAudioEnabled": "I-enable ang Audio Bridge", "modalityBridgeAudioEnabledDesc": "Palitan ang mga bahagi ng audio ng mga transcript kapag hindi kayang iproseso ng target na modelo ang audio.", @@ -8282,22 +8297,22 @@ "modalityBridgeVideoFrameCount": "Mga frame bawat video", "modalityBridgeVideoMaxVideos": "Pinakamaraming video bawat kahilingan", "modelRoutingDescriptionPlaceholder": "I-route ang mga modelo ng Opus sa frontier combo", - "cliproxyapiFallbackCodes": "Cliproxyapi Fallback Codes", + "cliproxyapiFallbackCodes": "Mga Fallback Code ng Cliproxyapi", "cliproxyapiFallbackDescription": "Cliproxyapi Fallback Deskripsyon", "cliproxyapiHealthLabel": "Cliproxyapi Kalusugan Label", "cliproxyapiImportFailed": "Nabigong I-import ang Cliproxyapi", - "cliproxyapiImportResult": "Cliproxyapi Import Result", + "cliproxyapiImportResult": "Resulta ng Pag-import sa Cliproxyapi", "cliproxyapiInvalidUrl": "Cliproxyapi Hindi Wasto ang URL", "cliproxyapiLifecycleNoticeAfter": "Cliproxyapi Lifecycle Paunawa Pagkatapos", "cliproxyapiLifecycleNoticeBefore": "Cliproxyapi Lifecycle Notice Bago", - "cliproxyapiLifecycleNoticeLink": "Cliproxyapi Lifecycle Notice Link", - "cliproxyapiPortLabel": "Cliproxyapi Port Label", + "cliproxyapiLifecycleNoticeLink": "Link ng Abiso sa Lifecycle ng Cliproxyapi", + "cliproxyapiPortLabel": "Label ng Port ng Cliproxyapi", "cliproxyapiStatusLabel": "Cliproxyapi Katayuan Label", "cliproxyapiVersionLabel": "Cliproxyapi Bersyon Label", "collection": "Koleksyon", "errorPage": { "description": "Hindi namin ma-load ang mga setting sa ngayon. Pakisubukan muli sa loob ng ilang segundo.", - "errorId": "Error ID: {id}", + "errorId": "ID ng Error: {id}", "retry": "Subukan Muli", "title": "Nabigong i-load ang mga setting" }, @@ -8305,13 +8320,13 @@ "notInstalled": "Hindi naka-install", "oneproxyActions": "Oneproxy Mga Aksyon", "oneproxyActive": "Isang Proxy Aktibo", - "oneproxyAnonymity": "Oneproxy Anonymity", + "oneproxyAnonymity": "Anonymity ng Oneproxy", "oneproxyCountry": "Oneproxy Bansa", "oneproxyDelete": "Oneproxy Tanggalin", "oneproxyEmpty": "Oneproxy Walang Nilalaman", - "oneproxyHost": "Oneproxy Host", - "oneproxyLatency": "Oneproxy Latency", - "oneproxyProtocol": "Oneproxy Protocol", + "oneproxyHost": "Host ng Oneproxy", + "oneproxyLatency": "Latency ng Oneproxy", + "oneproxyProtocol": "Protocol ng Oneproxy", "oneproxyQuality": "Oneproxy Kalidad", "oneproxySyncFailed": "Nabigo ang pag-sync: {error}", "oneproxySyncSuccess": "Naka-sync na {total} proxies ({added} bago, {updated} na-update)", @@ -8336,11 +8351,11 @@ "oneproxyClearAllConfirm": "I-clear ang lahat ng 1proxy proxies?", "memorySkillsSkillsmpDescription": "Kumonekta sa SkillsMP upang matuklasan at mag-install ng mga kasanayan mula sa marketplace.", "memorySkillsActiveProviderDescription": "Pumili kung aling provider ang ginagamit ng Skills page para sa paghahanap at pag-install.", - "memorySkillsSkillsmpProviderTitle": "SkillsMP Marketplace", + "memorySkillsSkillsmpProviderTitle": "Marketplace ng SkillsMP", "memorySkillsSkillsmpProviderDescription": "Naka-authenticate na pamilihan (gumagamit ng iyong SkillsMP API key).", "memorySkillsSkillsshProviderTitle": "skills.sh Direktoryo", "memorySkillsSkillsshProviderDescription": "Tagapagbigay ng pampublikong direktoryo (walang kinakailangang API key).", - "routingCcBridgeCatalogName": "Anthropic-compatible CC bridge", + "routingCcBridgeCatalogName": "CC bridge na compatible sa Anthropic", "routingClaudeProviderName": "Claude (OAuth)", "routingClaudeProviderDescription": "Katutubong Claude provider na may mga token na ibinibigay ng OAuth.", "routingCcBridgeName": "Claude-Code Tulay", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Kalusugan", "cliproxyapiPort": "Port", "qdrantHost": "Host", - "qdrantCollection": "Koleksyon", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Koleksyon" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "Engine ng RTK", + "description": "Compression na nakaaalam sa command para sa output ng tool, mga terminal log, at mga resulta ng build.", + "enabled": "Naka-enable", + "intensity": "Tindi", + "intensityMinimal": "Pinakasimple", + "intensityStandard": "Karaniwan", + "intensityAggressive": "Agresibo", + "toolResults": "Mga resulta ng tool", + "assistantMessages": "Mga mensahe ng assistant", + "codeBlocks": "Mga bloke ng code", "filterCatalog": "Catalog ng Filter", "filterCatalogDesc": "Magagamit na mga filter ng output ayon sa kategorya", - "guidedConfig": "Configuration", + "guidedConfig": "Konfigurasyon", "guidedConfigDesc": "Ayusin kung paano sinasala ng RTK ang iyong terminal output", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Pinakamaraming linya", + "maxChars": "Pinakamaraming character", "deduplicateThreshold": "I-deduplicate ang threshold", "customFilters": "Mga custom na filter", "detectedType": "Natukoy na uri", @@ -8401,25 +8408,25 @@ "rawOutputNever": "Hindi kailanman", "rawOutputFailures": "Mga kabiguan", "rawOutputAlways": "Laging", - "rawOutputMaxBytes": "Raw output max bytes", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "rawOutputMaxBytes": "Pinakamaraming byte ng raw output", + "filterTesting": "Pagsubok sa Filter", + "pasteOutput": "I-paste ang output ng tool upang subukan ang pag-filter...", "presetHigh": "Agresibo", "presetLow": "Liwanag", "presetMaxChars": "Max na output na mga character", "presetMaxLines": "Max na mga linya ng output", "presetMedium": "Pamantayan", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Patakbuhin", + "result": "Resulta", + "previewEmpty": "Magpatakbo ng sample upang i-preview ang output ng RTK.", + "detected": "Natukoy", "masterSwitchOffAlert": "Naka-OFF ang master switch ng Token Saver — hindi makakaapekto ang mga setting na ito sa mga request hanggang sa i-on mo ito mula sa page ng Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", - "simpleMode": "Simple", - "advancedMode": "Advanced", + "tokensFiltered": "Mga token na na-filter", + "filtersActive": "Mga aktibong filter", + "requests": "Mga Request", + "avgSavings": "Average na natitipid", + "simpleMode": "Payak", + "advancedMode": "Masusi", "searchFilters": "Maghanap ng mga filter...", "tooltipDedup": "Gaano ka-agresibo ang pag-alis ng mga paulit-ulit na linya.", "tooltipMaxChars": "Pinakamataas na mga character sa bawat bloke ng output.", @@ -8467,12 +8474,12 @@ "panelPointerPrefix": "I-on o i-off ang layer na ito at itakda ang antas nito sa", "compressionSettings": "Mga Setting ng Compression", "panelPointerSuffix": ". Ine-edit lang ng page na ito ang detalyadong configuration nito.", - "configuration": "Configuration", + "configuration": "Konfigurasyon", "noAdditionalConfiguration": "Walang karagdagang configuration.", "save": "I-save", "saving": "Sina-save…", "globalSettingsOnly": "Kino-configure ang layer na ito ng mga pangkalahatang setting; wala pang per-engine override na ise-save dito.", - "preview": "Preview", + "preview": "Paunang tingin", "previewInput": "Input ng preview", "processing": "Pinoproseso…", "previewSample": "The quick brown fox jumps over the lazy dog. Isa itong sample na mensahe na ginagamit upang i-preview ang compression. Naglalaman ito ng sapat na teksto upang magpakita ng makabuluhang natipid na token.", @@ -8481,7 +8488,7 @@ "savings": "Mga natipid", "original": "Orihinal", "compressed": "Na-compress", - "diff": "Diff", + "diff": "Pagkakaiba", "last7Days": "Nakalipas na 7 araw", "noDataYet": "Wala pang data", "runs": "Mga Run", @@ -8499,7 +8506,7 @@ "description": "Lossless na tabular compaction ng mga homogeneous na JSON array na may tahasang mga row-count marker." }, "session-dedup": { - "name": "Session Dedup", + "name": "Pag-aalis ng duplikado sa sesyon", "description": "Cross-turn block deduplication na may mga recoverable content marker." }, "ccr": { @@ -8507,11 +8514,11 @@ "description": "Mga content-addressed retrieval marker para sa mga inuulit na context block." }, "llmlingua": { - "name": "LLMLingua-2 (Semantic Pruning)", + "name": "LLMLingua-2 (Semantikong Pagbabawas)", "description": "ONNX-based na semantic token classification. Nagko-compress ng prose lamang; protektado ang mga code block at mga pinanatiling construct. Nagfe-fail open sa mga error sa modelo o worker." }, "lite": { - "name": "Lite", + "name": "Magaan", "description": "Mabilis na pagbawas sa whitespace, tool-result, at URL ng larawan." }, "aggressive": { @@ -8519,7 +8526,7 @@ "description": "Pagbubuod, compression ng tool-result, at progressive aging." }, "ultra": { - "name": "Ultra", + "name": "Sukdulan", "description": "Heuristic na token pruning na may opsyonal na lokal na SLM fallback." } }, @@ -8529,7 +8536,7 @@ "description": "Minimum na bilang ng character para maging kandidato sa deduplication ang isang suffix block." }, "fuzzy": { - "label": "Fuzzy near-duplicate deduplication", + "label": "Fuzzy na pag-aalis ng halos magkakaparehong duplicate", "description": "Mag-opt in upang palitan ang buong mga mensahe na hindi bababa sa humigit-kumulang 85% na katulad ng isang naunang mensahe ng isang recoverable na CCR marker." }, "minChars": { @@ -8537,11 +8544,11 @@ "description": "Minimum na bilang ng character para maging kandidato sa CCR ang isang block." }, "retrievalRampFactor": { - "label": "Retrieval ramp factor (H8)", + "label": "Salik ng unti-unting pagtaas ng pagkuha (H8)", "description": "Kinokontrol kung gaano kalakas lumalaban sa compression ang mga madalas na na-retrieve na block. Ang bawat naunang retrieval ay nagpapataas ng epektibong minimum na laki ng block nang linear; hindi pinapagana ng 1 ang ramp." }, "model": { - "label": "Model" + "label": "Modelo" }, "minTokens": { "label": "Minimum na token (floor)" @@ -8575,7 +8582,7 @@ "label": "Mag-fallback sa Aggressive" }, "intensity": { - "label": "Intensity" + "label": "Tindi" }, "minMessageLength": { "label": "Minimum na haba ng mensahe" @@ -8601,44 +8608,44 @@ "bert-base": "BERT-base (710 MB, mas mataas na katumpakan)" }, "intensity": { - "lite": "Lite", - "full": "Full", - "ultra": "Ultra" + "lite": "Magaan", + "full": "Buo", + "ultra": "Sukdulan" } }, "modeOptions": { - "default": "Default", + "default": "Paunang-takda", "off": "Patay", - "lite": "Lite", + "lite": "Magaan", "standard": "Pamantayan", "aggressive": "Mapanlikha", - "ultra": "Ultra", + "ultra": "Sukdulan", "responsesToolOutput": "Output ng tool ng mga Tugon" } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Mga Kumbinasyon ng Compression", + "description": "Tukuyin kung paano pinagsasama ang mga engine para sa iba't ibang sitwasyon ng routing.", + "createCombo": "Gumawa ng Kumbinasyon ng Compression", + "editCombo": "I-edit", + "deleteCombo": "I-delete", + "deleteConfirm": "I-delete ang kumbinasyong ito ng compression?", + "pipeline": "Daloy ng proseso", + "addStep": "Magdagdag ng Hakbang", + "removeStep": "Alisin", + "name": "Pangalan", + "descriptionField": "Paglalarawan", + "languagePacks": "Mga Language Pack", + "outputMode": "Mode ng output", + "assignToRouting": "Italaga sa mga Kumbinasyon ng Routing", + "noAssignments": "Walang available na kumbinasyon ng routing", + "default": "Paunang-takda", + "setAsDefault": "Itakda bilang Default", + "save": "I-save", + "cancel": "Kanselahin", + "enabled": "Naka-enable", "loading": "Naglo-load…", - "hubTitle": "Compression Hub", + "hubTitle": "Hub ng Compression", "hubDescription": "Pumili kung aling compression profile ang tatakbo globally.", "hideExplanation": "Itago ang paliwanag", "howItWorks": "Paano ito gumagana", @@ -8655,43 +8662,43 @@ "defaultConfiguredPrefix": "Default — na-configure sa", "compressionSettings": "Mga Setting ng Compression", "providerDelegated": "Provider-delegated na compression", - "contextEditingClaude": "Context Editing (Claude)", + "contextEditingClaude": "Pag-edit ng Konteksto (Claude)", "contextEditingDescription": "Pinapayagan ang provider na i-clear ang mga lumang tool-use block sa server-side, nang hindi muling isinusulat ang mensahe.", - "contextEditingAria": "Context Editing", + "contextEditingAria": "Pag-edit ng Konteksto", "contextEditingNote": "Kasalukuyang available para sa Claude (Anthropic) lamang. Isa itong delegated mode: iki-clear ng provider ang mga lumang tool-use block sa server-side — hindi namin muling isusulat ang mensahe. Hindi ito nakakaapekto sa iba pang mga provider.", "namedCombos": "Mga pinangalanang combo", "namedCombosDescription": "Mag-save ng iba't ibang pipeline at italaga ang mga ito sa mga partikular na routing combo.", + "activeProfileMasterSwitchOffWarning": "Hindi tatakbo ang aktibong profile sa ibaba hangga't hindi naka-on ang pangunahing switch na \"Prompt Compression\".", + "activeProfileMasterSwitchOffCta": "I-on ito sa Settings", "comboNamePlaceholder": "Pangalan ng combo", "descriptionPlaceholder": "Paglalarawan", "nameRequired": "Maglagay ng pangalan ng combo bago mag-save.", "pipelineRequired": "Magdagdag ng kahit isang hakbang sa pipeline bago mag-save.", "saveComboFailed": "Hindi na-save ang combo (HTTP {status}).", "deleteNamedConfirm": "I-delete ang combo na “{name}”?", - "intensityLite": "Lite", - "intensityFull": "Full", - "intensityUltra": "Ultra", + "intensityLite": "Magaan", + "intensityFull": "Buo", + "intensityUltra": "Sukdulan", "active": "Aktibo", "languagePacksList": "Mga language pack: {packs}", "dragToReorder": "I-drag upang muling isaayos ang hakbang", - "engine": "Engine", - "intensity": "Intensity", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "engine": "Makina", + "intensity": "Tindi" }, "compressionStudio": { "noRun": "Walang available na compression run.", "liveDataHint": "Dumarating ang live data sa pamamagitan ng WebSocket compression channel.", - "cockpitView": "Cockpit view", - "canvas": "Canvas", - "waterfall": "Waterfall", + "cockpitView": "Tanaw ng cockpit", + "canvas": "Kanbas", + "waterfall": "Talon-tubig", "replayDone": "Kumpleto na ang replay", "pauseReplay": "I-pause ang replay", "playReplay": "I-play ang replay", "pause": "I-pause", - "replay": "Replay", + "replay": "Muling pagpapatugtog", "resetReplay": "I-reset ang replay", "stepProgress": "hakbang {current}/{total}", - "inlineView": "Inline", + "inlineView": "Nasa linya", "splitComingSoon": "Split view (paparating na)", "inputPlaceholder": "Mag-paste ng prompt, output ng tool, o konteksto…", "activeCombined": "Aktibo sa pinagsamang flow", @@ -8700,46 +8707,46 @@ "fuzzyDedup": "Fuzzy deduplication (malapit na duplicate → CCR)", "protectSensitive": "Protektahan ang sensitibong nilalaman (risk gate)", "quantumLock": "QuantumLock (i-stabilize ang cache prefix)", - "saliencyHeatmap": "Saliency heatmap", + "saliencyHeatmap": "Heatmap ng saliency", "running": "Tumatakbo…", "run": "Patakbuhin", "laneRejected": "tinanggihan: {reason}", - "error": "error", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "error": "kamalian", + "combinedError": "Nabigo ang preview ng pinagsamang pipeline: {reason}", "combinedFlow": "Pinagsamang flow", "eachLayer": "Bawat layer nang hiwalay", "diff": "Pagkakaiba", "combined": "pinagsama", "skipped": "laktawan", - "input": "INPUT", - "output": "OUTPUT", + "input": "PAPASOK", + "output": "PALABAS", "tokenCount": "{count, number} na token", "tokenShort": "tok", - "provider": "Provider", - "judgeModel": "Judge model", + "provider": "Tagapagbigay", + "judgeModel": "Modelong tagahatol", "judgeModelPlaceholder": "hal. claude-haiku", - "maxCostUsd": "USD cap", + "maxCostUsd": "Limitasyon sa USD", "enterJudgeModel": "Maglagay ng judge model", "verifying": "Nagve-verify…", "verifyAll": "I-verify lahat", "spent": "nagastos ${spent} / ${cap}", "capReached": "naabot ang cap", "loadAb": "I-load ang A/B", - "engine": "Engine", + "engine": "Makina", "savings": "Mga Natipid", - "retention": "Retention", + "retention": "Pagpapanatili", "outputTokensShort": "Mga output token", - "fidelity": "Fidelity", + "fidelity": "Katapatan", "playTab": "I-play", "compareTab": "Ihambing", "encoderComparison": "Encoder A/B — {count} na array", "encoderWinner": "nagwagi: {winner}", "encoder": "encoder", - "bytes": "bytes", + "bytes": "byte", "tokensCl100k": "mga token (cl100k)" }, "omniglyph": { - "preview": "Preview", + "preview": "Paunang tingin", "description": "Context-as-image compression. Nire-render ang system prompt, dokumentasyon ng tool, at siksik na history bilang mga compact na PNG page na binabasa ng Claude Fable 5 sa halip na text. Ang mga image token ay sinisingil ayon sa mga dimensyon sa halip na mga character, kaya ang na-convert na block ay nagkakahalaga ng humigit-kumulang 10× na mas mababa. Direktang Anthropic route lamang.", "economicsTitle": "Ang ekonomiks", "economics": { @@ -8763,12 +8770,12 @@ "why": "Tanging Fable 5 lamang ang nagbabasa ng mga siksik na page sa 100% katumpakan (nasukat, n=30). Naka-block ang GPT-5.5 at Gemini 2.5 Flash." }, "transport": { - "label": "Transport", + "label": "Transportasyon", "pass": "direktang Anthropic", "why": "Muling nire-resample ng mga aggregator ang mga imahe at sinisira ang pagiging nababasa — ang direktang ruta lamang ang may awtoridad." }, "format": { - "label": "Format", + "label": "Pormat", "pass": "native na Claude", "why": "Dapat gamitin ng body ang format ng Claude at hindi kailanman dapat maglagay ng system role sa loob ng mga mensahe." }, @@ -8780,27 +8787,27 @@ }, "enableTitle": "I-enable ang engine", "enableDescription": "Tumatakbo nang huli sa stack (pagkatapos linisin ng RTK/Caveman ang text, kino-convert ng OmniGlyph ang natitira sa mga imahe) at tumatakbo rin nang standalone sa pamamagitan ng omniglyph mode. Ito ay isang preview at nananatiling naka-off by default hanggang sa makumpleto ang end-to-end na pagpapatunay.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Profile ng compression", + "profileDescription": "Ang profile ay pinakamataas na limitasyon, hindi pinakamababa: ang mas mahigpit na profile ay hindi maaaring luwagan ng override sa bawat hakbang. Batay sa pagsukat sa codebase na ito: gamit ang coding-safe o balanced, walang kino-compress sa isang session na wala pang naiipong history, dahil parehong itinataas ng mga ito ang minimum na bilang ng character at pinananatiling native ang system prompt, mga schema ng tool, at mga resulta ng tool.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agresibo (default)", + "description": "Ang patakarang sinukat ng mga na-publish na resibo. Kino-compress bilang image ang system prompt, dokumentasyon ng tool, at siksik na history." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Balanse", + "description": "Pinananatiling native ang live na estado at pinoprotektahan ang huling 8 palitan; tanging ang mas lumang nakasarang kasaysayan ang pinaiikli." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Ligtas para sa coding", + "description": "Pinananatiling native ang awtoridad, mga schema ng tool, at live na output ng tool, habang pinoprotektahan ang huling 12 palitan. Walang kino-compress hanggang sa makaipon ng kasaysayan ang session." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Direktang pagpasa", + "description": "Nagruruta nang walang pagbabago. Nilalaktawan ang engine at ipinapasa ang request nang hindi binabago." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Piliin ang profile ng compression ng OmniGlyph", "saved": "Nai-save.", "saveFailed": "Hindi mai-save.", "enableAria": "I-enable ang OmniGlyph engine", @@ -8849,7 +8856,7 @@ "cancel": "Kanselahin", "install9Router": "I-install ang 9Router", "install9RouterDescription": "Nagda-download at nag-i-install ng 9Router sa pamamagitan ng npm. Nangangailangan ng humigit-kumulang 500 MB na espasyo sa disk.", - "version": "Version", + "version": "Bersyon", "versionHint": "Ilagay ang “latest” o isang partikular na bersyon (halimbawa, 1.2.3).", "servicePort": "Port", "servicePortHint": "Dapat gumamit ng magkaibang port ang OmniRoute at 9Router. Ang default na port ng 9Router ay 20130.", @@ -8882,7 +8889,7 @@ "download": "I-download", "noLogs": "Wala pang log output.", "logStreamFailed": "Hindi ma-stream ang mga log ng {name}. Suriin ang lokal na access at status ng serbisyo.", - "fallbackRouting": "Fallback Routing", + "fallbackRouting": "Fallback na Pagruruta", "fallbackRoutingDescription": "Subukang muli ang mga nabigong request sa provider sa pamamagitan ng CLIProxyAPI", "enableFallback": "I-enable ang fallback", "cliproxyUrl": "URL ng CLIProxyAPI", @@ -8890,7 +8897,7 @@ "invalidUrl": "Di-wastong URL — dapat magsimula sa http:// o https://", "saved": "Nai-save", "saveFailed": "Hindi ma-save ang setting", - "modelMapping": "Model Mapping", + "modelMapping": "Pagmamapa ng Modelo", "modelMappingDescription": "I-map ang mga OmniRoute model ID sa mga CLIProxyAPI model ID (halimbawa, \"gpt-4o\": \"openai-gpt-4o\")", "modelMappingEditor": "JSON editor ng model mapping", "mappingSaved": "Nai-save na ang mapping", @@ -8902,51 +8909,51 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Compression ng mensahe batay sa mga panuntunan, mga language pack, analytics, at mga kontrol sa output mode.", "advancedConfig": "Advanced na Configuration", "advancedConfigDesc": "I-fine-tune ang pag-uugali ng compression", "aggressiveSettings": "Mga Agresibong Setting", "aggressiveSettingsDesc": "Pinakamataas na compression na may potensyal na kalidad ng trade-off", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Mga Request", + "tokensSaved": "Mga token na natipid", + "savingsPercent": "% ng natipid", + "avgLatency": "Avg na latency", + "languagePacks": "Mga Language Pack", + "languagePacksDesc": "I-enable ang mga panuntunan sa compression para sa mga partikular na wika.", "labelAutoTrigger": "Auto-compress kapag lumampas ang konteksto", "labelCompressionRate": "Lakas ng compression", "labelMaxTokens": "Target na mga token bawat mensahe", "labelMinLength": "Minimum na haba ng mensahe", "labelMinSavings": "Minimum na mga token upang i-save", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", - "inputCompressionTitle": "Input compression", + "enabled": "Naka-enable", + "autoDetect": "Awtomatikong tukuyin ang wika", + "rulesCount": "{count} panuntunan", + "inputCompressionTitle": "Compression ng input", "inputCompressionDesc": "Isulat muli ang history ng chat gamit ang mas maiikling salita. Binabawasan nito ang mga input token nang humigit-kumulang 50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Analytics ng Compression", + "noAnalytics": "Wala pang analytics ng compression.", "masterDisabledWarning": "Naka-OFF ang master switch ng Token Saver — hindi makakaapekto ang mga setting na ito sa mga request hangga't hindi mo ito binubuksan mula sa Compression Settings o binabago rito.", - "outputMode": "Output Mode", + "outputMode": "Mode ng Output", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Mode ng Output", "quickSettings": "Mga Mabilisang Setting", "quickSettingsDesc": "Mga pangunahing setting ng compression para makapagsimula", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Awtomatikong Pag-bypass sa Kalinawan", + "bypassConditions": "Mga kondisyon ng bypass", "bypassConditionsList": "seguridad, hindi maibabalik, paglilinaw, sensitibo sa kaayusan", - "simpleMode": "Simple", - "advancedMode": "Advanced", + "simpleMode": "Payak", + "advancedMode": "Masulong", "tooltipAutoTrigger": "Awtomatikong i-compress kapag lumampas ang konteksto sa laki na ito.", "tooltipCompressionRate": "0.0 = wala, 1.0 = maximum. 0.5 = balanse.", "tooltipMaxTokens": "Target na bilang ng token pagkatapos ng compression. Mas mababa = mas agresibo.", "tooltipMinLength": "Ang mga mensaheng mas maikli kaysa dito ay hindi na-compress. Mas mababa = mas maraming compression.", "tooltipMinSavings": "I-compress lamang kung nakakatipid ito ng kahit gaano karaming token.", "ultraSettings": "Mga Ultra Setting", - "ultraSettingsDesc": "SLM-powered semantic compression", + "ultraSettingsDesc": "Semantic compression na pinapagana ng SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Sumagot nang maikli. Panatilihin ang mga teknikal na termino, code, error, URL, at identifier.", + "full": "Sumagot nang maigsi at siksik. Panatilihin ang lahat ng teknikal na nilalaman.", + "ultra": "Sumagot nang napakaigsi gamit ang mga karaniwang teknikal na daglat. Panatilihin ang eksaktong mga simbolo." } }, "translator": { @@ -8957,7 +8964,7 @@ "playground": "Palaruan", "realtime": "Real-Time na Aktibidad sa Pagsasalin", "chatTester": "Chat Tester", - "testBench": "Test Bench", + "testBench": "Lugar ng Pagsubok", "liveMonitor": "Live na Monitor", "modeDescriptionPlayground": "I-paste ang anumang nilalaman ng kahilingan sa API at tingnan kung paano ito isinasalin ng OmniRoute sa pagitan ng mga format ng provider (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", "modeDescriptionChatTester": "Magpadala ng mga totoong kahilingan sa chat sa pamamagitan ng OmniRoute at siyasatin ang buong round-trip: input, isinaling kahilingan, tugon ng provider, at isinalin na output.", @@ -8967,15 +8974,15 @@ "recentTranslations": "Mga Kamakailang Pagsasalin", "noTranslations": "Wala pang pagsasalin", "source": "Pinagmulan", - "target": "Target", + "target": "Patutunguhan", "time": "Oras", "model": "Modelo", "status": "Katayuan", - "latency": "Latency", + "latency": "Latensiya", "totalTranslations": "Kabuuang Pagsasalin", "successful": "Matagumpay", "errors": "Mga pagkakamali", - "avgLatency": "Avg Latency", + "avgLatency": "Average na Latensiya", "millisecondsShort": "{value}ms", "notAvailableSymbol": "—", "liveAutoRefreshing": "Live — Auto-refresh", @@ -8990,21 +8997,21 @@ "errorShort": "ERR", "formatConverter": "Converter ng Format", "formatConverterDescription": "Mag-paste o mag-type ng JSON request body. Awtomatikong ide-detect ng translator ang source format at iko-convert ito sa target na format. Gamitin ito para i-debug kung paano isinasalin ng OmniRoute ang mga kahilingan sa pagitan ng mga format (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", - "translationPathHubSpoke": "{source} → OpenAI (intermediate) → {target}", + "translationPathHubSpoke": "{source} → OpenAI (tagapamagitan) → {target}", "translationPathDirect": "{source} → {target} (direktang tagasalin)", "translationPathPassthrough": "Parehong format — hindi kailangan ng pagsasalin", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "Intermediate ng OpenAI", "autoFeaturesTitle": "Ano ang awtomatikong ginagawa ng OmniRoute", "autoFeaturesCount": "8 mga tampok", "featureReasoningCache": "Pangangatwiran Cache", "featureReasoningCacheDesc": "Muling nag-inject ng naka-cache na reasoning_content para sa mga modelo ng thinking-mode (DeepSeek V4, Kimi K2, Qwen) kapag tinanggal ito ng mga kliyente sa history ng pag-uusap.", - "featureSchemaCoercion": "Schema Coercion", + "featureSchemaCoercion": "Pagpilit sa Schema", "featureSchemaCoercionDesc": "Nag-aayos ng mga sirang tool schema: nagdaragdag ng mga nawawalang karagdagangProperties, nagsalinis ng mahabang paglalarawan, nag-normalize ng mga nested na bagay.", "featureRoleNormalization": "Normalisasyon ng Tungkulin", "featureRoleNormalizationDesc": "Maps developer→system para sa mga target na hindi OpenAI. Maps system→user para sa mga modelong hindi sumusuporta sa papel ng system.", "featureToolCallIds": "Normalization ng Tool Call ID", "featureToolCallIdsDesc": "Bumubuo ng mga natatanging tool_call ID kapag nawawala. Nag-normalize sa 9-char na format para sa mga provider tulad ng Mistral.", - "featureMissingToolResponse": "Tool Response Injection", + "featureMissingToolResponse": "Pag-inject ng Tugon ng Tool", "featureMissingToolResponseDesc": "Nag-iiniksyon ng mga walang laman na tool_result na mensahe kapag ang mga kliyente ay nagpadala ng mga tool_call nang walang kaukulang mga tugon.", "featureThinkingBudget": "Pag-iisip na Badyet", "featureThinkingBudgetDesc": "Awtomatikong pinamamahalaan ang thinking config. Inaalis ang mga parameter ng pag-iisip kapag ang huling mensahe ay hindi mula sa user.", @@ -9022,7 +9029,7 @@ "exampleTemplates": "Mga Halimbawang Template", "exampleTemplatesHint": "— I-click para mag-load", "templateLoadHint": "Nilo-load ng template ang kahilingan sa {format} na format. Baguhin ang Source Format upang mag-load sa ibang format.", - "compatibilityTester": "Compatibility Tester", + "compatibilityTester": "Tagasuri ng Compatibility", "compatibilityReport": "Ulat sa Pagkakatugma", "testBenchDescription": "Magpatakbo ng mga paunang natukoy na sitwasyon (Simple Chat, Tool Calling, atbp.) upang i-verify ang pagsasalin at pagiging tugma ng provider. Pumili ng source format at target na provider, pagkatapos ay patakbuhin ang lahat ng pagsubok para makakita ng porsyento ng compatibility. Gamitin ito para malaman kung aling mga feature ang gumagana sa mga provider.", "targetProvider": "Target na Provider", @@ -9035,24 +9042,24 @@ "passedIconLabel": "✅ Nakapasa", "chunks": "mga tipak", "scenarioSimpleChat": "Simpleng Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "scenarioToolCalling": "Pagtawag sa Tool", + "scenarioMultiTurn": "Maramihang Turno", "scenarioThinking": "Nag-iisip", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "Prompt ng System", + "scenarioStreaming": "Pag-stream", "templateNames": { "simple-chat": "Simpleng Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "tool-calling": "Pagtawag sa Tool", + "multi-turn": "Maramihang Turno", "thinking": "Nag-iisip", - "system-prompt": "System Prompt", - "streaming": "Streaming", + "system-prompt": "Prompt ng System", + "streaming": "Pag-stream", "vision": "Pangitain", - "schema-coercion": "Schema Coercion" + "schema-coercion": "Pagpilit sa Schema" }, "templateDescriptions": { "simple-chat": "Pangunahing text message", - "tool-calling": "Function/tool invocation", + "tool-calling": "Pagtawag sa function/tool", "multi-turn": "Pag-uusap sa kasaysayan", "thinking": "Pinalawak na pag-iisip / pangangatwiran", "system-prompt": "Mga kumplikadong tagubilin sa system", @@ -9097,11 +9104,11 @@ "cityDescription": "Ang lungsod na tatanungin, hal. 'Tokyo' o ​​'New York'." } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", + "openaiCompatibleLabel": "Compatible sa OpenAI", + "anthropicCompatibleLabel": "Compatible sa Anthropic", "noTemplateForFormat": "Walang template para sa format na ito", "translationFailed": "Nabigo ang pagsasalin: {error}", - "pipelineDebugger": "Pipeline Debugger", + "pipelineDebugger": "Debugger ng Pipeline", "translationPipeline": "Pipeline ng Pagsasalin", "loading": "Naglo-load…", "compressionOriginal": "Orihinal", @@ -9117,7 +9124,7 @@ "chatTesterFlow": "Kahilingan ng Kliyente → Format Detection → OpenAI Intermediate → Format ng Provider → Tugon", "clickStepToInspect": "I-click ang anumang hakbang upang siyasatin ang data sa yugtong iyon.", "clientFormat": "Format ng Kliyente", - "provider": "Provider", + "provider": "Tagapagbigay", "modelPlaceholder": "Pumili o mag-type ng pangalan ng modelo...", "sendMessageToSeePipeline": "Magpadala ng mensahe upang makita ang pipeline ng pagsasalin", "chatMessageHintPrefix": "Ipo-format ang iyong mensahe bilang a", @@ -9130,7 +9137,7 @@ "clientRequestDescription": "Ang katawan ng kahilingan bilang iyong kliyente ang magpapadala nito", "formatDetected": "Natukoy ang Format", "formatDetectedDescription": "Awtomatikong nade-detect ng OmniRoute ang format ng API mula sa istraktura ng kahilingan", - "openaiIntermediate": "OpenAI Intermediate", + "openaiIntermediate": "Intermediate ng OpenAI", "openaiIntermediateDescription": "Ang lahat ng mga format ay unang na-normalize sa OpenAI na format (ang unibersal na tulay)", "providerFormat": "Format ng Provider", "providerFormatDescription": "Ang format ng OpenAI ay isinalin sa katutubong format ng provider", @@ -9149,15 +9156,15 @@ "eventSourceMainPipeline": "• Pipeline ng pangunahing kahilingan (trapiko ng CLI/IDE/API)", "liveMonitorDescriptionPrefix": "Nagpapakita ng mga kaganapan sa pagsasalin habang dumadaloy ang mga tawag sa API sa pamamagitan ng OmniRoute. Ang mga kaganapan ay nagmumula sa in-memory na buffer (nagre-reset sa pag-restart). Gamitin", "liveMonitorDescriptionSuffix": ", o mga external na API call para makabuo ng mga event.", - "streamTransformer": "Stream Transformer", + "streamTransformer": "Transformer ng Stream", "modeDescriptionStreamTransformer": "Patakbuhin ang mga pagkumpleto ng chat sa mga stream ng SSE sa pamamagitan ng Transformer ng Mga Tugon.", "streamTransformerTitle": "Mga Tugon Stream Transformer", "streamTransformerDescription": "Mag-paste ng SSE stream ng mga pagkumpleto ng chat, patakbuhin ito sa pamamagitan ng Transformer ng Mga Tugon ng OmniRoute, at siyasatin ang nailabas na tugon.* mga kaganapan bago mag-wire sa isang kliyente.", "loadTextSample": "Mag-load ng sample ng text", "loadToolSample": "Mag-load ng sample ng tool-call", "transformToResponses": "Magbago sa Mga Tugon", - "rawChatSseInput": "Raw chat completions SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "rawChatSseInput": "Raw na SSE ng mga chat completion", + "transformedResponsesSse": "Na-transform na SSE ng Responses API", "noResultsYet": "Wala pang resulta", "transformedEvents": "Mga nabagong kaganapan", "uniqueEventTypes": "Mga natatanging uri ng kaganapan", @@ -9170,26 +9177,26 @@ "comboRouted": "Na-ruta ang combo", "uniqueEndpoints": "Mga natatanging endpoint", "routeDetails": "Mga detalye ng ruta", - "comboBadge": "Combo", + "comboBadge": "Kombinasyon", "routeEndpointLabel": "Endpoint", "routeConnectionLabel": "Koneksyon", "scenarioVision": "Paningin (pag-unawa sa imahe)", "scenarioSchemaCoercion": "Schema coercion (nakabalangkas na output)", "techniques": "Mga diskarte:", - "friendlyTitle": "Translator", + "friendlyTitle": "Tagasalin", "friendlySubtitle": "Gamitin ang iyong umiiral na app sa anumang provider — nang hindi muling isinusulat ang code.", "conceptHeadline": "Nagsasalita ang iyong app ng \"wika\" ng isang API. Kino-convert ito ng Translator upang gumamit ng ibang provider.", "conceptDiagramAppLabel": "Iyong app", - "conceptDiagramSourceLabel": "Source format", - "conceptDiagramHubLabel": "OpenAI (hub)", - "conceptDiagramTargetLabel": "Target provider", + "conceptDiagramSourceLabel": "Format ng pinagmulan", + "conceptDiagramHubLabel": "OpenAI (sentro)", + "conceptDiagramTargetLabel": "Target na provider", "conceptDiagramExampleApp": "hal. Anthropic SDK", "conceptDiagramExampleSource": "claude", "conceptDiagramExampleTarget": "Gemini", "conceptHowItWorksToggle": "Paano ito gumagana", "conceptHowItWorksBody": "Nagpapadala ang iyong app ng request sa sarili nitong format. Nadedetect ng Translator ang format, kino-convert ito sa pamamagitan ng OpenAI bilang isang intermediate hub (o direkta kapag may available na direktang translator), ipinapadala ito sa napiling provider, at ibinabalik ang response na na-convert pabalik sa format ng iyong app.", - "tabTranslate": "Translate", - "tabMonitor": "Monitor", + "tabTranslate": "Isalin", + "tabMonitor": "Subaybayan", "tabTranslateAriaLabel": "Pumunta sa tab na Translate", "tabMonitorAriaLabel": "Pumunta sa tab na Monitor", "simpleAppUsesLabel": "Gumagamit ang aking app ng", @@ -9199,10 +9206,10 @@ "simpleStartWithLabel": "Magsimula sa", "simpleStartWithExamplePlaceholder": "Pumili ng nakahandang halimbawa", "simpleStartWithCustomOption": "I-paste ang iyong request (advanced)", - "simpleModeLabel": "Mode", + "simpleModeLabel": "Paraan", "simpleModePreview": "I-preview ang pagsasalin lamang", "simpleModeSend": "Ipadala at tingnan ang tugon", - "simpleAdvancedToggle": "Advanced", + "simpleAdvancedToggle": "Masulong", "simpleInputPanelTitle": "Input", "simpleInputPanelHint": "Mensaheng free-text o nakahandang halimbawa", "simpleResultPanelTitle": "Pagsasalin + Tugon", @@ -9213,13 +9220,13 @@ "narratedError": "Nabigo: {reason}", "narratedSeeTranslatedJson": "tingnan ang naisaling JSON", "narratedSeePipeline": "tingnan ang pipeline", - "advancedSectionTitle": "Advanced", + "advancedSectionTitle": "Masulong", "advancedSectionSubtitle": "Raw JSON, pipeline at mga teknikal na tool. Ang lahat dito ay katulad ng sa mga lumang tab — inayos lang muli.", - "advancedRawJsonTitle": "Raw JSON (auto-detect + Monaco)", + "advancedRawJsonTitle": "Raw JSON (awtomatikong pagtukoy + Monaco)", "advancedRawJsonSubtitle": "I-paste ang isang JSON request; awtomatikong matutukoy ang format.", - "advancedPipelineTitle": "OpenAI intermediate pipeline", + "advancedPipelineTitle": "Intermediate pipeline ng OpenAI", "advancedPipelineSubtitle": "I-visualize ang bawat hakbang ng pagsasalin (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Tagapagbago ng Stream (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Kino-convert ang Chat Completions SSE sa Responses API.", "advancedTestBenchTitle": "Test Bench (8 scenario)", "advancedTestBenchSubtitle": "Pinapatakbo ang lahat ng scenario at nag-uulat ng pasa/bagsak + compatibility %.", @@ -9228,11 +9235,11 @@ "monitorOriginHint": "Ang mga event na ginawa ng Translate o ng pangunahing pipeline ay lalabas dito nang real time.", "monitorEmptyCta": "Pumunta sa Translate tab at magpadala ng request — lalabas ito rito.", "monitorOpenTranslateButton": "Pumunta sa Translate", - "pipelineStepClientRequest": "Client Request", + "pipelineStepClientRequest": "Request ng Client", "pipelineStepClientRequestDesc": "Natanggap ang request sa format ng client", "pipelineStepFormatDetected": "Natukoy na Format", "pipelineStepFormatDetectedDesc": "Awtomatikong natukoy na source format", - "pipelineStepOpenAIIntermediate": "OpenAI Intermediate", + "pipelineStepOpenAIIntermediate": "OpenAI na Tagapamagitan", "pipelineStepOpenAIIntermediateDesc": "Naisalin sa OpenAI hub format", "pipelineStepProviderFormat": "Format ng Provider", "pipelineStepProviderFormatDesc": "Isinalin sa target na format ng provider", @@ -9246,14 +9253,14 @@ "conceptDiagramSourceTooltip": "Ang format ng API na sinasalita ng iyong app (hal., Anthropic SDK = claude).", "conceptDiagramTargetTooltip": "Ang provider kung saan ipapadala talaga ang request.", "compressionEmptyHint": "Punan ang input field sa Translate tab (Mga Simpleng Kontrol o Raw JSON) upang paganahin ang preview.", - "compressionModeLabel": "Compression mode", + "compressionModeLabel": "Mode ng compression", "compressionPreviewButton": "I-preview ang Compression", "compressionPreviewing": "Nagpe-preview…", "compressionPreviewFailed": "Nabigo ang preview ng compression", "tokens": "mga token", "pauseAutoRefresh": "I-pause ang auto-refresh", "resumeAutoRefresh": "Ipagpatuloy ang auto-refresh", - "live": "Live", + "live": "Aktibo", "copyInput": "Kopyahin ang input", "copyOutput": "Kopyahin ang output", "streamTransformFailed": "Nabigong i-transform ang stream" @@ -9267,7 +9274,7 @@ "grokAutoTopUpDisabled": "Hindi Pinagana", "grokAutoTopUpAt": "sa", "grokAutoTopUpAdd": "magdagdag", - "grokAutoTopUpMax": "max", + "grokAutoTopUpMax": "maks.", "grokAutoTopUpMonth": "buwan", "grokAdditionalCredits": "Karagdagang Kredito", "kiloAccountBalance": "Balanse ng Account", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Natitira", "kiloPassRenews": "Magre-renew sa loob ng {count} araw", "kiloPassUsageLabel": "Paggamit ngayong buwan", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Mga Dagdag na Credit sa Paggamit", + "kimiExtraUsage": "Dagdag na Paggamit", + "kimiExtraUsageEnabled": "Naka-enable", + "kimiExtraUsageDisabled": "Naka-disable", + "kimiExtraUsageFrozen": "Naka-freeze", + "kimiExtraUsageUnavailable": "Hindi available", + "kimiMonthlyUsed": "Nagamit ngayong buwan", + "kimiMonthlyLimit": "Buwanang limitasyon", + "kimiMonthlyLimitUnlimited": "Walang limitasyon", + "kimiAdditionalCredits": "Mga Dagdag na Credit", "loggerTab": "Magtotroso", "proxyTab": "Proxy", "budgetManagement": "Pamamahala ng Badyet", @@ -9310,21 +9317,21 @@ "budgetExceeded": "Lumampas sa badyet — maaaring ma-block ang mga kahilingan", "totalRequests": "Kabuuang mga kahilingan", "noDataYet": "Wala pang data", - "latency": "Latency", + "latency": "Pagkaantala", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", + "promptCache": "Cache ng Prompt", "systemHealth": "Kalusugan ng System", "entries": "Mga entry", "activeCount": "{count} aktibo", "openCircuitBreakersDetected": "May nakitang mga bukas na circuit breaker", - "hitRate": "Hit Rate", + "hitRate": "Rate ng Hit", "hitsMisses": "Mga Hit / Miss", "circuitBreakers": "Mga Circuit Breaker", "lockedIPs": "Mga naka-lock na IP", "lockoutsAutoRefreshHint": "Mga lock ng limitasyon sa rate ng bawat modelo • Auto-refresh ng 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# naka-lock} other {# naka-lock}}", "timeLeft": "{time} ang natitira", "howItWorks": "Paano Ito Gumagana", "howItWorksSubtitle": "Alamin kung paano pinapatunayan ng mga pagsusuri ang iyong mga tugon sa LLM", @@ -9343,9 +9350,9 @@ "evalsStrategyRegexDescription": "Bine-validate ang LLM output laban sa isang regular expression pattern.", "evalsStrategyCustomDescription": "Custom na logic ng pagsusuri (naka-configure sa pamamagitan ng JSON).", "historyColumnSuiteName": "Pangalan ng Suite", - "historyColumnTarget": "Target", - "historyColumnPassRate": "Pass Rate", - "historyColumnAvgLatencyMs": "Avg Latency", + "historyColumnTarget": "Layunin", + "historyColumnPassRate": "Rate ng Pagpasa", + "historyColumnAvgLatencyMs": "Average na Latency", "historyColumnCreatedAt": "Naisagawa", "evalSuites": "Mga Suite sa Pagsusuri", "evalSuitesHint": "Mag-click ng suite para tingnan ang mga test case, pagkatapos ay tumakbo para suriin ang iyong mga LLM endpoint", @@ -9354,7 +9361,7 @@ "noEvalSuitesDescription": "Maaaring tukuyin ang mga Eval suite sa pamamagitan ng API o sa code. Sinusubukan nila ang mga output ng modelo laban sa mga inaasahang resulta gamit ang mga diskarte tulad ng contains, regex, eksaktong tugma, at mga custom na function.", "columnCase": "Kaso", "columnStatus": "Katayuan", - "columnLatency": "Latency", + "columnLatency": "Pagkaantala", "columnDetails": "Mga Detalye", "columnModel": "Modelo", "columnStrategy": "Diskarte", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Mga Modelong Sinusuri", "searchSuitesPlaceholder": "Maghanap ng mga suite...", "passSuffix": "pumasa", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# kaso} other {# kaso}}", "runEval": "Patakbuhin mo si Eval", "runAllSuites": "Patakbuhin Lahat", "runAllRunning": "Tumatakbo lahat...", "runAllProgress": "Tumatakbo {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# suite ang nabigo} other {# suite ang nabigo}}", "runAllCompleted": "Tumakbo ng {suites} suite — {passed} nakapasa, {failed} nabigo", "runAllCompletedWithFailures": "Tumakbo ng {completed} suite; Nabigong makumpleto ang {failedSuites}", "runningProgress": "Tumatakbo {current}/{total}...", @@ -9397,12 +9404,12 @@ "notifyAllCasesPassed": "Lahat ng {total} kaso ay pumasa ✅", "notifySomeCasesFailed": "{passed}/{total} nakapasa, {failed} nabigo", "notifyEvalRunFailed": "Nabigo si Eval run", - "notifyEvalTitle": "Eval: {name}", + "notifyEvalTitle": "Pagsusuri: {name}", "modelEvals": "Mga Pagsusuri ng Modelo", "evalsHeroDescription": "Subukan at patunayan ang iyong mga LLM na endpoint sa pamamagitan ng pagpapatakbo ng mga paunang natukoy na evaluation suite. Naglalaman ang bawat suite ng mga test case na nagpapadala ng mga totoong prompt sa pamamagitan ng OmniRoute at naghahambing ng mga tugon sa inaasahang pamantayan — tumutulong sa iyong makakita ng mga regression, maghambing ng mga modelo, at matiyak ang kalidad ng pagtugon sa mga provider.", "qualityValidation": "Pagpapatunay ng Kalidad", "modelComparison": "Paghahambing ng Modelo", - "regressionDetection": "Regression Detection", + "regressionDetection": "Pagtukoy ng Regression", "latencyBenchmarks": "Mga Latency Benchmark", "modelLockouts": "Mga Modelong Lockout", "noLockouts": "Walang mga modelo na kasalukuyang naka-lock", @@ -9423,9 +9430,9 @@ "providerLimits": "Mga Limitasyon ng Provider", "noProviders": "Walang Nakakonektang Provider", "connectProvidersForQuota": "Kumonekta sa mga provider gamit ang OAuth upang subaybayan ang iyong mga limitasyon sa quota ng API at paggamit.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# account} other {# account}}", "filteredFromCount": "(na-filter mula sa {count})", - "autoRefresh": "Auto-refresh", + "autoRefresh": "Awtomatikong pag-refresh", "refreshAll": "I-refresh Lahat", "loadingQuotas": "Naglo-load...", "showMoreQuotas": "Ipakita ang {count} pa", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Hindi ma-update ang visibility ng quota", "account": "Account", "modelQuotas": "Mga Modelong Quota", - "lastUsed": "Last Refreshed", + "lastUsed": "Huling Na-refresh", "actions": "Mga aksyon", "refreshQuota": "I-refresh ang quota", "today": "Ngayong araw", @@ -9444,7 +9451,7 @@ "dayTimeFormat": "{day}, {time}", "inDuration": "sa {duration}", "notApplicable": "N/A", - "rawPlanWithValue": "Raw plan: {plan}", + "rawPlanWithValue": "Raw na plano: {plan}", "noPlanFromProvider": "Walang plano mula sa provider", "tokenExpiresIn": "Mag-eexpire ang token sa loob ng {time}", "tokenExpired": "Expired na ang token", @@ -9452,9 +9459,9 @@ "cardExpand": "I-expand", "cardCollapse": "I-collapse", "moreQuotas": "+{count} pa", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Hindi nakapangkat", + "viewFlat": "Patag", + "viewByEnvironment": "Ayon sa Environment", "noQuotaDataAvailable": "Walang available na data ng quota", "noAccountsForTierFilter": "Walang nahanap na account para sa tier filter", "tierAll": "Lahat", @@ -9470,14 +9477,14 @@ "statTotal": "Kabuuan", "statCritical": "Kritikal", "statAlert": "Alerto", - "statHealthy": "Healthy", + "statHealthy": "Maayos", "filterPurchaseTypeLabel": "Uri", - "filterTierLabel": "Tier", + "filterTierLabel": "Antas", "purchaseAll": "Lahat", "purchaseOauthSub": "Subskripsyon", - "purchaseOauthFree": "OAuth Free", - "purchaseApiKey": "API Key", - "creditsLabel": "Credits", + "purchaseOauthFree": "Libreng OAuth", + "purchaseApiKey": "Susi ng API", + "creditsLabel": "Mga Credit", "creditBalanceHint": "Natitirang balanse", "unlimitedLabel": "Walang limitasyon", "refreshing": "Nagre-refresh", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "I-redeem ang credit", "resetCreditRedeemed": "I-reset ang na-redeem", "resetCreditRedeemFailed": "Bigo sa pag-redeem ng reset credit", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Hindi na-save ang suite", "clone": "I-clone", "exportSuite": "I-export", "importSuite": "Mag-import", @@ -9515,106 +9522,106 @@ "suiteImportInvalid": "Di-wastong eval suite na JSON", "suiteBuilderCloneSuffix": "kopyahin", "suiteBuilderImportedSuite": "Na-import na Suite", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Talaan ng Iskor", + "evalApiKey": "Susi ng API", + "scorecardPassRate": "Rate ng Pagpasa", + "targetTypeModel": "Modelo", + "actualOutputLabel": "Aktuwal na Output", + "evalTargetHint": "Pumili ng modelo o combo na susuriin.", + "suiteBuilderDeleted": "Matagumpay na natanggal ang suite", + "suiteBuilderCaseCardHint": "Tukuyin ang input prompt at mga pamantayan para sa inaasahang output.", + "nextResetUtc": "Susunod na pag-reset (UTC)", + "scorecardHint": "Pinagsama-samang mga rate ng pagpasa sa lahat ng evaluation suite.", + "suiteLatestRunsHint": "Mga pinakabagong evaluation run para sa suite na ito.", + "saving": "Sine-save", + "suiteBuilderCaseModelLabel": "Modelo (opsyonal)", + "evalControlsTitle": "Mga Kontrol sa Evaluation", + "suiteBuilderEditTitle": "I-edit ang Eval Suite", + "suiteBuilderCaseStrategyLabel": "Estratehiya sa Pag-validate", + "notifySelectDifferentCompareTarget": "Mangyaring pumili ng ibang target para sa paghahambing", + "recentRunsHint": "Ipinapakita ang mga pinakabagong evaluation run. Mag-click ng run upang makita ang mga detalyadong resulta.", + "evalCompareHint": "Opsyonal na ihambing ang mga resulta sa pangalawang target.", + "suiteBuilderCaseInvalid": "May mga error sa pag-validate ang kasong ito. Pakitama bago i-save.", + "historyEmpty": "Wala pang kasaysayan ng evaluation", + "suiteBuilderUpdated": "Matagumpay na na-update ang suite", + "resetInterval": "Agwat ng Pag-reset", + "suiteBuilderCreateTitle": "Gumawa ng Eval Suite", + "activePeriodSpend": "Gastos sa Aktibong Panahon", + "evalApiKeyHint": "Piliin kung aling API key ang gagamitin para sa mga kahilingan sa pagsusuri.", + "evalCompareOptional": "Ihambing (opsyonal)", + "suiteBuilderDeleteFailed": "Hindi natanggal ang suite", + "suiteBuilderCaseSystemPromptPlaceholder": "Mga opsyonal na tagubilin ng system...", + "scorecardCases": "Mga Kaso", + "runCompletedWithScore": "Nakumpleto ang pagsusuri — {score}% ang pumasa", + "suiteBuilderCustomBadge": "Pasadya", + "targetSuiteDefaults": "Mga default ng suite", + "suiteBuilderDeleteConfirm": "Sigurado ka bang gusto mong tanggalin ang suite na ito? Hindi na mababawi ang pagkilos na ito.", + "suiteBuilderNameLabel": "Pangalan ng Suite", + "scorecardSuites": "Mga Suite", + "evalCompareTarget": "Target ng Paghahambing", + "suiteBuilderCaseModelPlaceholder": "hal. gpt-4o-mini", + "evalControlsHint": "I-configure ang iyong target sa pagsusuri at API key, pagkatapos ay patakbuhin ang mga suite upang mapatunayan ang kalidad ng modelo.", + "recentRunsTitle": "Mga Kamakailang Pagpapatakbo", + "suiteBuilderCaseSystemPromptLabel": "Prompt ng System", + "suiteBuilderCaseExpectedPlaceholder": "hal. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "hal. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Idikit ang eksaktong inaasahang tugon", "suiteBuilderCaseExpectedPlaceholderRegex": "hal. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Gumamit ng regular na expression ng JavaScript nang hindi binabalot ang mga slash.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", + "suiteBuilderNamePlaceholder": "hal. Suite ng Kalidad ng Coding", + "suiteBuilderAddCase": "Magdagdag ng Kaso", + "cancel": "Kanselahin", + "evalTarget": "Layunin", + "suiteBuilderCaseNameLabel": "Pangalan ng Kaso", + "weeklyLimitUsd": "Lingguhang Limitasyon (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "hal. Sumulat ng fibonacci function sa Python", + "suiteBuilderNameRequired": "Kinakailangan ang pangalan ng suite", + "suiteBuilderCaseUserPromptLabel": "Prompt ng User", + "daily": "Araw-araw", "resultErrorLabel": "Error", "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", - "suiteBuilderDuplicateCase": "Duplicate", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", + "suiteBuilderCaseCardTitle": "Kaso ng Pagsubok", + "suiteBuilderDuplicateCase": "I-duplicate", + "weeklyLimitPlaceholder": "hal. 50.00", + "suiteBuilderCaseTagsHint": "Mga tag na pinaghihiwalay ng kuwit para sa pag-aayos ng mga test case.", + "notifyEvalRunFailedWithReason": "Nabigo ang pagsusuri: {reason}", + "weekly": "Lingguhan", + "runEvalRunning": "Isinasagawa ang pagsusuri...", + "delete": "Tanggalin", + "resetTimeUtc": "Oras ng Pag-reset (UTC)", + "evalApiKeyAuto": "Awtomatiko (gamitin ang default)", + "suiteBuilderDescriptionPlaceholder": "Opsyonal na paglalarawan ng sinusuri ng suite na ito...", + "targetComparisonTitle": "Paghahambing ng Target", + "save": "I-save", + "suiteBuilderCreated": "Matagumpay na nagawa ang suite", + "suiteLatestRuns": "Mga Pinakabagong Run", + "suiteBuilderCaseExpectedLabel": "Inaasahang Halaga", + "historyLatency": "Pagkaantala", + "suiteBuilderCaseTagsPlaceholder": "hal. coding, python", + "targetTypeCombo": "Kombinasyon", + "scorecardPassed": "Pumasa", + "suiteBuilderCaseTagsLabel": "Mga Tag", + "suiteBuilderNewSuite": "Bagong Suite", + "notifyEvalLoadFailed": "Hindi ma-load ang data ng pagsusuri", + "notConfigured": "Hindi Naka-configure", + "suiteBuilderCaseNamePlaceholder": "hal. Python fibonacci test", + "intervalLabel": "Agwat", + "suiteBuilderCreateAction": "Gumawa ng Suite", + "suiteBuilderCasesHint": "Nagpapadala ang bawat kaso ng prompt at bina-validate ang tugon.", + "suiteBuilderUpdatedAt": "Na-update", "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "suiteBuilderCasesTitle": "Mga Test Case", + "edit": "I-edit", + "monthly": "Buwanan", + "suiteBuilderCasesRequired": "Kailangan ng kahit isang test case", + "weeklyLimitSummary": "Buod ng lingguhang limitasyon sa badyet", + "suiteBuilderDescriptionLabel": "Paglalarawan", + "targetComparisonHint": "Magkatabing paghahambing ng mga resulta ng pagsusuri sa pagitan ng mga target.", + "compareCompletedWithScore": "Nakumpleto ang paghahambing — {score}% ang antas ng pagpasa", + "staleQuotaTooltip": "Nabigo ang huling pag-refresh — ipinapakita ang naka-cache na data", "quotaThresholdLabel": "Umalis si Min", "quotaCutoffsColumnHelp": "Ihinto ang mga kahilingan kapag ang natitirang quota ay bumaba sa porsyentong ito o mas mababa.", - "quotaCutoffsButtonDefault": "Default", + "quotaCutoffsButtonDefault": "Paunang Itinakda", "quotaCutoffsButtonHelp": "I-edit ang pinakamababang natitirang quota cutoff para sa account na ito.", "quotaCutoffsButtonDisabled": "Wala pang quota window para sa account na ito.", "deactivateAccount": "I-deactivate ang account (ihinto ang routing)", @@ -9630,7 +9637,7 @@ "quotaThresholdInvalid": "Maglagay ng buong numero mula 0 hanggang 100.", "budgetKpiToday": "Ngayong araw", "budgetKpiThisMonth": "Ngayong buwan", - "budgetKpiProjEom": "Proj EOM", + "budgetKpiProjEom": "Tinatayang EOM", "budgetKpiBlocked": "Na-block", "budgetKpiAtRisk": "Nanganganib", "budgetKpiActiveKeys": "Mga aktibong key", @@ -9650,8 +9657,8 @@ "budgetTemplateApplied": "Nailapat ang \"{template}\" sa {count, plural, one {# key} other {# na key}}", "budgetTemplateApplyFailed": "Bigo sa paglapat ng template", "budgetTemplateNames": { - "tpl-prod": "Production", - "tpl-dev": "Development", + "tpl-prod": "Produksyon", + "tpl-dev": "Pag-develop", "tpl-ci": "CI" }, "budgetStatus": { @@ -9662,10 +9669,10 @@ "safe": "Ligtas", "no-limit": "Walang limitasyon" }, - "budgetColumnKey": "Key", + "budgetColumnKey": "Susi", "budgetColumnToday": "Ngayong araw", "budgetColumnMonth": "Buwan", - "budgetColumnStatus": "Status", + "budgetColumnStatus": "Katayuan", "budgetSearchKeysPlaceholder": "Mga susi sa paghahanap...", "budgetSortPctUsed": "Pagbukud-bukurin: % Ginamit ↓", "budgetSortTodayDollar": "Pagbukud-bukurin: Ngayon $ ↓", @@ -9677,7 +9684,7 @@ "percentUsed": "{pct}% ang nagamit", "budgetLoading": "Naglo-load…", "budgetNoKeysMatch": "Walang mga key na tumutugma sa mga filter", - "budgetLinearExtrapolation": "linear extrapolation", + "budgetLinearExtrapolation": "linyar na ekstrapolasyon", "budgetThisMonthSoFar": "Ngayong buwan hanggang ngayon", "budgetProjectedEndOfMonth": "Inaasahang katapusan ng buwan", "budgetByProvider": "ng provider", @@ -9745,7 +9752,7 @@ "proxy": "Proxy", "level": "Antas", "directNative": "Direkta (katutubo)", - "combo": "Combo", + "combo": "Kombinasyon", "inputTokens": "ako:", "outputTokens": "O:" }, @@ -9756,7 +9763,7 @@ "usageByModel": "Paggamit ayon sa Modelo", "usageByAccount": "Paggamit ayon sa Account", "failedToLoad": "Nabigong i-load ang mga istatistika ng paggamit.", - "tokenHealth": "Token Health", + "tokenHealth": "Kalagayan ng Token", "totalOAuth": "Kabuuang OAuth", "healthy": "Malusog", "warning": "Babala", @@ -9776,9 +9783,9 @@ }, "systemMonitor": { "metricsAriaLabel": "Mga Sukat ng Sistema", - "memory": "Memory", + "memory": "Memorya", "memoryShort": "mem", - "uptime": "Uptime", + "uptime": "Tagal ng Pagpapatakbo", "ariaLabel": "Pagsubaybay sa Sistema", "title": "Tagasubaybay ng Sistema", "version": "Bersyon", @@ -9835,7 +9842,7 @@ "copyUrlManual": "Mangyaring kopyahin ang URL mula sa address bar at i-paste ito sa application.", "accessDeniedDescription": "Wala kang pahintulot na i-access ang mapagkukunang ito. Suriin ang iyong API key o makipag-ugnayan sa administrator.", "goToDashboard": "Pumunta sa Dashboard", - "featureMultiProviderTitle": "Multi-Provider", + "featureMultiProviderTitle": "Maramihang Provider", "featureMultiProviderDesc": "OpenAI, Anthropic, Google, at higit pa", "featureLoadBalancingTitle": "Pagbabalanse ng Load", "featureLoadBalancingDesc": "Ipamahagi ang mga kahilingan nang matalino", @@ -9863,7 +9870,7 @@ "backToLogin": "Bumalik sa Login", "forgotPassword": "Nakalimutan ang password?", "continueWithOidc": "Magpatuloy gamit ang OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Default na password: CHANGEME (maliban kung itinakda ang INITIAL_PASSWORD)", "Authorization": "Awtorisasyon", "Content-Disposition": "Nilalaman-Disposisyon", "waitingForAuthorization": "Naghihintay ng awtorisasyon...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Naghihintay ng awtorisasyon sa Antigravity...", "waitingForQoderAuthorization": "Naghihintay ng awtorisasyon ng Qoder...", "exchangingCodeForTokens": "Pagpapalit ng code para sa mga token...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Hindi Tugmang Bersyon ng Node.js", + "nodeIncompatibleDesc": "Gumagamit ka ng Node.js {version}, na hindi saklaw ng sinusuportahang patakaran ng OmniRoute para sa ligtas na runtime. Gumamit ng na-patch na release ng Node.js 20.x o 22.x LTS.", + "nodeIncompatibleFixLabel": "Ayusin: mag-install ng na-patch na release ng Node.js 22 LTS", + "nodeIncompatibleHint": "Kinakailangan ng OmniRoute ang Node.js 22.22.2+ (22.x LTS) o 24.0.0+ (24.x LTS). Inirerekomenda ang Node 24 LTS.", "resetViaAppDataTitle": "I-reset sa pamamagitan ng App Data", "resetViaAppDataDescription": "Tanggalin ang settings file mula sa app data directory upang i-reset ang iyong password:", "quitDesktopApp": "Ganap na isara ang OmniRoute desktop app", @@ -9933,7 +9940,7 @@ "navigateHome": "Mag-navigate sa bahay", "toggleMenu": "I-toggle ang menu", "featuresLink": "Mga tampok", - "docsLink": "Docs", + "docsLink": "Mga Dokumento", "github": "GitHub", "versionLive": "v1.0 ay live na ngayon", "oneEndpoint": "Isang Endpoint para sa", @@ -9947,13 +9954,13 @@ "featureUnifiedEndpointDesc": "I-access ang lahat ng provider sa pamamagitan ng iisang standard API URL.", "featureEasySetupTitle": "Madaling Setup", "featureEasySetupDesc": "Bumangon at tumakbo sa loob ng ilang minuto gamit ang npx command.", - "featureModelFallbackTitle": "Model Fallback", + "featureModelFallbackTitle": "Fallback ng Modelo", "featureModelFallbackDesc": "Awtomatikong ilipat ang mga provider sa pagkabigo o mataas na latency.", "featureUsageTrackingTitle": "Pagsubaybay sa Paggamit", "featureUsageTrackingDesc": "Detalyadong analytics at pagsubaybay sa gastos sa lahat ng modelo.", "featureOAuthApiKeysTitle": "Mga OAuth at API Key", "featureOAuthApiKeysDesc": "Ligtas na pamahalaan ang mga kredensyal sa isang vault.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Pag-sync sa Cloud", "featureCloudSyncDesc": "I-sync kaagad ang iyong mga configuration sa mga device.", "featureCliSupportTitle": "Suporta sa CLI", "featureCliSupportDesc": "Gumagana sa Claude Code, Codex, Cline, Cursor, at higit pa.", @@ -9988,7 +9995,7 @@ "dataLocationWindows": "Windows:", "product": "produkto", "dashboardLink": "Dashboard", - "changelog": "Changelog", + "changelog": "Talaan ng mga Pagbabago", "resources": "Mga mapagkukunan", "documentation": "Dokumentasyon", "npm": "NPM", @@ -10031,20 +10038,20 @@ "supportedProvidersToc": "Mga provider", "commonUseCases": "Mga Karaniwang Paggamit", "clientCompatibility": "Pagkakatugma ng Kliyente", - "protocolsToc": "Protocols", + "protocolsToc": "Mga Protocol", "apiReference": "Sanggunian ng API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Sanggunian ng Management API", + "managementApiDescription": "Mga endpoint ng automation para sa registry ng proxy, mga pagtatalaga ng saklaw, at paglipat ng legacy proxy.", "method": "Pamamaraan", "path": "Daan", "notes": "Mga Tala", "modelPrefixes": "Mga Prefix ng Modelo", - "prefix": "Prefix", + "prefix": "Unlapi", "troubleshooting": "Pag-troubleshoot", "supportsChat": "Sinusuportahan ang parehong chat at mga tugon na endpoint.", "oauthAutoRefresh": "OAuth na koneksyon na may awtomatikong pag-refresh ng token.", "fullStreaming": "Buong suporta sa streaming para sa lahat ng mga modelo.", - "docsLabel": "Docs", + "docsLabel": "Mga Dokumento", "docsHeroDescription": "AI gateway para sa mga multi-provider na LLM. Isang endpoint para sa OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor, at 20+ pang provider.", "openDashboard": "Buksan ang Dashboard", "endpointPage": "Pahina ng Endpoint", @@ -10068,14 +10075,14 @@ "deployElectronText": "Patakbuhin ang OmniRoute bilang isang katutubong desktop application sa Windows, macOS, at Linux.", "deployDockerTitle": "Docker", "deployDockerText": "Containerized deployment gamit ang Docker Compose; handa na para sa mga stack ng produksyon at Kubernetes.", - "deployVmTitle": "Virtual Machine", + "deployVmTitle": "Birtuwal na Makina", "deployVmText": "Self-host sa anumang Linux VM. Kasama ang systemd unit, log rotation, at backup tooling.", "deployFlyTitle": "Fly.io", "deployFlyText": "I-deploy sa Fly.io edge runtime na may isang fly.toml at isang command sa pag-deploy.", "deployPwaTitle": "PWA", "deployPwaText": "I-install ang OmniRoute bilang Progressive Web App sa Android, iOS, at mga desktop browser.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Patakbuhin ang OmniRoute nang headless sa Android sa pamamagitan ng Termux. I-access ang dashboard mula sa iyong mobile browser.", "featureRoutingTitle": "Pagruruta ng Multi-Provider", "featureRoutingText": "Iruta ang mga kahilingan sa 30+ AI provider sa pamamagitan ng isang endpoint na katugma sa OpenAI. Sinusuportahan ang chat, mga tugon, audio, at image API.", "featureCombosTitle": "Combos at Balanse", @@ -10086,18 +10093,18 @@ "featureAnalyticsText": "Visual analytics na may mga chart para sa mga kahilingan, token, error, latency, gastos, at kasikatan ng modelo sa paglipas ng panahon.", "featureHealthTitle": "Pagsubaybay sa Kalusugan", "featureHealthText": "Mga live na pagsusuri sa kalusugan, status ng provider, mga estado ng circuit breaker, at awtomatikong pagtukoy ng limitasyon sa rate na may exponential backoff.", - "featureCliTitle": "CLI Tools", + "featureCliTitle": "Mga CLI Tool", "featureCliText": "Pamahalaan ang mga configuration ng IDE, pag-export/pag-import ng mga backup, pagtuklas ng mga profile ng codex, at pag-configure ng mga setting mula sa dashboard.", "featureSecurityTitle": "Seguridad at Mga Patakaran", "featureSecurityText": "Pagpapatotoo ng key ng API, pag-filter ng IP, agarang pagbabantay sa iniksyon, mga patakaran sa domain, pamamahala ng session, at pag-log ng audit.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Pag-sync sa Cloud", "featureCloudSyncText": "I-sync ang iyong configuration sa Cloudflare Workers para sa malayuang pag-access gamit ang mga naka-encrypt na kredensyal at awtomatikong failover.", "providersAcrossConnectionTypes": "{count} provider sa tatlong uri ng koneksyon.", "manageProviders": "Pamahalaan ang mga Provider", "providersCount": "{count} provider", "providerTypeFree": "Libreng Tier", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "Susi ng API", "useCaseSingleEndpointTitle": "Isang endpoint para sa maraming provider", "useCaseSingleEndpointText": "Ituro ang mga kliyente sa isang base URL at ruta ayon sa prefix ng modelo (halimbawa: gh/, cc/, kr/, openai/).", "useCaseFallbackTitle": "Fallback at paglipat ng modelo na may mga combo", @@ -10105,7 +10112,7 @@ "useCaseUsageVisibilityTitle": "Pagpapakita ng paggamit, gastos at pag-debug", "useCaseUsageVisibilityText": "Subaybayan ang mga token at gastos ayon sa provider, account, at API key sa mga tab na Paggamit at Analytics.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "Batayang URL", "chatEndpointLabel": "Endpoint ng chat", "modelRecommendationLabel": "Rekomendasyon ng modelo: tahasang prefix", "clientCodexTitle": "Mga Modelong Copilot ng Codex / GitHub", @@ -10119,7 +10126,7 @@ "clientClaudeTitle": "Claude Code / Antigravity", "clientClaudeBullet1Prefix": "Gamitin", "clientClaudeBullet1Middle": "(Claude) o", - "clientClaudeBullet1Suffix": "(Antigravity) prefix.", + "clientClaudeBullet1Suffix": "Prefix na (Antigravity).", "clientWindsurfTitle": "Windsurf", "clientWindsurfBullet1": "Gamitin ang OmniRoute bilang isang base URL na katugma sa OpenAI at panatilihin ang mga tahasang prefix ng provider para sa tiyak na pagruruta.", "clientWindsurfBullet2": "Ituro ang mga modelo sa `/v1/chat/completions` para sa pangkalahatang trapiko at panatilihin ang `/v1/responses` para sa Codex-style na mga daloy.", @@ -10144,30 +10151,30 @@ "protocolA2aStep1": "Basahin ang `/.well-known/agent.json` para sa pagtuklas ng ahente.", "protocolA2aStep2": "Ipadala ang `message/send` o `message/stream` ng mga kahilingan sa `POST /a2a`.", "protocolA2aStep3": "Pamahalaan ang lifecycle ng gawain sa `tasks/get` at `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", + "protocolTroubleshootingTitle": "Pag-troubleshoot ng Protocol", "protocolTroubleshooting1": "Kung offline ang status ng MCP, i-verify na tumatakbo ang proseso ng stdio at nag-a-update ang heartbeat file.", "protocolTroubleshooting2": "Kung mananatili ang mga gawain sa A2A sa `working`, siyasatin ang `/api/a2a/tasks/:id` at i-stream ang mga kaganapan para sa estado ng terminal.", "protocolTroubleshooting3": "Gamitin ang `/dashboard/mcp` at `/dashboard/a2a` para sa operational controls at audit visibility.", - "endpointChatNote": "OpenAI-compatible chat endpoint (default).", + "endpointChatNote": "Chat endpoint na compatible sa OpenAI (default).", "endpointResponsesNote": "Endpoint ng Responses API (Codex, o-series).", "endpointModelsNote": "Catalog ng modelo para sa lahat ng konektadong provider.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", + "endpointAudioNote": "Transkripsiyon ng audio (Deepgram, AssemblyAI).", "endpointSpeechNote": "Pagbuo ng text-to-speech (ElevenLabs, OpenAI TTS).", "endpointEmbeddingsNote": "Pagbuo ng text embed (OpenAI, Cohere, Voyage).", "endpointImagesNote": "Pagbuo ng larawan (NanoBanana).", "endpointRewriteChatNote": "Isulat muli ang helper para sa mga kliyenteng walang /v1.", "endpointRewriteResponsesNote": "Isulat muli ang helper para sa Mga Tugon na walang /v1.", "endpointRewriteModelsNote": "Isulat muli ang helper para sa pagtuklas ng modelo nang walang /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Ilista ang mga naka-save na proxy registry item (sinusuportahan ang pagination).", + "mgmtProxiesCreateNote": "Gumawa ng reusable na proxy item sa registry.", + "mgmtProxiesHealthNote": "Kunin ang 24h/rolling na mga sukatan ng kalagayan ng bawat naka-save na proxy mula sa mga proxy log.", + "mgmtProxiesBulkAssignNote": "Magtalaga o mag-clear ng isang proxy sa maraming scope ID sa isang request.", + "mgmtAssignmentsListNote": "Ilista ang mga pagtatalaga ng proxy ayon sa scope, scope_id, o proxy_id.", + "mgmtAssignmentsUpdateNote": "Magtalaga o mag-clear ng proxy para sa global/provider/account/combo scope.", + "mgmtLegacyMigrationNote": "I-import ang mga legacy na proxyConfig map sa mga pagtatalaga sa registry.", "modelPrefixesDescriptionStart": "Gamitin ang prefix ng provider bago ang pangalan ng modelo para mag-ruta sa isang partikular na provider. Halimbawa:", "modelPrefixesDescriptionEnd": "mga ruta sa GitHub Copilot.", - "provider": "Provider", + "provider": "Tagapagbigay", "type": "Uri", "troubleshootingModelRouting": "Kung nabigo ang kliyente sa pagruruta ng modelo, gumamit ng tahasang provider/modelo (halimbawa: gh/gpt-5.1-codex).", "troubleshootingAmbiguousModels": "Kung nakatanggap ka ng hindi malinaw na mga error sa modelo, pumili ng prefix ng provider sa halip na isang hubad na ID ng modelo.", @@ -10215,7 +10222,7 @@ "mcpToolsMemoryDesc": "Maghanap, magdagdag, at i-clear ang patuloy na mga entry sa memorya ng pakikipag-usap.", "mcpToolsSkillsTitle": "Mga kasanayan", "mcpToolsSkillsDesc": "Ilista, paganahin, isagawa, at subaybayan ang mga pasadyang pagpapatupad ng kasanayan.", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "Awtomatikong Combo", "featureAutoComboText": "Awtomatikong gumawa ng mga naka-optimize na combo batay sa iyong mga konektadong provider, mga pattern ng paggamit, at mga kakayahan ng modelo.", "featureSearchTitle": "Paghahanap sa Web", "featureSearchText": "Pinagsamang paghahanap sa web na may 5 provider (Serper, Brave, Exa, Tavily, Perplexity) kasama ang analytics at pagsubaybay sa gastos.", @@ -10230,10 +10237,10 @@ "protocolAcpStep1": "Mag-navigate sa Dashboard → Mga Ahente upang tingnan ang mga nakarehistrong ahente ng ACP.", "protocolAcpStep2": "Magrehistro ng mga bagong ahente na may mga kakayahan at pagsasaayos ng endpoint.", "protocolAcpStep3": "Gumamit ng CLI Tools para i-configure ang mga channel ng komunikasyon ng ahente.", - "metadataTitleTemplate": "%s — OmniRoute Docs", + "metadataTitleTemplate": "%s — Mga Dokumento ng OmniRoute", "metadataDefaultTitle": "OmniRoute Dokumentasyon", "metadataDescription": "Komprehensibong dokumentasyon para sa OmniRoute AI gateway — setup, API, compression, deployment, at iba pa.", - "layoutNavTitle": "OmniRoute Docs", + "layoutNavTitle": "Mga Dokumento ng OmniRoute", "layoutHomeLink": "Tahanan ng Docs", "layoutDashboardLink": "← Bumalik sa Dashboard", "homeTitle": "OmniRoute Dokumentasyon", @@ -10251,19 +10258,19 @@ "nonTechUsersSubtitle": "Magsimula nang mabilis — walang kinakailangang teknikal na kaalaman", "techUsersTitle": "Para sa mga Tech User", "techUsersSubtitle": "Malalim na pagsisid sa arkitektura, APIs, at mga panloob", - "apiExplorerMetadataTitle": "API Explorer — OmniRoute Docs", + "apiExplorerMetadataTitle": "API Explorer — Mga Dokumento ng OmniRoute", "apiExplorerMetadataDescription": "Interactive API explorer — subukan ang OmniRoute endpoints nang live na may real-time na mga tugon", - "apiExplorerTitle": "API Explorer", + "apiExplorerTitle": "Pantuklas ng API", "apiExplorerDescription": "Subukan ang mga endpoint ng OmniRoute nang live. Pumili ng isang endpoint, i-configure ang iyong kahilingan, at tingnan ang tugon sa real time.", "apiExplorerSseStarted": "Nagsimula ang SSE stream — tingnan ang terminal/devtools para sa real-time na output.", "apiExplorerError": "Error: {message}", - "apiExplorerAuth": "auth", + "apiExplorerAuth": "pagpapatunay", "apiExplorerResponseLabel": "Tugon", "apiExplorerSelectEndpoint": "Pumili ng isang endpoint na susuriin", "apiExplorerChooseApi": "Pumili ng isang API mula sa sidebar upang makita ang mga detalye at subukan ito nang live", "feedbackThanks": "Salamat sa iyong puna!", "feedbackQuestion": "Nakatulong ba ang pahinang ito?", - "pageMetadataTitle": "{title} — OmniRoute Docs", + "pageMetadataTitle": "{title} — Mga Dokumento ng OmniRoute", "pageMetadataDescription": "Dokumentasyon ng OmniRoute: {title}", "breadcrumb": "Tinapay na Pangkagat", "apiReferenceTable": { @@ -10295,7 +10302,7 @@ "policyLastUpdatedDate": "Pebrero 13, 2026", "listSeparator": "-", "questionsVisit": "Mga tanong? Bisitahin ang aming", - "githubRepository": "GitHub repository", + "githubRepository": "Repository sa GitHub", "privacySection1Title": "1. Lokal-Unang Arkitektura", "privacySection1Text": "Ang OmniRoute ay idinisenyo bilang isang local-first application. Ang lahat ng pagproseso at pag-iimbak ng data ay ganap na nangyayari sa iyong makina. Walang sentralisadong server na kumukolekta ng iyong impormasyon.", "privacySection2Title": "2. Data na Iniimbak Namin", @@ -10330,41 +10337,41 @@ "termsDataStoredLocally": "Ang lahat ng data ay lokal na nakaimbak sa iyong makina sa isang database ng SQLite.", "termsNoTransmission": "Ang OmniRoute ay hindi nagpapadala ng anumang data sa mga panlabas na server maliban kung tahasan mong pinagana ang mga feature ng cloud sync.", "termsDataLocationText": "Ang mga log ng paggamit, API key, at configuration ay naka-store sa", - "termsSection5Title": "5. Disclaimer", + "termsSection5Title": "5. Pagtatatwa", "termsSection5Text": "Ang OmniRoute ay ibinigay \"as is\" nang walang anumang uri ng warranty. Hindi kami mananagot para sa anumang mga gastos na natamo sa pamamagitan ng paggamit ng API, pagkaantala ng serbisyo, o pagkawala ng data. Palaging panatilihin ang mga backup ng iyong configuration.", "termsSection6Title": "6. Open Source", "termsSection6Text": "Ang OmniRoute ay open-source na software. Malaya kang suriin, baguhin, at ipamahagi ito sa ilalim ng mga tuntunin ng lisensya nito." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "Mga CLI Agent", + "description": "Tuklasin ang mga naka-install na CLI agent sa iyong system. Magdagdag ng mga custom na agent para sa awtomatikong pag-detect.", + "refresh": "I-refresh", + "installed": "Naka-install", + "notFound": "Hindi Natagpuan", + "builtIn": "Nakapaloob", + "custom": "Pasadya", + "remove": "Alisin", + "addCustomAgent": "Magdagdag ng Custom na Agent", + "addCustomAgentDesc": "Irehistro ang anumang CLI tool para sa pag-detect. Awtomatiko itong i-scan kapag nag-refresh.", + "agentName": "Pangalan ng Agent", + "binaryName": "Pangalan ng Binary", + "versionCommand": "Command ng Bersyon", + "spawnArgs": "Mga Argumento sa Pag-spawn", + "addAgent": "Magdagdag ng Agent", + "scanning": "Ini-scan ang system para sa mga CLI agent...", + "opencodeIntegration": "Integrasyon ng OpenCode", + "opencodeDetected": "Natukoy ang opencode {version}", + "opencodeDesc": "Bumuo ng handa nang gamiting {configFile} gamit ang iyong OmniRoute base URL at lahat ng available na modelo — ilagay ito sa root ng iyong proyekto at patakbuhin ang {command}.", + "downloadConfig": "I-download ang {file}", + "downloaded": "Na-download na!", + "setupGuideTitle": "Gabay sa pag-setup", + "openCliTools": "Buksan ang Mga CLI Tool", + "setupGuideDetectCliTitle": "Tukuyin ang mga naka-install na CLI", + "setupGuideDetectCliDesc": "I-click ang Refresh pagkatapos mag-install o mag-update ng CLI upang muling ma-scan ng OmniRoute ang mga binary at bersyon.", + "setupGuideCustomAgentTitle": "Irehistro ang custom na binary", + "setupGuideCustomAgentDesc": "Gamitin ang Add Custom Agent kapag wala sa built-in na listahan ang iyong CLI. Ilagay ang pangalan ng binary at command ng bersyon.", + "setupGuideCommandMissingTitle": "Ayusin ang 'command not found'", + "setupGuideCommandMissingDesc": "Tiyaking umiiral sa PATH ang CLI command, magbukas ng bagong terminal session, at patakbuhin muli ang Refresh.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10387,7 +10394,7 @@ "comparisonAgentsDesc": "Ang OmniRoute ay maaaring magpalabas ng mga lokal na CLI binary (claude, codex, goose) bilang execution backends. Pinoproseso ng tool ng CLI ang kahilingan gamit ang sarili nitong pagpapatunay at ibinabalik ang resulta.", "comparisonSummary": "Sa madaling salita: CLI Tools = iko-configure mo ang mga tool upang tumuro sa OmniRoute. Mga Target ng Ahente = Gumagamit ang OmniRoute ng mga tool bilang mga endpoint nito.", "agentUseCaseHint": "Maaaring gamitin bilang target ng pagpapatupad sa pamamagitan ng ACP protocol", - "flowDiagramClient": "Client App", + "flowDiagramClient": "Aplikasyon ng Kliyente", "flowDiagramClientDesc": "SDK, API, o upstream na serbisyo", "flowDiagramOmniRoute": "OmniRoute", "flowDiagramOmniRouteDesc": "Tumatanggap ng kahilingan at pumipili ng target", @@ -10483,7 +10490,7 @@ }, "activityTypes": { "plan": "Plano", - "command": "Command", + "command": "Utos", "code_change": "Pagbabago sa code", "message": "Mensahe", "error": "Error", @@ -10492,13 +10499,13 @@ }, "templateNames": { "simple-chat": "Simpleng Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", + "streaming": "Pag-stream", + "system-prompt": "Prompt ng System", "thinking": "Nag-iisip", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "tool-calling": "Pagtawag sa Tool", + "multi-turn": "Maramihang Turn", "vision": "Pangitain", - "schema-coercion": "Schema Coercion" + "schema-coercion": "Pag-coerce ng Schema" }, "templateDescriptions": { "simple-chat": "Pangunahing template ng chat na may mensahe ng system", @@ -10538,102 +10545,102 @@ } }, "cache": { - "title": "Cache Management", + "title": "Pamamahala ng Cache", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "I-refresh", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Mga Entry sa Memorya", + "memoryEntriesSub": "In-memory na LRU", + "dbEntries": "Mga Entry sa DB", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Mga Cache Hit", + "cacheHitsSub": "sa kabuuang {total}", + "tokensSaved": "Mga Natipid na Token", + "tokensSavedSub": "Tinantya mula sa mga hit", + "hitRate": "Rate ng Hit", + "performance": "Pagganap ng Cache", + "autoRefresh": "Awtomatikong nagre-refresh bawat {seconds}s", + "hits": "Mga Hit", + "misses": "Mga Miss", + "total": "Kabuuan", + "behavior": "Gawi ng Cache", + "behaviorDeterministic": "Tanging mga non-streaming na request na may temperature=0 ang naka-cache.", + "behaviorBypass": "I-bypass gamit ang header na {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "Default na TTL: 30 minuto. I-configure gamit ang {envVar}.", + "idempotency": "Layer ng Idempotency", + "activeDedupKeys": "Mga Aktibong Dedup Key", + "dedupWindow": "Palugit ng Dedup", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Hindi na-clear ang cache.", + "unavailable": "Hindi available ang cache", + "unavailableDesc": "Hindi makuha ang mga istatistika ng cache. Tiyaking tumatakbo ang server.", "loadingCacheAria": "Nilo-load ang cache", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Prompt Cache (Sa Panig ng Provider)", + "semanticCache": "Semantikong Cache", + "promptCacheSectionDesc": "Ipinapakita ang aktibidad ng prompt caching sa panig ng provider mula sa history ng paggamit upang makita mo kung saan aktibo ang cache control at kung gaano karaming input ang muli mong nagagamit.", + "promptTrendDesc": "Oras-oras na dami ng request, saklaw ng cache, at dami ng pagbasa sa cache sa nakalipas na 24 na oras.", + "cachedRequests": "Mga Naka-cache na Request", + "cachedRequests24h": "Mga Naka-cache na Request (24h)", + "cacheHitRate": "Rate ng Cache Hit", + "cacheRate": "Rate ng Cache", + "cacheRateDesc": "ng kabuuang mga request", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Mga Sukatan ng Prompt Cache", + "withCacheControl": "May Cache Control", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Ratio ng Muling Paggamit ng Cache", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Tinatayang Natipid na Gastos", + "lastUpdated": "Huling na-update", + "hoursTracked": "oras na sinusubaybayan", + "busiestHour": "Pinakaabalang Oras", + "peakCacheRate": "Pinakamataas na Rate ng Cache", + "trendHour": "Oras", + "activityVolume": "Aktibidad", + "requestsShort": "mga request", + "inputShort": "Input", + "cachedShort": "Naka-cache", + "writeShort": "Pagsulat", + "resetting": "Nire-reset...", + "resetMetrics": "I-reset ang Mga Sukatan", + "byProvider": "Detalye ayon sa Provider", + "providerCacheRateDesc": "Ipinapakita ng bawat provider ang kabuuang mga input token, cache read token, at cache write token upang maihambing mo ang ratio ng muling paggamit sa mga aktuwal na kabuuan.", "provider": "Provider", - "requests": "Requests", + "requests": "Mga Kahilingan", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", - "tableProvider": "Provider", + "trend24h": "Trend ng Cache (24h)", + "peakCached": "Pinakamataas na naka-cache", + "cached": "Naka-cache", + "overview": "Pangkalahatang-ideya", + "tableProvider": "Tagapagbigay", "tableModel": "Modelo", "performanceTitle": "Pagganap", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "Sariling deterministic response cache ng OmniRoute. Kapag naka-enable, ang mga nauulit na non-streaming na kahilingang may temperature=0 ay maaaring tugunan nang lokal nang hindi kumokonekta sa upstream provider.", + "semanticCacheDisabledDesc": "Naka-disable ang semantic cache. Hindi muna muling gagamit ang OmniRoute ng mga lokal na tugon hanggang sa i-enable mo itong muli sa Settings.", + "semanticEntriesDesc": "Mga naka-save na tala ng semantic cache na kasalukuyang nakaimbak sa SQLite. Hindi nakalista rito ang aktibidad ng prompt cache sa panig ng provider.", + "searchEntries": "Maghanap ng mga entry...", + "search": "Maghanap", + "loading": "Naglo-load...", + "entriesLoadError": "Hindi na-load ang mga entry ng semantic cache.", + "noEntries": "Walang nakitang mga entry sa cache", + "noPromptCacheData": "Wala pang naitalang aktibidad ng prompt cache sa panig ng provider.", + "noTrendData": "Walang naitalang aktibidad ng prompt cache sa nakalipas na 24 na oras.", + "signature": "Lagda", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", - "reasoningCache": "Reasoning Replay", + "created": "Ginawa", + "expires": "Mag-e-expire", + "actions": "Mga Aksyon", + "deduplicatedRequests": "Mga Na-deduplicate na Kahilingan", + "savedCalls": "Mga Natipid na API Call", + "totalProcessed": "Kabuuang Naprosesong Kahilingan", + "disabled": "Naka-disable", + "totalRequests": "Kabuuang Mga Kahilingan", + "reasoningCache": "Pag-replay ng Reasoning", "reasoningCacheDesc": "Pinapanatili ang pag-iisip ng modelo para sa mga daloy ng pagtawag sa tool na multi-turn", "reasoningEntries": "Mga Aktibong Entry", "reasoningReplayRate": "Rate ng Replay", @@ -10643,7 +10650,7 @@ "reasoningByProvider": "Sa pamamagitan ng Provider", "reasoningByModel": "Sa pamamagitan ng Modelo", "reasoningRecentEntries": "Mga Kamakailang Entri", - "reasoningToolCallId": "Tool Call ID", + "reasoningToolCallId": "ID ng Tool Call", "reasoningChars": "Mga tauhan", "reasoningAge": "Edad", "reasoningView": "Tingnan", @@ -10659,22 +10666,22 @@ "reasoningClearError": "Nabigong i-clear ang cache ng pangangatwiran", "reasoningNoData": "Wala pang naka-cache na mga entry sa pangangatwiran. Lumilitaw ang mga entry kapag gumagamit ng tool calling ang mga iniisip na modelo.", "cachePerformanceRetry": "Subukan muli", - "cachePerformanceHitRate": "Hit Rate", - "cachePerformanceAvgLatency": "Avg Latency (ms)", - "cachePerformanceP95Latency": "p95 Latency (ms)", + "cachePerformanceHitRate": "Rate ng Cache Hit", + "cachePerformanceAvgLatency": "Average na Latency (ms)", + "cachePerformanceP95Latency": "p95 na Latency (ms)", "retry": "Subukan muli", - "reasoningAvgChars": "Avg Chars", + "reasoningAvgChars": "Average na Mga Character", "tableShare": "Ibahagi", "justNow": "ngayon lang", "minutesAgo": "{minutes}m ang nakalipas", "hoursAgo": "{hours}h ang nakalipas", "daysAgo": "{days}d ang nakalipas", - "entries": "Entries" + "entries": "Mga Entry" }, "proxyConfigModal": { - "levelGlobal": "Global", - "levelProvider": "Provider", - "levelCombo": "Combo", + "levelGlobal": "Pangkalahatan", + "levelProvider": "Tagapagbigay", + "levelCombo": "Kombinasyon", "levelKey": "Susi", "levelDirect": "Direkta (walang proxy)", "titleGlobal": "Pandaigdigang Proxy Configuration", @@ -10683,15 +10690,15 @@ "inheritingFrom": "Nagmana mula sa", "source": "Pinagmulan", "savedProxy": "Naka-save na Proxy", - "custom": "Custom", + "custom": "Pasadya", "selectSavedProxyPlaceholder": "Piliin ang naka-save na proxy...", "proxyType": "Uri ng Proxy", "host": "Host", "hostPlaceholder": "1.2.3.4 o proxy.example.com", "port": "Port", "authOptional": "Pagpapatunay (opsyonal)", - "username": "Username", - "usernamePlaceholder": "Username", + "username": "Pangalan ng user", + "usernamePlaceholder": "Pangalan ng user", "password": "Password", "passwordPlaceholder": "Password", "connected": "Nakakonekta", @@ -10760,7 +10767,7 @@ "errorImportAccessToken": "Nabigong i-import ang access token", "errorSessionNotInitialized": "Hindi na-initialize ang OAuth session. I-restart ang daloy ng koneksyon at subukan muli.", "errorNoAuthorizationCode": "Walang natagpuang authorization code. I-paste ang callback URL o ang Authentication Code.", - "tabDeviceCode": "Device Code", + "tabDeviceCode": "Code ng Device", "tabBrowserLogin": "Pag-login sa Browser", "tabImportAuthJson": "I-import ang auth.json", "tabPasteApiKey": "I-paste ang API Key", @@ -10769,9 +10776,9 @@ "devinDesktopPasteDescription": "I-paste ang umiiral na Devin API key mula sa isang na-authenticate na Devin session. Ang availability ng key export at mga hakbang ay nag-iiba batay sa bersyon ng Devin at account.", "devinPasteDescription": "Ibigay ang iyong WINDSURF_API_KEY (nakuha sa pamamagitan ng `devin auth login`, o sa pamamagitan ng Windsurf IDE na \"Windsurf: Provide Auth Token\" na utos).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json ng Grok Build", "apiTokenPlaceholder": "ws-...", - "apiKeyTokenLabel": "API Key / Token", + "apiKeyTokenLabel": "Susi ng API / Token", "saving": "Nagsasave…", "saveConnection": "I-save ang Koneksyon", "gheDescription": "Ilagay ang base URL ng iyong GitHub Enterprise instance (hal. https://ghe.yourcompany.com).", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Ikonekta ang Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Mag-login gamit ang Cursor", + "tabImport": "Mag-import ng token", + "loginDescription": "Binubuksan ang browser login ng Cursor. Gumagana sa Docker — aprubahan ito sa browser ng iyong host, pagkatapos ay bumalik dito.", + "loginWithCursor": "Mag-login gamit ang Cursor", + "startingLogin": "Nagsisimula…", + "waitingApproval": "Naghihintay ng pag-apruba sa pag-login sa Cursor…", + "openUrlHint": "Kung hindi bumukas ang browser:", + "openLoginLink": "Buksan ang pahina ng pag-login", + "cancelLogin": "Kanselahin ang pag-login", "autoDetecting": "Awtomatikong pagtukoy ng mga token...", "readingFromCursor": "Pagbabasa mula sa Cursor IDE o cursor-agent", "tokensAutoDetected": "Ang mga token ay matagumpay na na-auto-detect mula sa Cursor IDE!", "cursorNotDetected": "Hindi nakita ang cursor IDE. Mangyaring manu-manong i-paste ang iyong token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Gumagana sa Docker? Mas mainam ang Mag-login gamit ang Cursor. Karaniwang hindi available sa loob ng container ang awtomatikong pag-import mula sa IDE at cursor-agent. Tingnan ang docs/providers/CURSOR-DOCKER.md.", + "accessToken": "Token sa Pag-access", + "refreshToken": "Token sa Pag-refresh", + "refreshTokenPlaceholder": "Opsyonal — nagbibigay-daan sa awtomatikong pag-refresh ng token", "required": "*", "accessTokenPlaceholder": "Awtomatikong magpo-populate ang token ng access...", "machineId": "ID ng makina", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Nabigo ang auto-detect na mga token", "errorEnterToken": "Mangyaring magpasok ng token ng pag-access", "errorImportFailed": "Nabigo ang pag-import", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Hindi masimulan ang pag-login sa Cursor", + "errorLoginPoll": "Nabigo ang pag-login sa Cursor", + "errorLoginTimeout": "Nag-timeout ang pag-login sa Cursor — subukan muli" }, "pricingModal": { "title": "Configuration ng Pagpepresyo", @@ -10843,9 +10850,9 @@ "selectProxy": "Piliin ang {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Mag-import ng Legacy", + "bulkAssign": "Maramihang Italaga", + "addProxy": "Magdagdag ng Proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,21 +10861,21 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Subukan", + "edit": "I-edit", + "delete": "Tanggalin", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", "labelType": "Uri", "labelFamily": "Pamilya ng IP", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Awtomatiko (dual-stack)", "familyIpv4": "IPv4 lamang", "familyIpv6": "IPv6 lamang", "familyHint": "Pamilya ng egress address. Pinapanatili ng Auto ang dual-stack; ini-pin ng IPv4/IPv6 ang proxy na ito sa pamilyang iyon (pinipigilan ang v4 leak sa ilalim ng IPv6-only na proxy).", "labelHost": "Host", "labelPort": "Port", - "labelUsername": "Username", + "labelUsername": "Pangalan ng user", "labelPassword": "Password", "labelRegion": "Rehiyon", "labelStatus": "Katayuan", @@ -10879,7 +10886,7 @@ "statusInactive": "Hindi aktibo", "cancel": "Kanselahin", "save": "I-save", - "bulkModalTitle": "Bulk Proxy Assignment", + "bulkModalTitle": "Maramihang Pagtatalaga ng Proxy", "bulkLabelScope": "Saklaw", "bulkLabelProxy": "Proxy", "bulkClearAssignment": "(I-clear ang assignment)", @@ -10888,10 +10895,10 @@ "bulkApply": "Mag-apply", "labelScope": "Saklaw", "labelProxy": "Proxy", - "scopeGlobal": "global", - "scopeProvider": "provider", + "scopeGlobal": "pangkalahatan", + "scopeProvider": "tagapagbigay", "scopeAccount": "account", - "scopeCombo": "combo", + "scopeCombo": "kumbinasyon", "bulkImportErrorMissingName": "Nawawala ang NAME", "bulkImportErrorMissingHost": "Nawawala ang HOST", "bulkImportErrorInvalidPort": "Di-wastong PORT (dapat ay 1-65535)", @@ -10906,9 +10913,9 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Nabigo", "successRate": "{rate}% tagumpay", - "avgLatency": "{latency}ms average", + "avgLatency": "{latency}ms na average", "assignmentsCount": "{count} mga takdang-aralin", "noData": "No Data", "testSuccess": "✓ {ip}", @@ -10936,7 +10943,7 @@ "bulkImportMaxExceeded": "Maximum na 100 proxy bawat pag-import", "bulkImportPreview": "Silipin", "clearAssignment": "(malinaw na takdang-aralin)", - "bulkProxyAssignment": "Bulk Proxy Assignment", + "bulkProxyAssignment": "Maramihang Pagtatalaga ng Proxy", "testAll": "Subukan Lahat", "errorTestFailed": "Nabigong subukan ang mga proxy", "batchSelectedCount": "{count} ang napili", @@ -10947,23 +10954,23 @@ "managePool": "Pamahalaan ang Pool", "poolTitle": "Proxy Pool at Rotation", "poolDescription": "Mag-attach ng maraming proxy sa isang scope at i-rotate ang mga egress IP sa mga ito. Ang isang scope na may iisang proxy ay gumagana nang eksakto tulad ng isang karaniwang assignment.", - "poolScopeIdLabel": "Scope ID", - "poolScopeIdPlaceholder": "provider id / connection id / combo id", + "poolScopeIdLabel": "ID ng Saklaw", + "poolScopeIdPlaceholder": "ID ng tagapagbigay / ID ng koneksyon / ID ng kumbinasyon", "poolScopeIdRequired": "Kinakailangan ang isang scope ID para sa provider, account, o combo scope.", "poolLoad": "I-load ang Pool", "poolLoadFailed": "Hindi na-load ang proxy pool", "poolStrategyLabel": "Estratehiya sa rotation", "poolStrategyHint": "ang round-robin ay nagpapaikot ng mga miyembro nang sunod-sunod; ang random ay pumipili nang pantay; ang sticky ay nagpapanatili ng isang miyembro para sa isang window; ang latency-optimized ay pumipili ng pinakamabilis batay sa mga log.", "poolStrategyFailed": "Hindi na-update ang rotation strategy", - "strategyRoundRobin": "Round-robin", - "strategyRandom": "Random", - "strategySticky": "Sticky", - "strategyLatency": "Latency-optimized", + "strategyRoundRobin": "Salit-salitan", + "strategyRandom": "Sapalaran", + "strategySticky": "Nakapirmi", + "strategyLatency": "In-optimize para sa latency", "poolMembersLabel": "Mga miyembro ng pool ({count})", "poolNoMembers": "Wala pang mga proxy sa pool na ito.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# exit} other {# exit}} na ginagamit ng {connections, plural, one {# koneksyon} other {# koneksyon}} · hanggang {max} sa isang exit · nakaraang {hours} oras", + "poolEgressObservationEmpty": "Walang naobserbahang trapiko sa nakaraang {hours} oras", + "poolEgressObservationHint": "Binilang mula sa proxy log sa loob ng saklaw ng oras: mga natatanging egress IP na naobserbahan para sa mga miyembro ng pool na ito, at ang mga koneksyon sa OmniRoute na gumamit sa mga ito. Ang \"Sa isang exit\" ay nangangahulugang sa buong saklaw ng oras, hindi sa parehong sandali. Pansamantalang ihihinto lamang ng per-IP 429 lockout ang mga koneksyon mula sa parehong pamilya ng provider.", "poolRemove": "Alisin", "poolRemoveFailed": "Hindi naalis ang proxy mula sa pool", "poolAddLabel": "Magdagdag ng proxy", @@ -10976,93 +10983,93 @@ "title": "Title", "description": "Description", "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "provider": "Tagapagbigay", + "model": "Modelo", "accountKey": "Account Key", "autoAccounts": "Auto ({count} na mga account)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Ipadala", + "cancel": "Kanselahin", + "audioFile": "File na Audio", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "I-clear Lahat", + "request": "Kahilingan", + "response": "Tugon", + "transcription": "Transkripsyon", + "copy": "Kopyahin", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Nakabuo ng {count} na mga larawan", "generatedImage": "Binuo na larawan {index}", - "save": "Save", + "save": "I-save", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Mga Tugon", "completions": "Mga Completion", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Mga Embedding", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Mga Moderation", - "rerank": "Rerank", + "rerank": "Muling Pag-ranggo", "search": "Search", - "webFetch": "Web fetch" + "webFetch": "Pagkuha mula sa web" }, "conversationalChat": "Pang-usap na Chat", "clearChat": "I-clear ang chat", "typeMessagePlaceholder": "Mag-type ng mensahe... (Shift+Enter para sa bagong linya)", "tabChat": "Chat", - "tabCompare": "Compare", + "tabCompare": "Ihambing", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", + "tabBuild": "Bumuo", + "configPane": "Configuration", + "systemPrompt": "Prompt ng system", + "systemPromptPlaceholder": "Isa kang matulunging assistant.", + "modelPlaceholder": "hal. openai/gpt-4o", "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "parametersLabel": "Mga parameter", + "collapseConfig": "I-collapse ang pane ng configuration", + "expandConfig": "I-expand ang pane ng configuration", + "temperature": "Temperatura", + "maxTokens": "Pinakamaraming token", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Penalty sa presensya", + "frequencyPenalty": "Penalty sa dalas", "reasoningLabel": "Pangangatwiran", "thinking": "Pag-iisip", - "effort": "Effort", - "effortDefault": "Default", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "effort": "Antas ng pagsisikap", + "effortDefault": "Paunang-takda", + "seedPlaceholder": "Random (iwanang walang laman)", + "presetsLabel": "Mga preset", + "loadPreset": "Mag-load ng preset", + "savePreset": "I-save ang preset", + "noPresets": "Walang mga preset", + "presetNamePlaceholder": "Pangalan ng preset", + "savingPreset": "Sine-save…", + "nameRequired": "Kinakailangan ang pangalan", + "failedToSavePreset": "Hindi na-save ang preset", + "improvePrompt": "Pagandahin ang prompt", + "improvingPrompt": "Pinapaganda…", + "improvePromptTitle": "Pagandahin ang iyong prompt gamit ang AI", + "setModelFirst": "Magtakda muna ng modelo", "setModelInConfigFirst": "Magtakda muna ng modelo sa Config pane.", "improvePromptFailed": "Bigo ang pagpapahusay sa prompt.", "improvePromptAria": "Pahusayin ang prompt gamit ang AI", "confirmImprovePrompt": "Kumpirmahin ang pagpapahusay sa prompt", "improvePromptDescription": "Ipapadala nito ang iyong kasalukuyang system prompt sa upang bumuo ng pinahusay na bersyon.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Gagamit ito ng quota mula sa modelong naka-configure sa Configuration.", + "improveConfirm": "Pagandahin", + "exportCode": "I-export ang code", + "exportCodeTitle": "I-export ang Code", "exportShort": "I-export", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Walang available na estado ng playground na mai-export.", "closeExportModal": "Isara ang export modal", "close": "Isara", "exportRealKeyWarning": "Babala sa seguridad: na-block ang pag-export — may natukoy na totoong API key sa output. Paki-reset ang iyong API key at subukang muli.", @@ -11071,57 +11078,57 @@ "copyLangCode": "Kopyahin ang {language} code", "loadingPresets": "Naglo-load…", "loadPresetPlaceholder": "Mag-load ng preset…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Kopyahin", + "copiedCode": "Nakopya na!", + "addModel": "+ Magdagdag ng modelo", + "runAll": "Patakbuhin lahat", + "cancelAll": "Kanselahin lahat", + "maxColumnsReached": "Hanggang {max} column", + "modelPlaceholderCompare": "Modelo (Cmd+K)…", "noModel": "Walang modelo", "statusLabel": "Katayuan: {status}", "status": { - "idle": "idle", + "idle": "walang ginagawa", "streaming": "nag-i-stream", "done": "tapos na", - "error": "error" + "error": "kamalian" }, "cancelStream": "Kanselahin ang stream", "removeColumn": "Alisin ang column", "removeModelColumn": "Alisin ang column para sa {model}", "readyToRun": "Handa nang patakbuhin.", - "errorLabel": "Error", + "errorLabel": "Kamalian", "unknownError": "May naganap na hindi kilalang error.", "waitingForResponse": "Naghihintay ng tugon…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "pagtatantya sa panig ng client", + "tokensLabel": "Mga token", + "costLabel": "Gastos", + "costEstimated": "(tinatantya)", "ttftTitle": "Oras hanggang sa unang token (pagtatantya sa client-side)", "tpsTitle": "Mga token bawat segundo (pagtatantya sa client-side)", "tokenCountsTitle": "Mga prompt token ↑ / Mga completion token ↓", "estimatedCostTitle": "Tinatayang gastos (hindi garantisadong tumpak)", - "toolsLabel": "Tools", + "toolsLabel": "Mga tool", "toolsCount": "Mga Tool ({count})", - "addTool": "Add tool", + "addTool": "Magdagdag ng tool", "editTool": "I-edit ang tool na {name}", "removeTool": "Alisin ang tool na {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Pangalan ng function", "toolNameRequiredPlaceholder": "Pangalan ng function *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Paglalarawan (opsyonal)", "toolParamsLabel": "Mga parameter (JSON schema)", "toolParamsJsonSchema": "JSON schema para sa mga parameter", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", - "jsonMode": "JSON mode", + "toolParamsInvalid": "Dapat valid na JSON ang mga parameter", + "structuredOutputLabel": "Nakabalangkas na Output", + "enableJsonMode": "I-enable ang JSON mode", + "disableJsonMode": "I-disable ang JSON mode", + "invalidJson": "Invalid na JSON", + "jsonMode": "Mode na JSON", "jsonModeDescription": "Pinipilit ang response_format: json_schema", "schemaName": "Pangalan ng schema", - "jsonSchema": "JSON schema", + "jsonSchema": "Schema ng JSON", "jsonSchemaEditor": "Editor ng JSON schema", "schemaValidated": "Na-validate ang schema", "validateSchema": "I-validate ang schema", @@ -11129,16 +11136,16 @@ "stopSequences": "Mga stop sequence", "stopSequencesPlaceholder": "hal. \"\\n\\n\" o \"END\"", "autoProvider": "Awtomatiko", - "httpError": "Error {status}", + "httpError": "Kamalian {status}", "requestCancelled": "Kinansela ang kahilingan", "networkError": "Error sa network", "regenerateLastResponse": "Muling buuin ang huling tugon", "regenerate": "Muling buuin", "startConversation": "Magsimula ng pag-uusap — mag-type ng mensahe sa ibaba", "role": { - "system": "system", - "user": "user", - "assistant": "assistant" + "system": "sistema", + "user": "gumagamit", + "assistant": "katuwang" }, "generating": "Bumubuo…", "typeMessageWithShortcut": "Mag-type ng mensahe... (Enter para ipadala, Shift+Enter para sa bagong linya)", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} na column", "addModelToCompare": "Magdagdag ng column ng modelo upang ihambing", "modelsSimultaneously": "Hanggang {max} na modelo nang sabay-sabay", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Tumatakbo…", + "runLabel": "Patakbuhin", + "enterToolResult": "Ilagay ang resulta ng tool…", "build": { "step1Label": "Ano ang susubukan?", "step2Label": "I-configure", @@ -11180,13 +11187,13 @@ }, "miniPlayground": { "endpoint": "Endpoint", - "apiKey": "API Key", - "model": "Model", + "apiKey": "Susi ng API", + "model": "Modelo", "voice": "Boses", "speed": "Bilis", "input": "Input", "url": "URL", - "format": "Format", + "format": "Pormat", "depth": "Lalim", "copyCurl": "Kopyahin ang cURL", "copied": "Nakopya na!", @@ -11211,10 +11218,10 @@ "size": "Laki", "duration": "Tagal", "question": "Tanong", - "audioFile": "Audio file", + "audioFile": "File ng audio", "fileTooLarge25Mb": "Masyadong malaki ang file. Maximum na laki: 25 MB.", "selectAudioFirst": "Pumili muna ng audio file.", - "speechToText": "Speech to Text", + "speechToText": "Pananalita patungong Teksto", "chooseFile": "Pumili ng file", "audioFormats25Mb": "MP3, WAV, M4A, OGG o FLAC · Maximum na 25 MB", "musicSample": "Isang kalmadong ambient track na may mainit na piano at malalambot na strings", @@ -11225,10 +11232,10 @@ "imageSample": "Isang futuristic na lungsod sa paglubog ng araw, cinematic na pag-iilaw", "image": "Larawan", "ttsSample": "Kumusta mula sa OmniRoute. Ito ay isang text-to-speech na pagsubok.", - "textToSpeech": "Text to Speech", + "textToSpeech": "Teksto sa Pananalita", "videoSample": "Isang papel na eroplano na lumilipad sa ibabaw ng isang futuristic na lungsod", "video": "Video", - "webFetch": "Web Fetch", + "webFetch": "Pagkuha mula sa web", "webSearchSample": "Ano ang OmniRoute?", "webSearch": "Paghahanap sa Web", "documentUrl": "URL ng Dokumento", @@ -11239,84 +11246,84 @@ "exampleLabel": "Halimbawa", "latency": "{ms}ms", "statsLine": "{ms}ms · {tokensIn} in / {tokensOut} out na mga token", - "defaultKey": "(default)", + "defaultKey": "(paunang-takda)", "clear": "I-clear", "emptyConversation": "Magpadala ng mensahe upang simulan ang pag-uusap", "sendHint": "Shift+Enter para sa bagong linya · Enter para ipadala", "you": "Ikaw", - "assistant": "Assistant", - "errorLabel": "Error", + "assistant": "Katulong", + "errorLabel": "Kamalian", "requestFailed": "Nabigo ang kahilingan", "stop": "Ihinto" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "Nagre-record", + "paused": "Naka-pause", + "pipelineLogsOn": "Naka-on ang mga log ng pipeline", + "pipelineLogsOff": "Naka-off ang mga log ng pipeline", + "updatingPipelineLogs": "Ina-update ang mga log ng pipeline...", + "updatePipelineFailed": "Hindi na-update ang pag-log ng pipeline", + "capturePipeline": "Kunin ang mga payload ng pipeline para sa mga bagong request", + "searchPlaceholder": "Maghanap ng mga modelo, provider, account, API key, combo...", + "allProviders": "Lahat ng provider", + "allModels": "Lahat ng modelo", + "allAccounts": "Lahat ng account", + "allApiKeys": "Lahat ng API key", + "total": "Kabuuan", + "ok": "Tagumpay", + "err": "Kamalian", + "combo": "Kombinasyon", + "keys": "Mga key", + "shown": "Ipinapakita", + "sortNewest": "Pinakabago", + "sortOldest": "Pinakaluma", + "sortTokensDesc": "Mga token ↓", + "sortTokensAsc": "Mga token ↑", + "sortDurationDesc": "Tagal ↓", + "sortDurationAsc": "Tagal ↑", + "sortStatusDesc": "Katayuan ↓", + "sortStatusAsc": "Katayuan ↑", + "sortModelAsc": "Modelo A-Z", + "sortModelDesc": "Modelo Z-A", + "sortLogs": "Ayusin ang mga log", + "refresh": "I-refresh", + "columnsLabel": "Mga Column", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", + "semantic": "Semantiko", "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semanticCacheHit": "Tumama sa semantic cache (inihatid ng OmniRoute)", + "upstreamResponse": "Tugon ng upstream provider", + "noApiKey": "Walang API key", + "requestedRoutedTitle": "Hiniling ang {requested}, ni-route bilang {routed}", "statusFilters": { - "all": "All", + "all": "Lahat", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Tagumpay", + "combo": "Kombinasyon" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", + "status": "Katayuan", + "cacheSource": "Pinagmulan ng Cache", + "model": "Modelo", + "requested": "Hiniling", + "provider": "Tagapagbigay", + "protocol": "Protocol ng Request", "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", - "compressed": "Compression", + "apiKey": "Susi ng API", + "combo": "Kombinasyon", + "tokens": "Mga Token", + "compressed": "Kompresyon", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Tagal", + "time": "Oras", + "conversation": "Pag-uusap", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Nilo-load ang mga log...", + "noLogs": "Wala pang mga log. Gumawa ng ilang API call upang makita ang mga ito rito.", + "noMatchingLogs": "Walang log na tumutugma sa mga kasalukuyang filter.", + "callLogsInfo": "Sine-save rin bilang mga JSON file ang mga call log sa {dataDir} at awtomatikong pinapalitan batay sa {retentionDays} at {maxEntries}.", "loadMore": "Mag-load pa", "loadingMore": "Naglo-load pa...", "correlationId": "ID ng Ugnayan", @@ -11367,9 +11374,9 @@ }, "payloadMissing": "Ang detalyadong payload artifact ay hindi na available para sa log entry na ito.", "payloadCorrupt": "Hindi ma-parse ang detalyadong payload artifact.", - "notAvailable": "N/A", - "semanticCache": "Semantic (OmniRoute)", - "upstreamCache": "Upstream (Provider)", + "notAvailable": "Hindi naaangkop", + "semanticCache": "Semantiko (OmniRoute)", + "upstreamCache": "Upstream (Tagapagbigay)", "ariaLabel": "Detalyeng log ng kahilingan", "completed": "Natapos", "upstreamStatus": "Upstream: {status}", @@ -11392,15 +11399,15 @@ "totalOut": "Kabuuang Labas: {value}", "reasoning": "Rason: {value}", "requestedModel": "Hiniling na Modelo", - "requestProtocol": "Req Protocol", + "requestProtocol": "Protocol ng Request", "cacheSource": "Cache Pinagmulan", "modelPinning": "Pagpapa-pin ng Modelo", "activeModelPinning": "Aktibo — modelo na napili sa pamamagitan ng session pinning", "rotated": "Naka-ikot: {initial} -> {final}", - "apiKey": "API Key", + "apiKey": "Susi ng API", "noApiKey": "Walang API key", "combo": "Kumbinasyon", - "error": "Error", + "error": "Kamalian", "unblockAll": "I-unblock ang lahat", "cleared": "Nalinaw", "unblock": "I-unblock", @@ -11408,68 +11415,68 @@ "current": "kasalukuyan", "detailStatus": "Detalye ng Katayuan", "loadingDetails": "Naglo-load ng mga detalye ng kahilingan...", - "providerEventStream": "Provider Event Stream", + "providerEventStream": "Stream ng Event ng Provider", "clientEventStream": "Kaganapan ng Stream ng Kliyente", "eventStream": "Daloy ng Kaganapan", - "responsePayloadLegacy": "Response Payload (Legacy)", - "requestPayloadLegacy": "Request Payload (Legacy)", + "responsePayloadLegacy": "Payload ng Tugon (Legacy)", + "requestPayloadLegacy": "Payload ng Kahilingan (Legacy)", "noPayload": "Walang payload data na magagamit para sa log entry na ito.", "correlationId": "ID ng Ugnayan", - "correlationIdValue": "Correlation ID: {id}", + "correlationIdValue": "ID ng Korelasyon: {id}", "detailedPayloadInfo": "I-enable ang detalyadong pag-log muna kung nais mo ang apat na yugto ng view ng client/provider payload para sa mga bagong kahilingan.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Kopyahin lahat", + "copiedAll": "Nakopya na ang lahat" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", + "filterAll": "Lahat", + "filterErrors": "Mga Error", + "filterSuccess": "Tagumpay", + "filterTimeout": "Nag-timeout", + "colStatus": "Katayuan", "colProxy": "Proxy", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "Uri", + "colLevel": "Antas", + "colProvider": "Tagapagbigay", + "colTarget": "Patutunguhan", + "colLatency": "Latensiya", + "colClientIp": "IP ng Client", + "colTime": "Oras", + "recording": "Nagre-record", + "paused": "Naka-pause", + "searchPlaceholder": "Maghanap ng host, provider, target, IP...", + "allTypes": "Lahat ng Uri", + "allLevels": "Lahat ng Antas", + "allProviders": "Lahat ng Provider", + "total": "kabuuan", "ok": "OK", "err": "ERR", "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", - "colPublicIp": "Public IP" + "direct": "direkta", + "newest": "Pinakabago", + "oldest": "Pinakaluma", + "latencyDesc": "Latensiya ↓", + "latencyAsc": "Latensiya ↑", + "refresh": "I-refresh", + "columns": "Mga Column", + "loadingProxyLogs": "Nilo-load ang mga proxy log...", + "noProxyLogs": "Wala pang mga proxy log. I-configure ang mga proxy at magsagawa ng mga API call upang makita ang mga ito rito.", + "noMatchingLogs": "Walang log na tumutugma sa kasalukuyang mga filter.", + "tlsFingerprint": "TLS Fingerprint ng Chrome 124", + "colPublicIp": "Pampublikong IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", + "speech": "Pagsasalita", + "search": "Paghahanap", + "images": "Mga Larawan", "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "music": "Musika", + "responses": "Mga Tugon", + "rerank": "Muling Pagraranggo", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Mga Embedding", + "transcription": "Transkripsiyon" }, "toolDescriptions": { "cline": "Cline", @@ -11481,121 +11488,121 @@ }, "runtime": { "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", + "description": "Real-time na obserbabilidad — 3-layer na katatagan + mga session + mga alerto sa quota", + "pause": "I-pause", + "resume": "Ipagpatuloy", + "refreshNow": "I-refresh ngayon", + "kpiSessions": "Mga Session", + "kpiCircuits": "Mga Circuit", + "kpiCooldowns": "Mga Cooldown", + "kpiLockouts": "Mga Lockout", + "hintStickyBound": "{count} naka-sticky bind", + "hintRecovering": "{count} bumabawi", + "hintAllHealthy": "malusog lahat", + "hintOpen": "bukas", + "hintConnsCooling": "nagpapalamig na mga koneksiyon", + "hintModelsBlocked": "mga naka-block na modelo", + "resilienceTitle": "3-Layer na Katatagan", + "resilienceSubtitle": "Sinasalamin ang nakadokumentong modelo ng katatagan", + "providersHealthy": "{percent}% ng mga provider ay malusog", "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", + "layer1Title": "Mga Circuit Breaker ng Provider", + "layer1Desc": "Ihinto ang trapiko sa mga provider na pumapalya sa upstream na antas", + "layer2Title": "Mga Cooldown ng Koneksyon", + "layer2Desc": "Laktawan ang isang problemadong account/key; patuloy na magseserbisyo ang ibang koneksyon", + "layer3Title": "Mga Lockout ng Modelo", + "layer3Desc": "Mga lock sa rate limit bawat modelo; patuloy pa ring nagseserbisyo ang parehong koneksyon sa ibang modelo", + "badgeAffectedOf": "{affected} sa {total} ang apektado", + "badgeCooling": "{count} ang nasa cooldown", + "badgeLocked": "{count} ang naka-lock", + "emptyCircuits": "Wala pang aktibong circuit breaker", + "emptyCooldowns": "Walang aktibong cooldown ng koneksyon", + "emptyLockouts": "Walang lockout ng modelo", + "moreCooldowns": "+{count} pang cooldown", + "moreLockouts": "+{count} pang lockout", + "feedTitle": "Live na Feed", + "feedSubtitle": "Huling {count} kaganapan", + "feedFilterAll": "Lahat", + "feedFilterCircuits": "Mga Circuit", + "feedFilterCooldowns": "Mga Cooldown", + "feedFilterLockouts": "Mga Lockout", + "feedFilterSessions": "Mga Session", + "feedFilterQuotas": "Mga Quota", + "feedClear": "I-clear", + "feedEmptyWaiting": "Naghihintay ng mga kaganapan... (sinusuri bawat 5s)", + "feedEmptyFiltered": "Walang kaganapang tumutugma sa filter na ito", + "sessionsTitle": "Mga Aktibong Session", + "sessionsSubtitle": "Mga fingerprint ng kahilingang naka-sticky bind (live)", + "sessionsActive": "{count} ang aktibo", + "sessionsEmptyTitle": "Walang aktibong session", + "sessionsEmptyHint": "Lumalabas ang mga session habang dumadaloy ang mga kahilingan sa proxy", "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", + "tblAge": "Tagal", + "tblIdle": "Hindi Aktibo", + "tblReqs": "Mga Kahilingan", + "tblBoundTo": "Naka-bind sa", + "topApiKeys": "Mga nangungunang API key", + "quotaMonitorsTitle": "Mga Monitor ng Quota", + "quotaMonitorsSubtitle": "Live na estado ng quota sa bawat window ng account", + "openQuota": "Bukas na Quota", + "allQuotasHealthy": "Maayos ang lahat ng quota", + "statusExhausted": "NAUBOS NA", + "statusAlerting": "NAG-AALERTO", "statusError": "ERROR", - "moreSuffix": "+{count} more" + "moreSuffix": "+{count} pa" }, "quotaShare": { "weightPercent": "Timbang %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Pagbabahagi ng Quota", + "description": "Ibahagi ang mga quota ng provider sa mga API key gamit ang mga limitasyong %", + "newPool": "Bagong pool", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", + "betaDescription": "Naka-save ang configuration sa localStorage (hindi pa naka-persist sa server). Hindi pa nakakonekta sa proxy pipeline ang pagpapatupad ng cap sa bawat request. Hinahayaan ka ng screen na ito na idisenyo at makita ang paghahati ng quota; ilalabas ang aktuwal na pagpapatupad sa susunod na bersyon kasama ang DB persistence at pagharang sa upstream call.", + "kpiActivePools": "Mga aktibong pool", + "kpiKeysAllocated": "Mga key na inilaan", + "kpiAvgUnallocated": "Average na hindi nailaan", + "kpiProvidersWithQuota": "Mga provider na may quota", + "emptyTitle": "Walang naka-configure na pool", + "emptyDescription": "Gumawa ng pool upang magtalaga ng mga API key na magbabahagi sa window ng quota ng isang provider gamit ang mga alokasyong %.", + "loading": "Naglo-load…", + "removePool": "Alisin ang pool", + "removeConfirm": "Alisin ang pool na ito?", "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "used": "nagamit", + "allocationsCount": "Mga alokasyon ({count})", + "allocatedFree": "{allocated}% ang inilaan · {free}% ang libre", + "noAllocations": "Wala pang nakalaang key", + "capLabel": "limitasyon {value}", + "notTrackedYet": "(hindi pa sinusubaybayan)", + "policy": "Patakaran", "apiKeyColumn": "API Key", "weightColumn": "Timbang", "fairShareShort": "patas", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "mahigpit", + "policySoft": "maluwag", + "policyBurst": "bugso", + "policyHardHint": "I-block kapag naubos ng key ang alokasyon nito", + "policySoftHint": "Payagan ang paglampas, alerto lamang", + "policyBurstHint": "Payagan ang burst sa libreng pool", + "editAllocations": "I-edit ang mga alokasyon", + "newPoolTitle": "Bagong quota pool", + "providerConnection": "Koneksyon ng provider (account)", + "selectConnection": "Pumili ng koneksyon…", + "noEligibleConnections": "Walang koneksyong may datos ng quota. Mag-refresh muna mula sa /dashboard/quota.", + "quotaWindow": "Window ng quota", + "selectWindow": "Pumili ng window…", + "alreadyUsedSuffix": "(ginagamit na)", + "windowReset": "I-reset", + "duplicatePoolError": "Mayroon nang pool para sa koneksyon + window na ito", + "cancel": "Kanselahin", + "createPool": "Gumawa ng pool", + "editTitle": "I-edit ang mga alokasyon", + "noKeysAdded": "Walang nakalaang susi. Magdagdag sa ibaba.", + "totalLabel": "Kabuuan: {percent}%", + "totalExceeded": "⚠ lumalampas sa 100%", + "addKey": "+ Magdagdag ng susi…", + "equalSplit": "Pantay na paghahati", + "save": "I-save ang mga alokasyon", "betaPreviewLabel": "Beta — Preview ng UI.", "betaConfigSavedPrefix": "Naka-save ang configuration sa", "betaConfigSavedSuffix": "(hindi pa nagpapatuloy sa server). Ang pagpapatupad ng cap sa bawat kahilingan ay hindi pa naka-wire sa proxy pipeline. Hinahayaan ka ng screen na ito na idisenyo at mailarawan ang paghahati ng quota; ang tunay na pagpapatupad ay darating sa isang pag-ulit sa hinaharap na may DB pagtitiyaga at upstream na pagharang ng tawag.", @@ -11614,16 +11621,16 @@ "conceptKeyHowDesc": "Gawin ang key nang normal sa API Keys — awtomatiko itong lalabas sa hakbang ng key sa wizard. Lagyan ng tsek ang Exclusive doon para gawin itong quota-only. Walang hiwalay na hakbang sa pag-enable.", "conceptExclusiveTitle": "Ano ang ginagawa ng \"Exclusive\"", "conceptExclusiveDesc": "Ang isang exclusive key ay nakakakita/gumagamit lamang ng mga quotaShared-* model ng pool — ang lahat ng iba pang model ay nakatago mula sa /v1/models nito at naka-block.", - "burnRateTitle": "Burn rate", + "burnRateTitle": "Rate ng pagkonsumo", "burnRateExhaustsIn": "Mauubos sa loob ng", "dimensionResetIn": "Magre-reset sa loob ng", "realConsumedColumn": "Nakonsumo", - "deficitColumn": "Deficit", + "deficitColumn": "Kakulangan", "borrowingIndicator": "humihiram", "migratedFromLocalStorageNotice": "Matagumpay na nailipat ang mga pool mula sa localStorage.", - "policyCapAbsoluteLabel": "Absolute cap", + "policyCapAbsoluteLabel": "Ganap na limitasyon", "policyCapAbsolutePlaceholder": "Numerikong limitasyon (opsyonal)", - "multiDimensionLabel": "Multi-dimension", + "multiDimensionLabel": "Maramihang dimensyon", "stackedBarTitle": "Mga slice ayon sa API key", "usedSuffix": "nagamit ang {percent}%", "wizardTitle": "Bagong quota pool", @@ -11668,10 +11675,10 @@ "endpointsHint": "Tawagan ang mga virtual model na ito gamit ang anumang inilaang key — ang routing + quota ay pinangangasiwaan bawat grupo.", "previewForKey": "Preview para sa key", "previewKeyNone": "(lahat ng endpoint)", - "endpointsBaseUrl": "Base URL", + "endpointsBaseUrl": "Batayang URL", "endpointsCollapse": "I-collapse", "endpointsExpand": "I-expand", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Native sa Anthropic", "endpointsResponsesNote": "Mga Tugon ng OpenAI — codex/github", "endpointsWsNote": "WebSocket — codex lamang", "betaText": "Gumagana ang Quota Share ngunit may mga inaasahang bug. May nahanap ka ba? Mangyaring iulat ito.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "May mga pool pa ang grupong ito — i-reassign o i-delete muna ang mga ito.", "ungroupedTitle": "Hindi nakagrupo", "ungroupedHint": "Ang mga pool na ito ay hindi nakatalaga sa isang kilalang grupo. I-edit ang isang pool upang ilipat ito sa isang totoong grupo.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Hindi maalis ang pool na ito.", + "dismiss": "Isara" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Mga plugin", + "description": "Mag-install at mamahala ng mga plugin upang palawakin ang functionality ng OmniRoute", + "loading": "Nilo-load ang mga plugin...", + "scanning": "Nagsa-scan...", + "scanForPlugins": "Mag-scan para sa mga plugin", + "noPlugins": "Walang naka-install na plugin", + "noPluginsDescription": "Ilagay ang mga direktoryo ng plugin sa ~/.omniroute/plugins/ at i-click ang Mag-scan.", + "activate": "I-activate", + "deactivate": "I-deactivate", + "uninstall": "I-uninstall", + "uninstallConfirm": "I-uninstall ang plugin na \"{name}\"?", + "pluginScanComplete": "Tapos na ang pag-scan ng plugin", + "pluginScanFailed": "Nabigo ang pag-scan ng plugin", + "activated": "Na-activate ang {name}", + "deactivated": "Na-deactivate ang {name}", + "activateFailed": "Nabigong i-activate ang {name}", + "deactivateFailed": "Nabigong i-deactivate ang {name}", + "uninstalled": "Na-uninstall ang {name}", + "uninstallFailed": "Nabigong i-uninstall ang {name}", + "configure": "I-configure: {name}", + "configurePlugin": "I-configure", + "noConfigSettings": "Walang nako-configure na setting ang plugin na ito.", + "saving": "Sine-save...", + "saveConfiguration": "I-save ang Configuration", + "configurationSaved": "Na-save ang configuration", + "saveConfigurationFailed": "Hindi na-save ang configuration", + "pluginNotFound": "Hindi nakita ang plugin", + "version": "Bersyon", + "author": "May-akda", + "description_label": "Paglalarawan", + "status": "Katayuan", + "enabled": "Naka-enable", + "disabled": "Naka-disable", "installedTab": "Naka-install", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Pamilihan", "marketplaceUrlLabel": "Custom na URL ng Marketplace", "marketplaceUrlPlaceholder": "Iwanang walang laman para sa opisyal na Omniroute registry", "saveMarketplaceUrl": "I-save at I-reload", @@ -11729,7 +11736,7 @@ "verified": "Na-verify", "install": "I-install", "installedFromMarketplace": "Na-install na ang plugin na {name}!", - "hooks": "Hooks" + "hooks": "Mga Hook" }, "quotaPlans": { "title": "Mga Plano at Quota", @@ -11774,9 +11781,9 @@ "filterCombos": "Mga Combo", "filterApiKeys": "Mga API Key", "filterSettings": "Mga Setting", - "filterQuota": "Quota", - "filterAuth": "Auth", - "filterSystem": "System", + "filterQuota": "Kota", + "filterAuth": "Pagpapatotoo", + "filterSystem": "Sistema", "filterAria": "I-filter ayon sa uri ng event", "refresh": "I-refresh", "refreshAria": "I-refresh ang activity feed", @@ -11848,7 +11855,7 @@ "riskBannerTitle": "Gamitin sa sariling peligro", "riskBannerBody": "Hinaharang ng AgentBridge ang HTTPS traffic mula sa mga IDE agent. Sa pag-activate nito, tinatanggap mo ang responsibilidad sa pagsunod sa mga tuntunin ng serbisyo ng bawat agent. Huwag kailanman gamitin sa mga device o network kung saan ipinagbabawal ang TLS inspection.", "riskBannerDismiss": "I-dismiss", - "serverCardTitle": "AgentBridge Server", + "serverCardTitle": "Server ng AgentBridge", "statusRunning": "Gumagana", "statusStopped": "Nakahinto", "statusActive": "Aktibo", @@ -11871,7 +11878,7 @@ "restarting": "Nagre-restart…", "trusting": "Pinagkakatiwalaan…", "regenerating": "Muling nag-ge-generate…", - "upstreamCaLabel": "Upstream CA Certificate (corporate)", + "upstreamCaLabel": "Upstream CA Certificate (pangkorporasyon)", "upstreamCaPlaceholder": "/etc/ssl/certs/corp-ca.pem", "upstreamCaTest": "I-test ang TLS", "upstreamCaTestOk": "Pumasa ang TLS test", @@ -11894,13 +11901,13 @@ "investigatingNotice": "Ang agent na ito ay kasalukuyang sinisiyasat. Kinukumpirma pa ang mga host at API surface. Magiging available ang setup kapag naidokumento na ang upstream API.", "modelMappingsLabel": "Mga mapping ng modelo", "sourceModel": "Source model (native ng agent)", - "targetModel": "Target model (OmniRoute)", + "targetModel": "Target na modelo (OmniRoute)", "noMappings": "Walang na-configure na mga model mapping. Patakbuhin ang setup wizard upang awtomatikong ma-detect ang mga modelo.", "noMappingsDesc": "Walang naka-configure na model mappings. Magdagdag ng mappings upang i-route ang mga kahilingan ng ahente sa pamamagitan ng OmniRoute.", "addMapping": "Magdagdag ng mapping", "selectModel": "Pumili…", "saveMappings": "I-save ang mga mapping", - "setupWizard": "Setup wizard", + "setupWizard": "Wizard sa pag-setup", "startDns": "Simulan ang DNS", "stopDns": "Ihinto ang DNS", "toggling": "Tino-toggle…", @@ -11908,7 +11915,7 @@ "emptyNoProvidersTitle": "Wala pang na-configure na mga provider", "emptyNoProvidersBody": "Upang magamit ang AgentBridge, ikonekta muna ang kahit isang provider. Ito ang magiging destinasyon kung saan iraruta ang mga kahilingan ng IDE.", "emptyGoToProviders": "Pumunta sa mga Provider", - "wizardTitle": "Setup wizard", + "wizardTitle": "Wizard sa pag-setup", "wizardSubtitle": "3-hakbang na pag-setup", "wizardStep1Label": "I-verify", "wizardStep2Label": "DNS", @@ -11917,7 +11924,7 @@ "wizardStep2Desc": "Ang mga sumusunod na entry ay idaragdag sa /etc/hosts upang i-redirect ang trapiko sa pamamagitan ng AgentBridge:", "wizardStep3Desc": "Maaari mo nang i-configure ang mga model mapping sa agent card. I-restart ang IDE upang ilapat ang mga pagbabago.", "wizardStep3Success": "Na-configure na ang agent!", - "wizardServerCheck": "AgentBridge server", + "wizardServerCheck": "Server ng AgentBridge", "wizardRunning": "tumatakbo", "wizardNotRunning": "hindi tumatakbo", "wizardCertCheck": "Sertipiko", @@ -11980,14 +11987,14 @@ "refresh": "I-refresh", "totalRequests": "Kabuuang Request", "avgLatency": "Average na Latency", - "successRate": "Success Rate", + "successRate": "Antas ng Tagumpay", "activeProviders": "Mga Aktibong Provider", "providerBreakdown": "Breakdown ng Provider", "providerCount": "{count} na provider", - "provider": "Provider", + "provider": "Tagapagbigay", "requests": "Mga Kahilingan", "success": "Tagumpay", - "rate": "Rate", + "rate": "Singil", "tokensIn": "Papasok na Token", "tokensOut": "Palabas na Token", "ttftAfterTool": "TTFT Pagkatapos ng Tool", @@ -12033,7 +12040,7 @@ "delete": "I-delete" }, "trafficInspector": { - "title": "Traffic Inspector", + "title": "Inspektor ng Trapiko", "subtitle": "I-monitor ang mga LLM call at i-debug ang HTTPS traffic ng anumang application", "captureModesTitle": "Mga Capture Mode", "agentBridgeMode": "AgentBridge", @@ -12044,22 +12051,22 @@ "httpProxyModeDesc": "Gamitin ang HTTP_PROXY environment variable", "systemWideMode": "Pambuong-sistema", "systemWideModeDesc": "I-intercept ang lahat ng traffic ng system (advanced)", - "tproxyMode": "TPROXY Decrypt", + "tproxyMode": "Pag-decrypt ng TPROXY", "tproxyModeUnavailable": "Nangangailangan ang TPROXY decrypt ng Linux + root + ang native addon", "filterBarTitle": "Mga Filter", "profileLlmOnly": "LLM lamang", - "profileCustom": "Custom", + "profileCustom": "Pasadya", "profileAll": "Lahat", "filterHost": "I-filter ang host…", - "filterAgent": "Agent", - "filterStatus": "Status", + "filterAgent": "Ahente", + "filterStatus": "Katayuan", "pauseBtn": "I-pause", "resumeBtn": "Ipagpatuloy", "clearBtn": "I-clear", "exportHar": "I-export ang .har", "recordSession": "REC", "stopSession": "Ihinto", - "liveBadge": "live", + "liveBadge": "aktibo", "offlineBadge": "offline", "noRequests": "Wala pang na-capture na mga request.", "noRequestsDesc": "Siguraduhing tumatakbo ang AgentBridge o mag-enable ng isa pang capture mode.", @@ -12068,7 +12075,7 @@ "tabHeaders": "Mga Header", "tabRequest": "Kahilingan", "tabResponse": "Tugon", - "tabTiming": "Timing", + "tabTiming": "Oras", "tabLlm": "LLM", "tabStats": "Mga Estadistika", "requestHeaders": "Mga Header ng Kahilingan", @@ -12091,7 +12098,7 @@ "llmApiKind": "Uri ng API", "llmModel": "Modelo", "llmMessages": "Mga Mensahe", - "llmStream": "Stream", + "llmStream": "Daloy", "llmMappedTo": "Naka-map sa", "llmCostEstimate": "Tantiyang gastos", "systemProxyExitWarning": "Aktibo pa rin ang system-wide proxy — iwanan pa rin ang page?", @@ -12099,10 +12106,10 @@ "loading": "Naglo-load…", "copied": "Nakopya na!", "copy": "Kopyahin", - "httpProxyTitle": "HTTP Proxy Snippet — port {port}", + "httpProxyTitle": "Snippet ng HTTP Proxy — port {port}", "notRecording": "Hindi nagre-record", "anyStatus": "Kahit anong status", - "liveOnly": "Live", + "liveOnly": "Aktibo", "viewingRecordedSession": "Tinitingnan ang na-record na session", "backToLive": "Bumalik sa live", "untitledSession": "Walang pamagat na session", @@ -12121,9 +12128,9 @@ "timingUpstreamResponse": "Tugon ng upstream", "timingNoData": "Walang available na data ng timing.", "timingTotalLatency": "Kabuuang latency", - "timingTimestamp": "Timestamp", + "timingTimestamp": "Tatak ng oras", "timingMethod": "Paraan", - "timingStatus": "Status", + "timingStatus": "Katayuan", "timingRequestSize": "Laki ng kahilingan", "timingResponseSize": "Laki ng tugon", "pausedNewBadge": "{count} bago", @@ -12141,8 +12148,8 @@ "trafficProfile": "Profile ng trapiko", "roleSystem": "Sistema", "roleUser": "Gumagamit", - "roleAssistant": "Assistant", - "roleTool": "Tool", + "roleAssistant": "Katulong", + "roleTool": "Kasangkapan", "expand": "Palawakin", "collapse": "Itiklop", "systemPromptHidden": "Nakatago ang system prompt — i-click para i-expand", @@ -12160,27 +12167,27 @@ "noRequestBody": "Walang request body.", "noResponseBody": "Walang response body.", "formatted": "Naka-format", - "raw": "Raw" + "raw": "Hilaw" }, "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "Code ng CLI", "phrase": "Mga code tool na itinuturo mo sa OmniRoute", "flow": "Ikaw → CLI Code → OmniRoute → Provider", "seeOther": "Tingnan →" }, "agent": { - "title": "CLI Agents", + "title": "Mga CLI Agent", "phrase": "Mga broad-purpose na autonomous CLI agent na itinuturo mo sa OmniRoute", "flow": "Ikaw → CLI Agent → OmniRoute → Provider", "seeOther": "Tingnan →" }, "acp": { - "title": "ACP Agents", + "title": "Mga ACP Agent", "phrase": "Mga CLI na ini-spawn ng OmniRoute bilang execution backend (reverse flow)", - "warning": "Most users can ignore this — use only when an integration requires it.", - "flow": "Client → OmniRoute → spawn CLI (stdio/ACP) → response", + "warning": "Maaaring hindi ito pansinin ng karamihan ng mga user — gamitin lamang kapag kinakailangan ito ng isang integration.", + "flow": "Client → OmniRoute → mag-spawn ng CLI (stdio/ACP) → tugon", "seeOther": "Tingnan →" } }, @@ -12189,7 +12196,7 @@ "thisPage": "Ang pahinang ito", "open": "Buksan →", "code": { - "title": "Code tool", + "title": "Tool para sa code", "desc": "Nakaturo sa Omni", "flow": "ikaw → CLI → Omni → provider", "examples": "hal.: claude, codex" @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI na ginagamit bilang backend ng Omni", "desc": "Pabaliktad na pagpapatupad", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → mag-spawn ng CLI → tugon", "examples": "hal.: claude, codex (ACP)" } }, @@ -12229,12 +12236,12 @@ "apply": "I-save", "reset": "I-clear", "manualConfig": "Manu-manong configuration", - "vendor": "Vendor", + "vendor": "Tagapagtustos", "category": "Uri", "detectionStatus": "Pagtukoy", - "configStatus": "Configuration", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "configStatus": "Kompigurasyon", + "baseUrlLabel": "Batayang URL", + "apiKeyLabel": "Susi ng API", "modelMappingLabel": "Pagmamapa ng modelo", "noActiveProviders": "Walang aktibong provider.", "noActiveProvidersDesc": "Pumunta sa Providers upang magkonekta ng kahit 1 provider bago i-configure ang CLI.", @@ -12242,11 +12249,11 @@ } }, "cliCode": { - "pageTitle": "CLI Code's", + "pageTitle": "Mga CLI Code", "pageSubtitle": "Mga code tool na nakaturo sa OmniRoute", "searchPlaceholder": "Maghanap ng CLI…", "filterDetectionLabel": "Pagtukoy", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "Batayang URL", "detectionAll": "Lahat", "detectionInstalled": "Naka-install", "detectionNotFound": "Hindi nahanap", @@ -12279,11 +12286,11 @@ "setupGuideCommandMissingTitle": "Hindi nahanap ang command", "setupGuideCommandMissingDesc": "Tiyaking nasa PATH ang binary.", "fingerprintSettingsHint": "I-configure ang routing at mga fingerprint sa", - "settingsRoutingLink": "Settings → Routing", + "settingsRoutingLink": "Mga Setting → Routing", "installed": "Naka-install", "notFound": "Hindi nahanap", "builtIn": "Built-in", - "custom": "Custom", + "custom": "Pasadya", "agentUseCaseHint": "Magagamit para i-spawn sa pamamagitan ng ACP.", "remove": "Alisin", "addCustomAgent": "Magdagdag ng custom na agent", @@ -12362,7 +12369,7 @@ "description": "Gumawa at pamahalaan ang mga secure na tunnel (ngrok, Cloudflare Tunnel, custom) upang ilantad ang OmniRoute sa internet o ibahagi ang access sa mga malayuang agent at mga CI pipeline." }, "omni-sync-cloud": { - "name": "Cloud Sync", + "name": "Pag-sync sa Cloud", "description": "I-synchronize ang configuration, mga koneksyon ng provider, at mga setting ng OmniRoute papunta/mula sa cloud storage. Pamahalaan ang awtentikasyon ng cloud worker at mga malayuang target ng backup." }, "omni-db-backups": { @@ -12371,42 +12378,42 @@ }, "omni-webhooks": { "name": "Mga Webhook", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Magrehistro, maglista, magsubok, at mag-alis ng mga webhook endpoint. I-configure ang mga subscription sa event (request.completed, request.failed, quota.exceeded, atbp.) at pamahalaan ang mga muling pagtatangkang maghatid." }, "omni-mcp": { - "name": "MCP Server", - "description": "Connect to the OmniRoute MCP server (110 tools, 3 transports: SSE/stdio/HTTP). Covers routing, cache, compression, memory, skills, providers, and audit tools across 33 permission scopes." + "name": "Server ng MCP", + "description": "Kumonekta sa OmniRoute MCP server (110 tool, 3 transport: SSE/stdio/HTTP). Saklaw nito ang routing, cache, compression, memory, skills, providers, at mga audit tool sa 33 saklaw ng pahintulot." }, "omni-agents-a2a": { "name": "Mga Agent at A2A Protocol", "description": "Makipag-ugnayan sa OmniRoute sa pamamagitan ng JSON-RPC 2.0 agent-to-agent protocol. 6 na built-in na A2A skill: smart-routing, quota-management, provider-discovery, cost-analysis, health-report, list-capabilities." }, "omni-version-manager": { - "name": "Version Manager", + "name": "Tagapamahala ng Bersyon", "description": "Mag-install, magsimula, maghinto, mag-restart, at mag-update ng mga naka-embed na serbisyo (9Router, CLIProxyAPI). Subaybayan ang status ng serbisyo, kumuha ng mga log, at i-configure ang auto-start para sa mga local-only na service endpoint." }, "omni-inference": { - "name": "Inference (OpenAI-compatible)", + "name": "Inference (compatible sa OpenAI)", "description": "Ang mga pangunahing OpenAI-compatible na inference endpoint: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank, at ang Responses API. Ang pangunahing integration surface para sa mga AI agent." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Maghatid", "description": "Magsimula, maghinto, at mag-restart ng OmniRoute server mula sa CLI. Pamahalaan ang daemon mode, configuration ng port, auto-recovery, integration sa system tray, at ang shortcut para buksan ang dashboard." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Kalagayan", "description": "Suriin ang kalusugan ng server, status ng bahagi, at mga live na metric mula sa CLI. Patakbuhin ang `health`, `health components`, at `health watch` para sa isang real-time na dashboard ng mga circuit breaker at status ng provider." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Mga Provider", "description": "Pamahalaan ang mga koneksyon ng provider mula sa CLI: ilista ang mga available/configured na provider, magdagdag, mag-test, mag-test-all, mag-validate, mag-rotate ng mga API key, at tingnan ang mga metric bawat provider." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Mga API Key", "description": "Gumawa, maglista, mag-rotate, at mag-revoke ng mga OmniRoute API key mula sa CLI. Pamahalaan ang mga OAuth flow para sa authentication ng provider at suriin ang mga scope at expiration ng key." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: Mga Modelo", "description": "Mag-query ng mga available na AI model, maglista ng mga alias ng model, at i-browse ang buong catalog ng model mula sa CLI. I-filter ayon sa provider, maghanap ayon sa kakayahan, at lutasin ang mga variant ng pangalan ng model." }, "cli-chat": { @@ -12414,23 +12421,23 @@ "description": "Magpadala ng mga chat completion, mag-stream ng mga tugon, at magsimula ng interactive na REPL session mula sa CLI. Sinusuportahan ang lahat ng OmniRoute provider, combo routing, at configuration ng system prompt." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: Pagruruta at mga Combo", "description": "Gumawa, maglista, mag-update, at mag-delete ng mga routing combo mula sa CLI. Subukan ang mga diskarte sa routing, suriin ang mga metric ng combo, at i-configure ang mga fallback chain nang interactive." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: Katatagan at mga Quota", "description": "Suriin at pamahalaan ang mga estado ng circuit-breaker, mga cooldown ng koneksyon, mga limitasyon sa quota, at mga antas ng backoff mula sa CLI. I-reset ang mga na-stuck na provider at i-configure ang mga threshold ng resilience." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: Kompresyon", "description": "I-configure at subukan ang prompt compression mula sa CLI. Pamahalaan ang mga RTK filter, mga panuntunan ng Caveman, mga stacked compression mode, at i-preview ang output ng compression gamit ang mga totoong prompt." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: Mga Konteksto at Session", "description": "Pamahalaan ang mga configuration ng context engineering, mga RTK filter set, at mga session ng pag-uusap mula sa CLI. Ilapat ang mga setting ng context-relay at suriin ang mga aktibong context pipeline." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: Gastos at Paggamit", "description": "Tingnan ang mga breakdown ng gastos, paggamit ng token, at mga log ng tawag mula sa CLI. I-filter ayon sa provider, model, o hanay ng petsa. Mag-export ng mga ulat sa paggamit at suriin ang paggastos bawat koneksyon." }, "cli-mcp": { @@ -12438,19 +12445,19 @@ "description": "Suriin ang status ng MCP server, ilista ang mga nakarehistrong tool at scope, patakbuhin ang mga invocation ng tool, at pamahalaan ang mga MCP audit log mula sa CLI." }, "cli-a2a": { - "name": "CLI: A2A Protocol", + "name": "CLI: Protokol ng A2A", "description": "Makipag-ugnayan sa OmniRoute A2A server mula sa CLI. Magpadala ng mga gawain, suriin ang kasaysayan ng pagpapatakbo ng skill, at subukan ang JSON-RPC 2.0 agent-to-agent protocol nang interactive." }, "cli-tunnel": { - "name": "CLI: Tunnels", + "name": "CLI: Mga Tunnel", "description": "Magsimula at maghinto ng mga koneksyon sa tunnel (ngrok, Cloudflare, custom) mula sa CLI. Suriin ang mga aktibong URL ng tunnel, i-configure ang authentication, at subukan ang panlabas na reachability." }, "cli-backup-sync": { - "name": "CLI: Backup & Sync", + "name": "CLI: Backup at Pag-sync", "description": "I-backup at i-restore ang data ng OmniRoute mula sa CLI. Mag-trigger ng mga incremental snapshot, mag-sync sa cloud storage, pamahalaan ang mga iskedyul ng backup, at i-restore mula sa mga archive file." }, "cli-policy-audit": { - "name": "CLI: Policy & Audit", + "name": "CLI: Patakaran at Audit", "description": "Suriin ang mga audit log, pamahalaan ang mga patakaran sa pag-access, tingnan ang data ng telemetry, at suriin ang kasaysayan ng kahilingan mula sa CLI. I-filter ayon sa uri ng event, user, o hanay ng oras para sa mga workflow ng pagsunod." }, "cli-batches": { @@ -12470,11 +12477,11 @@ "description": "Patakbuhin ang paunang setup, i-configure ang mga pandaigdigang setting ng CLI, pamahalaan ang mga environment variable, mag-check para sa mga update, at i-configure ang autostart sa pamamagitan ng mga command sa setup at config ng CLI." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI: Tagakolekta ng Kasanayan ng Agent", "description": "I-detect ang mga naka-install na CLI coding tool (Claude Code, Codex, Cursor, Copilot, Cline at iba pa), maghanap sa GitHub ng mga tumutugmang skill ng agent, at i-install ang mga ito sa mga na-detect na tool sa pamamagitan ng mga built-in na API ng OmniRoute." }, "config-codex-cli": { - "name": "Config: Codex CLI", + "name": "Konfigurasyon: Codex CLI", "description": "Hakbang-hakbang na workflow ng agent para i-configure ang OpenAI Codex CLI sa anumang makina (Linux, macOS, Windows) para gamitin ang OmniRoute bilang isang OpenAI-compatible na backend. Inaalam ang OS at shell, isinusulat ang config.toml at 7 pinangalanang profile, itinatakda ang mga environment variable, at bini-verify ang setup." }, "omni-github-skills": { @@ -12514,12 +12521,12 @@ "omni": "OmniRoute mismo (hina-intercept ang tool_calls, Docker sandbox)" }, "storage": { - "label": "Storage", + "label": "Imbakan", "agent": "Dinamikong katalogo (/api/agent-skills) → SKILL.md sa GitHub", "omni": "SQLite (SkillsMP / skills.sh / lokal)" }, "tagline": { - "label": "Tagline", + "label": "Slogan", "agent": "Turuan ang iyong agent na gamitin ang OmniRoute", "omni": "Magbigay ng mga executable na tool sa mga modelo ng OmniRoute" } @@ -12527,15 +12534,15 @@ }, "filters": { "category": "Kategorya", - "area": "Area", + "area": "Lugar", "searchPlaceholder": "Maghanap ng mga kasanayan…" }, "categoryApi": "API", "categoryCli": "CLI", - "categoryConfig": "Config", + "categoryConfig": "Konfigurasyon", "filterAll": "Lahat", "coverageLabel": "Saklaw", - "mcpUrl": "MCP URL", + "mcpUrl": "URL ng MCP", "a2aLink": "A2A", "mcpPrompt": "Idagdag ang MCP endpoint na ito sa iyong agent para bigyan ito ng 37 OmniRoute tool.", "a2aPrompt": "I-rehistro ang Agent Card na ito sa iyong orchestrator para paganahin ang delegasyon ng gawain sa A2A.", @@ -12564,39 +12571,39 @@ "emptyState": "Wala pang available na mga ranggo. Nagsi-sync ang data ng Arena ELO sa pagsisimula (araw-araw) — bumalik na lang mamaya, o mag-trigger ng manu-manong pag-sync. I-disable ang Arena ELO Sync sa Feature Flags o i-set ang ARENA_ELO_SYNC_ENABLED=false para mag-opt out.", "bestModel": "Pinakamahusay", "allCategories": "Lahat ng Kategorya", - "categoryDefault": "Default", - "categoryCoding": "Coding", + "categoryDefault": "Paunang-takda", + "categoryCoding": "Pagko-code", "categoryReview": "Pagsusuri", "categoryDocumentation": "Dokumentasyon", - "categoryDebugging": "Debugging", + "categoryDebugging": "Pag-debug", "colRank": "Ranggo", - "colProvider": "Provider", + "colProvider": "Tagapagbigay", "colTopModel": "Nangungunang Modelo", - "colScore": "Score", - "colAvgScore": "Avg Score", + "colScore": "Iskor", + "colAvgScore": "Average na Iskor", "colModels": "Mga Modelo", - "colType": "Type", + "colType": "Uri", "filterConfiguredOnly": "Naka-configure lang", "filterAvailableOnly": "Available lang", "filterAvailableOnlyHelp": "Itago ang mga provider na ang lahat ng koneksyon ay rate-limited o wala nang quota.", "configuredOnly": "Naka-configure Lang", "configuredOnlyHint": "Ipakita lang ang mga provider na may aktibong koneksyon", "noConfiguredProviders": "Walang nahanap na naka-configure na provider. Magdagdag muna ng koneksyon ng provider.", - "colConfigured": "Status", + "colConfigured": "Katayuan", "typeAll": "Lahat ng Uri", "typeNoauth": "Walang Signup", - "typeOauth": "OAuth Login", - "typeApikey": "API Key", + "typeOauth": "Pag-login gamit ang OAuth", + "typeApikey": "Susi ng API", "sortTypeFirst": "Pinakamadali muna", "sortTypeFirstHelp": "I-grupo ayon sa hirap ng pag-signup (Walang Signup → OAuth Login → API Key), habang pinapanatili ang pagkakasunod-sunod ng kalidad sa bawat grupo", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Pinakamaaasahan muna", + "sortByReliabilityHelp": "Ayusin ang mga provider ayon sa proporsyon ng mga tawag na nagtagumpay sa napiling panahon. Ang mga provider na may napakakaunting tawag upang matukoy ang rate ay mananatili sa pagkakasunod-sunod ayon sa kanilang iskor, sa ibaba ng mga nasukat.", "typeLegend": "Walang Signup = zero setup · OAuth Login = mag-sign in gamit ang sarili mong account · API Key = magdala ng sarili mong key o ang libreng tier ng provider na iyon", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Pagiging Maaasahan", + "colReliabilityHelp": "Proporsyon ng mga tawag na aktuwal na sinagot ng provider na ito sa nakalipas na 24 na oras. Ang gitling ay nangangahulugang napakakaunti ng trapikong pinangasiwaan nito upang matukoy ang rate.", + "reliabilitySample": "Matagumpay ang {successes} sa {requests} tawag sa nakalipas na {hours} oras", + "reliabilityTooFew": "{requests} tawag lang sa nakalipas na {hours} oras — masyadong kaunti para matukoy ang rate", + "reliabilityNoTraffic": "Walang naitalang tawag sa nakalipas na 24 oras" }, "discovery": { "title": "Pagtuklas ng Provider", @@ -12619,8 +12626,8 @@ "emptyDescription": "Magpatakbo ng pag-scan sa itaas para maghanap ng mga libreng paraan ng pag-access sa isang provider.", "risk": "Panganib", "method": "Paraan", - "auth": "Auth", - "feasibility": "Feasibility", + "auth": "Pagpapatotoo", + "feasibility": "Pagiging posible", "models": "Mga Modelo" }, "noAuthProvider": { @@ -12628,7 +12635,7 @@ "description": "Handa nang gamitin agad ang provider na ito — hindi kailangan ng signup o API key.", "accountDescription": "Handa nang gamitin — hindi kailangan ng signup. Magdagdag ng mga account para sa rate-limit rotation.", "addAccount": "Magdagdag ng Account", - "accountName": "{provider} Account {number}", + "accountName": "Account {number} ng {provider}", "accounts": "Mga Account ({count})", "adding": "Idinaragdag...", "autoGeneratedAccount": "Gumagamit ng auto-generated na account. Piliin ang “{addLabel}” para sa rate-limit rotation.", @@ -12637,7 +12644,7 @@ "removeAccount": "Alisin ang account", "proxyForAccount": "Proxy para sa Account {number}", "saved": "Na-save", - "custom": "Custom", + "custom": "Pasadya", "noSavedProxies": "Walang na-save na mga proxy — magdagdag ng isa sa Settings → Proxy", "directConnection": "Direkta (walang proxy)", "host": "Host", @@ -12680,21 +12687,21 @@ "profileLoadFailed": "Hindi ma-load ang data ng profile", "levelTitles": { "beginner": "Baguhan", - "explorer": "Explorer", + "explorer": "Eksplorer", "expert": "Eksperto", - "master": "Master", - "legend": "Legend" + "master": "Pangunahin", + "legend": "Alamat" }, "tiers": { - "bronze": "Bronze", - "silver": "Silver", - "gold": "Gold", + "bronze": "Tanso", + "silver": "Pilak", + "gold": "Ginto", "platinum": "Platinum", - "diamond": "Diamond" + "diamond": "Diyamante" }, - "tierLabel": "Tier: {tier}", + "tierLabel": "Antas: {tier}", "dayStreak": "{count}-araw na streak", - "levelProgress": "Level {current} → {next}", + "levelProgress": "Antas {current} → {next}", "totalXpEarned": "{count} kabuuang XP na nakuha", "maintainStreak": "Patuloy na gamitin ang OmniRoute araw-araw upang mapanatili ang iyong streak!", "badgesTitle": "Mga Badge ({earned}/{total})", @@ -12707,21 +12714,21 @@ "common": "Karaniwan", "uncommon": "Hindi Karaniwan", "rare": "Bihira", - "epic": "Epic", - "legendary": "Legendary" + "epic": "Epiko", + "legendary": "Maalamat" }, "categories": { "usage": "Paggamit", "sharing": "Pagbabahagi", "contribution": "Kontribusyon", - "streak": "Streak", + "streak": "Sunod-sunod", "rare": "Mga bihirang achievement" }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Tagasuporta ng Radar", + "description": "Nag-verify ng aktibong feed ng tagasuporta ng OmniRoute Radar", + "criteria": "I-verify ang nilagdaang aktibong feed ng tagasuporta ng Radar." }, "first-token": { "name": "Unang Token", @@ -12729,17 +12736,17 @@ "criteria": "Kumpletuhin ang iyong unang API request sa pamamagitan ng OmniRoute." }, "token-consumer": { - "name": "Token Consumer", + "name": "Konsyumer ng Token", "description": "Nagawa ang 1,000 API request", "criteria": "Kumpletuhin ang 1,000 API request sa pamamagitan ng OmniRoute." }, "token-machine": { - "name": "Token Machine", + "name": "Makina ng Token", "description": "Gumawa ng 10,000 API request", "criteria": "Kumpletuhin ang 10,000 API request sa pamamagitan ng OmniRoute." }, "token-whale": { - "name": "Token Whale", + "name": "Balyena ng Token", "description": "Gumawa ng 100,000 API request", "criteria": "Kumpletuhin ang 100,000 API request sa pamamagitan ng OmniRoute." }, @@ -12754,7 +12761,7 @@ "criteria": "Magbahagi ng kabuuang 10,000 token sa ibang mga user." }, "token-santa": { - "name": "Token Santa", + "name": "Santa ng Token", "description": "Nagbahagi ng 100,000 token sa iba", "criteria": "Magbahagi ng kabuuang 100,000 token sa ibang mga user." }, @@ -12764,12 +12771,12 @@ "criteria": "Magbahagi ng kabuuang 1,000,000 token sa ibang mga user." }, "explorer": { - "name": "Explorer", + "name": "Eksplorer", "description": "Gumamit ng 5 magkakaibang provider", "criteria": "Gumamit ng hindi bababa sa 5 magkakaibang AI provider." }, "polyglot": { - "name": "Polyglot", + "name": "Poliglota", "description": "Gumamit ng 10 magkakaibang model", "criteria": "Gumamit ng hindi bababa sa 10 magkakaibang AI model." }, @@ -12779,7 +12786,7 @@ "criteria": "Gumawa ng 3 combo route." }, "speedster": { - "name": "Speedster", + "name": "Humarurot", "description": "Napanatili ang mas mababa sa 500 ms na average latency para sa 100 request", "criteria": "Panatilihin ang average latency na mas mababa sa 500 ms sa 100 request." }, @@ -12885,9 +12892,9 @@ "block": "I-block", "redact": "I-redact", "disabled": "Naka-disable", - "dual": "Dual", - "alias": "Alias", - "canonical": "Canonical" + "dual": "Dalawahan", + "alias": "Alyas", + "canonical": "Kanonikal" }, "definitions": { "REQUIRE_API_KEY": { @@ -12948,8 +12955,8 @@ "description": "Payagan ang maraming koneksyon para sa bawat compatibility node." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "I-disable ang mga Pagsusuri sa Context Window", + "description": "Laktawan ang lokal na pagsusuri ng OmniRoute sa context window at maximum na input token para sa mga direktang kahilingan sa iisang modelo. Ipinapatupad pa rin ng mga upstream provider ang kanilang aktuwal na limitasyon. Mananatiling aktibo ang prompt compression at mga limitasyon sa output token." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Alisin ang mga panloob na output item ng commentary-phase mula sa mga passthrough stream ng Responses API bago ipasa ang mga ito sa mga client. I-disable ang flag na ito upang makatanggap ng raw upstream commentary." @@ -12985,7 +12992,7 @@ "description": "Payagan ang pagbawi ng stream na hilingin muli ang tugon at pagdugtungin ito pagkatapos makarating na ang mga byte sa client." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Gawing ligtas para sa tool call ang pagpapatuloy sa kalagitnaan ng stream: huwag kailanman ipagpatuloy ang naputol na stream matapos maipadala ang isang tool call (isinasagawa pa man o tapos na), at huminto pagkatapos ng isang walang-lamang pagpapatuloy sa halip na gamitin ang buong nakalaang bilang ng retry." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Lumipat nang minsan sa isang kapatid na koneksyon kapag nagsara ang stream bago magpadala ng anumang kapaki-pakinabang na frame at nagamit na ang limitadong muling pagsubok sa parehong koneksyon. Kung walang magagamit na kapatid na koneksyon, ibinabalik ang orihinal na error na early-EOF. Naka-off: nananatiling pinal ang early-EOF pagkatapos ng muling pagsubok." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "I-enable ang access sa network sa skills sandbox." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Tool Loop na Pinamamahalaan ng Server", + "description": "Ipagpatuloy ang mga non-streaming na tool call na pinamamahalaan ng server hanggang sa magbalik ang modelo ng tugon na magagamit ng client." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Pinagmulan ng Retry-After", + "description": "Sa pinagsama-samang 429/503 na tugon ng kawalan ng availability, huwag isama ang Retry-After kapag walang tiyak na oras ng retry sa hinaharap na nalalaman sa halip na magpadala ng artipisyal na 1s, idagdag ang error.retry_after_provenance, at basahin ang mga pahiwatig sa prose tungkol sa retry sa mga combo drain path." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Humihinto bilang 502 ang Protektadong-Priyoridad na Imprastraktura", + "description": "Ibalik ang 502 sa halip na 503 kapag pinahinto ng isang priyoridad na target na may fallback para lamang sa quota ang kumbinasyon dahil sa isang sanhi na mapatutunayang hindi quota: isang bukas na circuit breaker ng provider o paglaktaw batay sa hinulaang latency." } } }, @@ -13037,8 +13048,8 @@ "sort": { "label": "Ayusin ayon sa", "method": { - "manual": "Manual", - "provider": "Provider", + "manual": "Manwal", + "provider": "Tagapagbigay", "score": "Iskor (libreng modelo)", "name": "Pangalan" }, @@ -13046,7 +13057,7 @@ } }, "comboControl": { - "title": "Combo Control Center", + "title": "Sentro ng Kontrol ng Combo", "unavailable": "Hindi available ang Combo Control Center", "backToCombos": "Bumalik sa Mga Combo", "loadFailed": "Nabigong i-load ang combo control center", @@ -13054,7 +13065,7 @@ "healthy": "Maayos", "warning": "Nangangailangan ng pansin", "critical": "Kritikal", - "idle": "Idle" + "idle": "Hindi Aktibo" }, "active": "Aktibo", "disabled": "Naka-disable", @@ -13064,7 +13075,7 @@ "requests": "Mga Request", "success": "Tagumpay", "latency": "Latency", - "quota": "Quota", + "quota": "Kota", "rangeWindow": "{range} na window", "runtimeHealthBlend": "blend ng runtime/health", "averageResponseTime": "karaniwang oras ng pagtugon", @@ -13092,7 +13103,7 @@ "configuredTargets": "Mga na-configure na target", "configuredTargetsDescription": "Ang mga na-save na hakbang ng combo, na dinagdagan ng tumutugmang data ng health kapag available.", "noConfiguredTargets": "Walang na-configure na mga target.", - "runtimeConfig": "Runtime config", + "runtimeConfig": "Konfigurasyon ng runtime", "runtimeConfigDescription": "Mga napiling advanced na setting para sa combo na ito.", "noRuntimeConfig": "Walang custom na runtime config.", "resolvedTargets": "Mga na-resolve na runtime target", @@ -13114,9 +13125,9 @@ "weight": "{value}% na timbang", "comboReference": "Sanggunian ng combo", "accountShort": "account {id}", - "keyShort": "key {id}", + "keyShort": "susi {id}", "stepShort": "hakbang {id}", - "dynamic": "dynamic", + "dynamic": "dinamiko", "unknown": "hindi kilala", "unknownProvider": "hindi kilalang provider", "unknownModel": "hindi kilalang modelo", @@ -13150,9 +13161,9 @@ "loadingUsdCosts": "Inilo-load ang mga gastusin sa USD", "used": "Nagamit", "quotaUsed": "Nagamit na quota", - "estimatedFullQuota": "Est. 100%", + "estimatedFullQuota": "Tinatayang 100%", "rows": "Mga Hilera", - "window": "Window", + "window": "Palugit", "unknown": "hindi alam", "fromRecordedReset": "Mula sa naitalang pag-reset ng {quota}", "fromObservedReset": "Mula sa naobserbahang pag-reset ng {quota}", @@ -13171,9 +13182,9 @@ "segmentHint": "Bawat segment = isang libreng pool · pool-deduped, tapat na pagbibilang (walang pinalobong mga ceiling ng rate-limit).", "boost": "I-unlock ang ~{tokens} pa/buwan gamit ang isang beses na $10 OpenRouter top-up (50 → 1000 req/araw)", "uncapped": "Permanenteng libre, walang nai-publish na limitasyon (rate-limited) — totoong access, hindi binibilang sa headline:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/buwan pa sa likod ng panrehiyong pagsusuri ng pagkakakilanlan (hal. real-name verification sa mainland China) — aktuwal na quota, hindi kasama sa pangunahing bilang:", "tosRestricted": "{count, plural, one {# modelo} other {# na modelo}} ang na-flag bilang ToS-restricted — ikaw ang magpasya", - "provider": "Provider", + "provider": "Tagapagbigay", "model": "Modelo", "modelName": "Pangalan ng modelo", "type": "Uri", @@ -13187,7 +13198,7 @@ "creditMonthly": "credit/buwan", "uncapped": "walang limitasyon", "signupCredit": "credit sa pag-sign up", - "keyless": "keyless", + "keyless": "walang key", "discontinued": "itinigil na" }, "tosTitle": { @@ -13220,11 +13231,11 @@ "providerMetrics": "iskor {score}% · aktibo {active}/{total} · cooldown {cooldown} · mga lockout ng modelo {lockouts}", "providerState": { "healthy": "maayos", - "degraded": "degraded", - "down": "down" + "degraded": "humina", + "down": "hindi gumagana" }, "severity": { - "info": "info", + "info": "impormasyon", "warning": "babala", "critical": "kritikal" }, @@ -13260,7 +13271,7 @@ }, "changelogPage": { "newsTab": "Balita", - "changelogTab": "Changelog", + "changelogTab": "Talaan ng mga Pagbabago", "loading": "Naglo-load ng changelog...", "announcementsLoadFailed": "Hindi mai-load ang mga anunsyo. Pakisubukan muli mamaya.", "noAnnouncements": "Walang mga bagong anunsyo sa kasalukuyan.", @@ -13270,90 +13281,90 @@ "viewFullHistory": "Tingnan ang buong history sa GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "Mga patakaran sa reasoning routing", + "apiKeyTitle": "Reasoning routing para sa API key na ito", + "subtitle": "Muling iruta ang mga modelo at antas ng reasoning nang hindi nangangailangan ng suporta mula sa client. Mananatiling hindi nagbabago ang mga kahilingan kapag walang tumugmang panuntunan.", + "loadError": "Hindi ma-load ang mga panuntunan sa reasoning.", + "saveError": "Hindi wasto ang panuntunan o hindi ito ma-save.", + "saved": "Na-save ang panuntunan sa reasoning.", + "deleteConfirm": "I-delete ang panuntunang ito sa reasoning?", + "deleteError": "Hindi ma-delete ang panuntunan sa reasoning.", + "empty": "Walang naka-configure na tumutugmang panuntunan sa reasoning.", + "all": "Lahat", + "any": "Anuman", + "enabled": "Naka-enable", + "disabled": "Naka-disable", + "filterSearch": "Maghanap ng mga panuntunan", + "filterScope": "I-filter ayon sa saklaw", + "filterStatus": "I-filter ayon sa status", + "allModels": "lahat ng modelo", + "keepModel": "Panatilihin ang modelo", + "otherModel": "Ibang modelo", + "combo": "Kombinasyon", + "priorityShort": "priyoridad {value}", + "toggleAria": "I-enable ang {name}", + "edit": "I-edit", + "delete": "I-delete", + "name": "Pangalan", + "description": "Paglalarawan", + "scopeLabel": "Saklaw", + "apiKey": "Susi ng API", + "sourceCombo": "Pinagmumulang kombinasyon", + "connection": "Koneksyon", + "sourceModel": "Pinagmumulang modelo o wildcard", + "sourceModelOptional": "Walang laman = lahat ng modelo", + "sourceModelExample": "hal. gpt-5*", + "sourceEffort": "Antas ng pagsisikap ng pinagmulan", + "missing": "Hindi tinukoy", + "signalOnly": "Hindi diskretong signal ng pangangatwiran", + "requestTags": "Mga tag ng request", + "requestTagsExample": "pagko-code, panloob", + "tagMode": "Pagtutugma ng tag", + "effortMode": "Mode ng pagsisikap", + "targetEffort": "Target na antas ng pagsisikap", + "routingTarget": "Target ng routing", + "targetModel": "Target na modelo", + "targetCombo": "Target na kombinasyon", + "budgetAction": "Badyet sa pag-iisip", + "budgetTokens": "Mga token ng badyet", + "priority": "Priyoridad", + "saveChanges": "I-save ang mga pagbabago", + "add": "Magdagdag ng panuntunan", + "cancel": "Kanselahin", + "simulateTitle": "I-simulate ang panuntunan", + "model": "Modelo", + "effort": "Pagsisikap", + "transport": "Transportasyon", + "simulate": "I-simulate nang walang upstream", + "extendedComboWarning": "Hiwalay na bina-validate ang Max/Ultra para sa bawat combo target habang nagru-routing.", + "extendedUnknownWarning": "Maglagay ng target na modelo upang i-verify ang suporta sa Max/Ultra.", + "extendedUnsupportedWarning": "Tanging ang mga angkop na modelong Codex GPT-5.6 ang kilalang sumusuporta sa Max/Ultra. Tinatanggap ng server ang mga hindi kilalang custom na modelo nang may babala.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "Pangkalahatan", + "apiKey": "Susi ng API", + "combo": "Kumbinasyon", + "model": "Modelo", + "connection": "Koneksyon" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Manahin mula sa client", + "default": "Gamitin ang default", + "force": "Ipilit" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Panatilihin", + "remove": "Alisin", + "set": "Magtakda ng nakapirming value" } }, "chaosConfig": { - "pageTitle": "Chaos Mode", + "pageTitle": "Mode ng Kaguluhan", "pageSubtitle": "Magpatakbo ng maramihang AI model nang sabay-sabay o sa paraang nagtutulungan sa parehong gawain", "enableChaos": "I-enable ang Chaos Mode", "enableChaosDesc": "Payagan ang mga API key na may naka-enable na chaos mode na gamitin ang feature na ito", - "mode": "Default Mode", - "modeParallel": "Parallel", - "modeCollaborative": "Collaborative", + "mode": "Default na Mode", + "modeParallel": "Sabay-sabay", + "modeCollaborative": "Kolaboratibo", "modeParallelDesc": "Sabay-sabay na tatakbo ang lahat ng modelo — pinakamabilis na resulta", "modeCollaborativeDesc": "Magkakasunod na naglalabas ng output ang mga modelo — nakikita ng bawat isa ang nakaraang resulta", "timeout": "Timeout (ms)", @@ -13362,7 +13373,7 @@ "systemPromptDesc": "Mga custom na tagubilin para sa lahat ng instance ng chaos mode model", "providerOverrides": "Mga Override ng Provider", "providerOverridesDesc": "Pumili ng mga partikular na modelo bawat provider para sa chaos mode", - "providerId": "Provider", + "providerId": "Tagapagbigay", "modelId": "Modelo", "addProvider": "Magdagdag ng Provider", "removeProvider": "Alisin", @@ -13382,8 +13393,8 @@ "maxTokensDesc": "Pinakamataas na token bawat tugon ng modelo. Mas mataas na value ay mas mahal at mas matagal.", "providerIdPlaceholder": "Provider ID (i-type o piliin)", "modelIdPlaceholder": "Model ID (opsyonal)", - "on": "ON", - "off": "OFF", + "on": "NAKA-ON", + "off": "NAKA-OFF", "availableProviders": "Mga available na provider ({count})", "noProviderOverrides": "Walang mga override — lahat ng aktibong provider ay lalahok gamit ang kanilang mga default na modelo", "resetFailed": "Nabigong i-reset", @@ -13407,165 +13418,165 @@ }, "featureFlagExposeFunctionalGatewayMirrorsDescription": "I-anunsyo ang / mirror ids sa /v1/models para sa mga modelong ang canonical owner ay walang aktibong credential ngunit may passthrough gateway na may aktibong credential na nagruruta sa kanila. Babala: nagdadagdag ng mga entry sa katalogo para sa lahat ng kliyente kapag pinagana nang globally.", "radarPage": { - "title": "Radar Catalog", - "subtitle": "Free model catalog enriched with community intelligence", - "loading": "Loading catalog...", - "errorLoading": "Failed to load Radar catalog", - "emptyState": "No catalog data yet. Sync to download the latest feed.", - "syncNow": "Sync now", - "syncing": "Syncing...", - "syncCta": "Sync now", - "syncFailed": "Sync failed", - "flagDisabled": "Radar is disabled", - "activationFailed": "Activation failed", - "feedVersion": "Feed version", - "feedTier": "Tier", - "feedFetched": "Last fetched", + "title": "Katalogo ng Radar", + "subtitle": "Katalogo ng mga libreng modelo na pinahusay gamit ang kaalaman ng komunidad", + "loading": "Nilo-load ang katalogo...", + "errorLoading": "Hindi na-load ang katalogo ng Radar", + "emptyState": "Wala pang datos sa katalogo. Mag-sync upang i-download ang pinakabagong feed.", + "syncNow": "Mag-sync ngayon", + "syncing": "Nagsi-sync...", + "syncCta": "Mag-sync ngayon", + "syncFailed": "Hindi nagtagumpay ang pag-sync", + "flagDisabled": "Naka-disable ang Radar", + "activationFailed": "Hindi nagtagumpay ang pag-activate", + "feedVersion": "Bersyon ng feed", + "feedTier": "Antas", + "feedFetched": "Huling kinuha", "tierLive": "Live (real-time)", - "tierCommunity": "Community (30-day delay)", - "activateTitle": "Activate Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", - "activating": "Activating...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", - "colProvider": "Provider", - "colModel": "Model", - "colQuota": "Quota", - "colContext": "Context", - "colCapabilities": "Capabilities", - "colTos": "ToS Risk", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", - "newBadge": "new", - "setupGuide": "Setup guide", - "disabledByFeed": "Disabled by Radar feed", - "capTools": "Tools", - "capVision": "Vision", - "capThinking": "Thinking", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "tierCommunity": "Komunidad (30 araw na pagkaantala)", + "activateTitle": "I-activate ang Radar", + "activateDescription": "Ihambing ang access ng Komunidad at live na access, unawain kung ano ang ipinagpapalit ng iyong instalasyon, at pagkatapos ay piliin kung paano ia-activate ang Radar.", + "accessScaleTitle": "Unawain ang access sa Radar bago i-activate", + "accessScaleIntro": "Mananatiling hindi aktibo sa network ang Radar hanggang sa pumayag ka. Piliin ang access na Community o mag-activate ng personal na supporter key pagkatapos suriin ang mga panuntunang ito.", + "accessCommunityRule": "Community — walang kailangang key: ang kumpletong catalog na may 30 araw na pagkaantala.", + "accessSingleUseRule": "Mag-star + mag-follow — pagkatapos ma-verify ng GitHub OAuth ang dalawa, makakatanggap ang iyong GitHub account ng isang beses na pagbasa sa live catalog; pagkatapos ay babalik sa Community ang access. Hindi maaaring muling ibigay sa account na iyon ang minsanang access na ito.", + "accessContributorRule": "Mga contributor — ang mga na-merge na PR, commit, at linya ay ginagamit lamang sa pagsasaayos ng lingguhang ranggo. Makakatanggap ang Top 10 ng 365 araw; ang mga nasa ranggong 11–100 ay makakatanggap ng 90 araw; walang matatanggap na access ang mga contributor na wala sa Top 100 anuman ang bilang ng PR. Ang pagkawala sa ranggo ay hindi kailanman magpapaikli sa panahong naibigay na.", + "accessSupporterRule": "Mga supporter — ang minsanang pagbili ay nagbibigay ng 6 na buwan, 1 taon, o panghabambuhay na access nang walang awtomatikong pag-renew. Naiipon ang mga pagbili, donasyon, panahon bilang contributor, at manu-manong grant; palaging nangingibabaw ang panghabambuhay na access.", + "accessUseTitle": "Personal na paggamit, pagbawi, at pagsusuri", + "accessInstallationRule": "Personal na lisensya — gamitin ang key sa isang aktibong installation lamang sa bawat pagkakataon. Hindi kumukuha ang OmniRoute ng fingerprint ng hardware. Binabawi at pinapalitan ng recovery ang nawalang key nang hindi nire-reset ang expiration nito.", + "accessAbuseRule": "Pagsusuri sa pang-aabuso — ang ika-4 na natatanging IP sa loob ng 24 na oras ay gumagawa lamang ng flag para sa manu-manong pagsusuri; hindi nito kailanman awtomatikong bina-block o binabawi ang isang key.", + "accessOffersRule": "Manu-manong pinipili ang mga live na alok at maaaring magbago o mag-expire ang mga ito.", + "privacyTitle": "Ano ang ipinagpapalit ng Radar", + "privacyDownloadsRule": "Mga download — natatanggap ng iyong installation ang catalog at referral metadata na cryptographically signed; ina-unlock din ng wastong live key ang mga signed na alok at Intel.", + "privacySendsRule": "Ipinapadala — ipinapadala ng server-side sync ang supporter key bilang Bearer token, at natatanggap ng HTTPS infrastructure ang IP ng koneksyon. Hindi iniimbak nang raw ng accounting ng mga feed request ang alinmang value: pinananatili nito ang mga key hash, pinagsama-samang paggamit, at araw-araw na nagbabagong truncated IP HMAC para sa pagsusuri sa pang-aabuso.", + "privacyNeverRule": "Hindi kailanman kinokolekta — hindi kailanman ipinapadala sa Radar ang mga prompt, tugon, pag-uusap, credential ng provider, trapiko ng model, uptime, latency, at lokal na configuration ng provider.", + "activateButton": "I-activate ang Community", + "activating": "Ina-activate...", + "keySectionTitle": "May supporter key ka na?", + "keyInvalidFormatError": "Hindi wastong format ng key. Dapat itong magsimula sa \"omr_\" na sinusundan ng 40 hex character.", + "activateWithKeyButton": "I-activate ang supporter", + "changeKeyButton": "Palitan ang key", + "claimSectionTitle": "Wala ka pang supporter key?", + "contributorButton": "Contributor ako", + "contributorHint": "Sinusuri ng GitHub OAuth ang kasalukuyang lingguhang ranggo: makakakuha ang Top 10 ng 365 araw at ang mga nasa ranggong 11–100 ay makakakuha ng 90 araw. Ang bilang ng PR lamang ay hindi kailanman nagbibigay ng access sa mga wala sa Top 100.", + "supporterButton": "Suportahan ang proyekto", + "supporterHint": "Ang minsanang mga opsyon na 6 na buwan, 1 taon, at panghabambuhay ay walang awtomatikong pag-renew; naiipon ang mga kwalipikadong panahon at nangingibabaw ang panghabambuhay na access.", + "colProvider": "Tagapagbigay", + "colModel": "Modelo", + "colQuota": "Kota", + "colLimits": "Mga limitasyon sa rate", + "trainsOnPrompts": "Nagsasanay gamit ang mga prompt", + "trainsOnPromptsHelp": "Nakasaad sa mga tuntunin ng provider na ito na maaari itong magsanay gamit ang mga prompt na ipinapadala mo. Ang mga model na walang badge na ito ay nagsasaad na hindi nila ito ginagawa o hindi nila ito idinodokumento — ang kawalan ng pahayag ay hindi garantiya.", + "limitsUnknownHelp": "Mga limitasyong iniulat lamang ng Radar feed; walang inilathalang limitasyon para sa entry na ito", + "contextUnknownHelp": "Hindi alam ang context window para sa entry na ito", + "capabilityUnknownHelp": "Hindi iniulat ng feed ang kakayahan", + "colContext": "Konteksto", + "colCapabilities": "Mga kakayahan", + "colTos": "Panganib sa ToS", + "newBadge": "bago", + "setupGuide": "Gabay sa pag-setup", + "disabledByFeed": "Na-disable ng Radar feed", + "capTools": "Mga Tool", + "capVision": "Paningin", + "capThinking": "Pag-iisip", + "catalogTab": "Katalogo", + "freeCreditsTab": "Libreng credits", + "freeCreditsSubtitle": "Mga referral link mula sa mga provider na sinusubaybayan ng Radar — wala kang karagdagang gastos sa paggamit ng mga ito at nakatutulong itong suportahan ang OmniRoute.", + "fixedLinksEmpty": "Wala pang available na referral link. I-sync ang Radar para tingnan kung may mga update.", + "requiredActionLabel": "Ano ang gagawin:", + "claimButton": "Kunin ang credits", + "campaignsTitle": "Mga kampanyang limitado ang panahon", + "campaignsEmpty": "Walang aktibong kampanya ngayon — bumalik na lang mamaya.", + "campaignsUpsellCommunity": "Ang mga kampanyang limitado ang panahon ay dagdag na benepisyo para sa mga supporter. Ang lahat ng permanenteng link sa pahinang ito ay mananatiling libre para sa lahat.", + "campaignsValidUntil": "May bisa hanggang {date}", + "colActions": "Mga Aksyon", + "localBadge": "lokal", + "editModel": "I-edit", + "saveModel": "I-save", + "cancelEdit": "Kanselahin", + "resetModel": "I-reset ang mga lokal na pagbabago", + "hideModel": "Itago", + "restoreModel": "Ibalik", + "hiddenModelsTitle": "Mga nakatagong modelo", + "modelDisplayName": "Lokal na display name", + "modelEnabled": "Naka-enable nang lokal", + "localStateSaveFailed": "Hindi na-save ang mga lokal na setting ng Radar", + "guidedCombos": "Mga ginabayang combo", + "offers": "Mga Alok", + "intel": "Impormasyon" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Mga ginabayang combo ng Radar", + "subtitle": "Gumawa ng mga priyoridad na fallback mula sa magkakatumbas na libreng modelong pinili ng Radar.", + "backToRadar": "Bumalik sa Radar", + "loading": "Nilo-load ang mga mungkahing combo...", + "familyLabel": "Pamilya ng modelo", + "modelsLabel": "Pagkakasunod-sunod ng priyoridad", + "strategyReason": "Ginagamit muna ng priyoridad ang pinakamalaking umuulit na libreng badyet, pagkatapos ay lumilipat sa mga aktibong provider bilang fallback.", + "generateButton": "Bumuo ng combo", + "generating": "Binubuo...", + "alreadyCreated": "Nagawa na", + "created": "Nagawa na ang combo", + "noSuggestions": "Sa kasalukuyan, walang kwalipikadong pamilya ng modelo na may aktibong koneksyon sa hindi bababa sa dalawang provider.", + "catalogRequired": "I-sync muna ang catalog ng Radar upang i-load ang mga napiling pamilya ng modelo.", + "loadFailed": "Hindi na-load ang mga mungkahing combo ng Radar.", + "createFailed": "Hindi nagawa ang combo. Suriin ang iyong mga koneksyon sa provider at subukang muli." }, "radarSetupPage": { - "title": "Provider Setup", - "setupTitle": "Setup: {provider}", - "setupSubtitle": "Follow the steps below to configure this provider", - "loading": "Loading...", - "loadFailed": "Failed to load setup data", - "flagDisabled": "Radar is disabled", - "providerNotFound": "Provider \"{provider}\" not found in catalog", - "noProvider": "No provider specified. Return to the catalog and select a provider.", - "backToCatalog": "Back to catalog", - "providerConfigured": "Provider is configured and ready", - "getApiKey": "Get your API key", - "setupSteps": "Setup steps", - "noGuide": "No setup guide available for this provider.", - "visitDocs": "Visit provider docs", - "testConnection": "Test connection", - "testDescription": "Verify that your connection is working correctly.", - "testButton": "Test connection", - "testing": "Testing...", - "testSuccess": "Connection successful!", - "testFailed": "Connection test failed", - "addConnection": "Add connection", - "addConnectionDescription": "Don't have a connection yet? Add one in the providers dashboard.", - "addConnectionLink": "Go to providers →" + "title": "Pag-setup ng Provider", + "setupTitle": "Pag-setup: {provider}", + "setupSubtitle": "Sundin ang mga hakbang sa ibaba upang i-configure ang provider na ito", + "loading": "Naglo-load...", + "loadFailed": "Hindi na-load ang data ng pag-setup", + "flagDisabled": "Naka-disable ang Radar", + "providerNotFound": "Hindi makita sa catalog ang provider na \"{provider}\"", + "noProvider": "Walang tinukoy na provider. Bumalik sa catalog at pumili ng provider.", + "backToCatalog": "Bumalik sa catalog", + "providerConfigured": "Naka-configure at handa na ang provider", + "getApiKey": "Kunin ang iyong API key", + "setupSteps": "Mga hakbang sa pag-setup", + "noGuide": "Walang available na gabay sa pag-setup para sa provider na ito.", + "visitDocs": "Bisitahin ang dokumentasyon ng provider", + "testConnection": "Subukan ang koneksyon", + "testDescription": "Tiyaking gumagana nang maayos ang iyong koneksyon.", + "testButton": "Subukan ang koneksyon", + "testing": "Sinusubukan...", + "testSuccess": "Matagumpay ang koneksyon!", + "testFailed": "Nabigo ang pagsubok sa koneksyon", + "addConnection": "Magdagdag ng koneksyon", + "addConnectionDescription": "Wala ka pang koneksyon? Magdagdag ng isa sa dashboard ng mga provider.", + "addConnectionLink": "Pumunta sa mga provider →" }, "resilienceConnections": { "title": "Katatagan ng Koneksyon", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Awtomatikong bumabalik sa ayos ang iyong mga koneksyon", + "reassuranceDetail": "Karaniwang walang kailangang gawin. Pansamantalang ipinapahinga ng OmniRoute ang isang koneksyon pagkatapos ng mga pagkabigo, at pagkatapos ay ligtas itong sinusubukang muli.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Maaaring magpadala ng mga request", + "coolingDown": "Susubukang muli sa lalong madaling panahon", + "lockedOut": "Kailangan ng iyong pansin" }, "table": { "status": "Katayuan", - "provider": "Provider", + "provider": "Tagapagbigay", "connectionId": "Koneksyon", "authType": "Pagpapatunay", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "backoffLevel": "Palugit bago muling subukan", + "cooldown": "Panahon ng paghihintay", "lastError": "Huling Error", "lockouts": "Mga Lockout", "healthy": "Malusog", - "coolingDown": "Cooldown", + "coolingDown": "Panahon ng paghihintay", "circuitOpen": "Bukas ang Circuit", "recovering": "Gumagaling", "degraded": "Bumaba ang Kalidad", - "terminal": "Terminal", + "terminal": "Pinal", "unknown": "Hindi Alam", "never": "-" }, "timeline": { "title": "Mga Paglipat ng Breaker", - "window": "Window", + "window": "Saklaw ng oras", "window1h": "1oras", "window6h": "6oras", "window24h": "24oras", @@ -13589,7 +13600,7 @@ "detail": { "title": "Detalye ng Koneksyon", "metadata": "Metadata", - "cooldown": "Cooldown", + "cooldown": "Panahon ng paghihintay", "lastError": "Huling Error", "breaker": "Circuit Breaker", "lockouts": "Mga Lockout ng Modelo", @@ -13597,12 +13608,12 @@ "backoffLevel": "Antas ng Backoff", "remaining": "Natitira", "noLockouts": "Walang aktibong lockout", - "provider": "Provider", + "provider": "Tagapagbigay", "id": "ID", "authType": "Uri ng Pagpapatunay", "priority": "Priyoridad", "isActive": "Aktibo", - "errorCode": "Error Code", + "errorCode": "Code ng Error", "lastErrorAt": "Huling Error Noong", "yes": "Oo", "no": "Hindi", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Tanggihan ang mga kahilingan bago ang pagpapadala kapag ang target na modelo ay kulang sa mga kinakailangang kakayahan (paningin, mga tool, nakabalangkas na output, bintana ng konteksto). Pinoprotektahan ang mga direktang kahilingan mula sa isang tagapagbigay na lumalampas sa filter ng pagiging tugma ng combo-layer.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Laktawan ang lokal na pagsusuri ng OmniRoute sa context window at maximum na input token para sa mga direktang kahilingan sa iisang modelo. Ipinapatupad pa rin ng mga upstream provider ang kanilang aktuwal na limitasyon. Nananatiling aktibo ang prompt compression at mga limitasyon sa output token.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Binibilang lamang ng mga estadistika sa paghahanap at mga kamakailang paghahanap ang mga provider na mayroon pa ring aktibong koneksyon (palaging binibilang ang mga provider na walang susi gaya ng duckduckgo-free). Kapag naka-off, pinapanatili ang bawat nakaimbak na hilera ng paghahanap na may provider id.", "publicSystem": { "notFound": { "title": "Hindi matagpuan ang pahina", @@ -13655,7 +13666,7 @@ "error": { "title": "Panloob na Error sa Server", "description": "May nangyaring mali habang pinoproseso ang iyong kahilingan. Naabisuhan na ang aming koponan at nagtatrabaho na sa isang solusyon.", - "errorId": "Error ID: {id}", + "errorId": "ID ng Error: {id}", "detailsAriaLabel": "Mga detalye ng error", "retryAriaLabel": "Subukang i-load muli ang pahina", "tryAgain": "Subukan Muli", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "Impormasyon sa Pagpapanatili", "service": "Serbisyo", "unknown": "hindi kilala", - "notAvailable": "n/a", + "notAvailable": "hindi available", "providersTracked": "Mga Tagapagbigay na Nasusubaybayan", "circuitBreakerState": "Estado ng Circuit Breaker ng Provider", "lastUpdate": "Huling pag-update: {timestamp}", @@ -13794,7 +13805,7 @@ "githubDescription": "Mag-login gamit ang iyong GitHub account.", "importToken": "Mag-import ng Token", "importDescription": "I-paste ang isang refresh token na na-export mula sa {providerLabel}.", - "apiKey": "API Key", + "apiKey": "Susi ng API", "apiKeyDescription": "I-paste ang isang pangmatagalang {providerLabel} / CodeWhisperer API key. Ito ay naka-imbak bilang bearer credential na walang refresh token; ang pagtuklas ng profile ay best-effort.", "idcStartUrl": "IDC Simulan na URL", "idcStartUrlPlaceholder": "https://your-org.awsapps.com/start", @@ -13856,7 +13867,7 @@ "openSoloTrae": "Buksan ang solo.trae.ai", "orPasteManually": "o i-paste ang token nang manu-mano", "manualInstructions": "Mag-sign in sa solo.trae.ai, buksan ang DevTools → Network, magpadala ng anumang mensahe sa chat, at kopyahin ang JWT mula sa Authorization: Cloud-IDE-JWT {tokenPlaceholder} na request header. Ang buhay ng JWT ay ~14 na araw. Ang mga opsyonal na identity fields ay nagmumula sa common_params sa parehong request body.", - "accessTokenLabel": "Access Token (Cloud-IDE-JWT)", + "accessTokenLabel": "Token sa Pag-access (Cloud-IDE-JWT)", "webId": "Web ID", "optional": "opsyonal", "bizUserId": "ID ng Biz User", @@ -13882,7 +13893,7 @@ "close": "Isara", "model": "Modelo", "key": "Susi", - "defaultKey": "default", + "defaultKey": "paunang-takda", "clearConversation": "I-clear ang pag-uusap", "clear": "I-clear", "tabs": { @@ -13916,15 +13927,15 @@ "close": "Isara ang proxy detail modal", "time": "Oras", "latency": "Pagkaantala", - "clientIp": "Client IP", + "clientIp": "IP ng Kliyente", "proxy": "Proxy", "direct": "Direkta", "type": "I-type", "level": "Antas", "provider": "Tagapagbigay", - "tlsFingerprint": "TLS Fingerprint", + "tlsFingerprint": "Fingerprint ng TLS", "directNative": "Direkta", - "targetUrl": "Target URL", + "targetUrl": "Target na URL", "error": "Error", "configuration": "Konfigurasyon ng Proxy" }, @@ -13956,25 +13967,25 @@ "metadata": { "compressionTitle": "Pagsisikip", "compressionDescription": "I-configure ang mga setting ng compression ng konteksto upang mabawasan ang paggamit ng token at mga gastos.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — Mga Relay Proxy", "relayDescription": "Serverless relay proxy endpoints para sa iyong AI infrastructure", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Inspektor ng Trapiko — OmniRoute", "trafficInspectorDescription": "I-monitor ang mga tawag sa LLM + i-debug ang HTTPS na trapiko ng anumang aplikasyon" }, "conductor": { - "title": "Conductor — CLI-agent fleet", + "title": "Conductor — fleet ng CLI-agent", "subtitle": "OmniConductor hub: mga runner, pila ng gawain at mga konseho, live", "runners": "Mga Tumakbo", "tasks": "Mga Gawain", "colName": "Pangalan", - "colClis": "CLIs", + "colClis": "Mga CLI", "colStatus": "Katayuan", "colTask": "Gawain", - "colMode": "Mode", - "colRunner": "Runner", + "colMode": "Paraan", + "colRunner": "Tagapagpatakbo", "colSummary": "Buod", - "online": "online", - "offline": "offline", + "online": "nakakonekta", + "offline": "hindi nakakonekta", "draining": "nawawalan ng laman", "hubOffline": "Naka-offline ang conductor hub o hindi naka-configure (CONDUCTOR_HUB_URL) — walang ipinapakita kundi luma na data.", "noRunners": "Walang nakarehistrong runner", @@ -13990,7 +14001,7 @@ "cancelConfirmMessage": "Ang hub ay ititigil ang pagpapatupad sa runner. Ito ay hindi maibabalik.", "cancelFailed": "Tinanggihan ng hub ang pagkansela", "close": "Isara", - "error": "Error", + "error": "Pagkakamali", "faroTitle": "Faro — tagapagsalita ng fleet", "faroSubtitle": "Chat at boses, nakabatay sa mga totoong kaganapan ng fleet. Ang mga nakasisirang utos ay palaging humihingi ng kumpirmasyon.", "faroEmpty": "Tanungin ang tungkol sa fleet — hal. \"kamusta ang fleet?\"", @@ -14015,7 +14026,7 @@ "title": "Orkestrasyon", "description": "Lahat ng pinapatakbo ng OmniRoute ngayon — mga ahente, fleet, at routing", "tabAgents": "Mga Ahente", - "tabRouting": "Routing", + "tabRouting": "Pagruruta", "tabOverview": "Pangkalahatang-ideya", "tabHistory": "Kasaysayan", "historyEmpty": "Walang natapos na run sa saklaw na ito", @@ -14040,11 +14051,11 @@ "filterSources": "Mga Pinagmulan", "filterProviders": "Mga Provider", "clearFilters": "I-clear ang mga filter", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Ahente sa Cloud", "sourceA2A": "A2A", "sourceConductor": "Konduktor", "sourceStale": "Luma na simula {since}", - "sourceOffline": "Offline", + "sourceOffline": "Walang koneksyon", "sourceCollapse": "I-collapse", "sourceExpand": "I-expand", "stateQueued": "Nakapila", @@ -14060,7 +14071,7 @@ "emptyA2ACta": "Buksan ang A2A", "emptyConductorCta": "Buksan ang Konduktor", "drawerObjective": "Layunin", - "drawerTimeline": "Timeline", + "drawerTimeline": "Kronolohiya", "drawerMetrics": "Mga Sukatan", "drawerResult": "Resulta", "drawerMemory": "Ginamit na memory", @@ -14070,17 +14081,17 @@ "actionApprove": "Aprubahan ang plano", "actionCancel": "Kanselahin", "actionSeeInGraph": "Tingnan sa graph", + "actionRepeat": "Ulitin", "actionDone": "Naisagawa ang aksyon", "actionFailed": "Nabigo ang aksyon: {error}", "detailFailed": "Nabigong i-load ang mga detalye: {error}", "mirroredInA2A": "Naka-mirror sa A2A", - "actionRepeat": "Ulitin", "repeatConfirm": "I-click ulit para kumpirmahin", "repeatDone": "Ginawa ang bagong run", "repeatUnavailable": "Hindi available ang orihinal na input" }, "cliproxyProviderExposure": { - "title": "Provider Exposure", + "title": "Pagkakalantad ng Provider", "description": "I-expose ang mga modelo ng CLIProxyAPI bilang isang routing target sa ilalim ng cliproxyapi/ prefix.", "label": "I-expose bilang cliproxyapi/...", "hint": "Kapag naka-enable, ang mga natuklasang modelo ay lilitaw sa mga provider select sa buong OmniRoute.", @@ -14088,57 +14099,57 @@ "networkError": "Error sa Network — hindi ma-update ang setting ng provider exposure" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Mga alok para sa tagasuporta", + "subtitle": "Mga opisyal na diskuwento, credit, trial, at nasuring benepisyo mula sa mga partner ng Radar.", + "backToRadar": "Bumalik sa Radar", + "loading": "Nilo-load ang mga alok...", + "refresh": "I-refresh ang mga alok", + "refreshing": "Nire-refresh...", + "loadFailed": "Hindi namin ma-refresh ang mga alok. Pinanatili ang huling na-verify na lokal na cache.", + "empty": "Walang available na aktibong alok sa ngayon.", + "keyRequiredTitle": "Kailangan ng susi ng tagasuporta", + "keyRequiredDescription": "Ang mga alok ay isang live na benepisyo ng Radar. Magdagdag ng kasalukuyang susi ng tagasuporta sa screen ng Radar, i-verify ang iyong katayuan bilang contributor, o suportahan ang proyekto upang makakuha nito.", + "contributorButton": "Contributor ako", + "supporterButton": "Suportahan ang proyekto", + "partnerBadge": "Kasosyo", + "officialBadge": "Opisyal", + "conditionsLabel": "Mga kondisyon:", + "validUntil": "May bisa hanggang {date}", + "noExpiry": "Walang inanunsyong petsa ng pag-expire", + "openOffer": "Tingnan ang alok", + "trialDays": "{days, plural, one {# araw} other {# araw}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Impormasyon ng Radar", + "subtitle": "Mga ranggo ng ELO na pagmamay-ari ng Radar at aktuwal na pagbabago sa katalogo.", + "backToRadar": "Bumalik sa Radar", + "loading": "Nilo-load ang Intel...", + "refresh": "I-refresh ang Intel", + "syncing": "Nire-refresh...", + "loadFailed": "Hindi namin ma-refresh ang Intel. Pinanatili ang huling na-verify na lokal na cache.", + "empty": "Wala pang available na na-verify na snapshot ng Intel.", + "supporterBadge": "Tagasuporta ng Radar", + "methodology": "Metodolohiya", + "eloMethod": "ELO, panimulang halaga {initial}, K={factor}", + "freshness": "Pagiging napapanahon ng katalogo", + "ageDays": "{days, plural, one {# araw na ang nakalipas} other {# araw na ang nakalipas}}", + "trend": "Trend ng katalogo", + "modelDelta": "{current} modelo, +{added} / -{removed}", + "ranking": "Ranggo ng modelo", + "noRankings": "Wala pang available na kumpirmadong paghahambing.", + "model": "Modelo", + "category": "Kategorya", + "rating": "Marka", + "matches": "Mga Tugma", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Bago", + "aging": "Naluluma", + "stale": "Luma" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Lumalago", + "stable": "Matatag", + "shrinking": "Lumiliit" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Lumampas ang kahilingan sa konteksto ng tagapagbigay" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Ang Mas Murang Inference ay isang Open Source na Kaibigan ng OmniRoute", + "description": "Isang gateway na niraranggo ayon sa gastos na muling nagbebenta ng dose-dosenang frontier model sa likod ng iisang endpoint na compatible sa OpenAI — na niruruta ang bawat kahilingan sa pinakamurang kwalipikadong provider, nang hindi kailanman lumalampas sa nakalistang presyo.", + "cta": "Kumuha ng API Key", + "partnerLinkNote": "Link ng partner", + "dismissAriaLabel": "Isara" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Huwag paganahin ang pagbuo ng mga variant ng antas ng pag-iisip (hal. -low, -medium, -high) sa catalog na /v1/models." } diff --git a/src/i18n/messages/pl.json b/src/i18n/messages/pl.json index 8990f83e12..454cbb4cd2 100644 --- a/src/i18n/messages/pl.json +++ b/src/i18n/messages/pl.json @@ -37,11 +37,11 @@ "manage": "Zarządzaj", "name": "Nazwa", "actions": "Akcje", - "status": "Status", + "status": "Stan", "type": "Typ", "model": "Model", - "models": "models", - "provider": "Provider", + "models": "modele", + "provider": "Dostawca", "unknownProvider": "Nieznany provider", "account": "Konto", "time": "Czas", @@ -79,23 +79,23 @@ "apiKeyName": "Nazwa klucza API", "apiKeySecret": "Sekret klucza API", "authorization": "Autoryzacja", - "content-type": "Content Type", - "content-length": "Content Length", + "content-type": "Typ zawartości", + "content-length": "Długość zawartości", "cookie": "Cookie", "file": "Plik", "host": "Host", "id": "ID", - "import": "Import", + "import": "Importuj", "limit": "Limit", "offset": "Offset", "open": "Otwórz", - "origin": "Origin", + "origin": "Źródło", "promptTokens": "Prompt tokens", "completionTokens": "Completion tokens", "totalTokens": "Suma tokens", "rawModel": "Raw model", - "scope": "Scope", - "skill": "Skill", + "scope": "Zakres", + "skill": "Umiejętność", "sortBy": "Sortuj według", "sortOrder": "Kierunek sortowania", "tab": "Karta", @@ -113,25 +113,25 @@ "hex": "Hex", "range": "Przedział", "component": "Komponent", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", + "redirect_uri": "URI przekierowania", + "idempotency-key": "Klucz idempotencji", "error_description": "Opis błędu", "code": "Kod", "compatible": "Zgodne", - "chat-completions": "Chat Completions", + "chat-completions": "Uzupełnienia czatu", "oauth": "OAuth", - "auth_token": "Auth Token", + "auth_token": "Token uwierzytelniający", "crypto": "Kryptografia", "hours": "Godziny", "selfsigned": "Samopodpisany", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", + "proxy_id": "ID serwera proxy", + "proxyId": "ID serwera proxy", "connectionId": "ID połączenia", "resolveConnectionId": "Rozwiąż ID połączenia", "resolve_connection_id": "Rozwiąż ID połączenia", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "scope_id": "ID zakresu", + "scopeId": "ID zakresu", + "jwtSecret": "Sekret JWT", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", @@ -148,7 +148,7 @@ "TOOL_DENYLIST": "Lista blokowanych narzędzi", "Failed to save pricing": "Nie udało się zapisać cennika", "Failed to reset pricing": "Nie udało się zresetować cennika", - "apikey": "API Key", + "apikey": "Klucz API", "http": "HTTP", "goToDashboard": "Przejdź do dashboard", "checkSystemStatus": "Sprawdź status systemu", @@ -201,15 +201,15 @@ "minutesAgo": "Minut temu", "a": "A", "liveAutoRefreshing": "Automatyczne odświeżanie na żywo", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", + "webSearch": "Wyszukiwanie w internecie", + "anthropicPrefixPlaceholder": "Symbol zastępczy prefiksu Anthropic", "addModelToCombo": "Dodaj model do combo", "failedToLoad": "Nie udało się wczytać", "categoryMedia": "Kategoria Media", "enableCloud": "Włącz chmurę", "expirationBannerExpiringSoon": "Baner wygasania: wkrótce wygaśnie", "retry": "Ponów", - "embeddings": "Embeddings", + "embeddings": "Osadzenia", "errorCount": "Liczba błędów", "backupReasonManual": "Powód kopii zapasowej: ręczny", "safeSearchModerate": "Safe Search: umiarkowane", @@ -225,7 +225,7 @@ "confirmDbImport": "Potwierdź import DB", "notAvailableSymbol": "Symbol niedostępności", "backupsAvailable": "Dostępne kopie zapasowe", - "providerAuto": "Provider Auto", + "providerAuto": "Automatyczny wybór dostawcy", "newProviderNamePlaceholder": "Nazwa nowego providera", "a2aQuickStartStep2": "Krok 2 szybkiego startu A2A", "ok": "OK", @@ -233,10 +233,10 @@ "noBackupYet": "Brak kopii zapasowych", "more": "Więcej", "noCompatibleYet": "Brak kompatybilnych", - "multiProvider": "Multi Provider", + "multiProvider": "Wielu dostawców", "repairEnvHint": "Wskazówka naprawy środowiska", "disablingCloud": "Wyłączanie chmury", - "testBench": "Test Bench", + "testBench": "Stanowisko testowe", "valid": "Ważny", "cloudBenefitShare": "Podział korzyści chmury", "mcpCardTitle": "Tytuł karty MCP", @@ -245,7 +245,7 @@ "expirationBannerExpiredDesc": "Opis wygaśnięcia baneru", "saveComboDefaults": "Zapisz domyślne combo", "cloudConnectedVerified": "Połączenie Cloud zweryfikowane", - "uptime": "Uptime", + "uptime": "Czas działania", "compatibleProdPlaceholder": "Zgodny produkt placeholder", "fallbackChainsTitle": "Łańcuchy fallback", "oauthLabel": "Etykieta OAuth", @@ -279,7 +279,7 @@ "timeRangeMonth": "Zakres czasu: miesiąc", "testSummary": "Podsumowanie testu", "failedSetPassword": "Nie udało się ustawić hasła", - "audio": "Audio", + "audio": "Dźwięk", "restore": "Przywróć", "disableWarning": "Ostrzeżenie o wyłączeniu", "moderationsDesc": "Opis moderacji", @@ -292,7 +292,7 @@ "anthropicBaseUrlPlaceholder": "Anthropic Base URL Placeholder", "description": "Opis", "noProviderFound": "Nie znaleziono providera", - "auto": "Auto", + "auto": "Automatycznie", "protocolsDescription": "Opis protokołów", "cloudSessionNote": "Notatka o sesji Cloud", "advancedSettings": "Ustawienia zaawansowane", @@ -409,7 +409,7 @@ "addFirstProviderDesc": "Połącz AI provider, aby rozpocząć przekierowywanie żądań przez OmniRoute. Możesz użyć darmowych providers, kluczy API lub kont OAuth.", "learnMore": "Dowiedz się więcej", "includeDomains": "Uwzględnij domeny", - "promptCache": "Prompt Cache", + "promptCache": "Pamięć podręczna promptów", "cloudConnected": "Połączono z chmurą", "deleteChain": "Usuń łańcuch", "chatPathPlaceholder": "Ścieżka czatu (placeholder)", @@ -438,7 +438,7 @@ "repairEnv": "Napraw środowisko", "modelsCount": "Liczba models", "viewBackups": "Pokaż kopie zapasowe", - "responsesApi": "Responses Api", + "responsesApi": "API odpowiedzi", "copyComboName": "Kopiuj nazwę combo", "failures": "Niepowodzenia", "failedUpdate": "Nieudana aktualizacja", @@ -449,7 +449,7 @@ "expirationBannerExpiringSoonDesc": "Opis wygasania wkrótce", "source": "Źródło", "failed": "Niepowodzenie", - "apiKeyMgmt": "API Key Management", + "apiKeyMgmt": "Zarządzanie kluczami API", "mcpQuickStartStep1": "Krok 1 szybkiego startu MCP", "runTest": "Uruchom test", "loadingFallbackChains": "Ładowanie fallback chains", @@ -508,7 +508,7 @@ "hoursAgo": "godz. temu", "notAvailable": "Niedostępne", "skipAndContinue": "Pomiń i kontynuuj", - "moderations": "Moderations", + "moderations": "Moderowanie", "proxyConfig": "Konfiguracja proxy", "upstreamProxyProviders": "Upstream proxy providers", "exportAll": "Eksportuj wszystko", @@ -527,7 +527,7 @@ "monitoredProviders": "Monitorowane providers", "errors": "Błędy", "heap": "Sterta (heap)", - "chatCompletions": "Chat Completions", + "chatCompletions": "Uzupełnienia czatu", "exampleTemplatesHint": "Wskazówka dotycząca przykładowych szablonów", "retryDelayLabel": "Etykieta opóźnienia ponowienia", "audioTranscription": "Transkrypcja audio", @@ -554,8 +554,8 @@ "testCombo": "Testuj combo", "mcpQuickStartTitle": "Szybki start MCP", "comboUpdated": "Zaktualizowano combo", - "weighted": "Weighted", - "providers": "Providers", + "weighted": "Ważone", + "providers": "Dostawcy", "ccCompatibleLabel": "Zgodność z CC", "noFallbackChainsDesc": "Opis braku fallback chains", "yesImport": "Tak, importuj", @@ -595,7 +595,7 @@ "nameInvalid": "Nieprawidłowa nazwa", "skip": "Pomiń", "createChain": "Utwórz łańcuch", - "audioSpeech": "Audio Speech", + "audioSpeech": "Synteza mowy", "cacheCleared": "Wyczyszczono pamięć podręczną", "searchTypeNews": "Wyszukiwanie wiadomości", "durationMillisecondsShort": "ms", @@ -679,16 +679,16 @@ "safeSearchOff": "Bezpieczne wyszukiwanie wyłączone", "nameHint": "Wskazówka dotycząca nazwy", "debugToggle": "Przełącznik debugowania", - "embedding": "Embedding", + "embedding": "Osadzanie", "issuesLabel": "Problemy", "optionAny": "Dowolny", "maxNestingDepth": "Maksymalna głębokość zagnieżdżenia", - "rerank": "Rerank", + "rerank": "Ponowne rangowanie", "checking": "Sprawdzanie", "getStarted": "Rozpocznij", "restoreSuccess": "Pomyślne przywrócenie", "issuesDetected": "Wykryte problemy", - "signatureCache": "Signature Cache", + "signatureCache": "Pamięć podręczna sygnatur", "modelLockouts": "Blokady modeli", "usingCloudProxy": "Używanie Cloud Proxy", "loadingHealth": "Ładowanie stanu zdrowia", @@ -702,9 +702,9 @@ "flaggedAnomalies": "Oznaczone anomalie", "noAnomaliesDetected": "Nie wykryto anomalii", "apiKey": "Klucz API", - "xpLastHour": "XP (1h)", - "zScore": "Z-Score", - "suspicious": "__MISSING__:Suspicious", + "xpLastHour": "XP (1 godz.)", + "zScore": "Wynik Z", + "suspicious": "Podejrzane", "tokensCommunityServers": "Serwery społeczności", "tokensServerNamePlaceholder": "Nazwa serwera", "tokensApiKeyPlaceholder": "Klucz API", @@ -761,7 +761,7 @@ "tierCoverageSubtitle": "Providerzy skonfigurowani dla każdego poziomu fallback", "batchDetailCopyId": "Kopiuj ID", "batchDetailClose": "Zamknij", - "batchDetailEndpoint": "Endpoint", + "batchDetailEndpoint": "Punkt końcowy", "batchDetailModel": "Model", "batchDetailWindow": "Okno", "batchDetailCreated": "Utworzono", @@ -807,13 +807,13 @@ "batchConceptBenefit50pct": "50% zniżki na tokeny wejściowe i wyjściowe", "batchConceptAsync24h": "Asynchronicznie z 24-godzinnym oknem na ukończenie", "batchConceptUseCases": "Najlepsze do masowej klasyfikacji, ewaluacji i embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", + "batchHeaderSubtitle": "Uruchom wiele żądań jako jedno zadanie", + "batchStep1": "1 · Prześlij JSONL", + "batchStep1Desc": "Dodaj żądania", + "batchStep2": "2 · Utwórz partię", + "batchStep2Desc": "Uruchom zadanie", + "batchStep3": "3 · Pobierz wyniki", + "batchStep3Desc": "Pobierz plik wyjściowy", "filesConceptTitle": "Pliki zadań wsadowych", "filesConceptSubtitle": "Pliki JSONL używane przez zadania wsadowe: żądania wejściowe, wyniki i błędy.", "filesConceptInput": "Wejście — plik JSONL z jednym żądaniem na linijkę", @@ -831,8 +831,8 @@ "wizardStep2Input": "Wejście", "wizardStep3Validate": "Waliduj", "wizardStep4Cost": "Koszt i utworzenie", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", + "wizardProviderLabel": "Dostawca", + "wizardEndpointLabel": "Punkt końcowy", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (zostanie przekonwertowany)", @@ -892,16 +892,16 @@ "filesListUsedByRoleError": "błąd", "filesListSizeColumn": "Rozmiar", "batchListProgressPartial": "(częściowy)", - "batchListProviderColumn": "Provider", + "batchListProviderColumn": "Dostawca", "batchListProviderUnknown": "—", "batchListProviderOther": "Inny", "batchListTitle": "Zadania wsadowe", "batchListCount": "{count} zadań wsadowych", "batchListRemovingCompleted": "Usuwanie…", "batchListRemoveCompleted": "Usuń ukończone", - "batchListTableStatus": "Status", + "batchListTableStatus": "Stan", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Punkt końcowy", "batchListTableModel": "Model", "batchListTableProgress": "Postęp", "batchListTableCreated": "Utworzono", @@ -988,30 +988,30 @@ "disabled": "Wyłączone", "featureFlagOmnirouteEmergencyFallbackDescription": "Kierowanie żądań z wyczerpanym budżetem do awaryjnego, bezpłatnego fallback provider/model.", "featureFlagArenaEloSyncEnabledDescription": "Włączenie okresowej synchronizacji ELO tabeli liderów Arena AI dla rankingów inteligencji model.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Generuj i wstawiaj podsumowania rozmów, gdy routing kombinowany przełącza modele. Wyłącz tę opcję, aby traktować przełączenia modeli niezależnie i zapobiec żądaniom przekazania w tle dla wszystkich istniejących i przyszłych kombinacji.", "featureFlagExposeCcDiscoveryAliasesDescription": "Reklamuj identyfikatory luster claude/<provider>/<model> na /v1/models, aby brama modelu Claude Code wyświetlała listę modeli niebędących Claude. Uwaga: podwaja wpisy w katalogu dla wszystkich klientów, gdy jest włączone globalnie.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Główny przełącznik aliasów bramy no-think/<provider>/<model>. Włączony (domyślnie): /v1/models udostępnia wariant bez rozumowania dla każdego kwalifikującego się modelu Claude obsługującego rozumowanie, a identyfikator no-think/ przesłany w żądaniu jest rozpoznawany jako rzeczywisty model z wyłączonym rozumowaniem. Wyłączony: żadne warianty nie są udostępniane, a identyfikator no-think/ jest traktowany jak każdy inny nieznany identyfikator modelu. Indywidualna dla modelu opcja ModelSpec.noThinkingAlias nadal obowiązuje, gdy ten przełącznik jest włączony.", "featureFlagChatVirtualLanesEnabledDescription": "Włącz adaptacyjne wirtualne pasma przyjęć dla każdego tenanta przy wysyłce do dostawców (#9654): przeciążenie jednego tenanta nie powoduje już błędu 503 u innego. Zmienna środowiskowa OMNIROUTE_CHAT_VIRTUAL_LANES ma pierwszeństwo przed tym ustawieniem w panelu; zmiany wchodzą w życie po restarcie serwera.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Strony dostawców w panelu: wyświetlaj odznakę „Bezpłatne” tylko na podstawie sygnałów uznawanych przez dostawcę — pomija heurystykę nazwy wyświetlanej, niebędące wartościami logicznymi pola dotyczące bezpłatności oraz sufiksy :free u zarejestrowanych dostawców bez udokumentowanej bezpłatnej warstwy. Wyłączenie zachowuje dotychczasową regułę wyświetlania odznaki.", + "featureFlagProxySkipRecentlyFailedDescription": "Pule serwerów proxy oraz rotacja opencode dla poszczególnych kont przestają ponownie wybierać serwer proxy, który właśnie zawiódł (odrzucona próba TCP lub otrzymany za jego pośrednictwem kod 429), na okres właściwy dla danego procesu, który podwaja się przy każdym kolejnym takim zdarzeniu, aż do osiągnięcia limitu. Stan serwera proxy nie jest zapisywany; po odłożeniu na bok wszystkich kandydatów wybór pozostaje bez zmian. Domyślnie wyłączone: kolejność wyboru jest dokładnie taka sama jak w zwykłej rotacji.", + "featureFlagProxyPoolEgressObservationDescription": "Wyświetla w panelu, pod pulą serwerów proxy, ile zaobserwowanych wychodzących adresów IP obsługiwało jej elementy w ciągu ostatnich 24 godz., ile połączeń z nich korzystało oraz największą liczbę połączeń za jednym adresem IP. Tylko do odczytu, obliczane na podstawie dziennika serwerów proxy i nigdy niewykorzystywane do routingu. Domyślnie wyłączone: edytor puli pozostaje bez zmian, a trasa obserwacji zwraca null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Podczas kontroli kondycji serwerów proxy pozwala, aby próba odrzucona przez cel (401/403/429: serwer proxy przekazał żądanie, ale miejsce docelowe odrzuciło ten wychodzący adres IP) resetowała serię kolejnych niepowodzeń serwera proxy, tak jak obsłużona próba. Domyślnie wyłączone: odrzucenie pozostaje neutralne i nie przerywa serii. Odpowiedź 5xx pozostaje nierozstrzygająca w obu przypadkach, a odrzucenie nigdy nie usuwa, nie wyłącza ani nie aktywuje ponownie serwera proxy.", "sidebar": { "home": "Strona główna", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", + "dashboard": "Panel", + "providers": "Dostawcy", + "combos": "Kombinacje", "usage": "Użycie", "analytics": "Analityka", "costs": "Koszty", "health": "Stan", - "proxy": "Proxy", + "proxy": "Serwer proxy", "limits": "Limity quota", "cliTools": "Narzędzia CLI", - "media": "Media", + "media": "Multimedia", "settings": "Ustawienia", - "translator": "Translator", - "playground": "Playground", + "translator": "Tłumacz", + "playground": "Plac zabaw", "searchTools": "Narzędzia wyszukiwania", "agents": "Agenci", "cloudAgents": "Agenci chmurowi", @@ -1022,14 +1022,14 @@ "chaosConfig": "Tryb Chaos", "docs": "Dokumentacja", "issues": "Zgłoszenia", - "endpoints": "Endpoints", + "endpoints": "Punkty końcowe", "endpointsSubtitle": "Adresy URL połączeń AI", "apiManager": "Klucze API", "apiManagerSubtitle": "Zarządzanie kluczami API i dostępem", "embeddedServices": "Usługi osadzone", "embeddedServicesSubtitle": "Zarządzanie lokalnymi usługami proxy", "logs": "Logi", - "webhooks": "Webhooks", + "webhooks": "Webhooki", "webhooksSubtitle": "Otrzymywanie powiadomień o zdarzeniach", "logExport": "Eksport logów", "logExportSubtitle": "Wysyłanie logów wywołań na zewnątrz", @@ -1039,7 +1039,7 @@ "contextRtkSubtitle": "Filtrowanie danych wyjściowych", "auditLog": "Log audytu", "shutdown": "Wyłącz", - "restart": "Restart", + "restart": "Uruchom ponownie", "shutdownConfirm": "Wyłączyć OmniRoute?", "restartConfirm": "Zrestartować OmniRoute?", "version": "v{version}", @@ -1080,7 +1080,7 @@ "sidebarVisibilityToggle": "Przełącznik widoczności panelu bocznego", "themeAccent": "Akcent motywu", "resetFavicon": "Resetuj favicon", - "whitelabeling": "Whitelabeling", + "whitelabeling": "Personalizacja marki", "darkMode": "Tryb ciemny", "uploadLogo": "Prześlij logo", "themeLight": "Motyw jasny", @@ -1098,7 +1098,7 @@ "themeCustom": "Motyw niestandardowy", "hideHealthLogsDesc": "Opis ukrywania logów stanu", "faviconPreview": "Podgląd favicon", - "changelog": "Changelog", + "changelog": "Dziennik zmian", "contextSection": "Kontekst i Cache", "contextCaveman": "Caveman", "contextRtk": "RTK", @@ -1128,13 +1128,13 @@ "compressionStudioSubtitle": "Kaskada silników na żywo", "compressionExclusionsSubtitle": "Ominięcie na poziomie modelu/endpointu", "chaosConfigSubtitle": "Równoległe wykonywanie wielu modeli", - "routingSection": "Routing", + "routingSection": "Trasowanie", "protocolsSection": "Protokoły", "agentsAiSection": "Agenci i AI", "cacheContextSection": "Cache i Kontekst", "analyticsSection": "Analityka", "costsSection": "Koszty", - "monitoringSection": "Monitoring", + "monitoringSection": "Monitorowanie", "auditSecuritySection": "Audyt i Bezpieczeństwo", "devtoolsSection": "Narzędzia deweloperskie", "configurationSection": "Konfiguracja", @@ -1144,7 +1144,7 @@ "plugins": "Wtyczki", "apiEndpoints": "Endpoints API", "batchFiles": "Pliki", - "analyticsEvals": "Evals", + "analyticsEvals": "Ewaluacje", "analyticsSearch": "Wyszukiwanie", "analyticsUtilization": "Utylizacja", "analyticsComboHealth": "Kondycja Combo", @@ -1170,22 +1170,22 @@ "settingsAccessTokens": "Access tokens", "settingsFeatureFlags": "Flagi funkcji", "settingsCache": "Pamięć podręczna", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", + "settingsAuthz": "Autoryzacja", + "settingsRouting": "Trasowanie", "settingsResilience": "Odporność", "modelLockout": "Blokada model", "settingsAdvanced": "Zaawansowane", "omniProxySection": "OmniProxy", "quotaTracker": "Quota provider", "providerQuota": "Quota provider", - "runtime": "Runtime", + "runtime": "Środowisko uruchomieniowe", "consoleLogs": "Logi konsoli", - "logsTimeline": "Timeline", + "logsTimeline": "Oś czasu", "logsTimelineSubtitle": "Wizualny harmonogram żądań", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", + "conversations": "Konwersacje", + "conversationsSubtitle": "Wieloetapowe konwersacje agentowe", "globalRouting": "Routing globalny", - "mitmProxy": "MITM Proxy", + "mitmProxy": "Proxy MITM", "oneProxy": "1Proxy", "agenticFeaturesSection": "Funkcje agentów", "otherFeaturesSection": "Inne funkcje", @@ -1193,10 +1193,10 @@ "gamificationGroup": "Grywalizacja", "toolsGroup": "Narzędzia", "integrationsGroup": "Integracje", - "proxyGroup": "Proxy", + "proxyGroup": "Serwer proxy", "costsParametersGroup": "Parametry kosztów", "auditGroup": "Audyt", - "batchGroup": "Batch", + "batchGroup": "Przetwarzanie wsadowe", "homeSubtitle": "Przegląd Dashboard", "providersSubtitle": "Zarządzanie AI providers", "quotaTrackerSubtitle": "Śledzenie limitów użycia", @@ -1212,12 +1212,12 @@ "oneProxySubtitle": "Publiczna brama proxy", "leaderboard": "Tabela liderów", "profile": "Profil", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", + "tokens": "Tokeny", + "gamificationAdmin": "Administrator grywalizacji", "leaderboardSubtitle": "Rankingi i osiągnięcia", "profileSubtitle": "Konto i preferencje", "tokensSubtitle": "Zużycie tokens i budżety", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", + "gamificationAdminSubtitle": "Monitorowanie anomalii i zapobieganie oszustwom", "usageSubtitle": "Statystyki ruchu i użycia", "analyticsComboHealthSubtitle": "Niezawodność celów combo", "analyticsUtilizationSubtitle": "Utylizacja provider", @@ -1275,16 +1275,16 @@ "systemGroup": "System", "costsOverview": "Przegląd", "costsOverviewSubtitle": "Skonsolidowana analiza kosztów", - "agentBridge": "Agent Bridge", + "agentBridge": "Most agentów", "agentBridgeSubtitle": "Przechwytywanie ruchu agenta IDE", "trafficInspector": "Traffic Inspector", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Sprawdzaj ruch żądań i odpowiedzi z aplikacji", + "trafficInspectorPurpose": "Zobacz dokładnie, co Twoja aplikacja wysyła do dostawców AI i co od nich otrzymuje. Działa z każdym klientem zgodnym z OpenAI.", "cliCode": "CLI Code", "cliCodeSubtitle": "Narzędzia kodowania wskazujące na OmniRoute", - "cliAgents": "CLI Agents", + "cliAgents": "Agenci CLI", "cliAgentsSubtitle": "Autonomiczni CLI agents", - "acpAgents": "ACP Agents", + "acpAgents": "Agenci ACP", "acpAgentsSubtitle": "CLI uruchamiane przez OmniRoute", "skipToContent": "Przejdź do zawartości", "mainNavigation": "Nawigacja główna", @@ -1296,7 +1296,7 @@ "cannotHide": "Tego elementu nie można ukryć", "alwaysVisible": "Zawsze widoczne", "groupSeparatorLabel": "Separator", - "discovery": "Discovery", + "discovery": "Odkrywanie", "discoverySubtitle": "Skanowanie providers w celu wyszukania darmowego dostępu", "conductor": "Konduktor", "conductorSubtitle": "Flota agenta CLI", @@ -1318,7 +1318,7 @@ "noResults": "Brak wyników" }, "webhooks": { - "title": "Webhooks", + "title": "Webhooki", "description": "Konfiguruj wywołania zwrotne HTTP dla zdarzeń systemowych.", "configuredWebhooks": "Skonfigurowane webhooks", "configuredWebhooksDesc": "Zarządzaj endpoints dostarczania, subskrybowanymi zdarzeniami, statusem i wysyłkami testowymi.", @@ -1330,10 +1330,10 @@ "url": "URL endpoint", "events": "Zdarzenia", "allEvents": "Wszystkie zdarzenia", - "secret": "Secret", + "secret": "Sekret", "secretPlaceholder": "Pozostaw puste, aby automatycznie wygenerować secret", "secretEditPlaceholder": "Pozostaw puste, aby zachować obecny secret", - "status": "Status", + "status": "Stan", "active": "Aktywny", "inactive": "Nieaktywny", "errored": "Błąd", @@ -1391,7 +1391,7 @@ "title": "Logi dostarczeń", "loadFailed": "Nie udało się załadować logów dostarczeń webhook.", "empty": "Nie zarejestrowano jeszcze żadnych dostarczeń. Wywołaj zdarzenie lub wyślij testowy payload.", - "status": "Status", + "status": "Stan", "event": "Zdarzenie", "latency": "Opóźnienie", "at": "Wysłano o" @@ -1445,7 +1445,7 @@ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "Token HTTP API otrzymany od @BotFather podczas tworzenia bota.", "chatId": "Telegram ID czatu / kanał", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 lub @channelname", "chatIdHint": "Unikalny identyfikator numeryczny lub publiczna nazwa użytkownika czatu/kanału.", "tutorial": "Jak skonfigurować webhook Telegram:" } @@ -1453,7 +1453,7 @@ "compliance": { "auditTitle": "Audyt", "auditDescription": "Przeglądaj zdarzenia zgodności (compliance) i wywołania narzędzi MCP z jednego widoku operacyjnego.", - "complianceTab": "Compliance", + "complianceTab": "Zgodność", "mcpTab": "Audyt MCP", "title": "Audyt Compliance", "description": "Zdarzenia dotyczące zasad, dostępu, providers i bezpieczeństwa zarejestrowane w logu audytu Compliance.", @@ -1461,7 +1461,7 @@ "eventTypePlaceholder": "Filtruj według akcji lub typu zdarzenia", "severity": "Poziom ważności", "allSeverities": "Wszystkie poziomy ważności", - "info": "Info", + "info": "Informacje", "warning": "Ostrzeżenie", "critical": "Krytyczny", "sourceIp": "Źródłowy adres IP", @@ -1503,7 +1503,7 @@ "a2aAudit": "Audyt A2A", "a2aAuditDesc": "Ścieżka audytu wykonywania zadań zarejestrowana przez serwer A2A.", "a2aShowingTasks": "Wyświetlanie {count} z {total} zadań", - "a2aSkill": "Skill", + "a2aSkill": "Umiejętność", "a2aSkillPlaceholder": "Filtruj według nazwy skill", "a2aState": "Stan", "a2aAllStates": "Wszystkie stany", @@ -1579,9 +1579,9 @@ "switchToLightMode": "Przełącz na tryb jasny", "switchToDarkMode": "Przełącz na tryb ciemny", "language": "Język", - "providers": "Providers", + "providers": "Dostawcy", "providerDescription": "Zarządzanie połączeniami z AI providers", - "combos": "Combos", + "combos": "Kombinacje", "comboDescription": "Model combos z fallback", "usage": "Użycie i analizy", "usageDescription": "Monitorowanie użycia API, zużycia tokens i logów żądań", @@ -1591,7 +1591,7 @@ "cliToolsDescription": "Konfiguracja narzędzi CLI", "home": "Główna", "homeDescription": "Witamy w OmniRoute", - "endpoint": "Endpoints", + "endpoint": "Punkty końcowe", "endpointDescription": "Zarządzanie proxy endpoints, MCP, A2A oraz API endpoints", "mcp": "Serwer MCP", "mcpDescription": "Zarządzanie i narzędzia serwera Model Context Protocol", @@ -1658,7 +1658,7 @@ "featureFlagsCategorySecurity": "Bezpieczeństwo", "featureFlagsCategoryNetwork": "Sieć", "featureFlagsCategoryPolicies": "Zasady", - "featureFlagsCategoryRuntime": "Runtime", + "featureFlagsCategoryRuntime": "Środowisko uruchomieniowe", "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "Stan", "featureFlagsSourceDb": "DB", @@ -1698,7 +1698,7 @@ "general": "Ogólne", "appearance": "Wygląd", "ai": "Ustawienia AI", - "routing": "Routing", + "routing": "Trasowanie", "resilience": "Odporność", "advanced": "Zaawansowane", "accessTokens": "Tokeny dostępu", @@ -1706,9 +1706,9 @@ "logs": "Logi", "auditLog": "Dziennik audytu", "console": "Konsola", - "logger": "Logger", + "logger": "Rejestrator", "translator": "Tłumacz", - "playground": "Playground", + "playground": "Piaskownica", "add": "Dodaj", "edit": "Edytuj", "apiKeys": "Klucze API", @@ -1724,7 +1724,7 @@ "analytics": "Analityka", "costs": "Koszty", "health": "Kondycja", - "runtime": "Runtime", + "runtime": "Środowisko uruchomieniowe", "webhooks": "Webhooki", "home": "Główna", "activity": "Aktywność", @@ -1737,7 +1737,7 @@ "audit": "Audyt", "a2a": "A2A", "mcp": "MCP", - "batch": "Batch", + "batch": "Przetwarzanie wsadowe", "files": "Pliki", "media": "Media", "cache": "Pamięć podręczna", @@ -1749,7 +1749,7 @@ "aggressive": "Agresywny", "caveman": "Jaskiniowiec", "ccr": "CCR", - "headroom": "Headroom", + "headroom": "Zapas", "lite": "Lite", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", @@ -1762,7 +1762,7 @@ "discovery": "Odkrywanie", "freeProviderRankings": "Rankingi darmowych dostawców", "radar": "Radar", - "setup": "Setup", + "setup": "Konfiguracja", "freeTiers": "Bezpłatne pakiety", "gamification": "Grywalizacja", "leaderboard": "Tabela liderów", @@ -1815,9 +1815,9 @@ "topologyLegendRecent": "Ostatnie", "topologyLegendError": "Błąd", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", + "apiKeyLabel": "Klucz API", "requestsShort": "{count} żądań", - "providerModelsTitle": "{provider} - Models", + "providerModelsTitle": "{provider} — modele", "copiedModel": "Skopiowano: {model}", "aliasLabel": "alias", "updateNow": "Aktualizuj teraz", @@ -1826,11 +1826,11 @@ "updateStarted": "Rozpoczęto aktualizację...", "reloadingPageAutomatically": "Automatyczne przeładowywanie strony...", "providerTopology": "Topologia Provider", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Ostatnie żądania", + "recentRequestsEmpty": "Brak żądań.", + "recentRequestsModel": "Model", + "recentRequestsTokens": "Wejście / wyjście", + "recentRequestsWhen": "Kiedy", "downloadDmg": "Pobierz DMG (macOS)", "downloadDmgDescription": "Dostępna jest nowa wersja aplikacji desktopowej OmniRoute. Proszę pobrać i zainstalować instalator DMG dla macOS, aby zaktualizować (aktualna: v{version}).", "downloadExe": "Pobierz EXE (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "Notatki Wydania", "readMore": "Czytaj więcej", "noAuthLabel": "Brak autoryzacji", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Przygotuj się do routingu", + "readinessTitle": "Wyślij pierwsze żądanie", + "readinessSubtitle": "Cztery krótkie kroki. OmniRoute na bieżąco sprawdza gotowość.", + "readinessStep1": "Połącz z dostawcą", + "readinessStep2": "Skonfiguruj uwierzytelnianie punktu końcowego", + "readinessStep3": "Skopiuj punkt końcowy", + "readinessStep4": "Wyślij żądanie testowe", + "readinessContinue": "Kontynuuj konfigurację", + "readinessDismiss": "Na razie pomiń" }, "analytics": { "title": "Analityka", @@ -1912,12 +1912,12 @@ "diversityHigherExplanation": "Wyższe wartości oznaczają, że ruch jest rozproszony na wielu providers.", "diversityNoData": "Brak dostępnych ostatnich danych użycia.", "chartRequests": "Żądania", - "chartInput": "Input", - "chartOutput": "Output", + "chartInput": "Wejście", + "chartOutput": "Wyjście", "chartTotal": "Razem", "chartCost": "Koszt", "chartShare": "Udział", - "chartServiceTier": "Service Tier", + "chartServiceTier": "Poziom usługi", "chartServiceTierSplit": "Podział kosztów Fast / Standard", "chartCostPct": "{pct}% kosztu", "chartUsageDetail": "Szczegóły użycia", @@ -1942,7 +1942,7 @@ "unknownApiKey": "Nieznany klucz API", "chartModelBreakdown": "Rozbicie na models", "chartModel": "Model", - "chartProvider": "Provider", + "chartProvider": "Dostawca", "chartProviderBreakdown": "Rozbicie na providers", "chartDate": "Data", "chartRequestsByProviderDate": "Żądania według Provider i daty", @@ -1958,16 +1958,16 @@ "rangeLast14Days": "Ostatnie 14 dni", "rangeThisMonth": "W tym miesiącu", "rangeQuickSelect": "Szybki wybór", - "rangeStart": "Start", + "rangeStart": "Początek", "rangeEnd": "Koniec", "rangeCancel": "Anuluj", "rangeApply": "Zastosuj", "rangeErrorInvalid": "Data początkowa musi być przed końcową", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1 d.", + "period7D": "7 d.", + "period30D": "30 d.", + "period90D": "90 d.", + "periodYTD": "Od początku roku", "periodAll": "Wszystkie", "totalTokens": "Razem tokens", "inputTokens": "Wejściowe tokens", @@ -1975,9 +1975,9 @@ "estCost": "Szac. koszt", "infraTitle": "Infrastruktura", "infraAccounts": "Konta", - "infraProviders": "Providers", + "infraProviders": "Dostawcy", "infraApiKeys": "Klucze API", - "infraModels": "Models", + "infraModels": "Modele", "perfTitle": "Wydajność", "perfAvgTokens": "Śr. tokens/req", "perfCostReq": "Koszt/req", @@ -2000,7 +2000,7 @@ "sectionsAria": "Sekcje analityki", "utilizationDescription": "Trendy użycia quota dla Provider i śledzenie rate limit", "modelStatus": "Status model", - "modelStatusCooldown": "Cooldown", + "modelStatusCooldown": "Okres karencji", "modelStatusUnavailable": "Niedostępny", "modelStatusError": "Błąd", "comboHealth": "Status combo", @@ -2018,13 +2018,13 @@ "comboHealthSuccessRate": "Wskaźnik sukcesu", "comboHealthQuotaHealth": "Status quota", "comboHealthRequests": "Żądania", - "comboHealthTokens": "Tokens", + "comboHealthTokens": "Tokeny", "comboHealthAvgLatency": "Średnie opóźnienie", "comboHealthTotalRequests": "Wszystkie żądania", "comboHealthExecutionTargets": "Cele wykonania", "comboHealthSuccess": "Sukces", "comboHealthLatency": "Opóźnienie", - "comboHealthQuota": "Quota", + "comboHealthQuota": "Limit", "comboHealthTitle": "Status combo", "comboHealthUnableToLoad": "Nie można załadować statusu combo", "comboHealthGettingStarted": "Pierwsze kroki", @@ -2110,11 +2110,11 @@ "compressionAnalyticsAvgSavings": "Średnie oszczędności", "compressionAnalyticsAvgDuration": "Średni czas trwania", "compressionAnalyticsReceipts": "Potwierdzenia", - "compressionAnalyticsFallbacks": "Fallbacks", - "compressionAnalyticsPromptTokens": "Prompt tokens", - "compressionAnalyticsCompletionTokens": "Completion tokens", + "compressionAnalyticsFallbacks": "Modele rezerwowe", + "compressionAnalyticsPromptTokens": "Tokeny promptu", + "compressionAnalyticsCompletionTokens": "Tokeny odpowiedzi", "compressionAnalyticsTotalTokens": "Razem tokens", - "compressionAnalyticsCacheTokens": "Cache tokens", + "compressionAnalyticsCacheTokens": "Tokeny pamięci podręcznej", "compressionAnalyticsNoDataYet": "Brak danych kompresji", "compressionAnalyticsLoading": "Wczytywanie analityki kompresji…", "compressionAnalyticsNoDataDescription": "Żądania kompresji pojawią się tutaj po pierwszym żądaniu za pośrednictwem /v1/chat/completions z włączoną kompresją.", @@ -2258,17 +2258,17 @@ "fullAccess": "Pełen dostęp", "keyManagement": "Zarządzanie kluczami API", "keyManagementDesc": "Tworzenie i zarządzanie kluczami API do uwierzytelniania żądań do endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Twoja aplikacja wysyła żądania do OmniRoute przy użyciu klucza API", + "requestFlowYourApp": "Twoja aplikacja", + "requestFlowApiKey": "Klucz API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Łączna liczba kluczy", "restricted": "Ograniczony", "totalRequests": "Łączna liczba żądań", "modelsAvailable": "Dostępne models", "registeredKeys": "Zarejestrowane klucze", - "keysRegistered": "{count} keys registered", - "keyRegistered": "{count} key registered", + "keysRegistered": "Zarejestrowane klucze: {count}", + "keyRegistered": "Zarejestrowany klucz: {count}", "keysSecurityNote": "Każdy klucz izoluje śledzenie użycia i może być unieważniony niezależnie. Klucze są maskowane po utworzeniu ze względów bezpieczeństwa.", "createFirstKey": "Utwórz pierwszy klucz", "name": "Nazwa", @@ -2303,7 +2303,7 @@ "savePermissions": "Zapisz uprawnienia", "endpointRestrictions": "Dozwolone endpoints", "allEndpointsAllowed": "Ten klucz ma dostęp do wszystkich endpoints API.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", + "endpointsRestricted": "Ograniczono do {count} {count, plural, one {endpointu} few {endpointów} many {endpointów} other {endpointu}}.", "autoResolve": "Automatyczne dopasowywanie", "autoResolveDesc": "Automatycznie dopasowuj niejednoznaczne nazwy models do natywnego provider dla tego klucza API.", "streamDefaultMode": "Domyślna kompatybilność strumieniowania", @@ -2366,7 +2366,7 @@ "failedRegenerateKey": "Nie udało się zregenerować klucza API", "failedRegenerateKeyRetry": "Nie udało się zregenerować klucza API. Spróbuj ponownie.", "model": "{count} model", - "models": "{count} models", + "models": "{count} modeli", "permissionsTitle": "Uprawnienia: {name}", "allowAllDesc": "Ten klucz ma dostęp do wszystkich dostępnych models.", "restrictLoading": "Ładowanie katalogu model…", @@ -2382,8 +2382,8 @@ "allowedCombos": "Dozwolone kombinacje", "allCombosAllowed": "Ten klucz może używać dowolnej kombinacji.", "restrictedComboCount": "Ograniczono do {count, plural, one {# kombinacji} few {# kombinacji} many {# kombinacji} other {# kombinacji}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# zapisany wpis nie znajduje się} few {# zapisane wpisy nie znajdują się} many {# zapisanych wpisów nie znajduje się} other {# zapisanego wpisu nie znajduje się}} na tej liście kombinacji (na przykład reguły routingu) i zostanie zachowany w zapisanej postaci.", + "preservedComboRuleHint": "Zachowano w zapisanej postaci. Ten wpis nie jest kombinacją z powyższej listy, dlatego można go zmienić tylko za pośrednictwem API.", "apiManagerCustomRateLimits": "Niestandardowe rate limits", "apiManagerCustomRateLimitsDesc": "Zastąp globalne limity domyślne. Pozostaw puste, aby użyć domyślnych.", "apiManagerRateLimitRequestsPlaceholder": "Żądania", @@ -2406,7 +2406,7 @@ "filterStatusDisabled": "Wyłączony", "filterStatusBanned": "Zablokowany", "filterStatusExpired": "Wygasły", - "filterTypeStandard": "Standard", + "filterTypeStandard": "Standardowy", "filterTypeManage": "Zarządzanie", "filterTypeRestricted": "Ograniczony", "shownOf": "Pokazano {shown} z {total}", @@ -2418,16 +2418,16 @@ "quotaKeysSection": "Klucze quota", "bypassProviderQuota": "Pomiń limity odcięcia dostawców", "bypassProviderQuotaDescription": "Zezwala temu kluczowi na ignorowanie zasad odcięcia nadrzędnego dostawcy/konta podczas routingu. Limity USD klucza API nadal obowiązują.", - "quotaPill": "QUOTA", - "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "quotaPill": "LIMIT", + "quotaModeOnly": "Tylko qtSd", + "exclusiveLease": "Wyłączna dzierżawa", + "exclusiveLeaseNoticeTitle": "Wyłączna dzierżawa", + "exclusiveLeaseNoticeDesc": "Ten klucz API ma uprawnienia do wyłącznej dzierżawy na potrzeby routingu połączeń dedykowanych.", + "allConnections": "Wszystkie połączenia", + "onlySelectedConnections": "Tylko wybrane połączenia", + "selectAtLeastOneConnection": "Wybierz co najmniej jedno połączenie lub opcję Wszystkie połączenia.", + "allConnectionsDesc": "Ten klucz może korzystać z dowolnego aktywnego połączenia.", + "restrictedToConnections": "Ograniczono do {count, plural, one {# połączenia} few {# połączeń} many {# połączeń} other {# połączenia}}." }, "auditLog": { "title": "Rejestr audytu", @@ -2452,7 +2452,7 @@ "previous": "Poprzedni" }, "media": { - "title": "Media Playground", + "title": "Środowisko testowe multimediów", "subtitle": "Generowanie obrazów, wideo i muzyki", "model": "Model", "prompt": "Prompt", @@ -2466,7 +2466,7 @@ "videoDescription": "Twórz wideo za pomocą AnimateDiff, Stable Video Diffusion poprzez ComfyUI lub SD WebUI.", "musicDescription": "Komponuj muzykę za pomocą Stable Audio Open lub MusicGen poprzez ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Osadzanie", "image": "Obraz", "imageToText": "Obraz na tekst", "tts": "Tekst na mowę (TTS)", @@ -2555,7 +2555,7 @@ "noSearchProviders": "Brak skonfigurowanych providers wyszukiwania. Dodaj providers w Ustawieniach.", "noRerankModels": "Brak dostępnego model rerank", "webSearch": "Web Search", - "provider": "Provider", + "provider": "Dostawca", "searchType": "Typ wyszukiwania", "maxResults": "Maksymalna liczba wyników", "filters": "Filtry", @@ -2571,7 +2571,7 @@ "queryPlaceholder": "Wpisz zapytanie...", "providerAuto": "auto (najtańszy)", "searchTypeWeb": "web", - "searchTypeNews": "news", + "searchTypeNews": "wiadomości", "optionAny": "dowolny", "timeRangeDay": "Ostatni dzień", "timeRangeWeek": "Ostatni tydzień", @@ -2582,7 +2582,7 @@ "networkError": "Błąd sieci", "formatted": "Sformatowane", "rawJson": "JSON", - "cacheMiss": "cache miss", + "cacheMiss": "brak trafienia w pamięci podręcznej", "cacheHit": "trafienie w pamięci podręcznej", "latency": "Opóźnienie", "cost": "Koszt", @@ -2594,16 +2594,16 @@ "copy": "Kopiuj", "resetToDefault": "Przywróć domyślne", "tabSearch": "Wyszukiwanie", - "tabScrape": "Scrape", + "tabScrape": "Pobieranie danych", "tabCompare": "Porównanie", "modalitiesGuide": "Przewodnik po modalnościach", "searchConceptTitle": "Wyszukiwanie", "searchConceptDesc": "Search = pobiera listę wyników wyszukiwania (tytuł, URL, snippet, wynik dopasowania)", - "scrapeConceptTitle": "Scrape", + "scrapeConceptTitle": "Pobieranie danych", "scrapeConceptDesc": "Scrape = wyodrębnia pełną zawartość URL (markdown, tekst lub HTML)", "compareConceptTitle": "Porównanie", "compareConceptDesc": "Compare = uruchamia to samo zapytanie na N providers obok siebie, aby porównać opóźnienie, koszt i nakładanie się wyników", - "rerankConceptTitle": "Rerank", + "rerankConceptTitle": "Ponowne rankingowanie", "rerankConceptDesc": "Rerank = zmienia kolejność wyników za pomocą LLM, aby poprawić trafność na podstawie zapytania", "autoConceptTitle": "Auto (najtańszy)", "autoConceptDesc": "Auto (cheapest) = automatycznie wybiera najtańszego dostępnego provider ze skonfigurowanymi danymi uwierzytelniającymi", @@ -2612,7 +2612,7 @@ "kindFetch": "Pobieranie/Scrape", "statusConfigured": "Skonfigurowano", "statusMissing": "Brak danych uwierzytelniających", - "statusRateLimited": "Rate limited", + "statusRateLimited": "Ograniczono częstotliwość", "configureProvider": "Skonfiguruj w Providers", "loadingProviders": "Ładowanie providers…", "failedToLoadProviders": "Nie udało się załadować providers", @@ -2630,10 +2630,10 @@ "formatHtml": "HTML", "formatText": "Tekst", "scrapePreview": "Podgląd", - "scrapeRaw": "Raw", + "scrapeRaw": "Surowy", "scrapeContentTruncated": "(skrócone, zobacz raw)", "scrapeMetadata": "Metadane", - "scrapeProvider": "Provider", + "scrapeProvider": "Dostawca", "scrapeSize": "Rozmiar", "scrapeEmptyState": "Wprowadź URL, aby wyodrębnić jego zawartość", "scrapeProvidersAvailable": "Dostępne providers: Firecrawl, Jina Reader, Tavily, TinyFish.", @@ -2641,7 +2641,7 @@ "compareRunning": "Porównywanie…", "autoProvider": "Auto (najtańszy)", "configuredStatus": "Skonfigurowano", - "rateLimitedStatus": "Rate limited", + "rateLimitedStatus": "Ograniczono częstotliwość", "noCredential": "Brak danych uwierzytelniających", "searchTypeLabel": "Typ", "rerankModelLabel": "Model rerank", @@ -2649,7 +2649,7 @@ "size": "Rozmiar", "configurationPane": "Panel konfiguracji", "configuration": "Konfiguracja", - "status": "Status", + "status": "Stan", "compareProviderHint": "Wybierz maksymalnie 4 dostawców na karcie Porównaj, aby porównać ich obok siebie.", "history": "Historia", "historyHint": "Historia jest dostępna na karcie Wyszukiwanie.", @@ -2664,7 +2664,7 @@ "httpError": "Błąd {status}", "failed": "Niepowodzenie", "requestFailed": "Żądanie nie powiodło się", - "embedding": "Embedding", + "embedding": "Osadzanie", "embeddingSample": "Witaj, świecie!", "image": "Obraz", "imageSample": "Spokojny krajobraz z górami o zachodzie słońca", @@ -2701,14 +2701,14 @@ "compareEmptyDescription": "Wyniki zostaną wyświetlone obok siebie wraz z opóźnieniem, kosztem i pokryciem adresów URL" }, "cliTools": { - "title": "CLI Tools", + "title": "Narzędzia CLI", "classifierCompatTitle": "Zgodność klasyfikatora automatycznych uprawnień", "classifierCompatDescription": "Omiń klasyfikator bezpieczeństwa --permission-mode auto narzędzia Claude Code za pomocą syntetycznej odpowiedzi zezwalającej, aby trasy zapasowe nie blokowały dostępu. Domyślnie wyłączone.", "classifierCompatCycle": "Cykl: wyłączone → auto → zawsze", "classifierCompatLoadFailed": "Nie udało się załadować ustawienia", "classifierCompatMode": { "off": "Wyłączone", - "auto": "Auto", + "auto": "Automatycznie", "always": "Zawsze" }, "ccDiscoveryInfoButton": "Jak włączyć odkrywanie w Claude Code", @@ -2866,10 +2866,10 @@ "failed": "Nie powiodło się", "resetDone": "Zresetowano!", "omnirouteConfiguredOpenAiCompatible": "OmniRoute jest skonfigurowany jako provider zgodny z OpenAI", - "provider": "Provider", + "provider": "Dostawca", "model": "Model", - "providers": "Providers", - "auth": "Auth", + "providers": "Dostawcy", + "auth": "Uwierzytelnianie", "noApiKeysAvailable": "Brak dostępnych kluczy API", "usingDefaultOmniroute": "Używanie domyślnego: sk_omniroute", "updateConfig": "Aktualizuj konfigurację", @@ -2923,8 +2923,8 @@ "grok-build": "Agent programistyczny TUI xAI Grok Build z obsługą niestandardowych dostawców", "droid": "Asystent AI Factory Droid", "openclaw": "Asystent AI Open Claw", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "cline": "Asystent programowania AI Cline CLI", + "kilo": "Asystent AI Kilo Code CLI", "qwen": "Qwen Code CLI", "cursor": "Edytor kodu Cursor AI", "continue": "Asystent AI Continue", @@ -2950,7 +2950,7 @@ "interpreter": "CLI autonomicznego agenta kodującego Open Interpreter", "omp": "Agent kodujący w terminalu Oh My Pi", "letta": "Agent CLI Letta z trwałą pamięcią i obsługą narzędzi", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — samodoskonalące się środowisko programistyczne RLM z obsługą dostawców zgodnych z OpenAI", "warp": "Terminal Warp AI ze wsparciem dla niestandardowych dostawców", "agent-deck": "Orkiestrator wieloagentowy Agent Deck", "5dive": "5dive — samodzielnie hostowana flota agentów kodujących; jeden profil auth kieruje je wszystkie do OmniRoute" @@ -2971,10 +2971,10 @@ "desc": "Włącz opcję \"OpenAI API key\"" }, "3": { - "title": "Base URL" + "title": "Bazowy adres URL" }, "4": { - "title": "API Key" + "title": "Klucz API" }, "5": { "title": "Dodaj Custom Model", @@ -2992,7 +2992,7 @@ "desc": "Otwórz plik konfiguracyjny Continue" }, "2": { - "title": "API Key" + "title": "Klucz API" }, "3": { "title": "Wybierz model" @@ -3013,7 +3013,7 @@ "desc": "Zainstaluj przez npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Klucz API" }, "3": { "title": "Ustaw Base URL", @@ -3039,11 +3039,11 @@ "desc": "Przejdź do Settings → AI Provider" }, "2": { - "title": "Base URL", + "title": "Bazowy adres URL", "desc": "Wklej URL swojego endpoint OmniRoute" }, "3": { - "title": "API Key" + "title": "Klucz API" }, "4": { "title": "Wybierz model" @@ -3064,11 +3064,11 @@ "desc": "Wybierz \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Bazowy adres URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Klucz API", "desc": "Wybierz swój API key OmniRoute" }, "5": { @@ -3159,11 +3159,11 @@ "hermesRolesWillUpdate": "{count, plural, one {# rola zostanie zaktualizowana} few {# role zostaną zaktualizowane} many {# ról zostanie zaktualizowanych} other {# roli zostanie zaktualizowanych}}", "hermesPreviewPath": "Podgląd — zapisze do ~/.hermes/config.yaml", "hermesSaveDescription": "Zapisuje wybrany model dla każdej roli w", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "Generator konfiguracji GitHub Copilot", "copilotGeneratorDescriptionPrefix": "Generuje", "copilotGeneratorDescriptionSuffix": "blok dla VS Code GitHub Copilot przy użyciu wzorca dostawcy Azure. Wybierz modele, które chcesz, a następnie skopiuj kod JSON do pliku konfiguracyjnego.", "copilotCompatibilityWarning": "Ta konfiguracja używa obejścia dostawcy Azure dla niestandardowych list modeli. Przetestowano z VS Code ≥ 1.109 i GitHub Copilot Chat ≥ v0.37. Przyszłe aktualizacje rozszerzenia mogą zmienić to zachowanie.", - "copilotApiKey": "API Key", + "copilotApiKey": "Klucz API", "copilotSelectModels": "Wybierz modele ({selected}/{total})", "selectAll": "Zaznacz wszystko", "loadingModels": "Ładowanie modeli...", @@ -3176,8 +3176,8 @@ "copilotToolCalling": "Wywoływanie narzędzi", "copilotPasteInto": "Wklej do:", "copilotReloadInstruction": "Następnie uruchom ponownie VS Code i ustaw klucz API w polu wprowadzania.", - "wireApiChatCompletions": "Chat Completions (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiChatCompletions": "Uzupełnienia czatu (/chat/completions)", + "wireApiResponses": "API odpowiedzi (/responses)", "cliproxyapiActionFailed": "Akcja nie powiodła się", "cliproxyapiActionSucceeded": "Akcja zakończona sukcesem", "cliproxyapiCheckUpdates": "Sprawdź aktualizacje", @@ -3189,7 +3189,7 @@ "cliproxyapiPort": "Port", "cliproxyapiRequestFailed": "Żądanie nie powiodło się", "cliproxyapiRestart": "Uruchom ponownie", - "cliproxyapiStart": "Start", + "cliproxyapiStart": "Uruchom", "cliproxyapiStatusError": "Błąd", "cliproxyapiStatusInstalled": "Zainstalowane", "cliproxyapiStatusNotInstalled": "Nie zainstalowano", @@ -3203,7 +3203,7 @@ "cliproxyapiVersion": "Wersja" }, "combos": { - "title": "Combos", + "title": "Kombinacje", "description": "Tworzenie model combos z routingiem ważonym i obsługą fallback", "autoCatalogTitle": "Katalog auto-routingu", "autoCatalogTemplateCount": "{count} szablonów", @@ -3219,12 +3219,12 @@ "addModelToCombo": "Dodaj Model do Combo", "routingStrategy": "Strategia routingu", "maxRetries": "Maksymalna liczba prób", - "timeout": "Timeout (ms)", + "timeout": "Limit czasu (ms)", "healthcheck": "Kontrola stanu", "priority": "Priorytet", - "fallback": "Fallback", + "fallback": "Tryb awaryjny", "roundRobin": "Round Robin", - "random": "Random", + "random": "Losowo", "leastLatency": "Najniższe opóźnienie", "comboName": "Nazwa Combo", "comboNamePlaceholder": "my-combo", @@ -3260,29 +3260,29 @@ "priorityDesc": "Sekwencyjny fallback: najpierw próbuje model 1, potem 2 itd.", "weightedDesc": "Rozdziela ruch według procentowej wagi z fallback", "roundRobinDesc": "Dystrybucja cykliczna: każde żądanie trafia do kolejnego model w rotacji", - "contextRelay": "Context Relay", + "contextRelay": "Przekazywanie kontekstu", "contextRelayDesc": "Zachowuje ciągłość sesji dzięki podsumowaniom handoff podczas rotacji kont", "randomDesc": "Jednolity wybór losowy, a następnie fallback do pozostałych models", "leastUsedDesc": "Wybiera model z najmniejszą liczbą żądań, bilansując obciążenie w czasie", "costOptimizedDesc": "Kieruje ruch najpierw do najtańszego model na podstawie cennika", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Konsekwentnie kieruje każdy prefiks podpowiedzi wielokrotnego użytku do tego samego konta dostawcy", + "resetAware": "RR uwzględniający reset", "resetAwareDesc": "Bilansuje pozostały quota z resetami 5-godzinnymi i tygodniowymi, a następnie stosuje round-robin dla podobnych wyników", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Ważone według limitu", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", + "strictRandom": "Ściśle losowo", "strictRandomDesc": "Tasowanie talii — używa każdego model raz przed ponownym przetasowaniem", - "fusion": "Fusion", + "fusion": "Fuzja", "fusionDesc": "Wysyła prompt równolegle do każdego model panelu, a następnie model sędziowski syntetyzuje jedną ostateczną odpowiedź", "fusionJudgeModel": "Model sędziowski", "fusionJudgeModelHelp": "Model, który syntetyzuje odpowiedzi panelu w jedną ostateczną odpowiedź. Pozostaw puste, aby użyć pierwszego panel model.", - "fusionMinPanel": "Min panel", + "fusionMinPanel": "Minimalny panel", "fusionMinPanelHelp": "Wymagana liczba udanych odpowiedzi panelu, zanim opóźnione models otrzymają okno grace (domyślnie 2).", - "fusionStragglerGraceMs": "Straggler grace (ms)", + "fusionStragglerGraceMs": "Okres oczekiwania na maruderów (ms)", "fusionStragglerGraceMsHelp": "Jak długo czekać na powolne panel models po osiągnięciu kworum (domyślnie 8000).", - "fusionPanelHardTimeoutMs": "Panel hard timeout (ms)", + "fusionPanelHardTimeoutMs": "Nieprzekraczalny limit czasu panelu (ms)", "fusionPanelHardTimeoutMsHelp": "Absolutny limit, dzięki któremu jeden zawieszony model nie zablokuje całego panelu (domyślnie 90000).", - "models": "Models", + "models": "Modele", "autoBalance": "Auto-balans", "advancedSettings": "Ustawienia zaawansowane", "retryDelay": "Opóźnienie ponownej próby (ms)", @@ -3335,7 +3335,7 @@ "playgroundStrategy": "Strategia", "playgroundEstimatedCost": "Szac. koszt", "playgroundEstimatedLatency": "Szac. opóźnienie", - "playgroundFallback": "fallback", + "playgroundFallback": "tryb awaryjny", "playgroundWeight": "waga {value}", "playgroundWarningCount": "Ostrzeżenia ({count})", "playgroundErrorCount": "Błędy ({count})", @@ -3344,7 +3344,7 @@ "playgroundCreateFirst": "Najpierw utwórz jedną", "weighted": "Ważony", "leastUsed": "Najmniej używany", - "costOpt": "Cost-Opt", + "costOpt": "Optymalizacja kosztów", "strategyGuideTitle": "Jak korzystać z tej strategii", "strategyGuideWhen": "Kiedy używać", "strategyGuideAvoid": "Kiedy unikać", @@ -3518,7 +3518,7 @@ "excludedProviders": "Wykluczeni providers", "excludedProvidersHint": "Providers z otwartym (OPEN) circuit breaker są tymczasowo wykluczeni z routingu.", "noExcludedProviders": "Obecnie żaden z providers nie jest wykluczony.", - "cooldownMinutes": "Cooldown: {minutes}m", + "cooldownMinutes": "Okres karencji: {minutes} min", "builderIntelligentTitle": "Konfiguracja inteligentnego routingu", "builderIntelligentDesc": "Skonfiguruj wieloczynnikowy silnik oceniania dla tego combo z auto-routingiem.", "candidatePoolLabel": "Pula kandydatów", @@ -3528,7 +3528,7 @@ "modePackLabel": "Mode pack", "routerStrategyLabel": "Strategia routera", "strategyRules": "Reguły (ocenianie 6-czynnikowe)", - "explorationRateLabel": "Exploration Rate", + "explorationRateLabel": "Współczynnik eksploracji", "explorationRateHint": "{percent}% żądań może eksplorować nieoptymalnych providers.", "budgetCapLabel": "Limit budżetu (USD / żądanie)", "budgetCapPlaceholder": "Brak limitu", @@ -3536,14 +3536,14 @@ "nestedComboFlatten": "Spłaszcz zagnieżdżone kombinacje", "nestedComboExecute": "Wykonaj zagnieżdżone kombinacje jako cele", "effectiveRoutingShare": "Efektywny udział w routingu (waga ÷ suma)", - "weightQuota": "Quota", + "weightQuota": "Limit", "weightHealth": "Zdrowie", "weightCostInv": "Koszt", "weightLatencyInv": "Opóźnienie", - "weightTaskFit": "Task Fit", + "weightTaskFit": "Dopasowanie do zadania", "weightStability": "Stabilność", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightTierPriority": "Poziom", + "weightCacheAffinity": "Preferencja trafień w pamięci podręcznej", "weightSessionAvailability": "Dostępność Sesji", "reviewIntelligentTitle": "Konfiguracja inteligentnego routingu", "strategyRecommendations": { @@ -3643,10 +3643,10 @@ "tip1": "Monitoruj metryki stanu zdrowia provider w celu dokładnej oceny obciążenia.", "tip2": "Działa najlepiej z jednorodnymi pulami provider.", "tip3": "Dostosuj czułość, aby uniknąć oscylacji podczas nagłych wzrostów ruchu.", - "title": "Power of Two Choices" + "title": "Wybór z dwóch opcji" } }, - "templateFreeStack": "Free Stack ($0)", + "templateFreeStack": "Darmowy stos ($0)", "templateFreeStackDesc": "Round-robin po wszystkich darmowych providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zerowy koszt, nigdy nie przestaje kodować.", "auto": "Inteligentne Auto", "autoDesc": "Samonaprawiająca się inteligentna pula routingu z ocenianiem wieloczynnikowym", @@ -3664,10 +3664,10 @@ "wizardStep3Desc": "Wybierz, jak żądania są rozdzielane między models - dostępnych jest 14 strategii", "wizardStep4Title": "Przejrzyj i zapisz", "wizardStep4Desc": "Przejrzyj konfigurację i aktywuj combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", + "usageGuideInvokeTitle": "Jak wywołać tę kombinację", + "usageGuideInvokeDesc": "Wyślij dokładną nazwę kombinacji jako model, np. model: \"my-combo\" (lub combo/my-combo).", + "usageGuideInvokeAutoNote": "auto i auto/* to osobny router bez konfiguracji, który nie korzysta z Twoich kombinacji (chyba że kombinacja nosi dosłownie nazwę auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto to rzeczywisty płatny produkt OpenRouter (Auto Best Available), a nie alias OmniRoute — wyklucz go w Ustawienia → Routing → Ukryj płatne modele.", "emailVisibilityStateOn": "Wł.", "emailVisibilityStateOff": "Wył.", "reorderHandle": "Przeciągnij, aby zmienić kolejność", @@ -3701,7 +3701,7 @@ "builderStageLocked": "Zablokowany — najpierw ukończ poprzedni krok", "builderTitle": "Zbuduj combo", "builderBrowseCatalog": "Przeglądaj katalog", - "builderProvider": "Provider", + "builderProvider": "Dostawca", "builderLoadingProviders": "Ładowanie providers...", "builderSelectProvider": "Wybierz provider", "builderModel": "Model", @@ -3720,7 +3720,7 @@ "reviewStrategy": "Strategia", "reviewSteps": "Kroki", "reviewAccounts": "Konta", - "reviewProviders": "Providers", + "reviewProviders": "Dostawcy", "reviewComboRefs": "Referencje combo", "reviewAdvanced": "Ustawienia zaawansowane", "reviewAgentFlags": "Flagi agenta", @@ -3754,7 +3754,7 @@ "responseValidationJsonPaths": "Testy JSON-path", "responseValidationAddCheck": "+ Dodaj test", "agentFeaturesSystemMessageOverride": "Zastąp komunikat systemowy", - "agentFeaturesSystemMessagePlaceholder": "You are an expert assistant...", + "agentFeaturesSystemMessagePlaceholder": "Jesteś ekspertem pełniącym rolę asystenta...", "agentFeaturesSystemMessageHint": "Zastąpienie komunikatu systemowego dla agentów", "agentFeaturesToolFilterRegex": "/regex-pattern/", "agentFeaturesToolFilterHint": "Regex filtrowania narzędzi dla agentów", @@ -3766,7 +3766,7 @@ "agentFeaturesContextLengthErrorInteger": "Długość kontekstu musi być liczbą całkowitą", "agentFeaturesContextLengthErrorRange": "Długość kontekstu musi wynosić od 1000 do 2000000", "compressionOverride": "Nadpisanie kompresji", - "modePack": "Mode Pack", + "modePack": "Pakiet trybów", "disableSessionStickiness": "Wyłącz session stickiness", "sessionStickinessEnabled": "Stickiness włączone", "sessionStickinessDisabled": "Stickiness wyłączone", @@ -3805,8 +3805,8 @@ "rangeAll": "Od początku", "spend30d": "Wydatki 30D", "activeModels": "Aktywne models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", + "flatRateEstimateNotice": "Obejmuje szacunkowe ceny tokenów dla subskrypcji ryczałtowych, a nie faktycznie naliczony koszt.", + "flatRateEstimateForecast": "Prognoza obejmuje szacunki dla planów ryczałtowych.", "selectedWindow": "Wybrany okres", "activeProviders": "Aktywni providers", "overviewTitle": "Przegląd kosztów", @@ -3827,7 +3827,7 @@ "inputTokens": "Wejściowe tokens", "outputTokens": "Wyjściowe tokens", "inputOutputRatio": "Stosunek input/output", - "tokens": "tokens", + "tokens": "tokeny", "routingEfficiency": "Wydajność routingu", "fallbackCount": "Zapytania fallback", "fallbackRate": "Wskaźnik fallback", @@ -3836,7 +3836,7 @@ "outOfRequests": "z {total} zapytań", "costByApiKey": "Koszt według API Key", "costByAccount": "Koszt według konta", - "apiKeyName": "API Key", + "apiKeyName": "Klucz API", "account": "Konto", "requests": "Zapytania", "cost": "Koszt", @@ -3854,17 +3854,17 @@ "currentPeriod": "Bieżąca połowa", "exportCSV": "Eksportuj jako CSV", "exportJSON": "Eksportuj jako JSON", - "legacyFreeLabel": "Legacy / Free", - "costExplorerTitle": "Cost Explorer", + "legacyFreeLabel": "Starsze / bezpłatne", + "costExplorerTitle": "Eksplorator kosztów", "costExplorerDescription": "Eksploracja wydatków według provider, model, API Key, konta lub poziomu usługi.", - "groupProvider": "Provider", + "groupProvider": "Dostawca", "groupModel": "Model", - "groupApiKey": "API Key", + "groupApiKey": "Klucz API", "groupAccount": "Konto", "groupServiceTier": "Poziom usługi", - "serviceTierFast": "Fast", - "serviceTierFlex": "Flex", - "serviceTierStandard": "Standard", + "serviceTierFast": "Szybki", + "serviceTierFlex": "Elastyczny", + "serviceTierStandard": "Standardowy", "serviceTierBreakdownTitle": "Poziom usługi", "serviceTierBreakdownSubtitle": "Podział na Fast / Flex / Standard", "serviceTierUsageSaved": "zaoszczędzone zużycie", @@ -3872,7 +3872,7 @@ "serviceTierCostShareSuffix": "kosztów", "dimension": "Wymiar", "share": "Udział", - "legacyOrFree": "Legacy / Free", + "legacyOrFree": "Starszy / bezpłatny", "filterRows": "Filtruj wiersze…", "filterCostExplorerRows": "Filtruj wiersze Cost Explorer", "noMatchingCostRows": "Brak pasujących wierszy kosztów", @@ -3881,10 +3881,10 @@ "showingTopCostRows": "Wyświetlanie {shown} z {total} pasujących wierszy (top 50)." }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "title": "Punkt końcowy API", + "subtitle": "Użyj punktu końcowego zgodnego z OpenAI w większości zestawów SDK i narzędzi.", + "testEndpoint": "Testuj punkt końcowy →", + "advancedProtocols": "Protokoły zaawansowane", "available": "Dostępne endpoints", "cloudProxy": "Cloud Proxy", "disableConfirm": "Czy na pewno wyłączyć cloud proxy?", @@ -3892,8 +3892,8 @@ "apiKeyLabel": "Klucz API", "registeredKeys": "Zarejestrowane klucze", "chatCompletions": "Chat Completions", - "responses": "Responses", - "listModels": "List Models", + "responses": "Odpowiedzi", + "listModels": "Lista modeli", "usingCloudProxy": "Używanie Cloud Proxy", "usingLocalServer": "Używanie lokalnego serwera", "machineId": "ID maszyny: {id}...", @@ -3902,7 +3902,7 @@ "modelsAcrossEndpoints": "{models} models w obrębie {endpoints} endpoints", "loadingModels": "Ładowanie dostępnych models...", "chatDesc": "Czat strumieniowy i niestrumieniowy ze wszystkimi providers", - "embeddings": "Embeddings", + "embeddings": "Osadzenia", "embeddingsDesc": "Embeddings tekstowe dla wyszukiwania i potoków RAG", "imageGeneration": "Generowanie obrazów", "imageDesc": "Generowanie obrazów na podstawie promptów tekstowych", @@ -3910,7 +3910,7 @@ "rerankDesc": "Rerankowanie dokumentów według trafności do zapytania", "audioTranscription": "Transkrypcja audio", "audioTranscriptionDesc": "Transkrypcja plików audio na tekst (Whisper)", - "textToSpeech": "Text to Speech", + "textToSpeech": "Tekst na mowę", "textToSpeechDesc": "Konwersja tekstu na naturalnie brzmiącą mowę", "musicGeneration": "Generowanie muzyki", "musicDesc": "Generowanie muzyki i ścieżek dźwiękowych przez ComfyUI (Stable Audio, MusicGen)", @@ -3919,14 +3919,14 @@ "responsesDesc": "OpenAI Responses API dla Codex i zaawansowanych przepływów agentowych", "listModelsDesc": "Lista wszystkich dostępnych models u wszystkich połączonych providers", "settingsApiDesc": "Odczyt i modyfikacja konfiguracji OmniRoute przez API", - "settingsApi": "Settings API", + "settingsApi": "API ustawień", "categoryCore": "Główne API", "categoryMedia": "Multimedia i multimodalność", "categorySearch": "Wyszukiwanie i odkrywanie", "categoryUtility": "Narzędzia i zarządzanie", - "webSearch": "Web Search", + "webSearch": "Wyszukiwanie w sieci", "webSearchDesc": "Zunifikowane wyszukiwanie w sieci u wielu providers z automatycznym przełączaniem awaryjnym i buforowaniem", - "searchProvider": "Search Provider", + "searchProvider": "Dostawca wyszukiwania", "searchProviderDesc": "Ten provider jest używany do wyszukiwania w sieci przez POST /v1/search. Nie jest wymagana konfiguracja model — search providers są gotowe do użycia po podłączeniu klucza API.", "enableCloudTitle": "Włącz Cloud Proxy", "whatYouGet": "Korzyści", @@ -3979,12 +3979,12 @@ "cloudflaredUnsupportedNote": "Ta platforma nie jest wspierana dla instalacji zarządzanych. Zainstaluj cloudflared ręcznie lub wskaż CLOUDFLARED_BIN na istniejący plik wykonywalny.", "cloudflaredIdleNote": "Utwórz tymczasowy Cloudflare Quick Tunnel dla tego endpoint.", "cloudflaredLastError": "Ostatni błąd: {error}", - "providerModelsTitle": "{provider} — Models", + "providerModelsTitle": "{provider} — modele", "noModelsForProvider": "Brak dostępnych models dla tego provider.", "chat": "Czat", - "embedding": "Embedding", + "embedding": "Osadzanie", "image": "Obraz", - "custom": "custom", + "custom": "niestandardowy", "modelsCount": "{count, plural, one {# model} other {# modeli}}", "sectionTitle": "Obszar integracji", "sectionDescription": "Interfejsy API zgodne z OpenAI i operacyjne endpoints protokołów", @@ -3996,7 +3996,7 @@ "mcpCardTitle": "Serwer MCP", "mcpCardDescription": "Model Context Protocol przez stdio", "a2aCardTitle": "Serwer A2A", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", + "a2aCardDescription": "Punkt końcowy Agent2Agent JSON-RPC", "protocolToolsLabel": "Narzędzia", "protocolTasksLabel": "Zadania", "protocolActiveStreamsLabel": "Aktywne strumienie", @@ -4012,15 +4012,15 @@ "a2aQuickStartStep1": "Wykryj kartę agenta pod adresem `/.well-known/agent.json`.", "a2aQuickStartStep2": "Wyślij żądania JSON-RPC do `POST /a2a` za pomocą `message/send` lub `message/stream`.", "a2aQuickStartStep3": "Śledź zadania i kontroluj je za pomocą `tasks/get` i `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", + "completionsLegacy": "Uzupełnienia (starsza wersja)", "completionsLegacyDesc": "Archiwalne uzupełnianie tekstu OpenAI — akceptuje zarówno format ciągu tekstowego prompt, jak i tablicę komunikatów messages", - "messagesApi": "Messages", + "messagesApi": "Wiadomości", "messagesApiDesc": "Natywny format Anthropic Messages API dla providers zgodnych z Claude", "imageEdits": "Edycja obrazów", "imageEditsDesc": "Edycja i modyfikacja istniejących obrazów za pomocą AI (inpainting, outpainting, wariacje)", - "batchApi": "Batch API", + "batchApi": "Interfejs Batch API", "batchApiDesc": "Asynchroniczne przetwarzanie dużych partii żądań (zgodne z OpenAI)", - "filesApi": "Files API", + "filesApi": "Interfejs Files API", "filesApiDesc": "Przesyłanie i zarządzanie plikami do przetwarzania wsadowego", "videoGeneration": "Generowanie wideo", "videoDesc": "Generowanie wideo przy użyciu models AI, takich jak ComfyUI i Stable Video Diffusion.", @@ -4108,7 +4108,7 @@ "all": "Wszystkie", "more": "+{count} więcej", "showInternalTooltip": "Pokaż lub ukryj wewnętrzne trasy (domyślnie ukryte)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Uwierzytelnianie Bearer", "requestBody": "Treść żądania", "close": "Zamknij", "tryIt": "Wypróbuj", @@ -4122,24 +4122,24 @@ "sending": "Wysyłanie...", "sendRequest": "Wyślij żądanie", "dataSchemas": "Schematy danych", - "vscodeAliasTitle": "VS Code Token Alias", + "vscodeAliasTitle": "Alias tokenu VS Code", "vscodeAliasDescriptionReady": "Gotowe do wklejenia adresy URL zgodności korzystające z endpoint /api/v1/vscode/TOKEN/...", "vscodeAliasDescriptionError": "Wyświetlanie zastępczych adresów URL, ponieważ w tej sesji nie można było załadować kluczy CLI.", "vscodeAliasDescriptionLoading": "Ładowanie kluczy CLI. Zastępcze adresy URL są wyświetlane do momentu udostępnienia klucza.", "vscodeAliasDescriptionPlaceholder": "Wyświetlanie zastępczych adresów URL. Utwórz lub aktywuj klucz API w CLI Tools, aby zastąpić TOKEN.", - "vscodeAliasManage": "CLI Tools", - "vscodeAliasBaseLabel": "VS Code base", - "vscodeAliasModelsLabel": "VS Code models", - "vscodeAliasChatLabel": "VS Code chat", + "vscodeAliasManage": "Narzędzia CLI", + "vscodeAliasBaseLabel": "Baza VS Code", + "vscodeAliasModelsLabel": "Modele VS Code", + "vscodeAliasChatLabel": "Czat VS Code", "localServer": "Lokalny serwer", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute w chmurze", "copyUrl": "Kopiuj URL", "badgeLoopbackTooltip": "Ten endpoint jest dostępny wyłącznie lokalnie (tylko pętla zwrotna/loopback)", "badgeAlwaysProtectedTooltip": "Ten endpoint jest zawsze chroniony i wymaga autoryzacji", "badgeInternalTooltip": "To jest wewnętrzny endpoint systemowy", "tierAll": "Wszystkie", "tierAuth": "Uwierzytelnione", - "tierLoopback": "Loopback", + "tierLoopback": "Pętla zwrotna", "tierAlwaysProtected": "Zawsze chronione", "tierPublic": "Publiczne", "hideInternal": "Ukryj wewnętrzne", @@ -4195,9 +4195,9 @@ "notionTokenConfigured": "Token skonfigurowany. Narzędzia Notion są dostępne przez MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", + "tabProxy": "Serwer proxy punktu końcowego", + "tabApiEndpoints": "Punkty końcowe API", + "apiEndpointsTitle": "Punkty końcowe API", "apiEndpointsDescription": "Backendowe API endpoints, które mogą być konsumowane przez inne aplikacje i usługi. Ta sekcja zawiera listę wszystkich dostępnych REST API wraz z dokumentacją i możliwościami testowania.", "comingSoon": "Wkrótce", "plannedFeatures": "Planowane funkcje", @@ -4288,7 +4288,7 @@ "previous": "Poprzedni", "next": "Następny", "apiKeyId": "ID klucza API", - "offset": "Offset", + "offset": "Przesunięcie", "limit": "Limit", "tool": "Narzędzie" }, @@ -4347,7 +4347,7 @@ "events": "Zdarzenia", "artifacts": "Artefakty", "tablePhase": "Faza tabeli", - "offset": "Offset", + "offset": "Przesunięcie", "limit": "Limit", "skill": "Umiejętność", "rpcEndpoint": "POST /a2a", @@ -4405,7 +4405,7 @@ "staticDesc": "Lokalne osadzanie bez WASM ani zewnętrznych zależności", "transformersLabel": "Transformers.js (MiniLM)", "transformersDesc": "Lokalne osadzanie przez @huggingface/transformers (~400 MB RAM)", - "providerModelLabel": "Provider / Model", + "providerModelLabel": "Dostawca / model", "noRemoteProviders": "Brak providers ze skonfigurowanym kluczem API", "selectProviderModel": "Wybierz model", "customBaseUrlLabel": "Niestandardowy adres URL podstawowy (opcjonalnie)", @@ -4434,9 +4434,9 @@ "keywordLabel": "Słowo kluczowe (FTS5)", "keywordReason": "Wyszukiwanie słów kluczowych jest zawsze dostępne", "embeddingLabel": "Osadzanie", - "vectorStoreLabel": "Vector Store", + "vectorStoreLabel": "Magazyn wektorowy", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Ponowne rankingowanie", "qdrantDisabled": "Wyłączone", "qdrantOk": "W normie ({latencyMs} ms)", "qdrantError": "Błąd połączenia", @@ -4448,7 +4448,7 @@ "export": "Eksportuj", "factual": "Faktyczna", "healthUnknown": "Nieznany stan", - "hitRate": "Hit Rate", + "hitRate": "Współczynnik trafień", "import": "Importuj", "importError": "Nie udało się zaimportować pliku", "importResult": "Zaimportowano: {imported}, pominięto: {skipped}", @@ -4475,10 +4475,10 @@ "resultsTitle": "{count} wynik(ów)", "resolutionTitle": "Rozstrzygnięcie wyszukiwania", "resolutionEmbedding": "Osadzanie", - "resolutionStore": "Vector store", + "resolutionStore": "Magazyn wektorowy", "resolutionStrategy": "Użyta strategia", "rerankApplied": "Zastosowano rerank", - "fallback": "Fallback", + "fallback": "Rozwiązanie awaryjne", "noResults": "Nie znaleziono wpisów pamięci dla tego zapytania.", "tokensUsed": "użyte tokens", "none": "brak", @@ -4487,7 +4487,7 @@ "previous": "Wstecz", "procedural": "Proceduralna", "qdrant": { - "title": "Qdrant (Vector Store Tier 2)", + "title": "Qdrant (magazyn wektorowy poziomu 2)", "description": "Opcjonalna integracja z Qdrant do skalowalnego wyszukiwania semantycznego", "enableLabel": "Włącz Qdrant", "enableDesc": "Po włączeniu Qdrant będzie używany jako główny vector store", @@ -4528,7 +4528,7 @@ "enableLabel": "Włącz Rerank", "enableDesc": "Zmienia kolejność wyników za pomocą model rerankingu po wyszukaniu", "warning": "Rerank dodaje +200-500 ms opóźnienia i dodatkowy koszt za żądanie. Używaj oszczędnie.", - "providerModelLabel": "Rerank Provider / Model", + "providerModelLabel": "Dostawca / model ponownego rankingowania", "noProviderWithKey": "Brak provider ze skonfigurowanym kluczem API. Skonfiguruj provider, aby używać rerank.", "selectProviderModel": "Wybierz provider/model" }, @@ -4544,7 +4544,7 @@ }, "tabs": { "memories": "Pamięć", - "playground": "Playground", + "playground": "Środowisko testowe", "engine": "Silnik" }, "title": "Zarządzanie pamięcią", @@ -4569,7 +4569,7 @@ "executionsTab": "Uruchomienia", "selectSkillToInspect": "Wybierz umiejętność po lewej stronie, aby ją zbadać.", "schemaTab": "Schemat", - "handlerTab": "Handler", + "handlerTab": "Procedura obsługi", "inputSchema": "Schemat wejściowy", "outputSchema": "Schemat wyjściowy", "handlerCode": "Kod handlera", @@ -4577,7 +4577,7 @@ "runTestPlaceholder": "Uruchom test (placeholder)", "setModeAria": "Ustaw tryb {mode}", "uninstallSkill": "Odinstaluj umiejętność", - "sandboxTab": "Sandbox", + "sandboxTab": "Piaskownica", "loading": "Ładowanie umiejętności...", "noSkills": "Nie znaleziono umiejętności", "noExecutions": "Nie znaleziono uruchomień", @@ -4587,7 +4587,7 @@ "version": "Wersja", "tableDescription": "Opis", "skill": "Umiejętność", - "status": "Status", + "status": "Stan", "duration": "Czas trwania", "time": "Czas", "sandboxConfig": "Konfiguracja Sandbox", @@ -4595,7 +4595,7 @@ "cpuLimitDesc": "Maksymalny czas wykonania na umiejętność", "memoryLimit": "Limit pamięci", "memoryLimitDesc": "Maksymalna alokacja pamięci", - "timeout": "Timeout", + "timeout": "Limit czasu", "timeoutDesc": "Maksymalny czas oczekiwania na odpowiedź", "networkAccess": "Dostęp do sieci", "networkAccessDesc": "Zezwalaj na wychodzące żądania sieciowe", @@ -4607,7 +4607,7 @@ "enabledSkills": "Włączone", "totalExecutions": "Uruchomienia", "successRate": "Skuteczność", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Rynek", "applyFilters": "Zastosuj filtry", "popularDefaultsLabel": "Popularne domyślnie dla wybranego provider:", "onMode": "WŁ.", @@ -4647,10 +4647,10 @@ "healthy": "Sprawny", "degraded": "Zdegradowany", "down": "Niedostępny", - "uptime": "Uptime", + "uptime": "Czas działania", "memory": "Pamięć", "memoryRss": "Pamięć (RSS)", - "heap": "Heap", + "heap": "Sterta", "cpu": "CPU", "database": "Baza danych", "version": "Wersja", @@ -4665,13 +4665,13 @@ "retry": "Ponów", "allOperational": "Wszystkie systemy działają sprawnie", "issuesDetected": "Wykryto problemy z systemem", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute jest gotowy", + "healthVerdictActionRequired": "Wymagane działanie w celu przywrócenia pełnej funkcjonalności", + "healthVerdictCoolingDown": "Stabilizacja po ostatnich zmianach", + "healthSubtitle": "Kontrola kondycji systemu", + "advancedDiagnosticsTitle": "Zaawansowana diagnostyka", + "hide": "Ukryj", + "show": "Pokaż", "updatedAt": "Zaktualizowano {time}", "latency": "Opóźnienie", "latencyP50": "p50", @@ -4681,11 +4681,11 @@ "notAvailable": "—", "totalRequests": "Łączna liczba żądań", "noDataYet": "Brak danych", - "promptCache": "Prompt Cache", + "promptCache": "Pamięć podręczna promptów", "entries": "Wpisy", - "hitRate": "Hit Rate", + "hitRate": "Współczynnik trafień", "hitsMisses": "Trafienia / Chybienia", - "signatureCache": "Signature Cache", + "signatureCache": "Pamięć podręczna sygnatur", "signatureDefaults": "Domyślne", "signatureTool": "Narzędzie", "signatureFamily": "Rodzina", @@ -4695,7 +4695,7 @@ "providerHealthStatusAria": "Stan sprawności Providerów", "issuesLabel": "Wykryte problemy", "operational": "Sprawny", - "providers": "Providers", + "providers": "Dostawcy", "configuredProvidersLabel": "Skonfigurowane w dashboardzie", "configuredProvidersHint": "Providers z danymi uwierzytelniającymi zapisanymi w /dashboard/providers, niezależnie od stanu uruchomieniowego.", "activeProviders": "{count} aktywnych", @@ -4728,7 +4728,7 @@ "lastHeaderUpdate": "Aktualizacja nagłówka: {age}", "databaseHealth": "Stan bazy danych", "databaseHealthDescription": "Diagnozuj i naprawiaj nieaktualne wiersze limitów/domen oraz uszkodzone referencje combo.", - "status": "Status", + "status": "Stan", "attentionNeeded": "Wymaga uwagi", "repairs": "Naprawy", "repairing": "Naprawianie...", @@ -4754,14 +4754,14 @@ "noSessionQuotaMonitorsActive": "Brak aktywnych monitorów quota sesji.", "gracefulDegradationStatus": "Stan Graceful Degradation", "additionalModels": "+{count} kolejnych models", - "providerHealthMatrixTitle": "Provider Health Matrix", + "providerHealthMatrixTitle": "Macierz kondycji dostawców", "providerHealthMatrixDescription": "Stany provider × konto × model z breakerów, cooldownów, blokad i logów.", "healthMatrixRange": "Zakres macierzy stanu", "providerFilter": "Filtr Providerów", "onlyIssues": "Tylko problemy", "refresh": "Odśwież", "accounts": "Konta", - "models": "Models", + "models": "Modele", "issues": "Problemy", "loadingProviderHealthMatrix": "Ładowanie Provider Health Matrix...", "failedProviderHealthMatrix": "Nie udało się załadować Provider Health Matrix: {error}", @@ -4772,12 +4772,12 @@ "inferred": "wywnioskowany", "inactive": "Nieaktywny", "noConnectionId": "brak ID połączenia", - "accountModelSummary": "{connectionId} · {count} models", - "cooldown": "cooldown", + "accountModelSummary": "{connectionId} · {count} modeli", + "cooldown": "okres karencji", "durationRemaining": "pozostało {duration}", "noSyncedModelsOrTraffic": "Brak zsynchronizowanych models lub niedawnego ruchu.", "providerRowSummary": "{active}/{total} aktywnych kont · {requests} req · {successRate} sukces · {latency} avg", - "cooldownCount": "{count} cooldown", + "cooldownCount": "{count} w okresie karencji", "lockoutCount": "{count} blokad", "issueCount": "{count} problemów", "score": "Wynik", @@ -4787,7 +4787,7 @@ "telemetry": { "title": "Telemetria systemu", "description": "Bieżące sygnały dotyczące żądań, środowiska uruchomieniowego, sesji i pamięci z tego procesu OmniRoute.", - "uptime": "Uptime", + "uptime": "Czas działania", "totalRequests": "Łączna liczba żądań", "avgLatency": "Średnie opóźnienie", "errorRate": "Wskaźnik błędów", @@ -4802,11 +4802,11 @@ "partialData": "Telemetria jest częściowo dostępna: {error}" }, "mitm": { - "title": "MITM Proxy", + "title": "Proxy MITM", "description": "Przezroczysty serwer proxy do przechwytywania i routowania żądań klientów.", "enable": "Włącz MITM Proxy", "enableDesc": "Uruchom lub zatrzymaj lokalny proces przechwytywania i nadpisywania DNS.", - "status": "Status", + "status": "Stan", "running": "Uruchomiony", "stopped": "Zatrzymany", "start": "Uruchom", @@ -4843,7 +4843,7 @@ "target": "Cel", "host": "Host", "localPort": "Port lokalny", - "endpoints": "Endpoints", + "endpoints": "Punkty końcowe", "enabled": "Włączone", "configured": "Skonfigurowano", "yes": "Tak", @@ -4852,10 +4852,10 @@ }, "limits": { "title": "Limity i Quotas", - "rateLimit": "Rate Limit", + "rateLimit": "Limit szybkości", "remaining": "Pozostało", "requestsPerMinute": "Żądania/min", - "tokensPerMinute": "Tokens/min", + "tokensPerMinute": "Tokeny/min", "dailyLimit": "Limit dzienny" }, "logs": { @@ -4894,9 +4894,9 @@ "requestId": "ID żądania", "providerWarningDesc": "Niektóre Providers zwróciły ostrzeżenia podczas przetwarzania żądania", "a": "A", - "offset": "Offset", + "offset": "Przesunięcie", "limit": "Limit", - "status": "Status", + "status": "Stan", "resourceType": "Typ zasobu", "totalEntries": "Łączna liczba wpisów", "tab": "Karta", @@ -4907,7 +4907,7 @@ "clearAll": "Wyczyść wszystko", "confirmClearActiveRequests": "Wyczyścić wszystkie aktywne żądania?", "model": "Model", - "provider": "Provider", + "provider": "Dostawca", "account": "Konto", "elapsed": "Czas trwania", "activeStage": "Etap", @@ -4920,7 +4920,7 @@ "activeStageSendingToProvider": "Wysyłanie do upstream", "activeStageProviderResponseStarted": "Rozpoczęto odpowiedź upstream", "count": "Liczba", - "payloads": "Payloads", + "payloads": "Ładunki", "viewPayloads": "Wyświetl", "activeCount": "{count} aktywnych", "clientPayload": "Payload żądania klienta", @@ -4961,7 +4961,7 @@ }, "compressionLogTitle": "Log kompresji", "compressionLogEmpty": "Brak jeszcze skompresowanych żądań. Statystyki kompresji pojawią się tutaj, gdy żądania będą przetwarzane z włączoną kompresją.", - "tokens": "tokens" + "tokens": "tokeny" }, "onboarding": { "welcome": "Witamy", @@ -4984,12 +4984,12 @@ "setupComplete": "Konfiguracja zakończona!", "goToDashboard": "Przejdź do dashboard →", "welcomeDesc": "OmniRoute to lokalne proxy API AI. Przekierowuje zapytania do wielu AI providers z równoważeniem obciążenia, failover i śledzeniem użycia.", - "multiProvider": "Multi-Provider", + "multiProvider": "Wielu dostawców", "usageTracking": "Śledzenie użycia", "securityDesc": "Ustaw hasło, aby zabezpieczyć dashboard, lub pomiń na razie.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Bez hasła nie będzie można dodać dostawców podczas konfiguracji. Można ich dodać później z poziomu panelu po ustawieniu hasła.", "providerDesc": "Połącz pierwszego AI provider. Więcej można dodać później.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Aby dodać dostawców, należy najpierw ustawić hasło. Wróć do kroku zabezpieczeń i ustaw hasło albo dodaj dostawców później z poziomu panelu.", "apiKeyRequired": "Klucz API (wymagany)", "customUrlOptional": "Niestandardowy URL (opcjonalnie)", "testDesc": "Zweryfikujmy, czy połączenie z provider działa.", @@ -5006,7 +5006,7 @@ "failedSetPassword": "Nie udało się ustawić hasła. Spróbuj ponownie.", "failedAddProvider": "Nie udało się dodać provider. Spróbuj ponownie.", "connectionError": "Błąd połączenia. Spróbuj ponownie.", - "provider": "Provider", + "provider": "Dostawca", "apiKeyHelp": "Klucz API to hasło do usług AI. Można go uzyskać na stronie internetowej provider (np. platform.openai.com, console.anthropic.com).", "tier": { "subtitle": "OmniRoute organizuje providers w trzy tiers, aby routing najpierw wybierał najbardziej niezawodną i najtańszą ścieżkę.", @@ -5049,10 +5049,10 @@ } }, "providers": { - "title": "Providers", + "title": "Dostawcy", "Account Deactivated": "Konto dezaktywowane", "allProviders": "Wszystkie Providers", - "audioProviders": "Audio Providers", + "audioProviders": "Dostawcy audio", "showFreeOnly": "Tylko darmowe", "addProvider": "Dodaj Provider", "addFirstProvider": "Dodaj pierwszego Provider", @@ -5063,7 +5063,7 @@ "importFromFileDescription": "Prześlij plik CSV lub JSON zawierający listę wielu providers (każdy wiersz może reprezentować inny typ provider). Przejrzyj przetworzone wiersze poniżej i wybierz te, które mają zostać zaimportowane.", "importFromFileChoose": "Wybierz plik", "importFromFileSelectHint": "{count} z {total} wybranych", - "importFromFileColProvider": "Provider", + "importFromFileColProvider": "Dostawca", "importFromFileColName": "Nazwa", "importFromFileColBaseUrl": "Bazowy URL", "importFromFileErrorLine": "Wiersz {line}: {reason}", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Importowanie…", "importFromFileImport": "Importuj {count} providers", "importFromFileResult": "Zaimportowano {success} providers (niepowodzenie: {failed})", + "importFromFileDownloadTemplate": "Pobierz szablon CSV", + "importFromFileMoreErrors": "+{count} więcej", + "importFromFileSchemaHint": "Kolumny CSV są pozycyjne: provider, name, apiKey, baseUrl (opcjonalnie), priority (opcjonalnie). Kolumna provider musi zawierać identyfikator istniejącego zarządzanego dostawcy lub identyfikator już zarejestrowanego węzła zgodnego z OpenAI/Anthropic — ten import nie tworzy nowych węzłów punktów końcowych.", "adaptaTutorial": { "title": "Jak połączyć Adapta Web", "introPrefix": "Adapta uwierzytelnia się przez Clerk. Token", @@ -5115,7 +5118,7 @@ "testSuccess": "Połączenie pomyślne", "testFailed": "Połączenie nie powiodło się", "available": "Dostępny", - "cooldown": "Cooldown", + "cooldown": "Okres oczekiwania", "unavailable": "Niedostępny", "unknown": "Nieznany", "oauthLabel": "OAuth", @@ -5123,9 +5126,9 @@ "chat": "Czat", "responses": "Odpowiedzi", "messages": "Wiadomości", - "oauthProviders": "OAuth Providers", + "oauthProviders": "Dostawcy OAuth", "freeProviders": "Darmowe Providers", - "apiKeyProviders": "API Key Providers", + "apiKeyProviders": "Dostawcy kluczy API", "compatibleProviders": "Zgodni API Key Providers", "testAll": "Testuj wszystko", "reorderByAvailability": "Zmień kolejność", @@ -5167,18 +5170,18 @@ "noConnections": "Brak połączeń", "expiredBadge": "Wygasło", "expiringSoonBadge": "Wkrótce wygasa", - "freeTier": "Free Tier", + "freeTier": "Bezpłatny plan", "freeTierAvailable": "Dostępna darmowa warstwa", "hasFreeTooltip": "Dostępna darmowa warstwa", "noAuthLabel": "Bez uwierzytelniania", "noAuthProviders": "Providers bez uwierzytelniania", - "upstreamProxyLabel": "Upstream Proxy", + "upstreamProxyLabel": "Nadrzędny serwer proxy", "freeAggregated": "Wszyscy providers z darmową warstwą (widoczni również w swojej natywnej kategorii)", "deprecated": "Przestarzałe", "deprecatedProvider": "Ten provider jest przestarzały", "riskNotice": { "title": "Przed kontynuowaniem", - "detailsTitle": "Usage caveats", + "detailsTitle": "Uwagi dotyczące użycia", "tooltip": "Provider z zastrzeżeniami dotyczącymi użytkowania — kliknij, aby uzyskać szczegóły", "oauth": "Ten provider korzysta z oficjalnej sesji produktu/OAuth, która nie jest autoryzowana do użytku jako proxy/router. Nie zalecamy intensywnego korzystania z autonomicznych agentów (w stylu OpenCloud, długich wieloetapowych przepływów, dużych partii) — upstream może zareagować ograniczeniem lub zablokowaniem konta. Użycie na własne ryzyko.", "webCookie": "Ten provider uwierzytelnia się za pomocą plików cookie sesji internetowej. Usługa upstream może unieważnić sesję w dowolnym momencie, co będzie wymagać ponownego zalogowania. Opcja ta nie jest zalecana do długich operacji bez nadzoru. Użycie na własne ryzyko.", @@ -5188,9 +5191,9 @@ "cancel": "Anuluj" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "Oznaczono {count} połączeń — maksymalnie {maxFailures} ostatnich niepowodzeń{lastFailureSuffix}. Kliknij, aby wyświetlić stan połączeń.", + "lastFailureSuffix": "(ostatnie niepowodzenie: {time})", + "ariaLabel": "Wyświetl szczegóły stanu połączeń, liczba ostrzeżeń: {count}" }, "disabled": "Wyłączone", "enableProvider": "Włącz provider", @@ -5203,7 +5206,7 @@ "addNewProvider": "Dodaj nowy Provider", "backToProviders": "Powrót do Providers", "configureNewProvider": "Skonfiguruj nowy AI provider do użycia ze swoimi aplikacjami.", - "providerLabel": "Provider", + "providerLabel": "Dostawca", "selectProvider": "Wybierz provider", "selectedProvider": "Wybrany provider", "authMethod": "Metoda uwierzytelniania", @@ -5243,7 +5246,7 @@ "testedCount": "{count} przetestowanych", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", + "errorShort": "BŁĄD", "noActiveConnectionsInGroup": "Nie znaleziono aktywnych połączeń dla tej grupy.", "allTestsPassed": "Wszystkie testy ({total}) zakończyły się pomyślnie", "testSummary": "{passed}/{total} zaliczonych, {failed} nieudanych", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL ikony", "iconUrlHint": "Opcjonalnie. URL obrazu wyświetlany jako ikona tego provider.", "iconUrlInvalid": "Nieprawidłowy adres URL ikony. Użyj adresu http(s):// lub data:image/*;base64.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Strefa czasowa resetowania dziennego limitu", + "dailyQuotaResetTimezoneHint": "Opcjonalna strefa czasowa IANA używana, gdy usługa nadrzędna pomija X-RateLimit-Reset. Pozostaw puste, aby zachować krótki okres oczekiwania.", + "dailyQuotaResetHourLabel": "Godzina resetowania dziennego limitu", + "dailyQuotaResetHourHint": "Godzina lokalna 0–23 w powyższej strefie czasowej. Puste pole oznacza brak zegara na poziomie węzła.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5292,7 +5295,7 @@ "filterError": "Błąd", "filterBanned": "Zablokowane", "filterCreditsExhausted": "Środki wyczerpane", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Wyszukaj konta…", "noFilteredConnections": "Brak połączeń pasujących do bieżącego filtra.", "failedSetAlias": "Nie udało się ustawić aliasu", "setAliasSuccess": "Ustawiono alias {alias}", @@ -5305,9 +5308,9 @@ "openaiCompatibleDetails": "Szczegóły kompatybilności z OpenAI", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", + "embeddings": "Osadzenia", "audioTranscriptions": "Transkrypcje audio", - "audioSpeech": "Audio Speech", + "audioSpeech": "Synteza mowy", "imagesGenerations": "Generowanie obrazów", "chatCompletions": "Chat Completions", "importingModels": "Importowanie...", @@ -5316,7 +5319,7 @@ "allModelsAlreadyImported": "Wszystkie models zostały już zaimportowane", "noNewModelsToImport": "Brak nowych models do zaimportowania — wszystkie models znajdują się już w rejestrze lub na liście niestandardowych models", "skippingExistingModels": "Pomijanie {count} istniejących models", - "autoSync": "Auto-Sync", + "autoSync": "Automatyczna synchronizacja", "autoSyncShort": "Synchronizuj", "autoFetchModels": "Automatyczne pobieranie modeli upstream", "autoFetchModelsTooltip": "Pobierz i przechowuj modele upstream w razie potrzeby", @@ -5364,7 +5367,7 @@ "removeModel": "Usuń model", "rateLimitProtected": "Chronione", "rateLimitUnprotected": "Niechronione", - "providerQuotaShort": "Quota", + "providerQuotaShort": "Limit", "hideConnectionFromProviderQuota": "Ukryj to konto przed Provider Quota", "showConnectionInProviderQuota": "Pokaż to konto w Provider Quota", "quotaVisibilityUpdateFailed": "Nie udało się zaktualizować widoczności Provider Quota", @@ -5373,7 +5376,7 @@ "testAllProgress": "Przetestowano {done}/{total}", "testAllFailedHidden": "Ukryto {count} nieudanych models", "testAllDone": "Wszystkie models zostały przetestowane", - "productionKey": "Production Key", + "productionKey": "Klucz produkcyjny", "enterNewApiKey": "Wprowadź nowy API key", "codexApplyModalTitle": "Zastosuj do lokalnego Codex", "codexApplyTargetLabel": "Ścieżka docelowa", @@ -5382,7 +5385,7 @@ "codexApplyConfirmCheckbox": "Potwierdzam zastąpienie istniejącego pliku auth.json", "codexApply": "Zastosuj", "bulkTabSingle": "Pojedyncze", - "bulkTabBulkAdd": "Bulk Add", + "bulkTabBulkAdd": "Dodaj zbiorczo", "bulkAddFormatHint": "Jeden klucz w linii. Format: nazwa|apiKey lub samo apiKey (nazwane automatycznie wg indeksu).", "bulkValidateKeys": "Waliduj każdy klucz przed zapisaniem (wolniejsze)", "bulkAddAllKeys": "Dodaj wszystkie klucze", @@ -5418,7 +5421,7 @@ "providerProxyTitleConfigured": "Proxy dla provider: {host}", "configured": "skonfigurowano", "providerProxyConfigureHint": "Skonfiguruj proxy dla wszystkich połączeń tego provider", - "providerProxy": "Provider Proxy", + "providerProxy": "Proxy dostawcy", "repairEnv": "Napraw env", "repairEnvWorking": "Naprawianie...", "repairEnvHint": "Przywróć brakujące domyślne ustawienia OAuth do .env bez nadpisywania istniejących wartości.", @@ -5435,34 +5438,34 @@ "statusConnected": "połączone", "statusRuntimeIssue": "problem ze środowiskiem uruchomieniowym", "statusAuthFailed": "błąd autoryzacji", - "statusRateLimited": "rate limited", + "statusRateLimited": "ograniczono częstotliwość żądań", "statusNetworkIssue": "problem z siecią", "statusTestUnsupported": "test niewspierany", "statusUnavailable": "niedostępne", "statusFailed": "niepowodzenie", "statusError": "błąd", "oauthAccount": "Konto OAuth", - "errorTypeRuntime": "Local runtime", - "errorTypeUpstreamAuth": "Upstream auth", + "errorTypeRuntime": "Lokalne środowisko uruchomieniowe", + "errorTypeUpstreamAuth": "Uwierzytelnianie usługi nadrzędnej", "errorTypeMissingCredential": "Brakujące dane uwierzytelniające", "errorTypeRefreshFailed": "Odświeżenie nie powiodło się", "errorTypeTokenExpired": "Token wygasł", - "errorTypeRateLimited": "Rate limited", + "errorTypeRateLimited": "Ograniczono częstotliwość żądań", "errorTypeUpstreamUnavailable": "Upstream niedostępny", "errorTypeNetworkError": "Błąd sieci", "errorTypeTestUnsupported": "Test niewspierany", "errorTypeUpstreamError": "Błąd upstream", "errorTypeCreditsExhausted": "Brak środków", - "errorTypeBanned": "403 Banned", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", - "proxySourceKey": "Key", + "errorTypeBanned": "403 — zablokowano", + "proxySourceGlobal": "Globalne", + "proxySourceProvider": "Dostawca", + "proxySourceKey": "Klucz", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "Proxy włączone", "proxyOff": "Bezpośrednio (omiń proxy)", "proxyEnabledTitle": "Proxy jest włączone dla tego połączenia", "proxyDisabledTitle": "Połączenie bezpośrednie — omija każde proxy (w tym globalne proxy) dla tego połączenia", - "perKeyProxyOn": "Per-key", + "perKeyProxyOn": "Dla każdego klucza", "perKeyProxyOff": "Połączenie", "perKeyProxyEnabledTitle": "Przypisywanie proxy per-key włączone dla tego provider", "perKeyProxyDisabledTitle": "Przypisywanie proxy per-key wyłączone dla tego provider", @@ -5481,16 +5484,16 @@ "openRouterAnyModelHint": "OpenRouter wspiera dowolny model. Dodaj models i twórz aliasy dla szybkiego dostępu.", "modelIdFromOpenRouter": "ID model (z OpenRouter)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", - "customModels": "Custom Models", + "customModels": "Modele niestandardowe", "customModelsHint": "Dodaj identyfikatory ID model, których nie ma na liście domyślnej. Będą one dostępne do routingu.", "normalizeToolCallIdLabel": "Normalizuj identyfikatory tool call ID do 9 znaków (np. Mistral)", "preserveDeveloperRoleLabel": "Zachowaj OpenAI Responses developer role (nie mapuj na system)", "compatAdjustmentsTitle": "Kompatybilność", "compatButtonLabel": "Kompatybilność", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", + "compatToolIdShort": "Identyfikator narzędzia 9", + "compatDeveloperShort": "Rola dewelopera", "compatDoNotPreserveDeveloper": "Nie zachowuj developer role", - "compatBadgeNoPreserve": "No preserve", + "compatBadgeNoPreserve": "Nie zachowuj", "compatProtocolLabel": "Protokół żądania klienta", "compatProtocolHint": "Te opcje mają zastosowanie, gdy OmniRoute wykryje ten kształt żądania (OpenAI Chat, Responses API lub Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", @@ -5507,10 +5510,10 @@ "contextWindowOverrideInvalid": "Nadpisanie okna kontekstu musi być dodatnią liczbą całkowitą tokens", "visionCapableLabel": "Obsługa Vision", "visionCapableHint": "Ręcznie oznacz ten model jako obsługujący Vision, gdy metadane wykrywania provider nie zgłaszają modalności wejściowej obrazu (częste w przypadku self-hosted/lokalnych backendów).", - "compatParamFiltersLabel": "Param Filters", + "compatParamFiltersLabel": "Filtry parametrów", "compatBlockedParamsHint": "Zablokowane parametry (usuwane z żądań)", "compatAllowedParamsHint": "Dozwolone parametry (dodawane ponownie po usunięciu)", - "paramFiltersSectionTitle": "Param Filters", + "paramFiltersSectionTitle": "Filtry parametrów", "paramFiltersSectionHint": "Usuń lub dodaj ponownie parametry żądania przed wysłaniem do tego provider. Używane w celu uniknięcia błędów 400 od providers, którzy odrzucają niektóre parametry (np. NVIDIA NIM odrzuca thinking).", "paramFiltersBlockedLabel": "Zablokowane parametry", "paramFiltersBlockedHint": "Te parametry są usuwane z wychodzących żądań (lista blokowanych).", @@ -5534,18 +5537,18 @@ "interceptFetchHint": "Przepisywanie natywnych wywołań narzędzi web_fetch do /v1/web/fetch w OmniRoute.", "interceptionLoadError": "Nie udało się załadować ustawień przechwytywania: {error}", "interceptionSaveError": "Nie udało się zapisać ustawień przechwytywania: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", + "ccAliasSectionTitle": "Udostępnij w Claude Code (claude/…)", + "ccAliasSectionHint": "Udostępniaj modele tego dostawcy pod lustrzanymi identyfikatorami claude/<provider>/<model>, aby mechanizm wykrywania modeli bramy Claude Code mógł je wyświetlać. Domyślnie wyłączone — włączenie tej opcji podwaja liczbę wpisów w katalogu dla wszystkich klientów.", + "ccAliasProviderLevelLabel": "Domyślne ustawienie dostawcy", + "ccAliasModelOverridesLabel": "Nadpisania dla poszczególnych modeli", + "ccAliasModelOverrideAriaLabel": "Nadpisanie dla {modelId}", + "ccAliasStateInherit": "Dziedzicz", + "ccAliasStateOn": "Wł.", + "ccAliasStateOff": "Wył.", + "ccAliasAddModelPlaceholder": "Identyfikator modelu (np. gpt-4o)", + "ccAliasAddModelButton": "Dodaj nadpisanie", + "ccAliasLoadError": "Nie udało się wczytać ustawień aliasów wykrywania: {error}", + "ccAliasSaveError": "Nie udało się zapisać ustawienia aliasu wykrywania: {error}", "compatUpstreamHeadersLabel": "Dodatkowe nagłówki upstream", "compatUpstreamHeadersHint": "Ustawienie o wysokich uprawnieniach — ten sam poziom zaufania, co edycja danych uwierzytelniających API dla provider; powinno być używane wyłącznie przez zaufanych administratorów. Scalane po dodaniu autoryzacji przez OmniRoute na podstawie klucza API dla provider. Jeśli niestandardowy nagłówek ma taką samą nazwę jak istniejący (np. Authorization), wprowadzona wartość w pełni zastępuje automatycznie wygenerowany nagłówek (w tym Bearer token) — upstream zobaczy tylko wpisaną wartość, a nie klucz z ustawień. Błędna konfiguracja może spowodować błąd 401 lub uszkodzenie autoryzacji upstream. Jeden wiersz na nagłówek (np. dodatkowe Authentication dla niektórych bramek). Najedź myszą lub kliknij pole, aby wyświetlić podgląd. Zapisuje się po utracie fokusu (blur), kliknięciu poza obszarem lub zamknięciu tego panelu.", "compatUpstreamHeaderName": "Nazwa nagłówka", @@ -5590,7 +5593,7 @@ "editConnection": "Edytuj połączenie", "accountName": "Nazwa konta", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "Kontrola kondycji (min)", "healthCheckHint": "Interwał proaktywnego odświeżania token. 0 = wyłączone.", "deselectAllModels": "Odznacz wszystkie", "modelsActiveCount": "{active}/{total} aktywnych", @@ -5606,7 +5609,7 @@ "testModelIdLabel": "ID model (opcjonalnie)", "testModelIdPlaceholder": "np. my-model-id", "testModelIdHint": "Jeśli provider nie posiada endpoint /models, wprowadź ID model, aby dokonać weryfikacji przez /chat/completions.", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", + "compatibleProdPlaceholder": "Zgodny z {type} (Prod)", "tokenRefreshed": "Pomyślnie odświeżono token", "tokenRefreshFailed": "Odświeżenie token nie powiodło się", "cursorSessionUnchanged": "Sesja już jest aktualna", @@ -5690,8 +5693,8 @@ "codexAuthApplyFailed": "Nie udało się zastosować pliku Codex auth.json lokalnie", "codexAuthExported": "Plik Codex auth.json został wyeksportowany", "codexAuthExportFailed": "Nie udało się wyeksportować pliku Codex auth.json", - "codexCliGuideButton": "Codex CLI Guide", - "codexCliGuideTitle": "Codex CLI Guide", + "codexCliGuideButton": "Przewodnik po Codex CLI", + "codexCliGuideTitle": "Przewodnik po Codex CLI", "codexCliGuideLoading": "Ładowanie przewodnika...", "codexCliGuideLoadFailed": "Nie udało się załadować przewodnika.", "codexExternalLinkButton": "Zewnętrzny link Codex", @@ -5754,7 +5757,7 @@ "accountConcurrencyCapHint": "Maksymalna liczba współbieżnych żądań, jaką może obsłużyć to połączenie/konto. Konta subskrypcyjne zazwyczaj pozwalają tylko na kilka (1–3) — przekroczenie limitu powoduje błędy 429 i cooldowny. Pozostaw puste dla wartości domyślnej.", "accountConcurrencyCapLabel": "Limit współbieżności konta", "accountIdHint": "Wymagane przez niektórych providers (np. Cloudflare Workers AI) wraz z tokenem API.", - "accountIdLabel": "Account ID", + "accountIdLabel": "Identyfikator konta", "accountIdPlaceholder": "ID konta provider", "addAnotherApiKey": "Dodaj kolejny klucz API lub wklej wiele kluczy", "addCcCompatible": "Dodaj CC Compatible", @@ -5768,9 +5771,9 @@ "apiRegionInternational": "Międzynarodowy region API", "apiRegionLabel": "Region API", "apikey": "Klucz API", - "audio": "Audio", + "audio": "Dźwięk", "audioProvidersHeading": "Nagłówek Audio Providers", - "cloudAgentProviders": "Cloud Agent Providers", + "cloudAgentProviders": "Dostawcy agentów chmurowych", "audioShortLabel": "Audio", "azureOpenAiBaseUrlHint": "Wskazówka dotycząca bazowego URL Azure OpenAI", "bailianBaseUrlHint": "Wskazówka dotycząca bazowego URL Bailian", @@ -5798,10 +5801,10 @@ "ccCompatibleSummarizeThinkingDescription": "Dodaje `display: \"summarized\"` do żądań myślenia CC Compatible, aby obsługiwane models Claude przesyłały strumieniowo widoczne delty myślenia.", "ccCompatibleSummarizeThinkingLabel": "Włącz wyświetlanie podsumowanego myślenia", "ccCompatibleDetailsTitle": "Szczegóły CC-compatible relay", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "Zgodny z CC", "ccCompatibleModelsDescription": "CC-compatible relays nie udostępniają listy models. Dodaj model IDs Claude, które akceptuje ten relay.", "ccCompatibleNameHint": "Nazwa wyświetlana dla tego przekaźnika tylko dla Claude Code.", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "Przekaźnik CC — środowisko produkcyjne", "ccCompatiblePrefixHint": "Używane w aliasach models, takich jak prefix/model-id.", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Używaj tego provider tylko dla relays, które obsługują wyłącznie klientów Claude Code. OmniRoute przepisuje każde przychodzące żądanie na format zgodny z Claude Code, aby te relays mogły je zaakceptować. Jeśli chcesz używać tylko Claude Code CLI lub nie masz pewności, co oznacza ten typ przekaźnika, użyj zamiast tego zwykłego provider kompatybilnego z Anthropic.", @@ -5862,26 +5865,26 @@ "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "CLI", "codexFastTierActiveChip": "Klasa usług (tier) Codex Fast jest aktywna", - "tierFast": "Fast", - "antigravityProjectIdLabel": "Google Cloud Project ID", + "tierFast": "Szybkie", + "antigravityProjectIdLabel": "Identyfikator projektu Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", "grokWebCookiePlaceholder": "Wpisz ciasteczko sieciowe Grok", "herokuBaseUrlHint": "Wskazówka dotycząca bazowego URL Heroku", "hideEmail": "Ukryj adres e-mail", - "imageProviders": "Image Providers", + "imageProviders": "Dostawcy obrazów", "videoProviders": "Generowanie wideo", "embeddingRerankProviders": "Embeddings i Rerank", "imagesShortLabel": "Obrazy", "llmProviders": "LLM Providers", "localProviderApiKeyOptionalHint": "Wskazówka: klucz API dla lokalnego provider jest opcjonalny", "localProviderBaseUrlHint": "Wskazówka dotycząca bazowego URL lokalnego provider", - "localProviders": "Local Providers", + "localProviders": "Dostawcy lokalni", "maxConcurrentWholeNumberError": "Błąd: maksymalna współbieżność musi być liczbą całkowitą", "m365TierLabel": "Klasa usług (tier) Copilot", "m365TierHint": "Wybierz obszar (surface) Microsoft 365 Copilot, którego ma używać to połączenie. Individual to domyślny konsumencki BizChat; Education oraz Enterprise (work) wybierają obszary swoich dzierżaw (tenants).", "m365TierIndividualOption": "Individual (domyślny)", - "m365TierEduOption": "Education", - "m365TierEnterpriseOption": "Enterprise / Work", + "m365TierEduOption": "Edukacja", + "m365TierEnterpriseOption": "Firma / praca", "tierOverrideLabel": "Nadpisanie poziomu", "tierOverrideAuto": "Automatycznie (decyduje routing)", "tierOverrideFree": "Bezpłatny", @@ -5894,7 +5897,7 @@ "openCliTools": "Otwórz narzędzia CLI", "openSettings": "Otwórz ustawienia", "openaiResponsesStoreDescription": "Zezwalaj kompatybilnym żądaniom Responses API na zachowanie zapisanego stanu odpowiedzi.", - "openaiResponsesStoreLabel": "OpenAI Responses store", + "openaiResponsesStoreLabel": "Magazyn OpenAI Responses", "perplexitySearchSharedKeyInfo": "Informacje o udostępnionym kluczu wyszukiwania Perplexity Search", "perplexityWebCookieHint": "Wskazówka dotycząca ciasteczka sieciowego Perplexity", "perplexityWebCookiePlaceholder": "Wpisz ciasteczko sieciowe Perplexity", @@ -5904,8 +5907,8 @@ "rateLimitOverridesSection": "Nadpisania limitów szybkości (rate limit)", "rateLimitOverridesMaxConcurrentHint": "Nadpisanie maksymalnej współbieżności żądań dla tego połączenia. Nadpisuje limit na poziomie konta.", "rateLimitOverridesMaxConcurrentLabel": "Maks. współbieżność (rate limit)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Maksymalny czas (ms), przez jaki żądanie może oczekiwać na miejsce w limicie szybkości przed niepowodzeniem. Zastępuje globalne ustawienie odporności tylko dla tego połączenia.", + "rateLimitOverridesMaxWaitMsLabel": "Maks. czas oczekiwania w kolejce (ms)", "rateLimitOverridesMinTimeHint": "Minimalny czas (ms) między żądaniami. Nadpisuje domyślne opóźnienie rate limiter.", "rateLimitOverridesMinTimeLabel": "Min. odstęp (ms)", "rateLimitOverridesRpdHint": "Maksymalna liczba żądań dziennie dla tego połączenia. Nadpisuje wartość domyślną dostawcy.", @@ -5937,10 +5940,10 @@ "sessionCookieLabel": "Etykieta cookie sesji", "showEmail": "Pokaż e-mail", "snowflakeBaseUrlHint": "Wskazówka bazowego URL Snowflake", - "supportedEndpointAudio": "Audio", - "supportedEndpointChat": "Chat", - "supportedEndpointEmbeddings": "Embeddings", - "supportedEndpointImages": "Images", + "supportedEndpointAudio": "Dźwięk", + "supportedEndpointChat": "Czat", + "supportedEndpointEmbeddings": "Osadzenia", + "supportedEndpointImages": "Obrazy", "supportedEndpointsLabel": "Obsługiwane endpoints", "tagGroupHint": "Wskazówka grupy tagów", "tagGroupLabel": "Etykieta grupy tagów", @@ -5956,12 +5959,12 @@ "tokenShort": "Token", "totalKeysRotating": "{count, plural, one {1 rotujący klucz} other {# rotujących kluczy}}", "unhideModel": "Pokaż model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "upstreamProxyProviders": "Dostawcy nadrzędnych serwerów proxy", "validationModelIdHint": "Model używany do weryfikacji klucza API. Pozostaw puste, aby użyć pierwszego dostępnego model dla provider.", "validationModelIdLabel": "Model weryfikacyjny", "validationModelIdPlaceholder": "np. meta-llama/llama-3.1-8b-instruct", "vertexServiceAccountPlaceholder": "Wklej Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) lub OAuth access_token", - "webCookieProviders": "Web Cookie Providers", + "webCookieProviders": "Dostawcy korzystający z ciasteczek WWW", "weeklyShort": "Tygodniowo", "xiaomiMimoBaseUrlHint": "Wskazówka bazowego URL Xiaomi Mimo", "globalCodexServiceMode": "Globalny tryb usługi Codex", @@ -5978,7 +5981,7 @@ "zedImportHint": "Wskazówka importu Zed", "zedImportNetworkError": "Błąd sieci przy imporcie Zed", "zedImportNone": "Brak importu Zed", - "zedImportSuccess": "Imported {credentials} credential(s) from Zed for {providers} provider(s)", + "zedImportSuccess": "Zaimportowano dane uwierzytelniające ({credentials}) z Zed dla dostawców ({providers})", "zedImporting": "Importowanie Zed", "zedNoCredentials": "Nie znaleziono danych uwierzytelniających Zed w pęku kluczy", "zedUnsupportedCredentials": "Znaleziono {count} danych uwierzytelniających w pęku kluczy, ale żadne nie pasowały do obsługiwanych dostawców", @@ -6006,18 +6009,18 @@ "grokConnectionName": "Nazwa połączenia (opcjonalnie)", "grokSaving": "Zapisywanie…", "grokSaveConnection": "Zapisz połączenie", - "freeTierProviders": "Free Tier Providers", + "freeTierProviders": "Dostawcy z darmowym planem", "freeTierLabel": "Dostępny darmowy poziom", "freeTierProvidersDesc": "Providers z darmowymi poziomami — niektóre wymagają rejestracji klucza API, inne nie wymagają żadnych danych uwierzytelniających.", "providerSummaryAll": "Suma", - "ideProviders": "IDE Providers", + "ideProviders": "Dostawcy IDE", "ideProvidersDesc": "Edytory z wbudowaną subskrypcją AI. Użyj strony provider, aby zaimportować dane uwierzytelniające bezpośrednio z pęku kluczy IDE.", "noIdeProviders": "Żadne IDE providers nie pasują do aktualnych filtrów.", "providerDetailFastTierTooltip": "Domyślnie zastosuj poziom Codex Fast dla wszystkich połączeń Codex", "providerDetailFastDefaultLabel": "Domyślny Fast", "providerDetailBrowserManualConnect": "Połączenie przez przeglądarkę/ręczne", - "providerDetailAuthUrl": "Auth URL", - "providerDetailCallbackUrl": "Callback URL", + "providerDetailAuthUrl": "Adres URL uwierzytelniania", + "providerDetailCallbackUrl": "Adres URL wywołania zwrotnego", "providerDetailValidClaudeCredentialsFile": "Prawidłowy plik danych uwierzytelniających Claude", "providerDetailPathAutoDetectedAllOs": "Ścieżka jest wykrywana automatycznie dla każdego systemu operacyjnego (Linux/Mac/Windows).", "providerDetailMyClaudeAccountPlaceholder": "Moje konto Claude", @@ -6032,9 +6035,9 @@ "claudeImportEntryName": "wpis {number}", "claudeImportParseError": "błąd parsowania", "claudeImportNoValidEntries": "Brak prawidłowych wpisów do zaimportowania", - "webFetch": "Web Fetch", + "webFetch": "Pobieranie z sieci", "webFetchTooltip": "Providers wyodrębniające zawartość z sieciowych URL (HTML → Markdown, pobieranie zawartości, zrzut ekranu)", - "webFetchProvidersHeading": "Web Fetch Providers", + "webFetchProvidersHeading": "Dostawcy pobierania z sieci", "compatibleProvidersDesc": "Kompatybilne z OpenAI oraz Anthropic endpoints hostowane lub konfigurowane lokalnie. Skieruj dowolny SDK OpenAI na własny URL i kieruj tutaj zapytania.", "oauthProvidersDesc": "Providers uwierzytelniani przez OAuth — zaloguj się raz, a OmniRoute automatycznie zajmie się rotacją token.", "webCookieProvidersDesc": "Te providers używają sesji przeglądarki, plików cookie lub web tokens zamiast kluczy API. Otwórz provider, aby dodać wymagane dane uwierzytelniające sesji.", @@ -6055,7 +6058,7 @@ "onboardingWizardShort": "Kreator onboarding", "onboardingWizardDescription": "Połącz klucz API, własne kompatybilne oraz OAuth providers z walidacją, trwałością i natychmiastowym testem połączenia.", "onboardingStepType": "Typ", - "onboardingStepProvider": "Provider", + "onboardingStepProvider": "Dostawca", "onboardingStepCredentials": "Dane uwierzytelniające", "onboardingStepResult": "Wynik", "onboardingTypeApiKeyTitle": "Provider klucza API", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Zrabatowane proxy API dla ponad 40 modeli, w tym GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Pobierz swój klucz API na stronie https://freeaiapikey.com/dashboard. Bazowy adres URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Odbierz $300 darmowych środków API na stronie https://freemodel.dev — dane płatnicze nie są wymagane. Punkt końcowy zgodny z OpenAI. Dostępne modele GPT-5.4 i GPT-5.5.", "friendliai": "Bezpłatny pakiet do wnioskowania bezserwerowego — karta kredytowa nie jest wymagana", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Darmowy plan za pośrednictwem Google AI Studio; limity dla poszczególnych modeli nie są już publikowane (sprawdź stronę limitów w AI Studio) — karta kredytowa nie jest wymagana.", "gigachat": "Połącz z GigaChat (Sber) za pomocą klucza API.", "gitlab": "Osobisty token dostępu GitLab dla publicznego API Code Suggestions. Skonfiguruj bazowy adres URL dla instancji self-hosted, jeśli nie korzystasz z gitlab.com.", "gitlawb-gmi": "Pobierz swój klucz API z panelu Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Połącz z GLM Coding (China) za pomocą klucza API.", "glmt": "Wstępnie zdefiniowany profil GLM z większym budżetem tokenów, włączonym myśleniem i dłuższym limitem czasu.", "getgoapi": "Połącz z GoAPI za pomocą klucza API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Darmowy plan: limity dla poszczególnych modeli (200K tokenów dziennie na model czatu; limity RPM/RPD znajdziesz na console.groq.com/docs/rate-limits) — bez zapisanej metody płatności.", "haiper": "Pobierz klucz API na haiper.ai/haiper-api", "heroku": "Połącz z Heroku AI za pomocą klucza API.", "hcnsec": "Pobierz klucz API na api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Utwórz klucz API na https://app.requesty.ai, a następnie wklej go tutaj jako token Bearer. Punkt końcowy zgodny z OpenAI pod adresem https://router.requesty.ai/v1, z aktywnym katalogiem /v1/models.", "runwayml": "Generowanie wideo w Runway opiera się na zadaniach. OmniRoute przesyła zadania text-to-video lub image-to-video, odpytuje /v1/tasks/[id] i normalizuje gotowe wyniki wideo z powrotem do odpowiedzi w stylu OpenAI /v1/videos/generations.", "sambanova": "$5 darmowych kredytów przy rejestracji (ważność 30 dni), karta kredytowa nie jest wymagana", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Utwórz klucz API na https://seekai.cc, a następnie wklej go tutaj jako token Bearer. Bazowy adres URL zgodny z OpenAI: https://seekai.cc/v1.", "sap": "Wykrywanie modeli używa /v2/lm/scenarios/foundation-models/models na AI_API_URL. Żądania czatu używają deploymentUrl/chat/completions i wymagają AI-Resource-Group.", "sarvam": "Sarvam AI jest zgodny z OpenAI na /v1. OmniRoute bada /v1/models i kieruje ruch czatu do /v1/chat/completions. Modele są dostosowane do języków indyjskich.", "scaleway": "1M darmowych tokenów dla nowych kont — zgodność z UE/RODO (Paryż), Qwen3 235B i Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Połącz Claude Code za pomocą istniejącego przepływu OAuth.", "cline": "Połącz Cline za pomocą istniejącego przepływu OAuth.", "cursor": "Połącz Cursor IDE za pomocą istniejącego przepływu OAuth.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Połącz Cursor za pomocą klucza API użytkownika (crsr_...) z cursor.com/dashboard/api; sesja IDE nie jest wymagana.", "github": "Połącz GitHub Copilot za pomocą istniejącego przepływu OAuth.", "gitlab-duo": "Aplikacja OAuth z zakresami ai_features + read_user. Skonfiguruj GITLAB_DUO_OAUTH_CLIENT_ID i opcjonalnie GITLAB_DUO_OAUTH_CLIENT_SECRET w tej instancji OmniRoute.", "kilocode": "Połącz Kilo Code za pomocą istniejącego przepływu OAuth.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Skopiuj wymagane dane uwierzytelniające z własnej domeny provider. W przypadku cookies skopiuj tylko wartość nagłówka Cookie i pomiń Cookie:.", "webSessionGuideStep3Manual": "Ręczna ścieżka: otwórz narzędzia dewelopera przeglądarki (F12 → Sieć), odśwież stronę, otwórz uwierzytelnione żądanie i skopiuj wartość nagłówka Cookie z nagłówków żądania — pomiń prefiks Cookie:.", "webSessionGuideStep4": "Wklej tutaj i sprawdź połączenie. Jeśli przestanie działać, zaloguj się ponownie i zastąp nową wartością.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importuj plik .har", + "harImportButtonBusy": "Importowanie…", + "harImportButtonHint": "Wyeksportuj z karty Network w DevTools po wysłaniu co najmniej jednej wiadomości na czacie.", + "harImportStatusValid": "Zaimportowano — ważne przez około {minutes} min.", + "harImportStatusExpiringSoon": "Zaimportowano — ważne jeszcze tylko przez około {minutes} min.", + "harImportStatusExpired": "Zaimportowano, ale ten token wygasł już {minutes} min temu — wyeksportuj nowy plik HAR.", + "harImportStatusUnknownExpiry": "Zaimportowano. Nie udało się odczytać terminu ważności.", + "harImportErrorNotJson": "Ten plik nie jest prawidłowym plikiem JSON — czy na pewno jest to eksport .har?", + "harImportErrorNoEntries": "Ten plik HAR nie zawiera żadnych zarejestrowanych wpisów sieciowych.", + "harImportErrorNoChathubUrl": "W tym pliku HAR nie znaleziono połączenia czatu Copilot. Wyślij co najmniej jedną wiadomość na czacie w m365.cloud.microsoft przed wyeksportowaniem.", + "harImportErrorUnparsableUrl": "Znaleziono połączenie czatu, ale nie udało się odczytać jego adresu URL.", + "harImportErrorMissingFields": "Znaleziono połączenie czatu, ale brakowało w nim tokenu.", + "harImportErrorReadFailed": "Nie udało się odczytać tego pliku.", + "harImportErrorUnknown": "Nie udało się wyodrębnić danych uwierzytelniających z tego pliku HAR.", "webSessionSecurityHint": "Należy traktować to jak hasło: może zapewniać dostęp do zalogowanego konta webowego, dopóki nie wygaśnie lub nie zostanie unieważnione.", "webNoAuthGuideTitle": "Dane uwierzytelniające niewymagane", "webNoAuthGuideBody": "{provider} nie wymaga klucza API ani cookie. Zapisz połączenie, aby korzystać z jego darmowego web endpoint.", @@ -6404,7 +6407,7 @@ "batchDeleteNetworkError": "Błąd sieciowy podczas masowego usuwania", "batchUpdateFailed": "Aktualizacja wsadowa nie powiodła się", "batchUpdateNetworkError": "Błąd sieciowy podczas aktualizacji wsadowej", - "categoryAudio": "Audio", + "categoryAudio": "Dźwięk", "categoryCloudAgent": "Agent Chmurowy", "categoryIde": "IDE", "categoryLocal": "Lokalny", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Kod polecenia auth wygasł", "commandCodeConnected": "Kod polecenia połączony", "commandCodeConnectionAdded": "Dodano połączenie kodu polecenia", + "clearConnectionCooldown": "Wyczyść okres oczekiwania", + "clearConnectionCooldownInProgress": "Czyszczenie…", + "clearConnectionCooldownTitle": "Wyczyść okres oczekiwania teraz — użyj, gdy limit został już odświeżony u dostawcy nadrzędnego", "commandCodeLinkExpired": "Link do kodu polecenia wygasł", "commandCodeOpeningStudio": "Otwieranie Command Code Studio…", "commandCodePopupBlocked": "Popup zablokowany. Proszę zezwolić na wyskakujące okna i spróbować ponownie połączyć kod polecenia.", "commandCodeStartFailed": "Nie udało się uruchomić polecenia Code auth", "connectionDeleted": "Połączenie usunięte", "connectionFallback": "połączenie", + "connectionCooldownCleared": "Okres oczekiwania wyczyszczony — połączenie ponownie włączono do routingu", "coolingConnectionsDescription": "Te połączenia stygną po ostatnim żądaniu. OmniRoute pominie je, aż timer wygaśnie — ręczna dezaktywacja nie jest potrzebna.", "coolingConnectionsTitle": "Obecnie chłodzenie ({count})", + "failedClearConnectionCooldown": "Nie udało się wyczyścić okresu oczekiwania", "failedDeleteAlias": "Nie udało się usunąć aliasu", "failedDeleteConnection": "Nie udało się usunąć połączenia", "failedDistributeProxies": "Nie udało się rozdystrybuować proxy.", @@ -6446,7 +6454,7 @@ "failedUpdateCliproxyRouting": "Nie udało się zaktualizować routingu CLIProxyAPI", "failedUpdateCodexLimitPolicy": "Nie udało się zaktualizować polityki limitu Codex", "failedUpdateCodexServiceMode": "Nie udało się zaktualizować trybu usługi Codex", - "filterByMedia": "Media", + "filterByMedia": "Multimedia", "freeBadge": "Darmowy", "kimiCodeApiKeyLabel": "Klucz API Kimi Code", "modelTestFailed": "Test modelu nie powiódł się", @@ -6470,20 +6478,15 @@ "savedModelEndpointSettings": "Ustawienia punktu końcowego zapisanego modelu", "searchByModelAria": "Szukaj według modelu", "selectSupportedEndpoint": "Wybierz przynajmniej jeden obsługiwany punkt końcowy", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "Ustawienia", "general": "Ogólne", "security": "Bezpieczeństwo", "appearance": "Wygląd", - "routing": "Routing", - "cache": "Cache", + "routing": "Trasowanie", + "cache": "Pamięć podręczna", "resilience": "Niezawodność", "description": "Opis", "enable": "Włącz", @@ -6551,13 +6554,13 @@ "routingOpStatusSeparator": "·", "resilienceSettingsIntro": "Automatyczne ponawianie prób, czas schładzania (cooldown) i fallback, gdy providers ulegną awarii.", "aiSettingsIntro": "Ustawienia specyficzne dla AI dotyczące thinking budget, zachowania models i kompresji.", - "systemPrompt": "System Prompt", - "thinkingBudget": "Thinking Budget", + "systemPrompt": "Prompt systemowy", + "thinkingBudget": "Budżet rozumowania", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "Proxy HTTP", "1proxy": "1proxy", "proxySubTabsAria": "Sekcje proxy", - "requestBodyLimitTitle": "Request Body Limit", + "requestBodyLimitTitle": "Limit treści żądania", "requestBodyLimitDescription": "Maksymalny rozmiar payload API akceptowany przed sparsowaniem request body. Dedykowane upload routes zachowują co najmniej swój wbudowany limit 100 MB.", "requestBodyLimitInputLabel": "Limit Request Body w MB", "requestBodyLimitEmptyError": "Wprowadź limit w MB", @@ -6582,18 +6585,18 @@ "modelCatalogCacheTtlSaving": "Zapisywanie...", "modelCatalogCacheTtlSave": "Zapisz", "modelCatalogCacheTtlCurrent": "Aktualny: {value} ms", - "mitmProxy": "MITM Proxy", - "pricing": "Pricing", - "storage": "Storage", - "policies": "Policies", - "ipFilter": "IP Filter", + "mitmProxy": "Proxy MITM", + "pricing": "Cennik", + "storage": "Pamięć masowa", + "policies": "Zasady", + "ipFilter": "Filtr IP", "comboDefaults": "Ustawienia domyślne combo", "fallbackChains": "Łańcuchy fallback", "changePassword": "Zmień hasło", "enablePassword": "Włącz hasło", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", + "darkMode": "Tryb ciemny", + "lightMode": "Tryb jasny", + "memoryTitle": "Pamięć", "memoryDesc": "Trwała pamięć konwersacyjna między sesjami", "memoryEnabled": "Włącz Memory", "memoryEnabledDesc": "Po włączeniu OmniRoute wstrzyknie odpowiedni przeszły kontekst.", @@ -6606,7 +6609,7 @@ "semanticDesc": "Wyszukiwanie wektorowe", "hybrid": "Hybrydowe", "hybridDesc": "Ostatnie + Semantyczne", - "skillsTitle": "Skills", + "skillsTitle": "Umiejętności", "skillsDesc": "Narzędzia dla models", "skillsEnabled": "Włącz Skills", "skillsEnabledDesc": "Umożliwia agentom wywoływanie funkcji.", @@ -6625,7 +6628,7 @@ "justNow": "Przed chwilą", "modelsDevStats": "Statystyki synchronizacji", "modelsDevStatsDesc": "Aktualne pokrycie danych models.dev", - "providers": "Providers", + "providers": "Dostawcy", "modelsWithPricing": "Models z cennikiem", "capabilities": "Możliwości (capabilities)", "lastSyncCount": "Liczba przy ostatniej synchronizacji", @@ -6633,7 +6636,7 @@ "modelsDevInfo": "Jak to działa", "modelsDevInfoDesc": "models.dev to otwartoźródłowa baza danych specyfikacji AI models utrzymywana przez zespół SST/OpenCode. Zapewnia informacje o cennikach, możliwościach, limitach kontekstu i modalnościach dla ponad 4000 models u ponad 100 providers.", "modelsDevInfoResolution": "Kolejność rozstrzygania cenników (od najwyższego priorytetu):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsDevInfoOrder": "Nadpisanie użytkownika → models.dev → LiteLLM → domyślna wartość zakodowana na stałe", "systemTheme": "Motyw systemowy", "debugToggle": "Włącz tryb debugowania", "logToolSourcesToggle": "Rejestruj źródła narzędzi (Log Tool Sources)", @@ -6663,7 +6666,7 @@ "seconds": "sekundy", "sidebarVisibilityToggle": "Pokaż elementy paska bocznego", "enableCache": "Włącz cache", - "cacheTTL": "Cache TTL", + "cacheTTL": "TTL pamięci podręcznej", "maxCacheSize": "Maksymalny rozmiar cache", "clearCache": "Wyczyść cache", "cacheCleared": "Pomyślnie wyczyszczono cache", @@ -6683,28 +6686,28 @@ "loading": "Ładowanie…", "saving": "Zapisywanie...", "save": "Zapisz", - "circuitBreaker": "Circuit Breaker", + "circuitBreaker": "Wyłącznik obwodu", "retryPolicy": "Polityka ponownych prób", "maxRetries": "Maksymalna liczba ponownych prób", "retryDelay": "Opóźnienie ponownych prób", - "timeoutMs": "Timeout (ms)", + "timeoutMs": "Limit czasu (ms)", "enableSystemPrompt": "Włącz prompt systemowy", "systemPromptText": "Tekst promptu systemowego", "autoDisableBannedAccounts": "Automatyczne wyłączanie zablokowanych kont", "autoDisableDescription": "Trwałe oznaczanie połączeń provider jako dezaktywowane, jeśli zwrócą one określone końcowe sygnały blokady (np. HTTP 403 'verify your account'). Spowoduje to usunięcie ich z rotacji combo.", "autoDisableThreshold": "Próg blokady", "autoDisableThresholdDesc": "Liczba kolejnych sygnałów blokady wymagana do trwałej dezaktywacji.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedScope": "Zastosuj automatyczną dezaktywację do", + "autoDisableBannedScopeDesc": "Stanowiska logowania (płatne subskrypcje i bezpłatne konta) mogą zostać zablokowane przez dostawcę nadrzędnego, jeśli OmniRoute będzie ponawiać próby po nałożeniu blokady. Płatne klucze API typu prepaid nie są narażone na to ryzyko — pozostaw je w puli, aby strategia fill-first mogła użyć następnego klucza.", + "autoDisableBannedScopeAll": "Wszystkie połączenia", + "autoDisableBannedScopeAllDesc": "Dezaktywuj każde połączenie, które zwraca sygnał trwałej blokady, w tym klucze API typu prepaid.", + "autoDisableBannedScopeSubscription": "Tylko konta logowania / subskrypcyjne", + "autoDisableBannedScopeSubscriptionDesc": "Dezaktywuj stanowiska OAuth, oparte na plikach cookie, sesjach i logowaniu przez WWW (płatne lub bezpłatne). Klucze API typu prepaid pozostają aktywne, aby routing mógł przełączyć się awaryjnie.", "customBannedSignals": "Zablokowane słowa kluczowe", "customBannedSignalsDesc": "Dodatkowe słowa kluczowe wyzwalające wykrywanie trwałej blokady konta. Wbudowane słowa kluczowe mają zawsze zastosowanie.", "customBannedSignalsPlaceholder": "np. api key revoked", "noCustomBannedSignals": "Brak niestandardowych słów kluczowych. Aktywne są tylko wbudowane słowa kluczowe.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Struktura odporności", "resilienceStructureDesc": "Ta strona służy wyłącznie do konfiguracji zachowania. Bieżący stan circuit breaker jest wyświetlany na stronie Health. Konfiguracja retry specyficzna dla combo oraz sterowanie slotami round-robin pozostają w ustawieniach combo.", "enableThinking": "Włącz thinking", "maxThinkingTokens": "Maksymalna liczba thinking tokens", @@ -6750,23 +6753,23 @@ "showCloudflareTunnelDesc": "Pokaż kontrolki Cloudflare Quick Tunnel na stronie Endpoint.", "showTailscaleFunnel": "Tailscale Funnel", "showTailscaleFunnelDesc": "Pokaż kontrolki Tailscale Funnel na stronie Endpoint.", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "Tunel ngrok", "showNgrokTunnelDesc": "Pokaż kontrolki ngrok Tunnel na stronie Endpoint.", "sidebarVisibility": "Ukryj elementy paska bocznego", "sidebarVisibilityDesc": "Ukrywanie dowolnej pozycji nawigacji paska bocznego w celu zmniejszenia natłoku informacji wizualnych, bez wyłączania jakichkolwiek funkcji.", "sidebarVisibilityHint": "Dowolna sekcja paska bocznego jest ukrywana automatycznie, gdy wszystkie jej pozycje zostaną ukryte.", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Wszystko", + "presetAllDesc": "Pokaż wszystko", + "presetEssentials": "Podstawowe", + "presetEssentialsDesc": "Ścieżka dla początkujących — zaawansowane narzędzia nadal można wyszukiwać", + "presetMinimal": "Minimalny", + "presetMinimalDesc": "Tylko strony podstawowe", + "presetDeveloper": "Deweloperskie", + "presetDeveloperDesc": "Narzędzia deweloperskie i proxy", + "presetAdmin": "Administracyjne", + "presetAdminDesc": "Monitorowanie i audyt", + "settingsSidebarTitle": "Dostosowywanie paska bocznego", + "settingsSidebarDesc": "Wybierz elementy wyświetlane na pasku bocznym. W trybie Podstawowe zaawansowane narzędzia nadal można wyszukiwać.", "hideHealthLogs": "Ukryj logi Health Check", "hideHealthLogsDesc": "Gdy włączone, ukrywaj komunikaty [HealthCheck] w konsoli serwera.", "themeAccent": "Kolor motywu", @@ -6805,7 +6808,7 @@ "size": "Rozmiar", "hits": "Trafienia", "evictions": "Usunięcia", - "loadingCacheStats": "Loading cache stats…", + "loadingCacheStats": "Wczytywanie statystyk pamięci podręcznej…", "globalProxy": "Globalne proxy", "globalProxyDesc": "Konfiguracja globalnego proxy wychodzącego dla wszystkich wywołań API. Poszczególni providers, combos i klucze mogą to nadpisać.", "noGlobalProxy": "Brak skonfigurowanego globalnego proxy", @@ -6905,12 +6908,12 @@ "healthcheckTotal": "Razem", "healthcheckWorking": "Działające", "healthcheckFailedLabel": "Nieudane", - "healthcheckStatus": "Status", + "healthcheckStatus": "Stan", "healthcheckProxyUrl": "URL proxy", "healthcheckLatency": "Opóźnienie", "proxyDocumentationScopeTitle": "Rozstrzyganie zakresu proxy", "proxyDocumentationScopeDescBefore": "OmniRoute ustala proxy wychodzące w kolejności priorytetów:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "kombinacja → konto → dostawca → globalne", "proxyDocumentationScopeDescAfter": ". Wygrywa najbardziej szczegółowy zakres.", "proxyDocumentationAddTitle": "Dodawanie niestandardowego proxy", "proxyDocumentationAddDescBefore": "Przejdź do zakładki", @@ -6980,11 +6983,11 @@ "thinkingBudgetTitle": "Budżet na thinking", "thinkingBudgetDesc": "Kontrolowanie zużycia tokens reasoning AI we wszystkich żądaniach.", "thinkingBudgetIndependenceHint": "Funkcje kompresji, routingu i limitu tokenów działają w każdym trybie. Auto nie oznacza „automatycznego pokazywania myślenia” — usuwa pola rozumowania klienta.", - "passthrough": "Passthrough", + "passthrough": "Przekazywanie bez zmian", "passthroughDesc": "Brak zmian — klient kontroluje budżet na thinking.", "thinkingModePassthrough": "Przepuszczenie", "thinkingModePassthroughDesc": "Zachowaj uzasadnienie klienta bez zmian (wysiłek, podsumowanie, bloki myślenia). Wymagane dla widocznego myślenia Codex/Desktop. Domyślnie.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automatycznie (usuń)", "thinkingModeAutoDesc": "Usuń wszystkie pola myślenia/rozumowania klienta (rozumowanie, wysiłek rozumowania, myślenie Claude'a, konfiguracja myślenia Gemini) i pozwól dostawcy wymyślić domyślne wartości. Można ukryć panele myślenia i przerwać żądania podsumowania klienta.", "thinkingModeCustom": "Niestandardowy", "thinkingModeCustomDesc": "Nadpisz każde żądanie stałym budżetem tokenów myślowych, który ustawisz poniżej.", @@ -7001,7 +7004,7 @@ "effortMedium": "Średni (10K tokens)", "effortHigh": "Wysoki (128K tokens)", "tokenBudget": "Budżet tokens", - "tokens": "tokens", + "tokens": "tokeny", "baseEffortLevel": "Bazowy poziom wysiłku", "adaptiveHint": "Tryb adaptacyjny skaluje się od tego poziomu bazowego na podstawie liczby komunikatów, użycia narzędzi oraz długości promptu.", "requireLogin": "Wymagaj logowania", @@ -7053,33 +7056,33 @@ "routingAdvancedGuideTitle": "Zaawansowane wskazówki dotyczące routingu", "routingAdvancedGuideHint1": "Ta strategia jest synchronizowana zarówno z nowymi domyślnymi ustawieniami combo, jak i globalnym fallback routingiem kont.", "routingAdvancedGuideHint2": "Użyj Fill First dla przewidywalnego priorytetu kont, Round Robin oraz Sticky Limit dla pakietów kont, a także P2C dla odporności na opóźnienia.", - "fillFirst": "Fill First", + "fillFirst": "Wypełniaj pierwsze", "fillFirstDesc": "Używaj kont w kolejności priorytetu", "roundRobin": "Round Robin", "roundRobinDesc": "Cykliczne przechodzenie przez wszystkie konta", "p2c": "P2C", "p2cDesc": "Wybierz 2 losowe, użyj sprawniejszego", - "random": "Random", + "random": "Losowo", "randomDesc": "Losowe konto dla każdego żądania", - "leastUsed": "Least Used", + "leastUsed": "Najrzadziej używane", "leastUsedDesc": "Wybierz najdawniej używane konto", - "costOpt": "Cost Opt", + "costOpt": "Optymalizacja kosztów", "costOptDesc": "Preferuj najtańsze dostępne konto", - "resetAware": "Reset-Aware RR", + "resetAware": "Round Robin z uwzględnieniem resetu", "resetAwareDesc": "Preferuj konta ze zdrową pozostałą quota i bliskim czasem resetu", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Ważone limitem", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", + "strictRandom": "Ściśle losowo", "strictRandomDesc": "Tasowanie talii — używa każdego konta raz przed ponownym przetasowaniem", - "stickyLimit": "Sticky Limit", + "stickyLimit": "Limit przypisania", "stickyLimitDesc": "Liczba wywołań na konto przed przełączeniem, gdy globalny fallback kont używa Round Robin", "routingStrategyTitle": "Strategia routingu", "routingStrategySubtitle": "Zgodność z 9router: round-robin kont, sticky limits i rotacja combo", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Cyklicznie", "accountRoundRobinDesc": "Cykliczne przechodzenie przez konta w celu dystrybucji obciążenia", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Round Robin kombinacji", "comboRoundRobinDesc": "Cykliczne przechodzenie przez cele combo zamiast ciągłego rozpoczynania od pierwszego", - "comboStickyLimit": "Combo Sticky Limit", + "comboStickyLimit": "Limit przypisania kombinacji", "comboStickyLimitDesc": "Liczba wywołań na cel combo przed przełączeniem", "routingStrategyAccountSummary": "Dystrybucja żądań na konta z limitem {limit} wywołań na konto.", "routingStrategyFillFirstSummary": "Używanie kont w kolejności priorytetu (Fill First).", @@ -7089,14 +7092,14 @@ "providerAccountRoutingDesc": "Nadpisz globalną strategię kont dla tego provider (zgodność z 9router).", "providerRoutingStrategy": "Strategia kont", "providerRoutingInheritGlobal": "Dziedzicz globalne ustawienie domyślne", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Próg wstępnej kontroli limitu", + "quotaPreflightSubtitle": "Pomijaj konta, które wyczerpały limit, przed wysłaniem żądania do serwera nadrzędnego", + "quotaPreflightEnable": "Włącz wstępną kontrolę limitu", + "quotaPreflightEnableDesc": "Przed każdym żądaniem sprawdź pozostały limit konta (w okresach 5-godzinnym, tygodniowym i miesięcznym). Konta, których limit jest równy progowi lub niższy, są pomijane bez wywołania serwera nadrzędnego. Progi dla poszczególnych okresów ustawione na stronie Limit dostawcy zawsze mają pierwszeństwo przed wartością domyślną ustawioną tutaj.", + "quotaPreflightCutoff": "Próg globalny (min. pozostałego %)", + "quotaPreflightCutoffDesc": "Przestań używać konta, gdy jego pozostały limit spadnie do tego poziomu procentowego lub poniżej — dla każdego okresu bez własnego progu. Odpowiada paskom pozostałego procentu na stronie Limit dostawcy.", + "quotaPreflightWindowsHint": "Ta wartość domyślna nie wpływa na okresy z własnym progiem dla okresu lub dostawcy (ustawionym w oknie Próg na stronie Limit dostawcy).", + "quotaPreflightLoadFailed": "Nie można wczytać ustawień wstępnej kontroli limitu.", "modelAliases": "Aliasy model", "modelAliasesTitle": "Aliasy model", "modelAliasesDesc": "Remapuj nazwy model za pomocą dokładnych dopasowań lub wzorców wildcard.", @@ -7111,7 +7114,7 @@ "enableDegradationHint": "Po włączeniu, zadania w tle, takie jak generowanie tytułów i podsumowań, są automatycznie kierowane do tańszych models", "tasksDetected": "Wykryte zadania", "degradationMap": "Mapa degradacji model", - "premiumModel": "Premium model", + "premiumModel": "Model premium", "cheapModel": "Tani model", "detectionPatterns": "Wzorce wykrywania", "newPattern": "np. \"generate a title\"", @@ -7186,28 +7189,28 @@ "defaultStrategy": "Domyślna strategia", "defaultStrategyDesc": "Stosowana do nowych combos bez jawnej strategii i synchronizowana z globalnym fallback routingiem kont", "comboStrategyAria": "Strategia combo", - "priority": "Priority", - "weighted": "Weighted", - "contextRelay": "Context Relay", + "priority": "Priorytetowy", + "weighted": "Ważony", + "contextRelay": "Przekazywanie kontekstu", "contextRelayDesc": "Routing w stylu Priority z automatycznym przekazywaniem kontekstu (handoffs), gdy następuje rotacja kont", "maxRetriesLabel": "Maksymalna liczba retries", "retryDelayLabel": "Opóźnienie retry (ms)", - "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", + "timeoutLabel": "Limit czasu (ms)", + "healthCheck": "Kontrola stanu", "healthCheckDesc": "Wstępne sprawdzanie dostępności provider", "trackMetrics": "Śledzenie metryk", "trackMetricsDesc": "Rejestruj metryki żądań dla każdego combo", "providerOverrides": "Nadpisania dla Provider", "providerOverridesDesc": "Nadpisz timeout i retries dla każdego provider. Ustawienia dla Provider nadpisują globalne wartości domyślne.", - "providerMaxRetriesAria": "{provider} max retries", - "providerTimeoutAria": "{provider} timeout ms", + "providerMaxRetriesAria": "Maksymalna liczba ponowień dla {provider}", + "providerTimeoutAria": "Limit czasu dla {provider} w ms", "removeProviderOverrideAria": "Usuń nadpisanie dla {provider}", "selectProviderPlaceholder": "Wybierz provider...", "searchProviderPlaceholder": "Przeszukaj providers...", "searchProviderAria": "Przeszukaj providers", "newProviderNamePlaceholder": "np. google, openai...", "newProviderNameAria": "Nowa nazwa provider", - "retries": "retries", + "retries": "ponowienia", "ms": "ms", "saveComboDefaults": "Zapisz domyślne ustawienia Combo", "maxNestingDepth": "Maksymalna głębokość zagnieżdżenia", @@ -7220,25 +7223,25 @@ "contextRelayProviderNote": "Context Relay obecnie generuje handoffs dla kont Codex i używa tych wartości jako globalnych ustawień domyślnych dla nowych lub nieskonfigurowanych combos.", "providerProfiles": "Profile Provider", "providerProfilesDesc": "Oddzielne ustawienia odporności dla providers typu OAuth (opartych na sesji) oraz API Key (mierzonych). Providers typu OAuth mają bardziej rygorystyczne progi z powodu niższych rate limits.", - "oauthProviders": "OAuth Providers", - "apiKeyProviders": "API Key Providers", - "transientCooldown": "Transient Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", + "oauthProviders": "Dostawcy OAuth", + "apiKeyProviders": "Dostawcy kluczy API", + "transientCooldown": "Czas oczekiwania po błędzie przejściowym", + "rateLimitCooldown": "Czas oczekiwania po przekroczeniu limitu żądań", "maxBackoffLevel": "Maksymalny poziom Backoff", "cbThreshold": "Próg CB", "cbResetTime": "Czas resetu CB", - "rateLimiting": "Rate Limiting", - "rateLimitingDesc": "API Key providers are automatically rate-limited with safe defaults. Limits are learned from response headers and adapt over time.", + "rateLimiting": "Ograniczanie liczby żądań", + "rateLimitingDesc": "Dostawcy kluczy API są automatycznie objęci bezpiecznymi domyślnymi limitami liczby żądań. Limity są ustalane na podstawie nagłówków odpowiedzi i dostosowywane z czasem.", "defaultSafetyNet": "Domyślny Safety Net", "rpm": "RPM", - "minGap": "Min Gap", + "minGap": "Minimalny odstęp", "maxConcurrent": "Maksymalna współbieżność", "activeLimiters": "Aktywne Limiters", "noActiveLimiters": "Brak aktywnych rate limiters.", - "reservoir": "Reservoir", + "reservoir": "Pula", "running": "Uruchomione", "queued": "W kolejce", - "circuitBreakers": "Circuit Breakers", + "circuitBreakers": "Bezpieczniki", "breakerStateClosed": "Zamknięty", "breakerStateOpen": "Otwarty", "breakerStateHalfOpen": "Półotwarty", @@ -7329,7 +7332,7 @@ "configured": "skonfigurowano", "none": "Brak", "modelOverrideValuePlaceholder": "Wartość liczbowa", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Wartości w języku angielskim oddzielone przecinkami, np. low, medium, high", "addKeyValue": "Dodaj wartość klucza", "noModelOverrides": "Brak skonfigurowanych nadpisań dla tego model.", "modelOverrideLoadFailed": "Nie udało się załadować nadpisań model", @@ -7343,12 +7346,12 @@ "showAll": "Pokaż wszystko", "noProvidersMatch": "Brak providers pasujących do wyszukiwania.", "howPricingWorks": "Jak działa wycena", - "cacheWrite": "Cache Write", + "cacheWrite": "Zapis w pamięci podręcznej", "unsaved": "niezapisane", "resetDefaults": "Przywróć domyślne", "saveProvider": "Zapisz Provider", "model": "model", - "models": "models", + "models": "modele", "moreProviders": "{count} kolejnych providers", "withPricing": "ze skonfigurowaną wyceną", "policiesCircuitBreakers": "Zasady i circuit breakery", @@ -7380,7 +7383,7 @@ "themeCoral": "Koralowy", "adaptiveVolumeRouting": "Adaptacyjny routing wolumenowy", "adaptiveVolumeRoutingDesc": "Skaluj połączenia dynamicznie w oparciu o wolumen ładunku (payload) i ciśnienie przepustowości.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", + "lkgpToggleTitle": "Ostatni znany działający dostawca (LKGP)", "lkgpToggleDesc": "Po włączeniu router zapamiętuje, który provider ostatnio pomyślnie obsłużył odpowiedź i próbuje go w pierwszej kolejności przy kolejnych żądaniach.", "echoRequestedModelTitle": "Echo nazwy żądanego model w odpowiedziach", "echoRequestedModelDesc": "Po włączeniu pole `model` w odpowiedzi odzwierciedla nazwę aliasu lub combo, o którą prosił klient, zamiast nazwy model upstream. Rozwiązuje to problem z rygorystycznymi klientami (np. Claude Desktop), którzy odrzucają odpowiedź, której model nie pasuje do żądania.", @@ -7413,10 +7416,10 @@ "resetUsageFailed": "Nie udało się zresetować danych użycia", "reset": "Resetuj", "resetting": "Resetowanie...", - "contextOpt": "Context Optimized", + "contextOpt": "Zoptymalizowane pod kątem kontekstu", "contextOptDesc": "Wykonuje routing na podstawie wymagań okna kontekstu i długości konwersacji", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", + "cacheOpt": "Zoptymalizowane pod kątem pamięci podręcznej", + "cacheOptDesc": "Utrzymuje ten sam prefiks monitu wielokrotnego użytku na tym samym koncie dostawcy", "priorityDesc": "Sekwencyjny fallback — próbuje najpierw provider 1, potem provider 2 i tak dalej", "weightedDesc": "Dystrybuuje ruch według wag procentowych między providers", "modelRoutingTitle": "Reguły Model Routing", @@ -7444,7 +7447,7 @@ "pricingSourceUser": "Nadpisanie użytkownika", "pageDescription": "Zarządzaj ustawieniami aplikacji, aliasami model, wyceną i regułami routingu", "pricingSyncStatus": "Status synchronizacji", - "whitelist": "Whitelist", + "whitelist": "Biała lista", "syncDisabled": "Synchronizacja wyłączona", "pricingLoadFailed": "Nie udało się załadować danych wyceny", "pricingSyncDescription": "Automatycznie synchronizuj wycenę model z zewnętrznych źródeł, aby zachować dokładność obliczeń kosztów", @@ -7454,7 +7457,7 @@ "pricingSyncSuccess": "Pomyślnie zsynchronizowano wycenę", "enableSyncError": "Nie udało się przełączyć synchronizacji wyceny", "syncEnabled": "Synchronizacja włączona", - "blacklist": "Blacklist", + "blacklist": "Czarna lista", "pricingSourceModelsDev": "Models.dev", "syncedModels": "Zsynchronizowane models", "budget": "Budżet", @@ -7475,7 +7478,7 @@ "compressionGuidanceHide": "Ukryj szczegóły", "compressionGuidanceSafeDefault": "Bezpieczna domyślna", "compressionGuidanceCacheImpact": "Wpływ na cache", - "tokenSaverTitle": "Token Saver", + "tokenSaverTitle": "Oszczędzanie tokenów", "tokenSaverSubtitle": "Zużywaj mniej tokens przy każdym zapytaniu.", "tokenSaverToolOutput": "Wyjście narzędzi", "tokenSaverToolOutputDesc": "Czyszczenie danych wyjściowych git, grep, ls, tree i log, zanim trafią do provider.", @@ -7488,9 +7491,9 @@ "compressionMode": "Tryb kompresji", "compressionModeOff": "Wyłączone", "compressionModeOffDesc": "Brak zastosowanej kompresji", - "compressionModeLite": "Lite", + "compressionModeLite": "Lekki", "compressionModeLiteDesc": "Redukcja spacji i pustych linii", - "compressionModeStandard": "Standard (Caveman)", + "compressionModeStandard": "Standardowy (jaskiniowy)", "compressionModeStandardDesc": "Kompresja oparta na regułach z ponad 30 wzorcami, zachowuje bloki kodu i URL", "compressionModeAggressive": "Agresywny", "compressionModeAggressiveDesc": "Podsumowanie + kompresja wyników narzędzi + progresywne starzenie dla maksymalnych oszczędności", @@ -7536,8 +7539,8 @@ "compressionCavemanConfigDesc": "Dostrajanie silnika kompresji opartego na regułach", "compressionCavemanPanelHint": "Włączenie/wyłączenie oraz poziom ustawia się w panelu:", "compressionRoles": "Kompresuj role wiadomości", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", + "compressionRoleUser": "Użytkownik", + "compressionRoleAssistant": "Asystent", "compressionRoleSystem": "System", "compressionMinLength": "Minimalna długość wiadomości", "compressionSkipRules": "Pomiń reguły kompresji", @@ -7549,9 +7552,9 @@ "minutes": "minut", "compressionModeRtk": "RTK", "compressionModeRtkDesc": "Filtrowanie danych wyjściowych narzędzi z uwzględnieniem poleceń", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", + "compressionModeCodexResponses": "Dane wyjściowe narzędzia Responses", + "compressionModeCodexResponsesDesc": "Zachowawcza kompresja odpowiednich danych wyjściowych powłoki, poprawek, wyszukiwania, kompilacji i JSON", + "compressionModeStacked": "Ułożone warstwowo", "compressionModeStackedDesc": "Filtrowanie danych wyjściowych narzędzi RTK, a następnie kompresja wiadomości Caveman", "qdrantTitle": "Qdrant (Pamięć wektorowa)", "qdrantDesc": "Opcjonalnie. Indeksuje pamięć semantyczną w zewnętrznej wektorowej bazie danych w celu szybszego wyszukiwania.", @@ -7605,8 +7608,8 @@ "resilienceRequestsPerMinute": "Żądania na minutę", "resilienceMinTimeBetweenRequests": "Minimalny czas między żądaniami", "resilienceConcurrentRequests": "Współbieżne żądania", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceConnectionScopeConcurrentRequests": "Równoczesne żądania na połączenie/zakres limitu", + "resilienceGlobalConcurrentRequests": "Globalna liczba równoczesnych żądań do usług nadrzędnych (0 = wyłączone)", "resilienceMaxQueueWaitTime": "Maksymalny czas oczekiwania w kolejce", "resilienceBaseCooldown": "Bazowy cooldown", "resilienceUseUpstreamRetryHints": "Używaj wskazówek ponawiania z upstream", @@ -7622,10 +7625,10 @@ "routingReplaceAllOccurrences": "Zastąp wszystkie wystąpienia", "routingPatternRegex": "Wzorzec (regex)", "routingFlags": "Flagi", - "routingNeedles": "Needles", + "routingNeedles": "Igły", "routingBlockText": "Zablokuj tekst", "routingIdempotencyKey": "Klucz idempotencji", - "routingEntrypoint": "Entrypoint", + "routingEntrypoint": "Punkt wejścia", "routingVersionFormat": "Format wersji", "routingCchAlgorithm": "Algorytm CCH", "routingWordsToObfuscate": "Słowa do zaciemnienia (ZWJ wstawiane po pierwszym znaku)", @@ -7686,7 +7689,7 @@ "routingZeroConfigTitle": "Auto-routing zero-config", "routingZeroConfigDesc": "Włącz automatyczny wybór provider za pomocą prefiksu auto/. Po włączeniu żądania do auto, auto/coding, auto/fast itp. będą dynamicznie kierowane do wszystkich połączonych providers.", "routingDefaultAutoVariant": "Domyślny wariant auto", - "visionBridge": "Vision Bridge", + "visionBridge": "Most wizyjny", "visionBridgeDesc": "Uruchom automatyczny fallback vision-to-text przed przekierowaniem żądań obrazów do wyłącznie tekstowych models.", "visionBridgeEnabledLabel": "Włączone", "visionBridgeEnabledDesc": "Przełącz mostek przed połączeniem, który zastępuje części obrazu wyodrębnionym tekstem.", @@ -7695,7 +7698,7 @@ "visionBridgeModel": "Bridge model", "visionBridgeModelPlaceholder": "openai/gpt-4o-mini", "visionBridgeModelHint": "Można tu użyć dowolnego ID model OmniRoute obsługującego vision.", - "visionBridgePrompt": "Bridge Prompt", + "visionBridgePrompt": "Prompt mostu", "visionBridgePromptPlaceholder": "Opisz krótko ten obraz.", "visionBridgePromptHint": "Wysyłane do vision model przed ponownym wstrzyknięciem wyodrębnionego opisu do oryginalnego żądania.", "visionBridgeTimeoutMs": "Limit czasu (ms)", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "Pomyślnie zaimportowano starszy format JSON!", "jsonImportFailed": "Nie udało się zaimportować JSON", "jsonImportError": "Błąd podczas importu JSON", + "jsonImportAuthRequired": "Do zaimportowania starszej konfiguracji JSON wymagane jest uwierzytelnienie. Zaloguj się lub najpierw dokończ konfigurację.", + "databaseSettingsAuthRequiredTitle": "Wymagane uwierzytelnienie", + "databaseSettingsAuthRequiredBody": "Ustawienia bazy danych i import JSON są dostępne wyłącznie dla uwierzytelnionego administratora. Zaloguj się lub dokończ konfigurację, aby je wyświetlić i edytować.", + "databaseSettingsAuthRequiredCta": "Zaloguj się", "storagePurgeData": "Wyczyść dane", "storagePurgeDataDesc": "Natychmiast usuń wszystkie rekordy bez stosowania kontroli retencji. Używaj ostrożnie.", "storageRetentionCleanup": "Ustawienia retencji", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "tryb: {mode}", "compressionAdaptiveOff": "Adaptacyjny budżet kontekstu: wył. (starszy automatyczny wyzwalacz)", "compressionAdaptiveTarget": "Adaptacyjny ({mode}, polityka: {policy}) — cel ≈ {target, number} tokenów (dla okna o rozmiarze {contextLimit, number} tokenów)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Adaptacyjny budżet kontekstu", + "compressionAdaptiveModeOff": "Wyłączone (starsze automatyczne wyzwalanie)", + "compressionAdaptiveModeFloor": "Dolny próg (zawsze gwarantuj dopasowanie)", + "compressionAdaptiveModeReplace": "Zastąp automatyczne wyzwalanie", + "compressionAdaptivePolicy": "Polityka budżetu", + "compressionAdaptivePolicyReserve": "Rezerwa na dane wyjściowe", + "compressionAdaptivePolicyPercentage": "Procent okna", + "compressionAdaptivePolicyAbsolute": "Bezwzględny budżet tokenów", "compressionOutputStylesDescription": "Wstrzykuj instrukcje kształtujące odpowiedź bez przepisywania danych wyjściowych dostawcy. Łącz dowolnie.", "mcpAccessibilityDescription": "Ogranicza zakres danych wyjściowych narzędzi MCP (osobny magazyn).", "compressionStylesTileSummary": "{tokens, number} tokenów zaoszczędzonych · {runs, plural, one {# przebieg ostylowany} few {# przebiegi ostylowane} many {# przebiegów ostylowanych} other {# przebiegów ostylowanych}}", @@ -7866,8 +7873,8 @@ "description": "Filtrowanie danych wyjściowych poleceń." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Dane wyjściowe narzędzia Responses", + "description": "Konserwatywna kompresja obsługiwanych danych wyjściowych narzędzia Responses." }, "headroom": { "label": "Margines", @@ -7908,12 +7915,12 @@ "description": "Drabina YAGNI: najmniejsza działająca zmiana, brak nieproszonych abstrakcji." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Kucyk (leniwy starszy programista)", + "description": "Dyscyplina leniwego starszego programisty: wspinaj się po drabinie YAGNI, usuwaj przyczynę źródłową, wprowadzaj najmniejszą działającą zmianę." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Mam ADHD (najpierw działanie)", + "description": "Odpowiedź nastawiona na działanie: zacznij od następnej czynności, ponumeruj kroki, wskaż jeden konkretny następny krok, bez wstępu." }, "terse-cjk": { "label": "Zwięzłe CJK (文言)", @@ -7928,23 +7935,31 @@ "memorySkillsFailedToSave": "Nie udało się zapisać", "memorySkillsApiKey": "Klucz API", "memorySkillsActiveSkillsProvider": "Aktywny Skills Provider", - "cliproxyapiFallback": "CLIProxyAPI Fallback", + "cliproxyapiFallback": "Tryb rezerwowy CLIProxyAPI", "cliproxyapiEnableFallback": "Włącz CLIProxyAPI Fallback", - "cliproxyapiUrl": "CLIProxyAPI URL", - "cliproxyapiStatus": "CLIProxyAPI Status", + "cliproxyapiUrl": "Adres URL CLIProxyAPI", + "headroomProxyTitle": "Serwer proxy Headroom", + "headroomProxyDesc": "Adres URL opcjonalnego serwera proxy Headroom oszczędzającego tokeny. Pusta wartość używa HEADROOM_URL lub http://localhost:8787.", + "headroomProxyUrl": "Adres URL Headroom", + "headroomProxyUrlHint": "Adresy URL interfejsu loopback można uruchamiać z tej strony. Zewnętrzne adresy URL są tylko sprawdzane.", + "headroomProxySave": "Zapisz", + "headroomProxyStart": "Uruchom", + "headroomProxyStop": "Zatrzymaj", + "headroomProxyExternalHint": "Ten adres URL nie jest adresem pętli zwrotnej, więc OmniRoute nie uruchomi lokalnego interfejsu CLI.", + "cliproxyapiStatus": "Stan CLIProxyAPI", "cliproxyapiNotDetected": "Nie wykryto", "cliproxyapiImportAuthTitle": "Importuj konta z CLIProxyAPI", "cliproxyapiImportAuthDesc": "Importuj konta OAuth, które CLIProxyAPI zapisał już w ~/.cli-proxy-api/ jako połączenia OmniRoute, aby nie trzeba było ponownie logować się na każde konto. Obsługiwane typy kont (Gemini, Codex, Claude, Antigravity, Qwen, Kimi) zostaną zaimportowane; inne zostaną pominięte.", "cliproxyapiImportAuthButton": "Importuj konta", "payloadRulesTitle": "Reguły Payload", "payloadRulesDesc": "Skonfiguruj mutacje payload żądania według model i protokołu. Zmiany są zapisywane w ustawieniach i natychmiast po zapisie przeładowywane na gorąco (hot reload) do runtime.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "domyślne", "payloadRuleDefaultDesc": "Stosuje parametry tylko wtedy, gdy w wychodzącym payload brakuje ścieżki docelowej.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "nadpisanie", "payloadRuleOverrideDesc": "Wymusza wartości w payload, zastępując wszystko, co już znajduje się pod tą ścieżką.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "filtr", "payloadRuleFilterDesc": "Usuwa zablokowane parametry z payload przed wysłaniem żądania upstream.", - "payloadRuleDefaultRawTitle": "defaultRaw", + "payloadRuleDefaultRawTitle": "domyślneRaw", "payloadRuleDefaultRawDesc": "Podobnie jak default, ale wartości tekstowe są najpierw parsowane jako JSON, jeśli to możliwe. Starszy alias wejściowy default-raw jest również akceptowany przy zapisie.", "payloadEditorTitle": "Edytor", "payloadEditorDesc": "Użyj kształtu schematu runtime: default, override, filter, defaultRaw. API akceptuje również starszy klucz wejściowy default-raw.", @@ -7980,28 +7995,28 @@ "responsesStateTitle": "Stan Responses", "responsesStateDesc": "Kontroluj, jak OmniRoute przekazuje previous_response_id.", "responsesStateModeLabel": "Obsługa previous_response_id", - "responsesStateModeAuto": "Auto", + "responsesStateModeAuto": "Automatycznie", "responsesStateModeStrip": "Usuń", "responsesStateModePreserve": "Zachowaj", "responsesStateHint": "Auto usuwa previous_response_id, chyba że połączenie jawnie włącza przechowywanie OpenAI Responses. Strip jest najbezpieczniejszy dla bezstanowych klientów, takich jak VS Code Custom Endpoint; kontekst zależy wtedy od klienta wysyłającego pełną historię.", "responsesStateSaveError": "Nie udało się zaktualizować ustawienia stanu Responses", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Szybka warstwa Codex", "codexFastTierDesc": "Globalnie wstrzykuje service_tier=priority dla żądań OpenAI Codex.", "codexFastTierHint": "Po włączeniu OmniRoute dodaje service_tier=priority do wychodzących żądań Codex dla połączeń, które nie określają jeszcze tier. Priority tier wymaga klucza API OpenAI Enterprise lub ścieżki Codex ChatGPT-auth; inne typy kluczy otrzymają błąd związany z tier od OpenAI. Ustawienia dla poszczególnych połączeń na stronie provider Codex mają pierwszeństwo.", "codexFastTierSaveError": "Nie udało się zaktualizować ustawienia Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", + "codexAutoPingTitle": "Automatyczne odpytywanie limitu Codex", "codexAutoPingDesc": "Opcjonalnie (opt-in) na połączenie: wysyła małe żądanie tuż po zresetowaniu okna sesji Codex, dzięki czemu nie jest ono zimne, gdy jest potrzebne.", "codexAutoPingWarning": "Zużywa niewielką część rzeczywistej Codex quota przy każdym pingowaniu. Domyślnie wyłączone — włączaj tylko dla połączeń, na których aktywnie polegasz.", "codexAutoPingSaveError": "Nie udało się zaktualizować ustawienia Codex Auto-Ping", "codexAutoPingToggleAria": "Przełącz auto-ping Codex quota dla {connection}", - "codexFastTierTierLabel": "Service tier", - "codexFastTierTierPriority": "Priority", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierLabel": "Warstwa usługi", + "codexFastTierTierPriority": "Priorytetowa", + "codexFastTierTierFlex": "Elastyczna", "codexFastTierTierDefault": "Domyślny", "codexFastTierModelsLabel": "Models Fast-tier", "codexFastTierModelsHint": "Tylko zaznaczone models otrzymują service_tier, gdy Fast Tier jest włączony.", "codexFastTierModelCheckbox": "Włącz Fast Tier dla {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Tryb szybki Claude", "claudeFastModeDesc": "Włącz wybrane żądania Claude do Anthropic Fast Mode (speed:\"fast\").", "claudeFastModeHint": "Anthropic nie obsługuje oficjalnie Fast Mode dla klientów typu SDK. Po włączeniu OmniRoute przekazuje nagłówek X-CPA-Force-Fast-Mode, dzięki czemu sparowana wersja CLIProxyAPI może sfałszować entrypoint poprzez opt-in. Tylko wymienione models Opus są ograniczane przez kontrolę Anthropic po stronie klienta. Poziom subskrypcji, plan Max oraz saldo kredytów Fast Mode są nadal sprawdzane po stronie serwera — Anthropic może zwrócić out_of_credits, nawet gdy przełącznik jest włączony.", "claudeFastModeModelsLabel": "Zastosowano do models ({count})", @@ -8022,7 +8037,7 @@ "LOCAL_ONLY": "Tylko lokalnie", "ALWAYS_PROTECTED": "Zawsze chronione", "MANAGEMENT": "Zarządzanie", - "CLIENT_API": "Client API", + "CLIENT_API": "API klienta", "PUBLIC": "Publiczne" }, "bypass": { @@ -8145,8 +8160,8 @@ "vercelRelayButton": "Wdróż Vercel Relay", "vercelRelayModalTitle": "Wdróż Vercel Relay", "vercelRelayWarning": "Ostrzeżenie: Wymagany jest token wdrożeniowy Vercel. Token ten zostanie użyty wyłącznie do utworzenia bezserwerowego przekaźnika (relay) i nigdy nie będzie przechowywany przez OmniRoute.", - "vercelRelayTokenLabel": "Vercel Access Token", - "vercelRelayProjectNameLabel": "Vercel Project Name", + "vercelRelayTokenLabel": "Token dostępu Vercel", + "vercelRelayProjectNameLabel": "Nazwa projektu Vercel", "vercelRelayFreeTierNote": "Przekaźniki (relays) to lekkie endpoints proxy wdrażane w darmowej usłudze Vercel w celu obejścia lokalnych ograniczeń sieciowych/regionalnych.", "vercelRelayDeploying": "Wdrażanie...", "vercelRelayDeploy": "Wdróż", @@ -8154,7 +8169,7 @@ "denoRelayButton": "Wdróż Deno Relay", "denoRelayModalTitle": "Wdróż Deno Relay", "denoRelayWarning": "Ostrzeżenie: Wymagany jest token organizacji Deno Deploy. Token ten zostanie użyty wyłącznie do utworzenia aplikacji przekaźnikowej i nigdy nie będzie przechowywany przez OmniRoute.", - "denoRelayTokenLabel": "Deno Deploy Organization Token", + "denoRelayTokenLabel": "Token organizacji Deno Deploy", "denoRelayOrgDomainLabel": "Domena organizacji", "denoRelayProjectNameLabel": "Nazwa aplikacji Deno", "denoRelayFreeTierNote": "Deno Deploy v2 działa w globalnej sieci edge. Darmowa usługa: 1 mln żądań i 100 GiB transferu wychodzącego miesięcznie, brak limitów procesora na żądanie, do 20 aktywnych aplikacji i 50 własnych domen.", @@ -8165,9 +8180,9 @@ "cloudflareRelayModalTitle": "Wdróż Cloudflare Worker Relay", "cloudflareRelayWarning": "Wdraża usługę Cloudflare Worker, która przesyła żądania models przez sieć edge Cloudflare — maskując IP hosta za dynamicznymi adresami Cloudflare. Worker wymusza jednorazowy sekret autoryzacyjny, aby publiczny URL workers.dev nie mógł być ponownie użyty jako otwarty relay.", "cloudflareRelayTokenHowto": "Utwórz token API w sekcji My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit.", - "cloudflareRelayAccountIdLabel": "Cloudflare Account ID", + "cloudflareRelayAccountIdLabel": "Identyfikator konta Cloudflare", "cloudflareRelayAccountIdHint": "Znajduje się po prawej stronie strony głównej dashboard Cloudflare.", - "cloudflareRelayApiTokenLabel": "Cloudflare API Token", + "cloudflareRelayApiTokenLabel": "Token API Cloudflare", "cloudflareRelayApiTokenHint": "Wymaga uprawnień 'Workers Scripts: Edit'. Token jest używany tylko podczas wdrażania i nigdy nie jest przechowywany.", "cloudflareRelayProjectNameLabel": "Nazwa Workera", "cloudflareRelayFreeTierNote": "Darmowa usługa: 100 000 żądań dziennie na konto Cloudflare.", @@ -8175,7 +8190,7 @@ "cloudflareRelayDeploy": "Wdróż", "cloudflareRelayCredsRequired": "Account ID oraz API Token są wymagane", "cloudflareRelayDeployFailed": "Wdrażanie nie powiodło się", - "modelLockout": "Model Lockout", + "modelLockout": "Blokada modelu", "modelLockoutPageDescription": "Skonfiguruj, które kody błędów HTTP wyzwalają blokadę per-model i kontroluj zachowanie cooldown.", "modelLockoutLoadFailed": "Nie udało się wczytać ustawień blokady modeli", "modelLockoutSaveFailed": "Nie udało się zapisać ustawień blokady modeli", @@ -8202,21 +8217,21 @@ "modelLockoutMaxBackoffStepsDescription": "Maksymalna liczba kroków backoff, zanim cooldown przestanie rosnąć. W większości konfiguracji limit Max Cooldown jest osiągany jako pierwszy, co stanowi próg bezpieczeństwa w przypadku podniesienia Max Cooldown.", "disableSessionStickiness": "Wyłącz lepkość sesji", "disableSessionStickinessDesc": "combos typu round-robin i random zmieniają połączenie przy każdym żądaniu, zamiast przypinać całą konwersację do jednego połączenia na podstawie hasha pierwszej wiadomości. Pozostaw wyłączone, aby zachować trafienia prompt-cache dla wieloturowych czatów. Nadpisania per-combo mają pierwszeństwo.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Routing według lokalności pamięci podręcznej promptów", + "promptCacheAffinityDesc": "Preferuj to samo konto dostawcy dla pasujących kluczy pamięci podręcznej promptów, zachowując przełączanie awaryjne na podstawie kondycji i limitów.", + "reasoningTokenBuffer": "Bufor tokenów rozumowania", + "reasoningTokenBufferDesc": "Zezwalaj routingowi łączonemu na zwiększenie zapasu max_tokens tylko dla znanych modeli rozumujących, gdy cały bufor mieści się w znanym limicie wyjściowym.", + "zeroLatencyOptimizations": "Optymalizacje bez opóźnień", + "zeroLatencyOptimizationsDesc": "Włącz hedging, predykcyjne pomijanie na podstawie TTFT i proaktywną kompresję żądań zapasowych. Pozostaw wyłączone, aby zapobiec równoległemu ściganiu celów przez te funkcje redukcji opóźnień lub kompresowaniu żądań zapasowych.", "credentialRedaction": "Ukrywanie danych uwierzytelniających", "credentialRedactionDesc": "Ukrywaj klucze API, tokeny i sekrety w kontekście wysyłanym do dostawców oraz w odpowiedziach.", "enableCredentialRedaction": "Włącz ukrywanie danych uwierzytelniających", "enableCredentialRedactionDesc": "Usuwa klucze API, tokeny, klucze prywatne i tokeny JWT z wiadomości, wywołań narzędzi oraz odpowiedzi.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Automatyczna synchronizacja wyłączona", + "pricingAutoSyncEnabled": "Automatyczna synchronizacja włączona", "modalityBridgeIntro": "Przekształć treści multimodalne w tekst, zanim trafią do modeli obsługujących wyłącznie tekst. Mosty obrazu, dźwięku i wideo są dostępne i konfigurowalne.", "modalityBridgeVisionTab": "Wizja", - "modalityBridgeAudioTab": "Audio", + "modalityBridgeAudioTab": "Dźwięk", "modalityBridgeVideoTab": "Wideo", "modalityBridgeSubTabsAria": "Sekcje Mostka Modalności", "modalityBridgeVisionTitle": "Mostek Wizji", @@ -8364,15 +8379,7 @@ "cliproxyapiHealth": "Zdrowie", "cliproxyapiPort": "Port", "qdrantHost": "Host", - "qdrantCollection": "Kolekcja", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Kolekcja" }, "contextRtk": { "title": "Silnik RTK", @@ -8495,7 +8502,7 @@ }, "engines": { "headroom": { - "name": "Headroom SmartCrusher", + "name": "SmartCrusher zapasu", "description": "Bezstratna kompresja tabelaryczna jednorodnych tablic JSON z jawnymi znacznikami liczby wierszy." }, "session-dedup": { @@ -8623,7 +8630,7 @@ "editCombo": "Edytuj", "deleteCombo": "Usuń", "deleteConfirm": "Usunąć to combo kompresji?", - "pipeline": "Pipeline", + "pipeline": "Potok", "addStep": "Dodaj krok", "removeStep": "Usuń", "name": "Nazwa", @@ -8661,6 +8668,8 @@ "contextEditingNote": "Obecnie dostępne tylko dla modelu Claude (Anthropic). Jest to tryb delegowany: dostawca usuwa stare bloki użycia narzędzi po stronie serwera — nie przepisujemy wiadomości. Nie ma to wpływu na innych dostawców.", "namedCombos": "Nazwane kombinacje", "namedCombosDescription": "Zapisuj różne potoki i przypisuj je do określonych kombinacji routingu.", + "activeProfileMasterSwitchOffWarning": "Poniższy aktywny profil nie zostanie uruchomiony, dopóki główny przełącznik „Kompresja promptów” nie zostanie włączony.", + "activeProfileMasterSwitchOffCta": "Włącz go w Ustawieniach", "comboNamePlaceholder": "Nazwa kombinacji", "descriptionPlaceholder": "Opis", "nameRequired": "Wprowadź nazwę kombinacji przed zapisaniem.", @@ -8674,9 +8683,7 @@ "languagePacksList": "Pakiety językowe: {packs}", "dragToReorder": "Przeciągnij, aby zmienić kolejność kroku", "engine": "Silnik", - "intensity": "Intensywność", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensywność" }, "compressionStudio": { "noRun": "Brak dostępnego przebiegu kompresji.", @@ -8705,7 +8712,7 @@ "run": "Uruchom", "laneRejected": "odrzucono: {reason}", "error": "błąd", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Nie udało się wyświetlić podglądu połączonego potoku: {reason}", "combinedFlow": "Połączony przepływ", "eachLayer": "Każda warstwa osobno", "diff": "Różnica", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Włącz silnik", "enableDescription": "Uruchamia się jako ostatni w stosie (po tym, jak RTK/Caveman oczyści tekst, a OmniGlyph skonwertuje resztę na obrazy), a także działa samodzielnie w trybie omniglyph. To jest wersja zapoznawcza i pozostaje domyślnie wyłączona do czasu zakończenia pełnej walidacji.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Profil kompresji", + "profileDescription": "Profil wyznacza górną, a nie dolną granicę: bardziej restrykcyjnego profilu nie można złagodzić nadpisaniem dla pojedynczego kroku. Pomiar w tej bazie kodu: w profilu bezpiecznym dla kodowania lub zrównoważonym sesja, która nie zgromadziła jeszcze historii, nie kompresuje niczego, ponieważ oba profile podnoszą próg minimalnej liczby znaków i pozostawiają prompt systemowy, schematy narzędzi oraz wyniki narzędzi w formie natywnej.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agresywny (domyślny)", + "description": "Zasada użyta w opublikowanych pomiarach. Przekształca w obrazy prompt systemowy, dokumentację narzędzi i obszerną historię." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Zrównoważony", + "description": "Pozostawia bieżący stan w formie natywnej i chroni ostatnie 8 tur; zwija tylko starszą, zamkniętą historię." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Bezpieczny dla kodowania", + "description": "Pozostawia instrukcje nadrzędne, schematy narzędzi i bieżące dane wyjściowe narzędzi w formie natywnej, chroniąc ostatnie 12 tur. Nie kompresuje niczego, dopóki sesja nie zgromadzi historii." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Przekazywanie bez zmian", + "description": "Przekierowuje bez przekształcania. Silnik jest pomijany, a żądanie przekazywane bez zmian." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Wybierz profil kompresji OmniGlyph", "saved": "Zapisano.", "saveFailed": "Nie można zapisać.", "enableAria": "Włącz silnik OmniGlyph", @@ -8822,9 +8829,9 @@ "externalDescription": "OmniRoute znalazł 9Router pod adresem {host}:{port}. Jego cykl życia, logi, aktualizacje i klucz usługi pozostają zarządzane przez zewnętrzną instalację.", "start": "Uruchom", "starting": "Uruchamianie…", - "stop": "Stop", + "stop": "Zatrzymaj", "stopping": "Zatrzymywanie…", - "restart": "Restart", + "restart": "Uruchom ponownie", "restarting": "Ponowne uruchamianie…", "update": "Aktualizuj", "updating": "Aktualizowanie…", @@ -8933,7 +8940,7 @@ "quickSettingsDesc": "Podstawowe ustawienia kompresji na start", "autoClarity": "Obejście Auto-Clarity", "bypassConditions": "Warunki pominięcia", - "bypassConditionsList": "security, irreversible, clarification, order-sensitive", + "bypassConditionsList": "bezpieczeństwo, nieodwracalność, doprecyzowanie, wrażliwość na kolejność", "simpleMode": "Prosty", "advancedMode": "Zaawansowany", "tooltipAutoTrigger": "Automatycznie kompresuj, gdy wielkość kontekstu przekroczy ten rozmiar.", @@ -8950,15 +8957,15 @@ } }, "translator": { - "title": "Translator", - "metaTitle": "Translator Playground | OmniRoute", + "title": "Tłumacz", + "metaTitle": "Środowisko testowe Translatora | OmniRoute", "metaDescription": "Debuguj, testuj i wizualizuj tłumaczenia formatów API między providers", - "playgroundTitle": "Translator Playground", - "playground": "Playground", + "playgroundTitle": "Środowisko testowe Translatora", + "playground": "Środowisko testowe", "realtime": "Aktywność tłumaczeń w czasie rzeczywistym", "chatTester": "Chat Tester", - "testBench": "Test Bench", - "liveMonitor": "Live Monitor", + "testBench": "Stanowisko testowe", + "liveMonitor": "Monitor na żywo", "modeDescriptionPlayground": "Wklej dowolną treść żądania API i zobacz, jak OmniRoute tłumaczy ją między formatami providers (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", "modeDescriptionChatTester": "Wysyłaj rzeczywiste żądania czatu przez OmniRoute i sprawdzaj pełną ścieżkę: wejście, przetłumaczone żądanie, odpowiedź provider i przetłumaczone wyjście.", "modeDescriptionTestBench": "Uruchamiaj zdefiniowane scenariusze i porównuj kompatybilność między providers i models.", @@ -8993,12 +9000,12 @@ "translationPathHubSpoke": "{source} → OpenAI (pośredni) → {target}", "translationPathDirect": "{source} → {target} (bezpośredni translator)", "translationPathPassthrough": "Ten sam format — tłumaczenie nie jest wymagane", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "Pośrednik OpenAI", "autoFeaturesTitle": "Co OmniRoute robi automatycznie", "autoFeaturesCount": "8 funkcji", - "featureReasoningCache": "Reasoning Cache", + "featureReasoningCache": "Pamięć podręczna rozumowania", "featureReasoningCacheDesc": "Ponownie wstrzykuje zbuforowany reasoning_content dla models w trybie thinking (DeepSeek V4, Kimi K2, Qwen), gdy klienci pomijają go w historii konwersacji.", - "featureSchemaCoercion": "Schema Coercion", + "featureSchemaCoercion": "Wymuszanie schematu", "featureSchemaCoercionDesc": "Naprawia uszkodzone schematy narzędzi: dodaje brakujące additionalProperties, oczyszcza długie opisy, normalizuje zagnieżdżone obiekty.", "featureRoleNormalization": "Normalizacja ról", "featureRoleNormalizationDesc": "Mapuje developer→system dla celów innych niż OpenAI. Mapuje system→user dla models, które nie obsługują roli system.", @@ -9006,7 +9013,7 @@ "featureToolCallIdsDesc": "Generates unikalne IDs tool_call, gdy ich brakuje. Normalizuje do formatu 9-znakowego dla providers takich jak Mistral.", "featureMissingToolResponse": "Wstrzykiwanie odpowiedzi narzędzi", "featureMissingToolResponseDesc": "Wstrzykuje puste komunikaty tool_result, gdy klienci wysyłają tool_calls bez odpowiadających im odpowiedzi.", - "featureThinkingBudget": "Thinking Budget", + "featureThinkingBudget": "Budżet rozumowania", "featureThinkingBudgetDesc": "Automatycznie zarządza konfiguracją thinking. Usuwa parametry thinking, gdy ostatnia wiadomość nie pochodzi od użytkownika.", "featureDirectPaths": "Bezpośrednie ścieżki tłumaczenia", "featureDirectPathsDesc": "Niektóre pary formatów (Claude→Gemini) mają bezpośrednie translatory, które omijają hub OpenAI, generując dokładniejszy output.", @@ -9022,7 +9029,7 @@ "exampleTemplates": "Przykładowe szablony", "exampleTemplatesHint": "— Kliknij, aby załadować", "templateLoadHint": "Szablon ładuje żądanie w formacie {format}. Zmień format źródłowy, aby załadować w innym formacie.", - "compatibilityTester": "Compatibility Tester", + "compatibilityTester": "Tester zgodności", "compatibilityReport": "Raport kompatybilności", "testBenchDescription": "Uruchamiaj zdefiniowane scenariusze (Simple Chat, Tool Calling itp.), aby zweryfikować tłumaczenie i kompatybilność z provider. Wybierz format źródłowy i docelowy provider, a następnie uruchom wszystkie testy, aby zobaczyć procent kompatybilności. Użyj tego, aby dowiedzieć się, które funkcje działają u różnych providers.", "targetProvider": "Docelowy Provider", @@ -9034,21 +9041,21 @@ "failed": "nieudany", "passedIconLabel": "✅ Zaliczony", "chunks": "fragmenty", - "scenarioSimpleChat": "Simple Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "scenarioSimpleChat": "Prosty czat", + "scenarioToolCalling": "Wywoływanie narzędzi", + "scenarioMultiTurn": "Wieloturowość", "scenarioThinking": "Thinking", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "Monit systemowy", + "scenarioStreaming": "Strumieniowanie", "templateNames": { - "simple-chat": "Simple Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "Prosty czat", + "tool-calling": "Wywoływanie narzędzi", + "multi-turn": "Wieloturowość", "thinking": "Thinking", - "system-prompt": "System Prompt", - "streaming": "Streaming", - "vision": "Vision", - "schema-coercion": "Schema Coercion" + "system-prompt": "Monit systemowy", + "streaming": "Strumieniowanie", + "vision": "Analiza obrazów", + "schema-coercion": "Wymuszanie schematu" }, "templateDescriptions": { "simple-chat": "Podstawowa wiadomość tekstowa", @@ -9101,8 +9108,8 @@ "anthropicCompatibleLabel": "Kompatybilny z Anthropic", "noTemplateForFormat": "Brak szablonu dla tego formatu", "translationFailed": "Tłumaczenie nie powiodło się: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "pipelineDebugger": "Debuger potoku", + "translationPipeline": "Potok tłumaczenia", "loading": "Ładowanie…", "compressionOriginal": "Oryginał", "compressionCompressed": "Skompresowane", @@ -9117,7 +9124,7 @@ "chatTesterFlow": "Żądanie klienta → Wykrywanie formatu → OpenAI Intermediate → Format Provider → Odpowiedź", "clickStepToInspect": "Kliknij dowolny krok, aby sprawdzić dane na tym etapie.", "clientFormat": "Format klienta", - "provider": "Provider", + "provider": "Dostawca", "modelPlaceholder": "Wybierz lub wpisz nazwę model...", "sendMessageToSeePipeline": "Wyślij wiadomość, aby zobaczyć Translation Pipeline", "chatMessageHintPrefix": "Wiadomość zostanie sformatowana jako żądanie", @@ -9130,7 +9137,7 @@ "clientRequestDescription": "Treść żądania w postaci, w jakiej wysłałby ją klient", "formatDetected": "Wykryty format", "formatDetectedDescription": "OmniRoute automatycznie wykrywa format API na podstawie struktury żądania", - "openaiIntermediate": "OpenAI Intermediate", + "openaiIntermediate": "Pośrednik OpenAI", "openaiIntermediateDescription": "Wszystkie formaty są najpierw normalizowane do formatu OpenAI (uniwersalny most)", "providerFormat": "Format Provider", "providerFormatDescription": "Format OpenAI jest tłumaczony na natywny format provider", @@ -9149,9 +9156,9 @@ "eventSourceMainPipeline": "• Główny pipeline żądań (ruch CLI/IDE/API)", "liveMonitorDescriptionPrefix": "Pokazuje zdarzenia tłumaczenia, gdy wywołania API przepływają przez OmniRoute. Zdarzenia pochodzą z bufora w pamięci (resetuje się przy restarcie). Użyj", "liveMonitorDescriptionSuffix": ", lub zewnętrznych wywołań API, aby wygenerować zdarzenia.", - "streamTransformer": "Stream Transformer", + "streamTransformer": "Transformator strumienia", "modeDescriptionStreamTransformer": "Uruchamiaj strumienie SSE chat completions przez Responses transformer.", - "streamTransformerTitle": "Responses Stream Transformer", + "streamTransformerTitle": "Transformator strumienia Responses", "streamTransformerDescription": "Wklej strumień SSE chat completions, przepuść go przez Responses transformer OmniRoute i sprawdź wyemitowane zdarzenia response.* przed podłączeniem klienta.", "loadTextSample": "Załaduj próbkę tekstu", "loadToolSample": "Załaduj próbkę tool-call", @@ -9170,18 +9177,18 @@ "comboRouted": "Przekierowano przez combo", "uniqueEndpoints": "Unikalne endpoints", "routeDetails": "Szczegóły trasy", - "comboBadge": "Combo", - "routeEndpointLabel": "Endpoint", + "comboBadge": "Kombinacja", + "routeEndpointLabel": "Punkt końcowy", "routeConnectionLabel": "Połączenie", "scenarioVision": "Vision (rozumienie obrazu)", "scenarioSchemaCoercion": "Koercja schematu (strukturyzowane dane wyjściowe)", "techniques": "Techniki:", - "friendlyTitle": "Translator", + "friendlyTitle": "Tłumacz", "friendlySubtitle": "Używanie istniejącej aplikacji z dowolnym provider — bez konieczności przepisywania kodu.", "conceptHeadline": "Aplikacja komunikuje się w „języku” jednego API. Translator konwertuje zapytania, aby korzystać z innego provider.", "conceptDiagramAppLabel": "Aplikacja", "conceptDiagramSourceLabel": "Format źródłowy", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (centrum)", "conceptDiagramTargetLabel": "Docelowy provider", "conceptDiagramExampleApp": "np. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Wklej zapytanie JSON; format zostanie wykryty automatycznie.", "advancedPipelineTitle": "Pośredni pipeline OpenAI", "advancedPipelineSubtitle": "Wizualizacja każdego kroku tłumaczenia (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Transformator strumienia (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Konwertuje Chat Completions SSE na Responses API.", "advancedTestBenchTitle": "Test Bench (8 scenariuszy)", "advancedTestBenchSubtitle": "Uruchamia wszystkie scenariusze i raportuje stan zaliczony/niezaliczony oraz % zgodności.", @@ -9277,17 +9284,17 @@ "kiloPassRemaining": "Pozostało", "kiloPassRenews": "Odnawia się za {count} dni", "kiloPassUsageLabel": "Zużycie w tym miesiącu", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Dodatkowe środki na użycie", + "kimiExtraUsage": "Dodatkowe użycie", + "kimiExtraUsageEnabled": "Włączone", + "kimiExtraUsageDisabled": "Wyłączone", + "kimiExtraUsageFrozen": "Zamrożone", + "kimiExtraUsageUnavailable": "Niedostępne", + "kimiMonthlyUsed": "Wykorzystano w tym miesiącu", + "kimiMonthlyLimit": "Limit miesięczny", + "kimiMonthlyLimitUnlimited": "Bez limitu", + "kimiAdditionalCredits": "Dodatkowe kredyty", + "loggerTab": "Rejestrator", "proxyTab": "Proxy", "budgetManagement": "Zarządzanie budżetem", "budgetSaved": "Zapisano limity budżetu", @@ -9295,7 +9302,7 @@ "loadingBudgetData": "Ładowanie danych budżetu...", "noApiKeysTitle": "Brak API Keys", "noApiKeysDescription": "Najpierw dodaj API keys, aby skonfigurować limity budżetu.", - "apiKey": "API Key", + "apiKey": "Klucz API", "todaysSpend": "Dzisiejsze wydatki", "thisMonth": "W tym miesiącu", "setLimits": "Ustaw limity", @@ -9314,14 +9321,14 @@ "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", + "promptCache": "Pamięć podręczna promptów", "systemHealth": "Stan systemu", "entries": "Wpisy", "activeCount": "{count} aktywnych", "openCircuitBreakersDetected": "Wykryto otwarte circuit breakers", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "circuitBreakers": "Circuit Breakers", + "hitRate": "Współczynnik trafień", + "hitsMisses": "Trafienia / chybienia", + "circuitBreakers": "Wyłączniki obwodu", "lockedIPs": "Zablokowane adresy IP", "lockoutsAutoRefreshHint": "Blokady rate limit per-model • Auto-refresh 10s", "lockedCount": "{count, plural, one {# zablokowany} other {# zablokowanych}}", @@ -9334,9 +9341,9 @@ "runStepDescription": "Uruchamianie przypadków testowych dla endpoints LLM za pośrednictwem OmniRoute. Każdy przypadek jest wysyłany jako rzeczywiste żądanie API.", "evaluate": "Ocena", "evaluateStepDescription": "Odpowiedzi są porównywane z oczekiwanymi kryteriami. Zobacz status pass/fail dla każdego przypadku wraz z metrykami opóźnienia i szczegółowymi informacjami zwrotnymi.", - "evalsStrategyContainsLabel": "Contains", - "evalsStrategyExactLabel": "Exact Match", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyContainsLabel": "Zawiera", + "evalsStrategyExactLabel": "Dokładne dopasowanie", + "evalsStrategyRegexLabel": "Wyrażenie regularne", "evalsStrategyCustomLabel": "Niestandardowa logika", "evalsStrategyContainsDescription": "Sprawdza, czy wynik LLM zawiera oczekiwany podciąg.", "evalsStrategyExactDescription": "Sprawdza, czy wynik LLM dokładnie pasuje do oczekiwanej wartości.", @@ -9344,7 +9351,7 @@ "evalsStrategyCustomDescription": "Niestandardowa logika ewaluacji (konfigurowana przez JSON).", "historyColumnSuiteName": "Nazwa zestawu", "historyColumnTarget": "Cel", - "historyColumnPassRate": "Pass Rate", + "historyColumnPassRate": "Współczynnik powodzenia", "historyColumnAvgLatencyMs": "Śr. opóźnienie", "historyColumnCreatedAt": "Uruchomiono", "evalSuites": "Zestawy ewaluacyjne", @@ -9361,7 +9368,7 @@ "columnExpected": "Oczekiwane", "statsSuites": "Zestawy", "statsTestCases": "Przypadki testowe", - "statsModels": "Models", + "statsModels": "Modele", "statsCoverage": "Pokrycie", "statsStrategiesCount": "{count} strategii", "evaluationStrategies": "Strategie ewaluacji", @@ -9377,7 +9384,7 @@ "runAllCompleted": "Uruchomiono {suites} zestawów — {passed} zakończonych sukcesem, {failed} nieudanych", "runAllCompletedWithFailures": "Uruchomiono {completed} zestawów; {failedSuites} nie udało się ukończyć", "runningProgress": "Uruchamianie {current}/{total}...", - "passRate": "pass rate", + "passRate": "współczynnik powodzenia", "summaryBreakdown": "{passed} sukces · {failed} porażka · {total} łącznie", "passedIconLabel": "✅ Sukces", "failedIconLabel": "❌ Błąd", @@ -9385,9 +9392,9 @@ "resultFailed": "Błąd", "expandResult": "Rozwiń szczegóły wyniku", "collapseResult": "Zwiń szczegóły wyniku", - "detailsContains": "Contains: \"{term}\"", + "detailsContains": "Zawiera: „{term}”", "detailsRegex": "Regex: {pattern}", - "detailsExpected": "Expected: \"{expected}\"", + "detailsExpected": "Oczekiwano: „{expected}”", "expectedOutputLabel": "Oczekiwany wynik", "noResultsYet": "Brak wyników", "testCasesCount": "Przypadki testowe ({count})", @@ -9404,7 +9411,7 @@ "modelComparison": "Porównanie models", "regressionDetection": "Wykrywanie regresji", "latencyBenchmarks": "Benchmarki opóźnienia", - "modelLockouts": "Model Lockouts", + "modelLockouts": "Blokady modeli", "noLockouts": "Brak aktualnie zablokowanych models", "activeSessions": "Aktywne sesje", "noSessions": "Brak aktywnych sesji", @@ -9420,7 +9427,7 @@ "durationHoursShort": "{value}h", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "Provider Limits", + "providerLimits": "Limity dostawców", "noProviders": "Brak połączonych providers", "connectProvidersForQuota": "Połącz się z providers za pomocą OAuth, aby śledzić limity quota i zużycie API.", "accountsCount": "{count, plural, one {# konto} other {# kont}}", @@ -9435,7 +9442,7 @@ "hiddenQuotaRowsLabel": "Ukryte:", "quotaVisibilityUpdateFailed": "Nie udało się zaktualizować widoczności limitu", "account": "Konto", - "modelQuotas": "Model Quotas", + "modelQuotas": "Limity modeli", "lastUsed": "Ostatnio odświeżono", "actions": "Akcje", "refreshQuota": "Odśwież quota", @@ -9458,13 +9465,13 @@ "noQuotaDataAvailable": "Brak dostępnych danych quota", "noAccountsForTierFilter": "Nie znaleziono kont dla filtra tieru", "tierAll": "Wszystkie", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "tierEnterprise": "Dla firm", + "tierTeam": "Zespół", + "tierBusiness": "Biznes", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", + "tierFree": "Bezpłatny", "tierLite": "Lite", "tierUnknown": "Nieznany", "statTotal": "Suma", @@ -9472,11 +9479,11 @@ "statAlert": "Alert", "statHealthy": "Zdrowy", "filterPurchaseTypeLabel": "Typ", - "filterTierLabel": "Tier", + "filterTierLabel": "Plan", "purchaseAll": "Wszystkie", "purchaseOauthSub": "Subskrypcja", - "purchaseOauthFree": "OAuth Free", - "purchaseApiKey": "API Key", + "purchaseOauthFree": "Bezpłatny OAuth", + "purchaseApiKey": "Klucz API", "creditsLabel": "Kredyty", "creditBalanceHint": "Pozostałe saldo", "unlimitedLabel": "Bez limitu", @@ -9489,7 +9496,7 @@ "redeemResetCredit": "Zrealizuj reset", "manageResetCredits": "Wyświetl kredyty", "viewResetCredits": "Wyświetl kredyty resetujące", - "resetCreditsModalTitle": "Codex reset credits", + "resetCreditsModalTitle": "Kredyty resetowania Codex", "resetCreditsModalExplainer": "Kredyty są uporządkowane według daty wygaśnięcia. Automatyczna realizacja zawsze używa kredytu, który wygasa jako pierwszy.", "resetCreditsLoadFailed": "Nie udało się załadować kredytów resetujących", "resetCreditsDetailsUnavailable": "Szczegóły kredytów są obecnie niedostępne. Odśwież i spróbuj ponownie.", @@ -9515,9 +9522,9 @@ "suiteImportInvalid": "Nieprawidłowy JSON zestawu ewaluacji", "suiteBuilderCloneSuffix": "kopia", "suiteBuilderImportedSuite": "Zaimportowany zestaw", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", + "scorecardTitle": "Karta wyników", + "evalApiKey": "Klucz API", + "scorecardPassRate": "Współczynnik powodzenia", "targetTypeModel": "Model", "actualOutputLabel": "Rzeczywisty wynik", "evalTargetHint": "Wybierz model lub combo do ewaluacji.", @@ -9555,7 +9562,7 @@ "suiteBuilderCaseModelPlaceholder": "np. gpt-4o-mini", "evalControlsHint": "Skonfiguruj cel ewaluacji i klucz API, a następnie uruchom pakiety, aby zweryfikować jakość, jaką oferuje model.", "recentRunsTitle": "Ostatnie uruchomienia", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", + "suiteBuilderCaseSystemPromptLabel": "Prompt systemowy", "suiteBuilderCaseExpectedPlaceholder": "np. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "np. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Wklej dokładną oczekiwaną odpowiedź", @@ -9569,7 +9576,7 @@ "weeklyLimitUsd": "Limit tygodniowy (USD)", "suiteBuilderCaseUserPromptPlaceholder": "np. Write a fibonacci function in Python", "suiteBuilderNameRequired": "Nazwa pakietu jest wymagana", - "suiteBuilderCaseUserPromptLabel": "User Prompt", + "suiteBuilderCaseUserPromptLabel": "Prompt użytkownika", "daily": "Dzienny", "resultErrorLabel": "Błąd", "suiteBuilderBuiltInBadge": "Wbudowany", @@ -9591,7 +9598,7 @@ "suiteBuilderCaseExpectedLabel": "Oczekiwana wartość", "historyLatency": "Opóźnienie", "suiteBuilderCaseTagsPlaceholder": "np. coding, python", - "targetTypeCombo": "Combo", + "targetTypeCombo": "Kombinacja", "scorecardPassed": "Zaliczony", "suiteBuilderCaseTagsLabel": "Tagi", "suiteBuilderNewSuite": "Nowy pakiet", @@ -9651,7 +9658,7 @@ "budgetTemplateApplyFailed": "Nie udało się zastosować szablonu", "budgetTemplateNames": { "tpl-prod": "Produkcja", - "tpl-dev": "Development", + "tpl-dev": "Środowisko programistyczne", "tpl-ci": "CI" }, "budgetStatus": { @@ -9665,7 +9672,7 @@ "budgetColumnKey": "Klucz", "budgetColumnToday": "Dzisiaj", "budgetColumnMonth": "Miesiąc", - "budgetColumnStatus": "Status", + "budgetColumnStatus": "Stan", "budgetSearchKeysPlaceholder": "Szukaj kluczy...", "budgetSortPctUsed": "Sortowanie: % zużycia ↓", "budgetSortTodayDollar": "Sortowanie: Dzisiaj $ ↓", @@ -9700,7 +9707,7 @@ "noSpendLast30Days": "Brak wydatków w ciągu ostatnich 30 dni", "updatedShort": "Zaktualizowano", "lastRefreshed": "Ostatnio odświeżono", - "providerQuota": "Provider Quota", + "providerQuota": "Limit dostawcy", "providerQuotaHomeHint": "Status na żywo na połączonych kontach" }, "modals": { @@ -9743,9 +9750,9 @@ "noPayloadData": "Brak dostępnych danych payload dla tego wpisu.", "proxyEvent": "Zdarzenie proxy", "proxy": "Proxy", - "level": "Level", + "level": "Poziom", "directNative": "Bezpośrednie (natywne)", - "combo": "Combo", + "combo": "Kombinacja", "inputTokens": "I:", "outputTokens": "O:" }, @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Metryki systemowe", "memory": "Pamięć", - "memoryShort": "mem", + "memoryShort": "pamięć", "uptime": "Czas działania", "ariaLabel": "Monitorowanie systemu", "title": "Monitor Systemu", @@ -9835,7 +9842,7 @@ "copyUrlManual": "Skopiuj URL z paska adresu i wklej go w aplikacji.", "accessDeniedDescription": "Brak uprawnień do dostępu do tego zasobu. Sprawdź klucz API lub skontaktuj się z administratorem.", "goToDashboard": "Przejdź do dashboard", - "featureMultiProviderTitle": "Multi-Provider", + "featureMultiProviderTitle": "Wielu dostawców", "featureMultiProviderDesc": "OpenAI, Anthropic, Google i inne", "featureLoadBalancingTitle": "Równoważenie obciążenia", "featureLoadBalancingDesc": "Inteligentne dystrybuowanie zapytań", @@ -9856,7 +9863,7 @@ "methodManualDescription": "Usuń hasło z bazy danych i ustaw nowe przy uruchomieniu:", "setPasswordInYour": "Ustaw nowe hasło w swoim", "fileLabelSuffix": "pliku:", - "newPasswordPlaceholder": "your_new_password", + "newPasswordPlaceholder": "twoje_nowe_hasło", "deleteSettingsFile": "Usuń", "orRemovePasswordHashField": "lub usuń pole passwordHash", "restartServerWithNewPassword": "Uruchom ponownie serwer - użyje on nowego hasła", @@ -9933,7 +9940,7 @@ "navigateHome": "Przejdź do strony głównej", "toggleMenu": "Przełącz menu", "featuresLink": "Funkcje", - "docsLink": "Docs", + "docsLink": "Dokumentacja", "github": "GitHub", "versionLive": "Wersja v1.0 jest już dostępna", "oneEndpoint": "Jeden endpoint dla", @@ -9957,15 +9964,15 @@ "featureCloudSyncDesc": "Natychmiastowa synchronizacja konfiguracji między urządzeniami.", "featureCliSupportTitle": "Wsparcie dla CLI", "featureCliSupportDesc": "Działa z Claude Code, Codex, Cline, Cursor i innymi.", - "featureDashboardTitle": "Dashboard", + "featureDashboardTitle": "Panel", "featureDashboardDesc": "Wizualny dashboard do analizy ruchu w czasie rzeczywistym.", "howItWorks": "Jak działa OmniRoute", "howItWorksDescription": "Dane przepływają płynnie z aplikacji przez naszą inteligentną warstwę routingu do najlepszego provider do danego zadania.", "howItWorksStep1Title": "1. CLI i SDK", "howItWorksStep1Description": "Zapytania rozpoczynają się od ulubionych narzędzi lub naszego jednolitego SDK. Wystarczy zmienić bazowy URL.", - "howItWorksStep2Title": "2. OmniRoute Hub", + "howItWorksStep2Title": "2. Centrum OmniRoute", "howItWorksStep2Description": "Nasz silnik analizuje prompt, sprawdza stan zdrowia provider i kieruje ruch dla najniższych opóźnień lub kosztów.", - "howItWorksStep3Title": "3. AI Providers", + "howItWorksStep3Title": "3. Dostawcy AI", "howItWorksStep3Description": "Zapytanie jest natychmiast realizowane przez OpenAI, Anthropic, Gemini lub inne podmioty.", "getStartedIn30Seconds": "Rozpocznij w 30 sekund", "getStartedDescription": "Zainstaluj OmniRoute, skonfiguruj swoje providers przez dashboard sieciowy i zacznij kierować zapytania AI.", @@ -9980,15 +9987,15 @@ "copied": "✓ Skopiowano", "startingOmniRoute": "Uruchamianie OmniRoute...", "serverRunningOnLabel": "Serwer działa na", - "dashboardLabel": "Dashboard", + "dashboardLabel": "Panel", "readyToRoute": "Gotowy do routingu! ✓", "configureProvidersNote": "📝 Skonfiguruj providers w dashboard lub użyj zmiennych środowiskowych", "dataLocation": "Lokalizacja danych:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", "product": "Produkt", - "dashboardLink": "Dashboard", - "changelog": "Changelog", + "dashboardLink": "Panel", + "changelog": "Dziennik zmian", "resources": "Zasoby", "documentation": "Dokumentacja", "npm": "NPM", @@ -10028,7 +10035,7 @@ "deploymentGuides": "Instrukcje wdrożenia", "features": "Funkcje", "supportedProviders": "Obsługiwane providers", - "supportedProvidersToc": "Providers", + "supportedProvidersToc": "Dostawcy", "commonUseCases": "Typowe przypadki użycia", "clientCompatibility": "Kompatybilność klientów", "protocolsToc": "Protokoły", @@ -10064,7 +10071,7 @@ "quickStartStep4Suffix": "Użyj prefiksu provider, na przykład", "deploySetupTitle": "Instrukcja konfiguracji", "deploySetupText": "Instalacja krok po kroku, konfiguracja środowiska i pierwsze uruchomienie OmniRoute.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron na komputery", "deployElectronText": "Uruchom OmniRoute jako natywną aplikację desktopową na systemach Windows, macOS i Linux.", "deployDockerTitle": "Docker", "deployDockerText": "Wdrożenie kontenerowe za pomocą Docker Compose; gotowe dla stosów produkcyjnych i Kubernetes.", @@ -10090,14 +10097,14 @@ "featureCliText": "Zarządzanie konfiguracjami IDE, eksport/import kopii zapasowych, wykrywanie profili codex i konfiguracja ustawień z poziomu dashboard.", "featureSecurityTitle": "Bezpieczeństwo i polityki", "featureSecurityText": "Uwierzytelnianie API key, filtrowanie IP, prompt injection guard, polityki domenowe, zarządzanie sesjami i logowanie audytowe.", - "featureCloudSyncTitle": "Cloud Sync", + "featureCloudSyncTitle": "Synchronizacja w chmurze", "featureCloudSyncText": "Synchronizacja konfiguracji z Cloudflare Workers w celu zdalnego dostępu z zaszyfrowanymi danymi uwierzytelniającymi i automatycznym przełączaniem awaryjnym (failover).", "providersAcrossConnectionTypes": "{count} providers w trzech typach połączeń.", "manageProviders": "Zarządzanie Providers", - "providersCount": "{count} providers", + "providersCount": "{count} dostawców", "providerTypeFree": "Poziom darmowy (Free Tier)", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "Klucz API", "useCaseSingleEndpointTitle": "Pojedynczy endpoint dla wielu providers", "useCaseSingleEndpointText": "Skieruj klientów na jeden bazowy URL i przekierowuj według prefiksu model (na przykład: gh/, cc/, kr/, openai/).", "useCaseFallbackTitle": "Fallback i przełączanie model z combos", @@ -10105,8 +10112,8 @@ "useCaseUsageVisibilityTitle": "Widoczność użycia, kosztów i debugowania", "useCaseUsageVisibilityText": "Śledzenie tokens i kosztów według provider, konta oraz API key w zakładkach Usage i Analytics.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", + "baseUrlLabel": "Bazowy adres URL", + "chatEndpointLabel": "Punkt końcowy czatu", "modelRecommendationLabel": "Rekomendacja model: jawny prefiks", "clientCodexTitle": "Models Codex / GitHub Copilot", "clientCodexBullet1": "Używanie ID model z", @@ -10167,7 +10174,7 @@ "mgmtLegacyMigrationNote": "Import starych map proxyConfig do przypisań rejestru.", "modelPrefixesDescriptionStart": "Użycie prefiksu provider przed nazwą model w celu skierowania ruchu do określonego provider. Przykład:", "modelPrefixesDescriptionEnd": "kieruje do GitHub Copilot.", - "provider": "Provider", + "provider": "Dostawca", "type": "Typ", "troubleshootingModelRouting": "Jeśli klient zgłasza błąd z routingiem model, należy użyć jawnego provider/model (na przykład: gh/gpt-5.1-codex).", "troubleshootingAmbiguousModels": "W przypadku błędów o niejednoznacznych models należy wybrać prefiks provider zamiast samego model ID.", @@ -10215,7 +10222,7 @@ "mcpToolsMemoryDesc": "Wyszukiwanie, dodawanie i czyszczenie trwałych wpisów pamięci konwersacyjnej.", "mcpToolsSkillsTitle": "Umiejętności", "mcpToolsSkillsDesc": "Lista, włączanie, uruchamianie i monitorowanie niestandardowych uruchomień umiejętności.", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "Automatyczna kombinacja", "featureAutoComboText": "Automatyczne tworzenie zoptymalizowanych combos na podstawie podłączonych providers, wzorców użycia i możliwości model.", "featureSearchTitle": "Wyszukiwanie w sieci", "featureSearchText": "Zintegrowane wyszukiwanie w sieci z 5 providers (Serper, Brave, Exa, Tavily, Perplexity), w tym analityka i śledzenie kosztów.", @@ -10332,7 +10339,7 @@ "termsDataLocationText": "Logi użycia, klucze API i konfiguracja są przechowywane w", "termsSection5Title": "5. Wyłączenie odpowiedzialności", "termsSection5Text": "Oprogramowanie OmniRoute jest dostarczane w stanie „takim, jakim jest” („as is”), bez jakichkolwiek gwarancji. Nie ponosimy odpowiedzialności za jakiekolwiek koszty poniesione w wyniku korzystania z API, przerw w świadczeniu usług ani utraty danych. Należy zawsze dbać o kopie zapasowe konfiguracji.", - "termsSection6Title": "6. Open Source", + "termsSection6Title": "6. Otwarte oprogramowanie", "termsSection6Text": "OmniRoute to oprogramowanie open-source. Użytkownik może je swobodnie badać, modyfikować i rozpowszechniać na warunkach określonych w jego licencji." }, "agents": { @@ -10349,7 +10356,7 @@ "agentName": "Nazwa agenta", "binaryName": "Nazwa pliku binarnego", "versionCommand": "Polecenie wersji", - "spawnArgs": "Spawn Args", + "spawnArgs": "Argumenty uruchomienia", "addAgent": "Dodaj agenta", "scanning": "Skanowanie systemu w poszukiwaniu CLI agents...", "opencodeIntegration": "Integracja OpenCode", @@ -10396,8 +10403,8 @@ "flowDiagramCli": "Agent CLI", "flowDiagramCliDesc": "Przetwarza z użyciem własnego uwierzytelniania i model", "fingerprintSettingsHint": "Dopasowywanie odcisków palców CLI (CLI Fingerprint) w celu maskowania żądań jako określone narzędzia CLI można skonfigurować w", - "settingsRoutingLink": "Settings/Routing", - "openSettings": "Settings", + "settingsRoutingLink": "Ustawienia/Routing", + "openSettings": "Ustawienia", "copyRawUrlTitle": "Kopiuj czysty URL do schowka", "copied": "Skopiowano!", "copyUrl": "Kopiuj URL", @@ -10406,8 +10413,8 @@ "viewOnGithub": "Zobacz na GitHub", "howToUse": "Sposób użycia", "browseAllSkillsOnGithub": "Przeglądaj wszystkie skills na GitHub", - "apiSkills": "API Skills", - "cliSkills": "CLI Skills", + "apiSkills": "Umiejętności API", + "cliSkills": "Umiejętności CLI", "apiSkillsSubtitle": "{count} skills — steruj OmniRoute przez REST / HTTP", "cliSkillsSubtitle": "{count} skills — steruj OmniRoute przez plik binarny terminala omniroute", "howToUseStep1": "Kliknij {copyUrl} przy skill, o którym ma dowiedzieć się agent.", @@ -10416,7 +10423,7 @@ "howToUseStep3": "Agent pobierze plik SKILL.md i zapozna się z API lub CLI OmniRoute — bez konieczności ręcznego czytania dokumentacji." }, "cloudAgents": { - "title": "Cloud Agents", + "title": "Agenci chmurowi", "description": "Zarządzanie autonomicznymi agentami kodującymi (Jules, Devin, Codex Cloud)", "loading": "Ładowanie zadań...", "aboutTitle": "O Cloud Agents", @@ -10492,12 +10499,12 @@ }, "templateNames": { "simple-chat": "Prosty czat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", - "vision": "Vision", + "streaming": "Strumieniowanie", + "system-prompt": "Prompt systemowy", + "thinking": "Rozumowanie", + "tool-calling": "Wywoływanie narzędzi", + "multi-turn": "Wiele tur", + "vision": "Obsługa obrazów", "schema-coercion": "Wymuszanie schematu" }, "templateDescriptions": { @@ -10550,7 +10557,7 @@ "cacheHitsSub": "z {total} łącznie", "tokensSaved": "Zaoszczędzone tokens", "tokensSavedSub": "Szacowane na podstawie trafień", - "hitRate": "Hit Rate", + "hitRate": "Współczynnik trafień", "performance": "Wydajność cache", "autoRefresh": "Automatyczne odświeżanie co {seconds}s", "hits": "Trafienia", @@ -10593,7 +10600,7 @@ "peakCacheRate": "Szczytowy wskaźnik cache", "trendHour": "Godzina", "activityVolume": "Aktywność", - "requestsShort": "reqs", + "requestsShort": "żądań", "inputShort": "Wej.", "cachedShort": "Zacache'owane", "writeShort": "Zapis", @@ -10610,7 +10617,7 @@ "peakCached": "Szczyt zacache'owanych", "cached": "Zacache'owane", "overview": "Przegląd", - "tableProvider": "Provider", + "tableProvider": "Dostawca", "tableModel": "Model", "performanceTitle": "Wydajność", "semanticCacheSectionDesc": "Własny deterministyczny cache odpowiedzi OmniRoute. Gdy jest włączony, powtarzające się żądania bez streamingu z temperature=0 mogą być obsługiwane lokalnie, bez odpytywania zewnętrznego provider.", @@ -10633,7 +10640,7 @@ "totalProcessed": "Wszystkie przetworzone żądania", "disabled": "Wyłączone", "totalRequests": "Wszystkie żądania", - "reasoningCache": "Reasoning Replay", + "reasoningCache": "Odtwarzanie rozumowania", "reasoningCacheDesc": "Zachowuje myślenie modelu (thinking) dla wieloturowych przepływów wywoływania narzędzi (tool calling)", "reasoningEntries": "Aktywne wpisy", "reasoningReplayRate": "Wskaźnik Replay", @@ -10643,7 +10650,7 @@ "reasoningByProvider": "Według provider", "reasoningByModel": "Według modelu", "reasoningRecentEntries": "Ostatnie wpisy", - "reasoningToolCallId": "Tool Call ID", + "reasoningToolCallId": "Identyfikator wywołania narzędzia", "reasoningChars": "Znaki", "reasoningAge": "Wiek", "reasoningView": "Pokaż", @@ -10659,7 +10666,7 @@ "reasoningClearError": "Nie udało się wyczyścić reasoning cache", "reasoningNoData": "Nie ma jeszcze żadnych wpisów w reasoning cache. Wpisy pojawiają się, gdy modele thinking używają tool calling.", "cachePerformanceRetry": "Ponów", - "cachePerformanceHitRate": "Hit Rate", + "cachePerformanceHitRate": "Współczynnik trafień", "cachePerformanceAvgLatency": "Średnie opóźnienie (ms)", "cachePerformanceP95Latency": "Opóźnienie p95 (ms)", "retry": "Ponów", @@ -10673,12 +10680,12 @@ }, "proxyConfigModal": { "levelGlobal": "Globalny", - "levelProvider": "Provider", - "levelCombo": "Combo", + "levelProvider": "Dostawca", + "levelCombo": "Kombinacja", "levelKey": "Klucz", "levelDirect": "Bezpośredni (brak proxy)", "titleGlobal": "Globalna konfiguracja proxy", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "Serwer proxy {level} — {label}", "loading": "Ładowanie konfiguracji proxy...", "inheritingFrom": "Dziedziczenie z", "source": "Źródło", @@ -10785,26 +10792,26 @@ }, "cursorAuthModal": { "title": "Połącz Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Zaloguj się przez Cursor", + "tabImport": "Importuj token", + "loginDescription": "Otwiera stronę logowania Cursor w przeglądarce. Działa w Dockerze — zatwierdź logowanie w przeglądarce na hoście, a następnie wróć tutaj.", + "loginWithCursor": "Zaloguj się przez Cursor", + "startingLogin": "Uruchamianie…", + "waitingApproval": "Oczekiwanie na zatwierdzenie logowania Cursor…", + "openUrlHint": "Jeśli przeglądarka się nie otworzyła:", + "openLoginLink": "Otwórz stronę logowania", + "cancelLogin": "Anuluj logowanie", "autoDetecting": "Automatyczne wykrywanie tokens...", "readingFromCursor": "Odczytywanie z Cursor IDE lub cursor-agent", "tokensAutoDetected": "Tokens pomyślnie automatycznie wykryte z Cursor IDE!", "cursorNotDetected": "Nie wykryto Cursor IDE. Wklej ręcznie swój token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Uruchamiasz w Dockerze? Wybierz opcję „Zaloguj się przez Cursor”. Automatyczny import z IDE i cursor-agent są zwykle niedostępne wewnątrz kontenera. Zobacz docs/providers/CURSOR-DOCKER.md.", + "accessToken": "Token dostępu", + "refreshToken": "Token odświeżania", + "refreshTokenPlaceholder": "Opcjonalnie — umożliwia automatyczne odświeżanie tokenu", "required": "*", "accessTokenPlaceholder": "Access token zostanie automatycznie uzupełniony...", - "machineId": "Machine ID", + "machineId": "Identyfikator maszyny", "optional": "(opcjonalnie)", "machineIdPlaceholder": "Machine ID zostanie automatycznie uzupełniony...", "importing": "Importowanie...", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Automatyczne wykrywanie tokens nie powiodło się", "errorEnterToken": "Wprowadź access token", "errorImportFailed": "Import nie powiódł się", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Nie udało się rozpocząć logowania do Cursor", + "errorLoginPoll": "Logowanie do Cursor nie powiodło się", + "errorLoginTimeout": "Upłynął limit czasu logowania do Cursor — spróbuj ponownie" }, "pricingModal": { "title": "Konfiguracja cennika", @@ -10826,8 +10833,8 @@ "model": "Model", "input": "Wejście", "output": "Wyjście", - "cached": "Cached", - "reasoning": "Reasoning", + "cached": "W pamięci podręcznej", + "reasoning": "Rozumowanie", "cacheCreation": "Tworzenie cache", "noPricingData": "Brak dostępnych danych cennika", "resetToDefaults": "Przywróć domyślne", @@ -10849,8 +10856,8 @@ "loading": "Ładowanie proxy...", "noProxies": "Brak zapisanych proxy.", "tableName": "Nazwa", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", + "tableEndpoint": "Punkt końcowy", + "tableStatus": "Stan", "tableHealth": "Kondycja (24h)", "tableUsage": "Użycie", "tableActions": "Akcje", @@ -10862,7 +10869,7 @@ "labelName": "Nazwa", "labelType": "Typ", "labelFamily": "Rodzina IP", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Automatycznie (dual-stack)", "familyIpv4": "Tylko IPv4", "familyIpv6": "Tylko IPv6", "familyHint": "Rodzina adresów wyjściowych (egress). Auto zachowuje dual-stack; IPv4/IPv6 przypina to proxy do danej rodziny (zapobiega wyciekowi v4 pod proxy tylko z IPv6).", @@ -10871,7 +10878,7 @@ "labelUsername": "Nazwa użytkownika", "labelPassword": "Hasło", "labelRegion": "Region", - "labelStatus": "Status", + "labelStatus": "Stan", "labelNotes": "Uwagi", "usernamePlaceholderEdit": "Pozostaw puste, aby zachować obecną nazwę użytkownika", "passwordPlaceholderEdit": "Pozostaw puste, aby zachować obecne hasło", @@ -10881,17 +10888,17 @@ "save": "Zapisz", "bulkModalTitle": "Masowe przypisywanie proxy", "bulkLabelScope": "Zakres", - "bulkLabelProxy": "Proxy", + "bulkLabelProxy": "Serwer proxy", "bulkClearAssignment": "(Wyczyść przypisanie)", "bulkLabelScopeIds": "IDs zakresów (rozdzielone przecinkiem lub nową linią)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", "bulkApply": "Zastosuj", "labelScope": "Zakres", - "labelProxy": "Proxy", - "scopeGlobal": "global", - "scopeProvider": "provider", - "scopeAccount": "account", - "scopeCombo": "combo", + "labelProxy": "Serwer proxy", + "scopeGlobal": "globalny", + "scopeProvider": "dostawca", + "scopeAccount": "konto", + "scopeCombo": "kombinacja", "bulkImportErrorMissingName": "Brak NAME", "bulkImportErrorMissingHost": "Brak HOST", "bulkImportErrorInvalidPort": "Nieprawidłowy PORT (musi być z zakresu 1-65535)", @@ -10912,7 +10919,7 @@ "assignmentsCount": "{count} przypisań", "noData": "—", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Napraw", "relayAuthMissing": "brak uwierzytelniania", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Strategia rotacji", "poolStrategyHint": "round-robin przechodzi przez członków po kolei; random wybiera losowo; sticky utrzymuje jednego członka przez określony czas; latency-optimized wybiera najszybszy na podstawie logów.", "poolStrategyFailed": "Nie udało się zaktualizować strategii rotacji", - "strategyRoundRobin": "Round-robin", - "strategyRandom": "Random", - "strategySticky": "Sticky", - "strategyLatency": "Latency-optimized", + "strategyRoundRobin": "Cyklicznie", + "strategyRandom": "Losowo", + "strategySticky": "Stałe przypisanie", + "strategyLatency": "Optymalizacja pod kątem opóźnień", "poolMembersLabel": "Członkowie puli ({count})", "poolNoMembers": "Brak proxy w tej puli.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# wyjście} few {# wyjścia} many {# wyjść} other {# wyjścia}} używanych przez {connections, plural, one {# połączenie} few {# połączenia} many {# połączeń} other {# połączenia}} · maksymalnie {max} na jednym wyjściu · ostatnie {hours} godz.", + "poolEgressObservationEmpty": "Nie zaobserwowano ruchu w ciągu ostatnich {hours} godz.", + "poolEgressObservationHint": "Dane zliczone z dziennika serwera proxy w tym przedziale czasu: unikalne wychodzące adresy IP zaobserwowane dla elementów tej puli oraz połączenia OmniRoute, które z nich korzystały. „Na jednym wyjściu” oznacza wartość w całym przedziale czasu, a nie jednocześnie. Blokada 429 dla danego adresu IP wstrzymuje tylko połączenia z tej samej rodziny dostawców.", "poolRemove": "Usuń", "poolRemoveFailed": "Nie udało się usunąć proxy z puli", "poolAddLabel": "Dodaj proxy", @@ -10973,10 +10980,10 @@ "poolSaveFailed": "Nie udało się zapisać przypisania puli" }, "playground": { - "title": "Model Playground", + "title": "Plac zabaw modeli", "description": "Testuj dowolny model bezpośrednio z dashboard. Wybierz provider, model i typ endpoint, a następnie wyślij żądanie, aby zobaczyć surową odpowiedź.", - "endpoint": "Endpoint", - "provider": "Provider", + "endpoint": "Punkt końcowy", + "provider": "Dostawca", "model": "Model", "accountKey": "Konto / Klucz", "autoAccounts": "Auto ({count} kont)", @@ -11001,17 +11008,17 @@ "generatedImage": "Wygenerowany obraz {index}", "save": "Zapisz", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", + "chat": "Uzupełnienia czatu", + "responses": "Odpowiedzi", "completions": "Uzupełnienia", "images": "Generowanie obrazów", - "embeddings": "Embeddings", + "embeddings": "Osadzenia", "speech": "Tekst na mowę", "transcription": "Transkrypcja audio", "video": "Generowanie wideo", "music": "Generowanie muzyki", "moderations": "Moderacje", - "rerank": "Rerank", + "rerank": "Ponowne uszeregowanie", "search": "Wyszukiwanie webowe", "webFetch": "Pobieranie z sieci" }, @@ -11021,21 +11028,21 @@ "tabChat": "Czat", "tabCompare": "Porównaj", "tabApi": "API", - "tabBuild": "Build", + "tabBuild": "Kompilacja", "configPane": "Konfiguracja", "systemPrompt": "Prompt systemowy", "systemPromptPlaceholder": "Jesteś pomocnym asystentem.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", + "modelPlaceholder": "np. openai/gpt-4o", + "endpointLabel": "Punkt końcowy", "parametersLabel": "Parametry", "collapseConfig": "Zwiń panel konfiguracji", "expandConfig": "Rozwiń panel konfiguracji", "temperature": "Temperatura", "maxTokens": "Maks. tokens", "topP": "Top-p", - "presencePenalty": "Presence penalty", + "presencePenalty": "Kara za obecność", "frequencyPenalty": "Kara za częstotliwość", - "reasoningLabel": "Reasoning", + "reasoningLabel": "Rozumowanie", "thinking": "Myślenie", "effort": "Wysiłek", "effortDefault": "Domyślny", @@ -11073,13 +11080,13 @@ "loadPresetPlaceholder": "Wczytaj preset…", "copyCode": "Kopiuj", "copiedCode": "Skopiowano!", - "addModel": "+ Add model", + "addModel": "+ Dodaj model", "runAll": "Uruchom wszystko", "cancelAll": "Anuluj wszystko", "maxColumnsReached": "Maksymalnie {max} kolumn", "modelPlaceholderCompare": "Model (Cmd+K)…", "noModel": "Brak modelu", - "statusLabel": "Status: {status}", + "statusLabel": "Stan: {status}", "status": { "idle": "bezczynny", "streaming": "strumieniowanie", @@ -11096,7 +11103,7 @@ "ttft": "TTFT", "tps": "TPS", "metricsDisclaimer": "szacunek po stronie klienta", - "tokensLabel": "Tokens", + "tokensLabel": "Tokeny", "costLabel": "Koszt", "costEstimated": "(szacowany)", "ttftTitle": "Czas do pierwszego tokena (szacunek po stronie klienta)", @@ -11128,7 +11135,7 @@ "seed": "Ziarno", "stopSequences": "Sekwencje zatrzymania", "stopSequencesPlaceholder": "np. \"\\n\\n\" lub \"END\"", - "autoProvider": "Auto", + "autoProvider": "Automatycznie", "httpError": "Błąd {status}", "requestCancelled": "Żądanie anulowane", "networkError": "Błąd sieci", @@ -11179,7 +11186,7 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Punkt końcowy", "apiKey": "Klucz API", "model": "Model", "voice": "Głos", @@ -11207,7 +11214,7 @@ "play": "Odtwórz", "query": "Zapytanie", "numResults": "Maks. wyników", - "prompt": "Prompt", + "prompt": "Monit", "size": "Rozmiar", "duration": "Czas trwania", "question": "Pytanie", @@ -11221,7 +11228,7 @@ "noAudioUrl": "Odpowiedź nie zawierała adresu URL audio: {response}", "music": "Muzyka", "embeddingSample": "OmniRoute przekierowuje żądania AI do wielu dostawców.", - "embedding": "Embedding", + "embedding": "Osadzenie", "imageSample": "Futurystyczne miasto o zachodzie słońca, kinowe oświetlenie", "image": "Obraz", "ttsSample": "Witaj z OmniRoute. To jest test zamiany tekstu na mowę.", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Wynik {number}", "noKeysFound": "Nie znaleziono kluczy API. Dodaj klucz w sekcji Keys.", "exampleLabel": "Przykład", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} wej. / {tokensOut} wyj. tokens", "defaultKey": "(domyślne)", "clear": "Wyczyść", @@ -11265,26 +11272,26 @@ "total": "Łącznie", "ok": "Sukces", "err": "Błąd", - "combo": "Combo", + "combo": "Kombinacja", "keys": "Klucze", "shown": "Wyświetlone", "sortNewest": "Najnowsze", "sortOldest": "Najstarsze", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", + "sortTokensDesc": "Tokeny ↓", + "sortTokensAsc": "Tokeny ↑", "sortDurationDesc": "Czas trwania ↓", "sortDurationAsc": "Czas trwania ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", + "sortStatusDesc": "Stan ↓", + "sortStatusAsc": "Stan ↑", + "sortModelAsc": "Model A–Z", + "sortModelDesc": "Model Z–A", "sortLogs": "Sortuj logi", "refresh": "Odśwież", "columnsLabel": "Kolumny", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "AKTYWNY", "semantic": "Semantyczne", - "upstream": "Upstream", + "upstream": "Nadrzędny", "semanticCacheHit": "Trafienie w cache semantycznym (obsłużone przez OmniRoute)", "upstreamResponse": "Odpowiedź od upstream provider", "noApiKey": "Brak klucza API", @@ -11293,24 +11300,24 @@ "all": "Wszystkie", "error": "Błąd", "success": "Sukces", - "combo": "Combo" + "combo": "Kombinacja" }, "columns": { - "status": "Status", + "status": "Stan", "cacheSource": "Źródło cache", "model": "Model", "requested": "Żądano", - "provider": "Provider", + "provider": "Dostawca", "protocol": "Protokół żądania", "account": "Konto", "apiKey": "Klucz API", - "combo": "Combo", - "tokens": "Tokens", + "combo": "Kombinacja", + "tokens": "Tokeny", "compressed": "Kompresja", "tps": "TPS", "duration": "Czas trwania", "time": "Czas", - "conversation": "Conversation", + "conversation": "Konwersacja", "ttft": "TTFT" }, "loadingLogs": "Wczytywanie logów...", @@ -11372,7 +11379,7 @@ "upstreamCache": "Upstream (Dostawca)", "ariaLabel": "Szczegóły logu żądania", "completed": "Zakończono", - "upstreamStatus": "Upstream: {status}", + "upstreamStatus": "Nadrzędny: {status}", "statusDiscrepancy": "OmniRoute zwrócił {status}, mimo że dostawca zwrócił {provider}", "previousRequest": "Poprzednie żądanie", "nextRequest": "Następne żądanie", @@ -11417,21 +11424,21 @@ "correlationId": "Identyfikator korelacji", "correlationIdValue": "Identyfikator korelacji: {id}", "detailedPayloadInfo": "Najpierw włącz szczegółowe logowanie, jeśli chcesz uzyskać widok ładunku klienta/dostawcy w czterech etapach dla nowych żądań.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Kopiuj wszystko", + "copiedAll": "Skopiowano wszystko" } }, "proxyLogger": { "filterAll": "Wszystkie", "filterErrors": "Błędy", "filterSuccess": "Sukces", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterTimeout": "Przekroczenie limitu czasu", + "colStatus": "Stan", + "colProxy": "Serwer proxy", "colTls": "TLS", "colType": "Typ", "colLevel": "Poziom", - "colProvider": "Provider", + "colProvider": "Dostawca", "colTarget": "Cel", "colLatency": "Opóźnienie", "colClientIp": "IP klienta", @@ -11444,9 +11451,9 @@ "allProviders": "Wszystkie Providers", "total": "łącznie", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", + "err": "BŁĄD", + "timeoutShort": "TIMEOUT", + "direct": "bezpośrednio", "newest": "Najnowsze", "oldest": "Najstarsze", "latencyDesc": "Opóźnienie ↓", @@ -11465,10 +11472,10 @@ "images": "Obrazy", "chat": "Czat", "music": "Muzyka", - "responses": "Responses", - "rerank": "Rerank", + "responses": "Odpowiedzi", + "rerank": "Ponowne rangowanie", "video": "Wideo", - "embeddings": "Embeddings", + "embeddings": "Osadzanie", "transcription": "Transkrypcja" }, "toolDescriptions": { @@ -11480,7 +11487,7 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", + "title": "Środowisko uruchomieniowe", "description": "Obserwowalność w czasie rzeczywistym — 3-warstwowa odporność + sesje + alerty quota", "pause": "Wstrzymaj", "resume": "Wznów", @@ -11520,7 +11527,7 @@ "feedFilterCooldowns": "Cooldowny", "feedFilterLockouts": "Blokady", "feedFilterSessions": "Sesje", - "feedFilterQuotas": "Quotas", + "feedFilterQuotas": "Limity", "feedClear": "Wyczyść", "feedEmptyWaiting": "Oczekiwanie na zdarzenia... (odpytywanie co 5s)", "feedEmptyFiltered": "Brak zdarzeń pasujących do tego filtra", @@ -11546,7 +11553,7 @@ }, "quotaShare": { "weightPercent": "Waga %", - "title": "Quota Sharing", + "title": "Współdzielenie limitów", "description": "Dzielenie quotas dla providers między klucze API z limitami %", "newPool": "Nowa pula", "betaTitle": "Beta", @@ -11571,9 +11578,9 @@ "apiKeyColumn": "Klucz API", "weightColumn": "Waga", "fairShareShort": "dostateczny", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", + "policyHard": "twardy", + "policySoft": "miękki", + "policyBurst": "chwilowy", "policyHardHint": "Blokuj, gdy klucz wyczerpie alokację", "policySoftHint": "Zezwalaj na przekroczenie, tylko alarmuj", "policyBurstHint": "Zezwalaj na burst do wolnej puli", @@ -11585,7 +11592,7 @@ "quotaWindow": "Okno quota", "selectWindow": "Wybierz okno…", "alreadyUsedSuffix": "(już używane)", - "windowReset": "Reset", + "windowReset": "Resetuj", "duplicatePoolError": "Pula dla tego połączenia + okna już istnieje", "cancel": "Anuluj", "createPool": "Utwórz pulę", @@ -11612,7 +11619,7 @@ "conceptWindows": "Okna: 5h, godzinowe, dzienne, tygodniowe, miesięczne — każde śledzone niezależnie", "conceptKeyHowTitle": "Włączanie klucza dla quota", "conceptKeyHowDesc": "Utwórz klucz normalnie w API Keys — pojawi się on automatycznie w kroku kreatora dotyczącym kluczy. Zaznacz tam Exclusive, aby był używany wyłącznie do quota. Brak osobnego kroku włączania.", - "conceptExclusiveTitle": "What \"Exclusive\" does", + "conceptExclusiveTitle": "Co robi „Wyłączność”", "conceptExclusiveDesc": "Klucz ekskluzywny (exclusive) widzi/używa tylko wirtualnych models typu quotaShared-* z puli — wszystkie inne models są ukryte przed jego /v1/models i blokowane.", "burnRateTitle": "Tempo zużycia", "burnRateExhaustsIn": "Wyczerpie się za", @@ -11668,10 +11675,10 @@ "endpointsHint": "Wywołuj te wirtualne models za pomocą dowolnego przydzielonego klucza — routing i quota są obsługiwane na grupę.", "previewForKey": "Podgląd dla klucza", "previewKeyNone": "(wszystkie endpoints)", - "endpointsBaseUrl": "Base URL", + "endpointsBaseUrl": "Bazowy adres URL", "endpointsCollapse": "Zwiń", "endpointsExpand": "Rozwiń", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Natywny dla Anthropic", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — tylko codex", "betaText": "Quota Share działa, ale mogą występować błędy. Znaleziono jakiś? Zgłoś go.", @@ -11681,8 +11688,8 @@ "deleteGroupHasPools": "Ta grupa nadal zawiera pule — najpierw przypisz je ponownie lub usuń.", "ungroupedTitle": "Niezgrupowane", "ungroupedHint": "Te pule nie są przypisane do żadnej znanej grupy. Edytuj pulę, aby przenieść ją do rzeczywistej grupy.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Nie udało się usunąć tej puli.", + "dismiss": "Odrzuć" }, "plugins": { "title": "Wtyczki", @@ -11719,7 +11726,7 @@ "enabled": "Włączone", "disabled": "Wyłączone", "installedTab": "Zainstalowane", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Rynek", "marketplaceUrlLabel": "Niestandardowy URL Marketplace", "marketplaceUrlPlaceholder": "Pozostaw puste dla oficjalnego rejestru Omniroute", "saveMarketplaceUrl": "Zapisz i przeładuj", @@ -11729,7 +11736,7 @@ "verified": "Zweryfikowano", "install": "Instaluj", "installedFromMarketplace": "Zainstalowano wtyczkę {name}!", - "hooks": "Hooks" + "hooks": "Hooki" }, "quotaPlans": { "title": "Plany i quota", @@ -11745,7 +11752,7 @@ "unitOptions": { "percent": "%", "requests": "żądania", - "tokens": "tokens", + "tokens": "tokeny", "usd": "USD ($)" }, "windowOptions": { @@ -11770,12 +11777,12 @@ "todayHeader": "Dzisiaj", "yesterdayHeader": "Wszoraj", "filterAll": "Wszystko", - "filterProviders": "Providers", - "filterCombos": "Combos", + "filterProviders": "Dostawcy", + "filterCombos": "Kombinacje", "filterApiKeys": "Klucze API", "filterSettings": "Ustawienia", - "filterQuota": "Quota", - "filterAuth": "Auth", + "filterQuota": "Limit wykorzystania", + "filterAuth": "Uwierzytelnianie", "filterSystem": "System", "filterAria": "Filtruj według typu zdarzenia", "refresh": "Odśwież", @@ -11893,8 +11900,8 @@ "certNotTrusted": "Certyfikat niezaufany", "investigatingNotice": "Ten agent jest w trakcie badania. Hosty i obszar API są nadal potwierdzane. Setup będzie dostępny po udokumentowaniu nadrzędnego API.", "modelMappingsLabel": "Mapowania model", - "sourceModel": "Source model (agent native)", - "targetModel": "Target model (OmniRoute)", + "sourceModel": "Model źródłowy (natywny dla agenta)", + "targetModel": "Model docelowy (OmniRoute)", "noMappings": "Brak skonfigurowanych mapowań model. Uruchom kreator konfiguracji, aby automatycznie wykryć models.", "noMappingsDesc": "Nie skonfigurowano jeszcze mapowań modeli. Dodaj mapowania, aby kierować żądania agentów przez OmniRoute.", "addMapping": "Dodaj mapowanie", @@ -11962,7 +11969,7 @@ "back": "Wstecz", "next": "Dalej", "done": "Gotowe", - "loading": "Loading…", + "loading": "Ładowanie…", "riskNoticeTitle": "Potwierdzenie ryzyka", "riskNoticeBody": "AgentBridge będzie przechwytywać ruch HTTPS z tego agenta, przekierowując jego hosty API przez DNS. Włącz tylko wtedy, gdy akceptujesz odpowiedzialność za zgodność z warunkami korzystania z usług agenta i wszelkimi obowiązującymi zasadami sieciowymi.", "pageMoved": { @@ -12033,14 +12040,14 @@ "delete": "Usuń" }, "trafficInspector": { - "title": "Traffic Inspector", + "title": "Inspektor ruchu", "subtitle": "Monitoruj połączenia LLM i debuguj ruch HTTPS dowolnej aplikacji", "captureModesTitle": "Tryby przechwytywania", "agentBridgeMode": "AgentBridge", "agentBridgeModeDesc": "Przechwytuj ruch ze wszystkich połączonych agentów IDE", "customHostsMode": "Własne hosty", "customHostsModeDesc": "Dodaj określone hosty do przechwytywania", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "Serwer proxy HTTP", "httpProxyModeDesc": "Użyj zmiennej środowiskowej HTTP_PROXY", "systemWideMode": "Cały system", "systemWideModeDesc": "Przechwytuj cały ruch systemowy (zaawansowane)", @@ -12057,9 +12064,9 @@ "resumeBtn": "Wznów", "clearBtn": "Wyczyść", "exportHar": "Eksportuj .har", - "recordSession": "REC", - "stopSession": "Stop", - "liveBadge": "live", + "recordSession": "NAGR.", + "stopSession": "Zatrzymaj", + "liveBadge": "online", "offlineBadge": "offline", "noRequests": "Nie przechwycono jeszcze żadnych żądań.", "noRequestsDesc": "Upewnij się, że AgentBridge działa lub włącz inny tryb przechwytywania.", @@ -12076,7 +12083,7 @@ "rawEvents": "Surowe zdarzenia", "mergedView": "Widok scalony", "noBody": "Brak treści.", - "streaming": "streaming…", + "streaming": "przesyłanie strumieniowe…", "manageHosts": "Zarządzaj hostami", "copySnippet": "Kopiuj fragment proxy", "addHost": "Dodaj", @@ -12091,18 +12098,18 @@ "llmApiKind": "Typ API", "llmModel": "model", "llmMessages": "Wiadomości", - "llmStream": "Stream", + "llmStream": "Strumień", "llmMappedTo": "Zmapowano do", "llmCostEstimate": "Szacowany koszt", "systemProxyExitWarning": "Proxy systemowe jest nadal aktywne — czy na pewno opuścić stronę?", "customHostsTitle": "Własne hosty", - "loading": "Loading…", + "loading": "Ładowanie…", "copied": "Skopiowano!", "copy": "Kopiuj", "httpProxyTitle": "Fragment HTTP Proxy — port {port}", "notRecording": "Brak nagrywania", "anyStatus": "Dowolny status", - "liveOnly": "Live", + "liveOnly": "Na żywo", "viewingRecordedSession": "Podgląd nagranej sesji", "backToLive": "Powrót do live", "untitledSession": "Sesja bez nazwy", @@ -12110,7 +12117,7 @@ "modelResponse": "Odpowiedź model", "conversationNoMessages": "Nie znaleziono wiadomości w tym żądaniu.", "conversationNotAvailable": "Dane konwersacji są niedostępne. To może nie być żądanie LLM lub treść nie mogła zostać przetworzona.", - "loadingCharts": "Loading charts…", + "loadingCharts": "Ładowanie wykresów…", "statsErrors": "Błędy", "statsLatency": "Opóźnienie (ostatnie 50 żądań)", "statsNoData": "Brak żądań. Rozpocznij nagrywanie sesji, aby przechwycić dane do statystyk.", @@ -12123,7 +12130,7 @@ "timingTotalLatency": "Całkowite opóźnienie", "timingTimestamp": "Znacznik czasu", "timingMethod": "Metoda", - "timingStatus": "Status", + "timingStatus": "Stan", "timingRequestSize": "Rozmiar żądania", "timingResponseSize": "Rozmiar odpowiedzi", "pausedNewBadge": "{count} nowe", @@ -12165,7 +12172,7 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "Kod CLI", "phrase": "Narzędzia Code kierowane do OmniRoute", "flow": "Użytkownik → CLI Code → OmniRoute → Provider", "seeOther": "Zobacz →" @@ -12179,7 +12186,7 @@ "acp": { "title": "Agenci ACP", "phrase": "Interfejsy CLI uruchamiane przez OmniRoute jako backend wykonawczy (przepływ odwrotny)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Większość użytkowników może to zignorować — używaj tylko wtedy, gdy wymaga tego integracja.", "flow": "Klient → OmniRoute → uruchomienie CLI (stdio/ACP) → odpowiedź", "seeOther": "Zobacz →" } @@ -12217,7 +12224,7 @@ "versionNotFound": "nie znaleziono", "manualConfig": "Konfiguracja ręczna", "installGuide": "Instrukcja instalacji", - "endpointLabel": "Endpoint", + "endpointLabel": "Punkt końcowy", "baseUrlFull": "Pełny bazowy URL", "baseUrlPartial": "Częściowy bazowy URL", "refreshDetection": "Odśwież wykrywanie", @@ -12279,7 +12286,7 @@ "setupGuideCommandMissingTitle": "Nie znaleziono polecenia", "setupGuideCommandMissingDesc": "Upewnij się, że plik binarny znajduje się w PATH.", "fingerprintSettingsHint": "Skonfiguruj routing i fingerprints w", - "settingsRoutingLink": "Settings → Routing", + "settingsRoutingLink": "Ustawienia → Trasowanie", "installed": "Zainstalowane", "notFound": "Nie znaleziono", "builtIn": "Wbudowane", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhooki", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Rejestruj, wyświetlaj, testuj i usuwaj punkty końcowe webhooków. Konfiguruj subskrypcje zdarzeń (request.completed, request.failed, quota.exceeded itp.) i zarządzaj ponawianiem dostarczania." }, "omni-mcp": { "name": "Serwer MCP", @@ -12390,19 +12397,19 @@ "description": "Główne punkty końcowe wnioskowania zgodne z OpenAI: uzupełnianie czatu (chat completions), osadzenia (embeddings), obrazy, dźwięk (TTS/STT), moderacje, rerank oraz Responses API. Główny obszar integracji dla agentów AI." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Uruchom serwer", "description": "Uruchamiaj, zatrzymuj i restartuj serwer OmniRoute z poziomu CLI. Zarządzaj trybem demona, konfiguracją portów, automatycznym przywracaniem, integracją z zasobnikiem systemowym i skrótem otwierania panelu." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Kondycja", "description": "Sprawdzaj stan serwera, status komponentów i metryki na żywo z poziomu CLI. Uruchamiaj `health`, `health components` i `health watch`, aby uzyskać podgląd stanu bezpieczników i statusu dostawców w czasie rzeczywistym." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Dostawcy", "description": "Zarządzaj połączeniami z dostawcami z poziomu CLI: listuj dostępnych/skonfigurowanych dostawców, dodawaj, testuj, testuj wszystkie (test-all), waliduj, rotuj klucze API i przeglądaj metryki dla poszczególnych dostawców." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Klucze API", "description": "Twórz, listuj, rotuj i unieważniaj klucze API OmniRoute z poziomu CLI. Zarządzaj przepływami OAuth dla uwierzytelniania dostawców oraz sprawdzaj zakresy i wygasanie kluczy." }, "cli-models": { @@ -12482,7 +12489,7 @@ "description": "Wyszukuj, oceniaj, skanuj i importuj umiejętności agentów z repozytoriów GitHub zawierających pliki SKILL.md, CLAUDE.md, .cursorrules i podobne pliki umiejętności agenta. Odkrywaj umiejętności społeczności w ponad 160 kategoriach dostawców, oceniaj ich trafność za pomocą punktacji heurystycznej, sprawdzaj pod kątem złośliwego oprogramowania lub zakodowanych na stałe sekretów i instaluj w katalogach agentów Hermes, Claude Code, Gemini CLI lub OpenCode." } }, - "pageTitle": "Agent Skills", + "pageTitle": "Umiejętności agentów", "pageSubtitle": "Naucz swojego agenta obsługi OmniRoute — 22 obszary API + 20 rodzin CLI", "conceptCard": { "agent": { @@ -12496,8 +12503,8 @@ "crossLinkLabel": "Zrozum różnicę →" }, "comparison": { - "colAgent": "Agent Skills", - "colOmni": "Omni Skills", + "colAgent": "Umiejętności agentów", + "colOmni": "Umiejętności Omni", "whatIs": { "label": "Co to jest", "agent": "Odczytywalny maszynowo plik SKILL.md, który uczy zewnętrznego agenta obsługi OmniRoute", @@ -12516,7 +12523,7 @@ "storage": { "label": "Przechowywanie", "agent": "Dynamiczny katalog (/api/agent-skills) → SKILL.md na GitHub", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / lokalne)" }, "tagline": { "label": "Hasło", @@ -12532,14 +12539,14 @@ }, "categoryApi": "API", "categoryCli": "CLI", - "categoryConfig": "Config", + "categoryConfig": "Konfiguracja", "filterAll": "Wszystkie", "coverageLabel": "Pokrycie", - "mcpUrl": "MCP URL", + "mcpUrl": "Adres URL MCP", "a2aLink": "A2A", "mcpPrompt": "Dodaj ten punkt końcowy MCP do swojego agenta, aby udostępnić mu 37 narzędzi OmniRoute.", - "a2aPrompt": "Register this Agent Card with your orchestrator to enable A2A task delegation.", - "refresh": "Refresh", + "a2aPrompt": "Zarejestruj tę kartę agenta w swoim orkiestratorze, aby umożliwić delegowanie zadań A2A.", + "refresh": "Odśwież", "copyUrl": "Kopiuj URL", "viewOnGithub": "Wyświetl na GitHub", "previewLoading": "Wczytywanie dokumentacji skill…", @@ -12570,11 +12577,11 @@ "categoryDocumentation": "Dokumentacja", "categoryDebugging": "Debugowanie", "colRank": "Pozycja", - "colProvider": "Provider", - "colTopModel": "Top Model", + "colProvider": "Dostawca", + "colTopModel": "Najlepszy model", "colScore": "Wynik", "colAvgScore": "Średni wynik", - "colModels": "Models", + "colModels": "Modele", "colType": "Typ", "filterConfiguredOnly": "Tylko skonfigurowane", "filterAvailableOnly": "Tylko dostępne", @@ -12582,24 +12589,24 @@ "configuredOnly": "Tylko skonfigurowane", "configuredOnlyHint": "Pokaż tylko providers z aktywnymi połączeniami", "noConfiguredProviders": "Nie znaleziono skonfigurowanych providers. Najpierw dodaj połączenie provider.", - "colConfigured": "Status", + "colConfigured": "Stan", "typeAll": "Wszystkie typy", "typeNoauth": "Bez rejestracji", "typeOauth": "Logowanie OAuth", "typeApikey": "Klucz API", "sortTypeFirst": "Najłatwiejsze najpierw", "sortTypeFirstHelp": "Grupuj według nakładu pracy przy rejestracji (Bez rejestracji → Logowanie OAuth → Klucz API), zachowując kolejność jakości w każdej grupie", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Najbardziej niezawodni najpierw", + "sortByReliabilityHelp": "Uporządkuj dostawców według odsetka wywołań zakończonych powodzeniem w wybranym okresie. Dostawcy ze zbyt małą liczbą wywołań, aby określić współczynnik, zachowują kolejność według wyniku poniżej dostawców z dostępnymi pomiarami.", "typeLegend": "Bez rejestracji = zero konfiguracji · Logowanie OAuth = zaloguj się za pomocą własnego konta · Klucz API = użyj własnego klucza lub darmowego planu tego provider", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Niezawodność", + "colReliabilityHelp": "Odsetek wywołań faktycznie obsłużonych przez tego dostawcę w ciągu ostatnich 24 godzin. Myślnik oznacza, że obsłużył zbyt mały ruch, aby określić współczynnik.", + "reliabilitySample": "{successes} z {requests} wywołań zakończyło się powodzeniem w ciągu ostatnich {hours} godz.", + "reliabilityTooFew": "Tylko {requests} wywołań w ciągu ostatnich {hours} godz. — zbyt mało, aby określić współczynnik", + "reliabilityNoTraffic": "Brak zarejestrowanych wywołań w ciągu ostatnich 24 godz." }, "discovery": { - "title": "Provider Discovery", + "title": "Wykrywanie dostawców", "subtitle": "Skanuj providers pod kątem darmowych/nieograniczonych metod dostępu i przeglądaj wyniki. Opcjonalne (opt-in), tylko lokalnie.", "scanLabel": "Provider do przeskanowania", "scanPlaceholder": "np. huggingchat", @@ -12621,13 +12628,13 @@ "method": "Metoda", "auth": "Uwierzytelnianie", "feasibility": "Wykonalność", - "models": "Models" + "models": "Modele" }, "noAuthProvider": { - "title": "No authentication required", - "description": "This provider is ready to use immediately — no signup or API key needed.", - "accountDescription": "Ready to use — no signup needed. Add accounts for rate-limit rotation.", - "addAccount": "Add Account", + "title": "Uwierzytelnianie nie jest wymagane", + "description": "Ten dostawca jest gotowy do natychmiastowego użycia — nie wymaga rejestracji ani klucza API.", + "accountDescription": "Gotowe do użycia — rejestracja nie jest wymagana. Dodaj konta, aby rotować je po osiągnięciu limitu żądań.", + "addAccount": "Dodaj konto", "accountName": "Konto {provider} {number}", "accounts": "Konta ({count})", "adding": "Dodawanie...", @@ -12658,7 +12665,7 @@ "add": "Dodaj", "manualApiKey": "Użyj ręcznego klucza API", "createDahlTokenFailed": "Nie udało się utworzyć tokena Dahl", - "providerProxy": "Proxy", + "providerProxy": "Serwer proxy", "providerProxyConfigureHint": "Skonfiguruj proxy", "providerProxyTitleConfigured": "Proxy skonfigurowany: {host}" }, @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Wspierający Radar", + "description": "Zweryfikowano aktywny kanał danych dla wspierających OmniRoute Radar", + "criteria": "Zweryfikuj podpisany aktywny kanał danych dla wspierających Radar." }, "first-token": { "name": "Pierwszy Token", @@ -12846,7 +12853,7 @@ "security": "Bezpieczeństwo", "network": "Sieć", "policies": "Zasady", - "runtime": "Runtime", + "runtime": "Środowisko uruchomieniowe", "cli": "CLI", "health": "Stan", "requiresRestart": "Wymaga ponownego uruchomienia" @@ -12948,8 +12955,8 @@ "description": "Zezwalaj na wiele połączeń dla każdego węzła zgodności." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Wyłącz sprawdzanie okna kontekstu", + "description": "Pomiń lokalne sprawdzanie przez OmniRoute okna kontekstu i maksymalnej liczby tokenów wejściowych dla bezpośrednich żądań do pojedynczego modelu. Dostawcy nadrzędni nadal egzekwują swoje rzeczywiste limity. Kompresja promptów i limity tokenów wyjściowych pozostają aktywne." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Usuwaj wewnętrzne elementy wyjściowe fazy komentarza ze strumieni przekazywania Responses API przed przekazaniem ich do klientów. Wyłącz tę flagę, aby otrzymywać surowe komentarze upstream." @@ -12985,7 +12992,7 @@ "description": "Zezwalaj na odzyskiwanie strumienia w celu ponownego zażądania odpowiedzi i połączenia jej po tym, jak bajty dotarły już do klienta." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Zapewnij bezpieczeństwo wywołań narzędzi podczas kontynuacji w trakcie strumienia: nigdy nie wznawiaj przerwanego strumienia po wysłaniu wywołania narzędzia (nadal trwającego lub już zakończonego) i zatrzymaj się po jednej pustej kontynuacji zamiast wykorzystywać cały limit ponownych prób." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Jednorazowo przełącz na siostrzane połączenie, gdy strumień zamknie się przed wysłaniem jakiejkolwiek użytecznej ramki, a ograniczona ponowna próba na tym samym połączeniu została wykorzystana. Bez użytecznego siostrzanego połączenia zwracany jest pierwotny błąd early-EOF. Wyłączone: early-EOF pozostaje ostateczny po ponownej próbie." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Włącz dostęp do sieci w piaskownicy umiejętności." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Pętla narzędzi zarządzana przez serwer", + "description": "Kontynuuj niewykorzystujące strumieniowania wywołania narzędzi zarządzane przez serwer, dopóki model nie zwróci odpowiedzi możliwej do użycia przez klienta." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Pochodzenie Retry-After", + "description": "W zagregowanych odpowiedziach o niedostępności 429/503 pomijaj Retry-After, gdy nie jest znany konkretny przyszły termin ponowienia, zamiast wysyłać sztuczną wartość 1 s; dodaj error.retry_after_provenance oraz odczytuj opisowe wskazówki dotyczące ponowienia na ścieżkach opróżniania combo." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Zatrzymania infrastruktury o chronionym priorytecie jako 502", + "description": "Zwracaj 502 zamiast 503, gdy priorytetowy cel z mechanizmem rezerwowym wyłącznie na wypadek wyczerpania limitu zatrzymuje combo z przyczyny, która w sposób możliwy do udowodnienia nie jest związana z limitem: otwarty wyłącznik obwodu dostawcy lub predykcyjne pominięcie z powodu opóźnienia." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Kondycja kombinacji", "callLogs": "Dzienniki wywołań", "costs": "Koszty", - "playground": "Playground", + "playground": "Plac zabaw", "nestedCombo": "Zagnieżdżona kombinacja", "modelTarget": "Model docelowy", "weight": "{value}% wagi", @@ -13171,7 +13182,7 @@ "segmentHint": "Każdy segment = jedna darmowa pula · deduplikacja puli, rzetelne zliczanie (bez zawyżonych limitów zapytań).", "boost": "Odblokuj ~{tokens} więcej/mies. dzięki jednorazowemu doładowaniu OpenRouter za 10 $ (50 → 1000 żądań/dzień)", "uncapped": "Trwale bezpłatne, brak opublikowanego limitu (z ograniczeniem zapytań) — rzeczywisty dostęp, nieuwzględniony w nagłówku:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/mies. więcej za regionalną weryfikacją tożsamości (np. weryfikacją prawdziwego imienia i nazwiska w Chinach kontynentalnych) — rzeczywisty limit, nieuwzględniony w głównej wartości:", "tosRestricted": "{count, plural, one {# model} few {# modele} many {# modeli} other {# modeli}} oznaczono jako ograniczone przez ToS — Ty decydujesz", "provider": "Dostawca", "model": "Model", @@ -13205,7 +13216,7 @@ "actionApplied": "Zastosowano: {action}.", "actionFailed": "Działanie autopilota nie powiodło się", "refresh": "Odśwież", - "status": "Status", + "status": "Stan", "issues": "Problemy", "actions": "Działania", "connections": "Połączenia", @@ -13289,7 +13300,7 @@ "allModels": "wszystkie models", "keepModel": "Zachowaj model", "otherModel": "Inny model", - "combo": "Combo", + "combo": "Kombinacja", "priorityShort": "priorytet {value}", "toggleAria": "Włącz {name}", "edit": "Edytuj", @@ -13307,7 +13318,7 @@ "missing": "Nieokreślono", "signalOnly": "Niedyskretny sygnał reasoning", "requestTags": "Tagi żądania", - "requestTagsExample": "coding, internal", + "requestTagsExample": "kodowanie, wewnętrzne", "tagMode": "Dopasowywanie tagów", "effortMode": "Tryb effort", "targetEffort": "Docelowy effort", @@ -13322,7 +13333,7 @@ "cancel": "Anuluj", "simulateTitle": "Symuluj zasadę", "model": "Model", - "effort": "Effort", + "effort": "Poziom wysiłku", "transport": "Transport", "simulate": "Symuluj bez upstream", "extendedComboWarning": "Max/Ultra jest weryfikowane osobno dla każdego celu combo podczas routingu.", @@ -13331,7 +13342,7 @@ "scope": { "global": "Globalny", "apiKey": "Klucz API", - "combo": "Combo", + "combo": "Kombinacja", "model": "Model", "connection": "Połączenie" }, @@ -13347,7 +13358,7 @@ } }, "chaosConfig": { - "pageTitle": "Chaos Mode", + "pageTitle": "Tryb chaosu", "pageSubtitle": "Uruchamiaj wiele AI models równolegle lub we współpracy nad tym samym zadaniem", "enableChaos": "Włącz Chaos Mode", "enableChaosDesc": "Zezwalaj kluczom API z włączonym chaos mode na korzystanie z tej funkcji", @@ -13356,13 +13367,13 @@ "modeCollaborative": "Współpraca", "modeParallelDesc": "Wszystkie models działają jednocześnie — najszybsze wyniki", "modeCollaborativeDesc": "Models łączą wyjścia — każdy widzi poprzedni wynik", - "timeout": "Timeout (ms)", + "timeout": "Limit czasu (ms)", "timeoutDesc": "Maksymalny czas na wywołanie model (5000-600000ms)", "systemPrompt": "System Prompt (opcjonalnie)", "systemPromptDesc": "Niestandardowe instrukcje dla wszystkich instancji model w chaos mode", "providerOverrides": "Nadpisania provider", "providerOverridesDesc": "Wybierz określone models dla każdego provider dla chaos mode", - "providerId": "Provider", + "providerId": "Dostawca", "modelId": "Model", "addProvider": "Dodaj provider", "removeProvider": "Usuń", @@ -13424,92 +13435,92 @@ "tierLive": "Na żywo (w czasie rzeczywistym)", "tierCommunity": "Społeczność (opóźnienie 30 dni)", "activateTitle": "Aktywuj Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Porównaj dostęp Community z dostępem na żywo, dowiedz się, jakie dane wymienia Twoja instalacja, a następnie wybierz sposób aktywacji Radar.", + "accessScaleTitle": "Poznaj zasady dostępu do Radar przed aktywacją", + "accessScaleIntro": "Radar nie nawiązuje żadnych połączeń sieciowych, dopóki nie wyrazisz na to zgody. Wybierz dostęp Community lub aktywuj osobisty klucz wspierającego po zapoznaniu się z tymi zasadami.", + "accessCommunityRule": "Community — klucz nie jest wymagany: pełny katalog z 30-dniowym opóźnieniem.", + "accessSingleUseRule": "Gwiazdka + obserwowanie — gdy GitHub OAuth zweryfikuje obie czynności, Twoje konto GitHub otrzyma jednorazowy dostęp do aktualnego katalogu, po czym dostęp powróci do poziomu Community. Tego jednorazowego dostępu nie można ponownie przyznać temu kontu.", + "accessContributorRule": "Współtwórcy — scalone PR-y, commity i liczba wierszy określają jedynie kolejność w cotygodniowym rankingu. Pierwsza dziesiątka otrzymuje 365 dni dostępu, a miejsca 11–100 otrzymują 90 dni; współtwórcy spoza pierwszej setki nie otrzymują dostępu niezależnie od liczby PR-ów. Wypadnięcie z rankingu nigdy nie skraca już przyznanego okresu.", + "accessSupporterRule": "Wspierający — jednorazowe zakupy zapewniają dostęp na 6 miesięcy, 1 rok lub dożywotnio, bez automatycznego odnawiania. Okresy wynikające z zakupów, darowizn, wkładu w projekt i ręcznie przyznanego dostępu sumują się; dostęp dożywotni ma zawsze pierwszeństwo.", + "accessUseTitle": "Użytek osobisty, odzyskiwanie i weryfikacja", + "accessInstallationRule": "Licencja osobista — klucza można używać jednocześnie w jednej aktywnej instalacji. OmniRoute nie tworzy odcisku sprzętu. Odzyskanie unieważnia i zastępuje utracony klucz bez resetowania jego daty wygaśnięcia.", + "accessAbuseRule": "Weryfikacja nadużyć — użycie 4. różnego adresu IP w ciągu 24 godzin powoduje jedynie oznaczenie do ręcznej weryfikacji; nigdy nie blokuje ani nie unieważnia klucza automatycznie.", + "accessOffersRule": "Aktualne oferty są dobierane ręcznie i mogą ulec zmianie lub wygasnąć.", + "privacyTitle": "Jakie dane wymienia Radar", + "privacyDownloadsRule": "Pobieranie — Twoja instalacja otrzymuje kryptograficznie podpisany katalog i metadane poleceń; ważny, aktywny klucz odblokowuje również podpisane oferty i dane Intel.", + "privacySendsRule": "Wysyłanie — synchronizacja po stronie serwera przesyła klucz wspierającego jako token Bearer, a infrastruktura HTTPS otrzymuje adres IP połączenia. W ramach rozliczania żądań kanału danych żadna z tych wartości nie jest przechowywana w postaci nieprzetworzonej: przechowywane są skróty kluczy, zagregowane dane o użyciu oraz codziennie zmieniany, skrócony HMAC adresu IP na potrzeby weryfikacji nadużyć.", + "privacyNeverRule": "Nigdy nie są gromadzone — prompty, odpowiedzi, rozmowy, dane uwierzytelniające dostawców, ruch modeli, czas dostępności, opóźnienia ani lokalna konfiguracja dostawców nigdy nie są wysyłane do Radar.", + "activateButton": "Aktywuj Community", "activating": "Aktywacja...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Masz już klucz wspierającego?", + "keyInvalidFormatError": "Nieprawidłowy format klucza. Musi zaczynać się od „omr_”, po którym następuje 40 znaków szesnastkowych.", + "activateWithKeyButton": "Aktywuj dostęp wspierającego", + "changeKeyButton": "Zmień klucz", + "claimSectionTitle": "Nie masz jeszcze klucza wspierającego?", + "contributorButton": "Współtworzę projekt", + "contributorHint": "GitHub OAuth sprawdza aktualny ranking tygodniowy: osoby z pierwszej dziesiątki otrzymują 365 dni, a osoby na miejscach 11–100 otrzymują 90 dni. Sama liczba PR-ów nigdy nie zapewnia dostępu osobom spoza pierwszej setki.", + "supporterButton": "Wesprzyj projekt", + "supporterHint": "Jednorazowe opcje na 6 miesięcy, 1 rok i dożywotnie nie odnawiają się automatycznie; kwalifikujące się okresy sumują się, a dostęp dożywotni ma pierwszeństwo.", "colProvider": "Dostawca", "colModel": "Model", "colQuota": "Kwota", + "colLimits": "Limity użycia", + "trainsOnPrompts": "Trenuje na promptach", + "trainsOnPromptsHelp": "Warunki tego dostawcy wskazują, że może on trenować na wysyłanych przez Ciebie promptach. Modele bez tego oznaczenia albo deklarują, że tego nie robią, albo tego nie dokumentują — brak takiej informacji nie jest gwarancją.", + "limitsUnknownHelp": "Limity podane wyłącznie przez kanał danych Radar; brak opublikowanych limitów dla tej pozycji", + "contextUnknownHelp": "Okno kontekstowe tej pozycji jest nieznane", + "capabilityUnknownHelp": "Możliwość nie została zgłoszona przez kanał danych", "colContext": "Kontekst", "colCapabilities": "Możliwości", "colTos": "Ryzyko ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "nowy", "setupGuide": "Przewodnik konfiguracyjny", "disabledByFeed": "Wyłączone przez feed Radar", "capTools": "Narzędzia", "capVision": "Wizja", "capThinking": "Myślenie", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalog", + "freeCreditsTab": "Darmowe środki", + "freeCreditsSubtitle": "Linki polecające od dostawców śledzonych przez Radar — korzystanie z nich nic Cię dodatkowo nie kosztuje i pomaga wspierać OmniRoute.", + "fixedLinksEmpty": "Nie ma jeszcze dostępnych linków polecających. Zsynchronizuj Radar, aby sprawdzić aktualizacje.", + "requiredActionLabel": "Co zrobić:", + "claimButton": "Odbierz środki", + "campaignsTitle": "Kampanie ograniczone czasowo", + "campaignsEmpty": "Obecnie nie ma aktywnych kampanii — zajrzyj ponownie później.", + "campaignsUpsellCommunity": "Kampanie ograniczone czasowo są dodatkową korzyścią dla wspierających. Wszystkie stałe linki na tej stronie pozostają bezpłatne dla wszystkich.", + "campaignsValidUntil": "Ważne do {date}", + "colActions": "Działania", + "localBadge": "lokalny", + "editModel": "Edytuj", + "saveModel": "Zapisz", + "cancelEdit": "Anuluj", + "resetModel": "Resetuj zmiany lokalne", + "hideModel": "Ukryj", + "restoreModel": "Przywróć", + "hiddenModelsTitle": "Ukryte modele", + "modelDisplayName": "Lokalna nazwa wyświetlana", + "modelEnabled": "Włączono lokalnie", + "localStateSaveFailed": "Nie udało się zapisać lokalnych ustawień Radar", + "guidedCombos": "Sugerowane kombinacje", + "offers": "Oferty", + "intel": "Informacje" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Kombinacje sugerowane przez Radar", + "subtitle": "Twórz priorytetowe mechanizmy rezerwowe z równoważnych bezpłatnych modeli wybranych przez Radar.", + "backToRadar": "Wróć do Radar", + "loading": "Wczytywanie sugestii kombinacji...", + "familyLabel": "Rodzina modeli", + "modelsLabel": "Kolejność priorytetów", + "strategyReason": "Priorytetowo wykorzystywany jest najpierw największy odnawialny bezpłatny limit, a następnie aktywowani są kolejni dostawcy.", + "generateButton": "Wygeneruj kombinację", + "generating": "Generowanie...", + "alreadyCreated": "Już utworzono", + "created": "Utworzono kombinację", + "noSuggestions": "Żadna kwalifikująca się rodzina modeli nie ma obecnie aktywnych połączeń z co najmniej dwoma dostawcami.", + "catalogRequired": "Najpierw zsynchronizuj katalog Radar, aby wczytać wybrane rodziny modeli.", + "loadFailed": "Nie udało się wczytać sugestii kombinacji Radar.", + "createFailed": "Nie udało się utworzyć kombinacji. Sprawdź połączenia z dostawcami i spróbuj ponownie." }, "radarSetupPage": { "title": "Konfiguracja dostawcy", @@ -13538,28 +13549,28 @@ }, "resilienceConnections": { "title": "Odporność Połączenia", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Połączenia są automatycznie przywracane", + "reassuranceDetail": "Zwykle nie trzeba nic robić. Po wystąpieniu błędów OmniRoute tymczasowo wstrzymuje połączenie, a następnie bezpiecznie ponawia próbę.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Można wysyłać żądania", + "coolingDown": "Ponowna próba wkrótce", + "lockedOut": "Wymaga uwagi" }, "table": { - "status": "Status", + "status": "Stan", "provider": "Dostawca", "connectionId": "Połączenie", "authType": "Uwierzytelnianie", "backoffLevel": "Wycofanie", - "cooldown": "Cooldown", + "cooldown": "Okres oczekiwania", "lastError": "Ostatni Błąd", "lockouts": "Blokady", "healthy": "Sprawny", - "coolingDown": "Cooldown", + "coolingDown": "Okres oczekiwania", "circuitOpen": "Obwód Otwarty", "recovering": "Odzyskiwanie", "degraded": "Zdegradowany", - "terminal": "Terminal", + "terminal": "Końcowy", "unknown": "Nieznany", "never": "-" }, @@ -13589,7 +13600,7 @@ "detail": { "title": "Szczegóły Połączenia", "metadata": "Metadane", - "cooldown": "Cooldown", + "cooldown": "Okres oczekiwania", "lastError": "Ostatni Błąd", "breaker": "Wyłącznik", "lockouts": "Blokady Modelu", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Odrzuć żądania przed wysyłką, gdy docelowy model nie ma wymaganych możliwości (wizja, narzędzia, strukturalne wyjście, okno kontekstowe). Chroni bezpośrednie żądania od pojedynczego dostawcy, które omijają filtr zgodności warstwy kombinacyjnej.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Pomiń lokalne sprawdzanie przez OmniRoute rozmiaru okna kontekstu i maksymalnej liczby tokenów wejściowych dla bezpośrednich żądań kierowanych do jednego modelu. Dostawcy nadrzędni nadal egzekwują swoje rzeczywiste limity. Kompresja promptów i limity tokenów wyjściowych pozostają aktywne.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Statystyki wyszukiwania i ostatnie wyszukiwania uwzględniają tylko dostawców, którzy nadal mają aktywne połączenie (dostawcy niewymagający klucza, tacy jak duckduckgo-free, są uwzględniani zawsze). Wyłączenie tej opcji zachowuje każdy przechowywany wpis wyszukiwania z identyfikatorem dostawcy.", "publicSystem": { "notFound": { "title": "Nie znaleziono strony", @@ -13699,12 +13710,12 @@ "maintenanceInfo": "Informacje o konserwacji", "service": "Usługa", "unknown": "nieznany", - "notAvailable": "n/a", + "notAvailable": "nie dot.", "providersTracked": "Śledzeni dostawcy", "circuitBreakerState": "Stan Wyłącznika Obwodu Dostawcy", "lastUpdate": "Ostatnia aktualizacja: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes} min", + "uptimeHoursMinutes": "{hours} godz. {minutes} min" }, "statusPages": { "400": { @@ -13876,7 +13887,7 @@ } }, "providerTest": { - "dialogLabel": "Test {provider}", + "dialogLabel": "Testuj {provider}", "deprecated": "przestarzały", "risk": "ryzyko", "close": "Zamknij", @@ -13886,7 +13897,7 @@ "clearConversation": "Wyczyść rozmowę", "clear": "Wyczyść", "tabs": { - "test": "Test", + "test": "Testuj", "logs": "Dzienniki" }, "loadingLogs": "Ładowanie dzienników…", @@ -13917,7 +13928,7 @@ "time": "Czas", "latency": "Opóźnienie", "clientIp": "Adres IP klienta", - "proxy": "Proxy", + "proxy": "Serwer proxy", "direct": "Bezpośredni", "type": "Typ", "level": "Poziom", @@ -13947,7 +13958,7 @@ "tokens": "Tokeny", "active": "Aktywny", "other": "Inne", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "godzina", "day": "dzień", "unknownModel": "nieznany", @@ -13967,7 +13978,7 @@ "runners": "Biegacze", "tasks": "Zadania", "colName": "Nazwa", - "colClis": "CLIs", + "colClis": "Narzędzia CLI", "colStatus": "Status", "colTask": "Zadanie", "colMode": "Tryb", @@ -14015,7 +14026,7 @@ "title": "Orkiestracja", "description": "Wszystko, co OmniRoute obecnie uruchamia — agenci, flota i routing", "tabAgents": "Agenci", - "tabRouting": "Routing", + "tabRouting": "Trasowanie", "tabOverview": "Przegląd", "tabHistory": "Historia", "historyEmpty": "Brak zakończonych uruchomień w tym zakresie", @@ -14070,11 +14081,11 @@ "actionApprove": "Zatwierdź plan", "actionCancel": "Anuluj", "actionSeeInGraph": "Zobacz na grafie", + "actionRepeat": "Powtórz", "actionDone": "Akcja wykonana", "actionFailed": "Akcja nie powiodła się: {error}", "detailFailed": "Nie udało się wczytać szczegółów: {error}", "mirroredInA2A": "Odzwierciedlone w A2A", - "actionRepeat": "Powtórz", "repeatConfirm": "Kliknij ponownie, aby potwierdzić", "repeatDone": "Utworzono nowe uruchomienie", "repeatUnavailable": "Oryginalne dane wejściowe niedostępne" @@ -14082,63 +14093,63 @@ "cliproxyProviderExposure": { "title": "Ekspozycja Dostawcy", "description": "Eksponuj modele CLIProxyAPI jako cel routingu pod prefiksem cliproxyapi/.", - "label": "Expose as cliproxyapi/...", + "label": "Udostępnij jako cliproxyapi/...", "hint": "Gdy jest włączone, odkryte modele pojawiają się w wyborach dostawcy w całym OmniRoute.", "updateFailed": "Nie udało się zaktualizować (HTTP {status})", "networkError": "Błąd sieci — nie można zaktualizować ustawienia ekspozycji dostawcy" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", + "title": "Oferty dla wspierających", + "subtitle": "Oficjalne rabaty, środki, okresy próbne i zweryfikowane korzyści partnerskie od Radar.", + "backToRadar": "Wróć do Radar", + "loading": "Wczytywanie ofert...", + "refresh": "Odśwież oferty", + "refreshing": "Odświeżanie...", + "loadFailed": "Nie udało się odświeżyć ofert. Zachowano ostatnią zweryfikowaną lokalną pamięć podręczną.", + "empty": "Obecnie nie ma żadnych aktywnych ofert.", + "keyRequiredTitle": "Wymagany jest klucz wspierającego", + "keyRequiredDescription": "Oferty są aktywną korzyścią Radar. Dodaj istniejący klucz wspierającego na ekranie Radar, zweryfikuj swój status współtwórcy lub wesprzyj projekt, aby go uzyskać.", + "contributorButton": "Jestem współtwórcą", + "supporterButton": "Wesprzyj projekt", "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "officialBadge": "Oficjalna", + "conditionsLabel": "Warunki:", + "validUntil": "Ważna do {date}", + "noExpiry": "Brak ogłoszonej daty wygaśnięcia", + "openOffer": "Zobacz ofertę", + "trialDays": "{days, plural, one {# dzień} few {# dni} many {# dni} other {# dnia}}" }, "radarIntelPage": { "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", + "subtitle": "Autorskie rankingi ELO Radaru i faktyczne zmiany w katalogu.", + "backToRadar": "Wróć do Radaru", + "loading": "Ładowanie Intel...", + "refresh": "Odśwież Intel", + "syncing": "Odświeżanie...", + "loadFailed": "Nie udało się odświeżyć Intel. Zachowano ostatnią zweryfikowaną lokalną pamięć podręczną.", + "empty": "Nie jest jeszcze dostępna żadna zweryfikowana migawka Intel.", + "supporterBadge": "Sponsor Radaru", + "methodology": "Metodologia", + "eloMethod": "ELO, wartość początkowa {initial}, K={factor}", + "freshness": "Aktualność katalogu", + "ageDays": "{days, plural, one {sprzed # dnia} few {sprzed # dni} many {sprzed # dni} other {sprzed # dnia}}", + "trend": "Trend katalogu", + "modelDelta": "Liczba modeli: {current}, +{added} / -{removed}", + "ranking": "Ranking modeli", + "noRankings": "Nie są jeszcze dostępne żadne potwierdzone porównania.", "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "category": "Kategoria", + "rating": "Ocena", + "matches": "Pojedynki", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Aktualny", + "aging": "Starzejący się", + "stale": "Nieaktualny" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Rosnący", + "stable": "Stabilny", + "shrinking": "Malejący" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Żądanie przekracza okno kontekstu dostawcy" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference jest przyjacielem Open Source OmniRoute", + "description": "Bramka uszeregowana według kosztów, odsprzedająca dziesiątki najnowocześniejszych modeli za pośrednictwem jednego punktu końcowego zgodnego z OpenAI — kieruje każde żądanie do najtańszego kwalifikującego się dostawcy, nigdy powyżej ceny katalogowej.", + "cta": "Uzyskaj klucz API", + "partnerLinkNote": "Link partnerski", + "dismissAriaLabel": "Odrzuć" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Wyłącz generowanie wariantów poziomu rozumowania (np. -low, -medium, -high) w katalogu /v1/models." } diff --git a/src/i18n/messages/pt-BR.json b/src/i18n/messages/pt-BR.json index 8f680263e3..5d83758096 100644 --- a/src/i18n/messages/pt-BR.json +++ b/src/i18n/messages/pt-BR.json @@ -162,9 +162,9 @@ "effortMax": "Máximo", "effortUltra": "Ultra", "reasoningEffort": "Esforço de raciocínio", - "wireApi": "Wire API", + "wireApi": "API Wire", "modelAliases": "Aliases de modelo", - "combos": "Combos", + "combos": "Combinações", "noModelsFound": "Nenhum modelo encontrado", "clear": "Claro", "done": "Feito", @@ -190,513 +190,513 @@ "creating": "Criando", "comboCreated": "Combo criado", "swapFormats": "Trocar formatos", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "daysAgo": "Dias atrás", + "retries": "Tentativas", + "errorDuringRestore": "Erro durante a restauração", + "eventsAppearHint": "Dica de exibição de eventos", + "noLockouts": "Sem bloqueios", + "webSearchDesc": "Descrição da pesquisa na web", + "audioProvidersHeading": "Provedores de áudio", "cloudAgentProviders": "Provedores de agentes em nuvem", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Minutos atrás", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", + "liveAutoRefreshing": "Atualização automática em tempo real", + "webSearch": "Pesquisa na web", + "anthropicPrefixPlaceholder": "Placeholder do prefixo da Anthropic", + "addModelToCombo": "Adicionar modelo à combinação", "failedToLoad": "Falha ao carregar", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", + "categoryMedia": "Categoria de mídia", + "enableCloud": "Ativar nuvem", + "expirationBannerExpiringSoon": "Banner de expiração próxima", "retry": "Tentar novamente", "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", + "errorCount": "Contagem de erros", + "backupReasonManual": "Motivo do backup: manual", + "safeSearchModerate": "Pesquisa segura moderada", + "activeLimiters": "Limitadores ativos", + "a2aCardTitle": "Título do cartão A2A", + "cloudWorkerUnreachable": "Cloud Worker inacessível", "testFailed": "O teste falhou", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", + "compatibleBaseUrlHint": "Dica da URL base compatível", + "usageTracking": "Rastreamento de uso", + "disableCloudTitle": "Título para desativar a nuvem", "noConnections": "Nenhuma conexão", "providerHealth": "Saúde dos provedores", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", + "confirmDbImport": "Confirmar importação do banco de dados", + "notAvailableSymbol": "Símbolo de indisponibilidade", + "backupsAvailable": "Backups disponíveis", + "providerAuto": "Provedor automático", + "newProviderNamePlaceholder": "Placeholder do nome do novo provedor", + "a2aQuickStartStep2": "Etapa 2 do início rápido do A2A", + "ok": "OK", "available": "Disponível", - "noBackupYet": "No Backup Yet", + "noBackupYet": "Nenhum backup ainda", "more": "Mais", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "noCompatibleYet": "Nenhum compatível ainda", + "multiProvider": "Vários provedores", + "repairEnvHint": "Dica para reparar o ambiente", + "disablingCloud": "Desativando a nuvem", + "testBench": "Bancada de testes", + "valid": "Válido", + "cloudBenefitShare": "Compartilhamento de benefícios da nuvem", + "mcpCardTitle": "Título do cartão MCP", + "disableConfirm": "Confirmar desativação", + "filters": "Filtros", + "expirationBannerExpiredDesc": "Descrição do banner de expiração vencida", + "saveComboDefaults": "Salvar padrões da combinação", + "cloudConnectedVerified": "Conexão com a nuvem verificada", + "uptime": "Tempo de atividade", + "compatibleProdPlaceholder": "Espaço reservado para produto compatível", + "fallbackChainsTitle": "Título das cadeias de fallback", + "oauthLabel": "Rótulo do OAuth", + "a2aCardDescription": "Descrição do cartão A2A", + "okShort": "OK", + "maintenance": "Manutenção", + "formatConverter": "Conversor de formatos", + "zedImportNetworkError": "Erro de rede ao importar do Zed", + "apiKeyLabel": "Rótulo da chave de API", + "noModelsForProvider": "Nenhum modelo para o provedor", + "mcpCardDescription": "Descrição do cartão MCP", + "apiTypeLabel": "Rótulo do tipo de API", + "configuredProvidersLabel": "Rótulo de provedores configurados", + "maxRetriesLabel": "Rótulo do máximo de tentativas", + "title": "Título", + "output": "Saída", + "prefixHint": "Dica de prefixo", + "skipWizard": "Pular assistente", + "failedCount": "Contagem de falhas", + "confirmDbImportDesc": "Descrição da confirmação de importação do banco de dados", + "entries": "Entradas", + "until": "Até", + "disableCombo": "Desativar combinação", + "liveMonitorDescriptionPrefix": "Prefixo da descrição do monitoramento em tempo real", + "runningCount": "Contagem em execução", + "noActiveConnectionsInGroup": "Nenhuma conexão ativa no grupo", + "savedSuccessfully": "Salvo com sucesso", + "systemStorage": "Armazenamento do sistema", + "videoDesc": "Descrição do vídeo", + "maxResults": "Máximo de resultados", + "timeRangeMonth": "Intervalo de tempo: mês", + "testSummary": "Resumo do teste", + "failedSetPassword": "Falha ao definir a senha", + "audio": "Áudio", + "restore": "Restaurar", + "disableWarning": "Desativar aviso", + "moderationsDesc": "Descrição das moderações", + "providerHealthStatusAria": "Status de integridade do provedor (ARIA)", + "modelNamePlaceholder": "Placeholder do nome do modelo", + "mcpQuickStartStep2": "Etapa 2 do início rápido do Mcp", + "quickStart": "Início rápido", + "fullExportFailedWithError": "Falha na exportação completa com erro", + "loadingBackups": "Carregando backups", + "anthropicBaseUrlPlaceholder": "Placeholder da URL base da Anthropic", + "description": "Descrição", + "noProviderFound": "Nenhum provedor encontrado", + "auto": "Automático", + "protocolsDescription": "Descrição dos protocolos", + "cloudSessionNote": "Observação da sessão na nuvem", + "advancedSettings": "Configurações avançadas", + "defaultStrategy": "Estratégia padrão", + "purgeExpiredLogs": "Excluir logs expirados", + "justNow": "Agora mesmo", + "providerTestFailed": "Falha no teste do provedor", + "openaiBaseUrlPlaceholder": "Placeholder da URL base da OpenAI", + "image": "Imagem", + "failedCreateChain": "Falha ao criar a cadeia", + "importDatabase": "Importar banco de dados", + "allDataLocal": "Todos os dados são locais", + "sectionTitle": "Título da seção", + "failedToggle": "Falha ao alternar", + "editCombo": "Editar combinação", + "testResults": "Resultados do teste", + "searchQuery": "Consulta de pesquisa", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "Duplicar", + "createCombo": "Criar combinação", + "searchTypeWeb": "Tipo de pesquisa: Web", + "addChain": "Adicionar cadeia", + "prefixLabel": "Rótulo do prefixo", + "listModelsDesc": "Descrição da lista de modelos", + "databaseSize": "Tamanho do banco de dados", + "chainCreated": "Cadeia criada", + "providerTestTimeout": "Tempo limite do teste do provedor", + "routingStrategy": "Estratégia de roteamento", + "translateAction": "Ação de tradução", + "exportFailed": "Falha na exportação", + "connectedVerificationPending": "Conectado, verificação pendente", + "a2aQuickStartTitle": "Título do início rápido do A2A", + "couldNotTest": "Não foi possível testar", + "testAllCompatible": "Testar todos os compatíveis", + "anthropicCompatibleName": "Nome compatível com Anthropic", + "disabling": "Desativando", + "failedEnable": "Falha ao ativar", + "categoryUtility": "Categoria Utilitários", + "customUrlOptional": "URL personalizada (opcional)", + "localProviders": "Provedores locais", + "comboNamePlaceholder": "Placeholder do nome da combinação", + "memoryRss": "RSS da memória", + "disableProvider": "Desativar provedor", + "welcomeDesc": "Descrição de boas-vindas", + "nameLabel": "Rótulo do nome", + "allOperational": "Todos operacionais", + "backupNow": "Fazer backup agora", + "providerMaxRetriesAria": "ARIA do máximo de novas tentativas do provedor", + "textToSpeechDesc": "Descrição da conversão de texto em fala", + "machineId": "ID da máquina", + "globalProxy": "Proxy global", + "hitsMisses": "Acertos e erros", + "testDesc": "Descrição do teste", + "chatDesc": "Descrição do chat", + "importSuccess": "Importação bem-sucedida", + "chat": "Bate-papo", + "a2aQuickStartStep1": "Etapa 1 do início rápido do A2A", + "importFailed": "Falha na importação", + "inputPlaceholder": "Placeholder de entrada", + "providerModelsTitle": "Título dos modelos do provedor", + "lastBackup": "Último backup", + "yourEndpoint": "Seu endpoint", + "autoDisableThresholdDesc": "Descrição do limite de desativação automática", + "rerankDesc": "Descrição da reclassificação", + "modelsPathPlaceholder": "Espaço reservado do caminho dos modelos", + "noCombosYet": "Nenhuma combinação ainda", + "connectedVerificationPendingWithError": "Conectado, verificação pendente com erro", + "comboDefaultsGuideHint1": "Dica 1 do guia de padrões de combinações", + "enableCloudTitle": "Título de habilitação da nuvem", + "configuredProvidersHint": "Dica de provedores configurados", + "paused": "Pausado", + "llmProviders": "Provedores de LLM", + "enableCombo": "Habilitar combinação", + "removeProviderOverrideAria": "Remover substituição do provedor — ARIA", + "nodeVersion": "Versão do Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Falha na exportação com erro", + "proxyConfigured": "Proxy configurado", + "concurrencyPerModel": "Concorrência por modelo", + "protocolTasksLabel": "Rótulo de tarefas do protocolo", + "oauthProviders": "Provedores OAuth", + "lockedCount": "Contagem de bloqueados", + "deleteChainConfirm": "Confirmar exclusão da cadeia", + "recentTranslations": "Traduções recentes", + "zedImportButton": "Botão de importação do Zed", + "responsesDesc": "Descrição das respostas", + "testedCount": "Contagem de testados", + "providersCommaSeparatedPlaceholder": "Espaço reservado para provedores separados por vírgulas", + "signatureDefaults": "Padrões de assinatura", + "errorCreating": "Erro ao criar", + "timeRangeYear": "Intervalo de tempo: ano", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Nuvem desabilitada com sucesso", + "deleteConfirm": "Confirmar exclusão", + "check": "Verificar", + "safeSearch": "Pesquisa segura", + "protocolLastActivity": "Última atividade do protocolo", + "openMcpDashboard": "Abrir painel do MCP", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Rótulo do caminho do chat", + "retryDelay": "Atraso entre tentativas", + "errorUpdating": "Erro ao atualizar", + "ideCliIntegrations": "Integrações de CLI com IDE", + "imageGeneration": "Geração de imagens", + "apiKeyRequired": "Chave de API obrigatória", + "resetAllTitle": "Título de redefinição geral", + "connectionError": "Erro de conexão", + "modelName": "Nome do modelo", + "apiKeyForCheck": "Chave de API para verificação", + "cloudRequestTimeout": "Tempo limite da solicitação à nuvem", + "showConfiguredOnly": "Mostrar somente os configurados", "showFreeOnly": "Somente grátis", "addFirstProvider": "Adicione seu primeiro provedor", "addFirstProviderDesc": "Conecte um provedor de IA para começar a rotear solicitações por meio do OmniRoute. Você pode usar provedores gratuitos, chaves de API ou contas OAuth.", "learnMore": "Saiba mais", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Incluir domínios", + "promptCache": "Cache de prompts", + "cloudConnected": "Conectado à nuvem", + "deleteChain": "Excluir cadeia", + "chatPathPlaceholder": "Texto de exemplo do caminho do chat", + "databasePath": "Caminho do banco de dados", + "usingLocalServer": "Usando servidor local", + "globalComboConfig": "Configuração global de combinações", + "backupFailed": "Falha no backup", + "tabProtocols": "Protocolos das abas", + "continue": "Continuar", + "categorySearch": "Pesquisa de categorias", + "rateLimitStatus": "Status do limite de requisições", + "repairEnvSuccess": "Ambiente reparado com sucesso", + "nameRequired": "Nome obrigatório", + "country": "País", + "trackMetricsDesc": "Descrição do rastreamento de métricas", + "durationSecondsShort": "Duração em segundos (abreviado)", + "formatConverterDescription": "Descrição do conversor de formato", + "cloudBenefitAccess": "Acesso aos benefícios da nuvem", + "maxRetries": "Máximo de tentativas", + "queueTimeout": "Tempo limite da fila", "queueDepth": "Profundidade da Fila", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Adicionar provedor", + "realtime": "Em tempo real", + "totalTranslations": "Total de traduções", + "protocolActiveStreamsLabel": "Rótulo de fluxos ativos do protocolo", + "repairEnv": "Reparar ambiente", + "modelsCount": "Quantidade de modelos", + "viewBackups": "Ver backups", + "responsesApi": "API de respostas", + "copyComboName": "Copiar nome da combinação", + "failures": "Falhas", + "failedUpdate": "Falha na atualização", + "imageDesc": "Descrição da imagem", + "failedCreate": "Falha ao criar", + "remainingOfLimit": "Restante do limite", + "protocolsTitle": "Título dos protocolos", + "expirationBannerExpiringSoonDesc": "Descrição do banner de expiração próxima", + "source": "Origem", + "failed": "Falhou", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", + "mcpQuickStartStep1": "Etapa 1 do início rápido do MCP", + "runTest": "Executar teste", + "loadingFallbackChains": "Carregando cadeias de fallback", + "healthy": "Íntegro", + "version": "Versão", + "saveBlockWeighted": "Salvar bloco ponderado", + "zedImportNone": "Nenhum item para importar do Zed", + "noBackupsYet": "Ainda não há backups", + "noGlobalProxy": "Nenhum proxy global", + "noModels": "Nenhum modelo", + "stickyLimit": "Limite de persistência", + "passedCount": "Contagem de aprovações", + "zedImportFailed": "Falha ao importar do Zed", + "saving": "Salvando", + "testAll": "Testar todos", + "globalProxyDesc": "Descrição do proxy global", + "latencyP99": "Latência P99", + "connectingToCloud": "Conectando à nuvem", + "responses": "Respostas", + "errorDeleting": "Erro ao excluir", + "openaiPrefixPlaceholder": "Placeholder do prefixo da OpenAI", + "enterPassword": "Digite a senha", + "openA2aDashboard": "Abrir painel do A2A", + "enableProvider": "Ativar provedor", + "modeTest": "Modo de teste", + "failedDeleteChain": "Falha ao excluir a cadeia", + "providerDesc": "Descrição do provedor", + "templateLoadHint": "Dica de carregamento do modelo", + "lastFailure": "Última falha", + "moveDown": "Mover para baixo", + "providerLabel": "Rótulo do provedor", + "clearCacheFailed": "Falha ao limpar o cache", + "imagesGenerations": "Gerações de imagens", + "repairEnvWorking": "Reparo do ambiente funcionando", + "millisecondsShort": "ms", + "globalLabel": "Rótulo global", + "failuresPlural": "Falhas", + "completionsLegacyDesc": "Descrição de conclusões legadas", + "searchProviders": "Pesquisar provedores", + "chatPathHint": "Dica do caminho do chat", + "defaultStrategyDesc": "Descrição da estratégia padrão", + "latencyP95": "Latência P95", + "textToSpeech": "Texto para fala", + "searchType": "Tipo de pesquisa", + "messages": "Mensagens", + "aggregatorsGateways": "Agregadores e gateways", + "comboStrategyAria": "ARIA da estratégia combinada", + "input": "Entrada", + "testingConnection": "Testando conexão", + "excludeDomains": "Excluir domínios", + "webCookieProviders": "Provedores de cookies da web", + "allTestsPassed": "Todos os testes foram aprovados", + "openaiCompatibleName": "Nome compatível com OpenAI", + "warningCostOptimizedPartialPricing": "Aviso: preços parciais com otimização de custos", + "comboDefaultsGuideTitle": "Título do guia de padrões combinados", + "hoursAgo": "Horas atrás", + "notAvailable": "Indisponível", + "skipAndContinue": "Ignorar e continuar", + "moderations": "Moderações", + "proxyConfig": "Configuração de proxy", + "upstreamProxyProviders": "Provedores de proxy upstream", + "exportAll": "Exportar tudo", + "queuedCount": "Quantidade na fila", + "resetAll": "Redefinir tudo", + "noTranslations": "Nenhuma tradução", + "avgLatency": "Latência média", + "throttleStatus": "Status da limitação", + "backupRetentionDesc": "Descrição da retenção de backups", + "noCBData": "Nenhum dado de CB", + "chainDeleted": "Cadeia excluída", + "timeLeft": "Tempo restante", + "expirationBannerExpired": "Banner de expiração: expirado", + "language": "Idioma", + "invalidFileType": "Tipo de arquivo inválido", + "monitoredProviders": "Provedores monitorados", + "errors": "Erros", "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "chatCompletions": "Conclusões de chat", + "exampleTemplatesHint": "Dica de modelos de exemplo", + "retryDelayLabel": "Rótulo do atraso de nova tentativa", + "audioTranscription": "Transcrição de áudio", + "fallbackChainsDesc": "Descrição das cadeias de fallback", + "exampleTemplates": "Modelos de exemplo", + "connectionsCount": "Contagem de conexões", + "modelsPathLabel": "Rótulo do caminho dos modelos", + "activeProvidersHint": "Dica de provedores ativos", + "activeLockouts": "Bloqueios ativos", + "invalid": "Inválido", + "skipPassword": "Pular senha", + "moveUp": "Mover para cima", + "timeRange": "Intervalo de tempo", + "stickyLimitDesc": "Descrição do limite fixo", + "cloudBenefitEdge": "Benefício da nuvem: Edge", + "custom": "Personalizado", + "verifying": "Verificando", + "baseUrlLabel": "Rótulo da URL base", + "setPassword": "Definir senha", + "safeSearchStrict": "Pesquisa segura estrita", + "noChangesSinceBackup": "Nenhuma alteração desde o backup", + "modelsPathHint": "Dica do caminho dos modelos", + "audioTranscriptions": "Transcrições de áudio", + "testCombo": "Testar combinação", + "mcpQuickStartTitle": "Título do início rápido do MCP", + "comboUpdated": "Combinação atualizada", + "weighted": "Ponderado", + "providers": "Provedores", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Descrição de nenhuma cadeia de fallback", + "yesImport": "Sim, importar", + "lockoutsAutoRefreshHint": "Dica de atualização automática dos bloqueios", + "tabApis": "Aba APIs", + "sectionDescription": "Descrição da seção", + "filter": "Filtrar", + "purgeLogsFailed": "Falha ao limpar os logs", + "latency": "Latência", + "testAllOAuth": "Testar todas as autenticações OAuth", + "mcpQuickStartStep3": "Etapa 3 do início rápido do MCP", + "repairEnvFailed": "Falha ao reparar o ambiente", + "zedImportHint": "Dica de importação do Zed", + "modelsAcrossEndpoints": "Modelos entre endpoints", + "autoDisableBannedAccounts": "Desativar automaticamente contas banidas", + "securityDesc": "Descrição da segurança", + "listModels": "Listar modelos", + "backupRestore": "Backup e restauração", + "target": "Destino", + "zedImportSuccess": "Importação do Zed realizada com sucesso", + "lastHeaderUpdate": "Última atualização do cabeçalho", + "categoryCore": "Categoria principal", + "noFallbackChains": "Nenhuma cadeia de fallback", + "noSearchProviders": "Nenhum provedor de pesquisa", + "autoBalance": "Balanceamento automático", + "noModelsYet": "Nenhum modelo ainda", + "signatureFamily": "Família de assinaturas", + "externalApiCalls": "Chamadas de API externas", + "providerOverridesDesc": "Descrição das substituições do provedor", + "signatureTool": "Ferramenta de assinatura", + "connectionFailed": "Falha na conexão", + "activeLimitersPlural": "Limitadores ativos (plural)", + "doneDesc": "Descrição de concluído", + "down": "Inativo", + "noDataYet": "Ainda não há dados", + "activeProviders": "Provedores ativos", + "nameInvalid": "Nome inválido", + "skip": "Pular", + "createChain": "Criar cadeia", + "audioSpeech": "Síntese de voz", + "cacheCleared": "Cache limpo", + "searchTypeNews": "Tipo de pesquisa: notícias", + "durationMillisecondsShort": "Duração em milissegundos (abreviada)", + "addOpenAICompatible": "Adicionar compatível com OpenAI", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "Na fila", + "domainPlaceholder": "Placeholder do domínio", + "durationMinutesShort": "Duração em minutos (abreviada)", + "verifyingConnection": "Verificando a conexão", + "imageProviders": "Provedores de imagens", + "protocolToolsLabel": "Rótulo das ferramentas de protocolo", + "queryPlaceholder": "Texto de exemplo da consulta", + "videoGeneration": "Geração de vídeos", + "timeRangeWeek": "Intervalo de tempo: semana", + "limitExhausted": "Limite esgotado", + "failedDisable": "Falha ao desativar", + "inMemoryNote": "Observação sobre armazenamento em memória", + "compatibleHint": "Dica de compatibilidade", + "errorShort": "Erro resumido", + "advancedHint": "Dica avançada", + "restoreFailed": "Falha ao restaurar", + "searchProvidersHeading": "Pesquisar provedores", + "comboName": "Nome da combinação", + "autoDisableDescription": "Descrição da desativação automática", + "embeddingsDesc": "Descrição dos embeddings", + "operational": "Operacional", + "testAllApiKey": "Testar todos os provedores de chave de API", + "backupCreated": "Backup criado", + "errorDuringImport": "Erro durante a importação", + "comboDefaultsGuideHint2": "Dica 2 do guia de padrões de combinação", + "connecting": "Conectando", + "fillModelAndProviders": "Preencha o modelo e os provedores", + "syncing": "Sincronizando", + "resetConfirm": "Confirmar redefinição", + "trackMetrics": "Acompanhar métricas", + "successful": "Bem-sucedido", + "recovering": "Recuperando", + "autoDisableThreshold": "Limite para desativação automática", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Sincronizando dados", + "cloudBenefitPorts": "Benefício da nuvem: portas", + "compatibleProviders": "Provedores compatíveis", "freeTierProviders": "Provedores de nível gratuito", "freeTierLabel": "Nível gratuito disponível", "freeTierProvidersDesc": "Provedores com níveis gratuitos – alguns exigem uma inscrição de chave de API, outros não precisam de nenhuma credencial.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", + "clearCache": "Limpar cache", + "reqs": "Requisições", + "addAnthropicCompatible": "Adicionar compatível com Anthropic", + "apiKeyProviders": "Provedores de chave de API", + "tabsAria": "ARIA das abas", + "resetting": "Redefinindo", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Motivo do backup antes da restauração", + "disableCloud": "Desativar nuvem", + "newProviderNameAria": "Nome do novo provedor Aria", + "passwordsMismatch": "As senhas não coincidem", + "a2aQuickStartStep3": "Etapa 3 do início rápido do A2A", + "liveMonitorDescriptionSuffix": "Sufixo da descrição do monitoramento em tempo real", + "failedAddProvider": "Falha ao adicionar provedor", + "addAtLeastOneProvider": "Adicione pelo menos um provedor", + "reasonSeparator": "Separador de motivos", + "zedImporting": "Importação do Zed", + "confirmPasswordPlaceholder": "Placeholder de confirmação de senha", + "whatYouGet": "O que você recebe", + "signatureSession": "Sessão de assinatura", + "errorCountNoCode": "Contagem de erros sem código", + "testing": "Testando", + "providersCommaSeparated": "Provedores separados por vírgulas", + "exportDatabase": "Exportar banco de dados", + "hitRate": "Taxa de acertos", + "completionsLegacy": "Conclusões legadas", + "removeModel": "Remover modelo", + "timeRangeDay": "Intervalo de tempo: dia", + "cloudRequestFailed": "Falha na solicitação à nuvem", + "updatedAt": "Atualizado em", + "monitoredProvidersHint": "Dica de provedores monitorados", + "connectionSuccessful": "Conexão bem-sucedida", + "latencyP50": "Latência P50", + "logsDeleted": "Logs excluídos", + "chatTester": "Testador de chat", + "safeSearchOff": "Pesquisa segura desativada", + "nameHint": "Dica de nome", + "debugToggle": "Alternância de depuração", "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "issuesLabel": "Rótulo de problemas", + "optionAny": "Opção: qualquer", + "maxNestingDepth": "Profundidade máxima de aninhamento", + "rerank": "Reclassificação", + "checking": "Verificando", + "getStarted": "Começar", + "restoreSuccess": "Restauração bem-sucedida", + "issuesDetected": "Problemas detectados", + "signatureCache": "Cache de assinaturas", + "modelLockouts": "Bloqueios de modelos", + "usingCloudProxy": "Usando o Cloud Proxy", + "loadingHealth": "Carregando integridade", + "providerOverrides": "Substituições de provedores", + "audioTranscriptionDesc": "Descrição da transcrição de áudio", + "learnedFromHeaders": "Aprendido com os cabeçalhos", + "totalRequests": "Total de solicitações", + "cloudUnstableNote": "Observação sobre instabilidade da nuvem", "gamificationAdmin": "Administrador de gamificação", "monitorAnomaliesAndHealth": "Monitore anomalias e a integridade do sistema", "flaggedAnomalies": "Anomalias sinalizadas", @@ -704,7 +704,7 @@ "apiKey": "Chave de API", "xpLastHour": "EXP (1h)", "zScore": "Pontuação Z", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Suspeito", "tokensCommunityServers": "Servidores da Comunidade", "tokensServerNamePlaceholder": "Nome do servidor", "tokensApiKeyPlaceholder": "Chave de API", @@ -752,7 +752,7 @@ "connected": "Conectado", "disconnected": "Desconectado", "pending": "Pendente", - "syncing": "Syncing", + "syncing": "Sincronizando", "error": "Erro" }, "tokensLastSync": "Última sincronização: {date}", @@ -795,8 +795,8 @@ "batchFilePurpose": { "batch": "Entrada de lote", "batch-output": "Saída de lote", - "fine-tune": "Fine-tuning", - "assistants": "Assistants" + "fine-tune": "Ajuste fino", + "assistants": "Assistentes" }, "batchPageLoadingMore": "Carregando mais…", "recommended": "Recomendado", @@ -831,7 +831,7 @@ "wizardStep2Input": "Entrada", "wizardStep3Validate": "Validar", "wizardStep4Cost": "Custo e criar", - "wizardProviderLabel": "Provider", + "wizardProviderLabel": "Provedor", "wizardEndpointLabel": "Endpoint", "wizardModelLabel": "Modelo", "wizardInputKindJsonl": "JSONL", @@ -895,8 +895,8 @@ "batchListProviderColumn": "Provedor", "batchListProviderUnknown": "—", "batchListProviderOther": "Outro", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", + "batchListTitle": "Lotes", + "batchListCount": "{count} lotes", "batchListRemovingCompleted": "Removendo…", "batchListRemoveCompleted": "Remover concluídos", "batchListTableStatus": "Status", @@ -987,13 +987,12 @@ }, "disabled": "Desabilitado", "featureFlagOmnirouteEmergencyFallbackDescription": "Roteie solicitações com orçamento esgotado para o provedor/modelo de fallback gratuito de emergência.", - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Desative a geração de variantes de nível de pensamento (por exemplo, -low, -medium, -high) no catálogo /v1/models.", "featureFlagArenaEloSyncEnabledDescription": "Ativar a sincronização periódica do ELO do leaderboard da Arena AI para classificações de inteligência do modelo.", "featureFlagUniversalContextHandoffEnabledDescription": "Gera e injeta resumos da conversa quando o roteamento de combo troca de modelo. Desative para tratar trocas de modelo de forma independente e evitar requisições de handoff em segundo plano para todos os combos existentes e futuros.", "featureFlagExposeCcDiscoveryAliasesDescription": "Divulgar ids espelho claude/<provider>/<model> em /v1/models para que a descoberta de modelos do gateway Claude Code liste modelos não-Claude. Atenção: duplica as entradas do catálogo para todos os clientes quando ativado globalmente.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Controle principal dos aliases de gateway no-think/<provider>/<model>. Ativado (padrão): /v1/models anuncia uma variante sem raciocínio para cada modelo Claude qualificado com capacidade de raciocínio, e um ID no-think/ enviado em uma solicitação é resolvido para o modelo real com o raciocínio suprimido. Desativado: nenhuma variante é anunciada, e um ID no-think/ é tratado como qualquer outro ID de modelo desconhecido. A configuração de ativação/desativação ModelSpec.noThinkingAlias por modelo continua válida enquanto esta opção estiver ativada.", "featureFlagChatVirtualLanesEnabledDescription": "Ative faixas de admissão virtuais adaptativas por tenant para o despacho de provedores (#9654): o pico de um tenant não gera mais 503 para outro. A variável de ambiente OMNIROUTE_CHAT_VIRTUAL_LANES tem precedência sobre esta configuração do painel; as alterações entram em vigor ao reiniciar o servidor.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Páginas de provedores no painel: exibe o selo Grátis apenas nos sinais que o provedor reconhece — descarta a heurística de nome de exibição, campos de gratuidade não booleanos e sufixos :free em provedores registrados sem uma modalidade gratuita documentada. Desativado mantém a regra histórica do selo.", "featureFlagProxySkipRecentlyFailedDescription": "Pools de proxy e a rotação por conta do opencode deixam de reutilizar um proxy que acabou de falhar (sonda TCP recusada, ou um 429 recebido por ele) por um período por processo que dobra a cada repetição, até um limite. Nenhum status de proxy é gravado; com todos os candidatos deixados de lado, a escolha não muda. Desligado por padrão: a ordem de seleção é exatamente a rotação simples.", "featureFlagProxyPoolEgressObservationDescription": "Mostra, abaixo de um pool de proxy no painel, quantos IPs de saída observados atenderam seus membros nas últimas 24 h, quantas conexões os usaram e o máximo visto atrás de um mesmo IP. Somente leitura, calculado a partir do log de proxy, nunca usado para roteamento. Desligado por padrão: o editor de pool não muda e a rota de observação responde null.", "featureFlagProxyHealthBlockedResetsStreakDescription": "Na varredura de saúde de proxy, permite que uma sonda recusada pelo destino (401/403/429: o proxy retransmitiu, o destino recusou este IP de saída) zere a sequência de falhas consecutivas do proxy, como uma sonda atendida. Desligado por padrão: a recusa continua neutra e mantém a sequência. Um 5xx continua inconclusivo em qualquer caso, e uma recusa nunca remove, desativa ou reativa um proxy.", @@ -1001,7 +1000,7 @@ "home": "Início", "dashboard": "Painel", "providers": "Provedores", - "combos": "Combos", + "combos": "Combinações", "usage": "Uso", "analytics": "Análises", "costs": "Custos", @@ -1012,8 +1011,8 @@ "media": "Mídia", "settings": "Configurações", "translator": "Tradutor", - "playground": "Playground", - "searchTools": "Search Tools", + "playground": "Área de testes", + "searchTools": "Ferramentas de pesquisa", "agents": "Agentes", "cloudAgents": "Agentes de nuvem", "memory": "Memória", @@ -1056,12 +1055,12 @@ "serverDisconnectedMsg": "O servidor proxy foi parado ou está reiniciando.", "expandSidebar": "Expandir barra lateral", "collapseSidebar": "Recolher barra lateral", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", + "themes": "Temas", + "presetColors": "Cores populares", + "createTheme": "Criar tema", + "chooseColor": "Escolha uma cor", "themeCoral": "Coral", - "themeBlue": "Blue", + "themeBlue": "Azul", "themeRed": "Vermelho", "themeGreen": "Verde", "themeViolet": "Violeta", @@ -1071,36 +1070,36 @@ "cache": "Cache", "cacheShort": "Cache", "batch": "Testes em Lote", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "themeSystem": "Sistema de temas", + "whitelabelingDesc": "Descrição da personalização de marca", + "switchThemes": "Alternar temas", + "themeAccentDesc": "Descrição da cor de destaque do tema", + "uploadFavicon": "Enviar favicon", + "themeDark": "Tema escuro", + "customLogoDesc": "Descrição do logotipo personalizado", + "sidebarVisibilityToggle": "Alternar visibilidade da barra lateral", + "themeAccent": "Cor de destaque do tema", + "resetFavicon": "Redefinir favicon", + "whitelabeling": "Personalização de marca", + "darkMode": "Modo escuro", + "uploadLogo": "Enviar logotipo", + "themeLight": "Tema claro", + "appName": "Nome do aplicativo", + "appNameDesc": "Descrição do nome do aplicativo", + "resetLogo": "Redefinir logotipo", + "customFavicon": "Favicon personalizado", + "hideHealthLogs": "Ocultar logs de integridade", + "customLogo": "Logotipo personalizado", + "appearance": "Aparência", + "themeSelectionAria": "ARIA de seleção de tema", + "themeCreate": "Criar tema", + "customFaviconDesc": "Descrição do favicon personalizado", + "logoPreview": "Pré-visualização do logotipo", + "themeCustom": "Tema personalizado", + "hideHealthLogsDesc": "Descrição de ocultar logs de integridade", + "faviconPreview": "Pré-visualização do favicon", + "changelog": "Registro de alterações", + "contextSection": "Contexto e cache", "contextCaveman": "Caveman", "contextRtk": "RTK", "contextCombos": "Combos de Engines", @@ -1108,7 +1107,7 @@ "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Configurações de compressão", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", @@ -1129,28 +1128,28 @@ "compressionStudioSubtitle": "Cascata de engines em tempo real", "compressionExclusionsSubtitle": "Bypass por modelo/endpoint", "chaosConfigSubtitle": "Execução paralela multi-modelo", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", + "routingSection": "Roteamento", + "protocolsSection": "Protocolos", + "agentsAiSection": "Agentes e IA", + "cacheContextSection": "Cache e Contexto", + "analyticsSection": "Análises", "costsSection": "Custos", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "monitoringSection": "Monitoramento", + "auditSecuritySection": "Auditoria e Segurança", + "devtoolsSection": "Ferramentas de Desenvolvimento", + "configurationSection": "Configuração", + "aiFeaturesSection": "Recursos de IA", "mcp": "MCP", "a2a": "A2A", "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "Endpoints da API", + "batchFiles": "Arquivos", + "analyticsEvals": "Avaliações", + "analyticsSearch": "Pesquisa", + "analyticsUtilization": "Utilização", + "analyticsComboHealth": "Integridade das Combinações", + "analyticsCompression": "Compressão", + "costsBudget": "Orçamento", "costsFreeTiers": "Orçamento do Plano Gratuito", "costsFreeTiersSubtitle": "Limites mensais de tokens gratuitos", "freeProviderRankings": "Classificações de Provedores Gratuitas", @@ -1158,46 +1157,46 @@ "radar": "Catálogo Radar", "radarSubtitle": "Catálogo de modelos gratuitos enriquecido pela comunidade", "costsQuotaShare": "Compartilhamento de Cota", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", + "costsPricing": "Preços", + "logsProxy": "Logs do Proxy", "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "logsActivity": "Atividade", + "auditMcp": "Auditoria MCP", "auditA2a": "Auditoria A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Aparência", + "settingsAi": "Configurações de IA", + "settingsSecurity": "Segurança", "settingsAccessTokens": "Tokens de Acesso", "settingsFeatureFlags": "Sinalizadores de recursos", "settingsCache": "Cache", "settingsAuthz": "Autorização", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsRouting": "Roteamento", + "settingsResilience": "Resiliência", "modelLockout": "Bloqueio de Modelo", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Avançado", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Cota do Provedor", + "providerQuota": "Cota do Provedor", + "runtime": "Tempo de Execução", + "consoleLogs": "Logs do Console", + "logsTimeline": "Linha do Tempo", "logsTimelineSubtitle": "Linha do tempo de solicitação visual", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Conversas", + "conversationsSubtitle": "Conversas agênticas com múltiplos turnos", + "globalRouting": "Roteamento Global", + "mitmProxy": "Proxy MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Recursos agênticos", + "otherFeaturesSection": "Outros recursos", + "compressionContextGroup": "Compressão de contexto", + "gamificationGroup": "Gamificação", + "toolsGroup": "Ferramentas", + "integrationsGroup": "Integrações", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", + "costsParametersGroup": "Parâmetros de custos", + "auditGroup": "Auditoria", + "batchGroup": "Lote", "homeSubtitle": "Visão geral do painel", "providersSubtitle": "Gerenciar provedores de IA", "quotaTrackerSubtitle": "Acompanhar limites de uso", @@ -1211,14 +1210,14 @@ "proxySubtitle": "Configurações do proxy HTTP", "mitmProxySubtitle": "Interceptação MITM", "oneProxySubtitle": "Gateway proxy público", - "leaderboard": "Leaderboard", - "profile": "Profile", + "leaderboard": "Classificação", + "profile": "Perfil", "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", + "gamificationAdmin": "Administração da gamificação", + "leaderboardSubtitle": "Classificações e conquistas", + "profileSubtitle": "Conta e preferências", + "tokensSubtitle": "Uso de tokens e orçamentos", + "gamificationAdminSubtitle": "Monitoramento de anomalias e sistema antitrapaça", "usageSubtitle": "Estatísticas de tráfego e uso", "analyticsComboHealthSubtitle": "Confiabilidade dos targets do combo", "analyticsUtilizationSubtitle": "Utilização de provedores", @@ -1262,8 +1261,8 @@ "settingsAccessTokensSubtitle": "Tokens de CLI com escopo para modo remoto", "settingsFeatureFlagsSubtitle": "Alternar recursos do sistema", "settingsCacheSubtitle": "Catálogo de modelos e cache de respostas", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Barra lateral", + "settingsSidebarSubtitle": "Personalizar o layout da barra lateral", "settingsAuthzSubtitle": "Inventário de rotas e política de bypass", "docsSubtitle": "Documentação", "issuesSubtitle": "Reportar um bug", @@ -1276,7 +1275,7 @@ "systemGroup": "Sistema", "costsOverview": "Visão geral", "costsOverviewSubtitle": "Análise consolidada de custos", - "agentBridge": "Agent Bridge", + "agentBridge": "Ponte de agentes", "agentBridgeSubtitle": "Interceptar tráfego de agentes IDE", "trafficInspector": "Inspector de Tráfego", "trafficInspectorSubtitle": "Inspecione o tráfego de requisições e respostas dos seus apps", @@ -1299,7 +1298,7 @@ "groupSeparatorLabel": "Separador", "discovery": "Descoberta", "discoverySubtitle": "Buscar acesso gratuito em provedores", - "conductor": "Conductor", + "conductor": "Orquestrador", "conductorSubtitle": "Frota de agentes CLI", "orchestration": "Orquestração", "orchestrationSubtitle": "Visão ao vivo de tudo em execução", @@ -1346,7 +1345,7 @@ "refresh": "Atualizar", "loading": "Carregando webhooks...", "never": "Nunca", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {nenhuma falha} one {# falha} other {# falhas}}", "testWebhook": "Enviar teste", "testSuccess": "Webhook de teste enviado com sucesso.", "testFailed": "O teste do webhook falhou.", @@ -1564,12 +1563,12 @@ "mcpMetricTopTool": "Ferramenta principal" }, "themesPage": { - "title": "Themes", + "title": "Temas", "description": "Escolha um tema predefinido ou crie o seu usando uma única cor", - "presetColors": "Popular colors", + "presetColors": "Cores populares", "customTheme": "Tema personalizado", "customThemeDesc": "Clique em criar tema e escolha uma cor", - "createTheme": "Create theme", + "createTheme": "Criar tema", "activePreset": "Tema ativo" }, "header": { @@ -1582,7 +1581,7 @@ "language": "Idioma", "providers": "Provedores", "providerDescription": "Gerencie suas conexões de provedores de IA", - "combos": "Combos", + "combos": "Combinações", "comboDescription": "Combos de modelos com fallback", "usage": "Uso e Análises", "usageDescription": "Monitore seu uso de API, consumo de tokens e logs de requisições", @@ -1595,60 +1594,60 @@ "endpoint": "Endpoints", "endpointDescription": "Gerenciar endpoints proxy, MCP, A2A e endpoints de API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Gerenciamento e ferramentas do servidor Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Tarefas e observabilidade do protocolo Agent-to-Agent", "settings": "Configurações", "settingsDescription": "Gerencie suas preferências", "openaiCompatible": "Compatível com OpenAI", "anthropicCompatible": "Compatível com Anthropic", "media": "Mídia", "mediaDescription": "Gerar imagens, vídeos e músicas", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", + "themes": "Temas", + "themesDescription": "Escolha um tema de cores para todo o painel", + "costsDescription": "Acompanhe gastos, analise tendências e gerencie seu orçamento de IA em todos os provedores", + "cacheDescription": "Monitore a eficiência do cache de prompts do provedor e a reutilização semântica local de respostas.", + "limitsDescription": "Configure limites de taxa e cotas por chave de API e provedor", "runtimeDescription": "Observabilidade de runtime — circuit breakers, cooldowns, lockouts de modelo, sessões e alertas de quota", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "apiManagerDescription": "Gerencie chaves de API e o controle de acesso da sua instância do OmniRoute", + "batchDescription": "Processe grandes volumes de solicitações de forma assíncrona com chamadas de API em lote", + "contextCavemanDescription": "Compactação de mensagens baseada em regras, pacotes de idiomas, análises e controles do modo de saída.", + "contextRtkDescription": "Compactação sensível a comandos para saídas de ferramentas, logs do terminal e resultados de compilação.", + "contextCombosDescription": "Defina como os mecanismos são combinados em diferentes cenários de roteamento.", + "changelogDescription": "Mantenha-se atualizado com os recursos e anúncios mais recentes da plataforma.", + "agentsDescription": "Gerencie e configure ferramentas de agentes de IA: Codex, Devin, Jules e agentes personalizados", + "cloudAgentsDescription": "Orquestre agentes de IA baseados na nuvem com acompanhamento de tarefas em tempo real e aprovação de planos", + "memoryDescription": "Memória conversacional persistente com busca semântica e indexação de texto completo FTS5", + "skillsDescription": "Instale e gerencie habilidades de sandbox para a execução automatizada de prompts e ferramentas", + "agentSkillsDescription": "Catálogo de habilidades pronto para agentes, com cópia de URL em um clique para integração com clientes de IA", + "translatorDescription": "Traduza e teste prompts entre formatos de API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Teste prompts de forma interativa com respostas de provedores em tempo real e inspeção de formato", + "searchToolsDescription": "Análises de pesquisa, detalhamento por provedor, taxas de acerto do cache e acompanhamento de custos", + "logsDescription": "Logs de solicitações em tempo real, rastreamentos de erros e inspetor de eventos de streaming", + "auditDescription": "Trilha de auditoria de conformidade do uso de chaves de API, chamadas de ferramentas MCP e eventos de políticas", + "webhooksDescription": "Configure endpoints de webhook para receber notificações de eventos em tempo real", + "healthDescription": "Visão geral da integridade do sistema: provedores, disjuntores, limites de taxa e banco de dados", + "proxyDescription": "Configure as definições de proxy upstream para conexões de saída com provedores", + "apiEndpointsDescription": "Gerencie configurações personalizadas de endpoints de API e substituições de roteamento", + "batchFilesDescription": "Navegue e gerencie arquivos de saída e resultados de trabalhos em lote", + "analyticsEvalsDescription": "Resultados de avaliações de modelos e benchmarks de desempenho", + "analyticsSearchDescription": "Análises de consultas de pesquisa, taxas de acerto do cache e acompanhamento de custos", + "analyticsUtilizationDescription": "Métricas de utilização de provedores e planejamento de capacidade", + "analyticsComboHealthDescription": "Integridade e desempenho em tempo real das configurações de roteamento combinado", + "analyticsCompressionDescription": "Análises de compactação de contexto e economia de tokens", + "costsBudgetDescription": "Limites de orçamento e alertas de gastos por chave de API e provedor", + "costsPricingDescription": "Configuração personalizada de preços para cálculos de custo de tokens", + "logsProxyDescription": "Logs de solicitações do proxy upstream e inspeção de tráfego", + "logsConsoleDescription": "Saída do console do aplicativo e logs de depuração", + "logsActivityDescription": "Trilha de auditoria das ações dos usuários e dos eventos do sistema", + "auditMcpDescription": "Trilha de auditoria de invocações de ferramentas MCP e registros de conformidade", "auditA2a": "Auditoria A2A", "auditA2aDescription": "Trilha de auditoria de execução de tarefas A2A, transições de estado e registros de invocação de habilidades", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Tema, identidade visual e personalização visual", + "settingsAiDescription": "Comportamentos de IA, orçamentos de raciocínio e configurações de visão e memória", "settingsCacheDescription": "TTL das entradas do cache de catálogo de modelos", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Configurações de autenticação, autorização e controle de acesso", "featureFlags": "Sinalizadores de recursos", "featureFlagsDescription": "Capacidades do sistema de controle e recursos experimentais", "featureFlagsActive": "{count} ativo", @@ -1672,11 +1671,11 @@ "featureFlagsNoResults": "Nenhuma sinalização corresponde à sua pesquisa", "featureFlagsSaved": "Bandeira atualizada", "featureFlagsError": "Falha ao atualizar sinalizador", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Regras de roteamento, aliases de modelos, padrões de combos e configurações de degradação", + "settingsResilienceDescription": "Configuração de circuit breaker, novas tentativas e fallback", + "settingsAdvancedDescription": "Regras avançadas de payload, limites de requisição e configurações da API de proxy", + "mitmProxyDescription": "Configure as definições do proxy MITM para inspeção e depuração de tráfego", + "oneProxyDescription": "Configure as definições do 1Proxy para encadeamento avançado de proxies", "omniSkillsDescription": "Instale e gerencie skills sandbox para execução automatizada de prompts e ferramentas" }, "cloudSyncStatus": { @@ -1693,93 +1692,93 @@ "breadcrumbs": { "ariaLabel": "Trilha de navegação", "dashboard": "Painel", - "providers": "Providers", - "combos": "Combos", + "providers": "Provedores", + "combos": "Combinações", "settings": "Configurações", "general": "Geral", - "appearance": "Appearance", - "ai": "AI Settings", - "routing": "Routing", - "resilience": "Resilience", - "advanced": "Advanced", + "appearance": "Aparência", + "ai": "Configurações de IA", + "routing": "Roteamento", + "resilience": "Resiliência", + "advanced": "Avançado", "accessTokens": "Tokens de Acesso", "featureFlags": "Sinalizadores de recursos", "logs": "Logs", "auditLog": "Log de Auditoria", "console": "Console", - "logger": "Logger", + "logger": "Registrador", "translator": "Tradutor", - "playground": "Playground", + "playground": "Área de testes", "add": "Adicionar", "edit": "Editar", "apiKeys": "Gerenciador API", "models": "Modelos", "cliCode": "CLI Code's", - "cliAgents": "CLI Agents", - "acpAgents": "ACP Agents", + "cliAgents": "Agentes CLI", + "acpAgents": "Agentes ACP", "endpoint": "Ponto final", "apiManager": "Gerenciador de API", "context": "Contexto", - "compression": "Compression", + "compression": "Compactação", "services": "Serviços", "analytics": "Análises", "costs": "Custos", "health": "Saúde", - "runtime": "Runtime", + "runtime": "Tempo de execução", "webhooks": "Webhooks", "home": "Início", - "activity": "Activity", + "activity": "Atividade", "agentSkills": "Habilidades do agente", - "comboHealth": "Combo Health", - "evals": "Evals", + "comboHealth": "Integridade dos combos", + "evals": "Avaliações", "search": "Pesquisar", - "utilization": "Utilization", - "apiEndpoints": "API Endpoints", - "audit": "Audit", + "utilization": "Utilização", + "apiEndpoints": "Endpoints da API", + "audit": "Auditoria", "a2a": "A2A", "mcp": "MCP", - "batch": "Batch", + "batch": "Lote", "files": "Arquivos", "media": "Mídia", "cache": "Cache", - "changelog": "Changelog", + "changelog": "Registro de alterações", "chaos": "Caos", "cloudAgents": "Agentes de nuvem", "live": "Ao vivo", "studio": "Studio", - "aggressive": "Aggressive", - "caveman": "Caveman", + "aggressive": "Agressivo", + "caveman": "Homem das cavernas", "ccr": "CCR", - "headroom": "Headroom", + "headroom": "Margem", "lite": "Lite", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", "rtk": "RTK", - "sessionDedup": "Session Dedup", + "sessionDedup": "Desduplicação de sessões", "ultra": "Ultra", - "budget": "Budget", - "pricing": "Pricing", + "budget": "Orçamento", + "pricing": "Preços", "quotaShare": "Compartilhamento de Cota", "discovery": "Descoberta", "freeProviderRankings": "Ranking de Provedores Gratuitos", "radar": "Radar", "setup": "Configuração", "freeTiers": "Níveis Gratuitos", - "gamification": "Gamification", - "leaderboard": "Leaderboard", + "gamification": "Gamificação", + "leaderboard": "Classificação", "limits": "Limites", - "profile": "Profile", + "profile": "Perfil", "plugins": "Plugins", "providerStats": "Estatísticas do Provedor", "new": "Novo", "quota": "Cota", - "relay": "Relay", - "searchTools": "Search Tools", - "security": "Security", - "sidebar": "Sidebar", + "relay": "Retransmissão", + "searchTools": "Ferramentas de pesquisa", + "security": "Segurança", + "sidebar": "Barra lateral", "tokens": "Tokens", "tools": "Ferramentas", - "agentBridge": "Agent Bridge", + "agentBridge": "Ponte de agentes", "trafficInspector": "Inspector de Tráfego", "usage": "Uso", "orchestration": "Orquestração" @@ -1817,7 +1816,7 @@ "topologyLegendError": "Erro", "oauthLabel": "OAuth", "apiKeyLabel": "Chave de API", - "requestsShort": "{count} reqs", + "requestsShort": "{count} solicitações", "providerModelsTitle": "{provider} - Modelos", "copiedModel": "Copiado: {model}", "aliasLabel": "alias", @@ -1909,7 +1908,7 @@ "diversityHealthy": "Distribuição Saudável", "diversityRiskHigh": "Alto Risco de Lock-in de Fornecedor", "diversityRiskModerate": "Distribuição Moderada", - "diversityScoreLabel": "score", + "diversityScoreLabel": "pontuação", "diversityHigherExplanation": "Valores mais altos significam que o tráfego está espalhado por múltiplos provedores.", "diversityNoData": "Nenhum dado de uso recente disponível.", "chartRequests": "Solicitações", @@ -1931,7 +1930,7 @@ "activitySummary": "{active} dias ativos · {tokens} tokens · {days} dias", "activityCellTitle": "{date}: {tokens} tokens", "activityLess": "Menos", - "activityMore": "More", + "activityMore": "Mais", "chartApiKeyBreakdown": "Detalhamento por Chave de API", "chartApiKey": "Chave de API", "mostActiveDay": "Dia Mais Ativo", @@ -1968,7 +1967,7 @@ "period7D": "7D", "period30D": "30D", "period90D": "90D", - "periodYTD": "YTD", + "periodYTD": "No ano", "periodAll": "Tudo", "totalTokens": "Total de Tokens", "inputTokens": "Tokens de Entrada", @@ -2006,8 +2005,8 @@ "modelStatusError": "Erro", "comboHealth": "Saúde do Combo", "comboHealthDescription": "Cota em nível de combo, distribuição de uso e métricas de desempenho", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Análise de compressão", + "compressionAnalyticsDescription": "Análise de compressão — economia de tokens, detalhamento por modo e estatísticas de provedores.", "autoRoutingTotalAutoRequests": "Total de solicitações automáticas", "autoRoutingAvgSelectionScore": "Pontuação média de seleção", "autoRoutingExplorationRate": "Taxa de Exploração", @@ -2047,9 +2046,9 @@ "comboHealthAutopilotDescription": "Recomendações priorizadas com base na saúde do combo, previsões, cotas e saúde do provedor.", "comboHealthIssues": "Problemas", "comboHealthActionable": "{count} acionáveis", - "comboHealthDown": "Down", + "comboHealthDown": "Indisponível", "comboHealthDegraded": "Degradado", - "comboHealthHealthy": "Healthy", + "comboHealthHealthy": "Saudável", "comboHealthNoActiveIssues": "Nenhum problema ativo de saúde do combo detectado para o intervalo selecionado.", "comboHealthScoringInspector": "Inspetor de pontuação inteligente", "comboHealthReadOnlyRecompute": "Recálculo somente leitura", @@ -2060,10 +2059,10 @@ "quota": "Cota", "health": "Saúde", "costInv": "Custo", - "latencyInv": "Latency", + "latencyInv": "Latência", "taskFit": "Adequação à tarefa", - "stability": "Stability", - "tierPriority": "Tier", + "stability": "Estabilidade", + "tierPriority": "Nível", "tierAffinity": "Adequação de nível", "specificityMatch": "Especificidade", "contextAffinity": "Contexto", @@ -2074,9 +2073,9 @@ "comboHealthIssueCount": "Problemas {count}", "comboHealthNoInspectableTargets": "Nenhum alvo inspecionável para este combo.", "comboHealthAutopilotState": { - "down": "Down", + "down": "Indisponível", "degraded": "Precisa de atenção", - "healthy": "Healthy" + "healthy": "Saudável" }, "comboHealthModelProviderCount": "{models} modelos em {providers} provedores", "comboHealthGiniCoefficient": "Coeficiente de Gini", @@ -2093,7 +2092,7 @@ "comboHealthPerformance": "Desempenho", "comboHealthPerformanceDescription": "Confiabilidade e throughput para o tráfego de combo roteado.", "comboHealthExecutionTargetsDescription": "Métricas de runtime por etapa e visibilidade de cota para alvos de combo estruturados.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} req.", "comboHealthQuotaScope": "Escopo da cota: {scope}", "comboHealthTrendValue": "Tendência: {trend}", "comboHealthFetchFailed": "Falha ao buscar dados de saúde do combo", @@ -2158,14 +2157,14 @@ "providerUtilizationAccountSplit": "Divisão por Conta", "providerUtilizationLoading": "Carregando dados de utilização…", "retrying": "Tentando novamente…", - "retry": "Retry", + "retry": "Tentar novamente", "providerUtilizationNoDataDescription": "Snapshots de cota do provedor aparecerão aqui após a coleta de dados de utilização.", "providerUtilizationStepConnect": "Conecte provedores via OAuth ou chaves de API em Provedores", "providerUtilizationStepEnable": "Ative o rastreamento de cota usando o provedor em um combo ou solicitação direta", "providerUtilizationStepAutomatic": "Os dados aparecerão automaticamente conforme os snapshots de cota forem coletados", "statusExhausted": "Esgotado", "statusLow": "Baixo", - "statusHealthy": "Healthy", + "statusHealthy": "Íntegro", "remainingQuota": "Cota restante", "routeTraceTitle": "Visualização de Rastreamento de Rota", "routeTraceDescription": "Inspecione o rastro de solicitação persistido: alvo selecionado, fatores de roteamento, evidências de fallback, replay da pontuação atual, latência, tokens e saúde do alvo.", @@ -2189,18 +2188,18 @@ "routeRuntimeScoreNow": "Pontuação de runtime agora", "routeWouldSelectNow": "Selecionaria agora", "routeNoRecomputeCandidates": "Nenhuma classificação de candidatos de combo pode ser recalculada para esta solicitação.", - "runtime": "Runtime", + "runtime": "Tempo de execução", "routeTopNow": "Principal agora", "routeFetchLogsFailed": "Falha ao buscar logs de solicitação", "routeExplainFailed": "Falha ao explicar a rota", - "direct": "direct", + "direct": "direto", "routeUnableToLoad": "Não foi possível carregar a explicação da rota", "routeNoRequestLogs": "Nenhum log de solicitação disponível", "routeNoRequestLogsDescription": "Envie tráfego pelo OmniRoute primeiro. As explicações de rota são geradas a partir de logs de chamada estruturados persistidos.", "routeDecisionSummary": "Resumo da decisão", "routeConfidence": "confiança {confidence}", "routeScore": "Pontuação da rota", - "latency": "Latency", + "latency": "Latência", "routeRecentSuccess": "Sucesso recente", "routeAvgTargetLatency": "Latência média do alvo", "routeSelectedTarget": "Alvo selecionado", @@ -2259,9 +2258,9 @@ "fullAccess": "Acesso Total", "keyManagement": "Gerenciamento de Chaves de API", "keyManagementDesc": "Crie e gerencie chaves de API para autenticar requisições ao seu endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Seu aplicativo envia solicitações ao OmniRoute por meio de uma chave de API", + "requestFlowYourApp": "Seu aplicativo", + "requestFlowApiKey": "Chave de API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Total de Chaves", "restricted": "Restrita", @@ -2276,7 +2275,7 @@ "usage": "Uso", "created": "Criado", "actions": "Ações", - "reqs": "reqs", + "reqs": "solicitações", "neverUsed": "Nunca usada", "deleteConfirm": "Excluir esta chave de API?", "usageTips": "Dicas de Uso", @@ -2305,7 +2304,7 @@ "endpointRestrictions": "Endpoints Permitidos", "allEndpointsAllowed": "Esta chave pode acessar todos os endpoints de API.", "endpointsRestricted": "Restrito a {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", + "autoResolve": "Resolução automática", "autoResolveDesc": "Resolve automaticamente nomes ambíguos de modelo para o provedor nativo desta API key.", "streamDefaultMode": "Compatibilidade Padrão de Stream", "streamDefaultModeDesc": "Controles omitiram as flags `stream` para esta chave. O modo JSON retorna respostas não streaming, a menos que o cliente solicite explicitamente SSE.", @@ -2354,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Falha ao atualizar permissões. Tente novamente.", "unknownProvider": "desconhecido", "copyMaskedKey": "Copiar chave mascarada", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "A chave completa fica disponível apenas no momento da criação — copie-a ao criar a chave pela primeira vez", "modelsCount": "{count, plural, one {# modelo} other {# modelos}}", "devicesCount": "{count, plural, one {# dispositivo} other {# dispositivos}}", "devicesTooltip": "{count, plural, one {# dispositivo distinto (IP/User-Agent) visto com esta chave (últimos 30 min)} other {# dispositivos distintos (IP/User-Agent) vistos com esta chave (últimos 30 min)}}", @@ -2383,8 +2382,8 @@ "allowedCombos": "Combos Permitidos", "allCombosAllowed": "Esta chave pode usar qualquer combo.", "restrictedComboCount": "Restrito a {count, plural, one {# combo} other {# combos}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# entrada armazenada não está} other {# entradas armazenadas não estão}} nesta lista de opções (por exemplo, regras de roteamento) e será mantida como salva.", + "preservedComboRuleHint": "Mantida como armazenada. Esta entrada não é uma opção da lista acima, portanto só pode ser alterada por meio da API.", "apiManagerCustomRateLimits": "Limites de taxas personalizadas", "apiManagerCustomRateLimitsDesc": "Substitua os limites padrão globais. Deixe em branco para usar os padrões.", "apiManagerRateLimitRequestsPlaceholder": "Solicitações", @@ -2419,7 +2418,7 @@ "quotaKeysSection": "Chaves de cota", "bypassProviderQuota": "Ignorar cortes de cota do provedor", "bypassProviderQuotaDescription": "Permite que esta chave ignore a política de corte do provedor/conta upstream durante o roteamento. As cotas em USD da chave de API ainda se aplicam.", - "quotaPill": "QUOTA", + "quotaPill": "COTA", "quotaModeOnly": "só-qtSd", "exclusiveLease": "Arrendamento exclusivo", "exclusiveLeaseNoticeTitle": "Arrendamento exclusivo", @@ -2473,7 +2472,7 @@ "tts": "Texto para Fala", "stt": "Fala para Texto", "webSearch": "Busca Web", - "webFetch": "Web Fetch", + "webFetch": "Busca na web", "video": "Vídeo", "music": "Música", "ocr": "OCR" @@ -2485,11 +2484,11 @@ "noConnections": "Nenhuma conexão ainda — adicione uma na página do provedor.", "loading": "Carregando...", "suggestedModels": "Modelos sugeridos pelo provedor", - "imageGeneration": "Image Generation", + "imageGeneration": "Geração de imagens", "imageToText": "Imagem para Texto", "imageToTextComingSoon": "O playground inline de Imagem-para-Texto estará disponível quando /api/v1/images/understanding for implementado.", "disabled": "Desativado", - "videoGeneration": "Video Generation", + "videoGeneration": "Geração de vídeos", "musicGeneration": "Geração Musical", "textToSpeech": "Texto para Fala", "transcription": "Transcrição", @@ -2543,77 +2542,77 @@ "openrouterSttDescription": "Os modelos de reconhecimento de fala do OpenRouter usam sua conexão OpenRouter configurada. Nenhuma credencial separada é necessária." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Consulta de pesquisa", + "searchResults": "Resultados da pesquisa", + "cachedResult": "Em cache", + "searchCost": "Custo", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Teste de pesquisa avançada com comparação de provedores", + "compareProviders": "Comparar provedores", + "rerankResults": "Reclassificar resultados", + "searchHistory": "Histórico de pesquisa", + "urlOverlap": "Sobreposição de URLs", + "noSearchProviders": "Nenhum provedor de pesquisa configurado. Adicione provedores em Configurações.", + "noRerankModels": "Nenhum modelo de reclassificação disponível", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Provedor", + "searchType": "Tipo de pesquisa", + "maxResults": "Máximo de resultados", + "filters": "Filtros", + "country": "País", + "language": "Idioma", + "timeRange": "Intervalo de tempo", + "includeDomains": "Incluir domínios", + "excludeDomains": "Excluir domínios", + "safeSearch": "Pesquisa segura", + "safeSearchOff": "Desativada", + "safeSearchModerate": "Moderada", + "safeSearchStrict": "Rigorosa", + "queryPlaceholder": "Digite a consulta de pesquisa...", + "providerAuto": "automático (mais barato)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "notícias", + "optionAny": "qualquer", + "timeRangeDay": "Último dia", + "timeRangeWeek": "Última semana", + "timeRangeMonth": "Último mês", + "timeRangeYear": "Último ano", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "A solicitação expirou ({seconds}s)", + "networkError": "Erro de rede", + "formatted": "Formatado", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "cache não encontrado", + "cacheHit": "cache encontrado", + "latency": "Latência", + "cost": "Custo", + "results": "Resultados", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Modelo de reclassificação", + "positionDelta": "Mudança de posição", + "emptyState": "Envie uma consulta de pesquisa para ver os resultados", "copy": "Copiar", "resetToDefault": "Redefinir para o padrão", "tabSearch": "Buscar", - "tabScrape": "Scrape", + "tabScrape": "Extrair", "tabCompare": "Comparar", "modalitiesGuide": "Guia de modalidades", "searchConceptTitle": "Busca", "searchConceptDesc": "Busca = retorna uma lista de resultados web (título, URL, snippet, score de relevância)", - "scrapeConceptTitle": "Scrape", + "scrapeConceptTitle": "Extrair", "scrapeConceptDesc": "Scrape = extrai o conteúdo completo de uma URL (markdown, texto ou HTML)", "compareConceptTitle": "Comparar", "compareConceptDesc": "Comparar = executa a mesma query em N providers lado a lado para comparar latência, custo e overlap de resultados", - "rerankConceptTitle": "Rerank", + "rerankConceptTitle": "Reclassificar", "rerankConceptDesc": "Rerank = reordena resultados via LLM para melhorar relevância baseada na query", "autoConceptTitle": "Auto (mais barato)", "autoConceptDesc": "Auto (mais barato) = escolhe automaticamente o provider mais barato disponível com credenciais configuradas", "providerCatalogTitle": "Catálogo de Provedores", "kindSearch": "Busca", - "kindFetch": "Fetch/Scrape", + "kindFetch": "Buscar/Extrair", "statusConfigured": "Configurado", "statusMissing": "Sem credencial", - "statusRateLimited": "Rate limited", + "statusRateLimited": "Limite de requisições atingido", "configureProvider": "Configurar em Provedores", "loadingProviders": "Carregando provedores…", "failedToLoadProviders": "Falha ao carregar provedores", @@ -2631,7 +2630,7 @@ "formatHtml": "HTML", "formatText": "Texto", "scrapePreview": "Visualização", - "scrapeRaw": "Raw", + "scrapeRaw": "Bruto", "scrapeContentTruncated": "(truncado, ver raw)", "scrapeMetadata": "Metadados", "scrapeProvider": "Provedor", @@ -2642,14 +2641,14 @@ "compareRunning": "Comparando…", "autoProvider": "Auto (mais barato)", "configuredStatus": "Configurado", - "rateLimitedStatus": "Rate limited", + "rateLimitedStatus": "Limite de requisições atingido", "noCredential": "Sem credencial", "searchTypeLabel": "Tipo", "rerankModelLabel": "Modelo de rerank", "noneOption": "Nenhum", "size": "Tamanho", "configurationPane": "Painel de configuração", - "configuration": "Configuration", + "configuration": "Configuração", "status": "Status", "compareProviderHint": "Selecione até 4 provedores na aba Comparar para compará-los lado a lado.", "history": "Histórico", @@ -2663,11 +2662,11 @@ "rawContent": "Conteúdo bruto — {size}", "closeRawModal": "Fechar modal de conteúdo bruto", "httpError": "Erro {status}", - "failed": "Failed", + "failed": "Falhou", "requestFailed": "Falha na requisição", - "embedding": "Embedding", + "embedding": "Incorporação", "embeddingSample": "Olá, mundo!", - "image": "Image", + "image": "Imagem", "imageSample": "Uma paisagem serena com montanhas ao pôr do sol", "music": "Música", "musicSample": "Piano de jazz animado com percussão leve", @@ -2682,7 +2681,7 @@ "ttsSample": "Olá, este é um teste de texto para fala.", "video": "Vídeo", "videoSample": "Um timelapse de nuvens sobre uma cadeia de montanhas", - "webFetch": "Web Fetch", + "webFetch": "Busca na Web", "webSearchSample": "O que é o gateway de IA OmniRoute?", "noActiveProviderDescription": "Nenhum provedor de pesquisa ativo. Configure um em Provedores.", "configureProviders": "Configurar provedores", @@ -2708,8 +2707,8 @@ "classifierCompatCycle": "Ciclo: desligado → automático → sempre", "classifierCompatLoadFailed": "Falha ao carregar configuração", "classifierCompatMode": { - "off": "Off", - "auto": "Auto", + "off": "Desativado", + "auto": "Automático", "always": "Sempre" }, "ccDiscoveryInfoButton": "Como habilitar a descoberta no Claude Code", @@ -2744,7 +2743,7 @@ "effortExtraHigh": "Extra alto", "effortMax": "Máximo", "effortUltra": "Ultra", - "wireApi": "Wire API", + "wireApi": "API Wire", "modelAliases": "Aliases de modelo", "addModel": "Adicionar modelo", "routeModelPlaceholder": "Rotear {model} para...", @@ -2783,7 +2782,7 @@ "cliRuntimeNotDetected": "Runtime de CLI não detectado", "binary": "Binário", "configPath": "Caminho de config", - "configPathShort": "Config", + "configPathShort": "Configuração", "failedCheckRuntimeStatus": "Falha ao verificar status de runtime.", "copy": "Copiar", "copied": "Copiado", @@ -2811,7 +2810,7 @@ "low": "Baixo", "medium": "Médio", "high": "Alto", - "xhigh": "XHigh" + "xhigh": "Muito alta" }, "howItWorks": "Como funciona:", "antigravityHowWorksDesc": "O Antigravity envia requisições para o endpoint do Google. O MITM intercepta e redireciona para o OmniRoute.", @@ -2819,11 +2818,11 @@ "antigravityStep2Prefix": "2. Adicione", "antigravityStep2Suffix": "ao arquivo hosts como 127.0.0.1.", "antigravityStep3": "3. Abra o Antigravity e as requisições serão proxyadas.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "O {toolName} envia solicitações ao endpoint do provedor. O MITM as intercepta e redireciona para o OmniRoute.", + "mitmStep1": "1. Inicie o MITM para rotear as solicitações pelo OmniRoute.", + "mitmStep2Prefix": "2. Adicione", + "mitmStep2Suffix": "ao seu arquivo hosts como 127.0.0.1.", + "mitmStep3": "3. Abra o {toolName} e as solicitações serão encaminhadas por proxy.", "sudoPasswordRequiredTitle": "Senha sudo necessária", "sudoPasswordHint": "A senha de administrador é necessária para modificar hosts e configurações de proxy do sistema.", "enterSudoPassword": "Digite a senha sudo", @@ -2857,7 +2856,7 @@ "apply": "Aplicar", "reset": "Resetar", "manualConfig": "Configuração manual", - "backups": "Backups", + "backups": "Cópias de segurança", "configBackups": "Backups de configuração", "noBackupsYet": "Ainda não há backups. Backups são criados automaticamente antes de cada Aplicar ou Resetar.", "restore": "Restaurar", @@ -2909,7 +2908,7 @@ "continue": "Use ao executar Continue em IDEs e você precisar de uma configuração de provedor portátil baseada em JSON.", "opencode": "Use quando preferir execuções de agentes nativos de terminal e automação com script via OpenCode.", "kiro": "Use ao integrar o Kiro e controlar o roteamento do modelo centralmente no OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Use quando quiser um IDE com foco em IA e modelos Codeium/Windsurf roteados pelo OmniRoute.", "antigravity": "Use quando o tráfego Antigravity/Kiro deve ser interceptado através do MITM e roteado para OmniRoute.", "copilot": "Use quando desejar UX no estilo de bate-papo do Copilot enquanto impõe chaves OmniRoute e regras de roteamento.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2929,7 +2928,7 @@ "qwen": "CLI Alibaba Qwen Code", "cursor": "Editor de código com IA Cursor", "continue": "Assistente de IA Continue", - "opencode": "OpenCode AI coding agent (Terminal)", + "opencode": "Agente de programação OpenCode AI (Terminal)", "kiro": "Amazon Kiro — IDE com IA", "windsurf": "Windsurf — Editor de Código com IA", "copilot": "GitHub Copilot — Assistente de IA", @@ -3010,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Instalar o OpenCode", + "desc": "Instale via npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Chave da API" }, "3": { - "title": "Set Base URL", + "title": "Definir URL base", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Selecionar modelo" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Usar variante de raciocínio", + "desc": "Para modelos de raciocínio, execute com --variant high/low/max (comando de exemplo abaixo)." } }, "notes": { @@ -3036,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Abrir as configurações do Kiro", + "desc": "Acesse Configurações → Provedor de IA" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "URL base", + "desc": "Cole a URL do endpoint do OmniRoute" }, "3": { - "title": "API Key" + "title": "Chave da API" }, "4": { - "title": "Select Model" + "title": "Selecionar modelo" } }, "notes": { @@ -3057,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Abrir configurações de IA", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Adicionar provedor personalizado", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "URL base", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Chave da API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Selecionar modelo", + "desc": "Escolha um modelo na lista suspensa" } } } @@ -3084,7 +3083,7 @@ "allToolsTab": "Todas as ferramentas", "guidedClientsTab": "Clientes guiados", "mitmClientsTab": "Clientes MITM", - "customCliTab": "Custom CLI", + "customCliTab": "CLI personalizada", "toolCategories": "Categorias de Ferramentas", "visibleToolsCount": "{count} ferramentas visíveis", "customCliBuilderTitle": "Construtor CLI compatível com OpenAI", @@ -3105,7 +3104,7 @@ "customCliEndpointHint": "Aponte qualquer cliente compatível com OpenAI para a URL base OmniRoute /v1. O endpoint bruto de conclusões do chat é {endpoint}. Use o bloco JSON quando a ferramenta desejar um objeto provedor ou o script env quando ler variáveis ​​OPENAI_*.", "customCliEnvBlockTitle": "Fragmento de ambiente/shell", "customCliJsonBlockTitle": "Bloco JSON do provedor", - "networkError": "Network error", + "networkError": "Erro de rede", "other": "Outro", "preview": "Visualização", "refreshAll": "Atualizar tudo", @@ -3115,7 +3114,7 @@ "hermesRoleDelegationDesc": "Modelo orquestrador e de subagentes", "hermesRoleVision": "Visão", "hermesRoleVisionDesc": "Compreensão de imagens e capturas de tela", - "hermesRoleCompression": "Compression", + "hermesRoleCompression": "Compactação", "hermesRoleCompressionDesc": "Compressão e resumo de prompt", "hermesRoleWebExtract": "Extração Web", "hermesRoleWebExtractDesc": "Extração de conteúdo de páginas web", @@ -3141,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Julgamento da conclusão de objetivos", "hermesRoleCurator": "Curador", "hermesRoleCuratorDesc": "Curadoria de habilidades e memória", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Monitorar", "hermesRoleMonitorDesc": "Monitoramento em segundo plano", "hermesRoleBackgroundReview": "Revisão em Segundo Plano", "hermesRoleBackgroundReviewDesc": "Revisão de código em segundo plano", @@ -3204,7 +3203,7 @@ "cliproxyapiVersion": "Versão" }, "combos": { - "title": "Combos", + "title": "Combinações", "description": "Crie combos de modelos com roteamento ponderado e suporte a fallback", "autoCatalogTitle": "Catálogo de roteamento automático", "autoCatalogTemplateCount": "{count} modelos", @@ -3220,10 +3219,10 @@ "addModelToCombo": "Adicionar Modelo ao Combo", "routingStrategy": "Estratégia de Roteamento", "maxRetries": "Máximo de Tentativas", - "timeout": "Timeout (ms)", + "timeout": "Tempo limite (ms)", "healthcheck": "Verificação de Saúde", "priority": "Prioridade", - "fallback": "Fallback", + "fallback": "Alternativa", "roundRobin": "Round Robin", "random": "Aleatório", "leastLatency": "Menor Latência", @@ -3246,7 +3245,7 @@ "testResults": "Resultados do Teste — {name}", "resolvedBy": "Resolvido por:", "more": "+{count} mais", - "reqs": "reqs", + "reqs": "solicitações", "success": "sucesso", "proxyConfigured": "Proxy configurado", "copyComboName": "Copiar nome do combo", @@ -3261,12 +3260,12 @@ "priorityDesc": "Fallback sequencial: tenta modelo 1 primeiro, depois 2, etc.", "weightedDesc": "Distribui tráfego por porcentagem de peso com fallback", "roundRobinDesc": "Distribuição circular: cada requisição vai para o próximo modelo na rotação", - "contextRelay": "Context Relay", + "contextRelay": "Retransmissão de contexto", "contextRelayDesc": "Preserva a continuidade da sessão com resumos de handoff quando as contas giram", "randomDesc": "Seleção aleatória uniforme, depois fallback para modelos restantes", "leastUsedDesc": "Escolhe o modelo com menos requisições, equilibrando carga ao longo do tempo", "costOptimizedDesc": "Roteia para o modelo mais barato primeiro baseado em preços", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Encaminha consistentemente cada prefixo de prompt reutilizável para a mesma conta do provedor", "resetAware": "RR com reconhecimento de redefinição", "resetAwareDesc": "Equilibra a cota restante com redefinições de 5h e semanais e, em seguida, faz um round-robin de pontuações semelhantes", "quotaWeighted": "Ponderado por cota", @@ -3317,7 +3316,7 @@ "liveTargetCount": "{count, plural, one {# alvo} other {# alvos}}", "liveSingle": "Solteiro", "liveFleet": "Frota", - "playgroundStatusAvailable": "Available", + "playgroundStatusAvailable": "Disponível", "playgroundStatusNoQuota": "Sem Cota", "playgroundStatusDegraded": "Degradado", "playgroundStatusError": "Erro", @@ -3325,7 +3324,7 @@ "playgroundNetworkError": "Erro de rede durante a simulação", "playgroundTitle": "Playground de Combo", "playgroundDescription": "Simule como as solicitações serão roteadas pelos seus combos", - "playgroundConfiguration": "Configuration", + "playgroundConfiguration": "Configuração", "playgroundNoCombosConfigured": "Nenhum combo configurado", "active": "ativo", "inactive": "inativo", @@ -3333,10 +3332,10 @@ "playgroundSimulating": "Simulando...", "playgroundSimulateRoute": "Simular Rota", "playgroundRoutingPath": "Caminho de Roteamento", - "playgroundStrategy": "Strategy", + "playgroundStrategy": "Estratégia", "playgroundEstimatedCost": "Custo Est.", "playgroundEstimatedLatency": "Latência Estimada", - "playgroundFallback": "fallback", + "playgroundFallback": "alternativa", "playgroundWeight": "peso {value}", "playgroundWarningCount": "Avisos ({count})", "playgroundErrorCount": "Erros ({count})", @@ -3392,14 +3391,14 @@ "example": "Múltiplas contas do mesmo modelo para distribuir uso de forma equilibrada." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Use quando quiser uma seleção de baixa latência usando o algoritmo Power-of-Two-Choices.", + "avoid": "Evite para combos pequenos com 2 modelos ou menos — não há vantagem em relação ao round-robin.", + "example": "Exemplo: inferência de alto volume em 4 ou mais endpoints de modelos equivalentes." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Use quando sessões longas precisarem sobreviver à alternância de contas sem perder o contexto de trabalho.", + "avoid": "Evite quando a troca de contas for rara ou quando não quiser solicitações adicionais de sumarização.", + "example": "Exemplo: sessões do Codex que alternam entre várias contas próximas de esgotar a cota." }, "fill-first": { "when": "Use quando quiser esgotar totalmente a cota de um provedor antes de passar para o próximo.", @@ -3460,12 +3459,12 @@ "warningRoundRobinSingleModel": "Round-robin é mais útil com pelo menos 2 modelos.", "warningCostOptimizedPartialPricing": "Apenas {priced} de {total} modelos têm preço. O roteamento pode ficar parcialmente orientado a custo.", "warningCostOptimizedNoPricing": "Não há dados de preço para este combo. Custo-otimizado pode rotear de forma inesperada.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterAll": "Todos", + "filterIntelligent": "Inteligente", + "filterDeterministic": "Determinístico", + "filterEmptyTitle": "Nenhum combo corresponde a este filtro de estratégia.", + "filterEmptyIntelligentDescription": "Crie um combo automático ou LKGP para preencher o painel de roteamento inteligente.", + "filterEmptyDeterministicDescription": "No momento, existem apenas combos automáticos e LKGP. Volte para Todos ou crie um combo determinístico.", "readinessTitle": "Pronto para salvar?", "readinessDescription": "Revise a lista de verificação antes de criar ou atualizar este combo.", "readinessCheckName": "O nome do combo é válido", @@ -3479,12 +3478,12 @@ "saveBlockModels": "Adicione pelo menos um modelo.", "saveBlockWeighted": "Ajuste os pesos para 100% (atual: {total}%).", "saveBlockPricing": "Adicione preço para pelo menos um modelo ou escolha outra estratégia.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Configuração recomendada", + "applyRecommendations": "Aplicar recomendações", + "recommendationsUpdated": "Recomendações atualizadas para {strategy}.", + "recommendationsApplied": "Recomendações aplicadas a este combo.", + "intelligentPanelTitle": "Painel de roteamento inteligente", + "intelligentPanelDesc": "Pontuação em tempo real e status de integridade deste combo de roteamento automático.", "configOnlyStatus": "Visualização de Configuração", "configOnlyHint": "Este painel mostra apenas as entradas de roteamento. O estado em tempo real do disjuntor está disponível na página de Saúde.", "routingInputs": "Entradas de Roteamento", @@ -3506,47 +3505,47 @@ "manualModelUnknownProvider": "Prefixo de provedor desconhecido.", "builderDynamicAccountShort": "Conta dinâmica", "builderNeedValidName": "Defina um nome de combo válido antes de continuar.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Visão geral do status", + "normalOperation": "Operação normal", + "allProvidersHealthy": "Os provedores estão relatando condições de roteamento normais.", + "incidentMode": "Modo de incidente", + "highCircuitBreakerRate": "Foi detectada uma alta taxa de acionamento do disjuntor.", + "activeModePack": "Pacote de modo ativo", + "modePackUpdated": "Pacote de modo atualizado para {pack}.", + "modePackHint": "Alterne entre predefinições para ajustar o mecanismo de roteamento sem recriar o combo.", + "providerScores": "Pontuações dos provedores", + "allProvidersEvaluated": "Nenhum conjunto de candidatos configurado. Todos os provedores ativos são avaliados em tempo de execução.", + "excludedProviders": "Provedores excluídos", + "excludedProvidersHint": "Provedores com um disjuntor de circuito ABERTO são temporariamente excluídos do roteamento.", + "noExcludedProviders": "Nenhum provedor está excluído no momento.", + "cooldownMinutes": "Tempo de espera: {minutes} min", + "builderIntelligentTitle": "Configuração de roteamento inteligente", + "builderIntelligentDesc": "Configure o mecanismo de pontuação multifatorial para esta combinação de roteamento automático.", + "candidatePoolLabel": "Conjunto de candidatos", + "candidatePoolHint": "Selecione quais provedores este mecanismo deve avaliar. Deixe vazio para usar todos os provedores ativos.", + "candidatePoolEmpty": "Ainda não há provedores ativos disponíveis.", + "candidatePoolAllProviders": "Todos os provedores", + "modePackLabel": "Pacote de modos", + "routerStrategyLabel": "Estratégia do roteador", + "strategyRules": "Regras (pontuação de 6 fatores)", + "explorationRateLabel": "Taxa de exploração", + "explorationRateHint": "{percent}% das solicitações podem explorar provedores não ideais.", + "budgetCapLabel": "Limite de orçamento (USD/solicitação)", + "budgetCapPlaceholder": "Sem limite", + "advancedWeightsTitle": "Avançado: pesos de pontuação", "nestedComboFlatten": "Achatar combos aninhados", "nestedComboExecute": "Executar combos aninhados como alvos", "effectiveRoutingShare": "Participação efetiva no roteamento (peso ÷ total)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Cota", + "weightHealth": "Integridade", + "weightCostInv": "Custo", + "weightLatencyInv": "Latência", + "weightTaskFit": "Adequação à tarefa", + "weightStability": "Estabilidade", + "weightTierPriority": "Categoria", + "weightCacheAffinity": "Afinidade de acerto no cache", "weightSessionAvailability": "Disponibilidade da Sessão", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Configuração de roteamento inteligente", "strategyRecommendations": { "priority": { "title": "Fail-safe básico", @@ -3647,86 +3646,86 @@ "title": "Poder de Duas Escolhas" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Stack gratuito ($0)", + "templateFreeStackDesc": "Distribuição round-robin entre todos os provedores gratuitos: Kiro (Claude), Qoder (5 modelos), Qwen (4 modelos). Custo zero, nunca para de programar.", "auto": "Auto Combo", "autoDesc": "Pool de roteamento inteligente (Otimizado)", "lkgp": "Modo LKGP", "lkgpDesc": "Último Provedor Bom Conhecido (Resiliência previsível)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Primeiros passos com combinações", + "wizardGuideDesc": "Crie combinações de modelos para rotear o tráfego de IA de forma inteligente", + "wizardGuideHint": "ou clique em + Criar combinação acima", + "createFirstCombo": "Crie sua primeira combinação", + "wizardStep1Title": "Dê um nome à sua combinação", + "wizardStep1Desc": "Dê à sua combinação um nome exclusivo para identificá-la nas regras de roteamento", + "wizardStep2Title": "Adicionar modelos", + "wizardStep2Desc": "Selecione modelos de IA e organize a ordem de prioridade de fallback", + "wizardStep3Title": "Escolha a estratégia", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Revisar e salvar", + "wizardStep4Desc": "Revise sua configuração e ative a combinação", + "usageGuideInvokeTitle": "Como chamar este combo", + "usageGuideInvokeDesc": "Envie o nome exato do combo como o modelo, por exemplo, model: \"my-combo\" (ou combo/my-combo).", + "usageGuideInvokeAutoNote": "auto e auto/* são um roteador separado com configuração zero que não usa seus combos (a menos que um combo tenha literalmente o nome auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto é um produto pago real da OpenRouter (Auto Best Available), não um alias do OmniRoute — exclua-o em Configurações → Roteamento → Ocultar modelos pagos.", + "emailVisibilityStateOn": "Ativado", + "emailVisibilityStateOff": "Desativado", + "reorderHandle": "Arraste para reordenar", + "failedReorder": "Falha ao reordenar os modelos", + "builderFlowTitle": "Fluxo do Criador de Combos", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Informações básicas", + "description": "Nome e modelo inicial" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Etapas", + "description": "Seleção de provedor, modelo e conta" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Estratégia", + "description": "Comportamento de roteamento e configurações avançadas" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Roteamento Inteligente", + "description": "Conjunto de candidatos, predefinições e pontuação do roteamento automático" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Revisão", + "description": "Validação final antes de salvar" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Etapa concluída", + "builderStageCurrent": "Etapa atual", + "builderStagePending": "Pendente", + "builderStageLocked": "Bloqueado — conclua primeiro a etapa anterior", + "builderTitle": "Criar um Combo", + "builderBrowseCatalog": "Explorar catálogo", + "builderProvider": "Provedor", + "builderLoadingProviders": "Carregando provedores...", + "builderSelectProvider": "Selecionar provedor", + "builderModel": "Modelo", + "builderSelectModel": "Selecionar modelo", + "builderProviderFirst": "Selecione primeiro o provedor", + "builderAccount": "Conta", + "builderPreview": "Pré-visualização", + "builderAddStep": "Adicionar etapa", "builderDuplicateExact": "Esta etapa exata de provedor/modelo/conta já está no combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Referência do Combo", + "builderAddComboRef": "Adicionar referência de combo", + "builderComboRefStep": "Adicionar referência de combo", + "builderPinnedAccount": "Conta Fixada", + "builderLegacyEntry": "Entrada legada", + "reviewName": "Nome", + "reviewStrategy": "Estratégia", + "reviewSteps": "Etapas", + "reviewAccounts": "Contas", + "reviewProviders": "Provedores", + "reviewComboRefs": "Referências de combos", + "reviewAdvanced": "Configurações avançadas", + "reviewAgentFlags": "Sinalizadores do agente", + "reviewSequence": "Sequência de modelos", + "reviewNoSteps": "Nenhuma etapa configurada", "builderStagesDescription": "Conclua cada etapa para definir combos, construir etapas, selecionar estratégia de roteamento e revisar resultados.", "builderStepsDescription": "Crie cada etapa do combo em ordem: provedor, modelo e conta. Isso permite reutilizar o mesmo provedor e modelo em contas diferentes.", "selectProvider": "Selecione o provedor", @@ -3781,7 +3780,7 @@ "errorDescription": "Não conseguimos carregar os dados do combo no momento. Verifique sua conexão e tente novamente.", "errorId": "ID de Erro: {id}", "errorRetry": "Tente Novamente", - "comboLabel": "Combo", + "comboLabel": "Combinação", "duplicateAutoComboConfirm": "Criar uma combinação estática de \"{name}\"?", "duplicateAutoComboSnapshotMsg": "Isso irá capturar os provedores/modelos atualmente conectados que correspondem a este modelo em uma combinação editável.", "duplicateAutoComboFailedPrefix": "Falha ao duplicar a combinação automática:", @@ -3801,13 +3800,13 @@ "range7d": "7D", "range30d": "30D", "range90d": "90D", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 dias", + "range365d": "365 dias", "rangeAll": "Tudo", "spend30d": "Gasto 30D", "activeModels": "Modelos Ativos", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", + "flatRateEstimateNotice": "Inclui estimativas de preço por token para assinaturas de valor fixo, não o custo cobrado.", + "flatRateEstimateForecast": "A projeção inclui estimativas de valor fixo.", "selectedWindow": "Janela Selecionada", "activeProviders": "Provedores Ativos", "overviewTitle": "Visão Geral de Custos", @@ -3864,7 +3863,7 @@ "groupAccount": "Conta", "groupServiceTier": "Nível de serviço", "serviceTierFast": "Rápido", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Flexível", "serviceTierStandard": "Padrão", "serviceTierBreakdownTitle": "Nível de Serviço", "serviceTierBreakdownSubtitle": "Divisão Rápido / Flex / Padrão", @@ -3913,22 +3912,22 @@ "audioTranscriptionDesc": "Transcrever arquivos de áudio para texto (Whisper)", "textToSpeech": "Texto para Fala", "textToSpeechDesc": "Converter texto em fala natural", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Geração de música", + "musicDesc": "Gere músicas e faixas de áudio via ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderações", "moderationsDesc": "Moderação de conteúdo e classificação de segurança", "responsesDesc": "API Responses do OpenAI para Codex e fluxos de trabalho agênticos avançados", "listModelsDesc": "Listar todos os modelos disponíveis em todos os provedores conectados", "settingsApiDesc": "Ler e modificar a configuração do OmniRoute via API", - "settingsApi": "Settings API", + "settingsApi": "API de configurações", "categoryCore": "APIs Principais", "categoryMedia": "Mídia e Multi-Modal", - "categorySearch": "Search & Discovery", + "categorySearch": "Pesquisa e descoberta", "categoryUtility": "Utilidades e Gerenciamento", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Pesquisa na web", + "webSearchDesc": "Pesquisa unificada na web em vários provedores, com failover automático e cache", + "searchProvider": "Provedor de pesquisa", + "searchProviderDesc": "Este provedor é usado para pesquisas na web via POST /v1/search. Nenhuma configuração de modelo é necessária — os provedores de pesquisa ficam prontos para uso assim que uma chave de API é conectada.", "enableCloudTitle": "Ativar Proxy na Nuvem", "whatYouGet": "O que você terá", "cloudBenefitAccess": "Acesse sua API de qualquer lugar do mundo", @@ -3964,28 +3963,28 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Ativar túnel", + "cloudflaredInstallAndEnable": "Instalar e ativar", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Em execução", + "cloudflaredStarting": "Iniciando", + "cloudflaredStoppedState": "Parado", + "cloudflaredNotInstalled": "Não instalado", + "cloudflaredUnsupported": "Não compatível", + "cloudflaredError": "Erro", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Último erro: {error}", "providerModelsTitle": "{provider} — Modelos", "noModelsForProvider": "Nenhum modelo disponível para este provedor.", "chat": "Chat", "embedding": "Embedding", "image": "Imagem", - "custom": "custom", + "custom": "personalizado", "modelsCount": "{count, plural, one {# modelo} other {# modelos}}", "sectionTitle": "Superfície de Integração", "sectionDescription": "APIs compatíveis com OpenAI e endpoints operacionais de protocolos", @@ -4013,8 +4012,8 @@ "a2aQuickStartStep1": "Descubra o agent card em `/.well-known/agent.json`.", "a2aQuickStartStep2": "Envie requisições JSON-RPC para `POST /a2a` usando `message/send` ou `message/stream`.", "a2aQuickStartStep3": "Acompanhe e controle tarefas com `tasks/get` e `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "completionsLegacy": "Completions (legado)", + "completionsLegacyDesc": "Completions de texto legadas da OpenAI — aceita tanto uma string de prompt quanto o formato de array de mensagens", "messagesApi": "Mensagens", "messagesApiDesc": "Formato API de mensagens antrópicas nativas para provedores compatíveis com Claude", "imageEdits": "Edições de imagem", @@ -4025,7 +4024,7 @@ "filesApiDesc": "Carregar e gerenciar arquivos para processamento em lote", "videoGeneration": "Geração de Vídeo", "videoDesc": "Gerar vídeos via ComfyUI, Stable Diffusion WebUI e provedores compatíveis", - "tailscaleRequestFailed": "Failed to load Tailscale status", + "tailscaleRequestFailed": "Falha ao carregar o status do Tailscale", "tailscaleEnableFailed": "Falha ao habilitar o Tailscale Funnel", "tailscaleWaitingForLogin": "Conclua o login do Tailscale na aba aberta do navegador. O OmniRoute tentará novamente de forma automática.", "tailscaleLoginTimedOut": "Tempo limite expirado aguardando o login do Tailscale", @@ -4052,11 +4051,11 @@ "tailscaleNeedsLoginHint": "Autentique esta máquina com o Tailscale, depois habilite o Funnel.", "tailscaleBinaryPath": "Binário: {path}", "tailscaleLastError": "Último erro: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleInstallTitle": "Instalar Tailscale", + "tailscaleInstallIntro": "Instala o Tailscale nesta máquina e prepara o OmniRoute para habilitar o Funnel.", + "tailscaleInstallPasswordHint": "No macOS e no Linux, o sudo pode ser necessário para instalar o pacote e iniciar o daemon.", + "tailscaleSudoPlaceholder": "Senha sudo opcional", + "tailscaleInstalling": "Instalando", "tailscaleSudoLabel": "Senha Sudo (obrigatória em macOS/Linux)", "ngrokTitle": "Túnel ngrok", "ngrokRunning": "Rodando", @@ -4087,7 +4086,7 @@ "activeLocal": "Local", "activeCloud": "Nuvem", "copyUrlTitle": "Copiar {url}", - "statusRunning": "Running", + "statusRunning": "Em execução", "tunnels": "Túneis", "activeTunnelCount": "{active} / {total} ativos", "badgeLocal": "LOCAL", @@ -4128,12 +4127,12 @@ "vscodeAliasDescriptionError": "Mostrando URLs com placeholder porque as chaves de CLI não puderam ser carregadas nesta sessão.", "vscodeAliasDescriptionLoading": "Carregando chaves de CLI. As URLs com placeholder serão mostradas até que uma chave esteja disponível.", "vscodeAliasDescriptionPlaceholder": "Mostrando URLs com placeholder. Crie ou ative uma chave de API em CLI Tools para substituir TOKEN.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "Ferramentas de CLI", "vscodeAliasBaseLabel": "Base do VS Code", "vscodeAliasModelsLabel": "Modelos do VS Code", "vscodeAliasChatLabel": "Chat do VS Code", "localServer": "Servidor local", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute na nuvem", "copyUrl": "Copiar URL", "badgeLoopbackTooltip": "Este endpoint é acessível apenas localmente (loopback)", "badgeAlwaysProtectedTooltip": "Este endpoint é sempre protegido e requer autorização", @@ -4145,9 +4144,9 @@ "tierPublic": "Público", "hideInternal": "Ocultar Internos", "showInternal": "Mostrar Internos", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Prompt de sistema personalizado", + "customSystemPromptDescription": "Injete um prompt de sistema personalizado em cada solicitação ao modelo", + "customSystemPromptPlaceholder": "Ex.: Sempre responda como um pirata...", "obsidianEnterToken": "Insira um token de API do Obsidian", "obsidianConnectFailed": "Falha ao conectar", "obsidianConnectionFailed": "Falha na conexão", @@ -4196,7 +4195,7 @@ "notionTokenConfigured": "Token configurado. As ferramentas do Notion estão disponíveis via MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", + "tabProxy": "Proxy de endpoint", "tabApiEndpoints": "Endpoints de API", "apiEndpointsTitle": "Endpoints de API", "apiEndpointsDescription": "Endpoints de API backend que podem ser consumidos por outras aplicações e serviços.", @@ -4269,7 +4268,7 @@ "resetAllBreakers": "Resetar todos os breakers", "toolsAndScopes": "Ferramentas e scopes", "tableTool": "Ferramenta", - "tableScopes": "Scopes", + "tableScopes": "Escopos", "tablePhase": "Fase", "tableAudit": "Auditoria", "auditLog": "Log de auditoria", @@ -4281,17 +4280,17 @@ "apiKeyIdPlaceholder": "apiKeyId", "loadingAuditEntries": "Carregando registros de auditoria...", "noAuditEntriesForFilters": "Nenhum registro de auditoria para os filtros atuais.", - "tableTimestamp": "Timestamp", + "tableTimestamp": "Data e hora", "tableDuration": "Duração", "tableResult": "Resultado", "tableApiKey": "Chave API", "failed": "falhou", "previous": "Anterior", "next": "Próxima", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "apiKeyId": "ID da chave de API", + "offset": "Deslocamento", + "limit": "Limite", + "tool": "Ferramenta" }, "a2aDashboard": { "loading": "Carregando painel A2A...", @@ -4334,7 +4333,7 @@ "loadingTasks": "Carregando tarefas...", "noTasksForFilters": "Nenhuma tarefa encontrada para os filtros atuais.", "tableTask": "Tarefa", - "tableSkill": "Skill", + "tableSkill": "Habilidade", "tableState": "Estado", "tableUpdated": "Atualizada", "tableActions": "Ações", @@ -4347,10 +4346,10 @@ "metadata": "Metadados", "events": "Eventos", "artifacts": "Artefatos", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "tablePhase": "Fase da tabela", + "offset": "Deslocamento", + "limit": "Limite", + "skill": "Habilidade", "rpcEndpoint": "POSTAR /a2a", "rpcMethodSend": "mensagem/enviar", "rpcMethodStream": "mensagem/fluxo", @@ -4386,7 +4385,7 @@ "content": "Conteúdo", "contentPlaceholder": "Valor ou conteúdo JSON para lembrar", "created": "Criado", - "delete": "Delete", + "delete": "Excluir", "deleteConfirmDesc": "Esta ação não pode ser desfeita. A memória será removida permanentemente.", "deleteConfirmTitle": "Excluir memória?", "description": "Visualize e gerencie entradas de memória armazenadas", @@ -4402,7 +4401,7 @@ "autoDesc": "Usa o melhor disponível: provider remoto > static > transformers", "remoteLabel": "Provider remoto", "remoteDesc": "Usa embedding via API de um provider configurado (requer chave)", - "staticLabel": "Static local (potion)", + "staticLabel": "Local estático (potion)", "staticDesc": "Embedding local sem WASM, sem dependências externas", "transformersLabel": "Transformers.js (MiniLM)", "transformersDesc": "Embedding local via @huggingface/transformers (~400MB RAM)", @@ -4432,12 +4431,12 @@ "reindexNow": "Reindexar agora", "reindexStarted": "Reindexação iniciada ({pending} pendentes)", "reindexFailed": "Falha ao iniciar reindexação", - "keywordLabel": "Keyword (FTS5)", + "keywordLabel": "Palavra-chave (FTS5)", "keywordReason": "Busca por palavras-chave sempre disponível", "embeddingLabel": "Embedding", - "vectorStoreLabel": "Vector Store", + "vectorStoreLabel": "Armazenamento vetorial", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Reclassificação", "qdrantDisabled": "Desabilitado", "qdrantOk": "Saudável ({latencyMs}ms)", "qdrantError": "Erro de conexão", @@ -4461,9 +4460,9 @@ "noMemories": "Nenhuma memória encontrada", "pageInfo": "Página {page} de {totalPages} ({total} total)", "pipelineError": "Erro de pipeline", - "pipelineOk": "Pipeline OK ({latencyMs}ms)", + "pipelineOk": "Pipeline OK ({latencyMs} ms)", "playground": { - "infoTitle": "Memory Playground", + "infoTitle": "Área de testes de memória", "infoDesc": "Simule o que seria recuperado para uma determinada query. Nenhuma memória é modificada — apenas visualização.", "queryLabel": "Query de teste", "queryPlaceholder": "Digite uma pergunta ou frase de teste...", @@ -4471,24 +4470,24 @@ "strategyExact": "Exato (FTS5)", "strategySemantic": "Semântico (vetor)", "strategyHybrid": "Híbrido (RRF)", - "budgetLabel": "Budget (tokens)", + "budgetLabel": "Orçamento (tokens)", "simulate": "Simular", "resultsTitle": "{count} resultado(s)", "resolutionTitle": "Resolução de busca", - "resolutionEmbedding": "Embedding", - "resolutionStore": "Vector store", + "resolutionEmbedding": "Incorporação", + "resolutionStore": "Banco de vetores", "resolutionStrategy": "Estratégia usada", "rerankApplied": "Rerank aplicado", - "fallback": "Fallback", + "fallback": "Alternativa", "noResults": "Nenhuma memória encontrada para esta query.", "tokensUsed": "tokens usados", "none": "nenhum", "errorFetch": "Falha ao buscar preview" }, "previous": "Anterior", - "procedural": "Procedural", + "procedural": "Procedimental", "qdrant": { - "title": "Qdrant (Vector Store Tier 2)", + "title": "Qdrant (Banco de Vetores Nível 2)", "description": "Integração opcional com Qdrant para busca semântica escalável", "enableLabel": "Habilitar Qdrant", "enableDesc": "Quando habilitado, Qdrant é usado como vector store principal", @@ -4545,8 +4544,8 @@ }, "tabs": { "memories": "Memórias", - "playground": "Playground", - "engine": "Engine" + "playground": "Área de testes", + "engine": "Mecanismo" }, "title": "Gerenciamento de Memória", "tokensUsed": "Tokens Usados", @@ -4564,13 +4563,13 @@ "memoryEnabled": "Memória ativada" }, "skills": { - "title": "Skills", + "title": "Habilidades", "description": "Gerencie e monitore skills de IA", - "skillsTab": "Skills", + "skillsTab": "Habilidades", "executionsTab": "Execuções", "selectSkillToInspect": "Selecione uma skill à esquerda para inspecionar.", - "schemaTab": "Schema", - "handlerTab": "Handler", + "schemaTab": "Esquema", + "handlerTab": "Manipulador", "inputSchema": "Schema de Entrada", "outputSchema": "Schema de Saída", "handlerCode": "Código do Handler", @@ -4578,7 +4577,7 @@ "runTestPlaceholder": "Executar teste (placeholder)", "setModeAria": "Definir modo {mode}", "uninstallSkill": "Desinstalar skill", - "sandboxTab": "Sandbox", + "sandboxTab": "Ambiente isolado", "loading": "Carregando skills...", "noSkills": "Nenhuma skill encontrada", "noExecutions": "Nenhuma execução encontrada", @@ -4587,7 +4586,7 @@ "delete": "Excluir", "version": "Versão", "tableDescription": "Descrição", - "skill": "Skill", + "skill": "Habilidade", "status": "Status", "duration": "Duração", "time": "Tempo", @@ -4596,11 +4595,11 @@ "cpuLimitDesc": "Tempo máximo de execução por skill", "memoryLimit": "Limite de Memória", "memoryLimitDesc": "Alocação máxima de memória", - "timeout": "Timeout", + "timeout": "Tempo limite", "timeoutDesc": "Tempo máximo de espera por resposta", "networkAccess": "Acesso à Rede", "networkAccessDesc": "Permitir requisições de rede de saída", - "mode": "Mode", + "mode": "Modo", "q": "Q", "filterSkillsPlaceholder": "Filtre habilidades por nome, descrição ou tag", "allModes": "Todos os modos", @@ -4608,12 +4607,12 @@ "enabledSkills": "Ativadas", "totalExecutions": "Execuções", "successRate": "Taxa de Sucesso", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Loja", "applyFilters": "Aplicar filtros", "popularDefaultsLabel": "Populares por padrão para o provedor selecionado:", "onMode": "LIGADO", "offMode": "DESLIGADO", - "autoMode": "AUTO", + "autoMode": "AUTOMÁTICO", "installSkillButton": "Instalar Habilidade", "installSkillModalTitle": "Instalar Habilidade", "installJsonPlaceholder": "Cole o JSON do manifesto da habilidade aqui...", @@ -4699,9 +4698,9 @@ "providers": "Provedores", "configuredProvidersLabel": "Configurado no painel", "configuredProvidersHint": "Provedores com credenciais salvas em /dashboard/providers, independentemente do estado do tempo de execução.", - "activeProviders": "{count} active", + "activeProviders": "{count} ativos", "activeProvidersHint": "Provedores configurados atualmente habilitados para solicitações de roteamento.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} monitorados", "monitoredProvidersHint": "Provedores atualmente monitorados por monitores de integridade dos disjuntores.", "healthyCount": "{count} saudáveis", "nodeVersion": "Node {version}", @@ -4732,7 +4731,7 @@ "status": "Status", "attentionNeeded": "Atenção necessária", "repairs": "Reparos", - "repairing": "Repairing...", + "repairing": "Reparando...", "runAutoRepair": "Executar Auto-Reparo", "repairBackupCreated": "Um backup de reparo foi criado antes da alteração.", "sessionActivity": "Atividade da Sessão", @@ -4742,7 +4741,7 @@ "ageSeconds": "{count}s de idade", "quotaMonitors": "Monitores de Quota", "alerting": "Alertando", - "errors": "Errors", + "errors": "Erros", "degradationFull": "Completa", "degradationReduced": "Reduzido", "degradationMinimal": "Minima", @@ -4774,11 +4773,11 @@ "inactive": "Inativo", "noConnectionId": "sem id de conexão", "accountModelSummary": "{connectionId} · {count} modelos", - "cooldown": "cooldown", + "cooldown": "tempo de espera", "durationRemaining": "{duration} restante", "noSyncedModelsOrTraffic": "Nenhum modelo sincronizado ou tráfego recente ainda.", "providerRowSummary": "{active}/{total} contas ativas · {requests} req · {successRate} sucesso · {latency} média", - "cooldownCount": "{count} cooldown", + "cooldownCount": "{count} em espera", "lockoutCount": "{count} bloqueios", "issueCount": "{count} problemas", "score": "Pontuação", @@ -4860,7 +4859,7 @@ "dailyLimit": "Limite Diário" }, "logs": { - "title": "Logs", + "title": "Registros", "requestLogs": "Logs de Requisições", "proxyLogs": "Logs do Proxy", "auditLog": "Log de Auditoria", @@ -4895,13 +4894,13 @@ "requestId": "Request ID", "providerWarningDesc": "Esta requisição terminou com um aviso do provedor ou alerta do sanitizador em vez de uma falha dura.", "a": "A", - "offset": "Offset", - "limit": "Limit", + "offset": "Deslocamento", + "limit": "Limite", "status": "Status", "resourceType": "Tipo de Recurso", - "totalEntries": "Total Entries", - "tab": "Tab", - "auditModalSubtitle": "Event details and metadata", + "totalEntries": "Total de entradas", + "tab": "Aba", + "auditModalSubtitle": "Detalhes e metadados do evento", "close": "Fechar", "runningRequests": "Requisições em Execução", "runningRequestsDesc": "Requisições ainda em voo entre provedores e contas, com previews sanitizados dos payloads.", @@ -4921,16 +4920,16 @@ "activeStageSendingToProvider": "Enviando para o upstream", "activeStageProviderResponseStarted": "Resposta do upstream iniciada", "count": "Qtd.", - "payloads": "Payloads", + "payloads": "Cargas úteis", "viewPayloads": "Ver Payloads", "activeCount": "{count} ativas", "clientPayload": "Requisição do Cliente", "upstreamPayload": "Requisição Upstream", "upstreamNotSentYet": "Requisição upstream ainda não foi enviada", "runningRequestDetailMeta": "Conta: {account} • Tempo: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "export": "Exportar", + "exporting": "Exportando...", + "exportFailed": "Falha ao exportar", "cleanHistoryButton": "Limpar histórico", "cleanHistoryTitle": "Limpar histórico de logs?", "cleanHistoryMessage": "Isso limpa permanentemente todas as linhas de log de requisições, linhas de detalhes legados e arquivos de artefatos locais em DATA_DIR/call_logs. A página ao vivo será atualizada após a limpeza.", @@ -4939,13 +4938,13 @@ "cleanHistorySuccess": "Limpa {deleted} entradas de log, {deletedArtifacts} artefatos e {deletedDetailedLogs} linhas de detalhes legadas.", "cleanHistoryEmpty": "Nenhum histórico de log de requisições foi encontrado.", "cleanHistoryFailed": "Falha ao limpar o histórico de logs.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Intervalo de tempo", + "lastNHours": "Últimas {hours}", + "defaultRange": "padrão", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Falha ao buscar logs", + "copyFailed": "Falha ao copiar a entrada do log", + "copyLogEntry": "Copiar entrada do log", "filterByLevel": "Filtrar por nível de log", "searchPlaceholder": "Pesquisar logs…", "searchAria": "Pesquisar entradas de log", @@ -4960,8 +4959,8 @@ "applicationConsole": "Console da Aplicação", "emptyFileLoggingHint": "Garanta que APP_LOG_TO_FILE=true esteja definido no seu arquivo .env" }, - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionLogTitle": "Log de compactação", + "compressionLogEmpty": "Ainda não há solicitações compactadas. As estatísticas de compactação aparecerão aqui quando as solicitações forem processadas com a compactação ativada.", "tokens": "tokens" }, "onboarding": { @@ -5119,7 +5118,7 @@ "testSuccess": "Conexão bem-sucedida", "testFailed": "Falha na conexão", "available": "Disponível", - "cooldown": "Cooldown", + "cooldown": "Tempo de espera", "unavailable": "Indisponível", "unknown": "Desconhecido", "oauthLabel": "OAuth", @@ -5169,20 +5168,20 @@ "modelsHiddenCount": "{count} oculto", "warningCount": "{count} Aviso", "noConnections": "Sem conexões", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Expirado", + "expiringSoonBadge": "Expirando em breve", "freeTier": "Plano gratuito", "freeTierAvailable": "Nível gratuito disponível", "hasFreeTooltip": "Tier gratuito disponível", "noAuthLabel": "Sem Auth", "noAuthProviders": "Provedores Sem Auth", - "upstreamProxyLabel": "Upstream Proxy", + "upstreamProxyLabel": "Proxy upstream", "freeAggregated": "Todos os providers com tier gratuito (também aparecem na categoria nativa)", "deprecated": "Obsoleto", "deprecatedProvider": "Este provedor foi descontinuado", "riskNotice": { "title": "Antes de continuar", - "detailsTitle": "Usage caveats", + "detailsTitle": "Ressalvas de uso", "tooltip": "Provider com restrições de uso — clique para detalhes", "oauth": "Este provider usa sua sessão/OAuth oficial do produto, que não autoriza uso em proxy/router. Não recomendamos uso intensivo em agentes autônomos (estilo OpenCloud, multi-passos longos, batches grandes) — o upstream pode reagir restringindo ou banindo a conta. Use por sua conta e risco.", "webCookie": "Este provider autentica através dos cookies da sua sessão web. O serviço upstream pode invalidar a sessão a qualquer momento, exigindo re-login. Não recomendado para operações longas e não-supervisionadas. Use por sua conta e risco.", @@ -5192,9 +5191,9 @@ "cancel": "Cancelar" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} conexão(ões) sinalizada(s) — até {maxFailures} falhas recentes{lastFailureSuffix}. Clique para visualizar a integridade das conexões.", + "lastFailureSuffix": "(última falha {time})", + "ariaLabel": "Ver detalhes da integridade das conexões, {count} aviso(s)" }, "disabled": "Desativado", "enableProvider": "Ativar provedor", @@ -5229,7 +5228,7 @@ "failedCreate": "Falha ao criar provedor", "errorOccurred": "Ocorreu um erro. Tente novamente.", "modelStatus": "Status dos Modelos", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Somente configuradas", "allModelsOperational": "Todos os modelos operacionais", "modelsWithIssues": "{count} modelo(s) com problemas", "allModelsNormal": "Todos os modelos estão respondendo normalmente.", @@ -5240,7 +5239,7 @@ "clearing": "Limpando...", "until": "Até {time}", "providerTestFailed": "Teste de provedor falhou", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "O teste do provedor atingiu o tempo limite — há conexões demais para testar de uma só vez", "modeTest": "Teste {mode}", "passedCount": "{count} passaram", "failedCount": "{count} falharam", @@ -5261,10 +5260,10 @@ "iconUrlLabel": "URL do ícone", "iconUrlHint": "Opcional. URL da imagem exibida como ícone deste provedor.", "iconUrlInvalid": "URL do ícone inválido. Use um URL http(s):// ou data:image/*;base64.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Fuso horário de redefinição da cota diária", + "dailyQuotaResetTimezoneHint": "Fuso horário IANA opcional usado quando o upstream omite X-RateLimit-Reset. Deixe em branco para manter um curto tempo de espera.", + "dailyQuotaResetHourLabel": "Hora de redefinição da cota diária", + "dailyQuotaResetHourHint": "Hora local de 0 a 23 no fuso horário acima. Em branco significa que não há relógio no nível do nó.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5278,9 +5277,9 @@ "providerNotFound": "Provedor não encontrado", "deleteConnectionConfirm": "Excluir esta conexão?", "deleteConnectionConfirmNamed": "Tem certeza de que deseja excluir {name}? Essa ação não pode ser desfeita.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Excluir selecionadas ({count})", + "batchDeleteConfirm": "Excluir {count} conexão(ões)? Esta ação não pode ser desfeita.", + "batchDeleteSuccess": "{count} conexão(ões) excluída(s)", "batchActivateSelected": "Ativar", "batchDeactivateSelected": "Desativar", "batchRetestSelected": "Retestar", @@ -5296,7 +5295,7 @@ "filterError": "Erro", "filterBanned": "Banido", "filterCreditsExhausted": "Créditos esgotados", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Pesquisar contas…", "noFilteredConnections": "Nenhuma conexão corresponde ao filtro atual.", "failedSetAlias": "Falha ao definir alias", "setAliasSuccess": "Alias {alias} definido", @@ -5309,14 +5308,14 @@ "openaiCompatibleDetails": "Detalhes Compatível OpenAI", "messagesApi": "API de Mensagens", "responsesApi": "API de Respostas", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Incorporações", + "audioTranscriptions": "Transcrições de áudio", + "audioSpeech": "Síntese de fala", + "imagesGenerations": "Geração de imagens", "chatCompletions": "Chat Completions", "importingModels": "Importando...", "importFromModels": "Importar de /models", - "modelsImported": "{count} models imported", + "modelsImported": "{count} modelos importados", "allModelsAlreadyImported": "Todos os modelos já foram importados", "noNewModelsToImport": "Nenhum modelo novo para importar — todos os modelos já estão no registro ou na lista de modelos personalizados", "skippingExistingModels": "Ignorando {count} modelos existentes", @@ -5354,7 +5353,7 @@ "importFailed": "Falha na importação", "noNewModelsAdded": "Nenhum novo modelo foi adicionado.", "adding": "Adicionando...", - "close": "Close", + "close": "Fechar", "importingModelsTitle": "Importando Modelos", "copyModel": "Copiar modelo", "filterModels": "Filtrar modelos...", @@ -5390,8 +5389,8 @@ "bulkAddFormatHint": "Uma chave por linha. Formato: name|apiKey ou apenas apiKey (nomeado automaticamente pelo índice).", "bulkValidateKeys": "Valide cada chave antes de salvar (mais lento)", "bulkAddAllKeys": "Adicionar todas as chaves", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# chave adicionada} other {# chaves adicionadas}}", + "bulkFailedCount": "{count, plural, one {# falhou} other {# falharam}}", "optional": "Opcional", "anthropicCompatibleName": "Compatível Anthropic", "openaiCompatibleName": "Compatível OpenAI", @@ -5423,17 +5422,17 @@ "configured": "configurado", "providerProxyConfigureHint": "Configurar proxy para todas as conexões deste provedor", "providerProxy": "Proxy do Provedor", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Reparar env", + "repairEnvWorking": "Reparando...", + "repairEnvHint": "Restaure os padrões ausentes do OAuth no .env sem sobrescrever os valores existentes.", + "repairEnvSuccess": "Padrões do OAuth restaurados", + "repairEnvFailed": "Falha ao reparar o .env", "noConnectionsYet": "Ainda não há conexões", "addFirstConnectionHint": "Adicione sua primeira conexão para começar", "addConnection": "Adicionar Conexão", "availableModels": "Modelos Disponíveis", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Modelos integrados", + "builtInModelsHint": "Modelos do registro para este provedor. Use o lápis para definir as opções de compatibilidade.", "pageAutoRefresh": "A página será atualizada automaticamente...", "statusDisabled": "desativado", "statusConnected": "conectado", @@ -5451,7 +5450,7 @@ "errorTypeMissingCredential": "Credencial ausente", "errorTypeRefreshFailed": "Falha ao renovar", "errorTypeTokenExpired": "Token expirado", - "errorTypeRateLimited": "Rate limited", + "errorTypeRateLimited": "Limite de taxa atingido", "errorTypeUpstreamUnavailable": "Upstream indisponível", "errorTypeNetworkError": "Erro de rede", "errorTypeTestUnsupported": "Teste não suportado", @@ -5479,24 +5478,24 @@ "reauthenticateConnection": "Reautenticar esta conexão", "proxyConfig": "Configuração de proxy", "aliasExistsAlert": "O alias \"{alias}\" já existe. Use um modelo diferente ou edite o alias existente.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "nome do alias", + "clickToSetAlias": "Clique para definir o alias", + "clickToEditAlias": "Alias: {alias} (clique para editar)", "openRouterAnyModelHint": "OpenRouter suporta qualquer modelo. Adicione modelos e crie aliases para acesso rápido.", "modelIdFromOpenRouter": "ID do Modelo (do OpenRouter)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", "customModels": "Modelos Personalizados", "customModelsHint": "Adicione IDs de modelo que não estão na lista padrão. Eles ficarão disponíveis para roteamento.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normalizar IDs de chamadas de ferramentas para 9 caracteres (por exemplo, Mistral)", + "preserveDeveloperRoleLabel": "Manter a função developer do OpenAI Responses (não mapear para system)", + "compatAdjustmentsTitle": "Compatibilidade", + "compatButtonLabel": "Compatibilidade", + "compatToolIdShort": "ID da ferramenta com 9 caracteres", + "compatDeveloperShort": "Função developer", + "compatDoNotPreserveDeveloper": "Não preservar a função developer", + "compatBadgeNoPreserve": "Não preservar", + "compatProtocolLabel": "Protocolo de solicitação do cliente", + "compatProtocolHint": "Estas opções são aplicadas quando o OmniRoute detecta este formato de solicitação (OpenAI Chat, Responses API ou Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5538,25 +5537,25 @@ "interceptFetchHint": "Reescreve chamadas nativas de web_fetch para /v1/web/fetch da OmniRoute.", "interceptionLoadError": "Falha ao carregar configuração de interceptação: {error}", "interceptionSaveError": "Falha ao salvar configuração de interceptação: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Expor no Claude Code (claude/…)", + "ccAliasSectionHint": "Anuncie os modelos deste provedor sob IDs espelhados claude/<provider>/<model> para que a descoberta de modelos do gateway do Claude Code possa listá-los. Desativado por padrão — habilitar esta opção duplica as entradas do catálogo para todos os clientes.", + "ccAliasProviderLevelLabel": "Padrão do provedor", + "ccAliasModelOverridesLabel": "Substituições por modelo", + "ccAliasModelOverrideAriaLabel": "Substituição para {modelId}", + "ccAliasStateInherit": "Herdar", + "ccAliasStateOn": "Ativado", + "ccAliasStateOff": "Desativado", + "ccAliasAddModelPlaceholder": "ID do modelo (por exemplo, gpt-4o)", + "ccAliasAddModelButton": "Adicionar substituição", + "ccAliasLoadError": "Falha ao carregar as configurações de alias de descoberta: {error}", + "ccAliasSaveError": "Falha ao salvar a configuração de alias de descoberta: {error}", + "compatUpstreamHeadersLabel": "Cabeçalhos upstream adicionais", + "compatUpstreamHeadersHint": "Configuração de alto privilégio — tem o mesmo nível de confiança que a edição das credenciais de API do provedor; somente administradores confiáveis devem usá-la. Mesclada após o OmniRoute adicionar a autenticação usando a chave de API do provedor. Se um cabeçalho personalizado usar o mesmo nome de um existente (por exemplo, Authorization), seu valor substituirá completamente o cabeçalho gerado automaticamente (incluindo o token Bearer) — o upstream verá apenas o que você digitou, não a chave das configurações. Uma configuração incorreta pode causar o erro 401 ou interromper a autenticação upstream. Uma linha por cabeçalho (por exemplo, Authentication adicional para alguns gateways). Passe o cursor sobre o valor ou dê foco a ele para visualizar. Salva ao perder o foco, clicar fora ou fechar este painel.", + "compatUpstreamHeaderName": "Nome do cabeçalho", + "compatUpstreamHeaderValue": "Valor", + "compatUpstreamAddRow": "Adicionar cabeçalho", + "compatUpstreamRemoveRow": "Remover linha", + "compatBadgeUpstreamHeaders": "Cabeçalhos", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Importar apenas modelos gratuitos", @@ -5594,7 +5593,7 @@ "editConnection": "Editar Conexão", "accountName": "Nome da conta", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "Verificação de integridade (min)", "healthCheckHint": "Intervalo proativo de renovação de token. 0 = desativado.", "deselectAllModels": "Desmarcar todos", "modelsActiveCount": "{active}/{total} ativos", @@ -5605,14 +5604,14 @@ "failed": "Falhou", "leaveBlankKeepCurrentApiKey": "Deixe em branco para manter a chave de API atual.", "editCompatibleTitle": "Editar Compatível {type}", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "URL raiz da sua API compatível com {type}. Use as Configurações avançadas para definir caminhos de endpoint personalizados.", "apiKeyForCheck": "Chave de API (para verificação)", "testModelIdLabel": "ID do Modelo (opcional)", "testModelIdPlaceholder": "ex.: meu-id-do-modelo", "testModelIdHint": "Se o provedor não tiver um endpoint /models, insira um ID de modelo para validar via /chat/completions em vez disso.", "compatibleProdPlaceholder": "{type} Compatível (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Token atualizado com sucesso", + "tokenRefreshFailed": "Falha ao atualizar o token", "cursorSessionUnchanged": "Sessão já está atualizada", "applyCodexAuthLocal": "Aplicar auth", "exportCodexAuthFile": "Exportar auth", @@ -5740,25 +5739,25 @@ "codexImportBulkFailed": "{count} falhou", "codexImportBulkZipExtracting": "Extraindo ZIP…", "codexImportBulkZipError": "Falha ao extrair ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Configurações avançadas", + "chatPathLabel": "Caminho do endpoint de chat", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Caminho de chat personalizado para provedores com APIs não padronizadas (por exemplo, /v4/chat/completions)", + "modelsPathLabel": "Caminho do endpoint de modelos", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Caminho de modelos personalizado para validação (por exemplo, /v4/models)", "clientIdentityLabel": "Identidade do cliente", "clientIdentityHint": "Opcional. Adiciona cabeçalhos de fingerprint do cliente (ex.: User-Agent) correspondentes a um CLI conhecido, para gateways compatíveis que esperam um.", "statusDeactivated": "Desativado (Manual)", "statusBanned": "Banido / Sandbox Violation", "statusCreditsExhausted": "Saldo Insuficiente", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "showEmails": "Mostrar todos os e-mails", + "hideEmails": "Ocultar todos os e-mails", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Encontre isso na URL do dashboard da Cloudflare ou nas configurações.", - "accountIdLabel": "Account ID", + "accountIdLabel": "ID da conta", "accountIdPlaceholder": "Cloudflare Account ID", "addAnotherApiKey": "Adicionar outra chave de API...", "addCcCompatible": "Adicionar CC Compatível", @@ -5771,14 +5770,14 @@ "apiRegionHint": "Selecione a região do endpoint para acesso à API e rastreamento de cota.", "apiRegionInternational": "Internacional (api.z.ai)", "apiRegionLabel": "Região da API", - "apikey": "Apikey", - "audio": "Audio", + "apikey": "Chave de API", + "audio": "Áudio", "audioProvidersHeading": "Provedores de Áudio", "cloudAgentProviders": "Provedores de agentes em nuvem", "audioShortLabel": "Áudio", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", + "azureOpenAiBaseUrlHint": "Dica da URL base do Azure Open AI", "bailianBaseUrlHint": "Opcional: URL base customizada para o provedor bailian-coding-plan.", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "claudeWebCookieHint": "Abra claude.ai → DevTools → Application → Cookies → claude.ai e copie o valor de 'sessionKey'. Também são necessários cf_clearance, __cf_bm e _cfuvid para o Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", "blackboxWebCookieHint": "Cole o cookie __Secure-authjs.session-token de app.blackbox.ai. Um cabeçalho de cookie completo também funciona.", "blackboxWebCookiePlaceholder": "Cole o valor de __Secure-authjs.session-token", @@ -5797,10 +5796,10 @@ "ccCompatibleChatPathHint": "O padrão é o caminho estrito de messages compatível com Claude Code.", "ccCompatibleContext1mDescription": "Quando habilitado, esta conexão adiciona `anthropic-beta: context-1m-2025-08-07`.", "ccCompatibleContext1mLabel": "Contexto 1M CC Compatível", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Adiciona o cabeçalho beta redact-thinking para upstreams compatíveis com CC que exigem fluxos de raciocínio ocultos do Claude.", + "ccCompatibleRedactThinkingLabel": "Ativar a versão beta de redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Adiciona `display: \"summarized\"` às solicitações de raciocínio compatíveis com CC para que os modelos Claude compatíveis transmitam deltas de raciocínio visíveis.", + "ccCompatibleSummarizeThinkingLabel": "Ativar exibição resumida do raciocínio", "ccCompatibleDetailsTitle": "Detalhes CC Compatível", "ccCompatibleLabel": "CC Compatível", "ccCompatibleModelsDescription": "Os modelos disponíveis de CC Compatível espelham a lista do provedor OAuth Claude Code.", @@ -5817,8 +5816,8 @@ "codexWeeklyToggleTitle": "Alternar política de limite semanal do Codex", "compatUpstreamHeaderNamePlaceholder": "Authentication", "compatUpstreamHeaderValuePlaceholder": "•••", - "compatible": "Compatible", - "configuredCount": "Configured Count", + "compatible": "Compatível", + "configuredCount": "Quantidade configurada", "consoleApiKeyOracleHint": "Obrigatório para consulta de cota. Não compartilhe.", "consoleApiKeyOracleLabel": "Chave de API do Console (Oracle)", "consoleApiKeyOraclePlaceholder": "Chave de API do Console Alibaba", @@ -5843,22 +5842,22 @@ "excludedModelsHint": "Padrões wildcard separados por vírgula. Esta conexão será ignorada para modelos correspondentes.", "excludedModelsLabel": "Modelos Excluídos", "excludedModelsPlaceholder": "gpt-5*, claude-opus-*, gemini-*-pro*", - "expirationBannerExpired": "Expiration Banner Expired", + "expirationBannerExpired": "Banner de expiração: expirado", "expirationBannerExpiredDesc": "Ação imediata necessária. Conexões expiradas falharão permanentemente.", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", + "expirationBannerExpiringSoon": "Banner de expiração: expira em breve", "expirationBannerExpiringSoonDesc": "Revise e renove as conexões prestes a expirar para evitar interrupções.", "extraApiKeyMasked": "Chave {index}: {prefix}••••{suffix}", "extraApiKeysHint": "Rotação round-robin — opcional", "extraApiKeysLabel": "Chaves de API Extras", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", + "apiKeyHealthLabel": "Integridade das chaves de API", + "apiKeyStatusActive": "Ativa", + "apiKeyStatusWarning": "Aviso ({count} falhas)", + "apiKeyStatusInvalid": "Inválida", + "primaryKey": "Chave primária", + "apiKeyInvalidAlert": "{count} chave(s) de API marcada(s) como inválida(s) devido a falhas de autenticação nas conexões: {connections}. Elas serão ignoradas na rotação. Clique para revisar.", + "apiKeyInvalidAlertTitle": "Alerta de integridade das chaves de API", + "apiKeyWarningAlert": "{count} chave(s) de API em estado de aviso devido à alta taxa de falhas nas conexões: {connections}. Revise para evitar problemas de rotação.", + "apiKeyWarningAlertTitle": "Aviso de chave de API", "googlePseInfo": "O Google Programmable Search exige dois valores: sua chave de API e o Search Engine ID (cx) do painel do Programmable Search Engine.", "antigravityProjectIdHint": "Substituição opcional para solicitações de código de nuvem antigravidade. Deixe em branco para usar o projeto descoberto durante o Google OAuth.", "antigravityClientProfileLabel": "Perfil do cliente", @@ -5877,8 +5876,8 @@ "embeddingRerankProviders": "Incorporações e reclassificação", "imagesShortLabel": "Imagens", "llmProviders": "Provedores LLM", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", + "localProviderApiKeyOptionalHint": "Dica de chave de API opcional do provedor local", + "localProviderBaseUrlHint": "Dica de URL base do provedor local", "localProviders": "Local / Self-Hosted", "maxConcurrentWholeNumberError": "Max concurrent deve ser um número inteiro maior ou igual a 0.", "m365TierLabel": "Nível do Copilot", @@ -5894,7 +5893,7 @@ "tierOverrideHelpText": "Fixe este provedor em um tier de roteamento em vez de deixar o OmniRoute inferir a partir do preço do modelo.", "museSparkWebCookieHint": "Cole o cookie abra_sess do meta.ai. Um cabeçalho de cookie completo também funciona.", "museSparkWebCookiePlaceholder": "Cole o valor de abra_sess", - "oauth": "Oauth", + "oauth": "OAuth", "openCliTools": "Abrir CLI Tools", "openSettings": "Abrir Configurações", "openaiResponsesStoreDescription": "Preserva `store`, `previous_response_id` e adiciona um `session_id` estável como fallback para sessões longas do Codex. Habilite apenas quando a conta upstream aceitar Responses armazenadas.", @@ -5902,14 +5901,14 @@ "perplexitySearchSharedKeyInfo": "Usa a mesma chave de API do Perplexity (provedor de chat). Se você já configurou o Perplexity, não é necessário setup adicional.", "perplexityWebCookieHint": "Cole o cookie __Secure-next-auth.session-token do perplexity.ai.", "perplexityWebCookiePlaceholder": "Cole o valor de __Secure-next-auth.session-token", - "personalAccessTokenLabel": "Personal Access Token", + "personalAccessTokenLabel": "Token de acesso pessoal", "qoderPatHint": "Fluxo suportado: PAT via qodercli. OAuth pelo navegador continua experimental.", "qoderPatPlaceholder": "Cole seu Personal Access Token do Qoder", "rateLimitOverridesSection": "Substituições de Limite de Taxa", "rateLimitOverridesMaxConcurrentHint": "Sobrescrição do máximo de requisições concorrentes para esta conexão. Sobrescreve o limite de nível de conta.", "rateLimitOverridesMaxConcurrentLabel": "Máximo Concorrente (Limite de Taxa)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Tempo máximo (ms) que uma solicitação pode aguardar por uma vaga no limite de taxa antes de falhar. Substitui a configuração global de Resiliência somente para esta conexão.", + "rateLimitOverridesMaxWaitMsLabel": "Espera máxima na fila (ms)", "rateLimitOverridesMinTimeHint": "Tempo mínimo (ms) entre solicitações. Substitui o atraso padrão do limitador de taxa.", "rateLimitOverridesMinTimeLabel": "Min Intervalo (ms)", "rateLimitOverridesRpdHint": "Máximo de requisições por dia para esta conexão. Substitui o padrão do provedor.", @@ -5919,7 +5918,7 @@ "rateLimitOverridesTpdHint": "Máximo de tokens por dia para esta conexão. Substitui o padrão do provedor.", "rateLimitOverridesTpdLabel": "TPD (Tokens/dia)", "rateLimitOverridesTpmHint": "Máximo de tokens por minuto para esta conexão. Substitui o padrão do provedor.", - "rateLimitOverridesTpmLabel": "TPM (Tokens/min)", + "rateLimitOverridesTpmLabel": "TPM (tokens/min)", "refreshOauthTokenTitle": "Atualizar token OAuth manualmente", "regionHint": "ex.: us-central1 ou europe-west4. Modelos partner usam a região global automaticamente.", "regionLabel": "Região", @@ -5927,7 +5926,7 @@ "routingTagsHint": "Tags separadas por vírgula, comparadas com request metadata.tags para roteamento por tags.", "routingTagsLabel": "Tags de Roteamento", "routingTagsPlaceholder": "fast, cheap, eu-region", - "search": "Search", + "search": "Pesquisa", "searchEngineIdHint": "Obrigatório. Encontre isso na visão geral do seu Programmable Search Engine.", "searchEngineIdLabel": "Search Engine ID (cx)", "searchEngineIdRequired": "O Search Engine ID (cx) do Programmable Search Engine é obrigatório.", @@ -5943,23 +5942,23 @@ "snowflakeBaseUrlHint": "Obrigatório: cole a URL base da conta Snowflake. O app adicionará /api/v2/cortex/inference:complete.", "supportedEndpointAudio": "Áudio", "supportedEndpointChat": "Chat", - "supportedEndpointEmbeddings": "Embeddings", + "supportedEndpointEmbeddings": "Incorporações", "supportedEndpointImages": "Imagens", "supportedEndpointsLabel": "Endpoints Suportados", "tagGroupHint": "Usado para agrupar contas na visão do provedor.", "tagGroupLabel": "Tag / Grupo", "tagGroupPlaceholder": "ex.: personal, work, team-a", - "testModel": "Test Model", - "testingModel": "Testing Model", + "testModel": "Testar modelo", + "testingModel": "Testando modelo", "modelTestQuotaTooltip": "Quota esgotada — reseta amanhã ou precisa de recarga", "toggleOffShort": "OFF", "toggleOnShort": "ON", "tokenExpiredBadge": "Expirado", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", + "tokenExpiredTitle": "Título de token expirado", + "tokenExpiresSoonTitle": "Título de token prestes a expirar", "tokenShort": "Token", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", + "totalKeysRotating": "{count, plural, one {1 chave em rotação} other {# chaves em rotação}}", + "unhideModel": "Reexibir modelo", "upstreamProxyProviders": "Proxy Upstream", "validationModelIdHint": "Usado como fallback se a listagem de modelos não estiver disponível.", "validationModelIdLabel": "ID do Modelo (opcional)", @@ -6036,7 +6035,7 @@ "claudeImportEntryName": "entrada {number}", "claudeImportParseError": "erro de análise", "claudeImportNoValidEntries": "Nenhuma entrada válida para importar", - "webFetch": "Web Fetch", + "webFetch": "Busca na Web", "webFetchTooltip": "Provedores que extraem conteúdo de URLs (HTML → Markdown, scraping, screenshot)", "webFetchProvidersHeading": "Provedores Web Fetch", "compatibleProvidersDesc": "Endpoints compatíveis com OpenAI ou Anthropic que você mesmo hospeda ou configura. Aponte qualquer SDK OpenAI para sua URL e roteie as requisições aqui.", @@ -6313,7 +6312,7 @@ "claude": "Conecte o Claude Code com o fluxo OAuth existente.", "cline": "Conecte o Cline com o fluxo OAuth existente.", "cursor": "Conecte o Cursor IDE com o fluxo OAuth existente.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Conecte o Cursor com uma chave de API de usuário (crsr_...) de cursor.com/dashboard/api; nenhuma sessão do IDE é necessária.", "github": "Conecte o GitHub Copilot com o fluxo OAuth existente.", "gitlab-duo": "Aplicação OAuth com os escopos ai_features + read_user. Configure GITLAB_DUO_OAUTH_CLIENT_ID e, opcionalmente, GITLAB_DUO_OAUTH_CLIENT_SECRET nesta instância do OmniRoute.", "kilocode": "Conecte o Kilo Code com o fluxo OAuth existente.", @@ -6433,14 +6432,19 @@ "commandCodeAuthExpired": "Código de comando de autenticação expirado", "commandCodeConnected": "Código do comando conectado", "commandCodeConnectionAdded": "Conexão de Código de Comando adicionada", + "clearConnectionCooldown": "Limpar cooldown", + "clearConnectionCooldownInProgress": "Limpando…", + "clearConnectionCooldownTitle": "Limpar o cooldown agora — use quando a cota já foi renovada no upstream", "commandCodeLinkExpired": "O link do código do comando expirou", "commandCodeOpeningStudio": "Abrindo o Command Code Studio…", "commandCodePopupBlocked": "Popup bloqueado. Por favor, permita popups e tente o Command Code Connect novamente.", "commandCodeStartFailed": "Falha ao iniciar o comando Code auth", "connectionDeleted": "Conexão excluída", "connectionFallback": "conexão", + "connectionCooldownCleared": "Cooldown limpo — a conexão voltou ao roteamento", "coolingConnectionsDescription": "Essas conexões estão esfriando após a última solicitação. O OmniRoute as ignorará até o temporizador expirar — não é necessário desativar manualmente.", "coolingConnectionsTitle": "Resfriando atualmente ({count})", + "failedClearConnectionCooldown": "Falha ao limpar cooldown", "failedDeleteAlias": "Falha ao excluir o alias", "failedDeleteConnection": "Falha ao excluir a conexão", "failedDistributeProxies": "Falha ao distribuir proxies.", @@ -6474,12 +6478,7 @@ "savedModelEndpointSettings": "Configurações do endpoint do modelo salvo", "searchByModelAria": "Pesquisar por modelo", "selectSupportedEndpoint": "Selecione pelo menos um endpoint suportado", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Limpar cooldown", - "clearConnectionCooldownInProgress": "Limpando…", - "clearConnectionCooldownTitle": "Limpar o cooldown agora — use quando a cota já foi renovada no upstream", - "connectionCooldownCleared": "Cooldown limpo — a conexão voltou ao roteamento", - "failedClearConnectionCooldown": "Falha ao limpar cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "Configurações", @@ -6558,22 +6557,22 @@ "systemPrompt": "Prompt do Sistema", "thinkingBudget": "Orçamento de Raciocínio", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "Proxy HTTP", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Seções de proxy", + "requestBodyLimitTitle": "Limite do corpo da solicitação", + "requestBodyLimitDescription": "Tamanho máximo da carga útil da API aceito antes que o corpo da solicitação seja analisado. As rotas dedicadas de upload mantêm pelo menos o limite integrado de 100 MB.", + "requestBodyLimitInputLabel": "Limite do corpo da solicitação em MB", + "requestBodyLimitEmptyError": "Insira um limite em MB", + "requestBodyLimitWholeNumberError": "Use um número inteiro", + "requestBodyLimitMinimumError": "O mínimo é {min} MB", + "requestBodyLimitMaximumError": "O máximo é {max} MB", + "requestBodyLimitLoadFailed": "Falha ao carregar as configurações de limite de requisição", + "requestBodyLimitSaveSuccess": "Limite do corpo da requisição salvo", + "requestBodyLimitSaveFailed": "Falha ao salvar o limite do corpo da requisição", + "requestBodyLimitSaving": "Salvando...", + "requestBodyLimitSave": "Salvar", + "requestBodyLimitCurrent": "Atual: {value}", "cacheConfigLoadFailed": "Falha ao carregar as configurações de cache", "cacheConfigSaveSuccess": "Configurações de cache salvas", "cacheConfigSaveFailed": "Falha ao salvar as configurações de cache", @@ -6617,29 +6616,29 @@ "skillsComingSoon": "Marketplace em breve.", "memorySkillsTitle": "Memória e Skills", "memorySkillsDesc": "Contexto persistente e capacidades A2A", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "modelsDevTitle": "Banco de dados de modelos", + "modelsDevDesc": "Sincronize automaticamente preços, recursos e especificações do models.dev", + "modelsDevEnabled": "Ativar sincronização com o models.dev", + "modelsDevEnabledDesc": "Obtenha preços, recursos e especificações de modelos do banco de dados de código aberto models.dev", + "modelsDevInterval": "Intervalo de sincronização", + "syncNow": "Sincronizar agora", + "syncing": "Sincronizando...", + "lastSync": "Última sincronização", + "never": "Nunca", "justNow": "agora mesmo", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Estatísticas de sincronização", + "modelsDevStatsDesc": "Cobertura atual dos dados do models.dev", "providers": "Provedores", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modelos com preços", + "capabilities": "Recursos", + "lastSyncCount": "Contagem da última sincronização", + "lastSyncFull": "Última sincronização completa", + "modelsDevInfo": "Como funciona", + "modelsDevInfoDesc": "models.dev é um banco de dados de código aberto com especificações de modelos de IA, mantido pela equipe do SST/OpenCode. Ele fornece preços, recursos, limites de contexto e modalidades para mais de 4.000 modelos de mais de 100 provedores.", + "modelsDevInfoResolution": "Ordem de resolução de preços (da maior para a menor prioridade):", + "modelsDevInfoOrder": "Substituição do usuário → models.dev → LiteLLM → Padrão codificado", "systemTheme": "Tema do Sistema", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Ativar modo de depuração", "logToolSourcesToggle": "Registrar fontes de ferramentas", "logToolSourcesDescription": "Emite uma linha de log de diagnóstico por requisição resumindo a contagem de ferramentas e a origem MCP/hospedada/cliente.", "homePinProviderQuotaToHome": "Fixar informações na página inicial", @@ -6665,45 +6664,45 @@ "providerQuotaAutoRefreshInterval": "Intervalo de atualização", "providerQuotaAutoRefreshIntervalDesc": "Com que frequência a visualização de cota deve atualizar, em segundos.", "seconds": "segundos", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Mostrar itens da barra lateral", "enableCache": "Ativar Cache", "cacheTTL": "TTL do Cache", "maxCacheSize": "Tamanho Máximo do Cache", "clearCache": "Limpar Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Cache limpo com sucesso", + "clearCacheFailed": "Falha ao limpar o cache", "cacheHits": "Acertos de Cache", "cacheMisses": "Erros de Cache", "hitRate": "Taxa de Acerto", "cacheEntries": "Entradas no Cache", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Configurações de cache", + "semanticCache": "Cache semântico", + "maxEntries": "Máximo de entradas", + "ttlMinutes": "TTL (minutos)", "promptCache": "Cache de Prompt", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Estratégia", + "preserveClientCache": "Preservar cache do cliente", + "enabled": "Ativado", "loading": "Loading...", "saving": "Salvando...", - "save": "Save", + "save": "Salvar", "circuitBreaker": "Disjuntor", "retryPolicy": "Política de Retentativa", "maxRetries": "Máximo de Tentativas", "retryDelay": "Intervalo de Retentativa", - "timeoutMs": "Timeout (ms)", + "timeoutMs": "Tempo limite (ms)", "enableSystemPrompt": "Ativar Prompt do Sistema", "systemPromptText": "Texto do Prompt do Sistema", "autoDisableBannedAccounts": "Auto-desativar contas banidas", "autoDisableDescription": "Marca permanentemente conexões de provedor como desativadas quando retornam sinais terminais de banimento (ex.: HTTP 403 'verify your account'). Isso remove a conexão da rotação de combos.", "autoDisableThreshold": "Limite de banimento", "autoDisableThresholdDesc": "Quantidade de sinais consecutivos de banimento antes da desativação permanente.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedScope": "Aplicar desativação automática a", + "autoDisableBannedScopeDesc": "As vagas de login (assinaturas pagas e contas gratuitas) podem ser bloqueadas pelo provedor upstream se o OmniRoute continuar tentando novamente após um banimento. Chaves de API pré-pagas não apresentam esse risco — mantenha-as no pool para que o preenchimento prioritário possa usar a próxima chave.", + "autoDisableBannedScopeAll": "Todas as conexões", + "autoDisableBannedScopeAllDesc": "Desative todas as conexões que retornarem um sinal de banimento permanente, incluindo chaves de API pré-pagas.", + "autoDisableBannedScopeSubscription": "Somente contas de login/assinatura", + "autoDisableBannedScopeSubscriptionDesc": "Desative vagas OAuth, de cookie, de sessão e de login pela web (pagas ou gratuitas). As chaves de API pré-pagas permanecem ativas para permitir o failover do roteamento.", "customBannedSignals": "Palavras-Chave Proibidas", "customBannedSignalsDesc": "Palavras-chave adicionais que acionam a detecção de banimento permanente da conta. Palavras-chave integradas sempre se aplicam.", "customBannedSignalsPlaceholder": "chave da API revogada", @@ -6756,7 +6755,7 @@ "showTailscaleFunnelDesc": "Mostre os controles do Tailscale Funnel na página Endpoint.", "showNgrokTunnel": "Túnel Ngrok", "showNgrokTunnelDesc": "Mostre os controles do ngrok Tunnel na página Endpoint.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Ocultar itens da barra lateral", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", "presetAll": "Tudo", @@ -6767,7 +6766,7 @@ "presetMinimalDesc": "Apenas páginas principais", "presetDeveloper": "Desenvolvedor", "presetDeveloperDesc": "Ferramentas de dev & proxy", - "presetAdmin": "Admin", + "presetAdmin": "Administração", "presetAdminDesc": "Monitoramento & auditoria", "settingsSidebarTitle": "Personalização da Barra Lateral", "settingsSidebarDesc": "Escolha quais itens da barra lateral exibir. Essenciais mantém as ferramentas avançadas pesquisáveis.", @@ -6784,19 +6783,19 @@ "themeOrange": "Laranja", "themeCyan": "Ciano", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Personalize o nome e o logotipo do aplicativo", + "appName": "Nome do aplicativo", + "appNameDesc": "Nome de exibição mostrado na barra lateral e na aba do navegador", + "customLogo": "URL do logotipo personalizado", + "customLogoDesc": "URL da imagem do seu logotipo personalizado", + "uploadLogo": "Fazer upload do logotipo", + "resetLogo": "Restaurar padrão", + "logoPreview": "Pré-visualização", + "customFavicon": "Favicon do navegador", + "customFaviconDesc": "URL do seu favicon personalizado (exibido na aba do navegador)", + "uploadFavicon": "Fazer upload do favicon", + "resetFavicon": "Redefinir favicon", + "faviconPreview": "Pré-visualização do favicon", "logoFileTooLarge": "O arquivo de logo deve ter menos de 500KB", "faviconFileTooLarge": "O arquivo de favicon deve ter menos de 50KB", "invalidLogoFileType": "Tipo de arquivo inválido. Envie PNG, JPG, SVG, GIF ou WebP.", @@ -6966,7 +6965,7 @@ "proxyFreePoolSortQuality": "Qualidade", "proxyFreePoolSortLatency": "Latência", "proxyFreePoolSortRecent": "Mais recentes", - "proxyFreePoolListTotal": "Listed", + "proxyFreePoolListTotal": "Listados", "proxyFreePoolLoadMore": "Carregar mais", "close": "Fechar", "cancel": "Cancelar", @@ -7093,17 +7092,17 @@ "providerAccountRoutingDesc": "Substitui a estratégia global de contas para este provedor (paridade com 9router).", "providerRoutingStrategy": "Estratégia de conta", "providerRoutingInheritGlobal": "Herdar padrão global", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Limite de verificação prévia de cota", + "quotaPreflightSubtitle": "Ignore contas sem cota antes de enviar a solicitação ao upstream", + "quotaPreflightEnable": "Ativar verificação prévia de cota", + "quotaPreflightEnableDesc": "Antes de cada solicitação, verifique a cota restante da conta (janelas de 5 h/semanais/mensais). Contas no limite ou abaixo dele são ignoradas sem uma chamada ao upstream. Os limites por janela definidos na página Cota do provedor sempre prevalecem sobre o padrão definido aqui.", + "quotaPreflightCutoff": "Limite global (mín. restante em %)", + "quotaPreflightCutoffDesc": "Pare de usar uma conta quando a cota restante cair para esta porcentagem ou abaixo dela, em todas as janelas sem um limite próprio. Corresponde às barras de porcentagem restante na página Cota do provedor.", + "quotaPreflightWindowsHint": "As janelas com limite próprio por janela ou por provedor (definido na janela modal Limite da página Cota do provedor) não são afetadas por este padrão.", + "quotaPreflightLoadFailed": "Não foi possível carregar as configurações de verificação prévia de cota.", "modelAliases": "Aliases de Modelo", "modelAliasesTitle": "Aliases de Modelo", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Remapeie nomes de modelos usando correspondências exatas ou padrões com caracteres curinga.", "addCustomAlias": "Adicionar Alias Personalizado", "deprecatedModelId": "ID do modelo depreciado", "newModelId": "Novo ID do modelo", @@ -7192,11 +7191,11 @@ "comboStrategyAria": "Estratégia de combo", "priority": "Prioridade", "weighted": "Ponderado", - "contextRelay": "Context Relay", + "contextRelay": "Retransmissão de contexto", "contextRelayDesc": "Roteamento estilo prioridade com handoffs automáticos de contexto quando a conta gira", "maxRetriesLabel": "Máx. Tentativas", "retryDelayLabel": "Atraso entre Tentativas (ms)", - "timeoutLabel": "Timeout (ms)", + "timeoutLabel": "Tempo limite (ms)", "healthCheck": "Verificação de Saúde", "healthCheckDesc": "Verificar disponibilidade do provedor antes", "trackMetrics": "Rastrear Métricas", @@ -7333,7 +7332,7 @@ "configured": "configurado", "none": "Nenhum", "modelOverrideValuePlaceholder": "Valor numérico", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Separado por vírgulas em inglês, por exemplo: low, medium, high", "addKeyValue": "Adicionar valor da chave", "noModelOverrides": "Nenhuma substituição configurada para este modelo.", "modelOverrideLoadFailed": "Falha ao carregar substituições de modelo", @@ -7384,21 +7383,21 @@ "themeCoral": "Coral", "adaptiveVolumeRouting": "Roteamento de Volume Adaptativo", "adaptiveVolumeRoutingDesc": "Escala conexões dinamicamente com base no volume e pressão na taxa de transferência.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "lkgpToggleTitle": "Último provedor funcional conhecido (LKGP)", + "lkgpToggleDesc": "Quando ativado, o roteador se lembra de qual provedor forneceu a última resposta bem-sucedida e tenta usá-lo primeiro nas solicitações seguintes.", "echoRequestedModelTitle": "Eco nome do modelo solicitado nas respostas", "echoRequestedModelDesc": "Quando ativado, o campo `model` da resposta ecoa o alias ou nome da combinação que o cliente solicitou em vez do nome do modelo upstream. Corrige clientes rigorosos (por exemplo, Claude Desktop) que rejeitam uma resposta cujo modelo não corresponde à solicitação.", "webSearchRouteTitle": "Roteamento de pesquisa na web", "webSearchRouteDesc": "Quando uma solicitação inclui uma ferramenta nativa web_search, roteie toda a solicitação para este modelo em vez do padrão — útil para provedores que não implementam a ferramenta de servidor web_search da Anthropic. Deixe em branco para desativar.", "webSearchRoutePlaceholder": "e.g. openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "Este padrão corresponde apenas a modelos pagos — habilite modelos pagos ou ajuste o padrão.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", + "clearLkgpCache": "Limpar cache do LKGP", + "lkgpCacheCleared": "Cache do LKGP limpo com sucesso", + "lkgpCacheClearFailed": "Falha ao limpar o cache do LKGP", "days": "Dias", "lkgp": "Modo LKGP", "lkgpDesc": "Último Provedor Bom Conhecido (Resiliência previsível)", - "maintenance": "Maintenance", + "maintenance": "Manutenção", "purgeExpiredLogs": "Purgar Logs Expirados", "purgeLogsFailed": "Falha ao purgar logs", "logsDeleted": "{count, plural, =0 {Nenhum log expirado removido} one {# log expirado removido} other {# logs expirados removidos}}", @@ -7417,30 +7416,30 @@ "resetUsageFailed": "Falha ao redefinir dados de uso", "reset": "Redefinir", "resetting": "Redefinindo...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", + "contextOpt": "Otimizado para contexto", + "contextOptDesc": "Faz o roteamento com base nos requisitos da janela de contexto e no tamanho da conversa", + "cacheOpt": "Otimizado para cache", + "cacheOptDesc": "Mantém o mesmo prefixo de prompt reutilizável na mesma conta do provedor", + "priorityDesc": "Fallback sequencial — tenta primeiro o provedor 1, depois o provedor 2 e assim por diante", + "weightedDesc": "Distribui o tráfego entre os provedores de acordo com pesos percentuais", + "modelRoutingTitle": "Regras de roteamento de modelos", + "modelRoutingDesc": "Roteia automaticamente os modelos para combos específicos usando padrões glob", + "addRule": "Adicionar regra", + "routeToCombo": "Rotear para o combo", + "selectCombo": "Selecione um combo...", + "priorityHint": "Quanto maior, mais cedo será verificado. Use 10+ para padrões específicos.", + "patternHint": "Use * para qualquer sequência de caracteres e ? para um único caractere. Não diferencia maiúsculas de minúsculas.", + "noRoutingRules": "Nenhuma regra de roteamento configurada. Por padrão, as solicitações usam o combo global.", + "routingRuleHint": "Adicione uma regra como claude-opus* -> frontier-combo para rotear solicitações automaticamente.", + "deleteRoutingRule": "Excluir esta regra de roteamento de modelos?", + "exactMatchMode": "Correspondência exata", + "wildcardPatternMode": "Padrão curinga", + "exactMatchModeDesc": "Use aliases exatos para IDs de modelos descontinuados ou renomeados.", + "wildcardPatternModeDesc": "Use aliases curinga com * e ? quando uma família de modelos precisar ser mapeada para um único destino.", + "noExactAliasesConfigured": "Nenhum alias de correspondência exata configurado.", + "wildcardRulesTitle": "Regras curinga", + "noWildcardAliasesConfigured": "Nenhum alias curinga configurado.", + "overview": "Visão geral", "unknownError": "Erro desconhecido", "pricingSourceLiteLLM": "LiteLLM", "clearSyncedPricingConfirm": "Limpar todos os dados de preços sincronizados via LiteLLM?", @@ -7448,32 +7447,32 @@ "pricingSourceUser": "Override", "pageDescription": "Page Description", "pricingSyncStatus": "Status da Sincronização", - "whitelist": "Whitelist", + "whitelist": "Lista de permissões", "syncDisabled": "Somente sync manual", "pricingLoadFailed": "Falha ao carregar dados de preços", "pricingSyncDescription": "Dispare o sync do LiteLLM, inspecione o status e diferencie preços sincronizados de overrides manuais.", "clearSyncedPricingSuccess": "Dados sincronizados de preços removidos", "clearSyncedPricingFailedWithReason": "Falha ao limpar dados sincronizados de preços: {reason}", "pricingSourceDefault": "Padrão", - "pricingSyncSuccess": "Pricing synced successfully", + "pricingSyncSuccess": "Preços sincronizados com sucesso", "enableSyncError": "Enable Sync Error", "syncEnabled": "Sincronização periódica ativada", - "blacklist": "Blacklist", + "blacklist": "Lista de bloqueios", "pricingSourceModelsDev": "models.dev", "syncedModels": "Modelos Sincronizados", - "budget": "Budget", + "budget": "Orçamento", "pricingSyncTitle": "Sincronização de Preços", "pricingResetFailedWithReason": "Falha ao resetar preços: {reason}", - "tab": "Tab", + "tab": "Aba", "pricingSavedProvider": "Preços salvos para {provider}", "pricingSyncFailed": "Falha na sincronização de preços", "pricingSaveFailedWithReason": "Falha ao salvar preços: {reason}", "pricingResetProvider": "Preços resetados para {provider}", - "nextSync": "Next Sync", + "nextSync": "Próxima sincronização", "pricingSyncFailedWithReason": "Falha na sincronização de preços: {reason}", "clearSyncedPricing": "Limpar Sync", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "compressionTitle": "Compressão de prompt", + "compressionDesc": "Reduza o uso de tokens compactando os prompts antes de enviá-los aos provedores", "compressionGuidanceFullGuideLink": "Guia completo de compressão", "compressionGuidanceShow": "Detalhes", "compressionGuidanceHide": "Ocultar detalhes", @@ -7489,41 +7488,41 @@ "tokenSaverInputCompressionDesc": "Reescreva o histórico de chat elegível enquanto preserva código, URLs e intenção.", "tokenSaverFineTunePrefix": "Ajuste fino de cada motor em", "tokenSaverFineTuneSuffix": "ou combine engines por solicitação ativada", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Modo de compactação", + "compressionModeOff": "Desativado", + "compressionModeOffDesc": "Nenhuma compactação aplicada", + "compressionModeLite": "Leve", + "compressionModeLiteDesc": "Redução de espaços em branco e linhas vazias", + "compressionModeStandard": "Padrão (Caveman)", + "compressionModeStandardDesc": "Compactação baseada em regras com mais de 30 padrões, preservando blocos de código e URLs", + "compressionModeAggressive": "Agressivo", + "compressionModeAggressiveDesc": "Resumo + compactação de resultados de ferramentas + envelhecimento progressivo para máxima economia", "compressionModeUltra": "Ultra", - "compressionModeUltraDesc": "Heuristic token pruning with optional local SLM fallback", - "compressionAggressiveConfig": "Aggressive Engine Configuration", - "compressionAggressiveConfigDesc": "Fine-tune summarization, tool compression, and aging thresholds", - "compressionUltraConfig": "Ultra Engine Configuration", - "compressionUltraConfigDesc": "Fine-tune heuristic pruning, SLM fallback, and per-message thresholds", - "compressionUltraRate": "Keep Rate", - "compressionUltraMinScore": "Minimum Score Threshold", - "compressionUltraSlmFallback": "Fallback to Aggressive", - "compressionUltraModelPath": "SLM Model Path", + "compressionModeUltraDesc": "Remoção heurística de tokens com fallback opcional para SLM local", + "compressionAggressiveConfig": "Configuração do mecanismo agressivo", + "compressionAggressiveConfigDesc": "Ajuste detalhado do resumo, da compactação de ferramentas e dos limites de envelhecimento", + "compressionUltraConfig": "Configuração do mecanismo Ultra", + "compressionUltraConfigDesc": "Ajuste detalhado da remoção heurística, do fallback para SLM e dos limites por mensagem", + "compressionUltraRate": "Taxa de retenção", + "compressionUltraMinScore": "Limite mínimo de pontuação", + "compressionUltraSlmFallback": "Usar o modo Agressivo como fallback", + "compressionUltraModelPath": "Caminho do modelo SLM", "compressionUltraEngine": "Ultra nível", "compressionUltraEngineHeuristic": "Heurística (Tier-A, padrão)", - "compressionUltraEngineSlm": "SLM (LLMLingua-2, opt-in)", + "compressionUltraEngineSlm": "SLM (LLMLingua-2, ativação opcional)", "compressionUltraSlmHint": "O SLM baixa um pequeno modelo ONNX na primeira utilização (cold-start) e recorre de forma transparente à heurística em caso de timeout ou se estiver indisponível.", "compressionUltraSlmPrewarm": "Pré-aquecer o modelo SLM ao habilitar", - "compressionSummarizerEnabled": "Enable Summarizer", - "compressionMaxTokensPerMessage": "Max Tokens Per Message", - "compressionMinSavings": "Min Savings Threshold", - "compressionAgingThresholds": "Aging Thresholds", - "compressionAgingThresholdsDesc": "Number of recent messages kept at each aging tier (higher = more preserved)", - "compressionToolStrategies": "Tool Result Strategies", - "compressionToolStrategiesDesc": "Toggle compression strategies for different tool result types", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionSummarizerEnabled": "Ativar gerador de resumos", + "compressionMaxTokensPerMessage": "Máximo de tokens por mensagem", + "compressionMinSavings": "Limite mínimo de economia", + "compressionAgingThresholds": "Limites de envelhecimento", + "compressionAgingThresholdsDesc": "Número de mensagens recentes mantidas em cada nível de envelhecimento (maior = mais mensagens preservadas)", + "compressionToolStrategies": "Estratégias para resultados de ferramentas", + "compressionToolStrategiesDesc": "Ative ou desative estratégias de compactação para diferentes tipos de resultados de ferramentas", + "compressionGeneral": "Configurações gerais", + "compressionAutoTrigger": "Limite de acionamento automático", + "compressionCacheTTL": "TTL do cache", + "compressionPreserveSystem": "Preservar prompt do sistema", "compressionPreserveSystemAlways": "Sempre", "compressionPreserveSystemWhenNoCache": "Quando não há cache", "compressionPreserveSystemNever": "Nunca", @@ -7536,27 +7535,27 @@ "compressionExclusionsSaved": "Salvo", "compressionExclusionsCount": "{count, plural, one {# exclusão configurada} other {# exclusões configuradas}}", "compressionExclusionsEmpty": "Nenhuma exclusão configurada — todo modelo/endpoint é elegível para compressão (comportamento padrão).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Configuração do mecanismo Caveman", + "compressionCavemanConfigDesc": "Ajuste detalhado do mecanismo de compactação baseado em regras", "compressionCavemanPanelHint": "Ativado/desativado e o nível são definidos no painel:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Compactar funções das mensagens", + "compressionRoleUser": "Usuário", + "compressionRoleAssistant": "Assistente", + "compressionRoleSystem": "Sistema", + "compressionMinLength": "Tamanho mínimo da mensagem", + "compressionSkipRules": "Ignorar regras de compactação", + "compressionSkipRulesDesc": "Clique nas regras para ignorá-las durante a compressão", + "compressionPreservePatterns": "Preservar padrões", + "compressionPreservePatternsDesc": "Padrões de regex que nunca são comprimidos (um por linha)", + "compressionLogTitle": "Log de compressão", + "compressionLogEmpty": "Ainda não há solicitações comprimidas. As estatísticas de compressão aparecerão aqui quando as solicitações forem processadas com a compressão ativada.", "minutes": "minutos", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", + "compressionModeRtkDesc": "Filtragem de saída de ferramentas sensível a comandos", "compressionModeCodexResponses": "Saída de ferramenta do Responses", "compressionModeCodexResponsesDesc": "Compressão conservadora para saídas elegíveis de shell, patch, busca, build e JSON", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", + "compressionModeStacked": "Empilhado", + "compressionModeStackedDesc": "Filtragem de saída de ferramentas do RTK seguida pela compressão de mensagens do Caveman", "qdrantTitle": "Qdrant (Memoria vetorial)", "qdrantDesc": "Opcional. Indexa memorias semanticas em um banco vetorial externo para busca mais rapida.", "qdrantStatusActive": "Ativo", @@ -7604,19 +7603,19 @@ "resilienceScope": "Escopo:", "resilienceTrigger": "Gatilho:", "resilienceEffect": "Efeito:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", + "resilienceRequestQueueTitle": "Fila e limite de solicitações", + "resilienceAutoEnableApiKeyProviders": "Ativar automaticamente para provedores com chave de API", + "resilienceRequestsPerMinute": "Solicitações por minuto", + "resilienceMinTimeBetweenRequests": "Tempo mínimo entre solicitações", + "resilienceConcurrentRequests": "Solicitações simultâneas", "resilienceConnectionScopeConcurrentRequests": "Solicitações simultâneas por conexão/escopo de cota", "resilienceGlobalConcurrentRequests": "Solicitações upstream simultâneas globais (0 = desativado)", "resilienceMaxQueueWaitTime": "Tempo máximo de espera na fila", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Tempo de espera base", + "resilienceUseUpstreamRetryHints": "Usar indicações de nova tentativa do upstream", + "resilienceDefaultPerProvider": "Padrão (por provedor)", + "resilienceAlwaysOn": "Sempre ativado", + "resilienceAlwaysOff": "Sempre desativado", "routingRemoveEntry": "Remover entrada", "routingNeedlesSubstrings": "Agulhas (substrings para combinar)", "routingCaseSensitive": "Diferencia maiúsculas de minúsculas", @@ -7673,7 +7672,7 @@ "routingAntigravitySignatureDesc": "Controla se o OmniRoute reutiliza apenas assinaturas de pensamento do Gemini armazenadas ou aceita assinaturas fornecidas pelo cliente validadas em fluxos de tool-call compatíveis com Antigravity.", "routingAntigravitySignatureEnabledLabel": "Ativado", "routingAntigravitySignatureEnabledDesc": "Comportamento atual. Ignora assinaturas fornecidas pelo cliente e continua usando o fluxo armazenado do OmniRoute.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Ignorar", "routingAntigravitySignatureBypassDesc": "Aceita assinaturas fornecidas pelo cliente após validação leve e recorre à assinatura armazenada quando inválida.", "routingAntigravitySignatureBypassStrictLabel": "Bypass Estrito", "routingAntigravitySignatureBypassStrictDesc": "Exige validação completa de protobuf antes de aceitar uma assinatura fornecida pelo cliente.", @@ -7704,20 +7703,20 @@ "visionBridgePromptHint": "Enviado ao modelo de visão antes que a descrição extraída seja injetada de volta na solicitação original.", "visionBridgeTimeoutMs": "Tempo limite (ms)", "visionBridgeMaxImagesPerRequest": "Máximo de imagens por solicitação", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Máximo de etapas de recuo", + "resilienceProviderBreakerTitle": "Disjuntor por provedor", + "resilienceFailureThreshold": "Limite de falhas", + "resilienceDegradationThreshold": "Limite de degradação", "resilienceResetTimeout": "Redefinir tempo limite", "resilienceFailureThresholdLabel": "Limite de falha", "resilienceResetTimeoutLabel": "Redefinir tempo limite", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Tempo de espera da conexão", "resilienceUseUpstreamRetryHintsLabel": "Use dicas de nova tentativa upstream", "resilienceUseUpstream429BreakerLabel": "Use dicas upstream 429 (disjuntor)", "resilienceMaxBackoffStepsLabel": "Etapas máximas de espera", "resilienceYes": "Sim", "resilienceNo": "Não", - "resilienceDefault": "Default", + "resilienceDefault": "Padrão", "storageDatabaseBackupRetention": "Retenção de backup de banco de dados", "storageDatabaseBackups": "Backups de banco de dados", "storageBackupRetentionDescription": "Os backups automáticos do SQLite são armazenados em", @@ -7758,7 +7757,7 @@ "storageRetentionCleanup": "Configurações de Retenção", "storageRetentionCleanupDesc": "Configure a retenção de registros operacionais e a limpeza de backup do banco de dados.", "retentionCallDays": "Chamar {count}d", - "retentionAppDays": "App {count}d", + "retentionAppDays": "Aplicativo {count}d", "retentionRows": "{count} linhas", "retentionQuotaSnapshots": "Instantâneos de cota (dias)", "retentionCompressionAnalytics": "Análise de Compressão (dias)", @@ -7836,14 +7835,14 @@ "compressionDerivedMode": "modo: {mode}", "compressionAdaptiveOff": "Orçamento de contexto adaptativo: desligado (auto-gatilho legado)", "compressionAdaptiveTarget": "Adaptativo ({mode}, política: {policy}) — alvo ≈ {target, number} tokens (para uma janela de {contextLimit, number} tokens)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Orçamento de contexto adaptativo", + "compressionAdaptiveModeOff": "Desativado (acionamento automático legado)", + "compressionAdaptiveModeFloor": "Mínimo (sempre garantir o ajuste)", + "compressionAdaptiveModeReplace": "Substituir acionamento automático", + "compressionAdaptivePolicy": "Política de orçamento", + "compressionAdaptivePolicyReserve": "Reservar saída", + "compressionAdaptivePolicyPercentage": "Porcentagem da janela", + "compressionAdaptivePolicyAbsolute": "Orçamento absoluto de tokens", "compressionOutputStylesDescription": "Injeta instruções de modelagem de resposta sem reescrever a saída do provedor. Combine livremente.", "mcpAccessibilityDescription": "Delimita o escopo das saídas de ferramentas MCP (armazenamento separado).", "compressionStylesTileSummary": "{tokens, number} tokens economizados · {runs, plural, one {# execução estilizada} other {# execuções estilizadas}}", @@ -7851,14 +7850,14 @@ "compressionLevel": { "minimal": "Minima", "standard": "Padrão", - "aggressive": "Aggressive", - "lite": "Lite", + "aggressive": "Agressivo", + "lite": "Leve", "full": "Completa", "ultra": "Ultra" }, "compressionEngine": { "session-dedup": { - "label": "Session Dedup", + "label": "Desduplicação de sessão", "description": "Deduplicação de blocos entre turnos." }, "ccr": { @@ -7866,7 +7865,7 @@ "description": "Marcadores de recuperação endereçados por conteúdo." }, "lite": { - "label": "Lite", + "label": "Leve", "description": "Limpeza de espaços em branco e formatação." }, "rtk": { @@ -7874,11 +7873,11 @@ "description": "Filtragem de saída de comando." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Saída da ferramenta Responses", + "description": "Compressão conservadora para saídas compatíveis da ferramenta Responses." }, "headroom": { - "label": "Headroom", + "label": "Margem disponível", "description": "Compactação tabular de JSON." }, "relevance": { @@ -7886,11 +7885,11 @@ "description": "Pontuação extrativa de frases em relação à última consulta do usuário." }, "caveman": { - "label": "Caveman", + "label": "Homem das cavernas", "description": "Compressão de prosa baseada em regras." }, "aggressive": { - "label": "Aggressive", + "label": "Agressivo", "description": "Resume e envelhece turnos antigos." }, "llmlingua": { @@ -7916,12 +7915,12 @@ "description": "Escada YAGNI: menor mudança funcional, sem abstrações não solicitadas." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Rabo de cavalo (dev sênior preguiçoso)", + "description": "Disciplina de dev sênior preguiçoso: suba a escada do YAGNI, corrija a causa raiz e faça o menor diff funcional." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Tenho TDAH (ação primeiro)", + "description": "Saída orientada à ação: comece pela próxima ação, numere as etapas, indique uma única próxima etapa concreta e não use preâmbulo." }, "terse-cjk": { "label": "CJK conciso (文言)", @@ -7939,6 +7938,14 @@ "cliproxyapiFallback": "substituto CLIProxyAPI", "cliproxyapiEnableFallback": "Habilitar substituto CLIProxyAPI", "cliproxyapiUrl": "URL CLIProxyAPI", + "headroomProxyTitle": "Proxy Headroom", + "headroomProxyDesc": "URL do proxy opcional Headroom para economizar tokens. Se estiver vazio, usa HEADROOM_URL ou http://localhost:8787.", + "headroomProxyUrl": "URL do Headroom", + "headroomProxyUrlHint": "URLs de loopback podem ser iniciadas nesta página. URLs externas são apenas sondadas.", + "headroomProxySave": "Salvar", + "headroomProxyStart": "Iniciar", + "headroomProxyStop": "Parar", + "headroomProxyExternalHint": "Esta URL não é de loopback, portanto o OmniRoute não iniciará a CLI local.", "cliproxyapiStatus": "Status CLIProxyAPI", "cliproxyapiNotDetected": "Não detectado", "cliproxyapiImportAuthTitle": "Importar contas do CLIProxyAPI", @@ -7997,11 +8004,11 @@ "codexFastTierDesc": "Injete globalmente service_tier=priority para solicitações do OpenAI Codex.", "codexFastTierHint": "Quando habilitado, o OmniRoute adiciona service_tier=priority às solicitações de saída do Codex para conexões que ainda não especificam uma camada. O nível de prioridade requer uma chave de API OpenAI Enterprise ou o caminho ChatGPT-auth Codex; outros tipos de chave receberão um erro relacionado ao nível do OpenAI. As configurações por conexão na página do provedor Codex têm precedência.", "codexFastTierSaveError": "Falha ao atualizar a configuração do Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Ping automático da cota do Codex", + "codexAutoPingDesc": "Ativação por conexão: envia uma pequena solicitação logo após a redefinição da janela de sessão do Codex, para que ela não esteja fria quando você precisar usá-la.", + "codexAutoPingWarning": "Consome uma pequena quantidade da cota real do Codex a cada ping. Desativado por padrão — ative apenas para conexões das quais você depende ativamente.", + "codexAutoPingSaveError": "Falha ao atualizar a configuração de ping automático do Codex", + "codexAutoPingToggleAria": "Alternar o ping automático da cota do Codex para {connection}", "codexFastTierTierLabel": "Camada de serviço", "codexFastTierTierPriority": "Prioridade", "codexFastTierTierFlex": "Flex", @@ -8210,12 +8217,12 @@ "modelLockoutMaxBackoffStepsDescription": "Número máximo de etapas de retrocesso antes que o tempo de espera pare de crescer. O limite máximo de tempo de espera é alcançado primeiro na maioria das configurações, tornando isso um teto de segurança para quando o tempo de espera máximo é aumentado.", "disableSessionStickiness": "Desabilitar fixação de sessão", "disableSessionStickinessDesc": "Combos round-robin e aleatórios alternam para uma conexão diferente a cada requisição, em vez de fixar toda a conversa em uma conexão pelo hash da primeira mensagem. Deixe desativado para preservar acertos de cache de prompt em conversas com múltiplos turnos. Sobrescritas por combo têm prioridade.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Roteamento por localidade do cache de prompts", + "promptCacheAffinityDesc": "Prefira a mesma conta de provedor para chaves de cache de prompts correspondentes, preservando o failover por integridade e cota.", + "reasoningTokenBuffer": "Buffer de tokens de raciocínio", + "reasoningTokenBufferDesc": "Permita que o roteamento combinado adicione uma margem a max_tokens somente para modelos de raciocínio conhecidos quando o buffer completo couber em um limite de saída conhecido.", + "zeroLatencyOptimizations": "Otimizações de latência zero", + "zeroLatencyOptimizationsDesc": "Ative hedging, pulos preditivos de TTFT e compressão proativa de fallback. Deixe desativado para impedir que esses recursos de latência disputem com os destinos ou comprimam solicitações de fallback.", "credentialRedaction": "Redação de Credenciais", "credentialRedactionDesc": "Redija chaves de API, tokens e segredos do contexto enviado para provedores e das respostas.", "enableCredentialRedaction": "Ativar a ocultação de credenciais", @@ -8372,15 +8379,7 @@ "cliproxyapiHealth": "Saúde", "cliproxyapiPort": "Porta", "qdrantHost": "Host", - "qdrantCollection": "Coleção", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Coleção" }, "contextRtk": { "title": "Motor RTK", @@ -8424,7 +8423,7 @@ "masterSwitchOffAlert": "O interruptor mestre do Token Saver está DESLIGADO — estas configurações não afetarão as solicitações até que você o ligue na página de Endpoint.", "tokensFiltered": "Tokens filtrados", "filtersActive": "Filtros ativos", - "requests": "Requests", + "requests": "Solicitações", "avgSavings": "Economia media", "simpleMode": "Simples", "advancedMode": "Avançado", @@ -8441,7 +8440,7 @@ "discoverSamples": "{count} amostra(s) escaneada(s)", "discoverHits": "{hits}× em amostras", "learnHeading": "Aprenda um filtro para um comando", - "learnCommandPlaceholder": "e.g. npm install", + "learnCommandPlaceholder": "ex.: npm install", "learnButton": "Sugerir filtro", "learnEmpty": "Nenhuma sugestão ainda. Digite um comando que você executou e escaneie.", "learnSamplesUsed": "Aprendido com {count} amostra(s) correspondente(s)", @@ -8473,9 +8472,9 @@ "saveFailed": "Falha ao salvar configuração.", "previewFailed": "Falha na pré-visualização.", "panelPointerPrefix": "Ative ou desative esta camada e defina seu nível em", - "compressionSettings": "Compression Settings", + "compressionSettings": "Configurações de compressão", "panelPointerSuffix": ". Esta página edita apenas sua configuração detalhada.", - "configuration": "Configuration", + "configuration": "Configuração", "noAdditionalConfiguration": "Nenhuma configuração adicional.", "save": "Salvar", "saving": "Salvando…", @@ -8489,7 +8488,7 @@ "savings": "Economia", "original": "Original", "compressed": "Comprimido", - "diff": "Diff", + "diff": "Diferença", "last7Days": "Últimos 7 dias", "noDataYet": "Sem dados ainda", "runs": "Execuções", @@ -8507,7 +8506,7 @@ "description": "Compactação tabular sem perdas de arrays JSON homogêneos com marcadores explícitos de contagem de linhas." }, "session-dedup": { - "name": "Session Dedup", + "name": "Desduplicação de sessão", "description": "Deduplicação de blocos entre turnos com marcadores de conteúdo recuperáveis." }, "ccr": { @@ -8523,7 +8522,7 @@ "description": "Redução rápida de espaços em branco, resultados de ferramentas e URLs de imagem." }, "aggressive": { - "name": "Aggressive", + "name": "Agressivo", "description": "Resumo, compressão de resultados de ferramentas e envelhecimento progressivo." }, "ultra": { @@ -8636,11 +8635,11 @@ "removeStep": "Remover", "name": "Nome", "descriptionField": "Descricao", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", + "languagePacks": "Pacotes de idiomas", + "outputMode": "Modo de saída", "assignToRouting": "Atribuir a Combos de Roteamento", "noAssignments": "Nenhum combo de roteamento disponivel", - "default": "Default", + "default": "Padrão", "setAsDefault": "Definir como default", "save": "Salvar", "cancel": "Cancelar", @@ -8661,7 +8660,7 @@ "defaultFromPanel": "Padrão (do painel)", "runs": "Executa:", "defaultConfiguredPrefix": "Padrão — configurado em", - "compressionSettings": "Compression Settings", + "compressionSettings": "Configurações de compressão", "providerDelegated": "Compressão delegada ao provedor", "contextEditingClaude": "Edição de Contexto (Claude)", "contextEditingDescription": "Permite que o provedor limpe blocos antigos de uso de ferramentas no lado do servidor, sem reescrever a mensagem.", @@ -8669,8 +8668,10 @@ "contextEditingNote": "Atualmente disponível apenas para Claude (Anthropic). É um modo delegado: o provedor limpa blocos antigos de uso de ferramentas no lado do servidor — não reescrevemos a mensagem. Não afeta outros provedores.", "namedCombos": "Combos nomeados", "namedCombosDescription": "Salve pipelines diferentes e atribua-os a combos de roteamento específicos.", + "activeProfileMasterSwitchOffWarning": "O perfil ativo abaixo não será executado até que a chave mestra \"Compressão de prompts\" seja ativada.", + "activeProfileMasterSwitchOffCta": "Ativar nas Configurações", "comboNamePlaceholder": "Nome do combo", - "descriptionPlaceholder": "Description", + "descriptionPlaceholder": "Descrição", "nameRequired": "Digite um nome de combo antes de salvar.", "pipelineRequired": "Adicione pelo menos uma etapa de pipeline antes de salvar.", "saveComboFailed": "Falha ao salvar combo (HTTP {status}).", @@ -8681,25 +8682,23 @@ "active": "Ativo", "languagePacksList": "Pacotes de idioma: {packs}", "dragToReorder": "Arraste para reordenar a etapa", - "engine": "Engine", - "intensity": "Intensidade", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "engine": "Mecanismo", + "intensity": "Intensidade" }, "compressionStudio": { "noRun": "Nenhuma execução de compressão disponível.", "liveDataHint": "Os dados em tempo real chegam pelo canal de compressão via WebSocket.", "cockpitView": "Visão de cockpit", "canvas": "Canvas", - "waterfall": "Waterfall", + "waterfall": "Cascata", "replayDone": "Replay concluído", "pauseReplay": "Pausar replay", "playReplay": "Reproduzir replay", "pause": "Pausar", - "replay": "Replay", + "replay": "Repetição", "resetReplay": "Redefinir replay", "stepProgress": "etapa {current}/{total}", - "inlineView": "Inline", + "inlineView": "Em linha", "splitComingSoon": "Visão dividida (em breve)", "inputPlaceholder": "Cole um prompt, saída de ferramenta ou contexto…", "activeCombined": "Ativo no fluxo combinado", @@ -8713,7 +8712,7 @@ "run": "Executar", "laneRejected": "rejeitado: {reason}", "error": "erro", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Falha na pré-visualização do pipeline combinado: {reason}", "combinedFlow": "Fluxo combinado", "eachLayer": "Cada camada separadamente", "diff": "Diferença", @@ -8733,16 +8732,16 @@ "spent": "gasto ${spent} / ${cap}", "capReached": "teto atingido", "loadAb": "Carregar A/B", - "engine": "Engine", + "engine": "Mecanismo", "savings": "Economia", "retention": "Retenção", "outputTokensShort": "Tokens de saída", "fidelity": "Fidelidade", "playTab": "Reproduzir", "compareTab": "Comparar", - "encoderComparison": "Encoder A/B — {count} array(s)", + "encoderComparison": "Codificador A/B — {count} matriz(es)", "encoderWinner": "vencedor: {winner}", - "encoder": "encoder", + "encoder": "codificador", "bytes": "bytes", "tokensCl100k": "tokens (cl100k)" }, @@ -8817,9 +8816,9 @@ "embeddedServices": { "title": "Serviços Embarcados", "description": "Engines locais gerenciadas sob demanda — CLIProxyAPI, 9Router, Mux e Bifrost. Acessíveis apenas via loopback.", - "stateRunning": "Running", - "stateStopped": "Stopped", - "stateStarting": "Starting", + "stateRunning": "Em execução", + "stateStopped": "Parado", + "stateStarting": "Iniciando", "stateStopping": "Parando", "stateError": "Erro", "stateNotInstalled": "Não instalado", @@ -8848,7 +8847,7 @@ "keyRevealEmpty": "Falha na revelação: chave não retornada", "reveal": "Revelar", "revealing": "Revelando…", - "hide": "Hide", + "hide": "Ocultar", "rotateKey": "Rotacionar chave", "rotating": "Rotacionando…", "keyAutoHide": "A chave será ocultada automaticamente em 30 segundos.", @@ -8857,7 +8856,7 @@ "cancel": "Cancelar", "install9Router": "Instalar 9Router", "install9RouterDescription": "Baixa e instala o 9Router via npm. Requer aproximadamente 500 MB de espaço em disco.", - "version": "Version", + "version": "Versão", "versionHint": "Digite “latest” ou uma versão específica (por exemplo, 1.2.3).", "servicePort": "Porta", "servicePortHint": "O OmniRoute e o 9Router precisam usar portas diferentes. A porta padrão do 9Router é 20130.", @@ -8915,11 +8914,11 @@ "advancedConfigDesc": "Ajustar o comportamento da compactação", "aggressiveSettings": "Configurações agressivas", "aggressiveSettingsDesc": "Compressão máxima com potenciais compensações de qualidade", - "requests": "Requests", + "requests": "Solicitações", "tokensSaved": "Tokens salvos", "savingsPercent": "Economia %", "avgLatency": "Latencia media", - "languagePacks": "Language Packs", + "languagePacks": "Pacotes de idiomas", "languagePacksDesc": "Ative regras de compressao para idiomas especificos.", "labelAutoTrigger": "Compactar automaticamente quando o contexto exceder", "labelCompressionRate": "Força de compressão", @@ -8936,7 +8935,7 @@ "masterDisabledWarning": "O interruptor mestre do Token Saver está DESLIGADO — essas configurações não afetarão as solicitações até que você o ative em Configurações de Compressão ou o altere aqui.", "outputMode": "Modo de saída", "outputModeDesc": "Instrui o LLM a responder em formato curto e compacto.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Modo de saída", "quickSettings": "Configurações rápidas", "quickSettingsDesc": "Configurações básicas de compactação para começar", "autoClarity": "Bypass Auto-Clarity", @@ -8995,7 +8994,7 @@ "ideCliIntegrations": "Integrações IDE/CLI", "inMemoryNote": "Nota: os eventos são armazenados em memória e reiniciados quando o servidor reinicia.", "ok": "OK", - "errorShort": "ERR", + "errorShort": "ERRO", "formatConverter": "Conversor de Formato", "formatConverterDescription": "Cole ou digite um corpo de requisição JSON. O tradutor detectará automaticamente o formato de origem e converterá para o formato de destino. Use isso para depurar como o OmniRoute traduz requisições entre formatos (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (intermediário) → {target}", @@ -9041,20 +9040,20 @@ "passed": "aprovados", "failed": "falharam", "passedIconLabel": "✅ Aprovado", - "chunks": "chunks", + "chunks": "blocos", "scenarioSimpleChat": "Chat Simples", "scenarioToolCalling": "Chamada de Ferramenta", "scenarioMultiTurn": "Multiturno", "scenarioThinking": "Raciocínio", "scenarioSystemPrompt": "Prompt de Sistema", - "scenarioStreaming": "Streaming", + "scenarioStreaming": "Transmissão", "templateNames": { "simple-chat": "Chat Simples", "tool-calling": "Chamada de Ferramenta", "multi-turn": "Multiturno", "thinking": "Raciocínio", "system-prompt": "Prompt de Sistema", - "streaming": "Streaming", + "streaming": "Transmissão", "vision": "Visão", "schema-coercion": "Coerção de esquema" }, @@ -9184,7 +9183,7 @@ "scenarioVision": "Visão (compreensão da imagem)", "scenarioSchemaCoercion": "Coerção de esquema (saída estruturada)", "techniques": "Técnicas:", - "friendlyTitle": "Translator", + "friendlyTitle": "Tradutor", "friendlySubtitle": "Use sua app existente com qualquer provider — sem reescrever código.", "conceptHeadline": "Sua app fala o \"idioma\" de uma API. O Translator converte para usar outro provider.", "conceptDiagramAppLabel": "Sua app", @@ -9196,8 +9195,8 @@ "conceptDiagramExampleTarget": "Gemini", "conceptHowItWorksToggle": "Como funciona", "conceptHowItWorksBody": "Sua app envia um pedido no formato dela. O Translator detecta o formato, converte via OpenAI como hub intermediário (ou direto, quando há tradutor direto disponível), envia ao provider escolhido e devolve a resposta convertida de volta no formato da sua app.", - "tabTranslate": "Translate", - "tabMonitor": "Monitor", + "tabTranslate": "Traduzir", + "tabMonitor": "Monitorar", "tabTranslateAriaLabel": "Ir para a aba Translate", "tabMonitorAriaLabel": "Ir para a aba Monitor", "simpleAppUsesLabel": "Minha app usa", @@ -9210,7 +9209,7 @@ "simpleModeLabel": "Modo", "simpleModePreview": "Só ver tradução", "simpleModeSend": "Enviar e ver resposta", - "simpleAdvancedToggle": "Advanced", + "simpleAdvancedToggle": "Avançado", "simpleInputPanelTitle": "Entrada", "simpleInputPanelHint": "Mensagem em texto livre ou exemplo pronto", "simpleResultPanelTitle": "Tradução + Resposta", @@ -9221,17 +9220,17 @@ "narratedError": "Falhou: {reason}", "narratedSeeTranslatedJson": "ver JSON traduzido", "narratedSeePipeline": "ver pipeline", - "advancedSectionTitle": "Advanced", + "advancedSectionTitle": "Avançado", "advancedSectionSubtitle": "Raw JSON, pipeline e ferramentas técnicas. Tudo aqui é igual às tabs antigas — apenas reorganizado.", "advancedRawJsonTitle": "Raw JSON (auto-detecção + Monaco)", "advancedRawJsonSubtitle": "Cole um request JSON; o formato é detectado automaticamente.", "advancedPipelineTitle": "Pipeline OpenAI intermediário", "advancedPipelineSubtitle": "Visualize cada passo da tradução (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Transformador de fluxo (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Converte SSE Chat Completions em Responses API.", "advancedTestBenchTitle": "Test Bench (8 cenários)", "advancedTestBenchSubtitle": "Roda todos os cenários e reporta pass/fail + compatibilidade %.", - "advancedCompressionTitle": "Compression Preview", + "advancedCompressionTitle": "Prévia da compressão", "advancedCompressionSubtitle": "Estime economia de tokens em diferentes modos.", "monitorOriginHint": "Eventos gerados pelo Translate ou pelo pipeline principal aparecem aqui em tempo real.", "monitorEmptyCta": "Volte para a aba Translate e envie um request — ele aparecerá aqui.", @@ -9295,7 +9294,7 @@ "kimiMonthlyLimit": "Limite mensal", "kimiMonthlyLimitUnlimited": "Ilimitado", "kimiAdditionalCredits": "Créditos adicionais", - "loggerTab": "Logger", + "loggerTab": "Registrador", "proxyTab": "Proxy", "budgetManagement": "Gerenciamento de Orçamento", "budgetSaved": "Limites de orçamento salvos", @@ -9325,7 +9324,7 @@ "promptCache": "Cache de Prompt", "systemHealth": "Saúde do Sistema", "entries": "Entradas", - "activeCount": "{count} active", + "activeCount": "{count} ativos", "openCircuitBreakersDetected": "Disjuntores abertos detectados", "hitRate": "Taxa de Acerto", "hitsMisses": "Acertos / Erros", @@ -9344,7 +9343,7 @@ "evaluateStepDescription": "As respostas são comparadas com os critérios esperados. Veja aprovado/reprovado por caso com métricas de latência e feedback detalhado.", "evalsStrategyContainsLabel": "Contém", "evalsStrategyExactLabel": "Correspondência Exata", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Expressão regular", "evalsStrategyCustomLabel": "Lógica Personalizada", "evalsStrategyContainsDescription": "Verifica se a saída do LLM contém a substring esperada.", "evalsStrategyExactDescription": "Verifica se a saída do LLM corresponde exatamente ao valor esperado.", @@ -9381,7 +9380,7 @@ "runAllSuites": "Executar tudo", "runAllRunning": "Correndo tudo...", "runAllProgress": "Executando {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# suíte falhou} other {# suítes falharam}}", "runAllCompleted": "Executou {suites} suítes — {passed} aprovado, {failed} falhou", "runAllCompletedWithFailures": "Executei suítes {completed}; {failedSuites} não foi concluído", "runningProgress": "Executando {current}/{total}...", @@ -9444,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Falha ao atualizar a visibilidade da cota", "account": "Conta", "modelQuotas": "Cotas de Modelo", - "lastUsed": "Last Refreshed", + "lastUsed": "Última atualização", "actions": "Ações", "refreshQuota": "Atualizar cota", "today": "Hoje", @@ -9466,13 +9465,13 @@ "noQuotaDataAvailable": "Nenhum dado de cota disponível", "noAccountsForTierFilter": "Nenhuma conta encontrada para o filtro de plano", "tierAll": "Todos", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "tierEnterprise": "Empresarial", + "tierTeam": "Equipe", + "tierBusiness": "Negócios", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", + "tierFree": "Gratuito", "tierLite": "Lite", "tierUnknown": "Desconhecido", "statTotal": "Total", @@ -9523,26 +9522,26 @@ "suiteImportInvalid": "Conjunto de avaliação JSON inválido", "suiteBuilderCloneSuffix": "copiar", "suiteBuilderImportedSuite": "Suíte Importada", - "scorecardTitle": "Scorecard", + "scorecardTitle": "Painel de resultados", "evalApiKey": "Chave de API do Proxy", "scorecardPassRate": "Taxa Geral de Aprovação", "targetTypeModel": "Modelo", - "actualOutputLabel": "Actual Output", + "actualOutputLabel": "Saída real", "evalTargetHint": "Os padrões da suíte preservam o modelo configurado em cada caso de teste.", "suiteBuilderDeleted": "Suíte customizada removida", "suiteBuilderCaseCardHint": "Defina um prompt e uma asserção para esta checagem de regressão.", - "nextResetUtc": "Next reset (UTC)", + "nextResetUtc": "Próxima redefinição (UTC)", "scorecardHint": "Últimas taxas de aprovação armazenadas para execuções e alvos recentes.", "suiteLatestRunsHint": "As execuções armazenadas continuam disponíveis após atualizar a página.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", + "saving": "Salvando", + "suiteBuilderCaseModelLabel": "Modelo (opcional)", "evalControlsTitle": "Alvos de Execução", "suiteBuilderEditTitle": "Editar Suíte Customizada de Eval", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", + "suiteBuilderCaseStrategyLabel": "Estratégia de validação", "notifySelectDifferentCompareTarget": "Escolha um alvo de comparação diferente", "recentRunsHint": "O histórico sobrevive ao refresh e agora registra comparações combo-aware.", "evalCompareHint": "Comparação lado a lado opcional usando a mesma suíte.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", + "suiteBuilderCaseInvalid": "Este caso contém erros de validação. Corrija-os antes de salvar.", "historyEmpty": "Ainda não há execuções persistidas", "suiteBuilderUpdated": "Suíte customizada atualizada", "resetInterval": "Intervalo de reset", @@ -9552,17 +9551,17 @@ "evalCompareOptional": "Sem alvo de comparação", "suiteBuilderDeleteFailed": "Falha ao excluir a suíte customizada", "suiteBuilderCaseSystemPromptPlaceholder": "Instrução de sistema opcional para este caso.", - "scorecardCases": "Cases", + "scorecardCases": "Casos", "runCompletedWithScore": "Execução concluída com {score}% de aprovação", - "suiteBuilderCustomBadge": "Custom", + "suiteBuilderCustomBadge": "Personalizado", "targetSuiteDefaults": "Padrões da suíte", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", + "suiteBuilderDeleteConfirm": "Tem certeza de que deseja excluir esta suíte? Esta ação não pode ser desfeita.", "suiteBuilderNameLabel": "Nome da Suíte", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", + "scorecardSuites": "Suítes", + "evalCompareTarget": "Comparar destino", "suiteBuilderCaseModelPlaceholder": "gpt-4o-mini", "evalControlsHint": "Escolha um modelo ou combo, compare opcionalmente dois alvos e persista o histórico no SQLite.", - "recentRunsTitle": "Recent Runs", + "recentRunsTitle": "Execuções recentes", "suiteBuilderCaseSystemPromptLabel": "Prompt de Sistema", "suiteBuilderCaseExpectedPlaceholder": "Texto ou regex que deve aparecer na resposta do modelo.", "suiteBuilderCaseExpectedPlaceholderContains": "por exemplo def fibonacci", @@ -9570,9 +9569,9 @@ "suiteBuilderCaseExpectedPlaceholderRegex": "por exemplo ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Use uma expressão regular JavaScript sem quebrar barras.", "suiteBuilderNamePlaceholder": "Suíte de regressão de suporte ao cliente", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", + "suiteBuilderAddCase": "Adicionar caso", + "cancel": "Cancelar", + "evalTarget": "Destino", "suiteBuilderCaseNameLabel": "Nome do Caso", "weeklyLimitUsd": "Limite semanal (USD)", "suiteBuilderCaseUserPromptPlaceholder": "Escreva a entrada exata do usuário para repetir durante o eval.", @@ -9581,45 +9580,45 @@ "daily": "Diário", "resultErrorLabel": "Erro", "suiteBuilderBuiltInBadge": "Padrão", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderCaseCardTitle": "Caso de teste", "suiteBuilderDuplicateCase": "Duplicar", "weeklyLimitPlaceholder": "ex.: 25.00", "suiteBuilderCaseTagsHint": "Tags separadas por vírgula e armazenadas com o caso.", "notifyEvalRunFailedWithReason": "Falha na execução da avaliação: {reason}", "weekly": "Semanal", "runEvalRunning": "Executando...", - "delete": "Delete", + "delete": "Excluir", "resetTimeUtc": "Horário do reset (UTC)", "evalApiKeyAuto": "Usar sessão do dashboard / sem chave", "suiteBuilderDescriptionPlaceholder": "Explique o que esta suíte valida e por que ela importa.", "targetComparisonTitle": "Comparação de Alvos", - "save": "Save", + "save": "Salvar", "suiteBuilderCreated": "Suíte customizada criada", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", + "suiteLatestRuns": "Últimas execuções", + "suiteBuilderCaseExpectedLabel": "Valor esperado", + "historyLatency": "Latência", "suiteBuilderCaseTagsPlaceholder": "support, regression, billing", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", + "targetTypeCombo": "Combinado", + "scorecardPassed": "Aprovado", + "suiteBuilderCaseTagsLabel": "Etiquetas", + "suiteBuilderNewSuite": "Nova suíte", "notifyEvalLoadFailed": "Falha ao carregar os dados do dashboard de evals", "notConfigured": "Não configurado", "suiteBuilderCaseNamePlaceholder": "Resposta sobre política de reembolso", "intervalLabel": "Intervalo", - "suiteBuilderCreateAction": "Create Suite", + "suiteBuilderCreateAction": "Criar suíte", "suiteBuilderCasesHint": "Cada caso envia um prompt real pelo OmniRoute e valida a resposta com contains, exact ou regex.", - "suiteBuilderUpdatedAt": "Updated", + "suiteBuilderUpdatedAt": "Atualizado", "errorBadge": "Erro", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", + "suiteBuilderCasesTitle": "Casos de teste", + "edit": "Editar", "monthly": "Mensal", "suiteBuilderCasesRequired": "Adicione pelo menos um caso antes de salvar", - "weeklyLimitSummary": "Weekly budget limit summary", + "weeklyLimitSummary": "Resumo do limite do orçamento semanal", "suiteBuilderDescriptionLabel": "Descrição", "targetComparisonHint": "A mesma suíte foi executada contra múltiplos alvos.", "compareCompletedWithScore": "Comparação concluída. A execução principal terminou com {score}% de aprovação", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "staleQuotaTooltip": "Falha na última atualização — exibindo dados em cache", "quotaThresholdLabel": "Minutos restantes", "quotaCutoffsColumnHelp": "Interrompa as solicitações quando a cota restante cair para esse percentual ou menos.", "quotaCutoffsButtonDefault": "Padrão", @@ -9642,7 +9641,7 @@ "budgetKpiBlocked": "Bloqueado", "budgetKpiAtRisk": "Em risco", "budgetKpiActiveKeys": "Chaves ativas", - "budgetPageTitle": "Budget", + "budgetPageTitle": "Orçamento", "budgetPageDescription": "Defina limites de gastos diários, semanais e mensais para cada chave de API.", "budgetTemplateStorageHint": "{count, plural, one {# modelo} other {# modelos}} · edite via localStorage:", "budgetAboveLimitShort": "acima do limite ⚠", @@ -9668,7 +9667,7 @@ "alerting": "Alertando", "warning": "Aviso", "safe": "Seguro", - "no-limit": "No limit" + "no-limit": "Sem limite" }, "budgetColumnKey": "Chave", "budgetColumnToday": "Hoje", @@ -9753,7 +9752,7 @@ "proxy": "Proxy", "level": "Nível", "directNative": "Direto (nativo)", - "combo": "Combo", + "combo": "Combinado", "inputTokens": "E:", "outputTokens": "S:" }, @@ -9765,7 +9764,7 @@ "usageByAccount": "Uso por Conta", "failedToLoad": "Falha ao carregar estatísticas de uso.", "tokenHealth": "Saúde dos Tokens", - "totalOAuth": "Total OAuth", + "totalOAuth": "Total de OAuth", "healthy": "Saudável", "warning": "Aviso", "errored": "Com Erro", @@ -9871,7 +9870,7 @@ "backToLogin": "Voltar para o Login", "forgotPassword": "Esqueceu a senha?", "continueWithOidc": "Continuar com OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Senha padrão: CHANGEME (a menos que INITIAL_PASSWORD tenha sido definida)", "Authorization": "Autorização", "Content-Disposition": "Disposição de conteúdo", "waitingForAuthorization": "Aguardando autorização...", @@ -9880,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Aguardando autorização antigravidade...", "waitingForQoderAuthorization": "Aguardando autorização do Qoder...", "exchangingCodeForTokens": "Trocando código por tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Versão incompatível do Node.js", + "nodeIncompatibleDesc": "Você está executando o Node.js {version}, que não atende à política de runtimes seguros compatíveis com o OmniRoute. Use uma versão corrigida do Node.js 20.x ou 22.x LTS.", + "nodeIncompatibleFixLabel": "Correção: instale uma versão corrigida do Node.js 22 LTS", + "nodeIncompatibleHint": "O OmniRoute requer Node.js 22.22.2+ (22.x LTS) ou 24.0.0+ (24.x LTS). O Node 24 LTS é recomendado.", "resetViaAppDataTitle": "Redefinir via Dados do App", "resetViaAppDataDescription": "Exclua o arquivo de configurações do diretório de dados do aplicativo para redefinir sua senha:", "quitDesktopApp": "Saia do aplicativo desktop OmniRoute completamente", @@ -9941,7 +9940,7 @@ "navigateHome": "Navegar para a página inicial", "toggleMenu": "Alternar menu", "featuresLink": "Recursos", - "docsLink": "Docs", + "docsLink": "Documentação", "github": "GitHub", "versionLive": "v1.0 já está no ar", "oneEndpoint": "Um Endpoint para", @@ -9996,11 +9995,11 @@ "dataLocationWindows": "Windows:", "product": "Produto", "dashboardLink": "Painel", - "changelog": "Changelog", + "changelog": "Histórico de alterações", "resources": "Recursos", "documentation": "Documentação", "npm": "NPM", - "legal": "Legal", + "legal": "Informações jurídicas", "mitLicense": "Licença MIT", "footerTagline": "O endpoint unificado para geração de IA. Conecte, roteie e gerencie seus provedores de IA com facilidade.", "copyright": "© {year} OmniRoute. Todos os direitos reservados.", @@ -10041,8 +10040,8 @@ "clientCompatibility": "Compatibilidade de Clientes", "protocolsToc": "Protocolos", "apiReference": "Referência da API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Referência da API de gerenciamento", + "managementApiDescription": "Endpoints de automação para o registro de proxies, atribuições de escopo e migração de proxies legados.", "method": "Método", "path": "Caminho", "notes": "Notas", @@ -10052,7 +10051,7 @@ "supportsChat": "Suporta endpoints de chat e responses.", "oauthAutoRefresh": "Conexão OAuth com atualização automática de token.", "fullStreaming": "Suporte completo a streaming para todos os modelos.", - "docsLabel": "Docs", + "docsLabel": "Documentação", "docsHeroDescription": "Gateway de IA para LLMs multi-provedor. Um endpoint para OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor e mais de 20 provedores.", "openDashboard": "Abrir Painel", "endpointPage": "Página de Endpoint", @@ -10083,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Instale o OmniRoute como um aplicativo da Web progressivo em navegadores Android, iOS e desktop.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Execute o OmniRoute sem interface gráfica no Android por meio do Termux. Acesse o painel pelo navegador do seu dispositivo móvel.", "featureRoutingTitle": "Roteamento Multi-Provedor", "featureRoutingText": "Roteie requisições para mais de 30 provedores de IA por um único endpoint compatível com OpenAI. Suporta APIs de chat, responses, áudio e imagem.", "featureCombosTitle": "Combos e Balanceamento", @@ -10125,7 +10124,7 @@ "clientCursorBullet1Suffix": "para modelos do Cursor.", "clientCursorBullet2": "Conexão OAuth - faça login na página de Provedores.", "clientClaudeTitle": "Claude Code / Antigravity", - "clientClaudeBullet1Prefix": "Use", + "clientClaudeBullet1Prefix": "Uso", "clientClaudeBullet1Middle": "(Claude) ou", "clientClaudeBullet1Suffix": "(Antigravity) como prefixo.", "clientWindsurfTitle": "Windsurf", @@ -10166,13 +10165,13 @@ "endpointRewriteChatNote": "Auxiliar de reescrita para clientes sem /v1.", "endpointRewriteResponsesNote": "Auxiliar de reescrita para Responses sem /v1.", "endpointRewriteModelsNote": "Auxiliar de reescrita para descoberta de modelos sem /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Liste os itens salvos no registro de proxies (com suporte a paginação).", + "mgmtProxiesCreateNote": "Crie um item de proxy reutilizável no registro.", + "mgmtProxiesHealthNote": "Obtenha métricas de integridade das últimas 24 horas/em janela móvel para cada proxy salvo a partir dos logs de proxy.", + "mgmtProxiesBulkAssignNote": "Atribua ou remova um proxy de vários IDs de escopo em uma única solicitação.", + "mgmtAssignmentsListNote": "Liste as atribuições de proxy por scope, scope_id ou proxy_id.", + "mgmtAssignmentsUpdateNote": "Atribua ou remova o proxy para o escopo global/provider/account/combo.", + "mgmtLegacyMigrationNote": "Importe mapas proxyConfig legados para atribuições do registro.", "modelPrefixesDescriptionStart": "Use o prefixo do provedor antes do nome do modelo para rotear para um provedor específico. Exemplo:", "modelPrefixesDescriptionEnd": "roteia para o GitHub Copilot.", "provider": "Provedor", @@ -10221,7 +10220,7 @@ "mcpToolsOneProxyDesc": "Gerencie proxies de saída, alterne IPs residenciais e inspecione a integridade do proxy.", "mcpToolsMemoryTitle": "Memória", "mcpToolsMemoryDesc": "Busque, adicione e limpe entradas persistidas de memória do OmniRoute na mesma superfície de protocolo.", - "mcpToolsSkillsTitle": "Skills", + "mcpToolsSkillsTitle": "Habilidades", "mcpToolsSkillsDesc": "Liste skills habilitadas, ative, execute e inspecione histórico de execuções a partir do MCP.", "featureAutoComboTitle": "Roteamento AutoCombo", "featureAutoComboText": "Use roteamento por intenção, fallback emergencial, seleção por contexto e perfis de resiliência sem mudar o payload do cliente.", @@ -10359,20 +10358,20 @@ "versionCommand": "Comando de Versão", "spawnArgs": "Argumentos", "addAgent": "Adicionar Agente", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "scanning": "Verificando o sistema em busca de agentes de CLI...", + "opencodeIntegration": "Integração com o OpenCode", + "opencodeDetected": "opencode {version} detectado", + "opencodeDesc": "Gere um {configFile} pronto para uso com a URL base do OmniRoute e todos os modelos disponíveis — coloque-o na raiz do seu projeto e execute {command}.", + "downloadConfig": "Baixar {file}", + "downloaded": "Baixado!", + "setupGuideTitle": "Guia de configuração", + "openCliTools": "Abrir ferramentas de CLI", + "setupGuideDetectCliTitle": "Detectar CLIs instaladas", + "setupGuideDetectCliDesc": "Clique em Atualizar após instalar ou atualizar uma CLI para que o OmniRoute possa verificar novamente os binários e as versões.", + "setupGuideCustomAgentTitle": "Registrar binário personalizado", + "setupGuideCustomAgentDesc": "Use Adicionar agente personalizado quando sua CLI não estiver na lista integrada. Informe o nome do binário e o comando de versão.", + "setupGuideCommandMissingTitle": "Corrigir \"comando não encontrado\"", + "setupGuideCommandMissingDesc": "Verifique se o comando da CLI existe no PATH, abra uma nova sessão do terminal e execute Atualizar novamente.", "cliToolsRedirectTitle": "Procurando configuração de cliente?", "cliToolsRedirectDesc": "Use CLI Tools quando quiser que seu editor ou cliente de terminal chame o OmniRoute por HTTP em vez de ser iniciado localmente.", "spawnArgsPlaceholder": "ex.: --quiet, --json", @@ -10546,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Gerenciamento de cache", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Atualizar", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Entradas na memória", + "memoryEntriesSub": "LRU em memória", + "dbEntries": "Entradas no banco de dados", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", + "cacheHits": "Acertos do cache", + "cacheHitsSub": "de {total} no total", + "tokensSaved": "Tokens economizados", + "tokensSavedSub": "Estimativa com base nos acertos", + "hitRate": "Taxa de acertos", + "performance": "Desempenho do cache", + "autoRefresh": "Atualização automática a cada {seconds}s", + "hits": "Acertos", + "misses": "Erros", "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "behavior": "Comportamento do cache", + "behaviorDeterministic": "Somente solicitações sem streaming com temperature=0 são armazenadas em cache.", + "behaviorBypass": "Ignore o cache com o cabeçalho {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "TTL padrão: 30 minutos. Configure por meio de {envVar}.", + "idempotency": "Camada de idempotência", + "activeDedupKeys": "Chaves de desduplicação ativas", + "dedupWindow": "Janela de desduplicação", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Falha ao limpar o cache.", + "unavailable": "Cache indisponível", + "unavailableDesc": "Não foi possível obter as estatísticas do cache. Verifique se o servidor está em execução.", "loadingCacheAria": "Carregando cache", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Cache de prompts (no provedor)", + "semanticCache": "Cache semântico", + "promptCacheSectionDesc": "Exibe a atividade de cache de prompts no provedor com base no histórico de uso, permitindo que você veja onde o controle de cache está ativo e quanto conteúdo de entrada está sendo reutilizado.", + "promptTrendDesc": "Volume de solicitações por hora, cobertura do cache e volume de leituras do cache nas últimas 24 horas.", + "cachedRequests": "Solicitações em cache", + "cachedRequests24h": "Solicitações em cache (24 h)", + "cacheHitRate": "Taxa de acertos do cache", + "cacheRate": "Taxa de cache", + "cacheRateDesc": "do total de solicitações", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Métricas do cache de prompts", + "withCacheControl": "Com controle de cache", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Taxa de reutilização do cache", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Economia de custos estimada", + "lastUpdated": "Última atualização", + "hoursTracked": "horas monitoradas", + "busiestHour": "Horário de maior movimento", + "peakCacheRate": "Taxa máxima de cache", + "trendHour": "Hora", + "activityVolume": "Atividade", + "requestsShort": "solicitações", + "inputShort": "Entrada", + "cachedShort": "Em cache", + "writeShort": "Gravação", + "resetting": "Redefinindo...", + "resetMetrics": "Redefinir métricas", + "byProvider": "Detalhamento por provedor", + "providerCacheRateDesc": "Cada provedor exibe o total de tokens de entrada, tokens lidos do cache e tokens gravados no cache para que você possa verificar a taxa de reutilização em relação aos totais brutos.", "provider": "Provider", - "requests": "Requests", + "requests": "Solicitações", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Tendência do cache (24 h)", + "peakCached": "Pico em cache", + "cached": "Em cache", + "overview": "Visão geral", "tableProvider": "Provedor", "tableModel": "Modelo", "performanceTitle": "Desempenho", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "O cache de respostas determinístico do próprio OmniRoute. Quando ativado, solicitações repetidas, sem streaming e com temperature=0 podem ser atendidas localmente sem acessar o provedor upstream.", + "semanticCacheDisabledDesc": "O cache semântico está desativado. O OmniRoute ignorará a reutilização local de respostas até que você o reative nas Configurações.", + "semanticEntriesDesc": "Registros persistentes do cache semântico atualmente armazenados no SQLite. A atividade do cache de prompts no lado do provedor não é exibida aqui.", + "searchEntries": "Pesquisar entradas...", + "search": "Pesquisar", + "loading": "Carregando...", + "entriesLoadError": "Falha ao carregar as entradas do cache semântico.", + "noEntries": "Nenhuma entrada de cache encontrada", + "noPromptCacheData": "Ainda não foi registrada nenhuma atividade de cache de prompts no lado do provedor.", + "noTrendData": "Nenhuma atividade de cache de prompts foi registrada nas últimas 24 horas.", + "signature": "Assinatura", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", + "created": "Criado em", + "expires": "Expira em", + "actions": "Ações", "deduplicatedRequests": "Requisições Desduplicadas", "savedCalls": "Chamadas API Poupadas", "totalProcessed": "Total Processado", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "disabled": "Desativado", + "totalRequests": "Total de solicitações", "reasoningCache": "Repetição do raciocínio", "reasoningCacheDesc": "Preserva o pensamento do modelo para fluxos de chamada de ferramentas multivoltas", "reasoningEntries": "Entradas ativas", @@ -10677,7 +10676,7 @@ "minutesAgo": "{minutes}m atrás", "hoursAgo": "{hours}h atrás", "daysAgo": "{days}d atrás", - "entries": "Entries" + "entries": "Entradas" }, "proxyConfigModal": { "levelGlobal": "Globais", @@ -10686,7 +10685,7 @@ "levelKey": "Chave", "levelDirect": "Direto (sem proxy)", "titleGlobal": "Configuração de proxy global", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "Proxy {level} — {label}", "loading": "Carregando configuração de proxy...", "inheritingFrom": "Herdando de", "source": "Fonte", @@ -10777,7 +10776,7 @@ "devinDesktopPasteDescription": "Cole uma chave de API Devin existente de uma sessão Devin autenticada. A disponibilidade de exportação da chave e os passos variam conforme a versão e a conta do Devin.", "devinPasteDescription": "Forneça sua WINDSURF_API_KEY (obtida através do `devin auth login`, ou via o comando \"Windsurf: Provide Auth Token\" do Windsurf IDE).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json do Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Chave da API / Token", "saving": "Salvando…", @@ -10793,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Conecte o Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Entrar com o Cursor", + "tabImport": "Importar token", + "loginDescription": "Abre o login do Cursor no navegador. Funciona no Docker — aprove no navegador do host e depois volte aqui.", + "loginWithCursor": "Entrar com o Cursor", + "startingLogin": "Iniciando…", + "waitingApproval": "Aguardando a aprovação do login do Cursor…", + "openUrlHint": "Se o navegador não abriu:", + "openLoginLink": "Abrir página de login", + "cancelLogin": "Cancelar login", "autoDetecting": "Detecção automática de tokens...", "readingFromCursor": "Lendo do Cursor IDE ou cursor-agent", "tokensAutoDetected": "Tokens detectados automaticamente com sucesso no Cursor IDE!", "cursorNotDetected": "Cursor IDE não detectado. Cole manualmente seu token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Está usando o Docker? Prefira Entrar com o Cursor. A importação automática do IDE e o cursor-agent geralmente não estão disponíveis dentro do contêiner. Consulte docs/providers/CURSOR-DOCKER.md.", "accessToken": "Token de acesso", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Token de atualização", + "refreshTokenPlaceholder": "Opcional — permite a atualização automática do token", "required": "*", "accessTokenPlaceholder": "O token de acesso será preenchido automaticamente...", "machineId": "ID da máquina", @@ -10822,9 +10821,9 @@ "errorAutoDetectFailed": "Falha na detecção automática de tokens", "errorEnterToken": "Por favor insira o token de acesso", "errorImportFailed": "Falha na importação", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Falha ao iniciar o login do Cursor", + "errorLoginPoll": "Falha no login do Cursor", + "errorLoginTimeout": "O tempo limite do login do Cursor foi atingido — tente novamente" }, "pricingModal": { "title": "Configuração de preços", @@ -10851,9 +10850,9 @@ "selectProxy": "Selecionar {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Importar versão legada", + "bulkAssign": "Atribuir em massa", + "addProxy": "Adicionar proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10862,15 +10861,15 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Testar", + "edit": "Editar", + "delete": "Excluir", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", "labelType": "Tipo", "labelFamily": "Família IP", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Automático (pilha dupla)", "familyIpv4": "Apenas IPv4", "familyIpv6": "Apenas IPv6", "familyHint": "Família de endereços de saída. Auto mantém dual-stack; IPv4/IPv6 fixa este proxy naquela família (impede um vazamento v4 sob um proxy apenas IPv6).", @@ -10899,7 +10898,7 @@ "scopeGlobal": "global", "scopeProvider": "provedor", "scopeAccount": "conta", - "scopeCombo": "combo", + "scopeCombo": "combinação", "bulkImportErrorMissingName": "NOME ausente", "bulkImportErrorMissingHost": "HOST ausente", "bulkImportErrorInvalidPort": "PORTA inválida (deve ser 1-65535)", @@ -10914,7 +10913,7 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Falhou", "successRate": "{rate}% de sucesso", "avgLatency": "Média de {latency}ms", "assignmentsCount": "{count} atribuições", @@ -10963,7 +10962,7 @@ "poolStrategyLabel": "Estratégia de rotação", "poolStrategyHint": "round-robin percorre os membros em ordem; aleatório escolhe uniformemente; fixo mantém um membro por uma janela antes de avançar.", "poolStrategyFailed": "Falha ao atualizar a estratégia de rotação", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Alternância circular", "strategyRandom": "Aleatório", "strategySticky": "Fixo", "strategyLatency": "Otimizado por latência", @@ -10984,8 +10983,8 @@ "title": "Title", "description": "Description", "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "provider": "Provedor", + "model": "Modelo", "accountKey": "Account Key", "autoAccounts": "Automático ({count} contas)", "noAccounts": "Sem contas", @@ -11010,16 +11009,16 @@ "save": "Salvar", "endpointOptions": { "chat": "Chat", - "responses": "Responses", - "completions": "Completions", + "responses": "Respostas", + "completions": "Conclusões", "images": "Images", "embeddings": "Embeddings", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", - "moderations": "Moderations", - "rerank": "Rerank", + "moderations": "Moderações", + "rerank": "Reclassificação", "search": "Search", "webFetch": "Busca na Web" }, @@ -11030,8 +11029,8 @@ "tabCompare": "Comparar", "tabApi": "API", "tabBuild": "Construir", - "configPane": "Config", - "systemPrompt": "System prompt", + "configPane": "Configuração", + "systemPrompt": "Prompt do sistema", "systemPromptPlaceholder": "Você é um assistente útil.", "modelPlaceholder": "ex.: openai/gpt-4o", "endpointLabel": "Endpoint", @@ -11048,7 +11047,7 @@ "effort": "Esforço", "effortDefault": "Padrão", "seedPlaceholder": "Aleatório (deixar vazio)", - "presetsLabel": "Presets", + "presetsLabel": "Predefinições", "loadPreset": "Carregar preset", "savePreset": "Salvar preset", "noPresets": "Nenhum preset", @@ -11133,13 +11132,13 @@ "jsonSchemaEditor": "Editor de schema JSON", "schemaValidated": "Schema validado", "validateSchema": "Validar schema", - "seed": "Seed", + "seed": "Semente", "stopSequences": "Sequências de parada", "stopSequencesPlaceholder": "ex.: \"\\n\\n\" ou \"END\"", - "autoProvider": "Auto", + "autoProvider": "Automático", "httpError": "Erro {status}", "requestCancelled": "Solicitação cancelada", - "networkError": "Network error", + "networkError": "Erro de rede", "regenerateLastResponse": "Regenerar última resposta", "regenerate": "Regenerar", "startConversation": "Inicie uma conversa — digite uma mensagem abaixo", @@ -11203,7 +11202,7 @@ "loading": "Carregando...", "retry": "Tentar novamente", "response": "Resposta", - "tunnel": "Tunnel", + "tunnel": "Túnel", "send": "Enviar", "selectKey": "Selecionar chave", "testLabel": "Testar", @@ -11231,14 +11230,14 @@ "embeddingSample": "O OmniRoute roteia solicitações de IA entre múltiplos provedores.", "embedding": "Embedding", "imageSample": "Uma cidade futurista ao pôr do sol, iluminação cinematográfica", - "image": "Image", + "image": "Imagem", "ttsSample": "Olá do OmniRoute. Este é um teste de texto para fala.", "textToSpeech": "Texto para Fala", "videoSample": "Um avião de papel voando sobre uma cidade futurista", "video": "Vídeo", - "webFetch": "Web Fetch", + "webFetch": "Busca na Web", "webSearchSample": "O que é o OmniRoute?", - "webSearch": "Web Search", + "webSearch": "Pesquisa na Web", "documentUrl": "URL do Documento", "browserAudioUnsupported": "Seu navegador não suporta áudio.", "browserVideoUnsupported": "Seu navegador não suporta vídeo.", @@ -11252,79 +11251,79 @@ "emptyConversation": "Envie uma mensagem para iniciar a conversa", "sendHint": "Shift+Enter para nova linha · Enter para enviar", "you": "Você", - "assistant": "Assistant", + "assistant": "Assistente", "errorLabel": "Erro", "requestFailed": "Falha na requisição", "stop": "Pare" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", + "recording": "Gravando", + "paused": "Pausado", + "pipelineLogsOn": "Logs do pipeline ativados", + "pipelineLogsOff": "Logs do pipeline desativados", + "updatingPipelineLogs": "Atualizando os logs do pipeline...", + "updatePipelineFailed": "Falha ao atualizar os logs do pipeline", + "capturePipeline": "Capturar payloads do pipeline para novas solicitações", + "searchPlaceholder": "Pesquisar modelos, provedores, contas, chaves de API, combinações...", + "allProviders": "Todos os provedores", + "allModels": "Todos os modelos", + "allAccounts": "Todas as contas", + "allApiKeys": "Todas as chaves de API", "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", + "ok": "Sucesso", + "err": "Erro", + "combo": "Combinação", + "keys": "Chaves", + "shown": "Exibidos", + "sortNewest": "Mais recentes", + "sortOldest": "Mais antigos", "sortTokensDesc": "Tokens ↓", "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", + "sortDurationDesc": "Duração ↓", + "sortDurationAsc": "Duração ↑", "sortStatusDesc": "Status ↓", "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortModelAsc": "Modelo A-Z", + "sortModelDesc": "Modelo Z-A", + "sortLogs": "Ordenar logs", + "refresh": "Atualizar", + "columnsLabel": "Colunas", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "ATIVO", + "semantic": "Semântico", + "upstream": "Provedor upstream", + "semanticCacheHit": "Acerto no cache semântico (fornecido pelo OmniRoute)", + "upstreamResponse": "Resposta do provedor upstream", + "noApiKey": "Sem chave de API", + "requestedRoutedTitle": "Solicitado: {requested}; roteado como: {routed}", "statusFilters": { - "all": "All", + "all": "Todos", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Sucesso", + "combo": "Combinação" }, "columns": { "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", + "cacheSource": "Origem do cache", + "model": "Modelo", + "requested": "Solicitado", + "provider": "Provedor", + "protocol": "Protocolo da solicitação", + "account": "Conta", + "apiKey": "Chave de API", + "combo": "Combinação", "tokens": "Tokens", "compressed": "Compressão", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Duração", + "time": "Horário", + "conversation": "Conversa", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Carregando logs...", + "noLogs": "Ainda não há logs. Faça algumas chamadas de API para vê-las aqui.", + "noMatchingLogs": "Nenhum log corresponde aos filtros atuais.", + "callLogsInfo": "Os logs de chamadas também são salvos como arquivos JSON em {dataDir} e rotacionados com base em {retentionDays} e {maxEntries}.", "loadMore": "Carregar Mais", "loadingMore": "Carregando mais...", "correlationId": "ID de Correlação", @@ -11375,7 +11374,7 @@ }, "payloadMissing": "O artefato de carga detalhada não está mais disponível para esta entrada de log.", "payloadCorrupt": "O artefato de carga detalhada não pôde ser analisado.", - "notAvailable": "N/A", + "notAvailable": "N/D", "semanticCache": "Semântico (OmniRoute)", "upstreamCache": "Upstream (Fornecedor)", "ariaLabel": "Detalhe do log de solicitação", @@ -11394,7 +11393,7 @@ "input": "Entrada", "totalIn": "Total Entrada: {value}", "cacheRead": "Leitura de Cache: {value}", - "cacheWrite": "Cache Write: {value}", + "cacheWrite": "Gravação no cache: {value}", "compressed": "Compactado: {from} → {to} ({percent}% economizado)", "output": "Saída", "totalOut": "Total Saída: {value}", @@ -11407,7 +11406,7 @@ "rotated": "Rotacionado: {initial} -> {final}", "apiKey": "Chave da API", "noApiKey": "Sem chave de API", - "combo": "Combo", + "combo": "Combinação", "error": "Erro", "unblockAll": "Desbloquear tudo", "cleared": "Limpo", @@ -11425,59 +11424,59 @@ "correlationId": "ID de Correlação", "correlationIdValue": "ID de Correlação: {id}", "detailedPayloadInfo": "Ative o registro detalhado primeiro se você quiser a visualização de carga útil de cliente/provedor em quatro etapas para novas solicitações.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Copiar tudo", + "copiedAll": "Tudo copiado" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", + "filterAll": "Todos", + "filterErrors": "Erros", + "filterSuccess": "Sucesso", + "filterTimeout": "Tempo limite", "colStatus": "Status", "colProxy": "Proxy", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", + "colType": "Tipo", + "colLevel": "Nível", + "colProvider": "Provedor", + "colTarget": "Destino", + "colLatency": "Latência", "colClientIp": "IP do Cliente", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", + "colTime": "Horário", + "recording": "Gravando", + "paused": "Pausado", + "searchPlaceholder": "Pesquisar host, provedor, destino, IP...", + "allTypes": "Todos os tipos", + "allLevels": "Todos os níveis", + "allProviders": "Todos os provedores", "total": "total", "ok": "OK", - "err": "ERR", + "err": "ERRO", "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", - "colPublicIp": "Public IP" + "direct": "direto", + "newest": "Mais recentes", + "oldest": "Mais antigos", + "latencyDesc": "Latência ↓", + "latencyAsc": "Latência ↑", + "refresh": "Atualizar", + "columns": "Colunas", + "loadingProxyLogs": "Carregando logs de proxy...", + "noProxyLogs": "Ainda não há logs de proxy. Configure proxies e faça chamadas de API para vê-los aqui.", + "noMatchingLogs": "Nenhum log corresponde aos filtros atuais.", + "tlsFingerprint": "Impressão digital TLS do Chrome 124", + "colPublicIp": "IP público" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", + "speech": "Fala", + "search": "Pesquisa", + "images": "Imagens", "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", + "music": "Música", + "responses": "Respostas", + "rerank": "Reclassificação", + "video": "Vídeo", "embeddings": "Embeddings", - "transcription": "Transcription" + "transcription": "Transcrição" }, "toolDescriptions": { "cline": "Cline", @@ -11488,16 +11487,16 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", + "title": "Tempo de execução", "description": "Observabilidade em tempo real — 3 camadas de resiliência + sessões + alertas de quota", "pause": "Pausar", "resume": "Retomar", "refreshNow": "Atualizar agora", "kpiSessions": "Sessões", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", + "kpiCircuits": "Circuitos", + "kpiCooldowns": "Períodos de espera", + "kpiLockouts": "Bloqueios", + "hintStickyBound": "{count} com vínculo persistente", "hintRecovering": "{count} recuperando", "hintAllHealthy": "tudo saudável", "hintOpen": "aberto", @@ -11507,7 +11506,7 @@ "resilienceSubtitle": "Espelha o modelo de resiliência documentado", "providersHealthy": "{percent}% dos providers saudáveis", "layer": "Camada {n}", - "layer1Title": "Provider Circuit Breakers", + "layer1Title": "Disjuntores dos provedores", "layer1Desc": "Bloqueia tráfego para providers falhando no upstream", "layer2Title": "Cooldown de Conexões", "layer2Desc": "Pula uma conta/key ruim; outras conexões continuam atendendo", @@ -11524,11 +11523,11 @@ "feedTitle": "Feed ao Vivo", "feedSubtitle": "Últimos {count} eventos", "feedFilterAll": "Todos", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", + "feedFilterCircuits": "Circuitos", + "feedFilterCooldowns": "Períodos de espera", + "feedFilterLockouts": "Bloqueios", "feedFilterSessions": "Sessões", - "feedFilterQuotas": "Quotas", + "feedFilterQuotas": "Cotas", "feedClear": "Limpar", "feedEmptyWaiting": "Aguardando eventos... (poll a cada 5s)", "feedEmptyFiltered": "Nenhum evento corresponde ao filtro", @@ -11540,9 +11539,9 @@ "tblSession": "Sessão", "tblAge": "Idade", "tblIdle": "Ocioso", - "tblReqs": "Reqs", + "tblReqs": "Reqs.", "tblBoundTo": "Vinculada a", - "topApiKeys": "Top API keys", + "topApiKeys": "Principais chaves de API", "quotaMonitorsTitle": "Monitores de Quota", "quotaMonitorsSubtitle": "Estado live de quota por janela de conta", "openQuota": "Abrir Quota", @@ -11573,15 +11572,15 @@ "allocationsCount": "Alocações ({count})", "allocatedFree": "{allocated}% alocado · {free}% livre", "noAllocations": "Nenhuma key alocada ainda", - "capLabel": "cap {value}", + "capLabel": "limite {value}", "notTrackedYet": "(ainda não rastreado)", "policy": "Política", "apiKeyColumn": "Chave de API", "weightColumn": "Peso", "fairShareShort": "justo", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", + "policyHard": "rígido", + "policySoft": "flexível", + "policyBurst": "pico", "policyHardHint": "Bloqueia quando key esgota alocação", "policySoftHint": "Permite overflow, apenas alerta", "policyBurstHint": "Permite burst para o pool livre", @@ -11593,7 +11592,7 @@ "quotaWindow": "Janela de cota", "selectWindow": "Selecione uma janela…", "alreadyUsedSuffix": "(já utilizada)", - "windowReset": "Reset", + "windowReset": "Redefinir", "duplicatePoolError": "Já existe um pool para esta conexão + janela", "cancel": "Cancelar", "createPool": "Criar pool", @@ -11694,38 +11693,38 @@ }, "plugins": { "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", + "description": "Instale e gerencie plugins para ampliar as funcionalidades do OmniRoute", + "loading": "Carregando plugins...", + "scanning": "Verificando...", + "scanForPlugins": "Buscar plugins", + "noPlugins": "Nenhum plugin instalado", + "noPluginsDescription": "Coloque os diretórios dos plugins em ~/.omniroute/plugins/ e clique em Buscar.", + "activate": "Ativar", + "deactivate": "Desativar", + "uninstall": "Desinstalar", + "uninstallConfirm": "Desinstalar o plugin \"{name}\"?", + "pluginScanComplete": "Busca por plugins concluída", + "pluginScanFailed": "Falha na busca por plugins", + "activated": "{name} ativado", + "deactivated": "{name} desativado", + "activateFailed": "Falha ao ativar {name}", + "deactivateFailed": "Falha ao desativar {name}", + "uninstalled": "{name} desinstalado", + "uninstallFailed": "Falha ao desinstalar {name}", + "configure": "Configurar: {name}", + "configurePlugin": "Configurar", + "noConfigSettings": "Este plugin não possui configurações ajustáveis.", + "saving": "Salvando...", + "saveConfiguration": "Salvar configuração", + "configurationSaved": "Configuração salva", + "saveConfigurationFailed": "Falha ao salvar a configuração", + "pluginNotFound": "Plugin não encontrado", + "version": "Versão", + "author": "Autor", + "description_label": "Descrição", "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "enabled": "Ativado", + "disabled": "Desativado", "installedTab": "Instalado", "marketplaceTab": "Mercado", "marketplaceUrlLabel": "URL do Marketplace Personalizado", @@ -11752,7 +11751,7 @@ "limitLabel": "Limite", "unitOptions": { "percent": "%", - "requests": "requests", + "requests": "requisições", "tokens": "tokens", "usd": "USD ($)" }, @@ -11778,12 +11777,12 @@ "todayHeader": "Hoje", "yesterdayHeader": "Ontem", "filterAll": "Todos", - "filterProviders": "Providers", - "filterCombos": "Combos", - "filterApiKeys": "API Keys", - "filterSettings": "Settings", - "filterQuota": "Quota", - "filterAuth": "Auth", + "filterProviders": "Provedores", + "filterCombos": "Combinações", + "filterApiKeys": "Chaves de API", + "filterSettings": "Configurações", + "filterQuota": "Cota", + "filterAuth": "Autenticação", "filterSystem": "Sistema", "filterAria": "Filtrar por tipo de evento", "refresh": "Atualizar", @@ -11983,13 +11982,13 @@ "unknownError": "Erro desconhecido", "loading": "Carregando estatísticas do provedor...", "loadFailed": "Falha ao carregar estatísticas do provedor: {error}", - "retry": "Retry", + "retry": "Tentar novamente", "updated": "Atualizado {time}", "refresh": "Atualizar", - "totalRequests": "Total Requests", - "avgLatency": "Avg Latency", + "totalRequests": "Total de requisições", + "avgLatency": "Latência média", "successRate": "Taxa de Sucesso", - "activeProviders": "Active Providers", + "activeProviders": "Provedores ativos", "providerBreakdown": "Detalhamento por Provedor", "providerCount": "{count} provedores", "provider": "Provedor", @@ -12022,7 +12021,7 @@ "newToken": "Novo Token de Relay", "createTitle": "Criar Token de Relay", "nameRequired": "Nome *", - "tokenDescription": "Description", + "tokenDescription": "Descrição", "descriptionPlaceholder": "Para minhas funções serverless", "maxPerMinute": "Máx. de Solicitações/Minuto", "maxPerDay": "Máx. de Solicitações/Dia", @@ -12065,10 +12064,10 @@ "resumeBtn": "Retomar", "clearBtn": "Limpar", "exportHar": "Exportar .har", - "recordSession": "REC", + "recordSession": "GRAV", "stopSession": "Parar", "liveBadge": "ao vivo", - "offlineBadge": "offline", + "offlineBadge": "off-line", "noRequests": "Nenhuma requisição capturada ainda.", "noRequestsDesc": "Certifique-se que o AgentBridge está ativo ou ative outro modo de captura.", "selectRequest": "Selecione uma requisição para inspecioná-la.", @@ -12099,7 +12098,7 @@ "llmApiKind": "Tipo de API", "llmModel": "Modelo", "llmMessages": "Mensagens", - "llmStream": "Stream", + "llmStream": "Streaming", "llmMappedTo": "Mapeado para", "llmCostEstimate": "Estimativa de custo", "systemProxyExitWarning": "Proxy do sistema ainda está ativo — sair mesmo assim?", @@ -12129,7 +12128,7 @@ "timingUpstreamResponse": "Resposta upstream", "timingNoData": "Nenhum dado de tempo disponível.", "timingTotalLatency": "Latência total", - "timingTimestamp": "Timestamp", + "timingTimestamp": "Data e hora", "timingMethod": "Método", "timingStatus": "Status", "timingRequestSize": "Tamanho da requisição", @@ -12139,7 +12138,7 @@ "invalidHostname": "Nome de host inválido", "invalidHost": "Host inválido", "addHostFailed": "Falha ao adicionar host", - "networkError": "Network error", + "networkError": "Erro de rede", "close": "Fechar", "removeHost": "Remover {host}", "requestDetails": "Detalhes da solicitação", @@ -12148,27 +12147,27 @@ "clear": "limpar", "trafficProfile": "Perfil de tráfego", "roleSystem": "Sistema", - "roleUser": "User", - "roleAssistant": "Assistant", + "roleUser": "Usuário", + "roleAssistant": "Assistente", "roleTool": "Ferramenta", "expand": "Expandir", "collapse": "Recolher", "systemPromptHidden": "Prompt de sistema oculto — clique para expandir", "sessionName": "Sessão {id}", "sessions": "Sessões", - "requestCountShort": "{count} reqs", + "requestCountShort": "{count} solicitações", "deleteSession": "Excluir sessão", "saving": "Salvando…", "sensitiveHeaders": "Cabeçalhos sensíveis", "show": "Mostrar", - "hide": "Hide", + "hide": "Ocultar", "name": "Nome", - "value": "Value", + "value": "Valor", "noSseEvents": "Nenhum evento SSE", "noRequestBody": "Sem corpo de solicitação.", "noResponseBody": "Sem corpo de resposta.", - "formatted": "Formatted", - "raw": "Raw" + "formatted": "Formatado", + "raw": "Bruto" }, "cliCommon": { "concept": { @@ -12179,13 +12178,13 @@ "seeOther": "Ver →" }, "agent": { - "title": "CLI Agents", + "title": "Agentes de CLI", "phrase": "Agentes autônomos (CLI) de propósito amplo que você aponta para o OmniRoute", "flow": "Você → CLI Agent → OmniRoute → Provider", "seeOther": "Ver →" }, "acp": { - "title": "ACP Agents", + "title": "Agentes ACP", "phrase": "CLIs que o OmniRoute spawna como backend de execução (fluxo reverso)", "warning": "A maioria dos usuários pode ignorar isto — use apenas quando uma integração exigir.", "flow": "Cliente → OmniRoute → spawn CLI (stdio/ACP) → resposta", @@ -12211,7 +12210,7 @@ "acp": { "title": "CLI usada como backend pelo Omni", "desc": "Execução reversa", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → iniciar CLI → resp", "examples": "ex: claude, codex (ACP)" } }, @@ -12223,8 +12222,8 @@ "configure": "Configurar →", "howToInstall": "Como instalar →", "versionNotFound": "não encontrado", - "manualConfig": "Manual config", - "installGuide": "Install guide", + "manualConfig": "Configuração manual", + "installGuide": "Guia de instalação", "endpointLabel": "Endpoint", "baseUrlFull": "URL Base Completa", "baseUrlPartial": "Base URL parcial", @@ -12241,8 +12240,8 @@ "category": "Tipo", "detectionStatus": "Detecção", "configStatus": "Configuração", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "URL base", + "apiKeyLabel": "Chave de API", "modelMappingLabel": "Mapeamento de modelos", "noActiveProviders": "Nenhum provider ativo.", "noActiveProvidersDesc": "Vá em Providers para conectar pelo menos 1 provider antes de configurar a CLI.", @@ -12250,11 +12249,11 @@ } }, "cliCode": { - "pageTitle": "CLI Code's", + "pageTitle": "Códigos da CLI", "pageSubtitle": "Ferramentas de código que apontam para o OmniRoute", "searchPlaceholder": "Buscar CLI…", "filterDetectionLabel": "Detecção", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "URL base", "detectionAll": "Todas", "detectionInstalled": "Instaladas", "detectionNotFound": "Não detectadas", @@ -12263,7 +12262,7 @@ "baseUrlPartial": "Parcial" }, "cliAgents": { - "pageTitle": "CLI Agents", + "pageTitle": "Agentes de CLI", "pageSubtitle": "Agentes autônomos (CLI) de propósito amplo", "refreshDetection": "Atualizar detecção", "searchPlaceholder": "Buscar agente…", @@ -12275,7 +12274,7 @@ "emptyState": "Nenhum agente CLI encontrado com os filtros atuais." }, "acpAgents": { - "pageTitle": "ACP Agents", + "pageTitle": "Agentes ACP", "pageSubtitle": "CLIs que o OmniRoute spawna como backend de execução", "scanning": "Detectando agentes…", "refresh": "Atualizar", @@ -12290,7 +12289,7 @@ "settingsRoutingLink": "Configurações → Roteamento", "installed": "Instalado", "notFound": "Não encontrado", - "builtIn": "Built-in", + "builtIn": "Integrado", "custom": "Customizado", "agentUseCaseHint": "Disponível para spawn via ACP.", "remove": "Remover", @@ -12314,7 +12313,7 @@ "description": "Gerencie a autenticação por chave de API e tokens de sessão. Comece aqui para autenticar solicitações via token Bearer, obter cookies de sessão e configurar requisitos de login para a API do OmniRoute." }, "omni-providers": { - "name": "Providers", + "name": "Provedores", "description": "Gerencie conexões de provedor, chaves de API, fluxos OAuth e testes de conexão via API REST. Liste, adicione, atualize, remova e teste integrações de provedores de IA (OpenAI, Anthropic, Gemini e mais de 160)." }, "omni-models": { @@ -12350,7 +12349,7 @@ "description": "Gerencie o cache de respostas de LLM. Veja estatísticas do cache, limpe entradas, configure políticas de TTL e controle os limites de cache por similaridade semântica." }, "omni-compression": { - "name": "Compression", + "name": "Compressão", "description": "Configure os modos de compressão RTK (saída de comando), Caveman (prosa) e empilhados. Gerencie pacotes de idioma, regras personalizadas e teste a compressão de prompt, reduzindo tokens em 60–90%." }, "omni-context-rtk": { @@ -12379,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Registre, liste, teste e remova endpoints de webhook. Configure assinaturas de eventos (request.completed, request.failed, quota.exceeded etc.) e gerencie novas tentativas de entrega." }, "omni-mcp": { "name": "MCP", @@ -12398,23 +12397,23 @@ "description": "Os endpoints de inferência principais compatíveis com OpenAI: chat completions, embeddings, imagens, áudio (TTS/STT), moderações, rerank e a Responses API. A principal superfície de integração para agentes de IA." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Servir", "description": "Inicie, pare e reinicie o servidor OmniRoute a partir da CLI. Gerencie o modo daemon, configuração de porta, recuperação automática, integração com a bandeja do sistema e o atalho para abrir o dashboard." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Integridade", "description": "Verifique a saúde do servidor, o status dos componentes e métricas em tempo real a partir da CLI. Execute `health`, `health components` e `health watch` para um dashboard em tempo real dos circuit breakers e do status dos provedores." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Provedores", "description": "Gerencie conexões de provedor a partir da CLI: liste provedores disponíveis/configurados, adicione, teste, test-all, valide, rotacione chaves de API e veja métricas por provedor." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Chaves de API", "description": "Crie, liste, rotacione e revogue chaves de API do OmniRoute a partir da CLI. Gerencie fluxos OAuth para autenticação de provedor e inspecione escopos e expiração de chave." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: Modelos", "description": "Consulte os modelos de IA disponíveis, liste aliases de modelo e navegue pelo catálogo completo a partir da CLI. Filtre por provedor, pesquise por capacidade e resolva variantes de nome de modelo." }, "cli-chat": { @@ -12430,7 +12429,7 @@ "description": "Inspecione e gerencie estados do circuit breaker, cooldowns de conexão, limites de cota e níveis de backoff a partir da CLI. Redefina provedores travados e configure limites de resiliência." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: Compressão", "description": "Configure e teste a compressão de prompt a partir da CLI. Gerencie filtros RTK, regras Caveman, modos de compressão empilhados e pré-visualize a saída da compressão com prompts reais." }, "cli-contexts": { @@ -12466,7 +12465,7 @@ "description": "Envie e monitore jobs de inferência em lote a partir da CLI. Envie e gerencie arquivos para processamento em lote, obtenha resultados e integre pipelines de lote com fluxos de CI/CD." }, "cli-eval": { - "name": "CLI: Evals", + "name": "CLI: Avaliações", "description": "Crie e execute suítes de avaliação, acompanhe o progresso de benchmarks em tempo real, veja scorecards, compare o desempenho de modelos e integre execuções de eval com fluxos de CI a partir da CLI." }, "cli-plugins-skills": { @@ -12482,7 +12481,7 @@ "description": "Detecte ferramentas de codificação CLI instaladas (Claude Code, Codex, Cursor, Copilot, Cline e outras), pesquise no GitHub agent skills correspondentes e instale-as nas ferramentas detectadas via as APIs integradas do OmniRoute." }, "config-codex-cli": { - "name": "Config: Codex CLI", + "name": "Configuração: Codex CLI", "description": "Fluxo de trabalho passo a passo para configurar a Codex CLI da OpenAI em qualquer máquina (Linux, macOS, Windows) para usar o OmniRoute como backend compatível com OpenAI. Detecta o SO e o shell, grava config.toml e 7 perfis nomeados, define variáveis de ambiente e verifica a configuração." }, "omni-github-skills": { @@ -12490,7 +12489,7 @@ "description": "Pesquise, pontue, escaneie e importe agent skills de repositórios do GitHub que contenham arquivos SKILL.md, CLAUDE.md, .cursorrules e similares. Descubra skills da comunidade em mais de 160 categorias de provedor, avalie a relevância com pontuação heurística, verifique malware ou segredos codificados, e instale nos diretórios de agente do Hermes, Claude Code, Gemini CLI ou OpenCode." } }, - "pageTitle": "Agent Skills", + "pageTitle": "Habilidades do agente", "pageSubtitle": "Ensine seu agente a operar o OmniRoute — 22 áreas de API + 20 famílias de CLI", "conceptCard": { "agent": { @@ -12504,8 +12503,8 @@ "crossLinkLabel": "Entenda a diferença →" }, "comparison": { - "colAgent": "Agent Skills", - "colOmni": "Omni Skills", + "colAgent": "Habilidades do agente", + "colOmni": "Habilidades do Omni", "whatIs": { "label": "O que é", "agent": "Documentação (SKILL.md) que ensina um agente externo a operar o OmniRoute", @@ -12522,7 +12521,7 @@ "omni": "O próprio Omni (intercepta tool_calls, sandbox Docker)" }, "storage": { - "label": "Storage", + "label": "Armazenamento", "agent": "Catálogo dinâmico (/api/agent-skills) → SKILL.md no GitHub", "omni": "SQLite (SkillsMP / skills.sh / local)" }, @@ -12540,7 +12539,7 @@ }, "categoryApi": "API", "categoryCli": "CLI", - "categoryConfig": "Config", + "categoryConfig": "Configuração", "filterAll": "Todas", "coverageLabel": "Cobertura", "mcpUrl": "URL MCP", @@ -12600,11 +12599,11 @@ "sortByReliability": "Mais confiável primeiro", "sortByReliabilityHelp": "Ordena os provedores pela proporção de chamadas bem-sucedidas na janela selecionada. Provedores com poucas chamadas para afirmar uma taxa mantêm a ordem por pontuação, abaixo dos que foram medidos.", "typeLegend": "Sem Cadastro = zero configuração · Login OAuth = faça login com sua própria conta · Chave API = traga sua própria chave ou o nível gratuito daquele provedor", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Confiabilidade", + "colReliabilityHelp": "Proporção de chamadas que este provedor realmente respondeu nas últimas 24 horas. Um traço significa que ele atendeu a um volume de tráfego insuficiente para determinar uma taxa.", + "reliabilitySample": "{successes} de {requests} chamadas foram bem-sucedidas nas últimas {hours}h", + "reliabilityTooFew": "Apenas {requests} chamadas nas últimas {hours}h — muito poucas para determinar uma taxa", + "reliabilityNoTraffic": "Nenhuma chamada registrada nas últimas 24h" }, "discovery": { "title": "Descoberta de provedores", @@ -12645,7 +12644,7 @@ "removeAccount": "Remover conta", "proxyForAccount": "Proxy para a Conta {number}", "saved": "Salvo", - "custom": "Custom", + "custom": "Personalizado", "noSavedProxies": "Nenhum proxy salvo — adicione um em Configurações → Proxy", "directConnection": "Direto (sem proxy)", "host": "Anfitrião", @@ -12851,10 +12850,10 @@ "searchPlaceholder": "Pesquisar sinalizadores...", "categories": { "all": "Todos", - "security": "Security", + "security": "Segurança", "network": "Rede", "policies": "Políticas", - "runtime": "Runtime", + "runtime": "Tempo de execução", "cli": "CLI", "health": "Saúde", "requiresRestart": "Requer Reinicialização" @@ -12863,7 +12862,7 @@ "caution": "Cuidado", "danger": "Perigo", "requiresRestart": "Requer reinicialização", - "source": "Source", + "source": "Origem", "ccDiscoveryAliasesEnvWarning": "Ativo via variável de ambiente (EXPOSE_CC_DISCOVERY_ALIASES) — isso substitui qualquer alternância de painel abaixo.", "resetFlag": "Redefinir {label} para o padrão", "reset": "Resetar", @@ -12881,19 +12880,19 @@ "restarting": "Reiniciando…", "confirmRestart": "Confirmar Reinicialização", "restartViewDescription": "Essas flags só entram em vigor após a reinicialização do servidor. Alterne-as como qualquer outra flag — a alteração é persistida imediatamente, mas o novo valor só é lido na inicialização do processo. Use o banner Reiniciar Servidor acima para aplicar.", - "retry": "Retry", + "retry": "Nova tentativa", "noSearchResults": "Nenhuma sinalização corresponde à sua pesquisa", "resetAllOverrides": "Redefinir todas as substituições", "confirmResetOverrides": "Redefinir todas as {count} substituição(ões) do banco de dados?", "resetting": "Resetando...", "confirmReset": "Confirmar Redefinição", "enumValues": { - "off": "Off", + "off": "Desativado", "warn": "Avisar", "block": "Bloquear", "redact": "Redigir", "disabled": "Desativado", - "dual": "Dual", + "dual": "Duplo", "alias": "Alias", "canonical": "Canônico" }, @@ -12993,7 +12992,7 @@ "description": "Permite que a recuperação de stream solicite a resposta novamente e a costure depois que bytes já chegaram ao cliente." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Torne segura a continuação no meio do fluxo após chamadas de ferramenta: nunca retome um fluxo interrompido depois que uma chamada de ferramenta tiver sido enviada (ainda em andamento ou já concluída) e pare após uma continuação vazia, em vez de usar todo o limite de novas tentativas." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Faz failover uma única vez para uma conexão irmã quando um stream fecha antes de emitir qualquer frame útil e a nova tentativa limitada na mesma conexão já foi usada. Sem conexão irmã utilizável, o erro early-EOF original é retornado. Desligado: o early-EOF continua terminal após a nova tentativa." @@ -13036,12 +13035,12 @@ "description": "Continue chamadas de ferramentas do servidor (server-owned) em não-streaming até que o modelo retorne uma resposta utilizável pelo cliente." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Origem do Retry-After", + "description": "Em respostas agregadas 429/503 de indisponibilidade, omita Retry-After quando não houver um horário futuro concreto conhecido para uma nova tentativa, em vez de enviar um valor sintético de 1s; adicione error.retry_after_provenance e leia as indicações textuais de nova tentativa nos fluxos de esgotamento do combo." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Interrupções de infraestrutura com prioridade protegida como 502", + "description": "Responda com 502 em vez de 503 quando um destino prioritário com fallback apenas por cota interromper o combo por uma causa comprovadamente não relacionada à cota: um disjuntor de provedor aberto ou uma omissão preditiva por latência." } } }, @@ -13063,7 +13062,7 @@ "backToCombos": "Voltar para Combos", "loadFailed": "Falha ao carregar a central de controle de combo", "state": { - "healthy": "Healthy", + "healthy": "Saudável", "warning": "Precisa de atenção", "critical": "Crítico", "idle": "Ocioso" @@ -13075,7 +13074,7 @@ "editInCombos": "Editar em Combos", "requests": "Requisições", "success": "Sucesso", - "latency": "Latency", + "latency": "Latência", "quota": "Cota", "rangeWindow": "janela de {range}", "runtimeHealthBlend": "combinação runtime/saúde", @@ -13084,9 +13083,9 @@ "providerAccountTelemetry": "telemetria de provedor/conta", "overview": "Visão geral", "overviewDescription": "Estratégia, status de runtime e links de controle para este combo.", - "strategy": "Strategy", + "strategy": "Estratégia", "targets": "Alvos", - "providers": "Providers", + "providers": "Provedores", "targetCounts": "{configured} configurados · {resolved} resolvidos", "healthReasons": "Motivos de saúde", "healthReason": { @@ -13117,10 +13116,10 @@ "recentDecisionsDescription": "Logs de chamadas recentes filtrados pelo nome deste combo. Abra Analytics para explicabilidade completa.", "noRecentLogs": "Nenhum log de chamada recente encontrado para este combo.", "quickLinks": "Atalhos", - "comboHealth": "Combo Health", + "comboHealth": "Integridade do combo", "callLogs": "Logs de Chamadas", "costs": "Custos", - "playground": "Playground", + "playground": "Ambiente de testes", "nestedCombo": "Combo aninhado", "modelTarget": "Alvo de modelo", "weight": "peso de {value}%", @@ -13162,7 +13161,7 @@ "loadingUsdCosts": "Carregando custos em USD", "used": "Usado", "quotaUsed": "Cota usada", - "estimatedFullQuota": "Est. 100%", + "estimatedFullQuota": "Estim. 100%", "rows": "Linhas", "window": "Janela", "unknown": "desconhecido", @@ -13272,13 +13271,13 @@ }, "changelogPage": { "newsTab": "Novidades", - "changelogTab": "Changelog", + "changelogTab": "Registro de alterações", "loading": "Carregando changelog...", "announcementsLoadFailed": "Não foi possível carregar os anúncios. Tente novamente mais tarde.", "noAnnouncements": "Nenhum anúncio novo no momento.", "learnMore": "Saiba mais", "changelogLoadFailed": "Não foi possível carregar o changelog. Tente novamente mais tarde.", - "retry": "Retry", + "retry": "Nova tentativa", "viewFullHistory": "Ver histórico completo no GitHub" }, "reasoningRouting": { @@ -13301,7 +13300,7 @@ "allModels": "todos os modelos", "keepModel": "Manter modelo", "otherModel": "Outro modelo", - "combo": "Combo", + "combo": "Combinação", "priorityShort": "prioridade {value}", "toggleAria": "Ativar {name}", "edit": "Editar", @@ -13319,7 +13318,7 @@ "missing": "Não especificado", "signalOnly": "Sinal de raciocínio não discreto", "requestTags": "Tags da solicitação", - "requestTagsExample": "coding, internal", + "requestTagsExample": "programação, interno", "tagMode": "Correspondência de tags", "effortMode": "Modo de esforço", "targetEffort": "Esforço de destino", @@ -13343,7 +13342,7 @@ "scope": { "global": "Global", "apiKey": "Chave de API", - "combo": "Combo", + "combo": "Combinação", "model": "Modelo", "connection": "Conexão" }, @@ -13468,9 +13467,9 @@ "colLimits": "Limites", "trainsOnPrompts": "Treina com prompts", "trainsOnPromptsHelp": "Este provedor declara que pode usar seus prompts para treinar modelos", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", + "limitsUnknownHelp": "Limites informados apenas pelo feed do Radar; não há limites publicados para esta entrada", + "contextUnknownHelp": "Janela de contexto desconhecida para esta entrada", + "capabilityUnknownHelp": "Recurso não informado pelo feed", "colContext": "Contexto", "colCapabilities": "Capacidades", "colTos": "Risco ToS", @@ -13480,16 +13479,16 @@ "capTools": "Ferramentas", "capVision": "Visão", "capThinking": "Raciocínio", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", + "catalogTab": "Catálogo", + "freeCreditsTab": "Créditos grátis", + "freeCreditsSubtitle": "Links de indicação de provedores monitorados pelo Radar — usá-los não gera nenhum custo adicional para você e ajuda a apoiar o OmniRoute.", + "fixedLinksEmpty": "Ainda não há links de indicação disponíveis. Sincronize o Radar para verificar se há atualizações.", + "requiredActionLabel": "O que fazer:", + "claimButton": "Resgatar créditos", + "campaignsTitle": "Campanhas por tempo limitado", + "campaignsEmpty": "Não há campanhas ativas no momento — volte mais tarde.", + "campaignsUpsellCommunity": "As campanhas por tempo limitado são um benefício extra para apoiadores. Todos os links fixos desta página continuam gratuitos para todos.", + "campaignsValidUntil": "Válido até {date}", "colActions": "Ações", "localBadge": "local", "editModel": "Editar", @@ -13504,7 +13503,7 @@ "localStateSaveFailed": "Falha ao salvar as configurações locais do Radar", "guidedCombos": "Combos guiados", "offers": "Ofertas", - "intel": "Intel" + "intel": "Informações" }, "radarCombosPage": { "title": "Combos guiados pelo Radar", @@ -13562,12 +13561,12 @@ "provider": "Provedor", "connectionId": "Conexão", "authType": "Autenticação", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "backoffLevel": "Espera progressiva", + "cooldown": "Tempo de espera", "lastError": "Último Erro", "lockouts": "Bloqueios", "healthy": "Saudável", - "coolingDown": "Cooldown", + "coolingDown": "Tempo de espera", "circuitOpen": "Circuito Aberto", "recovering": "Recuperando", "degraded": "Degradado", @@ -13601,7 +13600,7 @@ "detail": { "title": "Detalhe da Conexão", "metadata": "Metadados", - "cooldown": "Cooldown", + "cooldown": "Tempo de espera", "lastError": "Último Erro", "breaker": "Disjuntor", "lockouts": "Bloqueios de Modelo", @@ -13655,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Rejeitar requisições antes do despacho quando o modelo alvo nao possui as capacidades necessarias (visao, ferramentas, saída estruturada, janela de contexto). Protege requisições diretas que ignoram o filtro de compatibilidade do combo.", "featureFlagDisableContextWindowChecksDescription": "Ignora a verificação local do OmniRoute para janela de contexto e limite máximo de tokens de entrada em solicitações diretas a um único modelo. Os provedores upstream continuam aplicando seus limites reais. A compactação de prompts e os limites de tokens de saída permanecem ativos.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "As estatísticas de pesquisa e as pesquisas recentes contabilizam apenas os provedores que ainda têm uma conexão ativa (provedores sem chave, como duckduckgo-free, são sempre contabilizados). A opção Desativado mantém todas as linhas de pesquisa retidas com um ID de provedor.", "publicSystem": { "notFound": { "title": "Página não encontrada", @@ -13711,12 +13710,12 @@ "maintenanceInfo": "Informações de Manutenção", "service": "Serviço", "unknown": "desconhecido", - "notAvailable": "n/a", + "notAvailable": "n/d", "providersTracked": "Provedores Rastreados", "circuitBreakerState": "Estado do Disjuntor do Provedor", "lastUpdate": "Última atualização: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes}min", + "uptimeHoursMinutes": "{hours}h {minutes}min" }, "statusPages": { "400": { @@ -13947,7 +13946,7 @@ "followDescription": "O eixo rola para a esquerda, a linha NOW permanece em 75%", "now": "Agora", "nowDescription": "Ir para o tempo atual, a linha NOW redefine para o centro", - "pan": "Pan", + "pan": "Deslocar", "panDescription": "Arraste para explorar, o fundo está congelado" }, "reset": "Redefinir", @@ -13970,32 +13969,32 @@ "compressionDescription": "Configure as configurações de compressão de contexto para reduzir o uso de tokens e custos.", "relayTitle": "OmniRoute — Proxies de Relay", "relayDescription": "Endpoints de proxy relay sem servidor para sua infraestrutura de IA", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Inspetor de tráfego — OmniRoute", "trafficInspectorDescription": "Monitore chamadas LLM + depure o tráfego HTTPS de qualquer aplicativo" }, "conductor": { "title": "Conductor — frota de agentes CLI", "subtitle": "Hub OmniConductor: runners, fila de tasks e councils, ao vivo", - "runners": "Runners", - "tasks": "Tasks", + "runners": "Executores", + "tasks": "Tarefas", "colName": "Nome", "colClis": "CLIs", "colStatus": "Status", - "colTask": "Task", + "colTask": "Tarefa", "colMode": "Modo", - "colRunner": "Runner", + "colRunner": "Executor", "colSummary": "Resumo", - "online": "online", - "offline": "offline", + "online": "conectado", + "offline": "desconectado", "draining": "drenando", "hubOffline": "Hub do Conductor fora do ar ou não configurado (CONDUCTOR_HUB_URL) — melhor nada do que dado velho.", "noRunners": "Nenhum runner registrado", "noTasks": "Nenhuma task ainda", "detailTitle": "Detalhe da task", "prompt": "Prompt", - "branch": "Branch", + "branch": "Ramificação", "fetchHint": "Busque o resultado com: git fetch origin {branch}", - "council": "Council", + "council": "Conselho", "candidates": "Candidatos", "cancel": "Cancelar task", "cancelConfirmTitle": "Cancelar esta task?", @@ -14052,11 +14051,11 @@ "filterSources": "Origens", "filterProviders": "Provedores", "clearFilters": "Limpar filtros", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Agente de nuvem", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Orquestrador", "sourceStale": "Sem atualização desde {since}", - "sourceOffline": "Offline", + "sourceOffline": "Desconectado", "sourceCollapse": "Recolher", "sourceExpand": "Expandir", "stateQueued": "Na fila", @@ -14082,11 +14081,11 @@ "actionApprove": "Aprovar plano", "actionCancel": "Cancelar", "actionSeeInGraph": "Ver no grafo", + "actionRepeat": "Repetir", "actionDone": "Ação aplicada", "actionFailed": "Ação falhou: {error}", "detailFailed": "Falha ao carregar detalhes: {error}", "mirroredInA2A": "Espelhado no A2A", - "actionRepeat": "Repetir", "repeatConfirm": "Clique novamente para confirmar", "repeatDone": "Nova execução criada", "repeatUnavailable": "Entrada original não disponível" @@ -14165,5 +14164,6 @@ "cta": "Obter uma chave de API", "partnerLinkNote": "Link de parceiro", "dismissAriaLabel": "Dispensar" - } + }, + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Desative a geração de variantes de nível de pensamento (por exemplo, -low, -medium, -high) no catálogo /v1/models." } diff --git a/src/i18n/messages/pt.json b/src/i18n/messages/pt.json index d428b35d82..136e992086 100644 --- a/src/i18n/messages/pt.json +++ b/src/i18n/messages/pt.json @@ -162,9 +162,9 @@ "effortMax": "Máx", "effortUltra": "Ultra", "reasoningEffort": "Esforço de raciocínio", - "wireApi": "Wire API", + "wireApi": "API Wire", "modelAliases": "Aliases do modelo", - "combos": "Combos", + "combos": "Combinações", "noModelsFound": "Nenhum modelo encontrado", "clear": "Limpar", "done": "Concluído", @@ -209,7 +209,7 @@ "enableCloud": "Ativar Cloud", "expirationBannerExpiringSoon": "Banner de Expiração em Breve", "retry": "Tentar novamente", - "embeddings": "Embeddings", + "embeddings": "Incorporações", "errorCount": "Contagem de Erros", "backupReasonManual": "Motivo do Backup Manual", "safeSearchModerate": "Pesquisa Segura Moderada", @@ -348,7 +348,7 @@ "testDesc": "Descrição do Teste", "chatDesc": "Descrição do Chat", "importSuccess": "Importação Bem-sucedida", - "chat": "Chat", + "chat": "Conversa", "a2aQuickStartStep1": "Passo 1 do Início Rápido A2A", "importFailed": "Falha na Importação", "inputPlaceholder": "Espaço reservado de Entrada", @@ -679,7 +679,7 @@ "safeSearchOff": "Pesquisa Segura Desligada", "nameHint": "Dica de Nome", "debugToggle": "Alternar Depuração", - "embedding": "Embedding", + "embedding": "Incorporação", "issuesLabel": "Problemas", "optionAny": "Qualquer", "maxNestingDepth": "Profundidade Máxima de Aninhamento", @@ -704,7 +704,7 @@ "apiKey": "Chave de API", "xpLastHour": "EXP (1h)", "zScore": "Pontuação Z", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Suspeito", "tokensCommunityServers": "Servidores da Comunidade", "tokensServerNamePlaceholder": "Nome do servidor", "tokensApiKeyPlaceholder": "Chave de API", @@ -807,13 +807,13 @@ "batchConceptBenefit50pct": "50% de desconto em tokens de entrada + saída", "batchConceptAsync24h": "Assíncrono com janela de conclusão de 24h", "batchConceptUseCases": "Melhor para classificação em massa, avaliações e embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", + "batchHeaderSubtitle": "Executar vários pedidos como uma única tarefa", + "batchStep1": "1 · Carregar JSONL", + "batchStep1Desc": "Adicionar pedidos", + "batchStep2": "2 · Criar lote", + "batchStep2Desc": "Executar tarefa", + "batchStep3": "3 · Obter resultados", + "batchStep3Desc": "Transferir resultado", "filesConceptTitle": "Ficheiros de lote", "filesConceptSubtitle": "Ficheiros JSONL usados pelos lotes: pedidos de entrada, resultados e erros.", "filesConceptInput": "Entrada — o teu JSONL com um pedido por linha", @@ -832,7 +832,7 @@ "wizardStep3Validate": "Validar", "wizardStep4Cost": "Custo e criação", "wizardProviderLabel": "Fornecedor", - "wizardEndpointLabel": "Endpoint", + "wizardEndpointLabel": "Ponto final", "wizardModelLabel": "Modelo", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (nós convertemos)", @@ -901,7 +901,7 @@ "batchListRemoveCompleted": "Remover concluídos", "batchListTableStatus": "Estado", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Ponto final", "batchListTableModel": "Modelo", "batchListTableProgress": "Progresso", "batchListTableCreated": "Criado", @@ -987,21 +987,20 @@ }, "disabled": "Desativado", "featureFlagOmnirouteEmergencyFallbackDescription": "Encaminhar pedidos com orçamento esgotado para o fornecedor/modelo de contingência gratuito de emergência.", - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Desative a geração de variantes de nível de pensamento (por exemplo, -low, -medium, -high) no catálogo /v1/models.", "featureFlagArenaEloSyncEnabledDescription": "Ativar a sincronização periódica do ELO da tabela de classificação da Arena AI para classificações de inteligência do modelo.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Gere e injete resumos das conversas quando o encaminhamento de combinações alternar entre modelos. Desative esta opção para tratar as mudanças de modelo de forma independente e impedir pedidos de transferência em segundo plano para todas as combinações existentes e futuras.", "featureFlagExposeCcDiscoveryAliasesDescription": "Anuncie os ids de espelho claude/<provider>/<model> em /v1/models para que a descoberta de modelos do gateway Claude Code liste modelos não Claude. Aviso: duplica entradas de catálogo para todos os clientes quando ativado globalmente.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Interruptor principal para os aliases de gateway no-think/<provider>/<model>. Ativado (predefinição): /v1/models anuncia uma variante sem raciocínio para cada modelo Claude elegível com capacidade de raciocínio, e um ID no-think/ enviado num pedido é resolvido para o modelo real com o raciocínio suprimido. Desativado: não são anunciadas variantes e um ID no-think/ é tratado como qualquer outro ID de modelo desconhecido. A opção de ativação/desativação ModelSpec.noThinkingAlias por modelo continua a aplicar-se enquanto esta opção estiver ativada.", "featureFlagChatVirtualLanesEnabledDescription": "Ative filas de admissão virtuais adaptativas por tenant para o encaminhamento de fornecedores (#9654): um pico de tráfego de um tenant já não gera 503 noutro. A variável de ambiente OMNIROUTE_CHAT_VIRTUAL_LANES sobrepõe-se a esta definição do painel; as alterações entram em vigor ao reiniciar o servidor.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Páginas de fornecedores no dashboard: mostrar o distintivo Gratuito apenas com base nos sinais que o fornecedor reconhece — ignora a heurística do nome de apresentação, os campos free não booleanos e os sufixos :free em fornecedores registados sem um nível gratuito documentado. Desativado mantém a regra histórica do distintivo.", + "featureFlagProxySkipRecentlyFailedDescription": "Os conjuntos de proxies e a rotação por conta do opencode deixam de voltar a disponibilizar um proxy que acabou de falhar (sondagem TCP recusada ou resposta 429 recebida através do mesmo) durante um período por processo que duplica a cada repetição, até um limite máximo. Não é registado qualquer estado do proxy; se todos os candidatos forem postos de parte, a escolha permanece inalterada. Desativado por predefinição: a ordem de seleção corresponde exatamente à rotação simples.", + "featureFlagProxyPoolEgressObservationDescription": "Mostrar, sob um conjunto de proxies no painel, quantos IPs de saída observados serviram os respetivos membros nas últimas 24 h, quantas ligações os utilizaram e o maior número observado por trás de um único IP. Apenas de leitura, calculado a partir do registo do proxy e nunca utilizado para encaminhamento. Desativado por predefinição: o editor do conjunto permanece inalterado e a rota de observação devolve null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Na verificação de integridade dos proxies, permitir que uma sondagem recusada pelo destino (401/403/429: o proxy reencaminhou o pedido, mas o destino recusou este IP de saída) reinicie a sequência de falhas consecutivas do proxy, tal como uma sondagem servida. Desativado por predefinição: uma recusa permanece neutra e mantém a sequência. Uma resposta 5xx permanece inconclusiva em qualquer dos casos, e uma recusa nunca remove, desativa nem reativa um proxy.", "sidebar": { "home": "Página inicial", "dashboard": "Painel", "providers": "Provedores", - "combos": "Combos", + "combos": "Combinações", "usage": "Uso", "analytics": "Análise", "costs": "Custos", @@ -1012,7 +1011,7 @@ "media": "Mídia", "settings": "Configurações", "translator": "Tradutor", - "playground": "Playground", + "playground": "Ambiente de testes", "searchTools": "Ferramentas de Pesquisa", "agents": "Agentes", "cloudAgents": "Agentes de nuvem", @@ -1023,7 +1022,7 @@ "chaosConfig": "Modo Caos", "docs": "Documentos", "issues": "Problemas", - "endpoints": "Endpoints", + "endpoints": "Pontos finais", "endpointsSubtitle": "Seus URLs de conexão de IA", "apiManager": "Gerenciador de APIs", "apiManagerSubtitle": "Gerenciar chaves de API e acesso", @@ -1113,7 +1112,7 @@ "contextSessionDedup": "Deduplicação de Sessão", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Estúdio de combinações", "combosLiveSubtitle": "Cascata de encaminhamento em tempo real", "compressionStudio": "Compression Studio", "compressionExclusions": "Exclusões", @@ -1179,12 +1178,12 @@ "omniProxySection": "OmniProxy", "quotaTracker": "Quota de Fornecedor", "providerQuota": "Quota de Fornecedor", - "runtime": "Runtime", + "runtime": "Ambiente de execução", "consoleLogs": "Registos da Consola", "logsTimeline": "Linha do Tempo", "logsTimelineSubtitle": "Linha do tempo de pedidos visuais", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", + "conversations": "Conversas", + "conversationsSubtitle": "Conversas agênticas com múltiplos turnos", "globalRouting": "Encaminhamento Global", "mitmProxy": "Proxy MITM", "oneProxy": "1Proxy", @@ -1214,11 +1213,11 @@ "leaderboard": "Tabela de Classificação", "profile": "Perfil", "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", + "gamificationAdmin": "Administração da Gamificação", "leaderboardSubtitle": "Classificações e conquistas", "profileSubtitle": "Conta e preferências", "tokensSubtitle": "Uso de tokens e orçamentos", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", + "gamificationAdminSubtitle": "Monitorização de anomalias e prevenção de fraude", "usageSubtitle": "Estatísticas de tráfego e uso", "analyticsComboHealthSubtitle": "Confiabilidade dos targets do combo", "analyticsUtilizationSubtitle": "Utilização de provedores", @@ -1276,11 +1275,11 @@ "systemGroup": "Sistema", "costsOverview": "Visão geral", "costsOverviewSubtitle": "Análise de custos consolidada", - "agentBridge": "Agent Bridge", + "agentBridge": "Ponte de Agentes", "agentBridgeSubtitle": "Intercetar tráfego do agente do IDE", "trafficInspector": "Inspetor de Tráfego", "trafficInspectorSubtitle": "Inspecione o tráfego de pedidos e respostas das suas aplicações", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorPurpose": "Veja exatamente o que a sua aplicação envia e recebe dos fornecedores de IA. Funciona com qualquer cliente compatível com OpenAI.", "cliCode": "Código da CLI", "cliCodeSubtitle": "Ferramentas de código a apontar para o OmniRoute", "cliAgents": "Agentes de CLI", @@ -1521,42 +1520,42 @@ "actor": "Ator", "actorPlaceholder": "Filtrar por ator", "eventTypes": { - "apiKey.activate": "API Key Activated", - "apiKey.ban": "API Key Banned", - "apiKey.deactivate": "API Key Deactivated", - "apiKey.regenerate": "API Key Regenerated", - "apiKey.scopes.grant": "API Key Scopes Granted", - "apiKey.scopes.revoke": "API Key Scopes Revoked", - "apiKey.scopes.update": "API Key Scopes Updated", - "apiKey.unban": "API Key Unbanned", - "auth.login.error": "Login Error", - "auth.login.failed": "Login Failed", - "auth.login.locked": "Login Locked", - "auth.login.misconfigured": "Login Misconfigured", - "auth.login.setup_required": "Login Setup Required", - "auth.login.success": "Login Success", - "auth.logout.success": "Logout Success", - "compliance.cleanup": "Compliance Cleanup", - "provider.credentials.applied": "Provider Credentials Applied", - "provider.credentials.batch_revoked": "Provider Credentials Batch Revoked", - "provider.credentials.bulk_created": "Provider Credentials Bulk Created", - "provider.credentials.bulk_imported": "Provider Credentials Bulk Imported", - "provider.credentials.created": "Provider Credentials Created", - "provider.credentials.imported": "Provider Credentials Imported", - "provider.credentials.revoked": "Provider Credentials Revoked", - "provider.credentials.updated": "Provider Credentials Updated", - "provider.validation.ssrf_blocked": "Provider SSRF Blocked", - "quota.plan.updated": "Quota Plan Updated", - "quota.pool.created": "Quota Pool Created", - "quota.pool.deleted": "Quota Pool Deleted", - "quota.pool.updated": "Quota Pool Updated", - "quota.store.driver_changed": "Quota Store Driver Changed", - "server.start": "Server Start", - "service.reveal_api_key": "Service API Key Revealed", - "settings.update": "Settings Updated", - "settings.update_failed": "Settings Update Failed", - "sync.token.created": "Sync Token Created", - "sync.token.revoked": "Sync Token Revoked" + "apiKey.activate": "Chave de API ativada", + "apiKey.ban": "Chave de API banida", + "apiKey.deactivate": "Chave de API desativada", + "apiKey.regenerate": "Chave de API regenerada", + "apiKey.scopes.grant": "Âmbitos concedidos à chave de API", + "apiKey.scopes.revoke": "Âmbitos revogados da chave de API", + "apiKey.scopes.update": "Âmbitos da chave de API atualizados", + "apiKey.unban": "Chave de API desbanida", + "auth.login.error": "Erro de início de sessão", + "auth.login.failed": "Falha no início de sessão", + "auth.login.locked": "Início de sessão bloqueado", + "auth.login.misconfigured": "Início de sessão configurado incorretamente", + "auth.login.setup_required": "É necessário configurar o início de sessão", + "auth.login.success": "Início de sessão efetuado com sucesso", + "auth.logout.success": "Sessão terminada com sucesso", + "compliance.cleanup": "Limpeza de conformidade", + "provider.credentials.applied": "Credenciais do fornecedor aplicadas", + "provider.credentials.batch_revoked": "Lote de credenciais do fornecedor revogado", + "provider.credentials.bulk_created": "Credenciais do fornecedor criadas em massa", + "provider.credentials.bulk_imported": "Credenciais do fornecedor importadas em massa", + "provider.credentials.created": "Credenciais do fornecedor criadas", + "provider.credentials.imported": "Credenciais do fornecedor importadas", + "provider.credentials.revoked": "Credenciais do fornecedor revogadas", + "provider.credentials.updated": "Credenciais do fornecedor atualizadas", + "provider.validation.ssrf_blocked": "SSRF do fornecedor bloqueado", + "quota.plan.updated": "Plano de quota atualizado", + "quota.pool.created": "Conjunto de quotas criado", + "quota.pool.deleted": "Conjunto de quotas eliminado", + "quota.pool.updated": "Conjunto de quotas atualizado", + "quota.store.driver_changed": "Controlador do armazenamento de quotas alterado", + "server.start": "Início do servidor", + "service.reveal_api_key": "Chave da API do serviço revelada", + "settings.update": "Definições atualizadas", + "settings.update_failed": "Falha ao atualizar as definições", + "sync.token.created": "Token de sincronização criado", + "sync.token.revoked": "Token de sincronização revogado" }, "mcpMetricCalls24h": "Chamadas (24h)", "mcpMetricSuccessRate": "Taxa de sucesso", @@ -1582,7 +1581,7 @@ "language": "Idioma", "providers": "Provedores", "providerDescription": "Gerencie suas conexões de provedor de IA", - "combos": "Combos", + "combos": "Combinações", "comboDescription": "Combinações de modelos com substituto", "usage": "Uso e análise", "usageDescription": "Monitore o uso da API, o consumo de tokens e os registros de solicitação", @@ -1694,7 +1693,7 @@ "ariaLabel": "Caminho de navegação", "dashboard": "Painel", "providers": "Fornecedores", - "combos": "Combos", + "combos": "Combinações", "settings": "Definições", "general": "Geral", "appearance": "Aparência", @@ -1707,9 +1706,9 @@ "logs": "Registos", "auditLog": "Registo de Auditoria", "console": "Consola", - "logger": "Logger", + "logger": "Registador", "translator": "Tradutor", - "playground": "Playground", + "playground": "Ambiente de testes", "add": "Adicionar", "edit": "Editar", "apiKeys": "Chaves de API", @@ -1725,7 +1724,7 @@ "analytics": "Analíticos", "costs": "Custos", "health": "Saúde", - "runtime": "Runtime", + "runtime": "Ambiente de execução", "webhooks": "Webhooks", "home": "Início", "activity": "Atividade", @@ -1750,7 +1749,7 @@ "aggressive": "Agressivo", "caveman": "Caveman", "ccr": "CCR", - "headroom": "Headroom", + "headroom": "Margem", "lite": "Lite", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", @@ -1763,7 +1762,7 @@ "discovery": "Descoberta", "freeProviderRankings": "Rankings de Fornecedores Gratuitos", "radar": "Radar", - "setup": "Setup", + "setup": "Configuração", "freeTiers": "Escalões Gratuitos", "gamification": "Gamificação", "leaderboard": "Tabela de classificação", @@ -1889,15 +1888,15 @@ "releaseNotes": "Notas de Lançamento", "readMore": "Leia Mais", "noAuthLabel": "Sem Autenticação", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Prepare-se para encaminhar", + "readinessTitle": "Envie o seu primeiro pedido", + "readinessSubtitle": "Quatro passos simples. O OmniRoute verifica o estado de preparação à medida que avança.", + "readinessStep1": "Ligue um fornecedor", + "readinessStep2": "Configure a autenticação do endpoint", + "readinessStep3": "Copie o seu endpoint", + "readinessStep4": "Envie um pedido de teste", + "readinessContinue": "Continuar a configuração", + "readinessDismiss": "Dispensar por agora" }, "analytics": { "title": "Análise", @@ -2189,7 +2188,7 @@ "routeRuntimeScoreNow": "Pontuação de runtime agora", "routeWouldSelectNow": "Selecionaria agora", "routeNoRecomputeCandidates": "Nenhuma classificação de candidatos combo pode ser recalculada para este pedido.", - "runtime": "Runtime", + "runtime": "Tempo de execução", "routeTopNow": "Principal agora", "routeFetchLogsFailed": "Falha ao obter os registos de pedidos", "routeExplainFailed": "Falha ao explicar a rota", @@ -2208,7 +2207,7 @@ "model": "Modelo", "account": "Conta", "connection": "Ligação", - "combo": "Combo", + "combo": "Combinação", "routeStep": "Passo", "tokens": "Tokens", "notAvailable": "n/d", @@ -2259,9 +2258,9 @@ "fullAccess": "Acesso total", "keyManagement": "Gerenciamento de chaves de API", "keyManagementDesc": "Crie e gerencie chaves de API para autenticar solicitações em seu endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "A sua aplicação envia pedidos para o OmniRoute através de uma chave de API", + "requestFlowYourApp": "A sua aplicação", + "requestFlowApiKey": "Chave de API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Total de chaves", "restricted": "Restrito", @@ -2383,8 +2382,8 @@ "allowedCombos": "Combinações permitidas", "allCombosAllowed": "Esta chave pode utilizar qualquer combinação.", "restrictedComboCount": "Restrito a {count, plural, one {# combinação} other {# combinações}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# entrada guardada não está} other {# entradas guardadas não estão}} nesta lista de combinações (por exemplo, regras de encaminhamento) e serão mantidas tal como foram guardadas.", + "preservedComboRuleHint": "Mantida tal como foi guardada. Esta entrada não é uma combinação da lista acima, pelo que só pode ser alterada através da API.", "apiManagerCustomRateLimits": "Limites de taxas personalizadas", "apiManagerCustomRateLimitsDesc": "Substitua os limites padrão globais. Deixe em branco para usar os padrões.", "apiManagerRateLimitRequestsPlaceholder": "Solicitações", @@ -2421,14 +2420,14 @@ "bypassProviderQuotaDescription": "Permite que esta chave ignore a política de limite do fornecedor/conta a montante durante o encaminhamento. As quotas em USD da chave de API continuam a aplicar-se.", "quotaPill": "QUOTA", "quotaModeOnly": "Apenas quota", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Locação exclusiva", + "exclusiveLeaseNoticeTitle": "Locação exclusiva", + "exclusiveLeaseNoticeDesc": "Esta chave de API tem permissões de locação exclusiva para o encaminhamento através de ligações dedicadas.", + "allConnections": "Todas as ligações", + "onlySelectedConnections": "Apenas as ligações selecionadas", + "selectAtLeastOneConnection": "Selecione pelo menos uma ligação ou escolha Todas as ligações.", + "allConnectionsDesc": "Esta chave pode utilizar qualquer ligação ativa.", + "restrictedToConnections": "Limitado a {count, plural, one {# ligação} other {# ligações}}." }, "auditLog": { "title": "Registro de auditoria", @@ -2467,13 +2466,13 @@ "videoDescription": "Cria vídeos com AnimateDiff, Stable Video Diffusion via ComfyUI ou SD WebUI.", "musicDescription": "Compõe música usando Stable Audio Open ou MusicGen via ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Incorporação", "image": "Imagem", "imageToText": "Imagem para Texto", "tts": "Texto para Voz", "stt": "Voz para Texto", "webSearch": "Pesquisa Web", - "webFetch": "Web Fetch", + "webFetch": "Obtenção Web", "video": "Vídeo", "music": "Música", "ocr": "OCR" @@ -2595,12 +2594,12 @@ "copy": "Copiar", "resetToDefault": "Redefinir para o padrão", "tabSearch": "Pesquisa", - "tabScrape": "Scrape", + "tabScrape": "Extração", "tabCompare": "Comparar", "modalitiesGuide": "Guia de modalidades", "searchConceptTitle": "Pesquisa", "searchConceptDesc": "Pesquisa = obtém uma lista de resultados web (título, URL, excerto, pontuação de relevância)", - "scrapeConceptTitle": "Scrape", + "scrapeConceptTitle": "Extração", "scrapeConceptDesc": "Scrape = extrai o conteúdo completo de um URL (markdown, texto ou HTML)", "compareConceptTitle": "Comparar", "compareConceptDesc": "Comparar = executa a mesma consulta em N fornecedores lado a lado para comparar latência, custo e sobreposição de resultados", @@ -2610,7 +2609,7 @@ "autoConceptDesc": "Auto (mais barato) = escolhe automaticamente o fornecedor mais barato disponível com credenciais configuradas", "providerCatalogTitle": "Catálogo de Fornecedores", "kindSearch": "Pesquisa", - "kindFetch": "Fetch/Scrape", + "kindFetch": "Obtenção/Extração", "statusConfigured": "Configurado", "statusMissing": "Sem credencial", "statusRateLimited": "Limitado pela taxa", @@ -2631,7 +2630,7 @@ "formatHtml": "HTML", "formatText": "Texto", "scrapePreview": "Pré-visualização", - "scrapeRaw": "Raw", + "scrapeRaw": "Em bruto", "scrapeContentTruncated": "(truncado, ver raw)", "scrapeMetadata": "Metadados", "scrapeProvider": "Fornecedor", @@ -2656,7 +2655,7 @@ "historyHint": "O histórico está disponível no separador Pesquisa.", "noActiveProvider": "Nenhum provedor de pesquisa ativo", "configureMoreProviders": "Configurar mais provedores", - "links": "Links", + "links": "Ligações", "contentTruncated": "Conteúdo truncado para 256 KB (tamanho original: {size})", "viewFullRaw": "Ver conteúdo bruto completo", "rawScrapedContent": "Conteúdo extraído bruto", @@ -2682,7 +2681,7 @@ "ttsSample": "Olá, este é um teste de conversão de texto em voz.", "video": "Vídeo", "videoSample": "Um time-lapse de nuvens sobre uma cordilheira", - "webFetch": "Web Fetch", + "webFetch": "Obtenção Web", "webSearchSample": "O que é o OmniRoute AI gateway?", "noActiveProviderDescription": "Nenhum fornecedor de pesquisa ativo. Configure um em Fornecedores.", "configureProviders": "Configurar fornecedores", @@ -2744,7 +2743,7 @@ "effortExtraHigh": "Extra alto", "effortMax": "Máximo", "effortUltra": "Ultra", - "wireApi": "Wire API", + "wireApi": "API Wire", "modelAliases": "Aliases de modelo", "addModel": "Adicionar modelo", "routeModelPlaceholder": "Encaminhar {model} para...", @@ -2951,7 +2950,7 @@ "interpreter": "CLI do agente de programação autónomo Open Interpreter", "omp": "Agente de programação de terminal Oh My Pi", "letta": "Agente CLI Letta com memória persistente e utilização de ferramentas", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — ambiente de programação RLM com autoaperfeiçoamento e suporte para fornecedores compatíveis com OpenAI", "warp": "Terminal Warp AI com suporte para fornecedor personalizado", "agent-deck": "Orquestrador multi-agente Agent Deck", "5dive": "5dive — frota auto-alojada de agentes de codificação; um perfil de autenticação aponta todos para o OmniRoute" @@ -3141,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Avaliação da conclusão de objetivos", "hermesRoleCurator": "Curador", "hermesRoleCuratorDesc": "Curadoria de Habilidades e Memória", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Monitorização", "hermesRoleMonitorDesc": "Monitorização em segundo plano", "hermesRoleBackgroundReview": "Revisão de Fundo", "hermesRoleBackgroundReviewDesc": "Revisão de código em segundo plano", @@ -3153,7 +3152,7 @@ "hermesConfiguredRoles": "{configured}/{total} funções", "hermesQuickApply": "Aplicar rapidamente o mesmo modelo a todas as funções:", "hermesApplyModelToAll": "Aplicar {model} a todas as funções", - "hermesViaOmniRoute": "{provider} (via OmniRoute)", + "hermesViaOmniRoute": "{provider} (através do OmniRoute)", "hermesNotOmniRoute": "{provider} (não OmniRoute)", "hermesRemovePendingRole": "Remover esta função das alterações pendentes", "hermesApply": "Aplicar ao Hermes Agent", @@ -3204,7 +3203,7 @@ "cliproxyapiVersion": "Versão" }, "combos": { - "title": "Combos", + "title": "Combinações", "description": "Crie combinações de modelos com roteamento ponderado e suporte substituto", "autoCatalogTitle": "Catálogo de roteamento automático", "autoCatalogTemplateCount": "{count} modelos", @@ -3269,7 +3268,7 @@ "cacheOptimizedDesc": "Encaminha cada prefixo de prompt reutilizável consistentemente para a mesma conta de fornecedor", "resetAware": "RR com reconhecimento de redefinição", "resetAwareDesc": "Equilibra a cota restante com redefinições de 5h e semanais e, em seguida, faz um round-robin de pontuações semelhantes", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Ponderado por quota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "Aleatório Estrito", "strictRandomDesc": "Baralho embaralhado — usa cada modelo uma vez antes de reembaralhar", @@ -3336,7 +3335,7 @@ "playgroundStrategy": "Estratégia", "playgroundEstimatedCost": "Custo est.", "playgroundEstimatedLatency": "Latência est.", - "playgroundFallback": "fallback", + "playgroundFallback": "alternativa", "playgroundWeight": "peso {value}", "playgroundWarningCount": "Avisos ({count})", "playgroundErrorCount": "Erros ({count})", @@ -3537,7 +3536,7 @@ "nestedComboFlatten": "Aplanar combinações aninhadas", "nestedComboExecute": "Executar combinações aninhadas como destinos", "effectiveRoutingShare": "Quota de encaminhamento efetiva (peso ÷ total)", - "weightQuota": "Quota", + "weightQuota": "Cota", "weightHealth": "Saúde", "weightCostInv": "Custo", "weightLatencyInv": "Latência", @@ -3665,10 +3664,10 @@ "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", "wizardStep4Title": "Rever e Guardar", "wizardStep4Desc": "Rever a configuração e ativar o combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", + "usageGuideInvokeTitle": "Como chamar esta combinação", + "usageGuideInvokeDesc": "Envie o nome exato da combinação como modelo, por exemplo, model: \"my-combo\" (ou combo/my-combo).", + "usageGuideInvokeAutoNote": "auto e auto/* são um router separado, sem configuração, que não utiliza as suas combinações (a menos que uma combinação tenha literalmente o nome auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto é um produto pago real da OpenRouter (Auto Best Available), não um alias do OmniRoute — exclua-o em Definições → Encaminhamento → Ocultar modelos pagos.", "emailVisibilityStateOn": "Ligado", "emailVisibilityStateOff": "Desligado", "reorderHandle": "Arrasta para reordenar", @@ -3781,7 +3780,7 @@ "errorDescription": "Não conseguimos carregar os dados do combo neste momento. Verifique a sua ligação e tente novamente.", "errorId": "ID de Erro: {id}", "errorRetry": "Tente Novamente", - "comboLabel": "Combo", + "comboLabel": "Combinação", "duplicateAutoComboConfirm": "Criar uma combinação estática de \"{name}\"?", "duplicateAutoComboSnapshotMsg": "Isto irá capturar os provedores/modelos atualmente conectados que correspondem a este modelo em uma combinação editável.", "duplicateAutoComboFailedPrefix": "Falha ao duplicar a combinação automática:", @@ -3806,8 +3805,8 @@ "rangeAll": "Todos os tempos", "spend30d": "Spend30D", "activeModels": "Modelos Ativos", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", + "flatRateEstimateNotice": "Inclui estimativas do preço dos tokens para subscrições de tarifa fixa, não o custo faturado.", + "flatRateEstimateForecast": "A projeção inclui estimativas de tarifa fixa.", "selectedWindow": "Janela Selecionada", "activeProviders": "Fornecedores Ativos", "overviewTitle": "Overview Title", @@ -3883,9 +3882,9 @@ }, "endpoint": { "title": "Ponto final da API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Utilize o endpoint compatível com OpenAI com a maioria dos SDK e das ferramentas.", + "testEndpoint": "Testar endpoint →", + "advancedProtocols": "Protocolos avançados", "available": "Terminais disponíveis", "cloudProxy": "Proxy de nuvem", "disableConfirm": "Tem certeza de que deseja desativar o proxy na nuvem?", @@ -4369,7 +4368,7 @@ "a2aStep3": "Acompanhe e cancele tarefas com {code1} e {code2}." }, "memory": { - "a": "A", + "a": "R", "actions": "Ações", "addMemory": "Adicionar Memória", "allTypes": "Todos os Tipos", @@ -4434,7 +4433,7 @@ "reindexFailed": "Falha ao iniciar a reindexação", "keywordLabel": "Palavra-chave (FTS5)", "keywordReason": "Pesquisa por palavra-chave sempre disponível", - "embeddingLabel": "Embedding", + "embeddingLabel": "Representação vetorial", "vectorStoreLabel": "Armazenamento Vetorial", "qdrantLabel": "Qdrant", "rerankLabel": "Reordenar", @@ -4461,7 +4460,7 @@ "noMemories": "Nenhuma memória encontrada", "pageInfo": "Página {page} de {totalPages} ({total} total)", "pipelineError": "Erro de pipeline", - "pipelineOk": "Pipeline OK ({latencyMs}ms)", + "pipelineOk": "Pipeline operacional ({latencyMs}ms)", "playground": { "infoTitle": "Playground de Memória", "infoDesc": "Simule o que seria obtido para uma determinada consulta. Nenhuma memória é modificada — pré-visualização apenas de leitura.", @@ -4475,11 +4474,11 @@ "simulate": "Simular", "resultsTitle": "{count} resultado(s)", "resolutionTitle": "Resolução da pesquisa", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Representação vetorial", "resolutionStore": "Armazenamento vetorial", "resolutionStrategy": "Estratégia utilizada", "rerankApplied": "Reordenação aplicada", - "fallback": "Fallback", + "fallback": "Alternativa", "noResults": "Nenhuma memória encontrada para esta consulta.", "tokensUsed": "tokens utilizados", "none": "nenhum", @@ -4545,7 +4544,7 @@ }, "tabs": { "memories": "Memórias", - "playground": "Playground", + "playground": "Área de testes", "engine": "Motor" }, "title": "Gerenciamento de Memória", @@ -4570,7 +4569,7 @@ "executionsTab": "Execuções", "selectSkillToInspect": "Selecione uma competência à esquerda para inspecionar.", "schemaTab": "Esquema", - "handlerTab": "Handler", + "handlerTab": "Processador", "inputSchema": "Esquema de entrada", "outputSchema": "Esquema de saída", "handlerCode": "Código do Handler", @@ -4578,7 +4577,7 @@ "runTestPlaceholder": "Executar teste (marcador de posição)", "setModeAria": "Definir modo {mode}", "uninstallSkill": "Desinstalar competência", - "sandboxTab": "Sandbox", + "sandboxTab": "Ambiente isolado", "loading": "Carregando skills...", "noSkills": "Nenhuma skill encontrada", "noExecutions": "Nenhuma execução encontrada", @@ -4601,7 +4600,7 @@ "networkAccess": "Acesso à Rede", "networkAccessDesc": "Permitir requisições de rede de saída", "mode": "Modo", - "q": "Q", + "q": "P", "filterSkillsPlaceholder": "Filtre habilidades por nome, descrição ou tag", "allModes": "Todos os modos", "totalSkills": "Total de competências", @@ -4613,7 +4612,7 @@ "popularDefaultsLabel": "Popular por predefinição para o fornecedor selecionado:", "onMode": "LIGADO", "offMode": "DESLIGADO", - "autoMode": "AUTO", + "autoMode": "AUTOMÁTICO", "installSkillButton": "Instalar competência", "installSkillModalTitle": "Instalar competência", "installJsonPlaceholder": "Cole o JSON do manifesto da competência aqui...", @@ -4666,13 +4665,13 @@ "retry": "Tentar novamente", "allOperational": "Todos os sistemas operacionais", "issuesDetected": "Problemas de sistema detectados", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "O OmniRoute está pronto", + "healthVerdictActionRequired": "É necessária uma ação para restaurar o funcionamento completo", + "healthVerdictCoolingDown": "A aguardar estabilização após alterações recentes", + "healthSubtitle": "Verificação do estado do sistema", + "advancedDiagnosticsTitle": "Diagnóstico avançado", + "hide": "Ocultar", + "show": "Mostrar", "updatedAt": "{time} atualizado", "latency": "Latência", "latencyP50": "p50", @@ -4894,7 +4893,7 @@ "eventPayload": "Payload do Evento", "requestId": "ID do Pedido", "providerWarningDesc": "Provider Warning Desc", - "a": "A", + "a": "R", "offset": "Desvio", "limit": "Limite", "status": "Estado", @@ -4921,7 +4920,7 @@ "activeStageSendingToProvider": "A enviar para o upstream", "activeStageProviderResponseStarted": "Resposta do upstream iniciada", "count": "Contagem", - "payloads": "Payloads", + "payloads": "Cargas úteis", "viewPayloads": "Ver", "activeCount": "{count} ativos", "clientPayload": "Payload do Pedido do Cliente", @@ -5077,6 +5076,9 @@ "importFromFileImporting": "A importar…", "importFromFileImport": "Importar {count} fornecedores", "importFromFileResult": "Importados {success} fornecedores ({failed} falharam)", + "importFromFileDownloadTemplate": "Transferir modelo CSV", + "importFromFileMoreErrors": "+{count} mais", + "importFromFileSchemaHint": "As colunas CSV são posicionais: fornecedor, nome, apiKey, baseUrl (opcional), prioridade (opcional). A coluna do fornecedor tem de conter o ID de um fornecedor gerido existente ou o ID de um nó compatível com OpenAI/Anthropic já registado — esta importação não cria novos nós de endpoint.", "adaptaTutorial": { "title": "Como ligar o Adapta Web", "introPrefix": "O Adapta autentica-se através do Clerk. O token", @@ -5179,7 +5181,7 @@ "deprecatedProvider": "Este provedor foi descontinuado", "riskNotice": { "title": "Antes de continuar", - "detailsTitle": "Usage caveats", + "detailsTitle": "Ressalvas de utilização", "tooltip": "Provedor com advertências de utilização — clique para detalhes", "oauth": "Este provedor utiliza a sua sessão oficial do produto/OAuth, que não está autorizada para utilização de proxy/router. Não recomendamos a utilização intensiva de agentes autónomos (estilo OpenCloud, fluxos longos de vários passos, grandes lotes) — o upstream pode reagir restringindo ou banindo a conta. Utilize por sua conta e risco.", "webCookie": "Este provedor autentica-se através dos cookies da sua sessão web. O serviço upstream pode invalidar a sessão a qualquer momento, exigindo que inicie sessão novamente. Não recomendado para operações longas sem supervisão. Utilize por sua conta e risco.", @@ -5189,9 +5191,9 @@ "cancel": "Cancelar" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} ligação(ões) assinalada(s) — até {maxFailures} falhas recentes{lastFailureSuffix}. Clique para ver o estado das ligações.", + "lastFailureSuffix": "(última falha: {time})", + "ariaLabel": "Ver detalhes do estado da ligação, {count} aviso(s)" }, "disabled": "Desativado", "enableProvider": "Habilitar provedor", @@ -5258,10 +5260,10 @@ "iconUrlLabel": "URL do ícone", "iconUrlHint": "Opcional. URL da imagem mostrada como ícone deste provedor.", "iconUrlInvalid": "URL do ícone inválido. Utilize uma URL http(s):// ou data:image/*;base64.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Fuso horário de reposição da quota diária", + "dailyQuotaResetTimezoneHint": "Fuso horário IANA opcional utilizado quando o serviço a montante omite X-RateLimit-Reset. Deixe vazio para manter um curto período de espera.", + "dailyQuotaResetHourLabel": "Hora de reposição da quota diária", + "dailyQuotaResetHourHint": "Hora local de 0 a 23 no fuso horário acima. Vazio significa que não existe relógio ao nível do nó.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5365,7 +5367,7 @@ "removeModel": "Remover modelo", "rateLimitProtected": "Protegido", "rateLimitUnprotected": "Desprotegido", - "providerQuotaShort": "Quota", + "providerQuotaShort": "Cota", "hideConnectionFromProviderQuota": "Ocultar esta conta da Quota do Provedor", "showConnectionInProviderQuota": "Mostrar esta conta na Quota do Provedor", "quotaVisibilityUpdateFailed": "Falha ao atualizar a visibilidade da Quota do Provedor", @@ -5488,7 +5490,7 @@ "preserveDeveloperRoleLabel": "Manter role de developer da OpenAI Responses (não mapear para system)", "compatAdjustmentsTitle": "Compatibilidade", "compatButtonLabel": "Compatibilidade", - "compatToolIdShort": "Tool ID 9", + "compatToolIdShort": "ID da ferramenta 9", "compatDeveloperShort": "Role de developer", "compatDoNotPreserveDeveloper": "Não preservar role de developer", "compatBadgeNoPreserve": "Sem preservar", @@ -5535,18 +5537,18 @@ "interceptFetchHint": "Reescrever chamadas de ferramentas nativas web_fetch para o /v1/web/fetch do OmniRoute.", "interceptionLoadError": "Falha ao carregar as definições de interceção: {error}", "interceptionSaveError": "Falha ao guardar as definições de interceção: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", + "ccAliasSectionTitle": "Disponibilizar no Claude Code (claude/…)", + "ccAliasSectionHint": "Anunciar os modelos deste fornecedor com IDs espelho claude/<provider>/<model>, para que a deteção de modelos do gateway do Claude Code os possa listar. Desativado por predefinição — a ativação duplica as entradas do catálogo para todos os clientes.", + "ccAliasProviderLevelLabel": "Predefinição do fornecedor", + "ccAliasModelOverridesLabel": "Substituições por modelo", + "ccAliasModelOverrideAriaLabel": "Substituição para {modelId}", + "ccAliasStateInherit": "Herdar", + "ccAliasStateOn": "Ativado", + "ccAliasStateOff": "Desativado", + "ccAliasAddModelPlaceholder": "ID do modelo (por exemplo, gpt-4o)", + "ccAliasAddModelButton": "Adicionar substituição", + "ccAliasLoadError": "Não foi possível carregar as definições dos aliases de deteção: {error}", + "ccAliasSaveError": "Não foi possível guardar a definição do alias de deteção: {error}", "compatUpstreamHeadersLabel": "Cabeçalhos upstream extra", "compatUpstreamHeadersHint": "Definição de alto privilégio — mesmo nível de confiança que editar credenciais de API do fornecedor; só admins de confiança devem usar.", "compatUpstreamHeaderName": "Nome do cabeçalho", @@ -5905,8 +5907,8 @@ "rateLimitOverridesSection": "Substituições de limite de taxa", "rateLimitOverridesMaxConcurrentHint": "Substituição de pedidos simultâneos máximos para esta ligação. Substitui o limite ao nível da conta.", "rateLimitOverridesMaxConcurrentLabel": "Máximo de simultâneos (limite de taxa)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Tempo máximo (ms) que um pedido pode aguardar por uma vaga no limite de taxa antes de falhar. Substitui a definição global de Resiliência apenas para esta ligação.", + "rateLimitOverridesMaxWaitMsLabel": "Espera máxima na fila (ms)", "rateLimitOverridesMinTimeHint": "Tempo mínimo (ms) entre pedidos. Substitui o atraso predefinido do limitador de taxa.", "rateLimitOverridesMinTimeLabel": "Intervalo mín. (ms)", "rateLimitOverridesRpdHint": "Máximo de pedidos por dia para esta ligação. Substitui a predefinição do fornecedor.", @@ -5916,7 +5918,7 @@ "rateLimitOverridesTpdHint": "Tokens máximos por dia para esta ligação. Substitui a predefinição do fornecedor.", "rateLimitOverridesTpdLabel": "TPD (Tokens/dia)", "rateLimitOverridesTpmHint": "Tokens máximos por minuto para esta ligação. Substitui a predefinição do fornecedor.", - "rateLimitOverridesTpmLabel": "TPM (Tokens/min)", + "rateLimitOverridesTpmLabel": "TPM (tokens/min)", "refreshOauthTokenTitle": "Atualizar Token OAuth", "regionHint": "Dica de Região", "regionLabel": "Região", @@ -6176,7 +6178,7 @@ "freeaiapikey": "Proxy de API com desconto para mais de 40 modelos, incluindo GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Obtenha a sua chave de API em https://freeaiapikey.com/dashboard. URL base: https://freeaiapikey.com/v1.", "freemodel-dev": "Obtenha $300 em créditos de API gratuitos em https://freemodel.dev — sem necessidade de dados de pagamento. Endpoint compatível com OpenAI. Modelos GPT-5.4 e GPT-5.5 disponíveis.", "friendliai": "Nível gratuito para inferência serverless — sem necessidade de cartão de crédito", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Nível gratuito através do Google AI Studio; as quotas por modelo já não são publicadas (consulte a página de quotas no AI Studio) — sem cartão de crédito.", "gigachat": "Ligue o GigaChat (Sber) com uma chave de API.", "gitlab": "Token de acesso pessoal do GitLab para a API pública Code Suggestions. Configure um URL base autoalojado quando não estiver a utilizar o gitlab.com.", "gitlawb-gmi": "Obtenha a sua chave de API no painel do Gitlawb Opengateway.", @@ -6185,7 +6187,7 @@ "glm-cn": "Ligue o GLM Coding (China) com uma chave de API.", "glmt": "Perfil predefinido do GLM com maior orçamento de tokens, raciocínio ativado e tempo limite mais longo.", "getgoapi": "Ligue a GoAPI com uma chave de API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Plano gratuito: limites por modelo (200 mil tokens/dia por modelo de chat; consulte console.groq.com/docs/rate-limits para RPM/RPD) — sem método de pagamento registado.", "haiper": "Obtenha a chave de API em haiper.ai/haiper-api", "heroku": "Ligue o Heroku AI com uma chave de API.", "hcnsec": "Obtenha a chave de API em api.hcnsec.cn", @@ -6253,7 +6255,7 @@ "requesty": "Crie uma chave de API em https://app.requesty.ai e, em seguida, cole-a aqui como um token Bearer. Endpoint compatível com a OpenAI em https://router.requesty.ai/v1, com um catálogo /v1/models em tempo real.", "runwayml": "A geração de vídeo da Runway é baseada em tarefas. O OmniRoute submete tarefas de texto para vídeo ou imagem para vídeo, consulta /v1/tasks/[id] e normaliza as saídas de vídeo concluídas de volta para a resposta /v1/videos/generations semelhante à da OpenAI.", "sambanova": "$5 em créditos gratuitos no registo (validade de 30 dias), sem necessidade de cartão de crédito", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Crie uma chave de API em https://seekai.cc e cole-a aqui como token Bearer. URL base compatível com OpenAI: https://seekai.cc/v1.", "sap": "A descoberta de modelos utiliza /v2/lm/scenarios/foundation-models/models em AI_API_URL. Os pedidos de chat utilizam deploymentUrl/chat/completions e requerem AI-Resource-Group.", "sarvam": "Sarvam AI é compatível com OpenAI em /v1. OmniRoute investiga /v1/models e direciona o tráfego de chat para /v1/chat/completions. Os modelos são ajustados para línguas índicas.", "scaleway": "1M de tokens gratuitos para novas contas — em conformidade com a UE/RGPD (Paris), Qwen3 235B e Llama 70B", @@ -6310,7 +6312,7 @@ "claude": "Ligar o Claude Code com o fluxo OAuth existente.", "cline": "Ligar o Cline com o fluxo OAuth existente.", "cursor": "Ligar o Cursor IDE com o fluxo OAuth existente.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Ligue o Cursor com uma chave de API de utilizador (crsr_...) de cursor.com/dashboard/api; não é necessária uma sessão do IDE.", "github": "Ligar o GitHub Copilot com o fluxo OAuth existente.", "gitlab-duo": "Aplicação OAuth com os âmbitos ai_features + read_user. Configure GITLAB_DUO_OAUTH_CLIENT_ID e, opcionalmente, GITLAB_DUO_OAUTH_CLIENT_SECRET nesta instância do OmniRoute.", "kilocode": "Ligar o Kilo Code com o fluxo OAuth existente.", @@ -6343,20 +6345,20 @@ "webSessionGuideStep3": "Copie a credencial necessária do próprio domínio do provedor. Para cookies, copie apenas o valor do cabeçalho Cookie e omita Cookie:.", "webSessionGuideStep3Manual": "Caminho manual: abra as ferramentas de desenvolvedor do navegador (F12 → Rede), atualize a página, abra uma solicitação autenticada e copie o valor do cabeçalho Cookie dos Cabeçalhos da Solicitação — omita o prefixo Cookie:.", "webSessionGuideStep4": "Cole aqui e verifique a conexão. Se parar de funcionar, faça login novamente e substitua-o por um novo valor.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importar ficheiro .har", + "harImportButtonBusy": "A importar…", + "harImportButtonHint": "Exporte a partir do separador Network do DevTools depois de enviar pelo menos uma mensagem de chat.", + "harImportStatusValid": "Importado — válido durante ~{minutes} min.", + "harImportStatusExpiringSoon": "Importado — válido apenas por mais ~{minutes} min.", + "harImportStatusExpired": "Importado, mas este token já expirou (há {minutes} min) — exporte um HAR novo.", + "harImportStatusUnknownExpiry": "Importado. Não foi possível ler a respetiva data de expiração.", + "harImportErrorNotJson": "Esse ficheiro não contém JSON válido — será mesmo uma exportação .har?", + "harImportErrorNoEntries": "Este HAR não contém entradas de rede registadas.", + "harImportErrorNoChathubUrl": "Não foi encontrada nenhuma ligação de chat do Copilot neste HAR. Envie pelo menos uma mensagem de chat em m365.cloud.microsoft antes de exportar.", + "harImportErrorUnparsableUrl": "A ligação de chat foi encontrada, mas não foi possível ler o respetivo URL.", + "harImportErrorMissingFields": "A ligação de chat foi encontrada, mas faltava-lhe o token.", + "harImportErrorReadFailed": "Não foi possível ler esse ficheiro.", + "harImportErrorUnknown": "Não foi possível extrair uma credencial desse ficheiro HAR.", "webSessionSecurityHint": "Trate isso como uma senha: ela poderá acessar sua conta da web conectada até que ela expire ou seja revogada.", "webNoAuthGuideTitle": "Nenhuma credencial necessária", "webNoAuthGuideBody": "{provider} não precisa de chave de API ou cookie. Salve a conexão para usar seu endpoint web gratuito.", @@ -6430,14 +6432,19 @@ "commandCodeAuthExpired": "Código de comando de autenticação expirado", "commandCodeConnected": "Código de Comando conectado", "commandCodeConnectionAdded": "Código de comando de ligação adicionado", + "clearConnectionCooldown": "Limpar período de espera", + "clearConnectionCooldownInProgress": "A limpar…", + "clearConnectionCooldownTitle": "Limpar agora o período de espera — utilize quando a quota já tiver sido reposta no serviço de origem", "commandCodeLinkExpired": "O link do código do comando expirou", "commandCodeOpeningStudio": "A Abrir o Command Code Studio…", "commandCodePopupBlocked": "Popup bloqueado. Por favor, permita popups e tente o Command Code Connect novamente.", "commandCodeStartFailed": "Falha ao iniciar o comando Code auth", "connectionDeleted": "Conexão eliminada", "connectionFallback": "conexão", + "connectionCooldownCleared": "Período de espera limpo — a ligação voltou ao encaminhamento", "coolingConnectionsDescription": "Estas conexões estão a arrefecer após o último pedido. O OmniRoute irá ignorá-las até o temporizador expirar — não é necessária desativação manual.", "coolingConnectionsTitle": "Atualmente a arrefecer ({count})", + "failedClearConnectionCooldown": "Não foi possível limpar o período de espera", "failedDeleteAlias": "Falha ao eliminar o alias", "failedDeleteConnection": "Falha ao eliminar a ligação", "failedDistributeProxies": "Falha ao distribuir proxies.", @@ -6471,12 +6478,7 @@ "savedModelEndpointSettings": "Definições do ponto de extremidade do modelo guardado", "searchByModelAria": "Pesquisar por modelo", "selectSupportedEndpoint": "Selecione pelo menos um endpoint suportado", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "Configurações", @@ -6556,7 +6558,7 @@ "thinkingBudget": "Pensando no orçamento", "proxy": "Procurador", "httpProxy": "Proxy HTTP", - "1proxy": "1proxy", + "1proxy": "1 proxy", "proxySubTabsAria": "Secções de proxy", "requestBodyLimitTitle": "Limite do Corpo do Pedido", "requestBodyLimitDescription": "Tamanho máximo de payload de API aceite antes de o corpo do pedido ser analisado. As rotas de upload dedicadas mantêm pelo menos o seu próprio limite.", @@ -6695,12 +6697,12 @@ "autoDisableDescription": "Marca permanentemente conexões de provedor como desativadas quando retornam sinais terminais de banimento (ex.: HTTP 403 'verify your account'). Isso remove a conexão da rotação de combos.", "autoDisableThreshold": "Limite de banimento", "autoDisableThresholdDesc": "Quantidade de sinais consecutivos de banimento antes da desativação permanente.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedScope": "Aplicar desativação automática a", + "autoDisableBannedScopeDesc": "Os postos de início de sessão (subscrições pagas e contas gratuitas) podem ser bloqueados pelo serviço de origem se o OmniRoute continuar a tentar após um bloqueio. As chaves de API pré-pagas não têm esse risco — mantenha-as no conjunto para que o preenchimento prioritário possa utilizar a chave seguinte.", + "autoDisableBannedScopeAll": "Todas as ligações", + "autoDisableBannedScopeAllDesc": "Desativar todas as ligações que devolvam um sinal de bloqueio permanente, incluindo chaves de API pré-pagas.", + "autoDisableBannedScopeSubscription": "Apenas contas de início de sessão / subscrição", + "autoDisableBannedScopeSubscriptionDesc": "Desativar postos OAuth, de cookies, de sessão e de início de sessão na Web (pagos ou gratuitos). As chaves de API pré-pagas permanecem ativas para que o encaminhamento possa mudar para uma alternativa.", "customBannedSignals": "Palavras-chave Proibidas", "customBannedSignalsDesc": "Palavras-chave adicionais que acionam a deteção de banimento permanente da conta. As palavras-chave integradas aplicam-se sempre.", "customBannedSignalsPlaceholder": "ex. chave de API revogada", @@ -6756,18 +6758,18 @@ "sidebarVisibility": "Ocultar itens da barra lateral", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Tudo", + "presetAllDesc": "Mostrar tudo", + "presetEssentials": "Essenciais", + "presetEssentialsDesc": "Percurso para principiantes — as ferramentas avançadas continuam pesquisáveis", + "presetMinimal": "Mínimo", + "presetMinimalDesc": "Apenas páginas principais", + "presetDeveloper": "Programador", + "presetDeveloperDesc": "Ferramentas de desenvolvimento e proxy", + "presetAdmin": "Administrador", + "presetAdminDesc": "Monitorização e auditoria", + "settingsSidebarTitle": "Personalização da barra lateral", + "settingsSidebarDesc": "Escolha os itens a apresentar na barra lateral. A opção Essenciais mantém as ferramentas avançadas acessíveis através da pesquisa.", "hideHealthLogs": "Ocultar registros de verificação de integridade", "hideHealthLogsDesc": "Quando ativado, suprime mensagens [HealthCheck] no console do servidor", "themeAccent": "Cor do tema", @@ -6985,7 +6987,7 @@ "passthroughDesc": "Sem alterações – o cliente controla o orçamento pensado", "thinkingModePassthrough": "Passagem direta", "thinkingModePassthroughDesc": "Deixe o raciocínio do cliente inalterado (esforço, resumo, blocos de pensamento). Necessário para o pensamento visível do Codex/Desktop. Padrão.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automático (remover)", "thinkingModeAutoDesc": "Remova todos os campos de pensamento/razão do cliente (razão, esforço_de_razão, pensamento Claude, configuração_de_pensamento Gemini) e deixe o fornecedor inventar padrões. Pode ocultar painéis de pensamento e interromper solicitações de resumo do cliente.", "thinkingModeCustom": "Personalizado", "thinkingModeCustomDesc": "Substitua cada pedido por um orçamento fixo de token de pensamento que você define abaixo.", @@ -7068,7 +7070,7 @@ "costOptDesc": "Prefira a conta mais barata disponível", "resetAware": "RR com reconhecimento de redefinição", "resetAwareDesc": "Prefira contas com cota restante saudável e redefinições mais próximas", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Ponderado por quota", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "Aleatório Estrito", "strictRandomDesc": "Baralhar — usa cada conta uma vez antes de baralhar novamente", @@ -7076,7 +7078,7 @@ "stickyLimitDesc": "Chamadas por conta antes de mudar", "routingStrategyTitle": "Estratégia de encaminhamento", "routingStrategySubtitle": "Corresponder ao 9router: round-robin de contas, limites persistentes e rotação de combos", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Distribuição rotativa", "accountRoundRobinDesc": "Percorrer as contas ciclicamente para distribuir a carga", "comboRoundRobin": "Round Robin de combos", "comboRoundRobinDesc": "Percorrer os alvos do combo ciclicamente em vez de começar sempre pelo primeiro", @@ -7090,14 +7092,14 @@ "providerAccountRoutingDesc": "Substituir a estratégia global de conta para este provedor (paridade 9router).", "providerRoutingStrategy": "Estratégia de conta", "providerRoutingInheritGlobal": "Herdar predefinição global", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Limite de pré-verificação da quota", + "quotaPreflightSubtitle": "Ignorar contas sem quota antes de enviar o pedido ao serviço a montante", + "quotaPreflightEnable": "Ativar pré-verificação da quota", + "quotaPreflightEnableDesc": "Antes de cada pedido, verificar a quota restante da conta (períodos de 5 h / semanais / mensais). As contas cujo valor esteja no limite ou abaixo deste são ignoradas sem uma chamada ao serviço a montante. Os limites por período definidos na página Quota do fornecedor têm sempre prioridade sobre a predefinição aqui.", + "quotaPreflightCutoff": "Limite global (percentagem mínima restante)", + "quotaPreflightCutoffDesc": "Deixar de utilizar uma conta quando a respetiva quota restante atingir esta percentagem ou um valor inferior, para todos os períodos sem um limite próprio. Corresponde às barras de percentagem restante na página Quota do fornecedor.", + "quotaPreflightWindowsHint": "Os períodos com um limite próprio por período ou por fornecedor (definido na janela modal Limite da página Quota do fornecedor) não são afetados por esta predefinição.", + "quotaPreflightLoadFailed": "Não foi possível carregar as definições de pré-verificação da quota.", "modelAliases": "Aliases de modelo", "modelAliasesTitle": "Aliases de Modelo", "modelAliasesDesc": "Remapeia nomes de modelos usando correspondências exatas ou padrões wildcard.", @@ -7330,7 +7332,7 @@ "configured": "configurado", "none": "Nenhum", "modelOverrideValuePlaceholder": "Valor numérico", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Valores em inglês separados por vírgulas, por exemplo: low, medium, high", "addKeyValue": "Adicionar chave-valor", "noModelOverrides": "Nenhuma substituição configurada para este modelo.", "modelOverrideLoadFailed": "Falha ao carregar as substituições de modelo", @@ -7606,8 +7608,8 @@ "resilienceRequestsPerMinute": "Pedidos por minuto", "resilienceMinTimeBetweenRequests": "Tempo mínimo entre pedidos", "resilienceConcurrentRequests": "Pedidos concorrentes", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceConnectionScopeConcurrentRequests": "Pedidos simultâneos por âmbito de ligação/quota", + "resilienceGlobalConcurrentRequests": "Pedidos simultâneos globais ao serviço a montante (0 = desativado)", "resilienceMaxQueueWaitTime": "Tempo máximo de espera na fila", "resilienceBaseCooldown": "Arrefecimento base", "resilienceUseUpstreamRetryHints": "Usar dicas de tentativa upstream", @@ -7670,7 +7672,7 @@ "routingAntigravitySignatureDesc": "Controlar se o OmniRoute reutiliza apenas assinaturas de pensamento do Gemini armazenadas ou se aceita assinaturas validadas fornecidas pelo cliente em fluxos de chamada de ferramentas compatíveis com Antigravity.", "routingAntigravitySignatureEnabledLabel": "Ativado", "routingAntigravitySignatureEnabledDesc": "Comportamento atual. Ignorar assinaturas fornecidas pelo cliente e continuar a utilizar o fluxo OmniRoute armazenado.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Ignorar", "routingAntigravitySignatureBypassDesc": "Aceitar assinaturas fornecidas pelo cliente após uma validação ligeira e recorrer à assinatura armazenada quando for inválida.", "routingAntigravitySignatureBypassStrictLabel": "Bypass Estrito", "routingAntigravitySignatureBypassStrictDesc": "Exigir validação protobuf completa antes de aceitar uma assinatura fornecida pelo cliente.", @@ -7746,12 +7748,16 @@ "legacyJsonImportSuccess": "JSON legado importado com sucesso!", "jsonImportFailed": "Falha ao importar JSON", "jsonImportError": "Erro durante a importação de JSON", + "jsonImportAuthRequired": "É necessária autenticação para importar uma configuração JSON antiga. Inicie sessão ou conclua primeiro a configuração.", + "databaseSettingsAuthRequiredTitle": "Autenticação necessária", + "databaseSettingsAuthRequiredBody": "As definições da base de dados e a importação de JSON só estão disponíveis para um administrador autenticado. Inicie sessão ou conclua a configuração para as consultar e editar.", + "databaseSettingsAuthRequiredCta": "Iniciar sessão", "storagePurgeData": "Limpar dados", "storagePurgeDataDesc": "Eliminar imediatamente todos os registos sem aplicar verificações de retenção. Utilize com precaução.", "storageRetentionCleanup": "Definições de retenção", "storageRetentionCleanupDesc": "Configure a retenção de registos operacionais e a limpeza de cópias de segurança da base de dados.", "retentionCallDays": "Chamada {count}d", - "retentionAppDays": "App {count}d", + "retentionAppDays": "Aplicação {count}d", "retentionRows": "{count} linhas", "retentionQuotaSnapshots": "Instantâneos de cota (dias)", "retentionCompressionAnalytics": "Análise de compressão (dias)", @@ -7829,14 +7835,14 @@ "compressionDerivedMode": "modo: {mode}", "compressionAdaptiveOff": "Orçamento de contexto adaptativo: desativado (acionamento automático legado)", "compressionAdaptiveTarget": "Adaptativo ({mode}, política: {policy}) — alvo ≈ {target, number} tokens (para uma janela de {contextLimit, number} tokens)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Orçamento de contexto adaptável", + "compressionAdaptiveModeOff": "Desativado (acionamento automático antigo)", + "compressionAdaptiveModeFloor": "Limite mínimo (garantir sempre que cabe)", + "compressionAdaptiveModeReplace": "Substituir acionamento automático", + "compressionAdaptivePolicy": "Política de orçamento", + "compressionAdaptivePolicyReserve": "Reservar saída", + "compressionAdaptivePolicyPercentage": "Percentagem da janela", + "compressionAdaptivePolicyAbsolute": "Orçamento absoluto de tokens", "compressionOutputStylesDescription": "Injete instruções de modelação de resposta sem reescrever a saída do fornecedor. Combine livremente.", "mcpAccessibilityDescription": "Delimita as saídas das ferramentas MCP (armazenamento separado).", "compressionStylesTileSummary": "{tokens, number} tokens poupados · {runs, plural, one {# execução estilizada} other {# execuções estilizadas}}", @@ -7871,7 +7877,7 @@ "description": "Compressão conservadora para saídas de ferramentas Responses suportadas." }, "headroom": { - "label": "Headroom", + "label": "Margem", "description": "Compactação de JSON tabular." }, "relevance": { @@ -7879,7 +7885,7 @@ "description": "Pontuação extrativa de frases em relação à última consulta do utilizador." }, "caveman": { - "label": "Caveman", + "label": "Homem das cavernas", "description": "Compressão de prosa baseada em regras." }, "aggressive": { @@ -7913,8 +7919,8 @@ "description": "Disciplina de dev sénior preguiçoso: sobe a escada YAGNI, corrige a causa raiz, menor diff funcional." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Tenho TDAH (ação primeiro)", + "description": "Saída orientada para a ação: começa pela próxima ação, passos numerados, um próximo passo concreto, sem preâmbulo." }, "terse-cjk": { "label": "CJK conciso (文言)", @@ -7932,6 +7938,14 @@ "cliproxyapiFallback": "substituto CLIProxyAPI", "cliproxyapiEnableFallback": "Habilitar substituto CLIProxyAPI", "cliproxyapiUrl": "URL CLIProxyAPI", + "headroomProxyTitle": "Proxy Headroom", + "headroomProxyDesc": "URL do proxy opcional de poupança de tokens Headroom. Se estiver vazio, utiliza HEADROOM_URL ou http://localhost:8787.", + "headroomProxyUrl": "URL do Headroom", + "headroomProxyUrlHint": "Os URLs de loopback podem ser iniciados a partir desta página. Os URLs externos são apenas verificados.", + "headroomProxySave": "Guardar", + "headroomProxyStart": "Iniciar", + "headroomProxyStop": "Parar", + "headroomProxyExternalHint": "Este URL não é de loopback, pelo que o OmniRoute não iniciará a CLI local.", "cliproxyapiStatus": "Status CLIProxyAPI", "cliproxyapiNotDetected": "Não detectado", "cliproxyapiImportAuthTitle": "Importar contas do CLIProxyAPI", @@ -8205,10 +8219,10 @@ "disableSessionStickinessDesc": "As combinações round-robin e aleatórias alternam para uma ligação diferente a cada pedido em vez de fixarem uma conversa inteira a uma ligação através do hash da primeira mensagem. Deixe desativado para preservar os hits da cache de prompts em conversas com múltiplos turnos. As sobreposições por combinação têm precedência.", "promptCacheAffinity": "Encaminhamento por localidade de prompt-cache", "promptCacheAffinityDesc": "Prefere a mesma conta de fornecedor para chaves de prompt-cache correspondentes, preservando o failover de saúde e quota.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "reasoningTokenBuffer": "Margem de tokens de raciocínio", + "reasoningTokenBufferDesc": "Permitir que o encaminhamento combinado adicione margem a max_tokens apenas para modelos de raciocínio conhecidos quando a margem completa couber num limite de saída conhecido.", + "zeroLatencyOptimizations": "Otimizações de latência zero", + "zeroLatencyOptimizationsDesc": "Ative a cobertura, as omissões preditivas de TTFT e a compressão proativa de recurso. Deixe desativado para impedir que estas funcionalidades de latência façam os destinos competir ou comprimam pedidos de recurso.", "credentialRedaction": "Ocultação de Credenciais", "credentialRedactionDesc": "Oculte chaves de API, tokens e segredos do contexto enviado para os fornecedores e das respostas.", "enableCredentialRedaction": "Ativar ocultação de credenciais", @@ -8365,15 +8379,7 @@ "cliproxyapiHealth": "Saúde", "cliproxyapiPort": "Porto", "qdrantHost": "Anfitrião", - "qdrantCollection": "Coleção", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Coleção" }, "contextRtk": { "title": "Motor RTK", @@ -8624,7 +8630,7 @@ "editCombo": "Editar", "deleteCombo": "Eliminar", "deleteConfirm": "Eliminar este combo de compressão?", - "pipeline": "Pipeline", + "pipeline": "Fluxo", "addStep": "Adicionar Passo", "removeStep": "Remover", "name": "Nome", @@ -8662,6 +8668,8 @@ "contextEditingNote": "Atualmente disponível apenas para o Claude (Anthropic). É um modo delegado: o fornecedor limpa blocos antigos de utilização de ferramentas no lado do servidor — nós não reescrevemos a mensagem. Não afeta outros fornecedores.", "namedCombos": "Combinações nomeadas", "namedCombosDescription": "Guarde diferentes pipelines e atribua-os a combinações de encaminhamento específicas.", + "activeProfileMasterSwitchOffWarning": "O perfil ativo abaixo não será executado até que o interruptor principal «Compressão de prompts» seja ativado.", + "activeProfileMasterSwitchOffCta": "Ativar nas Definições", "comboNamePlaceholder": "Nome do combo", "descriptionPlaceholder": "Descrição", "nameRequired": "Introduza um nome de combo antes de guardar.", @@ -8675,9 +8683,7 @@ "languagePacksList": "Pacotes de idioma: {packs}", "dragToReorder": "Arraste para reordenar o passo", "engine": "Motor", - "intensity": "Intensidade", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensidade" }, "compressionStudio": { "noRun": "Nenhuma execução de compressão disponível.", @@ -8706,7 +8712,7 @@ "run": "Executar", "laneRejected": "rejeitado: {reason}", "error": "erro", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Falha na pré-visualização da pipeline combinada: {reason}", "combinedFlow": "Fluxo combinado", "eachLayer": "Cada camada separadamente", "diff": "Diferença", @@ -8781,27 +8787,27 @@ }, "enableTitle": "Ativar o motor", "enableDescription": "Executa em último lugar na pilha (após o RTK/Caveman limpar o texto, o OmniGlyph converte o restante em imagens) e também executa de forma autónoma através do modo omniglyph. Esta é uma pré-visualização e permanece desativada por predefinição até que a validação de ponta a ponta esteja concluída.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Perfil de compressão", + "profileDescription": "O perfil é um limite máximo, não mínimo: um perfil mais restrito não pode ser flexibilizado por uma substituição específica de uma etapa. Medido nesta base de código: com o perfil seguro para programação ou equilibrado, uma sessão que ainda não tenha acumulado histórico não comprime nada, porque ambos aumentam o limiar mínimo de caracteres e mantêm nativos o prompt do sistema, os esquemas das ferramentas e os resultados das ferramentas.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agressivo (predefinição)", + "description": "A política medida pelos comprovativos publicados. Transforma em imagens o prompt do sistema, a documentação das ferramentas e o histórico denso." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Equilibrado", + "description": "Mantém o estado ativo nativo e protege as últimas 8 interações; apenas comprime o histórico encerrado mais antigo." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Seguro para programação", + "description": "Mantém nativos a autoridade, os esquemas das ferramentas e os resultados ativos das ferramentas, protegendo as últimas 12 interações. Não comprime nada até que a sessão acumule histórico." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Passagem direta", + "description": "Encaminha sem transformar. O motor é ignorado e o pedido é reencaminhado sem alterações." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Selecionar o perfil de compressão do OmniGlyph", "saved": "Guardado.", "saveFailed": "Não foi possível guardar.", "enableAria": "Ativar o motor OmniGlyph", @@ -9278,16 +9284,16 @@ "kiloPassRemaining": "Restante", "kiloPassRenews": "Renova em {count} dias", "kiloPassUsageLabel": "Utilização deste mês", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Créditos de utilização adicional", + "kimiExtraUsage": "Utilização adicional", + "kimiExtraUsageEnabled": "Ativada", + "kimiExtraUsageDisabled": "Desativada", + "kimiExtraUsageFrozen": "Congelada", + "kimiExtraUsageUnavailable": "Indisponível", + "kimiMonthlyUsed": "Utilizado este mês", + "kimiMonthlyLimit": "Limite mensal", + "kimiMonthlyLimitUnlimited": "Ilimitado", + "kimiAdditionalCredits": "Créditos adicionais", "loggerTab": "Registrador", "proxyTab": "Procurador", "budgetManagement": "Gestão Orçamentária", @@ -9337,7 +9343,7 @@ "evaluateStepDescription": "As respostas são comparadas com os critérios esperados. Veja aprovação/reprovação para cada caso com métricas de latência e feedback detalhado.", "evalsStrategyContainsLabel": "Contém", "evalsStrategyExactLabel": "Correspondência exata", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Expressão regular", "evalsStrategyCustomLabel": "Lógica personalizada", "evalsStrategyContainsDescription": "Verifica se a saída do LLM contém a substring esperada.", "evalsStrategyExactDescription": "Verifica se a saída do LLM corresponde exatamente ao valor esperado.", @@ -9466,7 +9472,7 @@ "tierPro": "Pró", "tierPlus": "Mais", "tierFree": "Grátis", - "tierLite": "Lite", + "tierLite": "Leve", "tierUnknown": "Desconhecido", "statTotal": "Total", "statCritical": "Crítico", @@ -9516,7 +9522,7 @@ "suiteImportInvalid": "Conjunto de avaliação JSON inválido", "suiteBuilderCloneSuffix": "copiar", "suiteBuilderImportedSuite": "Suíte Importada", - "scorecardTitle": "Scorecard", + "scorecardTitle": "Tabela de pontuação", "evalApiKey": "Chave de API", "scorecardPassRate": "Taxa de Aprovação", "targetTypeModel": "Modelo", @@ -9592,7 +9598,7 @@ "suiteBuilderCaseExpectedLabel": "Valor Esperado", "historyLatency": "Latência", "suiteBuilderCaseTagsPlaceholder": "ex: codificação, python", - "targetTypeCombo": "Combo", + "targetTypeCombo": "Combinação", "scorecardPassed": "Aprovados", "suiteBuilderCaseTagsLabel": "Etiquetas", "suiteBuilderNewSuite": "Nova Suíte", @@ -9778,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Métricas do sistema", "memory": "Memória", - "memoryShort": "mem", + "memoryShort": "memória", "uptime": "Tempo de Atividade", "ariaLabel": "Monitorização do sistema", "title": "Monitor do Sistema", @@ -10015,7 +10021,7 @@ "apiReference": "Referência da API", "helpCenter": "Centro de Ajuda", "about": "Sobre", - "blog": "Blog", + "blog": "Blogue", "contact": "Contacto", "terms": "Termos", "privacy": "Privacidade", @@ -10493,9 +10499,9 @@ }, "templateNames": { "simple-chat": "Chat Simples", - "streaming": "Streaming", + "streaming": "Transmissão", "system-prompt": "Prompt de Sistema", - "thinking": "Thinking", + "thinking": "Raciocínio", "tool-calling": "Chamada de Ferramentas", "multi-turn": "Multi-turno", "vision": "Visão", @@ -10770,7 +10776,7 @@ "devinDesktopPasteDescription": "Cole o seu chave API Devin existente de uma sessão Devin autenticada. A disponibilidade de exportação da chave e os passos variam conforme a versão e a conta do Devin.", "devinPasteDescription": "Forneça a sua WINDSURF_API_KEY (obtida através de `devin auth login`, ou através do comando \"Windsurf: Provide Auth Token\" no Windsurf IDE).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json do Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Chave API / Token", "saving": "A Guardar…", @@ -10786,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Conecte o Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Iniciar sessão com o Cursor", + "tabImport": "Importar token", + "loginDescription": "Abre o início de sessão do Cursor no navegador. Funciona no Docker — aprove no navegador do sistema anfitrião e, em seguida, regresse aqui.", + "loginWithCursor": "Iniciar sessão com o Cursor", + "startingLogin": "A iniciar…", + "waitingApproval": "A aguardar a aprovação do início de sessão no Cursor…", + "openUrlHint": "Se o navegador não tiver aberto:", + "openLoginLink": "Abrir página de início de sessão", + "cancelLogin": "Cancelar início de sessão", "autoDetecting": "Detecção automática de tokens...", "readingFromCursor": "Lendo do Cursor IDE ou cursor-agent", "tokensAutoDetected": "Tokens detectados automaticamente com sucesso no Cursor IDE!", "cursorNotDetected": "Cursor IDE não detectado. Cole manualmente seu token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "A executar no Docker? Dê preferência a Iniciar sessão com o Cursor. A importação automática do IDE e o cursor-agent normalmente não estão disponíveis dentro do contentor. Consulte docs/providers/CURSOR-DOCKER.md.", "accessToken": "Token de acesso", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Token de atualização", + "refreshTokenPlaceholder": "Opcional — permite a atualização automática do token", "required": "*", "accessTokenPlaceholder": "O token de acesso será preenchido automaticamente...", "machineId": "ID da máquina", @@ -10815,9 +10821,9 @@ "errorAutoDetectFailed": "Falha na detecção automática de tokens", "errorEnterToken": "Por favor insira o token de acesso", "errorImportFailed": "Falha na importação", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Não foi possível iniciar o início de sessão no Cursor", + "errorLoginPoll": "O início de sessão no Cursor falhou", + "errorLoginTimeout": "O início de sessão no Cursor excedeu o tempo limite — tente novamente" }, "pricingModal": { "title": "Configuração de preços", @@ -10863,7 +10869,7 @@ "labelName": "Label Name", "labelType": "Tipo", "labelFamily": "Família de IP", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Automático (pilha dupla)", "familyIpv4": "Apenas IPv4", "familyIpv6": "Apenas IPv6", "familyHint": "Família de endereços de saída. Auto mantém dual-stack; IPv4/IPv6 fixa este proxy a essa família (evita uma fuga de v4 num proxy apenas IPv6).", @@ -10892,7 +10898,7 @@ "scopeGlobal": "global", "scopeProvider": "fornecedor", "scopeAccount": "conta", - "scopeCombo": "combo", + "scopeCombo": "combinação", "bulkImportErrorMissingName": "NOME ausente", "bulkImportErrorMissingHost": "HOST ausente", "bulkImportErrorInvalidPort": "PORTA inválida (deve ser 1-65535)", @@ -10913,7 +10919,7 @@ "assignmentsCount": "{count} atribuições", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Reparar", "relayAuthMissing": "autenticação em falta", @@ -10956,15 +10962,15 @@ "poolStrategyLabel": "Estratégia de rotação", "poolStrategyHint": "round-robin percorre os membros por ordem; random escolhe uniformemente; sticky mantém um membro durante uma janela; latency-optimized escolhe o mais rápido com base nos registos.", "poolStrategyFailed": "Falha ao atualizar a estratégia de rotação", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Distribuição circular", "strategyRandom": "Aleatório", - "strategySticky": "Sticky", + "strategySticky": "Persistente", "strategyLatency": "Otimizado para latência", "poolMembersLabel": "Membros do pool ({count})", "poolNoMembers": "Ainda não existem proxies neste pool.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# saída usada} other {# saídas usadas}} por {connections, plural, one {# ligação} other {# ligações}} · até {max} numa saída · últimas {hours} h", + "poolEgressObservationEmpty": "Não foi observado tráfego nas últimas {hours} h", + "poolEgressObservationHint": "Contabilizado a partir do registo do proxy durante o período: IPs de saída distintos observados para os membros deste grupo e as ligações OmniRoute que os utilizaram. «Numa só saída» refere-se ao período, não ao mesmo tempo. O bloqueio 429 por IP apenas coloca em pausa as ligações da mesma família de fornecedores.", "poolRemove": "Remover", "poolRemoveFailed": "Falha ao remover o proxy do pool", "poolAddLabel": "Adicionar um proxy", @@ -10976,7 +10982,7 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", + "endpoint": "Ponto final", "provider": "Fornecedor", "model": "Modelo", "accountKey": "Account Key", @@ -11006,7 +11012,7 @@ "responses": "Respostas", "completions": "Conclusões", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Incorporações", "speech": "Speech", "transcription": "Transcription", "video": "Video", @@ -11014,12 +11020,12 @@ "moderations": "Moderações", "rerank": "Reordenar", "search": "Search", - "webFetch": "Web fetch" + "webFetch": "Obtenção Web" }, "conversationalChat": "Bate-papo conversacional", "clearChat": "Limpar bate-papo", "typeMessagePlaceholder": "Digite uma mensagem... (Shift+Enter para nova linha)", - "tabChat": "Chat", + "tabChat": "Conversação", "tabCompare": "Comparar", "tabApi": "API", "tabBuild": "Construir", @@ -11027,7 +11033,7 @@ "systemPrompt": "Prompt do sistema", "systemPromptPlaceholder": "És um assistente útil.", "modelPlaceholder": "ex: openai/gpt-4o", - "endpointLabel": "Endpoint", + "endpointLabel": "Ponto final", "parametersLabel": "Parâmetros", "collapseConfig": "Recolher painel de configuração", "expandConfig": "Expandir painel de configuração", @@ -11126,7 +11132,7 @@ "jsonSchemaEditor": "Editor de esquema JSON", "schemaValidated": "Esquema validado", "validateSchema": "Validar esquema", - "seed": "Seed", + "seed": "Semente", "stopSequences": "Sequências de paragem", "stopSequencesPlaceholder": "ex. \"\\n\\n\" ou \"END\"", "autoProvider": "Automático", @@ -11180,7 +11186,7 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Ponto final", "apiKey": "Chave de API", "model": "Modelo", "voice": "Voz", @@ -11208,7 +11214,7 @@ "play": "Reproduzir", "query": "Consulta", "numResults": "Resultados máximos", - "prompt": "Prompt", + "prompt": "Pedido", "size": "Tamanho", "duration": "Duração", "question": "Pergunta", @@ -11222,14 +11228,14 @@ "noAudioUrl": "A resposta não incluiu um URL de áudio: {response}", "music": "Música", "embeddingSample": "O OmniRoute encaminha pedidos de IA através de múltiplos provedores.", - "embedding": "Embedding", + "embedding": "Incorporação", "imageSample": "Uma cidade futurista ao pôr do sol, iluminação cinematográfica", "image": "Imagem", "ttsSample": "Olá do OmniRoute. Este é um teste de conversão de texto em voz.", "textToSpeech": "Conversão de texto em voz", "videoSample": "Um avião de papel a voar sobre uma cidade futurista", "video": "Vídeo", - "webFetch": "Web Fetch", + "webFetch": "Obtenção Web", "webSearchSample": "O que é o OmniRoute?", "webSearch": "Pesquisa Web", "documentUrl": "URL do documento", @@ -11238,7 +11244,7 @@ "searchResultFallback": "Resultado {number}", "noKeysFound": "Nenhuma chave de API encontrada. Adicione uma na secção Chaves.", "exampleLabel": "Exemplo", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} tokens de entrada / {tokensOut} de saída", "defaultKey": "(predefinido)", "clear": "Limpar", @@ -11266,7 +11272,7 @@ "total": "Total", "ok": "Sucesso", "err": "Erro", - "combo": "Combo", + "combo": "Combinação", "keys": "Chaves", "shown": "Mostrados", "sortNewest": "Mais recentes", @@ -11283,9 +11289,9 @@ "refresh": "Atualizar", "columnsLabel": "Colunas", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "ATIVO", "semantic": "Semântico", - "upstream": "Upstream", + "upstream": "A montante", "semanticCacheHit": "Acerto de cache semântica (servido pelo OmniRoute)", "upstreamResponse": "Resposta do fornecedor upstream", "noApiKey": "Sem chave de API", @@ -11294,7 +11300,7 @@ "all": "Todos", "error": "Errors", "success": "Sucesso", - "combo": "Combo" + "combo": "Combinação" }, "columns": { "status": "Estado", @@ -11305,7 +11311,7 @@ "protocol": "Protocolo do Pedido", "account": "Conta", "apiKey": "Chave de API", - "combo": "Combo", + "combo": "Combinação", "tokens": "Tokens", "compressed": "Compressão", "tps": "TPS", @@ -11373,7 +11379,7 @@ "upstreamCache": "Upstream (Fornecedor)", "ariaLabel": "Detalhe do registo de pedidos", "completed": "Concluído", - "upstreamStatus": "Upstream: {status}", + "upstreamStatus": "A montante: {status}", "statusDiscrepancy": "OmniRoute retornou {status} mesmo que o provedor tenha retornado {provider}", "previousRequest": "Pedido anterior", "nextRequest": "Próximo pedido", @@ -11400,7 +11406,7 @@ "rotated": "Rotacionado: {initial} -> {final}", "apiKey": "Chave da API", "noApiKey": "Sem chave de API", - "combo": "Combo", + "combo": "Combinação", "error": "Erro", "unblockAll": "Desbloquear tudo", "cleared": "Limpo", @@ -11418,8 +11424,8 @@ "correlationId": "ID de Correlação", "correlationIdValue": "ID de Correlação: {id}", "detailedPayloadInfo": "Ative o registo detalhado primeiro se quiser a visualização de carga útil de cliente/fornecedor em quatro etapas para novos pedidos.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Copiar tudo", + "copiedAll": "Tudo copiado" } }, "proxyLogger": { @@ -11464,12 +11470,12 @@ "speech": "Fala", "search": "Pesquisa", "images": "Imagens", - "chat": "Chat", + "chat": "Conversa", "music": "Música", "responses": "Respostas", "rerank": "Reordenar", "video": "Vídeo", - "embeddings": "Embeddings", + "embeddings": "Incorporações", "transcription": "Transcrição" }, "toolDescriptions": { @@ -11481,7 +11487,7 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", + "title": "Tempo de execução", "description": "Observabilidade em tempo real — resiliência de 3 camadas + sessões + alertas de quota", "pause": "Pausar", "resume": "Retomar", @@ -11561,7 +11567,7 @@ "loading": "A carregar…", "removePool": "Remover pool", "removeConfirm": "Remover este pool?", - "pool": "Pool", + "pool": "Grupo", "used": "usado", "allocationsCount": "Atribuições ({count})", "allocatedFree": "{allocated}% atribuído · {free}% livre", @@ -11574,7 +11580,7 @@ "fairShareShort": "justo", "policyHard": "rígida", "policySoft": "suave", - "policyBurst": "burst", + "policyBurst": "pico", "policyHardHint": "Bloquear quando a chave esgota a atribuição", "policySoftHint": "Permitir overflow, apenas alertar", "policyBurstHint": "Permitir burst para o pool livre", @@ -11772,7 +11778,7 @@ "yesterdayHeader": "Ontem", "filterAll": "Todos", "filterProviders": "Fornecedores", - "filterCombos": "Combos", + "filterCombos": "Combinações", "filterApiKeys": "Chaves de API", "filterSettings": "Definições", "filterQuota": "Quota", @@ -12061,7 +12067,7 @@ "recordSession": "GRAVAR", "stopSession": "Parar", "liveBadge": "em direto", - "offlineBadge": "offline", + "offlineBadge": "sem ligação", "noRequests": "Ainda não foram capturados pedidos.", "noRequestsDesc": "Certifique-se de que o AgentBridge está a ser executado ou ative outro modo de captura.", "selectRequest": "Selecione um pedido para o inspecionar.", @@ -12092,7 +12098,7 @@ "llmApiKind": "Tipo de API", "llmModel": "Modelo", "llmMessages": "Mensagens", - "llmStream": "Stream", + "llmStream": "Transmissão", "llmMappedTo": "Mapeado para", "llmCostEstimate": "Estimativa de custo", "systemProxyExitWarning": "O proxy do sistema ainda está ativo — sair da página de qualquer forma?", @@ -12161,7 +12167,7 @@ "noRequestBody": "Sem corpo do pedido.", "noResponseBody": "Sem corpo da resposta.", "formatted": "Formatado", - "raw": "Raw" + "raw": "Em bruto" }, "cliCommon": { "concept": { @@ -12180,7 +12186,7 @@ "acp": { "title": "Agentes ACP", "phrase": "CLIs que o OmniRoute inicia como backend de execução (fluxo inverso)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "A maioria dos utilizadores pode ignorar esta opção — utilize-a apenas quando uma integração o exigir.", "flow": "Cliente → OmniRoute → iniciar CLI (stdio/ACP) → resposta", "seeOther": "Ver →" } @@ -12372,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Registe, liste, teste e remova endpoints de webhook. Configure subscrições de eventos (request.completed, request.failed, quota.exceeded, etc.) e gira as novas tentativas de entrega." }, "omni-mcp": { "name": "Servidor MCP", @@ -12391,7 +12397,7 @@ "description": "Os endpoints principais de inferência compatíveis com a OpenAI: conclusões de chat, embeddings, imagens, áudio (TTS/STT), moderações, rerank e a Responses API. A principal superfície de integração para agentes de IA." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Servir", "description": "Serve o agente localmente" }, "cli-health": { @@ -12411,7 +12417,7 @@ "description": "Consultar modelos de IA disponíveis, listar aliases de modelos e navegar pelo catálogo completo de modelos a partir da CLI. Filtrar por fornecedor, pesquisar por capacidade e resolver variantes de nomes de modelos." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Conversa", "description": "Cliente de chat em linha de comandos" }, "cli-routing": { @@ -12590,14 +12596,14 @@ "typeApikey": "Chave de API", "sortTypeFirst": "Mais fáceis primeiro", "sortTypeFirstHelp": "Agrupar por esforço de registo (Sem Registo → Início de Sessão OAuth → Chave de API), mantendo a ordem de qualidade dentro de cada grupo", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Mais fiáveis primeiro", + "sortByReliabilityHelp": "Ordene os fornecedores pela percentagem de chamadas bem-sucedidas na janela selecionada. Os fornecedores com poucas chamadas para determinar uma taxa mantêm a ordem da respetiva pontuação, abaixo dos que foram avaliados.", "typeLegend": "Sem Registo = configuração zero · Início de Sessão OAuth = iniciar sessão com a sua própria conta · Chave de API = traga a sua própria chave ou o nível gratuito desse fornecedor", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Fiabilidade", + "colReliabilityHelp": "Percentagem de chamadas a que este fornecedor respondeu efetivamente nas últimas 24 horas. Um travessão significa que processou tráfego insuficiente para determinar uma taxa.", + "reliabilitySample": "{successes} de {requests} chamadas foram bem-sucedidas nas últimas {hours} h", + "reliabilityTooFew": "Apenas {requests} chamadas nas últimas {hours} h — demasiado poucas para determinar uma taxa", + "reliabilityNoTraffic": "Nenhuma chamada registada nas últimas 24 h" }, "discovery": { "title": "Deteção de Fornecedores", @@ -12720,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Apoiante do Radar", + "description": "Verificou um feed ativo de apoiante do OmniRoute Radar", + "criteria": "Verifique um feed ativo e assinado de apoiante do Radar." }, "first-token": { "name": "Primeiro Token", @@ -12847,7 +12853,7 @@ "security": "Segurança", "network": "Rede", "policies": "Políticas", - "runtime": "Runtime", + "runtime": "Ambiente de execução", "cli": "CLI", "health": "Saúde", "requiresRestart": "Requer Reinício" @@ -12887,7 +12893,7 @@ "redact": "Ocultar", "disabled": "Desativado", "dual": "Duplo", - "alias": "Alias", + "alias": "Nome alternativo", "canonical": "Canónico" }, "definitions": { @@ -12949,8 +12955,8 @@ "description": "Permitir múltiplas ligações para cada nó de compatibilidade." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Desativar verificações da janela de contexto", + "description": "Ignore a verificação local do OmniRoute relativa à janela de contexto e ao número máximo de tokens de entrada para pedidos diretos a um único modelo. Os fornecedores a montante continuam a aplicar os respetivos limites reais. A compressão de prompts e os limites de tokens de saída permanecem ativos." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Remover itens de saída internos da fase de comentário dos fluxos de passthrough da Responses API antes de os encaminhar para os clientes. Desative este sinalizador para receber comentários upstream em bruto." @@ -12986,7 +12992,7 @@ "description": "Permitir que a recuperação de stream solicite a resposta novamente e a junte após os bytes já terem chegado ao cliente." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Tornar segura a continuação a meio do fluxo com chamadas de ferramentas: nunca retomar um fluxo interrompido após o envio de uma chamada de ferramenta (ainda em curso ou já concluída) e parar após uma continuação vazia, em vez de utilizar todo o limite de novas tentativas." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Fazer failover uma única vez para uma ligação irmã quando um stream fecha antes de emitir qualquer frame útil e a nova tentativa limitada na mesma ligação já foi usada. Sem ligação irmã utilizável, é devolvido o erro early-EOF original. Desligado: o early-EOF mantém-se terminal após a nova tentativa." @@ -13024,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Ativar o acesso à rede na sandbox de competências." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Ciclo de ferramentas gerido pelo servidor", + "description": "Continue as chamadas não transmitidas de ferramentas geridas pelo servidor até o modelo devolver uma resposta utilizável pelo cliente." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Proveniência de Retry-After", + "description": "Em respostas agregadas 429/503 de indisponibilidade, omitir Retry-After quando não for conhecido um momento futuro concreto para uma nova tentativa, em vez de enviar um valor sintético de 1 s, adicionar error.retry_after_provenance e interpretar indicações textuais de repetição da tentativa nos percursos de esvaziamento de combinações." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Paragens de infraestrutura com prioridade protegida como 502", + "description": "Responder com 502 em vez de 503 quando um destino prioritário com recurso exclusivo a quota interrompe a combinação por uma causa que comprovadamente não está relacionada com a quota: um disjuntor de fornecedor aberto ou uma omissão preditiva devido à latência." } } }, @@ -13109,7 +13119,7 @@ "comboHealth": "Integridade do combo", "callLogs": "Registos de chamadas", "costs": "Custos", - "playground": "Playground", + "playground": "Área de testes", "nestedCombo": "Combo aninhado", "modelTarget": "Alvo do modelo", "weight": "{value}% de peso", @@ -13151,7 +13161,7 @@ "loadingUsdCosts": "A carregar custos em USD", "used": "Utilizado", "quotaUsed": "Quota utilizada", - "estimatedFullQuota": "Est. 100%", + "estimatedFullQuota": "Estim. 100%", "rows": "Linhas", "window": "Janela", "unknown": "desconhecido", @@ -13172,7 +13182,7 @@ "segmentHint": "Cada segmento = um pool gratuito · deduplicado por pool, contagem honesta (sem limites de taxa inflacionados).", "boost": "Desbloqueie mais ~{tokens}/mês com um carregamento único de $10 no OpenRouter (50 → 1000 ped/dia)", "uncapped": "Permanentemente gratuito, sem limite publicado (com limite de taxa) — acesso real, não contabilizado no destaque:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "Mais ~{tokens}/mês mediante uma verificação de identidade regional (por exemplo, verificação de nome verdadeiro na China continental) — quota real, não contabilizada no valor em destaque:", "tosRestricted": "{count, plural, one {# modelo assinalado} other {# modelos assinalados}} com restrições de ToS — você decide", "provider": "Fornecedor", "model": "Modelo", @@ -13225,7 +13235,7 @@ "down": "inativo" }, "severity": { - "info": "info", + "info": "informação", "warning": "aviso", "critical": "crítico" }, @@ -13290,7 +13300,7 @@ "allModels": "todos os modelos", "keepModel": "Manter modelo", "otherModel": "Outro modelo", - "combo": "Combo", + "combo": "Combinação", "priorityShort": "prioridade {value}", "toggleAria": "Ativar {name}", "edit": "Editar", @@ -13332,7 +13342,7 @@ "scope": { "global": "Global", "apiKey": "Chave de API", - "combo": "Combo", + "combo": "Combinação", "model": "Modelo", "connection": "Ligação" }, @@ -13425,8 +13435,22 @@ "tierLive": "Ao vivo (em tempo real)", "tierCommunity": "Comunidade (atraso de 30 dias)", "activateTitle": "Ativar Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Compare o acesso da Comunidade e o acesso em tempo real, compreenda o que a sua instalação troca e, em seguida, escolha como ativar o Radar.", + "accessScaleTitle": "Compreenda o acesso ao Radar antes de o ativar", + "accessScaleIntro": "O Radar não realiza qualquer atividade de rede até dar o seu consentimento. Escolha o acesso da Comunidade ou ative uma chave pessoal de apoiante depois de analisar estas regras.", + "accessCommunityRule": "Comunidade — não requer chave: o catálogo completo com um atraso de 30 dias.", + "accessSingleUseRule": "Marcar com estrela + seguir — depois de o GitHub OAuth verificar ambos, a sua conta GitHub recebe uma consulta ao catálogo em tempo real; em seguida, o acesso regressa à Comunidade. Este acesso único não pode voltar a ser emitido para essa conta.", + "accessContributorRule": "Contribuidores — PRs integrados, commits e linhas apenas determinam a classificação semanal. Os 10 primeiros recebem 365 dias; as posições 11–100 recebem 90 dias; os contribuidores fora dos 100 primeiros não recebem qualquer concessão, independentemente do número de PRs. Sair da classificação nunca reduz o tempo já concedido.", + "accessSupporterRule": "Apoiantes — as compras únicas concedem 6 meses, 1 ano ou acesso vitalício, sem renovação automática. As compras, doações, períodos de contribuidor e concessões manuais acumulam-se; o acesso vitalício prevalece sempre.", + "accessUseTitle": "Utilização pessoal, recuperação e análise", + "accessInstallationRule": "Licença pessoal — utilize a chave numa instalação ativa de cada vez. O OmniRoute não cria impressões digitais do hardware. A recuperação revoga e substitui uma chave perdida sem repor a respetiva data de validade.", + "accessAbuseRule": "Análise de abuso — o 4.º endereço IP distinto num período de 24 horas cria apenas um sinalizador para análise manual; nunca bloqueia nem revoga automaticamente uma chave.", + "accessOffersRule": "As ofertas em tempo real são selecionadas manualmente e podem ser alteradas ou expirar.", + "privacyTitle": "O que o Radar troca", + "privacyDownloadsRule": "Transferências — a sua instalação recebe metadados de catálogo e de referências assinados criptograficamente; uma chave válida de acesso em tempo real também desbloqueia ofertas assinadas e o Intel.", + "privacySendsRule": "Envios — a sincronização do lado do servidor envia a chave de apoiante como um token Bearer, e a infraestrutura HTTPS recebe o endereço IP da ligação. A contabilização dos pedidos do feed não armazena nenhum dos valores em formato não processado: conserva hashes das chaves, utilização agregada e um HMAC truncado do endereço IP, com rotação diária, para análise de abuso.", + "privacyNeverRule": "Nunca recolhidos — prompts, respostas, conversas, credenciais de fornecedores, tráfego dos modelos, disponibilidade, latência e configuração local dos fornecedores nunca são enviados para o Radar.", + "activateButton": "Ativar a Comunidade", "activating": "A ativar...", "keySectionTitle": "Já tens uma chave de supporter?", "keyInvalidFormatError": "Formato de chave inválido. Tem de começar com \"omr_\" seguido de 40 caracteres hex.", @@ -13434,21 +13458,21 @@ "changeKeyButton": "Alterar chave", "claimSectionTitle": "Ainda não tens uma chave de supporter?", "contributorButton": "Sou contribuidor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", + "contributorHint": "O GitHub OAuth verifica a classificação semanal atual: os 10 primeiros recebem 365 dias e as posições 11–100 recebem 90 dias. O número de PRs, por si só, nunca concede acesso fora dos 100 primeiros.", "supporterButton": "Apoiar o projeto", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "supporterHint": "As opções únicas de 6 meses, 1 ano e acesso vitalício não têm renovação automática; os períodos elegíveis acumulam-se e o acesso vitalício prevalece.", "colProvider": "Fornecedor", "colModel": "Modelo", "colQuota": "Quota", + "colLimits": "Limites de utilização", + "trainsOnPrompts": "Treina com os prompts", + "trainsOnPromptsHelp": "Os termos deste fornecedor indicam que este pode treinar com os prompts que enviar. Os modelos sem este distintivo indicam que não o fazem ou não o documentam — a ausência de uma declaração não constitui uma garantia.", + "limitsUnknownHelp": "Limites comunicados apenas pelo feed do Radar; não existem limites publicados para esta entrada", + "contextUnknownHelp": "Janela de contexto desconhecida para esta entrada", + "capabilityUnknownHelp": "Capacidade não comunicada pelo feed", "colContext": "Contexto", "colCapabilities": "Capacidades", "colTos": "Risco de ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "novo", "setupGuide": "Guia de configuração", "disabledByFeed": "Desativado pelo feed do Radar", @@ -13477,40 +13501,26 @@ "modelDisplayName": "Nome de exibição local", "modelEnabled": "Ativado localmente", "localStateSaveFailed": "Falha ao guardar as definições locais do Radar", - "guidedCombos": "Guided combos", + "guidedCombos": "Combinações orientadas", "offers": "Ofertas", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "intel": "Intel" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Combinações orientadas do Radar", + "subtitle": "Crie alternativas prioritárias a partir de modelos gratuitos equivalentes selecionados pelo Radar.", + "backToRadar": "Voltar ao Radar", + "loading": "A carregar sugestões de combinações...", + "familyLabel": "Família de modelos", + "modelsLabel": "Ordem de prioridade", + "strategyReason": "A prioridade utiliza primeiro o maior orçamento gratuito recorrente e, em seguida, recorre aos fornecedores ativos.", + "generateButton": "Gerar combinação", + "generating": "A gerar...", + "alreadyCreated": "Já criada", + "created": "Combinação criada", + "noSuggestions": "Atualmente, nenhuma família de modelos elegível tem ligações ativas a, pelo menos, dois fornecedores.", + "catalogRequired": "Sincronize primeiro o catálogo do Radar para carregar famílias de modelos selecionadas.", + "loadFailed": "Não foi possível carregar as sugestões de combinações do Radar.", + "createFailed": "Não foi possível criar a combinação. Reveja as ligações aos fornecedores e tente novamente." }, "radarSetupPage": { "title": "Configuração do Fornecedor", @@ -13539,19 +13549,19 @@ }, "resilienceConnections": { "title": "Resiliência de Ligação", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "As suas ligações recuperam automaticamente", + "reassuranceDetail": "Normalmente, não é necessária qualquer ação. O OmniRoute coloca temporariamente uma ligação em repouso após falhas e volta a tentar utilizá-la em segurança.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Os pedidos podem ser enviados", + "coolingDown": "Nova tentativa em breve", + "lockedOut": "Requer a sua atenção" }, "table": { "status": "Estado", "provider": "Fornecedor", "connectionId": "Ligação", "authType": "Autenticação", - "backoffLevel": "Backoff", + "backoffLevel": "Espera progressiva", "cooldown": "Arrefecimento", "lastError": "Último Erro", "lockouts": "Bloqueios", @@ -13567,9 +13577,9 @@ "timeline": { "title": "Transições do Disjuntor", "window": "Janela", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 h", + "window6h": "6 h", + "window24h": "24 h", "empty": "Sem transições na janela selecionada", "currentState": "Estado Atual", "state": { @@ -13633,7 +13643,7 @@ "pollErrorStopped": "Sondagem interrompida: o servidor rejeitou o pedido (404/403).", "pollErrorTransient": "Erro ao obter dados: a repetir automaticamente.", "degraded": { - "message": "Partial data: unavailable sources: {sources}", + "message": "Dados parciais: fontes indisponíveis: {sources}", "source": { "database": "Base de Dados", "circuitBreaker": "Disjuntor", @@ -13643,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Rejeitar pedidos antes do envio quando o modelo de destino não tiver as capacidades necessárias (visão, ferramentas, saída estruturada, janela de contexto). Protege pedidos diretos de um único fornecedor que contornam o filtro de compatibilidade da camada combinada.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Ignorar a verificação local do OmniRoute relativa à janela de contexto e ao número máximo de tokens de entrada para pedidos diretos de um único modelo. Os fornecedores a montante continuam a aplicar os respetivos limites reais. A compressão de pedidos e os limites de tokens de saída permanecem ativos.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "As estatísticas de pesquisa e as pesquisas recentes só contabilizam fornecedores que ainda tenham uma ligação ativa (os fornecedores sem chave, como duckduckgo-free, são sempre contabilizados). A opção Desativado mantém todas as linhas de pesquisa retidas com um ID de fornecedor.", "publicSystem": { "notFound": { "title": "Página não encontrada", @@ -13704,8 +13714,8 @@ "providersTracked": "Provedores Rastreados", "circuitBreakerState": "Estado do Disjuntor do Fornecedor", "lastUpdate": "Última atualização: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes}min", + "uptimeHoursMinutes": "{hours}h {minutes}min" }, "statusPages": { "400": { @@ -13948,7 +13958,7 @@ "tokens": "Tokens", "active": "Ativo", "other": "Outro", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "hora", "day": "dia", "unknownModel": "desconhecido", @@ -14071,11 +14081,11 @@ "actionApprove": "Aprovar plano", "actionCancel": "Cancelar", "actionSeeInGraph": "Ver no grafo", + "actionRepeat": "Repetir", "actionDone": "Ação aplicada", "actionFailed": "Falha na ação: {error}", "detailFailed": "Falha ao carregar detalhes: {error}", "mirroredInA2A": "Espelhado no A2A", - "actionRepeat": "Repetir", "repeatConfirm": "Clique novamente para confirmar", "repeatDone": "Nova execução criada", "repeatUnavailable": "Entrada original não disponível" @@ -14110,43 +14120,43 @@ "trialDays": "{days, plural, one {# dia} other {# dias}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Informações do Radar", + "subtitle": "Classificações ELO próprias do Radar e alterações factuais do catálogo.", + "backToRadar": "Voltar ao Radar", + "loading": "A carregar informações...", + "refresh": "Atualizar Intel", + "syncing": "A atualizar...", + "loadFailed": "Não foi possível atualizar o Intel. A última cache local verificada foi mantida.", + "empty": "Ainda não está disponível qualquer instantâneo verificado do Intel.", + "supporterBadge": "Apoiador do Radar", + "methodology": "Metodologia", + "eloMethod": "ELO, inicial {initial}, K={factor}", + "freshness": "Atualidade do catálogo", + "ageDays": "{days, plural, one {há # dia} other {há # dias}}", + "trend": "Tendência do catálogo", + "modelDelta": "{current} modelos, +{added} / -{removed}", + "ranking": "Classificação dos modelos", + "noRankings": "Ainda não estão disponíveis comparações confirmadas.", + "model": "Modelo", + "category": "Categoria", + "rating": "Pontuação", + "matches": "Confrontos", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Atual", + "aging": "A envelhecer", + "stale": "Desatualizado" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Em crescimento", + "stable": "Estável", + "shrinking": "Em redução" } }, "capabilityFilter": { - "visionMismatch": "Provider does not support vision for this image request", - "toolsMismatch": "Provider does not support tool calling", - "structuredOutputMismatch": "Provider does not support structured output", - "contextWindowMismatch": "Request exceeds provider context window" + "visionMismatch": "O fornecedor não suporta visão para este pedido de imagem", + "toolsMismatch": "O fornecedor não suporta chamadas de ferramentas", + "structuredOutputMismatch": "O fornecedor não suporta resultados estruturados", + "contextWindowMismatch": "O pedido excede a janela de contexto do fornecedor" }, "cheaperInferenceSponsorBanner": { "title": "A Cheaper Inference é uma Amiga do Código Aberto do OmniRoute", @@ -14154,5 +14164,6 @@ "cta": "Obter uma Chave de API", "partnerLinkNote": "Link de parceiro", "dismissAriaLabel": "Dispensar" - } + }, + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Desative a geração de variantes de nível de pensamento (por exemplo, -low, -medium, -high) no catálogo /v1/models." } diff --git a/src/i18n/messages/ro.json b/src/i18n/messages/ro.json index 72505ae08d..9c103d9ba8 100644 --- a/src/i18n/messages/ro.json +++ b/src/i18n/messages/ro.json @@ -31,7 +31,7 @@ "active": "Activ", "inactive": "Inactiv", "noData": "Nu există date disponibile", - "nothingHere": "Nothing here yet", + "nothingHere": "Nimic aici deocamdată", "configure": "Configurați", "manualConfig": "Configurare manuală", "manage": "Gestionează", @@ -47,7 +47,7 @@ "time": "timpul", "details": "Detalii", "created": "Creat", - "lastUsed": "Last Refreshed", + "lastUsed": "Ultima reîmprospătare", "loadMore": "Încărcați mai multe", "noResults": "Nu s-au găsit rezultate", "reloadPage": "Reîncărcați pagina", @@ -70,8 +70,8 @@ "note": "Notă", "free": "Gratuit", "skipToContent": "Treci la conținut", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Serverul întâmpină probleme. Este posibil ca unele funcții să fie indisponibile.", + "maintenanceServerUnreachable": "Serverul nu poate fi contactat. Se reconectează...", "accept": "Acceptați", "accountId": "ID contului", "alias": "Alias", @@ -85,7 +85,7 @@ "file": "Fișier", "host": "Gazdă", "id": "ID", - "import": "Import", + "import": "Importă", "limit": "Limită", "offset": "Offset", "open": "Deschide", @@ -98,9 +98,9 @@ "skill": "Îndemânare", "sortBy": "Sortare după", "sortOrder": "Ordine de sortare", - "tab": "Tab", + "tab": "Filă", "text": "Text", - "textarea": "Textarea", + "textarea": "Zonă de text", "tool": "Instrument", "toolId": "ID instrument", "web": "Web", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Nu s-a resetat prețul", "apikey": "Cheia API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Mergi la panoul de control", + "checkSystemStatus": "Verifică starea sistemului", + "selectModel": "Selectează modelul", "addModel": "Adaugă model", "effortNone": "Niciunul", "effortLow": "Scăzut", @@ -164,15 +164,15 @@ "reasoningEffort": "Efort de raționament", "wireApi": "Wire API", "modelAliases": "Aliasuri model", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Combinații", + "noModelsFound": "Nu s-au găsit modele", + "clear": "Șterge", + "done": "Gata", "selectAll": "Selectează tot", "unselectAll": "Deselectează tot", "visibleModels": "vizibile", "selectAllConfirm": "Adaugi {count} modele la această combinație?", - "testSelectedProviders": "Test providers", + "testSelectedProviders": "Testează furnizorii", "testingSelectedProviders": "Testare {done}/{total}...", "noProvidersSelectedToTest": "Verifică mai întâi cel puțin un furnizor de mai jos", "noModelsToTestForProviders": "Nu există modele de testat pentru furnizorii selectați", @@ -184,527 +184,527 @@ "selectAllProviders": "Verifică toți furnizorii", "clearProviderSelection": "Debifați furnizorii", "providersSelectedCount": "{count} furnizori verificați", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "A apărut o eroare", + "comboDeleted": "Combinație ștearsă", + "hide": "Ascunde", + "creating": "Se creează", + "comboCreated": "Combinație creată", + "swapFormats": "Interschimbă formatele", + "daysAgo": "Acum câteva zile", + "retries": "Reîncercări", + "errorDuringRestore": "Eroare în timpul restaurării", + "eventsAppearHint": "Indiciu privind afișarea evenimentelor", + "noLockouts": "Nicio blocare", + "webSearchDesc": "Descrierea căutării web", + "audioProvidersHeading": "Titlul furnizorilor audio", "cloudAgentProviders": "Furnizori de agenți cloud", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Acum câteva minute", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", + "liveAutoRefreshing": "Reîmprospătare automată în timp real", + "webSearch": "Căutare web", + "anthropicPrefixPlaceholder": "Substituent pentru prefixul Anthropic", + "addModelToCombo": "Adaugă modelul la combinație", + "failedToLoad": "Încărcarea a eșuat", + "categoryMedia": "Categoria media", + "enableCloud": "Activează cloudul", + "expirationBannerExpiringSoon": "Banner de expirare iminentă", + "retry": "Reîncercați", + "embeddings": "Înglobări", + "errorCount": "Număr de erori", + "backupReasonManual": "Motivul backupului: manual", + "safeSearchModerate": "Căutare sigură moderată", + "activeLimiters": "Limitatoare active", + "a2aCardTitle": "Titlul cardului A2A", + "cloudWorkerUnreachable": "Lucrătorul cloud nu poate fi contactat", + "testFailed": "Test eșuat", + "compatibleBaseUrlHint": "Indiciu pentru URL-ul de bază compatibil", + "usageTracking": "Urmărirea utilizării", + "disableCloudTitle": "Titlul dezactivării cloudului", + "noConnections": "Nicio conexiune", + "providerHealth": "Starea furnizorului", + "confirmDbImport": "Confirmați importul bazei de date", + "notAvailableSymbol": "Simbol indisponibil", + "backupsAvailable": "Backupuri disponibile", + "providerAuto": "Furnizor automat", + "newProviderNamePlaceholder": "Substituent pentru numele noului furnizor", + "a2aQuickStartStep2": "Pasul 2 pentru pornirea rapidă A2A", + "ok": "OK", + "available": "Disponibil", + "noBackupYet": "Niciun backup încă", + "more": "Mai multe", + "noCompatibleYet": "Niciunul compatibil încă", + "multiProvider": "Furnizori multipli", + "repairEnvHint": "Indiciu pentru repararea mediului", + "disablingCloud": "Se dezactivează cloudul", + "testBench": "Banc de testare", "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", + "cloudBenefitShare": "Beneficiul partajării în cloud", + "mcpCardTitle": "Titlul cardului MCP", + "disableConfirm": "Confirmați dezactivarea", + "filters": "Filtre", + "expirationBannerExpiredDesc": "Descrierea bannerului de expirare", + "saveComboDefaults": "Salvați valorile implicite ale combinației", + "cloudConnectedVerified": "Conexiune cloud verificată", + "uptime": "Durată de funcționare", + "compatibleProdPlaceholder": "Substituent compatibil pentru producție", + "fallbackChainsTitle": "Titlul lanțurilor de rezervă", + "oauthLabel": "Etichetă OAuth", + "a2aCardDescription": "Descrierea cardului A2A", + "okShort": "OK scurt", + "maintenance": "Mentenanță", + "formatConverter": "Convertor de formate", + "zedImportNetworkError": "Eroare de rețea la importul din Zed", + "apiKeyLabel": "Eticheta cheii API", + "noModelsForProvider": "Niciun model pentru furnizor", + "mcpCardDescription": "Descrierea cardului MCP", + "apiTypeLabel": "Eticheta tipului de API", + "configuredProvidersLabel": "Eticheta furnizorilor configurați", + "maxRetriesLabel": "Eticheta numărului maxim de reîncercări", + "title": "Titlu", + "output": "Ieșire", + "prefixHint": "Indiciu pentru prefix", + "skipWizard": "Omite expertul", + "failedCount": "Numărul de eșecuri", + "confirmDbImportDesc": "Descrierea confirmării importului bazei de date", + "entries": "Intrări", + "until": "Până la", + "disableCombo": "Dezactivează combinația", + "liveMonitorDescriptionPrefix": "Prefixul descrierii monitorizării în timp real", + "runningCount": "Numărul de procese în execuție", + "noActiveConnectionsInGroup": "Nicio conexiune activă în grup", + "savedSuccessfully": "Salvat cu succes", + "systemStorage": "Stocare de sistem", + "videoDesc": "Descriere video", + "maxResults": "Numărul maxim de rezultate", + "timeRangeMonth": "Interval de timp: lună", + "testSummary": "Rezumatul testului", + "failedSetPassword": "Setarea parolei a eșuat", "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "restore": "Restaurează", + "disableWarning": "Avertisment privind dezactivarea", + "moderationsDesc": "Descrierea moderărilor", + "providerHealthStatusAria": "ARIA pentru starea de funcționare a furnizorului", + "modelNamePlaceholder": "Substituent pentru numele modelului", + "mcpQuickStartStep2": "Pasul 2 pentru pornirea rapidă MCP", + "quickStart": "Pornire rapidă", + "fullExportFailedWithError": "Exportul complet a eșuat cu o eroare", + "loadingBackups": "Se încarcă copiile de siguranță", + "anthropicBaseUrlPlaceholder": "Substituent pentru URL-ul de bază Anthropic", + "description": "Descriere", + "noProviderFound": "Nu a fost găsit niciun furnizor", + "auto": "Automat", + "protocolsDescription": "Descrierea protocoalelor", + "cloudSessionNote": "Notă privind sesiunea în cloud", + "advancedSettings": "Setări avansate", + "defaultStrategy": "Strategie implicită", + "purgeExpiredLogs": "Șterge jurnalele expirate", + "justNow": "Chiar acum", + "providerTestFailed": "Testarea furnizorului a eșuat", + "openaiBaseUrlPlaceholder": "Substituent pentru URL-ul de bază Openai", + "image": "Imagine", + "failedCreateChain": "Crearea lanțului a eșuat", + "importDatabase": "Importă baza de date", + "allDataLocal": "Toate datele sunt locale", + "sectionTitle": "Titlul secțiunii", + "failedToggle": "Comutarea a eșuat", + "editCombo": "Editează combinația", + "testResults": "Rezultatele testului", + "searchQuery": "Interogare de căutare", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "Duplică", + "createCombo": "Creează combinația", + "searchTypeWeb": "Tip de căutare: web", + "addChain": "Adaugă lanț", + "prefixLabel": "Eticheta prefixului", + "listModelsDesc": "Descrierea listei de modele", + "databaseSize": "Dimensiunea bazei de date", + "chainCreated": "Lanț creat", + "providerTestTimeout": "Testarea furnizorului a expirat", + "routingStrategy": "Strategie de rutare", + "translateAction": "Acțiune de traducere", + "exportFailed": "Exportul a eșuat", + "connectedVerificationPending": "Conectat, verificare în așteptare", + "a2aQuickStartTitle": "Titlul ghidului de pornire rapidă A2A", + "couldNotTest": "Nu s-a putut efectua testarea", + "testAllCompatible": "Testează toate elementele compatibile", + "anthropicCompatibleName": "Numele compatibil Anthropic", + "disabling": "Se dezactivează", + "failedEnable": "Activarea a eșuat", + "categoryUtility": "Categoria Utilitare", + "customUrlOptional": "URL personalizat opțional", + "localProviders": "Furnizori locali", + "comboNamePlaceholder": "Substituent pentru numele combinației", + "memoryRss": "Memorie RSS", + "disableProvider": "Dezactivează furnizorul", + "welcomeDesc": "Descriere de bun venit", + "nameLabel": "Etichetă pentru nume", + "allOperational": "Toate sunt operaționale", + "backupNow": "Creează o copie de rezervă acum", + "providerMaxRetriesAria": "Etichetă ARIA pentru numărul maxim de reîncercări ale furnizorului", + "textToSpeechDesc": "Descriere pentru conversia textului în vorbire", + "machineId": "ID-ul dispozitivului", + "globalProxy": "Proxy global", + "hitsMisses": "Reușite și ratări", + "testDesc": "Descrierea testului", + "chatDesc": "Descrierea conversației", + "importSuccess": "Import reușit", + "chat": "Conversație", + "a2aQuickStartStep1": "Pasul 1 pentru pornirea rapidă A2A", + "importFailed": "Importul a eșuat", + "inputPlaceholder": "Substituent pentru câmpul de introducere", + "providerModelsTitle": "Titlul modelelor furnizorului", + "lastBackup": "Ultima copie de rezervă", + "yourEndpoint": "Endpointul dvs.", + "autoDisableThresholdDesc": "Descrierea pragului de dezactivare automată", + "rerankDesc": "Descrierea reclasificării", + "modelsPathPlaceholder": "Substituent pentru calea modelelor", + "noCombosYet": "Nicio combinație încă", + "connectedVerificationPendingWithError": "Conectat, verificare în așteptare, cu eroare", + "comboDefaultsGuideHint1": "Indiciul 1 din ghidul valorilor implicite ale combinației", + "enableCloudTitle": "Titlul pentru activarea serviciului cloud", + "configuredProvidersHint": "Indiciu privind furnizorii configurați", + "paused": "Întrerupt temporar", + "llmProviders": "Furnizori LLM", + "enableCombo": "Activează combinația", + "removeProviderOverrideAria": "Etichetă ARIA pentru eliminarea suprascrierii furnizorului", + "nodeVersion": "Versiunea Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Exportul a eșuat cu o eroare", + "proxyConfigured": "Proxy configurat", + "concurrencyPerModel": "Concurență per model", + "protocolTasksLabel": "Etichetă pentru sarcinile protocolului", + "oauthProviders": "Furnizori Oauth", + "lockedCount": "Număr de elemente blocate", + "deleteChainConfirm": "Confirmarea ștergerii lanțului", + "recentTranslations": "Traduceri recente", + "zedImportButton": "Buton de import Zed", + "responsesDesc": "Descrierea răspunsurilor", + "testedCount": "Număr de elemente testate", + "providersCommaSeparatedPlaceholder": "Substituent pentru furnizori separați prin virgulă", + "signatureDefaults": "Valori implicite pentru semnătură", + "errorCreating": "Eroare la creare", + "timeRangeYear": "Interval de timp: an", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Serviciul cloud a fost dezactivat cu succes", + "deleteConfirm": "Confirmarea ștergerii", + "check": "Verificare", + "safeSearch": "Căutare sigură", + "protocolLastActivity": "Ultima activitate a protocolului", + "openMcpDashboard": "Deschide tabloul de bord Mcp", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Eticheta căii pentru chat", + "retryDelay": "Întârziere între reîncercări", + "errorUpdating": "Eroare la actualizare", + "ideCliIntegrations": "Integrări IDE și CLI", + "imageGeneration": "Generare de imagini", + "apiKeyRequired": "Cheia API este obligatorie", + "resetAllTitle": "Titlul resetării tuturor setărilor", + "connectionError": "Eroare de conexiune", + "modelName": "Numele modelului", + "apiKeyForCheck": "Cheie API pentru verificare", + "cloudRequestTimeout": "Timpul de așteptare al solicitării cloud a expirat", + "showConfiguredOnly": "Afișează doar elementele configurate", "showFreeOnly": "Numai gratuit", "addFirstProvider": "Adăugați primul dvs. furnizor", "addFirstProviderDesc": "Conectați un furnizor AI pentru a începe să direcționați cererile prin OmniRoute. Puteți folosi furnizori gratuiti, chei API sau conturi OAuth.", "learnMore": "Aflați mai multe", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Include domenii", + "promptCache": "Memorie cache pentru prompturi", + "cloudConnected": "Conectat la cloud", + "deleteChain": "Șterge lanțul", + "chatPathPlaceholder": "Substituent pentru calea chatului", + "databasePath": "Calea bazei de date", + "usingLocalServer": "Se utilizează serverul local", + "globalComboConfig": "Configurație globală Combo", + "backupFailed": "Copierea de rezervă a eșuat", + "tabProtocols": "Protocoale filă", + "continue": "Continuă", + "categorySearch": "Căutare categorie", + "rateLimitStatus": "Starea limitei de rată", + "repairEnvSuccess": "Mediul a fost reparat cu succes", + "nameRequired": "Numele este obligatoriu", + "country": "Țară", + "trackMetricsDesc": "Descrierea urmăririi metricilor", + "durationSecondsShort": "Durată în secunde (scurt)", + "formatConverterDescription": "Descrierea convertorului de formate", + "cloudBenefitAccess": "Acces la beneficiile cloud", + "maxRetries": "Număr maxim de reîncercări", + "queueTimeout": "Timp de expirare a cozii", "queueDepth": "Adâncime coadă", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Adaugă furnizor", + "realtime": "În timp real", + "totalTranslations": "Total traduceri", + "protocolActiveStreamsLabel": "Etichetă fluxuri active ale protocolului", + "repairEnv": "Repară mediul", + "modelsCount": "Număr de modele", + "viewBackups": "Vezi copiile de rezervă", + "responsesApi": "API Responses", + "copyComboName": "Copiază numele Combo", + "failures": "Eșecuri", + "failedUpdate": "Actualizarea a eșuat", + "imageDesc": "Descriere imagine", + "failedCreate": "Crearea a eșuat", + "remainingOfLimit": "Rămas din limită", + "protocolsTitle": "Titlu protocoale", + "expirationBannerExpiringSoonDesc": "Descriere banner pentru expirare iminentă", + "source": "Sursă", + "failed": "Eșuat", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", + "mcpQuickStartStep1": "Pasul 1 pentru pornirea rapidă Mcp", + "runTest": "Rulează testul", + "loadingFallbackChains": "Se încarcă lanțurile de rezervă", + "healthy": "Funcțional", + "version": "Versiune", + "saveBlockWeighted": "Salvează blocul ponderat", + "zedImportNone": "Import Zed: niciunul", + "noBackupsYet": "Nicio copie de rezervă încă", + "noGlobalProxy": "Fără proxy global", + "noModels": "Niciun model", + "stickyLimit": "Limită persistentă", + "passedCount": "Număr de reușite", + "zedImportFailed": "Importul Zed a eșuat", + "saving": "Se salvează", + "testAll": "Testează tot", + "globalProxyDesc": "Descrierea proxy-ului global", + "latencyP99": "Latență P99", + "connectingToCloud": "Se conectează la cloud", + "responses": "Răspunsuri", + "errorDeleting": "Eroare la ștergere", + "openaiPrefixPlaceholder": "Substituent pentru prefixul OpenAI", + "enterPassword": "Introduceți parola", + "openA2aDashboard": "Deschide panoul de control A2A", + "enableProvider": "Activează furnizorul", + "modeTest": "Mod de testare", + "failedDeleteChain": "Ștergerea lanțului a eșuat", + "providerDesc": "Descrierea furnizorului", + "templateLoadHint": "Indiciu pentru încărcarea șablonului", + "lastFailure": "Ultimul eșec", + "moveDown": "Mută în jos", + "providerLabel": "Eticheta furnizorului", + "clearCacheFailed": "Golirea cache-ului a eșuat", + "imagesGenerations": "Generări de imagini", + "repairEnvWorking": "Se repară mediul de lucru", + "millisecondsShort": "ms", + "globalLabel": "Etichetă globală", + "failuresPlural": "Eșecuri", + "completionsLegacyDesc": "Descrierea completărilor vechi", + "searchProviders": "Caută furnizori", + "chatPathHint": "Indiciu pentru calea conversației", + "defaultStrategyDesc": "Descrierea strategiei implicite", + "latencyP95": "Latență P95", + "textToSpeech": "Conversie text în vorbire", + "searchType": "Tip de căutare", + "messages": "Mesaje", + "aggregatorsGateways": "Agregatoare și gateway-uri", + "comboStrategyAria": "Aria strategiei combinate", + "input": "Intrare", + "testingConnection": "Se testează conexiunea", + "excludeDomains": "Exclude domenii", + "webCookieProviders": "Furnizori de cookie-uri web", + "allTestsPassed": "Toate testele au trecut", + "openaiCompatibleName": "Nume compatibil Openai", + "warningCostOptimizedPartialPricing": "Avertisment: prețuri parțiale optimizate în funcție de cost", + "comboDefaultsGuideTitle": "Titlul ghidului pentru valorile implicite ale combinației", + "hoursAgo": "Ore în urmă", + "notAvailable": "Indisponibil", + "skipAndContinue": "Omite și continuă", + "moderations": "Moderări", + "proxyConfig": "Configurație proxy", + "upstreamProxyProviders": "Furnizori proxy din amonte", + "exportAll": "Exportă tot", + "queuedCount": "Număr în coadă", + "resetAll": "Resetează tot", + "noTranslations": "Nicio traducere", + "avgLatency": "Latență medie", + "throttleStatus": "Starea limitării", + "backupRetentionDesc": "Descrierea perioadei de păstrare a copiilor de rezervă", + "noCBData": "Nu există date Cb", + "chainDeleted": "Lanț șters", + "timeLeft": "Timp rămas", + "expirationBannerExpired": "Banner de expirare: expirat", + "language": "Limbă", + "invalidFileType": "Tip de fișier nevalid", + "monitoredProviders": "Furnizori monitorizați", + "errors": "Erori", "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "chatCompletions": "Completări de chat", + "exampleTemplatesHint": "Sugestie pentru șabloane de exemplu", + "retryDelayLabel": "Etichetă pentru întârzierea reîncercării", + "audioTranscription": "Transcriere audio", + "fallbackChainsDesc": "Descrierea lanțurilor de rezervă", + "exampleTemplates": "Șabloane de exemplu", + "connectionsCount": "Număr de conexiuni", + "modelsPathLabel": "Etichetă pentru calea modelelor", + "activeProvidersHint": "Sugestie pentru furnizorii activi", + "activeLockouts": "Blocări active", + "invalid": "Nevalid", + "skipPassword": "Omite parola", + "moveUp": "Mută în sus", + "timeRange": "Interval de timp", + "stickyLimitDesc": "Descrierea limitei persistente", + "cloudBenefitEdge": "Avantajul Cloud Edge", + "custom": "Personalizat", + "verifying": "Se verifică", + "baseUrlLabel": "Eticheta URL-ului de bază", + "setPassword": "Setează parola", + "safeSearchStrict": "Căutare sigură strictă", + "noChangesSinceBackup": "Nicio modificare de la backup", + "modelsPathHint": "Indiciu pentru calea modelelor", + "audioTranscriptions": "Transcrieri audio", + "testCombo": "Testează combinația", + "mcpQuickStartTitle": "Titlul ghidului de pornire rapidă Mcp", + "comboUpdated": "Combinație actualizată", + "weighted": "Ponderat", + "providers": "Furnizori", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Descriere pentru lipsa lanțurilor de rezervă", + "yesImport": "Da, importă", + "lockoutsAutoRefreshHint": "Indiciu pentru reîmprospătarea automată a blocărilor", + "tabApis": "Fila API-uri", + "sectionDescription": "Descrierea secțiunii", + "filter": "Filtru", + "purgeLogsFailed": "Ștergerea jurnalelor a eșuat", + "latency": "Latență", + "testAllOAuth": "Testează toate conexiunile O Auth", + "mcpQuickStartStep3": "Pasul 3 al ghidului de pornire rapidă Mcp", + "repairEnvFailed": "Repararea mediului a eșuat", + "zedImportHint": "Indiciu pentru importul Zed", + "modelsAcrossEndpoints": "Modele pentru toate endpointurile", + "autoDisableBannedAccounts": "Dezactivează automat conturile interzise", + "securityDesc": "Descrierea securității", + "listModels": "Listează modelele", + "backupRestore": "Restaurare din backup", + "target": "Țintă", + "zedImportSuccess": "Import Zed reușit", + "lastHeaderUpdate": "Ultima actualizare a antetului", + "categoryCore": "Categorie principală", + "noFallbackChains": "Niciun lanț de rezervă", + "noSearchProviders": "Niciun furnizor de căutare", + "autoBalance": "Echilibrare automată", + "noModelsYet": "Niciun model încă", + "signatureFamily": "Familie de semnături", + "externalApiCalls": "Apeluri API externe", + "providerOverridesDesc": "Descrierea suprascrierilor furnizorilor", + "signatureTool": "Instrument de semnare", + "connectionFailed": "Conexiune eșuată", + "activeLimitersPlural": "Limitatoare active, plural", + "doneDesc": "Descriere pentru finalizat", + "down": "Indisponibil", + "noDataYet": "Încă nu există date", + "activeProviders": "Furnizori activi", + "nameInvalid": "Nume nevalid", + "skip": "Omite", + "createChain": "Creează lanț", + "audioSpeech": "Vorbire audio", + "cacheCleared": "Memorie cache golită", + "searchTypeNews": "Tip de căutare: știri", + "durationMillisecondsShort": "Durată în milisecunde, abreviat", + "addOpenAICompatible": "Adaugă un furnizor compatibil cu OpenAI", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "În așteptare", + "domainPlaceholder": "Substituent pentru domeniu", + "durationMinutesShort": "Durată în minute, abreviat", + "verifyingConnection": "Se verifică conexiunea", + "imageProviders": "Furnizori de imagini", + "protocolToolsLabel": "Etichetă pentru instrumentele protocolului", + "queryPlaceholder": "Substituent pentru interogare", + "videoGeneration": "Generare video", + "timeRangeWeek": "Interval de timp: o săptămână", + "limitExhausted": "Limită epuizată", + "failedDisable": "Dezactivare eșuată", + "inMemoryNote": "Notă privind stocarea în memorie", + "compatibleHint": "Indiciu de compatibilitate", + "errorShort": "Eroare, formă scurtă", + "advancedHint": "Indiciu avansat", + "restoreFailed": "Restaurare eșuată", + "searchProvidersHeading": "Titlul furnizorilor de căutare", + "comboName": "Numele combinației", + "autoDisableDescription": "Descrierea dezactivării automate", + "embeddingsDesc": "Descrierea încorporărilor", + "operational": "Operațional", + "testAllApiKey": "Testează toate cheile API", + "backupCreated": "Copie de rezervă creată", + "errorDuringImport": "Eroare în timpul importului", + "comboDefaultsGuideHint2": "Indiciul 2 din ghidul valorilor implicite ale combinației", + "connecting": "Se conectează", + "fillModelAndProviders": "Completați modelul și furnizorii", + "syncing": "Se sincronizează", + "resetConfirm": "Confirmați resetarea", + "trackMetrics": "Urmărește indicatorii", + "successful": "Reușit", + "recovering": "Se recuperează", + "autoDisableThreshold": "Pragul de dezactivare automată", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Se sincronizează datele", + "cloudBenefitPorts": "Porturile pentru beneficiile cloud", + "compatibleProviders": "Furnizori compatibili", "freeTierProviders": "Furnizori de nivel gratuit", "freeTierLabel": "Nivel gratuit disponibil", "freeTierProvidersDesc": "Furnizorii cu niveluri gratuite — unii necesită o înregistrare cu cheie API, alții nu au nevoie de acreditări.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Golește memoria cache", + "reqs": "Cerințe", + "addAnthropicCompatible": "Adaugă un furnizor compatibil cu Anthropic", + "apiKeyProviders": "Furnizori de chei API", + "tabsAria": "ARIA pentru file", + "resetting": "Se resetează", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Motivul copiei de rezervă înainte de restaurare", + "disableCloud": "Dezactivează cloud-ul", + "newProviderNameAria": "ARIA pentru numele noului furnizor", + "passwordsMismatch": "Parolele nu corespund", + "a2aQuickStartStep3": "Pasul 3 din ghidul de pornire rapidă A2A", + "liveMonitorDescriptionSuffix": "Sufixul descrierii monitorizării în timp real", + "failedAddProvider": "Adăugarea furnizorului a eșuat", + "addAtLeastOneProvider": "Adăugați cel puțin un furnizor", + "reasonSeparator": "Separator pentru motiv", + "zedImporting": "Se importă Zed", + "confirmPasswordPlaceholder": "Confirmați parola", + "whatYouGet": "Ce primiți", + "signatureSession": "Sesiune de semnare", + "errorCountNoCode": "Număr de erori fără cod", + "testing": "Testare", + "providersCommaSeparated": "Furnizori separați prin virgulă", + "exportDatabase": "Exportă baza de date", + "hitRate": "Rată de succes", + "completionsLegacy": "Completări vechi", + "removeModel": "Elimină modelul", + "timeRangeDay": "Interval de timp: o zi", + "cloudRequestFailed": "Solicitarea cloud a eșuat", + "updatedAt": "Actualizat la", + "monitoredProvidersHint": "Indiciu privind furnizorii monitorizați", + "connectionSuccessful": "Conexiune reușită", + "latencyP50": "Latență P50", + "logsDeleted": "Jurnale șterse", + "chatTester": "Tester de chat", + "safeSearchOff": "Căutare sigură dezactivată", + "nameHint": "Indiciu pentru nume", + "debugToggle": "Comutator de depanare", + "embedding": "Încorporare", + "issuesLabel": "Etichetă pentru probleme", + "optionAny": "Opțiunea Oricare", + "maxNestingDepth": "Adâncime maximă de imbricare", + "rerank": "Reclasificare", + "checking": "Se verifică", + "getStarted": "Începeți", + "restoreSuccess": "Restaurare reușită", + "issuesDetected": "Probleme detectate", + "signatureCache": "Cache pentru semnături", + "modelLockouts": "Blocări ale modelelor", + "usingCloudProxy": "Se utilizează proxy-ul cloud", + "loadingHealth": "Se încarcă starea de funcționare", + "providerOverrides": "Suprascrieri pentru furnizori", + "audioTranscriptionDesc": "Descrierea transcrierii audio", + "learnedFromHeaders": "Învățat din anteturi", + "totalRequests": "Total solicitări", + "cloudUnstableNote": "Notă privind instabilitatea cloud", "gamificationAdmin": "Administrator de gamification", "monitorAnomaliesAndHealth": "Monitorizați anomaliile și sănătatea sistemului", "flaggedAnomalies": "Anomalii semnalate", "noAnomaliesDetected": "Nu au fost detectate anomalii", "apiKey": "Cheia API", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 h)", "zScore": "Scorul Z", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Suspect", "tokensCommunityServers": "Servere comunitare", "tokensServerNamePlaceholder": "Numele serverului", "tokensApiKeyPlaceholder": "cheie API", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Se încarcă mai multe…", "recommended": "Recomandat", "understand": "Am înțeles", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", + "batchConceptTitle": "Procesare în lot", + "batchConceptSubtitle": "Procesați asincron mii de solicitări la ~50% din cost (fereastră de 24 h). Ideal pentru evaluări, clasificare și embeddings.", + "batchConceptHowItWorks": "Cum funcționează", + "batchConceptBenefit50pct": "Reducere de 50% la tokenurile de intrare și ieșire", + "batchConceptAsync24h": "Procesare asincronă, cu o fereastră de finalizare de 24 h", + "batchConceptUseCases": "Ideal pentru clasificări în masă, evaluări și embeddings", + "batchHeaderSubtitle": "Rulați mai multe solicitări ca o singură sarcină", + "batchStep1": "1 · Încărcați JSONL", + "batchStep1Desc": "Adăugați solicitări", + "batchStep2": "2 · Creați lotul", + "batchStep2Desc": "Rulați sarcina", + "batchStep3": "3 · Obțineți rezultatele", + "batchStep3Desc": "Descărcați rezultatele", + "filesConceptTitle": "Fișiere de lot", + "filesConceptSubtitle": "Fișiere JSONL utilizate de loturi: solicitări de intrare, rezultate și erori.", + "filesConceptInput": "Intrare — fișierul JSONL cu câte o solicitare pe linie", + "filesConceptOutput": "Ieșire — rezultatele solicitărilor finalizate", + "filesConceptError": "Erori — solicitările care au eșuat", + "filesConceptRetention": "Păstrare: 30 de zile în mod implicit (29 de zile pe Anthropic)", + "wizardTitle": "Lot nou", + "wizardClose": "Închideți", + "wizardNext": "Înainte", + "wizardBack": "Înapoi", + "wizardCancel": "Anulați", + "wizardCreate": "Creați lotul", + "wizardCreating": "Se creează…", + "wizardStep1Destination": "Destinație", + "wizardStep2Input": "Intrare", + "wizardStep3Validate": "Validați", + "wizardStep4Cost": "Cost și creare", + "wizardProviderLabel": "Furnizor", + "wizardEndpointLabel": "Punct final", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (îl vom converti)", + "wizardDropOrPick": "Plasați un fișier aici sau faceți clic pentru a-l selecta", + "wizardCsvMappingTitle": "Asociați coloanele CSV → câmpurilor solicitării", + "wizardCsvMappingAddField": "Adăugați câmp", "wizardCsvNoColumns": "Nu s-au detectat coloane în antetul CSV.", "wizardCsvIgnoreColumn": "— ignoră —", "wizardCsvCustomIdMapped": "custom_id mapat", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} rânduri analizate", "wizardCsvRowsSkipped": "{count} rânduri omise", "wizardCsvRowError": "Rândul {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Toate liniile sunt valide", "wizardValidating": "Se validează…", "wizardValidationParseFailed": "Validarea a eșuat — nu s-a putut analiza conținutul.", "wizardValidationSummary": "{lines} linii · {ids} custom_ids unice", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "S-au detectat custom_ids duplicate:", "wizardValidationFirstErrors": "Erori (primele {count}):", "wizardValidationLine": "Linia {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", + "wizardValidationErrors": "Erori de validare", + "wizardValidationPreview": "Previzualizare (primele 5 solicitări)", + "wizardValidationSamplingNote": "Fișierul este mare — validat prin eșantionare (primele 1000 + ultimele 100 de linii). Validarea completă rulează pe server.", + "wizardCostSync": "Cost sincron", + "wizardCostBatch": "Cost lot (-50%)", + "wizardCostSavings": "Economii", + "wizardCostEstimatedNotice": "Cost estimat — facturarea reală poate varia.", + "wizardErrorUpload": "Încărcarea fișierului a eșuat. Încearcă din nou.", + "wizardErrorCreate": "Crearea lotului a eșuat. Încearcă din nou.", + "wizardEmptyProviders": "Conectează un furnizor care acceptă procesarea în loturi (OpenAI, Anthropic sau Gemini) pentru a crea un lot.", + "uploadModalTitle": "Încarcă fișierul lotului", + "uploadModalDropOrPick": "Plasează aici un fișier .jsonl sau dă clic pentru a-l selecta", + "uploadModalUpload": "Încarcă", + "uploadModalCancel": "Anulează", + "uploadModalError": "Încărcarea a eșuat. Încearcă din nou.", + "uploadModalSuccess": "Încărcat", + "uploadModalSizeLimit": "Maximum 512 MB", + "batchListNewButton": "Lot nou", + "batchListAutoRefresh": "Reîmprospătare automată la 30 s", "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "batchActionCancel": "Anulează", + "batchActionDownloadOutput": "Descarcă rezultatul", + "batchActionDownloadErrors": "Descarcă erorile", + "batchActionRetry": "Reîncearcă solicitările eșuate", + "batchActionRetryConfirm": "Reîncerci {n} solicitare(i) eșuată(e)? Costul final depinde de numărul efectiv de tokenuri consumate.", + "expirationBadgeCritical": "Critic", + "expirationBadgeWarning": "În curând", + "expirationBadgeNormal": "În așteptare", + "expirationBadgeExpired": "Expirat", + "filesListUploadButton": "Încarcă", + "filesListUsedByColumn": "Utilizat de", + "filesListUsedByNone": "Niciunul", + "filesListUsedByRoleInput": "intrare", + "filesListUsedByRoleOutput": "ieșire", + "filesListUsedByRoleError": "eroare", + "filesListSizeColumn": "Dimensiune", + "batchListProgressPartial": "(parțial)", + "batchListProviderColumn": "Furnizor", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "Altele", + "batchListTitle": "Loturi", + "batchListCount": "{count} loturi", + "batchListRemovingCompleted": "Se elimină…", + "batchListRemoveCompleted": "Eliminare finalizată", + "batchListTableStatus": "Stare", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Punct final", "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableProgress": "Progres", + "batchListTableCreated": "Creat", + "batchListTableExpires": "Expiră", + "batchListLoading": "Se încarcă…", + "batchListEmpty": "Nu s-au găsit loturi", + "batchListValidating": "Se validează…", + "batchStatusAll": "Toate stările", + "batchStatusInProgress": "În desfășurare", + "batchStatusValidating": "Se validează", + "batchStatusFinalizing": "Se finalizează", + "batchStatusCompleted": "Finalizat", + "batchStatusFailed": "Eșuat", + "batchStatusCancelled": "Anulat", + "batchStatusCancelling": "Se anulează", + "batchStatusExpired": "Expirat", + "batchStatusCompletedWithFailures": "finalizat cu erori", + "batchStatusInProgressWithFailures": "în desfășurare (cu erori)", + "batchStatusFinalizingWithFailures": "în curs de finalizare (cu erori)", + "batchStatusCancelledWithFailures": "anulat cu erori", + "batchStatusExpiredWithFailures": "expirat (parțial)", + "wizardCostEstimating": "Se estimează costul…", + "wizardCostRequests": "Solicitări", + "wizardCostInputTok": "tokenuri de intrare", + "wizardCostOutputTok": "tokenuri de ieșire", + "wizardCostWindow": "Interval", + "wizardDestinationSelectProvider": "Selectați un furnizor…", + "wizardDestinationSelectModel": "Selectați un model…", + "wizardDestinationConnectProvider": "Conectați un furnizor", + "batchListBatchCreated": "Lotul {id} a fost creat — lista se reîmprospătează…", + "batchListBatchCreatedDismiss": "Închideți", + "batchListRefreshing": "Se reîmprospătează…", + "batchListRefresh": "Reîmprospătați", + "uploadFileModalRemove": "Eliminați", + "uploadFileModalUploading": "Se încarcă…", + "wizardInputReading": "Se citește fișierul…", + "wizardInputReady": "Gata", + "wizardInputLargeFileLabel": "Fișier mare — validare prin eșantionare", + "wizardInputCsvJsonlReady": "Fișier JSONL generat — gata de validare.", + "wizardInputLargeFileWarning": "A fost detectat un fișier mare — validarea se efectuează prin eșantionare (primii 5 MB + ultimii 100 KB). Validarea completă are loc pe server.", + "wizardCostWindow24h": "Fereastră de finalizare de 24 h", + "wizardValidationFieldsOk": "câmpurile obligatorii sunt valide", + "filesListDelete": "Șterge", + "filesListDownload": "Descarcă", + "batchDetailActionCancel": "Anulează lotul", + "batchDetailActionRetry": "Reîncearcă solicitările eșuate", + "batchDetailCancelling": "Se anulează…", + "batchDetailRetrying": "Se pregătește reîncercarea…", + "batchDetailCancelConfirm": "Anulați acest lot? Solicitările în curs vor fi oprite.", + "batchActionCancelError": "Lotul nu a putut fi anulat. Încercați din nou.", + "batchActionRetryError": "Solicitările eșuate nu au putut fi reîncercate. Încercați din nou.", + "batchConceptRetentionNote": "Fișierele cu rezultate și erori sunt păstrate timp de 30 de zile (Anthropic: 29 de zile)", "batchFilesSizeColumn": "Dimensiune", "toggleNoAuthProvider": "Comută furnizorul fără autentificare", "loadingModels": "Încărcare modele…", @@ -988,39 +988,39 @@ "disabled": "Dezactivat", "featureFlagOmnirouteEmergencyFallbackDescription": "Redirecționează cererile cu buget epuizat către furnizorul/modelul de rezervă gratuit de urgență.", "featureFlagArenaEloSyncEnabledDescription": "Activează sincronizarea periodică ELO a clasamentului Arena AI pentru clasamentele de inteligență ale modelelor.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Generează și inserează rezumate ale conversațiilor atunci când rutarea combinată schimbă modelele. Dezactivați pentru a trata separat schimbările de model și pentru a împiedica solicitările de transfer în fundal pentru toate combinațiile existente și viitoare.", "featureFlagExposeCcDiscoveryAliasesDescription": "Publica id-urile mirror claude/<provider>/<model> pe /v1/models astfel încât lista de descoperire a modelului Claude Code să includă modele non-Claude. Atenție: dublează intrările din catalog pentru toți clienții când este activat global.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Comutator principal pentru aliasurile gateway no-think/<provider>/<model>. Activat (implicit): /v1/models afișează o variantă fără raționament pentru fiecare model Claude eligibil care poate raționa, iar un id no-think/ trimis într-o solicitare este asociat din nou modelului real, cu raționamentul dezactivat. Dezactivat: nu este afișată nicio variantă, iar un id no-think/ este tratat ca orice alt id de model necunoscut. Opțiunea individuală de activare/dezactivare ModelSpec.noThinkingAlias pentru fiecare model se aplică în continuare cât timp această setare este activată.", "featureFlagChatVirtualLanesEnabledDescription": "Activați benzile de admitere virtuale adaptive per-tenant pentru expedierea către furnizori (#9654): un vârf de trafic al unui tenant nu mai returnează 503 altui tenant. Variabila de mediu OMNIROUTE_CHAT_VIRTUAL_LANES are prioritate față de această setare din panou; modificările intră în vigoare la repornirea serverului.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Paginile furnizorilor din tabloul de bord: afișează insigna Gratuit doar pentru semnalele pe care furnizorul le respectă — elimină euristica bazată pe numele afișat, câmpurile gratuite care nu sunt booleene și sufixele :free pentru furnizorii înregistrați fără un nivel gratuit documentat. Opțiunea Dezactivat păstrează regula istorică privind insigna.", + "featureFlagProxySkipRecentlyFailedDescription": "Pool-urile de proxy-uri și rotația per cont din opencode nu mai reutilizează un proxy care tocmai a eșuat (sondă TCP refuzată sau un răspuns 429 primit prin acesta) pentru o perioadă per proces care se dublează la fiecare repetare, până la o limită maximă. Nu este înregistrată nicio stare a proxy-ului; când fiecare candidat este pus deoparte, alegerea rămâne neschimbată. Dezactivat în mod implicit: ordinea de selectare este exact cea a rotației simple.", + "featureFlagProxyPoolEgressObservationDescription": "Afișează, sub un pool de proxy-uri din panoul de control, câte IP-uri de ieșire observate au deservit membrii acestuia în ultimele 24 h, câte conexiuni le-au folosit și numărul maxim observat în spatele unui singur IP. Doar pentru citire, calculat din jurnalul proxy-ului și niciodată utilizat pentru rutare. Dezactivat în mod implicit: editorul pool-ului rămâne neschimbat, iar ruta de observare returnează null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "În verificarea periodică a stării proxy-urilor, permite unei sonde refuzate de destinație (401/403/429: proxy-ul a retransmis, iar destinația a refuzat acest IP de ieșire) să reseteze seria de eșecuri consecutive a proxy-ului, la fel ca o sondă deservită. Dezactivat în mod implicit: un refuz rămâne neutru și păstrează seria. Un răspuns 5xx rămâne neconcludent în ambele cazuri, iar un refuz nu elimină, nu dezactivează și nu reactivează niciodată un proxy.", "sidebar": { "home": "Acasă", "dashboard": "Tabloul de bord", "providers": "Furnizorii", "combos": "Combo-uri", "usage": "Utilizare", - "analytics": "Analytics", + "analytics": "Analize", "costs": "Costuri", "health": "Sănătate", "proxy": "Proxy", "limits": "Limite și cote", "cliTools": "Instrumente CLI", - "media": "Media", + "media": "Conținut media", "settings": "Setări", "translator": "Traducător", - "playground": "Playground", - "searchTools": "Search Tools", + "playground": "Spațiu de testare", + "searchTools": "Instrumente de căutare", "agents": "Agenți", "cloudAgents": "Agenți cloud", - "memory": "Memory", - "skills": "Skills", + "memory": "Memorie", + "skills": "Abilități", "omniSkills": "OmniSkills", "agentSkills": "Abilități de agent", "chaosConfig": "Mod Chaos", - "docs": "Docs", + "docs": "Documentație", "issues": "Probleme", "endpoints": "Puncte finale", "endpointsSubtitle": "Adresele URL ale conexiunii dvs. AI", @@ -1055,64 +1055,64 @@ "serverDisconnectedMsg": "Serverul proxy a fost oprit sau repornește.", "expandSidebar": "Extinde bara laterală", "collapseSidebar": "Restrângeți bara laterală", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", + "themes": "Teme", + "presetColors": "Culori populare", + "createTheme": "Creează o temă", + "chooseColor": "Alegeți o culoare", "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", + "themeBlue": "Albastru", + "themeRed": "Roșu", + "themeGreen": "Verde", "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themeOrange": "Portocaliu", + "themeCyan": "Cian", "cliToolsShort": "Instrumente", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "Sarcini în lot", + "themeSystem": "Sistem de teme", + "whitelabelingDesc": "Descriere pentru personalizarea mărcii", + "switchThemes": "Schimbă temele", + "themeAccentDesc": "Descrierea culorii de accent a temei", + "uploadFavicon": "Încarcă faviconul", + "themeDark": "Temă întunecată", + "customLogoDesc": "Descrierea siglei personalizate", + "sidebarVisibilityToggle": "Comutator pentru vizibilitatea barei laterale", + "themeAccent": "Culoarea de accent a temei", + "resetFavicon": "Resetează faviconul", + "whitelabeling": "Personalizarea mărcii", + "darkMode": "Mod întunecat", + "uploadLogo": "Încarcă sigla", + "themeLight": "Temă luminoasă", + "appName": "Numele aplicației", + "appNameDesc": "Descrierea numelui aplicației", + "resetLogo": "Resetează sigla", + "customFavicon": "Favicon personalizat", + "hideHealthLogs": "Ascunde jurnalele de stare", + "customLogo": "Siglă personalizată", + "appearance": "Aspect", + "themeSelectionAria": "Etichetă ARIA pentru selectarea temei", + "themeCreate": "Creează o temă", + "customFaviconDesc": "Descrierea faviconului personalizat", + "logoPreview": "Previzualizarea siglei", + "themeCustom": "Temă personalizată", + "hideHealthLogsDesc": "Descriere pentru ascunderea jurnalelor de stare", + "faviconPreview": "Previzualizarea faviconului", + "changelog": "Jurnal de modificări", + "contextSection": "Context și cache", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Combinații de motoare", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Setări de compresie", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Studio Combo", "combosLiveSubtitle": "Cascadă de rutare live", "compressionStudio": "Compression Studio", "compressionExclusions": "Excluderi", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Cascadă de motoare live", "compressionExclusionsSubtitle": "Ocolire pe model/punct final", "chaosConfigSubtitle": "Execuție paralelă multi-model", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Rutare", + "protocolsSection": "Protocoale", + "agentsAiSection": "Agenți și IA", + "cacheContextSection": "Cache și context", + "analyticsSection": "Analiză", + "costsSection": "Costuri", + "monitoringSection": "Monitorizare", + "auditSecuritySection": "Audit și securitate", + "devtoolsSection": "Instrumente pentru dezvoltatori", + "configurationSection": "Configurare", + "aiFeaturesSection": "Funcții IA", "mcp": "MCP", "a2a": "A2A", "plugins": "Plugin-uri", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "Endpointuri API", + "batchFiles": "Fișiere", + "analyticsEvals": "Evaluări", + "analyticsSearch": "Căutare", + "analyticsUtilization": "Utilizare", + "analyticsComboHealth": "Starea Combo", + "analyticsCompression": "Compresie", + "costsBudget": "Buget", "costsFreeTiers": "Buget pentru nivelul gratuit", "costsFreeTiersSubtitle": "Alocări lunare de tokenuri gratuite", "freeProviderRankings": "Clasamentele furnizorilor gratuiți", "freeProviderRankingsSubtitle": "Cei mai buni furnizori gratuiți clasificați după scorurile ELO ale modelelor", "radar": "Catalog Radar", "radarSubtitle": "Catalog gratuit de modele îmbogățit de comunitate", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Partajarea cotei", + "costsPricing": "Tarife", + "logsProxy": "Jurnale proxy", + "logsConsole": "Consolă", + "logsActivity": "Activitate", + "auditMcp": "Audit MCP", "auditA2a": "Audit A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Aspect", + "settingsAi": "Setări IA", + "settingsSecurity": "Securitate", "settingsAccessTokens": "Tokenuri de acces", "settingsFeatureFlags": "Caracteristici Steaguri", - "settingsCache": "Cache", + "settingsCache": "Memorie cache", "settingsAuthz": "Autorizare", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsRouting": "Rutare", + "settingsResilience": "Reziliență", "modelLockout": "Blocare model", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Avansat", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Cotă furnizor", + "providerQuota": "Cotă furnizor", + "runtime": "Mediu de execuție", + "consoleLogs": "Jurnale de consolă", + "logsTimeline": "Cronologie", "logsTimelineSubtitle": "Cronologia cererilor vizuale", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Conversații", + "conversationsSubtitle": "Conversații agentice cu mai multe schimburi", + "globalRouting": "Rutare globală", + "mitmProxy": "Proxy MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Funcționalități agentice", + "otherFeaturesSection": "Alte funcționalități", + "compressionContextGroup": "Comprimarea contextului", + "gamificationGroup": "Gamificare", + "toolsGroup": "Instrumente", + "integrationsGroup": "Integrări", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", + "costsParametersGroup": "Parametri de cost", "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "batchGroup": "Procesare în lot", + "homeSubtitle": "Prezentare generală a tabloului de bord", + "providersSubtitle": "Gestionarea furnizorilor AI", + "quotaTrackerSubtitle": "Urmărirea limitelor de utilizare", + "providerQuotaSubtitle": "Urmărirea limitelor de utilizare ale furnizorilor", + "runtimeSubtitle": "Reziliență și sesiuni în timp real", + "contextCombosSubtitle": "Combinarea motoarelor de comprimare", + "cliToolsSubtitle": "Configurarea mediilor de execuție CLI", + "agentsSubtitle": "Gestionarea agenților locali", + "cloudAgentsSubtitle": "Gestionarea agenților din cloud", + "apiEndpointsSubtitle": "Expunerea endpointurilor personalizate", + "proxySubtitle": "Setări proxy HTTP", + "mitmProxySubtitle": "Interceptare MITM", + "oneProxySubtitle": "Gateway proxy public", + "leaderboard": "Clasament", + "profile": "Profil", + "tokens": "Tokenuri", + "gamificationAdmin": "Administrarea gamificării", + "leaderboardSubtitle": "Clasamente și realizări", + "profileSubtitle": "Cont și preferințe", + "tokensSubtitle": "Utilizarea tokenurilor și bugete", + "gamificationAdminSubtitle": "Monitorizarea anomaliilor și prevenirea trișării", + "usageSubtitle": "Statistici privind traficul și utilizarea", + "analyticsComboHealthSubtitle": "Fiabilitatea țintei combinate", + "analyticsUtilizationSubtitle": "Utilizarea furnizorilor", + "costsSubtitle": "Defalcarea cheltuielilor", + "cacheSubtitle": "Rate de accesare a memoriei cache", + "analyticsCompressionSubtitle": "Statistici privind economisirea tokenurilor", + "analyticsSearchSubtitle": "Analize privind instrumentele de căutare", + "analyticsEvalsSubtitle": "Rezultatele suitei de evaluare", "providerStats": "Statistici furnizor", "providerStatsSubtitle": "Metrici de latență și performanță", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Jurnalele aplicației", + "logsProxySubtitle": "Jurnalele traficului proxy", + "consoleLogsSubtitle": "Ieșirea consolei", + "logsActivitySubtitle": "Jurnalul activității utilizatorilor", + "healthSubtitle": "Verificarea stării sistemului", + "costsPricingSubtitle": "Reguli de tarifare pentru fiecare model", + "costsBudgetSubtitle": "Limite bugetare", + "costsQuotaShareSubtitle": "Partajarea cotelor furnizorilor între chei", + "auditLogSubtitle": "Auditul autorizării", + "auditMcpSubtitle": "Auditul serverului MCP", + "auditA2aSubtitle": "Auditul protocolului A2A", + "translatorSubtitle": "Conversia formatului", + "playgroundSubtitle": "Testarea prompturilor în timp real", + "searchToolsSubtitle": "Registrul instrumentelor de căutare", + "memorySubtitle": "Memorie persistentă pentru agenți", + "omniSkillsSubtitle": "Registrul abilităților sandbox", + "agentSkillsSubtitle": "Registrul abilităților A2A", + "mcpSubtitle": "Comenzile serverului MCP", + "a2aSubtitle": "Serverul protocolului A2A", "pluginsSubtitle": "Magazin de plugin-uri și instalări", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Fișiere media memorate în cache", + "batchFilesSubtitle": "Fișiere de intrare/ieșire în lot", + "settingsSubtitle": "Toate setările", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Tema și aspectul", + "settingsAiSubtitle": "Setările implicite pentru comportamentul AI", + "globalRoutingSubtitle": "Reguli globale de rutare", + "settingsResilienceSubtitle": "Reîncercări și întrerupătoare", + "settingsAdvancedSubtitle": "Opțiuni pentru utilizatorii avansați", + "settingsSecuritySubtitle": "Autentificare și criptare", "settingsAccessTokensSubtitle": "Tokenuri CLI cu scop limitat pentru modul remote", "settingsFeatureFlagsSubtitle": "Comutați capacitățile sistemului", "settingsCacheSubtitle": "Catalog de modele și cache pentru răspunsuri", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Bară laterală", + "settingsSidebarSubtitle": "Personalizarea aspectului barei laterale", "settingsAuthzSubtitle": "Inventar de rute și politică de ocolire", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Documentație", + "issuesSubtitle": "Raportați o eroare", + "changelogSubtitle": "Note de lansare", "costsQuotaPlans": "Planuri și cote", "costsQuotaPlansSubtitle": "Configurare planuri după furnizor", "activity": "Activitate", @@ -1275,11 +1275,11 @@ "systemGroup": "Sistem", "costsOverview": "Prezentare generală", "costsOverviewSubtitle": "Analiză consolidată a costurilor", - "agentBridge": "Agent Bridge", + "agentBridge": "Punte pentru agenți", "agentBridgeSubtitle": "Interceptează traficul agentului IDE", "trafficInspector": "Inspector de trafic", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Inspectează traficul de solicitări și răspunsuri din aplicațiile tale", + "trafficInspectorPurpose": "Vezi exact ce trimite aplicația ta către furnizorii de servicii AI și ce primește de la aceștia. Funcționează cu orice client compatibil cu OpenAI.", "cliCode": "Cod CLI", "cliCodeSubtitle": "Instrumente de cod care indică spre OmniRoute", "cliAgents": "Agenți CLI", @@ -1298,7 +1298,7 @@ "groupSeparatorLabel": "Separator", "discovery": "Descoperire", "discoverySubtitle": "Scanează furnizorii pentru acces gratuit", - "conductor": "Conductor", + "conductor": "Dirijor", "conductorSubtitle": "Flota agentului CLI", "orchestration": "Orchestrare", "orchestrationSubtitle": "Vizualizare live a tot ce rulează", @@ -1345,7 +1345,7 @@ "refresh": "Reîmprospătați", "loading": "Se încarcă webhook-urile...", "never": "Niciodată", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {niciun eșec} one {# eșec} other {# eșecuri}}", "testWebhook": "Trimiteți testul", "testSuccess": "Webhook de testare a fost trimis cu succes.", "testFailed": "Testarea webhook-ului a eșuat.", @@ -1378,54 +1378,54 @@ "step3": "Verifică configurația trimițând un payload de test pentru a te asigura că endpoint-ul îl primește.", "step4": "Securizează-ți endpoint-ul prin validarea antetului X-Webhook-Signature HMAC-SHA256 folosind secretul webhook-ului.", "title": "Cum funcționează webhook-urile", - "customOnly": "Only applicable for custom endpoint integrations.", - "hmacRecipeTitle": "HMAC Verification Recipe", - "hmacRecipe": "To verify webhook payloads in Node.js, compute the HMAC-SHA256 of the raw request body using your secret key. Compare it to the X-Webhook-Signature header using timingSafeEqual.", - "timeoutNote": "Webhook deliveries have a timeout of 10 seconds.", - "retryNote": "Failed deliveries are retried up to 5 times with exponential backoff.", - "docsLink": "Read the full Webhooks developer guide", - "hmacRecipePython": "Python HMAC verification: hmac.new(secret, body, hashlib.sha256).hexdigest()", - "hmacRecipeBash": "Bash HMAC verification: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" + "customOnly": "Se aplică numai integrărilor cu endpointuri personalizate.", + "hmacRecipeTitle": "Procedură de verificare HMAC", + "hmacRecipe": "Pentru a verifica payloadurile webhook în Node.js, calculează HMAC-SHA256 al corpului brut al solicitării folosind cheia ta secretă. Compară-l cu antetul X-Webhook-Signature folosind timingSafeEqual.", + "timeoutNote": "Livrările webhook au un timp-limită de 10 secunde.", + "retryNote": "Livrările nereușite sunt reîncercate de până la 5 ori, cu temporizare exponențială.", + "docsLink": "Citește ghidul complet pentru dezvoltatori despre webhookuri", + "hmacRecipePython": "Verificare HMAC în Python: hmac.new(secret, body, hashlib.sha256).hexdigest()", + "hmacRecipeBash": "Verificare HMAC în Bash: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" }, "deliveries": { - "title": "Delivery Logs", - "loadFailed": "Failed to load webhook delivery logs.", - "empty": "No deliveries recorded yet. Trigger an event or send a test payload.", - "status": "Status", - "event": "Event", - "latency": "Latency", - "at": "Sent At" + "title": "Jurnale de livrare", + "loadFailed": "Jurnalele livrărilor webhook nu au putut fi încărcate.", + "empty": "Nu a fost înregistrată încă nicio livrare. Declanșează un eveniment sau trimite un payload de test.", + "status": "Stare", + "event": "Eveniment", + "latency": "Latență", + "at": "Trimis la" }, "kinds": { - "comingSoon": "Coming Soon", + "comingSoon": "În curând", "slack": "Slack", - "slackDesc": "Post system events directly into a Slack channel", + "slackDesc": "Publică evenimentele de sistem direct într-un canal Slack", "telegram": "Telegram", - "telegramDesc": "Send event messages using a Telegram bot", + "telegramDesc": "Trimite mesaje despre evenimente folosind un bot Telegram", "discord": "Discord", - "discordDesc": "Deliver real-time updates directly to a Discord server", - "custom": "Custom Webhook", - "customDesc": "Deliver system event payloads to any HTTPS endpoint", - "email": "Email Notification", - "emailDesc": "Receive summary updates via email", + "discordDesc": "Trimite actualizări în timp real direct către un server Discord", + "custom": "Webhook personalizat", + "customDesc": "Trimite payloadurile evenimentelor de sistem către orice endpoint HTTPS", + "email": "Notificare prin e-mail", + "emailDesc": "Primește actualizări de sinteză prin e-mail", "pagerduty": "PagerDuty", - "pagerdutyDesc": "Trigger alerts on PagerDuty for critical system issues", + "pagerdutyDesc": "Declanșează alerte în PagerDuty pentru probleme critice ale sistemului", "teams": "Microsoft Teams", - "teamsDesc": "Forward system notifications to Microsoft Teams channels" + "teamsDesc": "Redirecționează notificările de sistem către canalele Microsoft Teams" }, - "testPayloadSent": "Test Payload Sent", - "testResponse": "Test Response", + "testPayloadSent": "Payload de test trimis", + "testResponse": "Răspuns de test", "validateUrl": { - "checking": "Checking URL...", - "ok": "URL is valid", - "blockedPrivate": "URL is a blocked private address", - "invalidUrl": "Invalid URL format" + "checking": "Se verifică URL-ul...", + "ok": "URL-ul este valid", + "blockedPrivate": "URL-ul este o adresă privată blocată", + "invalidUrl": "Format URL nevalid" }, "custom": { - "endpointUrl": "Endpoint URL", + "endpointUrl": "URL-ul endpointului", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", - "secretKey": "Secret Key", - "secretKeyPlaceholder": "Enter secret key or leave blank to auto-generate", + "secretKey": "Cheie secretă", + "secretKeyPlaceholder": "Introduceți cheia secretă sau lăsați câmpul necompletat pentru a o genera automat", "secretKeyHint": "Utilizat pentru a semna antetul payload-ului pentru autentificare." }, "discord": { @@ -1461,7 +1461,7 @@ "eventTypePlaceholder": "Filtrați după acțiune sau tip de eveniment", "severity": "Severitate", "allSeverities": "Toate severitățile", - "info": "Info", + "info": "Informații", "warning": "Avertisment", "critical": "Critic", "sourceIp": "IP sursă", @@ -1517,7 +1517,7 @@ "a2aArtifacts": "Artefacte", "a2aNoTasks": "Nu au fost înregistrate sarcini A2A.", "a2aLoadingTasks": "Se încarcă sarcini A2A...", - "actor": "Actor", + "actor": "Autor", "actorPlaceholder": "Filtrează după actor", "eventTypes": { "apiKey.activate": "Cheie API activată", @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "Instrument de top" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "Teme", + "description": "Alegeți o temă predefinită sau creați una proprie folosind o singură culoare", + "presetColors": "Culori populare", + "customTheme": "Temă personalizată", + "customThemeDesc": "Faceți clic pe „Creați tema” și alegeți o culoare", + "createTheme": "Creați tema", + "activePreset": "Tema activă" }, "header": { "logout": "Deconectare", @@ -1585,69 +1585,69 @@ "comboDescription": "Combo de modele cu rezervă", "usage": "Utilizare și analiză", "usageDescription": "Monitorizați-vă utilizarea API-ului, consumul de token-uri și jurnalele de solicitări", - "analytics": "Analytics", + "analytics": "Analize", "analyticsDescription": "Diagrame, tendințe și perspective de evaluare", "cliTools": "Instrumente CLI", "cliToolsDescription": "Configurați instrumentele CLI", "home": "Acasă", "homeDescription": "Bun venit la OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Endpointuri", + "endpointDescription": "Gestionați endpointurile proxy, MCP, A2A și API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Gestionarea serverelor și instrumentelor Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Sarcini și observabilitate pentru protocolul Agent-to-Agent", "settings": "Setări", "settingsDescription": "Gestionați-vă preferințele", "openaiCompatible": "Compatibil cu OpenAI", "anthropicCompatible": "Compatibil antropic", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "media": "Conținut media", + "mediaDescription": "Generați imagini, videoclipuri și muzică", + "themes": "Teme", + "themesDescription": "Alegeți o temă cromatică pentru întregul panou de control", + "costsDescription": "Urmăriți cheltuielile, analizați tendințele și gestionați bugetul pentru IA la nivelul tuturor furnizorilor", + "cacheDescription": "Monitorizați eficiența memoriei cache pentru prompturi a furnizorilor și reutilizarea locală a răspunsurilor semantice.", + "limitsDescription": "Configurați limitele de rată și cotele pentru fiecare cheie API și furnizor", + "runtimeDescription": "Observabilitate în timp real a mediului de execuție — mecanisme de întrerupere a circuitului, perioade de așteptare, blocări ale modelelor, sesiuni și alerte privind cotele", + "apiManagerDescription": "Gestionați cheile API și controlul accesului pentru instanța dvs. OmniRoute", + "batchDescription": "Procesați asincron volume mari de solicitări prin apeluri API grupate", + "contextCavemanDescription": "Comprimarea mesajelor bazată pe reguli, pachete lingvistice, analize și controale pentru modul de ieșire.", + "contextRtkDescription": "Comprimare adaptată comenzilor pentru ieșirea instrumentelor, jurnalele terminalului și rezultatele compilării.", + "contextCombosDescription": "Definiți modul în care sunt combinate motoarele pentru diferite scenarii de rutare.", + "changelogDescription": "Fiți la curent cu cele mai recente funcționalități și anunțuri ale platformei.", + "agentsDescription": "Gestionați și configurați instrumentele agenților AI: Codex, Devin, Jules și agenți personalizați", + "cloudAgentsDescription": "Orchestrați agenți AI bazați pe cloud, cu urmărirea sarcinilor în timp real și aprobarea planurilor", + "memoryDescription": "Memorie conversațională persistentă, cu căutare semantică și indexare full-text FTS5", + "skillsDescription": "Instalați și gestionați abilitățile din sandbox pentru executarea automată a prompturilor și a instrumentelor", + "agentSkillsDescription": "Catalog de abilități pregătite pentru agenți, cu copierea URL-ului printr-un singur clic pentru integrarea clienților AI", + "translatorDescription": "Traduceți și testați prompturi între formatele API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Testați interactiv prompturile, cu răspunsuri în timp real de la furnizori și inspectarea formatului", + "searchToolsDescription": "Analize privind căutările, defalcarea pe furnizori, ratele de accesare a memoriei cache și monitorizarea costurilor", + "logsDescription": "Jurnale de cereri în timp real, urme ale erorilor și inspector de evenimente în flux", + "auditDescription": "Jurnal de audit pentru conformitate privind utilizarea cheilor API, apelurile instrumentelor MCP și evenimentele de politică", + "webhooksDescription": "Configurați endpointuri webhook pentru a primi notificări în timp real despre evenimente", + "healthDescription": "Prezentare generală a stării sistemului: furnizori, întrerupătoare de circuit, limite de rată și bază de date", + "proxyDescription": "Configurați setările proxy-ului upstream pentru conexiunile de ieșire către furnizori", + "apiEndpointsDescription": "Gestionați configurațiile endpointurilor API personalizate și suprascrierile de rutare", + "batchFilesDescription": "Răsfoiți și gestionați fișierele de ieșire și rezultatele sarcinilor procesate în lot", + "analyticsEvalsDescription": "Rezultatele evaluării modelelor și teste comparative de performanță", + "analyticsSearchDescription": "Analize privind interogările de căutare, ratele de accesare a memoriei cache și monitorizarea costurilor", + "analyticsUtilizationDescription": "Indicatori privind utilizarea furnizorilor și planificarea capacității", + "analyticsComboHealthDescription": "Starea și performanța în timp real ale configurațiilor de rutare combinată", + "analyticsCompressionDescription": "Analize privind comprimarea contextului și economiile de tokenuri", + "costsBudgetDescription": "Limite bugetare și alerte de cheltuieli pentru fiecare cheie API și furnizor", + "costsPricingDescription": "Configurație de prețuri personalizată pentru calcularea costurilor tokenurilor", + "logsProxyDescription": "Jurnale de cereri ale proxy-ului upstream și inspectarea traficului", + "logsConsoleDescription": "Ieșirea consolei aplicației și jurnale de depanare", + "logsActivityDescription": "Jurnal de audit al acțiunilor utilizatorilor și al evenimentelor de sistem", + "auditMcpDescription": "Jurnal de audit al invocărilor instrumentelor MCP și înregistrări de conformitate", "auditA2a": "Audit A2A", "auditA2aDescription": "Pista de audit pentru execuția sarcinilor A2A, tranziții de stare și înregistrări de invocare a abilităților", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Temă, identitate vizuală și personalizare vizuală", + "settingsAiDescription": "Comportamente AI, bugete de gândire, vedere și setări de memorie", "settingsCacheDescription": "TTL pentru intrările cache ale catalogului de modele", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Setări de autentificare, autorizare și control al accesului", "featureFlags": "Caracteristici Steaguri", "featureFlagsDescription": "Capacitățile sistemului de control și caracteristicile experimentale", "featureFlagsActive": "{count} activ", @@ -1661,7 +1661,7 @@ "featureFlagsCategoryRuntime": "Timp de rulare", "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "Sănătate", - "featureFlagsSourceDb": "DB", + "featureFlagsSourceDb": "BD", "featureFlagsSourceEnv": "ENV", "featureFlagsSourceDefault": "DEF", "featureFlagsReset": "Resetați", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Niciun steag nu corespunde căutării dvs", "featureFlagsSaved": "Steagul actualizat", "featureFlagsError": "Nu s-a putut actualiza marcajul", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Reguli de rutare, aliasuri de modele, valori implicite pentru combinații și setări de degradare", + "settingsResilienceDescription": "Configurația întrerupătorului de circuit, a reîncercărilor și a mecanismelor de rezervă", + "settingsAdvancedDescription": "Reguli avansate pentru sarcina utilă, limite pentru cereri și setări API pentru proxy", + "mitmProxyDescription": "Configurați setările proxy-ului MITM pentru inspectarea traficului și depanare", + "oneProxyDescription": "Configurați setările 1Proxy pentru înlănțuirea avansată a proxy-urilor", "omniSkillsDescription": "Instalează și gestionează abilități sandbox pentru executarea automată a prompturilor și instrumentelor" }, "cloudSyncStatus": { @@ -1690,7 +1690,7 @@ "statusLabel": "Stare sincronizare setări la distanță: {status}" }, "breadcrumbs": { - "ariaLabel": "Breadcrumb", + "ariaLabel": "Fir de navigare", "dashboard": "Tablou de bord", "providers": "Furnizori", "combos": "Combinații", @@ -1706,9 +1706,9 @@ "logs": "Jurnale", "auditLog": "Jurnal de audit", "console": "Consolă", - "logger": "Logger", + "logger": "Jurnal", "translator": "Traducător", - "playground": "Playground", + "playground": "Spațiu de testare", "add": "Adaugă", "edit": "Editează", "apiKeys": "Chei API", @@ -1716,7 +1716,7 @@ "cliCode": "Cod CLI", "cliAgents": "Agenți CLI", "acpAgents": "Agenți ACP", - "endpoint": "Endpoint", + "endpoint": "Punct final", "apiManager": "Manager API", "context": "Context", "compression": "Compresie", @@ -1724,7 +1724,7 @@ "analytics": "Analize", "costs": "Costuri", "health": "Stare", - "runtime": "Runtime", + "runtime": "Mediu de execuție", "webhooks": "Webhook-uri", "home": "Acasă", "activity": "Activitate", @@ -1737,20 +1737,20 @@ "audit": "Audit", "a2a": "A2A", "mcp": "MCP", - "batch": "Batch", + "batch": "Lot", "files": "Fișiere", - "media": "Media", - "cache": "Cache", + "media": "Fișiere media", + "cache": "Memorie cache", "changelog": "Jurnal de modificări", - "chaos": "Chaos", + "chaos": "Haos", "cloudAgents": "Agenți Cloud", - "live": "Live", + "live": "În direct", "studio": "Studio", "aggressive": "Agresiv", - "caveman": "Caveman", + "caveman": "Omul peșterilor", "ccr": "CCR", - "headroom": "Headroom", - "lite": "Lite", + "headroom": "Marjă", + "lite": "Ușor", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", "rtk": "RTK", @@ -1762,7 +1762,7 @@ "discovery": "Descoperire", "freeProviderRankings": "Clasament furnizori gratuiți", "radar": "Radar", - "setup": "Setup", + "setup": "Configurare", "freeTiers": "Niveluri gratuite", "gamification": "Gamificare", "leaderboard": "Clasament", @@ -1772,7 +1772,7 @@ "providerStats": "Statistici furnizor", "new": "Nou", "quota": "Cotă", - "relay": "Relay", + "relay": "Releu", "searchTools": "Instrumente de căutare", "security": "Securitate", "sidebar": "Bara laterală", @@ -1812,7 +1812,7 @@ "reportIssue": "Raportați problema", "activeError": "{active} activ · {errors} eroare", "topologyLegendActive": "Activ", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Recente", "topologyLegendError": "Eroare", "oauthLabel": "OAuth", "apiKeyLabel": "Cheia API", @@ -1826,11 +1826,11 @@ "updateStarted": "Actualizarea a început...", "reloadingPageAutomatically": "Se reîncarcă pagina automat...", "providerTopology": "Topologia furnizorului", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Solicitări recente", + "recentRequestsEmpty": "Nicio solicitare încă.", + "recentRequestsModel": "Model", + "recentRequestsTokens": "Intrare / Ieșire", + "recentRequestsWhen": "Când", "downloadDmg": "Descarcă DMG (macOS)", "downloadDmgDescription": "O nouă versiune a aplicației desktop OmniRoute este disponibilă. Vă rugăm să descărcați și să instalați programul de instalare DMG pentru macOS pentru a actualiza (curent: v{version}).", "downloadExe": "Descarcă EXE (Windows)", @@ -1888,18 +1888,18 @@ "releaseNotes": "Note de Lansare", "readMore": "Citește mai mult", "noAuthLabel": "Fără Autentificare", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Pregătește-te să direcționezi", + "readinessTitle": "Trimite prima solicitare", + "readinessSubtitle": "Patru pași simpli. OmniRoute verifică dacă totul este pregătit pe parcurs.", + "readinessStep1": "Conectează un furnizor", + "readinessStep2": "Configurează autentificarea endpointului", + "readinessStep3": "Copiază endpointul", + "readinessStep4": "Trimite o solicitare de test", + "readinessContinue": "Continuă configurarea", + "readinessDismiss": "Închideți pentru moment" }, "analytics": { - "title": "Analytics", + "title": "Analiză", "usageAnalyticsTitle": "Analiza utilizării", "diversityScoreTitle": "Diversitatea furnizorilor", "diversityScoreDesc": "Instantaneu al concentrării furnizorilor pentru fereastra recentă de trafic.", @@ -1967,7 +1967,7 @@ "period7D": "7Z", "period30D": "30Z", "period90D": "90Z", - "periodYTD": "YTD", + "periodYTD": "De la începutul anului", "periodAll": "Toate", "totalTokens": "Total tokeni", "inputTokens": "Tokeni de intrare", @@ -2000,13 +2000,13 @@ "sectionsAria": "Secțiuni de analiză", "utilizationDescription": "Tendințe de utilizare a cotelor furnizorului și urmărirea limitelor de rată", "modelStatus": "Stare model", - "modelStatusCooldown": "Cooldown", + "modelStatusCooldown": "Perioadă de așteptare", "modelStatusUnavailable": "Indisponibil", "modelStatusError": "Eroare", "comboHealth": "Sănătatea Combo-ului", "comboHealthDescription": "Cotă la nivel de combo, distribuția utilizării și metricile de performanță", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Analiza compresiei", + "compressionAnalyticsDescription": "Analiza compresiei — economii de tokenuri, defalcare pe moduri și statistici despre furnizori.", "autoRoutingTotalAutoRequests": "Total de solicitări automate", "autoRoutingAvgSelectionScore": "Scorul mediu de selecție", "autoRoutingExplorationRate": "Rata de explorare", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "Performanță", "comboHealthPerformanceDescription": "Fiabilitate și debit pentru traficul rutat prin combo.", "comboHealthExecutionTargetsDescription": "Măsurători de runtime la nivel de pas și vizibilitate a cotelor pentru țintele structurate de combo.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} solicitări", "comboHealthQuotaScope": "Domeniu cotă: {scope}", "comboHealthTrendValue": "Tendință: {trend}", "comboHealthFetchFailed": "Nu s-au putut prelua datele despre starea combo-ului", @@ -2137,7 +2137,7 @@ "compressionAnalyticsStartTracking": "Utilizați POST /v1/chat/completions cu o configurație de compresie pentru a începe monitorizarea datelor analitice de compresie.", "compressionAnalyticsInfo": "Date analitice de compresie: Economiile de tokenuri sunt monitorizate per mod (off, lite, standard, aggressive, ultra, RTK, stacked), motor, combinație de compresie și furnizor. Treceți cursorul peste grafice pentru detalii. Utilizați selectorul de timp pentru a vizualiza diferite perioade.", "searchAnalyticsTotalSearches": "Total căutări", - "searchAnalyticsCacheHitRate": "Cache Hit Rate", + "searchAnalyticsCacheHitRate": "Rata de succes a cache-ului", "searchAnalyticsTotalCost": "Costul total", "searchAnalyticsAvgResponse": "Răspuns mediu", "searchAnalyticsNoSearchesYet": "Nicio căutare încă", @@ -2182,13 +2182,13 @@ "routeWhyTarget": "De ce această țintă?", "routeWhyTargetSubtitle": "Metadate exacte de runtime plus reluare doar în citire a scorului", "routeExactRuntimeLog": "Jurnal exact de runtime", - "routeCallLogsExact": "call_logs exact", + "routeCallLogsExact": "call_logs exacte", "routeReadOnlyRecompute": "Recalculare doar în citire", "routeRuntimeRankNow": "Rang runtime actual", "routeRuntimeScoreNow": "Scor runtime actual", "routeWouldSelectNow": "Ar selecta acum", "routeNoRecomputeCandidates": "Niciun clasament al candidaților combo nu poate fi recalculat pentru această solicitare.", - "runtime": "Runtime", + "runtime": "Timp de execuție", "routeTopNow": "Top acum", "routeFetchLogsFailed": "Nu s-au putut prelua jurnalele de solicitări", "routeExplainFailed": "Nu s-a putut explica ruta", @@ -2207,10 +2207,10 @@ "model": "Model", "account": "Cont", "connection": "Conexiune", - "combo": "Combo", + "combo": "Combinație", "routeStep": "Pas", "tokens": "Tokenuri", - "notAvailable": "n/a", + "notAvailable": "indisponibil", "routeTokenCounts": "{input} intrare · {output} ieșire", "routeEvidence": "Dovezi", "routeFactors": "Factori de rutare", @@ -2258,9 +2258,9 @@ "fullAccess": "Acces complet", "keyManagement": "Managementul cheilor API", "keyManagementDesc": "Creați și gestionați cheile API pentru autentificarea solicitărilor către punctul dvs. final", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Aplicația dvs. trimite solicitări către OmniRoute printr-o cheie API", + "requestFlowYourApp": "Aplicația dvs.", + "requestFlowApiKey": "Cheie API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Total chei", "restricted": "Restricţionat", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Copiați și stocați această cheie acum - nu va fi afișată din nou.", "done": "Gata", "savePermissions": "Salvare permisiuni", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Endpointuri permise", + "allEndpointsAllowed": "Această cheie poate accesa toate endpointurile API.", + "endpointsRestricted": "Acces restricționat la {count} endpoint{count, plural, one {} other {s}}.", + "autoResolve": "Rezolvare automată", + "autoResolveDesc": "Rezolvă automat numele ambigue ale modelelor la furnizorul nativ pentru această cheie API.", "streamDefaultMode": "Compatibilitate implicită stream", "streamDefaultModeDesc": "Controlează flagurile `stream` omise pentru această cheie. Modul JSON returnează răspunsuri fără streaming, cu excepția cazului în care clientul solicită explicit SSE.", - "streamDefaultLegacy": "Legacy", + "streamDefaultLegacy": "Moștenit", "streamDefaultJson": "Compatibil JSON", "streamDefaultBadge": "Implicit stream JSON", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Cheie activă", + "keyActiveDesc": "Activați sau dezactivați această cheie API. Cheile dezactivate sunt respinse imediat cu 403.", + "accessSchedule": "Program de acces", + "accessScheduleDesc": "Restricționați accesul la anumite ore și zile ale săptămânii.", + "scheduleFrom": "De la", + "scheduleUntil": "Până la", + "scheduleDays": "Zile", + "scheduleTimezone": "Fus orar", + "scheduleTimezoneHint": "Utilizați denumiri de fusuri orare IANA, de ex. America/New_York, Europe/Berlin", + "scheduleActive": "Program", + "disabled": "Dezactivat", + "daySun": "Dum", + "dayMon": "Lun", + "dayTue": "Mar", + "dayWed": "Mie", + "dayThu": "Joi", + "dayFri": "Vin", + "daySat": "Sâm", "allowAll": "Permite Toate", "restrict": "Restricționați", "allowAllInfo": "Această cheie poate accesa toate modelele disponibile.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Nu s-au actualizat permisiunile. Vă rugăm să încercați din nou.", "unknownProvider": "necunoscut", "copyMaskedKey": "Copiați cheia mascată", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Cheia completă este disponibilă doar în momentul creării — copiați-o când creați cheia pentru prima dată", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# dispozitiv} few {# dispozitive} other {# de dispozitive}}", "devicesTooltip": "{count, plural, one {# dispozitiv distinct IP/User-Agent văzut cu această cheie (ultimele 30 min)} few {# dispozitive distincte IP/User-Agent văzute cu această cheie (ultimele 30 min)} other {# de dispozitive distincte IP/User-Agent văzute cu această cheie (ultimele 30 min)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Combinații permise", "allCombosAllowed": "Această cheie poate utiliza orice combinație.", "restrictedComboCount": "Restricționat la {count, plural, one {# combinație} few {# combinații} other {# de combinații}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# intrare stocată nu se află} other {# intrări stocate nu se află}} în această listă combinată (de exemplu, reguli de rutare) și vor fi păstrate așa cum au fost salvate.", + "preservedComboRuleHint": "Păstrată așa cum a fost stocată. Această intrare nu este o combinație din lista de mai sus, așadar poate fi modificată doar prin API.", "apiManagerCustomRateLimits": "Limite de tarif personalizate", "apiManagerCustomRateLimitsDesc": "Înlocuiți limitele globale implicite. Lăsați gol pentru a utiliza valorile implicite.", "apiManagerRateLimitRequestsPlaceholder": "Cereri", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Permite acestei chei să ignore politica de limitare a furnizorului/contului din amonte în timpul rutării. Cotele USD ale cheii API se aplică în continuare.", "quotaPill": "COTĂ", "quotaModeOnly": "Doar qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Închiriere exclusivă", + "exclusiveLeaseNoticeTitle": "Închiriere exclusivă", + "exclusiveLeaseNoticeDesc": "Această cheie API are permisiuni de închiriere exclusivă pentru rutarea conexiunilor dedicate.", + "allConnections": "Toate conexiunile", + "onlySelectedConnections": "Doar conexiunile selectate", + "selectAtLeastOneConnection": "Selectați cel puțin o conexiune sau alegeți Toate conexiunile.", + "allConnectionsDesc": "Această cheie poate utiliza orice conexiune activă.", + "restrictedToConnections": "Restricționată la {count, plural, one {# conexiune} other {# conexiuni}}." }, "auditLog": { "title": "Jurnal de audit", @@ -2457,16 +2457,16 @@ "model": "Model", "prompt": "Prompt", "generate": "Generează", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Se generează...", + "loadingModels": "Se încarcă modelele disponibile...", + "noModels": "Nu există modele disponibile. Configurați mai întâi furnizori cu funcționalități media.", + "error": "Generarea a eșuat", + "result": "Rezultat", + "imageDescription": "Generați imagini din solicitări text folosind OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI și altele.", + "videoDescription": "Creați videoclipuri cu AnimateDiff, Stable Video Diffusion prin ComfyUI sau SD WebUI.", + "musicDescription": "Compuneți muzică folosind Stable Audio Open sau MusicGen prin ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Încorporare", "image": "Imagine", "imageToText": "Imagine în text", "tts": "Text în vorbire", @@ -2542,114 +2542,114 @@ "openrouterSttDescription": "Modelele de recunoaștere vocală OpenRouter folosesc conexiunea OpenRouter configurată de tine. Nu este necesară o acreditivă separată." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", + "searchQuery": "Interogare de căutare", + "searchResults": "Rezultatele căutării", + "cachedResult": "În cache", "searchCost": "Cost", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Testare avansată a căutării cu compararea furnizorilor", + "compareProviders": "Compară furnizorii", + "rerankResults": "Reordonează rezultatele", + "searchHistory": "Istoricul căutărilor", + "urlOverlap": "Suprapunerea URL-urilor", + "noSearchProviders": "Nu este configurat niciun furnizor de căutare. Adăugați furnizori în Setări.", + "noRerankModels": "Niciun model de reordonare disponibil", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Furnizor", + "searchType": "Tip de căutare", + "maxResults": "Număr maxim de rezultate", + "filters": "Filtre", + "country": "Țară", + "language": "Limbă", + "timeRange": "Interval de timp", + "includeDomains": "Include domenii", + "excludeDomains": "Exclude domenii", + "safeSearch": "Căutare sigură", + "safeSearchOff": "Dezactivată", + "safeSearchModerate": "Moderată", + "safeSearchStrict": "Strictă", + "queryPlaceholder": "Introduceți interogarea de căutare...", + "providerAuto": "automat (cel mai ieftin)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "știri", + "optionAny": "oricând", + "timeRangeDay": "Ultima zi", + "timeRangeWeek": "Ultima săptămână", + "timeRangeMonth": "Ultima lună", + "timeRangeYear": "Ultimul an", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Solicitarea a expirat ({seconds}s)", + "networkError": "Eroare de rețea", + "formatted": "Formatat", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", + "cacheMiss": "negăsit în cache", + "cacheHit": "găsit în cache", + "latency": "Latență", "cost": "Cost", - "results": "Results", + "results": "Rezultate", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Model de reordonare", + "positionDelta": "Modificarea poziției", + "emptyState": "Trimiteți o interogare de căutare pentru a vedea rezultatele", "copy": "Copiere", "resetToDefault": "Resetați la valoarea implicită", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Caută", + "tabScrape": "Extrage", + "tabCompare": "Compară", + "modalitiesGuide": "Ghidul modalităților", + "searchConceptTitle": "Căutare", + "searchConceptDesc": "Căutare = preia o listă de rezultate web (titlu, URL, fragment, scor de relevanță)", + "scrapeConceptTitle": "Extragere", + "scrapeConceptDesc": "Extragere = extrage conținutul complet al unui URL (markdown, text sau HTML)", + "compareConceptTitle": "Comparare", + "compareConceptDesc": "Comparare = rulează aceeași interogare în paralel la N furnizori pentru a compara latența, costul și suprapunerea rezultatelor", + "rerankConceptTitle": "Reordonare", + "rerankConceptDesc": "Reordonare = reordonează rezultatele prin LLM pentru a îmbunătăți relevanța pe baza interogării", + "autoConceptTitle": "Automat (cel mai ieftin)", + "autoConceptDesc": "Automat (cel mai ieftin) = selectează automat cel mai ieftin furnizor disponibil cu credențiale configurate", + "providerCatalogTitle": "Catalog de furnizori", + "kindSearch": "Căutare", + "kindFetch": "Preluare/Extragere", + "statusConfigured": "Configurat", + "statusMissing": "Fără credențiale", + "statusRateLimited": "Limită de solicitări atinsă", + "configureProvider": "Configurează în Furnizori", + "loadingProviders": "Se încarcă furnizorii…", + "failedToLoadProviders": "Furnizorii nu au putut fi încărcați", + "costPerQuery": "Cost/interogare", + "freeQuota": "Cotă gratuită/lună", + "scrapeUrl": "URL de extras", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "Adresa URL este obligatorie", "scrapeUrlInvalid": "URL nevalid — trebuie să înceapă cu http:// sau https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", + "scrapeExtract": "Extrage", + "scrapeExtracting": "Se extrage…", + "scrapeFullPage": "Pagina completă", "scrapeFormat": "Format", "formatMarkdown": "Markdown", "formatHtml": "HTML", "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "scrapePreview": "Previzualizare", + "scrapeRaw": "Conținut brut", + "scrapeContentTruncated": "(trunchiat, vezi conținutul brut)", + "scrapeMetadata": "Metadate", + "scrapeProvider": "Furnizor", + "scrapeSize": "Dimensiune", "scrapeEmptyState": "Introdu un URL pentru a-i extrage conținutul", "scrapeProvidersAvailable": "Furnizori disponibili: Firecrawl, Jina Reader, Tavily.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Compară", + "compareRunning": "Se compară…", + "autoProvider": "Automat (cel mai ieftin)", + "configuredStatus": "Configurat", + "rateLimitedStatus": "Limitat de rata de solicitări", + "noCredential": "Fără credențiale", + "searchTypeLabel": "Tip", + "rerankModelLabel": "Model de rerangare", + "noneOption": "Niciunul", + "size": "Dimensiune", "configurationPane": "Panou de configurare", "configuration": "Configurare", - "status": "Status", + "status": "Stare", "compareProviderHint": "Selectează până la 4 furnizori în fila Compară pentru a-i compara în paralel.", "history": "Istoric", "historyHint": "Istoricul este disponibil în fila Căutare.", @@ -2664,7 +2664,7 @@ "httpError": "Eroare {status}", "failed": "Eșuat", "requestFailed": "Solicitarea a eșuat", - "embedding": "Embedding", + "embedding": "Încorporare", "embeddingSample": "Salut, lume!", "image": "Imagine", "imageSample": "Un peisaj senin cu munți la apus", @@ -2674,14 +2674,14 @@ "documentUrl": "URL document", "fileTooLarge25Mb": "Fișier prea mare — max. 25 MB", "selectAudioFirst": "Te rugăm să selectezi mai întâi un fișier audio.", - "speechToText": "Speech to Text", + "speechToText": "Vorbire în text", "chooseFile": "Alege fișierul…", "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — max. 25 MB", - "textToSpeech": "Text to Speech", + "textToSpeech": "Text în vorbire", "ttsSample": "Bună, acesta este un test text-to-speech.", "video": "Video", "videoSample": "Un time-lapse cu nori deasupra unui lanț muntos", - "webFetch": "Web Fetch", + "webFetch": "Preluare web", "webSearchSample": "Ce este gateway-ul OmniRoute AI?", "noActiveProviderDescription": "Niciun furnizor de căutare activ. Configurează unul în Furnizori.", "configureProviders": "Configurează furnizorii", @@ -2708,7 +2708,7 @@ "classifierCompatLoadFailed": "Eroare la încărcarea setării", "classifierCompatMode": { "off": "Oprit", - "auto": "Auto", + "auto": "Automat", "always": "Întotdeauna" }, "ccDiscoveryInfoButton": "Cum să activați descoperirea în Claude Code", @@ -2741,9 +2741,9 @@ "effortMedium": "Mediu", "effortHigh": "Ridicat", "effortExtraHigh": "Foarte ridicat", - "effortMax": "Max", + "effortMax": "Maxim", "effortUltra": "Ultra", - "wireApi": "Wire API", + "wireApi": "API direct", "modelAliases": "Aliasuri model", "addModel": "Adaugă model", "routeModelPlaceholder": "Redirecționează {model} către...", @@ -2782,7 +2782,7 @@ "cliRuntimeNotDetected": "Runtime CLI nu a fost detectat", "binary": "Binar", "configPath": "Calea de configurare", - "configPathShort": "Config", + "configPathShort": "Configurare", "failedCheckRuntimeStatus": "Nu s-a putut verifica starea de rulare.", "copy": "Copiere", "copied": "Copiat", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Adăugați", "antigravityStep2Suffix": "în fișierul hosts ca 127.0.0.1.", "antigravityStep3": "3. Deschideți Antigravity și cererile vor fi trimise prin proxy.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} trimite solicitări către endpointul furnizorului său. MITM le interceptează și le redirecționează către OmniRoute.", + "mitmStep1": "1. Porniți MITM pentru a direcționa solicitările prin OmniRoute.", + "mitmStep2Prefix": "2. Adăugați", + "mitmStep2Suffix": "în fișierul hosts ca 127.0.0.1.", + "mitmStep3": "3. Deschideți {toolName}, iar solicitările vor fi redirecționate prin proxy.", "sudoPasswordRequiredTitle": "Parola Sudo este necesară", "sudoPasswordHint": "Parola de administrator este necesară pentru a modifica setările de fișiere gazdă și proxy de sistem.", "enterSudoPassword": "Introdu parola sudo", @@ -2869,7 +2869,7 @@ "provider": "Furnizor", "model": "Model", "providers": "Furnizorii", - "auth": "Auth", + "auth": "Autentificare", "noApiKeysAvailable": "Nu există chei API disponibile", "usingDefaultOmniroute": "Folosind implicit: sk_omniroute", "updateConfig": "Actualizați configurația", @@ -2908,7 +2908,7 @@ "continue": "Utilizați atunci când rulați Continue în IDE-uri și aveți nevoie de o configurație portabilă a furnizorului bazată pe JSON.", "opencode": "Utilizați atunci când preferați rulările de agent nativ terminal și automatizarea prin script prin OpenCode.", "kiro": "Utilizați atunci când integrați Kiro și controlați rutarea modelului central din OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Utilizați această opțiune când doriți un IDE axat pe AI, cu modelele Codeium/Windsurf direcționate prin OmniRoute.", "antigravity": "Utilizați atunci când traficul Antigravity/Kiro trebuie interceptat prin MITM și direcționat către OmniRoute.", "copilot": "Utilizați atunci când doriți UX în stilul de chat Copilot, în timp ce aplicați cheile și regulile de rutare OmniRoute.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2921,19 +2921,19 @@ "claude": "Codul antropic Claude CLI", "codex": "OpenAI Codex CLI", "grok-build": "Agent de programare TUI xAI Grok Build cu suport pentru furnizori personalizați", - "droid": "Factory Droid AI Assistant", + "droid": "Asistentul AI Factory Droid", "openclaw": "Deschideți Asistentul Claw AI", "cline": "CLI Cline AI Coding Assistant", - "kilo": "Kilo Code AI Assistant CLI", + "kilo": "CLI-ul asistentului AI Kilo Code", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", "continue": "Continuați Asistentul AI", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "Agentul AI de programare OpenCode (Terminal)", + "kiro": "Amazon Kiro — IDE bazat pe AI", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "CLI-ul asistentului de programare Sourcegraph Amp", + "hermes": "Asistentul AI pentru terminal Hermes", "hermes-agent": "Hermes Agent (de la Nousresearch) - AI avansat pentru terminal cu suport multi-model (delegare, viziune, compresie etc.)", "custom": "Generator de configurații CLI sau SDK generic compatibil cu OpenAI", "aider": "CLI de programare în pereche Aider AI cu un URL de bază compatibil cu OpenAI", @@ -2950,7 +2950,7 @@ "interpreter": "CLI pentru agentul de programare autonom Open Interpreter", "omp": "Agent de programare pentru terminal Oh My Pi", "letta": "Agent CLI Letta cu memorie persistentă și utilizare de instrumente", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — sistem RLM de programare cu auto-îmbunătățire și compatibilitate cu furnizori OpenAI", "warp": "Terminal Warp AI cu suport pentru furnizori personalizați", "agent-deck": "Orchestrator multi-agent Agent Deck", "5dive": "5dive — flotă auto-găzduită de agenți de codare; un profil de autentificare îi îndreaptă pe toți către OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Instalați OpenCode", + "desc": "Instalați prin npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Cheie API" }, "3": { - "title": "Set Base URL", + "title": "Setați URL-ul de bază", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Selectați modelul" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Folosește varianta de raționament", + "desc": "Pentru modelele de raționament, rulează cu --variant high/low/max (exemplu de comandă mai jos)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Deschide setările Kiro", + "desc": "Accesează Setări → Furnizor AI" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "URL de bază", + "desc": "Lipește URL-ul endpointului OmniRoute" }, "3": { - "title": "API Key" + "title": "Cheie API" }, "4": { - "title": "Select Model" + "title": "Selectează modelul" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Deschide setările AI", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Adaugă un furnizor personalizat", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "URL de bază", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Cheie API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Selectează modelul", + "desc": "Alege un model din lista derulantă" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "CLI personalizat", - "toolCategories": "Tool Categories", + "toolCategories": "Categorii de instrumente", "visibleToolsCount": "{count} instrumente disponibile", "customCliBuilderTitle": "Generator CLI compatibil cu OpenAI", "customCliBuilderDescription": "Generați variabile de mediu și fragmente JSON pentru orice CLI sau SDK care acceptă o adresă URL de bază compatibilă cu OpenAI, o cheie API și un ID de model.", @@ -3118,7 +3118,7 @@ "hermesRoleCompressionDesc": "Compresia și rezumarea prompturilor", "hermesRoleWebExtract": "Extragere web", "hermesRoleWebExtractDesc": "Extragerea conținutului paginilor web", - "hermesRoleSkillsHub": "Skills Hub", + "hermesRoleSkillsHub": "Centru de competențe", "hermesRoleSkillsHubDesc": "Raționament privind abilitățile și utilizarea instrumentelor", "hermesRoleApproval": "Aprobare", "hermesRoleApprovalDesc": "Decizii de siguranță și aprobare", @@ -3138,9 +3138,9 @@ "hermesRoleProfileDescriberDesc": "Descrierea profilului utilizatorului", "hermesRoleGoalJudge": "Judecător de Obiective", "hermesRoleGoalJudgeDesc": "Evaluarea finalizării obiectivelor", - "hermesRoleCurator": "Curator", + "hermesRoleCurator": "Administrator", "hermesRoleCuratorDesc": "Curarea abilităților și a memoriei", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Monitorizare", "hermesRoleMonitorDesc": "Monitorizare în fundal", "hermesRoleBackgroundReview": "Revizuirea Fondului", "hermesRoleBackgroundReviewDesc": "Revizuirea codului de fundal", @@ -3219,7 +3219,7 @@ "addModelToCombo": "Adăugați modelul la Combo", "routingStrategy": "Strategia de rutare", "maxRetries": "Reîncercări maxime", - "timeout": "Timeout (ms)", + "timeout": "Timp de expirare (ms)", "healthcheck": "Controlul de sănătate", "priority": "Prioritate", "fallback": "Revenire", @@ -3251,7 +3251,7 @@ "copyComboName": "Copiați numele combinației", "enableCombo": "Activați combo", "disableCombo": "Dezactivează combo", - "testCombo": "Test combo", + "testCombo": "Testează combinația", "duplicate": "Duplicat", "proxyConfig": "Configurare proxy", "nameRequired": "Numele este obligatoriu", @@ -3260,18 +3260,18 @@ "priorityDesc": "Secvenţială alternativă: încearcă mai întâi modelul 1, apoi 2 etc.", "weightedDesc": "Distribuie traficul în procente de greutate cu rezervă", "roundRobinDesc": "Distribuție circulară: fiecare cerere trece la următorul model în rotație", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Transfer de context", + "contextRelayDesc": "Păstrează continuitatea sesiunii prin rezumate de transfer atunci când conturile sunt schimbate", "randomDesc": "Selectare aleatorie uniformă, apoi revenire la modelele rămase", "leastUsedDesc": "Alege modelul cu cele mai puține solicitări, echilibrând sarcina în timp", "costOptimizedDesc": "Rute către cel mai ieftin model mai întâi pe baza prețului", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Direcționează în mod consecvent fiecare prefix de prompt reutilizabil către același cont al furnizorului", + "resetAware": "RR adaptat la resetare", "resetAwareDesc": "Echilibrează cota rămasă față de 5 ore și resetări săptămânale, apoi scoruri similare la round-robin", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Ponderat după cotă", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Strict aleatoriu", + "strictRandomDesc": "Pachet amestecat — folosește fiecare model o dată înainte de a amesteca din nou", "fusion": "Fuziune", "fusionDesc": "Distribuie promptul în paralel către fiecare model din panel, apoi un model arbitru sintetizează un răspuns final", "fusionJudgeModel": "Model arbitru", @@ -3288,13 +3288,13 @@ "retryDelay": "Întârziere reîncercare (ms)", "concurrencyPerModel": "Concurență / Model", "queueTimeout": "Timp de așteptare la coadă (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Prag de transfer", + "contextRelayHandoffThresholdHelp": "Când utilizarea cotei atinge acest prag, OmniRoute generează un rezumat structurat de transfer înainte ca resursele contului activ să fie epuizate.", + "contextRelayMaxMessages": "Numărul maxim de mesaje pentru rezumat", + "contextRelayMaxMessagesHelp": "Limitează volumul istoricului recent condensat în rezumatul de transfer.", + "contextRelaySummaryModel": "Model pentru rezumat", + "contextRelaySummaryModelHelp": "Model alternativ opțional, utilizat doar pentru generarea rezumatului de transfer. Lasă câmpul necompletat pentru a reutiliza modelul activ al combinației.", + "contextRelayProviderNote": "În prezent, Transferul de context generează transferuri pentru rotația conturilor Codex. Folosește-l împreună cu mai multe conturi ale aceluiași furnizor pentru cea mai bună continuitate.", "advancedHint": "Lăsați gol pentru a utiliza setările implicite globale. Acestea înlocuiesc setările pentru fiecare furnizor.", "failoverBeforeRetry": "Failover înainte de a reîncerca", "maxSetRetries": "Reîncercări ale seturilor maxime", @@ -3335,7 +3335,7 @@ "playgroundStrategy": "Strategie", "playgroundEstimatedCost": "Cost est.", "playgroundEstimatedLatency": "Latență est.", - "playgroundFallback": "fallback", + "playgroundFallback": "rezervă", "playgroundWeight": "pondere {value}", "playgroundWarningCount": "Avertismente ({count})", "playgroundErrorCount": "Erori ({count})", @@ -3344,41 +3344,41 @@ "playgroundCreateFirst": "Creați una mai întâi", "weighted": "ponderat", "leastUsed": "Cel mai puțin folosit", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "costOpt": "Optimizat pentru cost", + "strategyGuideTitle": "Cum se utilizează această strategie", + "strategyGuideWhen": "Când se utilizează", + "strategyGuideAvoid": "Când trebuie evitată", + "strategyGuideExample": "Exemplu", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "Aveți un model preferat și doriți o alternativă doar în caz de eroare.", + "avoid": "Aveți nevoie de distribuirea solicitărilor între modele.", + "example": "Model principal pentru programare, cu o alternativă mai ieftină în caz de indisponibilitate." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Aveți nevoie de o împărțire controlată a traficului între modele.", + "avoid": "Nu puteți menține ponderi exacte în timp.", + "example": "Lansare cu 80% model stabil + 20% model canary." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Doriți o distribuție predictibilă și uniformă.", + "avoid": "Modelele diferă prea mult în ceea ce privește latența sau costul.", + "example": "Același model pe mai multe conturi pentru distribuirea capacității de procesare." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Doriți o distribuție simplă, cu o configurare minimă.", + "avoid": "Aveți nevoie de garanții stricte privind traficul.", + "example": "Prototipare rapidă cu modele echivalente." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Doriți o echilibrare adaptivă bazată pe cererea în timp real.", + "avoid": "Traficul este prea redus pentru a beneficia de echilibrarea utilizării.", + "example": "Sarcini mixte în care un model este adesea suprasolicitat." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Reducerea costurilor este prioritatea dumneavoastră principală.", + "avoid": "Datele privind prețurile lipsesc sau sunt învechite.", + "example": "Sarcini de fundal sau în lot, pentru care se preferă un cost mai mic." }, "reset-aware": { "when": "Rutați prin mai multe conturi cu telemetrie de cotă și ferestre diferite de resetare.", @@ -3386,19 +3386,19 @@ "example": "Preferați o resetare a contului săptămânală de 60% mâine, față de o resetare a contului de 80% mai târziu." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Utilizați când doriți o distribuție perfect uniformă — fiecare model este folosit o dată înainte de repetare.", + "avoid": "Evitați când modelele au niveluri diferite de calitate sau latență, iar ordinea contează.", + "example": "Exemplu: Mai multe conturi ale aceluiași model pentru distribuirea uniformă a utilizării." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Utilizați când doriți o selecție cu latență redusă folosind algoritmul Power-of-Two-Choices.", + "avoid": "Evitați pentru combinații mici, cu cel mult 2 modele — nu oferă niciun avantaj față de round-robin.", + "example": "Exemplu: Inferență cu debit ridicat pe 4 sau mai multe endpointuri de modele echivalente." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Utilizați când sesiunile lungi trebuie să continue după rotația conturilor, fără pierderea contextului de lucru.", + "avoid": "Evitați când schimbarea conturilor este rară sau când nu doriți solicitări suplimentare de rezumare.", + "example": "Exemplu: Sesiuni Codex care se rotesc între mai multe conturi pe măsură ce acestea se apropie de epuizarea cotei." }, "fill-first": { "when": "Utilizați atunci când doriți să epuizați complet cota unui furnizor înainte de a trece la următorul.", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Câte reîncercări se efectuează înainte ca o solicitare să fie declarată eșuată.", + "retryDelay": "Timpul inițial de așteptare între reîncercări. Valorile mai mari reduc presiunea cauzată de vârfurile de solicitări.", + "timeout": "Durata maximă a solicitării înainte de anulare.", + "healthcheck": "Exclude modelele/furnizorii nefuncționali din deciziile de rutare.", + "concurrencyPerModel": "Numărul maxim de solicitări simultane permise per model în modul round-robin.", + "queueTimeout": "Cât timp poate aștepta o solicitare în coadă înainte de expirare.", "failoverBeforeRetry": "Când este activată, orice eroare în amonte declanșează transferarea imediată la următoarea țintă combinată, omitând toate reîncercările și adresele URL de rezervă.", "maxSetRetries": "Numărul de ori pentru a reîncerca setul de ținte complet atunci când fiecare țintă eșuează. 0 = nicio reîncercare la nivel de set.", "setRetryDelayMs": "Întârziere între încercările de reîncercare la nivel de set, dând timp pentru rezolvare problemelor tranzitorii.", "disableSessionStickiness": "Rotiți la o conexiune diferită la fiecare solicitare în loc de a fixa o întreagă conversație la o singură conexiune prin hash-ul primului mesaj. Suprascrie valoarea implicită globală. Lăsați pe Inherit pentru a păstra hiturile de prompt-cache pentru chaturile cu mai multe runde." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "Șabloane rapide", + "templatesDescription": "Aplicați un profil inițial, apoi ajustați modelele și configurația.", + "templateApply": "Aplicați șablonul", + "templateHighAvailability": "Disponibilitate ridicată", + "templateHighAvailabilityDesc": "Rutare prioritară cu verificări de stare și reîncercări sigure.", + "templateCostSaver": "Economisire de costuri", + "templateCostSaverDesc": "Rutare optimizată pentru costuri, destinată sarcinilor de lucru axate pe buget.", + "templateBalanced": "Încărcare echilibrată", + "templateBalancedDesc": "Rutare către resursa cel mai puțin utilizată, pentru a distribui cererea în timp.", + "usageGuideHide": "Ascunde", + "usageGuideDontShowAgain": "Nu mai afișa", + "usageGuideShow": "Afișează ghidul", + "quickTestTitle": "Combinație pregătită pentru validare", + "quickTestDescription": "Rulează acum un test pentru a confirma comportamentul mecanismului de rezervă și al latenței.", + "testNow": "Testează acum", + "pricingCoverage": "Acoperirea tarifelor", + "pricingCoverageHint": "Optimizarea costurilor funcționează cel mai bine atunci când toate modelele din combinație au tarife disponibile.", + "pricingAvailable": "Tarife disponibile", + "pricingMissing": "Fără tarife", + "pricingAvailableShort": "cu tarif", + "pricingMissingShort": "fără tarif", "fallbackOnlyOnQuotaExhaustion": "Avansați doar la epuizarea cotei", "fallbackOnlyOnQuotaExhaustionShort": "fallback doar pentru cotă", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "warningRoundRobinSingleModel": "Rutarea round-robin este mai utilă cu cel puțin 2 modele.", + "warningCostOptimizedPartialPricing": "Doar {priced} din {total} modele au tarife disponibile. Rutarea poate ține cont doar parțial de costuri.", + "warningCostOptimizedNoPricing": "Nu au fost găsite date despre tarife pentru această combinație. Rutarea optimizată pentru costuri poate funcționa în mod neașteptat.", + "filterAll": "Toate", + "filterIntelligent": "Inteligentă", + "filterDeterministic": "Deterministă", + "filterEmptyTitle": "Nicio combinație nu corespunde acestui filtru de strategie.", + "filterEmptyIntelligentDescription": "Creează o combinație auto sau LKGP pentru a popula tabloul de bord pentru rutarea inteligentă.", + "filterEmptyDeterministicDescription": "Momentan există doar combinații auto și LKGP. Revino la Toate sau creează o combinație deterministă.", "readinessTitle": "Sunteți gata să economisiți?", "readinessDescription": "Examinați lista de verificare înainte de a crea sau a actualiza această combinație.", "readinessCheckName": "Numele combinației este valid", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Adăugați cel puțin un model.", "saveBlockWeighted": "Setați ponderi la 100% (actual: {total}%).", "saveBlockPricing": "Adăugați prețuri pentru cel puțin un model sau alegeți o altă strategie.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Configurație recomandată", + "applyRecommendations": "Aplică recomandările", + "recommendationsUpdated": "Recomandările au fost actualizate pentru {strategy}.", + "recommendationsApplied": "Recomandările au fost aplicate acestei combinații.", + "intelligentPanelTitle": "Tablou de bord pentru rutarea inteligentă", + "intelligentPanelDesc": "Scoruri în timp real și stare de funcționare pentru această combinație cu rutare automată.", "configOnlyStatus": "Vizualizare configurație", "configOnlyHint": "Acest panou afișează doar intrările de rutare. Starea live a circuit breaker-ului este disponibilă pe pagina Health.", "routingInputs": "Intrări de rutare", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Prefix de furnizor necunoscut.", "builderDynamicAccountShort": "Cont dinamic", "builderNeedValidName": "Definiți un nume valid de combinație înainte de a continua.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Prezentare generală a stării", + "normalOperation": "Funcționare normală", + "allProvidersHealthy": "Furnizorii raportează condiții optime de rutare.", + "incidentMode": "Mod de incident", + "highCircuitBreakerRate": "A fost detectată o rată ridicată de declanșare a disjunctorului.", + "activeModePack": "Pachet de moduri activ", + "modePackUpdated": "Pachetul de moduri a fost actualizat la {pack}.", + "modePackHint": "Comutați presetările pentru a influența motorul de rutare fără a reconstrui combinația.", + "providerScores": "Scorurile furnizorilor", + "allProvidersEvaluated": "Nu este configurat niciun grup de candidați. Toți furnizorii activi sunt evaluați în timpul rulării.", + "excludedProviders": "Furnizori excluși", + "excludedProvidersHint": "Furnizorii cu un întrerupător de circuit OPEN sunt excluși temporar din rutare.", + "noExcludedProviders": "În prezent, nu este exclus niciun furnizor.", + "cooldownMinutes": "Perioadă de așteptare: {minutes} min.", + "builderIntelligentTitle": "Configurarea rutării inteligente", + "builderIntelligentDesc": "Configurați motorul de evaluare multifactorială pentru această combinație de rutare automată.", + "candidatePoolLabel": "Grup de candidați", + "candidatePoolHint": "Selectați furnizorii pe care acest motor trebuie să îi evalueze. Lăsați necompletat pentru a utiliza toți furnizorii activi.", + "candidatePoolEmpty": "Nu există încă furnizori activi disponibili.", + "candidatePoolAllProviders": "Toți furnizorii", + "modePackLabel": "Pachet de moduri", + "routerStrategyLabel": "Strategia routerului", + "strategyRules": "Reguli (evaluare pe 6 factori)", + "explorationRateLabel": "Rata de explorare", + "explorationRateHint": "{percent}% dintre solicitări pot explora furnizori care nu sunt optimi.", + "budgetCapLabel": "Plafon bugetar (USD / solicitare)", + "budgetCapPlaceholder": "Fără limită", + "advancedWeightsTitle": "Avansat: ponderile evaluării", "nestedComboFlatten": "Aplatizare combinații imbricate", "nestedComboExecute": "Executare combinații imbricate ca ținte", "effectiveRoutingShare": "Cotă de rutare efectivă (pondere ÷ total)", - "weightQuota": "Quota", - "weightHealth": "Health", + "weightQuota": "Cotă", + "weightHealth": "Stare", "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightLatencyInv": "Latență", + "weightTaskFit": "Potrivire cu sarcina", + "weightStability": "Stabilitate", + "weightTierPriority": "Nivel", + "weightCacheAffinity": "Afinitate pentru rezultate din cache", "weightSessionAvailability": "Disponibilitate Sesiune", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Configurarea rutării inteligente", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Configurație de bază de siguranță", + "description": "Utilizați un model principal și mențineți lanțul de rezervă scurt și fiabil.", + "tip1": "Plasați pe primul loc modelul cel mai fiabil.", + "tip2": "Păstrați 1-2 modele de rezervă cu o calitate similară.", + "tip3": "Utilizați reîncercări sigure pentru a absorbi erorile temporare ale furnizorilor." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Distribuție controlată a traficului", + "description": "Excelentă pentru lansări canary și migrarea treptată între modele.", + "tip1": "Începeți cu o distribuție prudentă, cum ar fi 90/10.", + "tip2": "Mențineți totalul la 100% și reechilibrați automat după modificări.", + "tip3": "Monitorizați rata de succes și latența înainte de a crește ponderea canary." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Distribuție predictibilă a sarcinii", + "description": "Ideală când modelele sunt echivalente și aveți nevoie de o distribuție uniformă.", + "tip1": "Folosiți cel puțin 2 modele.", + "tip2": "Setați limite de concurență pentru a evita supraîncărcarea cauzată de vârfuri.", + "tip3": "Folosiți timpul de expirare al cozii pentru a eșua rapid în caz de saturație." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Distribuție rapidă cu configurare minimă", + "description": "Folosiți această opțiune când aveți nevoie de o distribuție simplă, fără garanții stricte.", + "tip1": "Folosiți modele cu profiluri de latență similare.", + "tip2": "Mențineți reîncercările activate pentru a compensa ratările aleatorii.", + "tip3": "Preferați această opțiune pentru experimentare, nu pentru SLA-uri stricte." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Echilibrare adaptivă", + "description": "Direcționează către modelele mai puțin utilizate pentru a reduce în timp punctele de supraîncărcare.", + "tip1": "Funcționează mai bine în condiții de trafic continuu.", + "tip2": "Combinați cu verificări de stare pentru o echilibrare mai sigură.", + "tip3": "Monitorizați utilizarea per model pentru a valida îmbunătățirile distribuției." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Rutare axată pe buget", + "description": "Direcționează către modelele cu costuri mai mici atunci când sunt disponibile metadate privind prețurile.", + "tip1": "Asigurați acoperirea informațiilor despre prețuri pentru toate modelele selectate.", + "tip2": "Păstrați un model de rezervă de calitate pentru solicitările dificile.", + "tip3": "Folosiți această opțiune pentru sarcini de lot/fundal, unde costul este principalul KPI." }, "reset-aware": { "title": "Resetarea conștientă de rotație a contului", @@ -3597,11 +3597,11 @@ "tip3": "Păstrați banda de legătură mică, astfel încât conturile echivalente să se rotească în continuare echitabil." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Distribuție prin amestecarea pachetului", + "description": "Fiecare model este utilizat exact o dată pe ciclu înainte de o nouă amestecare.", + "tip1": "Folosiți cel puțin 2 modele pentru o distribuție relevantă.", + "tip2": "Funcționează cel mai bine cu modele cu performanțe echivalente.", + "tip3": "Ideală pentru echilibrarea sarcinii între mai multe conturi API." }, "fill-first": { "description": "Furnizorul de evacuare cotele secvenţial înainte de a se retrage.", @@ -3646,86 +3646,86 @@ "title": "Puterea a două alegeri" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Pachet gratuit ($0)", + "templateFreeStackDesc": "Distribuție round-robin între toți furnizorii gratuiți: Kiro (Claude), Qoder (5 modele), Qwen (4 modele). Cost zero, programarea nu se oprește niciodată.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "Modul LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Noțiuni introductive despre combinații", + "wizardGuideDesc": "Creați combinații de modele pentru a direcționa inteligent traficul AI", + "wizardGuideHint": "sau faceți clic pe + Create Combo mai sus", + "createFirstCombo": "Creați prima combinație", + "wizardStep1Title": "Denumiți combinația", + "wizardStep1Desc": "Dați combinației un nume unic pentru a o identifica în regulile de rutare", + "wizardStep2Title": "Adăugați modele", + "wizardStep2Desc": "Selectați modelele AI și aranjați ordinea priorității lor de rezervă", + "wizardStep3Title": "Alegeți strategia", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Revizuiți și salvați", + "wizardStep4Desc": "Revizuiți configurația și activați combinația", + "usageGuideInvokeTitle": "Cum se apelează această combinație", + "usageGuideInvokeDesc": "Trimite numele exact al combinației drept model, de ex. model: \"my-combo\" (sau combo/my-combo).", + "usageGuideInvokeAutoNote": "auto și auto/* reprezintă un router separat, fără configurare, care nu utilizează combinațiile tale (cu excepția cazului în care o combinație se numește literalmente auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto este un produs OpenRouter real, cu plată (Auto Best Available), nu un alias OmniRoute — exclude-l prin Setări → Rutare → Ascunde modelele cu plată.", + "emailVisibilityStateOn": "Activat", + "emailVisibilityStateOff": "Dezactivat", + "reorderHandle": "Trage pentru a reordona", + "failedReorder": "Reordonarea modelelor a eșuat", + "builderFlowTitle": "Fluxul de creare a combinației", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Elemente de bază", + "description": "Nume și șablon inițial" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Pași", + "description": "Selectarea furnizorului, modelului și contului" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategie", + "description": "Comportamentul rutării și setările avansate" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Rutare inteligentă", + "description": "Grupul de candidați pentru rutarea automată, presetările și evaluarea" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Revizuire", + "description": "Validarea finală înainte de salvare" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", + "builderStageVisited": "Etapă finalizată", + "builderStageCurrent": "Etapa curentă", + "builderStagePending": "În așteptare", + "builderStageLocked": "Blocat — finalizează mai întâi etapa anterioară", + "builderTitle": "Creează o combinație", + "builderBrowseCatalog": "Răsfoiește catalogul", + "builderProvider": "Furnizor", + "builderLoadingProviders": "Se încarcă furnizorii...", + "builderSelectProvider": "Selectează furnizorul", "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderSelectModel": "Selectează modelul", + "builderProviderFirst": "Selectează mai întâi furnizorul", + "builderAccount": "Cont", + "builderPreview": "Previzualizare", + "builderAddStep": "Adaugă un pas", "builderDuplicateExact": "Acest pas exact furnizor/model/cont este deja în combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Referință la combinație", + "builderAddComboRef": "Adaugă o referință la combinație", + "builderComboRefStep": "Adaugă o referință la combinație", + "builderPinnedAccount": "Cont fixat", + "builderLegacyEntry": "Intrare veche", + "reviewName": "Nume", + "reviewStrategy": "Strategie", + "reviewSteps": "Pași", + "reviewAccounts": "Conturi", + "reviewProviders": "Furnizori", + "reviewComboRefs": "Referințe de combinații", + "reviewAdvanced": "Setări avansate", + "reviewAgentFlags": "Indicatori pentru agent", + "reviewSequence": "Secvență de modele", + "reviewNoSteps": "Niciun pas configurat", "builderStagesDescription": "Finalizați fiecare etapă pentru a defini combinații, a crea pași, a selecta strategia de rutare și a revizui rezultatele.", "builderStepsDescription": "Construiți fiecare pas combo în ordine: furnizor, model, apoi cont. Acest lucru permite reutilizarea aceluiași furnizor și model în conturi diferite.", "selectProvider": "Selectați Furnizor", @@ -3780,7 +3780,7 @@ "errorDescription": "Nu am putut încărca datele combo în acest moment. Verifică-ți conexiunea și încearcă din nou.", "errorId": "ID eroare: {id}", "errorRetry": "Încearcă din nou", - "comboLabel": "Combo", + "comboLabel": "Combinație", "duplicateAutoComboConfirm": "Creați o combinație statică din \"{name}\"?", "duplicateAutoComboSnapshotMsg": "Acesta va captura furnizorii/modelurile conectate în prezent care se potrivesc cu acest șablon într-o combinație editabilă.", "duplicateAutoComboFailedPrefix": "Duplicarea combinației automate a eșuat:", @@ -3800,27 +3800,27 @@ "range7d": "7 zile", "range30d": "30 de zile", "range90d": "90 de zile", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 de zile", + "range365d": "365 de zile", "rangeAll": "Tot timpul", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Modele active", + "flatRateEstimateNotice": "Include estimări ale prețului per token pentru abonamentele cu tarif fix, nu costul facturat.", + "flatRateEstimateForecast": "Proiecția include estimări pentru tarife fixe.", + "selectedWindow": "Interval selectat", + "activeProviders": "Furnizori activi", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Cheltuieli astăzi", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Ponderea furnizorilor", + "topProviders": "Furnizori principali", + "costTrend": "Evoluția costurilor", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Modele principale", "requestsInWindow": "Requests In Window", "tokenUsage": "Utilizarea jetoanelor", "totalTokens": "Total de jetoane", @@ -3855,36 +3855,36 @@ "exportCSV": "Exportați ca CSV", "exportJSON": "Exportați ca JSON", "legacyFreeLabel": "Legacy / Gratuit", - "costExplorerTitle": "Cost Explorer", - "costExplorerDescription": "Explore spend by provider, model, API key, account, or service tier.", - "groupProvider": "Provider", + "costExplorerTitle": "Explorator de costuri", + "costExplorerDescription": "Explorați cheltuielile în funcție de furnizor, model, cheie API, cont sau nivel de serviciu.", + "groupProvider": "Furnizor", "groupModel": "Model", - "groupApiKey": "API Key", - "groupAccount": "Account", - "groupServiceTier": "Service Tier", + "groupApiKey": "Cheie API", + "groupAccount": "Cont", + "groupServiceTier": "Nivel de serviciu", "serviceTierFast": "Rapid", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Flexibil", "serviceTierStandard": "Standard", "serviceTierBreakdownTitle": "Nivel de serviciu", "serviceTierBreakdownSubtitle": "Partajare Rapid / Flex / Standard", "serviceTierUsageSaved": "utilizare salvată", "serviceTierCostSaved": "salvat", "serviceTierCostShareSuffix": "din cost", - "dimension": "Dimension", - "share": "Share", - "legacyOrFree": "Legacy / Free", - "filterRows": "Filter rows…", - "filterCostExplorerRows": "Filter Cost Explorer rows", - "noMatchingCostRows": "No matching cost rows", - "noMatchingCostRowsDescription": "Adjust the search text, grouping, or selected time window.", - "showingCostRows": "Showing {shown} of {total} matching rows.", - "showingTopCostRows": "Showing {shown} of {total} matching rows (top 50)." + "dimension": "Dimensiune", + "share": "Pondere", + "legacyOrFree": "Învechit / Gratuit", + "filterRows": "Filtrați rândurile…", + "filterCostExplorerRows": "Filtrați rândurile din Exploratorul de costuri", + "noMatchingCostRows": "Niciun rând de cost corespunzător", + "noMatchingCostRowsDescription": "Ajustați textul de căutare, gruparea sau intervalul de timp selectat.", + "showingCostRows": "Se afișează {shown} din {total} rânduri corespunzătoare.", + "showingTopCostRows": "Se afișează {shown} din {total} rânduri corespunzătoare (primele 50)." }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "title": "Endpoint API", + "subtitle": "Utilizează endpointul compatibil cu OpenAI pentru majoritatea SDK-urilor și instrumentelor.", + "testEndpoint": "Testează endpointul →", + "advancedProtocols": "Protocoale avansate", "available": "Puncte finale disponibile", "cloudProxy": "Cloud Proxy", "disableConfirm": "Sigur doriți să dezactivați proxy-ul cloud?", @@ -3900,7 +3900,7 @@ "disableCloud": "Dezactivați Cloud", "enableCloud": "Activați Cloud", "modelsAcrossEndpoints": "{models} modele în {endpoints} puncte finale", - "loadingModels": "Loading available models...", + "loadingModels": "Se încarcă modelele disponibile...", "chatDesc": "Chat în flux și non-stream cu toți furnizorii", "embeddings": "Înglobări", "embeddingsDesc": "Încorporare de text pentru conductele de căutare și RAG", @@ -3910,24 +3910,24 @@ "rerankDesc": "Reglați documentele în funcție de relevanța pentru o interogare", "audioTranscription": "Transcriere audio", "audioTranscriptionDesc": "Transcrie fișiere audio în text (Șoaptă)", - "textToSpeech": "Text to Speech", + "textToSpeech": "Sinteză vocală", "textToSpeechDesc": "Transformați textul în vorbire cu sunet natural", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Generare de muzică", + "musicDesc": "Generează muzică și piste audio prin ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderații", "moderationsDesc": "Moderarea conținutului și clasificarea siguranței", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "API-ul OpenAI Responses pentru Codex și fluxuri de lucru agentice avansate", + "listModelsDesc": "Listează toate modelele disponibile de la toți furnizorii conectați", + "settingsApiDesc": "Citește și modifică configurația OmniRoute prin API", + "settingsApi": "API pentru setări", "categoryCore": "API-uri de Bază", "categoryMedia": "Media și Multi-Modal", - "categorySearch": "Search & Discovery", + "categorySearch": "Căutare și descoperire", "categoryUtility": "Utilități și Gestionare", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Căutare pe web", + "webSearchDesc": "Căutare unificată pe web prin mai mulți furnizori, cu comutare automată în caz de eroare și stocare în cache", + "searchProvider": "Furnizor de căutare", + "searchProviderDesc": "Acest furnizor este utilizat pentru căutarea pe web prin POST /v1/search. Nu este necesară configurarea unui model — furnizorii de căutare sunt gata de utilizare după conectarea unei chei API.", "enableCloudTitle": "Activați Cloud Proxy", "whatYouGet": "Ce vei primi", "cloudBenefitAccess": "Accesați-vă API-ul de oriunde în lume", @@ -3963,99 +3963,99 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Activează tunelul", + "cloudflaredInstallAndEnable": "Instalează și activează", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Rulează", + "cloudflaredStarting": "Se pornește", + "cloudflaredStoppedState": "Oprit", + "cloudflaredNotInstalled": "Neinstalat", + "cloudflaredUnsupported": "Neacceptat", + "cloudflaredError": "Eroare", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Ultima eroare: {error}", "providerModelsTitle": "{provider} — Modele", "noModelsForProvider": "Nu există modele disponibile pentru acest furnizor.", "chat": "Chat", "embedding": "Încorporarea", "image": "Imagine", "custom": "personalizat", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", - "tabApis": "APIs", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "modelsCount": "{count, plural, one {# model} other {# modele}}", + "sectionTitle": "Suprafață de integrare", + "sectionDescription": "API-uri compatibile cu OpenAI și endpointuri pentru protocoale operaționale", + "tabApis": "API-uri", + "tabProtocols": "Protocoale", + "tabsAria": "Secțiuni de endpointuri", + "protocolsTitle": "Protocoale", + "protocolsDescription": "MCP și A2A sunt endpointuri de prim rang, cu observabilitate și controale dedicate.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "Model Context Protocol prin stdio", + "a2aCardTitle": "Server A2A", + "a2aCardDescription": "Endpoint JSON-RPC Agent2Agent", + "protocolToolsLabel": "Instrumente", + "protocolTasksLabel": "Sarcini", + "protocolActiveStreamsLabel": "Fluxuri active", + "protocolLastActivity": "Ultima activitate", + "quickStart": "Pornire rapidă", + "openMcpDashboard": "Deschide gestionarea MCP", + "openA2aDashboard": "Deschide gestionarea A2A", + "mcpQuickStartTitle": "Pornire rapidă MCP", + "mcpQuickStartStep1": "Rulează serverul MCP prin `omniroute --mcp`.", + "mcpQuickStartStep2": "Configurează clientul MCP să se conecteze prin transportul stdio.", + "mcpQuickStartStep3": "Invocă instrumente precum `omniroute_get_health` și `omniroute_list_combos`.", + "a2aQuickStartTitle": "Pornire rapidă A2A", + "a2aQuickStartStep1": "Descoperă fișa agentului la `/.well-known/agent.json`.", + "a2aQuickStartStep2": "Trimite cereri JSON-RPC către `POST /a2a` folosind `message/send` sau `message/stream`.", + "a2aQuickStartStep3": "Urmărește și controlează sarcinile folosind `tasks/get` și `tasks/cancel`.", + "completionsLegacy": "Completări (versiune veche)", + "completionsLegacyDesc": "Completări de text OpenAI din versiunea veche — acceptă atât un șir de prompt, cât și formatul matricei de mesaje", "messagesApi": "Mesaje", "messagesApiDesc": "Format API Native Anthropic Messages pentru furnizorii compatibili cu Claude", "imageEdits": "Editări de imagine", "imageEditsDesc": "Editați și modificați imaginile existente cu AI (inpainting, outpainting, variații)", - "batchApi": "Batch API", + "batchApi": "API pentru procesare în lot", "batchApiDesc": "Procesați loturi mari de solicitări în mod asincron (compatibil cu OpenAI)", "filesApi": "Fișiere API", "filesApiDesc": "Încărcați și gestionați fișiere pentru procesarea în lot", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Generare video", + "videoDesc": "Generează videoclipuri folosind modele AI precum ComfyUI și Stable Video Diffusion.", + "tailscaleRequestFailed": "Nu s-a putut încărca starea Tailscale", + "tailscaleEnableFailed": "Nu s-a putut activa Tailscale Funnel", + "tailscaleWaitingForLogin": "Finalizează autentificarea Tailscale în fila de browser deschisă. OmniRoute va reîncerca automat.", + "tailscaleLoginTimedOut": "Timpul de așteptare pentru autentificarea Tailscale a expirat", + "tailscaleWaitingForFunnel": "Activează Funnel pentru acest dispozitiv în fila de browser deschisă. OmniRoute va continua să verifice.", + "tailscaleFunnelTimedOut": "Timpul de așteptare pentru activarea Tailscale Funnel a expirat", + "tailscaleStarted": "Tailscale Funnel a fost activat", + "tailscaleDisableFailed": "Nu s-a putut dezactiva Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel a fost dezactivat", + "tailscaleInstallFailed": "Nu s-a putut instala Tailscale", + "tailscaleInstallProgress": "Se procesează...", + "tailscaleInstalled": "Tailscale a fost instalat cu succes", + "tailscaleRunning": "Rulează", + "tailscaleNeedsLogin": "Necesită autentificare", + "tailscaleStoppedState": "Oprit", + "tailscaleNotInstalled": "Neinstalat", + "tailscaleUnsupported": "Neacceptat", + "tailscaleError": "Eroare", + "tailscaleDisable": "Oprește Funnel", + "tailscaleInstallAndEnable": "Instalează și activează", + "tailscaleLoginAndEnable": "Autentifică-te și activează", + "tailscaleEnable": "Activează Funnel", + "tailscaleUrlNotice": "Folosește adresa ta Tailscale .ts.net. La prima utilizare pot fi necesare autentificarea și aprobarea Funnel.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Autentifică acest dispozitiv cu Tailscale, apoi activează Funnel.", + "tailscaleBinaryPath": "Fișier binar: {path}", + "tailscaleLastError": "Ultima eroare: {error}", + "tailscaleInstallTitle": "Instalează Tailscale", + "tailscaleInstallIntro": "Instalează Tailscale pe acest dispozitiv și pregătește OmniRoute pentru activarea Funnel.", + "tailscaleInstallPasswordHint": "Pe macOS și Linux, sudo poate fi necesar pentru instalarea pachetului și pornirea serviciului daemon.", + "tailscaleSudoPlaceholder": "Parolă sudo opțională", + "tailscaleInstalling": "Se instalează", "tailscaleSudoLabel": "Parola Sudo (necesară pe macOS/Linux)", "ngrokTitle": "Tunelul ngrok", "ngrokRunning": "Alergarea", @@ -4127,26 +4127,26 @@ "vscodeAliasDescriptionError": "Se afișează URL-uri substitut deoarece cheile CLI nu au putut fi încărcate în această sesiune.", "vscodeAliasDescriptionLoading": "Se încarcă cheile CLI. URL-urile substitut sunt afișate până când o cheie este disponibilă.", "vscodeAliasDescriptionPlaceholder": "Se afișează URL-uri substitut. Creați sau activați o cheie API în CLI Tools pentru a înlocui TOKEN.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "Instrumente CLI", "vscodeAliasBaseLabel": "Bază VS Code", "vscodeAliasModelsLabel": "Modele VS Code", "vscodeAliasChatLabel": "Chat VS Code", "localServer": "Server local", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute Cloud", "copyUrl": "Copiați adresa URL", "badgeLoopbackTooltip": "Acest endpoint este accesibil doar local (doar loopback)", "badgeAlwaysProtectedTooltip": "Acest endpoint este întotdeauna protejat și necesită autorizare", "badgeInternalTooltip": "Acesta este un endpoint intern de sistem", "tierAll": "Toate", "tierAuth": "Autentificat", - "tierLoopback": "Loopback", + "tierLoopback": "Buclă locală", "tierAlwaysProtected": "Întotdeauna protejat", "tierPublic": "Public", "hideInternal": "Ascunde interne", "showInternal": "Afișează interne", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Prompt de sistem personalizat", + "customSystemPromptDescription": "Inserează un prompt de sistem personalizat în fiecare solicitare către model", + "customSystemPromptPlaceholder": "de ex., Răspunde întotdeauna ca un pirat...", "obsidianEnterToken": "Vă rugăm să introduceți un token API Obsidian", "obsidianConnectFailed": "Conectarea a eșuat", "obsidianConnectionFailed": "Conexiune eșuată", @@ -4195,21 +4195,21 @@ "notionTokenConfigured": "Token configurat. Instrumentele Notion sunt disponibile prin MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Proxy pentru endpointuri", + "tabApiEndpoints": "Endpointuri API", + "apiEndpointsTitle": "Endpointuri API", + "apiEndpointsDescription": "Endpointuri API backend care pot fi utilizate de alte aplicații și servicii. Această secțiune va afișa toate API-urile REST disponibile, împreună cu documentația și funcționalitățile de testare.", + "comingSoon": "În curând", + "plannedFeatures": "Funcționalități planificate", + "featureRestApi": "Catalog de endpointuri API REST cu documentație interactivă", + "featureWebhooks": "Configurarea webhookurilor și abonarea la evenimente", + "featureSwagger": "Generarea automată a specificațiilor OpenAPI / Swagger", + "featureAuth": "Gestionarea cheilor API și a domeniilor OAuth pentru fiecare endpoint" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", + "loading": "Se încarcă panoul de control MCP...", + "activate": "activează", + "deactivate": "dezactivează", "confirmSwitchCombo": "Confirmați {action} combo „{combo}”?", "switchComboFailed": "Nu s-a putut comuta starea combo.", "switchComboSuccess": "Combo „{combo}” a fost actualizat.", @@ -4237,127 +4237,127 @@ "mcpStep2": "Configurați clientul MCP pentru a se conecta prin transportul stdio.", "mcpStep3": "Apelați instrumente precum {code1} și {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", + "sessionUptime": "Durata sesiunii", + "lastHeartbeat": "Ultimul semnal de activitate", + "activity24h": "Activitate (24 h)", + "totalCalls": "Total apeluri", + "successRate": "Rată de succes", + "avgLatency": "Latență medie", + "topTools": "Instrumente principale", + "noToolCalls24h": "Niciun apel de instrument în ultimele 24 de ore.", + "runtimeDetails": "Detalii despre mediul de execuție", "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "scopesEnforced": "Domenii de acces impuse", + "yes": "da", + "no": "nu", + "lastCall": "Ultimul apel", + "heartbeatPath": "Calea semnalului de activitate", + "operationalControls": "Controale operaționale", + "switchCombo": "Comută combinația", + "inactive": "inactivă", + "active": "activă", + "activateCombo": "Activează combinația", + "deactivateCombo": "Dezactivează combinația", + "applyResilienceProfile": "Aplică profilul de reziliență", + "profileAggressive": "agresiv", + "profileBalanced": "echilibrat", + "profileConservative": "conservator", + "applyProfile": "Aplică profilul", + "resetCircuitBreakers": "Resetează întrerupătoarele de circuit", + "resetCircuitBreakersHelp": "Șterge starea curentă a întrerupătoarelor și contoarele de erori pentru furnizori.", + "resetAllBreakers": "Resetează toate întrerupătoarele", + "toolsAndScopes": "Instrumente și domenii de acces", + "tableTool": "Instrument", + "tableScopes": "Domenii de acces", + "tablePhase": "Fază", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Jurnal de audit", + "auditSummary": "Apeluri: {total} | pagina {page} din {totalPages}", + "allTools": "Toate instrumentele", + "allResults": "Toate rezultatele", + "success": "Succes", + "failure": "Eșec", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "Se încarcă înregistrările de audit...", + "noAuditEntriesForFilters": "Nu s-au găsit înregistrări de audit pentru filtrele actuale.", + "tableTimestamp": "Marcaj temporal", + "tableDuration": "Durată", + "tableResult": "Rezultat", + "tableApiKey": "Cheie API", + "failed": "eșuat", + "previous": "Anterior", + "next": "Următor", + "apiKeyId": "ID cheie API", + "offset": "Decalaj", + "limit": "Limită", + "tool": "Instrument" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "Se încarcă tabloul de bord A2A...", + "confirmCancelTask": "Anulați sarcina {taskId}?", + "cancelTaskFailed": "Anularea sarcinii a eșuat.", + "cancelTaskSuccess": "Sarcina {taskId} a fost anulată.", + "smokeSendFailed": "Testul rapid message/send a eșuat.", + "smokeSendSuccessWithTask": "message/send reușit (sarcina {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "Testul rapid message/stream a eșuat.", + "smokeStreamSuccessWithTask": "message/stream reușit (sarcina {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream s-a încheiat fără un ID de sarcină.", + "health": "Stare", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "Total sarcini", + "activeStreams": "Fluxuri active", + "lastTask": "Ultima sarcină", + "taskStateOverview": "Prezentare generală a stării sarcinilor", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "trimisă", + "working": "în lucru", + "completed": "finalizată", + "failed": "eșuată", + "cancelled": "anulată" }, - "agentCard": "Agent card", + "agentCard": "Fișa agentului", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "Versiune", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "Capabilități", + "agentCardNotAvailable": "Fișa agentului nu este disponibilă.", + "quickValidation": "Validare rapidă", + "quickValidationDescription": "Execută apeluri de testare rapidă prin endpointul activ `/a2a`.", + "runMessageSend": "Rulează message/send", + "runMessageStream": "Rulează message/stream", + "taskManagement": "Gestionarea sarcinilor", + "taskSummary": "{total} sarcini | pagina {page} din {totalPages}", + "allStates": "toate", + "allSkills": "toate abilitățile", + "loadingTasks": "Se încarcă sarcinile...", + "noTasksForFilters": "Nu s-au găsit sarcini pentru filtrele actuale.", + "tableTask": "Sarcină", + "tableSkill": "Abilitate", + "tableState": "Stare", + "tableUpdated": "Actualizat", + "tableActions": "Acțiuni", + "view": "Vizualizează", + "cancel": "Anulează", + "previous": "Anterior", + "next": "Următor", + "taskDetail": "Detalii sarcină", + "close": "Închide", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "Evenimente", + "artifacts": "Artefacte", + "tablePhase": "Faza tabelului", + "offset": "Decalaj", + "limit": "Limită", + "skill": "Abilitate", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "mesaj/trimitere", "rpcMethodStream": "mesaj/flux", "rpcMethodGet": "sarcini/obține", "rpcMethodCancel": "sarcini/anulare", "serviceLabel": "A2A", - "online": "Online", - "offline": "Offline", + "online": "Conectat", + "offline": "Deconectat", "disableLabel": "Dezactivare {label}", "enableLabel": "Activare {label}", "a2aDisabledTitle": "A2A este dezactivat", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Acțiuni", + "addMemory": "Adaugă memorie", + "allTypes": "Toate tipurile", "cancel": "Anulează", "checkHealth": "Verificați starea de sănătate", "checkingHealth": "Se verifică…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Cum funcționează", "howWorksContent": "1. Extragere automată: la sfârșitul fiecărui răspuns, faptele și episoadele sunt detectate și salvate automat.\n2. Recuperare: înainte de fiecare răspuns, cele mai relevante memorii sunt căutate prin FTS5 (exact), vectorial (semantic) sau RRF hibrid.\n3. Injectare: memoriile relevante sunt injectate în contextul asistentului pentru a îmbunătăți calitatea răspunsului.\n4. Gestionare: utilizați această pagină pentru a vizualiza, edita, exporta și compacta memoriile vechi." }, - "content": "Content", + "content": "Conținut", "contentPlaceholder": "Valoare sau conținut JSON de reținut", - "created": "Created", - "delete": "Delete", + "created": "Creat", + "delete": "Șterge", "deleteConfirmDesc": "Această acțiune nu poate fi anulată. Memoria va fi eliminată definitiv.", "deleteConfirmTitle": "Ștergeți memoria?", - "description": "View and manage stored memory entries", + "description": "Vizualizează și gestionează intrările de memorie stocate", "editMemory": "Editați memoria", "editModal": { "title": "Editare memorie", @@ -4401,7 +4401,7 @@ "autoDesc": "Utilizează cea mai bună opțiune disponibilă: furnizor la distanță > static > transformers", "remoteLabel": "Furnizor la distanță", "remoteDesc": "Utilizează embedding prin API-ul furnizorului (necesită cheie API)", - "staticLabel": "Static local (potion)", + "staticLabel": "Local static (potion)", "staticDesc": "Embedding local fără WASM sau dependențe externe", "transformersLabel": "Transformers.js (MiniLM)", "transformersDesc": "Embedding local prin @huggingface/transformers (~400MB RAM)", @@ -4433,7 +4433,7 @@ "reindexFailed": "Pornirea reindexării a eșuat", "keywordLabel": "Cuvinte cheie (FTS5)", "keywordReason": "Căutarea după cuvinte cheie este întotdeauna disponibilă", - "embeddingLabel": "Embedding", + "embeddingLabel": "Încorporare", "vectorStoreLabel": "Stocare vectorială", "qdrantLabel": "Qdrant", "rerankLabel": "Reclasificare", @@ -4444,20 +4444,20 @@ "configureCta": "Configurează", "vectorStoreInstallHint": "Pentru a activa căutarea vectorială: npm install sqlite-vec (necesită Node.js nativ, nu WASM), apoi reporniți." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodică", + "export": "Exportă", + "factual": "Factuală", "healthUnknown": "Sănătate necunoscută", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Rată de succes", + "import": "Importă", "importError": "Importul fișierului a eșuat", "importResult": "{imported} importate, {skipped} omise", - "key": "Key", + "key": "Cheie", "keyPlaceholder": "de ex. temă.preferințe.utilizator", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Amintiri", "next": "În continuare", - "noMemories": "No memories found", + "noMemories": "Nu s-au găsit amintiri", "pageInfo": "Pagina {page} din {totalPages} ({total} total)", "pipelineError": "Eroare de conductă", "pipelineOk": "Conductă OK ({latencyMs}ms)", @@ -4467,25 +4467,25 @@ "queryLabel": "Interogare de test", "queryPlaceholder": "Introduceți o întrebare sau o frază de test...", "strategyLabel": "Strategie", - "strategyExact": "Exact (FTS5)", + "strategyExact": "Exactă (FTS5)", "strategySemantic": "Semantic (vectorial)", "strategyHybrid": "Hibrid (RRF)", "budgetLabel": "Buget (tokenuri)", "simulate": "Simulează", "resultsTitle": "{count} rezultat(e)", "resolutionTitle": "Rezoluție căutare", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Încorporare", "resolutionStore": "Stocare vectorială", "resolutionStrategy": "Strategie utilizată", "rerankApplied": "Reclasificare aplicată", - "fallback": "Fallback", + "fallback": "Alternativă", "noResults": "Nu s-au găsit memorii pentru această interogare.", "tokensUsed": "tokenuri utilizate", "none": "niciunul", "errorFetch": "Preluarea previzualizării a eșuat" }, "previous": "Anterior", - "procedural": "Procedural", + "procedural": "Procedurală", "qdrant": { "title": "Qdrant (Stocare vectorială Nivel 2)", "description": "Integrare opțională Qdrant pentru căutare semantică scalabilă", @@ -4534,8 +4534,8 @@ }, "save": "Salvați", "saving": "Se salvează...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Caută în amintiri...", + "semantic": "Semantică", "summarize": { "title": "Compactează memoriile vechi", "noCandidates": "Nicio memorie eligibilă pentru compactare (criteriu: vechime >30 de zile).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Memorii", - "playground": "Playground", + "playground": "Spațiu de testare", "engine": "Motor" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Gestionarea amintirilor", + "tokensUsed": "Tokenuri utilizate", "tooltip": { "totalEntries": "Total memorii stocate pentru această cheie API", "tokensUsed": "Total estimat de tokenuri ocupate de memoriile active", @@ -4558,18 +4558,18 @@ "procedural": "Proceduri, fluxuri de lucru și instrucțiuni pe care asistentul ar trebui să le urmeze", "semantic": "Concepte, preferințe și cunoștințe din domeniu" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Total intrări", + "type": "Tip", "memoryEnabled": "Memorie activată" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Abilități", + "description": "Gestionează și monitorizează abilitățile AI", + "skillsTab": "Abilități", + "executionsTab": "Execuții", "selectSkillToInspect": "Selectați o abilitate din stânga pentru a o inspecta.", "schemaTab": "Schemă", - "handlerTab": "Handler", + "handlerTab": "Modul de procesare", "inputSchema": "Schemă de intrare", "outputSchema": "Schemă de ieșire", "handlerCode": "Cod handler", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Rulare test (substituent)", "setModeAria": "Setare mod {mode}", "uninstallSkill": "Dezinstalare abilitate", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Mediu izolat", + "loading": "Se încarcă abilitățile...", + "noSkills": "Nu s-au găsit abilități", + "noExecutions": "Nu s-au găsit execuții", + "enabled": "Activat", + "disabled": "Dezactivat", "delete": "Ștergere", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "Versiune", + "tableDescription": "Descriere", + "skill": "Abilitate", + "status": "Stare", + "duration": "Durată", + "time": "Oră", + "sandboxConfig": "Configurarea mediului izolat", + "cpuLimit": "Limită CPU", + "cpuLimitDesc": "Durata maximă de execuție per abilitate", + "memoryLimit": "Limită de memorie", + "memoryLimitDesc": "Alocarea maximă de memorie", + "timeout": "Timp de expirare", + "timeoutDesc": "Timpul maxim de așteptare pentru răspuns", + "networkAccess": "Acces la rețea", + "networkAccessDesc": "Permite solicitările de rețea către exterior", + "mode": "Mod", "q": "Q", "filterSkillsPlaceholder": "Filtrați abilitățile după nume, descriere sau etichetă", "allModes": "Toate modurile", @@ -4607,12 +4607,12 @@ "enabledSkills": "Activat", "totalExecutions": "Execuții", "successRate": "Rată de succes", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Piață", "applyFilters": "Aplicare filtre", "popularDefaultsLabel": "Populare în mod implicit pentru furnizorul selectat:", "onMode": "PORNIT", "offMode": "OPRIT", - "autoMode": "AUTO", + "autoMode": "AUTOMAT", "installSkillButton": "Instalare abilitate", "installSkillModalTitle": "Instalare abilitate", "installJsonPlaceholder": "Lipiți JSON-ul manifestului abilității aici...", @@ -4657,7 +4657,7 @@ "lastCheck": "Ultima verificare", "providerHealth": "Sanatatea furnizorului", "systemMetrics": "Metrici de sistem", - "tokenHealth": "Token Health", + "tokenHealth": "Starea tokenurilor", "refreshAll": "Reîmprospătați toate", "checkNow": "Verificați acum", "loadingHealth": "Se încarcă datele de sănătate...", @@ -4665,13 +4665,13 @@ "retry": "Reîncercați", "allOperational": "Toate sistemele sunt operaționale", "issuesDetected": "Au fost detectate probleme de sistem", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute este gata", + "healthVerdictActionRequired": "Este necesară o acțiune pentru restabilirea funcționării complete", + "healthVerdictCoolingDown": "Perioadă de așteptare după modificările recente", + "healthSubtitle": "Verificarea stării sistemului", + "advancedDiagnosticsTitle": "Diagnosticare avansată", + "hide": "Ascunde", + "show": "Afișează", "updatedAt": "Actualizat {time}", "latency": "Latența", "latencyP50": "p50", @@ -4681,10 +4681,10 @@ "notAvailable": "—", "totalRequests": "Total cereri", "noDataYet": "Nu există date încă", - "promptCache": "Prompt Cache", + "promptCache": "Cache pentru prompturi", "entries": "Intrări", "hitRate": "Rata de lovituri", - "hitsMisses": "Hits / Misses", + "hitsMisses": "Reușite / Ratări", "signatureCache": "Cache pentru semnături", "signatureDefaults": "Valori implicite", "signatureTool": "Instrument", @@ -4700,7 +4700,7 @@ "configuredProvidersHint": "Furnizorii cu acreditări salvate în /dashboard/providers, indiferent de starea de rulare.", "activeProviders": "{count} active", "activeProvidersHint": "Furnizorii configurați activați în prezent pentru solicitările de rutare.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} monitorizate", "monitoredProvidersHint": "Furnizorii sunt urmăriți în prezent de monitoarele de sănătate ale întreruptoarelor.", "healthyCount": "{count} sănătos", "nodeVersion": "Nodul {version}", @@ -4721,11 +4721,11 @@ "resetting": "Se resetează...", "resetAll": "Resetați toate", "until": "Până la {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Epuizate", + "learnedFromHeaders": "Învățat din antete", + "remainingOfLimit": "{remaining}/{limit} rămase", + "throttleStatus": "Limitare: {value}", + "lastHeaderUpdate": "Actualizarea antetului: {age}", "databaseHealth": "Sănătatea bazei de date", "databaseHealthDescription": "Diagnosticați și reparați rândurile învechite de cotă/domeniu și referințele combo deteriorate.", "status": "Stare", @@ -4773,7 +4773,7 @@ "inactive": "Inactiv", "noConnectionId": "fără id conexiune", "accountModelSummary": "{connectionId} · {count} modele", - "cooldown": "cooldown", + "cooldown": "perioadă de așteptare", "durationRemaining": "{duration} rămase", "noSyncedModelsOrTraffic": "Nu există încă modele sincronizate sau trafic recent.", "providerRowSummary": "{active}/{total} conturi active · {requests} req · {successRate} succes · {latency} medie", @@ -4802,7 +4802,7 @@ "partialData": "Telemetria este parțial disponibilă: {error}" }, "mitm": { - "title": "MITM Proxy", + "title": "Proxy MITM", "description": "Proxy transparent pentru interceptarea și rutarea cererilor clienților.", "enable": "Activați MITM Proxy", "enableDesc": "Porniți sau opriți procesul local de interceptare și anularea DNS.", @@ -4888,28 +4888,28 @@ "previous": "Anterior", "next": "În continuare", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Vezi detaliile", + "eventMetadata": "Metadatele evenimentului", + "eventPayload": "Conținutul evenimentului", + "requestId": "ID-ul cererii", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "Decalaj", + "limit": "Limită", + "status": "Stare", + "resourceType": "Tipul resursei", + "totalEntries": "Total intrări", + "tab": "Filă", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Închide", + "runningRequests": "Cereri active", + "runningRequestsDesc": "Vizualizare în timp real a cererilor upstream care rulează în prezent", "clearAll": "Ștergeți tot", "confirmClearActiveRequests": "Ștergeți toate solicitările active?", "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "provider": "Furnizor", + "account": "Cont", + "elapsed": "Timp scurs", "activeStage": "Etapă", "activeStageUnknown": "Netrimis încă la upstream", "activeStageRegistered": "Înregistrat", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Slotul limitatorului de rată a fost obținut", "activeStageSendingToProvider": "Se trimite la upstream", "activeStageProviderResponseStarted": "Răspunsul de la upstream a început", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", + "count": "Număr", + "payloads": "Sarcini utile", + "viewPayloads": "Vizualizare", "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "clientPayload": "Sarcina utilă a cererii clientului", + "upstreamPayload": "Sarcina utilă pentru furnizorul din amonte", + "upstreamNotSentYet": "Nu a fost trimis încă în amonte", + "runningRequestDetailMeta": "Cont: {account} — Timp scurs: {elapsed}", + "export": "Exportă", + "exporting": "Se exportă...", + "exportFailed": "Exportul a eșuat", "cleanHistoryButton": "Curăță istoricul", "cleanHistoryTitle": "Curățați istoricul jurnalelor?", "cleanHistoryMessage": "Această acțiune șterge definitiv toate rândurile de jurnal de solicitări, rândurile de detalii moștenite și fișierele de artefacte locale din DATA_DIR/call_logs. Pagina live se va reîmprospăta după curățare.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Au fost curățate {deleted} intrări de jurnal, {deletedArtifacts} artefacte și {deletedDetailedLogs} rânduri de detalii moștenite.", "cleanHistoryEmpty": "Nu s-a găsit niciun istoric al logurilor de cereri.", "cleanHistoryFailed": "Curățarea istoricului logurilor a eșuat.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Interval de timp", + "lastNHours": "Ultimele {hours}", + "defaultRange": "implicit", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Preluarea jurnalelor a eșuat", + "copyFailed": "Copierea înregistrării din jurnal a eșuat", + "copyLogEntry": "Copiază înregistrarea din jurnal", "filterByLevel": "Filtrează după nivelul logului", "searchPlaceholder": "Caută în loguri…", "searchAria": "Caută în intrările din log", @@ -4987,9 +4987,9 @@ "multiProvider": "Multi-furnizor", "usageTracking": "Urmărirea utilizării", "securityDesc": "Setați o parolă pentru a vă proteja tabloul de bord sau omiteți pentru moment.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Fără o parolă, nu veți putea adăuga furnizori în timpul configurării. Îi puteți adăuga ulterior din panoul de control, după setarea unei parole.", "providerDesc": "Conectați-vă primul furnizor de AI. Puteți adăuga mai multe mai târziu.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Pentru a adăuga furnizori, trebuie mai întâi să setați o parolă. Reveniți la pasul de securitate și setați o parolă sau adăugați furnizorii ulterior din panoul de control.", "apiKeyRequired": "Cheie API (obligatorie)", "customUrlOptional": "Adresă URL personalizată (opțional)", "testDesc": "Să verificăm că conexiunea la furnizor funcționează.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Se importă…", "importFromFileImport": "Importă {count} furnizori", "importFromFileResult": "S-au importat {success} furnizori ({failed} eșuați)", + "importFromFileDownloadTemplate": "Descarcă șablonul CSV", + "importFromFileMoreErrors": "încă +{count}", + "importFromFileSchemaHint": "Coloanele CSV sunt poziționale: provider, name, apiKey, baseUrl (opțional), priority (opțional). Coloana provider trebuie să conțină ID-ul unui furnizor gestionat existent sau ID-ul unui nod compatibil OpenAI/Anthropic deja înregistrat — acest import nu creează noduri endpoint noi.", "adaptaTutorial": { "title": "Cum se conectează Adapta Web", "introPrefix": "Adapta se autentifică prin Clerk. Tokenul", @@ -5115,7 +5118,7 @@ "testSuccess": "Conexiune reușită", "testFailed": "Conexiunea a eșuat", "available": "Disponibil", - "cooldown": "Cooldown", + "cooldown": "Perioadă de așteptare", "unavailable": "Indisponibil", "unknown": "Necunoscut", "oauthLabel": "OAuth", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} ascunse", "warningCount": "{count} Avertisment", "noConnections": "Fără conexiuni", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Expirat", + "expiringSoonBadge": "Expiră în curând", "freeTier": "Nivel gratuit", "freeTierAvailable": "Nivel gratuit disponibil", "hasFreeTooltip": "Nivel gratuit disponibil", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Acest furnizor a fost retras", "riskNotice": { "title": "Înainte de a continua", - "detailsTitle": "Usage caveats", + "detailsTitle": "Avertismente privind utilizarea", "tooltip": "Furnizor cu avertismente de utilizare — faceți clic pentru detalii", "oauth": "Acest furnizor utilizează sesiunea oficială a produsului/OAuth, care nu este autorizată pentru utilizarea ca proxy/router. Nu recomandăm utilizarea intensivă a agenților autonomi (stil OpenCloud, fluxuri lungi cu mai mulți pași, loturi mari) — upstream-ul poate reacționa prin restricționarea sau blocarea contului. Utilizați pe propriul risc.", "webCookie": "Acest furnizor se autentifică prin cookie-urile sesiunii web. Serviciul upstream poate invalida sesiunea în orice moment, solicitându-vă să vă autentificați din nou. Nu este recomandat pentru operațiuni lungi nesupravegheate. Utilizați pe propriul risc.", @@ -5188,9 +5191,9 @@ "cancel": "Anulează" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} conexiune/conexiuni marcate — până la {maxFailures} eșecuri recente{lastFailureSuffix}. Faceți clic pentru a vedea starea conexiunilor.", + "lastFailureSuffix": "(ultimul eșec {time})", + "ariaLabel": "Vedeți detaliile despre starea conexiunilor, {count} avertisment(e)" }, "disabled": "Dezactivat", "enableProvider": "Activați furnizorul", @@ -5225,7 +5228,7 @@ "failedCreate": "Nu s-a putut crea furnizorul", "errorOccurred": "A apărut o eroare. Vă rugăm să încercați din nou.", "modelStatus": "Stare model", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Doar configurate", "allModelsOperational": "Toate modelele sunt operaționale", "modelsWithIssues": "{count} model(e) cu probleme", "allModelsNormal": "Toate modelele răspund normal.", @@ -5236,7 +5239,7 @@ "clearing": "Se șterge...", "until": "Până la {time}", "providerTestFailed": "Testul furnizorului a eșuat", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Testarea furnizorului a expirat — prea multe conexiuni de testat simultan", "modeTest": "{mode} Test", "passedCount": "{count} a trecut", "failedCount": "{count} a eșuat", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL pictogramă", "iconUrlHint": "Opțional. URL-ul imaginii afișate ca pictogramă a acestui furnizor.", "iconUrlInvalid": "URL-ul iconului este invalid. Folosiți un URL http(s):// sau data:image/*;base64.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Fusul orar pentru resetarea cotei zilnice", + "dailyQuotaResetTimezoneHint": "Fus orar IANA opțional, utilizat când serviciul din amonte omite X-RateLimit-Reset. Lăsați necompletat pentru a păstra o perioadă scurtă de așteptare.", + "dailyQuotaResetHourLabel": "Ora de resetare a cotei zilnice", + "dailyQuotaResetHourHint": "Ora locală 0-23 în fusul orar de mai sus. Dacă este necompletat, nu se utilizează niciun ceas la nivel de nod.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Furnizorul nu a fost găsit", "deleteConnectionConfirm": "Ștergeți această conexiune?", "deleteConnectionConfirmNamed": "Sigur doriți să ștergeți {name}? Această acțiune nu poate fi anulată.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Șterge selecția ({count})", + "batchDeleteConfirm": "Ștergeți {count} conexiune/conexiuni? Această acțiune nu poate fi anulată.", + "batchDeleteSuccess": "S-au șters {count} conexiuni", "batchActivateSelected": "Activează", "batchDeactivateSelected": "Dezactivează", "batchRetestSelected": "Retestează", @@ -5292,7 +5295,7 @@ "filterError": "Eroare", "filterBanned": "Blocat", "filterCreditsExhausted": "Credite epuizate", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Caută conturi…", "noFilteredConnections": "Nicio conexiune nu corespunde filtrului curent.", "failedSetAlias": "Nu s-a putut seta aliasul", "setAliasSuccess": "Aliasul {alias} a fost setat", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "Detalii compatibile cu OpenAI", "messagesApi": "Messages API", "responsesApi": "API de răspunsuri", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Încorporări", + "audioTranscriptions": "Transcrieri audio", + "audioSpeech": "Sinteză vocală", + "imagesGenerations": "Generări de imagini", "chatCompletions": "Finalizări de chat", "importingModels": "Se importă...", "importFromModels": "Import din /modele", - "modelsImported": "{count} models imported", + "modelsImported": "{count} modele importate", "allModelsAlreadyImported": "Toate modelele sunt deja importate", "noNewModelsToImport": "Niciun model nou de importat — toate modelele sunt deja în registru sau în lista de modele personalizate", "skippingExistingModels": "Se omit {count} modele existente", @@ -5350,13 +5353,13 @@ "importFailed": "Importul nu a reușit", "noNewModelsAdded": "Nu au fost adăugate modele noi.", "adding": "Se adaugă...", - "close": "Close", + "close": "Închide", "importingModelsTitle": "Importul modelelor", "copyModel": "Copiați modelul", "filterModels": "Filtrează modelele…", "testAllRateLimited": "Limita de rată a fost atinsă, s-a oprit prematur", "hideFailedAuto": "Ascunde automat modelele eșuate", - "selectAllModels": "Select all", + "selectAllModels": "Selectează tot", "hideAllModels": "Ascunde tot", "modelsActive": "active", "showModel": "Afișează modelul", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "O cheie pe linie. Format: nume|apiKey sau doar apiKey (numit automat după index).", "bulkValidateKeys": "Validați fiecare cheie înainte de a salva (mai lent)", "bulkAddAllKeys": "Adăugați toate cheile", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# cheie adăugată} other {# chei adăugate}}", + "bulkFailedCount": "{count, plural, one {# eșuată} other {# eșuate}}", "optional": "Opțional", "anthropicCompatibleName": "Compatibil antropic", "openaiCompatibleName": "Compatibil cu OpenAI", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "A apărut o eroare neașteptată", "getApiKey": "Obține cheia API", "getApiKeyDescription": "Înregistrează-te sau înscrie-te pentru o cheie API", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# conexiune} other {# conexiuni}}", "messagesPath": "mesaje", "responsesPath": "răspunsuri", "chatCompletionsPath": "chat/completari", @@ -5419,17 +5422,17 @@ "configured": "configurat", "providerProxyConfigureHint": "Configurați proxy pentru toate conexiunile acestui furnizor", "providerProxy": "Proxy de furnizor", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Repară .env", + "repairEnvWorking": "Se repară...", + "repairEnvHint": "Restaurează valorile OAuth implicite lipsă în .env fără a suprascrie valorile existente.", + "repairEnvSuccess": "Valorile OAuth implicite au fost restaurate", + "repairEnvFailed": "Repararea fișierului .env a eșuat", "noConnectionsYet": "Încă nu există conexiuni", "addFirstConnectionHint": "Adăugați prima conexiune pentru a începe", "addConnection": "Adăugați o conexiune", "availableModels": "Modele disponibile", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Modele încorporate", + "builtInModelsHint": "Modele din registru pentru acest furnizor. Folosește creionul pentru a seta opțiunile de compatibilitate.", "pageAutoRefresh": "Pagina se va reîmprospăta automat...", "statusDisabled": "dezactivat", "statusConnected": "conectat", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Re-autentificați această conexiune", "proxyConfig": "Configurare proxy", "aliasExistsAlert": "Aliasul „{alias}” există deja. Vă rugăm să utilizați un alt model sau să editați alias-ul existent.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "numele aliasului", + "clickToSetAlias": "Fă clic pentru a seta aliasul", + "clickToEditAlias": "Alias: {alias} (fă clic pentru a edita)", "openRouterAnyModelHint": "OpenRouter acceptă orice model. Adăugați modele și creați aliasuri pentru acces rapid.", "modelIdFromOpenRouter": "ID model (de la OpenRouter)", "openRouterModelPlaceholder": "antropic/claude-3-opus", "customModels": "Modele personalizate", "customModelsHint": "Adăugați ID-uri de model care nu sunt în lista implicită. Acestea vor fi disponibile pentru rutare.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normalizează ID-urile apelurilor de instrumente la 9 caractere (de ex., Mistral)", + "preserveDeveloperRoleLabel": "Păstrează rolul de dezvoltator din OpenAI Responses (nu îl mapa la sistem)", + "compatAdjustmentsTitle": "Compatibilitate", + "compatButtonLabel": "Compatibilitate", + "compatToolIdShort": "ID instrument 9", + "compatDeveloperShort": "Rol de dezvoltator", + "compatDoNotPreserveDeveloper": "Nu păstra rolul de dezvoltator", + "compatBadgeNoPreserve": "Nu păstra", + "compatProtocolLabel": "Protocolul solicitării clientului", + "compatProtocolHint": "Aceste opțiuni se aplică atunci când OmniRoute detectează acest format de solicitare (OpenAI Chat, Responses API sau Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Rescrie apelurile native de instrument web_fetch către /v1/web/fetch al OmniRoute.", "interceptionLoadError": "Nu s-au putut încărca setările de interceptare: {error}", "interceptionSaveError": "Nu s-au putut salva setările de interceptare: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Expune în Claude Code (claude/…)", + "ccAliasSectionHint": "Publică modelele acestui furnizor sub ID-uri oglindă claude/<provider>/<model>, astfel încât descoperirea modelelor prin gateway-ul Claude Code să le poată lista. Opțiunea este dezactivată implicit — activarea ei dublează intrările din catalog pentru toți clienții.", + "ccAliasProviderLevelLabel": "Valoarea implicită a furnizorului", + "ccAliasModelOverridesLabel": "Suprascrieri per model", + "ccAliasModelOverrideAriaLabel": "Suprascriere pentru {modelId}", + "ccAliasStateInherit": "Moștenește", + "ccAliasStateOn": "Activat", + "ccAliasStateOff": "Dezactivat", + "ccAliasAddModelPlaceholder": "ID-ul modelului (de ex. gpt-4o)", + "ccAliasAddModelButton": "Adaugă o suprascriere", + "ccAliasLoadError": "Încărcarea setărilor pentru aliasurile de descoperire a eșuat: {error}", + "ccAliasSaveError": "Salvarea setării pentru aliasul de descoperire a eșuat: {error}", + "compatUpstreamHeadersLabel": "Antete upstream suplimentare", + "compatUpstreamHeadersHint": "Setare cu privilegii ridicate — are același nivel de încredere ca editarea credențialelor API ale furnizorului; trebuie utilizată numai de administratori de încredere. Se îmbină după ce OmniRoute adaugă autentificarea din cheia API a furnizorului. Dacă un antet personalizat folosește același nume ca unul existent (de ex. Authorization), valoarea dvs. înlocuiește complet antetul generat automat (inclusiv tokenul Bearer) — serviciul upstream vede numai ceea ce ați introdus, nu cheia din setări. Configurarea incorectă poate cauza eroarea 401 sau poate întrerupe autentificarea upstream. Câte un rând pentru fiecare antet (de ex. autentificare suplimentară pentru anumite gateway-uri). Plasați cursorul deasupra valorii sau focalizați-o pentru previzualizare. Se salvează la pierderea focalizării, la un clic în exterior sau la închiderea acestui panou.", + "compatUpstreamHeaderName": "Numele antetului", + "compatUpstreamHeaderValue": "Valoare", + "compatUpstreamAddRow": "Adaugă antet", + "compatUpstreamRemoveRow": "Elimină rândul", + "compatBadgeUpstreamHeaders": "Antete", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Importă doar modelele gratuite", @@ -5580,7 +5583,7 @@ "checking": "Se verifică...", "check": "Verificați", "valid": "Valabil", - "invalid": "Invalid", + "invalid": "Nevalid", "creating": "Se creează...", "validationChecksAnthropicCompatible": "Validarea verifică {provider} prin verificarea cheii API.", "validationChecksOpenAiCompatible": "Verificări de validare {provider} prin /models pe adresa URL de bază.", @@ -5592,26 +5595,26 @@ "email": "E-mail", "healthCheckMinutes": "Verificare de sănătate (min)", "healthCheckHint": "Interval proactiv de reîmprospătare a simbolului. 0 = dezactivat.", - "deselectAllModels": "Deselect all", + "deselectAllModels": "Deselectează tot", "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "noModelsMatch": "Niciun model nu corespunde filtrului „{filter}”", + "groupLabel": "Mediu", + "groupPlaceholder": "de ex. eKaizen, Personal", "failedTestConnection": "Nu s-a testat conexiunea", "failed": "A eșuat", "leaveBlankKeepCurrentApiKey": "Lăsați necompletat pentru a păstra cheia API curentă.", "editCompatibleTitle": "Editați {type} Compatibil", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "URL-ul rădăcină al API-ului dvs. compatibil cu {type}. Utilizați Setări avansate pentru căi personalizate ale endpointurilor.", "apiKeyForCheck": "Cheie API (pentru verificare)", "testModelIdLabel": "ID model (opțional)", "testModelIdPlaceholder": "de ex. my-model-id", "testModelIdHint": "Dacă furnizorul nu are un endpoint /models, introduceți un ID de model pentru a-l valida prin /chat/completions în schimb.", "compatibleProdPlaceholder": "{type} Compatibil (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Tokenul a fost reîmprospătat cu succes", + "tokenRefreshFailed": "Reîmprospătarea tokenului a eșuat", "cursorSessionUnchanged": "Sesiune deja curentă", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Aplică autentificarea", + "exportCodexAuthFile": "Exportă autentificarea", "applyClaudeAuthLocal": "Aplicați autentificare", "exportClaudeAuthFile": "Export aut", "importClaudeAuth": "Autentificare import", @@ -5626,7 +5629,7 @@ "claudeAuthApplyFailed": "Nu s-a aplicat local auth Claude", "claudeAuthExported": "Fișierul de autentificare Claude a fost exportat", "claudeAuthExportFailed": "Nu s-a putut exporta fișierul de autentificare Claude", - "claudeImportModalTitle": "Import Claude Auth", + "claudeImportModalTitle": "Importă autentificarea Claude", "claudeImportTabSingle": "singur", "claudeImportTabBulk": "În vrac", "claudeImportTabUpload": "Încărcați fișierul", @@ -5636,7 +5639,7 @@ "claudeImportEmailLabel": "E-mailul contului", "claudeImportNameLabel": "Numele conexiunii (opțional)", "claudeImportOverwriteLabel": "Înlocuiți conexiunea existentă dacă contul există deja", - "claudeImportSubmit": "Import", + "claudeImportSubmit": "Importă", "claudeImportSuccess": "Conexiunea Claude a fost importată cu succes", "claudeImportInvalidJson": "Nu s-a putut analiza fișierul ca JSON", "claudeImportInvalidShape": "Fișierul nu este un .credentials.json valid", @@ -5658,7 +5661,7 @@ "geminiAuthApplyFailed": "Nu s-a aplicat local aut Gemini", "geminiAuthExported": "Fișierul de autentificare Gemini a fost exportat", "geminiAuthExportFailed": "Nu s-a putut exporta fișierul de autentificare Gemini", - "geminiImportModalTitle": "Import Gemini Auth", + "geminiImportModalTitle": "Importă autentificarea Gemini", "geminiImportTabSingle": "singur", "geminiImportTabBulk": "În vrac", "geminiImportTabUpload": "Încărcați fișierul", @@ -5668,7 +5671,7 @@ "geminiImportEmailLabel": "E-mailul contului", "geminiImportNameLabel": "Numele conexiunii (opțional)", "geminiImportOverwriteLabel": "Înlocuiți conexiunea existentă dacă contul există deja", - "geminiImportSubmit": "Import", + "geminiImportSubmit": "Importă", "geminiImportSuccess": "Conexiunea Gemeni a fost importată cu succes", "geminiImportInvalidJson": "Nu s-a putut analiza fișierul ca JSON", "geminiImportInvalidShape": "Fișierul nu este un oauth_creds.json valid", @@ -5704,7 +5707,7 @@ "codexExternalLinkConnected": "Contul Codex a fost conectat prin intermediul linkului extern.", "codexExternalLinkExpired": "Linkul a expirat înainte de finalizare.", "importCodexAuth": "Autentificare import", - "codexImportModalTitle": "Import Codex Auth", + "codexImportModalTitle": "Importă autentificarea Codex", "codexImportTabSingle": "singur", "codexImportTabBulk": "În vrac", "codexImportTabUpload": "Încărcați fișierul", @@ -5716,7 +5719,7 @@ "codexImportEmailHint": "Detectat automat din fișier; editați dacă este necesar.", "codexImportNameLabel": "Numele conexiunii (opțional)", "codexImportOverwriteLabel": "Înlocuiți conexiunea existentă dacă contul există deja", - "codexImportSubmit": "Import", + "codexImportSubmit": "Importă", "codexImportSuccess": "Conexiunea Codex a fost importată cu succes", "codexImportInvalidJson": "Nu s-a putut analiza fișierul ca JSON", "codexImportInvalidShape": "Fișierul nu este un Codex auth.json valid", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} a eșuat", "codexImportBulkZipExtracting": "Se extrage ZIP...", "codexImportBulkZipError": "Nu s-a extras ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Setări avansate", + "chatPathLabel": "Calea endpointului de chat", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Cale personalizată pentru chat în cazul furnizorilor cu API-uri nestandard (de ex. /v4/chat/completions)", + "modelsPathLabel": "Calea endpointului pentru modele", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Cale personalizată pentru modele, utilizată la validare (de ex. /v4/models)", "clientIdentityLabel": "Identitate client", "clientIdentityHint": "Opțional. Adaugă antete de amprentă ale clientului (de ex. User-Agent) care se potrivesc cu un CLI cunoscut pentru gateway-urile compatibile care se așteaptă la unul.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Dezactivat (manual)", + "statusBanned": "Interzis / Încălcare în sandbox", + "statusCreditsExhausted": "Sold insuficient / Cotă epuizată", + "showEmails": "Afișează toate adresele de e-mail", + "hideEmails": "Ascunde toate adresele de e-mail", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Adaugă o altă cheie API sau lipește mai multe chei", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "aggregatorsGateways": "Agregatoare și gateway-uri", + "enterpriseCloud": "Companii și cloud", + "apiFormatLabel": "Etichetă pentru formatul API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", + "apiRegionChina": "Regiune API: China", + "apiRegionHint": "Indiciu pentru regiunea API", + "apiRegionInternational": "Regiune API: internațională", + "apiRegionLabel": "Etichetă pentru regiunea API", + "apikey": "Cheie API", "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "audioProvidersHeading": "Titlu pentru furnizorii audio", "cloudAgentProviders": "Furnizori de agenți cloud", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Etichetă scurtă pentru audio", + "azureOpenAiBaseUrlHint": "Indiciu pentru URL-ul de bază Azure Open Ai", + "bailianBaseUrlHint": "Indiciu pentru URL-ul de bază Bailian", + "claudeWebCookieHint": "Deschide claude.ai → DevTools → Application → Cookies → claude.ai și copiază valoarea 'sessionKey'. Sunt necesare și cf_clearance, __cf_bm, _cfuvid pentru Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Indiciu pentru cookie-ul Blackbox Web", + "blackboxWebCookiePlaceholder": "Substituent pentru cookie-ul Blackbox Web", "t3ChatWebCookieHint": "Deschideți t3.chat → DevTools → Aplicație → Stocare locală → https://t3.chat, copiați „convex-session-id”. Apoi deschideți DevTools → Network, copiați antetul complet Cookie din orice solicitare de chat. Lipiți ambele valori în câmpurile de mai jos.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Indiciu pentru cookie-ul Grok Web", "blockClaudeExtraUsageDescription": "Când este activat, OmniRoute marchează această conexiune Claude ca fiind indisponibilă imediat ce API-ul de utilizare raportează utilizare suplimentară în așteptare, astfel încât fallback-ul să comute pe o altă conexiune în loc să continue cu facturarea suplimentară pe bază de plată pe măsură ce se utilizează.", "blockClaudeExtraUsageLabel": "Blochează utilizarea suplimentară a lui Claude", "disableCoolingDescription": "Omite perioada de răcire tranzitorie, astfel încât această conexiune să rămână eligibilă chiar și după erori recuperabile (stările terminale precum blocat/expirat se aplică în continuare).", "disableCoolingLabel": "Dezactivează perioada de răcire pentru această conexiune", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 cheie adăugată} other {# chei adăugate}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicat omis} other {# duplicate omise}}", + "bulkPasteHint": "Lipește câte o cheie API pe fiecare rând. Rândurile goale sunt ignorate, iar cheile duplicate sunt omise.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Adaugă antetul beta redact-thinking pentru upstream-urile CC Compatible care necesită fluxuri de raționament Claude ascunse.", + "ccCompatibleRedactThinkingLabel": "Activează versiunea beta redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Adaugă `display: \"summarized\"` la solicitările de raționament CC Compatible, astfel încât modelele Claude compatibile să transmită în flux actualizări vizibile ale raționamentului.", + "ccCompatibleSummarizeThinkingLabel": "Activează afișarea rezumată a raționamentului", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Folosește nivelul de serviciu prioritar pentru solicitările Codex, atunci când este disponibil.", + "codexFastServiceTierLabel": "Nivel de serviciu rapid Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Substituent pentru numele antetului upstream compatibil", + "compatUpstreamHeaderValuePlaceholder": "Substituent pentru valoarea antetului upstream compatibil", + "compatible": "Compatibil", + "configuredCount": "Număr de elemente configurate", + "consoleApiKeyOracleHint": "Indiciu pentru cheia API a consolei Oracle", + "consoleApiKeyOracleLabel": "Etichetă pentru cheia API a consolei Oracle", + "consoleApiKeyOraclePlaceholder": "Substituent pentru cheia API a consolei Oracle", + "newApiUserIdLabel": "ID utilizator New-API", + "newApiUserIdPlaceholder": "de ex., 12345", + "newApiUserIdHint": "Valoarea antetului AgentRouter New-Api-User, utilizată împreună cu cheia API a consolei pentru a prelua soldul cotei.", "newApiAggregatorToggleLabel": "Gateway-ul Agregator", "newApiAggregatorToggleHint": "Activați detectarea soldului pentru nodurile agregator New-API / One-API / Sub2API. Panoul de control va afișa insigna soldului, iar rutarea quota-preflight va sări peste conturile epuizate.", "newApiAggregatorConsoleApiKeyHint": "Token de acces al sistem pentru endpoint-ul /api/user/self al agregatorului. Nu cheia API de rutare.", @@ -5830,53 +5833,53 @@ "featureFlagNewApiAggregatorBalanceDescription": "Activați detectarea soldului pentru nodurile compatibile cu New-API / One-API / Sub2API agregator.", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Sugestie pentru agentul utilizator personalizat", + "customUserAgentLabel": "Etichetă pentru agentul utilizator personalizat", + "databricksBaseUrlHint": "Sugestie pentru URL-ul de bază Databricks", + "defaultThinkingStrengthHint": "Utilizat atunci când o solicitare nu specifică efortul de raționament.", + "defaultThinkingStrengthLabel": "Intensitatea implicită a gândirii", + "deleteAllExtraApiKeys": "Șterge tot", + "excludedModelsHint": "Sugestie pentru modelele excluse", + "excludedModelsLabel": "Etichetă pentru modelele excluse", + "excludedModelsPlaceholder": "Substituent pentru modelele excluse", + "expirationBannerExpired": "Banner de expirare: expirat", + "expirationBannerExpiredDesc": "Descrierea bannerului de expirare: expirat", + "expirationBannerExpiringSoon": "Banner de expirare: expiră în curând", + "expirationBannerExpiringSoonDesc": "Descrierea bannerului de expirare: expiră în curând", + "extraApiKeyMasked": "Cheia {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Sugestie pentru cheile API suplimentare", + "extraApiKeysLabel": "Etichetă pentru cheile API suplimentare", + "apiKeyHealthLabel": "Starea cheilor API", + "apiKeyStatusActive": "Activă", + "apiKeyStatusWarning": "Avertisment ({count} eșecuri)", + "apiKeyStatusInvalid": "Nevalidă", + "primaryKey": "Cheie principală", + "apiKeyInvalidAlert": "{count} cheie/chei API a/au fost marcate ca nevalide din cauza eșecurilor de autentificare în conexiunile: {connections}. Acestea vor fi omise din rotație. Faceți clic pentru a le examina.", + "apiKeyInvalidAlertTitle": "Alertă privind starea cheilor API", + "apiKeyWarningAlert": "{count} cheie/chei API se află în stare de avertizare din cauza ratei ridicate de eșec în conexiunile: {connections}. Examinați-le pentru a preveni problemele de rotație.", + "apiKeyWarningAlertTitle": "Avertisment privind cheia API", + "googlePseInfo": "Informații Google Pse", "antigravityProjectIdHint": "Suprascriere opțională pentru solicitările Codului Antigravity Cloud. Lăsați necompletat pentru a utiliza proiectul descoperit în timpul Google OAuth.", "antigravityClientProfileLabel": "Profil client", "antigravityClientProfileHint": "Alegeți ce identitate de client Antigravity prezintă OmniRoute către API.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Nivelul Codex Fast este activ", - "tierFast": "Fast", + "tierFast": "Rapid", "antigravityProjectIdLabel": "ID-ul proiectului Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Substituent pentru modulul cookie web Grok", + "herokuBaseUrlHint": "Sugestie pentru URL-ul de bază Heroku", + "hideEmail": "Ascunde adresa de e-mail", + "imageProviders": "Furnizori de imagini", "videoProviders": "Generare video", - "embeddingRerankProviders": "Embeddings & Rerank", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "embeddingRerankProviders": "Încorporări și reclasificare", + "imagesShortLabel": "Etichetă scurtă pentru imagini", + "llmProviders": "Furnizori LLM", + "localProviderApiKeyOptionalHint": "Sugestie pentru cheia API opțională a furnizorului local", + "localProviderBaseUrlHint": "Sugestie pentru URL-ul de bază al furnizorului local", + "localProviders": "Furnizori locali", + "maxConcurrentWholeNumberError": "Eroare privind numărul întreg maxim de solicitări simultane", "m365TierLabel": "Nivel Copilot", "m365TierHint": "Alegeți ce interfață Microsoft 365 Copilot utilizează această conexiune. Individual este BizChat-ul implicit pentru consumatori; Education și Enterprise (lucru) optează pentru interfețele din tenantul lor.", "m365TierIndividualOption": "Individual (implicit)", @@ -5888,26 +5891,26 @@ "tierOverrideCheap": "Ieftin", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Fixați acest furnizor la un nivel de rutare în loc să lăsați OmniRoute să îl deducă din prețul modelului.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Indiciu privind cookie-ul web Muse Spark", + "museSparkWebCookiePlaceholder": "Substituent pentru cookie-ul web Muse Spark", + "oauth": "OAuth", + "openCliTools": "Deschide instrumentele CLI", + "openSettings": "Deschide setările", + "openaiResponsesStoreDescription": "Permite solicitărilor compatibile cu Responses API să păstreze starea răspunsului stocat.", + "openaiResponsesStoreLabel": "Stocare OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Informații despre cheia partajată Perplexity Search", + "perplexityWebCookieHint": "Indiciu privind cookie-ul web Perplexity", + "perplexityWebCookiePlaceholder": "Substituent pentru cookie-ul web Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Suprascrieri ale limitelor de rată", "rateLimitOverridesMaxConcurrentHint": "Suprascrierea numărului maxim de solicitări concurente pentru această conexiune. Suprascrie limita la nivel de cont.", "rateLimitOverridesMaxConcurrentLabel": "Maxim concurente (Limită de rată)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Timpul maxim (ms) în care o solicitare poate aștepta un loc disponibil în limita de rată înainte de a eșua. Suprascrie setarea globală de reziliență numai pentru această conexiune.", + "rateLimitOverridesMaxWaitMsLabel": "Timp maxim de așteptare în coadă (ms)", "rateLimitOverridesMinTimeHint": "Timpul minim (ms) între solicitări. Suprascrie întârzierea implicită a limitatorului de rată.", - "rateLimitOverridesMinTimeLabel": "Min Interval (ms)", + "rateLimitOverridesMinTimeLabel": "Interval minim (ms)", "rateLimitOverridesRpdHint": "Numărul maxim de cereri pe zi pentru această conexiune. Suprascrie valoarea implicită a furnizorului.", "rateLimitOverridesRpdLabel": "RPD (Cereri/zi)", "rateLimitOverridesRpmHint": "Numărul maxim de solicitări pe minut pentru această conexiune. Suprascrie valoarea implicită a furnizorului.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Tokenuri/zi)", "rateLimitOverridesTpmHint": "Numărul maxim de tokenuri pe minut pentru această conexiune. Suprascrie valoarea implicită a furnizorului.", "rateLimitOverridesTpmLabel": "TPM (Tokenuri/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Reîmprospătează tokenul OAuth", + "regionHint": "Indiciu privind regiunea", + "regionLabel": "Regiune", + "removeThisKey": "Elimină această cheie", + "routingTagsHint": "Indiciu privind etichetele de rutare", + "routingTagsLabel": "Etichete de rutare", + "routingTagsPlaceholder": "Substituent pentru etichetele de rutare", + "search": "Căutare", + "searchEngineIdHint": "Indiciu privind ID-ul motorului de căutare", + "searchEngineIdLabel": "ID-ul motorului de căutare", + "searchEngineIdRequired": "ID-ul motorului de căutare este obligatoriu", + "searchProvider": "Furnizor de căutare", + "searchProviderDesc": "Descrierea furnizorului de căutare", "searchProviders": "Căutați furnizori...", "searchByModel": "Căutare după model…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Furnizori de căutare", + "searxngBaseUrlHint": "Indiciu privind URL-ul de bază Searxng", + "searxngInfo": "Informații despre Searxng", + "sessionCookieLabel": "Cookie de sesiune", + "showEmail": "Afișează adresa de e-mail", + "snowflakeBaseUrlHint": "Indiciu privind URL-ul de bază Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Indiciu privind grupul de etichete", + "tagGroupLabel": "Grup de etichete", + "tagGroupPlaceholder": "Substituent pentru grupul de etichete", + "testModel": "Testează modelul", + "testingModel": "Se testează modelul", "modelTestQuotaTooltip": "Cota epuizată — se resetează mâine sau necesită o reîncărcare", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Insignă pentru token expirat", + "tokenExpiredTitle": "Titlu pentru token expirat", + "tokenExpiresSoonTitle": "Titlu pentru token care expiră în curând", + "tokenShort": "Token scurt", + "totalKeysRotating": "{count, plural, one {1 cheie în rotație} other {# chei în rotație}}", + "unhideModel": "Afișează modelul", + "upstreamProxyProviders": "Furnizori proxy upstream", "validationModelIdHint": "Modelul utilizat pentru a verifica cheia API. Lăsați necompletat pentru a utiliza primul model disponibil al furnizorului.", "validationModelIdLabel": "Model de validare", "validationModelIdPlaceholder": "de ex. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Lipește JSON-ul contului de serviciu ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) sau un OAuth access_token", + "webCookieProviders": "Furnizori de cookie-uri web", + "weeklyShort": "Săpt.", + "xiaomiMimoBaseUrlHint": "Indiciu pentru URL-ul de bază Xiaomi Mimo", "globalCodexServiceMode": "Mod serviciu Codex global", "connect": "Conectare", "manualApiKey": "Cheie API manuală", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Descoperă acreditările furnizorilor de IA (OpenAI, Anthropic, Google, Mistral, xAI) stocate de Zed IDE în keychain-ul sistemului de operare și le importă ca conexiuni. Zed IDE trebuie să fie instalat pe acest computer.", "zedImportButton": "Importă din Zed", "zedImportFailed": "Importul Zed a eșuat", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Indiciu pentru importul Zed", + "zedImportNetworkError": "Eroare de rețea la importul Zed", + "zedImportNone": "Niciun import Zed", "zedImportSuccess": "Importate {credentials} credential(e) din Zed pentru {providers} furnizor(i)", "zedImporting": "Importare…", "zedNoCredentials": "Nu s-au găsit acreditări Zed în keychain", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Proxy API cu reducere pentru peste 40 de modele, inclusiv GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Obțineți cheia API la https://freeaiapikey.com/dashboard. URL de bază: https://freeaiapikey.com/v1.", "freemodel-dev": "Obțineți $300 credite API gratuite la https://freemodel.dev — nu sunt necesare informații de plată. Endpoint compatibil cu OpenAI. Modele GPT-5.4 și GPT-5.5 disponibile.", "friendliai": "Nivel gratuit pentru inferență serverless — nu este necesar card de credit", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Nivel gratuit prin Google AI Studio; cotele per model nu mai sunt publicate (consultă pagina de cote din AI Studio) — fără card de credit.", "gigachat": "Conectați GigaChat (Sber) cu o cheie API.", "gitlab": "Token de acces personal GitLab pentru API-ul public Code Suggestions. Configurați un URL de bază self-hosted când nu utilizați gitlab.com.", "gitlawb-gmi": "Obțineți cheia API din tabloul de bord Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Conectați GLM Coding (China) cu o cheie API.", "glmt": "Profil GLM prestabilit cu un buget de tokenuri mai mare, gândire activată și timeout mai lung.", "getgoapi": "Conectați GoAPI cu o cheie API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Plan gratuit: limite per model (200K tokenuri/zi pentru fiecare model de chat; consultă console.groq.com/docs/rate-limits pentru RPM/RPD) — nicio metodă de plată înregistrată.", "haiper": "Obțineți cheia API la haiper.ai/haiper-api", "heroku": "Conectați Heroku AI cu o cheie API.", "hcnsec": "Obțineți cheia API la api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Creează o cheie API la https://app.requesty.ai, apoi lipește-o aici ca token Bearer. Endpoint compatibil cu OpenAI la https://router.requesty.ai/v1, cu un catalog /v1/models live.", "runwayml": "Generarea video Runway este bazată pe sarcini. OmniRoute trimite lucrări text-to-video sau image-to-video, interoghează periodic /v1/tasks/[id] și normalizează ieșirile video finalizate înapoi în răspunsul de tip OpenAI /v1/videos/generations.", "sambanova": "$5 credite gratuite la înregistrare (valabilitate 30 de zile), nu este necesar un card de credit", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Creează o cheie API la https://seekai.cc, apoi lipește-o aici ca token Bearer. URL de bază compatibil cu OpenAI: https://seekai.cc/v1.", "sap": "Descoperirea modelelor folosește /v2/lm/scenarios/foundation-models/models pe AI_API_URL. Solicitările de chat folosesc deploymentUrl/chat/completions și necesită AI-Resource-Group.", "sarvam": "Sarvam AI este compatibil cu OpenAI pe /v1. OmniRoute probează /v1/models și direcționează traficul de chat către /v1/chat/completions. Modelele sunt ajustate pentru limbile indic.", "scaleway": "1M tokenuri gratuite pentru conturi noi — conformitate UE/GDPR (Paris), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Conectați Claude Code cu fluxul OAuth existent.", "cline": "Conectați Cline cu fluxul OAuth existent.", "cursor": "Conectați Cursor IDE cu fluxul OAuth existent.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Conectează Cursor folosind o cheie API de utilizator (crsr_...) de la cursor.com/dashboard/api; nu este necesară nicio sesiune IDE.", "github": "Conectați GitHub Copilot cu fluxul OAuth existent.", "gitlab-duo": "Aplicație OAuth cu permisiunile ai_features + read_user. Configurați GITLAB_DUO_OAUTH_CLIENT_ID și opțional GITLAB_DUO_OAUTH_CLIENT_SECRET pe această instanță OmniRoute.", "kilocode": "Conectați Kilo Code cu fluxul OAuth existent.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Copiați acreditările necesare din domeniul propriu al furnizorului. Pentru cookie-uri, copiați numai valoarea antetului Cookie și omiteți Cookie:.", "webSessionGuideStep3Manual": "Calea manuală: deschideți instrumentele de dezvoltare ale browserului (F12 → Rețea), reîncărcați pagina, deschideți o cerere autentificată și copiați valoarea antetului Cookie din Anteturile cererii — omiteți prefixul Cookie:.", "webSessionGuideStep4": "Lipiți-l aici și verificați conexiunea. Dacă nu mai funcționează, conectați-vă din nou și înlocuiți-l cu o valoare nouă.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importă fișierul .har", + "harImportButtonBusy": "Se importă…", + "harImportButtonHint": "Exportă din fila Network a DevTools după ce trimiți cel puțin un mesaj de chat.", + "harImportStatusValid": "Importat — valabil timp de ~{minutes} min.", + "harImportStatusExpiringSoon": "Importat — mai este valabil doar ~{minutes} min.", + "harImportStatusExpired": "Importat, dar acest token a expirat deja (acum {minutes} min.) — exportă un HAR nou.", + "harImportStatusUnknownExpiry": "Importat. Data expirării nu a putut fi citită.", + "harImportErrorNotJson": "Fișierul respectiv nu este un JSON valid — este într-adevăr un export .har?", + "harImportErrorNoEntries": "Acest HAR nu conține intrări de rețea înregistrate.", + "harImportErrorNoChathubUrl": "Nu a fost găsită nicio conexiune de chat Copilot în acest HAR. Trimite cel puțin un mesaj de chat în m365.cloud.microsoft înainte de exportare.", + "harImportErrorUnparsableUrl": "Conexiunea de chat a fost găsită, dar URL-ul acesteia nu a putut fi citit.", + "harImportErrorMissingFields": "Conexiunea de chat a fost găsită, dar tokenul lipsea din aceasta.", + "harImportErrorReadFailed": "Fișierul respectiv nu a putut fi citit.", + "harImportErrorUnknown": "Nu s-au putut extrage date de autentificare din fișierul HAR respectiv.", "webSessionSecurityHint": "Tratați acest lucru ca pe o parolă: poate accesa contul dvs. web conectat până când expiră sau este revocat.", "webNoAuthGuideTitle": "Nu sunt necesare acreditări", "webNoAuthGuideBody": "{provider} nu are nevoie de o cheie API sau cookie. Salvați conexiunea pentru a utiliza punctul final web gratuit.", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Modul de serviciu Codex actualizat", "codexServiceTierActive": "Tierul de serviciu Codex {tier} este activ", "codexTierFastLabel": "Rapid", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Flexibil", "commandCodeApplyFailed": "Aplicarea codului de comandă auth a eșuat", "commandCodeApplyingApproval": "Browser aprobat, se aplică…", "commandCodeApplyingKey": "Aplicarea cheii aprobate de browser…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Codul de comandă auth a expirat", "commandCodeConnected": "Codul comenzii conectat", "commandCodeConnectionAdded": "Conexiune Cod Comandă adăugată", + "clearConnectionCooldown": "Șterge perioada de așteptare", + "clearConnectionCooldownInProgress": "Se șterge…", + "clearConnectionCooldownTitle": "Șterge acum perioada de așteptare — folosește această opțiune când cota a fost deja reînnoită în amonte", "commandCodeLinkExpired": "Linkul codului de comandă a expirat", "commandCodeOpeningStudio": "Deschidere Command Code Studio…", "commandCodePopupBlocked": "Popup blocat. Vă rugăm să permiteți ferontele și să încercați din nou Command Code Connect.", "commandCodeStartFailed": "Nu s-a reușit să se pornească Command Code auth", "connectionDeleted": "Conexiune ștearsă", "connectionFallback": "conexiune", + "connectionCooldownCleared": "Perioada de așteptare a fost ștearsă — conexiunea a reintrat în rutare", "coolingConnectionsDescription": "Aceste conexiuni se răcesc după ultima solicitare. OmniRoute le va sări până expiră temporizatorul — nu e nevoie de dezactivare manuală.", "coolingConnectionsTitle": "În prezent răcire ({count})", + "failedClearConnectionCooldown": "Ștergerea perioadei de așteptare a eșuat", "failedDeleteAlias": "Nu s-a reușit ștergerea aliasului", "failedDeleteConnection": "Nu s-a putut șterge conexiunea", "failedDistributeProxies": "Distribuirea proxy-urilor a eșuat.", @@ -6446,7 +6454,7 @@ "failedUpdateCliproxyRouting": "Actualizarea rutării CLIProxyAPI a eșuat", "failedUpdateCodexLimitPolicy": "Actualizarea politicii limite Codex a eșuat", "failedUpdateCodexServiceMode": "Actualizarea modului de serviciu Codex a eșuat", - "filterByMedia": "Media", + "filterByMedia": "Conținut media", "freeBadge": "Gratuit", "kimiCodeApiKeyLabel": "Cheia API Kimi Code", "modelTestFailed": "Testul modelului a eșuat", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Setările punctului final al modelului salvat", "searchByModelAria": "Caută după model", "selectSupportedEndpoint": "Selectați cel puțin un punct final acceptat", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Cadru / CLI" }, "settings": { "title": "Setări", @@ -6483,7 +6486,7 @@ "security": "Securitate", "appearance": "Aspectul", "routing": "Dirijare", - "cache": "Cache", + "cache": "Memorie cache", "resilience": "Reziliență", "description": "Descriere", "enable": "Activează", @@ -6554,22 +6557,22 @@ "systemPrompt": "Prompt de sistem", "thinkingBudget": "Gândirea bugetului", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "Proxy HTTP", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Secțiuni proxy", + "requestBodyLimitTitle": "Limita corpului cererii", + "requestBodyLimitDescription": "Dimensiunea maximă acceptată a sarcinii utile API înainte ca un corp de cerere să fie analizat. Rutele dedicate pentru încărcări își păstrează cel puțin limita încorporată de 100 MB.", + "requestBodyLimitInputLabel": "Limita corpului cererii în MB", + "requestBodyLimitEmptyError": "Introdu o limită în MB", + "requestBodyLimitWholeNumberError": "Folosește un număr întreg", + "requestBodyLimitMinimumError": "Valoarea minimă este de {min} MB", + "requestBodyLimitMaximumError": "Valoarea maximă este de {max} MB", + "requestBodyLimitLoadFailed": "Încărcarea setărilor pentru limita cererii a eșuat", + "requestBodyLimitSaveSuccess": "Limita corpului cererii a fost salvată", + "requestBodyLimitSaveFailed": "Salvarea limitei corpului cererii a eșuat", + "requestBodyLimitSaving": "Se salvează...", + "requestBodyLimitSave": "Salvează", + "requestBodyLimitCurrent": "Valoarea actuală: {value}", "cacheConfigLoadFailed": "Nu s-au putut încărca setările cache-ului", "cacheConfigSaveSuccess": "Setările cache-ului au fost salvate", "cacheConfigSaveFailed": "Nu s-a reușit salvarea setărilor cache", @@ -6582,7 +6585,7 @@ "modelCatalogCacheTtlSaving": "Se salvează...", "modelCatalogCacheTtlSave": "Salvează", "modelCatalogCacheTtlCurrent": "Curent: {value} ms", - "mitmProxy": "MITM Proxy", + "mitmProxy": "Proxy MITM", "pricing": "Prețuri", "storage": "Depozitare", "policies": "Politici", @@ -6593,59 +6596,59 @@ "enablePassword": "Activați parola", "darkMode": "Modul întunecat", "lightMode": "Modul de lumină", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Memorie", + "memoryDesc": "Memorie conversațională persistentă între sesiuni", + "memoryEnabled": "Activează memoria", + "memoryEnabledDesc": "Când este activată, OmniRoute va insera context relevant din conversațiile anterioare.", "memoryTokenCostWarning": "Atenție: cu memoria activată, OmniRoute injectează până la {tokens} tokenuri de context preluat în fiecare solicitare de chat — acest lucru crește utilizarea de tokenuri și costul. Pentru a omite injectarea pentru o solicitare specifică, trimiteți antetul \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", + "maxTokens": "Număr maxim de tokenuri", + "retentionDays": "Păstrare", + "recent": "Recente", + "recentDesc": "Fereastră cronologică", "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "semanticDesc": "Căutare vectorială", + "hybrid": "Hibrid", + "hybridDesc": "Recent + semantic", + "skillsTitle": "Abilități", + "skillsDesc": "Instrumente pentru modele", + "skillsEnabled": "Activează abilitățile", + "skillsEnabledDesc": "Permite agenților să declanșeze funcții.", + "skillsComingSoon": "Piața de abilități va fi disponibilă în curând.", + "memorySkillsTitle": "Memorie și abilități", + "memorySkillsDesc": "Context și capabilități persistente", + "modelsDevTitle": "Bază de date cu modele", + "modelsDevDesc": "Sincronizează automat prețurile, capabilitățile și specificațiile de la models.dev", + "modelsDevEnabled": "Activează sincronizarea cu models.dev", + "modelsDevEnabledDesc": "Preia prețurile, capabilitățile și specificațiile modelelor din baza de date open-source models.dev", + "modelsDevInterval": "Interval de sincronizare", + "syncNow": "Sincronizează acum", + "syncing": "Se sincronizează...", + "lastSync": "Ultima sincronizare", + "never": "Niciodată", "justNow": "tocmai acum", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Statistici de sincronizare", + "modelsDevStatsDesc": "Acoperirea actuală a datelor models.dev", "providers": "Furnizorii", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modele cu informații despre prețuri", + "capabilities": "Capabilități", + "lastSyncCount": "Numărul de modele la ultima sincronizare", + "lastSyncFull": "Ultima sincronizare completă", + "modelsDevInfo": "Cum funcționează", + "modelsDevInfoDesc": "models.dev este o bază de date open-source cu specificații ale modelelor AI, întreținută de echipa SST/OpenCode. Oferă informații despre prețuri, capabilități, limite de context și modalități pentru peste 4.000 de modele de la peste 100 de furnizori.", + "modelsDevInfoResolution": "Ordinea de stabilire a prețurilor (de la cea mai mare prioritate):", + "modelsDevInfoOrder": "Suprascriere utilizator → models.dev → LiteLLM → Valoare implicită definită în cod", "systemTheme": "Tema sistemului", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Activează modul de depanare", "logToolSourcesToggle": "Jurnalizare surse instrumente", "logToolSourcesDescription": "Emite o linie de jurnal de diagnosticare per solicitare, rezumând numărul de instrumente și defalcarea surselor MCP/găzduite/client.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Fixează informațiile pe pagina principală", "homePinnedSectionsDesc": "Alegeți ce secțiuni să fixați în partea de sus a paginii principale.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Limitele cotelor furnizorilor", + "homeProviderQuotaLimitsDesc": "Fixează secțiunea privind starea cotelor furnizorilor (cu butonul Reîmprospătează tot) în partea de sus a paginii principale.", + "homeQuickStart": "Pornire rapidă", + "homeQuickStartDesc": "Afișează panoul Pornire rapidă pe pagina principală.", + "homeProviderTopology": "Topologia furnizorilor", + "homeProviderTopologyDesc": "Afișează topologia furnizorilor pe pagina principală.", "accountEmailVisibility": "Vizibilitatea e-mailului contului", "accountEmailVisibilityDesc": "Afișează adresele complete de e-mail ale contului în ecranele de furnizori, combinații, jurnale, cotă și playground. Dezactivați această opțiune pentru a le masca în mod implicit.", "comboConfigMode": "Mod de configurare combo", @@ -6661,53 +6664,53 @@ "providerQuotaAutoRefreshInterval": "Interval de reîmprospătare", "providerQuotaAutoRefreshIntervalDesc": "Cât de des ar trebui să se reîmprospăteze vizualizarea cotei, în secunde.", "seconds": "secunde", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Afișează elementele barei laterale", "enableCache": "Activați memoria cache", - "cacheTTL": "Cache TTL", + "cacheTTL": "TTL-ul memoriei cache", "maxCacheSize": "Dimensiunea maximă a memoriei cache", "clearCache": "Goliți memoria cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Memoria cache a fost golită cu succes", + "clearCacheFailed": "Golirea memoriei cache a eșuat", "cacheHits": "Hits în cache", - "cacheMisses": "Cache Misses", + "cacheMisses": "Ratările memoriei cache", "hitRate": "Rata de lovituri", "cacheEntries": "Intrări în cache", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "cacheSettings": "Setările memoriei cache", + "semanticCache": "Cache semantic", + "maxEntries": "Număr maxim de intrări", + "ttlMinutes": "TTL (minute)", + "promptCache": "Cache pentru prompturi", + "strategy": "Strategie", + "preserveClientCache": "Păstrează memoria cache a clientului", + "enabled": "Activat", "loading": "Loading...", "saving": "Se salvează...", - "save": "Save", + "save": "Salvează", "circuitBreaker": "Întrerupător", "retryPolicy": "Reîncercați Politica", "maxRetries": "Reîncercări maxime", "retryDelay": "Reîncercați Întârziere", - "timeoutMs": "Timeout (ms)", + "timeoutMs": "Timp de expirare (ms)", "enableSystemPrompt": "Activați promptul de sistem", "systemPromptText": "Text prompt de sistem", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Dezactivează automat conturile interzise", + "autoDisableDescription": "Marchează permanent conexiunile furnizorilor ca dezactivate dacă returnează anumite semnale terminale de interdicție (de ex., HTTP 403 „verify your account”). Acest lucru le elimină din rotația combinațiilor.", + "autoDisableThreshold": "Prag de interdicție", + "autoDisableThresholdDesc": "Numărul de semnale consecutive de interdicție necesare înainte de dezactivarea permanentă.", + "autoDisableBannedScope": "Aplică dezactivarea automată pentru", + "autoDisableBannedScopeDesc": "Locurile de autentificare (abonamente plătite și conturi gratuite) pot fi blocate de serviciul din amonte dacă OmniRoute continuă să reîncerce după o interdicție. Cheile API preplătite cu plată nu prezintă acest risc — lasă-le în grup pentru ca strategia fill-first să poată utiliza următoarea cheie.", + "autoDisableBannedScopeAll": "Toate conexiunile", + "autoDisableBannedScopeAllDesc": "Dezactivează fiecare conexiune care returnează un semnal de interdicție permanentă, inclusiv cheile API preplătite.", + "autoDisableBannedScopeSubscription": "Doar conturile de autentificare/abonament", + "autoDisableBannedScopeSubscriptionDesc": "Dezactivează locurile OAuth, cookie, sesiune și autentificare web (plătite sau gratuite). Cheile API preplătite rămân active, astfel încât rutarea să poată comuta la o alternativă.", "customBannedSignals": "Cuvinte cheie interzise", "customBannedSignalsDesc": "Cuvinte cheie suplimentare care declanșează detectarea blocării permanente a contului. Cuvintele cheie integrate se aplică întotdeauna.", "customBannedSignalsPlaceholder": "de ex. api key revoked", "noCustomBannedSignals": "Fără cuvinte cheie personalizate. Doar cuvintele cheie integrate sunt active.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Structura de reziliență", "resilienceStructureDesc": "Această pagină configurează doar comportamentul. Starea de întrerupere live este afișată pe pagina Sănătate. Reîncercarea specifică combo-ului și controlul slotului round-robin rămân în setările combo.", "enableThinking": "Activați gândirea", - "maxThinkingTokens": "Max Thinking Tokens", + "maxThinkingTokens": "Număr maxim de tokenuri de gândire", "enableProxy": "Activați proxy", "perKeyProxyEnabled": "Activează alocarea proxy-ului per cheie", "perKeyProxyEnabledDesc": "Când este activat, fiecare conexiune de furnizor poate utiliza propria alocare de proxy", @@ -6746,27 +6749,27 @@ "themeSystem": "Sistem", "endpointTunnelVisibility": "Vizibilitatea tunelului final", "endpointTunnelVisibilityDesc": "Ascundeți controalele tunelului din pagina Endpoint fără a schimba starea tunelului.", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Tunel rapid Cloudflare", "showCloudflareTunnelDesc": "Afișați comenzile Cloudflare Quick Tunnel pe pagina Endpoint.", "showTailscaleFunnel": "Pâlnie Tailscale", "showTailscaleFunnelDesc": "Afișați comenzile Tailscale Funnel pe pagina Endpoint.", "showNgrokTunnel": "Tunelul ngrok", "showNgrokTunnelDesc": "Afișați comenzile ngrok Tunnel pe pagina Endpoint.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Ascunde elementele barei laterale", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", + "presetAll": "Toate", + "presetAllDesc": "Afișează totul", + "presetEssentials": "Elemente esențiale", + "presetEssentialsDesc": "Parcurs pentru începători - Instrumentele avansate rămân disponibile în căutare", "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetMinimalDesc": "Doar paginile principale", + "presetDeveloper": "Dezvoltator", + "presetDeveloperDesc": "Instrumente pentru dezvoltare și proxy", + "presetAdmin": "Administrator", + "presetAdminDesc": "Monitorizare și audit", + "settingsSidebarTitle": "Personalizarea barei laterale", + "settingsSidebarDesc": "Alege ce elemente să fie afișate în bara laterală. Opțiunea Elemente esențiale păstrează instrumentele avansate disponibile în căutare.", "hideHealthLogs": "Ascundeți jurnalele de verificare a stării de sănătate", "hideHealthLogsDesc": "Când este ACTIVAT, suprimați mesajele [HealthCheck] din consola serverului", "themeAccent": "Culoarea temei", @@ -6780,19 +6783,19 @@ "themeOrange": "Portocaliu", "themeCyan": "Cian", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Personalizează numele și sigla aplicației", + "appName": "Numele aplicației", + "appNameDesc": "Numele afișat în bara laterală și în fila browserului", + "customLogo": "URL pentru siglă personalizată", + "customLogoDesc": "URL-ul imaginii cu sigla personalizată", + "uploadLogo": "Încarcă sigla", + "resetLogo": "Restabilește valorile implicite", + "logoPreview": "Previzualizare", + "customFavicon": "Favicon pentru browser", + "customFaviconDesc": "URL-ul faviconului personalizat (afișat în fila browserului)", + "uploadFavicon": "Încarcă faviconul", + "resetFavicon": "Resetează faviconul", + "faviconPreview": "Previzualizare favicon", "logoFileTooLarge": "Fișierul logo trebuie să aibă mai puțin de 500KB", "faviconFileTooLarge": "Fișierul favicon trebuie să aibă mai puțin de 50KB", "invalidLogoFileType": "Tip de fișier nevalid. Vă rugăm să încărcați PNG, JPG, SVG, GIF sau WebP.", @@ -6880,7 +6883,7 @@ "deleteFailed": "Ștergerea eșuată", "add": "Adaugă", "cancel": "Anulează", - "configure": "Configure", + "configure": "Configurează", "copyEndpoint": "Copiază Endpoint-ul", "coreEndpointHint": "Indicație Endpoint Principal", "coreNodesHint": "Indicație Noduri de Bază", @@ -6896,21 +6899,21 @@ "refreshInterval": "Interval De Actualizare", "ruleModeDescription": "Descrierea Modului Regulilor" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", + "bulkHealthcheck": "Verificare în masă a stării", + "bulkHealthcheckDesc": "Testează toate proxy-urile configurate folosind un URL țintă pentru a identifica proxy-urile funcționale.", + "healthcheckTesting": "Se testează...", + "healthcheckAll": "Verifică starea tuturor", + "healthcheckFailed": "Verificarea stării nu a putut fi executată", + "healthcheckTestingAll": "Se testează toate proxy-urile în paralel...", "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "healthcheckWorking": "Funcționale", + "healthcheckFailedLabel": "Eșuate", + "healthcheckStatus": "Stare", + "healthcheckProxyUrl": "URL proxy", + "healthcheckLatency": "Latență", "proxyDocumentationScopeTitle": "Rezoluția domeniului de aplicare a proxy-ului", "proxyDocumentationScopeDescBefore": "OmniRoute determină proxy-ul de ieșire în ordinea priorității:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "combinație → cont → furnizor → global", "proxyDocumentationScopeDescAfter": ". Cel mai specific domeniu de aplicare câștigă.", "proxyDocumentationAddTitle": "Adăugarea unui proxy personalizat", "proxyDocumentationAddDescBefore": "Mergeți la", @@ -6968,7 +6971,7 @@ "cancel": "Anulează", "globalLabel": "Global", "configure": "Configurați", - "globalSystemPrompt": "Global System Prompt", + "globalSystemPrompt": "Prompt global de sistem", "saved": "Salvat", "beforePromptLabel": "Înainte de prompt", "beforePromptDesc": "Injectat înainte de instrucțiunile de sistem ale agentului/furnizorului", @@ -6982,9 +6985,9 @@ "thinkingBudgetIndependenceHint": "Funcțiile de compresie, rutare și limită de token-uri continuă să funcționeze în fiecare mod. Auto nu înseamnă „gândire auto-afişată” — elimină câmpurile de raționare ale clientului.", "passthrough": "trecere", "passthroughDesc": "Fără modificări — clientul controlează bugetul de gândire", - "thinkingModePassthrough": "Passthrough", + "thinkingModePassthrough": "Transmitere directă", "thinkingModePassthroughDesc": "Lăsați raționamentul clientului neschimbat (efort, rezumat, blocuri de gândire). Necesare pentru gândirea vizibilă Codex/Desktop. Implicit.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automat (eliminare)", "thinkingModeAutoDesc": "Elimină toate câmpurile de gândire/raționare ale clientului (raționare, efort_raționare, gândirea Claude, gândirea Gemini_config) și lasă furnizorul să inventeze valori implicite. Poate ascunde panourile de gândire și poate întrerupe cererile de sumarizare ale clientului.", "thinkingModeCustom": "Personalizat", "thinkingModeCustomDesc": "Suprascrie fiecare cerere cu un buget fix de tokeni de gândire pe care îl stabilești mai jos.", @@ -7018,7 +7021,7 @@ "errorOccurred": "A apărut o eroare", "updatePassword": "Actualizați parola", "setPassword": "Setați parola", - "apiEndpointProtection": "API Endpoint Protection", + "apiEndpointProtection": "Protecția endpointului API", "requireAuthModels": "Necesită cheia API pentru /models", "requireAuthModelsDesc": "Când este ACTIVAT, punctul final /v1/models returnează 404 pentru solicitările neautentificate. Previne descoperirea modelului de către utilizatori neautorizați.", "authModelHeading": "Model de autorizare activ", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} furnizor(i) blocat(i) de la /modele", "blockProviderTitle": "Blocați {provider}", "unblockProviderTitle": "Deblocați {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Potrivirea amprentei CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} furnizor(i) cu amprenta CLI activă", + "enableFingerprintTitle": "Activează amprenta pentru {provider}", + "disableFingerprintTitle": "Dezactivează amprenta pentru {provider}", "systemTransforms": "Conducta de transformare a blocurilor de sistem", "systemTransformsDesc": "Canalul de transformări comandat de fiecare furnizor aplicat corpului cererii înainte de redirecționare. Acceptă orice ID de furnizor.", "systemTransformsAddProvider": "Adăugați furnizorul", @@ -7063,21 +7066,21 @@ "randomDesc": "Cont aleatoriu pentru fiecare cerere", "leastUsed": "Cel mai puțin folosit", "leastUsedDesc": "Alegeți contul cel mai puțin utilizat recent", - "costOpt": "Cost Opt", + "costOpt": "Optimizarea costurilor", "costOptDesc": "Prefer cel mai ieftin cont disponibil", - "resetAware": "Reset-Aware RR", + "resetAware": "RR adaptiv la resetare", "resetAwareDesc": "Preferați conturile cu cotă rămasă sănătoasă și resetări mai apropiate", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Ponderat în funcție de cotă", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "Aleatoriu strict", + "strictRandomDesc": "Amestecă pachetul — utilizează fiecare cont o dată înainte de a amesteca din nou", "stickyLimit": "Limită lipicioasă", "stickyLimitDesc": "Apeluri pe cont înainte de a comuta", "routingStrategyTitle": "Strategie de rutare", "routingStrategySubtitle": "Potrivește 9router: cont round-robin, limite sticky și rotație combo", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Distribuire circulară", "accountRoundRobinDesc": "Treci ciclic prin conturi pentru a distribui sarcina", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Distribuire circulară combinată", "comboRoundRobinDesc": "Treci ciclic prin țintele combo în loc să începi mereu cu prima", "comboStickyLimit": "Limită sticky combo", "comboStickyLimitDesc": "Apeluri per țintă combo înainte de comutare", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Suprascrie strategia globală de cont pentru acest furnizor (paritate 9router).", "providerRoutingStrategy": "Strategie cont", "providerRoutingInheritGlobal": "Moștenește valoarea implicită globală", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Prag de verificare preliminară a cotei", + "quotaPreflightSubtitle": "Omite conturile care și-au epuizat cota înainte de a trimite solicitarea în amonte", + "quotaPreflightEnable": "Activează verificarea preliminară a cotei", + "quotaPreflightEnableDesc": "Înainte de fiecare solicitare, verifică cota rămasă a contului (intervale de 5 h / săptămânale / lunare). Conturile aflate la prag sau sub acesta sunt omise fără un apel în amonte. Pragurile pentru fiecare interval setate pe pagina Cota furnizorului au întotdeauna prioritate față de valoarea implicită de aici.", + "quotaPreflightCutoff": "Prag global (procent minim rămas)", + "quotaPreflightCutoffDesc": "Nu mai utiliza un cont atunci când cota sa rămasă scade la acest procent sau sub el, pentru fiecare interval care nu are propriul prag. Corespunde barelor cu procentul rămas de pe pagina Cota furnizorului.", + "quotaPreflightWindowsHint": "Intervalele cu propriul prag per interval sau per furnizor (setat în fereastra Prag de pe pagina Cota furnizorului) nu sunt afectate de această valoare implicită.", + "quotaPreflightLoadFailed": "Nu s-au putut încărca setările de verificare preliminară a cotei.", "modelAliases": "Aliasuri de model", "modelAliasesTitle": "Aliasuri de model", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Remapează numele modelelor folosind potriviri exacte sau modele cu metacaractere.", "addCustomAlias": "Adaugă Alias Personalizat", "deprecatedModelId": "ID model depreciat", "newModelId": "ID model nou", @@ -7127,7 +7130,7 @@ "guest": "Oaspete", "loginTime": "Ora de conectare", "sessionAge": "Vârsta sesiunii", - "browser": "Browser", + "browser": "Navigator", "clearLocalData": "Ștergeți datele locale", "logout": "Deconectare", "clearLocalDataConfirm": "Ștergeți toate datele locale? Aceasta vă va reseta preferințele.", @@ -7188,11 +7191,11 @@ "comboStrategyAria": "Strategie combinată", "priority": "Prioritate", "weighted": "ponderat", - "contextRelay": "Context Relay", + "contextRelay": "Releu de context", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Reîncercări maxime", "retryDelayLabel": "Întârziere reîncercare (ms)", - "timeoutLabel": "Timeout (ms)", + "timeoutLabel": "Timp de expirare (ms)", "healthCheck": "Verificare de sănătate", "healthCheckDesc": "Verificați prealabil disponibilitatea furnizorului", "trackMetrics": "Urmăriți valorile", @@ -7200,7 +7203,7 @@ "providerOverrides": "Suprascrierea furnizorului", "providerOverridesDesc": "Suprascrierea timpului de expirare și reîncercări pentru fiecare furnizor. Setările furnizorului înlocuiesc valorile prestabilite globale.", "providerMaxRetriesAria": "{provider} max. reîncercări", - "providerTimeoutAria": "{provider} timeout ms", + "providerTimeoutAria": "Timp de expirare {provider} în ms", "removeProviderOverrideAria": "Eliminați anularea {provider}", "selectProviderPlaceholder": "Selectează furnizorul...", "searchProviderPlaceholder": "Caută furnizori...", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Concurență / Model", "queueTimeout": "Timp de așteptare la coadă (ms)", "queueDepth": "Adâncime coadă", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Prag de predare", + "contextRelayMaxMessages": "Număr maxim de mesaje pentru rezumat", + "contextRelaySummaryModel": "Model pentru rezumat", + "contextRelayProviderNote": "Context Relay generează în prezent predări pentru conturile Codex și utilizează aceste valori ca setări implicite globale pentru combinațiile noi sau neconfigurate.", "providerProfiles": "Profiluri de furnizor", "providerProfilesDesc": "Setări separate de rezistență pentru furnizorii OAuth (bazat pe sesiune) și API Key (contorizat). Furnizorii OAuth au praguri mai stricte din cauza limitelor mai mici ale ratei.", "oauthProviders": "Furnizori OAuth", @@ -7265,7 +7268,7 @@ "systemStorage": "Sistem și stocare", "allDataLocal": "Toate datele stocate local pe aparatul dvs", "databasePath": "Calea bazei de date", - "export": "Export", + "export": "Exportă", "exportDatabase": "Exportați baza de date", "exportAll": "Exportați toate (.tar.gz)", "importDatabase": "Importă baza de date", @@ -7283,7 +7286,7 @@ "noBackupsYet": "Nu există copii de rezervă disponibile încă. Backup-urile vor fi create automat când datele se schimbă.", "backupsAvailable": "{count} backup(uri) disponibil(e).", "refresh": "Reîmprospătați", - "confirm": "Confirm?", + "confirm": "Confirmați?", "yes": "Da", "no": "Nu", "restore": "Restaurați", @@ -7299,7 +7302,7 @@ "daysAgo": "acum {count}d", "backupReasonManual": "manual", "backupReasonPreRestore": "pre-restaurare", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# conexiune} other {# conexiuni}}", "noChangesSinceBackup": "Nicio modificare de la ultima copie de rezervă", "backupFailed": "Copierea de rezervă a eșuat", "restoreFailed": "Restaurarea a eșuat", @@ -7329,7 +7332,7 @@ "configured": "configurat", "none": "Niciunul", "modelOverrideValuePlaceholder": "Valoare numerică", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Separate prin virgule în limba engleză, de ex. low, medium, high", "addKeyValue": "Adaugă cheie-valoare", "noModelOverrides": "Nu sunt configurate suprascrieri pentru acest model.", "modelOverrideLoadFailed": "Eroare la încărcarea suprascrierilor de model", @@ -7378,25 +7381,25 @@ "editPricing": "Editați prețul", "viewFullDetails": "Vezi detalii complete", "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Rutare adaptivă în funcție de volum", + "adaptiveVolumeRoutingDesc": "Scalează dinamic conexiunile în funcție de volumul sarcinii utile și de presiunea asupra debitului.", + "lkgpToggleTitle": "Ultimul furnizor funcțional cunoscut (LKGP)", + "lkgpToggleDesc": "Când este activată această opțiune, routerul reține furnizorul care a oferit cel mai recent un răspuns reușit și îl încearcă primul la solicitările ulterioare.", "echoRequestedModelTitle": "Returnează numele modelului solicitat în răspunsuri", "echoRequestedModelDesc": "Când este activat, câmpul `model` din răspuns returnează aliasul sau numele combo-ului solicitat de client în locul numelui modelului din amonte. Rezolvă problemele cu clienții stricți (de ex. Claude Desktop) care resping un răspuns al cărui model nu corespunde cu cel solicitat.", "webSearchRouteTitle": "Rutare căutare web", "webSearchRouteDesc": "Când o solicitare include un instrument nativ web_search, rutează întreaga solicitare către acest model în loc de cel implicit — util pentru furnizorii care nu implementează instrumentul de server web_search de la Anthropic. Lasă gol pentru a dezactiva.", "webSearchRoutePlaceholder": "de ex. openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "Acest șablon se potrivește doar cu modelele plătite — activează modelele plătite sau ajustează șablonul.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Golește memoria cache LKGP", + "lkgpCacheCleared": "Memoria cache LKGP a fost golită cu succes", + "lkgpCacheClearFailed": "Golirea memoriei cache LKGP a eșuat", + "days": "Zile", + "lkgp": "Mod LKGP", + "lkgpDesc": "Ultimul furnizor funcțional cunoscut (reziliență predictibilă)", + "maintenance": "Întreținere", + "purgeExpiredLogs": "Șterge jurnalele expirate", + "purgeLogsFailed": "Ștergerea jurnalelor a eșuat", "logsDeleted": "{count, plural, =0 {Nu s-au curățat jurnale expirate} one {S-a curățat # jurnal expirat} few {S-au curățat # jurnale expirate} other {S-au curățat # de jurnale expirate}}", "resetUsageData": "Resetează datele de utilizare", "resetUsageDataDesc": "Selectează cât de mult în urmă dorești să ștergi datele de utilizare, jurnalele de solicitări și datele analitice. Configurația furnizorilor, conexiunile, cheile API, combo-urile și setările sunt păstrate. Această acțiune nu poate fi anulată.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Resetarea datelor de utilizare a eșuat", "reset": "Resetează", "resetting": "Se resetează...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Optimizat pentru context", + "contextOptDesc": "Rute bazate pe cerințele ferestrei de context și lungimea conversației", + "cacheOpt": "Optimizat pentru cache", + "cacheOptDesc": "Păstrează același prefix reutilizabil al promptului în același cont de furnizor", + "priorityDesc": "Rezervă secvențială - încearcă mai întâi furnizorul 1, apoi furnizorul 2 și așa mai departe", + "weightedDesc": "Distribuie traficul între furnizori în funcție de ponderi procentuale", + "modelRoutingTitle": "Reguli de rutare a modelelor", + "modelRoutingDesc": "Rutează automat modelele către anumite combinații folosind modele glob", + "addRule": "Adaugă regulă", + "routeToCombo": "Rutează către combinație", + "selectCombo": "Selectează combinația...", + "priorityHint": "Mai mare = verificat mai întâi. Folosește 10+ pentru modele specifice.", + "patternHint": "Folosește * pentru orice caractere, ? pentru un singur caracter. Nu ține cont de majuscule și minuscule.", + "noRoutingRules": "Nu este configurată nicio regulă de rutare. Solicitările folosesc implicit combinația globală.", + "routingRuleHint": "Adaugă o regulă precum claude-opus* -> frontier-combo pentru a ruta automat solicitările.", + "deleteRoutingRule": "Ștergi această regulă de rutare a modelelor?", + "exactMatchMode": "Potrivire exactă", + "wildcardPatternMode": "Model cu caractere wildcard", + "exactMatchModeDesc": "Folosește aliasuri exacte pentru ID-uri de modele retrase sau redenumite.", + "wildcardPatternModeDesc": "Folosește aliasuri wildcard cu * și ? atunci când o familie de modele trebuie asociată unei singure ținte.", + "noExactAliasesConfigured": "Nu sunt configurate aliasuri cu potrivire exactă.", + "wildcardRulesTitle": "Reguli wildcard", + "noWildcardAliasesConfigured": "Nu sunt configurate aliasuri wildcard.", + "overview": "Prezentare generală", + "unknownError": "Eroare necunoscută", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Listă albă", + "syncDisabled": "Sincronizare dezactivată", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Sincronizare activată", + "blacklist": "Listă neagră", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Modele sincronizate", + "budget": "Buget", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Nu s-a resetat prețul: {reason}", - "tab": "Tab", + "tab": "Filă", "pricingSavedProvider": "Prețul salvat pentru {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Nu s-a salvat prețul: {reason}", "pricingResetProvider": "Resetarea prețului pentru {provider}", - "nextSync": "Next Sync", + "nextSync": "Următoarea sincronizare", "pricingSyncFailedWithReason": "Sincronizarea prețurilor a eșuat: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Șterge prețurile sincronizate", + "compressionTitle": "Comprimarea prompturilor", + "compressionDesc": "Reduce utilizarea tokenurilor prin comprimarea prompturilor înainte de a le trimite furnizorilor", "compressionGuidanceFullGuideLink": "Ghid complet de compresie", "compressionGuidanceShow": "Detalii", "compressionGuidanceHide": "Ascunde detaliile", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Rescrie istoricul de chat eligibil, păstrând codul, URL-urile și intenția.", "tokenSaverFineTunePrefix": "Ajustează fin fiecare motor pe", "tokenSaverFineTuneSuffix": "sau combină motoarele per solicitare pe", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Mod de comprimare", + "compressionModeOff": "Dezactivat", + "compressionModeOffDesc": "Nu se aplică nicio comprimare", + "compressionModeLite": "Ușor", + "compressionModeLiteDesc": "Reducerea spațiilor albe și a liniilor goale", + "compressionModeStandard": "Standard (Omul cavernelor)", + "compressionModeStandardDesc": "Compresie bazată pe reguli, cu peste 30 de modele, care păstrează blocurile de cod și URL-urile", + "compressionModeAggressive": "Agresiv", + "compressionModeAggressiveDesc": "Rezumare + compresia rezultatelor instrumentelor + învechire progresivă pentru economii maxime", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Configurație agresivă a motorului", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Numărul de mesaje recente păstrate la fiecare nivel de vechime (mai mare = mai păstrat)", "compressionToolStrategies": "Strategii de rezultate ale instrumentului", "compressionToolStrategiesDesc": "Comutați strategiile de compresie pentru diferite tipuri de rezultate de scule", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Setări generale", + "compressionAutoTrigger": "Prag de declanșare automată", + "compressionCacheTTL": "TTL-ul cache-ului", + "compressionPreserveSystem": "Păstrează promptul de sistem", "compressionPreserveSystemAlways": "Întotdeauna", "compressionPreserveSystemWhenNoCache": "Când nu există cache", "compressionPreserveSystemNever": "Niciodată", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Salvat", "compressionExclusionsCount": "{count, plural, one {# excludere} other {# excluderi}} configurate", "compressionExclusionsEmpty": "Nici o excludere configurată — fiecare model/endpoint este eligibil pentru compresie (comportament implicit).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Configurarea motorului Caveman", + "compressionCavemanConfigDesc": "Ajustați motorul de compresie bazat pe reguli", "compressionCavemanPanelHint": "Starea pornit/oprit și nivelul acestuia sunt setate în panou:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Comprimă rolurile mesajelor", + "compressionRoleUser": "Utilizator", + "compressionRoleAssistant": "Asistent", + "compressionRoleSystem": "Sistem", + "compressionMinLength": "Lungimea minimă a mesajului", + "compressionSkipRules": "Reguli de compresie de omis", + "compressionSkipRulesDesc": "Faceți clic pe reguli pentru a le omite în timpul compresiei", + "compressionPreservePatterns": "Modele de păstrat", + "compressionPreservePatternsDesc": "Modele regex care nu sunt comprimate niciodată (câte unul pe linie)", + "compressionLogTitle": "Jurnal de compresie", + "compressionLogEmpty": "Nu există încă solicitări comprimate. Statisticile de compresie vor apărea aici atunci când solicitările sunt procesate cu compresia activată.", "minutes": "minute", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Filtrarea rezultatelor instrumentelor în funcție de comandă", + "compressionModeCodexResponses": "Rezultatele instrumentului Responses", + "compressionModeCodexResponsesDesc": "Compresie conservatoare pentru rezultate eligibile de shell, patch-uri, căutare, compilare și JSON", + "compressionModeStacked": "În cascadă", + "compressionModeStackedDesc": "Filtrarea rezultatelor instrumentelor cu RTK, urmată de compresia mesajelor cu Caveman", + "qdrantTitle": "Qdrant (memorie vectorială)", + "qdrantDesc": "Opțional. Indexează memoriile semantice într-o bază de date vectorială externă pentru o regăsire mai rapidă.", + "qdrantStatusActive": "Activ", + "qdrantStatusError": "Eroare", + "qdrantStatusDisabled": "Dezactivat", + "qdrantEnable": "Activează Qdrant", + "qdrantEnableDesc": "Când este activată, strategia semantică/hibridă poate utiliza Qdrant pentru a regăsi memorii.", + "qdrantTesting": "Se testează...", + "qdrantTestConnection": "Testează conexiunea", + "qdrantSaved": "Configurația a fost salvată", + "qdrantSaveError": "Salvarea configurației a eșuat", + "qdrantHostHint": "Fără port. Exemplu: 127.0.0.1 sau http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Valoare implicită Qdrant: 6333", + "qdrantCollectionHint": "Locul în care vor fi stocate punctele de memorie.", + "qdrantEmbeddingModel": "Model de încorporare", + "qdrantHelpTitle": "Ajutor pentru configurarea rapidă", + "qdrantHelpQuickTitle": "Configurare rapidă (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Gazdă: IP/URL Qdrant, Port: 6333, Colecție: omniroute_memory.", + "qdrantHelpStep2": "2. Dacă utilizați nvidia/llama-nemotron-embed-vl-1b-v2:free, folosiți dimensiunea 2048 pentru colecție.", + "qdrantHelpStep3": "3. Câmpul modelului: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Salvați, testați conexiunea, apoi testați căutarea.", + "qdrantEmbeddingQuickSelect": "Selectare rapidă dintre modelele descoperite...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Format: provider/model. Datele de autentificare ale furnizorului trebuie configurate.", + "qdrantApiKeyPlaceholderKeep": "(lăsați necompletat pentru a păstra cheia actuală)", + "qdrantApiKeyPlaceholderOptional": "(lăsați necompletat dacă nu este utilizat)", + "qdrantSaveHint": "Sfat: editați gazda/portul/colecția/modelul și faceți clic pe Salvați. Cheia API este opțională.", + "qdrantSearchTestTitle": "Test de căutare", + "qdrantSearchTestDesc": "Generează o încorporare și efectuează o căutare în Qdrant.", + "qdrantSearchPlaceholder": "Exemplu: preferințe ale utilizatorului, istoric etc.", + "qdrantNoResults": "Niciun rezultat (sau Qdrant nu este configurat).", + "qdrantCleanupTitle": "Păstrare și curățare", + "qdrantCleanupDesc": "Elimină punctele expirate și vechi pe baza", + "searching": "Se caută...", + "cleaning": "Se curăță...", + "cleanNow": "Curățați acum", "optional": "Opțional", "current": "Curent", "remove": "Eliminați", @@ -7600,19 +7603,19 @@ "resilienceScope": "Domeniu de aplicare:", "resilienceTrigger": "Declanșator:", "resilienceEffect": "Efect:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Coadă de solicitări și limită de frecvență", + "resilienceAutoEnableApiKeyProviders": "Activare automată pentru furnizorii care utilizează chei API", + "resilienceRequestsPerMinute": "Solicitări pe minut", + "resilienceMinTimeBetweenRequests": "Timp minim între solicitări", + "resilienceConcurrentRequests": "Solicitări simultane", + "resilienceConnectionScopeConcurrentRequests": "Solicitări simultane per conexiune/domeniu de cotă", + "resilienceGlobalConcurrentRequests": "Solicitări simultane globale către serviciile din amonte (0 = dezactivat)", "resilienceMaxQueueWaitTime": "Timp maxim de așteptare la coadă", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Perioadă de așteptare de bază", + "resilienceUseUpstreamRetryHints": "Utilizați indicațiile de reîncercare ale serviciului din amonte", + "resilienceDefaultPerProvider": "Implicit (per furnizor)", + "resilienceAlwaysOn": "Întotdeauna activat", + "resilienceAlwaysOff": "Întotdeauna dezactivat", "routingRemoveEntry": "Eliminați intrarea", "routingNeedlesSubstrings": "Ace (subșiruri care să se potrivească)", "routingCaseSensitive": "Sensibil cu majuscule", @@ -7669,14 +7672,14 @@ "routingAntigravitySignatureDesc": "Controlează dacă OmniRoute reutilizează doar semnăturile de gândire Gemini stocate sau acceptă semnături validate furnizate de client în fluxurile de apelare a instrumentelor compatibile cu Antigravity.", "routingAntigravitySignatureEnabledLabel": "Activat", "routingAntigravitySignatureEnabledDesc": "Comportamentul curent. Ignoră semnăturile furnizate de client și continuă să utilizeze fluxul OmniRoute stocat.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Ocolire", "routingAntigravitySignatureBypassDesc": "Acceptă semnăturile furnizate de client după o validare simplă și revine la semnătura stocată atunci când sunt nevalide.", "routingAntigravitySignatureBypassStrictLabel": "Bypass strict", "routingAntigravitySignatureBypassStrictDesc": "Solicită validarea completă protobuf înainte de a accepta o semnătură furnizată de client.", "routingHeaderFingerprintTitle": "Amprenta antet (per furnizor)", "routingServerRejectedSave": "⚠ Salvare respinsă de server:", "routingAddTransformOp": "Adăugați o transformare op", - "routingClientCacheControlTitle": "Client Cache Control", + "routingClientCacheControlTitle": "Controlul memoriei cache a clientului", "routingClientCacheControlDesc": "Configurează dacă OmniRoute păstrează marcajele cache_control furnizate de client", "routingClientCacheControlAutoDesc": "Pentru fluxuri deterministe compatibile cu Claude, păstrează cache_control furnizat de client ca atare. Dacă solicitarea nu are cache_control, OmniRoute nu injectează niciun marcaj deținut de bridge pentru compatibilitatea cu proxy-uri terțe compatibile cu CC.", "routingClientCacheControlAlwaysLabel": "Păstrează întotdeauna", @@ -7698,28 +7701,28 @@ "visionBridgePrompt": "Prompt de pod", "visionBridgePromptPlaceholder": "Descrieți această imagine concis.", "visionBridgePromptHint": "Trimis către modelul vision înainte ca descrierea extrasă să fie reinjectată în solicitarea inițială.", - "visionBridgeTimeoutMs": "Timeout (ms)", + "visionBridgeTimeoutMs": "Timp de expirare (ms)", "visionBridgeMaxImagesPerRequest": "Imagini maxime per cerere", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Număr maxim de pași de temporizare progresivă", + "resilienceProviderBreakerTitle": "Întrerupător de circuit per furnizor", + "resilienceFailureThreshold": "Prag de eșec", + "resilienceDegradationThreshold": "Prag de degradare", "resilienceResetTimeout": "Resetați timeout", "resilienceFailureThresholdLabel": "Pragul de eșec", "resilienceResetTimeoutLabel": "Resetați timeout", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Perioadă de așteptare a conexiunii", "resilienceUseUpstreamRetryHintsLabel": "Folosiți indicii de reîncercare în amonte", "resilienceUseUpstream429BreakerLabel": "Utilizați în amonte 429 indicii (întrerupător)", "resilienceMaxBackoffStepsLabel": "Pași maximi de retragere", "resilienceYes": "Da", "resilienceNo": "Nu", - "resilienceDefault": "Default", + "resilienceDefault": "Implicit", "storageDatabaseBackupRetention": "Reținerea backupului bazei de date", "storageDatabaseBackups": "Copii de rezervă ale bazei de date", "storageBackupRetentionDescription": "Copiile de rezervă automate SQLite sunt stocate în", "storageBackupRetentionHelp": "Configurează câte instantanee să fie păstrate și, opțional, șterge copiile de rezervă mai vechi de un anumit număr de zile.", "storageBackupCount": "{count} copii de rezervă", - "storageBackupMaximum": "Max {count}", + "storageBackupMaximum": "Maxim {count}", "storageBackupAgeRetention": "Retenție {count} zile", "storageBackupAgeRetentionOff": "Retenție după vechime dezactivată", "storageBackupKeepLatest": "Păstrează cele mai recente copii de rezervă", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "JSON-ul de tip legacy a fost importat cu succes!", "jsonImportFailed": "Importul JSON a eșuat", "jsonImportError": "Eroare în timpul importului JSON", + "jsonImportAuthRequired": "Este necesară autentificarea pentru a importa o configurație JSON veche. Conectați-vă sau finalizați mai întâi configurarea.", + "databaseSettingsAuthRequiredTitle": "Autentificare necesară", + "databaseSettingsAuthRequiredBody": "Setările bazei de date și importul JSON sunt disponibile numai unui administrator autentificat. Conectați-vă sau finalizați configurarea pentru a le vizualiza și edita.", + "databaseSettingsAuthRequiredCta": "Conectare", "storagePurgeData": "Curățați datele", "storagePurgeDataDesc": "Șterge imediat toate înregistrările fără a aplica verificările de retenție. A se utiliza cu prudență.", "storageRetentionCleanup": "Setări de retenție", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "mod: {mode}", "compressionAdaptiveOff": "Buget de context adaptiv: dezactivat (declanșare automată moștenită)", "compressionAdaptiveTarget": "Adaptiv ({mode}, politică: {policy}) — țintă ≈ {target, number} tokenuri (pentru o fereastră de {contextLimit, number} tokenuri)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Buget de context adaptiv", + "compressionAdaptiveModeOff": "Dezactivat (declanșare automată veche)", + "compressionAdaptiveModeFloor": "Prag minim (garantează întotdeauna încadrarea)", + "compressionAdaptiveModeReplace": "Înlocuiește declanșarea automată", + "compressionAdaptivePolicy": "Politica bugetului", + "compressionAdaptivePolicyReserve": "Rezervă pentru ieșire", + "compressionAdaptivePolicyPercentage": "Procent din fereastră", + "compressionAdaptivePolicyAbsolute": "Buget absolut de tokenuri", "compressionOutputStylesDescription": "Injectează instrucțiuni de modelare a răspunsului fără a rescrie ieșirea furnizorului. Combină liber.", "mcpAccessibilityDescription": "Limitează domeniul de aplicare al ieșirilor instrumentelor MCP (stocare separată).", "compressionStylesTileSummary": "{tokens, number} tokenuri salvate · {runs, plural, one {# rulare stilizată} few {# rulări stilizate} other {# de rulări stilizate}}", @@ -7844,7 +7851,7 @@ "minimal": "Minim", "standard": "Standard", "aggressive": "Agresiv", - "lite": "Lite", + "lite": "Simplificat", "full": "Complet", "ultra": "Ultra" }, @@ -7858,7 +7865,7 @@ "description": "Marcaje de regăsire adresate prin conținut." }, "lite": { - "label": "Lite", + "label": "Simplificat", "description": "Curățare spații libere și formatare." }, "rtk": { @@ -7866,11 +7873,11 @@ "description": "Filtrare output comenzi." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Ieșirea instrumentului Responses", + "description": "Comprimare conservatoare pentru ieșirile acceptate ale instrumentului Responses." }, "headroom": { - "label": "Headroom", + "label": "Marjă de siguranță", "description": "Compactare JSON tabulară." }, "relevance": { @@ -7878,7 +7885,7 @@ "description": "Scor de extragere a propozițiilor în raport cu ultima interogare a utilizatorului." }, "caveman": { - "label": "Caveman", + "label": "Omul peșterilor", "description": "Compresie de proză bazată pe reguli." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "Scara YAGNI: cea mai mică modificare funcțională, fără abstracții nesolicitate." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Coadă de cal (dezvoltator senior comod)", + "description": "Disciplina dezvoltatorului senior comod: urcă treptele YAGNI, remediază cauza principală, aplică cea mai mică modificare funcțională." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Am ADHD (acțiunea pe primul loc)", + "description": "Rezultat orientat spre acțiune: începe cu următoarea acțiune, pași numerotați, un singur pas următor concret, fără introducere." }, "terse-cjk": { "label": "CJK concis (文言)", @@ -7924,13 +7931,21 @@ "resilienceEnableServerSideWait": "Activați așteptarea pe server", "resilienceMaximumRetries": "Numărul maxim de încercări", "resilienceMaximumWaitPerRetry": "Așteptare maximă pentru fiecare reîncercare", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "Piața SkillsMP", "memorySkillsFailedToSave": "Salvare eșuată", "memorySkillsApiKey": "Cheia API", "memorySkillsActiveSkillsProvider": "Furnizor activ de abilități", - "cliproxyapiFallback": "CLIProxyAPI Fallback", + "cliproxyapiFallback": "CLIProxyAPI de rezervă", "cliproxyapiEnableFallback": "Activați CLIProxyAPI Fallback", "cliproxyapiUrl": "URL CLIProxyAPI", + "headroomProxyTitle": "Proxy Headroom", + "headroomProxyDesc": "URL-ul proxy-ului opțional Headroom pentru economisirea tokenurilor. Dacă este gol, se utilizează HEADROOM_URL sau http://localhost:8787.", + "headroomProxyUrl": "URL Headroom", + "headroomProxyUrlHint": "URL-urile loopback pot fi pornite din această pagină. URL-urile externe sunt doar verificate.", + "headroomProxySave": "Salvează", + "headroomProxyStart": "Pornește", + "headroomProxyStop": "Oprește", + "headroomProxyExternalHint": "Acest URL nu este loopback, așadar OmniRoute nu va porni interfața CLI locală.", "cliproxyapiStatus": "Stare CLIProxyAPI", "cliproxyapiNotDetected": "Nedetectat", "cliproxyapiImportAuthTitle": "Importă conturi din CLIProxyAPI", @@ -7938,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Importă conturi", "payloadRulesTitle": "Reguli de sarcină utilă", "payloadRulesDesc": "Configurează mutațiile payload-ului cererii în funcție de model și protocol. Modificările sunt persistate în setări și reîncărcate la cald în runtime imediat după salvare.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "implicit", "payloadRuleDefaultDesc": "Aplică parametrii doar atunci când calea țintă lipsește din payload-ul de ieșire.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "suprascriere", "payloadRuleOverrideDesc": "Forțează valorile în payload, înlocuind orice există deja la calea respectivă.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "filtru", "payloadRuleFilterDesc": "Elimină parametrii blocați din payload înainte ca cererea upstream să fie trimisă.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "La fel ca default, dar valorile de tip șir sunt analizate mai întâi ca JSON atunci când este posibil. Aliasul de intrare moștenit default-raw este de asemenea acceptat la salvare.", @@ -7980,28 +7995,28 @@ "responsesStateTitle": "Stare Responses", "responsesStateDesc": "Controlează modul în care OmniRoute redirecționează previous_response_id.", "responsesStateModeLabel": "Gestionare previous_response_id", - "responsesStateModeAuto": "Auto", + "responsesStateModeAuto": "Automat", "responsesStateModeStrip": "Eliminare", "responsesStateModePreserve": "Păstrare", "responsesStateHint": "Auto elimină previous_response_id cu excepția cazului în care o conexiune activează explicit stocarea OpenAI Responses. Eliminare este cea mai sigură opțiune pentru clienții stateless, cum ar fi VS Code Custom Endpoint; contextul depinde apoi de trimiterea istoricului complet de către client.", "responsesStateSaveError": "Eșec la actualizarea setării pentru starea Responses", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Nivel rapid Codex", "codexFastTierDesc": "Injectați global service_tier=priority pentru cererile OpenAI Codex.", "codexFastTierHint": "Când este activat, OmniRoute adaugă service_tier=priority la solicitările Codex de ieșire pentru conexiuni care nu specifică deja un nivel. Nivelul prioritar necesită o cheie API OpenAI Enterprise sau calea ChatGPT-auth Codex; alte tipuri de chei vor primi o eroare legată de nivel de la OpenAI. Setările per conexiune de pe pagina furnizorului Codex au prioritate.", "codexFastTierSaveError": "Nu s-a putut actualiza setarea Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Ping automat pentru cota Codex", + "codexAutoPingDesc": "Activare opțională pentru fiecare conexiune: trimite o solicitare mică imediat după resetarea ferestrei unei sesiuni Codex, astfel încât aceasta să nu fie inactivă când aveți nevoie de ea.", + "codexAutoPingWarning": "Consumă o cantitate mică din cota Codex reală la fiecare ping. Este dezactivată în mod implicit — activați-o doar pentru conexiunile pe care vă bazați în mod activ.", + "codexAutoPingSaveError": "Actualizarea setării de ping automat Codex a eșuat", + "codexAutoPingToggleAria": "Comutați pingul automat pentru cota Codex pentru {connection}", "codexFastTierTierLabel": "Nivel de serviciu", "codexFastTierTierPriority": "Prioritate", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "Flexibil", "codexFastTierTierDefault": "Implicit", "codexFastTierModelsLabel": "Modele Fast-tier", "codexFastTierModelsHint": "Doar modelele bifate primesc service_tier atunci când Fast Tier este activat.", "codexFastTierModelCheckbox": "Activează Fast Tier pentru {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Mod rapid Claude", "claudeFastModeDesc": "Optați solicitările Claude selectate în modul rapid antropic (viteză: „rapid”).", "claudeFastModeHint": "Anthropic nu acceptă oficial modul rapid pentru clienții în stil SDK. Când este activat, OmniRoute redirecționează un antet X-CPA-Force-Fast-Mode, astfel încât o versiune CLIProxyAPI asociată să poată opta pentru falsificarea punctului de intrare. Doar modelele Opus enumerate sunt supuse controlului Anthropic la nivelul clientului. Nivelul de abonament, planul Max și soldul creditului în modul rapid sunt încă aplicate pe partea serverului — Anthropic poate returna credite out_of_credit chiar și atunci când comutatorul este activat.", "claudeFastModeModelsLabel": "Aplicat modelelor ({count})", @@ -8054,7 +8069,7 @@ "pending": "Modificări nesalvate", "badge": { "bypassable": "Permite bypass prin scope-ul manage", - "strict": "Strict loopback", + "strict": "Loopback strict", "auth_required": "Autentificare necesară", "public": "Public", "always_protected": "Întotdeauna protejat", @@ -8071,7 +8086,7 @@ }, "resilienceBaseCooldownLabel": "Răcire de bază", "scopeLabel": "Domeniul de aplicare", - "triggerLabel": "Trigger", + "triggerLabel": "Declanșator", "effectLabel": "Efect", "statusEnabled": "Activat", "statusDisabled": "Dezactivat", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Interval global de verificare", "resilienceCredentialHealthEveryMinutes": "La fiecare {minutes} min", "resilienceCredentialHealthHint": "0 dezactivează scanarea în fundal (max. 1440 min = 24 h). Conexiunile cu propria valoare de verificare a stării ignoră această valoare globală; 0 pe o conexiune o exclude chiar dacă scanarea globală e pornită.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Activat întotdeauna pentru {provider} — este necesar pentru siguranța contului OAuth și nu poate fi dezactivat.", + "forcedFingerprintBadge": "Obligatoriu", "sessionAffinityTitle": "Afinitate de sesiune", "sessionAffinityDesc": "Păstrează o conversație pe același cont timp de atâtea secunde, pentru orice furnizor. 0 dezactivează opțiunea.", "sessionAffinityTtl": "TTL afinitate (secunde)", @@ -8202,24 +8217,24 @@ "modelLockoutMaxBackoffStepsDescription": "Numărul maxim de pași de backoff înainte ca durata de cooldown să nu mai crească. Limita Cooldown maxim este atinsă prima în majoritatea configurațiilor, făcând din aceasta un plafon de siguranță pentru situațiile în care Cooldown maxim este mărit.", "disableSessionStickiness": "Dezactivare persistență sesiune", "disableSessionStickinessDesc": "Combinațiile round-robin și aleatorii comută la o conexiune diferită la fiecare solicitare, în loc să fixeze o întreagă conversație la o singură conexiune pe baza hash-ului primului mesaj. Lăsați dezactivat pentru a păstra accesările din cache-ul de prompturi pentru conversațiile cu mai multe replici. Suprascrierile per combinație au prioritate.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Rutare în funcție de localitatea cache-ului de prompturi", + "promptCacheAffinityDesc": "Preferă același cont de furnizor pentru cheile de cache ale prompturilor care corespund, păstrând în același timp comutarea de rezervă bazată pe stare și cotă.", + "reasoningTokenBuffer": "Memorie tampon pentru tokenurile de raționament", + "reasoningTokenBufferDesc": "Permite rutării combinate să adauge spațiu suplimentar max_tokens numai pentru modelele de raționament cunoscute, atunci când întreaga memorie tampon se încadrează într-o limită de ieșire cunoscută.", + "zeroLatencyOptimizations": "Optimizări cu latență zero", + "zeroLatencyOptimizationsDesc": "Activați opțional hedgingul, omiterile predictive TTFT și comprimarea proactivă a solicitărilor de rezervă. Lăsați opțiunea dezactivată pentru a împiedica aceste funcții de latență să concureze țintele sau să comprime solicitările de rezervă.", "credentialRedaction": "Mascare date de autentificare", "credentialRedactionDesc": "Mascați cheile API, tokenurile și secretele din contextul trimis către furnizori și din răspunsuri.", "enableCredentialRedaction": "Activează redactarea credențialelor", "enableCredentialRedactionDesc": "Elimină cheile API, tokenurile, cheile private și JWT-urile din mesaje, apeluri de instrumente și răspunsuri.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Sincronizare automată dezactivată", + "pricingAutoSyncEnabled": "Sincronizare automată activată", "modalityBridgeIntro": "Transformați conținutul multimodal în text înainte să ajungă la modele care procesează doar text. Punțile pentru imagine, audio și video sunt disponibile și configurabile.", "modalityBridgeVisionTab": "Viziune", "modalityBridgeAudioTab": "Audio", "modalityBridgeVideoTab": "Video", "modalityBridgeSubTabsAria": "Secțiuni Pod Modality", - "modalityBridgeVisionTitle": "Vision Bridge", + "modalityBridgeVisionTitle": "Punte vizuală", "modalityBridgeVisionDesc": "Descrie imaginile cu un model de viziune și continuă cu modelul de text ales de utilizator.", "modalityBridgeMode": "Mod", "modalityBridgeModeAuto": "Automat (recomandat)", @@ -8242,8 +8257,8 @@ "modalityBridgeCacheEnabledDesc": "Reutilizați descrierile pentru imagini identice (cheie SHA-256, în memorie).", "modalityBridgeCacheTtlMinutes": "Cache TTL (minute)", "modalityBridgeCacheMaxEntries": "Numărul maxim de intrări în cache", - "modalityBridgeStatsBridged": "bridged", - "modalityBridgeStatsCacheHits": "cache hits", + "modalityBridgeStatsBridged": "intermediat", + "modalityBridgeStatsCacheHits": "reușite din cache", "modalityBridgeStatsFailures": "defecțiuni", "modalityBridgeStatsLastUsed": "ultimul folosit", "modalityBridgeStatsNever": "niciodată", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Sănătate", "cliproxyapiPort": "Port", "qdrantHost": "Gazdă", - "qdrantCollection": "Colecție", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Colecție" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", + "title": "Motor RTK", + "description": "Compresie adaptată comenzilor pentru rezultatele instrumentelor, jurnalele terminalului și rezultatele compilării.", + "enabled": "Activat", + "intensity": "Intensitate", + "intensityMinimal": "Minimă", "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "intensityAggressive": "Agresivă", + "toolResults": "Rezultatele instrumentelor", + "assistantMessages": "Mesajele asistentului", + "codeBlocks": "Blocuri de cod", "filterCatalog": "Catalog de filtrare", "filterCatalogDesc": "Filtre de ieșire disponibile în funcție de categorie", "guidedConfig": "Configurare", "guidedConfigDesc": "Ajustați modul în care RTK filtrează ieșirea terminalului", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Număr maxim de linii", + "maxChars": "Număr maxim de caractere", "deduplicateThreshold": "Deduplicați pragul", "customFilters": "Filtre personalizate", "detectedType": "Tip detectat", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Eșecuri", "rawOutputAlways": "Întotdeauna", "rawOutputMaxBytes": "Octeți maxim de ieșire brută", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Testarea filtrelor", + "pasteOutput": "Lipiți rezultatul instrumentului pentru a testa filtrarea...", "presetHigh": "Agresiv", "presetLow": "Lumină", "presetMaxChars": "Numărul maxim de caractere de ieșire", "presetMaxLines": "Max linii de ieșire", "presetMedium": "Standard", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Rulează", + "result": "Rezultat", + "previewEmpty": "Rulați un exemplu pentru a previzualiza rezultatul RTK.", + "detected": "Detectat", "masterSwitchOffAlert": "Comutatorul principal Token Saver este DEZACTIVAT — aceste setări nu vor afecta cererile până când nu îl activați din pagina Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Tokenuri filtrate", + "filtersActive": "Filtre active", + "requests": "Solicitări", + "avgSavings": "Economie medie", "simpleMode": "Simplu", "advancedMode": "Avansat", "searchFilters": "Filtre de căutare...", @@ -8481,7 +8488,7 @@ "savings": "Economii", "original": "Original", "compressed": "Comprimat", - "diff": "Diff", + "diff": "Diferențe", "last7Days": "Ultimele 7 zile", "noDataYet": "Nu există date încă", "runs": "Rulări", @@ -8602,14 +8609,14 @@ }, "intensity": { "lite": "Lite", - "full": "Full", + "full": "Complet", "ultra": "Ultra" } }, "modeOptions": { "default": "Implicit", "off": "Oprit", - "lite": "Lite", + "lite": "Minimal", "standard": "Standard", "aggressive": "Agresiv", "ultra": "Ultra", @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Combinații de compresie", + "description": "Definește modul în care motoarele sunt combinate pentru diferite scenarii de rutare.", + "createCombo": "Creează o combinație de compresie", + "editCombo": "Editează", + "deleteCombo": "Șterge", + "deleteConfirm": "Ștergi această combinație de compresie?", + "pipeline": "Flux de procesare", + "addStep": "Adaugă un pas", + "removeStep": "Elimină", + "name": "Nume", + "descriptionField": "Descriere", + "languagePacks": "Pachete lingvistice", + "outputMode": "Mod de ieșire", + "assignToRouting": "Atribuie combinațiilor de rutare", + "noAssignments": "Nu există combinații de rutare disponibile", + "default": "Implicit", + "setAsDefault": "Setează ca implicit", + "save": "Salvează", + "cancel": "Anulează", + "enabled": "Activat", "loading": "Se încarcă…", "hubTitle": "Hub de compresie", "hubDescription": "Alege ce profil de compresie rulează la nivel global.", @@ -8661,28 +8668,28 @@ "contextEditingNote": "În prezent disponibil doar pentru Claude (Anthropic). Este un mod delegat: furnizorul șterge blocurile vechi de utilizare a instrumentelor pe partea de server — noi nu rescriem mesajul. Nu afectează alți furnizori.", "namedCombos": "Combinații denumite", "namedCombosDescription": "Salvați diferite pipeline-uri și atribuiți-le unor combinații specifice de rutare.", + "activeProfileMasterSwitchOffWarning": "Profilul activ de mai jos nu va rula până când comutatorul principal „Comprimarea prompturilor” nu este activat.", + "activeProfileMasterSwitchOffCta": "Activează-l în Setări", "comboNamePlaceholder": "Nume combinație", "descriptionPlaceholder": "Descriere", "nameRequired": "Introduceți un nume de combinație înainte de a salva.", "pipelineRequired": "Adăugați cel puțin un pas de pipeline înainte de a salva.", "saveComboFailed": "Eroare la salvarea combinației (HTTP {status}).", "deleteNamedConfirm": "Ștergeți combinația „{name}”?", - "intensityLite": "Lite", + "intensityLite": "Minimal", "intensityFull": "Complet", "intensityUltra": "Ultra", "active": "Activ", "languagePacksList": "Pachete de limbi: {packs}", "dragToReorder": "Trageți pentru a reordona pasul", "engine": "Motor", - "intensity": "Intensitate", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensitate" }, "compressionStudio": { "noRun": "Nicio rulare de compresie disponibilă.", "liveDataHint": "Datele în timp real sosesc prin canalul de compresie WebSocket.", "cockpitView": "Vizualizare cockpit", - "canvas": "Canvas", + "canvas": "Pânză", "waterfall": "Cascadă", "replayDone": "Redare finalizată", "pauseReplay": "Întrerupeți redarea", @@ -8691,7 +8698,7 @@ "replay": "Redare", "resetReplay": "Resetați redarea", "stepProgress": "pasul {current}/{total}", - "inlineView": "Inline", + "inlineView": "În linie", "splitComingSoon": "Vizualizare divizată (în curând)", "inputPlaceholder": "Lipește un prompt, rezultatul unui instrument sau contextul…", "activeCombined": "Activ în fluxul combinat", @@ -8705,7 +8712,7 @@ "run": "Rulează", "laneRejected": "respins: {reason}", "error": "eroare", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Previzualizarea fluxului de procesare combinat a eșuat: {reason}", "combinedFlow": "Flux combinat", "eachLayer": "Fiecare strat separat", "diff": "Diferență", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Activează motorul", "enableDescription": "Rulează ultimul în stivă (după ce RTK/Caveman curăță textul, OmniGlyph convertește restul în imagini) și rulează, de asemenea, de sine stătător prin modul omniglyph. Aceasta este o previzualizare și rămâne dezactivată în mod implicit până când validarea end-to-end este finalizată.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Profil de compresie", + "profileDescription": "Profilul este o limită superioară, nu una inferioară: un profil mai strict nu poate fi relaxat printr-o suprascriere la nivel de pas. Măsurat pe această bază de cod: cu modul sigur pentru cod sau cel echilibrat, o sesiune care nu a acumulat încă istoric nu comprimă nimic, deoarece ambele măresc pragul minim de caractere și păstrează nativ promptul de sistem, schemele instrumentelor și rezultatele instrumentelor.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agresiv (implicit)", + "description": "Politica măsurată de rapoartele publicate. Transformă în imagini promptul de sistem, documentația instrumentelor și istoricul dens." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Echilibrat", + "description": "Păstrează nativă starea activă și protejează ultimele 8 schimburi; restrânge doar istoricul mai vechi și încheiat." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Sigur pentru cod", + "description": "Păstrează nativă autoritatea, schemele instrumentelor și rezultatele live ale instrumentelor, protejând ultimele 12 schimburi. Nu comprimă nimic până când sesiunea acumulează istoric." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Transmitere directă", + "description": "Direcționează fără transformare. Motorul este omis, iar solicitarea este redirecționată fără modificări." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Selectați profilul de comprimare OmniGlyph", "saved": "Salvat.", "saveFailed": "Nu s-a putut salva.", "enableAria": "Activează motorul OmniGlyph", @@ -8816,7 +8823,7 @@ "stateError": "Eroare", "stateNotInstalled": "Neinstalat", "stateUnknown": "Necunoscut", - "port": "port {port}", + "port": "portul {port}", "externalBadge": "Gestionat extern", "externalTitle": "9Router extern detectat", "externalDescription": "OmniRoute a găsit 9Router la {host}:{port}. Ciclul său de viață, jurnalele, actualizările și cheia de serviciu rămân gestionate de instalarea externă.", @@ -8889,50 +8896,50 @@ "fallbackCodes": "Coduri de stare pentru fallback (separate prin virgulă)", "invalidUrl": "URL nevalid — trebuie să înceapă cu http:// sau https://", "saved": "Salvat", - "saveFailed": "Failed to save setting", - "modelMapping": "Model Mapping", - "modelMappingDescription": "Map OmniRoute model IDs to CLIProxyAPI model IDs (for example, \"gpt-4o\": \"openai-gpt-4o\")", - "modelMappingEditor": "Model mapping JSON editor", - "mappingSaved": "Mapping saved", - "mappingSaveFailed": "Failed to save mapping", - "mappingInvalidJson": "Invalid JSON.", - "mappingMustBeObject": "The mapping must be a JSON object, not an array or primitive value.", - "mappingValueMustBeString": "The value for key “{key}” must be a string.", - "save": "Save" + "saveFailed": "Salvarea setării a eșuat", + "modelMapping": "Maparea modelelor", + "modelMappingDescription": "Mapați ID-urile modelelor OmniRoute la ID-urile modelelor CLIProxyAPI (de exemplu, \"gpt-4o\": \"openai-gpt-4o\")", + "modelMappingEditor": "Editor JSON pentru maparea modelelor", + "mappingSaved": "Maparea a fost salvată", + "mappingSaveFailed": "Salvarea mapării a eșuat", + "mappingInvalidJson": "JSON nevalid.", + "mappingMustBeObject": "Maparea trebuie să fie un obiect JSON, nu un tablou sau o valoare primitivă.", + "mappingValueMustBeString": "Valoarea pentru cheia „{key}” trebuie să fie un șir de caractere.", + "save": "Salvați" }, "contextCaveman": { - "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "title": "Motorul Caveman", + "description": "Comprimarea mesajelor bazată pe reguli, pachete lingvistice, analize și comenzi pentru modul de ieșire.", "advancedConfig": "Configurare avansată", "advancedConfigDesc": "Reglați fin comportamentul compresiei", "aggressiveSettings": "Setări agresive", "aggressiveSettingsDesc": "Compresie maximă cu potențiale compromisuri de calitate", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Solicitări", + "tokensSaved": "Tokenuri economisite", + "savingsPercent": "Economii %", + "avgLatency": "Latență medie", + "languagePacks": "Pachete lingvistice", + "languagePacksDesc": "Activați regulile de comprimare pentru anumite limbi.", "labelAutoTrigger": "Comprimați automat când contextul depășește", "labelCompressionRate": "Rezistența la compresiune", "labelMaxTokens": "Jetoane țintă per mesaj", "labelMinLength": "Lungimea minimă a mesajului", "labelMinSavings": "Jetoane minime de salvat", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", - "inputCompressionTitle": "Input compression", - "inputCompressionDesc": "Rewrite chat history with shorter wording. Reduces input tokens by ~50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", - "masterDisabledWarning": "The Token Saver master switch is OFF — these settings will not affect requests until you turn it on from Compression Settings or change it here.", + "enabled": "Activat", + "autoDetect": "Detectare automată a limbii", + "rulesCount": "{count} reguli", + "inputCompressionTitle": "Comprimarea intrării", + "inputCompressionDesc": "Rescrie istoricul conversației folosind formulări mai scurte. Reduce tokenurile de intrare cu ~50%.", + "analyticsTitle": "Analize de comprimare", + "noAnalytics": "Nu există încă analize de comprimare.", + "masterDisabledWarning": "Comutatorul principal Token Saver este DEZACTIVAT — aceste setări nu vor afecta solicitările până când nu îl activați din Setări de comprimare sau nu îl modificați aici.", "outputMode": "Mod de ieșire", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Mod de ieșire", "quickSettings": "Setări rapide", "quickSettingsDesc": "Setări de bază de compresie pentru a începe", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Ocolire automată pentru claritate", + "bypassConditions": "Condiții de ocolire", "bypassConditionsList": "securitate, ireversibil, clarificare, sensibil la ordine", "simpleMode": "Simplu", "advancedMode": "Avansat", @@ -8944,14 +8951,14 @@ "ultraSettings": "Setări Ultra", "ultraSettingsDesc": "Compresie semantică alimentată de SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Răspundeți concis. Păstrați termenii tehnici, codul, erorile, URL-urile și identificatorii.", + "full": "Răspundeți succint și compact. Păstrați integral conținutul tehnic.", + "ultra": "Răspundeți extrem de succint, folosind abrevieri tehnice uzuale. Păstrați simbolurile exacte." } }, "translator": { "title": "Traducător", - "metaTitle": "Translator Playground | OmniRoute", + "metaTitle": "Spațiu de testare pentru Translator | OmniRoute", "metaDescription": "Depanați, testați și vizualizați traducerile în format API între furnizori", "playgroundTitle": "Loc de joacă pentru traducător", "playground": "Loc de joacă", @@ -8987,7 +8994,7 @@ "ideCliIntegrations": "Integrari IDE/CLI", "inMemoryNote": "Notă: Evenimentele sunt stocate în memorie și resetate atunci când serverul repornește.", "ok": "OK", - "errorShort": "ERR", + "errorShort": "EROARE", "formatConverter": "Convertor de format", "formatConverterDescription": "Lipiți sau introduceți un corp de solicitare JSON. Traducătorul va detecta automat formatul sursă și îl va converti în formatul țintă. Utilizați aceasta pentru a depana modul în care OmniRoute traduce cererile între formate (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (intermediar) → {target}", @@ -9027,7 +9034,7 @@ "testBenchDescription": "Rulați scenarii predefinite (Simple Chat, Tool Calling etc.) pentru a verifica traducerea și compatibilitatea furnizorilor. Selectați un format sursă și un furnizor țintă, apoi rulați toate testele pentru a vedea un procent de compatibilitate. Folosiți acest lucru pentru a afla ce caracteristici funcționează între furnizori.", "targetProvider": "Furnizor țintă", "runAllTests": "Rulați toate testele", - "runTest": "Run Test", + "runTest": "Rulează testul", "reRun": "Reluați", "running": "Alergare...", "passed": "a trecut", @@ -9036,17 +9043,17 @@ "chunks": "bucăți", "scenarioSimpleChat": "Chat simplu", "scenarioToolCalling": "Apelarea instrumentului", - "scenarioMultiTurn": "Multi-turn", + "scenarioMultiTurn": "Conversație cu mai multe schimburi", "scenarioThinking": "Gândirea", "scenarioSystemPrompt": "Prompt de sistem", - "scenarioStreaming": "Streaming", + "scenarioStreaming": "Transmitere în flux", "templateNames": { "simple-chat": "Chat simplu", "tool-calling": "Apelarea instrumentului", - "multi-turn": "Multi-turn", + "multi-turn": "Conversație cu mai multe schimburi", "thinking": "Gândirea", "system-prompt": "Prompt de sistem", - "streaming": "Streaming", + "streaming": "Transmitere în flux", "vision": "Viziunea", "schema-coercion": "Schema Coerciție" }, @@ -9101,16 +9108,16 @@ "anthropicCompatibleLabel": "Compatibil antropic", "noTemplateForFormat": "Nu există șablon pentru acest format", "translationFailed": "Traducerea a eșuat: {error}", - "pipelineDebugger": "Pipeline Debugger", + "pipelineDebugger": "Depanator de pipeline", "translationPipeline": "Conducta de traduceri", - "loading": "Loading…", + "loading": "Se încarcă…", "compressionOriginal": "Original", - "compressionCompressed": "Compressed", - "compressionSaved": "Saved", - "compressionDuration": "Duration", - "pipelineStepsAria": "Pipeline steps", - "copyIntermediateJson": "Copy intermediate JSON", - "copyOutputJson": "Copy output JSON", + "compressionCompressed": "Comprimat", + "compressionSaved": "Economisit", + "compressionDuration": "Durată", + "pipelineStepsAria": "Pașii pipeline-ului", + "copyIntermediateJson": "Copiază JSON-ul intermediar", + "copyOutputJson": "Copiază JSON-ul de ieșire", "pipelineVisualization": "Vizualizarea conductei", "pipelineVisualizationHint": "Trimiteți un mesaj pentru a vedea cum decurge cererea dvs. prin detectare → traducere → apel de la furnizor.", "chatTesterDescription": "Trimiteți mesaje ca un anumit format de client și inspectați fiecare pas al conductei de traducere.", @@ -9157,7 +9164,7 @@ "loadToolSample": "Încărcați eșantionul de apel de instrument", "transformToResponses": "Transformați-vă în răspunsuri", "rawChatSseInput": "Finalizări brute de chat SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "SSE pentru Responses API transformat", "noResultsYet": "Niciun rezultat încă", "transformedEvents": "Evenimente transformate", "uniqueEventTypes": "Tipuri de evenimente unice", @@ -9170,31 +9177,31 @@ "comboRouted": "Combo direcționat", "uniqueEndpoints": "Puncte finale unice", "routeDetails": "Detalii traseu", - "comboBadge": "Combo", + "comboBadge": "Combinație", "routeEndpointLabel": "Punct final", "routeConnectionLabel": "Conexiune", "scenarioVision": "Vedere (înțelegerea imaginii)", "scenarioSchemaCoercion": "Coerciție în schemă (ieșire structurată)", "techniques": "Tehnici:", - "friendlyTitle": "Translator", - "friendlySubtitle": "Use your existing app with any provider — without rewriting code.", - "conceptHeadline": "Your app speaks one API's \"language\". The Translator converts it to use another provider.", - "conceptDiagramAppLabel": "Your app", - "conceptDiagramSourceLabel": "Source format", + "friendlyTitle": "Traducător", + "friendlySubtitle": "Folosește aplicația existentă cu orice furnizor — fără a rescrie codul.", + "conceptHeadline": "Aplicația ta vorbește „limbajul” unui API. Translator îl convertește pentru a putea utiliza un alt furnizor.", + "conceptDiagramAppLabel": "Aplicația ta", + "conceptDiagramSourceLabel": "Format sursă", "conceptDiagramHubLabel": "OpenAI (hub)", - "conceptDiagramTargetLabel": "Target provider", - "conceptDiagramExampleApp": "e.g. Anthropic SDK", + "conceptDiagramTargetLabel": "Furnizor țintă", + "conceptDiagramExampleApp": "de ex., Anthropic SDK", "conceptDiagramExampleSource": "claude", "conceptDiagramExampleTarget": "Gemini", - "conceptHowItWorksToggle": "How it works", - "conceptHowItWorksBody": "Your app sends a request in its own format. The Translator detects the format, converts it through OpenAI as an intermediate hub (or directly when a direct translator is available), sends it to the chosen provider, and returns the response converted back to your app's format.", - "tabTranslate": "Translate", - "tabMonitor": "Monitor", - "tabTranslateAriaLabel": "Go to the Translate tab", - "tabMonitorAriaLabel": "Go to the Monitor tab", - "simpleAppUsesLabel": "My app uses", - "simpleAppUsesHint": "The API format your app speaks (e.g. Anthropic SDK = claude).", - "simpleSendToLabel": "Send to", + "conceptHowItWorksToggle": "Cum funcționează", + "conceptHowItWorksBody": "Aplicația ta trimite o solicitare în formatul propriu. Translator detectează formatul, îl convertește prin OpenAI ca hub intermediar (sau direct, când este disponibil un translator direct), îl trimite furnizorului ales și returnează răspunsul convertit înapoi în formatul aplicației tale.", + "tabTranslate": "Tradu", + "tabMonitor": "Monitorizează", + "tabTranslateAriaLabel": "Accesează fila Tradu", + "tabMonitorAriaLabel": "Accesează fila Monitorizare", + "simpleAppUsesLabel": "Aplicația mea folosește", + "simpleAppUsesHint": "Formatul API utilizat de aplicația ta (de ex., Anthropic SDK = claude).", + "simpleSendToLabel": "Trimite către", "simpleSendToHint": "Unde se trimite efectiv solicitarea (un furnizor conectat în OmniRoute).", "simpleStartWithLabel": "Începe cu", "simpleStartWithExamplePlaceholder": "Selectează un exemplu gata pregătit", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Lipește o solicitare JSON; formatul este detectat automat.", "advancedPipelineTitle": "Pipeline intermediar OpenAI", "advancedPipelineSubtitle": "Vizualizează fiecare pas de traducere (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Transformator de flux (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Convertește Chat Completions SSE în Responses API.", "advancedTestBenchTitle": "Banc de testare (8 scenarii)", "advancedTestBenchSubtitle": "Rulează toate scenariile și raportează reușit/eșuat + % de compatibilitate.", @@ -9253,7 +9260,7 @@ "tokens": "tokenuri", "pauseAutoRefresh": "Întrerupe reîmprospătarea automată", "resumeAutoRefresh": "Reia reîmprospătarea automată", - "live": "Live", + "live": "În direct", "copyInput": "Copiază intrarea", "copyOutput": "Copiază ieșirea", "streamTransformFailed": "Eșec la transformarea fluxului" @@ -9267,7 +9274,7 @@ "grokAutoTopUpDisabled": "Dezactivat", "grokAutoTopUpAt": "la", "grokAutoTopUpAdd": "adaugă", - "grokAutoTopUpMax": "max", + "grokAutoTopUpMax": "maxim", "grokAutoTopUpMonth": "luna", "grokAdditionalCredits": "Credite Suplimentare", "kiloAccountBalance": "Soldul contului", @@ -9277,17 +9284,17 @@ "kiloPassRemaining": "Rămas", "kiloPassRenews": "Se reînnoiește în {count} zile", "kiloPassUsageLabel": "Utilizarea din această lună", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Credite pentru utilizare suplimentară", + "kimiExtraUsage": "Utilizare suplimentară", + "kimiExtraUsageEnabled": "Activat", + "kimiExtraUsageDisabled": "Dezactivat", + "kimiExtraUsageFrozen": "Înghețat", + "kimiExtraUsageUnavailable": "Indisponibil", + "kimiMonthlyUsed": "Utilizat luna aceasta", + "kimiMonthlyLimit": "Limită lunară", + "kimiMonthlyLimitUnlimited": "Nelimitat", + "kimiAdditionalCredits": "Credite suplimentare", + "loggerTab": "Jurnal", "proxyTab": "Proxy", "budgetManagement": "Managementul bugetului", "budgetSaved": "Limitele bugetare au fost salvate", @@ -9314,17 +9321,17 @@ "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", + "promptCache": "Cache pentru prompturi", "systemHealth": "Sănătatea sistemului", "entries": "Intrări", "activeCount": "{count} activ", "openCircuitBreakersDetected": "Întreruptoare deschise detectate", "hitRate": "Rata de lovituri", - "hitsMisses": "Hits / Misses", + "hitsMisses": "Reușite / Ratări", "circuitBreakers": "Întreruptoare", "lockedIPs": "IP-uri blocate", "lockoutsAutoRefreshHint": "Blocări ale limitei ratei per model • Reîmprospătare automată 10 secunde", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# blocat} other {# blocate}}", "timeLeft": "{time} a rămas", "howItWorks": "Cum funcționează", "howItWorksSubtitle": "Aflați cum evaluările vă validează răspunsurile LLM", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "Răspunsurile sunt comparate cu criteriile așteptate. Vedeți succes/eșec pentru fiecare caz cu valori de latență și feedback detaliat.", "evalsStrategyContainsLabel": "Conține", "evalsStrategyExactLabel": "Potrivire exactă", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Expresie regulată", "evalsStrategyCustomLabel": "Logică personalizată", "evalsStrategyContainsDescription": "Verifică dacă rezultatul LLM conține subșirul așteptat.", "evalsStrategyExactDescription": "Verifică dacă rezultatul LLM se potrivește exact cu valoarea așteptată.", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Modele în curs de testare", "searchSuitesPlaceholder": "Căutați apartamente...", "passSuffix": "trece", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# caz} other {# cazuri}}", "runEval": "Rulați Eval", - "runAllSuites": "Run All", + "runAllSuites": "Rulează tot", "runAllRunning": "Alergând toate...", "runAllProgress": "Rulează {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# suită eșuată} other {# suite eșuate}}", "runAllCompleted": "A rulat {suites} suite — {passed} a trecut, {failed} a eșuat", "runAllCompletedWithFailures": "A rulat {completed} suite; {failedSuites} nu s-a finalizat", "runningProgress": "Se rulează {current}/{total}...", @@ -9423,7 +9430,7 @@ "providerLimits": "Limitele furnizorului", "noProviders": "Niciun furnizor conectat", "connectProvidersForQuota": "Conectați-vă la furnizori cu OAuth pentru a urmări limitele și utilizarea cotelor API.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# cont} other {# conturi}}", "filteredFromCount": "(filtrat din {count})", "autoRefresh": "Reîmprospătare automată", "refreshAll": "Reîmprospătați toate", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Nu s-a putut actualiza vizibilitatea cotei", "account": "Cont", "modelQuotas": "Cote model", - "lastUsed": "Last Refreshed", + "lastUsed": "Ultima actualizare", "actions": "Acțiuni", "refreshQuota": "Actualizează cota", "today": "Astăzi", @@ -9452,9 +9459,9 @@ "cardExpand": "Extinde", "cardCollapse": "Restrânge", "moreQuotas": "+ încă {count}", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Negrupat", + "viewFlat": "Plan", + "viewByEnvironment": "După mediu", "noQuotaDataAvailable": "Nu sunt disponibile date privind cotele", "noAccountsForTierFilter": "Nu s-au găsit conturi pentru filtrul de nivel", "tierAll": "Toate", @@ -9504,10 +9511,10 @@ "confirmRedeemResetCreditButton": "Revendică creditul", "resetCreditRedeemed": "Resetare valorificată", "resetCreditRedeemFailed": "Nu s-a putut valorifica creditul de resetare", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Salvarea suitei a eșuat", "clone": "Clonează", "exportSuite": "Exportați", - "importSuite": "Import", + "importSuite": "Importă", "suiteExported": "Suita a fost exportată", "suiteExportFailed": "Nu s-a putut exporta suita", "suiteImportReady": "Importul suită a fost încărcat pentru examinare", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Suita de evaluare JSON nevalidă", "suiteBuilderCloneSuffix": "copie", "suiteBuilderImportedSuite": "Suită importată", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", + "scorecardTitle": "Fișă de evaluare", + "evalApiKey": "Cheie API", + "scorecardPassRate": "Rată de promovare", "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "actualOutputLabel": "Rezultat efectiv", + "evalTargetHint": "Selectați un model sau o combinație pentru evaluare.", + "suiteBuilderDeleted": "Suita a fost ștearsă cu succes", + "suiteBuilderCaseCardHint": "Definiți promptul de intrare și criteriile pentru rezultatul așteptat.", + "nextResetUtc": "Următoarea resetare (UTC)", + "scorecardHint": "Rate de promovare agregate pentru toate suitele de evaluare.", + "suiteLatestRunsHint": "Cele mai recente rulări de evaluare pentru această suită.", + "saving": "Se salvează", + "suiteBuilderCaseModelLabel": "Model (opțional)", + "evalControlsTitle": "Controale de evaluare", + "suiteBuilderEditTitle": "Editați suita de evaluare", + "suiteBuilderCaseStrategyLabel": "Strategie de validare", + "notifySelectDifferentCompareTarget": "Selectați o altă țintă pentru comparație", + "recentRunsHint": "Se afișează cele mai recente rulări de evaluare. Faceți clic pe o rulare pentru a vedea rezultatele detaliate.", + "evalCompareHint": "Opțional, comparați rezultatele cu o a doua țintă.", + "suiteBuilderCaseInvalid": "Acest caz are erori de validare. Remediați-le înainte de salvare.", + "historyEmpty": "Nu există încă un istoric al evaluărilor", + "suiteBuilderUpdated": "Suita a fost actualizată cu succes", + "resetInterval": "Interval de resetare", + "suiteBuilderCreateTitle": "Creați o suită de evaluare", + "activePeriodSpend": "Cheltuieli în perioada activă", + "evalApiKeyHint": "Selectați cheia API care va fi utilizată pentru solicitările de evaluare.", + "evalCompareOptional": "Comparați (opțional)", + "suiteBuilderDeleteFailed": "Ștergerea suitei a eșuat", + "suiteBuilderCaseSystemPromptPlaceholder": "Instrucțiuni de sistem opționale...", + "scorecardCases": "Cazuri", + "runCompletedWithScore": "Evaluare finalizată — rată de promovare de {score}%", + "suiteBuilderCustomBadge": "Personalizat", + "targetSuiteDefaults": "Valori implicite ale suitei", + "suiteBuilderDeleteConfirm": "Sigur doriți să ștergeți această suită? Această acțiune nu poate fi anulată.", + "suiteBuilderNameLabel": "Numele suitei", + "scorecardSuites": "Suite", + "evalCompareTarget": "Țintă de comparație", + "suiteBuilderCaseModelPlaceholder": "de ex. gpt-4o-mini", + "evalControlsHint": "Configurați ținta evaluării și cheia API, apoi rulați suitele pentru a valida calitatea modelului.", + "recentRunsTitle": "Rulări recente", + "suiteBuilderCaseSystemPromptLabel": "Prompt de sistem", + "suiteBuilderCaseExpectedPlaceholder": "de ex. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "de ex. def Fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Lipiți răspunsul exact așteptat", "suiteBuilderCaseExpectedPlaceholderRegex": "de ex. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Utilizați o expresie regulată JavaScript fără a încheia barele oblice.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "de ex. Suită pentru calitatea codului", + "suiteBuilderAddCase": "Adăugați un caz", + "cancel": "Anulați", + "evalTarget": "Țintă", + "suiteBuilderCaseNameLabel": "Numele cazului", + "weeklyLimitUsd": "Limită săptămânală (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "de ex. Scrie o funcție fibonacci în Python", + "suiteBuilderNameRequired": "Numele suitei este obligatoriu", + "suiteBuilderCaseUserPromptLabel": "Prompt utilizator", + "daily": "Zilnic", + "resultErrorLabel": "Eroare", + "suiteBuilderBuiltInBadge": "Încorporat", + "suiteBuilderCaseCardTitle": "Caz de testare", "suiteBuilderDuplicateCase": "Duplicat", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", + "weeklyLimitPlaceholder": "de ex. 50.00", + "suiteBuilderCaseTagsHint": "Etichete separate prin virgulă pentru organizarea cazurilor de testare.", + "notifyEvalRunFailedWithReason": "Evaluarea a eșuat: {reason}", + "weekly": "Săptămânal", + "runEvalRunning": "Se execută evaluarea...", + "delete": "Șterge", + "resetTimeUtc": "Ora de resetare (UTC)", + "evalApiKeyAuto": "Automat (utilizează valoarea implicită)", + "suiteBuilderDescriptionPlaceholder": "Descriere opțională a ceea ce testează această suită...", + "targetComparisonTitle": "Compararea țintelor", + "save": "Salvează", + "suiteBuilderCreated": "Suita a fost creată cu succes", + "suiteLatestRuns": "Cele mai recente rulări", + "suiteBuilderCaseExpectedLabel": "Valoare așteptată", + "historyLatency": "Latență", + "suiteBuilderCaseTagsPlaceholder": "de ex. coding, python", + "targetTypeCombo": "Combinație", + "scorecardPassed": "Reușit", + "suiteBuilderCaseTagsLabel": "Etichete", + "suiteBuilderNewSuite": "Suită nouă", + "notifyEvalLoadFailed": "Nu s-au putut încărca datele evaluării", + "notConfigured": "Neconfigurat", + "suiteBuilderCaseNamePlaceholder": "de ex. test Fibonacci în Python", "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "suiteBuilderCreateAction": "Creează suita", + "suiteBuilderCasesHint": "Fiecare caz trimite un prompt și validează răspunsul.", + "suiteBuilderUpdatedAt": "Actualizat", + "errorBadge": "Eroare", + "suiteBuilderCasesTitle": "Cazuri de testare", + "edit": "Editează", + "monthly": "Lunar", + "suiteBuilderCasesRequired": "Este necesar cel puțin un caz de testare", + "weeklyLimitSummary": "Rezumatul limitei bugetare săptămânale", + "suiteBuilderDescriptionLabel": "Descriere", + "targetComparisonHint": "Comparație alăturată a rezultatelor evaluării între ținte.", + "compareCompletedWithScore": "Comparație finalizată — rată de promovare de {score}%", + "staleQuotaTooltip": "Ultima reîmprospătare a eșuat — se afișează datele din cache", "quotaThresholdLabel": "Min a rămas", "quotaCutoffsColumnHelp": "Opriți solicitările atunci când cota rămasă scade la acest procent sau mai jos.", "quotaCutoffsButtonDefault": "Implicit", @@ -9715,7 +9722,7 @@ "awsIamIdentity": "Centrul de identitate AWS IAM", "googleAccount": "Cont Google", "githubAccount": "Cont GitHub", - "importToken": "Import Token", + "importToken": "Importă tokenul", "pasteToken": "Lipiți indicativul de reîmprospătare din Kiro IDE.", "awsRegion": "Regiunea AWS", "autoDetecting": "Se detectează automat jetoanele...", @@ -9745,7 +9752,7 @@ "proxy": "Proxy", "level": "Nivel", "directNative": "Direct (nativ)", - "combo": "Combo", + "combo": "Combinație", "inputTokens": "eu:", "outputTokens": "O:" }, @@ -9756,7 +9763,7 @@ "usageByModel": "Utilizare după model", "usageByAccount": "Utilizare după Cont", "failedToLoad": "Nu s-au încărcat statisticile de utilizare.", - "tokenHealth": "Token Health", + "tokenHealth": "Starea tokenului", "totalOAuth": "OAuth totală", "healthy": "Sănătos", "warning": "Avertisment", @@ -9863,7 +9870,7 @@ "backToLogin": "Înapoi la Logare", "forgotPassword": "Ai uitat parola?", "continueWithOidc": "Continuă cu OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Parolă implicită: CHANGEME (dacă INITIAL_PASSWORD nu a fost setată)", "Authorization": "Autorizare", "Content-Disposition": "Conținut-Dispoziție", "waitingForAuthorization": "Se așteaptă autorizația...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Se așteaptă autorizația antigravitație...", "waitingForQoderAuthorization": "Se așteaptă autorizarea Qoder...", "exchangingCodeForTokens": "Se schimbă codul pentru jetoane...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Versiune Node.js incompatibilă", + "nodeIncompatibleDesc": "Rulezi Node.js {version}, care nu respectă politica OmniRoute privind mediile de execuție securizate acceptate. Folosește o versiune Node.js 20.x sau 22.x LTS actualizată cu corecții.", + "nodeIncompatibleFixLabel": "Remediere: instalează o versiune Node.js 22 LTS actualizată cu corecții", + "nodeIncompatibleHint": "OmniRoute necesită Node.js 22.22.2+ (22.x LTS) sau 24.0.0+ (24.x LTS). Se recomandă Node 24 LTS.", "resetViaAppDataTitle": "Resetează prin Datele Aplicației", "resetViaAppDataDescription": "Ștergeți fișierul de setări din directorul de date al aplicației pentru a vă reseta parola:", "quitDesktopApp": "Ieși complet din aplicația desktop OmniRoute", @@ -9933,7 +9940,7 @@ "navigateHome": "Navigați la acasă", "toggleMenu": "Comutați meniul", "featuresLink": "Caracteristici", - "docsLink": "Docs", + "docsLink": "Documentație", "github": "GitHub", "versionLive": "v1.0 este acum live", "oneEndpoint": "Un punct final pentru", @@ -9992,7 +9999,7 @@ "resources": "Resurse", "documentation": "Documentare", "npm": "NPM", - "legal": "Legal", + "legal": "Informații juridice", "mitLicense": "Licență MIT", "footerTagline": "Punctul final unificat pentru generarea AI. Conectați-vă, direcționați și gestionați cu ușurință furnizorii dvs. de AI.", "copyright": "© {year} OmniRoute. Toate drepturile rezervate.", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "Furnizorii", "commonUseCases": "Cazuri comune de utilizare", "clientCompatibility": "Compatibilitate client", - "protocolsToc": "Protocols", + "protocolsToc": "Protocoale", "apiReference": "Referință API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Referință pentru Management API", + "managementApiDescription": "Endpointuri de automatizare pentru registrul de proxy-uri, atribuirea domeniilor de aplicare și migrarea proxy-urilor vechi.", "method": "Metoda", "path": "Calea", "notes": "Note", @@ -10044,7 +10051,7 @@ "supportsChat": "Acceptă atât punctele finale de chat, cât și cele de răspuns.", "oauthAutoRefresh": "Conexiune OAuth cu reîmprospătare automată a simbolului.", "fullStreaming": "Suport complet pentru streaming pentru toate modelele.", - "docsLabel": "Docs", + "docsLabel": "Documentație", "docsHeroDescription": "Gateway AI pentru LLM cu mai mulți furnizori. Un punct final pentru OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor și peste 20 de furnizori.", "openDashboard": "Deschideți tabloul de bord", "endpointPage": "Pagina finală", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Instalați OmniRoute ca aplicație web progresivă pe browsere Android, iOS și desktop.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Rulează OmniRoute fără interfață grafică pe Android prin Termux. Accesează panoul de control din browserul mobil.", "featureRoutingTitle": "Rutare cu mai mulți furnizori", "featureRoutingText": "Dirijați cererile către peste 30 de furnizori de AI printr-un singur punct final compatibil cu OpenAI. Acceptă API-uri de chat, răspunsuri, audio și imagine.", "featureCombosTitle": "Combo și echilibrare", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "Utilizați OmniRoute ca o adresă URL de bază stabilă în timp ce rotați conturile sau combinațiile de furnizori de dedesubt.", "clientKimiBullet2": "Preferați modelele prefixate în fluxurile de codare, astfel încât back-up și pista de audit să rămână explicite.", "clientKimiBullet3": "Utilizați `/v1/responses` atunci când doriți rutare nativă în stil Responses pentru clienții care folosesc instrumente.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "Protocoale: MCP și A2A", + "protocolsDescription": "Pe lângă API-urile compatibile cu OpenAI, OmniRoute oferă două protocoale operaționale: MCP pentru executarea instrumentelor și A2A pentru fluxuri de lucru între agenți.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Folosește MCP prin stdio pentru a permite clienților să descopere și să apeleze instrumentele OmniRoute, cu vizibilitate pentru audit.", + "protocolMcpStep1": "Pornește transportul MCP cu `omniroute --mcp`.", + "protocolMcpStep2": "Configurează clientul MCP să utilizeze transportul stdio.", + "protocolMcpStep3": "Apelați `omniroute_get_health` și `omniroute_list_combos` pentru a valida conectivitatea.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "Utilizați A2A JSON-RPC pentru a trimite sarcini sincron sau prin streaming SSE.", + "protocolA2aStep1": "Citiți `/.well-known/agent.json` pentru descoperirea agentului.", + "protocolA2aStep2": "Trimiteți cereri `message/send` sau `message/stream` către `POST /a2a`.", + "protocolA2aStep3": "Gestionați ciclul de viață al sarcinilor cu `tasks/get` și `tasks/cancel`.", + "protocolTroubleshootingTitle": "Depanarea protocolului", + "protocolTroubleshooting1": "Dacă starea MCP este offline, verificați dacă procesul stdio rulează și dacă fișierul heartbeat este actualizat.", + "protocolTroubleshooting2": "Dacă sarcinile A2A rămân în starea `working`, inspectați `/api/a2a/tasks/:id` și evenimentele din flux pentru starea finală.", + "protocolTroubleshooting3": "Utilizați `/dashboard/mcp` și `/dashboard/a2a` pentru controale operaționale și vizibilitate pentru audit.", "endpointChatNote": "Punct final de chat compatibil cu OpenAI (implicit).", "endpointResponsesNote": "Punct final API pentru răspunsuri (Codex, serie o).", "endpointModelsNote": "Catalog model pentru toți furnizorii conectați.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Rescrie ajutor pentru clienți fără /v1.", "endpointRewriteResponsesNote": "Rescrie ajutor pentru răspunsuri fără /v1.", "endpointRewriteModelsNote": "Rescrierea de ajutor pentru descoperirea modelului fără /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Listați elementele salvate din registrul de proxy-uri (acceptă paginarea).", + "mgmtProxiesCreateNote": "Creați în registru un element proxy reutilizabil.", + "mgmtProxiesHealthNote": "Obțineți metricile de stare pe 24 de ore/în interval mobil pentru fiecare proxy salvat, din jurnalele proxy.", + "mgmtProxiesBulkAssignNote": "Atribuiți sau eliminați un proxy pentru mai multe ID-uri de domeniu într-o singură cerere.", + "mgmtAssignmentsListNote": "Listați atribuirile proxy după domeniu, scope_id sau proxy_id.", + "mgmtAssignmentsUpdateNote": "Atribuiți sau eliminați proxy-ul pentru domeniul global/furnizor/cont/combinație.", + "mgmtLegacyMigrationNote": "Importați mapările proxyConfig vechi în atribuirile din registru.", "modelPrefixesDescriptionStart": "Utilizați prefixul furnizorului înainte de numele modelului pentru a direcționa către un anumit furnizor. Exemplu:", "modelPrefixesDescriptionEnd": "rute către GitHub Copilot.", "provider": "Furnizor", @@ -10233,7 +10240,7 @@ "metadataTitleTemplate": "%s — Documentația OmniRoute", "metadataDefaultTitle": "Documentația OmniRoute", "metadataDescription": "Documentație cuprinzătoare pentru gateway-ul OmniRoute AI — configurare, API, compresie, desfășurare și altele.", - "layoutNavTitle": "OmniRoute Docs", + "layoutNavTitle": "Documentația OmniRoute", "layoutHomeLink": "Acasă Docs", "layoutDashboardLink": "← Înapoi la Taboul de Bord", "homeTitle": "Documentația OmniRoute", @@ -10296,7 +10303,7 @@ "listSeparator": "-", "questionsVisit": "Întrebări? Vizitează-ne", "githubRepository": "Depozitul GitHub", - "privacySection1Title": "1. Local-First Architecture", + "privacySection1Title": "1. Arhitectură local-first", "privacySection1Text": "OmniRoute este proiectat ca o aplicație mai întâi locală. Toate procesarea și stocarea datelor au loc în întregime pe mașina dvs. Nu există un server centralizat care să vă colecteze informațiile.", "privacySection2Title": "2. Datele pe care le stocăm", "privacyDataStoredIn": "Următoarele date sunt stocate local în", @@ -10332,39 +10339,39 @@ "termsDataLocationText": "Jurnalele de utilizare, cheile API și configurația sunt stocate în", "termsSection5Title": "5. Exonerare de responsabilitate", "termsSection5Text": "OmniRoute este furnizat „ca atare”, fără garanții de niciun fel. Nu suntem responsabili pentru costurile suportate prin utilizarea API-ului, întreruperile serviciilor sau pierderea datelor. Păstrați întotdeauna copii de siguranță ale configurației dvs.", - "termsSection6Title": "6. Open Source", + "termsSection6Title": "6. Sursă deschisă", "termsSection6Text": "OmniRoute este un software open-source. Sunteți liber să îl inspectați, să modificați și să îl distribuiți în conformitate cu termenii licenței sale." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "Agenți CLI", + "description": "Descoperiți agenții CLI instalați pe sistemul dvs. Adăugați agenți personalizați pentru detectare automată.", + "refresh": "Reîmprospătați", + "installed": "Instalat", + "notFound": "Negăsit", + "builtIn": "Încorporat", + "custom": "Personalizat", + "remove": "Eliminați", + "addCustomAgent": "Adăugați un agent personalizat", + "addCustomAgentDesc": "Înregistrați orice instrument CLI pentru detectare. Acesta va fi scanat automat la reîmprospătare.", + "agentName": "Numele agentului", + "binaryName": "Numele fișierului binar", + "versionCommand": "Comanda pentru versiune", + "spawnArgs": "Argumente de lansare", + "addAgent": "Adăugați agentul", + "scanning": "Se scanează sistemul pentru agenți CLI...", + "opencodeIntegration": "Integrare OpenCode", + "opencodeDetected": "opencode {version} detectat", + "opencodeDesc": "Generați un fișier {configFile} gata de utilizare, cu URL-ul de bază OmniRoute și toate modelele disponibile — plasați-l în rădăcina proiectului și rulați {command}.", + "downloadConfig": "Descărcați {file}", + "downloaded": "Descărcat!", + "setupGuideTitle": "Ghid de configurare", + "openCliTools": "Deschide instrumentele CLI", + "setupGuideDetectCliTitle": "Detectează CLI-urile instalate", + "setupGuideDetectCliDesc": "Dă clic pe Reîmprospătare după instalarea sau actualizarea unui CLI, pentru ca OmniRoute să poată rescana executabilele și versiunile.", + "setupGuideCustomAgentTitle": "Înregistrează un executabil personalizat", + "setupGuideCustomAgentDesc": "Folosește Adaugă agent personalizat când CLI-ul tău nu se află în lista integrată. Specifică numele executabilului și comanda pentru versiune.", + "setupGuideCommandMissingTitle": "Remediază eroarea „command not found”", + "setupGuideCommandMissingDesc": "Asigură-te că respectiva comandă CLI există în PATH, deschide o nouă sesiune de terminal și execută din nou Reîmprospătare.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10492,11 +10499,11 @@ }, "templateNames": { "simple-chat": "Chat simplu", - "streaming": "Streaming", + "streaming": "Transmitere în flux", "system-prompt": "Prompt de sistem", "thinking": "Gândirea", "tool-calling": "Apelarea instrumentului", - "multi-turn": "Multi-turn", + "multi-turn": "Conversații cu mai multe schimburi", "vision": "Viziunea", "schema-coercion": "Schema Coerciție" }, @@ -10538,108 +10545,108 @@ } }, "cache": { - "title": "Cache Management", + "title": "Gestionarea memoriei cache", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Reîmprospătare", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Intrări în memorie", + "memoryEntriesSub": "LRU în memorie", + "dbEntries": "Intrări în baza de date", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", + "cacheHits": "Accesări în cache", + "cacheHitsSub": "dintr-un total de {total}", + "tokensSaved": "Tokenuri economisite", + "tokensSavedSub": "Estimate pe baza accesărilor", + "hitRate": "Rată de accesare", + "performance": "Performanța memoriei cache", + "autoRefresh": "Se reîmprospătează automat la fiecare {seconds}s", + "hits": "Accesări", + "misses": "Ratări", "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "behavior": "Comportamentul memoriei cache", + "behaviorDeterministic": "Sunt memorate în cache numai cererile fără streaming cu temperature=0.", + "behaviorBypass": "Ocolește folosind antetul {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "TTL implicit: 30 de minute. Configurează prin {envVar}.", + "idempotency": "Strat de idempotență", + "activeDedupKeys": "Chei de deduplicare active", + "dedupWindow": "Fereastră de deduplicare", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Golirea memoriei cache a eșuat.", + "unavailable": "Memoria cache nu este disponibilă", + "unavailableDesc": "Nu s-au putut prelua statisticile memoriei cache. Asigură-te că serverul rulează.", "loadingCacheAria": "Încărcare cache", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Cache pentru prompturi (la nivelul furnizorului)", + "semanticCache": "Cache semantic", + "promptCacheSectionDesc": "Afișează activitatea de stocare în cache a prompturilor la nivelul furnizorului din istoricul de utilizare, astfel încât să poți vedea unde este activ controlul cache-ului și cât de mult reutilizezi datele de intrare.", + "promptTrendDesc": "Volumul orar al solicitărilor, acoperirea cache-ului și volumul citirilor din cache în ultimele 24 de ore.", + "cachedRequests": "Solicitări memorate în cache", + "cachedRequests24h": "Solicitări memorate în cache (24 h)", + "cacheHitRate": "Rata de accesare a cache-ului", + "cacheRate": "Rata cache-ului", + "cacheRateDesc": "din totalul solicitărilor", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Metricile cache-ului pentru prompturi", + "withCacheControl": "Cu controlul cache-ului", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Raport de reutilizare a cache-ului", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Cost estimat economisit", + "lastUpdated": "Ultima actualizare", + "hoursTracked": "ore monitorizate", + "busiestHour": "Ora de vârf", + "peakCacheRate": "Rata maximă a cache-ului", + "trendHour": "Oră", + "activityVolume": "Activitate", + "requestsShort": "solicitări", + "inputShort": "Intrare", + "cachedShort": "Din cache", + "writeShort": "Scriere", + "resetting": "Se resetează...", + "resetMetrics": "Resetați metricile", + "byProvider": "Defalcare după furnizor", + "providerCacheRateDesc": "Fiecare furnizor afișează numărul total de tokenuri de intrare, tokenurile citite din cache și tokenurile scrise în cache, astfel încât să puteți verifica raportul de reutilizare în raport cu totalurile brute.", "provider": "Provider", - "requests": "Requests", + "requests": "Solicitări", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Tendința cache-ului (24 h)", + "peakCached": "Vârf din cache", + "cached": "În cache", + "overview": "Prezentare generală", "tableProvider": "Furnizor", "tableModel": "Model", "performanceTitle": "Performanță", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "Cache-ul propriu al OmniRoute pentru răspunsuri deterministe. Când este activat, solicitările repetate fără streaming, cu temperature=0, pot fi procesate local, fără a accesa furnizorul din amonte.", + "semanticCacheDisabledDesc": "Cache-ul semantic este dezactivat. OmniRoute va omite reutilizarea locală a răspunsurilor până când îl reactivați în Setări.", + "semanticEntriesDesc": "Înregistrările persistente din cache-ul semantic stocate în prezent în SQLite. Activitatea cache-ului pentru prompturi de la furnizor nu este afișată aici.", + "searchEntries": "Căutați intrări...", + "search": "Căutare", + "loading": "Se încarcă...", + "entriesLoadError": "Încărcarea intrărilor din cache-ul semantic a eșuat.", + "noEntries": "Nu s-au găsit intrări în cache", + "noPromptCacheData": "Nu a fost înregistrată încă nicio activitate a cache-ului pentru prompturi la nivelul furnizorului.", + "noTrendData": "Nu a fost înregistrată nicio activitate a cache-ului pentru prompturi în ultimele 24 de ore.", + "signature": "Semnătură", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Creat", + "expires": "Expiră", + "actions": "Acțiuni", + "deduplicatedRequests": "Solicitări deduplicate", + "savedCalls": "Apeluri API economisite", + "totalProcessed": "Total solicitări procesate", + "disabled": "Dezactivat", + "totalRequests": "Total solicitări", "reasoningCache": "Reluarea raționamentului", "reasoningCacheDesc": "Păstrează gândirea modelului pentru fluxurile de apelare a sculelor cu mai multe ture", "reasoningEntries": "Intrări active", "reasoningReplayRate": "Rata de reluare", "reasoningReplays": "Total reluări", "reasoningCharsCached": "Caractere stocate în cache", - "reasoningMisses": "Cache Misses", + "reasoningMisses": "Ratări ale memoriei cache", "reasoningByProvider": "Prin Furnizor", "reasoningByModel": "După model", "reasoningRecentEntries": "Intrări recente", @@ -10669,16 +10676,16 @@ "minutesAgo": "acum {minutes}m", "hoursAgo": "acum {hours}h", "daysAgo": "acum {days}z", - "entries": "Entries" + "entries": "Intrări" }, "proxyConfigModal": { "levelGlobal": "Global", "levelProvider": "Furnizor", - "levelCombo": "Combo", + "levelCombo": "Combinație", "levelKey": "cheie", "levelDirect": "Direct (fără proxy)", "titleGlobal": "Configurație globală proxy", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "Proxy {level} — {label}", "loading": "Se încarcă configurația proxy...", "inheritingFrom": "Mostenind de la", "source": "Sursa", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "Lipiți o cheie API Devin existentă dintr-o sesiune Devin autentificată. Disponibilitatea exportului cheii și pașii variază în funcție de versiunea și contul Devin.", "devinPasteDescription": "Furnizați cheia dumneavoastră WINDSURF_API_KEY (obținută prin `devin auth login`, sau prin comanda \"Windsurf: Provide Auth Token\" din Windsurf IDE).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json pentru Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Cheie API / Token", "saving": "Se salvează…", @@ -10785,38 +10792,38 @@ }, "cursorAuthModal": { "title": "Conectați Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Autentificare cu Cursor", + "tabImport": "Importă tokenul", + "loginDescription": "Deschide pagina de autentificare Cursor în browser. Funcționează în Docker — aprobă în browserul gazdă, apoi revino aici.", + "loginWithCursor": "Autentificare cu Cursor", + "startingLogin": "Se pornește…", + "waitingApproval": "Se așteaptă aprobarea autentificării Cursor…", + "openUrlHint": "Dacă browserul nu s-a deschis:", + "openLoginLink": "Deschide pagina de autentificare", + "cancelLogin": "Anulează autentificarea", "autoDetecting": "Se detectează automat jetoanele...", "readingFromCursor": "Citirea din Cursor IDE sau cursor-agent", "tokensAutoDetected": "Jetoanele au fost detectate automat cu succes din Cursor IDE!", "cursorNotDetected": "IDE-ul cursorului nu a fost detectat. Vă rugăm să lipiți manual indicativul.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Rulezi în Docker? Este de preferat să folosești Autentificare cu Cursor. Importul automat din IDE și cursor-agent nu sunt de obicei disponibile în container. Consultă docs/providers/CURSOR-DOCKER.md.", "accessToken": "Token de acces", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Token de reîmprospătare", + "refreshTokenPlaceholder": "Opțional — permite reîmprospătarea automată a tokenului", "required": "*", "accessTokenPlaceholder": "Indicatorul de acces se va completa automat...", "machineId": "ID mașină", - "optional": "(optional)", + "optional": "(opțional)", "machineIdPlaceholder": "ID-ul mașinii se va completa automat...", "importing": "Se importă...", - "importToken": "Import Token", + "importToken": "Importă tokenul", "cancel": "Anulează", "errorAutoDetect": "Nu se pot detecta automat jetoanele", "errorAutoDetectFailed": "Jetoanele de detectare automată nu au reușit", "errorEnterToken": "Vă rugăm să introduceți simbolul de acces", "errorImportFailed": "Importul nu a reușit", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Autentificarea Cursor nu a putut fi pornită", + "errorLoginPoll": "Autentificarea Cursor a eșuat", + "errorLoginTimeout": "Autentificarea Cursor a expirat — încearcă din nou" }, "pricingModal": { "title": "Configurarea prețurilor", @@ -10843,9 +10850,9 @@ "selectProxy": "Selectează {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Importă formatul vechi", + "bulkAssign": "Atribuire în masă", + "addProxy": "Adaugă proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Testează", + "edit": "Editează", + "delete": "Șterge", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10891,7 +10898,7 @@ "scopeGlobal": "global", "scopeProvider": "furnizor", "scopeAccount": "cont", - "scopeCombo": "combo", + "scopeCombo": "combinație", "bulkImportErrorMissingName": "Lipsește NAME", "bulkImportErrorMissingHost": "Lipsește HOST", "bulkImportErrorInvalidPort": "PORT nevalid (trebuie să fie 1-65535)", @@ -10906,7 +10913,7 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Eșuat", "successRate": "{rate}% succes", "avgLatency": "{latency}ms în medie", "assignmentsCount": "{count} sarcini", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Strategie de rotație", "poolStrategyHint": "round-robin parcurge membrii în ordine; random alege uniform; sticky reține un membru pentru o fereastră de timp; latency-optimized îl alege pe cel mai rapid pe baza jurnalelor.", "poolStrategyFailed": "Nu s-a putut actualiza strategia de rotație", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Distribuire circulară", "strategyRandom": "Aleatoriu", - "strategySticky": "Sticky", + "strategySticky": "Persistent", "strategyLatency": "Optimizat pentru latență", "poolMembersLabel": "Membrii pool-ului ({count})", "poolNoMembers": "Nu există încă proxy-uri în acest pool.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# ieșire} other {# ieșiri}} utilizate de {connections, plural, one {# conexiune} other {# conexiuni}} · până la {max} pe o singură ieșire · ultimele {hours} h", + "poolEgressObservationEmpty": "Nu s-a observat trafic în ultimele {hours} h", + "poolEgressObservationHint": "Calculat din jurnalul proxy pentru intervalul de timp: adresele IP de ieșire distincte observate pentru membrii acestui grup și conexiunile OmniRoute care le-au utilizat. „Pe o singură ieșire” se referă la întregul interval, nu la același moment. Blocarea 429 per IP întrerupe temporar doar conexiunile din aceeași familie de furnizori.", "poolRemove": "Elimină", "poolRemoveFailed": "Nu s-a putut elimina proxy-ul din pool", "poolAddLabel": "Adaugă un proxy", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", + "endpoint": "Punct final", + "provider": "Furnizor", "model": "Model", "accountKey": "Account Key", "autoAccounts": "Auto ({count} conturi)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Trimite", + "cancel": "Anulează", + "audioFile": "Fișier audio", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Șterge tot", + "request": "Solicitare", + "response": "Răspuns", + "transcription": "Transcriere", + "copy": "Copiază", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "S-au generat {count} imagini", "generatedImage": "Imagine generată {index}", - "save": "Save", + "save": "Salvează", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Răspunsuri", "completions": "Completări", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Vectori de încorporare", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Moderări", - "rerank": "Rerank", + "rerank": "Reclasificare", "search": "Search", "webFetch": "Preluare web" }, "conversationalChat": "Chat conversațional", "clearChat": "Ștergeți chatul", "typeMessagePlaceholder": "Tastați un mesaj... (Shift+Enter pentru linia nouă)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Conversație", + "tabCompare": "Compară", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Construiește", + "configPane": "Configurare", + "systemPrompt": "Prompt de sistem", + "systemPromptPlaceholder": "Ești un asistent util.", + "modelPlaceholder": "de ex. openai/gpt-4o", + "endpointLabel": "Punct final", + "parametersLabel": "Parametri", + "collapseConfig": "Restrânge panoul de configurare", + "expandConfig": "Extinde panoul de configurare", + "temperature": "Temperatură", + "maxTokens": "Număr maxim de tokenuri", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Penalizare pentru prezență", + "frequencyPenalty": "Penalizare pentru frecvență", "reasoningLabel": "Raționament", "thinking": "Gândire", "effort": "Efort", "effortDefault": "Implicit", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Aleatoriu (lăsați necompletat)", + "presetsLabel": "Presetări", + "loadPreset": "Încarcă presetarea", + "savePreset": "Salvează presetarea", + "noPresets": "Nicio presetare", + "presetNamePlaceholder": "Numele presetării", + "savingPreset": "Se salvează…", + "nameRequired": "Numele este obligatoriu", + "failedToSavePreset": "Salvarea presetării a eșuat", + "improvePrompt": "Îmbunătățește promptul", + "improvingPrompt": "Se îmbunătățește…", + "improvePromptTitle": "Îmbunătățește-ți promptul cu AI", + "setModelFirst": "Setează mai întâi un model", "setModelInConfigFirst": "Setează mai întâi un model în panoul Config.", "improvePromptFailed": "Îmbunătățirea promptului a eșuat.", "improvePromptAria": "Îmbunătățește promptul folosind AI", "confirmImprovePrompt": "Confirmă îmbunătățirea promptului", "improvePromptDescription": "Aceasta va trimite promptul de sistem curent către pentru a genera o versiune îmbunătățită.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Această acțiune va consuma din cota modelului configurat în Config.", + "improveConfirm": "Îmbunătățește", + "exportCode": "Exportă codul", + "exportCodeTitle": "Exportă codul", "exportShort": "Exportă", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Nu există nicio stare a spațiului de testare disponibilă pentru export.", "closeExportModal": "Închide fereastra modală de export", "close": "Închide", "exportRealKeyWarning": "Avertisment de securitate: export blocat — a fost detectată o cheie API reală în rezultat. Resetează cheia API și încearcă din nou.", @@ -11071,12 +11078,12 @@ "copyLangCode": "Copiază codul {language}", "loadingPresets": "Se încarcă…", "loadPresetPlaceholder": "Încarcă presetarea…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", + "copyCode": "Copiază", + "copiedCode": "Copiat!", + "addModel": "+ Adaugă model", + "runAll": "Rulează tot", + "cancelAll": "Anulează tot", + "maxColumnsReached": "Maximum {max} coloane", "modelPlaceholderCompare": "Model (Cmd+K)…", "noModel": "Niciun model", "statusLabel": "Stare: {status}", @@ -11095,29 +11102,29 @@ "waitingForResponse": "Se așteaptă răspunsul…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", + "metricsDisclaimer": "estimare pe partea clientului", + "tokensLabel": "Tokenuri", "costLabel": "Cost", - "costEstimated": "(estimated)", + "costEstimated": "(estimat)", "ttftTitle": "Timp până la primul token (estimare pe partea de client)", "tpsTitle": "Tokeni pe secundă (estimare pe partea de client)", "tokenCountsTitle": "Tokeni prompt ↑ / Tokeni completare ↓", "estimatedCostTitle": "Cost estimat (acuratețea nu este garantată)", - "toolsLabel": "Tools", + "toolsLabel": "Instrumente", "toolsCount": "Instrumente ({count})", - "addTool": "Add tool", + "addTool": "Adaugă instrument", "editTool": "Editează instrumentul {name}", "removeTool": "Elimină instrumentul {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Numele funcției", "toolNameRequiredPlaceholder": "Nume funcție *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Descriere (opțional)", "toolParamsLabel": "Parametri (schemă JSON)", "toolParamsJsonSchema": "Schemă JSON pentru parametri", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parametrii trebuie să fie JSON valid", + "structuredOutputLabel": "Ieșire structurată", + "enableJsonMode": "Activează modul JSON", + "disableJsonMode": "Dezactivează modul JSON", + "invalidJson": "JSON nevalid", "jsonMode": "Mod JSON", "jsonModeDescription": "Forțează response_format: json_schema", "schemaName": "Nume schemă", @@ -11125,10 +11132,10 @@ "jsonSchemaEditor": "Editor schemă JSON", "schemaValidated": "Schemă validată", "validateSchema": "Validează schema", - "seed": "Seed", + "seed": "Valoare inițială", "stopSequences": "Secvențe de oprire", "stopSequencesPlaceholder": "de ex. \"\\n\\n\" sau \"END\"", - "autoProvider": "Auto", + "autoProvider": "Automat", "httpError": "Eroare {status}", "requestCancelled": "Solicitare anulată", "networkError": "Eroare de rețea", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} coloane", "addModelToCompare": "Adaugă o coloană de model pentru comparare", "modelsSimultaneously": "Până la {max} modele simultan", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Se execută…", + "runLabel": "Execută", + "enterToolResult": "Introdu rezultatul instrumentului…", "build": { "step1Label": "Ce dorești să testezi?", "step2Label": "Configurează", @@ -11179,12 +11186,12 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Punct final", "apiKey": "Cheie API", "model": "Model", "voice": "Voce", "speed": "Viteză", - "input": "Input", + "input": "Intrare", "url": "URL", "format": "Format", "depth": "Adâncime", @@ -11198,7 +11205,7 @@ "tunnel": "Tunel", "send": "Trimite", "selectKey": "Selectează cheia", - "testLabel": "Test", + "testLabel": "Testează", "expandTest": "Extinde testul", "collapseTest": "Restrânge testul", "revealKey": "Afișează cheia", @@ -11214,7 +11221,7 @@ "audioFile": "Fișier audio", "fileTooLarge25Mb": "Fișierul este prea mare. Dimensiunea maximă: 25 MB.", "selectAudioFirst": "Selectează mai întâi un fișier audio.", - "speechToText": "Speech to Text", + "speechToText": "Transcriere audio", "chooseFile": "Alege fișierul", "audioFormats25Mb": "MP3, WAV, M4A, OGG sau FLAC · Maxim 25 MB", "musicSample": "O piesă ambientală calmă cu pian cald și coarde delicate", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Rezultat {number}", "noKeysFound": "Nu s-au găsit chei API. Adaugă una în secțiunea Chei.", "exampleLabel": "Exemplu", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} tokeni de intrare / {tokensOut} tokeni de ieșire", "defaultKey": "(implicit)", "clear": "Curăță", @@ -11250,73 +11257,73 @@ "stop": "Oprește" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", + "recording": "Înregistrare", + "paused": "În pauză", + "pipelineLogsOn": "Jurnalele pipeline-ului sunt activate", + "pipelineLogsOff": "Jurnalele pipeline-ului sunt dezactivate", + "updatingPipelineLogs": "Se actualizează jurnalele pipeline-ului...", + "updatePipelineFailed": "Actualizarea jurnalizării pipeline-ului a eșuat", + "capturePipeline": "Capturează sarcinile utile ale pipeline-ului pentru solicitările noi", + "searchPlaceholder": "Caută modele, furnizori, conturi, chei API, combinații...", + "allProviders": "Toți furnizorii", + "allModels": "Toate modelele", + "allAccounts": "Toate conturile", + "allApiKeys": "Toate cheile API", "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", + "ok": "Succes", + "err": "Eroare", + "combo": "Combinație", + "keys": "Chei", + "shown": "Afișate", + "sortNewest": "Cele mai noi", + "sortOldest": "Cele mai vechi", + "sortTokensDesc": "Tokenuri ↓", + "sortTokensAsc": "Tokenuri ↑", + "sortDurationDesc": "Durată ↓", + "sortDurationAsc": "Durată ↑", + "sortStatusDesc": "Stare ↓", + "sortStatusAsc": "Stare ↑", "sortModelAsc": "Model A-Z", "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortLogs": "Sortează jurnalele", + "refresh": "Reîmprospătează", + "columnsLabel": "Coloane", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "ACTIV", "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "upstream": "Furnizor din amonte", + "semanticCacheHit": "Rezultat găsit în memoria cache semantică (furnizat de OmniRoute)", + "upstreamResponse": "Răspunsul furnizorului din amonte", + "noApiKey": "Nicio cheie API", + "requestedRoutedTitle": "Solicitat {requested}, rutat ca {routed}", "statusFilters": { - "all": "All", + "all": "Toate", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Succes", + "combo": "Combinație" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", + "status": "Stare", + "cacheSource": "Sursa memoriei cache", "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "requested": "Solicitat", + "provider": "Furnizor", + "protocol": "Protocolul solicitării", + "account": "Cont", + "apiKey": "Cheie API", + "combo": "Combinație", + "tokens": "Tokenuri", "compressed": "Compresie", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Durată", + "time": "Timp", + "conversation": "Conversație", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Se încarcă jurnalele...", + "noLogs": "Nu există încă jurnale. Efectuați câteva apeluri API pentru a le vedea aici.", + "noMatchingLogs": "Niciun jurnal nu corespunde filtrelor actuale.", + "callLogsInfo": "Jurnalele apelurilor sunt salvate și ca fișiere JSON în {dataDir} și sunt rotite în funcție de {retentionDays} și {maxEntries}.", "loadMore": "Încarcă mai mult", "loadingMore": "Se încarcă mai mult...", "correlationId": "ID de corelație", @@ -11367,12 +11374,12 @@ }, "payloadMissing": "Artifactul detaliat al payload-ului nu mai este disponibil pentru această intrare de jurnal.", "payloadCorrupt": "Artifactul detaliat al payload-ului nu a putut fi analizat.", - "notAvailable": "N/A", - "semanticCache": "Semantic (OmniRoute)", + "notAvailable": "Indisponibil", + "semanticCache": "Semantică (OmniRoute)", "upstreamCache": "Upstream (Furnizor)", "ariaLabel": "Detalii jurnal solicitare", "completed": "Finalizat", - "upstreamStatus": "Upstream: {status}", + "upstreamStatus": "Sursă: {status}", "statusDiscrepancy": "OmniRoute a returnat {status} deși furnizorul a returnat {provider}", "previousRequest": "Cerere anterioară", "nextRequest": "Următoarea cerere", @@ -11399,7 +11406,7 @@ "rotated": "Rotit: {initial} -> {final}", "apiKey": "Cheie API", "noApiKey": "Fără cheie API", - "combo": "Combo", + "combo": "Combinație", "error": "Eroare", "unblockAll": "Dezblochează tot", "cleared": "Șters", @@ -11417,59 +11424,59 @@ "correlationId": "ID de corelare", "correlationIdValue": "ID de corelare: {id}", "detailedPayloadInfo": "Activați mai întâi jurnalizarea detaliată dacă doriți vizualizarea payload-ului client/provider în patru etape pentru cererile noi.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Copiază tot", + "copiedAll": "Totul a fost copiat" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", + "filterAll": "Toate", + "filterErrors": "Erori", + "filterSuccess": "Succes", + "filterTimeout": "Expirare", + "colStatus": "Stare", "colProxy": "Proxy", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", + "colType": "Tip", + "colLevel": "Nivel", + "colProvider": "Furnizor", + "colTarget": "Țintă", + "colLatency": "Latență", + "colClientIp": "IP client", + "colTime": "Timp", + "recording": "Înregistrare", + "paused": "Întreruptă", + "searchPlaceholder": "Caută gazdă, furnizor, țintă, IP...", + "allTypes": "Toate tipurile", + "allLevels": "Toate nivelurile", + "allProviders": "Toți furnizorii", "total": "total", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "err": "EROARE", + "timeoutShort": "EXP", "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "newest": "Cele mai noi", + "oldest": "Cele mai vechi", + "latencyDesc": "Latență ↓", + "latencyAsc": "Latență ↑", + "refresh": "Reîmprospătare", + "columns": "Coloane", + "loadingProxyLogs": "Se încarcă jurnalele proxy...", + "noProxyLogs": "Nu există încă jurnale proxy. Configurați proxy-uri și efectuați apeluri API pentru a le vedea aici.", + "noMatchingLogs": "Niciun jurnal nu corespunde filtrelor actuale.", + "tlsFingerprint": "Amprentă TLS Chrome 124", "colPublicIp": "IP public" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "speech": "Vorbire", + "search": "Căutare", + "images": "Imagini", + "chat": "Conversație", + "music": "Muzică", + "responses": "Răspunsuri", + "rerank": "Reclasificare", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Încorporări", + "transcription": "Transcriere" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", + "title": "Execuție", + "description": "Observabilitate în timp real — reziliență pe 3 niveluri + sesiuni + alerte de cotă", + "pause": "Pauză", + "resume": "Reluare", + "refreshNow": "Reîmprospătează acum", + "kpiSessions": "Sesiuni", + "kpiCircuits": "Circuite", + "kpiCooldowns": "Perioade de așteptare", + "kpiLockouts": "Blocări", + "hintStickyBound": "{count} cu asociere persistentă", + "hintRecovering": "{count} în recuperare", + "hintAllHealthy": "toate funcționează normal", + "hintOpen": "deschise", + "hintConnsCooling": "conexiuni în perioada de așteptare", + "hintModelsBlocked": "modele blocate", + "resilienceTitle": "Reziliență pe 3 niveluri", + "resilienceSubtitle": "Reflectă modelul de reziliență documentat", + "providersHealthy": "{percent}% dintre furnizori sunt funcționali", + "layer": "Nivelul {n}", + "layer1Title": "Întrerupătoare de circuit pentru furnizori", + "layer1Desc": "Oprește traficul către furnizorii care eșuează la nivelul serviciului din amonte", + "layer2Title": "Perioade de așteptare pentru conexiuni", + "layer2Desc": "Omite un cont/o cheie problematic(ă); celelalte conexiuni continuă să deservească cererile", + "layer3Title": "Blocări ale modelelor", + "layer3Desc": "Blocări ale limitelor de rată per model; aceeași conexiune continuă să deservească alte modele", + "badgeAffectedOf": "{affected} din {total} afectate", + "badgeCooling": "{count} în așteptare", + "badgeLocked": "{count} blocate", + "emptyCircuits": "Niciun întrerupător de circuit activ momentan", + "emptyCooldowns": "Nicio perioadă de așteptare activă pentru conexiuni", + "emptyLockouts": "Nicio blocare a modelelor", + "moreCooldowns": "+încă {count} perioade de așteptare", + "moreLockouts": "+încă {count} blocări", + "feedTitle": "Flux în timp real", + "feedSubtitle": "Ultimele {count} evenimente", + "feedFilterAll": "Toate", + "feedFilterCircuits": "Circuite", + "feedFilterCooldowns": "Perioade de așteptare", + "feedFilterLockouts": "Blocări", + "feedFilterSessions": "Sesiuni", + "feedFilterQuotas": "Cote", + "feedClear": "Șterge", + "feedEmptyWaiting": "Se așteaptă evenimente... (interogare la fiecare 5 s)", + "feedEmptyFiltered": "Niciun eveniment nu corespunde acestui filtru", + "sessionsTitle": "Sesiuni active", + "sessionsSubtitle": "Amprente ale cererilor asociate persistent (în timp real)", "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "sessionsEmptyTitle": "Nicio sesiune activă", + "sessionsEmptyHint": "Sesiunile apar pe măsură ce cererile trec prin proxy", + "tblSession": "Sesiune", + "tblAge": "Vechime", + "tblIdle": "Inactivitate", + "tblReqs": "Cereri", + "tblBoundTo": "Asociată cu", + "topApiKeys": "Cele mai utilizate chei API", + "quotaMonitorsTitle": "Monitorizarea cotelor", + "quotaMonitorsSubtitle": "Starea cotelor în timp real pentru fiecare interval al contului", + "openQuota": "Deschide cotele", + "allQuotasHealthy": "Toate cotele sunt în parametri normali", + "statusExhausted": "EPUIZATĂ", + "statusAlerting": "ÎN ALERTĂ", + "statusError": "EROARE", + "moreSuffix": "+încă {count}" }, "quotaShare": { "weightPercent": "Pondere %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Partajarea cotelor", + "description": "Partajează cotele furnizorilor între cheile API, cu limite procentuale", + "newPool": "Grup nou", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Configurația este salvată în localStorage (încă nu este stocată pe server). Aplicarea limitei per solicitare nu este încă integrată în fluxul proxy. Acest ecran îți permite să proiectezi și să vizualizezi împărțirea cotei; aplicarea efectivă va fi disponibilă într-o versiune viitoare, cu stocare în baza de date și interceptarea apelurilor către serviciile din amonte.", + "kpiActivePools": "Grupuri active", + "kpiKeysAllocated": "Chei alocate", + "kpiAvgUnallocated": "Procent mediu nealocat", + "kpiProvidersWithQuota": "Furnizori cu cotă", + "emptyTitle": "Nu există grupuri configurate", + "emptyDescription": "Creează un grup pentru a aloca chei API care să partajeze intervalul de cotă al unui furnizor folosind alocări procentuale.", + "loading": "Se încarcă…", + "removePool": "Elimină grupul", + "removeConfirm": "Elimini acest grup?", + "pool": "Grup", + "used": "utilizat", + "allocationsCount": "Alocări ({count})", + "allocatedFree": "{allocated}% alocat · {free}% liber", + "noAllocations": "Nu există încă chei alocate", + "capLabel": "limită {value}", + "notTrackedYet": "(încă nu este monitorizat)", + "policy": "Politică", "apiKeyColumn": "Cheie API", "weightColumn": "Pondere", "fairShareShort": "echitabil", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", + "policyHard": "strictă", + "policySoft": "flexibilă", + "policyBurst": "depășire temporară", + "policyHardHint": "Blochează când cheia își epuizează alocarea", + "policySoftHint": "Permite depășirea, doar cu alertă", + "policyBurstHint": "Permite depășirea temporară folosind cota liberă", + "editAllocations": "Editează alocările", + "newPoolTitle": "Grup de cote nou", + "providerConnection": "Conexiunea furnizorului (cont)", + "selectConnection": "Selectează o conexiune…", + "noEligibleConnections": "Nu există conexiuni cu date despre cotă. Reîmprospătați mai întâi din /dashboard/quota.", + "quotaWindow": "Intervalul cotei", + "selectWindow": "Selectați un interval…", + "alreadyUsedSuffix": "(deja utilizat)", + "windowReset": "Resetați", + "duplicatePoolError": "Există deja un fond pentru această conexiune și acest interval", + "cancel": "Anulați", + "createPool": "Creați fondul", + "editTitle": "Editați alocările", + "noKeysAdded": "Nu există chei alocate. Adăugați una mai jos.", "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "totalExceeded": "⚠ depășește 100%", + "addKey": "+ Adăugați o cheie…", + "equalSplit": "Împărțire egală", + "save": "Salvați alocările", "betaPreviewLabel": "Beta — previzualizare UI.", "betaConfigSavedPrefix": "Configurația este salvată în", "betaConfigSavedSuffix": "(nu a persistat încă pe server). Aplicarea plafonului la cerere nu este încă conectată în conducta proxy. Acest ecran vă permite să proiectați și să vizualizați împărțirea cotei; aplicarea reală va ateriza într-o iterație viitoare cu persistență DB și interceptarea apelului în amonte.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Acest grup are încă pool-uri — reatribuiți-le sau ștergeți-le mai întâi.", "ungroupedTitle": "Negrupate", "ungroupedHint": "Aceste pool-uri nu sunt atribuite unui grup cunoscut. Editați un pool pentru a-l muta într-un grup real.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Acest fond nu a putut fi eliminat.", + "dismiss": "Închideți" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Pluginuri", + "description": "Instalați și gestionați pluginuri pentru a extinde funcționalitatea OmniRoute", + "loading": "Se încarcă pluginurile...", + "scanning": "Se scanează...", + "scanForPlugins": "Scanați după pluginuri", + "noPlugins": "Nu există pluginuri instalate", + "noPluginsDescription": "Plasați directoarele pluginurilor în ~/.omniroute/plugins/ și faceți clic pe Scanați.", + "activate": "Activați", + "deactivate": "Dezactivați", + "uninstall": "Dezinstalați", + "uninstallConfirm": "Dezinstalați pluginul „{name}”?", + "pluginScanComplete": "Scanarea pluginurilor s-a încheiat", + "pluginScanFailed": "Scanarea pluginurilor a eșuat", + "activated": "{name} a fost activat", + "deactivated": "{name} a fost dezactivat", + "activateFailed": "Activarea {name} a eșuat", + "deactivateFailed": "Dezactivarea {name} a eșuat", + "uninstalled": "{name} a fost dezinstalat", + "uninstallFailed": "Dezinstalarea {name} a eșuat", + "configure": "Configurați: {name}", + "configurePlugin": "Configurează", + "noConfigSettings": "Acest plugin nu are setări configurabile.", + "saving": "Se salvează...", + "saveConfiguration": "Salvează configurația", + "configurationSaved": "Configurație salvată", + "saveConfigurationFailed": "Salvarea configurației a eșuat", + "pluginNotFound": "Pluginul nu a fost găsit", + "version": "Versiune", + "author": "Autor", + "description_label": "Descriere", + "status": "Stare", + "enabled": "Activat", + "disabled": "Dezactivat", "installedTab": "Instalat", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Piață", "marketplaceUrlLabel": "URL Marketplace personalizat", "marketplaceUrlPlaceholder": "Lăsați gol pentru registrul oficial Omniroute", "saveMarketplaceUrl": "Salvează și reîncarcă", @@ -11729,7 +11736,7 @@ "verified": "Verificat", "install": "Instalează", "installedFromMarketplace": "Pluginul {name} a fost instalat!", - "hooks": "Hooks" + "hooks": "Hook-uri" }, "quotaPlans": { "title": "Planuri și cote", @@ -12057,10 +12064,10 @@ "resumeBtn": "Reia", "clearBtn": "Golește", "exportHar": "Exportă .har", - "recordSession": "REC", + "recordSession": "ÎNREG.", "stopSession": "Oprește", - "liveBadge": "live", - "offlineBadge": "offline", + "liveBadge": "în direct", + "offlineBadge": "deconectat", "noRequests": "Nicio cerere capturată încă.", "noRequestsDesc": "Asigurați-vă că AgentBridge rulează sau activați un alt mod de captură.", "selectRequest": "Selectați o cerere pentru a o inspecta.", @@ -12179,7 +12186,7 @@ "acp": { "title": "Agenți ACP", "phrase": "CLI-uri pe care OmniRoute le lansează ca backend de execuție (flux invers)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Majoritatea utilizatorilor pot ignora această opțiune — utilizați-o doar când este necesară pentru o integrare.", "flow": "Client → OmniRoute → lansare CLI (stdio/ACP) → răspuns", "seeOther": "Vezi →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI utilizat ca backend de către Omni", "desc": "Execuție inversă", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → pornește CLI → răspuns", "examples": "de ex.: claude, codex (ACP)" } }, @@ -12217,7 +12224,7 @@ "versionNotFound": "negăsit", "manualConfig": "Configurare manuală", "installGuide": "Ghid de instalare", - "endpointLabel": "Endpoint", + "endpointLabel": "Punct final", "baseUrlFull": "URL de bază complet", "baseUrlPartial": "URL de bază parțial", "refreshDetection": "Reîmprospătează detectarea", @@ -12338,7 +12345,7 @@ "description": "Configurează proxy-uri HTTP/HTTPS/SOCKS pentru cererile către furnizorii upstream. Setează reguli proxy per furnizor sau globale, testează conectivitatea și gestionează rotația proxy-urilor." }, "omni-cache": { - "name": "Cache", + "name": "Memorie cache", "description": "Gestionează memoria cache pentru răspunsurile LLM. Vizualizează statisticile cache-ului, șterge intrările, configurează politicile TTL și controlează pragurile de stocare în cache bazate pe similitudine semantică." }, "omni-compression": { @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhook-uri", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Înregistrați, listați, testați și eliminați punctele finale webhook. Configurați abonamentele la evenimente (request.completed, request.failed, quota.exceeded etc.) și gestionați reîncercările de livrare." }, "omni-mcp": { "name": "Server MCP", @@ -12390,47 +12397,47 @@ "description": "Punctele terminale de inferență de bază compatibile cu OpenAI: chat completions, embeddings, imagini, audio (TTS/STT), moderări, rerank și Responses API. Principala suprafață de integrare pentru agenții AI." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Servire", "description": "Pornește, oprește și repornește serverul OmniRoute din CLI. Gestionează modul daemon, configurarea porturilor, recuperarea automată, integrarea în bara de sistem și comanda rapidă de deschidere a panoului de control." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Stare de funcționare", "description": "Verifică starea de funcționare a serverului, starea componentelor și metricile live din CLI. Rulează `health`, `health components` și `health watch` pentru un panou de control în timp real al întrerupătoarelor de circuit și al stării furnizorilor." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Furnizori", "description": "Gestionează conexiunile furnizorilor din CLI: listează furnizorii disponibili/configurați, add, test, test-all, validate, rotește cheile API și vizualizează metricile per furnizor." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Chei API", "description": "Creează, listează, rotește și revocă cheile API OmniRoute din CLI. Gestionează fluxurile OAuth pentru autentificarea furnizorilor și inspectează scopurile și expirarea cheilor." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: Modele", "description": "Interoghează modelele AI disponibile, listează aliasurile modelelor și răsfoiește catalogul complet de modele din CLI. Filtrează după furnizor, caută după capabilitate și rezolvă variantele de nume ale modelelor." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Conversație", "description": "Trimite completări de chat, transmite răspunsuri în flux și inițiază o sesiune interactivă REPL din CLI. Acceptă toți furnizorii OmniRoute, rutarea combinată și configurarea promptului de sistem." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: Rutare și combinații", "description": "Creează, listează, actualizează și șterge combinații de rutare din CLI. Testează strategiile de rutare, inspectează metricile combinațiilor și configurează lanțuri de rezervă în mod interactiv." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: Reziliență și cote", "description": "Inspectează și gestionează stările întrerupătoarelor de circuit, perioadele de răcire a conexiunii, limitele de cotă și nivelurile de backoff din CLI. Resetează furnizorii blocați și configurează pragurile de reziliență." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: Compresie", "description": "Configurează și testează compresia prompturilor din CLI. Gestionează filtrele RTK, regulile Caveman, modurile de compresie stivuite și previzualizează rezultatul compresiei cu prompturi reale." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: Contexte și sesiuni", "description": "Gestionează configurațiile de inginerie a contextului, seturile de filtre RTK și sesiunile de conversație din CLI. Aplică setările de retransmitere a contextului (context-relay) și inspectează pipeline-urile de context active." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: Costuri și utilizare", "description": "Vizualizează defalcarea costurilor, utilizarea tokenurilor și jurnalele de apeluri din CLI. Filtrează după furnizor, model sau interval de date. Exportă rapoarte de utilizare și inspectează cheltuielile per conexiune." }, "cli-mcp": { @@ -12438,19 +12445,19 @@ "description": "Inspectează starea serverului MCP, listează instrumentele și scopurile înregistrate, rulează invocări de instrumente și gestionează jurnalele de audit MCP din CLI." }, "cli-a2a": { - "name": "CLI: A2A Protocol", + "name": "CLI: Protocol A2A", "description": "Interacționează cu serverul OmniRoute A2A din CLI. Trimite sarcini, inspectează istoricul de executare a abilităților și testează protocolul agent-la-agent JSON-RPC 2.0 în mod interactiv." }, "cli-tunnel": { - "name": "CLI: Tunnels", + "name": "CLI: Tuneluri", "description": "Pornește și oprește conexiunile de tunel (ngrok, Cloudflare, personalizate) din CLI. Inspectează URL-urile de tunel active, configurează autentificarea și testează accesibilitatea externă." }, "cli-backup-sync": { - "name": "CLI: Backup & Sync", + "name": "CLI: Copiere de siguranță și sincronizare", "description": "Efectuează copii de rezervă și restaurează datele OmniRoute din CLI. Declanșează instantanee incrementale, sincronizează cu stocarea în cloud, gestionează programele de backup și restaurează din fișiere arhivă." }, "cli-policy-audit": { - "name": "CLI: Policy & Audit", + "name": "CLI: Politici și audit", "description": "Inspectează jurnalele de audit, gestionează politicile de acces, vizualizează datele de telemetrie și revizuiește istoricul solicitărilor din CLI. Filtrează după tipul de eveniment, utilizator sau interval de timp pentru fluxurile de lucru de conformitate." }, "cli-batches": { @@ -12491,7 +12498,7 @@ "crossLinkLabel": "Înțelegeți diferența →" }, "omni": { - "title": "Omni Skills — Inbound", + "title": "Omni Skills — Intrare", "description": "Omni Skills sunt instrumente de tip sandbox pe care OmniRoute le injectează în contextul modelului la fiecare solicitare. Acestea sunt executate de OmniRoute, nu citite de agent.", "crossLinkLabel": "Înțelegeți diferența →" }, @@ -12532,7 +12539,7 @@ }, "categoryApi": "API", "categoryCli": "CLI", - "categoryConfig": "Config", + "categoryConfig": "Configurație", "filterAll": "Toate", "coverageLabel": "Acoperire", "mcpUrl": "URL MCP", @@ -12575,28 +12582,28 @@ "colScore": "Scor", "colAvgScore": "Scor mediu", "colModels": "Modele", - "colType": "Type", + "colType": "Tip", "filterConfiguredOnly": "Doar configurate", "filterAvailableOnly": "Doar disponibile", "filterAvailableOnlyHelp": "Ascunde furnizorii ale căror conexiuni sunt toate limitate ca rată sau fără cotă.", "configuredOnly": "Doar configurate", "configuredOnlyHint": "Afișează doar furnizorii cu conexiuni active", "noConfiguredProviders": "Nu s-au găsit furnizori configurați. Adăugați mai întâi o conexiune de furnizor.", - "colConfigured": "Status", + "colConfigured": "Stare", "typeAll": "Toate tipurile", "typeNoauth": "Fără înregistrare", "typeOauth": "Autentificare OAuth", "typeApikey": "Cheie API", "sortTypeFirst": "Cele mai simple mai întâi", "sortTypeFirstHelp": "Grupează după efortul de înregistrare (Fără înregistrare → Autentificare OAuth → Cheie API), păstrând ordinea calității în fiecare grup", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Cele mai fiabile mai întâi", + "sortByReliabilityHelp": "Ordonează furnizorii după proporția apelurilor reușite în intervalul selectat. Furnizorii cu prea puține apeluri pentru a stabili o rată își păstrează ordinea după scor, sub cei cu date măsurate.", "typeLegend": "Fără înregistrare = configurare zero · Autentificare OAuth = conectare cu propriul cont · Cheie API = aduceți propria cheie sau nivelul gratuit al acelui furnizor", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Fiabilitate", + "colReliabilityHelp": "Proporția apelurilor la care acest furnizor a răspuns efectiv în ultimele 24 de ore. O liniuță înseamnă că a gestionat prea puțin trafic pentru a stabili o rată.", + "reliabilitySample": "{successes} din {requests} apeluri au reușit în ultimele {hours} h", + "reliabilityTooFew": "Doar {requests} apeluri în ultimele {hours} h — prea puține pentru a stabili o rată", + "reliabilityNoTraffic": "Niciun apel înregistrat în ultimele 24 h" }, "discovery": { "title": "Descoperire furnizori", @@ -12640,7 +12647,7 @@ "custom": "Personalizat", "noSavedProxies": "Nu există proxy-uri salvate — adăugați unul în Setări → Proxy", "directConnection": "Direct (fără proxy)", - "host": "Host", + "host": "Gazdă", "port": "Port", "usernameOptional": "Nume de utilizator (opțional)", "passwordOptional": "Parolă (opțională)", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Susținător Radar", + "description": "A verificat un flux live al susținătorilor OmniRoute Radar", + "criteria": "Verifică un flux live semnat al susținătorilor Radar." }, "first-token": { "name": "Primul token", @@ -12836,7 +12843,7 @@ } }, "featureFlags": { - "title": "Feature Flags", + "title": "Indicatori de funcționalități", "activeCount": "{count} active", "inactiveCount": "{count} inactive", "dbOverrideCount": "{count} suprascrieri DB", @@ -12846,7 +12853,7 @@ "security": "Securitate", "network": "Rețea", "policies": "Politici", - "runtime": "Runtime", + "runtime": "Execuție", "cli": "CLI", "health": "Stare de funcționare", "requiresRestart": "Necesită repornire" @@ -12885,7 +12892,7 @@ "block": "Blocare", "redact": "Redactare", "disabled": "Dezactivat", - "dual": "Dual", + "dual": "Dublu", "alias": "Alias", "canonical": "Canonic" }, @@ -12948,8 +12955,8 @@ "description": "Permite conexiuni multiple pentru fiecare nod de compatibilitate." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Dezactivează verificările ferestrei de context", + "description": "Omite verificarea locală OmniRoute privind fereastra de context și numărul maxim de tokenuri de intrare pentru solicitările directe către un singur model. Furnizorii din amonte își aplică în continuare limitele reale. Comprimarea promptului și limitele tokenurilor de ieșire rămân active." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Elimină elementele de ieșire din faza de comentarii interne din fluxurile passthrough ale Responses API înainte de a le redirecționa către clienți. Dezactivează acest flag pentru a primi comentariile brute din amonte." @@ -12985,7 +12992,7 @@ "description": "Permite recuperării fluxului să solicite din nou răspunsul și să îl îmbine după ce octeții au ajuns deja la client." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Asigură siguranța continuării în mijlocul fluxului pentru apelurile de instrumente: nu relua niciodată un flux întrerupt după trimiterea unui apel de instrument (aflat încă în desfășurare sau deja finalizat) și oprește-te după o singură continuare fără conținut, în loc să utilizezi întregul buget de reîncercări." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Comută o singură dată pe o conexiune soră când un flux se închide înainte de a emite vreun cadru util și reîncercarea limitată pe aceeași conexiune a fost consumată. Fără o conexiune soră utilizabilă, se returnează eroarea early-EOF originală. Dezactivat: early-EOF rămâne final după reîncercare." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Activează accesul la rețea în sandbox-ul de abilități." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Buclă de instrumente gestionată de server", + "description": "Continuă apelurile nesecvențiale ale instrumentelor gestionate de server până când modelul returnează un răspuns utilizabil de client." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Proveniența Retry-After", + "description": "Pentru răspunsurile agregate de indisponibilitate 429/503, omite Retry-After atunci când nu este cunoscut un moment viitor concret pentru reîncercare, în loc să trimiți o valoare sintetică de 1s, adaugă error.retry_after_provenance și citește indicațiile textuale privind reîncercarea pe căile de epuizare a combinației." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Opririle de infrastructură cu prioritate protejată ca 502", + "description": "Răspunde cu 502 în loc de 503 atunci când o țintă prioritară cu fallback exclusiv pentru cotă oprește combinația dintr-o cauză care, în mod demonstrabil, nu ține de cotă: un întrerupător de circuit deschis al furnizorului sau o omitere predictivă bazată pe latență." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Sănătate combo", "callLogs": "Jurnale de apeluri", "costs": "Costuri", - "playground": "Playground", + "playground": "Mediu de testare", "nestedCombo": "Combo imbricat", "modelTarget": "Țintă model", "weight": "{value}% pondere", @@ -13150,7 +13161,7 @@ "loadingUsdCosts": "Se încarcă costurile în USD", "used": "Utilizat", "quotaUsed": "Cotă utilizată", - "estimatedFullQuota": "Est. 100%", + "estimatedFullQuota": "Estim. 100%", "rows": "Rânduri", "window": "Fereastră", "unknown": "necunoscut", @@ -13171,14 +13182,14 @@ "segmentHint": "Fiecare segment = un pool gratuit · pool deduplicat, contorizare corectă (fără plafoane de limită de rată umflate).", "boost": "Deblochează încă ~{tokens}/lună cu o reîncărcare unică de 10 $ pe OpenRouter (50 → 1000 cereri/zi)", "uncapped": "Permanent gratuit, fără limită publicată (limitat ca rată) — acces real, necontorizat în titlu:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "Încă ~{tokens}/lună în spatele unei verificări regionale a identității (de ex., verificarea numelui real în China continentală) — cotă reală, neincluse în valoarea principală:", "tosRestricted": "{count, plural, one {# model marcat ca restricționat prin ToS — tu decizi} few {# modele marcate ca restricționate prin ToS — tu decizi} other {# de modele marcate ca restricționate prin ToS — tu decizi}}", "provider": "Furnizor", "model": "Model", "modelName": "Nume model", "type": "Tip", "tokensMonth": "Tokeni/lună", - "credit": "{tokens} credit", + "credit": "credit de {tokens}", "hideTosRestricted": "Ascunde cele restricționate prin ToS", "sort": "Sortează", "freeType": { @@ -13224,7 +13235,7 @@ "down": "inactiv" }, "severity": { - "info": "info", + "info": "informații", "warning": "avertisment", "critical": "critic" }, @@ -13270,80 +13281,80 @@ "viewFullHistory": "Vizualizați istoricul complet pe GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", + "title": "Politici de rutare a raționamentului", + "apiKeyTitle": "Rutarea raționamentului pentru această cheie API", + "subtitle": "Redirecționează modelele și nivelul de raționament fără a necesita compatibilitate din partea clientului. Solicitările rămân neschimbate atunci când nicio regulă nu corespunde.", + "loadError": "Regulile de raționament nu au putut fi încărcate.", + "saveError": "Regula este nevalidă sau nu a putut fi salvată.", + "saved": "Regula de raționament a fost salvată.", + "deleteConfirm": "Ștergeți această regulă de raționament?", + "deleteError": "Regula de raționament nu a putut fi ștearsă.", + "empty": "Nu este configurată nicio regulă de raționament corespunzătoare.", + "all": "Toate", + "any": "Oricare", + "enabled": "Activat", + "disabled": "Dezactivat", + "filterSearch": "Caută reguli", + "filterScope": "Filtrează după domeniu", + "filterStatus": "Filtrează după stare", + "allModels": "toate modelele", + "keepModel": "Păstrează modelul", + "otherModel": "Alt model", + "combo": "Combinație", + "priorityShort": "prioritate {value}", + "toggleAria": "Activează {name}", + "edit": "Editează", + "delete": "Șterge", + "name": "Nume", + "description": "Descriere", + "scopeLabel": "Domeniu", + "apiKey": "Cheie API", + "sourceCombo": "Combinație sursă", + "connection": "Conexiune", + "sourceModel": "Model sursă sau metacaracter", + "sourceModelOptional": "Gol = toate modelele", + "sourceModelExample": "de ex. gpt-5*", + "sourceEffort": "Nivel de efort sursă", + "missing": "Nespecificat", + "signalOnly": "Semnal de raționament nediscret", + "requestTags": "Etichete solicitare", + "requestTagsExample": "codare, intern", + "tagMode": "Potrivirea etichetelor", + "effortMode": "Mod de efort", + "targetEffort": "Nivel de efort țintă", + "routingTarget": "Țintă de rutare", + "targetModel": "Model țintă", + "targetCombo": "Combinație țintă", + "budgetAction": "Buget de procesare", + "budgetTokens": "Tokenuri pentru buget", + "priority": "Prioritate", + "saveChanges": "Salvează modificările", + "add": "Adaugă regulă", + "cancel": "Anulează", + "simulateTitle": "Simulează regula", "model": "Model", - "effort": "Effort", + "effort": "Efort", "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "simulate": "Simulează fără serviciul upstream", + "extendedComboWarning": "Max/Ultra este validat separat pentru fiecare țintă a combinației în timpul rutării.", + "extendedUnknownWarning": "Introduceți un model țintă pentru a verifica compatibilitatea cu Max/Ultra.", + "extendedUnsupportedWarning": "Max/Ultra este cunoscut ca fiind compatibil doar cu modelele Codex GPT-5.6 adecvate. Modelele personalizate necunoscute sunt acceptate de server cu un avertisment.", "scope": { "global": "Global", - "apiKey": "API key", - "combo": "Combo", + "apiKey": "Cheie API", + "combo": "Combinație", "model": "Model", - "connection": "Connection" + "connection": "Conexiune" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Moștenește setarea clientului", + "default": "Folosește valoarea implicită", + "force": "Forțează" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Păstrează", + "remove": "Elimină", + "set": "Setează o valoare fixă" } }, "chaosConfig": { @@ -13424,30 +13435,44 @@ "tierLive": "Live (în timp real)", "tierCommunity": "Comunitate (întârziere de 30 de zile)", "activateTitle": "Activează Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Compară accesul Community cu accesul live, află ce date transmite și primește instalarea ta, apoi alege cum să activezi Radar.", + "accessScaleTitle": "Înțelege accesul la Radar înainte de activare", + "accessScaleIntro": "Radar rămâne inactiv în rețea până când îți dai acordul. Alege accesul Community sau activează o cheie personală de susținător după ce consulți aceste reguli.", + "accessCommunityRule": "Community — nu necesită cheie: catalogul complet, cu o întârziere de 30 de zile.", + "accessSingleUseRule": "Star + follow — după ce GitHub OAuth le verifică pe ambele, contul tău GitHub primește o singură citire a catalogului live; apoi accesul revine la Community. Acest acces unic nu poate fi acordat din nou contului respectiv.", + "accessContributorRule": "Contributori — PR-urile îmbinate, commiturile și liniile determină doar ordinea clasamentului săptămânal. Primii 10 primesc 365 de zile; pozițiile 11–100 primesc 90 de zile; contributorii din afara primilor 100 nu primesc nimic, indiferent de numărul de PR-uri. Ieșirea din clasament nu scurtează niciodată perioada deja acordată.", + "accessSupporterRule": "Susținători — achizițiile unice acordă 6 luni, 1 an sau acces pe viață, fără reînnoire automată. Achizițiile, donațiile, perioadele de contributor și acordările manuale se cumulează; accesul pe viață prevalează întotdeauna.", + "accessUseTitle": "Utilizare personală, recuperare și verificare", + "accessInstallationRule": "Licență personală — folosește cheia pe o singură instalare activă la un moment dat. OmniRoute nu creează amprente hardware. Recuperarea revocă și înlocuiește o cheie pierdută fără a-i reseta expirarea.", + "accessAbuseRule": "Verificarea abuzurilor — a 4-a adresă IP distinctă în 24 de ore generează doar un marcaj pentru verificare manuală; nu blochează și nu revocă niciodată automat o cheie.", + "accessOffersRule": "Ofertele live sunt selectate manual și se pot modifica sau pot expira.", + "privacyTitle": "Ce date transmite și primește Radar", + "privacyDownloadsRule": "Descărcări — instalarea ta primește metadate de catalog și de recomandare semnate criptografic; o cheie live validă deblochează și ofertele semnate și Intel.", + "privacySendsRule": "Date trimise — sincronizarea de pe server trimite cheia de susținător ca token Bearer, iar infrastructura HTTPS primește adresa IP a conexiunii. Evidența solicitărilor fluxului nu stochează niciuna dintre valori în formă brută: păstrează hashurile cheilor, utilizarea agregată și un HMAC IP trunchiat, rotit zilnic, pentru verificarea abuzurilor.", + "privacyNeverRule": "Nu sunt colectate niciodată — prompturile, răspunsurile, conversațiile, datele de autentificare ale furnizorilor, traficul modelelor, timpul de funcționare, latența și configurația locală a furnizorilor nu sunt trimise niciodată către Radar.", + "activateButton": "Activează Community", "activating": "Activare...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Ai deja o cheie de susținător?", + "keyInvalidFormatError": "Format nevalid al cheii. Trebuie să înceapă cu \"omr_\", urmat de 40 de caractere hexazecimale.", + "activateWithKeyButton": "Activează accesul de susținător", + "changeKeyButton": "Schimbă cheia", + "claimSectionTitle": "Nu ai încă o cheie de susținător?", + "contributorButton": "Sunt contributor", + "contributorHint": "GitHub OAuth verifică clasamentul săptămânal curent: primii 10 primesc 365 de zile, iar pozițiile 11–100 primesc 90 de zile. Numărul de PR-uri nu acordă niciodată acces de unul singur în afara primilor 100.", + "supporterButton": "Susține proiectul", + "supporterHint": "Opțiunile unice de 6 luni, 1 an și pe viață nu au reînnoire automată; perioadele eligibile se cumulează, iar accesul pe viață prevalează.", "colProvider": "Furnizor", "colModel": "Model", "colQuota": "Cotă", + "colLimits": "Limite de utilizare", + "trainsOnPrompts": "Se antrenează pe prompturi", + "trainsOnPromptsHelp": "Condițiile acestui furnizor precizează că acesta poate folosi prompturile pe care le trimiți pentru antrenare. Modelele fără această insignă fie precizează că nu fac acest lucru, fie nu îl documentează — absența unei declarații nu reprezintă o garanție.", + "limitsUnknownHelp": "Limite raportate doar de fluxul Radar; nu există limite publicate pentru această intrare", + "contextUnknownHelp": "Fereastră de context necunoscută pentru această intrare", + "capabilityUnknownHelp": "Capacitate neraportată de flux", "colContext": "Context", "colCapabilities": "Capacități", "colTos": "Riscul ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "nou", "setupGuide": "Ghid de configurare", "disabledByFeed": "Dezactivat de feed-ul Radar", @@ -13455,61 +13480,47 @@ "capVision": "Viziune", "capThinking": "Gândire", "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", + "freeCreditsTab": "Credite gratuite", + "freeCreditsSubtitle": "Linkuri de recomandare de la furnizorii monitorizați de Radar — utilizarea lor nu te costă nimic în plus și ajută la susținerea OmniRoute.", + "fixedLinksEmpty": "Nu sunt disponibile încă linkuri de recomandare. Sincronizează Radar pentru a verifica dacă există actualizări.", + "requiredActionLabel": "Ce trebuie să faci:", + "claimButton": "Revendică creditele", + "campaignsTitle": "Campanii cu durată limitată", + "campaignsEmpty": "Momentan nu există campanii active — revino mai târziu.", + "campaignsUpsellCommunity": "Campaniile cu durată limitată sunt un beneficiu suplimentar pentru susținători. Toate linkurile permanente de pe această pagină rămân gratuite pentru toată lumea.", + "campaignsValidUntil": "Valabil până la {date}", + "colActions": "Acțiuni", "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "editModel": "Editează", + "saveModel": "Salvează", + "cancelEdit": "Anulează", + "resetModel": "Resetează modificările locale", + "hideModel": "Ascunde", + "restoreModel": "Restaurează", + "hiddenModelsTitle": "Modele ascunse", + "modelDisplayName": "Nume afișat local", + "modelEnabled": "Activat local", + "localStateSaveFailed": "Salvarea setărilor locale Radar a eșuat", + "guidedCombos": "Combinații ghidate", + "offers": "Oferte", + "intel": "Informații" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Combinații ghidate Radar", + "subtitle": "Creează variante de rezervă prioritizate din modele gratuite echivalente, selecționate de Radar.", + "backToRadar": "Înapoi la Radar", + "loading": "Se încarcă sugestiile de combinații...", + "familyLabel": "Familia de modele", + "modelsLabel": "Ordinea priorităților", + "strategyReason": "Prioritatea folosește mai întâi cel mai mare buget gratuit recurent, apoi trece la furnizorii activi de rezervă.", + "generateButton": "Generează combinația", + "generating": "Se generează...", + "alreadyCreated": "Deja creată", + "created": "Combinație creată", + "noSuggestions": "În prezent, nicio familie de modele eligibilă nu are conexiuni active la cel puțin doi furnizori.", + "catalogRequired": "Sincronizează mai întâi catalogul Radar pentru a încărca familiile de modele selecționate.", + "loadFailed": "Încărcarea sugestiilor de combinații Radar a eșuat.", + "createFailed": "Crearea combinației a eșuat. Verifică-ți conexiunile la furnizori și încearcă din nou." }, "radarSetupPage": { "title": "Configurare Furnizor", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "Reziliența Conexiunii", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Conexiunile tale se restabilesc automat", + "reassuranceDetail": "De obicei, nu este necesară nicio acțiune. OmniRoute întrerupe temporar o conexiune după erori, apoi încearcă din nou în siguranță.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Solicitările pot fi trimise", + "coolingDown": "Se va încerca din nou în curând", + "lockedOut": "Necesită atenția dvs." }, "table": { "status": "Stare", @@ -13551,11 +13562,11 @@ "connectionId": "Conexiune", "authType": "Autentificare", "backoffLevel": "Amânare", - "cooldown": "Cooldown", + "cooldown": "Perioadă de așteptare", "lastError": "Ultima Eroare", "lockouts": "Blocaje", "healthy": "Sănătos", - "coolingDown": "Cooldown", + "coolingDown": "Perioadă de așteptare", "circuitOpen": "Circuit Deschis", "recovering": "Se Recuperează", "degraded": "Degradat", @@ -13567,8 +13578,8 @@ "title": "Tranziții Întrerupător", "window": "Fereastră", "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window6h": "6 h", + "window24h": "24 h", "empty": "Nicio tranziție în fereastra selectată", "currentState": "Stare Curentă", "state": { @@ -13589,7 +13600,7 @@ "detail": { "title": "Detaliu Conexiune", "metadata": "Metadate", - "cooldown": "Cooldown", + "cooldown": "Perioadă de așteptare", "lastError": "Ultima Eroare", "breaker": "Întrerupător de Circuit", "lockouts": "Blocaje Model", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Respinge cererile înainte de expediere atunci când modelul țintă nu are capabilitățile necesare (viziune, instrumente, ieșire structurată, fereastră de context). Protejează cererile directe de un singur furnizor care ocolesc filtrul de compatibilitate al stratului combinat.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Omite verificarea locală OmniRoute privind fereastra de context și numărul maxim de tokenuri de intrare pentru solicitările directe către un singur model. Furnizorii din amonte își aplică în continuare limitele reale. Comprimarea promptului și limitele pentru tokenurile de ieșire rămân active.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Statisticile căutărilor și căutările recente iau în calcul doar furnizorii care au încă o conexiune activă (furnizorii fără cheie, precum duckduckgo-free, sunt luați întotdeauna în calcul). Opțiunea Oprit păstrează fiecare rând de căutare reținut care are un ID de furnizor.", "publicSystem": { "notFound": { "title": "Pagina nu a fost găsită", @@ -13699,12 +13710,12 @@ "maintenanceInfo": "Informații de Întreținere", "service": "Serviciu", "unknown": "necunoscut", - "notAvailable": "n/a", + "notAvailable": "indisponibil", "providersTracked": "Furnizori Monitorizați", "circuitBreakerState": "Starea Circuit Breaker a Furnizorului", "lastUpdate": "Ultima actualizare: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes} min", + "uptimeHoursMinutes": "{hours} h {minutes} min" }, "statusPages": { "400": { @@ -13796,7 +13807,7 @@ "importDescription": "Lipește un token de reîmprospătare exportat din {providerLabel}.", "apiKey": "Cheie API", "apiKeyDescription": "Introduceți o cheie API {providerLabel} / CodeWhisperer pe termen lung. Aceasta este stocată ca un acreditiv bearer fără token de reîmprospătare; descoperirea profilului se face cu cel mai bun efort.", - "idcStartUrl": "IDC Start URL", + "idcStartUrl": "URL de pornire IDC", "idcStartUrlPlaceholder": "https://your-org.awsapps.com/start", "idcStartUrlDescription": "URL-ul Centrului de Identitate AWS IAM al organizației dumneavoastră", "awsRegion": "Regiune AWS", @@ -13876,7 +13887,7 @@ } }, "providerTest": { - "dialogLabel": "Test {provider}", + "dialogLabel": "Testează {provider}", "deprecated": "depreciat", "risk": "riscuri", "close": "Închide", @@ -13886,7 +13897,7 @@ "clearConversation": "Șterge conversația", "clear": "Șterge", "tabs": { - "test": "Test", + "test": "Testare", "logs": "Jurnale" }, "loadingLogs": "Se încarcă jurnalele…", @@ -13894,7 +13905,7 @@ "noLogsYet": "Nu există încă jurnale", "noLogsDescription": "Trimite un mesaj de test din tab-ul Test — jurnalele pentru acest furnizor vor apărea aici.", "openFullLogs": "Deschide pagina completă a jurnalelor", - "live": "Live", + "live": "Activ", "tailingLast": "urmărind ultimele {count}", "refreshNow": "Reîmprospătează acum", "refresh": "Reîmprospătare", @@ -13947,7 +13958,7 @@ "tokens": "Tokeni", "active": "Activ", "other": "Altul", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "oră", "day": "zi", "unknownModel": "necunoscut", @@ -13958,23 +13969,23 @@ "compressionDescription": "Configurează setările de compresie a contextului pentru a reduce utilizarea token-urilor și costurile.", "relayTitle": "OmniRoute — Proxii de Relay", "relayDescription": "Puncte finale de proxy relay fără server pentru infrastructura ta AI", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Inspector de trafic — OmniRoute", "trafficInspectorDescription": "Monitorizați apelurile LLM + depanați traficul HTTPS al oricărei aplicații" }, "conductor": { "title": "Conductor — flota agentului CLI", "subtitle": "Hub OmniConductor: executori, coada de sarcini și consilii, live", - "runners": "Runners", + "runners": "Agenți de execuție", "tasks": "Sarcini", "colName": "Nume", "colClis": "CLI-uri", "colStatus": "Stare", "colTask": "Sarcină", "colMode": "Mod", - "colRunner": "Runner", + "colRunner": "Agent de execuție", "colSummary": "Rezumat", - "online": "online", - "offline": "offline", + "online": "conectat", + "offline": "deconectat", "draining": "drainare", "hubOffline": "Hub-ul conductor offline sau neconfigurat (CONDUCTOR_HUB_URL) — nu afișează nimic în loc de date învechite.", "noRunners": "Niciun alergător înregistrat", @@ -14042,9 +14053,9 @@ "clearFilters": "Golește filtrele", "sourceCloudAgent": "Agent Cloud", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Coordonator", "sourceStale": "Perimat din {since}", - "sourceOffline": "Offline", + "sourceOffline": "Deconectat", "sourceCollapse": "Restrânge", "sourceExpand": "Extinde", "stateQueued": "În așteptare", @@ -14070,11 +14081,11 @@ "actionApprove": "Aprobă planul", "actionCancel": "Anulează", "actionSeeInGraph": "Vezi în grafic", + "actionRepeat": "Repetă", "actionDone": "Acțiune aplicată", "actionFailed": "Acțiune eșuată: {error}", "detailFailed": "Încărcarea detaliilor a eșuat: {error}", "mirroredInA2A": "Reflectat în A2A", - "actionRepeat": "Repetă", "repeatConfirm": "Apasă din nou pentru a confirma", "repeatDone": "Rulare nouă creată", "repeatUnavailable": "Intrarea originală nu este disponibilă" @@ -14088,57 +14099,57 @@ "networkError": "Eroare de rețea — nu s-a putut actualiza setarea de expunere a furnizorului" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Oferte pentru susținători", + "subtitle": "Reduceri oficiale, credite, perioade de încercare și beneficii verificate oferite de partenerii Radar.", + "backToRadar": "Înapoi la Radar", + "loading": "Se încarcă ofertele...", + "refresh": "Reîmprospătează ofertele", + "refreshing": "Se reîmprospătează...", + "loadFailed": "Nu am putut reîmprospăta ofertele. Se păstrează ultima copie cache locală verificată.", + "empty": "Momentan nu sunt disponibile oferte active.", + "keyRequiredTitle": "Este necesară o cheie de susținător", + "keyRequiredDescription": "Ofertele sunt un beneficiu Radar disponibil în timp real. Adaugă o cheie de susținător existentă pe ecranul Radar, verifică-ți statutul de contributor sau susține proiectul pentru a obține una.", + "contributorButton": "Sunt contributor", + "supporterButton": "Susține proiectul", + "partnerBadge": "Partener", + "officialBadge": "Oficial", + "conditionsLabel": "Condiții:", + "validUntil": "Valabil până la {date}", + "noExpiry": "Fără dată de expirare anunțată", + "openOffer": "Vezi oferta", + "trialDays": "{days, plural, one {# zi} few {# zile} other {# de zile}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", + "title": "Informații Radar", + "subtitle": "Clasamente ELO proprii Radar și evoluția factuală a catalogului.", + "backToRadar": "Înapoi la Radar", + "loading": "Se încarcă informațiile...", + "refresh": "Reîmprospătează informațiile", + "syncing": "Se reîmprospătează...", + "loadFailed": "Nu am putut reîmprospăta informațiile. Se păstrează ultima copie cache locală verificată.", + "empty": "Nu este disponibilă încă nicio versiune verificată a informațiilor.", + "supporterBadge": "Susținător Radar", + "methodology": "Metodologie", + "eloMethod": "ELO, inițial {initial}, K={factor}", + "freshness": "Actualitatea catalogului", + "ageDays": "{days, plural, one {vechi de # zi} few {vechi de # zile} other {vechi de # de zile}}", + "trend": "Tendința catalogului", + "modelDelta": "{current} modele, +{added} / -{removed}", + "ranking": "Clasamentul modelelor", + "noRankings": "Nu sunt disponibile încă comparații confirmate.", "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "category": "Categorie", + "rating": "Evaluare", + "matches": "Confruntări", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Recent", + "aging": "Învechit", + "stale": "Învechit" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "În creștere", + "stable": "Stabil", + "shrinking": "În scădere" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Cererea depășește fereastra de context a furnizorului" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference este un prieten open-source al OmniRoute", + "description": "Un gateway clasificat după cost, care revinde zeci de modele de frontieră printr-un singur endpoint compatibil cu OpenAI — direcționând fiecare solicitare către cel mai ieftin furnizor eligibil, fără a depăși vreodată prețul de listă.", + "cta": "Obțineți o cheie API", + "partnerLinkNote": "Link de partener", + "dismissAriaLabel": "Închideți" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Dezactivați generarea variantelor de nivel de gândire (de ex. -low, -medium, -high) în catalogul /v1/models." } diff --git a/src/i18n/messages/ru.json b/src/i18n/messages/ru.json index 4a6947620a..697938d8df 100644 --- a/src/i18n/messages/ru.json +++ b/src/i18n/messages/ru.json @@ -31,7 +31,7 @@ "active": "Активный", "inactive": "Неактивный", "noData": "Нет доступных данных", - "nothingHere": "Nothing here yet", + "nothingHere": "Здесь пока ничего нет", "configure": "Настроить", "manualConfig": "Ручная настройка", "manage": "Управление", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Не удалось сбросить цены.", "apikey": "API-ключ", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Перейти на панель управления", + "checkSystemStatus": "Проверить состояние системы", + "selectModel": "Выбрать модель", "addModel": "Добавить модель", "effortNone": "Нет", "effortLow": "Низкий", @@ -162,12 +162,12 @@ "effortMax": "Макс.", "effortUltra": "Ультра", "reasoningEffort": "Уровень рассуждения", - "wireApi": "Wire API", + "wireApi": "Подключить API", "modelAliases": "Псевдонимы моделей", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Комбинации", + "noModelsFound": "Модели не найдены", + "clear": "Очистить", + "done": "Готово", "selectAll": "Выбрать все", "unselectAll": "Снять выделение", "visibleModels": "видимых", @@ -184,519 +184,519 @@ "selectAllProviders": "Проверить всех провайдеров", "clearProviderSelection": "Снять отметку с провайдеров", "providersSelectedCount": "Проверено {count} провайдеров", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Произошла ошибка", + "comboDeleted": "Комбинация удалена", + "hide": "Скрыть", + "creating": "Создание", + "comboCreated": "Комбинация создана", + "swapFormats": "Поменять форматы местами", + "daysAgo": "Дней назад", + "retries": "Повторные попытки", + "errorDuringRestore": "Ошибка при восстановлении", + "eventsAppearHint": "Подсказка о появлении событий", + "noLockouts": "Блокировок нет", + "webSearchDesc": "Описание веб-поиска", + "audioProvidersHeading": "Провайдеры аудио", "cloudAgentProviders": "Поставщики облачных агентов", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Минут назад", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "Автоматическое обновление в реальном времени", + "webSearch": "Веб-поиск", + "anthropicPrefixPlaceholder": "Заполнитель префикса Anthropic", + "addModelToCombo": "Добавить модель в комбинацию", + "failedToLoad": "Не удалось загрузить", + "categoryMedia": "Категория «Медиа»", + "enableCloud": "Включить облако", + "expirationBannerExpiringSoon": "Срок действия скоро истечёт", + "retry": "Повторить", + "embeddings": "Векторные представления", + "errorCount": "Количество ошибок", + "backupReasonManual": "Причина резервного копирования: вручную", + "safeSearchModerate": "Умеренная безопасная фильтрация", + "activeLimiters": "Активные ограничители", + "a2aCardTitle": "Заголовок карточки A2A", + "cloudWorkerUnreachable": "Облачный воркер недоступен", + "testFailed": "Тест не пройден", + "compatibleBaseUrlHint": "Подсказка по совместимому базовому URL", + "usageTracking": "Отслеживание использования", + "disableCloudTitle": "Заголовок отключения облака", + "noConnections": "Нет подключений", + "providerHealth": "Состояние провайдера", + "confirmDbImport": "Подтверждение импорта базы данных", + "notAvailableSymbol": "Символ «Недоступно»", + "backupsAvailable": "Доступные резервные копии", + "providerAuto": "Автоматический выбор провайдера", + "newProviderNamePlaceholder": "Заполнитель для имени нового провайдера", + "a2aQuickStartStep2": "Шаг 2 быстрого старта A2A", + "ok": "ОК", + "available": "Доступно", + "noBackupYet": "Резервных копий пока нет", + "more": "Ещё", + "noCompatibleYet": "Совместимых пока нет", + "multiProvider": "Несколько провайдеров", + "repairEnvHint": "Подсказка по восстановлению окружения", + "disablingCloud": "Отключение облака", + "testBench": "Тестовый стенд", + "valid": "Действительно", + "cloudBenefitShare": "Преимущество облака: общий доступ", + "mcpCardTitle": "Заголовок карточки Mcp", + "disableConfirm": "Подтвердить отключение", + "filters": "Фильтры", + "expirationBannerExpiredDesc": "Описание баннера об истечении срока", + "saveComboDefaults": "Сохранить значения комбинации по умолчанию", + "cloudConnectedVerified": "Облачное подключение проверено", + "uptime": "Время бесперебойной работы", + "compatibleProdPlaceholder": "Заполнитель для совместимого рабочего окружения", + "fallbackChainsTitle": "Цепочки резервного переключения", + "oauthLabel": "Метка Oauth", + "a2aCardDescription": "Описание карточки A2A", + "okShort": "ОК", + "maintenance": "Техническое обслуживание", + "formatConverter": "Конвертер форматов", + "zedImportNetworkError": "Сетевая ошибка импорта Zed", + "apiKeyLabel": "Метка ключа API", + "noModelsForProvider": "Нет моделей для провайдера", + "mcpCardDescription": "Описание карточки MCP", + "apiTypeLabel": "Метка типа API", + "configuredProvidersLabel": "Метка настроенных провайдеров", + "maxRetriesLabel": "Метка максимального числа повторных попыток", + "title": "Заголовок", + "output": "Вывод", + "prefixHint": "Подсказка для префикса", + "skipWizard": "Пропустить мастер настройки", + "failedCount": "Количество сбоев", + "confirmDbImportDesc": "Описание подтверждения импорта БД", + "entries": "Записи", + "until": "До", + "disableCombo": "Отключить комбинацию", + "liveMonitorDescriptionPrefix": "Префикс описания мониторинга в реальном времени", + "runningCount": "Количество запущенных", + "noActiveConnectionsInGroup": "В группе нет активных подключений", + "savedSuccessfully": "Успешно сохранено", + "systemStorage": "Системное хранилище", + "videoDesc": "Описание видео", + "maxResults": "Максимальное количество результатов", + "timeRangeMonth": "Месяц", + "testSummary": "Сводка тестирования", + "failedSetPassword": "Не удалось установить пароль", + "audio": "Аудио", + "restore": "Восстановить", + "disableWarning": "Предупреждение об отключении", + "moderationsDesc": "Описание модераций", + "providerHealthStatusAria": "ARIA-метка состояния провайдера", + "modelNamePlaceholder": "Заполнитель для названия модели", + "mcpQuickStartStep2": "Шаг 2 быстрого запуска MCP", + "quickStart": "Быстрый запуск", + "fullExportFailedWithError": "Не удалось выполнить полный экспорт из-за ошибки", + "loadingBackups": "Загрузка резервных копий", + "anthropicBaseUrlPlaceholder": "Заполнитель базового URL Anthropic", + "description": "Описание", + "noProviderFound": "Провайдер не найден", + "auto": "Автоматически", + "protocolsDescription": "Описание протоколов", + "cloudSessionNote": "Примечание к облачному сеансу", + "advancedSettings": "Расширенные настройки", + "defaultStrategy": "Стратегия по умолчанию", + "purgeExpiredLogs": "Удалить просроченные журналы", + "justNow": "Только что", + "providerTestFailed": "Проверка провайдера не пройдена", + "openaiBaseUrlPlaceholder": "Заполнитель базового URL Openai", + "image": "Изображение", + "failedCreateChain": "Не удалось создать цепочку", + "importDatabase": "Импортировать базу данных", + "allDataLocal": "Все данные хранятся локально", + "sectionTitle": "Заголовок раздела", + "failedToggle": "Не удалось переключить", + "editCombo": "Редактировать комбинацию", + "testResults": "Результаты проверки", + "searchQuery": "Поисковый запрос", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "Дублировать", + "createCombo": "Создать комбинацию", + "searchTypeWeb": "Тип поиска: веб", + "addChain": "Добавить цепочку", + "prefixLabel": "Метка префикса", + "listModelsDesc": "Описание списка моделей", + "databaseSize": "Размер базы данных", + "chainCreated": "Цепочка создана", + "providerTestTimeout": "Время ожидания проверки провайдера истекло", + "routingStrategy": "Стратегия маршрутизации", + "translateAction": "Перевести", + "exportFailed": "Не удалось экспортировать", + "connectedVerificationPending": "Подключено, ожидается проверка", + "a2aQuickStartTitle": "Быстрый старт A2A", + "couldNotTest": "Не удалось проверить", + "testAllCompatible": "Проверить все совместимые", + "anthropicCompatibleName": "Название совместимого с Anthropic провайдера", + "disabling": "Отключение", + "failedEnable": "Не удалось включить", + "categoryUtility": "Категория: утилиты", + "customUrlOptional": "Пользовательский URL (необязательно)", + "localProviders": "Локальные провайдеры", + "comboNamePlaceholder": "Заполнитель названия комбинации", + "memoryRss": "Резидентная память (RSS)", + "disableProvider": "Отключить провайдера", + "welcomeDesc": "Описание приветствия", + "nameLabel": "Метка названия", + "allOperational": "Все системы работают", + "backupNow": "Создать резервную копию", + "providerMaxRetriesAria": "Максимальное количество повторных попыток провайдера (ARIA)", + "textToSpeechDesc": "Описание преобразования текста в речь", + "machineId": "ID устройства", + "globalProxy": "Глобальный прокси", + "hitsMisses": "Попадания и промахи", + "testDesc": "Описание теста", + "chatDesc": "Описание чата", + "importSuccess": "Импорт выполнен успешно", + "chat": "Чат", + "a2aQuickStartStep1": "Шаг 1 быстрого запуска A2A", + "importFailed": "Не удалось выполнить импорт", + "inputPlaceholder": "Заполнитель поля ввода", + "providerModelsTitle": "Модели провайдера", + "lastBackup": "Последняя резервная копия", + "yourEndpoint": "Ваша конечная точка", + "autoDisableThresholdDesc": "Описание порога автоматического отключения", + "rerankDesc": "Описание переранжирования", + "modelsPathPlaceholder": "Заполнитель пути к моделям", + "noCombosYet": "Комбинаций пока нет", + "connectedVerificationPendingWithError": "Подключено, ожидается проверка с ошибкой", + "comboDefaultsGuideHint1": "Подсказка 1 руководства по значениям комбинаций по умолчанию", + "enableCloudTitle": "Включить облако", + "configuredProvidersHint": "Подсказка по настроенным провайдерам", + "paused": "Приостановлено", + "llmProviders": "Провайдеры LLM", + "enableCombo": "Включить комбинацию", + "removeProviderOverrideAria": "Удалить переопределение провайдера (ARIA)", + "nodeVersion": "Версия Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Ошибка экспорта с сообщением об ошибке", + "proxyConfigured": "Прокси настроен", + "concurrencyPerModel": "Параллельные запросы на модель", + "protocolTasksLabel": "Метка задач протокола", + "oauthProviders": "Провайдеры OAuth", + "lockedCount": "Количество заблокированных", + "deleteChainConfirm": "Подтверждение удаления цепочки", + "recentTranslations": "Недавние переводы", + "zedImportButton": "Кнопка импорта Zed", + "responsesDesc": "Описание ответов", + "testedCount": "Количество протестированных", + "providersCommaSeparatedPlaceholder": "Заполнитель для списка провайдеров через запятую", + "signatureDefaults": "Настройки подписи по умолчанию", + "errorCreating": "Ошибка при создании", + "timeRangeYear": "Диапазон времени: год", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Облако успешно отключено", + "deleteConfirm": "Подтверждение удаления", + "check": "Проверить", + "safeSearch": "Безопасный поиск", + "protocolLastActivity": "Последняя активность протокола", + "openMcpDashboard": "Открыть панель управления MCP", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Метка пути чата", + "retryDelay": "Задержка повторной попытки", + "errorUpdating": "Ошибка при обновлении", + "ideCliIntegrations": "Интеграции с IDE и CLI", + "imageGeneration": "Генерация изображений", + "apiKeyRequired": "Требуется API-ключ", + "resetAllTitle": "Сбросить всё", + "connectionError": "Ошибка подключения", + "modelName": "Название модели", + "apiKeyForCheck": "API-ключ для проверки", + "cloudRequestTimeout": "Время ожидания облачного запроса", + "showConfiguredOnly": "Показывать только настроенные", "showFreeOnly": "Только бесплатно", "addFirstProvider": "Добавьте своего первого провайдера", "addFirstProviderDesc": "Подключите поставщика искусственного интеллекта, чтобы начать маршрутизацию запросов через OmniRoute. Вы можете использовать бесплатных провайдеров, ключи API или учетные записи OAuth.", "learnMore": "Узнать больше", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Включить домены", + "promptCache": "Кэш промптов", + "cloudConnected": "Облако подключено", + "deleteChain": "Удалить цепочку", + "chatPathPlaceholder": "Заполнитель пути чата", + "databasePath": "Путь к базе данных", + "usingLocalServer": "Используется локальный сервер", + "globalComboConfig": "Глобальная конфигурация комбинаций", + "backupFailed": "Не удалось создать резервную копию", + "tabProtocols": "Вкладка «Протоколы»", + "continue": "Продолжить", + "categorySearch": "Поиск по категориям", + "rateLimitStatus": "Состояние ограничения частоты запросов", + "repairEnvSuccess": "Среда успешно восстановлена", + "nameRequired": "Требуется название", + "country": "Страна", + "trackMetricsDesc": "Описание отслеживания метрик", + "durationSecondsShort": "Длительность (с)", + "formatConverterDescription": "Описание конвертера форматов", + "cloudBenefitAccess": "Доступ к преимуществам облака", + "maxRetries": "Максимум повторных попыток", + "queueTimeout": "Тайм-аут очереди", "queueDepth": "Глубина очереди", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Добавить провайдера", + "realtime": "В реальном времени", + "totalTranslations": "Всего переводов", + "protocolActiveStreamsLabel": "Активные потоки протокола", + "repairEnv": "Исправить переменные окружения", + "modelsCount": "Количество моделей", + "viewBackups": "Просмотреть резервные копии", + "responsesApi": "API ответов", + "copyComboName": "Копировать название комбинации", + "failures": "Ошибки", + "failedUpdate": "Не удалось обновить", + "imageDesc": "Описание изображения", + "failedCreate": "Не удалось создать", + "remainingOfLimit": "Осталось от лимита", + "protocolsTitle": "Протоколы", + "expirationBannerExpiringSoonDesc": "Описание баннера о скором истечении срока действия", + "source": "Источник", + "failed": "Не выполнено", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "Шаг 1 быстрого запуска MCP", + "runTest": "Запустить тест", + "loadingFallbackChains": "Загрузка цепочек резервирования", + "healthy": "Работает нормально", + "version": "Версия", + "saveBlockWeighted": "Сохранить взвешенный блок", + "zedImportNone": "Нет данных для импорта из Zed", + "noBackupsYet": "Резервных копий пока нет", + "noGlobalProxy": "Нет глобального прокси", + "noModels": "Нет моделей", + "stickyLimit": "Лимит закрепления", + "passedCount": "Количество пройденных", + "zedImportFailed": "Не удалось импортировать из Zed", + "saving": "Сохранение", + "testAll": "Проверить все", + "globalProxyDesc": "Описание глобального прокси", + "latencyP99": "Задержка P99", + "connectingToCloud": "Подключение к облаку", + "responses": "Ответы", + "errorDeleting": "Ошибка при удалении", + "openaiPrefixPlaceholder": "Заполнитель префикса OpenAI", + "enterPassword": "Введите пароль", + "openA2aDashboard": "Открыть панель A2A", + "enableProvider": "Включить провайдера", + "modeTest": "Тестовый режим", + "failedDeleteChain": "Не удалось удалить цепочку", + "providerDesc": "Описание провайдера", + "templateLoadHint": "Подсказка по загрузке шаблона", + "lastFailure": "Последний сбой", + "moveDown": "Переместить вниз", + "providerLabel": "Метка провайдера", + "clearCacheFailed": "Не удалось очистить кэш", + "imagesGenerations": "Генерация изображений", + "repairEnvWorking": "Восстановление окружения выполняется", + "millisecondsShort": "мс", + "globalLabel": "Глобальная метка", + "failuresPlural": "Сбои", + "completionsLegacyDesc": "Описание устаревших завершений", + "searchProviders": "Поиск провайдеров", + "chatPathHint": "Подсказка по пути чата", + "defaultStrategyDesc": "Описание стратегии по умолчанию", + "latencyP95": "Задержка P95", + "textToSpeech": "Преобразование текста в речь", + "searchType": "Тип поиска", + "messages": "Сообщения", + "aggregatorsGateways": "Агрегаторы и шлюзы", + "comboStrategyAria": "Комбинированная стратегия Aria", + "input": "Ввод", + "testingConnection": "Проверка подключения", + "excludeDomains": "Исключить домены", + "webCookieProviders": "Провайдеры веб-cookie", + "allTestsPassed": "Все тесты пройдены", + "openaiCompatibleName": "Название OpenAI-совместимого сервиса", + "warningCostOptimizedPartialPricing": "Предупреждение: для оптимизации стоимости доступны не все цены", + "comboDefaultsGuideTitle": "Руководство по настройкам комбинированной стратегии по умолчанию", + "hoursAgo": "часов назад", + "notAvailable": "Недоступно", + "skipAndContinue": "Пропустить и продолжить", + "moderations": "Модерации", + "proxyConfig": "Настройка прокси", + "upstreamProxyProviders": "Провайдеры вышестоящих прокси", + "exportAll": "Экспортировать всё", + "queuedCount": "Количество в очереди", + "resetAll": "Сбросить всё", + "noTranslations": "Нет переводов", + "avgLatency": "Средняя задержка", + "throttleStatus": "Статус ограничения частоты", + "backupRetentionDesc": "Описание срока хранения резервных копий", + "noCBData": "Нет данных автоматического выключателя", + "chainDeleted": "Цепочка удалена", + "timeLeft": "Осталось времени", + "expirationBannerExpired": "Срок действия баннера истёк", + "language": "Язык", + "invalidFileType": "Недопустимый тип файла", + "monitoredProviders": "Отслеживаемые провайдеры", + "errors": "Ошибки", + "heap": "Куча", + "chatCompletions": "Завершения чата", + "exampleTemplatesHint": "Подсказка к шаблонам примеров", + "retryDelayLabel": "Метка задержки повтора", + "audioTranscription": "Транскрибация аудио", + "fallbackChainsDesc": "Описание резервных цепочек", + "exampleTemplates": "Шаблоны примеров", + "connectionsCount": "Количество подключений", + "modelsPathLabel": "Метка пути к моделям", + "activeProvidersHint": "Подсказка об активных провайдерах", + "activeLockouts": "Активные блокировки", + "invalid": "Недопустимо", + "skipPassword": "Пропустить пароль", + "moveUp": "Переместить вверх", + "timeRange": "Диапазон времени", + "stickyLimitDesc": "Описание ограничения закрепления", + "cloudBenefitEdge": "Преимущество облачной периферии", + "custom": "Пользовательский", + "verifying": "Проверка", + "baseUrlLabel": "Метка базового URL", + "setPassword": "Установить пароль", + "safeSearchStrict": "Строгий безопасный поиск", + "noChangesSinceBackup": "Нет изменений с момента резервного копирования", + "modelsPathHint": "Подсказка для пути к моделям", + "audioTranscriptions": "Расшифровка аудио", + "testCombo": "Проверить комбинацию", + "mcpQuickStartTitle": "Заголовок быстрого старта Mcp", + "comboUpdated": "Комбинация обновлена", + "weighted": "Взвешенный", + "providers": "Провайдеры", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Описание отсутствия цепочек резервирования", + "yesImport": "Да, импортировать", + "lockoutsAutoRefreshHint": "Подсказка по автообновлению блокировок", + "tabApis": "Вкладка API", + "sectionDescription": "Описание раздела", + "filter": "Фильтр", + "purgeLogsFailed": "Не удалось очистить журналы", + "latency": "Задержка", + "testAllOAuth": "Проверить все OAuth", + "mcpQuickStartStep3": "Шаг 3 быстрого старта Mcp", + "repairEnvFailed": "Не удалось восстановить окружение", + "zedImportHint": "Подсказка по импорту Zed", + "modelsAcrossEndpoints": "Модели в разных конечных точках", + "autoDisableBannedAccounts": "Автоматически отключать заблокированные аккаунты", + "securityDesc": "Описание безопасности", + "listModels": "Список моделей", + "backupRestore": "Резервное копирование и восстановление", + "target": "Цель", + "zedImportSuccess": "Импорт Zed выполнен успешно", + "lastHeaderUpdate": "Последнее обновление заголовка", + "categoryCore": "Категория «Ядро»", + "noFallbackChains": "Нет цепочек резервирования", + "noSearchProviders": "Нет поисковых провайдеров", + "autoBalance": "Автоматическая балансировка", + "noModelsYet": "Моделей пока нет", + "signatureFamily": "Семейство сигнатур", + "externalApiCalls": "Внешние вызовы API", + "providerOverridesDesc": "Описание переопределений провайдеров", + "signatureTool": "Инструмент сигнатур", + "connectionFailed": "Не удалось подключиться", + "activeLimitersPlural": "Активные ограничители (мн. ч.)", + "doneDesc": "Описание завершения", + "down": "Не работает", + "noDataYet": "Данных пока нет", + "activeProviders": "Активные провайдеры", + "nameInvalid": "Недопустимое имя", + "skip": "Пропустить", + "createChain": "Создать цепочку", + "audioSpeech": "Синтез речи", + "cacheCleared": "Кэш очищен", + "searchTypeNews": "Тип поиска: новости", + "durationMillisecondsShort": "Длительность, мс", + "addOpenAICompatible": "Добавить OpenAI-совместимый провайдер", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "В очереди", + "domainPlaceholder": "Заполнитель домена", + "durationMinutesShort": "Длительность, мин", + "verifyingConnection": "Проверка подключения", + "imageProviders": "Провайдеры изображений", + "protocolToolsLabel": "Инструменты протокола", + "queryPlaceholder": "Введите запрос", + "videoGeneration": "Генерация видео", + "timeRangeWeek": "Диапазон времени: неделя", + "limitExhausted": "Лимит исчерпан", + "failedDisable": "Не удалось отключить", + "inMemoryNote": "Примечание о хранении в памяти", + "compatibleHint": "Подсказка по совместимости", + "errorShort": "Краткая ошибка", + "advancedHint": "Расширенная подсказка", + "restoreFailed": "Не удалось восстановить", + "searchProvidersHeading": "Провайдеры поиска", + "comboName": "Название комбинации", + "autoDisableDescription": "Описание автоматического отключения", + "embeddingsDesc": "Описание эмбеддингов", + "operational": "Работает", + "testAllApiKey": "Проверить все API-ключи", + "backupCreated": "Резервная копия создана", + "errorDuringImport": "Ошибка при импорте", + "comboDefaultsGuideHint2": "Подсказка 2 к руководству по настройкам комбинации по умолчанию", + "connecting": "Подключение", + "fillModelAndProviders": "Заполнить модели и провайдеров", + "syncing": "Синхронизация", + "resetConfirm": "Подтверждение сброса", + "trackMetrics": "Отслеживать метрики", + "successful": "Успешно", + "recovering": "Восстановление", + "autoDisableThreshold": "Порог автоматического отключения", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Синхронизация данных", + "cloudBenefitPorts": "Порты для облачных функций", + "compatibleProviders": "Совместимые провайдеры", "freeTierProviders": "Поставщики бесплатного уровня", "freeTierLabel": "Доступен бесплатный уровень", "freeTierProvidersDesc": "Поставщики с бесплатными уровнями — некоторым требуется регистрация ключа API, другим вообще не нужны учетные данные.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Очистить кэш", + "reqs": "Запр.", + "addAnthropicCompatible": "Добавить совместимый с Anthropic сервис", + "apiKeyProviders": "Провайдеры API-ключей", + "tabsAria": "ARIA для вкладок", + "resetting": "Сброс", + "millisecondsAbbr": "мс", + "backupReasonPreRestore": "Причина резервного копирования перед восстановлением", + "disableCloud": "Отключить облако", + "newProviderNameAria": "ARIA для имени нового провайдера", + "passwordsMismatch": "Пароли не совпадают", + "a2aQuickStartStep3": "Шаг 3 быстрого старта A2A", + "liveMonitorDescriptionSuffix": "Суффикс описания мониторинга в реальном времени", + "failedAddProvider": "Не удалось добавить провайдера", + "addAtLeastOneProvider": "Добавьте хотя бы одного провайдера", + "reasonSeparator": "Разделитель причины", + "zedImporting": "Импорт Zed", + "confirmPasswordPlaceholder": "Подтвердите пароль", + "whatYouGet": "Что вы получите", + "signatureSession": "Подпись сессии", + "errorCountNoCode": "Количество ошибок без кода", + "testing": "Тестирование", + "providersCommaSeparated": "Провайдеры через запятую", + "exportDatabase": "Экспортировать базу данных", + "hitRate": "Процент попаданий", + "completionsLegacy": "Дополнения (устаревшие)", + "removeModel": "Удалить модель", + "timeRangeDay": "Сутки", + "cloudRequestFailed": "Не удалось выполнить облачный запрос", + "updatedAt": "Обновлено", + "monitoredProvidersHint": "Подсказка по отслеживаемым провайдерам", + "connectionSuccessful": "Подключение успешно", + "latencyP50": "Задержка P50", + "logsDeleted": "Логи удалены", + "chatTester": "Тестер чата", + "safeSearchOff": "Безопасный поиск отключён", + "nameHint": "Подсказка для названия", + "debugToggle": "Переключатель отладки", + "embedding": "Векторное представление", + "issuesLabel": "Метка проблем", + "optionAny": "Любой вариант", + "maxNestingDepth": "Максимальная глубина вложенности", + "rerank": "Переранжирование", + "checking": "Проверка", + "getStarted": "Начать работу", + "restoreSuccess": "Восстановление выполнено успешно", + "issuesDetected": "Обнаружены проблемы", + "signatureCache": "Кеш сигнатур", + "modelLockouts": "Блокировки моделей", + "usingCloudProxy": "Используется облачный прокси", + "loadingHealth": "Загрузка состояния", + "providerOverrides": "Переопределения провайдеров", + "audioTranscriptionDesc": "Описание транскрипции аудио", + "learnedFromHeaders": "Получено из заголовков", + "totalRequests": "Всего запросов", + "cloudUnstableNote": "Примечание о нестабильности облака", "gamificationAdmin": "Администратор геймификации", "monitorAnomaliesAndHealth": "Мониторинг аномалий и работоспособности системы", "flaggedAnomalies": "Помеченные аномалии", @@ -704,7 +704,7 @@ "apiKey": "API-ключ", "xpLastHour": "Опыт (1 час)", "zScore": "Z-оценка", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Подозрительно", "tokensCommunityServers": "Серверы сообщества", "tokensServerNamePlaceholder": "Имя сервера", "tokensApiKeyPlaceholder": "API-ключ", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Загрузка еще…", "recommended": "Рекомендуется", "understand": "Я понимаю", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "Пакетная обработка", + "batchConceptSubtitle": "Асинхронно обрабатывайте тысячи запросов примерно за 50% стоимости (в течение 24 часов). Идеально подходит для оценивания, классификации и создания векторных представлений.", + "batchConceptHowItWorks": "Как это работает", + "batchConceptBenefit50pct": "Скидка 50% на входные и выходные токены", + "batchConceptAsync24h": "Асинхронная обработка с завершением в течение 24 часов", + "batchConceptUseCases": "Лучше всего подходит для массовой классификации, оценивания и создания векторных представлений", + "batchHeaderSubtitle": "Выполняйте множество запросов как одно задание", + "batchStep1": "1 · Загрузите JSONL", + "batchStep1Desc": "Добавьте запросы", + "batchStep2": "2 · Создайте пакет", + "batchStep2Desc": "Запустите задание", + "batchStep3": "3 · Получите результаты", + "batchStep3Desc": "Скачать результат", + "filesConceptTitle": "Файлы пакетов", + "filesConceptSubtitle": "JSONL-файлы, используемые пакетами: входные запросы, результаты и ошибки.", + "filesConceptInput": "Входные данные — ваш JSONL с одним запросом в каждой строке", + "filesConceptOutput": "Выходные данные — результаты выполненных запросов", + "filesConceptError": "Ошибки — запросы, которые не удалось выполнить", + "filesConceptRetention": "Срок хранения: по умолчанию 30 дней (29 дней в Anthropic)", + "wizardTitle": "Новый пакет", + "wizardClose": "Закрыть", + "wizardNext": "Далее", + "wizardBack": "Назад", + "wizardCancel": "Отмена", + "wizardCreate": "Создать пакет", + "wizardCreating": "Создание…", + "wizardStep1Destination": "Назначение", + "wizardStep2Input": "Входные данные", + "wizardStep3Validate": "Проверка", + "wizardStep4Cost": "Стоимость и создание", + "wizardProviderLabel": "Провайдер", + "wizardEndpointLabel": "Эндпоинт", + "wizardModelLabel": "Модель", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (мы преобразуем)", + "wizardDropOrPick": "Перетащите файл сюда или нажмите, чтобы выбрать", + "wizardCsvMappingTitle": "Сопоставьте столбцы CSV → поля запроса", + "wizardCsvMappingAddField": "Добавить поле", "wizardCsvNoColumns": "В заголовке CSV не обнаружено колонок.", "wizardCsvIgnoreColumn": "— игнорировать —", "wizardCsvCustomIdMapped": "custom_id сопоставлен", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} строк обработано", "wizardCsvRowsSkipped": "{count} строк пропущено", "wizardCsvRowError": "Строка {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Все строки корректны", "wizardValidating": "Проверка…", "wizardValidationParseFailed": "Ошибка проверки — не удалось разобрать содержимое.", "wizardValidationSummary": "{lines} строк · {ids} уникальных custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Обнаружены дубликаты custom_ids:", "wizardValidationFirstErrors": "Ошибки (первые {count}):", "wizardValidationLine": "Строка {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Ошибки проверки", + "wizardValidationPreview": "Предпросмотр (первые 5 запросов)", + "wizardValidationSamplingNote": "Файл большой — проверка выполнена на выборке (первые 1000 и последние 100 строк). Полная проверка выполняется на сервере.", + "wizardCostSync": "Стоимость синхронной обработки", + "wizardCostBatch": "Стоимость пакетной обработки (−50%)", + "wizardCostSavings": "Экономия", + "wizardCostEstimatedNotice": "Расчётная стоимость — фактическая сумма может отличаться.", + "wizardErrorUpload": "Не удалось загрузить файл. Повторите попытку.", + "wizardErrorCreate": "Не удалось создать пакет. Повторите попытку.", + "wizardEmptyProviders": "Чтобы создать пакет, подключите провайдера с поддержкой пакетной обработки (OpenAI, Anthropic или Gemini).", + "uploadModalTitle": "Загрузить файл пакета", + "uploadModalDropOrPick": "Перетащите файл .jsonl сюда или нажмите, чтобы выбрать", + "uploadModalUpload": "Загрузить", + "uploadModalCancel": "Отмена", + "uploadModalError": "Не удалось загрузить. Повторите попытку.", + "uploadModalSuccess": "Загружено", + "uploadModalSizeLimit": "Макс. 512 МБ", + "batchListNewButton": "Новый пакет", + "batchListAutoRefresh": "Автообновление каждые 30 с", + "batchListCostColumn": "Стоимость", + "batchActionCancel": "Отмена", + "batchActionDownloadOutput": "Скачать результат", + "batchActionDownloadErrors": "Скачать ошибки", + "batchActionRetry": "Повторить неудачные", + "batchActionRetryConfirm": "Повторить {n} неудачных запросов? Итоговая стоимость зависит от фактического количества использованных токенов.", + "expirationBadgeCritical": "Критический", + "expirationBadgeWarning": "Скоро", + "expirationBadgeNormal": "Ожидает", + "expirationBadgeExpired": "Истёк", + "filesListUploadButton": "Загрузить", + "filesListUsedByColumn": "Используется в", + "filesListUsedByNone": "Нет", + "filesListUsedByRoleInput": "ввод", + "filesListUsedByRoleOutput": "вывод", + "filesListUsedByRoleError": "ошибка", + "filesListSizeColumn": "Размер", + "batchListProgressPartial": "(частично)", + "batchListProviderColumn": "Провайдер", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "Другое", + "batchListTitle": "Пакеты", + "batchListCount": "Пакетов: {count}", + "batchListRemovingCompleted": "Удаление…", + "batchListRemoveCompleted": "Удалить завершённые", + "batchListTableStatus": "Статус", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "Эндпоинт", + "batchListTableModel": "Модель", + "batchListTableProgress": "Прогресс", + "batchListTableCreated": "Создан", + "batchListTableExpires": "Истекает", + "batchListLoading": "Загрузка…", + "batchListEmpty": "Пакеты не найдены", + "batchListValidating": "Проверка…", + "batchStatusAll": "Все статусы", + "batchStatusInProgress": "Выполняется", + "batchStatusValidating": "Проверка", + "batchStatusFinalizing": "Завершение", + "batchStatusCompleted": "Завершено", + "batchStatusFailed": "Ошибка", + "batchStatusCancelled": "Отменено", + "batchStatusCancelling": "Отмена", + "batchStatusExpired": "Истёк срок действия", + "batchStatusCompletedWithFailures": "завершено с ошибками", + "batchStatusInProgressWithFailures": "выполняется (с ошибками)", + "batchStatusFinalizingWithFailures": "завершается (с ошибками)", + "batchStatusCancelledWithFailures": "отменено с ошибками", + "batchStatusExpiredWithFailures": "истёк срок действия (частично)", + "wizardCostEstimating": "Расчёт стоимости…", + "wizardCostRequests": "Запросы", + "wizardCostInputTok": "входные токены", + "wizardCostOutputTok": "выходные токены", + "wizardCostWindow": "Окно", + "wizardDestinationSelectProvider": "Выберите провайдера…", + "wizardDestinationSelectModel": "Выберите модель…", + "wizardDestinationConnectProvider": "Подключить провайдера", + "batchListBatchCreated": "Пакет {id} создан — обновление списка…", + "batchListBatchCreatedDismiss": "Закрыть", + "batchListRefreshing": "Обновление…", + "batchListRefresh": "Обновить", + "uploadFileModalRemove": "Удалить", + "uploadFileModalUploading": "Загрузка…", + "wizardInputReading": "Чтение файла…", + "wizardInputReady": "Готово", + "wizardInputLargeFileLabel": "Большой файл — выборочная проверка", + "wizardInputCsvJsonlReady": "JSONL создан — готов к проверке.", + "wizardInputLargeFileWarning": "Обнаружен большой файл — проверка выполняется по выборке (первые 5 МБ + последние 100 КБ). Полная проверка выполняется на стороне сервера.", + "wizardCostWindow24h": "24-часовое окно выполнения", + "wizardValidationFieldsOk": "обязательные поля корректны", + "filesListDelete": "Удалить", + "filesListDownload": "Скачать", + "batchDetailActionCancel": "Отменить пакет", + "batchDetailActionRetry": "Повторить запросы с ошибками", + "batchDetailCancelling": "Отмена…", + "batchDetailRetrying": "Подготовка к повторной попытке…", + "batchDetailCancelConfirm": "Отменить этот пакет? Выполняющиеся запросы будут остановлены.", + "batchActionCancelError": "Не удалось отменить пакет. Попробуйте ещё раз.", + "batchActionRetryError": "Не удалось повторно выполнить запросы с ошибками. Попробуйте ещё раз.", + "batchConceptRetentionNote": "Файлы результатов и ошибок хранятся 30 дней (Anthropic: 29 дней)", "batchFilesSizeColumn": "Размер", "toggleNoAuthProvider": "Переключить провайдер без аутентификации", "loadingModels": "Загрузка моделей…", @@ -988,14 +988,14 @@ "disabled": "Отключено", "featureFlagOmnirouteEmergencyFallbackDescription": "Перенаправлять запросы при исчерпании бюджета на резервный бесплатный провайдер/модель.", "featureFlagArenaEloSyncEnabledDescription": "Включить периодическую синхронизацию ELO из таблицы лидеров Arena AI для рейтинга интеллектуальности моделей.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Создавайте и добавляйте сводки бесед, когда комбинированная маршрутизация переключает модели. Отключите эту функцию, чтобы обрабатывать переключения моделей независимо и запретить фоновые запросы передачи контекста для всех существующих и будущих комбинаций.", "featureFlagExposeCcDiscoveryAliasesDescription": "Публиковать claude/<провайдер>/<модель> зеркальные ID на /v1/models, чтобы Claude Code мог видеть не-Claude модели. Внимание: удваивает записи каталога для всех клиентов при глобальном включении.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Главный переключатель псевдонимов шлюза no-think/<provider>/<model>. Включено (по умолчанию): /v1/models объявляет вариант без рассуждений для каждой подходящей модели Claude с поддержкой рассуждений, а идентификатор no-think/, переданный в запросе, преобразуется обратно в реальную модель с отключёнными рассуждениями. Выключено: варианты не объявляются, а идентификатор no-think/ обрабатывается как любой другой неизвестный идентификатор модели. Индивидуальная настройка ModelSpec.noThinkingAlias для каждой модели по-прежнему применяется, пока этот переключатель включён.", "featureFlagChatVirtualLanesEnabledDescription": "Включите адаптивные виртуальные полосы допуска для каждого тенанта при маршрутизации к провайдерам (#9654): всплеск нагрузки одного тенанта больше не вызывает 503 у другого. Переменная окружения OMNIROUTE_CHAT_VIRTUAL_LANES имеет приоритет над этой настройкой в панели; изменения вступают в силу после перезапуска сервера.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Страницы провайдеров на панели управления: показывать значок «Бесплатно» только для признаков, которые учитывает провайдер. Эвристика на основе отображаемого имени, небулевы поля free и суффиксы :free для зарегистрированных провайдеров без документально подтверждённого бесплатного тарифа больше не используются. При отключении сохраняется прежнее правило отображения значка.", + "featureFlagProxySkipRecentlyFailedDescription": "Пулы прокси и ротация opencode для каждой учётной записи временно исключают прокси, который только что дал сбой (отклонил проверку TCP или через него был получен ответ 429), на период в рамках процесса, удваивающийся при каждом повторе вплоть до заданного предела. Статус прокси не записывается; если отложены все кандидаты, выбор остаётся прежним. По умолчанию отключено: порядок выбора в точности соответствует обычной ротации.", + "featureFlagProxyPoolEgressObservationDescription": "Показывать под пулом прокси на панели мониторинга, сколько наблюдаемых исходящих IP-адресов обслуживали его участников за последние 24 ч, сколько подключений их использовали и какое наибольшее число подключений приходилось на один IP-адрес. Только для чтения, вычисляется по журналу прокси и никогда не используется для маршрутизации. По умолчанию отключено: редактор пула остаётся без изменений, а маршрут наблюдений возвращает null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "При проверке работоспособности прокси позволить проверке, отклонённой целевым сервером (401/403/429: прокси передал запрос, но целевой сервер отклонил этот исходящий IP-адрес), сбрасывать счётчик последовательных сбоев прокси, как при успешно обслуженной проверке. По умолчанию отключено: отказ остаётся нейтральным и не сбрасывает счётчик. Ответ 5xx в любом случае остаётся неопределённым, а отказ никогда не удаляет, не отключает и не активирует прокси повторно.", "sidebar": { "home": "Главная", "dashboard": "Панель управления", @@ -1069,50 +1069,50 @@ "cliToolsShort": "Инструменты", "cache": "Кэш", "cacheShort": "Кэш", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Пакетные задания", + "themeSystem": "Система тем", + "whitelabelingDesc": "Описание брендирования", + "switchThemes": "Переключение тем", + "themeAccentDesc": "Описание акцентного цвета темы", + "uploadFavicon": "Загрузить фавикон", + "themeDark": "Тёмная тема", + "customLogoDesc": "Описание пользовательского логотипа", + "sidebarVisibilityToggle": "Переключатель видимости боковой панели", + "themeAccent": "Акцентный цвет темы", + "resetFavicon": "Сбросить фавикон", + "whitelabeling": "Брендирование", + "darkMode": "Тёмный режим", + "uploadLogo": "Загрузить логотип", + "themeLight": "Светлая тема", + "appName": "Название приложения", + "appNameDesc": "Описание названия приложения", + "resetLogo": "Сбросить логотип", + "customFavicon": "Пользовательский фавикон", + "hideHealthLogs": "Скрывать журналы проверок работоспособности", + "customLogo": "Пользовательский логотип", + "appearance": "Внешний вид", + "themeSelectionAria": "ARIA-метка выбора темы", + "themeCreate": "Создать тему", + "customFaviconDesc": "Описание пользовательского фавикона", + "logoPreview": "Предпросмотр логотипа", + "themeCustom": "Пользовательская тема", + "hideHealthLogsDesc": "Описание скрытия журналов проверок работоспособности", + "faviconPreview": "Предпросмотр фавикона", + "changelog": "Журнал изменений", + "contextSection": "Контекст и кэш", + "contextCaveman": "Пещерный человек", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Комбинации движков", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "Ультра", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Настройки сжатия", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Студия комбинаций", "combosLiveSubtitle": "Каскад маршрутизации в реальном времени", "compressionStudio": "Compression Studio", "compressionExclusions": "Исключения", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Каскад движков в реальном времени", "compressionExclusionsSubtitle": "Обход для отдельных моделей/endpoint'ов", "chaosConfigSubtitle": "Мультимодельное параллельное выполнение", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Маршрутизация", + "protocolsSection": "Протоколы", + "agentsAiSection": "Агенты и ИИ", + "cacheContextSection": "Кэш и контекст", + "analyticsSection": "Аналитика", + "costsSection": "Расходы", + "monitoringSection": "Мониторинг", + "auditSecuritySection": "Аудит и безопасность", + "devtoolsSection": "Инструменты разработчика", + "configurationSection": "Конфигурация", + "aiFeaturesSection": "Функции ИИ", "mcp": "MCP", "a2a": "A2A", "plugins": "Плагины", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "Конечные точки API", + "batchFiles": "Файлы", + "analyticsEvals": "Оценки", + "analyticsSearch": "Поиск", + "analyticsUtilization": "Использование", + "analyticsComboHealth": "Состояние комбинаций", + "analyticsCompression": "Сжатие", + "costsBudget": "Бюджет", "costsFreeTiers": "Бюджет бесплатного тарифа", "costsFreeTiersSubtitle": "Ежемесячные лимиты бесплатных токенов", "freeProviderRankings": "Рейтинги бесплатных провайдеров", "freeProviderRankingsSubtitle": "Лучшие бесплатные провайдеры, ранжированные по ELO моделей", "radar": "Каталог Радар", "radarSubtitle": "Бесплатный каталог моделей, обогащенный данными сообщества", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Совместное использование квот", + "costsPricing": "Цены", + "logsProxy": "Журналы прокси", + "logsConsole": "Консоль", + "logsActivity": "Активность", + "auditMcp": "Аудит MCP", "auditA2a": "А2А Аудит", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Внешний вид", + "settingsAi": "Настройки ИИ", + "settingsSecurity": "Безопасность", "settingsAccessTokens": "Токены доступа", "settingsFeatureFlags": "Флаги функций", "settingsCache": "Кэш", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "Авторизация", + "settingsRouting": "Маршрутизация", + "settingsResilience": "Отказоустойчивость", "modelLockout": "Блокировка моделей", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Расширенные настройки", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Квота провайдера", + "providerQuota": "Квота провайдера", + "runtime": "Среда выполнения", + "consoleLogs": "Журналы консоли", + "logsTimeline": "Хронология", "logsTimelineSubtitle": "Визуальная временная шкала запросов", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Диалоги", + "conversationsSubtitle": "Многоэтапные агентные диалоги", + "globalRouting": "Глобальная маршрутизация", + "mitmProxy": "MITM-прокси", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "Агентные функции", + "otherFeaturesSection": "Другие функции", + "compressionContextGroup": "Сжатие контекста", + "gamificationGroup": "Геймификация", + "toolsGroup": "Инструменты", + "integrationsGroup": "Интеграции", + "proxyGroup": "Прокси", + "costsParametersGroup": "Параметры стоимости", + "auditGroup": "Аудит", + "batchGroup": "Пакетная обработка", + "homeSubtitle": "Обзор панели управления", + "providersSubtitle": "Управление AI-провайдерами", + "quotaTrackerSubtitle": "Отслеживание лимитов использования", + "providerQuotaSubtitle": "Отслеживание лимитов использования провайдера", + "runtimeSubtitle": "Отказоустойчивость и сеансы в реальном времени", + "contextCombosSubtitle": "Объединение механизмов сжатия", + "cliToolsSubtitle": "Настройка сред выполнения CLI", + "agentsSubtitle": "Управление локальными агентами", + "cloudAgentsSubtitle": "Управление облачными агентами", + "apiEndpointsSubtitle": "Публикация пользовательских конечных точек", + "proxySubtitle": "Настройки HTTP-прокси", + "mitmProxySubtitle": "MITM-перехват", + "oneProxySubtitle": "Публичный прокси-шлюз", + "leaderboard": "Таблица лидеров", + "profile": "Профиль", + "tokens": "Токены", + "gamificationAdmin": "Администрирование геймификации", + "leaderboardSubtitle": "Рейтинги и достижения", + "profileSubtitle": "Учётная запись и настройки", + "tokensSubtitle": "Использование токенов и бюджеты", + "gamificationAdminSubtitle": "Мониторинг аномалий и защита от мошенничества", + "usageSubtitle": "Статистика трафика и использования", + "analyticsComboHealthSubtitle": "Надёжность целевых комбинаций", + "analyticsUtilizationSubtitle": "Использование провайдеров", + "costsSubtitle": "Структура расходов", + "cacheSubtitle": "Доля попаданий в кэш", + "analyticsCompressionSubtitle": "Статистика экономии токенов", + "analyticsSearchSubtitle": "Аналитика поисковых инструментов", + "analyticsEvalsSubtitle": "Результаты наборов оценок", "providerStats": "Статистика провайдеров", "providerStatsSubtitle": "Метрики задержки и производительности", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Журналы приложения", + "logsProxySubtitle": "Журналы прокси-трафика", + "consoleLogsSubtitle": "Вывод консоли", + "logsActivitySubtitle": "Журнал активности пользователей", + "healthSubtitle": "Проверка состояния системы", + "costsPricingSubtitle": "Правила тарификации для каждой модели", + "costsBudgetSubtitle": "Лимиты бюджета", + "costsQuotaShareSubtitle": "Общие квоты провайдеров для всех ключей", + "auditLogSubtitle": "Аудит авторизации", + "auditMcpSubtitle": "Аудит сервера MCP", + "auditA2aSubtitle": "Аудит протокола A2A", + "translatorSubtitle": "Преобразование форматов", + "playgroundSubtitle": "Тестирование промптов в реальном времени", + "searchToolsSubtitle": "Реестр поисковых инструментов", + "memorySubtitle": "Постоянная память агента", + "omniSkillsSubtitle": "Реестр навыков песочницы", + "agentSkillsSubtitle": "Реестр навыков A2A", + "mcpSubtitle": "Управление сервером MCP", + "a2aSubtitle": "Сервер протокола A2A", "pluginsSubtitle": "Магазин и установка плагинов", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Кэшированные медиафайлы", + "batchFilesSubtitle": "Файлы пакетного ввода-вывода", + "settingsSubtitle": "Все настройки", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Тема и макет", + "settingsAiSubtitle": "Настройки поведения ИИ по умолчанию", + "globalRoutingSubtitle": "Глобальные правила маршрутизации", + "settingsResilienceSubtitle": "Повторные попытки и предохранители", + "settingsAdvancedSubtitle": "Параметры для опытных пользователей", + "settingsSecuritySubtitle": "Аутентификация и шифрование", "settingsAccessTokensSubtitle": "Токены CLI с ограниченной областью видимости для удаленного режима", "settingsFeatureFlagsSubtitle": "Переключить возможности системы", "settingsCacheSubtitle": "Кэш каталога моделей и ответов", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Боковая панель", + "settingsSidebarSubtitle": "Настроить компоновку боковой панели", "settingsAuthzSubtitle": "Политика маршрутизации инвентаря и обхода", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Документация", + "issuesSubtitle": "Сообщить об ошибке", + "changelogSubtitle": "Примечания к выпуску", "costsQuotaPlans": "Планы и Квоты", "costsQuotaPlansSubtitle": "Настройте планы по провайдеру", "activity": "Активность", @@ -1278,8 +1278,8 @@ "agentBridge": "Агентский Мост", "agentBridgeSubtitle": "Перехват трафика агента IDE", "trafficInspector": "Инспектор Трафика", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Просматривайте трафик запросов и ответов ваших приложений", + "trafficInspectorPurpose": "Узнайте, что именно ваше приложение отправляет поставщикам ИИ и получает от них. Работает с любым клиентом, совместимым с OpenAI.", "cliCode": "CLI Кодов", "cliCodeSubtitle": "Инструменты кода, указывающие на OmniRoute", "cliAgents": "CLI Агенты", @@ -1345,7 +1345,7 @@ "refresh": "Обновить", "loading": "Загрузка вебхуков...", "never": "Никогда", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {нет сбоев} one {# сбой} few {# сбоя} many {# сбоев} other {# сбоя}}", "testWebhook": "Отправить тест", "testSuccess": "Тестовый вебхук отправлен успешно.", "testFailed": "Проверка вебхука не удалась.", @@ -1605,49 +1605,49 @@ "mediaDescription": "Создание изображений, видео и музыки", "themes": "Темы", "themesDescription": "Выберите цветовую тему для всей панели", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "costsDescription": "Отслеживайте расходы, анализируйте тенденции и управляйте бюджетом на ИИ по всем поставщикам", + "cacheDescription": "Отслеживайте эффективность кэша промптов поставщиков и локального семантического повторного использования ответов.", + "limitsDescription": "Настраивайте ограничения частоты запросов и квоты для каждого API-ключа и поставщика", + "runtimeDescription": "Мониторинг среды выполнения в реальном времени — предохранители, периоды ожидания, блокировки моделей, сеансы и оповещения о квотах", + "apiManagerDescription": "Управляйте API-ключами и контролем доступа для своего экземпляра OmniRoute", + "batchDescription": "Асинхронно обрабатывайте большие объёмы запросов с помощью пакетных вызовов API", + "contextCavemanDescription": "Сжатие сообщений на основе правил, языковые пакеты, аналитика и управление режимами вывода.", + "contextRtkDescription": "Сжатие с учётом команд для результатов инструментов, журналов терминала и результатов сборки.", + "contextCombosDescription": "Определите, как механизмы объединяются для различных сценариев маршрутизации.", + "changelogDescription": "Будьте в курсе новейших возможностей платформы и объявлений.", + "agentsDescription": "Управляйте и настраивайте инструменты ИИ-агентов: Codex, Devin, Jules и пользовательские агенты", + "cloudAgentsDescription": "Оркестрируйте облачных ИИ-агентов с отслеживанием задач в реальном времени и утверждением планов", + "memoryDescription": "Постоянная память диалогов с семантическим поиском и полнотекстовым индексированием FTS5", + "skillsDescription": "Устанавливайте навыки песочницы и управляйте ими для автоматизированного выполнения промптов и инструментов", + "agentSkillsDescription": "Каталог навыков для агентов с копированием URL одним нажатием для интеграции с ИИ-клиентами", + "translatorDescription": "Преобразовывайте и тестируйте промпты в разных форматах API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Интерактивно тестируйте промпты, просматривая ответы поставщиков в реальном времени и проверяя формат", + "searchToolsDescription": "Поисковая аналитика, разбивка по поставщикам, доля попаданий в кэш и отслеживание затрат", + "logsDescription": "Журналы запросов в реальном времени, трассировки ошибок и инспектор потоковых событий", + "auditDescription": "Журнал аудита соответствия требованиям для использования API-ключей, вызовов инструментов MCP и событий политик", + "webhooksDescription": "Настройка конечных точек вебхуков для получения уведомлений о событиях в реальном времени", + "healthDescription": "Обзор состояния системы: провайдеры, автоматические выключатели, ограничения скорости и база данных", + "proxyDescription": "Настройка вышестоящего прокси-сервера для исходящих подключений к провайдерам", + "apiEndpointsDescription": "Управление пользовательскими конфигурациями конечных точек API и переопределениями маршрутизации", + "batchFilesDescription": "Просмотр и управление выходными файлами и результатами пакетных заданий", + "analyticsEvalsDescription": "Результаты оценки моделей и показатели производительности", + "analyticsSearchDescription": "Аналитика поисковых запросов, показатели попаданий в кэш и отслеживание затрат", + "analyticsUtilizationDescription": "Показатели использования провайдеров и планирование мощностей", + "analyticsComboHealthDescription": "Состояние и производительность конфигураций комбинированной маршрутизации в реальном времени", + "analyticsCompressionDescription": "Аналитика сжатия контекста и экономии токенов", + "costsBudgetDescription": "Бюджетные ограничения и оповещения о расходах для каждого ключа API и провайдера", + "costsPricingDescription": "Пользовательская настройка цен для расчёта стоимости токенов", + "logsProxyDescription": "Журналы запросов вышестоящего прокси-сервера и анализ трафика", + "logsConsoleDescription": "Вывод консоли приложения и журналы отладки", + "logsActivityDescription": "Журнал аудита действий пользователей и системных событий", + "auditMcpDescription": "Журнал аудита вызовов инструментов MCP и записи о соответствии требованиям", "auditA2a": "А2А Аудит", "auditA2aDescription": "Контрольный журнал выполнения задач A2A, переходы между состояниями и записи вызовов навыков", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Тема, фирменный стиль и визуальная настройка", + "settingsAiDescription": "Поведение ИИ, бюджеты рассуждений, компьютерное зрение и настройки памяти", "settingsCacheDescription": "TTL для записей кэша каталога моделей", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Настройки аутентификации, авторизации и управления доступом", "featureFlags": "Флаги функций", "featureFlagsDescription": "Возможности системы управления и экспериментальные возможности", "featureFlagsActive": "{count} активен", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Нет флагов, соответствующих вашему запросу", "featureFlagsSaved": "Флаг обновлен", "featureFlagsError": "Не удалось обновить флаг", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Правила маршрутизации, псевдонимы моделей, настройки комбинированной маршрутизации по умолчанию и параметры деградации", + "settingsResilienceDescription": "Настройка автоматического выключателя, повторных попыток и резервного переключения", + "settingsAdvancedDescription": "Расширенные правила полезной нагрузки, ограничения запросов и настройки API прокси-сервера", + "mitmProxyDescription": "Настройка MITM-прокси для анализа трафика и отладки", + "oneProxyDescription": "Настройка 1Proxy для расширенного объединения прокси-серверов в цепочку", "omniSkillsDescription": "Установите и управляйте песочными навыками для автоматизированного выполнения запросов и инструментов" }, "cloudSyncStatus": { @@ -1762,7 +1762,7 @@ "discovery": "Обнаружение", "freeProviderRankings": "Рейтинг бесплатных провайдеров", "radar": "Radar", - "setup": "Setup", + "setup": "Настройка", "freeTiers": "Бесплатные тарифы", "gamification": "Геймификация", "leaderboard": "Таблица лидеров", @@ -1826,11 +1826,11 @@ "updateStarted": "Обновление начато...", "reloadingPageAutomatically": "Автоматическая перезагрузка страницы...", "providerTopology": "Топология провайдера", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Недавние запросы", + "recentRequestsEmpty": "Запросов пока нет.", + "recentRequestsModel": "Модель", + "recentRequestsTokens": "Вход / выход", + "recentRequestsWhen": "Когда", "downloadDmg": "Скачать DMG (macOS)", "downloadDmgDescription": "Доступна новая версия настольного приложения OmniRoute. Пожалуйста, загрузите и установите установщик DMG для macOS, чтобы обновить (текущая: v{version}).", "downloadExe": "Скачать EXE (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "Примечания к выпуску", "readMore": "Читать далее", "noAuthLabel": "Нет аутентификации", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Подготовьтесь к маршрутизации", + "readinessTitle": "Отправьте первый запрос", + "readinessSubtitle": "Четыре простых шага. OmniRoute проверяет готовность по мере настройки.", + "readinessStep1": "Подключите провайдера", + "readinessStep2": "Настройте аутентификацию конечной точки", + "readinessStep3": "Скопируйте конечную точку", + "readinessStep4": "Отправьте тестовый запрос", + "readinessContinue": "Продолжить настройку", + "readinessDismiss": "Пока скрыть" }, "analytics": { "title": "Аналитика", @@ -1963,10 +1963,10 @@ "rangeCancel": "Отменить", "rangeApply": "Применить", "rangeErrorInvalid": "Начало должно быть раньше конца", - "period1D": "1D", - "period7D": "7D", + "period1D": "1 д.", + "period7D": "7 д.", "period30D": "30Д", - "period90D": "90D", + "period90D": "90 д.", "periodYTD": "Год к дате", "periodAll": "Все", "totalTokens": "Всего токенов", @@ -2005,8 +2005,8 @@ "modelStatusError": "Ошибка", "comboHealth": "Здоровье комбо", "comboHealthDescription": "Квота на уровне комбо, распределение использования и метрики производительности", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Аналитика сжатия", + "compressionAnalyticsDescription": "Аналитика сжатия — экономия токенов, распределение по режимам и статистика провайдеров.", "autoRoutingTotalAutoRequests": "Всего автоматических запросов", "autoRoutingAvgSelectionScore": "Средняя оценка выбора", "autoRoutingExplorationRate": "Скорость исследования", @@ -2258,9 +2258,9 @@ "fullAccess": "Полный доступ", "keyManagement": "Управление ключами API", "keyManagementDesc": "Создавайте ключи API для аутентификации запросов к вашей конечной точке и управляйте ими.", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Ваше приложение отправляет запросы в OmniRoute с помощью API-ключа", + "requestFlowYourApp": "Ваше приложение", + "requestFlowApiKey": "API-ключ", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Всего ключей", "restricted": "Ограниченный", @@ -2301,9 +2301,9 @@ "keyCreatedNote": "Скопируйте и сохраните этот ключ сейчас — он больше не будет отображаться.", "done": "Готово", "savePermissions": "Сохранить разрешения", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", + "endpointRestrictions": "Разрешённые конечные точки", + "allEndpointsAllowed": "Этот ключ предоставляет доступ ко всем конечным точкам API.", + "endpointsRestricted": "Доступ ограничен: {count} конечн{count, plural, one {ая точка} other {ых точек}}.", "autoResolve": "Авторазрешение", "autoResolveDesc": "Автоматически сопоставлять неоднозначные имена моделей с нативным провайдером для этого API-ключа.", "streamDefaultMode": "Совместимость по умолчанию для потока", @@ -2382,8 +2382,8 @@ "allowedCombos": "Разрешенные комбинации", "allCombosAllowed": "Этот ключ может использовать любую комбинацию.", "restrictedComboCount": "Ограничено {count, plural, one {# комбинацией} few {# комбинациями} many {# комбинациями} other {# комбинациями}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# сохранённая запись отсутствует} other {# сохранённых записей отсутствуют}} в этом списке вариантов (например, правила маршрутизации), поэтому {count, plural, one {она будет сохранена без изменений} other {они будут сохранены без изменений}}.", + "preservedComboRuleHint": "Сохранено без изменений. Эта запись не представлена в списке вариантов выше, поэтому изменить её можно только через API.", "apiManagerCustomRateLimits": "Пользовательские лимиты ставок", "apiManagerCustomRateLimitsDesc": "Переопределить глобальные ограничения по умолчанию. Оставьте пустым, чтобы использовать значения по умолчанию.", "apiManagerRateLimitRequestsPlaceholder": "Запросы", @@ -2419,15 +2419,15 @@ "bypassProviderQuota": "Обход ограничений квот провайдера", "bypassProviderQuotaDescription": "Позволяет этому ключу игнорировать политику отключения вышестоящего провайдера/аккаунта при маршрутизации. Квоты API-ключа в USD по-прежнему применяются.", "quotaPill": "КВОТА", - "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "quotaModeOnly": "Только qtSd", + "exclusiveLease": "Эксклюзивная аренда", + "exclusiveLeaseNoticeTitle": "Эксклюзивная аренда", + "exclusiveLeaseNoticeDesc": "Этот API-ключ предоставляет права эксклюзивной аренды для маршрутизации через выделенные подключения.", + "allConnections": "Все подключения", + "onlySelectedConnections": "Только выбранные подключения", + "selectAtLeastOneConnection": "Выберите хотя бы одно подключение или вариант «Все подключения».", + "allConnectionsDesc": "Этот ключ позволяет использовать любое активное подключение.", + "restrictedToConnections": "Доступ ограничен: {count, plural, one {# подключение} other {# подключений}}." }, "auditLog": { "title": "Журнал аудита", @@ -2593,60 +2593,60 @@ "emptyState": "Отправьте поисковый запрос, чтобы увидеть результаты", "copy": "Копировать", "resetToDefault": "Сбросить настройки по умолчанию", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Поиск", + "tabScrape": "Извлечение данных", + "tabCompare": "Сравнение", + "modalitiesGuide": "Руководство по модальностям", + "searchConceptTitle": "Поиск", + "searchConceptDesc": "Поиск = получение списка результатов из интернета (заголовок, URL, фрагмент, оценка релевантности)", + "scrapeConceptTitle": "Извлечение данных", + "scrapeConceptDesc": "Scrape = извлекает полное содержимое URL (Markdown, текст или HTML)", + "compareConceptTitle": "Сравнить", + "compareConceptDesc": "Compare = выполняет один и тот же запрос параллельно у N провайдеров для сравнения задержки, стоимости и совпадения результатов", + "rerankConceptTitle": "Переранжировать", + "rerankConceptDesc": "Rerank = меняет порядок результатов с помощью LLM, чтобы повысить их релевантность запросу", + "autoConceptTitle": "Авто (самый дешёвый)", + "autoConceptDesc": "Auto (cheapest) = автоматически выбирает самого дешёвого доступного провайдера с настроенными учётными данными", + "providerCatalogTitle": "Каталог провайдеров", + "kindSearch": "Поиск", + "kindFetch": "Получение/извлечение", + "statusConfigured": "Настроено", + "statusMissing": "Нет учётных данных", + "statusRateLimited": "Лимит запросов исчерпан", + "configureProvider": "Настроить в разделе «Провайдеры»", + "loadingProviders": "Загрузка провайдеров…", + "failedToLoadProviders": "Не удалось загрузить провайдеров", + "costPerQuery": "Стоимость/запрос", + "freeQuota": "Бесплатная квота/мес.", + "scrapeUrl": "URL для извлечения", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "Требуется URL", "scrapeUrlInvalid": "Неверный URL — он должен начинаться с http:// или https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Извлечь", + "scrapeExtracting": "Извлечение…", + "scrapeFullPage": "Вся страница", + "scrapeFormat": "Формат", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Текст", + "scrapePreview": "Предпросмотр", + "scrapeRaw": "Исходные данные", + "scrapeContentTruncated": "(обрезано, см. исходные данные)", + "scrapeMetadata": "Метаданные", + "scrapeProvider": "Провайдер", + "scrapeSize": "Размер", "scrapeEmptyState": "Введите URL для извлечения его содержимого", "scrapeProvidersAvailable": "Доступные провайдеры: Firecrawl, Jina Reader, Tavily.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Сравнить", + "compareRunning": "Сравнение…", + "autoProvider": "Авто (самый дешёвый)", + "configuredStatus": "Настроено", + "rateLimitedStatus": "Лимит запросов исчерпан", + "noCredential": "Нет учётных данных", + "searchTypeLabel": "Тип", + "rerankModelLabel": "Модель реранжирования", + "noneOption": "Нет", + "size": "Размер", "configurationPane": "Панель конфигурации", "configuration": "Конфигурация", "status": "Статус", @@ -2908,7 +2908,7 @@ "continue": "Используйте при запуске Продолжить в IDE, если вам нужна переносимая конфигурация поставщика на основе JSON.", "opencode": "Используйте, если вы предпочитаете запускать собственные агенты терминала и автоматизировать скрипты через OpenCode.", "kiro": "Используйте при интеграции Kiro и централизованном управлении маршрутизацией модели из OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Используйте, если вам нужна IDE с приоритетом ИИ и моделями Codeium/Windsurf, маршрутизируемыми через OmniRoute.", "antigravity": "Используйте, когда трафик Антигравитации/Киро необходимо перехватить через MITM и направить в OmniRoute.", "copilot": "Используйте его, если вам нужен пользовательский интерфейс в стиле чата Copilot, одновременно обеспечивая соблюдение ключей OmniRoute и правил маршрутизации.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2932,7 +2932,7 @@ "kiro": "Amazon Kiro - IDE с ИИ", "windsurf": "Редактор кода Windsurf с ИИ", "copilot": "Ассистент GitHub Copilot с ИИ", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "CLI помощника по программированию Sourcegraph Amp", "hermes": "Помощник по терминалу Hermes AI", "hermes-agent": "Агент Hermes (от Nousresearch) - Продвинутый терминальный ИИ с поддержкой нескольких моделей (делегирование, зрение, сжатие и т.д.)", "custom": "Универсальный генератор конфигурации CLI или SDK, совместимый с OpenAI.", @@ -2950,7 +2950,7 @@ "interpreter": "CLI автономного агента для кодинга Open Interpreter", "omp": "Терминальный агент для кодинга Oh My Pi", "letta": "CLI-агент Letta с постоянной памятью и использованием инструментов", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — самообучающаяся RLM-система для программирования с поддержкой OpenAI-совместимых провайдеров", "warp": "Терминал Warp AI с поддержкой кастомных провайдеров", "agent-deck": "Мультиагентный оркестратор Agent Deck", "5dive": "5dive — самостоятельно размещаемый флот агентов для кода; один auth-профиль направляет их всех в OmniRoute" @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Пользовательский интерфейс командной строки", - "toolCategories": "Tool Categories", + "toolCategories": "Категории инструментов", "visibleToolsCount": "Доступно {count} инструментов", "customCliBuilderTitle": "OpenAI-совместимый конструктор командной строки", "customCliBuilderDescription": "Создавайте переменные окружения и фрагменты JSON для любого интерфейса командной строки или SDK, который принимает базовый URL-адрес, совместимый с OpenAI, ключ API и идентификатор модели.", @@ -3260,15 +3260,15 @@ "priorityDesc": "Последовательный откат: сначала пробуется модель 1, затем 2 и т. д.", "weightedDesc": "Распределяет трафик по весовому проценту с резервным вариантом", "roundRobinDesc": "Круговое распределение: каждый запрос переходит к следующей модели по очереди.", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Ретрансляция контекста", + "contextRelayDesc": "Сохраняет непрерывность сеанса с помощью сводок для передачи контекста при ротации аккаунтов", "randomDesc": "Равномерный случайный выбор, затем возврат к оставшимся моделям", "leastUsedDesc": "Выбирает модель с наименьшим количеством запросов, балансируя нагрузку с течением времени.", "costOptimizedDesc": "Маршруты к самой дешевой модели в первую очередь на основе цены", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Последовательно направляет каждый повторно используемый префикс запроса в один и тот же аккаунт провайдера", "resetAware": "Запись с учетом сброса", "resetAwareDesc": "Балансирует оставшуюся квоту с 5-часовым и еженедельным сбросом, затем выполняет циклический анализ одинаковых результатов.", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "С учетом квоты", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "Строгий случайный", "strictRandomDesc": "Перемешивание колоды - каждая модель используется по одному разу перед новым перемешиванием", @@ -3288,13 +3288,13 @@ "retryDelay": "Задержка повтора (мс)", "concurrencyPerModel": "Параллелизм/модель", "queueTimeout": "Тайм-аут очереди (мс)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Порог передачи контекста", + "contextRelayHandoffThresholdHelp": "Когда использование квоты достигает этого порога, OmniRoute создает структурированную сводку для передачи контекста до исчерпания квоты активного аккаунта.", + "contextRelayMaxMessages": "Максимальное количество сообщений для сводки", + "contextRelayMaxMessagesHelp": "Ограничивает объем недавней истории, сжимаемой в сводку для ретрансляции.", + "contextRelaySummaryModel": "Модель для сводки", + "contextRelaySummaryModelHelp": "Необязательная переопределяющая модель, используемая только для создания сводки при передаче контекста. Оставьте поле пустым, чтобы повторно использовать активную модель комбинации.", + "contextRelayProviderNote": "В настоящее время ретрансляция контекста создает сводки для передачи при ротации аккаунтов Codex. Для наилучшей непрерывности используйте ее с несколькими аккаунтами одного провайдера.", "advancedHint": "Оставьте пустым, чтобы использовать глобальные значения по умолчанию. Они переопределяют настройки каждого провайдера.", "failoverBeforeRetry": "Аварийное переключение перед повторной попыткой", "maxSetRetries": "Макс. набор повторов", @@ -3315,7 +3315,7 @@ "liveSelectComboPlaceholder": "— выберите combo —", "liveTargetCount": "{count, plural, one {# цель} few {# цели} many {# целей} other {# цели}}", "liveSingle": "Одиночный", - "liveFleet": "Fleet", + "liveFleet": "Пул", "playgroundStatusAvailable": "Доступно", "playgroundStatusNoQuota": "Нет квоты", "playgroundStatusDegraded": "Деградирован", @@ -3391,14 +3391,14 @@ "example": "Пример: несколько аккаунтов одной модели для равномерного распределения использования." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Используйте, если требуется выбор с низкой задержкой на основе алгоритма Power-of-Two-Choices.", + "avoid": "Не используйте для небольших комбинаций из 2 или менее моделей — преимуществ перед циклическим перебором нет.", + "example": "Пример: высокопроизводительный инференс через 4 и более эквивалентных конечных точек моделей." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Используйте, если длительные сеансы должны сохраняться при ротации аккаунтов без потери рабочего контекста.", + "avoid": "Не используйте, если переключение аккаунтов происходит редко или если вам не нужны дополнительные запросы на суммаризацию.", + "example": "Пример: сеансы Codex, которые переключаются между несколькими аккаунтами при приближении к исчерпанию квоты." }, "fill-first": { "when": "Используйте, если вы хотите полностью исчерпать квоту одного провайдера, прежде чем переходить к следующему.", @@ -3459,12 +3459,12 @@ "warningRoundRobinSingleModel": "Round robin наиболее полезен минимум с 2 моделями.", "warningCostOptimizedPartialPricing": "Только у {priced} из {total} моделей есть цены. Маршрутизация может быть лишь частично чувствительна к стоимости.", "warningCostOptimizedNoPricing": "Для этого комбо не найдены данные о ценах. Оптимизация по стоимости может маршрутизировать неожиданно.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterAll": "Все", + "filterIntelligent": "Интеллектуальные", + "filterDeterministic": "Детерминированные", + "filterEmptyTitle": "Нет комбинаций, соответствующих этому фильтру стратегии.", + "filterEmptyIntelligentDescription": "Создайте комбинацию auto или LKGP, чтобы заполнить панель мониторинга интеллектуальной маршрутизации.", + "filterEmptyDeterministicDescription": "Сейчас существуют только комбинации auto и LKGP. Вернитесь к фильтру «Все» или создайте детерминированную комбинацию.", "readinessTitle": "Готовы сохранить?", "readinessDescription": "Прежде чем создавать или обновлять эту комбинацию, просмотрите контрольный список.", "readinessCheckName": "Имя комбинации действительно", @@ -3482,8 +3482,8 @@ "applyRecommendations": "Применить рекомендации", "recommendationsUpdated": "Рекомендации обновлены для {strategy}.", "recommendationsApplied": "Рекомендации применены к этому комбо.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "intelligentPanelTitle": "Панель мониторинга интеллектуальной маршрутизации", + "intelligentPanelDesc": "Оценка и состояние работоспособности этой комбинации с автоматической маршрутизацией в реальном времени.", "configOnlyStatus": "Представление конфигурации", "configOnlyHint": "Эта панель показывает только входные данные маршрутизации. Состояние автоматического выключателя в реальном времени доступно на странице состояния.", "routingInputs": "Маршрутизация Входов", @@ -3505,47 +3505,47 @@ "manualModelUnknownProvider": "Неизвестный префикс провайдера.", "builderDynamicAccountShort": "Динамический аккаунт", "builderNeedValidName": "Определите допустимое имя комбо перед продолжением.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Обзор состояния", + "normalOperation": "Нормальная работа", + "allProvidersHealthy": "Провайдеры сообщают о нормальных условиях маршрутизации.", + "incidentMode": "Режим инцидента", + "highCircuitBreakerRate": "Обнаружена высокая частота срабатывания автоматического выключателя.", + "activeModePack": "Активный пакет режимов", + "modePackUpdated": "Пакет режимов обновлён до {pack}.", + "modePackHint": "Переключайте предустановки, чтобы изменять приоритеты механизма маршрутизации без пересоздания комбинации.", + "providerScores": "Оценки провайдеров", + "allProvidersEvaluated": "Пул кандидатов не настроен. Все активные провайдеры оцениваются во время выполнения.", + "excludedProviders": "Исключённые провайдеры", + "excludedProvidersHint": "Провайдеры с разомкнутым автоматическим выключателем временно исключаются из маршрутизации.", + "noExcludedProviders": "В настоящее время исключённых провайдеров нет.", + "cooldownMinutes": "Период ожидания: {minutes} мин", + "builderIntelligentTitle": "Настройка интеллектуальной маршрутизации", + "builderIntelligentDesc": "Настройте механизм многофакторной оценки для этой комбинации автоматической маршрутизации.", + "candidatePoolLabel": "Пул кандидатов", + "candidatePoolHint": "Выберите провайдеров, которых должен оценивать этот механизм. Оставьте поле пустым, чтобы использовать всех активных провайдеров.", + "candidatePoolEmpty": "Активных провайдеров пока нет.", + "candidatePoolAllProviders": "Все провайдеры", + "modePackLabel": "Пакет режимов", + "routerStrategyLabel": "Стратегия маршрутизатора", + "strategyRules": "Правила (6-факторная оценка)", + "explorationRateLabel": "Доля исследований", + "explorationRateHint": "{percent}% запросов могут направляться неоптимальным провайдерам в исследовательских целях.", + "budgetCapLabel": "Ограничение бюджета (USD на запрос)", + "budgetCapPlaceholder": "Без ограничений", + "advancedWeightsTitle": "Дополнительно: веса оценок", "nestedComboFlatten": "Развернуть вложенные комбо", "nestedComboExecute": "Выполнять вложенные комбо как цели", "effectiveRoutingShare": "Эффективная доля маршрутизации (вес ÷ всего)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Квота", + "weightHealth": "Работоспособность", + "weightCostInv": "Стоимость", + "weightLatencyInv": "Задержка", + "weightTaskFit": "Соответствие задаче", + "weightStability": "Стабильность", + "weightTierPriority": "Уровень", + "weightCacheAffinity": "Предпочтение попадания в кеш", "weightSessionAvailability": "Доступность сессии", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Настройка интеллектуальной маршрутизации", "strategyRecommendations": { "priority": { "title": "Базовая отказоустойчивая схема", @@ -3652,80 +3652,80 @@ "autoDesc": "Автоматическая стратегия - система сама выбирает подходящее поведение.", "lkgp": "LKGP", "lkgpDesc": "Маршрутизация по последней известной хорошей политике", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Начало работы с комбинациями", + "wizardGuideDesc": "Создавайте комбинации моделей для интеллектуальной маршрутизации трафика ИИ", + "wizardGuideHint": "или нажмите «+ Создать комбинацию» выше", + "createFirstCombo": "Создайте первую комбинацию", + "wizardStep1Title": "Назовите комбинацию", + "wizardStep1Desc": "Дайте комбинации уникальное имя, чтобы идентифицировать её в правилах маршрутизации", + "wizardStep2Title": "Добавьте модели", + "wizardStep2Desc": "Выберите модели ИИ и расположите их в порядке приоритета резервного переключения", + "wizardStep3Title": "Выберите стратегию", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Проверка и сохранение", + "wizardStep4Desc": "Проверьте конфигурацию и активируйте комбо", + "usageGuideInvokeTitle": "Как вызвать этот комбо", + "usageGuideInvokeDesc": "Передайте точное имя комбо в качестве модели, например: model: \"my-combo\" (или combo/my-combo).", + "usageGuideInvokeAutoNote": "auto и auto/* — это отдельный роутер с нулевой конфигурацией, который не использует ваши комбо (если только один из них не называется буквально auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto — это реальный платный продукт OpenRouter (Auto Best Available), а не псевдоним OmniRoute. Исключите его через «Настройки» → «Маршрутизация» → «Скрыть платные модели».", + "emailVisibilityStateOn": "Вкл.", + "emailVisibilityStateOff": "Выкл.", + "reorderHandle": "Перетащите, чтобы изменить порядок", + "failedReorder": "Не удалось изменить порядок моделей", + "builderFlowTitle": "Процесс создания комбо", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Основные настройки", + "description": "Название и начальный шаблон" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Шаги", + "description": "Выбор провайдера, модели и аккаунта" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Стратегия", + "description": "Поведение маршрутизации и расширенные настройки" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Умная маршрутизация", + "description": "Пул кандидатов для автомаршрутизации, предустановки и оценка" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Проверка", + "description": "Финальная проверка перед сохранением" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Этап завершён", + "builderStageCurrent": "Текущий этап", + "builderStagePending": "Ожидает", + "builderStageLocked": "Заблокировано — сначала завершите предыдущий этап", + "builderTitle": "Создать комбо", + "builderBrowseCatalog": "Открыть каталог", + "builderProvider": "Провайдер", + "builderLoadingProviders": "Загрузка провайдеров...", + "builderSelectProvider": "Выберите провайдера", + "builderModel": "Модель", + "builderSelectModel": "Выберите модель", + "builderProviderFirst": "Сначала выберите провайдера", + "builderAccount": "Аккаунт", + "builderPreview": "Предпросмотр", + "builderAddStep": "Добавить шаг", "builderDuplicateExact": "Этот конкретный шаг поставщика/модели/учетной записи уже есть в списке.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Ссылка на комбо", + "builderAddComboRef": "Добавить ссылку на комбо", + "builderComboRefStep": "Добавить ссылку на комбо", + "builderPinnedAccount": "Закреплённая учётная запись", + "builderLegacyEntry": "Устаревшая запись", + "reviewName": "Название", + "reviewStrategy": "Стратегия", + "reviewSteps": "Шаги", + "reviewAccounts": "Учётные записи", + "reviewProviders": "Провайдеры", + "reviewComboRefs": "Ссылки на комбинации", + "reviewAdvanced": "Расширенные настройки", + "reviewAgentFlags": "Флаги агента", + "reviewSequence": "Последовательность моделей", + "reviewNoSteps": "Шаги не настроены", "builderStagesDescription": "Завершите каждый этап, чтобы определить комбинации, шаги построения, выбрать стратегию маршрутизации и просмотреть результаты.", "builderStepsDescription": "Создайте каждый шаг комбинации по порядку: поставщик, модель, затем учетная запись. Это позволяет повторно использовать одного и того же поставщика и модель в разных учетных записях.", "selectProvider": "Выберите поставщика", @@ -3800,27 +3800,27 @@ "range7d": "7 дней", "range30d": "30 дней", "range90d": "90 дней", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 дней", + "range365d": "365 дней", "rangeAll": "Все время", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Активные модели", + "flatRateEstimateNotice": "Включает оценки стоимости токенов для подписок с фиксированной платой, а не фактически списанную сумму.", + "flatRateEstimateForecast": "Прогноз включает оценки для тарифов с фиксированной платой.", + "selectedWindow": "Выбранный период", + "activeProviders": "Активные провайдеры", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Расходы сегодня", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Доля провайдера", + "topProviders": "Ведущие провайдеры", + "costTrend": "Динамика расходов", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Ведущие модели", "requestsInWindow": "Requests In Window", "tokenUsage": "Использование токена", "totalTokens": "Всего токенов", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "Конечная точка API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Используйте OpenAI-совместимую конечную точку с большинством SDK и инструментов.", + "testEndpoint": "Проверить конечную точку →", + "advancedProtocols": "Расширенные протоколы", "available": "Доступные конечные точки", "cloudProxy": "Облачный прокси", "disableConfirm": "Вы уверены, что хотите отключить облачный прокси?", @@ -3912,8 +3912,8 @@ "audioTranscriptionDesc": "Транскрипция аудиофайлов в текст (шепотом)", "textToSpeech": "Преобразование текста в речь", "textToSpeechDesc": "Преобразование текста в естественно звучащую речь", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Генерация музыки", + "musicDesc": "Генерируйте музыку и аудиодорожки через ComfyUI (Stable Audio, MusicGen)", "moderations": "Модерации", "moderationsDesc": "Модерация контента и классификация безопасности", "responsesDesc": "OpenAI Responses API для Codex и продвинутых агентных рабочих процессов", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Асинхронная обработка больших пакетов запросов (совместимость с OpenAI)", "filesApi": "Файловый API", "filesApiDesc": "Загружайте файлы и управляйте ими для пакетной обработки", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Генерация видео", + "videoDesc": "Генерируйте видео с помощью моделей ИИ, таких как ComfyUI и Stable Video Diffusion.", + "tailscaleRequestFailed": "Не удалось загрузить статус Tailscale", + "tailscaleEnableFailed": "Не удалось включить Tailscale Funnel", + "tailscaleWaitingForLogin": "Завершите вход в Tailscale в открывшейся вкладке браузера. OmniRoute автоматически повторит попытку.", + "tailscaleLoginTimedOut": "Время ожидания входа в Tailscale истекло", + "tailscaleWaitingForFunnel": "Включите Funnel для этого устройства в открывшейся вкладке браузера. OmniRoute продолжит проверять статус.", + "tailscaleFunnelTimedOut": "Время ожидания включения Tailscale Funnel истекло", + "tailscaleStarted": "Tailscale Funnel включён", + "tailscaleDisableFailed": "Не удалось отключить Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel отключён", + "tailscaleInstallFailed": "Не удалось установить Tailscale", + "tailscaleInstallProgress": "Выполняется...", + "tailscaleInstalled": "Tailscale успешно установлен", + "tailscaleRunning": "Запущен", + "tailscaleNeedsLogin": "Требуется вход", + "tailscaleStoppedState": "Остановлен", + "tailscaleNotInstalled": "Не установлен", + "tailscaleUnsupported": "Не поддерживается", + "tailscaleError": "Ошибка", + "tailscaleDisable": "Остановить Funnel", + "tailscaleInstallAndEnable": "Установить и включить", + "tailscaleLoginAndEnable": "Войти и включить", + "tailscaleEnable": "Включить Funnel", + "tailscaleUrlNotice": "Использует ваш адрес Tailscale .ts.net. При первом использовании могут потребоваться вход и разрешение Funnel.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Аутентифицируйте этот компьютер в Tailscale, затем включите Funnel.", + "tailscaleBinaryPath": "Исполняемый файл: {path}", + "tailscaleLastError": "Последняя ошибка: {error}", + "tailscaleInstallTitle": "Установить Tailscale", + "tailscaleInstallIntro": "Устанавливает Tailscale на этот компьютер и подготавливает OmniRoute к включению Funnel.", + "tailscaleInstallPasswordHint": "В macOS и Linux для установки пакета и запуска службы может потребоваться sudo.", + "tailscaleSudoPlaceholder": "Пароль sudo (необязательно)", + "tailscaleInstalling": "Установка", "tailscaleSudoLabel": "Пароль Sudo (требуется в macOS/Linux)", "ngrokTitle": "Нгрок Туннель", "ngrokRunning": "Бег", @@ -4144,9 +4144,9 @@ "tierPublic": "Публичный", "hideInternal": "Скрыть внутренние", "showInternal": "Показать Внутренний", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Пользовательская системная инструкция", + "customSystemPromptDescription": "Добавлять пользовательскую системную инструкцию в каждый запрос к модели", + "customSystemPromptPlaceholder": "Например: всегда отвечай как пират...", "obsidianEnterToken": "Пожалуйста, введите токен API Obsidian", "obsidianConnectFailed": "Не удалось подключиться", "obsidianConnectionFailed": "Ошибка подключения", @@ -4287,10 +4287,10 @@ "failed": "сбой", "previous": "Предыдущая", "next": "Следующая", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "apiKeyId": "Идентификатор ключа API", + "offset": "Смещение", + "limit": "Лимит", + "tool": "Инструмент" }, "a2aDashboard": { "loading": "Загрузка панели A2A...", @@ -4346,10 +4346,10 @@ "metadata": "Метаданные", "events": "События", "artifacts": "Артефакты", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "tablePhase": "Этап таблицы", + "offset": "Смещение", + "limit": "Лимит", + "skill": "Навык", "rpcEndpoint": "ПОСТ /a2a", "rpcMethodSend": "сообщение/отправить", "rpcMethodStream": "сообщение/поток", @@ -4385,7 +4385,7 @@ "content": "Содержимое", "contentPlaceholder": "Значение или контент JSON, который нужно запомнить", "created": "Создано", - "delete": "Delete", + "delete": "Удалить", "deleteConfirmDesc": "Это действие нельзя отменить. Память будет удалена навсегда.", "deleteConfirmTitle": "Удалить память?", "description": "Постоянная кросс-сессионная память для диалогов", @@ -4599,7 +4599,7 @@ "timeoutDesc": "Максимальная длительность выполнения до принудительного завершения.", "networkAccess": "Доступ к сети", "networkAccessDesc": "Разрешить навыку сетевые запросы.", - "mode": "Mode", + "mode": "Режим", "q": "Q", "filterSkillsPlaceholder": "Фильтрация навыков по имени, описанию или тегу", "allModes": "Все режимы", @@ -4665,13 +4665,13 @@ "retry": "Повторить попытку", "allOperational": "Все системы в рабочем состоянии", "issuesDetected": "Обнаружены системные проблемы", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute готов к работе", + "healthVerdictActionRequired": "Для восстановления полной работоспособности требуется действие", + "healthVerdictCoolingDown": "Ожидание после недавних изменений", + "healthSubtitle": "Проверка состояния системы", + "advancedDiagnosticsTitle": "Расширенная диагностика", + "hide": "Скрыть", + "show": "Показать", "updatedAt": "Обновлен {time}", "latency": "Задержка", "latencyP50": "стр50", @@ -4721,11 +4721,11 @@ "resetting": "Сброс...", "resetAll": "Сбросить все", "until": "До {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Исчерпано", + "learnedFromHeaders": "Получено из заголовков", + "remainingOfLimit": "Осталось {remaining}/{limit}", + "throttleStatus": "Ограничение: {value}", + "lastHeaderUpdate": "Обновление заголовка: {age}", "databaseHealth": "Состояние базы данных", "databaseHealthDescription": "Диагностика и исправление устаревших строк квот/доменов и поврежденных ссылок на комбинации.", "status": "Статус", @@ -4888,28 +4888,28 @@ "previous": "Предыдущий", "next": "Далее", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Подробнее", + "eventMetadata": "Метаданные события", + "eventPayload": "Данные события", + "requestId": "Идентификатор запроса", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "Смещение", + "limit": "Лимит", + "status": "Статус", + "resourceType": "Тип ресурса", + "totalEntries": "Всего записей", + "tab": "Вкладка", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Закрыть", + "runningRequests": "Активные запросы", + "runningRequestsDesc": "Просмотр выполняющихся запросов к вышестоящим сервисам в реальном времени", "clearAll": "Очистить все", "confirmClearActiveRequests": "Удалить все активные запросы?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "Модель", + "provider": "Провайдер", + "account": "Учётная запись", + "elapsed": "Прошло времени", "activeStage": "Сцена", "activeStageUnknown": "Еще не отправлено на upstream", "activeStageRegistered": "Зарегистрировано", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Слот ограничения скорости получен", "activeStageSendingToProvider": "Отправка на upstream", "activeStageProviderResponseStarted": "Ответ от upstream начат", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Количество", + "payloads": "Данные запросов", + "viewPayloads": "Просмотреть", + "activeCount": "Активных: {count}", + "clientPayload": "Данные запроса клиента", + "upstreamPayload": "Данные запроса вышестоящему провайдеру", + "upstreamNotSentYet": "Ещё не отправлено вышестоящему сервису", + "runningRequestDetailMeta": "Аккаунт: {account} — Прошло времени: {elapsed}", + "export": "Экспорт", + "exporting": "Экспорт...", + "exportFailed": "Не удалось выполнить экспорт", "cleanHistoryButton": "Очистить историю", "cleanHistoryTitle": "Очистить историю логов?", "cleanHistoryMessage": "Это навсегда удалит все строки логов запросов, устаревшие строки детализации и локальные файлы артефактов в DATA_DIR/call_logs. Текущая страница обновится после очистки.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Очищено {deleted} записей логов, {deletedArtifacts} артефактов и {deletedDetailedLogs} устаревших строк детализации.", "cleanHistoryEmpty": "История логов запросов не найдена.", "cleanHistoryFailed": "Не удалось очистить историю логов.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Диапазон времени", + "lastNHours": "Последние {hours}", + "defaultRange": "по умолчанию", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Не удалось получить журналы", + "copyFailed": "Не удалось скопировать запись журнала", + "copyLogEntry": "Копировать запись журнала", "filterByLevel": "Фильтр по уровню логов", "searchPlaceholder": "Поиск по логам…", "searchAria": "Поиск записей логов", @@ -4987,9 +4987,9 @@ "multiProvider": "Мультипровайдер", "usageTracking": "Отслеживание использования", "securityDesc": "Установите пароль для защиты вашей панели управления или пропустите этот шаг.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Без пароля вы не сможете добавлять провайдеров во время настройки. Их можно добавить позже на панели управления после установки пароля.", "providerDesc": "Подключите своего первого поставщика искусственного интеллекта. Вы можете добавить больше позже.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Чтобы добавлять провайдеров, сначала необходимо установить пароль. Вернитесь к этапу настройки безопасности и установите пароль либо добавьте провайдеров позже на панели управления.", "apiKeyRequired": "Ключ API (обязательно)", "customUrlOptional": "Пользовательский URL-адрес (необязательно)", "testDesc": "Давайте проверим, работает ли подключение к вашему провайдеру.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Импорт…", "importFromFileImport": "Импортировать {count} провайдеров", "importFromFileResult": "Импортировано {success} провайдеров ({failed} с ошибкой)", + "importFromFileDownloadTemplate": "Скачать шаблон CSV", + "importFromFileMoreErrors": "+ ещё {count}", + "importFromFileSchemaHint": "Столбцы CSV являются позиционными: provider, name, apiKey, baseUrl (необязательно), priority (необязательно). Столбец provider должен содержать идентификатор существующего управляемого провайдера или уже зарегистрированного узла, совместимого с OpenAI/Anthropic. Этот импорт не создаёт новые узлы конечных точек.", "adaptaTutorial": { "title": "Как подключить Adapta Web", "introPrefix": "Adapta выполняет аутентификацию через Clerk. Токен", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} скрыто", "warningCount": "{count} Предупреждение", "noConnections": "Нет соединений", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Истёк срок действия", + "expiringSoonBadge": "Срок действия скоро истечёт", "freeTier": "Уровень бесплатного пользования", "freeTierAvailable": "Доступен бесплатный уровень", "hasFreeTooltip": "Доступен бесплатный тариф", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Этот провайдер устарел", "riskNotice": { "title": "Перед продолжением", - "detailsTitle": "Usage caveats", + "detailsTitle": "Ограничения использования", "tooltip": "Провайдер с ограничениями по использованию — нажмите для получения деталей", "oauth": "Этот провайдер использует вашу официальную сессию продукта/OAuth, которая не разрешена для использования с прокси/маршрутизатором. Мы не рекомендуем интенсивное использование автономных агентов (в стиле OpenCloud, длинные многошаговые потоки, большие партии) — вышестоящий сервис может отреагировать, ограничив или заблокировав аккаунт. Используйте на свой страх и риск.", "webCookie": "Этот провайдер аутентифицируется через ваши веб-сессионные куки. Внешний сервис может аннулировать сессию в любое время, требуя повторного входа в систему. Не рекомендуется для длительных unattended операций. Используйте на свой страх и риск.", @@ -5188,9 +5191,9 @@ "cancel": "Отмена" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "Отмечено подключений: {count} — до {maxFailures} недавних сбоев{lastFailureSuffix}. Нажмите, чтобы просмотреть состояние подключений.", + "lastFailureSuffix": "(последний сбой: {time})", + "ariaLabel": "Просмотреть сведения о состоянии подключений, предупреждений: {count}" }, "disabled": "Отключено", "enableProvider": "Включить провайдера", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL-адрес иконки", "iconUrlHint": "Необязательно. URL-адрес изображения, используемого в качестве иконки этого провайдера.", "iconUrlInvalid": "Неверный URL значка. Используйте URL-адрес http(s):// или data:image/*;base64.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Часовой пояс сброса суточной квоты", + "dailyQuotaResetTimezoneHint": "Необязательный часовой пояс IANA, используемый, если вышестоящий сервис не передаёт X-RateLimit-Reset. Оставьте поле пустым, чтобы сохранить короткий период ожидания.", + "dailyQuotaResetHourLabel": "Час сброса суточной квоты", + "dailyQuotaResetHourHint": "Местный час от 0 до 23 в указанном выше часовом поясе. Пустое поле означает отсутствие часов на уровне узла.", "anthropicPrefixPlaceholder": "ac-прод", "openaiPrefixPlaceholder": "oc-прод", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Провайдер не найден", "deleteConnectionConfirm": "Удалить это соединение?", "deleteConnectionConfirmNamed": "Вы уверены, что хотите удалить {name}? Это действие нельзя отменить.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Удалить выбранные ({count})", + "batchDeleteConfirm": "Удалить подключения ({count})? Это действие нельзя отменить.", + "batchDeleteSuccess": "Удалено подключений: {count}", "batchActivateSelected": "Активировать", "batchDeactivateSelected": "Деактивировать", "batchRetestSelected": "Протестировать повторно", @@ -5292,7 +5295,7 @@ "filterError": "Ошибка", "filterBanned": "Заблокирован", "filterCreditsExhausted": "Кредиты исчерпаны", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Поиск аккаунтов…", "noFilteredConnections": "Нет подключений, соответствующих текущему фильтру.", "failedSetAlias": "Не удалось установить псевдоним", "setAliasSuccess": "Псевдоним {alias} установлен", @@ -5305,10 +5308,10 @@ "openaiCompatibleDetails": "Подробности совместимости с OpenAI", "messagesApi": "API сообщений", "responsesApi": "API ответов", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Векторные представления", + "audioTranscriptions": "Расшифровка аудио", + "audioSpeech": "Синтез речи", + "imagesGenerations": "Генерация изображений", "chatCompletions": "Завершения чата", "importingModels": "Импорт...", "importFromModels": "Импорт из /модели", @@ -5356,7 +5359,7 @@ "filterModels": "Фильтровать модели…", "testAllRateLimited": "Достигнут лимит запросов, процесс остановлен досрочно", "hideFailedAuto": "Автоматически скрывать неработающие модели", - "selectAllModels": "Select all", + "selectAllModels": "Выбрать все", "hideAllModels": "Скрыть все", "modelsActive": "активные", "showModel": "Показать модель", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Один ключ на строку. Формат: name|apiKey или просто apiKey (автоматическое имя по индексу).", "bulkValidateKeys": "Подтвердите каждый ключ перед сохранением (медленнее)", "bulkAddAllKeys": "Добавить все ключи", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {Добавлен # ключ} few {Добавлено # ключа} many {Добавлено # ключей} other {Добавлено # ключа}}", + "bulkFailedCount": "{count, plural, one {# сбой} few {# сбоя} many {# сбоев} other {# сбоя}}", "optional": "Необязательно", "anthropicCompatibleName": "Антропная совместимость", "openaiCompatibleName": "Совместимость с OpenAI", @@ -5475,9 +5478,9 @@ "reauthenticateConnection": "Повторно аутентифицировать это соединение", "proxyConfig": "Конфигурация прокси", "aliasExistsAlert": "Псевдоним «{alias}» уже существует. Используйте другую модель или измените существующий псевдоним.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "название псевдонима", + "clickToSetAlias": "Нажмите, чтобы задать псевдоним", + "clickToEditAlias": "Псевдоним: {alias} (нажмите, чтобы изменить)", "openRouterAnyModelHint": "OpenRouter поддерживает любую модель. Добавляйте модели и создавайте псевдонимы для быстрого доступа.", "modelIdFromOpenRouter": "Идентификатор модели (из OpenRouter)", "openRouterModelPlaceholder": "антропный/Клод-3-опус", @@ -5534,18 +5537,18 @@ "interceptFetchHint": "Перенаправлять нативные вызовы инструмента web_fetch на /v1/web/fetch в OmniRoute.", "interceptionLoadError": "Не удалось загрузить настройки перехвата: {error}", "interceptionSaveError": "Не удалось сохранить настройки перехвата: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", + "ccAliasSectionTitle": "Показывать в Claude Code (claude/…)", + "ccAliasSectionHint": "Публиковать модели этого провайдера под зеркальными идентификаторами claude/<provider>/<model>, чтобы система обнаружения моделей шлюза Claude Code могла отображать их. По умолчанию отключено — включение удваивает количество записей в каталоге для всех клиентов.", + "ccAliasProviderLevelLabel": "По умолчанию для провайдера", + "ccAliasModelOverridesLabel": "Переопределения для отдельных моделей", + "ccAliasModelOverrideAriaLabel": "Переопределение для {modelId}", + "ccAliasStateInherit": "Наследовать", + "ccAliasStateOn": "Вкл.", + "ccAliasStateOff": "Выкл.", + "ccAliasAddModelPlaceholder": "Идентификатор модели (например, gpt-4o)", + "ccAliasAddModelButton": "Добавить переопределение", + "ccAliasLoadError": "Не удалось загрузить настройки псевдонимов обнаружения: {error}", + "ccAliasSaveError": "Не удалось сохранить настройку псевдонима обнаружения: {error}", "compatUpstreamHeadersLabel": "Дополнительные заголовки upstream", "compatUpstreamHeadersHint": "Настройка с высоким уровнем доверия - тот же уровень, что и редактирование API-учётных данных провайдера; использовать только доверенным администраторам. Применяется после того, как OmniRoute добавит авторизацию из API-ключа провайдера. Если пользовательский заголовок совпадает по имени с уже существующим (например, Authorization), ваше значение полностью заменяет автоматически созданный заголовок (включая Bearer token) - upstream увидит только введённое вами значение, а не ключ из настроек. Ошибка настройки может привести к 401 или поломке upstream-аутентификации. По одной строке на заголовок (например, дополнительный Authentication для некоторых шлюзов). Наведите курсор или сфокусируйте поле, чтобы увидеть предпросмотр. Сохраняется при потере фокуса, клике вне поля или закрытии панели.", "compatUpstreamHeaderName": "Имя заголовка", @@ -5592,9 +5595,9 @@ "email": "электронная почта", "healthCheckMinutes": "Проверка здоровья (мин)", "healthCheckHint": "Интервал обновления упреждающего токена. 0 = отключено.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", + "deselectAllModels": "Снять выделение со всех", + "modelsActiveCount": "Активно: {active}/{total}", + "noModelsMatch": "Нет моделей, соответствующих фильтру «{filter}»", "groupLabel": "Среда", "groupPlaceholder": "например eKaizen, Personal", "failedTestConnection": "Не удалось проверить соединение", @@ -5748,55 +5751,55 @@ "statusDeactivated": "Отключено (вручную)", "statusBanned": "Заблокировано / нарушение песочницы", "statusCreditsExhausted": "Недостаточно баланса / квота исчерпана", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "showEmails": "Показать все адреса электронной почты", + "hideEmails": "Скрыть все адреса электронной почты", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Добавьте ещё один API-ключ или вставьте несколько ключей", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Шлюзы-агрегаторы", "enterpriseCloud": "Предприятие и облако", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Метка формата API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "Регион API: Китай", + "apiRegionHint": "Подсказка по региону API", + "apiRegionInternational": "Регион API: международный", + "apiRegionLabel": "Метка региона API", + "apikey": "API-ключ", + "audio": "Аудио", + "audioProvidersHeading": "Заголовок раздела аудиопровайдеров", "cloudAgentProviders": "Поставщики облачных агентов", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Краткая метка аудио", + "azureOpenAiBaseUrlHint": "Подсказка для базового URL Azure OpenAI", + "bailianBaseUrlHint": "Подсказка для базового URL Bailian", + "claudeWebCookieHint": "Откройте claude.ai → DevTools → Application → Cookies → claude.ai и скопируйте значение 'sessionKey'. Для Cloudflare также необходимы cf_clearance, __cf_bm и _cfuvid.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Подсказка по cookie Blackbox Web", + "blackboxWebCookiePlaceholder": "Заполнитель для cookie Blackbox Web", "t3ChatWebCookieHint": "Откройте t3.chat → DevTools → Приложение → Локальное хранилище → https://t3.chat, скопируйте «convex-session-id». Затем откройте DevTools → Network и скопируйте полный заголовок Cookie из любого запроса в чате. Вставьте оба значения в поля ниже.", "t3ChatWebCookiePlaceholder": "выпуклый-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Подсказка по cookie Grok Web", "blockClaudeExtraUsageDescription": "При включении OmniRoute помечает это подключение Claude как недоступное, как только API использования сообщает о наличии платного доп. трафика, так что fallback переключается на другое подключение вместо продолжения работы с оплатой по факту.", "blockClaudeExtraUsageLabel": "Блокировать доп. использование Claude", "disableCoolingDescription": "Пропускать временный кулдаун, чтобы это подключение оставалось доступным даже после устранимых ошибок (терминальные состояния, такие как banned/expired, по-прежнему применяются).", "disableCoolingLabel": "Отключить кулдаун для этого подключения", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {Добавлен 1 ключ} few {Добавлено # ключа} many {Добавлено # ключей} other {Добавлено # ключа}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {Пропущен 1 дубликат} few {Пропущено # дубликата} many {Пропущено # дубликатов} other {Пропущено # дубликата}}", + "bulkPasteHint": "Вставьте по одному API-ключу в каждой строке. Пустые строки игнорируются, а повторяющиеся ключи пропускаются.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Добавляет бета-заголовок redact-thinking для совместимых с CC вышестоящих сервисов, которым требуются скрытые потоки размышлений Claude.", + "ccCompatibleRedactThinkingLabel": "Включить бета-функцию redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Добавляет `display: \"summarized\"` в запросы размышлений, совместимые с CC, чтобы поддерживаемые модели Claude передавали видимые изменения размышлений в потоковом режиме.", + "ccCompatibleSummarizeThinkingLabel": "Включить отображение сводки размышлений", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Использовать приоритетный уровень обслуживания для запросов Codex, когда он доступен.", + "codexFastServiceTierLabel": "Уровень быстрого обслуживания Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Заполнитель имени заголовка совместимого вышестоящего сервиса", + "compatUpstreamHeaderValuePlaceholder": "Заполнитель значения заголовка совместимого вышестоящего сервиса", + "compatible": "Совместимый", + "configuredCount": "Количество настроенных", + "consoleApiKeyOracleHint": "Подсказка для API-ключа консоли Oracle", + "consoleApiKeyOracleLabel": "Метка API-ключа консоли Oracle", + "consoleApiKeyOraclePlaceholder": "Заполнитель API-ключа консоли Oracle", "newApiUserIdLabel": "ID пользователя New-API", "newApiUserIdPlaceholder": "напр. 12345", "newApiUserIdHint": "Значение заголовка New-Api-User AgentRouter, используется вместе с ключом API консоли для получения баланса квоты.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Включите обнаружение баланса для узлов, совместимых с New-API / One-API / Sub2API агрегатором", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Подсказка для пользовательского User-Agent", + "customUserAgentLabel": "Метка пользовательского User-Agent", + "databricksBaseUrlHint": "Подсказка для базового URL Databricks", + "defaultThinkingStrengthHint": "Используется, если в запросе не указана глубина рассуждений.", + "defaultThinkingStrengthLabel": "Глубина размышлений по умолчанию", + "deleteAllExtraApiKeys": "Удалить все", + "excludedModelsHint": "Подсказка для исключённых моделей", + "excludedModelsLabel": "Метка исключённых моделей", + "excludedModelsPlaceholder": "Заполнитель исключённых моделей", + "expirationBannerExpired": "Срок действия истёк", + "expirationBannerExpiredDesc": "Описание истечения срока действия", + "expirationBannerExpiringSoon": "Срок действия скоро истечёт", + "expirationBannerExpiringSoonDesc": "Описание скорого истечения срока действия", + "extraApiKeyMasked": "Ключ {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Подсказка для дополнительных API-ключей", + "extraApiKeysLabel": "Метка дополнительных API-ключей", + "apiKeyHealthLabel": "Состояние API-ключей", + "apiKeyStatusActive": "Активен", + "apiKeyStatusWarning": "Предупреждение ({count} сбоев)", + "apiKeyStatusInvalid": "Недействителен", + "primaryKey": "Основной ключ", + "apiKeyInvalidAlert": "API-ключей, помеченных как недействительные из-за ошибок аутентификации в подключениях: {count}. Подключения: {connections}. Они будут пропущены при ротации. Нажмите, чтобы просмотреть.", + "apiKeyInvalidAlertTitle": "Оповещение о состоянии API-ключей", + "apiKeyWarningAlert": "API-ключей в состоянии предупреждения из-за повышенной частоты сбоев в подключениях: {count}. Подключения: {connections}. Проверьте их, чтобы избежать проблем с ротацией.", + "apiKeyWarningAlertTitle": "Предупреждение об API-ключах", + "googlePseInfo": "Информация о Google PSE", "antigravityProjectIdHint": "Необязательное переопределение запросов кода антигравитационного облака. Оставьте пустым, чтобы использовать проект, обнаруженный во время Google OAuth.", "antigravityClientProfileLabel": "Профиль клиента", "antigravityClientProfileHint": "Выберите, какую идентичность клиента Antigravity OmniRoute представляет API.", @@ -5865,18 +5868,18 @@ "tierFast": "Быстро", "antigravityProjectIdLabel": "Идентификатор проекта Google Cloud", "antigravityProjectIdPlaceholder": "мой-gcp-идентификатор-проекта", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Заполнитель веб-cookie Grok", + "herokuBaseUrlHint": "Подсказка для базового URL Heroku", + "hideEmail": "Скрыть адрес электронной почты", + "imageProviders": "Провайдеры изображений", "videoProviders": "Создание видео", "embeddingRerankProviders": "Вложения и переранжирование", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Краткая метка изображений", + "llmProviders": "Провайдеры LLM", + "localProviderApiKeyOptionalHint": "Подсказка для необязательного API-ключа локального провайдера", + "localProviderBaseUrlHint": "Подсказка для базового URL локального провайдера", + "localProviders": "Локальные провайдеры", + "maxConcurrentWholeNumberError": "Ошибка: максимальное количество одновременных запросов должно быть целым числом", "m365TierLabel": "Уровень Copilot", "m365TierHint": "Выберите, какую среду Microsoft 365 Copilot использует это подключение. Индивидуальный — это потребительский BizChat по умолчанию; Для образовательных учреждений и Для предприятий (рабочий) используют среды своих арендаторов.", "m365TierIndividualOption": "Индивидуальный (по умолчанию)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Дешевый", "tierOverridePremium": "Премиум", "tierOverrideHelpText": "Закрепить этого провайдера за определенным уровнем маршрутизации вместо того, чтобы позволять OmniRoute определять его на основе стоимости модели.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Подсказка для веб-cookie Muse Spark", + "museSparkWebCookiePlaceholder": "Заполнитель веб-cookie Muse Spark", + "oauth": "OAuth", + "openCliTools": "Открыть инструменты CLI", + "openSettings": "Открыть настройки", + "openaiResponsesStoreDescription": "Разрешить совместимым запросам Responses API сохранять состояние сохранённого ответа.", + "openaiResponsesStoreLabel": "Хранилище OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Информация об общем ключе Perplexity Search", + "perplexityWebCookieHint": "Подсказка для веб-cookie Perplexity", + "perplexityWebCookiePlaceholder": "Заполнитель веб-cookie Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Переопределение лимитов запросов", "rateLimitOverridesMaxConcurrentHint": "Переопределение максимального количества одновременных запросов для этого подключения. Переопределяет ограничение на уровне аккаунта.", "rateLimitOverridesMaxConcurrentLabel": "Макс. одновременных (лимит запросов)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Максимальное время (мс), в течение которого запрос может ожидать свободного места в рамках ограничения частоты, прежде чем завершиться ошибкой. Переопределяет глобальную настройку устойчивости только для этого подключения.", + "rateLimitOverridesMaxWaitMsLabel": "Макс. ожидание в очереди (мс)", "rateLimitOverridesMinTimeHint": "Минимальное время (мс) между запросами. Переопределяет задержку ограничителя запросов по умолчанию.", "rateLimitOverridesMinTimeLabel": "Мин. интервал (мс)", "rateLimitOverridesRpdHint": "Максимальное количество запросов в день для этого подключения. Переопределяет значение по умолчанию провайдера.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (токенов/день)", "rateLimitOverridesTpmHint": "Максимальное количество токенов в минуту для этого подключения. Переопределяет значение по умолчанию для провайдера.", "rateLimitOverridesTpmLabel": "TPM (токенов/мин)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Обновить токен OAuth", + "regionHint": "Подсказка для региона", + "regionLabel": "Регион", + "removeThisKey": "Удалить этот ключ", + "routingTagsHint": "Подсказка для тегов маршрутизации", + "routingTagsLabel": "Теги маршрутизации", + "routingTagsPlaceholder": "Заполнитель тегов маршрутизации", + "search": "Поиск", + "searchEngineIdHint": "Подсказка для идентификатора поисковой системы", + "searchEngineIdLabel": "Идентификатор поисковой системы", + "searchEngineIdRequired": "Требуется идентификатор поисковой системы", + "searchProvider": "Провайдер поиска", + "searchProviderDesc": "Описание провайдера поиска", "searchProviders": "Поиск поставщиков...", "searchByModel": "Поиск по модели…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Провайдеры поиска", + "searxngBaseUrlHint": "Подсказка для базового URL Searxng", + "searxngInfo": "Информация о Searxng", + "sessionCookieLabel": "Cookie сеанса", + "showEmail": "Показать адрес электронной почты", + "snowflakeBaseUrlHint": "Подсказка по базовому URL Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Подсказка для группы тегов", + "tagGroupLabel": "Группа тегов", + "tagGroupPlaceholder": "Укажите группу тегов", + "testModel": "Протестировать модель", + "testingModel": "Тестирование модели", "modelTestQuotaTooltip": "Квота исчерпана — сбросится завтра или требуется пополнение", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Токен истёк", + "tokenExpiredTitle": "Срок действия токена истёк", + "tokenExpiresSoonTitle": "Срок действия токена скоро истечёт", + "tokenShort": "Токен", + "totalKeysRotating": "{count, plural, one {Ротация 1 ключа} few {Ротация # ключей} many {Ротация # ключей} other {Ротация # ключа}}", + "unhideModel": "Показать модель", + "upstreamProxyProviders": "Провайдеры вышестоящего прокси", "validationModelIdHint": "Модель, используемая для проверки ключа API. Оставьте пустым, чтобы использовать первую доступную модель провайдера.", "validationModelIdLabel": "Модель для проверки", "validationModelIdPlaceholder": "например, meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Вставьте JSON сервисного аккаунта ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) или OAuth access_token", + "webCookieProviders": "Провайдеры с веб-cookie", + "weeklyShort": "Нед.", + "xiaomiMimoBaseUrlHint": "Подсказка по базовому URL Xiaomi Mimo", "globalCodexServiceMode": "Глобальный режим службы Codex", "connect": "Подключить", "manualApiKey": "API-ключ вручную", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Найти учетные данные провайдеров ИИ (OpenAI, Anthropic, Google, Mistral, xAI), сохраненные Zed IDE в связке ключей ОС, и импортировать их как подключения. На этом компьютере должна быть установлена Zed IDE.", "zedImportButton": "Импортировать из Zed", "zedImportFailed": "Импорт из Zed не удался", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Подсказка по импорту Zed", + "zedImportNetworkError": "Ошибка сети при импорте Zed", + "zedImportNone": "Нет данных для импорта из Zed", "zedImportSuccess": "Импортировано {credentials} учетная(ых) запись(ей) из Zed для {providers} провайдера(ов)", "zedImporting": "Импортируется…", "zedNoCredentials": "В связке ключей не найдено учетных данных Zed", @@ -6175,7 +6178,7 @@ "freeaiapikey": "API-прокси со скидкой для более чем 40 моделей, включая GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Получите API-ключ на https://freeaiapikey.com/dashboard. Базовый URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Получите бесплатный баланс API $300 на https://freemodel.dev — платежная информация не требуется. Совместимая с OpenAI конечная точка. Доступны модели GPT-5.4 и GPT-5.5.", "friendliai": "Бесплатный тариф для бессерверного инференса — кредитная карта не требуется", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Бесплатный уровень через Google AI Studio; квоты для отдельных моделей больше не публикуются (проверьте страницу квот в AI Studio) — банковская карта не требуется.", "gigachat": "Подключите GigaChat (Сбер) с помощью API-ключа.", "gitlab": "Персональный токен доступа GitLab для публичного Code Suggestions API. Настройте собственный базовый URL-адрес, если не используете gitlab.com.", "gitlawb-gmi": "Получите API-ключ в панели управления Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Подключите GLM Coding (Китай) с помощью API-ключа.", "glmt": "Предустановленный профиль GLM с увеличенным лимитом токенов, включенным режимом рассуждения и более длительным таймаутом.", "getgoapi": "Подключите GoAPI с помощью API-ключа.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Бесплатный план: ограничения для отдельных моделей (200K токенов в день на каждую чат-модель; ограничения RPM/RPD см. на console.groq.com/docs/rate-limits) — способ оплаты не указан.", "haiper": "Получите API-ключ на haiper.ai/haiper-api", "heroku": "Подключите Heroku AI с помощью API-ключа.", "hcnsec": "Получите API-ключ на api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Создайте API-ключ на https://app.requesty.ai, затем вставьте его сюда в качестве Bearer-токена. Совместимая с OpenAI конечная точка находится по адресу https://router.requesty.ai/v1, с живым каталогом /v1/models.", "runwayml": "Генерация видео в Runway основана на задачах. OmniRoute отправляет задания text-to-video или image-to-video, опрашивает /v1/tasks/[id] и нормализует готовые видеовыходы обратно в ответ /v1/videos/generations, аналогичный OpenAI.", "sambanova": "$5 бесплатных кредитов при регистрации (срок действия 30 дней), кредитная карта не требуется", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Создайте API-ключ на https://seekai.cc, затем вставьте его сюда как Bearer-токен. Базовый URL, совместимый с OpenAI: https://seekai.cc/v1.", "sap": "Обнаружение моделей использует /v2/lm/scenarios/foundation-models/models на AI_API_URL. Запросы чата используют deploymentUrl/chat/completions и требуют AI-Resource-Group.", "sarvam": "Sarvam AI — (sarvam) — Индийские языковые AI модели", "scaleway": "1 млн бесплатных токенов для новых аккаунтов — соответствие EU/GDPR (Париж), Qwen3 235B и Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Подключите Claude Code с помощью существующего процесса OAuth.", "cline": "Подключите Cline с помощью существующего процесса OAuth.", "cursor": "Подключите Cursor IDE с помощью существующего процесса OAuth.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Подключите Cursor с помощью пользовательского API-ключа (crsr_...) из cursor.com/dashboard/api; сеанс IDE не требуется.", "github": "Подключите GitHub Copilot с помощью существующего процесса OAuth.", "gitlab-duo": "Приложение OAuth с областями доступа (scopes) ai_features + read_user. Настройте GITLAB_DUO_OAUTH_CLIENT_ID и, при необходимости, GITLAB_DUO_OAUTH_CLIENT_SECRET на этом экземпляре OmniRoute.", "kilocode": "Подключите Kilo Code с помощью существующего процесса OAuth.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Скопируйте необходимые учетные данные из собственного домена провайдера. Для файлов cookie скопируйте только значение заголовка Cookie и опустите Cookie:.", "webSessionGuideStep3Manual": "Ручной путь: откройте инструменты разработчика браузера (F12 → Сеть), обновите страницу, откройте аутентифицированный запрос и скопируйте значение заголовка Cookie из Заголовков запроса — опустите префикс Cookie:.", "webSessionGuideStep4": "Вставьте его сюда и проверьте соединение. Если он перестанет работать, войдите в систему еще раз и замените его новым значением.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Импортировать файл .har", + "harImportButtonBusy": "Импорт…", + "harImportButtonHint": "Экспортируйте файл на вкладке Network в DevTools после отправки хотя бы одного сообщения в чате.", + "harImportStatusValid": "Импортировано — действует ещё примерно {minutes} мин.", + "harImportStatusExpiringSoon": "Импортировано — действует всего ещё примерно {minutes} мин.", + "harImportStatusExpired": "Импортировано, но срок действия этого токена уже истёк ({minutes} мин. назад) — экспортируйте новый HAR.", + "harImportStatusUnknownExpiry": "Импортировано. Не удалось определить срок действия.", + "harImportErrorNotJson": "Этот файл не является корректным JSON — это точно экспорт .har?", + "harImportErrorNoEntries": "В этом HAR нет записей сетевой активности.", + "harImportErrorNoChathubUrl": "В этом HAR не найдено подключение к чату Copilot. Перед экспортом отправьте хотя бы одно сообщение в чате на m365.cloud.microsoft.", + "harImportErrorUnparsableUrl": "Подключение к чату найдено, но не удалось прочитать его URL.", + "harImportErrorMissingFields": "Подключение к чату найдено, но в нём отсутствует токен.", + "harImportErrorReadFailed": "Не удалось прочитать этот файл.", + "harImportErrorUnknown": "Не удалось извлечь учётные данные из этого HAR-файла.", "webSessionSecurityHint": "Относитесь к нему как к паролю: он может получить доступ к вашей учетной записи, пока он не истечет или не будет отозван.", "webNoAuthGuideTitle": "Никаких учетных данных не требуется", "webNoAuthGuideBody": "{provider} не требует ключа API или файла cookie. Сохраните соединение, чтобы использовать его бесплатную конечную веб-точку.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Код команды auth истек", "commandCodeConnected": "Команда Код подключена", "commandCodeConnectionAdded": "Команда Код соединение добавлено", + "clearConnectionCooldown": "Сбросить паузу", + "clearConnectionCooldownInProgress": "Сброс…", + "clearConnectionCooldownTitle": "Сбросить паузу сейчас — используйте, если квота уже обновилась на стороне вышестоящего сервиса", "commandCodeLinkExpired": "Ссылка на код команды устарела", "commandCodeOpeningStudio": "Открытие Command Code Studio…", "commandCodePopupBlocked": "Всплывающее окно заблокировано. Пожалуйста, разрешите всплывающие окна и попробуйте снова выполнить Command Code Connect.", "commandCodeStartFailed": "Не удалось запустить команду Code auth", "connectionDeleted": "Соединение удалено", "connectionFallback": "соединение", + "connectionCooldownCleared": "Пауза сброшена — подключение снова участвует в маршрутизации", "coolingConnectionsDescription": "Эти соединения остывают после последнего запроса. OmniRoute пропустит их, пока не истечёт таймер — отключать вручную не нужно.", "coolingConnectionsTitle": "В настоящее время охлаждение ({count})", + "failedClearConnectionCooldown": "Не удалось сбросить паузу", "failedDeleteAlias": "Не удалось удалить псевдоним", "failedDeleteConnection": "Не удалось удалить соединение", "failedDistributeProxies": "Не удалось распределить прокси.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Настройки конечной точки сохраненной модели", "searchByModelAria": "Поиск по модели", "selectSupportedEndpoint": "Выберите хотя бы одну поддерживаемую конечную точку", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Среда / CLI" }, "settings": { "title": "Настройки", @@ -6527,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "удалить абзацы, содержащие: {items}", "routingSummarizeDropParagraphStartsWith": "удалить абзацы, начинающиеся с: {items}", "routingSummarizeReplaceText": "заменить \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "регулярное выражение /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "удалить блоки, содержащие: {items}", "routingSummarizePrependSystemBlock": "добавить блок: \"{text}\"", "routingSummarizeAppendSystemBlock": "добавить блок: \"{text}\"", @@ -6554,28 +6557,28 @@ "systemPrompt": "Системная подсказка", "thinkingBudget": "Думая о бюджете", "proxy": "Прокси", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP-прокси", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Разделы прокси", + "requestBodyLimitTitle": "Лимит тела запроса", + "requestBodyLimitDescription": "Максимальный размер данных API, принимаемых до разбора тела запроса. Для выделенных маршрутов загрузки сохраняется как минимум встроенный лимит в 100 МБ.", + "requestBodyLimitInputLabel": "Лимит тела запроса в МБ", + "requestBodyLimitEmptyError": "Введите лимит в МБ", + "requestBodyLimitWholeNumberError": "Используйте целое число", + "requestBodyLimitMinimumError": "Минимум — {min} МБ", + "requestBodyLimitMaximumError": "Максимум — {max} МБ", + "requestBodyLimitLoadFailed": "Не удалось загрузить настройки лимита запросов", + "requestBodyLimitSaveSuccess": "Лимит тела запроса сохранён", + "requestBodyLimitSaveFailed": "Не удалось сохранить лимит тела запроса", + "requestBodyLimitSaving": "Сохранение...", + "requestBodyLimitSave": "Сохранить", + "requestBodyLimitCurrent": "Текущее значение: {value}", "cacheConfigLoadFailed": "Не удалось загрузить конфигурацию кэша", "cacheConfigSaveSuccess": "Конфигурация кэша сохранена", "cacheConfigSaveFailed": "Не удалось сохранить конфигурацию кэша", "modelCatalogTtlWholeNumberError": "TTL должен быть целым числом", - "modelCatalogTtlMinimumError": "Minimum is {min} ms", - "modelCatalogTtlMaximumError": "Maximum is {max} ms", + "modelCatalogTtlMinimumError": "Минимум — {min} мс", + "modelCatalogTtlMaximumError": "Максимум — {max} мс", "modelCatalogCacheTtl": "TTL кэша каталога моделей", "modelCatalogCacheTtlDescription": "Как долго кэшировать каталог моделей (в секундах)", "modelCatalogCacheTtlLabel": "TTL кэша", @@ -6658,7 +6661,7 @@ "providerQuotaAutoRefreshDesc": "Автоматически обновлять представление лимитов провайдера, пока оно открыто.", "providerQuotaAutoRefreshToggle": "Автоматическое обновление", "providerQuotaAutoRefreshToggleDesc": "Обновлять представление квот каждые несколько минут, пока страница видна.", - "providerQuotaAutoRefreshInterval": "Refresh interval", + "providerQuotaAutoRefreshInterval": "Интервал обновления", "providerQuotaAutoRefreshIntervalDesc": "Как часто должно обновляться отображение квоты, в секундах.", "seconds": "секунд", "sidebarVisibilityToggle": "Показывать элементы боковой панели", @@ -6694,17 +6697,17 @@ "autoDisableDescription": "Навсегда помечать соединения провайдера как отключённые, если они возвращают сигнал окончательной блокировки (например, HTTP 403 'verify your account'). Это убирает их из ротации комбо.", "autoDisableThreshold": "Порог блокировки", "autoDisableThresholdDesc": "Количество подряд идущих сигналов блокировки, необходимых перед постоянным отключением.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedScope": "Применять автоматическое отключение к", + "autoDisableBannedScopeDesc": "Учётные записи для входа (платные подписки и бесплатные аккаунты) могут быть заблокированы вышестоящим сервисом, если OmniRoute продолжает повторные попытки после блокировки. Для платных предоплаченных ключей API такого риска нет — оставьте их в пуле, чтобы стратегия первоочередного заполнения могла использовать следующий ключ.", + "autoDisableBannedScopeAll": "Все подключения", + "autoDisableBannedScopeAllDesc": "Деактивировать каждое подключение, возвращающее сигнал о постоянной блокировке, включая предоплаченные ключи API.", + "autoDisableBannedScopeSubscription": "Только аккаунты для входа / подписки", + "autoDisableBannedScopeSubscriptionDesc": "Деактивировать учётные записи OAuth, cookie, сеансов и веб-входа (платные или бесплатные). Предоплаченные ключи API остаются активными, чтобы маршрутизация могла переключиться на резервный вариант.", "customBannedSignals": "Запрещенные ключевые слова", "customBannedSignalsDesc": "Дополнительные ключевые слова, которые вызывают обнаружение постоянной блокировки аккаунта. Встроенные ключевые слова применяются всегда.", "customBannedSignalsPlaceholder": "например, api key revoked", "noCustomBannedSignals": "Нет пользовательских ключевых слов. Активны только встроенные ключевые слова.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Структура отказоустойчивости", "resilienceStructureDesc": "Эта страница только настраивает поведение. Состояние автоматического выключателя отображается на странице «Состояние». Повторные попытки для конкретной комбинации и управление слотами циклического перебора остаются в настройках комбинации.", "enableThinking": "Включить мышление", "maxThinkingTokens": "Максимальное количество жетонов мышления", @@ -6755,18 +6758,18 @@ "sidebarVisibility": "Скрывать элементы боковой панели", "sidebarVisibilityDesc": "Скрывайте любые элементы навигации боковой панели, чтобы уменьшить визуальный шум.", "sidebarVisibilityHint": "Любой раздел боковой панели скрывается автоматически, когда...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Все", + "presetAllDesc": "Показать всё", + "presetEssentials": "Основное", + "presetEssentialsDesc": "Путь новичка — расширенные инструменты остаются доступными через поиск", + "presetMinimal": "Минимальный", + "presetMinimalDesc": "Только основные страницы", + "presetDeveloper": "Разработчик", + "presetDeveloperDesc": "Инструменты разработчика и прокси", + "presetAdmin": "Администратор", + "presetAdminDesc": "Мониторинг и аудит", + "settingsSidebarTitle": "Настройка боковой панели", + "settingsSidebarDesc": "Выберите элементы для отображения на боковой панели. В режиме «Основное» расширенные инструменты остаются доступными через поиск.", "hideHealthLogs": "Скрыть журналы проверки работоспособности", "hideHealthLogsDesc": "Если включено, подавлять сообщения [HealthCheck] в консоли сервера.", "themeAccent": "Цвет темы", @@ -6910,7 +6913,7 @@ "healthcheckLatency": "Задержка", "proxyDocumentationScopeTitle": "Разрешение области видимости прокси", "proxyDocumentationScopeDescBefore": "OmniRoute разрешает исходящий прокси в порядке приоритета:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "комбинация → аккаунт → провайдер → глобально", "proxyDocumentationScopeDescAfter": ". Побеждает наиболее специфичная область видимости.", "proxyDocumentationAddTitle": "Добавление пользовательского прокси", "proxyDocumentationAddDescBefore": "Перейдите на", @@ -7067,7 +7070,7 @@ "costOptDesc": "Предпочитаю самый дешевый доступный аккаунт", "resetAware": "Запись с учетом сброса", "resetAwareDesc": "Предпочитайте учетные записи со здоровой оставшейся квотой и более близким к сбросу.", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "С учётом квоты", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "Строгий случайный", "strictRandomDesc": "Перемешивание колоды — каждый аккаунт используется один раз перед повторным перемешиванием", @@ -7075,9 +7078,9 @@ "stickyLimitDesc": "Звонки на аккаунт до переключения", "routingStrategyTitle": "Стратегия маршрутизации", "routingStrategySubtitle": "Соответствие 9router: account round-robin, sticky limits и combo rotation", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Циклическое распределение", "accountRoundRobinDesc": "Циклически переключать аккаунты для распределения нагрузки", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Циклическое распределение комбинаций", "comboRoundRobinDesc": "Циклически переключать цели комбо вместо постоянного запуска с первой", "comboStickyLimit": "Лимит привязки комбо", "comboStickyLimitDesc": "Количество вызовов на цель комбо перед переключением", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Переопределить глобальную стратегию аккаунтов для этого провайдера (паритет с 9router).", "providerRoutingStrategy": "Стратегия аккаунтов", "providerRoutingInheritGlobal": "Наследовать глобальное значение по умолчанию", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Порог предварительной проверки квоты", + "quotaPreflightSubtitle": "Не использовать аккаунты с исчерпанной квотой перед отправкой запроса вышестоящему сервису", + "quotaPreflightEnable": "Включить предварительную проверку квоты", + "quotaPreflightEnableDesc": "Перед каждым запросом проверять оставшуюся квоту аккаунта (за 5 ч / неделю / месяц). Аккаунты, достигшие порога или опустившиеся ниже него, пропускаются без обращения к вышестоящему сервису. Пороговые значения для отдельных периодов, заданные на странице «Квоты провайдеров», всегда имеют приоритет над указанным здесь значением по умолчанию.", + "quotaPreflightCutoff": "Глобальный порог (мин. остаток, %)", + "quotaPreflightCutoffDesc": "Прекратить использовать аккаунт, когда остаток его квоты опустится до указанного процента или ниже, для каждого периода без собственного порога. Соответствует индикаторам остатка в процентах на странице «Квоты провайдеров».", + "quotaPreflightWindowsHint": "Это значение по умолчанию не влияет на периоды с собственным порогом для периода или провайдера, заданным в окне «Порог» на странице «Квоты провайдеров».", + "quotaPreflightLoadFailed": "Не удалось загрузить настройки предварительной проверки квоты.", "modelAliases": "Псевдонимы моделей", "modelAliasesTitle": "Псевдонимы моделей", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Переназначайте названия моделей с помощью точных совпадений или шаблонов с подстановочными знаками.", "addCustomAlias": "Добавить пользовательский псевдоним", "deprecatedModelId": "Устаревший ID модели", "newModelId": "Новый ID модели", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Комбо-стратегия", "priority": "Приоритет", "weighted": "Взвешенный", - "contextRelay": "Context Relay", + "contextRelay": "Передача контекста", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Макс. повторов", "retryDelayLabel": "Задержка повтора (мс)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Параллелизм/модель", "queueTimeout": "Тайм-аут очереди (мс)", "queueDepth": "Глубина очереди", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Порог передачи", + "contextRelayMaxMessages": "Макс. количество сообщений для сводки", + "contextRelaySummaryModel": "Модель для сводки", + "contextRelayProviderNote": "Сейчас функция передачи контекста создаёт передачи для аккаунтов Codex и использует эти значения как глобальные настройки по умолчанию для новых или ненастроенных комбинаций.", "providerProfiles": "Профили поставщиков", "providerProfilesDesc": "Отдельные настройки устойчивости для поставщиков OAuth (на основе сеанса) и API-ключей (измеренного). Поставщики OAuth имеют более строгие пороговые значения из-за более низких ограничений скорости.", "oauthProviders": "Поставщики OAuth", @@ -7329,7 +7332,7 @@ "configured": "настроено", "none": "Нет", "modelOverrideValuePlaceholder": "Числовое значение", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Через запятую на английском, например: low, medium, high", "addKeyValue": "Добавить ключ-значение", "noModelOverrides": "Для этой модели не настроено переопределений.", "modelOverrideLoadFailed": "Не удалось загрузить переопределения модели", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Не удалось сбросить данные об использовании", "reset": "Сбросить", "resetting": "Сброс...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Оптимизация по контексту", + "contextOptDesc": "Маршрутизация на основе требований к размеру контекстного окна и длины диалога", + "cacheOpt": "Оптимизация кэша", + "cacheOptDesc": "Сохраняет один и тот же повторно используемый префикс запроса в одном аккаунте провайдера", + "priorityDesc": "Последовательное переключение — сначала используется провайдер 1, затем провайдер 2 и так далее", + "weightedDesc": "Распределяет трафик между провайдерами в соответствии с процентными весами", + "modelRoutingTitle": "Правила маршрутизации моделей", + "modelRoutingDesc": "Автоматически направляет модели в определённые комбинации с помощью glob-шаблонов", + "addRule": "Добавить правило", + "routeToCombo": "Направить в комбинацию", + "selectCombo": "Выберите комбинацию...", + "priorityHint": "Чем выше значение, тем раньше выполняется проверка. Используйте 10+ для конкретных шаблонов.", + "patternHint": "Используйте * для любого количества символов, ? — для одного символа. Регистр не учитывается.", + "noRoutingRules": "Правила маршрутизации не настроены. По умолчанию запросы используют глобальную комбинацию.", + "routingRuleHint": "Добавьте правило, например claude-opus* -> frontier-combo, чтобы автоматически маршрутизировать запросы.", + "deleteRoutingRule": "Удалить это правило маршрутизации модели?", + "exactMatchMode": "Точное совпадение", + "wildcardPatternMode": "Шаблон с подстановочными знаками", + "exactMatchModeDesc": "Используйте точные псевдонимы для устаревших или переименованных идентификаторов моделей.", + "wildcardPatternModeDesc": "Используйте псевдонимы с подстановочными знаками * и ?, если семейство моделей должно сопоставляться с одной целевой моделью.", + "noExactAliasesConfigured": "Псевдонимы с точным совпадением не настроены.", + "wildcardRulesTitle": "Правила с подстановочными знаками", + "noWildcardAliasesConfigured": "Псевдонимы с подстановочными знаками не настроены.", + "overview": "Обзор", + "unknownError": "Неизвестная ошибка", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Белый список", + "syncDisabled": "Синхронизация отключена", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Синхронизация включена", + "blacklist": "Чёрный список", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Синхронизированные модели", + "budget": "Бюджет", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Не удалось сбросить цену: {reason}.", - "tab": "Tab", + "tab": "Вкладка", "pricingSavedProvider": "Цены сохранены для {provider}.", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Не удалось сохранить цену: {reason}.", "pricingResetProvider": "Сброс цен для {provider}", - "nextSync": "Next Sync", + "nextSync": "Следующая синхронизация", "pricingSyncFailedWithReason": "Не удалось синхронизировать цены: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Очистить синхронизированные цены", + "compressionTitle": "Сжатие промптов", + "compressionDesc": "Сокращайте расход токенов, сжимая промпты перед отправкой провайдерам", "compressionGuidanceFullGuideLink": "Полное руководство по сжатию", "compressionGuidanceShow": "Подробнее", "compressionGuidanceHide": "Скрыть подробности", @@ -7485,16 +7488,16 @@ "tokenSaverInputCompressionDesc": "Переписывать подходящую историю чата, сохраняя код, URL-адреса и смысл.", "tokenSaverFineTunePrefix": "Тонкая настройка каждого движка на", "tokenSaverFineTuneSuffix": "или комбинируйте движки для каждого запроса на", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", - "compressionModeUltra": "Ultra", + "compressionMode": "Режим сжатия", + "compressionModeOff": "Отключено", + "compressionModeOffDesc": "Сжатие не применяется", + "compressionModeLite": "Лёгкий", + "compressionModeLiteDesc": "Сокращение пробелов и пустых строк", + "compressionModeStandard": "Стандартный (Caveman)", + "compressionModeStandardDesc": "Сжатие на основе более 30 правил с сохранением блоков кода и URL", + "compressionModeAggressive": "Агрессивный", + "compressionModeAggressiveDesc": "Суммаризация + сжатие результатов инструментов + постепенное устаревание для максимальной экономии", + "compressionModeUltra": "Ультра", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Агрессивная конфигурация двигателя", "compressionAggressiveConfigDesc": "Точная настройка суммирования, сжатия инструментов и порогов устаревания", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Количество последних сообщений, хранящихся на каждом уровне старения (выше = больше сохраненных)", "compressionToolStrategies": "Стратегии результатов инструмента", "compressionToolStrategiesDesc": "Переключение стратегий сжатия для разных типов результатов инструмента", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Общие настройки", + "compressionAutoTrigger": "Порог автозапуска", + "compressionCacheTTL": "TTL кеша", + "compressionPreserveSystem": "Сохранять системный промпт", "compressionPreserveSystemAlways": "Всегда", "compressionPreserveSystemWhenNoCache": "При отсутствии кэша", "compressionPreserveSystemNever": "Никогда", @@ -7528,68 +7531,68 @@ "compressionExclusionsTitle": "Исключения сжатия", "compressionExclusionsDesc": "Список endpoint'ов, для которых сжатие пропускается", "compressionExclusionsPlaceholder": "напр. groq/*, claude-*", - "compressionExclusionsSave": "Save", - "compressionExclusionsSaved": "Saved", - "compressionExclusionsCount": "{count, plural, one {# exclusion} other {# exclusions}} configured", - "compressionExclusionsEmpty": "No exclusions configured — every model/endpoint is eligible for compression (default behavior).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionExclusionsSave": "Сохранить", + "compressionExclusionsSaved": "Сохранено", + "compressionExclusionsCount": "Настроено исключений: {count, plural, one {# исключение} few {# исключения} many {# исключений} other {# исключения}}", + "compressionExclusionsEmpty": "Исключения не настроены — все модели и конечные точки доступны для сжатия (поведение по умолчанию).", + "compressionCavemanConfig": "Конфигурация движка Caveman", + "compressionCavemanConfigDesc": "Тонкая настройка механизма сжатия на основе правил", "compressionCavemanPanelHint": "Включение/выключение и уровень настраиваются на панели:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Сжимать сообщения по ролям", + "compressionRoleUser": "Пользователь", + "compressionRoleAssistant": "Ассистент", + "compressionRoleSystem": "Система", + "compressionMinLength": "Минимальная длина сообщения", + "compressionSkipRules": "Пропускать правила сжатия", + "compressionSkipRulesDesc": "Выберите правила, которые следует пропускать при сжатии", + "compressionPreservePatterns": "Сохранять шаблоны", + "compressionPreservePatternsDesc": "Регулярные выражения, которые никогда не сжимаются (по одному в строке)", + "compressionLogTitle": "Журнал сжатия", + "compressionLogEmpty": "Сжатых запросов пока нет. Статистика сжатия появится здесь после обработки запросов с включённым сжатием.", "minutes": "минуты", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "Фильтрация вывода инструментов с учётом команд", + "compressionModeCodexResponses": "Вывод инструментов Responses", + "compressionModeCodexResponsesDesc": "Консервативное сжатие подходящих результатов выполнения команд оболочки, применения патчей, поиска, сборки и обработки JSON", + "compressionModeStacked": "Комбинированный", + "compressionModeStackedDesc": "Фильтрация вывода инструментов с помощью RTK с последующим сжатием сообщений посредством Caveman", + "qdrantTitle": "Qdrant (векторная память)", + "qdrantDesc": "Необязательно. Индексирует семантические воспоминания во внешней векторной базе данных для более быстрого поиска.", + "qdrantStatusActive": "Активно", + "qdrantStatusError": "Ошибка", + "qdrantStatusDisabled": "Отключено", + "qdrantEnable": "Включить Qdrant", + "qdrantEnableDesc": "Если включено, семантическая или гибридная стратегия может использовать Qdrant для поиска воспоминаний.", + "qdrantTesting": "Проверка...", + "qdrantTestConnection": "Проверить подключение", + "qdrantSaved": "Конфигурация сохранена", + "qdrantSaveError": "Не удалось сохранить конфигурацию", + "qdrantHostHint": "Без порта. Пример: 127.0.0.1 или http://qdrant", + "qdrantPort": "Порт", + "qdrantPortHint": "Порт Qdrant по умолчанию: 6333", + "qdrantCollectionHint": "Место хранения записей памяти.", + "qdrantEmbeddingModel": "Модель эмбеддингов", + "qdrantHelpTitle": "Краткая справка по настройке", + "qdrantHelpQuickTitle": "Быстрая настройка (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Хост: IP-адрес/URL Qdrant, порт: 6333, коллекция: omniroute_memory.", + "qdrantHelpStep2": "2. При использовании nvidia/llama-nemotron-embed-vl-1b-v2:free задайте размерность коллекции 2048.", + "qdrantHelpStep3": "3. Поле модели: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Сохраните настройки, проверьте подключение, затем протестируйте поиск.", + "qdrantEmbeddingQuickSelect": "Быстрый выбор из обнаруженных моделей...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Формат: provider/model. Учётные данные провайдера должны быть настроены.", + "qdrantApiKeyPlaceholderKeep": "(оставьте пустым, чтобы сохранить текущий ключ)", + "qdrantApiKeyPlaceholderOptional": "(оставьте пустым, если не используется)", + "qdrantSaveHint": "Совет: измените хост, порт, коллекцию или модель и нажмите «Сохранить». API-ключ необязателен.", + "qdrantSearchTestTitle": "Проверка поиска", + "qdrantSearchTestDesc": "Создаёт эмбеддинг и выполняет поиск в Qdrant.", + "qdrantSearchPlaceholder": "Пример: пользовательские предпочтения, история и т. д.", + "qdrantNoResults": "Результатов нет (или Qdrant не настроен).", + "qdrantCleanupTitle": "Хранение и очистка", + "qdrantCleanupDesc": "Удаляет просроченные и старые точки на основе", + "searching": "Поиск...", + "cleaning": "Очистка...", + "cleanNow": "Очистить сейчас", "optional": "Необязательно", "current": "Текущий", "remove": "Удалить", @@ -7600,19 +7603,19 @@ "resilienceScope": "Область применения:", "resilienceTrigger": "Триггер:", "resilienceEffect": "Эффект:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Очередь запросов и ограничения частоты", + "resilienceAutoEnableApiKeyProviders": "Автоматически включать для провайдеров с API-ключами", + "resilienceRequestsPerMinute": "Запросов в минуту", + "resilienceMinTimeBetweenRequests": "Минимальный интервал между запросами", + "resilienceConcurrentRequests": "Одновременные запросы", + "resilienceConnectionScopeConcurrentRequests": "Одновременные запросы на подключение/область квоты", + "resilienceGlobalConcurrentRequests": "Общее количество одновременных исходящих запросов (0 = отключено)", "resilienceMaxQueueWaitTime": "Максимальное время ожидания в очереди", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Базовая задержка", + "resilienceUseUpstreamRetryHints": "Использовать рекомендации по повторным попыткам от внешнего сервиса", + "resilienceDefaultPerProvider": "По умолчанию (для каждого провайдера)", + "resilienceAlwaysOn": "Всегда включено", + "resilienceAlwaysOff": "Всегда отключено", "routingRemoveEntry": "Удалить запись", "routingNeedlesSubstrings": "Иглы (соответствующие подстроки)", "routingCaseSensitive": "С учетом регистра", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "Отправлено в модель зрения до того, как извлеченное описание будет внедрено обратно в оригинальный запрос.", "visionBridgeTimeoutMs": "Тайм-аут (мс)", "visionBridgeMaxImagesPerRequest": "Максимальное количество изображений на запрос", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Максимальное количество шагов увеличения задержки", + "resilienceProviderBreakerTitle": "Автоматический выключатель для каждого провайдера", + "resilienceFailureThreshold": "Порог сбоев", + "resilienceDegradationThreshold": "Порог деградации", "resilienceResetTimeout": "Сбросить тайм-аут", "resilienceFailureThresholdLabel": "Порог отказа", "resilienceResetTimeoutLabel": "Сбросить тайм-аут", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Задержка подключения", "resilienceUseUpstreamRetryHintsLabel": "Используйте подсказки по повторным попыткам", "resilienceUseUpstream429BreakerLabel": "Использовать вышестоящие подсказки 429 (прерыватель)", "resilienceMaxBackoffStepsLabel": "Макс. шаги отсрочки", "resilienceYes": "Да", "resilienceNo": "Нет", - "resilienceDefault": "Default", + "resilienceDefault": "По умолчанию", "storageDatabaseBackupRetention": "Хранение резервной копии базы данных", "storageDatabaseBackups": "Резервные копии базы данных", "storageBackupRetentionDescription": "Автоматические резервные копии SQLite сохраняются в", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "Устаревший JSON успешно импортирован!", "jsonImportFailed": "Не удалось импортировать JSON", "jsonImportError": "Ошибка при импорте JSON", + "jsonImportAuthRequired": "Для импорта устаревшей конфигурации JSON требуется аутентификация. Войдите в систему или сначала завершите настройку.", + "databaseSettingsAuthRequiredTitle": "Требуется аутентификация", + "databaseSettingsAuthRequiredBody": "Настройки базы данных и импорт JSON доступны только аутентифицированному администратору. Войдите в систему или завершите настройку, чтобы просматривать и изменять их.", + "databaseSettingsAuthRequiredCta": "Войти", "storagePurgeData": "Очистить данные", "storagePurgeDataDesc": "Немедленно удалить все записи без проверки срока хранения. Используйте с осторожностью.", "storageRetentionCleanup": "Настройки хранения", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "режим: {mode}", "compressionAdaptiveOff": "Адаптивный бюджет контекста: выкл. (устаревший автотриггер)", "compressionAdaptiveTarget": "Адаптивный ({mode}, политика: {policy}) — цель ≈ {target, number} токенов (для окна в {contextLimit, number} токенов)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Адаптивный бюджет контекста", + "compressionAdaptiveModeOff": "Выкл. (устаревшее автосрабатывание)", + "compressionAdaptiveModeFloor": "Минимум (всегда гарантировать, что всё поместится)", + "compressionAdaptiveModeReplace": "Заменить автосрабатывание", + "compressionAdaptivePolicy": "Политика бюджета", + "compressionAdaptivePolicyReserve": "Резервировать вывод", + "compressionAdaptivePolicyPercentage": "Процент контекстного окна", + "compressionAdaptivePolicyAbsolute": "Абсолютный бюджет токенов", "compressionOutputStylesDescription": "Внедряйте инструкции по формированию ответов без перезаписи вывода провайдера. Комбинируйте свободно.", "mcpAccessibilityDescription": "Ограничивает область вывода инструментов MCP (отдельное хранилище).", "compressionStylesTileSummary": "{tokens, number} токенов сэкономлено · {runs, plural, one {# запуск стилизован} few {# запуска стилизовано} many {# запусков стилизовано} other {# запуска стилизовано}}", @@ -7866,11 +7873,11 @@ "description": "Фильтрация вывода команд." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Вывод инструмента Responses", + "description": "Консервативное сжатие поддерживаемых результатов инструмента Responses." }, "headroom": { - "label": "Headroom", + "label": "Запас", "description": "Сжатие табличного JSON." }, "relevance": { @@ -7878,7 +7885,7 @@ "description": "Экстрактивная оценка предложений относительно последнего запроса пользователя." }, "caveman": { - "label": "Caveman", + "label": "Пещерный человек", "description": "Сжатие прозы на основе правил." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "Лестница YAGNI: минимальное рабочее изменение, никаких незапрошенных абстракций." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Хвостик (ленивый старший разработчик)", + "description": "Дисциплина ленивого старшего разработчика: поднимайтесь по лестнице YAGNI, устраняйте первопричину, вносите минимальные работающие изменения." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "У меня СДВГ (сначала действие)", + "description": "Формат «сначала действие»: начните со следующего действия, пронумеруйте шаги, укажите один конкретный следующий шаг, без вступления." }, "terse-cjk": { "label": "Краткий CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "Резервный вариант CLIProxyAPI", "cliproxyapiEnableFallback": "Включить резервный вариант CLIProxyAPI", "cliproxyapiUrl": "URL-адрес CLIProxyAPI", + "headroomProxyTitle": "Прокси Headroom", + "headroomProxyDesc": "URL необязательного прокси Headroom для экономии токенов. Если поле пустое, используется HEADROOM_URL или http://localhost:8787.", + "headroomProxyUrl": "URL Headroom", + "headroomProxyUrlHint": "URL обратной петли можно запускать с этой страницы. Внешние URL только проверяются.", + "headroomProxySave": "Сохранить", + "headroomProxyStart": "Запустить", + "headroomProxyStop": "Остановить", + "headroomProxyExternalHint": "Этот URL не является адресом обратной петли, поэтому OmniRoute не будет запускать локальный CLI.", "cliproxyapiStatus": "Статус CLIProxyAPI", "cliproxyapiNotDetected": "Не обнаружено", "cliproxyapiImportAuthTitle": "Импорт аккаунтов из CLIProxyAPI", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "Глобально внедрите service_tier=priority для запросов OpenAI Codex.", "codexFastTierHint": "Если эта функция включена, OmniRoute добавляет атрибут service_tier=priority к исходящим запросам Кодекса для соединений, для которых еще не указан уровень. Для уровня приоритета требуется ключ OpenAI Enterprise API или путь Codex для аутентификации ChatGPT; другие типы ключей получат от OpenAI ошибку, связанную с уровнем. Настройки для каждого соединения на странице поставщика Кодекса имеют приоритет.", "codexFastTierSaveError": "Не удалось обновить настройки уровня быстрого доступа Кодекса.", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Автопинг квоты Codex", + "codexAutoPingDesc": "Включается отдельно для каждого подключения: сразу после сброса окна сессии Codex отправляется небольшой запрос, чтобы сессия не была «холодной», когда она вам понадобится.", + "codexAutoPingWarning": "Каждый пинг расходует небольшую часть реальной квоты Codex. По умолчанию отключено — включайте только для подключений, на которые активно полагаетесь.", + "codexAutoPingSaveError": "Не удалось обновить настройку автопинга Codex", + "codexAutoPingToggleAria": "Переключить автопинг квоты Codex для {connection}", "codexFastTierTierLabel": "Уровень обслуживания", "codexFastTierTierPriority": "Приоритет", "codexFastTierTierFlex": "Гибкость", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "Максимальное количество шагов задержки до того, как время ожидания перестанет расти. В большинстве конфигураций сначала достигается лимит максимального времени ожидания, что делает этот параметр предохранительным потолком при увеличении максимального времени ожидания.", "disableSessionStickiness": "Отключить привязку сессий", "disableSessionStickinessDesc": "Комбинации Round-robin и Random переключаются на другое подключение при каждом запросе вместо привязки всего диалога к одному подключению по хэшу первого сообщения. Оставьте выключенным, чтобы сохранить попадания в кэш промптов для многоходовых чатов. Переопределения для конкретных комбинаций имеют приоритет.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Маршрутизация с учётом локальности кеша промптов", + "promptCacheAffinityDesc": "По возможности использовать одну и ту же учётную запись провайдера для совпадающих ключей кеша промптов, сохраняя переключение при сбоях и исчерпании квоты.", + "reasoningTokenBuffer": "Буфер токенов рассуждения", + "reasoningTokenBufferDesc": "Разрешить комбинированной маршрутизации добавлять запас к max_tokens только для известных моделей рассуждения, если весь буфер помещается в известный лимит вывода.", + "zeroLatencyOptimizations": "Оптимизации с нулевой задержкой", + "zeroLatencyOptimizationsDesc": "Включите хеджирование, прогнозирующий пропуск TTFT и упреждающее сжатие резервных запросов. Оставьте выключенным, чтобы эти функции снижения задержки не запускали параллельные запросы к целевым моделям и не сжимали резервные запросы.", "credentialRedaction": "Маскирование учетных данных", "credentialRedactionDesc": "Маскировать API-ключи, токены и секреты в контексте, отправляемом провайдерам, и в ответах.", "enableCredentialRedaction": "Включить маскирование учетных данных", "enableCredentialRedactionDesc": "Очищает API-ключи, токены, приватные ключи и JWT из сообщений, вызовов инструментов и ответов.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Автоматическая синхронизация отключена", + "pricingAutoSyncEnabled": "Автоматическая синхронизация включена", "modalityBridgeIntro": "Преобразуйте мультимодальный контент в текст до его передачи моделям, работающим только с текстом. Мосты для изображений, аудио и видео доступны и настраиваются.", "modalityBridgeVisionTab": "Зрение", "modalityBridgeAudioTab": "Аудио", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Здоровье", "cliproxyapiPort": "Порт", "qdrantHost": "Хост", - "qdrantCollection": "Коллекция", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Коллекция" }, "contextRtk": { "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "description": "Сжатие с учётом команд для вывода инструментов, журналов терминала и результатов сборки.", + "enabled": "Включено", + "intensity": "Интенсивность", + "intensityMinimal": "Минимальная", + "intensityStandard": "Стандартная", + "intensityAggressive": "Агрессивная", + "toolResults": "Результаты инструментов", + "assistantMessages": "Сообщения ассистента", + "codeBlocks": "Блоки кода", "filterCatalog": "Каталог фильтров", "filterCatalogDesc": "Доступные выходные фильтры по категориям", "guidedConfig": "Конфигурация", "guidedConfigDesc": "Настройте, как RTK фильтрует выходной сигнал вашего терминала", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Макс. строк", + "maxChars": "Макс. символов", "deduplicateThreshold": "Порог дедупликации", "customFilters": "Пользовательские фильтры", "detectedType": "Обнаруженный тип", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Неудачи", "rawOutputAlways": "Всегда", "rawOutputMaxBytes": "Макс. количество необработанных выходных данных в байтах", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Тестирование фильтров", + "pasteOutput": "Вставьте вывод инструмента для проверки фильтрации...", "presetHigh": "Агрессивный", "presetLow": "Свет", "presetMaxChars": "Максимальное количество выводимых символов", "presetMaxLines": "Максимальное количество выходных линий", "presetMedium": "Стандартный", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Запустить", + "result": "Результат", + "previewEmpty": "Запустите тестовый пример для предварительного просмотра вывода RTK.", + "detected": "Обнаружено", "masterSwitchOffAlert": "Мастер-переключатель Token Saver выключен — эти настройки не повлияют на запросы, пока вы не включите его на странице Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Отфильтровано токенов", + "filtersActive": "Активные фильтры", + "requests": "Запросы", + "avgSavings": "Средняя экономия", "simpleMode": "Простой", "advancedMode": "Расширенный", "searchFilters": "Фильтры поиска...", @@ -8499,7 +8506,7 @@ "description": "Сжатие без потерь табличных однородных массивов JSON с явными маркерами количества строк." }, "session-dedup": { - "name": "Session Dedup", + "name": "Дедупликация сеанса", "description": "Межрепликовая дедупликация блоков с восстанавливаемыми маркерами содержимого." }, "ccr": { @@ -8511,15 +8518,15 @@ "description": "Семантическая классификация токенов на базе ONNX. Сжимает только прозу; блоки кода и защищенные конструкции не затрагиваются. При ошибках модели или исполнителя пропускает данные без изменений." }, "lite": { - "name": "Lite", + "name": "Облегчённое", "description": "Быстрое сокращение пробелов, результатов работы инструментов и URL-адресов изображений." }, "aggressive": { - "name": "Aggressive", + "name": "Агрессивное", "description": "Суммаризация, сжатие результатов работы инструментов и прогрессивное устаревание." }, "ultra": { - "name": "Ultra", + "name": "Ультра", "description": "Эвристическое прореживание токенов с возможностью переключения на локальную SLM." } }, @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Комбинации сжатия", + "description": "Определите, как движки объединяются для различных сценариев маршрутизации.", + "createCombo": "Создать комбинацию сжатия", + "editCombo": "Изменить", + "deleteCombo": "Удалить", + "deleteConfirm": "Удалить эту комбинацию сжатия?", + "pipeline": "Конвейер", + "addStep": "Добавить этап", + "removeStep": "Удалить", + "name": "Название", + "descriptionField": "Описание", + "languagePacks": "Языковые пакеты", + "outputMode": "Режим вывода", + "assignToRouting": "Назначить комбинациям маршрутизации", + "noAssignments": "Нет доступных комбинаций маршрутизации", + "default": "По умолчанию", + "setAsDefault": "Сделать профилем по умолчанию", + "save": "Сохранить", + "cancel": "Отмена", + "enabled": "Включено", "loading": "Загрузка…", "hubTitle": "Центр сжатия", "hubDescription": "Выберите, какой профиль сжатия будет запускаться глобально.", @@ -8648,12 +8655,12 @@ "explanationDefault": "По умолчанию (из панели): формируется на основе главного переключателя и настроек отдельных движков, которые вы задаете в параметрах сжатия.", "explanationNamedCombos": "Именованные комбинации: сохраненные конвейеры, которые вы создаете в редакторе комбинаций. Выбор одной из них делает ее активным профилем для каждого запроса.", "explanationPreview": "Предпросмотр: показывает, какие движки запускает активный профиль и в каком порядке.", - "activeProfile": "Active profile", + "activeProfile": "Активный профиль", "activeProfileDescription": "Выберите, какой профиль сжатия запускается глобально — Default (из панели) или сохраненная именованная комбинация.", "defaultFromPanel": "Default (из панели)", "runs": "Запуски:", "defaultConfiguredPrefix": "Default — настроен в", - "compressionSettings": "Compression Settings", + "compressionSettings": "Настройки сжатия", "providerDelegated": "Сжатие, делегированное провайдеру", "contextEditingClaude": "Редактирование контекста (Claude)", "contextEditingDescription": "Позволяет провайдеру удалять старые блоки использования инструментов на стороне сервера без перезаписи сообщения.", @@ -8661,22 +8668,22 @@ "contextEditingNote": "В настоящее время доступно только для Claude (Anthropic). Это делегированный режим: провайдер очищает старые блоки использования инструментов на стороне сервера — мы не перезаписываем сообщение. Это не влияет на других провайдеров.", "namedCombos": "Именованные комбинации", "namedCombosDescription": "Сохраняйте различные конвейеры и назначайте их конкретным комбинациям маршрутизации.", + "activeProfileMasterSwitchOffWarning": "Указанный ниже активный профиль не будет использоваться, пока не включён главный переключатель «Сжатие промптов».", + "activeProfileMasterSwitchOffCta": "Включить в настройках", "comboNamePlaceholder": "Название комбинации", "descriptionPlaceholder": "Описание", "nameRequired": "Введите название комбинации перед сохранением.", "pipelineRequired": "Добавьте хотя бы один шаг конвейера перед сохранением.", "saveComboFailed": "Не удалось сохранить комбинацию (HTTP {status}).", "deleteNamedConfirm": "Удалить комбинацию «{name}»?", - "intensityLite": "Lite", - "intensityFull": "Full", - "intensityUltra": "Ultra", + "intensityLite": "Лёгкий", + "intensityFull": "Полный", + "intensityUltra": "Ультра", "active": "Активен", "languagePacksList": "Языковые пакеты: {packs}", "dragToReorder": "Перетащите для изменения порядка шагов", "engine": "Движок", - "intensity": "Интенсивность", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Интенсивность" }, "compressionStudio": { "noRun": "Нет доступных запусков сжатия.", @@ -8705,7 +8712,7 @@ "run": "Запустить", "laneRejected": "отклонено: {reason}", "error": "ошибка", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Не удалось выполнить предпросмотр комбинированного конвейера: {reason}", "combinedFlow": "Комбинированный поток", "eachLayer": "Каждый слой отдельно", "diff": "Разница", @@ -8733,7 +8740,7 @@ "playTab": "Воспроизвести", "compareTab": "Сравнить", "encoderComparison": "Кодировщик A/B — {count} массив(ов)", - "encoderWinner": "winner: {winner}", + "encoderWinner": "победитель: {winner}", "encoder": "кодировщик", "bytes": "байты", "tokensCl100k": "токены (cl100k)" @@ -8780,27 +8787,27 @@ }, "enableTitle": "Включить движок", "enableDescription": "Запускается последним в стеке (после того как RTK/Caveman очищает текст, а OmniGlyph преобразует оставшуюся часть в изображения), а также работает автономно в режиме omniglyph. Это предварительная версия, которая остается отключенной по умолчанию до завершения сквозной проверки.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Профиль сжатия", + "profileDescription": "Профиль задаёт верхнюю, а не нижнюю границу: более строгий профиль нельзя ослабить переопределением на уровне отдельного шага. По результатам измерений на этой кодовой базе: при использовании профиля Coding-safe или Balanced сеанс, в котором ещё не накопилась история, ничего не сжимает, поскольку оба профиля повышают минимальный порог количества символов и сохраняют системный промпт, схемы инструментов и результаты их работы в исходном виде.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Агрессивный (по умолчанию)", + "description": "Политика, по которой проводились измерения в опубликованных отчётах. Преобразует в образы системный промпт, документацию инструментов и насыщенную историю." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Сбалансированный", + "description": "Сохраняет текущее состояние в исходном виде и защищает последние 8 реплик; сворачивает только более старую завершённую историю." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Безопасный для кода", + "description": "Сохраняет управляющие инструкции, схемы инструментов и актуальные результаты их работы в исходном виде, защищая последние 12 реплик. Ничего не сжимает, пока в сеансе не накопится история." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Без изменений", + "description": "Маршрутизирует без преобразований. Движок пропускается, а запрос пересылается без изменений." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Выберите профиль сжатия OmniGlyph", "saved": "Сохранено.", "saveFailed": "Не удалось сохранить.", "enableAria": "Включить движок OmniGlyph", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Сжатие сообщений на основе правил, языковые пакеты, аналитика и управление режимом вывода.", "advancedConfig": "Расширенная конфигурация", "advancedConfigDesc": "Точная настройка поведения сжатия", "aggressiveSettings": "Агрессивные настройки", "aggressiveSettingsDesc": "Максимальное сжатие с возможным компромиссом в качестве", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Запросы", + "tokensSaved": "Сэкономлено токенов", + "savingsPercent": "Экономия, %", + "avgLatency": "Средняя задержка", + "languagePacks": "Языковые пакеты", + "languagePacksDesc": "Включить правила сжатия для определённых языков.", "labelAutoTrigger": "Автоматическое сжатие, когда контекст превышает", "labelCompressionRate": "Сила сжатия", "labelMaxTokens": "Целевые токены на сообщение", "labelMinLength": "Минимальная длина сообщения", "labelMinSavings": "Минимум жетонов для сохранения", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Включено", + "autoDetect": "Автоматически определять язык", + "rulesCount": "Правил: {count}", "inputCompressionTitle": "Сжатие ввода", "inputCompressionDesc": "Перепишите историю чата с более короткими формулировками. Сокращает входные токены примерно на 50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Аналитика сжатия", + "noAnalytics": "Данных аналитики сжатия пока нет.", "masterDisabledWarning": "Главный переключатель Token Saver выключен — эти настройки не повлияют на запросы, пока вы не включите его в Compression Settings или не измените здесь.", "outputMode": "Режим вывода", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Режим вывода", "quickSettings": "Быстрые настройки", "quickSettingsDesc": "Основные настройки сжатия для начала работы", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Автоматический обход для ясных запросов", + "bypassConditions": "Условия обхода", "bypassConditionsList": "безопасность, необратимый, уточнение, чувствительность к заказу", "simpleMode": "Простой", "advancedMode": "Расширенный", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ультра настройки", "ultraSettingsDesc": "Семантическое сжатие на основе SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Отвечайте кратко. Сохраняйте технические термины, код, ошибки, URLs и идентификаторы.", + "full": "Отвечайте лаконично и компактно. Сохраняйте всю техническую суть.", + "ultra": "Отвечайте предельно кратко, используя общепринятые технические сокращения. Сохраняйте символы без изменений." } }, "translator": { @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Осталось", "kiloPassRenews": "Продление через {count} дн.", "kiloPassUsageLabel": "Использование в этом месяце", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Дополнительные кредиты на использование", + "kimiExtraUsage": "Дополнительное использование", + "kimiExtraUsageEnabled": "Включено", + "kimiExtraUsageDisabled": "Отключено", + "kimiExtraUsageFrozen": "Заморожено", + "kimiExtraUsageUnavailable": "Недоступно", + "kimiMonthlyUsed": "Использовано в этом месяце", + "kimiMonthlyLimit": "Месячный лимит", + "kimiMonthlyLimitUnlimited": "Без ограничений", + "kimiAdditionalCredits": "Дополнительные кредиты", "loggerTab": "Регистратор", "proxyTab": "Прокси", "budgetManagement": "Управление бюджетом", @@ -9373,7 +9380,7 @@ "runAllSuites": "Запустить все", "runAllRunning": "Бегу все...", "runAllProgress": "Запуск {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {Не пройден # набор} few {Не пройдено # набора} many {Не пройдено # наборов} other {Не пройдено # набора}}", "runAllCompleted": "Запущено {suites} комплектов — {passed} пройдено, {failed} не выполнено", "runAllCompletedWithFailures": "Запустил {completed} комплектов; {failedSuites} не удалось завершить", "runningProgress": "Запуск {current}/{total}...", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Использовать кредит", "resetCreditRedeemed": "Кредит сброса использован", "resetCreditRedeemFailed": "Не удалось использовать кредит сброса", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Не удалось сохранить набор", "clone": "Клонировать", "exportSuite": "Экспорт", "importSuite": "Импорт", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Неверный JSON пакета оценки.", "suiteBuilderCloneSuffix": "копировать", "suiteBuilderImportedSuite": "Импортированный люкс", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Таблица оценок", + "evalApiKey": "Ключ API", + "scorecardPassRate": "Доля успешных прохождений", + "targetTypeModel": "Модель", + "actualOutputLabel": "Фактический результат", + "evalTargetHint": "Выберите модель или комбинацию для оценки.", + "suiteBuilderDeleted": "Набор успешно удалён", + "suiteBuilderCaseCardHint": "Определите входной запрос и критерии ожидаемого результата.", + "nextResetUtc": "Следующий сброс (UTC)", + "scorecardHint": "Сводные показатели успешного прохождения по всем наборам оценивания.", + "suiteLatestRunsHint": "Последние запуски оценивания для этого набора.", + "saving": "Сохранение", + "suiteBuilderCaseModelLabel": "Модель (необязательно)", + "evalControlsTitle": "Управление оцениванием", + "suiteBuilderEditTitle": "Редактировать набор тестов", + "suiteBuilderCaseStrategyLabel": "Стратегия проверки", + "notifySelectDifferentCompareTarget": "Выберите другую целевую модель для сравнения", + "recentRunsHint": "Показаны последние запуски оценивания. Нажмите на запуск, чтобы просмотреть подробные результаты.", + "evalCompareHint": "При желании сравните результаты со второй целевой моделью.", + "suiteBuilderCaseInvalid": "В этом тесте есть ошибки проверки. Исправьте их перед сохранением.", + "historyEmpty": "История оценивания пока отсутствует", + "suiteBuilderUpdated": "Набор тестов успешно обновлён", + "resetInterval": "Интервал сброса", + "suiteBuilderCreateTitle": "Создать набор тестов", + "activePeriodSpend": "Расходы за текущий период", + "evalApiKeyHint": "Выберите API-ключ для запросов оценивания.", + "evalCompareOptional": "Сравнить (необязательно)", + "suiteBuilderDeleteFailed": "Не удалось удалить набор тестов", + "suiteBuilderCaseSystemPromptPlaceholder": "Необязательные системные инструкции...", + "scorecardCases": "Тесты", + "runCompletedWithScore": "Оценивание завершено — доля успешных тестов: {score}%", + "suiteBuilderCustomBadge": "Пользовательский", + "targetSuiteDefaults": "Настройки набора по умолчанию", + "suiteBuilderDeleteConfirm": "Вы уверены, что хотите удалить этот набор? Это действие нельзя отменить.", + "suiteBuilderNameLabel": "Название набора", + "scorecardSuites": "Наборы тестов", + "evalCompareTarget": "Целевая модель для сравнения", + "suiteBuilderCaseModelPlaceholder": "например, gpt-4o-mini", + "evalControlsHint": "Настройте целевую модель и API-ключ, затем запустите наборы тестов для проверки качества модели.", + "recentRunsTitle": "Недавние запуски", + "suiteBuilderCaseSystemPromptLabel": "Системный промпт", + "suiteBuilderCaseExpectedPlaceholder": "например, def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "например защита Фибоначчи", "suiteBuilderCaseExpectedPlaceholderExact": "Вставьте точный ожидаемый ответ", "suiteBuilderCaseExpectedPlaceholderRegex": "например ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Используйте регулярное выражение JavaScript без переноса косых черт.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "например, Набор тестов качества кода", + "suiteBuilderAddCase": "Добавить тест", + "cancel": "Отмена", + "evalTarget": "Целевая модель", + "suiteBuilderCaseNameLabel": "Название теста", + "weeklyLimitUsd": "Недельный лимит (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "например, Напиши функцию вычисления чисел Фибоначчи на Python", + "suiteBuilderNameRequired": "Необходимо указать название набора", + "suiteBuilderCaseUserPromptLabel": "Пользовательский промпт", + "daily": "Ежедневно", + "resultErrorLabel": "Ошибка", + "suiteBuilderBuiltInBadge": "Встроенный", + "suiteBuilderCaseCardTitle": "Тестовый случай", "suiteBuilderDuplicateCase": "Дублировать", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "например, 50.00", + "suiteBuilderCaseTagsHint": "Теги для организации тестовых случаев, разделённые запятыми.", + "notifyEvalRunFailedWithReason": "Сбой оценки: {reason}", + "weekly": "Еженедельно", + "runEvalRunning": "Выполняется оценка...", + "delete": "Удалить", + "resetTimeUtc": "Время сброса (UTC)", + "evalApiKeyAuto": "Авто (использовать значение по умолчанию)", + "suiteBuilderDescriptionPlaceholder": "Необязательное описание того, что тестирует этот набор...", + "targetComparisonTitle": "Сравнение целей", + "save": "Сохранить", + "suiteBuilderCreated": "Набор успешно создан", + "suiteLatestRuns": "Последние запуски", + "suiteBuilderCaseExpectedLabel": "Ожидаемое значение", + "historyLatency": "Задержка", + "suiteBuilderCaseTagsPlaceholder": "например, программирование, python", + "targetTypeCombo": "Комбинированный", + "scorecardPassed": "Пройдено", + "suiteBuilderCaseTagsLabel": "Теги", + "suiteBuilderNewSuite": "Новый набор", + "notifyEvalLoadFailed": "Не удалось загрузить данные оценки", + "notConfigured": "Не настроено", + "suiteBuilderCaseNamePlaceholder": "например, тест функции Фибоначчи на Python", + "intervalLabel": "Интервал", + "suiteBuilderCreateAction": "Создать набор", + "suiteBuilderCasesHint": "Каждый тестовый случай отправляет запрос и проверяет ответ.", + "suiteBuilderUpdatedAt": "Обновлено", + "errorBadge": "Ошибка", + "suiteBuilderCasesTitle": "Тестовые случаи", + "edit": "Изменить", + "monthly": "Ежемесячно", + "suiteBuilderCasesRequired": "Требуется хотя бы один тестовый случай", + "weeklyLimitSummary": "Сводка недельного лимита бюджета", + "suiteBuilderDescriptionLabel": "Описание", + "targetComparisonHint": "Параллельное сравнение результатов оценки между целями.", + "compareCompletedWithScore": "Сравнение завершено — доля успешных результатов: {score}%", + "staleQuotaTooltip": "Последнее обновление завершилось с ошибкой — показаны кэшированные данные", "quotaThresholdLabel": "Мин осталось", "quotaCutoffsColumnHelp": "Остановите запросы, когда оставшаяся квота упадет до этого процента или ниже.", "quotaCutoffsButtonDefault": "По умолчанию", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Системные метрики", "memory": "Память", - "memoryShort": "mem", + "memoryShort": "память", "uptime": "Время безотказной работы", "ariaLabel": "Мониторинг системы", "title": "Монитор системы", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Ожидание авторизации Antigravity...", "waitingForQoderAuthorization": "Ожидание авторизации Qoder...", "exchangingCodeForTokens": "Обмен кода на токены...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Несовместимая версия Node.js", + "nodeIncompatibleDesc": "Вы используете Node.js {version}, которая не соответствует политике OmniRoute в отношении поддерживаемых безопасных сред выполнения. Установите исправленную LTS-версию Node.js 20.x или 22.x.", + "nodeIncompatibleFixLabel": "Исправление: установите исправленную LTS-версию Node.js 22", + "nodeIncompatibleHint": "Для OmniRoute требуется Node.js 22.22.2+ (22.x LTS) или 24.0.0+ (24.x LTS). Рекомендуется Node 24 LTS.", "resetViaAppDataTitle": "Сброс через данные приложения", "resetViaAppDataDescription": "Удалите файл настроек из каталога данных приложения, чтобы сбросить пароль:", "quitDesktopApp": "Полностью выйти из настольного приложения OmniRoute", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "ПВА", "deployPwaText": "Установите OmniRoute как прогрессивное веб-приложение в браузерах Android, iOS и настольных ПК.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Запускайте OmniRoute на Android без графического интерфейса через Termux. Панель управления доступна в мобильном браузере.", "featureRoutingTitle": "Маршрутизация между несколькими провайдерами", "featureRoutingText": "Направляйте запросы более чем 30 поставщикам ИИ через единую конечную точку, совместимую с OpenAI. Поддерживает API чата, ответов, аудио и изображений.", "featureCombosTitle": "Комбинации и балансировка", @@ -10570,14 +10577,14 @@ "unavailableDesc": "Не удалось получить статистику кэша. Убедитесь, что сервер запущен.", "loadingCacheAria": "Загрузка кэша", "promptCache": "Кэш промптов (на стороне провайдера)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", + "semanticCache": "Семантический кеш", + "promptCacheSectionDesc": "Показывает активность кеширования запросов на стороне провайдера на основе истории использования, чтобы вы могли видеть, где действует управление кешем и насколько эффективно повторно используются входные данные.", + "promptTrendDesc": "Почасовой объём запросов, охват кешем и объём чтения из кеша за последние 24 часа.", "cachedRequests": "Запросы из кэша", - "cachedRequests24h": "Cached Requests (24h)", + "cachedRequests24h": "Кешированные запросы (24 ч)", "cacheHitRate": "Коэффициент попадания в кэш", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "cacheRate": "Доля кеширования", + "cacheRateDesc": "от общего числа запросов", "cachedTokens": "Кэшированные токены", "cacheCreationTokens": "Токены создания кэша", "cacheMetrics": "Метрики кэша промптов", @@ -10587,12 +10594,12 @@ "cacheReuseRatio": "Коэффициент повторного использования кэша", "cacheReuseRatioDesc": "Кэшированные токены / Все входные токены", "estCostSaved": "Примерная экономия", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", + "lastUpdated": "Последнее обновление", + "hoursTracked": "часов отслеживается", + "busiestHour": "Самый загруженный час", + "peakCacheRate": "Пиковая доля кеширования", + "trendHour": "Час", + "activityVolume": "Активность", "requestsShort": "запр.", "inputShort": "Вх.", "cachedShort": "В кэше", @@ -10600,7 +10607,7 @@ "resetting": "Сброс...", "resetMetrics": "Сбросить метрики", "byProvider": "Разбивка по провайдерам", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "providerCacheRateDesc": "Каждый провайдер предоставляет общее количество входных токенов, токенов чтения из кеша и токенов записи в кеш, чтобы вы могли сверить коэффициент повторного использования с исходными общими значениями.", "provider": "Провайдер", "requests": "Запросы", "inputTokens": "Входные токены", @@ -10613,16 +10620,16 @@ "tableProvider": "Поставщик", "tableModel": "Модель", "performanceTitle": "Производительность", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", + "semanticCacheSectionDesc": "Собственный детерминированный кеш ответов OmniRoute. Когда он включён, повторные непотоковые запросы с temperature=0 могут обслуживаться локально без обращения к вышестоящему провайдеру.", + "semanticCacheDisabledDesc": "Семантический кеш отключён. OmniRoute не будет повторно использовать локальные ответы, пока вы снова не включите эту функцию в настройках.", + "semanticEntriesDesc": "Сохранённые записи семантического кеша, находящиеся в SQLite. Активность кеша запросов на стороне провайдера здесь не отображается.", "searchEntries": "Поиск записей...", "search": "Поиск", "loading": "Загрузка...", - "entriesLoadError": "Failed to load semantic cache entries.", + "entriesLoadError": "Не удалось загрузить записи семантического кеша.", "noEntries": "Записи кэша не найдены", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", + "noPromptCacheData": "Активность кеша запросов на стороне провайдера пока не зарегистрирована.", + "noTrendData": "За последние 24 часа активность кеша запросов не зарегистрирована.", "signature": "Сигнатура", "model": "Модель", "created": "Создано", @@ -10631,8 +10638,8 @@ "deduplicatedRequests": "Дедуплицированные запросы", "savedCalls": "Сэкономленные API-запросы", "totalProcessed": "Всего запросов обработано", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "disabled": "Отключено", + "totalRequests": "Всего запросов", "reasoningCache": "Рассуждение повтора", "reasoningCacheDesc": "Сохраняет модельное мышление для многооборотных потоков вызова инструмента", "reasoningEntries": "Активные записи", @@ -10719,23 +10726,23 @@ "deviceCodeVerificationUrl": "URL-адрес подтверждения", "deviceCodeYourCode": "Ваш код", "deviceCodeWaiting": "Ожидание авторизации...", - "googleLoopbackTitle": "Google sign-in can't complete from this address", - "googleLoopbackWhatHappens": "Google only releases the authorization code once {redirectUri} is reachable from the browser that approves the sign-in. Here that address points at this computer, not at the OmniRoute server — so the consent screen hangs instead of redirecting, and there is no callback URL to copy.", - "googleLoopbackRecommended": "Recommended — run this on your own computer, then paste the result below:", - "googleLoopbackHelperNote": "It opens the Google consent locally (where 127.0.0.1 works) and prints a one-line omniroute-cred-v1.… blob. Paste that blob into the Step 2 field below — it accepts a credential blob as well as a callback URL.", - "googleLoopbackTunnelLabel": "Or forward the dashboard port over SSH and reload OmniRoute through the tunnel:", - "googleLoopbackTunnelNote": "Replace {userPlaceholder} with your SSH username, keep the terminal open, then open {localUrl} and connect again from there.", - "googleLoopbackHeadlessAlt": "For fully headless use with no local callback at all, configure your own Google OAuth credentials plus a public base URL.", + "googleLoopbackTitle": "Вход через Google невозможно завершить с этого адреса", + "googleLoopbackWhatHappens": "Google выдаёт код авторизации только после того, как адрес {redirectUri} становится доступен из браузера, в котором подтверждается вход. Здесь этот адрес указывает на данный компьютер, а не на сервер OmniRoute, поэтому экран согласия зависает вместо перенаправления и URL-адрес обратного вызова невозможно скопировать.", + "googleLoopbackRecommended": "Рекомендуется — выполните эту команду на своём компьютере, а затем вставьте результат ниже:", + "googleLoopbackHelperNote": "Команда локально откроет экран согласия Google (где работает 127.0.0.1) и выведет в одной строке blob-объект omniroute-cred-v1.…. Вставьте этот blob-объект в поле шага 2 ниже — оно принимает как blob-объект учётных данных, так и URL-адрес обратного вызова.", + "googleLoopbackTunnelLabel": "Либо перенаправьте порт панели управления через SSH и повторно загрузите OmniRoute через туннель:", + "googleLoopbackTunnelNote": "Замените {userPlaceholder} своим именем пользователя SSH, не закрывайте терминал, затем откройте {localUrl} и повторно подключитесь оттуда.", + "googleLoopbackHeadlessAlt": "Для полностью автономного использования без локального обратного вызова настройте собственные учётные данные Google OAuth и общедоступный базовый URL-адрес.", "remoteAccessInfo": "Удаленный доступ. Поскольку вы получаете доступ к OmniRoute удаленно, после авторизации вы увидите страницу с ошибкой (localhost не найден). Это нормально — просто скопируйте полный URL-адрес из адресной строки браузера и вставьте его ниже.", - "loopbackMismatchTitle": "Sign-in can't complete from this address", - "loopbackMismatchWhatHappened": "What's happening", - "loopbackMismatchExplanation": "After you approve the login, {providerName} always sends the browser back to {redirectUri}. That address points at the computer running this browser, not at the OmniRoute server — so the authorization code never reaches OmniRoute and the provider fails the sign-in without showing an error.", - "loopbackMismatchHowToFix": "How to fix it", - "loopbackMismatchStep1": "On this computer, open a terminal and start an SSH tunnel to the OmniRoute server:", - "loopbackMismatchStep1Note": "Replace {userPlaceholder} with your SSH username. Keep this terminal open until the connection shows as active — both ports are needed: one serves the dashboard, the other receives the callback.", - "loopbackMismatchStep2": "In this browser, reopen OmniRoute through the tunnel:", - "loopbackMismatchStep3": "Then connect {providerName} again from the new tab. The callback now reaches the server and the login completes normally.", - "loopbackMismatchAlternative": "No SSH access? If this provider offers a token import tab, connect with a token instead — that path doesn't use a loopback callback.", + "loopbackMismatchTitle": "Вход невозможно завершить с этого адреса", + "loopbackMismatchWhatHappened": "Что происходит", + "loopbackMismatchExplanation": "После подтверждения входа {providerName} всегда перенаправляет браузер обратно на {redirectUri}. Этот адрес указывает на компьютер, на котором запущен браузер, а не на сервер OmniRoute, поэтому код авторизации не достигает OmniRoute и провайдер не может выполнить вход, не показывая при этом ошибку.", + "loopbackMismatchHowToFix": "Как это исправить", + "loopbackMismatchStep1": "На этом компьютере откройте терминал и запустите SSH-туннель к серверу OmniRoute:", + "loopbackMismatchStep1Note": "Замените {userPlaceholder} на своё имя пользователя SSH. Не закрывайте этот терминал, пока подключение не станет активным — необходимы оба порта: один обслуживает панель управления, другой принимает обратный вызов.", + "loopbackMismatchStep2": "В этом браузере снова откройте OmniRoute через туннель:", + "loopbackMismatchStep3": "Затем снова подключите {providerName} в новой вкладке. Теперь обратный вызов достигнет сервера, и вход завершится как обычно.", + "loopbackMismatchAlternative": "Нет доступа по SSH? Если этот провайдер предлагает вкладку импорта токена, подключитесь с помощью токена — этот способ не использует обратный вызов через loopback.", "step1OpenUrl": "Шаг 1. Откройте этот URL-адрес в своем браузере.", "copy": "Копировать", "step2PasteCallback": "Шаг 2. Вставьте сюда URL обратного вызова или код авторизации.", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "Вставьте существующий ключ API Devin из аутентифицированной сессии Devin. Доступность экспорта ключа и шаги могут различаться в зависимости от версии Devin и учетной записи.", "devinPasteDescription": "Укажите ваш WINDSURF_API_KEY (полученный через `devin auth login` или через команду \"Windsurf: Provide Auth Token\" в IDE Windsurf).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json для Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "API Ключ / Токен", "saving": "Сохранение…", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Подключить курсор IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Войти через Cursor", + "tabImport": "Импортировать токен", + "loginDescription": "Открывает страницу входа Cursor в браузере. Работает в Docker — подтвердите вход в браузере хост-системы, затем вернитесь сюда.", + "loginWithCursor": "Войти через Cursor", + "startingLogin": "Запуск…", + "waitingApproval": "Ожидание подтверждения входа в Cursor…", + "openUrlHint": "Если браузер не открылся:", + "openLoginLink": "Открыть страницу входа", + "cancelLogin": "Отменить вход", "autoDetecting": "Автоматическое обнаружение токенов...", "readingFromCursor": "Чтение из Cursor IDE или курсорного агента", "tokensAutoDetected": "Токены успешно автоматически обнаружены в Cursor IDE!", "cursorNotDetected": "Курсор IDE не обнаружен. Пожалуйста, вставьте свой токен вручную.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Работаете в Docker? Рекомендуется выбрать «Войти через Cursor». Автоимпорт из IDE и cursor-agent обычно недоступны внутри контейнера. См. docs/providers/CURSOR-DOCKER.md.", "accessToken": "Токен доступа", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Токен обновления", + "refreshTokenPlaceholder": "Необязательно — включает автоматическое обновление токена", "required": "*", "accessTokenPlaceholder": "Токен доступа будет автоматически заполнен...", "machineId": "Идентификатор машины", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Не удалось автоматически обнаружить токены", "errorEnterToken": "Пожалуйста, введите токен доступа", "errorImportFailed": "Импорт не удался", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Не удалось начать вход в Cursor", + "errorLoginPoll": "Не удалось войти в Cursor", + "errorLoginTimeout": "Время ожидания входа в Cursor истекло — попробуйте ещё раз" }, "pricingModal": { "title": "Конфигурация цен", @@ -10843,9 +10850,9 @@ "selectProxy": "Выбрать {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Импортировать устаревшие данные", + "bulkAssign": "Массовое назначение", + "addProxy": "Добавить прокси", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Проверить", + "edit": "Изменить", + "delete": "Удалить", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10906,7 +10913,7 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Ошибка", "successRate": "{rate} % успеха", "avgLatency": "{latency} мс в среднем", "assignmentsCount": "{count} заданий", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Стратегия ротации", "poolStrategyHint": "round-robin циклически перебирает участников по порядку; random выбирает равномерно; sticky удерживает одного участника в течение интервала; latency-optimized выбирает самый быстрый на основе логов.", "poolStrategyFailed": "Не удалось обновить стратегию ротации", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "По кругу", "strategyRandom": "Случайный", "strategySticky": "Фиксированный", "strategyLatency": "Оптимизация по задержке", "poolMembersLabel": "Участники пула ({count})", "poolNoMembers": "В этом пуле пока нет прокси.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "Использовано {exits, plural, one {# выход} few {# выхода} many {# выходов} other {# выхода}} для {connections, plural, one {# подключения} few {# подключений} many {# подключений} other {# подключения}} · до {max} на одном выходе · за последние {hours} ч", + "poolEgressObservationEmpty": "За последние {hours} ч трафик не наблюдался", + "poolEgressObservationHint": "Рассчитано по журналу прокси за выбранный период: уникальные исходящие IP-адреса, обнаруженные у участников этого пула, и подключения OmniRoute, которые их использовали. «На одном выходе» означает за весь период, а не одновременно. Блокировка 429 для отдельного IP-адреса приостанавливает только подключения того же семейства провайдеров.", "poolRemove": "Удалить", "poolRemoveFailed": "Не удалось удалить прокси из пула", "poolAddLabel": "Добавить прокси", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Конечная точка", + "provider": "Провайдер", + "model": "Модель", "accountKey": "Account Key", "autoAccounts": "Авто (аккаунтов: {count})", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Отправить", + "cancel": "Отмена", + "audioFile": "Аудиофайл", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Очистить всё", + "request": "Запрос", + "response": "Ответ", + "transcription": "Транскрипция", + "copy": "Копировать", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Сгенерировано изображений: {count}", "generatedImage": "Сгенерированное изображение {index}", - "save": "Save", + "save": "Сохранить", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Ответы", "completions": "Генерация", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Эмбеддинги", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Модерация", - "rerank": "Rerank", + "rerank": "Реранжирование", "search": "Search", "webFetch": "Веб-запросы" }, "conversationalChat": "Разговорный чат", "clearChat": "Очистить чат", "typeMessagePlaceholder": "Введите сообщение... (Shift+Enter для новой строки)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Чат", + "tabCompare": "Сравнить", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Сборка", + "configPane": "Конфигурация", + "systemPrompt": "Системный промпт", + "systemPromptPlaceholder": "Вы — полезный ассистент.", + "modelPlaceholder": "например, openai/gpt-4o", + "endpointLabel": "Эндпоинт", + "parametersLabel": "Параметры", + "collapseConfig": "Свернуть панель конфигурации", + "expandConfig": "Развернуть панель конфигурации", + "temperature": "Температура", + "maxTokens": "Максимум токенов", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Штраф за присутствие", + "frequencyPenalty": "Штраф за частоту", "reasoningLabel": "Рассуждение", "thinking": "Мышление", "effort": "Усилия", "effortDefault": "По умолчанию", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Случайное значение (оставьте пустым)", + "presetsLabel": "Предустановки", + "loadPreset": "Загрузить предустановку", + "savePreset": "Сохранить предустановку", + "noPresets": "Нет предустановок", + "presetNamePlaceholder": "Название предустановки", + "savingPreset": "Сохранение…", + "nameRequired": "Необходимо указать название", + "failedToSavePreset": "Не удалось сохранить предустановку", + "improvePrompt": "Улучшить промпт", + "improvingPrompt": "Улучшение…", + "improvePromptTitle": "Улучшить промпт с помощью ИИ", + "setModelFirst": "Сначала выберите модель", "setModelInConfigFirst": "Сначала выберите модель на панели конфигурации.", "improvePromptFailed": "Не удалось улучшить промпт.", "improvePromptAria": "Улучшить промпт с помощью ИИ", "confirmImprovePrompt": "Подтвердить улучшение промпта", "improvePromptDescription": "Это отправит ваш текущий системный промпт в для генерации улучшенной версии.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Это израсходует квоту модели, настроенной в Config.", + "improveConfirm": "Улучшить", + "exportCode": "Экспортировать код", + "exportCodeTitle": "Экспорт кода", "exportShort": "Экспорт", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Нет доступного состояния песочницы для экспорта.", "closeExportModal": "Закрыть модальное окно экспорта", "close": "Закрыть", "exportRealKeyWarning": "Предупреждение о безопасности: экспорт заблокирован — в выводе был обнаружен реальный ключ API. Пожалуйста, сбросьте свой ключ API и попробуйте снова.", @@ -11071,13 +11078,13 @@ "copyLangCode": "Скопировать код {language}", "loadingPresets": "Загрузка…", "loadPresetPlaceholder": "Загрузить пресет…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Копировать", + "copiedCode": "Скопировано!", + "addModel": "+ Добавить модель", + "runAll": "Запустить все", + "cancelAll": "Отменить все", + "maxColumnsReached": "Не более {max} столбцов", + "modelPlaceholderCompare": "Модель (Cmd+K)…", "noModel": "Нет модели", "statusLabel": "Статус: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "Ожидание ответа…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "оценка на стороне клиента", + "tokensLabel": "Токены", + "costLabel": "Стоимость", + "costEstimated": "(оценочно)", "ttftTitle": "Время до первого токена (оценка на стороне клиента)", "tpsTitle": "Токенов в секунду (оценка на стороне клиента)", "tokenCountsTitle": "Токены промпта ↑ / Токены ответа ↓", "estimatedCostTitle": "Оценочная стоимость (точность не гарантируется)", - "toolsLabel": "Tools", + "toolsLabel": "Инструменты", "toolsCount": "Инструменты ({count})", - "addTool": "Add tool", + "addTool": "Добавить инструмент", "editTool": "Редактировать инструмент {name}", "removeTool": "Удалить инструмент {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Имя функции", "toolNameRequiredPlaceholder": "Имя функции *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Описание (необязательно)", "toolParamsLabel": "Параметры (JSON-схема)", "toolParamsJsonSchema": "JSON-схема для параметров", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Параметры должны быть допустимым JSON", + "structuredOutputLabel": "Структурированный вывод", + "enableJsonMode": "Включить режим JSON", + "disableJsonMode": "Отключить режим JSON", + "invalidJson": "Недопустимый JSON", "jsonMode": "Режим JSON", "jsonModeDescription": "Принудительно устанавливает response_format: json_schema", "schemaName": "Имя схемы", @@ -11126,7 +11133,7 @@ "schemaValidated": "Схема проверена", "validateSchema": "Проверить схему", "seed": "Сид", - "stopSequences": "Stop sequences", + "stopSequences": "Стоп-последовательности", "stopSequencesPlaceholder": "например, \"\\n\\n\" или \"END\"", "autoProvider": "Авто", "httpError": "Ошибка {status}", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} столбцов", "addModelToCompare": "Добавить столбец модели для сравнения", "modelsSimultaneously": "До {max} моделей одновременно", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Выполняется…", + "runLabel": "Запустить", + "enterToolResult": "Введите результат инструмента…", "build": { "step1Label": "Что тестировать?", "step2Label": "Настроить", @@ -11226,9 +11233,9 @@ "image": "Изображение", "ttsSample": "Привет от OmniRoute. Это тест преобразования текста в речь.", "textToSpeech": "Преобразование текста в речь", - "videoSample": "A paper airplane flying over a futuristic city", + "videoSample": "Бумажный самолётик летит над футуристическим городом", "video": "Видео", - "webFetch": "Web Fetch", + "webFetch": "Получение данных из интернета", "webSearchSample": "Что такое OmniRoute?", "webSearch": "Поиск в Интернете", "documentUrl": "URL документа", @@ -11250,73 +11257,73 @@ "stop": "Остановить" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "Запись", + "paused": "Приостановлено", + "pipelineLogsOn": "Логи конвейера включены", + "pipelineLogsOff": "Логи конвейера выключены", + "updatingPipelineLogs": "Обновление логов конвейера...", + "updatePipelineFailed": "Не удалось обновить журналирование конвейера", + "capturePipeline": "Сохранять содержимое запросов и ответов конвейера для новых запросов", + "searchPlaceholder": "Поиск моделей, провайдеров, аккаунтов, API-ключей, комбинаций...", + "allProviders": "Все провайдеры", + "allModels": "Все модели", + "allAccounts": "Все аккаунты", + "allApiKeys": "Все API-ключи", + "total": "Всего", + "ok": "Успешно", + "err": "Ошибка", + "combo": "Комбинация", + "keys": "Ключи", + "shown": "Показано", + "sortNewest": "Сначала новые", + "sortOldest": "Сначала старые", + "sortTokensDesc": "Токены ↓", + "sortTokensAsc": "Токены ↑", + "sortDurationDesc": "Длительность ↓", + "sortDurationAsc": "Длительность ↑", + "sortStatusDesc": "Статус ↓", + "sortStatusAsc": "Статус ↑", + "sortModelAsc": "Модель А–Я", + "sortModelDesc": "Модель Я–А", + "sortLogs": "Сортировка логов", + "refresh": "Обновить", + "columnsLabel": "Столбцы", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semantic": "Семантический", + "upstream": "Вышестоящий", + "semanticCacheHit": "Попадание в семантический кэш (обработано OmniRoute)", + "upstreamResponse": "Ответ вышестоящего провайдера", + "noApiKey": "Нет API-ключа", + "requestedRoutedTitle": "Запрошено: {requested}, перенаправлено как: {routed}", "statusFilters": { - "all": "All", + "all": "Все", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Успешно", + "combo": "Комбинация" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "Статус", + "cacheSource": "Источник кэша", + "model": "Модель", + "requested": "Запрошено", + "provider": "Провайдер", + "protocol": "Протокол запроса", + "account": "Аккаунт", + "apiKey": "Ключ API", + "combo": "Комбинация", + "tokens": "Токены", "compressed": "Сжатие", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Длительность", + "time": "Время", + "conversation": "Диалог", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Загрузка журналов...", + "noLogs": "Журналов пока нет. Выполните несколько вызовов API, чтобы они появились здесь.", + "noMatchingLogs": "Нет журналов, соответствующих текущим фильтрам.", + "callLogsInfo": "Журналы вызовов также сохраняются в виде файлов JSON в {dataDir} и ротируются с учётом {retentionDays} и {maxEntries}.", "loadMore": "Загрузить еще", "loadingMore": "Загрузка еще...", "correlationId": "Идентификатор корреляции", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Подробный артефакт полезной нагрузки больше недоступен для этой записи журнала.", "payloadCorrupt": "Не удалось разобрать детализированный артефакт полезной нагрузки.", - "notAvailable": "N/A", + "notAvailable": "Н/Д", "semanticCache": "Семантический (OmniRoute)", "upstreamCache": "Верхний уровень (Поставщик)", "ariaLabel": "Детали журнала запросов", @@ -11417,59 +11424,59 @@ "correlationId": "Идентификатор корреляции", "correlationIdValue": "Идентификатор корреляции: {id}", "detailedPayloadInfo": "Сначала включите детализированный логгинг, если вы хотите получить четырехступенчатый просмотр полезной нагрузки клиента/поставщика для новых запросов.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Копировать всё", + "copiedAll": "Всё скопировано" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "Все", + "filterErrors": "Ошибки", + "filterSuccess": "Успешно", + "filterTimeout": "Тайм-аут", + "colStatus": "Статус", + "colProxy": "Прокси", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "Тип", + "colLevel": "Уровень", + "colProvider": "Провайдер", + "colTarget": "Целевой адрес", + "colLatency": "Задержка", + "colClientIp": "IP-адрес клиента", + "colTime": "Время", + "recording": "Запись", + "paused": "Приостановлено", + "searchPlaceholder": "Поиск по хосту, провайдеру, целевому адресу, IP...", + "allTypes": "Все типы", + "allLevels": "Все уровни", + "allProviders": "Все провайдеры", + "total": "всего", + "ok": "ОК", + "err": "ОШИБКА", + "timeoutShort": "ТАЙМ-АУТ", + "direct": "напрямую", + "newest": "Сначала новые", + "oldest": "Сначала старые", + "latencyDesc": "Задержка ↓", + "latencyAsc": "Задержка ↑", + "refresh": "Обновить", + "columns": "Столбцы", + "loadingProxyLogs": "Загрузка журналов прокси...", + "noProxyLogs": "Журналов прокси пока нет. Настройте прокси и выполните вызовы API, чтобы увидеть их здесь.", + "noMatchingLogs": "Нет журналов, соответствующих текущим фильтрам.", + "tlsFingerprint": "TLS-отпечаток Chrome 124", "colPublicIp": "Публичный IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "Речь", + "search": "Поиск", + "images": "Изображения", + "chat": "Чат", + "music": "Музыка", + "responses": "Ответы", + "rerank": "Переранжирование", + "video": "Видео", + "embeddings": "Эмбеддинги", + "transcription": "Транскрибация" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Среда выполнения", + "description": "Наблюдаемость в реальном времени — трёхуровневая отказоустойчивость + сеансы + оповещения о квотах", + "pause": "Приостановить", + "resume": "Возобновить", + "refreshNow": "Обновить сейчас", + "kpiSessions": "Сеансы", + "kpiCircuits": "Цепи", + "kpiCooldowns": "Периоды восстановления", + "kpiLockouts": "Блокировки", + "hintStickyBound": "{count} с закреплением", + "hintRecovering": "{count} восстанавливаются", + "hintAllHealthy": "все исправны", + "hintOpen": "открыто", + "hintConnsCooling": "подключения восстанавливаются", + "hintModelsBlocked": "модели заблокированы", + "resilienceTitle": "Трёхуровневая отказоустойчивость", + "resilienceSubtitle": "Соответствует описанной модели отказоустойчивости", + "providersHealthy": "{percent}% провайдеров исправны", + "layer": "Уровень {n}", + "layer1Title": "Автоматические выключатели провайдеров", + "layer1Desc": "Прекращает направлять трафик провайдерам со сбоями на вышестоящем уровне", + "layer2Title": "Периоды восстановления подключений", + "layer2Desc": "Пропускает одну неисправную учётную запись или ключ; остальные подключения продолжают обслуживать запросы", + "layer3Title": "Блокировки моделей", + "layer3Desc": "Блокировки по лимиту запросов для отдельных моделей; то же подключение продолжает обслуживать другие модели", + "badgeAffectedOf": "затронуто: {affected} из {total}", + "badgeCooling": "{count} восстанавливаются", + "badgeLocked": "{count} заблокировано", + "emptyCircuits": "Активных автоматических выключателей пока нет", + "emptyCooldowns": "Нет подключений в периоде восстановления", + "emptyLockouts": "Нет заблокированных моделей", + "moreCooldowns": "+ ещё {count} в периоде восстановления", + "moreLockouts": "+ ещё {count} заблокировано", + "feedTitle": "Лента в реальном времени", + "feedSubtitle": "Последние события: {count}", + "feedFilterAll": "Все", + "feedFilterCircuits": "Автоматические выключатели", + "feedFilterCooldowns": "Периоды восстановления", + "feedFilterLockouts": "Блокировки", + "feedFilterSessions": "Сеансы", + "feedFilterQuotas": "Квоты", + "feedClear": "Очистить", + "feedEmptyWaiting": "Ожидание событий... (опрос каждые 5 с)", + "feedEmptyFiltered": "Нет событий, соответствующих этому фильтру", + "sessionsTitle": "Активные сеансы", + "sessionsSubtitle": "Закреплённые отпечатки запросов (в реальном времени)", + "sessionsActive": "Активно: {count}", + "sessionsEmptyTitle": "Нет активных сессий", + "sessionsEmptyHint": "Сессии появляются по мере прохождения запросов через прокси", + "tblSession": "Сессия", + "tblAge": "Возраст", + "tblIdle": "Простой", + "tblReqs": "Запросы", + "tblBoundTo": "Привязано к", + "topApiKeys": "Основные ключи API", + "quotaMonitorsTitle": "Мониторинг квот", + "quotaMonitorsSubtitle": "Текущее состояние квоты для каждого окна учётной записи", + "openQuota": "Открыть квоты", + "allQuotasHealthy": "Все квоты в норме", + "statusExhausted": "ИСЧЕРПАНО", + "statusAlerting": "ТРЕБУЕТ ВНИМАНИЯ", + "statusError": "ОШИБКА", + "moreSuffix": "+ещё {count}" }, "quotaShare": { "weightPercent": "Вес %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Совместное использование квот", + "description": "Распределяйте квоты провайдера между ключами API с процентными ограничениями", + "newPool": "Новый пул", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Конфигурация сохраняется в localStorage (пока не сохраняется на сервере). Применение лимита для каждого запроса пока не подключено к конвейеру прокси. На этом экране можно настроить и визуализировать распределение квоты; фактическое применение появится в будущей версии вместе с сохранением в БД и перехватом исходящих вызовов.", + "kpiActivePools": "Активные пулы", + "kpiKeysAllocated": "Распределённые ключи", + "kpiAvgUnallocated": "В среднем не распределено", + "kpiProvidersWithQuota": "Провайдеры с квотой", + "emptyTitle": "Пулы не настроены", + "emptyDescription": "Создайте пул, чтобы назначить ключи API для совместного использования окна квоты провайдера с процентным распределением.", + "loading": "Загрузка…", + "removePool": "Удалить пул", + "removeConfirm": "Удалить этот пул?", + "pool": "Пул", + "used": "использовано", + "allocationsCount": "Распределение ({count})", + "allocatedFree": "Распределено: {allocated}% · свободно: {free}%", + "noAllocations": "Ключи пока не распределены", + "capLabel": "лимит {value}", + "notTrackedYet": "(пока не отслеживается)", + "policy": "Политика", "apiKeyColumn": "API-ключ", "weightColumn": "Вес", "fairShareShort": "справедливый", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "жёсткая", + "policySoft": "мягкая", + "policyBurst": "пиковая", + "policyHardHint": "Блокировать, когда ключ исчерпает выделенную квоту", + "policySoftHint": "Разрешить превышение, только уведомлять", + "policyBurstHint": "Разрешить использовать свободный пул при всплеске", + "editAllocations": "Изменить распределение", + "newPoolTitle": "Новый пул квот", + "providerConnection": "Подключение провайдера (аккаунт)", + "selectConnection": "Выберите подключение…", + "noEligibleConnections": "Нет подключений с данными о квотах. Сначала обновите их в /dashboard/quota.", + "quotaWindow": "Период квоты", + "selectWindow": "Выберите период…", + "alreadyUsedSuffix": "(уже использовано)", + "windowReset": "Сбросить", + "duplicatePoolError": "Пул для этого подключения и периода уже существует", + "cancel": "Отмена", + "createPool": "Создать пул", + "editTitle": "Изменить распределение", + "noKeysAdded": "Ключи не добавлены. Добавьте ключ ниже.", + "totalLabel": "Итого: {percent}%", + "totalExceeded": "⚠ превышает 100%", + "addKey": "+ Добавить ключ…", + "equalSplit": "Распределить поровну", + "save": "Сохранить распределение", "betaPreviewLabel": "Бета — предварительный просмотр пользовательского интерфейса.", "betaConfigSavedPrefix": "Конфигурация сохраняется в", "betaConfigSavedSuffix": "(пока не сохраняется на сервере). Ограничение количества запросов еще не встроено в конвейер прокси. Этот экран позволяет вам спроектировать и визуализировать разделение квоты; реальное обеспечение соблюдения требований появится в будущей итерации с сохранением БД и перехватом восходящих вызовов.", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "Базовый URL", "endpointsCollapse": "Свернуть", "endpointsExpand": "Расширить", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Нативный Anthropic", "endpointsResponsesNote": "Ответы OpenAI — codex/github", "endpointsWsNote": "WebSocket — только кодекс", "betaText": "Доля квоты функционирует, но ожидаются ошибки. Нашли одну? Пожалуйста, сообщите об этом.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "В этой группе все еще есть пулы — сначала переназначьте или удалите их.", "ungroupedTitle": "Не сгруппировано", "ungroupedHint": "Эти пулы не назначены известной группе. Отредактируйте пул, чтобы переместить его в реальную группу.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Не удалось удалить этот пул.", + "dismiss": "Закрыть" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Плагины", + "description": "Установка плагинов для расширения функциональности OmniRoute и управление ими", + "loading": "Загрузка плагинов...", + "scanning": "Сканирование...", + "scanForPlugins": "Найти плагины", + "noPlugins": "Нет установленных плагинов", + "noPluginsDescription": "Поместите каталоги плагинов в ~/.omniroute/plugins/ и нажмите «Найти плагины».", + "activate": "Активировать", + "deactivate": "Деактивировать", + "uninstall": "Удалить", + "uninstallConfirm": "Удалить плагин «{name}»?", + "pluginScanComplete": "Сканирование плагинов завершено", + "pluginScanFailed": "Не удалось выполнить сканирование плагинов", + "activated": "Плагин {name} активирован", + "deactivated": "{name} деактивирован", + "activateFailed": "Не удалось активировать {name}", + "deactivateFailed": "Не удалось деактивировать {name}", + "uninstalled": "{name} удалён", + "uninstallFailed": "Не удалось удалить {name}", + "configure": "Настройка: {name}", + "configurePlugin": "Настроить", + "noConfigSettings": "У этого плагина нет настраиваемых параметров.", + "saving": "Сохранение...", + "saveConfiguration": "Сохранить конфигурацию", + "configurationSaved": "Конфигурация сохранена", + "saveConfigurationFailed": "Не удалось сохранить конфигурацию", + "pluginNotFound": "Плагин не найден", + "version": "Версия", + "author": "Автор", + "description_label": "Описание", + "status": "Статус", + "enabled": "Включён", + "disabled": "Отключён", "installedTab": "Установлено", "marketplaceTab": "Маркетплейс", "marketplaceUrlLabel": "Пользовательский URL маркетплейса", @@ -11729,7 +11736,7 @@ "verified": "Проверено", "install": "Установить", "installedFromMarketplace": "Плагин {name} установлен!", - "hooks": "Hooks" + "hooks": "Хуки" }, "quotaPlans": { "title": "Планы и Квоты", @@ -12057,7 +12064,7 @@ "resumeBtn": "Резюме", "clearBtn": "Очистить", "exportHar": "Экспорт .har", - "recordSession": "REC", + "recordSession": "ЗАП", "stopSession": "Стоп", "liveBadge": "в прямом эфире", "offlineBadge": "офлайн", @@ -12179,7 +12186,7 @@ "acp": { "title": "Агенты ACP", "phrase": "CLIs, которые OmniRoute запускает в качестве бэкенда выполнения (обратный поток)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Большинство пользователей могут проигнорировать это — используйте только тогда, когда этого требует интеграция.", "flow": "Клиент → OmniRoute → запустить CLI (stdio/ACP) → ответ", "seeOther": "Смотреть →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI, используемый в качестве бэкенда Omni", "desc": "Обратное выполнение", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → запуск CLI → ответ", "examples": "например: claude, codex (ACP)" } }, @@ -12371,15 +12378,15 @@ }, "omni-webhooks": { "name": "Вебхуки", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Регистрируйте, просматривайте, тестируйте и удаляйте конечные точки вебхуков. Настраивайте подписки на события (request.completed, request.failed, quota.exceeded и т. д.) и управляйте повторными попытками доставки." }, "omni-mcp": { "name": "MCP-сервер", - "description": "Connect to the OmniRoute MCP server (110 tools, 3 transports: SSE/stdio/HTTP). Covers routing, cache, compression, memory, skills, providers, and audit tools across 33 permission scopes." + "description": "Подключайтесь к серверу OmniRoute MCP (110 инструментов, 3 транспорта: SSE/stdio/HTTP). Охватывает маршрутизацию, кеширование, сжатие, память, навыки, провайдеров и инструменты аудита в рамках 33 областей разрешений." }, "omni-agents-a2a": { "name": "Агенты и протокол A2A", - "description": "Interact with OmniRoute via JSON-RPC 2.0 agent-to-agent protocol. 6 built-in A2A skills: smart-routing, quota-management, provider-discovery, cost-analysis, health-report, list-capabilities." + "description": "Взаимодействуйте с OmniRoute через межагентный протокол JSON-RPC 2.0. 6 встроенных навыков A2A: smart-routing, quota-management, provider-discovery, cost-analysis, health-report, list-capabilities." }, "omni-version-manager": { "name": "Менеджер версий", @@ -12390,47 +12397,47 @@ "description": "Основные совместимые с OpenAI конечные точки инференса: генерация ответов чата, эмбеддинги, изображения, аудио (TTS/STT), модерация, переранжирование и Responses API. Основной интерфейс интеграции для ИИ-агентов." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Запуск сервера", "description": "Запуск, остановка и перезапуск сервера OmniRoute из CLI. Управление фоновым режимом (демоном), конфигурацией портов, автовосстановлением, интеграцией с системным треем и быстрым вызовом для открытия панели управления." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Состояние", "description": "Проверка работоспособности сервера, статуса компонентов и метрик в реальном времени из CLI. Запускайте `health`, `health components` и `health watch` для просмотра панели состояния предохранителей и статуса провайдеров в реальном времени." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Провайдеры", "description": "Управление подключениями провайдеров из CLI: просмотр списка доступных/настроенных провайдеров, добавление, тестирование, тестирование всех, валидация, ротация API-ключей и просмотр метрик по каждому провайдеру." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Ключи API", "description": "Создание, просмотр, ротация и отзыв API-ключей OmniRoute из CLI. Управление процессами OAuth для аутентификации провайдеров, а также проверка областей действия и сроков действия ключей." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: Модели", "description": "Запрос доступных моделей ИИ, просмотр списка псевдонимов моделей и всего каталога моделей из CLI. Фильтрация по провайдеру, поиск по возможностям и сопоставление вариантов имен моделей." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Чат", "description": "Отправка запросов чата, потоковая передача ответов и запуск интерактивного сеанса REPL из CLI. Поддержка всех провайдеров OmniRoute, комбинированной маршрутизации и настройки системного промпта." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: Маршрутизация и комбинации", "description": "Создание, просмотр, обновление и удаление комбинаций маршрутизации из CLI. Тестирование стратегий маршрутизации, проверка метрик комбинаций и интерактивная настройка резервных цепочек." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: Отказоустойчивость и квоты", "description": "Проверка и управление состояниями предохранителей (circuit-breaker), задержками подключений, лимитами квот и уровнями экспоненциальной задержки (backoff) из CLI. Сброс зависших провайдеров и настройка порогов отказоустойчивости." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: Сжатие", "description": "Настройка и тестирование сжатия промптов из CLI. Управление фильтрами RTK, правилами Caveman, режимами каскадного сжатия и предварительный просмотр результатов сжатия на реальных промптах." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: Контексты и сессии", "description": "Управление конфигурациями контекстной инженерии, наборами фильтров RTK и сессиями диалогов из CLI. Применение настроек ретрансляции контекста и проверка активных конвейерных линий контекста." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: Стоимость и использование", "description": "Просмотр детализации расходов, использования токенов и журналов вызовов из CLI. Фильтрация по провайдеру, модели или диапазону дат. Экспорт отчетов об использовании и проверка расходов по каждому подключению." }, "cli-mcp": { @@ -12438,23 +12445,23 @@ "description": "Проверка статуса MCP-сервера, просмотр списка зарегистрированных инструментов и областей доступа, запуск вызовов инструментов и управление журналами аудита MCP из CLI." }, "cli-a2a": { - "name": "CLI: A2A Protocol", + "name": "CLI: Протокол A2A", "description": "Взаимодействие с сервером OmniRoute A2A из CLI. Отправка задач, проверка истории выполнения навыков и интерактивное тестирование протокола взаимодействия агентов JSON-RPC 2.0." }, "cli-tunnel": { - "name": "CLI: Tunnels", + "name": "CLI: Туннели", "description": "Запуск и остановка туннельных подключений (ngrok, Cloudflare, пользовательские) из CLI. Проверка URL-адресов активных туннелей, настройка аутентификации и тестирование внешней доступности." }, "cli-backup-sync": { - "name": "CLI: Backup & Sync", + "name": "CLI: Резервное копирование и синхронизация", "description": "Резервное копирование и восстановление данных OmniRoute из CLI. Запуск создания инкрементных снимков состояния, синхронизация с облачным хранилищем, управление расписанием резервного копирования и восстановление из архивных файлов." }, "cli-policy-audit": { - "name": "CLI: Policy & Audit", + "name": "CLI: Политики и аудит", "description": "Проверка журналов аудита, управление политиками доступа, просмотр данных телеметрии и истории запросов из CLI. Фильтрация по типу события, пользователю или диапазону времени для рабочих процессов комплаенса." }, "cli-batches": { - "name": "CLI: Batches & Files", + "name": "CLI: Пакеты и файлы", "description": "Отправляйте пакетные задачи инференса и отслеживайте их выполнение из CLI. Загружайте файлы и управляйте ими для пакетной обработки, получайте результаты и интегрируйте пакетные конвейеры с рабочими процессами CI/CD." }, "cli-eval": { @@ -12483,7 +12490,7 @@ } }, "pageTitle": "Навыки агента", - "pageSubtitle": "Teach your agent to operate OmniRoute — 23 API areas + 21 CLI families", + "pageSubtitle": "Научите своего агента работать с OmniRoute — 23 области API и 21 семейство CLI", "conceptCard": { "agent": { "title": "Навыки агента — Исходящие", @@ -12516,7 +12523,7 @@ "storage": { "label": "Хранилище", "agent": "Динамический каталог (/api/agent-skills) → SKILL.md на GitHub", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / локально)" }, "tagline": { "label": "Слоган", @@ -12532,10 +12539,10 @@ }, "categoryApi": "API", "categoryCli": "CLI", - "categoryConfig": "Config", + "categoryConfig": "Конфигурация", "filterAll": "Все", "coverageLabel": "Покрытие", - "mcpUrl": "MCP URL", + "mcpUrl": "URL MCP", "a2aLink": "A2A", "mcpPrompt": "Добавьте эту конечную точку MCP к вашему агенту, чтобы предоставить ему 37 инструментов OmniRoute.", "a2aPrompt": "Зарегистрируйте эту карту агента в вашем оркестраторе, чтобы включить делегирование задач A2A.", @@ -12575,7 +12582,7 @@ "colScore": "Оценка", "colAvgScore": "Средний балл", "colModels": "Модели", - "colType": "Type", + "colType": "Тип", "filterConfiguredOnly": "Только настроенные", "filterAvailableOnly": "Только доступные", "filterAvailableOnlyHelp": "Скрыть провайдеров, все подключения к которым ограничены по частоте запросов или исчерпали квоту.", @@ -12589,14 +12596,14 @@ "typeApikey": "API-ключ", "sortTypeFirst": "Сначала самые простые", "sortTypeFirstHelp": "Группировать по сложности регистрации (Без регистрации → Вход через OAuth → API-ключ), сохраняя порядок качества внутри каждой группы", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Сначала самые надёжные", + "sortByReliabilityHelp": "Упорядочить провайдеров по доле успешных вызовов за выбранный период. Провайдеры, для которых недостаточно вызовов для определения показателя, сохраняют порядок по оценке и отображаются ниже провайдеров с измеренными показателями.", "typeLegend": "Без регистрации = без настройки · Вход через OAuth = вход со своим аккаунтом · API-ключ = использование своего ключа или бесплатного тарифа провайдера", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Надёжность", + "colReliabilityHelp": "Доля вызовов, на которые этот провайдер фактически ответил за последние 24 часа. Прочерк означает, что он обработал слишком мало трафика для определения показателя.", + "reliabilitySample": "Успешно выполнено вызовов: {successes} из {requests} за последние {hours} ч", + "reliabilityTooFew": "Всего {requests} вызовов за последние {hours} ч — слишком мало для определения показателя", + "reliabilityNoTraffic": "За последние 24 ч вызовов не зарегистрировано" }, "discovery": { "title": "Поиск провайдеров", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Сторонник Radar", + "description": "Проверен действующий канал сторонника OmniRoute Radar", + "criteria": "Проверить подписанный действующий канал сторонника Radar." }, "first-token": { "name": "Первый токен", @@ -12856,7 +12863,7 @@ "danger": "Опасность", "requiresRestart": "Требуется перезапуск", "source": "Источник", - "ccDiscoveryAliasesEnvWarning": "Active via environment variable (EXPOSE_CC_DISCOVERY_ALIASES) — this overrides any dashboard toggle below.", + "ccDiscoveryAliasesEnvWarning": "Активировано через переменную среды (EXPOSE_CC_DISCOVERY_ALIASES) — она переопределяет любой переключатель ниже на панели управления.", "resetFlag": "Сбросить {label} до значения по умолчанию", "reset": "Сбросить", "loadFailed": "Не удалось загрузить флаги функций", @@ -12868,168 +12875,172 @@ "resetOverridesFailed": "Не удалось сбросить переопределения", "restartRequiredCount": "{count, plural, one {# изменение требует} few {# изменения требуют} many {# изменений требуют} other {# изменения требуют}} перезапуска сервера для применения.", "restartRequiredDescription": "Эти флаги применяются только после перезагрузки процесса. Перезапустите сейчас или продолжите редактирование — ожидающие флаги останутся в очереди до вашего подтверждения.", - "restartServer": "Restart Server", - "cancel": "Cancel", - "restarting": "Restarting…", - "confirmRestart": "Confirm Restart", - "restartViewDescription": "These flags only take effect after the server restarts. Toggle them like any other flag — the change is persisted immediately, but the new value is only read at process startup. Use the Restart Server banner above to apply.", - "retry": "Retry", - "noSearchResults": "No flags match your search", - "resetAllOverrides": "Reset All Overrides", - "confirmResetOverrides": "Reset all {count} DB override(s)?", - "resetting": "Resetting...", - "confirmReset": "Confirm Reset", + "restartServer": "Перезапустить сервер", + "cancel": "Отмена", + "restarting": "Перезапуск…", + "confirmRestart": "Подтвердить перезапуск", + "restartViewDescription": "Эти флаги вступают в силу только после перезапуска сервера. Переключайте их так же, как и любые другие флаги: изменение сохраняется сразу, но новое значение считывается только при запуске процесса. Чтобы применить его, используйте баннер Перезапустить сервер выше.", + "retry": "Повторить", + "noSearchResults": "Нет флагов, соответствующих вашему запросу", + "resetAllOverrides": "Сбросить все переопределения", + "confirmResetOverrides": "Сбросить все переопределения БД ({count})?", + "resetting": "Сброс...", + "confirmReset": "Подтвердить сброс", "enumValues": { - "off": "Off", - "warn": "Warn", - "block": "Block", - "redact": "Redact", - "disabled": "Disabled", - "dual": "Dual", - "alias": "Alias", - "canonical": "Canonical" + "off": "Выкл.", + "warn": "Предупреждать", + "block": "Блокировать", + "redact": "Редактировать", + "disabled": "Отключено", + "dual": "Двойной", + "alias": "Псевдоним", + "canonical": "Канонический" }, "definitions": { "REQUIRE_API_KEY": { - "description": "Require an API key for all incoming requests." + "description": "Требовать API-ключ для всех входящих запросов." }, "INPUT_SANITIZER_ENABLED": { - "description": "Enable input sanitization for all requests." + "description": "Включить очистку входных данных для всех запросов." }, "INJECTION_GUARD_MODE": { - "description": "Set the prompt-injection guard mode." + "description": "Задать режим защиты от внедрения инструкций в промпт." }, "PII_REDACTION_ENABLED": { - "description": "Redact personally identifiable information from requests." + "description": "Удалять персональные данные из запросов." }, "PII_RESPONSE_SANITIZATION": { - "description": "Sanitize personally identifiable information in provider responses." + "description": "Очищать персональные данные в ответах провайдеров." }, "PII_RESPONSE_SANITIZATION_MODE": { - "description": "Choose how response PII is handled: redact replaces it, warn only logs it, block rejects the response, and off disables sanitization." + "description": "Выберите способ обработки персональных данных в ответах: «Редактировать» заменяет их, «Предупреждать» только записывает событие в журнал, «Блокировать» отклоняет ответ, а «Выкл.» отключает очистку." }, "OUTBOUND_SSRF_GUARD_ENABLED": { - "description": "Block outbound requests to private or internal IP ranges." + "description": "Блокировать исходящие запросы к частным или внутренним диапазонам IP-адресов." }, "ALLOW_API_KEY_REVEAL": { - "description": "Allow authenticated dashboard users to reveal stored API keys instead of seeing masked values only." + "description": "Разрешить аутентифицированным пользователям панели управления просматривать сохранённые API-ключи вместо отображения только замаскированных значений." }, "ENABLE_TLS_FINGERPRINT": { - "description": "Enable TLS fingerprint stealth mode." + "description": "Включить скрытый режим цифрового отпечатка TLS." }, "ONEPROXY_ENABLED": { - "description": "Enable request proxying through 1proxy." + "description": "Включить проксирование запросов через 1proxy." }, "PROXY_AUTO_SELECT_ENABLED": { - "description": "When no proxy is assigned to a connection, automatically select the first working registry proxy. Off by default because otherwise one registry proxy becomes a global fallback for all traffic (#3332)." + "description": "Если прокси-сервер не назначен подключению, автоматически выбирать первый работающий прокси-сервер из реестра. По умолчанию отключено, поскольку иначе один прокси-сервер из реестра становится глобальным резервным вариантом для всего трафика (#3332)." }, "OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK": { - "description": "Allow OAuth and provider-validation flows to bypass a pinned proxy when proxy reachability checks fail. Off by default because this can change the account egress IP." + "description": "Разрешить потокам OAuth и проверки провайдеров обходить закреплённый прокси-сервер, если проверки его доступности завершаются неудачно. По умолчанию отключено, поскольку это может изменить исходящий IP-адрес учётной записи." }, "MITM_DISABLE_TLS_VERIFY": { - "description": "Disable TLS certificate verification for the MITM proxy." + "description": "Отключить проверку сертификата TLS для MITM-прокси." }, "OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS": { - "description": "Allow provider URLs that point to private or internal networks." + "description": "Разрешить URL-адреса провайдеров, указывающие на частные или внутренние сети." }, "OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS": { - "description": "Allow providers on localhost, LAN, and private IP ranges. This is required for local OpenAI-compatible models and enabled by default. Cloud-metadata endpoints such as 169.254.169.254 remain blocked." + "description": "Разрешить провайдеров на localhost, в локальной сети и в частных диапазонах IP-адресов. Это необходимо для локальных моделей, совместимых с OpenAI, и включено по умолчанию. Конечные точки облачных метаданных, такие как 169.254.169.254, остаются заблокированными." }, "ENABLE_CC_COMPATIBLE_PROVIDER": { - "description": "Enable Claude Code-compatible provider mode." + "description": "Включить режим провайдера, совместимый с Claude Code." }, "TOOL_POLICY_MODE": { - "description": "Set the tool-use policy enforcement mode." + "description": "Задать режим принудительного применения политики использования инструментов." }, "RATE_LIMIT_AUTO_ENABLE": { - "description": "Automatically enable rate limiting based on usage patterns." + "description": "Автоматически включать ограничение частоты запросов на основе характера использования." }, "ALLOW_MULTI_CONNECTIONS_PER_COMPAT_NODE": { - "description": "Allow multiple connections for each compatibility node." + "description": "Разрешить несколько подключений для каждого узла совместимости." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Отключить проверки контекстного окна", + "description": "Пропускать локальную проверку OmniRoute размера контекстного окна и максимального количества входных токенов для прямых запросов к одной модели. Вышестоящие провайдеры по-прежнему применяют свои фактические ограничения. Сжатие промптов и ограничения количества выходных токенов остаются активными." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { - "description": "Remove internal commentary-phase output items from Responses API passthrough streams before forwarding them to clients. Disable this flag to receive raw upstream commentary." + "description": "Удалять внутренние элементы вывода фазы комментариев из сквозных потоков Responses API перед их перенаправлением клиентам. Отключите этот флаг, чтобы получать необработанные комментарии от вышестоящего сервиса." }, "OMNIROUTE_MCP_ENFORCE_SCOPES": { - "description": "Enforce scope restrictions for MCP tool access." + "description": "Принудительно применять ограничения областей доступа к инструментам MCP." }, "OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS": { - "description": "Compress MCP tool descriptions to reduce token usage." + "description": "Сжимать описания инструментов MCP для сокращения расхода токенов." }, "OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS": { - "description": "Enable background-task processing at runtime." + "description": "Включить обработку фоновых задач во время выполнения." }, "OMNIROUTE_DISABLE_BACKGROUND_SERVICES": { - "description": "Disable all background services, including quota refresh and synchronization." + "description": "Отключить все фоновые службы, включая обновление квот и синхронизацию." }, "OMNIROUTE_RTK_TRUST_PROJECT_FILTERS": { - "description": "Trust project-level RTK filters without validation." + "description": "Доверять фильтрам RTK уровня проекта без проверки." }, "OMNIROUTE_ENABLE_LIVE_WS": { - "description": "Start the real-time dashboard WebSocket server on import at loopback port 20132. Set the flag to 0 or false to disable it. LAN exposure also requires LIVE_WS_HOST=0.0.0.0 and LIVE_WS_ALLOWED_ORIGINS." + "description": "Запускать сервер WebSocket панели мониторинга в реальном времени при импорте на порту обратной петли 20132. Установите для флага значение 0 или false, чтобы отключить его. Для доступа из локальной сети также требуются LIVE_WS_HOST=0.0.0.0 и LIVE_WS_ALLOWED_ORIGINS." }, "OMNIROUTE_CODEX_WS_ENABLED": { - "description": "Allow Codex to use Responses over WebSocket. When disabled, Codex falls back to HTTP Responses." + "description": "Разрешить Codex использовать Responses через WebSocket. Если этот параметр отключён, Codex переключается на Responses через HTTP." }, "OMNIROUTE_EMERGENCY_FALLBACK": { - "description": "Route budget-exhausted requests to the emergency free fallback provider and model." + "description": "Направлять запросы с исчерпанным бюджетом к экстренному бесплатному резервному провайдеру и модели." }, "STREAM_RECOVERY_ENABLED": { - "description": "Retry truncated upstream SSE streams transparently before any response bytes reach the client." + "description": "Незаметно повторять усечённые вышестоящие потоки SSE до того, как клиент получит какие-либо байты ответа." }, "STREAM_RECOVERY_MIDSTREAM_ENABLED": { - "description": "Allow stream recovery to request the response again and stitch it after bytes have already reached the client." + "description": "Разрешить восстановлению потока повторно запрашивать ответ и объединять его после того, как клиент уже получил часть байтов." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Сделать продолжение прерванного потока безопасным для вызова инструмента: никогда не возобновлять прерванный поток после отправки вызова инструмента (ещё выполняющегося или уже завершённого) и останавливаться после одного пустого продолжения вместо использования всего лимита повторных попыток." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Однократно переключиться на соседнее подключение, если поток закрылся, не отправив ни одного полезного фрейма, а ограниченная повторная попытка на том же подключении исчерпана. Если подходящего соседнего подключения нет, возвращается исходная ошибка early-EOF. Выкл.: early-EOF остаётся окончательным после повторной попытки." }, "MODEL_CATALOG_INCLUDE_NAMES": { - "description": "Include display-friendly name fields in /v1/models responses. Disable this for clients that accept model IDs only." + "description": "Включать удобные для отображения поля имён в ответы /v1/models. Отключите этот параметр для клиентов, принимающих только идентификаторы моделей." }, "MODELS_CATALOG_PREFIX_MODE": { - "description": "Control model-ID prefixes in /v1/models: dual emits alias and canonical prefixes, alias emits short prefixes only, and canonical emits full provider IDs only." + "description": "Управлять префиксами идентификаторов моделей в /v1/models: dual возвращает псевдонимы и канонические префиксы, alias — только короткие префиксы, а canonical — только полные идентификаторы провайдеров." }, "ARENA_ELO_SYNC_ENABLED": { - "description": "Periodically synchronize Arena AI leaderboard ELO data for model-intelligence rankings." + "description": "Периодически синхронизировать данные ELO из рейтинга Arena AI для ранжирования моделей." }, "CLI_COMPAT_ALL": { - "description": "Enable compatibility mode for all CLI clients." + "description": "Включить режим совместимости для всех CLI-клиентов." }, "MODEL_ALIAS_COMPAT_ENABLED": { - "description": "Enable the model-alias compatibility layer." + "description": "Включить слой совместимости псевдонимов моделей." }, "PRICING_SYNC_ENABLED": { - "description": "Synchronize pricing data automatically. The PRICING_SYNC_ENABLED environment variable must also be true." + "description": "Автоматически синхронизировать данные о ценах. Переменная среды PRICING_SYNC_ENABLED также должна иметь значение true." }, "OMNIROUTE_AUTO_SYNC_CODEX_PROFILES": { - "description": "After provider-model synchronization, regenerate ~/.codex/*.config.toml profiles from the live catalog. This never changes the active or default Codex configuration and is off by default." + "description": "После синхронизации моделей провайдеров заново создавать профили ~/.codex/*.config.toml из актуального каталога. Это никогда не изменяет активную конфигурацию или конфигурацию Codex по умолчанию и по умолчанию отключено." }, "OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES": { - "description": "After provider-model synchronization, regenerate ~/.claude/profiles/''/settings.json profiles from the live catalog. This never changes the active or default Claude configuration and is off by default." + "description": "После синхронизации моделей провайдеров заново создавать профили ~/.claude/profiles/''/settings.json из актуального каталога. Это никогда не изменяет активную конфигурацию или конфигурацию Claude по умолчанию и по умолчанию отключено." }, "OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK": { - "description": "Disable the local instance health-check endpoint." + "description": "Отключить локальную конечную точку проверки работоспособности экземпляра." }, "OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK": { - "description": "Disable the token-validation health check." + "description": "Отключить проверку работоспособности валидации токенов." }, "SKILLS_SANDBOX_NETWORK_ENABLED": { - "description": "Enable network access in the skills sandbox." + "description": "Включить доступ к сети в песочнице навыков." + }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Серверный цикл инструментов", + "description": "Продолжать нестриминговые серверные вызовы инструментов, пока модель не вернёт ответ, пригодный для использования клиентом." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Источник Retry-After", + "description": "В агрегированных ответах 429/503 о недоступности не указывать Retry-After, если конкретное будущее время повторной попытки неизвестно, вместо отправки искусственного значения 1 с; добавить error.retry_after_provenance и учитывать текстовые подсказки о повторной попытке в путях исчерпания комбинации." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Остановки инфраструктуры с защищённым приоритетом как 502", + "description": "Отвечать кодом 502 вместо 503, когда приоритетная цель с резервным переключением только при исчерпании квоты останавливает комбинацию по причине, которая заведомо не связана с квотой: разомкнутый автоматический выключатель провайдера или пропуск из-за прогнозируемой задержки." } } }, @@ -13046,28 +13057,28 @@ } }, "comboControl": { - "title": "Combo Control Center", - "unavailable": "Combo Control Center unavailable", - "backToCombos": "Back to Combos", - "loadFailed": "Failed to load combo control center", + "title": "Центр управления комбо", + "unavailable": "Центр управления комбо недоступен", + "backToCombos": "Назад к комбо", + "loadFailed": "Не удалось загрузить центр управления комбо", "state": { - "healthy": "Healthy", - "warning": "Needs attention", - "critical": "Critical", - "idle": "Idle" + "healthy": "Исправно", + "warning": "Требует внимания", + "critical": "Критическое состояние", + "idle": "Неактивно" }, - "active": "Active", - "disabled": "Disabled", - "description": "Central read-only view for routing behavior, health, quota, runtime metrics and recent decisions for .", - "refresh": "Refresh", - "editInCombos": "Edit in Combos", - "requests": "Requests", - "success": "Success", - "latency": "Latency", - "quota": "Quota", - "rangeWindow": "{range} window", - "runtimeHealthBlend": "runtime/health blend", - "averageResponseTime": "average response time", + "active": "Активно", + "disabled": "Отключено", + "description": "Централизованное представление только для чтения: поведение маршрутизации, состояние, квота, метрики выполнения и последние решения для .", + "refresh": "Обновить", + "editInCombos": "Редактировать в разделе «Комбо»", + "requests": "Запросы", + "success": "Успешность", + "latency": "Задержка", + "quota": "Квота", + "rangeWindow": "Окно: {range}", + "runtimeHealthBlend": "сочетание показателей выполнения и состояния", + "averageResponseTime": "среднее время ответа", "worstQuota": "Наихудшая квота", "providerAccountTelemetry": "телеметрия провайдера/аккаунта", "overview": "Обзор", @@ -13152,7 +13163,7 @@ "quotaUsed": "Использовано квоты", "estimatedFullQuota": "Прим. 100%", "rows": "Строки", - "window": "Window", + "window": "Окно", "unknown": "неизвестно", "fromRecordedReset": "С момента записанного сброса {quota}", "fromObservedReset": "С момента наблюдаемого сброса {quota}", @@ -13171,7 +13182,7 @@ "segmentHint": "Каждый сегмент = один бесплатный пул · дедупликация пулов, честный подсчет (без завышенных лимитов частоты запросов).", "boost": "Разблокируйте еще ~{tokens}/мес. с помощью разового пополнения OpenRouter на $10 (50 → 1000 запр./день)", "uncapped": "Навсегда бесплатно, без опубликованного лимита (с ограничением частоты) — реальный доступ, не учитывается в заголовке:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "Ещё ~{tokens}/мес. после региональной проверки личности (например, проверки настоящего имени в материковом Китае) — реальная квота, не включённая в заявленный объём:", "tosRestricted": "{count, plural, one {# модель помечена как ограниченная Условиями использования} few {# модели помечены как ограниченные Условиями использования} many {# моделей помечено как ограниченные Условиями использования} other {# моделей помечено как ограниченные Условиями использования}} — решать вам", "provider": "Провайдер", "model": "Модель", @@ -13252,7 +13263,7 @@ "action": { "resetProviderBreaker": "Сбросить предохранитель провайдера", "clearConnectionCooldown": "Сбросить кулдаун подключения", - "disableConnection": "Disable this connection", + "disableConnection": "Отключить это подключение", "clearStaleError": "Сбросить устаревшее состояние ошибки", "reactivateConnection": "Повторно активировать подключение", "clearModelLockout": "Сбросить блокировку модели" @@ -13270,80 +13281,80 @@ "viewFullHistory": "Посмотреть полную историю на GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "Политики маршрутизации рассуждений", + "apiKeyTitle": "Маршрутизация рассуждений для этого API-ключа", + "subtitle": "Перенаправляйте запросы на другие модели и изменяйте интенсивность рассуждений без необходимости поддержки со стороны клиента. Если ни одно правило не совпадает, запросы остаются без изменений.", + "loadError": "Не удалось загрузить правила рассуждений.", + "saveError": "Правило недействительно или его не удалось сохранить.", + "saved": "Правило рассуждений сохранено.", + "deleteConfirm": "Удалить это правило рассуждений?", + "deleteError": "Не удалось удалить правило рассуждений.", + "empty": "Подходящие правила рассуждений не настроены.", + "all": "Все", + "any": "Любой", + "enabled": "Включено", + "disabled": "Отключено", + "filterSearch": "Поиск правил", + "filterScope": "Фильтр по области действия", + "filterStatus": "Фильтр по статусу", + "allModels": "все модели", + "keepModel": "Сохранить модель", + "otherModel": "Другая модель", + "combo": "Комбинация", + "priorityShort": "приоритет {value}", + "toggleAria": "Включить {name}", + "edit": "Изменить", + "delete": "Удалить", + "name": "Название", + "description": "Описание", + "scopeLabel": "Область действия", + "apiKey": "API-ключ", + "sourceCombo": "Исходная комбинация", + "connection": "Подключение", + "sourceModel": "Исходная модель или шаблон", + "sourceModelOptional": "Пусто = все модели", + "sourceModelExample": "например, gpt-5*", + "sourceEffort": "Исходная интенсивность", + "missing": "Не указано", + "signalOnly": "Недискретный сигнал рассуждений", + "requestTags": "Теги запроса", + "requestTagsExample": "кодинг, внутренний", + "tagMode": "Сопоставление тегов", + "effortMode": "Режим интенсивности", + "targetEffort": "Целевой уровень усилий", + "routingTarget": "Цель маршрутизации", + "targetModel": "Целевая модель", + "targetCombo": "Целевая комбинация", + "budgetAction": "Бюджет рассуждений", + "budgetTokens": "Токены бюджета", + "priority": "Приоритет", + "saveChanges": "Сохранить изменения", + "add": "Добавить правило", + "cancel": "Отмена", + "simulateTitle": "Симулировать правило", + "model": "Модель", + "effort": "Уровень усилий", + "transport": "Транспорт", + "simulate": "Симулировать без обращения к вышестоящему серверу", + "extendedComboWarning": "Поддержка Max/Ultra проверяется отдельно для каждой целевой комбинации во время маршрутизации.", + "extendedUnknownWarning": "Введите целевую модель, чтобы проверить поддержку Max/Ultra.", + "extendedUnsupportedWarning": "Насколько известно, Max/Ultra поддерживается только подходящими моделями Codex GPT-5.6. Неизвестные пользовательские модели принимаются сервером с предупреждением.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "Глобально", + "apiKey": "Ключ API", + "combo": "Комбинация", + "model": "Модель", + "connection": "Подключение" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Наследовать от клиента", + "default": "Использовать значение по умолчанию", + "force": "Принудительно задать" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Сохранить", + "remove": "Удалить", + "set": "Задать фиксированное значение" } }, "chaosConfig": { @@ -13425,91 +13436,91 @@ "tierCommunity": "Сообщество (задержка 30 дней)", "activateTitle": "Активировать Радар", "activateDescription": "Радар обогащает бесплатный каталог моделей данными, собранными сообществом — обновленная доступность моделей, квоты и руководства по настройке.", + "accessScaleTitle": "Ознакомьтесь с условиями доступа к Radar перед активацией", + "accessScaleIntro": "Radar не взаимодействует с сетью, пока вы не дадите согласие. Выберите доступ Community или активируйте личный ключ сторонника после ознакомления с этими правилами.", + "accessCommunityRule": "Community — ключ не требуется: полный каталог с задержкой в 30 дней.", + "accessSingleUseRule": "Звезда + подписка — после того как GitHub OAuth подтвердит оба действия, ваша учётная запись GitHub получит один доступ к актуальному каталогу; затем уровень доступа вернётся к Community. Этот разовый доступ нельзя предоставить повторно для данной учётной записи.", + "accessContributorRule": "Участники — объединённые PR, коммиты и строки кода влияют только на порядок в еженедельном рейтинге. Участники из топ-10 получают 365 дней доступа, занявшие места с 11-го по 100-е — 90 дней, а участники вне топ-100 не получают доступ независимо от количества PR. Выход из рейтинга никогда не сокращает уже предоставленный срок.", + "accessSupporterRule": "Сторонники — единоразовые покупки предоставляют доступ на 6 месяцев, 1 год или пожизненно без автоматического продления. Сроки от покупок, пожертвований, участия и предоставленного вручную доступа суммируются; пожизненный доступ всегда имеет приоритет.", + "accessUseTitle": "Личное использование, восстановление и проверка", + "accessInstallationRule": "Персональная лицензия — используйте ключ одновременно только в одной активной установке. OmniRoute не создаёт цифровой отпечаток оборудования. При восстановлении утерянный ключ отзывается и заменяется без изменения срока его действия.", + "accessAbuseRule": "Проверка на злоупотребления — появление 4-го уникального IP-адреса за 24 часа лишь создаёт отметку для ручной проверки; ключ никогда не блокируется и не отзывается автоматически.", + "accessOffersRule": "Актуальные предложения отбираются вручную и могут изменяться или прекращать действие.", + "privacyTitle": "Какими данными обменивается Radar", + "privacyDownloadsRule": "Загрузки — ваша установка получает каталог и метаданные реферальных программ с криптографической подписью; действующий активный ключ также открывает доступ к подписанным предложениям и Intel.", + "privacySendsRule": "Отправка — при серверной синхронизации ключ сторонника отправляется как Bearer-токен, а инфраструктура HTTPS получает IP-адрес подключения. Для учёта запросов к фиду ни одно из этих значений не хранится в исходном виде: сохраняются хеши ключей, агрегированные данные об использовании и ежедневно меняющийся усечённый HMAC IP-адреса для расследования злоупотреблений.", + "privacyNeverRule": "Никогда не собираются — промпты, ответы, разговоры, учётные данные провайдеров, трафик моделей, время бесперебойной работы, задержка и локальная конфигурация провайдеров никогда не отправляются в Radar.", "activateButton": "Активировать", "activating": "Активация...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", + "keySectionTitle": "Уже есть ключ сторонника?", + "keyInvalidFormatError": "Недопустимый формат ключа. Он должен начинаться с \"omr_\", после чего должны следовать 40 шестнадцатеричных символов.", + "activateWithKeyButton": "Активировать поддержку", + "changeKeyButton": "Изменить ключ", + "claimSectionTitle": "Ключа сторонника ещё нет?", + "contributorButton": "Я контрибьютор", + "contributorHint": "GitHub OAuth проверяет текущий недельный рейтинг: участники из первой десятки получают 365 дней, а занявшие места с 11-го по 100-е — 90 дней. Само по себе количество PR никогда не предоставляет доступ за пределами первой сотни.", + "supporterButton": "Поддержать проект", "supporterHint": "Support OmniRoute to get a supporter key with the live catalog and extra perks.", "colProvider": "Провайдер", "colModel": "Модель", "colQuota": "Квота", + "colLimits": "Ограничения частоты запросов", + "trainsOnPrompts": "Обучается на промптах", + "trainsOnPromptsHelp": "В условиях этого провайдера указано, что он может обучать модели на отправляемых вами промптах. Для моделей без этого значка либо заявлено обратное, либо это не задокументировано — отсутствие такого заявления ничего не гарантирует.", + "limitsUnknownHelp": "Ограничения указаны только по данным фида Radar; опубликованные ограничения для этой записи отсутствуют", + "contextUnknownHelp": "Размер контекстного окна для этой записи неизвестен", + "capabilityUnknownHelp": "Возможность не указана в фиде", "colContext": "Контекст", "colCapabilities": "Возможности", "colTos": "Риск ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "новый", "setupGuide": "Руководство по настройке", "disabledByFeed": "Отключено лентой Радар", "capTools": "Инструменты", "capVision": "Видение", "capThinking": "Мыслительный процесс", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Каталог", + "freeCreditsTab": "Бесплатные кредиты", + "freeCreditsSubtitle": "Реферальные ссылки от провайдеров, отслеживаемых Radar: их использование не требует дополнительных расходов и помогает поддерживать OmniRoute.", + "fixedLinksEmpty": "Реферальных ссылок пока нет. Синхронизируйте Radar, чтобы проверить наличие обновлений.", + "requiredActionLabel": "Что нужно сделать:", + "claimButton": "Получить кредиты", + "campaignsTitle": "Временные кампании", + "campaignsEmpty": "Сейчас активных кампаний нет — загляните позже.", + "campaignsUpsellCommunity": "Временные кампании — дополнительное преимущество для сторонников. Все постоянные ссылки на этой странице остаются бесплатными для всех.", + "campaignsValidUntil": "Действительно до {date}", + "colActions": "Действия", + "localBadge": "локально", + "editModel": "Изменить", + "saveModel": "Сохранить", + "cancelEdit": "Отмена", + "resetModel": "Сбросить локальные изменения", + "hideModel": "Скрыть", + "restoreModel": "Восстановить", + "hiddenModelsTitle": "Скрытые модели", + "modelDisplayName": "Локальное отображаемое имя", + "modelEnabled": "Включено локально", + "localStateSaveFailed": "Не удалось сохранить локальные настройки Radar", + "guidedCombos": "Подобранные комбинации", + "offers": "Предложения", + "intel": "Аналитика" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Комбинации от Radar", + "subtitle": "Создавайте приоритетные цепочки резервирования из равноценных бесплатных моделей, отобранных Radar.", + "backToRadar": "Назад к Radar", + "loading": "Загрузка предложений комбинаций...", + "familyLabel": "Семейство моделей", + "modelsLabel": "Порядок приоритета", + "strategyReason": "Сначала используется самый большой регулярно возобновляемый бесплатный лимит, а затем запросы переключаются между активными подключениями к провайдерам.", + "generateButton": "Создать комбинацию", + "generating": "Создание...", + "alreadyCreated": "Уже создано", + "created": "Комбинация создана", + "noSuggestions": "Сейчас ни одно подходящее семейство моделей не имеет активных подключений как минимум к двум провайдерам.", + "catalogRequired": "Сначала синхронизируйте каталог Radar, чтобы загрузить отобранные семейства моделей.", + "loadFailed": "Не удалось загрузить предложения комбинаций от Radar.", + "createFailed": "Не удалось создать комбинацию. Проверьте подключения к провайдерам и повторите попытку." }, "radarSetupPage": { "title": "Настройка провайдера", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "Устойчивость Соединения", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Подключения восстанавливаются автоматически", + "reassuranceDetail": "Обычно никаких действий не требуется. После сбоев OmniRoute временно приостанавливает подключение, а затем безопасно повторяет попытку.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Запросы можно отправлять", + "coolingDown": "Скоро будет новая попытка", + "lockedOut": "Требует вашего внимания" }, "table": { "status": "Статус", @@ -13551,11 +13562,11 @@ "connectionId": "Соединение", "authType": "Аутентификация", "backoffLevel": "Задержка", - "cooldown": "Cooldown", + "cooldown": "Период ожидания", "lastError": "Последняя Ошибка", "lockouts": "Блокировки", "healthy": "Исправно", - "coolingDown": "Cooldown", + "coolingDown": "Период ожидания", "circuitOpen": "Цепь Разомкнута", "recovering": "Восстановление", "degraded": "Деградация", @@ -13589,7 +13600,7 @@ "detail": { "title": "Детали Соединения", "metadata": "Метаданные", - "cooldown": "Cooldown", + "cooldown": "Период ожидания", "lastError": "Последняя Ошибка", "breaker": "Автомат Защиты", "lockouts": "Блокировки Модели", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Отклонять запросы перед отправкой, когда целевая модель не имеет необходимых возможностей (визуализация, инструменты, структурированный вывод, контекстное окно). Защищает прямые запросы от единственного поставщика, которые обходят фильтр совместимости комбинированного слоя.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Пропускать локальную проверку размера контекстного окна и максимального количества входных токенов в OmniRoute для прямых запросов к одной модели. Провайдеры по-прежнему применяют свои фактические ограничения. Сжатие промпта и ограничения количества выходных токенов остаются активными.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Статистика поиска и недавние поисковые запросы учитывают только провайдеров, с которыми всё ещё установлено активное соединение (провайдеры без ключей, такие как duckduckgo-free, учитываются всегда). При выборе «Выкл.» сохраняются все оставшиеся строки поиска с идентификатором провайдера.", "publicSystem": { "notFound": { "title": "Страница не найдена", @@ -14070,11 +14081,11 @@ "actionApprove": "Утвердить план", "actionCancel": "Отмена", "actionSeeInGraph": "Посмотреть на графе", + "actionRepeat": "Повторить", "actionDone": "Действие применено", "actionFailed": "Действие не удалось: {error}", "detailFailed": "Не удалось загрузить детали: {error}", "mirroredInA2A": "Отражено в A2A", - "actionRepeat": "Повторить", "repeatConfirm": "Нажмите ещё раз для подтверждения", "repeatDone": "Создан новый запуск", "repeatUnavailable": "Исходные данные недоступны" @@ -14088,57 +14099,57 @@ "networkError": "Ошибка сети — не удалось обновить настройки экспозиции провайдера" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Предложения для пользователей", + "subtitle": "Официальные скидки, кредиты, пробные периоды и проверенные партнёрские преимущества от Radar.", + "backToRadar": "Назад к Radar", + "loading": "Загрузка предложений...", + "refresh": "Обновить предложения", + "refreshing": "Обновление...", + "loadFailed": "Не удалось обновить предложения. Сохранена последняя проверенная локальная копия.", + "empty": "Сейчас нет активных предложений.", + "keyRequiredTitle": "Требуется ключ сторонника", + "keyRequiredDescription": "Предложения — это действующее преимущество Radar. Добавьте существующий ключ сторонника на экране Radar, подтвердите свой статус участника проекта или поддержите проект, чтобы получить ключ.", + "contributorButton": "Я участник проекта", + "supporterButton": "Поддержать проект", + "partnerBadge": "Партнёр", + "officialBadge": "Официальное", + "conditionsLabel": "Условия:", + "validUntil": "Действительно до {date}", + "noExpiry": "Срок действия не объявлен", + "openOffer": "Посмотреть предложение", + "trialDays": "{days, plural, one {# день} few {# дня} many {# дней} other {# дня}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Аналитика Radar", + "subtitle": "Собственные рейтинги ELO от Radar и фактические изменения каталога.", + "backToRadar": "Назад к Radar", + "loading": "Загрузка аналитики...", + "refresh": "Обновить аналитику", + "syncing": "Обновление...", + "loadFailed": "Не удалось обновить аналитику. Сохранён последний проверенный локальный кеш.", + "empty": "Проверенный снимок аналитики пока недоступен.", + "supporterBadge": "Сторонник Radar", + "methodology": "Методология", + "eloMethod": "ELO, начальное значение {initial}, K={factor}", + "freshness": "Актуальность каталога", + "ageDays": "{days, plural, one {# день назад} few {# дня назад} many {# дней назад} other {# дня назад}}", + "trend": "Динамика каталога", + "modelDelta": "Моделей: {current}, +{added} / -{removed}", + "ranking": "Рейтинг моделей", + "noRankings": "Подтверждённых сравнений пока нет.", + "model": "Модель", + "category": "Категория", + "rating": "Рейтинг", + "matches": "Сравнения", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Свежий", + "aging": "Устаревающий", + "stale": "Устаревший" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Растёт", + "stable": "Стабилен", + "shrinking": "Сокращается" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Запрос превышает контекстное окно провайдера" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference — друг проекта OmniRoute с открытым исходным кодом", + "description": "Шлюз с ранжированием по стоимости, предоставляющий десятки передовых моделей через единую конечную точку, совместимую с OpenAI, и направляющий каждый запрос самому дешёвому подходящему провайдеру по цене не выше прейскурантной.", + "cta": "Получить API-ключ", + "partnerLinkNote": "Партнёрская ссылка", + "dismissAriaLabel": "Закрыть" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Отключить создание вариантов уровней рассуждения (например, -low, -medium, -high) в каталоге /v1/models." } diff --git a/src/i18n/messages/si.json b/src/i18n/messages/si.json index b650ff5fef..24ed7aaf9e 100644 --- a/src/i18n/messages/si.json +++ b/src/i18n/messages/si.json @@ -902,7 +902,7 @@ "batchListTableStatus": "තත්ත්වය", "batchListTableId": "ID", "batchListTableEndpoint": "අන්ත ලක්ෂ්යය", - "batchListTableModel": "Model", + "batchListTableModel": "මාදිලිය", "batchListTableProgress": "ප්රගතිය", "batchListTableCreated": "සාදන ලදී", "batchListTableExpires": "කල් ඉකුත් වන්නේ", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Claude Code ද්වාරයේ මාදිලි සොයාගැනීමේදී Claude නොවන මාදිලි ලැයිස්තුගත කිරීම සඳහා /v1/models හි claude/<provider>/<model> කැඩපත් හැඳුනුම් ප්රචාරය කරන්න. අවවාදයයි: ගෝලීයව සබල කළ විට සියලු සේවාලාභීන් සඳහා නාමාවලි ඇතුළත් කිරීම් දෙගුණ වේ.", "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> ද්වාර අන්වර්ථ සඳහා ප්රධාන ස්විචය. සක්රියයි (පෙරනිමිය): /v1/models මඟින් සුදුසුකම් ඇති, සිතා බැලීමේ හැකියාව සහිත සෑම Claude මාදිලියකටම සිතා බැලීමෙන් තොර ප්රභේදයක් ප්රචාරය කරන අතර, ඉල්ලීමක් සමඟ යවන no-think/ හැඳුනුමක් තර්කනය යටපත් කර සැබෑ මාදිලිය වෙත නැවත විසඳයි. අක්රියයි: කිසිදු ප්රභේදයක් ප්රචාරය නොකරන අතර no-think/ හැඳුනුමක් වෙනත් ඕනෑම නොදන්නා මාදිලි හැඳුනුමක් මෙන් සලකයි. මෙය සක්රියව තිබියදීත් එක් එක් මාදිලියට අදාළ ModelSpec.noThinkingAlias තෝරා සක්රිය කිරීම/අක්රිය කිරීම තවදුරටත් අදාළ වේ.", "featureFlagChatVirtualLanesEnabledDescription": "සපයන්නා වෙත යැවීම සඳහා එක් එක් ටෙනන්ට්ට අනුව අනුවර්තනය වන අතථ්ය ප්රවේශ මංතීරු සබල කරන්න (#9654): එක් ටෙනන්ට් කෙනෙකුගේ හදිසි ඉල්ලීම් වැඩිවීමක් තවදුරටත් වෙනත් අයෙකුට 503 දෝෂයක් ඇති නොකරයි. OMNIROUTE_CHAT_VIRTUAL_LANES පරිසර විචල්යය මෙම උපකරණ පුවරු අතික්රමණයට වඩා ප්රමුඛ වේ; වෙනස්කම් සේවාදායකය නැවත ආරම්භ කළ විට ක්රියාත්මක වේ.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "උපකරණ පුවරුවේ සැපයුම්කරු පිටු: සැපයුම්කරු පිළිගන්නා සංඥා මත පමණක් නොමිලේ ලාංඡනය පෙන්වන්න — ලේඛනගත නොමිලේ මට්ටමක් නොමැති ලියාපදිංචි සැපයුම්කරුවන් සඳහා සංදර්ශක නාම අනුමානය, බූලීය නොවන නොමිලේ ක්ෂේත්ර සහ :free ප්රත්ය අත්හරියි. අක්රිය කළ විට ඓතිහාසික ලාංඡන රීතිය භාවිත කරයි.", + "featureFlagProxySkipRecentlyFailedDescription": "ප්රොක්සි සංචිත සහ opencode හි ගිණුමකට වෙන් වූ මාරු කිරීම, අසාර්ථක වූ ප්රොක්සියක් (ප්රතික්ෂේප වූ TCP පරීක්ෂාවක් හෝ එය හරහා ලැබුණු 429 ප්රතිචාරයක්) එක් එක් නැවත සිදුවීමේදී දෙගුණ වන, උපරිම සීමාවකට යටත් ක්රියාවලි-විශේෂිත කාලයක් සඳහා නැවත භාවිත කිරීම නවත්වයි. කිසිදු ප්රොක්සි තත්ත්වයක් ලියනු නොලැබේ; සෑම අපේක්ෂකයෙකුම පසෙකට කළ විට තේරීම වෙනස් නොවේ. පෙරනිමියෙන් අක්රියයි: තේරීම් අනුපිළිවෙළ සරල මාරු කිරීමේ අනුපිළිවෙළට හරියටම සමාන වේ.", + "featureFlagProxyPoolEgressObservationDescription": "උපකරණ පුවරුවේ ප්රොක්සි සංචිතයක් යටතේ, පසුගිය පැය 24 තුළ එහි සාමාජිකයන්ට සේවය සැපයූ නිරීක්ෂිත පිටතට යන IP ලිපින ගණන, ඒවා භාවිත කළ සම්බන්ධතා ගණන සහ එක් IP ලිපිනයක් පිටුපසින් නිරීක්ෂණය වූ උපරිම ගණන පෙන්වන්න. මෙය කියවීමට පමණක් වන අතර ප්රොක්සි ලොගයෙන් ගණනය කෙරෙන අතර මාර්ගගත කිරීම සඳහා කිසි විටෙක භාවිත නොකෙරේ. පෙරනිමියෙන් අක්රියයි: සංචිත සංස්කාරකය වෙනස් නොවන අතර නිරීක්ෂණ මාර්ගය null ලෙස පිළිතුරු දෙයි.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "ප්රොක්සි සෞඛ්ය පරීක්ෂණ වටයේදී, ඉලක්කය ප්රතික්ෂේප කළ පරීක්ෂාවකට (401/403/429: ප්රොක්සිය ප්රතිචාරය ප්රචාරණය කළ නමුත් ගමනාන්තය මෙම පිටතට යන IP ලිපිනය ප්රතික්ෂේප කළේය) සාර්ථකව සේවය කළ පරීක්ෂාවක් මෙන් ප්රොක්සියේ අඛණ්ඩ අසාර්ථකවීම් පෙළ යළි සැකසීමට ඉඩ දෙන්න. පෙරනිමියෙන් අක්රියයි: ප්රතික්ෂේප කිරීමක් මධ්යස්ථව පවතින අතර අඛණ්ඩ අසාර්ථකවීම් පෙළ එලෙසම තබයි. 5xx ප්රතිචාරයක් අවස්ථා දෙකේදීම අවිනිශ්චිතව පවතින අතර, ප්රතික්ෂේප කිරීමක් කිසි විටෙක ප්රොක්සියක් ඉවත් කිරීම, අක්රිය කිරීම හෝ නැවත සක්රිය කිරීම සිදු නොකරයි.", "sidebar": { "home": "මුල් පිටුව", "dashboard": "උපකරණ පුවරුව", @@ -1318,7 +1318,7 @@ "noResults": "ප්රතිඵල නොමැත" }, "webhooks": { - "title": "Webhooks", + "title": "වෙබ්හුක්", "description": "පද්ධති සිදුවීම් සඳහා HTTP ආපසු ඇමතුම් වින්යාස කරන්න.", "configuredWebhooks": "වින්යාස කළ Webhooks", "configuredWebhooksDesc": "බෙදාහැරීමේ අන්ත ලක්ෂ්ය, දායක වූ සිදුවීම්, තත්ත්වය සහ පරීක්ෂණ යැවීම් කළමනාකරණය කරන්න.", @@ -1429,23 +1429,23 @@ "secretKeyHint": "සත්යාපනය සඳහා payload ශීර්ෂකය අත්සන් කිරීමට භාවිත කෙරේ." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "Discord වෙබ්හුක් URL", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "ඔබගේ Discord නාලිකා ඒකාබද්ධ කිරීමේ සැකසුම්වලින් පිටපත් කළ webhook URL එක.", "tutorial": "Discord webhook එකක් සාදන ආකාරය:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "Slack වෙබ්හුක් URL", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "ඔබගේ Slack Incoming Webhooks ඒකාබද්ධ කිරීමෙන් පිටපත් කළ webhook URL එක.", "tutorial": "Slack webhook එකක් සාදන ආකාරය:" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "Telegram බොට් ටෝකනය", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "ඔබගේ bot එක සාදන විට @BotFather වෙතින් ලැබුණු HTTP API token එක.", "chatId": "Telegram Chat ID / නාලිකාව", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 හෝ @channelname", "chatIdHint": "chat එකේ/නාලිකාවේ අනන්ය සංඛ්යාත්මක හඳුනාගැනීමේ අංකය හෝ පොදු පරිශීලක නාමය.", "tutorial": "Telegram webhook එක වින්යාස කරන ආකාරය:" } @@ -3988,7 +3988,7 @@ "modelsCount": "{count, plural, one {# මාදිලිය} other {# මාදිලි}}", "sectionTitle": "ඒකාබද්ධතා අතුරුමුහුණත", "sectionDescription": "OpenAI-අනුකූල APIs සහ මෙහෙයුම් ප්රොටෝකෝල අන්ත ලක්ෂ්ය", - "tabApis": "APIs", + "tabApis": "API", "tabProtocols": "ප්රොටෝකෝල", "tabsAria": "අන්ත ලක්ෂ්ය කොටස්", "protocolsTitle": "ප්රොටෝකෝල", @@ -4127,7 +4127,7 @@ "vscodeAliasDescriptionError": "මෙම සැසියේදී CLI යතුරු පූරණය කළ නොහැකි වූ බැවින් ස්ථානධාරක URLs පෙන්වයි.", "vscodeAliasDescriptionLoading": "CLI යතුරු පූරණය කරමින්. යතුරක් ලැබෙන තෙක් ස්ථානධාරක URLs පෙන්වනු ලැබේ.", "vscodeAliasDescriptionPlaceholder": "ස්ථානධාරක URLs පෙන්වයි. TOKEN ප්රතිස්ථාපනය කිරීමට CLI Tools තුළ API යතුරක් සාදන්න හෝ සක්රිය කරන්න.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI මෙවලම්", "vscodeAliasBaseLabel": "VS Code මූලික URL", "vscodeAliasModelsLabel": "VS Code මාදිලි", "vscodeAliasChatLabel": "VS Code සංවාදය", @@ -4139,7 +4139,7 @@ "badgeInternalTooltip": "මෙය අභ්යන්තර පද්ධති අන්ත ලක්ෂ්යයකි", "tierAll": "සියල්ල", "tierAuth": "සත්යාපනය කළ", - "tierLoopback": "Loopback", + "tierLoopback": "ලූප්බැක්", "tierAlwaysProtected": "සැමවිටම ආරක්ෂිත", "tierPublic": "පොදු", "hideInternal": "අභ්යන්තර ඒවා සඟවන්න", @@ -4433,7 +4433,7 @@ "reindexFailed": "නැවත සුචිගත කිරීම ආරම්භ කිරීමට අසමත් විය", "keywordLabel": "මූලපද (FTS5)", "keywordReason": "මූලපද සෙවීම සැමවිටම ලබා ගත හැක", - "embeddingLabel": "Embedding", + "embeddingLabel": "එම්බෙඩිං", "vectorStoreLabel": "දෛශික ගබඩාව", "qdrantLabel": "Qdrant", "rerankLabel": "නැවත ශ්රේණිගත කිරීම", @@ -4474,8 +4474,8 @@ "simulate": "අනුකරණය කරන්න", "resultsTitle": "ප්රතිඵල {count}ක්", "resolutionTitle": "සෙවුම් විභේදනය", - "resolutionEmbedding": "Embedding", - "resolutionStore": "Vector store", + "resolutionEmbedding": "එම්බෙඩිං", + "resolutionStore": "දෛශික ගබඩාව", "resolutionStrategy": "භාවිත කළ උපායමාර්ගය", "rerankApplied": "නැවත ශ්රේණිගත කිරීම යොදා ඇත", "fallback": "විකල්ප ක්රමය", @@ -4487,7 +4487,7 @@ "previous": "පෙර", "procedural": "ක්රියාපටිපාටිමය", "qdrant": { - "title": "Qdrant (Vector Store Tier 2)", + "title": "Qdrant (දෛශික ගබඩා ස්තරය 2)", "description": "පරිමාණය කළ හැකි අර්ථකථන සෙවුම සඳහා විකල්ප Qdrant ඒකාබද්ධ කිරීම", "enableLabel": "Qdrant සබල කරන්න", "enableDesc": "සබල කළ විට, ප්රධාන vector store ලෙස Qdrant භාවිත කෙරේ", @@ -5804,7 +5804,7 @@ "ccCompatibleLabel": "CC අනුකූල", "ccCompatibleModelsDescription": "CC-අනුකූල රිලේ මඟින් මාදිලි ලැයිස්තුව හෙළි නොකරයි. ඔබේ රිලේ එක පිළිගන්නා Claude මාදිලි ID එක් කරන්න.", "ccCompatibleNameHint": "මෙම Claude Code සඳහා පමණක් වූ රිලේ එකේ සංදර්ශන නාමය.", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay නිෂ්පාදන පරිසරය", "ccCompatiblePrefixHint": "prefix/model-id වැනි මාදිලි අන්වර්ථ නාමවල භාවිත වේ.", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Claude Code සේවාලාභීන්ට පමණක් සේවය කරන රිලේ සඳහා පමණක් මෙම සැපයුම්කරු භාවිත කරන්න. එවැනි රිලේවලට පිළිගත හැකි වන පරිදි OmniRoute පැමිණෙන ඕනෑම ඉල්ලීමක් Claude Code-අනුකූල වයර් ආකෘතියට නැවත ලියයි. ඔබට Claude Code CLI පමණක් භාවිත කිරීමට අවශ්ය නම් හෝ මෙම රිලේ වර්ගයේ අර්ථය පිළිබඳ විශ්වාස නැත්නම්, ඒ වෙනුවට සාමාන්ය Anthropic-අනුකූල සැපයුම්කරුවෙකු භාවිත කරන්න.", @@ -6329,7 +6329,7 @@ "openWebProviderSite": "{host} විවෘත කරන්න", "addProviderWebTokenTitle": "{provider} web token එක් කරන්න", "addProviderConnectionTitle": "{provider} සම්බන්ධතාවක් එක් කරන්න", - "webTokenCredentialLabel": "Web session token", + "webTokenCredentialLabel": "වෙබ් සැසි ටෝකනය", "webNoAuthCredentialLabel": "අක්තපත්රයක් අවශ්ය නොවේ", "webCookieCredentialHint": "අවශ්ය cookie: {credential}. ඔබගේම පිවිසී ඇති {provider} web session එකෙන් Cookie header අගය අලවන්න. Cookie: උපසර්ගය ඇතුළත් නොකරන්න.", "webTokenCredentialHint": "අක්තපත්රය: {credential}. ඔබගේම පිවිසී ඇති {provider} web session එකෙන් token අගය, හෝ සපයන්නා එයට සහාය දක්වන්නේ නම් DevTools HAR export එකක් අලවන්න.", @@ -6367,15 +6367,15 @@ "checkWebToken": "ටෝකනය පරීක්ෂා කරන්න", "huggingchatLabel": "HuggingChat (නොමිලේ)", "huggingchatDesc": "huggingface.co/chat හරහා නොමිලේ LLM චැට්", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe වෙබ්", "poeWebDesc": "poe.com හරහා බහු-මාදිලි චැට්", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice වෙබ්", "veniceWebDesc": "පෞද්ගලිකත්වය කේන්ද්ර කරගත් AI චැට්", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel වෙබ්", "v0VercelWebDesc": "v0.dev හරහා AI කේත ජනනය", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi වෙබ්", "kimiWebDesc": "www.kimi.com හරහා Moonshot AI පාරිභෝගික චැට් (ජාත්යන්තර, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola වෙබ්", "doubaoWebDesc": "dola.com හරහා ByteDance AI චැට්", "overrideBaseUrlAdvanced": "උසස්: මූලික URL එක අතික්රමණය කරන්න", "overrideBaseUrlHint": "උසස්: මෙම අන්තර්ගත provider එක අභිරුචි endpoint එකකට යොමු කරන්න. පෙරනිමිය භාවිත කිරීමට හිස්ව තබන්න.", @@ -6749,11 +6749,11 @@ "themeSystem": "පද්ධතිය", "endpointTunnelVisibility": "අන්ත ලක්ෂ්ය උමඟේ දෘශ්යතාව", "endpointTunnelVisibilityDesc": "උමඟේ තත්ත්වය වෙනස් නොකර අන්ත ලක්ෂ්ය පිටුවෙන් උමං පාලක සඟවන්න.", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Cloudflare ක්ෂණික උමඟ", "showCloudflareTunnelDesc": "Endpoint පිටුවේ Cloudflare Quick Tunnel පාලක පෙන්වන්න.", "showTailscaleFunnel": "Tailscale Funnel", "showTailscaleFunnelDesc": "Endpoint පිටුවේ Tailscale Funnel පාලක පෙන්වන්න.", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "ngrok උමඟ", "showNgrokTunnelDesc": "Endpoint පිටුවේ ngrok Tunnel පාලක පෙන්වන්න.", "sidebarVisibility": "පැති තීරු අයිතම සඟවන්න", "sidebarVisibilityDesc": "කිසිදු විශේෂාංගයක් අක්රිය නොකර දෘශ්ය අවුල් අඩු කිරීමට ඕනෑම පැති තීරු සංචාලන අයිතමයක් සඟවන්න", @@ -7078,7 +7078,7 @@ "stickyLimitDesc": "ගෝලීය ගිණුම් විකල්ප භාවිතය Round Robin ක්රමය භාවිත කරන විට ගිණුම මාරු කිරීමට පෙර එක් ගිණුමකට සිදු කරන ඇමතුම් ගණන", "routingStrategyTitle": "මාර්ගගත කිරීමේ උපායමාර්ගය", "routingStrategySubtitle": "9router සමඟ ගළපන්න: ගිණුම් Round Robin, ස්ථාවර සීමා සහ සංයෝජන භ්රමණය", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "වටමාරු ක්රමය", "accountRoundRobinDesc": "භාරය බෙදා හැරීමට ගිණුම් හරහා චක්රීයව මාරු වන්න", "comboRoundRobin": "සංයෝජන Round Robin", "comboRoundRobinDesc": "සෑම විටම පළමු ඉලක්කයෙන් ආරම්භ කිරීම වෙනුවට සංයෝජන ඉලක්ක හරහා චක්රීයව මාරු වන්න", @@ -7143,7 +7143,7 @@ "ipModeWhitelist": "සුදු ලේඛනය", "ipModeWhitelistPriority": "සුදු ලේඛන ප්රමුඛතාව", "addIpAddress": "IP ලිපිනය එක් කරන්න", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 හෝ 10.0.*.*", "block": "+ අවහිර කරන්න", "allow": "+ ඉඩ දෙන්න", "blocked": "අවහිර කළ ({count})", @@ -8272,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge ගෙන යන ලදී", "modalityBridgeMovedBody": "Vision Bridge සැකසුම් දැන් වෙන් කළ Modality Bridge පිටුවෙහි ඇත.", "modalityBridgeMovedCta": "Modality Bridge සැකසුම් විවෘත කරන්න", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "ශ්රව්ය පාලම", "modalityBridgeAudioDesc": "තෝරාගත් පෙළ මාදිලිය සමඟ ඉදිරියට යාමට පෙර, කථනයෙන්-පෙළට මාදිලියක් භාවිතයෙන් ශ්රව්ය පිටපත් කරන්න.", "modalityBridgeAudioEnabled": "Audio Bridge සක්රිය කරන්න", "modalityBridgeAudioEnabledDesc": "ඉලක්ක මාදිලියට ශ්රව්ය සැකසිය නොහැකි විට ශ්රව්ය කොටස් පිටපත් සමඟ ප්රතිස්ථාපනය කරන්න.", @@ -8284,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge සාර්ථකයි — {model} මඟින් ඛණ්ඩ {count}ක් පිටපත් කරන ලදී", "modalityBridgeAudioTestNoop": "Audio Bridge සක්රිය නොවීය (ඉලක්කය ශ්රව්ය සඳහා සහාය දක්වනවා විය හැකිය, STT සැපයුම්කරුවෙකු සම්බන්ධ කර නොතිබිය හැකිය, නැතහොත් bridge අක්රිය කර ඇත)", "modalityBridgeAudioTestError": "ශ්රව්ය පරීක්ෂණය අසාර්ථකයි: {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "වීඩියෝ පාලම", "modalityBridgeVideoDesc": "නියැදි වීඩියෝ රාමු ගෙන, දෘශ්ය මාදිලියකින් ඒවා විස්තර කර, තෝරාගත් පෙළ මාදිලිය සමඟ ඉදිරියට යන්න.", "modalityBridgeVideoRuntimeReady": "ධාවන පරිසරය සූදානම්", "modalityBridgeVideoRuntimeChecking": "ධාවන පරිසරය පරීක්ෂා කරමින්…", @@ -8382,7 +8382,7 @@ "qdrantCollection": "එකතුව" }, "contextRtk": { - "title": "RTK Engine", + "title": "RTK එන්ජිම", "description": "මෙවලම් ප්රතිදානය, ටර්මිනල් ලොග සහ ගොඩනැගීම් ප්රතිඵල සඳහා විධාන-සංවේදී සම්පීඩනය.", "enabled": "සක්රීයයි", "intensity": "තීව්රතාව", @@ -8506,7 +8506,7 @@ "description": "පේළි ගණන පැහැදිලිව දක්වන සලකුණු සහිත, සමජාතීය JSON අරාවල අලාභ රහිත වගුමය සංක්ෂිප්තකරණය." }, "session-dedup": { - "name": "Session Dedup", + "name": "සැසි අනුපිටපත් ඉවත් කිරීම", "description": "ප්රතිසාධනය කළ හැකි අන්තර්ගත සලකුණු සහිත, වාර අතර බ්ලොක් අනුපිටපත් ඉවත් කිරීම." }, "ccr": { @@ -8908,7 +8908,7 @@ "save": "සුරකින්න" }, "contextCaveman": { - "title": "Caveman Engine", + "title": "Caveman එන්ජිම", "description": "රීති මත පදනම් වූ පණිවිඩ සම්පීඩනය, භාෂා ඇසුරුම්, විශ්ලේෂණ සහ ප්රතිදාන මාදිලි පාලන.", "advancedConfig": "උසස් වින්යාසය", "advancedConfigDesc": "සම්පීඩන හැසිරීම සියුම්ව සකසන්න", @@ -9177,7 +9177,7 @@ "comboRouted": "Combo හරහා මාර්ගගත කරන ලදී", "uniqueEndpoints": "අද්විතීය අන්ත ලක්ෂ්ය", "routeDetails": "මාර්ග විස්තර", - "comboBadge": "Combo", + "comboBadge": "සංයෝජනය", "routeEndpointLabel": "අන්ත ලක්ෂ්යය", "routeConnectionLabel": "සම්බන්ධතාව", "scenarioVision": "දෘශ්ය හැකියාව (රූප අවබෝධය)", @@ -9343,7 +9343,7 @@ "evaluateStepDescription": "ප්රතිචාර අපේක්ෂිත නිර්ණායක සමඟ සසඳනු ලැබේ. ප්රමාදතා මිනුම් සහ සවිස්තරාත්මක ප්රතිපෝෂණ සමඟ එක් එක් අවස්ථාවේ සමත්/අසමත් තත්ත්වය බලන්න.", "evalsStrategyContainsLabel": "අඩංගු වේ", "evalsStrategyExactLabel": "නිශ්චිත ගැළපීම", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "නිත්ය ප්රකාශනය", "evalsStrategyCustomLabel": "අභිරුචි තර්කනය", "evalsStrategyContainsDescription": "LLM ප්රතිදානයේ අපේක්ෂිත උපපෙළ අඩංගු දැයි පරීක්ෂා කරයි.", "evalsStrategyExactDescription": "LLM ප්රතිදානය අපේක්ෂිත අගයට නිශ්චිතව ගැළපේ දැයි පරීක්ෂා කරයි.", @@ -10113,9 +10113,9 @@ "useCaseUsageVisibilityText": "Usage සහ Analytics tabs තුළ සපයන්නා, ගිණුම සහ API යතුර අනුව tokens සහ පිරිවැය නිරීක්ෂණය කරන්න.", "clientCherryStudioTitle": "Cherry Studio", "baseUrlLabel": "මූලික URL", - "chatEndpointLabel": "Chat endpoint", + "chatEndpointLabel": "කතාබස් අන්ත ලක්ෂ්යය", "modelRecommendationLabel": "Model නිර්දේශය: පැහැදිලි prefix එකක්", - "clientCodexTitle": "Codex / GitHub Copilot Models", + "clientCodexTitle": "Codex / GitHub Copilot ආකෘති", "clientCodexBullet1": "මේවා සමඟ model IDs භාවිත කරන්න", "clientCodexBullet2": "Codex පවුලේ models ස්වයංක්රීයව route වන්නේ", "clientCodexBullet3": "Codex නොවන models දිගටම පවතින්නේ", @@ -10403,7 +10403,7 @@ "flowDiagramCli": "CLI ඒජන්තය", "flowDiagramCliDesc": "තමන්ගේම සත්යාපනය/මාදිලිය සමඟ සකසයි", "fingerprintSettingsHint": "CLI Fingerprint ගැළපීම (නිශ්චිත CLI මෙවලම් ලෙස ඉල්ලීම් වෙස්ගැන්වීම) මෙහි වින්යාස කළ හැක:", - "settingsRoutingLink": "Settings/Routing", + "settingsRoutingLink": "සැකසුම්/මාර්ගගත කිරීම", "openSettings": "සැකසුම්", "copyRawUrlTitle": "අමු URL එක පසුරු පුවරුවට පිටපත් කරන්න", "copied": "පිටපත් කරන ලදී!", @@ -10442,7 +10442,7 @@ "noTasksTitle": "තවම කාර්යයන් නොමැත", "noTasksDesc": "ආරම්භ කිරීමට ඔබේ පළමු කාර්යය සාදන්න.", "tasksTab": "කාර්යයන්", - "agentsTab": "Agents", + "agentsTab": "නියෝජිතයන්", "settingsTab": "සැකසුම්", "agentsEnabled": "සක්රිය කර ඇත", "agentsDisabled": "අක්රිය කර ඇත", @@ -10968,9 +10968,9 @@ "strategyLatency": "ප්රමාදයට ප්රශස්ත කළ", "poolMembersLabel": "සංචිත සාමාජිකයන් ({count})", "poolNoMembers": "මෙම සංචිතයේ තවමත් ප්රොක්සි නොමැත.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{connections, plural, one {සම්බන්ධතාවක්} other {සම්බන්ධතා #ක්}} භාවිත කළ {exits, plural, one {පිටවීමක්} other {පිටවීම් #ක්}} · එක් පිටවීමක උපරිම {max}ක් · පසුගිය පැය {hours}", + "poolEgressObservationEmpty": "පසුගිය පැය {hours} තුළ ගමනාගමනයක් නිරීක්ෂණය වී නැත", + "poolEgressObservationHint": "කාල කවුළුව තුළ proxy ලොගයෙන් ගණනය කරන ලදී: මෙම සංචිතයේ සාමාජිකයන් සඳහා නිරීක්ෂණය කළ අනන්ය egress IP සහ ඒවා භාවිත කළ OmniRoute සම්බන්ධතා. \"එක් පිටවීමක\" යන්නෙන් අදහස් වන්නේ එකම වේලාවේ නොව, කාල කවුළුව පුරා යන්නයි. එක් එක් IP සඳහා වන 429 අගුලු දැමීමෙන් තාවකාලිකව නතර කරන්නේ එකම සැපයුම්කරු පවුලේ සම්බන්ධතා පමණි.", "poolRemove": "ඉවත් කරන්න", "poolRemoveFailed": "සංචිතයෙන් ප්රොක්සිය ඉවත් කිරීමට අසමත් විය", "poolAddLabel": "ප්රොක්සියක් එක් කරන්න", @@ -11128,11 +11128,11 @@ "jsonMode": "JSON ප්රකාරය", "jsonModeDescription": "response_format: json_schema බලගන්වයි", "schemaName": "Schema නම", - "jsonSchema": "JSON schema", + "jsonSchema": "JSON ස්කීමාව", "jsonSchemaEditor": "JSON schema සංස්කාරකය", "schemaValidated": "Schema වලංගු කරන ලදී", "validateSchema": "Schema වලංගු කරන්න", - "seed": "Seed", + "seed": "බීජය", "stopSequences": "නැවතුම් අනුක්රම", "stopSequencesPlaceholder": "උදා. \"\\n\\n\" හෝ \"END\"", "autoProvider": "ස්වයංක්රීය", @@ -11272,7 +11272,7 @@ "total": "එකතුව", "ok": "සාර්ථකයි", "err": "දෝෂය", - "combo": "Combo", + "combo": "සංයෝජනය", "keys": "යතුරු", "shown": "පෙන්වා ඇත", "sortNewest": "නවතම", @@ -11289,7 +11289,7 @@ "refresh": "නැවුම් කරන්න", "columnsLabel": "තීරු", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "ක්රියාත්මකයි", "semantic": "අර්ථමය", "upstream": "උඩුගං", "semanticCacheHit": "අර්ථමය හැඹිලි ගැළපීම (OmniRoute මඟින් සපයන ලදී)", @@ -11678,7 +11678,7 @@ "endpointsBaseUrl": "මූලික URL", "endpointsCollapse": "හකුළන්න", "endpointsExpand": "දිගහරින්න", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-ස්වදේශීය", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — codex පමණි", "betaText": "කෝටා බෙදාගැනීම ක්රියාකාරී නමුත් දෝෂ ඇතිවිය හැක. දෝෂයක් හමු වුණාද? කරුණාකර එය වාර්තා කරන්න.", @@ -12377,7 +12377,7 @@ "description": "පද්ධති උපස්ථ ක්රියාත්මක කරන්න, උපස්ථ ගොනුවලින් ප්රතිසාධනය කරන්න සහ SQLite දත්ත සමුදායේ ජීවන චක්රය කළමනාකරණය කරන්න. නිර්යාත, ආයාත සහ වර්ධක සැණරූ උපායමාර්ග සඳහා සහය දක්වයි." }, "omni-webhooks": { - "name": "Webhooks", + "name": "වෙබ්හුක්", "description": "webhook අන්ත ලියාපදිංචි කරන්න, ලැයිස්තුගත කරන්න, පරීක්ෂා කරන්න සහ ඉවත් කරන්න. සිදුවීම් දායකත්ව (request.completed, request.failed, quota.exceeded, ආදිය) වින්යාස කර බෙදාහැරීමේ නැවත උත්සාහ කළමනාකරණය කරන්න." }, "omni-mcp": { @@ -12523,7 +12523,7 @@ "storage": { "label": "ගබඩා කිරීම", "agent": "ගතික නාමාවලිය (/api/agent-skills) → GitHub හි SKILL.md", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / දේශීය)" }, "tagline": { "label": "තේමා පාඨය", @@ -12992,7 +12992,7 @@ "description": "බයිට් දැනටමත් සේවාලාභියා වෙත ළඟා වූ පසුවත් ප්රතිචාරය නැවත ඉල්ලා එය සම්බන්ධ කිරීමට ප්රවාහ ප්රතිසාධනයට ඉඩ දෙන්න." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "ප්රවාහය මැද සිදු කරන අඛණ්ඩ කිරීමේ මෙවලම් ඇමතුම ආරක්ෂිත කරන්න: මෙවලම් ඇමතුමක් යැවීමෙන් පසු කපා හැරුණු ප්රවාහයක් කිසිවිටෙක නැවත ආරම්භ නොකරන්න (එය තවමත් ක්රියාත්මක වෙමින් තිබුණත් හෝ දැනටමත් අවසන් වී තිබුණත්), සහ සම්පූර්ණ නැවත උත්සාහ කිරීමේ සීමාව භාවිත කිරීම වෙනුවට එක් හිස් අඛණ්ඩ කිරීමකින් පසු නවත්වන්න." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "ප්‍රවාහය කිසිදු ප්‍රයෝජනවත් රාමුවක් යැවීමට පෙර වැසී, එකම සම්බන්ධතාවයේ සීමිත නැවත උත්සාහය ද අවසන් වූ විට වරක් සහෝදර සම්බන්ධතාවයකට මාරු වන්න. භාවිත කළ හැකි සහෝදර සම්බන්ධතාවයක් නොමැති නම් මුල් early-EOF දෝෂය ආපසු ලබා දේ. අක්‍රිය: නැවත උත්සාහයෙන් පසු early-EOF අවසාන ලෙස පවතී." @@ -13035,12 +13035,12 @@ "description": "ආකෘතිය සේවාලාභියාට භාවිත කළ හැකි ප්රතිචාරයක් ලබා දෙන තෙක් ප්රවාහ නොවන, සේවාදායකය සතු මෙවලම් ඇමතුම් දිගටම කරගෙන යන්න." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After මූලාශ්රය", + "description": "එකතු කළ 429/503 සේවාව නොමැති ප්රතිචාරවලදී, නිශ්චිත අනාගත නැවත උත්සාහ කිරීමේ වේලාවක් නොදන්නා විට කෘත්රිම තත්පර 1ක් යැවීම වෙනුවට Retry-After අත්හරින්න, error.retry_after_provenance එක් කරන්න, සහ combo drain මාර්ගවල විස්තරාත්මක නැවත උත්සාහ කිරීමේ ඉඟි කියවන්න." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "ආරක්ෂිත-ප්රමුඛතා යටිතල පහසුකම් නැවතුම් 502 ලෙස", + "description": "කෝටාව-පමණක්-විකල්ප ප්රමුඛතා ඉලක්කයක්, කෝටාව නිසා නොවන බව නිශ්චිතව ඔප්පු කළ හැකි හේතුවක් මත combo එක නවත්වන විට 503 වෙනුවට 502 ලෙස පිළිතුරු දෙන්න: විවෘත provider circuit breaker එකක් හෝ පුරෝකථන ප්රමාද මඟහැරීමක්." } } }, @@ -13119,7 +13119,7 @@ "comboHealth": "Combo සෞඛ්යය", "callLogs": "ඇමතුම් ලොග", "costs": "පිරිවැය", - "playground": "Playground", + "playground": "අත්හදා බැලීමේ පරිසරය", "nestedCombo": "කැදලිගත Combo", "modelTarget": "මාදිලි ඉලක්කය", "weight": "{value}% බර", @@ -13358,7 +13358,7 @@ } }, "chaosConfig": { - "pageTitle": "Chaos Mode", + "pageTitle": "අවුල් ප්රකාරය", "pageSubtitle": "එකම කාර්යය සඳහා AI මොඩල කිහිපයක් සමාන්තරව හෝ සහයෝගීව ධාවනය කරන්න", "enableChaos": "Chaos Mode සබල කරන්න", "enableChaosDesc": "Chaos Mode සබල කර ඇති API යතුරුවලට මෙම විශේෂාංගය භාවිත කිරීමට ඉඩ දෙන්න", @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "ඉලක්ක මාදිලියට අවශ්ය හැකියාවන් (දෘශ්ය, මෙවලම්, ව්යුහගත ප්රතිදානය, සන්දර්භ කවුළුව) නොමැති විට යැවීමට පෙර ඉල්ලීම් ප්රතික්ෂේප කරන්න. මෙය සංයෝජන-ස්තර අනුකූලතා පෙරහන මඟහරින සෘජු තනි-සැපයුම්කරු ඉල්ලීම් ආරක්ෂා කරයි.", "featureFlagDisableContextWindowChecksDescription": "සෘජු තනි-මාදිලි ඉල්ලීම් සඳහා OmniRoute හි දේශීය සන්දර්භ-කවුළු සහ උපරිම-ආදාන-ටෝකන පරීක්ෂාව මඟහරින්න. උඩුගං සැපයුම්කරුවන් තවමත් ඔවුන්ගේ සැබෑ සීමාවන් බලාත්මක කරයි. ප්රේරක සම්පීඩනය සහ ප්රතිදාන-ටෝකන සීමා සක්රියව පවතී.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "සෙවුම් සංඛ්යාලේඛන සහ මෑත සෙවුම් ගණනය කරන්නේ තවමත් සජීවී සම්බන්ධතාවක් ඇති සැපයුම්කරුවන් පමණි (duckduckgo-free වැනි යතුරු රහිත සැපයුම්කරුවන් සැමවිටම ගණනය කෙරේ). අක්රිය කළ විට, රඳවාගත් සෑම සෙවුම් පේළියක්ම සැපයුම්කරුගේ හැඳුනුම්කාරකයක් සමඟ තබා ගනී.", "publicSystem": { "notFound": { "title": "පිටුව හමු නොවීය", @@ -13978,7 +13978,7 @@ "runners": "ධාවකයන්", "tasks": "කාර්යයන්", "colName": "නම", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "තත්ත්වය", "colTask": "කාර්යය", "colMode": "ප්රකාරය", @@ -14051,7 +14051,7 @@ "filterSources": "මූලාශ්ර", "filterProviders": "සපයන්නන්", "clearFilters": "පෙරහන් හිස් කරන්න", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "වලාකුළු නියෝජිතයා", "sourceA2A": "A2A", "sourceConductor": "Conductor", "sourceStale": "{since} සිට යාවත්කාලීන වී නැත", diff --git a/src/i18n/messages/sk.json b/src/i18n/messages/sk.json index 49c8f233d6..7e1a6d557a 100644 --- a/src/i18n/messages/sk.json +++ b/src/i18n/messages/sk.json @@ -31,7 +31,7 @@ "active": "Aktívne", "inactive": "Neaktívne", "noData": "Nie sú k dispozícii žiadne údaje", - "nothingHere": "Nothing here yet", + "nothingHere": "Zatiaľ tu nič nie je", "configure": "Konfigurovať", "manualConfig": "Manuálna konfigurácia", "manage": "Spravovať", @@ -47,7 +47,7 @@ "time": "Čas", "details": "Podrobnosti", "created": "Vytvorené", - "lastUsed": "Last Refreshed", + "lastUsed": "Naposledy obnovené", "loadMore": "Načítať viac", "noResults": "Nenašli sa žiadne výsledky", "reloadPage": "Znovu načítať stránku", @@ -70,8 +70,8 @@ "note": "Poznámka", "free": "Zadarmo", "skipToContent": "Preskočiť na obsah", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Server má problémy. Niektoré funkcie nemusia byť dostupné.", + "maintenanceServerUnreachable": "Server je nedostupný. Opätovne sa pripája...", "accept": "Prijať", "accountId": "ID účtu", "alias": "Alias", @@ -98,14 +98,14 @@ "skill": "Zručnosť", "sortBy": "Zoradiť podľa", "sortOrder": "Poradie zoradenia", - "tab": "Tab", + "tab": "Karta", "text": "Text", - "textarea": "Textarea", + "textarea": "Textové pole", "tool": "Nástroj", "toolId": "ID nástroja", "web": "Web", "whereUsed": "Kde sa používa", - "whitelist": "Whitelist", + "whitelist": "Zoznam povolených", "blacklist": "Čierna listina", "resolve": "Vyriešiť", "force": "sila", @@ -120,8 +120,8 @@ "compatible": "Kompatibilné", "chat-completions": "Dokončenia četu", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", + "auth_token": "Overovací token", + "crypto": "Kryptografia", "hours": "hodiny", "selfsigned": "Vlastne podpísaný", "proxy_id": "ID proxy", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Cenu sa nepodarilo resetovať", "apikey": "API kľúč", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Prejsť na ovládací panel", + "checkSystemStatus": "Skontrolovať stav systému", + "selectModel": "Vybrať model", "addModel": "Pridať model", "effortNone": "Žiadne", "effortLow": "Nízke", @@ -164,10 +164,10 @@ "reasoningEffort": "Úsilie uvažovania", "wireApi": "Wire API", "modelAliases": "Aliasy modelov", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Kombinácie", + "noModelsFound": "Nenašli sa žiadne modely", + "clear": "Vymazať", + "done": "Hotovo", "selectAll": "Vybrať všetko", "unselectAll": "Zrušiť výber", "visibleModels": "viditeľné", @@ -184,519 +184,519 @@ "selectAllProviders": "Skontrolovať všetkých poskytovateľov", "clearProviderSelection": "Zrušiť zaškrtnutie poskytovateľov", "providersSelectedCount": "Skontrolovaných {count} poskytovateľov", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Vyskytla sa chyba", + "comboDeleted": "Kombinácia bola odstránená", + "hide": "Skryť", + "creating": "Vytvára sa", + "comboCreated": "Kombinácia bola vytvorená", + "swapFormats": "Zameniť formáty", + "daysAgo": "Pred niekoľkými dňami", + "retries": "Opakované pokusy", + "errorDuringRestore": "Chyba počas obnovovania", + "eventsAppearHint": "Pomôcka k zobrazovaniu udalostí", + "noLockouts": "Žiadne zablokovania", + "webSearchDesc": "Popis webového vyhľadávania", + "audioProvidersHeading": "Nadpis poskytovateľov zvuku", "cloudAgentProviders": "Poskytovatelia cloudových agentov", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Pred niekoľkými minútami", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "Automatické obnovovanie v reálnom čase", + "webSearch": "Webové vyhľadávanie", + "anthropicPrefixPlaceholder": "Zástupný text predpony Anthropic", + "addModelToCombo": "Pridať model do kombinácie", + "failedToLoad": "Načítanie zlyhalo", + "categoryMedia": "Kategória médií", + "enableCloud": "Povoliť cloud", + "expirationBannerExpiringSoon": "Banner blížiaceho sa vypršania platnosti", + "retry": "Skúsiť znova", + "embeddings": "Vektorové reprezentácie", + "errorCount": "Počet chýb", + "backupReasonManual": "Dôvod zálohy: manuálne", + "safeSearchModerate": "Bezpečné vyhľadávanie: stredné", + "activeLimiters": "Aktívne obmedzovače", + "a2aCardTitle": "Názov karty A2A", + "cloudWorkerUnreachable": "Cloud Worker je nedostupný", + "testFailed": "Test zlyhal", + "compatibleBaseUrlHint": "Pomôcka pre kompatibilnú základnú URL", + "usageTracking": "Sledovanie používania", + "disableCloudTitle": "Názov deaktivácie cloudu", + "noConnections": "Žiadne pripojenia", + "providerHealth": "Stav poskytovateľa", + "confirmDbImport": "Potvrdiť import databázy", + "notAvailableSymbol": "Symbol nedostupnosti", + "backupsAvailable": "Dostupné zálohy", + "providerAuto": "Automatický výber poskytovateľa", + "newProviderNamePlaceholder": "Zástupný text názvu nového poskytovateľa", + "a2aQuickStartStep2": "Krok 2 rýchleho spustenia A2A", + "ok": "OK", + "available": "Dostupné", + "noBackupYet": "Zatiaľ žiadna záloha", + "more": "Viac", + "noCompatibleYet": "Zatiaľ nič kompatibilné", + "multiProvider": "Viacero poskytovateľov", + "repairEnvHint": "Pomôcka na opravu prostredia", + "disablingCloud": "Deaktivuje sa cloud", + "testBench": "Testovacie prostredie", + "valid": "Platné", + "cloudBenefitShare": "Výhoda cloudu: zdieľanie", + "mcpCardTitle": "Názov karty MCP", + "disableConfirm": "Potvrdenie deaktivácie", + "filters": "Filtre", + "expirationBannerExpiredDesc": "Popis bannera o vypršaní platnosti", + "saveComboDefaults": "Uložiť predvolené hodnoty kombinácie", + "cloudConnectedVerified": "Pripojenie ku cloudu bolo overené", + "uptime": "Doba prevádzky", + "compatibleProdPlaceholder": "Zástupný text kompatibilného produkčného prostredia", + "fallbackChainsTitle": "Názov záložných reťazcov", + "oauthLabel": "Označenie OAuth", + "a2aCardDescription": "Popis karty A2A", + "okShort": "OK", + "maintenance": "Údržba", + "formatConverter": "Konvertor formátu", + "zedImportNetworkError": "Chyba siete pri importe zo Zed", + "apiKeyLabel": "Označenie kľúča API", + "noModelsForProvider": "Žiadne modely pre poskytovateľa", + "mcpCardDescription": "Popis karty MCP", + "apiTypeLabel": "Označenie typu API", + "configuredProvidersLabel": "Označenie nakonfigurovaných poskytovateľov", + "maxRetriesLabel": "Označenie maximálneho počtu opakovaných pokusov", + "title": "Názov", + "output": "Výstup", + "prefixHint": "Pomôcka k prefixu", + "skipWizard": "Preskočiť sprievodcu", + "failedCount": "Počet neúspešných", + "confirmDbImportDesc": "Popis potvrdenia importu databázy", + "entries": "Položky", + "until": "Do", + "disableCombo": "Zakázať kombináciu", + "liveMonitorDescriptionPrefix": "Prefix popisu živého monitora", + "runningCount": "Počet spustených", + "noActiveConnectionsInGroup": "V skupine nie sú žiadne aktívne pripojenia", + "savedSuccessfully": "Úspešne uložené", + "systemStorage": "Systémové úložisko", + "videoDesc": "Popis videa", + "maxResults": "Maximálny počet výsledkov", + "timeRangeMonth": "Časový rozsah: mesiac", + "testSummary": "Súhrn testu", + "failedSetPassword": "Nastavenie hesla zlyhalo", + "audio": "Zvuk", + "restore": "Obnoviť", + "disableWarning": "Upozornenie na zakázanie", + "moderationsDesc": "Popis moderovania", + "providerHealthStatusAria": "ARIA stavu dostupnosti poskytovateľa", + "modelNamePlaceholder": "Zástupný text názvu modelu", + "mcpQuickStartStep2": "2. krok rýchleho spustenia MCP", + "quickStart": "Rýchle spustenie", + "fullExportFailedWithError": "Úplný export zlyhal s chybou", + "loadingBackups": "Načítavajú sa zálohy", + "anthropicBaseUrlPlaceholder": "Zástupný text základnej URL adresy Anthropic", + "description": "Popis", + "noProviderFound": "Nenašiel sa žiadny poskytovateľ", + "auto": "Automaticky", + "protocolsDescription": "Popis protokolov", + "cloudSessionNote": "Poznámka ku cloudovej relácii", + "advancedSettings": "Rozšírené nastavenia", + "defaultStrategy": "Predvolená stratégia", + "purgeExpiredLogs": "Vymazať protokoly s uplynutou platnosťou", + "justNow": "Práve teraz", + "providerTestFailed": "Test poskytovateľa zlyhal", + "openaiBaseUrlPlaceholder": "Zástupný text základnej URL adresy Openai", + "image": "Obrázok", + "failedCreateChain": "Vytvorenie reťazca zlyhalo", + "importDatabase": "Importovať databázu", + "allDataLocal": "Všetky údaje sú lokálne", + "sectionTitle": "Názov sekcie", + "failedToggle": "Prepnutie zlyhalo", + "editCombo": "Upraviť kombináciu", + "testResults": "Výsledky testu", + "searchQuery": "Vyhľadávací dopyt", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", - "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "duplicate": "Duplikovať", + "createCombo": "Vytvoriť kombináciu", + "searchTypeWeb": "Typ vyhľadávania: web", + "addChain": "Pridať reťazec", + "prefixLabel": "Označenie predpony", + "listModelsDesc": "Popis zoznamu modelov", + "databaseSize": "Veľkosť databázy", + "chainCreated": "Reťazec bol vytvorený", + "providerTestTimeout": "Časový limit testu poskytovateľa vypršal", + "routingStrategy": "Stratégia smerovania", + "translateAction": "Preložiť", + "exportFailed": "Export zlyhal", + "connectedVerificationPending": "Pripojené, čaká sa na overenie", + "a2aQuickStartTitle": "Rýchly štart A2A", + "couldNotTest": "Test sa nepodarilo vykonať", + "testAllCompatible": "Otestovať všetky kompatibilné", + "anthropicCompatibleName": "Názov kompatibilný s Anthropic", + "disabling": "Zakazuje sa", + "failedEnable": "Povolenie zlyhalo", + "categoryUtility": "Kategória nástrojov", + "customUrlOptional": "Vlastná URL (voliteľné)", + "localProviders": "Lokálni poskytovatelia", + "comboNamePlaceholder": "Zástupný text názvu kombinácie", + "memoryRss": "Pamäť RSS", + "disableProvider": "Zakázať poskytovateľa", + "welcomeDesc": "Popis uvítania", + "nameLabel": "Názov", + "allOperational": "Všetko je funkčné", + "backupNow": "Zálohovať teraz", + "providerMaxRetriesAria": "Maximálny počet opakovaných pokusov poskytovateľa – ARIA", + "textToSpeechDesc": "Popis prevodu textu na reč", + "machineId": "ID zariadenia", + "globalProxy": "Globálny proxy server", + "hitsMisses": "Zásahy a minutia", + "testDesc": "Popis testu", + "chatDesc": "Popis chatu", + "importSuccess": "Import bol úspešný", + "chat": "Čet", + "a2aQuickStartStep1": "A2A – rýchly štart, krok 1", + "importFailed": "Import zlyhal", + "inputPlaceholder": "Zástupný text vstupu", + "providerModelsTitle": "Modely poskytovateľa", + "lastBackup": "Posledná záloha", + "yourEndpoint": "Váš koncový bod", + "autoDisableThresholdDesc": "Popis prahu automatického zakázania", + "rerankDesc": "Popis zmeny poradia", + "modelsPathPlaceholder": "Zástupný text cesty k modelom", + "noCombosYet": "Zatiaľ žiadne kombinácie", + "connectedVerificationPendingWithError": "Pripojené, čaká sa na overenie s chybou", + "comboDefaultsGuideHint1": "Tip 1 k sprievodcovi predvolenými nastaveniami kombinácie", + "enableCloudTitle": "Povoliť cloud", + "configuredProvidersHint": "Tip ku konfigurovaným poskytovateľom", + "paused": "Pozastavené", + "llmProviders": "Poskytovatelia LLM", + "enableCombo": "Povoliť kombináciu", + "removeProviderOverrideAria": "Odstrániť prepísanie poskytovateľa – ARIA", + "nodeVersion": "Verzia Node", + "openai": "OpenAI", + "exportFailedWithError": "Export zlyhal s chybou", + "proxyConfigured": "Proxy je nakonfigurované", + "concurrencyPerModel": "Súbežnosť pre jednotlivé modely", + "protocolTasksLabel": "Označenie úloh protokolu", + "oauthProviders": "Poskytovatelia OAuth", + "lockedCount": "Počet uzamknutých", + "deleteChainConfirm": "Potvrdenie odstránenia reťazca", + "recentTranslations": "Nedávne preklady", + "zedImportButton": "Tlačidlo importu zo Zed", + "responsesDesc": "Popis odpovedí", + "testedCount": "Počet otestovaných", + "providersCommaSeparatedPlaceholder": "Zástupný text poskytovateľov oddelených čiarkami", + "signatureDefaults": "Predvolené hodnoty podpisu", + "errorCreating": "Chyba pri vytváraní", + "timeRangeYear": "Časový rozsah: rok", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Cloud bol úspešne deaktivovaný", + "deleteConfirm": "Potvrdenie odstránenia", + "check": "Skontrolovať", + "safeSearch": "Bezpečné vyhľadávanie", + "protocolLastActivity": "Posledná aktivita protokolu", + "openMcpDashboard": "Otvoriť ovládací panel MCP", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Označenie cesty chatu", + "retryDelay": "Oneskorenie opakovania", + "errorUpdating": "Chyba pri aktualizácii", + "ideCliIntegrations": "Integrácie IDE a CLI", + "imageGeneration": "Generovanie obrázkov", + "apiKeyRequired": "Vyžaduje sa kľúč API", + "resetAllTitle": "Obnoviť všetko", + "connectionError": "Chyba pripojenia", + "modelName": "Názov modelu", + "apiKeyForCheck": "Kľúč API na kontrolu", + "cloudRequestTimeout": "Časový limit cloudovej požiadavky", + "showConfiguredOnly": "Zobraziť iba nakonfigurované", "showFreeOnly": "Iba zadarmo", "addFirstProvider": "Pridajte svojho prvého poskytovateľa", "addFirstProviderDesc": "Pripojte poskytovateľa AI a spustite smerovanie požiadaviek cez OmniRoute. Môžete použiť bezplatných poskytovateľov, kľúče API alebo účty OAuth.", "learnMore": "Zistite viac", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Zahrnúť domény", + "promptCache": "Vyrovnávacia pamäť promptov", + "cloudConnected": "Cloud je pripojený", + "deleteChain": "Odstrániť reťazec", + "chatPathPlaceholder": "Zástupný text cesty chatu", + "databasePath": "Cesta k databáze", + "usingLocalServer": "Používanie lokálneho servera", + "globalComboConfig": "Globálna konfigurácia kombinácií", + "backupFailed": "Zálohovanie zlyhalo", + "tabProtocols": "Protokoly kariet", + "continue": "Pokračovať", + "categorySearch": "Vyhľadávanie kategórií", + "rateLimitStatus": "Stav limitu požiadaviek", + "repairEnvSuccess": "Oprava prostredia bola úspešná", + "nameRequired": "Názov je povinný", + "country": "Krajina", + "trackMetricsDesc": "Popis sledovania metrík", + "durationSecondsShort": "Trvanie v sekundách (skrátene)", + "formatConverterDescription": "Popis konvertora formátov", + "cloudBenefitAccess": "Prístup k výhodám cloudu", + "maxRetries": "Maximálny počet opakovaní", + "queueTimeout": "Časový limit frontu", "queueDepth": "Hĺbka frontu", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Pridať poskytovateľa", + "realtime": "V reálnom čase", + "totalTranslations": "Celkový počet prekladov", + "protocolActiveStreamsLabel": "Označenie aktívnych streamov protokolu", + "repairEnv": "Opraviť prostredie", + "modelsCount": "Počet modelov", + "viewBackups": "Zobraziť zálohy", + "responsesApi": "API odpovedí", + "copyComboName": "Kopírovať názov kombinácie", + "failures": "Zlyhania", + "failedUpdate": "Aktualizácia zlyhala", + "imageDesc": "Popis obrázka", + "failedCreate": "Vytvorenie zlyhalo", + "remainingOfLimit": "Zostáva z limitu", + "protocolsTitle": "Názov protokolov", + "expirationBannerExpiringSoonDesc": "Popis bannera o blížiacom sa vypršaní platnosti", + "source": "Zdroj", + "failed": "Zlyhalo", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "1. krok rýchleho spustenia MCP", + "runTest": "Spustiť test", + "loadingFallbackChains": "Načítavajú sa záložné reťazce", + "healthy": "V poriadku", + "version": "Verzia", + "saveBlockWeighted": "Uložiť vážený blok", + "zedImportNone": "Import zo Zed: žiadny", + "noBackupsYet": "Zatiaľ žiadne zálohy", + "noGlobalProxy": "Žiadny globálny proxy server", + "noModels": "Žiadne modely", + "stickyLimit": "Pevný limit", + "passedCount": "Počet úspešných", + "zedImportFailed": "Import zo Zed zlyhal", + "saving": "Ukladá sa", + "testAll": "Otestovať všetko", + "globalProxyDesc": "Popis globálneho proxy servera", + "latencyP99": "Latencia P99", + "connectingToCloud": "Pripája sa ku cloudu", + "responses": "Odpovede", + "errorDeleting": "Chyba pri odstraňovaní", + "openaiPrefixPlaceholder": "Zástupný text predpony Openai", + "enterPassword": "Zadajte heslo", + "openA2aDashboard": "Otvoriť ovládací panel A2A", + "enableProvider": "Povoliť poskytovateľa", + "modeTest": "Test režimu", + "failedDeleteChain": "Odstránenie reťazca zlyhalo", + "providerDesc": "Popis poskytovateľa", + "templateLoadHint": "Pomôcka k načítaniu šablóny", + "lastFailure": "Posledné zlyhanie", + "moveDown": "Posunúť nadol", + "providerLabel": "Označenie poskytovateľa", + "clearCacheFailed": "Vymazanie vyrovnávacej pamäte zlyhalo", + "imagesGenerations": "Generovanie obrázkov", + "repairEnvWorking": "Oprava prostredia prebieha", + "millisecondsShort": "ms", + "globalLabel": "Globálne označenie", + "failuresPlural": "Zlyhania", + "completionsLegacyDesc": "Popis staršieho rozhrania dokončovania", + "searchProviders": "Hľadať poskytovateľov", + "chatPathHint": "Pomôcka k ceste chatu", + "defaultStrategyDesc": "Popis predvolenej stratégie", + "latencyP95": "Latencia P95", + "textToSpeech": "Prevod textu na reč", + "searchType": "Typ vyhľadávania", + "messages": "Správy", + "aggregatorsGateways": "Agregátory a brány", + "comboStrategyAria": "ARIA stratégie kombinácie", + "input": "Vstup", + "testingConnection": "Testovanie pripojenia", + "excludeDomains": "Vylúčiť domény", + "webCookieProviders": "Poskytovatelia webových súborov cookie", + "allTestsPassed": "Všetky testy boli úspešné", + "openaiCompatibleName": "Názov kompatibilný s OpenAI", + "warningCostOptimizedPartialPricing": "Upozornenie na čiastočné ceny optimalizované podľa nákladov", + "comboDefaultsGuideTitle": "Názov sprievodcu predvolenými nastaveniami kombinácie", + "hoursAgo": "Pred hodinami", + "notAvailable": "Nie je k dispozícii", + "skipAndContinue": "Preskočiť a pokračovať", + "moderations": "Moderovanie", + "proxyConfig": "Konfigurácia proxy", + "upstreamProxyProviders": "Poskytovatelia nadradených proxy", + "exportAll": "Exportovať všetko", + "queuedCount": "Počet vo fronte", + "resetAll": "Obnoviť všetko", + "noTranslations": "Žiadne preklady", + "avgLatency": "Priemerná latencia", + "throttleStatus": "Stav obmedzenia", + "backupRetentionDesc": "Popis uchovávania záloh", + "noCBData": "Žiadne údaje CB", + "chainDeleted": "Reťazec bol odstránený", + "timeLeft": "Zostávajúci čas", + "expirationBannerExpired": "Banner s upozornením na uplynutie platnosti", + "language": "Jazyk", + "invalidFileType": "Neplatný typ súboru", + "monitoredProviders": "Monitorovaní poskytovatelia", + "errors": "Chyby", + "heap": "Halda", + "chatCompletions": "Dokončenia chatu", + "exampleTemplatesHint": "Pomôcka k vzorovým šablónam", + "retryDelayLabel": "Označenie oneskorenia opakovania", + "audioTranscription": "Prepis zvuku", + "fallbackChainsDesc": "Popis záložných reťazcov", + "exampleTemplates": "Vzorové šablóny", + "connectionsCount": "Počet pripojení", + "modelsPathLabel": "Označenie cesty k modelom", + "activeProvidersHint": "Pomôcka k aktívnym poskytovateľom", + "activeLockouts": "Aktívne blokovania", + "invalid": "Neplatné", + "skipPassword": "Preskočiť heslo", + "moveUp": "Posunúť nahor", + "timeRange": "Časový rozsah", + "stickyLimitDesc": "Popis pripnutého limitu", + "cloudBenefitEdge": "Výhoda cloudu na okraji siete", + "custom": "Vlastné", + "verifying": "Overuje sa", + "baseUrlLabel": "Označenie základnej URL", + "setPassword": "Nastaviť heslo", + "safeSearchStrict": "Prísne bezpečné vyhľadávanie", + "noChangesSinceBackup": "Od zálohy neboli vykonané žiadne zmeny", + "modelsPathHint": "Pomôcka k ceste modelov", + "audioTranscriptions": "Prepisy zvuku", + "testCombo": "Otestovať kombináciu", + "mcpQuickStartTitle": "Názov rýchleho spustenia Mcp", + "comboUpdated": "Kombinácia bola aktualizovaná", + "weighted": "Vážené", + "providers": "Poskytovatelia", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Popis stavu bez záložných reťazcov", + "yesImport": "Áno, importovať", + "lockoutsAutoRefreshHint": "Pomôcka k automatickému obnovovaniu blokovaní", + "tabApis": "Karta API", + "sectionDescription": "Popis sekcie", + "filter": "Filtrovať", + "purgeLogsFailed": "Vymazanie protokolov zlyhalo", + "latency": "Latencia", + "testAllOAuth": "Otestovať všetky OAuth", + "mcpQuickStartStep3": "Krok 3 rýchleho spustenia Mcp", + "repairEnvFailed": "Oprava prostredia zlyhala", + "zedImportHint": "Pomôcka k importu zo Zed", + "modelsAcrossEndpoints": "Modely naprieč koncovými bodmi", + "autoDisableBannedAccounts": "Automaticky deaktivovať zablokované účty", + "securityDesc": "Popis zabezpečenia", + "listModels": "Zobraziť zoznam modelov", + "backupRestore": "Zálohovanie a obnovenie", + "target": "Cieľ", + "zedImportSuccess": "Import zo Zed bol úspešný", + "lastHeaderUpdate": "Posledná aktualizácia hlavičky", + "categoryCore": "Jadro kategórie", + "noFallbackChains": "Žiadne reťazce záložných možností", + "noSearchProviders": "Žiadni poskytovatelia vyhľadávania", + "autoBalance": "Automatické vyvažovanie", + "noModelsYet": "Zatiaľ žiadne modely", + "signatureFamily": "Rodina podpisov", + "externalApiCalls": "Externé volania API", + "providerOverridesDesc": "Popis prepísaní poskytovateľa", + "signatureTool": "Nástroj na podpisovanie", + "connectionFailed": "Pripojenie zlyhalo", + "activeLimitersPlural": "Aktívne obmedzovače – množné číslo", + "doneDesc": "Popis dokončenia", + "down": "Nedostupné", + "noDataYet": "Zatiaľ žiadne údaje", + "activeProviders": "Aktívni poskytovatelia", + "nameInvalid": "Neplatný názov", + "skip": "Preskočiť", + "createChain": "Vytvoriť reťazec", + "audioSpeech": "Zvuková reč", + "cacheCleared": "Vyrovnávacia pamäť bola vymazaná", + "searchTypeNews": "Typ vyhľadávania: správy", + "durationMillisecondsShort": "Trvanie v milisekundách – skrátene", + "addOpenAICompatible": "Pridať kompatibilného poskytovateľa Open Ai", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "Vo fronte", + "domainPlaceholder": "Zástupný text domény", + "durationMinutesShort": "Trvanie v minútach – skrátene", + "verifyingConnection": "Overuje sa pripojenie", + "imageProviders": "Poskytovatelia obrázkov", + "protocolToolsLabel": "Označenie nástrojov protokolu", + "queryPlaceholder": "Zástupný text dopytu", + "videoGeneration": "Generovanie videa", + "timeRangeWeek": "Časový rozsah: týždeň", + "limitExhausted": "Limit bol vyčerpaný", + "failedDisable": "Zakázanie zlyhalo", + "inMemoryNote": "Poznámka k uloženiu v pamäti", + "compatibleHint": "Tip ku kompatibilite", + "errorShort": "Krátka chyba", + "advancedHint": "Tip k rozšíreným nastaveniam", + "restoreFailed": "Obnovenie zlyhalo", + "searchProvidersHeading": "Nadpis poskytovateľov vyhľadávania", + "comboName": "Názov kombinácie", + "autoDisableDescription": "Popis automatického deaktivovania", + "embeddingsDesc": "Popis embeddingov", + "operational": "Funkčné", + "testAllApiKey": "Otestovať všetky kľúče API", + "backupCreated": "Záloha bola vytvorená", + "errorDuringImport": "Chyba počas importu", + "comboDefaultsGuideHint2": "Pomôcka 2 k predvoleným nastaveniam kombinácie", + "connecting": "Pripája sa", + "fillModelAndProviders": "Vyplňte model a poskytovateľov", + "syncing": "Synchronizuje sa", + "resetConfirm": "Potvrdenie obnovenia", + "trackMetrics": "Sledovať metriky", + "successful": "Úspešné", + "recovering": "Obnovuje sa", + "autoDisableThreshold": "Prahová hodnota automatického deaktivovania", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Synchronizujú sa údaje", + "cloudBenefitPorts": "Výhoda cloudu: porty", + "compatibleProviders": "Kompatibilní poskytovatelia", "freeTierProviders": "Poskytovatelia bezplatnej úrovne", "freeTierLabel": "K dispozícii je bezplatná úroveň", "freeTierProvidersDesc": "Poskytovatelia s bezplatnými vrstvami – niektorí vyžadujú registráciu kľúča API, iní nepotrebujú žiadne poverenia.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Vymazať vyrovnávaciu pamäť", + "reqs": "Požiadavky", + "addAnthropicCompatible": "Pridať poskytovateľa kompatibilného s Anthropic", + "apiKeyProviders": "Poskytovatelia kľúčov API", + "tabsAria": "ARIA kariet", + "resetting": "Obnovuje sa", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Dôvod zálohy pred obnovením", + "disableCloud": "Zakázať cloud", + "newProviderNameAria": "ARIA názvu nového poskytovateľa", + "passwordsMismatch": "Heslá sa nezhodujú", + "a2aQuickStartStep3": "Krok 3 rýchleho spustenia A2A", + "liveMonitorDescriptionSuffix": "Prípona popisu živého monitorovania", + "failedAddProvider": "Poskytovateľa sa nepodarilo pridať", + "addAtLeastOneProvider": "Pridajte aspoň jedného poskytovateľa", + "reasonSeparator": "Oddeľovač dôvodu", + "zedImporting": "Zed importuje", + "confirmPasswordPlaceholder": "Potvrďte heslo", + "whatYouGet": "Čo získate", + "signatureSession": "Relácia podpisu", + "errorCountNoCode": "Počet chýb bez kódu", + "testing": "Testovanie", + "providersCommaSeparated": "Poskytovatelia oddelení čiarkami", + "exportDatabase": "Exportovať databázu", + "hitRate": "Miera úspešnosti", + "completionsLegacy": "Staršie dokončenia", + "removeModel": "Odstrániť model", + "timeRangeDay": "Časový rozsah: deň", + "cloudRequestFailed": "Cloudová požiadavka zlyhala", + "updatedAt": "Aktualizované", + "monitoredProvidersHint": "Pomôcka k monitorovaným poskytovateľom", + "connectionSuccessful": "Pripojenie bolo úspešné", + "latencyP50": "Latencia P50", + "logsDeleted": "Protokoly boli odstránené", + "chatTester": "Tester chatu", + "safeSearchOff": "Bezpečné vyhľadávanie vypnuté", + "nameHint": "Pomôcka k názvu", + "debugToggle": "Prepínač ladenia", + "embedding": "Vkladanie", + "issuesLabel": "Označenie problémov", + "optionAny": "Možnosť: ľubovoľná", + "maxNestingDepth": "Maximálna hĺbka vnorenia", + "rerank": "Zmena poradia", + "checking": "Kontroluje sa", + "getStarted": "Začíname", + "restoreSuccess": "Obnovenie bolo úspešné", + "issuesDetected": "Zistené problémy", + "signatureCache": "Vyrovnávacia pamäť podpisov", + "modelLockouts": "Blokovania modelov", + "usingCloudProxy": "Používa sa cloudový proxy server", + "loadingHealth": "Načítava sa stav", + "providerOverrides": "Prepísania poskytovateľov", + "audioTranscriptionDesc": "Popis prepisu zvuku", + "learnedFromHeaders": "Zistené z hlavičiek", + "totalRequests": "Celkový počet požiadaviek", + "cloudUnstableNote": "Poznámka k nestabilite cloudu", "gamificationAdmin": "Správca gamifikácia", "monitorAnomaliesAndHealth": "Monitorujte anomálie a stav systému", "flaggedAnomalies": "Označené anomálie", @@ -704,7 +704,7 @@ "apiKey": "API kľúč", "xpLastHour": "XP (1 h)", "zScore": "Z-skóre", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Podozrivé", "tokensCommunityServers": "komunitné servery", "tokensServerNamePlaceholder": "Názov servera", "tokensApiKeyPlaceholder": "API kľúč", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Načítava sa viac…", "recommended": "Odporúčané", "understand": "Rozumiem", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", + "batchConceptTitle": "Dávkové spracovanie", + "batchConceptSubtitle": "Spracujte tisíce požiadaviek asynchrónne za približne 50 % nákladov (v rámci 24-hodinového okna). Ideálne na vyhodnocovanie, klasifikáciu a vkladanie.", + "batchConceptHowItWorks": "Ako to funguje", + "batchConceptBenefit50pct": "50 % zľava na vstupné + výstupné tokeny", + "batchConceptAsync24h": "Asynchrónne s 24-hodinovým časovým oknom na dokončenie", + "batchConceptUseCases": "Ideálne na hromadnú klasifikáciu, vyhodnocovanie a embeddingy", + "batchHeaderSubtitle": "Spustite viacero požiadaviek ako jednu úlohu", + "batchStep1": "1 · Nahrajte JSONL", + "batchStep1Desc": "Pridajte požiadavky", + "batchStep2": "2 · Vytvorte dávku", + "batchStep2Desc": "Spustite úlohu", + "batchStep3": "3 · Získajte výsledky", + "batchStep3Desc": "Stiahnite výstup", + "filesConceptTitle": "Dávkové súbory", + "filesConceptSubtitle": "Súbory JSONL používané dávkami: vstupné požiadavky, výsledky a chyby.", + "filesConceptInput": "Vstup — váš súbor JSONL s jednou požiadavkou na riadok", + "filesConceptOutput": "Výstup — výsledky dokončených požiadaviek", + "filesConceptError": "Chyby — požiadavky, ktoré zlyhali", + "filesConceptRetention": "Uchovávanie: predvolene 30 dní (29 dní na Anthropic)", + "wizardTitle": "Nová dávka", + "wizardClose": "Zavrieť", + "wizardNext": "Ďalej", + "wizardBack": "Späť", + "wizardCancel": "Zrušiť", + "wizardCreate": "Vytvoriť dávku", + "wizardCreating": "Vytvára sa…", + "wizardStep1Destination": "Cieľ", + "wizardStep2Input": "Vstup", + "wizardStep3Validate": "Overiť", + "wizardStep4Cost": "Cena a vytvorenie", + "wizardProviderLabel": "Poskytovateľ", + "wizardEndpointLabel": "Koncový bod", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (skonvertujeme ho)", + "wizardDropOrPick": "Presuňte sem súbor alebo kliknite a vyberte ho", + "wizardCsvMappingTitle": "Priraďte stĺpce CSV → poliam požiadavky", + "wizardCsvMappingAddField": "Pridať pole", "wizardCsvNoColumns": "V hlavičke CSV sa nezistili žiadne stĺpce.", "wizardCsvIgnoreColumn": "— ignorovať —", "wizardCsvCustomIdMapped": "custom_id namapované", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} spracovaných riadkov", "wizardCsvRowsSkipped": "{count} preskočených riadkov", "wizardCsvRowError": "Riadok {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Všetky riadky sú platné", "wizardValidating": "Overuje sa…", "wizardValidationParseFailed": "Validácia zlyhala — nepodarilo sa analyzovať obsah.", "wizardValidationSummary": "{lines} riadkov · {ids} unikátnych custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Zistené duplicitné custom_ids:", "wizardValidationFirstErrors": "Chyby (prvých {count}):", "wizardValidationLine": "Riadok {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Chyby overenia", + "wizardValidationPreview": "Ukážka (prvých 5 požiadaviek)", + "wizardValidationSamplingNote": "Súbor je veľký — overenie prebehlo na vzorke (prvých 1000 + posledných 100 riadkov). Úplné overenie prebehne na strane servera.", + "wizardCostSync": "Cena synchronizácie", + "wizardCostBatch": "Cena dávky (-50 %)", + "wizardCostSavings": "Úspora", + "wizardCostEstimatedNotice": "Odhadovaná cena — skutočná fakturácia sa môže líšiť.", + "wizardErrorUpload": "Súbor sa nepodarilo nahrať. Skúste to znova.", + "wizardErrorCreate": "Dávku sa nepodarilo vytvoriť. Skúste to znova.", + "wizardEmptyProviders": "Ak chcete vytvoriť dávku, pripojte poskytovateľa s podporou dávok (OpenAI, Anthropic alebo Gemini).", + "uploadModalTitle": "Nahrať dávkový súbor", + "uploadModalDropOrPick": "Sem presuňte súbor .jsonl alebo ho vyberte kliknutím", + "uploadModalUpload": "Nahrať", + "uploadModalCancel": "Zrušiť", + "uploadModalError": "Nahrávanie zlyhalo. Skúste to znova.", + "uploadModalSuccess": "Nahrané", + "uploadModalSizeLimit": "Max. 512 MB", + "batchListNewButton": "Nová dávka", + "batchListAutoRefresh": "Automatické obnovenie každých 30 s", + "batchListCostColumn": "Cena", + "batchActionCancel": "Zrušiť", + "batchActionDownloadOutput": "Stiahnuť výstup", + "batchActionDownloadErrors": "Stiahnuť chyby", + "batchActionRetry": "Zopakovať neúspešné", + "batchActionRetryConfirm": "Zopakovať {n} neúspešných požiadaviek? Konečná cena závisí od skutočne spotrebovaných tokenov.", + "expirationBadgeCritical": "Kritické", + "expirationBadgeWarning": "Čoskoro", + "expirationBadgeNormal": "Čaká sa", + "expirationBadgeExpired": "Platnosť vypršala", + "filesListUploadButton": "Nahratie", + "filesListUsedByColumn": "Používa sa v", + "filesListUsedByNone": "Žiadne", + "filesListUsedByRoleInput": "vstup", + "filesListUsedByRoleOutput": "výstup", + "filesListUsedByRoleError": "chyba", + "filesListSizeColumn": "Veľkosť", + "batchListProgressPartial": "(čiastočné)", + "batchListProviderColumn": "Poskytovateľ", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "Iné", + "batchListTitle": "Dávky", + "batchListCount": "Počet dávok: {count}", + "batchListRemovingCompleted": "Odstraňuje sa…", + "batchListRemoveCompleted": "Odstrániť dokončené", + "batchListTableStatus": "Stav", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Koncový bod", "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableProgress": "Priebeh", + "batchListTableCreated": "Vytvorené", + "batchListTableExpires": "Platnosť vyprší", + "batchListLoading": "Načítava sa…", + "batchListEmpty": "Nenašli sa žiadne dávky", + "batchListValidating": "Overuje sa…", + "batchStatusAll": "Všetky stavy", + "batchStatusInProgress": "Prebieha", + "batchStatusValidating": "Overuje sa", + "batchStatusFinalizing": "Dokončuje sa", + "batchStatusCompleted": "Dokončené", + "batchStatusFailed": "Zlyhalo", + "batchStatusCancelled": "Zrušené", + "batchStatusCancelling": "Ruší sa", + "batchStatusExpired": "Platnosť vypršala", + "batchStatusCompletedWithFailures": "dokončené s chybami", + "batchStatusInProgressWithFailures": "prebieha (s chybami)", + "batchStatusFinalizingWithFailures": "dokončuje sa (s chybami)", + "batchStatusCancelledWithFailures": "zrušené s chybami", + "batchStatusExpiredWithFailures": "platnosť vypršala (čiastočne)", + "wizardCostEstimating": "Odhadujú sa náklady…", + "wizardCostRequests": "Požiadavky", + "wizardCostInputTok": "vstupné tokeny", + "wizardCostOutputTok": "výstupné tokeny", + "wizardCostWindow": "Okno", + "wizardDestinationSelectProvider": "Vyberte poskytovateľa…", + "wizardDestinationSelectModel": "Vyberte model…", + "wizardDestinationConnectProvider": "Pripojiť poskytovateľa", + "batchListBatchCreated": "Dávka {id} bola vytvorená — obnovuje sa zoznam…", + "batchListBatchCreatedDismiss": "Zavrieť", + "batchListRefreshing": "Obnovuje sa…", + "batchListRefresh": "Obnoviť", + "uploadFileModalRemove": "Odstrániť", + "uploadFileModalUploading": "Nahráva sa…", + "wizardInputReading": "Číta sa súbor…", + "wizardInputReady": "Pripravené", + "wizardInputLargeFileLabel": "Veľký súbor — overenie vzorkovaním", + "wizardInputCsvJsonlReady": "JSONL vygenerovaný — pripravený na overenie.", + "wizardInputLargeFileWarning": "Zistil sa veľký súbor — overenie prebieha vzorkovaním (prvých 5 MB + posledných 100 KB). Úplné overenie prebehne na strane servera.", + "wizardCostWindow24h": "24-hodinové okno na dokončenie", + "wizardValidationFieldsOk": "povinné polia sú platné", + "filesListDelete": "Odstrániť", + "filesListDownload": "Stiahnuť", + "batchDetailActionCancel": "Zrušiť dávku", + "batchDetailActionRetry": "Zopakovať neúspešné požiadavky", + "batchDetailCancelling": "Ruší sa…", + "batchDetailRetrying": "Pripravuje sa opakovanie…", + "batchDetailCancelConfirm": "Zrušiť túto dávku? Prebiehajúce požiadavky sa zastavia.", + "batchActionCancelError": "Dávku sa nepodarilo zrušiť. Skúste to znova.", + "batchActionRetryError": "Neúspešné požiadavky sa nepodarilo zopakovať. Skúste to znova.", + "batchConceptRetentionNote": "Súbory s výsledkami a chybami sa uchovávajú 30 dní (Anthropic: 29 dní)", "batchFilesSizeColumn": "Veľkosť", "toggleNoAuthProvider": "Prepnúť poskytovateľa bez autentifikácie", "loadingModels": "Načítavam modely…", @@ -988,21 +988,21 @@ "disabled": "Zakázané", "featureFlagOmnirouteEmergencyFallbackDescription": "Smerovať požiadavky s vyčerpaným rozpočtom na núdzového bezplatného záložného poskytovateľa/model.", "featureFlagArenaEloSyncEnabledDescription": "Povoliť pravidelnú synchronizáciu ELO z rebríčka Arena AI pre hodnotenie inteligencie modelov.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Generovať a vkladať súhrny konverzácií, keď kombinované smerovanie prepína modely. Vypnutím sa prepnutia modelov budú spracúvať nezávisle a zabránite požiadavkám na odovzdanie na pozadí pre všetky existujúce aj budúce kombinácie.", "featureFlagExposeCcDiscoveryAliasesDescription": "Inzerujte claude/<provider>/<model> zrkadlové ID na /v1/models, aby zoznam objavovania modelov Claude Code obsahoval aj modely, ktoré nie sú Claude. Upozornenie: pri globálnom povolení zdvojuje záznamy v katalógu pre všetkých klientov.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Hlavný prepínač aliasov brány no-think/<provider>/<model>. Zapnuté (predvolené): /v1/models uvádza variant bez uvažovania pre každý podporovaný model Claude schopný uvažovania a identifikátor no-think/ odoslaný v požiadavke sa preloží späť na skutočný model s potlačeným uvažovaním. Vypnuté: neuvádzajú sa žiadne varianty a s identifikátorom no-think/ sa zaobchádza ako s akýmkoľvek iným neznámym identifikátorom modelu. Individuálne prihlásenie alebo odhlásenie modelu pomocou ModelSpec.noThinkingAlias sa uplatňuje aj vtedy, keď je táto možnosť zapnutá.", "featureFlagChatVirtualLanesEnabledDescription": "Povoľte adaptívne virtuálne vstupné pruhy pre každého nájomcu (tenant) pri odosielaní poskytovateľom (#9654): špička jedného nájomcu už nespôsobí 503 u iného. Premenná prostredia OMNIROUTE_CHAT_VIRTUAL_LANES má prednosť pred týmto nastavením v riadiacom paneli; zmeny sa prejavia po reštarte servera.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Stránky poskytovateľov na ovládacom paneli: odznak Bezplatné zobrazujú iba na základe signálov, ktoré poskytovateľ rešpektuje — nepoužíva sa heuristika zobrazovaného názvu, nepravdivostné polia označujúce bezplatnosť ani prípony :free pri registrovaných poskytovateľoch bez zdokumentovanej bezplatnej úrovne. Vypnutie zachová pôvodné pravidlo zobrazovania odznaku.", + "featureFlagProxySkipRecentlyFailedDescription": "Fondy proxy serverov a rotácia opencode pre jednotlivé účty prestanú počas obdobia platného pre daný proces opätovne používať proxy server, ktorý práve zlyhal (odmietnutá sonda TCP alebo odpoveď 429 prijatá cez tento proxy server). Toto obdobie sa pri každom opakovaní zdvojnásobí až po stanovený limit. Stav proxy servera sa nezapisuje; ak sú všetci kandidáti odložení bokom, výber zostáva nezmenený. Predvolene vypnuté: poradie výberu presne zodpovedá bežnej rotácii.", + "featureFlagProxyPoolEgressObservationDescription": "V ovládacom paneli zobraziť pod fondom proxy serverov, koľko pozorovaných výstupných IP adries obsluhovalo jeho členov za posledných 24 h, koľko pripojení ich použilo a najvyšší počet zaznamenaný za jednou IP adresou. Iba na čítanie, vypočítané z denníka proxy servera a nikdy nepoužívané na smerovanie. Predvolene vypnuté: editor fondu zostáva nezmenený a trasa pozorovania vracia null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Pri kontrole stavu proxy serverov umožniť, aby sonda odmietnutá cieľom (401/403/429: proxy server ju preniesol, ale cieľ odmietol túto výstupnú IP adresu) vynulovala sériu po sebe nasledujúcich zlyhaní proxy servera rovnako ako obslúžená sonda. Predvolene vypnuté: odmietnutie zostáva neutrálne a zachováva sériu. Odpoveď 5xx zostáva v oboch prípadoch nejednoznačná a odmietnutie nikdy neodstráni, nezakáže ani znovu neaktivuje proxy server.", "sidebar": { "home": "Domov", - "dashboard": "Dashboard", + "dashboard": "Prehľad", "providers": "Poskytovatelia", "combos": "kombá", "usage": "Použitie", - "analytics": "Analytics", + "analytics": "Analytika", "costs": "náklady", "health": "Zdravie", "proxy": "Proxy", @@ -1012,19 +1012,19 @@ "settings": "Nastavenia", "translator": "Prekladateľ", "playground": "Ihrisko", - "searchTools": "Search Tools", + "searchTools": "Vyhľadávacie nástroje", "agents": "Agenti", "cloudAgents": "Cloud Agenti", - "memory": "Memory", - "skills": "Skills", + "memory": "Pamäť", + "skills": "Zručnosti", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", "chaosConfig": "Režim chaosu", - "docs": "Docs", + "docs": "Dokumentácia", "issues": "Problémy", "endpoints": "Koncové body", "endpointsSubtitle": "Vaše webové adresy pripojenia AI", - "apiManager": "API Keys", + "apiManager": "Kľúče API", "apiManagerSubtitle": "Spravujte kľúče API a prístup", "embeddedServices": "Zabudované Služby", "embeddedServicesSubtitle": "Spravovať lokálne proxy služby", @@ -1037,7 +1037,7 @@ "batchSubtitle": "Spracovať viacero žiadostí", "contextCavemanSubtitle": "Rýchla kompresia", "contextRtkSubtitle": "Výstupné filtrovanie", - "auditLog": "Audit Log", + "auditLog": "Protokol auditu", "shutdown": "Vypnutie", "restart": "Reštartujte", "shutdownConfirm": "Vypnúť OmniRoute?", @@ -1055,59 +1055,59 @@ "serverDisconnectedMsg": "Proxy server bol zastavený alebo sa reštartuje.", "expandSidebar": "Rozbaliť bočný panel", "collapseSidebar": "Zbaliť bočný panel", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themes": "Motívy", + "presetColors": "Obľúbené farby", + "createTheme": "Vytvoriť motív", + "chooseColor": "Vyberte jednu farbu", + "themeCoral": "Koralová", + "themeBlue": "Modrá", + "themeRed": "Červená", + "themeGreen": "Zelená", + "themeViolet": "Fialová", + "themeOrange": "Oranžová", + "themeCyan": "Azúrová", "cliToolsShort": "Nástroje", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Dávkové úlohy", + "themeSystem": "Systém tém", + "whitelabelingDesc": "Popis prispôsobenia značky", + "switchThemes": "Prepínať témy", + "themeAccentDesc": "Popis farby motívu", + "uploadFavicon": "Nahrať favicon", + "themeDark": "Tmavá téma", + "customLogoDesc": "Popis vlastného loga", + "sidebarVisibilityToggle": "Prepínač viditeľnosti bočného panela", + "themeAccent": "Farba motívu", + "resetFavicon": "Obnoviť favicon", + "whitelabeling": "Prispôsobenie značky", + "darkMode": "Tmavý režim", + "uploadLogo": "Nahrať logo", + "themeLight": "Svetlá téma", + "appName": "Názov aplikácie", + "appNameDesc": "Popis názvu aplikácie", + "resetLogo": "Obnoviť logo", + "customFavicon": "Vlastný favicon", + "hideHealthLogs": "Skryť protokoly stavu", + "customLogo": "Vlastné logo", + "appearance": "Vzhľad", + "themeSelectionAria": "ARIA označenie výberu témy", + "themeCreate": "Vytvoriť tému", + "customFaviconDesc": "Popis vlastného faviconu", + "logoPreview": "Ukážka loga", + "themeCustom": "Vlastná téma", + "hideHealthLogsDesc": "Popis skrytia protokolov stavu", + "faviconPreview": "Ukážka faviconu", + "changelog": "Zoznam zmien", + "contextSection": "Kontext a vyrovnávacia pamäť", + "contextCaveman": "Jaskynný človek", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Kombinácie enginov", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Nastavenia kompresie", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Živá kaskáda enginov", "compressionExclusionsSubtitle": "Obídenie na základe modelu/koncového bodu", "chaosConfigSubtitle": "Paralelné vykonávanie viacerých modelov", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Smerovanie", + "protocolsSection": "Protokoly", + "agentsAiSection": "Agenti a AI", + "cacheContextSection": "Vyrovnávacia pamäť a kontext", + "analyticsSection": "Analytika", + "costsSection": "Náklady", + "monitoringSection": "Monitorovanie", + "auditSecuritySection": "Audit a zabezpečenie", + "devtoolsSection": "Vývojárske nástroje", + "configurationSection": "Konfigurácia", + "aiFeaturesSection": "Funkcie AI", "mcp": "MCP", "a2a": "A2A", "plugins": "Pluginy", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "Koncové body API", + "batchFiles": "Súbory", + "analyticsEvals": "Vyhodnotenia", + "analyticsSearch": "Vyhľadávanie", + "analyticsUtilization": "Využitie", + "analyticsComboHealth": "Stav Combo", + "analyticsCompression": "Kompresia", + "costsBudget": "Rozpočet", "costsFreeTiers": "Rozpočet bezplatnej úrovne", "costsFreeTiersSubtitle": "Mesačné prídely bezplatných tokenov", "freeProviderRankings": "Rebríčky bezplatných poskytovateľov", "freeProviderRankingsSubtitle": "Najlepší bezplatní poskytovatelia zoradení podľa ELO skóre modelov", "radar": "Radar katalóg", "radarSubtitle": "Bezplatný modelový katalóg obohatený komunitou", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Zdieľanie kvót", + "costsPricing": "Cenník", + "logsProxy": "Protokoly proxy", + "logsConsole": "Konzola", + "logsActivity": "Aktivita", + "auditMcp": "Audit MCP", "auditA2a": "Audit A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Vzhľad", + "settingsAi": "Nastavenia AI", + "settingsSecurity": "Zabezpečenie", "settingsAccessTokens": "Prístupové tokeny", "settingsFeatureFlags": "Príznaky funkcie", - "settingsCache": "Cache", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsCache": "Vyrovnávacia pamäť", + "settingsAuthz": "Autorizácia", + "settingsRouting": "Smerovanie", + "settingsResilience": "Odolnosť", "modelLockout": "Uzamknutie modelu", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Rozšírené", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Kvóta poskytovateľa", + "providerQuota": "Kvóta poskytovateľa", + "runtime": "Runtime prostredie", + "consoleLogs": "Konzolové záznamy", + "logsTimeline": "Časová os", "logsTimelineSubtitle": "Vizualizácia časovej osi požiadaviek", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Konverzácie", + "conversationsSubtitle": "Viackolové agentné konverzácie", + "globalRouting": "Globálne smerovanie", + "mitmProxy": "MITM proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Agentné funkcie", + "otherFeaturesSection": "Ďalšie funkcie", + "compressionContextGroup": "Kompresia kontextu", + "gamificationGroup": "Gamifikácia", + "toolsGroup": "Nástroje", + "integrationsGroup": "Integrácie", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", + "costsParametersGroup": "Parametre nákladov", "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "batchGroup": "Dávkové spracovanie", + "homeSubtitle": "Prehľad ovládacieho panela", + "providersSubtitle": "Spravovať poskytovateľov AI", + "quotaTrackerSubtitle": "Sledovať limity používania", + "providerQuotaSubtitle": "Sledovať limity používania poskytovateľov", + "runtimeSubtitle": "Odolnosť a relácie v reálnom čase", + "contextCombosSubtitle": "Kombinovať kompresné mechanizmy", + "cliToolsSubtitle": "Konfigurovať runtime prostredia CLI", + "agentsSubtitle": "Spravovať lokálnych agentov", + "cloudAgentsSubtitle": "Spravovať cloudových agentov", + "apiEndpointsSubtitle": "Sprístupniť vlastné koncové body", + "proxySubtitle": "Nastavenia HTTP proxy", + "mitmProxySubtitle": "Zachytávanie MITM", + "oneProxySubtitle": "Verejná proxy brána", + "leaderboard": "Rebríček", + "profile": "Profil", + "tokens": "Tokeny", + "gamificationAdmin": "Správa gamifikácie", + "leaderboardSubtitle": "Rebríčky a úspechy", + "profileSubtitle": "Účet a predvoľby", + "tokensSubtitle": "Používanie tokenov a rozpočty", + "gamificationAdminSubtitle": "Monitorovanie anomálií a ochrana proti podvádzaniu", + "usageSubtitle": "Štatistiky prevádzky a používania", + "analyticsComboHealthSubtitle": "Spoľahlivosť cieľov Combo", + "analyticsUtilizationSubtitle": "Využitie poskytovateľov", + "costsSubtitle": "Rozdelenie výdavkov", + "cacheSubtitle": "Miery zásahov do vyrovnávacej pamäte", + "analyticsCompressionSubtitle": "Štatistiky úspory tokenov", + "analyticsSearchSubtitle": "Analytika vyhľadávacieho nástroja", + "analyticsEvalsSubtitle": "Výsledky sady hodnotení", "providerStats": "Štatistiky poskytovateľov", "providerStatsSubtitle": "Metriky latencie a výkonu", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Protokoly aplikácie", + "logsProxySubtitle": "Protokoly prevádzky proxy", + "consoleLogsSubtitle": "Výstup konzoly", + "logsActivitySubtitle": "Protokol aktivity používateľov", + "healthSubtitle": "Kontrola stavu systému", + "costsPricingSubtitle": "Cenové pravidlá pre jednotlivé modely", + "costsBudgetSubtitle": "Rozpočtové limity", + "costsQuotaShareSubtitle": "Zdieľať kvóty poskytovateľov medzi kľúčmi", + "auditLogSubtitle": "Audit autorizácie", + "auditMcpSubtitle": "Audit servera MCP", + "auditA2aSubtitle": "Audit protokolu A2A", + "translatorSubtitle": "Konverzia formátu", + "playgroundSubtitle": "Testovať prompty naživo", + "searchToolsSubtitle": "Register vyhľadávacích nástrojov", + "memorySubtitle": "Trvalá pamäť agenta", + "omniSkillsSubtitle": "Register zručností sandboxu", + "agentSkillsSubtitle": "Register zručností A2A", + "mcpSubtitle": "Ovládanie servera MCP", + "a2aSubtitle": "Server protokolu A2A", "pluginsSubtitle": "Trhovisko pluginov a inštalácie", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Mediálne súbory vo vyrovnávacej pamäti", + "batchFilesSubtitle": "Súbory dávkového vstupu/výstupu", + "settingsSubtitle": "Všetky nastavenia", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Motív a rozloženie", + "settingsAiSubtitle": "Predvolené správanie AI", + "globalRoutingSubtitle": "Globálne pravidlá smerovania", + "settingsResilienceSubtitle": "Opakované pokusy a ističe", + "settingsAdvancedSubtitle": "Možnosti pre pokročilých používateľov", + "settingsSecuritySubtitle": "Overovanie a šifrovanie", "settingsAccessTokensSubtitle": "CLI tokeny s vymedzeným rozsahom pre vzdialený režim", "settingsFeatureFlagsSubtitle": "Prepínajte možnosti systému", "settingsCacheSubtitle": "Katalóg modelov a cache odpovedí", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Bočný panel", + "settingsSidebarSubtitle": "Prispôsobiť rozloženie bočného panela", "settingsAuthzSubtitle": "Inventár trás a pravidlá obchádzania", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Dokumentácia", + "issuesSubtitle": "Nahlásiť chybu", + "changelogSubtitle": "Poznámky k vydaniu", "costsQuotaPlans": "Plány a kvóty", "costsQuotaPlansSubtitle": "Konfigurácia plánov podľa poskytovateľa", "activity": "Aktivita", @@ -1275,11 +1275,11 @@ "systemGroup": "Systém", "costsOverview": "Prehľad", "costsOverviewSubtitle": "Konsolidovaná analýza nákladov", - "agentBridge": "Agent Bridge", + "agentBridge": "Most agentov", "agentBridgeSubtitle": "Zachytávať prevádzku agentov IDE", "trafficInspector": "Inšpektor prevádzky", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Kontrolujte prenos požiadaviek a odpovedí z vašich aplikácií", + "trafficInspectorPurpose": "Pozrite si presne, čo vaša aplikácia odosiela poskytovateľom AI a čo od nich prijíma. Funguje s ľubovoľným klientom kompatibilným s OpenAI.", "cliCode": "CLI Code", "cliCodeSubtitle": "Nástroje na kódovanie smerujúce na OmniRoute", "cliAgents": "CLI agenti", @@ -1345,7 +1345,7 @@ "refresh": "Obnoviť", "loading": "Načítavajú sa webhooky...", "never": "Nikdy", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {žiadne zlyhania} one {# zlyhanie} few {# zlyhania} other {# zlyhaní}}", "testWebhook": "Odoslať test", "testSuccess": "Testovací webhook bol úspešne odoslaný.", "testFailed": "Test webhooku zlyhal.", @@ -1461,7 +1461,7 @@ "eventTypePlaceholder": "Filtrujte podľa akcie alebo typu udalosti", "severity": "Závažnosť", "allSeverities": "Všetky závažnosti", - "info": "Info", + "info": "Informácie", "warning": "Upozornenie", "critical": "Kritické", "sourceIp": "IP zdroja", @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "Najlepší nástroj" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "Témy", + "description": "Vyberte si prednastavenú tému alebo si vytvorte vlastnú pomocou jednej farby", + "presetColors": "Obľúbené farby", + "customTheme": "Vlastná téma", + "customThemeDesc": "Kliknite na položku Vytvoriť tému a vyberte jednu farbu", + "createTheme": "Vytvoriť tému", + "activePreset": "Aktívna téma" }, "header": { "logout": "Odhlásiť sa", @@ -1585,69 +1585,69 @@ "comboDescription": "Modelové kombá s rezervou", "usage": "Použitie a analýza", "usageDescription": "Monitorujte používanie rozhrania API, spotrebu tokenov a denníky požiadaviek", - "analytics": "Analytics", + "analytics": "Analytika", "analyticsDescription": "Grafy, trendy a prehľady hodnotení", "cliTools": "Nástroje CLI", "cliToolsDescription": "Konfigurácia nástrojov CLI", "home": "Domov", "homeDescription": "Vitajte v OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Koncové body", + "endpointDescription": "Spravujte proxy koncové body, MCP, A2A a API koncové body", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Správa serverov a nástrojov protokolu Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Úlohy a pozorovateľnosť protokolu Agent-to-Agent", "settings": "Nastavenia", "settingsDescription": "Spravujte svoje preferencie", "openaiCompatible": "Kompatibilné s OpenAI", "anthropicCompatible": "Antropické kompatibilné", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "media": "Médiá", + "mediaDescription": "Generujte obrázky, videá a hudbu", + "themes": "Témy", + "themesDescription": "Vyberte farebnú tému pre celý panel ovládacieho centra", + "costsDescription": "Sledujte výdavky, analyzujte trendy a spravujte svoj rozpočet na AI naprieč všetkými poskytovateľmi", + "cacheDescription": "Monitorujte efektivitu vyrovnávacej pamäte promptov poskytovateľov a lokálne opätovné využitie sémantických odpovedí.", + "limitsDescription": "Nakonfigurujte limity rýchlosti a kvóty pre jednotlivé kľúče API a poskytovateľov", + "runtimeDescription": "Pozorovateľnosť behu v reálnom čase — ističe, intervaly čakania, blokovania modelov, relácie a upozornenia na kvóty", + "apiManagerDescription": "Spravujte kľúče API a riadenie prístupu pre svoju inštanciu OmniRoute", + "batchDescription": "Spracúvajte veľké objemy požiadaviek asynchrónne pomocou dávkových volaní API", + "contextCavemanDescription": "Kompresia správ založená na pravidlách, jazykové balíky, analytika a ovládanie režimu výstupu.", + "contextRtkDescription": "Kompresia výstupu nástrojov, terminálových protokolov a výsledkov zostavenia so zohľadnením príkazov.", + "contextCombosDescription": "Definujte spôsob kombinovania enginov pre rôzne scenáre smerovania.", + "changelogDescription": "Majte prehľad o najnovších funkciách platformy a oznámeniach.", + "agentsDescription": "Spravujte a konfigurujte nástroje AI agentov: Codex, Devin, Jules a vlastné agenty", + "cloudAgentsDescription": "Orchestrujte cloudových AI agentov so živým sledovaním úloh a schvaľovaním plánov", + "memoryDescription": "Trvalá konverzačná pamäť so sémantickým vyhľadávaním a fulltextovým indexovaním FTS5", + "skillsDescription": "Inštalujte a spravujte sandboxové zručnosti na automatizované vykonávanie promptov a nástrojov", + "agentSkillsDescription": "Katalóg zručností pripravených pre agentov s kopírovaním URL jedným kliknutím na integráciu s AI klientmi", + "translatorDescription": "Prekladajte a testujte prompty medzi formátmi API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Interaktívne testujte prompty so živými odpoveďami poskytovateľov a kontrolou formátu", + "searchToolsDescription": "Analytika vyhľadávania, rozdelenie podľa poskytovateľov, miera zásahov do vyrovnávacej pamäte a sledovanie nákladov", + "logsDescription": "Protokoly požiadaviek v reálnom čase, trasovanie chýb a inšpektor streamovaných udalostí", + "auditDescription": "Auditná stopa súladu používania kľúčov API, volaní nástrojov MCP a udalostí zásad", + "webhooksDescription": "Nakonfigurujte koncové body webhookov na prijímanie upozornení na udalosti v reálnom čase", + "healthDescription": "Prehľad stavu systému: poskytovatelia, ističe, limity rýchlosti a databáza", + "proxyDescription": "Nakonfigurujte nastavenia upstream proxy pre odchádzajúce pripojenia k poskytovateľom", + "apiEndpointsDescription": "Spravujte vlastné konfigurácie koncových bodov API a prepísania smerovania", + "batchFilesDescription": "Prehliadajte a spravujte výstupné súbory a výsledky dávkových úloh", + "analyticsEvalsDescription": "Výsledky hodnotenia modelov a výkonnostné benchmarky", + "analyticsSearchDescription": "Analytika vyhľadávacích dopytov, miera zásahov do vyrovnávacej pamäte a sledovanie nákladov", + "analyticsUtilizationDescription": "Metriky využitia poskytovateľov a plánovanie kapacity", + "analyticsComboHealthDescription": "Stav a výkon kombinovaných konfigurácií smerovania v reálnom čase", + "analyticsCompressionDescription": "Analytika kompresie kontextu a úspory tokenov", + "costsBudgetDescription": "Rozpočtové limity a upozornenia na výdavky pre jednotlivé kľúče API a poskytovateľov", + "costsPricingDescription": "Vlastná konfigurácia cien na výpočet nákladov na tokeny", + "logsProxyDescription": "Protokoly požiadaviek upstream proxy a kontrola prevádzky", + "logsConsoleDescription": "Výstup konzoly aplikácie a ladiace protokoly", + "logsActivityDescription": "Auditná stopa akcií používateľov a systémových udalostí", + "auditMcpDescription": "Auditná stopa volaní nástrojov MCP a záznamy o súlade", "auditA2a": "Audit A2A", "auditA2aDescription": "Auditný záznam vykonania úlohy A2A, prechody stavov a záznamy vyvolania zručností", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Motív, branding a vizuálne prispôsobenie", + "settingsAiDescription": "Správanie AI, rozpočty na premýšľanie, videnie a nastavenia pamäte", "settingsCacheDescription": "TTL pre položky cache modelového katalógu", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Nastavenia autentifikácie, autorizácie a riadenia prístupu", "featureFlags": "Príznaky funkcie", "featureFlagsDescription": "Možnosti riadiaceho systému a experimentálne funkcie", "featureFlagsActive": "{count} aktívny", @@ -1658,7 +1658,7 @@ "featureFlagsCategorySecurity": "Bezpečnosť", "featureFlagsCategoryNetwork": "sieť", "featureFlagsCategoryPolicies": "zásady", - "featureFlagsCategoryRuntime": "Runtime", + "featureFlagsCategoryRuntime": "Behové prostredie", "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "Zdravie", "featureFlagsSourceDb": "DB", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Vášmu vyhľadávaniu nezodpovedajú žiadne vlajky", "featureFlagsSaved": "Príznak bol aktualizovaný", "featureFlagsError": "Príznak sa nepodarilo aktualizovať", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Pravidlá smerovania, aliasy modelov, predvolené kombinácie a nastavenia degradácie", + "settingsResilienceDescription": "Konfigurácia ističa, opakovaných pokusov a záložného riešenia", + "settingsAdvancedDescription": "Pokročilé pravidlá dátovej časti, limity požiadaviek a nastavenia proxy API", + "mitmProxyDescription": "Konfigurácia nastavení MITM proxy na kontrolu a ladenie prevádzky", + "oneProxyDescription": "Konfigurácia nastavení 1Proxy pre pokročilé reťazenie proxy serverov", "omniSkillsDescription": "Inštalujte a spravujte sandboxové zručnosti na automatizované vykonávanie promptov a nástrojov" }, "cloudSyncStatus": { @@ -1706,9 +1706,9 @@ "logs": "Záznamy", "auditLog": "Auditný záznam", "console": "Konzola", - "logger": "Logger", + "logger": "Záznamník", "translator": "Prekladač", - "playground": "Playground", + "playground": "Testovacie prostredie", "add": "Pridať", "edit": "Upraviť", "apiKeys": "API kľúče", @@ -1724,8 +1724,8 @@ "analytics": "Analytika", "costs": "Náklady", "health": "Stav", - "runtime": "Runtime", - "webhooks": "Webhooks", + "runtime": "Beh programu", + "webhooks": "Webhooky", "home": "Domov", "activity": "Aktivita", "agentSkills": "AgentSkills", @@ -1740,7 +1740,7 @@ "batch": "Dávka", "files": "Súbory", "media": "Médiá", - "cache": "Cache", + "cache": "Vyrovnávacia pamäť", "changelog": "Zoznam zmien", "chaos": "Chaos", "cloudAgents": "Cloudoví agenti", @@ -1762,7 +1762,7 @@ "discovery": "Objavovanie", "freeProviderRankings": "Bezplatné rebríčky poskytovateľov", "radar": "Radar", - "setup": "Setup", + "setup": "Nastavenie", "freeTiers": "Bezplatné úrovne", "gamification": "Gamifikácia", "leaderboard": "Rebríček", @@ -1772,7 +1772,7 @@ "providerStats": "Štatistiky poskytovateľov", "new": "Nové", "quota": "Kvóta", - "relay": "Relay", + "relay": "Prenos", "searchTools": "Vyhľadávacie nástroje", "security": "Zabezpečenie", "sidebar": "Bočný panel", @@ -1808,11 +1808,11 @@ "connectionsActivePlural": "{count} aktívnych pripojení", "copyModelName": "Skopírujte názov modelu", "documentation": "Dokumentácia", - "healthMonitor": "Health Monitor", + "healthMonitor": "Monitor stavu", "reportIssue": "Nahlásiť problém", "activeError": "{active} aktívny · {errors} chyba", "topologyLegendActive": "Aktívne", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Nedávne", "topologyLegendError": "Chyba", "oauthLabel": "OAuth", "apiKeyLabel": "API kľúč", @@ -1826,11 +1826,11 @@ "updateStarted": "Aktualizácia spustená...", "reloadingPageAutomatically": "Automaticky sa znova načítava stránka...", "providerTopology": "Topológia poskytovateľa", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Nedávne požiadavky", + "recentRequestsEmpty": "Zatiaľ žiadne požiadavky.", + "recentRequestsModel": "Model", + "recentRequestsTokens": "Vstup / výstup", + "recentRequestsWhen": "Kedy", "downloadDmg": "Stiahnuť DMG (macOS)", "downloadDmgDescription": "Nová verzia desktopovej aplikácie OmniRoute je k dispozícii. Prosím, stiahnite a nainštalujte inštalátor DMG pre macOS na aktualizáciu (aktuálna: v{version}).", "downloadExe": "Stiahnuť EXE (Windows)", @@ -1872,7 +1872,7 @@ "closeUpdate": "Zavrieť", "retryUpdate": "Skúsiť znova", "updateAvailableTitle": "Aktualizácia k dispozícii: v{version}{desktop}", - "desktopAppLabel": "(Desktop App)", + "desktopAppLabel": "(Počítačová aplikácia)", "checkingForUpdates": "Kontrola aktualizácií...", "versionAvailableForDownload": "Verzia v{version} je k dispozícii na stiahnutie.", "downloadingUpdate": "Sťahovanie aktualizácie... {percent}% dokončené.", @@ -1888,18 +1888,18 @@ "releaseNotes": "Poznámky k vydaniu", "readMore": "Čítať viac", "noAuthLabel": "Žiadna autentifikácia", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Pripravte sa na smerovanie", + "readinessTitle": "Odošlite svoju prvú požiadavku", + "readinessSubtitle": "Štyri jednoduché kroky. OmniRoute bude priebežne kontrolovať pripravenosť.", + "readinessStep1": "Pripojte poskytovateľa", + "readinessStep2": "Nakonfigurujte overovanie koncového bodu", + "readinessStep3": "Skopírujte svoj koncový bod", + "readinessStep4": "Odošlite testovaciu požiadavku", + "readinessContinue": "Pokračovať v nastavení", + "readinessDismiss": "Zatiaľ zavrieť" }, "analytics": { - "title": "Analytics", + "title": "Analytika", "usageAnalyticsTitle": "Analytika využitia", "diversityScoreTitle": "Diverzita poskytovateľov", "diversityScoreDesc": "Snímka koncentrácie poskytovateľov pre nedávne okno prevádzky.", @@ -1963,11 +1963,11 @@ "rangeCancel": "Zrušiť", "rangeApply": "Použiť", "rangeErrorInvalid": "Začiatok musí byť pred koncom", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1 d.", + "period7D": "7 d.", + "period30D": "30 d.", + "period90D": "90 d.", + "periodYTD": "Od začiatku roka", "periodAll": "Všetko", "totalTokens": "Celkový počet tokenov", "inputTokens": "Vstupné tokeny", @@ -1993,20 +1993,20 @@ "overviewDescription": "Monitorujte svoje vzorce používania API, spotrebu tokenov, náklady a trendy aktivity u všetkých poskytovateľov a modelov.", "evalsDescription": "Spustite vyhodnocovacie súpravy na testovanie a overovanie vašich koncových bodov LLM. Porovnajte kvalitu modelu, zistite regresie a benchmarkovú latenciu.", "overview": "Prehľad", - "evals": "Evals", + "evals": "Hodnotenia", "search": "Vyhľadávanie", "utilization": "Využitie", "routeTrace": "Sledovanie trasy", "sectionsAria": "Sekcie analytiky", "utilizationDescription": "Trendy využitia kvót poskytovateľa a sledovanie limitov rýchlosti", "modelStatus": "Stav modelu", - "modelStatusCooldown": "Cooldown", + "modelStatusCooldown": "Časový odstup", "modelStatusUnavailable": "nedostupné", "modelStatusError": "Chyba", "comboHealth": "Zdravie Combo", "comboHealthDescription": "Kvóta na úrovni combo, distribúcia používania a metríky výkonu", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Analýza kompresie", + "compressionAnalyticsDescription": "Analýza kompresie — úspora tokenov, rozdelenie podľa režimov a štatistiky poskytovateľov.", "autoRoutingTotalAutoRequests": "Celkový počet automatických požiadaviek", "autoRoutingAvgSelectionScore": "Priem. skóre výberu", "autoRoutingExplorationRate": "Miera prieskumu", @@ -2188,7 +2188,7 @@ "routeRuntimeScoreNow": "Aktuálne runtime skóre", "routeWouldSelectNow": "Teraz by vybral", "routeNoRecomputeCandidates": "Pre túto požiadavku nie je možné prepočítať žiadne poradie kandidátov combo.", - "runtime": "Runtime", + "runtime": "Doba behu", "routeTopNow": "Aktuálne najlepší", "routeFetchLogsFailed": "Nepodarilo sa načítať záznamy požiadaviek", "routeExplainFailed": "Nepodarilo sa vysvetliť smerovanie", @@ -2207,10 +2207,10 @@ "model": "Model", "account": "Účet", "connection": "Pripojenie", - "combo": "Combo", + "combo": "Kombinácia", "routeStep": "Krok", "tokens": "Tokeny", - "notAvailable": "n/a", + "notAvailable": "neuvedené", "routeTokenCounts": "{input} vstup · {output} výstup", "routeEvidence": "Dôkazy", "routeFactors": "Faktory smerovania", @@ -2258,9 +2258,9 @@ "fullAccess": "Úplný prístup", "keyManagement": "Správa kľúčov API", "keyManagementDesc": "Vytvárajte a spravujte kľúče API na autentifikáciu požiadaviek na váš koncový bod", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Vaša aplikácia odosiela požiadavky do OmniRoute prostredníctvom kľúča API", + "requestFlowYourApp": "Vaša aplikácia", + "requestFlowApiKey": "Kľúč API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Celkový počet kľúčov", "restricted": "Obmedzené", @@ -2275,7 +2275,7 @@ "usage": "Použitie", "created": "Vytvorené", "actions": "Akcie", - "reqs": "reqs", + "reqs": "požiadavky", "neverUsed": "Nikdy nepoužité", "deleteConfirm": "Odstrániť tento kľúč API?", "usageTips": "Tipy na použitie", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Skopírujte a uložte tento kľúč teraz – už sa nebude zobrazovať.", "done": "Hotovo", "savePermissions": "Uložiť povolenia", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Povolené koncové body", + "allEndpointsAllowed": "Tento kľúč má prístup ku všetkým koncovým bodom API.", + "endpointsRestricted": "{count, plural, one {Obmedzené na {count} koncový bod.} few {Obmedzené na {count} koncové body.} other {Obmedzené na {count} koncových bodov.}}", + "autoResolve": "Automatické rozpoznanie", + "autoResolveDesc": "Pre tento kľúč API automaticky priraďovať nejednoznačné názvy modelov k pôvodnému poskytovateľovi.", "streamDefaultMode": "Predvolená kompatibilita streamovania", "streamDefaultModeDesc": "Riadi vynechané príznaky `stream` pre tento kľúč. Režim JSON vracia nestreamované odpovede, pokiaľ klient explicitne nepožiada o SSE.", "streamDefaultLegacy": "Zastarané", "streamDefaultJson": "Kompatibilné s JSON", "streamDefaultBadge": "Predvolený JSON stream", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Kľúč je aktívny", + "keyActiveDesc": "Povoľte alebo zakážte tento kľúč API. Požiadavky s deaktivovanými kľúčmi sú okamžite odmietnuté s kódom 403.", + "accessSchedule": "Plán prístupu", + "accessScheduleDesc": "Obmedzte prístup na konkrétne hodiny a dni v týždni.", + "scheduleFrom": "Od", + "scheduleUntil": "Do", + "scheduleDays": "Dni", + "scheduleTimezone": "Časové pásmo", + "scheduleTimezoneHint": "Používajte názvy časových pásiem IANA, napr. America/New_York, Europe/Berlin", + "scheduleActive": "Plán", + "disabled": "Vypnuté", + "daySun": "Ne", + "dayMon": "Po", + "dayTue": "Ut", + "dayWed": "St", + "dayThu": "Št", + "dayFri": "Pi", + "daySat": "So", "allowAll": "Povoliť všetko", "restrict": "Obmedziť", "allowAllInfo": "Tento kľúč umožňuje prístup ku všetkým dostupným modelom.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Aktualizácia povolení zlyhala. Skúste to znova.", "unknownProvider": "neznámy", "copyMaskedKey": "Skopírujte maskovaný kľúč", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Úplný kľúč je k dispozícii iba pri vytvorení — skopírujte ho hneď po vytvorení", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# zariadenie} few {# zariadenia} other {# zariadení}}", "devicesTooltip": "{count, plural, one {# unikátne zariadenie s IP/User-Agent zaznamenané s týmto kľúčom (posledných 30 min)} few {# unikátne zariadenia s IP/User-Agent zaznamenané s týmto kľúčom (posledných 30 min)} other {# unikátnych zariadení s IP/User-Agent zaznamenaných s týmto kľúčom (posledných 30 min)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "Povolené kombinácie", "allCombosAllowed": "Tento kľúč môže použiť akúkoľvek kombináciu.", "restrictedComboCount": "Obmedzené na {count, plural, one {# kombináciu} few {# kombinácie} other {# kombinácií}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "Tento kombinovaný zoznam neobsahuje {count, plural, one {# uloženú položku} other {# uložených položiek}} (napríklad pravidlá smerovania), ktoré zostanú uložené.", + "preservedComboRuleHint": "Ponechané v uloženom stave. Táto položka nie je kombináciou v zozname vyššie, takže ju možno zmeniť iba prostredníctvom API.", "apiManagerCustomRateLimits": "Vlastné limity sadzieb", "apiManagerCustomRateLimitsDesc": "Prepísať globálne predvolené limity. Ak chcete použiť predvolené hodnoty, nechajte prázdne.", "apiManagerRateLimitRequestsPlaceholder": "Žiadosti", @@ -2393,7 +2393,7 @@ "apiManagerTimezonePlaceholder": "Amerika/Sao_Paulo", "noLogPayloadPrivacy": "Ochrana osobných údajov bez prihlásenia", "bannedStatus": "Stav zakázaný", - "managementApiAccess": "Management API Access", + "managementApiAccess": "Prístup k rozhraniu API na správu", "expirationDate": "Dátum vypršania platnosti", "managementAccess": "Manažérsky prístup", "allowedConnections": "Povolené pripojenia", @@ -2420,17 +2420,17 @@ "bypassProviderQuotaDescription": "Umožňuje tomuto kľúču ignorovať pravidlá limitov nadradeného poskytovateľa/účtu počas smerovania. USD kvóty kľúča API stále platia.", "quotaPill": "KVÓTA", "quotaModeOnly": "Iba qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Výhradný prenájom", + "exclusiveLeaseNoticeTitle": "Výhradný prenájom", + "exclusiveLeaseNoticeDesc": "Tento kľúč API má oprávnenia na výhradný prenájom pre smerovanie vyhradených pripojení.", + "allConnections": "Všetky pripojenia", + "onlySelectedConnections": "Iba vybrané pripojenia", + "selectAtLeastOneConnection": "Vyberte aspoň jedno pripojenie alebo možnosť Všetky pripojenia.", + "allConnectionsDesc": "Tento kľúč môže používať ľubovoľné aktívne pripojenie.", + "restrictedToConnections": "Obmedzené na {count, plural, one {# pripojenie} other {# pripojení}}." }, "auditLog": { - "title": "Audit Log", + "title": "Protokol auditu", "searchPlaceholder": "Akcie vyhľadávania...", "action": "Akcia", "actor": "herec", @@ -2457,16 +2457,16 @@ "model": "Model", "prompt": "Prompt", "generate": "Generovať", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Generuje sa...", + "loadingModels": "Načítavajú sa dostupné modely...", + "noModels": "Nie sú dostupné žiadne modely. Najskôr nakonfigurujte poskytovateľov s multimediálnymi funkciami.", + "error": "Generovanie zlyhalo", + "result": "Výsledok", + "imageDescription": "Generujte obrázky z textových zadaní pomocou OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI a ďalších.", + "videoDescription": "Vytvárajte videá pomocou AnimateDiff, Stable Video Diffusion cez ComfyUI alebo SD WebUI.", + "musicDescription": "Komponujte hudbu pomocou Stable Audio Open alebo MusicGen cez ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Vektorová reprezentácia", "image": "Obrázok", "imageToText": "Obrázok na text", "tts": "Text na reč", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "Modely prevodu reči na text OpenRouter používajú vaše nakonfigurované pripojenie OpenRouter. Nie sú potrebné žiadne samostatné poverenia." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Vyhľadávací dopyt", + "searchResults": "Výsledky vyhľadávania", + "cachedResult": "Vo vyrovnávacej pamäti", + "searchCost": "Náklady", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Pokročilé testovanie vyhľadávania s porovnaním poskytovateľov", + "compareProviders": "Porovnať poskytovateľov", + "rerankResults": "Zmeniť poradie výsledkov", + "searchHistory": "História vyhľadávania", + "urlOverlap": "Prekrytie URL", + "noSearchProviders": "Nie sú nakonfigurovaní žiadni poskytovatelia vyhľadávania. Pridajte poskytovateľov v Nastaveniach.", + "noRerankModels": "Nie je k dispozícii žiadny model na preusporiadanie", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Poskytovateľ", + "searchType": "Typ vyhľadávania", + "maxResults": "Maximálny počet výsledkov", + "filters": "Filtre", + "country": "Krajina", + "language": "Jazyk", + "timeRange": "Časový rozsah", + "includeDomains": "Zahrnúť domény", + "excludeDomains": "Vylúčiť domény", + "safeSearch": "Bezpečné vyhľadávanie", + "safeSearchOff": "Vypnuté", + "safeSearchModerate": "Stredné", + "safeSearchStrict": "Prísne", + "queryPlaceholder": "Zadajte vyhľadávací dopyt...", + "providerAuto": "automaticky (najlacnejšie)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "správy", + "optionAny": "ľubovoľné", + "timeRangeDay": "Posledný deň", + "timeRangeWeek": "Posledný týždeň", + "timeRangeMonth": "Posledný mesiac", + "timeRangeYear": "Posledný rok", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Časový limit požiadavky vypršal ({seconds} s)", + "networkError": "Chyba siete", + "formatted": "Formátované", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "nenájdené vo vyrovnávacej pamäti", + "cacheHit": "nájdené vo vyrovnávacej pamäti", + "latency": "Latencia", + "cost": "Cena", + "results": "Výsledky", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Model na preusporiadanie", + "positionDelta": "Zmena pozície", + "emptyState": "Odošlite vyhľadávací dopyt, aby sa zobrazili výsledky", "copy": "Kopírovať", "resetToDefault": "Obnoviť predvolené nastavenie", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Vyhľadávanie", + "tabScrape": "Extrakcia", + "tabCompare": "Porovnať", + "modalitiesGuide": "Sprievodca modalitami", + "searchConceptTitle": "Vyhľadávanie", + "searchConceptDesc": "Vyhľadávanie = načíta zoznam webových výsledkov (názov, URL, úryvok, skóre relevantnosti)", + "scrapeConceptTitle": "Extrakcia", + "scrapeConceptDesc": "Scrape = extrahuje úplný obsah adresy URL (markdown, text alebo HTML)", + "compareConceptTitle": "Porovnať", + "compareConceptDesc": "Compare = spustí rovnaký dopyt súbežne u N poskytovateľov na porovnanie latencie, nákladov a prekrytia výsledkov", + "rerankConceptTitle": "Zmeniť poradie", + "rerankConceptDesc": "Rerank = zmení poradie výsledkov pomocou LLM s cieľom zvýšiť relevantnosť vzhľadom na dopyt", + "autoConceptTitle": "Automaticky (najlacnejšie)", + "autoConceptDesc": "Auto (cheapest) = automaticky vyberie najlacnejšieho dostupného poskytovateľa s nakonfigurovanými prihlasovacími údajmi", + "providerCatalogTitle": "Katalóg poskytovateľov", + "kindSearch": "Vyhľadávanie", + "kindFetch": "Načítať/extrahovať", + "statusConfigured": "Nakonfigurované", + "statusMissing": "Bez prihlasovacích údajov", + "statusRateLimited": "Obmedzené rýchlostným limitom", + "configureProvider": "Nakonfigurovať v sekcii Poskytovatelia", + "loadingProviders": "Načítavajú sa poskytovatelia…", + "failedToLoadProviders": "Poskytovateľov sa nepodarilo načítať", + "costPerQuery": "Náklady/dopyt", + "freeQuota": "Bezplatná kvóta/mes.", + "scrapeUrl": "Adresa URL na extrahovanie", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL je povinná", "scrapeUrlInvalid": "Neplatná URL — musí začínať na http:// alebo https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Extrahovať", + "scrapeExtracting": "Extrahuje sa…", + "scrapeFullPage": "Celá stránka", + "scrapeFormat": "Formát", "formatMarkdown": "Markdown", "formatHtml": "HTML", "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "scrapePreview": "Náhľad", + "scrapeRaw": "Nespracované údaje", + "scrapeContentTruncated": "(skrátené, zobraziť nespracované údaje)", + "scrapeMetadata": "Metadáta", + "scrapeProvider": "Poskytovateľ", + "scrapeSize": "Veľkosť", "scrapeEmptyState": "Zadajte URL na extrahovanie jej obsahu", "scrapeProvidersAvailable": "Dostupní poskytovatelia: Firecrawl, Jina Reader, Tavily.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Porovnať", + "compareRunning": "Porovnáva sa…", + "autoProvider": "Automaticky (najlacnejšie)", + "configuredStatus": "Nakonfigurované", + "rateLimitedStatus": "Obmedzené rýchlostným limitom", + "noCredential": "Bez prihlasovacích údajov", + "searchTypeLabel": "Typ", + "rerankModelLabel": "Model na preusporiadanie", + "noneOption": "Žiadne", + "size": "Veľkosť", "configurationPane": "Konfiguračný panel", "configuration": "Konfigurácia", "status": "Stav", @@ -2664,7 +2664,7 @@ "httpError": "Chyba {status}", "failed": "Zlyhalo", "requestFailed": "Požiadavka zlyhala", - "embedding": "Embedding", + "embedding": "Vektorová reprezentácia", "embeddingSample": "Ahoj, svet!", "image": "Obrázok", "imageSample": "Pokojná krajina s horami pri západe slnka", @@ -2708,7 +2708,7 @@ "classifierCompatLoadFailed": "Nastavenie sa nepodarilo načítať", "classifierCompatMode": { "off": "Vypnuté", - "auto": "Auto", + "auto": "Automaticky", "always": "Vždy" }, "ccDiscoveryInfoButton": "Ako povoliť objavovanie v Claude Code", @@ -2741,7 +2741,7 @@ "effortMedium": "Stredné", "effortHigh": "Vysoké", "effortExtraHigh": "Extra vysoké", - "effortMax": "Max", + "effortMax": "Maximum", "effortUltra": "Ultra", "wireApi": "Wire API", "modelAliases": "Aliasy modelov", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Pridajte", "antigravityStep2Suffix": "do súboru hosts ako 127.0.0.1.", "antigravityStep3": "3. Otvorte Antigravity a požiadavky budú proxy.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} odosiela požiadavky do koncového bodu svojho poskytovateľa. MITM ich zachytáva a presmerúva do OmniRoute.", + "mitmStep1": "1. Spustite MITM, aby sa požiadavky smerovali cez OmniRoute.", + "mitmStep2Prefix": "2. Pridajte", + "mitmStep2Suffix": "do súboru hosts ako 127.0.0.1.", + "mitmStep3": "3. Otvorte {toolName} a požiadavky sa budú odosielať cez proxy.", "sudoPasswordRequiredTitle": "Vyžaduje sa heslo sudo", "sudoPasswordHint": "Na úpravu súboru hostiteľov a nastavení servera proxy je potrebné heslo správcu.", "enterSudoPassword": "Zadajte sudo heslo", @@ -2869,7 +2869,7 @@ "provider": "Poskytovateľ", "model": "Model", "providers": "Poskytovatelia", - "auth": "Auth", + "auth": "Overenie", "noApiKeysAvailable": "Nie sú k dispozícii žiadne kľúče API", "usingDefaultOmniroute": "Používa sa predvolené: sk_omniroute", "updateConfig": "Aktualizovať konfiguráciu", @@ -2908,7 +2908,7 @@ "continue": "Použite pri spustení Continue in IDE a potrebujete prenosnú konfiguráciu poskytovateľa založenú na JSON.", "opencode": "Použite, ak uprednostňujete spúšťanie natívneho agenta a skriptovanú automatizáciu cez OpenCode.", "kiro": "Použite pri integrácii Kiro a centrálnom riadení smerovania modelu z OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Použite, ak chcete IDE zamerané na AI s modelmi Codeium/Windsurf smerovanými cez OmniRoute.", "antigravity": "Použite, keď musí byť premávka Antigravity/Kiro zachytená cez MITM a nasmerovaná na OmniRoute.", "copilot": "Použite, keď chcete UX v štýle chatu Copilot pri presadzovaní kľúčov OmniRoute a pravidiel smerovania.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2921,19 +2921,19 @@ "claude": "Antropický Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "TUI kódovací agent xAI Grok Build s podporou vlastného poskytovateľa", - "droid": "Factory Droid AI Assistant", + "droid": "AI asistent Factory Droid", "openclaw": "Otvorte asistenta Claw AI", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "cline": "CLI asistenta na programovanie Cline AI", + "kilo": "CLI asistenta Kilo Code AI", "qwen": "Qwen Code CLI", "cursor": "Editor kódu AI kurzora", "continue": "Pokračovať v Asistentovi AI", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "Agent OpenCode AI na programovanie (terminál)", + "kiro": "Amazon Kiro — IDE využívajúce AI", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "CLI asistenta na programovanie Sourcegraph Amp", + "hermes": "Terminálový AI asistent Hermes", "hermes-agent": "Hermes Agent (od Nousresearch) – pokročilá terminálová AI s podporou viacerých modelov (delegovanie, videnie, kompresia atď.)", "custom": "Generický generátor konfigurácie CLI alebo SDK kompatibilný s OpenAI", "aider": "CLI pre párové programovanie s AI Aider so základnou URL kompatibilnou s OpenAI", @@ -2950,7 +2950,7 @@ "interpreter": "CLI autonómneho kódovacieho agenta Open Interpreter", "omp": "Terminálový kódovací agent Oh My Pi", "letta": "CLI agent Letta s trvalou pamäťou a používaním nástrojov", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — samostatne sa zlepšujúci programovací nástroj RLM s podporou poskytovateľov kompatibilných s OpenAI", "warp": "AI terminál Warp s podporou vlastného poskytovateľa", "agent-deck": "Multi-agentový orchestrátor Agent Deck", "5dive": "5dive — vlastná flotila kódovacích agentov; jeden auth profil nasmeruje všetkých na OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Nainštalujte OpenCode", + "desc": "Nainštalujte cez npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Kľúč API" }, "3": { - "title": "Set Base URL", + "title": "Nastavte základnú URL adresu", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Vyberte model" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Použite variant s uvažovaním", + "desc": "Pre modely s uvažovaním spustite príkaz s --variant high/low/max (príklad príkazu je uvedený nižšie)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Otvorte nastavenia Kiro", + "desc": "Prejdite do Nastavenia → Poskytovateľ AI" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Základná URL adresa", + "desc": "Vložte URL adresu svojho koncového bodu OmniRoute" }, "3": { - "title": "API Key" + "title": "Kľúč API" }, "4": { - "title": "Select Model" + "title": "Vyberte model" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Otvoriť nastavenia AI", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Pridať vlastného poskytovateľa", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Základná URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Kľúč API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Vybrať model", + "desc": "Vyberte model z rozbaľovacej ponuky" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Vlastné CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Kategórie nástrojov", "visibleToolsCount": "Počet dostupných nástrojov: {count}", "customCliBuilderTitle": "Tvorca CLI kompatibilný s OpenAI", "customCliBuilderDescription": "Generujte env vars a útržky JSON pre ľubovoľné CLI alebo SDK, ktoré akceptujú základnú URL kompatibilnú s OpenAI, kľúč API a ID modelu.", @@ -3132,7 +3132,7 @@ "hermesRoleTtsAudioTagsDesc": "Generovanie značiek TTS audio", "hermesRoleTriageSpecifier": "Triage Špecifikátor", "hermesRoleTriageSpecifierDesc": "Špecifikácia triáže problémov a PR", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Dekompozítor Kanban", "hermesRoleKanbanDecomposerDesc": "Dekompozícia úloh v Kanban-e", "hermesRoleProfileDescriber": "Profilový popisovač", "hermesRoleProfileDescriberDesc": "Popis používateľského profilu", @@ -3140,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Hodnotenie dokončenia cieľa", "hermesRoleCurator": "Kurátor", "hermesRoleCuratorDesc": "Kurácia zručností a pamäte", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Monitorovanie", "hermesRoleMonitorDesc": "Monitorovanie na pozadí", "hermesRoleBackgroundReview": "Pozadie Kontroly", "hermesRoleBackgroundReviewDesc": "Kontrola kódu na pozadí", @@ -3159,7 +3159,7 @@ "hermesRolesWillUpdate": "{count, plural, one {# rola bude aktualizovaná} few {# roly budú aktualizované} other {# rolí bude aktualizovaných}}", "hermesPreviewPath": "Ukážka — zapíše sa do ~/.hermes/config.yaml", "hermesSaveDescription": "Uloží vybratý model pre každú rolu do", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "Generátor konfigurácie GitHub Copilot", "copilotGeneratorDescriptionPrefix": "Generuje", "copilotGeneratorDescriptionSuffix": "blok pre VS Code GitHub Copilot pomocou vzoru dodávateľa Azure. Vyberte požadované modely a potom skopírujte JSON do konfiguračného súboru.", "copilotCompatibilityWarning": "Táto konfigurácia používa alternatívne riešenie Azure vendor pre vlastné zoznamy modelov. Testované s VS Code ≥ 1.109 a GitHub Copilot Chat ≥ v0.37. Budúce aktualizácie rozšírenia môžu toto správanie zmeniť.", @@ -3177,7 +3177,7 @@ "copilotPasteInto": "Vložiť do:", "copilotReloadInstruction": "Potom znova načítajte VS Code a nastavte kľúč API vo vstupnej výzve.", "wireApiChatCompletions": "Dokončenia rozhovoru (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiResponses": "API Responses (/responses)", "cliproxyapiActionFailed": "Akcia zlyhala", "cliproxyapiActionSucceeded": "Akcia bola úspešná", "cliproxyapiCheckUpdates": "Skontrolovať aktualizácie", @@ -3220,7 +3220,7 @@ "routingStrategy": "Stratégia smerovania", "maxRetries": "Maximálny počet opakovaní", "timeout": "Časový limit (ms)", - "healthcheck": "Healthcheck", + "healthcheck": "Kontrola stavu", "priority": "Priorita", "fallback": "Záložný", "roundRobin": "Round Robin", @@ -3245,7 +3245,7 @@ "testResults": "Výsledky testu — {name}", "resolvedBy": "Vyriešil:", "more": "+{count} ďalších", - "reqs": "reqs", + "reqs": "požiadavky", "success": "úspech", "proxyConfigured": "Proxy je nakonfigurovaný", "copyComboName": "Kopírovať názov kombinácie", @@ -3260,18 +3260,18 @@ "priorityDesc": "Sekvenčný núdzový postup: najprv vyskúša model 1, potom 2 atď.", "weightedDesc": "Rozdeľuje návštevnosť podľa hmotnostného percenta so záložnou možnosťou", "roundRobinDesc": "Kruhová distribúcia: každá požiadavka prechádza na ďalší model v rotácii", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Prenos kontextu", + "contextRelayDesc": "Zachováva kontinuitu relácie pomocou súhrnov pri odovzdaní počas striedania účtov", "randomDesc": "Jednotný náhodný výber, potom návrat k zostávajúcim modelom", "leastUsedDesc": "Vyberie model s najmenším počtom požiadaviek, čím vyrovná zaťaženie v priebehu času", "costOptimizedDesc": "Najprv sa presmeruje na najlacnejší model na základe ceny", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Každý opakovane použiteľný prefix výzvy konzistentne smeruje do rovnakého účtu poskytovateľa", + "resetAware": "RR zohľadňujúce reset", "resetAwareDesc": "Vyrovnáva zostávajúcu kvótu oproti 5-hodinovým a týždenným resetom a potom sa v každom kole porovnáva s podobnými skóre", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Vážené podľa kvóty", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Striktne náhodné", + "strictRandomDesc": "Zamiešaný balíček — každý model použije raz a potom ich znova zamieša", "fusion": "Fúzia", "fusionDesc": "Rozpošle prompt paralelne do každého modelu v paneli, a potom hodnotiaci model syntetizuje jednu finálnu odpoveď", "fusionJudgeModel": "Hodnotiaci model", @@ -3288,15 +3288,15 @@ "retryDelay": "Oneskorenie opätovného pokusu (ms)", "concurrencyPerModel": "Súbežnosť / Model", "queueTimeout": "Časový limit fronty (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Prahová hodnota odovzdania", + "contextRelayHandoffThresholdHelp": "Keď využitie kvóty dosiahne túto prahovú hodnotu, OmniRoute vygeneruje štruktúrovaný súhrn na odovzdanie ešte pred vyčerpaním aktívneho účtu.", + "contextRelayMaxMessages": "Maximálny počet správ pre súhrn", + "contextRelayMaxMessagesHelp": "Obmedzuje množstvo nedávnej histórie skrátenej do súhrnu prenosu.", + "contextRelaySummaryModel": "Model súhrnu", + "contextRelaySummaryModelHelp": "Voliteľný alternatívny model používaný iba na generovanie súhrnu odovzdania. Ak chcete znova použiť aktívny kombinovaný model, nechajte pole prázdne.", + "contextRelayProviderNote": "Prenos kontextu momentálne generuje odovzdania pri striedaní účtov Codex. Najlepšiu kontinuitu dosiahnete jeho použitím s viacerými účtami rovnakého poskytovateľa.", "advancedHint": "Ak chcete použiť globálne predvolené hodnoty, nechajte prázdne. Tieto prepíšu nastavenia jednotlivých poskytovateľov.", - "failoverBeforeRetry": "Failover Before Retry", + "failoverBeforeRetry": "Prechod na záložný model pred opakovaním", "maxSetRetries": "Maximálny počet opakovaných pokusov", "setRetryDelayMs": "Nastaviť oneskorenie opakovania (ms)", "moveUp": "Posunúť sa hore", @@ -3322,7 +3322,7 @@ "playgroundStatusError": "Chyba", "playgroundStatusUnknown": "Neznáme", "playgroundNetworkError": "Sieťová chyba počas simulácie", - "playgroundTitle": "Combo Playground", + "playgroundTitle": "Testovacie prostredie kombinácií", "playgroundDescription": "Simulujte, ako budú požiadavky smerované cez vaše combo", "playgroundConfiguration": "Konfigurácia", "playgroundNoCombosConfigured": "Nie sú nakonfigurované žiadne combo", @@ -3344,41 +3344,41 @@ "playgroundCreateFirst": "Najprv ju vytvorte", "weighted": "Vážené", "leastUsed": "Najmenej používané", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "costOpt": "Optimalizácia nákladov", + "strategyGuideTitle": "Ako používať túto stratégiu", + "strategyGuideWhen": "Kedy použiť", + "strategyGuideAvoid": "Kedy sa vyhnúť", + "strategyGuideExample": "Príklad", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "Máte jeden preferovaný model a záložný chcete použiť iba pri zlyhaní.", + "avoid": "Potrebujete rozdeľovať požiadavky medzi modely.", + "example": "Primárny model na programovanie s lacnejšou zálohou pre prípad výpadkov." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Potrebujete kontrolované rozdelenie prevádzky medzi modely.", + "avoid": "V priebehu času nedokážete udržiavať presné váhy.", + "example": "Nasadenie: 80 % stabilný model + 20 % canary model." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Chcete predvídateľné a rovnomerné rozdelenie.", + "avoid": "Modely sa príliš líšia latenciou alebo nákladmi.", + "example": "Rovnaký model vo viacerých účtoch na rozloženie priepustnosti." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Chcete jednoduché rozdelenie s minimálnym nastavovaním.", + "avoid": "Potrebujete prísne záruky rozdelenia prevádzky.", + "example": "Rýchle prototypovanie s rovnocennými modelmi." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Chcete adaptívne vyvažovanie podľa aktuálneho dopytu.", + "avoid": "Prevádzka je príliš nízka na to, aby vyvažovanie podľa využitia prinieslo výhody.", + "example": "Zmiešané pracovné záťaže, pri ktorých sa jeden model často preťažuje." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Zníženie nákladov je vašou najvyššou prioritou.", + "avoid": "Údaje o cenách chýbajú alebo sú zastarané.", + "example": "Úlohy na pozadí alebo dávkové úlohy, pri ktorých sa uprednostňujú nižšie náklady." }, "reset-aware": { "when": "Smerujete cez viacero účtov pomocou kvótovej telemetrie a rôznych resetovacích okien.", @@ -3386,19 +3386,19 @@ "example": "Uprednostnite 60 % týždenné resetovanie účtu zajtra pred 80 % resetovaním účtu neskôr." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Použite, keď chcete dokonale rovnomerné rozloženie — každý model sa použije raz, kým sa použitie zopakuje.", + "avoid": "Nepoužívajte, keď sa modely líšia kvalitou alebo latenciou a na poradí záleží.", + "example": "Príklad: Viaceré účty rovnakého modelu na rovnomerné rozdelenie využitia." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Použite, keď chcete výber s nízkou latenciou pomocou algoritmu Power-of-Two-Choices.", + "avoid": "Nepoužívajte pri malých kombináciách s 2 alebo menej modelmi — oproti round-robin neprinášajú žiadnu výhodu.", + "example": "Príklad: Inferencia s vysokou priepustnosťou cez 4 alebo viac rovnocenných koncových bodov modelov." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Použite, keď musia dlhé relácie prežiť rotáciu účtov bez straty pracovného kontextu.", + "avoid": "Nepoužívajte, keď sa účty prepínajú len zriedka alebo keď nechcete dodatočné požiadavky na sumarizáciu.", + "example": "Príklad: Relácie Codex, ktoré sa pri blížiacom sa vyčerpaní kvóty striedajú medzi viacerými účtami." }, "fill-first": { "when": "Použite, keď chcete úplne vyčerpať kvótu jedného poskytovateľa pred prechodom k ďalšiemu.", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Počet opakovaných pokusov pred definitívnym zlyhaním požiadavky.", + "retryDelay": "Počiatočné čakanie medzi opakovanými pokusmi. Vyššie hodnoty znižujú tlak nárazových špičiek.", + "timeout": "Maximálne trvanie požiadavky pred jej prerušením.", + "healthcheck": "Vynecháva nedostupné modely alebo poskytovateľov z rozhodovania o smerovaní.", + "concurrencyPerModel": "Maximálny počet súbežných požiadaviek povolených pre každý model v režime round-robin.", + "queueTimeout": "Ako dlho môže požiadavka čakať vo fronte pred vypršaním časového limitu.", "failoverBeforeRetry": "Ak je táto možnosť povolená, akákoľvek chyba proti prúdu spúšťa okamžité prepnutie na ďalší kombinovaný cieľ, čím sa preskočia všetky opakované pokusy a záložné adresy URL.", "maxSetRetries": "Počet opakovaní celej množiny cieľov, keď každý cieľ zlyhá. 0 = žiadny opakovaný pokus na úrovni nastavenia.", "setRetryDelayMs": "Oneskorenie medzi pokusmi o opakovanie na nastavenej úrovni, čo dáva prechodným problémom čas na vyriešenie.", "disableSessionStickiness": "Striedať pripojenia pri každej požiadavke namiesto priradenia celej konverzácie k jednému pripojeniu podľa hash-u prvej správy. Prepíše globálne predvolené nastavenie. Ponechajte na Zdediť pre zachovanie zásahov do vyrovnávacej pamäte výziev (prompt-cache) pri viacúrovňových chatoch." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "Rýchle šablóny", + "templatesDescription": "Použite počiatočný profil a potom upravte modely a konfiguráciu.", + "templateApply": "Použiť šablónu", + "templateHighAvailability": "Vysoká dostupnosť", + "templateHighAvailabilityDesc": "Smerovanie podľa priority s kontrolami stavu a bezpečnými opakovanými pokusmi.", + "templateCostSaver": "Úspora nákladov", + "templateCostSaverDesc": "Smerovanie optimalizované z hľadiska nákladov pre pracovné záťaže, pri ktorých je rozpočet prvoradý.", + "templateBalanced": "Vyvážené zaťaženie", + "templateBalancedDesc": "Smerovanie na najmenej využívaný model s cieľom dlhodobo rozložiť dopyt.", + "usageGuideHide": "Skryť", + "usageGuideDontShowAgain": "Už nezobrazovať", + "usageGuideShow": "Zobraziť príručku", + "quickTestTitle": "Kombinácia je pripravená na overenie", + "quickTestDescription": "Spustite test a overte správanie pri prepnutí na záložný model a latenciu.", + "testNow": "Spustiť test", + "pricingCoverage": "Pokrytie cenami", + "pricingCoverageHint": "Optimalizácia nákladov funguje najlepšie, keď sú k dispozícii ceny všetkých modelov v kombinácii.", + "pricingAvailable": "Cena je k dispozícii", + "pricingMissing": "Bez ceny", + "pricingAvailableShort": "s cenou", + "pricingMissingShort": "bez ceny", "fallbackOnlyOnQuotaExhaustion": "Pokračujte iba pri vyčerpaní kvóty", "fallbackOnlyOnQuotaExhaustionShort": "iba záložný limit", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "warningRoundRobinSingleModel": "Round-robin je najužitočnejší pri aspoň 2 modeloch.", + "warningCostOptimizedPartialPricing": "Ceny sú k dispozícii iba pre {priced} z {total} modelov. Smerovanie môže zohľadňovať náklady len čiastočne.", + "warningCostOptimizedNoPricing": "Pre túto kombináciu sa nenašli žiadne údaje o cenách. Optimalizácia nákladov môže smerovať požiadavky neočakávaným spôsobom.", + "filterAll": "Všetky", + "filterIntelligent": "Inteligentné", + "filterDeterministic": "Deterministické", + "filterEmptyTitle": "Tomuto filtru stratégie nezodpovedajú žiadne kombinácie.", + "filterEmptyIntelligentDescription": "Vytvorte automatickú kombináciu alebo kombináciu LKGP, aby sa naplnil panel inteligentného smerovania.", + "filterEmptyDeterministicDescription": "Momentálne existujú iba automatické kombinácie a kombinácie LKGP. Prepnite späť na možnosť Všetky alebo vytvorte deterministickú kombináciu.", "readinessTitle": "Ste pripravení uložiť?", "readinessDescription": "Pred vytvorením alebo aktualizáciou tejto kombinácie skontrolujte kontrolný zoznam.", "readinessCheckName": "Názov kombinácie je platný", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Pridajte aspoň jeden model.", "saveBlockWeighted": "Nastavte váhy na 100 % (aktuálne: {total}%).", "saveBlockPricing": "Pridajte cenu aspoň pre jeden model alebo zvoľte inú stratégiu.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Odporúčané nastavenie", + "applyRecommendations": "Použiť odporúčania", + "recommendationsUpdated": "Odporúčania pre stratégiu {strategy} boli aktualizované.", + "recommendationsApplied": "Odporúčania boli použité na túto kombináciu.", + "intelligentPanelTitle": "Panel inteligentného smerovania", + "intelligentPanelDesc": "Skóre a stav funkčnosti tejto kombinácie s automatickým smerovaním v reálnom čase.", "configOnlyStatus": "Zobrazenie konfigurácie", "configOnlyHint": "Tento panel zobrazuje iba vstupy smerovania. Aktuálny stav ističa je k dispozícii na stránke Health.", "routingInputs": "Vstupy smerovania", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Neznámy prefix poskytovateľa.", "builderDynamicAccountShort": "Dynamický účet", "builderNeedValidName": "Pred pokračovaním definujte platný názov kombinácie.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Prehľad stavu", + "normalOperation": "Normálna prevádzka", + "allProvidersHealthy": "Poskytovatelia hlásia bezproblémové podmienky smerovania.", + "incidentMode": "Režim incidentu", + "highCircuitBreakerRate": "Zistila sa vysoká miera aktivácie ističa.", + "activeModePack": "Aktívny balík režimu", + "modePackUpdated": "Balík režimu bol aktualizovaný na {pack}.", + "modePackHint": "Prepínaním predvolieb upravte preferencie smerovacieho mechanizmu bez opätovného vytvárania kombinácie.", + "providerScores": "Skóre poskytovateľov", + "allProvidersEvaluated": "Nie je nakonfigurovaná žiadna množina kandidátov. Všetci aktívni poskytovatelia sa vyhodnocujú počas prevádzky.", + "excludedProviders": "Vylúčení poskytovatelia", + "excludedProvidersHint": "Poskytovatelia s ističom v stave OPEN sú dočasne vylúčení zo smerovania.", + "noExcludedProviders": "Momentálne nie sú vylúčení žiadni poskytovatelia.", + "cooldownMinutes": "Čas obnovenia: {minutes} min.", + "builderIntelligentTitle": "Konfigurácia inteligentného smerovania", + "builderIntelligentDesc": "Nakonfigurujte viacfaktorový bodovací mechanizmus pre túto kombináciu automatického smerovania.", + "candidatePoolLabel": "Skupina kandidátov", + "candidatePoolHint": "Vyberte poskytovateľov, ktorých má tento mechanizmus vyhodnocovať. Ak chcete použiť všetkých aktívnych poskytovateľov, ponechajte pole prázdne.", + "candidatePoolEmpty": "Zatiaľ nie sú k dispozícii žiadni aktívni poskytovatelia.", + "candidatePoolAllProviders": "Všetci poskytovatelia", + "modePackLabel": "Balík režimov", + "routerStrategyLabel": "Stratégia smerovača", + "strategyRules": "Pravidlá (6-faktorové bodovanie)", + "explorationRateLabel": "Miera prieskumu", + "explorationRateHint": "{percent} % požiadaviek môže preskúmať neoptimálnych poskytovateľov.", + "budgetCapLabel": "Rozpočtový limit (USD/požiadavka)", + "budgetCapPlaceholder": "Bez limitu", + "advancedWeightsTitle": "Rozšírené: Váhy bodovania", "nestedComboFlatten": "Sploštiť vnorené kombinácie", "nestedComboExecute": "Spustiť vnorené kombinácie ako ciele", "effectiveRoutingShare": "Efektívny podiel smerovania (váha ÷ celkovo)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kvóta", + "weightHealth": "Stav", + "weightCostInv": "Náklady", + "weightLatencyInv": "Latencia", + "weightTaskFit": "Vhodnosť pre úlohu", + "weightStability": "Stabilita", + "weightTierPriority": "Úroveň", + "weightCacheAffinity": "Afinita zásahov do vyrovnávacej pamäte", "weightSessionAvailability": "Dostupnosť relácie", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Konfigurácia inteligentného smerovania", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Základné nastavenie odolné voči zlyhaniu", + "description": "Použite jeden primárny model a udržujte reťazec záložných modelov krátky a spoľahlivý.", + "tip1": "Najspoľahlivejší model umiestnite na prvé miesto.", + "tip2": "Ponechajte si 1 až 2 záložné modely s podobnou kvalitou.", + "tip3": "Používajte bezpečné opakované pokusy na zvládnutie prechodných zlyhaní poskytovateľov." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Riadené rozdelenie prevádzky", + "description": "Ideálne pre postupné nasadzovanie typu canary a plynulú migráciu medzi modelmi.", + "tip1": "Začnite konzervatívnym rozdelením, napríklad 90/10.", + "tip2": "Udržujte celkový súčet na 100 % a po zmenách ho automaticky vyvážte.", + "tip3": "Pred zvýšením podielu canary sledujte úspešnosť a latenciu." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Predvídateľné rozdelenie záťaže", + "description": "Najlepšie riešenie, keď sú modely rovnocenné a potrebujete plynulé rozdelenie.", + "tip1": "Použite aspoň 2 modely.", + "tip2": "Nastavte limity súbežnosti, aby ste zabránili nárazovému preťaženiu.", + "tip3": "Použite časový limit frontu na rýchle zlyhanie pri nasýtení." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Rýchle rozdelenie s minimálnym nastavením", + "description": "Použite, keď potrebujete jednoduché rozdelenie bez prísnych záruk.", + "tip1": "Použite modely s podobnými profilmi latencie.", + "tip2": "Ponechajte opakované pokusy zapnuté, aby sa zvládli náhodné neúspechy.", + "tip3": "Uprednostnite túto možnosť na experimentovanie, nie na prísne SLA." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Adaptívne vyvažovanie", + "description": "Smeruje požiadavky na menej používané modely, aby sa časom znížilo preťaženie.", + "tip1": "Funguje lepšie pri nepretržitej prevádzke.", + "tip2": "Pre bezpečnejšie vyvažovanie skombinujte s kontrolami stavu.", + "tip3": "Sledujte využitie jednotlivých modelov a overte zlepšenie distribúcie." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Smerovanie s prioritou rozpočtu", + "description": "Smeruje požiadavky na lacnejšie modely, keď sú k dispozícii metadáta o cenách.", + "tip1": "Zaistite dostupnosť cenových údajov pre všetky vybrané modely.", + "tip2": "Pre náročné prompty zachovajte kvalitný záložný model.", + "tip3": "Použite pre dávkové úlohy alebo úlohy na pozadí, pri ktorých sú hlavným KPI náklady." }, "reset-aware": { "title": "Obnovenie rotácie účtov", @@ -3597,11 +3597,11 @@ "tip3": "Udržujte kravatu malú, aby sa ekvivalentné účty stále spravodlivo otáčali." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Distribúcia ako pri miešaní balíčka", + "description": "Každý model sa použije presne raz za cyklus, potom sa poradie znova premieša.", + "tip1": "Na zmysluplnú distribúciu použite aspoň 2 modely.", + "tip2": "Najlepšie funguje s modelmi s porovnateľným výkonom.", + "tip3": "Ideálne na vyvažovanie záťaže medzi viacerými účtami API." }, "fill-first": { "description": "Kvóty poskytovateľa výfukových plynov postupne pred poklesom.", @@ -3646,86 +3646,86 @@ "title": "Sila dvoch možností" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Bezplatný balík ($0)", + "templateFreeStackDesc": "Round-robin medzi všetkými bezplatnými poskytovateľmi: Kiro (Claude), Qoder (5 modelov), Qwen (4 modely). Nulové náklady, programovanie bez prestávky.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "Režim LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Začíname s kombináciami", + "wizardGuideDesc": "Vytvorte kombinácie modelov na inteligentné smerovanie prevádzky AI", + "wizardGuideHint": "alebo kliknite vyššie na + Vytvoriť kombináciu", + "createFirstCombo": "Vytvorte svoju prvú kombináciu", + "wizardStep1Title": "Pomenujte svoju kombináciu", + "wizardStep1Desc": "Dajte svojej kombinácii jedinečný názov, aby ste ju mohli identifikovať v pravidlách smerovania", + "wizardStep2Title": "Pridajte modely", + "wizardStep2Desc": "Vyberte modely AI a usporiadajte ich podľa priority použitia záložných modelov", + "wizardStep3Title": "Vyberte stratégiu", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Skontrolujte a uložte", + "wizardStep4Desc": "Skontrolujte svoju konfiguráciu a aktivujte kombináciu", + "usageGuideInvokeTitle": "Ako volať túto kombináciu", + "usageGuideInvokeDesc": "Odošlite presný názov kombinácie ako model, napr. model: \"my-combo\" (alebo combo/my-combo).", + "usageGuideInvokeAutoNote": "auto a auto/* sú samostatný smerovač bez potreby konfigurácie, ktorý nepoužíva vaše kombinácie (pokiaľ niektorá kombinácia nemá doslova názov auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto je skutočný platený produkt OpenRouter (Auto Best Available), nie alias OmniRoute — vylúčte ho cez Nastavenia → Smerovanie → Skryť platené modely.", + "emailVisibilityStateOn": "Zapnuté", + "emailVisibilityStateOff": "Vypnuté", + "reorderHandle": "Poradie zmeníte potiahnutím", + "failedReorder": "Zmena poradia modelov zlyhala", + "builderFlowTitle": "Postup tvorby kombinácie", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Základy", + "description": "Názov a počiatočná šablóna" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Kroky", + "description": "Výber poskytovateľa, modelu a účtu" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Stratégia", + "description": "Správanie smerovania a rozšírené nastavenia" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Inteligentné smerovanie", + "description": "Skupina kandidátov automatického smerovania, predvoľby a bodovanie" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Kontrola", + "description": "Záverečné overenie pred uložením" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", + "builderStageVisited": "Fáza dokončená", + "builderStageCurrent": "Aktuálna fáza", + "builderStagePending": "Čaká sa", + "builderStageLocked": "Uzamknuté — najprv dokončite predchádzajúcu fázu", + "builderTitle": "Vytvoriť kombináciu", + "builderBrowseCatalog": "Prehľadávať katalóg", + "builderProvider": "Poskytovateľ", + "builderLoadingProviders": "Načítavajú sa poskytovatelia...", + "builderSelectProvider": "Vyberte poskytovateľa", "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderSelectModel": "Vyberte model", + "builderProviderFirst": "Najprv vyberte poskytovateľa", + "builderAccount": "Účet", + "builderPreview": "Náhľad", + "builderAddStep": "Pridať krok", "builderDuplicateExact": "Tento presný krok poskytovateľa/modelu/účtu je už v kombinácii.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Referencia kombinácie", + "builderAddComboRef": "Pridať referenciu kombinácie", + "builderComboRefStep": "Pridať referenciu kombinácie", + "builderPinnedAccount": "Pripnutý účet", + "builderLegacyEntry": "Staršia položka", + "reviewName": "Názov", + "reviewStrategy": "Stratégia", + "reviewSteps": "Kroky", + "reviewAccounts": "Účty", + "reviewProviders": "Poskytovatelia", + "reviewComboRefs": "Referencie kombinácií", + "reviewAdvanced": "Rozšírené nastavenia", + "reviewAgentFlags": "Príznaky agenta", + "reviewSequence": "Poradie modelov", + "reviewNoSteps": "Nie sú nakonfigurované žiadne kroky", "builderStagesDescription": "Dokončite každú fázu, aby ste mohli definovať kombinácie, zostaviť kroky, vybrať stratégiu smerovania a skontrolovať výsledky.", "builderStepsDescription": "Zostavte každý kombinovaný krok v poradí: poskytovateľ, model a potom účet. To umožňuje opätovné použitie rovnakého poskytovateľa a modelu v rôznych účtoch.", "selectProvider": "Vyberte poskytovateľa", @@ -3766,7 +3766,7 @@ "agentFeaturesContextLengthErrorInteger": "Dĺžka kontextu musí byť platné celé číslo", "agentFeaturesContextLengthErrorRange": "Dĺžka kontextu musí byť medzi 1 000 a 2 000 000", "compressionOverride": "Prepísanie kompresie", - "modePack": "Mode Pack", + "modePack": "Balík režimov", "disableSessionStickiness": "Zakázať session stickiness", "sessionStickinessEnabled": "Stickiness zapnutá", "sessionStickinessDisabled": "Stickiness vypnutá", @@ -3800,27 +3800,27 @@ "range7d": "7 dní", "range30d": "30 dní", "range90d": "90 dní", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 dní", + "range365d": "365 dní", "rangeAll": "Všetky časy", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Aktívne modely", + "flatRateEstimateNotice": "Zahŕňa odhady cien tokenov pre paušálne predplatné, nie účtované náklady.", + "flatRateEstimateForecast": "Projekcia zahŕňa odhady paušálnych nákladov.", + "selectedWindow": "Vybrané obdobie", + "activeProviders": "Aktívni poskytovatelia", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Dnešné výdavky", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Podiel poskytovateľov", + "topProviders": "Najlepší poskytovatelia", + "costTrend": "Trend nákladov", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Najlepšie modely", "requestsInWindow": "Requests In Window", "tokenUsage": "Používanie tokenov", "totalTokens": "Celkový počet tokenov", @@ -3862,9 +3862,9 @@ "groupApiKey": "Kľúč API", "groupAccount": "Účet", "groupServiceTier": "Úroveň služby", - "serviceTierFast": "Fast", - "serviceTierFlex": "Flex", - "serviceTierStandard": "Standard", + "serviceTierFast": "Rýchly", + "serviceTierFlex": "Flexibilný", + "serviceTierStandard": "Štandardný", "serviceTierBreakdownTitle": "Úroveň služieb", "serviceTierBreakdownSubtitle": "Rozdelenie Fast / Flex / Standard", "serviceTierUsageSaved": "využitie uložené", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "Koncový bod API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Použite koncový bod kompatibilný s OpenAI s väčšinou SDK a nástrojov.", + "testEndpoint": "Otestovať koncový bod →", + "advancedProtocols": "Pokročilé protokoly", "available": "Dostupné koncové body", "cloudProxy": "Cloud proxy", "disableConfirm": "Naozaj chcete zakázať cloud proxy?", @@ -3900,7 +3900,7 @@ "disableCloud": "Zakázať cloud", "enableCloud": "Povoliť cloud", "modelsAcrossEndpoints": "{models} modelov v {endpoints} koncových bodoch", - "loadingModels": "Loading available models...", + "loadingModels": "Načítavajú sa dostupné modely...", "chatDesc": "Streaming a non-streaming chat so všetkými poskytovateľmi", "embeddings": "Vloženie", "embeddingsDesc": "Textové vloženie pre vyhľadávanie a RAG potrubia", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Prepis zvukových súborov na text (Whisper)", "textToSpeech": "Text na reč", "textToSpeechDesc": "Prevod textu na prirodzene znejúcu reč", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Generovanie hudby", + "musicDesc": "Generujte hudbu a zvukové stopy prostredníctvom ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderovania", "moderationsDesc": "Moderovanie obsahu a klasifikácia bezpečnosti", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API pre Codex a pokročilé agentné pracovné postupy", + "listModelsDesc": "Zobraziť všetky dostupné modely od všetkých pripojených poskytovateľov", + "settingsApiDesc": "Čítať a upravovať konfiguráciu OmniRoute prostredníctvom API", + "settingsApi": "API nastavení", "categoryCore": "Základné API", "categoryMedia": "Médiá a multi-modálne", - "categorySearch": "Search & Discovery", + "categorySearch": "Vyhľadávanie a objavovanie", "categoryUtility": "Nástroje a správa", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Vyhľadávanie na webe", + "webSearchDesc": "Jednotné vyhľadávanie na webe u viacerých poskytovateľov s automatickým prepnutím pri zlyhaní a ukladaním do vyrovnávacej pamäte", + "searchProvider": "Poskytovateľ vyhľadávania", + "searchProviderDesc": "Tento poskytovateľ sa používa na vyhľadávanie na webe prostredníctvom POST /v1/search. Nie je potrebná žiadna konfigurácia modelu — poskytovatelia vyhľadávania sú pripravení na použitie po pripojení kľúča API.", "enableCloudTitle": "Povoliť Cloud Proxy", "whatYouGet": "Čo získate", "cloudBenefitAccess": "Získajte prístup k svojmu API odkiaľkoľvek na svete", @@ -3963,57 +3963,57 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Povoliť tunel", + "cloudflaredInstallAndEnable": "Nainštalovať a povoliť", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Spustené", + "cloudflaredStarting": "Spúšťa sa", + "cloudflaredStoppedState": "Zastavené", + "cloudflaredNotInstalled": "Nenainštalované", + "cloudflaredUnsupported": "Nepodporované", + "cloudflaredError": "Chyba", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Posledná chyba: {error}", "providerModelsTitle": "{provider} — Modely", "noModelsForProvider": "Pre tohto poskytovateľa nie sú dostupné žiadne modely.", "chat": "Chat", "embedding": "Vkladanie", "image": "Obrázok", "custom": "zvykom", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", - "tabApis": "APIs", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "modelsCount": "{count, plural, one {# model} other {# modelov}}", + "sectionTitle": "Integračné rozhranie", + "sectionDescription": "Rozhrania API kompatibilné s OpenAI a koncové body operačných protokolov", + "tabApis": "Rozhrania API", + "tabProtocols": "Protokoly", + "tabsAria": "Sekcie koncových bodov", + "protocolsTitle": "Protokoly", + "protocolsDescription": "MCP a A2A sú plnohodnotné koncové body s vyhradeným monitorovaním a ovládacími prvkami.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "Model Context Protocol cez stdio", + "a2aCardTitle": "Server A2A", + "a2aCardDescription": "Koncový bod Agent2Agent JSON-RPC", + "protocolToolsLabel": "Nástroje", + "protocolTasksLabel": "Úlohy", + "protocolActiveStreamsLabel": "Aktívne streamy", + "protocolLastActivity": "Posledná aktivita", + "quickStart": "Rýchly štart", + "openMcpDashboard": "Otvoriť správu MCP", + "openA2aDashboard": "Otvoriť správu A2A", + "mcpQuickStartTitle": "Rýchly štart MCP", + "mcpQuickStartStep1": "Spustite server MCP pomocou `omniroute --mcp`.", + "mcpQuickStartStep2": "Nakonfigurujte svojho klienta MCP na pripojenie cez transport stdio.", + "mcpQuickStartStep3": "Volajte nástroje, ako sú `omniroute_get_health` a `omniroute_list_combos`.", + "a2aQuickStartTitle": "Rýchly štart A2A", + "a2aQuickStartStep1": "Kartu agenta nájdete na adrese `/.well-known/agent.json`.", + "a2aQuickStartStep2": "Odosielajte požiadavky JSON-RPC na `POST /a2a` pomocou `message/send` alebo `message/stream`.", + "a2aQuickStartStep3": "Sledujte a ovládajte úlohy pomocou `tasks/get` a `tasks/cancel`.", + "completionsLegacy": "Dokončovanie (staršie)", + "completionsLegacyDesc": "Staršie textové dokončovanie OpenAI — akceptuje formát reťazca promptu aj poľa správ", "messagesApi": "Správy", "messagesApiDesc": "Natívny formát rozhrania API Antropických správ pre poskytovateľov kompatibilných s Claude", "imageEdits": "Úpravy obrázkov", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Spracujte veľké dávky požiadaviek asynchrónne (kompatibilné s OpenAI)", "filesApi": "Súbory API", "filesApiDesc": "Nahrávajte a spravujte súbory na dávkové spracovanie", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Generovanie videí", + "videoDesc": "Generujte videá pomocou modelov AI, ako sú ComfyUI a Stable Video Diffusion.", + "tailscaleRequestFailed": "Nepodarilo sa načítať stav Tailscale", + "tailscaleEnableFailed": "Nepodarilo sa povoliť Tailscale Funnel", + "tailscaleWaitingForLogin": "Dokončite prihlásenie do Tailscale na otvorenej karte prehliadača. OmniRoute to automaticky skúsi znova.", + "tailscaleLoginTimedOut": "Časový limit čakania na prihlásenie do Tailscale vypršal", + "tailscaleWaitingForFunnel": "Povoľte Funnel pre toto zariadenie na otvorenej karte prehliadača. OmniRoute bude stav naďalej pravidelne kontrolovať.", + "tailscaleFunnelTimedOut": "Časový limit čakania na povolenie Tailscale Funnel vypršal", + "tailscaleStarted": "Tailscale Funnel je povolený", + "tailscaleDisableFailed": "Nepodarilo sa zakázať Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel je zakázaný", + "tailscaleInstallFailed": "Nepodarilo sa nainštalovať Tailscale", + "tailscaleInstallProgress": "Spracováva sa...", + "tailscaleInstalled": "Tailscale bol úspešne nainštalovaný", + "tailscaleRunning": "Spustené", + "tailscaleNeedsLogin": "Vyžaduje prihlásenie", + "tailscaleStoppedState": "Zastavené", + "tailscaleNotInstalled": "Nenainštalované", + "tailscaleUnsupported": "Nepodporované", + "tailscaleError": "Chyba", + "tailscaleDisable": "Zastaviť Funnel", + "tailscaleInstallAndEnable": "Nainštalovať a povoliť", + "tailscaleLoginAndEnable": "Prihlásiť sa a povoliť", + "tailscaleEnable": "Povoliť Funnel", + "tailscaleUrlNotice": "Používa vašu adresu Tailscale .ts.net. Pri prvom použití môže byť potrebné prihlásenie a schválenie služby Funnel.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Overte toto zariadenie pomocou Tailscale a potom povoľte Funnel.", + "tailscaleBinaryPath": "Binárny súbor: {path}", + "tailscaleLastError": "Posledná chyba: {error}", + "tailscaleInstallTitle": "Nainštalovať Tailscale", + "tailscaleInstallIntro": "Nainštaluje Tailscale na toto zariadenie a pripraví OmniRoute na povolenie služby Funnel.", + "tailscaleInstallPasswordHint": "V systémoch macOS a Linux môže byť na inštaláciu balíka a spustenie démona potrebné sudo.", + "tailscaleSudoPlaceholder": "Voliteľné heslo pre sudo", + "tailscaleInstalling": "Inštaluje sa", "tailscaleSudoLabel": "Heslo Sudo (vyžaduje sa v systéme macOS/Linux)", "ngrokTitle": "ngrok tunel", "ngrokRunning": "Beh", @@ -4108,7 +4108,7 @@ "all": "Všetko", "more": "+{count} ďalších", "showInternalTooltip": "Zobraziť alebo skryť interné trasy (predvolene skryté)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Overenie pomocou Bearer tokenu", "requestBody": "Telo požiadavky", "close": "Zatvoriť", "tryIt": "Vyskúšať", @@ -4139,14 +4139,14 @@ "badgeInternalTooltip": "Toto je interný systémový koncový bod", "tierAll": "Všetky", "tierAuth": "Autentifikované", - "tierLoopback": "Loopback", + "tierLoopback": "Spätná slučka", "tierAlwaysProtected": "Vždy chránené", "tierPublic": "Verejné", "hideInternal": "Skryť interné", "showInternal": "Zobraziť interné", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Vlastná systémová výzva", + "customSystemPromptDescription": "Vložiť vlastnú systémovú výzvu do každej požiadavky na model", + "customSystemPromptPlaceholder": "napr. Vždy odpovedaj ako pirát...", "obsidianEnterToken": "Zadajte token API pre Obsidian", "obsidianConnectFailed": "Pripojenie zlyhalo", "obsidianConnectionFailed": "Pripojenie zlyhalo", @@ -4176,7 +4176,7 @@ "obsidianDisable": "Zakázať", "obsidianConfigureMobile": "Nakonfigurovať Obsidian Mobile", "obsidianMobileInstructions": "V mobilnom Obsidiane: Nastavenia → Sync → WebDAV → zadajte nasledovné:", - "obsidianWebdavUrl": "WebDAV URL", + "obsidianWebdavUrl": "URL WebDAV", "obsidianUsername": "Používateľské meno", "obsidianPassword": "Heslo", "obsidianTailscaleHint": "Ak sa pripájate z mobilu, použite svoju Tailscale IP namiesto localhost. Obidve zariadenia musia byť v rovnakej sieti Tailscale.", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "Token je nakonfigurovaný. Nástroje Notion sú dostupné cez MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Proxy koncového bodu", + "tabApiEndpoints": "Koncové body API", + "apiEndpointsTitle": "Koncové body API", + "apiEndpointsDescription": "Koncové body backendového API, ktoré môžu využívať iné aplikácie a služby. Táto sekcia bude obsahovať zoznam všetkých dostupných rozhraní REST API s dokumentáciou a možnosťami testovania.", + "comingSoon": "Už čoskoro", + "plannedFeatures": "Plánované funkcie", + "featureRestApi": "Katalóg koncových bodov REST API s interaktívnou dokumentáciou", + "featureWebhooks": "Konfigurácia webhookov a odbery udalostí", + "featureSwagger": "Automatické generovanie špecifikácie OpenAPI / Swagger", + "featureAuth": "Správa kľúčov API a rozsahov OAuth pre jednotlivé koncové body" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "Načítava sa panel MCP...", + "activate": "aktivovať", + "deactivate": "deaktivovať", + "confirmSwitchCombo": "Potvrdiť akciu „{action}“ pre kombináciu „{combo}“?", + "switchComboFailed": "Nepodarilo sa prepnúť stav kombinácie.", + "switchComboSuccess": "Kombinácia „{combo}“ bola aktualizovaná.", + "confirmApplyProfile": "Použiť profil odolnosti „{profile}“?", + "applyProfileFailed": "Nepodarilo sa použiť profil odolnosti.", + "applyProfileSuccess": "Profil „{profile}“ bol použitý.", + "confirmResetBreakers": "Resetovať všetky ističe?", + "resetBreakersFailed": "Nepodarilo sa resetovať ističe.", + "resetBreakersSuccess": "Ističe boli resetované.", + "processStatus": "Stav procesu", "online": "Online", "offline": "Offline", "disableLabel": "Zakázať {label}", @@ -4237,30 +4237,30 @@ "mcpStep2": "Nakonfigurujte svojho MCP klienta na pripojenie cez prenos stdio.", "mcpStep3": "Vyvolávajte nástroje ako {code1} a {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", + "sessionUptime": "Doba prevádzky relácie", + "lastHeartbeat": "Posledný signál aktivity", + "activity24h": "Aktivita (24 h)", + "totalCalls": "Celkový počet volaní", + "successRate": "Miera úspešnosti", + "avgLatency": "Priemerná latencia", + "topTools": "Najpoužívanejšie nástroje", + "noToolCalls24h": "Za posledných 24 hodín neboli vykonané žiadne volania nástrojov.", + "runtimeDetails": "Podrobnosti o behu", + "transport": "Prenos", + "scopesEnforced": "Vynútené rozsahy", + "yes": "áno", + "no": "nie", + "lastCall": "Posledné volanie", + "heartbeatPath": "Cesta signálu aktivity", + "operationalControls": "Ovládacie prvky prevádzky", + "switchCombo": "Prepnúť kombináciu", + "inactive": "neaktívna", + "active": "aktívna", + "activateCombo": "Aktivovať kombináciu", + "deactivateCombo": "Deaktivovať kombináciu", + "applyResilienceProfile": "Použiť profil odolnosti", + "profileAggressive": "agresívny", + "profileBalanced": "vyvážený", "profileConservative": "konzervatívny", "applyProfile": "Použiť profil", "resetCircuitBreakers": "Resetujte ističe", @@ -4273,83 +4273,83 @@ "tableAudit": "Audit", "auditLog": "Protokol auditu", "auditSummary": "Volá: {total} | stránka {page} z {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "allTools": "Všetky nástroje", + "allResults": "Všetky výsledky", + "success": "Úspech", + "failure": "Zlyhanie", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", + "loadingAuditEntries": "Načítavajú sa záznamy auditu...", + "noAuditEntriesForFilters": "Pre aktuálne filtre sa nenašli žiadne záznamy auditu.", + "tableTimestamp": "Časová pečiatka", + "tableDuration": "Trvanie", + "tableResult": "Výsledok", + "tableApiKey": "Kľúč API", + "failed": "zlyhalo", + "previous": "Predchádzajúce", + "next": "Ďalšie", + "apiKeyId": "ID kľúča API", + "offset": "Posun", "limit": "Limit", - "tool": "Tool" + "tool": "Nástroj" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "Načítava sa panel A2A...", + "confirmCancelTask": "Zrušiť úlohu {taskId}?", + "cancelTaskFailed": "Úlohu sa nepodarilo zrušiť.", + "cancelTaskSuccess": "Úloha {taskId} bola zrušená.", + "smokeSendFailed": "Rýchly test message/send zlyhal.", + "smokeSendSuccessWithTask": "message/send je v poriadku (úloha {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "Rýchly test message/stream zlyhal.", + "smokeStreamSuccessWithTask": "message/stream je v poriadku (úloha {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream sa dokončil bez ID úlohy.", + "health": "Stav", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "Celkový počet úloh", + "activeStreams": "Aktívne streamy", + "lastTask": "Posledná úloha", + "taskStateOverview": "Prehľad stavov úloh", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "odoslaná", + "working": "spracúva sa", + "completed": "dokončená", + "failed": "zlyhala", + "cancelled": "zrušená" }, - "agentCard": "Agent card", + "agentCard": "Karta agenta", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "Verzia", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "Možnosti", + "agentCardNotAvailable": "Karta agenta nie je k dispozícii.", + "quickValidation": "Rýchle overenie", + "quickValidationDescription": "Vykoná testovacie volania cez aktívny koncový bod `/a2a`.", + "runMessageSend": "Spustiť message/send", + "runMessageStream": "Spustiť message/stream", + "taskManagement": "Správa úloh", + "taskSummary": "{total} úloh | strana {page} z {totalPages}", + "allStates": "všetky", + "allSkills": "všetky zručnosti", + "loadingTasks": "Načítavajú sa úlohy...", + "noTasksForFilters": "Pre aktuálne filtre sa nenašli žiadne úlohy.", + "tableTask": "Úloha", + "tableSkill": "Zručnosť", + "tableState": "Stav", + "tableUpdated": "Aktualizované", + "tableActions": "Akcie", + "view": "Zobraziť", + "cancel": "Zrušiť", + "previous": "Predchádzajúca", + "next": "Nasledujúca", + "taskDetail": "Detail úlohy", + "close": "Zavrieť", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", + "events": "Udalosti", + "artifacts": "Artefakty", + "tablePhase": "Fáza tabuľky", + "offset": "Posun", "limit": "Limit", - "skill": "Skill", + "skill": "Zručnosť", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "správu/odoslanie", "rpcMethodStream": "správa/stream", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Akcie", + "addMemory": "Pridať pamäť", + "allTypes": "Všetky typy", "cancel": "Zrušiť", "checkHealth": "Skontrolujte zdravie", "checkingHealth": "Kontroluje sa…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Ako to funguje", "howWorksContent": "1. Automatická extrakcia: na konci každej odpovede sa automaticky detegujú a ukladajú fakty a epizódy.\n2. Vyhľadávanie: pred každou odpoveďou sa vyhľadajú najrelevantnejšie spomienky prostredníctvom FTS5 (presné), vektora (sémantické) alebo hybridného RRF.\n3. Vloženie: relevantné spomienky sa vložia do kontextu asistenta na zlepšenie kvality odpovede.\n4. Správa: túto stránku použite na zobrazenie, úpravu, export a kompaktovanie starých spomienok." }, - "content": "Content", + "content": "Obsah", "contentPlaceholder": "Hodnota alebo obsah JSON na zapamätanie", - "created": "Created", - "delete": "Delete", + "created": "Vytvorené", + "delete": "Odstrániť", "deleteConfirmDesc": "Túto akciu nie je možné vrátiť späť. Spomienka bude natrvalo odstránená.", "deleteConfirmTitle": "Vymazať spomienku?", - "description": "View and manage stored memory entries", + "description": "Zobrazenie a správa uložených záznamov v pamäti", "editMemory": "Upraviť spomienku", "editModal": { "title": "Upraviť spomienku", @@ -4433,10 +4433,10 @@ "reindexFailed": "Nepodarilo sa spustiť reindexovanie", "keywordLabel": "Kľúčové slovo (FTS5)", "keywordReason": "Vyhľadávanie podľa kľúčových slov je vždy k dispozícii", - "embeddingLabel": "Embedding", + "embeddingLabel": "Vkladanie", "vectorStoreLabel": "Vektorové úložisko", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Preusporiadanie", "qdrantDisabled": "Zakázané", "qdrantOk": "V poriadku ({latencyMs}ms)", "qdrantError": "Chyba pripojenia", @@ -4444,25 +4444,25 @@ "configureCta": "Konfigurovať", "vectorStoreInstallHint": "Pre povolenie vektorového vyhľadávania: npm install sqlite-vec (vyžaduje natívny Node.js, nie WASM), potom reštartujte." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Epizodická", + "export": "Exportovať", + "factual": "Faktická", "healthUnknown": "Zdravie neznáme", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Miera úspešnosti", + "import": "Importovať", "importError": "Nepodarilo sa importovať súbor", "importResult": "{imported} importovaných, {skipped} preskočených", - "key": "Key", + "key": "Kľúč", "keyPlaceholder": "napr. používateľské.predvoľby.téma", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Spomienky", "next": "Ďalej", - "noMemories": "No memories found", + "noMemories": "Nenašli sa žiadne spomienky", "pageInfo": "Strana {page} z {totalPages} (spolu {total})", "pipelineError": "Chyba potrubia", "pipelineOk": "Potrubie je v poriadku ({latencyMs}ms)", "playground": { - "infoTitle": "Memory Playground", + "infoTitle": "Testovacie prostredie pamäte", "infoDesc": "Simulujte, čo by sa vrátilo pre daný dopyt. Žiadne spomienky sa nemenia — náhľad iba na čítanie.", "queryLabel": "Testovací dopyt", "queryPlaceholder": "Zadajte otázku alebo testovaciu frázu...", @@ -4474,18 +4474,18 @@ "simulate": "Simulovať", "resultsTitle": "{count} výsledkov", "resolutionTitle": "Spracovanie vyhľadávania", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Vkladanie", "resolutionStore": "Vektorové úložisko", "resolutionStrategy": "Použitá stratégia", "rerankApplied": "Použitý rerank", - "fallback": "Fallback", + "fallback": "Záložné riešenie", "noResults": "Pre tento dopyt sa nenašli žiadne spomienky.", "tokensUsed": "použitých tokenov", "none": "žiadne", "errorFetch": "Nepodarilo sa načítať náhľad" }, "previous": "Predchádzajúce", - "procedural": "Procedural", + "procedural": "Procedurálna", "qdrant": { "title": "Qdrant (Vektorové úložisko 2. úrovne)", "description": "Voliteľná integrácia Qdrant pre škálovateľné sémantické vyhľadávanie", @@ -4521,7 +4521,7 @@ "cleanNow": "Vyčistiť teraz", "cleanupSuccess": "{count} bod(ov) odstránených", "cleanupFailed": "Čistenie zlyhalo", - "hostLabel": "Host", + "hostLabel": "Hostiteľ", "collectionLabel": "Zbierka" }, "rerank": { @@ -4534,8 +4534,8 @@ }, "save": "Uložiť", "saving": "Ukladá sa...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Hľadať v spomienkach...", + "semantic": "Sémantická", "summarize": { "title": "Kompaktovať staré spomienky", "noCandidates": "Žiadne spomienky nie sú vhodné na kompaktovanie (kritérium: staršie ako 30 dní).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Spomienky", - "playground": "Playground", - "engine": "Engine" + "playground": "Testovacie prostredie", + "engine": "Jadro" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Správa pamäte", + "tokensUsed": "Použité tokeny", "tooltip": { "totalEntries": "Celkový počet spomienok uložených pre tento API kľúč", "tokensUsed": "Odhadovaný celkový počet tokenov obsadených aktívnymi spomienkami", @@ -4558,18 +4558,18 @@ "procedural": "Postupy, pracovné toky a pokyny, ktoré by mal asistent dodržiavať", "semantic": "Koncepty, preferencie a doménové znalosti" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Celkový počet záznamov", + "type": "Typ", "memoryEnabled": "Pamäť povolená" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Zručnosti", + "description": "Spravujte a monitorujte zručnosti AI", + "skillsTab": "Zručnosti", + "executionsTab": "Vykonania", "selectSkillToInspect": "Vyberte zručnosť vľavo na preskúmanie.", "schemaTab": "Schéma", - "handlerTab": "Handler", + "handlerTab": "Obslužný program", "inputSchema": "Vstupná schéma", "outputSchema": "Výstupná schéma", "handlerCode": "Kód handlera", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Spustiť test (zástupný symbol)", "setModeAria": "Nastaviť režim {mode}", "uninstallSkill": "Odinštalovať zručnosť", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Izolované prostredie", + "loading": "Načítavajú sa zručnosti...", + "noSkills": "Nenašli sa žiadne zručnosti", + "noExecutions": "Nenašli sa žiadne vykonania", + "enabled": "Povolené", + "disabled": "Zakázané", "delete": "Vymazať", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "Verzia", + "tableDescription": "Popis", + "skill": "Zručnosť", + "status": "Stav", + "duration": "Trvanie", + "time": "Čas", + "sandboxConfig": "Konfigurácia sandboxu", + "cpuLimit": "Limit CPU", + "cpuLimitDesc": "Maximálny čas vykonávania jednej zručnosti", + "memoryLimit": "Limit pamäte", + "memoryLimitDesc": "Maximálne pridelenie pamäte", + "timeout": "Časový limit", + "timeoutDesc": "Maximálny čas čakania na odpoveď", + "networkAccess": "Prístup k sieti", + "networkAccessDesc": "Povoliť odchádzajúce sieťové požiadavky", + "mode": "Režim", "q": "Q", "filterSkillsPlaceholder": "Filtrujte zručnosti podľa názvu, popisu alebo značky", "allModes": "Všetky režimy", @@ -4607,12 +4607,12 @@ "enabledSkills": "Povolené", "totalExecutions": "Spustenia", "successRate": "Miera úspešnosti", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Trhovisko", "applyFilters": "Použiť filtre", "popularDefaultsLabel": "Predvolene populárne pre vybraného poskytovateľa:", "onMode": "ZAP", "offMode": "VYP", - "autoMode": "AUTO", + "autoMode": "AUTOMATICKY", "installSkillButton": "Inštalovať zručnosť", "installSkillModalTitle": "Inštalovať zručnosť", "installJsonPlaceholder": "Sem prilepte JSON manifest zručnosti...", @@ -4647,7 +4647,7 @@ "healthy": "Zdravý", "degraded": "Degradovaný", "down": "Dole", - "uptime": "Uptime", + "uptime": "Doba prevádzky", "memory": "pamäť", "memoryRss": "Pamäť (RSS)", "heap": "Hromada", @@ -4657,7 +4657,7 @@ "lastCheck": "Posledná kontrola", "providerHealth": "Zdravie poskytovateľa", "systemMetrics": "Systémové metriky", - "tokenHealth": "Token Health", + "tokenHealth": "Stav tokenov", "refreshAll": "Obnoviť všetko", "checkNow": "Skontrolujte teraz", "loadingHealth": "Načítavajú sa zdravotné údaje...", @@ -4665,13 +4665,13 @@ "retry": "Skúste to znova", "allOperational": "Všetky systémy funkčné", "issuesDetected": "Zistené systémové problémy", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute je pripravený", + "healthVerdictActionRequired": "Na obnovenie plnej prevádzky je potrebný zásah", + "healthVerdictCoolingDown": "Prebieha stabilizácia po nedávnych zmenách", + "healthSubtitle": "Kontrola stavu systému", + "advancedDiagnosticsTitle": "Pokročilá diagnostika", + "hide": "Skryť", + "show": "Zobraziť", "updatedAt": "Aktualizované {time}", "latency": "Latencia", "latencyP50": "p50", @@ -4681,7 +4681,7 @@ "notAvailable": "—", "totalRequests": "Celkový počet žiadostí", "noDataYet": "Zatiaľ žiadne údaje", - "promptCache": "Prompt Cache", + "promptCache": "Vyrovnávacia pamäť promptov", "entries": "Príspevky", "hitRate": "Miera prístupu", "hitsMisses": "Hity / Misses", @@ -4698,9 +4698,9 @@ "providers": "Poskytovatelia", "configuredProvidersLabel": "Nakonfigurované na ovládacom paneli", "configuredProvidersHint": "Poskytovatelia s povereniami uloženými v /dashboard/providers, bez ohľadu na stav runtime.", - "activeProviders": "{count} active", + "activeProviders": "{count} aktívnych", "activeProvidersHint": "Konfigurovaní poskytovatelia majú momentálne povolené požiadavky na smerovanie.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} monitorovaných", "monitoredProvidersHint": "Poskytovatelia v súčasnosti sledovaní monitormi zdravia ističov.", "healthyCount": "{count} zdravý", "nodeVersion": "Uzol {version}", @@ -4721,11 +4721,11 @@ "resetting": "Resetovanie...", "resetAll": "Obnoviť všetko", "until": "Do {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Vyčerpané", + "learnedFromHeaders": "Zistené z hlavičiek", + "remainingOfLimit": "Zostáva {remaining}/{limit}", + "throttleStatus": "Obmedzenie: {value}", + "lastHeaderUpdate": "Aktualizácia hlavičky: {age}", "databaseHealth": "Zdravie databázy", "databaseHealthDescription": "Diagnostikujte a opravte neaktuálne riadky kvót/domén a poškodené referencie kombinácií.", "status": "Stav", @@ -4787,7 +4787,7 @@ "telemetry": { "title": "Systémová telemetria", "description": "Postupné signály požiadaviek, času spustenia, relácie a pamäte z tohto procesu OmniRoute.", - "uptime": "Uptime", + "uptime": "Doba prevádzky", "totalRequests": "Celkový počet žiadostí", "avgLatency": "Priem. latencia", "errorRate": "Chybovosť", @@ -4802,7 +4802,7 @@ "partialData": "Telemetria je čiastočne dostupná: {error}" }, "mitm": { - "title": "MITM Proxy", + "title": "MITM proxy", "description": "Transparentný proxy na zachytávanie a smerovanie požiadaviek klientov.", "enable": "Povoliť MITM Proxy", "enableDesc": "Spustite alebo zastavte proces lokálneho odpočúvania a prepísanie DNS.", @@ -4810,7 +4810,7 @@ "running": "Beh", "stopped": "Zastavené", "start": "Štart", - "stop": "Stop", + "stop": "Zastaviť", "refresh": "Obnoviť", "port": "Port proxy", "apiKey": "Kľúč API smerovača", @@ -4862,7 +4862,7 @@ "title": "Denníky", "requestLogs": "Vyžiadať denníky", "proxyLogs": "Protokoly proxy", - "auditLog": "Audit Log", + "auditLog": "Protokol auditu", "console": "Konzola", "auditLogDesc": "Administratívne úkony a bezpečnostné udalosti", "loading": "Načítava sa...", @@ -4888,28 +4888,28 @@ "previous": "Predchádzajúce", "next": "Ďalej", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Zobraziť podrobnosti", + "eventMetadata": "Metadáta udalosti", + "eventPayload": "Dáta udalosti", + "requestId": "ID požiadavky", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", + "offset": "Posun", "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "status": "Stav", + "resourceType": "Typ zdroja", + "totalEntries": "Celkový počet záznamov", + "tab": "Karta", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Zavrieť", + "runningRequests": "Aktívne požiadavky", + "runningRequestsDesc": "Zobrazenie aktuálne prebiehajúcich požiadaviek na nadradené služby v reálnom čase", "clearAll": "Vymazať všetko", "confirmClearActiveRequests": "Vymazať všetky aktívne žiadosti?", "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "provider": "Poskytovateľ", + "account": "Účet", + "elapsed": "Uplynulý čas", "activeStage": "Fáza", "activeStageUnknown": "Zatiaľ neodoslané na upstream", "activeStageRegistered": "Zaregistrované", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Slot pre rate limit získaný", "activeStageSendingToProvider": "Odosiela sa na upstream", "activeStageProviderResponseStarted": "Odpoveď z upstreamu sa začala", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Počet", + "payloads": "Dáta požiadaviek", + "viewPayloads": "Zobraziť", + "activeCount": "{count} aktívnych", + "clientPayload": "Dáta klientskej požiadavky", + "upstreamPayload": "Dáta požiadavky pre nadradeného poskytovateľa", + "upstreamNotSentYet": "Zatiaľ neodoslané nadradenej službe", + "runningRequestDetailMeta": "Účet: {account} — Uplynulý čas: {elapsed}", + "export": "Exportovať", + "exporting": "Exportuje sa...", + "exportFailed": "Export zlyhal", "cleanHistoryButton": "Vyčistiť históriu", "cleanHistoryTitle": "Vyčistiť históriu záznamov?", "cleanHistoryMessage": "Týmto sa natrvalo vymažú všetky riadky záznamov požiadaviek, staršie riadky podrobností a lokálne súbory artefaktov v DATA_DIR/call_logs. Živá stránka sa po vyčistení obnoví.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Vyčistených bolo {deleted} záznamov, {deletedArtifacts} artefaktov a {deletedDetailedLogs} starších riadkov podrobností.", "cleanHistoryEmpty": "Nenašla sa žiadna história záznamov požiadaviek.", "cleanHistoryFailed": "Nepodarilo sa vyčistiť históriu záznamov.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Časový rozsah", + "lastNHours": "Posledných {hours}", + "defaultRange": "predvolené", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Nepodarilo sa načítať protokoly", + "copyFailed": "Nepodarilo sa skopírovať záznam protokolu", + "copyLogEntry": "Kopírovať záznam protokolu", "filterByLevel": "Filtrovať podľa úrovne záznamu", "searchPlaceholder": "Hľadať v záznamoch…", "searchAria": "Hľadať záznamy denníka", @@ -4987,9 +4987,9 @@ "multiProvider": "Multi-poskytovateľ", "usageTracking": "Sledovanie používania", "securityDesc": "Nastavte si heslo na ochranu svojho informačného panela alebo ho zatiaľ preskočte.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Bez hesla nebudete môcť počas nastavenia pridať poskytovateľov. Môžete ich pridať neskôr z ovládacieho panela po nastavení hesla.", "providerDesc": "Pripojte svojho prvého poskytovateľa AI. Neskôr môžete pridať ďalšie.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Ak chcete pridať poskytovateľov, musíte najprv nastaviť heslo. Vráťte sa ku kroku zabezpečenia a nastavte heslo alebo pridajte poskytovateľov neskôr z ovládacieho panela.", "apiKeyRequired": "API kľúč (povinné)", "customUrlOptional": "Vlastná adresa URL (voliteľné)", "testDesc": "Overte, či pripojenie k vášmu poskytovateľovi funguje.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Importuje sa…", "importFromFileImport": "Importovať {count} poskytovateľov", "importFromFileResult": "Importovaných {success} poskytovateľov ({failed} zlyhalo)", + "importFromFileDownloadTemplate": "Stiahnuť šablónu CSV", + "importFromFileMoreErrors": "+{count} ďalších", + "importFromFileSchemaHint": "Stĺpce CSV sú pozičné: provider, name, apiKey, baseUrl (voliteľné), priority (voliteľné). Stĺpec provider musí obsahovať existujúce ID spravovaného poskytovateľa alebo ID už zaregistrovaného uzla kompatibilného s OpenAI/Anthropic — tento import nevytvára nové uzly koncových bodov.", "adaptaTutorial": { "title": "Ako pripojiť Adapta Web", "introPrefix": "Adapta sa autentifikuje cez Clerk. Token", @@ -5115,7 +5118,7 @@ "testSuccess": "Pripojenie úspešné", "testFailed": "Pripojenie zlyhalo", "available": "Dostupné", - "cooldown": "Cooldown", + "cooldown": "Čas na obnovenie", "unavailable": "nedostupné", "unknown": "Neznámy", "oauthLabel": "OAuth", @@ -5165,20 +5168,20 @@ "modelsHiddenCount": "{count} skrytých", "warningCount": "{count} Upozornenie", "noConnections": "Žiadne spojenia", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Vypršalo", + "expiringSoonBadge": "Čoskoro vyprší", "freeTier": "Voľná úroveň", "freeTierAvailable": "K dispozícii je bezplatná úroveň", "hasFreeTooltip": "Dostupná bezplatná úroveň", "noAuthLabel": "Bez autentifikácie", "noAuthProviders": "Poskytovatelia bez autentifikácie", - "upstreamProxyLabel": "Upstream Proxy", + "upstreamProxyLabel": "Nadradený proxy server", "freeAggregated": "Všetci poskytovatelia s bezplatnou úrovňou (zobrazení aj v ich natívnej kategórii)", "deprecated": "Zastarané", "deprecatedProvider": "Podpora tohto poskytovateľa bola ukončená", "riskNotice": { "title": "Pred pokračovaním", - "detailsTitle": "Usage caveats", + "detailsTitle": "Upozornenia k používaniu", "tooltip": "Poskytovateľ s obmedzeniami používania — kliknutím zobrazíte podrobnosti", "oauth": "Tento poskytovateľ používa vašu oficiálnu reláciu produktu/OAuth, ktorá nie je autorizovaná na použitie ako proxy/smerovač. Neodporúčame intenzívne používanie autonómnych agentov (v štýle OpenCloud, dlhé viacstupňové toky, veľké dávky) — upstream môže reagovať obmedzením alebo zablokovaním účtu. Používajte na vlastné riziko.", "webCookie": "Tento poskytovateľ sa autentifikuje prostredníctvom súborov cookie vašej webovej relácie. Služba upstream môže reláciu kedykoľvek zneplatniť, čo si vyžiada opätovné prihlásenie. Neodporúča sa pre dlhé operácie bez dozoru. Používajte na vlastné riziko.", @@ -5188,9 +5191,9 @@ "cancel": "Zrušiť" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "Označené pripojenia: {count} — až {maxFailures} nedávnych zlyhaní{lastFailureSuffix}. Kliknutím zobrazíte stav pripojení.", + "lastFailureSuffix": "(posledné zlyhanie {time})", + "ariaLabel": "Zobraziť podrobnosti o stave pripojení, počet upozornení: {count}" }, "disabled": "Zakázané", "enableProvider": "Povoliť poskytovateľa", @@ -5225,7 +5228,7 @@ "failedCreate": "Poskytovateľa sa nepodarilo vytvoriť", "errorOccurred": "Vyskytla sa chyba. Skúste to znova.", "modelStatus": "Stav modelu", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Iba nakonfigurované", "allModelsOperational": "Všetky modely funkčné", "modelsWithIssues": "{count} modelov s problémami", "allModelsNormal": "Všetky modely reagujú normálne.", @@ -5236,7 +5239,7 @@ "clearing": "Prebieha čistenie...", "until": "Do {time}", "providerTestFailed": "Test poskytovateľa zlyhal", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Časový limit testu poskytovateľa vypršal — naraz sa testuje príliš veľa pripojení", "modeTest": "{mode} Test", "passedCount": "{count} prešiel", "failedCount": "{count} zlyhalo", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL ikony", "iconUrlHint": "Voliteľné. URL obrázka zobrazeného ako ikona tohto poskytovateľa.", "iconUrlInvalid": "Neplatná URL ikony. Použite http(s):// alebo data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Časové pásmo obnovenia dennej kvóty", + "dailyQuotaResetTimezoneHint": "Voliteľné časové pásmo IANA použité, keď nadradený server neposkytne X-RateLimit-Reset. Ak chcete zachovať krátke obdobie čakania, ponechajte pole prázdne.", + "dailyQuotaResetHourLabel": "Hodina obnovenia dennej kvóty", + "dailyQuotaResetHourHint": "Miestna hodina 0 – 23 vo vyššie uvedenom časovom pásme. Prázdna hodnota znamená, že na úrovni uzla nie je nastavený čas.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Poskytovateľ sa nenašiel", "deleteConnectionConfirm": "Odstrániť toto pripojenie?", "deleteConnectionConfirmNamed": "Naozaj chcete odstrániť {name}? Túto akciu nemožno vrátiť späť.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Odstrániť vybrané ({count})", + "batchDeleteConfirm": "Odstrániť pripojenia ({count})? Túto akciu nemožno vrátiť späť.", + "batchDeleteSuccess": "Odstránené pripojenia: {count}", "batchActivateSelected": "Aktivovať", "batchDeactivateSelected": "Deaktivovať", "batchRetestSelected": "Znova otestovať", @@ -5292,7 +5295,7 @@ "filterError": "Chyba", "filterBanned": "Zablokované", "filterCreditsExhausted": "Vyčerpané kredity", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Hľadať účty…", "noFilteredConnections": "Aktuálnemu filtru nezodpovedajú žiadne pripojenia.", "failedSetAlias": "Nepodarilo sa nastaviť alias", "setAliasSuccess": "Alias {alias} nastavený", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "Podrobnosti kompatibilné s OpenAI", "messagesApi": "Správy API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Vektorové reprezentácie", + "audioTranscriptions": "Prepis zvuku", + "audioSpeech": "Syntéza reči", + "imagesGenerations": "Generovanie obrázkov", "chatCompletions": "Dokončenia četu", "importingModels": "Importuje sa...", "importFromModels": "Importovať z /models", - "modelsImported": "{count} models imported", + "modelsImported": "Importované modely: {count}", "allModelsAlreadyImported": "Všetky modely sú už importované", "noNewModelsToImport": "Žiadne nové modely na import — všetky modely sú už v registri alebo v zozname vlastných modelov", "skippingExistingModels": "Preskakujem {count} existujúcich modelov", @@ -5350,13 +5353,13 @@ "importFailed": "Import zlyhal", "noNewModelsAdded": "Neboli pridané žiadne nové modely.", "adding": "Pridáva sa...", - "close": "Close", + "close": "Zavrieť", "importingModelsTitle": "Importovanie modelov", "copyModel": "Kopírovať model", "filterModels": "Filtrovať modely…", "testAllRateLimited": "Dosiahnutý limit požiadaviek, predčasne zastavené", "hideFailedAuto": "Automaticky skryť zlyhané modely", - "selectAllModels": "Select all", + "selectAllModels": "Vybrať všetko", "hideAllModels": "Skryť všetky", "modelsActive": "aktívne", "showModel": "Zobraziť model", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Jeden kľúč na riadok. Formát: name|apiKey alebo len apiKey (automaticky pomenovaný podľa indexu).", "bulkValidateKeys": "Pred uložením overte každý kľúč (pomalšie)", "bulkAddAllKeys": "Pridať všetky kľúče", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {Pridaný # kľúč} few {Pridané # kľúče} other {Pridaných # kľúčov}}", + "bulkFailedCount": "{count, plural, one {# zlyhanie} few {# zlyhania} other {# zlyhaní}}", "optional": "Voliteľné", "anthropicCompatibleName": "Antropické kompatibilné", "openaiCompatibleName": "Kompatibilné s OpenAI", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Vyskytla sa neočakávaná chyba", "getApiKey": "Získať API kľúč", "getApiKeyDescription": "Zaregistrujte sa alebo sa prihláste na API kľúč", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# pripojenie} few {# pripojenia} other {# pripojení}}", "messagesPath": "správy", "responsesPath": "odozvy", "chatCompletionsPath": "chat/dokončenia", @@ -5419,17 +5422,17 @@ "configured": "nakonfigurovaný", "providerProxyConfigureHint": "Nakonfigurujte proxy pre všetky pripojenia tohto poskytovateľa", "providerProxy": "Proxy poskytovateľa", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Opraviť env", + "repairEnvWorking": "Opravuje sa...", + "repairEnvHint": "Obnoviť chýbajúce predvolené hodnoty OAuth v súbore .env bez prepísania existujúcich hodnôt.", + "repairEnvSuccess": "Predvolené hodnoty OAuth boli obnovené", + "repairEnvFailed": "Súbor .env sa nepodarilo opraviť", "noConnectionsYet": "Zatiaľ žiadne spojenia", "addFirstConnectionHint": "Začnite pridaním prvého pripojenia", "addConnection": "Pridať pripojenie", "availableModels": "Dostupné modely", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Vstavané modely", + "builtInModelsHint": "Modely v registri tohto poskytovateľa. Pomocou ceruzky nastavte možnosti kompatibility.", "pageAutoRefresh": "Stránka sa obnoví automaticky...", "statusDisabled": "zdravotne postihnutých", "statusConnected": "pripojený", @@ -5443,7 +5446,7 @@ "statusError": "chyba", "oauthAccount": "Účet OAuth", "errorTypeRuntime": "Miestny čas spustenia", - "errorTypeUpstreamAuth": "Upstream auth", + "errorTypeUpstreamAuth": "Overenie nadradeného servera", "errorTypeMissingCredential": "Chýba poverenie", "errorTypeRefreshFailed": "Obnovenie zlyhalo", "errorTypeTokenExpired": "Platnosť tokenu vypršala", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Znova overte toto pripojenie", "proxyConfig": "Konfigurácia proxy", "aliasExistsAlert": "Alias „{alias}“ už existuje. Použite iný model alebo upravte existujúci alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "názov aliasu", + "clickToSetAlias": "Kliknutím nastavte alias", + "clickToEditAlias": "Alias: {alias} (kliknutím upravíte)", "openRouterAnyModelHint": "OpenRouter podporuje akýkoľvek model. Pridajte modely a vytvorte aliasy pre rýchly prístup.", "modelIdFromOpenRouter": "ID modelu (z OpenRouter)", "openRouterModelPlaceholder": "antropický/claude-3-opus", "customModels": "Vlastné modely", "customModelsHint": "Pridajte ID modelov, ktoré nie sú v predvolenom zozname. Tieto budú k dispozícii na smerovanie.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normalizovať ID volaní nástrojov na 9 znakov (napr. Mistral)", + "preserveDeveloperRoleLabel": "Zachovať rolu vývojára OpenAI Responses (nemapovať ju na system)", + "compatAdjustmentsTitle": "Kompatibilita", + "compatButtonLabel": "Kompatibilita", + "compatToolIdShort": "ID nástroja 9", + "compatDeveloperShort": "Rola vývojára", + "compatDoNotPreserveDeveloper": "Nezachovať rolu vývojára", + "compatBadgeNoPreserve": "Nezachovať", + "compatProtocolLabel": "Protokol požiadavky klienta", + "compatProtocolHint": "Tieto možnosti sa použijú, keď OmniRoute rozpozná tento formát požiadavky (OpenAI Chat, Responses API alebo Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Prepísať natívne volania nástroja web_fetch na /v1/web/fetch v OmniRoute.", "interceptionLoadError": "Nepodarilo sa načítať nastavenia zachytávania: {error}", "interceptionSaveError": "Nepodarilo sa uložiť nastavenia zachytávania: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Zobraziť v Claude Code (claude/…)", + "ccAliasSectionHint": "Ponúkať modely tohto poskytovateľa pod zrkadlovými ID claude/<provider>/<model>, aby ich zisťovanie modelov brány Claude Code mohlo uviesť v zozname. Predvolene vypnuté — zapnutím sa zdvojnásobí počet položiek katalógu pre všetkých klientov.", + "ccAliasProviderLevelLabel": "Predvolené nastavenie poskytovateľa", + "ccAliasModelOverridesLabel": "Prepísania pre jednotlivé modely", + "ccAliasModelOverrideAriaLabel": "Prepísanie pre {modelId}", + "ccAliasStateInherit": "Zdediť", + "ccAliasStateOn": "Zapnuté", + "ccAliasStateOff": "Vypnuté", + "ccAliasAddModelPlaceholder": "ID modelu (napr. gpt-4o)", + "ccAliasAddModelButton": "Pridať prepísanie", + "ccAliasLoadError": "Nepodarilo sa načítať nastavenia aliasov zisťovania: {error}", + "ccAliasSaveError": "Nepodarilo sa uložiť nastavenie aliasu zisťovania: {error}", + "compatUpstreamHeadersLabel": "Dodatočné hlavičky pre upstream", + "compatUpstreamHeadersHint": "Nastavenie s vysokými oprávneniami — má rovnakú úroveň dôveryhodnosti ako úprava prihlasovacích údajov API poskytovateľa; používať by ho mali iba dôveryhodní správcovia. Zlúči sa po tom, ako OmniRoute pridá autentifikáciu z API kľúča poskytovateľa. Ak vlastná hlavička používa rovnaký názov ako existujúca hlavička (napr. Authorization), vaša hodnota úplne nahradí automaticky vygenerovanú hlavičku (vrátane tokenu Bearer) — upstream uvidí iba to, čo ste zadali, nie kľúč z nastavení. Nesprávna konfigurácia môže spôsobiť chybu 401 alebo nefunkčnú autentifikáciu upstreamu. Jeden riadok na hlavičku (napr. dodatočná hlavička Authentication pre niektoré brány). Ukážku hodnoty zobrazíte umiestnením kurzora alebo zameraním poľa. Uloží sa pri strate zamerania, kliknutí mimo alebo zatvorení tohto panela.", + "compatUpstreamHeaderName": "Názov hlavičky", + "compatUpstreamHeaderValue": "Hodnota", + "compatUpstreamAddRow": "Pridať hlavičku", + "compatUpstreamRemoveRow": "Odstrániť riadok", + "compatBadgeUpstreamHeaders": "Hlavičky", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Importovať iba bezplatné modely", @@ -5592,26 +5595,26 @@ "email": "Email", "healthCheckMinutes": "Kontrola stavu (min)", "healthCheckHint": "Interval proaktívneho obnovenia tokenu. 0 = vypnuté.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Zrušiť výber všetkých", + "modelsActiveCount": "Aktívne: {active}/{total}", + "noModelsMatch": "Filtru „{filter}“ nezodpovedajú žiadne modely", + "groupLabel": "Prostredie", + "groupPlaceholder": "napr. eKaizen, Osobné", "failedTestConnection": "Nepodarilo sa otestovať pripojenie", "failed": "Nepodarilo sa", "leaveBlankKeepCurrentApiKey": "Ak chcete zachovať aktuálny kľúč API, nechajte pole prázdne.", "editCompatibleTitle": "Upraviť {type} kompatibilné", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "Koreňová URL adresa vášho API kompatibilného s {type}. V časti Rozšírené nastavenia môžete nastaviť vlastné cesty ku koncovým bodom.", "apiKeyForCheck": "API kľúč (na kontrolu)", "testModelIdLabel": "ID modelu (voliteľné)", "testModelIdPlaceholder": "napr. my-model-id", "testModelIdHint": "Ak poskytovateľ nemá koncový bod /models, zadajte ID modelu na overenie prostredníctvom /chat/completions.", "compatibleProdPlaceholder": "{type} Kompatibilné (produkt)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Token bol úspešne obnovený", + "tokenRefreshFailed": "Obnovenie tokenu zlyhalo", "cursorSessionUnchanged": "Relácia je už aktuálna", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Použiť autentifikáciu", + "exportCodexAuthFile": "Exportovať autentifikáciu", "applyClaudeAuthLocal": "Použiť autorizáciu", "exportClaudeAuthFile": "Exportovať autorizáciu", "importClaudeAuth": "Autorizácia importu", @@ -5704,7 +5707,7 @@ "codexExternalLinkConnected": "Účet Codex bol pripojený prostredníctvom externého odkazu.", "codexExternalLinkExpired": "Platnosť odkazu vypršala pred dokončením.", "importCodexAuth": "Autorizácia importu", - "codexImportModalTitle": "Import Codex Auth", + "codexImportModalTitle": "Importovať autentifikáciu Codex", "codexImportTabSingle": "Slobodný", "codexImportTabBulk": "Hromadné", "codexImportTabUpload": "Nahrajte súbor", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} zlyhalo", "codexImportBulkZipExtracting": "Extrahuje sa ZIP…", "codexImportBulkZipError": "Extrahovanie ZIP zlyhalo", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Rozšírené nastavenia", + "chatPathLabel": "Cesta ku koncovému bodu chatu", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Vlastná cesta chatu pre poskytovateľov s neštandardnými API (napr. /v4/chat/completions)", + "modelsPathLabel": "Cesta ku koncovému bodu modelov", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Vlastná cesta k modelom na overenie (napr. /v4/models)", "clientIdentityLabel": "Identita klienta", "clientIdentityHint": "Voliteľné. Pridáva hlavičky odtlačku klienta (napr. User-Agent) zodpovedajúce známemu CLI pre kompatibilné brány, ktoré ich očakávajú.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Deaktivované (manuálne)", + "statusBanned": "Zablokované / porušenie pravidiel sandboxu", + "statusCreditsExhausted": "Nedostatočný zostatok / vyčerpaná kvóta", + "showEmails": "Zobraziť všetky e-mailové adresy", + "hideEmails": "Skryť všetky e-mailové adresy", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Pridajte ďalší kľúč API alebo vložte viacero kľúčov", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "aggregatorsGateways": "Agregátory a brány", + "enterpriseCloud": "Podnikové a cloudové služby", + "apiFormatLabel": "Označenie formátu API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "Oblasť API: Čína", + "apiRegionHint": "Pomôcka pre oblasť API", + "apiRegionInternational": "Oblasť API: medzinárodná", + "apiRegionLabel": "Označenie oblasti API", + "apikey": "Kľúč API", + "audio": "Zvuk", + "audioProvidersHeading": "Nadpis poskytovateľov zvukových služieb", "cloudAgentProviders": "Poskytovatelia cloudových agentov", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Krátke označenie zvuku", + "azureOpenAiBaseUrlHint": "Pomôcka pre základnú URL adresu Azure Open AI", + "bailianBaseUrlHint": "Pomôcka pre základnú URL adresu Bailian", + "claudeWebCookieHint": "Otvorte claude.ai → DevTools → Application → Cookies → claude.ai a skopírujte hodnotu 'sessionKey'. Pre Cloudflare sú potrebné aj cf_clearance, __cf_bm, _cfuvid.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Pomôcka pre súbor cookie služby Blackbox Web", + "blackboxWebCookiePlaceholder": "Zástupný text súboru cookie služby Blackbox Web", "t3ChatWebCookieHint": "Otvorte t3.chat → DevTools → Aplikácia → Miestne úložisko → https://t3.chat, skopírujte 'convex-session-id'. Potom otvorte DevTools → Network, skopírujte celú hlavičku súboru cookie z akejkoľvek žiadosti o rozhovor. Prilepte obe hodnoty do polí nižšie.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Pomôcka pre súbor cookie služby Grok Web", "blockClaudeExtraUsageDescription": "Keď je povolené, OmniRoute označí toto pripojenie Claude ako nedostupné hneď, ako API pre používanie nahlási čakajúce dodatočné používanie, takže záložný systém prejde na iné pripojenie namiesto pokračovania v dodatočnom účtovaní na základe platby za použitie.", "blockClaudeExtraUsageLabel": "Zablokovať nadmerné používanie Claude", "disableCoolingDescription": "Preskočiť prechodný cooldown (doba chladnutia), aby toto pripojenie zostalo oprávnené aj po odstrániteľných chybách (konečné stavy ako zablokované/vypršané stále platia).", "disableCoolingLabel": "Zakázať cooldown pre toto pripojenie", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {Pridaný 1 kľúč} few {Pridané # kľúče} other {Pridaných # kľúčov}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {Preskočený 1 duplikát} few {Preskočené # duplikáty} other {Preskočených # duplikátov}}", + "bulkPasteHint": "Vložte jeden kľúč API na každý riadok. Prázdne riadky sa ignorujú a duplicitné kľúče sa preskočia.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Pridá beta hlavičku redact-thinking pre upstreamy kompatibilné s CC, ktoré vyžadujú skryté prúdy uvažovania Claude.", + "ccCompatibleRedactThinkingLabel": "Povoliť beta funkciu redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Pridá `display: \"summarized\"` do požiadaviek na uvažovanie kompatibilných s CC, aby podporované modely Claude mohli streamovať viditeľné prírastky uvažovania.", + "ccCompatibleSummarizeThinkingLabel": "Povoliť súhrnné zobrazenie uvažovania", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Použiť prioritnú úroveň služby pre požiadavky Codex, keď je dostupná.", + "codexFastServiceTierLabel": "Rýchla úroveň služby Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Zástupný text názvu hlavičky kompatibilného upstreamu", + "compatUpstreamHeaderValuePlaceholder": "Zástupný text hodnoty hlavičky kompatibilného upstreamu", + "compatible": "Kompatibilné", + "configuredCount": "Počet nakonfigurovaných položiek", + "consoleApiKeyOracleHint": "Pomocný text pre kľúč API konzoly Oracle", + "consoleApiKeyOracleLabel": "Kľúč API konzoly Oracle", + "consoleApiKeyOraclePlaceholder": "Zástupný text kľúča API konzoly Oracle", + "newApiUserIdLabel": "ID používateľa New-API", + "newApiUserIdPlaceholder": "napr. 12345", + "newApiUserIdHint": "Hodnota hlavičky AgentRouter New-Api-User, ktorá sa používa spolu s kľúčom API konzoly na načítanie zostatku kvóty.", "newApiAggregatorToggleLabel": "Agregátorová brána", "newApiAggregatorToggleHint": "Povoľte detekciu zostatku pre uzly agregátora New-API / One-API / Sub2API. Dashboard zobrazí odznak zostatku a smerovanie predletu kvóty preskočí vyčerpané účty.", "newApiAggregatorConsoleApiKeyHint": "Prístupový token systému pre koncový bod agregátora /api/user/self. Nie API kľúč pre smerovanie.", @@ -5830,82 +5833,82 @@ "featureFlagNewApiAggregatorBalanceDescription": "Povoliť detekciu zostatku pre uzly kompatibilné s New-API / One-API / Sub2API agregátorom", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Pomocný text pre vlastného používateľského agenta", + "customUserAgentLabel": "Vlastný používateľský agent", + "databricksBaseUrlHint": "Pomocný text pre základnú URL adresu Databricks", + "defaultThinkingStrengthHint": "Použije sa, keď požiadavka neurčuje mieru úsilia pri uvažovaní.", + "defaultThinkingStrengthLabel": "Predvolená intenzita premýšľania", + "deleteAllExtraApiKeys": "Odstrániť všetko", + "excludedModelsHint": "Pomocný text pre vylúčené modely", + "excludedModelsLabel": "Vylúčené modely", + "excludedModelsPlaceholder": "Zástupný text pre vylúčené modely", + "expirationBannerExpired": "Platnosť vypršala", + "expirationBannerExpiredDesc": "Popis upozornenia na vypršanú platnosť", + "expirationBannerExpiringSoon": "Platnosť čoskoro vyprší", + "expirationBannerExpiringSoonDesc": "Popis upozornenia na blížiace sa vypršanie platnosti", + "extraApiKeyMasked": "Kľúč {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Pomocný text pre ďalšie kľúče API", + "extraApiKeysLabel": "Ďalšie kľúče API", + "apiKeyHealthLabel": "Stav kľúča API", + "apiKeyStatusActive": "Aktívny", + "apiKeyStatusWarning": "Upozornenie ({count} zlyhaní)", + "apiKeyStatusInvalid": "Neplatný", + "primaryKey": "Primárny kľúč", + "apiKeyInvalidAlert": "Počet kľúčov API označených ako neplatné z dôvodu zlyhaní overenia v pripojeniach {connections}: {count}. Pri rotácii budú preskočené. Kliknutím ich skontrolujete.", + "apiKeyInvalidAlertTitle": "Upozornenie na stav kľúča API", + "apiKeyWarningAlert": "Počet kľúčov API v stave upozornenia z dôvodu zvýšenej miery zlyhaní v pripojeniach {connections}: {count}. Skontrolujte ich, aby ste predišli problémom s rotáciou.", + "apiKeyWarningAlertTitle": "Upozornenie na kľúč API", + "googlePseInfo": "Informácie o Google PSE", "antigravityProjectIdHint": "Voliteľné prepísanie požiadaviek Antigravity Cloud Code. Ak chcete použiť projekt objavený počas protokolu Google OAuth, nechajte pole prázdne.", "antigravityClientProfileLabel": "Profil klienta", "antigravityClientProfileHint": "Vyberte, ktorú identitu klienta Antigravity má OmniRoute prezentovať rozhraniu API.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Úroveň Codex Fast je aktívna", - "tierFast": "Fast", + "tierFast": "Rýchle", "antigravityProjectIdLabel": "ID projektu Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Zástupný text súboru cookie Grok Web", + "herokuBaseUrlHint": "Pomocný text pre základnú URL adresu Heroku", + "hideEmail": "Skryť e-mail", + "imageProviders": "Poskytovatelia obrázkov", "videoProviders": "Generovanie videa", "embeddingRerankProviders": "Vloženie a prehodnotenie", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Krátky názov obrázkov", + "llmProviders": "Poskytovatelia LLM", + "localProviderApiKeyOptionalHint": "Voliteľný tip pre API kľúč lokálneho poskytovateľa", + "localProviderBaseUrlHint": "Tip pre základnú URL lokálneho poskytovateľa", + "localProviders": "Lokálni poskytovatelia", + "maxConcurrentWholeNumberError": "Maximálny počet súbežných požiadaviek musí byť celé číslo", "m365TierLabel": "Úroveň Copilot", "m365TierHint": "Vyberte, ktoré rozhranie Microsoft 365 Copilot toto pripojenie používa. Individual je predvolený spotrebiteľský BizChat; Education a Enterprise (pracovné) sa prihlasujú do rozhraní svojich tenantov.", "m365TierIndividualOption": "Individual (predvolené)", - "m365TierEduOption": "Education", + "m365TierEduOption": "Vzdelávanie", "m365TierEnterpriseOption": "Enterprise / Pracovné", "tierOverrideLabel": "Prepísanie úrovne", "tierOverrideAuto": "Automaticky (rozhoduje smerovanie)", "tierOverrideFree": "Bezplatné", "tierOverrideCheap": "Lacné", - "tierOverridePremium": "Premium", + "tierOverridePremium": "Prémiové", "tierOverrideHelpText": "Pripnúť tohto poskytovateľa k úrovni smerovania namiesto toho, aby ju OmniRoute odvodil z cien modelov.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Tip pre webový súbor cookie Muse Spark", + "museSparkWebCookiePlaceholder": "Zástupný text pre webový súbor cookie Muse Spark", + "oauth": "OAuth", + "openCliTools": "Otvoriť nástroje CLI", + "openSettings": "Otvoriť nastavenia", + "openaiResponsesStoreDescription": "Povoliť kompatibilným požiadavkám Responses API zachovať uložený stav odpovede.", + "openaiResponsesStoreLabel": "Úložisko OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Informácie o zdieľanom kľúči Perplexity Search", + "perplexityWebCookieHint": "Tip pre webový súbor cookie Perplexity", + "perplexityWebCookiePlaceholder": "Zástupný text pre webový súbor cookie Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Prepísanie limitov frekvencie", "rateLimitOverridesMaxConcurrentHint": "Prepísanie maximálneho počtu súbežných požiadaviek pre toto pripojenie. Prepíše limit na úrovni účtu.", "rateLimitOverridesMaxConcurrentLabel": "Max. súbežné (obmedzenie rýchlosti)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Maximálny čas (ms), počas ktorého môže požiadavka čakať na uvoľnenie kapacity limitu požiadaviek, než zlyhá. Prepíše globálne nastavenie odolnosti iba pre toto pripojenie.", + "rateLimitOverridesMaxWaitMsLabel": "Maximálne čakanie vo fronte (ms)", "rateLimitOverridesMinTimeHint": "Minimálny čas (ms) medzi požiadavkami. Prepíše predvolené oneskorenie obmedzovača rýchlosti.", "rateLimitOverridesMinTimeLabel": "Min. interval (ms)", "rateLimitOverridesRpdHint": "Maximálny počet požiadaviek za deň pre toto pripojenie. Prepíše predvolené nastavenie poskytovateľa.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (tokeny/deň)", "rateLimitOverridesTpmHint": "Maximálny počet tokenov za minútu pre toto pripojenie. Prepíše predvolenú hodnotu poskytovateľa.", "rateLimitOverridesTpmLabel": "TPM (tokeny/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Obnoviť token OAuth", + "regionHint": "Tip pre región", + "regionLabel": "Región", + "removeThisKey": "Odstrániť tento kľúč", + "routingTagsHint": "Tip pre smerovacie značky", + "routingTagsLabel": "Smerovacie značky", + "routingTagsPlaceholder": "Zástupný text pre smerovacie značky", + "search": "Vyhľadávanie", + "searchEngineIdHint": "Tip pre ID vyhľadávača", + "searchEngineIdLabel": "ID vyhľadávača", + "searchEngineIdRequired": "ID vyhľadávača je povinné", + "searchProvider": "Poskytovateľ vyhľadávania", + "searchProviderDesc": "Opis poskytovateľa vyhľadávania", "searchProviders": "Hľadať poskytovateľov...", "searchByModel": "Hľadať podľa modelu…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Poskytovatelia vyhľadávania", + "searxngBaseUrlHint": "Tip pre základnú URL Searxng", + "searxngInfo": "Informácie o Searxng", + "sessionCookieLabel": "Súbor cookie relácie", + "showEmail": "Zobraziť e-mail", + "snowflakeBaseUrlHint": "Pomôcka k základnej URL Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Pomôcka k skupine značiek", + "tagGroupLabel": "Skupina značiek", + "tagGroupPlaceholder": "Zadajte skupinu značiek", + "testModel": "Otestovať model", + "testingModel": "Testovanie modelu", "modelTestQuotaTooltip": "Kvóta vyčerpaná — resetuje sa zajtra alebo potrebuje doplnenie", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Platnosť tokenu vypršala", + "tokenExpiredTitle": "Platnosť tokenu vypršala", + "tokenExpiresSoonTitle": "Platnosť tokenu čoskoro vyprší", + "tokenShort": "Token", + "totalKeysRotating": "{count, plural, one {Rotuje sa 1 kľúč} few {Rotujú sa # kľúče} other {Rotuje sa # kľúčov}}", + "unhideModel": "Zobraziť model", + "upstreamProxyProviders": "Poskytovatelia upstream proxy", "validationModelIdHint": "Model použitý na overenie kľúča API. Ponechajte prázdne, ak chcete použiť prvý dostupný model poskytovateľa.", "validationModelIdLabel": "Overovací model", "validationModelIdPlaceholder": "napr. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Prilepte JSON svojho servisného účtu ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) alebo prístupový token OAuth access_token", + "webCookieProviders": "Poskytovatelia webových cookies", + "weeklyShort": "Týždenne", + "xiaomiMimoBaseUrlHint": "Pomôcka k základnej URL Xiaomi Mimo", "globalCodexServiceMode": "Globálny režim služby Codex", "connect": "Pripojiť", "manualApiKey": "Manuálny API kľúč", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Vyhľadať prihlasovacie údaje poskytovateľov AI (OpenAI, Anthropic, Google, Mistral, xAI) uložené prostredím Zed IDE v kľúčenke operačného systému a importovať ich ako pripojenia. Na tomto počítači musí byť nainštalované Zed IDE.", "zedImportButton": "Importovať zo Zed", "zedImportFailed": "Zed import zlyhal", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Pomôcka k importu zo Zed", + "zedImportNetworkError": "Chyba siete pri importe zo Zed", + "zedImportNone": "Žiadny import zo Zed", "zedImportSuccess": "Importované {credentials} poverenia z Zed pre {providers} poskytovateľov", "zedImporting": "Importovanie…", "zedNoCredentials": "V kľúčenke sa nenašli žiadne prihlasovacie údaje pre Zed", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "položka {number}", "claudeImportParseError": "chyba analýzy", "claudeImportNoValidEntries": "Žiadne platné položky na importovanie", - "webFetch": "Web Fetch", + "webFetch": "Načítanie webu", "webFetchTooltip": "Poskytovatelia, ktorí extrahujú obsah z webových adries URL (HTML → Markdown, scrape, screenshot)", "webFetchProvidersHeading": "Poskytovatelia Web Fetch", "compatibleProvidersDesc": "Koncové body kompatibilné s OpenAI a Anthropic, ktoré hostujete alebo konfigurujete. Nasmerujte akékoľvek OpenAI SDK na vlastnú URL adresu a smerujte požiadavky sem.", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Zľavnená API proxy pre viac ako 40 modelov vrátane GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Získajte svoj API kľúč na adrese https://freeaiapikey.com/dashboard. Základná URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Získajte bezplatný API kredit 300 $ na adrese https://freemodel.dev — nevyžadujú sa žiadne platobné údaje. Koncový bod kompatibilný s OpenAI. K dispozícii sú modely GPT-5.4 a GPT-5.5.", "friendliai": "Bezplatná úroveň pre serverless inferenciu — nevyžaduje sa kreditná karta", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Bezplatná úroveň prostredníctvom Google AI Studio; kvóty pre jednotlivé modely už nie sú zverejňované (pozrite si stránku s kvótami v AI Studio) — bez kreditnej karty.", "gigachat": "Pripojte GigaChat (Sber) pomocou API kľúča.", "gitlab": "Osobný prístupový token GitLab pre verejné API Code Suggestions. Ak nepoužívate gitlab.com, nakonfigurujte vlastnú základnú URL.", "gitlawb-gmi": "Získajte svoj API kľúč z nástenky Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Pripojte GLM Coding (Čína) pomocou API kľúča.", "glmt": "Prednastavený profil GLM s vyšším rozpočtom tokenov, povoleným premýšľaním a dlhším časovým limitom.", "getgoapi": "Pripojte GoAPI pomocou API kľúča.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Bezplatný plán: limity pre jednotlivé modely (200 000 tokenov denne na každý chatovací model; limity RPM/RPD nájdete na console.groq.com/docs/rate-limits) — bez evidovaného spôsobu platby.", "haiper": "Získajte API kľúč na adrese haiper.ai/haiper-api", "heroku": "Pripojte Heroku AI pomocou API kľúča.", "hcnsec": "Získajte API kľúč na adrese api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Vytvorte API kľúč na https://app.requesty.ai, potom ho sem vložte ako Bearer token. Koncový bod kompatibilný s OpenAI na https://router.requesty.ai/v1, so živým katalógom /v1/models.", "runwayml": "Generovanie videa v Runway je založené na úlohách. OmniRoute odosiela úlohy text-to-video alebo image-to-video, dopytuje sa na /v1/tasks/[id] a normalizuje hotové video výstupy späť do odpovede /v1/videos/generations podobnej OpenAI.", "sambanova": "Bezplatný kredit 5 $ pri registrácii (platnosť 30 dní), nevyžaduje sa žiadna kreditná karta", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Vytvorte si kľúč API na https://seekai.cc a potom ho sem prilepte ako token Bearer. Základná URL kompatibilná s OpenAI: https://seekai.cc/v1.", "sap": "Vyhľadávanie modelov používa /v2/lm/scenarios/foundation-models/models na AI_API_URL. Požiadavky na chat používajú deploymentUrl/chat/completions a vyžadujú AI-Resource-Group.", "sarvam": "Sarvam AI je kompatibilný s OpenAI na /v1. OmniRoute skúma /v1/models a smeruje chatový prenos na /v1/chat/completions. Modely sú optimalizované pre indické jazyky.", "scaleway": "1M bezplatných tokenov pre nové účty — v súlade s EÚ/GDPR (Paríž), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Pripojte Claude Code pomocou existujúceho toku OAuth.", "cline": "Pripojte Cline pomocou existujúceho toku OAuth.", "cursor": "Pripojte Cursor IDE pomocou existujúceho toku OAuth.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Pripojte Cursor pomocou používateľského kľúča API (crsr_...) z cursor.com/dashboard/api; relácia IDE nie je potrebná.", "github": "Pripojte GitHub Copilot pomocou existujúceho toku OAuth.", "gitlab-duo": "Aplikácia OAuth s rozsahmi (scopes) ai_features + read_user. Nakonfigurujte GITLAB_DUO_OAUTH_CLIENT_ID a voliteľne GITLAB_DUO_OAUTH_CLIENT_SECRET na tejto inštancii OmniRoute.", "kilocode": "Pripojte Kilo Code pomocou existujúceho toku OAuth.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Skopírujte požadované poverenia z vlastnej domény poskytovateľa. V prípade súborov cookie skopírujte iba hodnotu hlavičky súboru cookie a vynechajte súbor cookie:.", "webSessionGuideStep3Manual": "Manuálna cesta: otvorte nástroje pre vývojárov prehliadača (F12 → Sieť), obnovte stránku, otvorte autentifikovaný požiadavok a skopírujte hodnotu hlavičky Cookie z hlavičiek požiadavky — vynechajte predponu Cookie:.", "webSessionGuideStep4": "Vložte ho sem a skontrolujte pripojenie. Ak prestane fungovať, znova sa prihláste a nahraďte ho novou hodnotou.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importovať súbor .har", + "harImportButtonBusy": "Importuje sa…", + "harImportButtonHint": "Po odoslaní aspoň jednej správy v chate vykonajte export z karty Network v DevTools.", + "harImportStatusValid": "Importované — platné približne {minutes} min.", + "harImportStatusExpiringSoon": "Importované — platné už len približne {minutes} min.", + "harImportStatusExpired": "Importované, ale platnosť tohto tokenu už vypršala (pred {minutes} min.) — exportujte nový súbor HAR.", + "harImportStatusUnknownExpiry": "Importované. Nepodarilo sa zistiť dátum vypršania platnosti.", + "harImportErrorNotJson": "Tento súbor nie je platný JSON — je to naozaj export vo formáte .har?", + "harImportErrorNoEntries": "Tento súbor HAR neobsahuje žiadne zaznamenané sieťové požiadavky.", + "harImportErrorNoChathubUrl": "V tomto súbore HAR sa nenašlo žiadne pripojenie k chatu Copilot. Pred exportom odošlite aspoň jednu správu v chate na m365.cloud.microsoft.", + "harImportErrorUnparsableUrl": "Pripojenie k chatu sa našlo, ale nepodarilo sa načítať jeho URL.", + "harImportErrorMissingFields": "Pripojenie k chatu sa našlo, ale chýbal v ňom token.", + "harImportErrorReadFailed": "Tento súbor sa nepodarilo načítať.", + "harImportErrorUnknown": "Z tohto súboru HAR sa nepodarilo extrahovať prihlasovací údaj.", "webSessionSecurityHint": "Považujte to za heslo: môže pristupovať k vášmu prihlásenému webovému účtu, kým nevyprší jeho platnosť alebo kým nebude odvolané.", "webNoAuthGuideTitle": "Nevyžadujú sa žiadne poverenia", "webNoAuthGuideBody": "{provider} nepotrebuje kľúč API ani súbor cookie. Uložte pripojenie, aby ste mohli používať jeho bezplatný webový koncový bod.", @@ -6405,7 +6408,7 @@ "batchUpdateFailed": "Hromadná aktualizácia zlyhala", "batchUpdateNetworkError": "Chyba siete počas hromadnej aktualizácie", "categoryAudio": "Zvuk", - "categoryCloudAgent": "Cloud Agent", + "categoryCloudAgent": "Cloudový agent", "categoryIde": "IDE", "categoryLocal": "Miestny", "categorySearch": "Hľadať", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Príkazový kód auth vypršal", "commandCodeConnected": "Príkaz Kód pripojený", "commandCodeConnectionAdded": "Príkazový kód pripojenia pridaný", + "clearConnectionCooldown": "Zrušiť čakaciu lehotu", + "clearConnectionCooldownInProgress": "Ruší sa…", + "clearConnectionCooldownTitle": "Zrušiť čakaciu lehotu teraz — použite, keď už bola kvóta obnovená u nadradeného poskytovateľa", "commandCodeLinkExpired": "Odkaz na príkazový kód vypršal", "commandCodeOpeningStudio": "Otvorenie Command Code Studio…", "commandCodePopupBlocked": "Vyskakovacie okno je zablokované. Prosím, povoľte vyskakovacie okná a skúste pripojenie príkazu znova.", "commandCodeStartFailed": "Nepodarilo sa spustiť príkaz Code auth", "connectionDeleted": "Pripojenie bolo odstránené", "connectionFallback": "pripojenie", + "connectionCooldownCleared": "Čakacia lehota bola zrušená — pripojenie sa opäť zapojilo do smerovania", "coolingConnectionsDescription": "Tieto pripojenia sa po poslednej žiadosti ochladzujú. OmniRoute ich preskočí, kým nevyprší časovač — ručné vypnutie nie je potrebné.", "coolingConnectionsTitle": "Momentálne chladenie ({count})", + "failedClearConnectionCooldown": "Čakaciu lehotu sa nepodarilo zrušiť", "failedDeleteAlias": "Nepodarilo sa odstrániť alias", "failedDeleteConnection": "Nepodarilo sa odstrániť pripojenie", "failedDistributeProxies": "Nepodarilo sa distribuovať proxy.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Nastavenia koncového bodu uloženého modelu", "searchByModelAria": "Hľadať podľa modelu", "selectSupportedEndpoint": "Vyberte aspoň jeden podporovaný koncový bod", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Testovacie prostredie / CLI" }, "settings": { "title": "Nastavenia", @@ -6483,7 +6486,7 @@ "security": "Bezpečnosť", "appearance": "Vzhľad", "routing": "Smerovanie", - "cache": "Cache", + "cache": "Vyrovnávacia pamäť", "resilience": "Odolnosť", "description": "Popis", "enable": "Povoliť", @@ -6527,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "odstrániť odseky obsahujúce: {items}", "routingSummarizeDropParagraphStartsWith": "odstrániť odseky začínajúce na: {items}", "routingSummarizeReplaceText": "nahradiť \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "regulárny výraz /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "odstrániť bloky obsahujúce: {items}", "routingSummarizePrependSystemBlock": "pridať blok na začiatok: \"{text}\"", "routingSummarizeAppendSystemBlock": "pridať blok na koniec: \"{text}\"", @@ -6554,22 +6557,22 @@ "systemPrompt": "Systémová výzva", "thinkingBudget": "Myslenie na rozpočet", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP proxy", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Sekcie proxy", + "requestBodyLimitTitle": "Limit tela požiadavky", + "requestBodyLimitDescription": "Maximálna veľkosť obsahu API prijatá pred spracovaním tela požiadavky. Vyhradené trasy nahrávania si zachovávajú minimálne svoj vstavaný limit 100 MB.", + "requestBodyLimitInputLabel": "Limit tela požiadavky v MB", + "requestBodyLimitEmptyError": "Zadajte limit v MB", + "requestBodyLimitWholeNumberError": "Použite celé číslo", + "requestBodyLimitMinimumError": "Minimum je {min} MB", + "requestBodyLimitMaximumError": "Maximum je {max} MB", + "requestBodyLimitLoadFailed": "Nepodarilo sa načítať nastavenia limitu požiadavky", + "requestBodyLimitSaveSuccess": "Limit tela požiadavky bol uložený", + "requestBodyLimitSaveFailed": "Nepodarilo sa uložiť limit tela požiadavky", + "requestBodyLimitSaving": "Ukladá sa...", + "requestBodyLimitSave": "Uložiť", + "requestBodyLimitCurrent": "Aktuálne: {value}", "cacheConfigLoadFailed": "Nepodarilo sa načítať nastavenia cache.", "cacheConfigSaveSuccess": "Nastavenia cache boli uložené", "cacheConfigSaveFailed": "Nepodarilo sa uložiť nastavenia cache.", @@ -6582,7 +6585,7 @@ "modelCatalogCacheTtlSaving": "Ukladanie...", "modelCatalogCacheTtlSave": "Uložiť", "modelCatalogCacheTtlCurrent": "Aktuálne: {value} ms", - "mitmProxy": "MITM Proxy", + "mitmProxy": "MITM proxy", "pricing": "Stanovenie cien", "storage": "Skladovanie", "policies": "zásady", @@ -6593,59 +6596,59 @@ "enablePassword": "Povoliť heslo", "darkMode": "Tmavý režim", "lightMode": "Svetelný režim", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Pamäť", + "memoryDesc": "Trvalá konverzačná pamäť naprieč reláciami", + "memoryEnabled": "Povoliť pamäť", + "memoryEnabledDesc": "Keď je táto možnosť povolená, OmniRoute vloží relevantný kontext z minulosti.", "memoryTokenCostWarning": "Upozornenie: s povolenou pamäťou OmniRoute vkladá až {tokens} tokenov načítaného kontextu do každej požiadavky na čet — to zvyšuje využitie tokenov a náklady. Ak chcete preskočiť vkladanie pre konkrétnu požiadavku, odošlite hlavičku \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Maximum tokenov", + "retentionDays": "Uchovávanie", + "recent": "Nedávne", + "recentDesc": "Chronologické okno", + "semantic": "Sémantické", + "semanticDesc": "Vektorové vyhľadávanie", + "hybrid": "Hybridné", + "hybridDesc": "Nedávne + sémantické", + "skillsTitle": "Zručnosti", + "skillsDesc": "Nástroje pre modely", + "skillsEnabled": "Povoliť zručnosti", + "skillsEnabledDesc": "Umožňuje agentom spúšťať funkcie.", + "skillsComingSoon": "Trhovisko so zručnosťami bude dostupné čoskoro.", + "memorySkillsTitle": "Pamäť a zručnosti", + "memorySkillsDesc": "Trvalý kontext a funkcie", + "modelsDevTitle": "Databáza modelov", + "modelsDevDesc": "Automaticky synchronizovať ceny, funkcie a špecifikácie z models.dev", + "modelsDevEnabled": "Povoliť synchronizáciu s models.dev", + "modelsDevEnabledDesc": "Načítať ceny, funkcie a špecifikácie modelov z open-source databázy models.dev", + "modelsDevInterval": "Interval synchronizácie", + "syncNow": "Synchronizovať teraz", + "syncing": "Synchronizuje sa...", + "lastSync": "Posledná synchronizácia", + "never": "Nikdy", "justNow": "práve teraz", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Štatistiky synchronizácie", + "modelsDevStatsDesc": "Aktuálne pokrytie údajov models.dev", "providers": "Poskytovatelia", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modely s cenami", + "capabilities": "Funkcie", + "lastSyncCount": "Počet pri poslednej synchronizácii", + "lastSyncFull": "Posledná úplná synchronizácia", + "modelsDevInfo": "Ako to funguje", + "modelsDevInfoDesc": "models.dev je open-source databáza špecifikácií modelov AI, ktorú spravuje tím SST/OpenCode. Poskytuje ceny, funkcie, limity kontextu a modality pre viac ako 4 000 modelov od viac ako 100 poskytovateľov.", + "modelsDevInfoResolution": "Poradie určovania cien (od najvyššej priority):", + "modelsDevInfoOrder": "Používateľské prepísanie → models.dev → LiteLLM → Predvolená hodnota napevno", "systemTheme": "Téma systému", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Povoliť režim ladenia", "logToolSourcesToggle": "Zaznamenávať zdroje nástrojov", "logToolSourcesDescription": "Vygenerovať diagnostický riadok protokolu pre každú požiadavku so súhrnom počtu nástrojov a rozdelením zdrojov MCP/hosted/client.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Pripnúť informácie na domovskú stránku", "homePinnedSectionsDesc": "Vyberte, ktoré sekcie chcete pripnúť na začiatok domovskej stránky.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Limity kvót poskytovateľov", + "homeProviderQuotaLimitsDesc": "Pripnúť panel stavu kvót poskytovateľov (s tlačidlom Obnoviť všetko) do hornej časti domovskej stránky.", + "homeQuickStart": "Rýchly štart", + "homeQuickStartDesc": "Zobraziť panel Rýchly štart na domovskej stránke.", + "homeProviderTopology": "Topológia poskytovateľov", + "homeProviderTopologyDesc": "Zobraziť topológiu poskytovateľov na domovskej stránke.", "accountEmailVisibility": "Viditeľnosť e-mailu účtu", "accountEmailVisibilityDesc": "Zobrazovať celé e-maily účtov na obrazovkách poskytovateľov, kombinácií, protokolov, kvót a playgroundu. Vypnite túto možnosť, ak ich chcete predvolene maskovať.", "comboConfigMode": "Režim konfigurácie komba", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Interval obnovenia", "providerQuotaAutoRefreshIntervalDesc": "Ako často sa má zobrazenie kvóty obnovovať, v sekundách.", "seconds": "sekundy", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Zobraziť položky bočného panela", "enableCache": "Povoliť vyrovnávaciu pamäť", - "cacheTTL": "Cache TTL", + "cacheTTL": "TTL vyrovnávacej pamäte", "maxCacheSize": "Maximálna veľkosť vyrovnávacej pamäte", "clearCache": "Vymazať vyrovnávaciu pamäť", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Vyrovnávacia pamäť bola úspešne vymazaná", + "clearCacheFailed": "Vymazanie vyrovnávacej pamäte zlyhalo", "cacheHits": "Zásahy do vyrovnávacej pamäte", - "cacheMisses": "Cache Misses", + "cacheMisses": "Nenájdené položky vo vyrovnávacej pamäti", "hitRate": "Miera prístupu", "cacheEntries": "Záznamy vo vyrovnávacej pamäti", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "cacheSettings": "Nastavenia vyrovnávacej pamäte", + "semanticCache": "Sémantická vyrovnávacia pamäť", + "maxEntries": "Maximálny počet položiek", + "ttlMinutes": "TTL (minúty)", + "promptCache": "Vyrovnávacia pamäť promptov", + "strategy": "Stratégia", + "preserveClientCache": "Zachovať vyrovnávaciu pamäť klienta", + "enabled": "Povolené", "loading": "Loading...", "saving": "Ukladá sa...", - "save": "Save", + "save": "Uložiť", "circuitBreaker": "Istič", "retryPolicy": "Zásady opätovného pokusu", "maxRetries": "Maximálny počet opakovaní", @@ -6690,21 +6693,21 @@ "timeoutMs": "Časový limit (ms)", "enableSystemPrompt": "Povoliť systémovú výzvu", "systemPromptText": "Text systémovej výzvy", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Automaticky deaktivovať zablokované účty", + "autoDisableDescription": "Natrvalo označí pripojenia poskytovateľov ako deaktivované, ak vrátia konkrétne konečné signály o zablokovaní (napr. HTTP 403 „verify your account“). Tým sa odstránia z kombinovanej rotácie.", + "autoDisableThreshold": "Prahová hodnota zablokovania", + "autoDisableThresholdDesc": "Počet po sebe idúcich signálov o zablokovaní potrebných na trvalú deaktiváciu.", + "autoDisableBannedScope": "Použiť automatickú deaktiváciu na", + "autoDisableBannedScopeDesc": "Prihlasovacie miesta (platené predplatné a bezplatné účty) môže nadradená služba uzamknúť, ak OmniRoute po zablokovaní naďalej opakuje pokusy. Platené predplatené API kľúče tomuto riziku nepodliehajú — ponechajte ich v zásobníku, aby stratégia fill-first mohla použiť ďalší kľúč.", + "autoDisableBannedScopeAll": "Všetky pripojenia", + "autoDisableBannedScopeAllDesc": "Deaktivuje každé pripojenie, ktoré vráti trvalý signál o zablokovaní, vrátane predplatených API kľúčov.", + "autoDisableBannedScopeSubscription": "Iba prihlasovacie účty/účty predplatného", + "autoDisableBannedScopeSubscriptionDesc": "Deaktivuje miesta OAuth, súborov cookie, relácií a webového prihlásenia (platené alebo bezplatné). Predplatené API kľúče zostanú aktívne, aby smerovanie mohlo prepnúť na záložné pripojenie.", "customBannedSignals": "Zakázané kľúčové slová", "customBannedSignalsDesc": "Ďalšie kľúčové slová, ktoré spúšťajú detekciu trvalého zablokovania účtu. Vstavané kľúčové slová platia vždy.", "customBannedSignalsPlaceholder": "napr. api key revoked", "noCustomBannedSignals": "Žiadne vlastné kľúčové slová. Aktívne sú iba vstavané kľúčové slová.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Štruktúra odolnosti", "resilienceStructureDesc": "Táto stránka iba konfiguruje správanie. Stav živého ističa sa zobrazuje na stránke Zdravie. Opakovanie špecifické pre kombináciu a ovládanie slotu s cyklickou manipuláciou zostávajú na nastaveniach komba.", "enableThinking": "Povoliť myslenie", "maxThinkingTokens": "Maximálne žetóny myslenia", @@ -6732,7 +6735,7 @@ "enableRequestLogs": "Povoliť denníky žiadostí", "logRetention": "Uchovanie denníka", "ipWhitelist": "Zoznam povolených IP adries", - "ipBlacklist": "IP Blacklist", + "ipBlacklist": "Čierna listina IP adries", "addIP": "Pridajte IP", "savedSuccessfully": "Nastavenia boli úspešne uložené", "ai": "AI", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Zobrazte ovládacie prvky zúženia koncovej stupnice na stránke Koncový bod.", "showNgrokTunnel": "ngrok tunel", "showNgrokTunnelDesc": "Zobraziť ovládacie prvky tunela ngrok na stránke Koncový bod.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Skryť položky bočného panela", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Všetko", + "presetAllDesc": "Zobraziť všetko", + "presetEssentials": "Základné", + "presetEssentialsDesc": "Cesta pre začiatočníkov – rozšírené nástroje zostanú vyhľadateľné", + "presetMinimal": "Minimálne", + "presetMinimalDesc": "Iba hlavné stránky", + "presetDeveloper": "Vývojár", + "presetDeveloperDesc": "Vývojárske a proxy nástroje", + "presetAdmin": "Správca", + "presetAdminDesc": "Monitorovanie a audit", + "settingsSidebarTitle": "Prispôsobenie bočného panela", + "settingsSidebarDesc": "Vyberte položky, ktoré sa majú zobrazovať na bočnom paneli. Režim Základné zachová možnosť vyhľadávať rozšírené nástroje.", "hideHealthLogs": "Skryť denníky kontroly stavu", "hideHealthLogsDesc": "Keď je ZAPNUTÉ, potláčajte správy [HealthCheck] v konzole servera", "themeAccent": "Farba témy", @@ -6780,19 +6783,19 @@ "themeOrange": "Oranžová", "themeCyan": "Azúrová", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Prispôsobte názov a logo aplikácie", + "appName": "Názov aplikácie", + "appNameDesc": "Zobrazovaný názov v bočnom paneli a na karte prehliadača", + "customLogo": "URL vlastného loga", + "customLogoDesc": "URL obrázka vášho vlastného loga", + "uploadLogo": "Nahrať logo", + "resetLogo": "Obnoviť predvolené", + "logoPreview": "Náhľad", + "customFavicon": "Favicon prehliadača", + "customFaviconDesc": "URL vašej vlastnej favicon (zobrazuje sa na karte prehliadača)", + "uploadFavicon": "Nahrať favicon", + "resetFavicon": "Obnoviť favicon", + "faviconPreview": "Náhľad favicon", "logoFileTooLarge": "Súbor loga musí mať menej ako 500 KB", "faviconFileTooLarge": "Súbor favicon must be less than 50 KB", "invalidLogoFileType": "Neplatný typ súboru. Nahrajte PNG, JPG, SVG, GIF alebo WebP.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Interval Obnovenia", "ruleModeDescription": "Popis režimu pravidla" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "Hromadná kontrola dostupnosti", + "bulkHealthcheckDesc": "Otestujte všetky nakonfigurované proxy voči cieľovej URL a zistite, ktoré fungujú.", + "healthcheckTesting": "Testuje sa...", + "healthcheckAll": "Skontrolovať dostupnosť všetkých", + "healthcheckFailed": "Kontrolu dostupnosti sa nepodarilo spustiť", + "healthcheckTestingAll": "Paralelne sa testujú všetky proxy...", + "healthcheckTotal": "Celkom", + "healthcheckWorking": "Funkčné", + "healthcheckFailedLabel": "Neúspešné", + "healthcheckStatus": "Stav", + "healthcheckProxyUrl": "URL proxy", + "healthcheckLatency": "Latencia", "proxyDocumentationScopeTitle": "Vyhodnocovanie rozsahu proxy", "proxyDocumentationScopeDescBefore": "OmniRoute vyhodnocuje odchádzajúce proxy v poradí priorít:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "kombinácia → účet → poskytovateľ → globálne", "proxyDocumentationScopeDescAfter": ". Najšpecifickejší rozsah vyhráva.", "proxyDocumentationAddTitle": "Pridanie vlastného proxy", "proxyDocumentationAddDescBefore": "Prejdite na", @@ -6980,11 +6983,11 @@ "thinkingBudgetTitle": "Myslenie na rozpočet", "thinkingBudgetDesc": "Ovládajte používanie tokenu uvažovania AI vo všetkých požiadavkách", "thinkingBudgetIndependenceHint": "Funkcie kompresie, smerovania a limitu tokenov fungujú vo všetkých režimoch. Auto neznamená „auto-zobrazenie myslenia“ — odstraňuje polia klientskeho uvažovania.", - "passthrough": "Passthrough", + "passthrough": "Priamy prenos", "passthroughDesc": "Žiadne zmeny – klient kontroluje rozpočet", "thinkingModePassthrough": "Prechod", "thinkingModePassthroughDesc": "Nezmeňte dôvod klienta (úsilie, zhrnutie, myšlienkové bloky). Povinné pre Codex/Desktop viditeľné myslenie. Predvolené.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automaticky (odstrániť)", "thinkingModeAutoDesc": "Odstráňte všetky polia myslenia/úvah klienta (úvaha, úsilie o úvahu, myslenie Claude, konfigurácia myslenia Gemini) a nechajte poskytovateľa vymyslieť predvolené hodnoty. Môžete skryť panely myslenia a prerušiť požiadavky na zhrnutie klienta.", "thinkingModeCustom": "Vlastné", "thinkingModeCustomDesc": "Prepisujte každú požiadavku s pevným rozpočtom na tokeny, ktorý nastavíte nižšie.", @@ -7018,7 +7021,7 @@ "errorOccurred": "Vyskytla sa chyba", "updatePassword": "Aktualizovať heslo", "setPassword": "Nastaviť heslo", - "apiEndpointProtection": "API Endpoint Protection", + "apiEndpointProtection": "Ochrana koncového bodu API", "requireAuthModels": "Vyžadovať kľúč API pre /models", "requireAuthModelsDesc": "Keď je zapnuté, koncový bod /v1/models vráti 404 pre neoverené požiadavky. Zabraňuje objaveniu modelu neoprávnenými používateľmi.", "authModelHeading": "Aktívny model autorizácie", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} poskytovatelia blokovaní z /models", "blockProviderTitle": "Blokovať {provider}", "unblockProviderTitle": "Odblokovať {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Zhoda odtlačku CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "Počet poskytovateľov s aktívnym odtlačkom CLI: {count}", + "enableFingerprintTitle": "Povoliť odtlačok pre {provider}", + "disableFingerprintTitle": "Zakázať odtlačok pre {provider}", "systemTransforms": "Systémový blok Transform Pipeline", "systemTransformsDesc": "Reprodukcia transformácií objednaná podľa poskytovateľa aplikovaná na telo požiadavky pred odoslaním. Podporuje akékoľvek ID poskytovateľa.", "systemTransformsAddProvider": "Pridať poskytovateľa", @@ -7065,21 +7068,21 @@ "leastUsedDesc": "Vyberte najmenej nedávno používaný účet", "costOpt": "Opt", "costOptDesc": "Uprednostnite najlacnejší dostupný účet", - "resetAware": "Reset-Aware RR", + "resetAware": "RR zohľadňujúci reset", "resetAwareDesc": "Uprednostňujte účty so zdravou zostávajúcou kvótou a bližšími resetmi", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Vážené podľa kvóty", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "Prísne náhodné", + "strictRandomDesc": "Zamiešaný balíček — každý účet sa použije raz pred opätovným zamiešaním", + "stickyLimit": "Limit viazanosti", "stickyLimitDesc": "Hovory na účet pred prepnutím", "routingStrategyTitle": "Stratégia smerovania", "routingStrategySubtitle": "Zhoda s 9router: round-robin účtov, sticky limity a rotácia kombinácií", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Cyklické prideľovanie", "accountRoundRobinDesc": "Cyklicky prechádzať účty na rozloženie záťaže", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Kombinovaný Round Robin", "comboRoundRobinDesc": "Cyklicky prechádzať ciele kombinácií namiesto začínania vždy od prvého", - "comboStickyLimit": "Combo Sticky Limit", + "comboStickyLimit": "Kombinovaný limit viazanosti", "comboStickyLimitDesc": "Počet volaní na cieľ kombinácie pred prepnutím", "routingStrategyAccountSummary": "Distribúcia požiadaviek medzi účty s {limit} volaniami na účet.", "routingStrategyFillFirstSummary": "Používanie účtov v poradí podľa priority (Fill First).", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Prepísať globálnu stratégiu účtov pre tohto poskytovateľa (parita s 9router).", "providerRoutingStrategy": "Stratégia účtov", "providerRoutingInheritGlobal": "Zdediť globálne predvolené nastavenie", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Prahová hodnota predbežnej kontroly kvóty", + "quotaPreflightSubtitle": "Pred odoslaním požiadavky nadradenej službe preskočiť účty s vyčerpanou kvótou", + "quotaPreflightEnable": "Povoliť predbežnú kontrolu kvóty", + "quotaPreflightEnableDesc": "Pred každou požiadavkou skontrolovať zostávajúcu kvótu účtu (5-hodinové, týždenné a mesačné intervaly). Účty na úrovni prahovej hodnoty alebo pod ňou sa preskočia bez volania nadradenej služby. Prahové hodnoty jednotlivých intervalov nastavené na stránke Kvóty poskytovateľov majú vždy prednosť pred touto predvolenou hodnotou.", + "quotaPreflightCutoff": "Globálna prahová hodnota (min. zostávajúce %)", + "quotaPreflightCutoffDesc": "Prestať používať účet, keď jeho zostávajúca kvóta klesne na toto percento alebo nižšie, a to pre každý interval bez vlastnej prahovej hodnoty. Zodpovedá ukazovateľom zostávajúcich percent na stránke Kvóty poskytovateľov.", + "quotaPreflightWindowsHint": "Na intervaly s vlastnou prahovou hodnotou pre daný interval alebo poskytovateľa (nastavenou v dialógovom okne Prahová hodnota na stránke Kvóty poskytovateľov) nemá táto predvolená hodnota vplyv.", + "quotaPreflightLoadFailed": "Nastavenia predbežnej kontroly kvóty sa nepodarilo načítať.", "modelAliases": "Aliasy modelov", "modelAliasesTitle": "Aliasy modelov", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Premenujte názvy modelov pomocou presných zhôd alebo vzorov so zástupnými znakmi.", "addCustomAlias": "Pridať vlastný alias", "deprecatedModelId": "Zastaraný ID modelu", "newModelId": "Nový ID modelu", @@ -7137,9 +7140,9 @@ "ipAccessControlDesc": "Blokovať alebo povoliť konkrétne adresy IP", "ipModeDisabled": "Zakázané", "ipModeBlacklist": "Čierna listina", - "ipModeWhitelist": "Whitelist", + "ipModeWhitelist": "Zoznam povolených", "ipModeWhitelistPriority": "Priorita WL", - "addIpAddress": "Add IP Address", + "addIpAddress": "Pridať IP adresu", "ipAddressPlaceholder": "192.168.1.0/24 alebo 10.0.*.*", "block": "+ Blokovať", "allow": "+ Povoliť", @@ -7147,7 +7150,7 @@ "allowed": "Povolené ({count})", "temporaryBans": "Dočasné zákazy ({count})", "minLeft": "Zostáva {min}m", - "auditLog": "Audit Log", + "auditLog": "Denník auditu", "searchAuditLogs": "Hľadať v denníkoch auditu...", "failedLoadAuditLog": "Nepodarilo sa načítať denník auditu", "noAuditEvents": "Nenašli sa žiadne udalosti auditu", @@ -7163,7 +7166,7 @@ "providersCommaSeparated": "Poskytovatelia (oddelení čiarkami, v poradí podľa priority)", "providersCommaSeparatedPlaceholder": "antropický, openai, gemini", "createChain": "Vytvorte reťazec", - "noFallbackChains": "No Fallback Chains", + "noFallbackChains": "Žiadne reťazce záložných riešení", "noFallbackChainsDesc": "Vytvorte reťazec na definovanie záložného poradia poskytovateľa pre model.", "loadingFallbackChains": "Načítavajú sa záložné reťazce...", "deleteChainConfirm": "Chcete odstrániť záložný reťazec pre „{model}“?", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Kombinovaná stratégia", "priority": "Priorita", "weighted": "Vážené", - "contextRelay": "Context Relay", + "contextRelay": "Odovzdanie kontextu", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Maximálny počet opakovaní", "retryDelayLabel": "Oneskorenie opätovného pokusu (ms)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Súbežnosť / Model", "queueTimeout": "Časový limit fronty (ms)", "queueDepth": "Hĺbka frontu", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Prahová hodnota odovzdania", + "contextRelayMaxMessages": "Maximálny počet správ pre súhrn", + "contextRelaySummaryModel": "Model súhrnu", + "contextRelayProviderNote": "Odovzdanie kontextu momentálne generuje odovzdania pre účty Codex a používa tieto hodnoty ako globálne predvolené nastavenia pre nové alebo nenakonfigurované kombinácie.", "providerProfiles": "Profily poskytovateľov", "providerProfilesDesc": "Samostatné nastavenia odolnosti pre poskytovateľov OAuth (na základe relácie) a kľúča API (merané). Poskytovatelia OAuth majú prísnejšie limity kvôli nižším limitom sadzieb.", "oauthProviders": "Poskytovatelia OAuth", @@ -7231,7 +7234,7 @@ "rateLimitingDesc": "Poskytovatelia kľúčov API sú automaticky obmedzovaní s bezpečnými predvolenými nastaveniami. Limity sa učia z hlavičiek odpovedí a časom sa prispôsobujú.", "defaultSafetyNet": "Predvolená bezpečnostná sieť", "rpm": "RPM", - "minGap": "Min Gap", + "minGap": "Minimálny odstup", "maxConcurrent": "Maximálne súbežné", "activeLimiters": "Aktívne obmedzovače", "noActiveLimiters": "Zatiaľ žiadne aktívne obmedzovače rýchlosti.", @@ -7299,7 +7302,7 @@ "daysAgo": "Pred {count}d", "backupReasonManual": "manuál", "backupReasonPreRestore": "predbežné obnovenie", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# pripojenie} few {# pripojenia} other {# pripojení}}", "noChangesSinceBackup": "Žiadne zmeny od poslednej zálohy", "backupFailed": "Zálohovanie zlyhalo", "restoreFailed": "Obnovenie zlyhalo", @@ -7329,7 +7332,7 @@ "configured": "nakonfigurované", "none": "Žiadne", "modelOverrideValuePlaceholder": "Číselná hodnota", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Anglické hodnoty oddelené čiarkami, napr. low, medium, high", "addKeyValue": "Pridať kľúč – hodnotu", "noModelOverrides": "Pre tento model nie sú nakonfigurované žiadne prepísania.", "modelOverrideLoadFailed": "Nepodarilo sa načítať prepísania modelov", @@ -7378,25 +7381,25 @@ "editPricing": "Upraviť ceny", "viewFullDetails": "Zobraziť úplné podrobnosti", "themeCoral": "Korál", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Adaptívne smerovanie podľa objemu", + "adaptiveVolumeRoutingDesc": "Dynamicky škáluje pripojenia podľa objemu dát a vyťaženia priepustnosti.", + "lkgpToggleTitle": "Posledný známy funkčný poskytovateľ (LKGP)", + "lkgpToggleDesc": "Keď je táto možnosť povolená, smerovač si zapamätá, ktorý poskytovateľ naposledy úspešne odpovedal, a pri nasledujúcich požiadavkách ho vyskúša ako prvého.", "echoRequestedModelTitle": "Vrátiť požadovaný názov modelu v odpovediach", "echoRequestedModelDesc": "Keď je táto možnosť povolená, pole `model` v odpovedi vráti alias alebo názov kombinácie, ktorý klient požadoval, namiesto názvu upstream modelu. Rieši to problém so striktnými klientmi (napr. Claude Desktop), ktorí odmietajú odpoveď, ktorej model sa nezhoduje s požiadavkou.", "webSearchRouteTitle": "Smerovanie webového vyhľadávania", "webSearchRouteDesc": "Keď požiadavka obsahuje natívny nástroj web_search, presmeruje celú požiadavku na tento model namiesto predvoleného — užitočné pre poskytovateľov, ktorí neimplementujú serverový nástroj web_search od spoločnosti Anthropic. Ak chcete funkciu zakázať, nechajte pole prázdne.", "webSearchRoutePlaceholder": "napr. openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "Tento vzor sa zhoduje iba s platenými modelmi — povoľte platené modely alebo upravte vzor.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Vymazať vyrovnávaciu pamäť LKGP", + "lkgpCacheCleared": "Vyrovnávacia pamäť LKGP bola úspešne vymazaná", + "lkgpCacheClearFailed": "Vyrovnávaciu pamäť LKGP sa nepodarilo vymazať", + "days": "Dni", + "lkgp": "Režim LKGP", + "lkgpDesc": "Posledný známy funkčný poskytovateľ (predvídateľná odolnosť)", + "maintenance": "Údržba", + "purgeExpiredLogs": "Odstrániť denníky po uplynutí platnosti", + "purgeLogsFailed": "Denníky sa nepodarilo odstrániť", "logsDeleted": "{count, plural, =0 {Neboli odstránené žiadne expirované záznamy} one {Odstránený # expirovaný záznam} few {Odstránené # expirované záznamy} other {Odstránených # expirovaných záznamov}}", "resetUsageData": "Resetovať údaje o používaní", "resetUsageDataDesc": "Vyberte, ako ďaleko do minulosti chcete vymazať údaje o používaní, záznamy požiadaviek a analytické údaje. Konfigurácia poskytovateľov, pripojenia, API kľúče, kombinácie a nastavenia zostanú zachované. Túto akciu nie je možné vrátiť späť.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Nepodarilo sa resetovať údaje o používaní", "reset": "Resetovať", "resetting": "Resetuje sa...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Optimalizované pre kontext", + "contextOptDesc": "Smeruje podľa požiadaviek na kontextové okno a dĺžky konverzácie", + "cacheOpt": "Optimalizované pre vyrovnávaciu pamäť", + "cacheOptDesc": "Zachováva rovnakú opakovane použiteľnú predponu výzvy v rovnakom účte poskytovateľa", + "priorityDesc": "Sekvenčné záložné riešenie – najprv vyskúša poskytovateľa 1, potom poskytovateľa 2 a tak ďalej", + "weightedDesc": "Rozdeľuje prevádzku medzi poskytovateľov podľa percentuálnych váh", + "modelRoutingTitle": "Pravidlá smerovania modelov", + "modelRoutingDesc": "Automaticky smerujte modely do konkrétnych kombinácií pomocou glob vzorov", + "addRule": "Pridať pravidlo", + "routeToCombo": "Smerovať do kombinácie", + "selectCombo": "Vyberte kombináciu...", + "priorityHint": "Vyššia hodnota = kontroluje sa skôr. Pre konkrétne vzory použite 10 alebo viac.", + "patternHint": "Použite * pre ľubovoľné znaky a ? pre jeden znak. Nerozlišujú sa veľké a malé písmená.", + "noRoutingRules": "Nie sú nakonfigurované žiadne pravidlá smerovania. Požiadavky predvolene používajú globálnu kombináciu.", + "routingRuleHint": "Pridajte pravidlo, napríklad claude-opus* -> frontier-combo, na automatické smerovanie požiadaviek.", + "deleteRoutingRule": "Odstrániť toto pravidlo smerovania modelov?", + "exactMatchMode": "Presná zhoda", + "wildcardPatternMode": "Vzor so zástupnými znakmi", + "exactMatchModeDesc": "Pre zastarané alebo premenované ID modelov používajte presné aliasy.", + "wildcardPatternModeDesc": "Keď sa má skupina modelov mapovať na jeden cieľ, použite aliasy so zástupnými znakmi * a ?.", + "noExactAliasesConfigured": "Nie sú nakonfigurované žiadne aliasy s presnou zhodou.", + "wildcardRulesTitle": "Pravidlá so zástupnými znakmi", + "noWildcardAliasesConfigured": "Nie sú nakonfigurované žiadne aliasy so zástupnými znakmi.", + "overview": "Prehľad", + "unknownError": "Neznáma chyba", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Zoznam povolených", + "syncDisabled": "Synchronizácia vypnutá", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Synchronizácia zapnutá", + "blacklist": "Zoznam blokovaných", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Synchronizované modely", + "budget": "Rozpočet", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Nepodarilo sa resetovať ceny: {reason}", - "tab": "Tab", + "tab": "Karta", "pricingSavedProvider": "Uložené ceny pre poskytovateľa {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Cenu sa nepodarilo uložiť: {reason}", "pricingResetProvider": "Obnovenie cien pre {provider}", - "nextSync": "Next Sync", + "nextSync": "Ďalšia synchronizácia", "pricingSyncFailedWithReason": "Synchronizácia cien zlyhala: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Vymazať synchronizované ceny", + "compressionTitle": "Kompresia promptov", + "compressionDesc": "Znížte využitie tokenov kompresiou promptov pred ich odoslaním poskytovateľom", "compressionGuidanceFullGuideLink": "Kompletný sprievodca kompresiou", "compressionGuidanceShow": "Podrobnosti", "compressionGuidanceHide": "Skryť podrobnosti", @@ -7485,22 +7488,22 @@ "tokenSaverInputCompressionDesc": "Prepíšte vhodnú históriu chatu pri zachovaní kódu, adries URL a zámeru.", "tokenSaverFineTunePrefix": "Dolaďte každý engine na", "tokenSaverFineTuneSuffix": "alebo kombinujte enginy pre každú požiadavku na", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Režim kompresie", + "compressionModeOff": "Vypnuté", + "compressionModeOffDesc": "Bez použitia kompresie", + "compressionModeLite": "Ľahká", + "compressionModeLiteDesc": "Redukcia medzier a prázdnych riadkov", + "compressionModeStandard": "Štandardná (Caveman)", + "compressionModeStandardDesc": "Kompresia založená na pravidlách s viac ako 30 vzormi, ktorá zachováva bloky kódu a URL", + "compressionModeAggressive": "Agresívna", + "compressionModeAggressiveDesc": "Sumarizácia + kompresia výsledkov nástrojov + progresívne starnutie pre maximálnu úsporu", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Konfigurácia agresívneho motora", "compressionAggressiveConfigDesc": "Dolaďte sumarizáciu, kompresiu nástrojov a prahy starnutia", "compressionUltraConfig": "Konfigurácia ultra motora", "compressionUltraConfigDesc": "Jemne dolaďte heuristické orezávanie, záložné riešenie SLM a prahové hodnoty pre jednotlivé správy", - "compressionUltraRate": "Keep Rate", + "compressionUltraRate": "Zachovať pomer", "compressionUltraMinScore": "Hranica minimálneho skóre", "compressionUltraSlmFallback": "Návrat k agresívnemu", "compressionUltraModelPath": "Cesta modelu SLM", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Počet nedávnych správ uchovávaných na každej úrovni starnutia (vyššie = zachovanejšie)", "compressionToolStrategies": "Stratégie výsledkov nástroja", "compressionToolStrategiesDesc": "Prepínajte stratégie kompresie pre rôzne typy výsledkov nástrojov", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Všeobecné nastavenia", + "compressionAutoTrigger": "Prahová hodnota automatického spustenia", + "compressionCacheTTL": "TTL vyrovnávacej pamäte", + "compressionPreserveSystem": "Zachovať systémovú výzvu", "compressionPreserveSystemAlways": "Vždy", "compressionPreserveSystemWhenNoCache": "Keď nie je cache", "compressionPreserveSystemNever": "Nikdy", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Uložené", "compressionExclusionsCount": "{count, plural, one {# vylúčenie} other {# vylúčenia}} nakonfigurované", "compressionExclusionsEmpty": "Žiadne vylúčenia nie sú nakonfigurované — každý model/koncový bod je oprávnený na kompresiu (predvolené správanie).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Konfigurácia enginu Caveman", + "compressionCavemanConfigDesc": "Doladenie kompresného enginu založeného na pravidlách", "compressionCavemanPanelHint": "Jeho zapnutie/vypnutie a úroveň sa nastavujú v paneli:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Komprimovať roly správ", + "compressionRoleUser": "Používateľ", + "compressionRoleAssistant": "Asistent", + "compressionRoleSystem": "Systém", + "compressionMinLength": "Minimálna dĺžka správy", + "compressionSkipRules": "Pravidlá vynechania kompresie", + "compressionSkipRulesDesc": "Kliknutím na pravidlá ich vynecháte počas kompresie", + "compressionPreservePatterns": "Zachovať vzory", + "compressionPreservePatternsDesc": "Regulárne výrazy, ktoré sa nikdy nekomprimujú (jeden na riadok)", + "compressionLogTitle": "Protokol kompresie", + "compressionLogEmpty": "Zatiaľ neboli komprimované žiadne požiadavky. Štatistiky kompresie sa tu zobrazia po spracovaní požiadaviek so zapnutou kompresiou.", "minutes": "minút", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Filtrovanie výstupu nástrojov s ohľadom na príkazy", + "compressionModeCodexResponses": "Výstup nástroja Responses", + "compressionModeCodexResponsesDesc": "Konzervatívna kompresia vhodných výstupov shellu, záplat, vyhľadávania, zostavenia a JSON", + "compressionModeStacked": "Kombinované", + "compressionModeStackedDesc": "Filtrovanie výstupu nástrojov pomocou RTK nasledované kompresiou správ pomocou Caveman", + "qdrantTitle": "Qdrant (vektorová pamäť)", + "qdrantDesc": "Voliteľné. Indexuje sémantické pamäte v externej vektorovej databáze na rýchlejšie vyhľadávanie.", + "qdrantStatusActive": "Aktívne", + "qdrantStatusError": "Chyba", + "qdrantStatusDisabled": "Vypnuté", + "qdrantEnable": "Povoliť Qdrant", + "qdrantEnableDesc": "Keď je táto možnosť povolená, sémantická/hybridná stratégia môže používať Qdrant na načítavanie pamätí.", + "qdrantTesting": "Testuje sa...", + "qdrantTestConnection": "Otestovať pripojenie", + "qdrantSaved": "Konfigurácia bola uložená", + "qdrantSaveError": "Konfiguráciu sa nepodarilo uložiť", + "qdrantHostHint": "Bez portu. Príklad: 127.0.0.1 alebo http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Predvolená hodnota Qdrant: 6333", + "qdrantCollectionHint": "Miesto, kde sa budú ukladať body pamäte.", + "qdrantEmbeddingModel": "Model vnorenia", + "qdrantHelpTitle": "Pomoc s rýchlym nastavením", + "qdrantHelpQuickTitle": "Rýchle nastavenie (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Hostiteľ: IP/URL služby Qdrant, port: 6333, kolekcia: omniroute_memory.", + "qdrantHelpStep2": "2. Ak používate nvidia/llama-nemotron-embed-vl-1b-v2:free, nastavte rozmer kolekcie na 2048.", + "qdrantHelpStep3": "3. Pole modelu: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Uložte nastavenia, otestujte pripojenie a potom vyhľadávanie.", + "qdrantEmbeddingQuickSelect": "Rýchly výber z objavených modelov...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Formát: provider/model. Prihlasovacie údaje poskytovateľa musia byť nakonfigurované.", + "qdrantApiKeyPlaceholderKeep": "(ak chcete zachovať aktuálny kľúč, nechajte prázdne)", + "qdrantApiKeyPlaceholderOptional": "(ak sa nepoužíva, nechajte prázdne)", + "qdrantSaveHint": "Tip: upravte hostiteľa/port/kolekciu/model a kliknite na Uložiť. Kľúč API je voliteľný.", + "qdrantSearchTestTitle": "Test vyhľadávania", + "qdrantSearchTestDesc": "Vygeneruje embedding a vyhľadá v službe Qdrant.", + "qdrantSearchPlaceholder": "Príklad: používateľské preferencie, história atď.", + "qdrantNoResults": "Žiadne výsledky (alebo služba Qdrant nie je nakonfigurovaná).", + "qdrantCleanupTitle": "Uchovávanie a čistenie", + "qdrantCleanupDesc": "Odstráni exspirované a staré body na základe", + "searching": "Vyhľadáva sa...", + "cleaning": "Čistí sa...", + "cleanNow": "Vyčistiť teraz", "optional": "Voliteľné", "current": "Aktuálne", "remove": "Odstrániť", @@ -7600,19 +7603,19 @@ "resilienceScope": "Rozsah:", "resilienceTrigger": "Spúšťač:", "resilienceEffect": "Účinok:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Front požiadaviek a frekvencia", + "resilienceAutoEnableApiKeyProviders": "Automaticky povoliť pre poskytovateľov používajúcich kľúč API", + "resilienceRequestsPerMinute": "Počet požiadaviek za minútu", + "resilienceMinTimeBetweenRequests": "Minimálny čas medzi požiadavkami", + "resilienceConcurrentRequests": "Súbežné požiadavky", + "resilienceConnectionScopeConcurrentRequests": "Súbežné požiadavky na pripojenie/rozsah kvóty", + "resilienceGlobalConcurrentRequests": "Globálny počet súbežných požiadaviek smerom k upstreamu (0 = vypnuté)", "resilienceMaxQueueWaitTime": "Maximálna doba čakania vo fronte", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Základný čas čakania", + "resilienceUseUpstreamRetryHints": "Použiť odporúčania upstreamu pre opakovanie", + "resilienceDefaultPerProvider": "Predvolené (pre každého poskytovateľa)", + "resilienceAlwaysOn": "Vždy zapnuté", + "resilienceAlwaysOff": "Vždy vypnuté", "routingRemoveEntry": "Odstrániť záznam", "routingNeedlesSubstrings": "Ihly (zodpovedajúce podreťazce)", "routingCaseSensitive": "Rozlišovať malé a veľké písmená", @@ -7632,7 +7635,7 @@ "logsSettingsTitle": "Nastavenia denníkov", "detailedLogsLabel": "Podrobné protokoly sú povolené", "detailedLogsDesc": "Povoliť podrobné zaznamenávanie požiadaviek/odpovedí", - "callLogPipelineLabel": "Call Log Pipeline", + "callLogPipelineLabel": "Kanál denníka volaní", "callLogPipelineDesc": "Povoliť kanál spracovania denníka hovorov", "maxDetailSizeLabel": "Maximálna veľkosť podrobností (kB)", "maxDetailSizeDesc": "Maximálna veľkosť pre podrobné záznamy denníka", @@ -7683,10 +7686,10 @@ "routingClientCacheControlAlwaysDesc": "Vždy preposielať hlavičky cache_control poskytnuté klientom upstream poskytovateľom v pôvodnom stave.", "routingClientCacheControlNeverLabel": "Nikdy nezachovávať", "routingClientCacheControlNeverDesc": "Vždy odstrániť klientske hlavičky cache_control a nechať OmniRoute spravovať vyrovnávaciu pamäť tam, kde to podporujú natívne toky poskytovateľa.", - "routingZeroConfigTitle": "Zero-Config Auto-Routing", + "routingZeroConfigTitle": "Automatické smerovanie bez konfigurácie", "routingZeroConfigDesc": "Povoliť automatický výber poskytovateľa pomocou prefixu auto/. Keď je táto možnosť povolená, požiadavky na auto, auto/coding, auto/fast atď. sa budú dynamicky smerovať cez všetkých pripojených poskytovateľov.", "routingDefaultAutoVariant": "Predvolená automatická varianta", - "visionBridge": "Vision Bridge", + "visionBridge": "Most pre obrazový vstup", "visionBridgeDesc": "Spustiť automatickú zálohu vision-to-text pred smerovaním požiadaviek na obrázky do modelov určených len pre text.", "visionBridgeEnabledLabel": "Povolené", "visionBridgeEnabledDesc": "Prepnúť premostenie pred volaním, ktoré nahrádza časti obrázka extrahovaným textom.", @@ -7700,26 +7703,26 @@ "visionBridgePromptHint": "Odoslané do modelu vision pred tým, ako sa extrahovaný popis vloží späť do pôvodnej požiadavky.", "visionBridgeTimeoutMs": "Časový limit (ms)", "visionBridgeMaxImagesPerRequest": "Maximálny počet obrázkov na požiadavku", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Maximálny počet krokov exponenciálneho čakania", + "resilienceProviderBreakerTitle": "Istič pre jednotlivých poskytovateľov", + "resilienceFailureThreshold": "Prah zlyhaní", + "resilienceDegradationThreshold": "Prah zníženia výkonu", "resilienceResetTimeout": "Resetovať časový limit", "resilienceFailureThresholdLabel": "Prah zlyhania", "resilienceResetTimeoutLabel": "Resetovať časový limit", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Čas čakania po prerušení pripojenia", "resilienceUseUpstreamRetryHintsLabel": "Použite upstream tipy na opakovanie", "resilienceUseUpstream429BreakerLabel": "Použiť upstream 429 rád (prerušovač)", "resilienceMaxBackoffStepsLabel": "Maximálny počet krokov na ústup", "resilienceYes": "áno", "resilienceNo": "Nie", - "resilienceDefault": "Default", + "resilienceDefault": "Predvolené", "storageDatabaseBackupRetention": "Uchovanie zálohy databázy", "storageDatabaseBackups": "Zálohy databázy", "storageBackupRetentionDescription": "Automatické zálohy SQLite sú uložené v", "storageBackupRetentionHelp": "Nakonfigurujte, koľko snímok sa má zachovať, a voliteľne vymažte zálohy staršie ako zvolený počet dní.", "storageBackupCount": "{count} záloh", - "storageBackupMaximum": "Max {count}", + "storageBackupMaximum": "Max. {count}", "storageBackupAgeRetention": "Uchovávanie {count} d.", "storageBackupAgeRetentionOff": "Uchovávanie podľa veku vypnuté", "storageBackupKeepLatest": "Ponechať najnovšie zálohy", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "Starší JSON bol úspešne importovaný!", "jsonImportFailed": "Nepodarilo sa importovať JSON", "jsonImportError": "Chyba počas importu JSON", + "jsonImportAuthRequired": "Na import staršej konfigurácie JSON sa vyžaduje overenie. Najprv sa prihláste alebo dokončite nastavenie.", + "databaseSettingsAuthRequiredTitle": "Vyžaduje sa overenie", + "databaseSettingsAuthRequiredBody": "Nastavenia databázy a import JSON sú dostupné iba overenému správcovi. Ak ich chcete zobraziť a upraviť, prihláste sa alebo dokončite nastavenie.", + "databaseSettingsAuthRequiredCta": "Prihlásiť sa", "storagePurgeData": "Vyčistiť údaje", "storagePurgeDataDesc": "Okamžite vymazať všetky záznamy bez uplatnenia kontrol uchovávania údajov. Používajte opatrne.", "storageRetentionCleanup": "Nastavenia uchovávania údajov", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "režim: {mode}", "compressionAdaptiveOff": "Adaptívny rozpočet kontextu: vypnuté (starší automatický spúšťač)", "compressionAdaptiveTarget": "Adaptívny ({mode}, politika: {policy}) — cieľ ≈ {target, number} tokenov (pre okno s {contextLimit, number} tokenmi)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Adaptívny rozpočet kontextu", + "compressionAdaptiveModeOff": "Vypnuté (staršie automatické spúšťanie)", + "compressionAdaptiveModeFloor": "Minimum (vždy zaručiť, že sa obsah zmestí)", + "compressionAdaptiveModeReplace": "Nahradiť automatické spúšťanie", + "compressionAdaptivePolicy": "Pravidlá rozpočtu", + "compressionAdaptivePolicyReserve": "Rezerva pre výstup", + "compressionAdaptivePolicyPercentage": "Percento okna", + "compressionAdaptivePolicyAbsolute": "Absolútny rozpočet tokenov", "compressionOutputStylesDescription": "Vložiť inštrukcie na formovanie odpovede bez prepisovania výstupu poskytovateľa. Voľne kombinujte.", "mcpAccessibilityDescription": "Obmedzuje rozsah výstupov nástrojov MCP (samostatné úložisko).", "compressionStylesTileSummary": "{tokens, number} tokenov ušetrených · {runs, plural, one {# štylizované spustenie} few {# štylizované spustenia} other {# štylizovaných spustení}}", @@ -7866,8 +7873,8 @@ "description": "Filtrovanie výstupu príkazov." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Výstup nástroja Responses", + "description": "Konzervatívna kompresia podporovaných výstupov nástroja Responses." }, "headroom": { "label": "Rezerva", @@ -7878,7 +7885,7 @@ "description": "Extraktívne hodnotenie viet voči poslednej otázke používateľa." }, "caveman": { - "label": "Caveman", + "label": "Jaskynný človek", "description": "Kompresia prózy na základe pravidiel." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "Rebríček YAGNI: najmenšia funkčná zmena, žiadne nevyžiadané abstrakcie." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Copík (lenivý senior vývojár)", + "description": "Disciplína lenivého senior vývojára: postupujte po rebríčku YAGNI, odstráňte hlavnú príčinu a vytvorte najmenšiu funkčnú zmenu." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Mám ADHD (najprv konať)", + "description": "Výstup zameraný najprv na konanie: začína nasledujúcou akciou, kroky sú očíslované, obsahuje jeden konkrétny nasledujúci krok a žiadny úvod." }, "terse-cjk": { "label": "Stručné CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "Záložná funkcia CLIProxyAPI", "cliproxyapiEnableFallback": "Povoliť CLIProxyAPI Fallback", "cliproxyapiUrl": "URL CLIProxyAPI", + "headroomProxyTitle": "Proxy Headroom", + "headroomProxyDesc": "URL voliteľného proxy servera Headroom na úsporu tokenov. Ak je pole prázdne, použije sa HEADROOM_URL alebo http://localhost:8787.", + "headroomProxyUrl": "URL Headroom", + "headroomProxyUrlHint": "Lokálne URL možno spustiť z tejto stránky. Externé URL sa iba overia.", + "headroomProxySave": "Uložiť", + "headroomProxyStart": "Spustiť", + "headroomProxyStop": "Zastaviť", + "headroomProxyExternalHint": "Táto URL nie je lokálna, preto OmniRoute nespustí lokálne CLI.", "cliproxyapiStatus": "Stav CLIProxyAPI", "cliproxyapiNotDetected": "Nezistené", "cliproxyapiImportAuthTitle": "Importovať účty z CLIProxyAPI", @@ -7938,9 +7953,9 @@ "cliproxyapiImportAuthButton": "Importovať účty", "payloadRulesTitle": "Pravidlá užitočného zaťaženia", "payloadRulesDesc": "Nakonfigurujte mutácie payloadu požiadavky podľa modelu a protokolu. Zmeny sa uložia v nastaveniach a okamžite po uložení sa znova načítajú do runtime.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "predvolené", "payloadRuleDefaultDesc": "Použije parametre iba vtedy, keď cieľová cesta chýba v odchádzajúcom payloade.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "prepísanie", "payloadRuleOverrideDesc": "Vynúti hodnoty do payloadu a nahradí všetko, čo sa už na danej ceste nachádza.", "payloadRuleFilterTitle": "filter", "payloadRuleFilterDesc": "Odstráni zablokované parametre z payloadu pred odoslaním požiadavky na upstream.", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "Globálne vložiť service_tier=priorita pre požiadavky kódexu OpenAI.", "codexFastTierHint": "Keď je povolené, OmniRoute pridáva service_tier=priority k odchádzajúcim požiadavkám kódexu pre pripojenia, ktoré ešte nešpecifikujú úroveň. Prioritná vrstva vyžaduje kľúč OpenAI Enterprise API alebo cestu kódexu ChatGPT-auth; ostatné typy kľúčov dostanú od OpenAI chybu súvisiacu s úrovňou. Nastavenia pre jednotlivé pripojenia na stránke poskytovateľa kódexu majú prednosť.", "codexFastTierSaveError": "Nepodarilo sa aktualizovať nastavenie Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Automatický ping kvóty Codex", + "codexAutoPingDesc": "Voliteľné pre každé pripojenie: odošle malú požiadavku hneď po obnovení okna relácie Codex, aby nebolo neaktívne, keď ho budete potrebovať.", + "codexAutoPingWarning": "Pri každom pingu spotrebuje malé množstvo skutočnej kvóty Codex. Predvolene vypnuté — povoľte iba pre pripojenia, na ktoré sa aktívne spoliehate.", + "codexAutoPingSaveError": "Nepodarilo sa aktualizovať nastavenie automatického pingu Codex", + "codexAutoPingToggleAria": "Prepnúť automatický ping kvóty Codex pre {connection}", "codexFastTierTierLabel": "Úroveň služieb", "codexFastTierTierPriority": "Prioritná", "codexFastTierTierFlex": "Flex", @@ -8072,7 +8087,7 @@ "resilienceBaseCooldownLabel": "Základné cooldown", "scopeLabel": "Rozsah", "triggerLabel": "Spúšťač", - "effectLabel": "Effect", + "effectLabel": "Účinok", "statusEnabled": "Povolené", "statusDisabled": "Zakázané", "resilienceRequestQueueScope": "Front na vyžiadanie", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Globálny interval kontroly", "resilienceCredentialHealthEveryMinutes": "Každých {minutes} min", "resilienceCredentialHealthHint": "0 vypne skenovanie na pozadí (max. 1440 min = 24 h). Pripojenia s vlastnou hodnotou kontroly zdravia ignorujú toto globálne predvolené nastavenie; 0 pri konkrétnom pripojení ho vyradí, aj keď je globálne skenovanie zapnuté.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Vždy povolené pre {provider} — vyžaduje sa na zabezpečenie účtu OAuth; nedá sa vypnúť.", + "forcedFingerprintBadge": "Povinné", "sessionAffinityTitle": "Afinita relácie", "sessionAffinityDesc": "Udrží jednu konverzáciu na rovnakom účte po dobu tohto počtu sekúnd, pre akéhokoľvek poskytovateľa. 0 to zakáže.", "sessionAffinityTtl": "TTL afinity (sekundy)", @@ -8202,24 +8217,24 @@ "modelLockoutMaxBackoffStepsDescription": "Maximálny počet krokov odstupu predtým, ako sa doba chladnutia prestane predlžovať. Vo väčšine konfigurácií sa najprv dosiahne limit maximálnej doby chladnutia, čo z tohto robí bezpečnostný strop pre prípad zvýšenia maximálnej doby chladnutia.", "disableSessionStickiness": "Zakázať stálosť relácie", "disableSessionStickinessDesc": "Kombinácie round-robin a náhodného výberu sa pri každej požiadavke prepnú na iné pripojenie namiesto toho, aby celú konverzáciu priradili k jednému pripojeniu na základe hašu prvej správy. Ponechajte vypnuté, ak chcete zachovať zásahy do vyrovnávacej pamäte promptov (prompt-cache) pre viacúrovňové chaty. Prepísania pre jednotlivé kombinácie majú prednosť.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Smerovanie podľa lokality vyrovnávacej pamäte promptov", + "promptCacheAffinityDesc": "Uprednostniť rovnaký účet poskytovateľa pri zhodných kľúčoch vyrovnávacej pamäte promptov a zároveň zachovať prepnutie pri zlyhaní z dôvodu dostupnosti alebo kvóty.", + "reasoningTokenBuffer": "Rezerva tokenov uvažovania", + "reasoningTokenBufferDesc": "Povoliť kombinovanému smerovaniu pridať rezervu max_tokens iba pre známe modely uvažovania, keď sa celá rezerva zmestí do známeho limitu výstupu.", + "zeroLatencyOptimizations": "Optimalizácie s nulovou latenciou", + "zeroLatencyOptimizationsDesc": "Zapnúť zaisťovanie požiadaviek, prediktívne preskakovanie TTFT a proaktívnu kompresiu záložných požiadaviek. Nechajte vypnuté, aby tieto funkcie znižovania latencie nesúťažili s cieľmi ani nekomprimovali záložné požiadavky.", "credentialRedaction": "Maskovanie prihlasovacích údajov", "credentialRedactionDesc": "Maskovať API kľúče, tokeny a tajné kľúče v kontexte odosielanom poskytovateľom a v odpovediach.", - "enableCredentialRedaction": "Enable credential redaction", + "enableCredentialRedaction": "Povoliť redigovanie prihlasovacích údajov", "enableCredentialRedactionDesc": "Odstraňuje API kľúče, tokeny, privátne kľúče a JWT zo správ, volaní nástrojov a odpovedí.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Automatická synchronizácia je vypnutá", + "pricingAutoSyncEnabled": "Automatická synchronizácia je zapnutá", "modalityBridgeIntro": "Preveďte multimodálny obsah na text skôr, než sa dostane k modelom určeným iba pre text. Mosty pre obraz, zvuk a video sú dostupné a konfigurovateľné.", "modalityBridgeVisionTab": "Vízia", "modalityBridgeAudioTab": "Zvuk", "modalityBridgeVideoTab": "Video", "modalityBridgeSubTabsAria": "Modality Bridge sekcie", - "modalityBridgeVisionTitle": "Vision Bridge", + "modalityBridgeVisionTitle": "Most pre obraz", "modalityBridgeVisionDesc": "Popíšte obrázky pomocou modelu vízie a pokračujte s textovým modelom podľa výberu používateľa.", "modalityBridgeMode": "Režim", "modalityBridgeModeAuto": "Auto (odporúčané)", @@ -8257,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge presunutý", "modalityBridgeMovedBody": "Nastavenia Vision Bridge sú teraz dostupné na samostatnej stránke Modality Bridge.", "modalityBridgeMovedCta": "Otvorenie nastavení Modality Bridge", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "Most pre zvuk", "modalityBridgeAudioDesc": "Prepisujte zvuk pomocou modelu reč na text pred pokračovaním s vybraným textovým modelom.", "modalityBridgeAudioEnabled": "Povoliť Audio Bridge", "modalityBridgeAudioEnabledDesc": "Nahradiť audio časti prepisom, keď cieľový model nemôže spracovať audio.", @@ -8301,7 +8316,7 @@ "retry": "Skúsiť znova", "title": "Nepodarilo sa načítať nastavenia" }, - "host": "Host", + "host": "Hostiteľ", "notInstalled": "Nie je nainštalované", "oneproxyActions": "Oneproxy Akcie", "oneproxyActive": "Oneproxy Aktívny", @@ -8309,7 +8324,7 @@ "oneproxyCountry": "Oneproxy Krajina", "oneproxyDelete": "Oneproxy Odstrániť", "oneproxyEmpty": "Oneproxy Prázdny", - "oneproxyHost": "Oneproxy Host", + "oneproxyHost": "Hostiteľ Oneproxy", "oneproxyLatency": "Oneproxy Latencia", "oneproxyProtocol": "Oneproxy protokol", "oneproxyQuality": "Oneproxy Kvalita", @@ -8363,34 +8378,26 @@ "cliproxyapiVersion": "Verzia", "cliproxyapiHealth": "Zdravie", "cliproxyapiPort": "Port", - "qdrantHost": "Host", - "qdrantCollection": "Zbierka", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantHost": "Hostiteľ", + "qdrantCollection": "Zbierka" }, "contextRtk": { "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "description": "Kompresia zohľadňujúca príkazy pre výstup nástrojov, terminálové protokoly a výsledky zostavenia.", + "enabled": "Povolené", + "intensity": "Intenzita", + "intensityMinimal": "Minimálna", + "intensityStandard": "Štandardná", + "intensityAggressive": "Agresívna", + "toolResults": "Výsledky nástrojov", + "assistantMessages": "Správy asistenta", + "codeBlocks": "Bloky kódu", "filterCatalog": "Katalóg filtrov", "filterCatalogDesc": "Dostupné výstupné filtre podľa kategórie", "guidedConfig": "Konfigurácia", "guidedConfigDesc": "Upravte spôsob, akým RTK filtruje výstup vášho terminálu", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Max. počet riadkov", + "maxChars": "Max. počet znakov", "deduplicateThreshold": "Deduplikovať prah", "customFilters": "Vlastné filtre", "detectedType": "Zistený typ", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Neúspechy", "rawOutputAlways": "Vždy", "rawOutputMaxBytes": "Nespracovaný výstup max bajtov", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Testovanie filtrovania", + "pasteOutput": "Prilepte výstup nástroja na otestovanie filtrovania...", "presetHigh": "Agresívne", "presetLow": "Svetlo", "presetMaxChars": "Max výstupných znakov", "presetMaxLines": "Maximálny výstupný riadok", "presetMedium": "Štandardné", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Spustiť", + "result": "Výsledok", + "previewEmpty": "Spustite ukážku na náhľad výstupu RTK.", + "detected": "Zistené", "masterSwitchOffAlert": "Hlavný prepínač Token Saver je VYPNUTÝ — tieto nastavenia neovplyvnia požiadavky, kým ho nezapnete na stránke Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Odfiltrované tokeny", + "filtersActive": "Aktívne filtre", + "requests": "Požiadavky", + "avgSavings": "Priem. úspora", "simpleMode": "Jednoduché", "advancedMode": "Pokročilé", "searchFilters": "Vyhľadávať filtre...", @@ -8499,7 +8506,7 @@ "description": "Bezstratová tabuľková kompaktácia homogénnych polí JSON s explicitnými značkami počtu riadkov." }, "session-dedup": { - "name": "Session Dedup", + "name": "Deduplikácia relácie", "description": "Deduplikácia blokov naprieč ťahmi s obnoviteľnými značkami obsahu." }, "ccr": { @@ -8507,7 +8514,7 @@ "description": "Obsahovo adresované značky vyhľadávania pre opakované bloky kontextu." }, "llmlingua": { - "name": "LLMLingua-2 (Semantic Pruning)", + "name": "LLMLingua-2 (sémantické prerezávanie)", "description": "Sémantická klasifikácia tokenov založená na ONNX. Komprimuje iba bežný text; bloky kódu a zachované konštrukcie sú chránené. Pri chybách modelu alebo workera zlyháva do otvoreného stavu." }, "lite": { @@ -8602,7 +8609,7 @@ }, "intensity": { "lite": "Lite", - "full": "Full", + "full": "Plná", "ultra": "Ultra" } }, @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Kombinácie kompresie", + "description": "Definujte, ako sa enginy kombinujú pre rôzne scenáre smerovania.", + "createCombo": "Vytvoriť kombináciu kompresie", + "editCombo": "Upraviť", + "deleteCombo": "Odstrániť", + "deleteConfirm": "Odstrániť túto kombináciu kompresie?", + "pipeline": "Reťazec spracovania", + "addStep": "Pridať krok", + "removeStep": "Odstrániť", + "name": "Názov", + "descriptionField": "Popis", + "languagePacks": "Jazykové balíky", + "outputMode": "Režim výstupu", + "assignToRouting": "Priradiť ku kombináciám smerovania", + "noAssignments": "Nie sú k dispozícii žiadne kombinácie smerovania", + "default": "Predvolené", + "setAsDefault": "Nastaviť ako predvolené", + "save": "Uložiť", + "cancel": "Zrušiť", + "enabled": "Povolené", "loading": "Načítava sa…", "hubTitle": "Centrum kompresie", "hubDescription": "Vyberte, ktorý kompresný profil sa použije globálne.", @@ -8661,22 +8668,22 @@ "contextEditingNote": "Momentálne k dispozícii iba pre Claude (Anthropic). Ide o delegovaný režim: poskytovateľ vymaže staré bloky použitia nástrojov na strane servera — správu neprepisujeme. Nemá to vplyv na iných poskytovateľov.", "namedCombos": "Pomenované kombinácie", "namedCombosDescription": "Ukladajte rôzne pipeline a priraďujte ich ku konkrétnym smerovacím kombináciám.", + "activeProfileMasterSwitchOffWarning": "Aktívny profil uvedený nižšie sa nespustí, kým nebude zapnutý hlavný prepínač „Kompresia výziev“.", + "activeProfileMasterSwitchOffCta": "Zapnúť v nastaveniach", "comboNamePlaceholder": "Názov kombinácie", "descriptionPlaceholder": "Popis", "nameRequired": "Pred uložením zadajte názov kombinácie.", "pipelineRequired": "Pred uložením pridajte aspoň jeden krok pipeline.", "saveComboFailed": "Nepodarilo sa uložiť kombináciu (HTTP {status}).", "deleteNamedConfirm": "Odstrániť kombináciu “{name}”?", - "intensityLite": "Lite", + "intensityLite": "Ľahký", "intensityFull": "Plná", "intensityUltra": "Ultra", "active": "Aktívne", "languagePacksList": "Jazykové balíčky: {packs}", "dragToReorder": "Potiahnutím zmeníte poradie kroku", - "engine": "Engine", - "intensity": "Intenzita", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "engine": "Nástroj", + "intensity": "Intenzita" }, "compressionStudio": { "noRun": "Nie je k dispozícii žiadny beh kompresie.", @@ -8705,7 +8712,7 @@ "run": "Spustiť", "laneRejected": "odmietnuté: {reason}", "error": "chyba", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Ukážka kombinovaného reťazca spracovania zlyhala: {reason}", "combinedFlow": "Kombinovaný tok", "eachLayer": "Každá vrstva samostatne", "diff": "Rozdiel", @@ -8714,7 +8721,7 @@ "input": "VSTUP", "output": "VÝSTUP", "tokenCount": "{count, number} tokenov", - "tokenShort": "tok", + "tokenShort": "tok.", "provider": "Poskytovateľ", "judgeModel": "Hodnotiaci model", "judgeModelPlaceholder": "napr. claude-haiku", @@ -8725,7 +8732,7 @@ "spent": "minuté ${spent} / ${cap}", "capReached": "limit dosiahnutý", "loadAb": "Načítať A/B", - "engine": "Engine", + "engine": "Nástroj", "savings": "Úspory", "retention": "Retencia", "outputTokensShort": "Výstupné tokeny", @@ -8763,7 +8770,7 @@ "why": "Iba Fable 5 číta husté stránky so 100% presnosťou (namerané, n=30). GPT-5.5 a Gemini 2.5 Flash sú blokované." }, "transport": { - "label": "Transport", + "label": "Prenos", "pass": "priamy Anthropic", "why": "Agregátory prevzorkovávajú obrázky a ničia čitateľnosť — autoritatívna je iba priama trasa." }, @@ -8780,27 +8787,27 @@ }, "enableTitle": "Povoliť engine", "enableDescription": "Spúšťa sa ako posledný v stacku (po tom, čo RTK/Caveman vyčistí text, OmniGlyph skonvertuje zvyšok na obrázky) a funguje aj samostatne v režime omniglyph. Toto je predbežná verzia a predvolene zostáva vypnutá, kým sa nedokončí end-to-end validácia.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Profil kompresie", + "profileDescription": "Profil predstavuje hornú, nie dolnú hranicu: prísnejší profil nemožno zmierniť prepísaním nastavenia pre jednotlivý krok. Merané na tejto kódovej základni: pri profile bezpečnom pre programovanie alebo vyváženom sa v relácii, v ktorej sa ešte nenahromadila história, nič nekomprimuje, pretože oba zvyšujú minimálnu hranicu počtu znakov a zachovávajú systémovú výzvu, schémy nástrojov a výsledky nástrojov v pôvodnej podobe.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agresívny (predvolený)", + "description": "Pravidlá, ktoré merali zverejnené potvrdenia. Prevádza systémovú výzvu, dokumentáciu nástrojov a rozsiahlu históriu na obrázky." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Vyvážený", + "description": "Zachováva aktuálny stav v pôvodnej podobe a chráni posledných 8 kôl; zlučuje iba staršiu uzavretú históriu." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Bezpečný pre programovanie", + "description": "Zachováva autoritu, schémy nástrojov a aktuálny výstup nástrojov v pôvodnej podobe a chráni posledných 12 kôl. Kým sa v relácii nenahromadí história, nič nekomprimuje." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Bez úprav", + "description": "Smeruje bez transformácie. Nástroj sa preskočí a požiadavka sa odošle bez zmien." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Vyberte profil kompresie OmniGlyph", "saved": "Uložené.", "saveFailed": "Nepodarilo sa uložiť.", "enableAria": "Povoliť engine OmniGlyph", @@ -8901,38 +8908,38 @@ "save": "Uložiť" }, "contextCaveman": { - "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "title": "Nástroj Caveman", + "description": "Kompresia správ založená na pravidlách, jazykové balíky, analytika a ovládanie režimu výstupu.", "advancedConfig": "Pokročilá konfigurácia", "advancedConfigDesc": "Jemne dolaďte správanie kompresie", "aggressiveSettings": "Agresívne nastavenia", "aggressiveSettingsDesc": "Maximálna kompresia s možnými kompromismi v kvalite", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Požiadavky", + "tokensSaved": "Ušetrené tokeny", + "savingsPercent": "Úspora v %", + "avgLatency": "Priemerná latencia", + "languagePacks": "Jazykové balíky", + "languagePacksDesc": "Povoliť pravidlá kompresie pre konkrétne jazyky.", "labelAutoTrigger": "Automatická kompresia pri prekročení kontextu", "labelCompressionRate": "Pevnosť v tlaku", "labelMaxTokens": "Cieľové tokeny na správu", "labelMinLength": "Minimálna dĺžka správy", "labelMinSavings": "Minimálny počet tokenov na uloženie", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Povolené", + "autoDetect": "Automaticky rozpoznať jazyk", + "rulesCount": "Počet pravidiel: {count}", "inputCompressionTitle": "Kompresia vstupu", "inputCompressionDesc": "Prepísať históriu chatu s kratším formulovaním. Znižuje počet vstupných tokenov o ~50 %.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Analytika kompresie", + "noAnalytics": "Zatiaľ nie sú k dispozícii žiadne analytické údaje o kompresii.", "masterDisabledWarning": "Hlavný prepínač Token Saver je VYPNUTÝ — tieto nastavenia neovplyvnia požiadavky, kým ho nezapnete v Nastaveniach kompresie alebo ho nezmeníte tu.", "outputMode": "Výstupný režim", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Režim výstupu", "quickSettings": "Rýchle nastavenia", "quickSettingsDesc": "Na začiatok základné nastavenia kompresie", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Obídenie Auto-Clarity", + "bypassConditions": "Podmienky obídenia", "bypassConditionsList": "bezpečnostná, nezvratná, objasňujúca, citlivá na poriadok", "simpleMode": "Jednoduché", "advancedMode": "Pokročilé", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ultra nastavenia", "ultraSettingsDesc": "Sémantická kompresia poháňaná SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Odpovedaj stručne. Zachovaj technické termíny, kód, chyby, adresy URL a identifikátory.", + "full": "Odpovedaj úsečne a kompaktne. Zachovaj všetok technický obsah.", + "ultra": "Odpovedaj maximálne úsečne s použitím bežných technických skratiek. Zachovaj presné symboly." } }, "translator": { @@ -8987,7 +8994,7 @@ "ideCliIntegrations": "Integrácia IDE/CLI", "inMemoryNote": "Poznámka: Udalosti sa ukladajú do pamäte a resetujú sa, keď sa server reštartuje.", "ok": "OK", - "errorShort": "ERR", + "errorShort": "CHYBA", "formatConverter": "Prevodník formátov", "formatConverterDescription": "Prilepte alebo zadajte telo požiadavky JSON. Prekladateľ automaticky rozpozná zdrojový formát a prevedie ho do cieľového formátu. Použite toto na ladenie spôsobu, akým OmniRoute prekladá požiadavky medzi formátmi (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (stredne pokročilá) → {target}", @@ -8996,7 +9003,7 @@ "openaiIntermediatePanel": "OpenAI pre stredne pokročilých", "autoFeaturesTitle": "Čo robí OmniRoute automaticky", "autoFeaturesCount": "8 funkcií", - "featureReasoningCache": "Reasoning Cache", + "featureReasoningCache": "Vyrovnávacia pamäť odôvodnenia", "featureReasoningCacheDesc": "Opätovne vloží do vyrovnávacej pamäte logický obsah pre modely v režime myslenia (DeepSeek V4, Kimi K2, Qwen), keď ho klienti vynechajú z histórie konverzácií.", "featureSchemaCoercion": "Schéma nátlaku", "featureSchemaCoercionDesc": "Opravuje poškodené schémy nástrojov: pridáva chýbajúce dodatočné vlastnosti, dezinfikuje dlhé popisy, normalizuje vnorené objekty.", @@ -9101,7 +9108,7 @@ "anthropicCompatibleLabel": "Antropické kompatibilné", "noTemplateForFormat": "Žiadna šablóna pre tento formát", "translationFailed": "Preklad zlyhal: {error}", - "pipelineDebugger": "Pipeline Debugger", + "pipelineDebugger": "Ladiaci nástroj pipeline", "translationPipeline": "Prekladové potrubie", "loading": "Načítava sa…", "compressionOriginal": "Originál", @@ -9157,7 +9164,7 @@ "loadToolSample": "Načítať vzorku volania nástroja", "transformToResponses": "Transformácia na odpovede", "rawChatSseInput": "Neupravené dokončenia chatu SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "Transformované SSE rozhrania Responses API", "noResultsYet": "Zatiaľ žiadne výsledky", "transformedEvents": "Transformované udalosti", "uniqueEventTypes": "Jedinečné typy udalostí", @@ -9170,7 +9177,7 @@ "comboRouted": "Kombinované smerovanie", "uniqueEndpoints": "Jedinečné koncové body", "routeDetails": "Podrobnosti trasy", - "comboBadge": "Combo", + "comboBadge": "Kombinácia", "routeEndpointLabel": "Koncový bod", "routeConnectionLabel": "Pripojenie", "scenarioVision": "Vízia (porozumenie obrazu)", @@ -9181,7 +9188,7 @@ "conceptHeadline": "Vaša aplikácia hovorí „jazykom“ jedného API. Prekladač ho skonvertuje tak, aby používal iného poskytovateľa.", "conceptDiagramAppLabel": "Vaša aplikácia", "conceptDiagramSourceLabel": "Zdrojový formát", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (centrum)", "conceptDiagramTargetLabel": "Cieľový poskytovateľ", "conceptDiagramExampleApp": "napr. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Vložte JSON požiadavku; formát sa deteguje automaticky.", "advancedPipelineTitle": "Medziľahlá pipeline OpenAI", "advancedPipelineSubtitle": "Vizualizujte každý krok prekladu (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Transformátor streamu (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Konvertuje Chat Completions SSE na Responses API.", "advancedTestBenchTitle": "Test Bench (8 scenárov)", "advancedTestBenchSubtitle": "Spustí všetky scenáre a nahlási úspešnosť/zlyhanie + % kompatibility.", @@ -9232,7 +9239,7 @@ "pipelineStepClientRequestDesc": "Požiadavka prijatá vo formáte klienta", "pipelineStepFormatDetected": "Detegovaný formát", "pipelineStepFormatDetectedDesc": "Automaticky detegovaný zdrojový formát", - "pipelineStepOpenAIIntermediate": "OpenAI Intermediate", + "pipelineStepOpenAIIntermediate": "Medzistupeň OpenAI", "pipelineStepOpenAIIntermediateDesc": "Preložené do formátu OpenAI hub", "pipelineStepProviderFormat": "Formát poskytovateľa", "pipelineStepProviderFormatDesc": "Preložené do cieľového formátu poskytovateľa", @@ -9277,17 +9284,17 @@ "kiloPassRemaining": "Zostáva", "kiloPassRenews": "Obnovuje sa o {count} dní", "kiloPassUsageLabel": "Využitie za tento mesiac", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Dodatočné kredity za používanie", + "kimiExtraUsage": "Dodatočné používanie", + "kimiExtraUsageEnabled": "Povolené", + "kimiExtraUsageDisabled": "Zakázané", + "kimiExtraUsageFrozen": "Zmrazené", + "kimiExtraUsageUnavailable": "Nedostupné", + "kimiMonthlyUsed": "Použité tento mesiac", + "kimiMonthlyLimit": "Mesačný limit", + "kimiMonthlyLimitUnlimited": "Bez obmedzenia", + "kimiAdditionalCredits": "Dodatočné kredity", + "loggerTab": "Záznamník", "proxyTab": "Proxy", "budgetManagement": "Správa rozpočtu", "budgetSaved": "Rozpočtové limity boli uložené", @@ -9314,7 +9321,7 @@ "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", + "promptCache": "Vyrovnávacia pamäť promptov", "systemHealth": "Zdravie systému", "entries": "Príspevky", "activeCount": "{count} aktívny", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Ističe", "lockedIPs": "Zamknuté adresy IP", "lockoutsAutoRefreshHint": "Zámky limitu rýchlosti pre model • Automatické obnovenie 10 s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# uzamknutý} few {# uzamknuté} other {# uzamknutých}}", "timeLeft": "Zostáva {time}", "howItWorks": "Ako to funguje", "howItWorksSubtitle": "Zistite, ako hodnotenia overujú vaše odpovede LLM", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Testované modely", "searchSuitesPlaceholder": "Hľadať apartmány...", "passSuffix": "prejsť", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# prípad} few {# prípady} other {# prípadov}}", "runEval": "Spustite Eval", "runAllSuites": "Spustiť všetko", "runAllRunning": "Beží všetko...", "runAllProgress": "Beží {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# sada zlyhala} few {# sady zlyhali} other {# sád zlyhalo}}", "runAllCompleted": "Spustených {suites} apartmánov – {passed} úspešné, {failed} neúspešné", "runAllCompletedWithFailures": "Počet suít: {completed}; {failedSuites} sa nepodarilo dokončiť", "runningProgress": "Spustený {current}/{total}...", @@ -9423,7 +9430,7 @@ "providerLimits": "Limity poskytovateľa", "noProviders": "Nie sú pripojení žiadni poskytovatelia", "connectProvidersForQuota": "Pripojte sa k poskytovateľom pomocou protokolu OAuth, aby ste mohli sledovať limity kvót a využitie rozhrania API.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# účet} few {# účty} other {# účtov}}", "filteredFromCount": "(filtrované z {count})", "autoRefresh": "Automatické obnovenie", "refreshAll": "Obnoviť všetko", @@ -9433,10 +9440,10 @@ "hideQuotaRow": "Skryť tento riadok kvóty", "showQuotaRow": "Zobraziť tento riadok kvóty", "hiddenQuotaRowsLabel": "Skryté:", - "quotaVisibilityUpdateFailed": "Failed to update quota visibility", + "quotaVisibilityUpdateFailed": "Nepodarilo sa aktualizovať viditeľnosť kvóty", "account": "účtu", "modelQuotas": "Modelové kvóty", - "lastUsed": "Last Refreshed", + "lastUsed": "Naposledy obnovené", "actions": "Akcie", "refreshQuota": "Obnoviť kvótu", "today": "Dnes", @@ -9452,13 +9459,13 @@ "cardExpand": "Rozbaliť", "cardCollapse": "Zbaliť", "moreQuotas": "+{count} ďalších", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Nezoskupené", + "viewFlat": "Ploché", + "viewByEnvironment": "Podľa prostredia", "noQuotaDataAvailable": "Nie sú k dispozícii žiadne údaje o kvóte", "noAccountsForTierFilter": "Pre filter úrovne sa nenašli žiadne účty", "tierAll": "Všetky", - "tierEnterprise": "Enterprise", + "tierEnterprise": "Podnikový", "tierTeam": "Tím", "tierBusiness": "Podnikanie", "tierUltra": "Ultra", @@ -9475,7 +9482,7 @@ "filterTierLabel": "Úroveň", "purchaseAll": "Všetko", "purchaseOauthSub": "Predplatné", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "OAuth zdarma", "purchaseApiKey": "API kľúč", "creditsLabel": "Kredity", "creditBalanceHint": "Zostávajúci zostatok", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Uplatniť kredit", "resetCreditRedeemed": "Vynulovať uplatnené", "resetCreditRedeemFailed": "Nepodarilo sa uplatniť kredit na reset", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Súbor testov sa nepodarilo uložiť", "clone": "Klonovať", "exportSuite": "Exportovať", "importSuite": "Importovať", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Neplatná eval suite JSON", "suiteBuilderCloneSuffix": "kopírovať", "suiteBuilderImportedSuite": "Importovaná suita", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", + "scorecardTitle": "Prehľad výsledkov", + "evalApiKey": "Kľúč API", + "scorecardPassRate": "Miera úspešnosti", "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "actualOutputLabel": "Skutočný výstup", + "evalTargetHint": "Vyberte model alebo kombináciu na vyhodnotenie.", + "suiteBuilderDeleted": "Súbor testov bol úspešne odstránený", + "suiteBuilderCaseCardHint": "Definujte vstupnú výzvu a kritériá očakávaného výstupu.", + "nextResetUtc": "Ďalšie obnovenie (UTC)", + "scorecardHint": "Súhrnné miery úspešnosti vo všetkých súboroch hodnotení.", + "suiteLatestRunsHint": "Najnovšie spustenia hodnotenia pre tento súbor.", + "saving": "Ukladá sa", + "suiteBuilderCaseModelLabel": "Model (voliteľné)", + "evalControlsTitle": "Ovládacie prvky hodnotenia", + "suiteBuilderEditTitle": "Upraviť súbor hodnotení", + "suiteBuilderCaseStrategyLabel": "Stratégia validácie", + "notifySelectDifferentCompareTarget": "Vyberte na porovnanie iný cieľ", + "recentRunsHint": "Zobrazujú sa najnovšie spustenia hodnotenia. Kliknutím na spustenie zobrazíte podrobné výsledky.", + "evalCompareHint": "Výsledky môžete voliteľne porovnať s druhým cieľom.", + "suiteBuilderCaseInvalid": "Tento prípad obsahuje chyby validácie. Pred uložením ich opravte.", + "historyEmpty": "Zatiaľ žiadna história hodnotení", + "suiteBuilderUpdated": "Súbor hodnotení bol úspešne aktualizovaný", + "resetInterval": "Interval obnovenia", + "suiteBuilderCreateTitle": "Vytvoriť súbor hodnotení", + "activePeriodSpend": "Výdavky v aktívnom období", + "evalApiKeyHint": "Vyberte kľúč API, ktorý sa má použiť na požiadavky hodnotenia.", + "evalCompareOptional": "Porovnať (voliteľné)", + "suiteBuilderDeleteFailed": "Súbor sa nepodarilo odstrániť", + "suiteBuilderCaseSystemPromptPlaceholder": "Voliteľné systémové pokyny...", + "scorecardCases": "Prípady", + "runCompletedWithScore": "Hodnotenie dokončené — miera úspešnosti {score} %", + "suiteBuilderCustomBadge": "Vlastné", + "targetSuiteDefaults": "Predvolené nastavenia súboru", + "suiteBuilderDeleteConfirm": "Naozaj chcete odstrániť tento súbor? Túto akciu nemožno vrátiť späť.", + "suiteBuilderNameLabel": "Názov sady", + "scorecardSuites": "Sady", + "evalCompareTarget": "Porovnať cieľ", + "suiteBuilderCaseModelPlaceholder": "napr. gpt-4o-mini", + "evalControlsHint": "Nakonfigurujte cieľ vyhodnocovania a kľúč API a potom spustite sady na overenie kvality modelu.", + "recentRunsTitle": "Nedávne spustenia", + "suiteBuilderCaseSystemPromptLabel": "Systémová výzva", + "suiteBuilderCaseExpectedPlaceholder": "napr. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "napr. def Fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Prilepte presnú očakávanú odpoveď", "suiteBuilderCaseExpectedPlaceholderRegex": "napr. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Použite regulárny výraz JavaScript bez zalamovania lomiek.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "napr. Sada kvality kódu", + "suiteBuilderAddCase": "Pridať prípad", + "cancel": "Zrušiť", + "evalTarget": "Cieľ", + "suiteBuilderCaseNameLabel": "Názov prípadu", + "weeklyLimitUsd": "Týždenný limit (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "napr. Napíšte funkciu fibonacci v jazyku Python", + "suiteBuilderNameRequired": "Názov sady je povinný", + "suiteBuilderCaseUserPromptLabel": "Používateľská výzva", + "daily": "Denne", + "resultErrorLabel": "Chyba", + "suiteBuilderBuiltInBadge": "Vstavané", + "suiteBuilderCaseCardTitle": "Testovací prípad", "suiteBuilderDuplicateCase": "Duplicitné", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", + "weeklyLimitPlaceholder": "napr. 50.00", + "suiteBuilderCaseTagsHint": "Značky oddelené čiarkami na usporiadanie testovacích prípadov.", + "notifyEvalRunFailedWithReason": "Vyhodnotenie zlyhalo: {reason}", + "weekly": "Týždenne", + "runEvalRunning": "Prebieha vyhodnocovanie...", + "delete": "Odstrániť", + "resetTimeUtc": "Čas obnovenia (UTC)", + "evalApiKeyAuto": "Automaticky (použiť predvolené nastavenie)", + "suiteBuilderDescriptionPlaceholder": "Voliteľný opis toho, čo táto sada testuje...", + "targetComparisonTitle": "Porovnanie cieľov", + "save": "Uložiť", + "suiteBuilderCreated": "Sada bola úspešne vytvorená", + "suiteLatestRuns": "Najnovšie spustenia", + "suiteBuilderCaseExpectedLabel": "Očakávaná hodnota", + "historyLatency": "Latencia", + "suiteBuilderCaseTagsPlaceholder": "napr. kódovanie, python", + "targetTypeCombo": "Kombinácia", + "scorecardPassed": "Úspešné", + "suiteBuilderCaseTagsLabel": "Značky", + "suiteBuilderNewSuite": "Nový balík", + "notifyEvalLoadFailed": "Nepodarilo sa načítať údaje vyhodnotenia", + "notConfigured": "Nenakonfigurované", + "suiteBuilderCaseNamePlaceholder": "napr. test Fibonacciho postupnosti v Pythone", "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "suiteBuilderCreateAction": "Vytvoriť balík", + "suiteBuilderCasesHint": "Každý prípad odošle výzvu a overí odpoveď.", + "suiteBuilderUpdatedAt": "Aktualizované", + "errorBadge": "Chyba", + "suiteBuilderCasesTitle": "Testovacie prípady", + "edit": "Upraviť", + "monthly": "Mesačne", + "suiteBuilderCasesRequired": "Vyžaduje sa aspoň jeden testovací prípad", + "weeklyLimitSummary": "Súhrn týždenného rozpočtového limitu", + "suiteBuilderDescriptionLabel": "Popis", + "targetComparisonHint": "Porovnanie výsledkov vyhodnotenia medzi cieľmi vedľa seba.", + "compareCompletedWithScore": "Porovnanie dokončené — úspešnosť {score} %", + "staleQuotaTooltip": "Posledná aktualizácia zlyhala — zobrazujú sa údaje z vyrovnávacej pamäte", "quotaThresholdLabel": "Zostáva min", "quotaCutoffsColumnHelp": "Zastavte požiadavky, keď zostávajúca kvóta klesne na toto percento alebo nižšie.", "quotaCutoffsButtonDefault": "Predvolené", @@ -9745,7 +9752,7 @@ "proxy": "Proxy", "level": "úroveň", "directNative": "Priame (natívne)", - "combo": "Combo", + "combo": "Kombinácia", "inputTokens": "ja:", "outputTokens": "O:" }, @@ -9756,7 +9763,7 @@ "usageByModel": "Použitie podľa modelu", "usageByAccount": "Použitie podľa účtu", "failedToLoad": "Nepodarilo sa načítať štatistiky používania.", - "tokenHealth": "Token Health", + "tokenHealth": "Stav tokenov", "totalOAuth": "Celkový počet OAuth", "healthy": "Zdravý", "warning": "Upozornenie", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Systémové metriky", "memory": "Pamäť", - "memoryShort": "mem", + "memoryShort": "pam.", "uptime": "Dostupnosť", "ariaLabel": "Sledovanie systému", "title": "Systémový monitor", @@ -9816,8 +9823,8 @@ "signIn": "Prihláste sa", "enterPassword": "Ak chcete pokračovať, zadajte svoje heslo", "password": "heslo", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", + "unifiedProxy": "Jednotné proxy API pre AI", + "unifiedAiApiProxy": "Jednotné proxy API pre AI", "unifiedAiApiProxyDesc": "Smerujte požiadavky k viacerým poskytovateľom AI cez jeden koncový bod. Zabudované vyrovnávanie záťaže, núdzové prepnutie a sledovanie využitia.", "passwordNotEnabled": "Ochrana heslom nie je povolená", "loading": "Načítava sa...", @@ -9863,7 +9870,7 @@ "backToLogin": "Späť na Prihlásenie", "forgotPassword": "Zabudli ste heslo?", "continueWithOidc": "Pokračovať s OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Predvolené heslo: CHANGEME (ak nebolo nastavené INITIAL_PASSWORD)", "Authorization": "Autorizácia", "Content-Disposition": "Obsah-Dispozícia", "waitingForAuthorization": "Čaká sa na autorizáciu...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Čaká sa na antigravitačné povolenie...", "waitingForQoderAuthorization": "Čaká sa na autorizáciu Qoder...", "exchangingCodeForTokens": "Výmena kódu za tokeny...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Nekompatibilná verzia Node.js", + "nodeIncompatibleDesc": "Používate Node.js {version}, ktorá nespĺňa zásady OmniRoute pre podporované bezpečné runtime prostredie. Použite opravenú verziu Node.js 20.x alebo 22.x LTS.", + "nodeIncompatibleFixLabel": "Riešenie: nainštalujte opravenú verziu Node.js 22 LTS", + "nodeIncompatibleHint": "OmniRoute vyžaduje Node.js 22.22.2+ (22.x LTS) alebo 24.0.0+ (24.x LTS). Odporúča sa Node 24 LTS.", "resetViaAppDataTitle": "Obnoviť cez údaje aplikácie", "resetViaAppDataDescription": "Odstráňte súbor nastavení z adresára aplikácie, aby ste resetovali svoje heslo:", "quitDesktopApp": "Úplne ukončite desktopovú aplikáciu OmniRoute", @@ -9933,7 +9940,7 @@ "navigateHome": "Prejdite domov", "toggleMenu": "Prepnúť ponuku", "featuresLink": "Vlastnosti", - "docsLink": "Docs", + "docsLink": "Dokumentácia", "github": "GitHub", "versionLive": "v1.0 je teraz zverejnená", "oneEndpoint": "Jeden koncový bod pre", @@ -9947,7 +9954,7 @@ "featureUnifiedEndpointDesc": "Získajte prístup ku všetkým poskytovateľom prostredníctvom jedinej štandardnej adresy URL rozhrania API.", "featureEasySetupTitle": "Jednoduché nastavenie", "featureEasySetupDesc": "Začnite pracovať v priebehu niekoľkých minút pomocou príkazu npx.", - "featureModelFallbackTitle": "Model Fallback", + "featureModelFallbackTitle": "Záložný model", "featureModelFallbackDesc": "Automaticky prepínajte poskytovateľov pri zlyhaní alebo vysokej latencii.", "featureUsageTrackingTitle": "Sledovanie používania", "featureUsageTrackingDesc": "Podrobná analýza a sledovanie nákladov naprieč všetkými modelmi.", @@ -9957,7 +9964,7 @@ "featureCloudSyncDesc": "Okamžite synchronizujte svoje konfigurácie medzi zariadeniami.", "featureCliSupportTitle": "Podpora CLI", "featureCliSupportDesc": "Funguje s Claude Code, Codex, Cline, Cursor a ďalšími.", - "featureDashboardTitle": "Dashboard", + "featureDashboardTitle": "Prehľad", "featureDashboardDesc": "Vizuálny panel pre analýzu návštevnosti v reálnom čase.", "howItWorks": "Ako funguje OmniRoute", "howItWorksDescription": "Dáta plynule prúdia z vašej aplikácie cez našu vrstvu inteligentného smerovania k najlepšiemu poskytovateľovi pre danú úlohu.", @@ -9980,14 +9987,14 @@ "copied": "✓ Skopírované", "startingOmniRoute": "Spúšťa sa OmniRoute...", "serverRunningOnLabel": "Server beží", - "dashboardLabel": "Dashboard", + "dashboardLabel": "Prehľad", "readyToRoute": "Pripravený na cestu! ✓", "configureProvidersNote": "📝 Nakonfigurujte poskytovateľov na informačnom paneli alebo použite premenné prostredia", "dataLocation": "Umiestnenie údajov:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", "product": "Produkt", - "dashboardLink": "Dashboard", + "dashboardLink": "Prehľad", "changelog": "Denník zmien", "resources": "Zdroje", "documentation": "Dokumentácia", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "Poskytovatelia", "commonUseCases": "Bežné prípady použitia", "clientCompatibility": "Kompatibilita klienta", - "protocolsToc": "Protocols", + "protocolsToc": "Protokoly", "apiReference": "Referencia API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Referenčná príručka API na správu", + "managementApiDescription": "Koncové body automatizácie pre register proxy serverov, priradenia rozsahov a migráciu starších proxy serverov.", "method": "Metóda", "path": "Cesta", "notes": "Poznámky", @@ -10044,7 +10051,7 @@ "supportsChat": "Podporuje koncové body chatu aj odpovedí.", "oauthAutoRefresh": "Pripojenie OAuth s automatickou obnovou tokenu.", "fullStreaming": "Plná podpora streamovania pre všetky modely.", - "docsLabel": "Docs", + "docsLabel": "Dokumentácia", "docsHeroDescription": "Brána AI pre LLM s viacerými poskytovateľmi. Jeden koncový bod pre OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor a 20+ ďalších poskytovateľov.", "openDashboard": "Otvorte informačný panel", "endpointPage": "Koncový bod", @@ -10064,7 +10071,7 @@ "quickStartStep4Suffix": "Použite napríklad predponu poskytovateľa", "deploySetupTitle": "Sprievodca nastavením", "deploySetupText": "Inštalácia krok za krokom, konfigurácia prostredia a návod na prvé spustenie pre OmniRoute.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron pre počítače", "deployElectronText": "Spustite OmniRoute ako natívnu počítačovú aplikáciu v systémoch Windows, MacOS a Linux.", "deployDockerTitle": "Docker", "deployDockerText": "Kontajnerové nasadenie s Docker Compose; pripravené na produkčné zásobníky a Kubernetes.", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Nainštalujte OmniRoute ako progresívnu webovú aplikáciu do prehliadačov so systémom Android, iOS a stolných počítačov.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Spustite OmniRoute na Androide cez Termux bez grafického rozhrania. K ovládaciemu panelu pristupujte z mobilného prehliadača.", "featureRoutingTitle": "Smerovanie viacerých poskytovateľov", "featureRoutingText": "Smerujte požiadavky na 30+ poskytovateľov AI cez jeden koncový bod kompatibilný s OpenAI. Podporuje chat, odpovede, audio a obrazové API.", "featureCombosTitle": "Kombinácie a vyváženie", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "Použite OmniRoute ako stabilnú základnú adresu URL, zatiaľ čo pod ňou budete striedať účty alebo kombinácie poskytovateľov.", "clientKimiBullet2": "V tokoch kódovania uprednostňujte modely s predponou, aby záložné a kontrolné záznamy zostali explicitné.", "clientKimiBullet3": "Ak chcete natívne smerovanie v štýle odpovedí pre klientov používajúcich nástroje, použite `/v1/responses`.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "Protokoly: MCP a A2A", + "protocolsDescription": "OmniRoute okrem API kompatibilných s OpenAI poskytuje dva prevádzkové protokoly: MCP na vykonávanie nástrojov a A2A na pracovné postupy medzi agentmi.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Použite MCP cez stdio, aby klienti mohli vyhľadávať a volať nástroje OmniRoute s možnosťou auditovania.", + "protocolMcpStep1": "Spustite prenos MCP pomocou `omniroute --mcp`.", + "protocolMcpStep2": "Nastavte svojho klienta MCP na prenos cez stdio.", + "protocolMcpStep3": "Zavolajte `omniroute_get_health` a `omniroute_list_combos` na overenie pripojenia.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "Použite A2A JSON-RPC na odosielanie úloh synchrónne alebo prostredníctvom streamovania SSE.", + "protocolA2aStep1": "Na vyhľadanie agenta načítajte `/.well-known/agent.json`.", + "protocolA2aStep2": "Odosielajte požiadavky `message/send` alebo `message/stream` na `POST /a2a`.", + "protocolA2aStep3": "Spravujte životný cyklus úloh pomocou `tasks/get` a `tasks/cancel`.", + "protocolTroubleshootingTitle": "Riešenie problémov s protokolmi", + "protocolTroubleshooting1": "Ak je stav MCP offline, overte, či je proces stdio spustený a či sa aktualizuje súbor heartbeat.", + "protocolTroubleshooting2": "Ak úlohy A2A zostávajú v stave `working`, skontrolujte `/api/a2a/tasks/:id` a udalosti streamu, aby ste zistili koncový stav.", + "protocolTroubleshooting3": "Na prevádzkové ovládanie a auditovanie použite `/dashboard/mcp` a `/dashboard/a2a`.", "endpointChatNote": "Koncový bod chatu kompatibilný s OpenAI (predvolené).", "endpointResponsesNote": "Koncový bod API odpovedí (Codex, o-series).", "endpointModelsNote": "Modelový katalóg pre všetkých pripojených poskytovateľov.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Pomocník na prepísanie pre klientov bez /v1.", "endpointRewriteResponsesNote": "Pomocník na prepísanie pre odpovede bez /v1.", "endpointRewriteModelsNote": "Prepísať pomocníka na zisťovanie modelov bez /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Zobrazí uložené položky registra proxy serverov (podporuje stránkovanie).", + "mgmtProxiesCreateNote": "Vytvorí opakovane použiteľnú položku proxy servera v registri.", + "mgmtProxiesHealthNote": "Získa 24-hodinové/priebežné metriky stavu každého uloženého proxy servera z jeho protokolov.", + "mgmtProxiesBulkAssignNote": "Priradí alebo odstráni jeden proxy server pre viacero ID rozsahov v jednej požiadavke.", + "mgmtAssignmentsListNote": "Zobrazí priradenia proxy serverov podľa scope, scope_id alebo proxy_id.", + "mgmtAssignmentsUpdateNote": "Priradí alebo odstráni proxy server pre rozsah global/provider/account/combo.", + "mgmtLegacyMigrationNote": "Importuje staršie mapy proxyConfig do priradení registra.", "modelPrefixesDescriptionStart": "Na smerovanie ku konkrétnemu poskytovateľovi použite predponu poskytovateľa pred názvom modelu. Príklad:", "modelPrefixesDescriptionEnd": "trasy na GitHub Copilot.", "provider": "Poskytovateľ", @@ -10215,7 +10222,7 @@ "mcpToolsMemoryDesc": "Vyhľadávajte, pridávajte a vymažte trvalé záznamy konverzačnej pamäte.", "mcpToolsSkillsTitle": "Zručnosti", "mcpToolsSkillsDesc": "Uveďte, povoľte, spustite a monitorujte vykonávanie vlastných zručností.", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "Automatické kombinácie", "featureAutoComboText": "Automaticky vytvárajte optimalizované kombinácie na základe vašich pripojených poskytovateľov, vzorov používania a možností modelu.", "featureSearchTitle": "Vyhľadávanie na webe", "featureSearchText": "Integrované vyhľadávanie na webe s 5 poskytovateľmi (Serper, Brave, Exa, Tavily, Perplexity) vrátane analýzy a sledovania nákladov.", @@ -10251,7 +10258,7 @@ "nonTechUsersSubtitle": "Začnite rýchlo — nie je potrebné technické zázemie", "techUsersTitle": "Pre technických používateľov", "techUsersSubtitle": "Hlboké ponorenie do architektúry, API a interných procesov", - "apiExplorerMetadataTitle": "API Explorer — OmniRoute Docs", + "apiExplorerMetadataTitle": "Prieskumník API — dokumentácia OmniRoute", "apiExplorerMetadataDescription": "Interaktívny API prehliadač — vyskúšajte koncové body OmniRoute naživo s odpoveďami v reálnom čase", "apiExplorerTitle": "API Prieskumník", "apiExplorerDescription": "Vyskúšajte koncové body OmniRoute naživo. Vyberte koncový bod, nakonfigurujte svoju požiadavku a sledujte odpoveď v reálnom čase.", @@ -10296,7 +10303,7 @@ "listSeparator": "-", "questionsVisit": "Otázky? Navštívte našu", "githubRepository": "úložisko GitHub", - "privacySection1Title": "1. Local-First Architecture", + "privacySection1Title": "1. Architektúra uprednostňujúca lokálne prostredie", "privacySection1Text": "OmniRoute je navrhnutý ako lokálna aplikácia. Všetko spracovanie a ukladanie údajov prebieha výlučne na vašom počítači. Neexistuje žiadny centralizovaný server, ktorý by zbieral vaše informácie.", "privacySection2Title": "2. Údaje, ktoré uchovávame", "privacyDataStoredIn": "Nasledujúce údaje sú uložené lokálne v", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute je softvér s otvoreným zdrojovým kódom. Môžete ho voľne kontrolovať, upravovať a distribuovať v súlade s podmienkami jeho licencie." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "Agenti CLI", + "description": "Vyhľadajte agentov CLI nainštalovaných vo svojom systéme. Pridajte vlastných agentov na automatickú detekciu.", + "refresh": "Obnoviť", + "installed": "Nainštalované", + "notFound": "Nenájdené", + "builtIn": "Vstavaný", + "custom": "Vlastný", + "remove": "Odstrániť", + "addCustomAgent": "Pridať vlastného agenta", + "addCustomAgentDesc": "Zaregistrujte ľubovoľný nástroj CLI na detekciu. Pri obnovení sa automaticky vyhľadá.", + "agentName": "Názov agenta", + "binaryName": "Názov binárneho súboru", + "versionCommand": "Príkaz na zistenie verzie", + "spawnArgs": "Argumenty spustenia", + "addAgent": "Pridať agenta", + "scanning": "Vyhľadávajú sa agenti CLI v systéme...", + "opencodeIntegration": "Integrácia OpenCode", + "opencodeDetected": "Zistený opencode {version}", + "opencodeDesc": "Vygenerujte súbor {configFile} pripravený na použitie s vašou základnou URL adresou OmniRoute a všetkými dostupnými modelmi — umiestnite ho do koreňového adresára projektu a spustite príkaz {command}.", + "downloadConfig": "Stiahnuť {file}", + "downloaded": "Stiahnuté!", + "setupGuideTitle": "Sprievodca nastavením", + "openCliTools": "Otvoriť nástroje CLI", + "setupGuideDetectCliTitle": "Zistiť nainštalované nástroje CLI", + "setupGuideDetectCliDesc": "Po inštalácii alebo aktualizácii nástroja CLI kliknite na Obnoviť, aby OmniRoute mohol znova skontrolovať binárne súbory a verzie.", + "setupGuideCustomAgentTitle": "Zaregistrovať vlastný binárny súbor", + "setupGuideCustomAgentDesc": "Ak váš nástroj CLI nie je v zozname vstavaných nástrojov, použite možnosť Pridať vlastného agenta. Zadajte názov binárneho súboru a príkaz na zistenie verzie.", + "setupGuideCommandMissingTitle": "Opraviť chybu „príkaz sa nenašiel“", + "setupGuideCommandMissingDesc": "Uistite sa, že príkaz CLI existuje v PATH, otvorte novú reláciu terminálu a znova spustite obnovenie.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10538,108 +10545,108 @@ } }, "cache": { - "title": "Cache Management", + "title": "Správa vyrovnávacej pamäte", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Obnoviť", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Položky v pamäti", + "memoryEntriesSub": "LRU v pamäti", + "dbEntries": "Položky databázy", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Zásahy do vyrovnávacej pamäte", + "cacheHitsSub": "z celkového počtu {total}", + "tokensSaved": "Ušetrené tokeny", + "tokensSavedSub": "Odhadované zo zásahov", + "hitRate": "Miera zásahov", + "performance": "Výkon vyrovnávacej pamäte", + "autoRefresh": "Automaticky sa obnovuje každých {seconds} s", + "hits": "Zásahy", + "misses": "Minutia", + "total": "Celkom", + "behavior": "Správanie vyrovnávacej pamäte", + "behaviorDeterministic": "Ukladajú sa do vyrovnávacej pamäte iba požiadavky bez streamovania s temperature=0.", + "behaviorBypass": "Obíďte pomocou hlavičky {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "Predvolená hodnota TTL: 30 minút. Nakonfigurujte ju pomocou {envVar}.", + "idempotency": "Vrstva idempotencie", + "activeDedupKeys": "Aktívne kľúče deduplikácie", + "dedupWindow": "Okno deduplikácie", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Vyrovnávaciu pamäť sa nepodarilo vymazať.", + "unavailable": "Vyrovnávacia pamäť nie je k dispozícii", + "unavailableDesc": "Nepodarilo sa načítať štatistiky vyrovnávacej pamäte. Uistite sa, že server je spustený.", "loadingCacheAria": "Načítavanie cache", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Vyrovnávacia pamäť promptov (na strane poskytovateľa)", + "semanticCache": "Sémantická vyrovnávacia pamäť", + "promptCacheSectionDesc": "Zobrazuje aktivitu ukladania promptov do vyrovnávacej pamäte na strane poskytovateľa z histórie používania, aby ste videli, kde je riadenie vyrovnávacej pamäte aktívne a koľko vstupov sa opätovne používa.", + "promptTrendDesc": "Hodinový objem požiadaviek, pokrytie vyrovnávacej pamäte a objem čítania z vyrovnávacej pamäte za posledných 24 hodín.", + "cachedRequests": "Požiadavky vo vyrovnávacej pamäti", + "cachedRequests24h": "Požiadavky vo vyrovnávacej pamäti (24 h)", + "cacheHitRate": "Miera zásahov do vyrovnávacej pamäte", + "cacheRate": "Miera využitia vyrovnávacej pamäte", + "cacheRateDesc": "z celkového počtu požiadaviek", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Metriky vyrovnávacej pamäte promptov", + "withCacheControl": "S riadením vyrovnávacej pamäte", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Pomer opätovného použitia vyrovnávacej pamäte", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Odhadované ušetrené náklady", + "lastUpdated": "Posledná aktualizácia", + "hoursTracked": "sledovaných hodín", + "busiestHour": "Najvyťaženejšia hodina", + "peakCacheRate": "Maximálna miera využitia vyrovnávacej pamäte", + "trendHour": "Hodina", + "activityVolume": "Aktivita", + "requestsShort": "požiadaviek", + "inputShort": "Vstup", + "cachedShort": "Vo vyrovnávacej pamäti", + "writeShort": "Zápis", + "resetting": "Obnovuje sa...", + "resetMetrics": "Obnoviť metriky", + "byProvider": "Rozdelenie podľa poskytovateľa", + "providerCacheRateDesc": "Každý poskytovateľ uvádza celkový počet vstupných tokenov, tokenov načítaných z vyrovnávacej pamäte a tokenov zapísaných do vyrovnávacej pamäte, aby ste mohli porovnať pomer opätovného použitia s nespracovanými súčtami.", "provider": "Provider", - "requests": "Requests", + "requests": "Požiadavky", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Trend vyrovnávacej pamäte (24 h)", + "peakCached": "Maximum uložených v pamäti", + "cached": "Vo vyrovnávacej pamäti", + "overview": "Prehľad", "tableProvider": "Poskytovateľ", "tableModel": "Model", "performanceTitle": "Výkon", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "Vlastná deterministická vyrovnávacia pamäť odpovedí OmniRoute. Keď je povolená, opakované požiadavky bez streamovania s temperature=0 možno obslúžiť lokálne bez kontaktovania nadradeného poskytovateľa.", + "semanticCacheDisabledDesc": "Sémantická vyrovnávacia pamäť je vypnutá. OmniRoute nebude opätovne používať lokálne odpovede, kým ju znova nezapnete v Nastaveniach.", + "semanticEntriesDesc": "Trvalo uložené záznamy sémantickej vyrovnávacej pamäte, ktoré sú momentálne uložené v SQLite. Aktivita vyrovnávacej pamäte promptov na strane poskytovateľa tu nie je uvedená.", + "searchEntries": "Hľadať záznamy...", + "search": "Hľadať", + "loading": "Načítava sa...", + "entriesLoadError": "Nepodarilo sa načítať záznamy sémantickej vyrovnávacej pamäte.", + "noEntries": "Nenašli sa žiadne záznamy vo vyrovnávacej pamäti", + "noPromptCacheData": "Zatiaľ nebola zaznamenaná žiadna aktivita vyrovnávacej pamäte promptov na strane poskytovateľa.", + "noTrendData": "Za posledných 24 hodín nebola zaznamenaná žiadna aktivita vyrovnávacej pamäte promptov.", + "signature": "Podpis", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", - "reasoningCache": "Reasoning Replay", + "created": "Vytvorené", + "expires": "Platnosť vyprší", + "actions": "Akcie", + "deduplicatedRequests": "Deduplikované požiadavky", + "savedCalls": "Ušetrené volania API", + "totalProcessed": "Celkový počet spracovaných požiadaviek", + "disabled": "Vypnuté", + "totalRequests": "Požiadavky celkovo", + "reasoningCache": "Opätovné prehratie uvažovania", "reasoningCacheDesc": "Zachováva modelové myslenie pre toky vyvolávania viacotáčkových nástrojov", "reasoningEntries": "Aktívne záznamy", "reasoningReplayRate": "Miera opakovania", "reasoningReplays": "Celkový počet prehratí", "reasoningCharsCached": "Postavy uložené vo vyrovnávacej pamäti", - "reasoningMisses": "Cache Misses", + "reasoningMisses": "Nenájdené záznamy vo vyrovnávacej pamäti", "reasoningByProvider": "Poskytovateľom", "reasoningByModel": "Podľa modelu", "reasoningRecentEntries": "Nedávne záznamy", @@ -10669,16 +10676,16 @@ "minutesAgo": "pred {minutes}m", "hoursAgo": "pred {hours}h", "daysAgo": "pred {days}d", - "entries": "Entries" + "entries": "Záznamy" }, "proxyConfigModal": { "levelGlobal": "globálne", "levelProvider": "Poskytovateľ", - "levelCombo": "Combo", + "levelCombo": "Kombinácia", "levelKey": "kľúč", "levelDirect": "Priame (bez proxy)", "titleGlobal": "Globálna konfigurácia proxy", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "Proxy {level} — {label}", "loading": "Načítava sa konfigurácia servera proxy...", "inheritingFrom": "Dedenie od", "source": "Zdroj", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "Vložte existujúci kľúč API Devin z autentifikovanej relácie Devin. Dostupnosť exportu kľúča a kroky sa líšia podľa verzie a účtu Devin.", "devinPasteDescription": "Poskytnite svoj WINDSURF_API_KEY (získaný pomocou `devin auth login`, alebo prostredníctvom príkazu \"Windsurf: Provide Auth Token\" v IDE Windsurf).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json zostavy Grok", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "API Kľúč / Token", "saving": "Ukladanie…", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Pripojte kurzorové IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Prihlásiť sa pomocou Cursor", + "tabImport": "Importovať token", + "loginDescription": "Otvorí prihlásenie Cursor v prehliadači. Funguje aj v Docker — schváľte ho v prehliadači hostiteľského systému a potom sa vráťte sem.", + "loginWithCursor": "Prihlásiť sa pomocou Cursor", + "startingLogin": "Spúšťa sa…", + "waitingApproval": "Čaká sa na schválenie prihlásenia Cursor…", + "openUrlHint": "Ak sa prehliadač neotvoril:", + "openLoginLink": "Otvoriť prihlasovaciu stránku", + "cancelLogin": "Zrušiť prihlásenie", "autoDetecting": "Automatické zisťovanie tokenov...", "readingFromCursor": "Čítanie z kurzorového IDE alebo kurzorového agenta", "tokensAutoDetected": "Tokeny boli úspešne automaticky zistené z Cursor IDE!", "cursorNotDetected": "Nebolo zistené IDE kurzora. Prilepte svoj token ručne.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Používate Docker? Uprednostnite prihlásenie cez Cursor. Automatický import z IDE a cursor-agent zvyčajne nie sú v kontajneri dostupné. Pozrite si docs/providers/CURSOR-DOCKER.md.", "accessToken": "Prístupový token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Obnovovací token", + "refreshTokenPlaceholder": "Voliteľné — umožňuje automatické obnovovanie tokenu", "required": "*", "accessTokenPlaceholder": "Prístupový token sa automaticky vyplní...", "machineId": "ID stroja", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Automatická detekcia tokenov zlyhala", "errorEnterToken": "Zadajte prístupový token", "errorImportFailed": "Import zlyhal", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Nepodarilo sa spustiť prihlásenie cez Cursor", + "errorLoginPoll": "Prihlásenie cez Cursor zlyhalo", + "errorLoginTimeout": "Časový limit prihlásenia cez Cursor vypršal — skúste to znova" }, "pricingModal": { "title": "Konfigurácia cien", @@ -10843,9 +10850,9 @@ "selectProxy": "Vybrať {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Importovať staršie údaje", + "bulkAssign": "Hromadne priradiť", + "addProxy": "Pridať proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,15 +10861,15 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Otestovať", + "edit": "Upraviť", + "delete": "Odstrániť", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", "labelType": "Typ", "labelFamily": "Rodina IP", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Automaticky (dual-stack)", "familyIpv4": "Iba IPv4", "familyIpv6": "Iba IPv6", "familyHint": "Rodina odchádzajúcich adries. Možnosť Auto zachová dual-stack; IPv4/IPv6 priradí toto proxy k danej rodine (zabraňuje úniku v4 pod proxy iba s IPv6).", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Zlyhalo", "successRate": "{rate} % úspechu", "avgLatency": "priemer {latency} ms", "assignmentsCount": "{count} úloh", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Opraviť", "relayAuthMissing": "chýba autorizácia", @@ -10924,7 +10931,7 @@ "bulkImport": "Hromadný import", "bulkImportTitle": "Hromadný import proxy", "bulkImportDescription": "Prilepte profily proxy pomocou formátu oddeleného zvislými čiarami. Jeden proxy na riadok. Existujúce proxy (rovnaký hostiteľ + port) budú aktualizované.", - "bulkImportParse": "Parse", + "bulkImportParse": "Analyzovať", "bulkImportImport": "Importovať servery proxy {count}", "bulkImportImporting": "Importuje sa...", "bulkImportParsed": "Analyzované servery proxy: {count}", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Stratégia rotácie", "poolStrategyHint": "round-robin cyklicky strieda členov v poradí; random vyberá rovnomerne; sticky drží jedného člena počas časového okna; latency-optimized vyberá najrýchlejšieho na základe záznamov.", "poolStrategyFailed": "Nepodarilo sa aktualizovať stratégiu rotácie", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Cyklické", "strategyRandom": "Náhodné", - "strategySticky": "Sticky", + "strategySticky": "Trvalé priradenie", "strategyLatency": "Optimalizované podľa latencie", "poolMembersLabel": "Členovia poolu ({count})", "poolNoMembers": "V tomto poole zatiaľ nie sú žiadne proxy servery.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "Výstupy: {exits, plural, one {# výstup} few {# výstupy} other {# výstupov}} · pripojenia: {connections, plural, one {# pripojenie} few {# pripojenia} other {# pripojení}} · najviac {max} na jednom výstupe · za posledných {hours} h", + "poolEgressObservationEmpty": "Za posledných {hours} h nebola zaznamenaná žiadna prevádzka", + "poolEgressObservationHint": "Počítané z denníka proxy za sledované obdobie: jedinečné výstupné IP adresy zaznamenané pre členov tohto fondu a pripojenia OmniRoute, ktoré ich použili. „Na jednom výstupe“ znamená počas sledovaného obdobia, nie súčasne. Blokovanie 429 pre jednotlivé IP adresy pozastaví iba pripojenia rovnakej rodiny poskytovateľov.", "poolRemove": "Odstrániť", "poolRemoveFailed": "Nepodarilo sa odstrániť proxy z poolu", "poolAddLabel": "Pridať proxy", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", + "endpoint": "Koncový bod", + "provider": "Poskytovateľ", "model": "Model", "accountKey": "Account Key", "autoAccounts": "Auto (počet účtov: {count})", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Odoslať", + "cancel": "Zrušiť", + "audioFile": "Zvukový súbor", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Vymazať všetko", + "request": "Požiadavka", + "response": "Odpoveď", + "transcription": "Prepis", + "copy": "Kopírovať", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Počet vygenerovaných obrázkov: {count}", "generatedImage": "Vygenerovaný obrázok {index}", - "save": "Save", + "save": "Uložiť", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Odpovede", "completions": "Dokončenia", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Vektorové reprezentácie", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Moderovanie", - "rerank": "Rerank", + "rerank": "Zmena poradia", "search": "Search", "webFetch": "Načítanie z webu" }, "conversationalChat": "Konverzačný rozhovor", "clearChat": "Vymazať chat", "typeMessagePlaceholder": "Napíšte správu... (Shift+Enter pre nový riadok)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Čet", + "tabCompare": "Porovnať", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Zostaviť", + "configPane": "Konfigurácia", + "systemPrompt": "Systémová výzva", + "systemPromptPlaceholder": "Ste nápomocný asistent.", + "modelPlaceholder": "napr. openai/gpt-4o", + "endpointLabel": "Koncový bod", + "parametersLabel": "Parametre", + "collapseConfig": "Zbaliť panel konfigurácie", + "expandConfig": "Rozbaliť panel konfigurácie", + "temperature": "Teplota", + "maxTokens": "Maximálny počet tokenov", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Penalizácia prítomnosti", + "frequencyPenalty": "Penalizácia frekvencie", "reasoningLabel": "Uvažovanie", "thinking": "Premýšľanie", "effort": "Úsilie", "effortDefault": "Predvolené", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Náhodné (nechajte prázdne)", + "presetsLabel": "Predvoľby", + "loadPreset": "Načítať predvoľbu", + "savePreset": "Uložiť predvoľbu", + "noPresets": "Žiadne predvoľby", + "presetNamePlaceholder": "Názov predvoľby", + "savingPreset": "Ukladá sa…", + "nameRequired": "Názov je povinný", + "failedToSavePreset": "Predvoľbu sa nepodarilo uložiť", + "improvePrompt": "Vylepšiť výzvu", + "improvingPrompt": "Vylepšuje sa…", + "improvePromptTitle": "Vylepšite svoju výzvu pomocou AI", + "setModelFirst": "Najprv nastavte model", "setModelInConfigFirst": "Najprv nastavte model na paneli Konfigurácia.", "improvePromptFailed": "Vylepšenie výzvy zlyhalo.", "improvePromptAria": "Vylepšiť výzvu pomocou AI", "confirmImprovePrompt": "Potvrdiť vylepšenie výzvy", "improvePromptDescription": "Týmto odošlete svoj aktuálny systémový prompt do na vygenerovanie vylepšenej verzie.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Týmto sa spotrebuje kvóta modelu nakonfigurovaného v časti Konfigurácia.", + "improveConfirm": "Vylepšiť", + "exportCode": "Exportovať kód", + "exportCodeTitle": "Exportovať kód", "exportShort": "Exportovať", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Nie je k dispozícii žiadny stav ihriska na export.", "closeExportModal": "Zavrieť modálne okno exportu", "close": "Zavrieť", "exportRealKeyWarning": "Bezpečnostné upozornenie: export bol zablokovaný — vo výstupe bol zistený skutočný API kľúč. Resetujte svoj API kľúč a skúste to znova.", @@ -11071,12 +11078,12 @@ "copyLangCode": "Kopírovať kód v jazyku {language}", "loadingPresets": "Načítava sa…", "loadPresetPlaceholder": "Načítať predvoľbu…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", + "copyCode": "Kopírovať", + "copiedCode": "Skopírované!", + "addModel": "+ Pridať model", + "runAll": "Spustiť všetko", + "cancelAll": "Zrušiť všetko", + "maxColumnsReached": "Maximálne {max} stĺpcov", "modelPlaceholderCompare": "Model (Cmd+K)…", "noModel": "Žiadny model", "statusLabel": "Stav: {status}", @@ -11095,29 +11102,29 @@ "waitingForResponse": "Čaká sa na odpoveď…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "odhad na strane klienta", + "tokensLabel": "Tokeny", + "costLabel": "Náklady", + "costEstimated": "(odhadované)", "ttftTitle": "Čas do prvého tokenu (odhad na strane klienta)", "tpsTitle": "Tokeny za sekundu (odhad na strane klienta)", "tokenCountsTitle": "Tokeny promptu ↑ / Tokeny dokončenia ↓", "estimatedCostTitle": "Odhadované náklady (presnosť nie je zaručená)", - "toolsLabel": "Tools", + "toolsLabel": "Nástroje", "toolsCount": "Nástroje ({count})", - "addTool": "Add tool", + "addTool": "Pridať nástroj", "editTool": "Upraviť nástroj {name}", "removeTool": "Odstrániť nástroj {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Názov funkcie", "toolNameRequiredPlaceholder": "Názov funkcie *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Opis (voliteľné)", "toolParamsLabel": "Parametre (schéma JSON)", "toolParamsJsonSchema": "Schéma JSON pre parametre", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parametre musia byť platný JSON", + "structuredOutputLabel": "Štruktúrovaný výstup", + "enableJsonMode": "Povoliť režim JSON", + "disableJsonMode": "Zakázať režim JSON", + "invalidJson": "Neplatný JSON", "jsonMode": "Režim JSON", "jsonModeDescription": "Vynúti response_format: json_schema", "schemaName": "Názov schémy", @@ -11125,7 +11132,7 @@ "jsonSchemaEditor": "Editor schémy JSON", "schemaValidated": "Schéma overená", "validateSchema": "Overiť schému", - "seed": "Seed", + "seed": "Počiatočná hodnota", "stopSequences": "Ukončovacie sekvencie", "stopSequencesPlaceholder": "napr. \"\\n\\n\" alebo \"END\"", "autoProvider": "Automaticky", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} stĺpcov", "addModelToCompare": "Pridajte stĺpec modelu na porovnanie", "modelsSimultaneously": "Až {max} modelov súčasne", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Prebieha…", + "runLabel": "Spustiť", + "enterToolResult": "Zadajte výsledok nástroja…", "build": { "step1Label": "Čo testovať?", "step2Label": "Konfigurovať", @@ -11207,7 +11214,7 @@ "play": "Prehrať", "query": "Dopyt", "numResults": "Maximálny počet výsledkov", - "prompt": "Prompt", + "prompt": "Výzva", "size": "Veľkosť", "duration": "Trvanie", "question": "Otázka", @@ -11221,7 +11228,7 @@ "noAudioUrl": "Odpoveď neobsahovala URL zvuku: {response}", "music": "Hudba", "embeddingSample": "OmniRoute smeruje požiadavky AI medzi viacerých poskytovateľov.", - "embedding": "Embedding", + "embedding": "Vkladanie", "imageSample": "Futuristické mesto pri západe slnka, filmové osvetlenie", "image": "Obrázok", "ttsSample": "Ahoj z OmniRoute. Toto je test prevodu textu na reč.", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Výsledok {number}", "noKeysFound": "Nenašli sa žiadne kľúče API. Pridajte kľúč v sekcii Kľúče.", "exampleLabel": "Príklad", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} vstupných / {tokensOut} výstupných tokenov", "defaultKey": "(predvolené)", "clear": "Vymazať", @@ -11250,73 +11257,73 @@ "stop": "Zastaviť" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "Nahrávanie", + "paused": "Pozastavené", + "pipelineLogsOn": "Protokoly pipeline zapnuté", + "pipelineLogsOff": "Protokoly pipeline vypnuté", + "updatingPipelineLogs": "Aktualizujú sa protokoly pipeline...", + "updatePipelineFailed": "Aktualizácia protokolovania pipeline zlyhala", + "capturePipeline": "Zachytávať dáta pipeline pre nové požiadavky", + "searchPlaceholder": "Hľadať modely, poskytovateľov, účty, API kľúče, kombinácie...", + "allProviders": "Všetci poskytovatelia", + "allModels": "Všetky modely", + "allAccounts": "Všetky účty", + "allApiKeys": "Všetky API kľúče", + "total": "Celkom", + "ok": "Úspešné", + "err": "Chyba", + "combo": "Kombinácia", + "keys": "Kľúče", + "shown": "Zobrazené", + "sortNewest": "Najnovšie", + "sortOldest": "Najstaršie", + "sortTokensDesc": "Tokeny ↓", + "sortTokensAsc": "Tokeny ↑", + "sortDurationDesc": "Trvanie ↓", + "sortDurationAsc": "Trvanie ↑", + "sortStatusDesc": "Stav ↓", + "sortStatusAsc": "Stav ↑", + "sortModelAsc": "Model A–Z", + "sortModelDesc": "Model Z–A", + "sortLogs": "Zoradiť záznamy", + "refresh": "Obnoviť", + "columnsLabel": "Stĺpce", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "V PREVÁDZKE", + "semantic": "Sémantická", + "upstream": "Nadradený server", + "semanticCacheHit": "Zásah sémantickej vyrovnávacej pamäte (obslúžené službou OmniRoute)", + "upstreamResponse": "Odpoveď upstream poskytovateľa", + "noApiKey": "Bez API kľúča", + "requestedRoutedTitle": "Požadovaný model {requested}, smerovaný ako {routed}", "statusFilters": { - "all": "All", + "all": "Všetky", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Úspešné", + "combo": "Kombinácia" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", + "status": "Stav", + "cacheSource": "Zdroj vyrovnávacej pamäte", "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "requested": "Požadovaný model", + "provider": "Poskytovateľ", + "protocol": "Protokol požiadavky", + "account": "Účet", + "apiKey": "API kľúč", + "combo": "Kombinácia", + "tokens": "Tokeny", "compressed": "Kompresia", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Trvanie", + "time": "Čas", + "conversation": "Konverzácia", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Načítavajú sa záznamy...", + "noLogs": "Zatiaľ žiadne záznamy. Vykonajte niekoľko volaní API a zobrazia sa tu.", + "noMatchingLogs": "Žiadne záznamy nezodpovedajú aktuálnym filtrom.", + "callLogsInfo": "Záznamy volaní sa ukladajú aj ako súbory JSON do {dataDir} a rotujú sa podľa {retentionDays} a {maxEntries}.", "loadMore": "Načítať viac", "loadingMore": "Načítava sa viac...", "correlationId": "ID korelácie", @@ -11372,7 +11379,7 @@ "upstreamCache": "Upstream (Poskytovateľ)", "ariaLabel": "Detail žiadosti o protokol", "completed": "Dokončené", - "upstreamStatus": "Upstream: {status}", + "upstreamStatus": "Nadradený server: {status}", "statusDiscrepancy": "OmniRoute vrátil {status}, aj keď poskytovateľ vrátil {provider}", "previousRequest": "Predchádzajúca žiadosť", "nextRequest": "Ďalšia požiadavka", @@ -11386,7 +11393,7 @@ "input": "Vstup", "totalIn": "Celkom Príjmy: {value}", "cacheRead": "Cache Čítanie: {value}", - "cacheWrite": "Cache Write: {value}", + "cacheWrite": "Zápis do vyrovnávacej pamäte: {value}", "compressed": "Komprimované: {from} → {to} ({percent}% ušetrené)", "output": "Výstup", "totalOut": "Celkový výstup: {value}", @@ -11394,7 +11401,7 @@ "requestedModel": "Požadovaný model", "requestProtocol": "Req Protokol", "cacheSource": "Cache Zdroj", - "modelPinning": "Model Pinning", + "modelPinning": "Pripnutie modelu", "activeModelPinning": "Aktívne — model vybraný pomocou pripevnenia relácie", "rotated": "Otočené: {initial} -> {final}", "apiKey": "API kľúč", @@ -11417,59 +11424,59 @@ "correlationId": "ID korelácie", "correlationIdValue": "ID korelácie: {id}", "detailedPayloadInfo": "Najprv povolte podrobné protokolovanie, ak chcete zobrazenie štyroch fáz klienta/poskytovateľa pre nové požiadavky.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Kopírovať všetko", + "copiedAll": "Všetko skopírované" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", + "filterAll": "Všetko", + "filterErrors": "Chyby", + "filterSuccess": "Úspešné", + "filterTimeout": "Časový limit", + "colStatus": "Stav", "colProxy": "Proxy", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "Typ", + "colLevel": "Úroveň", + "colProvider": "Poskytovateľ", + "colTarget": "Cieľ", + "colLatency": "Latencia", + "colClientIp": "IP klienta", + "colTime": "Čas", + "recording": "Zaznamenávanie", + "paused": "Pozastavené", + "searchPlaceholder": "Hľadať hostiteľa, poskytovateľa, cieľ, IP...", + "allTypes": "Všetky typy", + "allLevels": "Všetky úrovne", + "allProviders": "Všetci poskytovatelia", + "total": "celkom", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "CHYBA", + "timeoutShort": "ČAS. LIMIT", + "direct": "priamo", + "newest": "Najnovšie", + "oldest": "Najstaršie", + "latencyDesc": "Latencia ↓", + "latencyAsc": "Latencia ↑", + "refresh": "Obnoviť", + "columns": "Stĺpce", + "loadingProxyLogs": "Načítavajú sa denníky proxy...", + "noProxyLogs": "Zatiaľ nie sú k dispozícii žiadne denníky proxy. Nakonfigurujte proxy a uskutočnite volania API, aby sa tu zobrazili.", + "noMatchingLogs": "Aktuálnym filtrom nezodpovedajú žiadne denníky.", + "tlsFingerprint": "Odtlačok TLS pre Chrome 124", "colPublicIp": "Verejná IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "speech": "Reč", + "search": "Vyhľadávanie", + "images": "Obrázky", + "chat": "Čet", + "music": "Hudba", + "responses": "Odpovede", + "rerank": "Preusporiadanie", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Vektorové reprezentácie", + "transcription": "Prepis" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Beh", + "description": "Pozorovateľnosť v reálnom čase — 3-vrstvová odolnosť + relácie + upozornenia na kvóty", + "pause": "Pozastaviť", + "resume": "Pokračovať", + "refreshNow": "Obnoviť teraz", + "kpiSessions": "Relácie", + "kpiCircuits": "Ističe", + "kpiCooldowns": "Čakacie lehoty", + "kpiLockouts": "Blokovania", + "hintStickyBound": "{count} s pevnou väzbou", + "hintRecovering": "{count} sa zotavuje", + "hintAllHealthy": "všetko je v poriadku", + "hintOpen": "otvorené", + "hintConnsCooling": "pripojenia v čakacej lehote", + "hintModelsBlocked": "zablokované modely", + "resilienceTitle": "3-vrstvová odolnosť", + "resilienceSubtitle": "Zodpovedá zdokumentovanému modelu odolnosti", + "providersHealthy": "{percent} % poskytovateľov je v poriadku", + "layer": "Vrstva {n}", + "layer1Title": "Ističe poskytovateľov", + "layer1Desc": "Zastaví prenos k poskytovateľom, ktorí zlyhávajú na nadradenej úrovni", + "layer2Title": "Čakacie lehoty pripojení", + "layer2Desc": "Preskočí jeden nefunkčný účet alebo kľúč; ostatné pripojenia zostanú funkčné", + "layer3Title": "Blokovania modelov", + "layer3Desc": "Blokovania limitov požiadaviek pre jednotlivé modely; rovnaké pripojenie naďalej obsluhuje ostatné modely", + "badgeAffectedOf": "Ovplyvnených: {affected} z {total}", + "badgeCooling": "{count} v čakacej lehote", + "badgeLocked": "{count} zablokovaných", + "emptyCircuits": "Zatiaľ nie sú aktívne žiadne ističe", + "emptyCooldowns": "Nie sú aktívne žiadne čakacie lehoty pripojení", + "emptyLockouts": "Žiadne blokovania modelov", + "moreCooldowns": "+{count} ďalších čakacích lehôt", + "moreLockouts": "+{count} ďalších blokovaní", + "feedTitle": "Živý prehľad", + "feedSubtitle": "Posledných {count} udalostí", + "feedFilterAll": "Všetko", + "feedFilterCircuits": "Ističe", + "feedFilterCooldowns": "Čakacie lehoty", + "feedFilterLockouts": "Blokovania", + "feedFilterSessions": "Relácie", + "feedFilterQuotas": "Kvóty", + "feedClear": "Vymazať", + "feedEmptyWaiting": "Čaká sa na udalosti... (kontrola každých 5 s)", + "feedEmptyFiltered": "Tomuto filtru nezodpovedajú žiadne udalosti", + "sessionsTitle": "Aktívne relácie", + "sessionsSubtitle": "Odtlačky požiadaviek s pevnou väzbou (naživo)", + "sessionsActive": "{count} aktívnych", + "sessionsEmptyTitle": "Žiadne aktívne relácie", + "sessionsEmptyHint": "Relácie sa zobrazia, keď cez proxy začnú prúdiť požiadavky", + "tblSession": "Relácia", + "tblAge": "Vek", + "tblIdle": "Nečinnosť", + "tblReqs": "Požiadavky", + "tblBoundTo": "Naviazané na", + "topApiKeys": "Najpoužívanejšie kľúče API", + "quotaMonitorsTitle": "Monitory kvót", + "quotaMonitorsSubtitle": "Aktuálny stav kvóty pre časové okno každého účtu", + "openQuota": "Otvoriť kvóty", + "allQuotasHealthy": "Všetky kvóty sú v poriadku", + "statusExhausted": "VYČERPANÉ", + "statusAlerting": "UPOZORNENIE", + "statusError": "CHYBA", + "moreSuffix": "+{count} ďalších" }, "quotaShare": { "weightPercent": "Váha %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Zdieľanie kvót", + "description": "Zdieľajte kvóty poskytovateľov medzi kľúčmi API pomocou percentuálnych limitov", + "newPool": "Nový fond", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Konfigurácia je uložená v localStorage (zatiaľ nie je trvalo uložená na serveri). Vynucovanie limitu pre jednotlivé požiadavky zatiaľ nie je zapojené do spracovania proxy. Táto obrazovka umožňuje navrhnúť a vizualizovať rozdelenie kvóty; skutočné vynucovanie bude zavedené v budúcej verzii spolu s trvalým ukladaním do DB a zachytávaním volaní smerom k nadradeným službám.", + "kpiActivePools": "Aktívne fondy", + "kpiKeysAllocated": "Pridelené kľúče", + "kpiAvgUnallocated": "Priemerne nepridelené", + "kpiProvidersWithQuota": "Poskytovatelia s kvótou", + "emptyTitle": "Nie sú nakonfigurované žiadne fondy", + "emptyDescription": "Vytvorte fond a priraďte doň kľúče API, ktoré budú zdieľať časové okno kvóty poskytovateľa s percentuálnymi prideleniami.", + "loading": "Načítava sa…", + "removePool": "Odstrániť fond", + "removeConfirm": "Odstrániť tento fond?", + "pool": "Fond", + "used": "využité", + "allocationsCount": "Pridelenia ({count})", + "allocatedFree": "{allocated} % pridelených · {free} % voľných", + "noAllocations": "Zatiaľ nie sú pridelené žiadne kľúče", + "capLabel": "limit {value}", + "notTrackedYet": "(zatiaľ sa nesleduje)", + "policy": "Pravidlo", "apiKeyColumn": "Kľúč API", "weightColumn": "Váha", "fairShareShort": "férové", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "pevné", + "policySoft": "mierne", + "policyBurst": "nárazové", + "policyHardHint": "Zablokovať po vyčerpaní prideleného limitu kľúča", + "policySoftHint": "Povoliť prekročenie, iba upozorniť", + "policyBurstHint": "Povoliť dočasné čerpanie z voľného fondu", + "editAllocations": "Upraviť pridelenia", + "newPoolTitle": "Nový fond kvót", + "providerConnection": "Pripojenie poskytovateľa (účet)", + "selectConnection": "Vyberte pripojenie…", + "noEligibleConnections": "Žiadne pripojenia s údajmi o kvótach. Najprv ich obnovte na /dashboard/quota.", + "quotaWindow": "Obdobie kvóty", + "selectWindow": "Vyberte obdobie…", + "alreadyUsedSuffix": "(už použité)", + "windowReset": "Obnoviť", + "duplicatePoolError": "Fond pre toto pripojenie a obdobie už existuje", + "cancel": "Zrušiť", + "createPool": "Vytvoriť fond", + "editTitle": "Upraviť pridelenia", + "noKeysAdded": "Nie sú pridelené žiadne kľúče. Pridajte jeden nižšie.", + "totalLabel": "Celkom: {percent} %", + "totalExceeded": "⚠ presahuje 100 %", + "addKey": "+ Pridať kľúč…", + "equalSplit": "Rovnomerné rozdelenie", + "save": "Uložiť pridelenia", "betaPreviewLabel": "Beta – ukážka používateľského rozhrania.", "betaConfigSavedPrefix": "Konfigurácia je uložená v", "betaConfigSavedSuffix": "(zatiaľ nie je na serveri uložená). Presadzovanie limitu na žiadosť ešte nie je zapojené do proxy kanála. Táto obrazovka vám umožňuje navrhnúť a vizualizovať rozdelenie kvóty; skutočné presadzovanie pristane v budúcej iterácii s perzistenciou DB a odpočúvaním hovorov proti prúdu.", @@ -11618,7 +11625,7 @@ "burnRateExhaustsIn": "Vyčerpá sa o", "dimensionResetIn": "Obnoví sa o", "realConsumedColumn": "Spotrebované", - "deficitColumn": "Deficit", + "deficitColumn": "Nedostatok", "borrowingIndicator": "požičiavanie", "migratedFromLocalStorageNotice": "Fondy boli úspešne migrované z localStorage.", "policyCapAbsoluteLabel": "Absolútny limit", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "Základná URL", "endpointsCollapse": "Zbaliť", "endpointsExpand": "Rozbaliť", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Natívne pre Anthropic", "endpointsResponsesNote": "Odpovede OpenAI — codex/github", "endpointsWsNote": "WebSocket — iba codex", "betaText": "Zdieľanie kvót (Quota Share) je funkčné, ale očakávajú sa chyby. Našli ste nejakú? Nahláste ju, prosím.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "Táto skupina stále obsahuje fondy — najskôr ich priraďte inam alebo vymažte.", "ungroupedTitle": "Nezoskupené", "ungroupedHint": "Tieto fondy nie sú priradené k žiadnej známej skupine. Upravte fond a presuňte ho do skutočnej skupiny.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Tento fond sa nepodarilo odstrániť.", + "dismiss": "Zavrieť" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Pluginy", + "description": "Inštalácia a správa pluginov na rozšírenie funkcií OmniRoute", + "loading": "Načítavajú sa pluginy...", + "scanning": "Prebieha vyhľadávanie...", + "scanForPlugins": "Vyhľadať pluginy", + "noPlugins": "Nie sú nainštalované žiadne pluginy", + "noPluginsDescription": "Umiestnite adresáre pluginov do ~/.omniroute/plugins/ a kliknite na Vyhľadať.", + "activate": "Aktivovať", + "deactivate": "Deaktivovať", + "uninstall": "Odinštalovať", + "uninstallConfirm": "Odinštalovať plugin „{name}“?", + "pluginScanComplete": "Vyhľadávanie pluginov je dokončené", + "pluginScanFailed": "Skenovanie pluginov zlyhalo", + "activated": "{name} aktivovaný", + "deactivated": "{name} deaktivovaný", + "activateFailed": "Nepodarilo sa aktivovať {name}", + "deactivateFailed": "Nepodarilo sa deaktivovať {name}", + "uninstalled": "{name} odinštalovaný", + "uninstallFailed": "Nepodarilo sa odinštalovať {name}", + "configure": "Konfigurovať: {name}", + "configurePlugin": "Konfigurovať", + "noConfigSettings": "Tento plugin nemá žiadne konfigurovateľné nastavenia.", + "saving": "Ukladá sa...", + "saveConfiguration": "Uložiť konfiguráciu", + "configurationSaved": "Konfigurácia bola uložená", + "saveConfigurationFailed": "Konfiguráciu sa nepodarilo uložiť", + "pluginNotFound": "Plugin sa nenašiel", + "version": "Verzia", + "author": "Autor", + "description_label": "Popis", + "status": "Stav", + "enabled": "Povolené", + "disabled": "Zakázané", "installedTab": "Nainštalované", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Trhovisko", "marketplaceUrlLabel": "Vlastná URL adresa obchodu", "marketplaceUrlPlaceholder": "Ponechajte prázdne pre oficiálny register Omniroute", "saveMarketplaceUrl": "Uložiť a znova načítať", @@ -11729,7 +11736,7 @@ "verified": "Overené", "install": "Inštalovať", "installedFromMarketplace": "Plugin {name} bol nainštalovaný!", - "hooks": "Hooks" + "hooks": "Hooky" }, "quotaPlans": { "title": "Plány a kvóty", @@ -11937,7 +11944,7 @@ "maintenanceTitle": "Údržba a diagnostika", "maintenanceSubtitle": "Spustite autotest zachytávacej pipeline, vráťte späť zvyškový stav systému a preneste svoje nastavenie medzi počítačmi.", "orphanedStateWarning": "Predchádzajúca relácia zanechala stav systému (DNS spoof, CA alebo systémový proxy). Spustite Repair na jeho vyčistenie.", - "diagnose": "Diagnose", + "diagnose": "Diagnostikovať", "diagnosing": "Diagnostikuje sa…", "diagnoseHealthy": "Zachytávací kanál je v poriadku.", "diagnoseUnhealthy": "Zachytávací kanál má problémy:", @@ -12023,7 +12030,7 @@ "tokenFor": "Token pre {name}:", "shownOnce": "Tento token sa už znova nezobrazí. Bezpečne si ho uložte.", "dismiss": "Zavrieť", - "usage": "Usage", + "usage": "Využitie", "usageDescription": "Posielajte požiadavky na váš relay endpoint:", "tokenCount": "Relay tokeny ({count})", "loading": "Načítava sa...", @@ -12040,7 +12047,7 @@ "agentBridgeModeDesc": "Zachytávať prevádzku zo všetkých pripojených agentov IDE", "customHostsMode": "Vlastní hostitelia", "customHostsModeDesc": "Pridať konkrétnych hostiteľov na zachytávanie", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "HTTP proxy", "httpProxyModeDesc": "Použiť premennú prostredia HTTP_PROXY", "systemWideMode": "Celosystémovo", "systemWideModeDesc": "Zachytávať všetku systémovú prevádzku (pokročilé)", @@ -12057,7 +12064,7 @@ "resumeBtn": "Obnoviť", "clearBtn": "Vymazať", "exportHar": "Exportovať .har", - "recordSession": "REC", + "recordSession": "NAHR.", "stopSession": "Zastaviť", "liveBadge": "naživo", "offlineBadge": "offline", @@ -12091,7 +12098,7 @@ "llmApiKind": "Typ API", "llmModel": "Model", "llmMessages": "Správy", - "llmStream": "Stream", + "llmStream": "Tok", "llmMappedTo": "Namapované na", "llmCostEstimate": "Odhad nákladov", "systemProxyExitWarning": "Celosystémové proxy je stále aktívne — napriek tomu opustiť stránku?", @@ -12165,7 +12172,7 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "Kód CLI", "phrase": "Kódovacie nástroje, ktoré nasmerujete na OmniRoute", "flow": "Vy → CLI Code → OmniRoute → Poskytovateľ", "seeOther": "Pozrieť →" @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP Agenti", "phrase": "CLI nástroje, ktoré OmniRoute spúšťa ako backend na vykonávanie (obrátený tok)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Väčšina používateľov to môže ignorovať — použite iba vtedy, keď to integrácia vyžaduje.", "flow": "Klient → OmniRoute → spustenie CLI (stdio/ACP) → odpoveď", "seeOther": "Pozrieť →" } @@ -12371,11 +12378,11 @@ }, "omni-webhooks": { "name": "Webhooky", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Registrujte, zobrazujte, testujte a odstraňujte koncové body webhookov. Nakonfigurujte odbery udalostí (request.completed, request.failed, quota.exceeded atď.) a spravujte opakované pokusy o doručenie." }, "omni-mcp": { - "name": "MCP Server", - "description": "Connect to the OmniRoute MCP server (110 tools, 3 transports: SSE/stdio/HTTP). Covers routing, cache, compression, memory, skills, providers, and audit tools across 33 permission scopes." + "name": "Server MCP", + "description": "Pripojte sa k serveru OmniRoute MCP (110 nástrojov, 3 transporty: SSE/stdio/HTTP). Zahŕňa smerovanie, vyrovnávaciu pamäť, kompresiu, pamäť, zručnosti, poskytovateľov a nástroje auditu v rámci 33 rozsahov oprávnení." }, "omni-agents-a2a": { "name": "Agenti a protokol A2A", @@ -12390,15 +12397,15 @@ "description": "Hlavné koncové body inferencie kompatibilné s OpenAI: dopĺňanie chatu, embeddingy, obrázky, zvuk (TTS/STT), moderovanie, rerank a Responses API. Primárne integračné rozhranie pre AI agentov." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Spustiť server", "description": "Spúšťajte, zastavujte a reštartujte server OmniRoute z CLI. Spravujte režim démona, konfiguráciu portov, automatické obnovenie, integráciu do systémovej lišty a skratku na otvorenie panela." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Stav", "description": "Kontrolujte stav servera, stav komponentov a živé metriky z CLI. Spustite `health`, `health components` a `health watch` pre zobrazenie panela ističov a stavu poskytovateľov v reálnom čase." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Poskytovatelia", "description": "Spravujte pripojenia poskytovateľov z CLI: zoznam dostupných/nakonfigurovaných poskytovateľov, pridať, testovať, test-all, validate, rotovať API kľúče a zobraziť metriky pre jednotlivých poskytovateľov." }, "cli-keys": { @@ -12410,7 +12417,7 @@ "description": "Dopytujte dostupné modely AI, zobrazujte zoznam aliasov modelov a prehliadajte celý katalóg modelov z CLI. Filtrujte podľa poskytovateľa, vyhľadávajte podľa schopností a riešte varianty názvov modelov." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Čet", "description": "Odosielajte dopĺňania chatu, streamujte odpovede a spustite interaktívnu reláciu REPL z CLI. Podporuje všetkých poskytovateľov OmniRoute, kombinované smerovanie a konfiguráciu systémových výziev." }, "cli-routing": { @@ -12496,7 +12503,7 @@ "crossLinkLabel": "Pochopte rozdiel →" }, "comparison": { - "colAgent": "Agent Skills", + "colAgent": "Zručnosti agentov", "colOmni": "Omni Skills", "whatIs": { "label": "Čo to je", @@ -12535,7 +12542,7 @@ "categoryConfig": "Konfigurácia", "filterAll": "Všetko", "coverageLabel": "Pokrytie", - "mcpUrl": "MCP URL", + "mcpUrl": "URL MCP", "a2aLink": "A2A", "mcpPrompt": "Pridajte tento koncový bod MCP do svojho agenta, aby ste mu poskytli 37 nástrojov OmniRoute.", "a2aPrompt": "Zaregistrujte túto kartu agenta vo svojom orchestrátore, aby ste povolili delegovanie úloh A2A.", @@ -12575,7 +12582,7 @@ "colScore": "Skóre", "colAvgScore": "Priemerné skóre", "colModels": "Modely", - "colType": "Type", + "colType": "Typ", "filterConfiguredOnly": "Iba nakonfigurované", "filterAvailableOnly": "Iba dostupné", "filterAvailableOnlyHelp": "Skryť poskytovateľov, ktorých všetky pripojenia majú obmedzenú frekvenciu požiadaviek alebo vyčerpanú kvótu.", @@ -12589,14 +12596,14 @@ "typeApikey": "API kľúč", "sortTypeFirst": "Najjednoduchšie ako prvé", "sortTypeFirstHelp": "Zoskupiť podľa náročnosti registrácie (Bez registrácie → Prihlásenie cez OAuth → API kľúč), so zachovaním poradia kvality v rámci každej skupiny", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Najspoľahlivejší ako prvý", + "sortByReliabilityHelp": "Zoraďte poskytovateľov podľa podielu úspešných volaní vo vybranom časovom období. Poskytovatelia s príliš malým počtom volaní na určenie miery si zachovajú poradie podľa skóre pod poskytovateľmi s nameranou mierou.", "typeLegend": "Bez registrácie = nulové nastavenie · Prihlásenie cez OAuth = prihlásenie pomocou vlastného účtu · API kľúč = vlastný kľúč alebo bezplatný program daného poskytovateľa", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Spoľahlivosť", + "colReliabilityHelp": "Podiel volaní, na ktoré tento poskytovateľ skutočne odpovedal za posledných 24 hodín. Pomlčka znamená, že obslúžil príliš málo prevádzky na určenie miery.", + "reliabilitySample": "Za posledných {hours} h bolo úspešných {successes} z {requests} volaní", + "reliabilityTooFew": "Za posledných {hours} h bolo iba {requests} volaní — príliš málo na určenie miery", + "reliabilityNoTraffic": "Za posledných 24 h neboli zaznamenané žiadne volania" }, "discovery": { "title": "Vyhľadávanie poskytovateľov", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Podporovateľ Radaru", + "description": "Overený aktívny kanál podporovateľa OmniRoute Radar", + "criteria": "Overte podpísaný aktívny kanál podporovateľa Radaru." }, "first-token": { "name": "Prvý token", @@ -12846,7 +12853,7 @@ "security": "Bezpečnosť", "network": "Sieť", "policies": "Zásady", - "runtime": "Runtime", + "runtime": "Behové prostredie", "cli": "CLI", "health": "Stav", "requiresRestart": "Vyžaduje reštart" @@ -12859,72 +12866,72 @@ "ccDiscoveryAliasesEnvWarning": "Aktívne prostredníctvom premennej prostredia (EXPOSE_CC_DISCOVERY_ALIASES) — toto prepisuje akékoľvek prepínače na paneli nižšie.", "resetFlag": "Resetovať {label} na predvolené", "reset": "Resetovať", - "loadFailed": "Failed to load feature flags", - "updateFailedHttp": "Failed to update flag: HTTP {status}", - "updateFailed": "Failed to update flag", - "restartFailedHttp": "Restart failed: HTTP {status}", - "restartFailed": "Restart failed", - "resetOverridesFailedHttp": "Failed to reset overrides: HTTP {status}", - "resetOverridesFailed": "Failed to reset overrides", + "loadFailed": "Nepodarilo sa načítať príznaky funkcií", + "updateFailedHttp": "Nepodarilo sa aktualizovať príznak: HTTP {status}", + "updateFailed": "Nepodarilo sa aktualizovať príznak", + "restartFailedHttp": "Reštartovanie zlyhalo: HTTP {status}", + "restartFailed": "Reštartovanie zlyhalo", + "resetOverridesFailedHttp": "Obnovenie prepísaných nastavení zlyhalo: HTTP {status}", + "resetOverridesFailed": "Obnovenie prepísaných nastavení zlyhalo", "restartRequiredCount": "{count, plural, one {# zmena vyžaduje} few {# zmeny vyžadujú} other {# zmien vyžaduje}} reštart servera, aby sa prejavili.", "restartRequiredDescription": "Tieto príznaky sa uplatnia až po reštartovaní procesu. Reštartujte teraz alebo pokračujte v úpravách — čakajúce príznaky zostanú v rade, kým ich nepotvrdíte.", - "restartServer": "Restart Server", - "cancel": "Cancel", - "restarting": "Restarting…", - "confirmRestart": "Confirm Restart", + "restartServer": "Reštartovať server", + "cancel": "Zrušiť", + "restarting": "Reštartuje sa…", + "confirmRestart": "Potvrdiť reštartovanie", "restartViewDescription": "Tieto príznaky nadobudnú účinnosť až po reštartovaní servera. Prepínajte ich ako akékoľvek iné príznaky — zmena sa uloží okamžite, ale nová hodnota sa načíta až pri spustení procesu. Na uplatnenie použite banner Restart Server vyššie.", - "retry": "Retry", - "noSearchResults": "No flags match your search", - "resetAllOverrides": "Reset All Overrides", + "retry": "Skúsiť znova", + "noSearchResults": "Žiadne príznaky nezodpovedajú vášmu vyhľadávaniu", + "resetAllOverrides": "Obnoviť všetky prepísané nastavenia", "confirmResetOverrides": "Resetovať všetky prepísania DB ({count})?", - "resetting": "Resetting...", - "confirmReset": "Confirm Reset", + "resetting": "Obnovuje sa...", + "confirmReset": "Potvrdiť obnovenie", "enumValues": { - "off": "Off", - "warn": "Warn", - "block": "Block", - "redact": "Redact", - "disabled": "Disabled", - "dual": "Dual", + "off": "Vypnuté", + "warn": "Upozorniť", + "block": "Blokovať", + "redact": "Redigovať", + "disabled": "Zakázané", + "dual": "Duálny", "alias": "Alias", - "canonical": "Canonical" + "canonical": "Kanonický" }, "definitions": { "REQUIRE_API_KEY": { - "description": "Require an API key for all incoming requests." + "description": "Vyžadovať kľúč API pre všetky prichádzajúce požiadavky." }, "INPUT_SANITIZER_ENABLED": { - "description": "Enable input sanitization for all requests." + "description": "Povoliť sanitizáciu vstupu pre všetky požiadavky." }, "INJECTION_GUARD_MODE": { - "description": "Set the prompt-injection guard mode." + "description": "Nastaviť režim ochrany pred vložením škodlivých inštrukcií do promptu." }, "PII_REDACTION_ENABLED": { - "description": "Redact personally identifiable information from requests." + "description": "Redigovať osobné identifikačné údaje z požiadaviek." }, "PII_RESPONSE_SANITIZATION": { - "description": "Sanitize personally identifiable information in provider responses." + "description": "Sanitizovať osobné identifikačné údaje v odpovediach poskytovateľov." }, "PII_RESPONSE_SANITIZATION_MODE": { - "description": "Choose how response PII is handled: redact replaces it, warn only logs it, block rejects the response, and off disables sanitization." + "description": "Vyberte spôsob spracovania osobných identifikačných údajov v odpovediach: redigovanie ich nahradí, upozornenie ich iba zaznamená, blokovanie odmietne odpoveď a vypnutie zakáže sanitizáciu." }, "OUTBOUND_SSRF_GUARD_ENABLED": { - "description": "Block outbound requests to private or internal IP ranges." + "description": "Blokovať odchádzajúce požiadavky smerujúce na súkromné alebo interné rozsahy IP adries." }, "ALLOW_API_KEY_REVEAL": { - "description": "Allow authenticated dashboard users to reveal stored API keys instead of seeing masked values only." + "description": "Umožniť overeným používateľom ovládacieho panela zobraziť uložené kľúče API namiesto toho, aby videli iba maskované hodnoty." }, "ENABLE_TLS_FINGERPRINT": { - "description": "Enable TLS fingerprint stealth mode." + "description": "Povoliť režim utajenia odtlačku TLS." }, "ONEPROXY_ENABLED": { - "description": "Enable request proxying through 1proxy." + "description": "Povoliť smerovanie požiadaviek cez 1proxy." }, "PROXY_AUTO_SELECT_ENABLED": { - "description": "When no proxy is assigned to a connection, automatically select the first working registry proxy. Off by default because otherwise one registry proxy becomes a global fallback for all traffic (#3332)." + "description": "Ak pripojeniu nie je priradený žiadny proxy server, automaticky vybrať prvý funkčný proxy server z registra. Predvolene vypnuté, pretože inak sa jeden proxy server z registra stane globálnou záložnou voľbou pre všetku prevádzku (#3332)." }, "OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK": { - "description": "Allow OAuth and provider-validation flows to bypass a pinned proxy when proxy reachability checks fail. Off by default because this can change the account egress IP." + "description": "Umožniť tokom OAuth a overovania poskytovateľa obísť pripnutý proxy server, keď kontroly dostupnosti proxy servera zlyhajú. Predvolene vypnuté, pretože to môže zmeniť výstupnú IP adresu účtu." }, "MITM_DISABLE_TLS_VERIFY": { "description": "Zakázať overovanie TLS certifikátov pre MITM proxy." @@ -12948,8 +12955,8 @@ "description": "Povoliť viacero pripojení pre každý uzol kompatibility." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Zakázať kontroly kontextového okna", + "description": "Vynechať lokálnu kontrolu kontextového okna a maximálneho počtu vstupných tokenov v OmniRoute pri priamych požiadavkách na jeden model. Poskytovatelia naďalej vynucujú svoje skutočné limity. Kompresia promptu a obmedzenia výstupných tokenov zostávajú aktívne." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Odstrániť interné výstupné položky fázy komentárov z prechodových streamov Responses API pred ich preposlaním klientom. Zakážte tento príznak, ak chcete prijímať nespracované komentáre z upstreamu." @@ -12985,7 +12992,7 @@ "description": "Povoliť obnovenie streamu na opätovné vyžiadanie odpovede a jej spojenie po tom, čo bajty už dorazili ku klientovi." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Zabezpečte bezpečné pokračovanie volania nástroja uprostred streamu: nikdy neobnovujte prerušený stream po odoslaní volania nástroja (či už stále prebieha, alebo už bolo dokončené) a po jednom prázdnom pokračovaní sa zastavte namiesto využitia celého limitu opakovaných pokusov." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Jednorazovo prepnúť na sesterské pripojenie, keď sa stream zatvorí pred odoslaním akéhokoľvek užitočného rámca a obmedzený opakovaný pokus na tom istom pripojení je vyčerpaný. Ak nie je k dispozícii použiteľné sesterské pripojenie, vráti sa pôvodná chyba early-EOF. Vypnuté: early-EOF zostáva po opakovanom pokuse konečný." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Povoliť sieťový prístup v sandboxe zručností." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Nástrojová slučka riadená serverom", + "description": "Pokračovať v nestreamovaných volaniach nástrojov riadených serverom, kým model nevráti odpoveď použiteľnú klientom." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Pôvod hodnoty Retry-After", + "description": "Pri agregovaných odpovediach 429/503 o nedostupnosti vynechajte Retry-After, ak nie je známy konkrétny budúci čas opakovania, namiesto odoslania syntetickej hodnoty 1 s; pridajte error.retry_after_provenance a načítavajte textové pokyny na opakovanie na cestách vyprázdňovania kombinácie." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Zastavenia infraštruktúry s chránenou prioritou ako 502", + "description": "Odpovedzte kódom 502 namiesto 503, keď prioritný cieľ so záložnou možnosťou iba pri vyčerpaní kvóty zastaví kombináciu z dôvodu, ktorý preukázateľne nesúvisí s kvótou: otvorený istič poskytovateľa alebo prediktívne preskočenie z dôvodu latencie." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Stav kombinácie", "callLogs": "Záznamy volaní", "costs": "Náklady", - "playground": "Playground", + "playground": "Experimentálne prostredie", "nestedCombo": "Vnorená kombinácia", "modelTarget": "Cieľový model", "weight": "{value}% váha", @@ -13171,7 +13182,7 @@ "segmentHint": "Každý segment = jeden bezplatný pool · deduplikované podľa poolov, poctivé počítanie (žiadne nafúknuté stropy limitov).", "boost": "Odomknite o ~{tokens} viac/mes. jednorazovým dobitím 10 $ na OpenRouter (50 → 1000 požiadaviek/deň)", "uncapped": "Trvalo zadarmo, bez zverejneného limitu (obmedzená rýchlosť) — skutočný prístup, nezapočítaný v hlavnom prehľade:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "O ~{tokens}/mes. viac po regionálnom overení identity (napr. overenie skutočného mena v pevninskej Číne) — skutočná kvóta, ktorá sa nezapočítava do uvádzaného hlavného údaja:", "tosRestricted": "{count, plural, one {# model označený ako obmedzený podmienkami ToS} few {# modely označené ako obmedzené podmienkami ToS} other {# modelov označených ako obmedzené podmienkami ToS}} — rozhodnutie je na vás", "provider": "Poskytovateľ", "model": "Model", @@ -13224,7 +13235,7 @@ "down": "nedostupné" }, "severity": { - "info": "info", + "info": "informácie", "warning": "upozornenie", "critical": "kritické" }, @@ -13270,80 +13281,80 @@ "viewFullHistory": "Zobraziť celú históriu na GitHube" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", + "title": "Pravidlá smerovania uvažovania", + "apiKeyTitle": "Smerovanie uvažovania pre tento API kľúč", + "subtitle": "Presmerujte modely a mieru úsilia pri uvažovaní bez potreby podpory zo strany klienta. Ak sa nezhoduje žiadne pravidlo, požiadavky zostanú nezmenené.", + "loadError": "Pravidlá uvažovania sa nepodarilo načítať.", + "saveError": "Pravidlo je neplatné alebo ho nebolo možné uložiť.", + "saved": "Pravidlo uvažovania bolo uložené.", + "deleteConfirm": "Odstrániť toto pravidlo uvažovania?", + "deleteError": "Pravidlo uvažovania sa nepodarilo odstrániť.", + "empty": "Nie sú nakonfigurované žiadne zodpovedajúce pravidlá uvažovania.", + "all": "Všetky", + "any": "Ľubovoľné", + "enabled": "Povolené", + "disabled": "Zakázané", + "filterSearch": "Hľadať pravidlá", + "filterScope": "Filtrovať podľa rozsahu", + "filterStatus": "Filtrovať podľa stavu", + "allModels": "všetky modely", + "keepModel": "Ponechať model", + "otherModel": "Iný model", + "combo": "Kombinácia", + "priorityShort": "priorita {value}", + "toggleAria": "Povoliť {name}", + "edit": "Upraviť", + "delete": "Odstrániť", + "name": "Názov", + "description": "Popis", + "scopeLabel": "Rozsah", + "apiKey": "API kľúč", + "sourceCombo": "Zdrojová kombinácia", + "connection": "Pripojenie", + "sourceModel": "Zdrojový model alebo zástupný znak", + "sourceModelOptional": "Prázdne = všetky modely", + "sourceModelExample": "napr. gpt-5*", + "sourceEffort": "Zdrojové úsilie", + "missing": "Neurčené", + "signalOnly": "Nediskrétny signál uvažovania", + "requestTags": "Značky požiadavky", + "requestTagsExample": "programovanie, interné", + "tagMode": "Zhoda značiek", + "effortMode": "Režim úsilia", + "targetEffort": "Cieľové úsilie", + "routingTarget": "Cieľ smerovania", + "targetModel": "Cieľový model", + "targetCombo": "Cieľová kombinácia", + "budgetAction": "Rozpočet na premýšľanie", + "budgetTokens": "Tokeny rozpočtu", + "priority": "Priorita", + "saveChanges": "Uložiť zmeny", + "add": "Pridať pravidlo", + "cancel": "Zrušiť", + "simulateTitle": "Simulovať pravidlo", "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "effort": "Úsilie", + "transport": "Prenos", + "simulate": "Simulovať bez nadradenej služby", + "extendedComboWarning": "Podpora Max/Ultra sa počas smerovania overuje samostatne pre každý cieľ kombinácie.", + "extendedUnknownWarning": "Zadajte cieľový model na overenie podpory Max/Ultra.", + "extendedUnsupportedWarning": "Je známe, že Max/Ultra podporujú iba vhodné modely Codex GPT-5.6. Neznáme vlastné modely server prijme s upozornením.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", + "global": "Globálne", + "apiKey": "Kľúč API", + "combo": "Kombinácia", "model": "Model", - "connection": "Connection" + "connection": "Pripojenie" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Prevziať z klienta", + "default": "Použiť predvolené", + "force": "Vynútiť" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Zachovať", + "remove": "Odstrániť", + "set": "Nastaviť pevnú hodnotu" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "Naživo (v reálnom čase)", "tierCommunity": "Komunita (30-dňové oneskorenie)", "activateTitle": "Aktivovať Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Porovnajte komunitný a živý prístup, zistite, aké údaje si vaša inštalácia vymieňa, a potom vyberte spôsob aktivácie služby Radar.", + "accessScaleTitle": "Pred aktiváciou sa oboznámte s prístupom k službe Radar", + "accessScaleIntro": "Radar zostáva bez sieťovej aktivity, kým sa výslovne neprihlásite. Po oboznámení sa s týmito pravidlami si vyberte komunitný prístup alebo aktivujte osobný kľúč podporovateľa.", + "accessCommunityRule": "Komunitný prístup — bez potreby kľúča: úplný katalóg s 30-dňovým oneskorením.", + "accessSingleUseRule": "Hviezdička + sledovanie — keď GitHub OAuth overí oboje, váš účet GitHub získa jedno načítanie živého katalógu; potom sa prístup vráti na komunitnú úroveň. Tento jednorazový prístup nemožno pre daný účet vydať znova.", + "accessContributorRule": "Prispievatelia — zlúčené PR, commity a riadky určujú iba poradie v týždennom rebríčku. Prvých 10 získa 365 dní; umiestnenia 11–100 získajú 90 dní; prispievatelia mimo prvej stovky nezískajú žiadny prístup bez ohľadu na počet PR. Vypadnutie z rebríčka nikdy neskráti už udelené obdobie.", + "accessSupporterRule": "Podporovatelia — jednorazové nákupy poskytujú 6 mesiacov, 1 rok alebo doživotný prístup bez automatického obnovenia. Nákupy, dary, obdobia pre prispievateľov a manuálne udelenia sa sčítavajú; doživotný prístup má vždy prednosť.", + "accessUseTitle": "Osobné použitie, obnovenie a kontrola", + "accessInstallationRule": "Osobná licencia — kľúč používajte vždy iba v jednej aktívnej inštalácii. OmniRoute nevytvára odtlačok hardvéru. Obnovenie zruší a nahradí stratený kľúč bez zmeny dátumu jeho platnosti.", + "accessAbuseRule": "Kontrola zneužitia — 4. odlišná IP adresa v priebehu 24 hodín iba vytvorí príznak na manuálnu kontrolu; nikdy automaticky nezablokuje ani nezruší kľúč.", + "accessOffersRule": "Aktuálne ponuky sú vyberané manuálne a môžu sa zmeniť alebo vypršať.", + "privacyTitle": "Aké údaje si Radar vymieňa", + "privacyDownloadsRule": "Sťahuje — vaša inštalácia prijíma kryptograficky podpísaný katalóg a metadáta odporúčaní; platný aktívny kľúč tiež odomkne podpísané ponuky a Intel.", + "privacySendsRule": "Odosiela — synchronizácia na strane servera odosiela kľúč podporovateľa ako Bearer token a infraštruktúra HTTPS prijíma IP adresu pripojenia. Pri evidencii požiadaviek na zdroj sa žiadna z týchto hodnôt neukladá v nespracovanej podobe: uchovávajú sa haše kľúčov, súhrnné údaje o používaní a denne obmieňaný skrátený HMAC IP adresy na kontrolu zneužitia.", + "privacyNeverRule": "Nikdy sa nezhromažďujú — zadania, odpovede, konverzácie, prihlasovacie údaje poskytovateľov, prevádzka modelov, dostupnosť, latencia ani lokálna konfigurácia poskytovateľov sa nikdy neodosielajú do Radar.", + "activateButton": "Aktivovať Community", "activating": "Aktivujem...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Už máte kľúč podporovateľa?", + "keyInvalidFormatError": "Neplatný formát kľúča. Musí sa začínať na „omr_“ a za tým musí nasledovať 40 hexadecimálnych znakov.", + "activateWithKeyButton": "Aktivovať podporovateľa", + "changeKeyButton": "Zmeniť kľúč", + "claimSectionTitle": "Ešte nemáte kľúč podporovateľa?", + "contributorButton": "Som prispievateľ", + "contributorHint": "GitHub OAuth kontroluje aktuálne týždenné poradie: prvých 10 získa 365 dní a umiestnenia 11–100 získajú 90 dní. Samotný počet PR nikdy neudeľuje prístup mimo prvej stovky.", + "supporterButton": "Podporiť projekt", + "supporterHint": "Jednorazové možnosti na 6 mesiacov, 1 rok a doživotne sa automaticky neobnovujú; oprávnené obdobia sa sčítavajú a doživotná možnosť má prednosť.", "colProvider": "Poskytovateľ", "colModel": "Model", "colQuota": "Kvóta", + "colLimits": "Limity požiadaviek", + "trainsOnPrompts": "Trénuje na zadaniach", + "trainsOnPromptsHelp": "Podmienky tohto poskytovateľa uvádzajú, že môže trénovať na zadaniach, ktoré odošlete. Modely bez tohto označenia buď uvádzajú, že tak nerobia, alebo to nezdokumentovali — absencia vyjadrenia nie je zárukou.", + "limitsUnknownHelp": "Limity uvádzané iba zdrojom Radar; pre túto položku nie sú zverejnené žiadne limity", + "contextUnknownHelp": "Kontextové okno tejto položky nie je známe", + "capabilityUnknownHelp": "Zdroj túto schopnosť neuvádza", "colContext": "Kontext", "colCapabilities": "Schopnosti", "colTos": "Riziko zmluvných podmienok", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "nové", "setupGuide": "Návod na nastavenie", "disabledByFeed": "Deaktivované príspevkom Radar", "capTools": "Nástroje", "capVision": "Vízia", "capThinking": "Premýšľanie", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalóg", + "freeCreditsTab": "Bezplatné kredity", + "freeCreditsSubtitle": "Odkazy na odporúčania od poskytovateľov sledovaných službou Radar — ich použitie vás nebude stáť nič navyše a pomôže podporiť OmniRoute.", + "fixedLinksEmpty": "Zatiaľ nie sú k dispozícii žiadne odkazy na odporúčania. Synchronizujte Radar a skontrolujte aktualizácie.", + "requiredActionLabel": "Čo treba urobiť:", + "claimButton": "Získať kredity", + "campaignsTitle": "Časovo obmedzené kampane", + "campaignsEmpty": "Momentálne nie sú aktívne žiadne kampane — skúste to znova neskôr.", + "campaignsUpsellCommunity": "Časovo obmedzené kampane sú bonusom pre podporovateľov. Všetky stále odkazy na tejto stránke zostávajú bezplatné pre každého.", + "campaignsValidUntil": "Platné do {date}", + "colActions": "Akcie", + "localBadge": "lokálne", + "editModel": "Upraviť", + "saveModel": "Uložiť", + "cancelEdit": "Zrušiť", + "resetModel": "Obnoviť lokálne zmeny", + "hideModel": "Skryť", + "restoreModel": "Obnoviť", + "hiddenModelsTitle": "Skryté modely", + "modelDisplayName": "Lokálny zobrazovaný názov", + "modelEnabled": "Lokálne povolené", + "localStateSaveFailed": "Nepodarilo sa uložiť lokálne nastavenia Radar", + "guidedCombos": "Riadené kombinácie", + "offers": "Ponuky", + "intel": "Informácie" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Riadené kombinácie Radar", + "subtitle": "Vytvorte prioritné záložné možnosti z rovnocenných bezplatných modelov vybraných službou Radar.", + "backToRadar": "Späť na Radar", + "loading": "Načítavajú sa návrhy kombinácií...", + "familyLabel": "Rodina modelov", + "modelsLabel": "Poradie priorít", + "strategyReason": "Priorita najprv využije najväčší pravidelne sa obnovujúci bezplatný rozpočet a potom prejde na záložné možnosti medzi aktívnymi poskytovateľmi.", + "generateButton": "Vygenerovať kombináciu", + "generating": "Generuje sa...", + "alreadyCreated": "Už vytvorené", + "created": "Kombinácia bola vytvorená", + "noSuggestions": "Žiadna vhodná rodina modelov momentálne nemá aktívne pripojenia aspoň k dvom poskytovateľom.", + "catalogRequired": "Najprv synchronizujte katalóg Radar, aby sa načítali vybrané rodiny modelov.", + "loadFailed": "Nepodarilo sa načítať návrhy kombinácií Radar.", + "createFailed": "Kombináciu sa nepodarilo vytvoriť. Skontrolujte pripojenia k poskytovateľom a skúste to znova." }, "radarSetupPage": { "title": "Nastavenie poskytovateľa", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "Odolnosť Pripojenia", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Vaše pripojenia sa obnovia automaticky", + "reassuranceDetail": "Zvyčajne nie je potrebná žiadna akcia. OmniRoute po zlyhaniach pripojenie dočasne pozastaví a potom ho bezpečne skúsi znova.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Požiadavky možno odosielať", + "coolingDown": "Čoskoro sa zopakuje pokus", + "lockedOut": "Vyžaduje vašu pozornosť" }, "table": { "status": "Stav", @@ -13551,11 +13562,11 @@ "connectionId": "Pripojenie", "authType": "Autentifikácia", "backoffLevel": "Odklad", - "cooldown": "Cooldown", + "cooldown": "Čas čakania", "lastError": "Posledná Chyba", "lockouts": "Uzamknutia", "healthy": "Zdravé", - "coolingDown": "Cooldown", + "coolingDown": "Čas čakania", "circuitOpen": "Obvod Otvorený", "recovering": "Zotavuje sa", "degraded": "Zhoršené", @@ -13566,9 +13577,9 @@ "timeline": { "title": "Prechody Ističa", "window": "Okno", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 h", + "window6h": "6 h", + "window24h": "24 h", "empty": "Žiadne prechody vo vybranom okne", "currentState": "Aktuálny Stav", "state": { @@ -13589,7 +13600,7 @@ "detail": { "title": "Detail Pripojenia", "metadata": "Metadáta", - "cooldown": "Cooldown", + "cooldown": "Čas čakania", "lastError": "Posledná Chyba", "breaker": "Istič", "lockouts": "Uzamknutia Modelu", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Zamietnuť požiadavky pred odoslaním, keď cieľový model postráda požadované schopnosti (vízia, nástroje, štruktúrovaný výstup, kontextové okno). Chráni priamu požiadavku od jedného poskytovateľa, ktorá obchádza filter kompatibility kombinovanej vrstvy.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Pri priamych požiadavkách na jeden model preskočiť lokálnu kontrolu kontextového okna a maximálneho počtu vstupných tokenov v OmniRoute. Poskytovatelia na vstupe naďalej uplatňujú svoje skutočné limity. Kompresia výzvy a limity výstupných tokenov zostávajú aktívne.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Štatistiky vyhľadávania a nedávne vyhľadávania počítajú iba poskytovateľov, ktorí majú stále aktívne pripojenie (poskytovatelia bez kľúča, ako napríklad duckduckgo-free, sa počítajú vždy). Pri možnosti Vypnuté sa zachová každý uchovaný riadok vyhľadávania s ID poskytovateľa.", "publicSystem": { "notFound": { "title": "Stránka nenájdená", @@ -13699,12 +13710,12 @@ "maintenanceInfo": "Informácie o údržbe", "service": "Služba", "unknown": "neznáme", - "notAvailable": "n/a", + "notAvailable": "neuvedené", "providersTracked": "Sledovaní poskytovatelia", "circuitBreakerState": "Stav obvodu poskytovateľa", "lastUpdate": "Posledná aktualizácia: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes} min", + "uptimeHoursMinutes": "{hours} h {minutes} min" }, "statusPages": { "400": { @@ -13853,11 +13864,11 @@ "authorizeImportant": "Importante: musíte byť prihlásený na trae.ai v tento prehliadač najprv. Stránka autorizácie iba potvrdzuje existujúcu reláciu — nemôže vás prihlásiť. Ak vidíte \"Prihlásenie zlyhalo\", kliknite na \"Otvoriť solo.trae.ai\", prihláste sa, a potom sa vráťte sem.", "waitingForAuthorization": "Čakám na trae.ai…", "authorizeWithBrowser": "Autorizovať pomocou prehliadača", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "Otvoriť solo.trae.ai", "orPasteManually": "alebo vložte token ručne", "manualInstructions": "Prihláste sa na solo.trae.ai, otvorte DevTools → Network, pošlite akúkoľvek správu a skopírujte JWT z Authorization: Cloud-IDE-JWT {tokenPlaceholder} hlavičky požiadavky. Životnosť JWT je ~14 dní. Voliteľné identifikačné polia pochádzajú z common_params v tej istej požiadavke.", "accessTokenLabel": "Prístupový token (Cloud-IDE-JWT)", - "webId": "Web ID", + "webId": "Webové ID", "optional": "voliteľné", "bizUserId": "ID používateľa Biz", "userUniqueId": "Jedinečné ID používateľa", @@ -13876,7 +13887,7 @@ } }, "providerTest": { - "dialogLabel": "Test {provider}", + "dialogLabel": "Otestovať {provider}", "deprecated": "zastaralé", "risk": "riziko", "close": "Zavrieť", @@ -13886,7 +13897,7 @@ "clearConversation": "Vymazať konverzáciu", "clear": "Vymazať", "tabs": { - "test": "Test", + "test": "Otestovať", "logs": "Záznamy" }, "loadingLogs": "Načítavam protokoly…", @@ -13935,7 +13946,7 @@ "followDescription": "Os x sa posúva doľava, NOW čiara zostáva na 75%", "now": "Teraz", "nowDescription": "Preskoči na aktuálny čas, NOW riadok sa resetuje na stred", - "pan": "Pan", + "pan": "Posun", "panDescription": "Potiahnite na preskúmanie, pozadie je zamrznuté" }, "reset": "Obnoviť", @@ -13947,7 +13958,7 @@ "tokens": "Tokeny", "active": "Aktívny", "other": "Iné", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "hodina", "day": "deň", "unknownModel": "neznámy", @@ -13956,9 +13967,9 @@ "metadata": { "compressionTitle": "Komprimácia", "compressionDescription": "Nastavte nastavenia kompresie kontextu na zníženie používania tokenov a nákladov.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — Relay proxy servery", "relayDescription": "Serverless relay proxy koncové body pre vašu AI infraštruktúru", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Inšpektor prevádzky — OmniRoute", "trafficInspectorDescription": "Monitor LLM volania + debugovať HTTPS prenos akéhokoľvek aplikácie" }, "conductor": { @@ -13967,7 +13978,7 @@ "runners": "Bežci", "tasks": "Úlohy", "colName": "Názov", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "Stav", "colTask": "Úloha", "colMode": "Režim", @@ -14070,11 +14081,11 @@ "actionApprove": "Schváliť plán", "actionCancel": "Zrušiť", "actionSeeInGraph": "Zobraziť v grafe", + "actionRepeat": "Opakovať", "actionDone": "Akcia použitá", "actionFailed": "Akcia zlyhala: {error}", "detailFailed": "Nepodarilo sa načítať podrobnosti: {error}", "mirroredInA2A": "Zrkadlené v A2A", - "actionRepeat": "Opakovať", "repeatConfirm": "Kliknutím znova potvrďte", "repeatDone": "Vytvorené nové spustenie", "repeatUnavailable": "Pôvodný vstup nie je k dispozícii" @@ -14082,63 +14093,63 @@ "cliproxyProviderExposure": { "title": "Expozícia poskytovateľa", "description": "Expose CLIProxyAPI modely ako cieľ smerovania pod prefixom cliproxyapi/.", - "label": "Expose as cliproxyapi/...", + "label": "Sprístupniť ako cliproxyapi/...", "hint": "Keď je povolené, objavené modely sa zobrazia v selektoroch poskytovateľa naprieč OmniRoute.", "updateFailed": "Nepodarilo sa aktualizovať (HTTP {status})", "networkError": "Chyba siete — nepodarilo sa aktualizovať nastavenie expozície poskytovateľa" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", + "title": "Ponuky pre podporovateľov", + "subtitle": "Oficiálne zľavy, kredity, skúšobné verzie a overené partnerské výhody od Radar.", + "backToRadar": "Späť na Radar", + "loading": "Načítavajú sa ponuky...", + "refresh": "Obnoviť ponuky", + "refreshing": "Obnovuje sa...", + "loadFailed": "Ponuky sa nepodarilo obnoviť. Posledná overená lokálna vyrovnávacia pamäť bola zachovaná.", + "empty": "Momentálne nie sú k dispozícii žiadne aktívne ponuky.", + "keyRequiredTitle": "Vyžaduje sa kľúč podporovateľa", + "keyRequiredDescription": "Ponuky sú aktuálnou výhodou Radar. Pridajte existujúci kľúč podporovateľa na obrazovke Radar, overte svoj status prispievateľa alebo podporte projekt a získajte ho.", + "contributorButton": "Som prispievateľ", + "supporterButton": "Podporiť projekt", "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "officialBadge": "Oficiálne", + "conditionsLabel": "Podmienky:", + "validUntil": "Platí do {date}", + "noExpiry": "Bez oznámeného dátumu skončenia platnosti", + "openOffer": "Zobraziť ponuku", + "trialDays": "{days, plural, one {# deň} few {# dni} other {# dní}}" }, "radarIntelPage": { "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", + "subtitle": "Rebríčky ELO vo vlastníctve Radaru a faktické zmeny katalógu.", + "backToRadar": "Späť na Radar", + "loading": "Načítava sa Intel...", + "refresh": "Obnoviť Intel", + "syncing": "Obnovuje sa...", + "loadFailed": "Intel sa nepodarilo obnoviť. Posledná overená lokálna vyrovnávacia pamäť zostáva zachovaná.", + "empty": "Zatiaľ nie je k dispozícii žiadna overená snímka Intel.", + "supporterBadge": "Podporovateľ Radaru", + "methodology": "Metodika", + "eloMethod": "ELO, počiatočné {initial}, K={factor}", + "freshness": "Aktuálnosť katalógu", + "ageDays": "{days, plural, one {starý # deň} few {staré # dni} other {starý # dní}}", + "trend": "Trend katalógu", + "modelDelta": "{current} modelov, +{added} / -{removed}", + "ranking": "Rebríček modelov", + "noRankings": "Zatiaľ nie sú k dispozícii žiadne potvrdené porovnania.", "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "category": "Kategória", + "rating": "Hodnotenie", + "matches": "Porovnania", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Aktuálne", + "aging": "Starnúce", + "stale": "Zastarané" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Rastúce", + "stable": "Stabilné", + "shrinking": "Zmenšujúce sa" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Žiadosť presahuje kontextové okno poskytovateľa" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference je open-source priateľom OmniRoute", + "description": "Brána zoradená podľa nákladov, ktorá prepredáva desiatky špičkových modelov prostredníctvom jedného koncového bodu kompatibilného s OpenAI — každú požiadavku smeruje k najlacnejšiemu vyhovujúcemu poskytovateľovi, nikdy nie nad katalógovú cenu.", + "cta": "Získať kľúč API", + "partnerLinkNote": "Partnerský odkaz", + "dismissAriaLabel": "Zavrieť" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Zakázať generovanie variantov úrovne uvažovania (napr. -low, -medium, -high) v katalógu /v1/models." } diff --git a/src/i18n/messages/sl.json b/src/i18n/messages/sl.json index dc2ebee38f..f6dc628bf8 100644 --- a/src/i18n/messages/sl.json +++ b/src/i18n/messages/sl.json @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Objavi zrcalne ID-je claude/<provider>/<model> na /v1/models, da odkrivanje modelov prehoda Claude Code prikaže tudi modele, ki niso Claude. Opozorilo: če je možnost omogočena globalno, se število vnosov v katalogu podvoji za vse odjemalce.", "featureFlagNoThinkingAliasEnabledDescription": "Glavno stikalo za vzdevke prehoda no-think/<provider>/<model>. Vklopljeno (privzeto): /v1/models objavi različico brez razmišljanja za vsak primeren model Claude, ki podpira razmišljanje, ID no-think/, poslan v zahtevi, pa se razreši nazaj v pravi model z onemogočenim sklepanjem. Izklopljeno: različice niso objavljene, ID no-think/ pa se obravnava kot kateri koli drug neznan ID modela. Ko je ta možnost vklopljena, še vedno velja nastavitev ModelSpec.noThinkingAlias za prijavo/odjavo posameznega modela.", "featureFlagChatVirtualLanesEnabledDescription": "Omogoči prilagodljive navidezne sprejemne pasove za posameznega najemnika pri posredovanju ponudniku (#9654): nenaden porast zahtev enega najemnika ne povzroča več napak 503 pri drugem. Spremenljivka okolja OMNIROUTE_CHAT_VIRTUAL_LANES ima prednost pred to nastavitvijo nadzorne plošče; spremembe začnejo veljati po ponovnem zagonu strežnika.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Strani ponudnikov na nadzorni plošči: značko Brezplačno prikaži samo pri signalih, ki jih ponudnik upošteva — brez hevristike prikaznega imena, neboolovskih polj free in pripon :free pri registriranih ponudnikih brez dokumentirane brezplačne ravni. Izklopljeno ohrani preteklo pravilo za značke.", + "featureFlagProxySkipRecentlyFailedDescription": "Skupine posredniških strežnikov in vrtenje opencode za posamezen račun za določeno obdobje znotraj procesa prenehajo znova uporabljati posredniški strežnik, ki je pravkar odpovedal (zavrnjeno preverjanje TCP ali prek njega prejeta napaka 429). To obdobje se ob vsaki ponovitvi podvoji do določene zgornje meje. Stanje posredniškega strežnika se ne zapiše; če so vsi kandidati izločeni, izbira ostane nespremenjena. Privzeto izklopljeno: vrstni red izbire je popolnoma enak običajnemu vrtenju.", + "featureFlagProxyPoolEgressObservationDescription": "Na nadzorni plošči pod skupino posredniških strežnikov prikaži, koliko opaženih izhodnih naslovov IP je v zadnjih 24 h uporabljalo njene člane, koliko povezav jih je uporabilo in največje število povezav prek enega naslova IP. Podatki so samo za branje, izračunani iz dnevnika posredniškega strežnika in se nikoli ne uporabljajo za usmerjanje. Privzeto izklopljeno: urejevalnik skupine ostane nespremenjen, opazovalna pot pa vrne null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Pri preverjanju zdravja posredniških strežnikov naj sonda, ki jo je cilj zavrnil (401/403/429: posredniški strežnik jo je posredoval, cilj pa je zavrnil ta izhodni naslov IP), ponastavi niz zaporednih neuspehov posredniškega strežnika, tako kot uspešno izvedena sonda. Privzeto izklopljeno: zavrnitev ostane nevtralna in ohrani niz. Odziv 5xx v obeh primerih ostane nedoločen, zavrnitev pa posredniškega strežnika nikoli ne odstrani, onemogoči ali znova aktivira.", "sidebar": { "home": "Domov", "dashboard": "Nadzorna plošča", @@ -1185,7 +1185,7 @@ "conversations": "Pogovori", "conversationsSubtitle": "Večstopenjski agentski pogovori", "globalRouting": "Globalno usmerjanje", - "mitmProxy": "MITM Proxy", + "mitmProxy": "Posredniški strežnik MITM", "oneProxy": "1Proxy", "agenticFeaturesSection": "Agentske funkcije", "otherFeaturesSection": "Druge funkcije", @@ -1275,7 +1275,7 @@ "systemGroup": "Sistem", "costsOverview": "Pregled", "costsOverviewSubtitle": "Konsolidirana analiza stroškov", - "agentBridge": "Agent Bridge", + "agentBridge": "Most za agente", "agentBridgeSubtitle": "Prestrezanje prometa agentov IDE", "trafficInspector": "Traffic Inspector", "trafficInspectorSubtitle": "Pregled prometa zahtev in odgovorov iz vaših aplikacij", @@ -1445,7 +1445,7 @@ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "Žeton HTTP API, ki ste ga prejeli od @BotFather ob ustvarjanju bota.", "chatId": "ID klepeta / kanal Telegram", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 ali @channelname", "chatIdHint": "Enolični številski identifikator ali javno uporabniško ime klepeta oziroma kanala.", "tutorial": "Kako konfigurirati webhook Telegram:" } @@ -2473,7 +2473,7 @@ "stt": "Govor v besedilo", "webSearch": "Spletno iskanje", "webFetch": "Pridobivanje s spleta", - "video": "Video", + "video": "Videoposnetek", "music": "Glasba", "ocr": "OCR" }, @@ -2679,7 +2679,7 @@ "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — največ 25 MB", "textToSpeech": "Pretvorba besedila v govor", "ttsSample": "Pozdravljeni, to je preizkus pretvorbe besedila v govor.", - "video": "Video", + "video": "Videoposnetek", "videoSample": "Pospešeni posnetek oblakov nad gorovjem", "webFetch": "Pridobivanje spletne vsebine", "webSearchSample": "Kaj je prehod OmniRoute AI?", @@ -4018,9 +4018,9 @@ "messagesApiDesc": "Izvorna oblika Anthropic Messages API za ponudnike, združljive s Claude", "imageEdits": "Urejanje slik", "imageEditsDesc": "Urejajte in spreminjajte obstoječe slike z umetno inteligenco (zapolnjevanje, razširjanje, različice)", - "batchApi": "Batch API", + "batchApi": "Paketni API", "batchApiDesc": "Asinhrono obdelajte velike pakete zahtev (združljivo z OpenAI)", - "filesApi": "Files API", + "filesApi": "API za datoteke", "filesApiDesc": "Naložite in upravljajte datoteke za paketno obdelavo", "videoGeneration": "Ustvarjanje videoposnetkov", "videoDesc": "Ustvarjajte videoposnetke z modeli umetne inteligence, kot sta ComfyUI in Stable Video Diffusion.", @@ -7114,7 +7114,7 @@ "enableDegradationHint": "Ko je omogočeno, so opravila v ozadju, kot sta ustvarjanje naslovov in povzemanje, samodejno usmerjena k cenejšim modelom", "tasksDetected": "Zaznana opravila", "degradationMap": "Preslikava na manj zmogljive modele", - "premiumModel": "Premium model", + "premiumModel": "Premijski model", "cheapModel": "Cenejši model", "detectionPatterns": "Vzorci zaznavanja", "newPattern": "npr. \"ustvari naslov\"", @@ -7143,7 +7143,7 @@ "ipModeWhitelist": "Beli seznam", "ipModeWhitelistPriority": "Prednost belega seznama", "addIpAddress": "Dodaj naslov IP", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 ali 10.0.*.*", "block": "+ Blokiraj", "allow": "+ Dovoli", "blocked": "Blokirani ({count})", @@ -7953,9 +7953,9 @@ "cliproxyapiImportAuthButton": "Uvozi račune", "payloadRulesTitle": "Pravila koristne vsebine", "payloadRulesDesc": "Nastavite spremembe koristne vsebine zahtev glede na model in protokol. Spremembe se trajno shranijo v nastavitvah in se takoj po shranjevanju dinamično znova naložijo v izvajalno okolje.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "privzeto", "payloadRuleDefaultDesc": "Uporabi parametre samo, če ciljna pot manjka v odhodni koristni vsebini.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "preglasitev", "payloadRuleOverrideDesc": "Vsili vrednosti v koristno vsebino in zamenja vse, kar je že prisotno na tej poti.", "payloadRuleFilterTitle": "filter", "payloadRuleFilterDesc": "Odstrani blokirane parametre iz koristne vsebine, preden je zahteva poslana zunanjemu ponudniku.", @@ -8232,7 +8232,7 @@ "modalityBridgeIntro": "Pretvori večpredstavnostno vsebino v besedilo, preden doseže modele, ki podpirajo samo besedilo. Mostovi za slike, zvok in video so na voljo ter jih je mogoče konfigurirati.", "modalityBridgeVisionTab": "Slike", "modalityBridgeAudioTab": "Zvok", - "modalityBridgeVideoTab": "Video", + "modalityBridgeVideoTab": "Videoposnetek", "modalityBridgeSubTabsAria": "Razdelki mostov za modalnosti", "modalityBridgeVisionTitle": "Most za slike", "modalityBridgeVisionDesc": "Opiše slike z modelom za vid in nadaljuje z besedilnim modelom, ki ga je izbral uporabnik.", @@ -8272,7 +8272,7 @@ "modalityBridgeMovedTitle": "Vision Bridge je bil premaknjen", "modalityBridgeMovedBody": "Nastavitve za Vision Bridge so zdaj na namenski strani Modality Bridge.", "modalityBridgeMovedCta": "Odpri nastavitve Modality Bridge", - "modalityBridgeAudioTitle": "Audio Bridge", + "modalityBridgeAudioTitle": "Zvočni most", "modalityBridgeAudioDesc": "Pred nadaljevanjem z izbranim besedilnim modelom prepiše zvok z modelom za pretvorbo govora v besedilo.", "modalityBridgeAudioEnabled": "Omogoči Audio Bridge", "modalityBridgeAudioEnabledDesc": "Zamenjaj zvočne dele s prepisi, kadar ciljni model ne more obdelati zvoka.", @@ -8284,7 +8284,7 @@ "modalityBridgeAudioTestOk": "Audio Bridge deluje — število posnetkov, ki jih je prepisal model {model}: {count}", "modalityBridgeAudioTestNoop": "Audio Bridge se ni aktiviral (ciljni model morda podpira zvok, ponudnik STT ni povezan ali pa je Bridge onemogočen)", "modalityBridgeAudioTestError": "Preizkus zvoka ni uspel: {message}", - "modalityBridgeVideoTitle": "Video Bridge", + "modalityBridgeVideoTitle": "Videomost", "modalityBridgeVideoDesc": "Vzorči sličice videoposnetka, jih opiše z modelom za vid in nadaljuje z izbranim besedilnim modelom.", "modalityBridgeVideoRuntimeReady": "Izvajalno okolje je pripravljeno", "modalityBridgeVideoRuntimeChecking": "Preverjanje izvajalnega okolja…", @@ -9465,9 +9465,9 @@ "noQuotaDataAvailable": "Podatki o kvoti niso na voljo", "noAccountsForTierFilter": "Za filter ravni ni bilo najdenih računov", "tierAll": "Vsi", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "tierEnterprise": "Poslovni paket", + "tierTeam": "Ekipa", + "tierBusiness": "Poslovni", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", @@ -9720,8 +9720,8 @@ "chooseAuthMethod": "Izberite način preverjanja pristnosti:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", + "googleAccount": "Račun Google", + "githubAccount": "Račun GitHub", "importToken": "Uvozi žeton", "pasteToken": "Prilepite žeton za osvežitev iz Kiro IDE.", "awsRegion": "Regija AWS", @@ -10021,7 +10021,7 @@ "apiReference": "Referenca API-ja", "helpCenter": "Center za pomoč", "about": "O nas", - "blog": "Blog", + "blog": "Spletni dnevnik", "contact": "Stik", "terms": "Pogoji uporabe", "privacy": "Zasebnost", @@ -10968,9 +10968,9 @@ "strategyLatency": "Optimizirano glede na zakasnitev", "poolMembersLabel": "Člani skupine ({count})", "poolNoMembers": "V tej skupini še ni posredniških strežnikov.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# izhod} other {# izhodov}} uporablja {connections, plural, one {# povezava} other {# povezav}} · do {max} na enem izhodu · zadnjih {hours} h", + "poolEgressObservationEmpty": "V zadnjih {hours} h ni bil zaznan noben promet", + "poolEgressObservationHint": "Izračunano iz dnevnika posredniškega strežnika v tem časovnem obdobju: različni zaznani izhodni naslovi IP za člane te skupine in povezave OmniRoute, ki so jih uporabljale. »Na enem izhodu« pomeni v tem časovnem obdobju, ne nujno sočasno. Blokada 429 za posamezen naslov IP začasno ustavi samo povezave iste družine ponudnikov.", "poolRemove": "Odstrani", "poolRemoveFailed": "Posredniškega strežnika ni bilo mogoče odstraniti iz skupine", "poolAddLabel": "Dodaj posredniški strežnik", @@ -11244,7 +11244,7 @@ "searchResultFallback": "Rezultat {number}", "noKeysFound": "Ni najdenih ključev API. Dodajte ga v razdelku Ključi.", "exampleLabel": "Primer", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} vhodnih / {tokensOut} izhodnih žetonov", "defaultKey": "(privzeto)", "clear": "Počisti", @@ -11289,7 +11289,7 @@ "refresh": "Osveži", "columnsLabel": "Stolpci", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "GOR", "semantic": "Semantično", "upstream": "Izvorno", "semanticCacheHit": "Zadetek v semantičnem predpomnilniku (postreže OmniRoute)", @@ -11474,7 +11474,7 @@ "music": "Glasba", "responses": "Odgovori", "rerank": "Ponovno razvrščanje", - "video": "Video", + "video": "Videoposnetek", "embeddings": "Vdelave", "transcription": "Prepisovanje" }, @@ -11679,7 +11679,7 @@ "endpointsCollapse": "Strni", "endpointsExpand": "Razširi", "endpointsAnthropicNote": "Izvorni Anthropic", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsResponsesNote": "Odzivi OpenAI — codex/github", "endpointsWsNote": "WebSocket — samo codex", "betaText": "Quota Share deluje, vendar lahko pričakujete napake. Ste jo našli? Prijavite jo.", "betaReportLink": "Prijavi težavo", @@ -12992,7 +12992,7 @@ "description": "Obnovi toka omogoči, da znova zahteva odgovor in ga sestavi, potem ko so bajti že dosegli odjemalca." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Poskrbite, da bo nadaljevanje sredi toka varno za klice orodij: nikoli ne nadaljujte prekinjenega toka po poslanem klicu orodja (ki še vedno poteka ali je že končan) in se ustavite po enem praznem nadaljevanju, namesto da porabite celoten proračun ponovnih poskusov." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Enkrat preklopi na sestrsko povezavo, ko se tok zapre, preden pošlje kakršen koli uporaben okvir, in je omejeni ponovni poskus na isti povezavi porabljen. Če uporabne sestrske povezave ni, se vrne izvirna napaka early-EOF. Izklopljeno: early-EOF po ponovnem poskusu ostane dokončen." @@ -13035,12 +13035,12 @@ "description": "Nadaljuj nestreamne strežniško upravljane klice orodij, dokler model ne vrne odziva, uporabnega za odjemalca." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Izvor glave Retry-After", + "description": "Pri združenih odgovorih 429/503 o nerazpoložljivosti izpustite Retry-After, kadar ni znan konkreten prihodnji čas ponovnega poskusa, namesto da pošljete umetno vrednost 1s; dodajte error.retry_after_provenance in upoštevajte besedilne namige za ponovni poskus na poteh praznjenja kombinacij." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Zaustavitve infrastrukture z zaščiteno prioriteto kot 502", + "description": "Odgovorite s 502 namesto 503, ko prednostni cilj, ki je nadomestna možnost samo ob kvoti, ustavi kombinacijo zaradi vzroka, ki dokazljivo ni povezan s kvoto: odprtega odklopnika ponudnika ali preskoka zaradi napovedane zakasnitve." } } }, @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Zavrni zahteve pred posredovanjem, ko ciljni model nima zahtevanih zmogljivosti (vid, orodja, strukturiran izhod, kontekstno okno). Ščiti neposredne zahteve za enega ponudnika, ki obidejo filter združljivosti kombinacijskega sloja.", "featureFlagDisableContextWindowChecksDescription": "Preskoči lokalno preverjanje kontekstnega okna in največjega števila vhodnih žetonov v OmniRoute za neposredne zahteve za posamezen model. Ponudniki v zaledju še vedno uveljavljajo svoje dejanske omejitve. Stiskanje pozivov in omejitve izhodnih žetonov ostanejo aktivni.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Statistika iskanja in nedavna iskanja upoštevajo samo ponudnike, ki imajo še vedno aktivno povezavo (ponudniki brez ključa, kot je duckduckgo-free, se vedno upoštevajo). Možnost Izklopljeno ohrani vse shranjene vrstice iskanja z ID-jem ponudnika.", "publicSystem": { "notFound": { "title": "Strani ni mogoče najti", @@ -14051,9 +14051,9 @@ "filterSources": "Viri", "filterProviders": "Ponudniki", "clearFilters": "Počisti filtre", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Agent v oblaku", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Dirigent", "sourceStale": "Zastarelo od {since}", "sourceOffline": "Brez povezave", "sourceCollapse": "Strni", diff --git a/src/i18n/messages/sr.json b/src/i18n/messages/sr.json index 6aa55b927f..36855a8f7d 100644 --- a/src/i18n/messages/sr.json +++ b/src/i18n/messages/sr.json @@ -113,12 +113,12 @@ "hex": "Хекс", "range": "Опсег", "component": "Компонента", - "redirect_uri": "Redirect URI", + "redirect_uri": "URI за преусмеравање", "idempotency-key": "Кључ идемпотентности", "error_description": "Опис грешке", "code": "Код", "compatible": "Компатибилно", - "chat-completions": "Chat Completions", + "chat-completions": "Довршавања ћаскања", "oauth": "OAuth", "auth_token": "Аутентификационни токен", "crypto": "Криптографија", @@ -327,7 +327,7 @@ "a2aQuickStartTitle": "Наслов брзог старта за A2A", "couldNotTest": "Тестирање није могуће", "testAllCompatible": "Тестирај све компатибилне", - "anthropicCompatibleName": "Anthropic Compatible Name", + "anthropicCompatibleName": "Назив компатибилан са Anthropic", "disabling": "Онемогућавање", "failedEnable": "Активирање није успело", "categoryUtility": "Категорија: Услужни програми", @@ -360,7 +360,7 @@ "modelsPathPlaceholder": "Плейсхолдер за путању модела", "noCombosYet": "Још нема комбинација", "connectedVerificationPendingWithError": "Верификација повезивања на чекању са грешком", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", + "comboDefaultsGuideHint1": "Савет 1 у водичу за подразумеване вредности комбинације", "enableCloudTitle": "Омогући облак наслов", "configuredProvidersHint": "Конфигурисани провајдери — напомена", "paused": "Паузирано", @@ -526,8 +526,8 @@ "invalidFileType": "Nevažeći tip fajla", "monitoredProviders": "Nadgledani provajderi", "errors": "Greške", - "heap": "Heap", - "chatCompletions": "Chat Completions", + "heap": "Хип", + "chatCompletions": "Довршавања ћаскања", "exampleTemplatesHint": "Savet za primere šablona", "retryDelayLabel": "Oznaka odlaganja pokušaja", "audioTranscription": "Transkripcija audio zapisa", @@ -992,10 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Оглашавај claude/<provider>/<model> mirror идентификаторе на /v1/models тако да Claude Code gateway откривање модела приказује и модели који нису Claude. Упозорење: дуплира ставке каталога за све клијенте када је омогућено глобално.", "featureFlagNoThinkingAliasEnabledDescription": "Главни прекидач за no-think/<provider>/<model> gateway алиасе. Укључено (подразумевано): /v1/models оглашава варијанту без размишљања за сваки подобан Claude модел способан за размишљање, а идентификатор no-think/ послат у захтеву се разрешава на стварни модел са потиснутим резоновањем. Искључено: варијанте се не оглашавају, а идентификатор no-think/ се третира као и сваки други непознат идентификатор модела. Опција по моделу ModelSpec.noThinkingAlias за укључивање/искључивање се и даље примењује док је ово укључено.", "featureFlagChatVirtualLanesEnabledDescription": "Омогући по-закупцу адаптивне виртуелне линије пријема за расподелу провајдера (#9654): нагли скок захтева једног закупца више не изазива 503 грешку код другог. Env варијабла OMNIROUTE_CHAT_VIRTUAL_LANES има приоритет над овим прекидачем у контролној табли; промене се примењују при поновном покретању сервера.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Странице добављача на контролној табли: приказују ознаку „Бесплатно“ само за сигнале које добављач уважава — без претпоставки на основу приказаног назива, небуловских поља за бесплатан приступ и суфикса :free код регистрованих добављача без документованог бесплатног пакета. Када је искључено, задржава се претходно правило за приказ ознаке.", + "featureFlagProxySkipRecentlyFailedDescription": "Прокси скупови и ротација по налогу у opencode престају да поново користе прокси који је управо отказао (одбијена TCP провера или одговор 429 примљен преко њега) током периода на нивоу процеса који се удвостручује при сваком понављању, до задате горње границе. Статус проксија се не уписује; када су сви кандидати издвојени, избор остаје непромењен. Подразумевано је искључено: редослед избора је потпуно исти као код обичне ротације.", + "featureFlagProxyPoolEgressObservationDescription": "У контролној табли, испод прокси скупа, прикажите колико је уочених излазних IP адреса опслуживало његове чланове током последња 24 ч, колико их је веза користило и највећи број веза забележен иза једне IP адресе. Само за читање, израчунава се из евиденције проксија и никада се не користи за усмеравање. Подразумевано је искључено: уређивач скупа остаје непромењен, а рута за посматрање враћа null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "У провери исправности проксија омогућите да провера коју је циљ одбио (401/403/429: прокси је проследио захтев, а одредиште је одбило ову излазну IP адресу) ресетује низ узастопних неуспеха проксија, као и успешно опслужена провера. Подразумевано је искључено: одбијање остаје неутрално и задржава низ. Одговор 5xx у оба случаја остаје неодређен, а одбијање никада не уклања, не онемогућава нити поново активира прокси.", "sidebar": { "home": "Почетна", "dashboard": "Контролна табла", @@ -1178,14 +1178,14 @@ "omniProxySection": "OmniProxy", "quotaTracker": "Kvota provajdera", "providerQuota": "Kvota provajdera", - "runtime": "Runtime", + "runtime": "Окружење за извршавање", "consoleLogs": "Konzolni logovi", "logsTimeline": "Vremenska linija", "logsTimelineSubtitle": "Vizuelna vremenska linija zahteva", "conversations": "Konverzacije", "conversationsSubtitle": "Agentske konverzacije sa više krugova", "globalRouting": "Globalno rutiranje", - "mitmProxy": "MITM Proxy", + "mitmProxy": "MITM прокси", "oneProxy": "1Proxy", "agenticFeaturesSection": "Agentske funkcije", "otherFeaturesSection": "Ostale funkcije", @@ -1193,7 +1193,7 @@ "gamificationGroup": "Gejmifikacija", "toolsGroup": "Alati", "integrationsGroup": "Integracije", - "proxyGroup": "Proxy", + "proxyGroup": "Прокси", "costsParametersGroup": "Parametri troškova", "auditGroup": "Revizija", "batchGroup": "Serija", @@ -1275,7 +1275,7 @@ "systemGroup": "Sistem", "costsOverview": "Pregled", "costsOverviewSubtitle": "Konsolidovana analiza troškova", - "agentBridge": "Agent Bridge", + "agentBridge": "Мост за агенте", "agentBridgeSubtitle": "Presretanje saobraćaja IDE agenta", "trafficInspector": "Inspektor saobraćaja", "trafficInspectorSubtitle": "Pregled saobraćaja zahteva i odgovora iz vaših aplikacija", @@ -1429,19 +1429,19 @@ "secretKeyHint": "Користи се за потписивање заглавља пакета ради аутентикације." }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "URL Discord веб-хука", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "URL webhook-а копиран из подешавања интеграције вашег Discord канала.", "tutorial": "Како да направите Discord webhook:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "URL Slack веб-хука", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "URL webhook-а копиран из ваше Slack Incoming Webhooks интеграције.", "tutorial": "Како да направите Slack webhook:" }, "telegram": { - "botToken": "Telegram Bot Token", + "botToken": "Токен Telegram бота", "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "HTTP API токен добијен од @BotFather приликом креирања вашег бота.", "chatId": "Telegram Chat ID / канал", @@ -1648,7 +1648,7 @@ "settingsAiDescription": "AI ponašanja, budžeti razmišljanja, vid i podešavanja memorije", "settingsCacheDescription": "TTL za unose keša kataloga modela", "settingsSecurityDescription": "Podešavanja autentifikacije, autorizacije i kontrole pristupa", - "featureFlags": "Feature Flags", + "featureFlags": "Заставице функција", "featureFlagsDescription": "Kontrola sistemskih mogućnosti i eksperimentalnih funkcija", "featureFlagsActive": "{count} aktivno", "featureFlagsInactive": "{count} neaktivno", @@ -1658,7 +1658,7 @@ "featureFlagsCategorySecurity": "Bezbednost", "featureFlagsCategoryNetwork": "Mreža", "featureFlagsCategoryPolicies": "Politike", - "featureFlagsCategoryRuntime": "Runtime", + "featureFlagsCategoryRuntime": "Окружење за извршавање", "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "Zdravlje", "featureFlagsSourceDb": "DB", @@ -1724,13 +1724,13 @@ "analytics": "Аналитика", "costs": "Трошкови", "health": "Здравље", - "runtime": "Runtime", - "webhooks": "Webhooks", + "runtime": "Извршно окружење", + "webhooks": "Веб-хукови", "home": "Почетна", "activity": "Активност", "agentSkills": "AgentSkills", "comboHealth": "Здравље комбинације", - "evals": "Evals", + "evals": "Евалуације", "search": "Претрага", "utilization": "Искоришћеност", "apiEndpoints": "API крајње тачке", @@ -1755,13 +1755,13 @@ "omniglyph": "OmniGlyph", "rtk": "RTK", "sessionDedup": "Дедупликација сесија", - "ultra": "Ultra", + "ultra": "Ултра", "budget": "Буџет", "pricing": "Ценовник", "quotaShare": "Дељење квоте", "discovery": "Откривање", "freeProviderRankings": "Ранг бесплатних провајдера", - "radar": "Radar", + "radar": "Радар", "setup": "Подешавање", "freeTiers": "Бесплатни нивои", "gamification": "Гејмификација", @@ -1778,7 +1778,7 @@ "sidebar": "Бочна трака", "tokens": "Токени", "tools": "Алати", - "agentBridge": "Agent Bridge", + "agentBridge": "Мост агента", "trafficInspector": "Инспектор саобраћаја", "usage": "Употреба", "orchestration": "Оркестрација" @@ -2365,7 +2365,7 @@ "regenerateConfirm": "Da li ste sigurni da želite da regenerišete ovaj API ključ? Stari ključ će odmah biti poništen.", "failedRegenerateKey": "Regeneracija API ključa nije uspela", "failedRegenerateKeyRetry": "Regeneracija API ključa nije uspela. Pokušajte ponovo.", - "model": "{count} model", + "model": "{count} модел", "models": "{count} modela", "permissionsTitle": "Dozvole: {name}", "allowAllDesc": "Ovaj ključ ima pristup svim dostupnim modelima.", @@ -2679,7 +2679,7 @@ "audioFormats25Mb": "mp3, wav, m4a, ogg, flac — maksimalno 25 MB", "textToSpeech": "Tekst u govor", "ttsSample": "Zdravo, ovo je test pretvaranja teksta u govor.", - "video": "Video", + "video": "Видео", "videoSample": "Ubrzani snimak облaka iznad planinskog venca", "webFetch": "Preuzimanje veb sadržaja", "webSearchSample": "Šta je OmniRoute AI gateway?", @@ -2921,19 +2921,19 @@ "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "xAI Grok Build TUI agent za kodiranje sa podrškom za prilagođene provajdere", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Factory Droid AI асистент", + "openclaw": "Open Claw AI асистент", + "cline": "Cline CLI AI асистент за програмирање", + "kilo": "Kilo Code CLI AI асистент", "qwen": "Alibaba Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", + "continue": "Continue AI асистент", "opencode": "OpenCode AI agent za kodiranje (terminal)", "kiro": "Amazon Kiro — AI IDE okruženje", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", "amp": "Sourcegraph Amp CLI asistent za kodiranje", - "hermes": "Hermes AI Terminal Assistant", + "hermes": "Hermes AI терминалски асистент", "hermes-agent": "Hermes Agent (od Nousresearch) - Napredni terminalski AI sa podrškom za više modela (delegiranje, vid, kompresija itd.)", "custom": "Generator konfiguracije za generički CLI ili SDK kompatibilan sa OpenAI", "aider": "Aider AI CLI za programiranje u paru sa OpenAI-kompatibilnim baznim URL-om", @@ -3176,8 +3176,8 @@ "copilotToolCalling": "Позивање алата", "copilotPasteInto": "Налепи у:", "copilotReloadInstruction": "Затим поново учитајте VS Code и подесите API кључ у пољу за унос.", - "wireApiChatCompletions": "Chat Completions (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiChatCompletions": "Довршавања ћаскања (/chat/completions)", + "wireApiResponses": "API одговора (/responses)", "cliproxyapiActionFailed": "Радња није успела", "cliproxyapiActionSucceeded": "Радња је успешно извршена", "cliproxyapiCheckUpdates": "Провери ажурирања", @@ -3322,7 +3322,7 @@ "playgroundStatusError": "Грешка", "playgroundStatusUnknown": "Непознато", "playgroundNetworkError": "Мрежна грешка током симулације", - "playgroundTitle": "Combo Playground", + "playgroundTitle": "Combo окружење за тестирање", "playgroundDescription": "Симулирајте како ће захтеви бити рутирани кроз ваше комбо групе", "playgroundConfiguration": "Конфигурација", "playgroundNoCombosConfigured": "Нема конфигурисаних комбо група", @@ -3892,7 +3892,7 @@ "apiKeyLabel": "API кључ", "registeredKeys": "Регистровани кључеви", "chatCompletions": "Chat Completions", - "responses": "Responses", + "responses": "Одговори", "listModels": "Листа модела", "usingCloudProxy": "Коришћење Cloud Proxy-ja", "usingLocalServer": "Коришћење локалног сервера", @@ -3902,7 +3902,7 @@ "modelsAcrossEndpoints": "{models} модела на {endpoints} крајњих тачака", "loadingModels": "Учитавање доступних модела...", "chatDesc": "Streaming и non-streaming ћаскање са свим провајдерима", - "embeddings": "Embeddings", + "embeddings": "Уграђивања", "embeddingsDesc": "Текстуални embedding-ови за претрагу и RAG пајплајнове", "imageGeneration": "Генерисање слика", "imageDesc": "Генеришите слике из текстуалних упита", @@ -3914,7 +3914,7 @@ "textToSpeechDesc": "Претворите текст у природно звучећи говор", "musicGeneration": "Генерисање музике", "musicDesc": "Генеришите музику и аудио записе преко ComfyUI (Stable Audio, MusicGen)", - "moderations": "Moderations", + "moderations": "Модерације", "moderationsDesc": "Модерација садржаја и класификација безбедности", "responsesDesc": "OpenAI Responses API за Codex и напредне агентске радне токове", "listModelsDesc": "Прикажи све доступне моделе код свих повезаних провајдера", @@ -4018,9 +4018,9 @@ "messagesApiDesc": "Изворни формат Anthropic Messages API-ја за провајдере компатибилне са Claude-ом", "imageEdits": "Измене слика", "imageEditsDesc": "Уређујте и мењајте постојеће слике помоћу AI (inpainting, outpainting, варијације)", - "batchApi": "Batch API", + "batchApi": "Пакетни API", "batchApiDesc": "Асинхроно обрађујте велике групе захтева (компатибилно са OpenAI)", - "filesApi": "Files API", + "filesApi": "API датотека", "filesApiDesc": "Отпремајте и управљајте датотекама за batch обраду", "videoGeneration": "Генерисање видеа", "videoDesc": "Генеришите видео записе помоћу AI модела као што су ComfyUI и Stable Video Diffusion.", @@ -4139,7 +4139,7 @@ "badgeInternalTooltip": "Ово је интерна системска крајња тачка", "tierAll": "Све", "tierAuth": "Аутентификовано", - "tierLoopback": "Loopback", + "tierLoopback": "Повратна петља", "tierAlwaysProtected": "Увек заштићено", "tierPublic": "Јавно", "hideInternal": "Сакрий интерне", @@ -4436,7 +4436,7 @@ "embeddingLabel": "Уграђивање (Embedding)", "vectorStoreLabel": "Складиште вектора", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Поновно рангирање", "qdrantDisabled": "Онемогућено", "qdrantOk": "Исправно ({latencyMs}мс)", "qdrantError": "Грешка у вези", @@ -4569,7 +4569,7 @@ "executionsTab": "Izvršenja", "selectSkillToInspect": "Izaberite vештину sa leve strane za pregled.", "schemaTab": "Šema", - "handlerTab": "Handler", + "handlerTab": "Обрађивач", "inputSchema": "Ulazna šema", "outputSchema": "Izlazna šema", "handlerCode": "Kod handlera", @@ -4577,7 +4577,7 @@ "runTestPlaceholder": "Pokreni test (zamenski)", "setModeAria": "Podesi mod {mode}", "uninstallSkill": "Deinstaliraj vештину", - "sandboxTab": "Sandbox", + "sandboxTab": "Изоловано окружење", "loading": "Učitavanje vештina...", "noSkills": "Nema pronađenih vештina", "noExecutions": "Nema pronađenih izvršenja", @@ -4587,7 +4587,7 @@ "version": "Verzija", "tableDescription": "Opis", "skill": "Vештina", - "status": "Status", + "status": "Статус", "duration": "Trajanje", "time": "Vreme", "sandboxConfig": "Podešavanje sandbox-a", @@ -4802,7 +4802,7 @@ "partialData": "Телеметрија је делимично доступна: {error}" }, "mitm": { - "title": "MITM Proxy", + "title": "MITM прокси", "description": "Транспарентни proxy за пресретање и рутирање клијентских захтева.", "enable": "Активирај MITM Proxy", "enableDesc": "Покрените или зауставите локални процес пресретања и DNS прегажење.", @@ -5308,7 +5308,7 @@ "openaiCompatibleDetails": "Детаљи о OpenAI Compatible", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", + "embeddings": "Уграђивања", "audioTranscriptions": "Транскрипција аудија", "audioSpeech": "Говор из аудија", "imagesGenerations": "Генерисање слика", @@ -5762,7 +5762,7 @@ "addAnotherApiKey": "Додајте још један API кључ или налепите више кључева", "addCcCompatible": "Додај CC компатибилно", "aggregatorsGateways": "Агрегатор гејтвеји", - "enterpriseCloud": "Enterprise & Cloud", + "enterpriseCloud": "Предузећа и облак", "apiFormatLabel": "Ознака API формата", "apiKeyOptionalHint": "Оставите празно ако ваше локално подешавање или провајдер не захтевају аутентикацију.", "apiKeyOptionalLabel": "API кључ (опционо)", @@ -5801,10 +5801,10 @@ "ccCompatibleSummarizeThinkingDescription": "Додаје `display: \"summarized\"` у CC Compatible захтеве размишљања, тако да подржани Claude модели стримују видљиве делте размишљања.", "ccCompatibleSummarizeThinkingLabel": "Омогући приказ сумираног размишљања", "ccCompatibleDetailsTitle": "Детаљи CC-компатибилног релеја", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "Компатибилно са CC", "ccCompatibleModelsDescription": "CC-компатибилни релеји не излажу листу модела. Додајте ID-ове Claude модела које ваш релеј прихвата.", "ccCompatibleNameHint": "Име за приказ за овај релеј намењен искључиво Claude Code.", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay продукција", "ccCompatiblePrefixHint": "Користи се у алиасима модела као prefix/model-id.", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Користите овог провајдера само за релеје који служе искључиво Claude Code клијентима. OmniRoute преписује сваки долазни захтев у формат компатибилан са Claude Code, тако да ти релеји прихватају захтеве. Ако желите да користите само Claude Code CLI, или нисте сигурни шта овај тип релеја значи, уместо тога користите обичног Anthropic-компатибилног провајдера.", @@ -5816,7 +5816,7 @@ "codexWeeklyToggleTitle": "Праћење недељне Codex квоте за ову везу", "compatUpstreamHeaderNamePlaceholder": "Заменски текст за назив заглавља Compat Upstream", "compatUpstreamHeaderValuePlaceholder": "Заменски текст за вредност заглавља Compat Upstream", - "compatible": "Compatible", + "compatible": "Компатибилно", "configuredCount": "Број конфигурисаних", "consoleApiKeyOracleHint": "Наговештај за Console API кључ Oracle", "consoleApiKeyOracleLabel": "Ознака за Console API кључ Oracle", @@ -5824,7 +5824,7 @@ "newApiUserIdLabel": "New-API ID корисника", "newApiUserIdPlaceholder": "нпр. 12345", "newApiUserIdHint": "Вредност AgentRouter New-Api-User заглавља, коришћена заједно са console API кључем за преузимање стања квоте.", - "newApiAggregatorToggleLabel": "Aggregator Gateway", + "newApiAggregatorToggleLabel": "Агрегаторски мрежни пролаз", "newApiAggregatorToggleHint": "Омогућава детекцију стања за New-API / One-API / Sub2API агрегаторске чворове. Контролна табла ће приказати ознаку стања, а рутирање са провером квоте ће заобилазити исцрпљене налоге.", "newApiAggregatorConsoleApiKeyHint": "Системски приступни токен за /api/user/self крајњу тачку агрегатора. Није API кључ за рутирање.", "newApiAggregatorUserIdHint": "Вредност New-Api-User заглавља која се користи за преузимање стања квоте корисника агрегатора.", @@ -5873,7 +5873,7 @@ "hideEmail": "Сакрити имејл", "imageProviders": "Провајдери за слике", "videoProviders": "Генерисање видеа", - "embeddingRerankProviders": "Embeddings & Rerank", + "embeddingRerankProviders": "Векторске репрезентације и поновно рангирање", "imagesShortLabel": "Кратка ознака слика", "llmProviders": "LLM провајдери", "localProviderApiKeyOptionalHint": "Napomena za opcioni API ključ lokalnog provajdera", @@ -5883,13 +5883,13 @@ "m365TierLabel": "Copilot nivo", "m365TierHint": "Izaberite koju površinu Microsoft 365 Copilot-a ova veza koristi. Individual je podrazumevani potrošački BizChat; Education i Enterprise (posao) uključuju njihove tenant površine.", "m365TierIndividualOption": "Individual (podrazumevano)", - "m365TierEduOption": "Education", + "m365TierEduOption": "Образовање", "m365TierEnterpriseOption": "Enterprise / Posao", "tierOverrideLabel": "Prepisivanje nivoa", "tierOverrideAuto": "Automatski (rutiranje odlučuje)", "tierOverrideFree": "Besplatno", "tierOverrideCheap": "Jeftino", - "tierOverridePremium": "Premium", + "tierOverridePremium": "Премијум", "tierOverrideHelpText": "Fiksirajte ovog provajdera na nivo rutiranja umesto da OmniRoute to zaključuje na osnovu cene modela.", "museSparkWebCookieHint": "Napomena za Muse Spark Web kolačić", "museSparkWebCookiePlaceholder": "Placeholder za Muse Spark Web kolačić", @@ -6020,7 +6020,7 @@ "providerDetailFastDefaultLabel": "Fast подразумевано", "providerDetailBrowserManualConnect": "Веб/ручно повезивање", "providerDetailAuthUrl": "URL за аутентикацију", - "providerDetailCallbackUrl": "Callback URL", + "providerDetailCallbackUrl": "URL за повратни позив", "providerDetailValidClaudeCredentialsFile": "Валидан фајл Claude креденцијала", "providerDetailPathAutoDetectedAllOs": "Путања се аутоматски детектује по OS-у (Linux/Mac/Windows).", "providerDetailMyClaudeAccountPlaceholder": "Мој Claude налог", @@ -6035,7 +6035,7 @@ "claudeImportEntryName": "ставка {number}", "claudeImportParseError": "грешка при рашчлањивању", "claudeImportNoValidEntries": "Нема валидних ставки за увоз", - "webFetch": "Web Fetch", + "webFetch": "Преузимање веб-садржаја", "webFetchTooltip": "Провајдери који извлаче садржај са веб URL адреса (HTML → Markdown, scrape, снимак екрана)", "webFetchProvidersHeading": "Web Fetch провајдери", "compatibleProvidersDesc": "OpenAI-компатибилни и Anthropic-компатибилни крајњи тачке које хостујете или конфигуришете сами. Усмерите било који OpenAI SDK на своју URL адресу и рутирajте захтеве овде.", @@ -6367,15 +6367,15 @@ "checkWebToken": "Провери токен", "huggingchatLabel": "HuggingChat (Бесплатно)", "huggingchatDesc": "Бесплатан LLM ћаскање преко huggingface.co/chat", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe веб", "poeWebDesc": "Ћаскање са више модела преко poe.com", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice веб", "veniceWebDesc": "AI ћаскање фокусирано на приватност", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel веб", "v0VercelWebDesc": "Генерисање кода помоћу AI преко v0.dev", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi веб", "kimiWebDesc": "Потрошачко ћаскање Moonshot AI преко www.kimi.com (међународно, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola веб", "doubaoWebDesc": "ByteDance AI ћаскање преко dola.com", "overrideBaseUrlAdvanced": "Напредно: преклапање основног URL-а", "overrideBaseUrlHint": "Напредно: усмерите овог уграђеног провајдера на прилагођену крајњу тачку. Оставите празно да користите подразумевану вредност.", @@ -6468,17 +6468,17 @@ "pageLoadErrorId": "ID грешке: {id}", "pageLoadErrorRetry": "Покушај поново", "pageLoadErrorTitle": "Учитавање добављача није успело", - "playgroundTitle": "Playground", + "playgroundTitle": "Окружење за тестирање", "providerDetailConnectionFlexActive": "Codex flex ниво услуге је активан за ову везу", "providerDetailConnectionPriorityActive": "Codex priority ниво услуге је активан за ову везу", "providerDetailGlobalFlexActive": "Глобални Codex flex ниво услуге је активан", "providerDetailGlobalPriorityActive": "Глобални Codex priority ниво услуге је активан", "proxiesDistributed": "Дистрибуирано {assigned} додела(е) проксија на {tagLabel}{total} веза(е).", - "rerankEndpoint": "Rerank", + "rerankEndpoint": "Поновно рангирање", "savedModelEndpointSettings": "Подешавања модел ендпоинта су сачувана", "searchByModelAria": "Претрага по моделу", "selectSupportedEndpoint": "Изаберите бар једну подржану крајњу тачку", - "antigravityClientProfileHarness": "Harness / CLI" + "antigravityClientProfileHarness": "Окружење / CLI" }, "settings": { "title": "Подешавања", @@ -6530,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "одбаци параграфе који садрже: {items}", "routingSummarizeDropParagraphStartsWith": "одбаци параграфе који почињу са: {items}", "routingSummarizeReplaceText": "замени \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "регуларни израз /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "одбаци блокове који садрже: {items}", "routingSummarizePrependSystemBlock": "додај блок на почетак: \"{text}\"", "routingSummarizeAppendSystemBlock": "додај блок на крај: \"{text}\"", @@ -6714,7 +6714,7 @@ "enableProxy": "Омогући proxy", "perKeyProxyEnabled": "Омогући додељивање proxy-ја по кључу", "perKeyProxyEnabledDesc": "Када је омогућено, свака веза провајдера може користити своју сопствену proxy доделу", - "proxyUrl": "Proxy URL", + "proxyUrl": "URL проксија", "pricingRates": "Формат цена", "currentPricing": "Тренутни преглед цена", "loadingPricing": "Учитавање података о ценама...", @@ -7056,7 +7056,7 @@ "routingAdvancedGuideTitle": "Napredne smernice za rutiranje", "routingAdvancedGuideHint1": "Ova strategija je sinhronizovana i sa novim podrazumevanim podešavanjima kombinacija i sa globalnim rezervnim rutiranjem naloga.", "routingAdvancedGuideHint2": "Koristite Fill First za predvidljiv prioritet naloga, Round Robin plus Sticky Limit za grupe naloga, i P2C za otpornost na kašnjenje.", - "fillFirst": "Fill First", + "fillFirst": "Прво попуни", "fillFirstDesc": "Koristi naloge po redosledu prioriteta", "roundRobin": "Round Robin", "roundRobinDesc": "Kruži kroz sve naloge", @@ -7074,15 +7074,15 @@ "quotaWeightedDesc": "Прескочите налоге са исцрпљеном квотом, а затим изаберите међу преосталима сразмерно преосталој квоти, подељеној оптерећењем захтева у току. Постојећи разговори остају везани за исти налог.", "strictRandom": "Strogo nasumično", "strictRandomDesc": "Promešaj špil — koristi svaki nalog jednom prije reme šanja", - "stickyLimit": "Sticky Limit", + "stickyLimit": "Ограничење задржавања", "stickyLimitDesc": "Broj pozivа po nalogu pre prebacivanja kada globalno rezervno rutiranje naloga koristi Round Robin", "routingStrategyTitle": "Strategija rutiranja", "routingStrategySubtitle": "Uklapanje sa 9router: kružno rutiranje naloga, sticky limiti i rotacija kombinacija", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Кружна расподела", "accountRoundRobinDesc": "Kruži kroz naloge radi raspodele opterećenja", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Комбинована кружна расподела", "comboRoundRobinDesc": "Kruži kroz ciljeve kombinacija umesto da uvek počinje sa prvim", - "comboStickyLimit": "Combo Sticky Limit", + "comboStickyLimit": "Комбиновано ограничење задржавања", "comboStickyLimitDesc": "Broj poziva po cilju kombinacije pre prebacivanja", "routingStrategyAccountSummary": "Raspodela zahteva po nalozima sa {limit} poziva po nalogu.", "routingStrategyFillFirstSummary": "Коришћење налога по редоследу приоритета (Fill First).", @@ -7574,7 +7574,7 @@ "qdrantEmbeddingModel": "Модел за уградњу (embedding)", "qdrantHelpTitle": "Помоћ за брзо подешавање", "qdrantHelpQuickTitle": "Брзо подешавање (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", + "qdrantHelpStep1": "1. Хост: Qdrant IP/URL, порт: 6333, колекција: omniroute_memory.", "qdrantHelpStep2": "2. Ако користите nvidia/llama-nemotron-embed-vl-1b-v2:free, користите димензију колекције 2048.", "qdrantHelpStep3": "3. Поље модела: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", "qdrantHelpStep4": "4. Сачувајте, тестирајте везу, затим тестирајте претрагу.", @@ -7953,15 +7953,15 @@ "cliproxyapiImportAuthButton": "Uvezi naloge", "payloadRulesTitle": "Pravila za Payload", "payloadRulesDesc": "Konfigurišite izmene payload-a zahteva po modelu i protokolu. Promene se čuvaju u podešavanjima i odmah se učitavaju (hot reload) u runtime nakon čuvanja.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "подразумевано", "payloadRuleDefaultDesc": "Primenjuje parametre samo kada ciljana putanja nije prisutna u odlaznom payload-u.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "замена", "payloadRuleOverrideDesc": "Nameće vrednosti na payload, zamenjujući sve što je već prisutno na toj putanji.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "филтер", "payloadRuleFilterDesc": "Uklanja blokirane parametre iz payload-a pre nego što se pošalje zahtev ka upstream serveru.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Slično kao default, ali se string vrednosti prvo parsiraju kao JSON kad je to moguće. Zastareli input alijas default-raw se takođe prihvata prilikom čuvanja.", - "payloadEditorTitle": "Editor", + "payloadEditorTitle": "Уређивач", "payloadEditorDesc": "Koristi oblik runtime šeme: default, override, filter, defaultRaw. API takođe prihvata zastareli input ključ default-raw.", "payloadEditorReady": "Spremno", "payloadResetInfo": "Editor je resetovan na neutralni šablon. Sačuvajte da biste ga primenili.", @@ -8609,17 +8609,17 @@ }, "intensity": { "lite": "Lite", - "full": "Full", - "ultra": "Ultra" + "full": "Потпуно", + "ultra": "Ултра" } }, "modeOptions": { "default": "Подразумевано", "off": "Искључено", - "lite": "Lite", + "lite": "Лајт", "standard": "Стандардно", "aggressive": "Агресивно", - "ultra": "Ultra", + "ultra": "Ултра", "responsesToolOutput": "Излаз алата за одговоре" } }, @@ -8892,7 +8892,7 @@ "fallbackRouting": "Резервно рутирање", "fallbackRoutingDescription": "Понови неуспеле захтеве провајдера преко CLIProxyAPI", "enableFallback": "Омогући резервну опцију", - "cliproxyUrl": "CLIProxyAPI URL", + "cliproxyUrl": "URL за CLIProxyAPI", "fallbackCodes": "Резервни статус кодови (раздвојени зарезом)", "invalidUrl": "Неважећи URL — мора почети са http:// или https://", "saved": "Сачувано", @@ -8961,7 +8961,7 @@ "metaTitle": "Playground за преводилац | OmniRoute", "metaDescription": "Отклањање грешака, тестирање и визуализација превода API формата између провајдера", "playgroundTitle": "Playground за преводилац", - "playground": "Playground", + "playground": "Окружење за тестирање", "realtime": "Активност превода у реалном времену", "chatTester": "Тестер ћаскања", "testBench": "Тест банк", @@ -9158,7 +9158,7 @@ "liveMonitorDescriptionSuffix": ", ili spoljne API pozive za generisanje događaja.", "streamTransformer": "Transformator toka", "modeDescriptionStreamTransformer": "Pokrenite SSE tokove chat completions kroz Responses transformator.", - "streamTransformerTitle": "Responses Stream Transformer", + "streamTransformerTitle": "Трансформатор тока одговора", "streamTransformerDescription": "Nalepite SSE tok chat completions, propustite ga kroz OmniRoute Responses transformator i pregledajte generisane response.* događaje pre povezivanja klijenta.", "loadTextSample": "Učitaj tekstualni uzorak", "loadToolSample": "Učitaj uzorak poziva alata", @@ -9343,7 +9343,7 @@ "evaluateStepDescription": "Odgovori se upoređuju sa očekivanim kriterijumima. Pogledajte prolaz/pad za svaki slučaj sa metrikama latencije i detaljnom povratnom informacijom.", "evalsStrategyContainsLabel": "Sadrži", "evalsStrategyExactLabel": "Potpuno poklapanje", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Регуларни израз", "evalsStrategyCustomLabel": "Prilagođena logika", "evalsStrategyContainsDescription": "Provera da li LLM izlaz sadrži očekivani podniz.", "evalsStrategyExactDescription": "Provera da li se LLM izlaz potpuno poklapa sa očekivanom vrednošću.", @@ -9465,14 +9465,14 @@ "noQuotaDataAvailable": "Нема доступних података о квоти", "noAccountsForTierFilter": "Нема налога за филтер нивоа", "tierAll": "Све", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "tierEnterprise": "Пословни", + "tierTeam": "Тимски", + "tierBusiness": "Пословни", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "Besplatno", - "tierLite": "Lite", + "tierLite": "Лаки", "tierUnknown": "Nepoznato", "statTotal": "Укупно", "statCritical": "Критично", @@ -10189,7 +10189,7 @@ "endpointSearchAnalyticsNote": "Аналитика и метрике за захтеве претраге.", "endpointVideoNote": "Генерисање видеа (ComfyUI, SD WebUI workflow-ови).", "endpointMusicNote": "Генерисање музике путем ComfyUI workflow-ова.", - "endpointMessagesNote": "Anthropic-native messages endpoint.", + "endpointMessagesNote": "Anthropic-ова изворна крајња тачка за поруке.", "endpointCountTokensNote": "Пребројавање токена за дати payload поруке.", "endpointFilesNote": "Отпремање датотека за мултимодалне уносе.", "endpointBatchesNote": "Обрада у серијама (batch) за масовне API захтеве.", @@ -10260,7 +10260,7 @@ "techUsersSubtitle": "Дубока анализа архитектуре, API-ја и унутрашњих детаља", "apiExplorerMetadataTitle": "API Explorer — OmniRoute документација", "apiExplorerMetadataDescription": "Интерактивни API explorer — испробајте OmniRoute крајње тачке уживо са одговорима у реалном времену", - "apiExplorerTitle": "API Explorer", + "apiExplorerTitle": "Истраживач API-ја", "apiExplorerDescription": "Испробајте OmniRoute крајње тачке уживо. Изаберите крајњу тачку, конфигуришите захтев и погледајте одговор у реалном времену.", "apiExplorerSseStarted": "SSE стрим је покренут — проверите терминал/devtools за излаз у реалном времену.", "apiExplorerError": "Грешка: {message}", @@ -10419,7 +10419,7 @@ "cliSkillsSubtitle": "{count} вештина — контрола OmniRoute преко omniroute терминалског бинарног фајла", "howToUseStep1": "Кликните на {copyUrl} за вештину о којој желите да ваш агент зна.", "howToUseStep2": "У вашем AI агенту (Claude, Cursor, Cline…), реците:", - "howToUseStep2Code": "Use the skill at [pasted-url]", + "howToUseStep2Code": "Користи вештину на [pasted-url]", "howToUseStep3": "Агент преузима SKILL.md и учи OmniRoute API или CLI — без потребе за ручном документацијом." }, "cloudAgents": { @@ -10640,7 +10640,7 @@ "totalProcessed": "Укупно обрађених захтева", "disabled": "Искључено", "totalRequests": "Укупно захтева", - "reasoningCache": "Reasoning Replay", + "reasoningCache": "Поновно извођење резоновања", "reasoningCacheDesc": "Чува размишљање модела за токове са више корака позивања алата", "reasoningEntries": "Активни уноси", "reasoningReplayRate": "Стопа поновног репродуковања", @@ -10783,7 +10783,7 @@ "saveConnection": "Сачувај везу", "gheDescription": "Унесите основни URL своје GitHub Enterprise инстанце (нпр. https://ghe.yourcompany.com).", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "URL за GitHub Enterprise", "gheUrlRequired": "GitHub Enterprise URL је обавезан", "gitlabDuoSetupTitle": "Подешавање GitLab Duo OAuth-а", "gitlabDuoSetupMessage": "GitLab Duo OAuth није подешен. Региструјте OAuth апликацију на {applicationsUrl} са redirect URI {redirectUri} и обимима „{scopes}“, затим подесите {clientIdEnv} (и опционо {clientSecretEnv}) и поново покрените.", @@ -10888,7 +10888,7 @@ "save": "Сачувај", "bulkModalTitle": "Групно додељивање proxy сервера", "bulkLabelScope": "Опсег", - "bulkLabelProxy": "Proxy", + "bulkLabelProxy": "Прокси", "bulkClearAssignment": "(Обриши доделу)", "bulkLabelScopeIds": "ID-ови опсега (раздвојени зарезом или новим редом)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", @@ -10919,7 +10919,7 @@ "assignmentsCount": "{count} доделa", "noData": "—", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Поправи", "relayAuthMissing": "недостаје аутентикација", @@ -10962,15 +10962,15 @@ "poolStrategyLabel": "Стратегија ротације", "poolStrategyHint": "round-robin циклично пролази кроз чланове по редоследу; random бира равномерно насумично; sticky задржава једног члана током временског прозора; latency-optimized бира најбржи на основу логова.", "poolStrategyFailed": "Ажурирање стратегије ротације није успело", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Кружно распоређивање", "strategyRandom": "Насумично", - "strategySticky": "Sticky", + "strategySticky": "Стална веза", "strategyLatency": "Оптимизовано по кашњењу", "poolMembersLabel": "Чланови групе ({count})", "poolNoMembers": "Нема proxy-ja у овој групи још.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# излаз} other {# излаза}} користи {connections, plural, one {# веза} other {# веза}} · до {max} на једном излазу · последњих {hours} ч", + "poolEgressObservationEmpty": "Није забележен саобраћај у последњих {hours} ч", + "poolEgressObservationHint": "Израчунато на основу евиденције проксија током периода: различите одлазне IP адресе забележене за чланове овог скупа и OmniRoute везе које су их користиле. „На једном излазу“ односи се на цео период, а не на исти тренутак. Закључавање по IP адреси услед грешке 429 паузира само везе исте породице провајдера.", "poolRemove": "Уклони", "poolRemoveFailed": "Уклањање proxy-ja из групе није успело", "poolAddLabel": "Додај proxy", @@ -11008,17 +11008,17 @@ "generatedImage": "Генерисана слика {index}", "save": "Сачувај", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", - "completions": "Completions", + "chat": "Довршавања ћаскања", + "responses": "Одговори", + "completions": "Допуне", "images": "Генерисање слика", - "embeddings": "Embeddings", + "embeddings": "Уграђивања", "speech": "Претварање текста у говор", "transcription": "Транскрипција аудио записа", "video": "Генерисање видеа", "music": "Генерисање музике", "moderations": "Модерације", - "rerank": "Rerank", + "rerank": "Поновно рангирање", "search": "Веб претрага", "webFetch": "Преузимање веб садржаја" }, @@ -11132,7 +11132,7 @@ "jsonSchemaEditor": "Уређивач JSON шеме", "schemaValidated": "Шема је потврђена", "validateSchema": "Потврди шему", - "seed": "Seed", + "seed": "Почетна вредност", "stopSequences": "Секвенце заустављања", "stopSequencesPlaceholder": "нпр. \"\\n\\n\" или \"END\"", "autoProvider": "Аутоматски", @@ -11244,7 +11244,7 @@ "searchResultFallback": "Резултат {number}", "noKeysFound": "Нису пронађени API кључеви. Додајте један у одељку Кључеви.", "exampleLabel": "Пример", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} улазних / {tokensOut} излазних токена", "defaultKey": "(подразумевано)", "clear": "Обриши", @@ -11289,7 +11289,7 @@ "refresh": "Освежи", "columnsLabel": "Колоне", "cacheSem": "СЕМ", - "cacheUp": "UP", + "cacheUp": "АКТИВНО", "semantic": "Семантички", "upstream": "Извориште", "semanticCacheHit": "Погодак семантичке кеша (испоручио OmniRoute)", @@ -11450,9 +11450,9 @@ "allLevels": "Сви нивои", "allProviders": "Сви провајдери", "total": "укупно", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "ok": "У РЕДУ", + "err": "ГРЕШКА", + "timeoutShort": "ИСТЕК ВРЕМЕНА", "direct": "директно", "newest": "Најновије", "oldest": "Најстарије", @@ -11473,7 +11473,7 @@ "chat": "Ћаскање", "music": "Музика", "responses": "Одговори", - "rerank": "Rerank", + "rerank": "Поновно рангирање", "video": "Видео", "embeddings": "Уградње", "transcription": "Транскрипција" @@ -11678,7 +11678,7 @@ "endpointsBaseUrl": "Основни URL", "endpointsCollapse": "Скупи", "endpointsExpand": "Прошири", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Изворно за Anthropic", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — само codex", "betaText": "Quota Share функционише, али се очекују грешке. Пронашли сте једну? Молимо пријавите је.", @@ -12009,7 +12009,7 @@ "requestTelemetryDescription": "Разлагање 7-фазног процеса (последњих 5 минута)" }, "relay": { - "title": "Serverless Relay Proxies", + "title": "Проксији за прослеђивање без сервера", "description": "Направите јавне API крајње тачке које прослеђују захтеве ка OmniRoute уз ограничење брзине и контролу приступа", "created": "Relay токен креиран", "createFailed": "Креирање токена није успело", @@ -12047,7 +12047,7 @@ "agentBridgeModeDesc": "Снимај саобраћај са свих повезаних IDE агента", "customHostsMode": "Прилагођени хостови", "customHostsModeDesc": "Додајте одређене хостове за пресретање", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "HTTP прокси", "httpProxyModeDesc": "Користи HTTP_PROXY променљиву окружења", "systemWideMode": "На нивоу система", "systemWideModeDesc": "Пресретни сав системски саобраћај (напредно)", @@ -12064,7 +12064,7 @@ "resumeBtn": "Настави", "clearBtn": "Обриши све", "exportHar": "Извези .har", - "recordSession": "REC", + "recordSession": "СНИМ.", "stopSession": "Заустави", "liveBadge": "уживо", "offlineBadge": "ван мреже", @@ -12397,15 +12397,15 @@ "description": "Osnovne krajnje tačke za inferencu kompatibilne sa OpenAI: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank i Responses API. Primarna integracijska površina za AI agente." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Опслуживање", "description": "Pokrenite, zaustavite i restartujte OmniRoute server iz CLI-a. Upravljajte daemon režimom, konfiguracijom porta, automatskim oporavkom, integracijom sa sistemskom trakom i prečicom za otvaranje kontrolne table." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Стање", "description": "Provera zdravlja servera, statusa komponenti i uživo metrika iz CLI-a. Pokrenite `health`, `health components` i `health watch` za kontrolnu tablu u realnom vremenu za circuit breakers i status provajdera." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Провајдери", "description": "Upravljajte konekcijama sa provajderima iz CLI-a: prikaz dostupnih/konfigurisanih provajdera, dodavanje, testiranje, test-all, validacija, rotacija API ključeva i pregled metrika po provajderu." }, "cli-keys": { @@ -12417,7 +12417,7 @@ "description": "Pretražujte dostupne AI modele, prikažite aliase modela i pregledajte kompletan katalog modela iz CLI-a. Filtrirajte po provajderu, pretražujte po mogućnostima i razrešavajte varijante naziva modela." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Ћаскање", "description": "Slanje chat completions, striming odgovora i pokretanje interaktivne REPL sesije iz CLI-a. Podržava sve OmniRoute provajdere, combo rutiranje i konfiguraciju sistemskog prompta." }, "cli-routing": { @@ -12992,7 +12992,7 @@ "description": "Дозволи опоравку тока да поново затражи одговор и споји га након што су бајтови већ стигли до клијента." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Омогућите безбедан наставак позива алатке усред тока: никада не настављајте прекинути ток након што је позив алатке послат (било да је још у току или је већ завршен) и зауставите се након једног празног наставка уместо коришћења целокупног броја покушаја." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Једном пребаци на сродну везу када се ток затвори пре слања иједног корисног оквира, а ограничени поновни покушај на истој вези је искоришћен. Ако нема употребљиве сродне везе, враћа се изворна early-EOF грешка. Искључено: early-EOF остаје коначан након поновног покушаја." @@ -13035,12 +13035,12 @@ "description": "Наставите нестримујуће серверске позиве алата док модел не врати одговор који клијент може да користи." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Порекло вредности Retry-After", + "description": "За обједињене одговоре 429/503 о недоступности изоставите Retry-After када није познато конкретно будуће време поновног покушаја, уместо слања вештачке вредности од 1s; додајте error.retry_after_provenance и читајте текстуалне назнаке за поновни покушај на путањама пражњења комбинације." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Заустављања инфраструктуре за заштићени приоритет као 502", + "description": "Одговорите статусом 502 уместо 503 када приоритетно одредиште које користи резервну опцију само због квоте заустави комбинацију из разлога за који се може доказати да није квота: активираног прекидача кола провајдера или предиктивног прескакања због кашњења." } } }, @@ -13503,7 +13503,7 @@ "localStateSaveFailed": "Није успело чување локалних Radar подешавања", "guidedCombos": "Вођене комбинације", "offers": "Понуде", - "intel": "Intel" + "intel": "Увиди" }, "radarCombosPage": { "title": "Radar вођене комбинације", @@ -13557,7 +13557,7 @@ "lockedOut": "Potrebna je vaša pažnja" }, "table": { - "status": "Status", + "status": "Статус", "provider": "Provajder", "connectionId": "Konekcija", "authType": "Autentifikacija", @@ -13577,9 +13577,9 @@ "timeline": { "title": "Prelasci prekidača", "window": "Period", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 ч", + "window6h": "6 ч", + "window24h": "24 ч", "empty": "Нема прелаза у изабраном временском оквиру", "currentState": "Тренутно стање", "state": { @@ -13654,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Одбиј захтеве пре слања када циљни модел не поседује потребне могућности (визуелни унос, алати, структурирани излаз, контекстни прозор). Штити директне захтеве ка појединачном добављачу који заобилазе филтер компатибилности комбо-слоја.", "featureFlagDisableContextWindowChecksDescription": "Прескочи локалну провера контекстног прозора и максималног броја улазних токена OmniRoute-а за директне захтеве ка појединачном моделу. Добављачи услуга и даље примењују своја стварна ограничења. Компресија упита и ограничења излазних токена остају активни.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Статистика претраге и недавне претраге рачунају само добављаче који и даље имају активну везу (добављачи без кључа, као што је duckduckgo-free, увек се рачунају). Искључивањем се задржава сваки сачувани ред претраге са ID-ом добављача.", "publicSystem": { "notFound": { "title": "Страница није пронађена", @@ -13868,9 +13868,9 @@ "orPasteManually": "или ручно налепите токен", "manualInstructions": "Пријавите се на solo.trae.ai, отворите DevTools → Network, пошаљите било коју поруку у ћету и копирајте JWT из заглавља захтева Authorization: Cloud-IDE-JWT {tokenPlaceholder}. Трајање JWT-а је око 14 дана. Опциона поља идентитета долазе из common_params у истом телу захтева.", "accessTokenLabel": "Приступни токен (Cloud-IDE-JWT)", - "webId": "Web ID", + "webId": "Веб ID", "optional": "опционо", - "bizUserId": "Biz User ID", + "bizUserId": "ID пословног корисника", "userUniqueId": "Јединствени ID корисника", "scope": "Опсег", "tenant": "Закупац", @@ -13953,12 +13953,12 @@ "started": "Započeto", "ended": "Završeno", "duration": "Trajanje", - "status": "Status", + "status": "Статус", "provider": "Provajder", "tokens": "Tokeni", "active": "Aktivno", "other": "Ostalo", - "tenMinutes": "10min", + "tenMinutes": "10 мин", "hour": "sat", "day": "dan", "unknownModel": "nepoznato", @@ -13969,7 +13969,7 @@ "compressionDescription": "Konfigurišite podešavanja kompresije konteksta da smanjite potrošnju tokena i troškove.", "relayTitle": "OmniRoute — Relejni proksiji", "relayDescription": "Bezserverski relejni proksi endpointi za vašu AI infrastrukturu", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Инспектор саобраћаја — OmniRoute", "trafficInspectorDescription": "Nadgledajte LLM pozive + debagujte HTTPS saobraćaj bilo koje aplikacije" }, "conductor": { @@ -14051,11 +14051,11 @@ "filterSources": "Извори", "filterProviders": "Провајдери", "clearFilters": "Обриши филтере", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Агент у облаку", "sourceA2A": "A2A", "sourceConductor": "Conductor", "sourceStale": "Застарело од {since}", - "sourceOffline": "Offline", + "sourceOffline": "Ван мреже", "sourceCollapse": "Скупи", "sourceExpand": "Прошири", "stateQueued": "У реду чекања", @@ -14120,7 +14120,7 @@ "trialDays": "{days, plural, one {# дан} other {# дана}}" }, "radarIntelPage": { - "title": "Radar Intel", + "title": "Радарски увиди", "subtitle": "ELO рангирања у власништву Radar-а и стварне промене у каталогу.", "backToRadar": "Назад на Radar", "loading": "Учитавање Intel-а...", diff --git a/src/i18n/messages/sv.json b/src/i18n/messages/sv.json index 24f39a19fc..5b0bfe8350 100644 --- a/src/i18n/messages/sv.json +++ b/src/i18n/messages/sv.json @@ -31,7 +31,7 @@ "active": "Aktiv", "inactive": "Inaktiv", "noData": "Inga data tillgängliga", - "nothingHere": "Nothing here yet", + "nothingHere": "Inget här ännu", "configure": "Konfigurera", "manualConfig": "Manuell konfiguration", "manage": "Hantera", @@ -47,7 +47,7 @@ "time": "Tid", "details": "Detaljer", "created": "Skapad", - "lastUsed": "Last Refreshed", + "lastUsed": "Senast uppdaterad", "loadMore": "Ladda mer", "noResults": "Inga resultat hittades", "reloadPage": "Ladda om sidan", @@ -70,8 +70,8 @@ "note": "Obs", "free": "Gratis", "skipToContent": "Hoppa till innehållet", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "Servern har problem. Vissa funktioner kan vara otillgängliga.", + "maintenanceServerUnreachable": "Servern kan inte nås. Ansluter igen...", "accept": "Acceptera", "accountId": "Konto-ID", "alias": "Alias", @@ -98,7 +98,7 @@ "skill": "Skicklighet", "sortBy": "Sortera efter", "sortOrder": "Sorteringsordning", - "tab": "Tab", + "tab": "Flik", "text": "Text", "textarea": "Textområde", "tool": "Verktyg", @@ -108,7 +108,7 @@ "whitelist": "Vitlista", "blacklist": "Svartlista", "resolve": "Lös", - "force": "Force", + "force": "Tvinga", "base64url": "Base64 URL", "hex": "Hex", "range": "Räckvidd", @@ -120,7 +120,7 @@ "compatible": "Kompatibel", "chat-completions": "Chattavslut", "oauth": "OAuth", - "auth_token": "Auth Token", + "auth_token": "Autentiseringstoken", "crypto": "Krypto", "hours": "Timmar", "selfsigned": "Självsignerad", @@ -150,13 +150,13 @@ "Failed to reset pricing": "Det gick inte att återställa prissättningen", "apikey": "API-nyckel", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Gå till kontrollpanelen", + "checkSystemStatus": "Kontrollera systemstatus", + "selectModel": "Välj modell", "addModel": "Lägg till modell", "effortNone": "Ingen", "effortLow": "Låg", - "effortMedium": "Medium", + "effortMedium": "Medel", "effortHigh": "Hög", "effortExtraHigh": "Extra hög", "effortMax": "Max", @@ -164,10 +164,10 @@ "reasoningEffort": "Resonemangsinsats", "wireApi": "Wire API", "modelAliases": "Modellalias", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Kombinationer", + "noModelsFound": "Inga modeller hittades", + "clear": "Rensa", + "done": "Klar", "selectAll": "Markera alla", "unselectAll": "Avmarkera alla", "visibleModels": "synliga", @@ -184,533 +184,533 @@ "selectAllProviders": "Kontrollera alla leverantörer", "clearProviderSelection": "Avmarkera leverantörer", "providersSelectedCount": "{count} leverantörer kontrollerade", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Ett fel inträffade", + "comboDeleted": "Kombinationen har tagits bort", + "hide": "Dölj", + "creating": "Skapar", + "comboCreated": "Kombinationen har skapats", + "swapFormats": "Byt format", + "daysAgo": "Dagar sedan", + "retries": "Återförsök", + "errorDuringRestore": "Fel vid återställning", + "eventsAppearHint": "Tips om var händelser visas", + "noLockouts": "Inga spärrar", + "webSearchDesc": "Beskrivning av webbsökning", + "audioProvidersHeading": "Rubrik för ljudleverantörer", "cloudAgentProviders": "Molnagentleverantörer", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Minuter sedan", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "Automatisk liveuppdatering", + "webSearch": "Webbsökning", + "anthropicPrefixPlaceholder": "Platshållare för Anthropic-prefix", + "addModelToCombo": "Lägg till modell i kombination", + "failedToLoad": "Det gick inte att läsa in", + "categoryMedia": "Kategorin Media", + "enableCloud": "Aktivera molnet", + "expirationBannerExpiringSoon": "Förfallobanderoll: upphör snart", + "retry": "Försök igen", + "embeddings": "Inbäddningar", + "errorCount": "Antal fel", + "backupReasonManual": "Orsak till säkerhetskopiering: manuell", + "safeSearchModerate": "Säker sökning: måttlig", + "activeLimiters": "Aktiva begränsare", + "a2aCardTitle": "Titel för A2A-kort", + "cloudWorkerUnreachable": "Molnarbetaren kan inte nås", + "testFailed": "Testet misslyckades", + "compatibleBaseUrlHint": "Tips om kompatibel bas-URL", + "usageTracking": "Användningsspårning", + "disableCloudTitle": "Inaktivera molnet – titel", + "noConnections": "Inga anslutningar", + "providerHealth": "Leverantörsstatus", + "confirmDbImport": "Bekräfta databasimport", + "notAvailableSymbol": "Symbol för ej tillgänglig", + "backupsAvailable": "Tillgängliga säkerhetskopior", + "providerAuto": "Automatiskt val av leverantör", + "newProviderNamePlaceholder": "Platshållare för nytt leverantörsnamn", + "a2aQuickStartStep2": "A2A-snabbstart, steg 2", + "ok": "OK", + "available": "Tillgänglig", + "noBackupYet": "Ingen säkerhetskopia ännu", + "more": "Mer", + "noCompatibleYet": "Inga kompatibla ännu", + "multiProvider": "Flera leverantörer", + "repairEnvHint": "Tips om att reparera miljön", + "disablingCloud": "Inaktiverar molnet", + "testBench": "Testbänk", + "valid": "Giltig", + "cloudBenefitShare": "Molnfördel: delning", + "mcpCardTitle": "Titel för MCP-kort", + "disableConfirm": "Bekräfta inaktivering", + "filters": "Filter", + "expirationBannerExpiredDesc": "Beskrivning för utgången förfallobanderoll", + "saveComboDefaults": "Spara standardvärden för kombinationen", + "cloudConnectedVerified": "Molnanslutningen har verifierats", + "uptime": "Drifttid", + "compatibleProdPlaceholder": "Platshållare för kompatibel produktionsmiljö", + "fallbackChainsTitle": "Titel för reservkedjor", + "oauthLabel": "OAuth-etikett", + "a2aCardDescription": "Beskrivning av A2A-kort", + "okShort": "OK", + "maintenance": "Underhåll", + "formatConverter": "Formatkonverterare", + "zedImportNetworkError": "Nätverksfel vid import från Zed", + "apiKeyLabel": "API-nyckeletikett", + "noModelsForProvider": "Inga modeller för leverantören", + "mcpCardDescription": "Beskrivning av MCP-kort", + "apiTypeLabel": "Etikett för API-typ", + "configuredProvidersLabel": "Etikett för konfigurerade leverantörer", + "maxRetriesLabel": "Etikett för maximalt antal återförsök", + "title": "Titel", + "output": "Utdata", + "prefixHint": "Prefixtips", + "skipWizard": "Hoppa över guiden", + "failedCount": "Antal misslyckade", + "confirmDbImportDesc": "Beskrivning av bekräftelse för DB-import", + "entries": "Poster", + "until": "Till", + "disableCombo": "Inaktivera kombination", + "liveMonitorDescriptionPrefix": "Prefix för beskrivning av liveövervakning", + "runningCount": "Antal pågående", + "noActiveConnectionsInGroup": "Inga aktiva anslutningar i gruppen", + "savedSuccessfully": "Sparades", + "systemStorage": "Systemlagring", + "videoDesc": "Videobeskrivning", + "maxResults": "Maximalt antal resultat", + "timeRangeMonth": "Tidsintervall: månad", + "testSummary": "Testsammanfattning", + "failedSetPassword": "Det gick inte att ange lösenordet", + "audio": "Ljud", + "restore": "Återställ", + "disableWarning": "Varning vid inaktivering", + "moderationsDesc": "Beskrivning av modereringar", + "providerHealthStatusAria": "ARIA för leverantörens hälsostatus", + "modelNamePlaceholder": "Platshållare för modellnamn", + "mcpQuickStartStep2": "Steg 2 i snabbstarten för MCP", + "quickStart": "Snabbstart", + "fullExportFailedWithError": "Fullständig export misslyckades med ett fel", + "loadingBackups": "Läser in säkerhetskopior", + "anthropicBaseUrlPlaceholder": "Platshållare för Anthropic-bas-URL", + "description": "Beskrivning", + "noProviderFound": "Ingen leverantör hittades", + "auto": "Automatiskt", + "protocolsDescription": "Beskrivning av protokoll", + "cloudSessionNote": "Anmärkning om molnsession", + "advancedSettings": "Avancerade inställningar", + "defaultStrategy": "Standardstrategi", + "purgeExpiredLogs": "Rensa utgångna loggar", + "justNow": "Nyss", + "providerTestFailed": "Leverantörstestet misslyckades", + "openaiBaseUrlPlaceholder": "Platshållare för OpenAI-bas-URL", + "image": "Bild", + "failedCreateChain": "Det gick inte att skapa kedjan", + "importDatabase": "Importera databas", + "allDataLocal": "Alla data är lokala", + "sectionTitle": "Avsnittsrubrik", + "failedToggle": "Det gick inte att växla", + "editCombo": "Redigera kombination", + "testResults": "Testresultat", + "searchQuery": "Sökfråga", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", - "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "duplicate": "Duplicera", + "createCombo": "Skapa kombination", + "searchTypeWeb": "Söktyp: webb", + "addChain": "Lägg till kedja", + "prefixLabel": "Prefixetikett", + "listModelsDesc": "Beskrivning av modellista", + "databaseSize": "Databasstorlek", + "chainCreated": "Kedjan skapades", + "providerTestTimeout": "Tidsgränsen för leverantörstestet överskreds", + "routingStrategy": "Dirigeringsstrategi", + "translateAction": "Översättningsåtgärd", + "exportFailed": "Exporten misslyckades", + "connectedVerificationPending": "Ansluten, verifiering väntar", + "a2aQuickStartTitle": "Rubrik för A2A-snabbstart", + "couldNotTest": "Det gick inte att testa", + "testAllCompatible": "Testa alla kompatibla", + "anthropicCompatibleName": "Anthropic-kompatibelt namn", + "disabling": "Inaktiverar", + "failedEnable": "Det gick inte att aktivera", + "categoryUtility": "Verktygskategori", + "customUrlOptional": "Anpassad URL (valfritt)", + "localProviders": "Lokala leverantörer", + "comboNamePlaceholder": "Platshållare för kombinationsnamn", + "memoryRss": "Minnets RSS", + "disableProvider": "Inaktivera leverantör", + "welcomeDesc": "Välkomstbeskrivning", + "nameLabel": "Namnfält", + "allOperational": "Alla fungerar", + "backupNow": "Säkerhetskopiera nu", + "providerMaxRetriesAria": "ARIA-etikett för maximalt antal återförsök för leverantör", + "textToSpeechDesc": "Beskrivning av text-till-tal", + "machineId": "Maskin-ID", + "globalProxy": "Global proxy", + "hitsMisses": "Träffar och missar", + "testDesc": "Testbeskrivning", + "chatDesc": "Chattbeskrivning", + "importSuccess": "Importen lyckades", + "chat": "Chatt", + "a2aQuickStartStep1": "Steg 1 i snabbstarten för A2A", + "importFailed": "Importen misslyckades", + "inputPlaceholder": "Platshållare för inmatning", + "providerModelsTitle": "Rubrik för leverantörsmodeller", + "lastBackup": "Senaste säkerhetskopiering", + "yourEndpoint": "Din slutpunkt", + "autoDisableThresholdDesc": "Beskrivning av tröskelvärde för automatisk inaktivering", + "rerankDesc": "Beskrivning av omrangordning", + "modelsPathPlaceholder": "Platshållare för modellsökväg", + "noCombosYet": "Inga kombinationer ännu", + "connectedVerificationPendingWithError": "Ansluten, verifiering väntar med fel", + "comboDefaultsGuideHint1": "Tips 1 i guiden för standardvärden för kombinationer", + "enableCloudTitle": "Rubrik för aktivering av molnet", + "configuredProvidersHint": "Tips om konfigurerade leverantörer", + "paused": "Pausad", + "llmProviders": "LLM-leverantörer", + "enableCombo": "Aktivera kombination", + "removeProviderOverrideAria": "ARIA-etikett för borttagning av leverantörsåsidosättning", + "nodeVersion": "Node-version", + "openai": "OpenAI", + "exportFailedWithError": "Exporten misslyckades med ett fel", + "proxyConfigured": "Proxy konfigurerad", + "concurrencyPerModel": "Samtidighet per modell", + "protocolTasksLabel": "Etikett för protokolluppgifter", + "oauthProviders": "OAuth-leverantörer", + "lockedCount": "Antal låsta", + "deleteChainConfirm": "Bekräfta borttagning av kedja", + "recentTranslations": "Senaste översättningar", + "zedImportButton": "Zed-importknapp", + "responsesDesc": "Beskrivning av svar", + "testedCount": "Antal testade", + "providersCommaSeparatedPlaceholder": "Platshållare för kommaseparerade leverantörer", + "signatureDefaults": "Standardvärden för signatur", + "errorCreating": "Fel vid skapande", + "timeRangeYear": "Tidsintervall: år", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Molnet har inaktiverats", + "deleteConfirm": "Bekräfta borttagning", + "check": "Kontrollera", + "safeSearch": "Säker sökning", + "protocolLastActivity": "Senaste protokollaktivitet", + "openMcpDashboard": "Öppna MCP-instrumentpanelen", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Etikett för chattsökväg", + "retryDelay": "Fördröjning före nytt försök", + "errorUpdating": "Fel vid uppdatering", + "ideCliIntegrations": "IDE- och CLI-integrationer", + "imageGeneration": "Bildgenerering", + "apiKeyRequired": "API-nyckel krävs", + "resetAllTitle": "Återställ allt", + "connectionError": "Anslutningsfel", + "modelName": "Modellnamn", + "apiKeyForCheck": "API-nyckel för kontroll", + "cloudRequestTimeout": "Tidsgräns för molnbegäran", + "showConfiguredOnly": "Visa endast konfigurerade", "showFreeOnly": "Endast gratis", "addFirstProvider": "Lägg till din första leverantör", "addFirstProviderDesc": "Anslut en AI-leverantör för att börja dirigera förfrågningar via OmniRoute. Du kan använda kostnadsfria leverantörer, API-nycklar eller OAuth-konton.", "learnMore": "Läs mer", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Inkludera domäner", + "promptCache": "Promptcache", + "cloudConnected": "Ansluten till molnet", + "deleteChain": "Ta bort kedja", + "chatPathPlaceholder": "Platshållare för chattsökväg", + "databasePath": "Databassökväg", + "usingLocalServer": "Använder lokal server", + "globalComboConfig": "Global kombinationskonfiguration", + "backupFailed": "Säkerhetskopieringen misslyckades", + "tabProtocols": "Flikprotokoll", + "continue": "Fortsätt", + "categorySearch": "Kategorisökning", + "rateLimitStatus": "Status för hastighetsbegränsning", + "repairEnvSuccess": "Miljön har reparerats", + "nameRequired": "Namn krävs", + "country": "Land", + "trackMetricsDesc": "Beskrivning av mätvärdesspårning", + "durationSecondsShort": "Varaktighet i sekunder, kort", + "formatConverterDescription": "Beskrivning av formatkonverterare", + "cloudBenefitAccess": "Åtkomst till molnförmåner", + "maxRetries": "Maximalt antal återförsök", + "queueTimeout": "Tidsgräns för kö", "queueDepth": "Ködjup", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Lägg till leverantör", + "realtime": "Realtid", + "totalTranslations": "Totalt antal översättningar", + "protocolActiveStreamsLabel": "Etikett för aktiva protokollströmmar", + "repairEnv": "Reparera miljö", + "modelsCount": "Antal modeller", + "viewBackups": "Visa säkerhetskopior", + "responsesApi": "Responses API", + "copyComboName": "Kopiera kombinationsnamn", + "failures": "Misslyckanden", + "failedUpdate": "Uppdateringen misslyckades", + "imageDesc": "Bildbeskrivning", + "failedCreate": "Det gick inte att skapa", + "remainingOfLimit": "Återstående av gränsen", + "protocolsTitle": "Protokoll", + "expirationBannerExpiringSoonDesc": "Beskrivning för banner om nära förestående utgång", + "source": "Källa", + "failed": "Misslyckades", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", + "mcpQuickStartStep1": "MCP-snabbstart steg 1", + "runTest": "Kör test", + "loadingFallbackChains": "Läser in reservkedjor", + "healthy": "Fungerar korrekt", "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "saveBlockWeighted": "Spara viktat block", + "zedImportNone": "Ingen Zed-import", + "noBackupsYet": "Inga säkerhetskopior ännu", + "noGlobalProxy": "Ingen global proxy", + "noModels": "Inga modeller", + "stickyLimit": "Beständig gräns", + "passedCount": "Antal godkända", + "zedImportFailed": "Zed-importen misslyckades", + "saving": "Sparar", + "testAll": "Testa alla", + "globalProxyDesc": "Beskrivning av global proxy", + "latencyP99": "Latens P99", + "connectingToCloud": "Ansluter till molnet", + "responses": "Svar", + "errorDeleting": "Fel vid borttagning", + "openaiPrefixPlaceholder": "Platshållare för Openai-prefix", + "enterPassword": "Ange lösenord", + "openA2aDashboard": "Öppna A2A-instrumentpanelen", + "enableProvider": "Aktivera leverantör", + "modeTest": "Testläge", + "failedDeleteChain": "Det gick inte att ta bort kedjan", + "providerDesc": "Leverantörsbeskrivning", + "templateLoadHint": "Tips för mallinläsning", + "lastFailure": "Senaste misslyckandet", + "moveDown": "Flytta nedåt", + "providerLabel": "Leverantörsetikett", + "clearCacheFailed": "Det gick inte att rensa cachen", + "imagesGenerations": "Bildgenereringar", + "repairEnvWorking": "Reparation av miljön pågår", + "millisecondsShort": "ms", + "globalLabel": "Global etikett", + "failuresPlural": "Misslyckanden", + "completionsLegacyDesc": "Beskrivning av äldre kompletteringar", + "searchProviders": "Sök leverantörer", + "chatPathHint": "Tips för chattsökväg", + "defaultStrategyDesc": "Beskrivning av standardstrategi", + "latencyP95": "Latens P95", + "textToSpeech": "Text till tal", + "searchType": "Söktyp", + "messages": "Meddelanden", + "aggregatorsGateways": "Aggregatorgatewayer", + "comboStrategyAria": "Kombinationsstrategi Aria", + "input": "Indata", + "testingConnection": "Testar anslutning", + "excludeDomains": "Exkludera domäner", + "webCookieProviders": "Webbcookieleverantörer", + "allTestsPassed": "Alla tester godkändes", + "openaiCompatibleName": "Openai-kompatibelt namn", + "warningCostOptimizedPartialPricing": "Varning: kostnadsoptimerad partiell prissättning", + "comboDefaultsGuideTitle": "Titel för guide om standardinställningar för kombinationer", + "hoursAgo": "Timmar sedan", + "notAvailable": "Inte tillgängligt", + "skipAndContinue": "Hoppa över och fortsätt", + "moderations": "Modereringar", + "proxyConfig": "Proxykonfiguration", + "upstreamProxyProviders": "Uppströms proxyleverantörer", + "exportAll": "Exportera alla", + "queuedCount": "Antal i kö", + "resetAll": "Återställ alla", + "noTranslations": "Inga översättningar", + "avgLatency": "Genomsnittlig latens", + "throttleStatus": "Begränsningsstatus", + "backupRetentionDesc": "Beskrivning av säkerhetskopieringens lagringstid", + "noCBData": "Inga CB-data", + "chainDeleted": "Kedjan har tagits bort", + "timeLeft": "Återstående tid", + "expirationBannerExpired": "Utgångsbanderoll: har löpt ut", + "language": "Språk", + "invalidFileType": "Ogiltig filtyp", + "monitoredProviders": "Övervakade leverantörer", + "errors": "Fel", + "heap": "Minneshög", + "chatCompletions": "Chattkompletteringar", + "exampleTemplatesHint": "Tips för exempelmallar", + "retryDelayLabel": "Etikett för fördröjning före nytt försök", + "audioTranscription": "Ljudtranskribering", + "fallbackChainsDesc": "Beskrivning av reservkedjor", + "exampleTemplates": "Exempelmallar", + "connectionsCount": "Antal anslutningar", + "modelsPathLabel": "Etikett för modellsökväg", + "activeProvidersHint": "Tips om aktiva leverantörer", + "activeLockouts": "Aktiva utlåsningar", + "invalid": "Ogiltig", + "skipPassword": "Hoppa över lösenord", + "moveUp": "Flytta upp", + "timeRange": "Tidsintervall", + "stickyLimitDesc": "Beskrivning av fast gräns", + "cloudBenefitEdge": "Molnfördel för Edge", + "custom": "Anpassad", + "verifying": "Verifierar", + "baseUrlLabel": "Etikett för bas-URL", + "setPassword": "Ange lösenord", + "safeSearchStrict": "Strikt säker sökning", + "noChangesSinceBackup": "Inga ändringar sedan säkerhetskopieringen", + "modelsPathHint": "Tips om sökväg till modeller", + "audioTranscriptions": "Ljudtranskriberingar", + "testCombo": "Testa kombination", + "mcpQuickStartTitle": "Titel för MCP-snabbstart", + "comboUpdated": "Kombinationen har uppdaterats", + "weighted": "Viktad", + "providers": "Leverantörer", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", + "noFallbackChainsDesc": "Beskrivning när reservkedjor saknas", + "yesImport": "Ja, importera", + "lockoutsAutoRefreshHint": "Tips om automatisk uppdatering av utlåsningar", + "tabApis": "Fliken API:er", + "sectionDescription": "Avsnittsbeskrivning", "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "purgeLogsFailed": "Det gick inte att rensa loggar", + "latency": "Latens", + "testAllOAuth": "Testa all OAuth", + "mcpQuickStartStep3": "Steg 3 i MCP-snabbstarten", + "repairEnvFailed": "Det gick inte att reparera miljön", + "zedImportHint": "Tips om Zed-import", + "modelsAcrossEndpoints": "Modeller över flera slutpunkter", + "autoDisableBannedAccounts": "Inaktivera automatiskt spärrade konton", + "securityDesc": "Säkerhetsbeskrivning", + "listModels": "Lista modeller", + "backupRestore": "Säkerhetskopiering och återställning", + "target": "Mål", + "zedImportSuccess": "Zed-importen lyckades", + "lastHeaderUpdate": "Senaste rubrikuppdatering", + "categoryCore": "Kärnkategori", + "noFallbackChains": "Inga reservkedjor", + "noSearchProviders": "Inga sökleverantörer", + "autoBalance": "Automatisk balansering", + "noModelsYet": "Inga modeller ännu", + "signatureFamily": "Signaturfamilj", + "externalApiCalls": "Externa API-anrop", + "providerOverridesDesc": "Beskrivning av leverantörsåsidosättningar", + "signatureTool": "Signaturverktyg", + "connectionFailed": "Anslutningen misslyckades", + "activeLimitersPlural": "Aktiva begränsare, plural", + "doneDesc": "Beskrivning av klar", + "down": "Nere", + "noDataYet": "Inga data ännu", + "activeProviders": "Aktiva leverantörer", + "nameInvalid": "Ogiltigt namn", + "skip": "Hoppa över", + "createChain": "Skapa kedja", + "audioSpeech": "Ljud och tal", + "cacheCleared": "Cachen har rensats", + "searchTypeNews": "Söktyp: nyheter", + "durationMillisecondsShort": "Varaktighet i millisekunder, kort", + "addOpenAICompatible": "Lägg till Open Ai-kompatibel", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "I kö", + "domainPlaceholder": "Platshållare för domän", + "durationMinutesShort": "Varaktighet i minuter, kort", + "verifyingConnection": "Verifierar anslutningen", + "imageProviders": "Bildleverantörer", + "protocolToolsLabel": "Etikett för protokollverktyg", + "queryPlaceholder": "Platshållare för sökfråga", + "videoGeneration": "Videogenerering", + "timeRangeWeek": "Tidsintervall: vecka", + "limitExhausted": "Gränsen är uppnådd", + "failedDisable": "Det gick inte att inaktivera", + "inMemoryNote": "Anteckning i minnet", + "compatibleHint": "Kompatibilitetstips", + "errorShort": "Kort felmeddelande", + "advancedHint": "Avancerat tips", + "restoreFailed": "Återställningen misslyckades", + "searchProvidersHeading": "Rubrik för sökning efter leverantörer", + "comboName": "Kombinationsnamn", + "autoDisableDescription": "Beskrivning av automatisk inaktivering", + "embeddingsDesc": "Beskrivning av inbäddningar", + "operational": "I drift", + "testAllApiKey": "Testa alla API-nycklar", + "backupCreated": "Säkerhetskopia skapad", + "errorDuringImport": "Fel vid import", + "comboDefaultsGuideHint2": "Tips 2 i guiden för standardinställningar för kombinationer", + "connecting": "Ansluter", + "fillModelAndProviders": "Fyll i modell och leverantörer", + "syncing": "Synkroniserar", + "resetConfirm": "Bekräfta återställning", + "trackMetrics": "Spåra mätvärden", + "successful": "Lyckades", + "recovering": "Återställer", + "autoDisableThreshold": "Tröskelvärde för automatisk inaktivering", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Synkroniserar data", + "cloudBenefitPorts": "Molnfördel: portar", + "compatibleProviders": "Kompatibla leverantörer", "freeTierProviders": "Gratis leverantörer", "freeTierLabel": "Gratis nivå tillgänglig", "freeTierProvidersDesc": "Leverantörer med gratis nivåer - vissa kräver en API-nyckelregistrering, andra behöver inga referenser alls.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", - "gamificationAdmin": "Gamification Admin", + "clearCache": "Rensa cacheminnet", + "reqs": "Krav", + "addAnthropicCompatible": "Lägg till Anthropic-kompatibel leverantör", + "apiKeyProviders": "Leverantörer av API-nycklar", + "tabsAria": "ARIA för flikar", + "resetting": "Återställer", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Orsak till säkerhetskopiering före återställning", + "disableCloud": "Inaktivera molnet", + "newProviderNameAria": "ARIA för nytt leverantörsnamn", + "passwordsMismatch": "Lösenorden matchar inte", + "a2aQuickStartStep3": "Steg 3 i snabbstarten för A2A", + "liveMonitorDescriptionSuffix": "Suffix för beskrivning av liveövervakning", + "failedAddProvider": "Det gick inte att lägga till leverantören", + "addAtLeastOneProvider": "Lägg till minst en leverantör", + "reasonSeparator": "Avgränsare för orsak", + "zedImporting": "Importerar Zed", + "confirmPasswordPlaceholder": "Bekräfta lösenord", + "whatYouGet": "Det här får du", + "signatureSession": "Signatursession", + "errorCountNoCode": "Antal fel utan kod", + "testing": "Testning", + "providersCommaSeparated": "Leverantörer, kommaseparerade", + "exportDatabase": "Exportera databas", + "hitRate": "Träfffrekvens", + "completionsLegacy": "Kompletteringar (äldre version)", + "removeModel": "Ta bort modell", + "timeRangeDay": "Tidsintervall: dag", + "cloudRequestFailed": "Molnbegäran misslyckades", + "updatedAt": "Uppdaterad den", + "monitoredProvidersHint": "Tips för övervakade leverantörer", + "connectionSuccessful": "Anslutningen lyckades", + "latencyP50": "Latens P50", + "logsDeleted": "Loggar borttagna", + "chatTester": "Chatttestare", + "safeSearchOff": "Säker sökning av", + "nameHint": "Namntips", + "debugToggle": "Felsökningsväxel", + "embedding": "Inbäddning", + "issuesLabel": "Etikett för problem", + "optionAny": "Alternativ: valfritt", + "maxNestingDepth": "Maximalt nästlingsdjup", + "rerank": "Omrankning", + "checking": "Kontrollerar", + "getStarted": "Kom igång", + "restoreSuccess": "Återställningen lyckades", + "issuesDetected": "Problem upptäckta", + "signatureCache": "Signaturcache", + "modelLockouts": "Modellåsningar", + "usingCloudProxy": "Använder molnproxy", + "loadingHealth": "Läser in hälsostatus", + "providerOverrides": "Leverantörsåsidosättningar", + "audioTranscriptionDesc": "Beskrivning av ljudtranskribering", + "learnedFromHeaders": "Inlärt från rubriker", + "totalRequests": "Totalt antal begäranden", + "cloudUnstableNote": "Anmärkning om instabilt moln", + "gamificationAdmin": "Administration av spelifiering", "monitorAnomaliesAndHealth": "Övervaka anomalier och systemtillstånd", "flaggedAnomalies": "Flaggade anomalier", "noAnomaliesDetected": "Inga anomalier upptäcktes", "apiKey": "API-nyckel", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 h)", "zScore": "Z-poäng", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Misstänkt", "tokensCommunityServers": "Community-servrar", "tokensServerNamePlaceholder": "Servernamn", "tokensApiKeyPlaceholder": "API-nyckel", "tokensTokenBalance": "Tokensaldo", "tokensSendTokens": "Skicka tokens", - "tokensRecipientApiKeyId": "Recipient API Key ID", + "tokensRecipientApiKeyId": "Mottagarens API-nyckel-ID", "tokensRecipientApiKeyIdPlaceholder": "Ange mottagarens API-nyckel-ID", "tokensReasonOptional": "Orsak (valfritt)", "tokensReasonPlaceholder": "t.ex. bonus, belöning", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Läser in mer...", "recommended": "Rekommenderas", "understand": "Jag förstår", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "Batchbearbetning", + "batchConceptSubtitle": "Bearbeta tusentals förfrågningar asynkront till cirka 50 % av kostnaden (inom 24 timmar). Perfekt för utvärderingar, klassificering och inbäddningar.", + "batchConceptHowItWorks": "Så fungerar det", + "batchConceptBenefit50pct": "50 % rabatt på indata- och utdata-token", + "batchConceptAsync24h": "Asynkront med slutförande inom 24 timmar", + "batchConceptUseCases": "Passar bäst för klassificering i stora volymer, utvärderingar och inbäddningar", + "batchHeaderSubtitle": "Kör många förfrågningar som ett enda jobb", + "batchStep1": "1 · Ladda upp JSONL", + "batchStep1Desc": "Lägg till förfrågningar", + "batchStep2": "2 · Skapa batch", + "batchStep2Desc": "Kör jobb", + "batchStep3": "3 · Hämta resultat", + "batchStep3Desc": "Ladda ned utdata", + "filesConceptTitle": "Batchfiler", + "filesConceptSubtitle": "JSONL-filer som används av batcher: indataförfrågningar, resultat och fel.", + "filesConceptInput": "Indata – din JSONL med en förfrågan per rad", + "filesConceptOutput": "Utdata – resultat från slutförda förfrågningar", + "filesConceptError": "Fel – förfrågningar som misslyckades", + "filesConceptRetention": "Lagringstid: 30 dagar som standard (29 dagar hos Anthropic)", + "wizardTitle": "Ny batch", + "wizardClose": "Stäng", + "wizardNext": "Nästa", + "wizardBack": "Tillbaka", + "wizardCancel": "Avbryt", + "wizardCreate": "Skapa batch", + "wizardCreating": "Skapar…", + "wizardStep1Destination": "Mål", + "wizardStep2Input": "Indata", + "wizardStep3Validate": "Validera", + "wizardStep4Cost": "Kostnad och skapa", + "wizardProviderLabel": "Leverantör", + "wizardEndpointLabel": "Slutpunkt", + "wizardModelLabel": "Modell", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (vi konverterar)", + "wizardDropOrPick": "Släpp en fil här eller klicka för att välja", + "wizardCsvMappingTitle": "Mappa CSV-kolumner → fält i förfrågan", + "wizardCsvMappingAddField": "Lägg till fält", "wizardCsvNoColumns": "Inga kolumner upptäcktes i CSV-rubriken.", "wizardCsvIgnoreColumn": "— ignorera —", "wizardCsvCustomIdMapped": "custom_id mappad", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} rader tolkade", "wizardCsvRowsSkipped": "{count} rader överhoppade", "wizardCsvRowError": "Rad {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Alla rader är giltiga", "wizardValidating": "Validerar…", "wizardValidationParseFailed": "Valideringen misslyckades — kunde inte tolka innehållet.", "wizardValidationSummary": "{lines} rader · {ids} unika custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Dubbletter av custom_ids upptäcktes:", "wizardValidationFirstErrors": "Fel (första {count}):", "wizardValidationLine": "Rad {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Valideringsfel", + "wizardValidationPreview": "Förhandsgranskning (de första 5 förfrågningarna)", + "wizardValidationSamplingNote": "Filen är stor – validerad genom stickprov (de första 1 000 + de sista 100 raderna). Fullständig validering körs på serversidan.", + "wizardCostSync": "Kostnad för synkron bearbetning", + "wizardCostBatch": "Kostnad för batchbearbetning (-50 %)", + "wizardCostSavings": "Besparing", + "wizardCostEstimatedNotice": "Beräknad kostnad – den faktiska debiteringen kan variera.", + "wizardErrorUpload": "Det gick inte att ladda upp filen. Försök igen.", + "wizardErrorCreate": "Det gick inte att skapa batchen. Försök igen.", + "wizardEmptyProviders": "Anslut en leverantör med stöd för batchbearbetning (OpenAI, Anthropic eller Gemini) för att skapa en batch.", + "uploadModalTitle": "Ladda upp batchfil", + "uploadModalDropOrPick": "Släpp en .jsonl-fil här eller klicka för att välja", + "uploadModalUpload": "Ladda upp", + "uploadModalCancel": "Avbryt", + "uploadModalError": "Uppladdningen misslyckades. Försök igen.", + "uploadModalSuccess": "Uppladdad", + "uploadModalSizeLimit": "Högst 512 MB", + "batchListNewButton": "Ny batch", + "batchListAutoRefresh": "Uppdateras automatiskt var 30:e sekund", + "batchListCostColumn": "Kostnad", + "batchActionCancel": "Avbryt", + "batchActionDownloadOutput": "Ladda ned resultat", + "batchActionDownloadErrors": "Ladda ned fel", + "batchActionRetry": "Försök igen med misslyckade", + "batchActionRetryConfirm": "Försöka igen med {n} misslyckade förfrågningar? Den slutliga kostnaden beror på det faktiska antalet förbrukade token.", + "expirationBadgeCritical": "Kritiskt", + "expirationBadgeWarning": "Snart", + "expirationBadgeNormal": "Väntande", + "expirationBadgeExpired": "Utgången", + "filesListUploadButton": "Ladda upp", + "filesListUsedByColumn": "Används av", + "filesListUsedByNone": "Ingen", + "filesListUsedByRoleInput": "indata", + "filesListUsedByRoleOutput": "utdata", + "filesListUsedByRoleError": "fel", + "filesListSizeColumn": "Storlek", + "batchListProgressPartial": "(delvis)", + "batchListProviderColumn": "Leverantör", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", + "batchListProviderOther": "Övrigt", + "batchListTitle": "Batchar", + "batchListCount": "{count} batchar", + "batchListRemovingCompleted": "Tar bort…", + "batchListRemoveCompleted": "Ta bort slutförda", "batchListTableStatus": "Status", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "Slutpunkt", + "batchListTableModel": "Modell", + "batchListTableProgress": "Förlopp", + "batchListTableCreated": "Skapad", + "batchListTableExpires": "Upphör", + "batchListLoading": "Läser in…", + "batchListEmpty": "Inga batchar hittades", + "batchListValidating": "Validerar…", + "batchStatusAll": "Alla statusar", + "batchStatusInProgress": "Pågår", + "batchStatusValidating": "Validerar", + "batchStatusFinalizing": "Slutför", + "batchStatusCompleted": "Slutförd", + "batchStatusFailed": "Misslyckad", + "batchStatusCancelled": "Avbruten", + "batchStatusCancelling": "Avbryter", + "batchStatusExpired": "Utgången", + "batchStatusCompletedWithFailures": "slutförd med fel", + "batchStatusInProgressWithFailures": "pågår (med fel)", + "batchStatusFinalizingWithFailures": "slutförs (med fel)", + "batchStatusCancelledWithFailures": "avbruten med fel", + "batchStatusExpiredWithFailures": "utgången (delvis)", + "wizardCostEstimating": "Beräknar kostnad…", + "wizardCostRequests": "Förfrågningar", + "wizardCostInputTok": "indatatoken", + "wizardCostOutputTok": "utdatatoken", + "wizardCostWindow": "Tidsfönster", + "wizardDestinationSelectProvider": "Välj en leverantör…", + "wizardDestinationSelectModel": "Välj en modell…", + "wizardDestinationConnectProvider": "Anslut en leverantör", + "batchListBatchCreated": "Batch {id} skapad — uppdaterar listan…", + "batchListBatchCreatedDismiss": "Stäng", + "batchListRefreshing": "Uppdaterar…", + "batchListRefresh": "Uppdatera", + "uploadFileModalRemove": "Ta bort", + "uploadFileModalUploading": "Laddar upp…", + "wizardInputReading": "Läser fil…", + "wizardInputReady": "Klar", + "wizardInputLargeFileLabel": "Stor fil — stickprovsvalidering", + "wizardInputCsvJsonlReady": "JSONL har genererats — redo att valideras.", + "wizardInputLargeFileWarning": "Stor fil upptäcktes — valideringen utförs genom stickprov (de första 5 MB + de sista 100 KB). Fullständig validering sker på serversidan.", + "wizardCostWindow24h": "24 timmars slutförandefönster", + "wizardValidationFieldsOk": "obligatoriska fält är giltiga", + "filesListDelete": "Radera", + "filesListDownload": "Ladda ner", + "batchDetailActionCancel": "Avbryt batch", + "batchDetailActionRetry": "Försök igen med misslyckade förfrågningar", + "batchDetailCancelling": "Avbryter…", + "batchDetailRetrying": "Förbereder nytt försök…", + "batchDetailCancelConfirm": "Vill du avbryta denna batch? Pågående förfrågningar stoppas.", + "batchActionCancelError": "Det gick inte att avbryta batchen. Försök igen.", + "batchActionRetryError": "Det gick inte att försöka igen med misslyckade förfrågningar. Försök igen.", + "batchConceptRetentionNote": "Resultat- och felfiler sparas i 30 dagar (Anthropic: 29 dagar)", "batchFilesSizeColumn": "Storlek", "toggleNoAuthProvider": "Växla ingen autentisering leverantör", "loadingModels": "Laddar modeller…", @@ -988,21 +988,21 @@ "disabled": "Inaktiverad", "featureFlagOmnirouteEmergencyFallbackDescription": "Dirigera anrop med förbrukad budget till den kostnadsfria reservleverantören/-modellen för nödfall.", "featureFlagArenaEloSyncEnabledDescription": "Aktivera periodisk synkronisering av Arena AI-topplistans ELO för rankning av modellintelligens.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Generera och infoga konversationssammanfattningar när kombinationsroutning byter modell. Inaktivera för att behandla modellbyten oberoende av varandra och förhindra bakgrundsförfrågningar för överlämning för alla befintliga och framtida kombinationer.", "featureFlagExposeCcDiscoveryAliasesDescription": "Reklamera claude/<provider>/<model> spegel-id på /v1/models så att Claude Code gateway-modellens upptäcktslista visar icke-Claude-modeller. Varning: dubblerar katalogposter för alla klienter när det är aktiverat globalt.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Huvudreglage för gateway-aliasen no-think/<provider>/<model>. På (standard): /v1/models visar en variant utan tänkande för varje kvalificerad Claude-modell med stöd för tänkande, och ett no-think/-id som skickas i en förfrågan matchas tillbaka till den verkliga modellen med resonemang inaktiverat. Av: inga varianter visas och ett no-think/-id behandlas som vilket annat okänt modell-id som helst. Opt-in/opt-out-inställningen ModelSpec.noThinkingAlias per modell gäller fortfarande när detta är aktiverat.", "featureFlagChatVirtualLanesEnabledDescription": "Aktivera adaptiva virtuella åtkomstfiler per tenant för providerutskick (#9654): en tenants burst ger inte längre en annan 503. Miljövariabeln OMNIROUTE_CHAT_VIRTUAL_LANES har företräde framför den här inställningen i instrumentpanelen; ändringarna träder i kraft vid omstart av servern.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Leverantörssidor på kontrollpanelen: visa märket Gratis endast för signaler som leverantören respekterar — slopar heuristiken för visningsnamn, icke-booleska gratisfält och suffixet :free för registrerade leverantörer utan en dokumenterad kostnadsfri nivå. Av behåller den tidigare märkesregeln.", + "featureFlagProxySkipRecentlyFailedDescription": "Proxypooler och opencodes rotation per konto slutar att återanvända en proxy som nyss misslyckades (nekad TCP-kontroll eller ett 429-svar som togs emot via den) under en processpecifik period som fördubblas vid varje upprepat fel, upp till en maxgräns. Ingen proxystatus skrivs; om alla kandidater läggs åt sidan förblir valet oförändrat. Avstängt som standard: urvalsordningen följer exakt den vanliga rotationen.", + "featureFlagProxyPoolEgressObservationDescription": "Visa under en proxypool på instrumentpanelen hur många observerade utgående IP-adresser som betjänade dess medlemmar under de senaste 24 timmarna, hur många anslutningar som använde dem och det högsta antalet som observerades bakom en och samma IP-adress. Skrivskyddat, beräknat från proxyloggen och används aldrig för dirigering. Avstängt som standard: poolredigeraren är oförändrad och observationsrutten returnerar null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Låt en kontroll som avvisades av målet (401/403/429: proxyn vidarebefordrade begäran men destinationen avvisade den utgående IP-adressen) nollställa proxyns serie av på varandra följande fel i proxyhälsokontrollen, precis som en betjänad kontroll. Avstängt som standard: ett avvisande förblir neutralt och bibehåller serien. Ett 5xx-svar förblir icke avgörande i båda fallen, och ett avvisande tar aldrig bort, inaktiverar eller återaktiverar en proxy.", "sidebar": { "home": "Hem", "dashboard": "Instrumentpanel", "providers": "Leverantörer", - "combos": "Combos", + "combos": "Kombinationer", "usage": "Användning", - "analytics": "Analytics", + "analytics": "Analys", "costs": "Kostnader", "health": "Hälsa", "proxy": "Proxy", @@ -1012,11 +1012,11 @@ "settings": "Inställningar", "translator": "Översättare", "playground": "Lekplats", - "searchTools": "Search Tools", + "searchTools": "Sökverktyg", "agents": "Agenter", "cloudAgents": "Molnagenter", - "memory": "Memory", - "skills": "Skills", + "memory": "Minne", + "skills": "Färdigheter", "omniSkills": "OmniSkills", "agentSkills": "AgentSkills", "chaosConfig": "Kaosläge", @@ -1029,7 +1029,7 @@ "embeddedServices": "Inbäddade Tjänster", "embeddedServicesSubtitle": "Hantera lokala proxytjänster", "logs": "Loggar", - "webhooks": "Webhooks", + "webhooks": "Webhookar", "webhooksSubtitle": "Få besked om händelser", "logExport": "Loggexport", "logExportSubtitle": "Skicka ut anropsloggar", @@ -1055,59 +1055,59 @@ "serverDisconnectedMsg": "Proxyservern har stoppats eller startar om.", "expandSidebar": "Expandera sidofältet", "collapseSidebar": "Dölj sidofältet", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", + "themes": "Teman", + "presetColors": "Populära färger", + "createTheme": "Skapa tema", + "chooseColor": "Välj en färg", + "themeCoral": "Korall", + "themeBlue": "Blå", + "themeRed": "Röd", + "themeGreen": "Grön", + "themeViolet": "Violett", "themeOrange": "Orange", "themeCyan": "Cyan", "cliToolsShort": "Verktyg", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "batch": "Batchjobb", + "themeSystem": "Temasystem", + "whitelabelingDesc": "Beskrivning av egen varumärkesprofilering", + "switchThemes": "Byt tema", + "themeAccentDesc": "Beskrivning av temats accentfärg", + "uploadFavicon": "Ladda upp favicon", + "themeDark": "Mörkt tema", + "customLogoDesc": "Beskrivning av anpassad logotyp", + "sidebarVisibilityToggle": "Växla sidofältets synlighet", + "themeAccent": "Temats accentfärg", + "resetFavicon": "Återställ favicon", + "whitelabeling": "Egen varumärkesprofilering", + "darkMode": "Mörkt läge", + "uploadLogo": "Ladda upp logotyp", + "themeLight": "Ljust tema", + "appName": "Appnamn", + "appNameDesc": "Beskrivning av appnamn", + "resetLogo": "Återställ logotyp", + "customFavicon": "Anpassad favicon", + "hideHealthLogs": "Dölj hälsologgar", + "customLogo": "Anpassad logotyp", + "appearance": "Utseende", + "themeSelectionAria": "ARIA-etikett för temaval", + "themeCreate": "Skapa tema", + "customFaviconDesc": "Beskrivning av anpassad favicon", + "logoPreview": "Förhandsvisning av logotyp", + "themeCustom": "Anpassat tema", + "hideHealthLogsDesc": "Beskrivning av att dölja hälsologgar", + "faviconPreview": "Förhandsvisning av favicon", + "changelog": "Ändringslogg", + "contextSection": "Kontext och cache", + "contextCaveman": "Grottmänniska", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Motorkombinationer", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Komprimeringsinställningar", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", @@ -1128,27 +1128,27 @@ "compressionStudioSubtitle": "Live-motorkaskad", "compressionExclusionsSubtitle": "Per-modell/slutpunkt omdirigering", "chaosConfigSubtitle": "Parallell körning av flera modeller", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Routning", + "protocolsSection": "Protokoll", + "agentsAiSection": "Agenter och AI", + "cacheContextSection": "Cache och kontext", + "analyticsSection": "Analys", + "costsSection": "Kostnader", + "monitoringSection": "Övervakning", + "auditSecuritySection": "Granskning och säkerhet", + "devtoolsSection": "Utvecklarverktyg", + "configurationSection": "Konfiguration", + "aiFeaturesSection": "AI-funktioner", "mcp": "MCP", "a2a": "A2A", - "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", + "plugins": "Insticksprogram", + "apiEndpoints": "API-slutpunkter", + "batchFiles": "Filer", + "analyticsEvals": "Utvärderingar", + "analyticsSearch": "Sök", + "analyticsUtilization": "Utnyttjande", + "analyticsComboHealth": "Combo-hälsa", + "analyticsCompression": "Komprimering", "costsBudget": "Budget", "costsFreeTiers": "Budget för gratisnivå", "costsFreeTiersSubtitle": "Månatlig tilldelning av gratis-tokens", @@ -1156,117 +1156,117 @@ "freeProviderRankingsSubtitle": "Bästa gratisleverantörer rankade efter modellens ELO-poäng", "radar": "Radar Katalog", "radarSubtitle": "Gemenskapsberikad gratis modellkatalog", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Kvotdelning", + "costsPricing": "Prissättning", + "logsProxy": "Proxyloggar", + "logsConsole": "Konsol", + "logsActivity": "Aktivitet", + "auditMcp": "MCP-granskning", "auditA2a": "A2A-revision", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Utseende", + "settingsAi": "AI-inställningar", + "settingsSecurity": "Säkerhet", "settingsAccessTokens": "Åtkomsttokens", "settingsFeatureFlags": "Funktionsflaggor", "settingsCache": "Cache", "settingsAuthz": "Auktorisering", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsRouting": "Routning", + "settingsResilience": "Feltolerans", "modelLockout": "Modellblockering", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Avancerat", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Leverantörskvot", + "providerQuota": "Leverantörskvot", + "runtime": "Körmiljö", + "consoleLogs": "Konsolloggar", + "logsTimeline": "Tidslinje", "logsTimelineSubtitle": "Visuell begäran tidslinje", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Konversationer", + "conversationsSubtitle": "Agentbaserade flervarvskonversationer", + "globalRouting": "Global dirigering", + "mitmProxy": "MITM-proxy", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", + "agenticFeaturesSection": "Agentbaserade funktioner", + "otherFeaturesSection": "Övriga funktioner", + "compressionContextGroup": "Kontextkomprimering", + "gamificationGroup": "Spelifiering", + "toolsGroup": "Verktyg", + "integrationsGroup": "Integrationer", "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "costsParametersGroup": "Kostnadsparametrar", + "auditGroup": "Granskning", + "batchGroup": "Batchbearbetning", + "homeSubtitle": "Översikt över instrumentpanelen", + "providersSubtitle": "Hantera AI-leverantörer", + "quotaTrackerSubtitle": "Spåra användningsgränser", + "providerQuotaSubtitle": "Spåra leverantörernas användningsgränser", + "runtimeSubtitle": "Feltolerans och sessioner i realtid", + "contextCombosSubtitle": "Kombinera komprimeringsmotorer", + "cliToolsSubtitle": "Konfigurera CLI-körmiljöer", + "agentsSubtitle": "Hantera lokala agenter", + "cloudAgentsSubtitle": "Hantera molnbaserade agenter", + "apiEndpointsSubtitle": "Exponera anpassade slutpunkter", + "proxySubtitle": "Inställningar för HTTP-proxy", + "mitmProxySubtitle": "MITM-avlyssning", + "oneProxySubtitle": "Offentlig proxygateway", + "leaderboard": "Topplista", + "profile": "Profil", + "tokens": "Token", + "gamificationAdmin": "Administration av spelifiering", + "leaderboardSubtitle": "Rankningar och prestationer", + "profileSubtitle": "Konto och inställningar", + "tokensSubtitle": "Tokenanvändning och budgetar", + "gamificationAdminSubtitle": "Avvikelseövervakning och antifusk", + "usageSubtitle": "Trafik- och användningsstatistik", + "analyticsComboHealthSubtitle": "Tillförlitlighet för kombinationsmål", + "analyticsUtilizationSubtitle": "Leverantörsutnyttjande", + "costsSubtitle": "Kostnadsfördelning", + "cacheSubtitle": "Cacheträfffrekvenser", + "analyticsCompressionSubtitle": "Statistik över tokenbesparingar", + "analyticsSearchSubtitle": "Analys av sökverktyg", + "analyticsEvalsSubtitle": "Resultat från utvärderingssviter", "providerStats": "Leverantörsstatistik", "providerStatsSubtitle": "Latens- och prestandamått", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Applikationsloggar", + "logsProxySubtitle": "Proxytrafikloggar", + "consoleLogsSubtitle": "Konsolutdata", + "logsActivitySubtitle": "Användaraktivitetslogg", + "healthSubtitle": "Systemhälsokontroll", + "costsPricingSubtitle": "Prissättningsregler per modell", + "costsBudgetSubtitle": "Budgetgränser", + "costsQuotaShareSubtitle": "Dela leverantörskvoter mellan nycklar", + "auditLogSubtitle": "Behörighetsgranskning", + "auditMcpSubtitle": "Granskning av MCP-server", + "auditA2aSubtitle": "Granskning av A2A-protokoll", + "translatorSubtitle": "Formatkonvertering", + "playgroundSubtitle": "Testa prompter live", + "searchToolsSubtitle": "Register över sökverktyg", + "memorySubtitle": "Beständigt agentminne", + "omniSkillsSubtitle": "Register över sandbox-färdigheter", + "agentSkillsSubtitle": "Register över A2A-färdigheter", + "mcpSubtitle": "Kontroller för MCP-server", + "a2aSubtitle": "A2A-protokollserver", "pluginsSubtitle": "Plugin-marknadsplats och installationer", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Cachelagrade mediefiler", + "batchFilesSubtitle": "Filer för batchindata/-utdata", + "settingsSubtitle": "Alla inställningar", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Tema och layout", + "settingsAiSubtitle": "Standardinställningar för AI-beteende", + "globalRoutingSubtitle": "Globala routningsregler", + "settingsResilienceSubtitle": "Återförsök och kretsbrytare", + "settingsAdvancedSubtitle": "Alternativ för avancerade användare", + "settingsSecuritySubtitle": "Autentisering och kryptering", "settingsAccessTokensSubtitle": "Avgränsade CLI-tokens för fjärrläge", "settingsFeatureFlagsSubtitle": "Växla systemfunktioner", "settingsCacheSubtitle": "Modellkatalog och svarscaching", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Sidofält", + "settingsSidebarSubtitle": "Anpassa sidofältets layout", "settingsAuthzSubtitle": "Ruttinventering och förbikopplingspolicy", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Dokumentation", + "issuesSubtitle": "Rapportera ett fel", + "changelogSubtitle": "Versionsinformation", "costsQuotaPlans": "Planer och kvoter", "costsQuotaPlansSubtitle": "Konfigurera planer efter leverantör", "activity": "Aktivitet", @@ -1275,11 +1275,11 @@ "systemGroup": "System", "costsOverview": "Översikt", "costsOverviewSubtitle": "Konsoliderad kostnadsanalys", - "agentBridge": "Agent Bridge", + "agentBridge": "Agentbrygga", "agentBridgeSubtitle": "Fånga upp IDE-agenttrafik", "trafficInspector": "Trafikinspektör", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Granska förfrågnings- och svarstrafik från dina appar", + "trafficInspectorPurpose": "Se exakt vad din applikation skickar till och tar emot från AI-leverantörer. Fungerar med alla OpenAI-kompatibla klienter.", "cliCode": "CLI-kod", "cliCodeSubtitle": "Kodverktyg som pekar på OmniRoute", "cliAgents": "CLI-agenter", @@ -1318,7 +1318,7 @@ "noResults": "Inga resultat" }, "webhooks": { - "title": "Webhooks", + "title": "Webhookar", "description": "Konfigurera HTTP-återuppringningar för systemhändelser.", "configuredWebhooks": "Konfigurerade Webhooks", "configuredWebhooksDesc": "Hantera leveransslutpunkter, prenumererade händelser, status och testsändningar.", @@ -1327,7 +1327,7 @@ "name": "Namn", "namePlaceholder": "Produktionsövervakning", "unnamedWebhook": "Namnlös webhook", - "url": "Endpoint URL", + "url": "Slutpunkts-URL", "events": "Händelser", "allEvents": "Alla evenemang", "secret": "Hemligt", @@ -1345,7 +1345,7 @@ "refresh": "Uppdatera", "loading": "Laddar webhooks...", "never": "Aldrig", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {inga fel} one {# fel} other {# fel}}", "testWebhook": "Skicka test", "testSuccess": "Testwebhook skickades.", "testFailed": "Testa webhook misslyckades.", @@ -1563,13 +1563,13 @@ "mcpMetricTopTool": "Toppverktyg" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "Teman", + "description": "Välj ett förinställt tema eller skapa ett eget med en enda färg", + "presetColors": "Populära färger", + "customTheme": "Anpassat tema", + "customThemeDesc": "Klicka på skapa tema och välj en färg", + "createTheme": "Skapa tema", + "activePreset": "Aktivt tema" }, "header": { "logout": "Logga ut", @@ -1581,73 +1581,73 @@ "language": "Språk", "providers": "Leverantörer", "providerDescription": "Hantera dina AI-leverantörsanslutningar", - "combos": "Combos", + "combos": "Kombinationer", "comboDescription": "Modellkombo med reserv", "usage": "Användning & analys", "usageDescription": "Övervaka din API-användning, tokenförbrukning och förfrågningsloggar", - "analytics": "Analytics", + "analytics": "Analys", "analyticsDescription": "Diagram, trender och utvärderingsinsikter", "cliTools": "CLI-verktyg", "cliToolsDescription": "Konfigurera CLI-verktyg", "home": "Hem", "homeDescription": "Välkommen till OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "Slutpunkter", + "endpointDescription": "Hantera proxyslutpunkter, MCP, A2A och API-slutpunkter", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Hantering och verktyg för Model Context Protocol-servrar", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "Agent-to-Agent-protokolluppgifter och observerbarhet", "settings": "Inställningar", "settingsDescription": "Hantera dina preferenser", "openaiCompatible": "OpenAI-kompatibel", "anthropicCompatible": "Antropisk kompatibel", "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "mediaDescription": "Generera bilder, videor och musik", + "themes": "Teman", + "themesDescription": "Välj ett färgtema för hela instrumentpanelen", + "costsDescription": "Spåra utgifter, analysera trender och hantera din AI-budget för alla leverantörer", + "cacheDescription": "Övervaka effektiviteten hos leverantörernas promptcache och lokal semantisk återanvändning av svar.", + "limitsDescription": "Konfigurera hastighetsgränser och kvoter per API-nyckel och leverantör", + "runtimeDescription": "Realtidsövervakning av körning — kretsbrytare, nedkylningsperioder, modellspärrar, sessioner och kvotaviseringar", + "apiManagerDescription": "Hantera API-nycklar och åtkomstkontroll för din OmniRoute-instans", + "batchDescription": "Bearbeta stora mängder förfrågningar asynkront med batchindelade API-anrop", + "contextCavemanDescription": "Regelbaserad meddelandekomprimering, språkpaket, analys och kontroller för utdataläge.", + "contextRtkDescription": "Kommandomedveten komprimering för verktygsutdata, terminalloggar och byggresultat.", + "contextCombosDescription": "Definiera hur motorer kombineras för olika routningsscenarier.", + "changelogDescription": "Håll dig uppdaterad om de senaste plattformsfunktionerna och tillkännagivandena.", + "agentsDescription": "Hantera och konfigurera verktyg för AI-agenter: Codex, Devin, Jules och anpassade agenter", + "cloudAgentsDescription": "Orkestrera molnbaserade AI-agenter med uppgiftsspårning i realtid och godkännande av planer", + "memoryDescription": "Beständigt konversationsminne med semantisk sökning och FTS5-fulltextindexering", + "skillsDescription": "Installera och hantera sandboxfärdigheter för automatisk körning av prompter och verktyg", + "agentSkillsDescription": "Agentanpassad färdighetskatalog med URL-kopiering med ett klick för integrering med AI-klienter", + "translatorDescription": "Översätt och testa prompter mellan API-format: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Testa prompter interaktivt med leverantörssvar i realtid och formatinspektion", + "searchToolsDescription": "Sökanalys, leverantörsuppdelning, cacheträffsfrekvenser och kostnadsspårning", + "logsDescription": "Förfrågningsloggar i realtid, felspårningar och inspektör för strömmande händelser", + "auditDescription": "Regelefterlevnadslogg för användning av API-nycklar, MCP-verktygsanrop och policyhändelser", + "webhooksDescription": "Konfigurera webhook-slutpunkter för att ta emot händelseaviseringar i realtid", + "healthDescription": "Översikt över systemstatus: leverantörer, kretsbrytare, hastighetsgränser och databas", + "proxyDescription": "Konfigurera inställningar för uppströmsproxy för utgående leverantörsanslutningar", + "apiEndpointsDescription": "Hantera anpassade konfigurationer av API-slutpunkter och åsidosättningar av routning", + "batchFilesDescription": "Bläddra bland och hantera utdatafiler och resultat från batchjobb", + "analyticsEvalsDescription": "Resultat från modellutvärderingar och prestandajämförelser", + "analyticsSearchDescription": "Analys av sökfrågor, cacheträffsfrekvenser och kostnadsspårning", + "analyticsUtilizationDescription": "Mätvärden för leverantörsanvändning och kapacitetsplanering", + "analyticsComboHealthDescription": "Status och prestanda i realtid för kombinerade routningskonfigurationer", + "analyticsCompressionDescription": "Analys av kontextkomprimering och tokenbesparingar", + "costsBudgetDescription": "Budgetgränser och utgiftsaviseringar per API-nyckel och leverantör", + "costsPricingDescription": "Anpassad priskonfiguration för beräkning av tokenkostnader", + "logsProxyDescription": "Loggar för förfrågningar via uppströmsproxy och trafikinspektion", + "logsConsoleDescription": "Utdata från programkonsolen och felsökningsloggar", + "logsActivityDescription": "Granskningslogg över användaråtgärder och systemhändelser", + "auditMcpDescription": "Granskningslogg för anrop av MCP-verktyg och dokumentation för regelefterlevnad", "auditA2a": "A2A-revision", "auditA2aDescription": "A2A-uppgiftsutförande revisionsspår, tillståndsövergångar och skicklighetsanrop", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Tema, varumärkesprofilering och visuell anpassning", + "settingsAiDescription": "AI-beteenden, tankebudgetar, visuella funktioner och minnesinställningar", "settingsCacheDescription": "TTL för modellkatalogens cacheposter", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Inställningar för autentisering, auktorisering och åtkomstkontroll", "featureFlags": "Funktionsflaggor", "featureFlagsDescription": "Styrsystems kapacitet och experimentella funktioner", "featureFlagsActive": "{count} aktiv", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Inga flaggor matchar din sökning", "featureFlagsSaved": "Flaggan uppdaterad", "featureFlagsError": "Det gick inte att uppdatera flaggan", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Routningsregler, modellalias, standardvärden för kombinationer och nedgraderingsinställningar", + "settingsResilienceDescription": "Konfiguration av kretsbrytare, återförsök och reservlösningar", + "settingsAdvancedDescription": "Avancerade nyttolastregler, begäransgränser och proxy-API-inställningar", + "mitmProxyDescription": "Konfigurera MITM-proxyinställningar för trafikinspektion och felsökning", + "oneProxyDescription": "Konfigurera 1Proxy-inställningar för avancerad proxykedjning", "omniSkillsDescription": "Installera och hantera sandlådefärdigheter för automatiserad körning av prompter och verktyg" }, "cloudSyncStatus": { @@ -1698,7 +1698,7 @@ "general": "Allmänt", "appearance": "Utseende", "ai": "AI-inställningar", - "routing": "Routing", + "routing": "Routning", "resilience": "Resiliens", "advanced": "Avancerat", "accessTokens": "Åtkomsttokens", @@ -1708,7 +1708,7 @@ "console": "Konsol", "logger": "Loggare", "translator": "Översättare", - "playground": "Playground", + "playground": "Testmiljö", "add": "Lägg till", "edit": "Redigera", "apiKeys": "API-nycklar", @@ -1725,7 +1725,7 @@ "costs": "Kostnader", "health": "Hälsa", "runtime": "Körtid", - "webhooks": "Webhooks", + "webhooks": "Webhookar", "home": "Hem", "activity": "Aktivitet", "agentSkills": "AgentSkills", @@ -1762,7 +1762,7 @@ "discovery": "Upptäckt", "freeProviderRankings": "Rankning av gratisleverantörer", "radar": "Radar", - "setup": "Setup", + "setup": "Konfiguration", "freeTiers": "Gratisnivåer", "gamification": "Spelifiering", "leaderboard": "Topplista", @@ -1776,7 +1776,7 @@ "searchTools": "Sökverktyg", "security": "Säkerhet", "sidebar": "Sidofält", - "tokens": "Tokens", + "tokens": "Token", "tools": "Verktyg", "agentBridge": "Agentbrygga", "trafficInspector": "Trafikinspektör", @@ -1812,7 +1812,7 @@ "reportIssue": "Rapportera problem", "activeError": "{active} aktiv · {errors} fel", "topologyLegendActive": "Aktiv", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Senaste", "topologyLegendError": "Fel", "oauthLabel": "OAuth", "apiKeyLabel": "API-nyckel", @@ -1826,11 +1826,11 @@ "updateStarted": "Uppdatering startade...", "reloadingPageAutomatically": "Laddar om sidan automatiskt...", "providerTopology": "Leverantörstopologi", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Senaste begäranden", + "recentRequestsEmpty": "Inga begäranden ännu.", + "recentRequestsModel": "Modell", + "recentRequestsTokens": "In/ut", + "recentRequestsWhen": "När", "downloadDmg": "Ladda ner DMG (macOS)", "downloadDmgDescription": "En ny version av OmniRoute-skrivbordsappen är tillgänglig. Vänligen ladda ner och installera macOS DMG-installationsprogrammet för att uppdatera (nuvarande: v{version}).", "downloadExe": "Ladda ner EXE (Windows)", @@ -1888,18 +1888,18 @@ "releaseNotes": "Versionsinformation", "readMore": "Läs Mer", "noAuthLabel": "Ingen autentisering", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Gör dig redo att routa", + "readinessTitle": "Skicka din första begäran", + "readinessSubtitle": "Fyra små steg. OmniRoute kontrollerar att allt är klart under tiden.", + "readinessStep1": "Anslut en leverantör", + "readinessStep2": "Konfigurera autentisering för slutpunkten", + "readinessStep3": "Kopiera din slutpunkt", + "readinessStep4": "Skicka en testförfrågan", + "readinessContinue": "Fortsätt konfigurationen", + "readinessDismiss": "Avfärda tills vidare" }, "analytics": { - "title": "Analytics", + "title": "Analys", "usageAnalyticsTitle": "Användningsanalys", "diversityScoreTitle": "Leverantörs mångfald", "diversityScoreDesc": "Ögonblicksbild av leverantörskoncentration för det senaste trafikfönstret.", @@ -1928,13 +1928,13 @@ "chartNoData": "Inga data", "chartWeekly": "Veckovis", "activitySummary": "{active} aktiva dagar · {tokens} tokens · {days} dagar", - "activityCellTitle": "{date}: {tokens} tokens", + "activityCellTitle": "{date}: {tokens} token", "activityLess": "Mindre", "activityMore": "Mer", "chartApiKeyBreakdown": "Uppdelning per API-nyckel", "chartApiKey": "API-nyckel", "mostActiveDay": "Mest aktiva dag", - "datedTokenCount": "{date} · {tokens} tokens", + "datedTokenCount": "{date} · {tokens} token", "noDataLast7Days": "Inga data för de senaste 7 dagarna", "requestTokenSummary": "{requests} förfrågningar · {tokens} tokens", "chartByAccount": "Per konto", @@ -1963,11 +1963,11 @@ "rangeCancel": "Avbryt", "rangeApply": "Tillämpa", "rangeErrorInvalid": "Start måste vara före slut", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1 d", + "period7D": "7 d", + "period30D": "30 d", + "period90D": "90 d", + "periodYTD": "Hittills i år", "periodAll": "Alla", "totalTokens": "Totala tokens", "inputTokens": "Indatatokens", @@ -1993,7 +1993,7 @@ "overviewDescription": "Övervaka dina API-användningsmönster, tokenförbrukning, kostnader och aktivitetstrender för alla leverantörer och modeller.", "evalsDescription": "Kör utvärderingssviter för att testa och validera dina LLM-slutpunkter. Jämför modellkvalitet, upptäck regressioner och benchmark latens.", "overview": "Översikt", - "evals": "Evals", + "evals": "Utvärderingar", "search": "Sök", "utilization": "Användning", "routeTrace": "Ruttspårning", @@ -2005,8 +2005,8 @@ "modelStatusError": "Fel", "comboHealth": "Kombohälsa", "comboHealthDescription": "Kombonivåkvot, användningsfördelning och prestandamått", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Komprimeringsanalys", + "compressionAnalyticsDescription": "Komprimeringsanalys – tokenbesparingar, fördelning per läge och leverantörsstatistik.", "autoRoutingTotalAutoRequests": "Totalt antal automatiska förfrågningar", "autoRoutingAvgSelectionScore": "Genomsnittligt urvalsresultat", "autoRoutingExplorationRate": "Utforskningshastighet", @@ -2042,7 +2042,7 @@ "comboHealthTraffic": "trafik", "comboHealthProjectedQuota": "Prognostiserad kvot", "comboHealthPricingCoverage": "Pristäckning", - "comboHealthAutopilotTitle": "Combo Health Autopilot", + "comboHealthAutopilotTitle": "Autopilot för kombinationshälsa", "comboHealthAutopilotDescription": "Prioriterade rekommendationer från kombinationshälsa, prognoser, kvoter och leverantörshälsa.", "comboHealthIssues": "Problem", "comboHealthActionable": "{count} åtgärdbara", @@ -2110,7 +2110,7 @@ "compressionAnalyticsAvgSavings": "Genomsnittliga besparingar", "compressionAnalyticsAvgDuration": "Genomsnittlig varaktighet", "compressionAnalyticsReceipts": "Kvitton", - "compressionAnalyticsFallbacks": "Fallbacks", + "compressionAnalyticsFallbacks": "Reservval", "compressionAnalyticsPromptTokens": "Fråga tokens", "compressionAnalyticsCompletionTokens": "Färdigställande tokens", "compressionAnalyticsTotalTokens": "Totalt tokens", @@ -2209,8 +2209,8 @@ "connection": "Anslutning", "combo": "Kombination", "routeStep": "Steg", - "tokens": "Tokens", - "notAvailable": "n/a", + "tokens": "Token", + "notAvailable": "saknas", "routeTokenCounts": "{input} in · {output} ut", "routeEvidence": "Underlag", "routeFactors": "Routingfaktorer", @@ -2258,9 +2258,9 @@ "fullAccess": "Full tillgång", "keyManagement": "API-nyckelhantering", "keyManagementDesc": "Skapa och hantera API-nycklar för autentisering av förfrågningar till din slutpunkt", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Din app skickar förfrågningar via en API-nyckel till OmniRoute", + "requestFlowYourApp": "Din app", + "requestFlowApiKey": "API-nyckel", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Totalt nycklar", "restricted": "Begränsad", @@ -2275,7 +2275,7 @@ "usage": "Användning", "created": "Skapad", "actions": "Åtgärder", - "reqs": "reqs", + "reqs": "förfr.", "neverUsed": "Aldrig använd", "deleteConfirm": "Vill du ta bort denna API-nyckel?", "usageTips": "Användningstips", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "Kopiera och lagra den här nyckeln nu – den kommer inte att visas igen.", "done": "Klart", "savePermissions": "Spara behörigheter", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "Tillåtna slutpunkter", + "allEndpointsAllowed": "Den här nyckeln har åtkomst till alla API-slutpunkter.", + "endpointsRestricted": "Begränsad till {count} slutpunkt{count, plural, one {} other {er}}.", + "autoResolve": "Lös automatiskt", + "autoResolveDesc": "Matcha automatiskt tvetydiga modellnamn med den ursprungliga leverantören för den här API-nyckeln.", "streamDefaultMode": "Standardkompatibilitet för ström", "streamDefaultModeDesc": "Styr utelämnade `stream`-flaggor för denna nyckel. JSON-läge returnerar icke-strömmande svar såvida inte klienten uttryckligen begär SSE.", - "streamDefaultLegacy": "Legacy", + "streamDefaultLegacy": "Äldre", "streamDefaultJson": "JSON-kompatibel", "streamDefaultBadge": "Standard för JSON-ström", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "Nyckeln är aktiv", + "keyActiveDesc": "Aktivera eller inaktivera den här API-nyckeln. Inaktiverade nycklar avvisas omedelbart med 403.", + "accessSchedule": "Åtkomstschema", + "accessScheduleDesc": "Begränsa åtkomsten till specifika tider och veckodagar.", + "scheduleFrom": "Från", + "scheduleUntil": "Till", + "scheduleDays": "Dagar", + "scheduleTimezone": "Tidszon", + "scheduleTimezoneHint": "Använd IANA-tidszonsnamn, t.ex. America/New_York, Europe/Berlin", + "scheduleActive": "Schema", + "disabled": "Inaktiverad", + "daySun": "Sön", + "dayMon": "Mån", + "dayTue": "Tis", + "dayWed": "Ons", + "dayThu": "Tors", + "dayFri": "Fre", + "daySat": "Lör", "allowAll": "Tillåt alla", "restrict": "Begränsa", "allowAllInfo": "Denna nyckel kan komma åt alla tillgängliga modeller.", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "Det gick inte att uppdatera behörigheter. Försök igen.", "unknownProvider": "okänt", "copyMaskedKey": "Kopiera maskerad nyckel", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "Den fullständiga nyckeln är endast tillgänglig när den skapas – kopiera den när du skapar nyckeln första gången", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# enhet} other {# enheter}}", "devicesTooltip": "{count, plural, one {# unik IP/User-Agent-enhet sedd med denna nyckel (senaste 30 min)} other {# unika IP/User-Agent-enheter sedda med denna nyckel (senaste 30 min)}}", @@ -2382,20 +2382,20 @@ "allowedCombos": "Tillåtna kombinationer", "allCombosAllowed": "Denna nyckel kan använda valfri kombination.", "restrictedComboCount": "Begränsad till {count, plural, one {# kombination} other {# kombinationer}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# lagrad post finns} other {# lagrade poster finns}} inte i den här kombinationslistan (till exempel routningsregler) och kommer att behållas i sparat skick.", + "preservedComboRuleHint": "Behålls i lagrat skick. Den här posten är inte ett alternativ i listan ovan och kan därför endast ändras via API:et.", "apiManagerCustomRateLimits": "Anpassade prisgränser", "apiManagerCustomRateLimitsDesc": "Åsidosätt globala standardgränser. Lämna tomt om du vill använda standardinställningarna.", "apiManagerRateLimitRequestsPlaceholder": "Förfrågningar", - "apiManagerRateLimitReqPer": "req /", + "apiManagerRateLimitReqPer": "begäranden /", "apiManagerRateLimitSecondsPlaceholder": "Sekunder", "apiManagerRemoveLimitTitle": "Ta bort gränsen", "apiManagerTimezonePlaceholder": "Amerika/Sao_Paulo", "noLogPayloadPrivacy": "No-Log Payload Sekretess", "bannedStatus": "Förbjuden status", - "managementApiAccess": "Management API Access", + "managementApiAccess": "Åtkomst till hanterings-API", "expirationDate": "Utgångsdatum", - "managementAccess": "Management Access", + "managementAccess": "Hanteringsåtkomst", "allowedConnections": "Tillåtna anslutningar", "searchPlaceholder": "Sök efter namn eller token...", "activeOnly": "Endast aktiva", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Tillåter att denna nyckel ignorerar uppströmsleverantörens/kontots stoppolicy under dirigering. API-nyckelns USD-kvoter gäller fortfarande.", "quotaPill": "KVOT", "quotaModeOnly": "endast qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Exklusiv tilldelning", + "exclusiveLeaseNoticeTitle": "Exklusiv tilldelning", + "exclusiveLeaseNoticeDesc": "Den här API-nyckeln har behörighet för exklusiv tilldelning vid routning av dedikerade anslutningar.", + "allConnections": "Alla anslutningar", + "onlySelectedConnections": "Endast valda anslutningar", + "selectAtLeastOneConnection": "Välj minst en anslutning eller välj Alla anslutningar.", + "allConnectionsDesc": "Den här nyckeln kan använda alla aktiva anslutningar.", + "restrictedToConnections": "Begränsad till {count, plural, one {# anslutning} other {# anslutningar}}." }, "auditLog": { "title": "Revisionslogg", @@ -2457,14 +2457,14 @@ "model": "Model", "prompt": "Prompt", "generate": "Generera", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Genererar...", + "loadingModels": "Läser in tillgängliga modeller...", + "noModels": "Inga modeller är tillgängliga. Konfigurera först leverantörer med mediefunktioner.", + "error": "Genereringen misslyckades", + "result": "Resultat", + "imageDescription": "Generera bilder från textprompter med OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI med flera.", + "videoDescription": "Skapa videor med AnimateDiff, Stable Video Diffusion via ComfyUI eller SD WebUI.", + "musicDescription": "Komponera musik med Stable Audio Open eller MusicGen via ComfyUI.", "kinds": { "embedding": "Inbäddning", "image": "Bild", @@ -2531,7 +2531,7 @@ "generateModality": "Generera {modality}", "apiKeyRequired": "API-nyckel krävs", "configureApiKeys": "Konfigurera API-nycklar i Leverantörer", - "downloadFormat": "Download {format}", + "downloadFormat": "Ladda ner {format}", "noTextReturned": "Ingen text returnerades", "wordTimestamps": "Tidsstämplar på ordnivå ({count} ord)", "providerCount": "{count} leverantörer", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter tal-till-text modeller använder din konfigurerade OpenRouter-anslutning. Ingen separat autentisering krävs." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Sökfråga", + "searchResults": "Sökresultat", + "cachedResult": "Cachad", + "searchCost": "Kostnad", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Avancerad söktestning med leverantörsjämförelse", + "compareProviders": "Jämför leverantörer", + "rerankResults": "Rangordna om resultat", + "searchHistory": "Sökhistorik", + "urlOverlap": "URL-överlappning", + "noSearchProviders": "Inga sökleverantörer har konfigurerats. Lägg till leverantörer i Inställningar.", + "noRerankModels": "Ingen modell för omrangordning är tillgänglig", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Leverantör", + "searchType": "Söktyp", + "maxResults": "Max antal resultat", + "filters": "Filter", + "country": "Land", + "language": "Språk", + "timeRange": "Tidsintervall", + "includeDomains": "Inkludera domäner", + "excludeDomains": "Exkludera domäner", + "safeSearch": "Säker sökning", + "safeSearchOff": "Av", + "safeSearchModerate": "Måttlig", + "safeSearchStrict": "Strikt", + "queryPlaceholder": "Ange sökfråga...", + "providerAuto": "auto (billigast)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "nyheter", + "optionAny": "alla", + "timeRangeDay": "Senaste dygnet", + "timeRangeWeek": "Senaste veckan", + "timeRangeMonth": "Senaste månaden", + "timeRangeYear": "Senaste året", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Tidsgränsen för begäran överskreds ({seconds}s)", + "networkError": "Nätverksfel", + "formatted": "Formaterad", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "cachemiss", + "cacheHit": "cacheträff", + "latency": "Svarstid", + "cost": "Kostnad", + "results": "Resultat", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Omrankningsmodell", + "positionDelta": "Positionsändring", + "emptyState": "Skicka en sökfråga för att se resultat", "copy": "Kopiera", "resetToDefault": "Återställ till standard", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Sök", + "tabScrape": "Skrapa", + "tabCompare": "Jämför", + "modalitiesGuide": "Guide till modaliteter", + "searchConceptTitle": "Sök", + "searchConceptDesc": "Sök = hämtar en lista med webbresultat (titel, URL, utdrag, relevanspoäng)", + "scrapeConceptTitle": "Skrapa", + "scrapeConceptDesc": "Skrapa = extraherar hela innehållet från en URL (markdown, text eller HTML)", + "compareConceptTitle": "Jämför", + "compareConceptDesc": "Jämför = kör samma fråga parallellt hos N leverantörer för att jämföra svarstid, kostnad och överlappning mellan resultat", + "rerankConceptTitle": "Rangordna om", + "rerankConceptDesc": "Rangordna om = ordnar om resultaten via LLM för att förbättra relevansen utifrån frågan", + "autoConceptTitle": "Auto (billigast)", + "autoConceptDesc": "Auto (billigast) = väljer automatiskt den billigaste tillgängliga leverantören med konfigurerade autentiseringsuppgifter", + "providerCatalogTitle": "Leverantörskatalog", + "kindSearch": "Sök", + "kindFetch": "Hämta/skrapa", + "statusConfigured": "Konfigurerad", + "statusMissing": "Inga autentiseringsuppgifter", + "statusRateLimited": "Hastighetsbegränsad", + "configureProvider": "Konfigurera under Leverantörer", + "loadingProviders": "Läser in leverantörer…", + "failedToLoadProviders": "Det gick inte att läsa in leverantörer", + "costPerQuery": "Kostnad/fråga", + "freeQuota": "Kostnadsfri kvot/mån", + "scrapeUrl": "URL att skrapa", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL krävs", "scrapeUrlInvalid": "Ogiltig URL — den måste börja med http:// eller https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", + "scrapeExtract": "Extrahera", + "scrapeExtracting": "Extraherar…", + "scrapeFullPage": "Hela sidan", "scrapeFormat": "Format", "formatMarkdown": "Markdown", "formatHtml": "HTML", "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", + "scrapePreview": "Förhandsgranskning", + "scrapeRaw": "Rå", + "scrapeContentTruncated": "(avkortat, visa rådata)", "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "scrapeProvider": "Leverantör", + "scrapeSize": "Storlek", "scrapeEmptyState": "Ange en URL för att extrahera dess innehåll", "scrapeProvidersAvailable": "Tillgängliga leverantörer: Firecrawl, Jina Reader, Tavily.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Jämför", + "compareRunning": "Jämför…", + "autoProvider": "Auto (billigast)", + "configuredStatus": "Konfigurerad", + "rateLimitedStatus": "Hastighetsbegränsad", + "noCredential": "Inga autentiseringsuppgifter", + "searchTypeLabel": "Typ", + "rerankModelLabel": "Omrankningsmodell", + "noneOption": "Ingen", + "size": "Storlek", "configurationPane": "Konfigurationspanel", "configuration": "Konfiguration", "status": "Status", @@ -2708,7 +2708,7 @@ "classifierCompatLoadFailed": "Misslyckades med att läsa in inställning", "classifierCompatMode": { "off": "Av", - "auto": "Auto", + "auto": "Automatisk", "always": "Alltid" }, "ccDiscoveryInfoButton": "Hur man aktiverar upptäcktsläge i Claude Code", @@ -2738,7 +2738,7 @@ "reasoningEffort": "Resonemangsansträngning för {model}", "effortNone": "Ingen", "effortLow": "Låg", - "effortMedium": "Medium", + "effortMedium": "Medel", "effortHigh": "Hög", "effortExtraHigh": "Extra hög", "effortMax": "Max", @@ -2808,7 +2808,7 @@ "reasoningEffortTier": { "none": "Ingen", "low": "Låg", - "medium": "Medium", + "medium": "Medel", "high": "Hög", "xhigh": "X-hög" }, @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Lägg till", "antigravityStep2Suffix": "till din hosts-fil som 127.0.0.1.", "antigravityStep3": "3. Öppna Antigravity och förfrågningar kommer att skickas som proxy.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} skickar förfrågningar till sin leverantörsslutpunkt. MITM fångar upp och omdirigerar dem till OmniRoute.", + "mitmStep1": "1. Starta MITM för att dirigera förfrågningar genom OmniRoute.", + "mitmStep2Prefix": "2. Lägg till", + "mitmStep2Suffix": "i din hosts-fil som 127.0.0.1.", + "mitmStep3": "3. Öppna {toolName} så skickas förfrågningarna via proxy.", "sudoPasswordRequiredTitle": "Sudo-lösenord krävs", "sudoPasswordHint": "Administratörslösenord krävs för att ändra värdens fil- och systemproxyinställningar.", "enterSudoPassword": "Ange sudo lösenord", @@ -2869,7 +2869,7 @@ "provider": "Leverantör", "model": "Modell", "providers": "Leverantörer", - "auth": "Auth", + "auth": "Autentisering", "noApiKeysAvailable": "Inga API-nycklar tillgängliga", "usingDefaultOmniroute": "Använder standard: sk_omniroute", "updateConfig": "Uppdatera Config", @@ -2908,7 +2908,7 @@ "continue": "Använd när du kör Continue i IDE och du behöver portabel JSON-baserad leverantörskonfiguration.", "opencode": "Använd när du föredrar terminalbaserade agentkörningar och skriptautomation via OpenCode.", "kiro": "Använd när du integrerar Kiro och styr modelldirigering centralt från OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Använd när du vill ha en AI-fokuserad IDE med Codeium/Windsurf-modeller dirigerade genom OmniRoute.", "antigravity": "Använd när Antigravity/Kiro-trafik måste avlyssnas genom MITM och dirigeras till OmniRoute.", "copilot": "Använd när du vill ha Copilot chattstil UX samtidigt som du upprätthåller OmniRoute-nycklar och routingregler.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2921,18 +2921,18 @@ "claude": "Antropisk Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "xAI Grok Build TUI-kodningsagent med stöd för anpassad leverantör", - "droid": "Factory Droid AI Assistant", + "droid": "Factory Droid AI-assistent", "openclaw": "Öppna Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", + "cline": "Cline AI-kodningsassistent för CLI", "kilo": "Kilokod AI Assistant CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", "continue": "Fortsätt AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "OpenCode AI-kodningsagent (terminal)", + "kiro": "Amazon Kiro — AI-driven IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "Sourcegraph Amp kodningsassistent för CLI", "hermes": "Hermes AI terminalassistent", "hermes-agent": "Hermes Agent (av Nousresearch) - Avancerad terminal-AI med stöd för flera modeller (delegation, vision, komprimering, etc.)", "custom": "Generisk OpenAI-kompatibel CLI- eller SDK-konfigurationsgenerator", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter autonom kodningsagent-CLI", "omp": "Oh My Pi terminal-kodningsagent", "letta": "Letta CLI-agent med persistent minne och verktygsanvändning", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — självlärande RLM-kodningsramverk med stöd för OpenAI-kompatibla leverantörer", "warp": "Warp AI-terminal med stöd för anpassad leverantör", "agent-deck": "Agent Deck multi-agent-orkestrerare", "5dive": "5dive — självhostad flotta av kodningsagenter; en auth-profil pekar dem alla mot OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Installera OpenCode", + "desc": "Installera via npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API-nyckel" }, "3": { - "title": "Set Base URL", + "title": "Ange bas-URL", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Välj modell" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Använd resonemangsvariant", + "desc": "För resonemangsmodeller, kör med --variant high/low/max (se exempelkommandot nedan)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Öppna Kiro-inställningar", + "desc": "Gå till Inställningar → AI-leverantör" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Bas-URL", + "desc": "Klistra in URL:en till din OmniRoute-slutpunkt" }, "3": { - "title": "API Key" + "title": "API-nyckel" }, "4": { - "title": "Select Model" + "title": "Välj modell" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Öppna AI-inställningar", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Lägg till anpassad leverantör", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Bas-URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API-nyckel", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Välj modell", + "desc": "Välj en modell i rullgardinsmenyn" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Anpassad CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Verktygskategorier", "visibleToolsCount": "{count} tillgängliga verktyg", "customCliBuilderTitle": "OpenAI-kompatibel CLI-byggare", "customCliBuilderDescription": "Generera env vars och JSON-kodavsnitt för alla CLI eller SDK som accepterar en OpenAI-kompatibel bas-URL, API-nyckel och modell-ID.", @@ -3112,13 +3112,13 @@ "hermesRoleDefaultDesc": "Primär konversationsmodell", "hermesRoleDelegation": "Delegering (underagenter)", "hermesRoleDelegationDesc": "Orkestrerare och underagentmodell", - "hermesRoleVision": "Vision", + "hermesRoleVision": "Bildanalys", "hermesRoleVisionDesc": "Bild- och skärmdumpsförståelse", "hermesRoleCompression": "Komprimering", "hermesRoleCompressionDesc": "Promptkomprimering och sammanfattning", "hermesRoleWebExtract": "Webbextrahering", "hermesRoleWebExtractDesc": "Extrahering av webbsidesinnehåll", - "hermesRoleSkillsHub": "Skills Hub", + "hermesRoleSkillsHub": "Kompetenscenter", "hermesRoleSkillsHubDesc": "Färdigheter och resonemang kring verktygsanvändning", "hermesRoleApproval": "Godkännande", "hermesRoleApprovalDesc": "Säkerhets- och godkännandebeslut", @@ -3130,9 +3130,9 @@ "hermesRoleMemoryQueryRewriteDesc": "Ombearbetning av minnessökfråga", "hermesRoleTtsAudioTags": "TTS Ljudtaggar", "hermesRoleTtsAudioTagsDesc": "TTS ljudtaggsgenerering", - "hermesRoleTriageSpecifier": "Triage Specifier", + "hermesRoleTriageSpecifier": "Triagespecificerare", "hermesRoleTriageSpecifierDesc": "Specifikation för ärende- och PR-triage", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "Kanban-uppdelare", "hermesRoleKanbanDecomposerDesc": "Kanban-uppgiftsdekomposition", "hermesRoleProfileDescriber": "Profilbeskrivare", "hermesRoleProfileDescriberDesc": "Användarprofilbeskrivning", @@ -3159,7 +3159,7 @@ "hermesRolesWillUpdate": "{count, plural, one {# roll kommer att uppdateras} other {# roller kommer att uppdateras}}", "hermesPreviewPath": "Förhandsgranskning — skrivs till ~/.hermes/config.yaml", "hermesSaveDescription": "Sparar den valda modellen för varje roll i", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "Konfigurationsgenerator för GitHub Copilot", "copilotGeneratorDescriptionPrefix": "Genererar", "copilotGeneratorDescriptionSuffix": "blocket för VS Code GitHub Copilot med Azure-leverantörsmönstret. Välj de modeller du vill ha och kopiera sedan JSON-koden till din konfigurationsfil.", "copilotCompatibilityWarning": "Denna konfiguration använder Azure-leverantörens workaround för anpassade modellistor. Testad med VS Code ≥ 1.109 och GitHub Copilot Chat ≥ v0.37. Framtida tilläggsuppdateringar kan ändra detta beteende.", @@ -3168,16 +3168,16 @@ "selectAll": "Välj alla", "loadingModels": "Läser in modeller...", "advancedOptions": "Avancerade alternativ", - "vision": "Vision", + "vision": "Bildanalys", "copilotCopyConfigForModels": "Kopiera konfiguration ({count, plural, one {# modell} other {# modeller}})", "copilotFilterModelsPlaceholder": "Filtermodeller...", - "copilotMaxInputTokens": "Max Input Tokens", - "copilotMaxOutputTokens": "Max Output Tokens", + "copilotMaxInputTokens": "Maximalt antal indatatoken", + "copilotMaxOutputTokens": "Maximalt antal utdatatoken", "copilotToolCalling": "Verktygsanrop", "copilotPasteInto": "Klistra in i:", "copilotReloadInstruction": "Ladda sedan om VS Code och ange API-nyckeln i inmatningsfältet.", "wireApiChatCompletions": "Chattavslut (/chat/kompletteringar)", - "wireApiResponses": "Responses API (/responses)", + "wireApiResponses": "Svars-API (/responses)", "cliproxyapiActionFailed": "Åtgärden misslyckades", "cliproxyapiActionSucceeded": "Åtgärden lyckades", "cliproxyapiCheckUpdates": "Kontrollera uppdateringar", @@ -3203,7 +3203,7 @@ "cliproxyapiVersion": "Version" }, "combos": { - "title": "Combos", + "title": "Kombinationer", "description": "Skapa modellkombinationer med viktad routing och reservstöd", "autoCatalogTitle": "Katalog för automatisk routing", "autoCatalogTemplateCount": "{count} mallar", @@ -3219,10 +3219,10 @@ "addModelToCombo": "Lägg till modell till Combo", "routingStrategy": "Routingstrategi", "maxRetries": "Max försöker igen", - "timeout": "Timeout (ms)", + "timeout": "Tidsgräns (ms)", "healthcheck": "Hälsokontroll", "priority": "Prioritet", - "fallback": "Fallback", + "fallback": "Reservalternativ", "roundRobin": "Round Robin", "random": "Slumpmässigt", "leastLatency": "Minsta latens", @@ -3245,7 +3245,7 @@ "testResults": "Testresultat — {name}", "resolvedBy": "Löst av:", "more": "+{count} till", - "reqs": "reqs", + "reqs": "förfrågningar", "success": "framgång", "proxyConfigured": "Proxy konfigurerad", "copyComboName": "Kopiera kombinationsnamn", @@ -3260,18 +3260,18 @@ "priorityDesc": "Sekventiell reserv: provar modell 1 först, sedan 2 osv.", "weightedDesc": "Fördelar trafik efter viktprocent med reserv", "roundRobinDesc": "Cirkulär distribution: varje begäran går till nästa modell i rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Kontextöverföring", + "contextRelayDesc": "Bevarar sessionskontinuiteten med överlämningssammanfattningar när konton roteras", "randomDesc": "Enhetligt slumpmässigt urval, sedan fallback till återstående modeller", "leastUsedDesc": "Väljer modellen med minst förfrågningar, balanserar belastningen över tiden", "costOptimizedDesc": "Rutter till den billigaste modellen först baserat på prissättning", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Dirigerar varje återanvändbart promptprefix konsekvent till samma leverantörskonto", + "resetAware": "Återställningsmedveten RR", "resetAwareDesc": "Balanserar återstående kvot mot 5 timmars och veckovisa återställningar och slår sedan runt liknande resultat", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kvotviktad", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Strikt slumpmässig", + "strictRandomDesc": "Blanda kortleken — använder varje modell en gång innan den blandas om", "fusion": "Fusion", "fusionDesc": "Skickar prompten till varje panelmodell parallellt, sedan syntetiserar en domarmodell ett slutgiltigt svar", "fusionJudgeModel": "Domarmodell", @@ -3288,13 +3288,13 @@ "retryDelay": "Försök igen fördröjning (ms)", "concurrencyPerModel": "Samtidighet / Modell", "queueTimeout": "Timeout för kö (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Tröskelvärde för överlämning", + "contextRelayHandoffThresholdHelp": "När kvotanvändningen når detta tröskelvärde genererar OmniRoute en strukturerad överlämningssammanfattning innan det aktiva kontots kvot är förbrukad.", + "contextRelayMaxMessages": "Maximalt antal meddelanden för sammanfattning", + "contextRelayMaxMessagesHelp": "Begränsar hur mycket av den senaste historiken som komprimeras i vidarebefordringssammanfattningen.", + "contextRelaySummaryModel": "Sammanfattningsmodell", + "contextRelaySummaryModelHelp": "Valfri åsidosättningsmodell som endast används för att generera överlämningssammanfattningen. Lämna tomt för att återanvända den aktiva kombinationsmodellen.", + "contextRelayProviderNote": "Kontextvidarebefordran genererar för närvarande överlämningar för rotation av Codex-konton. Kombinera den med flera konton från samma leverantör för bästa kontinuitet.", "advancedHint": "Lämna tomt om du vill använda globala standardinställningar. Dessa åsidosätter inställningarna per leverantör.", "failoverBeforeRetry": "Failover innan du försöker igen", "maxSetRetries": "Max antal försök igen", @@ -3335,7 +3335,7 @@ "playgroundStrategy": "Strategi", "playgroundEstimatedCost": "Uppsk. kostnad", "playgroundEstimatedLatency": "Uppskattad latens", - "playgroundFallback": "fallback", + "playgroundFallback": "reserv", "playgroundWeight": "vikt {value}", "playgroundWarningCount": "Varningar ({count})", "playgroundErrorCount": "Fel ({count})", @@ -3344,41 +3344,41 @@ "playgroundCreateFirst": "Skapa en först", "weighted": "Viktad", "leastUsed": "Minst använda", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "costOpt": "Kostnadsoptimering", + "strategyGuideTitle": "Så använder du den här strategin", + "strategyGuideWhen": "När den bör användas", + "strategyGuideAvoid": "Undvik när", + "strategyGuideExample": "Exempel", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "Du har en föredragen modell och vill endast använda reservmodellen vid fel.", + "avoid": "Du behöver fördela förfrågningar mellan modeller.", + "example": "Primär kodningsmodell med billigare reserv vid driftavbrott." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Du behöver kontrollerad trafikfördelning mellan modeller.", + "avoid": "Du kan inte upprätthålla korrekta viktningar över tid.", + "example": "Lansering med 80 % stabil modell + 20 % kanariemodell." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Du vill ha en förutsägbar och jämn fördelning.", + "avoid": "Modellerna skiljer sig för mycket vad gäller latens eller kostnad.", + "example": "Samma modell på flera konton för att fördela kapaciteten." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Du vill ha enkel fördelning med minimal konfiguration.", + "avoid": "Du behöver strikta trafikgarantier.", + "example": "Snabb prototypframtagning med likvärdiga modeller." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Du vill ha adaptiv balansering baserad på aktuell efterfrågan.", + "avoid": "Trafiken är för låg för att dra nytta av användningsbalansering.", + "example": "Blandade arbetsbelastningar där en modell ofta blir överbelastad." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Kostnadsminskning är din högsta prioritet.", + "avoid": "Prisuppgifter saknas eller är inaktuella.", + "example": "Bakgrunds- eller batchjobb där lägre kostnad föredras." }, "reset-aware": { "when": "Du ruttar över flera konton med kvottelemetri och olika återställningsfönster.", @@ -3386,19 +3386,19 @@ "example": "Föredrar en kontoåterställning på 60 % per vecka i morgon framför en återställning på 80 % senare." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Använd när du vill ha en helt jämn fördelning — varje modell används en gång innan någon upprepas.", + "avoid": "Undvik när modeller har olika kvalitet eller latens och ordningen spelar roll.", + "example": "Exempel: Flera konton med samma modell för att fördela användningen jämnt." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Använd när du vill ha ett val med låg latens med hjälp av Power-of-Two-Choices-algoritmen.", + "avoid": "Undvik för små kombinationer med två eller färre modeller — ger ingen fördel jämfört med round-robin.", + "example": "Exempel: Inferens med hög genomströmning över fler än fyra likvärdiga modellslutpunkter." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Använd när långa sessioner måste överleva kontorotation utan att förlora arbetskontexten.", + "avoid": "Undvik när kontobyten är sällsynta eller när du inte vill ha extra begäranden om sammanfattning.", + "example": "Exempel: Codex-sessioner som roterar mellan flera konton när kvoten nästan är förbrukad." }, "fill-first": { "when": "Använd när du vill utnyttja en leverantörs kvot helt innan du går vidare till nästa.", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Hur många återförsök som görs innan en begäran misslyckas.", + "retryDelay": "Inledande väntetid mellan återförsök. Högre värden minskar belastningstoppar.", + "timeout": "Maximal varaktighet för en begäran innan den avbryts.", + "healthcheck": "Utelämnar modeller/leverantörer med driftproblem från dirigeringsbeslut.", + "concurrencyPerModel": "Maximalt antal samtidiga begäranden som tillåts per modell vid turordningsdirigering.", + "queueTimeout": "Hur länge en begäran kan vänta i kön innan tidsgränsen överskrids.", "failoverBeforeRetry": "När det är aktiverat utlöser alla uppströmsfel omedelbar failover till nästa kombinationsmål, och hoppar över alla återförsök och reserv-URL:er.", "maxSetRetries": "Antal gånger för att försöka igen med hela måluppsättningen när varje mål misslyckas. 0 = inget nytt försök på inställd nivå.", "setRetryDelayMs": "Fördröjning mellan återförsök på inställd nivå, vilket ger övergående problem tid att lösa.", "disableSessionStickiness": "Rotera till en annan anslutning vid varje förfrågan istället för att fästa en hel konversation vid en anslutning via det första meddelandets hash. Åsidosätter det globala standardvärdet. Lämna på Ärv för att bevara promptcache-träffar för multi-turn-chattar." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", + "templatesTitle": "Snabbmallar", + "templatesDescription": "Använd en startprofil och justera sedan modeller och konfiguration.", + "templateApply": "Använd mall", + "templateHighAvailability": "Hög tillgänglighet", + "templateHighAvailabilityDesc": "Prioritetsdirigering med hälsokontroller och säkra återförsök.", + "templateCostSaver": "Kostnadsbesparing", + "templateCostSaverDesc": "Kostnadsoptimerad dirigering för arbetsbelastningar där budgeten prioriteras.", + "templateBalanced": "Balanserad belastning", + "templateBalancedDesc": "Dirigering till den minst använda för att fördela efterfrågan över tid.", + "usageGuideHide": "Dölj", + "usageGuideDontShowAgain": "Visa inte igen", + "usageGuideShow": "Visa guide", + "quickTestTitle": "Kombination redo att valideras", + "quickTestDescription": "Kör ett test nu för att bekräfta reservväxlings- och latensbeteendet.", + "testNow": "Testa nu", + "pricingCoverage": "Pristäckning", + "pricingCoverageHint": "Kostnadsoptimering fungerar bäst när alla modeller i kombinationen har prisuppgifter.", + "pricingAvailable": "Prisuppgifter tillgängliga", + "pricingMissing": "Inga prisuppgifter", + "pricingAvailableShort": "prissatta", "pricingMissingShort": "inget pris", "fallbackOnlyOnQuotaExhaustion": "Endast gå vidare vid kvotutnyttjande", "fallbackOnlyOnQuotaExhaustionShort": "kvot-endast återställning", "warningRoundRobinSingleModel": "Round-robin är mest användbar med minst 2 modeller.", "warningCostOptimizedPartialPricing": "Endast {priced} av {total} modeller har prissättning. Rutning kan vara delvis kostnadsmedveten.", "warningCostOptimizedNoPricing": "Inga prisuppgifter hittades för denna kombination. Kostnadsoptimerad kan väga oväntat.", - "filterAll": "All", + "filterAll": "Alla", "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterDeterministic": "Deterministisk", + "filterEmptyTitle": "Inga kombinationer matchar detta strategifilter.", + "filterEmptyIntelligentDescription": "Skapa en automatisk kombination eller en LKGP-kombination för att fylla instrumentpanelen för intelligent dirigering.", + "filterEmptyDeterministicDescription": "Just nu finns endast automatiska kombinationer och LKGP-kombinationer. Växla tillbaka till Alla eller skapa en deterministisk kombination.", "readinessTitle": "Redo att spara?", "readinessDescription": "Granska checklistan innan du skapar eller uppdaterar den här kombinationen.", "readinessCheckName": "Kombinationsnamnet är giltigt", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Lägg till minst en modell.", "saveBlockWeighted": "Ställ in vikter på 100 % (nuvarande: {total}%).", "saveBlockPricing": "Lägg till prissättning för minst en modell eller välj en annan strategi.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Rekommenderad konfiguration", + "applyRecommendations": "Tillämpa rekommendationer", + "recommendationsUpdated": "Rekommendationerna har uppdaterats för {strategy}.", + "recommendationsApplied": "Rekommendationerna har tillämpats på den här kombinationen.", + "intelligentPanelTitle": "Instrumentpanel för intelligent dirigering", + "intelligentPanelDesc": "Poängsättning i realtid och hälsostatus för den här kombinationen för automatisk dirigering.", "configOnlyStatus": "Konfigurationsvy", "configOnlyHint": "Denna panel visar endast routingindata. Aktuell brytarstatus finns på sidan Hälsa.", "routingInputs": "Routingindata", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Okänt leverantörsprefix.", "builderDynamicAccountShort": "Dynamiskt konto", "builderNeedValidName": "Definiera ett giltigt kombonamn innan du fortsätter.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Statusöversikt", + "normalOperation": "Normal drift", + "allProvidersHealthy": "Leverantörerna rapporterar stabila dirigeringsförhållanden.", + "incidentMode": "Incidentläge", + "highCircuitBreakerRate": "En hög utlösningsfrekvens för kretsbrytaren har upptäckts.", + "activeModePack": "Aktivt lägespaket", + "modePackUpdated": "Lägespaketet har uppdaterats till {pack}.", + "modePackHint": "Byt förinställningar för att styra dirigeringsmotorn utan att bygga om kombinationen.", + "providerScores": "Leverantörspoäng", + "allProvidersEvaluated": "Ingen kandidatpool har konfigurerats. Alla aktiva leverantörer utvärderas vid körning.", + "excludedProviders": "Exkluderade leverantörer", + "excludedProvidersHint": "Leverantörer med en ÖPPEN kretsbrytare exkluderas tillfälligt från dirigeringen.", + "noExcludedProviders": "Inga leverantörer är för närvarande exkluderade.", + "cooldownMinutes": "Återhämtningstid: {minutes} min", + "builderIntelligentTitle": "Konfiguration av intelligent dirigering", + "builderIntelligentDesc": "Konfigurera poängsättningsmotorn med flera faktorer för den här kombinationen för automatisk dirigering.", + "candidatePoolLabel": "Kandidatpool", + "candidatePoolHint": "Välj vilka leverantörer den här motorn ska utvärdera. Lämna tomt för att använda alla aktiva leverantörer.", + "candidatePoolEmpty": "Det finns inga aktiva leverantörer ännu.", + "candidatePoolAllProviders": "Alla leverantörer", + "modePackLabel": "Lägespaket", + "routerStrategyLabel": "Dirigeringsstrategi", + "strategyRules": "Regler (poängsättning med 6 faktorer)", + "explorationRateLabel": "Utforskningsgrad", + "explorationRateHint": "{percent} % av förfrågningarna kan utforska icke-optimala leverantörer.", + "budgetCapLabel": "Budgettak (USD/förfrågan)", + "budgetCapPlaceholder": "Ingen gräns", + "advancedWeightsTitle": "Avancerat: poängsättningsvikter", "nestedComboFlatten": "Platta ut kapslade kombor", "nestedComboExecute": "Kör kapslade kombor som mål", "effectiveRoutingShare": "Effektiv routingandel (vikt ÷ totalt)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kvot", + "weightHealth": "Hälsa", + "weightCostInv": "Kostnad", + "weightLatencyInv": "Latens", + "weightTaskFit": "Uppgiftslämplighet", + "weightStability": "Stabilitet", + "weightTierPriority": "Nivå", + "weightCacheAffinity": "Affinitet för cacheträffar", "weightSessionAvailability": "Sessions Tillgänglighet", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Konfiguration av intelligent dirigering", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Felsäker baslinje", + "description": "Använd en primär modell och håll reservkedjan kort och tillförlitlig.", + "tip1": "Placera din mest tillförlitliga modell först.", + "tip2": "Ha 1–2 reservmodeller med liknande kvalitet.", + "tip3": "Använd säkra omförsök för att hantera tillfälliga leverantörsfel." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Kontrollerad trafikfördelning", + "description": "Perfekt för canary-lanseringar och gradvis migrering mellan modeller.", + "tip1": "Börja med en försiktig fördelning, till exempel 90/10.", + "tip2": "Håll summan på 100 % och balansera automatiskt efter ändringar.", + "tip3": "Övervaka framgångsgrad och latens innan du ökar canary-andelen." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Förutsägbar lastfördelning", + "description": "Bäst när modellerna är likvärdiga och du behöver en jämn fördelning.", + "tip1": "Använd minst 2 modeller.", + "tip2": "Ange samtidighetsgränser för att undvika överbelastning vid trafiktoppar.", + "tip3": "Använd en tidsgräns för kön för att snabbt avbryta vid mättnad." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Snabb fördelning med minimal konfiguration", + "description": "Använd när du behöver enkel fördelning utan strikta garantier.", + "tip1": "Använd modeller med liknande latensprofiler.", + "tip2": "Behåll omförsök aktiverade för att hantera slumpmässiga missar.", + "tip3": "Använd detta främst för experiment, inte för strikta SLA:er." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Adaptiv balansering", + "description": "Dirigerar till mindre använda modeller för att minska belastningstoppar över tid.", + "tip1": "Fungerar bättre vid kontinuerlig trafik.", + "tip2": "Kombinera med hälsokontroller för säkrare balansering.", + "tip3": "Spåra användningen per modell för att verifiera förbättringar i fördelningen." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Budgetprioriterad dirigering", + "description": "Dirigerar till billigare modeller när prisuppgifter finns tillgängliga.", + "tip1": "Säkerställ att prisuppgifter finns för alla valda modeller.", + "tip2": "Behåll en reservmodell med hög kvalitet för svåra prompter.", + "tip3": "Använd för batch- och bakgrundsjobb där kostnaden är det viktigaste KPI:et." }, "reset-aware": { "title": "Återställningsmedveten kontorotation", @@ -3597,11 +3597,11 @@ "tip3": "Håll bandet litet så att motsvarande konton fortfarande roterar rättvist." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Kortleksbaserad fördelning", + "description": "Varje modell används exakt en gång per cykel innan ordningen blandas om.", + "tip1": "Använd minst 2 modeller för en meningsfull fördelning.", + "tip2": "Fungerar bäst med modeller som har likvärdig prestanda.", + "tip3": "Perfekt för lastbalansering mellan flera API-konton." }, "fill-first": { "description": "Avgasleverantörskvoter sekventiellt innan de faller tillbaka.", @@ -3646,86 +3646,86 @@ "title": "Två vals kraft" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Kostnadsfri stack (0 $)", + "templateFreeStackDesc": "Round-robin mellan alla kostnadsfria leverantörer: Kiro (Claude), Qoder (5 modeller), Qwen (4 modeller). Helt kostnadsfritt och kodningen avbryts aldrig.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP-läge", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Kom igång med kombinationer", + "wizardGuideDesc": "Skapa modellkombinationer för att dirigera AI-trafik intelligent", + "wizardGuideHint": "eller klicka på + Skapa kombination ovan", + "createFirstCombo": "Skapa din första kombination", + "wizardStep1Title": "Namnge din kombination", + "wizardStep1Desc": "Ge din kombination ett unikt namn så att den kan identifieras i routningsregler", + "wizardStep2Title": "Lägg till modeller", + "wizardStep2Desc": "Välj AI-modeller och ordna deras prioritetsordning för reservväxling", + "wizardStep3Title": "Välj strategi", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Granska och spara", + "wizardStep4Desc": "Granska konfigurationen och aktivera kombinationen", + "usageGuideInvokeTitle": "Så anropar du den här kombinationen", + "usageGuideInvokeDesc": "Ange kombinationens exakta namn som modell, t.ex. model: \"my-combo\" (eller combo/my-combo).", + "usageGuideInvokeAutoNote": "auto och auto/* är en separat router utan konfiguration som inte använder dina kombinationer (såvida inte en kombination bokstavligen heter auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto är en riktig betald produkt från OpenRouter (Auto Best Available), inte ett OmniRoute-alias – exkludera den via Inställningar → Routning → Dölj betalda modeller.", + "emailVisibilityStateOn": "På", + "emailVisibilityStateOff": "Av", + "reorderHandle": "Dra för att ändra ordning", + "failedReorder": "Det gick inte att ändra ordningen på modellerna", + "builderFlowTitle": "Flöde för kombinationsbyggaren", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Grunder", + "description": "Namn och startmall" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Steg", + "description": "Val av leverantör, modell och konto" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strategi", + "description": "Routningsbeteende och avancerade inställningar" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Smart routning", + "description": "Kandidatpool, förinställningar och poängsättning för automatisk routning" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Granska", + "description": "Slutlig validering före sparande" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Steget har slutförts", + "builderStageCurrent": "Aktuellt steg", + "builderStagePending": "Väntar", + "builderStageLocked": "Låst – slutför föregående steg först", + "builderTitle": "Skapa en kombination", + "builderBrowseCatalog": "Bläddra i katalogen", + "builderProvider": "Leverantör", + "builderLoadingProviders": "Läser in leverantörer...", + "builderSelectProvider": "Välj leverantör", + "builderModel": "Modell", + "builderSelectModel": "Välj modell", + "builderProviderFirst": "Välj leverantör först", + "builderAccount": "Konto", + "builderPreview": "Förhandsgranskning", + "builderAddStep": "Lägg till steg", "builderDuplicateExact": "Detta exakta steg för leverantör/modell/konto finns redan i kombinationen.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Kombinationsreferens", + "builderAddComboRef": "Lägg till kombinationsreferens", + "builderComboRefStep": "Lägg till kombinationsreferens", + "builderPinnedAccount": "Fäst konto", + "builderLegacyEntry": "Äldre post", + "reviewName": "Namn", + "reviewStrategy": "Strategi", + "reviewSteps": "Steg", + "reviewAccounts": "Konton", + "reviewProviders": "Leverantörer", + "reviewComboRefs": "Kombinationsreferenser", + "reviewAdvanced": "Avancerade inställningar", + "reviewAgentFlags": "Agentflaggor", + "reviewSequence": "Modellsekvens", + "reviewNoSteps": "Inga steg har konfigurerats", "builderStagesDescription": "Slutför varje steg för att definiera kombinationer, bygga steg, välja routingstrategi och granska resultat.", "builderStepsDescription": "Bygg varje kombinationssteg i ordning: leverantör, modell och sedan konto. Detta gör det möjligt att återanvända samma leverantör och modell över olika konton.", "selectProvider": "Välj leverantör", @@ -3766,7 +3766,7 @@ "agentFeaturesContextLengthErrorInteger": "Kontextlängden måste vara ett giltigt heltal", "agentFeaturesContextLengthErrorRange": "Kontextlängden måste vara mellan 1 000 och 2 000 000", "compressionOverride": "Kompressionsöverstyrning", - "modePack": "Mode Pack", + "modePack": "Lägespaket", "disableSessionStickiness": "Inaktivera sessionslåsning", "sessionStickinessEnabled": "Sessionslåsning på", "sessionStickinessDisabled": "Sessionslåsning av", @@ -3800,32 +3800,32 @@ "range7d": "7 dagar", "range30d": "30 dagar", "range90d": "90 dagar", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 dagar", + "range365d": "365 dagar", "rangeAll": "Hela tiden", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Aktiva modeller", + "flatRateEstimateNotice": "Inkluderar uppskattningar av tokenpriser för abonnemang med fast pris, inte fakturerad kostnad.", + "flatRateEstimateForecast": "Prognosen inkluderar uppskattningar för fast pris.", + "selectedWindow": "Valt intervall", + "activeProviders": "Aktiva leverantörer", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Utgifter idag", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Leverantörsandel", + "topProviders": "Största leverantörerna", + "costTrend": "Kostnadstrend", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Toppmodeller", "requestsInWindow": "Requests In Window", "tokenUsage": "Tokenanvändning", "totalTokens": "Totala tokens", "inputTokens": "Mata in tokens", - "outputTokens": "Output Tokens", + "outputTokens": "Utdata-token", "inputOutputRatio": "Ingångs/utgångsförhållande", "tokens": "polletter", "routingEfficiency": "Routing effektivitet", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API-slutpunkt", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Använd den OpenAI-kompatibla slutpunkten med de flesta SDK:er och verktyg.", + "testEndpoint": "Testa slutpunkt →", + "advancedProtocols": "Avancerade protokoll", "available": "Tillgängliga slutpunkter", "cloudProxy": "Molnproxy", "disableConfirm": "Är du säker på att du vill inaktivera molnproxy?", @@ -3900,7 +3900,7 @@ "disableCloud": "Inaktivera Cloud", "enableCloud": "Aktivera Cloud", "modelsAcrossEndpoints": "{models} modeller över {endpoints} slutpunkter", - "loadingModels": "Loading available models...", + "loadingModels": "Läser in tillgängliga modeller...", "chatDesc": "Strömmande och icke-strömmande chatt med alla leverantörer", "embeddings": "Inbäddningar", "embeddingsDesc": "Textinbäddningar för sök- och RAG-pipelines", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Transkribera ljudfiler till text (Viska)", "textToSpeech": "Text till tal", "textToSpeechDesc": "Konvertera text till naturligt klingande tal", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Musikgenerering", + "musicDesc": "Generera musik och ljudspår via ComfyUI (Stable Audio, MusicGen)", "moderations": "Moderationer", "moderationsDesc": "Innehållsmoderering och säkerhetsklassificering", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API för Codex och avancerade agentbaserade arbetsflöden", + "listModelsDesc": "Lista alla tillgängliga modeller från alla anslutna leverantörer", + "settingsApiDesc": "Läs och ändra OmniRoute-konfigurationen via API", + "settingsApi": "API för inställningar", "categoryCore": "Kärn-API:er", "categoryMedia": "Media & Multimodal", - "categorySearch": "Search & Discovery", + "categorySearch": "Sökning och upptäckt", "categoryUtility": "Verktyg & Hantering", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Webbsökning", + "webSearchDesc": "Enhetlig webbsökning hos flera leverantörer med automatisk redundansväxling och cachelagring", + "searchProvider": "Sökleverantör", + "searchProviderDesc": "Den här leverantören används för webbsökning via POST /v1/search. Ingen modellkonfiguration behövs – sökleverantörer är klara att användas när en API-nyckel har anslutits.", "enableCloudTitle": "Aktivera Cloud Proxy", "whatYouGet": "Vad du kommer att få", "cloudBenefitAccess": "Få åtkomst till ditt API från var som helst i världen", @@ -3963,29 +3963,29 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Aktivera tunnel", + "cloudflaredInstallAndEnable": "Installera och aktivera", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Körs", + "cloudflaredStarting": "Startar", + "cloudflaredStoppedState": "Stoppad", + "cloudflaredNotInstalled": "Inte installerad", + "cloudflaredUnsupported": "Stöds inte", + "cloudflaredError": "Fel", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Senaste fel: {error}", "providerModelsTitle": "{provider} — Modeller", "noModelsForProvider": "Inga modeller tillgängliga för denna leverantör.", "chat": "Chatta", "embedding": "Inbäddning", "image": "Bild", "custom": "anpassad", - "modelsCount": "{count, plural, one {# model} other {# models}}", + "modelsCount": "{count, plural, one {# modell} other {# modeller}}", "sectionTitle": "Integrationsyta", "sectionDescription": "OpenAI-kompatibla API:er och operativa protokollslutpunkter", "tabApis": "API:er", @@ -3997,65 +3997,65 @@ "mcpCardDescription": "Model Context Protocol över stdio", "a2aCardTitle": "A2A-server", "a2aCardDescription": "Agent2Agent JSON-RPC-slutpunkt", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "protocolToolsLabel": "Verktyg", + "protocolTasksLabel": "Uppgifter", + "protocolActiveStreamsLabel": "Aktiva strömmar", + "protocolLastActivity": "Senaste aktivitet", + "quickStart": "Snabbstart", + "openMcpDashboard": "Öppna MCP-hantering", + "openA2aDashboard": "Öppna A2A-hantering", + "mcpQuickStartTitle": "Snabbstart för MCP", + "mcpQuickStartStep1": "Kör MCP-servern via `omniroute --mcp`.", + "mcpQuickStartStep2": "Konfigurera din MCP-klient för att ansluta via stdio-transport.", + "mcpQuickStartStep3": "Anropa verktyg som `omniroute_get_health` och `omniroute_list_combos`.", + "a2aQuickStartTitle": "Snabbstart för A2A", + "a2aQuickStartStep1": "Hitta agentkortet på `/.well-known/agent.json`.", + "a2aQuickStartStep2": "Skicka JSON-RPC-förfrågningar till `POST /a2a` med `message/send` eller `message/stream`.", + "a2aQuickStartStep3": "Spåra och styr uppgifter med `tasks/get` och `tasks/cancel`.", + "completionsLegacy": "Kompletteringar (äldre)", + "completionsLegacyDesc": "Äldre OpenAI-textkompletteringar – accepterar både en promptsträng och formatet med en meddelandematris", "messagesApi": "Meddelanden", "messagesApiDesc": "Native Anthropic Messages API-format för Claude-kompatibla leverantörer", "imageEdits": "Bildredigeringar", "imageEditsDesc": "Redigera och modifiera befintliga bilder med AI (inpainting, outpainting, variationer)", - "batchApi": "Batch API", + "batchApi": "Batch-API", "batchApiDesc": "Bearbeta stora partier av förfrågningar asynkront (OpenAI-kompatibel)", "filesApi": "Filer API", "filesApiDesc": "Ladda upp och hantera filer för batchbearbetning", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Videogenerering", + "videoDesc": "Generera videor med AI-modeller som ComfyUI och Stable Video Diffusion.", + "tailscaleRequestFailed": "Det gick inte att läsa in Tailscale-status", + "tailscaleEnableFailed": "Det gick inte att aktivera Tailscale Funnel", + "tailscaleWaitingForLogin": "Slutför Tailscale-inloggningen i den öppnade webbläsarfliken. OmniRoute försöker igen automatiskt.", + "tailscaleLoginTimedOut": "Tidsgränsen överskreds i väntan på Tailscale-inloggning", + "tailscaleWaitingForFunnel": "Aktivera Funnel för den här enheten i den öppnade webbläsarfliken. OmniRoute fortsätter att kontrollera.", + "tailscaleFunnelTimedOut": "Tidsgränsen överskreds i väntan på att Tailscale Funnel skulle aktiveras", + "tailscaleStarted": "Tailscale Funnel har aktiverats", + "tailscaleDisableFailed": "Det gick inte att inaktivera Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel har inaktiverats", + "tailscaleInstallFailed": "Det gick inte att installera Tailscale", + "tailscaleInstallProgress": "Arbetar...", + "tailscaleInstalled": "Tailscale har installerats", + "tailscaleRunning": "Körs", + "tailscaleNeedsLogin": "Inloggning krävs", + "tailscaleStoppedState": "Stoppad", + "tailscaleNotInstalled": "Inte installerad", + "tailscaleUnsupported": "Stöds inte", + "tailscaleError": "Fel", + "tailscaleDisable": "Stoppa Funnel", + "tailscaleInstallAndEnable": "Installera och aktivera", + "tailscaleLoginAndEnable": "Logga in och aktivera", + "tailscaleEnable": "Aktivera Funnel", + "tailscaleUrlNotice": "Använder din Tailscale-adress på .ts.net. Inloggning och godkännande av Funnel kan krävas vid första användningen.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Autentisera den här datorn med Tailscale och aktivera sedan Funnel.", + "tailscaleBinaryPath": "Binärfil: {path}", + "tailscaleLastError": "Senaste fel: {error}", + "tailscaleInstallTitle": "Installera Tailscale", + "tailscaleInstallIntro": "Installerar Tailscale på den här datorn och förbereder OmniRoute för att aktivera Funnel.", + "tailscaleInstallPasswordHint": "På macOS och Linux kan sudo krävas för paketinstallationen och starten av bakgrundstjänsten.", + "tailscaleSudoPlaceholder": "Valfritt sudo-lösenord", + "tailscaleInstalling": "Installerar", "tailscaleSudoLabel": "Sudo-lösenord (krävs på macOS/Linux)", "ngrokTitle": "ngrok tunnel", "ngrokRunning": "Löpning", @@ -4132,7 +4132,7 @@ "vscodeAliasModelsLabel": "VS Code-modeller", "vscodeAliasChatLabel": "VS Code-chatt", "localServer": "Lokal server", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute i molnet", "copyUrl": "Kopiera URL", "badgeLoopbackTooltip": "Denna slutpunkt är endast tillgänglig lokalt (endast loopback)", "badgeAlwaysProtectedTooltip": "Denna slutpunkt är alltid skyddad och kräver auktorisering", @@ -4144,9 +4144,9 @@ "tierPublic": "Publik", "hideInternal": "Dölj interna", "showInternal": "Visa interna", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Anpassad systemprompt", + "customSystemPromptDescription": "Infoga en anpassad systemprompt i varje modellförfrågan", + "customSystemPromptPlaceholder": "t.ex. Svara alltid som en pirat...", "obsidianEnterToken": "Ange en Obsidian API-token", "obsidianConnectFailed": "Kunde inte ansluta", "obsidianConnectionFailed": "Anslutningen misslyckades", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "Token konfigurerad. Notion-verktyg är tillgängliga via MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Slutpunktsproxy", + "tabApiEndpoints": "API-slutpunkter", + "apiEndpointsTitle": "API-slutpunkter", + "apiEndpointsDescription": "Backend-API-slutpunkter som kan användas av andra applikationer och tjänster. Det här avsnittet listar alla tillgängliga REST-API:er med dokumentation och testfunktioner.", + "comingSoon": "Kommer snart", + "plannedFeatures": "Planerade funktioner", + "featureRestApi": "Katalog över REST-API-slutpunkter med interaktiv dokumentation", + "featureWebhooks": "Konfiguration av webhooks och händelseprenumerationer", + "featureSwagger": "Automatisk generering av OpenAPI-/Swagger-specifikation", + "featureAuth": "Hantering av API-nycklar och OAuth-behörighetsomfång per slutpunkt" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "Läser in MCP-instrumentpanelen...", + "activate": "aktivera", + "deactivate": "inaktivera", + "confirmSwitchCombo": "Bekräfta åtgärden {action} för kombinationen \"{combo}\"?", + "switchComboFailed": "Det gick inte att ändra kombinationens status.", + "switchComboSuccess": "Kombinationen \"{combo}\" har uppdaterats.", + "confirmApplyProfile": "Tillämpa resilienprofilen \"{profile}\"?", + "applyProfileFailed": "Det gick inte att tillämpa resilienprofilen.", + "applyProfileSuccess": "Profilen \"{profile}\" har tillämpats.", + "confirmResetBreakers": "Återställ alla kretsbrytare?", + "resetBreakersFailed": "Det gick inte att återställa kretsbrytarna.", + "resetBreakersSuccess": "Kretsbrytarna har återställts.", + "processStatus": "Processtatus", "online": "Online", "offline": "Offline", "disableLabel": "Inaktivera {label}", @@ -4237,119 +4237,119 @@ "mcpStep2": "Konfigurera din MCP-klient för att ansluta över stdio-transport.", "mcpStep3": "Anropa verktyg som {code1} och {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", + "sessionUptime": "Sessionens drifttid", + "lastHeartbeat": "Senaste heartbeat", + "activity24h": "Aktivitet (24 h)", + "totalCalls": "Totalt antal anrop", + "successRate": "Andel lyckade anrop", + "avgLatency": "Genomsnittlig latens", + "topTools": "Vanligaste verktygen", + "noToolCalls24h": "Inga verktygsanrop under de senaste 24 timmarna.", + "runtimeDetails": "Körningsdetaljer", "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "scopesEnforced": "Behörighetsomfång tillämpas", + "yes": "ja", + "no": "nej", + "lastCall": "Senaste anrop", + "heartbeatPath": "Heartbeat-sökväg", + "operationalControls": "Driftkontroller", + "switchCombo": "Byt kombination", + "inactive": "inaktiv", + "active": "aktiv", + "activateCombo": "Aktivera kombination", + "deactivateCombo": "Inaktivera kombination", + "applyResilienceProfile": "Tillämpa motståndskraftsprofil", + "profileAggressive": "aggressiv", + "profileBalanced": "balanserad", + "profileConservative": "konservativ", + "applyProfile": "Tillämpa profil", + "resetCircuitBreakers": "Återställ kretsbrytare", + "resetCircuitBreakersHelp": "Rensar aktuell brytarstatus och felräknare för leverantörer.", + "resetAllBreakers": "Återställ alla brytare", + "toolsAndScopes": "Verktyg och behörighetsområden", + "tableTool": "Verktyg", + "tableScopes": "Behörighetsområden", + "tablePhase": "Fas", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Granskningslogg", + "auditSummary": "Anrop: {total} | sida {page} av {totalPages}", + "allTools": "Alla verktyg", + "allResults": "Alla resultat", + "success": "Lyckades", + "failure": "Misslyckades", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "Läser in granskningsposter...", + "noAuditEntriesForFilters": "Inga granskningsposter hittades för de aktuella filtren.", + "tableTimestamp": "Tidsstämpel", + "tableDuration": "Varaktighet", + "tableResult": "Resultat", + "tableApiKey": "API-nyckel", + "failed": "misslyckades", + "previous": "Föregående", + "next": "Nästa", + "apiKeyId": "API-nyckel-ID", + "offset": "Förskjutning", + "limit": "Gräns", + "tool": "Verktyg" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "Läser in A2A-instrumentpanelen...", + "confirmCancelTask": "Avbryt uppgiften {taskId}?", + "cancelTaskFailed": "Det gick inte att avbryta uppgiften.", + "cancelTaskSuccess": "Uppgiften {taskId} avbröts.", + "smokeSendFailed": "message/send-röktestet misslyckades.", + "smokeSendSuccessWithTask": "message/send OK (uppgift {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream-röktestet misslyckades.", + "smokeStreamSuccessWithTask": "message/stream ok (uppgift {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream slutfördes utan uppgifts-id.", + "health": "Hälsa", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "Totalt antal uppgifter", + "activeStreams": "Aktiva strömmar", + "lastTask": "Senaste uppgift", + "taskStateOverview": "Översikt över uppgiftsstatus", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "inskickad", + "working": "bearbetas", + "completed": "slutförd", + "failed": "misslyckad", + "cancelled": "avbruten" }, - "agentCard": "Agent card", + "agentCard": "Agentkort", "agentCardPath": "/.well-known/agent.json", "version": "Version", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "Funktioner", + "agentCardNotAvailable": "Agentkortet är inte tillgängligt.", + "quickValidation": "Snabbvalidering", + "quickValidationDescription": "Utför smoke-anrop via den aktiva `/a2a`-slutpunkten.", + "runMessageSend": "Kör message/send", + "runMessageStream": "Kör message/stream", + "taskManagement": "Uppgiftshantering", + "taskSummary": "{total} uppgifter | sida {page} av {totalPages}", + "allStates": "alla", + "allSkills": "alla färdigheter", + "loadingTasks": "Läser in uppgifter...", + "noTasksForFilters": "Inga uppgifter hittades för de aktuella filtren.", + "tableTask": "Uppgift", + "tableSkill": "Färdighet", + "tableState": "Status", + "tableUpdated": "Uppdaterad", + "tableActions": "Åtgärder", + "view": "Visa", + "cancel": "Avbryt", + "previous": "Föregående", + "next": "Nästa", + "taskDetail": "Uppgiftsdetaljer", + "close": "Stäng", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "Händelser", + "artifacts": "Artefakter", + "tablePhase": "Tabellfas", + "offset": "Förskjutning", + "limit": "Gräns", + "skill": "Färdighet", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "meddelande/skicka", "rpcMethodStream": "meddelande/ström", @@ -4364,14 +4364,14 @@ "a2aDisabledDesc": "Aktivera A2A ovan för att visa uppgiftstelemetri, agentdetaljer och valideringsverktyg.", "a2aIntro": "Agent2Agent JSON-RPC 2.0-slutpunkt — skicka uppgifter, strömma svar, avbryt pågående jobb.", "a2aStep1": "Upptäck agentkortet på {code}.", - "a2aStep2": "Send JSON-RPC to {code1} using {code2} or {code3}.", - "a2aStep3": "Track and cancel tasks with {code1} and {code2}." + "a2aStep2": "Skicka JSON-RPC till {code1} med {code2} eller {code3}.", + "a2aStep3": "Spåra och avbryt uppgifter med {code1} och {code2}." }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Åtgärder", + "addMemory": "Lägg till minne", + "allTypes": "Alla typer", "cancel": "Avbryt", "checkHealth": "Kontrollera hälsan", "checkingHealth": "Kontrollerar...", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Hur det fungerar", "howWorksContent": "1. Automatisk extraktion: i slutet av varje svar upptäcks och sparas fakta och episoder automatiskt.\n2. Hämtning: före varje svar söks de mest relevanta minnena via FTS5 (exakt), vektor (semantisk) eller hybrid RRF.\n3. Injektion: relevanta minnen injiceras i assistentens kontext för att förbättra svarskvaliteten.\n4. Hantering: använd denna sida för att visa, redigera, exportera och kompaktera gamla minnen." }, - "content": "Content", + "content": "Innehåll", "contentPlaceholder": "Värde eller JSON-innehåll att komma ihåg", - "created": "Created", - "delete": "Delete", + "created": "Skapad", + "delete": "Ta bort", "deleteConfirmDesc": "Denna åtgärd kan inte ångras. Minnet kommer att tas bort permanent.", "deleteConfirmTitle": "Ta bort minne?", - "description": "View and manage stored memory entries", + "description": "Visa och hantera lagrade minnesposter", "editMemory": "Redigera minne", "editModal": { "title": "Redigera Minne", @@ -4436,7 +4436,7 @@ "embeddingLabel": "Inbäddning", "vectorStoreLabel": "Vektorlagring", "qdrantLabel": "Qdrant", - "rerankLabel": "Rerank", + "rerankLabel": "Omrangordna", "qdrantDisabled": "Inaktiverad", "qdrantOk": "Fungerar ({latencyMs}ms)", "qdrantError": "Anslutningsfel", @@ -4444,23 +4444,23 @@ "configureCta": "Konfigurera", "vectorStoreInstallHint": "För att aktivera vektorsökning: npm install sqlite-vec (kräver nativ Node.js, inte WASM), starta sedan om." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Episodiskt", + "export": "Exportera", + "factual": "Faktabaserat", "healthUnknown": "Hälsa okänd", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Träfffrekvens", + "import": "Importera", "importError": "Misslyckades med att importera filen", "importResult": "{imported} importerade, {skipped} överhoppade", - "key": "Key", + "key": "Nyckel", "keyPlaceholder": "t.ex. användare.preferenser.tema", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Minnen", "next": "Nästa", - "noMemories": "No memories found", + "noMemories": "Inga minnen hittades", "pageInfo": "Sida {page} av {totalPages} ({total} totalt)", "pipelineError": "Rörledningsfel", - "pipelineOk": "Pipeline OK ({latencyMs}ms)", + "pipelineOk": "Pipeline OK ({latencyMs} ms)", "playground": { "infoTitle": "Minneslekplats", "infoDesc": "Simulera vad som skulle hämtas för en given sökning. Inga minnen ändras — skrivskyddad förhandsvisning.", @@ -4470,7 +4470,7 @@ "strategyExact": "Exakt (FTS5)", "strategySemantic": "Semantisk (vektor)", "strategyHybrid": "Hybrid (RRF)", - "budgetLabel": "Budget (tokens)", + "budgetLabel": "Budget (token)", "simulate": "Simulera", "resultsTitle": "{count} resultat", "resolutionTitle": "Sökhantering", @@ -4478,14 +4478,14 @@ "resolutionStore": "Vektorlagring", "resolutionStrategy": "Använd strategi", "rerankApplied": "Rerank tillämpad", - "fallback": "Fallback", + "fallback": "Reservlösning", "noResults": "Inga minnen hittades för denna sökning.", "tokensUsed": "tokens använda", "none": "ingen", "errorFetch": "Misslyckades med att hämta förhandsvisning" }, "previous": "Föregående", - "procedural": "Procedural", + "procedural": "Procedurmässigt", "qdrant": { "title": "Qdrant (Vektorlagring nivå 2)", "description": "Valfri Qdrant-integration för skalbar semantisk sökning", @@ -4534,8 +4534,8 @@ }, "save": "Spara", "saving": "Sparar...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Sök i minnen...", + "semantic": "Semantiskt", "summarize": { "title": "Komprimera gamla minnen", "noCandidates": "Inga minnen är berättigade för komprimering (kriterium: >30 dagar gamla).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "Minnen", - "playground": "Playground", + "playground": "Testmiljö", "engine": "Motor" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Minneshantering", + "tokensUsed": "Använda tokens", "tooltip": { "totalEntries": "Totalt antal minnen lagrade för denna API-nyckel", "tokensUsed": "Uppskattat totalt antal tokens som upptas av aktiva minnen", @@ -4558,15 +4558,15 @@ "procedural": "Procedurer, arbetsflöden och instruktioner som assistenten ska följa", "semantic": "Koncept, preferenser och domänkunskap" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Totalt antal poster", + "type": "Typ", "memoryEnabled": "Minne aktiverat" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Färdigheter", + "description": "Hantera och övervaka AI-färdigheter", + "skillsTab": "Färdigheter", + "executionsTab": "Körningar", "selectSkillToInspect": "Välj en färdighet till vänster för att granska.", "schemaTab": "Schema", "handlerTab": "Hanterare", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Kör test (platshållare)", "setModeAria": "Ställ in läge {mode}", "uninstallSkill": "Avinstallera färdighet", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Sandlåda", + "loading": "Läser in färdigheter...", + "noSkills": "Inga färdigheter hittades", + "noExecutions": "Inga körningar hittades", + "enabled": "Aktiverad", + "disabled": "Inaktiverad", "delete": "Ta bort", "version": "Version", - "tableDescription": "Description", - "skill": "Skill", + "tableDescription": "Beskrivning", + "skill": "Färdighet", "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "duration": "Varaktighet", + "time": "Tid", + "sandboxConfig": "Sandlådekonfiguration", + "cpuLimit": "CPU-gräns", + "cpuLimitDesc": "Maximal körningstid per färdighet", + "memoryLimit": "Minnesgräns", + "memoryLimitDesc": "Maximal minnestilldelning", + "timeout": "Tidsgräns", + "timeoutDesc": "Maximal väntetid för svar", + "networkAccess": "Nätverksåtkomst", + "networkAccessDesc": "Tillåt utgående nätverksförfrågningar", + "mode": "Läge", "q": "Q", "filterSkillsPlaceholder": "Filtrera färdigheter efter namn, beskrivning eller tagg", "allModes": "Alla lägen", @@ -4626,7 +4626,7 @@ "marketplaceError": "Sökningen misslyckades", "installingFromMarketplace": "Installerar från marknadsplatsen...", "popularSkills": "Populära färdigheter", - "skillsMarketplace": "Skills Marketplace", + "skillsMarketplace": "Marknadsplats för färdigheter", "searching": "Söker...", "pageInfo": "Sida {page} av {totalPages} ({total} totalt)", "previous": "Föregående", @@ -4657,7 +4657,7 @@ "lastCheck": "Sista kontrollen", "providerHealth": "Leverantörshälsa", "systemMetrics": "Systemmått", - "tokenHealth": "Token Health", + "tokenHealth": "Tokenstatus", "refreshAll": "Uppdatera alla", "checkNow": "Kontrollera nu", "loadingHealth": "Läser in hälsodata...", @@ -4665,13 +4665,13 @@ "retry": "Försök igen", "allOperational": "Alla system i drift", "issuesDetected": "Systemproblem upptäcktes", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute är redo", + "healthVerdictActionRequired": "Åtgärd krävs för att återställa full drift", + "healthVerdictCoolingDown": "Avsvalning efter senaste ändringar", + "healthSubtitle": "Systemhälsokontroll", + "advancedDiagnosticsTitle": "Avancerad diagnostik", + "hide": "Dölj", + "show": "Visa", "updatedAt": "Uppdaterad {time}", "latency": "Latens", "latencyP50": "p50", @@ -4698,9 +4698,9 @@ "providers": "Leverantörer", "configuredProvidersLabel": "Konfigurerad i instrumentpanelen", "configuredProvidersHint": "Leverantörer med autentiseringsuppgifter sparade i /dashboard/providers, oavsett körtidstillstånd.", - "activeProviders": "{count} active", + "activeProviders": "{count} aktiva", "activeProvidersHint": "Konfigurerade leverantörer som för närvarande är aktiverade för routingförfrågningar.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "{count} övervakade", "monitoredProvidersHint": "Leverantörer spåras för närvarande av strömbrytare hälsoövervakare.", "healthyCount": "{count} frisk", "nodeVersion": "Nod {version}", @@ -4721,11 +4721,11 @@ "resetting": "Återställer...", "resetAll": "Återställ alla", "until": "Tills {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Förbrukad", + "learnedFromHeaders": "Inhämtat från headers", + "remainingOfLimit": "{remaining}/{limit} återstår", + "throttleStatus": "Begränsning: {value}", + "lastHeaderUpdate": "Headeruppdatering: {age}", "databaseHealth": "Databashälsa", "databaseHealthDescription": "Diagnostisera och reparera inaktuella kvot-/domänrader och trasiga kombinationsreferenser.", "status": "Status", @@ -4742,7 +4742,7 @@ "quotaMonitors": "Kvotövervakare", "alerting": "Larmar", "errors": "Fel", - "degradationFull": "Full", + "degradationFull": "Fullständig", "degradationReduced": "Reducerad", "degradationMinimal": "Minimal", "degradationDefault": "Standard", @@ -4888,28 +4888,28 @@ "previous": "Föregående", "next": "Nästa", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Visa detaljer", + "eventMetadata": "Händelsemetadata", + "eventPayload": "Händelsedata", + "requestId": "Begärande-ID", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", + "offset": "Förskjutning", + "limit": "Gräns", "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "resourceType": "Resurstyp", + "totalEntries": "Totalt antal poster", + "tab": "Flik", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Stäng", + "runningRequests": "Aktiva begäranden", + "runningRequestsDesc": "Realtidsvy över pågående uppströmsbegäranden", "clearAll": "Rensa alla", "confirmClearActiveRequests": "Rensa alla aktiva förfrågningar?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "Modell", + "provider": "Leverantör", + "account": "Konto", + "elapsed": "Förfluten tid", "activeStage": "Steg", "activeStageUnknown": "Inte skickad till upstream än", "activeStageRegistered": "Registrerad", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Rate limit-plats erhållen", "activeStageSendingToProvider": "Skickar till upstream", "activeStageProviderResponseStarted": "Upstream-svar påbörjat", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Antal", + "payloads": "Nyttolaster", + "viewPayloads": "Visa", + "activeCount": "{count} aktiva", + "clientPayload": "Klientens begärandenyttolast", + "upstreamPayload": "Uppströmsleverantörens nyttolast", + "upstreamNotSentYet": "Har ännu inte skickats uppströms", + "runningRequestDetailMeta": "Konto: {account} — Förfluten tid: {elapsed}", + "export": "Exportera", + "exporting": "Exporterar...", + "exportFailed": "Exporten misslyckades", "cleanHistoryButton": "Rensa historik", "cleanHistoryTitle": "Rensa logghistorik?", "cleanHistoryMessage": "Detta rensar permanent alla anropsloggrader, äldre detaljrader och lokala artefaktfiler under DATA_DIR/call_logs. Livesidan kommer att uppdateras efter rensningen.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Rensade {deleted} loggposter, {deletedArtifacts} artefakter och {deletedDetailedLogs} äldre detaljrader.", "cleanHistoryEmpty": "Ingen historik för anropsloggar hittades.", "cleanHistoryFailed": "Misslyckades med att rensa logghistorik.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Tidsintervall", + "lastNHours": "Senaste {hours}", + "defaultRange": "standard", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Det gick inte att hämta loggar", + "copyFailed": "Det gick inte att kopiera loggposten", + "copyLogEntry": "Kopiera loggpost", "filterByLevel": "Filtrera efter loggnivå", "searchPlaceholder": "Sök i loggar…", "searchAria": "Sök i loggposter", @@ -4961,7 +4961,7 @@ }, "compressionLogTitle": "Komprimeringslogg", "compressionLogEmpty": "Inga komprimerade anrop ännu. Komprimeringsstatistik visas här när anrop behandlas med komprimering aktiverad.", - "tokens": "tokens" + "tokens": "token" }, "onboarding": { "welcome": "Välkommen", @@ -4987,9 +4987,9 @@ "multiProvider": "Flera leverantörer", "usageTracking": "Användningsspårning", "securityDesc": "Ställ in ett lösenord för att skydda din instrumentpanel, eller hoppa över nu.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Utan ett lösenord kan du inte lägga till leverantörer under konfigurationen. Du kan lägga till dem senare från kontrollpanelen efter att du har angett ett lösenord.", "providerDesc": "Anslut din första AI-leverantör. Du kan lägga till mer senare.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Du måste först ange ett lösenord för att kunna lägga till leverantörer. Gå tillbaka till säkerhetssteget och ange ett lösenord, eller lägg till leverantörer senare från kontrollpanelen.", "apiKeyRequired": "API-nyckel (krävs)", "customUrlOptional": "Anpassad webbadress (valfritt)", "testDesc": "Låt oss verifiera att din leverantörsanslutning fungerar.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Importerar…", "importFromFileImport": "Importera {count} leverantörer", "importFromFileResult": "Importerade {success} leverantörer ({failed} misslyckades)", + "importFromFileDownloadTemplate": "Ladda ned CSV-mall", + "importFromFileMoreErrors": "+{count} till", + "importFromFileSchemaHint": "CSV-kolumnerna är positionsbaserade: provider, name, apiKey, baseUrl (valfritt), priority (valfritt). Kolumnen provider måste innehålla ett befintligt ID för en hanterad leverantör eller ett redan registrerat nod-ID som är kompatibelt med OpenAI/Anthropic — den här importen skapar inga nya slutpunktsnoder.", "adaptaTutorial": { "title": "Hur du ansluter Adapta Web", "introPrefix": "Adapta autentiserar genom Clerk. Tokenen", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "{count} dolda", "warningCount": "{count} Varning", "noConnections": "Inga anslutningar", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Utgången", + "expiringSoonBadge": "Upphör snart", "freeTier": "Gratis nivå", "freeTierAvailable": "Gratis nivå tillgänglig", "hasFreeTooltip": "Gratisnivå tillgänglig", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Denna leverantör har fasats ut", "riskNotice": { "title": "Innan du fortsätter", - "detailsTitle": "Usage caveats", + "detailsTitle": "Begränsningar för användning", "tooltip": "Leverantör med användningsförbehåll — klicka för detaljer", "oauth": "Denna leverantör använder din officiella produktsession/OAuth, vilket inte är godkänt för proxy-/routeranvändning. Vi rekommenderar inte intensiv användning av autonoma agenter (OpenCloud-stil, långa flerstegsflöden, stora batcher) — uppströmsleverantören kan reagera genom att begränsa eller stänga av kontot. Används på egen risk.", "webCookie": "Denna leverantör autentiserar via dina webbsessionscookies. Uppströmstjänsten kan ogiltigförklara sessionen när som helst, vilket kräver att du loggar in igen. Rekommenderas inte för långa obevakade körningar. Används på egen risk.", @@ -5188,9 +5191,9 @@ "cancel": "Avbryt" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} anslutning(ar) har flaggats — upp till {maxFailures} senaste fel{lastFailureSuffix}. Klicka för att visa anslutningsstatus.", + "lastFailureSuffix": "(senaste felet {time})", + "ariaLabel": "Visa information om anslutningsstatus, {count} varning(ar)" }, "disabled": "Inaktiverad", "enableProvider": "Aktivera leverantör", @@ -5225,7 +5228,7 @@ "failedCreate": "Det gick inte att skapa leverantör", "errorOccurred": "Ett fel uppstod. Försök igen.", "modelStatus": "Modellstatus", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Endast konfigurerade", "allModelsOperational": "Alla modeller i drift", "modelsWithIssues": "{count} modell(er) med problem", "allModelsNormal": "Alla modeller svarar normalt.", @@ -5236,7 +5239,7 @@ "clearing": "Rensar...", "until": "Tills {time}", "providerTestFailed": "Providertestet misslyckades", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Tidsgränsen för leverantörstestet överskreds — för många anslutningar att testa samtidigt", "modeTest": "{mode} Test", "passedCount": "{count} godkänd", "failedCount": "{count} misslyckades", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "Ikon-URL", "iconUrlHint": "Valfritt. Bild-URL som visas som denna leverantörs ikon.", "iconUrlInvalid": "Ogiltig ikon-URL. Använd en http(s):// eller data:image/*;base64-URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Tidszon för återställning av dagskvot", + "dailyQuotaResetTimezoneHint": "Valfri IANA-tidszon som används när uppströmstjänsten utelämnar X-RateLimit-Reset. Lämna tomt för att behålla en kort nedkylningsperiod.", + "dailyQuotaResetHourLabel": "Timme för återställning av dagskvot", + "dailyQuotaResetHourHint": "Lokal timme 0–23 i tidszonen ovan. Tomt innebär att ingen klocka används på nodnivå.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Det gick inte att hitta leverantören", "deleteConnectionConfirm": "Vill du ta bort den här anslutningen?", "deleteConnectionConfirmNamed": "Är du säker på att du vill ta bort {name}? Denna åtgärd kan inte ångras.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Ta bort markerade ({count})", + "batchDeleteConfirm": "Ta bort {count} anslutning(ar)? Åtgärden kan inte ångras.", + "batchDeleteSuccess": "Tog bort {count} anslutning(ar)", "batchActivateSelected": "Aktivera", "batchDeactivateSelected": "Inaktivera", "batchRetestSelected": "Testa igen", @@ -5292,7 +5295,7 @@ "filterError": "Fel", "filterBanned": "Blockerad", "filterCreditsExhausted": "Krediter slut", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Sök efter konton…", "noFilteredConnections": "Inga anslutningar matchar det aktuella filtret.", "failedSetAlias": "Det gick inte att ange alias", "setAliasSuccess": "Alias {alias} angett", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "OpenAI-kompatibla detaljer", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Inbäddningar", + "audioTranscriptions": "Ljudtranskriberingar", + "audioSpeech": "Talsyntes", + "imagesGenerations": "Bildgenereringar", "chatCompletions": "Chattavslut", "importingModels": "Importerar...", "importFromModels": "Importera från /models", - "modelsImported": "{count} models imported", + "modelsImported": "{count} modeller importerade", "allModelsAlreadyImported": "Alla modeller är redan importerade", "noNewModelsToImport": "Inga nya modeller att importera — alla modeller finns redan i registret eller listan över anpassade modeller", "skippingExistingModels": "Hoppar över {count} befintliga modeller", @@ -5350,13 +5353,13 @@ "importFailed": "Importen misslyckades", "noNewModelsAdded": "Inga nya modeller tillkom.", "adding": "Lägger till...", - "close": "Close", + "close": "Stäng", "importingModelsTitle": "Importera modeller", "copyModel": "Kopiera modell", "filterModels": "Filtrera modeller…", "testAllRateLimited": "Hastighetsbegränsning nådd, avbröts i förtid", "hideFailedAuto": "Dölj misslyckade modeller automatiskt", - "selectAllModels": "Select all", + "selectAllModels": "Markera alla", "hideAllModels": "Dölj alla", "modelsActive": "aktiva", "showModel": "Visa modell", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "En nyckel per rad. Format: namn|apiKey eller bara apiKey (automatiskt namngiven av index).", "bulkValidateKeys": "Validera varje nyckel innan du sparar (långsammare)", "bulkAddAllKeys": "Lägg till alla nycklar", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# nyckel har lagts till} other {# nycklar har lagts till}}", + "bulkFailedCount": "{count, plural, one {# misslyckades} other {# misslyckades}}", "optional": "Valfritt", "anthropicCompatibleName": "Antropisk kompatibel", "openaiCompatibleName": "OpenAI-kompatibel", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Ett oväntat fel inträffade", "getApiKey": "Hämta API-nyckel", "getApiKeyDescription": "Registrera dig eller anmäl dig för en API-nyckel", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# anslutning} other {# anslutningar}}", "messagesPath": "meddelanden", "responsesPath": "svar", "chatCompletionsPath": "chatt/avslut", @@ -5419,17 +5422,17 @@ "configured": "konfigurerad", "providerProxyConfigureHint": "Konfigurera proxy för alla anslutningar från denna leverantör", "providerProxy": "Leverantörs proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Reparera .env", + "repairEnvWorking": "Reparerar...", + "repairEnvHint": "Återställ saknade OAuth-standardvärden i .env utan att skriva över befintliga värden.", + "repairEnvSuccess": "OAuth-standardvärden har återställts", + "repairEnvFailed": "Det gick inte att reparera .env", "noConnectionsYet": "Inga anslutningar än", "addFirstConnectionHint": "Lägg till din första anslutning för att komma igång", "addConnection": "Lägg till anslutning", "availableModels": "Tillgängliga modeller", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Inbyggda modeller", + "builtInModelsHint": "Registermodeller för den här leverantören. Använd pennan för att ange kompatibilitetsalternativ.", "pageAutoRefresh": "Sidan uppdateras automatiskt...", "statusDisabled": "funktionshindrade", "statusConnected": "ansluten", @@ -5454,7 +5457,7 @@ "errorTypeUpstreamError": "Uppströmsfel", "errorTypeCreditsExhausted": "Inga krediter", "errorTypeBanned": "403 Bannlyst", - "proxySourceGlobal": "Global", + "proxySourceGlobal": "Globalt", "proxySourceProvider": "Leverantör", "proxySourceKey": "Nyckel", "proxyConfiguredBySource": "Proxy ({source}): {host}", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Autentisera den här anslutningen igen", "proxyConfig": "Proxykonfiguration", "aliasExistsAlert": "Aliaset \"{alias}\" finns redan. Använd en annan modell eller redigera befintligt alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "aliasnamn", + "clickToSetAlias": "Klicka för att ange alias", + "clickToEditAlias": "Alias: {alias} (klicka för att redigera)", "openRouterAnyModelHint": "OpenRouter stöder alla modeller. Lägg till modeller och skapa alias för snabb åtkomst.", "modelIdFromOpenRouter": "Modell-ID (från OpenRouter)", "openRouterModelPlaceholder": "antropisk/claude-3-opus", "customModels": "Anpassade modeller", "customModelsHint": "Lägg till modell-ID:n som inte finns i standardlistan. Dessa kommer att vara tillgängliga för routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Normalisera ID:n för verktygsanrop till 9 tecken (t.ex. Mistral)", + "preserveDeveloperRoleLabel": "Behåll utvecklarrollen i OpenAI Responses (mappa inte till system)", + "compatAdjustmentsTitle": "Kompatibilitet", + "compatButtonLabel": "Kompatibilitet", + "compatToolIdShort": "Verktygs-ID 9", + "compatDeveloperShort": "Utvecklarroll", + "compatDoNotPreserveDeveloper": "Bevara inte utvecklarrollen", + "compatBadgeNoPreserve": "Bevara inte", + "compatProtocolLabel": "Protokoll för klientbegäran", + "compatProtocolHint": "De här alternativen gäller när OmniRoute identifierar den här typen av begäran (OpenAI Chat, Responses API eller Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Skriv om inbyggda web_fetch-verktygsanrop till OmniRoutes /v1/web/fetch.", "interceptionLoadError": "Kunde inte läsa in inställningar för interception: {error}", "interceptionSaveError": "Kunde inte spara inställningar för interception: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Visa i Claude Code (claude/…)", + "ccAliasSectionHint": "Publicera den här leverantörens modeller under spegel-ID:n av typen claude/<provider>/<model> så att Claude Codes modellidentifiering via gatewayen kan lista dem. Av som standard – om detta aktiveras fördubblas antalet katalogposter för alla klienter.", + "ccAliasProviderLevelLabel": "Leverantörens standardvärde", + "ccAliasModelOverridesLabel": "Åsidosättningar per modell", + "ccAliasModelOverrideAriaLabel": "Åsidosättning för {modelId}", + "ccAliasStateInherit": "Ärv", + "ccAliasStateOn": "På", + "ccAliasStateOff": "Av", + "ccAliasAddModelPlaceholder": "Modell-ID (t.ex. gpt-4o)", + "ccAliasAddModelButton": "Lägg till åsidosättning", + "ccAliasLoadError": "Det gick inte att läsa in inställningarna för identifieringsalias: {error}", + "ccAliasSaveError": "Det gick inte att spara inställningen för identifieringsalias: {error}", + "compatUpstreamHeadersLabel": "Extra headers till uppströmsservern", + "compatUpstreamHeadersHint": "Inställning med höga behörigheter – samma tillitsnivå som vid redigering av leverantörens API-autentiseringsuppgifter. Endast betrodda administratörer bör använda den. Slås samman efter att OmniRoute har lagt till autentisering från leverantörens API-nyckel. Om en anpassad header har samma namn som en befintlig (t.ex. Authorization) ersätter ditt värde den automatiskt genererade headern helt (inklusive Bearer-token) – uppströmsservern ser endast det du angav, inte nyckeln från inställningarna. Felaktig konfiguration kan orsaka 401-fel eller bruten autentisering mot uppströmsservern. En rad per header (t.ex. extra Authentication för vissa gateways). Håll muspekaren över eller fokusera på värdet för att förhandsgranska det. Sparas när fokus lämnar fältet, vid klick utanför eller när den här panelen stängs.", + "compatUpstreamHeaderName": "Headernamn", + "compatUpstreamHeaderValue": "Värde", + "compatUpstreamAddRow": "Lägg till rubrik", + "compatUpstreamRemoveRow": "Ta bort rad", + "compatBadgeUpstreamHeaders": "Rubriker", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Importera endast gratismodeller", @@ -5592,26 +5595,26 @@ "email": "E-post", "healthCheckMinutes": "Hälsokontroll (min)", "healthCheckHint": "Proaktivt uppdateringsintervall för token. 0 = inaktiverad.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Avmarkera alla", + "modelsActiveCount": "{active}/{total} aktiva", + "noModelsMatch": "Inga modeller matchar \"{filter}\"", + "groupLabel": "Miljö", + "groupPlaceholder": "t.ex. eKaizen, Personlig", "failedTestConnection": "Det gick inte att testa anslutningen", "failed": "Misslyckades", "leaveBlankKeepCurrentApiKey": "Lämna tomt för att behålla den aktuella API-nyckeln.", "editCompatibleTitle": "Redigera {type} Kompatibel", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "Rot-URL för ditt {type}-kompatibla API. Använd Avancerade inställningar för anpassade slutpunktssökvägar.", "apiKeyForCheck": "API-nyckel (för kontroll)", "testModelIdLabel": "Modell-ID (valfritt)", "testModelIdPlaceholder": "t.ex. my-model-id", "testModelIdHint": "Om leverantören saknar en /models-slutpunkt anger du ett modell-ID för att validera via /chat/completions istället.", "compatibleProdPlaceholder": "{type} Kompatibel (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Token uppdaterades", + "tokenRefreshFailed": "Det gick inte att uppdatera token", "cursorSessionUnchanged": "Sessionen är redan aktuell", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Tillämpa autentisering", + "exportCodexAuthFile": "Exportera autentisering", "applyClaudeAuthLocal": "Tillämpa autentisering", "exportClaudeAuthFile": "Exportera auth", "importClaudeAuth": "Importera auth", @@ -5628,7 +5631,7 @@ "claudeAuthExportFailed": "Det gick inte att exportera Claude auth-fil", "claudeImportModalTitle": "Importera Claude Auth", "claudeImportTabSingle": "Singel", - "claudeImportTabBulk": "Bulk", + "claudeImportTabBulk": "Massåtgärd", "claudeImportTabUpload": "Ladda upp fil", "claudeImportTabPaste": "Klistra in JSON", "claudeImportFileLabel": "Välj .credentials.json", @@ -5660,7 +5663,7 @@ "geminiAuthExportFailed": "Det gick inte att exportera Gemini auth-fil", "geminiImportModalTitle": "Importera Gemini Auth", "geminiImportTabSingle": "Singel", - "geminiImportTabBulk": "Bulk", + "geminiImportTabBulk": "Massåtgärd", "geminiImportTabUpload": "Ladda upp fil", "geminiImportTabPaste": "Klistra in JSON", "geminiImportFileLabel": "Välj oauth_creds.json", @@ -5706,7 +5709,7 @@ "importCodexAuth": "Importera auth", "codexImportModalTitle": "Importera Codex Auth", "codexImportTabSingle": "Singel", - "codexImportTabBulk": "Bulk", + "codexImportTabBulk": "Massåtgärd", "codexImportTabUpload": "Ladda upp fil", "codexImportTabPaste": "Klistra in JSON", "codexImportFileLabel": "Välj auth.json", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} misslyckades", "codexImportBulkZipExtracting": "Extraherar ZIP...", "codexImportBulkZipError": "Det gick inte att extrahera ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Avancerade inställningar", + "chatPathLabel": "Sökväg till chattslutpunkt", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Anpassad chattsökväg för leverantörer med icke-standardiserade API:er (t.ex. /v4/chat/completions)", + "modelsPathLabel": "Sökväg till modellslutpunkt", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Anpassad modellsökväg för validering (t.ex. /v4/models)", "clientIdentityLabel": "Klientidentitet", "clientIdentityHint": "Valfritt. Lägger till klientfingeravtrycksrubriker (t.ex. User-Agent) som matchar ett känt CLI för kompatibla gateways som förväntar sig det.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Inaktiverad (manuellt)", + "statusBanned": "Avstängd/sandboxöverträdelse", + "statusCreditsExhausted": "Otillräckligt saldo/kvoten är förbrukad", + "showEmails": "Visa alla e-postadresser", + "hideEmails": "Dölj alla e-postadresser", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Lägg till en annan API-nyckel eller klistra in flera nycklar", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "aggregatorsGateways": "Aggregatorer och gateways", + "enterpriseCloud": "Företag och moln", + "apiFormatLabel": "Etikett för API-format", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API-region Kina", + "apiRegionHint": "Tips för API-region", + "apiRegionInternational": "API-region internationell", + "apiRegionLabel": "Etikett för API-region", + "apikey": "API-nyckel", + "audio": "Ljud", + "audioProvidersHeading": "Rubrik för ljudleverantörer", "cloudAgentProviders": "Molnagentleverantörer", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Kort etikett för ljud", + "azureOpenAiBaseUrlHint": "Tips för bas-URL för Azure Open Ai", + "bailianBaseUrlHint": "Tips för bas-URL för Bailian", + "claudeWebCookieHint": "Öppna claude.ai → DevTools → Application → Cookies → claude.ai och kopiera värdet för 'sessionKey'. cf_clearance, __cf_bm och _cfuvid krävs också för Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Tips för Blackbox Web-cookie", + "blackboxWebCookiePlaceholder": "Platshållare för Blackbox Web-cookie", "t3ChatWebCookieHint": "Öppna t3.chat → DevTools → Application → Local Storage → https://t3.chat, kopiera 'convex-session-id'. Öppna sedan DevTools → Nätverk, kopiera hela Cookie-huvudet från valfri chattförfrågan. Klistra in båda värdena i fälten nedan.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Tips för Grok Web-cookie", "blockClaudeExtraUsageDescription": "När den är aktiverad markerar OmniRoute denna Claude-anslutning som otillgänglig så snart användnings-API:et rapporterar köad extra användning, så att fallback växlar till en annan anslutning istället för att fortsätta med betalning per användning av extra fakturering.", "blockClaudeExtraUsageLabel": "Blockera extra användning av Claude", "disableCoolingDescription": "Hoppa över den tillfälliga cooldown-perioden så att denna anslutning förblir tillgänglig även efter återställningsbara fel (slutgiltiga tillstånd som banned/expired gäller fortfarande).", "disableCoolingLabel": "Inaktivera cooldown för denna anslutning", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 nyckel tillagd} other {# nycklar tillagda}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 dubblett överhoppad} other {# dubbletter överhoppade}}", + "bulkPasteHint": "Klistra in en API-nyckel per rad. Tomma rader ignoreras och dubblettnycklar hoppas över.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Lägger till betahuvudet redact-thinking för CC Compatible-uppströmmar som kräver dolda tankeströmmar från Claude.", + "ccCompatibleRedactThinkingLabel": "Aktivera betafunktionen redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Lägger till `display: \"summarized\"` i tankebegäranden för CC Compatible så att Claude-modeller som stöds strömmar synliga tankedeltan.", + "ccCompatibleSummarizeThinkingLabel": "Aktivera sammanfattad visning av tankegång", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,20 +5811,20 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Använd tjänstenivån priority för Codex-begäranden när den är tillgänglig.", + "codexFastServiceTierLabel": "Snabb tjänstenivå för Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Platshållare för rubriknamn för kompatibel uppström", + "compatUpstreamHeaderValuePlaceholder": "Platshållare för rubrikvärde för kompatibel uppström", + "compatible": "Kompatibel", + "configuredCount": "Antal konfigurerade", + "consoleApiKeyOracleHint": "Tips för Console API-nyckel för Oracle", + "consoleApiKeyOracleLabel": "Etikett för Console API-nyckel för Oracle", + "consoleApiKeyOraclePlaceholder": "Platshållare för Console API-nyckel för Oracle", "newApiUserIdLabel": "New-API-användar-ID", "newApiUserIdPlaceholder": "t.ex. 12345", "newApiUserIdHint": "Värde för AgentRouters New-Api-User-header, används tillsammans med konsolens API-nyckel för att hämta kvotsaldo.", - "newApiAggregatorToggleLabel": "Aggregator Gateway", + "newApiAggregatorToggleLabel": "Aggregeringsgateway", "newApiAggregatorToggleHint": "Aktivera balansdetektering för New-API / One-API / Sub2API aggregatornoder. Instrumentpanelen kommer att visa balansmärket och kvotförhandsrouting kommer att hoppa över uttömda konton.", "newApiAggregatorConsoleApiKeyHint": "Systemåtkomsttoken för aggregatorns /api/user/self slutpunkt. Inte routing API-nyckeln.", "newApiAggregatorUserIdHint": "New-Api-User header-värde som används för att hämta aggregator-användarens kvotbalans.", @@ -5830,57 +5833,57 @@ "featureFlagNewApiAggregatorBalanceDescription": "Aktivera balansdetektering för New-API / One-API / Sub2API aggregator-kompatibla noder", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Tips för anpassad User-Agent", + "customUserAgentLabel": "Etikett för anpassad User-Agent", + "databricksBaseUrlHint": "Tips för bas-URL för Databricks", + "defaultThinkingStrengthHint": "Används när en begäran inte anger någon resonemangsnivå.", + "defaultThinkingStrengthLabel": "Standardstyrka för tankegång", + "deleteAllExtraApiKeys": "Ta bort alla", + "excludedModelsHint": "Tips för exkluderade modeller", + "excludedModelsLabel": "Etikett för exkluderade modeller", + "excludedModelsPlaceholder": "Platshållare för exkluderade modeller", + "expirationBannerExpired": "Utgångsdatumet har passerat", + "expirationBannerExpiredDesc": "Beskrivning av passerat utgångsdatum", + "expirationBannerExpiringSoon": "Utgångsdatumet närmar sig", + "expirationBannerExpiringSoonDesc": "Beskrivning av nära förestående utgångsdatum", + "extraApiKeyMasked": "Nyckel {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Tips för extra API-nycklar", + "extraApiKeysLabel": "Etikett för extra API-nycklar", + "apiKeyHealthLabel": "API-nyckelstatus", + "apiKeyStatusActive": "Aktiv", + "apiKeyStatusWarning": "Varning ({count} fel)", + "apiKeyStatusInvalid": "Ogiltig", + "primaryKey": "Primär nyckel", + "apiKeyInvalidAlert": "{count} API-nyckel/nycklar har markerats som ogiltiga på grund av autentiseringsfel i anslutningarna: {connections}. De kommer att hoppas över vid rotation. Klicka för att granska.", + "apiKeyInvalidAlertTitle": "Varning om API-nyckelstatus", + "apiKeyWarningAlert": "{count} API-nyckel/nycklar har varningsstatus på grund av en förhöjd felfrekvens i anslutningarna: {connections}. Granska dem för att förhindra rotationsproblem.", + "apiKeyWarningAlertTitle": "API-nyckelvarning", + "googlePseInfo": "Information om Google PSE", "antigravityProjectIdHint": "Valfri åsidosättning för begäranden om Antigravity Cloud Code. Lämna tomt om du vill använda projektet som upptäcktes under Google OAuth.", "antigravityClientProfileLabel": "Klientprofil", "antigravityClientProfileHint": "Välj vilken Antigravity-klientidentitet OmniRoute presenterar för API:et.", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Codex Fast-nivån är aktiv", - "tierFast": "Fast", - "antigravityProjectIdLabel": "Google Cloud Project ID", + "tierFast": "Snabb", + "antigravityProjectIdLabel": "Projekt-ID för Google Cloud", "antigravityProjectIdPlaceholder": "mitt-gcp-projekt-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Platshållare för Grok-webbcookie", + "herokuBaseUrlHint": "Tips för Heroku-bas-URL", + "hideEmail": "Dölj e-postadress", + "imageProviders": "Bildleverantörer", "videoProviders": "Videogenerering", "embeddingRerankProviders": "Inbäddningar och omplacering", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Bilder", + "llmProviders": "LLM-leverantörer", + "localProviderApiKeyOptionalHint": "Tips för valfri API-nyckel till lokal leverantör", + "localProviderBaseUrlHint": "Tips för bas-URL till lokal leverantör", + "localProviders": "Lokala leverantörer", + "maxConcurrentWholeNumberError": "Maximalt antal samtidiga måste vara ett heltal", "m365TierLabel": "Copilot-nivå", "m365TierHint": "Välj vilken Microsoft 365 Copilot-yta denna anslutning använder. Individual är standard för konsument-BizChat; Education och Enterprise (arbete) ansluter till sina klientorganisationsytor.", "m365TierIndividualOption": "Individual (standard)", - "m365TierEduOption": "Education", + "m365TierEduOption": "Utbildning", "m365TierEnterpriseOption": "Enterprise / Arbete", "tierOverrideLabel": "Nivååsidosättning", "tierOverrideAuto": "Auto (routing avgör)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Billig", "tierOverridePremium": "Premium", "tierOverrideHelpText": "Fäst denna leverantör till en routingnivå istället för att låta OmniRoute härleda den från modellprissättningen.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Tips för Muse Spark-webbcookie", + "museSparkWebCookiePlaceholder": "Platshållare för Muse Spark-webbcookie", + "oauth": "OAuth", + "openCliTools": "Öppna CLI-verktyg", + "openSettings": "Öppna inställningar", + "openaiResponsesStoreDescription": "Tillåt kompatibla förfrågningar till Responses API att bevara lagrat svarstillstånd.", + "openaiResponsesStoreLabel": "OpenAI Responses-lagring", + "perplexitySearchSharedKeyInfo": "Information om delad nyckel för Perplexity Search", + "perplexityWebCookieHint": "Tips för Perplexity-webbcookie", + "perplexityWebCookiePlaceholder": "Platshållare för Perplexity-webbcookie", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Åsidosättningar av hastighetsbegränsning", "rateLimitOverridesMaxConcurrentHint": "Åsidosättning av maximalt antal samtidiga förfrågningar för denna anslutning. Åsidosätter gränsen på kontonivå.", "rateLimitOverridesMaxConcurrentLabel": "Max samtidiga (hastighetsbegränsning)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Den maximala tid (ms) som en förfrågan får vänta på en plats inom hastighetsbegränsningen innan den misslyckas. Åsidosätter den globala inställningen för Resilience endast för den här anslutningen.", + "rateLimitOverridesMaxWaitMsLabel": "Maximal köväntetid (ms)", "rateLimitOverridesMinTimeHint": "Minsta tid (ms) mellan förfrågningar. Åsidosätter standardfördröjningen för hastighetsbegränsaren.", "rateLimitOverridesMinTimeLabel": "Minsta intervall (ms)", "rateLimitOverridesRpdHint": "Maximalt antal förfrågningar per dag för denna anslutning. Åsidosätter leverantörens standard.", @@ -5915,55 +5918,55 @@ "rateLimitOverridesTpdHint": "Maximalt antal tokens per dag för denna anslutning. Åsidosätter leverantörens standardvärde.", "rateLimitOverridesTpdLabel": "TPD (Tokens/dag)", "rateLimitOverridesTpmHint": "Maximalt antal tokens per minut för denna anslutning. Åsidosätter leverantörens standardvärde.", - "rateLimitOverridesTpmLabel": "TPM (Tokens/min)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "rateLimitOverridesTpmLabel": "TPM (token/min)", + "refreshOauthTokenTitle": "Uppdatera OAuth-token", + "regionHint": "Regiontips", + "regionLabel": "Regionsetikett", + "removeThisKey": "Ta bort den här nyckeln", + "routingTagsHint": "Tips för routningstaggar", + "routingTagsLabel": "Etikett för routningstaggar", + "routingTagsPlaceholder": "Platshållare för routningstaggar", + "search": "Sök", + "searchEngineIdHint": "Tips för sökmotor-ID", + "searchEngineIdLabel": "Etikett för sökmotor-ID", + "searchEngineIdRequired": "Sökmotor-ID krävs", + "searchProvider": "Sökleverantör", + "searchProviderDesc": "Beskrivning av sökleverantör", "searchProviders": "Sök efter leverantörer...", "searchByModel": "Sök efter modell…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Sökleverantörer", + "searxngBaseUrlHint": "Tips för Searxng-bas-URL", + "searxngInfo": "Information om Searxng", + "sessionCookieLabel": "Etikett för sessionscookie", + "showEmail": "Visa e-postadress", + "snowflakeBaseUrlHint": "Tips för Snowflake-bas-URL", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Tips för taggrupp", + "tagGroupLabel": "Etikett för taggrupp", + "tagGroupPlaceholder": "Platshållare för taggrupp", + "testModel": "Testa modell", + "testingModel": "Testar modell", "modelTestQuotaTooltip": "Kvoten är slut — återställs imorgon eller behöver en påfyllning", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Märke för utgången token", + "tokenExpiredTitle": "Token har gått ut", + "tokenExpiresSoonTitle": "Token går snart ut", + "tokenShort": "Kort token", + "totalKeysRotating": "{count, plural, one {1 nyckel roterar} other {# nycklar roterar}}", + "unhideModel": "Visa modell igen", + "upstreamProxyProviders": "Leverantörer av uppströmsproxy", "validationModelIdHint": "Modell som används för att verifiera API-nyckeln. Lämna tomt för att använda leverantörens första tillgängliga modell.", "validationModelIdLabel": "Valideringsmodell", "validationModelIdPlaceholder": "t.ex. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Klistra in JSON för ditt tjänstekonto ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) eller en OAuth access_token", + "webCookieProviders": "Leverantörer av webbcookies", + "weeklyShort": "Kort veckovis", + "xiaomiMimoBaseUrlHint": "Tips för Xiaomi Mimo-bas-URL", "globalCodexServiceMode": "Globalt Codex-tjänsteläge", "connect": "Anslut", "manualApiKey": "Manuell API-nyckel", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Hitta autentiseringsuppgifter för AI-leverantörer (OpenAI, Anthropic, Google, Mistral, xAI) som lagrats av Zed IDE i operativsystemets nyckelring och importera dem som anslutningar. Zed IDE måste vara installerat på den här datorn.", "zedImportButton": "Importera från Zed", "zedImportFailed": "Zed-import misslyckades", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Tips för Zed-import", + "zedImportNetworkError": "Nätverksfel vid Zed-import", + "zedImportNone": "Ingen Zed-import", "zedImportSuccess": "Importerade {credentials} referenser från Zed för {providers} leverantör(er)", "zedImporting": "Importerar…", "zedNoCredentials": "Inga Zed-autentiseringsuppgifter hittades i nyckelringen", @@ -6016,8 +6019,8 @@ "providerDetailFastTierTooltip": "Tillämpa Codex Fast tier på alla Codex-anslutningar som standard", "providerDetailFastDefaultLabel": "Snabb standard", "providerDetailBrowserManualConnect": "Webbläsare/manuell anslutning", - "providerDetailAuthUrl": "Auth URL", - "providerDetailCallbackUrl": "Callback URL", + "providerDetailAuthUrl": "Autentiserings-URL", + "providerDetailCallbackUrl": "Callback-URL", "providerDetailValidClaudeCredentialsFile": "Giltig Claude-referensfil", "providerDetailPathAutoDetectedAllOs": "Sökväg upptäcks automatiskt per OS (Linux/Mac/Windows).", "providerDetailMyClaudeAccountPlaceholder": "Mitt Claude-konto", @@ -6052,7 +6055,7 @@ "imageProvidersDesc": "Leverantörer av bildgenerering och vision — skapa bilder från text eller analysera befintliga.", "videoProvidersDesc": "Leverantörer av videogenerering. Skapa korta videoklipp från textprompter eller bilder.", "onboardingWizard": "Introduktionsguide för leverantörer", - "onboardingWizardShort": "Onboarding Wizard", + "onboardingWizardShort": "Introduktionsguide", "onboardingWizardDescription": "Anslut API-nyckel, anpassade kompatibla och OAuth-leverantörer med validering, persistens och ett omedelbart anslutningstest.", "onboardingStepType": "Typ", "onboardingStepProvider": "Leverantör", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Rabatterad API-proxy för 40+ modeller inklusive GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Hämta din API-nyckel på https://freeaiapikey.com/dashboard. Bas-URL: https://freeaiapikey.com/v1.", "freemodel-dev": "Få $300 i gratis API-krediter på https://freemodel.dev — ingen betalningsinformation krävs. OpenAI-kompatibel slutpunkt. GPT-5.4- och GPT-5.5-modeller tillgängliga.", "friendliai": "Gratisnivå för serverlös inferens — inget kreditkort krävs", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Gratisnivå via Google AI Studio; kvoter per modell publiceras inte längre (kontrollera kvotsidan i AI Studio) — inget kreditkort krävs.", "gigachat": "Anslut GigaChat (Sber) med en API-nyckel.", "gitlab": "Personlig åtkomsttoken för GitLab för det offentliga Code Suggestions-API:et. Konfigurera en egenvärd bas-URL när du inte använder gitlab.com.", "gitlawb-gmi": "Hämta din API-nyckel från instrumentpanelen för Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Anslut GLM Coding (Kina) med en API-nyckel.", "glmt": "Förinställd GLM-profil med högre tokenbudget, tänkande aktiverat och längre tidsgräns.", "getgoapi": "Anslut GoAPI med en API-nyckel.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Gratisabonnemang: gränser per modell (200K token/dag per chattmodell; se console.groq.com/docs/rate-limits för RPM/RPD) — ingen betalningsmetod registrerad.", "haiper": "Hämta API-nyckel på haiper.ai/haiper-api", "heroku": "Anslut Heroku AI med en API-nyckel.", "hcnsec": "Hämta API-nyckel på api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Skapa en API-nyckel på https://app.requesty.ai, klistra sedan in den här som en Bearer-token. OpenAI-kompatibel slutpunkt på https://router.requesty.ai/v1, med en live /v1/models-katalog.", "runwayml": "Runway-videogenerering är uppgiftsbaserad. OmniRoute skickar in text-till-video- eller bild-till-video-jobb, pollar /v1/tasks/[id] och normaliserar de färdiga videoutdata tillbaka till det OpenAI-liknande /v1/videos/generations-svaret.", "sambanova": "$5 i gratis kredit vid registrering (30 dagars giltighet), inget kreditkort krävs", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Skapa en API-nyckel på https://seekai.cc och klistra sedan in den här som en Bearer-token. OpenAI-kompatibel bas-URL: https://seekai.cc/v1.", "sap": "Modellidentifiering använder /v2/lm/scenarios/foundation-models/models på AI_API_URL. Chatförfrågningar använder deploymentUrl/chat/completions och kräver AI-Resource-Group.", "sarvam": "Sarvam AI är OpenAI-kompatibel på /v1. OmniRoute undersöker /v1/models och dirigerar chatttrafik till /v1/chat/completions. Modellerna är anpassade för indiska språk.", "scaleway": "1M gratis tokens för nya konton — EU/GDPR-kompatibel (Paris), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Anslut Claude Code med det befintliga OAuth-flödet.", "cline": "Anslut Cline med det befintliga OAuth-flödet.", "cursor": "Anslut Cursor IDE med det befintliga OAuth-flödet.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Anslut Cursor med en API-nyckel för användare (crsr_...) från cursor.com/dashboard/api; ingen IDE-session behövs.", "github": "Anslut GitHub Copilot med det befintliga OAuth-flödet.", "gitlab-duo": "OAuth-applikation med ai_features + read_user-omfång. Konfigurera GITLAB_DUO_OAUTH_CLIENT_ID och valfritt GITLAB_DUO_OAUTH_CLIENT_SECRET på denna OmniRoute-instans.", "kilocode": "Anslut Kilo Code med det befintliga OAuth-flödet.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Kopiera den nödvändiga referensen från leverantörens egen domän. För cookies, kopiera endast värdet för Cookie-huvudet och utelämna Cookie:.", "webSessionGuideStep3Manual": "Manuell väg: öppna webbläsarens utvecklarverktyg (F12 → Nätverk), uppdatera sidan, öppna en autentiserad begäran och kopiera värdet för Cookie-huvudet från Begärningshuvuden — utelämna prefixet Cookie:.", "webSessionGuideStep4": "Klistra in den här och kontrollera anslutningen. Om det slutar fungera, logga in igen och ersätt det med ett nytt värde.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Importera .har-fil", + "harImportButtonBusy": "Importerar…", + "harImportButtonHint": "Exportera från fliken Network i DevTools efter att du har skickat minst ett chattmeddelande.", + "harImportStatusValid": "Importerad — giltig i cirka {minutes} min.", + "harImportStatusExpiringSoon": "Importerad — endast giltig i cirka {minutes} min till.", + "harImportStatusExpired": "Importerad, men denna token upphörde redan att gälla (för {minutes} min sedan) — exportera en ny HAR-fil.", + "harImportStatusUnknownExpiry": "Importerad. Det gick inte att läsa dess utgångstid.", + "harImportErrorNotJson": "Filen är inte giltig JSON — är det verkligen en .har-export?", + "harImportErrorNoEntries": "Denna HAR-fil innehåller inga registrerade nätverksposter.", + "harImportErrorNoChathubUrl": "Ingen Copilot-chattanslutning hittades i denna HAR-fil. Skicka minst ett chattmeddelande i m365.cloud.microsoft innan du exporterar.", + "harImportErrorUnparsableUrl": "Chattanslutningen hittades, men dess URL kunde inte läsas.", + "harImportErrorMissingFields": "Chattanslutningen hittades, men dess token saknades.", + "harImportErrorReadFailed": "Det gick inte att läsa filen.", + "harImportErrorUnknown": "Det gick inte att extrahera autentiseringsuppgifter från HAR-filen.", "webSessionSecurityHint": "Behandla detta som ett lösenord: det kan komma åt ditt inloggade webbkonto tills det löper ut eller återkallas.", "webNoAuthGuideTitle": "Ingen legitimation krävs", "webNoAuthGuideBody": "{provider} behöver ingen API-nyckel eller cookie. Spara anslutningen för att använda dess kostnadsfria webbslutpunkt.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Kommandokod autentisering har gått ut", "commandCodeConnected": "Kommandokod ansluten", "commandCodeConnectionAdded": "Kommandokodanslutning tillagd", + "clearConnectionCooldown": "Rensa väntetid", + "clearConnectionCooldownInProgress": "Rensar…", + "clearConnectionCooldownTitle": "Rensa väntetiden nu — använd när kvoten redan har återställts hos den överordnade tjänsten", "commandCodeLinkExpired": "Kommandokodens länk har gått ut", "commandCodeOpeningStudio": "Öppnar Command Code Studio…", "commandCodePopupBlocked": "Popup blockerad. Vänligen tillåt popup-fönster och försök igen med Command Code Connect.", "commandCodeStartFailed": "Misslyckades med att starta Command Code auth", "connectionDeleted": "Anslutning raderad", "connectionFallback": "anslutning", + "connectionCooldownCleared": "Väntetiden har rensats — anslutningen deltar åter i routningen", "coolingConnectionsDescription": "Dessa anslutningar svalnar efter senaste begäran. OmniRoute hoppar över dem tills timern går ut — ingen manuell inaktivering krävs.", "coolingConnectionsTitle": "För närvarande kylning ({count})", + "failedClearConnectionCooldown": "Det gick inte att rensa väntetiden", "failedDeleteAlias": "Misslyckades med att ta bort aliaset", "failedDeleteConnection": "Misslyckades med att ta bort anslutning", "failedDistributeProxies": "Misslyckades med att distribuera proxyer.", @@ -6470,19 +6478,14 @@ "savedModelEndpointSettings": "Inställningar för sparad modellslutpunkt", "searchByModelAria": "Sök efter modell", "selectSupportedEndpoint": "Välj minst en stödd slutpunkt", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Testmiljö / CLI" }, "settings": { "title": "Inställningar", "general": "Allmänt", "security": "Säkerhet", "appearance": "Utseende", - "routing": "Routing", + "routing": "Routning", "cache": "Cache", "resilience": "Motståndskraft", "description": "Beskrivning", @@ -6554,22 +6557,22 @@ "systemPrompt": "Systemprompt", "thinkingBudget": "Tänkande budget", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP-proxy", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Proxysektioner", + "requestBodyLimitTitle": "Gräns för begärandetext", + "requestBodyLimitDescription": "Den maximala storleken på API-nyttolasten som accepteras innan en begärandetext tolkas. Dedikerade uppladdningsrutter behåller minst sin inbyggda gräns på 100 MB.", + "requestBodyLimitInputLabel": "Gräns för begärandetext i MB", + "requestBodyLimitEmptyError": "Ange en gräns i MB", + "requestBodyLimitWholeNumberError": "Använd ett heltal", + "requestBodyLimitMinimumError": "Minst {min} MB", + "requestBodyLimitMaximumError": "Högst {max} MB", + "requestBodyLimitLoadFailed": "Det gick inte att läsa in inställningarna för begärandegränsen", + "requestBodyLimitSaveSuccess": "Gränsen för begärandetexten har sparats", + "requestBodyLimitSaveFailed": "Det gick inte att spara gränsen för begärandetexten", + "requestBodyLimitSaving": "Sparar...", + "requestBodyLimitSave": "Spara", + "requestBodyLimitCurrent": "Aktuellt: {value}", "cacheConfigLoadFailed": "Misslyckades med att ladda cache-inställningar", "cacheConfigSaveSuccess": "Cache-inställningar sparade", "cacheConfigSaveFailed": "Misslyckades med att spara cache-inställningar", @@ -6593,59 +6596,59 @@ "enablePassword": "Aktivera lösenord", "darkMode": "Mörkt läge", "lightMode": "Ljusläge", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Minne", + "memoryDesc": "Beständigt konversationsminne mellan sessioner", + "memoryEnabled": "Aktivera minne", + "memoryEnabledDesc": "När detta är aktiverat infogar OmniRoute relevant tidigare kontext.", "memoryTokenCostWarning": "Obs: med minne aktiverat injicerar OmniRoute upp till {tokens} tokens av hämtad kontext i varje chattbegäran — detta ökar tokenanvändningen och kostnaden. För att hoppa över injicering för en specifik begäran, skicka headern \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", + "maxTokens": "Maximalt antal tokens", + "retentionDays": "Lagringstid", + "recent": "Senaste", + "recentDesc": "Kronologiskt fönster", + "semantic": "Semantisk", + "semanticDesc": "Vektorsökning", "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "hybridDesc": "Senaste + semantisk", + "skillsTitle": "Färdigheter", + "skillsDesc": "Verktyg för modeller", + "skillsEnabled": "Aktivera färdigheter", + "skillsEnabledDesc": "Gör det möjligt för agenter att utlösa funktioner.", + "skillsComingSoon": "Marknadsplats för färdigheter kommer snart.", + "memorySkillsTitle": "Minne och färdigheter", + "memorySkillsDesc": "Beständig kontext och funktionalitet", + "modelsDevTitle": "Modelldatabas", + "modelsDevDesc": "Synkronisera automatiskt priser, funktionalitet och specifikationer från models.dev", + "modelsDevEnabled": "Aktivera synkronisering med models.dev", + "modelsDevEnabledDesc": "Hämta modellpriser, funktionalitet och specifikationer från open source-databasen models.dev", + "modelsDevInterval": "Synkroniseringsintervall", + "syncNow": "Synkronisera nu", + "syncing": "Synkroniserar...", + "lastSync": "Senaste synkronisering", + "never": "Aldrig", "justNow": "just nu", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Synkroniseringsstatistik", + "modelsDevStatsDesc": "Aktuell datatäckning i models.dev", "providers": "Leverantörer", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Modeller med prissättning", + "capabilities": "Funktioner", + "lastSyncCount": "Antal vid senaste synkronisering", + "lastSyncFull": "Senaste fullständiga synkronisering", + "modelsDevInfo": "Så fungerar det", + "modelsDevInfoDesc": "models.dev är en databas med öppen källkod för specifikationer av AI-modeller som underhålls av SST/OpenCode-teamet. Den innehåller prissättning, funktioner, kontextgränser och modaliteter för fler än 4 000 modeller från fler än 100 leverantörer.", + "modelsDevInfoResolution": "Prioritetsordning för prissättning (högsta prioritet först):", + "modelsDevInfoOrder": "Användaråsidosättning → models.dev → LiteLLM → Hårdkodad standard", "systemTheme": "Systemtema", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Aktivera felsökningsläge", "logToolSourcesToggle": "Logga verktygskällor", "logToolSourcesDescription": "Skriv en diagnostisk loggrad per begäran som sammanfattar antal verktyg och uppdelning av MCP-/värdbaserade/klientkällor.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Fäst information på startsidan", "homePinnedSectionsDesc": "Välj vilka avsnitt som ska fästas längst upp på startsidan.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Leverantörernas kvotgränser", + "homeProviderQuotaLimitsDesc": "Fäst statuspanelen för leverantörskvoter (med knappen Uppdatera alla) högst upp på startsidan.", + "homeQuickStart": "Snabbstart", + "homeQuickStartDesc": "Visa snabbstartspanelen på startsidan.", + "homeProviderTopology": "Leverantörstopologi", + "homeProviderTopologyDesc": "Visa leverantörstopologin på startsidan.", "accountEmailVisibility": "Synlighet för konto-e-post", "accountEmailVisibilityDesc": "Visa fullständiga e-postadresser för konton i leverantörer, kombinationer, loggar, kvoter och playground-skärmar. Inaktivera detta för att maskera dem som standard.", "comboConfigMode": "Konfigurationsläge för kombinationer", @@ -6661,53 +6664,53 @@ "providerQuotaAutoRefreshInterval": "Uppdateringsintervall", "providerQuotaAutoRefreshIntervalDesc": "Hur ofta kvotvyn ska uppdateras, i sekunder.", "seconds": "sekunder", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Visa objekt i sidofältet", "enableCache": "Aktivera cache", - "cacheTTL": "Cache TTL", + "cacheTTL": "TTL för cache", "maxCacheSize": "Max cachestorlek", "clearCache": "Rensa cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Cachen har rensats", + "clearCacheFailed": "Det gick inte att rensa cachen", "cacheHits": "Cacheträffar", "cacheMisses": "Cache missar", "hitRate": "Träfffrekvens", "cacheEntries": "Cacheposter", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Cacheinställningar", + "semanticCache": "Semantisk cache", + "maxEntries": "Maximalt antal poster", + "ttlMinutes": "TTL (minuter)", "promptCache": "Fråga Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Strategi", + "preserveClientCache": "Bevara klientens cache", + "enabled": "Aktiverad", "loading": "Loading...", "saving": "Sparar...", - "save": "Save", + "save": "Spara", "circuitBreaker": "Strömbrytare", "retryPolicy": "Försök igen", "maxRetries": "Max försöker igen", "retryDelay": "Försök igen Fördröjning", - "timeoutMs": "Timeout (ms)", + "timeoutMs": "Tidsgräns (ms)", "enableSystemPrompt": "Aktivera System Prompt", "systemPromptText": "Systemprompttext", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Inaktivera spärrade konton automatiskt", + "autoDisableDescription": "Markera leverantörsanslutningar permanent som inaktiverade om de returnerar specifika slutgiltiga spärrsignaler (t.ex. HTTP 403 ”verify your account”). Detta tar bort dem från kombinationsrotationen.", + "autoDisableThreshold": "Spärrtröskel", + "autoDisableThresholdDesc": "Antal spärrsignaler i följd som krävs före permanent inaktivering.", + "autoDisableBannedScope": "Tillämpa automatisk inaktivering på", + "autoDisableBannedScopeDesc": "Inloggningskonton (betalda abonnemang och kostnadsfria konton) kan låsas av den överordnade tjänsten om OmniRoute fortsätter att försöka efter en spärr. Förbetalda API-nycklar medför inte den risken – låt dem vara kvar i poolen så att fyll-först-strategin kan använda nästa nyckel.", + "autoDisableBannedScopeAll": "Alla anslutningar", + "autoDisableBannedScopeAllDesc": "Inaktivera alla anslutningar som returnerar en permanent spärrsignal, inklusive förbetalda API-nycklar.", + "autoDisableBannedScopeSubscription": "Endast inloggnings-/abonnemangskonton", + "autoDisableBannedScopeSubscriptionDesc": "Inaktivera OAuth-, cookie-, sessions- och webbinloggningsplatser (betalda eller kostnadsfria). Förbetalda API-nycklar förblir aktiva så att routingen kan växla över vid fel.", "customBannedSignals": "Spärrade nyckelord", "customBannedSignalsDesc": "Ytterligare nyckelord som utlöser upptäckt av permanent kontoavstängning. Inbyggda nyckelord gäller alltid.", "customBannedSignalsPlaceholder": "t.ex. api key revoked", "noCustomBannedSignals": "Inga anpassade nyckelord. Endast inbyggda nyckelord är aktiva.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Resiliensstruktur", "resilienceStructureDesc": "Den här sidan konfigurerar bara beteende. Live breaker-tillstånd visas på hälsosidan. Kombinationsspecifikt försök igen och round-robin slotkontroll förblir på kombinationsinställningar.", "enableThinking": "Aktivera tänkande", - "maxThinkingTokens": "Max Thinking Tokens", + "maxThinkingTokens": "Max antal resonemangstoken", "enableProxy": "Aktivera proxy", "perKeyProxyEnabled": "Aktivera proxytilldelning per nyckel", "perKeyProxyEnabledDesc": "När detta är aktiverat kan varje leverantörsanslutning använda sin egen proxytilldelning", @@ -6732,7 +6735,7 @@ "enableRequestLogs": "Aktivera förfrågningsloggar", "logRetention": "Logglagring", "ipWhitelist": "IP vitlista", - "ipBlacklist": "IP Blacklist", + "ipBlacklist": "IP-svartlista", "addIP": "Lägg till IP", "savedSuccessfully": "Inställningarna har sparats", "ai": "AI", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Visa trattkontroller för svansskala på sidan Endpoint.", "showNgrokTunnel": "ngrok tunnel", "showNgrokTunnelDesc": "Visa ngrok-tunnelkontroller på Endpoint-sidan.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Dölj objekt i sidofältet", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", + "presetAll": "Alla", + "presetAllDesc": "Visa allt", + "presetEssentials": "Grundläggande", + "presetEssentialsDesc": "Nybörjarflöde – avancerade verktyg förblir sökbara", "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetMinimalDesc": "Endast grundläggande sidor", + "presetDeveloper": "Utvecklare", + "presetDeveloperDesc": "Utvecklar- och proxyverktyg", + "presetAdmin": "Administratör", + "presetAdminDesc": "Övervakning och granskning", + "settingsSidebarTitle": "Anpassning av sidofältet", + "settingsSidebarDesc": "Välj vilka objekt som ska visas i sidofältet. Grundläggande gör att avancerade verktyg förblir sökbara.", "hideHealthLogs": "Dölj loggar för hälsokontroll", "hideHealthLogsDesc": "När PÅ, dämpa [HealthCheck]-meddelanden i serverkonsolen", "themeAccent": "Temafärg", @@ -6780,19 +6783,19 @@ "themeOrange": "Orange", "themeCyan": "Cyan", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Anpassa programmets namn och logotyp", + "appName": "Programnamn", + "appNameDesc": "Visningsnamn som visas i sidofältet och webbläsarfliken", + "customLogo": "URL för anpassad logotyp", + "customLogoDesc": "URL till din anpassade logotypbild", + "uploadLogo": "Ladda upp logotyp", + "resetLogo": "Återställ till standard", + "logoPreview": "Förhandsgranskning", + "customFavicon": "Webbläsarikon", + "customFaviconDesc": "URL till din anpassade webbplatsikon (visas i webbläsarfliken)", + "uploadFavicon": "Ladda upp webbplatsikon", + "resetFavicon": "Återställ webbplatsikon", + "faviconPreview": "Förhandsgranskning av webbplatsikon", "logoFileTooLarge": "Logotypfilen måste vara mindre än 500 KB", "faviconFileTooLarge": "Favicon-filen måste vara mindre än 50 KB", "invalidLogoFileType": "Ogiltig filtyp. Vänligen ladda upp PNG, JPG, SVG, GIF eller WebP.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Uppdateringsintervall", "ruleModeDescription": "Regelmodusbeskrivning" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", + "bulkHealthcheck": "Masshälsokontroll", + "bulkHealthcheckDesc": "Testa alla konfigurerade proxyservrar mot en mål-URL för att se vilka som fungerar.", + "healthcheckTesting": "Testar...", + "healthcheckAll": "Hälsokontrollera alla", + "healthcheckFailed": "Det gick inte att köra hälsokontrollen", + "healthcheckTestingAll": "Testar alla proxyservrar parallellt...", + "healthcheckTotal": "Totalt", + "healthcheckWorking": "Fungerar", + "healthcheckFailedLabel": "Misslyckades", "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "healthcheckProxyUrl": "Proxy-URL", + "healthcheckLatency": "Latens", "proxyDocumentationScopeTitle": "Upplösning av proxyomfång", "proxyDocumentationScopeDescBefore": "OmniRoute löser den utgående proxyn i prioritetsordning:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "kombination → konto → leverantör → global", "proxyDocumentationScopeDescAfter": ". Det mest specifika omfånget vinner.", "proxyDocumentationAddTitle": "Lägga till en anpassad proxy", "proxyDocumentationAddDescBefore": "Gå till", @@ -6968,7 +6971,7 @@ "cancel": "Avbryt", "globalLabel": "Global", "configure": "Konfigurera", - "globalSystemPrompt": "Global System Prompt", + "globalSystemPrompt": "Global systemprompt", "saved": "Sparad", "beforePromptLabel": "Före prompt", "beforePromptDesc": "Inmatad före agentens/leverantörens systeminstruktioner", @@ -6984,7 +6987,7 @@ "passthroughDesc": "Inga förändringar – kunden styr tankebudgeten", "thinkingModePassthrough": "Genomgång", "thinkingModePassthroughDesc": "Lämna klientens resonemang oförändrat (insats, sammanfattning, tankeblock). Krävs för Codex/Stationär synlighet. Standard.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Automatiskt (ta bort)", "thinkingModeAutoDesc": "Ta bort alla fält för klientens tänkande/resonemang (resonemang, resonemang_insats, Claude tänkande, Gemini tänkande_config) och låt leverantören uppfinna standarder. Kan dölja tänkande paneler och bryta klientens sammanfattningsförfrågningar.", "thinkingModeCustom": "Anpassad", "thinkingModeCustomDesc": "Överskriv varje begäran med en fast tänkande tokenbudget som du ställer in nedan.", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} leverantör(er) blockerade från /modeller", "blockProviderTitle": "Blockera {provider}", "unblockProviderTitle": "Avblockera {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Matchning av CLI-fingeravtryck", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} leverantör(er) med aktivt CLI-fingeravtryck", + "enableFingerprintTitle": "Aktivera fingeravtryck för {provider}", + "disableFingerprintTitle": "Inaktivera fingeravtryck för {provider}", "systemTransforms": "Systemblock Transform Pipeline", "systemTransformsDesc": "Per leverantör beställd pipeline av transformeringar som tillämpas på begärandekroppen före vidarebefordran. Stöder alla leverantörs-ID.", "systemTransformsAddProvider": "Lägg till leverantör", @@ -7065,17 +7068,17 @@ "leastUsedDesc": "Välj minst senast använda konto", "costOpt": "Kostnad Opt", "costOptDesc": "Föredrar billigaste tillgängliga konto", - "resetAware": "Reset-Aware RR", + "resetAware": "Återställningsmedveten RR", "resetAwareDesc": "Föredrar konton med sund återstående kvot och närmare återställningar", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kvotviktad", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "Strikt slumpmässig", + "strictRandomDesc": "Blanda kortleken — använder varje konto en gång innan den blandas om", + "stickyLimit": "Gräns för beständighet", "stickyLimitDesc": "Samtal per konto innan byte", "routingStrategyTitle": "Ruttstrategi", "routingStrategySubtitle": "Matcha 9router: konto-round-robin, sticky-gränser och kombinationsrotation", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Turordning", "accountRoundRobinDesc": "Växla mellan konton för att fördela belastningen", "comboRoundRobin": "Kombinations-Round Robin", "comboRoundRobinDesc": "Växla mellan kombinationsmål istället för att alltid börja med det första", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Åsidosätt global kontostrategi för denna leverantör (9router-paritet).", "providerRoutingStrategy": "Kontostrategi", "providerRoutingInheritGlobal": "Ärv global standard", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Brytpunkt för förhandskontroll av kvot", + "quotaPreflightSubtitle": "Hoppa över konton vars kvot är slut innan begäran skickas uppströms", + "quotaPreflightEnable": "Aktivera förhandskontroll av kvot", + "quotaPreflightEnableDesc": "Kontrollera kontots återstående kvot före varje begäran (fönster på 5 timmar/vecka/månad). Konton som ligger på eller under brytpunkten hoppas över utan något anrop uppströms. Fönsterspecifika brytpunkter som anges på sidan Leverantörskvot har alltid företräde framför standardvärdet här.", + "quotaPreflightCutoff": "Global brytpunkt (minsta återstående %)", + "quotaPreflightCutoffDesc": "Sluta använda ett konto när dess återstående kvot sjunker till denna procentandel eller lägre, för varje fönster som saknar en egen brytpunkt. Motsvarar staplarna för återstående procent på sidan Leverantörskvot.", + "quotaPreflightWindowsHint": "Fönster med en egen fönster- eller leverantörsspecifik brytpunkt (angiven i dialogrutan Brytpunkt på sidan Leverantörskvot) påverkas inte av detta standardvärde.", + "quotaPreflightLoadFailed": "Det gick inte att läsa in inställningarna för förhandskontroll av kvot.", "modelAliases": "Modellalias", "modelAliasesTitle": "Modellalias", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Mappa om modellnamn med exakta matchningar eller jokerteckenmönster.", "addCustomAlias": "Lägg Till Anpassat Alias", "deprecatedModelId": "Föråldrat modell-ID", "newModelId": "Nytt modell-ID", @@ -7188,11 +7191,11 @@ "comboStrategyAria": "Kombinationsstrategi", "priority": "Prioritet", "weighted": "Viktad", - "contextRelay": "Context Relay", + "contextRelay": "Kontextöverföring", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Max försöker igen", "retryDelayLabel": "Försök igen fördröjning (ms)", - "timeoutLabel": "Timeout (ms)", + "timeoutLabel": "Tidsgräns (ms)", "healthCheck": "Hälsokontroll", "healthCheckDesc": "Kontrollera leverantörens tillgänglighet i förväg", "trackMetrics": "Spåra mätvärden", @@ -7200,7 +7203,7 @@ "providerOverrides": "Provider åsidosätter", "providerOverridesDesc": "Åsidosätt timeout och försök igen per leverantör. Leverantörsinställningar åsidosätter globala standardinställningar.", "providerMaxRetriesAria": "{provider} max försök", - "providerTimeoutAria": "{provider} timeout ms", + "providerTimeoutAria": "Tidsgräns för {provider} i ms", "removeProviderOverrideAria": "Ta bort åsidosättningen {provider}", "selectProviderPlaceholder": "Välj leverantör...", "searchProviderPlaceholder": "Sök leverantörer...", @@ -7214,24 +7217,24 @@ "concurrencyPerModel": "Samtidighet / Modell", "queueTimeout": "Timeout för kö (ms)", "queueDepth": "Kölängd", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Tröskelvärde för överlämning", + "contextRelayMaxMessages": "Maximalt antal meddelanden för sammanfattning", + "contextRelaySummaryModel": "Sammanfattningsmodell", + "contextRelayProviderNote": "Kontextöverföring genererar för närvarande överlämningar för Codex-konton och använder dessa värden som globala standardvärden för nya eller okonfigurerade kombinationer.", "providerProfiles": "Leverantörsprofiler", "providerProfilesDesc": "Separata inställningar för motståndskraft för OAuth (sessionsbaserad) och API Key (mätad) leverantörer. OAuth-leverantörer har strängare trösklar på grund av lägre prisgränser.", "oauthProviders": "OAuth-leverantörer", "apiKeyProviders": "API-nyckelleverantörer", "transientCooldown": "Övergående nedkylning", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", + "rateLimitCooldown": "Nedkylning vid hastighetsbegränsning", + "maxBackoffLevel": "Maximal nivå för exponentiell väntetid", "cbThreshold": "CB-tröskel", "cbResetTime": "CB-återställningstid", "rateLimiting": "Prisbegränsande", "rateLimitingDesc": "API-nyckelleverantörer är automatiskt hastighetsbegränsade med säkra standardinställningar. Gränser lärs från svarsrubriker och anpassas över tid.", "defaultSafetyNet": "Standardsäkerhetsnät", "rpm": "RPM", - "minGap": "Min Gap", + "minGap": "Minsta intervall", "maxConcurrent": "Max Samtidigt", "activeLimiters": "Aktiva begränsningar", "noActiveLimiters": "Inga aktiva hastighetsbegränsare än.", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}d sedan", "backupReasonManual": "handbok", "backupReasonPreRestore": "föråterställning", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# anslutning} other {# anslutningar}}", "noChangesSinceBackup": "Inga ändringar sedan senaste säkerhetskopiering", "backupFailed": "Säkerhetskopieringen misslyckades", "restoreFailed": "Återställningen misslyckades", @@ -7329,7 +7332,7 @@ "configured": "konfigurerad", "none": "Ingen", "modelOverrideValuePlaceholder": "Numeriskt värde", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Engelska, kommaseparerade, t.ex. low, medium, high", "addKeyValue": "Lägg till nyckelvärde", "noModelOverrides": "Inga åsidosättningar har konfigurerats för denna modell.", "modelOverrideLoadFailed": "Det gick inte att läsa in modellåsidosättningar", @@ -7369,7 +7372,7 @@ "pricingFormat": "Prisformat", "pricingFormatDesc": "Alla priser är i $/1M tokens (dollar per miljon tokens).", "tokenTypes": "Tokentyper", - "inputTokenDesc": "Standard prompt tokens", + "inputTokenDesc": "Standardtoken för promptar", "outputTokenDesc": "Kompletterande/svars-tokens", "cachedTokenDesc": "Cachade indatatokens (vanligtvis 50 % av inmatningshastigheten)", "reasoningTokenDesc": "Särskilda resonemang/tänketokens (återgång till produktionshastighet)", @@ -7378,25 +7381,25 @@ "editPricing": "Redigera prissättning", "viewFullDetails": "Visa fullständiga detaljer", "themeCoral": "Korall", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Adaptiv volymdirigering", + "adaptiveVolumeRoutingDesc": "Skala anslutningar dynamiskt baserat på nyttolastvolym och belastning på dataflödet.", + "lkgpToggleTitle": "Senast fungerande leverantör (LKGP)", + "lkgpToggleDesc": "När detta är aktiverat kommer routern ihåg vilken leverantör som senast gav ett lyckat svar och provar den först vid efterföljande förfrågningar.", "echoRequestedModelTitle": "Eka begärt modellnamn i svar", "echoRequestedModelDesc": "När detta är aktiverat ekar svarsfältet `model` det alias eller combo-namn som klienten begärde istället för uppströmsmodellens namn. Åtgärdar strikta klienter (t.ex. Claude Desktop) som avvisar ett svar vars modell inte matchar förfrågan.", "webSearchRouteTitle": "Dirigering av webbsökning", "webSearchRouteDesc": "När en förfrågan inkluderar ett inbyggt web_search-verktyg dirigeras hela förfrågan till denna modell istället för standardmodellen – användbart för leverantörer som inte implementerar Anthropics web_search-serververktyg. Lämna tomt för att inaktivera.", "webSearchRoutePlaceholder": "t.ex. openrouter,anthropic/claude-3.5-sonnet", "paidModelPatternWarning": "Detta mönster matchar endast betalmodeller – aktivera betalmodeller eller justera mönstret.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Rensa LKGP-cache", + "lkgpCacheCleared": "LKGP-cachen har rensats", + "lkgpCacheClearFailed": "Det gick inte att rensa LKGP-cachen", + "days": "Dagar", + "lkgp": "LKGP-läge", + "lkgpDesc": "Senast fungerande leverantör (förutsägbar feltålighet)", + "maintenance": "Underhåll", + "purgeExpiredLogs": "Rensa utgångna loggar", + "purgeLogsFailed": "Det gick inte att rensa loggarna", "logsDeleted": "{count, plural, =0 {Inga utgångna loggar rensades} one {Rensade # utgången logg} other {Rensade # utgångna loggar}}", "resetUsageData": "Återställ användningsdata", "resetUsageDataDesc": "Välj hur långt tillbaka du vill radera användning, förfrågningsloggar och analysdata. Leverantörskonfiguration, anslutningar, API-nycklar, combos och inställningar bevaras. Denna åtgärd kan inte ångras.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Det gick inte att återställa användningsdata", "reset": "Återställ", "resetting": "Återställer...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Kontextoptimerad", + "contextOptDesc": "Dirigerar baserat på krav på kontextfönster och konversationens längd", + "cacheOpt": "Cacheoptimerad", + "cacheOptDesc": "Behåller samma återanvändbara promptprefix på samma leverantörskonto", + "priorityDesc": "Sekventiell reservväg – provar leverantör 1 först, sedan leverantör 2 och så vidare", + "weightedDesc": "Fördelar trafiken mellan leverantörer enligt procentuella vikter", + "modelRoutingTitle": "Regler för modelldirigering", + "modelRoutingDesc": "Dirigera automatiskt modeller till specifika kombinationer med hjälp av globmönster", + "addRule": "Lägg till regel", + "routeToCombo": "Dirigera till kombination", + "selectCombo": "Välj kombination...", + "priorityHint": "Högre värde = kontrolleras först. Använd 10+ för specifika mönster.", + "patternHint": "Använd * för valfritt antal tecken och ? för ett enskilt tecken. Skiftlägesokänsligt.", + "noRoutingRules": "Inga dirigeringsregler har konfigurerats. Förfrågningar använder den globala kombinationen som standard.", + "routingRuleHint": "Lägg till en regel som claude-opus* -> frontier-combo för att dirigera förfrågningar automatiskt.", + "deleteRoutingRule": "Vill du ta bort den här modelldirigeringsregeln?", + "exactMatchMode": "Exakt matchning", + "wildcardPatternMode": "Jokermönster", + "exactMatchModeDesc": "Använd exakta alias för utfasade eller omdöpta modell-ID:n.", + "wildcardPatternModeDesc": "Använd jokeralias med * och ? när en modellfamilj ska mappas till ett enda mål.", + "noExactAliasesConfigured": "Inga alias för exakt matchning har konfigurerats.", + "wildcardRulesTitle": "Regler för jokertecken", + "noWildcardAliasesConfigured": "Inga jokerteckenalias har konfigurerats.", + "overview": "Översikt", + "unknownError": "Okänt fel", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Vitlista", + "syncDisabled": "Synkronisering inaktiverad", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Synkronisering aktiverad", + "blacklist": "Svartlista", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", + "syncedModels": "Synkroniserade modeller", "budget": "Budget", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Det gick inte att återställa prissättning: {reason}", - "tab": "Tab", + "tab": "Flik", "pricingSavedProvider": "Priset har sparats för {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Det gick inte att spara pris: {reason}", "pricingResetProvider": "Prisåterställning för {provider}", - "nextSync": "Next Sync", + "nextSync": "Nästa synkronisering", "pricingSyncFailedWithReason": "Prissynkronisering misslyckades: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Rensa synkroniserad prissättning", + "compressionTitle": "Promptkomprimering", + "compressionDesc": "Minska tokenanvändningen genom att komprimera prompter innan de skickas till leverantörer", "compressionGuidanceFullGuideLink": "Fullständig komprimeringsguide", "compressionGuidanceShow": "Detaljer", "compressionGuidanceHide": "Dölj detaljer", @@ -7485,20 +7488,20 @@ "tokenSaverInputCompressionDesc": "Skriv om tillämplig chatthistorik samtidigt som kod, URL:er och avsikt bevaras.", "tokenSaverFineTunePrefix": "Finjustera varje motor på", "tokenSaverFineTuneSuffix": "eller kombinera motorer per förfrågan på", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Komprimeringsläge", + "compressionModeOff": "Av", + "compressionModeOffDesc": "Ingen komprimering tillämpas", + "compressionModeLite": "Lätt", + "compressionModeLiteDesc": "Reducering av blanksteg och tomma rader", + "compressionModeStandard": "Standard (Grottmänniska)", + "compressionModeStandardDesc": "Regelbaserad komprimering med fler än 30 mönster, bevarar kodblock och URL:er", + "compressionModeAggressive": "Aggressiv", + "compressionModeAggressiveDesc": "Sammanfattning + komprimering av verktygsresultat + progressiv åldring för maximala besparingar", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Aggressiv motorkonfiguration", "compressionAggressiveConfigDesc": "Finjustera sammanfattningar, verktygskomprimering och åldringströsklar", - "compressionUltraConfig": "Ultra Engine Configuration", + "compressionUltraConfig": "Konfiguration av Ultra-motorn", "compressionUltraConfigDesc": "Finjustera heuristisk beskärning, SLM reserv och trösklar per meddelande", "compressionUltraRate": "Behåll kursen", "compressionUltraMinScore": "Minsta poängtröskel", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Antalet senaste meddelanden som sparats på varje åldrande nivå (högre = mer bevarade)", "compressionToolStrategies": "Verktygsresultatstrategier", "compressionToolStrategiesDesc": "Växla komprimeringsstrategier för olika verktygsresultattyper", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Allmänna inställningar", + "compressionAutoTrigger": "Tröskelvärde för automatisk aktivering", + "compressionCacheTTL": "Cache-TTL", + "compressionPreserveSystem": "Bevara systemprompt", "compressionPreserveSystemAlways": "Alltid", "compressionPreserveSystemWhenNoCache": "När cache saknas", "compressionPreserveSystemNever": "Aldrig", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Sparad", "compressionExclusionsCount": "{count, plural, one {# uteslutning} other {# uteslutningar}} konfigurerad", "compressionExclusionsEmpty": "Inga uteslutningar konfigurerade — varje modell/slutpunkt är berättigad till komprimering (standardbeteende).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Konfiguration av Caveman-motorn", + "compressionCavemanConfigDesc": "Finjustera den regelbaserade komprimeringsmotorn", "compressionCavemanPanelHint": "Dess på/av-läge och nivå ställs in i panelen:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", + "compressionRoles": "Komprimera meddelanderoller", + "compressionRoleUser": "Användare", + "compressionRoleAssistant": "Assistent", "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionMinLength": "Minsta meddelandelängd", + "compressionSkipRules": "Regler som undantas från komprimering", + "compressionSkipRulesDesc": "Klicka på regler för att undanta dem under komprimering", + "compressionPreservePatterns": "Bevara mönster", + "compressionPreservePatternsDesc": "Regexmönster som aldrig komprimeras (ett per rad)", + "compressionLogTitle": "Komprimeringslogg", + "compressionLogEmpty": "Inga komprimerade förfrågningar ännu. Komprimeringsstatistik visas här när förfrågningar bearbetas med komprimering aktiverad.", "minutes": "minuter", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", + "compressionModeRtkDesc": "Kommandomedveten filtrering av verktygsutdata", + "compressionModeCodexResponses": "Verktygsutdata för svar", + "compressionModeCodexResponsesDesc": "Konservativ komprimering för kvalificerade skal-, patch-, sök-, bygg- och JSON-utdata", + "compressionModeStacked": "Staplad", + "compressionModeStackedDesc": "RTK-filtrering av verktygsutdata följt av Caveman-meddelandekomprimering", + "qdrantTitle": "Qdrant (vektorminne)", + "qdrantDesc": "Valfritt. Indexerar semantiska minnen i en extern vektordatabas för snabbare hämtning.", + "qdrantStatusActive": "Aktiv", + "qdrantStatusError": "Fel", + "qdrantStatusDisabled": "Inaktiverad", + "qdrantEnable": "Aktivera Qdrant", + "qdrantEnableDesc": "När detta är aktiverat kan semantisk/hybrid strategi använda Qdrant för att hämta minnen.", + "qdrantTesting": "Testar...", + "qdrantTestConnection": "Testa anslutning", + "qdrantSaved": "Konfigurationen har sparats", + "qdrantSaveError": "Det gick inte att spara konfigurationen", + "qdrantHostHint": "Utan port. Exempel: 127.0.0.1 eller http://qdrant", "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "qdrantPortHint": "Qdrant-standard: 6333", + "qdrantCollectionHint": "Där minnespunkter kommer att lagras.", + "qdrantEmbeddingModel": "Inbäddningsmodell", + "qdrantHelpTitle": "Snabb konfigurationshjälp", + "qdrantHelpQuickTitle": "Snabbkonfiguration (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Värd: Qdrant-IP/URL, port: 6333, samling: omniroute_memory.", + "qdrantHelpStep2": "2. Om du använder nvidia/llama-nemotron-embed-vl-1b-v2:free, använd samlingsdimensionen 2048.", + "qdrantHelpStep3": "3. Modellfält: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Spara, testa anslutningen och testa sedan sökningen.", + "qdrantEmbeddingQuickSelect": "Snabbval från identifierade modeller...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Format: leverantör/modell. Leverantörens autentiseringsuppgifter måste vara konfigurerade.", + "qdrantApiKeyPlaceholderKeep": "(lämna tomt för att behålla den nuvarande nyckeln)", + "qdrantApiKeyPlaceholderOptional": "(lämna tomt om det inte används)", + "qdrantSaveHint": "Tips: redigera värd/port/samling/modell och klicka på Spara. API-nyckeln är valfri.", + "qdrantSearchTestTitle": "Söktest", + "qdrantSearchTestDesc": "Genererar en inbäddning och söker i Qdrant.", + "qdrantSearchPlaceholder": "Exempel: användarinställningar, historik osv.", + "qdrantNoResults": "Inga resultat (eller så är Qdrant inte konfigurerat).", + "qdrantCleanupTitle": "Lagring och rensning", + "qdrantCleanupDesc": "Tar bort utgångna och gamla punkter baserat på", + "searching": "Söker...", + "cleaning": "Rensar...", + "cleanNow": "Rensa nu", "optional": "Valfritt", "current": "Aktuell", "remove": "Ta bort", @@ -7600,24 +7603,24 @@ "resilienceScope": "Omfattning:", "resilienceTrigger": "Utlösare:", "resilienceEffect": "Effekt:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Begärandekö och hastighet", + "resilienceAutoEnableApiKeyProviders": "Aktivera automatiskt för leverantörer med API-nyckel", + "resilienceRequestsPerMinute": "Begäranden per minut", + "resilienceMinTimeBetweenRequests": "Minsta tid mellan begäranden", + "resilienceConcurrentRequests": "Samtidiga begäranden", + "resilienceConnectionScopeConcurrentRequests": "Samtidiga begäranden per anslutning/kvotomfattning", + "resilienceGlobalConcurrentRequests": "Globala samtidiga uppströmsbegäranden (0 = inaktiverat)", "resilienceMaxQueueWaitTime": "Maximal väntetid i kö", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Grundläggande väntetid", + "resilienceUseUpstreamRetryHints": "Använd uppströmsinformation om återförsök", + "resilienceDefaultPerProvider": "Standard (per leverantör)", + "resilienceAlwaysOn": "Alltid på", + "resilienceAlwaysOff": "Alltid av", "routingRemoveEntry": "Ta bort posten", "routingNeedlesSubstrings": "Nålar (understrängar att matcha)", "routingCaseSensitive": "Skiftlägeskänslig", "routingPrefixes": "Prefix", - "routingMatch": "Match", + "routingMatch": "Matcha", "routingReplacement": "Byte", "routingReplaceAllOccurrences": "Ersätt alla förekomster", "routingPatternRegex": "Mönster (regex)", @@ -7632,7 +7635,7 @@ "logsSettingsTitle": "Logginställningar", "detailedLogsLabel": "Detaljerade loggar aktiverade", "detailedLogsDesc": "Aktivera detaljerad loggning av förfrågningar/svar", - "callLogPipelineLabel": "Call Log Pipeline", + "callLogPipelineLabel": "Pipeline för anropslogg", "callLogPipelineDesc": "Aktivera pipeline för bearbetning av samtalslogg", "maxDetailSizeLabel": "Max detaljstorlek (KB)", "maxDetailSizeDesc": "Maximal storlek för detaljerade loggposter", @@ -7665,7 +7668,7 @@ "oneproxySyncStatusTitle": "Synkroniseringsstatus", "oneproxySuccess": "Framgång", "oneproxyFailed": "Misslyckades", - "routingAntigravitySignatureTitle": "Antigravity Signature Cache Mode", + "routingAntigravitySignatureTitle": "Cacheläge för Antigravity-signaturer", "routingAntigravitySignatureDesc": "Styr om OmniRoute endast återanvänder lagrade Gemini-tankesignaturer eller accepterar validerade klienttillhandahållna signaturer i Antigravity-kompatibla verktygsanropsflöden.", "routingAntigravitySignatureEnabledLabel": "Aktiverad", "routingAntigravitySignatureEnabledDesc": "Nuvarande beteende. Ignorera klienttillhandahållna signaturer och fortsätt använda det lagrade OmniRoute-flödet.", @@ -7695,25 +7698,25 @@ "visionBridgeModel": "Bromodell", "visionBridgeModelPlaceholder": "openai/gpt-4o-mini", "visionBridgeModelHint": "Alla OmniRoute-modell-ID:n som stöder vision kan användas här.", - "visionBridgePrompt": "Bridge Prompt", + "visionBridgePrompt": "Bryggprompt", "visionBridgePromptPlaceholder": "Beskriv denna bild kortfattat.", "visionBridgePromptHint": "Skickas till vision-modellen innan den extraherade beskrivningen injiceras tillbaka i den ursprungliga förfrågan.", - "visionBridgeTimeoutMs": "Timeout (ms)", + "visionBridgeTimeoutMs": "Tidsgräns (ms)", "visionBridgeMaxImagesPerRequest": "Max bilder per förfrågan", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Maximalt antal backoff-steg", + "resilienceProviderBreakerTitle": "Kretsbrytare per leverantör", + "resilienceFailureThreshold": "Feltröskel", + "resilienceDegradationThreshold": "Försämringströskel", "resilienceResetTimeout": "Återställ timeout", "resilienceFailureThresholdLabel": "Misslyckande tröskel", "resilienceResetTimeoutLabel": "Återställ timeout", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Väntetid för anslutning", "resilienceUseUpstreamRetryHintsLabel": "Använd uppströms tips om försök igen", "resilienceUseUpstream429BreakerLabel": "Använd uppströms 429 tips (brytare)", "resilienceMaxBackoffStepsLabel": "Max backoff-steg", "resilienceYes": "Ja", "resilienceNo": "Nej", - "resilienceDefault": "Default", + "resilienceDefault": "Standard", "storageDatabaseBackupRetention": "Databassäkerhetskopiering", "storageDatabaseBackups": "Säkerhetskopior av databas", "storageBackupRetentionDescription": "Automatiska SQLite-säkerhetskopior lagras i", @@ -7745,12 +7748,16 @@ "legacyJsonImportSuccess": "Äldre JSON har importerats!", "jsonImportFailed": "Kunde inte importera JSON", "jsonImportError": "Fel vid JSON-import", + "jsonImportAuthRequired": "Autentisering krävs för att importera en äldre JSON-konfiguration. Logga in eller slutför konfigurationen först.", + "databaseSettingsAuthRequiredTitle": "Autentisering krävs", + "databaseSettingsAuthRequiredBody": "Databasinställningar och JSON-import är endast tillgängliga för en autentiserad administratör. Logga in eller slutför konfigurationen för att visa och redigera dem.", + "databaseSettingsAuthRequiredCta": "Logga in", "storagePurgeData": "Rensa data", "storagePurgeDataDesc": "Ta omedelbart bort alla poster utan att tillämpa kvarhållningskontroller. Använd med försiktighet.", "storageRetentionCleanup": "Kvarhållningsinställningar", "storageRetentionCleanupDesc": "Konfigurera kvarhållning av driftposter och rensning av databassäkerhetskopior.", "retentionCallDays": "Anrop {count}d", - "retentionAppDays": "App {count}d", + "retentionAppDays": "App {count} d", "retentionRows": "{count} rader", "retentionQuotaSnapshots": "Kvotsögonblicksbilder (dagar)", "retentionCompressionAnalytics": "Komprimeringsanalys (dagar)", @@ -7792,7 +7799,7 @@ "purgeDetailedLogs": "Rensa detaljerade loggar", "storageDatabaseSize": "Databasstorlek", "storagePageCount": "Antal sidor", - "storageFreelistCount": "Freelist Count", + "storageFreelistCount": "Antal lediga poster", "storageLastVacuum": "Sista vakuumet", "storageLastOptimization": "Senaste optimering", "storageIntegrityCheck": "Integritetskontroll", @@ -7808,7 +7815,7 @@ "redisLauncherStop": "Stoppa", "redisLauncherLaunching": "Startar...", "redisLauncherLaunch": "Starta Redis", - "redisLauncherContainer": "Container", + "redisLauncherContainer": "Behållare", "redisLauncherRunning": "Körs", "redisLauncherReachable": "Nåbar", "redisLauncherError": "Fel: {message}", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "läge: {mode}", "compressionAdaptiveOff": "Adaptiv kontextbudget: av (äldre auto-trigger)", "compressionAdaptiveTarget": "Adaptiv ({mode}, policy: {policy}) — mål ≈ {target, number} tokens (för ett fönster på {contextLimit, number} tokens)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Adaptiv kontextbudget", + "compressionAdaptiveModeOff": "Av (äldre automatisk utlösning)", + "compressionAdaptiveModeFloor": "Golv (garantera alltid att det ryms)", + "compressionAdaptiveModeReplace": "Ersätt automatisk utlösning", + "compressionAdaptivePolicy": "Budgetpolicy", + "compressionAdaptivePolicyReserve": "Reservera utdata", + "compressionAdaptivePolicyPercentage": "Procentandel av fönstret", + "compressionAdaptivePolicyAbsolute": "Absolut tokenbudget", "compressionOutputStylesDescription": "Infoga instruktioner för svarsformning utan att skriva om leverantörens utdata. Kombinera fritt.", "mcpAccessibilityDescription": "Avgränsar MCP-verktygsutdata (separat lagring).", "compressionStylesTileSummary": "{tokens, number} tokens sparade · {runs, plural, one {# körning stylad} other {# körningar stylade}}", @@ -7844,8 +7851,8 @@ "minimal": "Minimal", "standard": "Standard", "aggressive": "Aggressiv", - "lite": "Lite", - "full": "Full", + "lite": "Lätt", + "full": "Fullständig", "ultra": "Ultra" }, "compressionEngine": { @@ -7858,7 +7865,7 @@ "description": "Innehållsadresserade hämtningsmarkörer." }, "lite": { - "label": "Lite", + "label": "Lätt", "description": "Rensning av blanksteg och format." }, "rtk": { @@ -7866,11 +7873,11 @@ "description": "Filtrering av kommandoutdata." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses-verktygets utdata", + "description": "Konservativ komprimering för utdata från Responses-verktyg som stöds." }, "headroom": { - "label": "Headroom", + "label": "Marginal", "description": "Tabulär JSON-komprimering." }, "relevance": { @@ -7878,7 +7885,7 @@ "description": "Extraherande meningspoängsättning mot den senaste användarfrågan." }, "caveman": { - "label": "Caveman", + "label": "Grottmänniska", "description": "Regelbaserad prosakomprimering." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "YAGNI-stege: minsta fungerande ändring, inga oombedda abstraktioner." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (lat seniorutvecklare)", + "description": "Disciplin som en lat seniorutvecklare: klättra på YAGNI-stegen, åtgärda grundorsaken, minsta fungerande diff." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Jag har ADHD (handling först)", + "description": "Utdata med handling först: börja med nästa åtgärd, numrera stegen, ange ett konkret nästa steg, ingen inledning." }, "terse-cjk": { "label": "Kortfattad CJK (文言)", @@ -7928,9 +7935,17 @@ "memorySkillsFailedToSave": "Det gick inte att spara", "memorySkillsApiKey": "API-nyckel", "memorySkillsActiveSkillsProvider": "Aktiv kompetensleverantör", - "cliproxyapiFallback": "CLIProxyAPI Fallback", + "cliproxyapiFallback": "CLIProxyAPI-reservlösning", "cliproxyapiEnableFallback": "Aktivera CLIProxyAPI Fallback", - "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiUrl": "CLIProxyAPI-URL", + "headroomProxyTitle": "Headroom-proxy", + "headroomProxyDesc": "URL till den valfria Headroom-proxyn för tokenbesparing. Om fältet lämnas tomt används HEADROOM_URL eller http://localhost:8787.", + "headroomProxyUrl": "Headroom-URL", + "headroomProxyUrlHint": "Loopback-URL:er kan startas från den här sidan. Externa URL:er avsöks endast.", + "headroomProxySave": "Spara", + "headroomProxyStart": "Starta", + "headroomProxyStop": "Stoppa", + "headroomProxyExternalHint": "Den här URL:en är inte en loopback-adress, så OmniRoute kommer inte att starta den lokala CLI:n.", "cliproxyapiStatus": "CLIProxyAPI-status", "cliproxyapiNotDetected": "Inte upptäckt", "cliproxyapiImportAuthTitle": "Importera konton från CLIProxyAPI", @@ -7938,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Importera konton", "payloadRulesTitle": "Regler för nyttolast", "payloadRulesDesc": "Konfigurera mutationer av anropsdata (payload) per modell och protokoll. Ändringar sparas i inställningarna och snabbomladdas i runtime-miljön omedelbart efter att de sparats.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "standard", "payloadRuleDefaultDesc": "Tillämpar parametrar endast när målsökvägen saknas i den utgående payloaden.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "åsidosätt", "payloadRuleOverrideDesc": "Tvingar värden till payloaden och ersätter allt som redan finns på den sökvägen.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "filtrera", "payloadRuleFilterDesc": "Tar bort blockerade parametrar från payloaden innan uppströmsanropet skickas.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Liknar default, men strängvärden tolkas som JSON först när det är möjligt. Det äldre inmatningsaliaset default-raw accepteras också vid sparning.", @@ -7980,20 +7995,20 @@ "responsesStateTitle": "Responses-tillstånd", "responsesStateDesc": "Styr hur OmniRoute vidarebefordrar previous_response_id.", "responsesStateModeLabel": "hantering av previous_response_id", - "responsesStateModeAuto": "Auto", + "responsesStateModeAuto": "Automatiskt", "responsesStateModeStrip": "Ta bort", "responsesStateModePreserve": "Behåll", "responsesStateHint": "Auto tar bort previous_response_id såvida inte en anslutning uttryckligen aktiverar lagring av OpenAI Responses. Ta bort är säkrast för tillståndslösa klienter som VS Code Custom Endpoint; kontexten beror då på att klienten skickar fullständig historik.", "responsesStateSaveError": "Misslyckades med att uppdatera inställningen för Responses-tillstånd", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Codex snabbnivå", "codexFastTierDesc": "Globalt injicera service_tier=prioritet för OpenAI Codex-förfrågningar.", "codexFastTierHint": "När det är aktiverat lägger OmniRoute till service_tier=prioritet till utgående Codex-förfrågningar för anslutningar som inte redan anger en nivå. Prioritetsnivån kräver en OpenAI Enterprise API-nyckel eller ChatGPT-auth Codex-sökvägen; andra nyckeltyper kommer att få ett nivårelaterat fel från OpenAI. Inställningar per anslutning på Codex-leverantörssidan har företräde.", "codexFastTierSaveError": "Det gick inte att uppdatera Codex Fast Tier-inställning", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Automatisk pingning av Codex-kvot", + "codexAutoPingDesc": "Aktiveras per anslutning: skickar en liten begäran direkt efter att ett Codex-sessionsfönster återställts, så att det inte är kallt när du behöver det.", + "codexAutoPingWarning": "Förbrukar en liten mängd faktisk Codex-kvot vid varje pingning. Av som standard – aktivera endast för anslutningar som du aktivt förlitar dig på.", + "codexAutoPingSaveError": "Det gick inte att uppdatera inställningen för automatisk Codex-pingning", + "codexAutoPingToggleAria": "Växla automatisk pingning av Codex-kvoten för {connection}", "codexFastTierTierLabel": "Tjänstenivå", "codexFastTierTierPriority": "Prioritet", "codexFastTierTierFlex": "Flex", @@ -8001,7 +8016,7 @@ "codexFastTierModelsLabel": "Fast-tier-modeller", "codexFastTierModelsHint": "Endast markerade modeller får service_tier när Fast Tier är aktiverat.", "codexFastTierModelCheckbox": "Aktivera Fast Tier för {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Claude snabbläge", "claudeFastModeDesc": "Välj valda Claude-förfrågningar till antropiskt snabbläge (hastighet: \"snabb\").", "claudeFastModeHint": "Anthropic stöder inte officiellt Fast Mode för SDK-liknande klienter. När den är aktiverad vidarebefordrar OmniRoute en X-CPA-Force-Fast-Mode-rubrik så att en parad CLIProxyAPI-build kan välja att förfalska ingångspunkten. Endast de listade Opus-modellerna är gated av Anthropics klient-side check. Prenumerationsnivå, Max-plan och kreditsaldo i snabbläge tillämpas fortfarande på serversidan – Anthropic kan returnera out_of_credits även när växlingen är på.", "claudeFastModeModelsLabel": "Tillämpas på modeller ({count})", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Globalt kontrollintervall", "resilienceCredentialHealthEveryMinutes": "Var {minutes} min", "resilienceCredentialHealthHint": "0 stänger av bakgrundsskanningen (max 1440 min = 24 h). Anslutningar med eget hälsokontrollvärde ignorerar denna globala standard; 0 på en anslutning utesluter den även när den globala skanningen är på.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Alltid aktiverat för {provider} – krävs för OAuth-kontosäkerhet och kan inte stängas av.", + "forcedFingerprintBadge": "Obligatoriskt", "sessionAffinityTitle": "Sessionsaffinitet", "sessionAffinityDesc": "Håller en konversation på samma konto i så här många sekunder, för valfri leverantör. 0 inaktiverar det.", "sessionAffinityTtl": "TTL för affinitet (sekunder)", @@ -8164,7 +8179,7 @@ "cloudflareRelayButton": "Distribuera Cloudflare Relay", "cloudflareRelayModalTitle": "Distribuera Cloudflare Worker Relay", "cloudflareRelayWarning": "Distribuerar en Cloudflare Worker som proxierar LLM-anfrågningar genom Cloudflares edge-nätverk — vilket maskerar värd-IP-adressen bakom dynamiska Cloudflare-adresser. Workern tillämpar en engångshemlighet för autentisering så att den offentliga workers.dev-URL:en inte kan återanvändas som ett öppet relä.", - "cloudflareRelayTokenHowto": "Create the API token under My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit.", + "cloudflareRelayTokenHowto": "Skapa API-token under Min profil -> API-token -> Skapa token -> Anpassad token -> Konto / Workers Scripts / Redigera.", "cloudflareRelayAccountIdLabel": "Cloudflare-konto-ID", "cloudflareRelayAccountIdHint": "Hittas på höger sida av översiktssidan i Cloudflare-instrumentpanelen.", "cloudflareRelayApiTokenLabel": "Cloudflare API-token", @@ -8202,24 +8217,24 @@ "modelLockoutMaxBackoffStepsDescription": "Maximalt antal backoff-steg innan nedkylningen slutar öka. Gränsen för maximal nedkylning nås först i de flesta konfigurationer, vilket gör detta till ett säkerhetstak för när den maximala nedkylningen höjs.", "disableSessionStickiness": "Inaktivera sessionsbundenhet", "disableSessionStickinessDesc": "Round-robin- och slumpmässiga kombinationer roterar till en annan anslutning vid varje anrop istället för att fästa en hel konversation vid en anslutning baserat på hashen för det första meddelandet. Lämna inaktiverat för att bevara prompt-cache-träffar för flerstegschattar. Inställningar per kombination har företräde.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Dirigering efter promptcachelokalitet", + "promptCacheAffinityDesc": "Föredra samma leverantörskonto för matchande promptcache-nycklar, samtidigt som redundansväxling baserad på hälsa och kvot bevaras.", + "reasoningTokenBuffer": "Buffert för resonemangstoken", + "reasoningTokenBufferDesc": "Tillåt kombinationsdirigering att lägga till marginal för max_tokens endast för kända resonemangsmodeller när hela bufferten ryms inom en känd utmatningsgräns.", + "zeroLatencyOptimizations": "Optimeringar utan latens", + "zeroLatencyOptimizationsDesc": "Aktivera hedging, prediktiva TTFT-överhoppningar och proaktiv komprimering vid redundansväxling. Lämna avstängt för att förhindra att dessa latensfunktioner konkurrerar om mål eller komprimerar reservbegäranden.", "credentialRedaction": "Maskering av autentiseringsuppgifter", "credentialRedactionDesc": "Maskera API-nycklar, tokens och hemligheter från kontext som skickas till leverantörer och från svar.", "enableCredentialRedaction": "Aktivera maskering av autentiseringsuppgifter", "enableCredentialRedactionDesc": "Rensar API-nycklar, token, privata nycklar och JWT:er från meddelanden, verktygsanrop och svar.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Automatisk synkronisering inaktiverad", + "pricingAutoSyncEnabled": "Automatisk synkronisering aktiverad", "modalityBridgeIntro": "Omvandla multimodalt innehåll till text innan det når modeller som bara hanterar text. Bryggorna för bild, ljud och video är tillgängliga och konfigurerbara.", - "modalityBridgeVisionTab": "Vision", + "modalityBridgeVisionTab": "Bildanalys", "modalityBridgeAudioTab": "Ljud", "modalityBridgeVideoTab": "Video", "modalityBridgeSubTabsAria": "Modality Bridge-sektioner", - "modalityBridgeVisionTitle": "Vision Bridge", + "modalityBridgeVisionTitle": "Bildanalysbrygga", "modalityBridgeVisionDesc": "Beskriv bilder med en visionsmodell och fortsätt med användarens valda textmodell.", "modalityBridgeMode": "Läge", "modalityBridgeModeAuto": "Automatisk (rekommenderad)", @@ -8234,7 +8249,7 @@ "modalityBridgeTaskAwareDesc": "Inkludera användarens fråga som fokus så att visionsmodellen beskriver vad som är viktigt och transkriberar synlig text.", "modalityBridgePrompt": "Beskrivning av uppmaning", "modalityBridgeAdvanced": "Avancerad", - "modalityBridgeTimeoutMs": "Timeout (ms)", + "modalityBridgeTimeoutMs": "Tidsgräns (ms)", "modalityBridgeMaxImages": "Max bilder per begäran", "visionMaxCharsLabel": "Max antal tecken för beskrivning", "visionMaxCharsHint": "Begränsa längden på beskrivningen av visionsmodellen. 0 = obegränsad — höj för detaljrika OCR-uppgifter.", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Hälsa", "cliproxyapiPort": "Port", "qdrantHost": "Värd", - "qdrantCollection": "Samling", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Samling" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", + "title": "RTK-motor", + "description": "Kommandomedveten komprimering för verktygsutdata, terminalloggar och byggresultat.", + "enabled": "Aktiverat", + "intensity": "Intensitet", "intensityMinimal": "Minimal", "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "intensityAggressive": "Aggressiv", + "toolResults": "Verktygsresultat", + "assistantMessages": "Assistentmeddelanden", + "codeBlocks": "Kodblock", "filterCatalog": "Filterkatalog", "filterCatalogDesc": "Tillgängliga utgångsfilter per kategori", "guidedConfig": "Konfiguration", "guidedConfigDesc": "Justera hur RTK filtrerar din terminalutgång", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Max antal rader", + "maxChars": "Max antal tecken", "deduplicateThreshold": "Deduplicerad tröskel", "customFilters": "Anpassade filter", "detectedType": "Upptäckt typ", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Misslyckanden", "rawOutputAlways": "Alltid", "rawOutputMaxBytes": "Raw output max byte", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Filtertestning", + "pasteOutput": "Klistra in verktygsutdata för att testa filtrering...", "presetHigh": "Aggressiv", "presetLow": "Ljus", "presetMaxChars": "Max utdatatecken", "presetMaxLines": "Max utgångslinjer", "presetMedium": "Standard", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Kör", + "result": "Resultat", + "previewEmpty": "Kör ett exempel för att förhandsgranska RTK-utdata.", + "detected": "Identifierat", "masterSwitchOffAlert": "Huvudströmbrytaren för Token Saver är AV — dessa inställningar påverkar inte anrop förrän du slår på den från Endpoint-sidan.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Filtrerade token", + "filtersActive": "Aktiva filter", + "requests": "Förfrågningar", + "avgSavings": "Genomsnittlig besparing", "simpleMode": "Enkelt", "advancedMode": "Avancerat", "searchFilters": "Sökfilter...", @@ -8481,7 +8488,7 @@ "savings": "Besparingar", "original": "Original", "compressed": "Komprimerad", - "diff": "Diff", + "diff": "Skillnad", "last7Days": "Senaste 7 dagarna", "noDataYet": "Inga data ännu", "runs": "Körningar", @@ -8602,7 +8609,7 @@ }, "intensity": { "lite": "Lite", - "full": "Full", + "full": "Fullständig", "ultra": "Ultra" } }, @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Komprimeringskombinationer", + "description": "Definiera hur motorer kombineras för olika routningsscenarier.", + "createCombo": "Skapa komprimeringskombination", + "editCombo": "Redigera", + "deleteCombo": "Ta bort", + "deleteConfirm": "Vill du ta bort den här komprimeringskombinationen?", + "pipeline": "Bearbetningskedja", + "addStep": "Lägg till steg", + "removeStep": "Ta bort", + "name": "Namn", + "descriptionField": "Beskrivning", + "languagePacks": "Språkpaket", + "outputMode": "Utdataläge", + "assignToRouting": "Tilldela till routningskombinationer", + "noAssignments": "Inga routningskombinationer tillgängliga", + "default": "Standard", + "setAsDefault": "Ange som standard", + "save": "Spara", + "cancel": "Avbryt", + "enabled": "Aktiverad", "loading": "Laddar…", "hubTitle": "Komprimeringscenter", "hubDescription": "Välj vilken komprimeringsprofil som körs globalt.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "För närvarande endast tillgängligt för Claude (Anthropic). Det är ett delegerat läge: leverantören rensar gamla verktygsanvändningsblock på serversidan — vi skriver inte om meddelandet. Det påverkar inte andra leverantörer.", "namedCombos": "Namngivna kombinationer", "namedCombosDescription": "Spara olika pipelines och tilldela dem till specifika dirigeringskombinationer.", + "activeProfileMasterSwitchOffWarning": "Den aktiva profilen nedan körs inte förrän huvudreglaget \"Prompt Compression\" har aktiverats.", + "activeProfileMasterSwitchOffCta": "Aktivera det i Inställningar", "comboNamePlaceholder": "Kombinationsnamn", "descriptionPlaceholder": "Beskrivning", "nameRequired": "Ange ett kombinationsnamn innan du sparar.", @@ -8668,21 +8677,19 @@ "saveComboFailed": "Misslyckades med att spara kombinationen (HTTP {status}).", "deleteNamedConfirm": "Ta bort kombinationen ”{name}”?", "intensityLite": "Lite", - "intensityFull": "Full", + "intensityFull": "Fullständig", "intensityUltra": "Ultra", "active": "Aktiv", "languagePacksList": "Språkpaket: {packs}", "dragToReorder": "Dra för att ändra ordning på steg", "engine": "Motor", - "intensity": "Intensitet", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Intensitet" }, "compressionStudio": { "noRun": "Ingen komprimeringskörning tillgänglig.", "liveDataHint": "Live-data anländer via WebSocket-komprimeringskanalen.", "cockpitView": "Cockpit-vy", - "canvas": "Canvas", + "canvas": "Arbetsyta", "waterfall": "Vattenfall", "replayDone": "Uppspelning klar", "pauseReplay": "Pausa uppspelning", @@ -8691,7 +8698,7 @@ "replay": "Spela upp", "resetReplay": "Återställ uppspelning", "stepProgress": "steg {current}/{total}", - "inlineView": "Inline", + "inlineView": "Infogad", "splitComingSoon": "Delad vy (kommer snart)", "inputPlaceholder": "Klistra in en prompt, verktygsutdata eller kontext…", "activeCombined": "Aktiv i det kombinerade flödet", @@ -8705,7 +8712,7 @@ "run": "Kör", "laneRejected": "avvisad: {reason}", "error": "fel", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Förhandsvisningen av den kombinerade pipelinen misslyckades: {reason}", "combinedFlow": "Kombinerat flöde", "eachLayer": "Varje lager separat", "diff": "Skillnad", @@ -8713,7 +8720,7 @@ "skipped": "hoppa över", "input": "INDATA", "output": "UTDATA", - "tokenCount": "{count, number} tokens", + "tokenCount": "{count, number} token", "tokenShort": "tok", "provider": "Leverantör", "judgeModel": "Bedömningsmodell", @@ -8727,7 +8734,7 @@ "loadAb": "Läs in A/B", "engine": "Motor", "savings": "Besparingar", - "retention": "Retention", + "retention": "Bevarande", "outputTokensShort": "Utdatatokens", "fidelity": "Återgivning", "playTab": "Spela", @@ -8736,7 +8743,7 @@ "encoderWinner": "vinnare: {winner}", "encoder": "kodare", "bytes": "byte", - "tokensCl100k": "tokens (cl100k)" + "tokensCl100k": "token (cl100k)" }, "omniglyph": { "preview": "Förhandsgranskning", @@ -8751,7 +8758,7 @@ "beforeAfterTitle": "Före → efter", "blockSavings": "−{percent}% tokens på detta block", "realRender": "En verklig rendering av {characters, number} tecken tät verktygsdokumentation — inte en mockup.", - "textTokens": "Text · ≈ {tokens, number} tokens", + "textTokens": "Text · ≈ {tokens, number} token", "renderedTokens": "Renderad sida · ≈ {tokens, number} tokens", "renderedImageAlt": "Renderad tät sida, {width}×{height}px", "gatesTitle": "När den aktiveras", @@ -8763,7 +8770,7 @@ "why": "Endast Fable 5 läser täta sidor med 100% noggrannhet (uppmätt, n=30). GPT-5.5 och Gemini 2.5 Flash blockeras." }, "transport": { - "label": "Transport", + "label": "Överföring", "pass": "direkt Anthropic", "why": "Aggregatorer samplar om bilder och förstör läsbarheten — endast den direkta rutten är auktoritativ." }, @@ -8780,27 +8787,27 @@ }, "enableTitle": "Aktivera motorn", "enableDescription": "Körs sist i stacken (efter att RTK/Caveman rensar texten konverterar OmniGlyph resten till bilder) och körs även fristående via omniglyph-läge. Detta är en förhandsgranskning och förblir inaktiverad som standard tills end-to-end-valideringen är slutförd.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Komprimeringsprofil", + "profileDescription": "Profilen är ett tak, inte ett golv: en striktare profil kan inte öppnas upp igen med en åsidosättning för ett enskilt steg. Uppmätt på denna kodbas: med kodsäker eller balanserad komprimeras ingenting i en session som ännu inte har samlat på sig historik, eftersom båda höjer tröskeln för minsta antal tecken och behåller systemprompten, verktygsschemana och verktygsresultaten i ursprungligt format.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Aggressiv (standard)", + "description": "Policyn som användes för de publicerade mätresultaten. Avbildar systemprompten, verktygsdokumentationen och omfattande historik." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Balanserad", + "description": "Behåller aktivt tillstånd i ursprungligt format och skyddar de senaste 8 turerna; komprimerar endast äldre, avslutad historik." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Kodsäker", + "description": "Behåller behörighetsinstruktioner, verktygsscheman och aktiva verktygsutdata i ursprungligt format och skyddar de senaste 12 turerna. Komprimerar ingenting förrän sessionen har samlat på sig historik." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Genomströmning", + "description": "Dirigerar utan omvandling. Motorn hoppas över och begäran vidarebefordras oförändrad." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Välj komprimeringsprofil för OmniGlyph", "saved": "Sparat.", "saveFailed": "Kunde inte spara.", "enableAria": "Aktivera OmniGlyph-motorn", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Regelbaserad meddelandekomprimering, språkpaket, analys och kontroller för utdataläge.", "advancedConfig": "Avancerad konfiguration", "advancedConfigDesc": "Finjustera kompressionsbeteendet", "aggressiveSettings": "Aggressiva inställningar", "aggressiveSettingsDesc": "Maximal komprimering med potentiella kvalitetsavvägningar", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Begäranden", + "tokensSaved": "Sparade token", + "savingsPercent": "Besparing i %", + "avgLatency": "Genomsnittlig latens", + "languagePacks": "Språkpaket", + "languagePacksDesc": "Aktivera komprimeringsregler för specifika språk.", "labelAutoTrigger": "Autokomprimera när sammanhanget överskrider", "labelCompressionRate": "Kompressionsstyrka", "labelMaxTokens": "Rikta tokens per meddelande", "labelMinLength": "Minsta meddelandelängd", "labelMinSavings": "Minsta tokens att spara", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Aktiverad", + "autoDetect": "Identifiera språk automatiskt", + "rulesCount": "{count} regler", "inputCompressionTitle": "Indatakomprimering", "inputCompressionDesc": "Skriv om chatthistoriken med kortare formuleringar. Minskar indatatokens med ~50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Komprimeringsanalys", + "noAnalytics": "Ingen komprimeringsanalys ännu.", "masterDisabledWarning": "Huvudströmbrytaren för Token Saver är AV — dessa inställningar påverkar inte förfrågningar förrän du slår på den från Komprimeringsinställningar eller ändrar den här.", "outputMode": "Utgångsläge", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Utdataläge", "quickSettings": "Snabbinställningar", "quickSettingsDesc": "Grundläggande komprimeringsinställningar för att komma igång", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Automatisk förbikoppling för tydlighet", + "bypassConditions": "Villkor för förbikoppling", "bypassConditionsList": "säkerhet, oåterkallelig, förtydligande, orderkänslig", "simpleMode": "Enkelt", "advancedMode": "Avancerat", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ultrainställningar", "ultraSettingsDesc": "SLM-driven semantisk komprimering", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Svara kortfattat. Bevara tekniska termer, kod, fel, URL:er och identifierare.", + "full": "Svara koncist och kompakt. Bevara allt tekniskt innehåll.", + "ultra": "Svara extremt kortfattat med vanliga tekniska förkortningar. Bevara exakta symboler." } }, "translator": { @@ -8958,7 +8965,7 @@ "realtime": "Översättningsaktivitet i realtid", "chatTester": "Chattestare", "testBench": "Testbänk", - "liveMonitor": "Live Monitor", + "liveMonitor": "Liveövervakning", "modeDescriptionPlayground": "Klistra in valfri API-begäran och se hur OmniRoute översätter den mellan leverantörsformat (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", "modeDescriptionChatTester": "Skicka riktiga chattförfrågningar via OmniRoute och inspektera hela tur och retur: indata, översatt begäran, leverantörssvar och översatt utdata.", "modeDescriptionTestBench": "Kör fördefinierade scenarier och jämför kompatibilitet mellan leverantörer och modeller.", @@ -8993,7 +9000,7 @@ "translationPathHubSpoke": "{source} → OpenAI (mellanliggande) → {target}", "translationPathDirect": "{source} → {target} (direktöversättare)", "translationPathPassthrough": "Samma format – ingen översättning behövs", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "OpenAI-mellanformat", "autoFeaturesTitle": "Vad OmniRoute gör automatiskt", "autoFeaturesCount": "8 funktioner", "featureReasoningCache": "Resonerande Cache", @@ -9004,7 +9011,7 @@ "featureRoleNormalizationDesc": "Kartutvecklare→system för icke-OpenAI-mål. Maps system→användare för modeller som inte stöder systemrollen.", "featureToolCallIds": "Verktyg Call ID Normalization", "featureToolCallIdsDesc": "Genererar unika tool_call-ID när de saknas. Normaliseras till formatet 9 tecken för leverantörer som Mistral.", - "featureMissingToolResponse": "Tool Response Injection", + "featureMissingToolResponse": "Injicering av verktygssvar", "featureMissingToolResponseDesc": "Injicerar tomma tool_result-meddelanden när klienter skickar tool_calls utan motsvarande svar.", "featureThinkingBudget": "Tänkande budget", "featureThinkingBudgetDesc": "Hanterar automatiskt tankekonfiguration. Tar bort tankeparametrar när det sista meddelandet inte kommer från användaren.", @@ -9039,15 +9046,15 @@ "scenarioMultiTurn": "Flervarv", "scenarioThinking": "Tänker", "scenarioSystemPrompt": "Systemprompt", - "scenarioStreaming": "Streaming", + "scenarioStreaming": "Strömning", "templateNames": { "simple-chat": "Enkel chatt", "tool-calling": "Verktygsanrop", "multi-turn": "Flervarv", "thinking": "Tänker", "system-prompt": "Systemprompt", - "streaming": "Streaming", - "vision": "Vision", + "streaming": "Strömning", + "vision": "Bildanalys", "schema-coercion": "Schema tvång" }, "templateDescriptions": { @@ -9101,7 +9108,7 @@ "anthropicCompatibleLabel": "Antropisk kompatibel", "noTemplateForFormat": "Ingen mall för detta format", "translationFailed": "Översättning misslyckades: {error}", - "pipelineDebugger": "Pipeline Debugger", + "pipelineDebugger": "Pipeline-felsökare", "translationPipeline": "Översättning pipeline", "loading": "Läser in…", "compressionOriginal": "Original", @@ -9130,7 +9137,7 @@ "clientRequestDescription": "Begäran som din klient skulle skicka den", "formatDetected": "Format upptäckt", "formatDetectedDescription": "OmniRoute upptäcker automatiskt API-formatet från förfrågningsstrukturen", - "openaiIntermediate": "OpenAI Intermediate", + "openaiIntermediate": "OpenAI-mellanformat", "openaiIntermediateDescription": "Alla format normaliseras först till OpenAI-format (den universella bryggan)", "providerFormat": "Leverantörsformat", "providerFormatDescription": "OpenAI-formatet översätts till leverantörens ursprungliga format", @@ -9157,7 +9164,7 @@ "loadToolSample": "Ladda verktyg-anropsexempel", "transformToResponses": "Förvandla till svar", "rawChatSseInput": "Rå chattavslut SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "Transformerat Responses API SSE", "noResultsYet": "Inga resultat ännu", "transformedEvents": "Förvandlade händelser", "uniqueEventTypes": "Unika händelsetyper", @@ -9170,7 +9177,7 @@ "comboRouted": "Combo dirigerad", "uniqueEndpoints": "Unika slutpunkter", "routeDetails": "Ruttdetaljer", - "comboBadge": "Combo", + "comboBadge": "Kombination", "routeEndpointLabel": "Slutpunkt", "routeConnectionLabel": "Anslutning", "scenarioVision": "Vision (bildförståelse)", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Klistra in en JSON-begäran; formatet identifieras automatiskt.", "advancedPipelineTitle": "OpenAI mellanliggande pipeline", "advancedPipelineSubtitle": "Visualisera varje översättningssteg (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Strömtransformerare (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Konverterar Chat Completions SSE till Responses API.", "advancedTestBenchTitle": "Testbänk (8 scenarier)", "advancedTestBenchSubtitle": "Kör alla scenarier och rapporterar godkänd/misslyckad + kompatibilitets-%.", @@ -9250,10 +9257,10 @@ "compressionPreviewButton": "Förhandsgranska komprimering", "compressionPreviewing": "Förhandsgranskar…", "compressionPreviewFailed": "Förhandsgranskning av komprimering misslyckades", - "tokens": "tokens", + "tokens": "token", "pauseAutoRefresh": "Pausa automatisk uppdatering", "resumeAutoRefresh": "Återuppta automatisk uppdatering", - "live": "Live", + "live": "Direkt", "copyInput": "Kopiera indata", "copyOutput": "Kopiera utdata", "streamTransformFailed": "Misslyckades med att transformera strömmen" @@ -9277,17 +9284,17 @@ "kiloPassRemaining": "Återstående", "kiloPassRenews": "Förnyas om {count} dagar", "kiloPassUsageLabel": "Denna månads användning", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Extra användningskrediter", + "kimiExtraUsage": "Extra användning", + "kimiExtraUsageEnabled": "Aktiverad", + "kimiExtraUsageDisabled": "Inaktiverad", + "kimiExtraUsageFrozen": "Fryst", + "kimiExtraUsageUnavailable": "Ej tillgänglig", + "kimiMonthlyUsed": "Använt den här månaden", + "kimiMonthlyLimit": "Månadsgräns", + "kimiMonthlyLimitUnlimited": "Obegränsat", + "kimiAdditionalCredits": "Ytterligare krediter", + "loggerTab": "Loggning", "proxyTab": "Proxy", "budgetManagement": "Budgethantering", "budgetSaved": "Budgetgränser sparade", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Strömbrytare", "lockedIPs": "Låsta IP-adresser", "lockoutsAutoRefreshHint": "Lås för hastighetsgräns per modell • Automatisk uppdatering 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# låst} other {# låsta}}", "timeLeft": "{time} kvar", "howItWorks": "Hur det fungerar", "howItWorksSubtitle": "Lär dig hur utvärderingar validerar dina LLM-svar", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "Svar jämförs mot förväntade kriterier. Se godkänt/underkänt för varje fall med latensstatistik och detaljerad feedback.", "evalsStrategyContainsLabel": "Innehåller", "evalsStrategyExactLabel": "Exakt matchning", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Reguljärt uttryck", "evalsStrategyCustomLabel": "Anpassad logik", "evalsStrategyContainsDescription": "Kontrollerar om LLM-utdata innehåller den förväntade delsträngen.", "evalsStrategyExactDescription": "Kontrollerar om LLM-utdata exakt matchar det förväntade värdet.", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Modeller under test", "searchSuitesPlaceholder": "Sök efter sviter...", "passSuffix": "passera", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# fall} other {# fall}}", "runEval": "Kör Eval", "runAllSuites": "Kör alla", "runAllRunning": "Kör alla...", "runAllProgress": "Kör {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# testsvit misslyckades} other {# testsviter misslyckades}}", "runAllCompleted": "Körde {suites} sviter — {passed} godkändes, {failed} misslyckades", "runAllCompletedWithFailures": "Körde {completed} sviter; {failedSuites} kunde inte slutföras", "runningProgress": "Kör {current}/{total}...", @@ -9397,13 +9404,13 @@ "notifyAllCasesPassed": "Alla {total} fall godkändes ✅", "notifySomeCasesFailed": "{passed}/{total} godkänd, {failed} misslyckades", "notifyEvalRunFailed": "Evalkörningen misslyckades", - "notifyEvalTitle": "Eval: {name}", + "notifyEvalTitle": "Utvärdering: {name}", "modelEvals": "Modellutvärderingar", "evalsHeroDescription": "Testa och validera dina LLM-slutpunkter genom att köra fördefinierade utvärderingssviter. Varje svit innehåller testfall som skickar riktiga uppmaningar genom OmniRoute och jämför svar mot förväntade kriterier – vilket hjälper dig att upptäcka regressioner, jämföra modeller och säkerställa svarskvalitet mellan leverantörer.", "qualityValidation": "Kvalitetsvalidering", "modelComparison": "Modelljämförelse", "regressionDetection": "Regressionsdetektering", - "latencyBenchmarks": "Latency Benchmarks", + "latencyBenchmarks": "Prestandatester för svarstid", "modelLockouts": "Modell Lockouter", "noLockouts": "Inga modeller är för närvarande låsta", "activeSessions": "Aktiva sessioner", @@ -9423,7 +9430,7 @@ "providerLimits": "Leverantörsgränser", "noProviders": "Inga leverantörer anslutna", "connectProvidersForQuota": "Anslut till leverantörer med OAuth för att spåra dina API-kvotgränser och användning.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# konto} other {# konton}}", "filteredFromCount": "(filtrerad från {count})", "autoRefresh": "Automatisk uppdatering", "refreshAll": "Uppdatera alla", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Misslyckades med att uppdatera kvotens synlighet", "account": "konto", "modelQuotas": "Modellkvoter", - "lastUsed": "Last Refreshed", + "lastUsed": "Senast uppdaterad", "actions": "Åtgärder", "refreshQuota": "Uppdatera kvoten", "today": "Idag", @@ -9452,15 +9459,15 @@ "cardExpand": "Expandera", "cardCollapse": "Fäll ihop", "moreQuotas": "+{count} fler", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "Ogrupperade", + "viewFlat": "Platt", + "viewByEnvironment": "Efter miljö", "noQuotaDataAvailable": "Inga kvotdata tillgängliga", "noAccountsForTierFilter": "Inga konton hittades för nivåfilter", "tierAll": "Alla", "tierEnterprise": "Företag", "tierTeam": "Team", - "tierBusiness": "Business", + "tierBusiness": "Företag", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", @@ -9475,7 +9482,7 @@ "filterTierLabel": "Nivå", "purchaseAll": "Alla", "purchaseOauthSub": "Prenumeration", - "purchaseOauthFree": "OAuth Free", + "purchaseOauthFree": "OAuth Gratis", "purchaseApiKey": "API-nyckel", "creditsLabel": "Krediter", "creditBalanceHint": "Återstående saldo", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Lös in kredit", "resetCreditRedeemed": "Återställ inlösta", "resetCreditRedeemFailed": "Misslyckades med att lösa in återställningskredit", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Det gick inte att spara testsviten", "clone": "Klona", "exportSuite": "Exportera", "importSuite": "Importera", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Ogiltig eval suite JSON", "suiteBuilderCloneSuffix": "kopia", "suiteBuilderImportedSuite": "Importerad svit", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Resultatkort", + "evalApiKey": "API-nyckel", + "scorecardPassRate": "Andel godkända", + "targetTypeModel": "Modell", + "actualOutputLabel": "Faktiskt resultat", + "evalTargetHint": "Välj en modell eller kombination att utvärdera.", + "suiteBuilderDeleted": "Testsviten har tagits bort", + "suiteBuilderCaseCardHint": "Definiera indataprompten och kriterierna för förväntat resultat.", + "nextResetUtc": "Nästa återställning (UTC)", + "scorecardHint": "Sammanställd andel godkända för alla utvärderingssviter.", + "suiteLatestRunsHint": "De senaste utvärderingskörningarna för den här sviten.", + "saving": "Sparar", + "suiteBuilderCaseModelLabel": "Modell (valfritt)", + "evalControlsTitle": "Utvärderingskontroller", + "suiteBuilderEditTitle": "Redigera utvärderingssvit", + "suiteBuilderCaseStrategyLabel": "Valideringsstrategi", + "notifySelectDifferentCompareTarget": "Välj ett annat mål för jämförelsen", + "recentRunsHint": "Visar de senaste utvärderingskörningarna. Klicka på en körning för att se detaljerade resultat.", + "evalCompareHint": "Jämför valfritt resultaten med ett andra mål.", + "suiteBuilderCaseInvalid": "Det här fallet har valideringsfel. Åtgärda dem innan du sparar.", + "historyEmpty": "Ingen utvärderingshistorik ännu", + "suiteBuilderUpdated": "Sviten har uppdaterats", + "resetInterval": "Återställningsintervall", + "suiteBuilderCreateTitle": "Skapa utvärderingssvit", + "activePeriodSpend": "Utgifter under aktiv period", + "evalApiKeyHint": "Välj vilken API-nyckel som ska användas för utvärderingsförfrågningar.", + "evalCompareOptional": "Jämför (valfritt)", + "suiteBuilderDeleteFailed": "Det gick inte att ta bort sviten", + "suiteBuilderCaseSystemPromptPlaceholder": "Valfria systeminstruktioner...", + "scorecardCases": "Fall", + "runCompletedWithScore": "Utvärderingen slutfördes — {score} % godkända", + "suiteBuilderCustomBadge": "Anpassad", + "targetSuiteDefaults": "Standardinställningar för sviten", + "suiteBuilderDeleteConfirm": "Är du säker på att du vill ta bort den här sviten? Åtgärden kan inte ångras.", + "suiteBuilderNameLabel": "Svitnamn", + "scorecardSuites": "Sviter", + "evalCompareTarget": "Jämförelsemål", + "suiteBuilderCaseModelPlaceholder": "t.ex. gpt-4o-mini", + "evalControlsHint": "Konfigurera ditt utvärderingsmål och din API-nyckel och kör sedan sviter för att validera modellkvaliteten.", + "recentRunsTitle": "Senaste körningar", + "suiteBuilderCaseSystemPromptLabel": "Systemprompt", + "suiteBuilderCaseExpectedPlaceholder": "t.ex. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "t.ex. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Klistra in det exakta förväntade svaret", "suiteBuilderCaseExpectedPlaceholderRegex": "t.ex. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Använd ett reguljärt JavaScript-uttryck utan att radbryta snedstreck.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "t.ex. svit för kodkvalitet", + "suiteBuilderAddCase": "Lägg till fall", + "cancel": "Avbryt", + "evalTarget": "Mål", + "suiteBuilderCaseNameLabel": "Fallnamn", + "weeklyLimitUsd": "Veckogräns (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "t.ex. Skriv en fibonacci-funktion i Python", + "suiteBuilderNameRequired": "Svitnamn krävs", + "suiteBuilderCaseUserPromptLabel": "Användarprompt", + "daily": "Dagligen", + "resultErrorLabel": "Fel", + "suiteBuilderBuiltInBadge": "Inbyggd", + "suiteBuilderCaseCardTitle": "Testfall", "suiteBuilderDuplicateCase": "Duplicera", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "t.ex. 50.00", + "suiteBuilderCaseTagsHint": "Kommaseparerade taggar för att organisera testfall.", + "notifyEvalRunFailedWithReason": "Utvärderingen misslyckades: {reason}", + "weekly": "Varje vecka", + "runEvalRunning": "Kör utvärdering...", + "delete": "Ta bort", + "resetTimeUtc": "Återställningstid (UTC)", + "evalApiKeyAuto": "Automatiskt (använd standardvärde)", + "suiteBuilderDescriptionPlaceholder": "Valfri beskrivning av vad den här testsviten testar...", + "targetComparisonTitle": "Måljämförelse", + "save": "Spara", + "suiteBuilderCreated": "Testsviten har skapats", + "suiteLatestRuns": "Senaste körningar", + "suiteBuilderCaseExpectedLabel": "Förväntat värde", + "historyLatency": "Latens", + "suiteBuilderCaseTagsPlaceholder": "t.ex. kodning, python", + "targetTypeCombo": "Kombination", + "scorecardPassed": "Godkänd", + "suiteBuilderCaseTagsLabel": "Taggar", + "suiteBuilderNewSuite": "Ny testsvit", + "notifyEvalLoadFailed": "Det gick inte att läsa in utvärderingsdata", + "notConfigured": "Inte konfigurerad", + "suiteBuilderCaseNamePlaceholder": "t.ex. Fibonacci-test i Python", + "intervalLabel": "Intervall", + "suiteBuilderCreateAction": "Skapa testsvit", + "suiteBuilderCasesHint": "Varje testfall skickar en prompt och validerar svaret.", + "suiteBuilderUpdatedAt": "Uppdaterad", + "errorBadge": "Fel", + "suiteBuilderCasesTitle": "Testfall", + "edit": "Redigera", + "monthly": "Varje månad", + "suiteBuilderCasesRequired": "Minst ett testfall krävs", + "weeklyLimitSummary": "Sammanfattning av veckans budgetgräns", + "suiteBuilderDescriptionLabel": "Beskrivning", + "targetComparisonHint": "Jämförelse sida vid sida av utvärderingsresultat mellan mål.", + "compareCompletedWithScore": "Jämförelsen är slutförd – {score} % godkända", + "staleQuotaTooltip": "Den senaste uppdateringen misslyckades – cachelagrade data visas", "quotaThresholdLabel": "Min kvar", "quotaCutoffsColumnHelp": "Stoppa förfrågningar när återstående kvot faller till denna procentandel eller lägre.", "quotaCutoffsButtonDefault": "Standard", @@ -9745,18 +9752,18 @@ "proxy": "Proxy", "level": "Nivå", "directNative": "Direkt (infödd)", - "combo": "Combo", + "combo": "Kombination", "inputTokens": "jag:", "outputTokens": "O:" }, "stats": { "usageOverview": "Användningsöversikt", - "outputTokens": "Output Tokens", + "outputTokens": "Utdata-token", "totalCost": "Total kostnad", "usageByModel": "Användning efter modell", "usageByAccount": "Användning per konto", "failedToLoad": "Det gick inte att läsa in användningsstatistik.", - "tokenHealth": "Token Health", + "tokenHealth": "Tokenstatus", "totalOAuth": "Totalt OAuth", "healthy": "Frisk", "warning": "Varning", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Systemmetrik", "memory": "Minne", - "memoryShort": "mem", + "memoryShort": "minne", "uptime": "Drifttid", "ariaLabel": "Systemövervakning", "title": "Systemövervakning", @@ -9816,8 +9823,8 @@ "signIn": "Logga in", "enterPassword": "Ange ditt lösenord för att fortsätta", "password": "Lösenord", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", + "unifiedProxy": "Enhetlig AI API-proxy", + "unifiedAiApiProxy": "Enhetlig AI API-proxy", "unifiedAiApiProxyDesc": "Dirigera förfrågningar till flera AI-leverantörer via en enda slutpunkt. Lastbalansering, failover och användningsspårning inbyggd.", "passwordNotEnabled": "Lösenordsskydd är inte aktiverat", "loading": "Laddar...", @@ -9863,7 +9870,7 @@ "backToLogin": "Tillbaka till inloggning", "forgotPassword": "Glömt lösenordet?", "continueWithOidc": "Fortsätt med OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Standardlösenord: CHANGEME (om inte INITIAL_PASSWORD har angetts)", "Authorization": "Auktorisation", "Content-Disposition": "Innehåll-Disposition", "waitingForAuthorization": "Väntar på auktorisation...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Väntar på antigravitationstillstånd...", "waitingForQoderAuthorization": "Väntar på Qoder-auktorisering...", "exchangingCodeForTokens": "Byter ut kod för tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Inkompatibel Node.js-version", + "nodeIncompatibleDesc": "Du kör Node.js {version}, som inte omfattas av OmniRoutes policy för säkra körningsmiljöer. Använd en korrigerad LTS-version av Node.js 20.x eller 22.x.", + "nodeIncompatibleFixLabel": "Åtgärd: installera en korrigerad LTS-version av Node.js 22", + "nodeIncompatibleHint": "OmniRoute kräver Node.js 22.22.2+ (22.x LTS) eller 24.0.0+ (24.x LTS). Node 24 LTS rekommenderas.", "resetViaAppDataTitle": "Återställ via App-data", "resetViaAppDataDescription": "Ta bort inställningsfilen från appdata-katalogen för att återställa ditt lösenord:", "quitDesktopApp": "Avsluta OmniRoute-skrivbordsappen helt", @@ -9943,7 +9950,7 @@ "viewOnGithub": "Visa på GitHub", "powerfulFeatures": "Kraftfulla funktioner", "featuresSubtitle": "Allt du behöver för att hantera din AI-infrastruktur på ett ställe, byggt för skala.", - "featureUnifiedEndpointTitle": "Unified Endpoint", + "featureUnifiedEndpointTitle": "Enhetlig slutpunkt", "featureUnifiedEndpointDesc": "Få tillgång till alla leverantörer via en enda standard API-URL.", "featureEasySetupTitle": "Enkel installation", "featureEasySetupDesc": "Kom igång på några minuter med npx-kommandot.", @@ -9955,7 +9962,7 @@ "featureOAuthApiKeysDesc": "Hantera autentiseringsuppgifter på ett säkert sätt i ett valv.", "featureCloudSyncTitle": "Molnsynkronisering", "featureCloudSyncDesc": "Synkronisera dina konfigurationer mellan enheter direkt.", - "featureCliSupportTitle": "CLI Support", + "featureCliSupportTitle": "CLI-stöd", "featureCliSupportDesc": "Fungerar med Claude Code, Codex, Cline, Cursor och mer.", "featureDashboardTitle": "Instrumentpanel", "featureDashboardDesc": "Visuell instrumentpanel för trafikanalys i realtid.", @@ -10033,8 +10040,8 @@ "clientCompatibility": "Klientkompatibilitet", "protocolsToc": "Protokoll", "apiReference": "API-referens", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Referens för hanterings-API", + "managementApiDescription": "Automatiseringsslutpunkter för proxyregister, tilldelning av omfång och migrering av äldre proxyservrar.", "method": "Metod", "path": "Väg", "notes": "Anteckningar", @@ -10064,7 +10071,7 @@ "quickStartStep4Suffix": "Använd till exempel leverantörsprefix", "deploySetupTitle": "Installationsguide", "deploySetupText": "Steg-för-steg-installation, miljökonfiguration och första genomgång för OmniRoute.", - "deployElectronTitle": "Electron Desktop", + "deployElectronTitle": "Electron-skrivbord", "deployElectronText": "Kör OmniRoute som ett inbyggt skrivbordsprogram på Windows, macOS och Linux.", "deployDockerTitle": "Hamnarbetare", "deployDockerText": "Containeriserad distribution med Docker Compose; redo för produktionsstackar och Kubernetes.", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "Installera OmniRoute som en progressiv webbapp på Android, iOS och stationära webbläsare.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Kör OmniRoute utan grafiskt gränssnitt på Android via Termux. Öppna kontrollpanelen från din mobila webbläsare.", "featureRoutingTitle": "Routing för flera leverantörer", "featureRoutingText": "Dirigera förfrågningar till 30+ AI-leverantörer via en enda OpenAI-kompatibel slutpunkt. Stöder chatt, svar, ljud och bild-API:er.", "featureCombosTitle": "Kombinationer och balansering", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "Använd OmniRoute som en stabil bas-URL medan du roterar konton eller leverantörskombinationer under.", "clientKimiBullet2": "Föredra prefixmodeller i kodningsflöden så att reserv- och revisionsspår förblir explicita.", "clientKimiBullet3": "Använd `/v1/responses` när du vill ha inbyggd routing i Responses-stil för klienter som använder verktyg.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "Protokoll: MCP och A2A", + "protocolsDescription": "OmniRoute tillhandahåller två operativa protokoll utöver OpenAI-kompatibla API:er: MCP för verktygskörning och A2A för arbetsflöden mellan agenter.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Använd MCP via stdio för att låta klienter identifiera och anropa OmniRoute-verktyg med granskningsinsyn.", + "protocolMcpStep1": "Starta MCP-transporten med `omniroute --mcp`.", + "protocolMcpStep2": "Konfigurera din MCP-klient att använda stdio-transporten.", + "protocolMcpStep3": "Anropa `omniroute_get_health` och `omniroute_list_combos` för att verifiera anslutningen.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "Använd A2A JSON-RPC för att skicka uppgifter synkront eller via SSE-strömning.", + "protocolA2aStep1": "Läs `/.well-known/agent.json` för agentidentifiering.", + "protocolA2aStep2": "Skicka `message/send`- eller `message/stream`-förfrågningar till `POST /a2a`.", + "protocolA2aStep3": "Hantera uppgifternas livscykel med `tasks/get` och `tasks/cancel`.", + "protocolTroubleshootingTitle": "Felsökning av protokoll", + "protocolTroubleshooting1": "Om MCP-statusen är offline kontrollerar du att stdio-processen körs och att heartbeat-filen uppdateras.", + "protocolTroubleshooting2": "Om A2A-uppgifter förblir i läget `working` granskar du `/api/a2a/tasks/:id` och strömmar händelser för att hitta sluttillståndet.", + "protocolTroubleshooting3": "Använd `/dashboard/mcp` och `/dashboard/a2a` för driftkontroller och granskningsinsyn.", "endpointChatNote": "OpenAI-kompatibel chattslutpunkt (standard).", "endpointResponsesNote": "Responses API-slutpunkt (Codex, o-serien).", "endpointModelsNote": "Modellkatalog för alla anslutna leverantörer.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Omskrivningshjälp för klienter utan /v1.", "endpointRewriteResponsesNote": "Skriv om hjälpare för svar utan /v1.", "endpointRewriteModelsNote": "Omskrivningshjälp för modellupptäckt utan /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Lista sparade proxyobjekt i registret (stöder sidnumrering).", + "mgmtProxiesCreateNote": "Skapa ett återanvändbart proxyobjekt i registret.", + "mgmtProxiesHealthNote": "Hämta 24-timmars/rullande hälsomätvärden per sparad proxy från proxyloggar.", + "mgmtProxiesBulkAssignNote": "Tilldela eller ta bort en proxy för flera omfångs-ID:n i en enda begäran.", + "mgmtAssignmentsListNote": "Lista proxytilldelningar efter omfång, scope_id eller proxy_id.", + "mgmtAssignmentsUpdateNote": "Tilldela eller ta bort proxy för globalt omfång, leverantörs-, konto- eller kombinationsomfång.", + "mgmtLegacyMigrationNote": "Importera äldre proxyConfig-mappningar till registertilldelningar.", "modelPrefixesDescriptionStart": "Använd leverantörsprefixet före modellnamnet för att dirigera till en specifik leverantör. Exempel:", "modelPrefixesDescriptionEnd": "rutter till GitHub Copilot.", "provider": "Leverantör", @@ -10201,7 +10208,7 @@ "mcpToolsDescription": "OmniRoute exponerar {count} verktyg via Model Context Protocol för agentorkestrering.", "mcpToolsCount": "{count} verktyg", "mcpToolsToc": "MCP-verktyg", - "mcpToolsRoutingTitle": "Routing & Discovery", + "mcpToolsRoutingTitle": "Routning och identifiering", "mcpToolsRoutingDesc": "Hälsokontroller, kombinationshantering, kvotövervakning, kostnadsrapportering och modellkatalogåtkomst.", "mcpToolsOperationsTitle": "Verksamhet & Strategi", "mcpToolsOperationsDesc": "Ruttsimulering, budgetvakter, strategibyte, resiliensprofiler och leverantörsmått.", @@ -10215,7 +10222,7 @@ "mcpToolsMemoryDesc": "Sök, lägg till och rensa beständiga konversationsminnesposter.", "mcpToolsSkillsTitle": "Färdigheter", "mcpToolsSkillsDesc": "Lista, aktivera, exekvera och övervaka anpassade färdighetskörningar.", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "Automatisk kombination", "featureAutoComboText": "Skapa automatiskt optimerade kombinationer baserat på dina anslutna leverantörer, användningsmönster och modellmöjligheter.", "featureSearchTitle": "Webbsökning", "featureSearchText": "Integrerad webbsökning med 5 leverantörer (Serper, Brave, Exa, Tavily, Perplexity) inklusive analys och kostnadsspårning.", @@ -10243,7 +10250,7 @@ "homeSearchHint": "Tryck på Ctrl K för att söka i dokumentationen", "featuredQuickStartTitle": "Snabbstart", "featuredQuickStartDescription": "Få OmniRoute att fungera på 3 minuter", - "featuredAutoComboTitle": "Auto-Combo Guide", + "featuredAutoComboTitle": "Guide för automatisk kombination", "featuredAutoComboDescription": "Låt OmniRoute välja den bästa AI:n för dig", "featuredProvidersTitle": "Leverantörsguide", "featuredProvidersDescription": "Anslut AI-leverantörer på några minuter", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute är programvara med öppen källkod. Du är fri att inspektera, modifiera och distribuera den enligt villkoren i dess licens." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI-agenter", + "description": "Identifiera installerade CLI-agenter på ditt system. Lägg till anpassade agenter för automatisk identifiering.", + "refresh": "Uppdatera", + "installed": "Installerad", + "notFound": "Hittades inte", + "builtIn": "Inbyggd", + "custom": "Anpassad", + "remove": "Ta bort", + "addCustomAgent": "Lägg till anpassad agent", + "addCustomAgentDesc": "Registrera valfritt CLI-verktyg för identifiering. Det genomsöks automatiskt vid uppdatering.", + "agentName": "Agentnamn", + "binaryName": "Binärfilens namn", + "versionCommand": "Versionskommando", + "spawnArgs": "Startargument", + "addAgent": "Lägg till agent", + "scanning": "Söker efter CLI-agenter i systemet...", + "opencodeIntegration": "OpenCode-integration", + "opencodeDetected": "opencode {version} identifierades", + "opencodeDesc": "Generera en färdig {configFile} med din OmniRoute-bas-URL och alla tillgängliga modeller – placera den i projektets rotkatalog och kör {command}.", + "downloadConfig": "Ladda ned {file}", + "downloaded": "Nedladdad!", + "setupGuideTitle": "Installationsguide", + "openCliTools": "Öppna CLI-verktyg", + "setupGuideDetectCliTitle": "Identifiera installerade CLI-verktyg", + "setupGuideDetectCliDesc": "Klicka på Uppdatera efter att du har installerat eller uppdaterat ett CLI-verktyg så att OmniRoute kan söka igenom binärfiler och versioner på nytt.", + "setupGuideCustomAgentTitle": "Registrera anpassad binärfil", + "setupGuideCustomAgentDesc": "Använd Lägg till anpassad agent när ditt CLI-verktyg inte finns i den inbyggda listan. Ange binärfilens namn och versionskommando.", + "setupGuideCommandMissingTitle": "Åtgärda ”command not found”", + "setupGuideCommandMissingDesc": "Kontrollera att CLI-kommandot finns i PATH, öppna en ny terminalsession och kör Uppdatera igen.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10391,7 +10398,7 @@ "flowDiagramClientDesc": "SDK, API eller uppströmstjänst", "flowDiagramOmniRoute": "OmniRoute", "flowDiagramOmniRouteDesc": "Tar emot begäran och väljer mål", - "flowDiagramSpawn": "Spawn Process", + "flowDiagramSpawn": "Starta process", "flowDiagramSpawnDesc": "Startar CLI binär via stdio", "flowDiagramCli": "CLI-agent", "flowDiagramCliDesc": "Processer med egen auth/modell", @@ -10473,7 +10480,7 @@ "statusFailed": "Misslyckades", "statusCancelled": "Avbruten", "repositoryName": "Förvaringsnamn", - "repositoryUrl": "Repository URL", + "repositoryUrl": "Repository-URL", "branch": "Filial", "agentDescriptions": { "jules": "Googles autonoma kodningsagent", @@ -10492,12 +10499,12 @@ }, "templateNames": { "simple-chat": "Enkel chatt", - "streaming": "Streaming", + "streaming": "Strömning", "system-prompt": "Systemprompt", "thinking": "Tänker", "tool-calling": "Verktygsanrop", "multi-turn": "Flervarv", - "vision": "Vision", + "vision": "Bildanalys", "schema-coercion": "Schema tvång" }, "templateDescriptions": { @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Cachehantering", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Uppdatera", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Minnesposter", + "memoryEntriesSub": "LRU i minnet", + "dbEntries": "Databasposter", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Cacheträffar", + "cacheHitsSub": "av totalt {total}", + "tokensSaved": "Sparade token", + "tokensSavedSub": "Uppskattat från träffar", + "hitRate": "Träfffrekvens", + "performance": "Cacheprestanda", + "autoRefresh": "Uppdateras automatiskt var {seconds}:e sekund", + "hits": "Träffar", + "misses": "Missar", + "total": "Totalt", + "behavior": "Cachebeteende", + "behaviorDeterministic": "Endast icke-strömmande begäranden med temperature=0 cachelagras.", + "behaviorBypass": "Kringgå med headern {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "Standard-TTL: 30 minuter. Konfigurera via {envVar}.", + "idempotency": "Idempotenslager", + "activeDedupKeys": "Aktiva dedupliceringsnycklar", + "dedupWindow": "Dedupliceringsfönster", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Det gick inte att rensa cachen.", + "unavailable": "Cachen är inte tillgänglig", + "unavailableDesc": "Det gick inte att hämta cachestatistik. Kontrollera att servern körs.", "loadingCacheAria": "Laddar cache", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Promptcache (hos leverantören)", + "semanticCache": "Semantisk cache", + "promptCacheSectionDesc": "Visar aktivitet för promptcachelagring hos leverantören från användningshistoriken, så att du kan se var cachestyrning är aktiv och hur mycket indata som återanvänds.", + "promptTrendDesc": "Begärandevolym per timme, cachetäckning och läsvolym från cachen under de senaste 24 timmarna.", + "cachedRequests": "Cachelagrade begäranden", + "cachedRequests24h": "Cachelagrade begäranden (24 h)", + "cacheHitRate": "Cacheträfffrekvens", + "cacheRate": "Cachefrekvens", + "cacheRateDesc": "av det totala antalet begäranden", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Mätvärden för promptcache", + "withCacheControl": "Med cachekontroll", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Återanvändningsgrad för cache", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", + "estCostSaved": "Uppskattad kostnadsbesparing", + "lastUpdated": "Senast uppdaterad", + "hoursTracked": "spårade timmar", + "busiestHour": "Mest aktiva timme", + "peakCacheRate": "Högsta cachefrekvens", + "trendHour": "Timme", + "activityVolume": "Aktivitet", + "requestsShort": "förfrågningar", "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "cachedShort": "Cachelagrat", + "writeShort": "Skrivning", + "resetting": "Återställer...", + "resetMetrics": "Återställ mätvärden", + "byProvider": "Fördelning per leverantör", + "providerCacheRateDesc": "Varje leverantör visar totalt antal indatatoken, cachelästa token och cacheskrivna token så att du kan verifiera återanvändningsgraden mot de faktiska totalvärdena.", "provider": "Provider", - "requests": "Requests", + "requests": "Förfrågningar", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Cachetrend (24 h)", + "peakCached": "Högsta cachelagring", + "cached": "Cachelagrat", + "overview": "Översikt", "tableProvider": "Leverantör", "tableModel": "Modell", "performanceTitle": "Prestanda", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoutes egen deterministiska svarscache. När den är aktiverad kan upprepade icke-strömmande förfrågningar med temperature=0 hanteras lokalt utan att den överordnade leverantören kontaktas.", + "semanticCacheDisabledDesc": "Semantisk cache är inaktiverad. OmniRoute hoppar över lokal återanvändning av svar tills du aktiverar den igen i Inställningar.", + "semanticEntriesDesc": "Beständiga semantiska cacheposter som för närvarande lagras i SQLite. Aktivitet i leverantörens promptcache visas inte här.", + "searchEntries": "Sök poster...", + "search": "Sök", + "loading": "Läser in...", + "entriesLoadError": "Det gick inte att läsa in poster i den semantiska cachen.", + "noEntries": "Inga cacheposter hittades", + "noPromptCacheData": "Ingen aktivitet i leverantörens promptcache har registrerats ännu.", + "noTrendData": "Ingen aktivitet i promptcachen har registrerats under de senaste 24 timmarna.", + "signature": "Signatur", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Skapad", + "expires": "Upphör", + "actions": "Åtgärder", + "deduplicatedRequests": "Deduplicerade förfrågningar", + "savedCalls": "Sparade API-anrop", + "totalProcessed": "Totalt antal behandlade förfrågningar", + "disabled": "Inaktiverad", + "totalRequests": "Totalt antal förfrågningar", "reasoningCache": "Resonemang Replay", "reasoningCacheDesc": "Bevarar modelltänkande för verktygsanropsflöden med flera varv", "reasoningEntries": "Aktiva poster", @@ -10669,16 +10676,16 @@ "minutesAgo": "{minutes}m sedan", "hoursAgo": "{hours}t sedan", "daysAgo": "{days}d sedan", - "entries": "Entries" + "entries": "Poster" }, "proxyConfigModal": { "levelGlobal": "Global", "levelProvider": "Leverantör", - "levelCombo": "Combo", + "levelCombo": "Kombination", "levelKey": "Nyckel", "levelDirect": "Direkt (ingen proxy)", "titleGlobal": "Global proxykonfiguration", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "{level}-proxy — {label}", "loading": "Laddar proxykonfiguration...", "inheritingFrom": "Ärver från", "source": "Källa", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Anslut Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Logga in med Cursor", + "tabImport": "Importera token", + "loginDescription": "Öppnar Cursors webbläsarinloggning. Fungerar i Docker — godkänn i webbläsaren på din värddator och återvänd sedan hit.", + "loginWithCursor": "Logga in med Cursor", + "startingLogin": "Startar…", + "waitingApproval": "Väntar på godkännande av Cursor-inloggningen…", + "openUrlHint": "Om webbläsaren inte öppnades:", + "openLoginLink": "Öppna inloggningssidan", + "cancelLogin": "Avbryt inloggning", "autoDetecting": "Identifierar tokens automatiskt...", "readingFromCursor": "Läser från Cursor IDE eller cursor-agent", "tokensAutoDetected": "Tokens har framgångsrikt identifierats automatiskt från Cursor IDE!", "cursorNotDetected": "Markör-IDE upptäcktes inte. Vänligen klistra in din token manuellt.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Kör du i Docker? Använd helst Logga in med Cursor. Automatisk import från IDE och cursor-agent är vanligtvis inte tillgängliga inuti containern. Se docs/providers/CURSOR-DOCKER.md.", + "accessToken": "Åtkomsttoken", + "refreshToken": "Uppdateringstoken", + "refreshTokenPlaceholder": "Valfritt — aktiverar automatisk tokenuppdatering", "required": "*", "accessTokenPlaceholder": "Åtkomsttoken kommer att fyllas i automatiskt...", "machineId": "Maskin-ID", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Automatisk identifiering av tokens misslyckades", "errorEnterToken": "Vänligen ange åtkomsttoken", "errorImportFailed": "Importen misslyckades", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Det gick inte att starta Cursor-inloggningen", + "errorLoginPoll": "Cursor-inloggningen misslyckades", + "errorLoginTimeout": "Tidsgränsen för Cursor-inloggningen överskreds — försök igen" }, "pricingModal": { "title": "Priskonfiguration", @@ -10843,9 +10850,9 @@ "selectProxy": "Välj {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Importera äldre data", + "bulkAssign": "Masstilldela", + "addProxy": "Lägg till proxy", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,15 +10861,15 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Testa", + "edit": "Redigera", + "delete": "Ta bort", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", "labelType": "Typ", "labelFamily": "IP-familj", - "familyAuto": "Auto (dual-stack)", + "familyAuto": "Automatiskt (dual-stack)", "familyIpv4": "Endast IPv4", "familyIpv6": "Endast IPv6", "familyHint": "Utgående adressfamilj. Auto behåller dual-stack; IPv4/IPv6 låser denna proxy till den familjen (förhindrar en v4-läcka under en proxy med endast IPv6).", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Misslyckades", "successRate": "{rate} % framgång", "avgLatency": "{latency} ms i genomsnitt", "assignmentsCount": "{count} uppdrag", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Reparera", "relayAuthMissing": "autentisering saknas", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Rotationsstrategi", "poolStrategyHint": "round-robin växlar medlemmar i ordning; random väljer enhetligt; sticky behåller en medlem under ett tidsfönster; latency-optimized väljer den snabbaste baserat på loggar.", "poolStrategyFailed": "Misslyckades med att uppdatera rotationsstrategin", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Turordning", "strategyRandom": "Slumpmässig", - "strategySticky": "Sticky", + "strategySticky": "Beständig", "strategyLatency": "Latensoptimerad", "poolMembersLabel": "Poolmedlemmar ({count})", "poolNoMembers": "Inga proxyservrar i denna pool ännu.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# utgång} other {# utgångar}} används av {connections, plural, one {# anslutning} other {# anslutningar}} · upp till {max} på en utgång · senaste {hours} h", + "poolEgressObservationEmpty": "Ingen trafik observerades under de senaste {hours} h", + "poolEgressObservationHint": "Beräknat från proxyloggen under tidsfönstret: distinkta utgående IP-adresser som observerats för medlemmarna i denna pool samt de OmniRoute-anslutningar som använde dem. ”På en utgång” avser hela tidsfönstret, inte samma tidpunkt. 429-spärren per IP pausar endast anslutningar inom samma leverantörsfamilj.", "poolRemove": "Ta bort", "poolRemoveFailed": "Misslyckades med att ta bort proxyn från poolen", "poolAddLabel": "Lägg till en proxy", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Slutpunkt", + "provider": "Leverantör", + "model": "Modell", "accountKey": "Account Key", "autoAccounts": "Auto ({count} konton)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Skicka", + "cancel": "Avbryt", + "audioFile": "Ljudfil", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Rensa alla", + "request": "Begäran", + "response": "Svar", + "transcription": "Transkription", + "copy": "Kopiera", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Genererade {count} bilder", "generatedImage": "Genererad bild {index}", - "save": "Save", + "save": "Spara", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Svar", "completions": "Kompletteringar", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Inbäddningar", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Modereringar", - "rerank": "Rerank", + "rerank": "Omrangordna", "search": "Search", "webFetch": "Webbhämtning" }, "conversationalChat": "Konversationschatt", "clearChat": "Rensa chatten", "typeMessagePlaceholder": "Skriv ett meddelande... (Skift+Enter för ny rad)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Chatt", + "tabCompare": "Jämför", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Bygg", + "configPane": "Konfiguration", + "systemPrompt": "Systemprompt", + "systemPromptPlaceholder": "Du är en hjälpsam assistent.", + "modelPlaceholder": "t.ex. openai/gpt-4o", + "endpointLabel": "Slutpunkt", + "parametersLabel": "Parametrar", + "collapseConfig": "Fäll ihop konfigurationspanelen", + "expandConfig": "Fäll ut konfigurationspanelen", + "temperature": "Temperatur", + "maxTokens": "Max antal tokens", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Närvarostraff", + "frequencyPenalty": "Frekvensstraff", "reasoningLabel": "Resonemang", "thinking": "Tänkande", "effort": "Ansträngning", "effortDefault": "Standard", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Slumpmässigt (lämna tomt)", + "presetsLabel": "Förinställningar", + "loadPreset": "Läs in förinställning", + "savePreset": "Spara förinställning", + "noPresets": "Inga förinställningar", + "presetNamePlaceholder": "Namn på förinställning", + "savingPreset": "Sparar…", + "nameRequired": "Namn krävs", + "failedToSavePreset": "Det gick inte att spara förinställningen", + "improvePrompt": "Förbättra prompt", + "improvingPrompt": "Förbättrar…", + "improvePromptTitle": "Förbättra din prompt med AI", + "setModelFirst": "Välj en modell först", "setModelInConfigFirst": "Ställ in en modell i konfigurationspanelen först.", "improvePromptFailed": "Misslyckades med att förbättra prompten.", "improvePromptAria": "Förbättra prompten med AI", "confirmImprovePrompt": "Bekräfta förbättring av prompt", "improvePromptDescription": "Detta skickar din nuvarande systemprompt till för att generera en förbättrad version.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Detta förbrukar kvot från modellen som konfigurerats i Config.", + "improveConfirm": "Förbättra", + "exportCode": "Exportera kod", + "exportCodeTitle": "Exportera kod", "exportShort": "Exportera", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Det finns inget tillstånd från playground att exportera.", "closeExportModal": "Stäng exportmodal", "close": "Stäng", "exportRealKeyWarning": "Säkerhetsvarning: export blockerad — en riktig API-nyckel upptäcktes i utdata. Återställ din API-nyckel och försök igen.", @@ -11071,13 +11078,13 @@ "copyLangCode": "Kopiera {language}-kod", "loadingPresets": "Laddar…", "loadPresetPlaceholder": "Läs in förinställning…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Kopiera", + "copiedCode": "Kopierat!", + "addModel": "+ Lägg till modell", + "runAll": "Kör alla", + "cancelAll": "Avbryt alla", + "maxColumnsReached": "Högst {max} kolumner", + "modelPlaceholderCompare": "Modell (Cmd+K)…", "noModel": "Ingen modell", "statusLabel": "Status: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "Väntar på svar…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "uppskattning på klientsidan", + "tokensLabel": "Token", + "costLabel": "Kostnad", + "costEstimated": "(uppskattad)", "ttftTitle": "Tid till första token (uppskattning på klientsidan)", "tpsTitle": "Tokens per sekund (uppskattning på klientsidan)", "tokenCountsTitle": "Prompt-tokens ↑ / Completion-tokens ↓", "estimatedCostTitle": "Uppskattad kostnad (garanteras inte vara exakt)", - "toolsLabel": "Tools", + "toolsLabel": "Verktyg", "toolsCount": "Verktyg ({count})", - "addTool": "Add tool", + "addTool": "Lägg till verktyg", "editTool": "Redigera verktyg {name}", "removeTool": "Ta bort verktyg {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Funktionsnamn", "toolNameRequiredPlaceholder": "Funktionsnamn *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Beskrivning (valfritt)", "toolParamsLabel": "Parametrar (JSON-schema)", "toolParamsJsonSchema": "JSON-schema för parametrar", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parametrarna måste vara giltig JSON", + "structuredOutputLabel": "Strukturerade utdata", + "enableJsonMode": "Aktivera JSON-läge", + "disableJsonMode": "Inaktivera JSON-läge", + "invalidJson": "Ogiltig JSON", "jsonMode": "JSON-läge", "jsonModeDescription": "Tvingar response_format: json_schema", "schemaName": "Schemanamn", @@ -11125,10 +11132,10 @@ "jsonSchemaEditor": "JSON-schemaeditor", "schemaValidated": "Schema validerat", "validateSchema": "Validera schema", - "seed": "Seed", + "seed": "Startvärde", "stopSequences": "Stoppsekvenser", "stopSequencesPlaceholder": "t.ex. \"\\n\\n\" eller \"END\"", - "autoProvider": "Auto", + "autoProvider": "Automatiskt", "httpError": "Fel {status}", "requestCancelled": "Begäran avbruten", "networkError": "Nätverksfel", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} kolumner", "addModelToCompare": "Lägg till en modellkolumn för att jämföra", "modelsSimultaneously": "Upp till {max} modeller samtidigt", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Körs…", + "runLabel": "Kör", + "enterToolResult": "Ange verktygsresultat…", "build": { "step1Label": "Vad vill du testa?", "step2Label": "Konfigurera", @@ -11237,7 +11244,7 @@ "searchResultFallback": "Resultat {number}", "noKeysFound": "Inga API-nycklar hittades. Lägg till en i avsnittet Nycklar.", "exampleLabel": "Exempel", - "latency": "{ms}ms", + "latency": "{ms} ms", "statsLine": "{ms}ms · {tokensIn} in / {tokensOut} ut tokens", "defaultKey": "(standard)", "clear": "Rensa", @@ -11250,73 +11257,73 @@ "stop": "Stoppa" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", + "recording": "Spelar in", + "paused": "Pausad", + "pipelineLogsOn": "Pipelineloggar på", + "pipelineLogsOff": "Pipelineloggar av", + "updatingPipelineLogs": "Uppdaterar pipelineloggar...", + "updatePipelineFailed": "Det gick inte att uppdatera pipelineloggningen", + "capturePipeline": "Samla in pipeline-data för nya förfrågningar", + "searchPlaceholder": "Sök efter modeller, leverantörer, konton, API-nycklar, kombinationer...", + "allProviders": "Alla leverantörer", + "allModels": "Alla modeller", + "allAccounts": "Alla konton", + "allApiKeys": "Alla API-nycklar", + "total": "Totalt", + "ok": "Lyckade", + "err": "Fel", + "combo": "Kombination", + "keys": "Nycklar", + "shown": "Visade", + "sortNewest": "Nyaste", + "sortOldest": "Äldsta", + "sortTokensDesc": "Token ↓", + "sortTokensAsc": "Token ↑", + "sortDurationDesc": "Varaktighet ↓", + "sortDurationAsc": "Varaktighet ↑", "sortStatusDesc": "Status ↓", "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortModelAsc": "Modell A–Ö", + "sortModelDesc": "Modell Ö–A", + "sortLogs": "Sortera loggar", + "refresh": "Uppdatera", + "columnsLabel": "Kolumner", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "UPP", + "semantic": "Semantisk", + "upstream": "Uppströms", + "semanticCacheHit": "Semantisk cacheträff (levererad av OmniRoute)", + "upstreamResponse": "Svar från uppströmsleverantör", + "noApiKey": "Ingen API-nyckel", + "requestedRoutedTitle": "Begärde {requested}, dirigerades som {routed}", "statusFilters": { - "all": "All", + "all": "Alla", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Lyckades", + "combo": "Kombination" }, "columns": { "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "cacheSource": "Cachekälla", + "model": "Modell", + "requested": "Begärd", + "provider": "Leverantör", + "protocol": "Begäransprotokoll", + "account": "Konto", + "apiKey": "API-nyckel", + "combo": "Kombination", + "tokens": "Token", "compressed": "Kompression", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Varaktighet", + "time": "Tid", + "conversation": "Konversation", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Läser in loggar...", + "noLogs": "Inga loggar ännu. Gör några API-anrop för att se dem här.", + "noMatchingLogs": "Inga loggar matchar de aktuella filtren.", + "callLogsInfo": "Anropsloggar sparas även som JSON-filer i {dataDir} och roteras baserat på {retentionDays} och {maxEntries}.", "loadMore": "Ladda mer", "loadingMore": "Laddar mer...", "correlationId": "Korrelations-ID", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Den detaljerade nyttolasten artefakt är inte längre tillgänglig för denna loggpost.", "payloadCorrupt": "Detaljerad payload-artikel kunde inte tolkas.", - "notAvailable": "N/A", + "notAvailable": "Ej tillämpligt", "semanticCache": "Semantisk (OmniRoute)", "upstreamCache": "Uppströms (Leverantör)", "ariaLabel": "Begär loggdetalj", @@ -11396,7 +11403,7 @@ "cacheSource": "Cache Källa", "modelPinning": "Modellpinning", "activeModelPinning": "Aktiv — modell vald via sessionsfästning", - "rotated": "Rotated: {initial} -> {final}", + "rotated": "Roterade: {initial} -> {final}", "apiKey": "API Nyckel", "noApiKey": "Ingen API-nyckel", "combo": "Kombination", @@ -11417,59 +11424,59 @@ "correlationId": "Korrelations-ID", "correlationIdValue": "Korrelations-ID: {id}", "detailedPayloadInfo": "Aktivera detaljerad loggning först om du vill ha den fyrastegs klient/leverantörs payload-vyn för nya förfrågningar.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Kopiera alla", + "copiedAll": "Alla kopierade" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", + "filterAll": "Alla", + "filterErrors": "Fel", + "filterSuccess": "Lyckade", + "filterTimeout": "Tidsgräns", "colStatus": "Status", "colProxy": "Proxy", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", + "colType": "Typ", + "colLevel": "Nivå", + "colProvider": "Leverantör", + "colTarget": "Mål", + "colLatency": "Svarstid", + "colClientIp": "Klient-IP", + "colTime": "Tid", + "recording": "Loggning", + "paused": "Pausad", + "searchPlaceholder": "Sök efter värd, leverantör, mål, IP...", + "allTypes": "Alla typer", + "allLevels": "Alla nivåer", + "allProviders": "Alla leverantörer", + "total": "totalt", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "err": "FEL", + "timeoutShort": "TID", + "direct": "direkt", + "newest": "Nyaste", + "oldest": "Äldsta", + "latencyDesc": "Svarstid ↓", + "latencyAsc": "Svarstid ↑", + "refresh": "Uppdatera", + "columns": "Kolumner", + "loadingProxyLogs": "Läser in proxyloggar...", + "noProxyLogs": "Inga proxyloggar ännu. Konfigurera proxyservrar och gör API-anrop för att se dem här.", + "noMatchingLogs": "Inga loggar matchar de aktuella filtren.", + "tlsFingerprint": "TLS-fingeravtryck för Chrome 124", "colPublicIp": "Publik IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "speech": "Tal", + "search": "Sök", + "images": "Bilder", + "chat": "Chatt", + "music": "Musik", + "responses": "Svar", + "rerank": "Omrankning", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Inbäddningar", + "transcription": "Transkribering" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", + "title": "Körtid", + "description": "Observerbarhet i realtid – motståndskraft i 3 lager + sessioner + kvotvarningar", + "pause": "Pausa", + "resume": "Återuppta", + "refreshNow": "Uppdatera nu", + "kpiSessions": "Sessioner", + "kpiCircuits": "Kretsar", + "kpiCooldowns": "Nedkylningsperioder", + "kpiLockouts": "Låsningar", + "hintStickyBound": "{count} bundna till fast dirigering", + "hintRecovering": "{count} återhämtar sig", + "hintAllHealthy": "alla fungerar", + "hintOpen": "öppna", + "hintConnsCooling": "anslutningar kyls ned", + "hintModelsBlocked": "modeller blockerade", + "resilienceTitle": "Motståndskraft i 3 lager", + "resilienceSubtitle": "Återspeglar den dokumenterade motståndskraftsmodellen", + "providersHealthy": "{percent} % av leverantörerna fungerar", + "layer": "Lager {n}", + "layer1Title": "Kretsbrytare för leverantörer", + "layer1Desc": "Stoppa trafik till leverantörer som har fel på uppströmsnivå", + "layer2Title": "Nedkylningsperioder för anslutningar", + "layer2Desc": "Hoppa över ett felaktigt konto/en felaktig nyckel; andra anslutningar fortsätter att betjäna", + "layer3Title": "Modellåsningar", + "layer3Desc": "Hastighetsbegränsningslås per modell; samma anslutning betjänar fortfarande andra modeller", + "badgeAffectedOf": "{affected} av {total} berörda", + "badgeCooling": "{count} kyls ned", + "badgeLocked": "{count} låsta", + "emptyCircuits": "Inga kretsbrytare är aktiva ännu", + "emptyCooldowns": "Inga aktiva anslutningsspärrtider", + "emptyLockouts": "Inga modellåsningar", + "moreCooldowns": "+{count} fler spärrtider", + "moreLockouts": "+{count} fler låsningar", + "feedTitle": "Liveflöde", + "feedSubtitle": "Senaste {count} händelserna", + "feedFilterAll": "Alla", + "feedFilterCircuits": "Kretsar", + "feedFilterCooldowns": "Spärrtider", + "feedFilterLockouts": "Låsningar", + "feedFilterSessions": "Sessioner", + "feedFilterQuotas": "Kvoter", + "feedClear": "Rensa", + "feedEmptyWaiting": "Väntar på händelser... (kontrolleras var 5:e sekund)", + "feedEmptyFiltered": "Inga händelser matchar detta filter", + "sessionsTitle": "Aktiva sessioner", + "sessionsSubtitle": "Begärandefingeravtryck med beständig bindning (live)", + "sessionsActive": "{count} aktiva", + "sessionsEmptyTitle": "Inga aktiva sessioner", + "sessionsEmptyHint": "Sessioner visas när begäranden flödar genom proxyn", "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "tblAge": "Ålder", + "tblIdle": "Inaktiv", + "tblReqs": "Begäranden", + "tblBoundTo": "Bunden till", + "topApiKeys": "Vanligaste API-nycklarna", + "quotaMonitorsTitle": "Kvotövervakare", + "quotaMonitorsSubtitle": "Aktuell kvotstatus per kontofönster", + "openQuota": "Öppen kvot", + "allQuotasHealthy": "Alla kvoter är inom gränserna", + "statusExhausted": "FÖRBRUKAD", + "statusAlerting": "VARNING", + "statusError": "FEL", + "moreSuffix": "+{count} fler" }, "quotaShare": { "weightPercent": "Vikt %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Kvotdelning", + "description": "Dela leverantörskvoter mellan API-nycklar med procentgränser", + "newPool": "Ny pool", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", + "betaDescription": "Konfigurationen sparas i localStorage (men lagras ännu inte permanent på servern). Tillämpningen av gränsen per begäran är ännu inte integrerad i proxypipelinen. På den här skärmen kan du utforma och visualisera kvotfördelningen. Faktisk tillämpning införs i en framtida version med permanent databaslagring och avlyssning av anrop till uppströmsleverantörer.", + "kpiActivePools": "Aktiva pooler", + "kpiKeysAllocated": "Tilldelade nycklar", + "kpiAvgUnallocated": "Genomsnittligt ej allokerat", + "kpiProvidersWithQuota": "Leverantörer med kvot", + "emptyTitle": "Inga pooler konfigurerade", + "emptyDescription": "Skapa en pool för att tilldela API-nycklar så att de delar en leverantörs kvotfönster med procentuella allokeringar.", + "loading": "Läser in…", + "removePool": "Ta bort pool", + "removeConfirm": "Ta bort den här poolen?", "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", + "used": "använt", + "allocationsCount": "Allokeringar ({count})", + "allocatedFree": "{allocated}% allokerat · {free}% ledigt", + "noAllocations": "Inga nycklar har allokerats ännu", + "capLabel": "tak {value}", + "notTrackedYet": "(spåras inte ännu)", "policy": "Policy", "apiKeyColumn": "API-nyckel", "weightColumn": "Vikt", "fairShareShort": "rättvis", - "policyHard": "hard", - "policySoft": "soft", + "policyHard": "hård", + "policySoft": "mjuk", "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHardHint": "Blockera när nyckeln har förbrukat sin allokering", + "policySoftHint": "Tillåt överskridande, endast avisering", + "policyBurstHint": "Tillåt burst till den lediga poolen", + "editAllocations": "Redigera allokeringar", + "newPoolTitle": "Ny kvotpool", + "providerConnection": "Leverantörsanslutning (konto)", + "selectConnection": "Välj en anslutning…", + "noEligibleConnections": "Inga anslutningar med kvotdata. Uppdatera först från /dashboard/quota.", + "quotaWindow": "Kvotfönster", + "selectWindow": "Välj ett fönster…", + "alreadyUsedSuffix": "(används redan)", + "windowReset": "Återställning", + "duplicatePoolError": "Det finns redan en pool för den här anslutningen och det här fönstret", + "cancel": "Avbryt", + "createPool": "Skapa pool", + "editTitle": "Redigera allokeringar", + "noKeysAdded": "Inga nycklar har allokerats. Lägg till en nedan.", + "totalLabel": "Totalt: {percent}%", + "totalExceeded": "⚠ överstiger 100 %", + "addKey": "+ Lägg till nyckel…", + "equalSplit": "Fördela lika", + "save": "Spara allokeringar", "betaPreviewLabel": "Beta — UI-förhandsgranskning.", "betaConfigSavedPrefix": "Konfigurationen sparas i", "betaConfigSavedSuffix": "(finns ännu inte kvar på servern). Begränsning per begäran är ännu inte kopplad till proxypipeline. Den här skärmen låter dig designa och visualisera kvotfördelningen; verklig verkställighet kommer att landa i en framtida iteration med DB persistens och uppströms samtalsavlyssning.", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "Bas-URL", "endpointsCollapse": "Fäll ihop", "endpointsExpand": "Fäll ut", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-nativ", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — endast codex", "betaText": "Quota Share fungerar men buggar kan förekomma. Hittade du en? Rapportera den gärna.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "Denna grupp har fortfarande pooler — tilldela dem på nytt eller ta bort dem först.", "ungroupedTitle": "Ogrupperade", "ungroupedHint": "Dessa pooler är inte tilldelade till en känd grupp. Redigera en pool för att flytta den till en riktig grupp.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Det gick inte att ta bort den här poolen.", + "dismiss": "Stäng" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", + "title": "Insticksprogram", + "description": "Installera och hantera insticksprogram för att utöka funktionaliteten i OmniRoute", + "loading": "Läser in insticksprogram...", + "scanning": "Söker...", + "scanForPlugins": "Sök efter insticksprogram", + "noPlugins": "Inga insticksprogram installerade", + "noPluginsDescription": "Placera insticksprogramkataloger i ~/.omniroute/plugins/ och klicka på Sök.", + "activate": "Aktivera", + "deactivate": "Inaktivera", + "uninstall": "Avinstallera", + "uninstallConfirm": "Avinstallera insticksprogrammet \"{name}\"?", + "pluginScanComplete": "Sökningen efter insticksprogram är klar", + "pluginScanFailed": "Sökningen efter insticksprogram misslyckades", + "activated": "{name} har aktiverats", + "deactivated": "{name} har inaktiverats", + "activateFailed": "Det gick inte att aktivera {name}", + "deactivateFailed": "Det gick inte att inaktivera {name}", + "uninstalled": "{name} har avinstallerats", + "uninstallFailed": "Det gick inte att avinstallera {name}", + "configure": "Konfigurera: {name}", + "configurePlugin": "Konfigurera", + "noConfigSettings": "Det här insticksprogrammet har inga konfigurerbara inställningar.", + "saving": "Sparar...", + "saveConfiguration": "Spara konfiguration", + "configurationSaved": "Konfigurationen har sparats", + "saveConfigurationFailed": "Det gick inte att spara konfigurationen", + "pluginNotFound": "Insticksprogrammet hittades inte", "version": "Version", - "author": "Author", - "description_label": "Description", + "author": "Utvecklare", + "description_label": "Beskrivning", "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "enabled": "Aktiverat", + "disabled": "Inaktiverat", "installedTab": "Installerade", "marketplaceTab": "Marknadsplats", "marketplaceUrlLabel": "Anpassad marknadsplats-URL", @@ -11729,7 +11736,7 @@ "verified": "Verifierad", "install": "Installera", "installedFromMarketplace": "Plugin {name} installerat!", - "hooks": "Hooks" + "hooks": "Krokar" }, "quotaPlans": { "title": "Planer & kvoter", @@ -11745,7 +11752,7 @@ "unitOptions": { "percent": "%", "requests": "förfrågningar", - "tokens": "tokens", + "tokens": "token", "usd": "USD ($)" }, "windowOptions": { @@ -12059,16 +12066,16 @@ "exportHar": "Exportera .har", "recordSession": "REC", "stopSession": "Stoppa", - "liveBadge": "live", - "offlineBadge": "offline", + "liveBadge": "direkt", + "offlineBadge": "frånkopplad", "noRequests": "Inga anrop har fångats än.", "noRequestsDesc": "Se till att AgentBridge körs eller aktivera ett annat fångstläge.", "selectRequest": "Välj ett anrop för att inspektera det.", "tabConversation": "Konversation", - "tabHeaders": "Headers", + "tabHeaders": "Rubriker", "tabRequest": "Begäran", "tabResponse": "Svar", - "tabTiming": "Timing", + "tabTiming": "Tidsdata", "tabLlm": "LLM", "tabStats": "Statistik", "requestHeaders": "Request-headers", @@ -12091,7 +12098,7 @@ "llmApiKind": "API-typ", "llmModel": "Modell", "llmMessages": "Meddelanden", - "llmStream": "Stream", + "llmStream": "Ström", "llmMappedTo": "Mappad till", "llmCostEstimate": "Kostnadsuppskattning", "systemProxyExitWarning": "Systemomfattande proxy är fortfarande aktiv — lämna sidan ändå?", @@ -12102,7 +12109,7 @@ "httpProxyTitle": "HTTP-proxy-kodsnutt — port {port}", "notRecording": "Spelar inte in", "anyStatus": "Valfri status", - "liveOnly": "Live", + "liveOnly": "Direkt", "viewingRecordedSession": "Visar inspelad session", "backToLive": "Tillbaka till live", "untitledSession": "Namnlös session", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP-agenter", "phrase": "CLI:er som OmniRoute startar som exekveringsbackend (omvänt flöde)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "De flesta användare kan ignorera detta – använd det endast när en integration kräver det.", "flow": "Klient → OmniRoute → starta CLI (stdio/ACP) → svar", "seeOther": "Se →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI som används som backend av Omni", "desc": "Omvänd exekvering", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → starta CLI → svar", "examples": "t.ex.: claude, codex (ACP)" } }, @@ -12217,7 +12224,7 @@ "versionNotFound": "hittades inte", "manualConfig": "Manuell konfig", "installGuide": "Installationsguide", - "endpointLabel": "Endpoint", + "endpointLabel": "Slutpunkt", "baseUrlFull": "Fullständig bas-URL", "baseUrlPartial": "Partiell bas-URL", "refreshDetection": "Uppdatera detektering", @@ -12370,8 +12377,8 @@ "description": "Utlös systemsäkerhetskopiering, återställ från säkerhetskopior och hantera SQLite-databasens livscykel. Stöder export-, import- och inkrementella snapshot-strategier." }, "omni-webhooks": { - "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "name": "Webhookar", + "description": "Registrera, lista, testa och ta bort webhook-slutpunkter. Konfigurera händelseprenumerationer (request.completed, request.failed, quota.exceeded osv.) och hantera nya leveransförsök." }, "omni-mcp": { "name": "MCP-server", @@ -12390,15 +12397,15 @@ "description": "De centrala OpenAI-kompatibla inferensslutpunkterna: chat completions, embeddings, bilder, ljud (TTS/STT), modereringar, rerank och Responses API. Den primära integrationsytan för AI-agenter." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Servera", "description": "Starta, stoppa och starta om OmniRoute-servern från CLI. Hantera bakgrundsläge, portkonfiguration, automatisk återställning, systemfältsintegration och genvägen för att öppna instrumentpanelen." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Hälsa", "description": "Kontrollera serverhälsa, komponentstatus och realtidsmått från CLI. Kör `health`, `health components` och `health watch` för en realtidsinstrumentpanel av kretsbrytare och leverantörsstatus." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Leverantörer", "description": "Hantera leverantörsanslutningar från CLI: lista tillgängliga/konfigurerade leverantörer, lägg till, testa, testa alla, validera, rotera API-nycklar och visa mått per leverantör." }, "cli-keys": { @@ -12410,7 +12417,7 @@ "description": "Fråga efter tillgängliga AI-modeller, lista modellalias och bläddra i hela modellkatalogen från CLI. Filtrera efter leverantör, sök efter förmåga och matcha modellnamnsvarianter." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Chatt", "description": "Skapa chat completions, strömma svar och starta en interaktiv REPL-session från CLI. Stöder alla OmniRoute-leverantörer, kombinationsdirigering och konfiguration av systemprompter." }, "cli-routing": { @@ -12470,7 +12477,7 @@ "description": "Kör den första installationen, konfigurera globala CLI-inställningar, hantera miljövariabler, sök efter uppdateringar och konfigurera autostart via CLI-kommandona setup och config." }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI: Insamlare för agentfärdigheter", "description": "Identifiera installerade CLI-kodverktyg (Claude Code, Codex, Cursor, Copilot, Cline med flera), sök på GitHub efter matchande agentfärdigheter och installera dem i de identifierade verktygen via OmniRoutes inbyggda API:er." }, "config-codex-cli": { @@ -12478,11 +12485,11 @@ "description": "Steg-för-steg-arbetsflöde för agenter för att konfigurera OpenAI Codex CLI på valfri dator (Linux, macOS, Windows) för att använda OmniRoute som en OpenAI-kompatibel backend. Identifierar operativsystem och kommandotolk, skriver config.toml och 7 namngivna profiler, ställer in miljövariabler och verifierar installationen." }, "omni-github-skills": { - "name": "GitHub Skill Discovery", + "name": "Identifiering av GitHub-färdigheter", "description": "Sök, poängsätt, skanna och importera agentfärdigheter från GitHub-arkiv som innehåller SKILL.md, CLAUDE.md, .cursorrules och liknande filer för agentfärdigheter. Upptäck community-färdigheter i över 160 leverantörskategorier, utvärdera relevans med heuristisk poängsättning, kontrollera efter skadlig kod eller hårdkodade hemligheter och installera i agentkataloger för Hermes, Claude Code, Gemini CLI eller OpenCode." } }, - "pageTitle": "Agent Skills", + "pageTitle": "Agentfärdigheter", "pageSubtitle": "Lär din agent att hantera OmniRoute — 22 API-områden + 20 CLI-familjer", "conceptCard": { "agent": { @@ -12496,8 +12503,8 @@ "crossLinkLabel": "Förstå skillnaden →" }, "comparison": { - "colAgent": "Agent Skills", - "colOmni": "Omni Skills", + "colAgent": "Agentfärdigheter", + "colOmni": "Omni-färdigheter", "whatIs": { "label": "Vad det är", "agent": "Maskinläsbar SKILL.md som lär en extern agent att hantera OmniRoute", @@ -12519,7 +12526,7 @@ "omni": "SQLite (SkillsMP / skills.sh / lokalt)" }, "tagline": { - "label": "Tagline", + "label": "Slogan", "agent": "Lär din agent att använda OmniRoute", "omni": "Ge körbara verktyg till OmniRoute-modeller" } @@ -12575,7 +12582,7 @@ "colScore": "Poäng", "colAvgScore": "Snittpoäng", "colModels": "Modeller", - "colType": "Type", + "colType": "Typ", "filterConfiguredOnly": "Endast konfigurerade", "filterAvailableOnly": "Endast tillgängliga", "filterAvailableOnlyHelp": "Dölj leverantörer vars anslutningar alla är hastighetsbegränsade eller saknar kvot.", @@ -12589,14 +12596,14 @@ "typeApikey": "API-nyckel", "sortTypeFirst": "Enklaste först", "sortTypeFirstHelp": "Gruppera efter registreringsansträngning (Ingen registrering → OAuth-inloggning → API-nyckel), med bibehållen kvalitetsordning inom varje grupp", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Mest tillförlitliga först", + "sortByReliabilityHelp": "Ordna leverantörer efter andelen anrop som lyckades under den valda perioden. Leverantörer med för få anrop för att ange en frekvens behåller sin poängordning, efter de uppmätta.", "typeLegend": "Ingen registrering = noll konfiguration · OAuth-inloggning = logga in med ditt eget konto · API-nyckel = ta med din egen nyckel eller den leverantörens gratisnivå", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Tillförlitlighet", + "colReliabilityHelp": "Andel anrop som den här leverantören faktiskt besvarade under de senaste 24 timmarna. Ett streck innebär att den hanterade för lite trafik för att en frekvens ska kunna anges.", + "reliabilitySample": "{successes} av {requests} anrop lyckades under de senaste {hours} h", + "reliabilityTooFew": "Endast {requests} anrop under de senaste {hours} h – för få för att ange en frekvens", + "reliabilityNoTraffic": "Inga anrop registrerade under de senaste 24 h" }, "discovery": { "title": "Leverantörssökning", @@ -12673,7 +12680,7 @@ "scope": "Omfattning", "tokensShared": "delade tokens", "points": "poäng", - "rank": "Rank", + "rank": "Rang", "name": "Namn", "score": "Poäng", "leaderboardEmpty": "Inga poster ännu för detta omfång. Börja använda OmniRoute för att visas på topplistan!", @@ -12683,7 +12690,7 @@ "explorer": "Utforskare", "expert": "Expert", "master": "Mästare", - "legend": "Legend" + "legend": "Teckenförklaring" }, "tiers": { "bronze": "Brons", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar-supporter", + "description": "Verifierade en aktiv OmniRoute Radar-supporterfeed", + "criteria": "Verifiera en signerad aktiv Radar-supporterfeed." }, "first-token": { "name": "Första token", @@ -12846,7 +12853,7 @@ "security": "Säkerhet", "network": "Nätverk", "policies": "Policyer", - "runtime": "Runtime", + "runtime": "Körtid", "cli": "CLI", "health": "Hälsa", "requiresRestart": "Kräver omstart" @@ -12948,8 +12955,8 @@ "description": "Tillåt flera anslutningar för varje kompatibilitetsnod." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Inaktivera kontroller av kontextfönster", + "description": "Hoppa över OmniRoutes lokala kontroll av kontextfönster och maximalt antal indatatoken för direkta förfrågningar till en enskild modell. Uppströmsleverantörer tillämpar fortfarande sina faktiska gränser. Promptkomprimering och gränser för utdatatoken förblir aktiva." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Ta bort interna utdataobjekt från kommentarsfasen från Responses API-genomströmningsströmmar innan de vidarebefordras till klienter. Inaktivera denna flagga för att ta emot råa uppströmskommentarer." @@ -12985,7 +12992,7 @@ "description": "Tillåt strömåterställning att begära svaret igen och sammanfoga det efter att byte redan har nått klienten." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Gör fortsättning mitt i en ström säker vid verktygsanrop: återuppta aldrig en avbruten ström efter att ett verktygsanrop har skickats (oavsett om det fortfarande pågår eller redan har slutförts), och stoppa efter en tom fortsättning i stället för att använda hela budgeten för nya försök." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Växla en gång över till en syskonanslutning när en ström stängs innan den har skickat någon användbar ram och det begränsade nya försöket på samma anslutning är förbrukat. Utan en användbar syskonanslutning returneras det ursprungliga early-EOF-felet. Av: early-EOF förblir slutgiltigt efter det nya försöket." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Aktivera nätverksåtkomst i kompetenssandlådan." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Serverägd verktygsloop", + "description": "Fortsätt med icke-strömmande serverägda verktygsanrop tills modellen returnerar ett svar som klienten kan använda." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Ursprung för Retry-After", + "description": "För aggregerade 429/503-svar om otillgänglighet ska Retry-After utelämnas när ingen konkret framtida tidpunkt för ett nytt försök är känd, i stället för att skicka en syntetisk tid på 1 s. Lägg till error.retry_after_provenance och läs beskrivande ledtrådar om nya försök i dräneringsvägar för kombinationer." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Infrastrukturstopp med skyddad prioritet som 502", + "description": "Svara med 502 i stället för 503 när ett prioriterat mål med endast kvotreserv stoppar kombinationen av en orsak som bevisligen inte är kvotrelaterad: en öppen kretsbrytare hos leverantören eller ett prediktivt överhopp på grund av latens." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Kombohälsa", "callLogs": "Anropsloggar", "costs": "Kostnader", - "playground": "Playground", + "playground": "Testmiljö", "nestedCombo": "Nästlad kombo", "modelTarget": "Modellmål", "weight": "{value}% vikt", @@ -13171,7 +13182,7 @@ "segmentHint": "Varje segment = en gratispool · pool-deduplicerad, ärlig räkning (inga uppblåsta hastighetsbegränsningstak).", "boost": "Lås upp ~{tokens} fler/mån med en engångspåfyllning på $10 hos OpenRouter (50 → 1000 förfrågn./dag)", "uncapped": "Permanent gratis, inget publicerat tak (hastighetsbegränsad) — verklig åtkomst, räknas inte i rubriken:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/månad ytterligare bakom en regional identitetskontroll (t.ex. verifiering med verkligt namn i Fastlandskina) – verklig kvot, räknas inte med i huvuduppgiften:", "tosRestricted": "{count, plural, one {# modell} other {# modeller}} flaggad som ToS-begränsad — du bestämmer", "provider": "Leverantör", "model": "Modell", @@ -13224,7 +13235,7 @@ "down": "nere" }, "severity": { - "info": "info", + "info": "information", "warning": "varning", "critical": "kritisk" }, @@ -13270,80 +13281,80 @@ "viewFullHistory": "Visa fullständig historik på GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", + "title": "Routningspolicyer för resonemang", + "apiKeyTitle": "Resonemangsroutning för den här API-nyckeln", + "subtitle": "Omdirigera modeller och resonemangsnivå utan att kräva klientstöd. Förfrågningar förblir oförändrade när ingen regel matchar.", + "loadError": "Resonemangsreglerna kunde inte läsas in.", + "saveError": "Regeln är ogiltig eller kunde inte sparas.", + "saved": "Resoneringsregeln har sparats.", + "deleteConfirm": "Ta bort den här resoneringsregeln?", + "deleteError": "Det gick inte att ta bort resoneringsregeln.", + "empty": "Inga matchande resoneringsregler har konfigurerats.", + "all": "Alla", + "any": "Valfri", + "enabled": "Aktiverad", + "disabled": "Inaktiverad", + "filterSearch": "Sök regler", + "filterScope": "Filtrera efter omfattning", + "filterStatus": "Filtrera efter status", + "allModels": "alla modeller", + "keepModel": "Behåll modell", + "otherModel": "Annan modell", + "combo": "Kombination", + "priorityShort": "prioritet {value}", + "toggleAria": "Aktivera {name}", + "edit": "Redigera", + "delete": "Ta bort", + "name": "Namn", + "description": "Beskrivning", + "scopeLabel": "Omfattning", + "apiKey": "API-nyckel", + "sourceCombo": "Källkombination", + "connection": "Anslutning", + "sourceModel": "Källmodell eller jokertecken", + "sourceModelOptional": "Tomt = alla modeller", + "sourceModelExample": "t.ex. gpt-5*", + "sourceEffort": "Källans resoneringsnivå", + "missing": "Inte angiven", + "signalOnly": "Icke-diskret resoneringssignal", + "requestTags": "Förfrågningstaggar", + "requestTagsExample": "kodning, intern", + "tagMode": "Taggmatchning", + "effortMode": "Ansträngningsläge", + "targetEffort": "Målnivå för ansträngning", + "routingTarget": "Dirigeringsmål", + "targetModel": "Målmodell", + "targetCombo": "Målkombination", + "budgetAction": "Tankebudget", + "budgetTokens": "Budgettoken", + "priority": "Prioritet", + "saveChanges": "Spara ändringar", + "add": "Lägg till regel", + "cancel": "Avbryt", + "simulateTitle": "Simulera regel", + "model": "Modell", + "effort": "Ansträngning", "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "simulate": "Simulera utan uppströmstjänst", + "extendedComboWarning": "Max/Ultra valideras separat för varje kombinationsmål under routningen.", + "extendedUnknownWarning": "Ange en målmodell för att verifiera stöd för Max/Ultra.", + "extendedUnsupportedWarning": "Max/Ultra stöds såvitt känt endast av lämpliga Codex GPT-5.6-modeller. Okända anpassade modeller accepteras av servern med en varning.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "Globalt", + "apiKey": "API-nyckel", + "combo": "Kombination", + "model": "Modell", + "connection": "Anslutning" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Ärv från klienten", + "default": "Använd standardvärde", + "force": "Tvinga" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Bevara", + "remove": "Ta bort", + "set": "Ange fast värde" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "Live (i realtid)", "tierCommunity": "Gemenskap (30-dagars fördröjning)", "activateTitle": "Aktivera Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Jämför Community-åtkomst med liveåtkomst, förstå vad din installation utbyter och välj sedan hur du vill aktivera Radar.", + "accessScaleTitle": "Förstå åtkomsten till Radar innan du aktiverar", + "accessScaleIntro": "Radar förblir nätverksinaktivt tills du väljer att delta. Välj Community-åtkomst eller aktivera en personlig supporternyckel efter att ha granskat dessa regler.", + "accessCommunityRule": "Community — ingen nyckel krävs: hela katalogen med 30 dagars fördröjning.", + "accessSingleUseRule": "Stjärnmärk + följ — när GitHub OAuth har verifierat båda får ditt GitHub-konto en liveavläsning av katalogen. Därefter återgår åtkomsten till Community. Denna engångsåtkomst kan inte utfärdas på nytt för kontot.", + "accessContributorRule": "Bidragsgivare — sammanslagna PR:er, commits och kodrader avgör endast den veckovisa rankningen. Topp 10 får 365 dagar, placering 11–100 får 90 dagar och bidragsgivare utanför topp 100 får ingen tilldelning oavsett antal PR:er. Att lämna rankningen förkortar aldrig redan tilldelad tid.", + "accessSupporterRule": "Supportrar — engångsköp ger 6 månader, 1 år eller livstid utan automatisk förnyelse. Köp, donationer, bidragsgivarperioder och manuella tilldelningar läggs ihop; livstid gäller alltid framför övriga.", + "accessUseTitle": "Personlig användning, återställning och granskning", + "accessInstallationRule": "Personlig licens — använd nyckeln på en aktiv installation åt gången. OmniRoute skapar inga maskinvarufingeravtryck. Återställning återkallar och ersätter en förlorad nyckel utan att nollställa dess utgångsdatum.", + "accessAbuseRule": "Missbruksgranskning — den fjärde unika IP-adressen inom 24 timmar skapar endast en flagga för manuell granskning; den blockerar eller återkallar aldrig en nyckel automatiskt.", + "accessOffersRule": "Liveerbjudanden sammanställs manuellt och kan ändras eller upphöra att gälla.", + "privacyTitle": "Vad Radar utbyter", + "privacyDownloadsRule": "Hämtar — din installation tar emot kryptografiskt signerad katalog- och hänvisningsmetadata. En giltig live-nyckel låser även upp signerade erbjudanden och Intel.", + "privacySendsRule": "Skickar — synkronisering på serversidan skickar supporternyckeln som en Bearer-token, och HTTPS-infrastrukturen tar emot anslutningens IP-adress. Redovisningen av flödesförfrågningar lagrar inget av värdena i klartext: den sparar nyckelhashar, aggregerad användning och en dagligen roterande, trunkerad IP-HMAC för missbruksgranskning.", + "privacyNeverRule": "Samlas aldrig in — prompter, svar, konversationer, leverantörsuppgifter, modelltrafik, drifttid, latens och lokal leverantörskonfiguration skickas aldrig till Radar.", + "activateButton": "Aktivera Community", "activating": "Aktiverar...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Har du redan en supporternyckel?", + "keyInvalidFormatError": "Ogiltigt nyckelformat. Den måste börja med \"omr_\" följt av 40 hexadecimala tecken.", + "activateWithKeyButton": "Aktivera supporterförmåner", + "changeKeyButton": "Byt nyckel", + "claimSectionTitle": "Har du ingen supporternyckel än?", + "contributorButton": "Jag är en bidragsgivare", + "contributorHint": "GitHub OAuth kontrollerar den aktuella veckorankningen: Topp 10 får 365 dagar och placeringarna 11–100 får 90 dagar. Enbart antalet PR:er ger aldrig åtkomst utanför topp 100.", + "supporterButton": "Stöd projektet", + "supporterHint": "Engångsalternativen för 6 månader, 1 år och livstid förnyas inte automatiskt. Berättigade perioder läggs ihop och livstidsalternativet har företräde.", "colProvider": "Leverantör", "colModel": "Modell", "colQuota": "Kvot", + "colLimits": "Hastighetsgränser", + "trainsOnPrompts": "Tränar på prompter", + "trainsOnPromptsHelp": "Den här leverantörens villkor anger att den kan träna på de prompter du skickar. Modeller utan den här märkningen anger antingen att de inte gör det eller dokumenterar det inte – avsaknaden av ett uttalande är ingen garanti.", + "limitsUnknownHelp": "Gränser rapporteras endast via Radar-flödet; inga publicerade gränser för den här posten", + "contextUnknownHelp": "Kontextfönstret är okänt för den här posten", + "capabilityUnknownHelp": "Kapaciteten rapporteras inte av flödet", "colContext": "Kontext", "colCapabilities": "Funktioner", - "colTos": "ToS Risk", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", + "colTos": "Användarvillkorsrisk", "newBadge": "ny", "setupGuide": "Installationsguide", "disabledByFeed": "Inaktiverad av Radar-flödet", "capTools": "Verktyg", - "capVision": "Vision", + "capVision": "Bildförståelse", "capThinking": "Tänkande", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalog", + "freeCreditsTab": "Gratiskrediter", + "freeCreditsSubtitle": "Värvningslänkar från leverantörer som spåras av Radar – att använda dem kostar inget extra och hjälper till att stödja OmniRoute.", + "fixedLinksEmpty": "Inga värvningslänkar är tillgängliga ännu. Synkronisera Radar för att söka efter uppdateringar.", + "requiredActionLabel": "Så gör du:", + "claimButton": "Hämta krediter", + "campaignsTitle": "Tidsbegränsade kampanjer", + "campaignsEmpty": "Inga aktiva kampanjer just nu – kom tillbaka senare.", + "campaignsUpsellCommunity": "Tidsbegränsade kampanjer är en extra supporterförmån. Allt på den här sidans fasta länkar förblir gratis för alla.", + "campaignsValidUntil": "Giltigt till och med {date}", + "colActions": "Åtgärder", + "localBadge": "lokal", + "editModel": "Redigera", + "saveModel": "Spara", + "cancelEdit": "Avbryt", + "resetModel": "Återställ lokala ändringar", + "hideModel": "Dölj", + "restoreModel": "Återställ", + "hiddenModelsTitle": "Dolda modeller", + "modelDisplayName": "Lokalt visningsnamn", + "modelEnabled": "Aktiverad lokalt", + "localStateSaveFailed": "Det gick inte att spara lokala Radar-inställningar", + "guidedCombos": "Guidade kombinationer", + "offers": "Erbjudanden", + "intel": "Information" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar-styrda kombinationer", + "subtitle": "Skapa prioriterade reservlösningar från likvärdiga kostnadsfria modeller som valts ut av Radar.", + "backToRadar": "Tillbaka till Radar", + "loading": "Läser in kombinationsförslag...", + "familyLabel": "Modellfamilj", + "modelsLabel": "Prioritetsordning", + "strategyReason": "Prioriteringen använder först den största återkommande kostnadsfria budgeten och växlar sedan mellan aktiva leverantörer.", + "generateButton": "Generera kombination", + "generating": "Genererar...", + "alreadyCreated": "Redan skapad", + "created": "Kombination skapad", + "noSuggestions": "Ingen berättigad modellfamilj har för närvarande aktiva anslutningar till minst två leverantörer.", + "catalogRequired": "Synkronisera först Radar-katalogen för att läsa in utvalda modellfamiljer.", + "loadFailed": "Det gick inte att läsa in kombinationsförslag från Radar.", + "createFailed": "Det gick inte att skapa kombinationen. Kontrollera dina leverantörsanslutningar och försök igen." }, "radarSetupPage": { "title": "Leverantörsinstallation", @@ -13538,28 +13549,28 @@ }, "resilienceConnections": { "title": "Anslutningsresiliens", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Dina anslutningar återställs automatiskt", + "reassuranceDetail": "Vanligtvis behöver du inte göra något. OmniRoute pausar tillfälligt en anslutning efter fel och försöker sedan använda den igen på ett säkert sätt.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Förfrågningar kan skickas", + "coolingDown": "Försöker snart igen", + "lockedOut": "Kräver din uppmärksamhet" }, "table": { "status": "Status", "provider": "Leverantör", "connectionId": "Anslutning", "authType": "Autentisering", - "backoffLevel": "Backoff", - "cooldown": "Cooldown", + "backoffLevel": "Återförsökspaus", + "cooldown": "Väntetid", "lastError": "Senaste Fel", "lockouts": "Låsningar", "healthy": "Frisk", - "coolingDown": "Cooldown", + "coolingDown": "Väntetid", "circuitOpen": "Krets Öppen", "recovering": "Återhämtar", "degraded": "Försämrad", - "terminal": "Terminal", + "terminal": "Permanent", "unknown": "Okänd", "never": "-" }, @@ -13589,7 +13600,7 @@ "detail": { "title": "Anslutningsdetalj", "metadata": "Metadata", - "cooldown": "Cooldown", + "cooldown": "Väntetid", "lastError": "Senaste Fel", "breaker": "Kretsbrytare", "lockouts": "Modellåsningar", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Avvisa förfrågningar innan de skickas när målmodellen saknar nödvändiga funktioner (vision, verktyg, strukturerad utdata, kontextfönster). Skyddar direkta förfrågningar från en enda leverantör som kringgår kompatibilitetsfiltret för kombinationslager.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Hoppa över OmniRoutes lokala kontroll av kontextfönster och maximalt antal indatatoken för direkta förfrågningar till en enskild modell. Uppströmsleverantörer tillämpar fortfarande sina faktiska gränser. Promptkomprimering och gränser för utdatatoken förblir aktiva.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Sökstatistik och senaste sökningar räknar endast leverantörer som fortfarande har en aktiv anslutning (nyckellösa leverantörer som duckduckgo-free räknas alltid). Av behåller varje sparad sökrad med ett leverantörs-ID.", "publicSystem": { "notFound": { "title": "Sidan kunde inte hittas", @@ -13699,12 +13710,12 @@ "maintenanceInfo": "Underhållsinformation", "service": "Tjänst", "unknown": "okänd", - "notAvailable": "n/a", + "notAvailable": "ej tillämpligt", "providersTracked": "Spåra Leverantörer", "circuitBreakerState": "Leverantörens Kretsbrytartillstånd", "lastUpdate": "Senaste uppdatering: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "{minutes} min", + "uptimeHoursMinutes": "{hours} tim {minutes} min" }, "statusPages": { "400": { @@ -13876,7 +13887,7 @@ } }, "providerTest": { - "dialogLabel": "Test {provider}", + "dialogLabel": "Testa {provider}", "deprecated": "avvecklad", "risk": "risk", "close": "Stäng", @@ -13947,7 +13958,7 @@ "tokens": "Tokener", "active": "Aktiv", "other": "Annat", - "tenMinutes": "10min", + "tenMinutes": "10 min", "hour": "timme", "day": "dag", "unknownModel": "okänd", @@ -13956,9 +13967,9 @@ "metadata": { "compressionTitle": "Komprimering", "compressionDescription": "Konfigurera inställningar för kontextkomprimering för att minska användningen av token och kostnader.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — reläproxyservrar", "relayDescription": "Serverless relay proxy-endpunkter för din AI-infrastruktur", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Trafikinspektör — OmniRoute", "trafficInspectorDescription": "Övervaka LLM-anrop + felsök all applikations HTTPS-trafik" }, "conductor": { @@ -13967,14 +13978,14 @@ "runners": "Löpare", "tasks": "Uppgifter", "colName": "Namn", - "colClis": "CLIs", + "colClis": "CLI-verktyg", "colStatus": "Status", "colTask": "Uppgift", "colMode": "Läge", - "colRunner": "Runner", + "colRunner": "Körningsagent", "colSummary": "Sammanfattning", - "online": "online", - "offline": "offline", + "online": "ansluten", + "offline": "frånkopplad", "draining": "avvattning", "hubOffline": "Konduktörshub offline eller inte konfigurerad (CONDUCTOR_HUB_URL) — visar ingenting istället för gammal data.", "noRunners": "Inga löpare registrerade", @@ -14015,7 +14026,7 @@ "title": "Orkestrering", "description": "Allt OmniRoute kör just nu — agenter, flotta och routing", "tabAgents": "Agenter", - "tabRouting": "Routing", + "tabRouting": "Dirigering", "tabOverview": "Översikt", "tabHistory": "Historik", "historyEmpty": "Inga avslutade körningar i det här intervallet", @@ -14044,7 +14055,7 @@ "sourceA2A": "A2A", "sourceConductor": "Ledare", "sourceStale": "Föråldrad sedan {since}", - "sourceOffline": "Offline", + "sourceOffline": "Frånkopplad", "sourceCollapse": "Fäll ihop", "sourceExpand": "Fäll ut", "stateQueued": "Köad", @@ -14070,11 +14081,11 @@ "actionApprove": "Godkänn plan", "actionCancel": "Avbryt", "actionSeeInGraph": "Visa i grafen", + "actionRepeat": "Upprepa", "actionDone": "Åtgärd tillämpad", "actionFailed": "Åtgärden misslyckades: {error}", "detailFailed": "Det gick inte att läsa in detaljer: {error}", "mirroredInA2A": "Speglad i A2A", - "actionRepeat": "Upprepa", "repeatConfirm": "Klicka igen för att bekräfta", "repeatDone": "Ny körning skapad", "repeatUnavailable": "Ursprunglig indata ej tillgänglig" @@ -14088,57 +14099,57 @@ "networkError": "Nätverksfel — kunde inte uppdatera leverantörens exponeringinställning" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", + "title": "Supportererbjudanden", + "subtitle": "Officiella rabatter, krediter, provperioder och granskade partnerförmåner från Radar.", + "backToRadar": "Tillbaka till Radar", + "loading": "Läser in erbjudanden...", + "refresh": "Uppdatera erbjudanden", + "refreshing": "Uppdaterar...", + "loadFailed": "Vi kunde inte uppdatera erbjudandena. Den senast verifierade lokala cachen behålls.", + "empty": "Det finns inga aktiva erbjudanden just nu.", + "keyRequiredTitle": "En supporternyckel krävs", + "keyRequiredDescription": "Erbjudanden är en liveförmån i Radar. Lägg till en befintlig supporternyckel på Radar-skärmen, verifiera din status som bidragsgivare eller stöd projektet för att få en.", + "contributorButton": "Jag är en bidragsgivare", + "supporterButton": "Stöd projektet", "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "officialBadge": "Officiell", + "conditionsLabel": "Villkor:", + "validUntil": "Giltigt till {date}", + "noExpiry": "Inget meddelat slutdatum", + "openOffer": "Visa erbjudande", + "trialDays": "{days, plural, one {# dag} other {# dagar}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Radarunderrättelser", + "subtitle": "ELO-rankningar som ägs av Radar och faktabaserade förändringar i katalogen.", + "backToRadar": "Tillbaka till Radar", + "loading": "Läser in information...", + "refresh": "Uppdatera information", + "syncing": "Uppdaterar...", + "loadFailed": "Det gick inte att uppdatera informationen. Den senast verifierade lokala cachen behålls.", + "empty": "Det finns ännu ingen verifierad informationsögonblicksbild.", + "supporterBadge": "Radarsupporter", + "methodology": "Metodik", + "eloMethod": "ELO, initialt {initial}, K={factor}", + "freshness": "Katalogens aktualitet", + "ageDays": "{days, plural, one {# dag gammal} other {# dagar gammal}}", + "trend": "Katalogtrend", + "modelDelta": "{current} modeller, +{added} / -{removed}", + "ranking": "Modellrankning", + "noRankings": "Det finns ännu inga bekräftade jämförelser.", + "model": "Modell", + "category": "Kategori", + "rating": "Betyg", + "matches": "Matcher", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Aktuell", + "aging": "Åldrande", + "stale": "Inaktuell" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Växande", + "stable": "Stabil", + "shrinking": "Krympande" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Begäran överskrider leverantörens kontextfönster" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference är en vän till OmniRoute inom öppen källkod", + "description": "En kostnadsrankad gateway som säljer vidare dussintals avancerade modeller via en enda OpenAI-kompatibel slutpunkt – och dirigerar varje begäran till den billigaste kvalificerade leverantören, aldrig över listpriset.", + "cta": "Skaffa en API-nyckel", + "partnerLinkNote": "Partnerlänk", + "dismissAriaLabel": "Stäng" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Inaktivera genereringen av varianter med olika tankenivåer (t.ex. -low, -medium, -high) i katalogen /v1/models." } diff --git a/src/i18n/messages/sw.json b/src/i18n/messages/sw.json index 629174be52..b3f6e4fb7c 100644 --- a/src/i18n/messages/sw.json +++ b/src/i18n/messages/sw.json @@ -1,15 +1,15 @@ { "common": { - "save": "Save", - "cancel": "Cancel", - "delete": "Delete", - "loading": "Loading...", + "save": "Hifadhi", + "cancel": "Ghairi", + "delete": "Futa", + "loading": "Inapakia...", "selectOption": "Chagua chaguo", - "error": "An error occurred", - "success": "Success", - "confirm": "Are you sure?", - "refresh": "Refresh", - "close": "Close", + "error": "Hitilafu imetokea", + "success": "Imefanikiwa", + "confirm": "Una uhakika?", + "refresh": "Onyesha upya", + "close": "Funga", "previousPage": "Ukurasa uliopita", "nextPage": "Ukurasa unaofuata", "capsLockOn": "Caps Lock imewashwa", @@ -17,142 +17,142 @@ "toggleColumns": "Geuza safu wima", "confirmTitle": "Thibitisha", "confirmAction": "Thibitisha", - "add": "Add", - "edit": "Edit", - "search": "Search", - "back": "Back", - "next": "Next", - "submit": "Submit", - "reset": "Reset", - "copy": "Copy", - "copied": "Copied!", - "enabled": "Enabled", - "disabled": "Disabled", - "active": "Active", - "inactive": "Inactive", - "noData": "No data available", - "nothingHere": "Nothing here yet", - "configure": "Configure", + "add": "Ongeza", + "edit": "Hariri", + "search": "Tafuta", + "back": "Rudi", + "next": "Ifuatayo", + "submit": "Wasilisha", + "reset": "Weka upya", + "copy": "Nakili", + "copied": "Imenakiliwa!", + "enabled": "Imewashwa", + "disabled": "Imezimwa", + "active": "Inatumika", + "inactive": "Haitumiki", + "noData": "Hakuna data inayopatikana", + "nothingHere": "Bado hakuna chochote hapa", + "configure": "Sanidi", "manualConfig": "Usanidi wa mikono", - "manage": "Manage", - "name": "Name", - "actions": "Actions", - "status": "Status", - "type": "Type", + "manage": "Dhibiti", + "name": "Jina", + "actions": "Vitendo", + "status": "Hali", + "type": "Aina", "model": "Model", - "models": "models", - "provider": "Provider", + "models": "miundo", + "provider": "Mtoa huduma", "unknownProvider": "Mtoa huduma asiyejulikana", - "account": "Account", - "time": "Time", - "details": "Details", - "created": "Created", - "lastUsed": "Last Refreshed", - "loadMore": "Load More", - "noResults": "No results found", - "reloadPage": "Reload Page", - "connected": "Connected", - "disconnected": "Disconnected", - "notConfigured": "Not configured", - "testConnection": "Test Connection", - "enable": "Enable", - "disable": "Disable", - "columns": "Columns", - "newest": "Newest", - "oldest": "Oldest", - "all": "All", - "none": "None", - "yes": "Yes", - "no": "No", + "account": "Akaunti", + "time": "Muda", + "details": "Maelezo", + "created": "Imeundwa", + "lastUsed": "Ilionyeshwa Upya Mara ya Mwisho", + "loadMore": "Pakia Zaidi", + "noResults": "Hakuna matokeo yaliyopatikana", + "reloadPage": "Pakia Ukurasa Upya", + "connected": "Imeunganishwa", + "disconnected": "Muunganisho umekatika", + "notConfigured": "Haijasanidiwa", + "testConnection": "Jaribu Muunganisho", + "enable": "Washa", + "disable": "Zima", + "columns": "Safu wima", + "newest": "Mpya zaidi", + "oldest": "Ya zamani zaidi", + "all": "Zote", + "none": "Hakuna", + "yes": "Ndiyo", + "no": "Hapana", "on": "IMEWASHWA", "off": "IMEZIMWA", - "warning": "Warning", - "note": "Note", - "free": "Free", - "skipToContent": "Skip to content", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", - "accept": "Accept", - "accountId": "Account ID", + "warning": "Onyo", + "note": "Kumbuka", + "free": "Bila malipo", + "skipToContent": "Ruka hadi kwenye maudhui", + "maintenanceServerIssues": "Seva inakumbwa na matatizo. Baadhi ya vipengele huenda visipatikane.", + "maintenanceServerUnreachable": "Seva haipatikani. Inaunganisha tena...", + "accept": "Kubali", + "accountId": "Kitambulisho cha Akaunti", "alias": "Alias", - "apiKeyId": "API Key ID", - "apiKeyName": "API Key Name", - "apiKeySecret": "API Key Secret", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "apiKeyId": "Kitambulisho cha Ufunguo wa API", + "apiKeyName": "Jina la Ufunguo wa API", + "apiKeySecret": "Siri ya Ufunguo wa API", + "authorization": "Uidhinishaji", + "content-type": "Aina ya Maudhui", + "content-length": "Urefu wa Maudhui", "cookie": "Cookie", - "file": "File", - "host": "Host", + "file": "Faili", + "host": "Mwenyeji", "id": "ID", - "import": "Import", + "import": "Leta", "limit": "Limit", "offset": "Offset", - "open": "Open", - "origin": "Origin", - "promptTokens": "Prompt Tokens", - "completionTokens": "Completion Tokens", - "totalTokens": "Total Tokens", - "rawModel": "Raw Model", - "scope": "Scope", - "skill": "Skill", - "sortBy": "Sort By", - "sortOrder": "Sort Order", - "tab": "Tab", + "open": "Fungua", + "origin": "Asili", + "promptTokens": "Tokeni za Kidokezo", + "completionTokens": "Tokeni za Ukamilishaji", + "totalTokens": "Jumla ya Tokeni", + "rawModel": "Muundo Ghafi", + "scope": "Upeo", + "skill": "Ujuzi", + "sortBy": "Panga Kwa", + "sortOrder": "Mpangilio wa Kupanga", + "tab": "Kichupo", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "Eneo la maandishi", + "tool": "Zana", + "toolId": "Kitambulisho cha Zana", "web": "Web", - "whereUsed": "Where Used", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "resolve": "Resolve", - "force": "Force", + "whereUsed": "Mahali Inapotumika", + "whitelist": "Orodha ya Kuruhusu", + "blacklist": "Orodha ya Kuzuia", + "resolve": "Tatua", + "force": "Lazimisha", "base64url": "Base64 URL", "hex": "Hex", - "range": "Range", - "component": "Component", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", - "code": "Code", - "compatible": "Compatible", - "chat-completions": "Chat Completions", + "range": "Masafa", + "component": "Kijenzi", + "redirect_uri": "URI ya Kuelekeza Upya", + "idempotency-key": "Ufunguo wa Idempotensi", + "error_description": "Maelezo ya Hitilafu", + "code": "Msimbo", + "compatible": "Inaoana", + "chat-completions": "Ukamilishaji wa Gumzo", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", - "hours": "Hours", + "auth_token": "Tokeni ya Uthibitishaji", + "crypto": "Kripto", + "hours": "Saa", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", - "resolveConnectionId": "Resolve Connection ID", - "resolve_connection_id": "Resolve Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "proxy_id": "Kitambulisho cha Proksi", + "proxyId": "Kitambulisho cha Proksi", + "connectionId": "Kitambulisho cha Muunganisho", + "resolveConnectionId": "Tatua Kitambulisho cha Muunganisho", + "resolve_connection_id": "Tatua Kitambulisho cha Muunganisho", + "scope_id": "Kitambulisho cha Upeo", + "scopeId": "Kitambulisho cha Upeo", + "jwtSecret": "Siri ya JWT", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", "builder-id": "Builder ID", - "musicDesc": "Music Description", - "musicGeneration": "Music Generation", + "musicDesc": "Maelezo ya Muziki", + "musicGeneration": "Utengenezaji wa Muziki", "idc": "IDC", - "cloud-status-changed": "Cloud status changed", - "where_used": "Where Used", - "windowMs": "Window (ms)", + "cloud-status-changed": "Hali ya wingu imebadilika", + "where_used": "Mahali Inapotumika", + "windowMs": "Dirisha (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", - "Failed to save pricing": "Failed to save pricing", - "Failed to reset pricing": "Failed to reset pricing", - "apikey": "API Key", + "TOOL_ALLOWLIST": "Orodha ya Zana Zinazoruhusiwa", + "TOOL_DENYLIST": "Orodha ya Zana Zilizozuiwa", + "Failed to save pricing": "Imeshindwa kuhifadhi bei", + "Failed to reset pricing": "Imeshindwa kuweka upya bei", + "apikey": "Ufunguo wa API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Nenda kwenye Dashibodi", + "checkSystemStatus": "Angalia Hali ya Mfumo", + "selectModel": "Chagua Muundo", "addModel": "Ongeza modeli", "effortNone": "Hakuna", "effortLow": "Chini", @@ -162,12 +162,12 @@ "effortMax": "Upeo", "effortUltra": "Ultra", "reasoningEffort": "Jitihada za kufikiri", - "wireApi": "Wire API", + "wireApi": "API ya Wire", "modelAliases": "Majina mbadala ya modeli", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Michanganyiko", + "noModelsFound": "Hakuna miundo iliyopatikana", + "clear": "Futa", + "done": "Imekamilika", "selectAll": "Chagua zote", "unselectAll": "Ondoa uteuzi", "visibleModels": "zinazoonekana", @@ -184,519 +184,519 @@ "selectAllProviders": "Angalia watoa huduma wote", "clearProviderSelection": "ondoa alama kwenye watoa huduma", "providersSelectedCount": "watoa {count} waliokaguliwa", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Hitilafu Imetokea", + "comboDeleted": "Mchanganyiko Umefutwa", + "hide": "Ficha", + "creating": "Inaunda", + "comboCreated": "Mchanganyiko Umeundwa", + "swapFormats": "Badilisha Miundo", + "daysAgo": "Siku Zilizopita", + "retries": "Majaribio Tena", + "errorDuringRestore": "Hitilafu Wakati wa Kurejesha", + "eventsAppearHint": "Kidokezo cha Matukio Kuonekana", + "noLockouts": "Hakuna Vizuizi vya Kufungiwa", + "webSearchDesc": "Maelezo ya Utafutaji wa Wavuti", + "audioProvidersHeading": "Watoa Huduma za Sauti", "cloudAgentProviders": "Watoa huduma wa Wakala wa Wingu", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Dakika Zilizopita", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "Inaonyeshwa Moja kwa Moja na Kujisasisha Kiotomatiki", + "webSearch": "Utafutaji wa Wavuti", + "anthropicPrefixPlaceholder": "Kishikilia Nafasi cha Kiambishi Awali cha Anthropic", + "addModelToCombo": "Ongeza Muundo kwenye Mchanganyiko", + "failedToLoad": "Imeshindwa Kupakia", + "categoryMedia": "Kategoria ya Midia", + "enableCloud": "Washa Wingu", + "expirationBannerExpiringSoon": "Bango la Muda wa Kutumika Unaokaribia Kuisha", + "retry": "Jaribu Tena", + "embeddings": "Upachikaji", + "errorCount": "Idadi ya Hitilafu", + "backupReasonManual": "Sababu ya Hifadhi Nakala: Mwenyewe", + "safeSearchModerate": "Utafutaji Salama wa Wastani", + "activeLimiters": "Vikomo Vinavyotumika", + "a2aCardTitle": "Kichwa cha Kadi ya A2A", + "cloudWorkerUnreachable": "Cloud Worker Haipatikani", + "testFailed": "Jaribio Limeshindwa", + "compatibleBaseUrlHint": "Kidokezo cha Base URL Inayotangamana", + "usageTracking": "Ufuatiliaji wa Matumizi", + "disableCloudTitle": "Zima Cloud", + "noConnections": "Hakuna Miunganisho", + "providerHealth": "Hali ya Mtoa Huduma", + "confirmDbImport": "Thibitisha Uingizaji wa Db", + "notAvailableSymbol": "Alama ya Kutopatikana", + "backupsAvailable": "Nakala Rudufu Zinapatikana", + "providerAuto": "Mtoa Huduma wa Kiotomatiki", + "newProviderNamePlaceholder": "Kishikilia Nafasi cha Jina la Mtoa Huduma Mpya", + "a2aQuickStartStep2": "Hatua ya 2 ya Kuanza Haraka kwa A2A", + "ok": "Sawa", + "available": "Inapatikana", + "noBackupYet": "Bado Hakuna Nakala Rudufu", + "more": "Zaidi", + "noCompatibleYet": "Bado Hakuna Inayooana", + "multiProvider": "Watoa Huduma Wengi", + "repairEnvHint": "Kidokezo cha Kurekebisha Env", + "disablingCloud": "Inazima Cloud", + "testBench": "Mazingira ya Majaribio", + "valid": "Halali", + "cloudBenefitShare": "Faida ya Kushiriki ya Cloud", + "mcpCardTitle": "Kichwa cha Kadi ya Mcp", + "disableConfirm": "Thibitisha Kuzima", + "filters": "Vichujio", + "expirationBannerExpiredDesc": "Maelezo ya Bango la Muda Kuisha", + "saveComboDefaults": "Hifadhi Chaguo-Msingi za Mchanganyiko", + "cloudConnectedVerified": "Cloud Imeunganishwa na Kuthibitishwa", + "uptime": "Muda wa Uendeshaji", + "compatibleProdPlaceholder": "Kishikilia Nafasi cha Bidhaa Inayooana", + "fallbackChainsTitle": "Kichwa cha Minyororo ya Dharura", + "oauthLabel": "Lebo ya Oauth", + "a2aCardDescription": "Maelezo ya Kadi ya A2A", + "okShort": "Sawa", + "maintenance": "Matengenezo", + "formatConverter": "Kigeuzi cha Umbizo", + "zedImportNetworkError": "Hitilafu ya Mtandao ya Uingizaji wa Zed", + "apiKeyLabel": "Lebo ya Api Key", + "noModelsForProvider": "Hakuna Modeli za Mtoa Huduma", + "mcpCardDescription": "Maelezo ya Kadi ya Mcp", + "apiTypeLabel": "Lebo ya Aina ya Api", + "configuredProvidersLabel": "Lebo ya Watoa Huduma Waliosanidiwa", + "maxRetriesLabel": "Lebo ya Idadi ya Juu ya Majaribio Tena", + "title": "Kichwa", + "output": "Matokeo", + "prefixHint": "Kidokezo cha Kiambishi Awali", + "skipWizard": "Ruka Mchawi wa Usanidi", + "failedCount": "Idadi Iliyoshindwa", + "confirmDbImportDesc": "Maelezo ya Kuthibitisha Uingizaji wa DB", + "entries": "Maingizo", + "until": "Hadi", + "disableCombo": "Zima Mchanganyiko", + "liveMonitorDescriptionPrefix": "Kiambishi Awali cha Maelezo ya Ufuatiliaji wa Moja kwa Moja", + "runningCount": "Idadi Inayoendelea", + "noActiveConnectionsInGroup": "Hakuna Miunganisho Inayotumika Katika Kikundi", + "savedSuccessfully": "Imehifadhiwa kwa Mafanikio", + "systemStorage": "Hifadhi ya Mfumo", + "videoDesc": "Maelezo ya Video", + "maxResults": "Idadi ya Juu ya Matokeo", + "timeRangeMonth": "Kipindi cha Mwezi", + "testSummary": "Muhtasari wa Jaribio", + "failedSetPassword": "Imeshindwa Kuweka Nenosiri", + "audio": "Sauti", + "restore": "Rejesha", + "disableWarning": "Zima Onyo", + "moderationsDesc": "Maelezo ya Udhibiti wa Maudhui", + "providerHealthStatusAria": "Aria ya Hali ya Afya ya Mtoa Huduma", + "modelNamePlaceholder": "Kishikilia Nafasi cha Jina la Muundo", + "mcpQuickStartStep2": "Hatua ya 2 ya Kuanza Haraka kwa MCP", + "quickStart": "Kuanza Haraka", + "fullExportFailedWithError": "Uhamishaji Kamili Umeshindwa kwa Hitilafu", + "loadingBackups": "Inapakia Nakala Rudufu", + "anthropicBaseUrlPlaceholder": "Kishikilia Nafasi cha URL Msingi cha Anthropic", + "description": "Maelezo", + "noProviderFound": "Hakuna Mtoa Huduma Aliyepatikana", + "auto": "Otomatiki", + "protocolsDescription": "Maelezo ya Itifaki", + "cloudSessionNote": "Dokezo la Kipindi cha Cloud", + "advancedSettings": "Mipangilio ya Kina", + "defaultStrategy": "Mkakati Chaguomsingi", + "purgeExpiredLogs": "Futa Kumbukumbu Zilizopitwa na Wakati", + "justNow": "Sasa Hivi", + "providerTestFailed": "Jaribio la Mtoa Huduma Limeshindwa", + "openaiBaseUrlPlaceholder": "Kishikilia Nafasi cha URL Msingi ya Openai", + "image": "Picha", + "failedCreateChain": "Imeshindwa Kuunda Msururu", + "importDatabase": "Leta Hifadhidata", + "allDataLocal": "Data Zote ni za Ndani", + "sectionTitle": "Kichwa cha Sehemu", + "failedToggle": "Imeshindwa Kubadilisha Hali", + "editCombo": "Hariri Mchanganyiko", + "testResults": "Matokeo ya Jaribio", + "searchQuery": "Hoja ya Utafutaji", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", - "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "duplicate": "Rudufu", + "createCombo": "Unda Mchanganyiko", + "searchTypeWeb": "Aina ya Utafutaji: Wavuti", + "addChain": "Ongeza Msururu", + "prefixLabel": "Lebo ya Kiambishi Awali", + "listModelsDesc": "Maelezo ya Orodha ya Miundo", + "databaseSize": "Ukubwa wa Hifadhidata", + "chainCreated": "Msururu Umeundwa", + "providerTestTimeout": "Muda wa Jaribio la Mtoa Huduma Umeisha", + "routingStrategy": "Mkakati wa Uelekezaji", + "translateAction": "Kitendo cha Kutafsiri", + "exportFailed": "Uhamishaji Umeshindwa", + "connectedVerificationPending": "Imeunganishwa, Uthibitishaji Unasubiri", + "a2aQuickStartTitle": "Kichwa cha Kuanza Haraka cha A2A", + "couldNotTest": "Haikuweza Kujaribiwa", + "testAllCompatible": "Jaribu Zote Zinazooana", + "anthropicCompatibleName": "Jina Linalooana na Anthropic", + "disabling": "Inazima", + "failedEnable": "Imeshindwa Kuwasha", + "categoryUtility": "Kategoria ya Huduma", + "customUrlOptional": "URL Maalum (Si Lazima)", + "localProviders": "Watoa Huduma wa Ndani", + "comboNamePlaceholder": "Kishikilia Nafasi cha Jina la Mchanganyiko", + "memoryRss": "Kumbukumbu RSS", + "disableProvider": "Zima Mtoa Huduma", + "welcomeDesc": "Maelezo ya Kukaribisha", + "nameLabel": "Lebo ya Jina", + "allOperational": "Zote Zinafanya Kazi", + "backupNow": "Hifadhi Nakala Sasa", + "providerMaxRetriesAria": "ARIA ya Idadi ya Juu ya Majaribio ya Mtoa Huduma", + "textToSpeechDesc": "Maelezo ya Kubadilisha Maandishi kuwa Matamshi", + "machineId": "Kitambulisho cha Mashine", + "globalProxy": "Proksi ya Kimataifa", + "hitsMisses": "Mafanikio na Makosa", + "testDesc": "Maelezo ya Jaribio", + "chatDesc": "Maelezo ya Gumzo", + "importSuccess": "Uingizaji Umefaulu", + "chat": "Gumzo", + "a2aQuickStartStep1": "Hatua ya 1 ya Kuanza Haraka kwa A2A", + "importFailed": "Uingizaji Umeshindwa", + "inputPlaceholder": "Kishikilia Nafasi cha Ingizo", + "providerModelsTitle": "Kichwa cha Miundo ya Mtoa Huduma", + "lastBackup": "Nakala Rudufu ya Mwisho", + "yourEndpoint": "Endpoint Yako", + "autoDisableThresholdDesc": "Maelezo ya Kizingiti cha Kuzima Kiotomatiki", + "rerankDesc": "Maelezo ya Upangaji Upya", + "modelsPathPlaceholder": "Kishikilia Nafasi cha Njia ya Miundo", + "noCombosYet": "Bado Hakuna Michanganyiko", + "connectedVerificationPendingWithError": "Imeunganishwa, Uthibitishaji Unasubiri kwa Sababu ya Hitilafu", + "comboDefaultsGuideHint1": "Kidokezo cha 1 cha Mwongozo wa Chaguo-msingi za Mchanganyiko", + "enableCloudTitle": "Kichwa cha Kuwasha Wingu", + "configuredProvidersHint": "Kidokezo cha Watoa Huduma Waliowekwa", + "paused": "Imesitishwa", + "llmProviders": "Watoa Huduma wa LLM", + "enableCombo": "Washa Mchanganyiko", + "removeProviderOverrideAria": "ARIA ya Kuondoa Ubatilishaji wa Mtoa Huduma", + "nodeVersion": "Toleo la Node", + "openai": "OpenAI", + "exportFailedWithError": "Uhamishaji Umeshindwa kwa Hitilafu", + "proxyConfigured": "Proksi Imesanidiwa", + "concurrencyPerModel": "Idadi ya Uendeshaji Sambamba kwa Kila Muundo", + "protocolTasksLabel": "Lebo ya Majukumu ya Itifaki", + "oauthProviders": "Watoa Huduma wa OAuth", + "lockedCount": "Idadi Iliyofungwa", + "deleteChainConfirm": "Thibitisha Kufuta Mlolongo", + "recentTranslations": "Tafsiri za Hivi Karibuni", + "zedImportButton": "Kitufe cha Kuingiza cha Zed", + "responsesDesc": "Maelezo ya Majibu", + "testedCount": "Idadi Iliyojaribiwa", + "providersCommaSeparatedPlaceholder": "Kishikilia Nafasi cha Watoa Huduma Waliotenganishwa kwa Koma", + "signatureDefaults": "Chaguo-msingi za Sahihi", + "errorCreating": "Hitilafu Wakati wa Kuunda", + "timeRangeYear": "Kipindi cha Mwaka", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", - "testBenchTab": "Test Bench", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "cloudDisabledSuccess": "Wingu Limezimwa kwa Mafanikio", + "deleteConfirm": "Thibitisha Kufuta", + "check": "Kagua", + "safeSearch": "Utafutaji Salama", + "protocolLastActivity": "Shughuli ya Mwisho ya Itifaki", + "openMcpDashboard": "Fungua Dashibodi ya Mcp", + "testBenchTab": "Benchi la Majaribio", + "chatPathLabel": "Lebo ya Njia ya Gumzo", + "retryDelay": "Kuchelewa kwa Jaribio Jipya", + "errorUpdating": "Hitilafu Wakati wa Kusasisha", + "ideCliIntegrations": "Miunganisho ya IDE na CLI", + "imageGeneration": "Utengenezaji wa Picha", + "apiKeyRequired": "Ufunguo wa API Unahitajika", + "resetAllTitle": "Kichwa cha Kuweka Upya Vyote", + "connectionError": "Hitilafu ya Muunganisho", + "modelName": "Jina la Modeli", + "apiKeyForCheck": "Ufunguo wa API wa Ukaguzi", + "cloudRequestTimeout": "Muda wa Ombi la Wingu Umeisha", + "showConfiguredOnly": "Onyesha Zilizosanidiwa Pekee", "showFreeOnly": "Bure pekee", "addFirstProvider": "Ongeza mtoa huduma wako wa kwanza", "addFirstProviderDesc": "Unganisha mtoa huduma wa AI ili kuanza kuelekeza maombi kupitia OmniRoute. Unaweza kutumia watoa huduma bila malipo, funguo za API au akaunti za OAuth.", "learnMore": "Jifunze zaidi", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Jumuisha Vikoa", + "promptCache": "Akiba ya Vidokezo", + "cloudConnected": "Wingu Limeunganishwa", + "deleteChain": "Futa Msururu", + "chatPathPlaceholder": "Kishikilia Nafasi cha Njia ya Gumzo", + "databasePath": "Njia ya Hifadhidata", + "usingLocalServer": "Inatumia Seva ya Ndani", + "globalComboConfig": "Usanidi wa Mchanganyiko wa Jumla", + "backupFailed": "Kuhifadhi Nakala Kumeshindikana", + "tabProtocols": "Kichupo cha Itifaki", + "continue": "Endelea", + "categorySearch": "Utafutaji wa Kategoria", + "rateLimitStatus": "Hali ya Kikomo cha Kiwango", + "repairEnvSuccess": "Mazingira Yamerekebishwa kwa Mafanikio", + "nameRequired": "Jina Linahitajika", + "country": "Nchi", + "trackMetricsDesc": "Maelezo ya Ufuatiliaji wa Vipimo", + "durationSecondsShort": "Muda kwa Sekunde (Ufupi)", + "formatConverterDescription": "Maelezo ya Kigeuzi cha Umbizo", + "cloudBenefitAccess": "Ufikiaji wa Manufaa ya Wingu", + "maxRetries": "Idadi ya Juu ya Majaribio Tena", + "queueTimeout": "Muda wa Mwisho wa Foleni", "queueDepth": "Kina cha Foleni", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Ongeza Mtoa Huduma", + "realtime": "Wakati Halisi", + "totalTranslations": "Jumla ya Tafsiri", + "protocolActiveStreamsLabel": "Lebo ya Mitiririko Amilifu ya Itifaki", + "repairEnv": "Rekebisha Env", + "modelsCount": "Idadi ya Modeli", + "viewBackups": "Tazama Nakala Rudufu", + "responsesApi": "API ya Responses", + "copyComboName": "Nakili Jina la Mchanganyiko", + "failures": "Hitilafu", + "failedUpdate": "Imeshindwa Kusasisha", + "imageDesc": "Maelezo ya Picha", + "failedCreate": "Imeshindwa Kuunda", + "remainingOfLimit": "Iliyosalia Kati ya Kikomo", + "protocolsTitle": "Kichwa cha Itifaki", + "expirationBannerExpiringSoonDesc": "Maelezo ya Bango la Muda Unaokaribia Kuisha", + "source": "Chanzo", + "failed": "Imeshindwa", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "Hatua ya 1 ya Kuanza Haraka kwa MCP", + "runTest": "Endesha Jaribio", + "loadingFallbackChains": "Inapakia Minyororo ya Fallback", + "healthy": "Nzima", + "version": "Toleo", + "saveBlockWeighted": "Hifadhi Kizuizi Chenye Uzani", + "zedImportNone": "Hakuna cha Kuleta kutoka Zed", + "noBackupsYet": "Bado Hakuna Nakala Rudufu", + "noGlobalProxy": "Hakuna Proksi ya Kimataifa", + "noModels": "Hakuna Modeli", + "stickyLimit": "Kikomo Kinachodumu", + "passedCount": "Idadi Iliyofaulu", + "zedImportFailed": "Uletaji kutoka Zed Umeshindwa", + "saving": "Inahifadhi", + "testAll": "Jaribu Zote", + "globalProxyDesc": "Maelezo ya Proksi ya Kimataifa", + "latencyP99": "Ucheleweshaji P99", + "connectingToCloud": "Inaunganisha kwenye Cloud", + "responses": "Majibu", + "errorDeleting": "Hitilafu wakati wa kufuta", + "openaiPrefixPlaceholder": "Kishikilia nafasi cha kiambishi awali cha Openai", + "enterPassword": "Weka nenosiri", + "openA2aDashboard": "Fungua Dashibodi ya A2A", + "enableProvider": "Washa mtoa huduma", + "modeTest": "Jaribio la hali", + "failedDeleteChain": "Imeshindwa kufuta mnyororo", + "providerDesc": "Maelezo ya mtoa huduma", + "templateLoadHint": "Kidokezo cha kupakia kiolezo", + "lastFailure": "Hitilafu ya mwisho", + "moveDown": "Sogeza chini", + "providerLabel": "Lebo ya mtoa huduma", + "clearCacheFailed": "Imeshindwa kufuta akiba", + "imagesGenerations": "Uzalishaji wa picha", + "repairEnvWorking": "Urekebishaji wa mazingira unaendelea", + "millisecondsShort": "Milisekunde kwa kifupi", + "globalLabel": "Lebo ya jumla", + "failuresPlural": "Kushindwa kwa wingi", + "completionsLegacyDesc": "Maelezo ya ukamilishaji wa zamani", + "searchProviders": "Tafuta watoa huduma", + "chatPathHint": "Kidokezo cha njia ya gumzo", + "defaultStrategyDesc": "Maelezo ya mkakati chaguomsingi", + "latencyP95": "Ucheleweshaji P95", + "textToSpeech": "Maandishi kuwa matamshi", + "searchType": "Aina ya utafutaji", + "messages": "Ujumbe", + "aggregatorsGateways": "Vikusanyaji na malango", + "comboStrategyAria": "ARIA ya mkakati mchanganyiko", + "input": "Ingizo", + "testingConnection": "Inajaribu muunganisho", + "excludeDomains": "Tenga vikoa", + "webCookieProviders": "Watoa huduma wa vidakuzi vya wavuti", + "allTestsPassed": "Majaribio yote yamefaulu", + "openaiCompatibleName": "Jina linalooana na Openai", + "warningCostOptimizedPartialPricing": "Onyo: gharama imeboreshwa kwa bei zisizo kamili", + "comboDefaultsGuideTitle": "Kichwa cha mwongozo wa chaguomsingi za mchanganyiko", + "hoursAgo": "Saa zilizopita", + "notAvailable": "Haipatikani", + "skipAndContinue": "Ruka na Uendelee", + "moderations": "Udhibiti wa Maudhui", + "proxyConfig": "Usanidi wa Proksi", + "upstreamProxyProviders": "Watoa Huduma wa Proksi ya Juu", + "exportAll": "Hamisha Zote", + "queuedCount": "Idadi Iliyowekwa Foleni", + "resetAll": "Weka Zote Upya", + "noTranslations": "Hakuna Tafsiri", + "avgLatency": "Wastani wa Ucheleweshaji", + "throttleStatus": "Hali ya Udhibiti wa Kasi", + "backupRetentionDesc": "Maelezo ya Uhifadhi wa Nakala Rudufu", + "noCBData": "Hakuna Data ya Cb", + "chainDeleted": "Mnyororo Umefutwa", + "timeLeft": "Muda Uliobaki", + "expirationBannerExpired": "Bango la Kuisha Muda Limekwisha Muda", + "language": "Lugha", + "invalidFileType": "Aina Batili ya Faili", + "monitoredProviders": "Watoa Huduma Wanaofuatiliwa", + "errors": "Hitilafu", + "heap": "Lundo", + "chatCompletions": "Ukamilishaji wa Gumzo", + "exampleTemplatesHint": "Kidokezo cha Violezo vya Mifano", + "retryDelayLabel": "Lebo ya Ucheleweshaji wa Kujaribu Tena", + "audioTranscription": "Unukuzi wa Sauti", + "fallbackChainsDesc": "Maelezo ya Minyororo ya Mbadala", + "exampleTemplates": "Violezo vya Mifano", + "connectionsCount": "Idadi ya Miunganisho", + "modelsPathLabel": "Lebo ya Njia ya Models", + "activeProvidersHint": "Kidokezo cha Watoa Huduma Amilifu", + "activeLockouts": "Vizuizi Amilifu", + "invalid": "Batili", + "skipPassword": "Ruka Nenosiri", + "moveUp": "Sogeza Juu", + "timeRange": "Kipindi cha Muda", + "stickyLimitDesc": "Maelezo ya Kikomo cha Ubandikaji", + "cloudBenefitEdge": "Faida ya Cloud ya Edge", + "custom": "Maalum", + "verifying": "Inathibitisha", + "baseUrlLabel": "Lebo ya URL Msingi", + "setPassword": "Weka Nenosiri", + "safeSearchStrict": "Utafutaji Salama Mkali", + "noChangesSinceBackup": "Hakuna Mabadiliko Tangu Nakala Rudufu", + "modelsPathHint": "Kidokezo cha Njia ya Models", + "audioTranscriptions": "Unukuzi wa Sauti", + "testCombo": "Jaribu Mchanganyiko", + "mcpQuickStartTitle": "Kichwa cha Mwongozo wa Kuanza Haraka wa Mcp", + "comboUpdated": "Mchanganyiko Umesasishwa", + "weighted": "Yenye Uzani", + "providers": "Watoa Huduma", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", - "chatTesterTab": "Chat Tester", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "noFallbackChainsDesc": "Hakuna Maelezo ya Minyororo ya Mbadala", + "yesImport": "Ndiyo, Leta", + "lockoutsAutoRefreshHint": "Kidokezo cha Kuonyesha Upya Kiotomatiki kwa Kufungiwa Nje", + "tabApis": "Kichupo cha Apis", + "sectionDescription": "Maelezo ya Sehemu", + "filter": "Chuja", + "purgeLogsFailed": "Imeshindwa Kufuta Kumbukumbu", + "latency": "Muda wa Kusubiri", + "testAllOAuth": "Jaribu O Auth Zote", + "mcpQuickStartStep3": "Hatua ya 3 ya Mwongozo wa Kuanza Haraka wa Mcp", + "repairEnvFailed": "Imeshindwa Kurekebisha Env", + "zedImportHint": "Kidokezo cha Kuleta Zed", + "modelsAcrossEndpoints": "Models Katika Endpoints Mbalimbali", + "autoDisableBannedAccounts": "Zima Kiotomatiki Akaunti Zilizopigwa Marufuku", + "securityDesc": "Maelezo ya Usalama", + "listModels": "Orodhesha Models", + "backupRestore": "Kuhifadhi na Kurejesha Nakala Rudufu", + "target": "Lengo", + "zedImportSuccess": "Zed Imeletwa kwa Mafanikio", + "lastHeaderUpdate": "Sasisho la Mwisho la Kijajuu", + "categoryCore": "Aina ya Msingi", + "noFallbackChains": "Hakuna Minyororo ya Mbadala", + "noSearchProviders": "Hakuna Watoa Huduma za Utafutaji", + "autoBalance": "Usawazishaji Kiotomatiki", + "noModelsYet": "Bado Hakuna Models", + "signatureFamily": "Familia ya Sahihi", + "externalApiCalls": "Miito ya Nje ya Api", + "providerOverridesDesc": "Maelezo ya Ubatilishaji wa Watoa Huduma", + "signatureTool": "Zana ya Sahihi", + "connectionFailed": "Muunganisho Umeshindwa", + "activeLimitersPlural": "Vizuiaji Vinavyotumika kwa Wingi", + "doneDesc": "Maelezo ya Kukamilika", + "down": "Chini", + "noDataYet": "Bado Hakuna Data", + "activeProviders": "Watoa Huduma Wanaotumika", + "nameInvalid": "Jina Si Sahihi", + "skip": "Ruka", + "createChain": "Unda Mlolongo", + "audioSpeech": "Sauti na Usemi", + "cacheCleared": "Akiba Imefutwa", + "searchTypeNews": "Aina ya Utafutaji: Habari", + "durationMillisecondsShort": "Muda (ms)", + "addOpenAICompatible": "Ongeza Inayooana na OpenAI", + "chatTesterTab": "Kijaribu Gumzo", + "queued": "Imewekwa Kwenye Foleni", + "domainPlaceholder": "Kishikilia Nafasi cha Kikoa", + "durationMinutesShort": "Muda (dak.)", + "verifyingConnection": "Inathibitisha Muunganisho", + "imageProviders": "Watoa Huduma za Picha", + "protocolToolsLabel": "Lebo ya Zana za Itifaki", + "queryPlaceholder": "Kishikilia Nafasi cha Hoja", + "videoGeneration": "Utengenezaji wa Video", + "timeRangeWeek": "Kipindi: Wiki", + "limitExhausted": "Kikomo Kimefikiwa", + "failedDisable": "Imeshindwa Kuzima", + "inMemoryNote": "Dokezo la Kumbukumbu ya Ndani", + "compatibleHint": "Kidokezo cha Uoanifu", + "errorShort": "Hitilafu Fupi", + "advancedHint": "Kidokezo cha Kina", + "restoreFailed": "Urejeshaji Umeshindwa", + "searchProvidersHeading": "Watoa Huduma za Utafutaji", + "comboName": "Jina la Mchanganyiko", + "autoDisableDescription": "Maelezo ya Kuzima Kiotomatiki", + "embeddingsDesc": "Maelezo ya Upachikaji", + "operational": "Inafanya Kazi", + "testAllApiKey": "Jaribu Funguo Zote za API", + "backupCreated": "Nakala Rudufu Imeundwa", + "errorDuringImport": "Hitilafu Wakati wa Kuingiza", + "comboDefaultsGuideHint2": "Kidokezo cha 2 cha Mwongozo wa Chaguomsingi za Mchanganyiko", + "connecting": "Inaunganisha", + "fillModelAndProviders": "Jaza Muundo na Watoa Huduma", + "syncing": "Inasawazisha", + "resetConfirm": "Thibitisha Kuweka Upya", + "trackMetrics": "Fuatilia Vipimo", + "successful": "Imefaulu", + "recovering": "Inarejesha", + "autoDisableThreshold": "Kizingiti cha Kuzima Kiotomatiki", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Inasawazisha Data", + "cloudBenefitPorts": "Milango ya Manufaa ya Wingu", + "compatibleProviders": "Watoa Huduma Wanaooana", "freeTierProviders": "Watoa Huduma za Kiwango cha Bure", "freeTierLabel": "Kiwango cha bure kinapatikana", "freeTierProvidersDesc": "Watoa huduma walio na viwango vya bure - wengine wanahitaji kujisajili kwa ufunguo wa API, wengine hawahitaji kitambulisho hata kidogo.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Futa Akiba", + "reqs": "Maombi", + "addAnthropicCompatible": "Ongeza Mtoa Huduma Anayeoana na Anthropic", + "apiKeyProviders": "Watoa Huduma wa Ufunguo wa API", + "tabsAria": "ARIA ya Vichupo", + "resetting": "Inaweka Upya", + "millisecondsAbbr": "Kifupisho cha Milisekunde", + "backupReasonPreRestore": "Sababu ya Kuhifadhi Nakala Kabla ya Kurejesha", + "disableCloud": "Zima Wingu", + "newProviderNameAria": "ARIA ya Jina la Mtoa Huduma Mpya", + "passwordsMismatch": "Manenosiri Hayalingani", + "a2aQuickStartStep3": "Hatua ya 3 ya Kuanza Haraka kwa A2A", + "liveMonitorDescriptionSuffix": "Kiambishi cha Maelezo ya Kifuatiliaji cha Moja kwa Moja", + "failedAddProvider": "Imeshindwa Kuongeza Mtoa Huduma", + "addAtLeastOneProvider": "Ongeza Angalau Mtoa Huduma Mmoja", + "reasonSeparator": "Kitenganishi cha Sababu", + "zedImporting": "Zed Inaingiza", + "confirmPasswordPlaceholder": "Kishikilia Nafasi cha Thibitisha Nenosiri", + "whatYouGet": "Unachopata", + "signatureSession": "Saini ya Kipindi", + "errorCountNoCode": "Idadi ya Hitilafu Bila Msimbo", + "testing": "Inajaribu", + "providersCommaSeparated": "Watoa Huduma Waliotenganishwa kwa Koma", + "exportDatabase": "Hamisha Hifadhidata", + "hitRate": "Kiwango cha Mafanikio", + "completionsLegacy": "Ukamilishaji wa Zamani", + "removeModel": "Ondoa Muundo", + "timeRangeDay": "Kipindi cha Siku", + "cloudRequestFailed": "Ombi la Wingu Limeshindwa", + "updatedAt": "Ilisasishwa Saa", + "monitoredProvidersHint": "Kidokezo cha Watoa Huduma Wanaofuatiliwa", + "connectionSuccessful": "Muunganisho Umefanikiwa", + "latencyP50": "Ucheleweshaji P50", + "logsDeleted": "Kumbukumbu Zimefutwa", + "chatTester": "Kijaribu Gumzo", + "safeSearchOff": "Utafutaji Salama Umezimwa", + "nameHint": "Kidokezo cha Jina", + "debugToggle": "Kibadilishaji cha Utatuzi", + "embedding": "Upachikaji", + "issuesLabel": "Lebo ya Matatizo", + "optionAny": "Chaguo Lolote", + "maxNestingDepth": "Kina cha Juu Zaidi cha Uwekaji Ndani", + "rerank": "Panga Upya", + "checking": "Inakagua", + "getStarted": "Anza", + "restoreSuccess": "Urejeshaji Umefanikiwa", + "issuesDetected": "Matatizo Yamegunduliwa", + "signatureCache": "Akiba ya Sahihi", + "modelLockouts": "Kufungiwa kwa Miundo", + "usingCloudProxy": "Inatumia Proksi ya Wingu", + "loadingHealth": "Inapakia Hali", + "providerOverrides": "Mipangilio Maalum ya Watoa Huduma", + "audioTranscriptionDesc": "Maelezo ya Unukuzi wa Sauti", + "learnedFromHeaders": "Imejifunza Kutoka kwa Vichwa", + "totalRequests": "Jumla ya Maombi", + "cloudUnstableNote": "Dokezo la Kutokuwa Thabiti kwa Wingu", "gamificationAdmin": "Msimamizi wa Michezo", "monitorAnomaliesAndHealth": "Fuatilia hitilafu na afya ya mfumo", "flaggedAnomalies": "Matatizo Yaliyoripotiwa", @@ -704,7 +704,7 @@ "apiKey": "Ufunguo wa API", "xpLastHour": "XP (saa 1)", "zScore": "Z-Alama", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Inatia Shaka", "tokensCommunityServers": "Wahudumu wa Jumuiya", "tokensServerNamePlaceholder": "Jina la seva", "tokensApiKeyPlaceholder": "Kitufe cha API", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Inapakia zaidi...", "recommended": "Inapendekezwa", "understand": "Naelewa", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "Uchakataji wa makundi", + "batchConceptSubtitle": "Chakata maelfu ya maombi bila kusubiri kwa takriban 50% ya gharama (ndani ya saa 24). Inafaa kwa tathmini, uainishaji na upachikaji.", + "batchConceptHowItWorks": "Jinsi inavyofanya kazi", + "batchConceptBenefit50pct": "Punguzo la 50% kwa tokeni za ingizo na towe", + "batchConceptAsync24h": "Bila kusubiri, huku ukamilishaji ukifanyika ndani ya saa 24", + "batchConceptUseCases": "Inafaa zaidi kwa uainishaji wa wingi, tathmini na upachikaji", + "batchHeaderSubtitle": "Tekeleza maombi mengi kama kazi moja", + "batchStep1": "1 · Pakia JSONL", + "batchStep1Desc": "Ongeza maombi", + "batchStep2": "2 · Unda kundi", + "batchStep2Desc": "Tekeleza kazi", + "batchStep3": "3 · Pata matokeo", + "batchStep3Desc": "Pakua matokeo", + "filesConceptTitle": "Faili za kundi", + "filesConceptSubtitle": "Faili za JSONL zinazotumiwa na makundi: maombi ya ingizo, matokeo na hitilafu.", + "filesConceptInput": "Ingizo — JSONL yako yenye ombi moja kwa kila mstari", + "filesConceptOutput": "Matokeo — majibu ya maombi yaliyokamilika", + "filesConceptError": "Hitilafu — maombi yaliyoshindikana", + "filesConceptRetention": "Muda wa kuhifadhi: siku 30 kwa chaguo-msingi (siku 29 kwenye Anthropic)", + "wizardTitle": "Kundi jipya", + "wizardClose": "Funga", + "wizardNext": "Inayofuata", + "wizardBack": "Rudi", + "wizardCancel": "Ghairi", + "wizardCreate": "Unda kundi", + "wizardCreating": "Inaunda…", + "wizardStep1Destination": "Lengwa", + "wizardStep2Input": "Ingizo", + "wizardStep3Validate": "Thibitisha", + "wizardStep4Cost": "Gharama na uundaji", + "wizardProviderLabel": "Mtoa huduma", + "wizardEndpointLabel": "Endpointi", + "wizardModelLabel": "Modeli", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (tutaibadilisha)", + "wizardDropOrPick": "Dondosha faili au ubofye ili kuichagua", + "wizardCsvMappingTitle": "Oanisha safu wima za CSV → sehemu za ombi", + "wizardCsvMappingAddField": "Ongeza sehemu", "wizardCsvNoColumns": "Hakuna safu wima zilizogunduliwa kwenye kichwa cha CSV.", "wizardCsvIgnoreColumn": "— puuza —", "wizardCsvCustomIdMapped": "custom_id imepangwa", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "safu {count} zimechanganuliwa", "wizardCsvRowsSkipped": "safu {count} zimerukwa", "wizardCsvRowError": "Safu {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Mistari yote ni halali", "wizardValidating": "Inathibitisha…", "wizardValidationParseFailed": "Uthibitishaji umeshindwa — haikuweza kuchanganua maudhui.", "wizardValidationSummary": "{lines} mistari · {ids} custom_ids za kipekee", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "custom_ids rudufu zimegunduliwa:", "wizardValidationFirstErrors": "Makosa ({count} ya kwanza):", "wizardValidationLine": "Mstari {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Hitilafu za uthibitishaji", + "wizardValidationPreview": "Onyesho la awali (maombi 5 ya kwanza)", + "wizardValidationSamplingNote": "Faili ni kubwa — imethibitishwa kwa kuchukua sampuli (mistari 1000 ya kwanza + 100 ya mwisho). Uthibitishaji kamili hufanywa upande wa seva.", + "wizardCostSync": "Gharama ya usawazishaji", + "wizardCostBatch": "Gharama ya kundi (-50%)", + "wizardCostSavings": "Akiba", + "wizardCostEstimatedNotice": "Makadirio ya gharama — bili halisi inaweza kutofautiana.", + "wizardErrorUpload": "Imeshindikana kupakia faili. Jaribu tena.", + "wizardErrorCreate": "Imeshindikana kuunda kundi. Jaribu tena.", + "wizardEmptyProviders": "Unganisha mtoa huduma anayetumia makundi (OpenAI, Anthropic, au Gemini) ili kuunda kundi.", + "uploadModalTitle": "Pakia faili ya kundi", + "uploadModalDropOrPick": "Dondosha faili ya .jsonl au ubofye ili kuichagua", + "uploadModalUpload": "Pakia", + "uploadModalCancel": "Ghairi", + "uploadModalError": "Upakiaji umeshindikana. Jaribu tena.", + "uploadModalSuccess": "Imepakiwa", + "uploadModalSizeLimit": "Upeo wa juu MB 512", + "batchListNewButton": "Kundi jipya", + "batchListAutoRefresh": "Onyesha upya kiotomatiki kila sekunde 30", + "batchListCostColumn": "Gharama", + "batchActionCancel": "Ghairi", + "batchActionDownloadOutput": "Pakua matokeo", + "batchActionDownloadErrors": "Pakua hitilafu", + "batchActionRetry": "Jaribu tena zilizoshindikana", + "batchActionRetryConfirm": "Ujaribu tena maombi {n} yaliyoshindikana? Gharama ya mwisho inategemea tokeni halisi zilizotumika.", + "expirationBadgeCritical": "Muhimu sana", + "expirationBadgeWarning": "Hivi karibuni", + "expirationBadgeNormal": "Inasubiri", + "expirationBadgeExpired": "Muda umeisha", + "filesListUploadButton": "Pakia", + "filesListUsedByColumn": "Inatumiwa na", + "filesListUsedByNone": "Hakuna", + "filesListUsedByRoleInput": "ingizo", + "filesListUsedByRoleOutput": "tokeo", + "filesListUsedByRoleError": "hitilafu", + "filesListSizeColumn": "Ukubwa", + "batchListProgressPartial": "(sehemu)", + "batchListProviderColumn": "Mtoa huduma", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", - "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListProviderOther": "Nyingine", + "batchListTitle": "Makundi", + "batchListCount": "Makundi {count}", + "batchListRemovingCompleted": "Inaondoa…", + "batchListRemoveCompleted": "Ondoa zilizokamilika", + "batchListTableStatus": "Hali", + "batchListTableId": "Kitambulisho", + "batchListTableEndpoint": "Endpointi", + "batchListTableModel": "Modeli", + "batchListTableProgress": "Maendeleo", + "batchListTableCreated": "Imeundwa", + "batchListTableExpires": "Muda unaisha", + "batchListLoading": "Inapakia…", + "batchListEmpty": "Hakuna makundi yaliyopatikana", + "batchListValidating": "Inathibitisha…", + "batchStatusAll": "Hali zote", + "batchStatusInProgress": "Inaendelea", + "batchStatusValidating": "Inathibitisha", + "batchStatusFinalizing": "Inakamilisha", + "batchStatusCompleted": "Imekamilika", + "batchStatusFailed": "Imeshindwa", + "batchStatusCancelled": "Imeghairiwa", + "batchStatusCancelling": "Inaghairi", + "batchStatusExpired": "Muda umeisha", + "batchStatusCompletedWithFailures": "imekamilika ikiwa na hitilafu", + "batchStatusInProgressWithFailures": "inaendelea (ikiwa na hitilafu)", + "batchStatusFinalizingWithFailures": "inakamilisha (ikiwa na hitilafu)", + "batchStatusCancelledWithFailures": "imeghairiwa ikiwa na hitilafu", + "batchStatusExpiredWithFailures": "muda umeisha (sehemu tu)", + "wizardCostEstimating": "Inakadiria gharama…", + "wizardCostRequests": "Maombi", + "wizardCostInputTok": "tokeni za ingizo", + "wizardCostOutputTok": "tokeni za towe", + "wizardCostWindow": "Kipindi", + "wizardDestinationSelectProvider": "Chagua mtoa huduma…", + "wizardDestinationSelectModel": "Chagua modeli…", + "wizardDestinationConnectProvider": "Unganisha mtoa huduma", + "batchListBatchCreated": "Kundi {id} limeundwa — inaonyesha upya orodha…", + "batchListBatchCreatedDismiss": "Funga", + "batchListRefreshing": "Inaonyesha upya…", + "batchListRefresh": "Onyesha upya", + "uploadFileModalRemove": "Ondoa", + "uploadFileModalUploading": "Inapakia…", + "wizardInputReading": "Inasoma faili…", + "wizardInputReady": "Tayari", + "wizardInputLargeFileLabel": "Faili kubwa — uthibitishaji wa sampuli", + "wizardInputCsvJsonlReady": "JSONL imeundwa — iko tayari kuthibitishwa.", + "wizardInputLargeFileWarning": "Faili kubwa imegunduliwa — uthibitishaji unafanywa kwa sampuli (MB 5 za kwanza + KB 100 za mwisho). Uthibitishaji kamili unafanywa upande wa seva.", + "wizardCostWindow24h": "Kipindi cha kukamilisha cha saa 24", + "wizardValidationFieldsOk": "sehemu zinazohitajika ni halali", + "filesListDelete": "Futa", + "filesListDownload": "Pakua", + "batchDetailActionCancel": "Ghairi kundi", + "batchDetailActionRetry": "Jaribu tena maombi yaliyoshindwa", + "batchDetailCancelling": "Inaghairi…", + "batchDetailRetrying": "Inaandaa kujaribu tena…", + "batchDetailCancelConfirm": "Ughairi kundi hili? Maombi yanayoendelea yatasitishwa.", + "batchActionCancelError": "Imeshindwa kughairi kundi. Jaribu tena.", + "batchActionRetryError": "Imeshindwa kujaribu tena maombi yaliyofeli. Jaribu tena.", + "batchConceptRetentionNote": "Faili za matokeo na hitilafu huhifadhiwa kwa siku 30 (Anthropic: siku 29)", "batchFilesSizeColumn": "Ukubwa", "toggleNoAuthProvider": "Geuza mtoa huduma asiye na uthibitisho", "loadingModels": "Inapakia mifano…", @@ -978,7 +978,7 @@ "batchTimelineCancelling": "Kufuta", "batchTimelineCancelled": "Imesitishwa", "batchTokenUsage": "Matumizi ya Token", - "batchMetadata": "Metadata", + "batchMetadata": "Metadeta", "batchFileContents": "Maudhui ya Faili", "batchFileUsedByCount": "Inatumika na {count, plural, one {# kundi} other {# makundi}}", "batchFilePreview": "Muonekano", @@ -988,47 +988,47 @@ "disabled": "Imezimwa", "featureFlagOmnirouteEmergencyFallbackDescription": "Elekeza maombi yaliyomaliza bajeti kwenye mtoa huduma/muundo wa dharura wa akiba usiolipiwa.", "featureFlagArenaEloSyncEnabledDescription": "Washa usawazishaji wa mara kwa mara wa ELO wa ubao wa wanaoongoza wa Arena AI kwa viwango vya akili vya muundo.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Tengeneza na uingize muhtasari wa mazungumzo wakati uelekezaji wa michanganyiko unapobadilisha modeli. Zima ili kushughulikia mabadiliko ya modeli kwa kujitegemea na kuzuia maombi ya uhamishaji ya chinichini kwa michanganyiko yote iliyopo na ya baadaye.", "featureFlagExposeCcDiscoveryAliasesDescription": "Tangaza claude/<provider>/<model> vitambulisho vya kioo kwenye /v1/models ili orodha ya kugundua modeli za Claude Code iwe na modeli zisizo za Claude. Onyo: inafanya kuingia mara mbili kwenye katalogi kwa wateja wote inapowekwa kuwa ya ulimwengu mzima.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Swichi kuu ya lakabu za lango la no-think/<provider>/<model>. Imewashwa (chaguo-msingi): /v1/models hutangaza kibadala kisichofikiri kwa kila modeli ya Claude inayoweza kufikiri na inayostahiki, na id ya no-think/ inayotumwa katika ombi huelekezwa tena kwenye modeli halisi huku urazini ukizuiwa. Imezimwa: hakuna vibadala vinavyotangazwa na id ya no-think/ hushughulikiwa kama id nyingine yoyote ya modeli isiyojulikana. Chaguo la kila modeli la kujiunga/kujiondoa la ModelSpec.noThinkingAlias bado hutumika wakati kipengele hiki kimewashwa.", "featureFlagChatVirtualLanesEnabledDescription": "Washa njia za uandikishaji pepe zinazobadilika kwa kila mpangaji (tenant) kwa utumaji wa watoa huduma (#9654): mlipuko wa mpangaji mmoja hautoi tena 503 kwa mwingine. Kigezo cha mazingira cha OMNIROUTE_CHAT_VIRTUAL_LANES kinashinda mpangilio huu wa dashibodi; mabadiliko yanatumika wakati seva inapoanzishwa upya.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Kurasa za watoa huduma kwenye dashibodi: onyesha beji ya Bila Malipo kwenye viashiria ambavyo mtoa huduma anavitambua pekee — huondoa utambuzi wa kukisia kwa kutumia jina la kuonyesha, sehemu zisizo za Boolean zinazoashiria huduma ya bila malipo, na viambishi :free kwa watoa huduma waliosajiliwa ambao hawana kiwango cha huduma ya bila malipo kilichoandikwa. Kuzima huhifadhi kanuni ya awali ya beji.", + "featureFlagProxySkipRecentlyFailedDescription": "Makundi ya proksi na uzungushaji wa kila akaunti wa opencode huacha kutumia tena proksi iliyoshindwa hivi punde (jaribio la TCP lilikataliwa, au 429 ilipokelewa kupitia proksi hiyo) kwa kipindi maalumu kwa kila mchakato, ambacho huongezeka maradufu kila kushindwa kunaporudiwa, hadi kikomo fulani. Hakuna hali ya proksi inayoandikwa; kila chaguo linalowezekana likiwekwa kando, uteuzi hubaki bila kubadilika. Imezimwa kwa chaguo-msingi: mpangilio wa uteuzi ni sawa kabisa na uzungushaji wa kawaida.", + "featureFlagProxyPoolEgressObservationDescription": "Onyesha, chini ya kundi la proksi kwenye dashibodi, idadi ya anwani za IP za kutoka zilizozingatiwa ambazo zilitumiwa na wanachama wake katika saa 24 zilizopita, idadi ya miunganisho iliyozitumia, na idadi kubwa zaidi iliyoonekana nyuma ya anwani moja ya IP. Ni ya kusoma pekee, huhesabiwa kutoka kwenye kumbukumbu ya proksi, na haitumiki kamwe kuelekeza trafiki. Imezimwa kwa chaguo-msingi: kihariri cha kundi hakibadiliki na njia ya uchunguzi hujibu null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Katika ukaguzi wa afya ya proksi, ruhusu jaribio lililokataliwa na lengwa (401/403/429: proksi ilisambaza ombi, lakini unakoenda kukakataa anwani hii ya IP ya kutoka) liweke upya mfululizo wa kushindwa kwa proksi, kama jaribio lililohudumiwa. Imezimwa kwa chaguo-msingi: kukataliwa hubaki bila upande na hudumisha mfululizo huo. 5xx hubaki bila hitimisho kwa vyovyote vile, na kukataliwa kamwe hakuondoi, hakuzima wala kuwezesha tena proksi.", "sidebar": { - "home": "Home", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "usage": "Usage", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", + "home": "Nyumbani", + "dashboard": "Dashibodi", + "providers": "Watoa Huduma", + "combos": "Michanganyiko", + "usage": "Matumizi", + "analytics": "Uchanganuzi", + "costs": "Gharama", + "health": "Hali", "proxy": "Proksi", "limits": "Limits & Quotas", - "cliTools": "CLI Tools", - "media": "Media", - "settings": "Settings", - "translator": "Translator", - "playground": "Playground", - "searchTools": "Search Tools", - "agents": "Agents", + "cliTools": "Zana za CLI", + "media": "Midia", + "settings": "Mipangilio", + "translator": "Mtafsiri", + "playground": "Mazingira ya Majaribio", + "searchTools": "Zana za Utafutaji", + "agents": "Mawakala", "cloudAgents": "Mawakala wa Wingu", - "memory": "Memory", - "skills": "Skills", + "memory": "Kumbukumbu", + "skills": "Ujuzi", "omniSkills": "OmniSkills", "agentSkills": "Ujuzi wa Wakala", "chaosConfig": "Hali ya Machafuko", - "docs": "Docs", - "issues": "Issues", - "endpoints": "Endpoints", + "docs": "Nyaraka", + "issues": "Matatizo", + "endpoints": "Vituo vya Mwisho", "endpointsSubtitle": "URL zako za muunganisho wa AI", - "apiManager": "API Keys", + "apiManager": "Funguo za API", "apiManagerSubtitle": "Dhibiti funguo za API na ufikiaji", "embeddedServices": "Huduma Zilizounganishwa", "embeddedServicesSubtitle": "Dhibiti huduma za wakala wa ndani", - "logs": "Logs", + "logs": "Kumbukumbu za Matukio", "webhooks": "Viboko vya mtandao", "webhooksSubtitle": "Pata arifa kuhusu matukio", "logExport": "Kusafirisha kumbukumbu", @@ -1037,82 +1037,82 @@ "batchSubtitle": "Shughulikia maombi mengi", "contextCavemanSubtitle": "Ukandamizaji wa haraka", "contextRtkSubtitle": "Uchujaji wa pato", - "auditLog": "Audit Log", - "shutdown": "Shutdown", - "restart": "Restart", - "shutdownConfirm": "Shut down OmniRoute?", - "restartConfirm": "Restart OmniRoute?", + "auditLog": "Kumbukumbu ya Ukaguzi", + "shutdown": "Zima", + "restart": "Anzisha Upya", + "shutdownConfirm": "Uzime OmniRoute?", + "restartConfirm": "Uanzishe upya OmniRoute?", "version": "v{version}", "debug": "Debug", - "system": "System", - "help": "Help", + "system": "Mfumo", + "help": "Msaada", "primarySection": "Main", "cliSection": "CLI", "debugSection": "Debug", "systemSection": "System", "helpSection": "Help", - "serverDisconnected": "Server Disconnected", - "serverDisconnectedMsg": "The proxy server has been stopped or is restarting.", - "expandSidebar": "Expand sidebar", - "collapseSidebar": "Collapse sidebar", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", - "cliToolsShort": "Tools", + "serverDisconnected": "Seva Imetenganishwa", + "serverDisconnectedMsg": "Seva ya proksi imesimamishwa au inaanza upya.", + "expandSidebar": "Panua utepe wa pembeni", + "collapseSidebar": "Kunja utepe wa pembeni", + "themes": "Mandhari", + "presetColors": "Rangi maarufu", + "createTheme": "Unda mandhari", + "chooseColor": "Chagua rangi moja", + "themeCoral": "Matumbawe", + "themeBlue": "Bluu", + "themeRed": "Nyekundu", + "themeGreen": "Kijani", + "themeViolet": "Urujuani", + "themeOrange": "Machungwa", + "themeCyan": "Samawati-kijani", + "cliToolsShort": "Zana", "cache": "Cache", "cacheShort": "Cache", "batch": "Batch Testing", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "themeSystem": "Mfumo wa Mandhari", + "whitelabelingDesc": "Maelezo ya Uwekaji Chapa Maalum", + "switchThemes": "Badilisha Mandhari", + "themeAccentDesc": "Maelezo ya Rangi ya Msisitizo ya Mandhari", + "uploadFavicon": "Pakia Favicon", + "themeDark": "Mandhari Meusi", + "customLogoDesc": "Maelezo ya Nembo Maalum", + "sidebarVisibilityToggle": "Kitufe cha Kuonyesha au Kuficha Utepe wa Pembeni", + "themeAccent": "Rangi ya Msisitizo ya Mandhari", + "resetFavicon": "Weka Upya Favicon", + "whitelabeling": "Uwekaji Chapa Maalum", + "darkMode": "Hali Nyeusi", + "uploadLogo": "Pakia Nembo", + "themeLight": "Mandhari Meupe", + "appName": "Jina la Programu", + "appNameDesc": "Maelezo ya Jina la Programu", + "resetLogo": "Weka Upya Nembo", + "customFavicon": "Favicon Maalum", + "hideHealthLogs": "Ficha Kumbukumbu za Afya", + "customLogo": "Nembo Maalum", + "appearance": "Mwonekano", + "themeSelectionAria": "Aria ya Uchaguzi wa Mandhari", + "themeCreate": "Unda Mandhari", + "customFaviconDesc": "Maelezo ya Favicon Maalum", + "logoPreview": "Onyesho la Awali la Nembo", + "themeCustom": "Mandhari Maalum", + "hideHealthLogsDesc": "Ficha Maelezo ya Kumbukumbu za Afya", + "faviconPreview": "Onyesho la Awali la Favicon", + "changelog": "Kumbukumbu ya Mabadiliko", + "contextSection": "Muktadha na Akiba", + "contextCaveman": "Mtu wa Pangoni", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Mchanganyiko wa Injini", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Mipangilio ya Mbanano", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Studio ya Mchanganyiko", "combosLiveSubtitle": "Msururu wa uelekezaji wa moja kwa moja", "compressionStudio": "Compression Studio", "compressionExclusions": "Uondoaji", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Msururu wa injini ya moja kwa moja", "compressionExclusionsSubtitle": "Kupita kwa kila mfano/kiungo", "chaosConfigSubtitle": "Utekelezaji sambamba wa mifano mingi", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Uelekezaji", + "protocolsSection": "Itifaki", + "agentsAiSection": "Mawakala na AI", + "cacheContextSection": "Akiba na Muktadha", + "analyticsSection": "Uchanganuzi", + "costsSection": "Gharama", + "monitoringSection": "Ufuatiliaji", + "auditSecuritySection": "Ukaguzi na Usalama", + "devtoolsSection": "Zana za Wasanidi Programu", + "configurationSection": "Usanidi", + "aiFeaturesSection": "Vipengele vya AI", "mcp": "MCP", "a2a": "A2A", "plugins": "Plagini", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "Vituo vya API", + "batchFiles": "Faili", + "analyticsEvals": "Tathmini", + "analyticsSearch": "Tafuta", + "analyticsUtilization": "Matumizi", + "analyticsComboHealth": "Hali ya Mchanganyiko", + "analyticsCompression": "Mbanano", + "costsBudget": "Bajeti", "costsFreeTiers": "Bajeti ya Kiwango cha Bure", "costsFreeTiersSubtitle": "Posho za kila mwezi za tokeni za bure", "freeProviderRankings": "Viwango vya Watoa Huduma wa Bure", "freeProviderRankingsSubtitle": "Watoa huduma bora wa bure waliopangwa kwa alama za ELO za muundo", "radar": "Radar Katalog", "radarSubtitle": "Gemenskapsberikad gratis modellkatalog", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Kushiriki Kiwango cha Matumizi", + "costsPricing": "Bei", + "logsProxy": "Kumbukumbu za Proksi", + "logsConsole": "Konsoli", + "logsActivity": "Shughuli", + "auditMcp": "Ukaguzi wa MCP", "auditA2a": "Ukaguzi wa A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Mwonekano", + "settingsAi": "Mipangilio ya AI", + "settingsSecurity": "Usalama", "settingsAccessTokens": "Tokeni za Ufikiaji", "settingsFeatureFlags": "Bendera za Kipengele", "settingsCache": "Kikundi", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "Uidhinishaji", + "settingsRouting": "Uelekezaji", + "settingsResilience": "Ustahimilivu", "modelLockout": "Kufungiwa kwa Muundo", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Mipangilio ya Kina", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Kikomo cha Mtoa Huduma", + "providerQuota": "Kikomo cha Mtoa Huduma", + "runtime": "Mazingira ya Utekelezaji", + "consoleLogs": "Kumbukumbu za Konsoli", + "logsTimeline": "Mfuatano wa Matukio", "logsTimelineSubtitle": "Muda wa ombi la kuona", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Mazungumzo", + "conversationsSubtitle": "Mazungumzo ya mawakala ya zamu nyingi", + "globalRouting": "Uelekezaji wa Kimataifa", + "mitmProxy": "Proksi ya MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "Vipengele vya Mawakala", + "otherFeaturesSection": "Vipengele Vingine", + "compressionContextGroup": "Muktadha wa Mfinyazo", + "gamificationGroup": "Uchezeshaji", + "toolsGroup": "Zana", + "integrationsGroup": "Miunganisho", + "proxyGroup": "Proksi", + "costsParametersGroup": "Vigezo vya Gharama", + "auditGroup": "Ukaguzi", + "batchGroup": "Kundi", + "homeSubtitle": "Muhtasari wa dashibodi", + "providersSubtitle": "Dhibiti watoa huduma wa AI", + "quotaTrackerSubtitle": "Fuatilia vikomo vya matumizi", + "providerQuotaSubtitle": "Fuatilia vikomo vya matumizi vya watoa huduma", + "runtimeSubtitle": "Ustahimilivu na vipindi vya wakati halisi", + "contextCombosSubtitle": "Unganisha injini za mfinyazo", + "cliToolsSubtitle": "Sanidi mazingira ya utekelezaji ya CLI", + "agentsSubtitle": "Dhibiti mawakala wa ndani", + "cloudAgentsSubtitle": "Dhibiti ajenti za wingu", + "apiEndpointsSubtitle": "Fichua miisho maalum", + "proxySubtitle": "Mipangilio ya proksi ya HTTP", + "mitmProxySubtitle": "Udukuzi wa MITM", + "oneProxySubtitle": "Lango la proksi ya umma", + "leaderboard": "Jedwali la vinara", + "profile": "Wasifu", + "tokens": "Tokeni", + "gamificationAdmin": "Usimamizi wa Uchezeshaji", + "leaderboardSubtitle": "Viwango na mafanikio", + "profileSubtitle": "Akaunti na mapendeleo", + "tokensSubtitle": "Matumizi ya tokeni na bajeti", + "gamificationAdminSubtitle": "Ufuatiliaji wa hitilafu na kuzuia udanganyifu", + "usageSubtitle": "Takwimu za trafiki na matumizi", + "analyticsComboHealthSubtitle": "Utegemevu wa lengo la mchanganyiko", + "analyticsUtilizationSubtitle": "Matumizi ya watoa huduma", + "costsSubtitle": "Mchanganuo wa matumizi ya fedha", + "cacheSubtitle": "Viwango vya kupatikana kwenye akiba", + "analyticsCompressionSubtitle": "Takwimu za uokoaji wa tokeni", + "analyticsSearchSubtitle": "Uchanganuzi wa zana ya utafutaji", + "analyticsEvalsSubtitle": "Matokeo ya mkusanyiko wa tathmini", "providerStats": "Takwimu za Mtoa Huduma", "providerStatsSubtitle": "Vipimo vya muda wa kusubiri na utendaji", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Kumbukumbu za programu", + "logsProxySubtitle": "Kumbukumbu za trafiki ya proksi", + "consoleLogsSubtitle": "Matokeo ya dashibodi", + "logsActivitySubtitle": "Kumbukumbu ya shughuli za mtumiaji", + "healthSubtitle": "Ukaguzi wa afya ya mfumo", + "costsPricingSubtitle": "Kanuni za bei kwa kila modeli", + "costsBudgetSubtitle": "Vikomo vya bajeti", + "costsQuotaShareSubtitle": "Shiriki vikomo vya watoa huduma kati ya funguo", + "auditLogSubtitle": "Ukaguzi wa uidhinishaji", + "auditMcpSubtitle": "Ukaguzi wa seva ya MCP", + "auditA2aSubtitle": "Ukaguzi wa itifaki ya A2A", + "translatorSubtitle": "Ubadilishaji wa umbizo", + "playgroundSubtitle": "Jaribu vidokezo moja kwa moja", + "searchToolsSubtitle": "Rejista ya zana za utafutaji", + "memorySubtitle": "Kumbukumbu endelevu ya ajenti", + "omniSkillsSubtitle": "Rejista ya ujuzi wa Sandbox", + "agentSkillsSubtitle": "Rejista ya ujuzi wa A2A", + "mcpSubtitle": "Vidhibiti vya seva ya MCP", + "a2aSubtitle": "Seva ya itifaki ya A2A", "pluginsSubtitle": "Soko la plagini na usakinishaji", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Faili za midia zilizohifadhiwa kwenye akiba", + "batchFilesSubtitle": "Faili za ingizo/tokeo la bechi", + "settingsSubtitle": "Mipangilio yote", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Mandhari na mpangilio", + "settingsAiSubtitle": "Chaguo-msingi za tabia ya AI", + "globalRoutingSubtitle": "Kanuni za jumla za uelekezaji", + "settingsResilienceSubtitle": "Majaribio tena na vivunja mzunguko", + "settingsAdvancedSubtitle": "Chaguo za watumiaji mahiri", + "settingsSecuritySubtitle": "Uthibitishaji na usimbaji fiche", "settingsAccessTokensSubtitle": "Tokeni za CLI zenye upeo kwa ajili ya hali ya mbali", "settingsFeatureFlagsSubtitle": "Geuza uwezo wa mfumo", "settingsCacheSubtitle": "Katalogi ya mfano na uhifadhi wa majibu", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Upau wa pembeni", + "settingsSidebarSubtitle": "Geuza kukufaa mpangilio wa upau wa pembeni", "settingsAuthzSubtitle": "Hesabu ya njia na sera ya kupita", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Nyaraka", + "issuesSubtitle": "Ripoti hitilafu", + "changelogSubtitle": "Maelezo ya toleo", "costsQuotaPlans": "Mipango na Viwango", "costsQuotaPlansSubtitle": "Sanidi mipango kulingana na mtoa huduma", "activity": "Shughuli", @@ -1275,11 +1275,11 @@ "systemGroup": "Mfumo", "costsOverview": "Muhtasari", "costsOverviewSubtitle": "Uchambuzi wa gharama uliounganishwa", - "agentBridge": "Agent Bridge", + "agentBridge": "Daraja la Ajenti", "agentBridgeSubtitle": "Nasa trafiki ya wakala wa IDE", "trafficInspector": "Kikaguzi cha Trafiki", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Kagua trafiki ya maombi na majibu kutoka kwenye programu zako", + "trafficInspectorPurpose": "Ona kwa usahihi kile ambacho programu yako hutuma kwa na kupokea kutoka kwa watoa huduma za AI. Hufanya kazi na kiteja chochote kinachooana na OpenAI.", "cliCode": "Msimbo wa CLI", "cliCodeSubtitle": "Zana za msimbo zinazoelekeza kwenye OmniRoute", "cliAgents": "Mawakala wa CLI", @@ -1345,7 +1345,7 @@ "refresh": "Onyesha upya", "loading": "Inapakia vijiti vya wavuti...", "never": "Kamwe", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {hakuna hitilafu} one {hitilafu #} other {hitilafu #}}", "testWebhook": "Tuma Mtihani", "testSuccess": "Jaribio la mtandao limetumwa kwa mafanikio.", "testFailed": "Jaribio la mtandao limeshindwa.", @@ -1435,7 +1435,7 @@ "tutorial": "Jinsi ya kuunda webhook ya Discord:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "URL ya Webhook ya Slack", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "URL ya webhook iliyonakiliwa kutoka kwenye muunganisho wako wa Slack Incoming Webhooks.", "tutorial": "Jinsi ya kuunda webhook ya Slack:" @@ -1445,7 +1445,7 @@ "botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ", "botTokenHint": "Tokeni ya HTTP API iliyopokelewa kutoka kwa @BotFather wakati wa kuunda bot yako.", "chatId": "Kitambulisho cha Soga cha Telegram / Chaneli", - "chatIdPlaceholder": "-100123456789 or @channelname", + "chatIdPlaceholder": "-100123456789 au @channelname", "chatIdHint": "Kitambulisho cha kipekee cha nambari au jina la mtumiaji la umma la soga/chaneli.", "tutorial": "Jinsi ya kusanidi webhook ya Telegram:" } @@ -1563,91 +1563,91 @@ "mcpMetricTopTool": "Zana Bora" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "Mandhari", + "description": "Chagua mandhari iliyowekwa tayari au uunde yako mwenyewe kwa kutumia rangi moja", + "presetColors": "Rangi maarufu", + "customTheme": "Mandhari maalum", + "customThemeDesc": "Bofya unda mandhari na uchague rangi moja", + "createTheme": "Unda mandhari", + "activePreset": "Mandhari inayotumika" }, "header": { - "logout": "Logout", + "logout": "Ondoka", "quickNavigation": "Urambazaji wa haraka", "quickNavigationTitle": "Urambazaji wa haraka (⌘K / Ctrl+K)", "openQuickNavigation": "Fungua urambazaji wa haraka", "switchToLightMode": "Badilisha hadi modi ya mwanga", "switchToDarkMode": "Badilisha hadi modi ya giza", - "language": "Language", - "providers": "Providers", - "providerDescription": "Manage your AI provider connections", - "combos": "Combos", - "comboDescription": "Model combos with fallback", - "usage": "Usage & Analytics", - "usageDescription": "Monitor your API usage, token consumption, and request logs", - "analytics": "Analytics", - "analyticsDescription": "Charts, trends, and evaluation insights", - "cliTools": "CLI Tools", - "cliToolsDescription": "Configure CLI tools", - "home": "Home", - "homeDescription": "Welcome to OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "language": "Lugha", + "providers": "Watoa huduma", + "providerDescription": "Dhibiti miunganisho yako ya watoa huduma wa AI", + "combos": "Mikusanyiko", + "comboDescription": "Mikusanyiko ya modeli yenye mbadala", + "usage": "Matumizi na Uchanganuzi", + "usageDescription": "Fuatilia matumizi yako ya API, matumizi ya tokeni na kumbukumbu za maombi", + "analytics": "Uchanganuzi", + "analyticsDescription": "Chati, mienendo na maarifa ya tathmini", + "cliTools": "Zana za CLI", + "cliToolsDescription": "Sanidi zana za CLI", + "home": "Nyumbani", + "homeDescription": "Karibu OmniRoute", + "endpoint": "Vituo vya Mwisho", + "endpointDescription": "Dhibiti vituo vya mwisho vya proksi, MCP, A2A na API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Usimamizi na zana za seva ya Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", - "settings": "Settings", - "settingsDescription": "Manage your preferences", - "openaiCompatible": "OpenAI Compatible", - "anthropicCompatible": "Anthropic Compatible", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "a2aDescription": "Kazi na uangalizi wa itifaki ya Agent-to-Agent", + "settings": "Mipangilio", + "settingsDescription": "Dhibiti mapendeleo yako", + "openaiCompatible": "Inayooana na OpenAI", + "anthropicCompatible": "Inayooana na Anthropic", + "media": "Midia", + "mediaDescription": "Tengeneza picha, video na muziki", + "themes": "Mandhari", + "themesDescription": "Chagua mandhari ya rangi kwa paneli nzima ya dashibodi", + "costsDescription": "Fuatilia matumizi ya fedha, changanua mienendo na udhibiti bajeti yako ya AI kwa watoa huduma wote", + "cacheDescription": "Fuatilia ufanisi wa akiba ya vidokezo ya mtoa huduma na utumiaji tena wa majibu ya kisemantiki ya ndani.", + "limitsDescription": "Sanidi vikomo vya kasi na mgao kwa kila ufunguo wa API na mtoa huduma", + "runtimeDescription": "Uangalizi wa wakati halisi wa utekelezaji — vivunja saketi, vipindi vya kusubiri, vizuizi vya modeli, vipindi na arifa za mgao", + "apiManagerDescription": "Dhibiti funguo za API na udhibiti wa ufikiaji kwa instance yako ya OmniRoute", + "batchDescription": "Chakata idadi kubwa ya maombi bila kusubiri kwa kutumia miito ya API iliyowekwa katika mafungu", + "contextCavemanDescription": "Mfinyazo wa ujumbe unaotegemea kanuni, vifurushi vya lugha, uchanganuzi na vidhibiti vya hali ya matokeo.", + "contextRtkDescription": "Mfinyazo unaotambua amri kwa matokeo ya zana, kumbukumbu za terminali na matokeo ya uundaji.", + "contextCombosDescription": "Bainisha jinsi injini zinavyounganishwa kwa hali tofauti za uelekezaji.", + "changelogDescription": "Endelea kupata taarifa kuhusu vipengele na matangazo ya hivi karibuni ya jukwaa.", + "agentsDescription": "Dhibiti na usanidi zana za ajenti wa AI: Codex, Devin, Jules na ajenti maalum", + "cloudAgentsDescription": "Ratibu ajenti wa AI wanaotegemea wingu kwa ufuatiliaji wa moja kwa moja wa kazi na uidhinishaji wa mpango", + "memoryDescription": "Kumbukumbu endelevu ya mazungumzo yenye utafutaji wa kisemantiki na uwekaji faharasa wa matini kamili wa FTS5", + "skillsDescription": "Sakinisha na udhibiti ujuzi wa sandbox kwa utekelezaji otomatiki wa vidokezo na zana", + "agentSkillsDescription": "Katalogi ya ujuzi iliyo tayari kwa ajenti yenye kunakili URL kwa mbofyo mmoja kwa ajili ya ujumuishaji wa kiteja cha AI", + "translatorDescription": "Tafsiri na ujaribu vidokezo katika miundo mbalimbali ya API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "Jaribu vidokezo kwa mwingiliano ukitumia majibu ya moja kwa moja ya watoa huduma na ukaguzi wa muundo", + "searchToolsDescription": "Takwimu za utafutaji, uchanganuzi wa watoa huduma, viwango vya matumizi ya akiba, na ufuatiliaji wa gharama", + "logsDescription": "Kumbukumbu za maombi katika muda halisi, ufuatiliaji wa hitilafu, na kikaguzi cha matukio ya utiririshaji", + "auditDescription": "Rekodi ya ukaguzi wa uzingatiaji kuhusu matumizi ya ufunguo wa API, miito ya zana za MCP, na matukio ya sera", + "webhooksDescription": "Sanidi endpoint za webhook ili kupokea arifa za matukio katika muda halisi", + "healthDescription": "Muhtasari wa afya ya mfumo: watoa huduma, circuit breaker, vikomo vya kiwango, na hifadhidata", + "proxyDescription": "Sanidi mipangilio ya proksi ya upstream kwa miunganisho ya watoa huduma inayotoka nje", + "apiEndpointsDescription": "Dhibiti usanidi maalum wa endpoint za API na ubatilishaji wa uelekezaji", + "batchFilesDescription": "Vinjari na udhibiti faili za matokeo na majibu ya kazi za kundi", + "analyticsEvalsDescription": "Matokeo ya tathmini ya modeli na vigezo vya kulinganisha utendaji", + "analyticsSearchDescription": "Takwimu za hoja za utafutaji, viwango vya matumizi ya akiba, na ufuatiliaji wa gharama", + "analyticsUtilizationDescription": "Vipimo vya matumizi ya watoa huduma na upangaji wa uwezo", + "analyticsComboHealthDescription": "Afya na utendaji wa muda halisi wa usanidi wa uelekezaji wa combo", + "analyticsCompressionDescription": "Takwimu za ukandamizaji wa muktadha na uokoaji wa tokeni", + "costsBudgetDescription": "Vikomo vya bajeti na arifa za matumizi kwa kila ufunguo wa API na mtoa huduma", + "costsPricingDescription": "Usanidi maalum wa bei kwa ukokotoaji wa gharama za tokeni", + "logsProxyDescription": "Kumbukumbu za maombi ya proksi ya upstream na ukaguzi wa trafiki", + "logsConsoleDescription": "Matokeo ya dashibodi ya programu na kumbukumbu za utatuzi", + "logsActivityDescription": "Rekodi ya ukaguzi wa vitendo vya watumiaji na matukio ya mfumo", + "auditMcpDescription": "Rekodi ya ukaguzi wa miito ya zana za MCP na rekodi za uzingatiaji", "auditA2a": "Ukaguzi wa A2A", "auditA2aDescription": "Njia ya ukaguzi ya utekelezaji wa kazi ya A2A, mabadiliko ya serikali na rekodi za maombi ya ujuzi", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Mandhari, chapa, na ubinafsishaji wa mwonekano", + "settingsAiDescription": "Tabia za AI, bajeti za kufikiri, uwezo wa kuona, na mipangilio ya kumbukumbu", "settingsCacheDescription": "TTL kwa ingizo za cache za katalogi ya mfano", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Mipangilio ya uthibitishaji, uidhinishaji, na udhibiti wa ufikiaji", "featureFlags": "Bendera za Kipengele", "featureFlagsDescription": "Kudhibiti uwezo wa mfumo na vipengele vya majaribio", "featureFlagsActive": "{count} inatumika", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Hakuna alama zinazolingana na utafutaji wako", "featureFlagsSaved": "Bendera imesasishwa", "featureFlagsError": "Imeshindwa kusasisha bendera", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Kanuni za uelekezaji, lakabu za modeli, chaguo-msingi za combo, na mipangilio ya kushuka kwa utendaji", + "settingsResilienceDescription": "Usanidi wa circuit breaker, kujaribu tena, na njia mbadala", + "settingsAdvancedDescription": "Kanuni za kina za payload, vikomo vya maombi, na mipangilio ya API ya proksi", + "mitmProxyDescription": "Sanidi mipangilio ya proksi ya MITM kwa ukaguzi wa trafiki na utatuzi", + "oneProxyDescription": "Sanidi mipangilio ya 1Proxy kwa uunganishaji wa kina wa proksi", "omniSkillsDescription": "Sakinisha na udhibiti ujuzi wa sandbox kwa ajili ya utekelezaji wa kiotomatiki wa vidokezo na zana" }, "cloudSyncStatus": { @@ -1690,7 +1690,7 @@ "statusLabel": "Hali ya usawazishaji wa mipangilio ya mbali: {status}" }, "breadcrumbs": { - "ariaLabel": "Breadcrumb", + "ariaLabel": "Mfululizo wa urambazaji", "dashboard": "Dashibodi", "providers": "Watoa Huduma", "combos": "Mchanganyiko", @@ -1716,7 +1716,7 @@ "cliCode": "Msimbo wa CLI", "cliAgents": "Wakala wa CLI", "acpAgents": "Wakala wa ACP", - "endpoint": "Endpoint", + "endpoint": "Endpointi", "apiManager": "Meneja wa API", "context": "Muktadha", "compression": "Mfinyazo", @@ -1742,12 +1742,12 @@ "media": "Midia", "cache": "Kache", "changelog": "Kumbukumbu ya Mabadiliko", - "chaos": "Chaos", + "chaos": "Machafuko", "cloudAgents": "Mawakala wa Wingu", "live": "Mubashara", "studio": "Studio", "aggressive": "Kali", - "caveman": "Caveman", + "caveman": "Mtu wa Pangoni", "ccr": "CCR", "headroom": "Nafasi ya Ziada", "lite": "Lite", @@ -1755,14 +1755,14 @@ "omniglyph": "OmniGlyph", "rtk": "RTK", "sessionDedup": "Uondoaji wa Nakala za Kipindi", - "ultra": "Ultra", + "ultra": "Bora zaidi", "budget": "Bajeti", "pricing": "Bei", "quotaShare": "Mgao wa Quota", "discovery": "Ugunduzi", "freeProviderRankings": "Nafasi za Watoa Huduma Bila Malipo", - "radar": "Radar", - "setup": "Setup", + "radar": "Rada", + "setup": "Usanidi", "freeTiers": "Viwango vya Bila Malipo", "gamification": "Uchezeshaji", "leaderboard": "Ubao wa Wanaoongoza", @@ -1771,8 +1771,8 @@ "plugins": "Vipachiko", "providerStats": "Takwimu za Watoa Huduma", "new": "Mpya", - "quota": "Quota", - "relay": "Relay", + "quota": "Kikomo", + "relay": "Rilei", "searchTools": "Zana za Kutafuta", "security": "Usalama", "sidebar": "Mwambaa wa Kando", @@ -1784,53 +1784,53 @@ "orchestration": "Uratibu" }, "home": { - "quickStart": "Quick Start", - "quickStartDesc": "Get up and running in 4 steps. Connect providers, route models, monitor everything.", - "fullDocs": "Full Docs", - "step1Title": "1. Create API key", + "quickStart": "Anza Haraka", + "quickStartDesc": "Anza kutumia kwa hatua 4. Unganisha watoa huduma, elekeza modeli, na ufuatilie kila kitu.", + "fullDocs": "Nyaraka Kamili", + "step1Title": "1. Unda ufunguo wa API", "step1Desc": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "step2Title": "2. Connect providers", - "step2Desc": "Add accounts in Providers. Supports OAuth, API Key, and free tiers.", - "step3Title": "3. Point your client", - "step3Desc": "Set base URL to {url} in your IDE or API client.", - "step4Title": "4. Monitor & optimize", - "step4Desc": "Track tokens, cost and errors in Request Logs and Analytics.", - "providersOverview": "Providers Overview", - "configuredOf": "{configured} configured of {total} available providers", - "noModelsAvailable": "No models available for this provider.", + "step2Title": "2. Unganisha watoa huduma", + "step2Desc": "Ongeza akaunti katika Watoa Huduma. Inatumia OAuth, Ufunguo wa API na viwango vya bila malipo.", + "step3Title": "3. Elekeza kiteja chako", + "step3Desc": "Weka URL ya msingi kuwa {url} katika IDE au kiteja chako cha API.", + "step4Title": "4. Fuatilia na boresha", + "step4Desc": "Fuatilia tokeni, gharama na hitilafu katika Kumbukumbu za Maombi na Uchanganuzi.", + "providersOverview": "Muhtasari wa Watoa Huduma", + "configuredOf": "Watoa huduma {configured} kati ya {total} wanaopatikana wamesanidiwa", + "noModelsAvailable": "Hakuna modeli zinazopatikana kwa mtoa huduma huyu.", "noProvidersConfigured": "Bado hakuna watoa huduma waliosanidiwa", "addProvider": "Ongeza mtoaji", - "configureFirst": "Configure a connection first in {providers}", - "configureProvider": "Configure Provider", - "modelAvailable": "{count} model available", - "modelsAvailable": "{count} models available", - "connectionsActive": "{count} connection active", - "connectionsActivePlural": "{count} connections active", - "copyModelName": "Copy model name", - "documentation": "Documentation", - "healthMonitor": "Health Monitor", - "reportIssue": "Report issue", - "activeError": "{active} active · {errors} error", - "topologyLegendActive": "__MISSING__:Active", - "topologyLegendRecent": "__MISSING__:Recent", - "topologyLegendError": "__MISSING__:Error", + "configureFirst": "Kwanza sanidi muunganisho katika {providers}", + "configureProvider": "Sanidi Mtoa Huduma", + "modelAvailable": "Modeli {count} inapatikana", + "modelsAvailable": "Modeli {count} zinapatikana", + "connectionsActive": "Muunganisho {count} unatumika", + "connectionsActivePlural": "Miunganisho {count} inatumika", + "copyModelName": "Nakili jina la modeli", + "documentation": "Nyaraka", + "healthMonitor": "Kifuatiliaji cha Afya", + "reportIssue": "Ripoti tatizo", + "activeError": "{active} zinatumika · hitilafu {errors}", + "topologyLegendActive": "Inatumika", + "topologyLegendRecent": "Hivi Karibuni", + "topologyLegendError": "Hitilafu", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", - "requestsShort": "{count} reqs", - "providerModelsTitle": "{provider} - Models", - "copiedModel": "Copied: {model}", + "apiKeyLabel": "Ufunguo wa API", + "requestsShort": "Maombi {count}", + "providerModelsTitle": "{provider} - Modeli", + "copiedModel": "Imenakiliwa: {model}", "aliasLabel": "alias", - "updateNow": "Update Now", - "updating": "Updating...", - "updateAvailableDesc": "A new version is available. Click to update.", - "updateStarted": "Update started...", + "updateNow": "Sasisha Sasa", + "updating": "Inasasisha...", + "updateAvailableDesc": "Toleo jipya linapatikana. Bofya ili kusasisha.", + "updateStarted": "Usasishaji umeanza...", "reloadingPageAutomatically": "Inapakia upya ukurasa kiotomatiki...", "providerTopology": "Topolojia ya mtoaji", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Maombi ya Hivi Karibuni", + "recentRequestsEmpty": "Bado hakuna maombi.", + "recentRequestsModel": "Muundo", + "recentRequestsTokens": "Zinazoingia / Zinazotoka", + "recentRequestsWhen": "Lini", "downloadDmg": "Pakua DMG (macOS)", "downloadDmgDescription": "Toleo jipya la programu ya desktop ya OmniRoute linapatikana. Tafadhali pakua na sakinisha msanidi wa DMG wa macOS ili kusasisha (sasa: v{version}).", "downloadExe": "Pakua EXE (Windows)", @@ -1888,18 +1888,18 @@ "releaseNotes": "Maelezo ya Kutolewa", "readMore": "Soma Zaidi", "noAuthLabel": "Hakuna Auth", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Jitayarishe kuelekeza", + "readinessTitle": "Tuma ombi lako la kwanza", + "readinessSubtitle": "Hatua nne ndogo. OmniRoute hukagua utayari unapoendelea.", + "readinessStep1": "Unganisha mtoa huduma", + "readinessStep2": "Sanidi uthibitishaji wa endpoint", + "readinessStep3": "Nakili endpoint yako", + "readinessStep4": "Tuma ombi la majaribio", + "readinessContinue": "Endelea na usanidi", + "readinessDismiss": "Ondoa kwa sasa" }, "analytics": { - "title": "Analytics", + "title": "Uchanganuzi", "usageAnalyticsTitle": "Uchambuzi wa Matumizi", "diversityScoreTitle": "Utofauti wa Watoa Huduma", "diversityScoreDesc": "Picha ya haraka ya mkusanyiko wa watoa huduma kwa dirisha la hivi karibuni la trafiki.", @@ -1967,7 +1967,7 @@ "period7D": "7S", "period30D": "30S", "period90D": "90S", - "periodYTD": "YTD", + "periodYTD": "Tangu mwanzo wa mwaka", "periodAll": "Zote", "totalTokens": "Jumla ya Tokeni", "inputTokens": "Tokeni za Ingizo", @@ -1990,21 +1990,21 @@ "highlightsDiversity": "Uanuwai", "highlightsFallbackRate": "Kiwango cha Njia Mbadala", "customRange": "Maalum", - "overviewDescription": "Monitor your API usage patterns, token consumption, costs, and activity trends across all providers and models.", - "evalsDescription": "Run evaluation suites to test and validate your LLM endpoints. Compare model quality, detect regressions, and benchmark latency.", - "overview": "Overview", - "evals": "Evals", + "overviewDescription": "Fuatilia mifumo ya matumizi ya API yako, matumizi ya tokeni, gharama na mienendo ya shughuli katika watoa huduma na miundo yote.", + "evalsDescription": "Endesha vifurushi vya tathmini ili kujaribu na kuthibitisha endpoint zako za LLM. Linganisha ubora wa miundo, tambua kushuka kwa utendaji na pima ucheleweshaji.", + "overview": "Muhtasari", + "evals": "Tathmini", "search": "Tafuta", - "utilization": "Utilization", + "utilization": "Matumizi", "routeTrace": "Ufuatiliaji wa Njia", "sectionsAria": "Sehemu za uchanganuzi", - "utilizationDescription": "Provider quota usage trends and rate limit tracking", - "modelStatus": "Model Status", - "modelStatusCooldown": "Cooldown", - "modelStatusUnavailable": "Unavailable", - "modelStatusError": "Error", - "comboHealth": "Combo Health", - "comboHealthDescription": "Combo-level quota, usage distribution, and performance metrics", + "utilizationDescription": "Mienendo ya matumizi ya mgao wa mtoa huduma na ufuatiliaji wa vikomo vya kasi", + "modelStatus": "Hali ya Muundo", + "modelStatusCooldown": "Kipindi cha Kusubiri", + "modelStatusUnavailable": "Haipatikani", + "modelStatusError": "Hitilafu", + "comboHealth": "Afya ya Combo", + "comboHealthDescription": "Mgao wa kiwango cha Combo, usambazaji wa matumizi na vipimo vya utendaji", "compressionAnalyticsTitle": "Compression", "compressionAnalyticsDescription": "Compression analytics - token savings, mode breakdown, and provider stats.", "autoRoutingTotalAutoRequests": "Jumla ya Maombi ya Kiotomatiki", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "Utendaji", "comboHealthPerformanceDescription": "Utegemezi na upelekaji data kwa trafiki ya mchanganyiko iliyoelekezwa.", "comboHealthExecutionTargetsDescription": "Vipimo vya muda wa utekelezaji vya kiwango cha hatua na mwonekano wa mgawo kwa shabaha za mchanganyiko zilizoundwa.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "maombi {count}", "comboHealthQuotaScope": "Upeo wa mgawo: {scope}", "comboHealthTrendValue": "Mwelekeo: {trend}", "comboHealthFetchFailed": "Imeshindwa kuleta data ya afya ya mchanganyiko", @@ -2188,7 +2188,7 @@ "routeRuntimeScoreNow": "Alama ya runtime sasa", "routeWouldSelectNow": "Ingechagua sasa", "routeNoRecomputeCandidates": "Hakuna upangaji wa wagombea wa combo unaoweza kukokotolewa upya kwa ombi hili.", - "runtime": "Runtime", + "runtime": "Muda wa Uendeshaji", "routeTopNow": "Bora sasa", "routeFetchLogsFailed": "Imeshindwa kuleta kumbukumbu za maombi", "routeExplainFailed": "Imeshindwa kueleza njia", @@ -2207,7 +2207,7 @@ "model": "Modeli", "account": "Akaunti", "connection": "Muunganisho", - "combo": "Combo", + "combo": "Mseto", "routeStep": "Hatua", "tokens": "Tokeni", "notAvailable": "haitumiki", @@ -2237,55 +2237,55 @@ "freeTierAvailable": "Kipengele cha bure kinapatikana" }, "apiManager": { - "title": "API Keys", - "createKey": "Create API Key", - "key": "Key", - "revokeKey": "Revoke Key", - "revokeConfirm": "Are you sure you want to revoke this API key?", - "noKeys": "No API keys yet", - "noKeysDesc": "Create your first API key to authenticate requests to your endpoint", - "keyLabel": "Key Label", - "permissions": "Permissions", - "expiresAt": "Expires", - "never": "Never", - "revoke": "Revoke", - "showKey": "Show Key", - "hideKey": "Hide Key", - "copyKey": "Copy API Key", - "allModels": "All models", - "selectedModels": "Selected Models", - "readOnly": "Read Only", - "fullAccess": "Full Access", - "keyManagement": "API Key Management", - "keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "title": "Funguo za API", + "createKey": "Unda Ufunguo wa API", + "key": "Ufunguo", + "revokeKey": "Batilisha Ufunguo", + "revokeConfirm": "Je, una uhakika unataka kubatilisha ufunguo huu wa API?", + "noKeys": "Bado hakuna funguo za API", + "noKeysDesc": "Unda ufunguo wako wa kwanza wa API ili kuthibitisha maombi kwa endpoint yako", + "keyLabel": "Lebo ya Ufunguo", + "permissions": "Ruhusa", + "expiresAt": "Muda Unaisha", + "never": "Kamwe", + "revoke": "Batilisha", + "showKey": "Onyesha Ufunguo", + "hideKey": "Ficha Ufunguo", + "copyKey": "Nakili Ufunguo wa API", + "allModels": "Miundo yote", + "selectedModels": "Miundo Iliyochaguliwa", + "readOnly": "Kusoma Pekee", + "fullAccess": "Ufikiaji Kamili", + "keyManagement": "Usimamizi wa Funguo za API", + "keyManagementDesc": "Unda na udhibiti funguo za API za kuthibitisha maombi kwa endpoint yako", + "requestFlowAria": "Programu yako hutuma maombi kupitia ufunguo wa API kwenda OmniRoute", + "requestFlowYourApp": "Programu yako", + "requestFlowApiKey": "Ufunguo wa API", "requestFlowOmniRoute": "OmniRoute", - "totalKeys": "Total Keys", - "restricted": "Restricted", - "totalRequests": "Total Requests", - "modelsAvailable": "Models Available", - "registeredKeys": "Registered Keys", - "keysRegistered": "{count} keys registered", - "keyRegistered": "{count} key registered", - "keysSecurityNote": "Each key isolates usage tracking and can be revoked independently. Keys are masked after creation for security.", - "createFirstKey": "Create Your First Key", - "name": "Name", - "usage": "Usage", - "created": "Created", - "actions": "Actions", - "reqs": "reqs", - "neverUsed": "Never used", - "deleteConfirm": "Delete this API key?", - "usageTips": "Usage Tips", - "tipAuth": "Use API keys in the Authorization header as Bearer YOUR_KEY", - "tipSecure": "Keys are only shown once during creation — store them securely", - "tipSeparate": "Create separate keys for different clients or environments", - "tipRestrict": "Restrict keys to specific models for better security and cost control", - "keyName": "Key Name", + "totalKeys": "Jumla ya Funguo", + "restricted": "Zilizowekewa Vizuizi", + "totalRequests": "Jumla ya Maombi", + "modelsAvailable": "Miundo Inayopatikana", + "registeredKeys": "Funguo Zilizosajiliwa", + "keysRegistered": "Funguo {count} zimesajiliwa", + "keyRegistered": "Ufunguo {count} umesajiliwa", + "keysSecurityNote": "Kila ufunguo hutenganisha ufuatiliaji wa matumizi na unaweza kubatilishwa kivyake. Funguo hufichwa baada ya kuundwa kwa ajili ya usalama.", + "createFirstKey": "Unda Ufunguo Wako wa Kwanza", + "name": "Jina", + "usage": "Matumizi", + "created": "Iliundwa", + "actions": "Vitendo", + "reqs": "maombi", + "neverUsed": "Haijawahi kutumika", + "deleteConfirm": "Ungependa kufuta ufunguo huu wa API?", + "usageTips": "Vidokezo vya Matumizi", + "tipAuth": "Tumia funguo za API katika kichwa cha Authorization kama Bearer YOUR_KEY", + "tipSecure": "Funguo huonyeshwa mara moja tu wakati wa kuundwa — zihifadhi kwa usalama", + "tipSeparate": "Unda funguo tofauti kwa wateja au mazingira tofauti", + "tipRestrict": "Weka funguo zitumike na modeli mahususi kwa usalama bora na udhibiti wa gharama", + "keyName": "Jina la Ufunguo", "keyNamePlaceholder": "e.g., Production Key, Development Key", - "keyNameDesc": "Choose a descriptive name to identify this key's purpose", + "keyNameDesc": "Chagua jina linaloelezea kusudi la ufunguo huu", "managementAccessDesc": "Ruhusu ufunguo huu wa API kusimamia usanidi wa OmniRoute.", "selfServiceVisibility": "Mwonekano wa kujihudumia", "selfServiceVisibilityDesc": "Dhibiti kile ufunguo huu unaweza kuona kuhusu matumizi yake na mgao wa upstream ulioshirikiwa.", @@ -2296,83 +2296,83 @@ "localUsageCommand": "Ruhusu amri ya matumizi ya ndani", "localUsageCommandDesc": "Huruhusu ufunguo huu wa API kutumia @@om-usage kurejesha taarifa za matumizi na mgawo zilizohifadhiwa kwenye akiba bila kuita mtoa huduma wa juu.", "localUsageCommandBadge": "Amri ya matumizi", - "keyCreated": "API Key Created", - "keyCreatedSuccess": "Key created successfully!", - "keyCreatedNote": "Copy and store this key now — it won't be shown again.", - "done": "Done", - "savePermissions": "Save Permissions", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "keyCreated": "Ufunguo wa API Umeundwa", + "keyCreatedSuccess": "Ufunguo umeundwa kwa mafanikio!", + "keyCreatedNote": "Nakili na uhifadhi ufunguo huu sasa — hautaonyeshwa tena.", + "done": "Imekamilika", + "savePermissions": "Hifadhi Ruhusa", + "endpointRestrictions": "Endpoint Zinazoruhusiwa", + "allEndpointsAllowed": "Ufunguo huu unaweza kufikia endpoint zote za API.", + "endpointsRestricted": "Umezuiwa kwa endpoint {count}{count, plural, one {} other {s}}.", + "autoResolve": "Tatua Kiotomatiki", + "autoResolveDesc": "Tatua kiotomatiki majina ya modeli yenye utata kwa kuyalinganisha na mtoa huduma asilia kwa ufunguo huu wa API.", "streamDefaultMode": "Uoanifu Chaguomsingi wa Mtiririko", "streamDefaultModeDesc": "Hudhibiti bendera za `stream` zilizoachwa kwa ufunguo huu. Hali ya JSON hurejesha majibu yasiyo ya mtiririko isipokuwa mteja aombe SSE waziwazi.", "streamDefaultLegacy": "Urithi", "streamDefaultJson": "Inayoendana na JSON", "streamDefaultBadge": "Chaguomsingi ya mtiririko wa JSON", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", - "allowAll": "Allow All", - "restrict": "Restrict", - "allowAllInfo": "This key can access all available models.", - "restrictInfo": "This key can access {selected} of {total} models.", - "selected": "{count} selected", - "all": "All", - "clear": "Clear", - "searchModels": "Search models by name or provider...", - "noModelsFound": "No models found", - "keyNameRequired": "Key name is required", - "keyNameTooLong": "Key name must be {max} characters or less", - "keyNameInvalid": "Key name can only contain letters, numbers, spaces, hyphens, and underscores", - "invalidKeyName": "Invalid key name", - "failedCreateKey": "Failed to create key", - "failedCreateKeyRetry": "Failed to create key. Please try again.", - "invalidKeyId": "Invalid key ID", - "failedDeleteKey": "Failed to delete key", - "failedDeleteKeyRetry": "Failed to delete key. Please try again.", - "invalidModelsSelection": "Invalid models selection", - "cannotSelectMoreThanModels": "Cannot select more than {max} models", - "failedUpdatePermissions": "Failed to update permissions", - "failedUpdatePermissionsRetry": "Failed to update permissions. Please try again.", - "unknownProvider": "unknown", - "copyMaskedKey": "Copy masked key", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyActive": "Ufunguo Unatumika", + "keyActiveDesc": "Washa au zima ufunguo huu wa API. Funguo zilizozimwa hukataliwa mara moja kwa 403.", + "accessSchedule": "Ratiba ya Ufikiaji", + "accessScheduleDesc": "Zuia ufikiaji kwa saa na siku mahususi za wiki.", + "scheduleFrom": "Kuanzia", + "scheduleUntil": "Hadi", + "scheduleDays": "Siku", + "scheduleTimezone": "Saa za Eneo", + "scheduleTimezoneHint": "Tumia majina ya saa za maeneo ya IANA, kwa mfano America/New_York, Europe/Berlin", + "scheduleActive": "Ratiba", + "disabled": "Imezimwa", + "daySun": "Jpl", + "dayMon": "Jtt", + "dayTue": "Jnn", + "dayWed": "Jtn", + "dayThu": "Alh", + "dayFri": "Ijm", + "daySat": "Jms", + "allowAll": "Ruhusu Zote", + "restrict": "Zuia", + "allowAllInfo": "Ufunguo huu unaweza kufikia modeli zote zinazopatikana.", + "restrictInfo": "Ufunguo huu unaweza kufikia modeli {selected} kati ya {total}.", + "selected": "{count} zimechaguliwa", + "all": "Zote", + "clear": "Futa", + "searchModels": "Tafuta modeli kwa jina au mtoa huduma...", + "noModelsFound": "Hakuna modeli zilizopatikana", + "keyNameRequired": "Jina la ufunguo linahitajika", + "keyNameTooLong": "Jina la ufunguo lazima liwe na herufi {max} au chini ya hapo", + "keyNameInvalid": "Jina la ufunguo linaweza kuwa na herufi, nambari, nafasi, vistari, na mistari ya chini pekee", + "invalidKeyName": "Jina la ufunguo si sahihi", + "failedCreateKey": "Imeshindwa kuunda ufunguo", + "failedCreateKeyRetry": "Imeshindwa kuunda ufunguo. Tafadhali jaribu tena.", + "invalidKeyId": "Kitambulisho cha ufunguo si sahihi", + "failedDeleteKey": "Imeshindwa kufuta ufunguo", + "failedDeleteKeyRetry": "Imeshindwa kufuta ufunguo. Tafadhali jaribu tena.", + "invalidModelsSelection": "Uteuzi wa modeli si sahihi", + "cannotSelectMoreThanModels": "Haiwezekani kuchagua zaidi ya modeli {max}", + "failedUpdatePermissions": "Imeshindwa kusasisha ruhusa", + "failedUpdatePermissionsRetry": "Imeshindwa kusasisha ruhusa. Tafadhali jaribu tena.", + "unknownProvider": "haijulikani", + "copyMaskedKey": "Nakili ufunguo uliofichwa kwa sehemu", + "keyOnlyAvailableAtCreation": "Ufunguo kamili unapatikana tu wakati wa kuundwa — unakili unapounda ufunguo kwa mara ya kwanza", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {kifaa #} other {vifaa #}}", "devicesTooltip": "{count, plural, one {kifaa # tofauti cha IP/User-Agent kilichoonekana na ufunguo huu (dakika 30 zilizopita)} other {vifaa # tofauti vya IP/User-Agent vilivyoonekana na ufunguo huu (dakika 30 zilizopita)}}", - "lastUsedOn": "Last: {date}", + "lastUsedOn": "Mwisho: {date}", "viewCostsFor": "Tazama gharama za {name}", - "editPermissions": "Edit permissions", - "deleteKey": "Delete key", + "editPermissions": "Hariri ruhusa", + "deleteKey": "Futa ufunguo", "regenerateKey": "Tengeneza upya ufunguo", "regenerateConfirm": "Je, una uhakika unataka kuzalisha upya ufunguo huu wa API? Ufunguo wa zamani utabatilishwa mara moja.", "failedRegenerateKey": "Imeshindwa kuzalisha upya ufunguo wa API", "failedRegenerateKeyRetry": "Imeshindwa kuzalisha upya ufunguo wa API. Tafadhali jaribu tena.", - "model": "{count} model", - "models": "{count} models", - "permissionsTitle": "Permissions: {name}", - "allowAllDesc": "This key can access all available models.", + "model": "modeli {count}", + "models": "modeli {count}", + "permissionsTitle": "Ruhusa: {name}", + "allowAllDesc": "Ufunguo huu unaweza kufikia modeli zote zinazopatikana.", "restrictLoading": "Inapakia orodha ya modeli…", "restrictCatalogUnavailable": "Orodha ya modeli haipatikani; ufunguo huu una vikwazo vya modeli {selectedCount} zilizochaguliwa.", - "restrictDesc": "This key can access {selectedCount} of {totalModels} models.", - "selectedCount": "{count} selected", + "restrictDesc": "Ufunguo huu unaweza kufikia modeli {selectedCount} kati ya {totalModels}.", + "selectedCount": "{count} zimechaguliwa", "maxActiveSessions": "Vipindi Amilifu vya Juu", "maxActiveSessionsDescription": "0 = bila kikomo. Rejesha 429 wakati ufunguo huu unapozidi vipindi sambamba vya kunata.", "throttleDelay": "Mchelewo wa Udhibiti Kasi", @@ -2382,12 +2382,12 @@ "allowedCombos": "Michanganyiko Inayoruhusiwa", "allCombosAllowed": "Ufunguo huu unaweza kutumia mchanganyiko wowote.", "restrictedComboCount": "Imezuiwa kwa {count, plural, one {mchanganyiko #} other {michanganyiko #}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {Kipengee # kilichohifadhiwa hakipo} other {Vipengee # vilivyohifadhiwa havipo}} katika orodha hii ya mchanganyiko (kwa mfano, kanuni za uelekezaji) na vitaendelea kuhifadhiwa kama vilivyo.", + "preservedComboRuleHint": "Kimehifadhiwa kama kilivyo. Kipengee hiki si mchanganyiko katika orodha iliyo hapo juu, kwa hivyo kinaweza kubadilishwa kupitia API pekee.", "apiManagerCustomRateLimits": "Vikomo vya Viwango Maalum", "apiManagerCustomRateLimitsDesc": "Batilisha mipaka chaguomsingi ya kimataifa. Acha tupu ili kutumia chaguomsingi.", "apiManagerRateLimitRequestsPlaceholder": "Maombi", - "apiManagerRateLimitReqPer": "req /", + "apiManagerRateLimitReqPer": "ombi /", "apiManagerRateLimitSecondsPlaceholder": "Sekunde", "apiManagerRemoveLimitTitle": "Ondoa kikomo", "apiManagerTimezonePlaceholder": "Amerika/Sao_Paulo", @@ -2420,51 +2420,51 @@ "bypassProviderQuotaDescription": "Inaruhusu ufunguo huu kupuuza sera ya kuzuia ya mtoa huduma/akaunti ya juu wakati wa kuelekeza. Viwango vya USD vya ufunguo wa API bado vinatumika.", "quotaPill": "KIWANGO", "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Ukodishaji wa Kipekee", + "exclusiveLeaseNoticeTitle": "Ukodishaji wa Kipekee", + "exclusiveLeaseNoticeDesc": "Ufunguo huu wa API una ruhusa za ukodishaji wa kipekee kwa uelekezaji kupitia miunganisho maalumu.", + "allConnections": "Miunganisho yote", + "onlySelectedConnections": "Miunganisho iliyochaguliwa pekee", + "selectAtLeastOneConnection": "Chagua angalau muunganisho mmoja au uchague Miunganisho yote.", + "allConnectionsDesc": "Ufunguo huu unaweza kutumia muunganisho wowote unaotumika.", + "restrictedToConnections": "Umezuiwa kwa {count, plural, one {muunganisho #} other {miunganisho #}}." }, "auditLog": { - "title": "Audit Log", - "searchPlaceholder": "Search actions...", - "action": "Action", - "actor": "Actor", - "target": "Target", - "ipAddress": "IP Address", - "timestamp": "Timestamp", - "noEntries": "No audit entries found", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", + "title": "Kumbukumbu ya Ukaguzi", + "searchPlaceholder": "Tafuta vitendo...", + "action": "Kitendo", + "actor": "Mtekelezaji", + "target": "Lengo", + "ipAddress": "Anwani ya IP", + "timestamp": "Muhuri wa muda", + "noEntries": "Hakuna maingizo ya ukaguzi yaliyopatikana", + "filterByAction": "Chuja kwa kitendo...", + "filterByActor": "Chuja kwa mtekelezaji...", + "filterEntriesAria": "Chuja maingizo ya kumbukumbu ya ukaguzi", + "filterByActionTypeAria": "Chuja kwa aina ya kitendo", + "filterByActorAria": "Chuja kwa mtekelezaji", + "refreshAuditLogAria": "Onyesha upya kumbukumbu ya ukaguzi", + "tableAria": "Maingizo ya kumbukumbu ya ukaguzi", + "failedFetchAuditLog": "Imeshindwa kuleta kumbukumbu ya ukaguzi", "notAvailable": "—", - "description": "Administrative actions and security events", - "showing": "Showing {count} entries (offset {offset})", - "previous": "Previous" + "description": "Vitendo vya kiutawala na matukio ya usalama", + "showing": "Inaonyesha maingizo {count} (kuanzia nafasi ya {offset})", + "previous": "Iliyotangulia" }, "media": { - "title": "Media Playground", - "subtitle": "Generate images, videos, and music", + "title": "Uwanja wa Majaribio ya Midia", + "subtitle": "Zalisha picha, video na muziki", "model": "Model", "prompt": "Prompt", - "generate": "Generate", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generate": "Zalisha", + "generating": "Inazalisha...", + "loadingModels": "Inapakia miundo inayopatikana...", + "noModels": "Hakuna miundo inayopatikana. Sanidi watoa huduma wenye uwezo wa midia kwanza.", + "error": "Uzalishaji Umeshindikana", + "result": "Matokeo", + "imageDescription": "Zalisha picha kutoka kwa maelekezo ya maandishi ukitumia OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI na mengineyo.", + "videoDescription": "Unda video kwa AnimateDiff, Stable Video Diffusion kupitia ComfyUI au SD WebUI.", + "musicDescription": "Tunga muziki ukitumia Stable Audio Open au MusicGen kupitia ComfyUI.", "kinds": { "embedding": "Kupachika", "image": "Picha", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "Moduli ya sauti hadi maandiko ya OpenRouter yanatumia muunganisho wako wa OpenRouter ulio sanidiwa. Hakuna hati tofauti inayohitajika." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Hoja ya Utafutaji", + "searchResults": "Matokeo ya Utafutaji", + "cachedResult": "Imehifadhiwa kwenye akiba", + "searchCost": "Gharama", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Majaribio ya utafutaji wa kina yenye ulinganishaji wa watoa huduma", + "compareProviders": "Linganisha Watoa Huduma", + "rerankResults": "Panga Upya Matokeo", + "searchHistory": "Historia ya Utafutaji", + "urlOverlap": "Muingiliano wa URL", + "noSearchProviders": "Hakuna watoa huduma za utafutaji waliosanidiwa. Ongeza watoa huduma katika Mipangilio.", + "noRerankModels": "Hakuna modeli ya kupanga upya inayopatikana", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Mtoa Huduma", + "searchType": "Aina ya Utafutaji", + "maxResults": "Idadi ya Juu ya Matokeo", + "filters": "Vichujio", + "country": "Nchi", + "language": "Lugha", + "timeRange": "Kipindi cha Muda", + "includeDomains": "Jumuisha Vikoa", + "excludeDomains": "Ondoa Vikoa", + "safeSearch": "Utafutaji Salama", + "safeSearchOff": "Imezimwa", + "safeSearchModerate": "Wastani", + "safeSearchStrict": "Mkali", + "queryPlaceholder": "Weka hoja ya utafutaji...", + "providerAuto": "otomatiki (ya bei nafuu zaidi)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "habari", + "optionAny": "yoyote", + "timeRangeDay": "Siku iliyopita", + "timeRangeWeek": "Wiki iliyopita", + "timeRangeMonth": "Mwezi uliopita", + "timeRangeYear": "Mwaka uliopita", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Muda wa ombi umeisha ({seconds}s)", + "networkError": "Hitilafu ya mtandao", + "formatted": "Imeumbizwa", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "haikupatikana kwenye akiba", + "cacheHit": "imepatikana kwenye akiba", + "latency": "Ucheleweshaji", + "cost": "Gharama", + "results": "Matokeo", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Modeli ya Kupanga Upya", + "positionDelta": "Mabadiliko ya Nafasi", + "emptyState": "Tuma hoja ya utafutaji ili kuona matokeo", "copy": "Nakili", "resetToDefault": "Weka upya kwa chaguomsingi", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Tafuta", + "tabScrape": "Chota", + "tabCompare": "Linganisha", + "modalitiesGuide": "Mwongozo wa miundo ya data", + "searchConceptTitle": "Utafutaji", + "searchConceptDesc": "Utafutaji = huchota orodha ya matokeo ya wavuti (kichwa, URL, dondoo, alama ya uhusiano)", + "scrapeConceptTitle": "Chambua", + "scrapeConceptDesc": "Chambua = hutoa maudhui kamili ya URL (markdown, maandishi au HTML)", + "compareConceptTitle": "Linganisha", + "compareConceptDesc": "Linganisha = huendesha hoja ileile kwa watoa huduma N kwa wakati mmoja ili kulinganisha muda wa kusubiri, gharama na mwingiliano wa matokeo", + "rerankConceptTitle": "Panga upya", + "rerankConceptDesc": "Panga upya = hupanga upya matokeo kupitia LLM ili kuboresha uhusiano wake na hoja", + "autoConceptTitle": "Otomatiki (ya bei nafuu zaidi)", + "autoConceptDesc": "Otomatiki (ya bei nafuu zaidi) = huchagua kiotomatiki mtoa huduma wa bei nafuu zaidi anayepatikana na mwenye vitambulisho vilivyosanidiwa", + "providerCatalogTitle": "Katalogi ya Watoa Huduma", + "kindSearch": "Tafuta", + "kindFetch": "Leta/Chambua", + "statusConfigured": "Imesanidiwa", + "statusMissing": "Hakuna kitambulisho", + "statusRateLimited": "Kasi imewekewa kikomo", + "configureProvider": "Sanidi katika Watoa Huduma", + "loadingProviders": "Inapakia watoa huduma…", + "failedToLoadProviders": "Imeshindwa kupakia watoa huduma", + "costPerQuery": "Gharama/hoja", + "freeQuota": "Mgao wa bure/mwezi", + "scrapeUrl": "URL ya kuchambua", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL inahitajika", "scrapeUrlInvalid": "URL batili — lazima ianze na http:// au https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Toa", + "scrapeExtracting": "Inatoa…", + "scrapeFullPage": "Ukurasa mzima", + "scrapeFormat": "Muundo", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Maandishi", + "scrapePreview": "Onyesho la awali", + "scrapeRaw": "Ghafi", + "scrapeContentTruncated": "(imekatwa, tazama ghafi)", + "scrapeMetadata": "Data ya maelezo", + "scrapeProvider": "Mtoa huduma", + "scrapeSize": "Ukubwa", "scrapeEmptyState": "Ingiza URL ili kutoa maudhui yake", "scrapeProvidersAvailable": "Watoa huduma wanaopatikana: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Linganisha", + "compareRunning": "Inalinganisha…", + "autoProvider": "Otomatiki (ya bei nafuu zaidi)", + "configuredStatus": "Imesanidiwa", + "rateLimitedStatus": "Kasi imewekewa kikomo", + "noCredential": "Hakuna kitambulisho", + "searchTypeLabel": "Aina", + "rerankModelLabel": "Muundo wa kupanga upya", + "noneOption": "Hakuna", + "size": "Ukubwa", "configurationPane": "Kidirisha cha usanidi", "configuration": "Usanidi", "status": "Hali", @@ -2701,7 +2701,7 @@ "compareEmptyDescription": "Matokeo yataonyeshwa kando kwa kando yakiwa na muda wa kusubiri, gharama, na mwingiliano wa URL" }, "cliTools": { - "title": "CLI Tools", + "title": "Zana za CLI", "classifierCompatTitle": "Utangamano wa kiainishaji cha ruhusa ya kiotomatiki", "classifierCompatDescription": "Njia ya mkato ya kiainishaji cha usalama cha Claude Code cha --permission-mode auto chenye jibu la kuruhusu la kisanii ili njia mbadala zisishindwe kufungwa. Imezimwa kwa chaguomsingi.", "classifierCompatCycle": "Mzunguko: imezimwa → kiotomatiki → kila wakati", @@ -2727,14 +2727,14 @@ "codexProfilesDescription": "Tengeneza upya ~/.codex/*.config.toml baada ya ugunduzi wa muundo.", "claudeProfiles": "Wasifu wa Claude Code", "claudeProfilesDescription": "Tengeneza upya kila ~/.claude/profiles/…/settings.json baada ya ugunduzi wa muundo.", - "noActiveProviders": "No active providers", - "noActiveProvidersDesc": "Please add and connect providers first to configure CLI tools.", - "mapModels": "Map Models", - "testConnection": "Test Connection", - "connectionStatus": "Connection Status", - "configureEndpoint": "Configure Endpoint", - "instructions": "Instructions", - "modelMapping": "Model Mapping", + "noActiveProviders": "Hakuna watoa huduma amilifu", + "noActiveProvidersDesc": "Tafadhali ongeza na uunganishe watoa huduma kwanza ili kusanidi zana za CLI.", + "mapModels": "Pangia Miundo", + "testConnection": "Jaribu Muunganisho", + "connectionStatus": "Hali ya Muunganisho", + "configureEndpoint": "Sanidi Endpoint", + "instructions": "Maelekezo", + "modelMapping": "Upangaji wa Miundo", "reasoningEffort": "Juhudi za kufikiri za {model}", "effortNone": "Hakuna", "effortLow": "Chini", @@ -2742,67 +2742,67 @@ "effortHigh": "Juu", "effortExtraHigh": "Juu sana", "effortMax": "Upeo", - "effortUltra": "Ultra", - "wireApi": "Wire API", + "effortUltra": "Bora zaidi", + "wireApi": "API ya Wire", "modelAliases": "Majina mbadala ya modeli", "addModel": "Ongeza modeli", "routeModelPlaceholder": "Elekeza {model} kwenye...", - "baseUrl": "Base URL", - "apiKey": "API Key", - "configured": "Configured", - "notConfigured": "Not configured", - "notInstalled": "Not installed", - "custom": "Custom", - "unknown": "Unknown", - "lastSavedAt": "Last saved: {date}", - "never": "Never", - "justNow": "just now", - "minutesAgoShort": "{count}m ago", - "hoursAgoShort": "{count}h ago", - "daysAgoShort": "{count}d ago", - "monthsAgoShort": "{count}mo ago", - "yearsAgoShort": "{count}y ago", - "runtimeCheckFailed": "Runtime check failed", + "baseUrl": "URL ya Msingi", + "apiKey": "Ufunguo wa API", + "configured": "Imesanidiwa", + "notConfigured": "Haijasanidiwa", + "notInstalled": "Haijasakinishwa", + "custom": "Maalum", + "unknown": "Haijulikani", + "lastSavedAt": "Ilihifadhiwa mwisho: {date}", + "never": "Kamwe", + "justNow": "sasa hivi", + "minutesAgoShort": "dakika {count} zilizopita", + "hoursAgoShort": "saa {count} zilizopita", + "daysAgoShort": "siku {count} zilizopita", + "monthsAgoShort": "miezi {count} iliyopita", + "yearsAgoShort": "miaka {count} iliyopita", + "runtimeCheckFailed": "Ukaguzi wa mazingira ya utekelezaji umeshindwa", "yourApiKeyPlaceholder": "your-api-key", "modelPlaceholder": "provider/model-id", - "configurationSaved": "Configuration saved successfully.", - "failedToSave": "Failed to save configuration.", - "noApiKeysCreateOne": "No API keys - Create one in Keys page", - "defaultOmnirouteKey": "sk_omniroute (default)", - "selectModel": "Select Model", - "selectModelForAlias": "Select model for {alias}", - "selectModelForTool": "Select Model for {tool}", - "select": "Select", - "clear": "Clear", - "comingSoon": "Coming soon", - "checkingRuntime": "Checking runtime status...", - "guideOnlyIntegration": "Guide-only integration (no local runtime required)", - "cliRuntimeDetected": "CLI runtime detected and ready", - "cliFoundNotRunnable": "CLI found but not runnable{reason}", - "cliRuntimeNotDetected": "CLI runtime not detected", - "binary": "Binary", - "configPath": "Config path", - "configPathShort": "Config", - "failedCheckRuntimeStatus": "Failed to check runtime status.", - "copy": "Copy", - "copied": "Copied", - "copyConfig": "Copy Config", - "saveConfig": "Save Config", - "selectionSaved": "Selection saved", - "guide": "Guide", - "detected": "Detected", - "notReady": "Not ready", - "active": "Active", - "inactive": "Inactive", + "configurationSaved": "Usanidi umehifadhiwa.", + "failedToSave": "Imeshindwa kuhifadhi usanidi.", + "noApiKeysCreateOne": "Hakuna funguo za API - Unda moja kwenye ukurasa wa Keys", + "defaultOmnirouteKey": "sk_omniroute (chaguomsingi)", + "selectModel": "Chagua Muundo", + "selectModelForAlias": "Chagua muundo wa {alias}", + "selectModelForTool": "Chagua Muundo kwa ajili ya {tool}", + "select": "Chagua", + "clear": "Futa", + "comingSoon": "Inakuja hivi karibuni", + "checkingRuntime": "Inakagua hali ya mazingira ya utekelezaji...", + "guideOnlyIntegration": "Muunganisho wa mwongozo pekee (mazingira ya utekelezaji ya ndani hayahitajiki)", + "cliRuntimeDetected": "Mazingira ya utekelezaji ya CLI yamegunduliwa na yako tayari", + "cliFoundNotRunnable": "CLI imepatikana lakini haiwezi kuendeshwa{reason}", + "cliRuntimeNotDetected": "Mazingira ya utekelezaji ya CLI hayajagunduliwa", + "binary": "Faili ya kutekelezwa", + "configPath": "Njia ya usanidi", + "configPathShort": "Usanidi", + "failedCheckRuntimeStatus": "Imeshindwa kukagua hali ya mazingira ya utekelezaji.", + "copy": "Nakili", + "copied": "Imenakiliwa", + "copyConfig": "Nakili Usanidi", + "saveConfig": "Hifadhi Usanidi", + "selectionSaved": "Chaguo limehifadhiwa", + "guide": "Mwongozo", + "detected": "Imegunduliwa", + "notReady": "Haiko tayari", + "active": "Inatumika", + "inactive": "Haitumiki", "startMitm": "Start MITM", "stopMitm": "Stop MITM", - "mitmStarted": "MITM started successfully!", - "mitmStopped": "MITM stopped successfully!", - "failedStart": "Failed to start MITM", - "failedStop": "Failed to stop MITM", - "saveMappings": "Save Mappings", - "mappingsSaved": "Mappings saved!", - "failedSaveMappings": "Failed to save mappings", + "mitmStarted": "MITM imeanzishwa kwa mafanikio!", + "mitmStopped": "MITM imesimamishwa kwa mafanikio!", + "failedStart": "Imeshindwa kuanzisha MITM", + "failedStop": "Imeshindwa kusimamisha MITM", + "saveMappings": "Hifadhi Ulinganishaji", + "mappingsSaved": "Ulinganishaji umehifadhiwa!", + "failedSaveMappings": "Imeshindwa kuhifadhi ulinganishaji", "reasoningEffortDefault": "Chaguo-msingi", "reasoningEffortHint": "Chaguo-msingi huhifadhi juhudi za kufikiri zilizotumwa na wakala", "reasoningEffortTier": { @@ -2812,130 +2812,130 @@ "high": "Juu", "xhigh": "XJuu" }, - "howItWorks": "How it works:", - "antigravityHowWorksDesc": "Antigravity sends requests to Google's endpoint. MITM intercepts and redirects them to OmniRoute.", - "antigravityStep1": "1. Start MITM to route requests through OmniRoute.", - "antigravityStep2Prefix": "2. Add", - "antigravityStep2Suffix": "to your hosts file as 127.0.0.1.", - "antigravityStep3": "3. Open Antigravity and requests will be proxied.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", - "sudoPasswordRequiredTitle": "Sudo Password Required", - "sudoPasswordHint": "Administrator password is required to modify hosts file and system proxy settings.", - "enterSudoPassword": "Enter sudo password", - "sudoPasswordRequiredError": "Sudo password is required.", - "cancel": "Cancel", - "confirm": "Confirm", - "settingsApplied": "Settings applied successfully!", - "failedApplySettings": "Failed to apply settings", - "settingsReset": "Settings reset successfully!", - "failedResetSettings": "Failed to reset settings", - "backupRestored": "Backup restored!", - "failedRestore": "Failed to restore", - "checkingCli": "Checking {tool} CLI...", - "cliNotRunnable": "{tool} CLI installed but not runnable", - "cliNotInstalled": "{tool} CLI not installed", - "cliNotDetected": "{tool} CLI not detected", - "cliDetectedReady": "{tool} CLI detected and ready", - "cliFoundFailedHealthcheck": "{tool} CLI was found but failed runtime healthcheck{reason}.", - "installCliPrompt": "Please install {tool} CLI to use this feature.", - "installCodexPrompt": "Please install Codex CLI to use auto-apply feature.", - "hide": "Hide", - "howToInstall": "How to Install", - "installationGuide": "Installation Guide", + "howItWorks": "Jinsi inavyofanya kazi:", + "antigravityHowWorksDesc": "Antigravity hutuma maombi kwenye endpoint ya Google. MITM huyanasa na kuyaelekeza upya kwa OmniRoute.", + "antigravityStep1": "1. Anzisha MITM ili kuelekeza maombi kupitia OmniRoute.", + "antigravityStep2Prefix": "2. Ongeza", + "antigravityStep2Suffix": "kwenye faili yako ya hosts kama 127.0.0.1.", + "antigravityStep3": "3. Fungua Antigravity na maombi yatapitishwa kupitia proksi.", + "mitmHowWorksDesc": "{toolName} hutuma maombi kwenye endpoint ya mtoa huduma wake. MITM huyanasa na kuyaelekeza upya kwa OmniRoute.", + "mitmStep1": "1. Anzisha MITM ili kuelekeza maombi kupitia OmniRoute.", + "mitmStep2Prefix": "2. Ongeza", + "mitmStep2Suffix": "kwenye faili yako ya hosts kama 127.0.0.1.", + "mitmStep3": "3. Fungua {toolName} na maombi yatapitishwa kupitia proksi.", + "sudoPasswordRequiredTitle": "Nenosiri la Sudo Linahitajika", + "sudoPasswordHint": "Nenosiri la msimamizi linahitajika ili kurekebisha faili ya hosts na mipangilio ya proksi ya mfumo.", + "enterSudoPassword": "Weka nenosiri la sudo", + "sudoPasswordRequiredError": "Nenosiri la sudo linahitajika.", + "cancel": "Ghairi", + "confirm": "Thibitisha", + "settingsApplied": "Mipangilio imetekelezwa kwa mafanikio!", + "failedApplySettings": "Imeshindikana kutekeleza mipangilio", + "settingsReset": "Mipangilio imewekwa upya kwa mafanikio!", + "failedResetSettings": "Imeshindikana kuweka upya mipangilio", + "backupRestored": "Nakala rudufu imerejeshwa!", + "failedRestore": "Imeshindikana kurejesha", + "checkingCli": "Inakagua CLI ya {tool}...", + "cliNotRunnable": "CLI ya {tool} imesakinishwa lakini haiwezi kuendeshwa", + "cliNotInstalled": "CLI ya {tool} haijasakinishwa", + "cliNotDetected": "CLI ya {tool} haijatambuliwa", + "cliDetectedReady": "CLI ya {tool} imetambuliwa na iko tayari", + "cliFoundFailedHealthcheck": "CLI ya {tool} ilipatikana lakini haikufaulu ukaguzi wa utendaji{reason}.", + "installCliPrompt": "Tafadhali sakinisha CLI ya {tool} ili kutumia kipengele hiki.", + "installCodexPrompt": "Tafadhali sakinisha Codex CLI ili kutumia kipengele cha kutekeleza kiotomatiki.", + "hide": "Ficha", + "howToInstall": "Jinsi ya Kusakinisha", + "installationGuide": "Mwongozo wa Usakinishaji", "platforms": "macOS / Linux / Windows:", - "afterInstallationRun": "After installation, run", - "toVerify": "to verify.", - "current": "Current", + "afterInstallationRun": "Baada ya kusakinisha, endesha", + "toVerify": "ili kuthibitisha.", + "current": "Ya sasa", "baseUrlPlaceholder": "https://.../v1", - "resetToDefault": "Reset to default", + "resetToDefault": "Weka upya kuwa chaguomsingi", "providerModelPlaceholder": "provider/model-id", - "apply": "Apply", - "reset": "Reset", - "manualConfig": "Manual Config", - "backups": "Backups", - "configBackups": "Config Backups", - "noBackupsYet": "No backups yet. Backups are created automatically before each Apply or Reset.", - "restore": "Restore", - "backupRestoredReloading": "Backup restored! Reloading status...", - "failedRestoreBackup": "Failed to restore backup", - "applied": "Applied!", - "failed": "Failed", - "resetDone": "Reset!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute is configured as OpenAI-compatible provider", - "provider": "Provider", + "apply": "Tekeleza", + "reset": "Weka upya", + "manualConfig": "Usanidi wa Mkono", + "backups": "Nakala Rudufu", + "configBackups": "Nakala Rudufu za Usanidi", + "noBackupsYet": "Bado hakuna nakala rudufu. Nakala rudufu huundwa kiotomatiki kabla ya kila utekelezaji au uwekaji upya.", + "restore": "Rejesha", + "backupRestoredReloading": "Nakala rudufu imerejeshwa! Inapakia upya hali...", + "failedRestoreBackup": "Imeshindikana kurejesha nakala rudufu", + "applied": "Imetekelezwa!", + "failed": "Imeshindikana", + "resetDone": "Weka upya!", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute imesanidiwa kama mtoa huduma anayeoana na OpenAI", + "provider": "Mtoa huduma", "model": "Model", - "providers": "Providers", - "auth": "Auth", - "noApiKeysAvailable": "No API keys available", - "usingDefaultOmniroute": "Using default: sk_omniroute", - "updateConfig": "Update Config", - "applyConfig": "Apply Config", - "noBackupsAvailable": "No backups available.", - "profileSaved": "Profile \"{name}\" saved!", - "failedSaveProfile": "Failed to save profile", - "profileActivated": "Profile activated!", - "failedActivateProfile": "Failed to activate profile", - "profiles": "Profiles", - "savedProfiles": "Saved Profiles", - "noProfilesYet": "No profiles saved yet. Save current config as a profile below.", - "activate": "Activate", - "deleteProfile": "Delete profile", - "profileNamePlaceholder": "Profile name (e.g. Personal Account)", - "saveCurrent": "Save Current", - "codexAuthNotePrefix": "Codex uses", - "codexAuthNoteMiddle": "with", - "codexAuthNoteSuffix": "Click \"Apply\" to auto-configure.", - "claudeManualConfiguration": "Claude CLI - Manual Configuration", - "codexManualConfiguration": "Codex CLI - Manual Configuration", - "droidManualConfiguration": "Factory Droid - Manual Configuration", - "openClawManualConfiguration": "Open Claw - Manual Configuration", - "clineManualConfiguration": "Cline Manual Configuration", - "kiloManualConfiguration": "Kilo Code Manual Configuration", - "whenToUseLabel": "When to use", - "openToolDocs": "Open tool docs", + "providers": "Watoa huduma", + "auth": "Uthibitishaji", + "noApiKeysAvailable": "Hakuna funguo za API zinazopatikana", + "usingDefaultOmniroute": "Inatumia chaguo-msingi: sk_omniroute", + "updateConfig": "Sasisha Usanidi", + "applyConfig": "Tekeleza Usanidi", + "noBackupsAvailable": "Hakuna nakala rudufu zinazopatikana.", + "profileSaved": "Wasifu \"{name}\" umehifadhiwa!", + "failedSaveProfile": "Imeshindwa kuhifadhi wasifu", + "profileActivated": "Wasifu umeamilishwa!", + "failedActivateProfile": "Imeshindwa kuamilisha wasifu", + "profiles": "Wasifu", + "savedProfiles": "Wasifu Uliohifadhiwa", + "noProfilesYet": "Bado hakuna wasifu uliohifadhiwa. Hifadhi usanidi wa sasa kama wasifu hapa chini.", + "activate": "Amilisha", + "deleteProfile": "Futa wasifu", + "profileNamePlaceholder": "Jina la wasifu (k.m. Akaunti Binafsi)", + "saveCurrent": "Hifadhi Usanidi wa Sasa", + "codexAuthNotePrefix": "Codex hutumia", + "codexAuthNoteMiddle": "pamoja na", + "codexAuthNoteSuffix": "Bofya \"Tekeleza\" ili kusanidi kiotomatiki.", + "claudeManualConfiguration": "Claude CLI - Usanidi wa Mkono", + "codexManualConfiguration": "Codex CLI - Usanidi wa Mkono", + "droidManualConfiguration": "Factory Droid - Usanidi wa Mkono", + "openClawManualConfiguration": "Open Claw - Usanidi wa Mkono", + "clineManualConfiguration": "Usanidi wa Mkono wa Cline", + "kiloManualConfiguration": "Usanidi wa Mkono wa Kilo Code", + "whenToUseLabel": "Wakati wa kutumia", + "openToolDocs": "Fungua nyaraka za zana", "toolUseCases": { - "claude": "Use when you want strong planning workflows and long multi-file refactors with Claude Code.", - "codex": "Use when your team is standardized on OpenAI Codex CLI flows and profile-based auth.", - "droid": "Use when you need a lightweight terminal agent focused on fast coding and command execution loops.", - "openclaw": "Use when you want an Open Claw style coding agent but routed through OmniRoute policies.", - "cline": "Use when you configure coding agents inside editors and want guided setup with OmniRoute models.", - "kilo": "Use when your workflow depends on Kilo Code commands and fast iterative edits.", - "cursor": "Use when coding in Cursor and you need custom OpenAI-compatible models through OmniRoute.", - "continue": "Use when running Continue in IDEs and you need portable JSON-based provider configuration.", - "opencode": "Use when you prefer terminal-native agent runs and scripted automation via OpenCode.", - "kiro": "Use when integrating Kiro and controlling model routing centrally from OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", - "antigravity": "Use when Antigravity/Kiro traffic must be intercepted through MITM and routed to OmniRoute.", - "copilot": "Use when you want Copilot chat style UX while enforcing OmniRoute keys and routing rules.", - "amp": "Use when you want Amp shorthand workflows but still need OmniRoute alias and routing rules enforcement.", - "hermes": "Use when you need a lightweight terminal-native AI assistant for quick tasks.", + "claude": "Tumia unapotaka mtiririko thabiti wa kazi wa kupanga na urekebishaji mkubwa wa muda mrefu wa faili nyingi ukitumia Claude Code.", + "codex": "Tumia wakati timu yako imesanifishwa kutumia mitiririko ya OpenAI Codex CLI na uthibitishaji unaotegemea wasifu.", + "droid": "Tumia unapohitaji wakala mwepesi wa terminal unaolenga uandishi wa msimbo wa haraka na mizunguko ya utekelezaji wa amri.", + "openclaw": "Tumia unapotaka wakala wa uandishi wa msimbo wa mtindo wa Open Claw lakini anayeelekezwa kupitia sera za OmniRoute.", + "cline": "Tumia unaposanidi mawakala wa uandishi wa msimbo ndani ya vihariri na unataka usanidi unaoongozwa kwa kutumia miundo ya OmniRoute.", + "kilo": "Tumia wakati mtiririko wako wa kazi unategemea amri za Kilo Code na uhariri wa haraka wa hatua kwa hatua.", + "cursor": "Tumia unapoandika msimbo katika Cursor na unahitaji miundo maalum inayo-oana na OpenAI kupitia OmniRoute.", + "continue": "Tumia unapoendesha Continue katika IDE na unahitaji usanidi wa mtoa huduma unaohamishika unaotegemea JSON.", + "opencode": "Tumia unapopendelea uendeshaji wa mawakala unaotegemea terminali na otomatiki iliyoratibiwa kupitia OpenCode.", + "kiro": "Tumia unapounganisha Kiro na kudhibiti uelekezaji wa modeli kutoka sehemu moja kupitia OmniRoute.", + "windsurf": "Tumia unapotaka IDE inayotanguliza AI, huku modeli za Codeium/Windsurf zikielekezwa kupitia OmniRoute.", + "antigravity": "Tumia wakati trafiki ya Antigravity/Kiro lazima inaswe kupitia MITM na kuelekezwa kwenye OmniRoute.", + "copilot": "Tumia unapotaka UX ya mtindo wa gumzo la Copilot huku ukitekeleza matumizi ya funguo na kanuni za uelekezaji za OmniRoute.", + "amp": "Tumia unapotaka mtiririko wa kazi wa mkato wa Amp lakini bado unahitaji utekelezaji wa lakabu na kanuni za uelekezaji za OmniRoute.", + "hermes": "Tumia unapohitaji msaidizi mwepesi wa AI unaotegemea terminali kwa kazi za haraka.", "hermes-agent": "Tumia unapohitaji Hermes Agent (kutoka Nousresearch) ikiwa na modeli za chaguo-msingi, ugawaji majukumu, uoni na modeli saidizi zilizoelekezwa kupitia OmniRoute.", - "custom": "Use for custom tool implementations or generic OpenAI-compatible configurations." + "custom": "Tumia kwa utekelezaji maalum wa zana au usanidi wa jumla unaooana na OpenAI." }, "toolDescriptions": { - "antigravity": "Google Antigravity IDE with MITM", + "antigravity": "Google Antigravity IDE yenye MITM", "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "Wakala wa uandishi wa kodi wa xAI Grok Build TUI mwenye usaidizi wa mtoa huduma maalum", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Msaidizi wa AI wa Factory Droid", + "openclaw": "Msaidizi wa AI wa Open Claw", + "cline": "CLI ya Msaidizi wa Uandishi wa Msimbo wa AI wa Cline", + "kilo": "CLI ya Msaidizi wa AI wa Kilo Code", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "continue": "Msaidizi wa AI wa Continue", + "opencode": "Wakala wa uandishi wa msimbo wa AI wa OpenCode (Terminali)", + "kiro": "Amazon Kiro — IDE inayoendeshwa na AI", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "CLI ya msaidizi wa uandishi wa msimbo wa Sourcegraph Amp", + "hermes": "Msaidizi wa Terminali wa AI wa Hermes", "hermes-agent": "Hermes Agent (kutoka Nousresearch) - AI ya hali ya juu ya terminal yenye usaidizi wa modeli nyingi (ugawaji majukumu, uoni, mgandamizo, n.k.)", - "custom": "Generic OpenAI-compatible CLI or SDK configuration generator", + "custom": "Kizalishaji cha usanidi wa CLI au SDK ya jumla inayooana na OpenAI", "aider": "CLI ya uandishi wa kodi wa pamoja ya Aider AI yenye URL ya msingi inayooana na OpenAI", "forge": "CLI ya wakala wa uandishi wa kodi wa ForgeCode yenye mtoa huduma maalum", "cursor-cli": "Cursor Agent CLI katika hali ya wakala ya headless", @@ -2950,7 +2950,7 @@ "interpreter": "CLI ya wakala anayejitegemea wa uandishi wa kodi wa Open Interpreter", "omp": "Wakala wa uandishi wa kodi wa terminal wa Oh My Pi", "letta": "Wakala wa Letta CLI mwenye kumbukumbu ya kudumu na matumizi ya zana", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — mfumo wa uandishi wa msimbo wa RLM unaojiboresha wenye usaidizi wa watoa huduma wanaooana na OpenAI", "warp": "Terminal ya Warp AI yenye usaidizi wa mtoa huduma maalum", "agent-deck": "Mratibu wa mawakala wengi wa Agent Deck", "5dive": "5dive — kundi la mawakala wa uandishi wa msimbo unaojipangisha; wasifu mmoja wa auth huwaelekeza wote kwa OmniRoute" @@ -2958,134 +2958,134 @@ "guides": { "cursor": { "notes": { - "0": "Requires Cursor Pro account to use this feature.", - "1": "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings." + "0": "Inahitaji akaunti ya Cursor Pro ili kutumia kipengele hiki.", + "1": "Cursor huelekeza maombi kupitia seva yake yenyewe, kwa hivyo endpoint ya ndani haitumiki. Tafadhali washa Cloud Endpoint katika Settings." }, "steps": { "1": { - "title": "Open Settings", - "desc": "Go to Settings -> Models" + "title": "Fungua Settings", + "desc": "Nenda kwenye Settings -> Models" }, "2": { - "title": "Enable OpenAI API", - "desc": "Enable \"OpenAI API key\" option" + "title": "Washa OpenAI API", + "desc": "Washa chaguo la \"OpenAI API key\"" }, "3": { - "title": "Base URL" + "title": "URL ya Msingi" }, "4": { - "title": "API Key" + "title": "Ufunguo wa API" }, "5": { - "title": "Add Custom Model", - "desc": "Click \"View All Model\" -> \"Add Custom Model\"" + "title": "Ongeza Modeli Maalum", + "desc": "Bofya \"View All Model\" -> \"Add Custom Model\"" }, "6": { - "title": "Select Model" + "title": "Chagua Modeli" } } }, "continue": { "steps": { "1": { - "title": "Open Config", - "desc": "Open Continue configuration file" + "title": "Fungua Usanidi", + "desc": "Fungua faili ya usanidi ya Continue" }, "2": { - "title": "API Key" + "title": "Ufunguo wa API" }, "3": { - "title": "Select Model" + "title": "Chagua Modeli" }, "4": { - "title": "Add Model Config", - "desc": "Add the following configuration to your models array:" + "title": "Ongeza Usanidi wa Modeli", + "desc": "Ongeza usanidi ufuatao kwenye safu yako ya models:" } }, "notes": { - "0": "Continue uses JSON config file." + "0": "Continue hutumia faili ya usanidi ya JSON." } }, "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Sakinisha OpenCode", + "desc": "Sakinisha kupitia npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Ufunguo wa API" }, "3": { - "title": "Set Base URL", + "title": "Weka URL ya Msingi", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Chagua Muundo" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Tumia Kibadala cha Kufikiri", + "desc": "Kwa miundo ya kufikiri, endesha ukitumia --variant high/low/max (amri ya mfano iko hapa chini)." } }, "notes": { - "0": "OpenCode requires API key configuration.", - "1": "Set the base URL to your OmniRoute endpoint." + "0": "OpenCode inahitaji usanidi wa ufunguo wa API.", + "1": "Weka URL ya msingi kuwa endpoint yako ya OmniRoute." } }, "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Fungua Mipangilio ya Kiro", + "desc": "Nenda kwenye Mipangilio → Mtoa Huduma wa AI" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "URL ya Msingi", + "desc": "Bandika URL ya endpoint yako ya OmniRoute" }, "3": { - "title": "API Key" + "title": "Ufunguo wa API" }, "4": { - "title": "Select Model" + "title": "Chagua Muundo" } }, "notes": { - "0": "Kiro requires Amazon account." + "0": "Kiro inahitaji akaunti ya Amazon." } }, "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Fungua Mipangilio ya AI", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Ongeza Mtoa Huduma Maalum", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "URL ya Msingi", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Ufunguo wa API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Chagua Muundo", + "desc": "Chagua muundo kutoka kwenye orodha kunjuzi" } } } }, - "autoConfiguredTab": "Auto-Configured", - "toolCategoriesDesc": "Configure AI coding assistants to route through OmniRoute", - "allToolsTab": "All Tools", - "guidedClientsTab": "Guided Clients", - "mitmClientsTab": "MITM Clients", + "autoConfiguredTab": "Imesanidiwa Kiotomatiki", + "toolCategoriesDesc": "Sanidi visaidizi vya uandishi wa msimbo vya AI ili vipitie OmniRoute", + "allToolsTab": "Zana Zote", + "guidedClientsTab": "Klienti Zinazoongozwa", + "mitmClientsTab": "Klienti za MITM", "customCliTab": "CLI maalum", - "toolCategories": "Tool Categories", - "visibleToolsCount": "{count} tools available", + "toolCategories": "Kategoria za Zana", + "visibleToolsCount": "Zana {count} zinapatikana", "customCliBuilderTitle": "Mjenzi wa CLI unaolingana na OpenAI", "customCliBuilderDescription": "Tengeneza env vars na vijisehemu vya JSON kwa CLI au SDK yoyote ambayo inakubali URL msingi inayooana na OpenAI, ufunguo wa API na kitambulisho cha muundo.", "customCliNoModels": "Unganisha angalau mtoa huduma mmoja ili kujaza viteuzi vya miundo.", @@ -3140,7 +3140,7 @@ "hermesRoleGoalJudgeDesc": "Uhakiki wa kukamilika kwa malengo", "hermesRoleCurator": "Mwandishi", "hermesRoleCuratorDesc": "Ukurasa wa Ujuzi na Kumbukumbu", - "hermesRoleMonitor": "Monitor", + "hermesRoleMonitor": "Kifuatiliaji", "hermesRoleMonitorDesc": "Ufuatiliaji wa nyuma", "hermesRoleBackgroundReview": "Mapitio ya Muktadha", "hermesRoleBackgroundReviewDesc": "Mapitio ya msimbo wa nyuma", @@ -3159,7 +3159,7 @@ "hermesRolesWillUpdate": "{count, plural, one {jukumu # litasasishwa} other {majukumu # yatasasishwa}}", "hermesPreviewPath": "Hakiki — itaandika kwenye ~/.hermes/config.yaml", "hermesSaveDescription": "Inahifadhi muundo uliochaguliwa kwa kila jukumu kwenye", - "copilotConfigGenerator": "GitHub Copilot Config Generator", + "copilotConfigGenerator": "Kizalishaji cha Usanidi wa GitHub Copilot", "copilotGeneratorDescriptionPrefix": "Inazalisha", "copilotGeneratorDescriptionSuffix": "kitalu cha VS Code GitHub Copilot kwa kutumia muundo wa muuzaji wa Azure. Chagua miundo unayotaka, kisha nakili JSON kwenye faili yako ya usanidi.", "copilotCompatibilityWarning": "Usanidi huu unatumia suluhisho mbadala la muuzaji wa Azure kwa orodha za miundo maalum. Imejaribiwa na VS Code ≥ 1.109 na GitHub Copilot Chat ≥ v0.37. Sasisho za baadaye za viendelezi zinaweza kubadilisha tabia hii.", @@ -3203,76 +3203,76 @@ "cliproxyapiVersion": "Toleo" }, "combos": { - "title": "Combos", - "description": "Create model combos with weighted routing and fallback support", + "title": "Mikusanyiko", + "description": "Unda mikusanyiko ya miundo yenye uelekezaji uliowekewa uzito na usaidizi wa mbadala", "autoCatalogTitle": "Katalogi ya uelekezaji kiotomatiki", "autoCatalogTemplateCount": "{count} violezo", "autoCatalogDescription": "Michanganyiko ya kiotomatiki/* iliyojengewa ndani imetatuliwa kutoka kwa watoa huduma waliounganishwa. Tumia kitambulisho chochote kati ya hivi kama sehemu ya kielelezo - hakuna usanidi unaohitajika.", "autoCatalogExpand": "Panua katalogi ya uelekezaji kiotomatiki", "autoCatalogCollapse": "Kunja katalogi ya uelekezaji kiotomatiki", - "createCombo": "Create Combo", - "editCombo": "Edit Combo", - "deleteCombo": "Delete Combo", - "noModels": "No models", - "noModelsYet": "No models added yet", - "addModel": "Add Model", - "addModelToCombo": "Add Model to Combo", - "routingStrategy": "Routing Strategy", - "maxRetries": "Max Retries", - "timeout": "Timeout (ms)", - "healthcheck": "Healthcheck", - "priority": "Priority", - "fallback": "Fallback", + "createCombo": "Unda Mkusanyiko", + "editCombo": "Hariri Mkusanyiko", + "deleteCombo": "Futa Mkusanyiko", + "noModels": "Hakuna miundo", + "noModelsYet": "Bado hakuna miundo iliyoongezwa", + "addModel": "Ongeza Muundo", + "addModelToCombo": "Ongeza Muundo kwenye Mkusanyiko", + "routingStrategy": "Mkakati wa Uelekezaji", + "maxRetries": "Idadi ya Juu ya Majaribio", + "timeout": "Muda wa Kusubiri (ms)", + "healthcheck": "Ukaguzi wa Afya", + "priority": "Kipaumbele", + "fallback": "Mbadala", "roundRobin": "Round Robin", - "random": "Random", - "leastLatency": "Least Latency", - "comboName": "Combo Name", - "comboNamePlaceholder": "my-combo", + "random": "Nasibu", + "leastLatency": "Ucheleweshaji Mdogo Zaidi", + "comboName": "Jina la Mchanganyiko", + "comboNamePlaceholder": "mchanganyiko-wangu", "comboDescription": "Maelezo", "comboDescriptionPlaceholder": "Ujumbe wa hiari unaoelezea mchanganyiko huu", - "deleteConfirm": "Delete this combo?", - "noCombosYet": "No combos yet", - "comboCreated": "Combo created successfully", - "comboUpdated": "Combo updated successfully", - "comboDeleted": "Combo deleted", - "failedCreate": "Failed to create combo", - "failedUpdate": "Failed to update combo", - "errorCreating": "Error creating combo", - "errorUpdating": "Error updating combo", - "errorDeleting": "Error deleting combo", - "testFailed": "Test request failed", - "failedToggle": "Failed to toggle combo", - "testResults": "Test Results — {name}", - "resolvedBy": "Resolved by:", - "more": "+{count} more", - "reqs": "reqs", - "success": "success", - "proxyConfigured": "Proxy configured", - "copyComboName": "Copy combo name", - "enableCombo": "Enable combo", - "disableCombo": "Disable combo", - "testCombo": "Test combo", - "duplicate": "Duplicate", - "proxyConfig": "Proxy configuration", - "nameRequired": "Name is required", - "nameInvalid": "Only letters, numbers, -, _, / and . allowed", - "nameHint": "Letters, numbers, -, _, / and . allowed", - "priorityDesc": "Sequential fallback: tries model 1 first, then 2, etc.", - "weightedDesc": "Distributes traffic by weight percentage with fallback", - "roundRobinDesc": "Circular distribution: each request goes to the next model in rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", - "randomDesc": "Uniform random selection, then fallback to remaining models", - "leastUsedDesc": "Picks the model with fewest requests, balancing load over time", - "costOptimizedDesc": "Routes to the cheapest model first based on pricing", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "deleteConfirm": "Ufute mchanganyiko huu?", + "noCombosYet": "Bado hakuna michanganyiko", + "comboCreated": "Mchanganyiko umeundwa", + "comboUpdated": "Mchanganyiko umesasishwa", + "comboDeleted": "Mchanganyiko umefutwa", + "failedCreate": "Imeshindikana kuunda mchanganyiko", + "failedUpdate": "Imeshindikana kusasisha mchanganyiko", + "errorCreating": "Hitilafu wakati wa kuunda mchanganyiko", + "errorUpdating": "Hitilafu wakati wa kusasisha mchanganyiko", + "errorDeleting": "Hitilafu wakati wa kufuta mchanganyiko", + "testFailed": "Ombi la majaribio limeshindwa", + "failedToggle": "Imeshindikana kubadilisha hali ya mchanganyiko", + "testResults": "Matokeo ya Jaribio — {name}", + "resolvedBy": "Imetatuliwa na:", + "more": "+{count} zaidi", + "reqs": "maombi", + "success": "yamefaulu", + "proxyConfigured": "Proksi imesanidiwa", + "copyComboName": "Nakili jina la mchanganyiko", + "enableCombo": "Washa mchanganyiko", + "disableCombo": "Zima mchanganyiko", + "testCombo": "Jaribu mchanganyiko", + "duplicate": "Nakili", + "proxyConfig": "Usanidi wa proksi", + "nameRequired": "Jina linahitajika", + "nameInvalid": "Herufi, nambari, -, _, / na . pekee ndizo zinazoruhusiwa", + "nameHint": "Herufi, nambari, -, _, / na . zinaruhusiwa", + "priorityDesc": "Mbadala wa mfuatano: hujaribu modeli ya 1 kwanza, kisha ya 2, na kuendelea.", + "weightedDesc": "Husambaza trafiki kwa asilimia ya uzito ikiwa na mbadala", + "roundRobinDesc": "Usambazaji wa mzunguko: kila ombi huenda kwa modeli inayofuata kwa zamu", + "contextRelay": "Upelekaji wa Muktadha", + "contextRelayDesc": "Hudumisha mwendelezo wa kipindi kwa kutumia mihtasari ya makabidhiano akaunti zinapobadilishwa", + "randomDesc": "Uteuzi nasibu sawia, kisha hutumia miundo iliyosalia kama mbadala", + "leastUsedDesc": "Huchagua muundo wenye maombi machache zaidi, akisawazisha mzigo kadiri muda unavyopita", + "costOptimizedDesc": "Huelekeza kwanza kwenye muundo wa bei nafuu zaidi kulingana na bei", + "cacheOptimizedDesc": "Huelekeza kila kiambishi awali cha kidokezo kinachoweza kutumika tena kwenye akaunti ileile ya mtoa huduma kila wakati", "resetAware": "Weka Upya-Aware RR", "resetAwareDesc": "Husawazisha mgawo uliosalia dhidi ya saa 5 na uwekaji upya wa kila wiki, kisha uwekaji alama sawa", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Iliyopimwa kwa Kiasi", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", - "fusion": "Fusion", + "strictRandom": "Nasibu Kamili", + "strictRandomDesc": "Changanya karata — hutumia kila muundo mara moja kabla ya kuchanganya tena", + "fusion": "Muungano", "fusionDesc": "Inasambaza kidokezo kwa kila modeli ya jopo kwa sambamba, kisha modeli ya mwamuzi inasanisi jibu moja la mwisho", "fusionJudgeModel": "Modeli ya mwamuzi", "fusionJudgeModelHelp": "Modeli inayosanisi majibu ya jopo kuwa jibu moja la mwisho. Wacha wazi ili kutumia modeli ya kwanza ya jopo.", @@ -3282,27 +3282,27 @@ "fusionStragglerGraceMsHelp": "Muda wa kusubiri modeli za jopo zilizo polepole mara tu akidi inapofikiwa (chaguo-msingi 8000).", "fusionPanelHardTimeoutMs": "Kikomo cha muda cha jopo (ms)", "fusionPanelHardTimeoutMsHelp": "Kikomo kabisa ili modeli moja iliyokwama isikwamishe jopo zima (chaguo-msingi 90000).", - "models": "Models", - "autoBalance": "Auto-balance", - "advancedSettings": "Advanced Settings", - "retryDelay": "Retry Delay (ms)", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", - "advancedHint": "Leave empty to use global defaults. These override per-provider settings.", + "models": "Miundo", + "autoBalance": "Sawazisha kiotomatiki", + "advancedSettings": "Mipangilio ya Kina", + "retryDelay": "Kuchelewa kwa Jaribio Jipya (ms)", + "concurrencyPerModel": "Uendeshaji Sambamba / Muundo", + "queueTimeout": "Muda wa Kuisha wa Foleni (ms)", + "contextRelayHandoffThreshold": "Kizingiti cha Makabidhiano", + "contextRelayHandoffThresholdHelp": "Matumizi ya kiasi yanapofikia kizingiti hiki, OmniRoute hutengeneza muhtasari uliopangiliwa wa makabidhiano kabla ya kiasi cha akaunti inayotumika kuisha.", + "contextRelayMaxMessages": "Upeo wa Ujumbe kwa Muhtasari", + "contextRelayMaxMessagesHelp": "Huweka kikomo cha kiasi cha historia ya hivi karibuni kinachofupishwa katika muhtasari wa uhamishaji.", + "contextRelaySummaryModel": "Muundo wa Muhtasari", + "contextRelaySummaryModelHelp": "Muundo wa hiari wa kubatilisha unaotumika tu kutengeneza muhtasari wa makabidhiano. Acha wazi ili kutumia tena muundo mseto unaotumika.", + "contextRelayProviderNote": "Context Relay kwa sasa hutengeneza makabidhiano kwa mzunguko wa akaunti za Codex. Itumie pamoja na akaunti nyingi za mtoa huduma yuleyule ili kupata mwendelezo bora zaidi.", + "advancedHint": "Acha wazi ili kutumia mipangilio chaguo-msingi ya jumla. Hii hubatilisha mipangilio ya kila mtoa huduma.", "failoverBeforeRetry": "Failover Kabla ya Kujaribu tena", "maxSetRetries": "Kiwango cha Juu cha Kujaribu tena", "setRetryDelayMs": "Weka Kuchelewa Kujaribu tena (ms)", - "moveUp": "Move up", - "moveDown": "Move down", - "removeModel": "Remove", - "saving": "Saving...", + "moveUp": "Sogeza juu", + "moveDown": "Sogeza chini", + "removeModel": "Ondoa", + "saving": "Inahifadhi...", "liveNoProviders": "Hakuna watoa huduma walioonekana bado.", "liveFleetDataHint": "Data ya kundi inafika kupitia matukio ya combo ya moja kwa moja.", "liveActiveCount": "Amilifu ({count})", @@ -3342,43 +3342,43 @@ "playgroundEmptyHint": "Chagua mchanganyiko na ubofye Simulate Route ili kuona njia ya uelekezaji.", "playgroundNoCombosYet": "Hakuna mchanganyiko uliosanidiwa bado.", "playgroundCreateFirst": "Unda mmoja kwanza", - "weighted": "Weighted", - "leastUsed": "Least-Used", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "weighted": "Iliyopimwa", + "leastUsed": "Iliyotumika kwa Uchache Zaidi", + "costOpt": "Gharama Bora", + "strategyGuideTitle": "Jinsi ya kutumia mkakati huu", + "strategyGuideWhen": "Wakati wa kutumia", + "strategyGuideAvoid": "Epuka wakati", + "strategyGuideExample": "Mfano", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "Una muundo mmoja unaoupenda na unataka kutumia mbadala pale tu kunapotokea hitilafu.", + "avoid": "Unahitaji kusambaza maombi kati ya miundo.", + "example": "Muundo mkuu wa uandishi wa msimbo wenye muundo wa bei nafuu zaidi kama mbadala wakati wa hitilafu." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Unahitaji mgawanyo unaodhibitiwa wa trafiki kati ya miundo.", + "avoid": "Huwezi kudumisha uzani sahihi kadiri muda unavyopita.", + "example": "Utoaji wa 80% kwa muundo thabiti + 20% kwa muundo wa majaribio." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Unataka usambazaji unaotabirika na ulio sawa.", + "avoid": "Miundo inatofautiana sana katika muda wa kusubiri au gharama.", + "example": "Muundo uleule kwenye akaunti nyingi ili kusambaza uwezo wa kushughulikia maombi." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Unataka usambazaji rahisi wenye usanidi mdogo.", + "avoid": "Unahitaji uhakikisho thabiti wa trafiki.", + "example": "Utengenezaji wa haraka wa mfano wa awali kwa kutumia miundo inayolingana." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Unataka usawazishaji unaobadilika kulingana na mahitaji ya wakati halisi.", + "avoid": "Trafiki ni ndogo mno kuweza kunufaika na usawazishaji wa matumizi.", + "example": "Mizigo mseto ya kazi ambapo muundo mmoja mara nyingi hupata mzigo kupita kiasi." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Kupunguza gharama ndilo kipaumbele chako kikuu.", + "avoid": "Data ya bei haipo au imepitwa na wakati.", + "example": "Kazi za chinichini au za makundi ambapo gharama ya chini inapendelewa." }, "reset-aware": { "when": "Unapitia akaunti nyingi ukitumia telemetry ya kiasi na madirisha tofauti ya kuweka upya.", @@ -3386,104 +3386,104 @@ "example": "Pendelea 60% ya kila wiki ya kuweka upya akaunti kesho juu ya 80% ya kuweka upya akaunti baadaye." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Tumia unapotaka usambazaji ulio sawa kabisa — kila muundo utumike mara moja kabla ya kurudia.", + "avoid": "Epuka wakati miundo ina ubora au muda wa kusubiri unaotofautiana na mpangilio ni muhimu.", + "example": "Mfano: Akaunti nyingi za muundo uleule ili kusambaza matumizi kwa usawa." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Tumia unapotaka uteuzi wenye muda mfupi wa kusubiri kwa kutumia algoriti ya Power-of-Two-Choices.", + "avoid": "Epuka kwa mikusanyiko midogo yenye miundo 2 au pungufu — hakuna faida zaidi ya round-robin.", + "example": "Mfano: Uhawilishaji wenye uwezo mkubwa katika vituo 4+ vya miundo inayolingana." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Tumia wakati vipindi virefu lazima viendelee kufanya kazi akaunti zinapobadilishwa bila kupoteza muktadha wa kazi.", + "avoid": "Epuka wakati ubadilishaji wa akaunti ni nadra au hutaki maombi ya ziada ya ufupishaji.", + "example": "Mfano: Vipindi vya Codex vinavyohama kati ya akaunti nyingi vinapokaribia kuishiwa na mgao." }, "fill-first": { - "when": "Use when you want to fully exhaust one provider's quota before moving to the next.", - "avoid": "Avoid when you need request-level load balancing across providers.", - "example": "Example: Use all $200 Deepgram credits before falling back to Groq." + "when": "Tumia unapotaka kutumia kikamilifu mgao wa mtoa huduma mmoja kabla ya kuhamia kwa anayefuata.", + "avoid": "Epuka unapohitaji usawazishaji wa mzigo wa kiwango cha ombi kati ya watoa huduma.", + "example": "Mfano: Tumia salio lote la $200 la Deepgram kabla ya kutumia Groq kama mbadala." }, "auto": { - "when": "Use when you need multi-factor scoring routing based on cost, latency, and quality.", - "avoid": "Avoid when you need strict priority ordering or historical persistence.", - "example": "Example: Balance requests across models with different strengths." + "when": "Tumia unapohitaji uelekezaji wa ukadiriaji wa vipengele vingi kulingana na gharama, muda wa kusubiri na ubora.", + "avoid": "Epuka unapohitaji mpangilio mkali wa vipaumbele au uhifadhi wa data ya kihistoria.", + "example": "Mfano: Sawazisha maombi kati ya miundo yenye uwezo tofauti." }, "lkgp": { - "when": "Use when you want to route based on historical success rates and performance.", - "avoid": "Avoid when historical data is limited or unreliable.", - "example": "Example: Route to models with a good track record on specific tasks." + "when": "Tumia unapotaka kuelekeza kulingana na viwango vya mafanikio na utendaji vya kihistoria.", + "avoid": "Epuka wakati data ya kihistoria ni ndogo au si ya kuaminika.", + "example": "Mfano: Elekeza kwa miundo yenye rekodi nzuri ya utendaji katika kazi mahususi." }, "context-optimized": { - "when": "Use when you need to optimize context window usage across models.", - "avoid": "Avoid when models have similar context lengths or tasks are simple.", - "example": "Example: Distribute long conversations across models with larger context windows." + "when": "Tumia unapohitaji kuboresha matumizi ya dirisha la muktadha katika miundo mbalimbali.", + "avoid": "Epuka wakati miundo ina urefu wa muktadha unaofanana au kazi ni rahisi.", + "example": "Mfano: Sambaza mazungumzo marefu kati ya miundo yenye madirisha makubwa ya muktadha." } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Idadi ya majaribio yanayofanywa kabla ya ombi kushindikana.", + "retryDelay": "Muda wa awali wa kusubiri kati ya majaribio. Thamani za juu hupunguza shinikizo la maombi mengi kwa wakati mmoja.", + "timeout": "Muda wa juu zaidi wa ombi kabla ya kulikatisha.", + "healthcheck": "Huondoa miundo/watoa huduma wenye hitilafu kwenye maamuzi ya uelekezaji.", + "concurrencyPerModel": "Idadi ya juu zaidi ya maombi ya wakati mmoja yanayoruhusiwa kwa kila muundo katika round-robin.", + "queueTimeout": "Muda ambao ombi linaweza kusubiri kwenye foleni kabla ya muda wake kuisha.", "failoverBeforeRetry": "Inapowashwa, hitilafu yoyote ya mkondo wa juu husababisha kushindwa mara moja kwa shabaha ya mseto inayofuata, kuruka majaribio yote na URL mbadala.", "maxSetRetries": "Idadi ya mara za kujaribu tena lengo kamili lililowekwa wakati kila lengo limeshindwa. 0 = hakuna kiwango cha kuweka tena.", "setRetryDelayMs": "Kucheleweshwa kati ya majaribio ya kujaribu tena kiwango kilichowekwa, na kutoa muda wa kutatua masuala ya muda mfupi.", "disableSessionStickiness": "Zungusha hadi kwenye muunganisho tofauti kwenye kila ombi badala ya kubandika mazungumzo yote kwenye muunganisho mmoja kwa kutumia hashi ya ujumbe wa kwanza. Hubatilisha chaguo-msingi la kimataifa. Acha kwenye Inherit ili kuhifadhi prompt-cache hits kwa soga za zamu nyingi." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "Violezo vya haraka", + "templatesDescription": "Tumia wasifu wa kuanzia, kisha rekebisha modeli na usanidi.", + "templateApply": "Tumia kiolezo", + "templateHighAvailability": "Upatikanaji wa juu", + "templateHighAvailabilityDesc": "Uelekezaji wa kipaumbele wenye ukaguzi wa afya na majaribio salama ya kurudia.", + "templateCostSaver": "Kiokoa gharama", + "templateCostSaverDesc": "Uelekezaji ulioboreshwa kwa gharama kwa ajili ya mizigo ya kazi inayotanguliza bajeti.", + "templateBalanced": "Mzigo uliosawazishwa", + "templateBalancedDesc": "Uelekezaji kwa iliyotumika kwa kiwango cha chini zaidi ili kusambaza mahitaji kadiri muda unavyopita.", + "usageGuideHide": "Ficha", + "usageGuideDontShowAgain": "Usionyeshe tena", + "usageGuideShow": "Onyesha mwongozo", + "quickTestTitle": "Mchanganyiko uko tayari kuthibitishwa", + "quickTestDescription": "Fanya jaribio sasa ili kuthibitisha tabia ya uelekezaji mbadala na muda wa kusubiri.", + "testNow": "Jaribu sasa", + "pricingCoverage": "Ujumuishaji wa bei", + "pricingCoverageHint": "Uboreshaji wa gharama hufanya kazi vizuri zaidi wakati modeli zote za mchanganyiko zina bei.", + "pricingAvailable": "Bei inapatikana", + "pricingMissing": "Hakuna bei", + "pricingAvailableShort": "ina bei", + "pricingMissingShort": "haina bei", "fallbackOnlyOnQuotaExhaustion": "Piga hatua tu wakati kigezo kimeisha", "fallbackOnlyOnQuotaExhaustionShort": "fallback ya quota pekee", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", - "readinessCheckPricing": "Pricing data is available", - "readinessCheckPricingOptional": "Pricing rule not required", - "saveBlockedTitle": "Save is blocked until the following items are fixed:", - "saveBlockName": "Define a combo name.", - "saveBlockModels": "Add at least one model.", - "saveBlockWeighted": "Set weights to 100% (current: {total}%).", - "saveBlockPricing": "Add pricing for at least one model or choose a different strategy.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "warningRoundRobinSingleModel": "Uelekezaji wa mzunguko ni muhimu zaidi ukiwa na angalau modeli 2.", + "warningCostOptimizedPartialPricing": "Ni modeli {priced} pekee kati ya {total} zilizo na bei. Uelekezaji unaweza kuzingatia gharama kwa sehemu.", + "warningCostOptimizedNoPricing": "Hakuna data ya bei iliyopatikana kwa mchanganyiko huu. Uelekezaji ulioboreshwa kwa gharama unaweza kuelekeza kwa njia isiyotarajiwa.", + "filterAll": "Zote", + "filterIntelligent": "Akili", + "filterDeterministic": "Bainifu", + "filterEmptyTitle": "Hakuna michanganyiko inayolingana na kichujio hiki cha mkakati.", + "filterEmptyIntelligentDescription": "Unda mchanganyiko wa auto au LKGP ili kujaza dashibodi ya uelekezaji mahiri.", + "filterEmptyDeterministicDescription": "Kwa sasa, kuna michanganyiko ya auto na LKGP pekee. Rudi kwenye Zote au unda mchanganyiko bainifu.", + "readinessTitle": "Uko tayari kuhifadhi?", + "readinessDescription": "Kagua orodha hakiki kabla ya kuunda au kusasisha mchanganyiko huu.", + "readinessCheckName": "Jina la mchanganyiko ni halali", + "readinessCheckModels": "Angalau modeli moja imechaguliwa", + "readinessCheckWeights": "Jumla yenye uzani ni 100%", + "readinessCheckWeightsOptional": "Kanuni ya uzani haihitajiki", + "readinessCheckPricing": "Data ya bei inapatikana", + "readinessCheckPricingOptional": "Kanuni ya bei haihitajiki", + "saveBlockedTitle": "Uhifadhi umezuiwa hadi vipengee vifuatavyo virekebishwe:", + "saveBlockName": "Bainisha jina la mchanganyiko.", + "saveBlockModels": "Ongeza angalau modeli moja.", + "saveBlockWeighted": "Weka uzani kuwa 100% (sasa: {total}%).", + "saveBlockPricing": "Ongeza bei kwa angalau modeli moja au chagua mkakati tofauti.", + "recommendationsLabel": "Usanidi unaopendekezwa", + "applyRecommendations": "Tekeleza mapendekezo", + "recommendationsUpdated": "Mapendekezo yamesasishwa kwa {strategy}.", + "recommendationsApplied": "Mapendekezo yametekelezwa kwenye mchanganyiko huu.", + "intelligentPanelTitle": "Dashibodi ya Uelekezaji Akili", + "intelligentPanelDesc": "Ukadiriaji wa wakati halisi na hali ya afya ya mchanganyiko huu wa uelekezaji otomatiki.", "configOnlyStatus": "Mwonekano wa Usanidi", "configOnlyHint": "Paneli hii inaonyesha pembejeo za uelekezaji pekee. Hali ya sasa ya breaker inapatikana kwenye ukurasa wa Health.", "routingInputs": "Pembejeo za Uelekezaji", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Kiambishi awali cha mtoa huduma kisichojulikana.", "builderDynamicAccountShort": "Akaunti inayobadilika", "builderNeedValidName": "Bainisha jina halali la mchanganyiko kabla ya kuendelea.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Muhtasari wa Hali", + "normalOperation": "Uendeshaji wa Kawaida", + "allProvidersHealthy": "Watoa huduma wanaripoti hali nzuri za uelekezaji.", + "incidentMode": "Hali ya Tukio", + "highCircuitBreakerRate": "Kiwango cha juu cha kuwashwa kwa kivunja mzunguko kimegunduliwa.", + "activeModePack": "Kifurushi cha Hali Kinachotumika", + "modePackUpdated": "Kifurushi cha hali kimesasishwa kuwa {pack}.", + "modePackHint": "Badilisha usanidi uliowekwa awali ili kuelekeza upendeleo wa injini ya uelekezaji bila kuunda upya mchanganyiko.", + "providerScores": "Alama za Watoa Huduma", + "allProvidersEvaluated": "Hakuna kundi la wagombea lililosanidiwa. Watoa huduma wote wanaotumika hutathminiwa wakati wa utekelezaji.", + "excludedProviders": "Watoa Huduma Walioondolewa", + "excludedProvidersHint": "Watoa huduma wenye kivunja mzunguko kilicho OPEN wanaondolewa kwa muda kwenye uelekezaji.", + "noExcludedProviders": "Kwa sasa hakuna watoa huduma walioondolewa.", + "cooldownMinutes": "Muda wa kupoa: {minutes}m", + "builderIntelligentTitle": "Usanidi wa Uelekezaji Akili", + "builderIntelligentDesc": "Sanidi injini ya ukadiriaji wa vipengele vingi kwa mchanganyiko huu wa uelekezaji otomatiki.", + "candidatePoolLabel": "Kundi la Wagombea", + "candidatePoolHint": "Chagua watoa huduma ambao injini hii inapaswa kutathmini. Acha wazi ili kutumia watoa huduma wote wanaotumika.", + "candidatePoolEmpty": "Bado hakuna watoa huduma wanaotumika.", + "candidatePoolAllProviders": "Watoa huduma wote", + "modePackLabel": "Kifurushi cha Hali", + "routerStrategyLabel": "Mkakati wa Kipanga Njia", + "strategyRules": "Kanuni (Ukadiriaji wa Vipengele 6)", + "explorationRateLabel": "Kiwango cha Uchunguzi", + "explorationRateHint": "{percent}% ya maombi yanaweza kuchunguza watoa huduma wasio bora zaidi.", + "budgetCapLabel": "Kikomo cha Bajeti (USD / ombi)", + "budgetCapPlaceholder": "Hakuna kikomo", + "advancedWeightsTitle": "Mahiri: Uzani wa Ukadiriaji", "nestedComboFlatten": "Laza mchanganyiko uliowekwa ndani", "nestedComboExecute": "Tekeleza mchanganyiko uliowekwa ndani kama shabaha", "effectiveRoutingShare": "Sehemu inayofaa ya uelekezaji (uzito ÷ jumla)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kiwango cha matumizi", + "weightHealth": "Afya", + "weightCostInv": "Gharama", + "weightLatencyInv": "Ucheleweshaji", + "weightTaskFit": "Ufaafu kwa Jukumu", + "weightStability": "Uthabiti", + "weightTierPriority": "Daraja", + "weightCacheAffinity": "Upendeleo wa Kupatikana kwenye Akiba", "weightSessionAvailability": "Upatikanaji wa Kikao", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Usanidi wa Uelekezaji Mahiri", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Msingi salama dhidi ya hitilafu", + "description": "Tumia modeli moja kuu na udumishe mnyororo wa modeli mbadala kuwa mfupi na wa kuaminika.", + "tip1": "Weka modeli yako inayoaminika zaidi kwanza.", + "tip2": "Weka modeli 1-2 za akiba zenye ubora unaofanana.", + "tip3": "Tumia majaribio salama ya kurudia ili kukabiliana na hitilafu za muda mfupi za mtoa huduma." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Mgawanyo wa trafiki unaodhibitiwa", + "description": "Ni bora kwa uzinduzi wa majaribio wa canary na uhamishaji wa taratibu kati ya modeli.", + "tip1": "Anza na mgawanyo wa tahadhari kama 90/10.", + "tip2": "Dumisha jumla kuwa 100% na usawazishe kiotomatiki baada ya mabadiliko.", + "tip3": "Fuatilia mafanikio na muda wa kusubiri kabla ya kuongeza uzito wa canary." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Ugawaji wa mzigo unaotabirika", + "description": "Ni bora wakati modeli zinalingana na unahitaji ugawaji laini.", + "tip1": "Tumia angalau modeli 2.", + "tip2": "Weka vikomo vya uendeshaji sambamba ili kuepuka mzigo kupita kiasi wa ghafla.", + "tip3": "Tumia muda wa kuisha wa foleni ili kushindwa haraka mfumo unapofikia kikomo." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Usambazaji wa haraka wenye usanidi mdogo", + "description": "Tumia unapohitaji ugawaji rahisi bila dhamana kali.", + "tip1": "Tumia modeli zenye wasifu unaofanana wa muda wa kusubiri.", + "tip2": "Acha majaribio ya kurudia yakiwa yamewezeshwa ili kukabiliana na makosa ya nasibu.", + "tip3": "Pendelea hii kwa majaribio, si kwa SLA kali." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Usawazishaji unaobadilika", + "description": "Huelekeza kwa modeli zinazotumiwa kidogo ili kupunguza maeneo ya msongamano kadiri muda unavyopita.", + "tip1": "Hufanya kazi vizuri zaidi chini ya trafiki endelevu.", + "tip2": "Unganisha na ukaguzi wa afya kwa usawazishaji salama zaidi.", + "tip3": "Fuatilia matumizi ya kila modeli ili kuthibitisha manufaa ya ugawaji." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Uelekezaji unaotanguliza bajeti", + "description": "Huelekeza kwa modeli za gharama ya chini wakati metadata ya bei inapatikana.", + "tip1": "Hakikisha taarifa za bei zinapatikana kwa modeli zote zilizochaguliwa.", + "tip2": "Weka modeli mbadala yenye ubora kwa maombi magumu.", + "tip3": "Tumia kwa kazi za kundi/mandharinyuma ambapo gharama ndiyo KPI kuu." }, "reset-aware": { "title": "Weka upya-kufahamu mzunguko wa akaunti", @@ -3597,155 +3597,155 @@ "tip3": "Weka bendi ndogo ili akaunti zinazolingana bado zizunguke kwa usawa." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Ugawaji kwa kuchanganya karata", + "description": "Kila modeli hutumiwa mara moja kamili kwa kila mzunguko kabla ya kuchanganywa upya.", + "tip1": "Tumia angalau modeli 2 ili kupata ugawaji wenye maana.", + "tip2": "Hufanya kazi vizuri zaidi na modeli zenye utendaji unaolingana.", + "tip3": "Inafaa kwa kusawazisha mzigo kwenye akaunti nyingi za API." }, "fill-first": { - "description": "Exhaust provider quotas sequentially before falling back.", - "tip1": "Use for quota-based routing with clear fallback chains.", - "tip2": "Set quotas accurately to avoid premature fallback.", - "tip3": "Works best with providers offering free tiers or credit buckets.", - "title": "Quota Exhaustion" + "description": "Tumia kikomo cha kila mtoa huduma hadi kiishe kwa mpangilio kabla ya kutumia mbadala.", + "tip1": "Tumia kwa uelekezaji unaotegemea vikomo ukiwa na minyororo dhahiri ya mbadala.", + "tip2": "Weka vikomo kwa usahihi ili kuepuka kutumia mbadala mapema.", + "tip3": "Hufanya kazi vizuri zaidi na watoa huduma wanaotoa viwango vya bure au vifurushi vya salio.", + "title": "Kuisha kwa Vikomo" }, "auto": { - "description": "Route based on real-time scoring for cost, latency, quality, and health.", - "tip1": "Let the engine balance multiple factors automatically.", - "tip2": "Monitor which factors drive routing decisions in logs.", - "tip3": "Use for complex workloads where no single factor dominates.", - "title": "Multi-Factor Optimization" + "description": "Elekeza kulingana na alama za wakati halisi za gharama, ucheleweshaji, ubora na hali ya huduma.", + "tip1": "Ruhusu injini kusawazisha vipengele vingi kiotomatiki.", + "tip2": "Fuatilia kwenye kumbukumbu ni vipengele vipi vinavyoongoza maamuzi ya uelekezaji.", + "tip3": "Tumia kwa mizigo changamano ya kazi ambapo hakuna kipengele kimoja kinachotawala.", + "title": "Uboreshaji wa Vipengele Vingi" }, "lkgp": { - "description": "Route based on historical performance and success patterns.", - "tip1": "Requires sufficient request history for accurate predictions.", - "tip2": "Good for workloads with consistent model performance patterns.", - "tip3": "Monitor prediction accuracy and adjust weights as needed.", - "title": "History-Based Routing" + "description": "Elekeza kulingana na utendaji wa kihistoria na mifumo ya mafanikio.", + "tip1": "Inahitaji historia ya kutosha ya maombi ili kutoa utabiri sahihi.", + "tip2": "Inafaa kwa mizigo ya kazi yenye mifumo thabiti ya utendaji wa modeli.", + "tip3": "Fuatilia usahihi wa utabiri na urekebishe uzani inapohitajika.", + "title": "Uelekezaji Unaotegemea Historia" }, "context-optimized": { - "description": "Optimize routing based on context window usage and token efficiency.", - "tip1": "Route long conversations to models with larger context windows.", - "tip2": "Monitor context utilization to avoid token waste.", - "tip3": "Best for conversational AI requiring extensive context retention.", - "title": "Context Optimization" + "description": "Boresha uelekezaji kulingana na matumizi ya dirisha la muktadha na ufanisi wa tokeni.", + "tip1": "Elekeza mazungumzo marefu kwa modeli zilizo na madirisha makubwa zaidi ya muktadha.", + "tip2": "Fuatilia matumizi ya muktadha ili kuepuka kupoteza tokeni.", + "tip3": "Inafaa zaidi kwa AI ya mazungumzo inayohitaji kuhifadhi muktadha mpana.", + "title": "Uboreshaji wa Muktadha" }, "context-relay": { - "description": "Best when account rotation is expected and the next account must inherit a simplified task summary.", - "tip1": "Use with providers rotating accounts for the same model family.", - "tip2": "Set handoff threshold below hard quota cutoffs for summary generation time.", - "tip3": "Only set a dedicated summary model if the primary is too expensive or unstable.", - "title": "Session Continuity Priority" + "description": "Inafaa zaidi wakati ubadilishaji wa akaunti unatarajiwa na akaunti inayofuata lazima irithi muhtasari uliorahisishwa wa kazi.", + "tip1": "Tumia na watoa huduma wanaobadilisha akaunti kwa familia ileile ya modeli.", + "tip2": "Weka kiwango cha kukabidhi chini ya vikomo thabiti vya matumizi ili kutoa muda wa kutengeneza muhtasari.", + "tip3": "Weka modeli maalum ya muhtasari tu ikiwa modeli ya msingi ni ghali sana au si thabiti.", + "title": "Kipaumbele cha Mwendelezo wa Kipindi" }, "p2c": { - "description": "Route to the provider with the lowest current load based on real-time metrics.", - "tip1": "Monitor provider health metrics for accurate load assessment.", - "tip2": "Works best with homogeneous provider pools.", - "tip3": "Adjust sensitivity to avoid oscillation during traffic spikes.", - "title": "Power of Two Choices" + "description": "Elekeza kwa mtoa huduma mwenye mzigo mdogo zaidi kwa sasa kulingana na vipimo vya wakati halisi.", + "tip1": "Fuatilia vipimo vya hali ya watoa huduma ili kutathmini mzigo kwa usahihi.", + "tip2": "Hufanya kazi vizuri zaidi na makundi ya watoa huduma yanayofanana.", + "tip3": "Rekebisha unyeti ili kuepuka kuyumba wakati wa ongezeko la ghafla la trafiki.", + "title": "Nguvu ya Chaguo Mbili" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", - "auto": "Intelligent Auto", - "autoDesc": "Self-healing smart routing pool with multi-factor scoring", - "lkgp": "LKGP Mode", - "lkgpDesc": "Prioritizes the last provider that successfully completed a request", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "templateFreeStack": "Mkamuo wa Bure ($0)", + "templateFreeStackDesc": "Zungusha kwa mpangilio kupitia watoa huduma wote wa bure: Kiro (Claude), Qoder (modeli 5), Qwen (modeli 4). Gharama sifuri, haiachi kamwe kuandika msimbo.", + "auto": "Otomatiki Janja", + "autoDesc": "Kundi mahiri la uelekezaji linalojirekebisha lenye utoaji wa alama kwa vipengele vingi", + "lkgp": "Hali ya LKGP", + "lkgpDesc": "Humpa kipaumbele mtoa huduma wa mwisho aliyekamilisha ombi kwa mafanikio", + "wizardGuideTitle": "Kuanza Kutumia Michanganyiko", + "wizardGuideDesc": "Unda michanganyiko ya modeli ili kuelekeza trafiki ya AI kwa akili", + "wizardGuideHint": "au ubofye + Unda Mchanganyiko hapo juu", + "createFirstCombo": "Unda Mchanganyiko Wako wa Kwanza", + "wizardStep1Title": "Ipe Kombo Yako Jina", + "wizardStep1Desc": "Ipe kombo yako jina la kipekee ili kuitambua katika kanuni za uelekezaji", + "wizardStep2Title": "Ongeza Modeli", + "wizardStep2Desc": "Chagua modeli za AI na uzipange kulingana na kipaumbele cha mpangilio mbadala", + "wizardStep3Title": "Chagua Mkakati", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "Kagua na Uhifadhi", + "wizardStep4Desc": "Kagua usanidi wako na uwashe kombo", + "usageGuideInvokeTitle": "Jinsi ya kuita kombo hii", + "usageGuideInvokeDesc": "Tuma jina halisi la kombo kama modeli, k.m. model: \"my-combo\" (au combo/my-combo).", + "usageGuideInvokeAutoNote": "auto na auto/* ni kipanga njia tofauti kisichohitaji usanidi ambacho hakitumii kombo zako (isipokuwa kombo imepewa jina auto kihalisi).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto ni bidhaa halisi ya kulipia ya OpenRouter (Auto Best Available), si jina mbadala la OmniRoute — iondoe kupitia Settings → Routing → Hide paid models.", + "emailVisibilityStateOn": "Imewashwa", + "emailVisibilityStateOff": "Imezimwa", + "reorderHandle": "Buruta ili kupanga upya", + "failedReorder": "Imeshindwa kupanga modeli upya", + "builderFlowTitle": "Mtiririko wa Kiunda Kombo", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Mambo ya Msingi", + "description": "Jina na kiolezo cha kuanzia" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Hatua", + "description": "Uchaguzi wa mtoa huduma, modeli na akaunti" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Mkakati", + "description": "Tabia ya uelekezaji na mipangilio ya kina" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Uelekezaji Mahiri", + "description": "Kundi la chaguo za uelekezaji otomatiki, mipangilio tayari na uwekaji alama" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Kagua", + "description": "Uthibitishaji wa mwisho kabla ya kuhifadhi" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", - "builderDuplicateExact": "This exact provider/model/account step is already in the combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", - "builderStagesDescription": "Complete each stage in order to define combos, build steps, select routing strategy, and review results.", - "builderStepsDescription": "Build each combo step in order: provider, model, then account. This allows reusing the same provider and model across different accounts.", - "selectProvider": "Select Provider", - "selectProviderPlaceholder": "Select a provider", - "selectModel": "Select Model", - "selectModelPlaceholder": "Select a provider first", - "selectAccount": "Select Account", - "selectComboToReference": "Select combo to reference", - "comboReference": "Combo Reference", - "addComboReference": "Add Combo Reference", - "addStepBeforeContinue": "Please add at least one step before proceeding to the next stage.", - "previewNextStep": "Preview next step", - "autoSelectAccount": "Automatically select account at runtime", - "modePackBalanced": "Balanced", - "modePackBudget": "Budget", - "modePackPerformance": "Performance", - "modePackCustom": "Custom", - "browseLegacyCatalog": "Browse legacy combo catalog", - "agentFeaturesTitle": "Agent Features", - "agentFeaturesDescription": "Enable advanced features for agents using this combo", + "builderStageVisited": "Hatua imekamilika", + "builderStageCurrent": "Hatua ya sasa", + "builderStagePending": "Inasubiri", + "builderStageLocked": "Imefungwa — kamilisha hatua iliyotangulia kwanza", + "builderTitle": "Unda Kombo", + "builderBrowseCatalog": "Vinjari katalogi", + "builderProvider": "Mtoa Huduma", + "builderLoadingProviders": "Inapakia watoa huduma...", + "builderSelectProvider": "Chagua mtoa huduma", + "builderModel": "Modeli", + "builderSelectModel": "Chagua modeli", + "builderProviderFirst": "Chagua mtoa huduma kwanza", + "builderAccount": "Akaunti", + "builderPreview": "Onyesho la awali", + "builderAddStep": "Ongeza hatua", + "builderDuplicateExact": "Hatua hii kamili ya mtoa huduma/muundo/akaunti tayari ipo kwenye mseto.", + "builderComboRef": "Rejeleo la Mseto", + "builderAddComboRef": "Ongeza rejeleo la mseto", + "builderComboRefStep": "Ongeza rejeleo la mseto", + "builderPinnedAccount": "Akaunti Iliyobandikwa", + "builderLegacyEntry": "Ingizo la zamani", + "reviewName": "Jina", + "reviewStrategy": "Mkakati", + "reviewSteps": "Hatua", + "reviewAccounts": "Akaunti", + "reviewProviders": "Watoa Huduma", + "reviewComboRefs": "Marejeleo ya Mseto", + "reviewAdvanced": "Mipangilio ya Kina", + "reviewAgentFlags": "Alama za Ajenti", + "reviewSequence": "Mfuatano wa Miundo", + "reviewNoSteps": "Hakuna hatua zilizosanidiwa", + "builderStagesDescription": "Kamilisha kila awamu kwa mpangilio ili kufafanua miseto, kuunda hatua, kuchagua mkakati wa uelekezaji, na kukagua matokeo.", + "builderStepsDescription": "Unda kila hatua ya mseto kwa mpangilio: mtoa huduma, muundo, kisha akaunti. Hii inaruhusu kutumia tena mtoa huduma na muundo uleule katika akaunti tofauti.", + "selectProvider": "Chagua Mtoa Huduma", + "selectProviderPlaceholder": "Chagua mtoa huduma", + "selectModel": "Chagua Muundo", + "selectModelPlaceholder": "Chagua mtoa huduma kwanza", + "selectAccount": "Chagua Akaunti", + "selectComboToReference": "Chagua mseto wa kurejelea", + "comboReference": "Rejeleo la Mseto", + "addComboReference": "Ongeza Rejeleo la Mseto", + "addStepBeforeContinue": "Tafadhali ongeza angalau hatua moja kabla ya kuendelea hadi awamu inayofuata.", + "previewNextStep": "Hakiki hatua inayofuata", + "autoSelectAccount": "Chagua akaunti kiotomatiki wakati wa utekelezaji", + "modePackBalanced": "Uwiano", + "modePackBudget": "Bajeti", + "modePackPerformance": "Utendaji", + "modePackCustom": "Maalum", + "browseLegacyCatalog": "Vinjari katalogi ya zamani ya miseto", + "agentFeaturesTitle": "Vipengele vya Ajenti", + "agentFeaturesDescription": "Washa vipengele vya kina kwa ajenti wanaotumia mseto huu", "responseValidationTitle": "Uthibitishaji wa majibu", "responseValidationHelp": "Mbadala kwa lengo linalofuata wakati maudhui ya 200 OK yanapofeli ukaguzi huu (maudhui ya msaidizi).", "responseValidationForbidden": "Vifungu vya maneno vilivyopigwa marufuku (kimoja kwa kila mstari)", @@ -3753,13 +3753,13 @@ "responseValidationMinLength": "Urefu wa chini wa maudhui (herufi)", "responseValidationJsonPaths": "Ukaguzi wa JSON-path", "responseValidationAddCheck": "+ Ongeza ukaguzi", - "agentFeaturesSystemMessageOverride": "Override system message", - "agentFeaturesSystemMessagePlaceholder": "You are an expert assistant...", - "agentFeaturesSystemMessageHint": "System message override for agents", + "agentFeaturesSystemMessageOverride": "Batilisha ujumbe wa mfumo", + "agentFeaturesSystemMessagePlaceholder": "Wewe ni msaidizi mtaalamu...", + "agentFeaturesSystemMessageHint": "Ubatilishaji wa ujumbe wa mfumo kwa ajenti", "agentFeaturesToolFilterRegex": "/regex-pattern/", - "agentFeaturesToolFilterHint": "Tool filter regex for agents", - "agentFeaturesContextCacheHint": "Enable in-context cache for agent tools", - "agentFeaturesContextCacheProtection": "Protect cache from agent tool mutations", + "agentFeaturesToolFilterHint": "Regex ya kichujio cha zana kwa mawakala", + "agentFeaturesContextCacheHint": "Washa akiba ya ndani ya muktadha kwa zana za mawakala", + "agentFeaturesContextCacheProtection": "Linda akiba dhidi ya mabadiliko yanayofanywa na zana za mawakala", "agentFeaturesContextLength": "Urefu wa muktadha", "agentFeaturesContextLengthPlaceholder": "k.m. 128000", "agentFeaturesContextLengthHint": "Inafafanua dirisha la muktadha wa mchanganyiko huu katika /v1/models.", @@ -3780,7 +3780,7 @@ "errorDescription": "Hatuwezi kupakia data ya combo kwa sasa. Angalia muunganisho wako na ujaribu tena.", "errorId": "Kosa ID: {id}", "errorRetry": "Jaribu Tena", - "comboLabel": "Combo", + "comboLabel": "Mchanganyiko", "duplicateAutoComboConfirm": "Tengeneza combo thabiti kutoka \"{name}\"?", "duplicateAutoComboSnapshotMsg": "Hii itachukua picha ya watoa huduma/watolei sambazwa sasa yanayolingana na kioo hiki katika combo inayoedit.", "duplicateAutoComboFailedPrefix": "Imeshindwa kuiga combo ya otomatiki:", @@ -3788,40 +3788,40 @@ "duplicateAutoComboTitle": "Tengeneza combo thabiti kutoka {name}" }, "costs": { - "title": "Costs", - "pageDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "overview": "Overview", - "budget": "Budget", - "totalCost": "Total Cost", - "breakdown": "Cost Breakdown", - "noData": "No cost data", - "byModel": "By Model", - "byProvider": "By Provider", - "range7d": "7 Days", - "range30d": "30 Days", - "range90d": "90 Days", - "range180d": "180 Days", - "range365d": "365 Days", - "rangeAll": "All Time", - "spend30d": "Spend 30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", - "overviewTitle": "Cost Overview", - "spend7d": "Spend 7D", - "avgCostPerRequest": "Avg Cost / Request", - "noCostDataDescription": "Start making requests to see cost data appear here. Costs are tracked automatically for all providers.", - "spendToday": "Spend Today", - "overviewLoadFailed": "Failed to load cost overview", - "overviewDescription": "Real-time spending breakdown across all connected providers and models", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", - "noCostDataTitle": "No cost data yet", - "topModels": "Top Models", - "requestsInWindow": "Requests in Window", + "title": "Gharama", + "pageDescription": "Fuatilia matumizi, changanua mienendo, na udhibiti bajeti yako ya AI kwa watoa huduma wote", + "overview": "Muhtasari", + "budget": "Bajeti", + "totalCost": "Jumla ya Gharama", + "breakdown": "Mchanganuo wa Gharama", + "noData": "Hakuna data ya gharama", + "byModel": "Kwa Modeli", + "byProvider": "Kwa Mtoa Huduma", + "range7d": "Siku 7", + "range30d": "Siku 30", + "range90d": "Siku 90", + "range180d": "Siku 180", + "range365d": "Siku 365", + "rangeAll": "Muda Wote", + "spend30d": "Matumizi ya Siku 30", + "activeModels": "Modeli Zinazotumika", + "flatRateEstimateNotice": "Inajumuisha makadirio ya bei za tokeni kwa usajili wa bei isiyobadilika, si gharama iliyotozwa.", + "flatRateEstimateForecast": "Makadirio yanajumuisha makadirio ya bei isiyobadilika.", + "selectedWindow": "Kipindi Kilichochaguliwa", + "activeProviders": "Watoa Huduma Wanaotumika", + "overviewTitle": "Muhtasari wa Gharama", + "spend7d": "Matumizi ya Siku 7", + "avgCostPerRequest": "Wastani wa Gharama / Ombi", + "noCostDataDescription": "Anza kutuma maombi ili kuona data ya gharama ikionekana hapa. Gharama hufuatiliwa kiotomatiki kwa watoa huduma wote.", + "spendToday": "Matumizi ya Leo", + "overviewLoadFailed": "Imeshindwa kupakia muhtasari wa gharama", + "overviewDescription": "Mchanganuo wa matumizi wa wakati halisi kwa watoa huduma na modeli zote zilizounganishwa", + "providerShare": "Sehemu ya Mtoa Huduma", + "topProviders": "Watoa Huduma Wakuu", + "costTrend": "Mwenendo wa Gharama", + "noCostDataTitle": "Bado hakuna data ya gharama", + "topModels": "Modeli Kuu", + "requestsInWindow": "Maombi katika Kipindi", "tokenUsage": "Matumizi ya ishara", "totalTokens": "Jumla ya Tokeni", "inputTokens": "Ishara za Kuingiza", @@ -3863,7 +3863,7 @@ "groupAccount": "Akaunti", "groupServiceTier": "Kiwango cha huduma", "serviceTierFast": "Haraka", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Inayonyumbulika", "serviceTierStandard": "Kawaida", "serviceTierBreakdownTitle": "Kiwango cha Huduma", "serviceTierBreakdownSubtitle": "Mgawanyiko wa Fast / Flex / Standard", @@ -3881,139 +3881,139 @@ "showingTopCostRows": "Inaonyesha {shown} kati ya safu mlalo {total} zinazolingana (50 bora)." }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", - "available": "Available Endpoints", + "title": "Kituo cha API", + "subtitle": "Tumia kituo kinachooana na OpenAI pamoja na SDK na zana nyingi.", + "testEndpoint": "Jaribu kituo →", + "advancedProtocols": "Itifaki za kina", + "available": "Vituo Vinavyopatikana", "cloudProxy": "Cloud Proxy", - "disableConfirm": "Are you sure you want to disable cloud proxy?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", - "registeredKeys": "Registered Keys", + "disableConfirm": "Je, una uhakika unataka kuzima proksi ya wingu?", + "baseUrl": "URL Msingi", + "apiKeyLabel": "Ufunguo wa API", + "registeredKeys": "Funguo Zilizosajiliwa", "chatCompletions": "Chat Completions", - "responses": "Responses", - "listModels": "List Models", - "usingCloudProxy": "Using Cloud Proxy", - "usingLocalServer": "Using Local Server", - "machineId": "Machine ID: {id}...", - "disableCloud": "Disable Cloud", - "enableCloud": "Enable Cloud", - "modelsAcrossEndpoints": "{models} models across {endpoints} endpoints", - "loadingModels": "Loading available models...", - "chatDesc": "Streaming & non-streaming chat with all providers", - "embeddings": "Embeddings", - "embeddingsDesc": "Text embeddings for search & RAG pipelines", - "imageGeneration": "Image Generation", - "imageDesc": "Generate images from text prompts", + "responses": "Majibu", + "listModels": "Orodhesha Miundo", + "usingCloudProxy": "Inatumia Proksi ya Wingu", + "usingLocalServer": "Inatumia Seva ya Ndani", + "machineId": "Kitambulisho cha Mashine: {id}...", + "disableCloud": "Zima Wingu", + "enableCloud": "Washa Wingu", + "modelsAcrossEndpoints": "Miundo {models} katika vituo {endpoints}", + "loadingModels": "Inapakia miundo inayopatikana...", + "chatDesc": "Gumzo la mtiririko na lisilo la mtiririko na watoa huduma wote", + "embeddings": "Upachikaji", + "embeddingsDesc": "Upachikaji wa maandishi kwa ajili ya utafutaji na mifumo ya RAG", + "imageGeneration": "Uundaji wa Picha", + "imageDesc": "Unda picha kutokana na vidokezo vya maandishi", "rerank": "Rerank", - "rerankDesc": "Rerank documents by relevance to a query", - "audioTranscription": "Audio Transcription", - "audioTranscriptionDesc": "Transcribe audio files to text (Whisper)", - "textToSpeech": "Text to Speech", - "textToSpeechDesc": "Convert text to natural-sounding speech", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", - "moderations": "Moderations", - "moderationsDesc": "Content moderation and safety classification", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", - "categoryCore": "Core APIs", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", - "categoryUtility": "Utility & Management", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", - "enableCloudTitle": "Enable Cloud Proxy", - "whatYouGet": "What you will get", - "cloudBenefitAccess": "Access your API from anywhere in the world", - "cloudBenefitShare": "Share endpoint with your team easily", - "cloudBenefitPorts": "No need to open ports or configure firewall", - "cloudBenefitEdge": "Fast global edge network", - "cloudSessionNote": "Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted.", - "cloudUnstableNote": "Cloud is currently unstable with Claude Code OAuth in some cases.", - "cloudConnected": "Cloud Proxy connected!", - "connectingToCloud": "Connecting to cloud...", - "verifyingConnection": "Verifying connection...", - "connecting": "Connecting...", - "verifying": "Verifying...", - "connected": "Connected!", - "disableCloudTitle": "Disable Cloud Proxy", - "disableWarning": "All auth sessions will be deleted from cloud.", - "syncingData": "Syncing latest data...", - "disablingCloud": "Disabling cloud...", - "syncing": "Syncing...", - "disabling": "Disabling...", - "cloudConnectedVerified": "Cloud Proxy connected and verified!", - "connectedVerificationPending": "Connected — verification pending", - "connectedVerificationPendingWithError": "Connected — verification pending: {error}", - "cloudDisabledSuccess": "Cloud disabled successfully", - "syncedSuccess": "Synced successfully", - "failedDisable": "Failed to disable cloud", - "failedEnable": "Failed to enable cloud", - "cloudRequestTimeout": "Cloud request timeout", - "cloudRequestFailed": "Cloud request failed", - "cloudWorkerUnreachable": "Could not reach cloud worker. Make sure the cloud service is running (npm run dev in /cloud).", - "connectionFailed": "Connection failed", - "syncFailed": "Failed to sync cloud data", + "rerankDesc": "Panga upya hati kulingana na umuhimu wake kwa hoja", + "audioTranscription": "Unukuzi wa Sauti", + "audioTranscriptionDesc": "Nakili faili za sauti kuwa maandishi (Whisper)", + "textToSpeech": "Maandishi kuwa Matamshi", + "textToSpeechDesc": "Badilisha maandishi kuwa matamshi yanayosikika kiasili", + "musicGeneration": "Uundaji wa Muziki", + "musicDesc": "Unda muziki na nyimbo za sauti kupitia ComfyUI (Stable Audio, MusicGen)", + "moderations": "Udhibiti wa Maudhui", + "moderationsDesc": "Udhibiti wa maudhui na uainishaji wa usalama", + "responsesDesc": "API ya Majibu ya OpenAI kwa Codex na mitiririko ya hali ya juu ya mawakala", + "listModelsDesc": "Orodhesha miundo yote inayopatikana katika watoa huduma wote waliounganishwa", + "settingsApiDesc": "Soma na urekebishe usanidi wa OmniRoute kupitia API", + "settingsApi": "API ya Mipangilio", + "categoryCore": "API za Msingi", + "categoryMedia": "Midia na Modi Nyingi", + "categorySearch": "Utafutaji na Ugunduzi", + "categoryUtility": "Huduma na Usimamizi", + "webSearch": "Utafutaji wa Wavuti", + "webSearchDesc": "Utafutaji jumuishi wa wavuti kupitia watoa huduma wengi wenye uhamishaji wa kiotomatiki huduma inaposhindwa na uhifadhi wa akiba", + "searchProvider": "Mtoa Huduma wa Utafutaji", + "searchProviderDesc": "Mtoa huduma huyu hutumika kwa utafutaji wa wavuti kupitia POST /v1/search. Hakuna usanidi wa modeli unaohitajika — watoa huduma wa utafutaji wako tayari kutumika mara tu ufunguo wa API unapounganishwa.", + "enableCloudTitle": "Washa Proksi ya Wingu", + "whatYouGet": "Utakachopata", + "cloudBenefitAccess": "Fikia API yako kutoka popote duniani", + "cloudBenefitShare": "Shiriki endpoint na timu yako kwa urahisi", + "cloudBenefitPorts": "Hakuna haja ya kufungua milango au kusanidi ngome", + "cloudBenefitEdge": "Mtandao wa kimataifa wa ukingo wenye kasi", + "cloudSessionNote": "Wingu litahifadhi kipindi chako cha uthibitishaji kwa siku 1. Kisipotumika, kitafutwa kiotomatiki.", + "cloudUnstableNote": "Kwa sasa, Wingu si thabiti na Claude Code OAuth katika baadhi ya hali.", + "cloudConnected": "Proksi ya Wingu imeunganishwa!", + "connectingToCloud": "Inaunganisha kwenye wingu...", + "verifyingConnection": "Inathibitisha muunganisho...", + "connecting": "Inaunganisha...", + "verifying": "Inathibitisha...", + "connected": "Imeunganishwa!", + "disableCloudTitle": "Zima Proksi ya Wingu", + "disableWarning": "Vipindi vyote vya uthibitishaji vitafutwa kutoka kwenye wingu.", + "syncingData": "Inasawazisha data ya hivi karibuni...", + "disablingCloud": "Inazima wingu...", + "syncing": "Inasawazisha...", + "disabling": "Inazima...", + "cloudConnectedVerified": "Proksi ya Wingu imeunganishwa na kuthibitishwa!", + "connectedVerificationPending": "Imeunganishwa — uthibitishaji unasubiri", + "connectedVerificationPendingWithError": "Imeunganishwa — uthibitishaji unasubiri: {error}", + "cloudDisabledSuccess": "Wingu limezimwa kwa mafanikio", + "syncedSuccess": "Imesawazishwa kwa mafanikio", + "failedDisable": "Imeshindwa kuzima wingu", + "failedEnable": "Imeshindwa kuwasha wingu", + "cloudRequestTimeout": "Muda wa ombi la wingu umeisha", + "cloudRequestFailed": "Ombi la wingu limeshindwa", + "cloudWorkerUnreachable": "Haikuwezekana kufikia cloud worker. Hakikisha huduma ya wingu inaendeshwa (npm run dev katika /cloud).", + "connectionFailed": "Muunganisho umeshindwa", + "syncFailed": "Imeshindwa kusawazisha data ya wingu", "cloudflaredTitle": "Cloudflare Quick Tunnel", - "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredDescription": "Unda Cloudflare Quick Tunnel kwa endpoint hii.", + "cloudflaredUrlNotice": "Huunda Cloudflare Quick Tunnel ya muda. URL hubadilika baada ya kila uanzishaji upya.", + "cloudflaredEnable": "Washa Tunnel", + "cloudflaredInstallAndEnable": "Sakinisha na Uwashe", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Inaendelea", + "cloudflaredStarting": "Inaanza", + "cloudflaredStoppedState": "Imesimamishwa", + "cloudflaredNotInstalled": "Haijasakinishwa", + "cloudflaredUnsupported": "Haitumiki", + "cloudflaredError": "Hitilafu", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", - "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after every restart.", - "cloudflaredUnsupportedNote": "This platform is not supported for managed installs. Install cloudflared manually or point CLOUDFLARED_BIN to an existing binary.", + "cloudflaredTemporaryNote": "URL za Quick Tunnel ni za muda na zitabadilika baada ya kila uanzishaji upya.", + "cloudflaredUnsupportedNote": "Mfumo huu hautumiki kwa usakinishaji unaodhibitiwa. Sakinisha cloudflared mwenyewe au elekeza CLOUDFLARED_BIN kwenye faili tekelezi iliyopo.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", - "providerModelsTitle": "{provider} — Models", - "noModelsForProvider": "No models available for this provider.", + "cloudflaredLastError": "Hitilafu ya mwisho: {error}", + "providerModelsTitle": "{provider} — Modeli", + "noModelsForProvider": "Hakuna modeli zinazopatikana kwa mtoa huduma huyu.", "chat": "Chat", - "embedding": "Embedding", - "image": "Image", - "custom": "custom", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", - "tabApis": "APIs", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "embedding": "Upachikaji", + "image": "Picha", + "custom": "maalum", + "modelsCount": "{count, plural, one {# modeli} other {# modeli}}", + "sectionTitle": "Kiolesura cha Muunganisho", + "sectionDescription": "API zinazooana na OpenAI na vituo vya mwisho vya itifaki za uendeshaji", + "tabApis": "API", + "tabProtocols": "Itifaki", + "tabsAria": "Sehemu za vituo vya mwisho", + "protocolsTitle": "Itifaki", + "protocolsDescription": "MCP na A2A ni vituo vya mwisho vya kiwango cha kwanza vyenye uangalizi na vidhibiti maalum.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "Model Context Protocol kupitia stdio", + "a2aCardTitle": "Seva ya A2A", + "a2aCardDescription": "Kituo cha mwisho cha Agent2Agent JSON-RPC", + "protocolToolsLabel": "Zana", + "protocolTasksLabel": "Majukumu", + "protocolActiveStreamsLabel": "Mitiririko inayotumika", + "protocolLastActivity": "Shughuli ya mwisho", + "quickStart": "Anza Haraka", + "openMcpDashboard": "Fungua usimamizi wa MCP", + "openA2aDashboard": "Fungua usimamizi wa A2A", + "mcpQuickStartTitle": "Kuanza Haraka kwa MCP", + "mcpQuickStartStep1": "Endesha seva ya MCP kupitia `omniroute --mcp`.", + "mcpQuickStartStep2": "Sanidi kiteja chako cha MCP ili kiunganishwe kupitia usafirishaji wa stdio.", + "mcpQuickStartStep3": "Tumia zana kama vile `omniroute_get_health` na `omniroute_list_combos`.", + "a2aQuickStartTitle": "Kuanza Haraka kwa A2A", + "a2aQuickStartStep1": "Gundua kadi ya wakala kwenye `/.well-known/agent.json`.", + "a2aQuickStartStep2": "Tuma maombi ya JSON-RPC kwa `POST /a2a` ukitumia `message/send` au `message/stream`.", + "a2aQuickStartStep3": "Fuatilia na udhibiti majukumu kwa kutumia `tasks/get` na `tasks/cancel`.", + "completionsLegacy": "Ukamilishaji (Urithi)", + "completionsLegacyDesc": "Ukamilishaji wa maandishi wa zamani wa OpenAI — unakubali mfuatano wa prompt na umbizo la safu ya messages", "messagesApi": "Ujumbe", "messagesApiDesc": "Umbizo la API ya Native Anthropic Messages kwa watoa huduma wanaolingana na Claude", "imageEdits": "Marekebisho ya Picha", @@ -4022,41 +4022,41 @@ "batchApiDesc": "Sindika vikundi vikubwa vya maombi kisawazisha (OpenAI-sambamba)", "filesApi": "API ya faili", "filesApiDesc": "Pakia na udhibiti faili za usindikaji wa bechi", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Utengenezaji wa Video", + "videoDesc": "Tengeneza video kwa kutumia miundo ya AI kama ComfyUI na Stable Video Diffusion.", + "tailscaleRequestFailed": "Imeshindwa kupakia hali ya Tailscale", + "tailscaleEnableFailed": "Imeshindwa kuwezesha Tailscale Funnel", + "tailscaleWaitingForLogin": "Kamilisha kuingia kwenye Tailscale katika kichupo cha kivinjari kilichofunguliwa. OmniRoute itajaribu tena kiotomatiki.", + "tailscaleLoginTimedOut": "Muda wa kusubiri kuingia kwenye Tailscale umeisha", + "tailscaleWaitingForFunnel": "Washa Funnel kwa kifaa hiki katika kichupo cha kivinjari kilichofunguliwa. OmniRoute itaendelea kukagua.", + "tailscaleFunnelTimedOut": "Muda wa kusubiri Tailscale Funnel iwezeshwe umeisha", + "tailscaleStarted": "Tailscale Funnel imewezeshwa", + "tailscaleDisableFailed": "Imeshindwa kuzima Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel imezimwa", + "tailscaleInstallFailed": "Imeshindwa kusakinisha Tailscale", + "tailscaleInstallProgress": "Inaendelea...", + "tailscaleInstalled": "Tailscale imesakinishwa kwa mafanikio", + "tailscaleRunning": "Inaendeshwa", + "tailscaleNeedsLogin": "Inahitaji Kuingia", + "tailscaleStoppedState": "Imesimamishwa", + "tailscaleNotInstalled": "Haijasakinishwa", + "tailscaleUnsupported": "Haitumiki", + "tailscaleError": "Hitilafu", + "tailscaleDisable": "Simamisha Funnel", + "tailscaleInstallAndEnable": "Sakinisha na Uwashe", + "tailscaleLoginAndEnable": "Ingia na Uwashe", + "tailscaleEnable": "Washa Funnel", + "tailscaleUrlNotice": "Hutumia anwani yako ya Tailscale .ts.net. Kuingia na idhini ya Funnel huenda vikahitajika unapotumia kwa mara ya kwanza.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", - "tailscaleSudoLabel": "Sudo Password (required on macOS/Linux)", + "tailscaleNeedsLoginHint": "Thibitisha utambulisho wa mashine hii kwa Tailscale, kisha uwashe Funnel.", + "tailscaleBinaryPath": "Faili tekelezi: {path}", + "tailscaleLastError": "Hitilafu ya mwisho: {error}", + "tailscaleInstallTitle": "Sakinisha Tailscale", + "tailscaleInstallIntro": "Husakinisha Tailscale kwenye mashine hii na kutayarisha OmniRoute ili kuwezesha Funnel.", + "tailscaleInstallPasswordHint": "Kwenye macOS na Linux, sudo inaweza kuhitajika kwa usakinishaji wa kifurushi na kuanzisha daemon.", + "tailscaleSudoPlaceholder": "Nenosiri la sudo la hiari", + "tailscaleInstalling": "Inasakinisha", + "tailscaleSudoLabel": "Nenosiri la sudo (linahitajika kwenye macOS/Linux)", "ngrokTitle": "Tunnel", "ngrokRunning": "Kukimbia", "ngrokStarting": "Kuanzia", @@ -4108,7 +4108,7 @@ "all": "Zote", "more": "+{count} zaidi", "showInternalTooltip": "Onyesha au ufiche njia za ndani (zimefichwa kwa chaguomsingi)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Uthibitishaji wa Bearer", "requestBody": "Mwili wa Ombi", "close": "Funga", "tryIt": "Jaribu", @@ -4132,7 +4132,7 @@ "vscodeAliasModelsLabel": "Modeli za VS Code", "vscodeAliasChatLabel": "Gumzo la VS Code", "localServer": "Seva ya Ndani", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute ya Wingu", "copyUrl": "Nakili URL", "badgeLoopbackTooltip": "Kituo hiki cha mwisho kinafikiwa ndani pekee (loopback pekee)", "badgeAlwaysProtectedTooltip": "Kituo hiki cha mwisho kinalindwa kila wakati na kinahitaji idhini", @@ -4144,9 +4144,9 @@ "tierPublic": "Ya Umma", "hideInternal": "Ficha za Ndani", "showInternal": "Onyesha za Ndani", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Kidokezo Maalum cha Mfumo", + "customSystemPromptDescription": "Ingiza kidokezo maalum cha mfumo katika kila ombi la modeli", + "customSystemPromptPlaceholder": "k.m. Jibu kila mara kwa lugha ya maharamia...", "obsidianEnterToken": "Tafadhali ingiza tokeni ya API ya Obsidian", "obsidianConnectFailed": "Imeshindwa kuunganisha", "obsidianConnectionFailed": "Muunganisho umeshindwa", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "Token imewekwa. Zana za Notion zinapatikana kupitia MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Proksi ya Endpoint", + "tabApiEndpoints": "Endpoint za API", + "apiEndpointsTitle": "Endpoint za API", + "apiEndpointsDescription": "Endpoint za API za upande wa nyuma zinazoweza kutumiwa na programu na huduma nyingine. Sehemu hii itaorodhesha REST API zote zinazopatikana pamoja na nyaraka na uwezo wa kuzijaribu.", + "comingSoon": "Inakuja Hivi Karibuni", + "plannedFeatures": "Vipengele Vilivyopangwa", + "featureRestApi": "Katalogi ya endpoint za REST API yenye nyaraka shirikishi", + "featureWebhooks": "Usanidi wa webhook na usajili wa matukio", + "featureSwagger": "Uzalishaji wa kiotomatiki wa vipimo vya OpenAPI / Swagger", + "featureAuth": "Usimamizi wa ufunguo wa API na mawanda ya OAuth kwa kila endpoint" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "Inapakia dashibodi ya MCP...", + "activate": "washa", + "deactivate": "zima", + "confirmSwitchCombo": "Unathibitisha {action} mchanganyiko \"{combo}\"?", + "switchComboFailed": "Imeshindwa kubadilisha hali ya mchanganyiko.", + "switchComboSuccess": "Mchanganyiko \"{combo}\" umesasishwa.", + "confirmApplyProfile": "Unataka kutumia wasifu wa ustahimilivu \"{profile}\"?", + "applyProfileFailed": "Imeshindwa kutumia wasifu wa ustahimilivu.", + "applyProfileSuccess": "Wasifu \"{profile}\" umetumika.", + "confirmResetBreakers": "Unataka kuweka upya vivunja mzunguko vyote?", + "resetBreakersFailed": "Imeshindwa kuweka upya vivunja mzunguko.", + "resetBreakersSuccess": "Vivunja mzunguko vimewekwa upya.", + "processStatus": "Hali ya mchakato", "online": "Online", "offline": "Offline", "disableLabel": "Zima {label}", @@ -4237,119 +4237,119 @@ "mcpStep2": "Sanidi kiteja chako cha MCP ili kiunganishe kupitia usafirishaji wa stdio.", "mcpStep3": "Ita zana kama {code1} na {code2}.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "Muda ambao kipindi kimekuwa kikiendelea", + "lastHeartbeat": "Mpigo wa mwisho", + "activity24h": "Shughuli (saa 24)", + "totalCalls": "Jumla ya miito", + "successRate": "Kiwango cha mafanikio", + "avgLatency": "Wastani wa ucheleweshaji", + "topTools": "Zana maarufu", + "noToolCalls24h": "Hakuna miito ya zana katika saa 24 zilizopita.", + "runtimeDetails": "Maelezo ya mazingira ya utekelezaji", + "transport": "Usafirishaji", + "scopesEnforced": "Mawanda yanatekelezwa", + "yes": "ndiyo", + "no": "hapana", + "lastCall": "Simu ya mwisho", + "heartbeatPath": "Njia ya mapigo ya moyo", + "operationalControls": "Vidhibiti vya uendeshaji", + "switchCombo": "Badilisha mseto", + "inactive": "haitumiki", + "active": "inatumika", + "activateCombo": "Washa mseto", + "deactivateCombo": "Zima mseto", + "applyResilienceProfile": "Tumia wasifu wa ustahimilivu", + "profileAggressive": "mkali", + "profileBalanced": "sawaziko", + "profileConservative": "mwangalifu", + "applyProfile": "Tumia wasifu", + "resetCircuitBreakers": "Weka upya vivunja saketi", + "resetCircuitBreakersHelp": "Huondoa hali ya sasa ya kivunja saketi na vihesabu vya kushindwa vya watoa huduma.", + "resetAllBreakers": "Weka upya vivunja saketi vyote", + "toolsAndScopes": "Zana na mawanda", + "tableTool": "Zana", + "tableScopes": "Mawanda", + "tablePhase": "Awamu", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Kumbukumbu ya ukaguzi", + "auditSummary": "Simu: {total} | ukurasa wa {page} kati ya {totalPages}", + "allTools": "Zana zote", + "allResults": "Matokeo yote", + "success": "Mafanikio", + "failure": "Kushindwa", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "Inapakia rekodi za ukaguzi...", + "noAuditEntriesForFilters": "Hakuna rekodi za ukaguzi zilizopatikana kwa vichujio vya sasa.", + "tableTimestamp": "Muhuri wa muda", + "tableDuration": "Muda", + "tableResult": "Matokeo", + "tableApiKey": "Ufunguo wa API", + "failed": "imeshindwa", + "previous": "Iliyotangulia", + "next": "Inayofuata", + "apiKeyId": "Kitambulisho cha Ufunguo wa API", + "offset": "Ofseti", + "limit": "Kikomo", + "tool": "Zana" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "Inapakia dashibodi ya A2A...", + "confirmCancelTask": "Ungependa kughairi jukumu {taskId}?", + "cancelTaskFailed": "Imeshindwa kughairi jukumu.", + "cancelTaskSuccess": "Jukumu {taskId} limeghairiwa.", + "smokeSendFailed": "Jaribio la awali la message/send limeshindwa.", + "smokeSendSuccessWithTask": "message/send iko sawa (jukumu {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "Jaribio la awali la message/stream limeshindwa.", + "smokeStreamSuccessWithTask": "message/stream iko sawa (jukumu {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream imekamilika bila kitambulisho cha jukumu.", + "health": "Afya", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "Jumla ya majukumu", + "activeStreams": "Mitiririko inayoendelea", + "lastTask": "Jukumu la mwisho", + "taskStateOverview": "Muhtasari wa hali za majukumu", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "limewasilishwa", + "working": "linaendelea", + "completed": "limekamilika", + "failed": "limeshindwa", + "cancelled": "limeghairiwa" }, - "agentCard": "Agent card", + "agentCard": "Kadi ya ajenti", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "Toleo", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "Uwezo", + "agentCardNotAvailable": "Kadi ya ajenti haipatikani.", + "quickValidation": "Uthibitishaji wa haraka", + "quickValidationDescription": "Hutekeleza majaribio ya awali kupitia endpoint ya moja kwa moja ya `/a2a`.", + "runMessageSend": "Endesha message/send", + "runMessageStream": "Endesha message/stream", + "taskManagement": "Usimamizi wa majukumu", + "taskSummary": "Majukumu {total} | ukurasa wa {page} kati ya {totalPages}", + "allStates": "yote", + "allSkills": "ujuzi wote", + "loadingTasks": "Inapakia majukumu...", + "noTasksForFilters": "Hakuna majukumu yaliyopatikana kwa vichujio vya sasa.", + "tableTask": "Jukumu", + "tableSkill": "Ujuzi", + "tableState": "Hali", + "tableUpdated": "Ilisasishwa", + "tableActions": "Vitendo", + "view": "Tazama", + "cancel": "Ghairi", + "previous": "Iliyotangulia", + "next": "Ifuatayo", + "taskDetail": "Maelezo ya kazi", + "close": "Funga", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "Matukio", + "artifacts": "Artefakti", + "tablePhase": "Awamu ya Jedwali", + "offset": "Nafasi ya kuanzia", + "limit": "Kikomo", + "skill": "Ujuzi", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "ujumbe/tuma", "rpcMethodStream": "ujumbe/mkondo", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Vitendo", + "addMemory": "Ongeza Kumbukumbu", + "allTypes": "Aina Zote", "cancel": "Ghairi", "checkHealth": "Angalia afya", "checkingHealth": "Inaangalia...", @@ -4382,17 +4382,17 @@ "howWorksToggle": "Jinsi inavyofanya kazi", "howWorksContent": "1. Uchimbaji wa kiotomatiki: mwishoni mwa kila jibu, ukweli na matukio hutambuliwa na kuhifadhiwa kiotomatiki.\n2. Urejeshaji: kabla ya kila jibu, kumbukumbu zinazofaa zaidi hutafutwa kupitia FTS5 (halisi), vekta (kisemantiki), au mseto wa RRF.\n3. Uingizaji: kumbukumbu husika huingizwa kwenye muktadha wa msaidizi ili kuboresha ubora wa majibu.\n4. Usimamizi: tumia ukurasa huu kutazama, kuhariri, kuhamisha, na kubana kumbukumbu za zamani." }, - "content": "Content", + "content": "Maudhui", "contentPlaceholder": "Thamani au maudhui ya JSON ya kukumbuka", - "created": "Created", - "delete": "Delete", + "created": "Imeundwa", + "delete": "Futa", "deleteConfirmDesc": "Kitendo hiki hakiwezi kutenduliwa. Kumbukumbu itaondolewa kabisa.", "deleteConfirmTitle": "Futa kumbukumbu?", - "description": "View and manage stored memory entries", + "description": "Tazama na udhibiti maingizo ya kumbukumbu yaliyohifadhiwa", "editMemory": "Hariri kumbukumbu", "editModal": { "title": "Hariri Kumbukumbu", - "metadataLabel": "Metadata (JSON)", + "metadataLabel": "Data ya maelezo (JSON)", "metadataInvalid": "JSON si sahihi", "saveFailed": "Imeshindwa kuhifadhi kumbukumbu" }, @@ -4444,20 +4444,20 @@ "configureCta": "Sanidi", "vectorStoreInstallHint": "Kuwezesha utafutaji wa vekta: npm install sqlite-vec (inahitaji Node.js asili, si WASM), kisha uwashe upya." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Matukio", + "export": "Hamisha Nje", + "factual": "Ukweli", "healthUnknown": "Afya haijulikani", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Kiwango cha Mafanikio", + "import": "Leta", "importError": "Imeshindwa kuingiza faili", "importResult": "{imported} zimeingizwa, {skipped} zimerukwa", - "key": "Key", + "key": "Ufunguo", "keyPlaceholder": "k.m. mandhari.ya.mapendeleo.ya mtumiaji", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Kumbukumbu", "next": "Inayofuata", - "noMemories": "No memories found", + "noMemories": "Hakuna kumbukumbu zilizopatikana", "pageInfo": "Ukurasa {page} wa {totalPages} ({total} jumla)", "pipelineError": "Hitilafu ya bomba", "pipelineOk": "Bomba Sawa ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "Imeshindwa kuleta onyesho la kukagua" }, "previous": "Iliyotangulia", - "procedural": "Procedural", + "procedural": "Kitaratibu", "qdrant": { "title": "Qdrant (Hifadhi ya Vekta ya Kiwango cha 2)", "description": "Ujumuishaji wa hiari wa Qdrant kwa utafutaji wa kisemantiki unaoweza kupanuka", @@ -4534,8 +4534,8 @@ }, "save": "Hifadhi", "saving": "Inahifadhi...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Tafuta kumbukumbu...", + "semantic": "Kisemantiki", "summarize": { "title": "Fupisha kumbukumbu za zamani", "noCandidates": "Hakuna kumbukumbu zinazostahili kufupishwa (vigezo: umri wa >siku 30).", @@ -4547,8 +4547,8 @@ "playground": "Uwanja wa Majaribio", "engine": "Injini" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Usimamizi wa Kumbukumbu", + "tokensUsed": "Tokeni Zilizotumika", "tooltip": { "totalEntries": "Jumla ya kumbukumbu zilizohifadhiwa kwa ufunguo huu wa API", "tokensUsed": "Kadirio la jumla ya tokeni zinazotumiwa na kumbukumbu amilifu", @@ -4558,17 +4558,17 @@ "procedural": "Taratibu, mtiririko wa kazi, na maagizo ambayo msaidizi anapaswa kufuata", "semantic": "Dhana, mapendeleo, na maarifa ya kikoa" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Jumla ya Maingizo", + "type": "Aina", "memoryEnabled": "Kumbukumbu imewezeshwa" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Ujuzi", + "description": "Dhibiti na ufuatilie ujuzi wa AI", + "skillsTab": "Ujuzi", + "executionsTab": "Utekelezaji", "selectSkillToInspect": "Chagua ujuzi upande wa kushoto ili kuukagua.", - "schemaTab": "Schema", + "schemaTab": "Skima", "handlerTab": "Kishughulikiaji", "inputSchema": "Schema ya Ingizo", "outputSchema": "Schema ya Matokeo", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Endesha jaribio (kibadala)", "setModeAria": "Weka hali ya {mode}", "uninstallSkill": "Ondoa ujuzi", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Mazingira ya majaribio", + "loading": "Inapakia ujuzi...", + "noSkills": "Hakuna ujuzi uliopatikana", + "noExecutions": "Hakuna utekelezaji uliopatikana", + "enabled": "Imewashwa", + "disabled": "Imezimwa", "delete": "Futa", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "Toleo", + "tableDescription": "Maelezo", + "skill": "Ujuzi", + "status": "Hali", + "duration": "Muda", + "time": "Wakati", + "sandboxConfig": "Usanidi wa Sandbox", + "cpuLimit": "Kikomo cha CPU", + "cpuLimitDesc": "Muda wa juu zaidi wa utekelezaji kwa kila ujuzi", + "memoryLimit": "Kikomo cha Kumbukumbu", + "memoryLimitDesc": "Kiwango cha juu zaidi cha kumbukumbu kinachoweza kutengwa", + "timeout": "Muda wa Kuisha", + "timeoutDesc": "Muda wa juu zaidi wa kusubiri jibu", + "networkAccess": "Ufikiaji wa Mtandao", + "networkAccessDesc": "Ruhusu maombi ya mtandao yanayotoka", + "mode": "Hali", "q": "Q", "filterSkillsPlaceholder": "Chuja ujuzi kwa jina, maelezo au lebo", "allModes": "Aina zote", @@ -4642,90 +4642,90 @@ "installSkill": "Sakinisha Ujuzi" }, "health": { - "title": "System Health", - "description": "Real-time monitoring of your OmniRoute instance", - "healthy": "Healthy", - "degraded": "Degraded", - "down": "Down", - "uptime": "Uptime", - "memory": "Memory", - "memoryRss": "Memory (RSS)", - "heap": "Heap", + "title": "Afya ya Mfumo", + "description": "Ufuatiliaji wa wakati halisi wa instansi yako ya OmniRoute", + "healthy": "Nzuri", + "degraded": "Imedhoofika", + "down": "Haifanyi Kazi", + "uptime": "Muda wa Uendeshaji", + "memory": "Kumbukumbu", + "memoryRss": "Kumbukumbu (RSS)", + "heap": "Rundo", "cpu": "CPU", - "database": "Database", - "version": "Version", - "lastCheck": "Last Check", - "providerHealth": "Provider Health", - "systemMetrics": "System Metrics", - "tokenHealth": "Token Health", - "refreshAll": "Refresh All", - "checkNow": "Check Now", - "loadingHealth": "Loading health data...", - "failedToLoad": "Failed to load health data: {error}", - "retry": "Retry", - "allOperational": "All systems operational", - "issuesDetected": "System issues detected", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", - "updatedAt": "Updated {time}", - "latency": "Latency", + "database": "Hifadhidata", + "version": "Toleo", + "lastCheck": "Ukaguzi wa Mwisho", + "providerHealth": "Afya ya Mtoa Huduma", + "systemMetrics": "Vipimo vya Mfumo", + "tokenHealth": "Afya ya Tokeni", + "refreshAll": "Onyesha Upya Zote", + "checkNow": "Kagua Sasa", + "loadingHealth": "Inapakia data ya afya...", + "failedToLoad": "Imeshindwa kupakia data ya afya: {error}", + "retry": "Jaribu Tena", + "allOperational": "Mifumo yote inafanya kazi", + "issuesDetected": "Matatizo ya mfumo yamegunduliwa", + "healthVerdictReady": "OmniRoute iko tayari", + "healthVerdictActionRequired": "Hatua inahitajika ili kurejesha utendaji kamili", + "healthVerdictCoolingDown": "Inatulia baada ya mabadiliko ya hivi karibuni", + "healthSubtitle": "Ukaguzi wa afya ya mfumo", + "advancedDiagnosticsTitle": "Uchunguzi wa kina", + "hide": "Ficha", + "show": "Onyesha", + "updatedAt": "Imesasishwa {time}", + "latency": "Muda wa kusubiri", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", "millisecondsShort": "{value}ms", "notAvailable": "—", - "totalRequests": "Total requests", - "noDataYet": "No data yet", - "promptCache": "Prompt Cache", - "entries": "Entries", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "signatureCache": "Signature Cache", - "signatureDefaults": "Defaults", - "signatureTool": "Tool", - "signatureFamily": "Family", - "signatureSession": "Session", - "recovering": "Recovering", - "noCBData": "No circuit breaker data available. Make some requests first.", - "providerHealthStatusAria": "Provider health status", - "issuesLabel": "Issues Detected", - "operational": "Operational", - "providers": "Providers", - "configuredProvidersLabel": "Configured in dashboard", - "configuredProvidersHint": "Providers with credentials saved in /dashboard/providers, regardless of runtime state.", - "activeProviders": "{count} active", - "activeProvidersHint": "Configured providers currently enabled for routing requests.", - "monitoredProviders": "{count} monitored", - "monitoredProvidersHint": "Providers currently tracked by circuit-breaker health monitors.", - "healthyCount": "{count} healthy", + "totalRequests": "Jumla ya maombi", + "noDataYet": "Bado hakuna data", + "promptCache": "Akiba ya Prompti", + "entries": "Maingizo", + "hitRate": "Kiwango cha Mafanikio", + "hitsMisses": "Mafanikio / Makosa", + "signatureCache": "Akiba ya Sahihi", + "signatureDefaults": "Chaguo-msingi", + "signatureTool": "Zana", + "signatureFamily": "Familia", + "signatureSession": "Kipindi", + "recovering": "Inarejea katika hali ya kawaida", + "noCBData": "Hakuna data ya kivunja mzunguko inayopatikana. Tuma baadhi ya maombi kwanza.", + "providerHealthStatusAria": "Hali ya afya ya watoa huduma", + "issuesLabel": "Matatizo Yamegunduliwa", + "operational": "Inafanya Kazi", + "providers": "Watoa Huduma", + "configuredProvidersLabel": "Wamesanidiwa kwenye dashibodi", + "configuredProvidersHint": "Watoa huduma wenye vitambulisho vilivyohifadhiwa katika /dashboard/providers, bila kujali hali ya wakati wa uendeshaji.", + "activeProviders": "{count} wanatumika", + "activeProvidersHint": "Watoa huduma waliosanidiwa ambao kwa sasa wamewezeshwa kuelekeza maombi.", + "monitoredProviders": "{count} wanafuatiliwa", + "monitoredProvidersHint": "Watoa huduma wanaofuatiliwa kwa sasa na vichunguzi vya afya vya kikatiza mzunguko.", + "healthyCount": "{count} wenye afya", "nodeVersion": "Node {version}", - "failures": "{count} failure", - "failuresPlural": "{count} failures", - "lastFailure": "Last", - "rateLimitStatus": "Rate Limit Status", - "activeLimiters": "{count} active limiter", - "activeLimitersPlural": "{count} active limiters", - "queued": "Queued", - "queuedCount": "{count} queued", - "running": "running", - "runningCount": "{count} running", + "failures": "hitilafu {count}", + "failuresPlural": "hitilafu {count}", + "lastFailure": "Mwisho", + "rateLimitStatus": "Hali ya Kikomo cha Kiwango", + "activeLimiters": "kidhibiti kiwango {count} kinachotumika", + "activeLimitersPlural": "vidhibiti kiwango {count} vinavyotumika", + "queued": "Zilizowekwa kwenye foleni", + "queuedCount": "{count} zilizowekwa kwenye foleni", + "running": "zinaendeshwa", + "runningCount": "{count} zinaendeshwa", "ok": "OK", - "activeLockouts": "Active Lockouts", - "resetConfirm": "Reset all circuit breakers to healthy state? This will clear all failure counts and restore all providers to operational status.", - "resetAllTitle": "Reset all circuit breakers to healthy state", - "resetting": "Resetting...", - "resetAll": "Reset All", - "until": "Until {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "activeLockouts": "Vizuizi Vinavyotumika", + "resetConfirm": "Ungependa kuweka upya vikatiza mzunguko vyote katika hali nzuri? Hatua hii itafuta hesabu zote za hitilafu na kurejesha watoa huduma wote katika hali ya kufanya kazi.", + "resetAllTitle": "Weka upya vikatiza mzunguko vyote katika hali nzuri", + "resetting": "Inaweka upya...", + "resetAll": "Weka Vyote Upya", + "until": "Hadi {time}", + "limitExhausted": "Kimeisha", + "learnedFromHeaders": "Imejifunza kutoka kwenye vichwa", + "remainingOfLimit": "{remaining}/{limit} zimesalia", + "throttleStatus": "Udhibiti wa kasi: {value}", + "lastHeaderUpdate": "Sasisho la kichwa: {age}", "databaseHealth": "Afya ya Hifadhidata", "databaseHealthDescription": "Tambua na urekebishe safu mlalo za kiwango/kikoa zilizopitwa na wakati na marejeleo ya combo yaliyovunjika.", "status": "Hali", @@ -4787,7 +4787,7 @@ "telemetry": { "title": "Mfumo wa Telemetry", "description": "Ombi la kusambaza, muda wa utekelezaji, kipindi, na ishara za kumbukumbu kutoka kwa mchakato huu wa OmniRoute.", - "uptime": "Uptime", + "uptime": "Muda wa kufanya kazi", "totalRequests": "Jumla ya Maombi", "avgLatency": "Wastani wa Kuchelewa", "errorRate": "Kiwango cha Hitilafu", @@ -4851,65 +4851,65 @@ "noTargets": "Hakuna njia lengwa zilizosanidiwa." }, "limits": { - "title": "Limits & Quotas", - "rateLimit": "Rate Limit", - "remaining": "Remaining", - "requestsPerMinute": "Requests/min", - "tokensPerMinute": "Tokens/min", - "dailyLimit": "Daily Limit" + "title": "Vikomo na Kiasi Kinachoruhusiwa", + "rateLimit": "Kikomo cha Kiwango", + "remaining": "Zilizosalia", + "requestsPerMinute": "Maombi/dakika", + "tokensPerMinute": "Tokeni/dakika", + "dailyLimit": "Kikomo cha Kila Siku" }, "logs": { - "title": "Logs", - "requestLogs": "Request Logs", - "proxyLogs": "Proxy Logs", - "auditLog": "Audit Log", + "title": "Kumbukumbu", + "requestLogs": "Kumbukumbu za Maombi", + "proxyLogs": "Kumbukumbu za Proksi", + "auditLog": "Kumbukumbu ya Ukaguzi", "console": "Console", - "auditLogDesc": "Administrative actions and security events", - "loading": "Loading...", - "refresh": "Refresh", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", - "showing": "Showing {count} entries (offset {offset})", - "search": "Search", - "timestamp": "Timestamp", - "action": "Action", - "actor": "Actor", - "target": "Target", - "details": "Details", - "ipAddress": "IP Address", + "auditLogDesc": "Vitendo vya kiutawala na matukio ya usalama", + "loading": "Inapakia...", + "refresh": "Onyesha upya", + "filterByAction": "Chuja kwa kitendo...", + "filterByActor": "Chuja kwa mtendaji...", + "filterEntriesAria": "Chuja maingizo ya kumbukumbu ya ukaguzi", + "filterByActionTypeAria": "Chuja kwa aina ya kitendo", + "filterByActorAria": "Chuja kwa mtendaji", + "refreshAuditLogAria": "Onyesha upya kumbukumbu ya ukaguzi", + "tableAria": "Maingizo ya kumbukumbu ya ukaguzi", + "failedFetchAuditLog": "Imeshindwa kuleta kumbukumbu ya ukaguzi", + "showing": "Inaonyesha maingizo {count} (nafasi {offset})", + "search": "Tafuta", + "timestamp": "Muhuri wa muda", + "action": "Kitendo", + "actor": "Mtendaji", + "target": "Lengo", + "details": "Maelezo", + "ipAddress": "Anwani ya IP", "notAvailable": "—", - "noEntries": "No audit log entries found", - "previous": "Previous", - "next": "Next", - "providerWarningTitle": "Provider Warnings", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", - "providerWarningDesc": "Some providers returned warnings during request processing", + "noEntries": "Hakuna maingizo ya kumbukumbu ya ukaguzi yaliyopatikana", + "previous": "Iliyotangulia", + "next": "Inayofuata", + "providerWarningTitle": "Maonyo ya Watoa Huduma", + "viewDetails": "Angalia Maelezo", + "eventMetadata": "Metadata ya Tukio", + "eventPayload": "Data ya Tukio", + "requestId": "Kitambulisho cha Ombi", + "providerWarningDesc": "Baadhi ya watoa huduma walirejesha maonyo wakati wa kuchakata ombi", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", - "auditModalSubtitle": "Event details and metadata", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "offset": "Nafasi", + "limit": "Kikomo", + "status": "Hali", + "resourceType": "Aina ya Rasilimali", + "totalEntries": "Jumla ya Maingizo", + "tab": "Kichupo", + "auditModalSubtitle": "Maelezo na metadata ya tukio", + "close": "Funga", + "runningRequests": "Maombi Yanayoendelea", + "runningRequestsDesc": "Mwonekano wa wakati halisi wa maombi yanayoendeshwa kwa sasa kwa watoa huduma wa juu", "clearAll": "Futa Zote", "confirmClearActiveRequests": "Je, ungependa kufuta maombi yote yanayoendelea?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "Muundo", + "provider": "Mtoa Huduma", + "account": "Akaunti", + "elapsed": "Muda Uliopita", "activeStage": "Hatua", "activeStageUnknown": "Bado haijatumwa kwa upstream", "activeStageRegistered": "Imesajiliwa", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Nafasi ya kikomo cha kasi imepatikana", "activeStageSendingToProvider": "Inatuma kwa upstream", "activeStageProviderResponseStarted": "Majibu ya upstream yameanza", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Idadi", + "payloads": "Data za maombi", + "viewPayloads": "Tazama", + "activeCount": "{count} zinazotumika", + "clientPayload": "Data za Ombi la Mteja", + "upstreamPayload": "Data za Mtoa Huduma wa Juu", + "upstreamNotSentYet": "Bado haijatumwa kwa mtoa huduma wa juu", + "runningRequestDetailMeta": "Akaunti: {account} — Muda uliopita: {elapsed}", + "export": "Hamisha", + "exporting": "Inahamisha...", + "exportFailed": "Uhamishaji umeshindikana", "cleanHistoryButton": "Futa historia", "cleanHistoryTitle": "Futa historia ya kumbukumbu?", "cleanHistoryMessage": "Hii inafuta kabisa safu mlalo zote za kumbukumbu za maombi, safu mlalo za maelezo ya zamani, na faili za mabaki ya ndani chini ya DATA_DIR/call_logs. Ukurasa wa moja kwa moja utapakiwa upya baada ya kusafisha.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Imefuta maingizo ya kumbukumbu {deleted}, mabaki {deletedArtifacts}, na safu mlalo za maelezo ya zamani {deletedDetailedLogs}.", "cleanHistoryEmpty": "Hakuna historia ya kumbukumbu za ombi iliyopatikana.", "cleanHistoryFailed": "Imeshindwa kusafisha historia ya kumbukumbu.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Kipindi cha Muda", + "lastNHours": "Saa {hours} zilizopita", + "defaultRange": "chaguomsingi", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Imeshindwa kuleta kumbukumbu", + "copyFailed": "Imeshindwa kunakili ingizo la kumbukumbu", + "copyLogEntry": "Nakili ingizo la kumbukumbu", "filterByLevel": "Chuja kwa kiwango cha kumbukumbu", "searchPlaceholder": "Tafuta kumbukumbu…", "searchAria": "Tafuta maingizo ya kumbukumbu", @@ -4964,49 +4964,49 @@ "tokens": "tokeni" }, "onboarding": { - "welcome": "Welcome", + "welcome": "Karibu", "tiers": "Viwango", - "security": "Security", + "security": "Usalama", "test": "Test", - "ready": "Ready!", - "setPassword": "Set Password", - "addProvider": "Add your first provider", - "getStarted": "Get Started", - "skip": "Skip", - "skipWizard": "Skip wizard entirely", - "skipPassword": "Skip password setup", - "skipAndContinue": "Skip & Continue", - "passwordLabel": "Password", - "confirmPassword": "Confirm Password", - "enterPassword": "Enter password", - "confirmPasswordPlaceholder": "Confirm password", - "passwordsMismatch": "Passwords do not match", - "setupComplete": "Setup Complete!", - "goToDashboard": "Go to Dashboard →", - "welcomeDesc": "OmniRoute is your local AI API proxy. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "multiProvider": "Multi-Provider", - "usageTracking": "Usage Tracking", - "securityDesc": "Set a password to protect your dashboard, or skip for now.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", - "providerDesc": "Connect your first AI provider. You can add more later.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", - "apiKeyRequired": "API Key (required)", - "customUrlOptional": "Custom URL (optional)", - "testDesc": "Let's verify your provider connection works.", - "runTest": "Run Connection Test", - "testingConnection": "Testing connection...", - "connectionSuccessful": "Connection successful! Your provider is ready.", - "noProviderFound": "No provider found. You can add one from the dashboard later.", - "testFailed": "Test failed, but you can configure this later.", - "couldNotTest": "Could not test right now. You can test from the dashboard.", - "doneDesc": "You're all set! Your OmniRoute instance is configured and ready to proxy AI requests.", - "yourEndpoint": "Your endpoint:", - "continue": "Continue", - "retry": "Retry", - "failedSetPassword": "Failed to set password. Try again.", - "failedAddProvider": "Failed to add provider. Try again.", - "connectionError": "Connection error. Please try again.", - "provider": "Provider", + "ready": "Tayari!", + "setPassword": "Weka Nenosiri", + "addProvider": "Ongeza mtoa huduma wako wa kwanza", + "getStarted": "Anza", + "skip": "Ruka", + "skipWizard": "Ruka mwongozo mzima", + "skipPassword": "Ruka usanidi wa nenosiri", + "skipAndContinue": "Ruka na Uendelee", + "passwordLabel": "Nenosiri", + "confirmPassword": "Thibitisha Nenosiri", + "enterPassword": "Weka nenosiri", + "confirmPasswordPlaceholder": "Thibitisha nenosiri", + "passwordsMismatch": "Manenosiri hayalingani", + "setupComplete": "Usanidi Umekamilika!", + "goToDashboard": "Nenda kwenye Dashibodi →", + "welcomeDesc": "OmniRoute ni proksi yako ya ndani ya API ya AI. Huelekeza maombi kwa watoa huduma wengi wa AI kwa kusawazisha mzigo, kuhamia huduma mbadala hitilafu inapotokea, na kufuatilia matumizi.", + "multiProvider": "Watoa Huduma Wengi", + "usageTracking": "Ufuatiliaji wa Matumizi", + "securityDesc": "Weka nenosiri ili kulinda dashibodi yako, au ruka kwa sasa.", + "securityDescSkipWarning": "⚠️ Bila nenosiri, hutaweza kuongeza watoa huduma wakati wa usanidi. Unaweza kuwaongeza baadaye kupitia dashibodi baada ya kuweka nenosiri.", + "providerDesc": "Unganisha mtoa huduma wako wa kwanza wa AI. Unaweza kuongeza wengine baadaye.", + "providerRequiresPassword": "Unahitaji kuweka nenosiri kwanza ili kuongeza watoa huduma. Tafadhali rudi kwenye hatua ya usalama na uweke nenosiri, au ongeza watoa huduma baadaye kupitia dashibodi.", + "apiKeyRequired": "Ufunguo wa API (unahitajika)", + "customUrlOptional": "URL Maalum (si lazima)", + "testDesc": "Hebu tuhakikishe kuwa muunganisho wako na mtoa huduma unafanya kazi.", + "runTest": "Fanya Jaribio la Muunganisho", + "testingConnection": "Inajaribu muunganisho...", + "connectionSuccessful": "Muunganisho umefaulu! Mtoa huduma wako yuko tayari.", + "noProviderFound": "Hakuna mtoa huduma aliyepatikana. Unaweza kuongeza mmoja baadaye kutoka kwenye dashibodi.", + "testFailed": "Jaribio limeshindwa, lakini unaweza kusanidi hili baadaye.", + "couldNotTest": "Haikuwezekana kufanya jaribio sasa. Unaweza kufanya jaribio kutoka kwenye dashibodi.", + "doneDesc": "Kila kitu kiko tayari! Mfumo wako wa OmniRoute umesanidiwa na uko tayari kupitisha maombi ya AI.", + "yourEndpoint": "Endpoint yako:", + "continue": "Endelea", + "retry": "Jaribu Tena", + "failedSetPassword": "Imeshindikana kuweka nenosiri. Jaribu tena.", + "failedAddProvider": "Imeshindikana kuongeza mtoa huduma. Jaribu tena.", + "connectionError": "Hitilafu ya muunganisho. Tafadhali jaribu tena.", + "provider": "Mtoa Huduma", "apiKeyHelp": "Kitufe cha API ni nenosiri la huduma za AI. Pata moja kutoka kwa tovuti ya mtoa huduma wako (k.m., platform.openai.com, console.anthropic.com).", "tier": { "subtitle": "OmniRoute hupanga watoa huduma katika viwango vitatu kwa hivyo uelekezaji unapendelea njia inayotegemewa zaidi na ya bei ya chini kwanza.", @@ -5049,12 +5049,12 @@ } }, "providers": { - "title": "Providers", + "title": "Watoa Huduma", "Account Deactivated": "Akaunti Imelemazwa", "allProviders": "Watoa huduma wote", "audioProviders": "Watoa Sauti", "showFreeOnly": "Bure pekee", - "addProvider": "Add Provider", + "addProvider": "Ongeza Mtoa Huduma", "addFirstProvider": "Ongeza mtoa huduma wako wa kwanza", "addFirstProviderDesc": "Unganisha mtoa huduma wa AI ili kuanza kuelekeza maombi kupitia OmniRoute. Unaweza kutumia watoa huduma bila malipo, funguo za API au akaunti za OAuth.", "learnMore": "Jifunze zaidi", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Inaingiza…", "importFromFileImport": "Ingiza watoa huduma {count}", "importFromFileResult": "Imeingiza watoa huduma {success} ({failed} zimeshindwa)", + "importFromFileDownloadTemplate": "Pakua kiolezo cha CSV", + "importFromFileMoreErrors": "+{count} zaidi", + "importFromFileSchemaHint": "Safu wima za CSV zinategemea mpangilio: provider, name, apiKey, baseUrl (si lazima), priority (si lazima). Safu wima ya provider lazima iwe kitambulisho cha mtoa huduma anayesimamiwa ambacho tayari kipo au kitambulisho cha nodi inayooana na OpenAI/Anthropic ambacho tayari kimesajiliwa — uingizaji huu hauundi nodi mpya za endpoint.", "adaptaTutorial": { "title": "Jinsi ya kuunganisha Adapta Web", "introPrefix": "Adapta inathibitisha kupitia Clerk. Tokeni hiyo", @@ -5103,31 +5106,31 @@ "tipPrefix": "Kidakuzi cha", "tipSuffix": "kina muda mrefu wa kuishi, kwa kawaida kwa miezi kadhaa. Unahitaji tu kukihuisha ikiwa utaondoka au Adapta itabatilisha kipindi." }, - "editProvider": "Edit Provider", - "deleteProvider": "Delete Provider", - "noProviders": "No providers configured", - "modelAvailability": "Model Availability", - "accounts": "Accounts", - "newAccount": "New Account", - "deleteConfirm": "Are you sure you want to delete this provider?", - "testing": "Testing...", - "testConnection": "Test Connection", - "testSuccess": "Connection successful", - "testFailed": "Connection failed", - "available": "Available", - "cooldown": "Cooldown", - "unavailable": "Unavailable", - "unknown": "Unknown", + "editProvider": "Hariri Mtoa Huduma", + "deleteProvider": "Futa Mtoa Huduma", + "noProviders": "Hakuna watoa huduma waliosanidiwa", + "modelAvailability": "Upatikanaji wa Modeli", + "accounts": "Akaunti", + "newAccount": "Akaunti Mpya", + "deleteConfirm": "Una uhakika unataka kumfuta mtoa huduma huyu?", + "testing": "Inajaribu...", + "testConnection": "Jaribu Muunganisho", + "testSuccess": "Muunganisho umefaulu", + "testFailed": "Muunganisho umeshindwa", + "available": "Inapatikana", + "cooldown": "Muda wa Kusubiri", + "unavailable": "Haipatikani", + "unknown": "Haijulikani", "oauthLabel": "OAuth", - "compatibleLabel": "Compatible", + "compatibleLabel": "Inaoana", "chat": "Chat", "responses": "Responses", "messages": "Messages", - "oauthProviders": "OAuth Providers", - "freeProviders": "Free Providers", - "apiKeyProviders": "API Key Providers", - "compatibleProviders": "API Key Compatible Providers", - "testAll": "Test All", + "oauthProviders": "Watoa Huduma wa OAuth", + "freeProviders": "Watoa Huduma Bila Malipo", + "apiKeyProviders": "Watoa Huduma wa API Key", + "compatibleProviders": "Watoa Huduma Wanaooana na API Key", + "testAll": "Jaribu Zote", "reorderByAvailability": "Panga upya", "reorderByAvailabilityTitle": "Panga upya miunganisho kulingana na upatikanaji", "reorderByAvailabilityError": "Imeshindwa kupanga upya miunganisho kulingana na upatikanaji", @@ -5135,10 +5138,10 @@ "distributing": "Inasambaza...", "selectedCount": "{count, plural, one {# iliyochaguliwa} other {# zilizochaguliwa}}", "accountsCount": "{count, plural, one {akaunti #} other {akaunti #}}", - "testAllOAuth": "Test all OAuth connections", - "testAllFree": "Test all Free connections", - "testAllApiKey": "Test all API Key connections", - "testAllCompatible": "Test all Compatible connections", + "testAllOAuth": "Jaribu miunganisho yote ya OAuth", + "testAllFree": "Jaribu miunganisho yote ya Bure", + "testAllApiKey": "Jaribu miunganisho yote ya API Key", + "testAllCompatible": "Jaribu miunganisho yote Inayooana", "testAllModels": "Jaribu mifano yote", "testAllModelsConfirm": "Jaribu mifano yote inayoonekana? Mifano iliyofeli itafichwa ikiwa ufichaji wa kiotomatiki umewezeshwa.", "testingAllModels": "Inajaribu {done}/{total}...", @@ -5154,9 +5157,9 @@ "filterByVisibility": "Chuja kwa mwonekano", "autoHideFailed": "Ficha kiotomatiki modeli zilizofeli", "autoHideFailedHint": "Inapowezeshwa, Jaribu zote huficha hitilafu zisizo za muda mfupi kutoka kwenye katalogi za umma kama vile /v1/models. Vipimo vya modeli moja havifichwi kiotomatiki kamwe.", - "connected": "{count} Connected", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", + "connected": "{count} Imeunganishwa", + "errorCount": "{count} Hitilafu ({code})", + "errorCountNoCode": "{count} Hitilafu", "testAllCompleted": "Imejaribu modeli {total}: {ok} Sawa, {failed} zimefeli", "modelAutoHidden": "Modeli {model} imefichwa kiotomatiki (jaribio limefeli)", "filterAll": "Zote", @@ -5164,9 +5167,9 @@ "filterHidden": "Zilizofichwa pekee", "modelsHiddenCount": "{count} zimefichwa", "warningCount": "{count} Onyo", - "noConnections": "No connections", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "noConnections": "Hakuna miunganisho", + "expiredBadge": "Muda Umeisha", + "expiringSoonBadge": "Muda Unakaribia Kuisha", "freeTier": "Kiwango cha Bure", "freeTierAvailable": "Kiwango cha bure kinapatikana", "hasFreeTooltip": "Kiwango cha bure kinapatikana", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Mtoa huduma huyu ameacha kutumika", "riskNotice": { "title": "Kabla ya kuendelea", - "detailsTitle": "Usage caveats", + "detailsTitle": "Tahadhari za matumizi", "tooltip": "Mtoa huduma aliye na tahadhari za matumizi — bofya kwa maelezo zaidi", "oauth": "Mtoa huduma huyu anatumia kipindi chako rasmi cha bidhaa/OAuth, ambacho hakijaidhinishwa kwa matumizi ya proksi/ruta. Hatupendekezi matumizi makubwa ya ejenti inayojitegemea (mtindo wa OpenCloud, mtiririko mrefu wa hatua nyingi, makundi makubwa) — upstream inaweza kuchukua hatua kwa kuzuia au kupiga marufuku akaunti. Tumia kwa hatari yako mwenyewe.", "webCookie": "Mtoa huduma huyu anathibitisha kupitia kuki za kipindi chako cha wavuti. Huduma ya upstream inaweza kubatilisha kipindi wakati wowote, ikikuhitaji uingie tena. Haipendekezwi kwa shughuli ndefu zisizosimamiwa. Tumia kwa hatari yako mwenyewe.", @@ -5188,95 +5191,95 @@ "cancel": "Ghairi" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "Miunganisho {count} imewekewa alama — hadi kushindwa mara {maxFailures} hivi karibuni{lastFailureSuffix}. Bofya ili kuona hali ya muunganisho.", + "lastFailureSuffix": "(mara ya mwisho kushindwa {time})", + "ariaLabel": "Tazama maelezo ya hali ya muunganisho, onyo {count}" }, - "disabled": "Disabled", - "enableProvider": "Enable provider", - "disableProvider": "Disable provider", - "testResults": "Test Results", - "noCompatibleYet": "No compatible providers added yet", - "compatibleHint": "Use the buttons above to add OpenAI or Anthropic compatible endpoints", - "addOpenAICompatible": "Add OpenAI Compatible", - "addAnthropicCompatible": "Add Anthropic Compatible", - "addNewProvider": "Add New Provider", - "backToProviders": "Back to Providers", - "configureNewProvider": "Configure a new AI provider to use with your applications.", - "providerLabel": "Provider", - "selectProvider": "Select a provider", - "selectedProvider": "Selected provider", - "authMethod": "Authentication Method", - "apiKeyLabel": "API Key", - "apiKeyRequired": "API Key is required", - "selectProviderRequired": "Please select a provider", - "enterApiKey": "Enter your API key", - "apiKeySecure": "Your API key will be encrypted and stored securely.", - "oauth2Connect": "Connect with OAuth2", + "disabled": "Imezimwa", + "enableProvider": "Washa mtoa huduma", + "disableProvider": "Zima mtoa huduma", + "testResults": "Matokeo ya Majaribio", + "noCompatibleYet": "Bado hakuna watoa huduma wanaooana walioongezwa", + "compatibleHint": "Tumia vitufe vilivyo hapo juu ili kuongeza sehemu za mwisho zinazooana na OpenAI au Anthropic", + "addOpenAICompatible": "Ongeza Inayooana na OpenAI", + "addAnthropicCompatible": "Ongeza Inayooana na Anthropic", + "addNewProvider": "Ongeza Mtoa Huduma Mpya", + "backToProviders": "Rudi kwa Watoa Huduma", + "configureNewProvider": "Sanidi mtoa huduma mpya wa AI ili utumie pamoja na programu zako.", + "providerLabel": "Mtoa Huduma", + "selectProvider": "Chagua mtoa huduma", + "selectedProvider": "Mtoa huduma aliyechaguliwa", + "authMethod": "Mbinu ya Uthibitishaji", + "apiKeyLabel": "Ufunguo wa API", + "apiKeyRequired": "API Key inahitajika", + "selectProviderRequired": "Tafadhali chagua mtoa huduma", + "enterApiKey": "Weka API key yako", + "apiKeySecure": "API key yako itasimbwa kwa njia fiche na kuhifadhiwa kwa usalama.", + "oauth2Connect": "Unganisha kwa OAuth2", "oauth2Label": "OAuth2", - "oauth2Desc": "Connect your account using OAuth2 authentication.", - "displayName": "Display Name", - "displayNamePlaceholder": "e.g., Production API, Dev Environment", - "displayNameHint": "Optional. A friendly name to identify this configuration.", - "active": "Active", - "activeDescription": "Enable this provider for use in your applications", - "cancel": "Cancel", - "createProvider": "Create Provider", - "failedCreate": "Failed to create provider", - "errorOccurred": "An error occurred. Please try again.", - "modelStatus": "Model Status", - "showConfiguredOnly": "Configured only", - "allModelsOperational": "All models operational", - "modelsWithIssues": "{count} model(s) with issues", - "allModelsNormal": "All models are responding normally.", - "cooldownCleared": "Cooldown cleared for {model}", - "failedClearCooldown": "Failed to clear cooldown", - "loadingAvailability": "Loading model availability...", - "clearCooldown": "Clear", - "clearing": "Clearing...", - "until": "Until {time}", - "providerTestFailed": "Provider test failed", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "oauth2Desc": "Unganisha akaunti yako kwa kutumia uthibitishaji wa OAuth2.", + "displayName": "Jina la Kuonyesha", + "displayNamePlaceholder": "k.m., API ya Uzalishaji, Mazingira ya Maendeleo", + "displayNameHint": "Si lazima. Jina linaloeleweka la kutambua usanidi huu.", + "active": "Imewashwa", + "activeDescription": "Washa mtoa huduma huyu ili atumike katika programu zako", + "cancel": "Ghairi", + "createProvider": "Unda Mtoa Huduma", + "failedCreate": "Imeshindwa kuunda mtoa huduma", + "errorOccurred": "Hitilafu imetokea. Tafadhali jaribu tena.", + "modelStatus": "Hali ya Modeli", + "showConfiguredOnly": "Zilizosanidiwa pekee", + "allModelsOperational": "Modeli zote zinafanya kazi", + "modelsWithIssues": "Modeli {count} zenye matatizo", + "allModelsNormal": "Modeli zote zinajibu kama kawaida.", + "cooldownCleared": "Kipindi cha kusubiri kimefutwa kwa {model}", + "failedClearCooldown": "Imeshindwa kufuta kipindi cha kusubiri", + "loadingAvailability": "Inapakia upatikanaji wa modeli...", + "clearCooldown": "Futa", + "clearing": "Inafuta...", + "until": "Hadi {time}", + "providerTestFailed": "Jaribio la mtoa huduma limeshindwa", + "providerTestTimeout": "Muda wa jaribio la mtoa huduma umeisha — kuna miunganisho mingi sana ya kujaribu kwa wakati mmoja", "modeTest": "{mode} Test", - "passedCount": "{count} passed", - "failedCount": "{count} failed", - "testedCount": "{count} tested", + "passedCount": "{count} zimefaulu", + "failedCount": "{count} zimeshindwa", + "testedCount": "{count} zimejaribiwa", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", - "noActiveConnectionsInGroup": "No active connections found for this group.", - "allTestsPassed": "All {total} tests passed", - "testSummary": "{passed}/{total} passed, {failed} failed", - "nameLabel": "Name", + "errorShort": "HITILAFU", + "noActiveConnectionsInGroup": "Hakuna miunganisho inayotumika iliyopatikana kwa kikundi hiki.", + "allTestsPassed": "Majaribio yote {total} yamefaulu", + "testSummary": "{passed}/{total} zimefaulu, {failed} zimeshindwa", + "nameLabel": "Jina", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", - "apiTypeLabel": "API Type", - "prefixHint": "Required. Unique prefix for model names.", - "nameHint": "Required. A friendly label for this node.", - "baseUrlHint": "Required. Provider API base URL.", + "baseUrlLabel": "URL Msingi", + "apiTypeLabel": "Aina ya API", + "prefixHint": "Inahitajika. Kiambishi awali cha kipekee kwa majina ya modeli.", + "nameHint": "Inahitajika. Lebo inayoeleweka kwa nodi hii.", + "baseUrlHint": "Inahitajika. URL msingi ya API ya mtoa huduma.", "iconUrlLabel": "URL ya Aikoni", "iconUrlHint": "Si lazima. URL ya picha inayoonyeshwa kama aikoni ya mtoa huduma huyu.", "iconUrlInvalid": "URL ya ikoni si sahihi. Tumia http(s):// au data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Eneo la saa la kuweka upya mgao wa kila siku", + "dailyQuotaResetTimezoneHint": "Eneo la saa la IANA lisilo la lazima linalotumika wakati huduma ya juu haijumuishi X-RateLimit-Reset. Acha tupu ili kudumisha kipindi kifupi cha kusubiri.", + "dailyQuotaResetHourLabel": "Saa ya kuweka upya mgao wa kila siku", + "dailyQuotaResetHourHint": "Saa ya eneo 0-23 katika eneo la saa lililo hapo juu. Ikiwa tupu, hakuna saa ya kiwango cha nodi.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", - "validateConnection": "Validate Connection", - "validating": "Validating...", - "connectionValid": "Connection is valid!", - "connectionFailed": "Connection failed. Check URL and key.", - "testKeyLabel": "Test API Key", - "testKeyPlaceholder": "sk-... (for validation only)", - "providerNotFound": "Provider not found", - "deleteConnectionConfirm": "Delete this connection?", + "validateConnection": "Thibitisha Muunganisho", + "validating": "Inathibitisha...", + "connectionValid": "Muunganisho ni halali!", + "connectionFailed": "Muunganisho umeshindikana. Angalia URL na ufunguo.", + "testKeyLabel": "Jaribu Ufunguo wa API", + "testKeyPlaceholder": "sk-... (kwa uthibitishaji pekee)", + "providerNotFound": "Mtoa huduma hajapatikana", + "deleteConnectionConfirm": "Ufute muunganisho huu?", "deleteConnectionConfirmNamed": "Una uhakika unataka kufuta {name}? Kitendo hiki hakiwezi kutenduliwa.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Futa Zilizochaguliwa ({count})", + "batchDeleteConfirm": "Ufute miunganisho {count}? Kitendo hiki hakiwezi kutenduliwa.", + "batchDeleteSuccess": "Miunganisho {count} imefutwa", "batchActivateSelected": "Wezesha", "batchDeactivateSelected": "Lemaza", "batchRetestSelected": "Jaribu tena", @@ -5292,32 +5295,32 @@ "filterError": "Hitilafu", "filterBanned": "Imepigwa marufuku", "filterCreditsExhausted": "Salio limeisha", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Tafuta akaunti…", "noFilteredConnections": "Hakuna miunganisho inayolingana na chuujio cha sasa.", - "failedSetAlias": "Failed to set alias", + "failedSetAlias": "Imeshindikana kuweka jina mbadala", "setAliasSuccess": "Lakabu {alias} imewekwa", "deleteAliasSuccess": "Lakabu {alias} imefutwa", - "failedSaveConnection": "Failed to save connection", - "failedSaveConnectionRetry": "Failed to save connection. Please try again.", - "failedRetestConnection": "Failed to retest connection", - "deleteCompatibleNodeConfirm": "Delete this {type} Compatible node?", - "anthropicCompatibleDetails": "Anthropic Compatible Details", - "openaiCompatibleDetails": "OpenAI Compatible Details", + "failedSaveConnection": "Imeshindikana kuhifadhi muunganisho", + "failedSaveConnectionRetry": "Imeshindikana kuhifadhi muunganisho. Tafadhali jaribu tena.", + "failedRetestConnection": "Imeshindikana kujaribu tena muunganisho", + "deleteCompatibleNodeConfirm": "Ufute nodi hii Inayooana na {type}?", + "anthropicCompatibleDetails": "Maelezo ya Uoanifu na Anthropic", + "openaiCompatibleDetails": "Maelezo ya Uoanifu na OpenAI", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Upachikaji", + "audioTranscriptions": "Unukuzi wa Sauti", + "audioSpeech": "Usemi wa Sauti", + "imagesGenerations": "Uzalishaji wa Picha", "chatCompletions": "Chat Completions", - "importingModels": "Importing...", - "importFromModels": "Import from /models", - "modelsImported": "{count} models imported", - "allModelsAlreadyImported": "All models already imported", - "noNewModelsToImport": "No new models to import — all models are already in the registry or custom models list", - "skippingExistingModels": "Skipping {count} existing models", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "importingModels": "Inaingiza...", + "importFromModels": "Ingiza kutoka /models", + "modelsImported": "Modeli {count} zimeingizwa", + "allModelsAlreadyImported": "Modeli zote tayari zimeingizwa", + "noNewModelsToImport": "Hakuna modeli mpya za kuingiza — modeli zote tayari ziko kwenye sajili au orodha ya modeli maalum", + "skippingExistingModels": "Inaruka modeli {count} zilizopo", + "autoSync": "Usawazishaji Otomatiki", + "autoSyncShort": "Sawazisha", "autoFetchModels": "Pata modeli za upstream kiotomatiki", "autoFetchModelsTooltip": "Pata na kuhifadhi mifano ya juu inapohitajika", "autoFetchModelsEnabled": "Mfano wa upstream auto-fetch umewezeshwa", @@ -5329,52 +5332,52 @@ "resetToUpstreamDefaults": "Rejesha mipangilio ya msingi ya upstream", "resetToUpstreamDefaultsSuccess": "Imerejeshwa mipangilio ya mfano wa upstream", "resetToUpstreamDefaultsFailed": "Imeshindikana kurejesha mipangilio ya msingi ya upstream", - "autoSyncTooltip": "Automatically refresh model list every 24h (configurable via MODEL_SYNC_INTERVAL_HOURS)", - "autoSyncEnabled": "Auto-sync enabled — models will refresh periodically", - "autoSyncDisabled": "Auto-sync disabled", - "autoSyncToggleFailed": "Failed to toggle auto-sync", - "autoSyncPartialFailure": "Auto-sync updated for some connections, but not all", - "clearAllModels": "Clear All Models", - "clearAllModelsConfirm": "Are you sure you want to remove all models for this provider? This cannot be undone.", - "clearAllModelsSuccess": "All models cleared", - "clearAllModelsFailed": "Failed to clear models", - "addConnectionToImport": "Add a connection to enable importing.", - "noModelsConfigured": "No models configured", - "connectionCount": "{count} connection(s)", - "fetchingModels": "Fetching available models...", - "failedFetchModels": "Failed to fetch models", + "autoSyncTooltip": "Onyesha upya orodha ya modeli kiotomatiki kila baada ya saa 24 (inaweza kusanidiwa kupitia MODEL_SYNC_INTERVAL_HOURS)", + "autoSyncEnabled": "Usawazishaji otomatiki umewezeshwa — modeli zitaonyeshwa upya mara kwa mara", + "autoSyncDisabled": "Usawazishaji otomatiki umezimwa", + "autoSyncToggleFailed": "Imeshindikana kubadilisha hali ya usawazishaji otomatiki", + "autoSyncPartialFailure": "Usawazishaji otomatiki umesasishwa kwa baadhi ya miunganisho, lakini si yote", + "clearAllModels": "Futa Modeli Zote", + "clearAllModelsConfirm": "Una uhakika unataka kuondoa modeli zote za mtoa huduma huyu? Kitendo hiki hakiwezi kutenduliwa.", + "clearAllModelsSuccess": "Modeli zote zimefutwa", + "clearAllModelsFailed": "Imeshindikana kufuta modeli", + "addConnectionToImport": "Ongeza muunganisho ili kuwezesha uingizaji.", + "noModelsConfigured": "Hakuna modeli zilizosanidiwa", + "connectionCount": "Miunganisho {count}", + "fetchingModels": "Inaleta modeli zinazopatikana...", + "failedFetchModels": "Imeshindwa kuleta modeli", "noFreeModelsFound": "Hakuna modeli za bure zilizopatikana kwa mtoa huduma huyu — hakuna kilichoingizwa.", "fetchModelsSuccess": "Imepata modeli mpya {count}", "fetchModelsFailed": "Imeshindwa kupata mifano kiotomatiki (unaweza kujaribu tena kutoka kwenye mipangilio)", - "noModelsFound": "No models found", - "importFailed": "Import failed", - "noNewModelsAdded": "No new models were added.", + "noModelsFound": "Hakuna modeli zilizopatikana", + "importFailed": "Uingizaji umeshindikana", + "noNewModelsAdded": "Hakuna modeli mpya zilizoongezwa.", "adding": "Adding...", - "close": "Close", - "importingModelsTitle": "Importing Models", - "copyModel": "Copy model", - "filterModels": "Filter models...", + "close": "Funga", + "importingModelsTitle": "Inaingiza Modeli", + "copyModel": "Nakili modeli", + "filterModels": "Chuja modeli...", "testAllRateLimited": "Kikomo cha kiwango kimefikiwa, imesimamishwa mapema", "hideFailedAuto": "Ficha kiotomatiki mifano iliyofeli", - "selectAllModels": "Select all", + "selectAllModels": "Chagua zote", "hideAllModels": "Ficha zote", - "modelsActive": "Active", - "showModel": "Show model", - "hideModel": "Hide model", - "removeModel": "Remove model", - "rateLimitProtected": "Protected", - "rateLimitUnprotected": "Unprotected", + "modelsActive": "Inatumika", + "showModel": "Onyesha modeli", + "hideModel": "Ficha modeli", + "removeModel": "Ondoa modeli", + "rateLimitProtected": "Imelindwa", + "rateLimitUnprotected": "Haijalindwa", "providerQuotaShort": "Kiwango", "hideConnectionFromProviderQuota": "Ficha akaunti hii kutoka kwenye Kiwango cha Mtoa Huduma", "showConnectionInProviderQuota": "Onyesha akaunti hii kwenye Kiwango cha Mtoa Huduma", "quotaVisibilityUpdateFailed": "Imeshindwa kusasisha uonekanaji wa Kiwango cha Mtoa Huduma", - "enableRateLimitProtection": "Click to enable rate limit protection", - "disableRateLimitProtection": "Click to disable rate limit protection", + "enableRateLimitProtection": "Bofya ili kuwezesha ulinzi wa kikomo cha matumizi", + "disableRateLimitProtection": "Bofya ili kuzima ulinzi wa kikomo cha matumizi", "testAllProgress": "Imejaribiwa {done}/{total}", "testAllFailedHidden": "Mifano iliyofeli {count} imefichwa", "testAllDone": "Mifano yote imejaribiwa", - "productionKey": "Production Key", - "enterNewApiKey": "Enter new API key", + "productionKey": "Ufunguo wa Uzalishaji", + "enterNewApiKey": "Weka ufunguo mpya wa API", "codexApplyModalTitle": "Omba kwa Kodeksi ya Karibu", "codexApplyTargetLabel": "Njia inayolengwa", "codexApplyBackupLabel": "Hifadhi rudufu", @@ -5386,77 +5389,77 @@ "bulkAddFormatHint": "Kitufe kimoja kwa kila mstari. Umbizo: jina|apiKey au apiKey tu (iliyopewa jina kiotomatiki kwa faharasa).", "bulkValidateKeys": "Thibitisha kila kitufe kabla ya kuhifadhi (polepole)", "bulkAddAllKeys": "Ongeza Funguo Zote", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", - "optional": "Optional", + "bulkAddedCount": "{count, plural, one {Ufunguo # umeongezwa} other {Funguo # zimeongezwa}}", + "bulkFailedCount": "{count, plural, one {# umeshindwa} other {# zimeshindwa}}", + "optional": "Si lazima", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", "compatibleDefaultModelLabel": "Mfano Chaguomsingi", "compatibleDefaultModelHint": "Ingiza ID ya mfano sawasawa na jinsi endpoint yako inavyotarajia. Mfano huu utahifadhiwa kama chaguomsingi la muunganisho.", - "failedImportModels": "Failed to import models", - "noModelsReturnedFromEndpoint": "No models returned from /models endpoint.", - "importingModelsProgress": "Importing {current} of {total} models...", - "foundModelsStartingImport": "Found {count} models. Starting import...", - "importingModelById": "Importing {modelId}...", - "importSuccessCount": "Successfully imported {count, plural, one {# model} other {# models}}!", - "noNewModelsAddedExisting": "No new models were added (all already exist).", - "importDoneCount": "✓ Done! {count, plural, one {# model imported.} other {# models imported.}}", - "unexpectedErrorOccurred": "An unexpected error occurred", + "failedImportModels": "Imeshindwa kuingiza modeli", + "noModelsReturnedFromEndpoint": "Hakuna modeli zilizorejeshwa kutoka kwenye endpoint ya /models.", + "importingModelsProgress": "Inaingiza modeli ya {current} kati ya {total}...", + "foundModelsStartingImport": "Modeli {count} zimepatikana. Inaanza kuingiza...", + "importingModelById": "Inaingiza {modelId}...", + "importSuccessCount": "Imefanikiwa kuingiza {count, plural, one {modeli #} other {modeli #}}!", + "noNewModelsAddedExisting": "Hakuna modeli mpya zilizoongezwa (zote tayari zipo).", + "importDoneCount": "✓ Imekamilika! {count, plural, one {Modeli # imeingizwa.} other {Modeli # zimeingizwa.}}", + "unexpectedErrorOccurred": "Hitilafu isiyotarajiwa imetokea", "getApiKey": "Pata funguo ya API", "getApiKeyDescription": "Jisajili au jiandikishe kwa ajili ya funguo za API", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {Muunganisho #} other {Miunganisho #}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", - "add": "Add", - "edit": "Edit", - "delete": "Delete", + "add": "Ongeza", + "edit": "Hariri", + "delete": "Futa", "anthropic": "Anthropic", "openai": "OpenAI", - "singleConnectionPerCompatible": "Only one connection is allowed per compatible node. Add another node if you need more connections.", - "connections": "Connections", - "providerProxyTitleConfigured": "Provider proxy: {host}", - "configured": "configured", - "providerProxyConfigureHint": "Configure proxy for all connections of this provider", - "providerProxy": "Provider Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", - "noConnectionsYet": "No connections yet", - "addFirstConnectionHint": "Add your first connection to get started", - "addConnection": "Add Connection", - "availableModels": "Available Models", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", - "pageAutoRefresh": "Page will refresh automatically...", - "statusDisabled": "disabled", - "statusConnected": "connected", - "statusRuntimeIssue": "runtime issue", - "statusAuthFailed": "auth failed", - "statusRateLimited": "rate limited", - "statusNetworkIssue": "network issue", - "statusTestUnsupported": "test unsupported", - "statusUnavailable": "unavailable", - "statusFailed": "failed", - "statusError": "error", - "oauthAccount": "OAuth Account", - "errorTypeRuntime": "Local runtime", - "errorTypeUpstreamAuth": "Upstream auth", - "errorTypeMissingCredential": "Missing credential", - "errorTypeRefreshFailed": "Refresh failed", - "errorTypeTokenExpired": "Token expired", - "errorTypeRateLimited": "Rate limited", - "errorTypeUpstreamUnavailable": "Upstream unavailable", - "errorTypeNetworkError": "Network error", - "errorTypeTestUnsupported": "Test unsupported", - "errorTypeUpstreamError": "Upstream error", + "singleConnectionPerCompatible": "Muunganisho mmoja pekee unaruhusiwa kwa kila nodi tangamani. Ongeza nodi nyingine ikiwa unahitaji miunganisho zaidi.", + "connections": "Miunganisho", + "providerProxyTitleConfigured": "Proksi ya mtoa huduma: {host}", + "configured": "imesanidiwa", + "providerProxyConfigureHint": "Sanidi seva mbadala kwa miunganisho yote ya mtoa huduma huyu", + "providerProxy": "Seva Mbadala ya Mtoa Huduma", + "repairEnv": "Rekebisha env", + "repairEnvWorking": "Inarekebisha...", + "repairEnvHint": "Rejesha chaguomsingi za OAuth zinazokosekana kwenye .env bila kubatilisha thamani zilizopo.", + "repairEnvSuccess": "Chaguomsingi za OAuth zimerejeshwa", + "repairEnvFailed": "Imeshindwa kurekebisha .env", + "noConnectionsYet": "Bado hakuna miunganisho", + "addFirstConnectionHint": "Ongeza muunganisho wako wa kwanza ili kuanza", + "addConnection": "Ongeza Muunganisho", + "availableModels": "Miundo Inayopatikana", + "builtInModels": "Miundo iliyojengewa ndani", + "builtInModelsHint": "Miundo ya sajili ya mtoa huduma huyu. Tumia penseli kuweka chaguo za uoanifu.", + "pageAutoRefresh": "Ukurasa utaonyeshwa upya kiotomatiki...", + "statusDisabled": "imezimwa", + "statusConnected": "imeunganishwa", + "statusRuntimeIssue": "tatizo la wakati wa utekelezaji", + "statusAuthFailed": "uthibitishaji umeshindwa", + "statusRateLimited": "kiwango kimewekewa kikomo", + "statusNetworkIssue": "tatizo la mtandao", + "statusTestUnsupported": "jaribio halitumiki", + "statusUnavailable": "haipatikani", + "statusFailed": "imeshindwa", + "statusError": "hitilafu", + "oauthAccount": "Akaunti ya OAuth", + "errorTypeRuntime": "Wakati wa utekelezaji wa ndani", + "errorTypeUpstreamAuth": "Uthibitishaji wa mfumo wa juu", + "errorTypeMissingCredential": "Kitambulisho kinakosekana", + "errorTypeRefreshFailed": "Uonyeshaji upya umeshindwa", + "errorTypeTokenExpired": "Tokeni imekwisha muda", + "errorTypeRateLimited": "Kiwango kimewekewa kikomo", + "errorTypeUpstreamUnavailable": "Mfumo wa juu haupatikani", + "errorTypeNetworkError": "Hitilafu ya mtandao", + "errorTypeTestUnsupported": "Jaribio halitumiki", + "errorTypeUpstreamError": "Hitilafu ya mfumo wa juu", "errorTypeCreditsExhausted": "Hakuna salio", "errorTypeBanned": "403 Imezuiwa", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", - "proxySourceKey": "Key", + "proxySourceGlobal": "Ya Jumla", + "proxySourceProvider": "Mtoa Huduma", + "proxySourceKey": "Ufunguo", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "Proksi Imewashwa", "proxyOff": "Moja kwa moja (ruka proksi)", @@ -5468,31 +5471,31 @@ "perKeyProxyDisabledTitle": "Ugawaji wa proksi kwa kila ufunguo umezimwa kwa mtoa huduma huyu", "autoPriority": "Auto: {priority}", "proxy": "Proxy", - "retestAuthentication": "Retest authentication", - "retest": "Retest", - "disableConnection": "Disable connection", - "enableConnection": "Enable connection", - "reauthenticateConnection": "Re-authenticate this connection", - "proxyConfig": "Proxy config", - "aliasExistsAlert": "Alias \"{alias}\" already exists. Please use a different model or edit existing alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter supports any model. Add models and create aliases for quick access.", - "modelIdFromOpenRouter": "Model ID (from OpenRouter)", + "retestAuthentication": "Jaribu tena uthibitishaji", + "retest": "Jaribu tena", + "disableConnection": "Zima muunganisho", + "enableConnection": "Washa muunganisho", + "reauthenticateConnection": "Thibitisha upya muunganisho huu", + "proxyConfig": "Usanidi wa proksi", + "aliasExistsAlert": "Lakabu \"{alias}\" tayari ipo. Tafadhali tumia modeli tofauti au hariri lakabu iliyopo.", + "aliasInputPlaceholder": "jina la lakabu", + "clickToSetAlias": "Bofya ili kuweka lakabu", + "clickToEditAlias": "Lakabu: {alias} (bofya ili kuhariri)", + "openRouterAnyModelHint": "OpenRouter inatumia modeli yoyote. Ongeza modeli na uunde lakabu kwa ufikiaji wa haraka.", + "modelIdFromOpenRouter": "Kitambulisho cha modeli (kutoka OpenRouter)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", - "customModels": "Custom Models", - "customModelsHint": "Add model IDs not in the default list. These will be available for routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "customModels": "Modeli Maalum", + "customModelsHint": "Ongeza vitambulisho vya modeli ambavyo havipo kwenye orodha chaguomsingi. Vitapatikana kwa uelekezaji.", + "normalizeToolCallIdLabel": "Sawazisha vitambulisho vya miito ya zana viwe na herufi 9 (k.m. Mistral)", + "preserveDeveloperRoleLabel": "Dumisha jukumu la msanidi programu la OpenAI Responses (usilibadilishe kuwa mfumo)", + "compatAdjustmentsTitle": "Uoanifu", + "compatButtonLabel": "Uoanifu", + "compatToolIdShort": "Kitambulisho cha Zana 9", + "compatDeveloperShort": "Jukumu la msanidi programu", + "compatDoNotPreserveDeveloper": "Usidumishe jukumu la msanidi programu", + "compatBadgeNoPreserve": "Usidumishe", + "compatProtocolLabel": "Itifaki ya ombi la mteja", + "compatProtocolHint": "Chaguo hizi hutumika OmniRoute inapogundua muundo huu wa ombi (OpenAI Chat, Responses API, au Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,84 +5537,84 @@ "interceptFetchHint": "Andika upya simu za zana asili za web_fetch kwenda kwenye /v1/web/fetch ya OmniRoute.", "interceptionLoadError": "Imeshindwa kupakia mipangilio ya uzuiaji: {error}", "interceptionSaveError": "Imeshindwa kuhifadhi mipangilio ya uzuiaji: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", - "perModelQuotaLabel": "Per-Model Quota", - "perModelQuotaDescription": "When enabled, 429/404 errors only lock the specific model, not the entire connection. Use for providers with per-model rate limits (e.g., ModelScope).", + "ccAliasSectionTitle": "Onyesha katika Claude Code (claude/…)", + "ccAliasSectionHint": "Tangaza modeli za mtoa huduma huyu chini ya vitambulisho akisi vya claude/<provider>/<model> ili ugunduzi wa modeli wa lango la Claude Code uweze kuziorodhesha. Imezimwa kwa chaguomsingi — kuiwasha huongeza maradufu maingizo ya katalogi kwa wateja wote.", + "ccAliasProviderLevelLabel": "Chaguomsingi la mtoa huduma", + "ccAliasModelOverridesLabel": "Ubatilishaji kwa kila modeli", + "ccAliasModelOverrideAriaLabel": "Ubatilishaji wa {modelId}", + "ccAliasStateInherit": "Rithi", + "ccAliasStateOn": "Imewashwa", + "ccAliasStateOff": "Imezimwa", + "ccAliasAddModelPlaceholder": "Kitambulisho cha modeli (k.m. gpt-4o)", + "ccAliasAddModelButton": "Ongeza ubatilishaji", + "ccAliasLoadError": "Imeshindwa kupakia mipangilio ya lakabu za ugunduzi: {error}", + "ccAliasSaveError": "Imeshindwa kuhifadhi mpangilio wa lakabu ya ugunduzi: {error}", + "compatUpstreamHeadersLabel": "Vichwa vya ziada vya mfumo wa juu", + "compatUpstreamHeadersHint": "Mpangilio wenye upendeleo wa juu — una kiwango sawa cha uaminifu na kuhariri vitambulisho vya API vya mtoa huduma; wasimamizi wanaoaminika pekee ndio wanaopaswa kuutumia. Huunganishwa baada ya OmniRoute kuongeza uthibitishaji kutoka kwenye ufunguo wa API wa mtoa huduma. Ikiwa kichwa maalum kinatumia jina sawa na kichwa kilichopo (k.m. Authorization), thamani yako itachukua nafasi ya kichwa kilichozalishwa kiotomatiki kikamilifu (ikiwemo tokeni ya Bearer) — mfumo wa juu utaona tu ulichoandika, si ufunguo uliopo kwenye mipangilio. Usanidi usio sahihi unaweza kusababisha 401 au kuharibu uthibitishaji wa mfumo wa juu. Safu mlalo moja kwa kila kichwa (k.m. Authentication ya ziada kwa baadhi ya malango). Elekeza kipanya juu ya thamani au uiangazie ili kuona onyesho la kukagua. Huhifadhi unapopoteza uangaziaji, unapobofya nje, au unapofunga paneli hii.", + "compatUpstreamHeaderName": "Jina la kichwa", + "compatUpstreamHeaderValue": "Thamani", + "compatUpstreamAddRow": "Ongeza kichwa", + "compatUpstreamRemoveRow": "Ondoa safu", + "compatBadgeUpstreamHeaders": "Vichwa", + "perModelQuotaLabel": "Kiwango cha Matumizi kwa Kila Modeli", + "perModelQuotaDescription": "Ikiwashwa, hitilafu za 429/404 hufunga modeli mahususi pekee, si muunganisho mzima. Tumia kwa watoa huduma wenye vikomo vya matumizi kwa kila modeli (k.m., ModelScope).", "importFreeModelsOnlyLabel": "Ingiza mifano ya bure pekee", "importFreeModelsOnlyHint": "Inapowezeshwa, ni mifano ya bure tu ya mtoa huduma huyu inayoingizwa. Mifano ya kulipia inarukwa.", - "perModelQuotaToggle": "Per-Model Quota Toggle", - "modelId": "Model ID", - "customModelPlaceholder": "e.g. gpt-4.5-turbo", - "loading": "Loading...", - "removeCustomModel": "Remove custom model", - "noCustomModels": "No custom models added yet.", - "allSuggestedAliasesExist": "All suggested aliases already exist. Please choose a different model or remove conflicting aliases.", - "failedSaveCustomModel": "Failed to save custom model", - "modelAddedSuccess": "Model {modelId} added successfully", - "failedAddModelTryAgain": "Failed to add model. Please try again.", - "failedSaveImportedModel": "Failed to save imported model to custom database", - "failedImportModelsTryAgain": "Failed to import models. Please try again.", - "failedRemoveModelFromDatabase": "Failed to remove model from database", - "modelRemovedSuccess": "Model removed successfully", - "failedDeleteModelTryAgain": "Failed to delete model. Please try again.", - "compatibleModelsDescription": "Add {type}-compatible models manually or import them from the /models endpoint.", + "perModelQuotaToggle": "Kitufe cha Kiwango cha Matumizi kwa Kila Modeli", + "modelId": "Kitambulisho cha Modeli", + "customModelPlaceholder": "k.m. gpt-4.5-turbo", + "loading": "Inapakia...", + "removeCustomModel": "Ondoa modeli maalum", + "noCustomModels": "Bado hakuna modeli maalum zilizoongezwa.", + "allSuggestedAliasesExist": "Lakabu zote zilizopendekezwa tayari zipo. Tafadhali chagua modeli tofauti au uondoe lakabu zinazokinzana.", + "failedSaveCustomModel": "Imeshindwa kuhifadhi modeli maalum", + "modelAddedSuccess": "Modeli {modelId} imeongezwa kwa mafanikio", + "failedAddModelTryAgain": "Imeshindwa kuongeza modeli. Tafadhali jaribu tena.", + "failedSaveImportedModel": "Imeshindwa kuhifadhi modeli iliyoletwa kwenye hifadhidata maalum", + "failedImportModelsTryAgain": "Imeshindwa kuleta modeli. Tafadhali jaribu tena.", + "failedRemoveModelFromDatabase": "Imeshindwa kuondoa modeli kwenye hifadhidata", + "modelRemovedSuccess": "Modeli imeondolewa kwa mafanikio", + "failedDeleteModelTryAgain": "Imeshindwa kufuta modeli. Tafadhali jaribu tena.", + "compatibleModelsDescription": "Ongeza modeli zinazooana na {type} mwenyewe au uzilete kutoka endpoint ya /models.", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API key validation failed. Please check your key and try again.", - "addProviderApiKeyTitle": "Add {provider} API Key", - "checking": "Checking...", - "check": "Check", - "valid": "Valid", - "invalid": "Invalid", - "creating": "Creating...", - "validationChecksAnthropicCompatible": "Validation checks {provider} by verifying the API key.", - "validationChecksOpenAiCompatible": "Validation checks {provider} via /models on your base URL.", - "priorityLabel": "Priority", - "saving": "Saving...", - "save": "Save", - "editConnection": "Edit Connection", - "accountName": "Account name", + "apiKeyValidationFailed": "Uthibitishaji wa ufunguo wa API umeshindwa. Tafadhali kagua ufunguo wako na ujaribu tena.", + "addProviderApiKeyTitle": "Ongeza Ufunguo wa API wa {provider}", + "checking": "Inakagua...", + "check": "Kagua", + "valid": "Halali", + "invalid": "Si halali", + "creating": "Inaunda...", + "validationChecksAnthropicCompatible": "Uthibitishaji hukagua {provider} kwa kuthibitisha ufunguo wa API.", + "validationChecksOpenAiCompatible": "Uthibitishaji hukagua {provider} kupitia /models kwenye URL yako ya msingi.", + "priorityLabel": "Kipaumbele", + "saving": "Inahifadhi...", + "save": "Hifadhi", + "editConnection": "Hariri Muunganisho", + "accountName": "Jina la akaunti", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "Ukaguzi wa Afya (dak.)", "healthCheckHint": "Proactive token refresh interval. 0 = disabled.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", - "failedTestConnection": "Failed to test connection", - "failed": "Failed", - "leaveBlankKeepCurrentApiKey": "Leave blank to keep the current API key.", - "editCompatibleTitle": "Edit {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", - "apiKeyForCheck": "API Key (for Check)", + "deselectAllModels": "Ondoa chaguo zote", + "modelsActiveCount": "{active}/{total} zinazotumika", + "noModelsMatch": "Hakuna modeli zinazolingana na \"{filter}\"", + "groupLabel": "Mazingira", + "groupPlaceholder": "k.m. eKaizen, Binafsi", + "failedTestConnection": "Imeshindwa kujaribu muunganisho", + "failed": "Imeshindwa", + "leaveBlankKeepCurrentApiKey": "Acha wazi ili kubaki na ufunguo wa sasa wa API.", + "editCompatibleTitle": "Hariri Inayooana na {type}", + "compatibleBaseUrlHint": "URL msingi ya API yako inayooana na {type}. Tumia Mipangilio ya Kina kwa njia maalum za endpoint.", + "apiKeyForCheck": "Ufunguo wa API (kwa Ukaguzi)", "testModelIdLabel": "Kitambulisho cha Mfano (hiari)", - "testModelIdPlaceholder": "e.g. my-model-id", + "testModelIdPlaceholder": "k.m. my-model-id", "testModelIdHint": "Ikiwa mtoa huduma hana kituo cha /models, weka kitambulisho cha mfano ili kuthibitisha kupitia /chat/completions badala yake.", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "Inayooana na {type} (Uzalishaji)", + "tokenRefreshed": "Tokeni imeonyeshwa upya", + "tokenRefreshFailed": "Imeshindwa kuonyesha upya tokeni", "cursorSessionUnchanged": "Kikao tayari ni cha sasa", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Tekeleza uthibitishaji", + "exportCodexAuthFile": "Hamisha uthibitishaji", "applyClaudeAuthLocal": "Tumia uthibitishaji", "exportClaudeAuthFile": "Hamisha auth", "importClaudeAuth": "Ingiza uthibitisho", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} imeshindwa", "codexImportBulkZipExtracting": "Inatoa ZIP...", "codexImportBulkZipError": "Imeshindwa kutoa ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Mipangilio ya Kina", + "chatPathLabel": "Njia ya Endpoint ya Gumzo", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Njia maalum ya gumzo kwa watoa huduma wenye API zisizo za kawaida (k.m. /v4/chat/completions)", + "modelsPathLabel": "Njia ya Endpoint ya Miundo", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Njia maalum ya miundo kwa ajili ya uthibitishaji (k.m. /v4/models)", "clientIdentityLabel": "Utambulisho wa Mteja", "clientIdentityHint": "Si lazima. Huongeza vijajuu vya alama ya kidole ya mteja (k.m. User-Agent) vinavyolingana na CLI inayojulikana kwa lango zinazoendana zinazotarajia moja.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Imezimwa (Kwa Mkono)", + "statusBanned": "Imepigwa Marufuku / Ukiukaji wa Sandbox", + "statusCreditsExhausted": "Salio Halitoshi / Kiwango Kimekwisha", + "showEmails": "Onyesha barua pepe zote", + "hideEmails": "Ficha barua pepe zote", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Ongeza ufunguo mwingine wa API au bandika funguo nyingi", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", - "enterpriseCloud": "Enterprise & Cloud", - "apiFormatLabel": "Api Format Label", + "aggregatorsGateways": "Vikusanyaji na Malango", + "enterpriseCloud": "Mashirika na Wingu", + "apiFormatLabel": "Lebo ya Umbizo la API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "Eneo la API la China", + "apiRegionHint": "Kidokezo cha Eneo la API", + "apiRegionInternational": "Eneo la Kimataifa la API", + "apiRegionLabel": "Lebo ya Eneo la API", + "apikey": "Ufunguo wa API", + "audio": "Sauti", + "audioProvidersHeading": "Kichwa cha Watoa Huduma za Sauti", "cloudAgentProviders": "Watoa huduma wa Wakala wa Wingu", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Lebo Fupi ya Sauti", + "azureOpenAiBaseUrlHint": "Kidokezo cha URL Msingi ya Azure Open Ai", + "bailianBaseUrlHint": "Kidokezo cha URL Msingi ya Bailian", + "claudeWebCookieHint": "Fungua claude.ai → DevTools → Application → Cookies → claude.ai, nakili thamani ya 'sessionKey'. Pia zinahitajika cf_clearance, __cf_bm, _cfuvid kwa Cloudflare.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Kidokezo cha Cookie ya Blackbox Web", + "blackboxWebCookiePlaceholder": "Kishikilia nafasi cha Cookie ya Blackbox Web", "t3ChatWebCookieHint": "Fungua t3.chat → DevTools → Programu → Hifadhi ya Ndani → https://t3.chat, nakili 'convex-session-id'. Kisha ufungue DevTools → Mtandao, nakili kichwa kamili cha Kidakuzi kutoka kwa ombi lolote la gumzo. Bandika thamani zote mbili katika sehemu zilizo hapa chini.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Kidokezo cha Cookie ya Grok Web", "blockClaudeExtraUsageDescription": "Wakati imewezeshwa, OmniRoute inaashiria muunganisho huu wa Claude kuwa haupatikani mara tu API ya matumizi inaporipoti matumizi ya ziada yaliyopangwa, hivyo kuhamasisha kubadili kwenye muunganisho mwingine badala ya kuendelea na bili ya ziada ya kulipia kadri inavyotumika.", "blockClaudeExtraUsageLabel": "zuia matumizi ya ziada ya Claude", "disableCoolingDescription": "Ruka muda wa utulivu wa mpito ili muunganisho huu uendelee kustahiki hata baada ya hitilafu zinazoweza kurekebishwa (hali za mwisho kama vile zilizopigwa marufuku/zilizopitwa na wakati bado zinatumika).", "disableCoolingLabel": "Zima muda wa utulivu kwa muunganisho huu", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {Ufunguo 1 umeongezwa} other {Funguo # zimeongezwa}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {Nakala 1 imerukwa} other {Nakala # zimerukwa}}", + "bulkPasteHint": "Bandika ufunguo mmoja wa API kwa kila mstari. Mistari tupu hupuuzwa na funguo zilizorudiwa hurukwa.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Huongeza kichwa cha beta cha redact-thinking kwa vyanzo vya CC Compatible vinavyohitaji mitiririko iliyofichwa ya fikra za Claude.", + "ccCompatibleRedactThinkingLabel": "Washa beta ya redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Huongeza `display: \"summarized\"` kwenye maombi ya fikra ya CC Compatible ili modeli zinazotumika za Claude zitiririshe sehemu zinazoonekana za fikra.", + "ccCompatibleSummarizeThinkingLabel": "Washa uonyeshaji wa fikra zilizofupishwa", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Tumia kiwango cha huduma ya kipaumbele kwa maombi ya Codex kinapopatikana.", + "codexFastServiceTierLabel": "Kiwango cha huduma ya haraka ya Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Kishikilia nafasi cha jina la kichwa cha chanzo patanifu", + "compatUpstreamHeaderValuePlaceholder": "Kishikilia nafasi cha thamani ya kichwa cha chanzo patanifu", + "compatible": "Patanifu", + "configuredCount": "Idadi iliyosanidiwa", + "consoleApiKeyOracleHint": "Kidokezo cha ufunguo wa API wa dashibodi ya Oracle", + "consoleApiKeyOracleLabel": "Lebo ya ufunguo wa API wa dashibodi ya Oracle", + "consoleApiKeyOraclePlaceholder": "Kishikilia nafasi cha ufunguo wa API wa dashibodi ya Oracle", + "newApiUserIdLabel": "Kitambulisho cha mtumiaji cha New-API", + "newApiUserIdPlaceholder": "k.m. 12345", + "newApiUserIdHint": "Thamani ya kichwa cha AgentRouter New-Api-User, inayotumiwa pamoja na ufunguo wa API wa dashibodi kupata salio la kikomo.", "newApiAggregatorToggleLabel": "Mlango wa Mkusanyiko", "newApiAggregatorToggleHint": "wezesha kugundua salio kwa nodi za mkusanyiko wa New-API / One-API / Sub2API. Dashibodi itaonyesha alama ya salio na upitaji wa quota-preflight utaepuka akaunti zilizokamilika.", "newApiAggregatorConsoleApiKeyHint": "Token ya Ufikiaji wa Mfumo kwa kiungo cha /api/user/self cha mkusanyiko. Si funguo ya API ya usafirishaji.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Washa ugunduzi wa usawa kwa nodi zinazofaa za New-API / One-API / Sub2API aggregator", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Kidokezo cha User Agent maalum", + "customUserAgentLabel": "Lebo ya User Agent maalum", + "databricksBaseUrlHint": "Kidokezo cha URL msingi ya Databricks", + "defaultThinkingStrengthHint": "Hutumika wakati ombi halibainishi kiwango cha juhudi za kufikiri.", + "defaultThinkingStrengthLabel": "Nguvu chaguomsingi ya kufikiri", + "deleteAllExtraApiKeys": "Futa zote", + "excludedModelsHint": "Kidokezo cha modeli zilizotengwa", + "excludedModelsLabel": "Lebo ya modeli zilizotengwa", + "excludedModelsPlaceholder": "Kishikilia nafasi cha modeli zilizotengwa", + "expirationBannerExpired": "Bango la mwisho wa muda: Muda umeisha", + "expirationBannerExpiredDesc": "Maelezo ya bango la mwisho wa muda: Muda umeisha", + "expirationBannerExpiringSoon": "Bango la mwisho wa muda: Muda unakaribia kuisha", + "expirationBannerExpiringSoonDesc": "Maelezo ya bango la mwisho wa muda: Muda unakaribia kuisha", + "extraApiKeyMasked": "Ufunguo {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Kidokezo cha funguo za ziada za API", + "extraApiKeysLabel": "Lebo ya funguo za ziada za API", + "apiKeyHealthLabel": "Hali ya Ufunguo wa API", + "apiKeyStatusActive": "Unatumika", + "apiKeyStatusWarning": "Onyo ({count} hitilafu)", + "apiKeyStatusInvalid": "Batili", + "primaryKey": "Ufunguo Mkuu", + "apiKeyInvalidAlert": "Ufunguo (funguo) {count} wa API umetiwa alama kuwa batili kutokana na hitilafu za uthibitishaji katika miunganisho: {connections}. Utarukwa wakati wa mzunguko. Bofya ili ukague.", + "apiKeyInvalidAlertTitle": "Tahadhari ya Hali ya Ufunguo wa API", + "apiKeyWarningAlert": "Ufunguo (funguo) {count} wa API uko katika hali ya onyo kutokana na kiwango cha juu cha hitilafu katika miunganisho: {connections}. Kagua ili kuzuia matatizo ya mzunguko.", + "apiKeyWarningAlertTitle": "Onyo la Ufunguo wa API", + "googlePseInfo": "Maelezo ya Google PSE", "antigravityProjectIdHint": "Kubatilisha kwa hiari kwa maombi ya Msimbo wa Wingu wa Antigravity. Acha wazi ili kutumia mradi uliogunduliwa wakati wa OAuth ya Google.", "antigravityClientProfileLabel": "Wasifu wa mteja", "antigravityClientProfileHint": "Chagua utambulisho gani wa mteja wa Antigravity ambao OmniRoute inawasilisha kwa API.", @@ -5865,18 +5868,18 @@ "tierFast": "Haraka", "antigravityProjectIdLabel": "Kitambulisho cha Mradi wa Wingu la Google", "antigravityProjectIdPlaceholder": "kitambulisho cha mradi-wangu-gcp", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Kishikilia Nafasi cha Kidakuzi cha Wavuti cha Grok", + "herokuBaseUrlHint": "Kidokezo cha URL Msingi ya Heroku", + "hideEmail": "Ficha Barua Pepe", + "imageProviders": "Watoa Huduma za Picha", "videoProviders": "Kizazi cha Video", "embeddingRerankProviders": "Upachikaji & Weka Nafasi", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Lebo Fupi ya Picha", + "llmProviders": "Watoa Huduma za LLM", + "localProviderApiKeyOptionalHint": "Kidokezo cha Ufunguo wa API wa Hiari wa Mtoa Huduma wa Ndani", + "localProviderBaseUrlHint": "Kidokezo cha URL Msingi ya Mtoa Huduma wa Ndani", + "localProviders": "Watoa Huduma wa Ndani", + "maxConcurrentWholeNumberError": "Hitilafu ya Nambari Kamili ya Kiwango cha Juu cha Miunganisho Sambamba", "m365TierLabel": "Kiwango cha Copilot", "m365TierHint": "Chagua ni kiolesura gani cha Microsoft 365 Copilot ambacho muunganisho huu unatumia. Binafsi ndiyo BizChat ya kawaida ya mtumiaji; Elimu na Biashara (kazi) huchagua violesura vya wapangaji wao.", "m365TierIndividualOption": "Binafsi (chaguo-msingi)", @@ -5886,26 +5889,26 @@ "tierOverrideAuto": "Otomatiki (uelekezaji unaamua)", "tierOverrideFree": "Bure", "tierOverrideCheap": "Gharama nafuu", - "tierOverridePremium": "Premium", + "tierOverridePremium": "Ya Kulipia", "tierOverrideHelpText": "Bandika mtoa huduma huyu kwenye kiwango cha uelekezaji badala ya kuruhusu OmniRoute kuamua kutoka kwa bei ya mfano.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Kidokezo cha Kidakuzi cha Wavuti cha Muse Spark", + "museSparkWebCookiePlaceholder": "Kishikilia Nafasi cha Kidakuzi cha Wavuti cha Muse Spark", + "oauth": "OAuth", + "openCliTools": "Fungua Zana za CLI", + "openSettings": "Fungua Mipangilio", + "openaiResponsesStoreDescription": "Ruhusu maombi yanayooana ya Responses API kuhifadhi hali ya jibu iliyohifadhiwa.", + "openaiResponsesStoreLabel": "Hifadhi ya OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Maelezo ya Ufunguo Unaoshirikiwa wa Utafutaji wa Perplexity", + "perplexityWebCookieHint": "Kidokezo cha Kidakuzi cha Wavuti cha Perplexity", + "perplexityWebCookiePlaceholder": "Kishikilia Nafasi cha Kidakuzi cha Wavuti cha Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Ubatilishaji wa Kikomo cha Kasi", "rateLimitOverridesMaxConcurrentHint": "Ubatilishaji wa maombi ya juu zaidi yanayofanyika kwa wakati mmoja kwa muunganisho huu. Hubatilisha kikomo cha kiwango cha akaunti.", "rateLimitOverridesMaxConcurrentLabel": "Upeo wa Juu wa Wakati Mmoja (Kikomo cha Kasi)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Muda wa juu zaidi (ms) ambao ombi linaweza kusubiri nafasi ya kikomo cha kasi kabla ya kushindwa. Hupuuza mpangilio wa jumla wa Ustahimilivu kwa muunganisho huu pekee.", + "rateLimitOverridesMaxWaitMsLabel": "Muda wa Juu wa Kusubiri kwenye Foleni (ms)", "rateLimitOverridesMinTimeHint": "Muda wa chini zaidi (ms) kati ya maombi. Hubatilisha ucheleweshaji wa kikomo cha kasi chaguo-msingi.", "rateLimitOverridesMinTimeLabel": "Muda wa Chini (ms)", "rateLimitOverridesRpdHint": "Upeo wa maombi kwa siku kwa muunganisho huu. Hubatilisha chaguomsingi la mtoa huduma.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Tokeni/siku)", "rateLimitOverridesTpmHint": "Upeo wa juu wa tokeni kwa dakika kwa muunganisho huu. Hubatilisha chaguo-msingi la mtoa huduma.", "rateLimitOverridesTpmLabel": "TPM (Tokeni/dakika)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", - "searchProviders": "Search Providers", + "refreshOauthTokenTitle": "Kichwa cha Kuonyesha upya Tokeni ya OAuth", + "regionHint": "Kidokezo cha Eneo", + "regionLabel": "Lebo ya Eneo", + "removeThisKey": "Ondoa Ufunguo Huu", + "routingTagsHint": "Kidokezo cha Lebo za Uelekezaji", + "routingTagsLabel": "Lebo za Uelekezaji", + "routingTagsPlaceholder": "Kishikilia nafasi cha lebo za uelekezaji", + "search": "Tafuta", + "searchEngineIdHint": "Kidokezo cha kitambulisho cha injini ya utafutaji", + "searchEngineIdLabel": "Kitambulisho cha injini ya utafutaji", + "searchEngineIdRequired": "Kitambulisho cha injini ya utafutaji kinahitajika", + "searchProvider": "Mtoa huduma wa utafutaji", + "searchProviderDesc": "Maelezo ya mtoa huduma wa utafutaji", + "searchProviders": "Watoa huduma wa utafutaji", "searchByModel": "Tafuta kwa mfano…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Kichwa cha watoa huduma wa utafutaji", + "searxngBaseUrlHint": "Kidokezo cha URL msingi ya Searxng", + "searxngInfo": "Maelezo ya Searxng", + "sessionCookieLabel": "Kuki ya kipindi", + "showEmail": "Onyesha barua pepe", + "snowflakeBaseUrlHint": "Kidokezo cha URL msingi ya Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Kidokezo cha kikundi cha lebo", + "tagGroupLabel": "Kikundi cha lebo", + "tagGroupPlaceholder": "Kishikilia nafasi cha kikundi cha lebo", + "testModel": "Jaribu modeli", + "testingModel": "Inajaribu modeli", "modelTestQuotaTooltip": "Kikomo kimeisha — kinarejelewa kesho au kinahitaji kuongeza fedha", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Beji ya tokeni iliyoisha muda", + "tokenExpiredTitle": "Muda wa tokeni umeisha", + "tokenExpiresSoonTitle": "Muda wa tokeni utaisha hivi karibuni", + "tokenShort": "Tokeni fupi", + "totalKeysRotating": "{count, plural, one {ufunguo 1 unaozungushwa} other {funguo # zinazozungushwa}}", + "unhideModel": "Onyesha tena modeli", + "upstreamProxyProviders": "Watoa huduma wa proksi ya upstream", "validationModelIdHint": "Modeli inayotumika kuthibitisha ufunguo wa API. Acha wazi ili kutumia modeli ya kwanza inayopatikana ya mtoa huduma.", "validationModelIdLabel": "Modeli ya uthibitishaji", "validationModelIdPlaceholder": "k.m. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Bandika JSON ya Akaunti yako ya Huduma ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) au OAuth access_token", + "webCookieProviders": "Watoa huduma wa kuki za wavuti", + "weeklyShort": "Kwa wiki", + "xiaomiMimoBaseUrlHint": "Kidokezo cha URL msingi ya Xiaomi Mimo", "globalCodexServiceMode": "Hali ya huduma ya kimataifa ya Codex", "connect": "Unganisha", "manualApiKey": "Ufunguo wa API wa mwongozo", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Gundua vitambulisho vya mtoa huduma wa AI (OpenAI, Anthropic, Google, Mistral, xAI) vilivyohifadhiwa na Zed IDE kwenye keychain ya OS na uviingize kama miunganisho. Zed IDE lazima iwe imesakinishwa kwenye mashine hii.", "zedImportButton": "Ingiza kutoka Zed", "zedImportFailed": "Uagizaji wa Zed umeshindikana", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Kidokezo cha uingizaji wa Zed", + "zedImportNetworkError": "Hitilafu ya mtandao wakati wa kuingiza kutoka Zed", + "zedImportNone": "Hakuna cha kuingiza kutoka Zed", "zedImportSuccess": "Imepakiwa {credentials} akiba kutoka Zed kwa mtoa huduma {providers}", "zedImporting": "Inakabiliwa…", "zedNoCredentials": "Hakuna vitambulisho vya Zed vilivyopatikana kwenye keychain", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "ingizo {number}", "claudeImportParseError": "hitilafu ya uchanganuzi", "claudeImportNoValidEntries": "Hakuna maingizo halali ya kuingiza", - "webFetch": "Web Fetch", + "webFetch": "Uletaji wa wavuti", "webFetchTooltip": "Watoa huduma wanaochimba maudhui kutoka kwa URL za wavuti (HTML → Markdown, scrape, screenshot)", "webFetchProvidersHeading": "Watoa Huduma wa Web Fetch", "compatibleProvidersDesc": "Endpoints zinazooana na OpenAI na zinazooana na Anthropic unazohifadhi au kusanidi. Elekeza SDK yoyote ya OpenAI kwenye URL yako mwenyewe na uelekeze maombi hapa.", @@ -6175,7 +6178,7 @@ "freeaiapikey": "Proksi ya API yenye punguzo kwa miundo 40+ ikijumuisha GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Pata ufunguo wako wa API kwenye https://freeaiapikey.com/dashboard. URL ya Msingi: https://freeaiapikey.com/v1.", "freemodel-dev": "Pata salio la bure la API la $300 kwenye https://freemodel.dev — hakuna maelezo ya malipo yanayohitajika. Endpoint inayoendana na OpenAI. Miundo ya GPT-5.4 na GPT-5.5 inapatikana.", "friendliai": "Kiwango cha bure cha makisio yasiyo na seva — hakuna kadi ya mkopo inayohitajika", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Kiwango cha bila malipo kupitia Google AI Studio; viwango vya matumizi kwa kila modeli havichapishwi tena (angalia ukurasa wa viwango vya matumizi katika AI Studio) — hakuna kadi ya mkopo inayohitajika.", "gigachat": "Unganisha GigaChat (Sber) kwa kutumia ufunguo wa API.", "gitlab": "Tokeni ya ufikiaji wa kibinafsi ya GitLab kwa ajili ya API ya umma ya Code Suggestions. Sanidi URL ya msingi ya self-hosted wakati hutumii gitlab.com.", "gitlawb-gmi": "Pata ufunguo wako wa API kutoka kwenye dashibodi ya Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Unganisha GLM Coding (China) kwa kutumia ufunguo wa API.", "glmt": "Wasifu uliowekwa awali wa GLM wenye bajeti ya juu ya tokeni, kufikiri kumewashwa, na muda mrefu zaidi wa kuisha.", "getgoapi": "Unganisha GoAPI kwa kutumia ufunguo wa API.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Mpango wa bila malipo: vikomo kwa kila modeli (tokeni 200K kwa siku kwa kila modeli ya gumzo; angalia console.groq.com/docs/rate-limits kwa RPM/RPD) — hakuna njia ya malipo iliyohifadhiwa.", "haiper": "Pata ufunguo wa API kwenye haiper.ai/haiper-api", "heroku": "Unganisha Heroku AI kwa kutumia ufunguo wa API.", "hcnsec": "Pata ufunguo wa API kwenye api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Unda ufunguo wa API kwenye https://app.requesty.ai, kisha ubandike hapa kama tokeni ya Bearer. Endpoint inayooana na OpenAI iko kwenye https://router.requesty.ai/v1, ikiwa na orodha ya moja kwa moja ya /v1/models.", "runwayml": "Uzalishaji wa video wa Runway unategemea kazi. OmniRoute huwasilisha kazi za maandishi-hadi-video au picha-hadi-video, huangalia mara kwa mara /v1/tasks/[id], na kurekebisha matokeo ya video yaliyokamilika kurudi kwenye jibu la /v1/videos/generations linalofanana na OpenAI.", "sambanova": "Salio la bure la $5 unapojisajili (uhalali wa siku 30), hakuna kadi ya mkopo inayohitajika", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Unda API key katika https://seekai.cc, kisha uibandike hapa kama tokeni ya Bearer. URL msingi inayooana na OpenAI: https://seekai.cc/v1.", "sap": "Ugunduzi wa miundo hutumia /v2/lm/scenarios/foundation-models/models kwenye AI_API_URL. Maombi ya gumzo hutumia deploymentUrl/chat/completions na yanahitaji AI-Resource-Group.", "sarvam": "Sarvam AI inapatana na OpenAI kwenye /v1. OmniRoute inachunguza /v1/models na kuelekeza trafiki ya mazungumzo kwenye /v1/chat/completions. Mifano imeboreshwa kwa lugha za Kihindi.", "scaleway": "Tokeni 1M za bure kwa akaunti mpya — inatii EU/GDPR (Paris), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Unganisha Claude Code kwa mtiririko uliopo wa OAuth.", "cline": "Unganisha Cline kwa mtiririko uliopo wa OAuth.", "cursor": "Unganisha Cursor IDE kwa mtiririko uliopo wa OAuth.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Unganisha Cursor kwa kutumia API key ya mtumiaji (crsr_...) kutoka cursor.com/dashboard/api; kipindi cha IDE hakihitajiki.", "github": "Unganisha GitHub Copilot kwa mtiririko uliopo wa OAuth.", "gitlab-duo": "Programu ya OAuth yenye upeo wa ai_features + read_user. Sanidi GITLAB_DUO_OAUTH_CLIENT_ID na kwa hiari GITLAB_DUO_OAUTH_CLIENT_SECRET kwenye instansi hii ya OmniRoute.", "kilocode": "Unganisha Kilo Code kwa mtiririko uliopo wa OAuth.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Nakili kitambulisho kinachohitajika kutoka kwa kikoa cha mtoaji mwenyewe. Kwa vidakuzi, nakili tu thamani ya kichwa cha Kuki na uache Cookie:.", "webSessionGuideStep3Manual": "Njia ya mwongozo: fungua zana za maendeleo za kivinjari (F12 → Mtandao), refresh ukurasa, fungua ombi lililoidhinishwa, na nakili thamani ya kichwa cha Cookie kutoka kwa Vichwa vya Ombi — acha kipande cha Cookie: bila.", "webSessionGuideStep4": "Ibandike hapa na uangalie muunganisho. Ikiacha kufanya kazi, ingia tena na uibadilishe kwa thamani mpya.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Ingiza faili la .har", + "harImportButtonBusy": "Inaingiza…", + "harImportButtonHint": "Hamisha kutoka kwenye kichupo cha Network cha DevTools baada ya kutuma angalau ujumbe mmoja wa gumzo.", + "harImportStatusValid": "Imeingizwa — ni halali kwa takriban dakika {minutes}.", + "harImportStatusExpiringSoon": "Imeingizwa — itakuwa halali kwa takriban dakika {minutes} zaidi pekee.", + "harImportStatusExpired": "Imeingizwa, lakini tokeni hii tayari imeisha muda wake (dakika {minutes} zilizopita) — hamisha HAR mpya.", + "harImportStatusUnknownExpiry": "Imeingizwa. Haikuwezekana kusoma muda wake wa kuisha.", + "harImportErrorNotJson": "Faili hiyo si JSON halali — kweli ni faili ya .har iliyohamishwa?", + "harImportErrorNoEntries": "HAR hii haina maingizo ya mtandao yaliyorekodiwa.", + "harImportErrorNoChathubUrl": "Hakuna muunganisho wa gumzo la Copilot uliopatikana katika HAR hii. Tuma angalau ujumbe mmoja wa gumzo katika m365.cloud.microsoft kabla ya kuhamisha.", + "harImportErrorUnparsableUrl": "Muunganisho wa gumzo umepatikana, lakini URL yake haikuweza kusomwa.", + "harImportErrorMissingFields": "Muunganisho wa gumzo umepatikana, lakini tokeni haikuwepo ndani yake.", + "harImportErrorReadFailed": "Faili hiyo haikuweza kusomwa.", + "harImportErrorUnknown": "Kitambulisho cha uthibitishaji hakikuweza kutolewa kutoka kwenye faili hiyo ya HAR.", "webSessionSecurityHint": "Lichukulie hili kama nenosiri: linaweza kufikia akaunti yako ya wavuti uliyoingia hadi itakapoisha au kubatilishwa.", "webNoAuthGuideTitle": "Hakuna kitambulisho kinachohitajika", "webNoAuthGuideBody": "{provider} haihitaji ufunguo wa API au kidakuzi. Hifadhi muunganisho ili utumie mwisho wake wa wavuti bila malipo.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Amri ya Msimbo wa uthibitisho imeisha", "commandCodeConnected": "Nambari ya Amri imeunganishwa", "commandCodeConnectionAdded": "Muunganisho wa Nambari ya Amri umeongezwa", + "clearConnectionCooldown": "Futa muda wa kusubiri", + "clearConnectionCooldownInProgress": "Inafuta…", + "clearConnectionCooldownTitle": "Futa muda wa kusubiri sasa — tumia wakati kikomo tayari kimehuishwa kwenye huduma ya chanzo", "commandCodeLinkExpired": "Kiungo cha Amri ya Nambari kimeisha muda wake", "commandCodeOpeningStudio": "Inaanzisha Command Code Studio…", "commandCodePopupBlocked": "Popup imezuiwa. Tafadhali ruhusu popups na ujaribu Command Code Connect tena.", "commandCodeStartFailed": "Imeshindikana kuanzisha Command Code auth", "connectionDeleted": "Muunganisho umefutwa", "connectionFallback": "muunganisho", + "connectionCooldownCleared": "Muda wa kusubiri umefutwa — muunganisho umejiunga tena na uelekezaji", "coolingConnectionsDescription": "Miunganisho hii inapoa baada ya ombi la mwisho. OmniRoute itayaruka hadi kipima muda kiishe — hakuna haja ya kuzima kwa mkono.", "coolingConnectionsTitle": "Sasa inapoa ({count})", + "failedClearConnectionCooldown": "Imeshindwa kufuta muda wa kusubiri", "failedDeleteAlias": "Imeshindikana kufuta jina la utambulisho", "failedDeleteConnection": "Imeshindikana kufuta muunganisho", "failedDistributeProxies": "Imeshindikana kusambaza proxies.", @@ -6466,25 +6474,20 @@ "providerDetailGlobalFlexActive": "Kiwango cha huduma ya Global Codex flex kimewashwa", "providerDetailGlobalPriorityActive": "Kiwango cha huduma ya kipaumbele ya Global Codex kimewashwa", "proxiesDistributed": "Kugawanywa kwa {assigned} kazi za wakala kati ya {tagLabel}{total} muunganisho.", - "rerankEndpoint": "Rerank", + "rerankEndpoint": "Panga upya", "savedModelEndpointSettings": "Mipangilio ya mwisho wa mfano uliohifadhiwa", "searchByModelAria": "Tafuta kwa mfano", "selectSupportedEndpoint": "Chagua angalau kiunganishi kimoja kinachoungwa mkono", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Kiunzi / CLI" }, "settings": { - "title": "Settings", - "general": "General", - "security": "Security", - "appearance": "Appearance", - "routing": "Routing", - "cache": "Cache", - "resilience": "Resilience", + "title": "Mipangilio", + "general": "Jumla", + "security": "Usalama", + "appearance": "Mwonekano", + "routing": "Uelekezaji", + "cache": "Akiba", + "resilience": "Ustahimilivu", "description": "Maelezo", "enable": "Washa", "disable": "Zima", @@ -6551,25 +6554,25 @@ "routingOpStatusSeparator": " ·", "resilienceSettingsIntro": "Jaribu tena kiotomatiki, upunguzaji kasi na urejeshaji nyuma watoa huduma wanaposhindwa.", "aiSettingsIntro": "Mipangilio mahususi ya AI ya bajeti ya kufikiria, tabia ya kielelezo, na mgandamizo.", - "systemPrompt": "System Prompt", - "thinkingBudget": "Thinking Budget", + "systemPrompt": "Agizo la Mfumo", + "thinkingBudget": "Kiwango cha Fikra", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", - "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "httpProxy": "Proksi ya HTTP", + "1proxy": "Proksi 1", + "proxySubTabsAria": "Sehemu za proksi", + "requestBodyLimitTitle": "Kikomo cha Mwili wa Ombi", + "requestBodyLimitDescription": "Ukubwa wa juu zaidi wa data ya API unaokubaliwa kabla ya mwili wa ombi kuchanganuliwa. Njia maalum za upakiaji huhifadhi angalau kikomo chake cha ndani cha MB 100.", + "requestBodyLimitInputLabel": "Kikomo cha mwili wa ombi kwa MB", + "requestBodyLimitEmptyError": "Weka kikomo kwa MB", + "requestBodyLimitWholeNumberError": "Tumia nambari kamili", + "requestBodyLimitMinimumError": "Kiwango cha chini ni MB {min}", + "requestBodyLimitMaximumError": "Kiwango cha juu ni MB {max}", + "requestBodyLimitLoadFailed": "Imeshindwa kupakia mipangilio ya kikomo cha ombi", + "requestBodyLimitSaveSuccess": "Kikomo cha mwili wa ombi kimehifadhiwa", + "requestBodyLimitSaveFailed": "Imeshindwa kuhifadhi kikomo cha mwili wa ombi", + "requestBodyLimitSaving": "Inahifadhi...", + "requestBodyLimitSave": "Hifadhi", + "requestBodyLimitCurrent": "Ya sasa: {value}", "cacheConfigLoadFailed": "Imeshindikana kupakia mipangilio ya cache", "cacheConfigSaveSuccess": "Mipangilio ya cache imehifadhiwa", "cacheConfigSaveFailed": "Imeshindikana kuhifadhi mipangilio ya cache", @@ -6583,69 +6586,69 @@ "modelCatalogCacheTtlSave": "Hifadhi", "modelCatalogCacheTtlCurrent": "Sasa: {value} ms", "mitmProxy": "Wakala wa MITM", - "pricing": "Pricing", - "storage": "Storage", - "policies": "Policies", - "ipFilter": "IP Filter", - "comboDefaults": "Combo Defaults", - "fallbackChains": "Fallback Chains", - "changePassword": "Change Password", - "enablePassword": "Enable Password", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "pricing": "Bei", + "storage": "Hifadhi", + "policies": "Sera", + "ipFilter": "Kichujio cha IP", + "comboDefaults": "Chaguo-msingi za Mchanganyiko", + "fallbackChains": "Minyororo ya Dharura", + "changePassword": "Badilisha Nenosiri", + "enablePassword": "Washa Nenosiri", + "darkMode": "Hali Nyeusi", + "lightMode": "Hali Angavu", + "memoryTitle": "Kumbukumbu", + "memoryDesc": "Kumbukumbu endelevu ya mazungumzo kati ya vipindi", + "memoryEnabled": "Washa Kumbukumbu", + "memoryEnabledDesc": "Ikishawashwa, OmniRoute itaingiza muktadha unaofaa kutoka zamani.", "memoryTokenCostWarning": "Angalizo: kumbukumbu ikiwa imewezeshwa, OmniRoute huingiza hadi tokeni {tokens} za muktadha uliopatikana kwenye kila ombi la soga — hii huongeza matumizi ya tokeni na gharama. Ili kuruka uingizaji huu kwa ombi maalum, tuma kichwa cha \"x-omniroute-no-memory: true\"", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", - "justNow": "Just now", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", - "providers": "Providers", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", - "systemTheme": "System Theme", - "debugToggle": "Enable Debug Mode", + "maxTokens": "Idadi ya Juu ya Tokeni", + "retentionDays": "Kipindi cha Kuhifadhi", + "recent": "Za Hivi Karibuni", + "recentDesc": "Kipindi cha mpangilio wa wakati", + "semantic": "Kisemantiki", + "semanticDesc": "Utafutaji wa vekta", + "hybrid": "Mseto", + "hybridDesc": "Za Hivi Karibuni + Kisemantiki", + "skillsTitle": "Ujuzi", + "skillsDesc": "Zana za modeli", + "skillsEnabled": "Washa Ujuzi", + "skillsEnabledDesc": "Huruhusu mawakala kuanzisha vitendakazi.", + "skillsComingSoon": "Soko la ujuzi linakuja hivi karibuni.", + "memorySkillsTitle": "Kumbukumbu na Ujuzi", + "memorySkillsDesc": "Muktadha na uwezo endelevu", + "modelsDevTitle": "Hifadhidata ya Modeli", + "modelsDevDesc": "Sawazisha kiotomatiki bei, uwezo na vipimo kutoka models.dev", + "modelsDevEnabled": "Washa Usawazishaji wa models.dev", + "modelsDevEnabledDesc": "Pakua bei, uwezo na vipimo vya modeli kutoka hifadhidata huria ya models.dev", + "modelsDevInterval": "Kipindi cha Usawazishaji", + "syncNow": "Sawazisha Sasa", + "syncing": "Inasawazisha...", + "lastSync": "Usawazishaji wa mwisho", + "never": "Kamwe", + "justNow": "Sasa hivi", + "modelsDevStats": "Takwimu za Usawazishaji", + "modelsDevStatsDesc": "Ueneaji wa sasa wa data ya models.dev", + "providers": "Watoa Huduma", + "modelsWithPricing": "Modeli Zenye Bei", + "capabilities": "Uwezo", + "lastSyncCount": "Idadi ya Usawazishaji wa Mwisho", + "lastSyncFull": "Usawazishaji kamili wa mwisho", + "modelsDevInfo": "Jinsi Inavyofanya Kazi", + "modelsDevInfoDesc": "models.dev ni hifadhidata huria ya vipimo vya modeli za AI inayodumishwa na timu ya SST/OpenCode. Hutoa bei, uwezo, vikomo vya muktadha na miundo ya data kwa modeli zaidi ya 4,000 kutoka kwa watoa huduma zaidi ya 100.", + "modelsDevInfoResolution": "Mpangilio wa kubaini bei (kuanzia kipaumbele cha juu zaidi):", + "modelsDevInfoOrder": "Ubatilishaji wa Mtumiaji → models.dev → LiteLLM → Chaguo-msingi Lililowekwa Moja kwa Moja", + "systemTheme": "Mandhari ya Mfumo", + "debugToggle": "Washa Hali ya Utatuzi", "logToolSourcesToggle": "Weka Kumbukumbu ya Vyanzo vya Zana", "logToolSourcesDescription": "Toa mstari wa kumbukumbu ya uchunguzi kwa kila ombi unaofupisha idadi ya zana na mchanganuo wa chanzo cha MCP/kilichohifadhiwa/mteja.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Bandika Taarifa kwenye Ukurasa wa Mwanzo", "homePinnedSectionsDesc": "Chagua sehemu za kubandika juu ya ukurasa wa Nyumbani.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Vikomo vya Kiasi cha Matumizi cha Watoa Huduma", + "homeProviderQuotaLimitsDesc": "Bandika kisanduku cha hali ya Kiasi cha Matumizi cha Watoa Huduma (chenye kitufe cha Onyesha Upya Zote) juu ya ukurasa wa Mwanzo.", + "homeQuickStart": "Mwongozo wa Kuanza Haraka", + "homeQuickStartDesc": "Onyesha paneli ya Mwongozo wa Kuanza Haraka kwenye ukurasa wa Mwanzo.", + "homeProviderTopology": "Topolojia ya Watoa Huduma", + "homeProviderTopologyDesc": "Onyesha Topolojia ya Watoa Huduma kwenye ukurasa wa Mwanzo.", "accountEmailVisibility": "Uonekanaji wa barua pepe ya akaunti", "accountEmailVisibilityDesc": "Onyesha barua pepe kamili za akaunti kwenye watoa huduma, combo, kumbukumbu, vikomo, na skrini za playground. Zima hii ili kuzificha kwa chaguomsingi.", "comboConfigMode": "Hali ya usanidi wa Combo", @@ -6661,89 +6664,89 @@ "providerQuotaAutoRefreshInterval": "Muda wa kuonyesha upya", "providerQuotaAutoRefreshIntervalDesc": "Ni mara ngapi mwonekano wa kikomo unapaswa kuonyeshwa upya, kwa sekunde.", "seconds": "sekunde", - "sidebarVisibilityToggle": "Show Sidebar Items", - "enableCache": "Enable Cache", - "cacheTTL": "Cache TTL", - "maxCacheSize": "Max Cache Size", - "clearCache": "Clear Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", - "cacheHits": "Cache Hits", - "cacheMisses": "Cache Misses", - "hitRate": "Hit Rate", - "cacheEntries": "Cache Entries", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "sidebarVisibilityToggle": "Onyesha Vipengee vya Upau wa Pembeni", + "enableCache": "Washa Akiba", + "cacheTTL": "TTL ya Akiba", + "maxCacheSize": "Ukubwa wa Juu wa Akiba", + "clearCache": "Futa Akiba", + "cacheCleared": "Akiba imefutwa", + "clearCacheFailed": "Imeshindikana kufuta akiba", + "cacheHits": "Mafanikio ya Akiba", + "cacheMisses": "Ukosefu wa Akiba", + "hitRate": "Kiwango cha Mafanikio ya Akiba", + "cacheEntries": "Maingizo ya Akiba", + "cacheSettings": "Mipangilio ya Akiba", + "semanticCache": "Akiba ya Kisemantiki", + "maxEntries": "Idadi ya Juu ya Maingizo", + "ttlMinutes": "TTL (dakika)", + "promptCache": "Akiba ya Kidokezo", + "strategy": "Mkakati", + "preserveClientCache": "Hifadhi Akiba ya Mteja", + "enabled": "Imewashwa", "loading": "Loading...", - "saving": "Saving...", - "save": "Save", - "circuitBreaker": "Circuit Breaker", - "retryPolicy": "Retry Policy", - "maxRetries": "Max Retries", - "retryDelay": "Retry Delay", - "timeoutMs": "Timeout (ms)", - "enableSystemPrompt": "Enable System Prompt", - "systemPromptText": "System Prompt Text", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "saving": "Inahifadhi...", + "save": "Hifadhi", + "circuitBreaker": "Kivunja Mzunguko", + "retryPolicy": "Sera ya Kujaribu Tena", + "maxRetries": "Idadi ya Juu ya Majaribio", + "retryDelay": "Muda wa Kusubiri Kabla ya Kujaribu Tena", + "timeoutMs": "Muda wa Kuisha (ms)", + "enableSystemPrompt": "Washa Kidokezo cha Mfumo", + "systemPromptText": "Maandishi ya Kidokezo cha Mfumo", + "autoDisableBannedAccounts": "Zima Kiotomatiki Akaunti Zilizopigwa Marufuku", + "autoDisableDescription": "Weka miunganisho ya watoa huduma kuwa imezimwa kabisa ikiwa inarejesha ishara mahususi za mwisho za kupigwa marufuku (k.m. HTTP 403 'verify your account'). Hii huiondoa kwenye mzunguko wa michanganyiko.", + "autoDisableThreshold": "Kizingiti cha Marufuku", + "autoDisableThresholdDesc": "Idadi ya ishara mfululizo za kupigwa marufuku zinazohitajika kabla ya kuzima kabisa.", + "autoDisableBannedScope": "Tumia uzimaji wa kiotomatiki kwa", + "autoDisableBannedScopeDesc": "Nafasi za kuingia (usajili unaolipiwa na akaunti zisizolipishwa) zinaweza kufungwa na huduma ya juu ikiwa OmniRoute itaendelea kujaribu baada ya marufuku. Funguo za API za kulipia mapema hazina hatari hiyo — ziache kwenye mkusanyiko ili fill-first iweze kutumia ufunguo unaofuata.", + "autoDisableBannedScopeAll": "Miunganisho yote", + "autoDisableBannedScopeAllDesc": "Zima kila muunganisho unaorejesha ishara ya kudumu ya kupigwa marufuku, ikijumuisha funguo za API za kulipia mapema.", + "autoDisableBannedScopeSubscription": "Akaunti za kuingia / usajili pekee", + "autoDisableBannedScopeSubscriptionDesc": "Zima nafasi za OAuth, vidakuzi, vipindi na kuingia kupitia wavuti (zinazolipiwa au zisizolipishwa). Funguo za API za kulipia mapema hubaki zikiwa zimewashwa ili uelekezaji uweze kuhamia njia mbadala.", "customBannedSignals": "Maneno Muhimu Yaliyopigwa Marufuku", "customBannedSignalsDesc": "Maneno muhimu ya ziada yanayosababisha ugunduzi wa kupigwa marufuku kwa akaunti kabisa. Maneno muhimu yaliyojengwa ndani hutumika kila wakati.", "customBannedSignalsPlaceholder": "k.m. api key revoked", "noCustomBannedSignals": "Hakuna maneno muhimu maalum. Maneno muhimu yaliyojengwa ndani pekee ndiyo yanayotumika.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Muundo wa Ustahimilivu", "resilienceStructureDesc": "Ukurasa huu unasanidi tabia pekee. Hali ya kuvunja moja kwa moja inaonyeshwa kwenye ukurasa wa Afya. Jaribu tena mchanganyiko maalum na udhibiti wa nafasi ya mseto unabaki kwenye mipangilio ya mseto.", - "enableThinking": "Enable Thinking", - "maxThinkingTokens": "Max Thinking Tokens", - "enableProxy": "Enable Proxy", + "enableThinking": "Washa Kufikiri", + "maxThinkingTokens": "Idadi ya Juu ya Tokeni za Kufikiri", + "enableProxy": "Washa Proksi", "perKeyProxyEnabled": "Wezesha ugawaji wa seva mbadala kwa kila ufunguo", "perKeyProxyEnabledDesc": "Ikiwezeshwa, kila muunganisho wa mtoa huduma unaweza kutumia ugawaji wake wa seva mbadala", - "proxyUrl": "Proxy URL", - "pricingRates": "Pricing Rates Format", - "currentPricing": "Current Pricing Overview", - "loadingPricing": "Loading pricing data...", - "noPricing": "No pricing data available", - "input": "Input", - "output": "Output", - "cached": "Cached", + "proxyUrl": "URL ya Proksi", + "pricingRates": "Muundo wa Viwango vya Bei", + "currentPricing": "Muhtasari wa Sasa wa Bei", + "loadingPricing": "Inapakia data ya bei...", + "noPricing": "Hakuna data ya bei inayopatikana", + "input": "Ingizo", + "output": "Matokeo", + "cached": "Imehifadhiwa kwenye akiba", "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "customPricing": "Custom Pricing", - "databaseSize": "Database Size", - "backupDb": "Backup Database", - "restoreDb": "Restore Database", - "exportData": "Export Data", - "importData": "Import Data", - "clearData": "Clear All Data", - "clearDataConfirm": "This will permanently delete all data. Are you sure?", - "enableRequestLogs": "Enable Request Logs", - "logRetention": "Log Retention", - "ipWhitelist": "IP Whitelist", - "ipBlacklist": "IP Blacklist", - "addIP": "Add IP", - "savedSuccessfully": "Settings saved successfully", + "cacheCreation": "Uundaji wa Akiba", + "customPricing": "Bei Maalum", + "databaseSize": "Ukubwa wa Hifadhidata", + "backupDb": "Hifadhi Nakala ya Hifadhidata", + "restoreDb": "Rejesha Hifadhidata", + "exportData": "Hamisha Data Nje", + "importData": "Ingiza Data", + "clearData": "Futa Data Yote", + "clearDataConfirm": "Hii itafuta data yote kabisa. Una uhakika?", + "enableRequestLogs": "Washa Kumbukumbu za Maombi", + "logRetention": "Muda wa Kuhifadhi Kumbukumbu", + "ipWhitelist": "Orodha ya IP Zinazoruhusiwa", + "ipBlacklist": "Orodha ya IP Zilizozuiwa", + "addIP": "Ongeza IP", + "savedSuccessfully": "Mipangilio imehifadhiwa", "ai": "AI", - "advanced": "Advanced", - "localMode": "Local Mode — All data stored on your machine", - "settingsSectionsAria": "Settings sections", - "switchThemes": "Switch between light and dark themes", - "themeSelectionAria": "Theme selection", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", + "advanced": "Ya Kina", + "localMode": "Hali ya Ndani — Data yote imehifadhiwa kwenye mashine yako", + "settingsSectionsAria": "Sehemu za mipangilio", + "switchThemes": "Badilisha kati ya mandhari angavu na meusi", + "themeSelectionAria": "Uteuzi wa mandhari", + "themeLight": "Angavu", + "themeDark": "Meusi", + "themeSystem": "Mfumo", "endpointTunnelVisibility": "Mwonekano wa njia ya mwisho", "endpointTunnelVisibilityDesc": "Ficha vidhibiti vya handaki kutoka kwa ukurasa wa Mwisho bila kubadilisha hali ya handaki.", "showCloudflareTunnel": "Cloudflare Quick Tunnel", @@ -6752,47 +6755,47 @@ "showTailscaleFunnelDesc": "Onyesha vidhibiti vya Funeli ya Tailscale kwenye ukurasa wa Mwisho.", "showNgrokTunnel": "Tunnel", "showNgrokTunnelDesc": "Onyesha vidhibiti vya Tunnel kwenye ukurasa wa Endpoint.", - "sidebarVisibility": "Hide sidebar items", - "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter without disabling any features", - "sidebarVisibilityHint": "Any sidebar section is hidden automatically when all of its entries are hidden", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", - "hideHealthLogs": "Hide Health Check Logs", - "hideHealthLogsDesc": "When ON, suppress [HealthCheck] messages in server console", - "themeAccent": "Theme color", - "themeAccentDesc": "Choose a preset color or create your own theme with one color", - "themeCreate": "Create theme", - "themeCustom": "Custom theme", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "sidebarVisibility": "Ficha vipengee vya utepe wa pembeni", + "sidebarVisibilityDesc": "Ficha kipengee chochote cha urambazaji katika utepe wa pembeni ili kupunguza msongamano wa mwonekano bila kuzima kipengele chochote", + "sidebarVisibilityHint": "Sehemu yoyote ya utepe wa pembeni hufichwa kiotomatiki wakati vipengee vyake vyote vimefichwa", + "presetAll": "Vyote", + "presetAllDesc": "Onyesha kila kitu", + "presetEssentials": "Muhimu", + "presetEssentialsDesc": "Njia ya wanaoanza - Zana za kina zitaendelea kupatikana kupitia utafutaji", + "presetMinimal": "Ya Kiwango cha Chini", + "presetMinimalDesc": "Kurasa za msingi pekee", + "presetDeveloper": "Msanidi Programu", + "presetDeveloperDesc": "Zana za usanidi na proksi", + "presetAdmin": "Msimamizi", + "presetAdminDesc": "Ufuatiliaji na ukaguzi", + "settingsSidebarTitle": "Ubinafsishaji wa Upau wa Pembeni", + "settingsSidebarDesc": "Chagua vipengee vya upau wa pembeni vya kuonyesha. Muhimu huweka zana za Kina ziweze kutafutwa.", + "hideHealthLogs": "Ficha Kumbukumbu za Ukaguzi wa Afya", + "hideHealthLogsDesc": "Ikiwa IMEWASHWA, zuia ujumbe wa [HealthCheck] kwenye dashibodi ya seva", + "themeAccent": "Rangi ya mandhari", + "themeAccentDesc": "Chagua rangi iliyowekwa tayari au unda mandhari yako kwa kutumia rangi moja", + "themeCreate": "Unda mandhari", + "themeCustom": "Mandhari maalum", + "themeBlue": "Bluu", + "themeRed": "Nyekundu", + "themeGreen": "Kijani", + "themeViolet": "Urujuani", + "themeOrange": "Machungwa", + "themeCyan": "Samawati", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Binafsisha jina na nembo ya programu", + "appName": "Jina la Programu", + "appNameDesc": "Jina linaloonyeshwa kwenye upau wa pembeni na kichupo cha kivinjari", + "customLogo": "URL ya Nembo Maalum", + "customLogoDesc": "URL ya picha ya nembo yako maalum", + "uploadLogo": "Pakia Nembo", + "resetLogo": "Rejesha Chaguomsingi", + "logoPreview": "Onyesho la Awali", + "customFavicon": "Favicon ya Kivinjari", + "customFaviconDesc": "URL ya favicon yako maalum (inayoonyeshwa kwenye kichupo cha kivinjari)", + "uploadFavicon": "Pakia Favicon", + "resetFavicon": "Weka Upya Favicon", + "faviconPreview": "Onyesho la Awali la Favicon", "logoFileTooLarge": "Faili la nembo lazima liwe chini ya 500KB", "faviconFileTooLarge": "Faili la favicon lazima liwe chini ya 50KB", "invalidLogoFileType": "Aina ya faili si sahihi. Tafadhali pakia PNG, JPG, SVG, GIF, au WebP.", @@ -6800,15 +6803,15 @@ "failedToReadFile": "Imeshindwa kusoma faili", "startOnLogin": "Anza wakati wa Kuingia", "startOnLoginDesc": "Anzisha OmniRoute kiotomatiki wakati wa kuwasha mfumo na uendeshe kimya kimya kwenye trei ya nyuma.", - "flushCache": "Flush Cache", - "flushing": "Flushing…", - "size": "Size", - "hits": "Hits", - "evictions": "Evictions", - "loadingCacheStats": "Loading cache stats…", - "globalProxy": "Global Proxy", - "globalProxyDesc": "Configure a global outbound proxy for all API calls. Individual providers, combos, and keys can override this.", - "noGlobalProxy": "No global proxy configured", + "flushCache": "Futa Akiba", + "flushing": "Inafuta…", + "size": "Ukubwa", + "hits": "Mara Ilipopatikana", + "evictions": "Uondoaji", + "loadingCacheStats": "Inapakia takwimu za akiba…", + "globalProxy": "Proksi ya Kimataifa", + "globalProxyDesc": "Sanidi proksi ya kimataifa ya miunganisho ya nje kwa simu zote za API. Watoa huduma binafsi, michanganyiko na funguo zinaweza kubatilisha mpangilio huu.", + "noGlobalProxy": "Hakuna proksi ya kimataifa iliyosanidiwa", "proxyPool": "Dimbwi la Seva Mbadala", "freePool": "Dimbwi la Bure", "proxyDocumentation": "Nyaraka za Seva Mbadala", @@ -6896,21 +6899,21 @@ "refreshInterval": "Muda wa Kurekebisha", "ruleModeDescription": "Maelezo ya Njia ya Kanuni" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "Ukaguzi wa Afya kwa Wingi", + "bulkHealthcheckDesc": "Jaribu proksi zote zilizosanidiwa dhidi ya URL lengwa ili kubaini zinazofanya kazi.", + "healthcheckTesting": "Inajaribu...", + "healthcheckAll": "Kagua Afya ya Zote", + "healthcheckFailed": "Imeshindikana kuendesha ukaguzi wa afya", + "healthcheckTestingAll": "Inajaribu proksi zote kwa sambamba...", + "healthcheckTotal": "Jumla", + "healthcheckWorking": "Zinazofanya kazi", + "healthcheckFailedLabel": "Zilizoshindwa", + "healthcheckStatus": "Hali", + "healthcheckProxyUrl": "URL ya Proksi", + "healthcheckLatency": "Ucheleweshaji", "proxyDocumentationScopeTitle": "Utatuzi wa upeo wa wakala", "proxyDocumentationScopeDescBefore": "OmniRoute hutatua wakala wa nje kwa mpangilio wa kipaumbele:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "mchanganyiko → akaunti → mtoa huduma → jumla", "proxyDocumentationScopeDescAfter": ". Upeo mahususi zaidi hushinda.", "proxyDocumentationAddTitle": "Kuongeza wakala maalum", "proxyDocumentationAddDescBefore": "Nenda kwenye", @@ -6945,7 +6948,7 @@ "proxyFreePoolAddSelected": "Ongeza zilizochaguliwa kwenye dimbwi", "proxyFreePoolAddVisible": "Ongeza zote zinazoonekana kwenye dimbwi", "proxyFreePoolSource": "Chanzo", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Seva Pangishi:Kituo", "proxyFreePoolType": "Aina", "proxyFreePoolCountry": "Nchi", "proxyFreePoolQuality": "Ubora", @@ -6966,61 +6969,61 @@ "proxyFreePoolLoadMore": "Pakia zaidi", "close": "Funga", "cancel": "Ghairi", - "globalLabel": "Global", - "configure": "Configure", - "globalSystemPrompt": "Global System Prompt", - "saved": "Saved", + "globalLabel": "Ya Jumla", + "configure": "Sanidi", + "globalSystemPrompt": "Kidokezo cha Mfumo wa Jumla", + "saved": "Imehifadhiwa", "beforePromptLabel": "Kabla ya Prompt", "beforePromptDesc": "Imeingizwa kabla ya maagizo ya mfumo wa wakala/mtoa huduma", "beforePromptPlaceholder": "Maagizo yaliyoingizwa kabla ya prompt ya wakala/mtoa huduma...", "afterPromptLabel": "Baada ya Prompt", "afterPromptDesc": "Imeingizwa baada ya maagizo ya mfumo wa wakala/mtoa huduma", "afterPromptPlaceholder": "Maagizo yaliyoingizwa baada ya prompt ya wakala/mtoa huduma...", - "chars": "{count} chars", - "thinkingBudgetTitle": "Thinking Budget", + "chars": "herufi {count}", + "thinkingBudgetTitle": "Bajeti ya Kufikiri", "thinkingBudgetDesc": "Control AI reasoning token usage across all requests", "thinkingBudgetIndependenceHint": "Vipengele vya kufinya, uelekezaji, na kikomo cha token vinaendelea kufanya kazi katika kila hali. Auto haitafsiri kama \"kuonyesha mawazo kiotomatiki\" — inafuta maeneo ya mantiki ya mteja.", - "passthrough": "Passthrough", - "passthroughDesc": "No changes — client controls thinking budget", + "passthrough": "Kupitisha Moja kwa Moja", + "passthroughDesc": "Hakuna mabadiliko — kiteja kinadhibiti bajeti ya kufikiri", "thinkingModePassthrough": "Kupitisha", "thinkingModePassthroughDesc": "Acha sababu za mteja zisibadilishwe (juhudi, muhtasari, vizuizi vya kufikiri). Inahitajika kwa Codex/Desktop kufikiri kwa wazi. Chaguo la kawaida.", - "thinkingModeAuto": "Auto (strip)", + "thinkingModeAuto": "Otomatiki (ondoa)", "thinkingModeAutoDesc": "Ondoa maeneo yote ya kufikiri/kuwaza ya mteja (kuwaza, juhudi za kuwaza, kufikiri kwa Claude, mipangilio ya kufikiri ya Gemini) na umruhusu mtoa huduma kuunda viwango vya kawaida. Inaweza kuficha paneli za kufikiri na kuvunja maombi ya muhtasari wa mteja.", "thinkingModeCustom": "Mambo Ya Kijadi", "thinkingModeCustomDesc": "Futa kila ombi kwa bajeti ya tokeni ya kufikiria iliyowekwa hapa chini.", "thinkingModeAdaptive": "Inayoweza Kujiendesha", "thinkingModeAdaptiveDesc": "Panga bajeti ya kufikiria kutoka kwa juhudi ya msingi kwa kutumia idadi ya ujumbe, zana, na urefu wa maelekezo.", "auto": "Auto Combo", - "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "custom": "Custom", - "customDesc": "Set a fixed token budget for all requests", - "adaptive": "Adaptive", - "adaptiveDesc": "Scale budget based on request complexity", - "effortNone": "None (0 tokens)", - "effortLow": "Low (1K tokens)", - "effortMedium": "Medium (10K tokens)", - "effortHigh": "High (128K tokens)", - "tokenBudget": "Token Budget", - "tokens": "tokens", - "baseEffortLevel": "Base Effort Level", + "autoDesc": "Kundi mahiri la uelekezaji linalojirekebisha (Limeboreshwa kwa utendaji)", + "custom": "Maalum", + "customDesc": "Weka bajeti isiyobadilika ya tokeni kwa maombi yote", + "adaptive": "Inayobadilika", + "adaptiveDesc": "Rekebisha bajeti kulingana na utata wa ombi", + "effortNone": "Hakuna (tokeni 0)", + "effortLow": "Ndogo (tokeni 1K)", + "effortMedium": "Wastani (tokeni 10K)", + "effortHigh": "Kubwa (tokeni 128K)", + "tokenBudget": "Bajeti ya Tokeni", + "tokens": "tokeni", + "baseEffortLevel": "Kiwango cha Msingi cha Juhudi", "adaptiveHint": "Adaptive mode scales from this base level based on message count, tool usage, and prompt length.", - "requireLogin": "Require login", - "requireLoginDesc": "When ON, dashboard requires password. When OFF, access without login.", - "currentPassword": "Current Password", - "enterCurrentPassword": "Enter current password", - "newPassword": "New Password", - "enterNewPassword": "Enter new password", - "confirmPassword": "Confirm New Password", - "confirmPasswordPlaceholder": "Confirm new password", - "passwordsNoMatch": "Passwords do not match", - "passwordUpdated": "Password updated successfully", - "failedUpdatePassword": "Failed to update password", - "errorOccurred": "An error occurred", - "updatePassword": "Update Password", - "setPassword": "Set Password", - "apiEndpointProtection": "API Endpoint Protection", - "requireAuthModels": "Require API key for /models", - "requireAuthModelsDesc": "When ON, the /v1/models endpoint returns 404 for unauthenticated requests. Prevents model discovery by unauthorized users.", + "requireLogin": "Hitaji kuingia", + "requireLoginDesc": "Ikiwa IMEWASHWA, dashibodi inahitaji nenosiri. Ikiwa IMEZIMWA, ufikiaji unawezekana bila kuingia.", + "currentPassword": "Nenosiri la Sasa", + "enterCurrentPassword": "Weka nenosiri la sasa", + "newPassword": "Nenosiri Jipya", + "enterNewPassword": "Weka nenosiri jipya", + "confirmPassword": "Thibitisha Nenosiri Jipya", + "confirmPasswordPlaceholder": "Thibitisha nenosiri jipya", + "passwordsNoMatch": "Manenosiri hayalingani", + "passwordUpdated": "Nenosiri limesasishwa kwa mafanikio", + "failedUpdatePassword": "Imeshindwa kusasisha nenosiri", + "errorOccurred": "Hitilafu imetokea", + "updatePassword": "Sasisha Nenosiri", + "setPassword": "Weka Nenosiri", + "apiEndpointProtection": "Ulinzi wa Endpoint ya API", + "requireAuthModels": "Hitaji ufunguo wa API kwa /models", + "requireAuthModelsDesc": "Ikiwa IMEWASHWA, endpoint ya /v1/models hurejesha 404 kwa maombi yasiyothibitishwa. Huzuia watumiaji wasioidhinishwa kugundua modeli.", "authModelHeading": "Muundo unaotumika wa uidhinishaji", "authModelClient": "Sehemu za mwisho za API ya Mteja (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) zinahitaji kitufe cha Bearer API.", "authModelManagement": "Sehemu za mwisho za usimamizi (/dashibodi, /api/*) zinahitaji kipindi cha dashibodi au kitambulisho cha usimamizi.", @@ -7029,16 +7032,16 @@ "bruteForceProtectionDesc": "Kosa na kufunga /api/auth/login baada ya kushindwa mara kwa mara kutoka kwa IP sawa.", "corsAllowedOrigins": "CORS asili zinazoruhusiwa", "corsAllowedOriginsDesc": "Orodha iliyotenganishwa na koma ya asili ya kivinjari inayoruhusiwa kupiga seva hii. Orodha tupu = hakuna ufikiaji wa CORS wa kivinjari (server-to-server bado inafanya kazi). Tumia CORS_ALLOW_ALL=true env var kwa maendeleo pekee.", - "blockedProviders": "Blocked Providers", - "blockedProvidersDesc": "Hide specific providers from the /v1/models response. Blocked providers will not appear in model listings.", - "providersBlocked": "{count} provider(s) blocked from /models", - "blockProviderTitle": "Block {provider}", - "unblockProviderTitle": "Unblock {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "blockedProviders": "Watoa Huduma Waliozuiwa", + "blockedProvidersDesc": "Ficha watoa huduma mahususi kwenye jibu la /v1/models. Watoa huduma waliozuiwa hawataonekana kwenye orodha za modeli.", + "providersBlocked": "Watoa huduma {count} wamezuiwa kutoka /models", + "blockProviderTitle": "Zuia {provider}", + "unblockProviderTitle": "Ondoa kizuizi cha {provider}", + "cliFingerprint": "Ulinganishaji wa Alama ya Utambulisho ya CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "Watoa huduma {count} wenye alama ya utambulisho ya CLI inayotumika", + "enableFingerprintTitle": "Washa alama ya utambulisho kwa {provider}", + "disableFingerprintTitle": "Zima alama ya utambulisho kwa {provider}", "systemTransforms": "Bomba la Kubadilisha Kizuizi cha Mfumo", "systemTransformsDesc": "Kwa kila mtoa huduma aliagiza bomba la mabadiliko yanayotumika kwa shirika la ombi kabla ya kusambaza. Inaauni kitambulisho chochote cha mtoa huduma.", "systemTransformsAddProvider": "Ongeza mtoaji", @@ -7049,35 +7052,35 @@ "systemTransformsOpMoveUp": "Sogeza juu", "systemTransformsOpMoveDown": "Sogeza chini", "systemTransformsOpDelete": "Futa op", - "routingStrategy": "Routing Strategy", - "routingAdvancedGuideTitle": "Advanced routing guidance", + "routingStrategy": "Mkakati wa Uelekezaji", + "routingAdvancedGuideTitle": "Mwongozo wa kina wa uelekezaji", "routingAdvancedGuideHint1": "Use Fill First for predictable priority, Round Robin for fairness, and P2C for latency resilience.", "routingAdvancedGuideHint2": "If providers vary in quality/cost, start with Cost Opt for background work and Least Used for balanced wear.", - "fillFirst": "Fill First", - "fillFirstDesc": "Use accounts in priority order", + "fillFirst": "Jaza Kwanza", + "fillFirstDesc": "Tumia akaunti kulingana na mpangilio wa kipaumbele", "roundRobin": "Round Robin", - "roundRobinDesc": "Cycle through all accounts", + "roundRobinDesc": "Zungusha matumizi kati ya akaunti zote", "p2c": "P2C", - "p2cDesc": "Pick 2 random, use the healthier one", - "random": "Random", - "randomDesc": "Random account each request", - "leastUsed": "Least Used", - "leastUsedDesc": "Pick least recently used account", - "costOpt": "Cost Opt", - "costOptDesc": "Prefer cheapest available account", + "p2cDesc": "Chagua 2 bila mpangilio, tumia yenye hali bora zaidi", + "random": "Bila Mpangilio", + "randomDesc": "Akaunti ya nasibu kwa kila ombi", + "leastUsed": "Iliyotumika Mara Chache Zaidi", + "leastUsedDesc": "Chagua akaunti ambayo haijatumiwa hivi karibuni zaidi", + "costOpt": "Uboreshaji wa Gharama", + "costOptDesc": "Pendelea akaunti ya bei nafuu zaidi inayopatikana", "resetAware": "Weka Upya-Aware RR", "resetAwareDesc": "Pendelea akaunti zilizo na kiasi kilichosalia cha afya na uwekaji upya wa karibu zaidi", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kulingana na Uzito wa Kiwango", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "Nasibu Kabisa", + "strictRandomDesc": "Changanya staha — hutumia kila akaunti mara moja kabla ya kuchanganya tena", + "stickyLimit": "Kikomo Thabiti", "stickyLimitDesc": "Calls per account before switching", "routingStrategyTitle": "Mkakati wa Kuelekeza", "routingStrategySubtitle": "Linganisha 9router: round-robin ya akaunti, vikomo vya kunata, na mzunguko wa combo", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Mzunguko wa Zamu", "accountRoundRobinDesc": "Mzunguko kupitia akaunti ili kusambaza mzigo", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Mzunguko wa Zamu Uliojumuishwa", "comboRoundRobinDesc": "Mzunguko kupitia shabaha za combo badala ya kuanza na ya kwanza kila wakati", "comboStickyLimit": "Kikomo cha Kunata cha Combo", "comboStickyLimitDesc": "Maombi kwa kila shabaha ya combo kabla ya kubadilisha", @@ -7089,225 +7092,225 @@ "providerAccountRoutingDesc": "Batilisha mkakati wa kimataifa wa akaunti kwa mtoa huduma huyu (usawa wa 9router).", "providerRoutingStrategy": "Mkakati wa akaunti", "providerRoutingInheritGlobal": "Urithi chaguo-msingi la jumla", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", - "modelAliases": "Model Aliases", - "modelAliasesTitle": "Model Aliases", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", - "addCustomAlias": "Add Custom Alias", - "deprecatedModelId": "Deprecated model ID", - "newModelId": "New model ID", - "customAliases": "Custom Aliases", - "builtInAliases": "Built-in Aliases", - "backgroundDegradationTitle": "Background Task Degradation", - "backgroundDegradationDesc": "Auto-detect background tasks (titles, summaries) and route to cheaper models", - "enableDegradation": "Enable Background Degradation", - "enableDegradationHint": "When enabled, background tasks like title generation and summarization are routed to cheaper models automatically", - "tasksDetected": "Tasks detected", - "degradationMap": "Model Degradation Map", - "premiumModel": "Premium model", - "cheapModel": "Cheap model", - "detectionPatterns": "Detection Patterns", - "newPattern": "e.g. \"generate a title\"", + "quotaPreflightTitle": "Kikomo cha Ukaguzi wa Awali wa Kiwango", + "quotaPreflightSubtitle": "Ruka akaunti ambazo zimeishiwa na kiwango kabla ya kutuma ombi kwenye huduma ya juu", + "quotaPreflightEnable": "Washa ukaguzi wa awali wa kiwango", + "quotaPreflightEnableDesc": "Kabla ya kila ombi, angalia kiwango kilichosalia cha akaunti (vipindi vya saa 5 / wiki / mwezi). Akaunti zilizo kwenye au chini ya kikomo hurukwa bila kuwasiliana na huduma ya juu. Vikomo vya kila kipindi vilivyowekwa kwenye ukurasa wa Kiwango cha Mtoa Huduma hupewa kipaumbele kuliko chaguomsingi lililowekwa hapa.", + "quotaPreflightCutoff": "Kikomo cha jumla (% ya chini inayosalia)", + "quotaPreflightCutoffDesc": "Acha kutumia akaunti wakati kiasi chake cha matumizi kinachosalia kinashuka hadi asilimia hii au chini yake, kwa kila dirisha lisilo na kikomo chake. Hulingana na pau za asilimia inayosalia kwenye ukurasa wa Provider Quota.", + "quotaPreflightWindowsHint": "Madirisha yenye kikomo chake mahususi kwa kila dirisha au kwa kila mtoa huduma (kilichowekwa katika modali ya Cutoff kwenye ukurasa wa Provider Quota) hayaathiriwi na chaguo-msingi hili.", + "quotaPreflightLoadFailed": "Imeshindikana kupakia mipangilio ya ukaguzi wa awali wa kiasi cha matumizi.", + "modelAliases": "Lakabu za Modeli", + "modelAliasesTitle": "Lakabu za Modeli", + "modelAliasesDesc": "Panga upya majina ya modeli kwa kutumia ulinganishaji kamili au ruwaza za vibambo-jokeri.", + "addCustomAlias": "Ongeza Lakabu Maalum", + "deprecatedModelId": "Kitambulisho cha modeli kilichoacha kutumika", + "newModelId": "Kitambulisho kipya cha modeli", + "customAliases": "Lakabu Maalum", + "builtInAliases": "Lakabu Zilizojengewa Ndani", + "backgroundDegradationTitle": "Upunguzaji wa Uwezo wa Kazi za Chinichini", + "backgroundDegradationDesc": "Gundua kiotomatiki kazi za chinichini (vichwa, muhtasari) na uzielekeze kwenye modeli za gharama nafuu", + "enableDegradation": "Washa Upunguzaji wa Uwezo wa Chinichini", + "enableDegradationHint": "Ikiwashwa, kazi za chinichini kama kutengeneza vichwa na kufanya muhtasari huelekezwa kiotomatiki kwenye modeli za gharama nafuu", + "tasksDetected": "Kazi zilizogunduliwa", + "degradationMap": "Ramani ya Upunguzaji wa Uwezo wa Modeli", + "premiumModel": "Modeli ya kiwango cha juu", + "cheapModel": "Modeli ya gharama nafuu", + "detectionPatterns": "Ruwaza za Ugunduzi", + "newPattern": "mf. \"tengeneza kichwa\"", "aliasPatternPlaceholder": "claude-sonnet-*", "aliasTargetPlaceholder": "claude-sonnet-4-20250514", - "pattern": "Pattern", - "targetModel": "Target Model", - "add": "+ Add", - "session": "Session", - "sessionDetailsAria": "Session details", + "pattern": "Ruwaza", + "targetModel": "Modeli Lengwa", + "add": "+ Ongeza", + "session": "Kikao", + "sessionDetailsAria": "Maelezo ya kikao", "status": "Status", - "authenticated": "Authenticated", - "guest": "Guest", - "loginTime": "Login Time", - "sessionAge": "Session Age", - "browser": "Browser", - "clearLocalData": "Clear Local Data", - "logout": "Logout", - "clearLocalDataConfirm": "Clear all local data? This will reset your preferences.", - "unknown": "Unknown", - "systemActor": "system", - "ipAccessControl": "IP Access Control", - "ipAccessControlDesc": "Block or allow specific IP addresses", - "ipModeDisabled": "Disabled", - "ipModeBlacklist": "Blacklist", - "ipModeWhitelist": "Whitelist", - "ipModeWhitelistPriority": "WL Priority", - "addIpAddress": "Add IP Address", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", - "block": "+ Block", - "allow": "+ Allow", - "blocked": "Blocked ({count})", - "allowed": "Allowed ({count})", - "temporaryBans": "Temporary Bans ({count})", - "minLeft": "{min}m left", - "auditLog": "Audit Log", - "searchAuditLogs": "Search audit logs...", - "failedLoadAuditLog": "Failed to load audit log", - "noAuditEvents": "No audit events found", - "action": "Action", - "actor": "Actor", - "details": "Details", - "time": "Time", - "fallbackChainsTitle": "Fallback Chains", - "fallbackChainsDesc": "Define provider fallback order per model", - "addChain": "+ Add Chain", - "modelName": "Model Name", + "authenticated": "Imethibitishwa", + "guest": "Mgeni", + "loginTime": "Muda wa Kuingia", + "sessionAge": "Umri wa Kikao", + "browser": "Kivinjari", + "clearLocalData": "Futa Data za Ndani", + "logout": "Ondoka", + "clearLocalDataConfirm": "Ufute data zote za ndani? Hii itaweka upya mapendeleo yako.", + "unknown": "Haijulikani", + "systemActor": "mfumo", + "ipAccessControl": "Udhibiti wa Ufikiaji kwa IP", + "ipAccessControlDesc": "Zuia au ruhusu anwani mahususi za IP", + "ipModeDisabled": "Imezimwa", + "ipModeBlacklist": "Orodha ya kuzuia", + "ipModeWhitelist": "Orodha ya kuruhusu", + "ipModeWhitelistPriority": "Kipaumbele cha orodha ya kuruhusu", + "addIpAddress": "Ongeza Anwani ya IP", + "ipAddressPlaceholder": "192.168.1.0/24 au 10.0.*.*", + "block": "+ Zuia", + "allow": "+ Ruhusu", + "blocked": "Zilizozuiwa ({count})", + "allowed": "Zilizoruhusiwa ({count})", + "temporaryBans": "Marufuku za Muda ({count})", + "minLeft": "Zimesalia dakika {min}", + "auditLog": "Kumbukumbu ya Ukaguzi", + "searchAuditLogs": "Tafuta kumbukumbu za ukaguzi...", + "failedLoadAuditLog": "Imeshindwa kupakia kumbukumbu ya ukaguzi", + "noAuditEvents": "Hakuna matukio ya ukaguzi yaliyopatikana", + "action": "Kitendo", + "actor": "Mtekelezaji", + "details": "Maelezo", + "time": "Wakati", + "fallbackChainsTitle": "Minyororo ya Mbadala", + "fallbackChainsDesc": "Bainisha mpangilio wa watoa huduma wa kutumia kama mbadala kwa kila modeli", + "addChain": "+ Ongeza Mnyororo", + "modelName": "Jina la Modeli", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "Providers (comma-separated, in priority order)", + "providersCommaSeparated": "Watoa huduma (wametenganishwa kwa koma, kwa mpangilio wa kipaumbele)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", - "createChain": "Create Chain", - "noFallbackChains": "No Fallback Chains", - "noFallbackChainsDesc": "Create a chain to define provider fallback order for a model.", - "loadingFallbackChains": "Loading fallback chains...", - "deleteChainConfirm": "Delete fallback chain for \"{model}\"?", - "chainCreated": "Chain created for {model}", - "chainDeleted": "Chain deleted for {model}", - "failedCreateChain": "Failed to create chain", - "failedDeleteChain": "Failed to delete chain", - "deleteChain": "Delete chain", - "fillModelAndProviders": "Please fill model name and providers", - "addAtLeastOneProvider": "Add at least one provider", - "comboDefaultsTitle": "Combo Defaults", - "comboDefaultsGuideTitle": "How to tune combo defaults", - "comboDefaultsGuideHint1": "Keep retries low in low-latency flows; increase timeout only for long generation tasks.", - "comboDefaultsGuideHint2": "Use provider overrides when one provider needs different timeout/retry behavior than global defaults.", - "globalComboConfig": "Global combo configuration", + "createChain": "Unda Mnyororo", + "noFallbackChains": "Hakuna Minyororo ya Mbadala", + "noFallbackChainsDesc": "Unda mnyororo ili kubainisha mpangilio wa watoa huduma wa kutumia kama mbadala kwa modeli.", + "loadingFallbackChains": "Inapakia minyororo ya mbadala...", + "deleteChainConfirm": "Ungependa kufuta mnyororo wa mbadala wa \"{model}\"?", + "chainCreated": "Mnyororo umeundwa kwa ajili ya {model}", + "chainDeleted": "Mnyororo wa {model} umefutwa", + "failedCreateChain": "Imeshindwa kuunda mnyororo", + "failedDeleteChain": "Imeshindwa kufuta mnyororo", + "deleteChain": "Futa mnyororo", + "fillModelAndProviders": "Tafadhali jaza jina la modeli na watoa huduma", + "addAtLeastOneProvider": "Ongeza angalau mtoa huduma mmoja", + "comboDefaultsTitle": "Chaguo-msingi za Mseto", + "comboDefaultsGuideTitle": "Jinsi ya kurekebisha chaguo-msingi za mseto", + "comboDefaultsGuideHint1": "Weka idadi ya majaribio ya kurudia kuwa ndogo katika mitiririko yenye ucheleweshaji mdogo; ongeza muda wa kuisha tu kwa kazi ndefu za uzalishaji.", + "comboDefaultsGuideHint2": "Tumia ubatilishaji wa mtoa huduma wakati mtoa huduma mmoja anahitaji mipangilio tofauti ya muda wa kuisha au majaribio ya kurudia kuliko chaguo-msingi za jumla.", + "globalComboConfig": "Usanidi wa jumla wa michanganyiko", "moveUp": "Sogeza juu", "moveDown": "Sogeza chini", "allProvidersAdded": "Watoa huduma wote wameongezwa", "noProvidersFound": "Hakuna watoa huduma waliopatikana", - "defaultStrategy": "Default Strategy", + "defaultStrategy": "Mkakati Chaguomsingi", "defaultStrategyDesc": "Applied to new combos without explicit strategy", - "comboStrategyAria": "Combo strategy", - "priority": "Priority", - "weighted": "Weighted", - "contextRelay": "Context Relay", - "contextRelayDesc": "Priority-style routing with automatic context handoffs when account rotation happens", - "maxRetriesLabel": "Max Retries", - "retryDelayLabel": "Retry Delay (ms)", - "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", - "healthCheckDesc": "Pre-check provider availability", - "trackMetrics": "Track Metrics", - "trackMetricsDesc": "Record per-combo request metrics", - "providerOverrides": "Provider Overrides", - "providerOverridesDesc": "Override timeout and retries per provider. Provider settings override global defaults.", - "providerMaxRetriesAria": "{provider} max retries", - "providerTimeoutAria": "{provider} timeout ms", - "removeProviderOverrideAria": "Remove {provider} override", + "comboStrategyAria": "Mkakati wa mchanganyiko", + "priority": "Kipaumbele", + "weighted": "Uliowekewa uzito", + "contextRelay": "Uhawilishaji wa Muktadha", + "contextRelayDesc": "Uelekezaji kwa mtindo wa kipaumbele wenye uhawilishaji wa muktadha kiotomatiki wakati akaunti zinapobadilishwa", + "maxRetriesLabel": "Idadi ya Juu ya Majaribio Tena", + "retryDelayLabel": "Ucheleweshaji wa Kujaribu Tena (ms)", + "timeoutLabel": "Muda wa Kusubiri (ms)", + "healthCheck": "Ukaguzi wa Afya", + "healthCheckDesc": "Kagua mapema upatikanaji wa mtoa huduma", + "trackMetrics": "Fuatilia Vipimo", + "trackMetricsDesc": "Rekodi vipimo vya maombi kwa kila mchanganyiko", + "providerOverrides": "Mipangilio Maalum ya Watoa Huduma", + "providerOverridesDesc": "Badilisha muda wa kusubiri na majaribio tena kwa kila mtoa huduma. Mipangilio ya mtoa huduma inatangulizwa kuliko chaguomsingi za jumla.", + "providerMaxRetriesAria": "Idadi ya juu ya majaribio tena ya {provider}", + "providerTimeoutAria": "Muda wa kusubiri wa {provider} kwa ms", + "removeProviderOverrideAria": "Ondoa mpangilio maalum wa {provider}", "selectProviderPlaceholder": "Chagua mtoa huduma...", "searchProviderPlaceholder": "Tafuta watoa huduma...", "searchProviderAria": "Tafuta watoa huduma", - "newProviderNamePlaceholder": "e.g. google, openai...", - "newProviderNameAria": "New provider name", - "retries": "retries", + "newProviderNamePlaceholder": "k.m. google, openai...", + "newProviderNameAria": "Jina jipya la mtoa huduma", + "retries": "majaribio tena", "ms": "ms", - "saveComboDefaults": "Save Combo Defaults", - "maxNestingDepth": "Max Nesting Depth", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", + "saveComboDefaults": "Hifadhi Chaguomsingi za Michanganyiko", + "maxNestingDepth": "Kina cha Juu cha Uwekaji Ndani", + "concurrencyPerModel": "Utekelezaji Sambamba / Muundo", + "queueTimeout": "Muda wa Kusubiri Kwenye Foleni (ms)", "queueDepth": "Kina cha Foleni", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", - "providerProfiles": "Provider Profiles", - "providerProfilesDesc": "Separate resilience settings for OAuth (session-based) and API Key (metered) providers. OAuth providers have stricter thresholds due to lower rate limits.", - "oauthProviders": "OAuth Providers", - "apiKeyProviders": "API Key Providers", - "transientCooldown": "Transient Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", - "cbThreshold": "CB Threshold", - "cbResetTime": "CB Reset Time", - "rateLimiting": "Rate Limiting", - "rateLimitingDesc": "API Key providers are automatically rate-limited with safe defaults. Limits are learned from response headers and adapt over time.", - "defaultSafetyNet": "Default Safety Net", + "contextRelayHandoffThreshold": "Kizingiti cha Uhawilishaji", + "contextRelayMaxMessages": "Idadi ya Juu ya Ujumbe kwa Muhtasari", + "contextRelaySummaryModel": "Muundo wa Muhtasari", + "contextRelayProviderNote": "Kwa sasa, Uhawilishaji wa Muktadha huzalisha uhawilishaji kwa akaunti za Codex na hutumia thamani hizi kama chaguomsingi za jumla kwa michanganyiko mipya au ambayo haijasanidiwa.", + "providerProfiles": "Wasifu wa Watoa Huduma", + "providerProfilesDesc": "Mipangilio tofauti ya uthabiti kwa watoa huduma wa OAuth (wenye kutegemea kipindi) na API Key (wenye kupimwa matumizi). Watoa huduma wa OAuth wana vizingiti vikali zaidi kutokana na vikomo vya chini vya kasi.", + "oauthProviders": "Watoa Huduma wa OAuth", + "apiKeyProviders": "Watoa Huduma wa API Key", + "transientCooldown": "Kipindi cha Kusubiri kwa Hitilafu ya Muda", + "rateLimitCooldown": "Kipindi cha Kusubiri kwa Kikomo cha Kasi", + "maxBackoffLevel": "Kiwango cha Juu cha Ucheleweshaji", + "cbThreshold": "Kizingiti cha CB", + "cbResetTime": "Muda wa Kuweka Upya CB", + "rateLimiting": "Uwekaji wa Vikomo vya Kasi", + "rateLimitingDesc": "Watoa huduma wa API Key huwekewa vikomo vya kasi kiotomatiki kwa chaguo-msingi salama. Vikomo hujifunza kutokana na vichwa vya majibu na hubadilika kadiri muda unavyopita.", + "defaultSafetyNet": "Wavu Chaguo-msingi wa Usalama", "rpm": "RPM", - "minGap": "Min Gap", - "maxConcurrent": "Max Concurrent", - "activeLimiters": "Active Limiters", - "noActiveLimiters": "No active rate limiters yet.", - "reservoir": "Reservoir", - "running": "Running", - "queued": "Queued", - "circuitBreakers": "Circuit Breakers", - "breakerStateClosed": "Closed", - "breakerStateOpen": "Open", - "breakerStateHalfOpen": "Half-Open", - "tripped": "{count} tripped", - "healthy": "{count} healthy", - "resetAll": "Reset All", - "noCircuitBreakers": "No circuit breakers active yet. They are created automatically when requests flow through the combo pipeline.", - "failures": "{count} failure(s)", - "policiesLocked": "Policies & Locked Identifiers", - "allOperational": "All systems operational — no lockouts or tripped breakers", - "loadingPolicies": "Loading policies...", - "lockedIdentifiers": "Locked Identifiers", - "unlockedIdentifier": "Unlocked: {identifier}", - "sinceDate": "since {date}", - "forceUnlock": "Force Unlock", - "unlocking": "Unlocking...", - "failedUnlock": "Failed to unlock", - "failedLoadWithStatus": "Failed to load: {status}", - "failedLoadResilience": "Failed to load resilience status", - "saveFailed": "Save failed", - "resetFailed": "Reset failed", - "loadingResilience": "Loading resilience status...", - "retry": "Retry", + "minGap": "Pengo la Chini", + "maxConcurrent": "Upeo wa Juu wa Zinazotekelezwa kwa Wakati Mmoja", + "activeLimiters": "Vidhibiti vya Kasi Vinavyotumika", + "noActiveLimiters": "Bado hakuna vidhibiti vya kasi vinavyotumika.", + "reservoir": "Hifadhi", + "running": "Inaendelea", + "queued": "Kwenye Foleni", + "circuitBreakers": "Vikatiza Mzunguko", + "breakerStateClosed": "Imefungwa", + "breakerStateOpen": "Imefunguliwa", + "breakerStateHalfOpen": "Imefunguliwa Nusu", + "tripped": "{count} vimekatika", + "healthy": "{count} vinafanya kazi vizuri", + "resetAll": "Weka Vyote Upya", + "noCircuitBreakers": "Bado hakuna vikatiza mzunguko vinavyotumika. Huundwa kiotomatiki maombi yanapopita kwenye pipeline ya combo.", + "failures": "hitilafu {count}", + "policiesLocked": "Sera na Vitambulisho Vilivyofungwa", + "allOperational": "Mifumo yote inafanya kazi — hakuna vizuizi au vikatiza vilivyokatika", + "loadingPolicies": "Inapakia sera...", + "lockedIdentifiers": "Vitambulisho Vilivyofungwa", + "unlockedIdentifier": "Kimefunguliwa: {identifier}", + "sinceDate": "tangu {date}", + "forceUnlock": "Lazimisha Kufungua", + "unlocking": "Inafungua...", + "failedUnlock": "Imeshindwa kufungua", + "failedLoadWithStatus": "Imeshindwa kupakia: {status}", + "failedLoadResilience": "Imeshindwa kupakia hali ya ustahimilivu", + "saveFailed": "Imeshindwa kuhifadhi", + "resetFailed": "Imeshindwa kuweka upya", + "loadingResilience": "Inapakia hali ya ustahimilivu...", + "retry": "Jaribu Tena", "systemStorage": "System & Storage", - "allDataLocal": "All data stored locally on your machine", - "databasePath": "Database Path", + "allDataLocal": "Data yote imehifadhiwa ndani ya mashine yako", + "databasePath": "Njia ya Hifadhidata", "export": "Hamisha", - "exportDatabase": "Export Database", - "exportAll": "Export All (.tar.gz)", - "importDatabase": "Import Database", - "confirmDbImport": "Confirm Database Import", - "confirmDbImportDesc": "This will replace all current data with the content from {file}. A backup will be created automatically before the import.", - "yesImport": "Yes, Import", - "lastBackup": "Last Backup", - "noBackupYet": "No backup yet", - "backupNow": "Backup Now", - "backupRestore": "Backup & Restore", - "viewBackups": "View Backups", - "hide": "Hide", - "backupRetentionDesc": "Database snapshots are created automatically before restore and every 15 minutes when data changes. Retention: 24 hourly + 30 daily backups with smart rotation.", - "loadingBackups": "Loading backups...", - "noBackupsYet": "No backups available yet. Backups will be created automatically when data changes.", - "backupsAvailable": "{count} backup(s) available", - "refresh": "Refresh", - "confirm": "Confirm?", - "yes": "Yes", - "no": "No", - "restore": "Restore", - "invalidFileType": "Invalid file type. Only .sqlite files are accepted.", - "exportFailed": "Export failed", - "exportFailedWithError": "Export failed: {error}", - "fullExportFailedWithError": "Full export failed: {error}", - "backupCreated": "Backup created: {file}", - "restoreSuccess": "Restored! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "importSuccess": "Database imported! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "minutesAgo": "{count}m ago", - "hoursAgo": "{count}h ago", - "daysAgo": "{count}d ago", - "backupReasonManual": "manual", - "backupReasonPreRestore": "pre-restore", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", - "noChangesSinceBackup": "No changes since last backup", - "backupFailed": "Backup failed", - "restoreFailed": "Restore failed", - "importFailed": "Import failed", - "errorDuringRestore": "An error occurred during restore", - "errorDuringImport": "An error occurred during import", - "modelPricing": "Model Pricing", - "modelPricingDesc": "Configure cost rates per model • All rates in $/1M tokens", + "exportDatabase": "Hamisha Hifadhidata", + "exportAll": "Hamisha Zote (.tar.gz)", + "importDatabase": "Leta Hifadhidata", + "confirmDbImport": "Thibitisha Uletaji wa Hifadhidata", + "confirmDbImportDesc": "Hatua hii itabadilisha data yote ya sasa na maudhui kutoka {file}. Nakala rudufu itaundwa kiotomatiki kabla ya kuleta.", + "yesImport": "Ndiyo, Leta", + "lastBackup": "Nakala Rudufu ya Mwisho", + "noBackupYet": "Bado hakuna nakala rudufu", + "backupNow": "Hifadhi Nakala Sasa", + "backupRestore": "Hifadhi na Urejeshe", + "viewBackups": "Tazama Nakala Rudufu", + "hide": "Ficha", + "backupRetentionDesc": "Picha za hifadhidata huundwa kiotomatiki kabla ya kurejesha na kila baada ya dakika 15 data inapobadilika. Uhifadhi: nakala 24 za kila saa + nakala 30 za kila siku kwa mzunguko mahiri.", + "loadingBackups": "Inapakia nakala rudufu...", + "noBackupsYet": "Bado hakuna nakala rudufu. Nakala rudufu zitaundwa kiotomatiki data inapobadilika.", + "backupsAvailable": "Nakala rudufu {count} zinapatikana", + "refresh": "Onyesha upya", + "confirm": "Thibitisha?", + "yes": "Ndiyo", + "no": "Hapana", + "restore": "Rejesha", + "invalidFileType": "Aina ya faili si sahihi. Faili za .sqlite pekee ndizo zinazokubalika.", + "exportFailed": "Uhamishaji nje umeshindikana", + "exportFailedWithError": "Uhamishaji nje umeshindikana: {error}", + "fullExportFailedWithError": "Uhamishaji kamili nje umeshindikana: {error}", + "backupCreated": "Nakala rudufu imeundwa: {file}", + "restoreSuccess": "Imerejeshwa! Miunganisho {connections}, nodi {nodes}, michanganyiko {combos}, funguo za API {apiKeys}.", + "importSuccess": "Hifadhidata imeletwa! Miunganisho {connections}, nodi {nodes}, michanganyiko {combos}, funguo za API {apiKeys}.", + "minutesAgo": "dakika {count} zilizopita", + "hoursAgo": "saa {count} zilizopita", + "daysAgo": "siku {count} zilizopita", + "backupReasonManual": "ya mkono", + "backupReasonPreRestore": "kabla ya kurejesha", + "connectionsCount": "{count, plural, one {muunganisho #} other {miunganisho #}}", + "noChangesSinceBackup": "Hakuna mabadiliko tangu nakala rudufu ya mwisho", + "backupFailed": "Uhifadhi wa nakala umeshindikana", + "restoreFailed": "Urejeshaji umeshindikana", + "importFailed": "Uletaji umeshindikana", + "errorDuringRestore": "Hitilafu imetokea wakati wa kurejesha", + "errorDuringImport": "Hitilafu imetokea wakati wa kuleta", + "modelPricing": "Bei za Modeli", + "modelPricingDesc": "Sanidi viwango vya gharama kwa kila modeli • Viwango vyote ni $/tokeni milioni 1", "pricingCoverage": "Ufikiaji", "pricingAuth": "Uthibitishaji", "pricingSort": "Panga", @@ -7329,7 +7332,7 @@ "configured": "imesanidiwa", "none": "Hakuna", "modelOverrideValuePlaceholder": "Thamani ya nambari", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Kwa Kiingereza, zikitenganishwa kwa koma, k.m. low, medium, high", "addKeyValue": "Ongeza thamani ya ufunguo", "noModelOverrides": "Hakuna ubatilishaji uliosanidiwa kwa modeli hii.", "modelOverrideLoadFailed": "Imeshindwa kupakia ubatilishaji wa modeli", @@ -7337,66 +7340,66 @@ "modelOverrideRemoved": "Ubatilishaji wa modeli umeondolewa", "modelOverrideSaveFailed": "Imeshindwa kuhifadhi ubatilishaji wa modeli", "modelOverrideRemoveFailed": "Imeshindwa kuondoa ubatilishaji wa modeli", - "registry": "Registry", - "priced": "Priced", - "searchProvidersModels": "Search providers or models...", - "showAll": "Show All", - "noProvidersMatch": "No providers match your search.", - "howPricingWorks": "How Pricing Works", - "cacheWrite": "Cache Write", - "unsaved": "unsaved", + "registry": "Rejista", + "priced": "Zenye Bei", + "searchProvidersModels": "Tafuta watoa huduma au modeli...", + "showAll": "Onyesha Zote", + "noProvidersMatch": "Hakuna watoa huduma wanaolingana na utafutaji wako.", + "howPricingWorks": "Jinsi Uwekaji Bei Unavyofanya Kazi", + "cacheWrite": "Uandishi wa Akiba", + "unsaved": "haijahifadhiwa", "resetDefaults": "Rekebisha mipangilio ya awali", - "saveProvider": "Save Provider", + "saveProvider": "Hifadhi Mtoa Huduma", "model": "Model", - "models": "models", - "moreProviders": "{count} more providers", - "withPricing": "with pricing configured", - "policiesCircuitBreakers": "Policies & Circuit Breakers", - "activeIssuesDetected": "Active issues detected", - "off": "Off", - "resetPricingConfirm": "Reset all pricing for {provider} to defaults?", - "pricingDescInput": "Input: tokens sent to the model", - "pricingDescOutput": "Output: tokens generated", - "pricingDescCached": "Cached: reused input (~50% of input rate)", - "pricingDescReasoning": "Reasoning: thinking tokens (falls back to Output)", - "pricingDescCacheWrite": "Cache Write: creating cache entries (falls back to Input)", - "pricingDescFormula": "Cost = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.", - "pricingSettingsTitle": "Pricing Settings", - "totalModels": "Total Models", - "active": "Active", - "costCalculation": "Cost Calculation", - "costCalculationDesc": "Costs are calculated based on token usage and pricing rates configured for each model.", - "pricingFormat": "Pricing Format", - "pricingFormatDesc": "All rates are in $/1M tokens (dollars per million tokens).", - "tokenTypes": "Token Types", - "inputTokenDesc": "Standard prompt tokens", - "outputTokenDesc": "Completion/response tokens", - "cachedTokenDesc": "Cached input tokens (typically 50% of input rate)", - "reasoningTokenDesc": "Special reasoning/thinking tokens (fallback to output rate)", - "cacheCreationTokenDesc": "Tokens used to create cache entries (fallback to input rate)", - "customPricingNote": "You can override default pricing for specific models. Custom overrides take priority over auto-detected pricing.", - "editPricing": "Edit Pricing", - "viewFullDetails": "View Full Details", + "models": "modeli", + "moreProviders": "watoa huduma wengine {count}", + "withPricing": "wenye bei zilizosanidiwa", + "policiesCircuitBreakers": "Sera na Vivunja Mzunguko", + "activeIssuesDetected": "Matatizo yanayotumika yamegunduliwa", + "off": "Imezimwa", + "resetPricingConfirm": "Ungependa kurejesha bei zote za {provider} kwenye chaguomsingi?", + "pricingDescInput": "Ingizo: tokeni zinazotumwa kwa modeli", + "pricingDescOutput": "Tokeo: tokeni zinazozalishwa", + "pricingDescCached": "Zilizohifadhiwa kwenye akiba: ingizo lililotumika tena (~50% ya kiwango cha ingizo)", + "pricingDescReasoning": "Utoaji wa hoja: tokeni za kufikiri (hutumia Tokeo kama chaguo mbadala)", + "pricingDescCacheWrite": "Uandishi wa Akiba: kuunda maingizo ya akiba (hutumia Ingizo kama chaguo mbadala)", + "pricingDescFormula": "Gharama = (input × input_rate) + (output × output_rate) + (cached × cached_rate) kwa kila tokeni milioni moja.", + "pricingSettingsTitle": "Mipangilio ya Bei", + "totalModels": "Jumla ya Modeli", + "active": "Inatumika", + "costCalculation": "Ukokotoaji wa Gharama", + "costCalculationDesc": "Gharama hukokotolewa kulingana na matumizi ya tokeni na viwango vya bei vilivyosanidiwa kwa kila modeli.", + "pricingFormat": "Muundo wa Bei", + "pricingFormatDesc": "Viwango vyote ni katika $/tokeni 1M (dola kwa kila tokeni milioni moja).", + "tokenTypes": "Aina za Tokeni", + "inputTokenDesc": "Tokeni za kawaida za kidokezo", + "outputTokenDesc": "Tokeni za ukamilishaji/jibu", + "cachedTokenDesc": "Tokeni za ingizo zilizohifadhiwa kwenye akiba (kwa kawaida 50% ya kiwango cha ingizo)", + "reasoningTokenDesc": "Tokeni maalum za utoaji wa hoja/kufikiri (hutumia kiwango cha tokeo kama chaguo mbadala)", + "cacheCreationTokenDesc": "Tokeni zinazotumika kuunda maingizo ya akiba (hutumia kiwango cha ingizo kama chaguo mbadala)", + "customPricingNote": "Unaweza kubadilisha bei chaguomsingi kwa modeli mahususi. Mabadiliko maalum yana kipaumbele kuliko bei zilizogunduliwa kiotomatiki.", + "editPricing": "Hariri Bei", + "viewFullDetails": "Tazama Maelezo Kamili", "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Uelekezaji Unaobadilika Kulingana na Kiasi", + "adaptiveVolumeRoutingDesc": "Ongeza au punguza miunganisho kiotomatiki kulingana na kiasi cha payload na shinikizo la kiwango cha upitishaji.", + "lkgpToggleTitle": "Mtoa Huduma wa Mwisho Aliyejulikana Kuwa Bora (LKGP)", + "lkgpToggleDesc": "Ikiwashwa, ruta hukumbuka mtoa huduma ambaye alitoa jibu lililofanikiwa mara ya mwisho na humjaribu kwanza katika maombi yanayofuata.", "echoRequestedModelTitle": "Rudisha jina la modeli lililoombwa kwenye majibu", "echoRequestedModelDesc": "Inapowezeshwa, uga wa `model` wa jibu unarudisha jina la lakabu au combo ambalo mteja aliomba badala ya jina la modeli ya juu (upstream). Hurekebisha wateja wakali (k.m. Claude Desktop) wanaokataa jibu ambalo modeli yake hailingani na ombi.", "webSearchRouteTitle": "Uelekezaji wa utafutaji wa wavuti", "webSearchRouteDesc": "Wakati ombi linajumuisha zana asili ya web_search, elekeza ombi zima kwenye modeli hii badala ya ile chaguomsingi — ni muhimu kwa watoa huduma ambao hawatekelezi zana ya seva ya web_search ya Anthropic. Acha wazi ili kulemaza.", "webSearchRoutePlaceholder": "Tafuta au chagua modeli…", "paidModelPatternWarning": "Mchoro huu unalingana tu na modeli zinazolipiwa — wezesha modeli zinazolipiwa au urekebishe mchoro.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Futa Akiba ya LKGP", + "lkgpCacheCleared": "Akiba ya LKGP imefutwa kwa mafanikio", + "lkgpCacheClearFailed": "Imeshindwa kufuta akiba ya LKGP", + "days": "Siku", + "lkgp": "Hali ya LKGP", + "lkgpDesc": "Mtoa Huduma Mzuri wa Mwisho Anayejulikana (Ustahimilivu unaotabirika)", + "maintenance": "Matengenezo", + "purgeExpiredLogs": "Futa Kumbukumbu Zilizopitwa na Muda", + "purgeLogsFailed": "Imeshindwa kufuta kumbukumbu", "logsDeleted": "{count, plural, =0 {Hakuna kumbukumbu zilizoisha muda zilizofutwa} one {Imefuta kumbukumbu # iliyoisha muda} other {Zimefutwa kumbukumbu # zilizoisha muda}}", "resetUsageData": "Weka Upya Data ya Matumizi", "resetUsageDataDesc": "Chagua ni muda gani uliopita unataka kufuta matumizi, kumbukumbu za maombi, na data ya uchanganuzi. Usanidi wa mtoa huduma, miunganisho, funguo za API, combos, na mipangilio vinahifadhiwa. Hatua hii haiwezi kubatilishwa.", @@ -7413,63 +7416,63 @@ "resetUsageFailed": "Imeshindwa kuweka upya data ya matumizi", "reset": "Weka Upya", "resetting": "Inaweka upya...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", - "pricingSourceLiteLLM": "LiteLLM (Community)", - "clearSyncedPricingConfirm": "Clear all synced pricing data? Provider defaults will be used instead.", - "clearSyncedPricingFailed": "Failed to clear synced pricing", - "pricingSourceUser": "User Override", - "pageDescription": "Manage application settings, model aliases, pricing, and routing rules", - "pricingSyncStatus": "Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", - "pricingLoadFailed": "Failed to load pricing data", - "pricingSyncDescription": "Automatically sync model pricing from external sources to keep cost calculations accurate", - "clearSyncedPricingSuccess": "Synced pricing data cleared", - "clearSyncedPricingFailedWithReason": "Failed to clear pricing: {reason}", - "pricingSourceDefault": "Built-in Default", - "pricingSyncSuccess": "Pricing synced successfully", - "enableSyncError": "Failed to toggle pricing sync", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "contextOpt": "Imeboreshwa kwa Muktadha", + "contextOptDesc": "Huelekeza kulingana na mahitaji ya dirisha la muktadha na urefu wa mazungumzo", + "cacheOpt": "Imeboreshwa kwa Akiba", + "cacheOptDesc": "Hudumisha kiambishi awali kilekile cha kidokezo kinachoweza kutumika tena kwenye akaunti ileile ya mtoa huduma", + "priorityDesc": "Uhamisho mbadala wa mfuatano—hujaribu mtoa huduma wa 1 kwanza, kisha mtoa huduma wa 2, na kuendelea", + "weightedDesc": "Husambaza trafiki kwa uzani wa asilimia miongoni mwa watoa huduma", + "modelRoutingTitle": "Kanuni za Uelekezaji wa Modeli", + "modelRoutingDesc": "Elekeza modeli kiotomatiki kwenye michanganyiko mahususi kwa kutumia ruwaza za glob", + "addRule": "Ongeza Kanuni", + "routeToCombo": "Elekeza kwenye Mchanganyiko", + "selectCombo": "Chagua mchanganyiko...", + "priorityHint": "Thamani ya juu = hukaguliwa kwanza. Tumia 10+ kwa ruwaza mahususi.", + "patternHint": "Tumia * kwa herufi zozote, ? kwa herufi moja. Haijalishi herufi kubwa au ndogo.", + "noRoutingRules": "Hakuna kanuni za uelekezaji zilizosanidiwa. Maombi hutumia mchanganyiko wa jumla kwa chaguo-msingi.", + "routingRuleHint": "Ongeza kanuni kama claude-opus* -> frontier-combo ili kuelekeza maombi kiotomatiki.", + "deleteRoutingRule": "Ungependa kufuta kanuni hii ya uelekezaji wa modeli?", + "exactMatchMode": "Ulinganifu Kamili", + "wildcardPatternMode": "Ruwaza ya Kibambo-Mbadala", + "exactMatchModeDesc": "Tumia lakabu kamili kwa vitambulisho vya modeli vilivyoacha kutumika au vilivyobadilishwa majina.", + "wildcardPatternModeDesc": "Tumia lakabu za vibambo-mbadala zenye * na ? wakati familia ya modeli inapaswa kuhusishwa na lengo moja.", + "noExactAliasesConfigured": "Hakuna lakabu za ulinganifu kamili zilizosanidiwa.", + "wildcardRulesTitle": "Kanuni za Vibambo-Mbadala", + "noWildcardAliasesConfigured": "Hakuna lakabu za vibambo-mbadala zilizosanidiwa.", + "overview": "Muhtasari", + "unknownError": "Hitilafu Isiyojulikana", + "pricingSourceLiteLLM": "LiteLLM (Jumuiya)", + "clearSyncedPricingConfirm": "Ungependa kufuta data yote ya bei iliyosawazishwa? Badala yake, chaguo-msingi za mtoa huduma zitatumika.", + "clearSyncedPricingFailed": "Imeshindwa kufuta bei iliyosawazishwa", + "pricingSourceUser": "Ubatilishaji wa Mtumiaji", + "pageDescription": "Dhibiti mipangilio ya programu, lakabu za modeli, bei na kanuni za uelekezaji", + "pricingSyncStatus": "Hali ya Usawazishaji", + "whitelist": "Orodha ya Walioruhusiwa", + "syncDisabled": "Usawazishaji Umezimwa", + "pricingLoadFailed": "Imeshindwa kupakia data ya bei", + "pricingSyncDescription": "Sawazisha bei za modeli kiotomatiki kutoka vyanzo vya nje ili kuweka hesabu za gharama kuwa sahihi", + "clearSyncedPricingSuccess": "Data ya bei iliyosawazishwa imefutwa", + "clearSyncedPricingFailedWithReason": "Imeshindwa kufuta bei: {reason}", + "pricingSourceDefault": "Chaguo-msingi Lililojengewa Ndani", + "pricingSyncSuccess": "Bei zimesawazishwa kwa mafanikio", + "enableSyncError": "Imeshindwa kubadilisha hali ya usawazishaji wa bei", + "syncEnabled": "Usawazishaji Umewashwa", + "blacklist": "Orodha ya Waliozuiwa", "pricingSourceModelsDev": "Models.dev", - "syncedModels": "Synced Models", - "budget": "Budget", - "pricingSyncTitle": "Pricing Sync", - "pricingResetFailedWithReason": "Failed to reset pricing: {reason}", - "tab": "Tab", - "pricingSavedProvider": "Pricing saved for {provider}", - "pricingSyncFailed": "Pricing sync failed", - "pricingSaveFailedWithReason": "Failed to save pricing: {reason}", - "pricingResetProvider": "Pricing reset for {provider}", - "nextSync": "Next Sync", - "pricingSyncFailedWithReason": "Pricing sync failed: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "syncedModels": "Modeli Zilizosawazishwa", + "budget": "Bajeti", + "pricingSyncTitle": "Usawazishaji wa Bei", + "pricingResetFailedWithReason": "Imeshindwa kuweka upya bei: {reason}", + "tab": "Kichupo", + "pricingSavedProvider": "Bei imehifadhiwa kwa {provider}", + "pricingSyncFailed": "Usawazishaji wa bei umeshindwa", + "pricingSaveFailedWithReason": "Imeshindwa kuhifadhi bei: {reason}", + "pricingResetProvider": "Bei imewekwa upya kwa {provider}", + "nextSync": "Usawazishaji Ujao", + "pricingSyncFailedWithReason": "Usawazishaji wa bei umeshindwa: {reason}", + "clearSyncedPricing": "Futa Bei Zilizosawazishwa", + "compressionTitle": "Mfinyazo wa Maagizo", + "compressionDesc": "Punguza matumizi ya tokeni kwa kufinyaza maagizo kabla ya kuyatuma kwa watoa huduma", "compressionGuidanceFullGuideLink": "Mwongozo kamili wa mgandamizo", "compressionGuidanceShow": "Maelezo", "compressionGuidanceHide": "Ficha maelezo", @@ -7485,14 +7488,14 @@ "tokenSaverInputCompressionDesc": "Andika upya historia ya gumzo inayostahili huku ukihifadhi msimbo, URL, na madhumuni.", "tokenSaverFineTunePrefix": "Rekebisha vizuri kila injini kwenye", "tokenSaverFineTuneSuffix": "au changanya injini kwa kila ombi kwenye", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", + "compressionMode": "Hali ya Mfinyazo", + "compressionModeOff": "Imezimwa", + "compressionModeOffDesc": "Hakuna mfinyazo unaotumika", + "compressionModeLite": "Nyepesi", + "compressionModeLiteDesc": "Upunguzaji wa nafasi tupu na mistari mitupu", + "compressionModeStandard": "Kawaida (Caveman)", + "compressionModeStandardDesc": "Mfinyazo unaotegemea kanuni wenye ruwaza zaidi ya 30, unaohifadhi vizuizi vya msimbo na URL", + "compressionModeAggressive": "Mkali", "compressionModeAggressiveDesc": "Muhtasari + mgandamizo wa matokeo ya zana + kuzeeka kwa kiwango cha juu zaidi", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Kupogoa kwa tokeni kwa hiari kwa hiari ya ndani ya SLM", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Idadi ya jumbe za hivi majuzi zilizowekwa katika kila daraja la uzee (juu = zimehifadhiwa zaidi)", "compressionToolStrategies": "Mikakati ya Matokeo ya Zana", "compressionToolStrategiesDesc": "Geuza mikakati ya kubana kwa aina tofauti za matokeo ya zana", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Mipangilio ya Jumla", + "compressionAutoTrigger": "Kizingiti cha Uanzishaji Kiotomatiki", + "compressionCacheTTL": "TTL ya Akiba", + "compressionPreserveSystem": "Hifadhi Agizo la Mfumo", "compressionPreserveSystemAlways": "Daima", "compressionPreserveSystemWhenNoCache": "Wakati hakuna kache", "compressionPreserveSystemNever": "Kamwe", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Imehifadhiwa", "compressionExclusionsCount": "{count, plural, one {# uondoaji} other {# uondoaji}} umewekwa", "compressionExclusionsEmpty": "Hakuna ubaguzi ulioanzishwa — kila mfano/kiungo kinastahili kubana (tabia ya default).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Usanidi wa Injini ya Caveman", + "compressionCavemanConfigDesc": "Rekebisha kwa kina injini ya ukandamizaji inayotegemea kanuni", "compressionCavemanPanelHint": "Kuwashwa/kuzimwa kwake na kiwango chake vimewekwa kwenye paneli:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Kandamiza Majukumu ya Ujumbe", + "compressionRoleUser": "Mtumiaji", + "compressionRoleAssistant": "Msaidizi", + "compressionRoleSystem": "Mfumo", + "compressionMinLength": "Urefu wa Chini wa Ujumbe", + "compressionSkipRules": "Kanuni za Kuruka Wakati wa Ukandamizaji", + "compressionSkipRulesDesc": "Bofya kanuni ili zirukwe wakati wa ukandamizaji", + "compressionPreservePatterns": "Hifadhi Miundo", + "compressionPreservePatternsDesc": "Miundo ya Regex ambayo haikandamizwi kamwe (mmoja kwa kila mstari)", + "compressionLogTitle": "Kumbukumbu ya Ukandamizaji", + "compressionLogEmpty": "Bado hakuna maombi yaliyokandamizwa. Takwimu za ukandamizaji zitaonekana hapa maombi yatakapochakatwa huku ukandamizaji ukiwa umewezeshwa.", "minutes": "dakika", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "Uchujaji wa matokeo ya zana unaotambua amri", + "compressionModeCodexResponses": "Matokeo ya zana ya Responses", + "compressionModeCodexResponsesDesc": "Ukandamizaji wa tahadhari kwa matokeo yanayostahiki ya shell, patch, search, build na JSON", + "compressionModeStacked": "Zilizopangwa kwa tabaka", + "compressionModeStackedDesc": "Uchujaji wa matokeo ya zana wa RTK ukifuatiwa na ukandamizaji wa ujumbe wa Caveman", + "qdrantTitle": "Qdrant (Kumbukumbu ya vekta)", + "qdrantDesc": "Si lazima. Huorodhesha kumbukumbu za kisemantiki katika kanzidata ya nje ya vekta ili kuzirejesha kwa haraka zaidi.", + "qdrantStatusActive": "Inatumika", + "qdrantStatusError": "Hitilafu", + "qdrantStatusDisabled": "Imezimwa", + "qdrantEnable": "Washa Qdrant", + "qdrantEnableDesc": "Ikishawashwa, mkakati wa kisemantiki/mseto unaweza kutumia Qdrant kurejesha kumbukumbu.", + "qdrantTesting": "Inajaribiwa...", + "qdrantTestConnection": "Jaribu muunganisho", + "qdrantSaved": "Usanidi umehifadhiwa", + "qdrantSaveError": "Imeshindwa kuhifadhi usanidi", + "qdrantHostHint": "Bila port. Mfano: 127.0.0.1 au http://qdrant", + "qdrantPort": "Mlango", + "qdrantPortHint": "Chaguo-msingi la Qdrant: 6333", + "qdrantCollectionHint": "Mahali ambapo pointi za kumbukumbu zitahifadhiwa.", + "qdrantEmbeddingModel": "Muundo wa embedding", + "qdrantHelpTitle": "Msaada wa usanidi wa haraka", + "qdrantHelpQuickTitle": "Usanidi wa haraka (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Host: IP/URL ya Qdrant, Port: 6333, Collection: omniroute_memory.", + "qdrantHelpStep2": "2. Ikiwa unatumia nvidia/llama-nemotron-embed-vl-1b-v2:free, tumia kipimo cha collection cha 2048.", + "qdrantHelpStep3": "3. Sehemu ya model: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Hifadhi, jaribu muunganisho, kisha jaribu utafutaji.", + "qdrantEmbeddingQuickSelect": "Chagua haraka kutoka kwa modeli zilizogunduliwa...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Muundo: provider/model. Kitambulisho cha mtoa huduma lazima kiwe kimesanidiwa.", + "qdrantApiKeyPlaceholderKeep": "(acha wazi ili kuhifadhi ufunguo wa sasa)", + "qdrantApiKeyPlaceholderOptional": "(acha wazi ikiwa haitumiki)", + "qdrantSaveHint": "Kidokezo: hariri host/port/collection/model na ubofye Hifadhi. Ufunguo wa API ni wa hiari.", + "qdrantSearchTestTitle": "Jaribio la utafutaji", + "qdrantSearchTestDesc": "Huzalisha embedding na kutafuta katika Qdrant.", + "qdrantSearchPlaceholder": "Mfano: mapendeleo ya mtumiaji, historia, n.k.", + "qdrantNoResults": "Hakuna matokeo (au Qdrant haijasanidiwa).", + "qdrantCleanupTitle": "Uhifadhi na usafishaji", + "qdrantCleanupDesc": "Huondoa pointi zilizopitwa na muda na za zamani kulingana na", + "searching": "Inatafuta...", + "cleaning": "Inasafisha...", + "cleanNow": "Safisha sasa", "optional": "Hiari", "current": "Ya sasa", "remove": "Ondoa", @@ -7600,19 +7603,19 @@ "resilienceScope": "Upeo:", "resilienceTrigger": "Anzisha:", "resilienceEffect": "Athari:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Foleni na Kasi ya Maombi", + "resilienceAutoEnableApiKeyProviders": "Washa kiotomatiki kwa watoa huduma wanaotumia ufunguo wa API", + "resilienceRequestsPerMinute": "Maombi kwa dakika", + "resilienceMinTimeBetweenRequests": "Muda wa chini kabisa kati ya maombi", + "resilienceConcurrentRequests": "Maombi ya wakati mmoja", + "resilienceConnectionScopeConcurrentRequests": "Maombi ya wakati mmoja kwa muunganisho/upeo wa mgao", + "resilienceGlobalConcurrentRequests": "Maombi ya juu ya kimataifa ya wakati mmoja (0 = imezimwa)", "resilienceMaxQueueWaitTime": "Muda wa juu zaidi wa kusubiri kwenye foleni", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Muda msingi wa kusubiri", + "resilienceUseUpstreamRetryHints": "Tumia vidokezo vya kujaribu tena kutoka kwa huduma ya juu", + "resilienceDefaultPerProvider": "Chaguomsingi (kwa kila mtoa huduma)", + "resilienceAlwaysOn": "Imewashwa kila wakati", + "resilienceAlwaysOff": "Imezimwa kila wakati", "routingRemoveEntry": "Ondoa kiingilio", "routingNeedlesSubstrings": "Sindano (kamba ndogo zinazolingana)", "routingCaseSensitive": "Kesi nyeti", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "Inatumwa kwa modeli ya uwezo wa kuona kabla ya maelezo yaliyotolewa kuingizwa tena kwenye ombi la asili.", "visionBridgeTimeoutMs": "Muda umeisha (ms)", "visionBridgeMaxImagesPerRequest": "Upeo wa Picha kwa Kila Ombi", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Hatua za juu kabisa za kuongeza muda wa kusubiri", + "resilienceProviderBreakerTitle": "Kivunja Mzunguko kwa Kila Mtoa Huduma", + "resilienceFailureThreshold": "Kiwango cha kushindwa", + "resilienceDegradationThreshold": "Kiwango cha kuzorota", "resilienceResetTimeout": "Weka upya muda wa kuisha", "resilienceFailureThresholdLabel": "Kizingiti cha kushindwa", "resilienceResetTimeoutLabel": "Weka upya muda wa kuisha", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Muda wa Kusubiri wa Muunganisho", "resilienceUseUpstreamRetryHintsLabel": "Tumia vidokezo vya kujaribu tena mkondo wa juu", "resilienceUseUpstream429BreakerLabel": "Tumia vidokezo 429 vya juu (kivunjaji)", "resilienceMaxBackoffStepsLabel": "Hatua za kurudi nyuma", "resilienceYes": "Ndiyo", "resilienceNo": "Hapana", - "resilienceDefault": "Default", + "resilienceDefault": "Chaguomsingi", "storageDatabaseBackupRetention": "Uhifadhi wa hifadhidata", "storageDatabaseBackups": "Hifadhi rudufu za hifadhidata", "storageBackupRetentionDescription": "Hifadhi rudufu za kiotomatiki za SQLite zimehifadhiwa kwenye", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "JSON ya zamani imeingizwa kwa mafanikio!", "jsonImportFailed": "Imeshindwa kuingiza JSON", "jsonImportError": "Hitilafu wakati wa kuingiza JSON", + "jsonImportAuthRequired": "Uthibitishaji unahitajika ili kuleta usanidi wa zamani wa JSON. Tafadhali ingia au ukamilishe usanidi kwanza.", + "databaseSettingsAuthRequiredTitle": "Uthibitishaji unahitajika", + "databaseSettingsAuthRequiredBody": "Mipangilio ya hifadhidata na uletaji wa JSON vinapatikana tu kwa msimamizi aliyethibitishwa. Ingia au ukamilishe usanidi ili kuvitazama na kuvihariri.", + "databaseSettingsAuthRequiredCta": "Ingia", "storagePurgeData": "Futa Data", "storagePurgeDataDesc": "Futa rekodi zote mara moja bila kutumia ukaguzi wa muda wa kuweka. Tumia kwa tahadhari.", "storageRetentionCleanup": "Mipangilio ya Muda wa Kuweka", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "hali: {mode}", "compressionAdaptiveOff": "Bajeti ya muktadha inayobadilika: imezimwa (kichochezi cha zamani cha kiotomatiki)", "compressionAdaptiveTarget": "Inayobadilika ({mode}, sera: {policy}) — lengo ≈ tokeni {target, number} (kwa dirisha la tokeni {contextLimit, number})", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Bajeti ya muktadha inayobadilika", + "compressionAdaptiveModeOff": "Imezimwa (kichochezi kiotomatiki cha zamani)", + "compressionAdaptiveModeFloor": "Kiwango cha chini (hakikisha kila mara kinatoshea)", + "compressionAdaptiveModeReplace": "Badilisha kichochezi kiotomatiki", + "compressionAdaptivePolicy": "Sera ya bajeti", + "compressionAdaptivePolicyReserve": "Hifadhi nafasi kwa matokeo", + "compressionAdaptivePolicyPercentage": "Asilimia ya dirisha", + "compressionAdaptivePolicyAbsolute": "Bajeti kamili ya tokeni", "compressionOutputStylesDescription": "Ingiza maagizo ya kuunda majibu bila kuandika upya matokeo ya mtoa huduma. Changanya kwa uhuru.", "mcpAccessibilityDescription": "Inaweka mipaka ya matokeo ya zana ya MCP (hifadhi tofauti).", "compressionStylesTileSummary": "{tokens, number} tokeni zimehifadhiwa · {runs, plural, one {# umewekewa mtindo} other {# imewekewa mtindo}}", @@ -7866,11 +7873,11 @@ "description": "Uchujaji wa matokeo ya amri." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Matokeo ya Zana ya Responses", + "description": "Mfinyazo wa tahadhari kwa matokeo yanayotumika ya zana ya Responses." }, "headroom": { - "label": "Headroom", + "label": "Nafasi ya ziada", "description": "Ushindiliaji wa JSON ya jedwali." }, "relevance": { @@ -7878,7 +7885,7 @@ "description": "Upimaji wa sentensi za uchimbaji dhidi ya hoja ya mwisho ya mtumiaji." }, "caveman": { - "label": "Caveman", + "label": "Mtu wa pangoni", "description": "Ushindiliaji wa nathari unaozingatia kanuni." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "Ngazi ya YAGNI: mabadiliko madogo zaidi yanayofanya kazi, bila dhahania zisizoombwa." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Mkia wa farasi (msanidi programu mwandamizi mvivu)", + "description": "Nidhamu ya msanidi programu mwandamizi mvivu: panda ngazi ya YAGNI, rekebisha chanzo cha tatizo, tumia tofauti ndogo zaidi inayofanya kazi." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "Nina ADHD (hatua kwanza)", + "description": "Matokeo yanayotanguliza hatua: hatua inayofuata huanza, hatua hupewa nambari, hatua moja mahususi inayofuata, bila utangulizi." }, "terse-cjk": { "label": "CJK Fupi (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLProxyAPI Fallback", "cliproxyapiEnableFallback": "Washa Fallback ya CLProxyAPI", "cliproxyapiUrl": "URL ya CLProxyAPI", + "headroomProxyTitle": "Proksi ya Headroom", + "headroomProxyDesc": "URL ya proksi ya hiari ya Headroom inayookoa tokeni. Ikiwa tupu, hutumia HEADROOM_URL au http://localhost:8787.", + "headroomProxyUrl": "URL ya Headroom", + "headroomProxyUrlHint": "URL za loopback zinaweza kuanzishwa kutoka kwenye ukurasa huu. URL za nje hukaguliwa tu.", + "headroomProxySave": "Hifadhi", + "headroomProxyStart": "Anzisha", + "headroomProxyStop": "Simamisha", + "headroomProxyExternalHint": "URL hii si ya loopback, kwa hivyo OmniRoute haitaanzisha CLI ya ndani.", "cliproxyapiStatus": "Hali ya CLProxyAPI", "cliproxyapiNotDetected": "Haijatambuliwa", "cliproxyapiImportAuthTitle": "Leta akaunti kutoka CLIProxyAPI", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "Kimataifa inject service_tier=priority kwa ajili ya maombi ya OpenAI Codex.", "codexFastTierHint": "Ikiwezeshwa, OmniRoute inaongeza service_tier=priority kwa maombi ya nje ya Codex kwa miunganisho ambayo tayari haijabainisha kiwango. Kiwango cha kipaumbele kinahitaji ufunguo wa OpenAI Enterprise API au njia ya ChatGPT-auth Codex; aina zingine muhimu zitapokea hitilafu inayohusiana na tier kutoka OpenAI. Mipangilio ya kila muunganisho kwenye ukurasa wa mtoaji wa Codex huchukua nafasi ya kwanza.", "codexFastTierSaveError": "Imeshindwa kusasisha mpangilio wa Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Ping Otomatiki ya Mgao wa Codex", + "codexAutoPingDesc": "Jijumuishe kwa kila muunganisho: hutuma ombi dogo mara tu baada ya dirisha la kikao cha Codex kuwekwa upya ili iwe tayari unapohitaji.", + "codexAutoPingWarning": "Hutumia kiasi kidogo cha mgao halisi wa Codex kwa kila ping. Imezimwa kwa chaguo-msingi — iwashe tu kwa miunganisho unayoitegemea kikamilifu.", + "codexAutoPingSaveError": "Imeshindwa kusasisha mpangilio wa Ping Otomatiki ya Codex", + "codexAutoPingToggleAria": "Washa au zima ping otomatiki ya mgao wa Codex kwa {connection}", "codexFastTierTierLabel": "Daraja la huduma", "codexFastTierTierPriority": "Kipaumbele", "codexFastTierTierFlex": "Flex", @@ -8001,7 +8016,7 @@ "codexFastTierModelsLabel": "Modeli za daraja la kasi", "codexFastTierModelsHint": "Ni modeli zilizoteuliwa pekee zinazopokea service_tier wakati Fast Tier imewashwa.", "codexFastTierModelCheckbox": "Washa Fast Tier kwa {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Hali ya Haraka ya Claude", "claudeFastModeDesc": "Chagua maombi ya Claude yaliyochaguliwa katika Hali ya Haraka ya Anthropic (kasi:\"haraka\").", "claudeFastModeHint": "Anthropic haiauni Rasmi Hali ya Haraka kwa wateja wa mtindo wa SDK. Inapowashwa, OmniRoute husonga mbele kichwa cha X-CPA-Force-Fast-Mode ili muundo wa CLIProxyAPI uliooanishwa uweze kuchagua kuingia kuharibu kiingilio. Miundo ya Opus iliyoorodheshwa pekee ndiyo inayowekwa na hundi ya upande wa mteja wa Anthropic. Kiwango cha usajili, Mpango wa Juu na salio la mkopo la Hali ya Haraka bado zinatekelezwa kwa upande wa seva - Anthropic inaweza kurudisha nje_ya_mikopo hata kigeuzi kikiwa kimewashwa.", "claudeFastModeModelsLabel": "Inatumika kwa miundo ({count})", @@ -8129,9 +8144,9 @@ "resilienceCredentialHealthInterval": "Muda wa ukaguzi wa kimataifa", "resilienceCredentialHealthEveryMinutes": "Kila dakika {minutes}", "resilienceCredentialHealthHint": "0 inazima uchunguzi wa nyuma (kiwango cha juu dakika 1440 = saa 24). Miunganisho yenye thamani yake ya Ukaguzi wa Afya hupuuzia chaguo-msingi hili la kimataifa; 0 kwenye muunganisho inautoa hata uchunguzi wa kimataifa ukiwa umewashwa.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", - "sessionAffinityTitle": "Session affinity", + "forcedFingerprintTitle": "Huwashwa kila wakati kwa {provider} — inahitajika kwa usalama wa akaunti ya OAuth; haiwezi kuzimwa.", + "forcedFingerprintBadge": "Inahitajika", + "sessionAffinityTitle": "Ushikamanifu wa kipindi", "sessionAffinityDesc": "Huweka mazungumzo moja kwenye akaunti ile ile kwa idadi hii ya sekunde, kwa mtoa huduma yeyote. 0 huizima.", "sessionAffinityTtl": "TTL ya Affinity (sekunde)", "resetAwareQuotaCacheTitle": "Weka upya akiba ya mgao wa kufahamu", @@ -8196,24 +8211,24 @@ "modelLockoutBaseCooldownDescription": "Muda wa awali wa kupumzika katika milisekunde kabla ya muundo kujaribiwa tena.", "modelLockoutMaxCooldown": "Muda wa Juu wa Kupumzika (ms)", "modelLockoutMaxCooldownDescription": "Muda wa juu zaidi wa cooldown katika milisekunde. Huzuia kufungiwa nje kwa muda mrefu kupita kiasi.", - "modelLockoutExponentialBackoff": "Exponential Backoff", + "modelLockoutExponentialBackoff": "Usitishaji unaoongezeka kwa kasi", "modelLockoutExponentialBackoffDescription": "Inapowashwa, kila hitilafu inayofuatana huongeza muda wa cooldown kwa kipeo.", "modelLockoutMaxBackoffSteps": "Hatua za Juu Zaidi za Backoff", "modelLockoutMaxBackoffStepsDescription": "Idadi ya juu zaidi ya hatua za backoff kabla ya cooldown kuacha kuongezeka. Kikomo cha Max Cooldown hufikiwa kwanza katika usanidi mwingi, na kufanya hii kuwa ukomo wa usalama wakati Max Cooldown inapoongezwa.", "disableSessionStickiness": "Zima session stickiness", "disableSessionStickinessDesc": "Mchanganyiko wa round-robin na bila mpangilio huzunguka hadi kwenye muunganisho tofauti kwa kila ombi badala ya kubandika mazungumzo yote kwenye muunganisho mmoja kwa heshi ya ujumbe wa kwanza. Acha ikiwa imezimwa ili kuhifadhi matokeo ya prompt-cache kwa mazungumzo ya zamu nyingi. Ubatilishaji wa kila mchanganyiko una kipaumbele.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Uelekezaji kulingana na ukaribu wa prompt-cache", + "promptCacheAffinityDesc": "Pendelea akaunti ileile ya mtoa huduma kwa funguo zinazolingana za prompt-cache huku ukihifadhi uhamishaji mbadala kulingana na hali na kiwango cha matumizi.", + "reasoningTokenBuffer": "Akiba ya tokeni za ureasonishaji", + "reasoningTokenBufferDesc": "Ruhusu uelekezaji mseto kuongeza nafasi ya ziada ya max_tokens kwa miundo inayojulikana ya ureasonishaji pekee wakati akiba kamili inatoshea ndani ya kikomo cha matokeo kinachojulikana.", + "zeroLatencyOptimizations": "Maboresho ya muda-sifuri wa kusubiri", + "zeroLatencyOptimizationsDesc": "Jiunge na hedging, urukaji wa TTFT wa utabiri, na ubanaji wa kuzuia mapema wa ombi mbadala. Acha ikiwa imezimwa ili kuzuia vipengele hivi vya muda wa kusubiri kushindanishwa na malengo au kubana maombi mbadala.", "credentialRedaction": "Ufichaji wa Vitambulisho", "credentialRedactionDesc": "Ficha funguo za API, tokeni, na siri kutoka kwa muktadha uliotumwa kwa watoa huduma na kutoka kwa majibu.", "enableCredentialRedaction": "Washa ufichaji wa vitambulisho", "enableCredentialRedactionDesc": "Husafisha funguo za API, tokeni, funguo za faragha, na JWT kutoka kwa ujumbe, miito ya zana, na majibu.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Usawazishaji wa Kiotomatiki Umezimwa", + "pricingAutoSyncEnabled": "Usawazishaji wa Kiotomatiki Umewashwa", "modalityBridgeIntro": "Badilisha maudhui ya aina nyingi kuwa maandishi kabla hayajafikia modeli za maandishi pekee. Madaraja ya kuona, sauti na video yanapatikana na yanaweza kusanidiwa.", "modalityBridgeVisionTab": "Maono", "modalityBridgeAudioTab": "Sauti", @@ -8281,7 +8296,7 @@ "modalityBridgeVideoModelInherited": "Tumia modeli ya Daraja la kuona", "modalityBridgeVideoFrameCount": "Fremu kwa kila video", "modalityBridgeVideoMaxVideos": "Idadi ya juu ya video kwa kila ombi", - "modelRoutingDescriptionPlaceholder": "Route Opus models to frontier combo", + "modelRoutingDescriptionPlaceholder": "Elekeza miundo ya Opus kwenye mseto wa frontier", "cliproxyapiFallbackCodes": "M codes ya Kuanguka ya Cliproxyapi", "cliproxyapiFallbackDescription": "Maelezo ya Kurejelea ya Cliproxyapi", "cliproxyapiHealthLabel": "Cliproxyapi Afya Lebo", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "Afya", "cliproxyapiPort": "Bandari", "qdrantHost": "Mwenyeji", - "qdrantCollection": "Mkusanyiko", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Mkusanyiko" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "Injini ya RTK", + "description": "Ubanaji unaozingatia amri kwa matokeo ya zana, kumbukumbu za terminal na matokeo ya uundaji.", + "enabled": "Imewashwa", + "intensity": "Kiwango", + "intensityMinimal": "Kidogo zaidi", + "intensityStandard": "Kawaida", + "intensityAggressive": "Kikali", + "toolResults": "Matokeo ya zana", + "assistantMessages": "Ujumbe wa msaidizi", + "codeBlocks": "Vitalu vya msimbo", "filterCatalog": "Katalogi ya Kichujio", "filterCatalogDesc": "Vichujio vya pato vinavyopatikana kulingana na kategoria", "guidedConfig": "Usanidi", "guidedConfigDesc": "Rekebisha jinsi RTK inavyochuja pato lako la mwisho", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Idadi ya juu ya mistari", + "maxChars": "Idadi ya juu ya herufi", "deduplicateThreshold": "Deduplicate kizingiti", "customFilters": "Vichungi maalum", "detectedType": "Aina iliyogunduliwa", @@ -8402,24 +8409,24 @@ "rawOutputFailures": "Kushindwa", "rawOutputAlways": "Daima", "rawOutputMaxBytes": "Pato ghafi max byte", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", - "presetHigh": "Aggressive", + "filterTesting": "Majaribio ya Kichujio", + "pasteOutput": "Bandika matokeo ya zana ili kujaribu uchujaji...", + "presetHigh": "Kikali", "presetLow": "Mwanga", "presetMaxChars": "Upeo wa herufi za matokeo", "presetMaxLines": "Mistari ya pato la juu", "presetMedium": "Kawaida", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Endesha", + "result": "Matokeo", + "previewEmpty": "Endesha sampuli ili kuhakiki matokeo ya RTK.", + "detected": "Imegunduliwa", "masterSwitchOffAlert": "Swichi kuu ya Token Saver IMEZIMWA — mipangilio hii haitaathiri maombi hadi uiwashe kutoka kwenye ukurasa wa Endpoint.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Tokeni zilizochujwa", + "filtersActive": "Vichujio vinavyotumika", + "requests": "Maombi", + "avgSavings": "Wastani wa uokoaji", "simpleMode": "Rahisi", - "advancedMode": "Advanced", + "advancedMode": "Mahiri", "searchFilters": "Tafuta vichujio...", "tooltipDedup": "Jinsi ya kuondoa mistari iliyorudiwa kwa ukali.", "tooltipMaxChars": "Upeo wa herufi kwa kila pato.", @@ -8499,7 +8506,7 @@ "description": "Ushindiliaji wa jedwali usiopoteza data wa safu za JSON zinazofanana zenye alama za wazi za idadi ya safu." }, "session-dedup": { - "name": "Session Dedup", + "name": "Uondoaji wa Rudufu wa Kipindi", "description": "Uondoaji wa nakala za vizuizi vya zamu mbalimbali kwa kutumia viashiria vya maudhui vinavyoweza kurejeshwa." }, "ccr": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Michanganyiko ya Mfinyazo", + "description": "Bainisha jinsi injini zinavyounganishwa kwa hali tofauti za uelekezaji.", + "createCombo": "Unda Mchanganyiko wa Mfinyazo", + "editCombo": "Hariri", + "deleteCombo": "Futa", + "deleteConfirm": "Ufute mchanganyiko huu wa mfinyazo?", + "pipeline": "Mtiririko wa Uchakataji", + "addStep": "Ongeza Hatua", + "removeStep": "Ondoa", + "name": "Jina", + "descriptionField": "Maelezo", + "languagePacks": "Vifurushi vya Lugha", + "outputMode": "Hali ya Tokeo", + "assignToRouting": "Kabidhi kwa Michanganyiko ya Uelekezaji", + "noAssignments": "Hakuna michanganyiko ya uelekezaji inayopatikana", + "default": "Chaguomsingi", + "setAsDefault": "Weka kuwa Chaguomsingi", + "save": "Hifadhi", + "cancel": "Ghairi", + "enabled": "Imewashwa", "loading": "Inapakia…", "hubTitle": "Kitovu cha Mbano", "hubDescription": "Chagua wasifu gani wa mbano utakaofanya kazi kimataifa.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "Kwa sasa inapatikana kwa Claude (Anthropic) pekee. Ni hali iliyokabidhiwa: mtoa huduma hufuta vizuizi vya zamani vya matumizi ya zana upande wa seva — hatuandiki upya ujumbe. Haiathiri watoa huduma wengine.", "namedCombos": "Michanganyiko yenye majina", "namedCombosDescription": "Hifadhi mifereji tofauti ya data na uikabidhi kwa michanganyiko maalum ya uelekezaji.", + "activeProfileMasterSwitchOffWarning": "Wasifu unaotumika hapa chini hautaendeshwa hadi swichi kuu ya \"Mfinyazo wa Prompti\" iwashwe.", + "activeProfileMasterSwitchOffCta": "Iwashe katika Mipangilio", "comboNamePlaceholder": "Jina la mchanganyiko", "descriptionPlaceholder": "Maelezo", "nameRequired": "Weka jina la mchanganyiko kabla ya kuhifadhi.", @@ -8669,21 +8678,19 @@ "deleteNamedConfirm": "Futa mchanganyiko “{name}”?", "intensityLite": "Lite", "intensityFull": "Kamili", - "intensityUltra": "Ultra", + "intensityUltra": "Bora zaidi", "active": "Inatumika", "languagePacksList": "Vifurushi vya lugha: {packs}", "dragToReorder": "Buruta ili kupanga upya hatua", "engine": "Injini", - "intensity": "Ukali", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Ukali" }, "compressionStudio": { "noRun": "Hakuna uendeshaji wa mbano unaopatikana.", "liveDataHint": "Data ya moja kwa moja inafika kupitia chaneli ya mbano ya WebSocket.", "cockpitView": "Mwonekano wa Cockpit", "canvas": "Turubai", - "waterfall": "Waterfall", + "waterfall": "Mtiririko wa Hatua kwa Hatua", "replayDone": "Uchezaji upya umekamilika", "pauseReplay": "Sitisha uchezaji upya", "playReplay": "Cheza uchezaji upya", @@ -8705,7 +8712,7 @@ "run": "Endesha", "laneRejected": "imekataliwa: {reason}", "error": "hitilafu", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Onyesho la awali la mtiririko uliounganishwa limeshindwa: {reason}", "combinedFlow": "Mtiririko uliounganishwa", "eachLayer": "Kila safu kando", "diff": "Tofauti", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Wezesha injini", "enableDescription": "Hufanya kazi mwisho kwenye mrundikano (baada ya RTK/Caveman kusafisha maandishi, OmniGlyph hubadilisha yaliyosalia kuwa picha) na pia hufanya kazi pekee kupitia hali ya omniglyph. Hii ni hakiki na inabaki imezimwa kwa chaguomsingi hadi uthibitishaji wa mwisho hadi mwisho ukamilike.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Wasifu wa mfinyazo", + "profileDescription": "Wasifu ni kikomo cha juu, si cha chini: wasifu mkali zaidi hauwezi kulegezwa tena kwa ubatilishaji wa hatua mahususi. Kama ilivyopimwa kwenye msimbo huu: kwa hali salama kwa uandishi wa msimbo au iliyosawazishwa, kipindi ambacho bado hakijakusanya historia hakifinyazi chochote, kwa sababu zote mbili huongeza kiwango cha chini cha herufi na kuacha prompti ya mfumo, skima za zana na matokeo ya zana katika hali asilia.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Mkali (chaguomsingi)", + "description": "Sera iliyopimwa na risiti zilizochapishwa. Huunda taswira za prompti ya mfumo, nyaraka za zana na historia yenye maelezo mengi." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Iliyosawazishwa", + "description": "Hudumisha hali ya moja kwa moja katika muundo wake asilia na kulinda zamu 8 za mwisho; hubana tu historia ya zamani iliyofungwa." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Salama kwa uandishi wa msimbo", + "description": "Hudumisha mamlaka, miundo ya zana na matokeo ya moja kwa moja ya zana katika muundo wake asilia, huku ikilinda zamu 12 za mwisho. Haibani chochote hadi kipindi kikusanye historia." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Upitishaji wa moja kwa moja", + "description": "Huelekeza bila kubadilisha. Injini inarukwa na ombi linasambazwa bila kuguswa." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Chagua wasifu wa ubanaji wa OmniGlyph", "saved": "Imehifadhiwa.", "saveFailed": "Imeshindwa kuhifadhi.", "enableAria": "Wezesha injini ya OmniGlyph", @@ -8902,40 +8909,40 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Ubanaji wa ujumbe unaotegemea kanuni, vifurushi vya lugha, takwimu za uchanganuzi na vidhibiti vya hali ya matokeo.", "advancedConfig": "Usanidi wa hali ya juu", "advancedConfigDesc": "Fine-tune compression tabia", "aggressiveSettings": "Mipangilio ya Aggressive", "aggressiveSettingsDesc": "Upeo wa mbano na ubadilishanaji wa ubora unaowezekana", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Maombi", + "tokensSaved": "Tokeni zilizookolewa", + "savingsPercent": "Asilimia ya uokoaji", + "avgLatency": "Wastani wa ukawiaji", + "languagePacks": "Vifurushi vya Lugha", + "languagePacksDesc": "Washa kanuni za ubanaji kwa lugha mahususi.", "labelAutoTrigger": "Finyaza kiotomatiki wakati muktadha unazidi", "labelCompressionRate": "Nguvu ya kukandamiza", "labelMaxTokens": "Tokeni lengwa kwa kila ujumbe", "labelMinLength": "Urefu wa chini wa ujumbe", "labelMinSavings": "Kiwango cha chini cha tokeni za kuhifadhi", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Imewashwa", + "autoDetect": "Tambua lugha kiotomatiki", + "rulesCount": "Kanuni {count}", "inputCompressionTitle": "Mfinyazo wa ingizo", "inputCompressionDesc": "Andika upya historia ya gumzo kwa maneno mafupi zaidi. Hupunguza tokeni za ingizo kwa ~50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Takwimu za Uchanganuzi wa Ubanaji", + "noAnalytics": "Bado hakuna takwimu za uchanganuzi wa ubanaji.", "masterDisabledWarning": "Swichi kuu ya Token Saver imezimwa — mipangilio hii haitaathiri maombi hadi uwashe kutoka kwenye Mipangilio ya Mfinyazo au uibadilishe hapa.", "outputMode": "Modi ya Pato", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Hali ya Matokeo", "quickSettings": "Mipangilio ya Haraka", "quickSettingsDesc": "Mipangilio ya msingi ya ukandamizaji ili kuanza", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Urukaji wa Kiotomatiki kwa Uwazi", + "bypassConditions": "Masharti ya kuruka", "bypassConditionsList": "usalama, usioweza kutenduliwa, ufafanuzi, unaozingatia utaratibu", "simpleMode": "Rahisi", - "advancedMode": "Advanced", + "advancedMode": "Ya Kina", "tooltipAutoTrigger": "Fina kiotomatiki wakati muktadha unazidi ukubwa huu.", "tooltipCompressionRate": "0.0 = hakuna, 1.0 = upeo. 0.5 = usawa.", "tooltipMaxTokens": "Hesabu ya ishara inayolengwa baada ya kukandamizwa. Chini = mkali zaidi.", @@ -8944,52 +8951,52 @@ "ultraSettings": "Mipangilio ya Juu", "ultraSettingsDesc": "Mfinyazo wa kisemantiki unaoendeshwa na SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Jibu kwa ufupi. Hifadhi istilahi za kiufundi, msimbo, hitilafu, URLs na vitambulisho.", + "full": "Jibu kwa maneno machache na kwa ufupi. Hifadhi maudhui yote ya kiufundi.", + "ultra": "Jibu kwa ufupi sana ukitumia vifupisho vya kawaida vya kiufundi. Hifadhi alama halisi." } }, "translator": { - "title": "Translator", - "metaTitle": "Translator Playground | OmniRoute", - "metaDescription": "Debug, test, and visualize API format translations between providers", - "playgroundTitle": "Translator Playground", - "playground": "Playground", - "realtime": "Real-Time Translation Activity", + "title": "Kitafsiri", + "metaTitle": "Mazingira ya Majaribio ya Kitafsiri | OmniRoute", + "metaDescription": "Tatua hitilafu, jaribu na onyesha kwa taswira tafsiri za miundo ya API kati ya watoa huduma", + "playgroundTitle": "Mazingira ya Majaribio ya Kitafsiri", + "playground": "Mazingira ya Majaribio", + "realtime": "Shughuli za Tafsiri za Wakati Halisi", "chatTester": "Chat Tester", - "testBench": "Test Bench", - "liveMonitor": "Live Monitor", - "modeDescriptionPlayground": "Paste any API request body and see how OmniRoute translates it between provider formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", - "modeDescriptionChatTester": "Send real chat requests through OmniRoute and inspect the full round-trip: input, translated request, provider response, and translated output.", - "modeDescriptionTestBench": "Run predefined scenarios and compare compatibility across providers and models.", - "modeDescriptionLiveMonitor": "Watch translation events in real time as requests flow through OmniRoute.", - "modeDescriptionFallback": "Debug, test, and visualize how OmniRoute translates API requests between providers.", - "recentTranslations": "Recent Translations", - "noTranslations": "No translations yet", - "source": "Source", - "target": "Target", - "time": "Time", + "testBench": "Jukwaa la Majaribio", + "liveMonitor": "Ufuatiliaji wa Moja kwa Moja", + "modeDescriptionPlayground": "Bandika mwili wowote wa ombi la API na uone jinsi OmniRoute inavyolitafsiri kati ya miundo ya watoa huduma (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", + "modeDescriptionChatTester": "Tuma maombi halisi ya gumzo kupitia OmniRoute na ukague mzunguko kamili: ingizo, ombi lililotafsiriwa, jibu la mtoa huduma na tokeo lililotafsiriwa.", + "modeDescriptionTestBench": "Endesha hali zilizofafanuliwa mapema na ulinganishe uoanifu kati ya watoa huduma na modeli.", + "modeDescriptionLiveMonitor": "Tazama matukio ya tafsiri kwa wakati halisi maombi yanapopita kupitia OmniRoute.", + "modeDescriptionFallback": "Tatua hitilafu, jaribu na uonyeshe kwa taswira jinsi OmniRoute inavyotafsiri maombi ya API kati ya watoa huduma.", + "recentTranslations": "Tafsiri za Hivi Karibuni", + "noTranslations": "Bado hakuna tafsiri", + "source": "Chanzo", + "target": "Lengo", + "time": "Muda", "model": "Model", "status": "Status", - "latency": "Latency", - "totalTranslations": "Total Translations", - "successful": "Successful", - "errors": "Errors", - "avgLatency": "Avg Latency", + "latency": "Ucheleweshaji", + "totalTranslations": "Jumla ya Tafsiri", + "successful": "Zilizofaulu", + "errors": "Hitilafu", + "avgLatency": "Wastani wa Ucheleweshaji", "millisecondsShort": "{value}ms", "notAvailableSymbol": "—", - "liveAutoRefreshing": "Live — Auto-refreshing", - "paused": "Paused", - "eventsAppearHint": "Translation events appear here as requests flow through OmniRoute. Use any of these methods to generate events:", + "liveAutoRefreshing": "Moja kwa moja — Inajisasisha kiotomatiki", + "paused": "Imesitishwa", + "eventsAppearHint": "Matukio ya tafsiri yataonekana hapa maombi yanapopitia OmniRoute. Tumia mojawapo ya mbinu hizi kuzalisha matukio:", "chatTesterTab": "Chat Tester", "testBenchTab": "Test Bench", - "externalApiCalls": "External API calls", - "ideCliIntegrations": "IDE/CLI integrations", - "inMemoryNote": "Note: Events are stored in-memory and reset when the server restarts.", + "externalApiCalls": "Miito ya API ya nje", + "ideCliIntegrations": "Miunganisho ya IDE/CLI", + "inMemoryNote": "Kumbuka: Matukio huhifadhiwa kwenye kumbukumbu na huwekwa upya seva inapoanzishwa upya.", "ok": "OK", - "errorShort": "ERR", - "formatConverter": "Format Converter", - "formatConverterDescription": "Paste or type a JSON request body. The translator will auto-detect the source format and convert it to the target format. Use this to debug how OmniRoute translates requests between formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", + "errorShort": "HITILAFU", + "formatConverter": "Kigeuzi cha Umbizo", + "formatConverterDescription": "Bandika au andika mwili wa ombi la JSON. Kitafsiri kitatambua kiotomatiki umbizo la chanzo na kulibadilisha kuwa umbizo lengwa. Tumia hii kutatua hitilafu za jinsi OmniRoute inavyotafsiri maombi kati ya miundo (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (kati) → {target}", "translationPathDirect": "{source} → {target} (mtafsiri wa moja kwa moja)", "translationPathPassthrough": "Umbizo sawa - hakuna tafsiri inayohitajika", @@ -9012,79 +9019,79 @@ "featureDirectPathsDesc": "Baadhi ya jozi za umbizo (Claude→Gemini) zina vifasiri vya moja kwa moja ambavyo vinakwepa kitovu cha OpenAI, na hivyo kutoa matokeo sahihi zaidi.", "featureImageMapping": "Ramani ya Ukubwa wa Picha", "featureImageMappingDesc": "Hutafsiri kanuni za vipimo vya picha kati ya miundo ya API (k.m., viwango vya maelezo ya OpenAI → vipimo vya Gemini).", - "input": "Input", - "output": "Output", + "input": "Ingizo", + "output": "Tokeo", "auto": "Auto", - "swapFormats": "Swap formats", - "translateAction": "Translate", - "clear": "Clear", - "inputPlaceholder": "Paste a request body here or select a template below...", - "exampleTemplates": "Example Templates", - "exampleTemplatesHint": "— Click to load", - "templateLoadHint": "Template loads the request in {format} format. Change Source Format to load in a different format.", - "compatibilityTester": "Compatibility Tester", - "compatibilityReport": "Compatibility Report", - "testBenchDescription": "Run predefined scenarios (Simple Chat, Tool Calling, etc.) to verify translation and provider compatibility. Select a source format and target provider, then run all tests to see a compatibility percentage. Use this to find which features work across providers.", - "targetProvider": "Target Provider", - "runAllTests": "Run All Tests", - "runTest": "Run Test", - "reRun": "Re-run", - "running": "Running...", - "passed": "passed", - "failed": "failed", - "passedIconLabel": "✅ Passed", - "chunks": "chunks", - "scenarioSimpleChat": "Simple Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "swapFormats": "Badilishana miundo", + "translateAction": "Tafsiri", + "clear": "Futa", + "inputPlaceholder": "Bandika mwili wa ombi hapa au uchague kiolezo hapa chini...", + "exampleTemplates": "Violezo vya Mfano", + "exampleTemplatesHint": "— Bofya ili kupakia", + "templateLoadHint": "Kiolezo hupakia ombi katika umbizo la {format}. Badilisha Umbizo la Chanzo ili kupakia katika umbizo tofauti.", + "compatibilityTester": "Kijaribu Uoanifu", + "compatibilityReport": "Ripoti ya Uoanifu", + "testBenchDescription": "Endesha hali zilizofafanuliwa awali (Gumzo Rahisi, Uitaji wa Zana, n.k.) ili kuthibitisha tafsiri na uoanifu wa mtoa huduma. Chagua umbizo la chanzo na mtoa huduma lengwa, kisha endesha majaribio yote ili kuona asilimia ya uoanifu. Tumia hii kubaini vipengele vinavyofanya kazi kwa watoa huduma mbalimbali.", + "targetProvider": "Mtoa Huduma Lengwa", + "runAllTests": "Endesha Majaribio Yote", + "runTest": "Endesha Jaribio", + "reRun": "Endesha tena", + "running": "Inaendeshwa...", + "passed": "zimefaulu", + "failed": "zimeshindwa", + "passedIconLabel": "✅ Imefaulu", + "chunks": "vipande", + "scenarioSimpleChat": "Gumzo Rahisi", + "scenarioToolCalling": "Kuitisha Zana", + "scenarioMultiTurn": "Zamu Nyingi", "scenarioThinking": "Thinking", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "Kidokezo cha Mfumo", + "scenarioStreaming": "Utiririshaji", "templateNames": { - "simple-chat": "Simple Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "Gumzo Rahisi", + "tool-calling": "Kuitisha Zana", + "multi-turn": "Zamu Nyingi", "thinking": "Thinking", - "system-prompt": "System Prompt", - "streaming": "Streaming", + "system-prompt": "Kidokezo cha Mfumo", + "streaming": "Utiririshaji", "vision": "Maono", "schema-coercion": "Schema ya Schema" }, "templateDescriptions": { - "simple-chat": "Basic text message", - "tool-calling": "Function/tool invocation", - "multi-turn": "Conversation with history", - "thinking": "Extended thinking / reasoning", - "system-prompt": "Complex system instructions", - "streaming": "SSE streaming request", + "simple-chat": "Ujumbe wa kawaida wa maandishi", + "tool-calling": "Uitishaji wa kitendakazi/zana", + "multi-turn": "Mazungumzo yenye historia", + "thinking": "Kufikiri / kutoa hoja kwa kina", + "system-prompt": "Maagizo changamano ya mfumo", + "streaming": "Ombi la utiririshaji la SSE", "vision": "Ombi la Multimodal na uingizaji wa picha", "schema-coercion": "Pato-Muundo / Utekelezaji wa schema ya JSON" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful assistant.", - "userGreeting": "Hello! How are you today?" + "system": "Wewe ni msaidizi mwenye manufaa.", + "userGreeting": "Habari! Hujambo leo?" }, "toolCalling": { - "userWeather": "What's the weather in São Paulo?", - "toolDescription": "Get current weather for a location", - "cityNameDescription": "City name" + "userWeather": "Hali ya hewa ikoje São Paulo?", + "toolDescription": "Pata hali ya hewa ya sasa ya eneo", + "cityNameDescription": "Jina la jiji" }, "multiTurn": { - "system": "You are a coding assistant.", - "userInitial": "Write a function to sort an array in Python.", - "assistantExample": "Here's a simple sort function: ```python\ndef sort_array(arr): return sorted(arr)\n```", - "userFollowUp": "Now make it sort in descending order." + "system": "Wewe ni msaidizi wa uandishi wa msimbo.", + "userInitial": "Andika kitendakazi cha kupanga safu katika Python.", + "assistantExample": "Hiki ni kitendakazi rahisi cha kupanga: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userFollowUp": "Sasa kifanye kipange kwa mpangilio wa kushuka." }, "thinking": { - "question": "What is the sum of the first 100 prime numbers?" + "question": "Jumla ya namba tasa 100 za kwanza ni ngapi?" }, "systemPrompt": { - "systemInstruction": "You are a senior software engineer specializing in distributed systems. Answer questions concisely using industry best practices. Always provide code examples when relevant. Format your responses using markdown.", - "question": "How do I implement a circuit breaker pattern?" + "systemInstruction": "Wewe ni mhandisi mwandamizi wa programu aliyebobea katika mifumo iliyosambazwa. Jibu maswali kwa ufupi ukitumia mbinu bora za sekta. Daima toa mifano ya msimbo inapofaa. Panga majibu yako kwa kutumia markdown.", + "question": "Nitatekelezaje muundo wa circuit breaker?" }, "streaming": { - "prompt": "Tell me a short story about a robot learning to paint." + "prompt": "Nisimulie hadithi fupi kuhusu roboti inayojifunza kuchora." }, "vision": { "system": "Wewe ni msaidizi anayeelezea picha kwa usahihi.", @@ -9097,12 +9104,12 @@ "cityDescription": "Jiji la kuuliza, k.m. 'Tokyo' au 'New York'." } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", - "noTemplateForFormat": "No template for this format", - "translationFailed": "Translation failed: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "openaiCompatibleLabel": "Inaoana na OpenAI", + "anthropicCompatibleLabel": "Inaoana na Anthropic", + "noTemplateForFormat": "Hakuna kiolezo cha umbizo hili", + "translationFailed": "Tafsiri imeshindikana: {error}", + "pipelineDebugger": "Kitatuzi cha Pipeline", + "translationPipeline": "Pipeline ya Tafsiri", "loading": "Inapakia…", "compressionOriginal": "Asili", "compressionCompressed": "Iliyofinyazwa", @@ -9111,44 +9118,44 @@ "pipelineStepsAria": "Hatua za bomba", "copyIntermediateJson": "Nakili JSON ya kati", "copyOutputJson": "Nakili JSON ya matokeo", - "pipelineVisualization": "Pipeline visualization", - "pipelineVisualizationHint": "Send a message to see how your request flows through detection → translation → provider call.", - "chatTesterDescription": "Send messages as a specific client format and inspect each step of the translation pipeline.", - "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response", - "clickStepToInspect": "Click any step to inspect the data at that stage.", - "clientFormat": "Client Format", - "provider": "Provider", - "modelPlaceholder": "Select or type a model name...", - "sendMessageToSeePipeline": "Send a message to see the translation pipeline", - "chatMessageHintPrefix": "Your message will be formatted as a", - "chatMessageHintSuffix": "request, translated through the pipeline, and sent to the selected provider.", - "youWithFormat": "You ({format})", - "assistant": "Assistant", - "typeMessage": "Type a message...", - "send": "Send", - "clientRequest": "Client Request", - "clientRequestDescription": "The request body as your client would send it", - "formatDetected": "Format Detected", - "formatDetectedDescription": "OmniRoute auto-detects the API format from the request structure", - "openaiIntermediate": "OpenAI Intermediate", - "openaiIntermediateDescription": "All formats are first normalized to OpenAI format (the universal bridge)", - "providerFormat": "Provider Format", - "providerFormatDescription": "OpenAI format is translated to the provider's native format", - "providerResponse": "Provider Response", - "providerResponseRawDescription": "The raw response from the provider API", - "providerResponseSseDescription": "The raw SSE stream from the provider API", - "unexpectedError": "An unexpected error occurred", - "error": "Error", - "errorMessage": "Error: {message}", - "requestFailed": "Request failed", - "noTextExtracted": "(No text extracted)", + "pipelineVisualization": "Uonyeshaji wa pipeline", + "pipelineVisualizationHint": "Tuma ujumbe ili kuona jinsi ombi lako linavyopita katika utambuzi → tafsiri → mwito wa mtoa huduma.", + "chatTesterDescription": "Tuma ujumbe katika umbizo mahususi la mteja na uchunguze kila hatua ya pipeline ya tafsiri.", + "chatTesterFlow": "Ombi la Mteja → Utambuzi wa Umbizo → OpenAI ya Kati → Umbizo la Mtoa Huduma → Jibu", + "clickStepToInspect": "Bofya hatua yoyote ili kukagua data katika hatua hiyo.", + "clientFormat": "Muundo wa Mteja", + "provider": "Mtoa Huduma", + "modelPlaceholder": "Chagua au andika jina la modeli...", + "sendMessageToSeePipeline": "Tuma ujumbe ili kuona mchakato wa tafsiri", + "chatMessageHintPrefix": "Ujumbe wako utapangwa katika muundo wa", + "chatMessageHintSuffix": "ombi, utatafsiriwa kupitia mchakato huo, na kutumwa kwa mtoa huduma aliyechaguliwa.", + "youWithFormat": "Wewe ({format})", + "assistant": "Msaidizi", + "typeMessage": "Andika ujumbe...", + "send": "Tuma", + "clientRequest": "Ombi la Mteja", + "clientRequestDescription": "Mwili wa ombi jinsi mteja wako angeutuma", + "formatDetected": "Muundo Umegunduliwa", + "formatDetectedDescription": "OmniRoute hutambua kiotomatiki muundo wa API kutokana na muundo wa ombi", + "openaiIntermediate": "Muundo wa Kati wa OpenAI", + "openaiIntermediateDescription": "Miundo yote husawazishwa kwanza kuwa muundo wa OpenAI (kiunganishi cha jumla)", + "providerFormat": "Muundo wa Mtoa Huduma", + "providerFormatDescription": "Muundo wa OpenAI hutafsiriwa kuwa muundo asilia wa mtoa huduma", + "providerResponse": "Jibu la Mtoa Huduma", + "providerResponseRawDescription": "Jibu ghafi kutoka kwa API ya mtoa huduma", + "providerResponseSseDescription": "Mtiririko ghafi wa SSE kutoka kwa API ya mtoa huduma", + "unexpectedError": "Hitilafu isiyotarajiwa imetokea", + "error": "Hitilafu", + "errorMessage": "Hitilafu: {message}", + "requestFailed": "Ombi limeshindwa", + "noTextExtracted": "(Hakuna maandishi yaliyotolewa)", "liveMonitorMemoryNote": "Matukio huhifadhiwa kwenye kumbukumbu na kupotea wakati wa kuanza upya.", "liveMonitorMemoryCapNote": "Matukio yasiyozidi 200 yamesalia.", "eventSourcesLabel": "Vyanzo vya matukio:", "eventSourceTranslatorPage": "• Ukurasa wa Mtafsiri (Kijaribu cha Gumzo, Kiti cha Kujaribu)", "eventSourceMainPipeline": "• Njia kuu ya ombi (trafiki ya CLI/IDE/API)", - "liveMonitorDescriptionPrefix": "Shows translation events as API calls flow through OmniRoute. Events come from the in-memory buffer (resets on restart). Use", - "liveMonitorDescriptionSuffix": ", or external API calls to generate events.", + "liveMonitorDescriptionPrefix": "Huonyesha matukio ya tafsiri kadiri miito ya API inavyopita kwenye OmniRoute. Matukio hutoka kwenye akiba ya kumbukumbu (huwekwa upya inapoanzishwa tena). Tumia", + "liveMonitorDescriptionSuffix": ", au miito ya nje ya API ili kuzalisha matukio.", "streamTransformer": "Tiririsha Transfoma", "modeDescriptionStreamTransformer": "Endesha ukamilishaji gumzo mitiririko ya SSE kupitia kibadilishaji cha Majibu.", "streamTransformerTitle": "Kibadilishaji cha Majibu cha Mtiririko", @@ -9181,7 +9188,7 @@ "conceptHeadline": "Programu yako inazungumza \"lugha\" ya API moja. Mtafsiri huibadilisha ili itumie mtoa huduma mwingine.", "conceptDiagramAppLabel": "Programu yako", "conceptDiagramSourceLabel": "Muundo wa chanzo", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (kitovu)", "conceptDiagramTargetLabel": "Mtoa huduma lengwa", "conceptDiagramExampleApp": "k.m. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9259,7 +9266,7 @@ "streamTransformFailed": "Imeshindwa kubadilisha mtiririko" }, "usage": { - "title": "Usage", + "title": "Matumizi", "grokExtraUsageCredits": "Mikopo Ya Ziada", "grokAutoTopUp": "Kuongeza Otomatikia", "grokAutoTopUpUnavailable": "Haipatikani", @@ -9267,7 +9274,7 @@ "grokAutoTopUpDisabled": "Imezimwa", "grokAutoTopUpAt": "katika", "grokAutoTopUpAdd": "ongeza", - "grokAutoTopUpMax": "max", + "grokAutoTopUpMax": "kiwango cha juu", "grokAutoTopUpMonth": "mwezi", "grokAdditionalCredits": "Mikopo Ya Ziada", "kiloAccountBalance": "Salio la Akaunti", @@ -9277,63 +9284,63 @@ "kiloPassRemaining": "Iliyobaki", "kiloPassRenews": "Inasasishwa baada ya siku {count}", "kiloPassUsageLabel": "Matumizi ya mwezi huu", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "Salio la Ziada la Matumizi", + "kimiExtraUsage": "Matumizi ya Ziada", + "kimiExtraUsageEnabled": "Imewashwa", + "kimiExtraUsageDisabled": "Imezimwa", + "kimiExtraUsageFrozen": "Imesitishwa", + "kimiExtraUsageUnavailable": "Haipatikani", + "kimiMonthlyUsed": "Imetumika mwezi huu", + "kimiMonthlyLimit": "Kikomo cha kila mwezi", + "kimiMonthlyLimitUnlimited": "Bila kikomo", + "kimiAdditionalCredits": "Salio la Ziada", + "loggerTab": "Kirekodi", "proxyTab": "Proxy", - "budgetManagement": "Budget Management", - "budgetSaved": "Budget limits saved", - "budgetSaveFailed": "Failed to save budget", - "loadingBudgetData": "Loading budget data...", - "noApiKeysTitle": "No API Keys", - "noApiKeysDescription": "Add API keys first to set up budget limits.", - "apiKey": "API Key", - "todaysSpend": "Today's Spend", - "thisMonth": "This Month", - "setLimits": "Set Limits", - "dailyLimitUsd": "Daily Limit (USD)", - "monthlyLimitUsd": "Monthly Limit (USD)", - "warningThresholdPercent": "Warning Threshold (%)", - "dailyLimitPlaceholder": "e.g. 5.00", - "monthlyLimitPlaceholder": "e.g. 50.00", + "budgetManagement": "Usimamizi wa Bajeti", + "budgetSaved": "Vikomo vya bajeti vimehifadhiwa", + "budgetSaveFailed": "Imeshindikana kuhifadhi bajeti", + "loadingBudgetData": "Inapakia data ya bajeti...", + "noApiKeysTitle": "Hakuna Funguo za API", + "noApiKeysDescription": "Ongeza funguo za API kwanza ili kuweka vikomo vya bajeti.", + "apiKey": "Ufunguo wa API", + "todaysSpend": "Matumizi ya Leo", + "thisMonth": "Mwezi Huu", + "setLimits": "Weka Vikomo", + "dailyLimitUsd": "Kikomo cha Kila Siku (USD)", + "monthlyLimitUsd": "Kikomo cha Kila Mwezi (USD)", + "warningThresholdPercent": "Kiwango cha Onyo (%)", + "dailyLimitPlaceholder": "k.m. 5.00", + "monthlyLimitPlaceholder": "k.m. 50.00", "warningThresholdPlaceholder": "80", - "saveLimits": "Save Limits", - "budgetOk": "Budget OK — {remaining} remaining", - "budgetExceeded": "Budget exceeded — requests may be blocked", + "saveLimits": "Hifadhi Vikomo", + "budgetOk": "Bajeti iko sawa — {remaining} zimesalia", + "budgetExceeded": "Bajeti imepitwa — maombi yanaweza kuzuiwa", "totalRequests": "Total requests", - "noDataYet": "No data yet", - "latency": "Latency", + "noDataYet": "Bado hakuna data", + "latency": "Muda wa kusubiri", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", - "systemHealth": "System Health", - "entries": "Entries", - "activeCount": "{count} active", - "openCircuitBreakersDetected": "Open circuit breakers detected", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "circuitBreakers": "Circuit Breakers", - "lockedIPs": "Locked IPs", - "lockoutsAutoRefreshHint": "Per-model rate limit locks • Auto-refresh 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", - "timeLeft": "{time} left", - "howItWorks": "How It Works", - "howItWorksSubtitle": "Learn how evaluations validate your LLM responses", - "define": "Define", - "defineStepDescription": "Create test cases with input prompts and expected output criteria using strategies like contains, regex, or exact match.", - "run": "Run", - "runStepDescription": "Execute test cases against your LLM endpoints through OmniRoute. Each case is sent as a real API request.", - "evaluate": "Evaluate", - "evaluateStepDescription": "Responses are compared against expected criteria. See pass/fail for each case with latency metrics and detailed feedback.", + "promptCache": "Akiba ya Prompt", + "systemHealth": "Hali ya Mfumo", + "entries": "Maingizo", + "activeCount": "{count} vinavyotumika", + "openCircuitBreakersDetected": "Vivunja mzunguko vilivyo wazi vimegunduliwa", + "hitRate": "Kiwango cha Upatikanaji", + "hitsMisses": "Mafanikio / Kukosa", + "circuitBreakers": "Vivunja Mzunguko", + "lockedIPs": "IP Zilizofungwa", + "lockoutsAutoRefreshHint": "Vifungo vya vikomo vya kasi kwa kila modeli • Kujisasisha kiotomatiki sekunde 10", + "lockedCount": "{count, plural, one {# imefungwa} other {# zimefungwa}}", + "timeLeft": "Zimesalia {time}", + "howItWorks": "Jinsi Inavyofanya Kazi", + "howItWorksSubtitle": "Jifunze jinsi tathmini zinavyothibitisha majibu yako ya LLM", + "define": "Bainisha", + "defineStepDescription": "Unda majaribio yenye vidokezo vya ingizo na vigezo vya matokeo yanayotarajiwa kwa kutumia mikakati kama vile kujumuisha, regex au ulinganifu kamili.", + "run": "Endesha", + "runStepDescription": "Tekeleza majaribio dhidi ya vituo vyako vya mwisho vya LLM kupitia OmniRoute. Kila jaribio hutumwa kama ombi halisi la API.", + "evaluate": "Tathmini", + "evaluateStepDescription": "Majibu hulinganishwa na vigezo vinavyotarajiwa. Tazama kufaulu/kushindwa kwa kila jaribio pamoja na vipimo vya muda wa kusubiri na maoni ya kina.", "evalsStrategyContainsLabel": "Ina", "evalsStrategyExactLabel": "Ulinganifu Kamili", "evalsStrategyRegexLabel": "Regex", @@ -9347,126 +9354,126 @@ "historyColumnPassRate": "Kiwango cha Ufaulu", "historyColumnAvgLatencyMs": "Wastani wa Ucheleweshaji", "historyColumnCreatedAt": "Imetekelezwa", - "evalSuites": "Evaluation Suites", - "evalSuitesHint": "Click a suite to view test cases, then run to evaluate your LLM endpoints", - "evalsLoading": "Loading eval suites...", - "noEvalSuitesFound": "No Eval Suites Found", - "noEvalSuitesDescription": "Eval suites can be defined via the API or in code. They test model outputs against expected results using strategies like contains, regex, exact match, and custom functions.", - "columnCase": "Case", + "evalSuites": "Vifurushi vya Tathmini", + "evalSuitesHint": "Bofya kifurushi ili kuona majaribio, kisha ukiendeshe ili kutathmini vituo vyako vya mwisho vya LLM", + "evalsLoading": "Inapakia vifurushi vya tathmini...", + "noEvalSuitesFound": "Hakuna Vifurushi vya Tathmini Vilivyopatikana", + "noEvalSuitesDescription": "Vifurushi vya tathmini vinaweza kubainishwa kupitia API au kwenye msimbo. Hupima matokeo ya modeli dhidi ya matokeo yanayotarajiwa kwa kutumia mikakati kama vile kujumuisha, regex, ulinganifu kamili na vitendakazi maalum.", + "columnCase": "Jaribio", "columnStatus": "Status", - "columnLatency": "Latency", - "columnDetails": "Details", + "columnLatency": "Muda wa Kusubiri", + "columnDetails": "Maelezo", "columnModel": "Model", - "columnStrategy": "Strategy", - "columnExpected": "Expected", - "statsSuites": "Suites", - "statsTestCases": "Test Cases", - "statsModels": "Models", - "statsCoverage": "Coverage", - "statsStrategiesCount": "{count} strategies", - "evaluationStrategies": "Evaluation Strategies", - "modelsUnderTest": "Models Under Test", - "searchSuitesPlaceholder": "Search suites...", + "columnStrategy": "Mkakati", + "columnExpected": "Kinachotarajiwa", + "statsSuites": "Vifurushi", + "statsTestCases": "Majaribio", + "statsModels": "Modeli", + "statsCoverage": "Ufunikaji", + "statsStrategiesCount": "mikakati {count}", + "evaluationStrategies": "Mikakati ya Tathmini", + "modelsUnderTest": "Modeli Zinazojaribiwa", + "searchSuitesPlaceholder": "Tafuta vifurushi...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", - "runEval": "Run Eval", + "casesCount": "{count, plural, one {# jaribio} other {# majaribio}}", + "runEval": "Endesha Tathmini", "runAllSuites": "Endesha Zote", "runAllRunning": "Inakimbia zote...", "runAllProgress": "Inaendesha {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# kifurushi kimeshindwa} other {# vifurushi vimeshindwa}}", "runAllCompleted": "Alikimbia {suites} vyumba - {passed} kupita, {failed} imeshindwa", "runAllCompletedWithFailures": "Aliendesha vyumba {completed}; {failedSuites} imeshindwa kukamilika", - "runningProgress": "Running {current}/{total}...", - "passRate": "pass rate", - "summaryBreakdown": "{passed} passed · {failed} failed · {total} total", - "passedIconLabel": "✅ Passed", - "failedIconLabel": "❌ Failed", + "runningProgress": "Inaendesha {current}/{total}...", + "passRate": "kiwango cha kufaulu", + "summaryBreakdown": "{passed} zimefaulu · {failed} zimeshindwa · jumla {total}", + "passedIconLabel": "✅ Imefaulu", + "failedIconLabel": "❌ Imeshindwa", "resultPassed": "Imepitishwa", "resultFailed": "Imeshindwa", "expandResult": "Panua maelezo ya matokeo", "collapseResult": "Kunja maelezo ya matokeo", - "detailsContains": "Contains: \"{term}\"", + "detailsContains": "Inajumuisha: \"{term}\"", "detailsRegex": "Regex: {pattern}", - "detailsExpected": "Expected: \"{expected}\"", + "detailsExpected": "Kinachotarajiwa: \"{expected}\"", "expectedOutputLabel": "Pato Linalotarajiwa", - "noResultsYet": "No results yet", - "testCasesCount": "Test Cases ({count})", - "noTestCasesDefined": "No test cases defined", - "runEvalHint": "Click \"Run Eval\" to execute all cases against your LLM endpoint. Each test sends a real request through OmniRoute.", - "notifyNoTestCases": "No test cases defined for this suite", - "notifyAllCasesPassed": "All {total} cases passed ✅", - "notifySomeCasesFailed": "{passed}/{total} passed, {failed} failed", - "notifyEvalRunFailed": "Eval run failed", - "notifyEvalTitle": "Eval: {name}", - "modelEvals": "Model Evaluations", - "evalsHeroDescription": "Test and validate your LLM endpoints by running predefined evaluation suites. Each suite contains test cases that send real prompts through OmniRoute and compare responses against expected criteria — helping you detect regressions, compare models, and ensure response quality across providers.", - "qualityValidation": "Quality Validation", - "modelComparison": "Model Comparison", - "regressionDetection": "Regression Detection", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", - "noLockouts": "No models currently locked", - "activeSessions": "Active Sessions", - "noSessions": "No active sessions", - "sessionsHint": "Sessions appear as requests flow through the proxy", - "sessionsTrackedHint": "Tracked via request fingerprinting • Auto-refresh 5s", - "session": "Session", - "age": "Age", - "requests": "Requests", - "connection": "Connection", + "noResultsYet": "Bado hakuna matokeo", + "testCasesCount": "Majaribio ({count})", + "noTestCasesDefined": "Hakuna majaribio yaliyobainishwa", + "runEvalHint": "Bofya \"Endesha Tathmini\" ili kutekeleza majaribio yote dhidi ya kituo chako cha mwisho cha LLM. Kila jaribio hutuma ombi halisi kupitia OmniRoute.", + "notifyNoTestCases": "Hakuna majaribio yaliyobainishwa kwa kifurushi hiki", + "notifyAllCasesPassed": "Kesi zote {total} zimefaulu ✅", + "notifySomeCasesFailed": "{passed}/{total} zimefaulu, {failed} zimeshindwa", + "notifyEvalRunFailed": "Uendeshaji wa tathmini umeshindwa", + "notifyEvalTitle": "Tathmini: {name}", + "modelEvals": "Tathmini za Modeli", + "evalsHeroDescription": "Jaribu na uthibitishe vituo vyako vya LLM kwa kuendesha vifurushi vya tathmini vilivyofafanuliwa mapema. Kila kifurushi kina kesi za majaribio zinazotuma vidokezo halisi kupitia OmniRoute na kulinganisha majibu na vigezo vinavyotarajiwa — hali inayokusaidia kugundua hitilafu zilizojirudia, kulinganisha modeli na kuhakikisha ubora wa majibu kwa watoa huduma mbalimbali.", + "qualityValidation": "Uthibitishaji wa Ubora", + "modelComparison": "Ulinganishaji wa Modeli", + "regressionDetection": "Ugunduzi wa Hitilafu Zilizojirudia", + "latencyBenchmarks": "Vipimo vya Ucheleweshaji", + "modelLockouts": "Kufungiwa kwa Modeli", + "noLockouts": "Hakuna modeli zilizofungiwa kwa sasa", + "activeSessions": "Vipindi Vinavyotumika", + "noSessions": "Hakuna vipindi vinavyotumika", + "sessionsHint": "Vipindi huonekana maombi yanapopita kwenye proksi", + "sessionsTrackedHint": "Hufuatiliwa kupitia utambuzi wa alama za kipekee za maombi • Uonyeshaji upya otomatiki kila sekunde 5", + "session": "Kipindi", + "age": "Muda", + "requests": "Maombi", + "connection": "Muunganisho", "durationMillisecondsShort": "{value}ms", "durationSecondsShort": "{value}s", "durationMinutesShort": "{value}m", "durationHoursShort": "{value}h", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "Provider Limits", - "noProviders": "No Providers Connected", - "connectProvidersForQuota": "Connect to providers with OAuth to track your API quota limits and usage.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", - "filteredFromCount": "(filtered from {count})", - "autoRefresh": "Auto-refresh", - "refreshAll": "Refresh All", - "loadingQuotas": "Loading...", + "providerLimits": "Vikomo vya Watoa Huduma", + "noProviders": "Hakuna Watoa Huduma Waliounganishwa", + "connectProvidersForQuota": "Unganisha kwa watoa huduma kupitia OAuth ili kufuatilia vikomo vya mgawo na matumizi ya API yako.", + "accountsCount": "{count, plural, one {akaunti #} other {akaunti #}}", + "filteredFromCount": "(zimechujwa kutoka {count})", + "autoRefresh": "Onyesha upya kiotomatiki", + "refreshAll": "Onyesha Upya Zote", + "loadingQuotas": "Inapakia...", "showMoreQuotas": "Onyesha {count} zaidi", "showLessQuotas": "Onyesha machache", "hideQuotaRow": "Ficha safu mlalo hii ya mgawo", "showQuotaRow": "Onyesha safu mlalo hii ya mgawo", "hiddenQuotaRowsLabel": "Imefichwa:", "quotaVisibilityUpdateFailed": "Imeshindwa kusasisha mwonekano wa mgawo", - "account": "Account", - "modelQuotas": "Model Quotas", - "lastUsed": "Last Refreshed", - "actions": "Actions", - "refreshQuota": "Refresh quota", - "today": "Today", - "tomorrow": "Tomorrow", + "account": "Akaunti", + "modelQuotas": "Mgao wa Modeli", + "lastUsed": "Ilionyeshwa Upya Mara ya Mwisho", + "actions": "Vitendo", + "refreshQuota": "Onyesha upya mgawo", + "today": "Leo", + "tomorrow": "Kesho", "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "inDuration": "baada ya {duration}", "notApplicable": "N/A", - "rawPlanWithValue": "Raw plan: {plan}", - "noPlanFromProvider": "No plan from provider", + "rawPlanWithValue": "Mpango ghafi: {plan}", + "noPlanFromProvider": "Hakuna mpango kutoka kwa mtoa huduma", "tokenExpiresIn": "Tokeni inaisha muda wake baada ya {time}", "tokenExpired": "Muda wa tokeni umeisha", - "noQuotaData": "No quota data", + "noQuotaData": "Hakuna data ya mgawo", "cardExpand": "Panua", "cardCollapse": "Kunja", "moreQuotas": "+{count} zaidi", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", - "noQuotaDataAvailable": "No quota data available", - "noAccountsForTierFilter": "No accounts found for tier filter", - "tierAll": "All", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "ungrouped": "Haijapangwa katika kikundi", + "viewFlat": "Bapa", + "viewByEnvironment": "Kwa Mazingira", + "noQuotaDataAvailable": "Hakuna data ya kikomo cha matumizi inayopatikana", + "noAccountsForTierFilter": "Hakuna akaunti zilizopatikana kwa kichujio cha kiwango", + "tierAll": "Zote", + "tierEnterprise": "Biashara", + "tierTeam": "Timu", + "tierBusiness": "Biashara", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", - "tierLite": "Lite", - "tierUnknown": "Unknown", + "tierFree": "Bure", + "tierLite": "Nyepesi", + "tierUnknown": "Haijulikani", "statTotal": "Jumla", "statCritical": "Mahututi", "statAlert": "Tahadhari", @@ -9504,8 +9511,8 @@ "confirmRedeemResetCreditButton": "Komboa mkopo", "resetCreditRedeemed": "Uwekaji upya umekombolewa", "resetCreditRedeemFailed": "Imeshindwa kukomboa mkopo wa kuweka upya", - "suiteBuilderSaveFailed": "Failed to save suite", - "clone": "Clone", + "suiteBuilderSaveFailed": "Imeshindwa kuhifadhi mkusanyiko", + "clone": "Nakili", "exportSuite": "Hamisha", "importSuite": "Ingiza", "suiteExported": "Suite imehamishwa", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Safu batili ya JSON", "suiteBuilderCloneSuffix": "nakala", "suiteBuilderImportedSuite": "Suite iliyoingizwa", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "Kadi ya Alama", + "evalApiKey": "Ufunguo wa API", + "scorecardPassRate": "Kiwango cha Kufaulu", + "targetTypeModel": "Modeli", + "actualOutputLabel": "Matokeo Halisi", + "evalTargetHint": "Chagua modeli au mchanganyiko wa kutathmini.", + "suiteBuilderDeleted": "Mkusanyiko umefutwa", + "suiteBuilderCaseCardHint": "Bainisha kidokezo cha ingizo na vigezo vya matokeo yanayotarajiwa.", + "nextResetUtc": "Uwekaji upya unaofuata (UTC)", + "scorecardHint": "Viwango vya kufaulu vilivyojumlishwa katika mikusanyiko yote ya tathmini.", + "suiteLatestRunsHint": "Uendeshaji wa hivi karibuni wa tathmini kwa mkusanyiko huu.", + "saving": "Inahifadhi", + "suiteBuilderCaseModelLabel": "Modeli (si lazima)", + "evalControlsTitle": "Vidhibiti vya Tathmini", + "suiteBuilderEditTitle": "Hariri Mkusanyiko wa Tathmini", + "suiteBuilderCaseStrategyLabel": "Mkakati wa Uthibitishaji", + "notifySelectDifferentCompareTarget": "Tafadhali chagua lengo tofauti kwa ajili ya ulinganisho", + "recentRunsHint": "Inaonyesha uendeshaji wa hivi karibuni wa tathmini. Bofya uendeshaji ili kuona matokeo ya kina.", + "evalCompareHint": "Unaweza kulinganisha matokeo na lengo la pili.", + "suiteBuilderCaseInvalid": "Kesi hii ina hitilafu za uthibitishaji. Tafadhali zirekebishe kabla ya kuhifadhi.", + "historyEmpty": "Bado hakuna historia ya tathmini", + "suiteBuilderUpdated": "Mkusanyiko umesasishwa", + "resetInterval": "Kipindi cha Uwekaji Upya", + "suiteBuilderCreateTitle": "Unda Mkusanyiko wa Tathmini", + "activePeriodSpend": "Matumizi ya Kipindi Kinachoendelea", + "evalApiKeyHint": "Chagua API Key ya kutumia kwa maombi ya tathmini.", + "evalCompareOptional": "Linganisha (hiari)", + "suiteBuilderDeleteFailed": "Imeshindikana kufuta kifurushi", + "suiteBuilderCaseSystemPromptPlaceholder": "Maagizo ya mfumo ya hiari...", + "scorecardCases": "Vipimo", + "runCompletedWithScore": "Tathmini imekamilika — kiwango cha ufaulu ni {score}%", + "suiteBuilderCustomBadge": "Maalum", + "targetSuiteDefaults": "Mipangilio chaguomsingi ya kifurushi", + "suiteBuilderDeleteConfirm": "Una uhakika unataka kufuta kifurushi hiki? Kitendo hiki hakiwezi kutenduliwa.", + "suiteBuilderNameLabel": "Jina la Kifurushi", + "scorecardSuites": "Vifurushi", + "evalCompareTarget": "Lengo la Kulinganisha", + "suiteBuilderCaseModelPlaceholder": "k.m. gpt-4o-mini", + "evalControlsHint": "Sanidi lengo lako la tathmini na ufunguo wa API, kisha endesha vifurushi ili kuthibitisha ubora wa modeli.", + "recentRunsTitle": "Uendeshaji wa Hivi Karibuni", + "suiteBuilderCaseSystemPromptLabel": "Kidokezo cha Mfumo", + "suiteBuilderCaseExpectedPlaceholder": "k.m. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "k.m. def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Bandika jibu kamili linalotarajiwa", "suiteBuilderCaseExpectedPlaceholderRegex": "k.m. ^\\\\s*\\\\{.*\\\\}\\\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Tumia msemo wa kawaida wa JavaScript bila kukunja mikwaju.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "k.m. Kifurushi cha Ubora wa Usimbaji", + "suiteBuilderAddCase": "Ongeza Kipimo", + "cancel": "Ghairi", + "evalTarget": "Lengo", + "suiteBuilderCaseNameLabel": "Jina la Kipimo", + "weeklyLimitUsd": "Kikomo cha Wiki (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "k.m. Andika kitendakazi cha fibonacci katika Python", + "suiteBuilderNameRequired": "Jina la kifurushi linahitajika", + "suiteBuilderCaseUserPromptLabel": "Kidokezo cha Mtumiaji", + "daily": "Kila Siku", + "resultErrorLabel": "Hitilafu", + "suiteBuilderBuiltInBadge": "Kilichojumuishwa", + "suiteBuilderCaseCardTitle": "Kipimo cha Jaribio", "suiteBuilderDuplicateCase": "Nakala", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "k.m. 50.00", + "suiteBuilderCaseTagsHint": "Lebo zilizotenganishwa kwa koma kwa ajili ya kupanga vipimo vya jaribio.", + "notifyEvalRunFailedWithReason": "Tathmini imeshindikana: {reason}", + "weekly": "Kila Wiki", + "runEvalRunning": "Tathmini inaendeshwa...", + "delete": "Futa", + "resetTimeUtc": "Muda wa Kuweka Upya (UTC)", + "evalApiKeyAuto": "Otomatiki (tumia chaguomsingi)", + "suiteBuilderDescriptionPlaceholder": "Maelezo ya hiari kuhusu kile ambacho kifurushi hiki kinapima...", + "targetComparisonTitle": "Ulinganishaji wa Lengo", + "save": "Hifadhi", + "suiteBuilderCreated": "Suite imeundwa kwa mafanikio", + "suiteLatestRuns": "Uendeshaji wa Hivi Karibuni", + "suiteBuilderCaseExpectedLabel": "Thamani Inayotarajiwa", + "historyLatency": "Muda wa Kusubiri", + "suiteBuilderCaseTagsPlaceholder": "mf. coding, python", + "targetTypeCombo": "Mchanganyiko", + "scorecardPassed": "Imefaulu", + "suiteBuilderCaseTagsLabel": "Lebo", + "suiteBuilderNewSuite": "Suite Mpya", + "notifyEvalLoadFailed": "Imeshindwa kupakia data ya tathmini", + "notConfigured": "Haijasanidiwa", + "suiteBuilderCaseNamePlaceholder": "mf. jaribio la Fibonacci la Python", + "intervalLabel": "Kipindi", + "suiteBuilderCreateAction": "Unda Suite", + "suiteBuilderCasesHint": "Kila kesi hutuma kidokezo na kuthibitisha jibu.", + "suiteBuilderUpdatedAt": "Imesasishwa", + "errorBadge": "Hitilafu", + "suiteBuilderCasesTitle": "Kesi za Majaribio", + "edit": "Hariri", + "monthly": "Kila Mwezi", + "suiteBuilderCasesRequired": "Angalau kesi moja ya jaribio inahitajika", + "weeklyLimitSummary": "Muhtasari wa kikomo cha bajeti ya kila wiki", + "suiteBuilderDescriptionLabel": "Maelezo", + "targetComparisonHint": "Ulinganisho wa sambamba wa matokeo ya tathmini kati ya shabaha.", + "compareCompletedWithScore": "Ulinganisho umekamilika — kiwango cha ufaulu ni {score}%", + "staleQuotaTooltip": "Uonyeshaji upya wa mwisho umeshindwa — inaonyesha data iliyohifadhiwa kwenye akiba", "quotaThresholdLabel": "Dakika kushoto", "quotaCutoffsColumnHelp": "Sitisha maombi wakati mgawo uliosalia unaangukia kwa asilimia hii au chini yake.", "quotaCutoffsButtonDefault": "Chaguomsingi", @@ -9704,70 +9711,70 @@ "providerQuotaHomeHint": "Hali ya moja kwa moja kwenye akaunti zilizounganishwa" }, "modals": { - "waitingAuth": "Waiting for Authorization", - "verificationUrl": "Verification URL", - "yourCode": "Your Code", - "remoteAccess": "Remote access:", - "connectedSuccess": "Connected Successfully!", - "connectionFailed": "Connection Failed", - "chooseAuthMethod": "Choose your authentication method:", + "waitingAuth": "Inasubiri Uidhinishaji", + "verificationUrl": "URL ya Uthibitishaji", + "yourCode": "Msimbo Wako", + "remoteAccess": "Ufikiaji wa mbali:", + "connectedSuccess": "Imeunganishwa kwa Mafanikio!", + "connectionFailed": "Muunganisho Umeshindwa", + "chooseAuthMethod": "Chagua mbinu yako ya uthibitishaji:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", - "importToken": "Import Token", - "pasteToken": "Paste refresh token from Kiro IDE.", + "googleAccount": "Akaunti ya Google", + "githubAccount": "Akaunti ya GitHub", + "importToken": "Leta Tokeni", + "pasteToken": "Bandika tokeni ya kuonyesha upya kutoka Kiro IDE.", "awsRegion": "AWS Region", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCache": "Reading from AWS SSO cache", - "readingFromCursor": "Reading from Cursor IDE database", - "initializing": "Initializing...", - "pricingConfig": "Pricing Configuration", - "loadingPricing": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "noPricingData": "No pricing data available", - "noModelsFound": "No models found" + "autoDetecting": "Inatambua tokeni kiotomatiki...", + "readingFromCache": "Inasoma kutoka kwenye akiba ya AWS SSO", + "readingFromCursor": "Inasoma kutoka kwenye hifadhidata ya Cursor IDE", + "initializing": "Inaanzisha...", + "pricingConfig": "Usanidi wa Bei", + "loadingPricing": "Inapakia data ya bei...", + "pricingRatesFormat": "Muundo wa Viwango vya Bei", + "noPricingData": "Hakuna data ya bei inayopatikana", + "noModelsFound": "Hakuna miundo iliyopatikana" }, "loggers": { - "allProviders": "All Providers", - "allModels": "All Models", - "allAccounts": "All Accounts", - "allApiKeys": "All API Keys", - "allTypes": "All Types", - "allLevels": "All Levels", + "allProviders": "Watoa Huduma Wote", + "allModels": "Miundo Yote", + "allAccounts": "Akaunti Zote", + "allApiKeys": "Funguo Zote za API", + "allTypes": "Aina Zote", + "allLevels": "Viwango Vyote", "modelAZ": "Model A-Z", "modelZA": "Model Z-A", - "loadingLogs": "Loading logs...", - "loadingProxyLogs": "Loading proxy logs...", - "noLogEntries": "No log entries found", - "noPayloadData": "No payload data available for this log entry.", - "proxyEvent": "Proxy Event", + "loadingLogs": "Inapakia kumbukumbu...", + "loadingProxyLogs": "Inapakia kumbukumbu za proksi...", + "noLogEntries": "Hakuna maingizo ya kumbukumbu yaliyopatikana", + "noPayloadData": "Hakuna data ya payload inayopatikana kwa ingizo hili la kumbukumbu.", + "proxyEvent": "Tukio la Proksi", "proxy": "Proxy", - "level": "Level", - "directNative": "Direct (native)", - "combo": "Combo", + "level": "Kiwango", + "directNative": "Moja kwa moja (asili)", + "combo": "Mchanganyiko", "inputTokens": "I:", "outputTokens": "O:" }, "stats": { - "usageOverview": "Usage Overview", - "outputTokens": "Output Tokens", - "totalCost": "Total Cost", - "usageByModel": "Usage by Model", - "usageByAccount": "Usage by Account", - "failedToLoad": "Failed to load usage statistics.", - "tokenHealth": "Token Health", - "totalOAuth": "Total OAuth", - "healthy": "Healthy", - "warning": "Warning", - "errored": "Errored", - "lastCheck": "Last check", - "noData": "No data", - "share": "Share", - "unableToLoad": "Unable to load system metrics", - "product": "Product", - "resources": "Resources", - "company": "Company", + "usageOverview": "Muhtasari wa Matumizi", + "outputTokens": "Tokeni za Tokeo", + "totalCost": "Jumla ya Gharama", + "usageByModel": "Matumizi kwa Muundo", + "usageByAccount": "Matumizi kwa Akaunti", + "failedToLoad": "Imeshindwa kupakia takwimu za matumizi.", + "tokenHealth": "Hali ya Tokeni", + "totalOAuth": "Jumla ya OAuth", + "healthy": "Nzuri", + "warning": "Onyo", + "errored": "Zenye Hitilafu", + "lastCheck": "Ukaguzi wa mwisho", + "noData": "Hakuna data", + "share": "Shiriki", + "unableToLoad": "Haiwezi kupakia vipimo vya mfumo", + "product": "Bidhaa", + "resources": "Nyenzo", + "company": "Kampuni", "tokenHealthTooltips": { "allHealthy": "Vikosi vyote vina afya", "needsAttention": "Baadhi ya alama zinahitaji umakini", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Metriki za Mfumo", "memory": "Kumbukumbu", - "memoryShort": "mem", + "memoryShort": "kumbukumbu", "uptime": "Wakati wa Uendeshaji", "ariaLabel": "Ufuatiliaji wa Mfumo", "title": "Msimamizi wa Mfumo", @@ -9812,70 +9819,70 @@ "noAccountUsage": "Hakuna matumizi maalum ya akaunti yaliyorekodiwa bado. Fanya maombi kwa kutumia akaunti za OAuth ili kuona data hapa." }, "auth": { - "welcome": "Welcome", - "signIn": "Sign in", - "enterPassword": "Enter your password to continue", - "password": "Password", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", - "unifiedAiApiProxyDesc": "Route requests to multiple AI providers through a single endpoint. Load balancing, failover, and usage tracking built in.", - "passwordNotEnabled": "Password protection is not enabled", - "loading": "Loading...", - "invalidPassword": "Invalid password", - "errorOccurredRetry": "An error occurred. Please try again.", - "configureInstance": "Let's get your OmniRoute instance configured", - "runOnboardingWizard": "Run the onboarding wizard to set up your password and connect your first AI provider.", - "startOnboarding": "Start Onboarding", - "secureYourInstance": "Secure Your Instance", - "setPasswordDescription": "Set a password to protect your dashboard and secure your API endpoints from unauthorized access.", - "configurePassword": "Configure Password", - "continue": "Continue", - "windowWillClose": "This window will close automatically...", - "closeTabNow": "You can close this tab now.", - "copyUrlManual": "Please copy the URL from the address bar and paste it in the application.", - "accessDeniedDescription": "You don't have permission to access this resource. Check your API key or contact the administrator.", - "goToDashboard": "Go to Dashboard", - "featureMultiProviderTitle": "Multi-Provider", - "featureMultiProviderDesc": "OpenAI, Anthropic, Google, and more", - "featureLoadBalancingTitle": "Load Balancing", - "featureLoadBalancingDesc": "Distribute requests intelligently", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Monitor costs and tokens", - "resetPassword": "Reset Password", - "resetDescription": "Choose a method to recover access to your dashboard", - "stopServer": "Stop the OmniRoute server", - "processing": "Processing...", - "pleaseWait": "Please wait while we complete the authorization.", - "authSuccess": "Authorization Successful!", - "copyUrl": "Copy This URL", - "accessDenied": "Access Denied", - "methodCliTitle": "Method 1: CLI Reset", - "methodCliDescription": "Run the following command on the server where OmniRoute is running:", - "methodCliHint": "This will prompt you to set a new password. The server must be stopped first.", - "methodManualTitle": "Method 2: Manual Reset", - "methodManualDescription": "Delete the password from the database and set a new one on startup:", - "setPasswordInYour": "Set a new password in your", - "fileLabelSuffix": "file:", + "welcome": "Karibu", + "signIn": "Ingia", + "enterPassword": "Weka nenosiri lako ili kuendelea", + "password": "Nenosiri", + "unifiedProxy": "Proksi Iliyounganishwa ya API ya AI", + "unifiedAiApiProxy": "Proksi Iliyounganishwa ya API ya AI", + "unifiedAiApiProxyDesc": "Elekeza maombi kwa watoa huduma wengi wa AI kupitia sehemu moja ya mwisho. Usawazishaji wa mzigo, uhamishaji kiotomatiki iwapo hitilafu itatokea, na ufuatiliaji wa matumizi vimejumuishwa.", + "passwordNotEnabled": "Ulinzi wa nenosiri haujawashwa", + "loading": "Inapakia...", + "invalidPassword": "Nenosiri si sahihi", + "errorOccurredRetry": "Hitilafu imetokea. Tafadhali jaribu tena.", + "configureInstance": "Hebu tusanidi mfumo wako wa OmniRoute", + "runOnboardingWizard": "Endesha mchawi wa usanidi wa awali ili kuweka nenosiri lako na kuunganisha mtoa huduma wako wa kwanza wa AI.", + "startOnboarding": "Anza Usanidi wa Awali", + "secureYourInstance": "Linda Mfumo Wako", + "setPasswordDescription": "Weka nenosiri ili kulinda dashibodi yako na kulinda sehemu zako za mwisho za API dhidi ya ufikiaji usioidhinishwa.", + "configurePassword": "Sanidi Nenosiri", + "continue": "Endelea", + "windowWillClose": "Dirisha hili litafungwa kiotomatiki...", + "closeTabNow": "Sasa unaweza kufunga kichupo hiki.", + "copyUrlManual": "Tafadhali nakili URL kutoka kwenye upau wa anwani na uibandike kwenye programu.", + "accessDeniedDescription": "Huna ruhusa ya kufikia rasilimali hii. Angalia ufunguo wako wa API au wasiliana na msimamizi.", + "goToDashboard": "Nenda kwenye Dashibodi", + "featureMultiProviderTitle": "Watoa Huduma Wengi", + "featureMultiProviderDesc": "OpenAI, Anthropic, Google, na wengine zaidi", + "featureLoadBalancingTitle": "Usawazishaji wa Mzigo", + "featureLoadBalancingDesc": "Sambaza maombi kwa njia bora", + "featureUsageTrackingTitle": "Ufuatiliaji wa Matumizi", + "featureUsageTrackingDesc": "Fuatilia gharama na tokeni", + "resetPassword": "Weka Upya Nenosiri", + "resetDescription": "Chagua mbinu ya kurejesha ufikiaji wa dashibodi yako", + "stopServer": "Simamisha seva ya OmniRoute", + "processing": "Inachakata...", + "pleaseWait": "Tafadhali subiri tunapokamilisha uidhinishaji.", + "authSuccess": "Uidhinishaji Umefaulu!", + "copyUrl": "Nakili URL Hii", + "accessDenied": "Ufikiaji Umekataliwa", + "methodCliTitle": "Mbinu ya 1: Kuweka Upya kwa CLI", + "methodCliDescription": "Endesha amri ifuatayo kwenye seva ambayo OmniRoute inaendeshwa:", + "methodCliHint": "Hii itakuomba kuweka nenosiri jipya. Lazima seva isimamishwe kwanza.", + "methodManualTitle": "Mbinu ya 2: Uwekaji Upya wa Mikono", + "methodManualDescription": "Futa nenosiri kwenye hifadhidata na uweke jipya wakati wa kuanzisha:", + "setPasswordInYour": "Weka nenosiri jipya kwenye", + "fileLabelSuffix": "faili yako:", "newPasswordPlaceholder": "your_new_password", - "deleteSettingsFile": "Delete", - "orRemovePasswordHashField": "or remove the passwordHash field", - "restartServerWithNewPassword": "Restart the server - it will use the new password", - "backToLogin": "Back to Login", - "forgotPassword": "Forgot password?", + "deleteSettingsFile": "Futa", + "orRemovePasswordHashField": "au ondoa sehemu ya passwordHash", + "restartServerWithNewPassword": "Anzisha seva upya—itatumia nenosiri jipya", + "backToLogin": "Rudi kwenye Kuingia", + "forgotPassword": "Umesahau nenosiri?", "continueWithOidc": "Endelea na OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", - "Authorization": "Authorization", + "defaultPasswordHint": "Nenosiri chaguomsingi: CHANGEME (isipokuwa INITIAL_PASSWORD iliwekwa)", + "Authorization": "Uidhinishaji", "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "Inasubiri uidhinishaji...", + "waitingForGoogleAuthorization": "Inasubiri uidhinishaji wa Google...", + "waitingForOpenAIAuthorization": "Inasubiri uidhinishaji wa OpenAI...", + "waitingForAntigravityAuthorization": "Inasubiri uidhinishaji wa Antigravity...", + "waitingForQoderAuthorization": "Inasubiri uidhinishaji wa Qoder...", + "exchangingCodeForTokens": "Inabadilisha msimbo kuwa tokeni...", + "nodeIncompatibleTitle": "Toleo la Node.js Lisilooana", + "nodeIncompatibleDesc": "Unatumia Node.js {version}, ambalo haliruhusiwi na sera ya OmniRoute ya mazingira salama ya utekelezaji. Tumia toleo la Node.js 20.x au 22.x LTS lililowekewa viraka.", + "nodeIncompatibleFixLabel": "Suluhisho: sakinisha toleo la Node.js 22 LTS lililowekewa viraka", + "nodeIncompatibleHint": "OmniRoute inahitaji Node.js 22.22.2+ (22.x LTS) au 24.0.0+ (24.x LTS). Node 24 LTS inapendekezwa.", "resetViaAppDataTitle": "Rekebisha kupitia Takwimu za Programu", "resetViaAppDataDescription": "Futa faili la mipangilio kutoka kwenye saraka ya data ya programu ili kurekebisha nenosiri lako:", "quitDesktopApp": "Funga programu ya desktop ya OmniRoute kabisa", @@ -9930,72 +9937,72 @@ }, "landing": { "brandName": "OmniRoute", - "navigateHome": "Navigate to home", - "toggleMenu": "Toggle menu", - "featuresLink": "Features", - "docsLink": "Docs", + "navigateHome": "Nenda kwenye ukurasa wa mwanzo", + "toggleMenu": "Fungua au funga menyu", + "featuresLink": "Vipengele", + "docsLink": "Nyaraka", "github": "GitHub", - "versionLive": "v1.0 is now live", - "oneEndpoint": "One Endpoint for", - "allProviders": "All AI Providers", - "heroDescription": "AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.", - "getStarted": "Get Started", - "viewOnGithub": "View on GitHub", - "powerfulFeatures": "Powerful Features", - "featuresSubtitle": "Everything you need to manage your AI infrastructure in one place, built for scale.", - "featureUnifiedEndpointTitle": "Unified Endpoint", - "featureUnifiedEndpointDesc": "Access all providers via a single standard API URL.", - "featureEasySetupTitle": "Easy Setup", - "featureEasySetupDesc": "Get up and running in minutes with npx command.", - "featureModelFallbackTitle": "Model Fallback", - "featureModelFallbackDesc": "Automatically switch providers on failure or high latency.", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Detailed analytics and cost monitoring across all models.", - "featureOAuthApiKeysTitle": "OAuth & API Keys", - "featureOAuthApiKeysDesc": "Securely manage credentials in one vault.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncDesc": "Sync your configurations across devices instantly.", - "featureCliSupportTitle": "CLI Support", - "featureCliSupportDesc": "Works with Claude Code, Codex, Cline, Cursor, and more.", - "featureDashboardTitle": "Dashboard", - "featureDashboardDesc": "Visual dashboard for real-time traffic analysis.", - "howItWorks": "How OmniRoute Works", - "howItWorksDescription": "Data flows seamlessly from your application through our intelligent routing layer to the best provider for the job.", - "howItWorksStep1Title": "1. CLI & SDKs", - "howItWorksStep1Description": "Your requests start from your favorite tools or our unified SDK. Just change the base URL.", - "howItWorksStep2Title": "2. OmniRoute Hub", - "howItWorksStep2Description": "Our engine analyzes the prompt, checks provider health, and routes for lowest latency or cost.", - "howItWorksStep3Title": "3. AI Providers", - "howItWorksStep3Description": "The request is fulfilled by OpenAI, Anthropic, Gemini, or others instantly.", - "getStartedIn30Seconds": "Get Started in 30 Seconds", - "getStartedDescription": "Install OmniRoute, configure your providers via web dashboard, and start routing AI requests.", - "installOmniRoute": "Install OmniRoute", - "installStepDescription": "Run npx command to start the server instantly", - "openDashboard": "Open Dashboard", - "openDashboardStepDescription": "Configure providers and API keys via web interface", - "routeRequests": "Route Requests", - "routeRequestsStepDescription": "Point your CLI tools to {endpoint}", - "terminal": "terminal", - "copy": "Copy", - "copied": "✓ Copied", - "startingOmniRoute": "Starting OmniRoute...", - "serverRunningOnLabel": "Server running on", - "dashboardLabel": "Dashboard", - "readyToRoute": "Ready to route! ✓", - "configureProvidersNote": "📝 Configure providers in dashboard or use environment variables", - "dataLocation": "Data Location:", + "versionLive": "v1.0 sasa inapatikana", + "oneEndpoint": "Endpoint Moja kwa", + "allProviders": "Watoa Huduma Wote wa AI", + "heroDescription": "Proksi ya endpoint ya AI yenye dashibodi ya wavuti—toleo la JavaScript la CLIProxyAPI. Hufanya kazi kwa urahisi na Claude Code, OpenAI Codex, Cline, RooCode na zana nyingine za CLI.", + "getStarted": "Anza Kutumia", + "viewOnGithub": "Tazama kwenye GitHub", + "powerfulFeatures": "Vipengele Madhubuti", + "featuresSubtitle": "Kila kitu unachohitaji ili kudhibiti miundombinu yako ya AI mahali pamoja, kilichoundwa kukua kulingana na mahitaji.", + "featureUnifiedEndpointTitle": "Endpoint Iliyounganishwa", + "featureUnifiedEndpointDesc": "Fikia watoa huduma wote kupitia URL moja ya kawaida ya API.", + "featureEasySetupTitle": "Usanidi Rahisi", + "featureEasySetupDesc": "Anza kutumia ndani ya dakika chache kwa amri ya npx.", + "featureModelFallbackTitle": "Ubadilishaji wa Muundo Mbadala", + "featureModelFallbackDesc": "Badilisha watoa huduma kiotomatiki panapotokea hitilafu au ucheleweshaji mkubwa.", + "featureUsageTrackingTitle": "Ufuatiliaji wa Matumizi", + "featureUsageTrackingDesc": "Uchanganuzi wa kina na ufuatiliaji wa gharama katika miundo yote.", + "featureOAuthApiKeysTitle": "OAuth na Funguo za API", + "featureOAuthApiKeysDesc": "Dhibiti vitambulisho kwa usalama katika hifadhi moja.", + "featureCloudSyncTitle": "Usawazishaji wa Wingu", + "featureCloudSyncDesc": "Sawazisha usanidi wako kwenye vifaa vyote papo hapo.", + "featureCliSupportTitle": "Usaidizi wa CLI", + "featureCliSupportDesc": "Hufanya kazi na Claude Code, Codex, Cline, Cursor, na nyinginezo.", + "featureDashboardTitle": "Dashibodi", + "featureDashboardDesc": "Dashibodi ya kuona kwa uchanganuzi wa trafiki wa wakati halisi.", + "howItWorks": "Jinsi OmniRoute Inavyofanya Kazi", + "howItWorksDescription": "Data hutiririka kwa urahisi kutoka kwenye programu yako kupitia safu yetu mahiri ya uelekezaji hadi kwa mtoa huduma anayefaa zaidi kwa kazi hiyo.", + "howItWorksStep1Title": "1. CLI na SDK", + "howItWorksStep1Description": "Maombi yako huanzia kwenye zana unazopenda au SDK yetu iliyounganishwa. Badilisha tu URL ya msingi.", + "howItWorksStep2Title": "2. Kitovu cha OmniRoute", + "howItWorksStep2Description": "Injini yetu huchanganua kidokezo, hukagua hali ya watoa huduma, na kuelekeza kwa ucheleweshaji au gharama ya chini zaidi.", + "howItWorksStep3Title": "3. Watoa Huduma za AI", + "howItWorksStep3Description": "Ombi hutekelezwa papo hapo na OpenAI, Anthropic, Gemini, au wengine.", + "getStartedIn30Seconds": "Anza Ndani ya Sekunde 30", + "getStartedDescription": "Sakinisha OmniRoute, sanidi watoa huduma wako kupitia dashibodi ya wavuti, na uanze kuelekeza maombi ya AI.", + "installOmniRoute": "Sakinisha OmniRoute", + "installStepDescription": "Endesha amri ya npx ili kuanzisha seva papo hapo", + "openDashboard": "Fungua Dashibodi", + "openDashboardStepDescription": "Sanidi watoa huduma na funguo za API kupitia kiolesura cha wavuti", + "routeRequests": "Elekeza Maombi", + "routeRequestsStepDescription": "Elekeza zana zako za CLI kwenye {endpoint}", + "terminal": "terminali", + "copy": "Nakili", + "copied": "✓ Imenakiliwa", + "startingOmniRoute": "Inaanzisha OmniRoute...", + "serverRunningOnLabel": "Seva inaendeshwa kwenye", + "dashboardLabel": "Dashibodi", + "readyToRoute": "Tayari kuelekeza! ✓", + "configureProvidersNote": "📝 Sanidi watoa huduma kwenye dashibodi au tumia vigeu vya mazingira", + "dataLocation": "Mahali Data Ilipo:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", - "product": "Product", - "dashboardLink": "Dashboard", - "changelog": "Changelog", - "resources": "Resources", - "documentation": "Documentation", + "product": "Bidhaa", + "dashboardLink": "Dashibodi", + "changelog": "Orodha ya Mabadiliko", + "resources": "Rasilimali", + "documentation": "Nyaraka", "npm": "NPM", - "legal": "Legal", - "mitLicense": "MIT License", - "footerTagline": "The unified endpoint for AI generation. Connect, route, and manage your AI providers with ease.", - "copyright": "© {year} OmniRoute. All rights reserved.", + "legal": "Masuala ya Kisheria", + "mitLicense": "Leseni ya MIT", + "footerTagline": "Endpoint iliyounganishwa kwa ajili ya uzalishaji wa AI. Unganisha, elekeza, na udhibiti watoa huduma wako wa AI kwa urahisi.", + "copyright": "© {year} OmniRoute. Haki zote zimehifadhiwa.", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", "flowToolCline": "Cline", @@ -10004,11 +10011,11 @@ "flowProviderAnthropic": "Anthropic", "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", - "interactiveDiagram": "Interactive diagram visible on desktop", - "ctaTitle": "Ready to Simplify Your AI Infrastructure?", - "ctaDescription": "Join developers who are streamlining their AI integrations with OmniRoute. Open source and free to start.", - "startFree": "Start Free", - "readDocumentation": "Read Documentation", + "interactiveDiagram": "Mchoro shirikishi unaonekana kwenye kompyuta ya mezani", + "ctaTitle": "Uko Tayari Kurahisisha Miundombinu Yako ya AI?", + "ctaDescription": "Jiunge na wasanidi programu wanaorahisisha miunganisho yao ya AI kwa kutumia OmniRoute. Ni chanzo huria na ni bure kuanza.", + "startFree": "Anza Bila Malipo", + "readDocumentation": "Soma Nyaraka", "company": "Kampuni", "pricing": "Bei", "apiReference": "Marejeo ya API", @@ -10023,45 +10030,45 @@ "communityDiscussions": "Majadiliano ya Jamii" }, "docs": { - "title": "Documentation", - "quickStart": "Quick Start", + "title": "Nyaraka", + "quickStart": "Anza Haraka", "deploymentGuides": "Miongozo ya Usambazaji", - "features": "Features", - "supportedProviders": "Supported Providers", - "supportedProvidersToc": "Providers", - "commonUseCases": "Common Use Cases", - "clientCompatibility": "Client Compatibility", - "protocolsToc": "Protocols", - "apiReference": "API Reference", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", - "method": "Method", - "path": "Path", - "notes": "Notes", - "modelPrefixes": "Model Prefixes", - "prefix": "Prefix", - "troubleshooting": "Troubleshooting", - "supportsChat": "Supports both chat and responses endpoints.", - "oauthAutoRefresh": "OAuth connection with automatic token refresh.", - "fullStreaming": "Full streaming support for all models.", - "docsLabel": "Docs", + "features": "Vipengele", + "supportedProviders": "Watoa Huduma Wanaotumika", + "supportedProvidersToc": "Watoa Huduma", + "commonUseCases": "Matumizi ya Kawaida", + "clientCompatibility": "Uoanifu wa Kiteja", + "protocolsToc": "Itifaki", + "apiReference": "Rejeleo la API", + "managementApiReference": "Rejeleo la API ya Usimamizi", + "managementApiDescription": "Endpoint za kiotomatiki za sajili ya proksi, ugawaji wa mawanda, na uhamishaji wa proksi za zamani.", + "method": "Mbinu", + "path": "Njia", + "notes": "Maelezo", + "modelPrefixes": "Viambishi Awali vya Modeli", + "prefix": "Kiambishi Awali", + "troubleshooting": "Utatuzi wa Matatizo", + "supportsChat": "Inatumia endpoint za gumzo na majibu.", + "oauthAutoRefresh": "Muunganisho wa OAuth wenye uonyeshaji upya wa tokeni kiotomatiki.", + "fullStreaming": "Usaidizi kamili wa utiririshaji kwa modeli zote.", + "docsLabel": "Nyaraka", "docsHeroDescription": "AI gateway for multi-provider LLMs. One endpoint for OpenAI, Anthropic, Gemini, DeepSeek, GitHub Copilot, Claude Code, Cursor, and 100+ more providers.", - "openDashboard": "Open Dashboard", - "endpointPage": "Endpoint Page", + "openDashboard": "Fungua Dashibodi", + "endpointPage": "Ukurasa wa Endpoint", "github": "GitHub", - "reportIssue": "Report Issue", - "onThisPage": "On this page", - "documentationVersion": "Documentation - v{version}", - "quickStartStep1Title": "1. Install and run", - "quickStartStep1Prefix": "Run", - "quickStartStep1Middle": "or clone from GitHub and run", - "quickStartStep2Title": "2. Create API key", - "quickStartStep2Text": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "quickStartStep3Title": "3. Connect providers", - "quickStartStep3Text": "Add provider accounts via OAuth login, API key, or free-tier auto-connect.", - "quickStartStep4Title": "4. Set client base URL", - "quickStartStep4Prefix": "Point your IDE or API client to", - "quickStartStep4Suffix": "Use provider prefix, for example", + "reportIssue": "Ripoti Tatizo", + "onThisPage": "Kwenye ukurasa huu", + "documentationVersion": "Nyaraka - v{version}", + "quickStartStep1Title": "1. Sakinisha na uendeshe", + "quickStartStep1Prefix": "Endesha", + "quickStartStep1Middle": "au nakili kutoka GitHub na uendeshe", + "quickStartStep2Title": "2. Unda ufunguo wa API", + "quickStartStep2Text": "Nenda kwenye Endpoint -> Registered Keys. Tengeneza ufunguo mmoja kwa kila mazingira.", + "quickStartStep3Title": "3. Unganisha watoa huduma", + "quickStartStep3Text": "Ongeza akaunti za watoa huduma kupitia kuingia kwa OAuth, ufunguo wa API, au muunganisho wa kiotomatiki wa kiwango cha bure.", + "quickStartStep4Title": "4. Weka URL msingi ya mteja", + "quickStartStep4Prefix": "Elekeza IDE au kiteja chako cha API kwenye", + "quickStartStep4Suffix": "Tumia kiambishi awali cha mtoa huduma, kwa mfano", "deploySetupTitle": "Mwongozo wa Kuweka", "deploySetupText": "Usakinishaji wa hatua kwa hatua, usanidi wa mazingira, na mapitio ya mara ya kwanza ya OmniRoute.", "deployElectronTitle": "Desktop ya elektroni", @@ -10075,161 +10082,161 @@ "deployPwaTitle": "PWA", "deployPwaText": "Sakinisha OmniRoute kama Programu Inayoendelea ya Wavuti kwenye vivinjari vya Android, iOS na eneo-kazi.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", - "featureRoutingTitle": "Multi-Provider Routing", - "featureRoutingText": "Route requests to 30+ AI providers through a single OpenAI-compatible endpoint. Supports chat, responses, audio, and image APIs.", - "featureCombosTitle": "Combos and Balancing", - "featureCombosText": "Create model combos with fallback chains and balancing strategies: round-robin, priority, random, least-used, and cost-optimized.", - "featureUsageTitle": "Usage and Cost Tracking", - "featureUsageText": "Real-time token counting, cost calculation per provider/model, and detailed usage breakdown by API key and account.", - "featureAnalyticsTitle": "Analytics Dashboard", - "featureAnalyticsText": "Visual analytics with charts for requests, tokens, errors, latency, costs, and model popularity over time.", - "featureHealthTitle": "Health Monitoring", - "featureHealthText": "Live health checks, provider status, circuit breaker states, and automatic rate limit detection with exponential backoff.", - "featureCliTitle": "CLI Tools", - "featureCliText": "Manage IDE configurations, export/import backups, discover codex profiles, and configure settings from the dashboard.", - "featureSecurityTitle": "Security and Policies", - "featureSecurityText": "API key authentication, IP filtering, prompt injection guard, domain policies, session management, and audit logging.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncText": "Sync your configuration to Cloudflare Workers for remote access with encrypted credentials and automatic failover.", - "providersAcrossConnectionTypes": "{count} providers across three connection types.", - "manageProviders": "Manage Providers", - "providersCount": "{count} providers", - "providerTypeFree": "Free Tier", + "deployTermuxText": "Endesha OmniRoute bila kiolesura kwenye Android kupitia Termux. Fikia dashibodi kutoka kwenye kivinjari chako cha simu.", + "featureRoutingTitle": "Uelekezaji kwa Watoa Huduma Wengi", + "featureRoutingText": "Elekeza maombi kwa watoa huduma 30+ wa AI kupitia endpoint moja inayooana na OpenAI. Inatumia API za gumzo, majibu, sauti na picha.", + "featureCombosTitle": "Mikusanyiko na Usawazishaji", + "featureCombosText": "Unda mikusanyiko ya modeli yenye misururu ya mbadala na mikakati ya usawazishaji: kwa zamu, kipaumbele, nasibu, iliyotumika kwa kiwango cha chini, na iliyoboreshwa kwa gharama.", + "featureUsageTitle": "Ufuatiliaji wa Matumizi na Gharama", + "featureUsageText": "Kuhesabu tokeni kwa wakati halisi, kukokotoa gharama kwa kila mtoa huduma/modeli, na uchanganuzi wa kina wa matumizi kulingana na ufunguo wa API na akaunti.", + "featureAnalyticsTitle": "Dashibodi ya Uchanganuzi", + "featureAnalyticsText": "Uchanganuzi unaoonekana wenye chati za maombi, tokeni, hitilafu, muda wa kusubiri, gharama na umaarufu wa modeli kadiri muda unavyopita.", + "featureHealthTitle": "Ufuatiliaji wa Afya ya Mfumo", + "featureHealthText": "Ukaguzi wa moja kwa moja wa afya ya mfumo, hali ya mtoa huduma, hali za circuit breaker, na utambuzi wa kiotomatiki wa vikomo vya kasi wenye ucheleweshaji unaoongezeka kwa kasi.", + "featureCliTitle": "Zana za CLI", + "featureCliText": "Dhibiti usanidi wa IDE, hamisha/leta nakala rudufu, gundua wasifu wa codex, na usanidi mipangilio kutoka kwenye dashibodi.", + "featureSecurityTitle": "Usalama na Sera", + "featureSecurityText": "Uthibitishaji kwa ufunguo wa API, uchujaji wa IP, ulinzi dhidi ya prompt injection, sera za vikoa, usimamizi wa vipindi, na uwekaji kumbukumbu za ukaguzi.", + "featureCloudSyncTitle": "Usawazishaji wa Wingu", + "featureCloudSyncText": "Sawazisha usanidi wako kwenye Cloudflare Workers kwa ufikiaji wa mbali wenye vitambulisho vilivyosimbwa kwa njia fiche na uhamishaji wa kiotomatiki kwenda mfumo mbadala.", + "providersAcrossConnectionTypes": "Watoa huduma {count} katika aina tatu za muunganisho.", + "manageProviders": "Dhibiti Watoa Huduma", + "providersCount": "Watoa huduma {count}", + "providerTypeFree": "Kiwango cha Bure", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", - "useCaseSingleEndpointTitle": "Single endpoint for many providers", - "useCaseSingleEndpointText": "Point clients to one base URL and route by model prefix (for example: gh/, cc/, kr/, openai/).", - "useCaseFallbackTitle": "Fallback and model switching with combos", - "useCaseFallbackText": "Create combo models in Dashboard and keep client config stable while providers rotate internally.", - "useCaseUsageVisibilityTitle": "Usage, cost and debug visibility", - "useCaseUsageVisibilityText": "Track tokens and cost by provider, account, and API key in Usage and Analytics tabs.", + "providerTypeApiKey": "Ufunguo wa API", + "useCaseSingleEndpointTitle": "Endpoint moja kwa watoa huduma wengi", + "useCaseSingleEndpointText": "Elekeza viteja kwenye URL msingi moja na uelekeze kwa kutumia kiambishi awali cha modeli (kwa mfano: gh/, cc/, kr/, openai/).", + "useCaseFallbackTitle": "Mbadala na ubadilishaji wa modeli kwa kutumia mikusanyiko", + "useCaseFallbackText": "Unda modeli za mkusanyiko katika Dashboard na udumishe usanidi thabiti wa kiteja huku watoa huduma wakibadilishana kwa ndani.", + "useCaseUsageVisibilityTitle": "Mwonekano wa matumizi, gharama na utatuzi wa hitilafu", + "useCaseUsageVisibilityText": "Fuatilia tokeni na gharama kulingana na mtoa huduma, akaunti na ufunguo wa API katika vichupo vya Usage na Analytics.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", - "modelRecommendationLabel": "Model recommendation: explicit prefix", - "clientCodexTitle": "Codex / GitHub Copilot Models", - "clientCodexBullet1": "Use model IDs with", - "clientCodexBullet2": "Codex-family models auto-route to", - "clientCodexBullet3": "Non-Codex models continue on", + "baseUrlLabel": "URL ya msingi", + "chatEndpointLabel": "Endpoint ya gumzo", + "modelRecommendationLabel": "Pendekezo la modeli: kiambishi awali bayana", + "clientCodexTitle": "Modeli za Codex / GitHub Copilot", + "clientCodexBullet1": "Tumia vitambulisho vya modeli vyenye", + "clientCodexBullet2": "Modeli za familia ya Codex huelekezwa kiotomatiki kwenda", + "clientCodexBullet3": "Modeli zisizo za Codex huendelea kwenye", "clientCursorTitle": "Cursor IDE", - "clientCursorBullet1": "Use", - "clientCursorBullet1Suffix": "prefix for Cursor models.", - "clientCursorBullet2": "OAuth connection - login from the Providers page.", + "clientCursorBullet1": "Tumia", + "clientCursorBullet1Suffix": "kiambishi awali kwa modeli za Cursor.", + "clientCursorBullet2": "Muunganisho wa OAuth - ingia kutoka kwenye ukurasa wa Providers.", "clientClaudeTitle": "Claude Code / Antigravity", - "clientClaudeBullet1Prefix": "Use", - "clientClaudeBullet1Middle": "(Claude) or", - "clientClaudeBullet1Suffix": "(Antigravity) prefix.", + "clientClaudeBullet1Prefix": "Tumia", + "clientClaudeBullet1Middle": "kiambishi awali cha (Claude) au", + "clientClaudeBullet1Suffix": "cha (Antigravity).", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "Use OmniRoute as an OpenAI-compatible base URL and keep explicit provider prefixes for deterministic routing.", - "clientWindsurfBullet2": "Point models to `/v1/chat/completions` for general traffic and preserve `/v1/responses` for Codex-style flows.", - "clientWindsurfBullet3": "Use Dashboard -> CLI Tools for a ready-made Windsurf configuration guide.", + "clientWindsurfBullet1": "Tumia OmniRoute kama URL ya msingi inayooana na OpenAI na uhifadhi viambishi awali bayana vya watoa huduma kwa uelekezaji thabiti.", + "clientWindsurfBullet2": "Elekeza modeli kwenye `/v1/chat/completions` kwa trafiki ya jumla na uhifadhi `/v1/responses` kwa mitiririko ya mtindo wa Codex.", + "clientWindsurfBullet3": "Tumia Dashboard -> CLI Tools kupata mwongozo wa usanidi wa Windsurf ulio tayari kutumika.", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline works best with explicit provider/model prefixes so the router never has to guess the backend.", - "clientClineBullet2": "Use `/v1/chat/completions` for general models and reuse the same OmniRoute base URL across different accounts.", - "clientClineBullet3": "Use the Providers dashboard to validate OAuth/API key before debugging Cline runtime issues.", + "clientClineBullet1": "Cline hufanya kazi vizuri zaidi kwa viambishi awali bayana vya mtoa huduma/modeli ili kipanga njia kisilazimike kamwe kukisia mfumo wa nyuma.", + "clientClineBullet2": "Tumia `/v1/chat/completions` kwa modeli za jumla na utumie tena URL ileile ya msingi ya OmniRoute kwenye akaunti tofauti.", + "clientClineBullet3": "Tumia dashibodi ya Providers kuthibitisha OAuth/ufunguo wa API kabla ya kutatua matatizo ya wakati wa utekelezaji wa Cline.", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "Use OmniRoute as a stable base URL while rotating accounts or provider combos underneath.", - "clientKimiBullet2": "Prefer prefixed models in coding flows so fallback and audit trail remain explicit.", - "clientKimiBullet3": "Use `/v1/responses` when you want native Responses-style routing for tool-using clients.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "clientKimiBullet1": "Tumia OmniRoute kama URL thabiti ya msingi huku ukibadilisha akaunti au michanganyiko ya watoa huduma inayoitumia.", + "clientKimiBullet2": "Pendelea modeli zenye viambishi awali katika mitiririko ya usimbaji ili urejeshaji mbadala na rekodi ya ukaguzi viendelee kuwa bayana.", + "clientKimiBullet3": "Tumia `/v1/responses` unapotaka uelekezaji asilia wa mtindo wa Responses kwa wateja wanaotumia zana.", + "protocolsTitle": "Itifaki: MCP na A2A", + "protocolsDescription": "OmniRoute hutoa itifaki mbili za uendeshaji pamoja na API zinazooana na OpenAI: MCP kwa utekelezaji wa zana na A2A kwa mitiririko ya kazi kati ya mawakala.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Tumia MCP kupitia stdio ili kuruhusu wateja kugundua na kuita zana za OmniRoute kwa mwonekano wa ukaguzi.", + "protocolMcpStep1": "Anzisha usafirishaji wa MCP kwa `omniroute --mcp`.", + "protocolMcpStep2": "Elekeza kiteja chako cha MCP kwenye usafirishaji wa stdio.", + "protocolMcpStep3": "Ita `omniroute_get_health` na `omniroute_list_combos` ili kuthibitisha muunganisho.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", - "endpointChatNote": "OpenAI-compatible chat endpoint (default).", - "endpointResponsesNote": "Responses API endpoint (Codex, o-series).", - "endpointModelsNote": "Model catalog for all connected providers.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", - "endpointSpeechNote": "Text-to-speech generation (ElevenLabs, OpenAI TTS).", - "endpointEmbeddingsNote": "Text embedding generation (OpenAI, Cohere, Voyage).", - "endpointImagesNote": "Image generation (NanoBanana).", - "endpointRewriteChatNote": "Rewrite helper for clients without /v1.", - "endpointRewriteResponsesNote": "Rewrite helper for Responses without /v1.", - "endpointRewriteModelsNote": "Rewrite helper for model discovery without /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", - "modelPrefixesDescriptionStart": "Use the provider prefix before the model name to route to a specific provider. Example:", - "modelPrefixesDescriptionEnd": "routes to GitHub Copilot.", - "provider": "Provider", - "type": "Type", - "troubleshootingModelRouting": "If the client fails with model routing, use explicit provider/model (for example: gh/gpt-5.1-codex).", - "troubleshootingAmbiguousModels": "If you receive ambiguous model errors, pick a provider prefix instead of a bare model ID.", - "troubleshootingCodexFamily": "For GitHub Codex-family models, keep model as gh/codex-model; router selects /responses automatically.", - "troubleshootingTestConnection": "Use Dashboard > Providers > Test Connection before testing from IDEs or external clients.", - "troubleshootingCircuitBreaker": "If a provider shows circuit breaker open, wait for the cooldown or check Health page for details.", - "troubleshootingOAuth": "For OAuth providers, re-authenticate if tokens expire. Check the provider card status indicator.", - "endpointCompletionsNote": "Legacy completions endpoint for text generation.", - "endpointModerationsNote": "Content moderation and safety classification.", - "endpointRerankNote": "Document reranking for retrieval-augmented generation (Cohere, Jina).", - "endpointSearchNote": "Web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity).", - "endpointSearchAnalyticsNote": "Analytics and metrics for search requests.", - "endpointVideoNote": "Video generation (ComfyUI, SD WebUI workflows).", - "endpointMusicNote": "Music generation via ComfyUI workflows.", - "endpointMessagesNote": "Anthropic-native messages endpoint.", - "endpointCountTokensNote": "Count tokens for a given message payload.", - "endpointFilesNote": "File upload for multimodal inputs.", - "endpointBatchesNote": "Batch processing for bulk API requests.", - "endpointWsNote": "WebSocket endpoint for real-time streaming.", - "mgmtProvidersListNote": "List all registered provider connections.", - "mgmtProvidersCreateNote": "Create a new provider connection.", - "mgmtProvidersUpdateNote": "Update an existing provider connection.", - "mgmtProvidersDeleteNote": "Delete a provider connection.", - "mgmtProvidersTestNote": "Test connectivity and authentication for a provider.", - "mgmtProvidersModelsNote": "List available models for a specific provider.", - "mgmtSettingsGetNote": "Retrieve current application settings.", - "mgmtSettingsUpdateNote": "Update application settings.", - "mgmtPayloadRulesGetNote": "Get payload transformation rules.", - "mgmtPayloadRulesUpdateNote": "Update payload transformation rules.", - "mcpToolsTitle": "MCP Tools", - "mcpToolsDescription": "OmniRoute exposes {count} tools via Model Context Protocol for agent orchestration.", - "mcpToolsCount": "{count} tools", - "mcpToolsToc": "MCP Tools", - "mcpToolsRoutingTitle": "Routing & Discovery", - "mcpToolsRoutingDesc": "Health checks, combo management, quota monitoring, cost reporting, and model catalog access.", - "mcpToolsOperationsTitle": "Operations & Strategy", - "mcpToolsOperationsDesc": "Route simulation, budget guards, strategy switching, resilience profiles, and provider metrics.", - "mcpToolsCacheTitle": "Cache Management", - "mcpToolsCacheDesc": "View cache statistics and flush semantic or signature caches.", + "protocolA2aDesc": "Tumia A2A JSON-RPC kuwasilisha kazi kwa usawazishaji au kupitia utiririshaji wa SSE.", + "protocolA2aStep1": "Soma `/.well-known/agent.json` kwa ugunduzi wa wakala.", + "protocolA2aStep2": "Tuma maombi ya `message/send` au `message/stream` kwenda `POST /a2a`.", + "protocolA2aStep3": "Dhibiti mzunguko wa maisha wa kazi kwa `tasks/get` na `tasks/cancel`.", + "protocolTroubleshootingTitle": "Utatuzi wa Matatizo ya Itifaki", + "protocolTroubleshooting1": "Ikiwa hali ya MCP iko nje ya mtandao, thibitisha kuwa mchakato wa stdio unaendelea na faili ya mpigo wa moyo inasasishwa.", + "protocolTroubleshooting2": "Ikiwa kazi za A2A zitasalia katika hali ya `working`, kagua `/api/a2a/tasks/:id` na matukio ya mtiririko ili kupata hali ya mwisho.", + "protocolTroubleshooting3": "Tumia `/dashboard/mcp` na `/dashboard/a2a` kwa vidhibiti vya uendeshaji na mwonekano wa ukaguzi.", + "endpointChatNote": "Endpoint ya gumzo inayooana na OpenAI (chaguomsingi).", + "endpointResponsesNote": "Endpointi ya Responses API (Codex, mfululizo wa o).", + "endpointModelsNote": "Katalogi ya modeli kwa watoa huduma wote waliounganishwa.", + "endpointAudioNote": "Unukuzi wa sauti (Deepgram, AssemblyAI).", + "endpointSpeechNote": "Uzalishaji wa matamshi kutoka kwa maandishi (ElevenLabs, OpenAI TTS).", + "endpointEmbeddingsNote": "Uzalishaji wa upachikaji wa maandishi (OpenAI, Cohere, Voyage).", + "endpointImagesNote": "Uzalishaji wa picha (NanoBanana).", + "endpointRewriteChatNote": "Kisaidizi cha kuandika upya kwa wateja wasio na /v1.", + "endpointRewriteResponsesNote": "Kisaidizi cha kuandika upya kwa Responses zisizo na /v1.", + "endpointRewriteModelsNote": "Kisaidizi cha kuandika upya kwa ugunduzi wa modeli bila /v1.", + "mgmtProxiesListNote": "Orodhesha vipengee vya sajili ya proksi vilivyohifadhiwa (inaauni ugawaji katika kurasa).", + "mgmtProxiesCreateNote": "Unda kipengee cha proksi kinachoweza kutumika tena katika sajili.", + "mgmtProxiesHealthNote": "Pata vipimo vya afya vya saa 24/vinavyosonga kwa kila proksi iliyohifadhiwa kutoka kwenye kumbukumbu za proksi.", + "mgmtProxiesBulkAssignNote": "Weka au ondoa proksi moja kwenye vitambulisho vingi vya mawanda katika ombi moja.", + "mgmtAssignmentsListNote": "Orodhesha migawo ya proksi kwa scope, scope_id, au proxy_id.", + "mgmtAssignmentsUpdateNote": "Weka au ondoa proksi kwa mawanda ya global/provider/account/combo.", + "mgmtLegacyMigrationNote": "Leta ramani za zamani za proxyConfig katika migawo ya sajili.", + "modelPrefixesDescriptionStart": "Tumia kiambishi awali cha mtoa huduma kabla ya jina la modeli ili kuelekeza kwa mtoa huduma mahususi. Mfano:", + "modelPrefixesDescriptionEnd": "huelekeza kwa GitHub Copilot.", + "provider": "Mtoa huduma", + "type": "Aina", + "troubleshootingModelRouting": "Ikiwa mteja atashindwa katika uelekezaji wa modeli, tumia provider/model bayana (kwa mfano: gh/gpt-5.1-codex).", + "troubleshootingAmbiguousModels": "Ukipokea hitilafu za utata wa modeli, chagua kiambishi awali cha mtoa huduma badala ya kitambulisho cha modeli pekee.", + "troubleshootingCodexFamily": "Kwa modeli za familia ya GitHub Codex, acha modeli ikiwa gh/codex-model; kipanga njia huchagua /responses kiotomatiki.", + "troubleshootingTestConnection": "Tumia Dashboard > Providers > Test Connection kabla ya kujaribu kutoka kwenye IDE au wateja wa nje.", + "troubleshootingCircuitBreaker": "Ikiwa mtoa huduma anaonyesha kuwa circuit breaker imefunguka, subiri kipindi cha utulivu au angalia ukurasa wa Health kwa maelezo.", + "troubleshootingOAuth": "Kwa watoa huduma wa OAuth, thibitisha utambulisho upya ikiwa tokeni zimeisha muda wake. Angalia kiashirio cha hali kwenye kadi ya mtoa huduma.", + "endpointCompletionsNote": "Endpointi ya zamani ya ukamilishaji kwa uzalishaji wa maandishi.", + "endpointModerationsNote": "Udhibiti wa maudhui na uainishaji wa usalama.", + "endpointRerankNote": "Upangaji upya wa nyaraka kwa uzalishaji ulioboreshwa kwa urejeshaji (Cohere, Jina).", + "endpointSearchNote": "Utafutaji wa wavuti kwa kutumia watoa huduma 5 (Serper, Brave, Exa, Tavily, Perplexity).", + "endpointSearchAnalyticsNote": "Uchanganuzi na vipimo vya maombi ya utafutaji.", + "endpointVideoNote": "Uzalishaji wa video (mitiririko ya kazi ya ComfyUI, SD WebUI).", + "endpointMusicNote": "Uzalishaji wa muziki kupitia mitiririko ya kazi ya ComfyUI.", + "endpointMessagesNote": "Endpointi ya ujumbe asilia ya Anthropic.", + "endpointCountTokensNote": "Hesabu tokeni za data ya ujumbe iliyotolewa.", + "endpointFilesNote": "Upakiaji wa faili kwa ingizo za hali anuwai.", + "endpointBatchesNote": "Uchakataji wa makundi kwa maombi mengi ya API.", + "endpointWsNote": "Endpointi ya WebSocket kwa utiririshaji wa wakati halisi.", + "mgmtProvidersListNote": "Orodhesha miunganisho yote ya watoa huduma iliyosajiliwa.", + "mgmtProvidersCreateNote": "Unda muunganisho mpya wa mtoa huduma.", + "mgmtProvidersUpdateNote": "Sasisha muunganisho uliopo wa mtoa huduma.", + "mgmtProvidersDeleteNote": "Futa muunganisho wa mtoa huduma.", + "mgmtProvidersTestNote": "Jaribu muunganisho na uthibitishaji kwa mtoa huduma.", + "mgmtProvidersModelsNote": "Orodhesha modeli zinazopatikana kwa mtoa huduma mahususi.", + "mgmtSettingsGetNote": "Pata mipangilio ya sasa ya programu.", + "mgmtSettingsUpdateNote": "Sasisha mipangilio ya programu.", + "mgmtPayloadRulesGetNote": "Pata kanuni za ubadilishaji wa payload.", + "mgmtPayloadRulesUpdateNote": "Sasisha kanuni za ubadilishaji wa payload.", + "mcpToolsTitle": "Zana za MCP", + "mcpToolsDescription": "OmniRoute hutoa zana {count} kupitia Model Context Protocol kwa uratibu wa mawakala.", + "mcpToolsCount": "Zana {count}", + "mcpToolsToc": "Zana za MCP", + "mcpToolsRoutingTitle": "Uelekezaji na Ugunduzi", + "mcpToolsRoutingDesc": "Ukaguzi wa afya, usimamizi wa combo, ufuatiliaji wa mgao, ripoti za gharama na ufikiaji wa katalogi ya modeli.", + "mcpToolsOperationsTitle": "Uendeshaji na Mkakati", + "mcpToolsOperationsDesc": "Uigaji wa njia, vizuizi vya bajeti, ubadilishaji wa mkakati, wasifu wa ustahimilivu na vipimo vya watoa huduma.", + "mcpToolsCacheTitle": "Usimamizi wa Akiba", + "mcpToolsCacheDesc": "Tazama takwimu za akiba na ufute akiba za kisemantiki au sahihi.", "mcpToolsCompressionTitle": "Injini za Kukandamiza", "mcpToolsCompressionDesc": "Sanidi mbano wa RTK/Brotli, injini za kubadilishana, na kagua uchanganuzi wa mbano kwa mseto.", "mcpToolsOneProxyTitle": "1 Wakala / Vichungi", "mcpToolsOneProxyDesc": "Dhibiti seva mbadala zinazotoka nje, zungusha IP za makazi, na ukague afya ya seva mbadala.", - "mcpToolsMemoryTitle": "Memory", - "mcpToolsMemoryDesc": "Search, add, and clear persistent conversational memory entries.", - "mcpToolsSkillsTitle": "Skills", - "mcpToolsSkillsDesc": "List, enable, execute, and monitor custom skill executions.", - "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "Automatically create optimized combos based on your connected providers, usage patterns, and model capabilities.", - "featureSearchTitle": "Web Search", - "featureSearchText": "Integrated web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity) including analytics and cost tracking.", - "featureMemoryTitle": "Memory System", - "featureMemoryText": "Persistent conversational memory with extraction, injection, retrieval, and summarization across sessions.", - "featureSkillsTitle": "Skills Framework", - "featureSkillsText": "Extensible skill system with built-in and custom skills, sandbox execution, request interception, and context injection.", - "featureAcpTitle": "Agent Communication", - "featureAcpText": "Agent Communication Protocol (ACP) registry for managing agent-to-agent workflows and tool orchestration.", - "protocolAcpTitle": "ACP (Agent Communication)", - "protocolAcpDesc": "Register and manage agents via the ACP registry for inter-agent communication and tool sharing.", - "protocolAcpStep1": "Navigate to Dashboard → Agents to view registered ACP agents.", - "protocolAcpStep2": "Register new agents with capabilities and endpoint configuration.", - "protocolAcpStep3": "Use CLI Tools to configure agent communication channels.", + "mcpToolsMemoryTitle": "Kumbukumbu", + "mcpToolsMemoryDesc": "Tafuta, ongeza na ufute maingizo ya kudumu ya kumbukumbu ya mazungumzo.", + "mcpToolsSkillsTitle": "Ujuzi", + "mcpToolsSkillsDesc": "Orodhesha, washa, tekeleza na ufuatilie utekelezaji wa ujuzi maalum.", + "featureAutoComboTitle": "Mchanganyiko Otomatiki", + "featureAutoComboText": "Unda combo zilizoboreshwa kiotomatiki kulingana na watoa huduma wako waliounganishwa, mifumo ya matumizi na uwezo wa modeli.", + "featureSearchTitle": "Utafutaji wa Wavuti", + "featureSearchText": "Utafutaji jumuishi wa wavuti wenye watoa huduma 5 (Serper, Brave, Exa, Tavily, Perplexity), ukiwemo uchanganuzi na ufuatiliaji wa gharama.", + "featureMemoryTitle": "Mfumo wa Kumbukumbu", + "featureMemoryText": "Kumbukumbu endelevu ya mazungumzo yenye uchimbaji, uingizaji, urejeshaji na ufupishaji katika vipindi mbalimbali.", + "featureSkillsTitle": "Mfumo wa Ujuzi", + "featureSkillsText": "Mfumo wa ujuzi unaoweza kupanuliwa wenye ujuzi uliojengewa ndani na maalum, utekelezaji katika sandbox, uingiliaji wa maombi na uingizaji wa muktadha.", + "featureAcpTitle": "Mawasiliano ya Mawakala", + "featureAcpText": "Rejesta ya Agent Communication Protocol (ACP) ya kusimamia mtiririko wa kazi kati ya mawakala na uratibu wa zana.", + "protocolAcpTitle": "ACP (Mawasiliano ya Mawakala)", + "protocolAcpDesc": "Sajili na usimamie mawakala kupitia rejesta ya ACP kwa mawasiliano kati ya mawakala na ushiriki wa zana.", + "protocolAcpStep1": "Nenda kwenye Dashboard → Agents ili kuona mawakala wa ACP waliosajiliwa.", + "protocolAcpStep2": "Sajili mawakala wapya pamoja na uwezo wao na usanidi wa endpoint.", + "protocolAcpStep3": "Tumia CLI Tools kusanidi njia za mawasiliano ya mawakala.", "metadataTitleTemplate": "%s — Nyaraka za OmniRoute", "metadataDefaultTitle": "Hati ya OmniRoute", "metadataDescription": "Hati kamili ya lango la OmniRoute AI — usanidi, API, ufinyazi, uwekaji, na zaidi.", @@ -10276,95 +10283,95 @@ } }, "legal": { - "privacyPolicy": "Privacy Policy", - "termsOfService": "Terms of Service", - "providerConfigurations": "Provider configurations", - "apiKeys": "API keys", - "usageLogs": "Usage logs", - "applicationSettings": "Application settings", - "viewExportAnalytics": "View and export usage analytics", - "clearHistory": "Clear usage history at any time", - "configureRetention": "Configure log retention policies", - "backupRestore": "Back up and restore your database", - "privacyMetadataTitle": "Privacy Policy | OmniRoute", - "privacyMetadataDescription": "Privacy policy for the OmniRoute AI API proxy router.", - "termsMetadataTitle": "Terms of Service | OmniRoute", - "termsMetadataDescription": "Terms of service for the OmniRoute AI API proxy router.", - "backToHome": "Back to home", - "lastUpdated": "Last updated: {date}", - "policyLastUpdatedDate": "February 13, 2026", + "privacyPolicy": "Sera ya Faragha", + "termsOfService": "Masharti ya Huduma", + "providerConfigurations": "Mipangilio ya watoa huduma", + "apiKeys": "Funguo za API", + "usageLogs": "Kumbukumbu za matumizi", + "applicationSettings": "Mipangilio ya programu", + "viewExportAnalytics": "Tazama na uhamishe nje takwimu za matumizi", + "clearHistory": "Futa historia ya matumizi wakati wowote", + "configureRetention": "Sanidi sera za kuhifadhi kumbukumbu", + "backupRestore": "Hifadhi nakala rudufu na urejeshe kanzidata yako", + "privacyMetadataTitle": "Sera ya Faragha | OmniRoute", + "privacyMetadataDescription": "Sera ya faragha ya kipanga njia mbadala cha API ya AI cha OmniRoute.", + "termsMetadataTitle": "Masharti ya Huduma | OmniRoute", + "termsMetadataDescription": "Masharti ya huduma ya kipanga njia mbadala cha API ya AI cha OmniRoute.", + "backToHome": "Rudi kwenye ukurasa wa mwanzo", + "lastUpdated": "Ilisasishwa mwisho: {date}", + "policyLastUpdatedDate": "Februari 13, 2026", "listSeparator": "-", - "questionsVisit": "Questions? Visit our", - "githubRepository": "GitHub repository", - "privacySection1Title": "1. Local-First Architecture", - "privacySection1Text": "OmniRoute is designed as a local-first application. All data processing and storage occurs entirely on your machine. There is no centralized server collecting your information.", - "privacySection2Title": "2. Data We Store", - "privacyDataStoredIn": "The following data is stored locally in", - "privacyDataProviderConfigurationsDesc": "connection URLs, provider types, and priority settings", - "privacyDataApiKeysDesc": "encrypted and stored locally for authenticating with AI providers", - "privacyDataUsageLogsDesc": "request counts, token usage, model names, timestamps, and response times", - "privacyDataApplicationSettingsDesc": "theme preferences, routing strategy, and combo configurations", - "privacySection3Title": "3. No Telemetry", - "privacySection3Text": "OmniRoute does not collect telemetry, analytics, or crash reports. No data is sent to us or any third party. Your usage patterns, API calls, and configurations remain entirely private.", - "privacySection4Title": "4. Third-Party AI Providers", - "privacySection4Text": "When you make API calls through OmniRoute, your requests are forwarded to the AI providers you have configured (for example: OpenAI, Anthropic, Google). These providers have their own privacy policies that govern how they handle your data. Please review:", - "privacyOpenAiPolicy": "OpenAI Privacy Policy", - "privacyAnthropicPolicy": "Anthropic Privacy Policy", - "privacyGooglePolicy": "Google Privacy Policy", - "privacySection5Title": "5. Cloud Sync (Optional)", - "privacySection5Text": "If you enable the optional cloud sync feature, provider configurations and API keys may be transmitted to a configured cloud endpoint. This feature is disabled by default and requires explicit opt-in.", - "privacySection6Title": "6. Logging", - "privacyLoggingIntro": "Request logs can be configured through the dashboard settings. You can:", - "privacySection7Title": "7. Your Rights", - "privacySection7TextStart": "Since all data is stored locally, you have full control. You can delete your data at any time by removing the", - "privacySection7TextEnd": "directory or using the database backup and restore features in the dashboard.", - "termsSection1Title": "1. Overview", - "termsSection1Text": "OmniRoute is a local-first AI API proxy router that operates entirely on your machine. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "termsSection2Title": "2. User Responsibilities", - "termsResponsibilityApiKeys": "You are solely responsible for managing your own API keys and credentials for third-party AI providers (OpenAI, Anthropic, Google, etc.).", - "termsResponsibilityCompliance": "You must comply with the terms of service of each AI provider whose API you access through OmniRoute.", - "termsResponsibilitySecurity": "You are responsible for the security of your local OmniRoute installation, including setting a password and restricting network access.", - "termsSection3Title": "3. How It Works", - "termsSection3Text": "OmniRoute acts as an intermediary proxy. API calls sent to OmniRoute are translated and forwarded to your configured AI providers. OmniRoute does not modify the content of your requests or responses beyond the necessary protocol translation.", - "termsSection4Title": "4. Data Handling", - "termsDataStoredLocally": "All data is stored locally on your machine in a SQLite database.", - "termsNoTransmission": "OmniRoute does not transmit any data to external servers unless you explicitly enable cloud sync features.", - "termsDataLocationText": "Usage logs, API keys, and configuration are stored in", - "termsSection5Title": "5. Disclaimer", - "termsSection5Text": "OmniRoute is provided \"as is\" without warranty of any kind. We are not responsible for any costs incurred through API usage, service disruptions, or data loss. Always maintain backups of your configuration.", - "termsSection6Title": "6. Open Source", - "termsSection6Text": "OmniRoute is open-source software. You are free to inspect, modify, and distribute it under the terms of its license." + "questionsVisit": "Una maswali? Tembelea", + "githubRepository": "hazina yetu ya GitHub", + "privacySection1Title": "1. Usanifu Unaotanguliza Mfumo wa Ndani", + "privacySection1Text": "OmniRoute imeundwa kama programu inayotanguliza mfumo wa ndani. Uchakataji na uhifadhi wote wa data hufanyika kabisa kwenye mashine yako. Hakuna seva kuu inayokusanya taarifa zako.", + "privacySection2Title": "2. Data Tunayohifadhi", + "privacyDataStoredIn": "Data ifuatayo huhifadhiwa ndani ya", + "privacyDataProviderConfigurationsDesc": "URL za muunganisho, aina za watoa huduma na mipangilio ya kipaumbele", + "privacyDataApiKeysDesc": "imesimbwa kwa njia fiche na kuhifadhiwa ndani kwa ajili ya uthibitishaji na watoa huduma wa AI", + "privacyDataUsageLogsDesc": "idadi ya maombi, matumizi ya tokeni, majina ya modeli, mihuri ya muda na nyakati za majibu", + "privacyDataApplicationSettingsDesc": "mapendeleo ya mandhari, mkakati wa uelekezaji na usanidi wa michanganyiko", + "privacySection3Title": "3. Hakuna Telemetria", + "privacySection3Text": "OmniRoute haikusanyi telemetria, takwimu za uchanganuzi wala ripoti za hitilafu. Hakuna data inayotumwa kwetu au kwa mhusika mwingine yeyote. Mifumo yako ya matumizi, miito ya API na usanidi wako hubaki kuwa wa faragha kabisa.", + "privacySection4Title": "4. Watoa Huduma wa AI wa Wahusika Wengine", + "privacySection4Text": "Unapopiga miito ya API kupitia OmniRoute, maombi yako hutumwa kwa watoa huduma wa AI uliowasanidi (kwa mfano: OpenAI, Anthropic, Google). Watoa huduma hawa wana sera zao za faragha zinazosimamia jinsi wanavyoshughulikia data yako. Tafadhali pitia:", + "privacyOpenAiPolicy": "Sera ya Faragha ya OpenAI", + "privacyAnthropicPolicy": "Sera ya Faragha ya Anthropic", + "privacyGooglePolicy": "Sera ya Faragha ya Google", + "privacySection5Title": "5. Usawazishaji wa Wingu (Hiari)", + "privacySection5Text": "Ukiwasha kipengele cha hiari cha usawazishaji wa wingu, usanidi wa watoa huduma na funguo za API zinaweza kutumwa kwenye ncha ya wingu iliyosanidiwa. Kipengele hiki kimezimwa kwa chaguomsingi na kinahitaji idhini ya wazi.", + "privacySection6Title": "6. Uwekaji Kumbukumbu", + "privacyLoggingIntro": "Kumbukumbu za maombi zinaweza kusanidiwa kupitia mipangilio ya dashibodi. Unaweza:", + "privacySection7Title": "7. Haki Zako", + "privacySection7TextStart": "Kwa kuwa data yote huhifadhiwa ndani, una udhibiti kamili. Unaweza kufuta data yako wakati wowote kwa kuondoa", + "privacySection7TextEnd": "saraka au kutumia vipengele vya kuhifadhi nakala rudufu na kurejesha kanzidata katika dashibodi.", + "termsSection1Title": "1. Muhtasari", + "termsSection1Text": "OmniRoute ni kipanga njia mbadala cha API ya AI kinachotanguliza mfumo wa ndani na kufanya kazi kabisa kwenye mashine yako. Huelekeza maombi kwa watoa huduma wengi wa AI kwa kutumia usawazishaji wa mzigo, uhamisho wa kiotomatiki wakati wa hitilafu na ufuatiliaji wa matumizi.", + "termsSection2Title": "2. Majukumu ya Mtumiaji", + "termsResponsibilityApiKeys": "Unawajibika kikamilifu kudhibiti funguo zako za API na vitambulisho vya watoa huduma wengine wa AI (OpenAI, Anthropic, Google, n.k.).", + "termsResponsibilityCompliance": "Lazima uzingatie masharti ya huduma ya kila mtoa huduma wa AI ambaye API yake unaifikia kupitia OmniRoute.", + "termsResponsibilitySecurity": "Unawajibika kwa usalama wa usakinishaji wako wa ndani wa OmniRoute, ikiwa ni pamoja na kuweka nenosiri na kuzuia ufikiaji wa mtandao.", + "termsSection3Title": "3. Jinsi Inavyofanya Kazi", + "termsSection3Text": "OmniRoute hufanya kazi kama seva mbadala ya kati. Miito ya API inayotumwa kwa OmniRoute hutafsiriwa na kupelekwa kwa watoa huduma wako wa AI waliosanidiwa. OmniRoute haibadilishi maudhui ya maombi au majibu yako zaidi ya tafsiri inayohitajika ya itifaki.", + "termsSection4Title": "4. Ushughulikiaji wa Data", + "termsDataStoredLocally": "Data yote huhifadhiwa ndani ya mashine yako katika hifadhidata ya SQLite.", + "termsNoTransmission": "OmniRoute haitumi data yoyote kwa seva za nje isipokuwa uwashe vipengele vya usawazishaji wa wingu mwenyewe.", + "termsDataLocationText": "Kumbukumbu za matumizi, funguo za API na usanidi huhifadhiwa katika", + "termsSection5Title": "5. Kanusho", + "termsSection5Text": "OmniRoute hutolewa \"kama ilivyo\" bila udhamini wa aina yoyote. Hatuwajibiki kwa gharama zozote zinazotokana na matumizi ya API, kukatizwa kwa huduma au kupotea kwa data. Daima hifadhi nakala rudufu za usanidi wako.", + "termsSection6Title": "6. Programu Huria", + "termsSection6Text": "OmniRoute ni programu huria. Uko huru kuikagua, kuibadilisha na kuisambaza chini ya masharti ya leseni yake." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "Ajenti za CLI", + "description": "Gundua ajenti za CLI zilizosakinishwa kwenye mfumo wako. Ongeza ajenti maalum kwa ajili ya utambuzi wa kiotomatiki.", + "refresh": "Onyesha Upya", + "installed": "Imesakinishwa", + "notFound": "Haikupatikana", + "builtIn": "Iliyojengewa Ndani", + "custom": "Maalum", + "remove": "Ondoa", + "addCustomAgent": "Ongeza Ajenti Maalum", + "addCustomAgentDesc": "Sajili zana yoyote ya CLI ili iweze kutambuliwa. Itachanganuliwa kiotomatiki unapoonyesha upya.", + "agentName": "Jina la Ajenti", + "binaryName": "Jina la Faili Tekelezi", + "versionCommand": "Amri ya Toleo", + "spawnArgs": "Hoja za Kuanzisha", + "addAgent": "Ongeza Ajenti", + "scanning": "Inachanganua mfumo kutafuta ajenti za CLI...", + "opencodeIntegration": "Muunganisho wa OpenCode", + "opencodeDetected": "opencode {version} imetambuliwa", + "opencodeDesc": "Tengeneza {configFile} iliyo tayari kutumika ikiwa na URL msingi ya OmniRoute na modeli zote zinazopatikana — iweke kwenye mzizi wa mradi wako kisha utekeleze {command}.", + "downloadConfig": "Pakua {file}", + "downloaded": "Imepakuliwa!", + "setupGuideTitle": "Mwongozo wa usanidi", + "openCliTools": "Fungua Zana za CLI", + "setupGuideDetectCliTitle": "Tambua CLI zilizosakinishwa", + "setupGuideDetectCliDesc": "Bofya Onyesha Upya baada ya kusakinisha au kusasisha CLI ili OmniRoute iweze kuchanganua tena faili tekelezi na matoleo.", + "setupGuideCustomAgentTitle": "Sajili faili tekelezi maalum", + "setupGuideCustomAgentDesc": "Tumia Ongeza Ajenti Maalum wakati CLI yako haipo kwenye orodha iliyojengewa ndani. Toa jina la faili tekelezi na amri ya toleo.", + "setupGuideCommandMissingTitle": "Rekebisha hitilafu ya 'command not found'", + "setupGuideCommandMissingDesc": "Hakikisha amri ya CLI ipo kwenye PATH, fungua kipindi kipya cha terminal, kisha utekeleze Upyaishaji tena.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10491,148 +10498,148 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "Gumzo Rahisi", + "streaming": "Utiririshaji", + "system-prompt": "Maelekezo ya Mfumo", + "thinking": "Kufikiri", + "tool-calling": "Uitaji wa Zana", + "multi-turn": "Zamu Nyingi", "vision": "Maono", "schema-coercion": "Schema ya Schema" }, "templateDescriptions": { - "simple-chat": "Basic chat template with system message", - "streaming": "Template for streaming responses", - "system-prompt": "Template with custom system prompt", - "thinking": "Template with reasoning/thinking budget", - "tool-calling": "Template for tool/function calling", - "multi-turn": "Template for multi-turn conversations", + "simple-chat": "Kiolezo cha msingi cha gumzo chenye ujumbe wa mfumo", + "streaming": "Kiolezo cha majibu yanayotiririshwa", + "system-prompt": "Kiolezo chenye maelekezo maalum ya mfumo", + "thinking": "Kiolezo chenye bajeti ya kutoa hoja/kufikiri", + "tool-calling": "Kiolezo cha kuita zana/chaguo za kukokotoa", + "multi-turn": "Kiolezo cha mazungumzo ya zamu nyingi", "vision": "Multimodal template na pembejeo picha", "schema-coercion": "Pato-Muundo / Utekelezaji wa schema ya JSON" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful AI assistant.", - "userGreeting": "Hello! How can I help you today?" + "system": "Wewe ni msaidizi wa AI mwenye kusaidia.", + "userGreeting": "Hujambo! Ninaweza kukusaidiaje leo?" }, "streaming": { - "prompt": "Write a story about" + "prompt": "Andika hadithi kuhusu" }, "systemPrompt": { - "question": "What is the meaning of life?", - "systemInstruction": "Provide a thoughtful, philosophical answer." + "question": "Maana ya maisha ni nini?", + "systemInstruction": "Toa jibu la kina na la kifalsafa." }, "thinking": { - "question": "Explain quantum computing" + "question": "Eleza kompyuta ya kwanta" }, "toolCalling": { - "cityNameDescription": "The name of the city to get weather for", - "toolDescription": "Get current weather for a location", - "userWeather": "What's the weather in Tokyo?" + "cityNameDescription": "Jina la jiji la kupata taarifa za hali ya hewa", + "toolDescription": "Pata hali ya hewa ya sasa ya eneo", + "userWeather": "Hali ya hewa ikoje Tokyo?" }, "multiTurn": { - "system": "You are a helpful assistant.", - "assistantExample": "I'd be happy to help you with that.", - "userInitial": "I need help with", - "userFollowUp": "Can you elaborate on that?" + "system": "Wewe ni msaidizi mwenye kusaidia.", + "assistantExample": "Nitafurahi kukusaidia na hilo.", + "userInitial": "Ninahitaji msaada kuhusu", + "userFollowUp": "Unaweza kufafanua zaidi kuhusu hilo?" } }, "cache": { - "title": "Cache Management", - "description": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "refresh": "Refresh", - "clearAll": "Clear Semantic Cache", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "title": "Usimamizi wa Akiba", + "description": "Fuatilia ufanisi wa akiba ya maelekezo ya mtoa huduma na utumiaji tena wa majibu ya kisemantiki ya ndani.", + "refresh": "Onyesha Upya", + "clearAll": "Futa Akiba ya Kisemantiki", + "memoryEntries": "Vipengee vya Kumbukumbu", + "memoryEntriesSub": "LRU ya ndani ya kumbukumbu", + "dbEntries": "Vipengee vya DB", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Mafanikio ya Akiba", + "cacheHitsSub": "kati ya jumla ya {total}", + "tokensSaved": "Tokeni Zilizookolewa", + "tokensSavedSub": "Makadirio kutokana na mafanikio", + "hitRate": "Kiwango cha Mafanikio", + "performance": "Utendaji wa Akiba", + "autoRefresh": "Huonyeshwa upya kiotomatiki kila sekunde {seconds}", + "hits": "Mafanikio", + "misses": "Makosa", + "total": "Jumla", + "behavior": "Tabia ya Akiba", + "behaviorDeterministic": "Ni maombi yasiyotiririshwa yenye temperature=0 pekee yanayohifadhiwa kwenye akiba.", + "behaviorBypass": "Pita pembeni kwa kutumia kichwa {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", - "clearSuccess": "Semantic cache cleared. {count} entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "behaviorTtl": "TTL chaguomsingi: dakika 30. Sanidi kupitia {envVar}.", + "idempotency": "Safu ya Idempotensi", + "activeDedupKeys": "Funguo Amilifu za Uondoaji wa Nakala Rudufu", + "dedupWindow": "Kipindi cha Uondoaji wa Nakala Rudufu", + "clearSuccess": "Akiba ya kisemantiki imefutwa. Maingizo {count} yameondolewa.", + "clearError": "Imeshindwa kufuta akiba.", + "unavailable": "Akiba haipatikani", + "unavailableDesc": "Haikuweza kuleta takwimu za akiba. Hakikisha seva inaendeshwa.", "loadingCacheAria": "Inapakia akiba", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", - "cachedTokens": "Cache Read Tokens", - "cacheCreationTokens": "Cache Write Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", - "cachedTokensRead": "Read from cache", - "cacheCreationWrite": "Written to cache", - "cacheReuseRatio": "Cache Reuse Ratio", - "cacheReuseRatioDesc": "Cache read tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "promptCache": "Akiba ya Prompti (Upande wa Mtoa Huduma)", + "semanticCache": "Akiba ya Kisemantiki", + "promptCacheSectionDesc": "Huonyesha shughuli za uhifadhi wa prompti kwenye akiba upande wa mtoa huduma kutoka kwenye historia ya matumizi, ili uweze kuona mahali udhibiti wa akiba unapotumika na kiasi cha matumizi tena ya ingizo unachopata.", + "promptTrendDesc": "Kiasi cha maombi kwa kila saa, ufunikaji wa akiba na kiasi cha usomaji kutoka kwenye akiba katika saa 24 zilizopita.", + "cachedRequests": "Maombi Yaliyohifadhiwa kwenye Akiba", + "cachedRequests24h": "Maombi Yaliyohifadhiwa kwenye Akiba (saa 24)", + "cacheHitRate": "Kiwango cha Mafanikio ya Akiba", + "cacheRate": "Kiwango cha Akiba", + "cacheRateDesc": "ya jumla ya maombi", + "cachedTokens": "Tokeni Zilizosomwa kutoka Akiba", + "cacheCreationTokens": "Tokeni Zilizoandikwa kwenye Akiba", + "cacheMetrics": "Vipimo vya Akiba ya Prompti", + "withCacheControl": "Yenye Udhibiti wa Akiba", + "cachedTokensRead": "Zilizosomwa kutoka akiba", + "cacheCreationWrite": "Zilizoandikwa kwenye akiba", + "cacheReuseRatio": "Uwiano wa Matumizi Tena ya Akiba", + "cacheReuseRatioDesc": "Tokeni zilizosomwa kutoka akiba / Jumla ya tokeni za ingizo", + "estCostSaved": "Makadirio ya Gharama Iliyookolewa", + "lastUpdated": "Ilisasishwa mara ya mwisho", + "hoursTracked": "saa zilizofuatiliwa", + "busiestHour": "Saa Yenye Shughuli Nyingi Zaidi", + "peakCacheRate": "Kiwango cha Juu Zaidi cha Akiba", + "trendHour": "Saa", + "activityVolume": "Shughuli", + "requestsShort": "maombi", + "inputShort": "Ingizo", + "cachedShort": "Zilizohifadhiwa", + "writeShort": "Andika", + "resetting": "Inaweka upya...", + "resetMetrics": "Weka Vipimo Upya", + "byProvider": "Uchanganuzi kwa Mtoa Huduma", + "providerCacheRateDesc": "Kila mtoa huduma huonyesha jumla ya tokeni za ingizo, tokeni zilizosomwa kutoka kwenye akiba, na tokeni zilizoandikwa kwenye akiba ili uweze kuthibitisha uwiano wa matumizi tena dhidi ya jumla ghafi.", "provider": "Provider", - "requests": "Requests", - "inputTokens": "Total Input Tokens", - "cachedTokensCol": "Cache Read", - "cacheCreation": "Cache Write", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "requests": "Maombi", + "inputTokens": "Jumla ya Tokeni za Ingizo", + "cachedTokensCol": "Usomaji wa Akiba", + "cacheCreation": "Uandikaji kwenye Akiba", + "trend24h": "Mwenendo wa Akiba (saa 24)", + "peakCached": "Kilele kilichohifadhiwa", + "cached": "Zilizohifadhiwa", + "overview": "Muhtasari", "tableProvider": "Mtoa huduma", "tableModel": "Muundo", "performanceTitle": "Utendaji", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "Akiba ya majibu bainifu ya OmniRoute. Ikiwashwa, maombi yanayojirudia yasiyo ya utiririshaji yenye temperature=0 yanaweza kuhudumiwa ndani ya mfumo bila kufikia mtoa huduma wa juu.", + "semanticCacheDisabledDesc": "Akiba ya kisemantiki imezimwa. OmniRoute itaruka matumizi ya ndani ya majibu hadi uiwashe tena katika Mipangilio.", + "semanticEntriesDesc": "Rekodi za akiba ya kisemantiki zilizohifadhiwa kwa sasa katika SQLite. Shughuli za akiba ya prompt za upande wa mtoa huduma hazijaorodheshwa hapa.", + "searchEntries": "Tafuta maingizo...", + "search": "Tafuta", + "loading": "Inapakia...", + "entriesLoadError": "Imeshindwa kupakia maingizo ya akiba ya kisemantiki.", + "noEntries": "Hakuna maingizo ya akiba yaliyopatikana", + "noPromptCacheData": "Bado hakuna shughuli za akiba ya prompt za upande wa mtoa huduma zilizorekodiwa.", + "noTrendData": "Hakuna shughuli za akiba ya prompt zilizorekodiwa katika saa 24 zilizopita.", + "signature": "Sahihi", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Iliundwa", + "expires": "Inaisha Muda", + "actions": "Vitendo", + "deduplicatedRequests": "Maombi Yaliyoondolewa Rudufu", + "savedCalls": "Miito ya API Iliyookolewa", + "totalProcessed": "Jumla ya Maombi Yaliyochakatwa", + "disabled": "Imezimwa", + "totalRequests": "Jumla ya Maombi", "reasoningCache": "Kutoa Sababu Replay", "reasoningCacheDesc": "Huhifadhi fikra za kielelezo kwa mtiririko wa simu wa zana za zamu nyingi", "reasoningEntries": "Maingizo Amilifu", @@ -10669,56 +10676,56 @@ "minutesAgo": "{minutes}m zilizopita", "hoursAgo": "{hours}h zilizopita", "daysAgo": "{days}d zilizopita", - "entries": "Entries" + "entries": "Maingizo" }, "proxyConfigModal": { - "levelGlobal": "Global", - "levelProvider": "Provider", - "levelCombo": "Combo", - "levelKey": "Key", - "levelDirect": "Direct (no proxy)", - "titleGlobal": "Global Proxy Configuration", - "titleLevel": "{level} Proxy — {label}", - "loading": "Loading proxy configuration...", - "inheritingFrom": "Inheriting from", - "source": "Source", - "savedProxy": "Saved Proxy", - "custom": "Custom", - "selectSavedProxyPlaceholder": "Select saved proxy...", - "proxyType": "Proxy Type", - "host": "Host", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", - "port": "Port", - "authOptional": "Authentication (optional)", - "username": "Username", - "usernamePlaceholder": "Username", - "password": "Password", - "passwordPlaceholder": "Password", - "connected": "Connected", + "levelGlobal": "Ya Jumla", + "levelProvider": "Mtoa Huduma", + "levelCombo": "Mchanganyiko", + "levelKey": "Ufunguo", + "levelDirect": "Moja kwa moja (bila proksi)", + "titleGlobal": "Usanidi wa Proksi wa Kimataifa", + "titleLevel": "Proksi ya {level} — {label}", + "loading": "Inapakia usanidi wa proksi...", + "inheritingFrom": "Inarithi kutoka", + "source": "Chanzo", + "savedProxy": "Proksi Iliyohifadhiwa", + "custom": "Maalum", + "selectSavedProxyPlaceholder": "Chagua proksi iliyohifadhiwa...", + "proxyType": "Aina ya Proksi", + "host": "Seva Pangishi", + "hostPlaceholder": "1.2.3.4 au proxy.example.com", + "port": "Mlango", + "authOptional": "Uthibitishaji (si lazima)", + "username": "Jina la mtumiaji", + "usernamePlaceholder": "Jina la mtumiaji", + "password": "Nenosiri", + "passwordPlaceholder": "Nenosiri", + "connected": "Imeunganishwa", "ip": "IP:", - "connectionFailed": "Connection failed", - "testConnection": "Test connection", - "clear": "Clear", - "cancel": "Cancel", - "save": "Save", - "errorSelectSavedProxy": "Please select a saved proxy first.", - "errorSelectProxyFirst": "Please select a proxy first.", - "errorProxyNotFound": "Selected proxy not found.", - "errorClearSavedProxy": "Failed to clear saved proxy", - "errorSaveProxy": "Failed to save proxy configuration", - "errorClearProxy": "Failed to clear proxy configuration", - "errorSocks5Hidden": "SOCKS5 is configured but hidden because NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false." + "connectionFailed": "Muunganisho umeshindwa", + "testConnection": "Jaribu muunganisho", + "clear": "Futa", + "cancel": "Ghairi", + "save": "Hifadhi", + "errorSelectSavedProxy": "Tafadhali chagua kwanza proksi iliyohifadhiwa.", + "errorSelectProxyFirst": "Tafadhali chagua kwanza proksi.", + "errorProxyNotFound": "Proksi iliyochaguliwa haikupatikana.", + "errorClearSavedProxy": "Imeshindwa kufuta proksi iliyohifadhiwa", + "errorSaveProxy": "Imeshindwa kuhifadhi usanidi wa proksi", + "errorClearProxy": "Imeshindwa kufuta usanidi wa proksi", + "errorSocks5Hidden": "SOCKS5 imesanidiwa lakini imefichwa kwa sababu NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false." }, "oauthModal": { - "title": "Connect {providerName}", - "waiting": "Waiting for authorization", - "completeAuthInPopup": "Complete authorization in popup.", + "title": "Unganisha {providerName}", + "waiting": "Inasubiri uidhinishaji", + "completeAuthInPopup": "Kamilisha uidhinishaji katika dirisha ibukizi.", "popupClosedHint": "If the popup closed without redirecting back (e.g. Qoder), this dialog will auto-switch to manual URL entry mode.", - "popupBlocked": "Popup blocked? Enter URL manually", - "deviceCodeVisitUrl": "Visit the URL below and enter code:", - "deviceCodeVerificationUrl": "Verification URL", - "deviceCodeYourCode": "Your code", - "deviceCodeWaiting": "Waiting for authorization...", + "popupBlocked": "Dirisha ibukizi limezuiwa? Weka URL mwenyewe", + "deviceCodeVisitUrl": "Tembelea URL iliyo hapa chini na uweke msimbo:", + "deviceCodeVerificationUrl": "URL ya Uthibitishaji", + "deviceCodeYourCode": "Msimbo wako", + "deviceCodeWaiting": "Inasubiri uidhinishaji...", "googleLoopbackTitle": "Kujiunga na Google haiwezi kukamilika kutoka anwani hii", "googleLoopbackWhatHappens": "Google hutolewa tu msimbo wa idhini mara {redirectUri} inapatikana kutoka kivinjari kinachothibitisha kuingia. Hapa anwani hiyo inaelekeza kwenye kompyuta hii, si kwenye seva ya OmniRoute — hivyo skrini ya idhini inakwama badala ya kuelekeza, na hakuna URL ya kurudi nyuma ya kunakili.", "googleLoopbackRecommended": "Inapendekezwa — endesha hii kwenye kompyuta yako mwenyewe, kisha bandika matokeo hapa chini:", @@ -10726,7 +10733,7 @@ "googleLoopbackTunnelLabel": "Au peleka bandari ya dashibodi kupitia SSH na upakie tena OmniRoute kupitia handaki:", "googleLoopbackTunnelNote": "Badilisha {userPlaceholder} na jina lako la mtumiaji wa SSH, shika terminal wazi, kisha fungua {localUrl} na uungane tena kutoka hapo.", "googleLoopbackHeadlessAlt": "Kwa matumizi ya kichwa kisicho na chochote kabisa na hakuna mwitikio wa ndani, sanidi akiba yako ya Google OAuth pamoja na URL ya msingi ya umma.", - "remoteAccessInfo": "Remote access: Since you're accessing OmniRoute remotely, after authorization you'll see an error page (localhost not found). This is normal — just copy the full URL from your browser address bar and paste it below.", + "remoteAccessInfo": "Ufikiaji wa mbali: Kwa kuwa unafikia OmniRoute ukiwa mbali, baada ya kuidhinisha utaona ukurasa wa hitilafu (localhost haikupatikana). Hili ni jambo la kawaida — nakili tu URL kamili kutoka kwenye upau wa anwani wa kivinjari chako na uibandike hapa chini.", "loopbackMismatchTitle": "Kujiandikisha haiwezi kukamilika kutoka anwani hii", "loopbackMismatchWhatHappened": "Ninachofanyika", "loopbackMismatchExplanation": "Baada ya kuidhinisha kuingia, {providerName} kila wakati inarudisha kivinjari kwenye {redirectUri}. Anuani hiyo inaelekeza kwenye kompyuta inayotumia kivinjari hiki, si kwenye seva ya OmniRoute — hivyo nambari ya idhini haitafika kwa OmniRoute na mtoa huduma anashindwa kuingia bila kuonyesha kosa.", @@ -10736,17 +10743,17 @@ "loopbackMismatchStep2": "Katika kivinjari hiki, fungua tena OmniRoute kupitia handaki:", "loopbackMismatchStep3": "Basi ungana tena na {providerName} kutoka kwenye kichupo kipya. Kito cha kurudi sasa kinawafikia seva na kuingia kumalizika kawaida.", "loopbackMismatchAlternative": "Huna ufikiaji wa SSH? Ikiwa mtoa huduma huyu anatoa kichupo cha kuagiza tokeni, ungana kwa kutumia tokeni badala yake — njia hiyo haitumii kurudi nyuma.", - "step1OpenUrl": "Step 1: Open this URL in your browser", - "copy": "Copy", - "step2PasteCallback": "Step 2: Paste callback URL or authorization code here", - "step2Hint": "After authorization, paste the full callback URL. For Claude Code and Cline, you can also paste the authentication code directly, e.g. code#state.", - "connect": "Connect", - "cancel": "Cancel", - "success": "Connection successful!", - "successMessage": "Your {providerName} account has been connected.", - "done": "Done", - "error": "Connection failed", - "tryAgain": "Try again", + "step1OpenUrl": "Hatua ya 1: Fungua URL hii kwenye kivinjari chako", + "copy": "Nakili", + "step2PasteCallback": "Hatua ya 2: Bandika URL ya callback au msimbo wa uidhinishaji hapa", + "step2Hint": "Baada ya kuidhinisha, bandika URL kamili ya callback. Kwa Claude Code na Cline, unaweza pia kubandika msimbo wa uthibitishaji moja kwa moja, kwa mfano code#state.", + "connect": "Unganisha", + "cancel": "Ghairi", + "success": "Muunganisho umefanikiwa!", + "successMessage": "Akaunti yako ya {providerName} imeunganishwa.", + "done": "Imekamilika", + "error": "Muunganisho umeshindwa", + "tryAgain": "Jaribu tena", "errorSessionIncomplete": "Sehemu ya OAuth haijakamilika (inakosa URI ya kurejea au msahihishaji wa msimbo). Anza tena muunganisho na ujaribu tena.", "errorExchangeFailed": "Kubadilishana kumeshindikana", "errorGoogleRedirectMismatch": "redirect_uri_mismatch: Akikosi ya kawaida ya Google OAuth inafanya kazi tu kwenye localhost. Kwa matumizi ya mbali, tengeneza akakosi zako za OAuth kupitia mabadiliko ya mazingira: ANTIGRAVITY_OAUTH_CLIENT_ID na ANTIGRAVITY_OAUTH_CLIENT_SECRET. Tazama sehemu ya README 'OAuth kwenye Seva ya Mbali'.", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "Pasta funguo ya API ya Devin iliyopo kutoka kwa kikao cha Devin kilichothibitishwa. Upatikanaji wa usafirishaji wa funguo na hatua zinatofautiana kulingana na toleo la Devin na akaunti.", "devinPasteDescription": "Toa WINDSURF_API_KEY yako (iliyopatikana kupitia `devin auth login`, au kupitia amri ya Windsurf IDE \"Windsurf: Provide Auth Token\").", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json ya Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Funguo la API / Token", "saving": "Inahifadhi…", @@ -10785,107 +10792,107 @@ }, "cursorAuthModal": { "title": "Connect Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCursor": "Reading from Cursor IDE or cursor-agent", - "tokensAutoDetected": "Tokens successfully auto-detected from Cursor IDE!", + "tabLogin": "Ingia kwa kutumia Cursor", + "tabImport": "Leta tokeni", + "loginDescription": "Hufungua ukurasa wa kuingia wa Cursor kwenye kivinjari. Hufanya kazi katika Docker — idhinisha katika kivinjari cha mfumo wako mwenyeji, kisha urudi hapa.", + "loginWithCursor": "Ingia kwa kutumia Cursor", + "startingLogin": "Inaanza…", + "waitingApproval": "Inasubiri idhini ya kuingia kwenye Cursor…", + "openUrlHint": "Ikiwa kivinjari hakikufunguka:", + "openLoginLink": "Fungua ukurasa wa kuingia", + "cancelLogin": "Ghairi kuingia", + "autoDetecting": "Inatambua tokeni kiotomatiki...", + "readingFromCursor": "Inasoma kutoka Cursor IDE au cursor-agent", + "tokensAutoDetected": "Tokeni zimetambuliwa kiotomatiki kutoka Cursor IDE!", "cursorNotDetected": "Cursor IDE not detected. Please manually paste your token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Unaendesha katika Docker? Ni vyema kutumia Ingia kwa kutumia Cursor. Uletaji wa kiotomatiki kutoka IDE na cursor-agent kwa kawaida haupatikani ndani ya kontena. Angalia docs/providers/CURSOR-DOCKER.md.", + "accessToken": "Tokeni ya Ufikiaji", + "refreshToken": "Tokeni ya Kuonyesha Upya", + "refreshTokenPlaceholder": "Si lazima — huwezesha kuonyesha upya tokeni kiotomatiki", "required": "*", - "accessTokenPlaceholder": "Access token will auto-populate...", - "machineId": "Machine ID", - "optional": "(optional)", - "machineIdPlaceholder": "Machine ID will auto-populate...", - "importing": "Importing...", - "importToken": "Import Token", - "cancel": "Cancel", - "errorAutoDetect": "Unable to auto-detect tokens", - "errorAutoDetectFailed": "Auto-detect tokens failed", - "errorEnterToken": "Please enter access token", - "errorImportFailed": "Import failed", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "accessTokenPlaceholder": "Tokeni ya ufikiaji itajazwa kiotomatiki...", + "machineId": "Kitambulisho cha Mashine", + "optional": "(si lazima)", + "machineIdPlaceholder": "Kitambulisho cha Mashine kitajazwa kiotomatiki...", + "importing": "Inaleta...", + "importToken": "Leta Tokeni", + "cancel": "Ghairi", + "errorAutoDetect": "Imeshindwa kugundua tokeni kiotomatiki", + "errorAutoDetectFailed": "Ugunduzi wa tokeni kiotomatiki umeshindwa", + "errorEnterToken": "Tafadhali ingiza tokeni ya ufikiaji", + "errorImportFailed": "Uingizaji umeshindwa", + "errorLoginStart": "Imeshindwa kuanzisha kuingia kwa Cursor", + "errorLoginPoll": "Kuingia kwa Cursor kumeshindwa", + "errorLoginTimeout": "Muda wa kuingia kwa Cursor umeisha — jaribu tena" }, "pricingModal": { - "title": "Pricing Configuration", - "loading": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "ratesDescription": "All rates are in dollars per million tokens ($/1M tokens). Example: Input rate of 2.50 means $2.50 per 1,000,000 input tokens.", - "model": "Model", - "input": "Input", - "output": "Output", - "cached": "Cached", - "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "noPricingData": "No pricing data available", - "resetToDefaults": "Reset to defaults", - "cancel": "Cancel", - "saving": "Saving...", - "saveChanges": "Save changes", - "resetConfirm": "Reset all pricing to defaults? This cannot be undone.", - "errorSaveFailed": "Failed to save pricing", - "errorResetFailed": "Failed to reset pricing" + "title": "Usanidi wa Bei", + "loading": "Inapakia data ya bei...", + "pricingRatesFormat": "Muundo wa Viwango vya Bei", + "ratesDescription": "Viwango vyote viko katika dola kwa kila tokeni milioni moja ($/1M tokens). Mfano: Kiwango cha ingizo cha 2.50 kinamaanisha $2.50 kwa kila tokeni 1,000,000 za ingizo.", + "model": "Muundo", + "input": "Ingizo", + "output": "Tokeo", + "cached": "Zilizohifadhiwa kwenye akiba", + "reasoning": "Uchambuzi", + "cacheCreation": "Uundaji wa Akiba", + "noPricingData": "Hakuna data ya bei inayopatikana", + "resetToDefaults": "Rejesha chaguo-msingi", + "cancel": "Ghairi", + "saving": "Inahifadhi...", + "saveChanges": "Hifadhi mabadiliko", + "resetConfirm": "Urejeshe bei zote kwa chaguo-msingi? Kitendo hiki hakiwezi kutenduliwa.", + "errorSaveFailed": "Imeshindwa kuhifadhi bei", + "errorResetFailed": "Imeshindwa kurejesha bei" }, "proxyRegistry": { "selectAllProxies": "Chagua proksi zote", "selectProxy": "Chagua {name}", - "title": "Proxy Registry", - "description": "Store reusable proxies and track assignments.", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", - "loading": "Loading proxies...", - "noProxies": "No saved proxies yet.", - "tableName": "Name", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", - "tableHealth": "Health (24h)", - "tableUsage": "Usage", - "tableActions": "Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", - "modalCreateTitle": "Create Proxy", - "modalEditTitle": "Edit Proxy", - "labelName": "Name", - "labelType": "Type", + "title": "Rejesta ya Proksi", + "description": "Hifadhi proksi zinazoweza kutumika tena na ufuatilie ugawaji.", + "importLegacy": "Leta Data ya Zamani", + "bulkAssign": "Gawa kwa Wingi", + "addProxy": "Ongeza Proksi", + "loading": "Inapakia proksi...", + "noProxies": "Bado hakuna proksi zilizohifadhiwa.", + "tableName": "Jina", + "tableEndpoint": "Kituo cha mwisho", + "tableStatus": "Hali", + "tableHealth": "Afya (saa 24)", + "tableUsage": "Matumizi", + "tableActions": "Vitendo", + "test": "Jaribu", + "edit": "Hariri", + "delete": "Futa", + "modalCreateTitle": "Unda Proksi", + "modalEditTitle": "Hariri Proksi", + "labelName": "Jina", + "labelType": "Aina", "labelFamily": "Familia ya IP", "familyAuto": "Otomatiki (dual-stack)", "familyIpv4": "IPv4 pekee", "familyIpv6": "IPv6 pekee", "familyHint": "Familia ya anwani ya egress. Otomatiki huweka dual-stack; IPv4/IPv6 huweka proksi hii kwenye familia hiyo (huzuia uvujaji wa v4 chini ya proksi ya IPv6 pekee).", - "labelHost": "Host", - "labelPort": "Port", - "labelUsername": "Username", - "labelPassword": "Password", - "labelRegion": "Region", - "labelStatus": "Status", - "labelNotes": "Notes", - "usernamePlaceholderEdit": "Leave blank to keep current username", - "passwordPlaceholderEdit": "Leave blank to keep current password", - "statusActive": "Active", - "statusInactive": "Inactive", - "cancel": "Cancel", - "save": "Save", - "bulkModalTitle": "Bulk Proxy Assignment", - "bulkLabelScope": "Scope", - "bulkLabelProxy": "Proxy", - "bulkClearAssignment": "(Clear assignment)", - "bulkLabelScopeIds": "Scope IDs (comma or newline separated)", + "labelHost": "Seva Pangishi", + "labelPort": "Mlango", + "labelUsername": "Jina la mtumiaji", + "labelPassword": "Nenosiri", + "labelRegion": "Eneo", + "labelStatus": "Hali", + "labelNotes": "Maelezo", + "usernamePlaceholderEdit": "Acha wazi ili kuhifadhi jina la sasa la mtumiaji", + "passwordPlaceholderEdit": "Acha wazi ili kuhifadhi nenosiri la sasa", + "statusActive": "Inatumika", + "statusInactive": "Haitumiki", + "cancel": "Ghairi", + "save": "Hifadhi", + "bulkModalTitle": "Ugawaji wa Proksi kwa Wingi", + "bulkLabelScope": "Wigo", + "bulkLabelProxy": "Proksi", + "bulkClearAssignment": "(Futa ugawaji)", + "bulkLabelScopeIds": "Vitambulisho vya wigo (vimetenganishwa kwa koma au mstari mpya)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", - "bulkApply": "Apply", + "bulkApply": "Tekeleza", "labelScope": "Upeo", "labelProxy": "Proksi", "scopeGlobal": "kimataifa", @@ -10897,19 +10904,19 @@ "bulkImportErrorInvalidPort": "BANDARI si sahihi (lazima iwe 1-65535)", "bulkImportErrorInvalidType": "TYPE batili (tumia http, https, au soksi5)", "bulkImportErrorInvalidStatus": "STATUS batili (tumia hai au isiyotumika)", - "errorLoadFailed": "Failed to load proxy registry", - "errorNameHostRequired": "Name and host are required", - "errorSaveFailed": "Failed to save proxy", - "errorDeleteFailed": "Failed to delete proxy", - "errorForceDeleteConfirm": "This proxy is still assigned. Force delete and remove all assignments?", - "errorMigrateFailed": "Failed to migrate legacy proxy config", - "errorBulkFailed": "Failed to execute bulk assignment", + "errorLoadFailed": "Imeshindwa kupakia sajili ya proksi", + "errorNameHostRequired": "Jina na seva pangishi vinahitajika", + "errorSaveFailed": "Imeshindwa kuhifadhi proksi", + "errorDeleteFailed": "Imeshindwa kufuta proksi", + "errorForceDeleteConfirm": "Proksi hii bado imegawiwa. Ungependa kuifuta kwa lazima na kuondoa migawanyo yote?", + "errorMigrateFailed": "Imeshindwa kuhamisha usanidi wa zamani wa proksi", + "errorBulkFailed": "Imeshindwa kutekeleza ugawaji kwa wingi", "success": "✓", "failure": "✗", - "failed": "Failed", - "successRate": "{rate}% success", - "avgLatency": "{latency}ms average", - "assignmentsCount": "{count} assignments", + "failed": "Imeshindwa", + "successRate": "Mafanikio ya {rate}%", + "avgLatency": "Wastani wa {latency}ms", + "assignmentsCount": "Migawanyo {count}", "noData": "—", "testSuccess": "✓ {ip}", "testLatency": "{latency}ms", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Mkakati wa mzunguko", "poolStrategyHint": "round-robin huzungusha wanachama kwa mpangilio; random huchagua kwa usawa; sticky hushikilia mwanachama mmoja kwa muda fulani; latency-optimized huchagua iliyo ya haraka zaidi kulingana na kumbukumbu.", "poolStrategyFailed": "Imeshindwa kusasisha mkakati wa mzunguko", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Mzunguko", "strategyRandom": "Nasibu", - "strategySticky": "Sticky", + "strategySticky": "Inayoshikamana", "strategyLatency": "Iliyoboreshwa kwa ucheleweshaji", "poolMembersLabel": "Wanachama wa dimbwi ({count})", "poolNoMembers": "Hakuna proksi katika dimbwi hili bado.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {njia # ya kutoka} other {njia # za kutoka}} zilitumiwa na {connections, plural, one {muunganisho #} other {miunganisho #}} · hadi {max} kwenye njia moja ya kutoka · saa {hours} zilizopita", + "poolEgressObservationEmpty": "Hakuna trafiki iliyoonekana katika saa {hours} zilizopita", + "poolEgressObservationHint": "Imehesabiwa kutoka kwenye kumbukumbu ya proksi katika kipindi hiki: IP tofauti za kutoka zilizoonekana kwa wanachama wa kundi hili, na miunganisho ya OmniRoute iliyozitumia. \"Kwenye njia moja ya kutoka\" humaanisha katika kipindi hicho, si kwa wakati mmoja. Uzuiaji wa 429 kwa kila IP husitisha tu miunganisho ya familia moja ya watoa huduma.", "poolRemove": "Ondoa", "poolRemoveFailed": "Imeshindwa kuondoa proksi kwenye dimbwi", "poolAddLabel": "Ongeza proksi", @@ -10973,96 +10980,96 @@ "poolSaveFailed": "Imeshindwa kuhifadhi ugawaji wa dimbwi" }, "playground": { - "title": "Model Playground", - "description": "Test any model directly from the dashboard. Select provider, model, and endpoint type, then send a request to see the raw response.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", - "accountKey": "Account / Key", - "autoAccounts": "Auto ({count} accounts)", - "noAccounts": "No accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", - "attachImages": "Attach Images (Vision)", + "title": "Mazingira ya Majaribio ya Modeli", + "description": "Jaribu modeli yoyote moja kwa moja kutoka kwenye dashibodi. Chagua mtoa huduma, modeli na aina ya endpoint, kisha tuma ombi ili kuona jibu ghafi.", + "endpoint": "Kituo cha mwisho", + "provider": "Mtoa huduma", + "model": "Modeli", + "accountKey": "Akaunti / Ufunguo", + "autoAccounts": "Kiotomatiki (akaunti {count})", + "noAccounts": "Hakuna akaunti", + "send": "Tuma", + "cancel": "Ghairi", + "audioFile": "Faili ya Sauti", + "attachImages": "Ambatisha Picha (Uoni)", "multipartFormData": "multipart/form-data", - "upToImages": "Up to 4 images", - "selectAudioFile": "Select audio file for transcription (mp3, wav, m4a, ogg, flac…)", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", - "resetToDefault": "Reset to default", - "downloadAudio": "Download audio", - "copyText": "Copy text", - "transcriptionHint": "Transcription uses multipart/form-data. Upload the audio file above — the JSON below controls extra parameters (model, language).", - "imagesGenerated": "Generated {count} images", - "generatedImage": "Generated image {index}", - "save": "Save", + "upToImages": "Hadi picha 4", + "selectAudioFile": "Chagua faili ya sauti ya kunukuliwa (mp3, wav, m4a, ogg, flac…)", + "clearAll": "Futa Zote", + "request": "Ombi", + "response": "Jibu", + "transcription": "Unukuzi", + "copy": "Nakili", + "resetToDefault": "Rejesha chaguo-msingi", + "downloadAudio": "Pakua sauti", + "copyText": "Nakili maandishi", + "transcriptionHint": "Unukuzi hutumia multipart/form-data. Pakia faili ya sauti hapo juu — JSON iliyo hapa chini hudhibiti vigezo vya ziada (modeli, lugha).", + "imagesGenerated": "Picha {count} zimeundwa", + "generatedImage": "Picha iliyoundwa {index}", + "save": "Hifadhi", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", + "chat": "Ukamilishaji wa gumzo", + "responses": "Majibu", "completions": "Kukamilisha", - "images": "Image generation", - "embeddings": "Embeddings", - "speech": "Text-to-speech", - "transcription": "Audio transcription", - "video": "Video generation", - "music": "Music generation", + "images": "Uundaji wa picha", + "embeddings": "Upachikaji", + "speech": "Maandishi-hadi-sauti", + "transcription": "Unukuzi wa sauti", + "video": "Uundaji wa video", + "music": "Uundaji wa muziki", "moderations": "Udhibiti", - "rerank": "Rerank", - "search": "Web search", + "rerank": "Panga upya", + "search": "Utafutaji wa wavuti", "webFetch": "Uletaji wa wavuti" }, "conversationalChat": "Gumzo la Mazungumzo", "clearChat": "Futa gumzo", "typeMessagePlaceholder": "Andika ujumbe... (Shift+Enter kwa laini mpya)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Gumzo", + "tabCompare": "Linganisha", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Unda", + "configPane": "Usanidi", + "systemPrompt": "Kidokezo cha mfumo", + "systemPromptPlaceholder": "Wewe ni msaidizi mwenye manufaa.", + "modelPlaceholder": "mf. openai/gpt-4o", + "endpointLabel": "Kituo cha mwisho", + "parametersLabel": "Vigezo", + "collapseConfig": "Kunja kidirisha cha usanidi", + "expandConfig": "Panua kidirisha cha usanidi", + "temperature": "Halijoto", + "maxTokens": "Idadi ya juu ya tokeni", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Adhabu ya uwepo", + "frequencyPenalty": "Adhabu ya marudio", "reasoningLabel": "Ufikiri", "thinking": "Kufikiri", "effort": "Juhudi", "effortDefault": "Chaguo-msingi", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Nasibu (acha tupu)", + "presetsLabel": "Mipangilio iliyohifadhiwa", + "loadPreset": "Pakia mpangilio uliohifadhiwa", + "savePreset": "Hifadhi mpangilio", + "noPresets": "Hakuna mipangilio iliyohifadhiwa", + "presetNamePlaceholder": "Jina la mpangilio", + "savingPreset": "Inahifadhi…", + "nameRequired": "Jina linahitajika", + "failedToSavePreset": "Imeshindwa kuhifadhi mpangilio", + "improvePrompt": "Boresha kidokezo", + "improvingPrompt": "Inaboresha…", + "improvePromptTitle": "Boresha kidokezo chako kwa AI", + "setModelFirst": "Weka modeli kwanza", "setModelInConfigFirst": "Weka modeli kwenye kidirisha cha Usanidi kwanza.", "improvePromptFailed": "Uboreshaji wa kidokezo umeshindwa.", "improvePromptAria": "Boresha kidokezo kwa kutumia AI", "confirmImprovePrompt": "Thibitisha kuboresha kidokezo", "improvePromptDescription": "Hii itatuma kidokezo chako cha sasa cha mfumo kwa ili kuzalisha toleo lililoboreshwa.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Hii itatumia mgao kutoka kwa modeli iliyosanidiwa katika Usanidi.", + "improveConfirm": "Boresha", + "exportCode": "Hamisha msimbo", + "exportCodeTitle": "Hamisha Msimbo", "exportShort": "Hamisha", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Hakuna hali ya playground inayopatikana ili kuhamishwa.", "closeExportModal": "Funga kidirisha cha kuhamisha", "close": "Funga", "exportRealKeyWarning": "Onyo la usalama: uhamishaji umezuiwa — ufunguo halisi wa API umegunduliwa kwenye matokeo. Tafadhali weka upya ufunguo wako wa API na ujaribu tena.", @@ -11071,13 +11078,13 @@ "copyLangCode": "Nakili msimbo wa {language}", "loadingPresets": "Inapakia…", "loadPresetPlaceholder": "Pakia usanidi wa awali…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Nakili", + "copiedCode": "Imenakiliwa!", + "addModel": "+ Ongeza modeli", + "runAll": "Endesha zote", + "cancelAll": "Ghairi zote", + "maxColumnsReached": "Upeo wa safu wima {max}", + "modelPlaceholderCompare": "Muundo (Cmd+K)…", "noModel": "Hakuna modeli", "statusLabel": "Hali: {status}", "status": { @@ -11095,37 +11102,37 @@ "waitingForResponse": "Inasubiri majibu…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "makadirio ya upande wa mteja", + "tokensLabel": "Tokeni", + "costLabel": "Gharama", + "costEstimated": "(imekadiriwa)", "ttftTitle": "Muda wa tokeni ya kwanza (makadirio ya upande wa mteja)", "tpsTitle": "Tokeni kwa sekunde (makadirio ya upande wa mteja)", "tokenCountsTitle": "Tokeni za kidokezo ↑ / Tokeni za ukamilishaji ↓", "estimatedCostTitle": "Gharama inayokadiriwa (haijahakikishwa kuwa sahihi)", - "toolsLabel": "Tools", + "toolsLabel": "Zana", "toolsCount": "Zana ({count})", - "addTool": "Add tool", + "addTool": "Ongeza zana", "editTool": "Hariri zana {name}", "removeTool": "Ondoa zana {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Jina la kitendakazi", "toolNameRequiredPlaceholder": "Jina la kitendaji *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Maelezo (si lazima)", "toolParamsLabel": "Vigezo (JSON schema)", "toolParamsJsonSchema": "JSON schema ya vigezo", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Vigezo lazima viwe JSON halali", + "structuredOutputLabel": "Tokeo Lililoundwa kwa Muundo Maalum", + "enableJsonMode": "Washa hali ya JSON", + "disableJsonMode": "Zima hali ya JSON", + "invalidJson": "JSON batili", "jsonMode": "Hali ya JSON", "jsonModeDescription": "Inalazimisha response_format: json_schema", "schemaName": "Jina la schema", - "jsonSchema": "JSON schema", + "jsonSchema": "Skima ya JSON", "jsonSchemaEditor": "Kihariri cha JSON schema", "schemaValidated": "Schema imethibitishwa", "validateSchema": "Thibitisha schema", - "seed": "Seed", + "seed": "Mbegu", "stopSequences": "Mifuatano ya kusitisha", "stopSequencesPlaceholder": "k.m. \"\\n\\n\" au \"END\"", "autoProvider": "Otomatiki", @@ -11154,9 +11161,9 @@ "columnCount": "Safu wima {count}/{max}", "addModelToCompare": "Ongeza safu wima ya modeli ili kulinganisha", "modelsSimultaneously": "Hadi modeli {max} kwa wakati mmoja", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Inaendeshwa…", + "runLabel": "Endesha", + "enterToolResult": "Weka tokeo la zana…", "build": { "step1Label": "Nini cha kujaribu?", "step2Label": "Sanidi", @@ -11179,7 +11186,7 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Kituo cha mwisho", "apiKey": "Ufunguo wa API", "model": "Modeli", "voice": "Sauti", @@ -11195,7 +11202,7 @@ "loading": "Inapakia...", "retry": "Jaribu Tena", "response": "Jibu", - "tunnel": "Tunnel", + "tunnel": "Handaki", "send": "Tuma", "selectKey": "Chagua ufunguo", "testLabel": "Jaribu", @@ -11250,73 +11257,73 @@ "stop": "Sitisha" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "Inarekodi", + "paused": "Imesitishwa", + "pipelineLogsOn": "Kumbukumbu za pipeline zimewashwa", + "pipelineLogsOff": "Kumbukumbu za pipeline zimezimwa", + "updatingPipelineLogs": "Inasasisha kumbukumbu za pipeline...", + "updatePipelineFailed": "Imeshindwa kusasisha uwekaji kumbukumbu wa pipeline", + "capturePipeline": "Nasa payload za pipeline kwa maombi mapya", + "searchPlaceholder": "Tafuta miundo, watoa huduma, akaunti, funguo za API, michanganyiko...", + "allProviders": "Watoa huduma wote", + "allModels": "Miundo yote", + "allAccounts": "Akaunti zote", + "allApiKeys": "Funguo zote za API", + "total": "Jumla", + "ok": "Imefaulu", + "err": "Hitilafu", + "combo": "Mseto", + "keys": "Funguo", + "shown": "Zilizoonyeshwa", + "sortNewest": "Mpya zaidi", + "sortOldest": "Za zamani zaidi", + "sortTokensDesc": "Tokeni ↓", + "sortTokensAsc": "Tokeni ↑", + "sortDurationDesc": "Muda ↓", + "sortDurationAsc": "Muda ↑", + "sortStatusDesc": "Hali ↓", + "sortStatusAsc": "Hali ↑", + "sortModelAsc": "Muundo A-Z", + "sortModelDesc": "Muundo Z-A", + "sortLogs": "Panga kumbukumbu", + "refresh": "Onyesha upya", + "columnsLabel": "Safu wima", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "JUU", + "semantic": "Kisemantiki", + "upstream": "Chanzo cha juu", + "semanticCacheHit": "Akiba ya kisemantiki imepatikana (imetolewa na OmniRoute)", + "upstreamResponse": "Jibu la mtoa huduma wa chanzo cha juu", + "noApiKey": "Hakuna ufunguo wa API", + "requestedRoutedTitle": "Iliombwa {requested}, ikaelekezwa kama {routed}", "statusFilters": { - "all": "All", - "error": "Error", - "success": "Success", - "combo": "Combo" + "all": "Zote", + "error": "Hitilafu", + "success": "Imefaulu", + "combo": "Mseto" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "Hali", + "cacheSource": "Chanzo cha Akiba", + "model": "Muundo", + "requested": "Iliyoombwa", + "provider": "Mtoa huduma", + "protocol": "Itifaki ya Ombi", + "account": "Akaunti", + "apiKey": "Ufunguo wa API", + "combo": "Mchanganyiko", + "tokens": "Tokeni", "compressed": "Mfinyazo", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Muda", + "time": "Wakati", + "conversation": "Mazungumzo", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Inapakia kumbukumbu...", + "noLogs": "Bado hakuna kumbukumbu. Piga simu za API ili uzione hapa.", + "noMatchingLogs": "Hakuna kumbukumbu zinazolingana na vichujio vya sasa.", + "callLogsInfo": "Kumbukumbu za simu pia huhifadhiwa kama faili za JSON kwenye {dataDir} na hubadilishwa kwa mzunguko kulingana na {retentionDays} na {maxEntries}.", "loadMore": "Pakia Zaidi", "loadingMore": "Inapakia zaidi...", "correlationId": "Kitambulisho cha Uhusiano", @@ -11349,8 +11356,8 @@ "copyTitle": "Nakili {title}", "copied": "Imepigwa nakala!", "copy": "Nakili", - "autoscrollOn": "Autoscroll: on", - "autoscrollOff": "Autoscroll: off", + "autoscrollOn": "Usogezaji kiotomatiki: umewashwa", + "autoscrollOff": "Usogezaji kiotomatiki: umezimwa", "collapseAllLevels": "Kunja zote", "collapseOneLevel": "Kunja kiwango kimoja", "currentExpandLevel": "Kiwango cha sasa cha kupanua", @@ -11367,12 +11374,12 @@ }, "payloadMissing": "Kipande cha maelezo ya mzigo hakipatikani tena kwa ajili ya kipande hiki cha kumbukumbu.", "payloadCorrupt": "Kipande cha mzigo kilichofafanuliwa hakiwezi kufasiriwa.", - "notAvailable": "N/A", - "semanticCache": "Semantic (OmniRoute)", + "notAvailable": "Haitumiki", + "semanticCache": "Kisemantiki (OmniRoute)", "upstreamCache": "Upstream (Mtoa)", "ariaLabel": "Maelezo ya kumbukumbu ya ombi", "completed": "Imekamilika", - "upstreamStatus": "Upstream: {status}", + "upstreamStatus": "Chanzo cha juu: {status}", "statusDiscrepancy": "OmniRoute ilirudisha {status} ingawa mtoa huduma alirudisha {provider}", "previousRequest": "Omba iliyopita", "nextRequest": "Omba inayofuata", @@ -11399,7 +11406,7 @@ "rotated": "Imepinduliwa: {initial} -> {final}", "apiKey": "Funguo la API", "noApiKey": "Hakuna funguo ya API", - "combo": "Combo", + "combo": "Mchanganyiko", "error": "Kosa", "unblockAll": "Fungua zote", "cleared": "Imesafishwa", @@ -11417,59 +11424,59 @@ "correlationId": "Kitambulisho cha Uhusiano", "correlationIdValue": "Kitambulisho cha Uhusiano: {id}", "detailedPayloadInfo": "Washa ufuatiliaji wa kina kwanza ikiwa unataka mtazamo wa mzigo wa mteja/mtoa huduma wa hatua nne kwa maombi mapya.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Nakili zote", + "copiedAll": "Zote zimenakiliwa" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "Zote", + "filterErrors": "Hitilafu", + "filterSuccess": "Imefanikiwa", + "filterTimeout": "Muda umeisha", + "colStatus": "Hali", + "colProxy": "Proksi", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "Aina", + "colLevel": "Kiwango", + "colProvider": "Mtoa huduma", + "colTarget": "Lengo", + "colLatency": "Ucheleweshaji", + "colClientIp": "IP ya mteja", + "colTime": "Wakati", + "recording": "Inarekodi", + "paused": "Imesitishwa", + "searchPlaceholder": "Tafuta seva, mtoa huduma, lengo, IP...", + "allTypes": "Aina Zote", + "allLevels": "Viwango Vyote", + "allProviders": "Watoa Huduma Wote", + "total": "jumla", + "ok": "SAWA", + "err": "HITILAFU", + "timeoutShort": "MUDA UMEISHA", + "direct": "moja kwa moja", + "newest": "Mpya zaidi", + "oldest": "Zamani zaidi", + "latencyDesc": "Ucheleweshaji ↓", + "latencyAsc": "Ucheleweshaji ↑", + "refresh": "Onyesha upya", + "columns": "Safu wima", + "loadingProxyLogs": "Inapakia kumbukumbu za proksi...", + "noProxyLogs": "Bado hakuna kumbukumbu za proksi. Sanidi proksi na upige simu za API ili uzione hapa.", + "noMatchingLogs": "Hakuna kumbukumbu zinazolingana na vichujio vya sasa.", + "tlsFingerprint": "Alama ya kidijitali ya TLS ya Chrome 124", "colPublicIp": "IP ya Umma" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "speech": "Matamshi", + "search": "Tafuta", + "images": "Picha", + "chat": "Gumzo", + "music": "Muziki", + "responses": "Majibu", + "rerank": "Panga upya", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Upachikaji", + "transcription": "Unukuzi" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Mazingira ya utekelezaji", + "description": "Uangalizi wa wakati halisi — ustahimilivu wa tabaka 3 + vipindi + arifa za mgao", + "pause": "Sitisha", + "resume": "Endelea", + "refreshNow": "Onyesha upya sasa", + "kpiSessions": "Vipindi", + "kpiCircuits": "Vikatiza mzunguko", + "kpiCooldowns": "Vipindi vya kusubiri", + "kpiLockouts": "Kufungiwa", + "hintStickyBound": "{count} zimefungwa kwa uthabiti", + "hintRecovering": "{count} zinarejea katika hali ya kawaida", + "hintAllHealthy": "zote ziko sawa", + "hintOpen": "wazi", + "hintConnsCooling": "miunganisho katika kipindi cha kusubiri", + "hintModelsBlocked": "miundo imezuiwa", + "resilienceTitle": "Ustahimilivu wa Tabaka 3", + "resilienceSubtitle": "Huakisi muundo wa ustahimilivu ulioandikwa", + "providersHealthy": "{percent}% ya watoa huduma wako sawa", + "layer": "Tabaka la {n}", + "layer1Title": "Vikatiza Mzunguko vya Watoa Huduma", + "layer1Desc": "Simamisha trafiki kwa watoa huduma wanaoshindwa katika kiwango cha upstream", + "layer2Title": "Vipindi vya Kusubiri vya Miunganisho", + "layer2Desc": "Ruka akaunti/ufunguo mmoja wenye hitilafu; miunganisho mingine iendelee kuhudumia", + "layer3Title": "Kufungiwa kwa Miundo", + "layer3Desc": "Vizuizi vya kikomo cha maombi kwa kila muundo; muunganisho huohuo bado huhudumia miundo mingine", + "badgeAffectedOf": "{affected} kati ya {total} zimeathirika", + "badgeCooling": "{count} katika kipindi cha kusubiri", + "badgeLocked": "{count} zimefungwa", + "emptyCircuits": "Bado hakuna vikatiza mzunguko vinavyotumika", + "emptyCooldowns": "Hakuna vipindi vya kusubiri vya miunganisho vinavyotumika", + "emptyLockouts": "Hakuna miundo iliyofungiwa", + "moreCooldowns": "+vipindi vingine {count} vya kusubiri", + "moreLockouts": "+miundo mingine {count} iliyofungiwa", + "feedTitle": "Mtiririko wa Moja kwa Moja", + "feedSubtitle": "Matukio {count} ya mwisho", + "feedFilterAll": "Yote", + "feedFilterCircuits": "Mizunguko", + "feedFilterCooldowns": "Vipindi vya Kusubiri", + "feedFilterLockouts": "Vizuizi", + "feedFilterSessions": "Vipindi", + "feedFilterQuotas": "Viwango", + "feedClear": "Futa", + "feedEmptyWaiting": "Inasubiri matukio... (inakaguliwa kila sekunde 5)", + "feedEmptyFiltered": "Hakuna matukio yanayolingana na kichujio hiki", + "sessionsTitle": "Vipindi Vinavyotumika", + "sessionsSubtitle": "Alama za kipekee za maombi zilizofungwa kwa uthabiti (moja kwa moja)", + "sessionsActive": "{count} vinatumika", + "sessionsEmptyTitle": "Hakuna vipindi vinavyotumika", + "sessionsEmptyHint": "Vipindi huonekana maombi yanapopita kwenye proxy", + "tblSession": "Kipindi", + "tblAge": "Umri", + "tblIdle": "Kutotumika", + "tblReqs": "Maombi", + "tblBoundTo": "Imefungamanishwa na", + "topApiKeys": "Funguo kuu za API", + "quotaMonitorsTitle": "Vifuatiliaji vya Kikomo", + "quotaMonitorsSubtitle": "Hali ya moja kwa moja ya kikomo kwa kila kipindi cha akaunti", + "openQuota": "Fungua Kikomo", + "allQuotasHealthy": "Vikomo vyote viko katika hali nzuri", + "statusExhausted": "KIMEKWISHA", + "statusAlerting": "INATOA TAHADHARI", + "statusError": "HITILAFU", + "moreSuffix": "+{count} zaidi" }, "quotaShare": { "weightPercent": "Uzito %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Kushiriki Kikomo", + "description": "Shiriki vikomo vya watoa huduma kati ya funguo za API kwa vikomo vya %", + "newPool": "Hifadhi mpya", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Usanidi umehifadhiwa katika localStorage (bado haujahifadhiwa kwenye seva). Utekelezaji wa kikomo kwa kila ombi bado haujaunganishwa kwenye mtiririko wa proksi. Skrini hii hukuruhusu kubuni na kuonyesha mgawanyo wa kikomo; utekelezaji halisi utaongezwa katika toleo la baadaye pamoja na uhifadhi wa DB na uingiliaji wa miito ya juu ya mtiririko.", + "kpiActivePools": "Hifadhi zinazotumika", + "kpiKeysAllocated": "Funguo zilizogawiwa", + "kpiAvgUnallocated": "Wastani ambao haujagawiwa", + "kpiProvidersWithQuota": "Watoa huduma wenye kikomo", + "emptyTitle": "Hakuna hifadhi zilizosanidiwa", + "emptyDescription": "Unda hifadhi ili kugawa funguo za API zishiriki kipindi cha kikomo cha mtoa huduma kwa mgao wa %.", + "loading": "Inapakia…", + "removePool": "Ondoa hifadhi", + "removeConfirm": "Uondoe hifadhi hii?", + "pool": "Hifadhi", + "used": "imetumika", + "allocationsCount": "Mgao ({count})", + "allocatedFree": "{allocated}% imegawiwa · {free}% iko huru", + "noAllocations": "Bado hakuna funguo zilizogawiwa", + "capLabel": "kikomo {value}", + "notTrackedYet": "(bado haifuatiliwi)", + "policy": "Sera", "apiKeyColumn": "Ufunguo wa API", "weightColumn": "Uzito", "fairShareShort": "usawa", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "thabiti", + "policySoft": "laini", + "policyBurst": "ongezeko la ghafla", + "policyHardHint": "Zuia ufunguo unapomaliza mgao wake", + "policySoftHint": "Ruhusu kuzidi, toa tahadhari pekee", + "policyBurstHint": "Ruhusu ongezeko la ghafla kutumia hifadhi ya bure", + "editAllocations": "Hariri mgao", + "newPoolTitle": "Hifadhi mpya ya kikomo", + "providerConnection": "Muunganisho wa mtoa huduma (akaunti)", + "selectConnection": "Chagua muunganisho…", + "noEligibleConnections": "Hakuna miunganisho yenye data ya kikomo. Onyesha upya kutoka /dashboard/quota kwanza.", + "quotaWindow": "Kipindi cha kikomo", + "selectWindow": "Chagua kipindi…", + "alreadyUsedSuffix": "(tayari kimetumika)", + "windowReset": "Weka upya", + "duplicatePoolError": "Hifadhi ya muunganisho huu na kipindi hiki tayari ipo", + "cancel": "Ghairi", + "createPool": "Unda hifadhi", + "editTitle": "Hariri mgao", + "noKeysAdded": "Hakuna funguo zilizogawiwa. Ongeza moja hapa chini.", + "totalLabel": "Jumla: {percent}%", + "totalExceeded": "⚠ inazidi 100%", + "addKey": "+ Ongeza ufunguo…", + "equalSplit": "Gawa kwa usawa", + "save": "Hifadhi mgao", "betaPreviewLabel": "Beta - Onyesho la kukagua UI.", "betaConfigSavedPrefix": "Usanidi umehifadhiwa ndani", "betaConfigSavedSuffix": "(bado haijaendelea kwenye seva). Utekelezaji wa kikomo kwa kila ombi bado haujaunganishwa kwenye bomba la seva mbadala. Skrini hii hukuruhusu kubuni na kuona taswira ya mgawanyiko wa sehemu; utekelezaji halisi utatua katika marudio ya siku zijazo na usugu wa DB na uzuiaji wa simu wa juu.", @@ -11668,10 +11675,10 @@ "endpointsHint": "Ita mifano hii pepe kwa ufunguo wowote uliotengwa — urutishaji + kota hushughulikiwa kwa kila kikundi.", "previewForKey": "Hakiki ya ufunguo", "previewKeyNone": "(miisho yote)", - "endpointsBaseUrl": "Base URL", + "endpointsBaseUrl": "URL ya msingi", "endpointsCollapse": "Kunja", "endpointsExpand": "Panua", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Asilia ya Anthropic", "endpointsResponsesNote": "Majibu ya OpenAI — codex/github", "endpointsWsNote": "WebSocket — codex pekee", "betaText": "Quota Share inafanya kazi lakini hitilafu zinatarajiwa. Umepata moja? Tafadhali iripoti.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "Kikundi hiki bado kina madimbwi — yagawie upya au uyafute kwanza.", "ungroupedTitle": "Bila kikundi", "ungroupedHint": "Madimbwi haya hayajagawiwa kwa kikundi kinachojulikana. Hariri dimbwi ili kulihamishia kwenye kikundi halisi.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Haikuwezekana kuondoa hifadhi hii.", + "dismiss": "Funga" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Programu-jalizi", + "description": "Sakinisha na udhibiti programu-jalizi ili kupanua utendaji wa OmniRoute", + "loading": "Inapakia programu-jalizi...", + "scanning": "Inachanganua...", + "scanForPlugins": "Changanua Programu-jalizi", + "noPlugins": "Hakuna programu-jalizi zilizosakinishwa", + "noPluginsDescription": "Weka saraka za programu-jalizi katika ~/.omniroute/plugins/ kisha ubofye Changanua.", + "activate": "Washa", + "deactivate": "Zima", + "uninstall": "Sanidua", + "uninstallConfirm": "Ungependa kusanidua programu-jalizi \"{name}\"?", + "pluginScanComplete": "Uchanganuzi wa programu-jalizi umekamilika", + "pluginScanFailed": "Uchanganuzi wa programu-jalizi umeshindwa", + "activated": "{name} imewashwa", + "deactivated": "{name} imezimwa", + "activateFailed": "Imeshindikana kuwasha {name}", + "deactivateFailed": "Imeshindikana kuzima {name}", + "uninstalled": "{name} imeondolewa", + "uninstallFailed": "Imeshindikana kuondoa {name}", + "configure": "Sanidi: {name}", + "configurePlugin": "Sanidi", + "noConfigSettings": "Programu-jalizi hii haina mipangilio inayoweza kusanidiwa.", + "saving": "Inahifadhi...", + "saveConfiguration": "Hifadhi Usanidi", + "configurationSaved": "Usanidi umehifadhiwa", + "saveConfigurationFailed": "Imeshindikana kuhifadhi usanidi", + "pluginNotFound": "Programu-jalizi haijapatikana", + "version": "Toleo", + "author": "Mwandishi", + "description_label": "Maelezo", + "status": "Hali", + "enabled": "Imewashwa", + "disabled": "Imezimwa", "installedTab": "Imesakinishwa", "marketplaceTab": "Soko", "marketplaceUrlLabel": "URL Maalum ya Soko", @@ -11729,7 +11736,7 @@ "verified": "Imethibitishwa", "install": "Sakinisha", "installedFromMarketplace": "Programu-jalizi {name} imesakinishwa!", - "hooks": "Hooks" + "hooks": "Viunganishi" }, "quotaPlans": { "title": "Mipango na Viwango", @@ -12040,7 +12047,7 @@ "agentBridgeModeDesc": "Nasa trafiki kutoka kwa mawakala wote wa IDE waliounganishwa", "customHostsMode": "Host Maalum", "customHostsModeDesc": "Ongeza host maalum za kuingilia", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "Proksi ya HTTP", "httpProxyModeDesc": "Tumia variable ya mazingira ya HTTP_PROXY", "systemWideMode": "Mfumo mzima", "systemWideModeDesc": "Ingilia trafiki yote ya mfumo (ya juu)", @@ -12121,7 +12128,7 @@ "timingUpstreamResponse": "Jibu la upstream", "timingNoData": "Hakuna data ya muda inayopatikana.", "timingTotalLatency": "Jumla ya muda wa kusubiri", - "timingTimestamp": "Timestamp", + "timingTimestamp": "Muhuri wa muda", "timingMethod": "Njia", "timingStatus": "Hali", "timingRequestSize": "Ukubwa wa ombi", @@ -12179,7 +12186,7 @@ "acp": { "title": "Mawakala wa ACP", "phrase": "CLI ambazo OmniRoute huzianzisha kama mfumo wa nyuma wa utekelezaji (mtiririko wa kinyume)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Watumiaji wengi wanaweza kupuuza hili — litumie tu wakati muunganisho unapolihitaji.", "flow": "Mteja → OmniRoute → anzisha CLI (stdio/ACP) → jibu", "seeOther": "Ona →" } @@ -12217,7 +12224,7 @@ "versionNotFound": "haikupatikana", "manualConfig": "Usanidi wa mwongozo", "installGuide": "Mwongozo wa kusakinisha", - "endpointLabel": "Endpoint", + "endpointLabel": "Sehemu ya mwisho", "baseUrlFull": "URL Kamili ya Msingi", "baseUrlPartial": "URL ya Msingi ya Sehemu", "refreshDetection": "Pakia upya ugunduzi", @@ -12291,7 +12298,7 @@ "addAgent": "Ongeza wakala", "agentName": "Jina", "agentNamePlaceholder": "k.m.: Wakala Wangu", - "binaryName": "Binary", + "binaryName": "Faili jozi", "binaryNamePlaceholder": "k.m.: myagent", "versionCommand": "Amri ya toleo", "versionCommandPlaceholder": "k.m.: myagent --version", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Sajili, orodhesha, jaribu na uondoe sehemu za mwisho za webhook. Sanidi usajili wa matukio (request.completed, request.failed, quota.exceeded, n.k.) na udhibiti majaribio ya kuwasilisha tena." }, "omni-mcp": { "name": "Seva ya MCP", @@ -12390,47 +12397,47 @@ "description": "Vituo vya mwisho vya udadisi vya msingi vinavyoendana na OpenAI: ukamilishaji wa soga, upachikaji, picha, sauti (TTS/STT), ulinganifu, kupanga upya, na Responses API. Eneo la msingi la ujumuishaji kwa ejenti za AI." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Hudumia", "description": "Anzisha, simamisha, na uanzishe upya seva ya OmniRoute kutoka kwenye CLI. Dhibiti hali ya daemon, usanidi wa mlango, urejeshi wa kiotomatiki, ujumuishaji wa trei ya mfumo, na njia ya mkato ya kufungua dashibodi." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Afya", "description": "Angalia afya ya seva, hali ya vipengele, na vipimo vya moja kwa moja kutoka kwenye CLI. Endesha `health`, `health components`, na `health watch` kwa ajili ya dashibodi ya wakati halisi ya vivunja mzunguko na hali ya mtoa huduma." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Watoa huduma", "description": "Dhibiti miunganisho ya watoa huduma kutoka kwenye CLI: orodhesha watoa huduma wanaopatikana/waliosanidiwa, ongeza, jaribu, jaribu-yote, thibitisha, zungusha funguo za API, na uangalie vipimo vya kila mtoa huduma." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: Funguo za API", "description": "Unda, orodhesha, zungusha, na ubatilishe funguo za API za OmniRoute kutoka kwenye CLI. Dhibiti mtiririko wa OAuth kwa uthibitishaji wa mtoa huduma na ukague mawanda ya funguo na muda wa kuisha." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: Modeli", "description": "Uliza mifano ya AI inayopatikana, orodhesha majina mbadala ya mifano, na vinjari katalogi kamili ya mifano kutoka kwenye CLI. Chuja kwa mtoa huduma, tafuta kwa uwezo, na utatue lahaja za majina ya mifano." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Gumzo", "description": "Tuma ukamilishaji wa soga, tiririsha majibu, na uanzishe kipindi shirikishi cha REPL kutoka kwenye CLI. Inasaidia watoa huduma wote wa OmniRoute, uelekezaji wa mchanganyiko, na usanidi wa kidokezo cha mfumo." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: Uelekezaji na Michanganyiko", "description": "Unda, orodhesha, sasisha, na ufute mchanganyiko wa uelekezaji kutoka kwenye CLI. Jaribu mikakati ya uelekezaji, kagua vipimo vya mchanganyiko, na usanidi minyororo ya dharura kwa njia shirikishi." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: Ustahimilivu na Vikomo", "description": "Kagua na udhibiti hali za vivunja mzunguko, muda wa kupumzika kwa miunganisho, mipaka ya upendeleo, na viwango vya kurudi nyuma kutoka kwenye CLI. Weka upya watoa huduma waliokwama na usanidi vizingiti vya ustahimilivu." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: Mfinyazo", "description": "Sanidi na ujaribu mgandamizo wa kidokezo kutoka kwenye CLI. Dhibiti vichujio vya RTK, sheria za Caveman, hali za mgandamizo zilizopangwa, na uhakiki matokeo ya mgandamizo kwa kutumia vidokezo halisi." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: Miktadha na Vipindi", "description": "Dhibiti usanidi wa uhandisi wa muktadha, seti za vichujio vya RTK, na vipindi vya mazungumzo kutoka kwenye CLI. Tuma mipangilio ya uwasilishaji wa muktadha na ukague mifereji ya muktadha inayofanya kazi." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: Gharama na Matumizi", "description": "Angalia mchanganuo wa gharama, matumizi ya tokeni, na kumbukumbu za simu kutoka kwenye CLI. Chuja kwa mtoa huduma, mfano, au muda wa tarehe. Hamisha ripoti za matumizi na ukague matumizi kwa kila muunganisho." }, "cli-mcp": { @@ -12442,7 +12449,7 @@ "description": "Muingiliano na seva ya OmniRoute A2A kutoka kwenye CLI. Tuma kazi, kagua historia ya utekelezaji wa ujuzi, na ujaribu itifaki ya wakala-kwa-wakala ya JSON-RPC 2.0 kwa mwingiliano." }, "cli-tunnel": { - "name": "CLI: Tunnels", + "name": "CLI: Vichuguu", "description": "Anzisha na usimamishe miunganisho ya tunnel (ngrok, Cloudflare, maalum) kutoka kwenye CLI. Kagua URL za tunnel zinazofanya kazi, usanidi uthibitishaji, na ujaribu ufikiaji wa nje." }, "cli-backup-sync": { @@ -12589,14 +12596,14 @@ "typeApikey": "Ufunguo wa API", "sortTypeFirst": "Rahisi zaidi kwanza", "sortTypeFirstHelp": "Panga kwa juhudi za kujisajili (Bila Kujisajili → Kuingia kwa OAuth → Ufunguo wa API), ukizingatia mpangilio wa ubora ndani ya kila kikundi", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Zinazoaminika zaidi kwanza", + "sortByReliabilityHelp": "Panga watoa huduma kulingana na sehemu ya miito iliyofanikiwa katika kipindi kilichochaguliwa. Watoa huduma wenye miito michache mno kiasi cha kutoweza kubainisha kiwango hubaki na mpangilio wao wa alama, chini ya wale waliopimwa.", "typeLegend": "Bila Kujisajili = hakuna usanidi · Kuingia kwa OAuth = ingia ukitumia akaunti yako mwenyewe · Ufunguo wa API = leta ufunguo wako mwenyewe au kiwango cha bure cha mtoa huduma huyo", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Uaminifu", + "colReliabilityHelp": "Sehemu ya miito ambayo mtoa huduma huyu alijibu katika saa 24 zilizopita. Kistari kinamaanisha kuwa alihudumia trafiki ndogo mno kiasi cha kutoweza kubainisha kiwango.", + "reliabilitySample": "Miito {successes} kati ya {requests} ilifanikiwa katika saa {hours} zilizopita", + "reliabilityTooFew": "Miito {requests} pekee katika saa {hours} zilizopita — ni michache mno kiasi cha kutoweza kubainisha kiwango", + "reliabilityNoTraffic": "Hakuna miito iliyorekodiwa katika saa 24 zilizopita" }, "discovery": { "title": "Ugunduzi wa Mtoa Huduma", @@ -12658,7 +12665,7 @@ "add": "Ongeza", "manualApiKey": "Tumia funguo ya API ya mwongozo", "createDahlTokenFailed": "Imeshindikana kuunda token ya Dahl", - "providerProxy": "Proxy", + "providerProxy": "Proksi", "providerProxyConfigureHint": "Sanidi proxy", "providerProxyTitleConfigured": "Proxy imewekwa: {host}" }, @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Msaidizi wa Radar", + "description": "Imethibitisha mpasho wa moja kwa moja wa msaidizi wa OmniRoute Radar", + "criteria": "Thibitisha mpasho wa moja kwa moja uliotiwa saini wa msaidizi wa Radar." }, "first-token": { "name": "Tokeni ya Kwanza", @@ -12839,14 +12846,14 @@ "title": "Bendera za Vipengele", "activeCount": "{count} hai", "inactiveCount": "{count} zisizo hai", - "dbOverrideCount": "{count} DB overrides", + "dbOverrideCount": "Ubatilishaji {count} wa DB", "searchPlaceholder": "Tafuta bendera...", "categories": { "all": "Zote", "security": "Usalama", "network": "Mtandao", "policies": "Sera", - "runtime": "Runtime", + "runtime": "Mazingira ya utekelezaji", "cli": "CLI", "health": "Afya", "requiresRestart": "Inahitaji Kuanzisha Upya" @@ -12948,8 +12955,8 @@ "description": "Ruhusu miunganisho mingi kwa kila nodi ya utangamano." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Zima Ukaguzi wa Dirisha la Muktadha", + "description": "Ruka ukaguzi wa ndani wa OmniRoute wa dirisha la muktadha na kiwango cha juu cha tokeni za ingizo kwa maombi ya moja kwa moja ya modeli moja. Watoa huduma wa nje bado hutekeleza vikomo vyao halisi. Mfinyazo wa kidokezo na vikomo vya tokeni za matokeo vinaendelea kutumika." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Ondoa vipengele vya pato la awamu ya maoni ya ndani kutoka kwenye mikondo ya kupita ya Responses API kabla ya kuvituma kwa wateja. Zima alama hii ili kupokea maoni ghafi ya mkondo wa juu." @@ -12985,7 +12992,7 @@ "description": "Ruhusu urejesho wa mkondo kuomba jibu tena na kuliunganisha baada ya baiti kuwa tayari zimefikia mteja." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Fanya mwendelezo wa katikati ya mtiririko baada ya wito wa zana uwe salama: usiwahi kuendelea na mtiririko uliokatika baada ya wito wa zana kutumwa (ukiwa bado unaendelea au tayari umekamilika), na usitishe baada ya mwendelezo mmoja mtupu badala ya kutumia bajeti yote ya majaribio upya." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Hamia mara moja kwenye muunganisho ndugu wakati mkondo unafungwa kabla ya kutuma fremu yoyote yenye manufaa na jaribio la marudio lenye kikomo kwenye muunganisho uleule limekwisha. Bila muunganisho ndugu unaoweza kutumika, hitilafu asili ya early-EOF hurejeshwa. Imezimwa: early-EOF inabaki ya mwisho baada ya jaribio la marudio." @@ -13012,7 +13019,7 @@ "description": "Baada ya ulandanishi wa mtoa huduma na mfano, zalisha upya wasifu wa ~/.codex/*.config.toml kutoka kwenye katalogi hai. Hii haibadilishi kamwe usanidi amilifu au wa chaguomsingi wa Codex na imezimwa kwa chaguomsingi." }, "OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES": { - "description": "After provider-model synchronization, regenerate ~/.claude/profiles/''/settings.json profiles from the live catalog. This never changes the active or default Claude configuration and is off by default." + "description": "Baada ya kusawazisha modeli za watoa huduma, tengeneza upya profaili za ~/.claude/profiles/''/settings.json kutoka kwenye katalogi ya moja kwa moja. Hatua hii kamwe haibadilishi usanidi unaotumika au chaguomsingi wa Claude, na imezimwa kwa chaguomsingi." }, "OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK": { "description": "Zima kituo cha mwisho cha ukaguzi wa afya wa mfano wa ndani." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Wezesha ufikiaji wa mtandao katika sandbox ya ujuzi." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Mzunguko wa Zana Unaomilikiwa na Seva", + "description": "Endelea na miito ya zana inayomilikiwa na seva isiyotiririshwa hadi modeli irudishe jibu linaloweza kutumiwa na kiteja." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Asili ya Retry-After", + "description": "Kwa majibu yaliyojumlishwa ya 429/503 ya kutopatikana, ondoa Retry-After wakati ambapo hakuna muda mahususi wa kujaribu tena katika siku zijazo unaojulikana badala ya kutuma muda bandia wa sekunde 1, ongeza error.retry_after_provenance, na usome vidokezo vya maandishi kuhusu kujaribu tena kwenye njia za uondoaji wa combo." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Kusimamishwa kwa Miundombinu ya Kipaumbele Kilicholindwa kama 502", + "description": "Jibu 502 badala ya 503 wakati lengo la kipaumbele la urejeshi wa mgawo pekee linaposimamisha mseto kwa sababu ambayo kwa hakika si mgawo: kivunja saketi cha mtoa huduma kilicho wazi au urukaji unaotabiriwa kutokana na muda wa kusubiri." } } }, @@ -13171,7 +13182,7 @@ "segmentHint": "Kila sehemu = pool moja ya bure · pool isiyo na marudio, hesabu ya uaminifu (hakuna dari zilizoongezwa za kikomo cha kasi).", "boost": "Fungua takriban ~{tokens} zaidi/mwezi kwa kuongeza salio la mara moja la $10 la OpenRouter (maombi 50 → 1000/siku)", "uncapped": "Bure kabisa, hakuna kikomo kilichochapishwa (kasi imedhibitiwa) — ufikiaji halisi, haujahesabiwa kwenye kichwa cha habari:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "~{tokens}/mwezi zaidi baada ya ukaguzi wa utambulisho wa kikanda (k.m. uthibitishaji wa jina halisi wa China bara) — ni kiwango halisi, hakijajumuishwa katika kiwango kikuu:", "tosRestricted": "{count, plural, one {# mfano} other {# mifano}} imewekewa alama kama iliyozuiliwa na ToS — unaamua", "provider": "Mtoa huduma", "model": "Mfano", @@ -13270,80 +13281,80 @@ "viewFullHistory": "Angalia historia kamili kwenye GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "Sera za uelekezaji wa kufikiri", + "apiKeyTitle": "Uelekezaji wa kufikiri kwa ufunguo huu wa API", + "subtitle": "Elekeza upya modeli na kiwango cha juhudi za kufikiri bila kuhitaji usaidizi wa kiteja. Maombi hubaki bila kubadilishwa ikiwa hakuna kanuni inayolingana.", + "loadError": "Kanuni za kufikiri hazikuweza kupakiwa.", + "saveError": "Kanuni si halali au haikuweza kuhifadhiwa.", + "saved": "Kanuni ya kufikiri imehifadhiwa.", + "deleteConfirm": "Ungependa kufuta kanuni hii ya kufikiri?", + "deleteError": "Kanuni ya urazini haikuweza kufutwa.", + "empty": "Hakuna kanuni za urazini zinazolingana zilizosanidiwa.", + "all": "Zote", + "any": "Yoyote", + "enabled": "Imewashwa", + "disabled": "Imezimwa", + "filterSearch": "Tafuta kanuni", + "filterScope": "Chuja kulingana na mawanda", + "filterStatus": "Chuja kulingana na hali", + "allModels": "miundo yote", + "keepModel": "Weka muundo", + "otherModel": "Muundo mwingine", + "combo": "Mchanganyiko", + "priorityShort": "kipaumbele {value}", + "toggleAria": "Washa {name}", + "edit": "Hariri", + "delete": "Futa", + "name": "Jina", + "description": "Maelezo", + "scopeLabel": "Mawanda", + "apiKey": "Ufunguo wa API", + "sourceCombo": "Mchanganyiko chanzo", + "connection": "Muunganisho", + "sourceModel": "Muundo chanzo au kibambo wakilishi", + "sourceModelOptional": "Tupu = miundo yote", + "sourceModelExample": "mf. gpt-5*", + "sourceEffort": "Kiwango cha juhudi cha chanzo", + "missing": "Hakijabainishwa", + "signalOnly": "Ishara endelevu ya urazini", + "requestTags": "Lebo za ombi", + "requestTagsExample": "uandishi wa msimbo, ya ndani", + "tagMode": "Ulinganishaji wa lebo", + "effortMode": "Hali ya juhudi", + "targetEffort": "Kiwango lengwa cha juhudi", + "routingTarget": "Lengo la uelekezaji", + "targetModel": "Muundo lengwa", + "targetCombo": "Mchanganyiko lengwa", + "budgetAction": "Bajeti ya kufikiri", + "budgetTokens": "Tokeni za bajeti", + "priority": "Kipaumbele", + "saveChanges": "Hifadhi mabadiliko", + "add": "Ongeza kanuni", + "cancel": "Ghairi", + "simulateTitle": "Iga kanuni", + "model": "Muundo", + "effort": "Juhudi", + "transport": "Usafirishaji", + "simulate": "Iga bila huduma ya upstream", + "extendedComboWarning": "Max/Ultra inathibitishwa kando kwa kila lengo la mseto wakati wa uelekezaji.", + "extendedUnknownWarning": "Weka muundo lengwa ili kuthibitisha matumizi ya Max/Ultra.", + "extendedUnsupportedWarning": "Max/Ultra inajulikana kuwa inatumika tu na miundo inayofaa ya Codex GPT-5.6. Miundo maalum isiyojulikana inakubaliwa na seva pamoja na onyo.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "Kimataifa", + "apiKey": "Ufunguo wa API", + "combo": "Mseto", + "model": "Muundo", + "connection": "Muunganisho" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Rithi mipangilio ya kiteja", + "default": "Tumia chaguo-msingi", + "force": "Lazimisha" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Hifadhi", + "remove": "Ondoa", + "set": "Weka thamani isiyobadilika" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "Live (i realtid)", "tierCommunity": "Gemenskap (30-dagars fördröjning)", "activateTitle": "Aktivera Radar", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Linganisha ufikiaji wa Jumuiya na wa moja kwa moja, elewa kile ambacho usakinishaji wako hubadilishana, kisha uchague jinsi ya kuwezesha Radar.", + "accessScaleTitle": "Elewa ufikiaji wa Radar kabla ya kuiwezesha", + "accessScaleIntro": "Radar haitumii mtandao hadi uchague kujiunga. Chagua ufikiaji wa Jumuiya au uwashe ufunguo binafsi wa mfadhili baada ya kukagua masharti haya.", + "accessCommunityRule": "Jumuiya — hakuna ufunguo unaohitajika: katalogi kamili yenye ucheleweshaji wa siku 30.", + "accessSingleUseRule": "Weka nyota + fuata — baada ya GitHub OAuth kuthibitisha yote mawili, akaunti yako ya GitHub hupokea usomaji mmoja wa katalogi ya moja kwa moja; kisha ufikiaji hurudi kuwa wa Jumuiya. Ufikiaji huu wa mara moja hauwezi kutolewa tena kwa akaunti hiyo.", + "accessContributorRule": "Wachangiaji — PR zilizounganishwa, commits na idadi ya mistari hupanga tu nafasi za kila wiki. Walio katika nafasi 10 za juu hupokea siku 365; nafasi za 11–100 hupokea siku 90; wachangiaji walio nje ya 100 bora hawapokei ruhusa yoyote bila kujali idadi ya PR. Kuondoka kwenye orodha ya nafasi hakupunguzi kamwe muda ambao tayari umetolewa.", + "accessSupporterRule": "Wafadhili — ununuzi wa mara moja hutoa miezi 6, mwaka 1 au ufikiaji wa maisha yote bila usasishaji wa kiotomatiki. Ununuzi, michango, vipindi vya uchangiaji na ruhusa zinazotolewa mwenyewe hujumlishwa; ufikiaji wa maisha yote hushinda daima.", + "accessUseTitle": "Matumizi binafsi, urejeshaji na ukaguzi", + "accessInstallationRule": "Leseni binafsi — tumia ufunguo kwenye usakinishaji mmoja unaotumika kwa wakati mmoja. OmniRoute haitambui alama bainifu za maunzi. Urejeshaji hubatilisha na kubadilisha ufunguo uliopotea bila kuweka upya tarehe yake ya mwisho wa matumizi.", + "accessAbuseRule": "Ukaguzi wa matumizi mabaya — IP tofauti ya 4 ndani ya saa 24 huweka tu alama ya ukaguzi wa mwenyewe; kamwe haizuii wala kubatilisha ufunguo kiotomatiki.", + "accessOffersRule": "Ofa za moja kwa moja huchaguliwa kwa uangalifu na zinaweza kubadilika au kuisha muda wake.", + "privacyTitle": "Kile ambacho Radar hubadilishana", + "privacyDownloadsRule": "Vipakuliwa — usakinishaji wako hupokea katalogi na metadata ya rufaa zilizotiwa sahihi kwa njia ya kriptografia; ufunguo halali wa moja kwa moja pia hufungua ofa zilizotiwa sahihi na Intel.", + "privacySendsRule": "Kinachotumwa — ulandanishaji wa upande wa seva hutuma ufunguo wa mfadhili kama tokeni ya Bearer, na miundombinu ya HTTPS hupokea IP ya muunganisho. Uhasibu wa maombi ya mipasho hauhifadhi thamani yoyote kati ya hizo katika hali ghafi: huhifadhi hashes za funguo, matumizi yaliyojumlishwa na IP HMAC iliyofupishwa inayobadilishwa kila siku kwa ajili ya ukaguzi wa matumizi mabaya.", + "privacyNeverRule": "Visivyokusanywa kamwe — vidokezo, majibu, mazungumzo, vitambulisho vya watoa huduma, trafiki ya miundo, muda wa upatikanaji, ucheleweshaji na usanidi wa mtoa huduma wa ndani havitumwi kamwe kwa Radar.", + "activateButton": "Washa Jumuiya", "activating": "Aktiverar...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Tayari una ufunguo wa mfadhili?", + "keyInvalidFormatError": "Muundo wa ufunguo si sahihi. Lazima uanze na \"omr_\" ukifuatiwa na herufi 40 za heksadesimali.", + "activateWithKeyButton": "Washa usaidizi", + "changeKeyButton": "Badilisha ufunguo", + "claimSectionTitle": "Bado huna ufunguo wa msaidizi?", + "contributorButton": "Mimi ni mchangiaji", + "contributorHint": "GitHub OAuth hukagua orodha ya sasa ya kila wiki: Walio kwenye nafasi 10 bora hupata siku 365 na walio katika nafasi za 11–100 hupata siku 90. Idadi ya PR pekee haitoi kamwe ufikiaji nje ya nafasi 100 bora.", + "supporterButton": "Saidia mradi", + "supporterHint": "Chaguo za mara moja za miezi 6, mwaka 1 na maisha yote hazijisasishi kiotomatiki; vipindi vinavyostahiki hujumlishwa na chaguo la maisha yote hutangulia.", "colProvider": "Leverantör", "colModel": "Modell", "colQuota": "Kvot", + "colLimits": "Vikomo vya matumizi", + "trainsOnPrompts": "Hufunzwa kwa vidokezo", + "trainsOnPromptsHelp": "Masharti ya mtoa huduma huyu yanasema kuwa anaweza kufunza kwa kutumia vidokezo unavyotuma. Miundo isiyo na beji hii ama inasema haifanyi hivyo, au haijaweka hilo kwenye nyaraka — kutokuwepo kwa taarifa si hakikisho.", + "limitsUnknownHelp": "Vikomo vilivyoripotiwa na mpasho wa Radar pekee; hakuna vikomo vilivyochapishwa kwa ingizo hili", + "contextUnknownHelp": "Dirisha la muktadha halijulikani kwa ingizo hili", + "capabilityUnknownHelp": "Uwezo haujaripotiwa na mpasho", "colContext": "Kontext", "colCapabilities": "Funktioner", - "colTos": "ToS Risk", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", + "colTos": "Hatari ya ToS", "newBadge": "ny", "setupGuide": "Installationsguide", "disabledByFeed": "Inaktiverad av Radar-flödet", "capTools": "Verktyg", - "capVision": "Vision", + "capVision": "Uoni", "capThinking": "Tänkande", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalogi", + "freeCreditsTab": "Salio la bure", + "freeCreditsSubtitle": "Viungo vya rufaa kutoka kwa watoa huduma wanaofuatiliwa na Radar — kuvitumia hakukugharimu chochote cha ziada na husaidia kuunga mkono OmniRoute.", + "fixedLinksEmpty": "Bado hakuna viungo vya rufaa. Sawazisha Radar ili kuangalia masasisho.", + "requiredActionLabel": "Cha kufanya:", + "claimButton": "Dai salio", + "campaignsTitle": "Kampeni za muda mfupi", + "campaignsEmpty": "Hakuna kampeni zinazoendelea sasa — angalia tena baadaye.", + "campaignsUpsellCommunity": "Kampeni za muda mfupi ni nyongeza kwa wafuasi. Kila kitu katika viungo vya kudumu vya ukurasa huu kinasalia bila malipo kwa kila mtu.", + "campaignsValidUntil": "Halali hadi {date}", + "colActions": "Vitendo", + "localBadge": "ya ndani", + "editModel": "Hariri", + "saveModel": "Hifadhi", + "cancelEdit": "Ghairi", + "resetModel": "Weka upya mabadiliko ya ndani", + "hideModel": "Ficha", + "restoreModel": "Rejesha", + "hiddenModelsTitle": "Miundo iliyofichwa", + "modelDisplayName": "Jina la kuonyesha la ndani", + "modelEnabled": "Imewashwa katika kifaa", + "localStateSaveFailed": "Imeshindwa kuhifadhi mipangilio ya ndani ya Radar", + "guidedCombos": "Mchanganyiko wenye mwongozo", + "offers": "Ofa", + "intel": "Taarifa" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Michanganyiko inayoongozwa na Radar", + "subtitle": "Unda mbadala za kipaumbele kutoka kwa miundo sawia isiyolipishwa iliyochaguliwa na Radar.", + "backToRadar": "Rudi kwenye Radar", + "loading": "Inapakia mapendekezo ya michanganyiko...", + "familyLabel": "Familia ya miundo", + "modelsLabel": "Mpangilio wa kipaumbele", + "strategyReason": "Kipaumbele hutumia kwanza bajeti kubwa zaidi inayojirudia ya matumizi bila malipo, kisha hutumia watoa huduma wengine amilifu inapohitajika.", + "generateButton": "Zalisha mchanganyiko", + "generating": "Inazalisha...", + "alreadyCreated": "Tayari imeundwa", + "created": "Mchanganyiko umeundwa", + "noSuggestions": "Kwa sasa hakuna familia ya miundo inayostahiki iliyo na miunganisho amilifu kwa angalau watoa huduma wawili.", + "catalogRequired": "Sawazisha katalogi ya Radar kwanza ili kupakia familia za miundo zilizochaguliwa.", + "loadFailed": "Imeshindwa kupakia mapendekezo ya michanganyiko ya Radar.", + "createFailed": "Imeshindwa kuunda mchanganyiko. Kagua miunganisho yako ya watoa huduma kisha ujaribu tena." }, "radarSetupPage": { "title": "Leverantörsinstallation", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "Uimara wa Muunganisho", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Miunganisho yako hujiimarisha kiotomatiki", + "reassuranceDetail": "Kwa kawaida huhitaji kuchukua hatua yoyote. OmniRoute husitisha muunganisho kwa muda baada ya hitilafu, kisha huujaribu tena kwa usalama.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Maombi yanaweza kutumwa", + "coolingDown": "Itajaribu tena hivi karibuni", + "lockedOut": "Inahitaji uangalifu wako" }, "table": { "status": "Hali", @@ -13598,7 +13609,7 @@ "remaining": "Iliyobaki", "noLockouts": "Hakuna kufuli hai", "provider": "Mtoa Huduma", - "id": "ID", + "id": "Kitambulisho", "authType": "Aina ya Uthibitishaji", "priority": "Kipaumbele", "isActive": "Hai", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "kataa maombi kabla ya kutuma wakati mfano wa lengo hauna uwezo unaohitajika (maono, zana, matokeo yaliyoandikwa, dirisha la muktadha). Inalinda maombi ya moja kwa moja kutoka kwa mtoa huduma mmoja ambayo yanapita chujio cha ulinganifu wa safu ya mchanganyiko.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Ruka ukaguzi wa ndani wa OmniRoute wa dirisha la muktadha na kiwango cha juu cha tokeni za ingizo kwa maombi ya moja kwa moja ya muundo mmoja. Watoa huduma wa juu bado hutekeleza vikomo vyao halisi. Mfinyazo wa kidokezo na vikomo vya tokeni za towe huendelea kutumika.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Takwimu za utafutaji na utafutaji wa hivi karibuni huhesabu tu watoa huduma ambao bado wana muunganisho unaotumika (watoa huduma wasiohitaji ufunguo kama vile duckduckgo-free huhesabiwa kila wakati). Hali ya Kuzima huhifadhi kila safu ya utafutaji iliyohifadhiwa yenye kitambulisho cha mtoa huduma.", "publicSystem": { "notFound": { "title": "Ukurasa haukupatikana", @@ -13699,12 +13710,12 @@ "maintenanceInfo": "Taarifa za Matengenezo", "service": "Huduma", "unknown": "sijulikana", - "notAvailable": "n/a", + "notAvailable": "haitumiki", "providersTracked": "Watoa Huduma Waliofuatiliwa", "circuitBreakerState": "Hali ya Kivunja Mzunguko wa Mtoa Huduma", "lastUpdate": "Sasisho la mwisho: {timestamp}", - "uptimeMinutes": "{minutes}m", - "uptimeHoursMinutes": "{hours}h {minutes}m" + "uptimeMinutes": "dak {minutes}", + "uptimeHoursMinutes": "saa {hours} dak {minutes}" }, "statusPages": { "400": { @@ -13747,7 +13758,7 @@ "title": "Maombi Mengi Sana", "description": "Mipaka ya viwango imezidiwa kwa mteja huyu, ufunguo, au mtoa huduma.", "suggestion1": "Subiri kwa ajili ya kupumzika na jaribu tena baada ya kipindi kilichopendekezwa.", - "suggestion2": "Switch to a combo with fallback providers.", + "suggestion2": "Badilisha hadi mchanganyiko wenye watoa huduma mbadala.", "suggestion3": "Panga upya uhimilivu wa mtoa huduma/profili za mipaka ya kiwango katika mipangilio.", "primaryAction": "Fungua Mipangilio ya Ustahimilivu", "secondaryAction": "Fungua Mchanganyiko" @@ -13848,7 +13859,7 @@ "errorPopupClosed": "Dirisha la Uidhinishaji lilifungwa kabla ya kukamilisha.", "errorAccessTokenRequired": "Ishara ya ufikiaji inahitajika.", "errorImportFailed": "Uagizaji umeshindikana", - "title": "Connect Trae SOLO", + "title": "Unganisha Trae SOLO", "authorizeDescription": "Thibitisha kupitia trae.ai katika dirisha la popup. Dirisha la popup litajifunga lenyewe mara tu token itakapokuwa imeagizwa.", "authorizeImportant": "Muhimu: lazima uwe umeingia kwenye trae.ai katika browsa hii kwanza. Ukurasa wa kuidhinisha unathibitisha tu kikao kilichopo — hauwezi kukusaini. Ikiwa unaona \"Kuingia Kumeshindwa\", bonyeza \"Fungua solo.trae.ai\", ingia, kisha rudi hapa.", "waitingForAuthorization": "Inasubiri trae.ai…", @@ -13917,7 +13928,7 @@ "time": "Wakati", "latency": "Uchelewaji", "clientIp": "Anwani ya IP ya Mteja", - "proxy": "Proxy", + "proxy": "Proksi", "direct": "Moja kwa moja", "type": "andika", "level": "Kiwango", @@ -13935,7 +13946,7 @@ "followDescription": "Mhimili unateleza kushoto, mstari wa SASA unabaki kwenye 75%", "now": "Sasa", "nowDescription": "Ruka kwa wakati wa sasa, mstari wa SASA unarudi katikati", - "pan": "Pan", + "pan": "Sogeza", "panDescription": "Buruta ili kuchunguza, nyuma imegandishwa" }, "reset": "Rekebisha", @@ -13947,7 +13958,7 @@ "tokens": "Vifungo", "active": "Haiwezi", "other": "Nyingine", - "tenMinutes": "10min", + "tenMinutes": "dak 10", "hour": "saa", "day": "siku", "unknownModel": "sijulikana", @@ -13956,7 +13967,7 @@ "metadata": { "compressionTitle": "Kufinya", "compressionDescription": "Sanitize mipangilio ya kubana muktadha ili kupunguza matumizi ya tokeni na gharama.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — Proksi za Relay", "relayDescription": "Mikondo ya proxy ya relay isiyo na seva kwa miundombinu yako ya AI", "trafficInspectorTitle": "Mchunguzi wa Trafiki — OmniRoute", "trafficInspectorDescription": "Fuatilia wito za LLM + debug trafiki ya HTTPS ya programu yoyote" @@ -13967,7 +13978,7 @@ "runners": "Wakimbiaji", "tasks": "Majukumu", "colName": "Jina", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "Hali", "colTask": "Kazi", "colMode": "Hali", @@ -14070,11 +14081,11 @@ "actionApprove": "Idhinisha mpango", "actionCancel": "Ghairi", "actionSeeInGraph": "Ona kwenye grafu", + "actionRepeat": "Rudia", "actionDone": "Kitendo kimetumika", "actionFailed": "Kitendo kimeshindwa: {error}", "detailFailed": "Imeshindwa kupakia maelezo: {error}", "mirroredInA2A": "Kimeakisiwa katika A2A", - "actionRepeat": "Rudia", "repeatConfirm": "Bofya tena kuthibitisha", "repeatDone": "Uendeshaji mpya umeundwa", "repeatUnavailable": "Ingizo asili halipatikani" @@ -14088,57 +14099,57 @@ "networkError": "Kosa la mtandao — haiwezekani kuboresha mipangilio ya kufichua mtoa huduma" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Ofa za wafuasi", + "subtitle": "Punguzo rasmi, mikopo, vipindi vya majaribio na manufaa ya washirika yaliyokaguliwa kutoka Radar.", + "backToRadar": "Rudi kwenye Radar", + "loading": "Inapakia ofa...", + "refresh": "Onyesha upya ofa", + "refreshing": "Inaonyesha upya...", + "loadFailed": "Hatukuweza kuonyesha upya ofa. Akiba ya mwisho ya ndani iliyothibitishwa imehifadhiwa.", + "empty": "Hakuna ofa zinazotumika kwa sasa.", + "keyRequiredTitle": "Ufunguo wa mfuasi unahitajika", + "keyRequiredDescription": "Ofa ni manufaa ya moja kwa moja ya Radar. Ongeza ufunguo uliopo wa mfuasi kwenye skrini ya Radar, thibitisha hali yako ya uchangiaji, au saidia mradi ili kupata ufunguo.", + "contributorButton": "Mimi ni mchangiaji", + "supporterButton": "Saidia mradi", + "partnerBadge": "Mshirika", + "officialBadge": "Rasmi", + "conditionsLabel": "Masharti:", + "validUntil": "Inatumika hadi {date}", + "noExpiry": "Hakuna tarehe ya mwisho iliyotangazwa", + "openOffer": "Tazama ofa", + "trialDays": "{days, plural, one {siku #} other {siku #}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Taarifa za Radar", + "subtitle": "Nafasi za ELO zinazomilikiwa na Radar na mabadiliko halisi ya katalogi.", + "backToRadar": "Rudi kwenye Radar", + "loading": "Inapakia taarifa...", + "refresh": "Onyesha upya taarifa", + "syncing": "Inaonyesha upya...", + "loadFailed": "Hatukuweza kuonyesha upya taarifa. Akiba ya mwisho ya ndani iliyothibitishwa imehifadhiwa.", + "empty": "Bado hakuna muhtasari wa taarifa uliothibitishwa unaopatikana.", + "supporterBadge": "Mfuasi wa Radar", + "methodology": "Mbinu", + "eloMethod": "ELO, ya awali {initial}, K={factor}", + "freshness": "Usasishaji wa katalogi", + "ageDays": "{days, plural, one {ina siku #} other {ina siku #}}", + "trend": "Mwelekeo wa katalogi", + "modelDelta": "Miundo {current}, +{added} / -{removed}", + "ranking": "Nafasi za miundo", + "noRankings": "Bado hakuna ulinganisho uliothibitishwa unaopatikana.", + "model": "Muundo", + "category": "Kategoria", + "rating": "Ukadiriaji", + "matches": "Mechi", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Mpya", + "aging": "Inazeeka", + "stale": "Imepitwa na wakati" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Inakua", + "stable": "Thabiti", + "shrinking": "Inapungua" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Omba inazidi dirisha la muktadha wa mtoa huduma" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Uchambuzi wa Gharama Nafuu ni Rafiki wa Chanzo Huria wa OmniRoute", + "description": "Lango linalopanga kwa gharama na kuuza tena modeli nyingi za kisasa kupitia endpoint moja inayooana na OpenAI — likielekeza kila ombi kwa mtoa huduma anayestahiki mwenye bei nafuu zaidi, bila kuzidi bei iliyoorodheshwa.", + "cta": "Pata Ufunguo wa API", + "partnerLinkNote": "Kiungo cha mshirika", + "dismissAriaLabel": "Funga" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Zima uundaji wa vibadala vya kiwango cha kufikiri (k.m. -low, -medium, -high) katika katalogi ya /v1/models." } diff --git a/src/i18n/messages/ta.json b/src/i18n/messages/ta.json index d9c7b74fe1..b4de89c2a4 100644 --- a/src/i18n/messages/ta.json +++ b/src/i18n/messages/ta.json @@ -1,15 +1,15 @@ { "common": { - "save": "Save", - "cancel": "Cancel", - "delete": "Delete", - "loading": "Loading...", + "save": "சேமி", + "cancel": "ரத்துசெய்", + "delete": "நீக்கு", + "loading": "ஏற்றுகிறது...", "selectOption": "ஒரு விருப்பத்தைத் தேர்ந்தெடுக்கவும்", - "error": "An error occurred", - "success": "Success", - "confirm": "Are you sure?", - "refresh": "Refresh", - "close": "Close", + "error": "ஒரு பிழை ஏற்பட்டது", + "success": "வெற்றி", + "confirm": "நிச்சயமாகத் தொடர விரும்புகிறீர்களா?", + "refresh": "புதுப்பி", + "close": "மூடு", "previousPage": "முந்தைய பக்கம்", "nextPage": "அடுத்த பக்கம்", "capsLockOn": "Caps Lock இயக்கத்தில் உள்ளது", @@ -17,142 +17,142 @@ "toggleColumns": "நெடுவரிசைகளை நிலைமாற்றவும்", "confirmTitle": "உறுதிப்படுத்தவும்", "confirmAction": "உறுதிப்படுத்தவும்", - "add": "Add", - "edit": "Edit", - "search": "Search", - "back": "Back", - "next": "Next", - "submit": "Submit", - "reset": "Reset", - "copy": "Copy", - "copied": "Copied!", - "enabled": "Enabled", - "disabled": "Disabled", - "active": "Active", - "inactive": "Inactive", - "noData": "No data available", - "nothingHere": "Nothing here yet", - "configure": "Configure", + "add": "சேர்", + "edit": "திருத்து", + "search": "தேடு", + "back": "பின்செல்", + "next": "அடுத்து", + "submit": "சமர்ப்பி", + "reset": "மீட்டமை", + "copy": "நகலெடு", + "copied": "நகலெடுக்கப்பட்டது!", + "enabled": "இயக்கப்பட்டது", + "disabled": "முடக்கப்பட்டது", + "active": "செயலில் உள்ளது", + "inactive": "செயலில் இல்லை", + "noData": "தரவு எதுவும் இல்லை", + "nothingHere": "இதுவரை இங்கு எதுவும் இல்லை", + "configure": "உள்ளமை", "manualConfig": "கைமுறை உள்ளமைவு", - "manage": "Manage", - "name": "Name", - "actions": "Actions", - "status": "Status", - "type": "Type", + "manage": "நிர்வகி", + "name": "பெயர்", + "actions": "செயல்கள்", + "status": "நிலை", + "type": "வகை", "model": "Model", - "models": "models", - "provider": "Provider", + "models": "மாதிரிகள்", + "provider": "வழங்குநர்", "unknownProvider": "தெரியாத வழங்குநர்", - "account": "Account", - "time": "Time", - "details": "Details", - "created": "Created", - "lastUsed": "Last Refreshed", - "loadMore": "Load More", - "noResults": "No results found", - "reloadPage": "Reload Page", - "connected": "Connected", - "disconnected": "Disconnected", - "notConfigured": "Not configured", - "testConnection": "Test Connection", - "enable": "Enable", - "disable": "Disable", - "columns": "Columns", - "newest": "Newest", - "oldest": "Oldest", - "all": "All", - "none": "None", - "yes": "Yes", - "no": "No", + "account": "கணக்கு", + "time": "நேரம்", + "details": "விவரங்கள்", + "created": "உருவாக்கப்பட்டது", + "lastUsed": "கடைசியாகப் புதுப்பிக்கப்பட்டது", + "loadMore": "மேலும் ஏற்று", + "noResults": "முடிவுகள் எதுவும் கிடைக்கவில்லை", + "reloadPage": "பக்கத்தை மீண்டும் ஏற்று", + "connected": "இணைக்கப்பட்டது", + "disconnected": "இணைப்பு துண்டிக்கப்பட்டது", + "notConfigured": "உள்ளமைக்கப்படவில்லை", + "testConnection": "இணைப்பைச் சோதிக்கவும்", + "enable": "இயக்கு", + "disable": "முடக்கு", + "columns": "நெடுவரிசைகள்", + "newest": "மிகப் புதியவை", + "oldest": "மிகப் பழையவை", + "all": "அனைத்தும்", + "none": "எதுவுமில்லை", + "yes": "ஆம்", + "no": "இல்லை", "on": "இயக்கத்தில்", "off": "முடக்கத்தில்", - "warning": "Warning", - "note": "Note", - "free": "Free", - "skipToContent": "Skip to content", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", - "accept": "Accept", - "accountId": "Account ID", + "warning": "எச்சரிக்கை", + "note": "குறிப்பு", + "free": "இலவசம்", + "skipToContent": "உள்ளடக்கத்திற்குச் செல்க", + "maintenanceServerIssues": "சேவையகத்தில் சிக்கல்கள் ஏற்பட்டுள்ளன. சில அம்சங்கள் கிடைக்காமல் இருக்கலாம்.", + "maintenanceServerUnreachable": "சேவையகத்தை அணுக முடியவில்லை. மீண்டும் இணைக்கப்படுகிறது...", + "accept": "ஏற்கவும்", + "accountId": "கணக்கு ஐடி", "alias": "Alias", - "apiKeyId": "API Key ID", - "apiKeyName": "API Key Name", - "apiKeySecret": "API Key Secret", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "apiKeyId": "API விசை ஐடி", + "apiKeyName": "API விசையின் பெயர்", + "apiKeySecret": "API விசையின் ரகசியம்", + "authorization": "அங்கீகாரம்", + "content-type": "உள்ளடக்க வகை", + "content-length": "உள்ளடக்க நீளம்", "cookie": "Cookie", - "file": "File", - "host": "Host", + "file": "கோப்பு", + "host": "புரவலன்", "id": "ID", - "import": "Import", + "import": "இறக்குமதி செய்", "limit": "Limit", "offset": "Offset", - "open": "Open", - "origin": "Origin", - "promptTokens": "Prompt Tokens", - "completionTokens": "Completion Tokens", - "totalTokens": "Total Tokens", - "rawModel": "Raw Model", - "scope": "Scope", - "skill": "Skill", - "sortBy": "Sort By", - "sortOrder": "Sort Order", - "tab": "Tab", + "open": "திற", + "origin": "தோற்றம்", + "promptTokens": "உள்ளீட்டு டோக்கன்கள்", + "completionTokens": "நிறைவு டோக்கன்கள்", + "totalTokens": "மொத்த டோக்கன்கள்", + "rawModel": "மூல மாடல்", + "scope": "வரம்பு", + "skill": "திறன்", + "sortBy": "வரிசைப்படுத்தும் அடிப்படை", + "sortOrder": "வரிசைப்படுத்தும் வரிசை", + "tab": "தாவல்", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "உரைப்பகுதி", + "tool": "கருவி", + "toolId": "கருவி ID", "web": "Web", - "whereUsed": "Where Used", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "resolve": "Resolve", - "force": "Force", + "whereUsed": "பயன்படுத்தப்படும் இடங்கள்", + "whitelist": "அனுமதிப் பட்டியல்", + "blacklist": "தடுப்புப் பட்டியல்", + "resolve": "தீர்வு காண்", + "force": "கட்டாயப்படுத்து", "base64url": "Base64 URL", "hex": "Hex", - "range": "Range", - "component": "Component", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", - "code": "Code", - "compatible": "Compatible", - "chat-completions": "Chat Completions", + "range": "வரம்பு", + "component": "கூறு", + "redirect_uri": "திருப்பிவிடும் URI", + "idempotency-key": "மீள்செயல் பாதுகாப்பு விசை", + "error_description": "பிழை விளக்கம்", + "code": "குறியீடு", + "compatible": "இணக்கமானது", + "chat-completions": "அரட்டை நிறைவுகள்", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", - "hours": "Hours", + "auth_token": "அங்கீகார டோக்கன்", + "crypto": "குறியாக்கவியல்", + "hours": "மணிநேரங்கள்", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", - "resolveConnectionId": "Resolve Connection ID", - "resolve_connection_id": "Resolve Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "proxy_id": "பதிலி ID", + "proxyId": "பதிலி ID", + "connectionId": "இணைப்பு ID", + "resolveConnectionId": "இணைப்பு ID-ஐத் தீர்மானி", + "resolve_connection_id": "இணைப்பு ID-ஐத் தீர்மானி", + "scope_id": "செயற்பரப்பு ID", + "scopeId": "செயற்பரப்பு ID", + "jwtSecret": "JWT இரகசியம்", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", "builder-id": "Builder ID", - "musicDesc": "Music Description", - "musicGeneration": "Music Generation", + "musicDesc": "இசை விளக்கம்", + "musicGeneration": "இசை உருவாக்கம்", "idc": "IDC", - "cloud-status-changed": "Cloud status changed", - "where_used": "Where Used", - "windowMs": "Window (ms)", + "cloud-status-changed": "கிளவுட் நிலை மாறியது", + "where_used": "பயன்படுத்தப்படும் இடங்கள்", + "windowMs": "காலச் சாளரம் (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", - "Failed to save pricing": "Failed to save pricing", - "Failed to reset pricing": "Failed to reset pricing", - "apikey": "API Key", + "TOOL_ALLOWLIST": "கருவி அனுமதிப் பட்டியல்", + "TOOL_DENYLIST": "கருவி தடுப்புப் பட்டியல்", + "Failed to save pricing": "விலை நிர்ணயத்தைச் சேமிக்க முடியவில்லை", + "Failed to reset pricing": "விலை நிர்ணயத்தை மீட்டமைக்க முடியவில்லை", + "apikey": "API விசை", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "டாஷ்போர்டுக்குச் செல்", + "checkSystemStatus": "கணினி நிலையைச் சரிபார்", + "selectModel": "மாதிரியைத் தேர்ந்தெடுக்கவும்", "addModel": "மாதிரியைச் சேர்க்கவும்", "effortNone": "எதுவுமில்லை", "effortLow": "குறைவு", @@ -162,12 +162,12 @@ "effortMax": "அதிகபட்சம்", "effortUltra": "அல்ட்ரா", "reasoningEffort": "பகுத்தறிதல் முயற்சி", - "wireApi": "Wire API", + "wireApi": "API-ஐ இணைக்கவும்", "modelAliases": "மாதிரி மாற்றுப்பெயர்கள்", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "சேர்க்கைகள்", + "noModelsFound": "மாதிரிகள் எதுவும் கிடைக்கவில்லை", + "clear": "அழிக்கவும்", + "done": "முடிந்தது", "selectAll": "அனைத்தையும் தேர்ந்தெடு", "unselectAll": "தேர்வை நீக்கு", "visibleModels": "காணக்கூடியவை", @@ -184,527 +184,527 @@ "selectAllProviders": "எல்லா வழங்குநர்களையும் சரிபார்க்கவும்", "clearProviderSelection": "சேவையளர்களை அகற்றவும்", "providersSelectedCount": "{count} வழங்குநர்கள் சரிபார்க்கப்பட்டனர்", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "பிழை ஏற்பட்டது", + "comboDeleted": "சேர்க்கை நீக்கப்பட்டது", + "hide": "மறைக்கவும்", + "creating": "உருவாக்கப்படுகிறது", + "comboCreated": "சேர்க்கை உருவாக்கப்பட்டது", + "swapFormats": "வடிவங்களை மாற்றவும்", + "daysAgo": "நாட்களுக்கு முன்பு", + "retries": "மறுமுயற்சிகள்", + "errorDuringRestore": "மீட்டமைப்பின்போது பிழை", + "eventsAppearHint": "நிகழ்வுகள் தோன்றும் குறிப்பு", + "noLockouts": "பூட்டல்கள் இல்லை", + "webSearchDesc": "இணையத் தேடல் விளக்கம்", + "audioProvidersHeading": "ஆடியோ வழங்குநர்கள்", "cloudAgentProviders": "கிளவுட் ஏஜென்ட் வழங்குநர்கள்", - "minutesAgo": "Minutes Ago", + "minutesAgo": "நிமிடங்களுக்கு முன்பு", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "நேரலையில் தானாகப் புதுப்பிக்கப்படுகிறது", + "webSearch": "இணையத் தேடல்", + "anthropicPrefixPlaceholder": "Anthropic முன்னொட்டு இடநிரப்பி", + "addModelToCombo": "சேர்க்கையில் மாதிரியைச் சேர்க்கவும்", + "failedToLoad": "ஏற்ற முடியவில்லை", + "categoryMedia": "ஊடக வகை", + "enableCloud": "கிளவுட்டை இயக்கவும்", + "expirationBannerExpiringSoon": "காலாவதியாகவிருக்கும் அறிவிப்புப் பட்டை", + "retry": "மீண்டும் முயற்சிக்கவும்", + "embeddings": "உட்பொதிவுகள்", + "errorCount": "பிழைகளின் எண்ணிக்கை", + "backupReasonManual": "கைமுறை காப்புப்பிரதிக்கான காரணம்", + "safeSearchModerate": "மிதமான பாதுகாப்புத் தேடல்", + "activeLimiters": "செயலில் உள்ள வரம்புக் கட்டுப்படுத்திகள்", + "a2aCardTitle": "A2A அட்டைத் தலைப்பு", + "cloudWorkerUnreachable": "கிளவுட் வொர்க்கரை அணுக முடியவில்லை", + "testFailed": "சோதனை தோல்வியடைந்தது", + "compatibleBaseUrlHint": "இணக்கமான அடிப்படை URL குறிப்பு", + "usageTracking": "பயன்பாட்டுக் கண்காணிப்பு", + "disableCloudTitle": "கிளவுடை முடக்கு தலைப்பு", + "noConnections": "இணைப்புகள் இல்லை", + "providerHealth": "வழங்குநர் நிலை", + "confirmDbImport": "DB இறக்குமதியை உறுதிப்படுத்து", + "notAvailableSymbol": "கிடைக்கவில்லை என்பதற்கான குறியீடு", + "backupsAvailable": "காப்புப்பிரதிகள் உள்ளன", + "providerAuto": "தானியங்கு வழங்குநர்", + "newProviderNamePlaceholder": "புதிய வழங்குநர் பெயருக்கான இடநிரப்பி", + "a2aQuickStartStep2": "A2A விரைவுத் தொடக்கம் படி 2", + "ok": "சரி", + "available": "கிடைக்கிறது", + "noBackupYet": "இன்னும் காப்புப்பிரதி இல்லை", + "more": "மேலும்", + "noCompatibleYet": "இன்னும் இணக்கமானவை இல்லை", + "multiProvider": "பல வழங்குநர்கள்", + "repairEnvHint": "சூழலைச் சீரமைப்பதற்கான குறிப்பு", + "disablingCloud": "கிளவுட் முடக்கப்படுகிறது", + "testBench": "சோதனைக் களம்", + "valid": "செல்லுபடியாகும்", + "cloudBenefitShare": "கிளவுட் நன்மைப் பகிர்வு", + "mcpCardTitle": "MCP அட்டைத் தலைப்பு", + "disableConfirm": "முடக்குவதை உறுதிப்படுத்து", + "filters": "வடிப்பான்கள்", + "expirationBannerExpiredDesc": "காலாவதிப் பதாகையின் காலாவதியான விளக்கம்", + "saveComboDefaults": "சேர்க்கை இயல்புநிலைகளைச் சேமி", + "cloudConnectedVerified": "கிளவுட் இணைப்பு சரிபார்க்கப்பட்டது", + "uptime": "செயல்பாட்டு நேரம்", + "compatibleProdPlaceholder": "இணக்கமான தயாரிப்புக்கான இடநிரப்பி", + "fallbackChainsTitle": "மாற்றுச் சங்கிலிகள் தலைப்பு", + "oauthLabel": "OAuth குறிச்சொல்", + "a2aCardDescription": "A2A அட்டை விளக்கம்", + "okShort": "சரி", + "maintenance": "பராமரிப்பு", + "formatConverter": "வடிவமைப்பு மாற்றி", + "zedImportNetworkError": "Zed இறக்குமதி பிணையப் பிழை", + "apiKeyLabel": "API விசைக் குறிச்சொல்", + "noModelsForProvider": "வழங்குநருக்கான மாதிரிகள் இல்லை", + "mcpCardDescription": "MCP அட்டை விளக்கம்", + "apiTypeLabel": "API வகைக் குறிச்சொல்", + "configuredProvidersLabel": "உள்ளமைக்கப்பட்ட வழங்குநர்கள் குறிச்சொல்", + "maxRetriesLabel": "அதிகபட்ச மறுமுயற்சிகள் குறிச்சொல்", + "title": "தலைப்பு", + "output": "வெளியீடு", + "prefixHint": "முன்னொட்டுக் குறிப்பு", + "skipWizard": "வழிகாட்டியைத் தவிர்", + "failedCount": "தோல்வியடைந்தவற்றின் எண்ணிக்கை", + "confirmDbImportDesc": "Db இறக்குமதி உறுதிப்படுத்தல் விளக்கம்", + "entries": "உள்ளீடுகள்", + "until": "வரை", + "disableCombo": "சேர்க்கையை முடக்கு", + "liveMonitorDescriptionPrefix": "நேரடி கண்காணிப்பு விளக்க முன்னொட்டு", + "runningCount": "இயங்குபவற்றின் எண்ணிக்கை", + "noActiveConnectionsInGroup": "குழுவில் செயலில் உள்ள இணைப்புகள் எதுவும் இல்லை", + "savedSuccessfully": "வெற்றிகரமாகச் சேமிக்கப்பட்டது", + "systemStorage": "கணினிச் சேமிப்பகம்", + "videoDesc": "வீடியோ விளக்கம்", + "maxResults": "அதிகபட்ச முடிவுகள்", + "timeRangeMonth": "கால வரம்பு: மாதம்", + "testSummary": "சோதனைச் சுருக்கம்", + "failedSetPassword": "கடவுச்சொல்லை அமைக்க முடியவில்லை", + "audio": "ஆடியோ", + "restore": "மீட்டமை", + "disableWarning": "எச்சரிக்கையை முடக்கு", + "moderationsDesc": "உள்ளடக்கக் கட்டுப்பாடுகளின் விளக்கம்", + "providerHealthStatusAria": "வழங்குநரின் செயல்நிலை ARIA", + "modelNamePlaceholder": "மாதிரிப் பெயருக்கான இடநிரப்பி", + "mcpQuickStartStep2": "Mcp விரைவுத் தொடக்கம்: படி 2", + "quickStart": "விரைவுத் தொடக்கம்", + "fullExportFailedWithError": "முழு ஏற்றுமதி பிழையுடன் தோல்வியடைந்தது", + "loadingBackups": "காப்புப்பிரதிகள் ஏற்றப்படுகின்றன", + "anthropicBaseUrlPlaceholder": "Anthropic அடிப்படை URL இடநிரப்பி", + "description": "விளக்கம்", + "noProviderFound": "வழங்குநர் எவரும் கண்டறியப்படவில்லை", + "auto": "தானியங்கி", + "protocolsDescription": "நெறிமுறைகளின் விளக்கம்", + "cloudSessionNote": "கிளவுட் அமர்வுக் குறிப்பு", + "advancedSettings": "மேம்பட்ட அமைப்புகள்", + "defaultStrategy": "இயல்புநிலை உத்தி", + "purgeExpiredLogs": "காலாவதியான பதிவுகளை அகற்று", + "justNow": "இப்போதுதான்", + "providerTestFailed": "வழங்குநர் சோதனை தோல்வியடைந்தது", + "openaiBaseUrlPlaceholder": "Openai அடிப்படை URL இடநிரப்பி", + "image": "படம்", + "failedCreateChain": "சங்கிலியை உருவாக்க முடியவில்லை", + "importDatabase": "தரவுத்தளத்தை இறக்குமதி செய்", + "allDataLocal": "அனைத்துத் தரவும் உள்ளகமானது", + "sectionTitle": "பிரிவு தலைப்பு", + "failedToggle": "நிலைமாற்றம் தோல்வியடைந்தது", + "editCombo": "காம்போவைத் திருத்து", + "testResults": "சோதனை முடிவுகள்", + "searchQuery": "தேடல் வினவல்", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "நகலெடு", + "createCombo": "காம்போவை உருவாக்கு", + "searchTypeWeb": "தேடல் வகை: இணையம்", + "addChain": "சங்கிலியைச் சேர்", + "prefixLabel": "முன்னொட்டு லேபிள்", + "listModelsDesc": "மாதிரிகள் பட்டியலின் விளக்கம்", + "databaseSize": "தரவுத்தள அளவு", + "chainCreated": "சங்கிலி உருவாக்கப்பட்டது", + "providerTestTimeout": "வழங்குநர் சோதனைக்கான நேரம் முடிந்தது", + "routingStrategy": "வழித்தட உத்தி", + "translateAction": "மொழிபெயர்ப்பு நடவடிக்கை", + "exportFailed": "ஏற்றுமதி தோல்வியடைந்தது", + "connectedVerificationPending": "இணைக்கப்பட்டது, சரிபார்ப்பு நிலுவையில் உள்ளது", + "a2aQuickStartTitle": "A2A விரைவுத் தொடக்கத் தலைப்பு", + "couldNotTest": "சோதிக்க முடியவில்லை", + "testAllCompatible": "இணக்கமான அனைத்தையும் சோதிக்கவும்", + "anthropicCompatibleName": "Anthropic-இணக்கமான பெயர்", + "disabling": "முடக்கப்படுகிறது", + "failedEnable": "இயக்க முடியவில்லை", + "categoryUtility": "பயன்பாட்டு வகை", + "customUrlOptional": "தனிப்பயன் URL (விருப்பத்திற்குரியது)", + "localProviders": "உள்ளக வழங்குநர்கள்", + "comboNamePlaceholder": "காம்போ பெயர் இடநிரப்பி", + "memoryRss": "நினைவக RSS", + "disableProvider": "வழங்குநரை முடக்கு", + "welcomeDesc": "வரவேற்பு விளக்கம்", + "nameLabel": "பெயர் லேபிள்", + "allOperational": "அனைத்தும் செயல்பாட்டில் உள்ளன", + "backupNow": "இப்போது காப்புப் பிரதி எடு", + "providerMaxRetriesAria": "வழங்குநரின் அதிகபட்ச மறுமுயற்சிகள் ARIA", + "textToSpeechDesc": "உரையிலிருந்து பேச்சுக்கான விளக்கம்", + "machineId": "இயந்திர ஐடி", + "globalProxy": "உலகளாவிய ப்ராக்ஸி", + "hitsMisses": "வெற்றிகள் மற்றும் தவறல்கள்", + "testDesc": "சோதனை விளக்கம்", + "chatDesc": "அரட்டை விளக்கம்", + "importSuccess": "இறக்குமதி வெற்றியடைந்தது", + "chat": "அரட்டை", + "a2aQuickStartStep1": "A2A விரைவுத் தொடக்கம் படி 1", + "importFailed": "இறக்குமதி தோல்வியடைந்தது", + "inputPlaceholder": "உள்ளீட்டுக்கான இடநிரப்பி", + "providerModelsTitle": "வழங்குநர் மாதிரிகள் தலைப்பு", + "lastBackup": "கடைசி காப்புப்பிரதி", + "yourEndpoint": "உங்கள் முடிவுப்புள்ளி", + "autoDisableThresholdDesc": "தானாக முடக்கும் வரம்பின் விளக்கம்", + "rerankDesc": "மறுதரவரிசைப்படுத்தல் விளக்கம்", + "modelsPathPlaceholder": "மாதிரிகள் பாதைக்கான இடநிரப்பி", + "noCombosYet": "இதுவரை சேர்க்கைகள் இல்லை", + "connectedVerificationPendingWithError": "இணைக்கப்பட்டது, பிழையுடன் சரிபார்ப்பு நிலுவையில் உள்ளது", + "comboDefaultsGuideHint1": "சேர்க்கை இயல்புநிலைகள் வழிகாட்டிக் குறிப்பு 1", + "enableCloudTitle": "கிளவுடை இயக்கு தலைப்பு", + "configuredProvidersHint": "உள்ளமைக்கப்பட்ட வழங்குநர்கள் குறிப்பு", + "paused": "இடைநிறுத்தப்பட்டது", + "llmProviders": "LLM வழங்குநர்கள்", + "enableCombo": "சேர்க்கையை இயக்கு", + "removeProviderOverrideAria": "வழங்குநர் மேலெழுதலை அகற்று ARIA", + "nodeVersion": "Node பதிப்பு", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "பிழையுடன் ஏற்றுமதி தோல்வியடைந்தது", + "proxyConfigured": "ப்ராக்ஸி உள்ளமைக்கப்பட்டது", + "concurrencyPerModel": "ஒவ்வொரு மாதிரிக்கும் ஒரேநேரச் செயல்பாடுகள்", + "protocolTasksLabel": "நெறிமுறைப் பணிகள் லேபிள்", + "oauthProviders": "OAuth வழங்குநர்கள்", + "lockedCount": "பூட்டப்பட்டவற்றின் எண்ணிக்கை", + "deleteChainConfirm": "சங்கிலியை நீக்குவதை உறுதிப்படுத்து", + "recentTranslations": "சமீபத்திய மொழிபெயர்ப்புகள்", + "zedImportButton": "Zed இறக்குமதி பொத்தான்", + "responsesDesc": "பதில்கள் விளக்கம்", + "testedCount": "சோதிக்கப்பட்டவற்றின் எண்ணிக்கை", + "providersCommaSeparatedPlaceholder": "காற்புள்ளியால் பிரிக்கப்பட்ட வழங்குநர்களுக்கான இடநிரப்பி", + "signatureDefaults": "கையொப்ப இயல்புநிலைகள்", + "errorCreating": "உருவாக்குவதில் பிழை", + "timeRangeYear": "கால வரம்பு: ஆண்டு", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", - "testBenchTab": "Test Bench", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "cloudDisabledSuccess": "கிளவுட் வெற்றிகரமாக முடக்கப்பட்டது", + "deleteConfirm": "நீக்குதலை உறுதிப்படுத்தவும்", + "check": "சரிபார்க்கவும்", + "safeSearch": "பாதுகாப்பான தேடல்", + "protocolLastActivity": "நெறிமுறையின் கடைசிச் செயல்பாடு", + "openMcpDashboard": "Mcp டாஷ்போர்டைத் திறக்கவும்", + "testBenchTab": "சோதனைத் தளம்", + "chatPathLabel": "அரட்டைப் பாதைக்கான லேபிள்", + "retryDelay": "மறுமுயற்சித் தாமதம்", + "errorUpdating": "புதுப்பிப்பதில் பிழை", + "ideCliIntegrations": "IDE CLI ஒருங்கிணைப்புகள்", + "imageGeneration": "பட உருவாக்கம்", + "apiKeyRequired": "API விசை தேவை", + "resetAllTitle": "அனைத்தையும் மீட்டமைத்தல்", + "connectionError": "இணைப்புப் பிழை", + "modelName": "மாதிரியின் பெயர்", + "apiKeyForCheck": "சரிபார்ப்புக்கான API விசை", + "cloudRequestTimeout": "கிளவுட் கோரிக்கைக்கான நேரக்கெடு முடிந்தது", + "showConfiguredOnly": "உள்ளமைக்கப்பட்டவற்றை மட்டும் காட்டு", "showFreeOnly": "இலவசம் மட்டுமே", "addFirstProvider": "உங்கள் முதல் வழங்குநரைச் சேர்க்கவும்", "addFirstProviderDesc": "OmniRoute மூலம் ரூட்டிங் கோரிக்கைகளைத் தொடங்க AI வழங்குநரை இணைக்கவும். நீங்கள் இலவச வழங்குநர்கள், API விசைகள் அல்லது OAuth கணக்குகளைப் பயன்படுத்தலாம்.", "learnMore": "மேலும் அறிக", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "டொமைன்களைச் சேர்க்கவும்", + "promptCache": "ப்ராம்ப்ட் தற்காலிகச் சேமிப்பு", + "cloudConnected": "கிளவுட் இணைக்கப்பட்டது", + "deleteChain": "சங்கிலியை நீக்கவும்", + "chatPathPlaceholder": "அரட்டைப் பாதைக்கான இடநிரப்பி", + "databasePath": "தரவுத்தளப் பாதை", + "usingLocalServer": "உள்ளூர் சேவையகத்தைப் பயன்படுத்துகிறது", + "globalComboConfig": "உலகளாவிய சேர்க்கை உள்ளமைவு", + "backupFailed": "காப்புப்பிரதி தோல்வியடைந்தது", + "tabProtocols": "நெறிமுறைகள் தாவல்", + "continue": "தொடரவும்", + "categorySearch": "வகைத் தேடல்", + "rateLimitStatus": "விகித வரம்பு நிலை", + "repairEnvSuccess": "சூழல் வெற்றிகரமாகச் சரிசெய்யப்பட்டது", + "nameRequired": "பெயர் தேவை", + "country": "நாடு", + "trackMetricsDesc": "அளவீடுகளைக் கண்காணிப்பதற்கான விளக்கம்", + "durationSecondsShort": "கால அளவு (விநாடிகள்) — சுருக்கம்", + "formatConverterDescription": "வடிவமைப்பு மாற்றியின் விளக்கம்", + "cloudBenefitAccess": "கிளவுட் நன்மைக்கான அணுகல்", + "maxRetries": "அதிகபட்ச மறுமுயற்சிகள்", + "queueTimeout": "வரிசைக் காத்திருப்பு நேரம்", "queueDepth": "வரிசை ஆழம்", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "வழங்குநரைச் சேர்", + "realtime": "நிகழ்நேரம்", + "totalTranslations": "மொத்த மொழிபெயர்ப்புகள்", + "protocolActiveStreamsLabel": "நெறிமுறை செயலில் உள்ள ஸ்ட்ரீம்களின் லேபிள்", + "repairEnv": "சூழல் மாறிகளைச் சீரமை", + "modelsCount": "மாடல்களின் எண்ணிக்கை", + "viewBackups": "காப்புப்பிரதிகளைக் காண்க", + "responsesApi": "Responses API", + "copyComboName": "காம்போ பெயரை நகலெடு", + "failures": "தோல்விகள்", + "failedUpdate": "புதுப்பிப்பு தோல்வியடைந்தது", + "imageDesc": "படத்தின் விளக்கம்", + "failedCreate": "உருவாக்கம் தோல்வியடைந்தது", + "remainingOfLimit": "வரம்பில் மீதமுள்ளது", + "protocolsTitle": "நெறிமுறைகளின் தலைப்பு", + "expirationBannerExpiringSoonDesc": "காலாவதி அறிவிப்புப் பட்டை — விரைவில் காலாவதியாகும் விளக்கம்", + "source": "மூலம்", + "failed": "தோல்வியடைந்தது", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "Mcp விரைவுத் தொடக்கம் — படி 1", + "runTest": "சோதனையை இயக்கு", + "loadingFallbackChains": "மாற்றுக் காப்புச் சங்கிலிகள் ஏற்றப்படுகின்றன", + "healthy": "ஆரோக்கியமானது", + "version": "பதிப்பு", + "saveBlockWeighted": "எடையிடப்பட்ட தொகுதியைச் சேமி", + "zedImportNone": "Zed இறக்குமதி — எதுவுமில்லை", + "noBackupsYet": "இதுவரை காப்புப்பிரதிகள் இல்லை", + "noGlobalProxy": "உலகளாவிய ப்ராக்ஸி இல்லை", + "noModels": "மாடல்கள் இல்லை", + "stickyLimit": "நிலையான வரம்பு", + "passedCount": "தேர்ச்சி பெற்றவற்றின் எண்ணிக்கை", + "zedImportFailed": "Zed இறக்குமதி தோல்வியடைந்தது", + "saving": "சேமிக்கப்படுகிறது", + "testAll": "அனைத்தையும் சோதி", + "globalProxyDesc": "உலகளாவிய ப்ராக்ஸியின் விளக்கம்", + "latencyP99": "தாமதம் P99", + "connectingToCloud": "கிளவுடுடன் இணைக்கிறது", + "responses": "பதில்கள்", + "errorDeleting": "நீக்குவதில் பிழை", + "openaiPrefixPlaceholder": "Openai முன்னொட்டு இடநிரப்பு", + "enterPassword": "கடவுச்சொல்லை உள்ளிடவும்", + "openA2aDashboard": "A2A டாஷ்போர்டைத் திறக்கவும்", + "enableProvider": "வழங்குநரை இயக்கவும்", + "modeTest": "சோதனைப் பயன்முறை", + "failedDeleteChain": "சங்கிலியை நீக்க முடியவில்லை", + "providerDesc": "வழங்குநர் விளக்கம்", + "templateLoadHint": "வார்ப்புரு ஏற்றுதல் குறிப்பு", + "lastFailure": "கடைசித் தோல்வி", + "moveDown": "கீழே நகர்த்தவும்", + "providerLabel": "வழங்குநர் அடையாளச்சொல்", + "clearCacheFailed": "தற்காலிகச் சேமிப்பை அழிக்க முடியவில்லை", + "imagesGenerations": "பட உருவாக்கங்கள்", + "repairEnvWorking": "சூழல் பழுதுபார்ப்பு செயல்படுகிறது", + "millisecondsShort": "மில்லிவினாடிகள் — சுருக்கம்", + "globalLabel": "உலகளாவிய அடையாளச்சொல்", + "failuresPlural": "தோல்விகள்", + "completionsLegacyDesc": "மரபுவழி நிறைவுகளின் விளக்கம்", + "searchProviders": "வழங்குநர்களைத் தேடவும்", + "chatPathHint": "அரட்டைப் பாதைக் குறிப்பு", + "defaultStrategyDesc": "இயல்புநிலை உத்தி விளக்கம்", + "latencyP95": "தாமதநிலை P95", + "textToSpeech": "உரையிலிருந்து பேச்சு", + "searchType": "தேடல் வகை", + "messages": "செய்திகள்", + "aggregatorsGateways": "திரட்டிகள் மற்றும் நுழைவாயில்கள்", + "comboStrategyAria": "கூட்டு உத்தி Aria", + "input": "உள்ளீடு", + "testingConnection": "இணைப்பைச் சோதிக்கிறது", + "excludeDomains": "டொமைன்களை விலக்கவும்", + "webCookieProviders": "இணைய குக்கீ வழங்குநர்கள்", + "allTestsPassed": "அனைத்துச் சோதனைகளும் வெற்றிபெற்றன", + "openaiCompatibleName": "Openai-இணக்கமான பெயர்", + "warningCostOptimizedPartialPricing": "எச்சரிக்கை: செலவுக்கு உகந்ததாக்கப்பட்டது, பகுதியளவு விலை நிர்ணயம்", + "comboDefaultsGuideTitle": "கூட்டு இயல்புநிலைகள் வழிகாட்டித் தலைப்பு", + "hoursAgo": "மணிநேரங்களுக்கு முன்பு", + "notAvailable": "கிடைக்கவில்லை", + "skipAndContinue": "தவிர்த்து தொடரவும்", + "moderations": "உள்ளடக்கக் கட்டுப்பாடுகள்", + "proxyConfig": "ப்ராக்ஸி உள்ளமைவு", + "upstreamProxyProviders": "அப்ஸ்ட்ரீம் ப்ராக்ஸி வழங்குநர்கள்", + "exportAll": "அனைத்தையும் ஏற்றுமதி செய்", + "queuedCount": "வரிசையில் உள்ள எண்ணிக்கை", + "resetAll": "அனைத்தையும் மீட்டமை", + "noTranslations": "மொழிபெயர்ப்புகள் இல்லை", + "avgLatency": "சராசரி தாமதம்", + "throttleStatus": "விகிதக் கட்டுப்பாட்டு நிலை", + "backupRetentionDesc": "காப்புப்பிரதி தக்கவைப்பு விளக்கம்", + "noCBData": "Cb தரவு இல்லை", + "chainDeleted": "சங்கிலி நீக்கப்பட்டது", + "timeLeft": "மீதமுள்ள நேரம்", + "expirationBannerExpired": "காலாவதி அறிவிப்புப் பட்டை காலாவதியானது", + "language": "மொழி", + "invalidFileType": "தவறான கோப்பு வகை", + "monitoredProviders": "கண்காணிக்கப்படும் வழங்குநர்கள்", + "errors": "பிழைகள்", + "heap": "ஹீப்", + "chatCompletions": "அரட்டை நிறைவுகள்", + "exampleTemplatesHint": "எடுத்துக்காட்டு வார்ப்புருக்கள் குறிப்பு", + "retryDelayLabel": "மறுமுயற்சித் தாமதத்திற்கான லேபிள்", + "audioTranscription": "ஒலி உரைமாற்றம்", + "fallbackChainsDesc": "மாற்றுச் சங்கிலிகள் விளக்கம்", + "exampleTemplates": "எடுத்துக்காட்டு வார்ப்புருக்கள்", + "connectionsCount": "இணைப்புகளின் எண்ணிக்கை", + "modelsPathLabel": "மாதிரிகள் பாதைக்கான லேபிள்", + "activeProvidersHint": "செயலில் உள்ள வழங்குநர்கள் குறிப்பு", + "activeLockouts": "செயலில் உள்ள பூட்டுதல்கள்", + "invalid": "செல்லாதது", + "skipPassword": "கடவுச்சொல்லைத் தவிர்", + "moveUp": "மேலே நகர்த்து", + "timeRange": "நேர வரம்பு", + "stickyLimitDesc": "நிலையான வரம்பு விளக்கம்", + "cloudBenefitEdge": "கிளவுட் எட்ஜ் நன்மை", + "custom": "தனிப்பயன்", + "verifying": "சரிபார்க்கப்படுகிறது", + "baseUrlLabel": "அடிப்படை URL-க்கான லேபிள்", + "setPassword": "கடவுச்சொல்லை அமை", + "safeSearchStrict": "கடுமையான பாதுகாப்பான தேடல்", + "noChangesSinceBackup": "காப்புப்பிரதிக்குப் பிறகு மாற்றங்கள் இல்லை", + "modelsPathHint": "மாதிரிகள் பாதைக்கான குறிப்பு", + "audioTranscriptions": "ஒலி உரைமாற்றங்கள்", + "testCombo": "சேர்க்கையைச் சோதிக்கவும்", + "mcpQuickStartTitle": "MCP விரைவுத் தொடக்கத் தலைப்பு", + "comboUpdated": "சேர்க்கை புதுப்பிக்கப்பட்டது", + "weighted": "எடையிடப்பட்டது", + "providers": "வழங்குநர்கள்", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", - "chatTesterTab": "Chat Tester", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "noFallbackChainsDesc": "மாற்று வழிச் சங்கிலிகள் எதுவும் இல்லை என்பதற்கான விளக்கம்", + "yesImport": "ஆம், இறக்குமதி செய்", + "lockoutsAutoRefreshHint": "பூட்டுதல்களைத் தானாகப் புதுப்பிப்பதற்கான குறிப்பு", + "tabApis": "API-கள் தாவல்", + "sectionDescription": "பிரிவு விளக்கம்", + "filter": "வடிகட்டி", + "purgeLogsFailed": "பதிவுகளை முற்றிலும் நீக்க முடியவில்லை", + "latency": "தாமதம்", + "testAllOAuth": "அனைத்து OAuth இணைப்புகளையும் சோதிக்கவும்", + "mcpQuickStartStep3": "MCP விரைவுத் தொடக்கம் படி 3", + "repairEnvFailed": "சூழலைச் சரிசெய்ய முடியவில்லை", + "zedImportHint": "Zed இறக்குமதிக் குறிப்பு", + "modelsAcrossEndpoints": "முனைப்புள்ளிகள் முழுவதிலும் உள்ள மாதிரிகள்", + "autoDisableBannedAccounts": "தடைசெய்யப்பட்ட கணக்குகளைத் தானாக முடக்கு", + "securityDesc": "பாதுகாப்பு விளக்கம்", + "listModels": "மாதிரிகளைப் பட்டியலிடு", + "backupRestore": "காப்புப்பிரதி மற்றும் மீட்டமைப்பு", + "target": "இலக்கு", + "zedImportSuccess": "Zed இறக்குமதி வெற்றியடைந்தது", + "lastHeaderUpdate": "கடைசி தலைப்பு புதுப்பிப்பு", + "categoryCore": "முதன்மை வகை", + "noFallbackChains": "மாற்று வழிச் சங்கிலிகள் எதுவும் இல்லை", + "noSearchProviders": "தேடல் வழங்குநர்கள் எதுவும் இல்லை", + "autoBalance": "தானியங்கு சமநிலைப்படுத்தல்", + "noModelsYet": "இன்னும் மாதிரிகள் இல்லை", + "signatureFamily": "கையொப்பக் குடும்பம்", + "externalApiCalls": "வெளிப்புற API அழைப்புகள்", + "providerOverridesDesc": "வழங்குநர் மேலெழுதல்களின் விளக்கம்", + "signatureTool": "கையொப்பக் கருவி", + "connectionFailed": "இணைப்பு தோல்வியடைந்தது", + "activeLimitersPlural": "செயலில் உள்ள வரம்புக் கட்டுப்படுத்திகள்", + "doneDesc": "முடிந்தது விளக்கம்", + "down": "கீழே", + "noDataYet": "இதுவரை தரவு இல்லை", + "activeProviders": "செயலில் உள்ள வழங்குநர்கள்", + "nameInvalid": "பெயர் தவறானது", + "skip": "தவிர்", + "createChain": "சங்கிலியை உருவாக்கு", + "audioSpeech": "ஒலிப் பேச்சு", + "cacheCleared": "தற்காலிகச் சேமிப்பு அழிக்கப்பட்டது", + "searchTypeNews": "தேடல் வகை: செய்திகள்", + "durationMillisecondsShort": "கால அளவு (மி.வி.)", + "addOpenAICompatible": "Open Ai இணக்கமானதைச் சேர்", + "chatTesterTab": "அரட்டைச் சோதனையாளர்", + "queued": "வரிசையில் உள்ளது", + "domainPlaceholder": "டொமைன் இடநிரப்பி", + "durationMinutesShort": "கால அளவு (நிமி.)", + "verifyingConnection": "இணைப்பு சரிபார்க்கப்படுகிறது", + "imageProviders": "பட வழங்குநர்கள்", + "protocolToolsLabel": "நெறிமுறைக் கருவிகள் லேபிள்", + "queryPlaceholder": "வினவல் இடநிரப்பி", + "videoGeneration": "காணொளி உருவாக்கம்", + "timeRangeWeek": "கால வரம்பு: ஒரு வாரம்", + "limitExhausted": "வரம்பு தீர்ந்துவிட்டது", + "failedDisable": "முடக்குவது தோல்வியடைந்தது", + "inMemoryNote": "நினைவகக் குறிப்பு", + "compatibleHint": "இணக்கத்தன்மைக் குறிப்பு", + "errorShort": "பிழை", + "advancedHint": "மேம்பட்ட அமைப்புகளுக்கான குறிப்பு", + "restoreFailed": "மீட்டமைத்தல் தோல்வியடைந்தது", + "searchProvidersHeading": "தேடல் வழங்குநர்கள்", + "comboName": "காம்போ பெயர்", + "autoDisableDescription": "தானாக முடக்குவதற்கான விளக்கம்", + "embeddingsDesc": "உட்பொதிவுகள் விளக்கம்", + "operational": "செயல்பாட்டில் உள்ளது", + "testAllApiKey": "அனைத்து API விசைகளையும் சோதி", + "backupCreated": "காப்புப்பிரதி உருவாக்கப்பட்டது", + "errorDuringImport": "இறக்குமதியின்போது பிழை", + "comboDefaultsGuideHint2": "காம்போ இயல்புநிலை வழிகாட்டிக் குறிப்பு 2", + "connecting": "இணைக்கப்படுகிறது", + "fillModelAndProviders": "மாதிரியையும் வழங்குநர்களையும் நிரப்பவும்", + "syncing": "ஒத்திசைக்கிறது", + "resetConfirm": "மீட்டமைப்பை உறுதிப்படுத்துக", + "trackMetrics": "அளவீடுகளைக் கண்காணிக்கவும்", + "successful": "வெற்றிகரமானது", + "recovering": "மீட்டெடுக்கிறது", + "autoDisableThreshold": "தானியங்கு முடக்க வரம்பு", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "தரவை ஒத்திசைக்கிறது", + "cloudBenefitPorts": "Cloud நன்மை போர்ட்கள்", + "compatibleProviders": "இணக்கமான வழங்குநர்கள்", "freeTierProviders": "இலவச அடுக்கு வழங்குநர்கள்", "freeTierLabel": "இலவச அடுக்கு கிடைக்கிறது", "freeTierProvidersDesc": "இலவச அடுக்குகளைக் கொண்ட வழங்குநர்கள் - சிலருக்கு API விசைப் பதிவு தேவை, மற்றவர்களுக்கு நற்சான்றிதழ்கள் எதுவும் தேவையில்லை.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "தற்காலிக சேமிப்பை அழிக்கவும்", + "reqs": "கோரிக்கைகள்", + "addAnthropicCompatible": "Anthropic-இணக்கமான வழங்குநரைச் சேர்க்கவும்", + "apiKeyProviders": "API விசை வழங்குநர்கள்", + "tabsAria": "தாவல்கள் ARIA", + "resetting": "மீட்டமைக்கிறது", + "millisecondsAbbr": "மி.வி.", + "backupReasonPreRestore": "மீட்டெடுப்பதற்கு முந்தைய காப்புப்பிரதி காரணம்", + "disableCloud": "Cloud-ஐ முடக்கவும்", + "newProviderNameAria": "புதிய வழங்குநர் பெயர் ARIA", + "passwordsMismatch": "கடவுச்சொற்கள் பொருந்தவில்லை", + "a2aQuickStartStep3": "A2A விரைவுத் தொடக்கம் படி 3", + "liveMonitorDescriptionSuffix": "நேரடிக் கண்காணிப்பு விளக்கப் பின்னொட்டு", + "failedAddProvider": "வழங்குநரைச் சேர்க்க முடியவில்லை", + "addAtLeastOneProvider": "குறைந்தது ஒரு வழங்குநரையாவது சேர்க்கவும்", + "reasonSeparator": "காரணப் பிரிப்பான்", + "zedImporting": "Zed இறக்குமதி செய்கிறது", + "confirmPasswordPlaceholder": "கடவுச்சொல்லை உறுதிப்படுத்தவும்", + "whatYouGet": "உங்களுக்குக் கிடைப்பவை", + "signatureSession": "கையொப்ப அமர்வு", + "errorCountNoCode": "குறியீடு இல்லாத பிழை எண்ணிக்கை", + "testing": "சோதிக்கிறது", + "providersCommaSeparated": "காற்புள்ளியால் பிரிக்கப்பட்ட வழங்குநர்கள்", + "exportDatabase": "தரவுத்தளத்தை ஏற்றுமதி செய்யவும்", + "hitRate": "வெற்றி விகிதம்", + "completionsLegacy": "நிறைவுகள் (பழைய முறை)", + "removeModel": "மாதிரியை அகற்றவும்", + "timeRangeDay": "கால வரம்பு: நாள்", + "cloudRequestFailed": "Cloud கோரிக்கை தோல்வியடைந்தது", + "updatedAt": "புதுப்பிக்கப்பட்ட நேரம்", + "monitoredProvidersHint": "கண்காணிக்கப்படும் வழங்குநர்கள் குறிப்பு", + "connectionSuccessful": "இணைப்பு வெற்றிகரமாக அமைந்தது", + "latencyP50": "தாமதம் P50", + "logsDeleted": "பதிவுகள் நீக்கப்பட்டன", + "chatTester": "அரட்டைச் சோதனையாளர்", + "safeSearchOff": "பாதுகாப்பான தேடல் முடக்கப்பட்டுள்ளது", + "nameHint": "பெயர் குறிப்பு", + "debugToggle": "பிழைத்திருத்த நிலைமாற்றி", + "embedding": "உட்பொதித்தல்", + "issuesLabel": "சிக்கல்கள் குறிச்சொல்", + "optionAny": "எதுவும்", + "maxNestingDepth": "அதிகபட்ச உள்ளமைவு ஆழம்", + "rerank": "மறுதரவரிசைப்படுத்தல்", + "checking": "சரிபார்க்கப்படுகிறது", + "getStarted": "தொடங்குங்கள்", + "restoreSuccess": "மீட்டமைப்பு வெற்றிகரமாக முடிந்தது", + "issuesDetected": "சிக்கல்கள் கண்டறியப்பட்டன", + "signatureCache": "கையொப்பத் தற்காலிகச் சேமிப்பு", + "modelLockouts": "மாதிரிப் பூட்டல்கள்", + "usingCloudProxy": "Cloud Proxy பயன்படுத்தப்படுகிறது", + "loadingHealth": "நிலை ஏற்றப்படுகிறது", + "providerOverrides": "வழங்குநர் மேலெழுதல்கள்", + "audioTranscriptionDesc": "ஒலி உரைமாற்ற விளக்கம்", + "learnedFromHeaders": "தலைப்புகளிலிருந்து கற்றவை", + "totalRequests": "மொத்தக் கோரிக்கைகள்", + "cloudUnstableNote": "Cloud நிலையற்ற தன்மை குறிப்பு", "gamificationAdmin": "கேமிஃபிகேஷன் நிர்வாகி", "monitorAnomaliesAndHealth": "முரண்பாடுகள் மற்றும் அமைப்பின் ஆரோக்கியத்தை கண்காணிக்கவும்", "flaggedAnomalies": "கொடியிடப்பட்ட முரண்பாடுகள்", "noAnomaliesDetected": "முரண்பாடுகள் எதுவும் கண்டறியப்படவில்லை", "apiKey": "API விசை", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 மணிநேரம்)", "zScore": "Z-ஸ்கோர்", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "சந்தேகத்திற்குரியது", "tokensCommunityServers": "சமூக சேவையகங்கள்", "tokensServerNamePlaceholder": "சர்வர் பெயர்", "tokensApiKeyPlaceholder": "API விசை", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "மேலும் ஏற்றுகிறது…", "recommended": "பரிந்துரைக்கப்படுகிறது", "understand": "எனக்குப் புரிகிறது", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "தொகுதிச் செயலாக்கம்", + "batchConceptSubtitle": "ஆயிரக்கணக்கான கோரிக்கைகளை ~50% செலவில் ஒத்திசைவின்றிச் செயலாக்குங்கள் (24 மணிநேரக் காலவரம்பு). மதிப்பீடுகள், வகைப்பாடு மற்றும் உட்பொதித்தல்களுக்கு ஏற்றது.", + "batchConceptHowItWorks": "இது எவ்வாறு செயல்படுகிறது", + "batchConceptBenefit50pct": "உள்ளீடு + வெளியீட்டு டோக்கன்களுக்கு 50% தள்ளுபடி", + "batchConceptAsync24h": "24 மணிநேர நிறைவு காலவரம்புடன் ஒத்திசைவற்ற செயலாக்கம்", + "batchConceptUseCases": "மொத்த வகைப்பாடு, மதிப்பீடுகள் மற்றும் உட்பொதித்தல்களுக்கு மிகவும் ஏற்றது", + "batchHeaderSubtitle": "பல கோரிக்கைகளை ஒரே பணியாக இயக்குங்கள்", + "batchStep1": "1 · JSONL-ஐப் பதிவேற்றுங்கள்", + "batchStep1Desc": "கோரிக்கைகளைச் சேர்க்கவும்", + "batchStep2": "2 · தொகுதியை உருவாக்குங்கள்", + "batchStep2Desc": "பணியை இயக்குங்கள்", + "batchStep3": "3 · முடிவுகளைப் பெறுங்கள்", + "batchStep3Desc": "வெளியீட்டைப் பதிவிறக்கு", + "filesConceptTitle": "தொகுதி கோப்புகள்", + "filesConceptSubtitle": "தொகுதிகளால் பயன்படுத்தப்படும் JSONL கோப்புகள்: உள்ளீட்டுக் கோரிக்கைகள், முடிவுகள் மற்றும் பிழைகள்.", + "filesConceptInput": "உள்ளீடு — ஒரு வரிக்கு ஒரு கோரிக்கையைக் கொண்ட உங்கள் JSONL", + "filesConceptOutput": "வெளியீடு — நிறைவடைந்த கோரிக்கைகளின் முடிவுகள்", + "filesConceptError": "பிழைகள் — தோல்வியடைந்த கோரிக்கைகள்", + "filesConceptRetention": "தக்கவைப்புக் காலம்: இயல்பாக 30 நாட்கள் (Anthropic-இல் 29 நாட்கள்)", + "wizardTitle": "புதிய தொகுதி", + "wizardClose": "மூடு", + "wizardNext": "அடுத்து", + "wizardBack": "பின்செல்", + "wizardCancel": "ரத்துசெய்", + "wizardCreate": "தொகுதியை உருவாக்கு", + "wizardCreating": "உருவாக்கப்படுகிறது…", + "wizardStep1Destination": "சேருமிடம்", + "wizardStep2Input": "உள்ளீடு", + "wizardStep3Validate": "சரிபார்", + "wizardStep4Cost": "செலவு மற்றும் உருவாக்கம்", + "wizardProviderLabel": "வழங்குநர்", + "wizardEndpointLabel": "இறுதிப்புள்ளி", + "wizardModelLabel": "மாதிரி", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (நாங்கள் மாற்றுவோம்)", + "wizardDropOrPick": "ஒரு கோப்பை இங்கே விடவும் அல்லது தேர்ந்தெடுக்கக் கிளிக் செய்யவும்", + "wizardCsvMappingTitle": "CSV நெடுவரிசைகள் → கோரிக்கைப் புலங்களைப் பொருத்து", + "wizardCsvMappingAddField": "புலத்தைச் சேர்", "wizardCsvNoColumns": "CSV தலைப்பில் நெடுவரிசைகள் எதுவும் கண்டறியப்படவில்லை.", "wizardCsvIgnoreColumn": "— புறக்கணி —", "wizardCsvCustomIdMapped": "custom_id மேப் செய்யப்பட்டது", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} வரிசைகள் பாகுபடுத்தப்பட்டன", "wizardCsvRowsSkipped": "{count} வரிசைகள் தவிர்க்கப்பட்டன", "wizardCsvRowError": "வரிசை {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "அனைத்து வரிகளும் செல்லுபடியாகும்", "wizardValidating": "சரிபார்க்கிறது…", "wizardValidationParseFailed": "சரிபார்ப்பு தோல்வியடைந்தது — உள்ளடக்கத்தைப் பாகுபடுத்த முடியவில்லை.", "wizardValidationSummary": "{lines} வரிகள் · {ids} தனித்துவமான custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "நகல் custom_ids கண்டறியப்பட்டன:", "wizardValidationFirstErrors": "பிழைகள் (முதல் {count}):", "wizardValidationLine": "வரி {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "சரிபார்ப்புப் பிழைகள்", + "wizardValidationPreview": "முன்னோட்டம் (முதல் 5 கோரிக்கைகள்)", + "wizardValidationSamplingNote": "கோப்பு பெரியது — மாதிரி எடுப்பின் மூலம் சரிபார்க்கப்பட்டது (முதல் 1000 + கடைசி 100 வரிகள்). முழுச் சரிபார்ப்பு சேவையகத்தில் இயங்கும்.", + "wizardCostSync": "ஒத்திசைவுச் செலவு", + "wizardCostBatch": "தொகுதிச் செலவு (-50%)", + "wizardCostSavings": "சேமிப்பு", + "wizardCostEstimatedNotice": "மதிப்பிடப்பட்ட செலவு — உண்மையான கட்டணம் மாறுபடலாம்.", + "wizardErrorUpload": "கோப்பைப் பதிவேற்ற முடியவில்லை. மீண்டும் முயலவும்.", + "wizardErrorCreate": "தொகுதியை உருவாக்க முடியவில்லை. மீண்டும் முயலவும்.", + "wizardEmptyProviders": "ஒரு தொகுதியை உருவாக்க, தொகுதி ஆதரவுள்ள வழங்குநரை (OpenAI, Anthropic அல்லது Gemini) இணைக்கவும்.", + "uploadModalTitle": "தொகுதிக் கோப்பைப் பதிவேற்று", + "uploadModalDropOrPick": "ஒரு .jsonl கோப்பை இங்கே விடவும் அல்லது தேர்ந்தெடுக்கக் கிளிக் செய்யவும்", + "uploadModalUpload": "பதிவேற்று", + "uploadModalCancel": "ரத்துசெய்", + "uploadModalError": "பதிவேற்றம் தோல்வியடைந்தது. மீண்டும் முயற்சிக்கவும்.", + "uploadModalSuccess": "பதிவேற்றப்பட்டது", + "uploadModalSizeLimit": "அதிகபட்சம் 512 MB", + "batchListNewButton": "புதிய தொகுதி", + "batchListAutoRefresh": "ஒவ்வொரு 30 வினாடிக்கும் தானாகப் புதுப்பி", + "batchListCostColumn": "செலவு", + "batchActionCancel": "ரத்துசெய்", + "batchActionDownloadOutput": "வெளியீட்டைப் பதிவிறக்கு", + "batchActionDownloadErrors": "பிழைகளைப் பதிவிறக்கு", + "batchActionRetry": "தோல்வியடைந்தவற்றை மீண்டும் முயற்சிக்கவும்", + "batchActionRetryConfirm": "தோல்வியடைந்த {n} கோரிக்கை(களை) மீண்டும் முயற்சிக்கவா? பயன்படுத்தப்பட்ட உண்மையான டோக்கன்களைப் பொறுத்து இறுதிச் செலவு அமையும்.", + "expirationBadgeCritical": "மிக அவசரம்", + "expirationBadgeWarning": "விரைவில்", + "expirationBadgeNormal": "நிலுவையில்", + "expirationBadgeExpired": "காலாவதியானது", + "filesListUploadButton": "பதிவேற்று", + "filesListUsedByColumn": "பயன்படுத்துவது", + "filesListUsedByNone": "எதுவுமில்லை", + "filesListUsedByRoleInput": "உள்ளீடு", + "filesListUsedByRoleOutput": "வெளியீடு", + "filesListUsedByRoleError": "பிழை", + "filesListSizeColumn": "அளவு", + "batchListProgressPartial": "(பகுதியளவு)", + "batchListProviderColumn": "வழங்குநர்", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "மற்றவை", + "batchListTitle": "தொகுதிகள்", + "batchListCount": "{count} தொகுதிகள்", + "batchListRemovingCompleted": "அகற்றப்படுகிறது…", + "batchListRemoveCompleted": "அகற்றல் நிறைவடைந்தது", + "batchListTableStatus": "நிலை", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "இறுதிப்புள்ளி", + "batchListTableModel": "மாடல்", + "batchListTableProgress": "முன்னேற்றம்", + "batchListTableCreated": "உருவாக்கப்பட்டது", + "batchListTableExpires": "காலாவதியாகும் நேரம்", + "batchListLoading": "ஏற்றப்படுகிறது…", + "batchListEmpty": "தொகுதிகள் எதுவும் கிடைக்கவில்லை", + "batchListValidating": "சரிபார்க்கிறது…", + "batchStatusAll": "அனைத்து நிலைகளும்", + "batchStatusInProgress": "செயல்பாட்டில் உள்ளது", + "batchStatusValidating": "சரிபார்க்கிறது", + "batchStatusFinalizing": "இறுதிப்படுத்துகிறது", + "batchStatusCompleted": "நிறைவடைந்தது", + "batchStatusFailed": "தோல்வியடைந்தது", + "batchStatusCancelled": "ரத்துசெய்யப்பட்டது", + "batchStatusCancelling": "ரத்துசெய்கிறது", + "batchStatusExpired": "காலாவதியானது", + "batchStatusCompletedWithFailures": "தோல்விகளுடன் நிறைவடைந்தது", + "batchStatusInProgressWithFailures": "செயல்பாட்டில் உள்ளது (தோல்விகளுடன்)", + "batchStatusFinalizingWithFailures": "இறுதிப்படுத்துகிறது (தோல்விகளுடன்)", + "batchStatusCancelledWithFailures": "தோல்விகளுடன் ரத்துசெய்யப்பட்டது", + "batchStatusExpiredWithFailures": "காலாவதியானது (பகுதியளவு)", + "wizardCostEstimating": "செலவைக் கணக்கிடுகிறது…", + "wizardCostRequests": "கோரிக்கைகள்", + "wizardCostInputTok": "உள்ளீட்டு tok", + "wizardCostOutputTok": "வெளியீட்டு tok", + "wizardCostWindow": "கால வரம்பு", + "wizardDestinationSelectProvider": "ஒரு வழங்குநரைத் தேர்ந்தெடுக்கவும்…", + "wizardDestinationSelectModel": "ஒரு மாதிரியைத் தேர்ந்தெடுக்கவும்…", + "wizardDestinationConnectProvider": "ஒரு வழங்குநரை இணைக்கவும்", + "batchListBatchCreated": "தொகுதி {id} உருவாக்கப்பட்டது — பட்டியல் புதுப்பிக்கப்படுகிறது…", + "batchListBatchCreatedDismiss": "மூடு", + "batchListRefreshing": "புதுப்பிக்கிறது…", + "batchListRefresh": "புதுப்பி", + "uploadFileModalRemove": "அகற்று", + "uploadFileModalUploading": "பதிவேற்றுகிறது…", + "wizardInputReading": "கோப்பைப் படிக்கிறது…", + "wizardInputReady": "தயார்", + "wizardInputLargeFileLabel": "பெரிய கோப்பு — மாதிரித் தரவைச் சரிபார்க்கிறது", + "wizardInputCsvJsonlReady": "JSONL உருவாக்கப்பட்டது — சரிபார்க்கத் தயார்.", + "wizardInputLargeFileWarning": "பெரிய கோப்பு கண்டறியப்பட்டது — மாதிரி எடுப்பதன் மூலம் சரிபார்ப்பு நடைபெறும் (முதல் 5 MB + கடைசி 100 KB). முழுச் சரிபார்ப்பு சேவையகத்தில் நடைபெறும்.", + "wizardCostWindow24h": "24 மணிநேர நிறைவு கால வரம்பு", + "wizardValidationFieldsOk": "தேவையான புலங்கள் செல்லுபடியாகும்", + "filesListDelete": "நீக்கு", + "filesListDownload": "பதிவிறக்கு", + "batchDetailActionCancel": "தொகுதியை ரத்துசெய்", + "batchDetailActionRetry": "தோல்வியடைந்த கோரிக்கைகளை மீண்டும் முயற்சிக்கவும்", + "batchDetailCancelling": "ரத்துசெய்கிறது…", + "batchDetailRetrying": "மறுமுயற்சிக்குத் தயாராகிறது…", + "batchDetailCancelConfirm": "இந்தத் தொகுதியை ரத்துசெய்யவா? செயல்பாட்டில் உள்ள கோரிக்கைகள் நிறுத்தப்படும்.", + "batchActionCancelError": "தொகுதியை ரத்துசெய்ய முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "batchActionRetryError": "தோல்வியடைந்த கோரிக்கைகளை மீண்டும் முயற்சிக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "batchConceptRetentionNote": "முடிவுகள் மற்றும் பிழைக் கோப்புகள் 30 நாட்களுக்குத் தக்கவைக்கப்படும் (Anthropic: 29 நாட்கள்)", "batchFilesSizeColumn": "அளவு", "toggleNoAuthProvider": "அங்கீகாரம் இல்லாத வழங்குநரை மாற்றவும்", "loadingModels": "மாதிரிகளை ஏற்றுகிறது…", @@ -988,47 +988,47 @@ "disabled": "முடக்கப்பட்டது", "featureFlagOmnirouteEmergencyFallbackDescription": "பட்ஜெட் தீர்ந்த கோரிக்கைகளை அவசரகால இலவச ஃபால்பேக் வழங்குநர்/மாடலுக்கு வழிசெலுத்துங்கள்.", "featureFlagArenaEloSyncEnabledDescription": "மாடல் நுண்ணறிவு தரவரிசைகளுக்காக அவ்வப்போதான Arena AI லீடர்போர்டு ELO ஒத்திசைவை இயக்குங்கள்.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "காம்போ வழித்தடம் மாடல்களை மாற்றும்போது உரையாடல் சுருக்கங்களை உருவாக்கி உட்செலுத்தவும். மாடல் மாற்றங்களைத் தனித்தனியாகக் கையாளவும், ஏற்கனவே உள்ள மற்றும் எதிர்கால காம்போக்கள் அனைத்திற்குமான பின்னணி ஒப்படைப்புக் கோரிக்கைகளைத் தடுக்கவும் இதை முடக்கவும்.", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models இல் Claude Code gateway மாதிரி கண்டுபிடிப்பு பட்டியலில் non-Claude மாதிரிகளை காட்ட Claude/<provider>/<model> மின்னூல் அடையாளங்களை விளம்பரம் செய்யவும். எச்சரிக்கை: உலகளாவியமாக செயல்படுத்தப்பட்டால் அனைத்து கிளையன்டுகளுக்கும் பட்டியல் பதிவுகளை இரட்டைப்படுத்துகிறது.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> நுழைவாயில் மாற்றுப்பெயர்களுக்கான முதன்மை நிலைமாற்றி. இயக்கம் (இயல்புநிலை): தகுதியுள்ள, சிந்திக்கும் திறன்கொண்ட ஒவ்வொரு Claude மாடலுக்கும் /v1/models ஒரு சிந்தனையற்ற மாறுபாட்டைக் காட்டும்; மேலும், ஒரு கோரிக்கையில் அனுப்பப்படும் no-think/ ஐடி, பகுத்தறிதல் ஒடுக்கப்பட்ட நிலையில் உண்மையான மாடலுக்குத் திரும்பத் தீர்மானிக்கப்படும். முடக்கம்: எந்த மாறுபாடுகளும் காட்டப்படாது; மேலும் no-think/ ஐடி, மற்ற அறியப்படாத மாடல் ஐடியைப் போலவே கருதப்படும். இது இயக்கத்தில் இருக்கும்போது, ஒவ்வொரு மாடலுக்குமான ModelSpec.noThinkingAlias இணைதல்/விலகல் அமைப்பு தொடர்ந்து பொருந்தும்.", "featureFlagChatVirtualLanesEnabledDescription": "வழங்குநர் அனுப்பீட்டிற்கு ஒவ்வொரு குத்தகைதாரருக்கும் (tenant) தகவமைப்பு மெய்நிகர் சேர்க்கைப் பாதைகளை இயக்கு (#9654): ஒரு குத்தகைதாரரின் அதிகரிப்பு இனி மற்றொருவருக்கு 503 ஐ அளிக்காது. OMNIROUTE_CHAT_VIRTUAL_LANES சூழல் மாறி இந்த டாஷ்போர்டு அமைப்பை விட முன்னுரிமை பெறுகிறது; மாற்றங்கள் சேவையகம் மறுதொடக்கத்தில் நடைமுறைக்கு வரும்.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "டாஷ்போர்டு வழங்குநர் பக்கங்கள்: வழங்குநர் ஏற்கும் குறியீடுகளில் மட்டும் இலவசம் என்ற அடையாளத்தைக் காட்டும் — ஆவணப்படுத்தப்பட்ட இலவச அடுக்கு இல்லாத பதிவுசெய்யப்பட்ட வழங்குநர்களுக்கான காட்சிப் பெயர் ஊகம், பூலியன் அல்லாத இலவசப் புலங்கள் மற்றும் :free பின்னொட்டுகளைப் புறக்கணிக்கும். இதை முடக்கினால், முந்தைய அடையாள விதி பயன்படுத்தப்படும்.", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy குளங்களும் opencode-இன் ஒவ்வொரு கணக்கிற்குமான சுழற்சியும், இப்போது தோல்வியடைந்த ஒரு proxy-ஐ (மறுக்கப்பட்ட TCP ஆய்வு அல்லது அதன் வழியாகப் பெறப்பட்ட 429) ஒவ்வொரு செயல்முறைக்கும் உரிய ஒரு காலகட்டத்திற்கு மீண்டும் வழங்குவதை நிறுத்தும்; ஒவ்வொரு தொடர் தோல்வியின்போதும் அந்தக் காலகட்டம் இரட்டிப்பாகி, அதிகபட்ச வரம்பு வரை செல்லும். எந்த proxy நிலையும் எழுதப்படாது; ஒவ்வொரு தேர்வுக்குரியதும் ஒதுக்கி வைக்கப்பட்டால், தேர்வு மாறாமல் இருக்கும். இயல்பாக முடக்கப்பட்டிருக்கும்: தேர்வு வரிசை சாதாரண சுழற்சியை அப்படியே பின்பற்றும்.", + "featureFlagProxyPoolEgressObservationDescription": "டாஷ்போர்டில் ஒரு proxy குளத்தின் கீழ், கடந்த 24 மணிநேரத்தில் அதன் உறுப்பினர்களுக்குச் சேவையளித்த கண்டறியப்பட்ட வெளியேற்ற IP-களின் எண்ணிக்கை, அவற்றைப் பயன்படுத்திய இணைப்புகளின் எண்ணிக்கை மற்றும் ஓர் IP-க்குப் பின்னால் காணப்பட்ட அதிகபட்ச எண்ணிக்கை ஆகியவற்றைக் காட்டும். படிக்க மட்டும்; proxy பதிவிலிருந்து கணக்கிடப்படும்; வழித்தடத் தேர்வுக்கு ஒருபோதும் பயன்படுத்தப்படாது. இயல்பாக முடக்கப்பட்டிருக்கும்: குளத் திருத்தி மாறாமல் இருக்கும், மேலும் கண்காணிப்பு வழித்தடம் null எனப் பதிலளிக்கும்.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Proxy ஆரோக்கியச் சோதனையில், இலக்கு மறுத்த ஓர் ஆய்வு (401/403/429: proxy அதை அனுப்பியது, ஆனால் இலக்கு இந்த வெளியேற்ற IP-ஐ மறுத்தது), சேவையளிக்கப்பட்ட ஆய்வைப் போலவே proxy-இன் தொடர்ச்சியான தோல்வி வரிசையை மீட்டமைக்க அனுமதிக்கும். இயல்பாக முடக்கப்பட்டிருக்கும்: ஒரு மறுப்பு நடுநிலையாகவே இருந்து, தோல்வி வரிசையைத் தொடர வைத்திருக்கும். எந்த நிலையிலும் 5xx முடிவுறாததாகவே இருக்கும்; மேலும் ஒரு மறுப்பு ஒருபோதும் proxy-ஐ அகற்றவோ, முடக்கவோ அல்லது மீண்டும் செயல்படுத்தவோ செய்யாது.", "sidebar": { - "home": "Home", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "usage": "Usage", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", + "home": "முகப்பு", + "dashboard": "கட்டுப்பாட்டுப் பலகம்", + "providers": "வழங்குநர்கள்", + "combos": "காம்போக்கள்", + "usage": "பயன்பாடு", + "analytics": "பகுப்பாய்வு", + "costs": "செலவுகள்", + "health": "செயல்நிலை", "proxy": "பிராக்ஸி", "limits": "Limits & Quotas", - "cliTools": "CLI Tools", - "media": "Media", - "settings": "Settings", - "translator": "Translator", - "playground": "Playground", - "searchTools": "Search Tools", - "agents": "Agents", + "cliTools": "CLI கருவிகள்", + "media": "ஊடகம்", + "settings": "அமைப்புகள்", + "translator": "மொழிபெயர்ப்பி", + "playground": "சோதனைக் களம்", + "searchTools": "தேடல் கருவிகள்", + "agents": "முகவர்கள்", "cloudAgents": "கிளவுட் முகவர்கள்", - "memory": "Memory", - "skills": "Skills", + "memory": "நினைவகம்", + "skills": "திறன்கள்", "omniSkills": "OmniSkills", "agentSkills": "முகவர் திறன்கள்", "chaosConfig": "Chaos பயன்முறை", - "docs": "Docs", - "issues": "Issues", - "endpoints": "Endpoints", + "docs": "ஆவணங்கள்", + "issues": "சிக்கல்கள்", + "endpoints": "இறுதிப்புள்ளிகள்", "endpointsSubtitle": "உங்கள் AI இணைப்பு URLகள்", - "apiManager": "API Keys", + "apiManager": "API விசைகள்", "apiManagerSubtitle": "API விசைகள் மற்றும் அணுகலை நிர்வகிக்கவும்", "embeddedServices": "உட்பொதிக்கப்பட்ட சேவைகள்", "embeddedServicesSubtitle": "உள்ளூர் proxy சேவைகளை நிர்வகிக்கவும்", - "logs": "Logs", + "logs": "பதிவுகள்", "webhooks": "வெப்ஹூக்ஸ்", "webhooksSubtitle": "நிகழ்வுகளின் அறிவிப்பைப் பெறுங்கள்", "logExport": "பதிவு ஏற்றுமதி", @@ -1037,82 +1037,82 @@ "batchSubtitle": "பல கோரிக்கைகளை செயல்படுத்தவும்", "contextCavemanSubtitle": "உடனடி சுருக்கம்", "contextRtkSubtitle": "வெளியீட்டு வடிகட்டுதல்", - "auditLog": "Audit Log", - "shutdown": "Shutdown", - "restart": "Restart", - "shutdownConfirm": "Shut down OmniRoute?", - "restartConfirm": "Restart OmniRoute?", + "auditLog": "தணிக்கைப் பதிவு", + "shutdown": "நிறுத்து", + "restart": "மறுதொடக்கம்", + "shutdownConfirm": "OmniRoute-ஐ நிறுத்தவா?", + "restartConfirm": "OmniRoute-ஐ மறுதொடக்கம் செய்யவா?", "version": "v{version}", "debug": "Debug", - "system": "System", - "help": "Help", + "system": "அமைப்பு", + "help": "உதவி", "primarySection": "Main", "cliSection": "CLI", "debugSection": "Debug", "systemSection": "System", "helpSection": "Help", - "serverDisconnected": "Server Disconnected", - "serverDisconnectedMsg": "The proxy server has been stopped or is restarting.", - "expandSidebar": "Expand sidebar", - "collapseSidebar": "Collapse sidebar", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", - "cliToolsShort": "Tools", + "serverDisconnected": "சேவையக இணைப்பு துண்டிக்கப்பட்டது", + "serverDisconnectedMsg": "பதிலி சேவையகம் நிறுத்தப்பட்டுள்ளது அல்லது மறுதொடக்கம் செய்யப்படுகிறது.", + "expandSidebar": "பக்கப்பட்டியை விரிவாக்கு", + "collapseSidebar": "பக்கப்பட்டியைச் சுருக்கு", + "themes": "தீம்கள்", + "presetColors": "பிரபலமான நிறங்கள்", + "createTheme": "தீமை உருவாக்கு", + "chooseColor": "ஒரு நிறத்தைத் தேர்ந்தெடுக்கவும்", + "themeCoral": "பவள நிறம்", + "themeBlue": "நீலம்", + "themeRed": "சிவப்பு", + "themeGreen": "பச்சை", + "themeViolet": "ஊதா", + "themeOrange": "ஆரஞ்சு", + "themeCyan": "சியான்", + "cliToolsShort": "கருவிகள்", "cache": "Cache", "cacheShort": "Cache", "batch": "Batch Testing", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "themeSystem": "தீம் அமைப்பு", + "whitelabelingDesc": "வெள்ளை லேபிளிடல் விளக்கம்", + "switchThemes": "தீம்களை மாற்று", + "themeAccentDesc": "தீமின் அழுத்த நிற விளக்கம்", + "uploadFavicon": "Favicon-ஐப் பதிவேற்று", + "themeDark": "இருண்ட தீம்", + "customLogoDesc": "தனிப்பயன் Logo விளக்கம்", + "sidebarVisibilityToggle": "பக்கப்பட்டிக் காட்சிநிலை மாற்றி", + "themeAccent": "தீமின் அழுத்த நிறம்", + "resetFavicon": "Favicon-ஐ மீட்டமை", + "whitelabeling": "வெள்ளை லேபிளிடல்", + "darkMode": "இருண்ட பயன்முறை", + "uploadLogo": "Logo-வைப் பதிவேற்று", + "themeLight": "ஒளிர்ந்த தீம்", + "appName": "செயலி பெயர்", + "appNameDesc": "செயலி பெயர் விளக்கம்", + "resetLogo": "Logo-வை மீட்டமை", + "customFavicon": "தனிப்பயன் Favicon", + "hideHealthLogs": "நலநிலைப் பதிவுகளை மறை", + "customLogo": "தனிப்பயன் Logo", + "appearance": "தோற்றம்", + "themeSelectionAria": "தீம் தேர்வு Aria", + "themeCreate": "தீம் உருவாக்கம்", + "customFaviconDesc": "தனிப்பயன் Favicon விளக்கம்", + "logoPreview": "Logo முன்னோட்டம்", + "themeCustom": "தனிப்பயன் தீம்", + "hideHealthLogsDesc": "நலநிலைப் பதிவுகளின் விளக்கத்தை மறை", + "faviconPreview": "ஃபேவிகான் முன்னோட்டம்", + "changelog": "மாற்றப் பதிவு", + "contextSection": "சூழல் & தற்காலிகச் சேமிப்பு", + "contextCaveman": "கேவ்மேன்", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "எஞ்சின் சேர்க்கைகள்", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "அல்ட்ரா", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "சுருக்க அமைப்புகள்", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "சேர்க்கை ஸ்டுடியோ", "combosLiveSubtitle": "நேரலை ரூட்டிங் அடுக்கு", "compressionStudio": "Compression Studio", "compressionExclusions": "விலக்கல்கள்", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "நேரலை என்ஜின் அடுக்கு", "compressionExclusionsSubtitle": "மாதிரி/எண்ட்பாயிண்ட் தவிர்க்கவும்", "chaosConfigSubtitle": "பல மாடல் இணையான செயலாக்கம்", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "வழித்தடத் தேர்வு", + "protocolsSection": "நெறிமுறைகள்", + "agentsAiSection": "முகவர்கள் & AI", + "cacheContextSection": "தற்காலிகச் சேமிப்பு & சூழல்", + "analyticsSection": "பகுப்பாய்வு", + "costsSection": "செலவுகள்", + "monitoringSection": "கண்காணிப்பு", + "auditSecuritySection": "தணிக்கை & பாதுகாப்பு", + "devtoolsSection": "உருவாக்குநர் கருவிகள்", + "configurationSection": "உள்ளமைவு", + "aiFeaturesSection": "AI அம்சங்கள்", "mcp": "MCP", "a2a": "A2A", "plugins": "செருகுநிரல்கள்", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "API முனைப்புள்ளிகள்", + "batchFiles": "கோப்புகள்", + "analyticsEvals": "மதிப்பீடுகள்", + "analyticsSearch": "தேடல்", + "analyticsUtilization": "பயன்பாட்டு அளவு", + "analyticsComboHealth": "சேர்க்கை நலநிலை", + "analyticsCompression": "சுருக்கம்", + "costsBudget": "வரவுசெலவுத் திட்டம்", "costsFreeTiers": "இலவச அடுக்கு பட்ஜெட்", "costsFreeTiersSubtitle": "மாதாந்திர இலவச டோக்கன் ஒதுக்கீடுகள்", "freeProviderRankings": "இலவச வழங்குநர் தரவரிசைகள்", "freeProviderRankingsSubtitle": "மாடல் ELO மதிப்பெண்களின் அடிப்படையில் தரவரிசைப்படுத்தப்பட்ட சிறந்த இலவச வழங்குநர்கள்", "radar": "ரேடார் பட்டியல்", "radarSubtitle": "சமூகமாக வளமான இலவச மாதிரி பட்டியல்", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "ஒதுக்கீட்டுப் பகிர்வு", + "costsPricing": "விலை நிர்ணயம்", + "logsProxy": "பதிலாள் பதிவுகள்", + "logsConsole": "கன்சோல்", + "logsActivity": "செயல்பாடு", + "auditMcp": "MCP தணிக்கை", "auditA2a": "A2A தணிக்கை", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "தோற்றம்", + "settingsAi": "AI அமைப்புகள்", + "settingsSecurity": "பாதுகாப்பு", "settingsAccessTokens": "அணுகல் டோக்கன்கள்", "settingsFeatureFlags": "அம்சம் கொடிகள்", "settingsCache": "கேஷ்", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "அங்கீகார அனுமதி", + "settingsRouting": "வழித்தடம்", + "settingsResilience": "மீட்சித்திறன்", "modelLockout": "மாடல் லாக்அவுட்", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "மேம்பட்டவை", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "வழங்குநர் ஒதுக்கீடு", + "providerQuota": "வழங்குநர் ஒதுக்கீடு", + "runtime": "இயக்கச்சூழல்", + "consoleLogs": "கன்சோல் பதிவுகள்", + "logsTimeline": "காலவரிசை", "logsTimelineSubtitle": "காட்சி கோரிக்கை காலக்கெடு", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "உரையாடல்கள்", + "conversationsSubtitle": "பல-சுற்று முகவர் சார்ந்த உரையாடல்கள்", + "globalRouting": "உலகளாவிய வழித்தடம்", + "mitmProxy": "MITM பதிலி", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "முகவர் சார்ந்த அம்சங்கள்", + "otherFeaturesSection": "பிற அம்சங்கள்", + "compressionContextGroup": "சுருக்கச் சூழல்", + "gamificationGroup": "விளையாட்டுமயமாக்கல்", + "toolsGroup": "கருவிகள்", + "integrationsGroup": "ஒருங்கிணைப்புகள்", + "proxyGroup": "பதிலி", + "costsParametersGroup": "செலவு அளவுருக்கள்", + "auditGroup": "தணிக்கை", + "batchGroup": "தொகுதி", + "homeSubtitle": "டாஷ்போர்டு மேலோட்டம்", + "providersSubtitle": "AI வழங்குநர்களை நிர்வகிக்கவும்", + "quotaTrackerSubtitle": "பயன்பாட்டு வரம்புகளைக் கண்காணிக்கவும்", + "providerQuotaSubtitle": "வழங்குநரின் பயன்பாட்டு வரம்புகளைக் கண்காணிக்கவும்", + "runtimeSubtitle": "நிகழ்நேர மீட்சித்திறன் மற்றும் அமர்வுகள்", + "contextCombosSubtitle": "சுருக்கப் பொறிகளை ஒருங்கிணைக்கவும்", + "cliToolsSubtitle": "CLI இயக்கச்சூழல்களை உள்ளமைக்கவும்", + "agentsSubtitle": "உள்ளூர் முகவர்களை நிர்வகிக்கவும்", + "cloudAgentsSubtitle": "கிளவுட் அடிப்படையிலான முகவர்களை நிர்வகிக்கவும்", + "apiEndpointsSubtitle": "தனிப்பயன் முடிவுப்புள்ளிகளை வெளிப்படுத்து", + "proxySubtitle": "HTTP ப்ராக்ஸி அமைப்புகள்", + "mitmProxySubtitle": "MITM இடைமறிப்பு", + "oneProxySubtitle": "பொது ப்ராக்ஸி நுழைவாயில்", + "leaderboard": "தரவரிசைப் பலகை", + "profile": "சுயவிவரம்", + "tokens": "டோக்கன்கள்", + "gamificationAdmin": "விளையாட்டுமயமாக்கல் நிர்வாகம்", + "leaderboardSubtitle": "தரவரிசைகள் மற்றும் சாதனைகள்", + "profileSubtitle": "கணக்கு மற்றும் விருப்பத்தேர்வுகள்", + "tokensSubtitle": "டோக்கன் பயன்பாடு மற்றும் வரவுசெலவுத் திட்டங்கள்", + "gamificationAdminSubtitle": "முரண்பாடு கண்காணிப்பு மற்றும் மோசடித் தடுப்பு", + "usageSubtitle": "போக்குவரத்து மற்றும் பயன்பாட்டுப் புள்ளிவிவரங்கள்", + "analyticsComboHealthSubtitle": "காம்போ இலக்கின் நம்பகத்தன்மை", + "analyticsUtilizationSubtitle": "வழங்குநர் பயன்பாடு", + "costsSubtitle": "செலவுப் பகுப்பாய்வு", + "cacheSubtitle": "தற்காலிகச் சேமிப்பக வெற்றி விகிதங்கள்", + "analyticsCompressionSubtitle": "டோக்கன் சேமிப்புப் புள்ளிவிவரங்கள்", + "analyticsSearchSubtitle": "தேடல் கருவிப் பகுப்பாய்வு", + "analyticsEvalsSubtitle": "மதிப்பீட்டுத் தொகுப்பு முடிவுகள்", "providerStats": "வழங்குநர் புள்ளிவிவரங்கள்", "providerStatsSubtitle": "தாமதம் மற்றும் செயல்திறன் அளவீடுகள்", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "பயன்பாட்டுப் பதிவுகள்", + "logsProxySubtitle": "ப்ராக்ஸி போக்குவரத்துப் பதிவுகள்", + "consoleLogsSubtitle": "கன்சோல் வெளியீடு", + "logsActivitySubtitle": "பயனர் செயல்பாட்டுப் பதிவு", + "healthSubtitle": "கணினி ஆரோக்கியச் சோதனை", + "costsPricingSubtitle": "ஒவ்வொரு மாதிரிக்குமான விலை நிர்ணய விதிகள்", + "costsBudgetSubtitle": "வரவுசெலவு வரம்புகள்", + "costsQuotaShareSubtitle": "வழங்குநர் ஒதுக்கீடுகளை விசைகளுக்கு இடையே பகிர்", + "auditLogSubtitle": "அங்கீகாரத் தணிக்கை", + "auditMcpSubtitle": "MCP சேவையகத் தணிக்கை", + "auditA2aSubtitle": "A2A நெறிமுறைத் தணிக்கை", + "translatorSubtitle": "வடிவமைப்பு மாற்றம்", + "playgroundSubtitle": "தூண்டுதல்களை நேரலையில் சோதி", + "searchToolsSubtitle": "தேடல் கருவிப் பதிவேடு", + "memorySubtitle": "நிலையான முகவர் நினைவகம்", + "omniSkillsSubtitle": "Sandbox திறன் பதிவேடு", + "agentSkillsSubtitle": "A2A திறன் பதிவேடு", + "mcpSubtitle": "MCP சேவையகக் கட்டுப்பாடுகள்", + "a2aSubtitle": "A2A நெறிமுறை சேவையகம்", "pluginsSubtitle": "செருகுநிரல் சந்தை & நிறுவவல்கள்", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "தற்காலிகமாகச் சேமிக்கப்பட்ட ஊடகக் கோப்புகள்", + "batchFilesSubtitle": "தொகுதி உள்ளீடு/வெளியீட்டுக் கோப்புகள்", + "settingsSubtitle": "அனைத்து அமைப்புகளும்", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "தீம் மற்றும் தளவமைப்பு", + "settingsAiSubtitle": "AI நடத்தைக்கான இயல்புநிலைகள்", + "globalRoutingSubtitle": "உலகளாவிய வழிப்படுத்தல் விதிகள்", + "settingsResilienceSubtitle": "மறுமுயற்சிகள் மற்றும் சுற்றுத் தடுப்பான்கள்", + "settingsAdvancedSubtitle": "மேம்பட்ட பயனர் விருப்பங்கள்", + "settingsSecuritySubtitle": "அங்கீகாரம் மற்றும் குறியாக்கம்", "settingsAccessTokensSubtitle": "தொலைநிலை பயன்முறைக்கான ஸ்கோப் செய்யப்பட்ட CLI டோக்கன்கள்", "settingsFeatureFlagsSubtitle": "கணினி திறன்களை மாற்றவும்", "settingsCacheSubtitle": "மாதிரி பட்டியல் மற்றும் பதில் கச்சா சேமிப்பு", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "பக்கப்பட்டை", + "settingsSidebarSubtitle": "பக்கப்பட்டை தளவமைப்பைத் தனிப்பயனாக்குங்கள்", "settingsAuthzSubtitle": "ரூட் இருப்பு மற்றும் பைபாஸ் கொள்கை", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "ஆவணங்கள்", + "issuesSubtitle": "பிழையைப் புகாரளிக்கவும்", + "changelogSubtitle": "வெளியீட்டுக் குறிப்புகள்", "costsQuotaPlans": "திட்டங்கள் & ஒதுக்கீடுகள்", "costsQuotaPlansSubtitle": "வழங்குநர் வாரியாக திட்டங்களை உள்ளமைக்கவும்", "activity": "செயல்பாடு", @@ -1278,8 +1278,8 @@ "agentBridge": "ஏஜென்ட் பிரிட்ஜ்", "agentBridgeSubtitle": "IDE ஏஜென்ட் டிராஃபிக்கை இடைமறிக்கவும்", "trafficInspector": "டிராஃபிக் இன்ஸ்பெக்டர்", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "உங்கள் செயலிகளின் கோரிக்கை மற்றும் பதில் போக்குவரத்தை ஆய்வு செய்யுங்கள்", + "trafficInspectorPurpose": "உங்கள் செயலி AI வழங்குநர்களுக்கு எதை அனுப்புகிறது மற்றும் அவர்களிடமிருந்து எதைப் பெறுகிறது என்பதைத் துல்லியமாகப் பாருங்கள். OpenAI-இணக்கமான எந்தக் கிளையண்டுடனும் செயல்படும்.", "cliCode": "CLI குறியீடு", "cliCodeSubtitle": "OmniRoute-ஐ சுட்டிக்காட்டும் குறியீட்டுக் கருவிகள்", "cliAgents": "CLI ஏஜென்ட்கள்", @@ -1345,7 +1345,7 @@ "refresh": "புதுப்பிக்கவும்", "loading": "வெப்ஹூக்குகளை ஏற்றுகிறது...", "never": "ஒருபோதும் இல்லை", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {தோல்விகள் இல்லை} one {# தோல்வி} other {# தோல்விகள்}}", "testWebhook": "சோதனையை அனுப்பவும்", "testSuccess": "சோதனை webhook வெற்றிகரமாக அனுப்பப்பட்டது.", "testFailed": "சோதனை வெப்ஹூக் தோல்வியடைந்தது.", @@ -1563,91 +1563,91 @@ "mcpMetricTopTool": "மேலான கருவி" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "தீம்கள்", + "description": "முன்னமைக்கப்பட்ட தீமைத் தேர்வுசெய்யுங்கள் அல்லது ஒரே நிறத்தைப் பயன்படுத்தி உங்களுக்கென ஒன்றை உருவாக்குங்கள்", + "presetColors": "பிரபலமான நிறங்கள்", + "customTheme": "தனிப்பயன் தீம்", + "customThemeDesc": "தீமை உருவாக்கு என்பதைக் கிளிக் செய்து ஒரு நிறத்தைத் தேர்ந்தெடுக்கவும்", + "createTheme": "தீமை உருவாக்கு", + "activePreset": "செயலில் உள்ள தீம்" }, "header": { - "logout": "Logout", + "logout": "வெளியேறு", "quickNavigation": "விரைவு வழிசெலுத்தல்", "quickNavigationTitle": "விரைவு வழிசெலுத்தல் (⌘K / Ctrl+K)", "openQuickNavigation": "விரைவு வழிசெலுத்தலைத் திறக்கவும்", "switchToLightMode": "வெளிச்சப் பயன்முறைக்கு மாறவும்", "switchToDarkMode": "இருண்ட பயன்முறைக்கு மாறவும்", - "language": "Language", - "providers": "Providers", - "providerDescription": "Manage your AI provider connections", - "combos": "Combos", - "comboDescription": "Model combos with fallback", - "usage": "Usage & Analytics", - "usageDescription": "Monitor your API usage, token consumption, and request logs", - "analytics": "Analytics", - "analyticsDescription": "Charts, trends, and evaluation insights", - "cliTools": "CLI Tools", - "cliToolsDescription": "Configure CLI tools", - "home": "Home", - "homeDescription": "Welcome to OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "language": "மொழி", + "providers": "வழங்குநர்கள்", + "providerDescription": "உங்கள் AI வழங்குநர் இணைப்புகளை நிர்வகிக்கவும்", + "combos": "சேர்க்கைகள்", + "comboDescription": "மாற்று வசதியுடன் கூடிய மாதிரி சேர்க்கைகள்", + "usage": "பயன்பாடு மற்றும் பகுப்பாய்வு", + "usageDescription": "உங்கள் API பயன்பாடு, டோக்கன் நுகர்வு மற்றும் கோரிக்கைப் பதிவுகளைக் கண்காணிக்கவும்", + "analytics": "பகுப்பாய்வு", + "analyticsDescription": "விளக்கப்படங்கள், போக்குகள் மற்றும் மதிப்பீட்டு நுண்ணறிவுகள்", + "cliTools": "CLI கருவிகள்", + "cliToolsDescription": "CLI கருவிகளை உள்ளமைக்கவும்", + "home": "முகப்பு", + "homeDescription": "OmniRoute-க்கு வரவேற்கிறோம்", + "endpoint": "இறுதிப்புள்ளிகள்", + "endpointDescription": "ப்ராக்ஸி இறுதிப்புள்ளிகள், MCP, A2A மற்றும் API இறுதிப்புள்ளிகளை நிர்வகிக்கவும்", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol சேவையக மேலாண்மை மற்றும் கருவிகள்", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", - "settings": "Settings", - "settingsDescription": "Manage your preferences", - "openaiCompatible": "OpenAI Compatible", - "anthropicCompatible": "Anthropic Compatible", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "a2aDescription": "Agent-to-Agent நெறிமுறைப் பணிகள் மற்றும் கண்காணிப்புத்திறன்", + "settings": "அமைப்புகள்", + "settingsDescription": "உங்கள் விருப்பங்களை நிர்வகிக்கவும்", + "openaiCompatible": "OpenAI இணக்கமானது", + "anthropicCompatible": "Anthropic இணக்கமானது", + "media": "ஊடகம்", + "mediaDescription": "படங்கள், காணொளிகள் மற்றும் இசையை உருவாக்கவும்", + "themes": "தீம்கள்", + "themesDescription": "முழு டாஷ்போர்டு பலகைக்கும் ஒரு வண்ணத் தீமைத் தேர்ந்தெடுக்கவும்", + "costsDescription": "அனைத்து வழங்குநர்களிலும் செலவினத்தைக் கண்காணித்து, போக்குகளைப் பகுப்பாய்ந்து, உங்கள் AI வரவுசெலவுத் திட்டத்தை நிர்வகிக்கவும்", + "cacheDescription": "வழங்குநரின் ப்ராம்ப்ட் கேச் செயல்திறன் மற்றும் உள்ளூர் சொற்பொருள் பதில் மறுபயன்பாட்டைக் கண்காணிக்கவும்.", + "limitsDescription": "ஒவ்வொரு API விசைக்கும் வழங்குநருக்கும் வீத வரம்புகளையும் ஒதுக்கீடுகளையும் உள்ளமைக்கவும்", + "runtimeDescription": "நேரடி இயக்கநேரக் கண்காணிப்புத்திறன் — சர்க்யூட் பிரேக்கர்கள், கூல்டவுன்கள், மாடல் முடக்கங்கள், அமர்வுகள் மற்றும் ஒதுக்கீட்டு எச்சரிக்கைகள்", + "apiManagerDescription": "உங்கள் OmniRoute நிகழ்வுக்கான API விசைகள் மற்றும் அணுகல் கட்டுப்பாட்டை நிர்வகிக்கவும்", + "batchDescription": "தொகுக்கப்பட்ட API அழைப்புகள் மூலம் பெருமளவிலான கோரிக்கைகளை ஒத்திசைவின்றிச் செயலாக்கவும்", + "contextCavemanDescription": "விதி அடிப்படையிலான செய்திச் சுருக்கம், மொழித் தொகுப்புகள், பகுப்பாய்வு மற்றும் வெளியீட்டு முறை கட்டுப்பாடுகள்.", + "contextRtkDescription": "கருவி வெளியீடு, முனையப் பதிவுகள் மற்றும் உருவாக்க முடிவுகளுக்கான கட்டளை-அறிதிறன் கொண்ட சுருக்கம்.", + "contextCombosDescription": "வெவ்வேறு வழிப்படுத்தல் சூழ்நிலைகளுக்கு என்ஜின்கள் எவ்வாறு இணைக்கப்பட வேண்டும் என்பதை வரையறுக்கவும்.", + "changelogDescription": "சமீபத்திய தள அம்சங்கள் மற்றும் அறிவிப்புகளை உடனுக்குடன் அறிந்திருங்கள்.", + "agentsDescription": "AI முகவர் கருவிகளை நிர்வகித்து உள்ளமைக்கவும்: Codex, Devin, Jules மற்றும் தனிப்பயன் முகவர்கள்", + "cloudAgentsDescription": "நேரடிப் பணி கண்காணிப்பு மற்றும் திட்ட ஒப்புதலுடன் கிளவுட் அடிப்படையிலான AI முகவர்களை ஒருங்கிணைக்கவும்", + "memoryDescription": "சொற்பொருள் தேடல் மற்றும் FTS5 முழு-உரை அட்டவணைப்படுத்தலுடன் நிலையான உரையாடல் நினைவகம்", + "skillsDescription": "தானியங்கு ப்ராம்ப்ட் மற்றும் கருவிச் செயலாக்கத்திற்கான சாண்ட்பாக்ஸ் திறன்களை நிறுவி நிர்வகிக்கவும்", + "agentSkillsDescription": "AI கிளையன்ட் ஒருங்கிணைப்புக்காக ஒரே கிளிக்கில் URL நகலெடுக்கும் வசதியுள்ள முகவர்-தயார் திறன்களின் பட்டியல்", + "translatorDescription": "API வடிவங்களுக்கிடையே ப்ராம்ப்ட்களை மொழிபெயர்த்துச் சோதிக்கவும்: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "நேரடி வழங்குநர் பதில்கள் மற்றும் வடிவ ஆய்வுடன் ப்ராம்ப்ட்களை ஊடாடும் முறையில் சோதிக்கவும்", + "searchToolsDescription": "தேடல் பகுப்பாய்வு, வழங்குநர் வாரியான விவரம், கேச் ஹிட் விகிதங்கள் மற்றும் செலவுக் கண்காணிப்பு", + "logsDescription": "நிகழ்நேரக் கோரிக்கைப் பதிவுகள், பிழைத் தடங்கள் மற்றும் ஸ்ட்ரீமிங் நிகழ்வு ஆய்வி", + "auditDescription": "API விசைப் பயன்பாடு, MCP கருவி அழைப்புகள் மற்றும் கொள்கை நிகழ்வுகளின் இணக்கத் தணிக்கைத் தடம்", + "webhooksDescription": "நிகழ்நேர நிகழ்வு அறிவிப்புகளைப் பெற வெப்ஹுக் இறுதிப்புள்ளிகளை உள்ளமைக்கவும்", + "healthDescription": "அமைப்பின் ஆரோக்கிய மேலோட்டம்: வழங்குநர்கள், சர்க்யூட் பிரேக்கர்கள், வீத வரம்புகள் மற்றும் தரவுத்தளம்", + "proxyDescription": "வெளிச்செல்லும் வழங்குநர் இணைப்புகளுக்கான அப்ஸ்ட்ரீம் ப்ராக்ஸி அமைப்புகளை உள்ளமைக்கவும்", + "apiEndpointsDescription": "தனிப்பயன் API முனைப்புள்ளி உள்ளமைவுகள் மற்றும் வழித்தட மேலெழுதல்களை நிர்வகிக்கவும்", + "batchFilesDescription": "தொகுதி வேலை வெளியீட்டுக் கோப்புகள் மற்றும் முடிவுகளை உலாவி நிர்வகிக்கவும்", + "analyticsEvalsDescription": "மாதிரி மதிப்பீட்டு முடிவுகள் மற்றும் செயல்திறன் அளவுகோல்கள்", + "analyticsSearchDescription": "தேடல் வினவல் பகுப்பாய்வு, தற்காலிகச் சேமிப்பு வெற்றி வீதங்கள் மற்றும் செலவுக் கண்காணிப்பு", + "analyticsUtilizationDescription": "வழங்குநர் பயன்பாட்டு அளவீடுகள் மற்றும் திறன் திட்டமிடல்", + "analyticsComboHealthDescription": "காம்போ வழித்தட உள்ளமைவுகளின் நிகழ்நேர ஆரோக்கியம் மற்றும் செயல்திறன்", + "analyticsCompressionDescription": "சூழல் சுருக்கப் பகுப்பாய்வு மற்றும் டோக்கன் சேமிப்பு", + "costsBudgetDescription": "ஒவ்வொரு API விசை மற்றும் வழங்குநருக்குமான பட்ஜெட் வரம்புகள் மற்றும் செலவு எச்சரிக்கைகள்", + "costsPricingDescription": "டோக்கன் செலவுக் கணக்கீடுகளுக்கான தனிப்பயன் விலை உள்ளமைவு", + "logsProxyDescription": "அப்ஸ்ட்ரீம் ப்ராக்ஸி கோரிக்கை பதிவுகள் மற்றும் போக்குவரத்து ஆய்வு", + "logsConsoleDescription": "பயன்பாட்டு கன்சோல் வெளியீடு மற்றும் பிழைத்திருத்தப் பதிவுகள்", + "logsActivityDescription": "பயனர் செயல்கள் மற்றும் அமைப்பு நிகழ்வுகளின் தணிக்கைத் தடம்", + "auditMcpDescription": "MCP கருவி அழைப்புகளின் தணிக்கைத் தடம் மற்றும் இணக்கப் பதிவுகள்", "auditA2a": "A2A தணிக்கை", "auditA2aDescription": "A2A டாஸ்க் எக்ஸிகியூஷன் ஆடிட் டிரெயில், மாநில மாற்றங்கள் மற்றும் திறன் அழைப்பு பதிவுகள்", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "தீம், பிராண்டிங் மற்றும் காட்சித் தனிப்பயனாக்கம்", + "settingsAiDescription": "AI நடத்தைகள், சிந்தனை பட்ஜெட்டுகள், பார்வை மற்றும் நினைவக அமைப்புகள்", "settingsCacheDescription": "மாதிரி பட்டியலுக்கான காசே க entries ியின் TTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "அடையாளச் சரிபார்ப்பு, அங்கீகாரம் மற்றும் அணுகல் கட்டுப்பாட்டு அமைப்புகள்", "featureFlags": "அம்சம் கொடிகள்", "featureFlagsDescription": "கட்டுப்பாட்டு அமைப்பு திறன்கள் மற்றும் சோதனை அம்சங்கள்", "featureFlagsActive": "{count} செயலில் உள்ளது", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "உங்கள் தேடலுக்கு எந்தக் கொடியும் பொருந்தவில்லை", "featureFlagsSaved": "கொடி புதுப்பிக்கப்பட்டது", "featureFlagsError": "கொடியைப் புதுப்பிக்க முடியவில்லை", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "வழித்தட விதிகள், மாதிரி மாற்றுப்பெயர்கள், காம்போ இயல்புநிலைகள் மற்றும் தரக்குறைப்பு அமைப்புகள்", + "settingsResilienceDescription": "சர்க்யூட் பிரேக்கர், மறுமுயற்சி மற்றும் மாற்று ஏற்பாட்டு உள்ளமைவு", + "settingsAdvancedDescription": "மேம்பட்ட பேலோடு விதிகள், கோரிக்கை வரம்புகள் மற்றும் ப்ராக்ஸி API அமைப்புகள்", + "mitmProxyDescription": "போக்குவரத்து ஆய்வு மற்றும் பிழைத்திருத்தத்திற்கான MITM ப்ராக்ஸி அமைப்புகளை உள்ளமைக்கவும்", + "oneProxyDescription": "மேம்பட்ட ப்ராக்ஸி சங்கிலியிடலுக்கான 1Proxy அமைப்புகளை உள்ளமைக்கவும்", "omniSkillsDescription": "தானியங்கி தூண்டுதல் மற்றும் கருவி செயலாக்கத்திற்கான சாண்ட்பாக்ஸ் திறன்களை நிறுவி நிர்வகிக்கவும்" }, "cloudSyncStatus": { @@ -1761,8 +1761,8 @@ "quotaShare": "ஒதுக்கீட்டுப் பகிர்வு", "discovery": "கண்டறிதல்", "freeProviderRankings": "இலவச வழங்குநர் தரவரிசை", - "radar": "Radar", - "setup": "Setup", + "radar": "ரேடார்", + "setup": "அமைத்தல்", "freeTiers": "இலவச அடுக்குகள்", "gamification": "கேமிஃபிகேஷன்", "leaderboard": "லீடர்போர்டு", @@ -1784,53 +1784,53 @@ "orchestration": "ஆர்கெஸ்ட்ரேஷன்" }, "home": { - "quickStart": "Quick Start", - "quickStartDesc": "Get up and running in 4 steps. Connect providers, route models, monitor everything.", - "fullDocs": "Full Docs", - "step1Title": "1. Create API key", + "quickStart": "விரைவு தொடக்கம்", + "quickStartDesc": "4 படிகளில் தொடங்கி செயல்படுங்கள். வழங்குநர்களை இணைத்து, மாதிரிகளை வழிநடத்தி, அனைத்தையும் கண்காணியுங்கள்.", + "fullDocs": "முழு ஆவணங்கள்", + "step1Title": "1. API விசையை உருவாக்கவும்", "step1Desc": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "step2Title": "2. Connect providers", - "step2Desc": "Add accounts in Providers. Supports OAuth, API Key, and free tiers.", - "step3Title": "3. Point your client", - "step3Desc": "Set base URL to {url} in your IDE or API client.", - "step4Title": "4. Monitor & optimize", - "step4Desc": "Track tokens, cost and errors in Request Logs and Analytics.", - "providersOverview": "Providers Overview", - "configuredOf": "{configured} configured of {total} available providers", - "noModelsAvailable": "No models available for this provider.", + "step2Title": "2. வழங்குநர்களை இணைக்கவும்", + "step2Desc": "வழங்குநர்கள் பகுதியில் கணக்குகளைச் சேர்க்கவும். OAuth, API Key மற்றும் இலவச அடுக்குகளை ஆதரிக்கிறது.", + "step3Title": "3. உங்கள் கிளையன்ட்டைச் சுட்டிக்காட்டவும்", + "step3Desc": "உங்கள் IDE அல்லது API கிளையண்டில் அடிப்படை URL-ஐ {url} என அமைக்கவும்.", + "step4Title": "4. கண்காணித்து மேம்படுத்தவும்", + "step4Desc": "டோக்கன்கள், செலவு மற்றும் பிழைகளை கோரிக்கைப் பதிவுகள் மற்றும் பகுப்பாய்வு ஆகியவற்றில் கண்காணிக்கவும்.", + "providersOverview": "வழங்குநர்களின் கண்ணோட்டம்", + "configuredOf": "கிடைக்கக்கூடிய {total} வழங்குநர்களில் {configured} உள்ளமைக்கப்பட்டுள்ளன", + "noModelsAvailable": "இந்த வழங்குநருக்கு மாதிரிகள் எதுவும் கிடைக்கவில்லை.", "noProvidersConfigured": "வழங்குநர்கள் எதுவும் இதுவரை உள்ளமைக்கப்படவில்லை", "addProvider": "வழங்குநரைச் சேர்க்கவும்", - "configureFirst": "Configure a connection first in {providers}", - "configureProvider": "Configure Provider", - "modelAvailable": "{count} model available", - "modelsAvailable": "{count} models available", - "connectionsActive": "{count} connection active", - "connectionsActivePlural": "{count} connections active", - "copyModelName": "Copy model name", - "documentation": "Documentation", - "healthMonitor": "Health Monitor", - "reportIssue": "Report issue", - "activeError": "{active} active · {errors} error", - "topologyLegendActive": "__MISSING__:Active", - "topologyLegendRecent": "__MISSING__:Recent", - "topologyLegendError": "__MISSING__:Error", + "configureFirst": "முதலில் {providers} இல் ஓர் இணைப்பை உள்ளமைக்கவும்", + "configureProvider": "வழங்குநரை உள்ளமைக்கவும்", + "modelAvailable": "{count} மாதிரி கிடைக்கிறது", + "modelsAvailable": "{count} மாதிரிகள் கிடைக்கின்றன", + "connectionsActive": "{count} இணைப்பு செயலில் உள்ளது", + "connectionsActivePlural": "{count} இணைப்புகள் செயலில் உள்ளன", + "copyModelName": "மாதிரியின் பெயரை நகலெடுக்கவும்", + "documentation": "ஆவணங்கள்", + "healthMonitor": "நிலை கண்காணிப்பான்", + "reportIssue": "சிக்கலைப் புகாரளிக்கவும்", + "activeError": "{active} செயலில் · {errors} பிழை", + "topologyLegendActive": "செயலில்", + "topologyLegendRecent": "சமீபத்தியவை", + "topologyLegendError": "பிழை", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", - "requestsShort": "{count} reqs", - "providerModelsTitle": "{provider} - Models", - "copiedModel": "Copied: {model}", + "apiKeyLabel": "API விசை", + "requestsShort": "{count} கோரிக்கைகள்", + "providerModelsTitle": "{provider} - மாதிரிகள்", + "copiedModel": "நகலெடுக்கப்பட்டது: {model}", "aliasLabel": "alias", - "updateNow": "Update Now", - "updating": "Updating...", - "updateAvailableDesc": "A new version is available. Click to update.", - "updateStarted": "Update started...", + "updateNow": "இப்போது புதுப்பிக்கவும்", + "updating": "புதுப்பிக்கப்படுகிறது...", + "updateAvailableDesc": "புதிய பதிப்பு கிடைக்கிறது. புதுப்பிக்க கிளிக் செய்யவும்.", + "updateStarted": "புதுப்பிப்பு தொடங்கியது...", "reloadingPageAutomatically": "தானாக பக்கத்தை மீண்டும் ஏற்றுகிறது...", "providerTopology": "வழங்குநர் இடவியல்", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "சமீபத்திய கோரிக்கைகள்", + "recentRequestsEmpty": "இதுவரை கோரிக்கைகள் எதுவும் இல்லை.", + "recentRequestsModel": "மாதிரி", + "recentRequestsTokens": "உள்ளீடு / வெளியீடு", + "recentRequestsWhen": "எப்போது", "downloadDmg": "DMG ஐ பதிவிறக்கம் செய்யவும் (macOS)", "downloadDmgDescription": "OmniRoute டெஸ்க்டாப் செயலியின் புதிய பதிப்பு கிடைக்கிறது. தயவுசெய்து புதுப்பிக்க macOS DMG நிறுவுநரை பதிவிறக்கம் செய்து நிறுவவும் (தற்போதைய: v{version}).", "downloadExe": "EXE பதிவிறக்கம் (Windows)", @@ -1888,18 +1888,18 @@ "releaseNotes": "வெளியீட்டு குறிப்புகள்", "readMore": "மேலும் வாசிக்க", "noAuthLabel": "அங்கீகாரம் இல்லை", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "ரூட்டிங் செய்யத் தயாராகுங்கள்", + "readinessTitle": "உங்கள் முதல் கோரிக்கையை அனுப்பவும்", + "readinessSubtitle": "நான்கு சிறிய படிகள். நீங்கள் தொடரும்போது தயார்நிலையை OmniRoute சரிபார்க்கும்.", + "readinessStep1": "ஒரு வழங்குநரை இணைக்கவும்", + "readinessStep2": "இறுதிப்புள்ளி அங்கீகாரத்தை உள்ளமைக்கவும்", + "readinessStep3": "உங்கள் இறுதிப்புள்ளியை நகலெடுக்கவும்", + "readinessStep4": "ஒரு சோதனைக் கோரிக்கையை அனுப்பவும்", + "readinessContinue": "அமைப்பைத் தொடரவும்", + "readinessDismiss": "இப்போதைக்கு நிராகரிக்கவும்" }, "analytics": { - "title": "Analytics", + "title": "பகுப்பாய்வு", "usageAnalyticsTitle": "பயன்பாட்டு பகுப்பாய்வு", "diversityScoreTitle": "வழங்குநர் பன்முகத்தன்மை", "diversityScoreDesc": "சமீபத்திய டிராஃபிக் சாளரத்திற்கான வழங்குநர் செறிவு ஸ்னாப்ஷாட்.", @@ -1967,7 +1967,7 @@ "period7D": "7நா", "period30D": "30நா", "period90D": "90நா", - "periodYTD": "YTD", + "periodYTD": "ஆண்டின் தொடக்கம் முதல் இன்று வரை", "periodAll": "அனைத்தும்", "totalTokens": "மொத்த டோக்கன்கள்", "inputTokens": "உள்ளீட்டு டோக்கன்கள்", @@ -1990,21 +1990,21 @@ "highlightsDiversity": "பல்வகைமை", "highlightsFallbackRate": "ஃபால்பேக் விகிதம்", "customRange": "தனிப்பயன்", - "overviewDescription": "Monitor your API usage patterns, token consumption, costs, and activity trends across all providers and models.", - "evalsDescription": "Run evaluation suites to test and validate your LLM endpoints. Compare model quality, detect regressions, and benchmark latency.", - "overview": "Overview", - "evals": "Evals", + "overviewDescription": "அனைத்து வழங்குநர்கள் மற்றும் மாடல்களிலும் உங்கள் API பயன்பாட்டு முறைகள், டோக்கன் நுகர்வு, செலவுகள் மற்றும் செயல்பாட்டுப் போக்குகளைக் கண்காணிக்கவும்.", + "evalsDescription": "உங்கள் LLM முனைப்புள்ளிகளைச் சோதித்து உறுதிப்படுத்த மதிப்பீட்டுத் தொகுப்புகளை இயக்கவும். மாடல் தரத்தை ஒப்பிட்டு, பின்னடைவுகளைக் கண்டறிந்து, தாமதத்திற்கான தரஅளவீட்டை மேற்கொள்ளவும்.", + "overview": "மேலோட்டம்", + "evals": "மதிப்பீடுகள்", "search": "தேடு", - "utilization": "Utilization", + "utilization": "பயன்பாடு", "routeTrace": "பாதை தடம்", "sectionsAria": "பகுப்பாய்வு பிரிவுகள்", - "utilizationDescription": "Provider quota usage trends and rate limit tracking", - "modelStatus": "Model Status", - "modelStatusCooldown": "Cooldown", - "modelStatusUnavailable": "Unavailable", - "modelStatusError": "Error", - "comboHealth": "Combo Health", - "comboHealthDescription": "Combo-level quota, usage distribution, and performance metrics", + "utilizationDescription": "வழங்குநர் ஒதுக்கீட்டுப் பயன்பாட்டுப் போக்குகள் மற்றும் விகித வரம்புக் கண்காணிப்பு", + "modelStatus": "மாடல் நிலை", + "modelStatusCooldown": "காத்திருப்புக் காலம்", + "modelStatusUnavailable": "கிடைக்கவில்லை", + "modelStatusError": "பிழை", + "comboHealth": "காம்போ ஆரோக்கியம்", + "comboHealthDescription": "காம்போ-நிலை ஒதுக்கீடு, பயன்பாட்டுப் பகிர்வு மற்றும் செயல்திறன் அளவீடுகள்", "compressionAnalyticsTitle": "Compression", "compressionAnalyticsDescription": "Compression analytics - token savings, mode breakdown, and provider stats.", "autoRoutingTotalAutoRequests": "மொத்த தானியங்கு கோரிக்கைகள்", @@ -2237,55 +2237,55 @@ "freeTierAvailable": "இலவச அடுக்கு கிடைக்கிறது" }, "apiManager": { - "title": "API Keys", - "createKey": "Create API Key", - "key": "Key", - "revokeKey": "Revoke Key", - "revokeConfirm": "Are you sure you want to revoke this API key?", - "noKeys": "No API keys yet", - "noKeysDesc": "Create your first API key to authenticate requests to your endpoint", - "keyLabel": "Key Label", - "permissions": "Permissions", - "expiresAt": "Expires", - "never": "Never", - "revoke": "Revoke", - "showKey": "Show Key", - "hideKey": "Hide Key", - "copyKey": "Copy API Key", - "allModels": "All models", - "selectedModels": "Selected Models", - "readOnly": "Read Only", - "fullAccess": "Full Access", - "keyManagement": "API Key Management", - "keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "title": "API விசைகள்", + "createKey": "API விசையை உருவாக்கவும்", + "key": "விசை", + "revokeKey": "விசையைத் திரும்பப் பெறவும்", + "revokeConfirm": "இந்த API விசையைத் திரும்பப் பெற விரும்புகிறீர்களா?", + "noKeys": "இதுவரை API விசைகள் எதுவும் இல்லை", + "noKeysDesc": "உங்கள் முனைப்புள்ளிக்கான கோரிக்கைகளை அங்கீகரிக்க உங்கள் முதல் API விசையை உருவாக்கவும்", + "keyLabel": "விசை அடையாளப்பெயர்", + "permissions": "அனுமதிகள்", + "expiresAt": "காலாவதியாகும் நாள்", + "never": "ஒருபோதும் இல்லை", + "revoke": "திரும்பப் பெறவும்", + "showKey": "விசையைக் காட்டவும்", + "hideKey": "விசையை மறைக்கவும்", + "copyKey": "API விசையை நகலெடுக்கவும்", + "allModels": "அனைத்து மாடல்களும்", + "selectedModels": "தேர்ந்தெடுக்கப்பட்ட மாடல்கள்", + "readOnly": "வாசிக்க மட்டும்", + "fullAccess": "முழு அணுகல்", + "keyManagement": "API விசை மேலாண்மை", + "keyManagementDesc": "உங்கள் முனைப்புள்ளிக்கான கோரிக்கைகளை அங்கீகரிக்க API விசைகளை உருவாக்கி நிர்வகிக்கவும்", + "requestFlowAria": "உங்கள் செயலி API விசை மூலம் OmniRoute-க்கு கோரிக்கைகளை அனுப்புகிறது", + "requestFlowYourApp": "உங்கள் செயலி", + "requestFlowApiKey": "API விசை", "requestFlowOmniRoute": "OmniRoute", - "totalKeys": "Total Keys", - "restricted": "Restricted", - "totalRequests": "Total Requests", - "modelsAvailable": "Models Available", - "registeredKeys": "Registered Keys", - "keysRegistered": "{count} keys registered", - "keyRegistered": "{count} key registered", - "keysSecurityNote": "Each key isolates usage tracking and can be revoked independently. Keys are masked after creation for security.", - "createFirstKey": "Create Your First Key", - "name": "Name", - "usage": "Usage", - "created": "Created", - "actions": "Actions", - "reqs": "reqs", - "neverUsed": "Never used", - "deleteConfirm": "Delete this API key?", - "usageTips": "Usage Tips", - "tipAuth": "Use API keys in the Authorization header as Bearer YOUR_KEY", - "tipSecure": "Keys are only shown once during creation — store them securely", - "tipSeparate": "Create separate keys for different clients or environments", - "tipRestrict": "Restrict keys to specific models for better security and cost control", - "keyName": "Key Name", + "totalKeys": "மொத்த விசைகள்", + "restricted": "கட்டுப்படுத்தப்பட்டது", + "totalRequests": "மொத்த கோரிக்கைகள்", + "modelsAvailable": "கிடைக்கும் மாதிரிகள்", + "registeredKeys": "பதிவுசெய்யப்பட்ட விசைகள்", + "keysRegistered": "{count} விசைகள் பதிவுசெய்யப்பட்டுள்ளன", + "keyRegistered": "{count} விசை பதிவுசெய்யப்பட்டுள்ளது", + "keysSecurityNote": "ஒவ்வொரு விசையும் பயன்பாட்டுக் கண்காணிப்பைத் தனிமைப்படுத்துகிறது; மேலும், அவற்றைத் தனித்தனியாகத் திரும்பப்பெறலாம். பாதுகாப்பிற்காக, உருவாக்கிய பிறகு விசைகள் மறைக்கப்படும்.", + "createFirstKey": "உங்கள் முதல் விசையை உருவாக்கவும்", + "name": "பெயர்", + "usage": "பயன்பாடு", + "created": "உருவாக்கப்பட்டது", + "actions": "செயல்கள்", + "reqs": "கோரிக்கைகள்", + "neverUsed": "ஒருபோதும் பயன்படுத்தப்படவில்லை", + "deleteConfirm": "இந்த API விசையை நீக்கவா?", + "usageTips": "பயன்பாட்டுக் குறிப்புகள்", + "tipAuth": "Authorization தலைப்பில் API விசைகளை Bearer YOUR_KEY எனப் பயன்படுத்தவும்", + "tipSecure": "உருவாக்கும்போது விசைகள் ஒருமுறை மட்டுமே காட்டப்படும் — அவற்றைப் பாதுகாப்பாகச் சேமிக்கவும்", + "tipSeparate": "வெவ்வேறு கிளையன்ட்கள் அல்லது சூழல்களுக்குத் தனித்தனி விசைகளை உருவாக்கவும்", + "tipRestrict": "மேம்பட்ட பாதுகாப்பு மற்றும் செலவுக் கட்டுப்பாட்டிற்காக விசைகளைக் குறிப்பிட்ட மாதிரிகளுக்கு மட்டும் கட்டுப்படுத்தவும்", + "keyName": "விசையின் பெயர்", "keyNamePlaceholder": "e.g., Production Key, Development Key", - "keyNameDesc": "Choose a descriptive name to identify this key's purpose", + "keyNameDesc": "இந்த விசையின் நோக்கத்தை அடையாளம் காண விளக்கமான பெயரைத் தேர்ந்தெடுக்கவும்", "managementAccessDesc": "இந்த API விசைக்கு OmniRoute கட்டமைப்பை நிர்வகிக்க அனுமதி அளிக்கவும்.", "selfServiceVisibility": "சுயசேவை தெரிவுத்தன்மை", "selfServiceVisibilityDesc": "இந்த விசை தனது பயன்பாடு மற்றும் பகிரப்பட்ட upstream ஒதுக்கீடு குறித்து என்ன பார்க்கலாம் என்பதை கட்டுப்படுத்தவும்.", @@ -2296,83 +2296,83 @@ "localUsageCommand": "உள்ளூர் பயன்பாட்டுக் கட்டளையை அனுமதி", "localUsageCommandDesc": "அப்ஸ்ட்ரீம் வழங்குநரை அழைக்காமல், தற்காலிக சேமிப்பில் உள்ள பயன்பாடு மற்றும் ஒதுக்கீட்டுத் தகவலைப் பெற இந்த API key @@om-usage-ஐப் பயன்படுத்த அனுமதிக்கிறது.", "localUsageCommandBadge": "பயன்பாட்டு cmd", - "keyCreated": "API Key Created", - "keyCreatedSuccess": "Key created successfully!", - "keyCreatedNote": "Copy and store this key now — it won't be shown again.", - "done": "Done", - "savePermissions": "Save Permissions", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "keyCreated": "API விசை உருவாக்கப்பட்டது", + "keyCreatedSuccess": "விசை வெற்றிகரமாக உருவாக்கப்பட்டது!", + "keyCreatedNote": "இந்த விசையை இப்போதே நகலெடுத்துச் சேமிக்கவும் — இது மீண்டும் காட்டப்படாது.", + "done": "முடிந்தது", + "savePermissions": "அனுமதிகளைச் சேமிக்கவும்", + "endpointRestrictions": "அனுமதிக்கப்பட்ட இறுதிப்புள்ளிகள்", + "allEndpointsAllowed": "இந்த விசை அனைத்து API இறுதிப்புள்ளிகளையும் அணுகலாம்.", + "endpointsRestricted": "{count} இறுதிப்புள்ளி{count, plural, one {} other {களுக்கு}} மட்டும் கட்டுப்படுத்தப்பட்டுள்ளது.", + "autoResolve": "தானாகத் தீர்மானி", + "autoResolveDesc": "இந்த API விசைக்கான தெளிவற்ற மாதிரிப் பெயர்களை அசல் வழங்குநருக்குத் தானாகத் தீர்மானிக்கவும்.", "streamDefaultMode": "ஸ்ட்ரீம் இயல்புநிலை இணக்கத்தன்மை", "streamDefaultModeDesc": "இந்த key-க்கான விடுபட்ட `stream` கொடிகளைக் கட்டுப்படுத்துகிறது. கிளையன்ட் வெளிப்படையாக SSE-ஐக் கோராவிட்டால் JSON பயன்முறை ஸ்ட்ரீமிங் அல்லாத பதில்களை வழங்கும்.", "streamDefaultLegacy": "மரபுவழி", "streamDefaultJson": "JSON இணக்கமானது", "streamDefaultBadge": "JSON ஸ்ட்ரீம் இயல்புநிலை", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", - "allowAll": "Allow All", - "restrict": "Restrict", - "allowAllInfo": "This key can access all available models.", - "restrictInfo": "This key can access {selected} of {total} models.", - "selected": "{count} selected", - "all": "All", - "clear": "Clear", - "searchModels": "Search models by name or provider...", - "noModelsFound": "No models found", - "keyNameRequired": "Key name is required", - "keyNameTooLong": "Key name must be {max} characters or less", - "keyNameInvalid": "Key name can only contain letters, numbers, spaces, hyphens, and underscores", - "invalidKeyName": "Invalid key name", - "failedCreateKey": "Failed to create key", - "failedCreateKeyRetry": "Failed to create key. Please try again.", - "invalidKeyId": "Invalid key ID", - "failedDeleteKey": "Failed to delete key", - "failedDeleteKeyRetry": "Failed to delete key. Please try again.", - "invalidModelsSelection": "Invalid models selection", - "cannotSelectMoreThanModels": "Cannot select more than {max} models", - "failedUpdatePermissions": "Failed to update permissions", - "failedUpdatePermissionsRetry": "Failed to update permissions. Please try again.", - "unknownProvider": "unknown", - "copyMaskedKey": "Copy masked key", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyActive": "விசை செயலில் உள்ளது", + "keyActiveDesc": "இந்த API விசையை இயக்கவும் அல்லது முடக்கவும். முடக்கப்பட்ட விசைகள் 403 பிழையுடன் உடனடியாக நிராகரிக்கப்படும்.", + "accessSchedule": "அணுகல் அட்டவணை", + "accessScheduleDesc": "வாரத்தின் குறிப்பிட்ட மணிநேரங்கள் மற்றும் நாட்களுக்கு அணுகலைக் கட்டுப்படுத்தவும்.", + "scheduleFrom": "முதல்", + "scheduleUntil": "வரை", + "scheduleDays": "நாட்கள்", + "scheduleTimezone": "நேர மண்டலம்", + "scheduleTimezoneHint": "IANA நேர மண்டலப் பெயர்களைப் பயன்படுத்தவும், எ.கா. America/New_York, Europe/Berlin", + "scheduleActive": "அட்டவணை", + "disabled": "முடக்கப்பட்டது", + "daySun": "ஞாயி", + "dayMon": "திங்கள்", + "dayTue": "செவ்வாய்", + "dayWed": "புதன்", + "dayThu": "வியாழன்", + "dayFri": "வெள்ளி", + "daySat": "சனி", + "allowAll": "அனைத்தையும் அனுமதி", + "restrict": "கட்டுப்படுத்து", + "allowAllInfo": "இந்த விசையால் கிடைக்கக்கூடிய அனைத்து மாடல்களையும் அணுக முடியும்.", + "restrictInfo": "இந்த விசையால் {total} மாடல்களில் {selected} மாடல்களை அணுக முடியும்.", + "selected": "{count} தேர்ந்தெடுக்கப்பட்டன", + "all": "அனைத்தும்", + "clear": "அழி", + "searchModels": "பெயர் அல்லது வழங்குநரைக் கொண்டு மாடல்களைத் தேடவும்...", + "noModelsFound": "மாடல்கள் எதுவும் கிடைக்கவில்லை", + "keyNameRequired": "விசைப் பெயர் தேவை", + "keyNameTooLong": "விசைப் பெயர் {max} எழுத்துகள் அல்லது அதற்கும் குறைவாக இருக்க வேண்டும்", + "keyNameInvalid": "விசைப் பெயரில் எழுத்துகள், எண்கள், இடைவெளிகள், இணைப்புக்குறிகள் மற்றும் அடிக்கோடுகள் மட்டுமே இருக்கலாம்", + "invalidKeyName": "செல்லுபடியாகாத விசைப் பெயர்", + "failedCreateKey": "விசையை உருவாக்க முடியவில்லை", + "failedCreateKeyRetry": "விசையை உருவாக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "invalidKeyId": "செல்லுபடியாகாத விசை ID", + "failedDeleteKey": "விசையை நீக்க முடியவில்லை", + "failedDeleteKeyRetry": "விசையை நீக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "invalidModelsSelection": "செல்லுபடியாகாத மாடல் தேர்வு", + "cannotSelectMoreThanModels": "{max} மாடல்களுக்கு மேல் தேர்ந்தெடுக்க முடியாது", + "failedUpdatePermissions": "அனுமதிகளைப் புதுப்பிக்க முடியவில்லை", + "failedUpdatePermissionsRetry": "அனுமதிகளைப் புதுப்பிக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "unknownProvider": "தெரியாதது", + "copyMaskedKey": "மறைக்கப்பட்ட விசையை நகலெடு", + "keyOnlyAvailableAtCreation": "முழு விசை உருவாக்கும் நேரத்தில் மட்டுமே கிடைக்கும் — விசையை முதலில் உருவாக்கும்போதே அதை நகலெடுக்கவும்", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# சாதனம்} other {# சாதனங்கள்}}", "devicesTooltip": "{count, plural, one {இந்த key உடன் காணப்பட்ட # தனித்துவமான IP/User-Agent சாதனம் (கடந்த 30 நிமி)} other {இந்த key உடன் காணப்பட்ட # தனித்துவமான IP/User-Agent சாதனங்கள் (கடந்த 30 நிமி)}}", - "lastUsedOn": "Last: {date}", + "lastUsedOn": "கடைசியாக: {date}", "viewCostsFor": "{name}-க்கான செலவுகளைப் பார்க்கவும்", - "editPermissions": "Edit permissions", - "deleteKey": "Delete key", + "editPermissions": "அனுமதிகளைத் திருத்து", + "deleteKey": "விசையை நீக்கு", "regenerateKey": "மறுஉருவாக்கம் விசை", "regenerateConfirm": "இந்த API விசையை மீண்டும் உருவாக்க விரும்புகிறீர்களா? பழைய சாவி உடனடியாக செல்லாததாகிவிடும்.", "failedRegenerateKey": "API விசையை மீண்டும் உருவாக்க முடியவில்லை", "failedRegenerateKeyRetry": "API விசையை மீண்டும் உருவாக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", - "model": "{count} model", - "models": "{count} models", - "permissionsTitle": "Permissions: {name}", - "allowAllDesc": "This key can access all available models.", + "model": "{count} மாதிரி", + "models": "{count} மாதிரிகள்", + "permissionsTitle": "அனுமதிகள்: {name}", + "allowAllDesc": "இந்த விசை கிடைக்கக்கூடிய அனைத்து மாதிரிகளையும் அணுக முடியும்.", "restrictLoading": "மாடல் அட்டவணை ஏற்றப்படுகிறது…", "restrictCatalogUnavailable": "மாடல் அட்டவணை கிடைக்கவில்லை; இந்த key {selectedCount} தேர்ந்தெடுக்கப்பட்ட மாடல் கட்டுப்பாடுகளைக் கொண்டுள்ளது.", - "restrictDesc": "This key can access {selectedCount} of {totalModels} models.", - "selectedCount": "{count} selected", + "restrictDesc": "இந்த விசை {totalModels} மாதிரிகளில் {selectedCount} மாதிரிகளை அணுக முடியும்.", + "selectedCount": "{count} தேர்ந்தெடுக்கப்பட்டன", "maxActiveSessions": "அதிகபட்ச செயலில் உள்ள அமர்வுகள்", "maxActiveSessionsDescription": "0 = வரம்பற்றது. இந்த key ஒரே நேரத்தில் நிகழும் ஸ்டிக்கி அமர்வுகளை மீறும் போது 429-ஐ வழங்கவும்.", "throttleDelay": "த்ராட்டில் தாமதம்", @@ -2382,8 +2382,8 @@ "allowedCombos": "அனுமதிக்கப்பட்ட சேர்க்கைகள்", "allCombosAllowed": "இந்த key எந்த சேர்க்கையையும் பயன்படுத்தலாம்.", "restrictedComboCount": "{count, plural, one {# சேர்க்கைக்கு} other {# சேர்க்கைகளுக்கு}} மட்டுமே கட்டுப்படுத்தப்பட்டது.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {சேமிக்கப்பட்ட # பதிவு} other {சேமிக்கப்பட்ட # பதிவுகள்}} இந்தக் கூட்டுப் பட்டியலில் இல்லை (எடுத்துக்காட்டாக, வழித்தட விதிகள்), மேலும் அவை சேமிக்கப்பட்டபடியே வைக்கப்படும்.", + "preservedComboRuleHint": "சேமிக்கப்பட்டபடியே வைக்கப்பட்டது. இந்தப் பதிவு மேலே உள்ள பட்டியலில் ஒரு கூட்டுத் தேர்வு அல்ல, எனவே இதை API மூலம் மட்டுமே மாற்ற முடியும்.", "apiManagerCustomRateLimits": "விருப்ப விகித வரம்புகள்", "apiManagerCustomRateLimitsDesc": "உலகளாவிய இயல்புநிலை வரம்புகளை மீறு. இயல்புநிலைகளைப் பயன்படுத்த காலியாக விடவும்.", "apiManagerRateLimitRequestsPlaceholder": "கோரிக்கைகள்", @@ -2420,51 +2420,51 @@ "bypassProviderQuotaDescription": "ரூட்டிங்கின் போது அப்ஸ்ட்ரீம் வழங்குநர்/கணக்கு வரம்புக் கொள்கையைப் புறக்கணிக்க இந்த விசையை அனுமதிக்கிறது. API விசை USD ஒதுக்கீடுகள் தொடர்ந்து பொருந்தும்.", "quotaPill": "ஒதுக்கீடு", "quotaModeOnly": "qtSd-மட்டும்", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "பிரத்தியேக குத்தகை", + "exclusiveLeaseNoticeTitle": "பிரத்தியேக குத்தகை", + "exclusiveLeaseNoticeDesc": "பிரத்யேக இணைப்பு வழித்தடத்திற்கான பிரத்தியேக குத்தகை அனுமதிகள் இந்த API விசைக்கு உள்ளன.", + "allConnections": "அனைத்து இணைப்புகளும்", + "onlySelectedConnections": "தேர்ந்தெடுக்கப்பட்ட இணைப்புகள் மட்டும்", + "selectAtLeastOneConnection": "குறைந்தது ஓர் இணைப்பையாவது தேர்ந்தெடுக்கவும் அல்லது அனைத்து இணைப்புகளும் என்பதைத் தேர்வுசெய்யவும்.", + "allConnectionsDesc": "இந்த விசை செயலில் உள்ள எந்த இணைப்பையும் பயன்படுத்தலாம்.", + "restrictedToConnections": "{count, plural, one {# இணைப்புக்கு} other {# இணைப்புகளுக்கு}} வரையறுக்கப்பட்டுள்ளது." }, "auditLog": { - "title": "Audit Log", - "searchPlaceholder": "Search actions...", - "action": "Action", - "actor": "Actor", - "target": "Target", - "ipAddress": "IP Address", - "timestamp": "Timestamp", - "noEntries": "No audit entries found", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", + "title": "தணிக்கைப் பதிவு", + "searchPlaceholder": "செயல்களைத் தேடவும்...", + "action": "செயல்", + "actor": "செயல்படுத்தியவர்", + "target": "இலக்கு", + "ipAddress": "IP முகவரி", + "timestamp": "நேர முத்திரை", + "noEntries": "தணிக்கைப் பதிவுகள் எதுவும் கிடைக்கவில்லை", + "filterByAction": "செயலின்படி வடிகட்டவும்...", + "filterByActor": "செயல்படுத்தியவரின்படி வடிகட்டவும்...", + "filterEntriesAria": "தணிக்கைப் பதிவு உள்ளீடுகளை வடிகட்டவும்", + "filterByActionTypeAria": "செயல் வகையின்படி வடிகட்டவும்", + "filterByActorAria": "செயல்படுத்தியவரின்படி வடிகட்டவும்", + "refreshAuditLogAria": "தணிக்கைப் பதிவைப் புதுப்பிக்கவும்", + "tableAria": "தணிக்கைப் பதிவு உள்ளீடுகள்", + "failedFetchAuditLog": "தணிக்கைப் பதிவைப் பெற முடியவில்லை", "notAvailable": "—", - "description": "Administrative actions and security events", - "showing": "Showing {count} entries (offset {offset})", - "previous": "Previous" + "description": "நிர்வாகச் செயல்கள் மற்றும் பாதுகாப்பு நிகழ்வுகள்", + "showing": "{count} உள்ளீடுகள் காட்டப்படுகின்றன (தொடக்க இடம் {offset})", + "previous": "முந்தையது" }, "media": { - "title": "Media Playground", - "subtitle": "Generate images, videos, and music", + "title": "ஊடகப் பரிசோதனைக் களம்", + "subtitle": "படங்கள், காணொளிகள் மற்றும் இசையை உருவாக்கவும்", "model": "Model", "prompt": "Prompt", - "generate": "Generate", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generate": "உருவாக்கு", + "generating": "உருவாக்கப்படுகிறது...", + "loadingModels": "கிடைக்கும் மாதிரிகள் ஏற்றப்படுகின்றன...", + "noModels": "மாதிரிகள் எதுவும் கிடைக்கவில்லை. முதலில் ஊடகத் திறன்களைக் கொண்ட வழங்குநர்களை உள்ளமைக்கவும்.", + "error": "உருவாக்கம் தோல்வியடைந்தது", + "result": "முடிவு", + "imageDescription": "OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI மற்றும் பலவற்றைப் பயன்படுத்தி உரைத் தூண்டுதல்களிலிருந்து படங்களை உருவாக்கவும்.", + "videoDescription": "ComfyUI அல்லது SD WebUI வழியாக AnimateDiff, Stable Video Diffusion ஆகியவற்றைப் பயன்படுத்தி காணொளிகளை உருவாக்கவும்.", + "musicDescription": "ComfyUI வழியாக Stable Audio Open அல்லது MusicGen பயன்படுத்தி இசையமைக்கவும்.", "kinds": { "embedding": "உட்பொதித்தல்", "image": "படம்", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter பேச்சு-இலக்கணம் மாதிரிகள் உங்கள் கட்டமைக்கப்பட்ட OpenRouter இணைப்பைப் பயன்படுத்துகின்றன. தனித்துவமான அங்கீகாரம் தேவை இல்லை." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "தேடல் வினவல்", + "searchResults": "தேடல் முடிவுகள்", + "cachedResult": "தற்காலிகச் சேமிப்பிலுள்ளது", + "searchCost": "செலவு", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "வழங்குநர் ஒப்பீட்டுடன் கூடிய மேம்பட்ட தேடல் சோதனை", + "compareProviders": "வழங்குநர்களை ஒப்பிடுக", + "rerankResults": "முடிவுகளை மறுதரவரிசைப்படுத்துக", + "searchHistory": "தேடல் வரலாறு", + "urlOverlap": "URL ஒன்றுடன் ஒன்று பொருந்துதல்", + "noSearchProviders": "தேடல் வழங்குநர்கள் எதுவும் உள்ளமைக்கப்படவில்லை. Settings-இல் வழங்குநர்களைச் சேர்க்கவும்.", + "noRerankModels": "மறுதரவரிசைப்படுத்தும் மாதிரி எதுவும் கிடைக்கவில்லை", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "வழங்குநர்", + "searchType": "தேடல் வகை", + "maxResults": "அதிகபட்ச முடிவுகள்", + "filters": "வடிப்பான்கள்", + "country": "நாடு", + "language": "மொழி", + "timeRange": "கால வரம்பு", + "includeDomains": "சேர்க்க வேண்டிய டொமைன்கள்", + "excludeDomains": "விலக்க வேண்டிய டொமைன்கள்", + "safeSearch": "பாதுகாப்பான தேடல்", + "safeSearchOff": "முடக்கம்", + "safeSearchModerate": "மிதமானது", + "safeSearchStrict": "கடுமையானது", + "queryPlaceholder": "தேடல் வினவலை உள்ளிடவும்...", + "providerAuto": "தானியங்கு (மலிவானது)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "செய்திகள்", + "optionAny": "ஏதேனும்", + "timeRangeDay": "கடந்த நாள்", + "timeRangeWeek": "கடந்த வாரம்", + "timeRangeMonth": "கடந்த மாதம்", + "timeRangeYear": "கடந்த ஆண்டு", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "கோரிக்கைக்கான நேரம் முடிந்தது ({seconds}s)", + "networkError": "பிணையப் பிழை", + "formatted": "வடிவமைக்கப்பட்டது", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "தற்காலிகச் சேமிப்பில் இல்லை", + "cacheHit": "தற்காலிகச் சேமிப்பில் உள்ளது", + "latency": "தாமதம்", + "cost": "செலவு", + "results": "முடிவுகள்", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "மறுவரிசைப்படுத்தல் மாடல்", + "positionDelta": "நிலை மாற்றம்", + "emptyState": "முடிவுகளைப் பார்க்க ஒரு தேடல் வினவலை அனுப்பவும்", "copy": "நகலெடுக்கவும்", "resetToDefault": "இயல்புநிலைக்கு மீட்டமைக்கவும்", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "தேடு", + "tabScrape": "தரவைப் பிரித்தெடு", + "tabCompare": "ஒப்பிடு", + "modalitiesGuide": "செயல்முறை வகைகள் வழிகாட்டி", + "searchConceptTitle": "தேடல்", + "searchConceptDesc": "தேடல் = இணைய முடிவுகளின் பட்டியலைப் பெறுகிறது (தலைப்பு, URL, துணுக்கு, பொருத்த மதிப்பெண்)", + "scrapeConceptTitle": "தரவைப் பிரித்தெடுத்தல்", + "scrapeConceptDesc": "தரவைப் பிரித்தெடுத்தல் = ஒரு URL-இன் முழு உள்ளடக்கத்தையும் பிரித்தெடுக்கிறது (markdown, உரை அல்லது HTML)", + "compareConceptTitle": "ஒப்பீடு", + "compareConceptDesc": "ஒப்பீடு = தாமதம், செலவு மற்றும் முடிவுகளின் ஒத்திசைவை ஒப்பிட, ஒரே வினவலை N வழங்குநர்களில் அருகருகே இயக்குகிறது", + "rerankConceptTitle": "மறுவரிசைப்படுத்து", + "rerankConceptDesc": "மறுவரிசைப்படுத்தல் = வினவலின் அடிப்படையில் பொருத்தத்தை மேம்படுத்த, LLM வழியாக முடிவுகளை மறுவரிசைப்படுத்துகிறது", + "autoConceptTitle": "தானியங்கு (மலிவானது)", + "autoConceptDesc": "தானியங்கு (மலிவானது) = உள்ளமைக்கப்பட்ட நற்சான்றுகளைக் கொண்ட, கிடைக்கக்கூடிய மிக மலிவான வழங்குநரைத் தானாகத் தேர்ந்தெடுக்கிறது", + "providerCatalogTitle": "வழங்குநர் பட்டியல்", + "kindSearch": "தேடல்", + "kindFetch": "பெறுதல்/தரவைப் பிரித்தெடுத்தல்", + "statusConfigured": "உள்ளமைக்கப்பட்டது", + "statusMissing": "நற்சான்று இல்லை", + "statusRateLimited": "வீத வரம்பு விதிக்கப்பட்டுள்ளது", + "configureProvider": "வழங்குநர்களில் உள்ளமைக்கவும்", + "loadingProviders": "வழங்குநர்கள் ஏற்றப்படுகின்றனர்…", + "failedToLoadProviders": "வழங்குநர்களை ஏற்ற முடியவில்லை", + "costPerQuery": "வினவலுக்கான செலவு", + "freeQuota": "மாதத்திற்கான இலவச ஒதுக்கீடு", + "scrapeUrl": "தரவைப் பிரித்தெடுக்க வேண்டிய URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL தேவை", "scrapeUrlInvalid": "தவறான URL — இது http:// அல்லது https:// உடன் தொடங்க வேண்டும்", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "பிரித்தெடு", + "scrapeExtracting": "பிரித்தெடுக்கப்படுகிறது…", + "scrapeFullPage": "முழுப் பக்கம்", + "scrapeFormat": "வடிவம்", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "உரை", + "scrapePreview": "முன்னோட்டம்", + "scrapeRaw": "மூல வடிவம்", + "scrapeContentTruncated": "(சுருக்கப்பட்டது, மூல வடிவத்தைப் பார்க்கவும்)", + "scrapeMetadata": "மெட்டாடேட்டா", + "scrapeProvider": "வழங்குநர்", + "scrapeSize": "அளவு", "scrapeEmptyState": "அதன் உள்ளடக்கத்தைப் பிரித்தெடுக்க ஒரு URL-ஐ உள்ளிடவும்", "scrapeProvidersAvailable": "கிடைக்கும் வழங்குநர்கள்: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "ஒப்பிடு", + "compareRunning": "ஒப்பிடுகிறது…", + "autoProvider": "தானியங்கு (மிக மலிவானது)", + "configuredStatus": "உள்ளமைக்கப்பட்டது", + "rateLimitedStatus": "விகித வரம்பிற்குட்பட்டது", + "noCredential": "நற்சான்று இல்லை", + "searchTypeLabel": "வகை", + "rerankModelLabel": "மறுதரவரிசைப்படுத்தல் மாதிரி", + "noneOption": "எதுவுமில்லை", + "size": "அளவு", "configurationPane": "கட்டமைப்பு பலகம்", "configuration": "கட்டமைப்பு", "status": "நிலை", @@ -2701,7 +2701,7 @@ "compareEmptyDescription": "முடிவுகள் தாமதம், செலவு மற்றும் URL மேலடுக்கு ஆகியவற்றுடன் அருகருகே காட்டப்படும்" }, "cliTools": { - "title": "CLI Tools", + "title": "CLI கருவிகள்", "classifierCompatTitle": "தானியங்கு-அனுமதி வகைப்படுத்தி இணக்கத்தன்மை", "classifierCompatDescription": "ஃபால்பேக் வழிகள் மூடப்பட்டு தோல்வியடையாமல் இருக்க, Claude Code-இன் --permission-mode auto பாதுகாப்பு வகைப்படுத்தியை ஒரு செயற்கை அனுமதி பதிலுடன் ஷார்ட்-சர்க்யூட் செய்யவும். இயல்பாக முடக்கப்பட்டுள்ளது.", "classifierCompatCycle": "சுழற்சி: off → auto → always", @@ -2727,14 +2727,14 @@ "codexProfilesDescription": "மாதிரி கண்டறிதலுக்குப் பிறகு ~/.codex/*.config.toml-ஐ மீண்டும் உருவாக்கவும்.", "claudeProfiles": "Claude Code சுயவிவரங்கள்", "claudeProfilesDescription": "மாதிரி கண்டறிதலுக்குப் பிறகு ஒவ்வொரு ~/.claude/profiles/…/settings.json-ஐயும் மீண்டும் உருவாக்கவும்.", - "noActiveProviders": "No active providers", - "noActiveProvidersDesc": "Please add and connect providers first to configure CLI tools.", - "mapModels": "Map Models", - "testConnection": "Test Connection", - "connectionStatus": "Connection Status", - "configureEndpoint": "Configure Endpoint", - "instructions": "Instructions", - "modelMapping": "Model Mapping", + "noActiveProviders": "செயலில் உள்ள வழங்குநர்கள் இல்லை", + "noActiveProvidersDesc": "CLI கருவிகளை உள்ளமைக்க, முதலில் வழங்குநர்களைச் சேர்த்து இணைக்கவும்.", + "mapModels": "மாதிரிகளைப் பொருத்து", + "testConnection": "இணைப்பைச் சோதி", + "connectionStatus": "இணைப்பு நிலை", + "configureEndpoint": "முனைப்புள்ளியை உள்ளமை", + "instructions": "வழிமுறைகள்", + "modelMapping": "மாதிரிப் பொருத்தம்", "reasoningEffort": "{model}-க்கான பகுத்தறியும் முயற்சி", "effortNone": "எதுவுமில்லை", "effortLow": "குறைவு", @@ -2747,62 +2747,62 @@ "modelAliases": "மாதிரி மாற்றுப்பெயர்கள்", "addModel": "மாதிரியைச் சேர்", "routeModelPlaceholder": "{model}-ஐ இதற்கு வழிப்படுத்து...", - "baseUrl": "Base URL", - "apiKey": "API Key", - "configured": "Configured", - "notConfigured": "Not configured", - "notInstalled": "Not installed", - "custom": "Custom", - "unknown": "Unknown", - "lastSavedAt": "Last saved: {date}", - "never": "Never", - "justNow": "just now", - "minutesAgoShort": "{count}m ago", - "hoursAgoShort": "{count}h ago", - "daysAgoShort": "{count}d ago", - "monthsAgoShort": "{count}mo ago", - "yearsAgoShort": "{count}y ago", - "runtimeCheckFailed": "Runtime check failed", + "baseUrl": "அடிப்படை URL", + "apiKey": "API விசை", + "configured": "உள்ளமைக்கப்பட்டது", + "notConfigured": "உள்ளமைக்கப்படவில்லை", + "notInstalled": "நிறுவப்படவில்லை", + "custom": "தனிப்பயன்", + "unknown": "தெரியவில்லை", + "lastSavedAt": "கடைசியாகச் சேமிக்கப்பட்டது: {date}", + "never": "ஒருபோதும் இல்லை", + "justNow": "இப்போதுதான்", + "minutesAgoShort": "{count} நிமிடங்களுக்கு முன்பு", + "hoursAgoShort": "{count} மணிநேரங்களுக்கு முன்பு", + "daysAgoShort": "{count} நாட்களுக்கு முன்பு", + "monthsAgoShort": "{count} மாதங்களுக்கு முன்பு", + "yearsAgoShort": "{count} ஆண்டுகளுக்கு முன்பு", + "runtimeCheckFailed": "இயக்கநேரச் சரிபார்ப்பு தோல்வியடைந்தது", "yourApiKeyPlaceholder": "your-api-key", "modelPlaceholder": "provider/model-id", - "configurationSaved": "Configuration saved successfully.", - "failedToSave": "Failed to save configuration.", - "noApiKeysCreateOne": "No API keys - Create one in Keys page", - "defaultOmnirouteKey": "sk_omniroute (default)", - "selectModel": "Select Model", - "selectModelForAlias": "Select model for {alias}", - "selectModelForTool": "Select Model for {tool}", - "select": "Select", - "clear": "Clear", - "comingSoon": "Coming soon", - "checkingRuntime": "Checking runtime status...", - "guideOnlyIntegration": "Guide-only integration (no local runtime required)", - "cliRuntimeDetected": "CLI runtime detected and ready", - "cliFoundNotRunnable": "CLI found but not runnable{reason}", - "cliRuntimeNotDetected": "CLI runtime not detected", - "binary": "Binary", - "configPath": "Config path", - "configPathShort": "Config", - "failedCheckRuntimeStatus": "Failed to check runtime status.", - "copy": "Copy", - "copied": "Copied", - "copyConfig": "Copy Config", - "saveConfig": "Save Config", - "selectionSaved": "Selection saved", - "guide": "Guide", - "detected": "Detected", - "notReady": "Not ready", - "active": "Active", - "inactive": "Inactive", + "configurationSaved": "உள்ளமைவு வெற்றிகரமாகச் சேமிக்கப்பட்டது.", + "failedToSave": "உள்ளமைவைச் சேமிக்க முடியவில்லை.", + "noApiKeysCreateOne": "API விசைகள் இல்லை - Keys பக்கத்தில் ஒன்றை உருவாக்கவும்", + "defaultOmnirouteKey": "sk_omniroute (இயல்புநிலை)", + "selectModel": "மாதிரியைத் தேர்ந்தெடுக்கவும்", + "selectModelForAlias": "{alias} என்பதற்கான மாதிரியைத் தேர்ந்தெடுக்கவும்", + "selectModelForTool": "{tool} என்பதற்கான மாதிரியைத் தேர்ந்தெடுக்கவும்", + "select": "தேர்ந்தெடுக்கவும்", + "clear": "அழிக்கவும்", + "comingSoon": "விரைவில் வருகிறது", + "checkingRuntime": "இயக்கநேர நிலை சரிபார்க்கப்படுகிறது...", + "guideOnlyIntegration": "வழிகாட்டி மட்டுமே கொண்ட ஒருங்கிணைப்பு (உள்ளூர் இயக்கநேரம் தேவையில்லை)", + "cliRuntimeDetected": "CLI இயக்கநேரம் கண்டறியப்பட்டு தயாராக உள்ளது", + "cliFoundNotRunnable": "CLI கண்டறியப்பட்டது, ஆனால் இயக்க முடியவில்லை{reason}", + "cliRuntimeNotDetected": "CLI இயக்கநேரம் கண்டறியப்படவில்லை", + "binary": "இருமக் கோப்பு", + "configPath": "உள்ளமைவுப் பாதை", + "configPathShort": "உள்ளமைவு", + "failedCheckRuntimeStatus": "இயக்கநேர நிலையைச் சரிபார்க்க முடியவில்லை.", + "copy": "நகலெடுக்கவும்", + "copied": "நகலெடுக்கப்பட்டது", + "copyConfig": "உள்ளமைவை நகலெடுக்கவும்", + "saveConfig": "உள்ளமைவைச் சேமிக்கவும்", + "selectionSaved": "தேர்வு சேமிக்கப்பட்டது", + "guide": "வழிகாட்டி", + "detected": "கண்டறியப்பட்டது", + "notReady": "தயாராக இல்லை", + "active": "செயலில் உள்ளது", + "inactive": "செயலில் இல்லை", "startMitm": "Start MITM", "stopMitm": "Stop MITM", - "mitmStarted": "MITM started successfully!", - "mitmStopped": "MITM stopped successfully!", - "failedStart": "Failed to start MITM", - "failedStop": "Failed to stop MITM", - "saveMappings": "Save Mappings", - "mappingsSaved": "Mappings saved!", - "failedSaveMappings": "Failed to save mappings", + "mitmStarted": "MITM வெற்றிகரமாகத் தொடங்கப்பட்டது!", + "mitmStopped": "MITM வெற்றிகரமாக நிறுத்தப்பட்டது!", + "failedStart": "MITM-ஐத் தொடங்க முடியவில்லை", + "failedStop": "MITM-ஐ நிறுத்த முடியவில்லை", + "saveMappings": "மேப்பிங்குகளைச் சேமி", + "mappingsSaved": "மேப்பிங்குகள் சேமிக்கப்பட்டன!", + "failedSaveMappings": "மேப்பிங்குகளைச் சேமிக்க முடியவில்லை", "reasoningEffortDefault": "இயல்புநிலை", "reasoningEffortHint": "முகவரால் அனுப்பப்பட்ட பகுத்தறியும் முயற்சியை இயல்புநிலை பாதுகாக்கிறது", "reasoningEffortTier": { @@ -2812,130 +2812,130 @@ "high": "அதிகம்", "xhigh": "மிகவும் அதிகம்" }, - "howItWorks": "How it works:", - "antigravityHowWorksDesc": "Antigravity sends requests to Google's endpoint. MITM intercepts and redirects them to OmniRoute.", - "antigravityStep1": "1. Start MITM to route requests through OmniRoute.", - "antigravityStep2Prefix": "2. Add", - "antigravityStep2Suffix": "to your hosts file as 127.0.0.1.", - "antigravityStep3": "3. Open Antigravity and requests will be proxied.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", - "sudoPasswordRequiredTitle": "Sudo Password Required", - "sudoPasswordHint": "Administrator password is required to modify hosts file and system proxy settings.", - "enterSudoPassword": "Enter sudo password", - "sudoPasswordRequiredError": "Sudo password is required.", - "cancel": "Cancel", - "confirm": "Confirm", - "settingsApplied": "Settings applied successfully!", - "failedApplySettings": "Failed to apply settings", - "settingsReset": "Settings reset successfully!", - "failedResetSettings": "Failed to reset settings", - "backupRestored": "Backup restored!", - "failedRestore": "Failed to restore", - "checkingCli": "Checking {tool} CLI...", - "cliNotRunnable": "{tool} CLI installed but not runnable", - "cliNotInstalled": "{tool} CLI not installed", - "cliNotDetected": "{tool} CLI not detected", - "cliDetectedReady": "{tool} CLI detected and ready", - "cliFoundFailedHealthcheck": "{tool} CLI was found but failed runtime healthcheck{reason}.", - "installCliPrompt": "Please install {tool} CLI to use this feature.", - "installCodexPrompt": "Please install Codex CLI to use auto-apply feature.", - "hide": "Hide", - "howToInstall": "How to Install", - "installationGuide": "Installation Guide", + "howItWorks": "இது செயல்படும் விதம்:", + "antigravityHowWorksDesc": "Antigravity, Google's endpoint-க்கு கோரிக்கைகளை அனுப்புகிறது. MITM அவற்றை இடைமறித்து OmniRoute-க்கு திருப்பிவிடுகிறது.", + "antigravityStep1": "1. OmniRoute வழியாகக் கோரிக்கைகளை அனுப்ப MITM-ஐத் தொடங்கவும்.", + "antigravityStep2Prefix": "2. உங்கள் hosts கோப்பில்", + "antigravityStep2Suffix": "என்பதை 127.0.0.1 ஆகச் சேர்க்கவும்.", + "antigravityStep3": "3. Antigravity-ஐத் திறக்கவும்; கோரிக்கைகள் ப்ராக்ஸி வழியாக அனுப்பப்படும்.", + "mitmHowWorksDesc": "{toolName}, அதன் provider endpoint-க்கு கோரிக்கைகளை அனுப்புகிறது. MITM அவற்றை இடைமறித்து OmniRoute-க்கு திருப்பிவிடுகிறது.", + "mitmStep1": "1. OmniRoute வழியாகக் கோரிக்கைகளை அனுப்ப MITM-ஐத் தொடங்கவும்.", + "mitmStep2Prefix": "2. உங்கள் hosts கோப்பில்", + "mitmStep2Suffix": "என்பதை 127.0.0.1 ஆகச் சேர்க்கவும்.", + "mitmStep3": "3. {toolName}-ஐத் திறக்கவும்; கோரிக்கைகள் ப்ராக்ஸி வழியாக அனுப்பப்படும்.", + "sudoPasswordRequiredTitle": "Sudo கடவுச்சொல் தேவை", + "sudoPasswordHint": "hosts கோப்பையும் கணினியின் ப்ராக்ஸி அமைப்புகளையும் மாற்ற நிர்வாகி கடவுச்சொல் தேவை.", + "enterSudoPassword": "sudo கடவுச்சொல்லை உள்ளிடவும்", + "sudoPasswordRequiredError": "Sudo கடவுச்சொல் தேவை.", + "cancel": "ரத்துசெய்", + "confirm": "உறுதிப்படுத்து", + "settingsApplied": "அமைப்புகள் வெற்றிகரமாகப் பயன்படுத்தப்பட்டன!", + "failedApplySettings": "அமைப்புகளைப் பயன்படுத்த முடியவில்லை", + "settingsReset": "அமைப்புகள் வெற்றிகரமாக மீட்டமைக்கப்பட்டன!", + "failedResetSettings": "அமைப்புகளை மீட்டமைக்க முடியவில்லை", + "backupRestored": "காப்புப்பிரதி மீட்டெடுக்கப்பட்டது!", + "failedRestore": "மீட்டெடுக்க முடியவில்லை", + "checkingCli": "{tool} CLI சரிபார்க்கப்படுகிறது...", + "cliNotRunnable": "{tool} CLI நிறுவப்பட்டுள்ளது, ஆனால் அதை இயக்க முடியவில்லை", + "cliNotInstalled": "{tool} CLI நிறுவப்படவில்லை", + "cliNotDetected": "{tool} CLI கண்டறியப்படவில்லை", + "cliDetectedReady": "{tool} CLI கண்டறியப்பட்டு தயாராக உள்ளது", + "cliFoundFailedHealthcheck": "{tool} CLI கண்டறியப்பட்டது, ஆனால் இயக்கநேர நலச் சரிபார்ப்பில் தோல்வியடைந்தது{reason}.", + "installCliPrompt": "இந்த அம்சத்தைப் பயன்படுத்த {tool} CLI-ஐ நிறுவவும்.", + "installCodexPrompt": "தானாகப் பயன்படுத்தும் அம்சத்தைப் பயன்படுத்த Codex CLI-ஐ நிறுவவும்.", + "hide": "மறை", + "howToInstall": "நிறுவுவது எப்படி", + "installationGuide": "நிறுவல் வழிகாட்டி", "platforms": "macOS / Linux / Windows:", - "afterInstallationRun": "After installation, run", - "toVerify": "to verify.", - "current": "Current", + "afterInstallationRun": "நிறுவிய பிறகு, இயக்கவும்", + "toVerify": "சரிபார்க்க.", + "current": "தற்போதையது", "baseUrlPlaceholder": "https://.../v1", - "resetToDefault": "Reset to default", + "resetToDefault": "இயல்புநிலைக்கு மீட்டமை", "providerModelPlaceholder": "provider/model-id", - "apply": "Apply", - "reset": "Reset", - "manualConfig": "Manual Config", - "backups": "Backups", - "configBackups": "Config Backups", - "noBackupsYet": "No backups yet. Backups are created automatically before each Apply or Reset.", - "restore": "Restore", - "backupRestoredReloading": "Backup restored! Reloading status...", - "failedRestoreBackup": "Failed to restore backup", - "applied": "Applied!", - "failed": "Failed", - "resetDone": "Reset!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute is configured as OpenAI-compatible provider", - "provider": "Provider", + "apply": "செயல்படுத்து", + "reset": "மீட்டமை", + "manualConfig": "கைமுறை உள்ளமைவு", + "backups": "காப்புப்பிரதிகள்", + "configBackups": "உள்ளமைவு காப்புப்பிரதிகள்", + "noBackupsYet": "இதுவரை காப்புப்பிரதிகள் எதுவும் இல்லை. ஒவ்வொரு செயல்படுத்தல் அல்லது மீட்டமைத்தலுக்கு முன்பும் காப்புப்பிரதிகள் தானாக உருவாக்கப்படும்.", + "restore": "மீட்டெடு", + "backupRestoredReloading": "காப்புப்பிரதி மீட்டெடுக்கப்பட்டது! நிலை மீண்டும் ஏற்றப்படுகிறது...", + "failedRestoreBackup": "காப்புப்பிரதியை மீட்டெடுக்க முடியவில்லை", + "applied": "செயல்படுத்தப்பட்டது!", + "failed": "தோல்வியடைந்தது", + "resetDone": "மீட்டமைக்கப்பட்டது!", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute ஆனது OpenAI-இணக்கமான வழங்குநராக உள்ளமைக்கப்பட்டுள்ளது", + "provider": "வழங்குநர்", "model": "Model", - "providers": "Providers", - "auth": "Auth", - "noApiKeysAvailable": "No API keys available", - "usingDefaultOmniroute": "Using default: sk_omniroute", - "updateConfig": "Update Config", - "applyConfig": "Apply Config", - "noBackupsAvailable": "No backups available.", - "profileSaved": "Profile \"{name}\" saved!", - "failedSaveProfile": "Failed to save profile", - "profileActivated": "Profile activated!", - "failedActivateProfile": "Failed to activate profile", - "profiles": "Profiles", - "savedProfiles": "Saved Profiles", - "noProfilesYet": "No profiles saved yet. Save current config as a profile below.", - "activate": "Activate", - "deleteProfile": "Delete profile", - "profileNamePlaceholder": "Profile name (e.g. Personal Account)", - "saveCurrent": "Save Current", - "codexAuthNotePrefix": "Codex uses", - "codexAuthNoteMiddle": "with", - "codexAuthNoteSuffix": "Click \"Apply\" to auto-configure.", - "claudeManualConfiguration": "Claude CLI - Manual Configuration", - "codexManualConfiguration": "Codex CLI - Manual Configuration", - "droidManualConfiguration": "Factory Droid - Manual Configuration", - "openClawManualConfiguration": "Open Claw - Manual Configuration", - "clineManualConfiguration": "Cline Manual Configuration", - "kiloManualConfiguration": "Kilo Code Manual Configuration", - "whenToUseLabel": "When to use", - "openToolDocs": "Open tool docs", + "providers": "வழங்குநர்கள்", + "auth": "அங்கீகாரம்", + "noApiKeysAvailable": "API விசைகள் எதுவும் கிடைக்கவில்லை", + "usingDefaultOmniroute": "இயல்புநிலை பயன்படுத்தப்படுகிறது: sk_omniroute", + "updateConfig": "உள்ளமைவைப் புதுப்பி", + "applyConfig": "உள்ளமைவைச் செயல்படுத்து", + "noBackupsAvailable": "காப்புப்பிரதிகள் எதுவும் கிடைக்கவில்லை.", + "profileSaved": "\"{name}\" சுயவிவரம் சேமிக்கப்பட்டது!", + "failedSaveProfile": "சுயவிவரத்தைச் சேமிக்க முடியவில்லை", + "profileActivated": "சுயவிவரம் செயல்படுத்தப்பட்டது!", + "failedActivateProfile": "சுயவிவரத்தைச் செயல்படுத்த முடியவில்லை", + "profiles": "சுயவிவரங்கள்", + "savedProfiles": "சேமிக்கப்பட்ட சுயவிவரங்கள்", + "noProfilesYet": "இதுவரை சுயவிவரங்கள் எதுவும் சேமிக்கப்படவில்லை. தற்போதைய உள்ளமைவைக் கீழே ஒரு சுயவிவரமாகச் சேமிக்கவும்.", + "activate": "செயல்படுத்து", + "deleteProfile": "சுயவிவரத்தை நீக்கு", + "profileNamePlaceholder": "சுயவிவரப் பெயர் (எ.கா. தனிப்பட்ட கணக்கு)", + "saveCurrent": "தற்போதையதைச் சேமி", + "codexAuthNotePrefix": "Codex பயன்படுத்துவது", + "codexAuthNoteMiddle": "உடன்", + "codexAuthNoteSuffix": "தானாக உள்ளமைக்க \"செயல்படுத்து\" என்பதைக் கிளிக் செய்யவும்.", + "claudeManualConfiguration": "Claude CLI - கைமுறை உள்ளமைவு", + "codexManualConfiguration": "Codex CLI - கைமுறை உள்ளமைவு", + "droidManualConfiguration": "Factory Droid - கைமுறை உள்ளமைவு", + "openClawManualConfiguration": "Open Claw - கைமுறை உள்ளமைவு", + "clineManualConfiguration": "Cline கைமுறை உள்ளமைவு", + "kiloManualConfiguration": "Kilo Code கைமுறை உள்ளமைவு", + "whenToUseLabel": "எப்போது பயன்படுத்த வேண்டும்", + "openToolDocs": "கருவியின் ஆவணங்களைத் திறக்கவும்", "toolUseCases": { - "claude": "Use when you want strong planning workflows and long multi-file refactors with Claude Code.", - "codex": "Use when your team is standardized on OpenAI Codex CLI flows and profile-based auth.", - "droid": "Use when you need a lightweight terminal agent focused on fast coding and command execution loops.", - "openclaw": "Use when you want an Open Claw style coding agent but routed through OmniRoute policies.", - "cline": "Use when you configure coding agents inside editors and want guided setup with OmniRoute models.", - "kilo": "Use when your workflow depends on Kilo Code commands and fast iterative edits.", - "cursor": "Use when coding in Cursor and you need custom OpenAI-compatible models through OmniRoute.", - "continue": "Use when running Continue in IDEs and you need portable JSON-based provider configuration.", - "opencode": "Use when you prefer terminal-native agent runs and scripted automation via OpenCode.", - "kiro": "Use when integrating Kiro and controlling model routing centrally from OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", - "antigravity": "Use when Antigravity/Kiro traffic must be intercepted through MITM and routed to OmniRoute.", - "copilot": "Use when you want Copilot chat style UX while enforcing OmniRoute keys and routing rules.", - "amp": "Use when you want Amp shorthand workflows but still need OmniRoute alias and routing rules enforcement.", - "hermes": "Use when you need a lightweight terminal-native AI assistant for quick tasks.", + "claude": "Claude Code உடன் வலுவான திட்டமிடல் பணிப்பாய்வுகளையும், பல கோப்புகளில் நீண்ட மறுசீரமைப்புகளையும் மேற்கொள்ள விரும்பும்போது பயன்படுத்தவும்.", + "codex": "உங்கள் குழு OpenAI Codex CLI பணிப்பாய்வுகள் மற்றும் சுயவிவர அடிப்படையிலான அங்கீகாரத்தைத் தரநிலையாகப் பயன்படுத்தும்போது இதைப் பயன்படுத்தவும்.", + "droid": "வேகமான குறியீட்டாக்கம் மற்றும் கட்டளை இயக்கச் சுழற்சிகளில் கவனம் செலுத்தும் இலகுரக டெர்மினல் முகவர் தேவைப்படும்போது பயன்படுத்தவும்.", + "openclaw": "Open Claw பாணியிலான குறியீட்டாக்க முகவரை OmniRoute கொள்கைகள் வழியாகத் திருப்பிப் பயன்படுத்த விரும்பும்போது இதைப் பயன்படுத்தவும்.", + "cline": "எடிட்டர்களுக்குள் குறியீட்டாக்க முகவர்களை உள்ளமைத்து, OmniRoute மாதிரிகளுடன் வழிகாட்டப்பட்ட அமைப்பை விரும்பும்போது பயன்படுத்தவும்.", + "kilo": "உங்கள் பணிப்பாய்வு Kilo Code கட்டளைகள் மற்றும் வேகமான தொடர் திருத்தங்களைச் சார்ந்திருக்கும்போது பயன்படுத்தவும்.", + "cursor": "Cursor-இல் குறியீடு எழுதும்போது, OmniRoute வழியாகத் தனிப்பயன் OpenAI-இணக்கமான மாதிரிகள் தேவைப்பட்டால் பயன்படுத்தவும்.", + "continue": "IDE-களில் Continue-ஐ இயக்கும்போது, எளிதில் எடுத்துச் செல்லக்கூடிய JSON அடிப்படையிலான வழங்குநர் உள்ளமைவு தேவைப்பட்டால் பயன்படுத்தவும்.", + "opencode": "டெர்மினலுக்கே உரிய முகவர் இயக்கங்களையும் OpenCode வழியான ஸ்கிரிப்ட் தானியக்கத்தையும் விரும்பும்போது பயன்படுத்தவும்.", + "kiro": "Kiro-ஐ ஒருங்கிணைத்து, மாதிரி வழித்தடத்தை OmniRoute-இலிருந்து மையப்படுத்திக் கட்டுப்படுத்தும்போது பயன்படுத்தவும்.", + "windsurf": "Codeium/Windsurf மாதிரிகள் OmniRoute வழியாகத் திருப்பப்படும் AI-முதன்மை IDE-ஐ விரும்பும்போது பயன்படுத்தவும்.", + "antigravity": "Antigravity/Kiro போக்குவரத்தை MITM வழியாக இடைமறித்து OmniRoute-க்குத் திருப்ப வேண்டியிருக்கும்போது பயன்படுத்தவும்.", + "copilot": "OmniRoute விசைகள் மற்றும் வழித்தட விதிகளை அமல்படுத்திக்கொண்டே Copilot அரட்டை பாணியிலான பயனர் அனுபவத்தை விரும்பும்போது பயன்படுத்தவும்.", + "amp": "Amp சுருக்கெழுத்துப் பணிப்பாய்வுகளை விரும்பினாலும், OmniRoute மாற்றுப்பெயர் மற்றும் வழித்தட விதிகளின் அமலாக்கம் தேவைப்படும்போது பயன்படுத்தவும்.", + "hermes": "விரைவான பணிகளுக்கு இலகுரக, டெர்மினலுக்கே உரிய AI உதவியாளர் தேவைப்படும்போது பயன்படுத்தவும்.", "hermes-agent": "இயல்புநிலை, பிரதிநிதித்துவம், பார்வை மற்றும் துணை மாதிரிகள் OmniRoute வழியாக வழிநடத்தப்படும் Hermes Agent (Nousresearch வழங்கும்) உங்களுக்குத் தேவைப்படும்போது இதைப் பயன்படுத்தவும்.", - "custom": "Use for custom tool implementations or generic OpenAI-compatible configurations." + "custom": "தனிப்பயன் கருவிச் செயலாக்கங்கள் அல்லது பொதுவான OpenAI-இணக்கமான உள்ளமைவுகளுக்குப் பயன்படுத்தவும்." }, "toolDescriptions": { - "antigravity": "Google Antigravity IDE with MITM", + "antigravity": "MITM உடனான Google Antigravity IDE", "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "தனிப்பயன் வழங்குநர் ஆதரவுடன் கூடிய xAI Grok Build TUI குறியீட்டு முகவர்", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Factory Droid AI உதவியாளர்", + "openclaw": "Open Claw AI உதவியாளர்", + "cline": "Cline AI குறியீட்டாக்க உதவியாளர் CLI", + "kilo": "Kilo Code AI உதவியாளர் CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "continue": "Continue AI உதவியாளர்", + "opencode": "OpenCode AI குறியீட்டாக்க முகவர் (டெர்மினல்)", + "kiro": "Amazon Kiro — AI-ஆல் இயக்கப்படும் IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp குறியீட்டாக்க உதவியாளர் CLI", + "hermes": "Hermes AI டெர்மினல் உதவியாளர்", "hermes-agent": "Hermes Agent (Nousresearch வழங்கும்) - பல மாதிரி ஆதரவுடன் கூடிய மேம்பட்ட டெர்மினல் AI (பிரதிநிதித்துவம், பார்வை, சுருக்கம் போன்றவை)", - "custom": "Generic OpenAI-compatible CLI or SDK configuration generator", + "custom": "பொதுவான OpenAI-இணக்கமான CLI அல்லது SDK உள்ளமைவு உருவாக்கி", "aider": "OpenAI-இணக்கமான அடிப்படை URL ஐக் கொண்ட Aider AI ஜோடி-நிரலாக்க CLI", "forge": "தனிப்பயன் வழங்குநரைக் கொண்ட ForgeCode குறியீட்டு முகவர் CLI", "cursor-cli": "ஹெட்லெஸ் முகவர் பயன்முறையில் Cursor Agent CLI", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter தன்னாட்சி குறியீட்டு முகவர் CLI", "omp": "Oh My Pi டெர்மினல் குறியீட்டு முகவர்", "letta": "நிலையான நினைவகம் மற்றும் கருவிப் பயன்பாட்டுடன் கூடிய Letta CLI முகவர்", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI-இணக்கமான வழங்குநர் ஆதரவுடன் தன்னை மேம்படுத்திக்கொள்ளும் RLM குறியீட்டாக்கக் கட்டமைப்பு", "warp": "தனிப்பயன் வழங்குநர் ஆதரவுடன் கூடிய Warp AI டெர்மினல்", "agent-deck": "Agent Deck பல-முகவர் ஒருங்கிணைப்பாளர்", "5dive": "5dive — சுய-ஹோஸ்ட் செய்யப்பட்ட குறியீட்டு முகவர்களின் கூட்டம்; ஒரு auth சுயவிவரம் அனைத்தையும் OmniRoute-க்கு திருப்புகிறது" @@ -2958,134 +2958,134 @@ "guides": { "cursor": { "notes": { - "0": "Requires Cursor Pro account to use this feature.", - "1": "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings." + "0": "இந்த அம்சத்தைப் பயன்படுத்த Cursor Pro கணக்கு தேவை.", + "1": "Cursor கோரிக்கைகளை அதன் சொந்த சேவையகம் வழியாகத் திருப்புவதால், உள்ளூர் முனைப்புள்ளி ஆதரிக்கப்படாது. Settings-இல் Cloud Endpoint-ஐ இயக்கவும்." }, "steps": { "1": { - "title": "Open Settings", - "desc": "Go to Settings -> Models" + "title": "Settings-ஐத் திறக்கவும்", + "desc": "Settings -> Models என்பதற்குச் செல்லவும்" }, "2": { - "title": "Enable OpenAI API", - "desc": "Enable \"OpenAI API key\" option" + "title": "OpenAI API-ஐ இயக்கவும்", + "desc": "\"OpenAI API key\" விருப்பத்தை இயக்கவும்" }, "3": { - "title": "Base URL" + "title": "அடிப்படை URL" }, "4": { - "title": "API Key" + "title": "API விசை" }, "5": { - "title": "Add Custom Model", - "desc": "Click \"View All Model\" -> \"Add Custom Model\"" + "title": "தனிப்பயன் மாடலைச் சேர்க்கவும்", + "desc": "\"View All Model\" -> \"Add Custom Model\" என்பதைக் கிளிக் செய்யவும்" }, "6": { - "title": "Select Model" + "title": "மாடலைத் தேர்ந்தெடுக்கவும்" } } }, "continue": { "steps": { "1": { - "title": "Open Config", - "desc": "Open Continue configuration file" + "title": "உள்ளமைவைத் திறக்கவும்", + "desc": "Continue உள்ளமைவுக் கோப்பைத் திறக்கவும்" }, "2": { - "title": "API Key" + "title": "API விசை" }, "3": { - "title": "Select Model" + "title": "மாடலைத் தேர்ந்தெடுக்கவும்" }, "4": { - "title": "Add Model Config", - "desc": "Add the following configuration to your models array:" + "title": "மாடல் உள்ளமைவைச் சேர்க்கவும்", + "desc": "பின்வரும் உள்ளமைவை உங்கள் models அணிவரிசையில் சேர்க்கவும்:" } }, "notes": { - "0": "Continue uses JSON config file." + "0": "Continue, JSON உள்ளமைவுக் கோப்பைப் பயன்படுத்துகிறது." } }, "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCode-ஐ நிறுவவும்", + "desc": "npm வழியாக நிறுவவும்: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API விசை" }, "3": { - "title": "Set Base URL", + "title": "அடிப்படை URL-ஐ அமைக்கவும்", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "மாடலைத் தேர்ந்தெடுக்கவும்" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "சிந்தனை வகையைப் பயன்படுத்தவும்", + "desc": "சிந்தனை மாடல்களுக்கு, --variant high/low/max உடன் இயக்கவும் (எடுத்துக்காட்டுக் கட்டளை கீழே உள்ளது)." } }, "notes": { - "0": "OpenCode requires API key configuration.", - "1": "Set the base URL to your OmniRoute endpoint." + "0": "OpenCode-க்கு API விசை உள்ளமைவு தேவை.", + "1": "அடிப்படை URL-ஐ உங்கள் OmniRoute முனைப்புள்ளியாக அமைக்கவும்." } }, "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro அமைப்புகளைத் திறக்கவும்", + "desc": "Settings → AI Provider என்பதற்குச் செல்லவும்" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "அடிப்படை URL", + "desc": "உங்கள் OmniRoute முனைப்புள்ளி URL-ஐ ஒட்டவும்" }, "3": { - "title": "API Key" + "title": "API விசை" }, "4": { - "title": "Select Model" + "title": "மாடலைத் தேர்ந்தெடுக்கவும்" } }, "notes": { - "0": "Kiro requires Amazon account." + "0": "Kiro-க்கு Amazon கணக்கு தேவை." } }, "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI அமைப்புகளைத் திறக்கவும்", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "தனிப்பயன் வழங்குநரைச் சேர்க்கவும்", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "அடிப்படை URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API விசை", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "மாடலைத் தேர்ந்தெடுக்கவும்", + "desc": "கீழ்தோன்றும் பட்டியலிலிருந்து ஒரு மாடலைத் தேர்ந்தெடுக்கவும்" } } } }, - "autoConfiguredTab": "Auto-Configured", - "toolCategoriesDesc": "Configure AI coding assistants to route through OmniRoute", - "allToolsTab": "All Tools", - "guidedClientsTab": "Guided Clients", - "mitmClientsTab": "MITM Clients", + "autoConfiguredTab": "தானாக உள்ளமைக்கப்பட்டது", + "toolCategoriesDesc": "OmniRoute வழியாக வழிச்செலுத்த AI குறியீட்டு உதவியாளர்களை உள்ளமைக்கவும்", + "allToolsTab": "அனைத்துக் கருவிகளும்", + "guidedClientsTab": "வழிகாட்டப்பட்ட கிளையண்டுகள்", + "mitmClientsTab": "MITM கிளையண்டுகள்", "customCliTab": "தனிப்பயன் CLI", - "toolCategories": "Tool Categories", - "visibleToolsCount": "{count} tools available", + "toolCategories": "கருவி வகைகள்", + "visibleToolsCount": "{count} கருவிகள் கிடைக்கின்றன", "customCliBuilderTitle": "OpenAI-இணக்கமான CLI பில்டர்", "customCliBuilderDescription": "OpenAI-இணக்கமான அடிப்படை URL, API விசை மற்றும் மாதிரி ஐடியை ஏற்கும் எந்த CLI அல்லது SDK க்கும் env vars மற்றும் JSON துணுக்குகளை உருவாக்கவும்.", "customCliNoModels": "மாதிரி தேர்வாளர்களை நிரப்ப குறைந்தபட்சம் ஒரு வழங்குநரை இணைக்கவும்.", @@ -3203,75 +3203,75 @@ "cliproxyapiVersion": "பதிப்பு" }, "combos": { - "title": "Combos", - "description": "Create model combos with weighted routing and fallback support", + "title": "காம்போக்கள்", + "description": "எடையிட்ட வழிப்படுத்தல் மற்றும் மாற்று ஆதரவுடன் மாதிரி காம்போக்களை உருவாக்கவும்", "autoCatalogTitle": "தானாக ரூட்டிங் பட்டியல்", "autoCatalogTemplateCount": "{count} டெம்ப்ளேட்கள்", "autoCatalogDescription": "இணைக்கப்பட்ட வழங்குநர்களிடமிருந்து உள்ளமைந்த தானியங்கு/* சேர்க்கைகள் மாறும் வகையில் தீர்க்கப்படுகின்றன. இந்த ஐடிகளில் ஏதேனும் ஒன்றை மாதிரி புலமாகப் பயன்படுத்தவும் - அமைப்பு தேவையில்லை.", "autoCatalogExpand": "தானாக ரூட்டிங் பட்டியலை விரிவாக்குங்கள்", "autoCatalogCollapse": "தானாக ரூட்டிங் பட்டியலைச் சுருக்கவும்", - "createCombo": "Create Combo", - "editCombo": "Edit Combo", - "deleteCombo": "Delete Combo", - "noModels": "No models", - "noModelsYet": "No models added yet", - "addModel": "Add Model", - "addModelToCombo": "Add Model to Combo", - "routingStrategy": "Routing Strategy", - "maxRetries": "Max Retries", - "timeout": "Timeout (ms)", - "healthcheck": "Healthcheck", - "priority": "Priority", - "fallback": "Fallback", + "createCombo": "காம்போவை உருவாக்கு", + "editCombo": "காம்போவைத் திருத்து", + "deleteCombo": "காம்போவை நீக்கு", + "noModels": "மாதிரிகள் இல்லை", + "noModelsYet": "இதுவரை மாதிரிகள் எதுவும் சேர்க்கப்படவில்லை", + "addModel": "மாதிரியைச் சேர்", + "addModelToCombo": "காம்போவில் மாதிரியைச் சேர்", + "routingStrategy": "வழிப்படுத்தல் உத்தி", + "maxRetries": "அதிகபட்ச மறுமுயற்சிகள்", + "timeout": "காலக்கெடு (ms)", + "healthcheck": "நிலைச் சரிபார்ப்பு", + "priority": "முன்னுரிமை", + "fallback": "மாற்று", "roundRobin": "Round Robin", - "random": "Random", - "leastLatency": "Least Latency", - "comboName": "Combo Name", + "random": "சீரற்றது", + "leastLatency": "குறைந்தபட்ச தாமதம்", + "comboName": "காம்போ பெயர்", "comboNamePlaceholder": "my-combo", "comboDescription": "விளக்கம்", "comboDescriptionPlaceholder": "இந்த கலவையை விவரிக்கும் விருப்ப குறிப்பு", - "deleteConfirm": "Delete this combo?", - "noCombosYet": "No combos yet", - "comboCreated": "Combo created successfully", - "comboUpdated": "Combo updated successfully", - "comboDeleted": "Combo deleted", - "failedCreate": "Failed to create combo", - "failedUpdate": "Failed to update combo", - "errorCreating": "Error creating combo", - "errorUpdating": "Error updating combo", - "errorDeleting": "Error deleting combo", - "testFailed": "Test request failed", - "failedToggle": "Failed to toggle combo", - "testResults": "Test Results — {name}", - "resolvedBy": "Resolved by:", - "more": "+{count} more", - "reqs": "reqs", - "success": "success", - "proxyConfigured": "Proxy configured", - "copyComboName": "Copy combo name", - "enableCombo": "Enable combo", - "disableCombo": "Disable combo", - "testCombo": "Test combo", - "duplicate": "Duplicate", - "proxyConfig": "Proxy configuration", - "nameRequired": "Name is required", - "nameInvalid": "Only letters, numbers, -, _, / and . allowed", - "nameHint": "Letters, numbers, -, _, / and . allowed", - "priorityDesc": "Sequential fallback: tries model 1 first, then 2, etc.", - "weightedDesc": "Distributes traffic by weight percentage with fallback", - "roundRobinDesc": "Circular distribution: each request goes to the next model in rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", - "randomDesc": "Uniform random selection, then fallback to remaining models", - "leastUsedDesc": "Picks the model with fewest requests, balancing load over time", - "costOptimizedDesc": "Routes to the cheapest model first based on pricing", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "deleteConfirm": "இந்தக் காம்போவை நீக்கவா?", + "noCombosYet": "இதுவரை காம்போக்கள் இல்லை", + "comboCreated": "காம்போ வெற்றிகரமாக உருவாக்கப்பட்டது", + "comboUpdated": "காம்போ வெற்றிகரமாகப் புதுப்பிக்கப்பட்டது", + "comboDeleted": "காம்போ நீக்கப்பட்டது", + "failedCreate": "காம்போவை உருவாக்க முடியவில்லை", + "failedUpdate": "காம்போவைப் புதுப்பிக்க முடியவில்லை", + "errorCreating": "காம்போவை உருவாக்குவதில் பிழை", + "errorUpdating": "காம்போவைப் புதுப்பிப்பதில் பிழை", + "errorDeleting": "காம்போவை நீக்குவதில் பிழை", + "testFailed": "சோதனைக் கோரிக்கை தோல்வியடைந்தது", + "failedToggle": "காம்போவை மாற்ற முடியவில்லை", + "testResults": "சோதனை முடிவுகள் — {name}", + "resolvedBy": "தீர்வு வழங்கியது:", + "more": "+மேலும் {count}", + "reqs": "கோரிக்கைகள்", + "success": "வெற்றி", + "proxyConfigured": "பதிலி உள்ளமைக்கப்பட்டது", + "copyComboName": "காம்போ பெயரை நகலெடு", + "enableCombo": "காம்போவை இயக்கு", + "disableCombo": "காம்போவை முடக்கு", + "testCombo": "காம்போவைச் சோதி", + "duplicate": "நகலெடு", + "proxyConfig": "ப்ராக்ஸி உள்ளமைவு", + "nameRequired": "பெயர் அவசியம்", + "nameInvalid": "எழுத்துகள், எண்கள், -, _, / மற்றும் . மட்டுமே அனுமதிக்கப்படும்", + "nameHint": "எழுத்துகள், எண்கள், -, _, / மற்றும் . அனுமதிக்கப்படும்", + "priorityDesc": "வரிசையான மாற்றுத் தேர்வு: முதலில் மாடல் 1-ஐ முயற்சிக்கும், பின்னர் 2, இவ்வாறு தொடரும்.", + "weightedDesc": "மாற்றுத் தேர்வுடன், எடை சதவீதத்தின் அடிப்படையில் போக்குவரத்தைப் பகிர்ந்தளிக்கும்", + "roundRobinDesc": "சுழற்சி விநியோகம்: ஒவ்வொரு கோரிக்கையும் சுழற்சியில் அடுத்த மாடலுக்குச் செல்லும்", + "contextRelay": "சூழல் ரிலே", + "contextRelayDesc": "கணக்குகள் சுழற்சி முறையில் மாறும்போது, ஒப்படைப்புச் சுருக்கங்கள் மூலம் அமர்வுத் தொடர்ச்சியைப் பேணும்", + "randomDesc": "சீரான சீரற்ற தேர்வு, பின்னர் மீதமுள்ள மாடல்களுக்கு மாற்றுத் தேர்வு", + "leastUsedDesc": "காலப்போக்கில் சுமையைச் சமநிலைப்படுத்தி, மிகக் குறைவான கோரிக்கைகளைக் கொண்ட மாடலைத் தேர்ந்தெடுக்கும்", + "costOptimizedDesc": "விலை நிர்ணயத்தின் அடிப்படையில் முதலில் மிகக் குறைந்த செலவுள்ள மாடலுக்கு வழிப்படுத்தும்", + "cacheOptimizedDesc": "மீண்டும் பயன்படுத்தக்கூடிய ஒவ்வொரு தூண்டல் முன்னொட்டையும் தொடர்ந்து அதே வழங்குநர் கணக்குக்கு வழிப்படுத்தும்", "resetAware": "ரீசெட்-அவேர் ஆர்ஆர்", "resetAwareDesc": "5h மற்றும் வாராந்திர மீட்டமைப்புகளுக்கு எதிராக மீதமுள்ள ஒதுக்கீட்டை சமநிலைப்படுத்துகிறது, பின்னர் ரவுண்ட்-ராபின்கள் ஒத்த மதிப்பெண்கள்", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "ஒதுக்கீடு-எடையிடப்பட்டது", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "கண்டிப்பான சீரற்ற தேர்வு", + "strictRandomDesc": "சீட்டுக்கட்டை கலைத்தல் — மீண்டும் கலைப்பதற்கு முன் ஒவ்வொரு மாடலையும் ஒருமுறை பயன்படுத்தும்", "fusion": "இணைவு", "fusionDesc": "ப்ராம்ப்ட்டை அனைத்து பேனல் மாடல்களுக்கும் இணையாக அனுப்பி, பின்னர் ஒரு நடுவர் மாடல் ஒரு இறுதிப் பதிலை ஒருங்கிணைக்கிறது", "fusionJudgeModel": "நடுவர் மாடல்", @@ -3282,27 +3282,27 @@ "fusionStragglerGraceMsHelp": "கோரம் எட்டப்பட்டதும் மெதுவான பேனல் மாடல்களுக்காக எவ்வளவு நேரம் காத்திருக்க வேண்டும் (இயல்புநிலை 8000).", "fusionPanelHardTimeoutMs": "பேனல் இறுதி காலாவதி நேரம் (மி.வி)", "fusionPanelHardTimeoutMsHelp": "ஒரு முடங்கிய மாடல் முழு பேனலையும் நிறுத்தாமல் இருக்க விதிக்கப்படும் முழுமையான வரம்பு (இயல்புநிலை 90000).", - "models": "Models", - "autoBalance": "Auto-balance", - "advancedSettings": "Advanced Settings", - "retryDelay": "Retry Delay (ms)", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", - "advancedHint": "Leave empty to use global defaults. These override per-provider settings.", + "models": "மாடல்கள்", + "autoBalance": "தானியங்குச் சமநிலை", + "advancedSettings": "மேம்பட்ட அமைப்புகள்", + "retryDelay": "மறுமுயற்சி தாமதம் (ms)", + "concurrencyPerModel": "ஒரேநேரச் செயல்பாடு / மாடல்", + "queueTimeout": "வரிசைக் காத்திருப்பு நேர முடிவு (ms)", + "contextRelayHandoffThreshold": "ஒப்படைப்பு வரம்பு", + "contextRelayHandoffThresholdHelp": "ஒதுக்கீட்டுப் பயன்பாடு இந்த வரம்பை அடையும்போது, செயலில் உள்ள கணக்கின் ஒதுக்கீடு தீர்வதற்கு முன் OmniRoute ஒரு கட்டமைக்கப்பட்ட ஒப்படைப்புச் சுருக்கத்தை உருவாக்கும்.", + "contextRelayMaxMessages": "சுருக்கத்திற்கான அதிகபட்சச் செய்திகள்", + "contextRelayMaxMessagesHelp": "சமீபத்திய வரலாற்றில் எவ்வளவு பகுதி ரிலே சுருக்கமாகச் சுருக்கப்பட வேண்டும் என்பதைக் கட்டுப்படுத்தும்.", + "contextRelaySummaryModel": "சுருக்க மாடல்", + "contextRelaySummaryModelHelp": "ஒப்படைப்புச் சுருக்கத்தை உருவாக்குவதற்கு மட்டும் பயன்படுத்தப்படும் விருப்ப மாற்று மாடல். செயலில் உள்ள காம்போ மாடலை மீண்டும் பயன்படுத்த, இதைக் காலியாக விடவும்.", + "contextRelayProviderNote": "தற்போது Context Relay, Codex கணக்குச் சுழற்சிக்கான ஒப்படைப்புகளை உருவாக்குகிறது. சிறந்த தொடர்ச்சிக்காக, ஒரே வழங்குநரின் பல கணக்குகளுடன் இதைப் பயன்படுத்தவும்.", + "advancedHint": "உலகளாவிய இயல்புநிலைகளைப் பயன்படுத்த, இதைக் காலியாக விடவும். இவை ஒவ்வொரு வழங்குநருக்குமான அமைப்புகளை மீறும்.", "failoverBeforeRetry": "மீண்டும் முயற்சிக்கும் முன் தோல்வி", "maxSetRetries": "அதிகபட்ச செட் மீண்டும் முயற்சிகள்", "setRetryDelayMs": "மறுமுயற்சி தாமதத்தை (மிவி) அமைக்கவும்", - "moveUp": "Move up", - "moveDown": "Move down", - "removeModel": "Remove", - "saving": "Saving...", + "moveUp": "மேலே நகர்த்து", + "moveDown": "கீழே நகர்த்து", + "removeModel": "அகற்று", + "saving": "சேமிக்கிறது...", "liveNoProviders": "வழங்குநர்கள் இன்னும் கண்டறியப்படவில்லை.", "liveFleetDataHint": "ஃப்ளீட் தரவு நேரலை காம்போ நிகழ்வுகள் மூலம் பெறப்படுகிறது.", "liveActiveCount": "செயலில் ({count})", @@ -3342,43 +3342,43 @@ "playgroundEmptyHint": "ரூட்டிங் பாதையைக் காண ஒரு காம்போவைத் தேர்ந்தெடுத்து Simulate Route என்பதை கிளிக் செய்யவும்.", "playgroundNoCombosYet": "இன்னும் எந்த காம்போக்களும் கட்டமைக்கப்படவில்லை.", "playgroundCreateFirst": "முதலில் ஒன்றை உருவாக்கவும்", - "weighted": "Weighted", - "leastUsed": "Least-Used", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "weighted": "எடையிடப்பட்டது", + "leastUsed": "மிகக் குறைவாகப் பயன்படுத்தப்பட்டது", + "costOpt": "செலவு-உகப்பாக்கம்", + "strategyGuideTitle": "இந்த உத்தியைப் பயன்படுத்துவது எப்படி", + "strategyGuideWhen": "எப்போது பயன்படுத்த வேண்டும்", + "strategyGuideAvoid": "எப்போது தவிர்க்க வேண்டும்", + "strategyGuideExample": "எடுத்துக்காட்டு", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "உங்களுக்கு விருப்பமான ஒரே மாதிரி உள்ளது; தோல்வி ஏற்பட்டால் மட்டுமே மாற்று மாதிரியைப் பயன்படுத்த விரும்புகிறீர்கள்.", + "avoid": "கோரிக்கைகளை மாதிரிகளுக்கு இடையே பகிர்ந்தளிக்க வேண்டும்.", + "example": "செயலிழப்புகளின்போது பயன்படுத்துவதற்கு மலிவான மாற்றுடன் கூடிய முதன்மைக் குறியீட்டு மாதிரி." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "மாதிரிகளுக்கு இடையே கட்டுப்படுத்தப்பட்ட போக்குவரத்துப் பிரிப்பு தேவை.", + "avoid": "காலப்போக்கில் துல்லியமான எடைகளைப் பராமரிக்க முடியாது.", + "example": "80% நிலையான மாதிரி + 20% கேனரி மாதிரி வெளியீடு." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "கணிக்கக்கூடிய மற்றும் சீரான பகிர்ந்தளிப்பை விரும்புகிறீர்கள்.", + "avoid": "தாமதம் அல்லது செலவில் மாதிரிகள் மிகவும் வேறுபடுகின்றன.", + "example": "செயல்திறனைப் பகிர்ந்தளிக்கப் பல கணக்குகளில் ஒரே மாதிரியைப் பயன்படுத்துதல்." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "குறைந்தபட்ச அமைப்புடன் எளிய பகிர்ந்தளிப்பை விரும்புகிறீர்கள்.", + "avoid": "கடுமையான போக்குவரத்து உத்தரவாதங்கள் தேவை.", + "example": "ஒத்த மாதிரிகளுடன் விரைவான முன்மாதிரி உருவாக்கம்." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "நிகழ்நேரத் தேவையின் அடிப்படையில் தகவமைவு சமநிலைப்படுத்தலை விரும்புகிறீர்கள்.", + "avoid": "பயன்பாட்டுச் சமநிலைப்படுத்தலால் பயனடைய முடியாத அளவுக்குப் போக்குவரத்து குறைவாக உள்ளது.", + "example": "ஒரு மாதிரி அடிக்கடி அதிகச் சுமைக்கு உள்ளாகும் கலப்புப் பணிச்சுமைகள்." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "செலவைக் குறைப்பதே உங்கள் முதன்மையான முன்னுரிமை.", + "avoid": "விலைத் தரவு கிடைக்கவில்லை அல்லது காலாவதியாகியுள்ளது.", + "example": "குறைந்த செலவுக்கு முன்னுரிமை அளிக்கப்படும் பின்னணி அல்லது தொகுதிப் பணிகள்." }, "reset-aware": { "when": "கோட்டா டெலிமெட்ரி மற்றும் வெவ்வேறு மீட்டமைப்பு சாளரங்கள் மூலம் நீங்கள் பல கணக்குகளுக்குச் செல்கிறீர்கள்.", @@ -3386,104 +3386,104 @@ "example": "நாளை 60% வாராந்திர கணக்கு மீட்டமைப்பை 80% கணக்கை மீட்டமைப்பதை விரும்புங்கள்." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "முற்றிலும் சீரான பரவலை விரும்பும்போது பயன்படுத்தவும் — மீண்டும் பயன்படுத்துவதற்கு முன் ஒவ்வொரு மாதிரியும் ஒருமுறை பயன்படுத்தப்படும்.", + "avoid": "மாதிரிகளின் தரம் அல்லது தாமதம் வேறுபட்டு, வரிசை முக்கியமாக இருக்கும்போது தவிர்க்கவும்.", + "example": "எடுத்துக்காட்டு: பயன்பாட்டைச் சீராகப் பகிர்ந்தளிக்க ஒரே மாதிரியின் பல கணக்குகள்." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Power-of-Two-Choices வழிமுறையைப் பயன்படுத்திக் குறைந்த தாமதத்துடன் தேர்ந்தெடுக்க விரும்பும்போது பயன்படுத்தவும்.", + "avoid": "2 அல்லது அதற்குக் குறைவான மாதிரிகளைக் கொண்ட சிறிய சேர்க்கைகளுக்கு இதைத் தவிர்க்கவும் — round-robin முறையைவிட எந்தப் பயனும் இல்லை.", + "example": "எடுத்துக்காட்டு: 4+ ஒத்த மாதிரி முனைப்புள்ளிகளில் அதிகச் செயல்திறன் கொண்ட அனுமானம்." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "செயல்படும் சூழலை இழக்காமல் நீண்ட அமர்வுகள் கணக்குச் சுழற்சியைத் தாங்க வேண்டியிருக்கும்போது பயன்படுத்தவும்.", + "avoid": "கணக்கு மாற்றுவது அரிதாக இருக்கும்போது அல்லது கூடுதல் சுருக்கக் கோரிக்கைகளை விரும்பாதபோது தவிர்க்கவும்.", + "example": "எடுத்துக்காட்டு: ஒதுக்கீடு தீரும் நிலையில் பல கணக்குகளுக்கு இடையே சுழலும் Codex அமர்வுகள்." }, "fill-first": { - "when": "Use when you want to fully exhaust one provider's quota before moving to the next.", - "avoid": "Avoid when you need request-level load balancing across providers.", - "example": "Example: Use all $200 Deepgram credits before falling back to Groq." + "when": "அடுத்த வழங்குநருக்கு மாறுவதற்கு முன் ஒரு வழங்குநரின் ஒதுக்கீட்டை முழுமையாகப் பயன்படுத்த விரும்பும்போது பயன்படுத்தவும்.", + "avoid": "வழங்குநர்களுக்கு இடையே கோரிக்கை-நிலைச் சுமைச் சமநிலைப்படுத்தல் தேவைப்படும்போது தவிர்க்கவும்.", + "example": "எடுத்துக்காட்டு: Groq-ஐ மாற்றாகப் பயன்படுத்துவதற்கு முன் Deepgram-இன் $200 கிரெடிட்கள் அனைத்தையும் பயன்படுத்தவும்." }, "auto": { - "when": "Use when you need multi-factor scoring routing based on cost, latency, and quality.", - "avoid": "Avoid when you need strict priority ordering or historical persistence.", - "example": "Example: Balance requests across models with different strengths." + "when": "செலவு, தாமதம் மற்றும் தரத்தின் அடிப்படையில் பல-காரண மதிப்பீட்டு வழிப்படுத்தல் தேவைப்படும்போது பயன்படுத்தவும்.", + "avoid": "கடுமையான முன்னுரிமை வரிசை அல்லது வரலாற்றுத் தொடர்ச்சி தேவைப்படும்போது தவிர்க்கவும்.", + "example": "எடுத்துக்காட்டு: வெவ்வேறு பலங்களைக் கொண்ட மாதிரிகளுக்கு இடையே கோரிக்கைகளைச் சமநிலைப்படுத்தவும்." }, "lkgp": { - "when": "Use when you want to route based on historical success rates and performance.", - "avoid": "Avoid when historical data is limited or unreliable.", - "example": "Example: Route to models with a good track record on specific tasks." + "when": "வரலாற்று வெற்றி விகிதங்கள் மற்றும் செயல்திறனின் அடிப்படையில் வழிப்படுத்த விரும்பும்போது பயன்படுத்தவும்.", + "avoid": "வரலாற்றுத் தரவு குறைவாகவோ நம்பகமற்றதாகவோ இருக்கும்போது தவிர்க்கவும்.", + "example": "எடுத்துக்காட்டு: குறிப்பிட்ட பணிகளில் சிறந்த செயல்திறன் வரலாற்றைக் கொண்ட மாடல்களுக்கு வழிமாற்றவும்." }, "context-optimized": { - "when": "Use when you need to optimize context window usage across models.", - "avoid": "Avoid when models have similar context lengths or tasks are simple.", - "example": "Example: Distribute long conversations across models with larger context windows." + "when": "மாடல்களுக்கிடையே சூழல் சாளரப் பயன்பாட்டை உகப்பாக்க வேண்டியிருக்கும்போது பயன்படுத்தவும்.", + "avoid": "மாடல்களின் சூழல் நீளங்கள் ஒரே மாதிரியாக இருக்கும்போதோ பணிகள் எளிமையாக இருக்கும்போதோ தவிர்க்கவும்.", + "example": "எடுத்துக்காட்டு: நீண்ட உரையாடல்களைப் பெரிய சூழல் சாளரங்களைக் கொண்ட மாடல்களிடையே பகிர்ந்தளிக்கவும்." } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "ஒரு கோரிக்கை தோல்வியடைவதற்கு முன் எத்தனை மறுமுயற்சிகள் மேற்கொள்ளப்படும்.", + "retryDelay": "மறுமுயற்சிகளுக்கு இடையிலான ஆரம்பக் காத்திருப்பு நேரம். அதிக மதிப்புகள் திடீர் சுமையைக் குறைக்கும்.", + "timeout": "நிறுத்தப்படுவதற்கு முன் கோரிக்கைக்கான அதிகபட்ச கால அளவு.", + "healthcheck": "வழிமாற்ற முடிவுகளில் செயல்நலமற்ற மாடல்கள்/வழங்குநர்களைத் தவிர்க்கிறது.", + "concurrencyPerModel": "சுழற்சி முறையில் ஒரு மாடலுக்கு அனுமதிக்கப்படும் அதிகபட்ச ஒரேநேரக் கோரிக்கைகள்.", + "queueTimeout": "காலாவதியாவதற்கு முன் ஒரு கோரிக்கை வரிசையில் காத்திருக்கக்கூடிய அதிகபட்ச நேரம்.", "failoverBeforeRetry": "இயக்கப்படும் போது, ஏதேனும் அப்ஸ்ட்ரீம் பிழையானது அடுத்த சேர்க்கை இலக்கை உடனடியாக தோல்வியடையச் செய்து, அனைத்து மறுமுயற்சிகள் மற்றும் ஃபால்பேக் URLகளைத் தவிர்த்துவிடும்.", "maxSetRetries": "ஒவ்வொரு இலக்கும் தோல்வியடையும் போது நிர்ணயித்த முழு இலக்கை மீண்டும் முயற்சிக்க வேண்டிய முறைகளின் எண்ணிக்கை. 0 = செட்-லெவல் மறு முயற்சி இல்லை.", "setRetryDelayMs": "செட்-லெவல் மறுமுயற்சிகளுக்கு இடையே தாமதம், தற்காலிக சிக்கல்களைத் தீர்க்க நேரம் கிடைக்கும்.", "disableSessionStickiness": "முதல்-செய்தி ஹாஷ் மூலம் முழு உரையாடலையும் ஒரு இணைப்பிற்குப் பின் செய்வதற்குப் பதிலாக, ஒவ்வொரு கோரிக்கையிலும் வேறு இணைப்பிற்கு மாறவும். உலகளாவிய இயல்புநிலையை மேலெழுதுகிறது. மல்டி-டர்ன் அரட்டைகளுக்கான ப்ராம்ப்ட்-கேச் ஹிட்களைப் பாதுகாக்க Inherit இல் விடவும்." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "விரைவு வார்ப்புருக்கள்", + "templatesDescription": "தொடக்கச் சுயவிவரத்தைப் பயன்படுத்தி, பின்னர் மாடல்களையும் உள்ளமைவையும் சரிசெய்யவும்.", + "templateApply": "வார்ப்புருவைப் பயன்படுத்து", + "templateHighAvailability": "உயர் கிடைப்புத்தன்மை", + "templateHighAvailabilityDesc": "செயல்நலச் சோதனைகள் மற்றும் பாதுகாப்பான மறுமுயற்சிகளுடன் முன்னுரிமை வழிமாற்றம்.", + "templateCostSaver": "செலவு சேமிப்பு", + "templateCostSaverDesc": "பட்ஜெட்டுக்கு முன்னுரிமை அளிக்கும் பணிச்சுமைகளுக்கான செலவு-உகப்பாக்கப்பட்ட வழிமாற்றம்.", + "templateBalanced": "சமநிலைப்படுத்தப்பட்ட சுமை", + "templateBalancedDesc": "காலப்போக்கில் தேவையைப் பகிர்ந்தளிக்க மிகக் குறைவாகப் பயன்படுத்தப்பட்டதற்கான வழிமாற்றம்.", + "usageGuideHide": "மறை", + "usageGuideDontShowAgain": "மீண்டும் காட்ட வேண்டாம்", + "usageGuideShow": "வழிகாட்டியைக் காட்டு", + "quickTestTitle": "சரிபார்க்கத் தயாரான தொகுப்பு", + "quickTestDescription": "மாற்றுவழி மற்றும் தாமதச் செயல்பாட்டை உறுதிப்படுத்த இப்போது ஒரு சோதனையை இயக்கவும்.", + "testNow": "இப்போது சோதிக்கவும்", + "pricingCoverage": "விலையிடல் உள்ளடக்கம்", + "pricingCoverageHint": "அனைத்து தொகுப்பு மாடல்களுக்கும் விலையிடல் இருக்கும்போது செலவு-உகப்பாக்கம் சிறப்பாகச் செயல்படும்.", + "pricingAvailable": "விலையிடல் உள்ளது", + "pricingMissing": "விலையிடல் இல்லை", + "pricingAvailableShort": "விலையிடப்பட்டது", + "pricingMissingShort": "விலையிடப்படாதது", "fallbackOnlyOnQuotaExhaustion": "கோட்டையின் முடிவுக்கு முன்னே செல்லவும்", "fallbackOnlyOnQuotaExhaustionShort": "கோட்டா-மட்டுமே மறு நிலை", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", - "readinessCheckPricing": "Pricing data is available", - "readinessCheckPricingOptional": "Pricing rule not required", - "saveBlockedTitle": "Save is blocked until the following items are fixed:", - "saveBlockName": "Define a combo name.", - "saveBlockModels": "Add at least one model.", - "saveBlockWeighted": "Set weights to 100% (current: {total}%).", - "saveBlockPricing": "Add pricing for at least one model or choose a different strategy.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "warningRoundRobinSingleModel": "குறைந்தது 2 மாடல்கள் இருக்கும்போது சுழற்சி முறை மிகவும் பயனுள்ளதாக இருக்கும்.", + "warningCostOptimizedPartialPricing": "{total} மாடல்களில் {priced} மாடல்களுக்கு மட்டுமே விலையிடல் உள்ளது. வழிமாற்றம் செலவைப் பகுதியளவில் மட்டுமே கருத்தில் கொள்ளக்கூடும்.", + "warningCostOptimizedNoPricing": "இந்தத் தொகுப்பிற்கான விலையிடல் தரவு எதுவும் கிடைக்கவில்லை. செலவு-உகப்பாக்கப்பட்ட முறை எதிர்பாராத வகையில் வழிமாற்றக்கூடும்.", + "filterAll": "அனைத்தும்", + "filterIntelligent": "நுண்ணறிவுமிக்கது", + "filterDeterministic": "நிர்ணயிக்கப்பட்டது", + "filterEmptyTitle": "இந்த உத்தி வடிகட்டியுடன் எந்தத் தொகுப்பும் பொருந்தவில்லை.", + "filterEmptyIntelligentDescription": "நுண்ணறிவு வழிமாற்ற முகப்புப் பலகையை நிரப்ப, auto அல்லது LKGP தொகுப்பை உருவாக்கவும்.", + "filterEmptyDeterministicDescription": "தற்போது auto மற்றும் LKGP சேர்க்கைகள் மட்டுமே உள்ளன. All என்பதற்கு மீண்டும் மாறவும் அல்லது நிர்ணயிக்கப்பட்ட சேர்க்கையை உருவாக்கவும்.", + "readinessTitle": "சேமிக்கத் தயாரா?", + "readinessDescription": "இந்தச் சேர்க்கையை உருவாக்கும் அல்லது புதுப்பிக்கும் முன் சரிபார்ப்புப் பட்டியலை மதிப்பாய்வு செய்யவும்.", + "readinessCheckName": "சேர்க்கையின் பெயர் செல்லுபடியாகும்", + "readinessCheckModels": "குறைந்தது ஒரு மாடல் தேர்ந்தெடுக்கப்பட்டுள்ளது", + "readinessCheckWeights": "எடைகளின் மொத்தம் 100%", + "readinessCheckWeightsOptional": "எடை விதி தேவையில்லை", + "readinessCheckPricing": "விலைத் தரவு கிடைக்கிறது", + "readinessCheckPricingOptional": "விலை விதி தேவையில்லை", + "saveBlockedTitle": "பின்வரும் உருப்படிகள் சரிசெய்யப்படும் வரை சேமிக்க முடியாது:", + "saveBlockName": "சேர்க்கைக்கு ஒரு பெயரை வரையறுக்கவும்.", + "saveBlockModels": "குறைந்தது ஒரு மாடலைச் சேர்க்கவும்.", + "saveBlockWeighted": "எடைகளை 100% ஆக அமைக்கவும் (தற்போது: {total}%).", + "saveBlockPricing": "குறைந்தது ஒரு மாடலுக்கான விலையைச் சேர்க்கவும் அல்லது வேறொரு உத்தியைத் தேர்ந்தெடுக்கவும்.", + "recommendationsLabel": "பரிந்துரைக்கப்பட்ட அமைப்பு", + "applyRecommendations": "பரிந்துரைகளைப் பயன்படுத்தவும்", + "recommendationsUpdated": "{strategy} உத்திக்கான பரிந்துரைகள் புதுப்பிக்கப்பட்டன.", + "recommendationsApplied": "இந்தச் சேர்க்கைக்கு பரிந்துரைகள் பயன்படுத்தப்பட்டன.", + "intelligentPanelTitle": "நுண்ணறிவு வழித்தட டாஷ்போர்டு", + "intelligentPanelDesc": "இந்தத் தானியங்கி வழித்தடச் சேர்க்கைக்கான நிகழ்நேர மதிப்பீடும் செயல்நிலை நிலையும்.", "configOnlyStatus": "கட்டமைப்பு காட்சி", "configOnlyHint": "இந்த பேனல் ரூட்டிங் உள்ளீடுகளை மட்டுமே காட்டுகிறது. நேரடி பிரேக்கர் நிலை ஹெல்த் பக்கத்தில் கிடைக்கிறது.", "routingInputs": "ரூட்டிங் உள்ளீடுகள்", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "அறியப்படாத வழங்குநர் முன்னொட்டு.", "builderDynamicAccountShort": "டைனமிக் கணக்கு", "builderNeedValidName": "தொடர்வதற்கு முன் சரியான காம்போ பெயரை வரையறுக்கவும்.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "நிலை மேலோட்டம்", + "normalOperation": "இயல்பான செயல்பாடு", + "allProvidersHealthy": "வழங்குநர்கள் ஆரோக்கியமான வழித்தட நிலைமைகளைப் புகாரளிக்கின்றனர்.", + "incidentMode": "சம்பவப் பயன்முறை", + "highCircuitBreakerRate": "அதிக சர்க்யூட் பிரேக்கர் தூண்டல் விகிதம் கண்டறியப்பட்டது.", + "activeModePack": "செயலில் உள்ள பயன்முறைத் தொகுப்பு", + "modePackUpdated": "பயன்முறைத் தொகுப்பு {pack} ஆகப் புதுப்பிக்கப்பட்டது.", + "modePackHint": "சேர்க்கையை மீண்டும் உருவாக்காமல் வழித்தட இயந்திரத்தின் சார்பை மாற்ற, முன்னமைவுகளை மாற்றவும்.", + "providerScores": "வழங்குநர் மதிப்பெண்கள்", + "allProvidersEvaluated": "பரிசீலனைக்கான வழங்குநர் தொகுப்பு எதுவும் உள்ளமைக்கப்படவில்லை. செயலில் உள்ள அனைத்து வழங்குநர்களும் இயக்க நேரத்தில் மதிப்பிடப்படுகின்றனர்.", + "excludedProviders": "விலக்கப்பட்ட வழங்குநர்கள்", + "excludedProvidersHint": "OPEN சர்க்யூட் பிரேக்கரைக் கொண்ட வழங்குநர்கள் வழித்தடத்திலிருந்து தற்காலிகமாக விலக்கப்படுகின்றனர்.", + "noExcludedProviders": "தற்போது எந்த வழங்குநர்களும் விலக்கப்படவில்லை.", + "cooldownMinutes": "காத்திருப்பு நேரம்: {minutes} நிமி", + "builderIntelligentTitle": "நுண்ணறிவு வழித்தட உள்ளமைவு", + "builderIntelligentDesc": "இந்தத் தானியங்கி வழித்தடச் சேர்க்கைக்கான பல-காரணி மதிப்பீட்டு இயந்திரத்தை உள்ளமைக்கவும்.", + "candidatePoolLabel": "பரிசீலனைத் தொகுப்பு", + "candidatePoolHint": "இந்த இயந்திரம் எந்த வழங்குநர்களை மதிப்பிட வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும். செயலில் உள்ள அனைத்து வழங்குநர்களையும் பயன்படுத்த, காலியாக விடவும்.", + "candidatePoolEmpty": "செயலில் உள்ள வழங்குநர்கள் இன்னும் கிடைக்கவில்லை.", + "candidatePoolAllProviders": "அனைத்து வழங்குநர்களும்", + "modePackLabel": "முறைமைத் தொகுப்பு", + "routerStrategyLabel": "வழிப்படுத்தி உத்தி", + "strategyRules": "விதிகள் (6-காரணி மதிப்பீடு)", + "explorationRateLabel": "ஆய்வு விகிதம்", + "explorationRateHint": "கோரிக்கைகளில் {percent}% உகந்ததல்லாத வழங்குநர்களை ஆராயலாம்.", + "budgetCapLabel": "வரவுசெலவு உச்சவரம்பு (USD / கோரிக்கை)", + "budgetCapPlaceholder": "வரம்பு இல்லை", + "advancedWeightsTitle": "மேம்பட்டது: மதிப்பீட்டு எடைகள்", "nestedComboFlatten": "உள்ளமைக்கப்பட்ட காம்போக்களை தட்டையாக்கு", "nestedComboExecute": "உள்ளமைக்கப்பட்ட காம்போக்களை இலக்குகளாக இயக்கவும்", "effectiveRoutingShare": "செயல்திறன்மிக்க ரூட்டிங் பங்கு (எடை ÷ மொத்தம்)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "ஒதுக்கீடு", + "weightHealth": "நிலை", + "weightCostInv": "செலவு", + "weightLatencyInv": "தாமதம்", + "weightTaskFit": "பணிப் பொருத்தம்", + "weightStability": "நிலைத்தன்மை", + "weightTierPriority": "அடுக்கு", + "weightCacheAffinity": "தற்காலிகச் சேமிப்பக வெற்றிச் சார்பு", "weightSessionAvailability": "அமைப்புக்கான கிடைக்கும் நேரம்", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "நுண்ணறிவு வழிப்படுத்தல் உள்ளமைவு", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "தோல்வி-பாதுகாப்பு அடிப்படை", + "description": "ஒரு முதன்மை மாதிரியைப் பயன்படுத்தி, மாற்றுச் சங்கிலியைச் சுருக்கமாகவும் நம்பகமாகவும் வைத்திருங்கள்.", + "tip1": "மிகவும் நம்பகமான மாதிரியை முதலில் வைக்கவும்.", + "tip2": "ஒத்த தரமுள்ள 1-2 காப்பு மாதிரிகளை வைத்திருங்கள்.", + "tip3": "வழங்குநரின் தற்காலிகத் தோல்விகளைச் சமாளிக்கப் பாதுகாப்பான மறுமுயற்சிகளைப் பயன்படுத்தவும்." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "கட்டுப்படுத்தப்பட்ட போக்குவரத்துப் பிரிப்பு", + "description": "கேனரி வெளியீடுகளுக்கும் மாதிரிகளுக்கு இடையிலான படிப்படியான இடமாற்றத்திற்கும் சிறந்தது.", + "tip1": "90/10 போன்ற எச்சரிக்கையான பிரிப்புடன் தொடங்கவும்.", + "tip2": "மொத்தத்தை 100% ஆக வைத்திருந்து, மாற்றங்களுக்குப் பிறகு தானாகச் சமநிலைப்படுத்தவும்.", + "tip3": "கேனரி எடையை அதிகரிப்பதற்கு முன் வெற்றி விகிதத்தையும் தாமதத்தையும் கண்காணிக்கவும்." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "கணிக்கக்கூடிய சுமைப் பகிர்வு", + "description": "மாதிரிகள் சமமானவையாக இருந்து, சீரான விநியோகம் தேவைப்படும்போது சிறந்தது.", + "tip1": "குறைந்தது 2 மாதிரிகளைப் பயன்படுத்தவும்.", + "tip2": "திடீர் சுமை மிகைப்பைத் தவிர்க்க ஒரேநேரச் செயலாக்க வரம்புகளை அமைக்கவும்.", + "tip3": "நிறைவுச் சுமையின்போது விரைவாகத் தோல்வியடைய வரிசைக் காலக்கெடுவைப் பயன்படுத்தவும்." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "குறைந்த அமைப்புடன் விரைவான பரவல்", + "description": "கடுமையான உத்தரவாதங்கள் இல்லாமல் எளிய விநியோகம் தேவைப்படும்போது பயன்படுத்தவும்.", + "tip1": "ஒத்த தாமதச் சுயவிவரங்களைக் கொண்ட மாதிரிகளைப் பயன்படுத்தவும்.", + "tip2": "சீரற்ற தவறுகளைச் சமாளிக்க மறுமுயற்சிகளை இயக்கத்தில் வைத்திருங்கள்.", + "tip3": "கடுமையான SLA-களுக்காக அல்லாமல், பரிசோதனைக்காக இதைத் தேர்ந்தெடுக்கவும்." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "தகவமைப்பு சமநிலைப்படுத்தல்", + "description": "காலப்போக்கில் அதிகச் சுமை மையங்களைக் குறைக்க, குறைவாகப் பயன்படுத்தப்பட்ட மாதிரிகளுக்கு வழிப்படுத்துகிறது.", + "tip1": "தொடர்ச்சியான போக்குவரத்தில் சிறப்பாகச் செயல்படும்.", + "tip2": "பாதுகாப்பான சமநிலைப்படுத்தலுக்கு ஆரோக்கியச் சோதனைகளுடன் இணைக்கவும்.", + "tip3": "விநியோக மேம்பாடுகளைச் சரிபார்க்க, ஒவ்வொரு மாடலின் பயன்பாட்டையும் கண்காணிக்கவும்." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "பட்ஜெட்டுக்கு முன்னுரிமை அளிக்கும் வழிப்படுத்தல்", + "description": "விலைத் தரவுகள் கிடைக்கும்போது, குறைந்த செலவுள்ள மாடல்களுக்கு வழிப்படுத்தும்.", + "tip1": "தேர்ந்தெடுக்கப்பட்ட அனைத்து மாடல்களுக்கும் விலை விவரங்கள் இருப்பதை உறுதிசெய்யவும்.", + "tip2": "கடினமான ப்ராம்ப்ட்களுக்கு தரமான மாற்று மாடலை வைத்திருக்கவும்.", + "tip3": "செலவே முக்கிய KPI ஆக இருக்கும் தொகுதி/பின்னணி பணிகளுக்கு இதைப் பயன்படுத்தவும்." }, "reset-aware": { "title": "கணக்கு சுழற்சியை மீட்டமைத்தல்", @@ -3597,155 +3597,155 @@ "tip3": "டை பேண்டை சிறியதாக வைத்திருங்கள், அதனால் சமமான கணக்குகள் இன்னும் சீராக சுழலும்." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "சீட்டுக்கட்டு கலைப்பு விநியோகம்", + "description": "மீண்டும் கலைப்பதற்கு முன், ஒவ்வொரு சுழற்சியிலும் ஒவ்வொரு மாடலும் சரியாக ஒருமுறை பயன்படுத்தப்படும்.", + "tip1": "பயனுள்ள விநியோகத்திற்கு குறைந்தது 2 மாடல்களைப் பயன்படுத்தவும்.", + "tip2": "ஒரே மாதிரியான செயல்திறன் கொண்ட மாடல்களுடன் சிறப்பாகச் செயல்படும்.", + "tip3": "பல API கணக்குகளுக்கு இடையே சுமையைச் சமநிலைப்படுத்துவதற்கு ஏற்றது." }, "fill-first": { - "description": "Exhaust provider quotas sequentially before falling back.", - "tip1": "Use for quota-based routing with clear fallback chains.", - "tip2": "Set quotas accurately to avoid premature fallback.", - "tip3": "Works best with providers offering free tiers or credit buckets.", - "title": "Quota Exhaustion" + "description": "மாற்று வழங்குநருக்குச் செல்வதற்கு முன், வழங்குநர் ஒதுக்கீடுகளை வரிசையாக முழுமையாகப் பயன்படுத்தும்.", + "tip1": "தெளிவான மாற்றுச் சங்கிலிகளைக் கொண்ட ஒதுக்கீடு சார்ந்த வழிப்படுத்தலுக்கு இதைப் பயன்படுத்தவும்.", + "tip2": "முன்கூட்டியே மாற்று வழங்குநருக்குச் செல்வதைத் தவிர்க்க, ஒதுக்கீடுகளைத் துல்லியமாக அமைக்கவும்.", + "tip3": "இலவச அடுக்குகள் அல்லது கிரெடிட் தொகுப்புகளை வழங்கும் வழங்குநர்களுடன் சிறப்பாகச் செயல்படும்.", + "title": "ஒதுக்கீடு தீர்ந்துபோதல்" }, "auto": { - "description": "Route based on real-time scoring for cost, latency, quality, and health.", - "tip1": "Let the engine balance multiple factors automatically.", - "tip2": "Monitor which factors drive routing decisions in logs.", - "tip3": "Use for complex workloads where no single factor dominates.", - "title": "Multi-Factor Optimization" + "description": "செலவு, தாமதம், தரம் மற்றும் ஆரோக்கியத்திற்கான நிகழ்நேர மதிப்பீட்டின் அடிப்படையில் வழிப்படுத்தவும்.", + "tip1": "பல காரணிகளை என்ஜின் தானாகச் சமநிலைப்படுத்த அனுமதிக்கவும்.", + "tip2": "பதிவுகளில் வழிப்படுத்தல் முடிவுகளை எந்தக் காரணிகள் இயக்குகின்றன என்பதைக் கண்காணிக்கவும்.", + "tip3": "எந்த ஒரு காரணியும் ஆதிக்கம் செலுத்தாத சிக்கலான பணிச்சுமைகளுக்கு இதைப் பயன்படுத்தவும்.", + "title": "பல-காரணி உகப்பாக்கம்" }, "lkgp": { - "description": "Route based on historical performance and success patterns.", - "tip1": "Requires sufficient request history for accurate predictions.", - "tip2": "Good for workloads with consistent model performance patterns.", - "tip3": "Monitor prediction accuracy and adjust weights as needed.", - "title": "History-Based Routing" + "description": "வரலாற்றுச் செயல்திறன் மற்றும் வெற்றி முறைகளின் அடிப்படையில் வழிப்படுத்தவும்.", + "tip1": "துல்லியமான கணிப்புகளுக்குப் போதுமான கோரிக்கை வரலாறு தேவை.", + "tip2": "சீரான மாடல் செயல்திறன் முறைகளைக் கொண்ட பணிச்சுமைகளுக்கு ஏற்றது.", + "tip3": "கணிப்புத் துல்லியத்தைக் கண்காணித்து, தேவைக்கேற்ப எடைகளைச் சரிசெய்யவும்.", + "title": "வரலாறு சார்ந்த வழிப்படுத்தல்" }, "context-optimized": { - "description": "Optimize routing based on context window usage and token efficiency.", - "tip1": "Route long conversations to models with larger context windows.", - "tip2": "Monitor context utilization to avoid token waste.", - "tip3": "Best for conversational AI requiring extensive context retention.", - "title": "Context Optimization" + "description": "சூழல் சாளரப் பயன்பாடு மற்றும் டோக்கன் செயல்திறனின் அடிப்படையில் வழிப்படுத்தலை உகப்பாக்கவும்.", + "tip1": "நீண்ட உரையாடல்களைப் பெரிய சூழல் சாளரங்களைக் கொண்ட மாடல்களுக்கு வழிப்படுத்தவும்.", + "tip2": "டோக்கன் விரயத்தைத் தவிர்க்க, சூழல் பயன்பாட்டைக் கண்காணிக்கவும்.", + "tip3": "விரிவான சூழல் நினைவுத்திறன் தேவைப்படும் உரையாடல் AI-க்கு மிகவும் ஏற்றது.", + "title": "சூழல் உகப்பாக்கம்" }, "context-relay": { - "description": "Best when account rotation is expected and the next account must inherit a simplified task summary.", - "tip1": "Use with providers rotating accounts for the same model family.", - "tip2": "Set handoff threshold below hard quota cutoffs for summary generation time.", - "tip3": "Only set a dedicated summary model if the primary is too expensive or unstable.", - "title": "Session Continuity Priority" + "description": "கணக்கு சுழற்சி எதிர்பார்க்கப்படும்போதும், அடுத்த கணக்கு எளிமைப்படுத்தப்பட்ட பணிச் சுருக்கத்தைப் பெற வேண்டியபோதும் மிகவும் ஏற்றது.", + "tip1": "ஒரே மாடல் குடும்பத்திற்கான கணக்குகளைச் சுழற்சி முறையில் மாற்றும் வழங்குநர்களுடன் பயன்படுத்தவும்.", + "tip2": "சுருக்கத்தை உருவாக்குவதற்கான நேரத்தை வழங்க, கடின ஒதுக்கீட்டு வரம்புகளுக்குக் கீழே ஒப்படைப்பு வரம்பை அமைக்கவும்.", + "tip3": "முதன்மை மாடல் மிகவும் விலையுயர்ந்ததாகவோ நிலையற்றதாகவோ இருந்தால் மட்டுமே பிரத்யேக சுருக்க மாடலை அமைக்கவும்.", + "title": "அமர்வுத் தொடர்ச்சிக்கு முன்னுரிமை" }, "p2c": { - "description": "Route to the provider with the lowest current load based on real-time metrics.", - "tip1": "Monitor provider health metrics for accurate load assessment.", - "tip2": "Works best with homogeneous provider pools.", - "tip3": "Adjust sensitivity to avoid oscillation during traffic spikes.", - "title": "Power of Two Choices" + "description": "நிகழ்நேர அளவீடுகளின் அடிப்படையில், தற்போது மிகக் குறைந்த சுமையைக் கொண்ட வழங்குநருக்கு வழிப்படுத்தவும்.", + "tip1": "துல்லியமான சுமை மதிப்பீட்டிற்கு வழங்குநரின் ஆரோக்கிய அளவீடுகளைக் கண்காணிக்கவும்.", + "tip2": "ஒரே மாதிரியான வழங்குநர் தொகுப்புகளுடன் சிறப்பாகச் செயல்படும்.", + "tip3": "போக்குவரத்து திடீரென அதிகரிக்கும் போது அலைவுகளைத் தவிர்க்க உணர்திறனைச் சரிசெய்யவும்.", + "title": "இரண்டு தேர்வுகளின் ஆற்றல்" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", - "auto": "Intelligent Auto", - "autoDesc": "Self-healing smart routing pool with multi-factor scoring", - "lkgp": "LKGP Mode", - "lkgpDesc": "Prioritizes the last provider that successfully completed a request", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "templateFreeStack": "இலவச ஸ்டாக் ($0)", + "templateFreeStackDesc": "அனைத்து இலவச வழங்குநர்களிலும் ரவுண்ட்-ராபின் முறையில் வழிமாற்றம்: Kiro (Claude), Qoder (5 மாடல்கள்), Qwen (4 மாடல்கள்). செலவே இல்லை, குறியீடு எழுதுவது ஒருபோதும் நிற்காது.", + "auto": "நுண்ணறிவு தானியக்கம்", + "autoDesc": "பல-காரணி மதிப்பீட்டுடன் தானாகச் சீரமைந்துகொள்ளும் ஸ்மார்ட் வழிமாற்றக் குழு", + "lkgp": "LKGP பயன்முறை", + "lkgpDesc": "கடைசியாக ஒரு கோரிக்கையை வெற்றிகரமாக நிறைவு செய்த வழங்குநருக்கு முன்னுரிமை அளிக்கிறது", + "wizardGuideTitle": "காம்போக்களுடன் தொடங்குதல்", + "wizardGuideDesc": "AI போக்குவரத்தை நுண்ணறிவுடன் வழிமாற்ற மாடல் காம்போக்களை உருவாக்குங்கள்", + "wizardGuideHint": "அல்லது மேலே உள்ள + காம்போவை உருவாக்கு என்பதைக் கிளிக் செய்யவும்", + "createFirstCombo": "உங்கள் முதல் காம்போவை உருவாக்குங்கள்", + "wizardStep1Title": "உங்கள் காம்போவுக்குப் பெயரிடுங்கள்", + "wizardStep1Desc": "வழிமாற்ற விதிகளில் அடையாளம் காண உங்கள் காம்போவிற்குத் தனித்துவமான பெயரை வழங்குங்கள்", + "wizardStep2Title": "மாடல்களைச் சேர்க்கவும்", + "wizardStep2Desc": "AI மாடல்களைத் தேர்ந்தெடுத்து, அவற்றின் மாற்று முன்னுரிமை வரிசையை அமைக்கவும்", + "wizardStep3Title": "உத்தியைத் தேர்ந்தெடுக்கவும்", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "மதிப்பாய்வு செய்து சேமிக்கவும்", + "wizardStep4Desc": "உங்கள் உள்ளமைவை மதிப்பாய்வு செய்து காம்போவைச் செயல்படுத்தவும்", + "usageGuideInvokeTitle": "இந்த காம்போவை அழைப்பது எப்படி", + "usageGuideInvokeDesc": "மாடலாக காம்போவின் துல்லியமான பெயரை அனுப்பவும், எ.கா. model: \"my-combo\" (அல்லது combo/my-combo).", + "usageGuideInvokeAutoNote": "auto மற்றும் auto/* ஆகியவை உங்கள் காம்போக்களைப் பயன்படுத்தாத தனியான பூஜ்ஜிய-உள்ளமைவு ரவுட்டர் ஆகும் (ஒரு காம்போவுக்கு உண்மையாகவே auto என்று பெயரிடப்பட்டிருந்தால் தவிர).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto என்பது உண்மையான கட்டண OpenRouter தயாரிப்பு (Auto Best Available), OmniRoute மாற்றுப்பெயர் அல்ல — Settings → Routing → Hide paid models வழியாக அதை விலக்கவும்.", + "emailVisibilityStateOn": "இயக்கு", + "emailVisibilityStateOff": "முடக்கு", + "reorderHandle": "வரிசையை மாற்ற இழுக்கவும்", + "failedReorder": "மாடல்களின் வரிசையை மாற்ற முடியவில்லை", + "builderFlowTitle": "காம்போ உருவாக்கி செயல்முறை", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "அடிப்படைகள்", + "description": "பெயர் மற்றும் தொடக்க வார்ப்புரு" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "படிகள்", + "description": "வழங்குநர், மாடல் மற்றும் கணக்குத் தேர்வு" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "உத்தி", + "description": "வழிமாற்ற நடத்தை மற்றும் மேம்பட்ட அமைப்புகள்" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "ஸ்மார்ட் வழிமாற்றம்", + "description": "தானியங்கு வழிமாற்றத்திற்கான தேர்வாளர் குழு, முன்வரையறைகள் மற்றும் மதிப்பீடு" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "மதிப்பாய்வு", + "description": "சேமிப்பதற்கு முன் இறுதிச் சரிபார்ப்பு" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", - "builderDuplicateExact": "This exact provider/model/account step is already in the combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", - "builderStagesDescription": "Complete each stage in order to define combos, build steps, select routing strategy, and review results.", - "builderStepsDescription": "Build each combo step in order: provider, model, then account. This allows reusing the same provider and model across different accounts.", - "selectProvider": "Select Provider", - "selectProviderPlaceholder": "Select a provider", - "selectModel": "Select Model", - "selectModelPlaceholder": "Select a provider first", - "selectAccount": "Select Account", - "selectComboToReference": "Select combo to reference", - "comboReference": "Combo Reference", - "addComboReference": "Add Combo Reference", - "addStepBeforeContinue": "Please add at least one step before proceeding to the next stage.", - "previewNextStep": "Preview next step", - "autoSelectAccount": "Automatically select account at runtime", - "modePackBalanced": "Balanced", - "modePackBudget": "Budget", - "modePackPerformance": "Performance", - "modePackCustom": "Custom", - "browseLegacyCatalog": "Browse legacy combo catalog", - "agentFeaturesTitle": "Agent Features", - "agentFeaturesDescription": "Enable advanced features for agents using this combo", + "builderStageVisited": "கட்டம் நிறைவடைந்தது", + "builderStageCurrent": "தற்போதைய கட்டம்", + "builderStagePending": "நிலுவையில் உள்ளது", + "builderStageLocked": "பூட்டப்பட்டுள்ளது — முதலில் முந்தைய கட்டத்தை நிறைவு செய்யவும்", + "builderTitle": "ஒரு Combo-ஐ உருவாக்கவும்", + "builderBrowseCatalog": "பட்டியலை உலாவவும்", + "builderProvider": "வழங்குநர்", + "builderLoadingProviders": "Providers ஏற்றப்படுகின்றன...", + "builderSelectProvider": "Provider-ஐத் தேர்ந்தெடுக்கவும்", + "builderModel": "மாதிரி", + "builderSelectModel": "Model-ஐத் தேர்ந்தெடுக்கவும்", + "builderProviderFirst": "முதலில் Provider-ஐத் தேர்ந்தெடுக்கவும்", + "builderAccount": "கணக்கு", + "builderPreview": "முன்னோட்டம்", + "builderAddStep": "படியைச் சேர்க்கவும்", + "builderDuplicateExact": "இதே Provider/Model/Account படி ஏற்கனவே Combo-வில் உள்ளது.", + "builderComboRef": "Combo குறிப்பு", + "builderAddComboRef": "Combo குறிப்பைச் சேர்க்கவும்", + "builderComboRefStep": "Combo குறிப்பைச் சேர்க்கவும்", + "builderPinnedAccount": "பின் செய்யப்பட்ட கணக்கு", + "builderLegacyEntry": "மரபுவழிப் பதிவு", + "reviewName": "பெயர்", + "reviewStrategy": "உத்தி", + "reviewSteps": "படிகள்", + "reviewAccounts": "கணக்குகள்", + "reviewProviders": "வழங்குநர்கள்", + "reviewComboRefs": "Combo குறிப்புகள்", + "reviewAdvanced": "மேம்பட்ட அமைப்புகள்", + "reviewAgentFlags": "Agent கொடிகள்", + "reviewSequence": "Model வரிசை", + "reviewNoSteps": "படிகள் எதுவும் உள்ளமைக்கப்படவில்லை", + "builderStagesDescription": "Combos-ஐ வரையறுக்கவும், படிகளை உருவாக்கவும், வழிப்படுத்தல் உத்தியைத் தேர்ந்தெடுக்கவும், முடிவுகளை மதிப்பாய்வு செய்யவும் ஒவ்வொரு கட்டத்தையும் வரிசையாக நிறைவு செய்யவும்.", + "builderStepsDescription": "ஒவ்வொரு Combo படியையும் இந்த வரிசையில் உருவாக்கவும்: Provider, Model, பின்னர் கணக்கு. இதனால் ஒரே Provider மற்றும் Model-ஐ வெவ்வேறு கணக்குகளில் மீண்டும் பயன்படுத்தலாம்.", + "selectProvider": "Provider-ஐத் தேர்ந்தெடுக்கவும்", + "selectProviderPlaceholder": "ஒரு Provider-ஐத் தேர்ந்தெடுக்கவும்", + "selectModel": "Model-ஐத் தேர்ந்தெடுக்கவும்", + "selectModelPlaceholder": "முதலில் ஒரு Provider-ஐத் தேர்ந்தெடுக்கவும்", + "selectAccount": "கணக்கைத் தேர்ந்தெடுக்கவும்", + "selectComboToReference": "குறிப்பிட வேண்டிய Combo-ஐத் தேர்ந்தெடுக்கவும்", + "comboReference": "Combo குறிப்பு", + "addComboReference": "Combo குறிப்பைச் சேர்க்கவும்", + "addStepBeforeContinue": "அடுத்த கட்டத்திற்குச் செல்வதற்கு முன் குறைந்தது ஒரு படியையாவது சேர்க்கவும்.", + "previewNextStep": "அடுத்த படியை முன்னோட்டமிடு", + "autoSelectAccount": "இயக்க நேரத்தில் கணக்கைத் தானாகத் தேர்ந்தெடு", + "modePackBalanced": "சமநிலை", + "modePackBudget": "பட்ஜெட்", + "modePackPerformance": "செயல்திறன்", + "modePackCustom": "தனிப்பயன்", + "browseLegacyCatalog": "பழைய காம்போ பட்டியலை உலாவு", + "agentFeaturesTitle": "முகவர் அம்சங்கள்", + "agentFeaturesDescription": "இந்த காம்போவைப் பயன்படுத்தும் முகவர்களுக்கான மேம்பட்ட அம்சங்களை இயக்கு", "responseValidationTitle": "பதில் சரிபார்ப்பு", "responseValidationHelp": "ஒரு 200 OK பாடி இந்த சோதனைகளில் தோல்வியடையும் போது (உதவியாளர் உள்ளடக்கம்), அடுத்த இலக்கிற்கு மாறவும்.", "responseValidationForbidden": "தடைசெய்யப்பட்ட சப்ஸ்ட்ரிங்குகள் (வரிக்கு ஒன்று)", @@ -3753,13 +3753,13 @@ "responseValidationMinLength": "குறைந்தபட்ச உள்ளடக்க நீளம் (எழுத்துக்கள்)", "responseValidationJsonPaths": "JSON-பாதை சோதனைகள்", "responseValidationAddCheck": "+ சோதனையைச் சேர்", - "agentFeaturesSystemMessageOverride": "Override system message", - "agentFeaturesSystemMessagePlaceholder": "You are an expert assistant...", - "agentFeaturesSystemMessageHint": "System message override for agents", + "agentFeaturesSystemMessageOverride": "கணினிச் செய்தியை மேலெழுது", + "agentFeaturesSystemMessagePlaceholder": "நீங்கள் ஒரு நிபுணத்துவ உதவியாளர்...", + "agentFeaturesSystemMessageHint": "முகவர்களுக்கான கணினிச் செய்தி மேலெழுதுதல்", "agentFeaturesToolFilterRegex": "/regex-pattern/", - "agentFeaturesToolFilterHint": "Tool filter regex for agents", - "agentFeaturesContextCacheHint": "Enable in-context cache for agent tools", - "agentFeaturesContextCacheProtection": "Protect cache from agent tool mutations", + "agentFeaturesToolFilterHint": "முகவர்களுக்கான கருவி வடிகட்டி regex", + "agentFeaturesContextCacheHint": "முகவர் கருவிகளுக்கான சூழல்-உள் தற்காலிகச் சேமிப்பை இயக்கு", + "agentFeaturesContextCacheProtection": "முகவர் கருவி மாற்றங்களிலிருந்து தற்காலிகச் சேமிப்பைப் பாதுகாத்திடு", "agentFeaturesContextLength": "சூழல் நீளம்", "agentFeaturesContextLengthPlaceholder": "எ.கா. 128000", "agentFeaturesContextLengthHint": "இந்த சேர்க்கைக்கான சூழல் சாளரத்தை /v1/மாடல்களில் வரையறுக்கிறது.", @@ -3788,40 +3788,40 @@ "duplicateAutoComboTitle": "{name} இலிருந்து நிலையான கம்போ உருவாக்கவும்" }, "costs": { - "title": "Costs", - "pageDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "overview": "Overview", - "budget": "Budget", - "totalCost": "Total Cost", - "breakdown": "Cost Breakdown", - "noData": "No cost data", - "byModel": "By Model", - "byProvider": "By Provider", - "range7d": "7 Days", - "range30d": "30 Days", - "range90d": "90 Days", - "range180d": "180 Days", - "range365d": "365 Days", - "rangeAll": "All Time", - "spend30d": "Spend 30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", - "overviewTitle": "Cost Overview", - "spend7d": "Spend 7D", - "avgCostPerRequest": "Avg Cost / Request", - "noCostDataDescription": "Start making requests to see cost data appear here. Costs are tracked automatically for all providers.", - "spendToday": "Spend Today", - "overviewLoadFailed": "Failed to load cost overview", - "overviewDescription": "Real-time spending breakdown across all connected providers and models", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", - "noCostDataTitle": "No cost data yet", - "topModels": "Top Models", - "requestsInWindow": "Requests in Window", + "title": "செலவுகள்", + "pageDescription": "அனைத்து வழங்குநர்களிலும் செலவினங்களைக் கண்காணித்து, போக்குகளைப் பகுப்பாய்வு செய்து, உங்கள் AI பட்ஜெட்டை நிர்வகியுங்கள்", + "overview": "மேலோட்டம்", + "budget": "பட்ஜெட்", + "totalCost": "மொத்தச் செலவு", + "breakdown": "செலவு விவரம்", + "noData": "செலவுத் தரவு இல்லை", + "byModel": "மாதிரி வாரியாக", + "byProvider": "வழங்குநர் வாரியாக", + "range7d": "7 நாட்கள்", + "range30d": "30 நாட்கள்", + "range90d": "90 நாட்கள்", + "range180d": "180 நாட்கள்", + "range365d": "365 நாட்கள்", + "rangeAll": "எல்லாக் காலமும்", + "spend30d": "30 நாள் செலவு", + "activeModels": "செயலில் உள்ள மாதிரிகள்", + "flatRateEstimateNotice": "நிலையான கட்டணச் சந்தாக்களுக்கான டோக்கன்-விலை மதிப்பீடுகள் இதில் அடங்கும்; கட்டணமிடப்பட்ட செலவு அல்ல.", + "flatRateEstimateForecast": "முன்கணிப்பில் நிலையான கட்டண மதிப்பீடுகள் அடங்கும்.", + "selectedWindow": "தேர்ந்தெடுக்கப்பட்ட காலச்சாளரம்", + "activeProviders": "செயலில் உள்ள வழங்குநர்கள்", + "overviewTitle": "செலவு மேலோட்டம்", + "spend7d": "7 நாள் செலவு", + "avgCostPerRequest": "கோரிக்கை ஒன்றிற்கான சராசரிச் செலவு", + "noCostDataDescription": "செலவுத் தரவு இங்கே தோன்றுவதைக் காண கோரிக்கைகளை அனுப்பத் தொடங்குங்கள். அனைத்து வழங்குநர்களுக்குமான செலவுகள் தானாகவே கண்காணிக்கப்படுகின்றன.", + "spendToday": "இன்றைய செலவு", + "overviewLoadFailed": "செலவுக் கண்ணோட்டத்தை ஏற்ற முடியவில்லை", + "overviewDescription": "இணைக்கப்பட்ட அனைத்து வழங்குநர்கள் மற்றும் மாடல்களின் நிகழ்நேர செலவு விவரம்", + "providerShare": "வழங்குநர் பங்கு", + "topProviders": "முன்னணி வழங்குநர்கள்", + "costTrend": "செலவுப் போக்கு", + "noCostDataTitle": "இன்னும் செலவுத் தரவு இல்லை", + "topModels": "முன்னணி மாடல்கள்", + "requestsInWindow": "காலச்சாளரத்தில் உள்ள கோரிக்கைகள்", "tokenUsage": "டோக்கன் பயன்பாடு", "totalTokens": "மொத்த டோக்கன்கள்", "inputTokens": "உள்ளீடு டோக்கன்கள்", @@ -3881,139 +3881,139 @@ "showingTopCostRows": "பொருந்தும் {total} வரிசைகளில் {shown} காட்டப்படுகிறது (முதல் 50)." }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", - "available": "Available Endpoints", + "title": "API முனைப்புள்ளி", + "subtitle": "பெரும்பாலான SDKs மற்றும் கருவிகளுடன் OpenAI-இணக்கமான முனைப்புள்ளியைப் பயன்படுத்துங்கள்.", + "testEndpoint": "முனைப்புள்ளியைச் சோதிக்கவும் →", + "advancedProtocols": "மேம்பட்ட நெறிமுறைகள்", + "available": "கிடைக்கக்கூடிய முனைப்புள்ளிகள்", "cloudProxy": "Cloud Proxy", - "disableConfirm": "Are you sure you want to disable cloud proxy?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", - "registeredKeys": "Registered Keys", + "disableConfirm": "கிளவுட் ப்ராக்ஸியை முடக்க விரும்புகிறீர்களா?", + "baseUrl": "அடிப்படை URL", + "apiKeyLabel": "API விசை", + "registeredKeys": "பதிவுசெய்யப்பட்ட விசைகள்", "chatCompletions": "Chat Completions", - "responses": "Responses", - "listModels": "List Models", - "usingCloudProxy": "Using Cloud Proxy", - "usingLocalServer": "Using Local Server", - "machineId": "Machine ID: {id}...", - "disableCloud": "Disable Cloud", - "enableCloud": "Enable Cloud", - "modelsAcrossEndpoints": "{models} models across {endpoints} endpoints", - "loadingModels": "Loading available models...", - "chatDesc": "Streaming & non-streaming chat with all providers", - "embeddings": "Embeddings", - "embeddingsDesc": "Text embeddings for search & RAG pipelines", - "imageGeneration": "Image Generation", - "imageDesc": "Generate images from text prompts", + "responses": "பதில்கள்", + "listModels": "மாடல்களைப் பட்டியலிடு", + "usingCloudProxy": "கிளவுட் ப்ராக்ஸி பயன்படுத்தப்படுகிறது", + "usingLocalServer": "உள்ளூர் சேவையகம் பயன்படுத்தப்படுகிறது", + "machineId": "இயந்திர ID: {id}...", + "disableCloud": "கிளவுடை முடக்கு", + "enableCloud": "கிளவுடை இயக்கு", + "modelsAcrossEndpoints": "{endpoints} முனைப்புள்ளிகளில் {models} மாடல்கள்", + "loadingModels": "கிடைக்கக்கூடிய மாடல்கள் ஏற்றப்படுகின்றன...", + "chatDesc": "அனைத்து வழங்குநர்களுடனும் ஸ்ட்ரீமிங் மற்றும் ஸ்ட்ரீமிங் அல்லாத அரட்டை", + "embeddings": "உட்பொதிவுகள்", + "embeddingsDesc": "தேடல் மற்றும் RAG பைப்லைன்களுக்கான உரை உட்பொதிவுகள்", + "imageGeneration": "பட உருவாக்கம்", + "imageDesc": "உரைத் தூண்டுதல்களிலிருந்து படங்களை உருவாக்குங்கள்", "rerank": "Rerank", - "rerankDesc": "Rerank documents by relevance to a query", - "audioTranscription": "Audio Transcription", - "audioTranscriptionDesc": "Transcribe audio files to text (Whisper)", - "textToSpeech": "Text to Speech", - "textToSpeechDesc": "Convert text to natural-sounding speech", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", - "moderations": "Moderations", - "moderationsDesc": "Content moderation and safety classification", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", - "categoryCore": "Core APIs", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", - "categoryUtility": "Utility & Management", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", - "enableCloudTitle": "Enable Cloud Proxy", - "whatYouGet": "What you will get", - "cloudBenefitAccess": "Access your API from anywhere in the world", - "cloudBenefitShare": "Share endpoint with your team easily", - "cloudBenefitPorts": "No need to open ports or configure firewall", - "cloudBenefitEdge": "Fast global edge network", - "cloudSessionNote": "Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted.", - "cloudUnstableNote": "Cloud is currently unstable with Claude Code OAuth in some cases.", - "cloudConnected": "Cloud Proxy connected!", - "connectingToCloud": "Connecting to cloud...", - "verifyingConnection": "Verifying connection...", - "connecting": "Connecting...", - "verifying": "Verifying...", - "connected": "Connected!", - "disableCloudTitle": "Disable Cloud Proxy", - "disableWarning": "All auth sessions will be deleted from cloud.", - "syncingData": "Syncing latest data...", - "disablingCloud": "Disabling cloud...", - "syncing": "Syncing...", - "disabling": "Disabling...", - "cloudConnectedVerified": "Cloud Proxy connected and verified!", - "connectedVerificationPending": "Connected — verification pending", - "connectedVerificationPendingWithError": "Connected — verification pending: {error}", - "cloudDisabledSuccess": "Cloud disabled successfully", - "syncedSuccess": "Synced successfully", - "failedDisable": "Failed to disable cloud", - "failedEnable": "Failed to enable cloud", - "cloudRequestTimeout": "Cloud request timeout", - "cloudRequestFailed": "Cloud request failed", - "cloudWorkerUnreachable": "Could not reach cloud worker. Make sure the cloud service is running (npm run dev in /cloud).", - "connectionFailed": "Connection failed", - "syncFailed": "Failed to sync cloud data", + "rerankDesc": "வினவலுக்கான தொடர்புத்தன்மையின் அடிப்படையில் ஆவணங்களை மறுதரவரிசைப்படுத்துங்கள்", + "audioTranscription": "ஒலி உரைமாற்றம்", + "audioTranscriptionDesc": "ஒலிக் கோப்புகளை உரையாக மாற்றுங்கள் (Whisper)", + "textToSpeech": "உரையிலிருந்து பேச்சு", + "textToSpeechDesc": "உரையை இயல்பாக ஒலிக்கும் பேச்சாக மாற்றுங்கள்", + "musicGeneration": "இசை உருவாக்கம்", + "musicDesc": "ComfyUI (Stable Audio, MusicGen) வழியாக இசை மற்றும் ஒலித் தடங்களை உருவாக்குங்கள்", + "moderations": "மிதப்படுத்தல்கள்", + "moderationsDesc": "உள்ளடக்க மிதப்படுத்தல் மற்றும் பாதுகாப்பு வகைப்பாடு", + "responsesDesc": "Codex மற்றும் மேம்பட்ட ஏஜென்ட் பணிப்பாய்வுகளுக்கான OpenAI Responses API", + "listModelsDesc": "இணைக்கப்பட்ட அனைத்து வழங்குநர்களிலும் கிடைக்கும் அனைத்து மாதிரிகளையும் பட்டியலிடு", + "settingsApiDesc": "API வழியாக OmniRoute உள்ளமைவைப் படித்து மாற்று", + "settingsApi": "அமைப்புகள் API", + "categoryCore": "மைய API-கள்", + "categoryMedia": "ஊடகம் & பன்முகத் திறன்", + "categorySearch": "தேடல் & கண்டறிதல்", + "categoryUtility": "பயன்பாட்டுக் கருவிகள் & மேலாண்மை", + "webSearch": "இணையத் தேடல்", + "webSearchDesc": "தானியங்கி மாற்றுவழி மற்றும் தேக்கக வசதியுடன் பல வழங்குநர்களில் ஒருங்கிணைந்த இணையத் தேடல்", + "searchProvider": "தேடல் வழங்குநர்", + "searchProviderDesc": "இந்த வழங்குநர் POST /v1/search வழியான இணையத் தேடலுக்குப் பயன்படுத்தப்படுகிறது. மாதிரி உள்ளமைவு தேவையில்லை — API விசை இணைக்கப்பட்டதும் தேடல் வழங்குநர்கள் பயன்படுத்தத் தயாராக இருக்கும்.", + "enableCloudTitle": "Cloud Proxy-ஐ இயக்கு", + "whatYouGet": "நீங்கள் பெறுபவை", + "cloudBenefitAccess": "உலகின் எந்த இடத்திலிருந்தும் உங்கள் API-ஐ அணுகுங்கள்", + "cloudBenefitShare": "உங்கள் குழுவுடன் endpoint-ஐ எளிதாகப் பகிருங்கள்", + "cloudBenefitPorts": "port-களைத் திறக்கவோ firewall-ஐ உள்ளமைக்கவோ தேவையில்லை", + "cloudBenefitEdge": "வேகமான உலகளாவிய edge network", + "cloudSessionNote": "Cloud உங்கள் அங்கீகார அமர்வை 1 நாளுக்கு வைத்திருக்கும். பயன்படுத்தப்படாவிட்டால், அது தானாகவே நீக்கப்படும்.", + "cloudUnstableNote": "சில சந்தர்ப்பங்களில் Claude Code OAuth உடன் Cloud தற்போது நிலையற்றதாக உள்ளது.", + "cloudConnected": "Cloud Proxy இணைக்கப்பட்டது!", + "connectingToCloud": "Cloud உடன் இணைக்கிறது...", + "verifyingConnection": "இணைப்பைச் சரிபார்க்கிறது...", + "connecting": "இணைக்கிறது...", + "verifying": "சரிபார்க்கிறது...", + "connected": "இணைக்கப்பட்டது!", + "disableCloudTitle": "Cloud Proxy-ஐ முடக்கு", + "disableWarning": "அனைத்து அங்கீகார அமர்வுகளும் Cloud-இலிருந்து நீக்கப்படும்.", + "syncingData": "சமீபத்திய தரவை ஒத்திசைக்கிறது...", + "disablingCloud": "Cloud-ஐ முடக்குகிறது...", + "syncing": "ஒத்திசைக்கிறது...", + "disabling": "முடக்குகிறது...", + "cloudConnectedVerified": "Cloud Proxy இணைக்கப்பட்டுச் சரிபார்க்கப்பட்டது!", + "connectedVerificationPending": "இணைக்கப்பட்டது — சரிபார்ப்பு நிலுவையில் உள்ளது", + "connectedVerificationPendingWithError": "இணைக்கப்பட்டது — சரிபார்ப்பு நிலுவையில் உள்ளது: {error}", + "cloudDisabledSuccess": "Cloud வெற்றிகரமாக முடக்கப்பட்டது", + "syncedSuccess": "வெற்றிகரமாக ஒத்திசைக்கப்பட்டது", + "failedDisable": "Cloud-ஐ முடக்க முடியவில்லை", + "failedEnable": "கிளவுடை இயக்க முடியவில்லை", + "cloudRequestTimeout": "கிளவுட் கோரிக்கைக்கான நேரம் முடிந்தது", + "cloudRequestFailed": "கிளவுட் கோரிக்கை தோல்வியடைந்தது", + "cloudWorkerUnreachable": "கிளவுட் வொர்க்கரை அணுக முடியவில்லை. கிளவுட் சேவை இயங்குவதை உறுதிசெய்யவும் (/cloud இல் npm run dev ஐ இயக்கவும்).", + "connectionFailed": "இணைப்பு தோல்வியடைந்தது", + "syncFailed": "கிளவுட் தரவை ஒத்திசைக்க முடியவில்லை", "cloudflaredTitle": "Cloudflare Quick Tunnel", - "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredDescription": "இந்த முனைப்புள்ளிக்காக Cloudflare Quick Tunnel ஒன்றை உருவாக்கவும்.", + "cloudflaredUrlNotice": "தற்காலிக Cloudflare Quick Tunnel ஒன்றை உருவாக்கும். ஒவ்வொரு மறுதொடக்கத்திற்குப் பிறகும் URL மாறும்.", + "cloudflaredEnable": "Tunnel-ஐ இயக்கு", + "cloudflaredInstallAndEnable": "நிறுவி இயக்கு", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "இயங்குகிறது", + "cloudflaredStarting": "தொடங்குகிறது", + "cloudflaredStoppedState": "நிறுத்தப்பட்டது", + "cloudflaredNotInstalled": "நிறுவப்படவில்லை", + "cloudflaredUnsupported": "ஆதரிக்கப்படவில்லை", + "cloudflaredError": "பிழை", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", - "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after every restart.", - "cloudflaredUnsupportedNote": "This platform is not supported for managed installs. Install cloudflared manually or point CLOUDFLARED_BIN to an existing binary.", + "cloudflaredTemporaryNote": "Quick Tunnel URL-கள் தற்காலிகமானவை; ஒவ்வொரு மறுதொடக்கத்திற்குப் பிறகும் அவை மாறும்.", + "cloudflaredUnsupportedNote": "நிர்வகிக்கப்பட்ட நிறுவல்களை இந்தத் தளம் ஆதரிக்கவில்லை. cloudflared-ஐ கைமுறையாக நிறுவவும் அல்லது CLOUDFLARED_BIN-ஐ ஏற்கனவே உள்ள பைனரிக்குச் சுட்டிக்காட்டவும்.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", - "providerModelsTitle": "{provider} — Models", - "noModelsForProvider": "No models available for this provider.", + "cloudflaredLastError": "கடைசிப் பிழை: {error}", + "providerModelsTitle": "{provider} — மாதிரிகள்", + "noModelsForProvider": "இந்த வழங்குநருக்கு மாதிரிகள் எதுவும் கிடைக்கவில்லை.", "chat": "Chat", - "embedding": "Embedding", - "image": "Image", - "custom": "custom", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "embedding": "உட்பொதித்தல்", + "image": "படம்", + "custom": "தனிப்பயன்", + "modelsCount": "{count, plural, one {# மாதிரி} other {# மாதிரிகள்}}", + "sectionTitle": "ஒருங்கிணைப்புப் பரப்பு", + "sectionDescription": "OpenAI-இணக்கமான API-கள் மற்றும் செயல்பாட்டு நெறிமுறை முனைப்புள்ளிகள்", "tabApis": "APIகள்", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "நெறிமுறைகள்", + "tabsAria": "முனைப்புள்ளிப் பிரிவுகள்", + "protocolsTitle": "நெறிமுறைகள்", + "protocolsDescription": "MCP மற்றும் A2A ஆகியவை பிரத்யேக கண்காணிப்புத் திறன் மற்றும் கட்டுப்பாடுகளைக் கொண்ட முதன்மை முனைப்புள்ளிகள்.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "stdio வழியான Model Context Protocol", + "a2aCardTitle": "A2A சேவையகம்", + "a2aCardDescription": "Agent2Agent JSON-RPC முனைப்புள்ளி", + "protocolToolsLabel": "கருவிகள்", + "protocolTasksLabel": "பணிகள்", + "protocolActiveStreamsLabel": "செயலில் உள்ள ஸ்ட்ரீம்கள்", + "protocolLastActivity": "கடைசிச் செயல்பாடு", + "quickStart": "விரைவுத் தொடக்கம்", + "openMcpDashboard": "MCP நிர்வாகத்தைத் திற", + "openA2aDashboard": "A2A நிர்வாகத்தைத் திற", + "mcpQuickStartTitle": "MCP விரைவுத் தொடக்கம்", + "mcpQuickStartStep1": "MCP சேவையகத்தை `omniroute --mcp` மூலம் இயக்கவும்.", + "mcpQuickStartStep2": "stdio போக்குவரத்து வழியாக இணைக்க உங்கள் MCP கிளையண்டை உள்ளமைக்கவும்.", + "mcpQuickStartStep3": "`omniroute_get_health` மற்றும் `omniroute_list_combos` போன்ற கருவுகளை அழைக்கவும்.", + "a2aQuickStartTitle": "A2A விரைவுத் தொடக்கம்", + "a2aQuickStartStep1": "`/.well-known/agent.json` இல் முகவர் அட்டையைக் கண்டறியவும்.", + "a2aQuickStartStep2": "`message/send` அல்லது `message/stream` ஐப் பயன்படுத்தி `POST /a2a` க்கு JSON-RPC கோரிக்கைகளை அனுப்பவும்.", + "a2aQuickStartStep3": "`tasks/get` மற்றும் `tasks/cancel` ஐப் பயன்படுத்தி பணிகளைக் கண்காணித்து கட்டுப்படுத்தவும்.", + "completionsLegacy": "நிறைவாக்கங்கள் (மரபுவழி)", + "completionsLegacyDesc": "மரபுவழி OpenAI உரை நிறைவாக்கங்கள் — prompt சரம் மற்றும் messages அணிவரிசை வடிவங்கள் இரண்டையும் ஏற்கிறது", "messagesApi": "செய்திகள்", "messagesApiDesc": "Claude-இணக்கமான வழங்குநர்களுக்கான Native Anthropic Messages API வடிவம்", "imageEdits": "படத் திருத்தங்கள்", @@ -4022,41 +4022,41 @@ "batchApiDesc": "பெரிய அளவிலான கோரிக்கைகளை ஒத்திசைவற்ற முறையில் செயலாக்கவும் (OpenAI- இணக்கமானது)", "filesApi": "கோப்புகள் API", "filesApiDesc": "தொகுதி செயலாக்கத்திற்கான கோப்புகளைப் பதிவேற்றி நிர்வகிக்கவும்", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "காணொளி உருவாக்கம்", + "videoDesc": "ComfyUI மற்றும் Stable Video Diffusion போன்ற AI மாதிரிகளைப் பயன்படுத்தி காணொளிகளை உருவாக்கவும்.", + "tailscaleRequestFailed": "Tailscale நிலையை ஏற்ற முடியவில்லை", + "tailscaleEnableFailed": "Tailscale Funnel ஐ இயக்க முடியவில்லை", + "tailscaleWaitingForLogin": "திறக்கப்பட்ட உலாவித் தாவலில் Tailscale உள்நுழைவை நிறைவு செய்யவும். OmniRoute தானாகவே மீண்டும் முயற்சிக்கும்.", + "tailscaleLoginTimedOut": "Tailscale உள்நுழைவுக்காகக் காத்திருந்த நேரம் முடிந்தது", + "tailscaleWaitingForFunnel": "திறக்கப்பட்ட உலாவித் தாவலில் இந்தச் சாதனத்திற்கான Funnel ஐ இயக்கவும். OmniRoute தொடர்ந்து நிலையைச் சரிபார்க்கும்.", + "tailscaleFunnelTimedOut": "Tailscale Funnel இயக்கப்படுவதற்காகக் காத்திருந்த நேரம் முடிந்தது", + "tailscaleStarted": "Tailscale Funnel இயக்கப்பட்டது", + "tailscaleDisableFailed": "Tailscale Funnel ஐ முடக்க முடியவில்லை", + "tailscaleStopped": "Tailscale Funnel முடக்கப்பட்டது", + "tailscaleInstallFailed": "Tailscale ஐ நிறுவ முடியவில்லை", + "tailscaleInstallProgress": "செயல்படுகிறது...", + "tailscaleInstalled": "Tailscale வெற்றிகரமாக நிறுவப்பட்டது", + "tailscaleRunning": "இயங்குகிறது", + "tailscaleNeedsLogin": "உள்நுழைவு தேவை", + "tailscaleStoppedState": "நிறுத்தப்பட்டது", + "tailscaleNotInstalled": "நிறுவப்படவில்லை", + "tailscaleUnsupported": "ஆதரிக்கப்படவில்லை", + "tailscaleError": "பிழை", + "tailscaleDisable": "Funnel ஐ நிறுத்து", + "tailscaleInstallAndEnable": "நிறுவி இயக்கு", + "tailscaleLoginAndEnable": "உள்நுழைந்து இயக்கு", + "tailscaleEnable": "Funnel ஐ இயக்கு", + "tailscaleUrlNotice": "உங்கள் Tailscale .ts.net முகவரியைப் பயன்படுத்துகிறது. முதல் பயன்பாட்டின்போது உள்நுழைவும் Funnel ஒப்புதலும் தேவைப்படலாம்.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", - "tailscaleSudoLabel": "Sudo Password (required on macOS/Linux)", + "tailscaleNeedsLoginHint": "இந்தக் கணினியை Tailscale உடன் அங்கீகரித்து, பின்னர் Funnel ஐ இயக்கவும்.", + "tailscaleBinaryPath": "இருமக் கோப்பு: {path}", + "tailscaleLastError": "கடைசிப் பிழை: {error}", + "tailscaleInstallTitle": "Tailscale-ஐ நிறுவு", + "tailscaleInstallIntro": "இந்தக் கணினியில் Tailscale-ஐ நிறுவி, Funnel-ஐ இயக்க OmniRoute-ஐத் தயார்படுத்துகிறது.", + "tailscaleInstallPasswordHint": "macOS மற்றும் Linux-இல், தொகுப்பை நிறுவவும் daemon-ஐத் தொடங்கவும் sudo தேவைப்படலாம்.", + "tailscaleSudoPlaceholder": "விருப்பத்திற்குரிய sudo கடவுச்சொல்", + "tailscaleInstalling": "நிறுவப்படுகிறது", + "tailscaleSudoLabel": "Sudo கடவுச்சொல் (macOS/Linux-இல் தேவை)", "ngrokTitle": "ngrok சுரங்கப்பாதை", "ngrokRunning": "ஓடுகிறது", "ngrokStarting": "தொடங்குகிறது", @@ -4089,9 +4089,9 @@ "statusRunning": "இயங்குகிறது", "tunnels": "டன்னல்கள்", "activeTunnelCount": "{active} / {total} செயலில் உள்ளது", - "badgeLocal": "LOCAL", - "badgeProtected": "PROTECTED", - "badgeInternal": "INTERNAL", + "badgeLocal": "உள்ளூர்", + "badgeProtected": "பாதுகாக்கப்பட்டது", + "badgeInternal": "உள்ளமைப்பு", "catalogLoadFailed": "HTTP {status} உடன் API பட்டியல் கோரிக்கை தோல்வியடைந்தது", "catalogLoadFailedGeneric": "API பட்டியலை ஏற்ற முடியவில்லை", "apiKeysLoadFailed": "API விசைகளை ஏற்ற முடியவில்லை ({status})", @@ -4108,7 +4108,7 @@ "all": "அனைத்தும்", "more": "+{count} மேலும்", "showInternalTooltip": "உள் வழிகளைக் காட்டவும் அல்லது மறைக்கவும் (இயல்பாக மறைக்கப்பட்டிருக்கும்)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Bearer அங்கீகாரம்", "requestBody": "கோரிக்கை உள்ளடக்கம்", "close": "மூடவும்", "tryIt": "முயற்சித்துப் பார்க்கவும்", @@ -4144,9 +4144,9 @@ "tierPublic": "பொதுவானது", "hideInternal": "உள் இருப்பவற்றை மறை", "showInternal": "உள் இருப்பவற்றைக் காட்டு", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "தனிப்பயன் கணினித் தூண்டுரை", + "customSystemPromptDescription": "ஒவ்வொரு மாதிரிக் கோரிக்கையிலும் தனிப்பயன் கணினித் தூண்டுரையைச் சேர்", + "customSystemPromptPlaceholder": "எ.கா. எப்போதும் கடற்கொள்ளையர் பாணியில் பதிலளி...", "obsidianEnterToken": "தயவுசெய்து ஒரு Obsidian API டோக்கனை உள்ளிடவும்", "obsidianConnectFailed": "இணைக்க முடியவில்லை", "obsidianConnectionFailed": "இணைப்பு தோல்வியடைந்தது", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "டோக்கன் கட்டமைக்கப்பட்டுள்ளது. Notion கருவிகள் MCP மூலம் கிடைக்கின்றன." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "இறுதிப்புள்ளி ப்ராக்ஸி", + "tabApiEndpoints": "API இறுதிப்புள்ளிகள்", + "apiEndpointsTitle": "API இறுதிப்புள்ளிகள்", + "apiEndpointsDescription": "பிற பயன்பாடுகள் மற்றும் சேவைகளால் பயன்படுத்தக்கூடிய பின்தள API இறுதிப்புள்ளிகள். ஆவணங்கள் மற்றும் சோதனை வசதிகளுடன் கிடைக்கும் அனைத்து REST API-களும் இந்தப் பிரிவில் பட்டியலிடப்படும்.", + "comingSoon": "விரைவில் வருகிறது", + "plannedFeatures": "திட்டமிடப்பட்ட அம்சங்கள்", + "featureRestApi": "ஊடாடும் ஆவணங்களுடன் கூடிய REST API இறுதிப்புள்ளிப் பட்டியல்", + "featureWebhooks": "Webhook உள்ளமைவு மற்றும் நிகழ்வுச் சந்தாக்கள்", + "featureSwagger": "OpenAPI / Swagger விவரக்குறிப்பின் தானியங்கு உருவாக்கம்", + "featureAuth": "ஒவ்வொரு இறுதிப்புள்ளிக்குமான API விசை மற்றும் OAuth வரம்பு மேலாண்மை" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP கட்டுப்பாட்டுப் பலகம் ஏற்றப்படுகிறது...", + "activate": "செயல்படுத்து", + "deactivate": "செயலிழக்கச் செய்", + "confirmSwitchCombo": "\"{combo}\" சேர்க்கையை {action}வதை உறுதிப்படுத்துகிறீர்களா?", + "switchComboFailed": "சேர்க்கையின் நிலையை மாற்ற முடியவில்லை.", + "switchComboSuccess": "\"{combo}\" சேர்க்கை புதுப்பிக்கப்பட்டது.", + "confirmApplyProfile": "\"{profile}\" மீள்திறன் சுயவிவரத்தைப் பயன்படுத்தவா?", + "applyProfileFailed": "மீள்திறன் சுயவிவரத்தைப் பயன்படுத்த முடியவில்லை.", + "applyProfileSuccess": "\"{profile}\" சுயவிவரம் பயன்படுத்தப்பட்டது.", + "confirmResetBreakers": "அனைத்து சர்க்யூட் பிரேக்கர்களையும் மீட்டமைக்கவா?", + "resetBreakersFailed": "சர்க்யூட் பிரேக்கர்களை மீட்டமைக்க முடியவில்லை.", + "resetBreakersSuccess": "சர்க்யூட் பிரேக்கர்கள் மீட்டமைக்கப்பட்டன.", + "processStatus": "செயல்முறை நிலை", "online": "Online", "offline": "Offline", "disableLabel": "{label} ஐ முடக்கு", @@ -4237,119 +4237,119 @@ "mcpStep2": "stdio போக்குவரத்து வழியாக இணைக்க உங்கள் MCP கிளையண்டைக் கட்டமைக்கவும்.", "mcpStep3": "{code1} மற்றும் {code2} போன்ற கருவிகளை அழைக்கவும்.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "அமர்வு இயங்குநேரம்", + "lastHeartbeat": "கடைசி இதயத்துடிப்பு", + "activity24h": "செயல்பாடு (24மணி)", + "totalCalls": "மொத்த அழைப்புகள்", + "successRate": "வெற்றி விகிதம்", + "avgLatency": "சராசரி தாமதம்", + "topTools": "முன்னணி கருவிகள்", + "noToolCalls24h": "கடந்த 24 மணிநேரத்தில் கருவி அழைப்புகள் எதுவும் இல்லை.", + "runtimeDetails": "இயக்கநேர விவரங்கள்", + "transport": "பரிமாற்ற முறை", + "scopesEnforced": "அமல்படுத்தப்பட்ட அணுகல் வரம்புகள்", + "yes": "ஆம்", + "no": "இல்லை", + "lastCall": "கடைசி அழைப்பு", + "heartbeatPath": "இதயத்துடிப்புப் பாதை", + "operationalControls": "செயல்பாட்டுக் கட்டுப்பாடுகள்", + "switchCombo": "சேர்க்கையை மாற்று", + "inactive": "செயலற்றது", + "active": "செயலில் உள்ளது", + "activateCombo": "சேர்க்கையைச் செயல்படுத்து", + "deactivateCombo": "சேர்க்கையைச் செயலிழக்கச் செய்", + "applyResilienceProfile": "மீண்டெழும் சுயவிவரத்தைப் பயன்படுத்து", + "profileAggressive": "தீவிரமானது", + "profileBalanced": "சமநிலையானது", + "profileConservative": "எச்சரிக்கையானது", + "applyProfile": "சுயவிவரத்தைப் பயன்படுத்து", + "resetCircuitBreakers": "சுற்றுத் துண்டிப்பான்களை மீட்டமை", + "resetCircuitBreakersHelp": "வழங்குநர்களுக்கான தற்போதைய துண்டிப்பான் நிலை மற்றும் தோல்வி எண்ணிக்கைகளை அழிக்கிறது.", + "resetAllBreakers": "அனைத்து துண்டிப்பான்களையும் மீட்டமை", + "toolsAndScopes": "கருவிகளும் அணுகல் வரம்புகளும்", + "tableTool": "கருவி", + "tableScopes": "அணுகல் வரம்புகள்", + "tablePhase": "கட்டம்", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "தணிக்கைப் பதிவு", + "auditSummary": "அழைப்புகள்: {total} | {totalPages} பக்கங்களில் பக்கம் {page}", + "allTools": "அனைத்துக் கருவிகளும்", + "allResults": "அனைத்து முடிவுகளும்", + "success": "வெற்றி", + "failure": "தோல்வி", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "தணிக்கைப் பதிவுகள் ஏற்றப்படுகின்றன...", + "noAuditEntriesForFilters": "தற்போதைய வடிப்பான்களுக்கான தணிக்கைப் பதிவுகள் எதுவும் கிடைக்கவில்லை.", + "tableTimestamp": "நேரமுத்திரை", + "tableDuration": "கால அளவு", + "tableResult": "முடிவு", + "tableApiKey": "API விசை", + "failed": "தோல்வியடைந்தது", + "previous": "முந்தையது", + "next": "அடுத்தது", + "apiKeyId": "API விசை ஐடி", + "offset": "தொடக்க விலக்கம்", + "limit": "வரம்பு", + "tool": "கருவி" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A கட்டுப்பாட்டுப் பலகை ஏற்றப்படுகிறது...", + "confirmCancelTask": "{taskId} பணியை ரத்துசெய்யவா?", + "cancelTaskFailed": "பணியை ரத்துசெய்ய முடியவில்லை.", + "cancelTaskSuccess": "{taskId} பணி ரத்துசெய்யப்பட்டது.", + "smokeSendFailed": "message/send அடிப்படைச் சோதனை தோல்வியடைந்தது.", + "smokeSendSuccessWithTask": "message/send வெற்றிகரமாக முடிந்தது (பணி {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream அடிப்படைச் சோதனை தோல்வியடைந்தது.", + "smokeStreamSuccessWithTask": "message/stream வெற்றிகரமாக முடிந்தது (பணி {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "பணி ஐடி இல்லாமல் message/stream முடிந்தது.", + "health": "நிலை", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "மொத்தப் பணிகள்", + "activeStreams": "செயலில் உள்ள ஸ்ட்ரீம்கள்", + "lastTask": "கடைசிப் பணி", + "taskStateOverview": "பணி நிலை மேலோட்டம்", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "சமர்ப்பிக்கப்பட்டது", + "working": "செயல்பாட்டில் உள்ளது", + "completed": "நிறைவடைந்தது", + "failed": "தோல்வியடைந்தது", + "cancelled": "ரத்துசெய்யப்பட்டது" }, - "agentCard": "Agent card", + "agentCard": "முகவர் அட்டை", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "பதிப்பு", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "திறன்கள்", + "agentCardNotAvailable": "முகவர் அட்டை கிடைக்கவில்லை.", + "quickValidation": "விரைவுச் சரிபார்ப்பு", + "quickValidationDescription": "நேரடி `/a2a` முனைப்புள்ளி வழியாக அடிப்படைச் சோதனை அழைப்புகளைச் செயல்படுத்துகிறது.", + "runMessageSend": "message/send-ஐ இயக்குக", + "runMessageStream": "message/stream-ஐ இயக்குக", + "taskManagement": "பணி மேலாண்மை", + "taskSummary": "{total} பணிகள் | பக்கம் {page} / {totalPages}", + "allStates": "அனைத்தும்", + "allSkills": "அனைத்துத் திறன்களும்", + "loadingTasks": "பணிகள் ஏற்றப்படுகின்றன...", + "noTasksForFilters": "தற்போதைய வடிகட்டிகளுக்குப் பொருந்தும் பணிகள் எதுவும் இல்லை.", + "tableTask": "பணி", + "tableSkill": "திறன்", + "tableState": "நிலை", + "tableUpdated": "புதுப்பிக்கப்பட்டது", + "tableActions": "செயல்கள்", + "view": "பார்க்க", + "cancel": "ரத்துசெய்", + "previous": "முந்தையது", + "next": "அடுத்தது", + "taskDetail": "பணி விவரம்", + "close": "மூடு", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "நிகழ்வுகள்", + "artifacts": "கலைப்பொருட்கள்", + "tablePhase": "அட்டவணைக் கட்டம்", + "offset": "தொடக்க இடம்", + "limit": "வரம்பு", + "skill": "திறன்", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "செய்தி/அனுப்பு", "rpcMethodStream": "செய்தி/ஸ்ட்ரீம்", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "செயல்கள்", + "addMemory": "நினைவகத்தைச் சேர்", + "allTypes": "அனைத்து வகைகளும்", "cancel": "ரத்து செய்", "checkHealth": "ஆரோக்கியத்தை சரிபார்க்கவும்", "checkingHealth": "சரிபார்க்கிறது…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "இது எவ்வாறு செயல்படுகிறது", "howWorksContent": "1. தானியங்கி பிரித்தெடுத்தல்: ஒவ்வொரு பதிலின் முடிவிலும், உண்மைகளும் நிகழ்வுகளும் கண்டறியப்பட்டு தானாகவே சேமிக்கப்படும்.\n2. மீட்டெடுப்பு: ஒவ்வொரு பதிலுக்கும் முன், மிகவும் பொருத்தமான நினைவுகள் FTS5 (துல்லியமான), வெக்டார் (சொற்பொருள்) அல்லது கலப்பின RRF வழியாகத் தேடப்படும்.\n3. உட்செலுத்துதல்: பதிலின் தரத்தை மேம்படுத்த பொருத்தமான நினைவுகள் உதவியாளர் சூழலில் உட்செலுத்தப்படும்.\n4. மேலாண்மை: பழைய நினைவுகளைப் பார்க்க, திருத்த, ஏற்றுமதி செய்ய மற்றும் சுருக்க இந்தப் பக்கத்தைப் பயன்படுத்தவும்." }, - "content": "Content", + "content": "உள்ளடக்கம்", "contentPlaceholder": "நினைவில் கொள்ள வேண்டிய மதிப்பு அல்லது JSON உள்ளடக்கம்", - "created": "Created", - "delete": "Delete", + "created": "உருவாக்கப்பட்டது", + "delete": "நீக்கு", "deleteConfirmDesc": "இந்தச் செயலை மாற்ற முடியாது. நினைவகம் நிரந்தரமாக நீக்கப்படும்.", "deleteConfirmTitle": "நினைவகத்தை நீக்கவா?", - "description": "View and manage stored memory entries", + "description": "சேமிக்கப்பட்ட நினைவகப் பதிவுகளைப் பார்த்து நிர்வகிக்கவும்", "editMemory": "நினைவகத்தைத் திருத்து", "editModal": { "title": "நினைவகத்தைத் திருத்து", @@ -4444,20 +4444,20 @@ "configureCta": "கட்டமைக்கவும்", "vectorStoreInstallHint": "வெக்டர் தேடலை இயக்க: npm install sqlite-vec (இயற்கையான Node.js தேவை, WASM அல்ல), பின்னர் மறுதொடக்கம் செய்யவும்." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "நிகழ்வுசார்", + "export": "ஏற்றுமதி", + "factual": "உண்மைசார்", "healthUnknown": "உடல்நலம் தெரியவில்லை", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "வெற்றி விகிதம்", + "import": "இறக்குமதி", "importError": "கோப்பை இறக்குமதி செய்ய முடியவில்லை", "importResult": "{imported} இறக்குமதி செய்யப்பட்டது, {skipped} தவிர்க்கப்பட்டது", - "key": "Key", + "key": "திறவுகோல்", "keyPlaceholder": "எ.கா. user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "நினைவுகள்", "next": "அடுத்து", - "noMemories": "No memories found", + "noMemories": "நினைவுகள் எதுவும் காணப்படவில்லை", "pageInfo": "பக்கம் {page} / {totalPages} ({total} மொத்தம்)", "pipelineError": "குழாய் பிழை", "pipelineOk": "பைப்லைன் சரி ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "மாதிரிக்காட்சியைப் பெற முடியவில்லை" }, "previous": "முந்தைய", - "procedural": "Procedural", + "procedural": "செயல்முறை சார்ந்தவை", "qdrant": { "title": "Qdrant (வெக்டர் சேமிப்பகம் அடுக்கு 2)", "description": "அளவிடக்கூடிய சொற்பொருள் தேடலுக்கான விருப்பத்தேர்வு Qdrant ஒருங்கிணைப்பு", @@ -4534,8 +4534,8 @@ }, "save": "சேமிக்கவும்", "saving": "சேமிக்கிறது...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "நினைவுகளைத் தேடுங்கள்...", + "semantic": "பொருள்சார்", "summarize": { "title": "பழைய நினைவுகளைச் சுருக்கு", "noCandidates": "சுருக்குவதற்குத் தகுதியான நினைவுகள் எதுவும் இல்லை (நிபந்தனை: >30 நாட்கள் பழமையானது).", @@ -4547,8 +4547,8 @@ "playground": "சோதனைக்களம்", "engine": "இன்ஜின்" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "நினைவக மேலாண்மை", + "tokensUsed": "பயன்படுத்தப்பட்ட டோக்கன்கள்", "tooltip": { "totalEntries": "இந்த API key-க்காக சேமிக்கப்பட்ட மொத்த நினைவுகள்", "tokensUsed": "செயலில் உள்ள நினைவுகளால் ஆக்கிரமிக்கப்பட்ட மதிப்பிடப்பட்ட மொத்த டோக்கன்கள்", @@ -4558,15 +4558,15 @@ "procedural": "உதவியாளர் பின்பற்ற வேண்டிய நடைமுறைகள், பணிப்பாய்வுகள் மற்றும் வழிமுறைகள்", "semantic": "கருத்துகள், விருப்பத்தேர்வுகள் மற்றும் டொமைன் அறிவு" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "மொத்தப் பதிவுகள்", + "type": "வகை", "memoryEnabled": "நினைவகம் இயக்கப்பட்டது" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "திறன்கள்", + "description": "AI திறன்களை நிர்வகித்து கண்காணிக்கவும்", + "skillsTab": "திறன்கள்", + "executionsTab": "செயலாக்கங்கள்", "selectSkillToInspect": "ஆய்வு செய்ய இடதுபுறத்தில் உள்ள ஒரு திறனைத் தேர்ந்தெடுக்கவும்.", "schemaTab": "ஸ்கீமா", "handlerTab": "ஹேண்ட்லர்", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "சோதனையை இயக்கு (பிளேஸ்ஹோல்டர்)", "setModeAria": "பயன்முறையை {mode} என அமை", "uninstallSkill": "திறனை நிறுவல் நீக்கு", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "சோதனைச் சூழல்", + "loading": "திறன்கள் ஏற்றப்படுகின்றன...", + "noSkills": "திறன்கள் எதுவும் காணப்படவில்லை", + "noExecutions": "செயலாக்கங்கள் எதுவும் காணப்படவில்லை", + "enabled": "இயக்கப்பட்டது", + "disabled": "முடக்கப்பட்டது", "delete": "நீக்கு", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "பதிப்பு", + "tableDescription": "விளக்கம்", + "skill": "திறன்", + "status": "நிலை", + "duration": "கால அளவு", + "time": "நேரம்", + "sandboxConfig": "Sandbox உள்ளமைவு", + "cpuLimit": "CPU வரம்பு", + "cpuLimitDesc": "ஒரு திறனுக்கான அதிகபட்ச செயலாக்க நேரம்", + "memoryLimit": "நினைவக வரம்பு", + "memoryLimitDesc": "அதிகபட்ச நினைவக ஒதுக்கீடு", + "timeout": "காலக்கெடு", + "timeoutDesc": "பதிலுக்கான அதிகபட்ச காத்திருப்பு நேரம்", + "networkAccess": "பிணைய அணுகல்", + "networkAccessDesc": "வெளிச்செல்லும் பிணையக் கோரிக்கைகளை அனுமதிக்கவும்", + "mode": "பயன்முறை", "q": "Q", "filterSkillsPlaceholder": "பெயர், விளக்கம் அல்லது குறிச்சொல் மூலம் திறன்களை வடிகட்டவும்", "allModes": "அனைத்து முறைகள்", @@ -4642,90 +4642,90 @@ "installSkill": "திறமையை நிறுவவும்" }, "health": { - "title": "System Health", - "description": "Real-time monitoring of your OmniRoute instance", - "healthy": "Healthy", - "degraded": "Degraded", - "down": "Down", - "uptime": "Uptime", - "memory": "Memory", - "memoryRss": "Memory (RSS)", - "heap": "Heap", + "title": "கணினி நலநிலை", + "description": "உங்கள் OmniRoute நிகழ்வின் நிகழ்நேரக் கண்காணிப்பு", + "healthy": "ஆரோக்கியமானது", + "degraded": "சீர்குன்றியது", + "down": "செயலிழந்துள்ளது", + "uptime": "இயங்குநேரம்", + "memory": "நினைவகம்", + "memoryRss": "நினைவகம் (RSS)", + "heap": "ஹீப்", "cpu": "CPU", - "database": "Database", - "version": "Version", - "lastCheck": "Last Check", - "providerHealth": "Provider Health", - "systemMetrics": "System Metrics", - "tokenHealth": "Token Health", - "refreshAll": "Refresh All", - "checkNow": "Check Now", - "loadingHealth": "Loading health data...", - "failedToLoad": "Failed to load health data: {error}", - "retry": "Retry", - "allOperational": "All systems operational", - "issuesDetected": "System issues detected", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", - "updatedAt": "Updated {time}", - "latency": "Latency", + "database": "தரவுத்தளம்", + "version": "பதிப்பு", + "lastCheck": "கடைசிச் சரிபார்ப்பு", + "providerHealth": "வழங்குநர் நிலை", + "systemMetrics": "கணினி அளவீடுகள்", + "tokenHealth": "டோக்கன் நிலை", + "refreshAll": "அனைத்தையும் புதுப்பி", + "checkNow": "இப்போது சரிபார்", + "loadingHealth": "நிலைத் தரவு ஏற்றப்படுகிறது...", + "failedToLoad": "நிலைத் தரவை ஏற்ற முடியவில்லை: {error}", + "retry": "மீண்டும் முயல்க", + "allOperational": "அனைத்து அமைப்புகளும் செயல்பாட்டில் உள்ளன", + "issuesDetected": "கணினிச் சிக்கல்கள் கண்டறியப்பட்டன", + "healthVerdictReady": "OmniRoute தயாராக உள்ளது", + "healthVerdictActionRequired": "முழுமையான செயல்பாட்டை மீட்டமைக்க நடவடிக்கை தேவை", + "healthVerdictCoolingDown": "சமீபத்திய மாற்றங்களுக்குப் பிறகு தணிவடைகிறது", + "healthSubtitle": "கணினி நிலைச் சரிபார்ப்பு", + "advancedDiagnosticsTitle": "மேம்பட்ட நோயறிதல்", + "hide": "மறை", + "show": "காட்டு", + "updatedAt": "{time} அன்று புதுப்பிக்கப்பட்டது", + "latency": "தாமதம்", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", "millisecondsShort": "{value}ms", "notAvailable": "—", - "totalRequests": "Total requests", - "noDataYet": "No data yet", - "promptCache": "Prompt Cache", - "entries": "Entries", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "signatureCache": "Signature Cache", - "signatureDefaults": "Defaults", - "signatureTool": "Tool", - "signatureFamily": "Family", - "signatureSession": "Session", - "recovering": "Recovering", - "noCBData": "No circuit breaker data available. Make some requests first.", - "providerHealthStatusAria": "Provider health status", - "issuesLabel": "Issues Detected", - "operational": "Operational", - "providers": "Providers", - "configuredProvidersLabel": "Configured in dashboard", - "configuredProvidersHint": "Providers with credentials saved in /dashboard/providers, regardless of runtime state.", - "activeProviders": "{count} active", - "activeProvidersHint": "Configured providers currently enabled for routing requests.", - "monitoredProviders": "{count} monitored", - "monitoredProvidersHint": "Providers currently tracked by circuit-breaker health monitors.", - "healthyCount": "{count} healthy", + "totalRequests": "மொத்தக் கோரிக்கைகள்", + "noDataYet": "இன்னும் தரவு இல்லை", + "promptCache": "ப்ராம்ப்ட் தற்காலிகச் சேமிப்பு", + "entries": "உள்ளீடுகள்", + "hitRate": "ஹிட் விகிதம்", + "hitsMisses": "ஹிட்கள் / மிஸ்கள்", + "signatureCache": "கையொப்பத் தற்காலிகச் சேமிப்பு", + "signatureDefaults": "இயல்புநிலைகள்", + "signatureTool": "கருவி", + "signatureFamily": "குடும்பம்", + "signatureSession": "அமர்வு", + "recovering": "மீண்டு வருகிறது", + "noCBData": "சர்க்யூட் பிரேக்கர் தரவு எதுவும் கிடைக்கவில்லை. முதலில் சில கோரிக்கைகளைச் செய்யவும்.", + "providerHealthStatusAria": "வழங்குநர் செயல்நிலை", + "issuesLabel": "சிக்கல்கள் கண்டறியப்பட்டன", + "operational": "செயல்பாட்டில் உள்ளது", + "providers": "வழங்குநர்கள்", + "configuredProvidersLabel": "டாஷ்போர்டில் உள்ளமைக்கப்பட்டது", + "configuredProvidersHint": "இயக்கநிலையைப் பொருட்படுத்தாமல், /dashboard/providers இல் நற்சான்றுகள் சேமிக்கப்பட்டுள்ள வழங்குநர்கள்.", + "activeProviders": "{count} செயலில்", + "activeProvidersHint": "வழிப்படுத்தல் கோரிக்கைகளுக்காக தற்போது இயக்கப்பட்டுள்ள உள்ளமைக்கப்பட்ட வழங்குநர்கள்.", + "monitoredProviders": "{count} கண்காணிக்கப்படுகின்றன", + "monitoredProvidersHint": "சர்க்யூட்-பிரேக்கர் செயல்நிலைக் கண்காணிப்பான்களால் தற்போது கண்காணிக்கப்படும் வழங்குநர்கள்.", + "healthyCount": "{count} ஆரோக்கியமாக உள்ளன", "nodeVersion": "Node {version}", - "failures": "{count} failure", - "failuresPlural": "{count} failures", - "lastFailure": "Last", - "rateLimitStatus": "Rate Limit Status", - "activeLimiters": "{count} active limiter", - "activeLimitersPlural": "{count} active limiters", - "queued": "Queued", - "queuedCount": "{count} queued", - "running": "running", - "runningCount": "{count} running", + "failures": "{count} தோல்வி", + "failuresPlural": "{count} தோல்விகள்", + "lastFailure": "கடைசியாக", + "rateLimitStatus": "விகித வரம்பு நிலை", + "activeLimiters": "{count} செயலில் உள்ள வரம்பி", + "activeLimitersPlural": "{count} செயலில் உள்ள வரம்பிகள்", + "queued": "வரிசையில் உள்ளவை", + "queuedCount": "{count} வரிசையில் உள்ளன", + "running": "இயங்குகிறது", + "runningCount": "{count} இயங்குகின்றன", "ok": "OK", - "activeLockouts": "Active Lockouts", - "resetConfirm": "Reset all circuit breakers to healthy state? This will clear all failure counts and restore all providers to operational status.", - "resetAllTitle": "Reset all circuit breakers to healthy state", - "resetting": "Resetting...", - "resetAll": "Reset All", - "until": "Until {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "activeLockouts": "செயலில் உள்ள பூட்டல்கள்", + "resetConfirm": "அனைத்து சர்க்யூட் பிரேக்கர்களையும் ஆரோக்கியமான நிலைக்கு மீட்டமைக்கவா? இது அனைத்து தோல்வி எண்ணிக்கைகளையும் அழித்து, அனைத்து வழங்குநர்களையும் செயல்பாட்டு நிலைக்கு மீட்டெடுக்கும்.", + "resetAllTitle": "அனைத்து சர்க்யூட் பிரேக்கர்களையும் ஆரோக்கியமான நிலைக்கு மீட்டமை", + "resetting": "மீட்டமைக்கப்படுகிறது...", + "resetAll": "அனைத்தையும் மீட்டமை", + "until": "{time} வரை", + "limitExhausted": "தீர்ந்துவிட்டது", + "learnedFromHeaders": "தலைப்புகளிலிருந்து அறியப்பட்டது", + "remainingOfLimit": "{remaining}/{limit} மீதமுள்ளது", + "throttleStatus": "வேகக் கட்டுப்பாடு: {value}", + "lastHeaderUpdate": "தலைப்பு புதுப்பிப்பு: {age}", "databaseHealth": "தரவுத்தள ஆரோக்கியம்", "databaseHealthDescription": "பழைய quota/domain வரிசைகள் மற்றும் உடைந்த combo குறிப்புகளைக் கண்டறிந்து சரிசெய்யவும்.", "status": "நிலை", @@ -4851,65 +4851,65 @@ "noTargets": "இலக்கு வழிகள் எதுவும் கட்டமைக்கப்படவில்லை." }, "limits": { - "title": "Limits & Quotas", - "rateLimit": "Rate Limit", - "remaining": "Remaining", - "requestsPerMinute": "Requests/min", - "tokensPerMinute": "Tokens/min", - "dailyLimit": "Daily Limit" + "title": "வரம்புகள் மற்றும் ஒதுக்கீடுகள்", + "rateLimit": "விகித வரம்பு", + "remaining": "மீதமுள்ளது", + "requestsPerMinute": "கோரிக்கைகள்/நிமிடம்", + "tokensPerMinute": "டோக்கன்கள்/நிமிடம்", + "dailyLimit": "தினசரி வரம்பு" }, "logs": { - "title": "Logs", - "requestLogs": "Request Logs", - "proxyLogs": "Proxy Logs", - "auditLog": "Audit Log", + "title": "பதிவுகள்", + "requestLogs": "கோரிக்கைப் பதிவுகள்", + "proxyLogs": "ப்ராக்ஸி பதிவுகள்", + "auditLog": "தணிக்கைப் பதிவு", "console": "Console", - "auditLogDesc": "Administrative actions and security events", - "loading": "Loading...", - "refresh": "Refresh", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", - "showing": "Showing {count} entries (offset {offset})", - "search": "Search", - "timestamp": "Timestamp", - "action": "Action", - "actor": "Actor", - "target": "Target", - "details": "Details", - "ipAddress": "IP Address", + "auditLogDesc": "நிர்வாகச் செயல்கள் மற்றும் பாதுகாப்பு நிகழ்வுகள்", + "loading": "ஏற்றுகிறது...", + "refresh": "புதுப்பி", + "filterByAction": "செயலின்படி வடிகட்டு...", + "filterByActor": "செயற்பாட்டாளரின்படி வடிகட்டு...", + "filterEntriesAria": "தணிக்கைப் பதிவு உள்ளீடுகளை வடிகட்டு", + "filterByActionTypeAria": "செயல் வகையின்படி வடிகட்டு", + "filterByActorAria": "செயற்பாட்டாளரின்படி வடிகட்டு", + "refreshAuditLogAria": "தணிக்கைப் பதிவைப் புதுப்பி", + "tableAria": "தணிக்கைப் பதிவு உள்ளீடுகள்", + "failedFetchAuditLog": "தணிக்கைப் பதிவைப் பெற முடியவில்லை", + "showing": "{count} உள்ளீடுகள் காட்டப்படுகின்றன (தொடக்க இடம் {offset})", + "search": "தேடு", + "timestamp": "நேர முத்திரை", + "action": "செயல்", + "actor": "செயற்பாட்டாளர்", + "target": "இலக்கு", + "details": "விவரங்கள்", + "ipAddress": "IP முகவரி", "notAvailable": "—", - "noEntries": "No audit log entries found", - "previous": "Previous", - "next": "Next", - "providerWarningTitle": "Provider Warnings", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", - "providerWarningDesc": "Some providers returned warnings during request processing", + "noEntries": "தணிக்கைப் பதிவு உள்ளீடுகள் எதுவும் கிடைக்கவில்லை", + "previous": "முந்தையது", + "next": "அடுத்தது", + "providerWarningTitle": "வழங்குநர் எச்சரிக்கைகள்", + "viewDetails": "விவரங்களைக் காண்க", + "eventMetadata": "நிகழ்வு மெட்டாடேட்டா", + "eventPayload": "நிகழ்வு பேலோடு", + "requestId": "கோரிக்கை ID", + "providerWarningDesc": "கோரிக்கைச் செயலாக்கத்தின்போது சில வழங்குநர்கள் எச்சரிக்கைகளை வழங்கினர்", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", - "auditModalSubtitle": "Event details and metadata", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "offset": "தொடக்க இடம்", + "limit": "வரம்பு", + "status": "நிலை", + "resourceType": "வள வகை", + "totalEntries": "மொத்த உள்ளீடுகள்", + "tab": "தாவல்", + "auditModalSubtitle": "நிகழ்வு விவரங்கள் மற்றும் மெட்டாடேட்டா", + "close": "மூடு", + "runningRequests": "செயலில் உள்ள கோரிக்கைகள்", + "runningRequestsDesc": "தற்போது செயல்பாட்டில் உள்ள அப்ஸ்ட்ரீம் கோரிக்கைகளின் நிகழ்நேரக் காட்சி", "clearAll": "அனைத்தையும் அழி", "confirmClearActiveRequests": "செயலில் உள்ள அனைத்து கோரிக்கைகளையும் அழிக்கவா?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "மாடல்", + "provider": "வழங்குநர்", + "account": "கணக்கு", + "elapsed": "கடந்த நேரம்", "activeStage": "கட்டம்", "activeStageUnknown": "அப்ஸ்ட்ரீமுக்கு இன்னும் அனுப்பப்படவில்லை", "activeStageRegistered": "பதிவு செய்யப்பட்டது", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "ரேட் லிமிட் ஸ்லாட் பெறப்பட்டது", "activeStageSendingToProvider": "அப்ஸ்ட்ரீமுக்கு அனுப்பப்படுகிறது", "activeStageProviderResponseStarted": "அப்ஸ்ட்ரீம் பதில் தொடங்கியது", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "எண்ணிக்கை", + "payloads": "பேலோடுகள்", + "viewPayloads": "காண்க", + "activeCount": "{count} செயலில் உள்ளது", + "clientPayload": "கிளையன்ட் கோரிக்கை பேலோடு", + "upstreamPayload": "அப்ஸ்ட்ரீம் வழங்குநர் பேலோடு", + "upstreamNotSentYet": "அப்ஸ்ட்ரீமிற்கு இன்னும் அனுப்பப்படவில்லை", + "runningRequestDetailMeta": "கணக்கு: {account} — கடந்த நேரம்: {elapsed}", + "export": "ஏற்றுமதி செய்", + "exporting": "ஏற்றுமதி செய்யப்படுகிறது...", + "exportFailed": "ஏற்றுமதி தோல்வியடைந்தது", "cleanHistoryButton": "வரலாற்றை அழி", "cleanHistoryTitle": "பதிவு வரலாற்றை அழிக்கவா?", "cleanHistoryMessage": "இது DATA_DIR/call_logs இன் கீழ் உள்ள அனைத்து கோரிக்கை பதிவு வரிசைகள், பழைய விவர வரிசைகள் மற்றும் உள்ளூர் ஆர்ட்டிஃபாக்ட் கோப்புகளை நிரந்தரமாக அழிக்கும். சுத்தம் செய்த பிறகு நேரலைப் பக்கம் புதுப்பிக்கப்படும்.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} பதிவு உள்ளீடுகள், {deletedArtifacts} ஆர்ட்டிஃபாக்ட்கள் மற்றும் {deletedDetailedLogs} பழைய விவர வரிசைகள் அழிக்கப்பட்டன.", "cleanHistoryEmpty": "கோரிக்கை பதிவு வரலாறு எதுவும் காணப்படவில்லை.", "cleanHistoryFailed": "பதிவு வரலாற்றைச் சுத்தம் செய்ய முடியவில்லை.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "நேர வரம்பு", + "lastNHours": "கடந்த {hours}", + "defaultRange": "இயல்புநிலை", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "பதிவுகளைப் பெற முடியவில்லை", + "copyFailed": "பதிவு உள்ளீட்டை நகலெடுக்க முடியவில்லை", + "copyLogEntry": "பதிவு உள்ளீட்டை நகலெடு", "filterByLevel": "பதிவு நிலை வாரியாக வடிகட்டவும்", "searchPlaceholder": "பதிவுகளைத் தேடவும்…", "searchAria": "பதிவு உள்ளீடுகளைத் தேடவும்", @@ -4964,49 +4964,49 @@ "tokens": "டோக்கன்கள்" }, "onboarding": { - "welcome": "Welcome", + "welcome": "வரவேற்கிறோம்", "tiers": "அடுக்குகள்", - "security": "Security", + "security": "பாதுகாப்பு", "test": "Test", - "ready": "Ready!", - "setPassword": "Set Password", - "addProvider": "Add your first provider", - "getStarted": "Get Started", - "skip": "Skip", - "skipWizard": "Skip wizard entirely", - "skipPassword": "Skip password setup", - "skipAndContinue": "Skip & Continue", - "passwordLabel": "Password", - "confirmPassword": "Confirm Password", - "enterPassword": "Enter password", - "confirmPasswordPlaceholder": "Confirm password", - "passwordsMismatch": "Passwords do not match", - "setupComplete": "Setup Complete!", - "goToDashboard": "Go to Dashboard →", - "welcomeDesc": "OmniRoute is your local AI API proxy. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "multiProvider": "Multi-Provider", - "usageTracking": "Usage Tracking", - "securityDesc": "Set a password to protect your dashboard, or skip for now.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", - "providerDesc": "Connect your first AI provider. You can add more later.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", - "apiKeyRequired": "API Key (required)", - "customUrlOptional": "Custom URL (optional)", - "testDesc": "Let's verify your provider connection works.", - "runTest": "Run Connection Test", - "testingConnection": "Testing connection...", - "connectionSuccessful": "Connection successful! Your provider is ready.", - "noProviderFound": "No provider found. You can add one from the dashboard later.", - "testFailed": "Test failed, but you can configure this later.", - "couldNotTest": "Could not test right now. You can test from the dashboard.", - "doneDesc": "You're all set! Your OmniRoute instance is configured and ready to proxy AI requests.", - "yourEndpoint": "Your endpoint:", - "continue": "Continue", - "retry": "Retry", - "failedSetPassword": "Failed to set password. Try again.", - "failedAddProvider": "Failed to add provider. Try again.", - "connectionError": "Connection error. Please try again.", - "provider": "Provider", + "ready": "தயார்!", + "setPassword": "கடவுச்சொல்லை அமைக்கவும்", + "addProvider": "உங்கள் முதல் வழங்குநரைச் சேர்க்கவும்", + "getStarted": "தொடங்கவும்", + "skip": "தவிர்", + "skipWizard": "வழிகாட்டியை முழுவதுமாகத் தவிர்", + "skipPassword": "கடவுச்சொல் அமைப்பைத் தவிர்", + "skipAndContinue": "தவிர்த்துத் தொடரவும்", + "passwordLabel": "கடவுச்சொல்", + "confirmPassword": "கடவுச்சொல்லை உறுதிப்படுத்தவும்", + "enterPassword": "கடவுச்சொல்லை உள்ளிடவும்", + "confirmPasswordPlaceholder": "கடவுச்சொல்லை உறுதிப்படுத்தவும்", + "passwordsMismatch": "கடவுச்சொற்கள் பொருந்தவில்லை", + "setupComplete": "அமைவு நிறைவடைந்தது!", + "goToDashboard": "டாஷ்போர்டுக்குச் செல்லவும் →", + "welcomeDesc": "OmniRoute என்பது உங்கள் உள்ளூர் AI API ப்ராக்ஸி. இது சுமைச் சமநிலை, செயலிழப்பு மாற்று மற்றும் பயன்பாட்டுக் கண்காணிப்புடன் பல AI வழங்குநர்களுக்கு கோரிக்கைகளை வழிமாற்றுகிறது.", + "multiProvider": "பல வழங்குநர்கள்", + "usageTracking": "பயன்பாட்டுக் கண்காணிப்பு", + "securityDesc": "உங்கள் டாஷ்போர்டைப் பாதுகாக்க ஒரு கடவுச்சொல்லை அமைக்கவும் அல்லது இப்போதைக்கு தவிர்க்கவும்.", + "securityDescSkipWarning": "⚠️ கடவுச்சொல் இல்லாமல், அமைவின்போது வழங்குநர்களைச் சேர்க்க முடியாது. கடவுச்சொல்லை அமைத்த பிறகு டாஷ்போர்டிலிருந்து அவர்களைச் சேர்க்கலாம்.", + "providerDesc": "உங்கள் முதல் AI வழங்குநரை இணைக்கவும். பின்னர் மேலும் சேர்க்கலாம்.", + "providerRequiresPassword": "வழங்குநர்களைச் சேர்க்க முதலில் கடவுச்சொல்லை அமைக்க வேண்டும். பாதுகாப்புப் படிக்குத் திரும்பிச் சென்று கடவுச்சொல்லை அமைக்கவும் அல்லது பின்னர் டாஷ்போர்டிலிருந்து வழங்குநர்களைச் சேர்க்கவும்.", + "apiKeyRequired": "API விசை (கட்டாயம்)", + "customUrlOptional": "தனிப்பயன் URL (விருப்பத்தேர்வு)", + "testDesc": "உங்கள் வழங்குநர் இணைப்பு செயல்படுகிறதா என்பதைச் சரிபார்ப்போம்.", + "runTest": "இணைப்புச் சோதனையை இயக்கவும்", + "testingConnection": "இணைப்பு சோதிக்கப்படுகிறது...", + "connectionSuccessful": "இணைப்பு வெற்றிகரமாக அமைந்தது! உங்கள் வழங்குநர் தயாராக உள்ளார்.", + "noProviderFound": "வழங்குநர் எவரும் காணப்படவில்லை. பின்னர் டாஷ்போர்டிலிருந்து ஒருவரைச் சேர்க்கலாம்.", + "testFailed": "சோதனை தோல்வியடைந்தது, ஆனால் இதைப் பின்னர் உள்ளமைக்கலாம்.", + "couldNotTest": "இப்போது சோதிக்க முடியவில்லை. டாஷ்போர்டிலிருந்து சோதிக்கலாம்.", + "doneDesc": "அனைத்தும் தயார்! உங்கள் OmniRoute நிகழ்வு உள்ளமைக்கப்பட்டு, AI கோரிக்கைகளை ப்ராக்ஸி செய்யத் தயாராக உள்ளது.", + "yourEndpoint": "உங்கள் முனைப்புள்ளி:", + "continue": "தொடரவும்", + "retry": "மீண்டும் முயற்சிக்கவும்", + "failedSetPassword": "கடவுச்சொல்லை அமைக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "failedAddProvider": "வழங்குநரைச் சேர்க்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "connectionError": "இணைப்புப் பிழை. மீண்டும் முயற்சிக்கவும்.", + "provider": "வழங்குநர்", "apiKeyHelp": "API விசை என்பது AI சேவைகளுக்கான கடவுச்சொல். உங்கள் வழங்குநரின் இணையதளத்திலிருந்து ஒன்றைப் பெறுங்கள் (எ.கா., platform.openai.com, console.anthropic.com).", "tier": { "subtitle": "OmniRoute வழங்குநர்களை மூன்று அடுக்குகளாக ஒழுங்கமைக்கிறது, எனவே ரூட்டிங் முதலில் மிகவும் நம்பகமான, குறைந்த விலை பாதையை விரும்புகிறது.", @@ -5049,12 +5049,12 @@ } }, "providers": { - "title": "Providers", + "title": "வழங்குநர்கள்", "Account Deactivated": "கணக்கு செயலிழக்கப்பட்டது", "allProviders": "அனைத்து வழங்குநர்கள்", "audioProviders": "ஆடியோ வழங்குநர்கள்", "showFreeOnly": "இலவசம் மட்டுமே", - "addProvider": "Add Provider", + "addProvider": "வழங்குநரைச் சேர்க்கவும்", "addFirstProvider": "உங்கள் முதல் வழங்குநரைச் சேர்க்கவும்", "addFirstProviderDesc": "OmniRoute மூலம் ரூட்டிங் கோரிக்கைகளைத் தொடங்க AI வழங்குநரை இணைக்கவும். நீங்கள் இலவச வழங்குநர்கள், API விசைகள் அல்லது OAuth கணக்குகளைப் பயன்படுத்தலாம்.", "learnMore": "மேலும் அறிக", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "இறக்குமதி செய்கிறது…", "importFromFileImport": "{count} வழங்குநர்களை இறக்குமதி செய்", "importFromFileResult": "{success} வழங்குநர்கள் இறக்குமதி செய்யப்பட்டன ({failed} தோல்வியடைந்தன)", + "importFromFileDownloadTemplate": "CSV வார்ப்புருவைப் பதிவிறக்கவும்", + "importFromFileMoreErrors": "மேலும் +{count}", + "importFromFileSchemaHint": "CSV நெடுவரிசைகள் இடநிலையை அடிப்படையாகக் கொண்டவை: provider, name, apiKey, baseUrl (விருப்பத்தேர்வு), priority (விருப்பத்தேர்வு). provider நெடுவரிசை ஏற்கனவே உள்ள நிர்வகிக்கப்பட்ட வழங்குநர் id அல்லது முன்பே பதிவுசெய்யப்பட்ட OpenAI/Anthropic-இணக்கமான node id ஆக இருக்க வேண்டும் — இந்த இறக்குமதி புதிய endpoint nodes-ஐ உருவாக்காது.", "adaptaTutorial": { "title": "Adapta Web-ஐ எவ்வாறு இணைப்பது", "introPrefix": "Adapta ஆனது Clerk மூலம் அங்கீகரிக்கிறது. டோக்கன்", @@ -5103,31 +5106,31 @@ "tipPrefix": "இந்த", "tipSuffix": "குக்கீ நீண்ட காலம் நீடிக்கும், வழக்கமாக பல மாதங்கள் வரை. நீங்கள் வெளியேறினால் அல்லது Adapta அமர்வை செல்லாததாக்கினால் மட்டுமே நீங்கள் அதை புதுப்பிக்க வேண்டும்." }, - "editProvider": "Edit Provider", - "deleteProvider": "Delete Provider", - "noProviders": "No providers configured", - "modelAvailability": "Model Availability", - "accounts": "Accounts", - "newAccount": "New Account", - "deleteConfirm": "Are you sure you want to delete this provider?", - "testing": "Testing...", - "testConnection": "Test Connection", - "testSuccess": "Connection successful", - "testFailed": "Connection failed", - "available": "Available", - "cooldown": "Cooldown", - "unavailable": "Unavailable", - "unknown": "Unknown", + "editProvider": "வழங்குநரைத் திருத்தவும்", + "deleteProvider": "வழங்குநரை நீக்கவும்", + "noProviders": "வழங்குநர்கள் எதுவும் உள்ளமைக்கப்படவில்லை", + "modelAvailability": "மாதிரி கிடைக்கும் தன்மை", + "accounts": "கணக்குகள்", + "newAccount": "புதிய கணக்கு", + "deleteConfirm": "இந்த வழங்குநரை நீக்க விரும்புகிறீர்கள் என்பதில் உறுதியாக உள்ளீர்களா?", + "testing": "சோதிக்கப்படுகிறது...", + "testConnection": "இணைப்பைச் சோதிக்கவும்", + "testSuccess": "இணைப்பு வெற்றிகரமாக அமைந்தது", + "testFailed": "இணைப்பு தோல்வியடைந்தது", + "available": "கிடைக்கிறது", + "cooldown": "காத்திருப்பு காலம்", + "unavailable": "கிடைக்கவில்லை", + "unknown": "தெரியவில்லை", "oauthLabel": "OAuth", - "compatibleLabel": "Compatible", + "compatibleLabel": "இணக்கமானது", "chat": "Chat", "responses": "Responses", "messages": "Messages", - "oauthProviders": "OAuth Providers", - "freeProviders": "Free Providers", - "apiKeyProviders": "API Key Providers", - "compatibleProviders": "API Key Compatible Providers", - "testAll": "Test All", + "oauthProviders": "OAuth வழங்குநர்கள்", + "freeProviders": "இலவச வழங்குநர்கள்", + "apiKeyProviders": "API Key வழங்குநர்கள்", + "compatibleProviders": "API Key இணக்கமான வழங்குநர்கள்", + "testAll": "அனைத்தையும் சோதிக்கவும்", "reorderByAvailability": "மறுவரிசைப்படுத்து", "reorderByAvailabilityTitle": "கிடைக்கும் தன்மையின் அடிப்படையில் இணைப்புகளை மறுவரிசைப்படுத்தவும்", "reorderByAvailabilityError": "கிடைக்கும் தன்மையின் அடிப்படையில் இணைப்புகளை மறுவரிசைப்படுத்த முடியவில்லை", @@ -5135,10 +5138,10 @@ "distributing": "விநியோகிக்கப்படுகிறது...", "selectedCount": "{count, plural, one {# தேர்ந்தெடுக்கப்பட்டது} other {# தேர்ந்தெடுக்கப்பட்டன}}", "accountsCount": "{count, plural, one {# கணக்கு} other {# கணக்குகள்}}", - "testAllOAuth": "Test all OAuth connections", - "testAllFree": "Test all Free connections", - "testAllApiKey": "Test all API Key connections", - "testAllCompatible": "Test all Compatible connections", + "testAllOAuth": "அனைத்து OAuth இணைப்புகளையும் சோதிக்கவும்", + "testAllFree": "அனைத்து இலவச இணைப்புகளையும் சோதிக்கவும்", + "testAllApiKey": "அனைத்து API Key இணைப்புகளையும் சோதிக்கவும்", + "testAllCompatible": "அனைத்து இணக்கமான இணைப்புகளையும் சோதிக்கவும்", "testAllModels": "அனைத்து மாடல்களையும் சோதிக்கவும்", "testAllModelsConfirm": "தெரியும் அனைத்து மாடல்களையும் சோதிக்கவா? தானியங்கு மறைத்தல் இயக்கப்பட்டிருந்தால் தோல்வியடைந்த மாடல்கள் மறைக்கப்படும்.", "testingAllModels": "{done}/{total} சோதிக்கப்படுகிறது...", @@ -5154,9 +5157,9 @@ "filterByVisibility": "காண்பதன் அடிப்படையில் வடிகட்டு", "autoHideFailed": "தோல்வியடைந்த மாடல்களை தானாகவே மறைக்கவும்", "autoHideFailedHint": "செயல்படுத்தப்படும் போது, 'அனைத்தையும் சோதி' என்பது /v1/models போன்ற பொதுவான பட்டியல்களில் இருந்து தற்காலிகமற்ற தோல்விகளை மறைக்கும். ஒற்றை-மாடல் சோதனைகள் ஒருபோதும் தானாக மறைக்காது.", - "connected": "{count} Connected", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", + "connected": "{count} இணைக்கப்பட்டுள்ளன", + "errorCount": "{count} பிழை ({code})", + "errorCountNoCode": "{count} பிழை", "testAllCompleted": "{total} மாடல்கள் சோதிக்கப்பட்டன: {ok} சரி, {failed} தோல்வியடைந்தன", "modelAutoHidden": "மாடல் {model} தானாகவே மறைக்கப்பட்டது (சோதனை தோல்வியடைந்தது)", "filterAll": "அனைத்தும்", @@ -5164,9 +5167,9 @@ "filterHidden": "மறைக்கப்பட்டவை மட்டும்", "modelsHiddenCount": "{count} மறைக்கப்பட்டுள்ளன", "warningCount": "{count} எச்சரிக்கை", - "noConnections": "No connections", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "noConnections": "இணைப்புகள் இல்லை", + "expiredBadge": "காலாவதியானது", + "expiringSoonBadge": "விரைவில் காலாவதியாகும்", "freeTier": "இலவச அடுக்கு", "freeTierAvailable": "இலவச அடுக்கு கிடைக்கிறது", "hasFreeTooltip": "இலவச அடுக்கு கிடைக்கிறது", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "இந்த வழங்குநர் நிராகரிக்கப்பட்டார்", "riskNotice": { "title": "தொடர்வதற்கு முன்", - "detailsTitle": "Usage caveats", + "detailsTitle": "பயன்பாட்டு வரம்புகள்", "tooltip": "பயன்பாட்டு எச்சரிக்கைகளைக் கொண்ட வழங்குநர் — விவரங்களுக்கு கிளிக் செய்யவும்", "oauth": "இந்த வழங்குநர் உங்களது அதிகாரப்பூர்வ தயாரிப்பு அமர்வு/OAuth ஐப் பயன்படுத்துகிறார், இது ப்ராக்ஸி/ரவுட்டர் பயன்பாட்டிற்கு அங்கீகரிக்கப்படவில்லை. தீவிரமான தன்னாட்சி முகவர் பயன்பாட்டை (OpenCloud-பாணி, நீண்ட பல-படி ஓட்டங்கள், பெரிய தொகுதிகள்) நாங்கள் பரிந்துரைக்கவில்லை — அப்ஸ்ட்ரீம் கணக்கைக் கட்டுப்படுத்துவதன் மூலமோ அல்லது தடை செய்வதன் மூலமோ எதிர்வினையாற்றலாம். உங்கள் சொந்த பொறுப்பில் பயன்படுத்தவும்.", "webCookie": "இந்த வழங்குநர் உங்கள் வலை அமர்வு குக்கீகள் மூலம் அங்கீகரிக்கிறார். அப்ஸ்ட்ரீம் சேவை எந்த நேரத்திலும் அமர்வை செல்லாததாக்கலாம், இதனால் நீங்கள் மீண்டும் உள்நுழைய வேண்டியிருக்கும். நீண்ட கவனிக்கப்படாத செயல்பாடுகளுக்கு பரிந்துரைக்கப்படவில்லை. உங்கள் சொந்த பொறுப்பில் பயன்படுத்தவும்.", @@ -5188,95 +5191,95 @@ "cancel": "ரத்துசெய்" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} இணைப்பு(கள்) குறிக்கப்பட்டுள்ளன — சமீபத்திய தோல்விகள் அதிகபட்சம் {maxFailures}{lastFailureSuffix}. இணைப்பின் நிலையைப் பார்க்க கிளிக் செய்யவும்.", + "lastFailureSuffix": "(கடைசித் தோல்வி {time})", + "ariaLabel": "இணைப்பின் நிலை விவரங்களைப் பார்க்கவும், {count} எச்சரிக்கை(கள்)" }, - "disabled": "Disabled", - "enableProvider": "Enable provider", - "disableProvider": "Disable provider", - "testResults": "Test Results", - "noCompatibleYet": "No compatible providers added yet", - "compatibleHint": "Use the buttons above to add OpenAI or Anthropic compatible endpoints", - "addOpenAICompatible": "Add OpenAI Compatible", - "addAnthropicCompatible": "Add Anthropic Compatible", - "addNewProvider": "Add New Provider", - "backToProviders": "Back to Providers", - "configureNewProvider": "Configure a new AI provider to use with your applications.", - "providerLabel": "Provider", - "selectProvider": "Select a provider", - "selectedProvider": "Selected provider", - "authMethod": "Authentication Method", - "apiKeyLabel": "API Key", - "apiKeyRequired": "API Key is required", - "selectProviderRequired": "Please select a provider", - "enterApiKey": "Enter your API key", - "apiKeySecure": "Your API key will be encrypted and stored securely.", - "oauth2Connect": "Connect with OAuth2", + "disabled": "முடக்கப்பட்டது", + "enableProvider": "வழங்குநரை இயக்கவும்", + "disableProvider": "வழங்குநரை முடக்கவும்", + "testResults": "சோதனை முடிவுகள்", + "noCompatibleYet": "இணக்கமான வழங்குநர்கள் இன்னும் சேர்க்கப்படவில்லை", + "compatibleHint": "OpenAI அல்லது Anthropic இணக்கமான முனைப்புள்ளிகளைச் சேர்க்க மேலேயுள்ள பொத்தான்களைப் பயன்படுத்தவும்", + "addOpenAICompatible": "OpenAI இணக்கமானதைச் சேர்க்கவும்", + "addAnthropicCompatible": "Anthropic இணக்கமானதைச் சேர்க்கவும்", + "addNewProvider": "புதிய வழங்குநரைச் சேர்க்கவும்", + "backToProviders": "வழங்குநர்களுக்குத் திரும்பவும்", + "configureNewProvider": "உங்கள் பயன்பாடுகளுடன் பயன்படுத்த புதிய AI வழங்குநரை உள்ளமைக்கவும்.", + "providerLabel": "வழங்குநர்", + "selectProvider": "ஒரு வழங்குநரைத் தேர்ந்தெடுக்கவும்", + "selectedProvider": "தேர்ந்தெடுக்கப்பட்ட வழங்குநர்", + "authMethod": "அங்கீகார முறை", + "apiKeyLabel": "API விசை", + "apiKeyRequired": "API விசை தேவை", + "selectProviderRequired": "ஒரு வழங்குநரைத் தேர்ந்தெடுக்கவும்", + "enterApiKey": "உங்கள் API விசையை உள்ளிடவும்", + "apiKeySecure": "உங்கள் API விசை குறியாக்கம் செய்யப்பட்டு பாதுகாப்பாகச் சேமிக்கப்படும்.", + "oauth2Connect": "OAuth2 மூலம் இணைக்கவும்", "oauth2Label": "OAuth2", - "oauth2Desc": "Connect your account using OAuth2 authentication.", - "displayName": "Display Name", - "displayNamePlaceholder": "e.g., Production API, Dev Environment", - "displayNameHint": "Optional. A friendly name to identify this configuration.", - "active": "Active", - "activeDescription": "Enable this provider for use in your applications", - "cancel": "Cancel", - "createProvider": "Create Provider", - "failedCreate": "Failed to create provider", - "errorOccurred": "An error occurred. Please try again.", - "modelStatus": "Model Status", - "showConfiguredOnly": "Configured only", - "allModelsOperational": "All models operational", - "modelsWithIssues": "{count} model(s) with issues", - "allModelsNormal": "All models are responding normally.", - "cooldownCleared": "Cooldown cleared for {model}", - "failedClearCooldown": "Failed to clear cooldown", - "loadingAvailability": "Loading model availability...", - "clearCooldown": "Clear", - "clearing": "Clearing...", - "until": "Until {time}", - "providerTestFailed": "Provider test failed", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "oauth2Desc": "OAuth2 அங்கீகாரத்தைப் பயன்படுத்தி உங்கள் கணக்கை இணைக்கவும்.", + "displayName": "காட்சிப் பெயர்", + "displayNamePlaceholder": "எ.கா., Production API, Dev Environment", + "displayNameHint": "விருப்பத்திற்குரியது. இந்த உள்ளமைவை அடையாளம் காண உதவும் எளிய பெயர்.", + "active": "செயலில் உள்ளது", + "activeDescription": "உங்கள் பயன்பாடுகளில் இந்த வழங்குநரைப் பயன்படுத்த இயக்கவும்", + "cancel": "ரத்துசெய்", + "createProvider": "வழங்குநரை உருவாக்கு", + "failedCreate": "வழங்குநரை உருவாக்க முடியவில்லை", + "errorOccurred": "ஒரு பிழை ஏற்பட்டது. மீண்டும் முயற்சிக்கவும்.", + "modelStatus": "மாதிரி நிலை", + "showConfiguredOnly": "உள்ளமைக்கப்பட்டவை மட்டும்", + "allModelsOperational": "அனைத்து மாதிரிகளும் செயல்பாட்டில் உள்ளன", + "modelsWithIssues": "சிக்கல்களைக் கொண்ட {count} மாதிரி(கள்)", + "allModelsNormal": "அனைத்து மாதிரிகளும் இயல்பாகப் பதிலளிக்கின்றன.", + "cooldownCleared": "{model} மாதிரிக்கான காத்திருப்புக் காலம் நீக்கப்பட்டது", + "failedClearCooldown": "காத்திருப்புக் காலத்தை நீக்க முடியவில்லை", + "loadingAvailability": "மாதிரிகளின் கிடைப்புநிலை ஏற்றப்படுகிறது...", + "clearCooldown": "நீக்கு", + "clearing": "நீக்கப்படுகிறது...", + "until": "{time} வரை", + "providerTestFailed": "வழங்குநர் சோதனை தோல்வியடைந்தது", + "providerTestTimeout": "வழங்குநர் சோதனைக்கான நேரம் முடிந்தது — ஒரே நேரத்தில் சோதிக்க அதிகமான இணைப்புகள் உள்ளன", "modeTest": "{mode} Test", - "passedCount": "{count} passed", - "failedCount": "{count} failed", - "testedCount": "{count} tested", + "passedCount": "{count} தேர்ச்சி பெற்றன", + "failedCount": "{count} தோல்வியடைந்தன", + "testedCount": "{count} சோதிக்கப்பட்டன", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", - "noActiveConnectionsInGroup": "No active connections found for this group.", - "allTestsPassed": "All {total} tests passed", - "testSummary": "{passed}/{total} passed, {failed} failed", - "nameLabel": "Name", + "errorShort": "பிழை", + "noActiveConnectionsInGroup": "இந்தக் குழுவிற்குச் செயலில் உள்ள இணைப்புகள் எதுவும் கிடைக்கவில்லை.", + "allTestsPassed": "அனைத்து {total} சோதனைகளும் தேர்ச்சி பெற்றன", + "testSummary": "{passed}/{total} தேர்ச்சி பெற்றன, {failed} தோல்வியடைந்தன", + "nameLabel": "பெயர்", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", - "apiTypeLabel": "API Type", - "prefixHint": "Required. Unique prefix for model names.", - "nameHint": "Required. A friendly label for this node.", - "baseUrlHint": "Required. Provider API base URL.", + "baseUrlLabel": "அடிப்படை URL", + "apiTypeLabel": "API வகை", + "prefixHint": "தேவையானது. மாதிரிப் பெயர்களுக்கான தனித்துவமான முன்னொட்டு.", + "nameHint": "அவசியம். இந்த நோடுக்கான எளிதில் புரியக்கூடிய பெயர்.", + "baseUrlHint": "அவசியம். வழங்குநர் API அடிப்படை URL.", "iconUrlLabel": "சின்னத்தின் URL", "iconUrlHint": "விருப்பத்திற்குரியது. இந்த வழங்குநரின் சின்னமாக காட்டப்படும் பட URL.", "iconUrlInvalid": "தவறான ஐகான் URL. http(s):// அல்லது data:image/*;base64 URL ஐப் பயன்படுத்தவும்.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "தினசரி ஒதுக்கீடு மீட்டமைக்கும் நேர மண்டலம்", + "dailyQuotaResetTimezoneHint": "மேல்நிலைச் சேவை X-RateLimit-Reset ஐ வழங்காதபோது பயன்படுத்தப்படும் விருப்பமான IANA நேர மண்டலம். குறுகிய காத்திருப்புக் காலத்தைத் தொடர, இதைக் காலியாக விடவும்.", + "dailyQuotaResetHourLabel": "தினசரி ஒதுக்கீடு மீட்டமைக்கும் மணிநேரம்", + "dailyQuotaResetHourHint": "மேலே உள்ள நேர மண்டலத்தின்படி உள்ளூர் மணிநேரம் 0-23. காலியாக இருந்தால் நோட்-நிலை கடிகாரம் இல்லை என்று பொருள்.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", - "validateConnection": "Validate Connection", - "validating": "Validating...", - "connectionValid": "Connection is valid!", - "connectionFailed": "Connection failed. Check URL and key.", - "testKeyLabel": "Test API Key", - "testKeyPlaceholder": "sk-... (for validation only)", - "providerNotFound": "Provider not found", - "deleteConnectionConfirm": "Delete this connection?", + "validateConnection": "இணைப்பைச் சரிபார்க்கவும்", + "validating": "சரிபார்க்கப்படுகிறது...", + "connectionValid": "இணைப்பு செல்லுபடியாகிறது!", + "connectionFailed": "இணைப்பு தோல்வியடைந்தது. URL மற்றும் விசையைச் சரிபார்க்கவும்.", + "testKeyLabel": "API விசையைச் சோதிக்கவும்", + "testKeyPlaceholder": "sk-... (சரிபார்ப்புக்கு மட்டும்)", + "providerNotFound": "வழங்குநர் கிடைக்கவில்லை", + "deleteConnectionConfirm": "இந்த இணைப்பை நீக்கவா?", "deleteConnectionConfirmNamed": "{name} ஐ நீக்க வேண்டுமா? இந்தச் செயலைச் செயல்தவிர்க்க முடியாது.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "தேர்ந்தெடுத்தவற்றை நீக்கவும் ({count})", + "batchDeleteConfirm": "{count} இணைப்பு(களை) நீக்கவா? இந்தச் செயலைச் செயல்தவிர்க்க முடியாது.", + "batchDeleteSuccess": "{count} இணைப்பு(கள்) நீக்கப்பட்டன", "batchActivateSelected": "செயல்படுத்து", "batchDeactivateSelected": "செயலிழக்கச் செய்", "batchRetestSelected": "மீண்டும் சோதி", @@ -5292,32 +5295,32 @@ "filterError": "பிழை", "filterBanned": "தடைசெய்யப்பட்டது", "filterCreditsExhausted": "கிரெடிட் தீர்ந்தது", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "கணக்குகளைத் தேடவும்…", "noFilteredConnections": "தற்போதைய வடிகட்டியுடன் எந்த இணைப்புகளும் பொருந்தவில்லை.", - "failedSetAlias": "Failed to set alias", + "failedSetAlias": "மாற்றுப்பெயரை அமைக்க முடியவில்லை", "setAliasSuccess": "மாற்றுப்பெயர் {alias} அமைக்கப்பட்டது", "deleteAliasSuccess": "மாற்றுப்பெயர் {alias} நீக்கப்பட்டது", - "failedSaveConnection": "Failed to save connection", - "failedSaveConnectionRetry": "Failed to save connection. Please try again.", - "failedRetestConnection": "Failed to retest connection", - "deleteCompatibleNodeConfirm": "Delete this {type} Compatible node?", - "anthropicCompatibleDetails": "Anthropic Compatible Details", - "openaiCompatibleDetails": "OpenAI Compatible Details", + "failedSaveConnection": "இணைப்பைச் சேமிக்க முடியவில்லை", + "failedSaveConnectionRetry": "இணைப்பைச் சேமிக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "failedRetestConnection": "இணைப்பை மீண்டும் சோதிக்க முடியவில்லை", + "deleteCompatibleNodeConfirm": "இந்த {type} Compatible நோட்டை நீக்கவா?", + "anthropicCompatibleDetails": "Anthropic Compatible விவரங்கள்", + "openaiCompatibleDetails": "OpenAI Compatible விவரங்கள்", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "உட்பொதிவுகள்", + "audioTranscriptions": "ஒலிப் படியெடுத்தல்கள்", + "audioSpeech": "ஒலிப் பேச்சு", + "imagesGenerations": "பட உருவாக்கங்கள்", "chatCompletions": "Chat Completions", - "importingModels": "Importing...", - "importFromModels": "Import from /models", - "modelsImported": "{count} models imported", - "allModelsAlreadyImported": "All models already imported", - "noNewModelsToImport": "No new models to import — all models are already in the registry or custom models list", - "skippingExistingModels": "Skipping {count} existing models", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "importingModels": "இறக்குமதி செய்யப்படுகிறது...", + "importFromModels": "/models இலிருந்து இறக்குமதி செய்யவும்", + "modelsImported": "{count} மாடல்கள் இறக்குமதி செய்யப்பட்டன", + "allModelsAlreadyImported": "அனைத்து மாடல்களும் ஏற்கனவே இறக்குமதி செய்யப்பட்டுள்ளன", + "noNewModelsToImport": "இறக்குமதி செய்யப் புதிய மாடல்கள் எதுவும் இல்லை — அனைத்து மாடல்களும் ஏற்கனவே பதிவகத்தில் அல்லது தனிப்பயன் மாடல்கள் பட்டியலில் உள்ளன", + "skippingExistingModels": "ஏற்கனவே உள்ள {count} மாடல்கள் தவிர்க்கப்படுகின்றன", + "autoSync": "தானியங்கு ஒத்திசைவு", + "autoSyncShort": "ஒத்திசைக்கவும்", "autoFetchModels": "உயர்தர மாதிரிகளை தானாகப் பெறவும்", "autoFetchModelsTooltip": "தேவையான போது மேல்நிலை மாதிரிகளை பெறவும் மற்றும் கச்சே செய்யவும்", "autoFetchModelsEnabled": "மேல்நிலை மாதிரி தானாகப் பெறுதல் செயல்படுத்தப்பட்டது", @@ -5329,52 +5332,52 @@ "resetToUpstreamDefaults": "முதன்மை இயல்புகளை மீட்டமைக்கவும்", "resetToUpstreamDefaultsSuccess": "மீட்டமைக்கப்பட்ட மேல்நிலை மாதிரி இயல்புகள்", "resetToUpstreamDefaultsFailed": "மேல்நிலை மாதிரி இயல்புகளை மீட்டெடுக்க முடியவில்லை", - "autoSyncTooltip": "Automatically refresh model list every 24h (configurable via MODEL_SYNC_INTERVAL_HOURS)", - "autoSyncEnabled": "Auto-sync enabled — models will refresh periodically", - "autoSyncDisabled": "Auto-sync disabled", - "autoSyncToggleFailed": "Failed to toggle auto-sync", - "autoSyncPartialFailure": "Auto-sync updated for some connections, but not all", - "clearAllModels": "Clear All Models", - "clearAllModelsConfirm": "Are you sure you want to remove all models for this provider? This cannot be undone.", - "clearAllModelsSuccess": "All models cleared", - "clearAllModelsFailed": "Failed to clear models", - "addConnectionToImport": "Add a connection to enable importing.", - "noModelsConfigured": "No models configured", - "connectionCount": "{count} connection(s)", - "fetchingModels": "Fetching available models...", - "failedFetchModels": "Failed to fetch models", + "autoSyncTooltip": "ஒவ்வொரு 24 மணிநேரத்திற்கும் மாடல் பட்டியலைத் தானாகப் புதுப்பிக்கவும் (MODEL_SYNC_INTERVAL_HOURS மூலம் உள்ளமைக்கலாம்)", + "autoSyncEnabled": "தானியங்கு ஒத்திசைவு இயக்கப்பட்டுள்ளது — மாடல்கள் அவ்வப்போது புதுப்பிக்கப்படும்", + "autoSyncDisabled": "தானியங்கு ஒத்திசைவு முடக்கப்பட்டுள்ளது", + "autoSyncToggleFailed": "தானியங்கு ஒத்திசைவை மாற்ற முடியவில்லை", + "autoSyncPartialFailure": "சில இணைப்புகளுக்குத் தானியங்கு ஒத்திசைவு புதுப்பிக்கப்பட்டது, ஆனால் அனைத்திற்கும் இல்லை", + "clearAllModels": "அனைத்து மாடல்களையும் அழி", + "clearAllModelsConfirm": "இந்த வழங்குநருக்கான அனைத்து மாடல்களையும் நிச்சயமாக அகற்ற விரும்புகிறீர்களா? இதைச் செயல்தவிர்க்க முடியாது.", + "clearAllModelsSuccess": "அனைத்து மாடல்களும் அழிக்கப்பட்டன", + "clearAllModelsFailed": "மாடல்களை அழிக்க முடியவில்லை", + "addConnectionToImport": "இறக்குமதியை இயக்க ஓர் இணைப்பைச் சேர்க்கவும்.", + "noModelsConfigured": "மாடல்கள் எதுவும் உள்ளமைக்கப்படவில்லை", + "connectionCount": "{count} இணைப்பு(கள்)", + "fetchingModels": "கிடைக்கக்கூடிய மாடல்கள் பெறப்படுகின்றன...", + "failedFetchModels": "மாடல்களைப் பெற முடியவில்லை", "noFreeModelsFound": "இந்த வழங்குநருக்கு இலவச மாடல்கள் எதுவும் கிடைக்கவில்லை — எதுவும் இறக்குமதி செய்யப்படவில்லை.", "fetchModelsSuccess": "{count} புதிய மாடல்கள் கண்டறியப்பட்டன", "fetchModelsFailed": "மாடல்களை தானாகப் பெற முடியவில்லை (அமைப்புகளில் இருந்து மீண்டும் முயற்சிக்கலாம்)", - "noModelsFound": "No models found", - "importFailed": "Import failed", - "noNewModelsAdded": "No new models were added.", + "noModelsFound": "மாடல்கள் எதுவும் கிடைக்கவில்லை", + "importFailed": "இறக்குமதி தோல்வியடைந்தது", + "noNewModelsAdded": "புதிய மாடல்கள் எதுவும் சேர்க்கப்படவில்லை.", "adding": "Adding...", - "close": "Close", - "importingModelsTitle": "Importing Models", - "copyModel": "Copy model", - "filterModels": "Filter models...", + "close": "மூடு", + "importingModelsTitle": "மாடல்கள் இறக்குமதி செய்யப்படுகின்றன", + "copyModel": "மாடலை நகலெடு", + "filterModels": "மாடல்களை வடிகட்டு...", "testAllRateLimited": "வீத வரம்பை எட்டியது, முன்கூட்டியே நிறுத்தப்பட்டது", "hideFailedAuto": "தோல்வியடைந்த மாடல்களை தானாக மறைக்கவும்", - "selectAllModels": "Select all", + "selectAllModels": "அனைத்தையும் தேர்ந்தெடு", "hideAllModels": "அனைத்தையும் மறைக்கவும்", - "modelsActive": "Active", - "showModel": "Show model", - "hideModel": "Hide model", - "removeModel": "Remove model", - "rateLimitProtected": "Protected", - "rateLimitUnprotected": "Unprotected", + "modelsActive": "செயலில் உள்ளது", + "showModel": "மாடலைக் காட்டு", + "hideModel": "மாடலை மறை", + "removeModel": "மாடலை அகற்று", + "rateLimitProtected": "பாதுகாக்கப்பட்டது", + "rateLimitUnprotected": "பாதுகாக்கப்படவில்லை", "providerQuotaShort": "ஒதுக்கீடு", "hideConnectionFromProviderQuota": "வழங்குநர் ஒதுக்கீட்டில் (Provider Quota) இருந்து இந்த கணக்கை மறைக்கவும்", "showConnectionInProviderQuota": "வழங்குநர் ஒதுக்கீட்டில் (Provider Quota) இந்த கணக்கைக் காட்டவும்", "quotaVisibilityUpdateFailed": "வழங்குநர் ஒதுக்கீடு (Provider Quota) தெரிவுநிலையைப் புதுப்பிக்க முடியவில்லை", - "enableRateLimitProtection": "Click to enable rate limit protection", - "disableRateLimitProtection": "Click to disable rate limit protection", + "enableRateLimitProtection": "விகித வரம்புப் பாதுகாப்பை இயக்க கிளிக் செய்யவும்", + "disableRateLimitProtection": "விகித வரம்புப் பாதுகாப்பை முடக்க கிளிக் செய்யவும்", "testAllProgress": "{done}/{total} சோதிக்கப்பட்டது", "testAllFailedHidden": "{count} தோல்வியடைந்த மாடல்கள் மறைக்கப்பட்டன", "testAllDone": "அனைத்து மாடல்களும் சோதிக்கப்பட்டன", - "productionKey": "Production Key", - "enterNewApiKey": "Enter new API key", + "productionKey": "தயாரிப்புச் சூழல் திறவுகோல்", + "enterNewApiKey": "புதிய API திறவுகோலை உள்ளிடவும்", "codexApplyModalTitle": "உள்ளூர் கோடெக்ஸுக்கு விண்ணப்பிக்கவும்", "codexApplyTargetLabel": "இலக்கு பாதை", "codexApplyBackupLabel": "காப்புப்பிரதிகள்", @@ -5386,77 +5389,77 @@ "bulkAddFormatHint": "ஒரு வரிக்கு ஒரு விசை. வடிவம்: பெயர்|apiKey அல்லது apiKey (இன்டெக்ஸ் மூலம் தானாக பெயரிடப்பட்டது).", "bulkValidateKeys": "சேமிப்பதற்கு முன் ஒவ்வொரு விசையையும் சரிபார்க்கவும் (மெதுவாக)", "bulkAddAllKeys": "அனைத்து விசைகளையும் சேர்க்கவும்", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", - "optional": "Optional", + "bulkAddedCount": "{count, plural, one {# திறவுகோல் சேர்க்கப்பட்டது} other {# திறவுகோல்கள் சேர்க்கப்பட்டன}}", + "bulkFailedCount": "{count, plural, one {# தோல்வியடைந்தது} other {# தோல்வியடைந்தன}}", + "optional": "விருப்பத்திற்குரியது", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", "compatibleDefaultModelLabel": "இயல்புநிலை மாடல்", "compatibleDefaultModelHint": "உங்கள் இணக்கமான எண்ட்பாயிண்ட் (endpoint) எதிர்பார்ப்பது போலவே மாடல் ஐடியை (model ID) உள்ளிடவும். இந்த மாடல் இணைப்பின் இயல்புநிலையாகச் சேமிக்கப்படும்.", - "failedImportModels": "Failed to import models", - "noModelsReturnedFromEndpoint": "No models returned from /models endpoint.", - "importingModelsProgress": "Importing {current} of {total} models...", - "foundModelsStartingImport": "Found {count} models. Starting import...", - "importingModelById": "Importing {modelId}...", - "importSuccessCount": "Successfully imported {count, plural, one {# model} other {# models}}!", - "noNewModelsAddedExisting": "No new models were added (all already exist).", - "importDoneCount": "✓ Done! {count, plural, one {# model imported.} other {# models imported.}}", - "unexpectedErrorOccurred": "An unexpected error occurred", + "failedImportModels": "மாடல்களை இறக்குமதி செய்ய முடியவில்லை", + "noModelsReturnedFromEndpoint": "/models endpoint-இலிருந்து எந்த மாடல்களும் திரும்பப் பெறப்படவில்லை.", + "importingModelsProgress": "{total} மாடல்களில் {current}வது இறக்குமதி செய்யப்படுகிறது...", + "foundModelsStartingImport": "{count} மாடல்கள் கண்டறியப்பட்டன. இறக்குமதி தொடங்குகிறது...", + "importingModelById": "{modelId} இறக்குமதி செய்யப்படுகிறது...", + "importSuccessCount": "{count, plural, one {# மாடல் வெற்றிகரமாக இறக்குமதி செய்யப்பட்டது!} other {# மாடல்கள் வெற்றிகரமாக இறக்குமதி செய்யப்பட்டன!}}", + "noNewModelsAddedExisting": "புதிய மாடல்கள் எதுவும் சேர்க்கப்படவில்லை (அனைத்தும் ஏற்கனவே உள்ளன).", + "importDoneCount": "✓ முடிந்தது! {count, plural, one {# மாடல் இறக்குமதி செய்யப்பட்டது.} other {# மாடல்கள் இறக்குமதி செய்யப்பட்டன.}}", + "unexpectedErrorOccurred": "எதிர்பாராத பிழை ஏற்பட்டது", "getApiKey": "API விசையை பெறவும்", "getApiKeyDescription": "API விசையை பதிவு செய்யவும் அல்லது பதிவு செய்யவும்", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# இணைப்பு} other {# இணைப்புகள்}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", - "add": "Add", - "edit": "Edit", - "delete": "Delete", + "add": "சேர்", + "edit": "திருத்து", + "delete": "நீக்கு", "anthropic": "Anthropic", "openai": "OpenAI", - "singleConnectionPerCompatible": "Only one connection is allowed per compatible node. Add another node if you need more connections.", - "connections": "Connections", - "providerProxyTitleConfigured": "Provider proxy: {host}", - "configured": "configured", - "providerProxyConfigureHint": "Configure proxy for all connections of this provider", - "providerProxy": "Provider Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", - "noConnectionsYet": "No connections yet", - "addFirstConnectionHint": "Add your first connection to get started", - "addConnection": "Add Connection", - "availableModels": "Available Models", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", - "pageAutoRefresh": "Page will refresh automatically...", - "statusDisabled": "disabled", - "statusConnected": "connected", - "statusRuntimeIssue": "runtime issue", - "statusAuthFailed": "auth failed", - "statusRateLimited": "rate limited", - "statusNetworkIssue": "network issue", - "statusTestUnsupported": "test unsupported", - "statusUnavailable": "unavailable", - "statusFailed": "failed", - "statusError": "error", - "oauthAccount": "OAuth Account", - "errorTypeRuntime": "Local runtime", - "errorTypeUpstreamAuth": "Upstream auth", - "errorTypeMissingCredential": "Missing credential", - "errorTypeRefreshFailed": "Refresh failed", - "errorTypeTokenExpired": "Token expired", - "errorTypeRateLimited": "Rate limited", - "errorTypeUpstreamUnavailable": "Upstream unavailable", - "errorTypeNetworkError": "Network error", - "errorTypeTestUnsupported": "Test unsupported", - "errorTypeUpstreamError": "Upstream error", + "singleConnectionPerCompatible": "இணக்கமான ஒவ்வொரு முனையத்திற்கும் ஒரு இணைப்பு மட்டுமே அனுமதிக்கப்படும். மேலும் இணைப்புகள் தேவைப்பட்டால் மற்றொரு முனையத்தைச் சேர்க்கவும்.", + "connections": "இணைப்புகள்", + "providerProxyTitleConfigured": "வழங்குநர் ப்ராக்ஸி: {host}", + "configured": "உள்ளமைக்கப்பட்டது", + "providerProxyConfigureHint": "இந்த வழங்குநரின் அனைத்து இணைப்புகளுக்கும் ப்ராக்ஸியை உள்ளமைக்கவும்", + "providerProxy": "வழங்குநர் ப்ராக்ஸி", + "repairEnv": "env-ஐச் சீரமை", + "repairEnvWorking": "சீரமைக்கப்படுகிறது...", + "repairEnvHint": "ஏற்கனவே உள்ள மதிப்புகளை மேலெழுதாமல், விடுபட்ட OAuth இயல்புநிலைகளை .env-இல் மீட்டமைக்கவும்.", + "repairEnvSuccess": "OAuth இயல்புநிலைகள் மீட்டமைக்கப்பட்டன", + "repairEnvFailed": ".env-ஐச் சீரமைக்க முடியவில்லை", + "noConnectionsYet": "இதுவரை இணைப்புகள் இல்லை", + "addFirstConnectionHint": "தொடங்குவதற்கு உங்கள் முதல் இணைப்பைச் சேர்க்கவும்", + "addConnection": "இணைப்பைச் சேர்", + "availableModels": "கிடைக்கக்கூடிய மாதிரிகள்", + "builtInModels": "உள்ளமைக்கப்பட்ட மாதிரிகள்", + "builtInModelsHint": "இந்த வழங்குநருக்கான பதிவக மாதிரிகள். இணக்கத்தன்மை விருப்பங்களை அமைக்க பென்சில் ஐகானைப் பயன்படுத்தவும்.", + "pageAutoRefresh": "பக்கம் தானாகவே புதுப்பிக்கப்படும்...", + "statusDisabled": "முடக்கப்பட்டது", + "statusConnected": "இணைக்கப்பட்டது", + "statusRuntimeIssue": "இயக்கநேரச் சிக்கல்", + "statusAuthFailed": "அங்கீகாரம் தோல்வியடைந்தது", + "statusRateLimited": "விகித வரம்பை எட்டியது", + "statusNetworkIssue": "பிணையச் சிக்கல்", + "statusTestUnsupported": "சோதனை ஆதரிக்கப்படவில்லை", + "statusUnavailable": "கிடைக்கவில்லை", + "statusFailed": "தோல்வியடைந்தது", + "statusError": "பிழை", + "oauthAccount": "OAuth கணக்கு", + "errorTypeRuntime": "உள்ளூர் இயக்கநேரம்", + "errorTypeUpstreamAuth": "மேல்நிலை அங்கீகாரம்", + "errorTypeMissingCredential": "நற்சான்று இல்லை", + "errorTypeRefreshFailed": "புதுப்பித்தல் தோல்வியடைந்தது", + "errorTypeTokenExpired": "டோக்கன் காலாவதியானது", + "errorTypeRateLimited": "விகித வரம்பை எட்டியது", + "errorTypeUpstreamUnavailable": "மேல்நிலைச் சேவை கிடைக்கவில்லை", + "errorTypeNetworkError": "பிணையப் பிழை", + "errorTypeTestUnsupported": "சோதனை ஆதரிக்கப்படவில்லை", + "errorTypeUpstreamError": "மேல்நிலைச் சேவைப் பிழை", "errorTypeCreditsExhausted": "கிரெடிட்கள் இல்லை", "errorTypeBanned": "403 தடைசெய்யப்பட்டது", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", - "proxySourceKey": "Key", + "proxySourceGlobal": "உலகளாவிய", + "proxySourceProvider": "வழங்குநர்", + "proxySourceKey": "விசை", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "ப்ராக்ஸி ஆன்", "proxyOff": "நேரடி (ப்ராக்ஸியைத் தவிர்க்கவும்)", @@ -5468,31 +5471,31 @@ "perKeyProxyDisabledTitle": "இந்த வழங்குநருக்கு ஒரு கீக்கான ப்ராக்ஸி ஒதுக்கீடு முடக்கப்பட்டுள்ளது", "autoPriority": "Auto: {priority}", "proxy": "Proxy", - "retestAuthentication": "Retest authentication", - "retest": "Retest", - "disableConnection": "Disable connection", - "enableConnection": "Enable connection", - "reauthenticateConnection": "Re-authenticate this connection", - "proxyConfig": "Proxy config", - "aliasExistsAlert": "Alias \"{alias}\" already exists. Please use a different model or edit existing alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter supports any model. Add models and create aliases for quick access.", - "modelIdFromOpenRouter": "Model ID (from OpenRouter)", + "retestAuthentication": "அங்கீகாரத்தை மீண்டும் சோதிக்கவும்", + "retest": "மீண்டும் சோதிக்கவும்", + "disableConnection": "இணைப்பை முடக்கவும்", + "enableConnection": "இணைப்பை இயக்கவும்", + "reauthenticateConnection": "இந்த இணைப்பை மீண்டும் அங்கீகரிக்கவும்", + "proxyConfig": "பதிலி உள்ளமைவு", + "aliasExistsAlert": "\"{alias}\" என்ற மாற்றுப்பெயர் ஏற்கனவே உள்ளது. வேறொரு மாதிரியைப் பயன்படுத்தவும் அல்லது ஏற்கனவே உள்ள மாற்றுப்பெயரைத் திருத்தவும்.", + "aliasInputPlaceholder": "மாற்றுப்பெயர்", + "clickToSetAlias": "மாற்றுப்பெயரை அமைக்கக் கிளிக் செய்யவும்", + "clickToEditAlias": "மாற்றுப்பெயர்: {alias} (திருத்தக் கிளிக் செய்யவும்)", + "openRouterAnyModelHint": "OpenRouter எந்த மாதிரியையும் ஆதரிக்கிறது. விரைவான அணுகலுக்காக மாதிரிகளைச் சேர்த்து மாற்றுப்பெயர்களை உருவாக்கவும்.", + "modelIdFromOpenRouter": "மாதிரி ID (OpenRouter இலிருந்து)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", - "customModels": "Custom Models", - "customModelsHint": "Add model IDs not in the default list. These will be available for routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "customModels": "தனிப்பயன் மாதிரிகள்", + "customModelsHint": "இயல்புநிலைப் பட்டியலில் இல்லாத மாதிரி ID-களைச் சேர்க்கவும். இவை வழித்தடத் தேர்வுக்குக் கிடைக்கும்.", + "normalizeToolCallIdLabel": "கருவி அழைப்பு ID-களை 9 எழுத்துகளாக இயல்பாக்கவும் (எ.கா. Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responses டெவலப்பர் பங்கைத் தக்கவைக்கவும் (system ஆக மாற்ற வேண்டாம்)", + "compatAdjustmentsTitle": "இணக்கத்தன்மை", + "compatButtonLabel": "இணக்கத்தன்மை", + "compatToolIdShort": "கருவி ID 9", + "compatDeveloperShort": "டெவலப்பர் பங்கு", + "compatDoNotPreserveDeveloper": "டெவலப்பர் பங்கைத் தக்கவைக்க வேண்டாம்", + "compatBadgeNoPreserve": "தக்கவைக்க வேண்டாம்", + "compatProtocolLabel": "கிளையன்ட் கோரிக்கை நெறிமுறை", + "compatProtocolHint": "OmniRoute இந்தக் கோரிக்கை வடிவத்தைக் (OpenAI Chat, Responses API அல்லது Anthropic Messages) கண்டறியும்போது இந்த விருப்பங்கள் பயன்படுத்தப்படும்.", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,84 +5537,84 @@ "interceptFetchHint": "சொந்த web_fetch கருவி அழைப்புகளை OmniRoute இன் /v1/web/fetch க்கு மீண்டும் எழுதவும்.", "interceptionLoadError": "இடைமறிப்பு அமைப்புகளை ஏற்றுவதில் தோல்வி: {error}", "interceptionSaveError": "இடைமறிப்பு அமைப்புகளைச் சேமிப்பதில் தோல்வி: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", - "perModelQuotaLabel": "Per-Model Quota", - "perModelQuotaDescription": "When enabled, 429/404 errors only lock the specific model, not the entire connection. Use for providers with per-model rate limits (e.g., ModelScope).", + "ccAliasSectionTitle": "Claude Code இல் காட்டவும் (claude/…)", + "ccAliasSectionHint": "Claude Code இன் நுழைவாயில் மாதிரிக் கண்டறிதல் அவற்றைப் பட்டியலிடும் வகையில், இந்த வழங்குநரின் மாதிரிகளை claude/<provider>/<model> பிரதிபலிப்பு ID-களின் கீழ் அறிவிக்கவும். இயல்பாக இது முடக்கப்பட்டிருக்கும் — இதை இயக்கினால் அனைத்து கிளையன்ட்களுக்குமான பட்டியல் உள்ளீடுகள் இரட்டிப்பாகும்.", + "ccAliasProviderLevelLabel": "வழங்குநரின் இயல்புநிலை", + "ccAliasModelOverridesLabel": "ஒவ்வொரு மாதிரிக்குமான மேலெழுதல்கள்", + "ccAliasModelOverrideAriaLabel": "{modelId} க்கான மேலெழுதல்", + "ccAliasStateInherit": "மரபுரிமையாகப் பெறவும்", + "ccAliasStateOn": "இயக்கப்பட்டது", + "ccAliasStateOff": "முடக்கப்பட்டது", + "ccAliasAddModelPlaceholder": "மாடல் ID (எ.கா. gpt-4o)", + "ccAliasAddModelButton": "மேலெழுதலைச் சேர்", + "ccAliasLoadError": "கண்டறிதல் மாற்றுப்பெயர் அமைப்புகளை ஏற்ற முடியவில்லை: {error}", + "ccAliasSaveError": "கண்டறிதல் மாற்றுப்பெயர் அமைப்பைச் சேமிக்க முடியவில்லை: {error}", + "compatUpstreamHeadersLabel": "கூடுதல் அப்ஸ்ட்ரீம் தலைப்புகள்", + "compatUpstreamHeadersHint": "உயர்-அதிகார அமைப்பு — வழங்குநரின் API நற்சான்றுகளைத் திருத்துவதற்கு இணையான நம்பிக்கை நிலை கொண்டது; நம்பகமான நிர்வாகிகள் மட்டுமே இதைப் பயன்படுத்த வேண்டும். வழங்குநரின் API விசையிலிருந்து OmniRoute அங்கீகாரத்தைச் சேர்த்த பிறகு இது ஒன்றிணைக்கப்படும். தனிப்பயன் தலைப்பு ஏற்கனவே உள்ள தலைப்பின் அதே பெயரைப் பயன்படுத்தினால் (எ.கா. Authorization), தானாக உருவாக்கப்பட்ட தலைப்பை (Bearer டோக்கன் உட்பட) உங்கள் மதிப்பு முழுமையாக மாற்றிவிடும் — அமைப்புகளில் உள்ள விசையை அல்லாமல், நீங்கள் உள்ளிட்டதை மட்டுமே அப்ஸ்ட்ரீம் காணும். தவறான உள்ளமைவு 401 பிழையை அல்லது செயலிழந்த அப்ஸ்ட்ரீம் அங்கீகாரத்தை ஏற்படுத்தலாம். ஒவ்வொரு தலைப்புக்கும் ஒரு வரி (எ.கா. சில கேட்வேகளுக்கான கூடுதல் Authentication). முன்னோட்டமிட மதிப்பின் மீது சுட்டியை நகர்த்தவும் அல்லது அதில் கவனம் செலுத்தவும். கவனம் நீங்கும்போது, வெளியில் கிளிக் செய்யும்போது அல்லது இந்தப் பலகையை மூடும்போது சேமிக்கப்படும்.", + "compatUpstreamHeaderName": "தலைப்புப் பெயர்", + "compatUpstreamHeaderValue": "மதிப்பு", + "compatUpstreamAddRow": "தலைப்பைச் சேர்", + "compatUpstreamRemoveRow": "வரிசையை அகற்று", + "compatBadgeUpstreamHeaders": "தலைப்புகள்", + "perModelQuotaLabel": "ஒவ்வொரு மாடலுக்குமான ஒதுக்கீடு", + "perModelQuotaDescription": "இதை இயக்கும்போது, 429/404 பிழைகள் முழு இணைப்பையும் அல்லாமல் குறிப்பிட்ட மாடலை மட்டுமே பூட்டும். ஒவ்வொரு மாடலுக்கும் தனித்தனி விகித வரம்புகளைக் கொண்ட வழங்குநர்களுக்கு இதைப் பயன்படுத்தவும் (எ.கா., ModelScope).", "importFreeModelsOnlyLabel": "இலவச மாடல்களை மட்டும் இறக்குமதி செய்யவும்", "importFreeModelsOnlyHint": "இயக்கப்பட்டால், இந்த வழங்குநரின் இலவச மாடல்கள் மட்டுமே இறக்குமதி செய்யப்படும். கட்டண மாடல்கள் தவிர்க்கப்படும்.", - "perModelQuotaToggle": "Per-Model Quota Toggle", - "modelId": "Model ID", - "customModelPlaceholder": "e.g. gpt-4.5-turbo", - "loading": "Loading...", - "removeCustomModel": "Remove custom model", - "noCustomModels": "No custom models added yet.", - "allSuggestedAliasesExist": "All suggested aliases already exist. Please choose a different model or remove conflicting aliases.", - "failedSaveCustomModel": "Failed to save custom model", - "modelAddedSuccess": "Model {modelId} added successfully", - "failedAddModelTryAgain": "Failed to add model. Please try again.", - "failedSaveImportedModel": "Failed to save imported model to custom database", - "failedImportModelsTryAgain": "Failed to import models. Please try again.", - "failedRemoveModelFromDatabase": "Failed to remove model from database", - "modelRemovedSuccess": "Model removed successfully", - "failedDeleteModelTryAgain": "Failed to delete model. Please try again.", - "compatibleModelsDescription": "Add {type}-compatible models manually or import them from the /models endpoint.", + "perModelQuotaToggle": "ஒவ்வொரு மாடலுக்குமான ஒதுக்கீட்டு நிலைமாற்றி", + "modelId": "மாடல் ID", + "customModelPlaceholder": "எ.கா. gpt-4.5-turbo", + "loading": "ஏற்றப்படுகிறது...", + "removeCustomModel": "தனிப்பயன் மாடலை அகற்று", + "noCustomModels": "தனிப்பயன் மாடல்கள் எதுவும் இன்னும் சேர்க்கப்படவில்லை.", + "allSuggestedAliasesExist": "பரிந்துரைக்கப்பட்ட அனைத்து மாற்றுப்பெயர்களும் ஏற்கனவே உள்ளன. வேறொரு மாடலைத் தேர்ந்தெடுக்கவும் அல்லது முரண்படும் மாற்றுப்பெயர்களை அகற்றவும்.", + "failedSaveCustomModel": "தனிப்பயன் மாடலைச் சேமிக்க முடியவில்லை", + "modelAddedSuccess": "மாடல் {modelId} வெற்றிகரமாகச் சேர்க்கப்பட்டது", + "failedAddModelTryAgain": "மாடலைச் சேர்க்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "failedSaveImportedModel": "இறக்குமதி செய்யப்பட்ட மாடலைத் தனிப்பயன் தரவுத்தளத்தில் சேமிக்க முடியவில்லை", + "failedImportModelsTryAgain": "மாடல்களை இறக்குமதி செய்ய முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "failedRemoveModelFromDatabase": "தரவுத்தளத்திலிருந்து மாடலை அகற்ற முடியவில்லை", + "modelRemovedSuccess": "மாடல் வெற்றிகரமாக அகற்றப்பட்டது", + "failedDeleteModelTryAgain": "மாடலை நீக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.", + "compatibleModelsDescription": "{type}-இணக்கமான மாடல்களைக் கைமுறையாகச் சேர்க்கவும் அல்லது /models முனைப்புள்ளியிலிருந்து அவற்றை இறக்குமதி செய்யவும்.", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API key validation failed. Please check your key and try again.", - "addProviderApiKeyTitle": "Add {provider} API Key", - "checking": "Checking...", - "check": "Check", - "valid": "Valid", - "invalid": "Invalid", - "creating": "Creating...", - "validationChecksAnthropicCompatible": "Validation checks {provider} by verifying the API key.", - "validationChecksOpenAiCompatible": "Validation checks {provider} via /models on your base URL.", - "priorityLabel": "Priority", - "saving": "Saving...", - "save": "Save", - "editConnection": "Edit Connection", - "accountName": "Account name", + "apiKeyValidationFailed": "API விசை சரிபார்ப்பு தோல்வியடைந்தது. உங்கள் விசையைச் சரிபார்த்து மீண்டும் முயற்சிக்கவும்.", + "addProviderApiKeyTitle": "{provider} API விசையைச் சேர்", + "checking": "சரிபார்க்கப்படுகிறது...", + "check": "சரிபார்", + "valid": "செல்லுபடியாகும்", + "invalid": "செல்லுபடியாகாது", + "creating": "உருவாக்கப்படுகிறது...", + "validationChecksAnthropicCompatible": "API விசையைச் சரிபார்ப்பதன் மூலம் {provider} சரிபார்க்கப்படுகிறது.", + "validationChecksOpenAiCompatible": "உங்கள் அடிப்படை URL-இல் உள்ள /models வழியாக {provider} சரிபார்க்கப்படுகிறது.", + "priorityLabel": "முன்னுரிமை", + "saving": "சேமிக்கிறது...", + "save": "சேமி", + "editConnection": "இணைப்பைத் திருத்து", + "accountName": "கணக்குப் பெயர்", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "நிலைச் சரிபார்ப்பு (நிமி)", "healthCheckHint": "Proactive token refresh interval. 0 = disabled.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", - "failedTestConnection": "Failed to test connection", - "failed": "Failed", - "leaveBlankKeepCurrentApiKey": "Leave blank to keep the current API key.", - "editCompatibleTitle": "Edit {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", - "apiKeyForCheck": "API Key (for Check)", + "deselectAllModels": "அனைத்துத் தேர்வுகளையும் நீக்கு", + "modelsActiveCount": "{active}/{total} செயலில் உள்ளன", + "noModelsMatch": "\"{filter}\" உடன் பொருந்தும் மாதிரிகள் எதுவும் இல்லை", + "groupLabel": "சூழல்", + "groupPlaceholder": "எ.கா. eKaizen, தனிப்பட்டது", + "failedTestConnection": "இணைப்பைச் சோதிக்க முடியவில்லை", + "failed": "தோல்வியடைந்தது", + "leaveBlankKeepCurrentApiKey": "தற்போதைய API விசையைத் தொடர்ந்து பயன்படுத்த, இதைக் காலியாக விடவும்.", + "editCompatibleTitle": "{type} இணக்கமானதைத் திருத்து", + "compatibleBaseUrlHint": "உங்கள் {type}-இணக்கமான API-இன் மூல URL. தனிப்பயன் இறுதிப்புள்ளிப் பாதைகளுக்கு மேம்பட்ட அமைப்புகளைப் பயன்படுத்தவும்.", + "apiKeyForCheck": "API விசை (சரிபார்ப்புக்கு)", "testModelIdLabel": "மாடல் ஐடி (விருப்பத்திற்குரியது)", "testModelIdPlaceholder": "எ.கா. my-model-id", "testModelIdHint": "வழங்குநரிடம் /models இறுதிப்புள்ளி இல்லை எனில், அதற்குப் பதிலாக /chat/completions வழியாக சரிபார்க்க மாடல் ஐடியை உள்ளிடவும்.", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "{type} இணக்கமானது (உற்பத்தி)", + "tokenRefreshed": "டோக்கன் வெற்றிகரமாகப் புதுப்பிக்கப்பட்டது", + "tokenRefreshFailed": "டோக்கனைப் புதுப்பிக்க முடியவில்லை", "cursorSessionUnchanged": "அந்த அமர்வு ஏற்கனவே நடப்பில் உள்ளது", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "அங்கீகாரத்தைப் பயன்படுத்து", + "exportCodexAuthFile": "அங்கீகாரத்தை ஏற்றுமதி செய்", "applyClaudeAuthLocal": "அங்கீகாரத்தைப் பயன்படுத்தவும்", "exportClaudeAuthFile": "ஏற்றுமதி அங்கீகாரம்", "importClaudeAuth": "இறக்குமதி அங்கீகாரம்", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} தோல்வியடைந்தது", "codexImportBulkZipExtracting": "ZIP பிரித்தெடுக்கிறது…", "codexImportBulkZipError": "ZIP பிரித்தெடுக்க முடியவில்லை", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "மேம்பட்ட அமைப்புகள்", + "chatPathLabel": "அரட்டை இறுதிப்புள்ளிப் பாதை", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "தரமற்ற API-களைக் கொண்ட வழங்குநர்களுக்கான தனிப்பயன் அரட்டைப் பாதை (எ.கா. /v4/chat/completions)", + "modelsPathLabel": "மாதிரிகள் இறுதிப்புள்ளிப் பாதை", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "சரிபார்ப்புக்கான தனிப்பயன் மாதிரிப் பாதை (எ.கா. /v4/models)", "clientIdentityLabel": "கிளையண்ட் அடையாளம்", "clientIdentityHint": "விருப்பத்திற்குரியது. இணக்கமான கேட்வேகளுக்குத் தேவைப்படும் பட்சத்தில், அறியப்பட்ட CLI உடன் பொருந்தக்கூடிய கிளையன்ட் கைரேகை ஹெடர்களை (எ.கா. User-Agent) சேர்க்கிறது.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "செயலிழக்கச் செய்யப்பட்டது (கைமுறையாக)", + "statusBanned": "தடைசெய்யப்பட்டது / Sandbox விதிமீறல்", + "statusCreditsExhausted": "போதிய இருப்பு இல்லை / ஒதுக்கீடு தீர்ந்துவிட்டது", + "showEmails": "அனைத்து மின்னஞ்சல்களையும் காட்டு", + "hideEmails": "அனைத்து மின்னஞ்சல்களையும் மறை", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "மற்றொரு API விசையைச் சேர்க்கவும் அல்லது பல விசைகளை ஒட்டவும்", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "தொகுப்பான் நுழைவாயில்கள்", "enterpriseCloud": "எண்டர்பிரைஸ் & கிளவுட்", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API வடிவமைப்பு லேபிள்", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API பிராந்தியம் சீனா", + "apiRegionHint": "API பிராந்தியக் குறிப்பு", + "apiRegionInternational": "API பிராந்தியம் சர்வதேசம்", + "apiRegionLabel": "API பிராந்திய லேபிள்", + "apikey": "API விசை", + "audio": "ஆடியோ", + "audioProvidersHeading": "ஆடியோ வழங்குநர்கள் தலைப்பு", "cloudAgentProviders": "கிளவுட் ஏஜென்ட் வழங்குநர்கள்", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "ஆடியோ குறும் லேபல்", + "azureOpenAiBaseUrlHint": "Azure Open Ai அடிப்படை URL குறிப்பு", + "bailianBaseUrlHint": "Bailian அடிப்படை URL குறிப்பு", + "claudeWebCookieHint": "claude.ai-ஐத் திறக்கவும் → DevTools → Application → Cookies → claude.ai என்பதற்குச் சென்று, 'sessionKey' மதிப்பை நகலெடுக்கவும். Cloudflare-க்காக cf_clearance, __cf_bm, _cfuvid ஆகியவையும் தேவை.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web குக்கீ குறிப்பு", + "blackboxWebCookiePlaceholder": "Blackbox Web குக்கீ இடநிரப்பி", "t3ChatWebCookieHint": "t3.chat → DevTools → Application → Local Storage → https://t3.chat ஐ திறக்கவும், 'convex-session-id' ஐ நகலெடுக்கவும். பின்னர் DevTools → Networkஐத் திறந்து, எந்த அரட்டை கோரிக்கையிலிருந்தும் முழு குக்கீ தலைப்பையும் நகலெடுக்கவும். இரண்டு மதிப்புகளையும் கீழே உள்ள புலங்களில் ஒட்டவும்.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web குக்கீ குறிப்பு", "blockClaudeExtraUsageDescription": "இது செயல்படுத்தப்பட்டால், OmniRoute இந்த Claude இணைப்பை கிடைக்காததாக குறிக்கிறது, பயன்பாட்டு API வரிசைப்படுத்தப்பட்ட கூடுதல் பயன்பாட்டைப் புகாரளிக்கும்போது, எனவே மீள்பார்வை கட்டணத்தை அடிப்படையாகக் கொண்டு கூடுதல் பில்லிங்கில் தொடர்வதற்குப் பதிலாக மற்றொரு இணைப்புக்கு மாறுகிறது.", "blockClaudeExtraUsageLabel": "கிளோட் கூடுதல் பயன்பாட்டை தடிக்கவும்", "disableCoolingDescription": "தற்காலிக கூல்டவுனைத் தவிர்க்கவும், இதனால் மீட்டெடுக்கக்கூடிய பிழைகளுக்குப் பிறகும் இந்த இணைப்பு தகுதியுடையதாக இருக்கும் (தடைசெய்யப்பட்ட/காலாவதியான போன்ற இறுதி நிலைகள் இன்னும் பொருந்தும்).", "disableCoolingLabel": "இந்த இணைப்பிற்கான கூல்டவுனை முடக்கவும்", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 விசை சேர்க்கப்பட்டது} other {# விசைகள் சேர்க்கப்பட்டன}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 நகல் தவிர்க்கப்பட்டது} other {# நகல்கள் தவிர்க்கப்பட்டன}}", + "bulkPasteHint": "ஒவ்வொரு வரியிலும் ஓர் API விசையை ஒட்டவும். காலியான வரிகள் புறக்கணிக்கப்படும்; நகல் விசைகள் தவிர்க்கப்படும்.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "மறைக்கப்பட்ட Claude சிந்தனை ஸ்ட்ரீம்கள் தேவைப்படும் CC Compatible அப்ஸ்ட்ரீம்களுக்காக redact-thinking பீட்டா தலைப்பைச் சேர்க்கிறது.", + "ccCompatibleRedactThinkingLabel": "redact-thinking பீட்டாவை இயக்கு", + "ccCompatibleSummarizeThinkingDescription": "ஆதரிக்கப்படும் Claude மாதிரிகள் காட்சிப்படுத்தக்கூடிய சிந்தனை மாற்றங்களை ஸ்ட்ரீம் செய்யும் வகையில், CC Compatible சிந்தனைக் கோரிக்கைகளில் `display: \"summarized\"` என்பதைச் சேர்க்கிறது.", + "ccCompatibleSummarizeThinkingLabel": "சுருக்கப்பட்ட சிந்தனைக் காட்சியை இயக்கு", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "கிடைக்கும்போது Codex கோரிக்கைகளுக்கு முன்னுரிமைச் சேவை அடுக்கைப் பயன்படுத்தவும்.", + "codexFastServiceTierLabel": "Codex விரைவு சேவை அடுக்கு", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "இணக்கமான அப்ஸ்ட்ரீம் தலைப்புப் பெயர் இடநிரப்பி", + "compatUpstreamHeaderValuePlaceholder": "இணக்கமான அப்ஸ்ட்ரீம் தலைப்பு மதிப்பு இடநிரப்பி", + "compatible": "இணக்கமானது", + "configuredCount": "உள்ளமைக்கப்பட்ட எண்ணிக்கை", + "consoleApiKeyOracleHint": "கன்சோல் API விசை Oracle குறிப்பு", + "consoleApiKeyOracleLabel": "கன்சோல் API விசை Oracle லேபல்", + "consoleApiKeyOraclePlaceholder": "கன்சோல் API விசை Oracle இடநிரப்பி", + "newApiUserIdLabel": "New-API பயனர் ID", + "newApiUserIdPlaceholder": "எ.கா. 12345", + "newApiUserIdHint": "ஒதுக்கீட்டு இருப்பைப் பெறுவதற்காக கன்சோல் API விசையுடன் சேர்த்துப் பயன்படுத்தப்படும் AgentRouter New-Api-User தலைப்பு மதிப்பு.", "newApiAggregatorToggleLabel": "அக்ரிகேட்டர் கேட்‌வே", "newApiAggregatorToggleHint": "புதிய-API / ஒன்-API / Sub2API தொகுப்பாளர் நொடிகளுக்கான சமநிலை கண்டறிதலை செயல்படுத்தவும். டாஷ்போர்டில் சமநிலை அடையாளம் மற்றும் குவோட்டா-முன் வழிமுறை சிக்கிய கணக்குகளை தவிர்க்கும்.", "newApiAggregatorConsoleApiKeyHint": "அக்ரிகேட்டரின் /api/user/self எண்ட்பாயிண்டிற்கான சிஸ்டம் அணுகல் டோக்கன். ரவுடிங் API விசை அல்ல.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "புதிய-API / ஒன்-API / Sub2API தொகுப்பாளர் பொருந்தும் நொடிகளுக்கான சமநிலை கண்டுபிடிப்பை இயக்கவும்", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "தனிப்பயன் பயனர் முகவர் குறிப்பு", + "customUserAgentLabel": "தனிப்பயன் பயனர் முகவர் லேபல்", + "databricksBaseUrlHint": "Databricks அடிப்படை URL குறிப்பு", + "defaultThinkingStrengthHint": "ஒரு கோரிக்கையில் பகுத்தறிவு முயற்சி குறிப்பிடப்படாதபோது பயன்படுத்தப்படும்.", + "defaultThinkingStrengthLabel": "இயல்புநிலை சிந்தனை வலிமை", + "deleteAllExtraApiKeys": "அனைத்தையும் நீக்கு", + "excludedModelsHint": "விலக்கப்பட்ட மாதிரிகள் குறிப்பு", + "excludedModelsLabel": "விலக்கப்பட்ட மாதிரிகள் லேபல்", + "excludedModelsPlaceholder": "விலக்கப்பட்ட மாதிரிகள் இடநிரப்பி", + "expirationBannerExpired": "காலாவதி அறிவிப்புப் பட்டை: காலாவதியானது", + "expirationBannerExpiredDesc": "காலாவதி பதாகை காலாவதியானதற்கான விளக்கம்", + "expirationBannerExpiringSoon": "காலாவதி பதாகை விரைவில் காலாவதியாகும்", + "expirationBannerExpiringSoonDesc": "காலாவதி பதாகை விரைவில் காலாவதியாகும் என்பதற்கான விளக்கம்", + "extraApiKeyMasked": "விசை {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "கூடுதல் API விசைகளுக்கான குறிப்பு", + "extraApiKeysLabel": "கூடுதல் API விசைகளுக்கான லேபிள்", + "apiKeyHealthLabel": "API விசையின் நிலை", + "apiKeyStatusActive": "செயலில் உள்ளது", + "apiKeyStatusWarning": "எச்சரிக்கை ({count} தோல்விகள்)", + "apiKeyStatusInvalid": "செல்லாதது", + "primaryKey": "முதன்மை விசை", + "apiKeyInvalidAlert": "இணைப்புகளில் ஏற்பட்ட அங்கீகாரத் தோல்விகள் காரணமாக {count} API விசை(கள்) செல்லாதவையாகக் குறிக்கப்பட்டுள்ளன: {connections}. சுழற்சியில் அவை தவிர்க்கப்படும். மதிப்பாய்வு செய்ய கிளிக் செய்யவும்.", + "apiKeyInvalidAlertTitle": "API விசை நிலை எச்சரிக்கை", + "apiKeyWarningAlert": "இணைப்புகளில் அதிகரித்த தோல்வி விகிதம் காரணமாக {count} API விசை(கள்) எச்சரிக்கை நிலையில் உள்ளன: {connections}. சுழற்சிச் சிக்கல்களைத் தவிர்க்க மதிப்பாய்வு செய்யவும்.", + "apiKeyWarningAlertTitle": "API விசை எச்சரிக்கை", + "googlePseInfo": "Google Pse தகவல்", "antigravityProjectIdHint": "ஆண்டிகிராவிட்டி கிளவுட் கோட் கோரிக்கைகளுக்கான விருப்ப மேலெழுதல். Google OAuth இன் போது கண்டுபிடிக்கப்பட்ட திட்டத்தைப் பயன்படுத்த, காலியாக விடவும்.", "antigravityClientProfileLabel": "கிளையன்ட் சுயவிவரம்", "antigravityClientProfileHint": "API-க்கு OmniRoute எந்த Antigravity கிளையன்ட் அடையாளத்தை வழங்குகிறது என்பதைத் தேர்வுசெய்யவும்.", @@ -5865,18 +5868,18 @@ "tierFast": "வேகமான", "antigravityProjectIdLabel": "Google Cloud Project ஐடி", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok இணையக் குக்கீ இடநிரப்பி", + "herokuBaseUrlHint": "Heroku அடிப்படை URL குறிப்பு", + "hideEmail": "மின்னஞ்சலை மறை", + "imageProviders": "பட வழங்குநர்கள்", "videoProviders": "வீடியோ உருவாக்கம்", "embeddingRerankProviders": "உட்பொதிப்புகள் & மறுவரிசைப்படுத்துதல்", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "படங்களுக்கான குறுகிய லேபிள்", + "llmProviders": "Llm வழங்குநர்கள்", + "localProviderApiKeyOptionalHint": "உள்ளூர் வழங்குநரின் API விசை விருப்பத்திற்குரியது என்பதற்கான குறிப்பு", + "localProviderBaseUrlHint": "உள்ளூர் வழங்குநரின் அடிப்படை URL குறிப்பு", + "localProviders": "உள்ளூர் வழங்குநர்கள்", + "maxConcurrentWholeNumberError": "அதிகபட்ச ஒரேநேர எண்ணிக்கை முழு எண்ணாக இருக்க வேண்டும்", "m365TierLabel": "Copilot அடுக்கு", "m365TierHint": "இந்த இணைப்பு எந்த Microsoft 365 Copilot மேற்பரப்பைப் பயன்படுத்துகிறது என்பதைத் தேர்வுசெய்யவும். தனிநபர் என்பது இயல்புநிலை நுகர்வோர் BizChat ஆகும்; கல்வி மற்றும் எண்டர்பிரைஸ் (வேலை) ஆகியவை அவற்றின் குத்தகைதாரர் மேற்பரப்புகளைத் தேர்வுசெய்கின்றன.", "m365TierIndividualOption": "தனிநபர் (இயல்புநிலை)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "மலிவானது", "tierOverridePremium": "பிரீமியம்", "tierOverrideHelpText": "மாதிரி விலையிலிருந்து OmniRoute அதை ஊகிப்பதற்குப் பதிலாக, இந்த வழங்குநரை ஒரு ரூட்டிங் அடுக்கில் பின் செய்யவும்.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark இணையக் குக்கீ குறிப்பு", + "museSparkWebCookiePlaceholder": "Muse Spark இணையக் குக்கீ இடநிரப்பி", "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "openCliTools": "Cli கருவிகளைத் திற", + "openSettings": "அமைப்புகளைத் திற", + "openaiResponsesStoreDescription": "சேமிக்கப்பட்ட பதில் நிலையைப் பராமரிக்க இணக்கமான Responses API கோரிக்கைகளை அனுமதிக்கவும்.", + "openaiResponsesStoreLabel": "OpenAI Responses சேமிப்பகம்", + "perplexitySearchSharedKeyInfo": "Perplexity Search பகிரப்பட்ட விசைத் தகவல்", + "perplexityWebCookieHint": "Perplexity இணையக் குக்கீ குறிப்பு", + "perplexityWebCookiePlaceholder": "Perplexity இணையக் குக்கீ இடநிரப்பி", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "விகித வரம்பு மேலெழுதுதல்கள்", "rateLimitOverridesMaxConcurrentHint": "இந்த இணைப்பிற்கான அதிகபட்ச ஒரே நேரத்தில் நிகழும் கோரிக்கைகளின் மேலெழுதுதல். கணக்கு அளவிலான வரம்பை மேலெழுதுகிறது.", "rateLimitOverridesMaxConcurrentLabel": "அதிகபட்ச ஒரே நேரத்தில் நிகழும் கோரிக்கைகள் (விகித வரம்பு)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "விகித வரம்பு இடத்திற்காக ஒரு கோரிக்கை தோல்வியடைவதற்கு முன் காத்திருக்கக்கூடிய அதிகபட்ச நேரம் (ms). இந்த இணைப்பிற்கு மட்டும் உலகளாவிய மீட்சித்திறன் அமைப்பை மீறுகிறது.", + "rateLimitOverridesMaxWaitMsLabel": "அதிகபட்ச வரிசைக் காத்திருப்பு (ms)", "rateLimitOverridesMinTimeHint": "கோரிக்கைகளுக்கு இடையிலான குறைந்தபட்ச நேரம் (மில்லிசெகண்ட்). இயல்புநிலை விகித வரம்பியின் தாமதத்தை மேலெழுதுகிறது.", "rateLimitOverridesMinTimeLabel": "குறைந்தபட்ச இடைவெளி (ms)", "rateLimitOverridesRpdHint": "இந்த இணைப்பிற்கான ஒரு நாளைக்கு அதிகபட்ச கோரிக்கைகள். வழங்குநர் இயல்புநிலையை மேலெழுதுகிறது.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (டோக்கன்கள்/நாள்)", "rateLimitOverridesTpmHint": "இந்த இணைப்பிற்கான நிமிடத்திற்கு அதிகபட்ச டோக்கன்கள். வழங்குநரின் இயல்புநிலையை மேலெழுதுகிறது.", "rateLimitOverridesTpmLabel": "TPM (டோக்கன்கள்/நிமிடம்)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", - "searchProviders": "Search Providers", + "refreshOauthTokenTitle": "OAuth டோக்கனைப் புதுப்பித்தல் தலைப்பு", + "regionHint": "பிராந்தியக் குறிப்பு", + "regionLabel": "பிராந்திய லேபிள்", + "removeThisKey": "இந்த விசையை அகற்று", + "routingTagsHint": "வழித்தடக் குறிச்சொற்கள் குறிப்பு", + "routingTagsLabel": "வழித்தடக் குறிச்சொற்கள் லேபிள்", + "routingTagsPlaceholder": "வழித்தடக் குறிச்சொற்கள் இடநிரப்பி", + "search": "தேடு", + "searchEngineIdHint": "தேடுபொறி ID குறிப்பு", + "searchEngineIdLabel": "தேடுபொறி ID லேபிள்", + "searchEngineIdRequired": "தேடுபொறி ID தேவை", + "searchProvider": "தேடல் வழங்குநர்", + "searchProviderDesc": "தேடல் வழங்குநர் விளக்கம்", + "searchProviders": "தேடல் வழங்குநர்கள்", "searchByModel": "மாதிரி மூலம் தேடவும்…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "தேடல் வழங்குநர்கள் தலைப்பு", + "searxngBaseUrlHint": "Searxng அடிப்படை URL குறிப்பு", + "searxngInfo": "Searxng தகவல்", + "sessionCookieLabel": "அமர்வு குக்கி லேபிள்", + "showEmail": "மின்னஞ்சலைக் காட்டு", + "snowflakeBaseUrlHint": "Snowflake அடிப்படை URL குறிப்பு", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "குறிச்சொல் குழுக் குறிப்பு", + "tagGroupLabel": "குறிச்சொல் குழு லேபிள்", + "tagGroupPlaceholder": "குறிச்சொல் குழு இடநிரப்பி", + "testModel": "மாதிரியைச் சோதி", + "testingModel": "மாதிரி சோதிக்கப்படுகிறது", "modelTestQuotaTooltip": "கோட்டா முடிந்தது — நாளை மீண்டும் தொடங்கும் அல்லது மேலதிகம் தேவை.", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "டோக்கன் காலாவதியானது என்ற அடையாளம்", + "tokenExpiredTitle": "டோக்கன் காலாவதியானது தலைப்பு", + "tokenExpiresSoonTitle": "டோக்கன் விரைவில் காலாவதியாகும் தலைப்பு", + "tokenShort": "குறுகிய டோக்கன்", + "totalKeysRotating": "{count, plural, one {1 விசை சுழற்சியில் உள்ளது} other {# விசைகள் சுழற்சியில் உள்ளன}}", + "unhideModel": "மாதிரியை மீண்டும் காட்டு", + "upstreamProxyProviders": "அப்ஸ்ட்ரீம் ப்ராக்ஸி வழங்குநர்கள்", "validationModelIdHint": "API விசையைச் சரிபார்க்கப் பயன்படுத்தப்படும் மாடல். வழங்குநரின் முதல் கிடைக்கக்கூடிய மாடலைப் பயன்படுத்த காலியாக விடவும்.", "validationModelIdLabel": "சரிபார்ப்பு மாடல்", "validationModelIdPlaceholder": "எ.கா. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "உங்கள் Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) அல்லது OAuth access_token-ஐ ஒட்டவும்", + "webCookieProviders": "வலைக் குக்கி வழங்குநர்கள்", + "weeklyShort": "வாராந்திரச் சுருக்கம்", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo அடிப்படை URL குறிப்பு", "globalCodexServiceMode": "உலகளாவிய Codex சேவை பயன்முறை", "connect": "இணைக்கவும்", "manualApiKey": "கைமுறை API கீ", @@ -5975,9 +5978,9 @@ "zedImportDescription": "OS keychain-இல் Zed IDE சேமித்துள்ள AI வழங்குநர் நற்சான்றுகளை (OpenAI, Anthropic, Google, Mistral, xAI) கண்டறிந்து அவற்றை இணைப்புகளாக இறக்குமதி செய்யவும். இந்த கணினியில் Zed IDE நிறுவப்பட்டிருக்க வேண்டும்.", "zedImportButton": "Zed இல் இருந்து இறக்குமதி செய்", "zedImportFailed": "Zed இறக்குமதி தோல்வியுற்றது", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed இறக்குமதிக் குறிப்பு", + "zedImportNetworkError": "Zed இறக்குமதி நெட்வொர்க் பிழை", + "zedImportNone": "Zed இறக்குமதி எதுவுமில்லை", "zedImportSuccess": "{providers} வழங்குநர்களுக்கான Zed இல் இருந்து {credentials} அங்கீகாரங்களை இறக்குமதி செய்யப்பட்டது", "zedImporting": "இறக்குமதி செய்கிறேன்…", "zedNoCredentials": "keychain-இல் Zed நற்சான்றுகள் எதுவும் கண்டறியப்படவில்லை", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5 உட்பட 40+ மாதிரிகளுக்கான தள்ளுபடி செய்யப்பட்ட API ப்ராக்ஸி. https://freeaiapikey.com/dashboard இல் உங்கள் API விசையைப் பெறவும். அடிப்படை URL: https://freeaiapikey.com/v1.", "freemodel-dev": "https://freemodel.dev இல் $300 இலவச API கிரெடிட்களைப் பெறவும் — கட்டணத் தகவல் தேவையில்லை. OpenAI-இணக்கமான எண்ட்பாயிண்ட். GPT-5.4 மற்றும் GPT-5.5 மாதிரிகள் கிடைக்கின்றன.", "friendliai": "சர்வர்லெஸ் இன்ஃபெரன்ஸிற்கான இலவச அடுக்கு — கிரெடிட் கார்டு தேவையில்லை", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio மூலம் இலவச அடுக்கு; ஒவ்வொரு மாதிரிக்குமான ஒதுக்கீடுகள் இனி வெளியிடப்படுவதில்லை (AI Studio-வில் உள்ள ஒதுக்கீட்டுப் பக்கத்தைப் பார்க்கவும்) — கிரெடிட் கார்டு தேவையில்லை.", "gigachat": "GigaChat (Sber) ஐ ஒரு API விசையுடன் இணைக்கவும்.", "gitlab": "பொது குறியீடு பரிந்துரைகள் API க்கான GitLab தனிப்பட்ட அணுகல் டோக்கன். gitlab.com ஐப் பயன்படுத்தாதபோது சுய-ஹோஸ்ட் செய்யப்பட்ட அடிப்படை URL ஐ உள்ளமைக்கவும்.", "gitlawb-gmi": "Gitlawb Opengateway டாஷ்போர்டிலிருந்து உங்கள் API விசையைப் பெறவும்.", @@ -6184,7 +6187,7 @@ "glm-cn": "GLM Coding (China) ஐ ஒரு API விசையுடன் இணைக்கவும்.", "glmt": "அதிக டோக்கன் பட்ஜெட், சிந்தனை இயக்கப்பட்டது மற்றும் நீண்ட காலாவதி நேரத்துடன் கூடிய முன்னமைக்கப்பட்ட GLM சுயவிவரம்.", "getgoapi": "GoAPI ஐ ஒரு API விசையுடன் இணைக்கவும்.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "இலவசத் திட்டம்: ஒவ்வொரு மாடலுக்கும் வரம்புகள் (ஒரு chat மாடலுக்கு நாளொன்றுக்கு 200K tokens; RPM/RPD விவரங்களுக்கு console.groq.com/docs/rate-limits ஐப் பார்க்கவும்) — கோப்பில் கட்டண முறை எதுவும் இல்லை.", "haiper": "haiper.ai/haiper-api இல் API விசையைப் பெறவும்", "heroku": "Heroku AI ஐ ஒரு API விசையுடன் இணைக்கவும்.", "hcnsec": "api.hcnsec.cn இல் API விசையைப் பெறுக", @@ -6229,7 +6232,7 @@ "nscale": "இன்ஃபெரன்ஸ் சோதனைக்காக பதிவு செய்யும் போது $5 இலவச கிரெடிட்கள்", "nube": "Nube.sh ஐ ஒரு API விசையுடன் இணைக்கவும்.", "nvidia": "இலவச டெவலப்பர் அணுகல்: ~40 RPM, 70+ மாடல்கள் (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)", - "oci": "OCI exposes OpenAI-compatible chat and responses endpoints. Project ID is optional in OmniRoute but may be required for Responses and agentic workflows.", + "oci": "OCI, OpenAI-இணக்கமான chat மற்றும் responses endpoints-ஐ வழங்குகிறது. OmniRoute-இல் Project ID விருப்பத்தேர்வாகும்; ஆனால் Responses மற்றும் agentic workflows-க்கு அது தேவைப்படலாம்.", "ollama-cloud": "Ollama Cloud-ஐ ஒரு API கீ மூலம் இணைக்கவும்.", "openadapter": "OpenAdapter ஆனது https://api.openadapter.in/v1/chat/completions இல் OpenAI-உடன் இணக்கமான அரட்டை நிறைவு எண்ட்பாயிண்ட்டை வழங்குகிறது, இது 70+ திறந்த மூல மாதிரிகளை (DeepSeek, Qwen, Kimi, MiniMax, GLM, Llama, Mistral, …) ஒருங்கிணைக்கிறது. OmniRoute ஆனது OpenAI புரோட்டோகாலைப் பயன்படுத்துகிறது.", "openai": "OpenAI-ஐ ஒரு API கீ மூலம் இணைக்கவும்.", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.ai இல் ஒரு API கீயை உருவாக்கி, பின்னர் அதை இங்கே Bearer டோக்கனாக ஒட்டவும். OpenAI-உடன் இணக்கமான எண்ட்பாயிண்ட் https://router.requesty.ai/v1 இல் நேரடி /v1/models பட்டியலுடன் உள்ளது.", "runwayml": "Runway வீடியோ உருவாக்கம் என்பது பணி அடிப்படையிலானது. OmniRoute ஆனது உரை-க்கு-வீடியோ அல்லது படம்-க்கு-வீடியோ பணிகளைச் சமர்ப்பித்து, /v1/tasks/[id] ஐத் தொடர்ந்து சரிபார்த்து, முடிக்கப்பட்ட வீடியோ வெளியீடுகளை மீண்டும் OpenAI போன்ற /v1/videos/generations பதிலுக்கு இயல்பாக்குகிறது.", "sambanova": "பதிவு செய்யும் போது $5 இலவச கிரெடிட்கள் (30 நாட்கள் செல்லுபடியாகும்), கிரெடிட் கார்டு தேவையில்லை", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.cc இல் ஒரு API key-ஐ உருவாக்கி, பின்னர் அதை Bearer token ஆக இங்கே ஒட்டவும். OpenAI-இணக்கமான base URL: https://seekai.cc/v1.", "sap": "மாதிரி கண்டறிதல் ஆனது AI_API_URL இல் /v2/lm/scenarios/foundation-models/models ஐப் பயன்படுத்துகிறது. அரட்டை கோரிக்கைகள் deploymentUrl/chat/completions ஐப் பயன்படுத்துகின்றன மற்றும் AI-Resource-Group தேவைப்படுகிறது.", "sarvam": "Sarvam AI OpenAI-க்கு இணக்கமானது /v1 இல். OmniRoute /v1/models ஐ ஆராய்ந்து /v1/chat/completions க்கு உரையாடல் போக்குவரத்தை வழிமொழிகிறது. மாதிரிகள் இந்திய மொழிகளுக்காக அமைக்கப்பட்டுள்ளது.", "scaleway": "புதிய கணக்குகளுக்கு 1M இலவச டோக்கன்கள் — EU/GDPR இணக்கமானது (பாரிஸ்), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "ஏற்கனவே உள்ள OAuth flow மூலம் Claude Code-ஐ இணைக்கவும்.", "cline": "ஏற்கனவே உள்ள OAuth flow மூலம் Cline-ஐ இணைக்கவும்.", "cursor": "ஏற்கனவே உள்ள OAuth flow மூலம் Cursor IDE-ஐ இணைக்கவும்.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "cursor.com/dashboard/api இலிருந்து பெறப்பட்ட பயனர் API key (crsr_...) மூலம் Cursor-ஐ இணைக்கவும்; IDE session தேவையில்லை.", "github": "ஏற்கனவே உள்ள OAuth flow மூலம் GitHub Copilot-ஐ இணைக்கவும்.", "gitlab-duo": "ai_features + read_user scopes கொண்ட OAuth பயன்பாடு. இந்த OmniRoute instance-இல் GITLAB_DUO_OAUTH_CLIENT_ID மற்றும் விருப்பத்தேர்வாக GITLAB_DUO_OAUTH_CLIENT_SECRET-ஐ உள்ளமைக்கவும்.", "kilocode": "ஏற்கனவே உள்ள OAuth flow மூலம் Kilo Code-ஐ இணைக்கவும்.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "வழங்குநரின் சொந்த டொமைனில் இருந்து தேவையான நற்சான்றிதழை நகலெடுக்கவும். குக்கீகளுக்கு, குக்கீ தலைப்பு மதிப்பை மட்டும் நகலெடுத்து குக்கீ:.", "webSessionGuideStep3Manual": "கையேடு பாதை: உலாவி மேம்பாட்டு கருவிகளை திறக்கவும் (F12 → நெட்வொர்க்), பக்கம் புதுப்பிக்கவும், அங்கீகாரம் பெற்ற கோரிக்கையை திறக்கவும், மற்றும் கோரிக்கை தலைப்புகளில் இருந்து குக்கீ தலைப்பு மதிப்பை நகலெடுக்கவும் — குக்கீ: முன்னணி நீக்கவும்.", "webSessionGuideStep4": "அதை இங்கே ஒட்டவும் மற்றும் இணைப்பைச் சரிபார்க்கவும். அது வேலை செய்வதை நிறுத்தினால், மீண்டும் உள்நுழைந்து புதிய மதிப்புடன் மாற்றவும்.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har கோப்பை இறக்குமதி செய்", + "harImportButtonBusy": "இறக்குமதி செய்யப்படுகிறது…", + "harImportButtonHint": "குறைந்தது ஒரு chat செய்தியை அனுப்பிய பிறகு DevTools Network தாவலிலிருந்து ஏற்றுமதி செய்யவும்.", + "harImportStatusValid": "இறக்குமதி செய்யப்பட்டது — சுமார் {minutes} நிமிடங்களுக்கு செல்லுபடியாகும்.", + "harImportStatusExpiringSoon": "இறக்குமதி செய்யப்பட்டது — இன்னும் சுமார் {minutes} நிமிடங்களுக்கு மட்டுமே செல்லுபடியாகும்.", + "harImportStatusExpired": "இறக்குமதி செய்யப்பட்டது, ஆனால் இந்த token ஏற்கனவே காலாவதியாகிவிட்டது ({minutes} நிமிடங்களுக்கு முன்பு) — புதிய HAR ஒன்றை ஏற்றுமதி செய்யவும்.", + "harImportStatusUnknownExpiry": "இறக்குமதி செய்யப்பட்டது. அதன் காலாவதி நேரத்தைப் படிக்க முடியவில்லை.", + "harImportErrorNotJson": "அந்தக் கோப்பு செல்லுபடியாகும் JSON அல்ல — அது உண்மையிலேயே .har export தானா?", + "harImportErrorNoEntries": "இந்த HAR-இல் எந்த network entries-உம் பதிவு செய்யப்படவில்லை.", + "harImportErrorNoChathubUrl": "இந்த HAR-இல் Copilot chat connection எதுவும் காணப்படவில்லை. ஏற்றுமதி செய்வதற்கு முன் m365.cloud.microsoft இல் குறைந்தது ஒரு chat செய்தியை அனுப்பவும்.", + "harImportErrorUnparsableUrl": "chat connection கண்டறியப்பட்டது, ஆனால் அதன் URL-ஐப் படிக்க முடியவில்லை.", + "harImportErrorMissingFields": "chat connection கண்டறியப்பட்டது, ஆனால் அதில் token இல்லை.", + "harImportErrorReadFailed": "அந்தக் கோப்பைப் படிக்க முடியவில்லை.", + "harImportErrorUnknown": "அந்த HAR கோப்பிலிருந்து credential-ஐப் பிரித்தெடுக்க முடியவில்லை.", "webSessionSecurityHint": "கடவுச்சொல்லைப் போல் இதை நடத்தவும்: இது உங்கள் உள்நுழைந்த இணையக் கணக்கை அது காலாவதியாகும் வரை அல்லது திரும்பப்பெறும் வரை அணுகலாம்.", "webNoAuthGuideTitle": "நற்சான்றிதழ் தேவையில்லை", "webNoAuthGuideBody": "{provider}க்கு API விசை அல்லது குக்கீ தேவையில்லை. இலவச இணைய இறுதிப் புள்ளியைப் பயன்படுத்த இணைப்பைச் சேமிக்கவும்.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "கமாண்டு குறியீடு அங்கீகாரம் காலாவதியானது", "commandCodeConnected": "கமாண்டு குறியீடு இணைக்கப்பட்டது", "commandCodeConnectionAdded": "கமாண்டு கோட் இணைப்பு சேர்க்கப்பட்டது", + "clearConnectionCooldown": "Cooldown-ஐ நீக்கு", + "clearConnectionCooldownInProgress": "நீக்கப்படுகிறது…", + "clearConnectionCooldownTitle": "Cooldown-ஐ இப்போது நீக்கவும் — upstream-இல் quota ஏற்கனவே புதுப்பிக்கப்பட்டிருந்தால் இதைப் பயன்படுத்தவும்", "commandCodeLinkExpired": "கமாண்டு குறியீட்டு இணைப்பு காலாவதியாகியுள்ளது", "commandCodeOpeningStudio": "கமாண்டு கோட் ஸ்டூடியோவை திறக்கிறது…", "commandCodePopupBlocked": "பாப்-அப் தடிக்கப்பட்டது. தயவுசெய்து பாப்-அப்களை அனுமதிக்கவும் மற்றும் Command Code Connect ஐ மீண்டும் முயற்சிக்கவும்.", "commandCodeStartFailed": "Command Code auth ஐ துவங்குவதில் தோல்வி அடைந்தது", "connectionDeleted": "இணைப்பு நீக்கப்பட்டது", "connectionFallback": "இணைப்பு", + "connectionCooldownCleared": "Cooldown நீக்கப்பட்டது — connection மீண்டும் routing-இல் இணைந்தது", "coolingConnectionsDescription": "இந்த இணைப்புகள் கடைசி கோரிக்கைக்குப் பிறகு குளிர்கின்றன. நேரம் முடியும் வரை OmniRoute அவற்றைத் தவிர்க்கும் — கைமுறையாக முடக்க வேண்டியதில்லை.", "coolingConnectionsTitle": "தற்போது குளிர்ச்சி ({count})", + "failedClearConnectionCooldown": "Cooldown-ஐ நீக்க முடியவில்லை", "failedDeleteAlias": "அலியாஸ் நீக்குவதில் தோல்வி அடைந்தது", "failedDeleteConnection": "இணைப்பை நீக்க முடியவில்லை", "failedDistributeProxies": "பிராக்ஸிகளை பகிர்வதில் தோல்வி அடைந்தது.", @@ -6470,21 +6478,16 @@ "savedModelEndpointSettings": "சேமிக்கப்பட்ட மாதிரி முடிவுறுப்பு அமைப்புகள்", "searchByModelAria": "மாதிரியில் தேடு", "selectSupportedEndpoint": "குறைந்தது ஒரு ஆதரிக்கப்படும் முடிவுகளைத் தேர்ந்தெடுக்கவும்", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "ஹார்னஸ் / CLI" }, "settings": { - "title": "Settings", - "general": "General", - "security": "Security", - "appearance": "Appearance", - "routing": "Routing", - "cache": "Cache", - "resilience": "Resilience", + "title": "அமைப்புகள்", + "general": "பொது", + "security": "பாதுகாப்பு", + "appearance": "தோற்றம்", + "routing": "வழித்தடம்", + "cache": "தற்காலிகச் சேமிப்பு", + "resilience": "மீட்சித்திறன்", "description": "விளக்கம்", "enable": "இயக்கு", "disable": "முடக்கு", @@ -6551,25 +6554,25 @@ "routingOpStatusSeparator": " ·", "resilienceSettingsIntro": "வழங்குநர்கள் தோல்வியுற்றால் தானியங்கு மறுமுயற்சி, கூல்டவுன் மற்றும் ஃபால்பேக்.", "aiSettingsIntro": "பட்ஜெட் சிந்தனை, மாதிரி நடத்தை மற்றும் சுருக்கத்திற்கான AI- குறிப்பிட்ட அமைப்புகள்.", - "systemPrompt": "System Prompt", - "thinkingBudget": "Thinking Budget", + "systemPrompt": "கணினி அறிவுறுத்தல்", + "thinkingBudget": "சிந்தனை வரம்பு", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP ப்ராக்ஸி", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "ப்ராக்ஸி பிரிவுகள்", + "requestBodyLimitTitle": "கோரிக்கை உடல் வரம்பு", + "requestBodyLimitDescription": "கோரிக்கை உடல் பகுப்பாய்வு செய்யப்படுவதற்கு முன் ஏற்கப்படும் அதிகபட்ச API பேலோடு அளவு. பிரத்யேக பதிவேற்ற வழிகள் அவற்றின் உள்ளமைக்கப்பட்ட 100 MB வரம்பையாவது கொண்டிருக்கும்.", + "requestBodyLimitInputLabel": "MB-இல் கோரிக்கை உடல் வரம்பு", + "requestBodyLimitEmptyError": "MB-இல் ஒரு வரம்பை உள்ளிடவும்", + "requestBodyLimitWholeNumberError": "முழு எண்ணைப் பயன்படுத்தவும்", + "requestBodyLimitMinimumError": "குறைந்தபட்சம் {min} MB", + "requestBodyLimitMaximumError": "அதிகபட்சம் {max} MB", + "requestBodyLimitLoadFailed": "கோரிக்கை வரம்பு அமைப்புகளை ஏற்ற முடியவில்லை", + "requestBodyLimitSaveSuccess": "கோரிக்கை உடல் வரம்பு சேமிக்கப்பட்டது", + "requestBodyLimitSaveFailed": "கோரிக்கை உடல் வரம்பைச் சேமிக்க முடியவில்லை", + "requestBodyLimitSaving": "சேமிக்கப்படுகிறது...", + "requestBodyLimitSave": "சேமி", + "requestBodyLimitCurrent": "தற்போதையது: {value}", "cacheConfigLoadFailed": "கேஷ் அமைப்புகளை ஏற்றுவதில் தோல்வி அடைந்தது", "cacheConfigSaveSuccess": "கேஷ் அமைப்புகள் சேமிக்கப்பட்டன", "cacheConfigSaveFailed": "கேஷ் அமைப்புகளை சேமிக்க முடியவில்லை", @@ -6583,69 +6586,69 @@ "modelCatalogCacheTtlSave": "சேமிக்கவும்", "modelCatalogCacheTtlCurrent": "தற்போதைய: {value} ms", "mitmProxy": "MITM ப்ராக்ஸி", - "pricing": "Pricing", - "storage": "Storage", - "policies": "Policies", - "ipFilter": "IP Filter", - "comboDefaults": "Combo Defaults", - "fallbackChains": "Fallback Chains", - "changePassword": "Change Password", - "enablePassword": "Enable Password", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "pricing": "விலை நிர்ணயம்", + "storage": "சேமிப்பகம்", + "policies": "கொள்கைகள்", + "ipFilter": "IP வடிகட்டி", + "comboDefaults": "காம்போ இயல்புநிலைகள்", + "fallbackChains": "மாற்று சங்கிலிகள்", + "changePassword": "கடவுச்சொல்லை மாற்று", + "enablePassword": "கடவுச்சொல்லை இயக்கு", + "darkMode": "இருண்ட பயன்முறை", + "lightMode": "ஒளிர் பயன்முறை", + "memoryTitle": "நினைவகம்", + "memoryDesc": "அமர்வுகள் முழுவதும் நிலைத்திருக்கும் உரையாடல் நினைவகம்", + "memoryEnabled": "நினைவகத்தை இயக்கு", + "memoryEnabledDesc": "இயக்கப்பட்டிருக்கும்போது, OmniRoute தொடர்புடைய முந்தைய சூழலைச் சேர்க்கும்.", "memoryTokenCostWarning": "கவனத்திற்கு: நினைவகம் இயக்கப்பட்டிருக்கும் போது, OmniRoute ஒவ்வொரு அரட்டை கோரிக்கையிலும் மீட்டெடுக்கப்பட்ட சூழலின் {tokens} டோக்கன்கள் வரை சேர்க்கிறது — இது டோக்கன் பயன்பாட்டையும் செலவையும் அதிகரிக்கும். குறிப்பிட்ட கோரிக்கைக்கு இந்தச் சேர்க்கையைத் தவிர்க்க, \"x-omniroute-no-memory: true\" தலைப்பை அனுப்பவும்.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", - "justNow": "Just now", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", - "providers": "Providers", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", - "systemTheme": "System Theme", - "debugToggle": "Enable Debug Mode", + "maxTokens": "அதிகபட்ச டோக்கன்கள்", + "retentionDays": "தக்கவைப்புக் காலம்", + "recent": "சமீபத்தியவை", + "recentDesc": "காலவரிசைச் சாளரம்", + "semantic": "பொருள்சார்", + "semanticDesc": "வெக்டர் தேடல்", + "hybrid": "கலப்பு", + "hybridDesc": "சமீபத்தியவை + பொருள்சார்", + "skillsTitle": "திறன்கள்", + "skillsDesc": "மாடல்களுக்கான கருவிகள்", + "skillsEnabled": "திறன்களை இயக்கவும்", + "skillsEnabledDesc": "முகவர்கள் செயல்பாடுகளைத் தூண்ட அனுமதிக்கிறது.", + "skillsComingSoon": "திறன்களுக்கான சந்தை விரைவில் வருகிறது.", + "memorySkillsTitle": "நினைவகம் & திறன்கள்", + "memorySkillsDesc": "நிலையான சூழல் & திறன்கள்", + "modelsDevTitle": "மாடல் தரவுத்தளம்", + "modelsDevDesc": "models.dev இலிருந்து விலை, திறன்கள் & விவரக்குறிப்புகளைத் தானாக ஒத்திசைக்கவும்", + "modelsDevEnabled": "models.dev ஒத்திசைவை இயக்கவும்", + "modelsDevEnabledDesc": "திறந்த மூல models.dev தரவுத்தளத்திலிருந்து மாடல் விலை, திறன்கள் மற்றும் விவரக்குறிப்புகளைப் பெறவும்", + "modelsDevInterval": "ஒத்திசைவு இடைவெளி", + "syncNow": "இப்போது ஒத்திசைக்கவும்", + "syncing": "ஒத்திசைக்கிறது...", + "lastSync": "கடைசி ஒத்திசைவு", + "never": "ஒருபோதும் இல்லை", + "justNow": "சற்று முன்பு", + "modelsDevStats": "ஒத்திசைவு புள்ளிவிவரங்கள்", + "modelsDevStatsDesc": "தற்போதைய models.dev தரவுப் பரவல்", + "providers": "வழங்குநர்கள்", + "modelsWithPricing": "விலைத் தகவலுடன் கூடிய மாடல்கள்", + "capabilities": "திறன்கள்", + "lastSyncCount": "கடைசி ஒத்திசைவு எண்ணிக்கை", + "lastSyncFull": "கடைசி முழு ஒத்திசைவு", + "modelsDevInfo": "இது எவ்வாறு செயல்படுகிறது", + "modelsDevInfoDesc": "models.dev என்பது SST/OpenCode குழுவால் பராமரிக்கப்படும் AI மாடல் விவரக்குறிப்புகளின் திறந்த மூலத் தரவுத்தளமாகும். இது 100+ வழங்குநர்களின் 4,000+ மாடல்களுக்கான விலை, திறன்கள், சூழல் வரம்புகள் மற்றும் புலன்வகைகளை வழங்குகிறது.", + "modelsDevInfoResolution": "விலை நிர்ணயத் தீர்மான வரிசை (அதிக முன்னுரிமை முதலில்):", + "modelsDevInfoOrder": "பயனர் மேலெழுதல் → models.dev → LiteLLM → நிலையாகக் குறியிடப்பட்ட இயல்புநிலை", + "systemTheme": "கணினித் தோற்றத்தீம்", + "debugToggle": "பிழைத்திருத்தப் பயன்முறையை இயக்கவும்", "logToolSourcesToggle": "கருவி மூலங்களைப் பதிவுசெய்க", "logToolSourcesDescription": "ஒவ்வொரு கோரிக்கைக்கும் கருவிகளின் எண்ணிக்கை மற்றும் MCP/hosted/client மூலப் பிரிவைச் சுருக்கமாகக் கூறும் கண்டறிதல் பதிவு வரியை வெளியிடுங்கள்.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "முகப்புப் பக்கத்தில் தகவலைப் பின்செய்யவும்", "homePinnedSectionsDesc": "முகப்புப் பக்கத்தின் மேற்பகுதியில் எந்தப் பிரிவுகளைப் பின் செய்ய வேண்டும் என்பதைத் தேர்வுசெய்யவும்.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "வழங்குநர் ஒதுக்கீட்டு வரம்புகள்", + "homeProviderQuotaLimitsDesc": "வழங்குநர் ஒதுக்கீட்டு நிலைக் கொள்கலனை (அனைத்தையும் புதுப்பி பொத்தானுடன்) முகப்புப் பக்கத்தின் மேலே பின்செய்யவும்.", + "homeQuickStart": "விரைவுத் தொடக்கம்", + "homeQuickStartDesc": "முகப்புப் பக்கத்தில் விரைவுத் தொடக்கப் பலகத்தைக் காட்டவும்.", + "homeProviderTopology": "வழங்குநர் இடவியல்", + "homeProviderTopologyDesc": "முகப்புப் பக்கத்தில் வழங்குநர் இடவியலைக் காட்டவும்.", "accountEmailVisibility": "கணக்கு மின்னஞ்சல் தெரிவுநிலை", "accountEmailVisibilityDesc": "வழங்குநர்கள், காம்போக்கள், பதிவுகள், ஒதுக்கீடு மற்றும் பிளேகிரவுண்ட் திரைகளில் முழு கணக்கு மின்னஞ்சல்களையும் காட்டுங்கள். இயல்புநிலையாக அவற்றை மறைக்க இதை முடக்கவும்.", "comboConfigMode": "காம்போ உள்ளமைவு முறை", @@ -6661,89 +6664,89 @@ "providerQuotaAutoRefreshInterval": "புதுப்பிப்பு இடைவெளி", "providerQuotaAutoRefreshIntervalDesc": "ஒதுக்கீட்டுக் காட்சி எத்தனை வினாடிகளுக்கு ஒருமுறை புதுப்பிக்கப்பட வேண்டும்.", "seconds": "வினாடிகள்", - "sidebarVisibilityToggle": "Show Sidebar Items", - "enableCache": "Enable Cache", - "cacheTTL": "Cache TTL", - "maxCacheSize": "Max Cache Size", - "clearCache": "Clear Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", - "cacheHits": "Cache Hits", - "cacheMisses": "Cache Misses", - "hitRate": "Hit Rate", - "cacheEntries": "Cache Entries", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "sidebarVisibilityToggle": "பக்கப்பட்டி உருப்படிகளைக் காட்டவும்", + "enableCache": "தற்காலிகச் சேமிப்பை இயக்கவும்", + "cacheTTL": "தற்காலிகச் சேமிப்பு TTL", + "maxCacheSize": "அதிகபட்சத் தற்காலிகச் சேமிப்பு அளவு", + "clearCache": "தற்காலிகச் சேமிப்பை அழி", + "cacheCleared": "தற்காலிகச் சேமிப்பு வெற்றிகரமாக அழிக்கப்பட்டது", + "clearCacheFailed": "தற்காலிகச் சேமிப்பை அழிக்க முடியவில்லை", + "cacheHits": "தற்காலிகச் சேமிப்பு வெற்றிகள்", + "cacheMisses": "தற்காலிகச் சேமிப்பு தவறல்கள்", + "hitRate": "வெற்றி விகிதம்", + "cacheEntries": "தற்காலிகச் சேமிப்புப் பதிவுகள்", + "cacheSettings": "தற்காலிகச் சேமிப்பு அமைப்புகள்", + "semanticCache": "சொற்பொருள் தற்காலிகச் சேமிப்பு", + "maxEntries": "அதிகபட்சப் பதிவுகள்", + "ttlMinutes": "TTL (நிமிடங்கள்)", + "promptCache": "Prompt தற்காலிகச் சேமிப்பு", + "strategy": "உத்தி", + "preserveClientCache": "Client தற்காலிகச் சேமிப்பைப் பாதுகாத்தல்", + "enabled": "இயக்கப்பட்டது", "loading": "Loading...", - "saving": "Saving...", - "save": "Save", - "circuitBreaker": "Circuit Breaker", - "retryPolicy": "Retry Policy", - "maxRetries": "Max Retries", - "retryDelay": "Retry Delay", - "timeoutMs": "Timeout (ms)", - "enableSystemPrompt": "Enable System Prompt", - "systemPromptText": "System Prompt Text", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "saving": "சேமிக்கிறது...", + "save": "சேமி", + "circuitBreaker": "சுற்றுத் தடுப்பான்", + "retryPolicy": "மறுமுயற்சிக் கொள்கை", + "maxRetries": "அதிகபட்ச மறுமுயற்சிகள்", + "retryDelay": "மறுமுயற்சித் தாமதம்", + "timeoutMs": "காலக்கெடு (ms)", + "enableSystemPrompt": "System Prompt-ஐ இயக்கு", + "systemPromptText": "System Prompt உரை", + "autoDisableBannedAccounts": "தடைசெய்யப்பட்ட கணக்குகளைத் தானாக முடக்கு", + "autoDisableDescription": "குறிப்பிட்ட நிரந்தரத் தடைச் சைகைகளை (எ.கா. HTTP 403 'verify your account') வழங்கும் provider இணைப்புகளை நிரந்தரமாகச் செயலிழந்ததாகக் குறிக்கவும். இது அவற்றை combo சுழற்சியிலிருந்து அகற்றும்.", + "autoDisableThreshold": "தடை வரம்பு", + "autoDisableThresholdDesc": "நிரந்தரச் செயலிழப்புக்கு முன் தேவைப்படும் தொடர்ச்சியான தடைச் சைகைகள்.", + "autoDisableBannedScope": "தானியங்கு முடக்கத்தை இதற்குப் பயன்படுத்து", + "autoDisableBannedScopeDesc": "தடைக்குப் பிறகும் OmniRoute தொடர்ந்து மறுமுயற்சி செய்தால், உள்நுழைவு இடங்கள் (கட்டணச் சந்தாக்கள் மற்றும் இலவசக் கணக்குகள்) upstream-ஆல் பூட்டப்படலாம். கட்டணம் செலுத்தப்பட்ட prepaid API keys-க்கு அந்த ஆபத்து இல்லை — அடுத்த key-ஐ fill-first பயன்படுத்தும் வகையில் அவற்றை pool-இல் வைத்திருக்கவும்.", + "autoDisableBannedScopeAll": "அனைத்து இணைப்புகளும்", + "autoDisableBannedScopeAllDesc": "prepaid API keys உட்பட, நிரந்தரத் தடைச் சைகையை வழங்கும் ஒவ்வொரு இணைப்பையும் செயலிழக்கச் செய்.", + "autoDisableBannedScopeSubscription": "உள்நுழைவு / சந்தா கணக்குகள் மட்டும்", + "autoDisableBannedScopeSubscriptionDesc": "OAuth, cookie, session மற்றும் web-login இடங்களை (கட்டணமானவை அல்லது இலவசமானவை) செயலிழக்கச் செய். வழிமாற்றம் மாற்று இணைப்புக்கு மாறும் வகையில் prepaid API keys செயலில் இருக்கும்.", "customBannedSignals": "தடைசெய்யப்பட்ட முக்கிய வார்த்தைகள்", "customBannedSignalsDesc": "நிரந்தரக் கணக்குத் தடை கண்டறிதலைத் தூண்டும் கூடுதல் முக்கிய வார்த்தைகள். உள்ளமைக்கப்பட்ட முக்கிய வார்த்தைகள் எப்போதும் பொருந்தும்.", "customBannedSignalsPlaceholder": "எ.கா. api key revoked", "noCustomBannedSignals": "தனிப்பயன் முக்கிய வார்த்தைகள் இல்லை. உள்ளமைக்கப்பட்ட முக்கிய வார்த்தைகள் மட்டுமே செயலில் உள்ளன.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "மீள்திறன் கட்டமைப்பு", "resilienceStructureDesc": "இந்தப் பக்கம் நடத்தையை மட்டுமே கட்டமைக்கிறது. லைவ் பிரேக்கர் நிலை ஆரோக்கியம் பக்கத்தில் காட்டப்பட்டுள்ளது. காம்போ-குறிப்பிட்ட மறு முயற்சி மற்றும் ரவுண்ட்-ராபின் ஸ்லாட் கட்டுப்பாடு ஆகியவை காம்போ அமைப்புகளில் இருக்கும்.", - "enableThinking": "Enable Thinking", - "maxThinkingTokens": "Max Thinking Tokens", - "enableProxy": "Enable Proxy", + "enableThinking": "சிந்தனையை இயக்கு", + "maxThinkingTokens": "அதிகபட்ச சிந்தனை Tokens", + "enableProxy": "Proxy-ஐ இயக்கு", "perKeyProxyEnabled": "ஒவ்வொரு விசைக்குமான ப்ராக்ஸி ஒதுக்கீட்டை இயக்கு", "perKeyProxyEnabledDesc": "இயக்கப்பட்டால், ஒவ்வொரு வழங்குநர் இணைப்பும் அதன் சொந்த ப்ராக்ஸி ஒதுக்கீட்டைப் பயன்படுத்தலாம்", - "proxyUrl": "Proxy URL", - "pricingRates": "Pricing Rates Format", - "currentPricing": "Current Pricing Overview", - "loadingPricing": "Loading pricing data...", - "noPricing": "No pricing data available", - "input": "Input", - "output": "Output", - "cached": "Cached", + "proxyUrl": "பதிலி URL", + "pricingRates": "விலையிடல் விகிதங்களின் வடிவம்", + "currentPricing": "தற்போதைய விலை விவரக் கண்ணோட்டம்", + "loadingPricing": "விலைத் தரவு ஏற்றப்படுகிறது...", + "noPricing": "விலைத் தரவு எதுவும் இல்லை", + "input": "உள்ளீடு", + "output": "வெளியீடு", + "cached": "தற்காலிகச் சேமிப்பு", "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "customPricing": "Custom Pricing", - "databaseSize": "Database Size", - "backupDb": "Backup Database", - "restoreDb": "Restore Database", - "exportData": "Export Data", - "importData": "Import Data", - "clearData": "Clear All Data", - "clearDataConfirm": "This will permanently delete all data. Are you sure?", - "enableRequestLogs": "Enable Request Logs", - "logRetention": "Log Retention", - "ipWhitelist": "IP Whitelist", - "ipBlacklist": "IP Blacklist", - "addIP": "Add IP", - "savedSuccessfully": "Settings saved successfully", + "cacheCreation": "தற்காலிகச் சேமிப்பை உருவாக்குதல்", + "customPricing": "தனிப்பயன் விலை நிர்ணயம்", + "databaseSize": "தரவுத்தள அளவு", + "backupDb": "தரவுத்தளத்தைக் காப்புப் பிரதி எடுக்கவும்", + "restoreDb": "தரவுத்தளத்தை மீட்டமைக்கவும்", + "exportData": "தரவை ஏற்றுமதி செய்யவும்", + "importData": "தரவை இறக்குமதி செய்யவும்", + "clearData": "எல்லாத் தரவையும் அழிக்கவும்", + "clearDataConfirm": "இது எல்லாத் தரவையும் நிரந்தரமாக நீக்கும். உறுதியாகத் தொடர விரும்புகிறீர்களா?", + "enableRequestLogs": "கோரிக்கைப் பதிவுகளை இயக்கவும்", + "logRetention": "பதிவுத் தக்கவைப்புக் காலம்", + "ipWhitelist": "IP அனுமதிப்புப் பட்டியல்", + "ipBlacklist": "IP தடுப்புப் பட்டியல்", + "addIP": "IP-ஐச் சேர்க்கவும்", + "savedSuccessfully": "அமைப்புகள் வெற்றிகரமாகச் சேமிக்கப்பட்டன", "ai": "AI", - "advanced": "Advanced", - "localMode": "Local Mode — All data stored on your machine", - "settingsSectionsAria": "Settings sections", - "switchThemes": "Switch between light and dark themes", - "themeSelectionAria": "Theme selection", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", + "advanced": "மேம்பட்டவை", + "localMode": "உள்ளூர் பயன்முறை — எல்லாத் தரவும் உங்கள் கணினியில் சேமிக்கப்படும்", + "settingsSectionsAria": "அமைப்புப் பிரிவுகள்", + "switchThemes": "ஒளிர் மற்றும் இருள் தோற்றங்களுக்கு இடையே மாறவும்", + "themeSelectionAria": "தோற்றத் தேர்வு", + "themeLight": "ஒளிர்", + "themeDark": "இருள்", + "themeSystem": "கணினி", "endpointTunnelVisibility": "இறுதிப்புள்ளி சுரங்கப்பாதை தெரிவுநிலை", "endpointTunnelVisibilityDesc": "சுரங்கப்பாதை நிலையை மாற்றாமல் இறுதிப்புள்ளி பக்கத்திலிருந்து சுரங்கப்பாதை கட்டுப்பாடுகளை மறைக்கவும்.", "showCloudflareTunnel": "கிளவுட்ஃப்ளேர் விரைவு சுரங்கப்பாதை", @@ -6752,47 +6755,47 @@ "showTailscaleFunnelDesc": "இறுதிப்புள்ளி பக்கத்தில் டெயில்ஸ்கேல் ஃபனல் கட்டுப்பாடுகளைக் காட்டு.", "showNgrokTunnel": "ngrok சுரங்கப்பாதை", "showNgrokTunnelDesc": "எண்ட்பாயிண்ட் பக்கத்தில் ngrok டன்னல் கட்டுப்பாடுகளைக் காட்டு.", - "sidebarVisibility": "Hide sidebar items", - "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter without disabling any features", - "sidebarVisibilityHint": "Any sidebar section is hidden automatically when all of its entries are hidden", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", - "hideHealthLogs": "Hide Health Check Logs", - "hideHealthLogsDesc": "When ON, suppress [HealthCheck] messages in server console", - "themeAccent": "Theme color", - "themeAccentDesc": "Choose a preset color or create your own theme with one color", - "themeCreate": "Create theme", - "themeCustom": "Custom theme", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "sidebarVisibility": "பக்கப்பட்டி உருப்படிகளை மறைக்கவும்", + "sidebarVisibilityDesc": "எந்த அம்சத்தையும் முடக்காமல் காட்சிக் குழப்பத்தைக் குறைக்க, பக்கப்பட்டியின் எந்த வழிசெலுத்தல் உள்ளீட்டையும் மறைக்கவும்", + "sidebarVisibilityHint": "ஒரு பக்கப்பட்டிப் பிரிவின் அனைத்து உள்ளீடுகளும் மறைக்கப்பட்டால், அந்தப் பிரிவு தானாகவே மறைக்கப்படும்", + "presetAll": "அனைத்தும்", + "presetAllDesc": "அனைத்தையும் காண்பி", + "presetEssentials": "அத்தியாவசியமானவை", + "presetEssentialsDesc": "தொடக்கநிலையினருக்கான பாதை - மேம்பட்ட கருவிகளைத் தேட முடியும்", + "presetMinimal": "குறைந்தபட்சம்", + "presetMinimalDesc": "முக்கியப் பக்கங்கள் மட்டும்", + "presetDeveloper": "உருவாக்குநர்", + "presetDeveloperDesc": "உருவாக்குநர் மற்றும் ப்ராக்ஸி கருவிகள்", + "presetAdmin": "நிர்வாகம்", + "presetAdminDesc": "கண்காணிப்பு மற்றும் தணிக்கை", + "settingsSidebarTitle": "பக்கப்பட்டைத் தனிப்பயனாக்கம்", + "settingsSidebarDesc": "எந்தப் பக்கப்பட்டை உருப்படிகளைக் காட்ட வேண்டும் என்பதைத் தேர்வுசெய்யவும். அத்தியாவசியங்கள் மேம்பட்ட கருவிகளைத் தேடக்கூடியவையாக வைத்திருக்கும்.", + "hideHealthLogs": "நிலைச் சரிபார்ப்புப் பதிவுகளை மறை", + "hideHealthLogsDesc": "இயக்கப்பட்டிருக்கும்போது, சேவையக முனையத்தில் [HealthCheck] செய்திகளைக் காட்டாமல் தடுக்கும்", + "themeAccent": "தீம் நிறம்", + "themeAccentDesc": "முன்னமைக்கப்பட்ட நிறத்தைத் தேர்வுசெய்யவும் அல்லது ஒரே நிறத்தைக் கொண்டு உங்கள் சொந்த தீமை உருவாக்கவும்", + "themeCreate": "தீமை உருவாக்கு", + "themeCustom": "தனிப்பயன் தீம்", + "themeBlue": "நீலம்", + "themeRed": "சிவப்பு", + "themeGreen": "பச்சை", + "themeViolet": "ஊதா", + "themeOrange": "ஆரஞ்சு", + "themeCyan": "சியான்", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "பயன்பாட்டின் பெயரையும் இலச்சினையையும் தனிப்பயனாக்கவும்", + "appName": "பயன்பாட்டின் பெயர்", + "appNameDesc": "பக்கப்பட்டையிலும் உலாவி தாவலிலும் காட்டப்படும் பெயர்", + "customLogo": "தனிப்பயன் இலச்சினை URL", + "customLogoDesc": "உங்கள் தனிப்பயன் இலச்சினைப் படத்திற்கான URL", + "uploadLogo": "இலச்சினையைப் பதிவேற்று", + "resetLogo": "இயல்புநிலைக்கு மீட்டமை", + "logoPreview": "முன்னோட்டம்", + "customFavicon": "உலாவி Favicon", + "customFaviconDesc": "உங்கள் தனிப்பயன் favicon-க்கான URL (உலாவி தாவலில் காட்டப்படும்)", + "uploadFavicon": "Favicon-ஐப் பதிவேற்று", + "resetFavicon": "Favicon-ஐ மீட்டமை", + "faviconPreview": "Favicon முன்னோட்டம்", "logoFileTooLarge": "லோகோ கோப்பு 500KB-க்கு குறைவாக இருக்க வேண்டும்", "faviconFileTooLarge": "Favicon கோப்பு 50KB-க்கு குறைவாக இருக்க வேண்டும்", "invalidLogoFileType": "தவறான கோப்பு வகை. PNG, JPG, SVG, GIF அல்லது WebP-ஐப் பதிவேற்றவும்.", @@ -6800,15 +6803,15 @@ "failedToReadFile": "கோப்பைப் படிக்க முடியவில்லை", "startOnLogin": "உள்நுழையும்போது தொடங்கவும்", "startOnLoginDesc": "கணினி தொடங்கும் போது OmniRoute-ஐத் தானாகவே துவக்கி, பின்னணி ட்ரேயில் அமைதியாக இயக்கவும்.", - "flushCache": "Flush Cache", - "flushing": "Flushing…", - "size": "Size", - "hits": "Hits", - "evictions": "Evictions", - "loadingCacheStats": "Loading cache stats…", - "globalProxy": "Global Proxy", - "globalProxyDesc": "Configure a global outbound proxy for all API calls. Individual providers, combos, and keys can override this.", - "noGlobalProxy": "No global proxy configured", + "flushCache": "தற்காலிகச் சேமிப்பை அழி", + "flushing": "அழிக்கப்படுகிறது…", + "size": "அளவு", + "hits": "அணுகல்கள்", + "evictions": "வெளியேற்றங்கள்", + "loadingCacheStats": "தற்காலிகச் சேமிப்புப் புள்ளிவிவரங்கள் ஏற்றப்படுகின்றன…", + "globalProxy": "உலகளாவிய பதிலாள்", + "globalProxyDesc": "அனைத்து API அழைப்புகளுக்கும் உலகளாவிய வெளிச்செல்லும் பதிலாளை உள்ளமைக்கவும். தனிப்பட்ட வழங்குநர்கள், சேர்க்கைகள் மற்றும் விசைகள் இதை மேலெழுதலாம்.", + "noGlobalProxy": "உலகளாவிய பதிலாள் எதுவும் உள்ளமைக்கப்படவில்லை", "proxyPool": "ப்ராக்ஸி பூல்", "freePool": "இலவச பூல்", "proxyDocumentation": "ப்ராக்ஸி ஆவணங்கள்", @@ -6896,21 +6899,21 @@ "refreshInterval": "புதுப்பிப்பு இடைவெளி", "ruleModeDescription": "வழிமுறை முறை விளக்கம்" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "மொத்த நிலைச் சரிபார்ப்பு", + "bulkHealthcheckDesc": "இலக்கு URL-க்கு எதிராக உள்ளமைக்கப்பட்ட அனைத்து ப்ராக்ஸிகளையும் சோதித்து, செயல்படுபவற்றைக் கண்டறியவும்.", + "healthcheckTesting": "சோதிக்கிறது...", + "healthcheckAll": "அனைத்திற்கும் செயல்நிலைச் சோதனை", + "healthcheckFailed": "செயல்நிலைச் சோதனையை இயக்க முடியவில்லை", + "healthcheckTestingAll": "அனைத்து ப்ராக்ஸிகளையும் இணையாகச் சோதிக்கிறது...", + "healthcheckTotal": "மொத்தம்", + "healthcheckWorking": "செயல்படுபவை", + "healthcheckFailedLabel": "தோல்வியடைந்தவை", + "healthcheckStatus": "நிலை", + "healthcheckProxyUrl": "ப்ராக்ஸி URL", + "healthcheckLatency": "தாமதம்", "proxyDocumentationScopeTitle": "ப்ராக்ஸி ஸ்கோப் தீர்மானம்", "proxyDocumentationScopeDescBefore": "OmniRoute வெளிச்செல்லும் ப்ராக்ஸியை முன்னுரிமை வரிசையில் தீர்மானிக்கிறது:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "சேர்க்கை → கணக்கு → வழங்குநர் → உலகளாவிய", "proxyDocumentationScopeDescAfter": ". மிகவும் குறிப்பிட்ட ஸ்கோப் முன்னுரிமை பெறும்.", "proxyDocumentationAddTitle": "தனிப்பயன் ப்ராக்ஸியைச் சேர்த்தல்", "proxyDocumentationAddDescBefore": "இதற்குச் செல்லவும் ", @@ -6945,7 +6948,7 @@ "proxyFreePoolAddSelected": "தேர்ந்தெடுக்கப்பட்டவற்றை பூலில் சேர்க்கவும்", "proxyFreePoolAddVisible": "காணக்கூடிய அனைத்தையும் பூலில் சேர்க்கவும்", "proxyFreePoolSource": "மூலம்", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "ஹோஸ்ட்:போர்ட்", "proxyFreePoolType": "வகை", "proxyFreePoolCountry": "நாடு", "proxyFreePoolQuality": "தரம்", @@ -6966,22 +6969,22 @@ "proxyFreePoolLoadMore": "மேலும் ஏற்றவும்", "close": "மூடு", "cancel": "ரத்துசெய்", - "globalLabel": "Global", - "configure": "Configure", - "globalSystemPrompt": "Global System Prompt", - "saved": "Saved", + "globalLabel": "உலகளாவிய", + "configure": "உள்ளமைக்கவும்", + "globalSystemPrompt": "உலகளாவிய கணினி அறிவுறுத்தல்", + "saved": "சேமிக்கப்பட்டது", "beforePromptLabel": "ப்ராம்ப்ட்டிற்கு முன்", "beforePromptDesc": "ஏஜென்ட்/வழங்குநரின் சிஸ்டம் வழிமுறைகளுக்கு முன் உட்செலுத்தப்பட்டது", "beforePromptPlaceholder": "ஏஜென்ட்/வழங்குநர் ப்ராம்ப்ட்டிற்கு முன் செருகப்பட்ட வழிமுறைகள்...", "afterPromptLabel": "ப்ராம்ப்ட்டிற்குப் பின்", "afterPromptDesc": "ஏஜென்ட்/வழங்குநரின் சிஸ்டம் வழிமுறைகளுக்குப் பின் உட்செலுத்தப்பட்டது", "afterPromptPlaceholder": "ஏஜென்ட்/வழங்குநர் ப்ராம்ப்ட்டிற்குப் பின் செருகப்பட்ட வழிமுறைகள்...", - "chars": "{count} chars", - "thinkingBudgetTitle": "Thinking Budget", + "chars": "{count} எழுத்துகள்", + "thinkingBudgetTitle": "சிந்தனை வரம்பு", "thinkingBudgetDesc": "Control AI reasoning token usage across all requests", "thinkingBudgetIndependenceHint": "சுருக்கம், வழிமுறை, மற்றும் டோக்கன்-வரம்பு அம்சங்கள் ஒவ்வொரு முறையிலும் செயல்படுகின்றன. ஆட்டோ என்பது \"ஆட்டோ-காணும் சிந்தனை\" என்பதைக் குறிக்கவில்லை - இது கிளையண்ட் காரணம் துறைகளை நீக்குகிறது.", - "passthrough": "Passthrough", - "passthroughDesc": "No changes — client controls thinking budget", + "passthrough": "மாற்றமின்றி அனுப்புதல்", + "passthroughDesc": "மாற்றங்கள் இல்லை — கிளையன்ட் சிந்தனை வரம்பைக் கட்டுப்படுத்துகிறது", "thinkingModePassthrough": "பாஸ்த்ரூவ்", "thinkingModePassthroughDesc": "கிளையனின் காரணங்களை மாற்றாமல் வைக்கவும் (முயற்சி, சுருக்கம், சிந்தனை தடங்கள்). Codex/Desktop காட்சி சிந்தனைக்கு தேவையானது. இயல்பானது.", "thinkingModeAuto": "ஆட்டோ (ஸ்டிரிப்)", @@ -6991,36 +6994,36 @@ "thinkingModeAdaptive": "அனுகூலமான", "thinkingModeAdaptiveDesc": "செய்தி எண்ணிக்கை, கருவிகள் மற்றும் உந்துதல் நீளம் பயன்படுத்தி அடிப்படை முயற்சியிலிருந்து எண்ணக்கூடிய பட்ஜெட்டை அளவிடுங்கள்.", "auto": "Auto Combo", - "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "custom": "Custom", - "customDesc": "Set a fixed token budget for all requests", - "adaptive": "Adaptive", - "adaptiveDesc": "Scale budget based on request complexity", - "effortNone": "None (0 tokens)", - "effortLow": "Low (1K tokens)", - "effortMedium": "Medium (10K tokens)", - "effortHigh": "High (128K tokens)", - "tokenBudget": "Token Budget", - "tokens": "tokens", - "baseEffortLevel": "Base Effort Level", + "autoDesc": "தானாகச் சீரமைந்துகொள்ளும் நுண்ணறிவு வழித்தடக் குழு (செயல்திறனுக்காக மேம்படுத்தப்பட்டது)", + "custom": "தனிப்பயன்", + "customDesc": "அனைத்து கோரிக்கைகளுக்கும் நிலையான டோக்கன் வரம்பை அமைக்கவும்", + "adaptive": "தகவமைப்பு", + "adaptiveDesc": "கோரிக்கையின் சிக்கல்தன்மையின் அடிப்படையில் வரம்பை அளவிடவும்", + "effortNone": "எதுவுமில்லை (0 டோக்கன்கள்)", + "effortLow": "குறைவு (1K டோக்கன்கள்)", + "effortMedium": "நடுத்தரம் (10K டோக்கன்கள்)", + "effortHigh": "அதிகம் (128K டோக்கன்கள்)", + "tokenBudget": "டோக்கன் வரம்பு", + "tokens": "டோக்கன்கள்", + "baseEffortLevel": "அடிப்படை முயற்சி நிலை", "adaptiveHint": "Adaptive mode scales from this base level based on message count, tool usage, and prompt length.", - "requireLogin": "Require login", - "requireLoginDesc": "When ON, dashboard requires password. When OFF, access without login.", - "currentPassword": "Current Password", - "enterCurrentPassword": "Enter current password", - "newPassword": "New Password", - "enterNewPassword": "Enter new password", - "confirmPassword": "Confirm New Password", - "confirmPasswordPlaceholder": "Confirm new password", - "passwordsNoMatch": "Passwords do not match", - "passwordUpdated": "Password updated successfully", - "failedUpdatePassword": "Failed to update password", - "errorOccurred": "An error occurred", - "updatePassword": "Update Password", - "setPassword": "Set Password", - "apiEndpointProtection": "API Endpoint Protection", - "requireAuthModels": "Require API key for /models", - "requireAuthModelsDesc": "When ON, the /v1/models endpoint returns 404 for unauthenticated requests. Prevents model discovery by unauthorized users.", + "requireLogin": "உள்நுழைவு தேவை", + "requireLoginDesc": "இயக்கப்பட்டிருக்கும்போது, டாஷ்போர்டுக்கு கடவுச்சொல் தேவை. முடக்கப்பட்டிருக்கும்போது, உள்நுழையாமல் அணுகலாம்.", + "currentPassword": "தற்போதைய கடவுச்சொல்", + "enterCurrentPassword": "தற்போதைய கடவுச்சொல்லை உள்ளிடவும்", + "newPassword": "புதிய கடவுச்சொல்", + "enterNewPassword": "புதிய கடவுச்சொல்லை உள்ளிடவும்", + "confirmPassword": "புதிய கடவுச்சொல்லை உறுதிப்படுத்தவும்", + "confirmPasswordPlaceholder": "புதிய கடவுச்சொல்லை உறுதிப்படுத்தவும்", + "passwordsNoMatch": "கடவுச்சொற்கள் பொருந்தவில்லை", + "passwordUpdated": "கடவுச்சொல் வெற்றிகரமாகப் புதுப்பிக்கப்பட்டது", + "failedUpdatePassword": "கடவுச்சொல்லைப் புதுப்பிக்க முடியவில்லை", + "errorOccurred": "ஒரு பிழை ஏற்பட்டது", + "updatePassword": "கடவுச்சொல்லைப் புதுப்பிக்கவும்", + "setPassword": "கடவுச்சொல்லை அமைக்கவும்", + "apiEndpointProtection": "API இறுதிப்புள்ளிப் பாதுகாப்பு", + "requireAuthModels": "/models-க்கு API விசை தேவை", + "requireAuthModelsDesc": "இதை இயக்கும்போது, அங்கீகரிக்கப்படாத கோரிக்கைகளுக்கு /v1/models இறுதிப்புள்ளி 404-ஐ வழங்கும். அங்கீகரிக்கப்படாத பயனர்கள் மாடல்களைக் கண்டறிவதைத் தடுக்கிறது.", "authModelHeading": "செயலில் உள்ள அங்கீகார மாதிரி", "authModelClient": "கிளையண்ட் ஏபிஐ இறுதிப்புள்ளிகளுக்கு (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) ஒரு Bearer API விசை தேவை.", "authModelManagement": "மேலாண்மை முடிவுப்புள்ளிகளுக்கு (/டாஷ்போர்டு, /api/*) டாஷ்போர்டு அமர்வு அல்லது மேலாண்மை சான்று தேவை.", @@ -7029,16 +7032,16 @@ "bruteForceProtectionDesc": "ஒரே ஐபியிலிருந்து மீண்டும் மீண்டும் தோல்விகளுக்குப் பிறகு /api/auth/login ஐ த்ரோட்டில் செய்து பூட்டவும்.", "corsAllowedOrigins": "CORS அனுமதிக்கப்பட்ட தோற்றம்", "corsAllowedOriginsDesc": "இந்தச் சேவையகத்தை அழைக்க அனுமதிக்கப்பட்ட உலாவி தோற்றங்களின் கமாவால் பிரிக்கப்பட்ட பட்டியல். வெற்று பட்டியல் = உலாவி CORS அணுகல் இல்லை (சர்வர்-டு-சர்வர் இன்னும் வேலை செய்கிறது). வளர்ச்சிக்கு மட்டும் CORS_ALLOW_ALL=true env var ஐப் பயன்படுத்தவும்.", - "blockedProviders": "Blocked Providers", - "blockedProvidersDesc": "Hide specific providers from the /v1/models response. Blocked providers will not appear in model listings.", - "providersBlocked": "{count} provider(s) blocked from /models", - "blockProviderTitle": "Block {provider}", - "unblockProviderTitle": "Unblock {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "blockedProviders": "தடுக்கப்பட்ட வழங்குநர்கள்", + "blockedProvidersDesc": "/v1/models பதிலிலிருந்து குறிப்பிட்ட வழங்குநர்களை மறைக்கவும். தடுக்கப்பட்ட வழங்குநர்கள் மாடல் பட்டியல்களில் தோன்ற மாட்டார்கள்.", + "providersBlocked": "/models-இல் {count} வழங்குநர்(கள்) தடுக்கப்பட்டுள்ளனர்", + "blockProviderTitle": "{provider}-ஐத் தடுக்கவும்", + "unblockProviderTitle": "{provider}-இன் தடையை நீக்கவும்", + "cliFingerprint": "CLI கைரேகைப் பொருத்தம்", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "CLI கைரேகை செயலில் உள்ள {count} வழங்குநர்(கள்)", + "enableFingerprintTitle": "{provider}-க்கு கைரேகையை இயக்கவும்", + "disableFingerprintTitle": "{provider}-க்கான கைரேகையை முடக்கவும்", "systemTransforms": "சிஸ்டம்-பிளாக் டிரான்ஸ்ஃபார்ம் பைப்லைன்", "systemTransformsDesc": "ஒவ்வொரு வழங்குநரும் ஆர்டர் செய்யப்பட்ட உருமாற்றங்களின் பைப்லைனை அனுப்புவதற்கு முன் கோரிக்கை அமைப்புக்கு பயன்படுத்தப்பட்டது. எந்தவொரு வழங்குநர் ஐடியையும் ஆதரிக்கிறது.", "systemTransformsAddProvider": "வழங்குநரைச் சேர்க்கவும்", @@ -7049,29 +7052,29 @@ "systemTransformsOpMoveUp": "மேலே செல்லவும்", "systemTransformsOpMoveDown": "கீழே நகர்த்தவும்", "systemTransformsOpDelete": "op ஐ நீக்கு", - "routingStrategy": "Routing Strategy", - "routingAdvancedGuideTitle": "Advanced routing guidance", + "routingStrategy": "வழிப்படுத்தல் உத்தி", + "routingAdvancedGuideTitle": "மேம்பட்ட வழிப்படுத்தல் வழிகாட்டுதல்", "routingAdvancedGuideHint1": "Use Fill First for predictable priority, Round Robin for fairness, and P2C for latency resilience.", "routingAdvancedGuideHint2": "If providers vary in quality/cost, start with Cost Opt for background work and Least Used for balanced wear.", - "fillFirst": "Fill First", - "fillFirstDesc": "Use accounts in priority order", + "fillFirst": "முதலில் நிரப்பவும்", + "fillFirstDesc": "முன்னுரிமை வரிசையில் கணக்குகளைப் பயன்படுத்தவும்", "roundRobin": "Round Robin", - "roundRobinDesc": "Cycle through all accounts", + "roundRobinDesc": "அனைத்துக் கணக்குகளையும் சுழற்சி முறையில் பயன்படுத்தவும்", "p2c": "P2C", - "p2cDesc": "Pick 2 random, use the healthier one", - "random": "Random", - "randomDesc": "Random account each request", - "leastUsed": "Least Used", - "leastUsedDesc": "Pick least recently used account", - "costOpt": "Cost Opt", - "costOptDesc": "Prefer cheapest available account", + "p2cDesc": "சீரற்ற முறையில் 2 கணக்குகளைத் தேர்ந்தெடுத்து, ஆரோக்கியமானதைப் பயன்படுத்தவும்", + "random": "சீரற்றது", + "randomDesc": "ஒவ்வொரு கோரிக்கைக்கும் ஒரு சீரற்ற கணக்கு", + "leastUsed": "குறைவாகப் பயன்படுத்தப்பட்டது", + "leastUsedDesc": "மிக நீண்ட காலமாகப் பயன்படுத்தப்படாத கணக்கைத் தேர்ந்தெடுக்கவும்", + "costOpt": "செலவு உகப்பாக்கம்", + "costOptDesc": "கிடைக்கக்கூடிய மலிவான கணக்கிற்கு முன்னுரிமை அளிக்கவும்", "resetAware": "ரீசெட்-அவேர் ஆர்ஆர்", "resetAwareDesc": "ஆரோக்கியமான மீதமுள்ள ஒதுக்கீடு மற்றும் அருகிலுள்ள மீட்டமைப்புகளுடன் கணக்குகளை விரும்பவும்", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "ஒதுக்கீட்டு எடையிடப்பட்டது", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "கண்டிப்பான சீரற்ற முறை", + "strictRandomDesc": "அட்டைகளைக் கலைத்தல் — மீண்டும் கலைப்பதற்கு முன் ஒவ்வொரு கணக்கையும் ஒருமுறை பயன்படுத்தும்", + "stickyLimit": "நிலையான வரம்பு", "stickyLimitDesc": "Calls per account before switching", "routingStrategyTitle": "ரூட்டிங் உத்தி", "routingStrategySubtitle": "9router-ஐப் பொருத்து: கணக்கு ரவுண்ட்-ராபின், ஸ்டிக்கி வரம்புகள் மற்றும் காம்போ சுழற்சி", @@ -7089,225 +7092,225 @@ "providerAccountRoutingDesc": "இந்த வழங்குநருக்கான உலகளாவிய கணக்கு உத்தியை மேலெழுது (9router சமநிலை).", "providerRoutingStrategy": "கணக்கு உத்தி", "providerRoutingInheritGlobal": "பொதுவான இயல்புநிலையைப் பெறுக", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", - "modelAliases": "Model Aliases", - "modelAliasesTitle": "Model Aliases", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", - "addCustomAlias": "Add Custom Alias", - "deprecatedModelId": "Deprecated model ID", - "newModelId": "New model ID", - "customAliases": "Custom Aliases", - "builtInAliases": "Built-in Aliases", - "backgroundDegradationTitle": "Background Task Degradation", - "backgroundDegradationDesc": "Auto-detect background tasks (titles, summaries) and route to cheaper models", - "enableDegradation": "Enable Background Degradation", - "enableDegradationHint": "When enabled, background tasks like title generation and summarization are routed to cheaper models automatically", - "tasksDetected": "Tasks detected", - "degradationMap": "Model Degradation Map", - "premiumModel": "Premium model", - "cheapModel": "Cheap model", - "detectionPatterns": "Detection Patterns", - "newPattern": "e.g. \"generate a title\"", + "quotaPreflightTitle": "ஒதுக்கீட்டு முன்சோதனை வரம்பு", + "quotaPreflightSubtitle": "கோரிக்கையை மேல்நிலைக்கு அனுப்புவதற்கு முன், ஒதுக்கீடு தீர்ந்த கணக்குகளைத் தவிர்க்கவும்", + "quotaPreflightEnable": "ஒதுக்கீட்டு முன்சோதனையை இயக்கவும்", + "quotaPreflightEnableDesc": "ஒவ்வொரு கோரிக்கைக்கும் முன், கணக்கின் மீதமுள்ள ஒதுக்கீட்டைச் சரிபார்க்கவும் (5 மணிநேர / வாராந்திர / மாதாந்திர காலச்சாளரங்கள்). வரம்பிற்கு இணையாகவோ அதற்குக் கீழாகவோ உள்ள கணக்குகள் மேல்நிலை அழைப்பின்றித் தவிர்க்கப்படும். வழங்குநர் ஒதுக்கீட்டுப் பக்கத்தில் ஒவ்வொரு காலச்சாளரத்திற்கும் அமைக்கப்பட்ட வரம்புகளே இங்குள்ள இயல்புநிலையைவிட எப்போதும் முன்னுரிமை பெறும்.", + "quotaPreflightCutoff": "உலகளாவிய வரம்பு (மீதமுள்ள குறைந்தபட்ச %)", + "quotaPreflightCutoffDesc": "தனிப்பட்ட வரம்பு இல்லாத ஒவ்வொரு விண்டோவிலும், கணக்கின் மீதமுள்ள ஒதுக்கீடு இந்தச் சதவீதத்திற்கோ அதற்குக் கீழோ குறையும்போது அதைப் பயன்படுத்துவதை நிறுத்தவும். இது Provider Quota பக்கத்திலுள்ள மீதமுள்ள-% பட்டைகளுடன் பொருந்தும்.", + "quotaPreflightWindowsHint": "Provider Quota பக்கத்திலுள்ள Cutoff உரையாடலில் அமைக்கப்பட்ட, தனிப்பட்ட விண்டோ அல்லது வழங்குநர் வாரியான வரம்பைக் கொண்ட விண்டோக்கள் இந்த இயல்புநிலை அமைப்பால் பாதிக்கப்படாது.", + "quotaPreflightLoadFailed": "ஒதுக்கீட்டின் முன்சரிபார்ப்பு அமைப்புகளை ஏற்ற முடியவில்லை.", + "modelAliases": "மாதிரி மாற்றுப்பெயர்கள்", + "modelAliasesTitle": "மாதிரி மாற்றுப்பெயர்கள்", + "modelAliasesDesc": "சரியான பொருத்தங்கள் அல்லது வைல்ட்கார்டு வடிவங்களைப் பயன்படுத்தி மாதிரிப் பெயர்களை மறுவரைபடம் செய்யவும்.", + "addCustomAlias": "தனிப்பயன் மாற்றுப்பெயரைச் சேர்", + "deprecatedModelId": "நீக்கப்படவுள்ள மாதிரி ID", + "newModelId": "புதிய மாதிரி ID", + "customAliases": "தனிப்பயன் மாற்றுப்பெயர்கள்", + "builtInAliases": "உள்ளமைந்த மாற்றுப்பெயர்கள்", + "backgroundDegradationTitle": "பின்னணிப் பணிகளுக்கான தரக் குறைப்பு", + "backgroundDegradationDesc": "பின்னணிப் பணிகளை (தலைப்புகள், சுருக்கங்கள்) தானாகக் கண்டறிந்து, குறைந்த செலவுள்ள மாதிரிகளுக்கு வழிமாற்றவும்", + "enableDegradation": "பின்னணித் தரக் குறைப்பை இயக்கு", + "enableDegradationHint": "இயக்கப்பட்டிருக்கும்போது, தலைப்பு உருவாக்கம் மற்றும் சுருக்கம் போன்ற பின்னணிப் பணிகள் தானாகவே குறைந்த செலவுள்ள மாதிரிகளுக்கு வழிமாற்றப்படும்", + "tasksDetected": "கண்டறியப்பட்ட பணிகள்", + "degradationMap": "மாதிரித் தரக் குறைப்பு வரைபடம்", + "premiumModel": "பிரீமியம் மாதிரி", + "cheapModel": "குறைந்த செலவுள்ள மாதிரி", + "detectionPatterns": "கண்டறிதல் வடிவங்கள்", + "newPattern": "எ.கா. \"ஒரு தலைப்பை உருவாக்கு\"", "aliasPatternPlaceholder": "claude-sonnet-*", "aliasTargetPlaceholder": "claude-sonnet-4-20250514", - "pattern": "Pattern", - "targetModel": "Target Model", - "add": "+ Add", - "session": "Session", - "sessionDetailsAria": "Session details", + "pattern": "வடிவம்", + "targetModel": "இலக்கு மாதிரி", + "add": "+ சேர்", + "session": "அமர்வு", + "sessionDetailsAria": "அமர்வு விவரங்கள்", "status": "Status", - "authenticated": "Authenticated", - "guest": "Guest", - "loginTime": "Login Time", - "sessionAge": "Session Age", - "browser": "Browser", - "clearLocalData": "Clear Local Data", - "logout": "Logout", - "clearLocalDataConfirm": "Clear all local data? This will reset your preferences.", - "unknown": "Unknown", - "systemActor": "system", - "ipAccessControl": "IP Access Control", - "ipAccessControlDesc": "Block or allow specific IP addresses", - "ipModeDisabled": "Disabled", - "ipModeBlacklist": "Blacklist", - "ipModeWhitelist": "Whitelist", - "ipModeWhitelistPriority": "WL Priority", - "addIpAddress": "Add IP Address", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", - "block": "+ Block", - "allow": "+ Allow", - "blocked": "Blocked ({count})", - "allowed": "Allowed ({count})", - "temporaryBans": "Temporary Bans ({count})", - "minLeft": "{min}m left", - "auditLog": "Audit Log", - "searchAuditLogs": "Search audit logs...", - "failedLoadAuditLog": "Failed to load audit log", - "noAuditEvents": "No audit events found", - "action": "Action", - "actor": "Actor", - "details": "Details", - "time": "Time", - "fallbackChainsTitle": "Fallback Chains", - "fallbackChainsDesc": "Define provider fallback order per model", - "addChain": "+ Add Chain", - "modelName": "Model Name", + "authenticated": "அங்கீகரிக்கப்பட்டது", + "guest": "விருந்தினர்", + "loginTime": "உள்நுழைவு நேரம்", + "sessionAge": "அமர்வின் காலம்", + "browser": "உலாவி", + "clearLocalData": "உள்ளூர் தரவை அழி", + "logout": "வெளியேறு", + "clearLocalDataConfirm": "அனைத்து உள்ளூர் தரவையும் அழிக்கவா? இது உங்கள் விருப்பத்தேர்வுகளை மீட்டமைக்கும்.", + "unknown": "தெரியாதது", + "systemActor": "அமைப்பு", + "ipAccessControl": "IP அணுகல் கட்டுப்பாடு", + "ipAccessControlDesc": "குறிப்பிட்ட IP முகவரிகளைத் தடுக்கவும் அல்லது அனுமதிக்கவும்", + "ipModeDisabled": "முடக்கப்பட்டது", + "ipModeBlacklist": "தடுப்புப் பட்டியல்", + "ipModeWhitelist": "அனுமதிப்பட்டியல்", + "ipModeWhitelistPriority": "அனுமதிப்பட்டியல் முன்னுரிமை", + "addIpAddress": "IP முகவரியைச் சேர்", + "ipAddressPlaceholder": "192.168.1.0/24 அல்லது 10.0.*.*", + "block": "+ தடு", + "allow": "+ அனுமதி", + "blocked": "தடுக்கப்பட்டவை ({count})", + "allowed": "அனுமதிக்கப்பட்டவை ({count})", + "temporaryBans": "தற்காலிகத் தடைகள் ({count})", + "minLeft": "{min} நிமிடம் மீதமுள்ளது", + "auditLog": "தணிக்கைப் பதிவு", + "searchAuditLogs": "தணிக்கைப் பதிவுகளில் தேடுக...", + "failedLoadAuditLog": "தணிக்கைப் பதிவை ஏற்ற முடியவில்லை", + "noAuditEvents": "தணிக்கை நிகழ்வுகள் எதுவும் காணப்படவில்லை", + "action": "செயல்", + "actor": "செயல்படுத்தியவர்", + "details": "விவரங்கள்", + "time": "நேரம்", + "fallbackChainsTitle": "மாற்று வழங்குநர் சங்கிலிகள்", + "fallbackChainsDesc": "ஒவ்வொரு மாதிரிக்கும் வழங்குநர்களின் மாற்று வரிசையை வரையறுக்கவும்", + "addChain": "+ சங்கிலியைச் சேர்", + "modelName": "மாதிரிப் பெயர்", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "Providers (comma-separated, in priority order)", + "providersCommaSeparated": "வழங்குநர்கள் (காற்புள்ளியால் பிரிக்கப்பட்டு, முன்னுரிமை வரிசையில்)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", - "createChain": "Create Chain", - "noFallbackChains": "No Fallback Chains", - "noFallbackChainsDesc": "Create a chain to define provider fallback order for a model.", - "loadingFallbackChains": "Loading fallback chains...", - "deleteChainConfirm": "Delete fallback chain for \"{model}\"?", - "chainCreated": "Chain created for {model}", - "chainDeleted": "Chain deleted for {model}", - "failedCreateChain": "Failed to create chain", - "failedDeleteChain": "Failed to delete chain", - "deleteChain": "Delete chain", - "fillModelAndProviders": "Please fill model name and providers", - "addAtLeastOneProvider": "Add at least one provider", - "comboDefaultsTitle": "Combo Defaults", - "comboDefaultsGuideTitle": "How to tune combo defaults", - "comboDefaultsGuideHint1": "Keep retries low in low-latency flows; increase timeout only for long generation tasks.", - "comboDefaultsGuideHint2": "Use provider overrides when one provider needs different timeout/retry behavior than global defaults.", - "globalComboConfig": "Global combo configuration", + "createChain": "சங்கிலியை உருவாக்கு", + "noFallbackChains": "மாற்று வழங்குநர் சங்கிலிகள் இல்லை", + "noFallbackChainsDesc": "ஒரு மாதிரிக்கான வழங்குநர்களின் மாற்று வரிசையை வரையறுக்க ஒரு சங்கிலியை உருவாக்கவும்.", + "loadingFallbackChains": "மாற்று வழங்குநர் சங்கிலிகள் ஏற்றப்படுகின்றன...", + "deleteChainConfirm": "\"{model}\"-க்கான மாற்று வழங்குநர் சங்கிலியை நீக்கவா?", + "chainCreated": "{model}-க்கான சங்கிலி உருவாக்கப்பட்டது", + "chainDeleted": "{model}-க்கான சங்கிலி நீக்கப்பட்டது", + "failedCreateChain": "சங்கிலியை உருவாக்க முடியவில்லை", + "failedDeleteChain": "சங்கிலியை நீக்க முடியவில்லை", + "deleteChain": "சங்கிலியை நீக்கு", + "fillModelAndProviders": "மாதிரிப் பெயரையும் வழங்குநர்களையும் நிரப்பவும்", + "addAtLeastOneProvider": "குறைந்தது ஒரு வழங்குநரையாவது சேர்க்கவும்", + "comboDefaultsTitle": "காம்போ இயல்புநிலைகள்", + "comboDefaultsGuideTitle": "காம்போ இயல்புநிலைகளை எவ்வாறு சீரமைப்பது", + "comboDefaultsGuideHint1": "குறைந்த தாமதச் செயலோட்டங்களில் மறுமுயற்சிகளைக் குறைவாக வைத்திருங்கள்; நீண்ட உருவாக்கப் பணிகளுக்கு மட்டும் காலக்கெடுவை அதிகரிக்கவும்.", + "comboDefaultsGuideHint2": "ஒரு வழங்குநருக்கு உலகளாவிய இயல்புநிலைகளிலிருந்து மாறுபட்ட காலக்கெடு/மறுமுயற்சி செயல்பாடு தேவைப்படும்போது வழங்குநர் மேலெழுதல்களைப் பயன்படுத்தவும்.", + "globalComboConfig": "உலகளாவிய காம்போ உள்ளமைவு", "moveUp": "மேலே நகர்த்து", "moveDown": "கீழே நகர்த்து", "allProvidersAdded": "அனைத்து வழங்குநர்களும் சேர்க்கப்பட்டனர்", "noProvidersFound": "வழங்குநர்கள் யாரும் கண்டறியப்படவில்லை", - "defaultStrategy": "Default Strategy", + "defaultStrategy": "இயல்புநிலை உத்தி", "defaultStrategyDesc": "Applied to new combos without explicit strategy", - "comboStrategyAria": "Combo strategy", - "priority": "Priority", - "weighted": "Weighted", - "contextRelay": "Context Relay", - "contextRelayDesc": "Priority-style routing with automatic context handoffs when account rotation happens", - "maxRetriesLabel": "Max Retries", - "retryDelayLabel": "Retry Delay (ms)", - "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", - "healthCheckDesc": "Pre-check provider availability", - "trackMetrics": "Track Metrics", - "trackMetricsDesc": "Record per-combo request metrics", - "providerOverrides": "Provider Overrides", - "providerOverridesDesc": "Override timeout and retries per provider. Provider settings override global defaults.", - "providerMaxRetriesAria": "{provider} max retries", - "providerTimeoutAria": "{provider} timeout ms", - "removeProviderOverrideAria": "Remove {provider} override", + "comboStrategyAria": "காம்போ உத்தி", + "priority": "முன்னுரிமை", + "weighted": "எடையிடப்பட்டது", + "contextRelay": "சூழல் பரிமாற்றம்", + "contextRelayDesc": "கணக்கு சுழற்சி நிகழும்போது தானியங்கி சூழல் ஒப்படைப்புகளுடன் கூடிய முன்னுரிமை-பாணி வழிப்படுத்தல்", + "maxRetriesLabel": "அதிகபட்ச மறுமுயற்சிகள்", + "retryDelayLabel": "மறுமுயற்சி தாமதம் (ms)", + "timeoutLabel": "காலக்கெடு (ms)", + "healthCheck": "நிலைச் சரிபார்ப்பு", + "healthCheckDesc": "வழங்குநர் கிடைப்பதை முன்கூட்டியே சரிபார்க்கவும்", + "trackMetrics": "அளவீடுகளைக் கண்காணிக்கவும்", + "trackMetricsDesc": "ஒவ்வொரு காம்போவிற்குமான கோரிக்கை அளவீடுகளைப் பதிவுசெய்யவும்", + "providerOverrides": "வழங்குநர் மேலெழுதல்கள்", + "providerOverridesDesc": "ஒவ்வொரு வழங்குநருக்கும் காலக்கெடு மற்றும் மறுமுயற்சிகளை மேலெழுதவும். வழங்குநர் அமைப்புகள் உலகளாவிய இயல்புநிலைகளை மேலெழுதும்.", + "providerMaxRetriesAria": "{provider} அதிகபட்ச மறுமுயற்சிகள்", + "providerTimeoutAria": "{provider} காலக்கெடு ms", + "removeProviderOverrideAria": "{provider} மேலெழுதலை அகற்றவும்", "selectProviderPlaceholder": "வழங்குநரைத் தேர்ந்தெடுக்கவும்...", "searchProviderPlaceholder": "வழங்குநர்களைத் தேடவும்...", "searchProviderAria": "வழங்குநர்களைத் தேடவும்", - "newProviderNamePlaceholder": "e.g. google, openai...", - "newProviderNameAria": "New provider name", - "retries": "retries", + "newProviderNamePlaceholder": "எ.கா. google, openai...", + "newProviderNameAria": "புதிய வழங்குநரின் பெயர்", + "retries": "மறுமுயற்சிகள்", "ms": "ms", - "saveComboDefaults": "Save Combo Defaults", - "maxNestingDepth": "Max Nesting Depth", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", + "saveComboDefaults": "காம்போ இயல்புநிலைகளைச் சேமிக்கவும்", + "maxNestingDepth": "அதிகபட்ச உள்ளமைப்பு ஆழம்", + "concurrencyPerModel": "ஒரேநேரச் செயல்பாடுகள் / மாடல்", + "queueTimeout": "வரிசைக் காலக்கெடு (ms)", "queueDepth": "வரிசை ஆழம்", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", - "providerProfiles": "Provider Profiles", - "providerProfilesDesc": "Separate resilience settings for OAuth (session-based) and API Key (metered) providers. OAuth providers have stricter thresholds due to lower rate limits.", - "oauthProviders": "OAuth Providers", - "apiKeyProviders": "API Key Providers", - "transientCooldown": "Transient Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", - "cbThreshold": "CB Threshold", - "cbResetTime": "CB Reset Time", - "rateLimiting": "Rate Limiting", - "rateLimitingDesc": "API Key providers are automatically rate-limited with safe defaults. Limits are learned from response headers and adapt over time.", - "defaultSafetyNet": "Default Safety Net", + "contextRelayHandoffThreshold": "ஒப்படைப்பு வரம்பு", + "contextRelayMaxMessages": "சுருக்கத்திற்கான அதிகபட்ச செய்திகள்", + "contextRelaySummaryModel": "சுருக்க மாடல்", + "contextRelayProviderNote": "சூழல் பரிமாற்றம் தற்போது Codex கணக்குகளுக்கான ஒப்படைப்புகளை உருவாக்குகிறது மற்றும் புதிய அல்லது உள்ளமைக்கப்படாத காம்போக்களுக்கு இந்த மதிப்புகளை உலகளாவிய இயல்புநிலைகளாகப் பயன்படுத்துகிறது.", + "providerProfiles": "வழங்குநர் சுயவிவரங்கள்", + "providerProfilesDesc": "OAuth (அமர்வு அடிப்படையிலான) மற்றும் API Key (பயன்பாட்டு அளவீடு கொண்ட) வழங்குநர்களுக்கான தனித்தனி மீட்சித்திறன் அமைப்புகள். குறைவான விகித வரம்புகள் காரணமாக OAuth வழங்குநர்களுக்குக் கடுமையான வரம்புகள் உள்ளன.", + "oauthProviders": "OAuth வழங்குநர்கள்", + "apiKeyProviders": "API Key வழங்குநர்கள்", + "transientCooldown": "தற்காலிகக் காத்திருப்பு", + "rateLimitCooldown": "விகித வரம்புக் காத்திருப்பு", + "maxBackoffLevel": "அதிகபட்ச பின்வாங்கல் நிலை", + "cbThreshold": "CB வரம்பு", + "cbResetTime": "CB மீட்டமைப்பு நேரம்", + "rateLimiting": "விகிதக் கட்டுப்பாடு", + "rateLimitingDesc": "API Key வழங்குநர்களுக்குப் பாதுகாப்பான இயல்புநிலைகளுடன் தானாகவே விகிதக் கட்டுப்பாடு விதிக்கப்படுகிறது. வரம்புகள் பதில் தலைப்புகளிலிருந்து கற்றுக்கொள்ளப்பட்டு, காலப்போக்கில் தகவமைக்கப்படுகின்றன.", + "defaultSafetyNet": "இயல்புநிலை பாதுகாப்பு வலை", "rpm": "RPM", - "minGap": "Min Gap", - "maxConcurrent": "Max Concurrent", - "activeLimiters": "Active Limiters", - "noActiveLimiters": "No active rate limiters yet.", - "reservoir": "Reservoir", - "running": "Running", - "queued": "Queued", - "circuitBreakers": "Circuit Breakers", - "breakerStateClosed": "Closed", - "breakerStateOpen": "Open", - "breakerStateHalfOpen": "Half-Open", - "tripped": "{count} tripped", - "healthy": "{count} healthy", - "resetAll": "Reset All", - "noCircuitBreakers": "No circuit breakers active yet. They are created automatically when requests flow through the combo pipeline.", - "failures": "{count} failure(s)", - "policiesLocked": "Policies & Locked Identifiers", - "allOperational": "All systems operational — no lockouts or tripped breakers", - "loadingPolicies": "Loading policies...", - "lockedIdentifiers": "Locked Identifiers", - "unlockedIdentifier": "Unlocked: {identifier}", - "sinceDate": "since {date}", - "forceUnlock": "Force Unlock", - "unlocking": "Unlocking...", - "failedUnlock": "Failed to unlock", - "failedLoadWithStatus": "Failed to load: {status}", - "failedLoadResilience": "Failed to load resilience status", - "saveFailed": "Save failed", - "resetFailed": "Reset failed", - "loadingResilience": "Loading resilience status...", - "retry": "Retry", + "minGap": "குறைந்தபட்ச இடைவெளி", + "maxConcurrent": "அதிகபட்ச ஒரேநேர செயல்பாடுகள்", + "activeLimiters": "செயலில் உள்ள வரம்புக் கட்டுப்படுத்திகள்", + "noActiveLimiters": "செயலில் உள்ள கோரிக்கை வீத வரம்புக் கட்டுப்படுத்திகள் இன்னும் இல்லை.", + "reservoir": "கையிருப்பு", + "running": "இயங்குகிறது", + "queued": "வரிசையில் உள்ளது", + "circuitBreakers": "சுற்று முறிப்பான்கள்", + "breakerStateClosed": "மூடப்பட்டது", + "breakerStateOpen": "திறக்கப்பட்டது", + "breakerStateHalfOpen": "பாதி திறக்கப்பட்டது", + "tripped": "{count} செயலிழந்தன", + "healthy": "{count} ஆரோக்கியமாக உள்ளன", + "resetAll": "அனைத்தையும் மீட்டமை", + "noCircuitBreakers": "செயலில் உள்ள சுற்று முறிப்பான்கள் இன்னும் இல்லை. சேர்க்கைச் செயலாக்கத் தொடரின் வழியாகக் கோரிக்கைகள் செல்லும்போது அவை தானாக உருவாக்கப்படும்.", + "failures": "{count} தோல்வி(கள்)", + "policiesLocked": "கொள்கைகள் & பூட்டப்பட்ட அடையாளங்காட்டிகள்", + "allOperational": "அனைத்து அமைப்புகளும் செயல்பாட்டில் உள்ளன — பூட்டுதல்களோ செயலிழந்த சுற்று முறிப்பான்களோ இல்லை", + "loadingPolicies": "கொள்கைகள் ஏற்றப்படுகின்றன...", + "lockedIdentifiers": "பூட்டப்பட்ட அடையாளங்காட்டிகள்", + "unlockedIdentifier": "பூட்டு நீக்கப்பட்டது: {identifier}", + "sinceDate": "{date} முதல்", + "forceUnlock": "கட்டாயமாகப் பூட்டை நீக்கு", + "unlocking": "பூட்டு நீக்கப்படுகிறது...", + "failedUnlock": "பூட்டை நீக்க முடியவில்லை", + "failedLoadWithStatus": "ஏற்ற முடியவில்லை: {status}", + "failedLoadResilience": "மீள்திறன் நிலையை ஏற்ற முடியவில்லை", + "saveFailed": "சேமிக்க முடியவில்லை", + "resetFailed": "மீட்டமைக்க முடியவில்லை", + "loadingResilience": "மீள்திறன் நிலை ஏற்றப்படுகிறது...", + "retry": "மீண்டும் முயல்க", "systemStorage": "System & Storage", - "allDataLocal": "All data stored locally on your machine", - "databasePath": "Database Path", + "allDataLocal": "அனைத்துத் தரவும் உங்கள் கணினியில் உள்ளகமாகச் சேமிக்கப்படுகிறது", + "databasePath": "தரவுத்தளப் பாதை", "export": "ஏற்றுமதி செய்", - "exportDatabase": "Export Database", - "exportAll": "Export All (.tar.gz)", - "importDatabase": "Import Database", - "confirmDbImport": "Confirm Database Import", - "confirmDbImportDesc": "This will replace all current data with the content from {file}. A backup will be created automatically before the import.", - "yesImport": "Yes, Import", - "lastBackup": "Last Backup", - "noBackupYet": "No backup yet", - "backupNow": "Backup Now", - "backupRestore": "Backup & Restore", - "viewBackups": "View Backups", - "hide": "Hide", - "backupRetentionDesc": "Database snapshots are created automatically before restore and every 15 minutes when data changes. Retention: 24 hourly + 30 daily backups with smart rotation.", - "loadingBackups": "Loading backups...", - "noBackupsYet": "No backups available yet. Backups will be created automatically when data changes.", - "backupsAvailable": "{count} backup(s) available", - "refresh": "Refresh", - "confirm": "Confirm?", - "yes": "Yes", - "no": "No", - "restore": "Restore", - "invalidFileType": "Invalid file type. Only .sqlite files are accepted.", - "exportFailed": "Export failed", - "exportFailedWithError": "Export failed: {error}", - "fullExportFailedWithError": "Full export failed: {error}", - "backupCreated": "Backup created: {file}", - "restoreSuccess": "Restored! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "importSuccess": "Database imported! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "minutesAgo": "{count}m ago", - "hoursAgo": "{count}h ago", - "daysAgo": "{count}d ago", - "backupReasonManual": "manual", - "backupReasonPreRestore": "pre-restore", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", - "noChangesSinceBackup": "No changes since last backup", - "backupFailed": "Backup failed", - "restoreFailed": "Restore failed", - "importFailed": "Import failed", - "errorDuringRestore": "An error occurred during restore", - "errorDuringImport": "An error occurred during import", - "modelPricing": "Model Pricing", - "modelPricingDesc": "Configure cost rates per model • All rates in $/1M tokens", + "exportDatabase": "தரவுத்தளத்தை ஏற்றுமதி செய்", + "exportAll": "அனைத்தையும் ஏற்றுமதி செய் (.tar.gz)", + "importDatabase": "தரவுத்தளத்தை இறக்குமதி செய்", + "confirmDbImport": "தரவுத்தள இறக்குமதியை உறுதிப்படுத்து", + "confirmDbImportDesc": "இது தற்போதைய அனைத்துத் தரவையும் {file} கோப்பின் உள்ளடக்கத்தால் மாற்றும். இறக்குமதிக்கு முன் ஒரு காப்புப்பிரதி தானாக உருவாக்கப்படும்.", + "yesImport": "ஆம், இறக்குமதி செய்", + "lastBackup": "கடைசி காப்புப்பிரதி", + "noBackupYet": "இதுவரை காப்புப்பிரதி இல்லை", + "backupNow": "இப்போது காப்புப்பிரதி எடுக்கவும்", + "backupRestore": "காப்புப்பிரதி & மீட்டமைப்பு", + "viewBackups": "காப்புப்பிரதிகளைக் காண்க", + "hide": "மறை", + "backupRetentionDesc": "மீட்டமைப்பதற்கு முன்பும், தரவு மாறும்போது ஒவ்வொரு 15 நிமிடங்களுக்கும் தரவுத்தள ஸ்னாப்ஷாட்கள் தானாக உருவாக்கப்படும். தக்கவைப்பு: அறிவார்ந்த சுழற்சியுடன் 24 மணிநேரக் காப்புப்பிரதிகள் + 30 தினசரிக் காப்புப்பிரதிகள்.", + "loadingBackups": "காப்புப்பிரதிகள் ஏற்றப்படுகின்றன...", + "noBackupsYet": "இதுவரை காப்புப்பிரதிகள் எதுவும் இல்லை. தரவு மாறும்போது காப்புப்பிரதிகள் தானாக உருவாக்கப்படும்.", + "backupsAvailable": "{count} காப்புப்பிரதி(கள்) உள்ளன", + "refresh": "புதுப்பி", + "confirm": "உறுதிப்படுத்தவா?", + "yes": "ஆம்", + "no": "இல்லை", + "restore": "மீட்டமை", + "invalidFileType": "தவறான கோப்பு வகை. .sqlite கோப்புகள் மட்டுமே ஏற்கப்படும்.", + "exportFailed": "ஏற்றுமதி தோல்வியடைந்தது", + "exportFailedWithError": "ஏற்றுமதி தோல்வியடைந்தது: {error}", + "fullExportFailedWithError": "முழு ஏற்றுமதி தோல்வியடைந்தது: {error}", + "backupCreated": "காப்புப்பிரதி உருவாக்கப்பட்டது: {file}", + "restoreSuccess": "மீட்டமைக்கப்பட்டது! {connections} இணைப்புகள், {nodes} முனைகள், {combos} சேர்க்கைகள், {apiKeys} API விசைகள்.", + "importSuccess": "தரவுத்தளம் இறக்குமதி செய்யப்பட்டது! {connections} இணைப்புகள், {nodes} முனைகள், {combos} சேர்க்கைகள், {apiKeys} API விசைகள்.", + "minutesAgo": "{count} நிமி முன்பு", + "hoursAgo": "{count} மணி முன்பு", + "daysAgo": "{count} நாள் முன்பு", + "backupReasonManual": "கைமுறை", + "backupReasonPreRestore": "மீட்டமைப்புக்கு முன்", + "connectionsCount": "{count, plural, one {# இணைப்பு} other {# இணைப்புகள்}}", + "noChangesSinceBackup": "கடைசி காப்புப்பிரதிக்குப் பிறகு மாற்றங்கள் இல்லை", + "backupFailed": "காப்புப்பிரதி தோல்வியடைந்தது", + "restoreFailed": "மீட்டமைப்பு தோல்வியடைந்தது", + "importFailed": "இறக்குமதி தோல்வியடைந்தது", + "errorDuringRestore": "மீட்டமைப்பின்போது பிழை ஏற்பட்டது", + "errorDuringImport": "இறக்குமதியின்போது பிழை ஏற்பட்டது", + "modelPricing": "மாதிரி விலை நிர்ணயம்", + "modelPricingDesc": "ஒவ்வொரு மாதிரிக்கும் செலவு விகிதங்களை உள்ளமைக்கவும் • அனைத்து விகிதங்களும் $/1M டோக்கன்களில்", "pricingCoverage": "கவரேஜ்", "pricingAuth": "அங்கீகாரம்", "pricingSort": "வரிசைப்படுத்து", @@ -7329,7 +7332,7 @@ "configured": "கட்டமைக்கப்பட்டது", "none": "ஏதுமில்லை", "modelOverrideValuePlaceholder": "எண் மதிப்பு", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "ஆங்கிலக் காற்புள்ளியால் பிரிக்கப்பட்டவை, எ.கா. low, medium, high", "addKeyValue": "விசை மதிப்பைச் சேர்", "noModelOverrides": "இந்த மாதிரிக்கு மேலெழுதல்கள் எதுவும் கட்டமைக்கப்படவில்லை.", "modelOverrideLoadFailed": "மாதிரி மேலெழுதல்களை ஏற்றுவதில் தோல்வி", @@ -7337,66 +7340,66 @@ "modelOverrideRemoved": "மாதிரி மேலெழுதுதல் அகற்றப்பட்டது", "modelOverrideSaveFailed": "மாதிரி மேலெழுதலைச் சேமிப்பதில் தோல்வி", "modelOverrideRemoveFailed": "மாதிரி மேலெழுதலை அகற்றுவதில் தோல்வி", - "registry": "Registry", - "priced": "Priced", - "searchProvidersModels": "Search providers or models...", - "showAll": "Show All", - "noProvidersMatch": "No providers match your search.", - "howPricingWorks": "How Pricing Works", - "cacheWrite": "Cache Write", - "unsaved": "unsaved", + "registry": "பதிவேடு", + "priced": "விலை நிர்ணயிக்கப்பட்டது", + "searchProvidersModels": "வழங்குநர்கள் அல்லது மாதிரிகளைத் தேடுக...", + "showAll": "அனைத்தையும் காட்டு", + "noProvidersMatch": "உங்கள் தேடலுக்கு எந்த வழங்குநர்களும் பொருந்தவில்லை.", + "howPricingWorks": "விலை நிர்ணயம் எவ்வாறு செயல்படுகிறது", + "cacheWrite": "தற்காலிகச் சேமிப்பக எழுதுதல்", + "unsaved": "சேமிக்கப்படாதது", "resetDefaults": "மூல அமைப்புகளை மீட்டமைக்கவும்", - "saveProvider": "Save Provider", + "saveProvider": "வழங்குநரைச் சேமி", "model": "Model", - "models": "models", - "moreProviders": "{count} more providers", - "withPricing": "with pricing configured", - "policiesCircuitBreakers": "Policies & Circuit Breakers", - "activeIssuesDetected": "Active issues detected", - "off": "Off", - "resetPricingConfirm": "Reset all pricing for {provider} to defaults?", - "pricingDescInput": "Input: tokens sent to the model", - "pricingDescOutput": "Output: tokens generated", - "pricingDescCached": "Cached: reused input (~50% of input rate)", - "pricingDescReasoning": "Reasoning: thinking tokens (falls back to Output)", - "pricingDescCacheWrite": "Cache Write: creating cache entries (falls back to Input)", - "pricingDescFormula": "Cost = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.", - "pricingSettingsTitle": "Pricing Settings", - "totalModels": "Total Models", - "active": "Active", - "costCalculation": "Cost Calculation", - "costCalculationDesc": "Costs are calculated based on token usage and pricing rates configured for each model.", - "pricingFormat": "Pricing Format", - "pricingFormatDesc": "All rates are in $/1M tokens (dollars per million tokens).", - "tokenTypes": "Token Types", - "inputTokenDesc": "Standard prompt tokens", - "outputTokenDesc": "Completion/response tokens", - "cachedTokenDesc": "Cached input tokens (typically 50% of input rate)", - "reasoningTokenDesc": "Special reasoning/thinking tokens (fallback to output rate)", - "cacheCreationTokenDesc": "Tokens used to create cache entries (fallback to input rate)", - "customPricingNote": "You can override default pricing for specific models. Custom overrides take priority over auto-detected pricing.", - "editPricing": "Edit Pricing", - "viewFullDetails": "View Full Details", + "models": "மாதிரிகள்", + "moreProviders": "மேலும் {count} வழங்குநர்கள்", + "withPricing": "விலை நிர்ணயம் உள்ளமைக்கப்பட்டுள்ளது", + "policiesCircuitBreakers": "கொள்கைகள் மற்றும் சர்க்யூட் பிரேக்கர்கள்", + "activeIssuesDetected": "செயலில் உள்ள சிக்கல்கள் கண்டறியப்பட்டன", + "off": "முடக்கு", + "resetPricingConfirm": "{provider}-க்கான அனைத்து விலை நிர்ணயத்தையும் இயல்புநிலைக்கு மீட்டமைக்கவா?", + "pricingDescInput": "உள்ளீடு: மாதிரிக்கு அனுப்பப்பட்ட டோக்கன்கள்", + "pricingDescOutput": "வெளியீடு: உருவாக்கப்பட்ட டோக்கன்கள்", + "pricingDescCached": "தற்காலிகச் சேமிப்பிலிருந்து: மீண்டும் பயன்படுத்தப்பட்ட உள்ளீடு (உள்ளீட்டு விகிதத்தில் சுமார் 50%)", + "pricingDescReasoning": "பகுத்தறிதல்: சிந்தனை டோக்கன்கள் (இல்லையெனில் வெளியீட்டு விகிதம் பயன்படுத்தப்படும்)", + "pricingDescCacheWrite": "தற்காலிகச் சேமிப்பக எழுதுதல்: தற்காலிகச் சேமிப்புப் பதிவுகளை உருவாக்குதல் (இல்லையெனில் உள்ளீட்டு விகிதம் பயன்படுத்தப்படும்)", + "pricingDescFormula": "செலவு = (உள்ளீடு × உள்ளீட்டு_விகிதம்) + (வெளியீடு × வெளியீட்டு_விகிதம்) + (தற்காலிகச் சேமிப்பு × தற்காலிகச்_சேமிப்பு_விகிதம்), ஒரு மில்லியன் டோக்கன்களுக்கு.", + "pricingSettingsTitle": "விலை நிர்ணய அமைப்புகள்", + "totalModels": "மொத்த மாதிரிகள்", + "active": "செயலில் உள்ளது", + "costCalculation": "செலவுக் கணக்கீடு", + "costCalculationDesc": "ஒவ்வொரு மாதிரிக்கும் உள்ளமைக்கப்பட்ட டோக்கன் பயன்பாடு மற்றும் விலை விகிதங்களின் அடிப்படையில் செலவுகள் கணக்கிடப்படுகின்றன.", + "pricingFormat": "விலை நிர்ணய வடிவம்", + "pricingFormatDesc": "அனைத்து விகிதங்களும் $/1M டோக்கன்கள் என்ற அளவில் உள்ளன (ஒரு மில்லியன் டோக்கன்களுக்கான டாலர்கள்).", + "tokenTypes": "டோக்கன் வகைகள்", + "inputTokenDesc": "நிலையான ப்ராம்ப்ட் டோக்கன்கள்", + "outputTokenDesc": "நிறைவு/பதில் டோக்கன்கள்", + "cachedTokenDesc": "தற்காலிகச் சேமிப்பிலுள்ள உள்ளீட்டு டோக்கன்கள் (பொதுவாக உள்ளீட்டு விகிதத்தில் 50%)", + "reasoningTokenDesc": "சிறப்புப் பகுத்தறிதல்/சிந்தனை டோக்கன்கள் (இல்லையெனில் வெளியீட்டு விகிதம் பயன்படுத்தப்படும்)", + "cacheCreationTokenDesc": "தற்காலிகச் சேமிப்புப் பதிவுகளை உருவாக்கப் பயன்படுத்தப்படும் டோக்கன்கள் (இல்லையெனில் உள்ளீட்டு விகிதம் பயன்படுத்தப்படும்)", + "customPricingNote": "குறிப்பிட்ட மாதிரிகளுக்கான இயல்புநிலை விலை நிர்ணயத்தை நீங்கள் மாற்றியமைக்கலாம். தனிப்பயன் மாற்றங்கள் தானாகக் கண்டறியப்பட்ட விலை நிர்ணயத்தைவிட முன்னுரிமை பெறும்.", + "editPricing": "விலை நிர்ணயத்தைத் திருத்து", + "viewFullDetails": "முழு விவரங்களைக் காண்க", "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "தகவமைவு அளவு வழிப்படுத்தல்", + "adaptiveVolumeRoutingDesc": "பேலோட் அளவு மற்றும் செயல்திறன் அழுத்தத்தின் அடிப்படையில் இணைப்புகளை மாறும் வகையில் அளவிடுங்கள்.", + "lkgpToggleTitle": "கடைசியாகச் சரியாகச் செயல்பட்ட வழங்குநர் (LKGP)", + "lkgpToggleDesc": "இது இயக்கப்பட்டிருக்கும்போது, கடைசியாக வெற்றிகரமான பதிலை வழங்கிய வழங்குநரை ரவுட்டர் நினைவில் வைத்து, அடுத்தடுத்த கோரிக்கைகளில் முதலில் அதையே முயற்சிக்கும்.", "echoRequestedModelTitle": "பதில்களில் கோரப்பட்ட மாதிரியின் பெயரை எதிரொலி செய்", "echoRequestedModelDesc": "இயக்கப்பட்டால், பதிலின் `model` புலம், அப்ஸ்ட்ரீம் மாடல் பெயருக்குப் பதிலாக கிளையன்ட் கோரிய மாற்றுப்பெயர் அல்லது காம்போ பெயரை எதிரொலிக்கும். கோரிக்கையுடன் பொருந்தாத மாடலைக் கொண்ட பதிலை நிராகரிக்கும் கடுமையான கிளையன்ட்களை (எ.கா. Claude Desktop) இது சரிசெய்கிறது.", "webSearchRouteTitle": "இணையத் தேடல் ரூட்டிங்", "webSearchRouteDesc": "ஒரு கோரிக்கையில் நேட்டிவ் web_search கருவி சேர்க்கப்படும்போது, இயல்புநிலைக்குப் பதிலாக முழு கோரிக்கையையும் இந்த மாடலுக்கு ரூட் செய்யவும் — Anthropic-இன் web_search சர்வர் கருவியை செயல்படுத்தாத வழங்குநர்களுக்கு இது பயனுள்ளதாக இருக்கும். முடக்க காலியாக விடவும்.", "webSearchRoutePlaceholder": "ஒரு மாடலைத் தேடவும் அல்லது தேர்ந்தெடுக்கவும்…", "paidModelPatternWarning": "இந்த பேட்டர்ன் கட்டண மாடல்களுடன் மட்டுமே பொருந்துகிறது — கட்டண மாடல்களை இயக்கவும் அல்லது பேட்டர்னை சரிசெய்யவும்.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP தற்காலிக சேமிப்பை அழி", + "lkgpCacheCleared": "LKGP தற்காலிக சேமிப்பு வெற்றிகரமாக அழிக்கப்பட்டது", + "lkgpCacheClearFailed": "LKGP தற்காலிக சேமிப்பை அழிக்க முடியவில்லை", + "days": "நாட்கள்", + "lkgp": "LKGP பயன்முறை", + "lkgpDesc": "கடைசியாக அறியப்பட்ட நல்ல வழங்குநர் (முன்கணிக்கக்கூடிய மீட்சித்திறன்)", + "maintenance": "பராமரிப்பு", + "purgeExpiredLogs": "காலாவதியான பதிவுகளை அகற்று", + "purgeLogsFailed": "பதிவுகளை அகற்ற முடியவில்லை", "logsDeleted": "{count, plural, =0 {காலாவதியான பதிவுகள் எதுவும் நீக்கப்படவில்லை} one {# காலாவதியான பதிவு நீக்கப்பட்டது} other {# காலாவதியான பதிவுகள் நீக்கப்பட்டன}}", "resetUsageData": "பயன்பாட்டுத் தரவை மீட்டமை", "resetUsageDataDesc": "பயன்பாடு, கோரிக்கை பதிவுகள் மற்றும் பகுப்பாய்வுத் தரவை எவ்வளவு காலத்திற்கு முன்பு வரை நீக்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும். வழங்குநர் உள்ளமைப்பு, இணைப்புகள், API விசைகள், காம்போக்கள் மற்றும் அமைப்புகள் பாதுகாக்கப்படும். இந்தச் செயலை மாற்ற முடியாது.", @@ -7413,63 +7416,63 @@ "resetUsageFailed": "பயன்பாட்டுத் தரவை மீட்டமைக்க முடியவில்லை", "reset": "மீட்டமை", "resetting": "மீட்டமைக்கப்படுகிறது...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", - "pricingSourceLiteLLM": "LiteLLM (Community)", - "clearSyncedPricingConfirm": "Clear all synced pricing data? Provider defaults will be used instead.", - "clearSyncedPricingFailed": "Failed to clear synced pricing", - "pricingSourceUser": "User Override", - "pageDescription": "Manage application settings, model aliases, pricing, and routing rules", - "pricingSyncStatus": "Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", - "pricingLoadFailed": "Failed to load pricing data", - "pricingSyncDescription": "Automatically sync model pricing from external sources to keep cost calculations accurate", - "clearSyncedPricingSuccess": "Synced pricing data cleared", - "clearSyncedPricingFailedWithReason": "Failed to clear pricing: {reason}", - "pricingSourceDefault": "Built-in Default", - "pricingSyncSuccess": "Pricing synced successfully", - "enableSyncError": "Failed to toggle pricing sync", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "contextOpt": "சூழலுக்காக உகப்பாக்கப்பட்டது", + "contextOptDesc": "சூழல் சாளரத் தேவைகள் மற்றும் உரையாடல் நீளத்தின் அடிப்படையில் வழித்தடங்களைத் தேர்ந்தெடுக்கிறது", + "cacheOpt": "தற்காலிக சேமிப்புக்காக உகப்பாக்கப்பட்டது", + "cacheOptDesc": "மீண்டும் பயன்படுத்தக்கூடிய அதே தூண்டல் முன்னொட்டை அதே வழங்குநர் கணக்கில் வைத்திருக்கிறது", + "priorityDesc": "தொடர்ச்சியான மாற்றுவழி — முதலில் வழங்குநர் 1-ஐ முயற்சித்து, பின்னர் வழங்குநர் 2-ஐ முயற்சித்து, அவ்வாறே தொடர்கிறது", + "weightedDesc": "வழங்குநர்களிடையே சதவீத எடைகளின்படி போக்குவரத்தைப் பகிர்ந்தளிக்கிறது", + "modelRoutingTitle": "மாதிரி வழித்தட விதிகள்", + "modelRoutingDesc": "குளோப் வடிவங்களைப் பயன்படுத்தி மாதிரிகளைத் தானாகவே குறிப்பிட்ட காம்போக்களுக்கு வழிமாற்றுகிறது", + "addRule": "விதியைச் சேர்", + "routeToCombo": "காம்போவுக்கு வழிமாற்று", + "selectCombo": "காம்போவைத் தேர்ந்தெடுக்கவும்...", + "priorityHint": "அதிக மதிப்பு = முதலில் சரிபார்க்கப்படும். குறிப்பிட்ட வடிவங்களுக்கு 10+ ஐப் பயன்படுத்தவும்.", + "patternHint": "எத்தனை எழுத்துகளுக்கும் * ஐயும், ஒற்றை எழுத்துக்கு ? ஐயும் பயன்படுத்தவும். எழுத்துப் பெட்டி வேறுபாடு கணக்கில் கொள்ளப்படாது.", + "noRoutingRules": "வழித்தட விதிகள் எதுவும் உள்ளமைக்கப்படவில்லை. இயல்பாக கோரிக்கைகள் உலகளாவிய காம்போவைப் பயன்படுத்தும்.", + "routingRuleHint": "கோரிக்கைகளைத் தானாக வழிமாற்ற claude-opus* -> frontier-combo போன்ற ஒரு விதியைச் சேர்க்கவும்.", + "deleteRoutingRule": "இந்த மாதிரி வழித்தட விதியை நீக்கவா?", + "exactMatchMode": "துல்லியப் பொருத்தம்", + "wildcardPatternMode": "வைல்ட்கார்டு வடிவம்", + "exactMatchModeDesc": "நிறுத்தப்பட்ட அல்லது மறுபெயரிடப்பட்ட மாதிரி ID-களுக்கு துல்லியமான மாற்றுப்பெயர்களைப் பயன்படுத்தவும்.", + "wildcardPatternModeDesc": "மாதிரிகளின் ஒரு குடும்பம் ஒரே இலக்குடன் பொருத்தப்பட வேண்டுமெனில், * மற்றும் ? கொண்ட வைல்ட்கார்டு மாற்றுப்பெயர்களைப் பயன்படுத்தவும்.", + "noExactAliasesConfigured": "துல்லியப் பொருத்த மாற்றுப்பெயர்கள் எதுவும் உள்ளமைக்கப்படவில்லை.", + "wildcardRulesTitle": "வைல்ட்கார்டு விதிகள்", + "noWildcardAliasesConfigured": "வைல்ட்கார்டு மாற்றுப்பெயர்கள் எதுவும் உள்ளமைக்கப்படவில்லை.", + "overview": "மேலோட்டம்", + "unknownError": "அறியப்படாத பிழை", + "pricingSourceLiteLLM": "LiteLLM (சமூகம்)", + "clearSyncedPricingConfirm": "ஒத்திசைக்கப்பட்ட அனைத்து விலைத் தரவையும் அழிக்கவா? அதற்குப் பதிலாக வழங்குநரின் இயல்புநிலை மதிப்புகள் பயன்படுத்தப்படும்.", + "clearSyncedPricingFailed": "ஒத்திசைக்கப்பட்ட விலைத் தரவை அழிக்க முடியவில்லை", + "pricingSourceUser": "பயனர் மேலெழுதுதல்", + "pageDescription": "பயன்பாட்டு அமைப்புகள், மாதிரி மாற்றுப்பெயர்கள், விலை நிர்ணயம் மற்றும் வழித்தட விதிகளை நிர்வகிக்கவும்", + "pricingSyncStatus": "ஒத்திசைவு நிலை", + "whitelist": "அனுமதிப்பட்டியல்", + "syncDisabled": "ஒத்திசைவு முடக்கப்பட்டுள்ளது", + "pricingLoadFailed": "விலைத் தரவை ஏற்ற முடியவில்லை", + "pricingSyncDescription": "செலவுக் கணக்கீடுகளைத் துல்லியமாக வைத்திருக்க வெளிப்புற மூலங்களிலிருந்து மாதிரி விலைகளைத் தானாக ஒத்திசைக்கவும்", + "clearSyncedPricingSuccess": "ஒத்திசைக்கப்பட்ட விலைத் தரவு அழிக்கப்பட்டது", + "clearSyncedPricingFailedWithReason": "விலையை அழிக்க முடியவில்லை: {reason}", + "pricingSourceDefault": "உள்ளமைக்கப்பட்ட இயல்புநிலை", + "pricingSyncSuccess": "விலை வெற்றிகரமாக ஒத்திசைக்கப்பட்டது", + "enableSyncError": "விலை ஒத்திசைவை மாற்ற முடியவில்லை", + "syncEnabled": "ஒத்திசைவு இயக்கப்பட்டுள்ளது", + "blacklist": "தடுப்புப்பட்டியல்", "pricingSourceModelsDev": "Models.dev", - "syncedModels": "Synced Models", - "budget": "Budget", - "pricingSyncTitle": "Pricing Sync", - "pricingResetFailedWithReason": "Failed to reset pricing: {reason}", - "tab": "Tab", - "pricingSavedProvider": "Pricing saved for {provider}", - "pricingSyncFailed": "Pricing sync failed", - "pricingSaveFailedWithReason": "Failed to save pricing: {reason}", - "pricingResetProvider": "Pricing reset for {provider}", - "nextSync": "Next Sync", - "pricingSyncFailedWithReason": "Pricing sync failed: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "syncedModels": "ஒத்திசைக்கப்பட்ட மாதிரிகள்", + "budget": "வரவுசெலவுத் திட்டம்", + "pricingSyncTitle": "விலை ஒத்திசைவு", + "pricingResetFailedWithReason": "விலையை மீட்டமைக்க முடியவில்லை: {reason}", + "tab": "தாவல்", + "pricingSavedProvider": "{provider} க்கான விலை சேமிக்கப்பட்டது", + "pricingSyncFailed": "விலை ஒத்திசைவு தோல்வியடைந்தது", + "pricingSaveFailedWithReason": "விலையைச் சேமிக்க முடியவில்லை: {reason}", + "pricingResetProvider": "{provider} க்கான விலை மீட்டமைக்கப்பட்டது", + "nextSync": "அடுத்த ஒத்திசைவு", + "pricingSyncFailedWithReason": "விலை ஒத்திசைவு தோல்வியடைந்தது: {reason}", + "clearSyncedPricing": "ஒத்திசைக்கப்பட்ட விலையை அழி", + "compressionTitle": "தூண்டுரை சுருக்கம்", + "compressionDesc": "வழங்குநர்களுக்கு அனுப்புவதற்கு முன் தூண்டுரைகளைச் சுருக்கி டோக்கன் பயன்பாட்டைக் குறைக்கவும்", "compressionGuidanceFullGuideLink": "முழு சுருக்க வழிகாட்டி", "compressionGuidanceShow": "விவரங்கள்", "compressionGuidanceHide": "விவரங்களை மறை", @@ -7485,13 +7488,13 @@ "tokenSaverInputCompressionDesc": "குறியீடு, URLகள் மற்றும் நோக்கத்தைப் பாதுகாக்கும் அதே வேளையில், தகுதியான அரட்டை வரலாற்றை மீண்டும் எழுதவும்.", "tokenSaverFineTunePrefix": "ஒவ்வொரு இன்ஜினையும் இதில் ஃபைன்-டியூன் செய்யவும்", "tokenSaverFineTuneSuffix": "அல்லது ஒவ்வொரு கோரிக்கைக்கும் இன்ஜின்களை இதில் இணைக்கவும்", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", + "compressionMode": "சுருக்க முறை", + "compressionModeOff": "முடக்கு", + "compressionModeOffDesc": "சுருக்கம் பயன்படுத்தப்படவில்லை", + "compressionModeLite": "எளிய", + "compressionModeLiteDesc": "வெற்றிடங்கள் மற்றும் காலி வரிகளைக் குறைத்தல்", + "compressionModeStandard": "நிலையானது (Caveman)", + "compressionModeStandardDesc": "30+ வடிவங்களைக் கொண்ட விதி அடிப்படையிலான சுருக்கம்; குறியீட்டுத் தொகுதிகளையும் URLs-ஐயும் பாதுகாக்கிறது", "compressionModeAggressive": "ஆக்கிரமிப்பு", "compressionModeAggressiveDesc": "அதிகபட்ச சேமிப்பிற்கான சுருக்கம் + கருவி முடிவு சுருக்கம் + முற்போக்கான வயதானது", "compressionModeUltra": "அல்ட்ரா", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "ஒவ்வொரு வயதான அடுக்கிலும் வைக்கப்பட்டுள்ள சமீபத்திய செய்திகளின் எண்ணிக்கை (அதிகமானது = மேலும் பாதுகாக்கப்பட்டது)", "compressionToolStrategies": "கருவி முடிவு உத்திகள்", "compressionToolStrategiesDesc": "வெவ்வேறு கருவி முடிவு வகைகளுக்கான சுருக்க உத்திகளை நிலைமாற்று", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "பொது அமைப்புகள்", + "compressionAutoTrigger": "தானியங்கு இயக்க வரம்பு", + "compressionCacheTTL": "தற்காலிக சேமிப்பு TTL", + "compressionPreserveSystem": "கணினித் தூண்டுரையைப் பாதுகாத்தல்", "compressionPreserveSystemAlways": "எப்போதும்", "compressionPreserveSystemWhenNoCache": "கேச் இல்லாதபோது", "compressionPreserveSystemNever": "ஒருபோதும் இல்லை", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "சேமிக்கப்பட்டது", "compressionExclusionsCount": "{count, plural, one {# விலக்கு} other {# விலக்குகள்}} கட்டமைக்கப்பட்டது", "compressionExclusionsEmpty": "எந்த விதிவிலக்குகளும் அமைக்கப்படவில்லை — ஒவ்வொரு மாதிரியும்/எண்ட்பாயிண்டும் சுருக்கத்திற்கு உரியதாக உள்ளது (இயல்பான நடத்தை).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman இயந்திர உள்ளமைவு", + "compressionCavemanConfigDesc": "விதி அடிப்படையிலான சுருக்க இயந்திரத்தை நுணுக்கமாகச் சரிசெய்யவும்", "compressionCavemanPanelHint": "இதன் ஆன்/ஆஃப் மற்றும் நிலை பேனலில் அமைக்கப்பட்டுள்ளது:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "செய்திப் பங்குகளைச் சுருக்கவும்", + "compressionRoleUser": "பயனர்", + "compressionRoleAssistant": "உதவியாளர்", + "compressionRoleSystem": "அமைப்பு", + "compressionMinLength": "குறைந்தபட்சச் செய்தி நீளம்", + "compressionSkipRules": "சுருக்க விதிகளைத் தவிர்க்கவும்", + "compressionSkipRulesDesc": "சுருக்கத்தின்போது விதிகளைத் தவிர்க்க அவற்றைக் கிளிக் செய்யவும்", + "compressionPreservePatterns": "வடிவங்களைப் பாதுகாக்கவும்", + "compressionPreservePatternsDesc": "ஒருபோதும் சுருக்கப்படாத Regex வடிவங்கள் (ஒரு வரிக்கு ஒன்று)", + "compressionLogTitle": "சுருக்கப் பதிவு", + "compressionLogEmpty": "இதுவரை சுருக்கப்பட்ட கோரிக்கைகள் எதுவுமில்லை. சுருக்கம் இயக்கப்பட்ட நிலையில் கோரிக்கைகள் செயலாக்கப்படும்போது சுருக்கப் புள்ளிவிவரங்கள் இங்கே தோன்றும்.", "minutes": "நிமிடங்கள்", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "கட்டளைகளை அறிந்து கருவி வெளியீட்டை வடிகட்டுதல்", + "compressionModeCodexResponses": "Responses கருவி வெளியீடு", + "compressionModeCodexResponsesDesc": "தகுதியான shell, patch, search, build மற்றும் JSON வெளியீடுகளுக்கான கவனமான சுருக்கம்", + "compressionModeStacked": "அடுக்கப்பட்டது", + "compressionModeStackedDesc": "RTK கருவி-வெளியீட்டு வடிகட்டலைத் தொடர்ந்து Caveman செய்திச் சுருக்கம்", + "qdrantTitle": "Qdrant (வெக்டர் நினைவகம்)", + "qdrantDesc": "விருப்பத்தேர்வு. விரைவான மீட்டெடுப்புக்காகச் சொற்பொருள் நினைவுகளை வெளிப்புற வெக்டர் தரவுத்தளத்தில் அட்டவணைப்படுத்துகிறது.", + "qdrantStatusActive": "செயலில் உள்ளது", + "qdrantStatusError": "பிழை", + "qdrantStatusDisabled": "முடக்கப்பட்டது", + "qdrantEnable": "Qdrant-ஐ இயக்கவும்", + "qdrantEnableDesc": "இயக்கப்பட்டிருக்கும்போது, சொற்பொருள்/கலப்பு உத்தியானது நினைவுகளை மீட்டெடுக்க Qdrant-ஐப் பயன்படுத்தலாம்.", + "qdrantTesting": "சோதிக்கப்படுகிறது...", + "qdrantTestConnection": "இணைப்பைச் சோதிக்கவும்", + "qdrantSaved": "உள்ளமைவு சேமிக்கப்பட்டது", + "qdrantSaveError": "உள்ளமைவைச் சேமிக்க முடியவில்லை", + "qdrantHostHint": "போர்ட் இல்லாமல். எடுத்துக்காட்டு: 127.0.0.1 அல்லது http://qdrant", + "qdrantPort": "போர்ட்", + "qdrantPortHint": "Qdrant இயல்புநிலை: 6333", + "qdrantCollectionHint": "நினைவுப் புள்ளிகள் சேமிக்கப்படும் இடம்.", + "qdrantEmbeddingModel": "Embedding மாதிரி", + "qdrantHelpTitle": "விரைவு அமைவு உதவி", + "qdrantHelpQuickTitle": "விரைவு அமைவு (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. ஹோஸ்ட்: Qdrant IP/URL, போர்ட்: 6333, தொகுப்பு: omniroute_memory.", + "qdrantHelpStep2": "2. nvidia/llama-nemotron-embed-vl-1b-v2:free-ஐப் பயன்படுத்தினால், தொகுப்புப் பரிமாணமாக 2048-ஐப் பயன்படுத்தவும்.", + "qdrantHelpStep3": "3. மாதிரிப் புலம்: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. சேமித்து, இணைப்பைச் சோதித்த பின்னர் தேடலைச் சோதிக்கவும்.", + "qdrantEmbeddingQuickSelect": "கண்டறியப்பட்ட மாதிரிகளிலிருந்து விரைவாகத் தேர்ந்தெடுக்கவும்...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "வடிவம்: provider/model. வழங்குநர் சான்று உள்ளமைக்கப்பட்டிருக்க வேண்டும்.", + "qdrantApiKeyPlaceholderKeep": "(தற்போதைய விசையைத் தக்கவைக்க காலியாக விடவும்)", + "qdrantApiKeyPlaceholderOptional": "(பயன்படுத்தவில்லை என்றால் காலியாக விடவும்)", + "qdrantSaveHint": "குறிப்பு: host/port/collection/model-ஐத் திருத்தி, சேமி என்பதைக் கிளிக் செய்யவும். API விசை விருப்பத்திற்குரியது.", + "qdrantSearchTestTitle": "தேடல் சோதனை", + "qdrantSearchTestDesc": "Embedding-ஐ உருவாக்கி Qdrant-இல் தேடுகிறது.", + "qdrantSearchPlaceholder": "எடுத்துக்காட்டு: பயனர் விருப்பத்தேர்வுகள், வரலாறு போன்றவை", + "qdrantNoResults": "முடிவுகள் இல்லை (அல்லது Qdrant உள்ளமைக்கப்படவில்லை).", + "qdrantCleanupTitle": "தக்கவைப்பும் சுத்தப்படுத்தலும்", + "qdrantCleanupDesc": "இதன் அடிப்படையில் காலாவதியான மற்றும் பழைய புள்ளிகளை அகற்றுகிறது", + "searching": "தேடுகிறது...", + "cleaning": "சுத்தப்படுத்துகிறது...", + "cleanNow": "இப்போது சுத்தப்படுத்து", "optional": "விருப்பமானது", "current": "தற்போதைய", "remove": "அகற்று", @@ -7600,19 +7603,19 @@ "resilienceScope": "நோக்கம்:", "resilienceTrigger": "தூண்டுதல்:", "resilienceEffect": "விளைவு:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "கோரிக்கை வரிசை மற்றும் வீதம்", + "resilienceAutoEnableApiKeyProviders": "API-key வழங்குநர்களுக்கு தானாக இயக்கவும்", + "resilienceRequestsPerMinute": "நிமிடத்திற்கு கோரிக்கைகள்", + "resilienceMinTimeBetweenRequests": "கோரிக்கைகளுக்கு இடையிலான குறைந்தபட்ச நேரம்", + "resilienceConcurrentRequests": "ஒரே நேரக் கோரிக்கைகள்", + "resilienceConnectionScopeConcurrentRequests": "ஒவ்வொரு இணைப்பு/ஒதுக்கீட்டு வரம்பிற்குமான ஒரே நேரக் கோரிக்கைகள்", + "resilienceGlobalConcurrentRequests": "உலகளாவிய ஒரே நேர upstream கோரிக்கைகள் (0 = முடக்கப்பட்டது)", "resilienceMaxQueueWaitTime": "அதிகபட்ச வரிசையில் காத்திருக்கும் நேரம்", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "அடிப்படை காத்திருப்பு நேரம்", + "resilienceUseUpstreamRetryHints": "upstream மறுமுயற்சிக் குறிப்புகளைப் பயன்படுத்தவும்", + "resilienceDefaultPerProvider": "இயல்புநிலை (ஒவ்வொரு வழங்குநருக்கும்)", + "resilienceAlwaysOn": "எப்போதும் இயக்கத்தில்", + "resilienceAlwaysOff": "எப்போதும் முடக்கத்தில்", "routingRemoveEntry": "உள்ளீட்டை அகற்று", "routingNeedlesSubstrings": "ஊசிகள் (பொருந்தும் துணைச்சரங்கள்)", "routingCaseSensitive": "கேஸ் சென்சிட்டிவ்", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "பரித்தெடுக்கப்பட்ட விளக்கம் அசல் கோரிக்கையில் மீண்டும் புகுத்தப்படுவதற்கு முன்பு பார்வை மாதிரிக்கு (vision model) அனுப்பப்படும்.", "visionBridgeTimeoutMs": "நேரம் முடிந்தது (மிவி)", "visionBridgeMaxImagesPerRequest": "ஒரு கோரிக்கைக்கு அதிகபட்ச படங்கள்", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "அதிகபட்ச backoff படிகள்", + "resilienceProviderBreakerTitle": "ஒவ்வொரு வழங்குநருக்குமான Circuit Breaker", + "resilienceFailureThreshold": "தோல்வி வரம்பு", + "resilienceDegradationThreshold": "செயல்திறன் சிதைவு வரம்பு", "resilienceResetTimeout": "காலாவதியை மீட்டமைக்கவும்", "resilienceFailureThresholdLabel": "தோல்வி வரம்பு", "resilienceResetTimeoutLabel": "காலாவதியை மீட்டமைக்கவும்", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "இணைப்பு காத்திருப்பு நேரம்", "resilienceUseUpstreamRetryHintsLabel": "அப்ஸ்ட்ரீம் மீண்டும் முயற்சி குறிப்புகளைப் பயன்படுத்தவும்", "resilienceUseUpstream429BreakerLabel": "அப்ஸ்ட்ரீம் 429 குறிப்புகளைப் பயன்படுத்தவும் (பிரேக்கர்)", "resilienceMaxBackoffStepsLabel": "அதிகபட்ச பின்னடைவு படிகள்", "resilienceYes": "ஆம்", "resilienceNo": "இல்லை", - "resilienceDefault": "Default", + "resilienceDefault": "இயல்புநிலை", "storageDatabaseBackupRetention": "தரவுத்தள காப்புப் பிரதி வைத்திருத்தல்", "storageDatabaseBackups": "தரவுத்தள காப்புப்பிரதிகள்", "storageBackupRetentionDescription": "தானியங்கி SQLite காப்புப்பிரதிகள் இதில் சேமிக்கப்படுகின்றன", @@ -7729,57 +7732,61 @@ "storageDatabaseStatistics": "தரவுத்தள புள்ளிவிவரங்கள்", "storageIntegrityNotChecked": "சரிபார்க்கப்படவில்லை", "backupRetentionSaved": "காப்புப்பிரதி தக்கவைப்பு சேமிக்கப்பட்டது.", - "backupRetentionSaveFailed": "Failed to save backup retention", - "backupCleanupSuccess": "Deleted {backups} backup set(s) and {files} file(s).", - "backupCleanupFailed": "Failed to clean database backups", - "purgeQuotaSnapshotsSuccess": "Purged {count} quota snapshots", - "purgeQuotaSnapshotsFailed": "Failed to purge quota snapshots", - "purgeCallLogsSuccess": "Purged {count} call logs", - "purgeCallLogsFailed": "Failed to purge call logs", - "purgeDetailedLogsSuccess": "Purged {count} detailed logs", - "purgeDetailedLogsFailed": "Failed to purge detailed logs", - "vacuumCompleted": "VACUUM completed", - "vacuumFailed": "VACUUM failed", - "jsonExportFailed": "JSON export failed", - "invalidJsonFileType": "Invalid file type. Only .json files are allowed.", - "legacyJsonImportSuccess": "Legacy JSON imported successfully!", - "jsonImportFailed": "Failed to import JSON", - "jsonImportError": "Error during JSON import", + "backupRetentionSaveFailed": "காப்புப்பிரதி தக்கவைப்பைச் சேமிக்க முடியவில்லை", + "backupCleanupSuccess": "{backups} காப்புப்பிரதித் தொகுதி(கள்) மற்றும் {files} கோப்பு(கள்) நீக்கப்பட்டன.", + "backupCleanupFailed": "தரவுத்தளக் காப்புப்பிரதிகளைச் சுத்தப்படுத்த முடியவில்லை", + "purgeQuotaSnapshotsSuccess": "{count} ஒதுக்கீட்டு snapshot-கள் அகற்றப்பட்டன", + "purgeQuotaSnapshotsFailed": "ஒதுக்கீட்டு snapshot-களை அகற்ற முடியவில்லை", + "purgeCallLogsSuccess": "{count} அழைப்புப் பதிவுகள் அகற்றப்பட்டன", + "purgeCallLogsFailed": "அழைப்புப் பதிவுகளை அகற்ற முடியவில்லை", + "purgeDetailedLogsSuccess": "{count} விரிவான பதிவுகள் அகற்றப்பட்டன", + "purgeDetailedLogsFailed": "விரிவான பதிவுகளை முழுமையாக நீக்க முடியவில்லை", + "vacuumCompleted": "VACUUM முடிந்தது", + "vacuumFailed": "VACUUM தோல்வியடைந்தது", + "jsonExportFailed": "JSON ஏற்றுமதி தோல்வியடைந்தது", + "invalidJsonFileType": "தவறான கோப்பு வகை. .json கோப்புகள் மட்டுமே அனுமதிக்கப்படுகின்றன.", + "legacyJsonImportSuccess": "பழைய JSON வெற்றிகரமாக இறக்குமதி செய்யப்பட்டது!", + "jsonImportFailed": "JSON-ஐ இறக்குமதி செய்ய முடியவில்லை", + "jsonImportError": "JSON இறக்குமதியின்போது பிழை ஏற்பட்டது", + "jsonImportAuthRequired": "பழைய JSON உள்ளமைவை இறக்குமதி செய்ய அங்கீகாரம் தேவை. உள்நுழையவும் அல்லது முதலில் அமைப்பை நிறைவு செய்யவும்.", + "databaseSettingsAuthRequiredTitle": "அங்கீகாரம் தேவை", + "databaseSettingsAuthRequiredBody": "தரவுத்தள அமைப்புகளும் JSON இறக்குமதியும் அங்கீகரிக்கப்பட்ட நிர்வாகிக்கு மட்டுமே கிடைக்கும். அவற்றைப் பார்த்துத் திருத்த, உள்நுழையவும் அல்லது அமைப்பை நிறைவு செய்யவும்.", + "databaseSettingsAuthRequiredCta": "உள்நுழைக", "storagePurgeData": "சுத்திகரிப்பு தரவு", - "storagePurgeDataDesc": "Immediately delete all records without applying retention checks. Use with caution.", - "storageRetentionCleanup": "Retention Settings", - "storageRetentionCleanupDesc": "Configure operational record retention and database backup cleanup.", - "retentionCallDays": "Call {count}d", - "retentionAppDays": "App {count}d", - "retentionRows": "{count} rows", + "storagePurgeDataDesc": "தக்கவைப்பு சரிபார்ப்புகளைப் பயன்படுத்தாமல் அனைத்துப் பதிவுகளையும் உடனடியாக நீக்கவும். எச்சரிக்கையுடன் பயன்படுத்தவும்.", + "storageRetentionCleanup": "தக்கவைப்பு அமைப்புகள்", + "storageRetentionCleanupDesc": "செயல்பாட்டுப் பதிவுகளின் தக்கவைப்பையும் தரவுத்தளக் காப்புப்பிரதி சுத்திகரிப்பையும் உள்ளமைக்கவும்.", + "retentionCallDays": "அழைப்பு {count} நாள்", + "retentionAppDays": "செயலி {count} நாள்", + "retentionRows": "{count} வரிசைகள்", "retentionQuotaSnapshots": "ஒதுக்கீடு ஸ்னாப்ஷாட்கள் (நாட்கள்)", - "retentionCompressionAnalytics": "Compression Analytics (days)", + "retentionCompressionAnalytics": "சுருக்கப் பகுப்பாய்வு (நாட்கள்)", "retentionMcpAudit": "MCP தணிக்கை (நாட்கள்)", "retentionA2aEvents": "A2A நிகழ்வுகள் (நாட்கள்)", "retentionCallLogs": "அழைப்பு பதிவுகள் (நாட்கள்)", "retentionUsageHistory": "பயன்பாட்டு வரலாறு (நாட்கள்)", "retentionMemoryEntries": "நினைவக உள்ளீடுகள் (நாட்கள்)", - "retentionXpAuditLog": "XP Audit Log (days)", - "saveRetentionSettings": "Save retention settings", + "retentionXpAuditLog": "XP தணிக்கைப் பதிவு (நாட்கள்)", + "saveRetentionSettings": "தக்கவைப்பு அமைப்புகளைச் சேமிக்கவும்", "storageAutoVacuumMode": "தானியங்கு வெற்றிட பயன்முறை", "storageScheduledVacuum": "திட்டமிடப்பட்ட வெற்றிடம்", "storageVacuumHour": "வெற்றிட நேரம் (0-23)", "storagePageSize": "பக்க அளவு (பைட்டுகள்)", - "storageOptimizationSettings": "Optimization Settings", - "storageJournalModeNone": "None", - "storageJournalModeFull": "Full", - "storageJournalModeIncremental": "Incremental", - "storageVacuumNever": "Never", - "storageVacuumDaily": "Daily", - "storageVacuumWeekly": "Weekly", - "storageVacuumMonthly": "Monthly", - "storageCacheSizeKb": "Cache Size (KB)", - "storageOptimizeOnStartup": "Optimize on Startup", - "storageSaveOptimization": "Save Optimization Settings", - "storageCompressionAggregation": "Compression & Aggregation Settings", - "storageEnableAggregation": "Enable Data Aggregation", - "storageRawDataRetention": "Raw Data Retention (days)", - "storageGranularity": "Granularity", + "storageOptimizationSettings": "மேம்படுத்தல் அமைப்புகள்", + "storageJournalModeNone": "எதுவுமில்லை", + "storageJournalModeFull": "முழுமையானது", + "storageJournalModeIncremental": "படிப்படியானது", + "storageVacuumNever": "ஒருபோதும் இல்லை", + "storageVacuumDaily": "தினசரி", + "storageVacuumWeekly": "வாராந்திரம்", + "storageVacuumMonthly": "மாதாந்திரம்", + "storageCacheSizeKb": "தற்காலிக சேமிப்பக அளவு (KB)", + "storageOptimizeOnStartup": "தொடக்கத்தில் மேம்படுத்து", + "storageSaveOptimization": "மேம்படுத்தல் அமைப்புகளைச் சேமிக்கவும்", + "storageCompressionAggregation": "சுருக்கம் மற்றும் திரட்டல் அமைப்புகள்", + "storageEnableAggregation": "தரவுத் திரட்டலை இயக்கவும்", + "storageRawDataRetention": "மூலத் தரவுத் தக்கவைப்பு (நாட்கள்)", + "storageGranularity": "நுணுக்கநிலை", "storageHourly": "மணிநேரம்", "storageDaily": "தினசரி", "storageWeekly": "வாராந்திர", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "முறை: {mode}", "compressionAdaptiveOff": "தகவமைப்பு சூழல் பட்ஜெட்: ஆஃப் (பழைய தானியங்கு-தூண்டுதல்)", "compressionAdaptiveTarget": "தகவமைப்பு ({mode}, கொள்கை: {policy}) — இலக்கு ≈ {target, number} டோக்கன்கள் ({contextLimit, number}-டோக்கன் சாளரத்திற்கு)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "தகவல் சூழலுக்கேற்ப மாறும் பட்ஜெட்", + "compressionAdaptiveModeOff": "முடக்கம் (பழைய தானியங்குத் தூண்டல்)", + "compressionAdaptiveModeFloor": "குறைந்தபட்சம் (எப்போதும் பொருந்துவதை உறுதிசெய்)", + "compressionAdaptiveModeReplace": "தானியங்குத் தூண்டலை மாற்றியமை", + "compressionAdaptivePolicy": "பட்ஜெட் கொள்கை", + "compressionAdaptivePolicyReserve": "வெளியீட்டுக்காக ஒதுக்கு", + "compressionAdaptivePolicyPercentage": "சாளரத்தின் சதவீதம்", + "compressionAdaptivePolicyAbsolute": "நிலையான டோக்கன் பட்ஜெட்", "compressionOutputStylesDescription": "வழங்குநரின் வெளியீட்டை மீண்டும் எழுதாமல் பதில்-வடிவமைப்பு வழிமுறைகளை உட்செலுத்தவும். தாராளமாக இணைக்கவும்.", "mcpAccessibilityDescription": "MCP கருவி வெளியீடுகளை வரம்பிற்குள் வைக்கிறது (தனிச் சேமிப்பகம்).", "compressionStylesTileSummary": "{tokens, number} டோக்கன்கள் சேமிக்கப்பட்டன · {runs, plural, one {# இயக்கம் வடிவமைக்கப்பட்டது} other {# இயக்கங்கள் வடிவமைக்கப்பட்டன}}", @@ -7866,8 +7873,8 @@ "description": "கட்டளை-வெளியீடு வடிகட்டுதல்." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses கருவி வெளியீடு", + "description": "ஆதரிக்கப்படும் Responses கருவி வெளியீடுகளுக்கான பாதுகாப்பான சுருக்கம்." }, "headroom": { "label": "ஹெட்ரூம்", @@ -7908,12 +7915,12 @@ "description": "YAGNI ஏணி: மிகச்சிறிய வேலை செய்யும் மாற்றம், கோரப்படாத சுருக்கங்கள் இல்லை." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (சோம்பேறி மூத்த டெவலப்பர்)", + "description": "சோம்பேறி மூத்த டெவலப்பர் ஒழுங்குமுறை: YAGNI படிக்கட்டில் ஏறுங்கள், மூலக் காரணத்தைச் சரிசெய்யுங்கள், செயல்படும் மிகச் சிறிய diff-ஐப் பயன்படுத்துங்கள்." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "எனக்கு ADHD உள்ளது (செயல் முதலில்)", + "description": "செயல்-முதல் வெளியீடு: அடுத்த செயலை முதலில் காட்டவும், படிகளுக்கு எண்களிடவும், ஒரே ஒரு உறுதியான அடுத்த படியை வழங்கவும், முன்னுரை வேண்டாம்." }, "terse-cjk": { "label": "சுருக்கமான CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI ஃபால்பேக்", "cliproxyapiEnableFallback": "CLIProxyAPI ஃபால்பேக்கை இயக்கவும்", "cliproxyapiUrl": "CLIProxyAPI URL", + "headroomProxyTitle": "Headroom ப்ராக்ஸி", + "headroomProxyDesc": "விருப்பத்தேர்வான Headroom டோக்கன்-சேமிப்பு ப்ராக்ஸியின் URL. காலியாக இருந்தால் HEADROOM_URL அல்லது http://localhost:8787 பயன்படுத்தப்படும்.", + "headroomProxyUrl": "Headroom URL", + "headroomProxyUrlHint": "லூப்பேக் URL-களை இந்தப் பக்கத்திலிருந்து தொடங்கலாம். வெளிப்புற URL-கள் சோதிக்கப்படுவது மட்டுமே.", + "headroomProxySave": "சேமி", + "headroomProxyStart": "தொடங்கு", + "headroomProxyStop": "நிறுத்து", + "headroomProxyExternalHint": "இந்த URL லூப்பேக் அல்ல, எனவே OmniRoute உள்ளூர் CLI-ஐத் தொடங்காது.", "cliproxyapiStatus": "CLIProxyAPI நிலை", "cliproxyapiNotDetected": "கண்டறியப்படவில்லை", "cliproxyapiImportAuthTitle": "CLIProxyAPI இலிருந்து கணக்குகளை இறக்குமதி செய்", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "உலகளவில் சேவை_tier=OpenAI கோடெக்ஸ் கோரிக்கைகளுக்கு முன்னுரிமை.", "codexFastTierHint": "இயக்கப்படும் போது, OmniRoute ஆனது, ஏற்கனவே ஒரு அடுக்கைக் குறிப்பிடாத இணைப்புகளுக்கான வெளிச்செல்லும் கோடெக்ஸ் கோரிக்கைகளுக்கு service_tier=முன்னுரிமை சேர்க்கிறது. முன்னுரிமை அடுக்குக்கு OpenAI Enterprise API விசை அல்லது ChatGPT-auth கோடெக்ஸ் பாதை தேவை; மற்ற முக்கிய வகைகள் OpenAI இலிருந்து அடுக்கு தொடர்பான பிழையைப் பெறும். கோடெக்ஸ் வழங்குநர் பக்கத்தில் ஒவ்வொரு இணைப்பு அமைப்புகளும் முன்னுரிமை பெறுகின்றன.", "codexFastTierSaveError": "கோடெக்ஸ் ஃபாஸ்ட் டையர் அமைப்பைப் புதுப்பிக்க முடியவில்லை", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex ஒதுக்கீட்டின் தானியங்கி பிங்", + "codexAutoPingDesc": "ஒவ்வொரு இணைப்புக்கும் விருப்பத்தேர்வு: Codex அமர்வு சாளரம் மீட்டமைக்கப்பட்டவுடன் ஒரு மிகச் சிறிய கோரிக்கையை அனுப்பும்; இதனால் தேவைப்படும் நேரத்தில் அது செயலற்ற நிலையில் இருக்காது.", + "codexAutoPingWarning": "ஒவ்வொரு பிங்கிலும் உண்மையான Codex ஒதுக்கீட்டில் ஒரு சிறிய அளவு பயன்படுத்தப்படும். இயல்பாக முடக்கப்பட்டுள்ளது — நீங்கள் செயலில் சார்ந்திருக்கும் இணைப்புகளுக்கு மட்டும் இயக்கவும்.", + "codexAutoPingSaveError": "Codex தானியங்கி பிங் அமைப்பைப் புதுப்பிக்க முடியவில்லை", + "codexAutoPingToggleAria": "{connection} இணைப்பிற்கான Codex ஒதுக்கீட்டுத் தானியங்கி பிங்கை மாற்று", "codexFastTierTierLabel": "சேவை அடுக்கு", "codexFastTierTierPriority": "முன்னுரிமை", "codexFastTierTierFlex": "ஃப்ளெக்ஸ்", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "உலகளாவிய சோதனை இடைவெளி", "resilienceCredentialHealthEveryMinutes": "ஒவ்வொரு {minutes} நிமிடமும்", "resilienceCredentialHealthHint": "0 பின்னணி ஸ்கேனை அணைக்கிறது (அதிகபட்சம் 1440 நிமிடம் = 24 மணி). சொந்த உடல்நலச் சோதனை மதிப்புள்ள இணைப்புகள் இந்த உலகளாவிய இயல்புநிலையைப் புறக்கணிக்கின்றன; ஒரு இணைப்பில் 0 உலகளாவிய ஸ்கேன் இயங்கினாலும் அதை விலக்குகிறது.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "{provider} வழங்குநருக்கு எப்போதும் இயக்கப்பட்டிருக்கும் — OAuth கணக்குப் பாதுகாப்பிற்கு இது அவசியம்; இதை முடக்க முடியாது.", + "forcedFingerprintBadge": "அவசியம்", "sessionAffinityTitle": "அமர்வு அஃபினிட்டி", "sessionAffinityDesc": "எந்தவொரு வழங்குநருக்கும், ஒரு உரையாடலை இத்தனை வினாடிகளுக்கு அதே கணக்கில் வைத்திருக்கும். 0 இதை முடக்கும்.", "sessionAffinityTtl": "Affinity TTL (வினாடிகள்)", @@ -8145,7 +8160,7 @@ "vercelRelayButton": "Vercel Relay-ஐ வரிசைப்படுத்து", "vercelRelayModalTitle": "Vercel Relay-ஐ வரிசைப்படுத்து", "vercelRelayWarning": "எச்சரிக்கை: Vercel deployment token தேவை. இந்த டோக்கன் சர்வர்லெஸ் ரிலேவை உருவாக்க மட்டுமே பயன்படுத்தப்படும், மேலும் OmniRoute-ஆல் ஒருபோதும் சேமிக்கப்படாது.", - "vercelRelayTokenLabel": "Vercel Access Token", + "vercelRelayTokenLabel": "Vercel அணுகல் டோக்கன்", "vercelRelayProjectNameLabel": "Vercel திட்டப் பெயர்", "vercelRelayFreeTierNote": "ரிலேக்கள் என்பவை உள்ளூர் நெட்வொர்க்/பிராந்திய வரம்புகளைத் தவிர்ப்பதற்காக Vercel-இன் இலவச அடுக்கில் வரிசைப்படுத்தப்பட்ட இலகுரக ப்ராக்ஸி இறுதிப்புள்ளிகள் ஆகும்.", "vercelRelayDeploying": "வரிசைப்படுத்துகிறது...", @@ -8154,7 +8169,7 @@ "denoRelayButton": "Deno Relay-ஐ வரிசைப்படுத்து", "denoRelayModalTitle": "Deno Relay-ஐ வரிசைப்படுத்து", "denoRelayWarning": "எச்சரிக்கை: Deno Deploy organization token தேவை. இந்த டோக்கன் ரிலே செயலியை உருவாக்க மட்டுமே பயன்படுத்தப்படும், மேலும் OmniRoute-ஆல் ஒருபோதும் சேமிக்கப்படாது.", - "denoRelayTokenLabel": "Deno Deploy Organization Token", + "denoRelayTokenLabel": "Deno Deploy நிறுவன டோக்கன்", "denoRelayOrgDomainLabel": "நிறுவன டொமைன்", "denoRelayProjectNameLabel": "Deno செயலி பெயர்", "denoRelayFreeTierNote": "Deno Deploy v2 உலகளாவிய எட்ஜ் நெட்வொர்க்கில் இயங்குகிறது. இலவச அடுக்கு: மாதத்திற்கு 1M கோரிக்கைகள் & 100GiB வெளிச்செல்லும் டிராஃபிக், கோரிக்கைக்கான CPU வரம்புகள் இல்லை, 20 செயலில் உள்ள செயலிகள் & 50 தனிப்பயன் டொமைன்கள் வரை.", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "கூல்டவுன் அதிகரிப்பது நிறுத்தப்படுவதற்கு முந்தைய அதிகபட்ச பேக்ஆஃப் படிகளின் எண்ணிக்கை. பெரும்பாலான உள்ளமைவுகளில் Max Cooldown வரம்பு முதலில் எட்டப்படுகிறது, இதனால் Max Cooldown உயர்த்தப்படும்போது இது ஒரு பாதுகாப்பு உச்சவரம்பாக செயல்படுகிறது.", "disableSessionStickiness": "செஷன் ஸ்டிக்கினெஸை முடக்கு", "disableSessionStickinessDesc": "முதல்-செய்தி ஹாஷ் மூலம் முழு உரையாடலையும் ஒரே இணைப்பில் நிலைநிறுத்துவதற்குப் பதிலாக, Round-robin மற்றும் random சேர்க்கைகள் ஒவ்வொரு கோரிக்கையிலும் வேறுபட்ட இணைப்புக்கு மாறுகின்றன. பல-முறை அரட்டைகளுக்கான prompt-cache ஹிட்களைப் பாதுகாக்க இதை முடக்கியே வைக்கவும். Per-combo மேலெழுதல்களுக்கு முன்னுரிமை உண்டு.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Prompt-cache இடச்சார்பு வழிப்படுத்தல்", + "promptCacheAffinityDesc": "ஆரோக்கிய நிலை மற்றும் ஒதுக்கீட்டு failover-ஐப் பாதுகாத்தபடி, பொருந்தும் prompt-cache விசைகளுக்கு அதே வழங்குநர் கணக்கை விரும்பிப் பயன்படுத்தவும்.", + "reasoningTokenBuffer": "Reasoning டோக்கன் இடையகம்", + "reasoningTokenBufferDesc": "அறியப்பட்ட வெளியீட்டு வரம்பிற்குள் முழு இடையகமும் பொருந்தும்போது மட்டும், அறியப்பட்ட reasoning மாடல்களுக்காக combo வழிப்படுத்தல் max_tokens கூடுதல் இடத்தைச் சேர்க்க அனுமதிக்கவும்.", + "zeroLatencyOptimizations": "பூஜ்ஜிய-தாமத மேம்படுத்தல்கள்", + "zeroLatencyOptimizationsDesc": "Hedging, முன்கணிப்பு TTFT தவிர்ப்புகள் மற்றும் முன்செயல்முறை fallback சுருக்கம் ஆகியவற்றைத் தேர்வுசெய்து இயக்கவும். இந்தத் தாமத அம்சங்கள் இலக்குகளுடன் போட்டியிடுவதையோ fallback கோரிக்கைகளைச் சுருக்குவதையோ தடுக்க, இதை முடக்கியே வைக்கவும்.", "credentialRedaction": "கிரெடென்ஷியல் மறைத்தல்", "credentialRedactionDesc": "வழங்குநர்களுக்கு அனுப்பப்படும் சூழல் மற்றும் பதில்களில் இருந்து API விசைகள், டோக்கன்கள் மற்றும் ரகசியங்களை மறைக்கவும்.", "enableCredentialRedaction": "கிரெடென்ஷியல் மறைத்தலை இயக்கு", "enableCredentialRedactionDesc": "செய்திகள், கருவி அழைப்புகள் மற்றும் பதில்களில் இருந்து API விசைகள், டோக்கன்கள், தனிப்பட்ட விசைகள் மற்றும் JWT-களை நீக்குகிறது.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "தானியங்கி ஒத்திசைவு முடக்கப்பட்டுள்ளது", + "pricingAutoSyncEnabled": "தானியங்கி ஒத்திசைவு இயக்கப்பட்டுள்ளது", "modalityBridgeIntro": "பல்முறை உள்ளடக்கம் உரை மட்டும் மாதிரிகளை அடைவதற்கு முன் அதை உரையாக மாற்றவும். பார்வை, ஒலி மற்றும் வீடியோ பாலங்கள் கிடைக்கின்றன மற்றும் கட்டமைக்கலாம்.", "modalityBridgeVisionTab": "கண்ணோட்டம்", "modalityBridgeAudioTab": "ஆடியோ", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "ஆரோக்கியம்", "cliproxyapiPort": "போர்ட்", "qdrantHost": "விருந்தினர்", - "qdrantCollection": "கலெக்ஷன்", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "கலெக்ஷன்" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "RTK எஞ்சின்", + "description": "கருவி வெளியீடு, முனையப் பதிவுகள் மற்றும் உருவாக்க முடிவுகளுக்கான கட்டளை-அறிந்த சுருக்கம்.", + "enabled": "இயக்கப்பட்டது", + "intensity": "தீவிரம்", + "intensityMinimal": "குறைந்தபட்சம்", + "intensityStandard": "நிலையானது", + "intensityAggressive": "தீவிரமானது", + "toolResults": "கருவி முடிவுகள்", + "assistantMessages": "உதவியாளர் செய்திகள்", + "codeBlocks": "குறியீட்டுத் தொகுதிகள்", "filterCatalog": "வடிகட்டி பட்டியல்", "filterCatalogDesc": "வகையின்படி கிடைக்கும் வெளியீடு வடிப்பான்கள்", "guidedConfig": "கட்டமைப்பு", "guidedConfigDesc": "உங்கள் டெர்மினல் வெளியீட்டை RTK எவ்வாறு வடிகட்டுகிறது என்பதைச் சரிசெய்யவும்", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "அதிகபட்ச வரிகள்", + "maxChars": "அதிகபட்ச எழுத்துகள்", "deduplicateThreshold": "நகல் வாசல்", "customFilters": "தனிப்பயன் வடிப்பான்கள்", "detectedType": "கண்டறியப்பட்ட வகை", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "தோல்விகள்", "rawOutputAlways": "எப்போதும்", "rawOutputMaxBytes": "மூல வெளியீடு அதிகபட்ச பைட்டுகள்", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "வடிகட்டி சோதனை", + "pasteOutput": "வடிகட்டலைச் சோதிக்க கருவி வெளியீட்டை ஒட்டவும்...", "presetHigh": "ஆக்கிரமிப்பு", "presetLow": "ஒளி", "presetMaxChars": "அதிகபட்ச வெளியீட்டு எழுத்துக்கள்", "presetMaxLines": "அதிகபட்ச வெளியீட்டு கோடுகள்", "presetMedium": "தரநிலை", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "இயக்கு", + "result": "முடிவு", + "previewEmpty": "RTK வெளியீட்டை முன்னோட்டமிட ஒரு மாதிரியை இயக்கவும்.", + "detected": "கண்டறியப்பட்டது", "masterSwitchOffAlert": "Token Saver முதன்மை சுவிட்ச் OFF-ல் உள்ளது — Endpoint பக்கத்திலிருந்து நீங்கள் அதை இயக்கும் வரை இந்த அமைப்புகள் கோரிக்கைகளைப் பாதிக்காது.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "வடிகட்டப்பட்ட டோக்கன்கள்", + "filtersActive": "செயலில் உள்ள வடிகட்டிகள்", + "requests": "கோரிக்கைகள்", + "avgSavings": "சராசரி சேமிப்பு", "simpleMode": "எளிமையானது", "advancedMode": "மேம்பட்டது", "searchFilters": "வடிப்பான்களைத் தேடு...", @@ -8499,7 +8506,7 @@ "description": "வெளிப்படையான வரிசை எண்ணிக்கை குறிப்பான்களுடன் ஒரே மாதிரியான JSON அணிகளின் இழப்பற்ற அட்டவணை சுருக்கம்." }, "session-dedup": { - "name": "Session Dedup", + "name": "அமர்வு நகல்நீக்கம்", "description": "மீட்டெடுக்கக்கூடிய உள்ளடக்கக் குறிப்பான்களுடன் கூடிய Cross-turn பிளாக் நகல் நீக்கம்." }, "ccr": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "சுருக்கச் சேர்க்கைகள்", + "description": "வெவ்வேறு வழித்தடச் சூழல்களுக்கு எஞ்சின்கள் எவ்வாறு இணைக்கப்படுகின்றன என்பதை வரையறுக்கவும்.", + "createCombo": "சுருக்கச் சேர்க்கையை உருவாக்கு", + "editCombo": "திருத்து", + "deleteCombo": "நீக்கு", + "deleteConfirm": "இந்தச் சுருக்கச் சேர்க்கையை நீக்கவா?", + "pipeline": "செயலாக்கத் தொடர்", + "addStep": "படியைச் சேர்", + "removeStep": "அகற்று", + "name": "பெயர்", + "descriptionField": "விளக்கம்", + "languagePacks": "மொழித் தொகுப்புகள்", + "outputMode": "வெளியீட்டு முறை", + "assignToRouting": "வழித்தடச் சேர்க்கைகளுக்கு ஒதுக்கு", + "noAssignments": "வழித்தட சேர்க்கைகள் எதுவும் கிடைக்கவில்லை", + "default": "இயல்புநிலை", + "setAsDefault": "இயல்புநிலையாக அமை", + "save": "சேமி", + "cancel": "ரத்துசெய்", + "enabled": "இயக்கப்பட்டது", "loading": "ஏற்றப்படுகிறது…", "hubTitle": "சுருக்க மையம்", "hubDescription": "உலகளவில் எந்த சுருக்க சுயவிவரம் இயங்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "தற்போது Claude (Anthropic) க்கு மட்டுமே கிடைக்கிறது. இது ஒரு ஒப்படைக்கப்பட்ட பயன்முறையாகும்: வழங்குநர் சர்வர் பக்கத்தில் பழைய கருவி-பயன்பாட்டுத் தொகுதிகளை அழிக்கிறார் — நாங்கள் செய்தியை மீண்டும் எழுதுவதில்லை. இது பிற வழங்குநர்களைப் பாதிக்காது.", "namedCombos": "பெயரிடப்பட்ட சேர்க்கைகள்", "namedCombosDescription": "வெவ்வேறு பைப்லைன்களைச் சேமித்து, அவற்றை குறிப்பிட்ட ரூட்டிங் சேர்க்கைகளுக்கு ஒதுக்கவும்.", + "activeProfileMasterSwitchOffWarning": "முதன்மை \"Prompt Compression\" நிலைமாற்றி இயக்கப்படும் வரை கீழே உள்ள செயலில் உள்ள சுயவிவரம் இயங்காது.", + "activeProfileMasterSwitchOffCta": "Settings-இல் அதை இயக்கவும்", "comboNamePlaceholder": "சேர்க்கை பெயர்", "descriptionPlaceholder": "விளக்கம்", "nameRequired": "சேமிப்பதற்கு முன் சேர்க்கை பெயரை உள்ளிடவும்.", @@ -8674,9 +8683,7 @@ "languagePacksList": "மொழிப் பொதிகள்: {packs}", "dragToReorder": "படியை மறுவரிசைப்படுத்த இழுக்கவும்", "engine": "எஞ்சின்", - "intensity": "தீவிரம்", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "தீவிரம்" }, "compressionStudio": { "noRun": "சுருக்க இயக்கம் எதுவும் கிடைக்கவில்லை.", @@ -8705,7 +8712,7 @@ "run": "இயக்கு", "laneRejected": "நிராகரிக்கப்பட்டது: {reason}", "error": "பிழை", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "ஒருங்கிணைந்த பைப்லைன் முன்னோட்டம் தோல்வியடைந்தது: {reason}", "combinedFlow": "ஒருங்கிணைந்த ஓட்டம்", "eachLayer": "ஒவ்வொரு அடுக்கையும் தனித்தனியாக", "diff": "வேறுபாடு", @@ -8722,7 +8729,7 @@ "enterJudgeModel": "ஒரு நடுவர் மாதிரியை உள்ளிடவும்", "verifying": "சரிபார்க்கப்படுகிறது…", "verifyAll": "அனைத்தையும் சரிபார்", - "spent": "spent ${spent} / ${cap}", + "spent": "${cap} இல் ${spent} செலவிடப்பட்டது", "capReached": "வரம்பு எட்டப்பட்டது", "loadAb": "A/B ஐ ஏற்று", "engine": "இன்ஜின்", @@ -8780,27 +8787,27 @@ }, "enableTitle": "இயந்திரத்தை இயக்கு", "enableDescription": "அடுக்கில் கடைசியாக இயங்குகிறது (RTK/Caveman உரையைச் சுத்தப்படுத்திய பிறகு, OmniGlyph எஞ்சியிருப்பதை படங்களாக மாற்றுகிறது) மேலும் omniglyph பயன்முறை மூலமாகவும் தனித்து இயங்குகிறது. இது ஒரு முன்னோட்டமாகும், மேலும் இறுதி-முதல்-இறுதி சரிபார்ப்பு முடியும் வரை இயல்பாகவே முடக்கப்பட்டிருக்கும்.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "சுருக்கச் சுயவிவரம்", + "profileDescription": "இந்தச் சுயவிவரம் ஓர் உச்சவரம்பு, குறைந்தபட்ச வரம்பு அல்ல: கடுமையான சுயவிவரத்தை ஒவ்வொரு படிநிலை மீறல் அமைப்பாலும் மீண்டும் தளர்த்த முடியாது. இந்தக் குறியீட்டுத் தொகுப்பில் அளவிடப்பட்டது: coding-safe அல்லது balanced பயன்படுத்தும்போது, இதுவரை வரலாறு சேராத அமர்வு எதையும் சுருக்காது; ஏனெனில் இரண்டும் குறைந்தபட்ச எழுத்து எண்ணிக்கை வரம்பை உயர்த்தி, கணினி அறிவுறுத்தல், கருவி ஸ்கீமாக்கள் மற்றும் கருவி முடிவுகளை அசல் வடிவிலேயே வைத்திருக்கும்.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "தீவிரம் (இயல்புநிலை)", + "description": "வெளியிடப்பட்ட ரசீதுகள் அளவிட்ட கொள்கை. கணினி அறிவுறுத்தல், கருவி ஆவணங்கள் மற்றும் அடர்த்தியான வரலாற்றைப் படமாக்குகிறது." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "சமநிலை", + "description": "நேரடி நிலையை அசல் வடிவில் வைத்திருந்து, கடைசி 8 உரையாடல் சுற்றுகளைப் பாதுகாக்கிறது; பழைய முடிவுற்ற வரலாற்றை மட்டுமே சுருக்குகிறது." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "குறியீட்டிற்குப் பாதுகாப்பானது", + "description": "அதிகாரத் தகவல், கருவி ஸ்கீமாக்கள் மற்றும் நேரடி கருவி வெளியீட்டை அசல் வடிவில் வைத்திருந்து, கடைசி 12 உரையாடல் சுற்றுகளைப் பாதுகாக்கிறது. அமர்வில் வரலாறு சேரும் வரை எதையும் சுருக்காது." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "மாற்றமின்றி அனுப்புதல்", + "description": "மாற்றாமல் வழிப்படுத்துகிறது. இயந்திரம் தவிர்க்கப்பட்டு, கோரிக்கை எந்த மாற்றமுமின்றி அனுப்பப்படுகிறது." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph சுருக்கச் சுயவிவரத்தைத் தேர்ந்தெடுக்கவும்", "saved": "சேமிக்கப்பட்டது.", "saveFailed": "சேமிக்க முடியவில்லை.", "enableAria": "OmniGlyph இயந்திரத்தை இயக்கு", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "விதி அடிப்படையிலான செய்திச் சுருக்கம், மொழித் தொகுப்புகள், பகுப்பாய்வு மற்றும் வெளியீட்டு முறை கட்டுப்பாடுகள்.", "advancedConfig": "மேம்பட்ட கட்டமைப்பு", "advancedConfigDesc": "ஃபைன்-டியூன் சுருக்க நடத்தை", "aggressiveSettings": "ஆக்கிரமிப்பு அமைப்புகள்", "aggressiveSettingsDesc": "சாத்தியமான தர வர்த்தக பரிமாற்றங்களுடன் கூடிய அதிகபட்ச சுருக்கம்", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "கோரிக்கைகள்", + "tokensSaved": "சேமிக்கப்பட்ட டோக்கன்கள்", + "savingsPercent": "சேமிப்பு %", + "avgLatency": "சராசரி தாமதம்", + "languagePacks": "மொழித் தொகுப்புகள்", + "languagePacksDesc": "குறிப்பிட்ட மொழிகளுக்கான சுருக்க விதிகளை இயக்கவும்.", "labelAutoTrigger": "சூழல் மீறும்போது தானாக சுருக்கவும்", "labelCompressionRate": "சுருக்க வலிமை", "labelMaxTokens": "ஒரு செய்திக்கு இலக்கு டோக்கன்கள்", "labelMinLength": "குறைந்தபட்ச செய்தி நீளம்", "labelMinSavings": "சேமிக்க குறைந்தபட்ச டோக்கன்கள்", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "இயக்கப்பட்டது", + "autoDetect": "மொழியைத் தானாகக் கண்டறி", + "rulesCount": "{count} விதிகள்", "inputCompressionTitle": "உள்ளீட்டு சுருக்கம்", "inputCompressionDesc": "அரட்டை வரலாற்றை குறுகிய சொற்களுடன் மீண்டும் எழுதவும். உள்ளீட்டு டோக்கன்களை ~50% குறைக்கிறது.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "சுருக்கப் பகுப்பாய்வு", + "noAnalytics": "இதுவரை சுருக்கப் பகுப்பாய்வு எதுவும் இல்லை.", "masterDisabledWarning": "டோக்கன் சேவர் முதன்மை சுவிட்ச் ஆஃப் செய்யப்பட்டுள்ளது — சுருக்க அமைப்புகளில் இருந்து அதை ஆன் செய்யும் வரை அல்லது இங்கே மாற்றும் வரை இந்த அமைப்புகள் கோரிக்கைகளை பாதிக்காது.", "outputMode": "வெளியீட்டு முறை", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "வெளியீட்டு முறை", "quickSettings": "விரைவு அமைப்புகள்", "quickSettingsDesc": "தொடங்குவதற்கான அடிப்படை சுருக்க அமைப்புகள்", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "தானியங்கு-தெளிவு தவிர்ப்பு", + "bypassConditions": "தவிர்ப்பதற்கான நிபந்தனைகள்", "bypassConditionsList": "பாதுகாப்பு, மீளமுடியாத, தெளிவுபடுத்தல், ஒழுங்கு உணர்திறன்", "simpleMode": "எளிமையானது", "advancedMode": "மேம்பட்டது", @@ -8944,52 +8951,52 @@ "ultraSettings": "அல்ட்ரா அமைப்புகள்", "ultraSettingsDesc": "SLM-இயங்கும் சொற்பொருள் சுருக்கம்", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "சுருக்கமாகப் பதிலளிக்கவும். தொழில்நுட்பச் சொற்கள், code, errors, URLs மற்றும் identifiers ஆகியவற்றை மாற்றாமல் வைத்திருக்கவும்.", + "full": "சுருக்கமாகவும் செறிவாகவும் பதிலளிக்கவும். அனைத்து தொழில்நுட்ப உள்ளடக்கத்தையும் பாதுகாக்கவும்.", + "ultra": "பொதுவான தொழில்நுட்பச் சுருக்கங்களைப் பயன்படுத்தி மிகச் சுருக்கமாகப் பதிலளிக்கவும். துல்லியமான குறியீடுகளைப் பாதுகாக்கவும்." } }, "translator": { - "title": "Translator", - "metaTitle": "Translator Playground | OmniRoute", - "metaDescription": "Debug, test, and visualize API format translations between providers", - "playgroundTitle": "Translator Playground", - "playground": "Playground", - "realtime": "Real-Time Translation Activity", + "title": "மொழிபெயர்ப்பி", + "metaTitle": "மொழிபெயர்ப்பி பயிற்சிக்களம் | OmniRoute", + "metaDescription": "வழங்குநர்களுக்கிடையேயான API வடிவமைப்பு மொழிபெயர்ப்புகளைப் பிழைநீக்கி, சோதித்து, காட்சிப்படுத்தவும்", + "playgroundTitle": "மொழிபெயர்ப்பி பயிற்சிக்களம்", + "playground": "பயிற்சிக்களம்", + "realtime": "நிகழ்நேர மொழிபெயர்ப்புச் செயல்பாடு", "chatTester": "Chat Tester", - "testBench": "Test Bench", - "liveMonitor": "Live Monitor", - "modeDescriptionPlayground": "Paste any API request body and see how OmniRoute translates it between provider formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", - "modeDescriptionChatTester": "Send real chat requests through OmniRoute and inspect the full round-trip: input, translated request, provider response, and translated output.", - "modeDescriptionTestBench": "Run predefined scenarios and compare compatibility across providers and models.", - "modeDescriptionLiveMonitor": "Watch translation events in real time as requests flow through OmniRoute.", - "modeDescriptionFallback": "Debug, test, and visualize how OmniRoute translates API requests between providers.", - "recentTranslations": "Recent Translations", - "noTranslations": "No translations yet", - "source": "Source", - "target": "Target", - "time": "Time", + "testBench": "சோதனைக் களம்", + "liveMonitor": "நேரடிக் கண்காணிப்பு", + "modeDescriptionPlayground": "எந்தவொரு API கோரிக்கை உட்பகுதியையும் ஒட்டி, அதை வழங்குநர் வடிவமைப்புகளுக்கிடையே (OpenAI ↔ Claude ↔ Gemini ↔ Responses API) OmniRoute எவ்வாறு மொழிபெயர்க்கிறது என்பதைப் பார்க்கவும்", + "modeDescriptionChatTester": "OmniRoute வழியாக உண்மையான அரட்டைக் கோரிக்கைகளை அனுப்பி, உள்ளீடு, மொழிபெயர்க்கப்பட்ட கோரிக்கை, வழங்குநர் பதில் மற்றும் மொழிபெயர்க்கப்பட்ட வெளியீடு உள்ளிட்ட முழுச் சுற்றுப்பயணத்தையும் ஆய்வு செய்யவும்.", + "modeDescriptionTestBench": "முன்வரையறுக்கப்பட்ட சூழல்களை இயக்கி, வழங்குநர்கள் மற்றும் மாதிரிகளுக்கிடையேயான இணக்கத்தன்மையை ஒப்பிடவும்.", + "modeDescriptionLiveMonitor": "கோரிக்கைகள் OmniRoute வழியாகச் செல்லும்போது மொழிபெயர்ப்பு நிகழ்வுகளை நிகழ்நேரத்தில் பார்க்கவும்.", + "modeDescriptionFallback": "வழங்குநர்களுக்கிடையே API கோரிக்கைகளை OmniRoute எவ்வாறு மொழிபெயர்க்கிறது என்பதைப் பிழைநீக்கி, சோதித்து, காட்சிப்படுத்தவும்.", + "recentTranslations": "சமீபத்திய மொழிபெயர்ப்புகள்", + "noTranslations": "இதுவரை மொழிபெயர்ப்புகள் இல்லை", + "source": "மூலம்", + "target": "இலக்கு", + "time": "நேரம்", "model": "Model", "status": "Status", - "latency": "Latency", - "totalTranslations": "Total Translations", - "successful": "Successful", - "errors": "Errors", - "avgLatency": "Avg Latency", + "latency": "தாமதம்", + "totalTranslations": "மொத்த மொழிபெயர்ப்புகள்", + "successful": "வெற்றியடைந்தவை", + "errors": "பிழைகள்", + "avgLatency": "சராசரி தாமதம்", "millisecondsShort": "{value}ms", "notAvailableSymbol": "—", - "liveAutoRefreshing": "Live — Auto-refreshing", - "paused": "Paused", - "eventsAppearHint": "Translation events appear here as requests flow through OmniRoute. Use any of these methods to generate events:", + "liveAutoRefreshing": "நேரலை — தானாகப் புதுப்பிக்கப்படுகிறது", + "paused": "இடைநிறுத்தப்பட்டது", + "eventsAppearHint": "கோரிக்கைகள் OmniRoute வழியாகச் செல்லும்போது மொழிபெயர்ப்பு நிகழ்வுகள் இங்கே தோன்றும். நிகழ்வுகளை உருவாக்க இந்த முறைகளில் ஏதேனும் ஒன்றைப் பயன்படுத்தவும்:", "chatTesterTab": "Chat Tester", "testBenchTab": "Test Bench", - "externalApiCalls": "External API calls", - "ideCliIntegrations": "IDE/CLI integrations", - "inMemoryNote": "Note: Events are stored in-memory and reset when the server restarts.", + "externalApiCalls": "வெளிப்புற API அழைப்புகள்", + "ideCliIntegrations": "IDE/CLI ஒருங்கிணைப்புகள்", + "inMemoryNote": "குறிப்பு: நிகழ்வுகள் நினைவகத்தில் சேமிக்கப்படுகின்றன; சேவையகம் மறுதொடக்கம் செய்யப்படும்போது அவை மீட்டமைக்கப்படும்.", "ok": "OK", "errorShort": "ERR", - "formatConverter": "Format Converter", - "formatConverterDescription": "Paste or type a JSON request body. The translator will auto-detect the source format and convert it to the target format. Use this to debug how OmniRoute translates requests between formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", + "formatConverter": "வடிவமைப்பு மாற்றி", + "formatConverterDescription": "JSON கோரிக்கை உட்பகுதியை ஒட்டவும் அல்லது தட்டச்சு செய்யவும். மொழிபெயர்ப்பி மூல வடிவமைப்பைத் தானாகக் கண்டறிந்து, அதை இலக்கு வடிவமைப்பாக மாற்றும். வடிவமைப்புகளுக்கிடையே (OpenAI ↔ Claude ↔ Gemini ↔ Responses API) கோரிக்கைகளை OmniRoute எவ்வாறு மொழிபெயர்க்கிறது என்பதைப் பிழைநீக்க இதைப் பயன்படுத்தவும்.", "translationPathHubSpoke": "{source} → OpenAI (இடைநிலை) → {target}", "translationPathDirect": "{source} → {target} (நேரடி மொழிபெயர்ப்பாளர்)", "translationPathPassthrough": "அதே வடிவம் - மொழிபெயர்ப்பு தேவையில்லை", @@ -9012,79 +9019,79 @@ "featureDirectPathsDesc": "சில வடிவமைப்பு ஜோடிகள் (Claude→Gemini) நேரடி மொழிபெயர்ப்பாளர்களைக் கொண்டுள்ளன, அவை OpenAI மையத்தைத் தவிர்த்து, மிகவும் துல்லியமான வெளியீட்டை உருவாக்குகின்றன.", "featureImageMapping": "படத்தின் அளவு மேப்பிங்", "featureImageMappingDesc": "API வடிவங்களுக்கு இடையே பட பரிமாண மரபுகளை மொழிபெயர்க்கிறது (எ.கா., OpenAI விவர நிலைகள் → Gemini பரிமாணங்கள்).", - "input": "Input", - "output": "Output", + "input": "உள்ளீடு", + "output": "வெளியீடு", "auto": "Auto", - "swapFormats": "Swap formats", - "translateAction": "Translate", - "clear": "Clear", - "inputPlaceholder": "Paste a request body here or select a template below...", - "exampleTemplates": "Example Templates", - "exampleTemplatesHint": "— Click to load", - "templateLoadHint": "Template loads the request in {format} format. Change Source Format to load in a different format.", - "compatibilityTester": "Compatibility Tester", - "compatibilityReport": "Compatibility Report", - "testBenchDescription": "Run predefined scenarios (Simple Chat, Tool Calling, etc.) to verify translation and provider compatibility. Select a source format and target provider, then run all tests to see a compatibility percentage. Use this to find which features work across providers.", - "targetProvider": "Target Provider", - "runAllTests": "Run All Tests", - "runTest": "Run Test", - "reRun": "Re-run", - "running": "Running...", - "passed": "passed", - "failed": "failed", - "passedIconLabel": "✅ Passed", - "chunks": "chunks", - "scenarioSimpleChat": "Simple Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "swapFormats": "வடிவமைப்புகளை இடமாற்றவும்", + "translateAction": "மொழிபெயர்", + "clear": "அழி", + "inputPlaceholder": "கோரிக்கை உட்பகுதியை இங்கே ஒட்டவும் அல்லது கீழே உள்ள வார்ப்புருவைத் தேர்ந்தெடுக்கவும்...", + "exampleTemplates": "எடுத்துக்காட்டு வார்ப்புருக்கள்", + "exampleTemplatesHint": "— ஏற்ற கிளிக் செய்யவும்", + "templateLoadHint": "வார்ப்புரு கோரிக்கையை {format} வடிவத்தில் ஏற்றுகிறது. வேறொரு வடிவத்தில் ஏற்ற, மூல வடிவத்தை மாற்றவும்.", + "compatibilityTester": "இணக்கத்தன்மை சோதனையாளர்", + "compatibilityReport": "இணக்கத்தன்மை அறிக்கை", + "testBenchDescription": "மொழிபெயர்ப்பு மற்றும் வழங்குநர் இணக்கத்தன்மையைச் சரிபார்க்க, முன்வரையறுக்கப்பட்ட சூழல்களை (எளிய அரட்டை, கருவி அழைப்பு போன்றவை) இயக்கவும். ஒரு மூல வடிவத்தையும் இலக்கு வழங்குநரையும் தேர்ந்தெடுத்து, இணக்கத்தன்மை சதவீதத்தைக் காண அனைத்து சோதனைகளையும் இயக்கவும். வழங்குநர்களுக்கு இடையே எந்த அம்சங்கள் செயல்படுகின்றன என்பதைக் கண்டறிய இதைப் பயன்படுத்தவும்.", + "targetProvider": "இலக்கு வழங்குநர்", + "runAllTests": "அனைத்து சோதனைகளையும் இயக்கவும்", + "runTest": "சோதனையை இயக்கவும்", + "reRun": "மீண்டும் இயக்கவும்", + "running": "இயங்குகிறது...", + "passed": "தேர்ச்சி பெற்றது", + "failed": "தோல்வியடைந்தது", + "passedIconLabel": "✅ தேர்ச்சி பெற்றது", + "chunks": "துண்டுகள்", + "scenarioSimpleChat": "எளிய அரட்டை", + "scenarioToolCalling": "கருவி அழைப்பு", + "scenarioMultiTurn": "பல-திருப்ப உரையாடல்", "scenarioThinking": "Thinking", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "கணினி அறிவுறுத்தல்", + "scenarioStreaming": "தொடரோட்டம்", "templateNames": { - "simple-chat": "Simple Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "எளிய அரட்டை", + "tool-calling": "கருவி அழைப்பு", + "multi-turn": "பல-திருப்ப உரையாடல்", "thinking": "Thinking", - "system-prompt": "System Prompt", - "streaming": "Streaming", + "system-prompt": "கணினி அறிவுறுத்தல்", + "streaming": "தொடரோட்டம்", "vision": "பார்வை", "schema-coercion": "திட்ட வற்புறுத்தல்" }, "templateDescriptions": { - "simple-chat": "Basic text message", - "tool-calling": "Function/tool invocation", - "multi-turn": "Conversation with history", - "thinking": "Extended thinking / reasoning", - "system-prompt": "Complex system instructions", - "streaming": "SSE streaming request", + "simple-chat": "அடிப்படை உரைச் செய்தி", + "tool-calling": "செயல்பாடு/கருவி அழைப்பு", + "multi-turn": "வரலாற்றுடன் கூடிய உரையாடல்", + "thinking": "விரிவான சிந்தனை / காரணவியல்", + "system-prompt": "சிக்கலான கணினி அறிவுறுத்தல்கள்", + "streaming": "SSE தொடரோட்டக் கோரிக்கை", "vision": "பட உள்ளீட்டுடன் மல்டிமாடல் கோரிக்கை", "schema-coercion": "கட்டமைக்கப்பட்ட வெளியீடு / JSON திட்ட அமலாக்கம்" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful assistant.", - "userGreeting": "Hello! How are you today?" + "system": "நீங்கள் உதவிகரமான ஓர் உதவியாளர்.", + "userGreeting": "வணக்கம்! இன்று எப்படி இருக்கிறீர்கள்?" }, "toolCalling": { - "userWeather": "What's the weather in São Paulo?", - "toolDescription": "Get current weather for a location", - "cityNameDescription": "City name" + "userWeather": "São Paulo-வில் வானிலை எப்படி உள்ளது?", + "toolDescription": "ஓர் இருப்பிடத்தின் தற்போதைய வானிலையைப் பெறவும்", + "cityNameDescription": "நகரத்தின் பெயர்" }, "multiTurn": { - "system": "You are a coding assistant.", - "userInitial": "Write a function to sort an array in Python.", - "assistantExample": "Here's a simple sort function: ```python\ndef sort_array(arr): return sorted(arr)\n```", - "userFollowUp": "Now make it sort in descending order." + "system": "நீங்கள் ஒரு நிரலாக்க உதவியாளர்.", + "userInitial": "Python-இல் ஒரு அணிவரிசையை வரிசைப்படுத்துவதற்கான செயல்பாட்டை எழுதவும்.", + "assistantExample": "இதோ ஓர் எளிய வரிசைப்படுத்தல் செயல்பாடு: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userFollowUp": "இப்போது இதை இறங்கு வரிசையில் வரிசைப்படுத்தும்படி மாற்றவும்." }, "thinking": { - "question": "What is the sum of the first 100 prime numbers?" + "question": "முதல் 100 பகா எண்களின் கூட்டுத்தொகை என்ன?" }, "systemPrompt": { - "systemInstruction": "You are a senior software engineer specializing in distributed systems. Answer questions concisely using industry best practices. Always provide code examples when relevant. Format your responses using markdown.", - "question": "How do I implement a circuit breaker pattern?" + "systemInstruction": "நீங்கள் பகிர்ந்தளிக்கப்பட்ட அமைப்புகளில் நிபுணத்துவம் பெற்ற மூத்த மென்பொருள் பொறியாளர். தொழில்துறையின் சிறந்த நடைமுறைகளைப் பயன்படுத்தி கேள்விகளுக்குச் சுருக்கமாகப் பதிலளிக்கவும். பொருத்தமான இடங்களில் எப்போதும் குறியீட்டு எடுத்துக்காட்டுகளை வழங்கவும். உங்கள் பதில்களை markdown பயன்படுத்தி வடிவமைக்கவும்.", + "question": "சுற்றுத் துண்டிப்பான் வடிவமைப்பு முறையை எவ்வாறு செயல்படுத்துவது?" }, "streaming": { - "prompt": "Tell me a short story about a robot learning to paint." + "prompt": "ஓவியம் வரையக் கற்றுக்கொள்ளும் ஒரு ரோபோவைப் பற்றிய சிறுகதை ஒன்றைச் சொல்லுங்கள்." }, "vision": { "system": "படங்களை துல்லியமாக விவரிக்கும் உதவியாளர் நீங்கள்.", @@ -9097,12 +9104,12 @@ "cityDescription": "வினவ வேண்டிய நகரம், எ.கா. 'டோக்கியோ' அல்லது 'நியூயார்க்'." } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", - "noTemplateForFormat": "No template for this format", - "translationFailed": "Translation failed: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "openaiCompatibleLabel": "OpenAI-இணக்கமானது", + "anthropicCompatibleLabel": "Anthropic-இணக்கமானது", + "noTemplateForFormat": "இந்த வடிவமைப்பிற்கு வார்ப்புரு இல்லை", + "translationFailed": "மொழிபெயர்ப்பு தோல்வியடைந்தது: {error}", + "pipelineDebugger": "பைப்லைன் பிழைத்திருத்தி", + "translationPipeline": "மொழிபெயர்ப்பு பைப்லைன்", "loading": "ஏற்றப்படுகிறது…", "compressionOriginal": "அசல்", "compressionCompressed": "சுருக்கப்பட்டது", @@ -9111,44 +9118,44 @@ "pipelineStepsAria": "பைப்லைன் படிகள்", "copyIntermediateJson": "இடைநிலை JSON-ஐ நகலெடு", "copyOutputJson": "வெளியீட்டு JSON-ஐ நகலெடு", - "pipelineVisualization": "Pipeline visualization", - "pipelineVisualizationHint": "Send a message to see how your request flows through detection → translation → provider call.", - "chatTesterDescription": "Send messages as a specific client format and inspect each step of the translation pipeline.", - "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response", - "clickStepToInspect": "Click any step to inspect the data at that stage.", - "clientFormat": "Client Format", - "provider": "Provider", - "modelPlaceholder": "Select or type a model name...", - "sendMessageToSeePipeline": "Send a message to see the translation pipeline", - "chatMessageHintPrefix": "Your message will be formatted as a", - "chatMessageHintSuffix": "request, translated through the pipeline, and sent to the selected provider.", - "youWithFormat": "You ({format})", - "assistant": "Assistant", - "typeMessage": "Type a message...", - "send": "Send", - "clientRequest": "Client Request", - "clientRequestDescription": "The request body as your client would send it", - "formatDetected": "Format Detected", - "formatDetectedDescription": "OmniRoute auto-detects the API format from the request structure", - "openaiIntermediate": "OpenAI Intermediate", - "openaiIntermediateDescription": "All formats are first normalized to OpenAI format (the universal bridge)", - "providerFormat": "Provider Format", - "providerFormatDescription": "OpenAI format is translated to the provider's native format", - "providerResponse": "Provider Response", - "providerResponseRawDescription": "The raw response from the provider API", - "providerResponseSseDescription": "The raw SSE stream from the provider API", - "unexpectedError": "An unexpected error occurred", - "error": "Error", - "errorMessage": "Error: {message}", - "requestFailed": "Request failed", - "noTextExtracted": "(No text extracted)", + "pipelineVisualization": "பைப்லைன் காட்சிப்படுத்தல்", + "pipelineVisualizationHint": "கண்டறிதல் → மொழிபெயர்ப்பு → வழங்குநர் அழைப்பு வழியாக உங்கள் கோரிக்கை எவ்வாறு செல்கிறது என்பதைப் பார்க்க ஒரு செய்தியை அனுப்பவும்.", + "chatTesterDescription": "ஒரு குறிப்பிட்ட கிளையன்ட் வடிவத்தில் செய்திகளை அனுப்பி, மொழிபெயர்ப்பு பைப்லைனின் ஒவ்வொரு படியையும் ஆய்வு செய்யவும்.", + "chatTesterFlow": "கிளையன்ட் கோரிக்கை → வடிவமைப்பு கண்டறிதல் → OpenAI இடைநிலை → வழங்குநர் வடிவமைப்பு → பதில்", + "clickStepToInspect": "அந்தக் கட்டத்திலுள்ள தரவை ஆய்வு செய்ய எந்தப் படியையும் கிளிக் செய்யவும்.", + "clientFormat": "கிளையன்ட் வடிவமைப்பு", + "provider": "வழங்குநர்", + "modelPlaceholder": "ஒரு மாதிரிப் பெயரைத் தேர்ந்தெடுக்கவும் அல்லது தட்டச்சு செய்யவும்...", + "sendMessageToSeePipeline": "மொழிபெயர்ப்பு பைப்லைனைப் பார்க்க ஒரு செய்தியை அனுப்பவும்", + "chatMessageHintPrefix": "உங்கள் செய்தி ஒரு", + "chatMessageHintSuffix": "கோரிக்கையாக வடிவமைக்கப்பட்டு, பைப்லைன் வழியாக மொழிபெயர்க்கப்பட்டு, தேர்ந்தெடுக்கப்பட்ட வழங்குநருக்கு அனுப்பப்படும்.", + "youWithFormat": "நீங்கள் ({format})", + "assistant": "உதவியாளர்", + "typeMessage": "ஒரு செய்தியைத் தட்டச்சு செய்யவும்...", + "send": "அனுப்பு", + "clientRequest": "கிளையன்ட் கோரிக்கை", + "clientRequestDescription": "உங்கள் கிளையன்ட் அனுப்பும் கோரிக்கை உள்ளடக்கம்", + "formatDetected": "கண்டறியப்பட்ட வடிவமைப்பு", + "formatDetectedDescription": "கோரிக்கையின் கட்டமைப்பிலிருந்து API வடிவமைப்பை OmniRoute தானாகக் கண்டறிகிறது", + "openaiIntermediate": "OpenAI இடைநிலை", + "openaiIntermediateDescription": "அனைத்து வடிவமைப்புகளும் முதலில் OpenAI வடிவமைப்பிற்கு (உலகளாவிய இணைப்புப் பாலம்) இயல்பாக்கப்படுகின்றன", + "providerFormat": "வழங்குநர் வடிவமைப்பு", + "providerFormatDescription": "OpenAI வடிவமைப்பு வழங்குநரின் சொந்த வடிவமைப்பிற்கு மொழிபெயர்க்கப்படுகிறது", + "providerResponse": "வழங்குநர் பதில்", + "providerResponseRawDescription": "வழங்குநர் API-இலிருந்து பெறப்படும் மூலப் பதில்", + "providerResponseSseDescription": "வழங்குநர் API-இலிருந்து பெறப்படும் மூல SSE ஸ்ட்ரீம்", + "unexpectedError": "எதிர்பாராத பிழை ஏற்பட்டது", + "error": "பிழை", + "errorMessage": "பிழை: {message}", + "requestFailed": "கோரிக்கை தோல்வியடைந்தது", + "noTextExtracted": "(உரை எதுவும் பிரித்தெடுக்கப்படவில்லை)", "liveMonitorMemoryNote": "நிகழ்வுகள் நினைவகத்தில் சேமிக்கப்பட்டு மறுதொடக்கத்தில் இழக்கப்படும்.", "liveMonitorMemoryCapNote": "அதிகபட்சம் 200 நிகழ்வுகள் தக்கவைக்கப்பட்டுள்ளன.", "eventSourcesLabel": "நிகழ்வு ஆதாரங்கள்:", "eventSourceTranslatorPage": "• மொழிபெயர்ப்பாளர் பக்கம் (அரட்டை சோதனையாளர், சோதனை பெஞ்ச்)", "eventSourceMainPipeline": "• முதன்மை கோரிக்கை பைப்லைன் (CLI/IDE/API போக்குவரத்து)", - "liveMonitorDescriptionPrefix": "Shows translation events as API calls flow through OmniRoute. Events come from the in-memory buffer (resets on restart). Use", - "liveMonitorDescriptionSuffix": ", or external API calls to generate events.", + "liveMonitorDescriptionPrefix": "API அழைப்புகள் OmniRoute வழியாகச் செல்லும்போது மொழிபெயர்ப்பு நிகழ்வுகளைக் காட்டுகிறது. நிகழ்வுகள் நினைவக இடையகத்திலிருந்து வருகின்றன (மறுதொடக்கத்தில் மீட்டமைக்கப்படும்). பயன்படுத்தவும்", + "liveMonitorDescriptionSuffix": ", அல்லது நிகழ்வுகளை உருவாக்க வெளிப்புற API அழைப்புகளைப் பயன்படுத்தவும்.", "streamTransformer": "ஸ்ட்ரீம் மின்மாற்றி", "modeDescriptionStreamTransformer": "பதில்கள் மின்மாற்றி மூலம் அரட்டை நிறைவுகளை SSE ஸ்ட்ரீம்களை இயக்கவும்.", "streamTransformerTitle": "பதில்கள் ஸ்ட்ரீம் டிரான்ஸ்ஃபார்மர்", @@ -9181,7 +9188,7 @@ "conceptHeadline": "உங்கள் பயன்பாடு ஒரு API-இன் \"மொழியைப்\" பேசுகிறது. மொழிபெயர்ப்பாளர் அதை மற்றொரு வழங்குநரைப் பயன்படுத்தும் வகையில் மாற்றுகிறார்.", "conceptDiagramAppLabel": "உங்கள் பயன்பாடு", "conceptDiagramSourceLabel": "மூல வடிவம்", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (மையம்)", "conceptDiagramTargetLabel": "இலக்கு வழங்குநர்", "conceptDiagramExampleApp": "எ.கா. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "ஒரு JSON கோரிக்கையை ஒட்டவும்; வடிவம் தானாகவே கண்டறியப்படும்.", "advancedPipelineTitle": "OpenAI இடைநிலை pipeline", "advancedPipelineSubtitle": "ஒவ்வொரு மொழிபெயர்ப்புப் படியையும் காட்சிப்படுத்தவும் (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "ஸ்ட்ரீம் மாற்றி (அரட்டை → Responses SSE)", "advancedStreamTransformSubtitle": "Chat Completions SSE-ஐ Responses API-ஆக மாற்றுகிறது.", "advancedTestBenchTitle": "Test Bench (8 காட்சிகள்)", "advancedTestBenchSubtitle": "அனைத்து காட்சிகளையும் இயக்கி, தேர்ச்சி/தோல்வி + பொருந்தக்கூடிய % ஆகியவற்றை அறிக்கை செய்கிறது.", @@ -9259,7 +9266,7 @@ "streamTransformFailed": "ஸ்ட்ரீமை மாற்ற முடியவில்லை" }, "usage": { - "title": "Usage", + "title": "பயன்பாடு", "grokExtraUsageCredits": "கூடுதல் பயன்பாட்டு கிரெடிட்கள்", "grokAutoTopUp": "தானியங்கி மேலேற்றம்", "grokAutoTopUpUnavailable": "கிடையாது", @@ -9277,66 +9284,66 @@ "kiloPassRemaining": "மீதமுள்ளது", "kiloPassRenews": "{count} நாட்களில் புதுப்பிக்கப்படும்", "kiloPassUsageLabel": "இந்த மாத பயன்பாடு", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "கூடுதல் பயன்பாட்டுக் கிரெடிட்கள்", + "kimiExtraUsage": "கூடுதல் பயன்பாடு", + "kimiExtraUsageEnabled": "இயக்கப்பட்டது", + "kimiExtraUsageDisabled": "முடக்கப்பட்டது", + "kimiExtraUsageFrozen": "முடக்கி வைக்கப்பட்டது", + "kimiExtraUsageUnavailable": "கிடைக்கவில்லை", + "kimiMonthlyUsed": "இந்த மாதம் பயன்படுத்தப்பட்டது", + "kimiMonthlyLimit": "மாதாந்திர வரம்பு", + "kimiMonthlyLimitUnlimited": "வரம்பற்றது", + "kimiAdditionalCredits": "கூடுதல் கிரெடிட்கள்", + "loggerTab": "பதிவி", "proxyTab": "Proxy", - "budgetManagement": "Budget Management", - "budgetSaved": "Budget limits saved", - "budgetSaveFailed": "Failed to save budget", - "loadingBudgetData": "Loading budget data...", - "noApiKeysTitle": "No API Keys", - "noApiKeysDescription": "Add API keys first to set up budget limits.", - "apiKey": "API Key", - "todaysSpend": "Today's Spend", - "thisMonth": "This Month", - "setLimits": "Set Limits", - "dailyLimitUsd": "Daily Limit (USD)", - "monthlyLimitUsd": "Monthly Limit (USD)", - "warningThresholdPercent": "Warning Threshold (%)", - "dailyLimitPlaceholder": "e.g. 5.00", - "monthlyLimitPlaceholder": "e.g. 50.00", + "budgetManagement": "பட்ஜெட் மேலாண்மை", + "budgetSaved": "பட்ஜெட் வரம்புகள் சேமிக்கப்பட்டன", + "budgetSaveFailed": "பட்ஜெட்டைச் சேமிக்க முடியவில்லை", + "loadingBudgetData": "பட்ஜெட் தரவு ஏற்றப்படுகிறது...", + "noApiKeysTitle": "API விசைகள் இல்லை", + "noApiKeysDescription": "பட்ஜெட் வரம்புகளை அமைக்க முதலில் API விசைகளைச் சேர்க்கவும்.", + "apiKey": "API விசை", + "todaysSpend": "இன்றைய செலவு", + "thisMonth": "இந்த மாதம்", + "setLimits": "வரம்புகளை அமைக்கவும்", + "dailyLimitUsd": "தினசரி வரம்பு (USD)", + "monthlyLimitUsd": "மாதாந்திர வரம்பு (USD)", + "warningThresholdPercent": "எச்சரிக்கை வரம்புநிலை (%)", + "dailyLimitPlaceholder": "எ.கா. 5.00", + "monthlyLimitPlaceholder": "எ.கா. 50.00", "warningThresholdPlaceholder": "80", - "saveLimits": "Save Limits", - "budgetOk": "Budget OK — {remaining} remaining", - "budgetExceeded": "Budget exceeded — requests may be blocked", + "saveLimits": "வரம்புகளைச் சேமிக்கவும்", + "budgetOk": "பட்ஜெட் சரியாக உள்ளது — {remaining} மீதமுள்ளது", + "budgetExceeded": "பட்ஜெட் மீறப்பட்டது — கோரிக்கைகள் தடுக்கப்படலாம்", "totalRequests": "Total requests", - "noDataYet": "No data yet", - "latency": "Latency", + "noDataYet": "இதுவரை தரவு இல்லை", + "latency": "தாமதம்", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", - "systemHealth": "System Health", - "entries": "Entries", - "activeCount": "{count} active", - "openCircuitBreakersDetected": "Open circuit breakers detected", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "circuitBreakers": "Circuit Breakers", - "lockedIPs": "Locked IPs", - "lockoutsAutoRefreshHint": "Per-model rate limit locks • Auto-refresh 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", - "timeLeft": "{time} left", - "howItWorks": "How It Works", - "howItWorksSubtitle": "Learn how evaluations validate your LLM responses", - "define": "Define", - "defineStepDescription": "Create test cases with input prompts and expected output criteria using strategies like contains, regex, or exact match.", - "run": "Run", - "runStepDescription": "Execute test cases against your LLM endpoints through OmniRoute. Each case is sent as a real API request.", - "evaluate": "Evaluate", - "evaluateStepDescription": "Responses are compared against expected criteria. See pass/fail for each case with latency metrics and detailed feedback.", + "promptCache": "ப்ராம்ப்ட் தற்காலிக சேமிப்பு", + "systemHealth": "கணினி நிலை", + "entries": "பதிவுகள்", + "activeCount": "{count} செயலில் உள்ளன", + "openCircuitBreakersDetected": "திறந்த சர்க்யூட் பிரேக்கர்கள் கண்டறியப்பட்டன", + "hitRate": "ஹிட் விகிதம்", + "hitsMisses": "ஹிட்கள் / மிஸ்கள்", + "circuitBreakers": "சர்க்யூட் பிரேக்கர்கள்", + "lockedIPs": "பூட்டப்பட்ட IP-கள்", + "lockoutsAutoRefreshHint": "மாடல் வாரியான வீத வரம்புப் பூட்டுகள் • ஒவ்வொரு 10 வினாடிக்கும் தானாகப் புதுப்பிக்கப்படும்", + "lockedCount": "{count, plural, one {# பூட்டப்பட்டுள்ளது} other {# பூட்டப்பட்டுள்ளன}}", + "timeLeft": "{time} மீதமுள்ளது", + "howItWorks": "இது எவ்வாறு செயல்படுகிறது", + "howItWorksSubtitle": "மதிப்பீடுகள் உங்கள் LLM பதில்களை எவ்வாறு சரிபார்க்கின்றன என்பதை அறிக", + "define": "வரையறு", + "defineStepDescription": "உள்ளடக்கம் உள்ளது, regex அல்லது துல்லியப் பொருத்தம் போன்ற உத்திகளைப் பயன்படுத்தி, உள்ளீட்டுப் ப்ராம்ப்ட்கள் மற்றும் எதிர்பார்க்கப்படும் வெளியீட்டு அளவுகோல்களுடன் சோதனை நிகழ்வுகளை உருவாக்கவும்.", + "run": "இயக்கு", + "runStepDescription": "OmniRoute மூலம் உங்கள் LLM எண்ட்பாயிண்ட்களில் சோதனை நிகழ்வுகளை இயக்கவும். ஒவ்வொரு நிகழ்வும் உண்மையான API கோரிக்கையாக அனுப்பப்படும்.", + "evaluate": "மதிப்பிடு", + "evaluateStepDescription": "பதில்கள் எதிர்பார்க்கப்படும் அளவுகோல்களுடன் ஒப்பிடப்படுகின்றன. தாமத அளவீடுகள் மற்றும் விரிவான பின்னூட்டத்துடன் ஒவ்வொரு நிகழ்வின் தேர்ச்சி/தோல்வியைக் காண்க.", "evalsStrategyContainsLabel": "கொண்டுள்ளது", "evalsStrategyExactLabel": "சரியான பொருத்தம்", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "ரெகுலர் எக்ஸ்பிரஷன்", "evalsStrategyCustomLabel": "தனிப்பயன் தர்க்கம்", "evalsStrategyContainsDescription": "LLM வெளியீட்டில் எதிர்பார்க்கப்படும் சப்ஸ்ட்ரிங் உள்ளதா என்று சரிபார்க்கிறது.", "evalsStrategyExactDescription": "LLM வெளியீடு எதிர்பார்க்கப்படும் மதிப்புடன் சரியாகப் பொருந்துகிறதா என்று சரிபார்க்கிறது.", @@ -9347,126 +9354,126 @@ "historyColumnPassRate": "வெற்றி விகிதம்", "historyColumnAvgLatencyMs": "சராசரி தாமதம்", "historyColumnCreatedAt": "செயல்படுத்தப்பட்டது", - "evalSuites": "Evaluation Suites", - "evalSuitesHint": "Click a suite to view test cases, then run to evaluate your LLM endpoints", - "evalsLoading": "Loading eval suites...", - "noEvalSuitesFound": "No Eval Suites Found", - "noEvalSuitesDescription": "Eval suites can be defined via the API or in code. They test model outputs against expected results using strategies like contains, regex, exact match, and custom functions.", - "columnCase": "Case", + "evalSuites": "மதிப்பீட்டுத் தொகுப்புகள்", + "evalSuitesHint": "சோதனை நிகழ்வுகளைக் காண ஒரு தொகுப்பைக் கிளிக் செய்து, பின்னர் உங்கள் LLM எண்ட்பாயிண்ட்களை மதிப்பிட அதை இயக்கவும்", + "evalsLoading": "மதிப்பீட்டுத் தொகுப்புகள் ஏற்றப்படுகின்றன...", + "noEvalSuitesFound": "மதிப்பீட்டுத் தொகுப்புகள் எதுவும் கிடைக்கவில்லை", + "noEvalSuitesDescription": "மதிப்பீட்டுத் தொகுப்புகளை API மூலமாகவோ அல்லது குறியீட்டிலோ வரையறுக்கலாம். அவை உள்ளடக்கம் உள்ளது, regex, துல்லியப் பொருத்தம் மற்றும் தனிப்பயன் செயல்பாடுகள் போன்ற உத்திகளைப் பயன்படுத்தி மாடல் வெளியீடுகளை எதிர்பார்க்கப்படும் முடிவுகளுடன் ஒப்பிட்டுச் சோதிக்கின்றன.", + "columnCase": "நிகழ்வு", "columnStatus": "Status", - "columnLatency": "Latency", - "columnDetails": "Details", + "columnLatency": "தாமதம்", + "columnDetails": "விவரங்கள்", "columnModel": "Model", - "columnStrategy": "Strategy", - "columnExpected": "Expected", - "statsSuites": "Suites", - "statsTestCases": "Test Cases", - "statsModels": "Models", - "statsCoverage": "Coverage", - "statsStrategiesCount": "{count} strategies", - "evaluationStrategies": "Evaluation Strategies", - "modelsUnderTest": "Models Under Test", - "searchSuitesPlaceholder": "Search suites...", + "columnStrategy": "உத்தி", + "columnExpected": "எதிர்பார்க்கப்படுவது", + "statsSuites": "தொகுப்புகள்", + "statsTestCases": "சோதனை நிகழ்வுகள்", + "statsModels": "மாடல்கள்", + "statsCoverage": "சோதனை வரம்பு", + "statsStrategiesCount": "{count} உத்திகள்", + "evaluationStrategies": "மதிப்பீட்டு உத்திகள்", + "modelsUnderTest": "சோதிக்கப்படும் மாடல்கள்", + "searchSuitesPlaceholder": "தொகுப்புகளைத் தேடுக...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", - "runEval": "Run Eval", + "casesCount": "{count, plural, one {# வழக்கு} other {# வழக்குகள்}}", + "runEval": "மதிப்பீட்டை இயக்கவும்", "runAllSuites": "அனைத்தையும் இயக்கவும்", "runAllRunning": "அனைத்தையும் இயக்குகிறது...", "runAllProgress": "இயங்கும் {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# தொகுப்பு தோல்வியடைந்தது} other {# தொகுப்புகள் தோல்வியடைந்தன}}", "runAllCompleted": "ஓடியது {suites} தொகுப்புகள் — {passed} தேர்ச்சி பெற்றது, {failed} தோல்வியடைந்தது", "runAllCompletedWithFailures": "ரன் {completed} தொகுப்புகள்; {failedSuites} முடிக்க முடியவில்லை", - "runningProgress": "Running {current}/{total}...", - "passRate": "pass rate", - "summaryBreakdown": "{passed} passed · {failed} failed · {total} total", - "passedIconLabel": "✅ Passed", - "failedIconLabel": "❌ Failed", + "runningProgress": "{current}/{total} இயக்கப்படுகிறது...", + "passRate": "தேர்ச்சி விகிதம்", + "summaryBreakdown": "{passed} தேர்ச்சி · {failed} தோல்வி · மொத்தம் {total}", + "passedIconLabel": "✅ தேர்ச்சி", + "failedIconLabel": "❌ தோல்வி", "resultPassed": "தேர்ச்சி பெற்றார்", "resultFailed": "தோல்வியடைந்தது", "expandResult": "முடிவு விவரங்களை விரிவாக்குங்கள்", "collapseResult": "முடிவு விவரங்களைச் சுருக்கவும்", - "detailsContains": "Contains: \"{term}\"", + "detailsContains": "இதைக் கொண்டுள்ளது: \"{term}\"", "detailsRegex": "Regex: {pattern}", - "detailsExpected": "Expected: \"{expected}\"", + "detailsExpected": "எதிர்பார்க்கப்பட்டது: \"{expected}\"", "expectedOutputLabel": "எதிர்பார்க்கப்படும் வெளியீடு", - "noResultsYet": "No results yet", - "testCasesCount": "Test Cases ({count})", - "noTestCasesDefined": "No test cases defined", - "runEvalHint": "Click \"Run Eval\" to execute all cases against your LLM endpoint. Each test sends a real request through OmniRoute.", - "notifyNoTestCases": "No test cases defined for this suite", - "notifyAllCasesPassed": "All {total} cases passed ✅", - "notifySomeCasesFailed": "{passed}/{total} passed, {failed} failed", - "notifyEvalRunFailed": "Eval run failed", - "notifyEvalTitle": "Eval: {name}", - "modelEvals": "Model Evaluations", - "evalsHeroDescription": "Test and validate your LLM endpoints by running predefined evaluation suites. Each suite contains test cases that send real prompts through OmniRoute and compare responses against expected criteria — helping you detect regressions, compare models, and ensure response quality across providers.", - "qualityValidation": "Quality Validation", - "modelComparison": "Model Comparison", - "regressionDetection": "Regression Detection", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", - "noLockouts": "No models currently locked", - "activeSessions": "Active Sessions", - "noSessions": "No active sessions", - "sessionsHint": "Sessions appear as requests flow through the proxy", - "sessionsTrackedHint": "Tracked via request fingerprinting • Auto-refresh 5s", - "session": "Session", - "age": "Age", - "requests": "Requests", - "connection": "Connection", + "noResultsYet": "இன்னும் முடிவுகள் இல்லை", + "testCasesCount": "சோதனை வழக்குகள் ({count})", + "noTestCasesDefined": "சோதனை வழக்குகள் எதுவும் வரையறுக்கப்படவில்லை", + "runEvalHint": "உங்கள் LLM முனைப்புள்ளிக்கு எதிராக அனைத்து வழக்குகளையும் இயக்க, \"மதிப்பீட்டை இயக்கவும்\" என்பதைக் கிளிக் செய்யவும். ஒவ்வொரு சோதனையும் OmniRoute வழியாக ஓர் உண்மையான கோரிக்கையை அனுப்பும்.", + "notifyNoTestCases": "இந்தத் தொகுப்பிற்கான சோதனை வழக்குகள் எதுவும் வரையறுக்கப்படவில்லை", + "notifyAllCasesPassed": "அனைத்து {total} வழக்குகளும் தேர்ச்சி பெற்றன ✅", + "notifySomeCasesFailed": "{passed}/{total} தேர்ச்சி, {failed} தோல்வி", + "notifyEvalRunFailed": "மதிப்பீட்டு இயக்கம் தோல்வியடைந்தது", + "notifyEvalTitle": "மதிப்பீடு: {name}", + "modelEvals": "மாதிரி மதிப்பீடுகள்", + "evalsHeroDescription": "முன்வரையறுக்கப்பட்ட மதிப்பீட்டுத் தொகுப்புகளை இயக்குவதன் மூலம் உங்கள் LLM முனைப்புள்ளிகளைச் சோதித்து சரிபார்க்கவும். ஒவ்வொரு தொகுப்பிலும் OmniRoute வழியாக உண்மையான தூண்டுதல்களை அனுப்பி, பதில்களை எதிர்பார்க்கப்படும் அளவுகோல்களுடன் ஒப்பிடும் சோதனை வழக்குகள் உள்ளன — இது பின்னடைவுகளைக் கண்டறியவும், மாதிரிகளை ஒப்பிடவும், வழங்குநர்களிடையே பதில்களின் தரத்தை உறுதிப்படுத்தவும் உதவும்.", + "qualityValidation": "தரச் சரிபார்ப்பு", + "modelComparison": "மாதிரி ஒப்பீடு", + "regressionDetection": "பின்னடைவு கண்டறிதல்", + "latencyBenchmarks": "தாமத அளவுகோல்கள்", + "modelLockouts": "மாதிரிப் பூட்டல்கள்", + "noLockouts": "தற்போது எந்த மாதிரியும் பூட்டப்படவில்லை", + "activeSessions": "செயலில் உள்ள அமர்வுகள்", + "noSessions": "செயலில் உள்ள அமர்வுகள் இல்லை", + "sessionsHint": "பதிலி வழியாகக் கோரிக்கைகள் செல்லும்போது அமர்வுகள் தோன்றும்", + "sessionsTrackedHint": "கோரிக்கை கைரேகைப் பதிவின் மூலம் கண்காணிக்கப்படுகிறது • 5 வினாடிகளுக்கு ஒருமுறை தானாகப் புதுப்பிக்கப்படும்", + "session": "அமர்வு", + "age": "வயது", + "requests": "கோரிக்கைகள்", + "connection": "இணைப்பு", "durationMillisecondsShort": "{value}ms", "durationSecondsShort": "{value}s", "durationMinutesShort": "{value}m", "durationHoursShort": "{value}h", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "Provider Limits", - "noProviders": "No Providers Connected", - "connectProvidersForQuota": "Connect to providers with OAuth to track your API quota limits and usage.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", - "filteredFromCount": "(filtered from {count})", - "autoRefresh": "Auto-refresh", - "refreshAll": "Refresh All", - "loadingQuotas": "Loading...", + "providerLimits": "வழங்குநர் வரம்புகள்", + "noProviders": "வழங்குநர்கள் எவரும் இணைக்கப்படவில்லை", + "connectProvidersForQuota": "உங்கள் API ஒதுக்கீட்டு வரம்புகளையும் பயன்பாட்டையும் கண்காணிக்க OAuth மூலம் வழங்குநர்களுடன் இணையவும்.", + "accountsCount": "{count, plural, one {# கணக்கு} other {# கணக்குகள்}}", + "filteredFromCount": "({count} இலிருந்து வடிகட்டப்பட்டது)", + "autoRefresh": "தானாகப் புதுப்பித்தல்", + "refreshAll": "அனைத்தையும் புதுப்பி", + "loadingQuotas": "ஏற்றுகிறது...", "showMoreQuotas": "மேலும் {count}-ஐக் காட்டு", "showLessQuotas": "குறைவாகக் காட்டு", "hideQuotaRow": "இந்த ஒதுக்கீட்டு வரிசையை மறை", "showQuotaRow": "இந்த ஒதுக்கீட்டு வரிசையைக் காட்டு", "hiddenQuotaRowsLabel": "மறைக்கப்பட்டது:", "quotaVisibilityUpdateFailed": "ஒதுக்கீட்டுத் தெரிவுநிலையைப் புதுப்பிக்க முடியவில்லை", - "account": "Account", - "modelQuotas": "Model Quotas", - "lastUsed": "Last Refreshed", - "actions": "Actions", - "refreshQuota": "Refresh quota", - "today": "Today", - "tomorrow": "Tomorrow", + "account": "கணக்கு", + "modelQuotas": "மாதிரி ஒதுக்கீடுகள்", + "lastUsed": "கடைசியாகப் புதுப்பிக்கப்பட்டது", + "actions": "செயல்கள்", + "refreshQuota": "ஒதுக்கீட்டைப் புதுப்பி", + "today": "இன்று", + "tomorrow": "நாளை", "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "inDuration": "{duration} இல்", "notApplicable": "N/A", - "rawPlanWithValue": "Raw plan: {plan}", - "noPlanFromProvider": "No plan from provider", + "rawPlanWithValue": "மூலத் திட்டம்: {plan}", + "noPlanFromProvider": "வழங்குநரிடமிருந்து திட்டம் இல்லை", "tokenExpiresIn": "டோக்கன் {time}-ல் காலாவதியாகிறது", "tokenExpired": "டோக்கன் காலாவதியானது", - "noQuotaData": "No quota data", + "noQuotaData": "ஒதுக்கீட்டுத் தரவு இல்லை", "cardExpand": "விரிவாக்கு", "cardCollapse": "சுருக்கு", "moreQuotas": "+{count} மேலும்", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", - "noQuotaDataAvailable": "No quota data available", - "noAccountsForTierFilter": "No accounts found for tier filter", - "tierAll": "All", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "ungrouped": "குழுவாக்கப்படாதவை", + "viewFlat": "தட்டையானது", + "viewByEnvironment": "சூழலின்படி", + "noQuotaDataAvailable": "ஒதுக்கீட்டுத் தரவு எதுவும் கிடைக்கவில்லை", + "noAccountsForTierFilter": "அடுக்கு வடிப்பிக்கு எந்தக் கணக்குகளும் கிடைக்கவில்லை", + "tierAll": "அனைத்தும்", + "tierEnterprise": "நிறுவனப் பதிப்பு", + "tierTeam": "குழு", + "tierBusiness": "வணிகம்", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", + "tierFree": "இலவசம்", "tierLite": "லைட்", - "tierUnknown": "Unknown", + "tierUnknown": "தெரியாதது", "statTotal": "மொத்தம்", "statCritical": "கடுமையானது", "statAlert": "எச்சரிக்கை", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "கிரெடிட்டை ரிடீம் செய்", "resetCreditRedeemed": "ரீசெட் ரிடீம் செய்யப்பட்டது", "resetCreditRedeemFailed": "ரீசெட் கிரெடிட்டை ரிடீம் செய்ய முடியவில்லை", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "தொகுப்பைச் சேமிக்க முடியவில்லை", "clone": "குளோன்", "exportSuite": "ஏற்றுமதி", "importSuite": "இறக்குமதி", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "தவறான eval suite JSON", "suiteBuilderCloneSuffix": "நகல்", "suiteBuilderImportedSuite": "இறக்குமதி செய்யப்பட்ட தொகுப்பு", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "மதிப்பீட்டு அட்டை", + "evalApiKey": "API விசை", + "scorecardPassRate": "தேர்ச்சி விகிதம்", + "targetTypeModel": "மாதிரி", + "actualOutputLabel": "உண்மையான வெளியீடு", + "evalTargetHint": "மதிப்பீடு செய்ய ஒரு மாதிரி அல்லது சேர்க்கையைத் தேர்ந்தெடுக்கவும்.", + "suiteBuilderDeleted": "தொகுப்பு வெற்றிகரமாக நீக்கப்பட்டது", + "suiteBuilderCaseCardHint": "உள்ளீட்டு வழிமொழியையும் எதிர்பார்க்கப்படும் வெளியீட்டு அளவுகோல்களையும் வரையறுக்கவும்.", + "nextResetUtc": "அடுத்த மீட்டமைப்பு (UTC)", + "scorecardHint": "அனைத்து மதிப்பீட்டுத் தொகுப்புகளிலும் திரட்டப்பட்ட தேர்ச்சி விகிதங்கள்.", + "suiteLatestRunsHint": "இந்தத் தொகுப்பிற்கான மிகச் சமீபத்திய மதிப்பீட்டு இயக்கங்கள்.", + "saving": "சேமிக்கிறது", + "suiteBuilderCaseModelLabel": "மாதிரி (விருப்பத்தேர்வு)", + "evalControlsTitle": "மதிப்பீட்டுக் கட்டுப்பாடுகள்", + "suiteBuilderEditTitle": "மதிப்பீட்டுத் தொகுப்பைத் திருத்து", + "suiteBuilderCaseStrategyLabel": "சரிபார்ப்பு உத்தி", + "notifySelectDifferentCompareTarget": "ஒப்பிடுவதற்கு வேறொரு இலக்கைத் தேர்ந்தெடுக்கவும்", + "recentRunsHint": "மிகச் சமீபத்திய மதிப்பீட்டு இயக்கங்கள் காட்டப்படுகின்றன. விரிவான முடிவுகளைக் காண ஓர் இயக்கத்தைக் கிளிக் செய்யவும்.", + "evalCompareHint": "விருப்பத்தேர்வாக, முடிவுகளை இரண்டாவது இலக்குடன் ஒப்பிடவும்.", + "suiteBuilderCaseInvalid": "இந்தச் சோதனை நிகழ்வில் சரிபார்ப்புப் பிழைகள் உள்ளன. சேமிப்பதற்கு முன் அவற்றைச் சரிசெய்யவும்.", + "historyEmpty": "இதுவரை மதிப்பீட்டு வரலாறு இல்லை", + "suiteBuilderUpdated": "தொகுப்பு வெற்றிகரமாகப் புதுப்பிக்கப்பட்டது", + "resetInterval": "மீட்டமைப்பு இடைவெளி", + "suiteBuilderCreateTitle": "மதிப்பீட்டுத் தொகுப்பை உருவாக்கு", + "activePeriodSpend": "செயலில் உள்ள காலகட்டச் செலவு", + "evalApiKeyHint": "மதிப்பீட்டுக் கோரிக்கைகளுக்கு எந்த API விசையைப் பயன்படுத்த வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்.", + "evalCompareOptional": "ஒப்பிடு (விருப்பத்தேர்வு)", + "suiteBuilderDeleteFailed": "தொகுப்பை நீக்க முடியவில்லை", + "suiteBuilderCaseSystemPromptPlaceholder": "விருப்பத்திற்குரிய அமைப்பு வழிமுறைகள்...", + "scorecardCases": "சோதனை நிகழ்வுகள்", + "runCompletedWithScore": "மதிப்பீடு நிறைவடைந்தது — {score}% தேர்ச்சி விகிதம்", + "suiteBuilderCustomBadge": "தனிப்பயன்", + "targetSuiteDefaults": "தொகுப்பின் இயல்புநிலைகள்", + "suiteBuilderDeleteConfirm": "இந்தத் தொகுப்பை நீக்க விரும்புகிறீர்களா? இந்தச் செயலைச் செயல்தவிர்க்க முடியாது.", + "suiteBuilderNameLabel": "தொகுப்பின் பெயர்", + "scorecardSuites": "தொகுப்புகள்", + "evalCompareTarget": "ஒப்பீட்டு இலக்கு", + "suiteBuilderCaseModelPlaceholder": "எ.கா. gpt-4o-mini", + "evalControlsHint": "உங்கள் மதிப்பீட்டு இலக்கையும் API விசையையும் உள்ளமைத்து, பின்னர் மாதிரித் தரத்தைச் சரிபார்க்க தொகுப்புகளை இயக்கவும்.", + "recentRunsTitle": "சமீபத்திய இயக்கங்கள்", + "suiteBuilderCaseSystemPromptLabel": "அமைப்பு வழிகாட்டி உரை", + "suiteBuilderCaseExpectedPlaceholder": "எ.கா. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "எ.கா. டெஃப் ஃபைபோனச்சி", "suiteBuilderCaseExpectedPlaceholderExact": "எதிர்பார்க்கப்படும் சரியான பதிலை ஒட்டவும்", "suiteBuilderCaseExpectedPlaceholderRegex": "எ.கா. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "ஜாவாஸ்கிரிப்ட் ரெகுலர் எக்ஸ்ப்ரெஷனைப் பயன்படுத்தவும்.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "எ.கா. குறியீட்டுத் தரத் தொகுப்பு", + "suiteBuilderAddCase": "சோதனை நிகழ்வைச் சேர்", + "cancel": "ரத்துசெய்", + "evalTarget": "இலக்கு", + "suiteBuilderCaseNameLabel": "சோதனை நிகழ்வின் பெயர்", + "weeklyLimitUsd": "வாராந்திர வரம்பு (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "எ.கா. Python-இல் ஒரு fibonacci செயல்பாட்டை எழுதவும்", + "suiteBuilderNameRequired": "தொகுப்பின் பெயர் தேவை", + "suiteBuilderCaseUserPromptLabel": "பயனர் வழிகாட்டி உரை", + "daily": "தினசரி", + "resultErrorLabel": "பிழை", + "suiteBuilderBuiltInBadge": "உள்ளமைந்த", + "suiteBuilderCaseCardTitle": "சோதனை நிகழ்வு", "suiteBuilderDuplicateCase": "நகல்", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "எ.கா. 50.00", + "suiteBuilderCaseTagsHint": "சோதனை நிகழ்வுகளை ஒழுங்கமைப்பதற்கான காற்புள்ளியால் பிரிக்கப்பட்ட குறிச்சொற்கள்.", + "notifyEvalRunFailedWithReason": "மதிப்பீடு தோல்வியடைந்தது: {reason}", + "weekly": "வாரந்தோறும்", + "runEvalRunning": "மதிப்பீடு இயங்குகிறது...", + "delete": "நீக்கு", + "resetTimeUtc": "மீட்டமைப்பு நேரம் (UTC)", + "evalApiKeyAuto": "தானியங்கி (இயல்புநிலையைப் பயன்படுத்து)", + "suiteBuilderDescriptionPlaceholder": "இந்தத் தொகுப்பு எதைச் சோதிக்கிறது என்பதற்கான விருப்ப விளக்கம்...", + "targetComparisonTitle": "இலக்கு ஒப்பீடு", + "save": "சேமி", + "suiteBuilderCreated": "தொகுப்பு வெற்றிகரமாக உருவாக்கப்பட்டது", + "suiteLatestRuns": "சமீபத்திய இயக்கங்கள்", + "suiteBuilderCaseExpectedLabel": "எதிர்பார்க்கப்படும் மதிப்பு", + "historyLatency": "தாமதம்", + "suiteBuilderCaseTagsPlaceholder": "எ.கா. coding, python", + "targetTypeCombo": "சேர்க்கை", + "scorecardPassed": "தேர்ச்சி பெற்றது", + "suiteBuilderCaseTagsLabel": "குறிச்சொற்கள்", + "suiteBuilderNewSuite": "புதிய தொகுப்பு", + "notifyEvalLoadFailed": "மதிப்பீட்டுத் தரவை ஏற்ற முடியவில்லை", + "notConfigured": "உள்ளமைக்கப்படவில்லை", + "suiteBuilderCaseNamePlaceholder": "எ.கா. Python fibonacci சோதனை", + "intervalLabel": "இடைவெளி", + "suiteBuilderCreateAction": "தொகுப்பை உருவாக்கு", + "suiteBuilderCasesHint": "ஒவ்வொரு நிகழ்வும் ஒரு உள்ளீட்டை அனுப்பி, பதிலைச் சரிபார்க்கிறது.", + "suiteBuilderUpdatedAt": "புதுப்பிக்கப்பட்டது", + "errorBadge": "பிழை", + "suiteBuilderCasesTitle": "சோதனை நிகழ்வுகள்", + "edit": "திருத்து", + "monthly": "மாதந்தோறும்", + "suiteBuilderCasesRequired": "குறைந்தது ஒரு சோதனை நிகழ்வு தேவை", + "weeklyLimitSummary": "வாராந்திர பட்ஜெட் வரம்புச் சுருக்கம்", + "suiteBuilderDescriptionLabel": "விளக்கம்", + "targetComparisonHint": "இலக்குகளுக்கு இடையேயான மதிப்பீட்டு முடிவுகளின் அருகருகான ஒப்பீடு.", + "compareCompletedWithScore": "ஒப்பீடு முடிந்தது — {score}% தேர்ச்சி விகிதம்", + "staleQuotaTooltip": "கடைசிப் புதுப்பிப்பு தோல்வியடைந்தது — தற்காலிகமாகச் சேமிக்கப்பட்ட தரவு காட்டப்படுகிறது", "quotaThresholdLabel": "மினி", "quotaCutoffsColumnHelp": "மீதமுள்ள ஒதுக்கீடு இந்த சதவீதத்திற்கு அல்லது அதற்கும் குறைவாக இருந்தால் கோரிக்கைகளை நிறுத்தவும்.", "quotaCutoffsButtonDefault": "இயல்புநிலை", @@ -9704,70 +9711,70 @@ "providerQuotaHomeHint": "இணைக்கப்பட்ட கணக்குகளின் நேரலை நிலை" }, "modals": { - "waitingAuth": "Waiting for Authorization", - "verificationUrl": "Verification URL", - "yourCode": "Your Code", - "remoteAccess": "Remote access:", - "connectedSuccess": "Connected Successfully!", - "connectionFailed": "Connection Failed", - "chooseAuthMethod": "Choose your authentication method:", + "waitingAuth": "அங்கீகாரத்திற்காகக் காத்திருக்கிறது", + "verificationUrl": "சரிபார்ப்பு URL", + "yourCode": "உங்கள் குறியீடு", + "remoteAccess": "தொலைநிலை அணுகல்:", + "connectedSuccess": "வெற்றிகரமாக இணைக்கப்பட்டது!", + "connectionFailed": "இணைப்பு தோல்வியடைந்தது", + "chooseAuthMethod": "உங்கள் அங்கீகார முறையைத் தேர்வுசெய்யவும்:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", - "importToken": "Import Token", - "pasteToken": "Paste refresh token from Kiro IDE.", + "googleAccount": "Google கணக்கு", + "githubAccount": "GitHub கணக்கு", + "importToken": "டோக்கனை இறக்குமதி செய்", + "pasteToken": "Kiro IDE இலிருந்து புதுப்பிப்பு டோக்கனை ஒட்டவும்.", "awsRegion": "AWS Region", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCache": "Reading from AWS SSO cache", - "readingFromCursor": "Reading from Cursor IDE database", - "initializing": "Initializing...", - "pricingConfig": "Pricing Configuration", - "loadingPricing": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "noPricingData": "No pricing data available", - "noModelsFound": "No models found" + "autoDetecting": "டோக்கன்கள் தானாகக் கண்டறியப்படுகின்றன...", + "readingFromCache": "AWS SSO தற்காலிகச் சேமிப்பிலிருந்து படிக்கிறது", + "readingFromCursor": "Cursor IDE தரவுத்தளத்திலிருந்து படிக்கிறது", + "initializing": "தொடங்குகிறது...", + "pricingConfig": "விலையிடல் உள்ளமைவு", + "loadingPricing": "விலையிடல் தரவு ஏற்றப்படுகிறது...", + "pricingRatesFormat": "விலையிடல் கட்டண வடிவம்", + "noPricingData": "விலையிடல் தரவு எதுவும் இல்லை", + "noModelsFound": "மாதிரிகள் எதுவும் கிடைக்கவில்லை" }, "loggers": { - "allProviders": "All Providers", - "allModels": "All Models", - "allAccounts": "All Accounts", - "allApiKeys": "All API Keys", - "allTypes": "All Types", - "allLevels": "All Levels", + "allProviders": "அனைத்து வழங்குநர்களும்", + "allModels": "அனைத்து மாதிரிகளும்", + "allAccounts": "அனைத்து கணக்குகளும்", + "allApiKeys": "அனைத்து API விசைகளும்", + "allTypes": "அனைத்து வகைகளும்", + "allLevels": "அனைத்து நிலைகளும்", "modelAZ": "Model A-Z", "modelZA": "Model Z-A", - "loadingLogs": "Loading logs...", - "loadingProxyLogs": "Loading proxy logs...", - "noLogEntries": "No log entries found", - "noPayloadData": "No payload data available for this log entry.", - "proxyEvent": "Proxy Event", + "loadingLogs": "பதிவுகள் ஏற்றப்படுகின்றன...", + "loadingProxyLogs": "பதிலி பதிவுகள் ஏற்றப்படுகின்றன...", + "noLogEntries": "பதிவு உள்ளீடுகள் எதுவும் கிடைக்கவில்லை", + "noPayloadData": "இந்தப் பதிவு உள்ளீட்டிற்கு பேலோட் தரவு எதுவும் இல்லை.", + "proxyEvent": "பதிலி நிகழ்வு", "proxy": "Proxy", - "level": "Level", - "directNative": "Direct (native)", - "combo": "Combo", + "level": "நிலை", + "directNative": "நேரடி (சொந்த)", + "combo": "கூட்டு", "inputTokens": "I:", "outputTokens": "O:" }, "stats": { - "usageOverview": "Usage Overview", - "outputTokens": "Output Tokens", - "totalCost": "Total Cost", - "usageByModel": "Usage by Model", - "usageByAccount": "Usage by Account", - "failedToLoad": "Failed to load usage statistics.", - "tokenHealth": "Token Health", - "totalOAuth": "Total OAuth", - "healthy": "Healthy", - "warning": "Warning", - "errored": "Errored", - "lastCheck": "Last check", - "noData": "No data", - "share": "Share", - "unableToLoad": "Unable to load system metrics", - "product": "Product", - "resources": "Resources", - "company": "Company", + "usageOverview": "பயன்பாட்டுக் கண்ணோட்டம்", + "outputTokens": "வெளியீட்டு டோக்கன்கள்", + "totalCost": "மொத்தச் செலவு", + "usageByModel": "மாதிரி வாரியான பயன்பாடு", + "usageByAccount": "கணக்கு வாரியான பயன்பாடு", + "failedToLoad": "பயன்பாட்டுப் புள்ளிவிவரங்களை ஏற்ற முடியவில்லை.", + "tokenHealth": "டோக்கன் நிலை", + "totalOAuth": "மொத்த OAuth", + "healthy": "சீரானது", + "warning": "எச்சரிக்கை", + "errored": "பிழையடைந்தது", + "lastCheck": "கடைசி சரிபார்ப்பு", + "noData": "தரவு இல்லை", + "share": "பகிர்", + "unableToLoad": "கணினி அளவீடுகளை ஏற்ற முடியவில்லை", + "product": "தயாரிப்பு", + "resources": "வளங்கள்", + "company": "நிறுவனம்", "tokenHealthTooltips": { "allHealthy": "எல்லா டோக்கன்களும் ஆரோக்கியமாக உள்ளன", "needsAttention": "சில டோக்கன்களுக்கு கவனம் தேவை", @@ -9812,70 +9819,70 @@ "noAccountUsage": "இன்னும் கணக்கு-சிறப்பு பயன்பாடு பதிவு செய்யப்படவில்லை. இங்கே தரவுகளை காண OAuth கணக்குகளைப் பயன்படுத்தி கோரிக்கைகள் செய்யவும்." }, "auth": { - "welcome": "Welcome", - "signIn": "Sign in", - "enterPassword": "Enter your password to continue", - "password": "Password", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", - "unifiedAiApiProxyDesc": "Route requests to multiple AI providers through a single endpoint. Load balancing, failover, and usage tracking built in.", - "passwordNotEnabled": "Password protection is not enabled", - "loading": "Loading...", - "invalidPassword": "Invalid password", - "errorOccurredRetry": "An error occurred. Please try again.", - "configureInstance": "Let's get your OmniRoute instance configured", - "runOnboardingWizard": "Run the onboarding wizard to set up your password and connect your first AI provider.", - "startOnboarding": "Start Onboarding", - "secureYourInstance": "Secure Your Instance", - "setPasswordDescription": "Set a password to protect your dashboard and secure your API endpoints from unauthorized access.", - "configurePassword": "Configure Password", - "continue": "Continue", - "windowWillClose": "This window will close automatically...", - "closeTabNow": "You can close this tab now.", - "copyUrlManual": "Please copy the URL from the address bar and paste it in the application.", - "accessDeniedDescription": "You don't have permission to access this resource. Check your API key or contact the administrator.", - "goToDashboard": "Go to Dashboard", - "featureMultiProviderTitle": "Multi-Provider", - "featureMultiProviderDesc": "OpenAI, Anthropic, Google, and more", - "featureLoadBalancingTitle": "Load Balancing", - "featureLoadBalancingDesc": "Distribute requests intelligently", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Monitor costs and tokens", - "resetPassword": "Reset Password", - "resetDescription": "Choose a method to recover access to your dashboard", - "stopServer": "Stop the OmniRoute server", - "processing": "Processing...", - "pleaseWait": "Please wait while we complete the authorization.", - "authSuccess": "Authorization Successful!", - "copyUrl": "Copy This URL", - "accessDenied": "Access Denied", - "methodCliTitle": "Method 1: CLI Reset", - "methodCliDescription": "Run the following command on the server where OmniRoute is running:", - "methodCliHint": "This will prompt you to set a new password. The server must be stopped first.", - "methodManualTitle": "Method 2: Manual Reset", - "methodManualDescription": "Delete the password from the database and set a new one on startup:", - "setPasswordInYour": "Set a new password in your", - "fileLabelSuffix": "file:", + "welcome": "வரவேற்கிறோம்", + "signIn": "உள்நுழைக", + "enterPassword": "தொடர உங்கள் கடவுச்சொல்லை உள்ளிடவும்", + "password": "கடவுச்சொல்", + "unifiedProxy": "ஒருங்கிணைந்த AI API ப்ராக்ஸி", + "unifiedAiApiProxy": "ஒருங்கிணைந்த AI API ப்ராக்ஸி", + "unifiedAiApiProxyDesc": "ஒரே முனைப்புள்ளி மூலம் பல AI வழங்குநர்களுக்குக் கோரிக்கைகளை வழிமாற்றுங்கள். சுமை சமநிலைப்படுத்தல், செயலிழப்பு மாற்று மற்றும் பயன்பாட்டுக் கண்காணிப்பு ஆகியவை உள்ளமைக்கப்பட்டுள்ளன.", + "passwordNotEnabled": "கடவுச்சொல் பாதுகாப்பு இயக்கப்படவில்லை", + "loading": "ஏற்றப்படுகிறது...", + "invalidPassword": "தவறான கடவுச்சொல்", + "errorOccurredRetry": "ஒரு பிழை ஏற்பட்டது. மீண்டும் முயற்சிக்கவும்.", + "configureInstance": "உங்கள் OmniRoute நிகழ்வை உள்ளமைப்போம்", + "runOnboardingWizard": "உங்கள் கடவுச்சொல்லை அமைத்து, முதல் AI வழங்குநரை இணைக்க தொடக்கநிலை அமைப்பு வழிகாட்டியை இயக்கவும்.", + "startOnboarding": "தொடக்கநிலை அமைப்பைத் தொடங்கு", + "secureYourInstance": "உங்கள் நிகழ்வைப் பாதுகாக்கவும்", + "setPasswordDescription": "உங்கள் கட்டுப்பாட்டுப் பலகையைப் பாதுகாக்கவும், அங்கீகரிக்கப்படாத அணுகலிலிருந்து உங்கள் API முனைப்புள்ளிகளைப் பாதுகாப்பாக வைத்திருக்கவும் ஒரு கடவுச்சொல்லை அமைக்கவும்.", + "configurePassword": "கடவுச்சொல்லை உள்ளமைக்கவும்", + "continue": "தொடரவும்", + "windowWillClose": "இந்தச் சாளரம் தானாகவே மூடப்படும்...", + "closeTabNow": "இப்போது இந்தத் தாவலை மூடலாம்.", + "copyUrlManual": "முகவரிப் பட்டியிலிருந்து URL-ஐ நகலெடுத்து பயன்பாட்டில் ஒட்டவும்.", + "accessDeniedDescription": "இந்த வளத்தை அணுக உங்களுக்கு அனுமதி இல்லை. உங்கள் API key-ஐச் சரிபார்க்கவும் அல்லது நிர்வாகியைத் தொடர்புகொள்ளவும்.", + "goToDashboard": "கட்டுப்பாட்டுப் பலகைக்குச் செல்", + "featureMultiProviderTitle": "பல வழங்குநர்கள்", + "featureMultiProviderDesc": "OpenAI, Anthropic, Google மற்றும் பல", + "featureLoadBalancingTitle": "சுமை சமநிலைப்படுத்தல்", + "featureLoadBalancingDesc": "கோரிக்கைகளை அறிவார்ந்த முறையில் பகிர்ந்தளிக்கவும்", + "featureUsageTrackingTitle": "பயன்பாட்டுக் கண்காணிப்பு", + "featureUsageTrackingDesc": "செலவுகள் மற்றும் டோக்கன்களைக் கண்காணிக்கவும்", + "resetPassword": "கடவுச்சொல்லை மீட்டமை", + "resetDescription": "உங்கள் டாஷ்போர்டிற்கான அணுகலை மீட்டெடுக்க ஒரு முறையைத் தேர்ந்தெடுக்கவும்", + "stopServer": "OmniRoute சேவையகத்தை நிறுத்தவும்", + "processing": "செயலாக்கப்படுகிறது...", + "pleaseWait": "அங்கீகாரத்தை நிறைவு செய்யும் வரை காத்திருக்கவும்.", + "authSuccess": "அங்கீகாரம் வெற்றிகரமாக முடிந்தது!", + "copyUrl": "இந்த URL-ஐ நகலெடுக்கவும்", + "accessDenied": "அணுகல் மறுக்கப்பட்டது", + "methodCliTitle": "முறை 1: CLI மூலம் மீட்டமைத்தல்", + "methodCliDescription": "OmniRoute இயங்கும் சேவையகத்தில் பின்வரும் கட்டளையை இயக்கவும்:", + "methodCliHint": "இது புதிய கடவுச்சொல்லை அமைக்கும்படி உங்களிடம் கேட்கும். முதலில் சேவையகம் நிறுத்தப்பட்டிருக்க வேண்டும்.", + "methodManualTitle": "முறை 2: கைமுறையாக மீட்டமைத்தல்", + "methodManualDescription": "தரவுத்தளத்திலிருந்து கடவுச்சொல்லை நீக்கி, தொடக்கத்தின்போது புதிய கடவுச்சொல்லை அமைக்கவும்:", + "setPasswordInYour": "உங்கள் பின்வரும் கோப்பில் புதிய கடவுச்சொல்லை அமைக்கவும்:", + "fileLabelSuffix": "கோப்பு:", "newPasswordPlaceholder": "your_new_password", - "deleteSettingsFile": "Delete", - "orRemovePasswordHashField": "or remove the passwordHash field", - "restartServerWithNewPassword": "Restart the server - it will use the new password", - "backToLogin": "Back to Login", - "forgotPassword": "Forgot password?", + "deleteSettingsFile": "நீக்கவும்", + "orRemovePasswordHashField": "அல்லது passwordHash புலத்தை அகற்றவும்", + "restartServerWithNewPassword": "சேவையகத்தை மறுதொடக்கம் செய்யவும் - அது புதிய கடவுச்சொல்லைப் பயன்படுத்தும்", + "backToLogin": "உள்நுழைவுக்குத் திரும்பு", + "forgotPassword": "கடவுச்சொல்லை மறந்துவிட்டீர்களா?", "continueWithOidc": "OIDC மூலம் தொடரவும்", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", - "Authorization": "Authorization", + "defaultPasswordHint": "இயல்புநிலை கடவுச்சொல்: CHANGEME (INITIAL_PASSWORD அமைக்கப்படவில்லை எனில்)", + "Authorization": "அங்கீகாரம்", "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "அங்கீகாரத்திற்காகக் காத்திருக்கிறது...", + "waitingForGoogleAuthorization": "Google அங்கீகாரத்திற்காகக் காத்திருக்கிறது...", + "waitingForOpenAIAuthorization": "OpenAI அங்கீகாரத்திற்காகக் காத்திருக்கிறது...", + "waitingForAntigravityAuthorization": "Antigravity அங்கீகாரத்திற்காகக் காத்திருக்கிறது...", + "waitingForQoderAuthorization": "Qoder அங்கீகாரத்திற்காகக் காத்திருக்கிறது...", + "exchangingCodeForTokens": "குறியீடு டோக்கன்களாகப் பரிமாறப்படுகிறது...", + "nodeIncompatibleTitle": "பொருந்தாத Node.js பதிப்பு", + "nodeIncompatibleDesc": "நீங்கள் Node.js {version} பதிப்பைப் பயன்படுத்துகிறீர்கள்; இது OmniRoute ஆதரிக்கும் பாதுகாப்பான இயக்கச் சூழல் கொள்கைக்கு உட்பட்டதல்ல. பாதுகாப்புத் திருத்தங்கள் செய்யப்பட்ட Node.js 20.x அல்லது 22.x LTS வெளியீட்டைப் பயன்படுத்தவும்.", + "nodeIncompatibleFixLabel": "தீர்வு: பாதுகாப்புத் திருத்தங்கள் செய்யப்பட்ட Node.js 22 LTS வெளியீட்டை நிறுவவும்", + "nodeIncompatibleHint": "OmniRoute-க்கு Node.js 22.22.2+ (22.x LTS) அல்லது 24.0.0+ (24.x LTS) தேவை. Node 24 LTS பரிந்துரைக்கப்படுகிறது.", "resetViaAppDataTitle": "அப்ளிகேஷன் தரவின் மூலம் மீட்டமைக்கவும்", "resetViaAppDataDescription": "அந்த செயலியின் தரவுத்தொகுப்பில் உள்ள அமைப்புகள் கோப்பை நீக்கி உங்கள் கடவுச்சொல்லை மீட்டமைக்கவும்:", "quitDesktopApp": "OmniRoute டெஸ்க்டாப் செயலியை முற்றிலும் மூடு", @@ -9930,72 +9937,72 @@ }, "landing": { "brandName": "OmniRoute", - "navigateHome": "Navigate to home", - "toggleMenu": "Toggle menu", - "featuresLink": "Features", - "docsLink": "Docs", + "navigateHome": "முகப்புக்குச் செல்லவும்", + "toggleMenu": "மெனுவை மாற்றிக் காட்டவும்", + "featuresLink": "அம்சங்கள்", + "docsLink": "ஆவணங்கள்", "github": "GitHub", - "versionLive": "v1.0 is now live", - "oneEndpoint": "One Endpoint for", - "allProviders": "All AI Providers", - "heroDescription": "AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.", - "getStarted": "Get Started", - "viewOnGithub": "View on GitHub", - "powerfulFeatures": "Powerful Features", - "featuresSubtitle": "Everything you need to manage your AI infrastructure in one place, built for scale.", - "featureUnifiedEndpointTitle": "Unified Endpoint", - "featureUnifiedEndpointDesc": "Access all providers via a single standard API URL.", - "featureEasySetupTitle": "Easy Setup", - "featureEasySetupDesc": "Get up and running in minutes with npx command.", - "featureModelFallbackTitle": "Model Fallback", - "featureModelFallbackDesc": "Automatically switch providers on failure or high latency.", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Detailed analytics and cost monitoring across all models.", - "featureOAuthApiKeysTitle": "OAuth & API Keys", - "featureOAuthApiKeysDesc": "Securely manage credentials in one vault.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncDesc": "Sync your configurations across devices instantly.", - "featureCliSupportTitle": "CLI Support", - "featureCliSupportDesc": "Works with Claude Code, Codex, Cline, Cursor, and more.", - "featureDashboardTitle": "Dashboard", - "featureDashboardDesc": "Visual dashboard for real-time traffic analysis.", - "howItWorks": "How OmniRoute Works", - "howItWorksDescription": "Data flows seamlessly from your application through our intelligent routing layer to the best provider for the job.", - "howItWorksStep1Title": "1. CLI & SDKs", - "howItWorksStep1Description": "Your requests start from your favorite tools or our unified SDK. Just change the base URL.", - "howItWorksStep2Title": "2. OmniRoute Hub", - "howItWorksStep2Description": "Our engine analyzes the prompt, checks provider health, and routes for lowest latency or cost.", - "howItWorksStep3Title": "3. AI Providers", - "howItWorksStep3Description": "The request is fulfilled by OpenAI, Anthropic, Gemini, or others instantly.", - "getStartedIn30Seconds": "Get Started in 30 Seconds", - "getStartedDescription": "Install OmniRoute, configure your providers via web dashboard, and start routing AI requests.", - "installOmniRoute": "Install OmniRoute", - "installStepDescription": "Run npx command to start the server instantly", - "openDashboard": "Open Dashboard", - "openDashboardStepDescription": "Configure providers and API keys via web interface", - "routeRequests": "Route Requests", - "routeRequestsStepDescription": "Point your CLI tools to {endpoint}", - "terminal": "terminal", - "copy": "Copy", - "copied": "✓ Copied", - "startingOmniRoute": "Starting OmniRoute...", - "serverRunningOnLabel": "Server running on", - "dashboardLabel": "Dashboard", - "readyToRoute": "Ready to route! ✓", - "configureProvidersNote": "📝 Configure providers in dashboard or use environment variables", - "dataLocation": "Data Location:", + "versionLive": "v1.0 இப்போது பயன்பாட்டில் உள்ளது", + "oneEndpoint": "ஒரே இறுதிப்புள்ளியில்", + "allProviders": "அனைத்து AI வழங்குநர்களும்", + "heroDescription": "இணைய முகப்புப்பலகையுடன் கூடிய AI இறுதிப்புள்ளி ப்ராக்ஸி — CLIProxyAPI-இன் JavaScript பதிப்பு. Claude Code, OpenAI Codex, Cline, RooCode மற்றும் பிற CLI கருவிகளுடன் தடையின்றிச் செயல்படுகிறது.", + "getStarted": "தொடங்குங்கள்", + "viewOnGithub": "GitHub-இல் காண்க", + "powerfulFeatures": "சக்திவாய்ந்த அம்சங்கள்", + "featuresSubtitle": "உங்கள் AI உட்கட்டமைப்பை ஒரே இடத்தில் நிர்வகிக்கத் தேவையான அனைத்தும், பெரிய அளவிலான பயன்பாட்டிற்காக உருவாக்கப்பட்டுள்ளன.", + "featureUnifiedEndpointTitle": "ஒருங்கிணைந்த இறுதிப்புள்ளி", + "featureUnifiedEndpointDesc": "ஒரே நிலையான API URL வழியாக அனைத்து வழங்குநர்களையும் அணுகுங்கள்.", + "featureEasySetupTitle": "எளிய அமைப்பு", + "featureEasySetupDesc": "npx கட்டளையைப் பயன்படுத்தி சில நிமிடங்களில் செயல்படத் தொடங்குங்கள்.", + "featureModelFallbackTitle": "மாதிரி மாற்று ஏற்பாடு", + "featureModelFallbackDesc": "செயலிழப்பு அல்லது அதிக தாமதம் ஏற்பட்டால் தானாகவே வழங்குநர்களை மாற்றுங்கள்.", + "featureUsageTrackingTitle": "பயன்பாட்டுக் கண்காணிப்பு", + "featureUsageTrackingDesc": "அனைத்து மாதிரிகளுக்குமான விரிவான பகுப்பாய்வுகளும் செலவுக் கண்காணிப்பும்.", + "featureOAuthApiKeysTitle": "OAuth மற்றும் API விசைகள்", + "featureOAuthApiKeysDesc": "ஒரே பாதுகாப்புப் பெட்டகத்தில் நற்சான்றுகளைப் பாதுகாப்பாக நிர்வகியுங்கள்.", + "featureCloudSyncTitle": "கிளவுட் ஒத்திசைவு", + "featureCloudSyncDesc": "உங்கள் உள்ளமைவுகளைச் சாதனங்கள் முழுவதும் உடனடியாக ஒத்திசையுங்கள்.", + "featureCliSupportTitle": "CLI ஆதரவு", + "featureCliSupportDesc": "Claude Code, Codex, Cline, Cursor மற்றும் பலவற்றுடன் செயல்படுகிறது.", + "featureDashboardTitle": "முகப்புப்பலகை", + "featureDashboardDesc": "நிகழ்நேரப் போக்குவரத்துப் பகுப்பாய்வுக்கான காட்சிமுகப்புப்பலகை.", + "howItWorks": "OmniRoute எவ்வாறு செயல்படுகிறது", + "howItWorksDescription": "உங்கள் பயன்பாட்டிலிருந்து எங்களின் நுண்ணறிவுமிக்க வழித்தட அடுக்கு வழியாகப் பணிக்கு மிகவும் பொருத்தமான வழங்குநரிடம் தரவு தடையின்றிப் பாய்கிறது.", + "howItWorksStep1Title": "1. CLI மற்றும் SDK-கள்", + "howItWorksStep1Description": "உங்களுக்குப் பிடித்த கருவிகள் அல்லது எங்களின் ஒருங்கிணைந்த SDK-இலிருந்து உங்கள் கோரிக்கைகள் தொடங்குகின்றன. அடிப்படை URL-ஐ மட்டும் மாற்றுங்கள்.", + "howItWorksStep2Title": "2. OmniRoute மையம்", + "howItWorksStep2Description": "எங்கள் இயந்திரம் அறிவுறுத்தலைப் பகுப்பாய்வு செய்து, வழங்குநரின் செயல்நிலையைச் சரிபார்த்து, குறைந்த தாமதம் அல்லது செலவுக்கேற்ப வழித்தடத்தைத் தேர்ந்தெடுக்கிறது.", + "howItWorksStep3Title": "3. AI வழங்குநர்கள்", + "howItWorksStep3Description": "கோரிக்கை OpenAI, Anthropic, Gemini அல்லது பிற வழங்குநர்களால் உடனடியாக நிறைவேற்றப்படுகிறது.", + "getStartedIn30Seconds": "30 வினாடிகளில் தொடங்குங்கள்", + "getStartedDescription": "OmniRoute-ஐ நிறுவி, இணைய முகப்புப்பலகை வழியாக உங்கள் வழங்குநர்களை உள்ளமைத்து, AI கோரிக்கைகளை வழிநடத்தத் தொடங்குங்கள்.", + "installOmniRoute": "OmniRoute-ஐ நிறுவுங்கள்", + "installStepDescription": "சேவையகத்தை உடனடியாகத் தொடங்க npx கட்டளையை இயக்குங்கள்", + "openDashboard": "முகப்புப்பலகையைத் திறக்கவும்", + "openDashboardStepDescription": "இணைய இடைமுகம் வழியாக வழங்குநர்களையும் API விசைகளையும் உள்ளமைக்கவும்", + "routeRequests": "கோரிக்கைகளை வழிநடத்துங்கள்", + "routeRequestsStepDescription": "உங்கள் CLI கருவிகளை {endpoint} நோக்கி அமைக்கவும்", + "terminal": "டெர்மினல்", + "copy": "நகலெடு", + "copied": "✓ நகலெடுக்கப்பட்டது", + "startingOmniRoute": "OmniRoute தொடங்குகிறது...", + "serverRunningOnLabel": "சேவையகம் இயங்கும் முகவரி", + "dashboardLabel": "கட்டுப்பாட்டுப் பலகம்", + "readyToRoute": "வழித்தடமிடத் தயார்! ✓", + "configureProvidersNote": "📝 வழங்குநர்களைக் கட்டுப்பாட்டுப் பலகத்தில் உள்ளமைக்கவும் அல்லது சூழல் மாறிகளைப் பயன்படுத்தவும்", + "dataLocation": "தரவு இருப்பிடம்:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", - "product": "Product", - "dashboardLink": "Dashboard", - "changelog": "Changelog", - "resources": "Resources", - "documentation": "Documentation", + "product": "தயாரிப்பு", + "dashboardLink": "கட்டுப்பாட்டுப் பலகம்", + "changelog": "மாற்றப் பதிவு", + "resources": "வளங்கள்", + "documentation": "ஆவணங்கள்", "npm": "NPM", - "legal": "Legal", - "mitLicense": "MIT License", - "footerTagline": "The unified endpoint for AI generation. Connect, route, and manage your AI providers with ease.", - "copyright": "© {year} OmniRoute. All rights reserved.", + "legal": "சட்டத் தகவல்கள்", + "mitLicense": "MIT உரிமம்", + "footerTagline": "AI உருவாக்கத்திற்கான ஒருங்கிணைந்த முனைப்புள்ளி. உங்கள் AI வழங்குநர்களை எளிதாக இணைத்து, வழித்தடமிட்டு, நிர்வகிக்கவும்.", + "copyright": "© {year} OmniRoute. அனைத்து உரிமைகளும் பாதுகாக்கப்பட்டவை.", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", "flowToolCline": "Cline", @@ -10004,11 +10011,11 @@ "flowProviderAnthropic": "Anthropic", "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", - "interactiveDiagram": "Interactive diagram visible on desktop", - "ctaTitle": "Ready to Simplify Your AI Infrastructure?", - "ctaDescription": "Join developers who are streamlining their AI integrations with OmniRoute. Open source and free to start.", - "startFree": "Start Free", - "readDocumentation": "Read Documentation", + "interactiveDiagram": "ஊடாடும் வரைபடம் டெஸ்க்டாப்பில் தெரியும்", + "ctaTitle": "உங்கள் AI உள்கட்டமைப்பை எளிமைப்படுத்தத் தயாரா?", + "ctaDescription": "OmniRoute மூலம் தங்கள் AI ஒருங்கிணைப்புகளை நெறிப்படுத்தும் உருவாக்குநர்களுடன் இணையுங்கள். இது திறந்த மூலமானது, மேலும் இலவசமாகத் தொடங்கலாம்.", + "startFree": "இலவசமாகத் தொடங்குங்கள்", + "readDocumentation": "ஆவணங்களைப் படிக்கவும்", "company": "நிறுவனம்", "pricing": "விலை நிர்ணயம்", "apiReference": "API குறிப்பு", @@ -10023,45 +10030,45 @@ "communityDiscussions": "சமூக விவாதங்கள்" }, "docs": { - "title": "Documentation", - "quickStart": "Quick Start", + "title": "ஆவணங்கள்", + "quickStart": "விரைவுத் தொடக்கம்", "deploymentGuides": "வரிசைப்படுத்தல் வழிகாட்டிகள்", - "features": "Features", - "supportedProviders": "Supported Providers", - "supportedProvidersToc": "Providers", - "commonUseCases": "Common Use Cases", - "clientCompatibility": "Client Compatibility", - "protocolsToc": "Protocols", - "apiReference": "API Reference", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", - "method": "Method", - "path": "Path", - "notes": "Notes", - "modelPrefixes": "Model Prefixes", - "prefix": "Prefix", - "troubleshooting": "Troubleshooting", - "supportsChat": "Supports both chat and responses endpoints.", - "oauthAutoRefresh": "OAuth connection with automatic token refresh.", - "fullStreaming": "Full streaming support for all models.", - "docsLabel": "Docs", + "features": "அம்சங்கள்", + "supportedProviders": "ஆதரிக்கப்படும் வழங்குநர்கள்", + "supportedProvidersToc": "வழங்குநர்கள்", + "commonUseCases": "பொதுவான பயன்பாட்டு நிகழ்வுகள்", + "clientCompatibility": "கிளையண்ட் இணக்கத்தன்மை", + "protocolsToc": "நெறிமுறைகள்", + "apiReference": "API குறிப்பு", + "managementApiReference": "மேலாண்மை API குறிப்பு", + "managementApiDescription": "பதிலி பதிவேடு, வரம்பு ஒதுக்கீடுகள் மற்றும் பழைய பதிலி இடமாற்றத்திற்கான தானியக்க முனைப்புள்ளிகள்.", + "method": "முறை", + "path": "பாதை", + "notes": "குறிப்புகள்", + "modelPrefixes": "மாதிரி முன்னொட்டுகள்", + "prefix": "முன்னொட்டு", + "troubleshooting": "சிக்கல் தீர்வு", + "supportsChat": "அரட்டை மற்றும் responses endpoint-கள் இரண்டையும் ஆதரிக்கிறது.", + "oauthAutoRefresh": "தானியங்கி token புதுப்பிப்புடன் OAuth இணைப்பு.", + "fullStreaming": "அனைத்து model-களுக்கும் முழுமையான streaming ஆதரவு.", + "docsLabel": "ஆவணங்கள்", "docsHeroDescription": "AI gateway for multi-provider LLMs. One endpoint for OpenAI, Anthropic, Gemini, DeepSeek, GitHub Copilot, Claude Code, Cursor, and 100+ more providers.", - "openDashboard": "Open Dashboard", - "endpointPage": "Endpoint Page", + "openDashboard": "Dashboard-ஐத் திற", + "endpointPage": "Endpoint பக்கம்", "github": "GitHub", - "reportIssue": "Report Issue", - "onThisPage": "On this page", - "documentationVersion": "Documentation - v{version}", - "quickStartStep1Title": "1. Install and run", - "quickStartStep1Prefix": "Run", - "quickStartStep1Middle": "or clone from GitHub and run", - "quickStartStep2Title": "2. Create API key", - "quickStartStep2Text": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "quickStartStep3Title": "3. Connect providers", - "quickStartStep3Text": "Add provider accounts via OAuth login, API key, or free-tier auto-connect.", - "quickStartStep4Title": "4. Set client base URL", - "quickStartStep4Prefix": "Point your IDE or API client to", - "quickStartStep4Suffix": "Use provider prefix, for example", + "reportIssue": "சிக்கலைப் புகாரளி", + "onThisPage": "இந்தப் பக்கத்தில்", + "documentationVersion": "ஆவணங்கள் - v{version}", + "quickStartStep1Title": "1. நிறுவி இயக்கவும்", + "quickStartStep1Prefix": "இயக்கு", + "quickStartStep1Middle": "அல்லது GitHub-இலிருந்து clone செய்து இயக்கவும்", + "quickStartStep2Title": "2. API key-ஐ உருவாக்கவும்", + "quickStartStep2Text": "Endpoint -> Registered Keys என்பதற்குச் செல்லவும். ஒவ்வொரு சூழலுக்கும் ஒரு key-ஐ உருவாக்கவும்.", + "quickStartStep3Title": "3. Provider-களை இணைக்கவும்", + "quickStartStep3Text": "OAuth உள்நுழைவு, API key அல்லது இலவச அடுக்கு தானியங்கி இணைப்பு மூலம் provider கணக்குகளைச் சேர்க்கவும்.", + "quickStartStep4Title": "4. Client base URL-ஐ அமைக்கவும்", + "quickStartStep4Prefix": "உங்கள் IDE அல்லது API client-ஐ இதற்குச் சுட்டவும்", + "quickStartStep4Suffix": "Provider முன்னொட்டைப் பயன்படுத்தவும், எடுத்துக்காட்டாக", "deploySetupTitle": "அமைவு வழிகாட்டி", "deploySetupText": "OmniRoute க்கான படிப்படியான நிறுவல், சுற்றுச்சூழல் உள்ளமைவு மற்றும் முதல்-ஓட நடைப்பயிற்சி.", "deployElectronTitle": "எலக்ட்ரான் டெஸ்க்டாப்", @@ -10075,161 +10082,161 @@ "deployPwaTitle": "PWA", "deployPwaText": "ஆண்ட்ராய்டு, iOS மற்றும் டெஸ்க்டாப் உலாவிகளில் OmniRoute ஐ ஒரு முற்போக்கான வலை பயன்பாடாக நிறுவவும்.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", - "featureRoutingTitle": "Multi-Provider Routing", - "featureRoutingText": "Route requests to 30+ AI providers through a single OpenAI-compatible endpoint. Supports chat, responses, audio, and image APIs.", - "featureCombosTitle": "Combos and Balancing", - "featureCombosText": "Create model combos with fallback chains and balancing strategies: round-robin, priority, random, least-used, and cost-optimized.", - "featureUsageTitle": "Usage and Cost Tracking", - "featureUsageText": "Real-time token counting, cost calculation per provider/model, and detailed usage breakdown by API key and account.", - "featureAnalyticsTitle": "Analytics Dashboard", - "featureAnalyticsText": "Visual analytics with charts for requests, tokens, errors, latency, costs, and model popularity over time.", - "featureHealthTitle": "Health Monitoring", - "featureHealthText": "Live health checks, provider status, circuit breaker states, and automatic rate limit detection with exponential backoff.", - "featureCliTitle": "CLI Tools", - "featureCliText": "Manage IDE configurations, export/import backups, discover codex profiles, and configure settings from the dashboard.", - "featureSecurityTitle": "Security and Policies", - "featureSecurityText": "API key authentication, IP filtering, prompt injection guard, domain policies, session management, and audit logging.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncText": "Sync your configuration to Cloudflare Workers for remote access with encrypted credentials and automatic failover.", - "providersAcrossConnectionTypes": "{count} providers across three connection types.", - "manageProviders": "Manage Providers", - "providersCount": "{count} providers", - "providerTypeFree": "Free Tier", + "deployTermuxText": "Termux மூலம் Android-இல் OmniRoute-ஐ headless முறையில் இயக்கவும். உங்கள் மொபைல் உலாவியிலிருந்து dashboard-ஐ அணுகவும்.", + "featureRoutingTitle": "பல-Provider வழிப்படுத்தல்", + "featureRoutingText": "ஒரே OpenAI-compatible endpoint மூலம் 30+ AI provider-களுக்கு கோரிக்கைகளை வழிப்படுத்துங்கள். அரட்டை, responses, audio மற்றும் image API-களை ஆதரிக்கிறது.", + "featureCombosTitle": "Combo-கள் மற்றும் சமநிலைப்படுத்தல்", + "featureCombosText": "மாற்று fallback சங்கிலிகள் மற்றும் சமநிலைப்படுத்தும் உத்திகளுடன் model combo-களை உருவாக்கவும்: round-robin, முன்னுரிமை, சீரற்ற தேர்வு, குறைவாகப் பயன்படுத்தப்பட்டது மற்றும் செலவு-உகப்பாக்கப்பட்டது.", + "featureUsageTitle": "பயன்பாடு மற்றும் செலவுக் கண்காணிப்பு", + "featureUsageText": "நிகழ்நேர token எண்ணிக்கை, ஒவ்வொரு provider/model-க்குமான செலவுக் கணக்கீடு மற்றும் API key மற்றும் கணக்கின் அடிப்படையில் விரிவான பயன்பாட்டுப் பகுப்பாய்வு.", + "featureAnalyticsTitle": "பகுப்பாய்வு Dashboard", + "featureAnalyticsText": "கோரிக்கைகள், token-கள், பிழைகள், தாமதம், செலவுகள் மற்றும் காலப்போக்கிலான model பிரபலத்திற்கான விளக்கப்படங்களுடன் கூடிய காட்சிப் பகுப்பாய்வு.", + "featureHealthTitle": "நிலை கண்காணிப்பு", + "featureHealthText": "நேரடி நிலைச் சோதனைகள், provider நிலை, circuit breaker நிலைகள் மற்றும் exponential backoff உடன் தானியங்கி rate limit கண்டறிதல்.", + "featureCliTitle": "CLI கருவிகள்", + "featureCliText": "IDE உள்ளமைவுகளை நிர்வகிக்கவும், காப்புப்பிரதிகளை export/import செய்யவும், codex profile-களைக் கண்டறியவும் மற்றும் dashboard-இலிருந்து அமைப்புகளை உள்ளமைக்கவும்.", + "featureSecurityTitle": "பாதுகாப்பு மற்றும் கொள்கைகள்", + "featureSecurityText": "API key அங்கீகாரம், IP வடிகட்டல், prompt injection பாதுகாப்பு, domain கொள்கைகள், session மேலாண்மை மற்றும் audit பதிவு.", + "featureCloudSyncTitle": "Cloud ஒத்திசைவு", + "featureCloudSyncText": "மறையாக்கப்பட்ட சான்றுகளுடனும் தானியங்கி மாற்றுவழி செயல்பாட்டுடனும் தொலைநிலை அணுகலுக்காக உங்கள் உள்ளமைவை Cloudflare Workers உடன் ஒத்திசைக்கவும்.", + "providersAcrossConnectionTypes": "மூன்று இணைப்பு வகைகளில் {count} வழங்குநர்கள்.", + "manageProviders": "வழங்குநர்களை நிர்வகிக்கவும்", + "providersCount": "{count} வழங்குநர்கள்", + "providerTypeFree": "இலவச அடுக்கு", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", - "useCaseSingleEndpointTitle": "Single endpoint for many providers", - "useCaseSingleEndpointText": "Point clients to one base URL and route by model prefix (for example: gh/, cc/, kr/, openai/).", - "useCaseFallbackTitle": "Fallback and model switching with combos", - "useCaseFallbackText": "Create combo models in Dashboard and keep client config stable while providers rotate internally.", - "useCaseUsageVisibilityTitle": "Usage, cost and debug visibility", - "useCaseUsageVisibilityText": "Track tokens and cost by provider, account, and API key in Usage and Analytics tabs.", + "providerTypeApiKey": "API விசை", + "useCaseSingleEndpointTitle": "பல வழங்குநர்களுக்கான ஒரே முனைப்புள்ளி", + "useCaseSingleEndpointText": "கிளையன்டுகளை ஒரே அடிப்படை URL-க்குச் சுட்டி, மாதிரி முன்னொட்டின்படி வழிமாற்றவும் (எடுத்துக்காட்டாக: gh/, cc/, kr/, openai/).", + "useCaseFallbackTitle": "சேர்க்கைகளுடன் மாற்றுவழி மற்றும் மாதிரி மாறுதல்", + "useCaseFallbackText": "Dashboard-இல் சேர்க்கை மாதிரிகளை உருவாக்கி, வழங்குநர்கள் அகத்தில் சுழற்சி முறையில் மாறும்போதும் கிளையன்ட் உள்ளமைவை நிலையாக வைத்திருக்கவும்.", + "useCaseUsageVisibilityTitle": "பயன்பாடு, செலவு மற்றும் பிழைத்திருத்தத் தெளிவுநிலை", + "useCaseUsageVisibilityText": "Usage மற்றும் Analytics தாவல்களில் வழங்குநர், கணக்கு மற்றும் API விசை வாரியாக டோக்கன்களையும் செலவையும் கண்காணிக்கவும்.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", - "modelRecommendationLabel": "Model recommendation: explicit prefix", - "clientCodexTitle": "Codex / GitHub Copilot Models", - "clientCodexBullet1": "Use model IDs with", - "clientCodexBullet2": "Codex-family models auto-route to", - "clientCodexBullet3": "Non-Codex models continue on", + "baseUrlLabel": "அடிப்படை URL", + "chatEndpointLabel": "அரட்டை முனைப்புள்ளி", + "modelRecommendationLabel": "மாதிரிப் பரிந்துரை: வெளிப்படையான முன்னொட்டு", + "clientCodexTitle": "Codex / GitHub Copilot மாதிரிகள்", + "clientCodexBullet1": "இதனுடன் மாதிரி ID-களைப் பயன்படுத்தவும்:", + "clientCodexBullet2": "Codex-குடும்ப மாதிரிகள் தானாகவே இதற்கு வழிமாற்றப்படும்:", + "clientCodexBullet3": "Codex அல்லாத மாதிரிகள் இதில் தொடரும்:", "clientCursorTitle": "Cursor IDE", - "clientCursorBullet1": "Use", - "clientCursorBullet1Suffix": "prefix for Cursor models.", - "clientCursorBullet2": "OAuth connection - login from the Providers page.", + "clientCursorBullet1": "இதைக் பயன்படுத்தவும்:", + "clientCursorBullet1Suffix": "Cursor மாதிரிகளுக்கான முன்னொட்டு.", + "clientCursorBullet2": "OAuth இணைப்பு - Providers பக்கத்திலிருந்து உள்நுழையவும்.", "clientClaudeTitle": "Claude Code / Antigravity", - "clientClaudeBullet1Prefix": "Use", - "clientClaudeBullet1Middle": "(Claude) or", - "clientClaudeBullet1Suffix": "(Antigravity) prefix.", + "clientClaudeBullet1Prefix": "இதைக் பயன்படுத்தவும்:", + "clientClaudeBullet1Middle": "(Claude) அல்லது", + "clientClaudeBullet1Suffix": "(Antigravity) முன்னொட்டு.", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "Use OmniRoute as an OpenAI-compatible base URL and keep explicit provider prefixes for deterministic routing.", - "clientWindsurfBullet2": "Point models to `/v1/chat/completions` for general traffic and preserve `/v1/responses` for Codex-style flows.", - "clientWindsurfBullet3": "Use Dashboard -> CLI Tools for a ready-made Windsurf configuration guide.", + "clientWindsurfBullet1": "OmniRoute-ஐ OpenAI-இணக்கமான அடிப்படை URL ஆகப் பயன்படுத்தி, உறுதியான வழிமாற்றத்திற்காக வெளிப்படையான வழங்குநர் முன்னொட்டுகளை வைத்திருக்கவும்.", + "clientWindsurfBullet2": "பொதுவான போக்குவரத்துக்கு மாதிரிகளை `/v1/chat/completions`-க்குச் சுட்டி, Codex-பாணி செயலோட்டங்களுக்காக `/v1/responses`-ஐத் தக்கவைக்கவும்.", + "clientWindsurfBullet3": "தயாராக உள்ள Windsurf உள்ளமைவு வழிகாட்டிக்கு Dashboard -> CLI Tools-ஐப் பயன்படுத்தவும்.", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline works best with explicit provider/model prefixes so the router never has to guess the backend.", - "clientClineBullet2": "Use `/v1/chat/completions` for general models and reuse the same OmniRoute base URL across different accounts.", - "clientClineBullet3": "Use the Providers dashboard to validate OAuth/API key before debugging Cline runtime issues.", + "clientClineBullet1": "வெளிப்படையான வழங்குநர்/மாதிரி முன்னொட்டுகளுடன் Cline சிறப்பாகச் செயல்படும்; இதனால் திசைவி எந்தப் பின்தளத்தைப் பயன்படுத்த வேண்டும் என்று ஒருபோதும் ஊகிக்க வேண்டியதில்லை.", + "clientClineBullet2": "பொதுவான மாதிரிகளுக்கு `/v1/chat/completions`-ஐப் பயன்படுத்தி, வெவ்வேறு கணக்குகளிலும் அதே OmniRoute அடிப்படை URL-ஐ மீண்டும் பயன்படுத்தவும்.", + "clientClineBullet3": "Cline இயக்கநேரச் சிக்கல்களைப் பிழைத்திருத்துவதற்கு முன் OAuth/API விசையைச் சரிபார்க்க Providers dashboard-ஐப் பயன்படுத்தவும்.", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "Use OmniRoute as a stable base URL while rotating accounts or provider combos underneath.", - "clientKimiBullet2": "Prefer prefixed models in coding flows so fallback and audit trail remain explicit.", - "clientKimiBullet3": "Use `/v1/responses` when you want native Responses-style routing for tool-using clients.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "clientKimiBullet1": "அடியில் உள்ள கணக்குகள் அல்லது வழங்குநர் சேர்க்கைகளைச் சுழற்சி முறையில் மாற்றும்போது, OmniRoute-ஐ நிலையான அடிப்படை URL ஆகப் பயன்படுத்தவும்.", + "clientKimiBullet2": "மாற்றுவழியும் தணிக்கைத் தடமும் வெளிப்படையாக இருக்க, குறியீட்டாக்கச் செயலோட்டங்களில் முன்னொட்டுள்ள மாதிரிகளுக்கு முன்னுரிமை அளிக்கவும்.", + "clientKimiBullet3": "கருவிகளைப் பயன்படுத்தும் கிளையன்டுகளுக்கு சொந்த Responses-பாணி வழிமாற்றம் தேவைப்படும்போது `/v1/responses`-ஐப் பயன்படுத்தவும்.", + "protocolsTitle": "நெறிமுறைகள்: MCP & A2A", + "protocolsDescription": "OpenAI-இணக்கமான API-களுடன் கூடுதலாக OmniRoute இரண்டு செயல்பாட்டு நெறிமுறைகளை வழங்குகிறது: கருவிச் செயலாக்கத்திற்கு MCP மற்றும் முகவர்களுக்கு இடையிலான செயலோட்டங்களுக்கு A2A.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "தணிக்கைத் தெளிவுநிலையுடன் OmniRoute கருவிகளைக் கண்டறிந்து அழைக்க கிளையன்டுகளை அனுமதிக்க, stdio வழியாக MCP-ஐப் பயன்படுத்தவும்.", + "protocolMcpStep1": "`omniroute --mcp` மூலம் MCP போக்குவரத்தைத் தொடங்கவும்.", + "protocolMcpStep2": "உங்கள் MCP கிளையண்டை stdio போக்குவரத்திற்குச் சுட்டிக்காட்டவும்.", + "protocolMcpStep3": "இணைப்பைச் சரிபார்க்க `omniroute_get_health` மற்றும் `omniroute_list_combos` ஆகியவற்றை அழைக்கவும்.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", - "endpointChatNote": "OpenAI-compatible chat endpoint (default).", - "endpointResponsesNote": "Responses API endpoint (Codex, o-series).", - "endpointModelsNote": "Model catalog for all connected providers.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", - "endpointSpeechNote": "Text-to-speech generation (ElevenLabs, OpenAI TTS).", - "endpointEmbeddingsNote": "Text embedding generation (OpenAI, Cohere, Voyage).", - "endpointImagesNote": "Image generation (NanoBanana).", - "endpointRewriteChatNote": "Rewrite helper for clients without /v1.", - "endpointRewriteResponsesNote": "Rewrite helper for Responses without /v1.", - "endpointRewriteModelsNote": "Rewrite helper for model discovery without /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", - "modelPrefixesDescriptionStart": "Use the provider prefix before the model name to route to a specific provider. Example:", - "modelPrefixesDescriptionEnd": "routes to GitHub Copilot.", - "provider": "Provider", - "type": "Type", - "troubleshootingModelRouting": "If the client fails with model routing, use explicit provider/model (for example: gh/gpt-5.1-codex).", - "troubleshootingAmbiguousModels": "If you receive ambiguous model errors, pick a provider prefix instead of a bare model ID.", - "troubleshootingCodexFamily": "For GitHub Codex-family models, keep model as gh/codex-model; router selects /responses automatically.", - "troubleshootingTestConnection": "Use Dashboard > Providers > Test Connection before testing from IDEs or external clients.", - "troubleshootingCircuitBreaker": "If a provider shows circuit breaker open, wait for the cooldown or check Health page for details.", - "troubleshootingOAuth": "For OAuth providers, re-authenticate if tokens expire. Check the provider card status indicator.", - "endpointCompletionsNote": "Legacy completions endpoint for text generation.", - "endpointModerationsNote": "Content moderation and safety classification.", - "endpointRerankNote": "Document reranking for retrieval-augmented generation (Cohere, Jina).", - "endpointSearchNote": "Web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity).", - "endpointSearchAnalyticsNote": "Analytics and metrics for search requests.", - "endpointVideoNote": "Video generation (ComfyUI, SD WebUI workflows).", - "endpointMusicNote": "Music generation via ComfyUI workflows.", - "endpointMessagesNote": "Anthropic-native messages endpoint.", - "endpointCountTokensNote": "Count tokens for a given message payload.", - "endpointFilesNote": "File upload for multimodal inputs.", - "endpointBatchesNote": "Batch processing for bulk API requests.", - "endpointWsNote": "WebSocket endpoint for real-time streaming.", - "mgmtProvidersListNote": "List all registered provider connections.", - "mgmtProvidersCreateNote": "Create a new provider connection.", - "mgmtProvidersUpdateNote": "Update an existing provider connection.", - "mgmtProvidersDeleteNote": "Delete a provider connection.", - "mgmtProvidersTestNote": "Test connectivity and authentication for a provider.", - "mgmtProvidersModelsNote": "List available models for a specific provider.", - "mgmtSettingsGetNote": "Retrieve current application settings.", - "mgmtSettingsUpdateNote": "Update application settings.", - "mgmtPayloadRulesGetNote": "Get payload transformation rules.", - "mgmtPayloadRulesUpdateNote": "Update payload transformation rules.", - "mcpToolsTitle": "MCP Tools", - "mcpToolsDescription": "OmniRoute exposes {count} tools via Model Context Protocol for agent orchestration.", - "mcpToolsCount": "{count} tools", - "mcpToolsToc": "MCP Tools", - "mcpToolsRoutingTitle": "Routing & Discovery", - "mcpToolsRoutingDesc": "Health checks, combo management, quota monitoring, cost reporting, and model catalog access.", - "mcpToolsOperationsTitle": "Operations & Strategy", - "mcpToolsOperationsDesc": "Route simulation, budget guards, strategy switching, resilience profiles, and provider metrics.", - "mcpToolsCacheTitle": "Cache Management", - "mcpToolsCacheDesc": "View cache statistics and flush semantic or signature caches.", + "protocolA2aDesc": "பணிகளை ஒத்திசைவாக அல்லது SSE ஸ்ட்ரீமிங் வழியாகச் சமர்ப்பிக்க A2A JSON-RPC-ஐப் பயன்படுத்தவும்.", + "protocolA2aStep1": "முகவர் கண்டறிதலுக்கு `/.well-known/agent.json`-ஐப் படிக்கவும்.", + "protocolA2aStep2": "`POST /a2a`-க்கு `message/send` அல்லது `message/stream` கோரிக்கைகளை அனுப்பவும்.", + "protocolA2aStep3": "`tasks/get` மற்றும் `tasks/cancel` மூலம் பணியின் வாழ்க்கைச் சுழற்சியை நிர்வகிக்கவும்.", + "protocolTroubleshootingTitle": "நெறிமுறைச் சிக்கல் தீர்வு", + "protocolTroubleshooting1": "MCP நிலை ஆஃப்லைனில் இருந்தால், stdio செயல்முறை இயங்குவதையும் heartbeat கோப்பு புதுப்பிக்கப்படுவதையும் சரிபார்க்கவும்.", + "protocolTroubleshooting2": "A2A பணிகள் `working` நிலையிலேயே இருந்தால், முடிவு நிலையை அறிய `/api/a2a/tasks/:id` மற்றும் ஸ்ட்ரீம் நிகழ்வுகளை ஆய்வு செய்யவும்.", + "protocolTroubleshooting3": "செயல்பாட்டுக் கட்டுப்பாடுகள் மற்றும் தணிக்கைத் தெரிவுநிலைக்கு `/dashboard/mcp` மற்றும் `/dashboard/a2a` ஆகியவற்றைப் பயன்படுத்தவும்.", + "endpointChatNote": "OpenAI-இணக்கமான அரட்டை முனைப்புள்ளி (இயல்புநிலை).", + "endpointResponsesNote": "Responses API முனைப்புள்ளி (Codex, o-series).", + "endpointModelsNote": "இணைக்கப்பட்ட அனைத்து வழங்குநர்களுக்குமான மாதிரிப் பட்டியல்.", + "endpointAudioNote": "ஒலி உரைமாற்றம் (Deepgram, AssemblyAI).", + "endpointSpeechNote": "உரையிலிருந்து பேச்சு உருவாக்கம் (ElevenLabs, OpenAI TTS).", + "endpointEmbeddingsNote": "உரை உட்பொதிவு உருவாக்கம் (OpenAI, Cohere, Voyage).", + "endpointImagesNote": "பட உருவாக்கம் (NanoBanana).", + "endpointRewriteChatNote": "/v1 இல்லாத கிளையண்டுகளுக்கான மீளெழுதும் உதவி.", + "endpointRewriteResponsesNote": "/v1 இல்லாத Responses-க்கான மீளெழுதும் உதவி.", + "endpointRewriteModelsNote": "/v1 இல்லாத மாதிரி கண்டறிதலுக்கான மீளெழுதும் உதவி.", + "mgmtProxiesListNote": "சேமிக்கப்பட்ட ப்ராக்ஸி பதிவேட்டு உருப்படிகளைப் பட்டியலிடவும் (பக்கமிடலை ஆதரிக்கிறது).", + "mgmtProxiesCreateNote": "பதிவேட்டில் மீண்டும் பயன்படுத்தக்கூடிய ப்ராக்ஸி உருப்படியை உருவாக்கவும்.", + "mgmtProxiesHealthNote": "ப்ராக்ஸி பதிவுகளிலிருந்து சேமிக்கப்பட்ட ஒவ்வொரு ப்ராக்ஸிக்கும் 24 மணிநேர/சுழலும் ஆரோக்கிய அளவீடுகளைப் பெறவும்.", + "mgmtProxiesBulkAssignNote": "ஒரே கோரிக்கையில் பல வரம்பு ID-களுக்கு ஒரு ப்ராக்ஸியை ஒதுக்கவும் அல்லது நீக்கவும்.", + "mgmtAssignmentsListNote": "வரம்பு, scope_id அல்லது proxy_id அடிப்படையில் ப்ராக்ஸி ஒதுக்கீடுகளைப் பட்டியலிடவும்.", + "mgmtAssignmentsUpdateNote": "உலகளாவிய/வழங்குநர்/கணக்கு/காம்போ வரம்புக்குப் ப்ராக்ஸியை ஒதுக்கவும் அல்லது நீக்கவும்.", + "mgmtLegacyMigrationNote": "பழைய proxyConfig வரைபடங்களைப் பதிவேட்டு ஒதுக்கீடுகளுக்கு இறக்குமதி செய்யவும்.", + "modelPrefixesDescriptionStart": "ஒரு குறிப்பிட்ட வழங்குநருக்கு வழிமாற்ற, மாதிரிப் பெயருக்கு முன் வழங்குநர் முன்னொட்டைப் பயன்படுத்தவும். எடுத்துக்காட்டு:", + "modelPrefixesDescriptionEnd": "GitHub Copilot-க்கு வழிமாற்றுகிறது.", + "provider": "வழங்குநர்", + "type": "வகை", + "troubleshootingModelRouting": "மாதிரி வழிமாற்றத்தில் கிளையண்ட் தோல்வியடைந்தால், வெளிப்படையான வழங்குநர்/மாதிரியைக் குறிப்பிடவும் (எடுத்துக்காட்டு: gh/gpt-5.1-codex).", + "troubleshootingAmbiguousModels": "தெளிவற்ற மாதிரிப் பிழைகள் ஏற்பட்டால், தனித்த மாதிரி ID-க்குப் பதிலாக வழங்குநர் முன்னொட்டைத் தேர்ந்தெடுக்கவும்.", + "troubleshootingCodexFamily": "GitHub Codex-குடும்ப மாதிரிகளுக்கு, மாதிரியை gh/codex-model ஆகவே வைத்திருக்கவும்; வழிமாற்றி தானாகவே /responses-ஐத் தேர்ந்தெடுக்கும்.", + "troubleshootingTestConnection": "IDE-கள் அல்லது வெளிப்புற கிளையண்டுகளிலிருந்து சோதிப்பதற்கு முன் Dashboard > Providers > Test Connection என்பதைப் பயன்படுத்தவும்.", + "troubleshootingCircuitBreaker": "ஒரு வழங்குநரில் circuit breaker திறந்திருப்பதாகக் காட்டப்பட்டால், cooldown முடியும் வரை காத்திருக்கவும் அல்லது விவரங்களுக்கு Health பக்கத்தைப் பார்க்கவும்.", + "troubleshootingOAuth": "OAuth வழங்குநர்களுக்கு, டோக்கன்கள் காலாவதியானால் மீண்டும் அங்கீகரிக்கவும். வழங்குநர் அட்டையின் நிலைக் குறிகாட்டியைச் சரிபார்க்கவும்.", + "endpointCompletionsNote": "உரை உருவாக்கத்திற்கான பழைய completions முனைப்புள்ளி.", + "endpointModerationsNote": "உள்ளடக்க மதிப்பாய்வு மற்றும் பாதுகாப்பு வகைப்பாடு.", + "endpointRerankNote": "மீட்டெடுப்பு-மேம்படுத்தப்பட்ட உருவாக்கத்திற்கான ஆவண மறுதரவரிசைப்படுத்தல் (Cohere, Jina).", + "endpointSearchNote": "5 வழங்குநர்களுடன் இணையத் தேடல் (Serper, Brave, Exa, Tavily, Perplexity).", + "endpointSearchAnalyticsNote": "தேடல் கோரிக்கைகளுக்கான பகுப்பாய்வுகளும் அளவீடுகளும்.", + "endpointVideoNote": "காணொளி உருவாக்கம் (ComfyUI, SD WebUI பணிப்பாய்வுகள்).", + "endpointMusicNote": "ComfyUI பணிப்பாய்வுகள் மூலம் இசை உருவாக்கம்.", + "endpointMessagesNote": "Anthropic-சார்ந்த இயல்நிலைச் செய்திகள் முனைப்புள்ளி.", + "endpointCountTokensNote": "கொடுக்கப்பட்ட செய்திப் பயன்சுமைக்கான டோக்கன்களை எண்ணுக.", + "endpointFilesNote": "பல்மாதிரி உள்ளீடுகளுக்கான கோப்புப் பதிவேற்றம்.", + "endpointBatchesNote": "மொத்த API கோரிக்கைகளுக்கான தொகுதி செயலாக்கம்.", + "endpointWsNote": "நிகழ்நேர ஸ்ட்ரீமிங்கிற்கான WebSocket முனைப்புள்ளி.", + "mgmtProvidersListNote": "பதிவுசெய்யப்பட்ட அனைத்து வழங்குநர் இணைப்புகளையும் பட்டியலிடுக.", + "mgmtProvidersCreateNote": "புதிய வழங்குநர் இணைப்பை உருவாக்குக.", + "mgmtProvidersUpdateNote": "ஏற்கனவே உள்ள வழங்குநர் இணைப்பைப் புதுப்பிக்கவும்.", + "mgmtProvidersDeleteNote": "வழங்குநர் இணைப்பை நீக்குக.", + "mgmtProvidersTestNote": "வழங்குநருக்கான இணைப்புத்தன்மையையும் அங்கீகாரத்தையும் சோதிக்கவும்.", + "mgmtProvidersModelsNote": "குறிப்பிட்ட வழங்குநருக்குக் கிடைக்கும் மாதிரிகளைப் பட்டியலிடுக.", + "mgmtSettingsGetNote": "தற்போதைய பயன்பாட்டு அமைப்புகளைப் பெறுக.", + "mgmtSettingsUpdateNote": "பயன்பாட்டு அமைப்புகளைப் புதுப்பிக்கவும்.", + "mgmtPayloadRulesGetNote": "பயன்சுமை மாற்ற விதிகளைப் பெறுக.", + "mgmtPayloadRulesUpdateNote": "பயன்சுமை மாற்ற விதிகளைப் புதுப்பிக்கவும்.", + "mcpToolsTitle": "MCP கருவிகள்", + "mcpToolsDescription": "முகவர் ஒருங்கிணைப்பிற்காக Model Context Protocol மூலம் OmniRoute {count} கருவிகளை வழங்குகிறது.", + "mcpToolsCount": "{count} கருவிகள்", + "mcpToolsToc": "MCP கருவிகள்", + "mcpToolsRoutingTitle": "வழித்தட அமைப்பும் கண்டறிதலும்", + "mcpToolsRoutingDesc": "நிலைச் சோதனைகள், கூட்டமைப்பு மேலாண்மை, ஒதுக்கீடு கண்காணிப்பு, செலவு அறிக்கையிடல் மற்றும் மாதிரிப் பட்டியல் அணுகல்.", + "mcpToolsOperationsTitle": "செயல்பாடுகளும் உத்தியும்", + "mcpToolsOperationsDesc": "வழித்தட உருவகப்படுத்தல், வரவுசெலவுக் கட்டுப்பாடுகள், உத்தி மாற்றம், மீள்திறன் சுயவிவரங்கள் மற்றும் வழங்குநர் அளவீடுகள்.", + "mcpToolsCacheTitle": "தற்காலிகச் சேமிப்பக மேலாண்மை", + "mcpToolsCacheDesc": "தற்காலிகச் சேமிப்பகப் புள்ளிவிவரங்களைக் காணவும், பொருள்சார் அல்லது கையொப்பத் தற்காலிகச் சேமிப்பகங்களை அழிக்கவும்.", "mcpToolsCompressionTitle": "சுருக்க இயந்திரங்கள்", "mcpToolsCompressionDesc": "RTK/Brotli கம்ப்ரஷன், ஸ்வாப் என்ஜின்களை உள்ளமைக்கவும் மற்றும் காம்போ மூலம் சுருக்க பகுப்பாய்வுகளை ஆய்வு செய்யவும்.", "mcpToolsOneProxyTitle": "1 ப்ராக்ஸி / சுரங்கங்கள்", "mcpToolsOneProxyDesc": "வெளிச்செல்லும் ப்ராக்ஸிகளை நிர்வகிக்கவும், குடியிருப்பு ஐபிகளை சுழற்றவும் மற்றும் ப்ராக்ஸி ஆரோக்கியத்தை ஆய்வு செய்யவும்.", - "mcpToolsMemoryTitle": "Memory", - "mcpToolsMemoryDesc": "Search, add, and clear persistent conversational memory entries.", - "mcpToolsSkillsTitle": "Skills", - "mcpToolsSkillsDesc": "List, enable, execute, and monitor custom skill executions.", - "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "Automatically create optimized combos based on your connected providers, usage patterns, and model capabilities.", - "featureSearchTitle": "Web Search", - "featureSearchText": "Integrated web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity) including analytics and cost tracking.", - "featureMemoryTitle": "Memory System", - "featureMemoryText": "Persistent conversational memory with extraction, injection, retrieval, and summarization across sessions.", - "featureSkillsTitle": "Skills Framework", - "featureSkillsText": "Extensible skill system with built-in and custom skills, sandbox execution, request interception, and context injection.", - "featureAcpTitle": "Agent Communication", - "featureAcpText": "Agent Communication Protocol (ACP) registry for managing agent-to-agent workflows and tool orchestration.", - "protocolAcpTitle": "ACP (Agent Communication)", - "protocolAcpDesc": "Register and manage agents via the ACP registry for inter-agent communication and tool sharing.", - "protocolAcpStep1": "Navigate to Dashboard → Agents to view registered ACP agents.", - "protocolAcpStep2": "Register new agents with capabilities and endpoint configuration.", - "protocolAcpStep3": "Use CLI Tools to configure agent communication channels.", + "mcpToolsMemoryTitle": "நினைவகம்", + "mcpToolsMemoryDesc": "நிலையான உரையாடல் நினைவகப் பதிவுகளைத் தேடவும், சேர்க்கவும் மற்றும் அழிக்கவும்.", + "mcpToolsSkillsTitle": "திறன்கள்", + "mcpToolsSkillsDesc": "தனிப்பயன் திறன் செயல்பாடுகளைப் பட்டியலிடவும், இயக்கவும், செயல்படுத்தவும் மற்றும் கண்காணிக்கவும்.", + "featureAutoComboTitle": "தானியங்குக் கூட்டமைப்பு", + "featureAutoComboText": "இணைக்கப்பட்ட உங்கள் வழங்குநர்கள், பயன்பாட்டு முறைகள் மற்றும் மாதிரித் திறன்களின் அடிப்படையில் உகந்த கூட்டமைப்புகளைத் தானாக உருவாக்கவும்.", + "featureSearchTitle": "இணையத் தேடல்", + "featureSearchText": "பகுப்பாய்வு மற்றும் செலவுக் கண்காணிப்பு உட்பட 5 வழங்குநர்களுடன் (Serper, Brave, Exa, Tavily, Perplexity) ஒருங்கிணைந்த இணையத் தேடல்.", + "featureMemoryTitle": "நினைவக அமைப்பு", + "featureMemoryText": "அமர்வுகளுக்கு இடையே பிரித்தெடுத்தல், உட்செலுத்தல், மீட்டெடுத்தல் மற்றும் சுருக்கமாக்கலுடன் கூடிய நிலையான உரையாடல் நினைவகம்.", + "featureSkillsTitle": "திறன்கள் கட்டமைப்பு", + "featureSkillsText": "உள்ளமைக்கப்பட்ட மற்றும் தனிப்பயன் திறன்கள், சாண்ட்பாக்ஸ் இயக்கம், கோரிக்கை இடைமறிப்பு மற்றும் சூழல் உட்செலுத்தல் ஆகியவற்றைக் கொண்ட விரிவாக்கக்கூடிய திறன் அமைப்பு.", + "featureAcpTitle": "முகவர் தொடர்பு", + "featureAcpText": "முகவர்களுக்கு இடையேயான பணிப்பாய்வுகளையும் கருவி ஒருங்கிணைப்பையும் நிர்வகிப்பதற்கான முகவர் தொடர்பு நெறிமுறை (ACP) பதிவகம்.", + "protocolAcpTitle": "ACP (முகவர் தொடர்பு)", + "protocolAcpDesc": "முகவர்களுக்கு இடையேயான தொடர்பு மற்றும் கருவிப் பகிர்வுக்காக ACP பதிவகம் வழியாக முகவர்களைப் பதிவுசெய்து நிர்வகிக்கவும்.", + "protocolAcpStep1": "பதிவுசெய்யப்பட்ட ACP முகவர்களைக் காண டாஷ்போர்டு → முகவர்கள் என்பதற்குச் செல்லவும்.", + "protocolAcpStep2": "திறன்கள் மற்றும் முனைப்புள்ளி உள்ளமைவுடன் புதிய முகவர்களைப் பதிவுசெய்யவும்.", + "protocolAcpStep3": "முகவர் தொடர்புச் சேனல்களை உள்ளமைக்க CLI கருவிகளைப் பயன்படுத்தவும்.", "metadataTitleTemplate": "%s — OmniRoute ஆவணங்கள்", "metadataDefaultTitle": "OmniRoute ஆவணம்", "metadataDescription": "OmniRoute AI கேட்‌வேவிற்கான விரிவான ஆவணங்கள் — அமைப்பு, API, சுருக்கம், பரப்புரை, மற்றும் மேலும்.", @@ -10276,95 +10283,95 @@ } }, "legal": { - "privacyPolicy": "Privacy Policy", - "termsOfService": "Terms of Service", - "providerConfigurations": "Provider configurations", - "apiKeys": "API keys", - "usageLogs": "Usage logs", - "applicationSettings": "Application settings", - "viewExportAnalytics": "View and export usage analytics", - "clearHistory": "Clear usage history at any time", - "configureRetention": "Configure log retention policies", - "backupRestore": "Back up and restore your database", - "privacyMetadataTitle": "Privacy Policy | OmniRoute", - "privacyMetadataDescription": "Privacy policy for the OmniRoute AI API proxy router.", - "termsMetadataTitle": "Terms of Service | OmniRoute", - "termsMetadataDescription": "Terms of service for the OmniRoute AI API proxy router.", - "backToHome": "Back to home", - "lastUpdated": "Last updated: {date}", - "policyLastUpdatedDate": "February 13, 2026", + "privacyPolicy": "தனியுரிமைக் கொள்கை", + "termsOfService": "சேவை விதிமுறைகள்", + "providerConfigurations": "வழங்குநர் உள்ளமைவுகள்", + "apiKeys": "API விசைகள்", + "usageLogs": "பயன்பாட்டுப் பதிவுகள்", + "applicationSettings": "செயலி அமைப்புகள்", + "viewExportAnalytics": "பயன்பாட்டுப் பகுப்பாய்வைக் கண்டு ஏற்றுமதி செய்யவும்", + "clearHistory": "எப்போது வேண்டுமானாலும் பயன்பாட்டு வரலாற்றை அழிக்கவும்", + "configureRetention": "பதிவுத் தக்கவைப்புக் கொள்கைகளை உள்ளமைக்கவும்", + "backupRestore": "உங்கள் தரவுத்தளத்தைக் காப்புப் பிரதி எடுத்து மீட்டமைக்கவும்", + "privacyMetadataTitle": "தனியுரிமைக் கொள்கை | OmniRoute", + "privacyMetadataDescription": "OmniRoute AI API பதிலி திசைவிக்கான தனியுரிமைக் கொள்கை.", + "termsMetadataTitle": "சேவை விதிமுறைகள் | OmniRoute", + "termsMetadataDescription": "OmniRoute AI API பதிலி திசைவிக்கான சேவை விதிமுறைகள்.", + "backToHome": "முகப்புப் பக்கத்திற்குத் திரும்பு", + "lastUpdated": "கடைசியாகப் புதுப்பிக்கப்பட்டது: {date}", + "policyLastUpdatedDate": "பிப்ரவரி 13, 2026", "listSeparator": "-", - "questionsVisit": "Questions? Visit our", - "githubRepository": "GitHub repository", - "privacySection1Title": "1. Local-First Architecture", - "privacySection1Text": "OmniRoute is designed as a local-first application. All data processing and storage occurs entirely on your machine. There is no centralized server collecting your information.", - "privacySection2Title": "2. Data We Store", - "privacyDataStoredIn": "The following data is stored locally in", - "privacyDataProviderConfigurationsDesc": "connection URLs, provider types, and priority settings", - "privacyDataApiKeysDesc": "encrypted and stored locally for authenticating with AI providers", - "privacyDataUsageLogsDesc": "request counts, token usage, model names, timestamps, and response times", - "privacyDataApplicationSettingsDesc": "theme preferences, routing strategy, and combo configurations", - "privacySection3Title": "3. No Telemetry", - "privacySection3Text": "OmniRoute does not collect telemetry, analytics, or crash reports. No data is sent to us or any third party. Your usage patterns, API calls, and configurations remain entirely private.", - "privacySection4Title": "4. Third-Party AI Providers", - "privacySection4Text": "When you make API calls through OmniRoute, your requests are forwarded to the AI providers you have configured (for example: OpenAI, Anthropic, Google). These providers have their own privacy policies that govern how they handle your data. Please review:", - "privacyOpenAiPolicy": "OpenAI Privacy Policy", - "privacyAnthropicPolicy": "Anthropic Privacy Policy", - "privacyGooglePolicy": "Google Privacy Policy", - "privacySection5Title": "5. Cloud Sync (Optional)", - "privacySection5Text": "If you enable the optional cloud sync feature, provider configurations and API keys may be transmitted to a configured cloud endpoint. This feature is disabled by default and requires explicit opt-in.", - "privacySection6Title": "6. Logging", - "privacyLoggingIntro": "Request logs can be configured through the dashboard settings. You can:", - "privacySection7Title": "7. Your Rights", - "privacySection7TextStart": "Since all data is stored locally, you have full control. You can delete your data at any time by removing the", - "privacySection7TextEnd": "directory or using the database backup and restore features in the dashboard.", - "termsSection1Title": "1. Overview", - "termsSection1Text": "OmniRoute is a local-first AI API proxy router that operates entirely on your machine. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "termsSection2Title": "2. User Responsibilities", - "termsResponsibilityApiKeys": "You are solely responsible for managing your own API keys and credentials for third-party AI providers (OpenAI, Anthropic, Google, etc.).", - "termsResponsibilityCompliance": "You must comply with the terms of service of each AI provider whose API you access through OmniRoute.", - "termsResponsibilitySecurity": "You are responsible for the security of your local OmniRoute installation, including setting a password and restricting network access.", - "termsSection3Title": "3. How It Works", - "termsSection3Text": "OmniRoute acts as an intermediary proxy. API calls sent to OmniRoute are translated and forwarded to your configured AI providers. OmniRoute does not modify the content of your requests or responses beyond the necessary protocol translation.", - "termsSection4Title": "4. Data Handling", - "termsDataStoredLocally": "All data is stored locally on your machine in a SQLite database.", - "termsNoTransmission": "OmniRoute does not transmit any data to external servers unless you explicitly enable cloud sync features.", - "termsDataLocationText": "Usage logs, API keys, and configuration are stored in", - "termsSection5Title": "5. Disclaimer", - "termsSection5Text": "OmniRoute is provided \"as is\" without warranty of any kind. We are not responsible for any costs incurred through API usage, service disruptions, or data loss. Always maintain backups of your configuration.", - "termsSection6Title": "6. Open Source", - "termsSection6Text": "OmniRoute is open-source software. You are free to inspect, modify, and distribute it under the terms of its license." + "questionsVisit": "கேள்விகள் உள்ளனவா? எங்களின்", + "githubRepository": "GitHub களஞ்சியத்தைப் பார்வையிடவும்", + "privacySection1Title": "1. உள்ளூர்-முதன்மை கட்டமைப்பு", + "privacySection1Text": "OmniRoute ஓர் உள்ளூர்-முதன்மை செயலியாக வடிவமைக்கப்பட்டுள்ளது. அனைத்து தரவுச் செயலாக்கமும் சேமிப்பகமும் முழுமையாக உங்கள் கணினியிலேயே நடைபெறுகின்றன. உங்கள் தகவல்களைச் சேகரிக்கும் மையப்படுத்தப்பட்ட சேவையகம் எதுவும் இல்லை.", + "privacySection2Title": "2. நாங்கள் சேமிக்கும் தரவு", + "privacyDataStoredIn": "பின்வரும் தரவு இதில் உள்ளூராகச் சேமிக்கப்படுகிறது", + "privacyDataProviderConfigurationsDesc": "இணைப்பு URL-கள், வழங்குநர் வகைகள் மற்றும் முன்னுரிமை அமைப்புகள்", + "privacyDataApiKeysDesc": "AI வழங்குநர்களுடன் அங்கீகரிப்பதற்காகக் குறியாக்கம் செய்யப்பட்டு உள்ளூராகச் சேமிக்கப்படுகின்றன", + "privacyDataUsageLogsDesc": "கோரிக்கை எண்ணிக்கைகள், டோக்கன் பயன்பாடு, மாதிரிப் பெயர்கள், நேர முத்திரைகள் மற்றும் பதிலளிப்பு நேரங்கள்", + "privacyDataApplicationSettingsDesc": "கருப்பொருள் விருப்பத்தேர்வுகள், திசைவிப்பு உத்தி மற்றும் சேர்க்கை உள்ளமைவுகள்", + "privacySection3Title": "3. தொலைஅளவீடு இல்லை", + "privacySection3Text": "OmniRoute தொலைஅளவீடு, பகுப்பாய்வு அல்லது செயலிழப்பு அறிக்கைகளைச் சேகரிப்பதில்லை. எங்களுக்கோ எந்த மூன்றாம் தரப்பினருக்கோ தரவு எதுவும் அனுப்பப்படுவதில்லை. உங்கள் பயன்பாட்டு முறைகள், API அழைப்புகள் மற்றும் உள்ளமைவுகள் முற்றிலும் தனிப்பட்டவையாகவே இருக்கும்.", + "privacySection4Title": "4. மூன்றாம் தரப்பு AI வழங்குநர்கள்", + "privacySection4Text": "OmniRoute வழியாக நீங்கள் API அழைப்புகளைச் செய்யும்போது, உங்கள் கோரிக்கைகள் நீங்கள் உள்ளமைத்துள்ள AI வழங்குநர்களுக்கு (எடுத்துக்காட்டாக: OpenAI, Anthropic, Google) அனுப்பப்படுகின்றன. உங்கள் தரவை அவர்கள் எவ்வாறு கையாளுகிறார்கள் என்பதை நிர்வகிக்கும் தனித்தனியான தனியுரிமைக் கொள்கைகள் இந்த வழங்குநர்களுக்கு உள்ளன. தயவுசெய்து இவற்றைப் பரிசீலிக்கவும்:", + "privacyOpenAiPolicy": "OpenAI தனியுரிமைக் கொள்கை", + "privacyAnthropicPolicy": "Anthropic தனியுரிமைக் கொள்கை", + "privacyGooglePolicy": "Google தனியுரிமைக் கொள்கை", + "privacySection5Title": "5. கிளவுட் ஒத்திசைவு (விருப்பத்தேர்வு)", + "privacySection5Text": "விருப்பத்தேர்வான கிளவுட் ஒத்திசைவு அம்சத்தை நீங்கள் இயக்கினால், வழங்குநர் உள்ளமைவுகளும் API விசைகளும் உள்ளமைக்கப்பட்ட கிளவுட் முனைப்புள்ளிக்கு அனுப்பப்படலாம். இந்த அம்சம் இயல்பாக முடக்கப்பட்டிருக்கும்; இதை இயக்க வெளிப்படையான ஒப்புதல் தேவை.", + "privacySection6Title": "6. பதிவுசெய்தல்", + "privacyLoggingIntro": "டாஷ்போர்டு அமைப்புகள் மூலம் கோரிக்கைப் பதிவுகளை உள்ளமைக்கலாம். நீங்கள் செய்யக்கூடியவை:", + "privacySection7Title": "7. உங்கள் உரிமைகள்", + "privacySection7TextStart": "எல்லாத் தரவும் உள்ளூரிலேயே சேமிக்கப்படுவதால், உங்களுக்கு முழுக் கட்டுப்பாடு உள்ளது. எந்த நேரத்திலும் பின்வரும் கோப்பகத்தை அகற்றுவதன் மூலம் உங்கள் தரவை நீக்கலாம்:", + "privacySection7TextEnd": "அல்லது டாஷ்போர்டில் உள்ள தரவுத்தளக் காப்புப்பிரதி மற்றும் மீட்டெடுப்பு அம்சங்களைப் பயன்படுத்தலாம்.", + "termsSection1Title": "1. கண்ணோட்டம்", + "termsSection1Text": "OmniRoute என்பது உங்கள் கணினியிலேயே முழுமையாக இயங்கும், உள்ளூர்-முதன்மை AI API ப்ராக்ஸி ரூட்டர் ஆகும். இது சுமைச் சமநிலைப்படுத்தல், செயலிழப்பு மாற்று மற்றும் பயன்பாட்டுக் கண்காணிப்பு ஆகியவற்றுடன் கோரிக்கைகளைப் பல AI வழங்குநர்களுக்கு வழிமாற்றுகிறது.", + "termsSection2Title": "2. பயனர் பொறுப்புகள்", + "termsResponsibilityApiKeys": "மூன்றாம் தரப்பு AI வழங்குநர்களுக்கான (OpenAI, Anthropic, Google போன்றவை) உங்கள் சொந்த API விசைகளையும் உள்நுழைவுச் சான்றுகளையும் நிர்வகிப்பதற்கு நீங்கள் மட்டுமே முழுப் பொறுப்பாவீர்கள்.", + "termsResponsibilityCompliance": "OmniRoute மூலம் நீங்கள் API-ஐ அணுகும் ஒவ்வொரு AI வழங்குநரின் சேவை விதிமுறைகளையும் நீங்கள் கடைப்பிடிக்க வேண்டும்.", + "termsResponsibilitySecurity": "கடவுச்சொல் அமைத்தல் மற்றும் பிணைய அணுகலைக் கட்டுப்படுத்துதல் உள்ளிட்ட உங்கள் உள்ளூர் OmniRoute நிறுவலின் பாதுகாப்பிற்கு நீங்களே பொறுப்பு.", + "termsSection3Title": "3. இது எவ்வாறு செயல்படுகிறது", + "termsSection3Text": "OmniRoute ஓர் இடைநிலை ப்ராக்ஸியாகச் செயல்படுகிறது. OmniRoute-க்கு அனுப்பப்படும் API அழைப்புகள் மாற்றப்பட்டு, நீங்கள் உள்ளமைத்துள்ள AI வழங்குநர்களுக்கு அனுப்பப்படுகின்றன. தேவையான நெறிமுறை மாற்றத்தைத் தவிர, உங்கள் கோரிக்கைகள் அல்லது பதில்களின் உள்ளடக்கத்தை OmniRoute மாற்றாது.", + "termsSection4Title": "4. தரவுக் கையாளுதல்", + "termsDataStoredLocally": "எல்லாத் தரவும் உங்கள் கணினியில் உள்ள SQLite தரவுத்தளத்தில் உள்ளூரிலேயே சேமிக்கப்படுகிறது.", + "termsNoTransmission": "கிளவுட் ஒத்திசைவு அம்சங்களை நீங்கள் வெளிப்படையாக இயக்காத வரை, OmniRoute எந்தத் தரவையும் வெளிப்புறச் சேவையகங்களுக்கு அனுப்பாது.", + "termsDataLocationText": "பயன்பாட்டுப் பதிவுகள், API விசைகள் மற்றும் உள்ளமைவு ஆகியவை இதில் சேமிக்கப்படுகின்றன:", + "termsSection5Title": "5. பொறுப்புத்துறப்பு", + "termsSection5Text": "OmniRoute எந்தவித உத்தரவாதமும் இன்றி \"உள்ளபடியே\" வழங்கப்படுகிறது. API பயன்பாட்டால் ஏற்படும் செலவுகள், சேவைத் தடங்கல்கள் அல்லது தரவு இழப்பு ஆகியவற்றுக்கு நாங்கள் பொறுப்பல்ல. உங்கள் உள்ளமைவின் காப்புப்பிரதிகளை எப்போதும் பராமரிக்கவும்.", + "termsSection6Title": "6. திறந்த மூல மென்பொருள்", + "termsSection6Text": "OmniRoute ஒரு திறந்த மூல மென்பொருள். அதன் உரிம விதிமுறைகளின்படி அதை ஆய்வு செய்யவும், மாற்றவும், விநியோகிக்கவும் உங்களுக்கு உரிமை உண்டு." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI முகவர்கள்", + "description": "உங்கள் கணினியில் நிறுவப்பட்டுள்ள CLI முகவர்களைக் கண்டறியவும். தானாகக் கண்டறிவதற்குத் தனிப்பயன் முகவர்களைச் சேர்க்கவும்.", + "refresh": "புதுப்பிக்கவும்", + "installed": "நிறுவப்பட்டது", + "notFound": "காணப்படவில்லை", + "builtIn": "உள்ளமைந்தது", + "custom": "தனிப்பயன்", + "remove": "அகற்று", + "addCustomAgent": "தனிப்பயன் முகவரைச் சேர்", + "addCustomAgentDesc": "கண்டறிதலுக்காக எந்தவொரு CLI கருவியையும் பதிவுசெய்யவும். புதுப்பிக்கும்போது அது தானாகவே ஸ்கேன் செய்யப்படும்.", + "agentName": "முகவர் பெயர்", + "binaryName": "பைனரி பெயர்", + "versionCommand": "பதிப்புக் கட்டளை", + "spawnArgs": "தொடக்க அளவுருக்கள்", + "addAgent": "முகவரைச் சேர்", + "scanning": "CLI முகவர்களுக்காகக் கணினியை வருடுகிறது...", + "opencodeIntegration": "OpenCode ஒருங்கிணைப்பு", + "opencodeDetected": "opencode {version} கண்டறியப்பட்டது", + "opencodeDesc": "உங்கள் OmniRoute அடிப்படை URL மற்றும் கிடைக்கக்கூடிய அனைத்து மாதிரிகளுடனும் பயன்படுத்தத் தயாரான {configFile} கோப்பை உருவாக்குங்கள் — அதை உங்கள் திட்டத்தின் மூலக் கோப்பகத்தில் வைத்து {command} கட்டளையை இயக்குங்கள்.", + "downloadConfig": "{file} கோப்பைப் பதிவிறக்கு", + "downloaded": "பதிவிறக்கப்பட்டது!", + "setupGuideTitle": "அமைவு வழிகாட்டி", + "openCliTools": "CLI கருவிகளைத் திற", + "setupGuideDetectCliTitle": "நிறுவப்பட்ட CLI-களைக் கண்டறி", + "setupGuideDetectCliDesc": "ஒரு CLI-ஐ நிறுவிய அல்லது புதுப்பித்த பிறகு, OmniRoute இருமக் கோப்புகளையும் பதிப்புகளையும் மீண்டும் வருடுவதற்கு புதுப்பி என்பதைக் கிளிக் செய்யவும்.", + "setupGuideCustomAgentTitle": "தனிப்பயன் இருமக் கோப்பைப் பதிவுசெய்", + "setupGuideCustomAgentDesc": "உங்கள் CLI உள்ளமைக்கப்பட்ட பட்டியலில் இல்லாதபோது தனிப்பயன் முகவரைச் சேர் என்பதைப் பயன்படுத்தவும். இருமக் கோப்பின் பெயரையும் பதிப்புக் கட்டளையையும் வழங்கவும்.", + "setupGuideCommandMissingTitle": "'கட்டளை கிடைக்கவில்லை' என்பதைச் சரிசெய்", + "setupGuideCommandMissingDesc": "CLI கட்டளை PATH-இல் இருப்பதை உறுதிசெய்து, புதிய முனைய அமர்வைத் திறந்து, புதுப்பி என்பதை மீண்டும் இயக்கவும்.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10491,148 +10498,148 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "எளிய அரட்டை", + "streaming": "தொடரோட்டம்", + "system-prompt": "கணினித் தூண்டுரை", + "thinking": "சிந்தித்தல்", + "tool-calling": "கருவி அழைப்பு", + "multi-turn": "பல-சுற்று", "vision": "பார்வை", "schema-coercion": "திட்ட வற்புறுத்தல்" }, "templateDescriptions": { - "simple-chat": "Basic chat template with system message", - "streaming": "Template for streaming responses", - "system-prompt": "Template with custom system prompt", - "thinking": "Template with reasoning/thinking budget", - "tool-calling": "Template for tool/function calling", - "multi-turn": "Template for multi-turn conversations", + "simple-chat": "கணினிச் செய்தியுடனான அடிப்படை அரட்டை வார்ப்புரு", + "streaming": "தொடரோட்டப் பதில்களுக்கான வார்ப்புரு", + "system-prompt": "தனிப்பயன் கணினித் தூண்டுரையுடனான வார்ப்புரு", + "thinking": "காரணமறிதல்/சிந்தித்தல் வரம்புடனான வார்ப்புரு", + "tool-calling": "கருவி/செயல்பாட்டு அழைப்புக்கான வார்ப்புரு", + "multi-turn": "பல-சுற்று உரையாடல்களுக்கான வார்ப்புரு", "vision": "பட உள்ளீட்டுடன் மல்டிமோடல் டெம்ப்ளேட்", "schema-coercion": "கட்டமைக்கப்பட்ட வெளியீடு / JSON திட்ட அமலாக்கம்" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful AI assistant.", - "userGreeting": "Hello! How can I help you today?" + "system": "நீங்கள் உதவிகரமான AI உதவியாளர்.", + "userGreeting": "வணக்கம்! இன்று நான் உங்களுக்கு எப்படி உதவலாம்?" }, "streaming": { - "prompt": "Write a story about" + "prompt": "இதைப் பற்றி ஒரு கதையை எழுதுங்கள்" }, "systemPrompt": { - "question": "What is the meaning of life?", - "systemInstruction": "Provide a thoughtful, philosophical answer." + "question": "வாழ்க்கையின் பொருள் என்ன?", + "systemInstruction": "சிந்தனைமிக்க, தத்துவார்த்தமான பதிலை வழங்குங்கள்." }, "thinking": { - "question": "Explain quantum computing" + "question": "குவாண்டம் கணிப்பை விளக்குங்கள்" }, "toolCalling": { - "cityNameDescription": "The name of the city to get weather for", - "toolDescription": "Get current weather for a location", - "userWeather": "What's the weather in Tokyo?" + "cityNameDescription": "வானிலையைப் பெற வேண்டிய நகரத்தின் பெயர்", + "toolDescription": "ஓர் இடத்தின் தற்போதைய வானிலையைப் பெறு", + "userWeather": "டோக்கியோவில் வானிலை எப்படி இருக்கிறது?" }, "multiTurn": { - "system": "You are a helpful assistant.", - "assistantExample": "I'd be happy to help you with that.", - "userInitial": "I need help with", - "userFollowUp": "Can you elaborate on that?" + "system": "நீங்கள் உதவிகரமான உதவியாளர்.", + "assistantExample": "அதில் உங்களுக்கு உதவுவதில் மகிழ்ச்சி அடைவேன்.", + "userInitial": "இதற்கு எனக்கு உதவி தேவை", + "userFollowUp": "அதைப் பற்றி விரிவாகக் கூற முடியுமா?" } }, "cache": { - "title": "Cache Management", - "description": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "refresh": "Refresh", - "clearAll": "Clear Semantic Cache", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "title": "கேச் மேலாண்மை", + "description": "வழங்குநரின் ப்ராம்ப்ட் கேச் செயல்திறனையும் உள்ளூர் சொற்பொருள் மறுமொழி மறுபயன்பாட்டையும் கண்காணிக்கவும்.", + "refresh": "புதுப்பிக்கவும்", + "clearAll": "சொற்பொருள் கேச்சை அழிக்கவும்", + "memoryEntries": "நினைவகப் பதிவுகள்", + "memoryEntriesSub": "நினைவகத்திலுள்ள LRU", + "dbEntries": "DB பதிவுகள்", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "கேச் ஹிட்கள்", + "cacheHitsSub": "மொத்தம் {total} இல்", + "tokensSaved": "சேமிக்கப்பட்ட டோக்கன்கள்", + "tokensSavedSub": "ஹிட்களிலிருந்து மதிப்பிடப்பட்டது", + "hitRate": "ஹிட் விகிதம்", + "performance": "கேச் செயல்திறன்", + "autoRefresh": "ஒவ்வொரு {seconds}s-க்கும் தானாகப் புதுப்பிக்கப்படும்", + "hits": "ஹிட்கள்", + "misses": "மிஸ்கள்", + "total": "மொத்தம்", + "behavior": "கேச் நடத்தை", + "behaviorDeterministic": "temperature=0 கொண்ட ஸ்ட்ரீமிங் அல்லாத கோரிக்கைகள் மட்டுமே கேச் செய்யப்படும்.", + "behaviorBypass": "{header} தலைப்புடன் புறக்கணிக்கவும்.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", - "clearSuccess": "Semantic cache cleared. {count} entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "behaviorTtl": "இயல்புநிலை TTL: 30 நிமிடங்கள். {envVar} வழியாக உள்ளமைக்கவும்.", + "idempotency": "ஐடெம்போடென்சி அடுக்கு", + "activeDedupKeys": "செயலில் உள்ள நகல்நீக்க விசைகள்", + "dedupWindow": "நகல்நீக்க நேரச்சாளரம்", + "clearSuccess": "சொற்பொருள் கேச் அழிக்கப்பட்டது. {count} பதிவுகள் அகற்றப்பட்டன.", + "clearError": "கேச்சை அழிக்க முடியவில்லை.", + "unavailable": "கேச் கிடைக்கவில்லை", + "unavailableDesc": "கேச் புள்ளிவிவரங்களைப் பெற முடியவில்லை. சேவையகம் இயங்குவதை உறுதிசெய்யவும்.", "loadingCacheAria": "தற்காலிக சேமிப்பு ஏற்றப்படுகிறது", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", - "cachedTokens": "Cache Read Tokens", - "cacheCreationTokens": "Cache Write Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", - "cachedTokensRead": "Read from cache", - "cacheCreationWrite": "Written to cache", - "cacheReuseRatio": "Cache Reuse Ratio", - "cacheReuseRatioDesc": "Cache read tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "promptCache": "ப்ராம்ப்ட் கேச் (வழங்குநர் தரப்பில்)", + "semanticCache": "சொற்பொருள் கேச்", + "promptCacheSectionDesc": "பயன்பாட்டு வரலாற்றிலிருந்து வழங்குநர் தரப்பிலான ப்ராம்ப்ட் கேச்சிங் செயல்பாட்டைக் காட்டுகிறது; இதன் மூலம் கேச் கட்டுப்பாடு எங்கு செயல்பாட்டில் உள்ளது என்பதையும், எவ்வளவு உள்ளீட்டு மறுபயன்பாடு கிடைக்கிறது என்பதையும் காணலாம்.", + "promptTrendDesc": "கடந்த 24 மணிநேரத்தின் மணிநேரக் கோரிக்கை அளவு, கேச் கவரேஜ் மற்றும் கேச் வாசிப்பு அளவு.", + "cachedRequests": "கேச் செய்யப்பட்ட கோரிக்கைகள்", + "cachedRequests24h": "கேச் செய்யப்பட்ட கோரிக்கைகள் (24மணி)", + "cacheHitRate": "கேச் ஹிட் விகிதம்", + "cacheRate": "கேச் விகிதம்", + "cacheRateDesc": "மொத்தக் கோரிக்கைகளில்", + "cachedTokens": "கேச் வாசிப்பு டோக்கன்கள்", + "cacheCreationTokens": "கேச் எழுதுதல் டோக்கன்கள்", + "cacheMetrics": "ப்ராம்ப்ட் கேச் அளவீடுகள்", + "withCacheControl": "கேச் கட்டுப்பாட்டுடன்", + "cachedTokensRead": "கேச்சிலிருந்து படிக்கப்பட்டவை", + "cacheCreationWrite": "கேச்சில் எழுதப்பட்டவை", + "cacheReuseRatio": "கேச் மறுபயன்பாட்டு விகிதம்", + "cacheReuseRatioDesc": "கேச் வாசிப்பு டோக்கன்கள் / மொத்த உள்ளீட்டு டோக்கன்கள்", + "estCostSaved": "மதிப்பிடப்பட்ட செலவுச் சேமிப்பு", + "lastUpdated": "கடைசியாகப் புதுப்பிக்கப்பட்டது", + "hoursTracked": "கண்காணிக்கப்பட்ட மணிநேரங்கள்", + "busiestHour": "மிகவும் பரபரப்பான மணிநேரம்", + "peakCacheRate": "உச்ச கேச் விகிதம்", + "trendHour": "மணிநேரம்", + "activityVolume": "செயல்பாடு", + "requestsShort": "கோரிக்கைகள்", + "inputShort": "உள்ளீடு", + "cachedShort": "கேச் செய்யப்பட்டவை", + "writeShort": "எழுதப்பட்டவை", + "resetting": "மீட்டமைக்கப்படுகிறது...", + "resetMetrics": "அளவீடுகளை மீட்டமை", + "byProvider": "வழங்குநர் வாரியான விவரம்", + "providerCacheRateDesc": "ஒவ்வொரு வழங்குநரும் மொத்த உள்ளீட்டு டோக்கன்கள், கேச் வாசிப்பு டோக்கன்கள் மற்றும் கேச் எழுதுதல் டோக்கன்களைக் காட்டுவதால், மூல மொத்தங்களுடன் மறுபயன்பாட்டு விகிதத்தை நீங்கள் சரிபார்க்கலாம்.", "provider": "Provider", - "requests": "Requests", - "inputTokens": "Total Input Tokens", - "cachedTokensCol": "Cache Read", - "cacheCreation": "Cache Write", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "requests": "கோரிக்கைகள்", + "inputTokens": "மொத்த உள்ளீட்டு டோக்கன்கள்", + "cachedTokensCol": "கேச் வாசிப்பு", + "cacheCreation": "கேச் எழுதுதல்", + "trend24h": "கேச் போக்கு (24மணி)", + "peakCached": "உச்சமாக கேச் செய்யப்பட்டவை", + "cached": "கேச் செய்யப்பட்டவை", + "overview": "கண்ணோட்டம்", "tableProvider": "வழங்குநர்", "tableModel": "மாடல்", "performanceTitle": "செயல்திறன்", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoute-இன் சொந்த தீர்மானிக்கக்கூடிய பதில் கேச். இது இயக்கப்பட்டிருக்கும்போது, மீண்டும் மீண்டும் வரும் ஸ்ட்ரீமிங் அல்லாத temperature=0 கோரிக்கைகளை அப்ஸ்ட்ரீம் வழங்குநரை அணுகாமல் உள்ளூரிலேயே வழங்க முடியும்.", + "semanticCacheDisabledDesc": "சொற்பொருள் கேச் முடக்கப்பட்டுள்ளது. Settings-இல் அதை மீண்டும் இயக்கும் வரை OmniRoute உள்ளூர் பதில் மறுபயன்பாட்டைத் தவிர்க்கும்.", + "semanticEntriesDesc": "தற்போது SQLite-இல் சேமிக்கப்பட்டுள்ள நிலையான சொற்பொருள் கேச் பதிவுகள். வழங்குநர் தரப்பு ப்ராம்ப்ட் கேச் செயல்பாடு இங்கே பட்டியலிடப்படவில்லை.", + "searchEntries": "பதிவுகளைத் தேடுக...", + "search": "தேடுக", + "loading": "ஏற்றப்படுகிறது...", + "entriesLoadError": "சொற்பொருள் கேச் பதிவுகளை ஏற்ற முடியவில்லை.", + "noEntries": "கேச் பதிவுகள் எதுவும் கிடைக்கவில்லை", + "noPromptCacheData": "வழங்குநர் தரப்பு ப்ராம்ப்ட் கேச் செயல்பாடு இதுவரை பதிவுசெய்யப்படவில்லை.", + "noTrendData": "கடந்த 24 மணிநேரத்தில் எந்த ப்ராம்ப்ட் கேச் செயல்பாடும் பதிவுசெய்யப்படவில்லை.", + "signature": "கையொப்பம்", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "உருவாக்கப்பட்டது", + "expires": "காலாவதியாகும் நேரம்", + "actions": "செயல்கள்", + "deduplicatedRequests": "நகல் நீக்கப்பட்ட கோரிக்கைகள்", + "savedCalls": "சேமிக்கப்பட்ட API அழைப்புகள்", + "totalProcessed": "செயலாக்கப்பட்ட மொத்த கோரிக்கைகள்", + "disabled": "முடக்கப்பட்டது", + "totalRequests": "மொத்த கோரிக்கைகள்", "reasoningCache": "ரீசனிங் ரீப்ளே", "reasoningCacheDesc": "மல்டி-டர்ன் டூல் அழைப்பு ஓட்டங்களுக்கான மாதிரி சிந்தனையைப் பாதுகாக்கிறது", "reasoningEntries": "செயலில் உள்ளீடுகள்", @@ -10669,56 +10676,56 @@ "minutesAgo": "{minutes}m முன்", "hoursAgo": "{hours}h முன்", "daysAgo": "{days}d முன்", - "entries": "Entries" + "entries": "பதிவுகள்" }, "proxyConfigModal": { - "levelGlobal": "Global", - "levelProvider": "Provider", - "levelCombo": "Combo", - "levelKey": "Key", - "levelDirect": "Direct (no proxy)", - "titleGlobal": "Global Proxy Configuration", - "titleLevel": "{level} Proxy — {label}", - "loading": "Loading proxy configuration...", - "inheritingFrom": "Inheriting from", - "source": "Source", - "savedProxy": "Saved Proxy", - "custom": "Custom", - "selectSavedProxyPlaceholder": "Select saved proxy...", - "proxyType": "Proxy Type", - "host": "Host", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", - "port": "Port", - "authOptional": "Authentication (optional)", - "username": "Username", - "usernamePlaceholder": "Username", - "password": "Password", - "passwordPlaceholder": "Password", - "connected": "Connected", + "levelGlobal": "உலகளாவிய", + "levelProvider": "வழங்குநர்", + "levelCombo": "கூட்டு", + "levelKey": "விசை", + "levelDirect": "நேரடி (பதிலி இல்லை)", + "titleGlobal": "உலகளாவிய பதிலி உள்ளமைவு", + "titleLevel": "{level} பதிலி — {label}", + "loading": "பதிலி உள்ளமைவு ஏற்றப்படுகிறது...", + "inheritingFrom": "இதிலிருந்து பெறப்படுகிறது", + "source": "மூலம்", + "savedProxy": "சேமிக்கப்பட்ட பதிலி", + "custom": "தனிப்பயன்", + "selectSavedProxyPlaceholder": "சேமிக்கப்பட்ட பதிலியைத் தேர்ந்தெடுக்கவும்...", + "proxyType": "பதிலி வகை", + "host": "புரவலன்", + "hostPlaceholder": "1.2.3.4 அல்லது proxy.example.com", + "port": "போர்ட்", + "authOptional": "அங்கீகாரம் (விருப்பத்திற்குரியது)", + "username": "பயனர்பெயர்", + "usernamePlaceholder": "பயனர்பெயர்", + "password": "கடவுச்சொல்", + "passwordPlaceholder": "கடவுச்சொல்", + "connected": "இணைக்கப்பட்டது", "ip": "IP:", - "connectionFailed": "Connection failed", - "testConnection": "Test connection", - "clear": "Clear", - "cancel": "Cancel", - "save": "Save", - "errorSelectSavedProxy": "Please select a saved proxy first.", - "errorSelectProxyFirst": "Please select a proxy first.", - "errorProxyNotFound": "Selected proxy not found.", - "errorClearSavedProxy": "Failed to clear saved proxy", - "errorSaveProxy": "Failed to save proxy configuration", - "errorClearProxy": "Failed to clear proxy configuration", - "errorSocks5Hidden": "SOCKS5 is configured but hidden because NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false." + "connectionFailed": "இணைப்பு தோல்வியடைந்தது", + "testConnection": "இணைப்பைச் சோதிக்கவும்", + "clear": "அழி", + "cancel": "ரத்துசெய்", + "save": "சேமி", + "errorSelectSavedProxy": "முதலில் சேமிக்கப்பட்ட பதிலியைத் தேர்ந்தெடுக்கவும்.", + "errorSelectProxyFirst": "முதலில் ஒரு பதிலியைத் தேர்ந்தெடுக்கவும்.", + "errorProxyNotFound": "தேர்ந்தெடுக்கப்பட்ட ப்ராக்ஸி கிடைக்கவில்லை.", + "errorClearSavedProxy": "சேமிக்கப்பட்ட ப்ராக்ஸியை அழிக்க முடியவில்லை", + "errorSaveProxy": "ப்ராக்ஸி உள்ளமைவைச் சேமிக்க முடியவில்லை", + "errorClearProxy": "ப்ராக்ஸி உள்ளமைவை அழிக்க முடியவில்லை", + "errorSocks5Hidden": "SOCKS5 உள்ளமைக்கப்பட்டுள்ளது, ஆனால் NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false என்பதால் மறைக்கப்பட்டுள்ளது." }, "oauthModal": { - "title": "Connect {providerName}", - "waiting": "Waiting for authorization", - "completeAuthInPopup": "Complete authorization in popup.", + "title": "{providerName} ஐ இணைக்கவும்", + "waiting": "அங்கீகாரத்திற்காகக் காத்திருக்கிறது", + "completeAuthInPopup": "பாப்அப் சாளரத்தில் அங்கீகாரத்தை நிறைவு செய்யவும்.", "popupClosedHint": "If the popup closed without redirecting back (e.g. Qoder), this dialog will auto-switch to manual URL entry mode.", - "popupBlocked": "Popup blocked? Enter URL manually", - "deviceCodeVisitUrl": "Visit the URL below and enter code:", - "deviceCodeVerificationUrl": "Verification URL", - "deviceCodeYourCode": "Your code", - "deviceCodeWaiting": "Waiting for authorization...", + "popupBlocked": "பாப்அப் தடுக்கப்பட்டதா? URL ஐ கைமுறையாக உள்ளிடவும்", + "deviceCodeVisitUrl": "கீழே உள்ள URL ஐப் பார்வையிட்டு குறியீட்டை உள்ளிடவும்:", + "deviceCodeVerificationUrl": "சரிபார்ப்பு URL", + "deviceCodeYourCode": "உங்கள் குறியீடு", + "deviceCodeWaiting": "அங்கீகாரத்திற்காகக் காத்திருக்கிறது...", "googleLoopbackTitle": "இந்த முகவரியிலிருந்து Google உள்நுழைவு முடிக்க முடியாது", "googleLoopbackWhatHappens": "Google மட்டுமே அங்கீகாரம் குறியீட்டை வெளியிடுகிறது {redirectUri} உலாவியில் உள்நுழைவுக்கு ஒப்புதல் அளிக்கும் போது அடையக்கூடியது. இங்கு அந்த முகவரி இந்த கணினியை குறிக்கிறது, OmniRoute சேவையகம் அல்ல — எனவே ஒப்புதல் திரை நிற்கிறது, மறுபடியும் மாற்றுவதற்குப் பதிலாக, மற்றும் நகலெடுக்க எந்த callback URL இல்லை.", "googleLoopbackRecommended": "எடுத்துக்காட்டப்பட்டது — இதை உங்கள் சொந்த கணினியில் இயக்கவும், பின்னர் கீழே முடிவை ஒட்டவும்:", @@ -10726,7 +10733,7 @@ "googleLoopbackTunnelLabel": "அல்லது SSH மூலம் டாஷ்போர்ட் போர்டை முன்னணி செய்யவும் மற்றும் ஒம்னி ரவுட் டன்னல் மூலம் மீண்டும் ஏற்றவும்:", "googleLoopbackTunnelNote": "{userPlaceholder} ஐ உங்கள் SSH பயனர் பெயருடன் மாற்றவும், டெர்மினலை திறந்தே வைக்கவும், பின்னர் {localUrl} ஐ திறந்து அங்கு இருந்து மீண்டும் இணைக்கவும்.", "googleLoopbackHeadlessAlt": "முழுமையாக தலைவில்லா பயன்பாட்டிற்காக, எந்த உள்ளூர் அழைப்பும் இல்லாமல், உங்கள் சொந்த Google OAuth சான்றிதழ்களை மற்றும் ஒரு பொது அடிப்படை URL ஐ அமைக்கவும்.", - "remoteAccessInfo": "Remote access: Since you're accessing OmniRoute remotely, after authorization you'll see an error page (localhost not found). This is normal — just copy the full URL from your browser address bar and paste it below.", + "remoteAccessInfo": "தொலைநிலை அணுகல்: நீங்கள் OmniRoute ஐ தொலைவிலிருந்து அணுகுவதால், அங்கீகாரத்திற்குப் பிறகு ஒரு பிழைப் பக்கத்தைக் காண்பீர்கள் (localhost கிடைக்கவில்லை). இது இயல்பானது — உங்கள் உலாவியின் முகவரிப் பட்டையிலிருந்து முழு URL ஐ நகலெடுத்து கீழே ஒட்டவும்.", "loopbackMismatchTitle": "இந்த முகவரியிலிருந்து உள்நுழைவு முடிக்க முடியாது", "loopbackMismatchWhatHappened": "என்ன நடக்கிறது", "loopbackMismatchExplanation": "உங்கள் உள்நுழைவுக்கு நீங்கள் ஒப்புதல் அளித்த பிறகு, {providerName} எப்போதும் உலாவியை {redirectUri} க்கு திருப்புகிறது. அந்த முகவரி இந்த உலாவியை இயக்கும் கணினியை குறிக்கிறது, OmniRoute சேவையகத்தை அல்ல — எனவே அங்கீகாரக் குறியீடு OmniRoute க்கு எப்போது சென்றாலும், பிழையை காட்டாமல் வழங்குநர் உள்நுழைவில் தோல்வியுறுகிறது.", @@ -10736,17 +10743,17 @@ "loopbackMismatchStep2": "இந்த உலாவியில், உலாவி மூலம் OmniRoute-ஐ மீண்டும் திறக்கவும்:", "loopbackMismatchStep3": "பிறகு புதிய தாவலிலிருந்து {providerName} ஐ மீண்டும் இணைக்கவும். இப்போது கால் பேக் சர்வருக்கு அடைகிறது மற்றும் உள்நுழைவு சாதாரணமாக முடிகிறது.", "loopbackMismatchAlternative": "SSH அணுகல் இல்லை? இந்த வழங்குநர் ஒரு டோக்கன் இறக்குமதி தாவலை வழங்கினால், டோக்கன் மூலம் இணைக்கவும் - அந்த பாதை ஒரு லூப்பேக் கால் பாகத்தைப் பயன்படுத்தாது.", - "step1OpenUrl": "Step 1: Open this URL in your browser", - "copy": "Copy", - "step2PasteCallback": "Step 2: Paste callback URL or authorization code here", - "step2Hint": "After authorization, paste the full callback URL. For Claude Code and Cline, you can also paste the authentication code directly, e.g. code#state.", - "connect": "Connect", - "cancel": "Cancel", - "success": "Connection successful!", - "successMessage": "Your {providerName} account has been connected.", - "done": "Done", - "error": "Connection failed", - "tryAgain": "Try again", + "step1OpenUrl": "படி 1: இந்த URL ஐ உங்கள் உலாவியில் திறக்கவும்", + "copy": "நகலெடு", + "step2PasteCallback": "படி 2: திரும்பஅழைப்பு URL அல்லது அங்கீகாரக் குறியீட்டை இங்கே ஒட்டவும்", + "step2Hint": "அங்கீகாரத்திற்குப் பிறகு, முழு திரும்பஅழைப்பு URL ஐ ஒட்டவும். Claude Code மற்றும் Cline ஆகியவற்றிற்கு, அங்கீகாரக் குறியீட்டையும் நேரடியாக ஒட்டலாம், எ.கா. code#state.", + "connect": "இணைக்கவும்", + "cancel": "ரத்துசெய்", + "success": "இணைப்பு வெற்றிகரமாக முடிந்தது!", + "successMessage": "உங்கள் {providerName} கணக்கு இணைக்கப்பட்டது.", + "done": "முடிந்தது", + "error": "இணைப்பு தோல்வியடைந்தது", + "tryAgain": "மீண்டும் முயற்சிக்கவும்", "errorSessionIncomplete": "OAuth அமர்வு முழுமையல்ல (மறுவழி URI அல்லது குறியீட்டு சரிபார்ப்பாளர் காணவில்லை). இணைப்பை மீண்டும் தொடங்கவும் மற்றும் மீண்டும் முயற்சிக்கவும்.", "errorExchangeFailed": "மாற்றம் தோல்வியுற்றது", "errorGoogleRedirectMismatch": "redirect_uri_mismatch: இயல்பான Google OAuth அங்கீகாரங்கள் localhost இல் மட்டுமே செயல்படுகிறது. தொலைதூர பயன்பாட்டிற்காக, உங்கள் சொந்த OAuth அங்கீகாரங்களை சூழல் மாறிலிகள் மூலம் கட்டமைக்கவும்: ANTIGRAVITY_OAUTH_CLIENT_ID மற்றும் ANTIGRAVITY_OAUTH_CLIENT_SECRET. 'தொலைதூர சேவையகத்தில் OAuth' என்ற README பிரிவைப் பார்க்கவும்.", @@ -10785,107 +10792,107 @@ }, "cursorAuthModal": { "title": "Connect Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCursor": "Reading from Cursor IDE or cursor-agent", - "tokensAutoDetected": "Tokens successfully auto-detected from Cursor IDE!", + "tabLogin": "Cursor மூலம் உள்நுழைக", + "tabImport": "டோக்கனை இறக்குமதி செய்க", + "loginDescription": "Cursor இன் உலாவி உள்நுழைவைத் திறக்கும். Docker இல் செயல்படும் — உங்கள் ஹோஸ்ட் உலாவியில் ஒப்புதல் அளித்துவிட்டு, பின்னர் இங்கே திரும்பவும்.", + "loginWithCursor": "Cursor மூலம் உள்நுழைக", + "startingLogin": "தொடங்குகிறது…", + "waitingApproval": "Cursor உள்நுழைவு ஒப்புதலுக்காகக் காத்திருக்கிறது…", + "openUrlHint": "உலாவி திறக்கப்படவில்லை என்றால்:", + "openLoginLink": "உள்நுழைவுப் பக்கத்தைத் திறக்கவும்", + "cancelLogin": "உள்நுழைவை ரத்துசெய்", + "autoDetecting": "டோக்கன்கள் தானாகக் கண்டறியப்படுகின்றன...", + "readingFromCursor": "Cursor IDE அல்லது cursor-agent இலிருந்து படிக்கிறது", + "tokensAutoDetected": "Cursor IDE இலிருந்து டோக்கன்கள் வெற்றிகரமாகத் தானாகக் கண்டறியப்பட்டன!", "cursorNotDetected": "Cursor IDE not detected. Please manually paste your token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Docker-இல் இயக்குகிறீர்களா? Cursor மூலம் உள்நுழைவதைப் பயன்படுத்தவும். IDE தானியக்க இறக்குமதி மற்றும் cursor-agent ஆகியவை பொதுவாகக் கொள்கலனுக்குள் கிடைக்காது. docs/providers/CURSOR-DOCKER.md-ஐப் பார்க்கவும்.", + "accessToken": "அணுகல் டோக்கன்", + "refreshToken": "புதுப்பிப்பு டோக்கன்", + "refreshTokenPlaceholder": "விருப்பத்தேர்வு — தானியக்க டோக்கன் புதுப்பிப்பைச் செயல்படுத்துகிறது", "required": "*", - "accessTokenPlaceholder": "Access token will auto-populate...", - "machineId": "Machine ID", - "optional": "(optional)", - "machineIdPlaceholder": "Machine ID will auto-populate...", - "importing": "Importing...", - "importToken": "Import Token", - "cancel": "Cancel", - "errorAutoDetect": "Unable to auto-detect tokens", - "errorAutoDetectFailed": "Auto-detect tokens failed", - "errorEnterToken": "Please enter access token", - "errorImportFailed": "Import failed", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "accessTokenPlaceholder": "அணுகல் டோக்கன் தானாக நிரப்பப்படும்...", + "machineId": "இயந்திர ID", + "optional": "(விருப்பத்தேர்வு)", + "machineIdPlaceholder": "இயந்திர ID தானாக நிரப்பப்படும்...", + "importing": "இறக்குமதி செய்யப்படுகிறது...", + "importToken": "டோக்கனை இறக்குமதி செய்", + "cancel": "ரத்துசெய்", + "errorAutoDetect": "டோக்கன்களைத் தானாகக் கண்டறிய முடியவில்லை", + "errorAutoDetectFailed": "டோக்கன்களைத் தானாகக் கண்டறிதல் தோல்வியடைந்தது", + "errorEnterToken": "அணுகல் டோக்கனை உள்ளிடவும்", + "errorImportFailed": "இறக்குமதி தோல்வியடைந்தது", + "errorLoginStart": "Cursor உள்நுழைவைத் தொடங்க முடியவில்லை", + "errorLoginPoll": "Cursor உள்நுழைவு தோல்வியடைந்தது", + "errorLoginTimeout": "Cursor உள்நுழைவுக்கான நேரம் முடிந்தது — மீண்டும் முயற்சிக்கவும்" }, "pricingModal": { - "title": "Pricing Configuration", - "loading": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "ratesDescription": "All rates are in dollars per million tokens ($/1M tokens). Example: Input rate of 2.50 means $2.50 per 1,000,000 input tokens.", - "model": "Model", - "input": "Input", - "output": "Output", - "cached": "Cached", - "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "noPricingData": "No pricing data available", - "resetToDefaults": "Reset to defaults", - "cancel": "Cancel", - "saving": "Saving...", - "saveChanges": "Save changes", - "resetConfirm": "Reset all pricing to defaults? This cannot be undone.", - "errorSaveFailed": "Failed to save pricing", - "errorResetFailed": "Failed to reset pricing" + "title": "விலையிடல் உள்ளமைவு", + "loading": "விலையிடல் தரவு ஏற்றப்படுகிறது...", + "pricingRatesFormat": "விலையிடல் கட்டண வடிவம்", + "ratesDescription": "அனைத்துக் கட்டணங்களும் ஒரு மில்லியன் டோக்கன்களுக்கான டாலர்களில் ($/1M டோக்கன்கள்) குறிப்பிடப்பட்டுள்ளன. எடுத்துக்காட்டு: உள்ளீட்டுக் கட்டணம் 2.50 எனில், 1,000,000 உள்ளீட்டு டோக்கன்களுக்கு $2.50 என்று பொருள்.", + "model": "மாதிரி", + "input": "உள்ளீடு", + "output": "வெளியீடு", + "cached": "தற்காலிகச் சேமிப்பிலுள்ளது", + "reasoning": "காரணமறிதல்", + "cacheCreation": "தற்காலிகச் சேமிப்பு உருவாக்கம்", + "noPricingData": "விலையிடல் தரவு எதுவும் கிடைக்கவில்லை", + "resetToDefaults": "இயல்புநிலைகளுக்கு மீட்டமை", + "cancel": "ரத்துசெய்", + "saving": "சேமிக்கப்படுகிறது...", + "saveChanges": "மாற்றங்களைச் சேமி", + "resetConfirm": "அனைத்து விலைகளையும் இயல்புநிலைகளுக்கு மீட்டமைக்கவா? இதைச் செயல்தவிர்க்க முடியாது.", + "errorSaveFailed": "விலையிடலைச் சேமிக்க முடியவில்லை", + "errorResetFailed": "விலையிடலை மீட்டமைக்க முடியவில்லை" }, "proxyRegistry": { "selectAllProxies": "அனைத்து ப்ராக்ஸிகளையும் தேர்ந்தெடு", "selectProxy": "{name}-ஐத் தேர்ந்தெடு", - "title": "Proxy Registry", - "description": "Store reusable proxies and track assignments.", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", - "loading": "Loading proxies...", - "noProxies": "No saved proxies yet.", - "tableName": "Name", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", - "tableHealth": "Health (24h)", - "tableUsage": "Usage", - "tableActions": "Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", - "modalCreateTitle": "Create Proxy", - "modalEditTitle": "Edit Proxy", - "labelName": "Name", - "labelType": "Type", + "title": "ப்ராக்ஸி பதிவகம்", + "description": "மீண்டும் பயன்படுத்தக்கூடிய ப்ராக்ஸிகளைச் சேமித்து, ஒதுக்கீடுகளைக் கண்காணிக்கவும்.", + "importLegacy": "பழையவற்றை இறக்குமதி செய்", + "bulkAssign": "மொத்தமாக ஒதுக்கு", + "addProxy": "ப்ராக்ஸியைச் சேர்", + "loading": "ப்ராக்ஸிகள் ஏற்றப்படுகின்றன...", + "noProxies": "இன்னும் சேமிக்கப்பட்ட ப்ராக்ஸிகள் இல்லை.", + "tableName": "பெயர்", + "tableEndpoint": "முனையம்", + "tableStatus": "நிலை", + "tableHealth": "செயல்நலம் (24மணி)", + "tableUsage": "பயன்பாடு", + "tableActions": "செயல்கள்", + "test": "சோதனை", + "edit": "திருத்து", + "delete": "நீக்கு", + "modalCreateTitle": "ப்ராக்ஸியை உருவாக்கு", + "modalEditTitle": "ப்ராக்ஸியைத் திருத்து", + "labelName": "பெயர்", + "labelType": "வகை", "labelFamily": "IP குடும்பம்", "familyAuto": "தானியங்கு (dual-stack)", "familyIpv4": "IPv4 மட்டும்", "familyIpv6": "IPv6 மட்டும்", "familyHint": "Egress முகவரி குடும்பம். Auto ஆனது dual-stack-ஐ வைத்திருக்கும்; IPv4/IPv6 இந்த ப்ராக்ஸியை அந்தக் குடும்பத்திற்குப் பின் செய்கிறது (IPv6-only ப்ராக்ஸியின் கீழ் v4 கசிவைத் தடுக்கிறது).", - "labelHost": "Host", - "labelPort": "Port", - "labelUsername": "Username", - "labelPassword": "Password", - "labelRegion": "Region", - "labelStatus": "Status", - "labelNotes": "Notes", - "usernamePlaceholderEdit": "Leave blank to keep current username", - "passwordPlaceholderEdit": "Leave blank to keep current password", - "statusActive": "Active", - "statusInactive": "Inactive", - "cancel": "Cancel", - "save": "Save", - "bulkModalTitle": "Bulk Proxy Assignment", - "bulkLabelScope": "Scope", - "bulkLabelProxy": "Proxy", - "bulkClearAssignment": "(Clear assignment)", - "bulkLabelScopeIds": "Scope IDs (comma or newline separated)", + "labelHost": "ஹோஸ்ட்", + "labelPort": "போர்ட்", + "labelUsername": "பயனர்பெயர்", + "labelPassword": "கடவுச்சொல்", + "labelRegion": "பகுதி", + "labelStatus": "நிலை", + "labelNotes": "குறிப்புகள்", + "usernamePlaceholderEdit": "தற்போதைய பயனர்பெயரைத் தக்கவைக்கக் காலியாக விடவும்", + "passwordPlaceholderEdit": "தற்போதைய கடவுச்சொல்லைத் தக்கவைக்கக் காலியாக விடவும்", + "statusActive": "செயலில் உள்ளது", + "statusInactive": "செயலில் இல்லை", + "cancel": "ரத்துசெய்", + "save": "சேமி", + "bulkModalTitle": "மொத்த ப்ராக்ஸி ஒதுக்கீடு", + "bulkLabelScope": "வரம்பு", + "bulkLabelProxy": "ப்ராக்ஸி", + "bulkClearAssignment": "(ஒதுக்கீட்டை அழி)", + "bulkLabelScopeIds": "வரம்பு ID-கள் (காற்புள்ளி அல்லது புதிய வரியால் பிரிக்கப்பட்டவை)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", - "bulkApply": "Apply", + "bulkApply": "பயன்படுத்து", "labelScope": "வரம்பு", "labelProxy": "ப்ராக்ஸி", "scopeGlobal": "உலகளாவிய", @@ -10897,19 +10904,19 @@ "bulkImportErrorInvalidPort": "தவறான போர்ட் (1-65535 ஆக இருக்க வேண்டும்)", "bulkImportErrorInvalidType": "தவறான வகை (http, https அல்லது socks5 ஐப் பயன்படுத்தவும்)", "bulkImportErrorInvalidStatus": "தவறான நிலை (செயலில் அல்லது செயலற்றதைப் பயன்படுத்தவும்)", - "errorLoadFailed": "Failed to load proxy registry", - "errorNameHostRequired": "Name and host are required", - "errorSaveFailed": "Failed to save proxy", - "errorDeleteFailed": "Failed to delete proxy", - "errorForceDeleteConfirm": "This proxy is still assigned. Force delete and remove all assignments?", - "errorMigrateFailed": "Failed to migrate legacy proxy config", - "errorBulkFailed": "Failed to execute bulk assignment", + "errorLoadFailed": "ப்ராக்ஸி பதிவகத்தை ஏற்ற முடியவில்லை", + "errorNameHostRequired": "பெயரும் ஹோஸ்டும் அவசியம்", + "errorSaveFailed": "ப்ராக்ஸியைச் சேமிக்க முடியவில்லை", + "errorDeleteFailed": "ப்ராக்ஸியை நீக்க முடியவில்லை", + "errorForceDeleteConfirm": "இந்தப் ப்ராக்ஸி இன்னும் ஒதுக்கப்பட்டுள்ளது. கட்டாயமாக நீக்கி, அனைத்து ஒதுக்கீடுகளையும் அகற்றவா?", + "errorMigrateFailed": "பழைய ப்ராக்ஸி உள்ளமைவை இடம்பெயர்க்க முடியவில்லை", + "errorBulkFailed": "மொத்த ஒதுக்கீட்டைச் செயல்படுத்த முடியவில்லை", "success": "✓", "failure": "✗", - "failed": "Failed", - "successRate": "{rate}% success", - "avgLatency": "{latency}ms average", - "assignmentsCount": "{count} assignments", + "failed": "தோல்வியடைந்தது", + "successRate": "{rate}% வெற்றி", + "avgLatency": "சராசரி {latency}ms", + "assignmentsCount": "{count} ஒதுக்கீடுகள்", "noData": "—", "testSuccess": "✓ {ip}", "testLatency": "{latency}ms", @@ -10947,23 +10954,23 @@ "managePool": "தொகுப்பை நிர்வகி", "poolTitle": "Proxy தொகுப்பு & சுழற்சி", "poolDescription": "ஒரு scope-உடன் பல proxy-களை இணைத்து, அவற்றின் வழியே egress IP-களை சுழற்றவும். ஒற்றை proxy கொண்ட scope, சாதாரண ஒதுக்கீட்டைப் போலவே செயல்படும்.", - "poolScopeIdLabel": "Scope ID", - "poolScopeIdPlaceholder": "provider id / connection id / combo id", + "poolScopeIdLabel": "செயல்பாட்டு வரம்பு ID", + "poolScopeIdPlaceholder": "வழங்குநர் id / இணைப்பு id / சேர்க்கை id", "poolScopeIdRequired": "provider, account அல்லது combo scope-க்கு ஒரு scope ID தேவை.", "poolLoad": "தொகுப்பை ஏற்று", "poolLoadFailed": "Proxy தொகுப்பை ஏற்றுவது தோல்வியடைந்தது", "poolStrategyLabel": "சுழற்சி உத்தி", "poolStrategyHint": "round-robin உறுப்பினர்களை வரிசையாக சுழற்றுகிறது; random சீராகத் தேர்ந்தெடுக்கிறது; sticky ஒரு குறிப்பிட்ட நேரத்திற்கு ஒரு உறுப்பினரைத் தக்கவைக்கிறது; latency-optimized பதிவுகளின் அடிப்படையில் அதிவேகமானதைத் தேர்ந்தெடுக்கிறது.", "poolStrategyFailed": "சுழற்சி உத்தியைப் புதுப்பிப்பது தோல்வியடைந்தது", - "strategyRoundRobin": "Round-robin", - "strategyRandom": "Random", - "strategySticky": "Sticky", - "strategyLatency": "Latency-optimized", + "strategyRoundRobin": "சுழற்சி முறை", + "strategyRandom": "சீரற்றது", + "strategySticky": "நிலையானது", + "strategyLatency": "தாமதத்திற்கு உகந்தது", "poolMembersLabel": "தொகுப்பு உறுப்பினர்கள் ({count})", "poolNoMembers": "இந்தத் தொகுப்பில் இன்னும் proxy-கள் எதுவும் இல்லை.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# வெளியேற்றம்} other {# வெளியேற்றங்கள்}} — {connections, plural, one {# இணைப்பு} other {# இணைப்புகள்}} பயன்படுத்தியவை · ஒரு வெளியேற்றத்தில் அதிகபட்சம் {max} · கடந்த {hours} மணிநேரம்", + "poolEgressObservationEmpty": "கடந்த {hours} மணிநேரத்தில் போக்குவரத்து எதுவும் காணப்படவில்லை", + "poolEgressObservationHint": "இந்தக் காலச் சாளரத்திற்கான ப்ராக்ஸி பதிவிலிருந்து கணக்கிடப்பட்டது: இந்தத் தொகுப்பின் உறுப்பினர்களுக்காகக் காணப்பட்ட தனித்துவமான வெளியேற்ற IP-களும், அவற்றைப் பயன்படுத்திய OmniRoute இணைப்புகளும். \"ஒரு வெளியேற்றத்தில்\" என்பது ஒரே நேரத்தில் என்பதல்ல; இந்தக் காலச் சாளரத்தின் போது என்பதாகும். ஒவ்வொரு IP-க்குமான 429 பூட்டல், அதே வழங்குநர் குடும்பத்தைச் சேர்ந்த இணைப்புகளை மட்டுமே இடைநிறுத்தும்.", "poolRemove": "அகற்று", "poolRemoveFailed": "தொகுப்பிலிருந்து proxy-ஐ அகற்றுவது தோல்வியடைந்தது", "poolAddLabel": "ஒரு proxy-ஐச் சேர்", @@ -10973,96 +10980,96 @@ "poolSaveFailed": "தொகுப்பு ஒதுக்கீட்டைச் சேமிப்பது தோல்வியடைந்தது" }, "playground": { - "title": "Model Playground", - "description": "Test any model directly from the dashboard. Select provider, model, and endpoint type, then send a request to see the raw response.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", - "accountKey": "Account / Key", - "autoAccounts": "Auto ({count} accounts)", - "noAccounts": "No accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", - "attachImages": "Attach Images (Vision)", + "title": "மாதிரி சோதனைக்களம்", + "description": "எந்த மாதிரியையும் நேரடியாக முகப்புப் பலகையிலிருந்து சோதிக்கவும். வழங்குநர், மாதிரி மற்றும் இறுதிப்புள்ளி வகையைத் தேர்ந்தெடுத்து, மூலப் பதிலைக் காண ஒரு கோரிக்கையை அனுப்பவும்.", + "endpoint": "இறுதிப்புள்ளி", + "provider": "வழங்குநர்", + "model": "மாதிரி", + "accountKey": "கணக்கு / விசை", + "autoAccounts": "தானியங்கு ({count} கணக்குகள்)", + "noAccounts": "கணக்குகள் இல்லை", + "send": "அனுப்பு", + "cancel": "ரத்துசெய்", + "audioFile": "ஒலிக் கோப்பு", + "attachImages": "படங்களை இணைக்கவும் (Vision)", "multipartFormData": "multipart/form-data", - "upToImages": "Up to 4 images", - "selectAudioFile": "Select audio file for transcription (mp3, wav, m4a, ogg, flac…)", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", - "resetToDefault": "Reset to default", - "downloadAudio": "Download audio", - "copyText": "Copy text", - "transcriptionHint": "Transcription uses multipart/form-data. Upload the audio file above — the JSON below controls extra parameters (model, language).", - "imagesGenerated": "Generated {count} images", - "generatedImage": "Generated image {index}", - "save": "Save", + "upToImages": "அதிகபட்சம் 4 படங்கள்", + "selectAudioFile": "உரைமாற்றத்திற்கான ஒலிக் கோப்பைத் தேர்ந்தெடுக்கவும் (mp3, wav, m4a, ogg, flac…)", + "clearAll": "அனைத்தையும் அழி", + "request": "கோரிக்கை", + "response": "பதில்", + "transcription": "உரைமாற்றம்", + "copy": "நகலெடு", + "resetToDefault": "இயல்புநிலைக்கு மீட்டமை", + "downloadAudio": "ஒலியைப் பதிவிறக்கு", + "copyText": "உரையை நகலெடு", + "transcriptionHint": "உரைமாற்றம் multipart/form-data-ஐப் பயன்படுத்துகிறது. மேலே உள்ள ஒலிக் கோப்பைப் பதிவேற்றவும் — கீழே உள்ள JSON கூடுதல் அளவுருக்களை (model, language) கட்டுப்படுத்துகிறது.", + "imagesGenerated": "{count} படங்கள் உருவாக்கப்பட்டன", + "generatedImage": "உருவாக்கப்பட்ட படம் {index}", + "save": "சேமி", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", - "completions": "Completions", - "images": "Image generation", - "embeddings": "Embeddings", - "speech": "Text-to-speech", - "transcription": "Audio transcription", - "video": "Video generation", - "music": "Music generation", - "moderations": "Moderations", - "rerank": "Rerank", - "search": "Web search", + "chat": "அரட்டை நிறைவுகள்", + "responses": "பதில்கள்", + "completions": "நிறைவுகள்", + "images": "பட உருவாக்கம்", + "embeddings": "உட்பொதிவுகள்", + "speech": "உரையிலிருந்து பேச்சு", + "transcription": "ஒலி உரைமாற்றம்", + "video": "காணொளி உருவாக்கம்", + "music": "இசை உருவாக்கம்", + "moderations": "உள்ளடக்க மதிப்பாய்வுகள்", + "rerank": "மறுதரவரிசைப்படுத்தல்", + "search": "இணையத் தேடல்", "webFetch": "இணையப் பெறுதல்" }, "conversationalChat": "உரையாடல் அரட்டை", "clearChat": "தெளிவான அரட்டை", "typeMessagePlaceholder": "செய்தியைத் தட்டச்சு செய்யவும்... (புதிய வரிக்கு Shift+Enter)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "அரட்டை", + "tabCompare": "ஒப்பிடு", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "உருவாக்கு", + "configPane": "உள்ளமைவு", + "systemPrompt": "கணினி அறிவுறுத்தல்", + "systemPromptPlaceholder": "நீங்கள் உதவிகரமான ஓர் உதவியாளர்.", + "modelPlaceholder": "எ.கா. openai/gpt-4o", + "endpointLabel": "முனைப்புள்ளி", + "parametersLabel": "அளவுருக்கள்", + "collapseConfig": "உள்ளமைவுப் பலகையைச் சுருக்கு", + "expandConfig": "உள்ளமைவுப் பலகையை விரிவாக்கு", + "temperature": "வெப்பநிலை", + "maxTokens": "அதிகபட்ச டோக்கன்கள்", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "இருப்பு அபராதம்", + "frequencyPenalty": "நிகழ்வெண் அபராதம்", "reasoningLabel": "பகுத்தறிதல்", "thinking": "சிந்தித்தல்", "effort": "முயற்சி", "effortDefault": "இயல்புநிலை", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "சீரற்றது (காலியாக விடவும்)", + "presetsLabel": "முன்னமைவுகள்", + "loadPreset": "முன்னமைவை ஏற்று", + "savePreset": "முன்னமைவைச் சேமி", + "noPresets": "முன்னமைவுகள் இல்லை", + "presetNamePlaceholder": "முன்னமைவின் பெயர்", + "savingPreset": "சேமிக்கிறது…", + "nameRequired": "பெயர் தேவை", + "failedToSavePreset": "முன்னமைவைச் சேமிக்க முடியவில்லை", + "improvePrompt": "தூண்டுரையை மேம்படுத்து", + "improvingPrompt": "மேம்படுத்துகிறது…", + "improvePromptTitle": "AI மூலம் உங்கள் தூண்டுரையை மேம்படுத்துங்கள்", + "setModelFirst": "முதலில் ஒரு மாதிரியை அமைக்கவும்", "setModelInConfigFirst": "முதலில் Config பலகத்தில் ஒரு மாதிரியை அமைக்கவும்.", "improvePromptFailed": "ப்ராம்ப்ட்டை மேம்படுத்துவது தோல்வியடைந்தது.", "improvePromptAria": "AI-ஐப் பயன்படுத்தி ப்ராம்ப்ட்டை மேம்படுத்தவும்", "confirmImprovePrompt": "ப்ராம்ப்ட் மேம்படுத்தலை உறுதிப்படுத்தவும்", "improvePromptDescription": "மேம்படுத்தப்பட்ட பதிப்பை உருவாக்க இது உங்கள் தற்போதைய சிஸ்டம் ப்ராம்ப்ட்டை -க்கு அனுப்பும்.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "இது Config-இல் உள்ளமைக்கப்பட்ட மாதிரியின் ஒதுக்கீட்டைப் பயன்படுத்தும்.", + "improveConfirm": "மேம்படுத்து", + "exportCode": "குறியீட்டை ஏற்றுமதி செய்", + "exportCodeTitle": "குறியீட்டை ஏற்றுமதி செய்", "exportShort": "ஏற்றுமதி", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "ஏற்றுமதி செய்வதற்கான playground நிலை எதுவும் இல்லை.", "closeExportModal": "ஏற்றுமதி சாளரத்தை மூடு", "close": "மூடு", "exportRealKeyWarning": "பாதுகாப்பு எச்சரிக்கை: ஏற்றுமதி தடுக்கப்பட்டது — வெளியீட்டில் உண்மையான API key கண்டறியப்பட்டது. உங்கள் API key-ஐ மீட்டமைத்து மீண்டும் முயற்சிக்கவும்.", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language} குறியீட்டை நகலெடு", "loadingPresets": "ஏற்றுகிறது…", "loadPresetPlaceholder": "முன்னமைவை ஏற்று…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "நகலெடு", + "copiedCode": "நகலெடுக்கப்பட்டது!", + "addModel": "+ மாதிரியைச் சேர்", + "runAll": "அனைத்தையும் இயக்கு", + "cancelAll": "அனைத்தையும் ரத்துசெய்", + "maxColumnsReached": "அதிகபட்சம் {max} நெடுவரிசைகள்", + "modelPlaceholderCompare": "மாதிரி (Cmd+K)…", "noModel": "மாதிரி இல்லை", "statusLabel": "நிலை: {status}", "status": { @@ -11095,36 +11102,36 @@ "waitingForResponse": "பதிலுக்காகக் காத்திருக்கிறது…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "கிளையன்ட்-பக்க மதிப்பீடு", + "tokensLabel": "டோக்கன்கள்", + "costLabel": "செலவு", + "costEstimated": "(மதிப்பிடப்பட்டது)", "ttftTitle": "முதல் டோக்கனுக்கான நேரம் (கிளையன்ட் பக்க மதிப்பீடு)", "tpsTitle": "வினாடிக்கு டோக்கன்கள் (கிளையன்ட் பக்க மதிப்பீடு)", "tokenCountsTitle": "ப்ராம்ப்ட் டோக்கன்கள் ↑ / நிறைவு டோக்கன்கள் ↓", "estimatedCostTitle": "மதிப்பிடப்பட்ட செலவு (துல்லியத்திற்கு உத்தரவாதம் இல்லை)", - "toolsLabel": "Tools", + "toolsLabel": "கருவிகள்", "toolsCount": "கருவிகள் ({count})", - "addTool": "Add tool", + "addTool": "கருவியைச் சேர்", "editTool": "{name} கருவியைத் திருத்து", "removeTool": "{name} கருவியை அகற்று", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "செயல்பாட்டின் பெயர்", "toolNameRequiredPlaceholder": "செயல்பாட்டின் பெயர் *", - "toolDescPlaceholder": "Description (optional)", - "toolParamsLabel": "Parameters (JSON schema)", - "toolParamsJsonSchema": "JSON schema for parameters", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", - "jsonMode": "JSON mode", + "toolDescPlaceholder": "விளக்கம் (விருப்பத்தேர்வு)", + "toolParamsLabel": "அளவுருக்கள் (JSON schema)", + "toolParamsJsonSchema": "அளவுருக்களுக்கான JSON schema", + "toolParamsInvalid": "அளவுருக்கள் செல்லுபடியாகும் JSON ஆக இருக்க வேண்டும்", + "structuredOutputLabel": "கட்டமைக்கப்பட்ட வெளியீடு", + "enableJsonMode": "JSON பயன்முறையை இயக்கு", + "disableJsonMode": "JSON பயன்முறையை முடக்கு", + "invalidJson": "செல்லுபடியாகாத JSON", + "jsonMode": "JSON பயன்முறை", "jsonModeDescription": "response_format: json_schema-ஐக் கட்டாயப்படுத்துகிறது", - "schemaName": "Schema name", - "jsonSchema": "JSON schema", - "jsonSchemaEditor": "JSON schema editor", - "schemaValidated": "Schema validated", - "validateSchema": "Validate schema", + "schemaName": "ஸ்கீமா பெயர்", + "jsonSchema": "JSON ஸ்கீமா", + "jsonSchemaEditor": "JSON ஸ்கீமா திருத்தி", + "schemaValidated": "ஸ்கீமா சரிபார்க்கப்பட்டது", + "validateSchema": "ஸ்கீமாவைச் சரிபார்க்கவும்", "seed": "சீட்", "stopSequences": "நிறுத்த வரிசைகள்", "stopSequencesPlaceholder": "எ.கா. \"\\n\\n\" அல்லது \"END\"", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} நெடுவரிசைகள்", "addModelToCompare": "ஒப்பிடுவதற்கு ஒரு மாதிரி நெடுவரிசையைச் சேர்", "modelsSimultaneously": "ஒரே நேரத்தில் {max} மாதிரிகள் வரை", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "இயங்குகிறது…", + "runLabel": "இயக்கு", + "enterToolResult": "கருவியின் முடிவை உள்ளிடவும்…", "build": { "step1Label": "எதைச் சோதிக்க வேண்டும்?", "step2Label": "கட்டமைக்கவும்", @@ -11250,73 +11257,73 @@ "stop": "நிறுத்து" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "பதிவுசெய்கிறது", + "paused": "இடைநிறுத்தப்பட்டது", + "pipelineLogsOn": "பைப்லைன் பதிவுகள் இயக்கத்தில் உள்ளன", + "pipelineLogsOff": "பைப்லைன் பதிவுகள் முடக்கப்பட்டுள்ளன", + "updatingPipelineLogs": "பைப்லைன் பதிவுகள் புதுப்பிக்கப்படுகின்றன...", + "updatePipelineFailed": "பைப்லைன் பதிவைப் புதுப்பிக்க முடியவில்லை", + "capturePipeline": "புதிய கோரிக்கைகளுக்கான பைப்லைன் பேலோடுகளைப் பதிவுசெய்யவும்", + "searchPlaceholder": "மாதிரிகள், வழங்குநர்கள், கணக்குகள், API விசைகள், சேர்க்கைகள் ஆகியவற்றைத் தேடவும்...", + "allProviders": "அனைத்து வழங்குநர்களும்", + "allModels": "அனைத்து மாதிரிகளும்", + "allAccounts": "அனைத்து கணக்குகளும்", + "allApiKeys": "அனைத்து API விசைகளும்", + "total": "மொத்தம்", + "ok": "வெற்றி", + "err": "பிழை", + "combo": "சேர்க்கை", + "keys": "விசைகள்", + "shown": "காட்டப்பட்டவை", + "sortNewest": "புதியவை முதலில்", + "sortOldest": "பழையவை முதலில்", + "sortTokensDesc": "டோக்கன்கள் ↓", + "sortTokensAsc": "டோக்கன்கள் ↑", + "sortDurationDesc": "கால அளவு ↓", + "sortDurationAsc": "கால அளவு ↑", + "sortStatusDesc": "நிலை ↓", + "sortStatusAsc": "நிலை ↑", + "sortModelAsc": "மாதிரி A-Z", + "sortModelDesc": "மாதிரி Z-A", + "sortLogs": "பதிவுகளை வரிசைப்படுத்து", + "refresh": "புதுப்பி", + "columnsLabel": "நெடுவரிசைகள்", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "இயங்குகிறது", + "semantic": "சொற்பொருள் சார்ந்தது", + "upstream": "அப்ஸ்ட்ரீம்", + "semanticCacheHit": "சொற்பொருள் தற்காலிகச் சேமிப்பகப் பொருத்தம் (OmniRoute மூலம் வழங்கப்பட்டது)", + "upstreamResponse": "அப்ஸ்ட்ரீம் வழங்குநரின் பதில்", + "noApiKey": "API விசை இல்லை", + "requestedRoutedTitle": "{requested} கோரப்பட்டது, {routed} ஆக வழிமாற்றப்பட்டது", "statusFilters": { - "all": "All", - "error": "Error", - "success": "Success", - "combo": "Combo" + "all": "அனைத்தும்", + "error": "பிழை", + "success": "வெற்றி", + "combo": "காம்போ" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "நிலை", + "cacheSource": "தற்காலிகச் சேமிப்பக மூலம்", + "model": "மாதிரி", + "requested": "கோரப்பட்டது", + "provider": "வழங்குநர்", + "protocol": "கோரிக்கை நெறிமுறை", + "account": "கணக்கு", + "apiKey": "API விசை", + "combo": "காம்போ", + "tokens": "டோக்கன்கள்", "compressed": "சுருக்கம்", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "கால அளவு", + "time": "நேரம்", + "conversation": "உரையாடல்", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "பதிவுகள் ஏற்றப்படுகின்றன...", + "noLogs": "இதுவரை பதிவுகள் இல்லை. அவற்றை இங்கே காண சில API அழைப்புகளைச் செய்யவும்.", + "noMatchingLogs": "தற்போதைய வடிப்பான்களுடன் பொருந்தும் பதிவுகள் இல்லை.", + "callLogsInfo": "அழைப்புப் பதிவுகள் JSON கோப்புகளாக {dataDir} என்பதிலும் சேமிக்கப்பட்டு, {retentionDays} மற்றும் {maxEntries} அடிப்படையில் சுழற்சி முறையில் பராமரிக்கப்படுகின்றன.", "loadMore": "மேலும் ஏற்றுக", "loadingMore": "மேலும் ஏற்றப்படுகிறது...", "correlationId": "இணைப்பு ஐடி", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "இந்த பதிவு நுழைவுக்கு விரிவான payload கலைப்பொருள் இனி கிடைக்கவில்லை.", "payloadCorrupt": "விவரமான payload கலைப்பொருள் பகுப்பாய்வு செய்ய முடியவில்லை.", - "notAvailable": "N/A", + "notAvailable": "பொருந்தாது", "semanticCache": "அர்த்தமிக்க (OmniRoute)", "upstreamCache": "மேல்நிலை (வழங்குநர்)", "ariaLabel": "கோரிக்கை பதிவு விவரம்", @@ -11417,59 +11424,59 @@ "correlationId": "குறுக்கீட்டு ஐடி", "correlationIdValue": "உறுப்பு அடையாளம்: {id}", "detailedPayloadInfo": "முதலில் விரிவான பதிவு செயல்படுத்தவும், புதிய கோரிக்கைகளுக்கான நான்கு கட்டம் கிளையன்ட்/முதலீட்டாளர் payload காட்சி வேண்டும் என்றால்.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "அனைத்தையும் நகலெடு", + "copiedAll": "அனைத்தும் நகலெடுக்கப்பட்டன" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "அனைத்தும்", + "filterErrors": "பிழைகள்", + "filterSuccess": "வெற்றி", + "filterTimeout": "காலக்கெடு", + "colStatus": "நிலை", + "colProxy": "ப்ராக்ஸி", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "வகை", + "colLevel": "நிலை", + "colProvider": "வழங்குநர்", + "colTarget": "இலக்கு", + "colLatency": "தாமதம்", + "colClientIp": "கிளையன்ட் IP", + "colTime": "நேரம்", + "recording": "பதிவுசெய்தல்", + "paused": "இடைநிறுத்தப்பட்டது", + "searchPlaceholder": "ஹோஸ்ட், வழங்குநர், இலக்கு, IP ஆகியவற்றைத் தேடுக...", + "allTypes": "அனைத்து வகைகளும்", + "allLevels": "அனைத்து நிலைகளும்", + "allProviders": "அனைத்து வழங்குநர்களும்", + "total": "மொத்தம்", + "ok": "சரி", + "err": "பிழை", + "timeoutShort": "காலக்கெடு", + "direct": "நேரடி", + "newest": "புதியவை முதலில்", + "oldest": "பழையவை முதலில்", + "latencyDesc": "தாமதம் ↓", + "latencyAsc": "தாமதம் ↑", + "refresh": "புதுப்பி", + "columns": "நெடுவரிசைகள்", + "loadingProxyLogs": "ப்ராக்ஸி பதிவுகள் ஏற்றப்படுகின்றன...", + "noProxyLogs": "இதுவரை ப்ராக்ஸி பதிவுகள் எதுவுமில்லை. ப்ராக்ஸிகளை உள்ளமைத்து API அழைப்புகளை மேற்கொண்டால் அவற்றை இங்கே காணலாம்.", + "noMatchingLogs": "தற்போதைய வடிப்பான்களுடன் எந்தப் பதிவுகளும் பொருந்தவில்லை.", + "tlsFingerprint": "Chrome 124 TLS கைரேகை", "colPublicIp": "பொது IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "பேச்சு", + "search": "தேடல்", + "images": "படங்கள்", + "chat": "அரட்டை", + "music": "இசை", + "responses": "பதில்கள்", + "rerank": "மறுதரவரிசைப்படுத்தல்", + "video": "காணொளி", + "embeddings": "உட்பொதிவுகள்", + "transcription": "ஒலிப்பதிவாக்கம்" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "இயக்கநேரம்", + "description": "நிகழ்நேரக் கண்காணிப்பு — 3-அடுக்கு மீள்திறன் + அமர்வுகள் + ஒதுக்கீட்டு எச்சரிக்கைகள்", + "pause": "இடைநிறுத்து", + "resume": "தொடர்க", + "refreshNow": "இப்போது புதுப்பி", + "kpiSessions": "அமர்வுகள்", + "kpiCircuits": "சுற்றுகள்", + "kpiCooldowns": "குளிர்வுக் காலங்கள்", + "kpiLockouts": "பூட்டல்கள்", + "hintStickyBound": "{count} நிலையாகப் பிணைக்கப்பட்டவை", + "hintRecovering": "{count} மீண்டுவருகின்றன", + "hintAllHealthy": "அனைத்தும் சீராக உள்ளன", + "hintOpen": "திறந்தவை", + "hintConnsCooling": "குளிர்வடையும் இணைப்புகள்", + "hintModelsBlocked": "தடுக்கப்பட்ட மாதிரிகள்", + "resilienceTitle": "3-அடுக்கு மீள்திறன்", + "resilienceSubtitle": "ஆவணப்படுத்தப்பட்ட மீள்திறன் மாதிரியைப் பிரதிபலிக்கிறது", + "providersHealthy": "{percent}% வழங்குநர்கள் சீராக உள்ளனர்", + "layer": "அடுக்கு {n}", + "layer1Title": "வழங்குநர் சுற்றுத் துண்டிப்பான்கள்", + "layer1Desc": "மேல்நிலை அளவில் தோல்வியுறும் வழங்குநர்களுக்கான போக்குவரத்தை நிறுத்து", + "layer2Title": "இணைப்புக் குளிர்வுக் காலங்கள்", + "layer2Desc": "சிக்கலான ஒரு கணக்கு/திறவுகோலைத் தவிர்; மற்ற இணைப்புகள் தொடர்ந்து சேவை வழங்கும்", + "layer3Title": "மாதிரிப் பூட்டல்கள்", + "layer3Desc": "ஒவ்வொரு மாதிரிக்குமான விகித வரம்புப் பூட்டுகள்; அதே இணைப்பு பிற மாதிரிகளுக்குத் தொடர்ந்து சேவை வழங்கும்", + "badgeAffectedOf": "மொத்தம் {total} இல் {affected} பாதிக்கப்பட்டுள்ளன", + "badgeCooling": "{count} குளிர்வடைகின்றன", + "badgeLocked": "{count} பூட்டப்பட்டுள்ளன", + "emptyCircuits": "இதுவரை செயலில் உள்ள சுற்றுத் துண்டிப்பான்கள் இல்லை", + "emptyCooldowns": "செயலில் உள்ள இணைப்புக் குளிர்வுக் காலங்கள் இல்லை", + "emptyLockouts": "மாதிரிப் பூட்டல்கள் இல்லை", + "moreCooldowns": "மேலும் +{count} குளிர்வுக் காலங்கள்", + "moreLockouts": "+{count} கூடுதல் பூட்டல்கள்", + "feedTitle": "நேரலைப் பதிவு", + "feedSubtitle": "கடைசி {count} நிகழ்வுகள்", + "feedFilterAll": "அனைத்தும்", + "feedFilterCircuits": "சுற்றுகள்", + "feedFilterCooldowns": "குளிர்வுக் காலங்கள்", + "feedFilterLockouts": "பூட்டல்கள்", + "feedFilterSessions": "அமர்வுகள்", + "feedFilterQuotas": "ஒதுக்கீடுகள்", + "feedClear": "அழி", + "feedEmptyWaiting": "நிகழ்வுகளுக்காகக் காத்திருக்கிறது... (ஒவ்வொரு 5 வினாடிகளுக்கும் வினவப்படும்)", + "feedEmptyFiltered": "இந்த வடிப்பானுடன் பொருந்தும் நிகழ்வுகள் இல்லை", + "sessionsTitle": "செயலில் உள்ள அமர்வுகள்", + "sessionsSubtitle": "நிலையாகப் பிணைக்கப்பட்ட கோரிக்கை கைரேகைகள் (நேரலை)", + "sessionsActive": "{count} செயலில் உள்ளன", + "sessionsEmptyTitle": "செயலில் உள்ள அமர்வுகள் இல்லை", + "sessionsEmptyHint": "பதிலி வழியாகக் கோரிக்கைகள் செல்லும்போது அமர்வுகள் தோன்றும்", + "tblSession": "அமர்வு", + "tblAge": "வயது", + "tblIdle": "செயலற்ற நேரம்", + "tblReqs": "கோரிக்கைகள்", + "tblBoundTo": "இதனுடன் பிணைக்கப்பட்டது", + "topApiKeys": "முன்னணி API விசைகள்", + "quotaMonitorsTitle": "ஒதுக்கீட்டுக் கண்காணிப்புகள்", + "quotaMonitorsSubtitle": "ஒவ்வொரு கணக்கு காலச்சாளரத்திற்குமான நேரலை ஒதுக்கீட்டு நிலை", + "openQuota": "ஒதுக்கீட்டைத் திற", + "allQuotasHealthy": "அனைத்து ஒதுக்கீடுகளும் சீராக உள்ளன", + "statusExhausted": "தீர்ந்துவிட்டது", + "statusAlerting": "எச்சரிக்கை நிலையில்", + "statusError": "பிழை", + "moreSuffix": "+{count} கூடுதல்" }, "quotaShare": { "weightPercent": "எடை %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "ஒதுக்கீட்டுப் பகிர்வு", + "description": "% வரம்புகளுடன் வழங்குநர் ஒதுக்கீடுகளை API விசைகளிடையே பகிரவும்", + "newPool": "புதிய தொகுப்பு", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "உள்ளமைவு localStorage-இல் சேமிக்கப்படுகிறது (சேவையகத்தில் இன்னும் நிலையாகச் சேமிக்கப்படவில்லை). ஒவ்வொரு கோரிக்கைக்குமான உச்சவரம்பு அமலாக்கம் இன்னும் பதிலி செயலாக்கத் தொடருடன் இணைக்கப்படவில்லை. ஒதுக்கீட்டுப் பிரிவை வடிவமைக்கவும் காட்சிப்படுத்தவும் இந்தத் திரை உதவுகிறது; தரவுத்தள நிலைச் சேமிப்பு மற்றும் மேல்நிலை அழைப்பு இடைமறிப்புடன் உண்மையான அமலாக்கம் எதிர்காலப் பதிப்பில் இடம்பெறும்.", + "kpiActivePools": "செயலில் உள்ள தொகுப்புகள்", + "kpiKeysAllocated": "ஒதுக்கப்பட்ட விசைகள்", + "kpiAvgUnallocated": "சராசரி ஒதுக்கப்படாத அளவு", + "kpiProvidersWithQuota": "ஒதுக்கீடு கொண்ட வழங்குநர்கள்", + "emptyTitle": "எந்தத் தொகுப்பும் உள்ளமைக்கப்படவில்லை", + "emptyDescription": "ஒரு வழங்குநரின் ஒதுக்கீட்டு வரம்புக் காலத்தை % ஒதுக்கீடுகளுடன் பகிர API விசைகளை ஒதுக்க ஒரு தொகுப்பை உருவாக்கவும்.", + "loading": "ஏற்றுகிறது…", + "removePool": "தொகுப்பை அகற்று", + "removeConfirm": "இந்தத் தொகுப்பை அகற்றவா?", + "pool": "தொகுப்பு", + "used": "பயன்படுத்தப்பட்டது", + "allocationsCount": "ஒதுக்கீடுகள் ({count})", + "allocatedFree": "{allocated}% ஒதுக்கப்பட்டது · {free}% இலவசம்", + "noAllocations": "இதுவரை எந்த விசைகளும் ஒதுக்கப்படவில்லை", + "capLabel": "உச்சவரம்பு {value}", + "notTrackedYet": "(இன்னும் கண்காணிக்கப்படவில்லை)", + "policy": "கொள்கை", "apiKeyColumn": "API கீ", "weightColumn": "எடை", "fairShareShort": "நியாயமான", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "கடுமையானது", + "policySoft": "நெகிழ்வானது", + "policyBurst": "திடீர் அதிகரிப்பு", + "policyHardHint": "விசையின் ஒதுக்கீடு தீர்ந்ததும் தடு", + "policySoftHint": "வரம்பு மீறலை அனுமதி, எச்சரிக்கை மட்டும்", + "policyBurstHint": "இலவசத் தொகுப்பைப் பயன்படுத்தித் திடீர் அதிகரிப்பை அனுமதி", + "editAllocations": "ஒதுக்கீடுகளைத் திருத்து", + "newPoolTitle": "புதிய ஒதுக்கீட்டுத் தொகுப்பு", + "providerConnection": "வழங்குநர் இணைப்பு (கணக்கு)", + "selectConnection": "ஓர் இணைப்பைத் தேர்ந்தெடுக்கவும்…", + "noEligibleConnections": "ஒதுக்கீட்டுத் தரவுடன் இணைப்புகள் எதுவும் இல்லை. முதலில் /dashboard/quota இலிருந்து புதுப்பிக்கவும்.", + "quotaWindow": "ஒதுக்கீட்டு வரம்புக் காலம்", + "selectWindow": "ஒரு காலத்தைத் தேர்ந்தெடுக்கவும்…", + "alreadyUsedSuffix": "(ஏற்கனவே பயன்படுத்தப்பட்டது)", + "windowReset": "மீட்டமை", + "duplicatePoolError": "இந்த இணைப்பு + காலத்திற்கான தொகுப்பு ஏற்கனவே உள்ளது", + "cancel": "ரத்துசெய்", + "createPool": "தொகுப்பை உருவாக்கு", + "editTitle": "ஒதுக்கீடுகளைத் திருத்து", + "noKeysAdded": "விசைகள் எதுவும் ஒதுக்கப்படவில்லை. கீழே ஒன்றைச் சேர்க்கவும்.", + "totalLabel": "மொத்தம்: {percent}%", + "totalExceeded": "⚠ 100%-ஐ மீறுகிறது", + "addKey": "+ விசையைச் சேர்…", + "equalSplit": "சமமாகப் பிரி", + "save": "ஒதுக்கீடுகளைச் சேமி", "betaPreviewLabel": "பீட்டா — UI மாதிரிக்காட்சி.", "betaConfigSavedPrefix": "உள்ளமைவு சேமிக்கப்படுகிறது", "betaConfigSavedSuffix": "(சேவையகத்தில் இன்னும் தொடரவில்லை). ப்ராக்ஸி பைப்லைனில் ஒரு கோரிக்கைக்கான தொப்பி அமலாக்கம் இன்னும் இணைக்கப்படவில்லை. இந்தத் திரையானது ஒதுக்கீட்டைப் பிரிப்பதை வடிவமைக்கவும் காட்சிப்படுத்தவும் உங்களை அனுமதிக்கிறது; உண்மையான அமலாக்கமானது DB நிலைத்தன்மை மற்றும் அப்ஸ்ட்ரீம் அழைப்பு இடைமறிப்பு ஆகியவற்றுடன் எதிர்கால மறு செய்கையில் இறங்கும்.", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "அடிப்படை URL", "endpointsCollapse": "சுருக்கு", "endpointsExpand": "விரிவாக்கு", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-நேட்டிவ்", "endpointsResponsesNote": "OpenAI பதில்கள் — codex/github", "endpointsWsNote": "WebSocket — codex மட்டும்", "betaText": "Quota Share செயல்படுகிறது ஆனால் பிழைகள் எதிர்பார்க்கப்படுகின்றன. ஏதேனும் கண்டறியப்பட்டதா? தயவுசெய்து புகாரளிக்கவும்.", @@ -11681,45 +11688,45 @@ "deleteGroupHasPools": "இந்தக் குழுவில் இன்னும் பூல்கள் உள்ளன — முதலில் அவற்றை மறுஒதுக்கீடு செய்யவும் அல்லது நீக்கவும்.", "ungroupedTitle": "குழுப்படுத்தப்படாதவை", "ungroupedHint": "இந்தப் பூல்கள் அறியப்பட்ட எந்தக் குழுவிலும் ஒதுக்கப்படவில்லை. ஒரு பூலை உண்மையான குழுவிற்கு நகர்த்த அதைத் திருத்தவும்.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "இந்தத் தொகுப்பை அகற்ற முடியவில்லை.", + "dismiss": "மூடு" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "செருகுநிரல்கள்", + "description": "OmniRoute செயல்பாட்டை விரிவுபடுத்துவதற்கான செருகுநிரல்களை நிறுவி நிர்வகிக்கவும்", + "loading": "செருகுநிரல்கள் ஏற்றப்படுகின்றன...", + "scanning": "வருடப்படுகிறது...", + "scanForPlugins": "செருகுநிரல்களை வருடு", + "noPlugins": "செருகுநிரல்கள் எதுவும் நிறுவப்படவில்லை", + "noPluginsDescription": "செருகுநிரல் கோப்பகங்களை ~/.omniroute/plugins/ இல் வைத்து, வருடு என்பதைக் கிளிக் செய்யவும்.", + "activate": "செயல்படுத்து", + "deactivate": "செயலிழக்கச் செய்", + "uninstall": "நிறுவல் நீக்கு", + "uninstallConfirm": "\"{name}\" செருகுநிரலின் நிறுவலை நீக்கவா?", + "pluginScanComplete": "செருகுநிரல் வருடல் முடிந்தது", + "pluginScanFailed": "செருகுநிரல் வருடல் தோல்வியடைந்தது", + "activated": "{name} செயல்படுத்தப்பட்டது", + "deactivated": "{name} செயலிழக்கச் செய்யப்பட்டது", + "activateFailed": "{name} ஐச் செயல்படுத்த முடியவில்லை", + "deactivateFailed": "{name} ஐச் செயலிழக்கச் செய்ய முடியவில்லை", + "uninstalled": "{name} இன் நிறுவல் நீக்கப்பட்டது", + "uninstallFailed": "{name} இன் நிறுவலை நீக்க முடியவில்லை", + "configure": "உள்ளமை: {name}", + "configurePlugin": "உள்ளமை", + "noConfigSettings": "இந்தச் செருகுநிரலில் உள்ளமைக்கக்கூடிய அமைப்புகள் எதுவும் இல்லை.", + "saving": "சேமிக்கப்படுகிறது...", + "saveConfiguration": "உள்ளமைவைச் சேமி", + "configurationSaved": "உள்ளமைவு சேமிக்கப்பட்டது", + "saveConfigurationFailed": "உள்ளமைவைச் சேமிக்க முடியவில்லை", + "pluginNotFound": "செருகுநிரல் கிடைக்கவில்லை", + "version": "பதிப்பு", + "author": "ஆசிரியர்", + "description_label": "விளக்கம்", + "status": "நிலை", + "enabled": "இயக்கப்பட்டது", + "disabled": "முடக்கப்பட்டது", "installedTab": "நிறுவப்பட்டது", - "marketplaceTab": "Marketplace", + "marketplaceTab": "சந்தையகம்", "marketplaceUrlLabel": "தனிப்பயன் Marketplace URL", "marketplaceUrlPlaceholder": "அதிகாரப்பூர்வ Omniroute பதிவேட்டிற்கு காலியாக விடவும்", "saveMarketplaceUrl": "சேமி & மீண்டும் ஏற்று", @@ -11729,7 +11736,7 @@ "verified": "சரிபார்க்கப்பட்டது", "install": "நிறுவு", "installedFromMarketplace": "செருகுநிரல் {name} நிறுவப்பட்டது!", - "hooks": "Hooks" + "hooks": "இணைப்பிகள்" }, "quotaPlans": { "title": "திட்டங்கள் & பங்கீடுகள்", @@ -12033,18 +12040,18 @@ "delete": "நீக்கு" }, "trafficInspector": { - "title": "Traffic Inspector", + "title": "போக்குவரத்து ஆய்வி", "subtitle": "LLM அழைப்புகளைக் கண்காணிக்கவும் மற்றும் எந்தவொரு பயன்பாட்டின் HTTPS டிராஃபிக்கையும் பிழைத்திருத்தவும்", "captureModesTitle": "கேப்சர் முறைகள்", "agentBridgeMode": "AgentBridge", "agentBridgeModeDesc": "இணைக்கப்பட்ட அனைத்து IDE ஏஜெண்டுகளிலிருந்தும் டிராஃபிக்கைப் பிடிக்கவும்", "customHostsMode": "தனிப்பயன் ஹோஸ்ட்கள்", "customHostsModeDesc": "இடைமறிக்க குறிப்பிட்ட ஹோஸ்ட்களைச் சேர்க்கவும்", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "HTTP ப்ராக்ஸி", "httpProxyModeDesc": "HTTP_PROXY சூழல் மாறியைப் பயன்படுத்தவும்", "systemWideMode": "சிஸ்டம் முழுவதும்", "systemWideModeDesc": "அனைத்து சிஸ்டம் டிராஃபிக்கையும் இடைமறிக்கவும் (மேம்பட்டது)", - "tproxyMode": "TPROXY Decrypt", + "tproxyMode": "TPROXY மறைவிலக்கம்", "tproxyModeUnavailable": "TPROXY decrypt-க்கு Linux + root + நேட்டிவ் addon தேவை", "filterBarTitle": "வடிகட்டிகள்", "profileLlmOnly": "LLM மட்டும்", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP முகவர்கள்", "phrase": "OmniRoute செயல்படுத்தும் பின்தளமாக உருவாக்கும் CLIகள் (தலைகீழ் ஓட்டம்)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "பெரும்பாலான பயனர்கள் இதைப் புறக்கணிக்கலாம் — ஓர் ஒருங்கிணைப்பிற்கு இது தேவைப்படும்போது மட்டும் பயன்படுத்தவும்.", "flow": "வாடிக்கையாளர் → OmniRoute → CLI உருவாக்கு (stdio/ACP) → பதில்", "seeOther": "பார்க்க →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "Omni-ஆல் பின்தளமாகப் பயன்படுத்தப்படும் CLI", "desc": "தலைகீழ் செயலாக்கம்", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → CLI-ஐத் தொடங்கு → resp", "examples": "எ.கா: claude, codex (ACP)" } }, @@ -12238,11 +12245,11 @@ "modelMappingLabel": "மாதிரி மேப்பிங்", "noActiveProviders": "செயலில் உள்ள வழங்குநர்கள் இல்லை.", "noActiveProvidersDesc": "CLI-ஐக் கட்டமைக்கும் முன், குறைந்தபட்சம் 1 வழங்குநரையாவது இணைக்க Providers பகுதிக்குச் செல்லவும்.", - "openProviders": "Open Providers →" + "openProviders": "வழங்குநர்களைத் திற →" } }, "cliCode": { - "pageTitle": "CLI Code's", + "pageTitle": "CLI குறியீடுகள்", "pageSubtitle": "OmniRoute-ஐச் சுட்டிக்காட்டும் குறியீட்டுக் கருவிகள்", "searchPlaceholder": "CLI-ஐத் தேடவும்…", "filterDetectionLabel": "கண்டறிதல்", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "வெப்ஹூக்குகள்", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "வெப்ஹுக் முனைப்புள்ளிகளைப் பதிவுசெய்யவும், பட்டியலிடவும், சோதிக்கவும் மற்றும் அகற்றவும். நிகழ்வுச் சந்தாக்களை (request.completed, request.failed, quota.exceeded போன்றவை) உள்ளமைத்து, வழங்கல் மறுமுயற்சிகளை நிர்வகிக்கவும்." }, "omni-mcp": { "name": "MCP சர்வர்", @@ -12390,47 +12397,47 @@ "description": "முக்கிய OpenAI-இணக்கமான அனுமான எண்ட்பாயிண்ட்டுகள்: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank மற்றும் Responses API. AI ஏஜெண்டுகளுக்கான முதன்மை ஒருங்கிணைப்பு பரப்பு." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: வழங்கல்", "description": "CLI இலிருந்து OmniRoute சர்வரைத் தொடங்கவும், நிறுத்தவும் மற்றும் மறுதொடக்கம் செய்யவும். டீமான் பயன்முறை, போர்ட் கட்டமைப்பு, தானியங்கி மீட்பு, சிஸ்டம் ட்ரே ஒருங்கிணைப்பு மற்றும் டாஷ்போர்டு திறக்கும் குறுக்குவழியை நிர்வகிக்கவும்." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: நிலை", "description": "CLI இலிருந்து சர்வர் ஆரோக்கியம், கூறு நிலை மற்றும் நேரடி அளவீடுகளைச் சரிபார்க்கவும். சர்க்யூட் பிரேக்கர்கள் மற்றும் வழங்குநர் நிலையின் நிகழ்நேர டாஷ்போர்டிற்கு `health`, `health components` மற்றும் `health watch` ஆகியவற்றை இயக்கவும்." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: வழங்குநர்கள்", "description": "CLI இலிருந்து வழங்குநர் இணைப்புகளை நிர்வகிக்கவும்: கிடைக்கக்கூடிய/கட்டமைக்கப்பட்ட வழங்குநர்களைப் பட்டியலிடவும், சேர்க்கவும், சோதிக்கவும், அனைத்தையும் சோதிக்கவும், சரிபார்க்கவும், API கீகளை சுழற்றவும் மற்றும் வழங்குநர் வாரியான அளவீடுகளைப் பார்க்கவும்." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: API விசைகள்", "description": "CLI இலிருந்து OmniRoute API கீகளை உருவாக்கவும், பட்டியலிடவும், சுழற்றவும் மற்றும் ரத்து செய்யவும். வழங்குநர் அங்கீகாரத்திற்கான OAuth ஓட்டங்களை நிர்வகிக்கவும் மற்றும் கீ வரம்புகள் மற்றும் காலாவதியை ஆய்வு செய்யவும்." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: மாதிரிகள்", "description": "CLI இலிருந்து கிடைக்கக்கூடிய AI மாடல்களை வினவவும், மாடல் மாற்றுப்பெயர்களைப் பட்டியலிடவும் மற்றும் முழு மாடல் பட்டியலையும் உலாவவும். வழங்குநர் மூலம் வடிகட்டவும், திறன் மூலம் தேடவும் மற்றும் மாடல் பெயர் மாறுபாடுகளைத் தீர்க்கவும்." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: அரட்டை", "description": "CLI இலிருந்து அரட்டை முடிவுகளை அனுப்பவும், பதில்களை ஸ்ட்ரீம் செய்யவும் மற்றும் ஊடாடும் REPL அமர்வைத் தொடங்கவும். அனைத்து OmniRoute வழங்குநர்கள், காம்போ ரூட்டிங் மற்றும் சிஸ்டம் பிராம்ப்ட் கட்டமைப்பை ஆதரிக்கிறது." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: வழிப்படுத்தல் மற்றும் சேர்க்கைகள்", "description": "CLI இலிருந்து ரூட்டிங் காம்போக்களை உருவாக்கவும், பட்டியலிடவும், புதுப்பிக்கவும் மற்றும் நீக்கவும். ரூட்டிங் உத்திகளைச் சோதிக்கவும், காம்போ அளவீடுகளை ஆய்வு செய்யவும் மற்றும் ஃபால்பேக் சங்கிலிகளை ஊடாடும் வகையில் கட்டமைக்கவும்." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: மீட்சித்திறன் மற்றும் ஒதுக்கீடுகள்", "description": "CLI இலிருந்து சர்க்யூட்-பிரேக்கர் நிலைகள், இணைப்பு கூல்டவுன்கள், ஒதுக்கீட்டு வரம்புகள் மற்றும் பேக்ஆஃப் நிலைகளை ஆய்வு செய்து நிர்வகிக்கவும். முடங்கிய வழங்குநர்களை மீட்டமைக்கவும் மற்றும் பின்னடைவு வரம்புகளைக் கட்டமைக்கவும்." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: சுருக்கம்", "description": "CLI இலிருந்து பிராம்ப்ட் கம்ப்ரஷனைக் கட்டமைத்து சோதிக்கவும். RTK வடிப்பான்கள், Caveman விதிகள், அடுக்கப்பட்ட கம்ப்ரஷன் முறைகளை நிர்வகிக்கவும் மற்றும் உண்மையான பிராம்ப்ட்களுடன் கம்ப்ரஷன் வெளியீட்டை முன்னோட்டமிடவும்." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: சூழல்கள் மற்றும் அமர்வுகள்", "description": "CLI இலிருந்து சூழல் பொறியியல் கட்டமைப்புகள், RTK வடிப்பான் தொகுப்புகள் மற்றும் உரையாடல் அமர்வுகளை நிர்வகிக்கவும். context-relay அமைப்புகளைப் பயன்படுத்தவும் மற்றும் செயலில் உள்ள சூழல் பைப்லைன்களை ஆய்வு செய்யவும்." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: செலவு மற்றும் பயன்பாடு", "description": "CLI இலிருந்து செலவு விவரங்கள், டோக்கன் பயன்பாடு மற்றும் அழைப்புப் பதிவுகளைப் பார்க்கவும். வழங்குநர், மாடல் அல்லது தேதி வரம்பு மூலம் வடிகட்டவும். பயன்பாட்டு அறிக்கைகளை ஏற்றுமதி செய்யவும் மற்றும் இணைப்பு வாரியான செலவினங்களை ஆய்வு செய்யவும்." }, "cli-mcp": { @@ -12589,14 +12596,14 @@ "typeApikey": "API கீ", "sortTypeFirst": "எளிதானது முதலில்", "sortTypeFirstHelp": "பதிவு செய்யும் முயற்சியின் அடிப்படையில் குழுவாக்குங்கள் (பதிவு செய்ய தேவையில்லை → OAuth உள்நுழைவு → API கீ), ஒவ்வொரு குழுவிலும் தர வரிசையைத் தக்க வைத்துக் கொள்ளுங்கள்", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "மிகவும் நம்பகமானவை முதலில்", + "sortByReliabilityHelp": "தேர்ந்தெடுக்கப்பட்ட காலப்பகுதியில் வெற்றிபெற்ற அழைப்புகளின் விகிதத்தின்படி வழங்குநர்களை வரிசைப்படுத்தவும். விகிதத்தைக் குறிப்பிடப் போதுமான அழைப்புகள் இல்லாத வழங்குநர்கள், அளவிடப்பட்டவற்றுக்குக் கீழே தங்கள் மதிப்பெண் வரிசையைத் தக்கவைத்துக்கொள்வார்கள்.", "typeLegend": "பதிவு செய்ய தேவையில்லை = பூஜ்ஜிய அமைப்பு · OAuth உள்நுழைவு = உங்கள் சொந்த கணக்குடன் உள்நுழையவும் · API கீ = உங்கள் சொந்த கீயைக் கொண்டு வாருங்கள் அல்லது அந்த வழங்குநரின் இலவச அடுக்கு", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "நம்பகத்தன்மை", + "colReliabilityHelp": "கடந்த 24 மணிநேரத்தில் இந்த வழங்குநர் உண்மையில் பதிலளித்த அழைப்புகளின் விகிதம். கோடு காட்டப்பட்டால், விகிதத்தைக் குறிப்பிட முடியாத அளவிற்கு மிகக் குறைந்த போக்குவரத்தையே அது கையாண்டது என்று பொருள்.", + "reliabilitySample": "கடந்த {hours} மணிநேரத்தில் {requests} அழைப்புகளில் {successes} வெற்றிபெற்றன", + "reliabilityTooFew": "கடந்த {hours} மணிநேரத்தில் {requests} அழைப்புகள் மட்டுமே — விகிதத்தைக் குறிப்பிடப் போதுமானவை அல்ல", + "reliabilityNoTraffic": "கடந்த 24 மணிநேரத்தில் அழைப்புகள் எதுவும் பதிவாகவில்லை" }, "discovery": { "title": "வழங்குநர் கண்டறிதல்", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar ஆதரவாளர்", + "description": "நேரடி OmniRoute Radar ஆதரவாளர் ஊட்டம் சரிபார்க்கப்பட்டது", + "criteria": "கையொப்பமிடப்பட்ட நேரடி Radar ஆதரவாளர் ஊட்டத்தைச் சரிபார்க்கவும்." }, "first-token": { "name": "முதல் டோக்கன்", @@ -12948,8 +12955,8 @@ "description": "ஒவ்வொரு இணக்கத்தன்மை முனைக்கும் பல இணைப்புகளை அனுமதிக்கவும்." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "சூழல் சாளரச் சரிபார்ப்புகளை முடக்கு", + "description": "நேரடி ஒற்றை-மாதிரி கோரிக்கைகளுக்கு OmniRoute-இன் உள்ளூர் சூழல்-சாளரம் மற்றும் அதிகபட்ச-உள்ளீடு-டோக்கன் சரிபார்ப்பைத் தவிர்க்கவும். மேல்நிலை வழங்குநர்கள் தங்களின் உண்மையான வரம்புகளைத் தொடர்ந்து அமல்படுத்துவார்கள். தூண்டுரை சுருக்கமும் வெளியீட்டு-டோக்கன் உச்சவரம்புகளும் தொடர்ந்து செயலில் இருக்கும்." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Responses API passthrough ஸ்ட்ரீம்களை கிளையண்டுகளுக்கு அனுப்புவதற்கு முன், அவற்றிலிருந்து உள் commentary-phase வெளியீட்டு உருப்படிகளை அகற்றவும். மூல அப்ஸ்ட்ரீம் வர்ணனையைப் பெற இந்தக் கொடியை முடக்கவும்." @@ -12985,7 +12992,7 @@ "description": "பைட்டுகள் ஏற்கனவே கிளையண்டை அடைந்த பிறகும், பதிலை மீண்டும் கோரவும் அதை இணைக்கவும் ஸ்ட்ரீம் மீட்டெடுப்பை அனுமதிக்கவும்." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "நடுநிலை ஸ்ட்ரீம் தொடர்ச்சியை கருவி-அழைப்பு பாதுகாப்பானதாக மாற்றவும்: கருவி அழைப்பு அனுப்பப்பட்ட பிறகு துண்டிக்கப்பட்ட ஸ்ட்ரீமை ஒருபோதும் மீண்டும் தொடர வேண்டாம் (அது இன்னும் செயல்பாட்டில் இருந்தாலும் அல்லது ஏற்கனவே முடிந்திருந்தாலும்), மேலும் முழு மறுமுயற்சி வரம்பைப் பயன்படுத்துவதற்குப் பதிலாக ஒரு வெற்று தொடர்ச்சிக்குப் பிறகு நிறுத்தவும்." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "ஸ்ட்ரீம் பயனுள்ள எந்த ஃப்ரேமையும் அனுப்பும் முன் மூடப்பட்டு, அதே இணைப்பில் வரம்பிடப்பட்ட மறுமுயற்சியும் தீர்ந்துவிட்டால், ஒருமுறை சகோதர இணைப்புக்கு ஃபெயில்ஓவர் செய்யவும். பயன்படுத்தக்கூடிய சகோதர இணைப்பு இல்லையெனில் அசல் early-EOF பிழை திருப்பியனுப்பப்படும். முடக்கம்: மறுமுயற்சிக்குப் பிறகு early-EOF இறுதியாகவே இருக்கும்." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "skills சாண்ட்பாக்ஸில் நெட்வொர்க் அணுகலை இயக்கவும்." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "சேவையகத்தால் நிர்வகிக்கப்படும் கருவிச் சுழற்சி", + "description": "மாதிரி கிளையன்ட் பயன்படுத்தக்கூடிய பதிலை வழங்கும் வரை, ஸ்ட்ரீமிங் அல்லாத சேவையகத்தால் நிர்வகிக்கப்படும் கருவி அழைப்புகளைத் தொடரவும்." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After மூலம்", + "description": "ஒருங்கிணைக்கப்பட்ட 429/503 கிடைக்காத பதில்களில், திட்டவட்டமான எதிர்கால மறுமுயற்சி நேரம் தெரியாதபோது செயற்கையான 1s மதிப்பை அனுப்புவதற்குப் பதிலாக Retry-After ஐத் தவிர்த்து, error.retry_after_provenance ஐச் சேர்த்து, combo drain பாதைகளில் உள்ள உரைநடை மறுமுயற்சிக் குறிப்புகளைப் படிக்கவும்." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "பாதுகாக்கப்பட்ட-முன்னுரிமை உள்கட்டமைப்பு நிறுத்தங்கள் 502 ஆக", + "description": "ஒதுக்கீடு-மட்டுமே-மாற்றுவழி முன்னுரிமை இலக்கு, ஒதுக்கீட்டால் ஏற்படவில்லை என உறுதியாக நிரூபிக்கக்கூடிய காரணத்திற்காக combo வை நிறுத்தும்போது 503க்குப் பதிலாக 502 எனப் பதிலளிக்கவும்: திறந்த provider circuit breaker அல்லது முன்கணிப்பு தாமதத் தவிர்ப்பு." } } }, @@ -13091,7 +13102,7 @@ }, "configuredTargets": "உள்ளமைக்கப்பட்ட இலக்குகள்", "configuredTargetsDescription": "சேமிக்கப்பட்ட காம்போ படிகள், கிடைக்கும்போது பொருந்தும் ஆரோக்கியத் தரவுகளுடன் செறிவூட்டப்படுகின்றன.", - "noConfiguredTargets": "No targets configured.", + "noConfiguredTargets": "இலக்குகள் எதுவும் உள்ளமைக்கப்படவில்லை.", "runtimeConfig": "இயக்கநேர கட்டமைப்பு", "runtimeConfigDescription": "இந்த காம்போவிற்காக தேர்ந்தெடுக்கப்பட்ட மேம்பட்ட அமைப்புகள்.", "noRuntimeConfig": "தனிப்பயன் இயக்கநேர கட்டமைப்பு எதுவும் இல்லை.", @@ -13171,7 +13182,7 @@ "segmentHint": "ஒவ்வொரு பகுதியும் = ஒரு இலவச பூல் · பூல்-நகல் நீக்கப்பட்டது, நேர்மையான எண்ணிக்கை (அதிகரித்த விகித-வரம்பு உச்சவரம்புகள் இல்லை).", "boost": "ஒரு முறை $10 OpenRouter டாப்-அப் மூலம் மாதத்திற்கு மேலும் ~{tokens} ஐ அன்லாக் செய்யவும் (50 → 1000 கோரிக்கைகள்/நாள்)", "uncapped": "நிரந்தரமாக இலவசம், வெளியிடப்பட்ட வரம்பு இல்லை (விகிதம் வரையறுக்கப்பட்டது) — உண்மையான அணுகல், தலைப்புச் செய்தியில் கணக்கிடப்படவில்லை:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "பிராந்திய அடையாளச் சரிபார்ப்புக்குப் பின்னால் (எ.கா. சீனப் பெருநிலப் பகுதியின் உண்மைப் பெயர் சரிபார்ப்பு) மேலும் ~{tokens}/மாதம் — இது உண்மையான ஒதுக்கீடு, தலைப்பில் கணக்கிடப்படவில்லை:", "tosRestricted": "{count, plural, one {# மாடல்} other {# மாடல்கள்}} சேவை விதிமுறைகள் (ToS) கட்டுப்படுத்தப்பட்டதாகக் குறிக்கப்பட்டுள்ளது — நீங்களே முடிவு செய்யுங்கள்", "provider": "வழங்குநர்", "model": "மாடல்", @@ -13230,7 +13241,7 @@ }, "remainingSeconds": "மீதி {seconds}வி", "errorCode": "குறியீடு {code}", - "applying": "Applying...", + "applying": "பயன்படுத்தப்படுகிறது...", "issue": { "circuitOpenTitle": "வழங்குநர் சர்க்யூட் பிரேக்கர் திறக்கப்பட்டுள்ளது", "circuitOpenRecommendation": "அப்ஸ்ட்ரீம் மீட்டெடுப்பைச் சரிபார்த்து, பின்னர் வழங்குநர் சர்க்யூட் பிரேக்கரை மீட்டமைக்கவும் அல்லது மீண்டும் முயற்சிக்கும் சாளரத்திற்காக காத்திருக்கவும்.", @@ -13270,80 +13281,80 @@ "viewFullHistory": "GitHub இல் முழு வரலாற்றையும் காண்க" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "பகுத்தறிவு வழிப்படுத்தல் கொள்கைகள்", + "apiKeyTitle": "இந்த API key-க்கான பகுத்தறிவு வழிப்படுத்தல்", + "subtitle": "கிளையன்ட் ஆதரவு தேவையில்லாமல் மாதிரிகளையும் பகுத்தறிவு முயற்சியையும் மாற்றி வழிப்படுத்தவும். எந்த விதியும் பொருந்தாதபோது கோரிக்கைகள் மாற்றமின்றி இருக்கும்.", + "loadError": "பகுத்தறிவு விதிகளை ஏற்ற முடியவில்லை.", + "saveError": "விதி செல்லுபடியாகாது அல்லது அதைச் சேமிக்க முடியவில்லை.", + "saved": "பகுத்தறிவு விதி சேமிக்கப்பட்டது.", + "deleteConfirm": "இந்தப் பகுத்தறிவு விதியை நீக்கவா?", + "deleteError": "பகுத்தறிவு விதியை நீக்க முடியவில்லை.", + "empty": "பொருந்தக்கூடிய பகுத்தறிவு விதிகள் எதுவும் உள்ளமைக்கப்படவில்லை.", + "all": "அனைத்தும்", + "any": "ஏதேனும்", + "enabled": "இயக்கப்பட்டது", + "disabled": "முடக்கப்பட்டது", + "filterSearch": "விதிகளைத் தேடு", + "filterScope": "வரம்பின்படி வடிகட்டு", + "filterStatus": "நிலையின்படி வடிகட்டு", + "allModels": "அனைத்து மாதிரிகளும்", + "keepModel": "மாதிரியைத் தக்கவை", + "otherModel": "வேறு மாதிரி", + "combo": "சேர்க்கை", + "priorityShort": "முன்னுரிமை {value}", + "toggleAria": "{name}-ஐ இயக்கு", + "edit": "திருத்து", + "delete": "நீக்கு", + "name": "பெயர்", + "description": "விளக்கம்", + "scopeLabel": "வரம்பு", + "apiKey": "API விசை", + "sourceCombo": "மூல Combo", + "connection": "இணைப்பு", + "sourceModel": "மூல மாதிரி அல்லது வைல்ட்கார்டு", + "sourceModelOptional": "காலியாக இருந்தால் = அனைத்து மாதிரிகளும்", + "sourceModelExample": "எ.கா. gpt-5*", + "sourceEffort": "மூல முயற்சி", + "missing": "குறிப்பிடப்படவில்லை", + "signalOnly": "தனித்தனி அல்லாத பகுத்தறிவுச் சமிக்ஞை", + "requestTags": "கோரிக்கை குறிச்சொற்கள்", + "requestTagsExample": "குறியீட்டாக்கம், உள் பயன்பாடு", + "tagMode": "குறிச்சொல் பொருத்தம்", + "effortMode": "முயற்சி முறை", + "targetEffort": "இலக்கு முயற்சி", + "routingTarget": "வழிமாற்ற இலக்கு", + "targetModel": "இலக்கு மாடல்", + "targetCombo": "இலக்கு சேர்க்கை", + "budgetAction": "சிந்தனை வரம்பு", + "budgetTokens": "வரம்பு டோக்கன்கள்", + "priority": "முன்னுரிமை", + "saveChanges": "மாற்றங்களைச் சேமி", + "add": "விதியைச் சேர்", + "cancel": "ரத்துசெய்", + "simulateTitle": "விதியை உருவகப்படுத்து", + "model": "மாடல்", + "effort": "முயற்சி", + "transport": "பரிமாற்றம்", + "simulate": "அப்ஸ்ட்ரீம் இல்லாமல் உருவகப்படுத்து", + "extendedComboWarning": "வழிமாற்றத்தின்போது ஒவ்வொரு சேர்க்கை இலக்கிற்கும் Max/Ultra தனித்தனியாகச் சரிபார்க்கப்படுகிறது.", + "extendedUnknownWarning": "Max/Ultra ஆதரவைச் சரிபார்க்க இலக்கு மாடலை உள்ளிடவும்.", + "extendedUnsupportedWarning": "பொருத்தமான Codex GPT-5.6 மாடல்கள் மட்டுமே Max/Ultra-ஐ ஆதரிப்பதாக அறியப்படுகிறது. அறியப்படாத தனிப்பயன் மாடல்களைச் சேவையகம் எச்சரிக்கையுடன் ஏற்கும்.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "உலகளாவிய", + "apiKey": "API விசை", + "combo": "சேர்க்கை", + "model": "மாடல்", + "connection": "இணைப்பு" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "கிளையன்டிடமிருந்து மரபுரிமையாகப் பெறு", + "default": "இயல்புநிலையைப் பயன்படுத்து", + "force": "கட்டாயப்படுத்து" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "தக்கவை", + "remove": "அகற்று", + "set": "நிலையான மதிப்பை அமை" } }, "chaosConfig": { @@ -13425,91 +13436,91 @@ "tierCommunity": "சமூகம் (30-நாள் தாமதம்)", "activateTitle": "ரேடாரை செயல்படுத்தவும்", "activateDescription": "ரேடார் இலவச மாதிரி பட்டியலை சமூக ஆதாரமான அறிவியுடன் வளமாக்குகிறது — புதுப்பிக்கப்பட்ட மாதிரி கிடைக்கும், கோட்டைகள் மற்றும் அமைப்பு வழிகாட்டிகள்.", + "accessScaleTitle": "செயல்படுத்துவதற்கு முன் Radar அணுகலைப் புரிந்துகொள்ளுங்கள்", + "accessScaleIntro": "நீங்கள் விருப்பத்துடன் இணையும் வரை Radar நெட்வொர்க் செயல்பாடின்றியே இருக்கும். இந்த விதிகளைப் பரிசீலித்த பிறகு Community அணுகலைத் தேர்ந்தெடுக்கவும் அல்லது தனிப்பட்ட ஆதரவாளர் விசையைச் செயல்படுத்தவும்.", + "accessCommunityRule": "Community — விசை தேவையில்லை: 30 நாள் தாமதத்துடன் முழுமையான பட்டியல்.", + "accessSingleUseRule": "நட்சத்திரமிடுங்கள் + பின்தொடருங்கள் — GitHub OAuth இரண்டையும் சரிபார்த்த பிறகு, உங்கள் GitHub கணக்கிற்கு நேரடி பட்டியலை ஒருமுறை வாசிக்கும் அணுகல் கிடைக்கும்; அதன் பிறகு அணுகல் Community நிலைக்குத் திரும்பும். அந்தக் கணக்கிற்கு இந்த ஒருமுறை அணுகலை மீண்டும் வழங்க முடியாது.", + "accessContributorRule": "பங்களிப்பாளர்கள் — ஒன்றிணைக்கப்பட்ட PR-கள், commits மற்றும் வரிகள் ஆகியவை வாராந்திர தரவரிசையின் வரிசையை மட்டுமே தீர்மானிக்கின்றன. முதல் 10 இடங்களில் உள்ளவர்கள் 365 நாட்களையும், 11–100 இடங்களில் உள்ளவர்கள் 90 நாட்களையும் பெறுவர்; PR எண்ணிக்கையைப் பொருட்படுத்தாமல், முதல் 100 இடங்களுக்கு வெளியே உள்ள பங்களிப்பாளர்களுக்கு எந்த அணுகலும் வழங்கப்படாது. தரவரிசையிலிருந்து வெளியேறுவது ஏற்கெனவே வழங்கப்பட்ட காலத்தை ஒருபோதும் குறைக்காது.", + "accessSupporterRule": "ஆதரவாளர்கள் — ஒருமுறை வாங்குவதன் மூலம் தானியங்கி புதுப்பித்தல் இன்றி 6 மாதங்கள், 1 ஆண்டு அல்லது வாழ்நாள் அணுகல் வழங்கப்படும். வாங்குதல்கள், நன்கொடைகள், பங்களிப்பாளர் காலங்கள் மற்றும் கைமுறை வழங்கல்கள் ஒன்றோடொன்று சேர்க்கப்படும்; வாழ்நாள் அணுகலே எப்போதும் மேலோங்கும்.", + "accessUseTitle": "தனிப்பட்ட பயன்பாடு, மீட்பு மற்றும் மதிப்பாய்வு", + "accessInstallationRule": "தனிப்பட்ட உரிமம் — ஒரே நேரத்தில் ஒரு செயலில் உள்ள நிறுவலில் மட்டும் சாவியைப் பயன்படுத்துங்கள். OmniRoute வன்பொருளின் கைரேகையைப் பதிவு செய்வதில்லை. மீட்பு செயல்முறை, தொலைந்த சாவியின் காலாவதித் தேதியை மீட்டமைக்காமல் அதை ரத்துசெய்து மாற்றீட்டை வழங்கும்.", + "accessAbuseRule": "தவறான பயன்பாட்டு மதிப்பாய்வு — 24 மணி நேரத்தில் 4-வது வேறுபட்ட IP, கைமுறை மதிப்பாய்வுக்கான கொடியை மட்டுமே உருவாக்கும்; அது ஒருபோதும் தானாக ஒரு சாவியைத் தடுக்கவோ ரத்துசெய்யவோ செய்யாது.", + "accessOffersRule": "நேரடி சலுகைகள் கைமுறையாகத் தேர்ந்தெடுக்கப்படுகின்றன; அவை மாறலாம் அல்லது காலாவதியாகலாம்.", + "privacyTitle": "Radar பரிமாறுவது என்ன", + "privacyDownloadsRule": "பதிவிறக்கங்கள் — உங்கள் நிறுவல் குறியாக்க முறையில் கையொப்பமிடப்பட்ட பட்டியல் மற்றும் பரிந்துரை மெட்டாடேட்டாவைப் பெறுகிறது; செல்லுபடியாகும் நேரடி சாவி, கையொப்பமிடப்பட்ட சலுகைகளையும் Intel-ஐயும் திறக்கிறது.", + "privacySendsRule": "அனுப்பப்படுபவை — சேவையகப் பக்க ஒத்திசைவு, ஆதரவாளர் சாவியை Bearer token ஆக அனுப்புகிறது; மேலும் HTTPS உள்கட்டமைப்பு இணைப்பின் IP-ஐப் பெறுகிறது. Feed கோரிக்கை கணக்கீடு எந்த மதிப்பையும் மூல வடிவில் சேமிப்பதில்லை: அது சாவி hash-கள், மொத்தப் பயன்பாடு மற்றும் தவறான பயன்பாட்டு மதிப்பாய்வுக்காக தினமும் சுழற்சி முறையில் மாறும் சுருக்கப்பட்ட IP HMAC ஆகியவற்றை வைத்திருக்கும்.", + "privacyNeverRule": "ஒருபோதும் சேகரிக்கப்படாதவை — prompts, responses, conversations, provider credentials, model traffic, uptime, latency மற்றும் உள்ளூர் provider configuration ஆகியவை ஒருபோதும் Radar-க்கு அனுப்பப்படுவதில்லை.", "activateButton": "செயல்படுத்தவும்", "activating": "செயல்படுத்துகிறது...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", + "keySectionTitle": "ஏற்கெனவே ஆதரவாளர் சாவி உள்ளதா?", + "keyInvalidFormatError": "தவறான சாவி வடிவம். அது \"omr_\" என்று தொடங்கி, அதைத் தொடர்ந்து 40 hex எழுத்துகளைக் கொண்டிருக்க வேண்டும்.", + "activateWithKeyButton": "ஆதரவாளர் அணுகலைச் செயல்படுத்து", + "changeKeyButton": "சாவியை மாற்று", + "claimSectionTitle": "இன்னும் ஆதரவாளர் சாவி இல்லையா?", + "contributorButton": "நான் ஒரு பங்களிப்பாளர்", + "contributorHint": "GitHub OAuth தற்போதைய வாராந்திர தரவரிசையைச் சரிபார்க்கிறது: முதல் 10 இடங்களில் உள்ளவர்களுக்கு 365 நாட்களும், 11–100 இடங்களில் உள்ளவர்களுக்கு 90 நாட்களும் கிடைக்கும். PR எண்ணிக்கை மட்டும் முதல் 100 இடங்களுக்கு வெளியே அணுகலை ஒருபோதும் வழங்காது.", + "supporterButton": "திட்டத்தை ஆதரிக்கவும்", "supporterHint": "Support OmniRoute to get a supporter key with the live catalog and extra perks.", "colProvider": "வழங்குநர்", "colModel": "மாதிரி", "colQuota": "கோட்டை", + "colLimits": "விகித வரம்புகள்", + "trainsOnPrompts": "prompts-ஐப் பயன்படுத்திப் பயிற்சியளிக்கிறது", + "trainsOnPromptsHelp": "இந்த provider-ன் விதிமுறைகளின்படி, நீங்கள் அனுப்பும் prompts-ஐப் பயன்படுத்தி அது பயிற்சியளிக்கக்கூடும். இந்த அடையாளம் இல்லாத models, அவ்வாறு செய்யவில்லை என்று குறிப்பிடுகின்றன அல்லது அதைப் பற்றி ஆவணப்படுத்தவில்லை — அத்தகைய அறிக்கை இல்லாதது எந்த உத்தரவாதமும் அல்ல.", + "limitsUnknownHelp": "Radar feed தெரிவித்த வரம்புகள் மட்டுமே; இந்தப் பதிவுக்காக வெளியிடப்பட்ட வரம்புகள் எதுவும் இல்லை", + "contextUnknownHelp": "இந்தப் பதிவுக்கான context window தெரியவில்லை", + "capabilityUnknownHelp": "இந்தத் திறன் feed-ல் தெரிவிக்கப்படவில்லை", "colContext": "சூழல்", "colCapabilities": "திறன்கள்", "colTos": "ToS ஆபத்து", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "புதிய", "setupGuide": "அமைப்பு வழிகாட்டி", "disabledByFeed": "ரேடார் ஊட்டத்தால் முடக்கப்பட்டுள்ளது", "capTools": "கருவிகள்", "capVision": "பார்வை", "capThinking": "சிந்தனை", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "பட்டியல்", + "freeCreditsTab": "இலவச கிரெடிட்கள்", + "freeCreditsSubtitle": "Radar கண்காணிக்கும் providers-இன் பரிந்துரை இணைப்புகள் — அவற்றைப் பயன்படுத்துவதால் உங்களுக்குக் கூடுதல் செலவு எதுவும் இல்லை; மேலும் அது OmniRoute-ஐ ஆதரிக்க உதவுகிறது.", + "fixedLinksEmpty": "இன்னும் பரிந்துரை இணைப்புகள் எதுவும் கிடைக்கவில்லை. புதுப்பிப்புகளைச் சரிபார்க்க Radar-ஐ ஒத்திசைக்கவும்.", + "requiredActionLabel": "செய்ய வேண்டியது:", + "claimButton": "கிரெடிட்களைப் பெறுங்கள்", + "campaignsTitle": "குறுகிய காலப் பிரச்சாரங்கள்", + "campaignsEmpty": "தற்போது செயலில் உள்ள பிரச்சாரங்கள் எதுவும் இல்லை — பின்னர் மீண்டும் பார்க்கவும்.", + "campaignsUpsellCommunity": "குறுகிய காலப் பிரச்சாரங்கள் ஆதரவாளர்களுக்கான கூடுதல் வசதி. இந்தப் பக்கத்திலுள்ள நிலையான இணைப்புகள் அனைத்தும் அனைவருக்கும் தொடர்ந்து இலவசமாகவே இருக்கும்.", + "campaignsValidUntil": "{date} வரை செல்லுபடியாகும்", + "colActions": "செயல்கள்", + "localBadge": "உள்ளூர்", + "editModel": "திருத்து", + "saveModel": "சேமி", + "cancelEdit": "ரத்துசெய்", + "resetModel": "உள்ளூர் மாற்றங்களை மீட்டமை", + "hideModel": "மறை", + "restoreModel": "மீட்டெடு", + "hiddenModelsTitle": "மறைக்கப்பட்ட மாடல்கள்", + "modelDisplayName": "உள்ளூர் காட்சிப் பெயர்", + "modelEnabled": "உள்ளூரில் இயக்கப்பட்டது", + "localStateSaveFailed": "உள்ளூர் Radar அமைப்புகளைச் சேமிக்க முடியவில்லை", + "guidedCombos": "வழிகாட்டப்பட்ட சேர்க்கைகள்", + "offers": "சலுகைகள்", + "intel": "நுண்ணறிவு" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar வழிகாட்டப்பட்ட சேர்க்கைகள்", + "subtitle": "Radar தேர்ந்தெடுத்த சமமான இலவச மாடல்களிலிருந்து முன்னுரிமை மாற்றுவழிகளை உருவாக்கவும்.", + "backToRadar": "Radar-க்குத் திரும்பு", + "loading": "சேர்க்கைப் பரிந்துரைகள் ஏற்றப்படுகின்றன...", + "familyLabel": "மாடல் குடும்பம்", + "modelsLabel": "முன்னுரிமை வரிசை", + "strategyReason": "முன்னுரிமை முதலில் மிகப்பெரிய தொடர் இலவச ஒதுக்கீட்டைப் பயன்படுத்தும்; பின்னர் செயலில் உள்ள வழங்குநர்களிடையே மாற்றுவழியைப் பயன்படுத்தும்.", + "generateButton": "சேர்க்கையை உருவாக்கு", + "generating": "உருவாக்கப்படுகிறது...", + "alreadyCreated": "ஏற்கனவே உருவாக்கப்பட்டது", + "created": "சேர்க்கை உருவாக்கப்பட்டது", + "noSuggestions": "தற்போது தகுதியுள்ள எந்த மாடல் குடும்பத்திற்கும் குறைந்தது இரண்டு வழங்குநர்களுடன் செயலில் உள்ள இணைப்புகள் இல்லை.", + "catalogRequired": "தேர்ந்தெடுக்கப்பட்ட மாடல் குடும்பங்களை ஏற்ற, முதலில் Radar பட்டியலை ஒத்திசைக்கவும்.", + "loadFailed": "Radar சேர்க்கைப் பரிந்துரைகளை ஏற்ற முடியவில்லை.", + "createFailed": "சேர்க்கையை உருவாக்க முடியவில்லை. உங்கள் வழங்குநர் இணைப்புகளைச் சரிபார்த்து மீண்டும் முயற்சிக்கவும்." }, "radarSetupPage": { "title": "வழங்குநர் அமைப்பு", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "இணைப்பு நெகிழ்திறன்", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "உங்கள் இணைப்புகள் தானாகவே மீள்கின்றன", + "reassuranceDetail": "பொதுவாக எந்த நடவடிக்கையும் தேவையில்லை. தோல்விகளுக்குப் பிறகு OmniRoute ஓர் இணைப்புக்குத் தற்காலிகமாக ஓய்வளித்து, பின்னர் அதைப் பாதுகாப்பாக மீண்டும் முயற்சிக்கும்.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "கோரிக்கைகளை அனுப்பலாம்", + "coolingDown": "விரைவில் மீண்டும் முயற்சிக்கப்படும்", + "lockedOut": "உங்கள் கவனம் தேவை" }, "table": { "status": "நிலை", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "விருப்பமான மாதிரி தேவையான திறன்களை (காணல், கருவிகள், கட்டமைக்கப்பட்ட வெளியீடு, சூழல் ஜன்னல்) இன்றி இருந்தால், அனுப்புவதற்கு முன் கோரிக்கைகளை நிராகரிக்கவும். கம்போ-லேயர் ஒத்திசைவு வடிகட்டியை தவிர்க்கும் நேரடி ஒற்றை வழங்குநர் கோரிக்கைகளை பாதுகாக்கிறது.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "நேரடி ஒற்றை-மாடல் கோரிக்கைகளுக்கு OmniRoute-இன் உள்ளூர் சூழல்-சாளரம் மற்றும் அதிகபட்ச-உள்ளீட்டு-டோக்கன் சரிபார்ப்பைத் தவிர்க்கவும். மேல்நிலை வழங்குநர்கள் தங்களின் உண்மையான வரம்புகளைத் தொடர்ந்து அமல்படுத்துவார்கள். தூண்டுரை சுருக்கமும் வெளியீட்டு-டோக்கன் உச்சவரம்புகளும் செயலில் இருக்கும்.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "தேடல் புள்ளிவிவரங்களும் சமீபத்திய தேடல்களும் இன்னும் செயலிலுள்ள இணைப்பைக் கொண்ட வழங்குநர்களை மட்டுமே கணக்கிடும் (duckduckgo-free போன்ற விசையற்ற வழங்குநர்கள் எப்போதும் கணக்கிடப்படுவர்). முடக்கப்பட்ட நிலையில், வழங்குநர் id கொண்ட தக்கவைக்கப்பட்ட ஒவ்வொரு தேடல் வரிசையும் வைத்திருக்கப்படும்.", "publicSystem": { "notFound": { "title": "பக்கம் கிடைக்கவில்லை", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "பராமரிப்பு தகவல்", "service": "சேவை", "unknown": "அறியப்படாத", - "notAvailable": "n/a", + "notAvailable": "பொருந்தாது", "providersTracked": "முடிவுகள் கண்காணிக்கப்பட்டன", "circuitBreakerState": "சேவையாளர் சுற்று முறிவு மாநிலம்", "lastUpdate": "கடைசி புதுப்பிப்பு: {timestamp}", @@ -13848,12 +13859,12 @@ "errorPopupClosed": "அங்கீகாரம் சாளரம் முடிக்கப்படுவதற்கு முன் மூடப்பட்டது.", "errorAccessTokenRequired": "அணுகல் டோக்கன் தேவை.", "errorImportFailed": "இறக்குமதி தோல்வியுற்றது", - "title": "Connect Trae SOLO", + "title": "Trae SOLO-ஐ இணைக்கவும்", "authorizeDescription": "trae.ai மூலம் ஒரு பாப்அப் மூலம் அங்கீகாரம் அளிக்கவும். டோக்கன் இறக்குமதி செய்யப்பட்டவுடன் பாப்அப் தானாகவே மூடப்படும்.", "authorizeImportant": "முக்கியம்: நீங்கள் முதலில் trae.ai இல் இந்த உலாவியில் உள்நுழைந்திருக்க வேண்டும். அங்கீகாரம் பக்கம் ஏற்கனவே உள்ள அமர்வை மட்டுமே உறுதிப்படுத்துகிறது — இது உங்களை உள்நுழைக்க முடியாது. \"உள்நுழைவு தோல்வி\" எனக் காண்பித்தால், \"Open solo.trae.ai\" என்பதைக் கிளிக் செய்து, உள்நுழைந்து, பின்னர் இங்கு திரும்பவும் வரவும்.", "waitingForAuthorization": "trae.ai க்காக காத்திருக்கிறது…", "authorizeWithBrowser": "உலாவியுடன் அங்கீகாரம் அளிக்கவும்", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai-ஐத் திறக்கவும்", "orPasteManually": "அல்லது ஒரு டோக்கனை கையால் ஒட்டவும்", "manualInstructions": "solo.trae.ai இல் உள்நுழைக, DevTools → Network ஐ திறக்கவும், எந்த உரையாடல் செய்தியையும் அனுப்பவும், மற்றும் Authorization: Cloud-IDE-JWT {tokenPlaceholder} கோரிக்கை தலைப்பில் இருந்து JWT ஐ நகலெடுக்கவும். JWT வாழ்நாள் ~14 நாட்கள். விருப்ப அடையாள புலங்கள் ஒரே கோரிக்கை உடலில் உள்ள common_params இல் இருந்து வருகின்றன.", "accessTokenLabel": "அணுகல் டோக்கன் (Cloud-IDE-JWT)", @@ -13967,7 +13978,7 @@ "runners": "ஓட்டக்காரர்கள்", "tasks": "பணிகள்", "colName": "பெயர்", - "colClis": "CLIs", + "colClis": "CLI-கள்", "colStatus": "நிலை", "colTask": "பணி", "colMode": "முறை", @@ -14070,11 +14081,11 @@ "actionApprove": "திட்டத்தை ஒப்புதல் அளி", "actionCancel": "ரத்துசெய்", "actionSeeInGraph": "வரைபடத்தில் பார்", + "actionRepeat": "மீண்டும் செய்", "actionDone": "செயல் பயன்படுத்தப்பட்டது", "actionFailed": "செயல் தோல்வியடைந்தது: {error}", "detailFailed": "விவரங்களை ஏற்ற முடியவில்லை: {error}", "mirroredInA2A": "A2A இல் பிரதிபலிக்கப்பட்டது", - "actionRepeat": "மீண்டும் செய்", "repeatConfirm": "உறுதிப்படுத்த மீண்டும் கிளிக் செய்யவும்", "repeatDone": "புதிய இயக்கம் உருவாக்கப்பட்டது", "repeatUnavailable": "அசல் உள்ளீடு கிடைக்கவில்லை" @@ -14088,57 +14099,57 @@ "networkError": "நெட்வொர்க் பிழை — வழங்குநர் வெளிப்பாடு அமைப்பை புதுப்பிக்க முடியவில்லை" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "ஆதரவாளர் சலுகைகள்", + "subtitle": "Radar வழங்கும் அதிகாரப்பூர்வ தள்ளுபடிகள், கிரெடிட்கள், சோதனைக் காலங்கள் மற்றும் மதிப்பாய்வு செய்யப்பட்ட கூட்டாளர் பலன்கள்.", + "backToRadar": "Radar-க்குத் திரும்பு", + "loading": "சலுகைகள் ஏற்றப்படுகின்றன...", + "refresh": "சலுகைகளைப் புதுப்பி", + "refreshing": "புதுப்பிக்கப்படுகிறது...", + "loadFailed": "சலுகைகளைப் புதுப்பிக்க முடியவில்லை. கடைசியாகச் சரிபார்க்கப்பட்ட உள்ளூர் தற்காலிகச் சேமிப்பு தக்கவைக்கப்பட்டுள்ளது.", + "empty": "தற்போது செயலில் உள்ள சலுகைகள் எதுவும் இல்லை.", + "keyRequiredTitle": "ஆதரவாளர் விசை தேவை", + "keyRequiredDescription": "சலுகைகள் Radar-ன் நேரடி பலனாகும். Radar திரையில் ஏற்கனவே உள்ள ஆதரவாளர் விசையைச் சேர்க்கவும், உங்கள் பங்களிப்பாளர் நிலையைச் சரிபார்க்கவும் அல்லது விசையைப் பெற திட்டத்திற்கு ஆதரவளிக்கவும்.", + "contributorButton": "நான் ஒரு பங்களிப்பாளர்", + "supporterButton": "திட்டத்திற்கு ஆதரவளி", + "partnerBadge": "கூட்டாளர்", + "officialBadge": "அதிகாரப்பூர்வமானது", + "conditionsLabel": "நிபந்தனைகள்:", + "validUntil": "{date} வரை செல்லுபடியாகும்", + "noExpiry": "காலாவதித் தேதி அறிவிக்கப்படவில்லை", + "openOffer": "சலுகையைப் பார்", + "trialDays": "{days, plural, one {# நாள்} other {# நாட்கள்}}" }, "radarIntelPage": { "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "subtitle": "Radar-க்குச் சொந்தமான ELO தரவரிசைகளும் உண்மைத் தரவுகளின் அடிப்படையிலான பட்டியல் மாற்றங்களும்.", + "backToRadar": "Radar-க்குத் திரும்பு", + "loading": "Intel ஏற்றப்படுகிறது...", + "refresh": "Intel-ஐப் புதுப்பி", + "syncing": "புதுப்பிக்கப்படுகிறது...", + "loadFailed": "Intel-ஐப் புதுப்பிக்க முடியவில்லை. கடைசியாகச் சரிபார்க்கப்பட்ட உள்ளூர் தற்காலிகச் சேமிப்பு தக்கவைக்கப்பட்டுள்ளது.", + "empty": "சரிபார்க்கப்பட்ட Intel நிலைப்படம் இன்னும் கிடைக்கவில்லை.", + "supporterBadge": "Radar ஆதரவாளர்", + "methodology": "வழிமுறை", + "eloMethod": "ELO, தொடக்க மதிப்பு {initial}, K={factor}", + "freshness": "பட்டியலின் புதுமை", + "ageDays": "{days, plural, one {# நாள் பழையது} other {# நாட்கள் பழையது}}", + "trend": "பட்டியல் போக்கு", + "modelDelta": "{current} மாதிரிகள், +{added} / -{removed}", + "ranking": "மாதிரி தரவரிசை", + "noRankings": "உறுதிப்படுத்தப்பட்ட ஒப்பீடுகள் இன்னும் கிடைக்கவில்லை.", + "model": "மாதிரி", + "category": "வகை", + "rating": "மதிப்பீடு", + "matches": "பொருத்தங்கள்", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "புதியது", + "aging": "பழையதாகி வருகிறது", + "stale": "காலாவதியானது" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "வளர்கிறது", + "stable": "நிலையானது", + "shrinking": "சுருங்குகிறது" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "விண்ணப்பம் வழங்குநர் சூழல் ஜன்னலை மீறுகிறது" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference என்பது OmniRoute இன் ஓர் திறந்த மூல நண்பர்", + "description": "ஒரே OpenAI-இணக்கமான endpoint-க்குப் பின்னால் டஜன் கணக்கான முன்னணி models-ஐ மறுவிற்பனை செய்யும், செலவின் அடிப்படையில் தரவரிசைப்படுத்தப்பட்ட gateway — ஒவ்வொரு request-ஐயும் தகுதியான மிக மலிவான provider-க்கு வழிநடத்துகிறது; பட்டியல் விலையை ஒருபோதும் மீறாது.", + "cta": "API Key-ஐப் பெறுக", + "partnerLinkNote": "கூட்டாளர் இணைப்பு", + "dismissAriaLabel": "மூடு" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models catalog-இல் thinking level variants (எ.கா. -low, -medium, -high) உருவாக்கப்படுவதை முடக்கவும்." } diff --git a/src/i18n/messages/te.json b/src/i18n/messages/te.json index d0ace81b9f..ab48cf6f81 100644 --- a/src/i18n/messages/te.json +++ b/src/i18n/messages/te.json @@ -1,15 +1,15 @@ { "common": { - "save": "Save", - "cancel": "Cancel", - "delete": "Delete", - "loading": "Loading...", + "save": "సేవ్ చేయండి", + "cancel": "రద్దు చేయండి", + "delete": "తొలగించండి", + "loading": "లోడ్ అవుతోంది...", "selectOption": "ఒక ఎంపికను ఎంచుకోండి", - "error": "An error occurred", - "success": "Success", - "confirm": "Are you sure?", - "refresh": "Refresh", - "close": "Close", + "error": "ఒక లోపం సంభవించింది", + "success": "విజయవంతమైంది", + "confirm": "మీరు ఖచ్చితంగా కొనసాగాలనుకుంటున్నారా?", + "refresh": "రిఫ్రెష్ చేయండి", + "close": "మూసివేయండి", "previousPage": "మునుపటి పేజీ", "nextPage": "తదుపరి పేజీ", "capsLockOn": "Caps Lock ఆన్‌లో ఉంది", @@ -17,142 +17,142 @@ "toggleColumns": "నిలువు వరుసలను మార్చండి", "confirmTitle": "ధృవీకరించు", "confirmAction": "ధృవీకరించు", - "add": "Add", - "edit": "Edit", - "search": "Search", - "back": "Back", - "next": "Next", - "submit": "Submit", - "reset": "Reset", - "copy": "Copy", - "copied": "Copied!", - "enabled": "Enabled", - "disabled": "Disabled", - "active": "Active", - "inactive": "Inactive", - "noData": "No data available", - "nothingHere": "Nothing here yet", - "configure": "Configure", + "add": "జోడించండి", + "edit": "సవరించండి", + "search": "వెతకండి", + "back": "వెనుకకు", + "next": "తదుపరి", + "submit": "సమర్పించండి", + "reset": "రీసెట్ చేయండి", + "copy": "కాపీ చేయండి", + "copied": "కాపీ చేయబడింది!", + "enabled": "ప్రారంభించబడింది", + "disabled": "నిలిపివేయబడింది", + "active": "క్రియాశీలం", + "inactive": "నిష్క్రియం", + "noData": "డేటా అందుబాటులో లేదు", + "nothingHere": "ఇక్కడ ఇంకా ఏమీ లేదు", + "configure": "కాన్ఫిగర్ చేయండి", "manualConfig": "మాన్యువల్ కాన్ఫిగరేషన్", - "manage": "Manage", - "name": "Name", - "actions": "Actions", - "status": "Status", - "type": "Type", + "manage": "నిర్వహించండి", + "name": "పేరు", + "actions": "చర్యలు", + "status": "స్థితి", + "type": "రకం", "model": "Model", - "models": "models", - "provider": "Provider", + "models": "మోడళ్లు", + "provider": "ప్రొవైడర్", "unknownProvider": "తెలియని ప్రొవైడర్", - "account": "Account", - "time": "Time", - "details": "Details", - "created": "Created", - "lastUsed": "Last Refreshed", - "loadMore": "Load More", - "noResults": "No results found", - "reloadPage": "Reload Page", - "connected": "Connected", - "disconnected": "Disconnected", - "notConfigured": "Not configured", - "testConnection": "Test Connection", - "enable": "Enable", - "disable": "Disable", - "columns": "Columns", - "newest": "Newest", - "oldest": "Oldest", - "all": "All", - "none": "None", - "yes": "Yes", - "no": "No", + "account": "ఖాతా", + "time": "సమయం", + "details": "వివరాలు", + "created": "సృష్టించబడింది", + "lastUsed": "చివరిగా రిఫ్రెష్ చేయబడింది", + "loadMore": "మరిన్ని లోడ్ చేయండి", + "noResults": "ఫలితాలు కనుగొనబడలేదు", + "reloadPage": "పేజీని మళ్లీ లోడ్ చేయండి", + "connected": "కనెక్ట్ అయింది", + "disconnected": "డిస్కనెక్ట్ అయింది", + "notConfigured": "కాన్ఫిగర్ చేయలేదు", + "testConnection": "కనెక్షన్ను పరీక్షించండి", + "enable": "ప్రారంభించండి", + "disable": "నిలిపివేయండి", + "columns": "నిలువు వరుసలు", + "newest": "సరికొత్తవి", + "oldest": "పురాతనమైనవి", + "all": "అన్నీ", + "none": "ఏదీ లేదు", + "yes": "అవును", + "no": "కాదు", "on": "ఆన్", "off": "ఆఫ్", - "warning": "Warning", - "note": "Note", - "free": "Free", - "skipToContent": "Skip to content", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", - "accept": "Accept", - "accountId": "Account ID", + "warning": "హెచ్చరిక", + "note": "గమనిక", + "free": "ఉచితం", + "skipToContent": "కంటెంట్కు వెళ్లండి", + "maintenanceServerIssues": "సర్వర్లో సమస్యలు ఉన్నాయి. కొన్ని ఫీచర్లు అందుబాటులో ఉండకపోవచ్చు.", + "maintenanceServerUnreachable": "సర్వర్ను చేరుకోలేకపోయాం. మళ్లీ కనెక్ట్ అవుతోంది...", + "accept": "ఆమోదించండి", + "accountId": "ఖాతా ID", "alias": "Alias", - "apiKeyId": "API Key ID", - "apiKeyName": "API Key Name", - "apiKeySecret": "API Key Secret", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "apiKeyId": "API కీ ID", + "apiKeyName": "API కీ పేరు", + "apiKeySecret": "API కీ రహస్యం", + "authorization": "అధీకరణ", + "content-type": "కంటెంట్ రకం", + "content-length": "కంటెంట్ నిడివి", "cookie": "Cookie", - "file": "File", - "host": "Host", + "file": "ఫైల్", + "host": "హోస్ట్", "id": "ID", - "import": "Import", + "import": "దిగుమతి చేయండి", "limit": "Limit", "offset": "Offset", - "open": "Open", - "origin": "Origin", - "promptTokens": "Prompt Tokens", - "completionTokens": "Completion Tokens", - "totalTokens": "Total Tokens", - "rawModel": "Raw Model", - "scope": "Scope", - "skill": "Skill", - "sortBy": "Sort By", - "sortOrder": "Sort Order", - "tab": "Tab", + "open": "తెరవండి", + "origin": "మూలం", + "promptTokens": "ప్రాంప్ట్ టోకెన్లు", + "completionTokens": "పూర్తి చేయడానికి ఉపయోగించిన టోకెన్లు", + "totalTokens": "మొత్తం టోకెన్లు", + "rawModel": "ముడి మోడల్", + "scope": "పరిధి", + "skill": "నైపుణ్యం", + "sortBy": "దీని ప్రకారం క్రమబద్ధీకరించండి", + "sortOrder": "క్రమబద్ధీకరణ క్రమం", + "tab": "ట్యాబ్", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "టెక్స్ట్ ఏరియా", + "tool": "సాధనం", + "toolId": "సాధనం ID", "web": "Web", - "whereUsed": "Where Used", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "resolve": "Resolve", - "force": "Force", + "whereUsed": "ఉపయోగించిన చోటు", + "whitelist": "అనుమతి జాబితా", + "blacklist": "నిషేధ జాబితా", + "resolve": "పరిష్కరించు", + "force": "బలవంతం చేయి", "base64url": "Base64 URL", "hex": "Hex", - "range": "Range", - "component": "Component", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", - "code": "Code", - "compatible": "Compatible", - "chat-completions": "Chat Completions", + "range": "పరిధి", + "component": "కాంపోనెంట్", + "redirect_uri": "రీడైరెక్ట్ URI", + "idempotency-key": "ఐడెంపోటెన్సీ కీ", + "error_description": "లోప వివరణ", + "code": "కోడ్", + "compatible": "అనుకూలమైనది", + "chat-completions": "చాట్ పూర్తీకరణలు", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", - "hours": "Hours", + "auth_token": "ప్రామాణీకరణ టోకెన్", + "crypto": "క్రిప్టో", + "hours": "గంటలు", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", - "resolveConnectionId": "Resolve Connection ID", - "resolve_connection_id": "Resolve Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "proxy_id": "ప్రాక్సీ ID", + "proxyId": "ప్రాక్సీ ID", + "connectionId": "కనెక్షన్ ID", + "resolveConnectionId": "కనెక్షన్ IDని పరిష్కరించు", + "resolve_connection_id": "కనెక్షన్ IDని పరిష్కరించు", + "scope_id": "స్కోప్ ID", + "scopeId": "స్కోప్ ID", + "jwtSecret": "JWT సీక్రెట్", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", "builder-id": "Builder ID", - "musicDesc": "Music Description", - "musicGeneration": "Music Generation", + "musicDesc": "సంగీత వివరణ", + "musicGeneration": "సంగీత ఉత్పత్తి", "idc": "IDC", - "cloud-status-changed": "Cloud status changed", - "where_used": "Where Used", - "windowMs": "Window (ms)", + "cloud-status-changed": "క్లౌడ్ స్థితి మారింది", + "where_used": "ఉపయోగించిన చోటు", + "windowMs": "విండో (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", - "Failed to save pricing": "Failed to save pricing", - "Failed to reset pricing": "Failed to reset pricing", - "apikey": "API Key", + "TOOL_ALLOWLIST": "సాధన అనుమతి జాబితా", + "TOOL_DENYLIST": "సాధన నిషేధ జాబితా", + "Failed to save pricing": "ధరలను సేవ్ చేయడం విఫలమైంది", + "Failed to reset pricing": "ధరలను రీసెట్ చేయడం విఫలమైంది", + "apikey": "API కీ", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "డాష్బోర్డ్కు వెళ్లు", + "checkSystemStatus": "సిస్టమ్ స్థితిని తనిఖీ చేయండి", + "selectModel": "మోడల్ను ఎంచుకోండి", "addModel": "మోడల్‌ను జోడించు", "effortNone": "ఏదీ లేదు", "effortLow": "తక్కువ", @@ -164,10 +164,10 @@ "reasoningEffort": "రీజనింగ్ ప్రయత్నం", "wireApi": "వైర్ API", "modelAliases": "మోడల్ మారుపేర్లు", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "కాంబోలు", + "noModelsFound": "మోడల్లు ఏవీ కనుగొనబడలేదు", + "clear": "క్లియర్ చేయండి", + "done": "పూర్తయింది", "selectAll": "అన్నీ ఎంచుకోండి", "unselectAll": "ఎంపికను తీసివేయండి", "visibleModels": "కనిపిస్తున్నవి", @@ -184,519 +184,519 @@ "selectAllProviders": "అన్ని ప్రొవైడర్లను తనిఖీ చేయండి", "clearProviderSelection": "ప్రొవైడర్లను అన్‌చెక్ చేయండి", "providersSelectedCount": "{count} ప్రొవైడర్లు తనిఖీ చేయబడ్డారు", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "లోపం సంభవించింది", + "comboDeleted": "కాంబో తొలగించబడింది", + "hide": "దాచు", + "creating": "సృష్టిస్తోంది", + "comboCreated": "కాంబో సృష్టించబడింది", + "swapFormats": "ఫార్మాట్లను మార్చండి", + "daysAgo": "రోజుల క్రితం", + "retries": "మళ్లీ ప్రయత్నాలు", + "errorDuringRestore": "పునరుద్ధరణ సమయంలో లోపం", + "eventsAppearHint": "ఈవెంట్లు కనిపించే సూచన", + "noLockouts": "లాకౌట్లు లేవు", + "webSearchDesc": "వెబ్ శోధన వివరణ", + "audioProvidersHeading": "ఆడియో ప్రొవైడర్ల శీర్షిక", "cloudAgentProviders": "క్లౌడ్ ఏజెంట్ ప్రొవైడర్లు", - "minutesAgo": "Minutes Ago", + "minutesAgo": "నిమిషాల క్రితం", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "లైవ్ స్వయంచాలక రిఫ్రెష్ కొనసాగుతోంది", + "webSearch": "వెబ్ శోధన", + "anthropicPrefixPlaceholder": "Anthropic ప్రిఫిక్స్ ప్లేస్హోల్డర్", + "addModelToCombo": "కాంబోకు మోడల్ను జోడించండి", + "failedToLoad": "లోడ్ చేయడం విఫలమైంది", + "categoryMedia": "మీడియా వర్గం", + "enableCloud": "క్లౌడ్ను ప్రారంభించండి", + "expirationBannerExpiringSoon": "గడువు త్వరలో ముగుస్తుందనే బ్యానర్", + "retry": "మళ్లీ ప్రయత్నించండి", + "embeddings": "ఎంబెడ్డింగ్లు", + "errorCount": "లోపాల సంఖ్య", + "backupReasonManual": "బ్యాకప్ కారణం: మాన్యువల్", + "safeSearchModerate": "సురక్షిత శోధన: మధ్యస్థం", + "activeLimiters": "సక్రియ పరిమితికారకాలు", + "a2aCardTitle": "A2A కార్డ్ శీర్షిక", + "cloudWorkerUnreachable": "క్లౌడ్ వర్కర్ను చేరుకోలేకపోయాం", + "testFailed": "పరీక్ష విఫలమైంది", + "compatibleBaseUrlHint": "అనుకూలమైన బేస్ URL సూచన", + "usageTracking": "వినియోగ ట్రాకింగ్", + "disableCloudTitle": "క్లౌడ్ను నిలిపివేయండి", + "noConnections": "కనెక్షన్లు లేవు", + "providerHealth": "ప్రొవైడర్ స్థితి", + "confirmDbImport": "Db దిగుమతిని నిర్ధారించండి", + "notAvailableSymbol": "అందుబాటులో లేని చిహ్నం", + "backupsAvailable": "బ్యాకప్లు అందుబాటులో ఉన్నాయి", + "providerAuto": "ప్రొవైడర్ ఆటో", + "newProviderNamePlaceholder": "కొత్త ప్రొవైడర్ పేరు ప్లేస్హోల్డర్", + "a2aQuickStartStep2": "A2A త్వరిత ప్రారంభం దశ 2", + "ok": "సరే", + "available": "అందుబాటులో ఉంది", + "noBackupYet": "ఇంకా బ్యాకప్ లేదు", + "more": "మరిన్ని", + "noCompatibleYet": "ఇంకా అనుకూలమైనవి లేవు", + "multiProvider": "బహుళ ప్రొవైడర్", + "repairEnvHint": "ఎన్విరాన్మెంట్ మరమ్మతు సూచన", + "disablingCloud": "Cloud నిలిపివేయబడుతోంది", + "testBench": "పరీక్షా వేదిక", + "valid": "చెల్లుబాటు అవుతుంది", + "cloudBenefitShare": "Cloud ప్రయోజన భాగస్వామ్యం", + "mcpCardTitle": "Mcp కార్డ్ శీర్షిక", + "disableConfirm": "నిలిపివేతను నిర్ధారించండి", + "filters": "ఫిల్టర్లు", + "expirationBannerExpiredDesc": "గడువు ముగిసిన బ్యానర్ వివరణ", + "saveComboDefaults": "కాంబో డిఫాల్ట్లను సేవ్ చేయండి", + "cloudConnectedVerified": "Cloud కనెక్ట్ చేయబడింది, ధృవీకరించబడింది", + "uptime": "అప్టైమ్", + "compatibleProdPlaceholder": "అనుకూలమైన ప్రొడక్షన్ ప్లేస్హోల్డర్", + "fallbackChainsTitle": "ఫాల్బ్యాక్ చైన్ల శీర్షిక", + "oauthLabel": "Oauth లేబుల్", + "a2aCardDescription": "A2A కార్డ్ వివరణ", + "okShort": "సరే", + "maintenance": "నిర్వహణ", + "formatConverter": "ఫార్మాట్ కన్వర్టర్", + "zedImportNetworkError": "Zed దిగుమతి నెట్వర్క్ లోపం", + "apiKeyLabel": "Api కీ లేబుల్", + "noModelsForProvider": "ప్రొవైడర్కు మోడల్లు లేవు", + "mcpCardDescription": "Mcp కార్డ్ వివరణ", + "apiTypeLabel": "Api రకం లేబుల్", + "configuredProvidersLabel": "కాన్ఫిగర్ చేసిన ప్రొవైడర్ల లేబుల్", + "maxRetriesLabel": "గరిష్ఠ పునఃప్రయత్నాల లేబుల్", + "title": "శీర్షిక", + "output": "అవుట్పుట్", + "prefixHint": "ప్రిఫిక్స్ సూచన", + "skipWizard": "విజార్డ్ను దాటవేయి", + "failedCount": "విఫలమైన వాటి సంఖ్య", + "confirmDbImportDesc": "డేటాబేస్ దిగుమతి నిర్ధారణ వివరణ", + "entries": "ఎంట్రీలు", + "until": "వరకు", + "disableCombo": "కాంబోను నిలిపివేయి", + "liveMonitorDescriptionPrefix": "లైవ్ మానిటర్ వివరణ ప్రిఫిక్స్", + "runningCount": "అమలవుతున్న వాటి సంఖ్య", + "noActiveConnectionsInGroup": "సమూహంలో క్రియాశీల కనెక్షన్లు లేవు", + "savedSuccessfully": "విజయవంతంగా సేవ్ చేయబడింది", + "systemStorage": "సిస్టమ్ నిల్వ", + "videoDesc": "వీడియో వివరణ", + "maxResults": "గరిష్ఠ ఫలితాలు", + "timeRangeMonth": "కాల పరిధి: నెల", + "testSummary": "పరీక్ష సారాంశం", + "failedSetPassword": "పాస్వర్డ్ సెట్ చేయడం విఫలమైంది", + "audio": "ఆడియో", + "restore": "పునరుద్ధరించు", + "disableWarning": "హెచ్చరికను నిలిపివేయి", + "moderationsDesc": "మోడరేషన్ల వివరణ", + "providerHealthStatusAria": "ప్రొవైడర్ ఆరోగ్య స్థితి ARIA", + "modelNamePlaceholder": "మోడల్ పేరు ప్లేస్హోల్డర్", + "mcpQuickStartStep2": "Mcp త్వరిత ప్రారంభం దశ 2", + "quickStart": "త్వరిత ప్రారంభం", + "fullExportFailedWithError": "లోపంతో పూర్తి ఎగుమతి విఫలమైంది", + "loadingBackups": "బ్యాకప్లు లోడ్ అవుతున్నాయి", + "anthropicBaseUrlPlaceholder": "Anthropic బేస్ URL ప్లేస్హోల్డర్", + "description": "వివరణ", + "noProviderFound": "ప్రొవైడర్ కనుగొనబడలేదు", + "auto": "స్వయంచాలకం", + "protocolsDescription": "ప్రోటోకాల్ల వివరణ", + "cloudSessionNote": "క్లౌడ్ సెషన్ గమనిక", + "advancedSettings": "అధునాతన సెట్టింగ్లు", + "defaultStrategy": "డిఫాల్ట్ వ్యూహం", + "purgeExpiredLogs": "గడువు ముగిసిన లాగ్లను తొలగించు", + "justNow": "ఇప్పుడే", + "providerTestFailed": "ప్రొవైడర్ పరీక్ష విఫలమైంది", + "openaiBaseUrlPlaceholder": "Openai బేస్ URL ప్లేస్హోల్డర్", + "image": "చిత్రం", + "failedCreateChain": "చైన్ను సృష్టించడం విఫలమైంది", + "importDatabase": "డేటాబేస్ను దిగుమతి చేయండి", + "allDataLocal": "మొత్తం డేటా లోకల్లోనే ఉంటుంది", + "sectionTitle": "విభాగం శీర్షిక", + "failedToggle": "టోగుల్ చేయడం విఫలమైంది", + "editCombo": "కాంబోను సవరించండి", + "testResults": "పరీక్ష ఫలితాలు", + "searchQuery": "శోధన క్వెరీ", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "నకలు చేయండి", + "createCombo": "కాంబోను సృష్టించండి", + "searchTypeWeb": "శోధన రకం: వెబ్", + "addChain": "చైన్ను జోడించండి", + "prefixLabel": "ప్రిఫిక్స్ లేబుల్", + "listModelsDesc": "మోడళ్ల జాబితా వివరణ", + "databaseSize": "డేటాబేస్ పరిమాణం", + "chainCreated": "చైన్ సృష్టించబడింది", + "providerTestTimeout": "ప్రొవైడర్ పరీక్ష సమయం ముగిసింది", + "routingStrategy": "రూటింగ్ వ్యూహం", + "translateAction": "అనువదించండి", + "exportFailed": "ఎగుమతి విఫలమైంది", + "connectedVerificationPending": "కనెక్ట్ అయింది, ధృవీకరణ పెండింగ్లో ఉంది", + "a2aQuickStartTitle": "A2A త్వరిత ప్రారంభ శీర్షిక", + "couldNotTest": "పరీక్షించలేకపోయాము", + "testAllCompatible": "అనుకూలమైన అన్నింటినీ పరీక్షించండి", + "anthropicCompatibleName": "Anthropic-అనుకూల పేరు", + "disabling": "నిలిపివేస్తోంది", + "failedEnable": "ప్రారంభించడం విఫలమైంది", + "categoryUtility": "యుటిలిటీ వర్గం", + "customUrlOptional": "అనుకూల URL (ఐచ్ఛికం)", + "localProviders": "లోకల్ ప్రొవైడర్లు", + "comboNamePlaceholder": "కాంబో పేరు ప్లేస్హోల్డర్", + "memoryRss": "మెమరీ RSS", + "disableProvider": "ప్రొవైడర్ను నిలిపివేయండి", + "welcomeDesc": "స్వాగత వివరణ", + "nameLabel": "పేరు లేబుల్", + "allOperational": "అన్నీ సక్రమంగా పనిచేస్తున్నాయి", + "backupNow": "ఇప్పుడే బ్యాకప్ చేయండి", + "providerMaxRetriesAria": "ప్రొవైడర్ గరిష్ఠ పునఃప్రయత్నాల ARIA", + "textToSpeechDesc": "టెక్స్ట్ టు స్పీచ్ వివరణ", + "machineId": "మెషిన్ ID", + "globalProxy": "గ్లోబల్ ప్రాక్సీ", + "hitsMisses": "హిట్లు మరియు మిస్లు", + "testDesc": "పరీక్ష వివరణ", + "chatDesc": "చాట్ వివరణ", + "importSuccess": "దిగుమతి విజయవంతమైంది", + "chat": "చాట్", + "a2aQuickStartStep1": "A2A త్వరిత ప్రారంభం దశ 1", + "importFailed": "దిగుమతి విఫలమైంది", + "inputPlaceholder": "ఇన్పుట్ ప్లేస్హోల్డర్", + "providerModelsTitle": "ప్రొవైడర్ మోడళ్ల శీర్షిక", + "lastBackup": "చివరి బ్యాకప్", + "yourEndpoint": "మీ ఎండ్పాయింట్", + "autoDisableThresholdDesc": "స్వయంచాలక నిలిపివేత పరిమితి వివరణ", + "rerankDesc": "రీర్యాంక్ వివరణ", + "modelsPathPlaceholder": "మోడళ్ల పాత్ ప్లేస్హోల్డర్", + "noCombosYet": "ఇంకా కాంబోలు లేవు", + "connectedVerificationPendingWithError": "కనెక్ట్ చేయబడింది, ధృవీకరణ పెండింగ్లో ఉంది, లోపంతో", + "comboDefaultsGuideHint1": "కాంబో డిఫాల్ట్ల గైడ్ సూచన 1", + "enableCloudTitle": "క్లౌడ్ను ప్రారంభించండి శీర్షిక", + "configuredProvidersHint": "కాన్ఫిగర్ చేసిన ప్రొవైడర్ల సూచన", + "paused": "పాజ్ చేయబడింది", + "llmProviders": "LLM ప్రొవైడర్లు", + "enableCombo": "కాంబోను ప్రారంభించండి", + "removeProviderOverrideAria": "ప్రొవైడర్ ఓవర్రైడ్ను తొలగించండి Aria", + "nodeVersion": "Node వెర్షన్", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "లోపంతో ఎగుమతి విఫలమైంది", + "proxyConfigured": "ప్రాక్సీ కాన్ఫిగర్ చేయబడింది", + "concurrencyPerModel": "ప్రతి మోడల్కు సమకాలీనత", + "protocolTasksLabel": "ప్రోటోకాల్ టాస్క్ల లేబుల్", + "oauthProviders": "Oauth ప్రొవైడర్లు", + "lockedCount": "లాక్ చేసిన సంఖ్య", + "deleteChainConfirm": "చైన్ను తొలగించడాన్ని నిర్ధారించండి", + "recentTranslations": "ఇటీవలి అనువాదాలు", + "zedImportButton": "Zed దిగుమతి బటన్", + "responsesDesc": "ప్రతిస్పందనల వివరణ", + "testedCount": "పరీక్షించిన సంఖ్య", + "providersCommaSeparatedPlaceholder": "కామాలతో వేరు చేసిన ప్రొవైడర్ల ప్లేస్హోల్డర్", + "signatureDefaults": "సంతకం డిఫాల్ట్లు", + "errorCreating": "సృష్టించడంలో లోపం", + "timeRangeYear": "కాల పరిధి సంవత్సరం", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", - "testBenchTab": "Test Bench", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "cloudDisabledSuccess": "క్లౌడ్ విజయవంతంగా నిలిపివేయబడింది", + "deleteConfirm": "తొలగింపును నిర్ధారించండి", + "check": "తనిఖీ చేయండి", + "safeSearch": "సురక్షిత శోధన", + "protocolLastActivity": "ప్రోటోకాల్ చివరి కార్యకలాపం", + "openMcpDashboard": "Mcp డాష్బోర్డ్ను తెరవండి", + "testBenchTab": "పరీక్షా వేదిక", + "chatPathLabel": "చాట్ పాత్ లేబుల్", + "retryDelay": "మళ్లీ ప్రయత్నించే ఆలస్యం", + "errorUpdating": "నవీకరించడంలో లోపం", + "ideCliIntegrations": "IDE CLI అనుసంధానాలు", + "imageGeneration": "చిత్ర సృష్టి", + "apiKeyRequired": "API కీ అవసరం", + "resetAllTitle": "అన్నింటినీ రీసెట్ చేయండి", + "connectionError": "కనెక్షన్ లోపం", + "modelName": "మోడల్ పేరు", + "apiKeyForCheck": "తనిఖీ కోసం API కీ", + "cloudRequestTimeout": "క్లౌడ్ అభ్యర్థన గడువు ముగిసింది", + "showConfiguredOnly": "కాన్ఫిగర్ చేసినవి మాత్రమే చూపించండి", "showFreeOnly": "ఉచితం మాత్రమే", "addFirstProvider": "మీ మొదటి ప్రొవైడర్‌ని జోడించండి", "addFirstProviderDesc": "OmniRoute ద్వారా రూటింగ్ అభ్యర్థనలను ప్రారంభించడానికి AI ప్రొవైడర్‌ను కనెక్ట్ చేయండి. మీరు ఉచిత ప్రొవైడర్లు, API కీలు లేదా OAuth ఖాతాలను ఉపయోగించవచ్చు.", "learnMore": "మరింత తెలుసుకోండి", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "డొమైన్లను చేర్చండి", + "promptCache": "ప్రాంప్ట్ కాష్", + "cloudConnected": "క్లౌడ్ కనెక్ట్ చేయబడింది", + "deleteChain": "చైన్ను తొలగించండి", + "chatPathPlaceholder": "చాట్ పాత్ ప్లేస్హోల్డర్", + "databasePath": "డేటాబేస్ పాత్", + "usingLocalServer": "స్థానిక సర్వర్ను ఉపయోగిస్తోంది", + "globalComboConfig": "గ్లోబల్ కాంబో కాన్ఫిగరేషన్", + "backupFailed": "బ్యాకప్ విఫలమైంది", + "tabProtocols": "ప్రోటోకాల్ల ట్యాబ్", + "continue": "కొనసాగించండి", + "categorySearch": "వర్గ శోధన", + "rateLimitStatus": "రేట్ పరిమితి స్థితి", + "repairEnvSuccess": "ఎన్విరాన్మెంట్ విజయవంతంగా మరమ్మతు చేయబడింది", + "nameRequired": "పేరు అవసరం", + "country": "దేశం", + "trackMetricsDesc": "మెట్రిక్లను ట్రాక్ చేయడం గురించిన వివరణ", + "durationSecondsShort": "వ్యవధి (సెకన్లు)", + "formatConverterDescription": "ఫార్మాట్ కన్వర్టర్ వివరణ", + "cloudBenefitAccess": "క్లౌడ్ ప్రయోజన యాక్సెస్", + "maxRetries": "గరిష్ఠ పునఃప్రయత్నాలు", + "queueTimeout": "క్యూ గడువు ముగింపు", "queueDepth": "క్యూ లోతు", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "ప్రొవైడర్ను జోడించండి", + "realtime": "రియల్టైమ్", + "totalTranslations": "మొత్తం అనువాదాలు", + "protocolActiveStreamsLabel": "ప్రోటోకాల్ సక్రియ స్ట్రీమ్ల లేబుల్", + "repairEnv": "Envను మరమ్మతు చేయండి", + "modelsCount": "మోడళ్ల సంఖ్య", + "viewBackups": "బ్యాకప్లను వీక్షించండి", + "responsesApi": "Responses API", + "copyComboName": "కాంబో పేరును కాపీ చేయండి", + "failures": "వైఫల్యాలు", + "failedUpdate": "నవీకరణ విఫలమైంది", + "imageDesc": "చిత్ర వివరణ", + "failedCreate": "సృష్టించడం విఫలమైంది", + "remainingOfLimit": "పరిమితిలో మిగిలినది", + "protocolsTitle": "ప్రోటోకాల్స్ శీర్షిక", + "expirationBannerExpiringSoonDesc": "త్వరలో గడువు ముగియనున్న బ్యానర్ వివరణ", + "source": "మూలం", + "failed": "విఫలమైంది", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "MCP త్వరిత ప్రారంభం దశ 1", + "runTest": "పరీక్షను అమలు చేయండి", + "loadingFallbackChains": "ఫాల్బ్యాక్ చైన్లు లోడ్ అవుతున్నాయి", + "healthy": "సక్రమంగా ఉంది", + "version": "వెర్షన్", + "saveBlockWeighted": "వెయిటెడ్ బ్లాక్ను సేవ్ చేయండి", + "zedImportNone": "Zed దిగుమతి ఏదీ లేదు", + "noBackupsYet": "ఇంకా బ్యాకప్లు లేవు", + "noGlobalProxy": "గ్లోబల్ ప్రాక్సీ లేదు", + "noModels": "మోడళ్లు లేవు", + "stickyLimit": "స్టికీ పరిమితి", + "passedCount": "ఉత్తీర్ణమైన వాటి సంఖ్య", + "zedImportFailed": "Zed దిగుమతి విఫలమైంది", + "saving": "సేవ్ అవుతోంది", + "testAll": "అన్నింటినీ పరీక్షించండి", + "globalProxyDesc": "గ్లోబల్ ప్రాక్సీ వివరణ", + "latencyP99": "లేటెన్సీ P99", + "connectingToCloud": "క్లౌడ్కు కనెక్ట్ అవుతోంది", + "responses": "ప్రతిస్పందనలు", + "errorDeleting": "తొలగించడంలో లోపం", + "openaiPrefixPlaceholder": "Openai ప్రిఫిక్స్ ప్లేస్హోల్డర్", + "enterPassword": "పాస్వర్డ్ను నమోదు చేయండి", + "openA2aDashboard": "A2A డాష్బోర్డ్ను తెరవండి", + "enableProvider": "ప్రొవైడర్ను ప్రారంభించండి", + "modeTest": "పరీక్ష మోడ్", + "failedDeleteChain": "చైన్ను తొలగించడం విఫలమైంది", + "providerDesc": "ప్రొవైడర్ వివరణ", + "templateLoadHint": "టెంప్లేట్ లోడ్ సూచన", + "lastFailure": "చివరి వైఫల్యం", + "moveDown": "కిందికి తరలించండి", + "providerLabel": "ప్రొవైడర్ లేబుల్", + "clearCacheFailed": "క్యాష్ను క్లియర్ చేయడం విఫలమైంది", + "imagesGenerations": "చిత్రాల సృష్టి", + "repairEnvWorking": "వాతావరణ మరమ్మతు జరుగుతోంది", + "millisecondsShort": "మి.సె.", + "globalLabel": "గ్లోబల్ లేబుల్", + "failuresPlural": "వైఫల్యాలు", + "completionsLegacyDesc": "లెగసీ కంప్లీషన్ల వివరణ", + "searchProviders": "ప్రొవైడర్లను శోధించండి", + "chatPathHint": "చాట్ పాత్ సూచన", + "defaultStrategyDesc": "డిఫాల్ట్ వ్యూహం వివరణ", + "latencyP95": "లేటెన్సీ P95", + "textToSpeech": "టెక్స్ట్ నుండి స్పీచ్", + "searchType": "శోధన రకం", + "messages": "సందేశాలు", + "aggregatorsGateways": "అగ్రిగేటర్లు మరియు గేట్వేలు", + "comboStrategyAria": "కాంబో వ్యూహం Aria", + "input": "ఇన్పుట్", + "testingConnection": "కనెక్షన్ను పరీక్షిస్తోంది", + "excludeDomains": "డొమైన్లను మినహాయించండి", + "webCookieProviders": "వెబ్ కుకీ ప్రొవైడర్లు", + "allTestsPassed": "అన్ని పరీక్షలు విజయవంతమయ్యాయి", + "openaiCompatibleName": "Openai అనుకూల పేరు", + "warningCostOptimizedPartialPricing": "హెచ్చరిక: ఖర్చు-ఆప్టిమైజ్ చేసిన ఎంపికకు పాక్షిక ధర సమాచారం మాత్రమే ఉంది", + "comboDefaultsGuideTitle": "కాంబో డిఫాల్ట్ల మార్గదర్శిని శీర్షిక", + "hoursAgo": "గంటల క్రితం", + "notAvailable": "అందుబాటులో లేదు", + "skipAndContinue": "దాటవేసి కొనసాగించండి", + "moderations": "మోడరేషన్లు", + "proxyConfig": "ప్రాక్సీ కాన్ఫిగరేషన్", + "upstreamProxyProviders": "అప్స్ట్రీమ్ ప్రాక్సీ ప్రొవైడర్లు", + "exportAll": "అన్నింటినీ ఎగుమతి చేయండి", + "queuedCount": "క్యూలో ఉన్న వాటి సంఖ్య", + "resetAll": "అన్నింటినీ రీసెట్ చేయండి", + "noTranslations": "అనువాదాలు లేవు", + "avgLatency": "సగటు లేటెన్సీ", + "throttleStatus": "థ్రాటిల్ స్థితి", + "backupRetentionDesc": "బ్యాకప్ నిల్వ వివరణ", + "noCBData": "Cb డేటా లేదు", + "chainDeleted": "చైన్ తొలగించబడింది", + "timeLeft": "మిగిలిన సమయం", + "expirationBannerExpired": "గడువు ముగిసిన బ్యానర్", + "language": "భాష", + "invalidFileType": "చెల్లని ఫైల్ రకం", + "monitoredProviders": "పర్యవేక్షించబడుతున్న ప్రొవైడర్లు", + "errors": "లోపాలు", + "heap": "హీప్", + "chatCompletions": "చాట్ పూర్తీకరణలు", + "exampleTemplatesHint": "ఉదాహరణ టెంప్లేట్ల సూచన", + "retryDelayLabel": "మళ్లీ ప్రయత్నించే ఆలస్యం లేబుల్", + "audioTranscription": "ఆడియో లిప్యంతరీకరణ", + "fallbackChainsDesc": "ఫాల్బ్యాక్ చైన్ల వివరణ", + "exampleTemplates": "ఉదాహరణ టెంప్లేట్లు", + "connectionsCount": "కనెక్షన్ల సంఖ్య", + "modelsPathLabel": "మోడల్ల పాత్ లేబుల్", + "activeProvidersHint": "యాక్టివ్ ప్రొవైడర్ల సూచన", + "activeLockouts": "యాక్టివ్ లాకౌట్లు", + "invalid": "చెల్లదు", + "skipPassword": "పాస్వర్డ్ను దాటవేయండి", + "moveUp": "పైకి తరలించండి", + "timeRange": "సమయ పరిధి", + "stickyLimitDesc": "స్టికీ పరిమితి వివరణ", + "cloudBenefitEdge": "క్లౌడ్ ప్రయోజన అంచు", + "custom": "అనుకూలం", + "verifying": "ధృవీకరిస్తోంది", + "baseUrlLabel": "బేస్ URL లేబుల్", + "setPassword": "పాస్వర్డ్ను సెట్ చేయండి", + "safeSearchStrict": "కఠినమైన సురక్షిత శోధన", + "noChangesSinceBackup": "బ్యాకప్ తర్వాత మార్పులు లేవు", + "modelsPathHint": "మోడల్స్ పాత్ సూచన", + "audioTranscriptions": "ఆడియో లిప్యంతరీకరణలు", + "testCombo": "కాంబోను పరీక్షించండి", + "mcpQuickStartTitle": "Mcp త్వరిత ప్రారంభ శీర్షిక", + "comboUpdated": "కాంబో నవీకరించబడింది", + "weighted": "బరువు కేటాయించినది", + "providers": "ప్రొవైడర్లు", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", - "chatTesterTab": "Chat Tester", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "noFallbackChainsDesc": "ఫాల్బ్యాక్ చైన్లు లేవు వివరణ", + "yesImport": "అవును, దిగుమతి చేయండి", + "lockoutsAutoRefreshHint": "లాకౌట్ల స్వీయ రిఫ్రెష్ సూచన", + "tabApis": "Apis ట్యాబ్", + "sectionDescription": "విభాగం వివరణ", + "filter": "ఫిల్టర్", + "purgeLogsFailed": "లాగ్ల తొలగింపు విఫలమైంది", + "latency": "జాప్యం", + "testAllOAuth": "అన్ని O Authలను పరీక్షించండి", + "mcpQuickStartStep3": "Mcp త్వరిత ప్రారంభ దశ 3", + "repairEnvFailed": "Env మరమ్మతు విఫలమైంది", + "zedImportHint": "Zed దిగుమతి సూచన", + "modelsAcrossEndpoints": "ఎండ్పాయింట్లలోని మోడల్స్", + "autoDisableBannedAccounts": "నిషేధిత ఖాతాలను స్వయంచాలకంగా నిలిపివేయండి", + "securityDesc": "భద్రత వివరణ", + "listModels": "మోడల్స్ను జాబితా చేయండి", + "backupRestore": "బ్యాకప్ పునరుద్ధరణ", + "target": "లక్ష్యం", + "zedImportSuccess": "Zed దిగుమతి విజయవంతమైంది", + "lastHeaderUpdate": "చివరి హెడర్ నవీకరణ", + "categoryCore": "కోర్ వర్గం", + "noFallbackChains": "ఫాల్బ్యాక్ చైన్లు లేవు", + "noSearchProviders": "శోధన ప్రొవైడర్లు లేరు", + "autoBalance": "స్వీయ సమతుల్యం", + "noModelsYet": "ఇంకా మోడల్స్ లేవు", + "signatureFamily": "సంతకం కుటుంబం", + "externalApiCalls": "బాహ్య Api కాల్స్", + "providerOverridesDesc": "ప్రొవైడర్ ఓవర్రైడ్ల వివరణ", + "signatureTool": "సంతకం సాధనం", + "connectionFailed": "కనెక్షన్ విఫలమైంది", + "activeLimitersPlural": "క్రియాశీల పరిమితికారకాలు", + "doneDesc": "పూర్తయింది వివరణ", + "down": "డౌన్", + "noDataYet": "ఇంకా డేటా లేదు", + "activeProviders": "సక్రియ ప్రొవైడర్లు", + "nameInvalid": "పేరు చెల్లదు", + "skip": "దాటవేయి", + "createChain": "చైన్ను సృష్టించు", + "audioSpeech": "ఆడియో ప్రసంగం", + "cacheCleared": "క్యాష్ క్లియర్ చేయబడింది", + "searchTypeNews": "శోధన రకం: వార్తలు", + "durationMillisecondsShort": "వ్యవధి (మిల్లీసెకన్లు, సంక్షిప్తం)", + "addOpenAICompatible": "OpenAI-అనుకూలమైనదాన్ని జోడించు", + "chatTesterTab": "చాట్ టెస్టర్", + "queued": "క్యూలో ఉంది", + "domainPlaceholder": "డొమైన్ ప్లేస్హోల్డర్", + "durationMinutesShort": "వ్యవధి (నిమిషాలు, సంక్షిప్తం)", + "verifyingConnection": "కనెక్షన్ను ధృవీకరిస్తోంది", + "imageProviders": "చిత్ర ప్రొవైడర్లు", + "protocolToolsLabel": "ప్రోటోకాల్ సాధనాల లేబుల్", + "queryPlaceholder": "క్వెరీ ప్లేస్హోల్డర్", + "videoGeneration": "వీడియో జనరేషన్", + "timeRangeWeek": "సమయ పరిధి: వారం", + "limitExhausted": "పరిమితి ముగిసింది", + "failedDisable": "నిలిపివేయడం విఫలమైంది", + "inMemoryNote": "ఇన్-మెమరీ గమనిక", + "compatibleHint": "అనుకూలత సూచన", + "errorShort": "సంక్షిప్త లోపం", + "advancedHint": "అధునాతన సూచన", + "restoreFailed": "పునరుద్ధరణ విఫలమైంది", + "searchProvidersHeading": "శోధన ప్రొవైడర్ల శీర్షిక", + "comboName": "కాంబో పేరు", + "autoDisableDescription": "స్వయంచాలక నిలిపివేత వివరణ", + "embeddingsDesc": "ఎంబెడ్డింగ్ల వివరణ", + "operational": "కార్యాచరణలో ఉంది", + "testAllApiKey": "అన్ని API కీలను పరీక్షించు", + "backupCreated": "బ్యాకప్ సృష్టించబడింది", + "errorDuringImport": "దిగుమతి సమయంలో లోపం", + "comboDefaultsGuideHint2": "కాంబో డిఫాల్ట్ల గైడ్ సూచన 2", + "connecting": "కనెక్ట్ అవుతోంది", + "fillModelAndProviders": "మోడల్ మరియు ప్రొవైడర్లను పూరించండి", + "syncing": "సమకాలీకరిస్తోంది", + "resetConfirm": "రీసెట్ నిర్ధారణ", + "trackMetrics": "మెట్రిక్లను ట్రాక్ చేయండి", + "successful": "విజయవంతం", + "recovering": "పునరుద్ధరిస్తోంది", + "autoDisableThreshold": "స్వయంచాలకంగా నిలిపివేసే పరిమితి", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "డేటాను సమకాలీకరిస్తోంది", + "cloudBenefitPorts": "క్లౌడ్ ప్రయోజన పోర్ట్లు", + "compatibleProviders": "అనుకూల ప్రొవైడర్లు", "freeTierProviders": "ఉచిత టైర్ ప్రొవైడర్లు", "freeTierLabel": "ఉచిత టైర్ అందుబాటులో ఉంది", "freeTierProvidersDesc": "ఉచిత శ్రేణులతో ఉన్న ప్రొవైడర్‌లు — కొన్నింటికి API కీ సైన్అప్ అవసరం, ఇతరులకు ఎటువంటి ఆధారాలు అవసరం లేదు.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "క్యాష్ను క్లియర్ చేయండి", + "reqs": "అభ్యర్థనలు", + "addAnthropicCompatible": "Anthropic అనుకూల ప్రొవైడర్ను జోడించండి", + "apiKeyProviders": "API కీ ప్రొవైడర్లు", + "tabsAria": "ట్యాబ్ల ARIA", + "resetting": "రీసెట్ చేస్తోంది", + "millisecondsAbbr": "మిల్లీసెకన్ల సంక్షిప్త రూపం", + "backupReasonPreRestore": "పునరుద్ధరణకు ముందు బ్యాకప్ కారణం", + "disableCloud": "క్లౌడ్ను నిలిపివేయండి", + "newProviderNameAria": "కొత్త ప్రొవైడర్ పేరు ARIA", + "passwordsMismatch": "పాస్వర్డ్లు సరిపోలడం లేదు", + "a2aQuickStartStep3": "A2A త్వరిత ప్రారంభం దశ 3", + "liveMonitorDescriptionSuffix": "లైవ్ మానిటర్ వివరణ ప్రత్యయం", + "failedAddProvider": "ప్రొవైడర్ను జోడించడం విఫలమైంది", + "addAtLeastOneProvider": "కనీసం ఒక ప్రొవైడర్ను జోడించండి", + "reasonSeparator": "కారణ విభాజకం", + "zedImporting": "Zed దిగుమతి చేస్తోంది", + "confirmPasswordPlaceholder": "పాస్వర్డ్ను నిర్ధారించండి", + "whatYouGet": "మీకు లభించేవి", + "signatureSession": "సంతకం సెషన్", + "errorCountNoCode": "కోడ్ లేని లోపాల సంఖ్య", + "testing": "పరీక్షిస్తోంది", + "providersCommaSeparated": "కామాలతో వేరు చేసిన ప్రొవైడర్లు", + "exportDatabase": "డేటాబేస్ను ఎగుమతి చేయండి", + "hitRate": "హిట్ రేట్", + "completionsLegacy": "కంప్లీషన్లు (లెగసీ)", + "removeModel": "మోడల్ను తొలగించండి", + "timeRangeDay": "కాల పరిధి: రోజు", + "cloudRequestFailed": "క్లౌడ్ అభ్యర్థన విఫలమైంది", + "updatedAt": "నవీకరించిన సమయం", + "monitoredProvidersHint": "పర్యవేక్షించబడే ప్రొవైడర్ల సూచన", + "connectionSuccessful": "కనెక్షన్ విజయవంతమైంది", + "latencyP50": "లేటెన్సీ P50", + "logsDeleted": "లాగ్లు తొలగించబడ్డాయి", + "chatTester": "చాట్ టెస్టర్", + "safeSearchOff": "సురక్షిత శోధన ఆఫ్లో ఉంది", + "nameHint": "పేరు సూచన", + "debugToggle": "డీబగ్ టోగుల్", + "embedding": "ఎంబెడ్డింగ్", + "issuesLabel": "సమస్యల లేబుల్", + "optionAny": "ఏదైనా ఎంపిక", + "maxNestingDepth": "గరిష్ఠ నెస్టింగ్ లోతు", + "rerank": "రీర్యాంక్", + "checking": "తనిఖీ చేస్తోంది", + "getStarted": "ప్రారంభించండి", + "restoreSuccess": "పునరుద్ధరణ విజయవంతమైంది", + "issuesDetected": "సమస్యలు గుర్తించబడ్డాయి", + "signatureCache": "సిగ్నేచర్ క్యాష్", + "modelLockouts": "మోడల్ లాకౌట్లు", + "usingCloudProxy": "Cloud Proxy ఉపయోగిస్తోంది", + "loadingHealth": "హెల్త్ను లోడ్ చేస్తోంది", + "providerOverrides": "ప్రొవైడర్ ఓవర్రైడ్లు", + "audioTranscriptionDesc": "ఆడియో ట్రాన్స్క్రిప్షన్ వివరణ", + "learnedFromHeaders": "హెడర్ల నుండి నేర్చుకున్నవి", + "totalRequests": "మొత్తం అభ్యర్థనలు", + "cloudUnstableNote": "Cloud అస్థిరత గమనిక", "gamificationAdmin": "Gamification అడ్మిన్", "monitorAnomaliesAndHealth": "క్రమరాహిత్యాలు మరియు సిస్టమ్ ఆరోగ్యాన్ని పర్యవేక్షించండి", "flaggedAnomalies": "అసమానతలు ఫ్లాగ్ చేయబడ్డాయి", @@ -704,7 +704,7 @@ "apiKey": "API కీ", "xpLastHour": "XP (1గం)", "zScore": "Z-స్కోరు", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "అనుమానాస్పదం", "tokensCommunityServers": "కమ్యూనిటీ సర్వర్లు", "tokensServerNamePlaceholder": "సర్వర్ పేరు", "tokensApiKeyPlaceholder": "API కీ", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "మరింత లోడ్ అవుతోంది…", "recommended": "సిఫార్సు చేయబడింది", "understand": "నాకు అర్థమైంది", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "బ్యాచ్ ప్రాసెసింగ్", + "batchConceptSubtitle": "ఖర్చులో ~50%తో వేలాది అభ్యర్థనలను అసింక్రోనస్గా ప్రాసెస్ చేయండి (24గం. వ్యవధి). మూల్యాంకనాలు, వర్గీకరణ మరియు ఎంబెడ్డింగ్లకు అనువైనది.", + "batchConceptHowItWorks": "ఇది ఎలా పనిచేస్తుంది", + "batchConceptBenefit50pct": "ఇన్పుట్ + అవుట్పుట్ టోకెన్లపై 50% తగ్గింపు", + "batchConceptAsync24h": "24గం. పూర్తి వ్యవధితో అసింక్రోనస్", + "batchConceptUseCases": "భారీ స్థాయి వర్గీకరణ, మూల్యాంకనాలు మరియు ఎంబెడ్డింగ్లకు ఉత్తమమైనది", + "batchHeaderSubtitle": "అనేక అభ్యర్థనలను ఒకే జాబ్గా అమలు చేయండి", + "batchStep1": "1 · JSONL అప్లోడ్ చేయండి", + "batchStep1Desc": "అభ్యర్థనలను జోడించండి", + "batchStep2": "2 · బ్యాచ్ను సృష్టించండి", + "batchStep2Desc": "జాబ్ను అమలు చేయండి", + "batchStep3": "3 · ఫలితాలను పొందండి", + "batchStep3Desc": "అవుట్పుట్ను డౌన్లోడ్ చేయండి", + "filesConceptTitle": "బ్యాచ్ ఫైల్లు", + "filesConceptSubtitle": "బ్యాచ్లు ఉపయోగించే JSONL ఫైళ్లు: ఇన్పుట్ అభ్యర్థనలు, ఫలితాలు మరియు లోపాలు.", + "filesConceptInput": "ఇన్పుట్ — ప్రతి లైన్కు ఒక అభ్యర్థనతో మీ JSONL", + "filesConceptOutput": "అవుట్పుట్ — పూర్తయిన అభ్యర్థనల ఫలితాలు", + "filesConceptError": "లోపాలు — విఫలమైన అభ్యర్థనలు", + "filesConceptRetention": "నిల్వ వ్యవధి: డిఫాల్ట్గా 30 రోజులు (Anthropicలో 29 రోజులు)", + "wizardTitle": "కొత్త బ్యాచ్", + "wizardClose": "మూసివేయి", + "wizardNext": "తదుపరి", + "wizardBack": "వెనుకకు", + "wizardCancel": "రద్దు చేయి", + "wizardCreate": "బ్యాచ్ను సృష్టించు", + "wizardCreating": "సృష్టిస్తోంది…", + "wizardStep1Destination": "గమ్యస్థానం", + "wizardStep2Input": "ఇన్పుట్", + "wizardStep3Validate": "ధృవీకరించు", + "wizardStep4Cost": "ఖర్చు & సృష్టించు", + "wizardProviderLabel": "ప్రొవైడర్", + "wizardEndpointLabel": "ఎండ్పాయింట్", + "wizardModelLabel": "మోడల్", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (మేము మారుస్తాము)", + "wizardDropOrPick": "ఫైల్ను ఇక్కడ వదలండి లేదా ఎంచుకోవడానికి క్లిక్ చేయండి", + "wizardCsvMappingTitle": "CSV కాలమ్లు → అభ్యర్థన ఫీల్డ్లకు మ్యాప్ చేయండి", + "wizardCsvMappingAddField": "ఫీల్డ్ను జోడించు", "wizardCsvNoColumns": "CSV హెడర్‌లో నిలువు వరుసలు ఏవీ గుర్తించబడలేదు.", "wizardCsvIgnoreColumn": "— విస్మరించు —", "wizardCsvCustomIdMapped": "custom_id మ్యాప్ చేయబడింది", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} అడ్డు వరుసలు పార్స్ చేయబడ్డాయి", "wizardCsvRowsSkipped": "{count} అడ్డు వరుసలు దాటవేయబడ్డాయి", "wizardCsvRowError": "వరుస {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "అన్ని లైన్లు చెల్లుబాటు అయ్యాయి", "wizardValidating": "ధృవీకరిస్తోంది…", "wizardValidationParseFailed": "ధృవీకరణ విఫలమైంది — కంటెంట్‌ను పార్స్ చేయడం సాధ్యపడలేదు.", "wizardValidationSummary": "{lines} లైన్లు · {ids} ప్రత్యేకమైన custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "నకిలీ custom_ids గుర్తించబడ్డాయి:", "wizardValidationFirstErrors": "లోపాలు (మొదటి {count}):", "wizardValidationLine": "లైన్ {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "ధృవీకరణ లోపాలు", + "wizardValidationPreview": "ప్రివ్యూ (మొదటి 5 అభ్యర్థనలు)", + "wizardValidationSamplingNote": "ఫైల్ పెద్దదిగా ఉంది — నమూనా ఆధారంగా ధృవీకరించబడింది (మొదటి 1000 + చివరి 100 లైన్లు). పూర్తి ధృవీకరణ సర్వర్ వైపు అమలవుతుంది.", + "wizardCostSync": "సింక్ ఖర్చు", + "wizardCostBatch": "బ్యాచ్ ఖర్చు (-50%)", + "wizardCostSavings": "ఆదా", + "wizardCostEstimatedNotice": "అంచనా ఖర్చు — వాస్తవ బిల్లింగ్ మారవచ్చు.", + "wizardErrorUpload": "ఫైల్ను అప్లోడ్ చేయడం విఫలమైంది. మళ్లీ ప్రయత్నించండి.", + "wizardErrorCreate": "బ్యాచ్ను సృష్టించడం విఫలమైంది. మళ్లీ ప్రయత్నించండి.", + "wizardEmptyProviders": "బ్యాచ్ను సృష్టించడానికి బ్యాచ్ సపోర్ట్ ఉన్న ప్రొవైడర్ను (OpenAI, Anthropic లేదా Gemini) కనెక్ట్ చేయండి.", + "uploadModalTitle": "బ్యాచ్ ఫైల్ను అప్లోడ్ చేయండి", + "uploadModalDropOrPick": ".jsonl ఫైల్ను ఇక్కడ వదలండి లేదా ఎంచుకోవడానికి క్లిక్ చేయండి", + "uploadModalUpload": "అప్లోడ్ చేయి", + "uploadModalCancel": "రద్దు చేయి", + "uploadModalError": "అప్లోడ్ విఫలమైంది. మళ్లీ ప్రయత్నించండి.", + "uploadModalSuccess": "అప్లోడ్ చేయబడింది", + "uploadModalSizeLimit": "గరిష్ఠం 512 MB", + "batchListNewButton": "కొత్త బ్యాచ్", + "batchListAutoRefresh": "30 సెకన్లకు స్వయంచాలక రీఫ్రెష్", + "batchListCostColumn": "ఖర్చు", + "batchActionCancel": "రద్దు చేయండి", + "batchActionDownloadOutput": "అవుట్పుట్ను డౌన్లోడ్ చేయండి", + "batchActionDownloadErrors": "లోపాలను డౌన్లోడ్ చేయండి", + "batchActionRetry": "విఫలమైన వాటిని మళ్లీ ప్రయత్నించండి", + "batchActionRetryConfirm": "విఫలమైన {n} అభ్యర్థి(ల)ను మళ్లీ ప్రయత్నించాలా? వాస్తవంగా వినియోగించిన టోకెన్లపై తుది ఖర్చు ఆధారపడి ఉంటుంది.", + "expirationBadgeCritical": "అత్యవసరం", + "expirationBadgeWarning": "త్వరలో", + "expirationBadgeNormal": "పెండింగ్లో ఉంది", + "expirationBadgeExpired": "గడువు ముగిసింది", + "filesListUploadButton": "అప్లోడ్ చేయండి", + "filesListUsedByColumn": "దీని ద్వారా ఉపయోగించబడింది", + "filesListUsedByNone": "ఏదీ లేదు", + "filesListUsedByRoleInput": "ఇన్పుట్", + "filesListUsedByRoleOutput": "అవుట్పుట్", + "filesListUsedByRoleError": "లోపం", + "filesListSizeColumn": "పరిమాణం", + "batchListProgressPartial": "(పాక్షికం)", + "batchListProviderColumn": "ప్రొవైడర్", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "ఇతర", + "batchListTitle": "బ్యాచ్లు", + "batchListCount": "{count} బ్యాచ్లు", + "batchListRemovingCompleted": "తొలగిస్తోంది…", + "batchListRemoveCompleted": "పూర్తయిన వాటిని తొలగించండి", + "batchListTableStatus": "స్థితి", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "ఎండ్పాయింట్", + "batchListTableModel": "మోడల్", + "batchListTableProgress": "పురోగతి", + "batchListTableCreated": "సృష్టించబడింది", + "batchListTableExpires": "గడువు ముగుస్తుంది", + "batchListLoading": "లోడ్ అవుతోంది…", + "batchListEmpty": "బ్యాచ్లు ఏవీ కనుగొనబడలేదు", + "batchListValidating": "ధృవీకరిస్తోంది…", + "batchStatusAll": "అన్ని స్థితులు", + "batchStatusInProgress": "ప్రాసెస్లో ఉంది", + "batchStatusValidating": "ధృవీకరిస్తోంది", + "batchStatusFinalizing": "తుది దశలో ఉంది", + "batchStatusCompleted": "పూర్తయింది", + "batchStatusFailed": "విఫలమైంది", + "batchStatusCancelled": "రద్దయింది", + "batchStatusCancelling": "రద్దు చేస్తోంది", + "batchStatusExpired": "గడువు ముగిసింది", + "batchStatusCompletedWithFailures": "వైఫల్యాలతో పూర్తయింది", + "batchStatusInProgressWithFailures": "ప్రాసెస్లో ఉంది (వైఫల్యాలతో)", + "batchStatusFinalizingWithFailures": "తుది దశలో ఉంది (వైఫల్యాలతో)", + "batchStatusCancelledWithFailures": "వైఫల్యాలతో రద్దయింది", + "batchStatusExpiredWithFailures": "గడువు ముగిసింది (పాక్షికం)", + "wizardCostEstimating": "ఖర్చును అంచనా వేస్తోంది…", + "wizardCostRequests": "అభ్యర్థనలు", + "wizardCostInputTok": "ఇన్పుట్ టోకెన్", + "wizardCostOutputTok": "అవుట్పుట్ టోకెన్", + "wizardCostWindow": "విండో", + "wizardDestinationSelectProvider": "ప్రొవైడర్ను ఎంచుకోండి…", + "wizardDestinationSelectModel": "మోడల్ను ఎంచుకోండి…", + "wizardDestinationConnectProvider": "ప్రొవైడర్ను కనెక్ట్ చేయండి", + "batchListBatchCreated": "బ్యాచ్ {id} సృష్టించబడింది — జాబితాను రిఫ్రెష్ చేస్తోంది…", + "batchListBatchCreatedDismiss": "మూసివేయి", + "batchListRefreshing": "రిఫ్రెష్ చేస్తోంది…", + "batchListRefresh": "రిఫ్రెష్ చేయి", + "uploadFileModalRemove": "తొలగించు", + "uploadFileModalUploading": "అప్లోడ్ చేస్తోంది…", + "wizardInputReading": "ఫైల్ను చదువుతోంది…", + "wizardInputReady": "సిద్ధంగా ఉంది", + "wizardInputLargeFileLabel": "పెద్ద ఫైల్ — నమూనా ధృవీకరణ", + "wizardInputCsvJsonlReady": "JSONL రూపొందించబడింది — ధృవీకరించడానికి సిద్ధంగా ఉంది.", + "wizardInputLargeFileWarning": "పెద్ద ఫైల్ గుర్తించబడింది — ధృవీకరణ నమూనా ఆధారంగా జరుగుతుంది (మొదటి 5 MB + చివరి 100 KB). పూర్తి ధృవీకరణ సర్వర్ వైపు జరుగుతుంది.", + "wizardCostWindow24h": "24గం. పూర్తి చేసే వ్యవధి", + "wizardValidationFieldsOk": "అవసరమైన ఫీల్డ్లు చెల్లుబాటు అవుతున్నాయి", + "filesListDelete": "తొలగించు", + "filesListDownload": "డౌన్లోడ్ చేయి", + "batchDetailActionCancel": "బ్యాచ్ను రద్దు చేయి", + "batchDetailActionRetry": "విఫలమైన అభ్యర్థనలను మళ్లీ ప్రయత్నించండి", + "batchDetailCancelling": "రద్దు చేస్తోంది…", + "batchDetailRetrying": "మళ్లీ ప్రయత్నించడానికి సిద్ధం చేస్తోంది…", + "batchDetailCancelConfirm": "ఈ బ్యాచ్ను రద్దు చేయాలా? ప్రస్తుతం ప్రాసెస్లో ఉన్న అభ్యర్థనలు ఆగిపోతాయి.", + "batchActionCancelError": "బ్యాచ్ను రద్దు చేయడం విఫలమైంది. మళ్లీ ప్రయత్నించండి.", + "batchActionRetryError": "విఫలమైన అభ్యర్థనలను మళ్లీ ప్రయత్నించడం విఫలమైంది. మళ్లీ ప్రయత్నించండి.", + "batchConceptRetentionNote": "ఫలితాలు మరియు లోపాల ఫైళ్లు 30 రోజుల పాటు (Anthropic: 29 రోజులు) నిల్వ ఉంచబడతాయి", "batchFilesSizeColumn": "పరిమాణం", "toggleNoAuthProvider": "నో-ఆథ్ ప్రొవైడర్‌ను టోగుల్ చేయండి", "loadingModels": "మోడల్స్ లోడ్ అవుతున్నాయి…", @@ -988,47 +988,47 @@ "disabled": "నిలిపివేయబడింది", "featureFlagOmnirouteEmergencyFallbackDescription": "బడ్జెట్ ముగిసిపోయిన అభ్యర్థనలను అత్యవసర ఉచిత ఫాల్‌బ్యాక్ ప్రొవైడర్/మోడల్‌కు రూట్ చేయండి.", "featureFlagArenaEloSyncEnabledDescription": "మోడల్ ఇంటెలిజెన్స్ ర్యాంకింగ్‌ల కోసం క్రమానుగత Arena AI లీడర్‌బోర్డ్ ELO సమకాలీకరణను ప్రారంభించండి.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "కాంబో రూటింగ్ మోడళ్లను మార్చినప్పుడు సంభాషణ సారాంశాలను రూపొందించి చొప్పించండి. మోడల్ మార్పులను స్వతంత్రంగా పరిగణించడానికి మరియు ప్రస్తుతం ఉన్న, భవిష్యత్తులో సృష్టించే అన్ని కాంబోల కోసం బ్యాక్గ్రౌండ్ హ్యాండ్ఆఫ్ అభ్యర్థనలను నిరోధించడానికి దీన్ని నిలిపివేయండి.", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models లో claude/<provider>/<model> మిర్రర్ ఐడీలను ప్రచారం చేయండి కాబట్టి Claude Code గేట్వే మోడల్ డిస్కవరీ non-Claude మోడళ్లను జాబితా చేస్తుంది. హెచ్చరిక: ఇది ప్రపంచవ్యాప్తంగా ప్రారంభించినప్పుడు అన్ని క్లయింట్ల కోసం కాటలాగ్ ఎంట్రీలను డబుల్ చేస్తుంది.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> గేట్వే అలియాస్ల కోసం ప్రధాన స్విచ్. ఆన్ (డిఫాల్ట్): అర్హత కలిగిన ప్రతి థింకింగ్-సామర్థ్యం గల Claude మోడల్కు /v1/models నో-థింకింగ్ వేరియంట్ను చూపిస్తుంది, అలాగే అభ్యర్థనలో పంపిన no-think/ id రీజనింగ్ను అణచివేస్తూ తిరిగి అసలు మోడల్కు పరిష్కరించబడుతుంది. ఆఫ్: ఏ వేరియంట్లూ చూపించబడవు మరియు no-think/ id ఇతర తెలియని మోడల్ id లాగానే పరిగణించబడుతుంది. ఇది ఆన్లో ఉన్నప్పుడు ఒక్కో మోడల్కు సంబంధించిన ModelSpec.noThinkingAlias ఆప్ట్-ఇన్/ఆప్ట్-అవుట్ ఇప్పటికీ వర్తిస్తుంది.", "featureFlagChatVirtualLanesEnabledDescription": "ప్రొవైడర్ డిస్పాచ్ కోసం ప్రతి-టెనెంట్ అడాప్టివ్ వర్చువల్ అడ్మిషన్ లేన్లను ప్రారంభించండి (#9654): ఒక టెనెంట్ బర్స్ట్ ఇకపై మరొక టెనెంట్కు 503 ఇవ్వదు. OMNIROUTE_CHAT_VIRTUAL_LANES ఎన్విరాన్మెంట్ వేరియబుల్ ఈ డాష్బోర్డ్ సెట్టింగ్ కంటే ప్రాధాన్యత పొందుతుంది; మార్పులు సర్వర్ పునఃప్రారంభంలో ప్రభావం చూపుతాయి.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "డ్యాష్బోర్డ్ ప్రొవైడర్ పేజీలు: ప్రొవైడర్ గుర్తించే సంకేతాలపైనే ఉచిత బ్యాడ్జ్ను చూపించండి — డాక్యుమెంట్ చేయబడిన ఉచిత టైర్ లేని నమోదిత ప్రొవైడర్లలో డిస్ప్లే-పేరు హ్యూరిస్టిక్, బూలియన్ కాని ఉచిత ఫీల్డ్లు మరియు :free ప్రత్యయాలను విస్మరిస్తుంది. ఆఫ్ చేస్తే మునుపటి బ్యాడ్జ్ నియమాన్ని కొనసాగిస్తుంది.", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy పూల్లు మరియు opencode యొక్క ఒక్కో ఖాతా రొటేషన్లో, అప్పుడే విఫలమైన Proxyని (TCP ప్రోబ్ తిరస్కరించబడటం లేదా దాని ద్వారా 429 అందుకోవడం) ప్రతి పునరావృతంతో రెట్టింపయ్యే, గరిష్ఠ పరిమితి వరకు ఉండే ఒక్కో ప్రాసెస్ వ్యవధిలో మళ్లీ అందించకుండా ఆపుతుంది. Proxy స్థితి ఏదీ వ్రాయబడదు; ప్రతి అభ్యర్థినీ పక్కన పెడితే ఎంపికలో మార్పు ఉండదు. డిఫాల్ట్గా ఆఫ్లో ఉంటుంది: ఎంపిక క్రమం సరిగ్గా సాధారణ రొటేషన్లానే ఉంటుంది.", + "featureFlagProxyPoolEgressObservationDescription": "డ్యాష్బోర్డ్లోని Proxy పూల్ కింద, గత 24 గంటల్లో దాని సభ్యులకు సేవలందించిన గమనించిన ఎగ్రెస్ IPల సంఖ్య, వాటిని ఉపయోగించిన కనెక్షన్ల సంఖ్య మరియు ఒకే IP వెనుక అత్యధికంగా కనిపించిన సంఖ్యను చూపండి. ఇది చదవడానికి మాత్రమే, Proxy లాగ్ నుండి గణించబడుతుంది, రూటింగ్ కోసం ఎప్పుడూ ఉపయోగించబడదు. డిఫాల్ట్గా ఆఫ్లో ఉంటుంది: పూల్ ఎడిటర్ మారదు మరియు పరిశీలన రూట్ null అని సమాధానమిస్తుంది.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Proxy ఆరోగ్య స్వీప్లో, లక్ష్యం తిరస్కరించిన ప్రోబ్ (401/403/429: Proxy ప్రసారం చేసింది, గమ్యస్థానం ఈ ఎగ్రెస్ IPని తిరస్కరించింది) విజయవంతంగా సేవలందించిన ప్రోబ్లాగే Proxy యొక్క వరుస వైఫల్యాల పరంపరను రీసెట్ చేయనివ్వండి. డిఫాల్ట్గా ఆఫ్లో ఉంటుంది: తిరస్కరణ తటస్థంగానే ఉండి పరంపరను అలాగే ఉంచుతుంది. ఏ విధంగానైనా 5xx అనిశ్చితంగానే ఉంటుంది, అలాగే తిరస్కరణ ఎప్పుడూ Proxyని తొలగించదు, నిలిపివేయదు లేదా మళ్లీ సక్రియం చేయదు.", "sidebar": { - "home": "Home", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "usage": "Usage", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", + "home": "హోమ్", + "dashboard": "డ్యాష్బోర్డ్", + "providers": "ప్రొవైడర్లు", + "combos": "కాంబోలు", + "usage": "వినియోగం", + "analytics": "విశ్లేషణలు", + "costs": "ఖర్చులు", + "health": "స్థితి", "proxy": "ప్రాక్సీ", "limits": "Limits & Quotas", - "cliTools": "CLI Tools", - "media": "Media", - "settings": "Settings", - "translator": "Translator", - "playground": "Playground", - "searchTools": "Search Tools", - "agents": "Agents", + "cliTools": "CLI సాధనాలు", + "media": "మీడియా", + "settings": "సెట్టింగ్లు", + "translator": "అనువాదకుడు", + "playground": "ప్లేగ్రౌండ్", + "searchTools": "శోధన సాధనాలు", + "agents": "ఏజెంట్లు", "cloudAgents": "క్లౌడ్ ఏజెంట్లు", - "memory": "Memory", - "skills": "Skills", + "memory": "మెమరీ", + "skills": "నైపుణ్యాలు", "omniSkills": "ఓమ్నిస్కిల్స్", "agentSkills": "ఏజెంట్ నైపుణ్యాలు", "chaosConfig": "ఖోస్ మోడ్", - "docs": "Docs", - "issues": "Issues", - "endpoints": "Endpoints", + "docs": "డాక్యుమెంటేషన్", + "issues": "సమస్యలు", + "endpoints": "ఎండ్పాయింట్లు", "endpointsSubtitle": "మీ AI కనెక్షన్ URLలు", - "apiManager": "API Keys", + "apiManager": "API కీలు", "apiManagerSubtitle": "API కీలు మరియు యాక్సెస్‌ని నిర్వహించండి", "embeddedServices": "ఎంబెడ్ సేవలు", "embeddedServicesSubtitle": "స్థానిక ప్రాక్సీ సేవలను నిర్వహించండి", - "logs": "Logs", + "logs": "లాగ్లు", "webhooks": "వెబ్‌బూక్స్", "webhooksSubtitle": "ఈవెంట్‌ల గురించి తెలియజేయండి", "logExport": "లాగ్ ఎగుమతి", @@ -1037,82 +1037,82 @@ "batchSubtitle": "బహుళ అభ్యర్థనలను ప్రాసెస్ చేయండి", "contextCavemanSubtitle": "ప్రాంప్ట్ కుదింపు", "contextRtkSubtitle": "అవుట్‌పుట్ ఫిల్టరింగ్", - "auditLog": "Audit Log", - "shutdown": "Shutdown", - "restart": "Restart", - "shutdownConfirm": "Shut down OmniRoute?", - "restartConfirm": "Restart OmniRoute?", + "auditLog": "ఆడిట్ లాగ్", + "shutdown": "షట్డౌన్", + "restart": "పునఃప్రారంభించు", + "shutdownConfirm": "OmniRouteను షట్డౌన్ చేయాలా?", + "restartConfirm": "OmniRouteను పునఃప్రారంభించాలా?", "version": "v{version}", "debug": "Debug", - "system": "System", - "help": "Help", + "system": "సిస్టమ్", + "help": "సహాయం", "primarySection": "Main", "cliSection": "CLI", "debugSection": "Debug", "systemSection": "System", "helpSection": "Help", - "serverDisconnected": "Server Disconnected", - "serverDisconnectedMsg": "The proxy server has been stopped or is restarting.", - "expandSidebar": "Expand sidebar", - "collapseSidebar": "Collapse sidebar", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", - "cliToolsShort": "Tools", + "serverDisconnected": "సర్వర్ డిస్కనెక్ట్ అయింది", + "serverDisconnectedMsg": "ప్రాక్సీ సర్వర్ ఆపివేయబడింది లేదా పునఃప్రారంభమవుతోంది.", + "expandSidebar": "సైడ్బార్ను విస్తరించు", + "collapseSidebar": "సైడ్బార్ను కుదించు", + "themes": "థీమ్లు", + "presetColors": "ప్రసిద్ధ రంగులు", + "createTheme": "థీమ్ను సృష్టించండి", + "chooseColor": "ఒక రంగును ఎంచుకోండి", + "themeCoral": "పగడపు రంగు", + "themeBlue": "నీలం", + "themeRed": "ఎరుపు", + "themeGreen": "ఆకుపచ్చ", + "themeViolet": "ఊదా", + "themeOrange": "నారింజ", + "themeCyan": "సయాన్", + "cliToolsShort": "సాధనాలు", "cache": "Cache", "cacheShort": "Cache", "batch": "Batch Testing", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", - "contextCaveman": "Caveman", + "themeSystem": "థీమ్ వ్యవస్థ", + "whitelabelingDesc": "వైట్లేబెలింగ్ వివరణ", + "switchThemes": "థీమ్లను మార్చండి", + "themeAccentDesc": "థీమ్ యాక్సెంట్ వివరణ", + "uploadFavicon": "ఫేవికాన్ను అప్లోడ్ చేయండి", + "themeDark": "డార్క్ థీమ్", + "customLogoDesc": "అనుకూల లోగో వివరణ", + "sidebarVisibilityToggle": "సైడ్బార్ దృశ్యమానత టాగుల్", + "themeAccent": "థీమ్ యాక్సెంట్", + "resetFavicon": "ఫేవికాన్ను రీసెట్ చేయండి", + "whitelabeling": "వైట్లేబెలింగ్", + "darkMode": "డార్క్ మోడ్", + "uploadLogo": "లోగోను అప్లోడ్ చేయండి", + "themeLight": "లైట్ థీమ్", + "appName": "యాప్ పేరు", + "appNameDesc": "యాప్ పేరు వివరణ", + "resetLogo": "లోగోను రీసెట్ చేయండి", + "customFavicon": "అనుకూల ఫేవికాన్", + "hideHealthLogs": "హెల్త్ లాగ్లను దాచండి", + "customLogo": "అనుకూల లోగో", + "appearance": "రూపురేఖలు", + "themeSelectionAria": "థీమ్ ఎంపిక ఏరియా", + "themeCreate": "థీమ్ను సృష్టించండి", + "customFaviconDesc": "అనుకూల ఫేవికాన్ వివరణ", + "logoPreview": "లోగో ప్రివ్యూ", + "themeCustom": "అనుకూల థీమ్", + "hideHealthLogsDesc": "హెల్త్ లాగ్లను దాచడం గురించి వివరణ", + "faviconPreview": "ఫేవికాన్ ప్రివ్యూ", + "changelog": "మార్పుల చిట్టా", + "contextSection": "కాంటెక్స్ట్ & క్యాష్", + "contextCaveman": "గుహావాసి", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "ఇంజిన్ కాంబోలు", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "అల్ట్రా", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "కంప్రెషన్ సెట్టింగ్లు", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "కాంబో స్టూడియో", "combosLiveSubtitle": "లైవ్ రూటింగ్ క్యాస్కేడ్", "compressionStudio": "Compression Studio", "compressionExclusions": "అనుమతించబడని అంశాలు", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "లైవ్ ఇంజిన్ క్యాస్కేడ్", "compressionExclusionsSubtitle": "ప్రతి మోడల్/ఎండ్పాయింట్ బైపాస్", "chaosConfigSubtitle": "మల్టీ-మోడల్ సమాంతర అమలు", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "రూటింగ్", + "protocolsSection": "ప్రోటోకాల్లు", + "agentsAiSection": "ఏజెంట్లు & AI", + "cacheContextSection": "క్యాష్ & కాంటెక్స్ట్", + "analyticsSection": "విశ్లేషణలు", + "costsSection": "ఖర్చులు", + "monitoringSection": "పర్యవేక్షణ", + "auditSecuritySection": "ఆడిట్ & భద్రత", + "devtoolsSection": "డెవలపర్ సాధనాలు", + "configurationSection": "కాన్ఫిగరేషన్", + "aiFeaturesSection": "AI ఫీచర్లు", "mcp": "MCP", "a2a": "A2A", "plugins": "ప్లగిన్‌లు", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "API ఎండ్పాయింట్లు", + "batchFiles": "ఫైళ్లు", + "analyticsEvals": "మూల్యాంకనాలు", + "analyticsSearch": "శోధన", + "analyticsUtilization": "వినియోగం", + "analyticsComboHealth": "కాంబో స్థితి", + "analyticsCompression": "కంప్రెషన్", + "costsBudget": "బడ్జెట్", "costsFreeTiers": "ఉచిత-శ్రేణి బడ్జెట్", "costsFreeTiersSubtitle": "నెలవారీ ఉచిత-టోకెన్ అలవెన్సులు", "freeProviderRankings": "ఉచిత ప్రొవైడర్ ర్యాంకింగ్‌లు", "freeProviderRankingsSubtitle": "మోడల్ ELO స్కోర్‌ల ఆధారంగా ర్యాంక్ చేయబడిన ఉత్తమ ఉచిత ప్రొవైడర్లు", "radar": "రాడార్ కాటలాగ్", "radarSubtitle": "సమాజం-సమృద్ధి చేసిన ఉచిత మోడల్ కాటలాగ్", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "కోటా భాగస్వామ్యం", + "costsPricing": "ధరలు", + "logsProxy": "ప్రాక్సీ లాగ్లు", + "logsConsole": "కన్సోల్", + "logsActivity": "కార్యాచరణ", + "auditMcp": "MCP ఆడిట్", "auditA2a": "A2A ఆడిట్", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "రూపురేఖలు", + "settingsAi": "AI సెట్టింగ్లు", + "settingsSecurity": "భద్రత", "settingsAccessTokens": "యాక్సెస్ టోకెన్లు", "settingsFeatureFlags": "ఫీచర్ ఫ్లాగ్స్", "settingsCache": "క్యాష్", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "అధికార నియంత్రణ", + "settingsRouting": "రూటింగ్", + "settingsResilience": "స్థితిస్థాపకత", "modelLockout": "మోడల్ లాకౌట్", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "అధునాతనం", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "ప్రొవైడర్ కోటా", + "providerQuota": "ప్రొవైడర్ కోటా", + "runtime": "రన్టైమ్", + "consoleLogs": "కన్సోల్ లాగ్లు", + "logsTimeline": "కాలక్రమం", "logsTimelineSubtitle": "దృశ్య అభ్యర్థన కాలరేఖ", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "సంభాషణలు", + "conversationsSubtitle": "బహుళ-దశల ఏజెంటిక్ సంభాషణలు", + "globalRouting": "గ్లోబల్ రూటింగ్", + "mitmProxy": "MITM ప్రాక్సీ", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "ఏజెంటిక్ ఫీచర్లు", + "otherFeaturesSection": "ఇతర ఫీచర్లు", + "compressionContextGroup": "కంప్రెషన్ సందర్భం", + "gamificationGroup": "గేమిఫికేషన్", + "toolsGroup": "సాధనాలు", + "integrationsGroup": "ఇంటిగ్రేషన్లు", + "proxyGroup": "ప్రాక్సీ", + "costsParametersGroup": "ఖర్చుల పారామీటర్లు", + "auditGroup": "ఆడిట్", + "batchGroup": "బ్యాచ్", + "homeSubtitle": "డ్యాష్బోర్డ్ అవలోకనం", + "providersSubtitle": "AI ప్రొవైడర్లను నిర్వహించండి", + "quotaTrackerSubtitle": "వినియోగ పరిమితులను ట్రాక్ చేయండి", + "providerQuotaSubtitle": "ప్రొవైడర్ వినియోగ పరిమితులను ట్రాక్ చేయండి", + "runtimeSubtitle": "రియల్టైమ్ స్థితిస్థాపకత & సెషన్లు", + "contextCombosSubtitle": "కంప్రెషన్ ఇంజిన్లను కలపండి", + "cliToolsSubtitle": "CLI రన్టైమ్లను కాన్ఫిగర్ చేయండి", + "agentsSubtitle": "లోకల్ ఏజెంట్లను నిర్వహించండి", + "cloudAgentsSubtitle": "క్లౌడ్-ఆధారిత ఏజెంట్లను నిర్వహించండి", + "apiEndpointsSubtitle": "కస్టమ్ ఎండ్పాయింట్లను అందుబాటులో ఉంచండి", + "proxySubtitle": "HTTP ప్రాక్సీ సెట్టింగ్లు", + "mitmProxySubtitle": "MITM ఇంటర్సెప్షన్", + "oneProxySubtitle": "పబ్లిక్ ప్రాక్సీ గేట్వే", + "leaderboard": "లీడర్బోర్డ్", + "profile": "ప్రొఫైల్", + "tokens": "టోకెన్లు", + "gamificationAdmin": "గేమిఫికేషన్ అడ్మిన్", + "leaderboardSubtitle": "ర్యాంకింగ్లు మరియు విజయాలు", + "profileSubtitle": "ఖాతా మరియు ప్రాధాన్యతలు", + "tokensSubtitle": "టోకెన్ వినియోగం మరియు బడ్జెట్లు", + "gamificationAdminSubtitle": "అసాధారణతల పర్యవేక్షణ మరియు మోస నిరోధం", + "usageSubtitle": "ట్రాఫిక్ మరియు వినియోగ గణాంకాలు", + "analyticsComboHealthSubtitle": "కాంబో లక్ష్య విశ్వసనీయత", + "analyticsUtilizationSubtitle": "ప్రొవైడర్ వినియోగం", + "costsSubtitle": "వ్యయ విభజన", + "cacheSubtitle": "క్యాష్ హిట్ రేట్లు", + "analyticsCompressionSubtitle": "టోకెన్ ఆదా గణాంకాలు", + "analyticsSearchSubtitle": "శోధన సాధన విశ్లేషణలు", + "analyticsEvalsSubtitle": "మూల్యాంకన సూట్ ఫలితాలు", "providerStats": "ప్రొవైడర్ గణాంకాలు", "providerStatsSubtitle": "లేటెన్సీ మరియు పనితీరు కొలమానాలు", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "అప్లికేషన్ లాగ్లు", + "logsProxySubtitle": "ప్రాక్సీ ట్రాఫిక్ లాగ్లు", + "consoleLogsSubtitle": "కన్సోల్ అవుట్పుట్", + "logsActivitySubtitle": "వినియోగదారు కార్యకలాపాల లాగ్", + "healthSubtitle": "సిస్టమ్ ఆరోగ్య తనిఖీ", + "costsPricingSubtitle": "ప్రతి మోడల్కు ధర నియమాలు", + "costsBudgetSubtitle": "బడ్జెట్ పరిమితులు", + "costsQuotaShareSubtitle": "కీల మధ్య ప్రొవైడర్ కోటాలను పంచుకోండి", + "auditLogSubtitle": "అధికార అనుమతుల ఆడిట్", + "auditMcpSubtitle": "MCP సర్వర్ ఆడిట్", + "auditA2aSubtitle": "A2A ప్రోటోకాల్ ఆడిట్", + "translatorSubtitle": "ఫార్మాట్ మార్పిడి", + "playgroundSubtitle": "ప్రాంప్ట్లను ప్రత్యక్షంగా పరీక్షించండి", + "searchToolsSubtitle": "శోధన సాధన రిజిస్ట్రీ", + "memorySubtitle": "శాశ్వత ఏజెంట్ మెమరీ", + "omniSkillsSubtitle": "శాండ్బాక్స్ నైపుణ్య రిజిస్ట్రీ", + "agentSkillsSubtitle": "A2A నైపుణ్య రిజిస్ట్రీ", + "mcpSubtitle": "MCP సర్వర్ నియంత్రణలు", + "a2aSubtitle": "A2A ప్రోటోకాల్ సర్వర్", "pluginsSubtitle": "ప్లగిన్ మార్కెట్‌ప్లేస్ & ఇన్‌స్టాల్‌లు", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "క్యాష్ చేసిన మీడియా ఫైళ్లు", + "batchFilesSubtitle": "బ్యాచ్ ఇన్పుట్/అవుట్పుట్ ఫైళ్లు", + "settingsSubtitle": "అన్ని సెట్టింగ్లు", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "థీమ్ మరియు లేఅవుట్", + "settingsAiSubtitle": "AI ప్రవర్తన డిఫాల్ట్లు", + "globalRoutingSubtitle": "గ్లోబల్ రూటింగ్ నియమాలు", + "settingsResilienceSubtitle": "పునఃప్రయత్నాలు మరియు సర్క్యూట్ బ్రేకర్లు", + "settingsAdvancedSubtitle": "పవర్ యూజర్ ఎంపికలు", + "settingsSecuritySubtitle": "ప్రమాణీకరణ మరియు ఎన్క్రిప్షన్", "settingsAccessTokensSubtitle": "రిమోట్ మోడ్ కోసం స్కోప్డ్ CLI టోకెన్లు", "settingsFeatureFlagsSubtitle": "సిస్టమ్ సామర్థ్యాలను టోగుల్ చేయండి", "settingsCacheSubtitle": "మోడల్ కాటలాగ్ మరియు స్పందన కాషింగ్", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "సైడ్బార్", + "settingsSidebarSubtitle": "సైడ్బార్ లేఅవుట్ను అనుకూలీకరించండి", "settingsAuthzSubtitle": "రూట్ ఇన్వెంటరీ మరియు బైపాస్ పాలసీ", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "డాక్యుమెంటేషన్", + "issuesSubtitle": "బగ్ను నివేదించండి", + "changelogSubtitle": "విడుదల గమనికలు", "costsQuotaPlans": "ప్లాన్‌లు & కోటాలు", "costsQuotaPlansSubtitle": "ప్రొవైడర్ వారీగా ప్లాన్‌లను కాన్ఫిగర్ చేయండి", "activity": "కార్యకలాపం", @@ -1278,8 +1278,8 @@ "agentBridge": "ఏజెంట్ బ్రిడ్జ్", "agentBridgeSubtitle": "IDE ఏజెంట్ ట్రాఫిక్‌ను అడ్డుకోండి", "trafficInspector": "ట్రాఫిక్ ఇన్‌స్పెక్టర్", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "మీ యాప్ల నుంచి వచ్చే అభ్యర్థన మరియు ప్రతిస్పందన ట్రాఫిక్ను పరిశీలించండి", + "trafficInspectorPurpose": "మీ అప్లికేషన్ AI ప్రొవైడర్లకు ఖచ్చితంగా ఏమి పంపుతుందో, వాటి నుంచి ఏమి స్వీకరిస్తుందో చూడండి. OpenAI-అనుకూలమైన ఏ క్లయింట్తోనైనా పనిచేస్తుంది.", "cliCode": "CLI కోడ్", "cliCodeSubtitle": "OmniRoute వైపు చూపే కోడ్ సాధనాలు", "cliAgents": "CLI ఏజెంట్లు", @@ -1345,7 +1345,7 @@ "refresh": "రిఫ్రెష్ చేయండి", "loading": "వెబ్‌హుక్‌లను లోడ్ చేస్తోంది...", "never": "ఎప్పుడూ", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {వైఫల్యాలు లేవు} one {# వైఫల్యం} other {# వైఫల్యాలు}}", "testWebhook": "పరీక్ష పంపండి", "testSuccess": "పరీక్ష వెబ్‌హుక్ విజయవంతంగా పంపబడింది.", "testFailed": "పరీక్ష వెబ్‌హుక్ విఫలమైంది.", @@ -1563,91 +1563,91 @@ "mcpMetricTopTool": "టాప్ టూల్" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "థీమ్లు", + "description": "ముందే సిద్ధం చేసిన థీమ్ను ఎంచుకోండి లేదా ఒకే రంగుతో మీ స్వంత థీమ్ను సృష్టించండి", + "presetColors": "ప్రజాదరణ పొందిన రంగులు", + "customTheme": "అనుకూల థీమ్", + "customThemeDesc": "థీమ్ను సృష్టించుపై క్లిక్ చేసి ఒక రంగును ఎంచుకోండి", + "createTheme": "థీమ్ను సృష్టించండి", + "activePreset": "సక్రియ థీమ్" }, "header": { - "logout": "Logout", + "logout": "లాగ్ అవుట్", "quickNavigation": "త్వరిత నావిగేషన్", "quickNavigationTitle": "త్వరిత నావిగేషన్ (⌘K / Ctrl+K)", "openQuickNavigation": "త్వరిత నావిగేషన్‌ను తెరవండి", "switchToLightMode": "లైట్ మోడ్‌కి మారండి", "switchToDarkMode": "డార్క్ మోడ్‌కి మారండి", - "language": "Language", - "providers": "Providers", - "providerDescription": "Manage your AI provider connections", - "combos": "Combos", - "comboDescription": "Model combos with fallback", - "usage": "Usage & Analytics", - "usageDescription": "Monitor your API usage, token consumption, and request logs", - "analytics": "Analytics", - "analyticsDescription": "Charts, trends, and evaluation insights", - "cliTools": "CLI Tools", - "cliToolsDescription": "Configure CLI tools", - "home": "Home", - "homeDescription": "Welcome to OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "language": "భాష", + "providers": "ప్రొవైడర్లు", + "providerDescription": "మీ AI ప్రొవైడర్ కనెక్షన్లను నిర్వహించండి", + "combos": "కాంబోలు", + "comboDescription": "ఫాల్బ్యాక్తో కూడిన మోడల్ కాంబోలు", + "usage": "వినియోగం & విశ్లేషణలు", + "usageDescription": "మీ API వినియోగం, టోకెన్ వినియోగం మరియు అభ్యర్థన లాగ్లను పర్యవేక్షించండి", + "analytics": "విశ్లేషణలు", + "analyticsDescription": "చార్ట్లు, ధోరణులు మరియు మూల్యాంకన అంతర్దృష్టులు", + "cliTools": "CLI సాధనాలు", + "cliToolsDescription": "CLI సాధనాలను కాన్ఫిగర్ చేయండి", + "home": "హోమ్", + "homeDescription": "OmniRouteకు స్వాగతం", + "endpoint": "ఎండ్పాయింట్లు", + "endpointDescription": "ప్రాక్సీ ఎండ్పాయింట్లు, MCP, A2A మరియు API ఎండ్పాయింట్లను నిర్వహించండి", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol సర్వర్ నిర్వహణ మరియు సాధనాలు", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", - "settings": "Settings", - "settingsDescription": "Manage your preferences", - "openaiCompatible": "OpenAI Compatible", - "anthropicCompatible": "Anthropic Compatible", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "a2aDescription": "Agent-to-Agent ప్రోటోకాల్ టాస్క్లు మరియు పరిశీలన సామర్థ్యం", + "settings": "సెట్టింగ్లు", + "settingsDescription": "మీ ప్రాధాన్యతలను నిర్వహించండి", + "openaiCompatible": "OpenAI అనుకూలం", + "anthropicCompatible": "Anthropic అనుకూలం", + "media": "మీడియా", + "mediaDescription": "చిత్రాలు, వీడియోలు మరియు సంగీతాన్ని రూపొందించండి", + "themes": "థీమ్లు", + "themesDescription": "మొత్తం డ్యాష్బోర్డ్ ప్యానెల్ కోసం ఒక రంగు థీమ్ను ఎంచుకోండి", + "costsDescription": "అందరు ప్రొవైడర్లలో ఖర్చులను ట్రాక్ చేయండి, ధోరణులను విశ్లేషించండి మరియు మీ AI బడ్జెట్ను నిర్వహించండి", + "cacheDescription": "ప్రొవైడర్ ప్రాంప్ట్ క్యాష్ సామర్థ్యాన్ని మరియు స్థానిక సెమాంటిక్ ప్రతిస్పందన పునర్వినియోగాన్ని పర్యవేక్షించండి.", + "limitsDescription": "ప్రతి API కీ మరియు ప్రొవైడర్కు రేట్ పరిమితులు మరియు కోటాలను కాన్ఫిగర్ చేయండి", + "runtimeDescription": "లైవ్ రన్టైమ్ పరిశీలన — సర్క్యూట్ బ్రేకర్లు, కూల్డౌన్లు, మోడల్ లాకౌట్లు, సెషన్లు మరియు కోటా హెచ్చరికలు", + "apiManagerDescription": "మీ OmniRoute ఇన్స్టాన్స్ కోసం API కీలు మరియు యాక్సెస్ నియంత్రణను నిర్వహించండి", + "batchDescription": "బ్యాచ్ చేసిన API కాల్లతో అధిక పరిమాణంలోని అభ్యర్థనలను అసమకాలికంగా ప్రాసెస్ చేయండి", + "contextCavemanDescription": "నియమ-ఆధారిత సందేశ కంప్రెషన్, భాషా ప్యాక్లు, అనలిటిక్స్ మరియు అవుట్పుట్ మోడ్ నియంత్రణలు.", + "contextRtkDescription": "టూల్ అవుట్పుట్, టెర్మినల్ లాగ్లు మరియు బిల్డ్ ఫలితాల కోసం కమాండ్-అవేర్ కంప్రెషన్.", + "contextCombosDescription": "విభిన్న రూటింగ్ సందర్భాల కోసం ఇంజిన్లను ఎలా కలపాలో నిర్వచించండి.", + "changelogDescription": "తాజా ప్లాట్ఫారమ్ ఫీచర్లు మరియు ప్రకటనల గురించి ఎప్పటికప్పుడు తెలుసుకోండి.", + "agentsDescription": "AI ఏజెంట్ సాధనాలను నిర్వహించి, కాన్ఫిగర్ చేయండి: Codex, Devin, Jules మరియు కస్టమ్ ఏజెంట్లు", + "cloudAgentsDescription": "లైవ్ టాస్క్ ట్రాకింగ్ మరియు ప్లాన్ ఆమోదంతో క్లౌడ్-ఆధారిత AI ఏజెంట్లను సమన్వయం చేయండి", + "memoryDescription": "సెమాంటిక్ శోధన మరియు FTS5 పూర్తి-టెక్స్ట్ ఇండెక్సింగ్తో స్థిరమైన సంభాషణ మెమరీ", + "skillsDescription": "ఆటోమేటెడ్ ప్రాంప్ట్ మరియు టూల్ అమలు కోసం శాండ్బాక్స్ నైపుణ్యాలను ఇన్స్టాల్ చేసి, నిర్వహించండి", + "agentSkillsDescription": "AI క్లయింట్ ఇంటిగ్రేషన్ కోసం ఒకే క్లిక్తో URL కాపీ చేయగల ఏజెంట్-రెడీ నైపుణ్యాల కేటలాగ్", + "translatorDescription": "API ఫార్మాట్ల మధ్య ప్రాంప్ట్లను అనువదించి, పరీక్షించండి: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "లైవ్ ప్రొవైడర్ ప్రతిస్పందనలు మరియు ఫార్మాట్ తనిఖీతో ప్రాంప్ట్లను ఇంటరాక్టివ్గా పరీక్షించండి", + "searchToolsDescription": "శోధన అనలిటిక్స్, ప్రొవైడర్ విభజన, క్యాష్ హిట్ రేట్లు మరియు ఖర్చు ట్రాకింగ్", + "logsDescription": "రియల్-టైమ్ అభ్యర్థన లాగ్లు, ఎర్రర్ ట్రేస్లు మరియు స్ట్రీమింగ్ ఈవెంట్ ఇన్స్పెక్టర్", + "auditDescription": "API కీ వినియోగం, MCP టూల్ కాల్లు మరియు పాలసీ ఈవెంట్ల కంప్లయన్స్ ఆడిట్ ట్రయల్", + "webhooksDescription": "రియల్-టైమ్ ఈవెంట్ నోటిఫికేషన్లను స్వీకరించడానికి వెబ్హుక్ ఎండ్పాయింట్లను కాన్ఫిగర్ చేయండి", + "healthDescription": "సిస్టమ్ ఆరోగ్య స్థితి సమీక్ష: ప్రొవైడర్లు, సర్క్యూట్ బ్రేకర్లు, రేట్ పరిమితులు మరియు డేటాబేస్", + "proxyDescription": "అవుట్బౌండ్ ప్రొవైడర్ కనెక్షన్ల కోసం అప్స్ట్రీమ్ ప్రాక్సీ సెట్టింగ్లను కాన్ఫిగర్ చేయండి", + "apiEndpointsDescription": "కస్టమ్ API ఎండ్పాయింట్ కాన్ఫిగరేషన్లు మరియు రూటింగ్ ఓవర్రైడ్లను నిర్వహించండి", + "batchFilesDescription": "బ్యాచ్ జాబ్ అవుట్పుట్ ఫైళ్లు మరియు ఫలితాలను బ్రౌజ్ చేసి నిర్వహించండి", + "analyticsEvalsDescription": "మోడల్ మూల్యాంకన ఫలితాలు మరియు పనితీరు బెంచ్మార్క్లు", + "analyticsSearchDescription": "శోధన క్వెరీ విశ్లేషణలు, క్యాష్ హిట్ రేట్లు మరియు వ్యయ ట్రాకింగ్", + "analyticsUtilizationDescription": "ప్రొవైడర్ వినియోగ మెట్రిక్లు మరియు సామర్థ్య ప్రణాళిక", + "analyticsComboHealthDescription": "కాంబో రూటింగ్ కాన్ఫిగరేషన్ల రియల్-టైమ్ స్థితి మరియు పనితీరు", + "analyticsCompressionDescription": "కాంటెక్స్ట్ కంప్రెషన్ విశ్లేషణలు మరియు టోకెన్ ఆదా", + "costsBudgetDescription": "ప్రతి API కీ మరియు ప్రొవైడర్కు బడ్జెట్ పరిమితులు మరియు ఖర్చు హెచ్చరికలు", + "costsPricingDescription": "టోకెన్ వ్యయ గణనల కోసం అనుకూల ధరల కాన్ఫిగరేషన్", + "logsProxyDescription": "అప్స్ట్రీమ్ ప్రాక్సీ అభ్యర్థన లాగ్లు మరియు ట్రాఫిక్ తనిఖీ", + "logsConsoleDescription": "అప్లికేషన్ కన్సోల్ అవుట్పుట్ మరియు డీబగ్ లాగ్లు", + "logsActivityDescription": "వినియోగదారు చర్యలు మరియు సిస్టమ్ ఈవెంట్ల ఆడిట్ ట్రయిల్", + "auditMcpDescription": "MCP టూల్ అమలు ఆడిట్ ట్రయిల్ మరియు అనుపాలన రికార్డులు", "auditA2a": "A2A ఆడిట్", "auditA2aDescription": "A2A టాస్క్ ఎగ్జిక్యూషన్ ఆడిట్ ట్రయల్, స్టేట్ ట్రాన్సిషన్స్ మరియు స్కిల్ ఇన్వోకేషన్ రికార్డ్‌లు", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "థీమ్, బ్రాండింగ్ మరియు దృశ్య అనుకూలీకరణ", + "settingsAiDescription": "AI ప్రవర్తనలు, ఆలోచనా బడ్జెట్లు, విజన్ మరియు మెమరీ సెట్టింగ్లు", "settingsCacheDescription": "మోడల్ కాటలాగ్ కాష్ ఎంట్రీల కోసం TTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "ప్రామాణీకరణ, అధికార కల్పన మరియు యాక్సెస్ నియంత్రణ సెట్టింగ్లు", "featureFlags": "ఫీచర్ ఫ్లాగ్స్", "featureFlagsDescription": "సిస్టమ్ సామర్థ్యాలు మరియు ప్రయోగాత్మక లక్షణాలను నియంత్రించండి", "featureFlagsActive": "{count} సక్రియంగా ఉంది", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "మీ శోధనకు సరిపోలే ఫ్లాగ్‌లు ఏవీ లేవు", "featureFlagsSaved": "ఫ్లాగ్ నవీకరించబడింది", "featureFlagsError": "ఫ్లాగ్‌ని నవీకరించడంలో విఫలమైంది", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "రూటింగ్ నియమాలు, మోడల్ అలియాస్లు, కాంబో డిఫాల్ట్లు మరియు డీగ్రేడేషన్ సెట్టింగ్లు", + "settingsResilienceDescription": "సర్క్యూట్ బ్రేకర్, మళ్లీ ప్రయత్నించడం మరియు ఫాల్బ్యాక్ కాన్ఫిగరేషన్", + "settingsAdvancedDescription": "అధునాతన పేలోడ్ నియమాలు, అభ్యర్థన పరిమితులు మరియు ప్రాక్సీ API సెట్టింగ్లు", + "mitmProxyDescription": "ట్రాఫిక్ తనిఖీ మరియు డీబగ్గింగ్ కోసం MITM ప్రాక్సీ సెట్టింగ్లను కాన్ఫిగర్ చేయండి", + "oneProxyDescription": "అధునాతన ప్రాక్సీ చైనింగ్ కోసం 1Proxy సెట్టింగ్లను కాన్ఫిగర్ చేయండి", "omniSkillsDescription": "ఆటోమేటెడ్ ప్రాంప్ట్ మరియు టూల్ ఎగ్జిక్యూషన్ కోసం శాండ్‌బాక్స్ స్కిల్స్‌ను ఇన్‌స్టాల్ చేయండి మరియు నిర్వహించండి" }, "cloudSyncStatus": { @@ -1761,8 +1761,8 @@ "quotaShare": "కోటా షేర్", "discovery": "అన్వేషణ", "freeProviderRankings": "ఉచిత ప్రొవైడర్ ర్యాంకింగ్‌లు", - "radar": "Radar", - "setup": "Setup", + "radar": "రాడార్", + "setup": "సెటప్", "freeTiers": "ఉచిత శ్రేణులు", "gamification": "గేమిఫికేషన్", "leaderboard": "లీడర్‌బోర్డ్", @@ -1784,53 +1784,53 @@ "orchestration": "ఆర్కెస్ట్రేషన్" }, "home": { - "quickStart": "Quick Start", - "quickStartDesc": "Get up and running in 4 steps. Connect providers, route models, monitor everything.", - "fullDocs": "Full Docs", - "step1Title": "1. Create API key", + "quickStart": "త్వరిత ప్రారంభం", + "quickStartDesc": "4 దశల్లో ప్రారంభించండి. ప్రొవైడర్లను కనెక్ట్ చేయండి, మోడల్లను రూట్ చేయండి, అన్నింటినీ పర్యవేక్షించండి.", + "fullDocs": "పూర్తి డాక్యుమెంటేషన్", + "step1Title": "1. API కీని సృష్టించండి", "step1Desc": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "step2Title": "2. Connect providers", - "step2Desc": "Add accounts in Providers. Supports OAuth, API Key, and free tiers.", - "step3Title": "3. Point your client", - "step3Desc": "Set base URL to {url} in your IDE or API client.", - "step4Title": "4. Monitor & optimize", - "step4Desc": "Track tokens, cost and errors in Request Logs and Analytics.", - "providersOverview": "Providers Overview", - "configuredOf": "{configured} configured of {total} available providers", - "noModelsAvailable": "No models available for this provider.", + "step2Title": "2. ప్రొవైడర్లను కనెక్ట్ చేయండి", + "step2Desc": "ప్రొవైడర్లులో ఖాతాలను జోడించండి. OAuth, API Key మరియు ఉచిత టైర్లకు మద్దతు ఉంది.", + "step3Title": "3. మీ క్లయింట్ను నిర్దేశించండి", + "step3Desc": "మీ IDE లేదా API క్లయింట్లో బేస్ URLను {url}కు సెట్ చేయండి.", + "step4Title": "4. పర్యవేక్షించండి & ఆప్టిమైజ్ చేయండి", + "step4Desc": "టోకెన్లు, ఖర్చు మరియు లోపాలను అభ్యర్థన లాగ్లు, విశ్లేషణలులో ట్రాక్ చేయండి.", + "providersOverview": "ప్రొవైడర్ల అవలోకనం", + "configuredOf": "అందుబాటులో ఉన్న {total} ప్రొవైడర్లలో {configured} కాన్ఫిగర్ చేయబడ్డాయి", + "noModelsAvailable": "ఈ ప్రొవైడర్కు మోడల్లు అందుబాటులో లేవు.", "noProvidersConfigured": "ఇంకా ప్రొవైడర్లు ఏవీ కాన్ఫిగర్ చేయబడలేదు", "addProvider": "ప్రొవైడర్‌ను జోడించండి", - "configureFirst": "Configure a connection first in {providers}", - "configureProvider": "Configure Provider", - "modelAvailable": "{count} model available", - "modelsAvailable": "{count} models available", - "connectionsActive": "{count} connection active", - "connectionsActivePlural": "{count} connections active", - "copyModelName": "Copy model name", - "documentation": "Documentation", - "healthMonitor": "Health Monitor", - "reportIssue": "Report issue", - "activeError": "{active} active · {errors} error", - "topologyLegendActive": "__MISSING__:Active", - "topologyLegendRecent": "__MISSING__:Recent", - "topologyLegendError": "__MISSING__:Error", + "configureFirst": "ముందుగా {providers}లో కనెక్షన్ను కాన్ఫిగర్ చేయండి", + "configureProvider": "ప్రొవైడర్ను కాన్ఫిగర్ చేయండి", + "modelAvailable": "{count} మోడల్ అందుబాటులో ఉంది", + "modelsAvailable": "{count} మోడల్లు అందుబాటులో ఉన్నాయి", + "connectionsActive": "{count} కనెక్షన్ యాక్టివ్గా ఉంది", + "connectionsActivePlural": "{count} కనెక్షన్లు యాక్టివ్గా ఉన్నాయి", + "copyModelName": "మోడల్ పేరును కాపీ చేయండి", + "documentation": "డాక్యుమెంటేషన్", + "healthMonitor": "హెల్త్ మానిటర్", + "reportIssue": "సమస్యను నివేదించండి", + "activeError": "{active} యాక్టివ్ · {errors} లోపం", + "topologyLegendActive": "యాక్టివ్", + "topologyLegendRecent": "ఇటీవలి", + "topologyLegendError": "లోపం", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", - "requestsShort": "{count} reqs", - "providerModelsTitle": "{provider} - Models", - "copiedModel": "Copied: {model}", + "apiKeyLabel": "API కీ", + "requestsShort": "{count} అభ్యర్థనలు", + "providerModelsTitle": "{provider} - మోడల్లు", + "copiedModel": "కాపీ చేయబడింది: {model}", "aliasLabel": "alias", - "updateNow": "Update Now", - "updating": "Updating...", - "updateAvailableDesc": "A new version is available. Click to update.", - "updateStarted": "Update started...", + "updateNow": "ఇప్పుడే అప్డేట్ చేయండి", + "updating": "అప్డేట్ అవుతోంది...", + "updateAvailableDesc": "కొత్త వెర్షన్ అందుబాటులో ఉంది. అప్డేట్ చేయడానికి క్లిక్ చేయండి.", + "updateStarted": "అప్డేట్ ప్రారంభమైంది...", "reloadingPageAutomatically": "పేజీని స్వయంచాలకంగా రీలోడ్ చేస్తోంది...", "providerTopology": "ప్రొవైడర్ టోపాలజీ", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "ఇటీవలి అభ్యర్థనలు", + "recentRequestsEmpty": "ఇంకా అభ్యర్థనలు లేవు.", + "recentRequestsModel": "మోడల్", + "recentRequestsTokens": "ఇన్ / అవుట్", + "recentRequestsWhen": "ఎప్పుడు", "downloadDmg": "DMG డౌన్‌లోడ్ చేయండి (macOS)", "downloadDmgDescription": "ఒక కొత్త సంచిక OmniRoute డెస్క్‌టాప్ యాప్ అందుబాటులో ఉంది. దయచేసి నవీకరించడానికి macOS DMG ఇన్‌స్టాలర్‌ను డౌన్‌లోడ్ చేసి ఇన్‌స్టాల్ చేయండి (ప్రస్తుత: v{version}).", "downloadExe": "EXE డౌన్‌లోడ్ చేయండి (విండోస్)", @@ -1888,18 +1888,18 @@ "releaseNotes": "విడుదల గమనికలు", "readMore": "మరింత చదవండి", "noAuthLabel": "ఎలాంటి ప్రమాణీకరణ లేదు", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "రూట్ చేయడానికి సిద్ధం కండి", + "readinessTitle": "మీ మొదటి అభ్యర్థనను పంపండి", + "readinessSubtitle": "నాలుగు చిన్న దశలు. మీరు కొనసాగుతున్నప్పుడు OmniRoute సంసిద్ధతను తనిఖీ చేస్తుంది.", + "readinessStep1": "ప్రొవైడర్ను కనెక్ట్ చేయండి", + "readinessStep2": "ఎండ్పాయింట్ ప్రామాణీకరణను కాన్ఫిగర్ చేయండి", + "readinessStep3": "మీ ఎండ్పాయింట్ను కాపీ చేయండి", + "readinessStep4": "పరీక్ష అభ్యర్థనను పంపండి", + "readinessContinue": "సెటప్ను కొనసాగించండి", + "readinessDismiss": "ప్రస్తుతానికి విస్మరించండి" }, "analytics": { - "title": "Analytics", + "title": "విశ్లేషణలు", "usageAnalyticsTitle": "వినియోగ విశ్లేషణలు", "diversityScoreTitle": "ప్రొవైడర్ వైవిధ్యం", "diversityScoreDesc": "ఇటీవలి ట్రాఫిక్ విండో కోసం ప్రొవైడర్ కేంద్రీకరణ స్నాప్‌షాట్.", @@ -1963,11 +1963,11 @@ "rangeCancel": "రద్దు చేయి", "rangeApply": "వర్తింపజేయి", "rangeErrorInvalid": "ప్రారంభం తప్పనిసరిగా ముగింపు కంటే ముందు ఉండాలి", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1రోజు", + "period7D": "7రోజులు", + "period30D": "30రోజులు", + "period90D": "90రోజులు", + "periodYTD": "ఈ సంవత్సరం ప్రారంభం నుంచి", "periodAll": "అన్నీ", "totalTokens": "మొత్తం టోకెన్లు", "inputTokens": "ఇన్‌పుట్ టోకెన్లు", @@ -1990,21 +1990,21 @@ "highlightsDiversity": "వైవిధ్యం", "highlightsFallbackRate": "ఫాల్‌బ్యాక్ రేటు", "customRange": "కస్టమ్", - "overviewDescription": "Monitor your API usage patterns, token consumption, costs, and activity trends across all providers and models.", - "evalsDescription": "Run evaluation suites to test and validate your LLM endpoints. Compare model quality, detect regressions, and benchmark latency.", - "overview": "Overview", - "evals": "Evals", + "overviewDescription": "అన్ని ప్రొవైడర్లు మరియు మోడళ్లలో మీ API వినియోగ విధానాలు, టోకెన్ వినియోగం, ఖర్చులు మరియు కార్యకలాపాల ధోరణులను పర్యవేక్షించండి.", + "evalsDescription": "మీ LLM ఎండ్పాయింట్లను పరీక్షించి, ధ్రువీకరించడానికి మూల్యాంకన సూట్లను అమలు చేయండి. మోడల్ నాణ్యతను సరిపోల్చండి, పనితీరు క్షీణతలను గుర్తించండి మరియు లేటెన్సీని బెంచ్మార్క్ చేయండి.", + "overview": "అవలోకనం", + "evals": "మూల్యాంకనాలు", "search": "శోధన", - "utilization": "Utilization", + "utilization": "వినియోగం", "routeTrace": "రూట్ ట్రేస్", "sectionsAria": "విశ్లేషణల విభాగాలు", - "utilizationDescription": "Provider quota usage trends and rate limit tracking", - "modelStatus": "Model Status", - "modelStatusCooldown": "Cooldown", - "modelStatusUnavailable": "Unavailable", - "modelStatusError": "Error", - "comboHealth": "Combo Health", - "comboHealthDescription": "Combo-level quota, usage distribution, and performance metrics", + "utilizationDescription": "ప్రొవైడర్ కోటా వినియోగ ధోరణులు మరియు రేట్ లిమిట్ ట్రాకింగ్", + "modelStatus": "మోడల్ స్థితి", + "modelStatusCooldown": "కూల్డౌన్", + "modelStatusUnavailable": "అందుబాటులో లేదు", + "modelStatusError": "లోపం", + "comboHealth": "కాంబో స్థితి", + "comboHealthDescription": "కాంబో-స్థాయి కోటా, వినియోగ పంపిణీ మరియు పనితీరు కొలమానాలు", "compressionAnalyticsTitle": "Compression", "compressionAnalyticsDescription": "Compression analytics - token savings, mode breakdown, and provider stats.", "autoRoutingTotalAutoRequests": "మొత్తం ఆటో అభ్యర్థనలు", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "పనితీరు", "comboHealthPerformanceDescription": "రూట్ చేయబడిన కాంబో ట్రాఫిక్ కోసం విశ్వసనీయత మరియు త్రూపుట్.", "comboHealthExecutionTargetsDescription": "నిర్మాణాత్మక కాంబో లక్ష్యాల కోసం స్టెప్-లెవల్ రన్‌టైమ్ మెట్రిక్‌లు మరియు కోటా విజిబిలిటీ.", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} అభ్యర్థనలు", "comboHealthQuotaScope": "కోటా పరిధి: {scope}", "comboHealthTrendValue": "ట్రెండ్: {trend}", "comboHealthFetchFailed": "కాంబో హెల్త్ డేటాను పొందడంలో విఫలమైంది", @@ -2210,7 +2210,7 @@ "combo": "కాంబో", "routeStep": "దశ", "tokens": "టోకెన్లు", - "notAvailable": "n/a", + "notAvailable": "వర్తించదు", "routeTokenCounts": "{input} ఇన్ · {output} అవుట్", "routeEvidence": "ఆధారం", "routeFactors": "రూటింగ్ కారకాలు", @@ -2237,55 +2237,55 @@ "freeTierAvailable": "ఉచిత స్థాయి అందుబాటులో ఉంది" }, "apiManager": { - "title": "API Keys", - "createKey": "Create API Key", - "key": "Key", - "revokeKey": "Revoke Key", - "revokeConfirm": "Are you sure you want to revoke this API key?", - "noKeys": "No API keys yet", - "noKeysDesc": "Create your first API key to authenticate requests to your endpoint", - "keyLabel": "Key Label", - "permissions": "Permissions", - "expiresAt": "Expires", - "never": "Never", - "revoke": "Revoke", - "showKey": "Show Key", - "hideKey": "Hide Key", - "copyKey": "Copy API Key", - "allModels": "All models", - "selectedModels": "Selected Models", - "readOnly": "Read Only", - "fullAccess": "Full Access", - "keyManagement": "API Key Management", - "keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "title": "API కీలు", + "createKey": "API కీని సృష్టించండి", + "key": "కీ", + "revokeKey": "కీని రద్దు చేయండి", + "revokeConfirm": "మీరు ఖచ్చితంగా ఈ API కీని రద్దు చేయాలనుకుంటున్నారా?", + "noKeys": "ఇంకా API కీలు లేవు", + "noKeysDesc": "మీ ఎండ్పాయింట్కు చేసే అభ్యర్థనలను ప్రామాణీకరించడానికి మీ మొదటి API కీని సృష్టించండి", + "keyLabel": "కీ లేబుల్", + "permissions": "అనుమతులు", + "expiresAt": "గడువు ముగిసేది", + "never": "ఎప్పటికీ కాదు", + "revoke": "రద్దు చేయండి", + "showKey": "కీని చూపించండి", + "hideKey": "కీని దాచండి", + "copyKey": "API కీని కాపీ చేయండి", + "allModels": "అన్ని మోడళ్లు", + "selectedModels": "ఎంచుకున్న మోడళ్లు", + "readOnly": "చదవడానికి మాత్రమే", + "fullAccess": "పూర్తి యాక్సెస్", + "keyManagement": "API కీ నిర్వహణ", + "keyManagementDesc": "మీ ఎండ్పాయింట్కు పంపే అభ్యర్థనలను ప్రామాణీకరించడానికి API కీలను సృష్టించి, నిర్వహించండి", + "requestFlowAria": "మీ యాప్ API కీ ద్వారా OmniRouteకు అభ్యర్థనలను పంపుతుంది", + "requestFlowYourApp": "మీ యాప్", + "requestFlowApiKey": "API కీ", "requestFlowOmniRoute": "OmniRoute", - "totalKeys": "Total Keys", - "restricted": "Restricted", - "totalRequests": "Total Requests", - "modelsAvailable": "Models Available", - "registeredKeys": "Registered Keys", - "keysRegistered": "{count} keys registered", - "keyRegistered": "{count} key registered", - "keysSecurityNote": "Each key isolates usage tracking and can be revoked independently. Keys are masked after creation for security.", - "createFirstKey": "Create Your First Key", - "name": "Name", - "usage": "Usage", - "created": "Created", - "actions": "Actions", - "reqs": "reqs", - "neverUsed": "Never used", - "deleteConfirm": "Delete this API key?", - "usageTips": "Usage Tips", - "tipAuth": "Use API keys in the Authorization header as Bearer YOUR_KEY", - "tipSecure": "Keys are only shown once during creation — store them securely", - "tipSeparate": "Create separate keys for different clients or environments", - "tipRestrict": "Restrict keys to specific models for better security and cost control", - "keyName": "Key Name", + "totalKeys": "మొత్తం కీలు", + "restricted": "పరిమితం చేయబడినవి", + "totalRequests": "మొత్తం అభ్యర్థనలు", + "modelsAvailable": "అందుబాటులో ఉన్న మోడళ్లు", + "registeredKeys": "నమోదైన కీలు", + "keysRegistered": "{count} కీలు నమోదయ్యాయి", + "keyRegistered": "{count} కీ నమోదైంది", + "keysSecurityNote": "ప్రతి కీ వినియోగ ట్రాకింగ్ను వేరుగా ఉంచుతుంది మరియు దానిని స్వతంత్రంగా రద్దు చేయవచ్చు. భద్రత కోసం సృష్టించిన తర్వాత కీలు మాస్క్ చేయబడతాయి.", + "createFirstKey": "మీ మొదటి కీని సృష్టించండి", + "name": "పేరు", + "usage": "వినియోగం", + "created": "సృష్టించిన తేదీ", + "actions": "చర్యలు", + "reqs": "అభ్యర్థనలు", + "neverUsed": "ఎప్పుడూ ఉపయోగించలేదు", + "deleteConfirm": "ఈ API కీని తొలగించాలా?", + "usageTips": "వినియోగ చిట్కాలు", + "tipAuth": "Authorization హెడర్లో API కీలను Bearer YOUR_KEY రూపంలో ఉపయోగించండి", + "tipSecure": "కీలు సృష్టించే సమయంలో ఒక్కసారి మాత్రమే చూపబడతాయి — వాటిని సురక్షితంగా నిల్వ చేయండి", + "tipSeparate": "వేర్వేరు క్లయింట్లు లేదా ఎన్విరాన్మెంట్ల కోసం ప్రత్యేక కీలను సృష్టించండి", + "tipRestrict": "మెరుగైన భద్రత మరియు ఖర్చు నియంత్రణ కోసం కీలను నిర్దిష్ట మోడళ్లకు పరిమితం చేయండి", + "keyName": "కీ పేరు", "keyNamePlaceholder": "e.g., Production Key, Development Key", - "keyNameDesc": "Choose a descriptive name to identify this key's purpose", + "keyNameDesc": "ఈ కీ ఉద్దేశాన్ని గుర్తించడానికి వివరణాత్మక పేరును ఎంచుకోండి", "managementAccessDesc": "ఈ API కీకి OmniRoute కాన్ఫిగరేషన్‌ను నిర్వహించడానికి అనుమతించండి.", "selfServiceVisibility": "స్వీయ సేవ దృశ్యత", "selfServiceVisibilityDesc": "ఈ కీ తన స్వంత వినియోగం మరియు షేర్ చేసిన upstream కోటా గురించి ఏమి చూడగలదో నియంత్రించండి.", @@ -2296,83 +2296,83 @@ "localUsageCommand": "స్థానిక వినియోగ కమాండ్‌ను అనుమతించు", "localUsageCommandDesc": "అప్‌స్ట్రీమ్ ప్రొవైడర్‌ను పిలవకుండానే కాష్ చేయబడిన వినియోగం మరియు కోటా సమాచారాన్ని తిరిగి పొందడానికి ఈ API కీని @@om-usage ఉపయోగించడానికి అనుమతిస్తుంది.", "localUsageCommandBadge": "వినియోగ cmd", - "keyCreated": "API Key Created", - "keyCreatedSuccess": "Key created successfully!", - "keyCreatedNote": "Copy and store this key now — it won't be shown again.", - "done": "Done", - "savePermissions": "Save Permissions", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "keyCreated": "API కీ సృష్టించబడింది", + "keyCreatedSuccess": "కీ విజయవంతంగా సృష్టించబడింది!", + "keyCreatedNote": "ఈ కీని ఇప్పుడే కాపీ చేసి నిల్వ చేయండి — ఇది మళ్లీ చూపబడదు.", + "done": "పూర్తయింది", + "savePermissions": "అనుమతులను సేవ్ చేయండి", + "endpointRestrictions": "అనుమతించబడిన ఎండ్పాయింట్లు", + "allEndpointsAllowed": "ఈ కీ అన్ని API ఎండ్పాయింట్లను యాక్సెస్ చేయగలదు.", + "endpointsRestricted": "{count} ఎండ్పాయింట్{count, plural, one {} other {s}}కు పరిమితం చేయబడింది.", + "autoResolve": "స్వయంచాలకంగా పరిష్కరించు", + "autoResolveDesc": "ఈ API కీ కోసం అస్పష్టమైన మోడల్ పేర్లను స్థానిక ప్రొవైడర్కు స్వయంచాలకంగా పరిష్కరించండి.", "streamDefaultMode": "స్ట్రీమ్ డిఫాల్ట్ అనుకూలత", "streamDefaultModeDesc": "ఈ కీ కోసం విస్మరించబడిన `stream` ఫ్లాగ్‌లను నియంత్రిస్తుంది. JSON మోడ్ నాన్-స్ట్రీమింగ్ ప్రతిస్పందనలను అందిస్తుంది క్లయింట్ స్పష్టంగా SSEని అభ్యర్థిస్తే తప్ప.", "streamDefaultLegacy": "లెగసీ", "streamDefaultJson": "JSON అనుకూలమైనది", "streamDefaultBadge": "JSON స్ట్రీమ్ డిఫాల్ట్", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", - "allowAll": "Allow All", - "restrict": "Restrict", - "allowAllInfo": "This key can access all available models.", - "restrictInfo": "This key can access {selected} of {total} models.", - "selected": "{count} selected", - "all": "All", - "clear": "Clear", - "searchModels": "Search models by name or provider...", - "noModelsFound": "No models found", - "keyNameRequired": "Key name is required", - "keyNameTooLong": "Key name must be {max} characters or less", - "keyNameInvalid": "Key name can only contain letters, numbers, spaces, hyphens, and underscores", - "invalidKeyName": "Invalid key name", - "failedCreateKey": "Failed to create key", - "failedCreateKeyRetry": "Failed to create key. Please try again.", - "invalidKeyId": "Invalid key ID", - "failedDeleteKey": "Failed to delete key", - "failedDeleteKeyRetry": "Failed to delete key. Please try again.", - "invalidModelsSelection": "Invalid models selection", - "cannotSelectMoreThanModels": "Cannot select more than {max} models", - "failedUpdatePermissions": "Failed to update permissions", - "failedUpdatePermissionsRetry": "Failed to update permissions. Please try again.", - "unknownProvider": "unknown", - "copyMaskedKey": "Copy masked key", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyActive": "కీ సక్రియంగా ఉంది", + "keyActiveDesc": "ఈ API కీని ప్రారంభించండి లేదా నిలిపివేయండి. నిలిపివేసిన కీలు వెంటనే 403తో తిరస్కరించబడతాయి.", + "accessSchedule": "యాక్సెస్ షెడ్యూల్", + "accessScheduleDesc": "వారంలోని నిర్దిష్ట గంటలు మరియు రోజులకు యాక్సెస్ను పరిమితం చేయండి.", + "scheduleFrom": "నుండి", + "scheduleUntil": "వరకు", + "scheduleDays": "రోజులు", + "scheduleTimezone": "సమయ మండలం", + "scheduleTimezoneHint": "IANA సమయ మండల పేర్లను ఉపయోగించండి, ఉదా. America/New_York, Europe/Berlin", + "scheduleActive": "షెడ్యూల్", + "disabled": "నిలిపివేయబడింది", + "daySun": "ఆది", + "dayMon": "సోమ", + "dayTue": "మంగళ", + "dayWed": "బుధ", + "dayThu": "గురు", + "dayFri": "శుక్ర", + "daySat": "శని", + "allowAll": "అన్నింటినీ అనుమతించు", + "restrict": "పరిమితం చేయి", + "allowAllInfo": "ఈ కీ అందుబాటులో ఉన్న అన్ని మోడల్లను యాక్సెస్ చేయగలదు.", + "restrictInfo": "ఈ కీ {total} మోడల్లలో {selected} మోడల్లను యాక్సెస్ చేయగలదు.", + "selected": "{count} ఎంపిక చేయబడ్డాయి", + "all": "అన్నీ", + "clear": "క్లియర్ చేయి", + "searchModels": "పేరు లేదా ప్రొవైడర్ ఆధారంగా మోడల్లను వెతకండి...", + "noModelsFound": "మోడల్లు ఏవీ కనుగొనబడలేదు", + "keyNameRequired": "కీ పేరు అవసరం", + "keyNameTooLong": "కీ పేరు తప్పనిసరిగా {max} అక్షరాలు లేదా అంతకంటే తక్కువగా ఉండాలి", + "keyNameInvalid": "కీ పేరులో అక్షరాలు, సంఖ్యలు, ఖాళీలు, హైఫన్లు మరియు అండర్స్కోర్లు మాత్రమే ఉండాలి", + "invalidKeyName": "చెల్లని కీ పేరు", + "failedCreateKey": "కీని సృష్టించడం విఫలమైంది", + "failedCreateKeyRetry": "కీని సృష్టించడం విఫలమైంది. దయచేసి మళ్లీ ప్రయత్నించండి.", + "invalidKeyId": "చెల్లని కీ ID", + "failedDeleteKey": "కీని తొలగించడం విఫలమైంది", + "failedDeleteKeyRetry": "కీని తొలగించడం విఫలమైంది. దయచేసి మళ్లీ ప్రయత్నించండి.", + "invalidModelsSelection": "చెల్లని మోడల్ల ఎంపిక", + "cannotSelectMoreThanModels": "{max} కంటే ఎక్కువ మోడల్లను ఎంచుకోలేరు", + "failedUpdatePermissions": "అనుమతులను నవీకరించడం విఫలమైంది", + "failedUpdatePermissionsRetry": "అనుమతులను నవీకరించడం విఫలమైంది. దయచేసి మళ్లీ ప్రయత్నించండి.", + "unknownProvider": "తెలియదు", + "copyMaskedKey": "మాస్క్ చేసిన కీని కాపీ చేయండి", + "keyOnlyAvailableAtCreation": "పూర్తి కీ సృష్టించే సమయంలో మాత్రమే అందుబాటులో ఉంటుంది — కీని మొదటిసారి సృష్టించినప్పుడు దాన్ని కాపీ చేయండి", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# పరికరం} other {# పరికరాలు}}", "devicesTooltip": "{count, plural, one {ఈ కీతో కనిపించిన # విభిన్న IP/User-Agent పరికరం (చివరి 30 నిమిషాలు)} other {ఈ కీతో కనిపించిన # విభిన్న IP/User-Agent పరికరాలు (చివరి 30 నిమిషాలు)}}", - "lastUsedOn": "Last: {date}", + "lastUsedOn": "చివరిది: {date}", "viewCostsFor": "{name} కోసం ఖర్చులను వీక్షించండి", - "editPermissions": "Edit permissions", - "deleteKey": "Delete key", + "editPermissions": "అనుమతులను సవరించండి", + "deleteKey": "కీని తొలగించండి", "regenerateKey": "పునరుత్పత్తి కీ", "regenerateConfirm": "మీరు ఖచ్చితంగా ఈ API కీని రీజెనరేట్ చేయాలనుకుంటున్నారా? పాత కీ వెంటనే చెల్లదు.", "failedRegenerateKey": "API కీని రీజెనరేట్ చేయడంలో విఫలమైంది", "failedRegenerateKeyRetry": "API కీని రీజెనరేట్ చేయడంలో విఫలమైంది. దయచేసి మళ్లీ ప్రయత్నించండి.", - "model": "{count} model", - "models": "{count} models", - "permissionsTitle": "Permissions: {name}", - "allowAllDesc": "This key can access all available models.", + "model": "{count} మోడల్", + "models": "{count} మోడళ్లు", + "permissionsTitle": "అనుమతులు: {name}", + "allowAllDesc": "ఈ కీ అందుబాటులో ఉన్న అన్ని మోడళ్లను యాక్సెస్ చేయగలదు.", "restrictLoading": "మోడల్ కేటలాగ్‌ను లోడ్ చేస్తోంది…", "restrictCatalogUnavailable": "మోడల్ కేటలాగ్ అందుబాటులో లేదు; ఈ కీకి {selectedCount} ఎంచుకున్న మోడల్ పరిమితులు ఉన్నాయి.", - "restrictDesc": "This key can access {selectedCount} of {totalModels} models.", - "selectedCount": "{count} selected", + "restrictDesc": "ఈ కీ {totalModels} మోడళ్లలో {selectedCount} మోడళ్లను యాక్సెస్ చేయగలదు.", + "selectedCount": "{count} ఎంచుకోబడ్డాయి", "maxActiveSessions": "గరిష్ట క్రియాశీల సెషన్‌లు", "maxActiveSessionsDescription": "0 = అపరిమితం. ఈ కీ ఏకకాల స్టిక్కీ సెషన్‌లను మించినప్పుడు 429ని తిరిగి పంపండి.", "throttleDelay": "థ్రోటిల్ ఆలస్యం", @@ -2382,12 +2382,12 @@ "allowedCombos": "అనుమతించబడిన కాంబోలు", "allCombosAllowed": "ఈ కీ ఏ కాంబోనైనా ఉపయోగించవచ్చు.", "restrictedComboCount": "{count, plural, one {# కాంబో} other {# కాంబోలు}}కి పరిమితం చేయబడింది.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# నిల్వ చేసిన ఎంట్రీ ఈ కాంబో జాబితాలో లేదు (ఉదాహరణకు, రూటింగ్ నియమాలు), అది సేవ్ చేసినట్లే ఉంచబడుతుంది.} other {# నిల్వ చేసిన ఎంట్రీలు ఈ కాంబో జాబితాలో లేవు (ఉదాహరణకు, రూటింగ్ నియమాలు), అవి సేవ్ చేసినట్లే ఉంచబడతాయి.}}", + "preservedComboRuleHint": "నిల్వ చేసినట్లే ఉంచబడింది. ఈ ఎంట్రీ పైన ఉన్న జాబితాలోని కాంబో కాదు, కాబట్టి దీన్ని API ద్వారా మాత్రమే మార్చవచ్చు.", "apiManagerCustomRateLimits": "కస్టమ్ రేట్ పరిమితులు", "apiManagerCustomRateLimitsDesc": "గ్లోబల్ డిఫాల్ట్ పరిమితులను భర్తీ చేయండి. డిఫాల్ట్‌లను ఉపయోగించడానికి ఖాళీగా ఉంచండి.", "apiManagerRateLimitRequestsPlaceholder": "అభ్యర్థనలు", - "apiManagerRateLimitReqPer": "req /", + "apiManagerRateLimitReqPer": "అభ్యర్థనలు /", "apiManagerRateLimitSecondsPlaceholder": "సెకన్లు", "apiManagerRemoveLimitTitle": "పరిమితిని తీసివేయండి", "apiManagerTimezonePlaceholder": "అమెరికా/సావో_పాలో", @@ -2399,8 +2399,8 @@ "allowedConnections": "అనుమతించబడిన కనెక్షన్లు", "searchPlaceholder": "పేరు లేదా టోకెన్ ద్వారా శోధించండి...", "activeOnly": "యాక్టివ్‌గా ఉన్నవి మాత్రమే", - "filterStatus": "STATUS", - "filterType": "TYPE", + "filterStatus": "స్థితి", + "filterType": "రకం", "filterAll": "అన్నీ", "filterStatusActive": "యాక్టివ్", "filterStatusDisabled": "నిలిపివేయబడింది", @@ -2419,52 +2419,52 @@ "bypassProviderQuota": "ప్రొవైడర్ కోటా పరిమితులను దాటవేయండి", "bypassProviderQuotaDescription": "రూటింగ్ సమయంలో అప్‌స్ట్రీమ్ ప్రొవైడర్/ఖాతా పరిమితి విధానాన్ని విస్మరించడానికి ఈ కీని అనుమతిస్తుంది. API కీ USD కోటాలు ఇప్పటికీ వర్తిస్తాయి.", "quotaPill": "కోటా", - "quotaModeOnly": "qtSd-only", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "quotaModeOnly": "qtSd మాత్రమే", + "exclusiveLease": "ప్రత్యేక లీజ్", + "exclusiveLeaseNoticeTitle": "ప్రత్యేక లీజ్", + "exclusiveLeaseNoticeDesc": "ప్రత్యేక కనెక్షన్ రూటింగ్ కోసం ఈ API కీకి ప్రత్యేక లీజ్ అనుమతులు ఉన్నాయి.", + "allConnections": "అన్ని కనెక్షన్లు", + "onlySelectedConnections": "ఎంచుకున్న కనెక్షన్లు మాత్రమే", + "selectAtLeastOneConnection": "కనీసం ఒక కనెక్షన్ను ఎంచుకోండి లేదా అన్ని కనెక్షన్లను ఎంచుకోండి.", + "allConnectionsDesc": "ఈ కీ ఏ క్రియాశీల కనెక్షన్నైనా ఉపయోగించగలదు.", + "restrictedToConnections": "{count, plural, one {# కనెక్షన్కు} other {# కనెక్షన్లకు}} పరిమితం చేయబడింది." }, "auditLog": { - "title": "Audit Log", - "searchPlaceholder": "Search actions...", - "action": "Action", - "actor": "Actor", - "target": "Target", - "ipAddress": "IP Address", - "timestamp": "Timestamp", - "noEntries": "No audit entries found", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", + "title": "ఆడిట్ లాగ్", + "searchPlaceholder": "చర్యలను వెతకండి...", + "action": "చర్య", + "actor": "చర్య చేసిన వ్యక్తి", + "target": "లక్ష్యం", + "ipAddress": "IP చిరునామా", + "timestamp": "సమయ ముద్ర", + "noEntries": "ఆడిట్ ఎంట్రీలు ఏవీ కనుగొనబడలేదు", + "filterByAction": "చర్య ఆధారంగా ఫిల్టర్ చేయండి...", + "filterByActor": "చర్య చేసిన వ్యక్తి ఆధారంగా ఫిల్టర్ చేయండి...", + "filterEntriesAria": "ఆడిట్ లాగ్ ఎంట్రీలను ఫిల్టర్ చేయండి", + "filterByActionTypeAria": "చర్య రకం ఆధారంగా ఫిల్టర్ చేయండి", + "filterByActorAria": "చర్య చేసిన వ్యక్తి ఆధారంగా ఫిల్టర్ చేయండి", + "refreshAuditLogAria": "ఆడిట్ లాగ్ను రిఫ్రెష్ చేయండి", + "tableAria": "ఆడిట్ లాగ్ నమోదులు", + "failedFetchAuditLog": "ఆడిట్ లాగ్ను పొందడంలో విఫలమైంది", "notAvailable": "—", - "description": "Administrative actions and security events", - "showing": "Showing {count} entries (offset {offset})", - "previous": "Previous" + "description": "పరిపాలనా చర్యలు మరియు భద్రతా సంఘటనలు", + "showing": "{count} నమోదులు చూపబడుతున్నాయి (ఆఫ్సెట్ {offset})", + "previous": "మునుపటి" }, "media": { - "title": "Media Playground", - "subtitle": "Generate images, videos, and music", + "title": "మీడియా ప్లేగ్రౌండ్", + "subtitle": "చిత్రాలు, వీడియోలు మరియు సంగీతాన్ని రూపొందించండి", "model": "Model", "prompt": "Prompt", - "generate": "Generate", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generate": "రూపొందించు", + "generating": "రూపొందించబడుతోంది...", + "loadingModels": "అందుబాటులో ఉన్న మోడల్లు లోడ్ అవుతున్నాయి...", + "noModels": "మోడల్లు ఏవీ అందుబాటులో లేవు. ముందుగా మీడియా సామర్థ్యాలు గల ప్రొవైడర్లను కాన్ఫిగర్ చేయండి.", + "error": "రూపొందించడం విఫలమైంది", + "result": "ఫలితం", + "imageDescription": "OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI మరియు మరిన్నింటిని ఉపయోగించి టెక్స్ట్ ప్రాంప్ట్ల నుండి చిత్రాలను రూపొందించండి.", + "videoDescription": "ComfyUI లేదా SD WebUI ద్వారా AnimateDiff, Stable Video Diffusionతో వీడియోలను సృష్టించండి.", + "musicDescription": "ComfyUI ద్వారా Stable Audio Open లేదా MusicGenను ఉపయోగించి సంగీతాన్ని స్వరపరచండి.", "kinds": { "embedding": "ఎంబెడ్డింగ్", "image": "చిత్రం", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter స్పీచ్-టు-టెక్స్ట్ మోడల్స్ మీ కాన్ఫిగర్ చేసిన OpenRouter కనెక్షన్‌ను ఉపయోగిస్తాయి. ప్రత్యేకమైన క్రెడెన్షియల్ అవసరం లేదు." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "శోధన ప్రశ్న", + "searchResults": "శోధన ఫలితాలు", + "cachedResult": "క్యాష్ చేయబడింది", + "searchCost": "ఖర్చు", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "ప్రొవైడర్ పోలికతో అధునాతన శోధన పరీక్ష", + "compareProviders": "ప్రొవైడర్లను పోల్చండి", + "rerankResults": "ఫలితాలకు పునఃర్యాంక్ ఇవ్వండి", + "searchHistory": "శోధన చరిత్ర", + "urlOverlap": "URL అతివ్యాప్తి", + "noSearchProviders": "శోధన ప్రొవైడర్లు ఏవీ కాన్ఫిగర్ చేయబడలేదు. Settingsలో ప్రొవైడర్లను జోడించండి.", + "noRerankModels": "పునఃర్యాంక్ మోడల్ అందుబాటులో లేదు", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "ప్రొవైడర్", + "searchType": "శోధన రకం", + "maxResults": "గరిష్ఠ ఫలితాలు", + "filters": "ఫిల్టర్లు", + "country": "దేశం", + "language": "భాష", + "timeRange": "కాల పరిధి", + "includeDomains": "డొమైన్లను చేర్చండి", + "excludeDomains": "డొమైన్లను మినహాయించండి", + "safeSearch": "సురక్షిత శోధన", + "safeSearchOff": "ఆఫ్", + "safeSearchModerate": "మధ్యస్థం", + "safeSearchStrict": "కఠినం", + "queryPlaceholder": "శోధన ప్రశ్నను నమోదు చేయండి...", + "providerAuto": "స్వయంచాలకం (అత్యంత చౌకైనది)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "వార్తలు", + "optionAny": "ఏదైనా", + "timeRangeDay": "గత రోజు", + "timeRangeWeek": "గత వారం", + "timeRangeMonth": "గత నెల", + "timeRangeYear": "గత సంవత్సరం", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "అభ్యర్థన సమయం ముగిసింది ({seconds}s)", + "networkError": "నెట్వర్క్ లోపం", + "formatted": "ఫార్మాట్ చేయబడింది", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "క్యాష్లో లభించలేదు", + "cacheHit": "క్యాష్లో లభించింది", + "latency": "జాప్యం", + "cost": "ఖర్చు", + "results": "ఫలితాలు", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "పునఃక్రమీకరణ మోడల్", + "positionDelta": "స్థాన మార్పు", + "emptyState": "ఫలితాలను చూడటానికి శోధన ప్రశ్నను పంపండి", "copy": "కాపీ చేయండి", "resetToDefault": "డిఫాల్ట్‌కి రీసెట్ చేయండి", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "శోధించండి", + "tabScrape": "స్క్రాప్ చేయండి", + "tabCompare": "పోల్చండి", + "modalitiesGuide": "మోడాలిటీల మార్గదర్శిని", + "searchConceptTitle": "శోధన", + "searchConceptDesc": "శోధన = వెబ్ ఫలితాల జాబితాను పొందుతుంది (శీర్షిక, URL, సారాంశం, సంబంధితత స్కోరు)", + "scrapeConceptTitle": "స్క్రాప్", + "scrapeConceptDesc": "స్క్రాప్ = URL యొక్క పూర్తి కంటెంట్ను సంగ్రహిస్తుంది (markdown, టెక్స్ట్ లేదా HTML)", + "compareConceptTitle": "పోలిక", + "compareConceptDesc": "పోలిక = జాప్యం, ఖర్చు మరియు ఫలితాల అతివ్యాప్తిని పోల్చడానికి ఒకే ప్రశ్నను N ప్రొవైడర్లలో పక్కపక్కనే అమలు చేస్తుంది", + "rerankConceptTitle": "పునఃక్రమీకరణ", + "rerankConceptDesc": "పునఃక్రమీకరణ = ప్రశ్న ఆధారంగా సంబంధితతను మెరుగుపరచడానికి LLM ద్వారా ఫలితాలను మళ్లీ క్రమబద్ధీకరిస్తుంది", + "autoConceptTitle": "స్వయంచాలకం (అత్యంత చౌకైనది)", + "autoConceptDesc": "స్వయంచాలకం (అత్యంత చౌకైనది) = కాన్ఫిగర్ చేసిన క్రెడెన్షియల్స్తో అందుబాటులో ఉన్న అత్యంత చౌకైన ప్రొవైడర్ను స్వయంచాలకంగా ఎంచుకుంటుంది", + "providerCatalogTitle": "ప్రొవైడర్ కేటలాగ్", + "kindSearch": "శోధన", + "kindFetch": "పొందడం/స్క్రాప్ చేయడం", + "statusConfigured": "కాన్ఫిగర్ చేయబడింది", + "statusMissing": "క్రెడెన్షియల్ లేదు", + "statusRateLimited": "రేట్ పరిమితం చేయబడింది", + "configureProvider": "ప్రొవైడర్లలో కాన్ఫిగర్ చేయండి", + "loadingProviders": "ప్రొవైడర్లు లోడ్ అవుతున్నారు…", + "failedToLoadProviders": "ప్రొవైడర్లను లోడ్ చేయడం విఫలమైంది", + "costPerQuery": "ఒక్కో క్వెరీకి ఖర్చు", + "freeQuota": "నెలకు ఉచిత కోటా", + "scrapeUrl": "స్క్రాప్ చేయాల్సిన URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL అవసరం", "scrapeUrlInvalid": "చెల్లని URL — ఇది తప్పనిసరిగా http:// లేదా https:// తో ప్రారంభం కావాలి", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", - "formatMarkdown": "Markdown", + "scrapeExtract": "సేకరించండి", + "scrapeExtracting": "సేకరిస్తోంది…", + "scrapeFullPage": "పూర్తి పేజీ", + "scrapeFormat": "ఫార్మాట్", + "formatMarkdown": "మార్క్డౌన్", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "టెక్స్ట్", + "scrapePreview": "ప్రివ్యూ", + "scrapeRaw": "రా", + "scrapeContentTruncated": "(కుదించబడింది, రాను చూడండి)", + "scrapeMetadata": "మెటాడేటా", + "scrapeProvider": "ప్రొవైడర్", + "scrapeSize": "పరిమాణం", "scrapeEmptyState": "దాని కంటెంట్‌ను సంగ్రహించడానికి ఒక URLని నమోదు చేయండి", "scrapeProvidersAvailable": "అందుబాటులో ఉన్న ప్రొవైడర్లు: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "సరిపోల్చండి", + "compareRunning": "సరిపోలుస్తోంది…", + "autoProvider": "ఆటో (అత్యంత చౌకైనది)", + "configuredStatus": "కాన్ఫిగర్ చేయబడింది", + "rateLimitedStatus": "రేట్ పరిమితం చేయబడింది", + "noCredential": "క్రెడెన్షియల్ లేదు", + "searchTypeLabel": "రకం", + "rerankModelLabel": "రీర్యాంక్ మోడల్", + "noneOption": "ఏదీ లేదు", + "size": "పరిమాణం", "configurationPane": "కాన్ఫిగరేషన్ పేన్", "configuration": "కాన్ఫిగరేషన్", "status": "స్థితి", @@ -2701,7 +2701,7 @@ "compareEmptyDescription": "లేటెన్సీ, ఖర్చు మరియు URL ఓవర్‌లాప్‌తో ఫలితాలు పక్కపక్కనే చూపబడతాయి" }, "cliTools": { - "title": "CLI Tools", + "title": "CLI సాధనాలు", "classifierCompatTitle": "ఆటో-పర్మిషన్ క్లాసిఫైయర్ అనుకూలత", "classifierCompatDescription": "ఫాల్‌బ్యాక్ రూట్‌లు ఫెయిల్ క్లోజ్ కాకుండా ఉండేందుకు సింథటిక్ అలౌ రెస్పాన్స్‌తో Claude Code యొక్క --permission-mode auto సెక్యూరిటీ క్లాసిఫైయర్‌ను షార్ట్-సర్క్యూట్ చేయండి. డిఫాల్ట్‌గా ఆఫ్ చేయబడి ఉంటుంది.", "classifierCompatCycle": "సైకిల్: ఆఫ్ → ఆటో → ఎల్లప్పుడూ", @@ -2727,14 +2727,14 @@ "codexProfilesDescription": "మోడల్ డిస్కవరీ తర్వాత ~/.codex/*.config.tomlని మళ్లీ రూపొందించండి.", "claudeProfiles": "Claude Code ప్రొఫైల్స్", "claudeProfilesDescription": "మోడల్ డిస్కవరీ తర్వాత ప్రతి ~/.claude/profiles/…/settings.jsonని మళ్లీ రూపొందించండి.", - "noActiveProviders": "No active providers", - "noActiveProvidersDesc": "Please add and connect providers first to configure CLI tools.", - "mapModels": "Map Models", - "testConnection": "Test Connection", - "connectionStatus": "Connection Status", - "configureEndpoint": "Configure Endpoint", - "instructions": "Instructions", - "modelMapping": "Model Mapping", + "noActiveProviders": "యాక్టివ్ ప్రొవైడర్లు లేరు", + "noActiveProvidersDesc": "CLI సాధనాలను కాన్ఫిగర్ చేయడానికి ముందుగా ప్రొవైడర్లను జోడించి, కనెక్ట్ చేయండి.", + "mapModels": "మోడళ్లను మ్యాప్ చేయండి", + "testConnection": "కనెక్షన్ను పరీక్షించండి", + "connectionStatus": "కనెక్షన్ స్థితి", + "configureEndpoint": "ఎండ్పాయింట్ను కాన్ఫిగర్ చేయండి", + "instructions": "సూచనలు", + "modelMapping": "మోడల్ మ్యాపింగ్", "reasoningEffort": "{model} కోసం రీజనింగ్ ఎఫర్ట్", "effortNone": "ఏదీ లేదు", "effortLow": "తక్కువ", @@ -2747,62 +2747,62 @@ "modelAliases": "మోడల్ మారుపేర్లు", "addModel": "మోడల్‌ను జోడించండి", "routeModelPlaceholder": "{model}ను దీనికి రూట్ చేయండి...", - "baseUrl": "Base URL", - "apiKey": "API Key", - "configured": "Configured", - "notConfigured": "Not configured", - "notInstalled": "Not installed", - "custom": "Custom", - "unknown": "Unknown", - "lastSavedAt": "Last saved: {date}", - "never": "Never", - "justNow": "just now", - "minutesAgoShort": "{count}m ago", - "hoursAgoShort": "{count}h ago", - "daysAgoShort": "{count}d ago", - "monthsAgoShort": "{count}mo ago", - "yearsAgoShort": "{count}y ago", - "runtimeCheckFailed": "Runtime check failed", + "baseUrl": "బేస్ URL", + "apiKey": "API కీ", + "configured": "కాన్ఫిగర్ చేయబడింది", + "notConfigured": "కాన్ఫిగర్ చేయబడలేదు", + "notInstalled": "ఇన్స్టాల్ చేయబడలేదు", + "custom": "అనుకూలం", + "unknown": "తెలియదు", + "lastSavedAt": "చివరిగా సేవ్ చేసినది: {date}", + "never": "ఎప్పుడూ లేదు", + "justNow": "ఇప్పుడే", + "minutesAgoShort": "{count} నిమిషాల క్రితం", + "hoursAgoShort": "{count} గంటల క్రితం", + "daysAgoShort": "{count} రోజుల క్రితం", + "monthsAgoShort": "{count} నెలల క్రితం", + "yearsAgoShort": "{count} సంవత్సరాల క్రితం", + "runtimeCheckFailed": "రన్టైమ్ తనిఖీ విఫలమైంది", "yourApiKeyPlaceholder": "your-api-key", "modelPlaceholder": "provider/model-id", - "configurationSaved": "Configuration saved successfully.", - "failedToSave": "Failed to save configuration.", - "noApiKeysCreateOne": "No API keys - Create one in Keys page", - "defaultOmnirouteKey": "sk_omniroute (default)", - "selectModel": "Select Model", - "selectModelForAlias": "Select model for {alias}", - "selectModelForTool": "Select Model for {tool}", - "select": "Select", - "clear": "Clear", - "comingSoon": "Coming soon", - "checkingRuntime": "Checking runtime status...", - "guideOnlyIntegration": "Guide-only integration (no local runtime required)", - "cliRuntimeDetected": "CLI runtime detected and ready", - "cliFoundNotRunnable": "CLI found but not runnable{reason}", - "cliRuntimeNotDetected": "CLI runtime not detected", - "binary": "Binary", - "configPath": "Config path", - "configPathShort": "Config", - "failedCheckRuntimeStatus": "Failed to check runtime status.", - "copy": "Copy", - "copied": "Copied", - "copyConfig": "Copy Config", - "saveConfig": "Save Config", - "selectionSaved": "Selection saved", - "guide": "Guide", - "detected": "Detected", - "notReady": "Not ready", - "active": "Active", - "inactive": "Inactive", + "configurationSaved": "కాన్ఫిగరేషన్ విజయవంతంగా సేవ్ చేయబడింది.", + "failedToSave": "కాన్ఫిగరేషన్ను సేవ్ చేయడం విఫలమైంది.", + "noApiKeysCreateOne": "API కీలు లేవు - Keys పేజీలో ఒకదాన్ని సృష్టించండి", + "defaultOmnirouteKey": "sk_omniroute (డిఫాల్ట్)", + "selectModel": "మోడల్ను ఎంచుకోండి", + "selectModelForAlias": "{alias} కోసం మోడల్ను ఎంచుకోండి", + "selectModelForTool": "{tool} కోసం మోడల్ను ఎంచుకోండి", + "select": "ఎంచుకోండి", + "clear": "క్లియర్ చేయండి", + "comingSoon": "త్వరలో అందుబాటులోకి వస్తుంది", + "checkingRuntime": "రన్టైమ్ స్థితిని తనిఖీ చేస్తోంది...", + "guideOnlyIntegration": "మార్గదర్శిని-మాత్రమే ఇంటిగ్రేషన్ (లోకల్ రన్టైమ్ అవసరం లేదు)", + "cliRuntimeDetected": "CLI రన్టైమ్ గుర్తించబడింది మరియు సిద్ధంగా ఉంది", + "cliFoundNotRunnable": "CLI కనుగొనబడింది కానీ అమలు చేయడం సాధ్యం కాదు{reason}", + "cliRuntimeNotDetected": "CLI రన్టైమ్ గుర్తించబడలేదు", + "binary": "బైనరీ", + "configPath": "కాన్ఫిగ్ పాత్", + "configPathShort": "కాన్ఫిగ్", + "failedCheckRuntimeStatus": "రన్టైమ్ స్థితిని తనిఖీ చేయడం విఫలమైంది.", + "copy": "కాపీ చేయండి", + "copied": "కాపీ చేయబడింది", + "copyConfig": "కాన్ఫిగ్ను కాపీ చేయి", + "saveConfig": "కాన్ఫిగ్ను సేవ్ చేయి", + "selectionSaved": "ఎంపిక సేవ్ చేయబడింది", + "guide": "మార్గదర్శిని", + "detected": "గుర్తించబడింది", + "notReady": "సిద్ధంగా లేదు", + "active": "సక్రియం", + "inactive": "నిష్క్రియం", "startMitm": "Start MITM", "stopMitm": "Stop MITM", - "mitmStarted": "MITM started successfully!", - "mitmStopped": "MITM stopped successfully!", - "failedStart": "Failed to start MITM", - "failedStop": "Failed to stop MITM", - "saveMappings": "Save Mappings", - "mappingsSaved": "Mappings saved!", - "failedSaveMappings": "Failed to save mappings", + "mitmStarted": "MITM విజయవంతంగా ప్రారంభించబడింది!", + "mitmStopped": "MITM విజయవంతంగా ఆపివేయబడింది!", + "failedStart": "MITMను ప్రారంభించడం విఫలమైంది", + "failedStop": "MITMను ఆపివేయడం విఫలమైంది", + "saveMappings": "మ్యాపింగ్లను సేవ్ చేయి", + "mappingsSaved": "మ్యాపింగ్లు సేవ్ చేయబడ్డాయి!", + "failedSaveMappings": "మ్యాపింగ్లను సేవ్ చేయడం విఫలమైంది", "reasoningEffortDefault": "డిఫాల్ట్", "reasoningEffortHint": "డిఫాల్ట్ అనేది ఏజెంట్ పంపిన రీజనింగ్ ఎఫర్ట్‌ను అలాగే ఉంచుతుంది", "reasoningEffortTier": { @@ -2812,130 +2812,130 @@ "high": "ఎక్కువ", "xhigh": "XHigh" }, - "howItWorks": "How it works:", - "antigravityHowWorksDesc": "Antigravity sends requests to Google's endpoint. MITM intercepts and redirects them to OmniRoute.", - "antigravityStep1": "1. Start MITM to route requests through OmniRoute.", - "antigravityStep2Prefix": "2. Add", - "antigravityStep2Suffix": "to your hosts file as 127.0.0.1.", - "antigravityStep3": "3. Open Antigravity and requests will be proxied.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", - "sudoPasswordRequiredTitle": "Sudo Password Required", - "sudoPasswordHint": "Administrator password is required to modify hosts file and system proxy settings.", - "enterSudoPassword": "Enter sudo password", - "sudoPasswordRequiredError": "Sudo password is required.", - "cancel": "Cancel", - "confirm": "Confirm", - "settingsApplied": "Settings applied successfully!", - "failedApplySettings": "Failed to apply settings", - "settingsReset": "Settings reset successfully!", - "failedResetSettings": "Failed to reset settings", - "backupRestored": "Backup restored!", - "failedRestore": "Failed to restore", - "checkingCli": "Checking {tool} CLI...", - "cliNotRunnable": "{tool} CLI installed but not runnable", - "cliNotInstalled": "{tool} CLI not installed", - "cliNotDetected": "{tool} CLI not detected", - "cliDetectedReady": "{tool} CLI detected and ready", - "cliFoundFailedHealthcheck": "{tool} CLI was found but failed runtime healthcheck{reason}.", - "installCliPrompt": "Please install {tool} CLI to use this feature.", - "installCodexPrompt": "Please install Codex CLI to use auto-apply feature.", - "hide": "Hide", - "howToInstall": "How to Install", - "installationGuide": "Installation Guide", + "howItWorks": "ఇది ఎలా పనిచేస్తుంది:", + "antigravityHowWorksDesc": "Antigravity Google ఎండ్పాయింట్కు అభ్యర్థనలను పంపుతుంది. MITM వాటిని అడ్డగించి OmniRouteకు మళ్లిస్తుంది.", + "antigravityStep1": "1. అభ్యర్థనలను OmniRoute ద్వారా రూట్ చేయడానికి MITMను ప్రారంభించండి.", + "antigravityStep2Prefix": "2. మీ hosts ఫైల్కు", + "antigravityStep2Suffix": "ను 127.0.0.1గా జోడించండి.", + "antigravityStep3": "3. Antigravityని తెరవండి, అభ్యర్థనలు ప్రాక్సీ చేయబడతాయి.", + "mitmHowWorksDesc": "{toolName} తన ప్రొవైడర్ ఎండ్పాయింట్కు అభ్యర్థనలను పంపుతుంది. MITM వాటిని అడ్డగించి OmniRouteకు మళ్లిస్తుంది.", + "mitmStep1": "1. అభ్యర్థనలను OmniRoute ద్వారా రూట్ చేయడానికి MITMను ప్రారంభించండి.", + "mitmStep2Prefix": "2. మీ hosts ఫైల్కు", + "mitmStep2Suffix": "ను 127.0.0.1గా జోడించండి.", + "mitmStep3": "3. {toolName}ను తెరవండి, అభ్యర్థనలు ప్రాక్సీ చేయబడతాయి.", + "sudoPasswordRequiredTitle": "Sudo పాస్వర్డ్ అవసరం", + "sudoPasswordHint": "hosts ఫైల్ మరియు సిస్టమ్ ప్రాక్సీ సెట్టింగ్లను మార్చడానికి నిర్వాహకుని పాస్వర్డ్ అవసరం.", + "enterSudoPassword": "sudo పాస్వర్డ్ను నమోదు చేయండి", + "sudoPasswordRequiredError": "Sudo పాస్వర్డ్ అవసరం.", + "cancel": "రద్దు చేయి", + "confirm": "నిర్ధారించు", + "settingsApplied": "సెట్టింగ్లు విజయవంతంగా వర్తింపజేయబడ్డాయి!", + "failedApplySettings": "సెట్టింగ్లను వర్తింపజేయడం విఫలమైంది", + "settingsReset": "సెట్టింగ్లు విజయవంతంగా రీసెట్ చేయబడ్డాయి!", + "failedResetSettings": "సెట్టింగ్లను రీసెట్ చేయడం విఫలమైంది", + "backupRestored": "బ్యాకప్ పునరుద్ధరించబడింది!", + "failedRestore": "పునరుద్ధరించడం విఫలమైంది", + "checkingCli": "{tool} CLIని తనిఖీ చేస్తోంది...", + "cliNotRunnable": "{tool} CLI ఇన్స్టాల్ చేయబడింది, కానీ అమలు చేయడం సాధ్యం కాదు", + "cliNotInstalled": "{tool} CLI ఇన్స్టాల్ చేయబడలేదు", + "cliNotDetected": "{tool} CLI గుర్తించబడలేదు", + "cliDetectedReady": "{tool} CLI గుర్తించబడింది మరియు సిద్ధంగా ఉంది", + "cliFoundFailedHealthcheck": "{tool} CLI కనుగొనబడింది, కానీ రన్టైమ్ ఆరోగ్య తనిఖీలో విఫలమైంది{reason}.", + "installCliPrompt": "ఈ ఫీచర్ను ఉపయోగించడానికి దయచేసి {tool} CLIని ఇన్స్టాల్ చేయండి.", + "installCodexPrompt": "ఆటో-అప్లై ఫీచర్ను ఉపయోగించడానికి దయచేసి Codex CLIని ఇన్స్టాల్ చేయండి.", + "hide": "దాచు", + "howToInstall": "ఇన్స్టాల్ చేసే విధానం", + "installationGuide": "ఇన్స్టాలేషన్ గైడ్", "platforms": "macOS / Linux / Windows:", - "afterInstallationRun": "After installation, run", - "toVerify": "to verify.", - "current": "Current", + "afterInstallationRun": "ఇన్స్టాలేషన్ తర్వాత, అమలు చేయండి", + "toVerify": "ధృవీకరించడానికి.", + "current": "ప్రస్తుతం ఉన్నది", "baseUrlPlaceholder": "https://.../v1", - "resetToDefault": "Reset to default", + "resetToDefault": "డిఫాల్ట్కు రీసెట్ చేయి", "providerModelPlaceholder": "provider/model-id", - "apply": "Apply", - "reset": "Reset", - "manualConfig": "Manual Config", - "backups": "Backups", - "configBackups": "Config Backups", - "noBackupsYet": "No backups yet. Backups are created automatically before each Apply or Reset.", - "restore": "Restore", - "backupRestoredReloading": "Backup restored! Reloading status...", - "failedRestoreBackup": "Failed to restore backup", - "applied": "Applied!", - "failed": "Failed", - "resetDone": "Reset!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute is configured as OpenAI-compatible provider", - "provider": "Provider", + "apply": "వర్తింపజేయి", + "reset": "రీసెట్ చేయి", + "manualConfig": "మాన్యువల్ కాన్ఫిగ్", + "backups": "బ్యాకప్లు", + "configBackups": "కాన్ఫిగ్ బ్యాకప్లు", + "noBackupsYet": "ఇంకా బ్యాకప్లు లేవు. ప్రతి వర్తింపు లేదా రీసెట్కు ముందు బ్యాకప్లు స్వయంచాలకంగా సృష్టించబడతాయి.", + "restore": "పునరుద్ధరించు", + "backupRestoredReloading": "బ్యాకప్ పునరుద్ధరించబడింది! స్థితి మళ్లీ లోడ్ అవుతోంది...", + "failedRestoreBackup": "బ్యాకప్ను పునరుద్ధరించడం విఫలమైంది", + "applied": "వర్తింపజేయబడింది!", + "failed": "విఫలమైంది", + "resetDone": "రీసెట్ చేయబడింది!", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute, OpenAI-అనుకూల ప్రొవైడర్గా కాన్ఫిగర్ చేయబడింది", + "provider": "ప్రొవైడర్", "model": "Model", - "providers": "Providers", - "auth": "Auth", - "noApiKeysAvailable": "No API keys available", - "usingDefaultOmniroute": "Using default: sk_omniroute", - "updateConfig": "Update Config", - "applyConfig": "Apply Config", - "noBackupsAvailable": "No backups available.", - "profileSaved": "Profile \"{name}\" saved!", - "failedSaveProfile": "Failed to save profile", - "profileActivated": "Profile activated!", - "failedActivateProfile": "Failed to activate profile", - "profiles": "Profiles", - "savedProfiles": "Saved Profiles", - "noProfilesYet": "No profiles saved yet. Save current config as a profile below.", - "activate": "Activate", - "deleteProfile": "Delete profile", - "profileNamePlaceholder": "Profile name (e.g. Personal Account)", - "saveCurrent": "Save Current", - "codexAuthNotePrefix": "Codex uses", - "codexAuthNoteMiddle": "with", - "codexAuthNoteSuffix": "Click \"Apply\" to auto-configure.", - "claudeManualConfiguration": "Claude CLI - Manual Configuration", - "codexManualConfiguration": "Codex CLI - Manual Configuration", - "droidManualConfiguration": "Factory Droid - Manual Configuration", - "openClawManualConfiguration": "Open Claw - Manual Configuration", - "clineManualConfiguration": "Cline Manual Configuration", - "kiloManualConfiguration": "Kilo Code Manual Configuration", - "whenToUseLabel": "When to use", - "openToolDocs": "Open tool docs", + "providers": "ప్రొవైడర్లు", + "auth": "ప్రామాణీకరణ", + "noApiKeysAvailable": "API కీలు అందుబాటులో లేవు", + "usingDefaultOmniroute": "డిఫాల్ట్ను ఉపయోగిస్తోంది: sk_omniroute", + "updateConfig": "కాన్ఫిగ్ను అప్డేట్ చేయి", + "applyConfig": "కాన్ఫిగ్ను వర్తింపజేయి", + "noBackupsAvailable": "బ్యాకప్లు అందుబాటులో లేవు.", + "profileSaved": "ప్రొఫైల్ \"{name}\" సేవ్ చేయబడింది!", + "failedSaveProfile": "ప్రొఫైల్ను సేవ్ చేయడం విఫలమైంది", + "profileActivated": "ప్రొఫైల్ యాక్టివేట్ చేయబడింది!", + "failedActivateProfile": "ప్రొఫైల్ను యాక్టివేట్ చేయడం విఫలమైంది", + "profiles": "ప్రొఫైల్లు", + "savedProfiles": "సేవ్ చేసిన ప్రొఫైల్లు", + "noProfilesYet": "ఇంకా ప్రొఫైల్లు ఏవీ సేవ్ చేయలేదు. ప్రస్తుత కాన్ఫిగరేషన్ను దిగువన ప్రొఫైల్గా సేవ్ చేయండి.", + "activate": "సక్రియం చేయండి", + "deleteProfile": "ప్రొఫైల్ను తొలగించండి", + "profileNamePlaceholder": "ప్రొఫైల్ పేరు (ఉదా. వ్యక్తిగత ఖాతా)", + "saveCurrent": "ప్రస్తుతదాన్ని సేవ్ చేయండి", + "codexAuthNotePrefix": "Codex ఉపయోగించేది", + "codexAuthNoteMiddle": "దీనితో", + "codexAuthNoteSuffix": "స్వయంచాలకంగా కాన్ఫిగర్ చేయడానికి \"వర్తింపజేయి\"ని క్లిక్ చేయండి.", + "claudeManualConfiguration": "Claude CLI - మాన్యువల్ కాన్ఫిగరేషన్", + "codexManualConfiguration": "Codex CLI - మాన్యువల్ కాన్ఫిగరేషన్", + "droidManualConfiguration": "Factory Droid - మాన్యువల్ కాన్ఫిగరేషన్", + "openClawManualConfiguration": "Open Claw - మాన్యువల్ కాన్ఫిగరేషన్", + "clineManualConfiguration": "Cline మాన్యువల్ కాన్ఫిగరేషన్", + "kiloManualConfiguration": "Kilo Code మాన్యువల్ కాన్ఫిగరేషన్", + "whenToUseLabel": "ఎప్పుడు ఉపయోగించాలి", + "openToolDocs": "టూల్ డాక్యుమెంటేషన్ను తెరవండి", "toolUseCases": { - "claude": "Use when you want strong planning workflows and long multi-file refactors with Claude Code.", - "codex": "Use when your team is standardized on OpenAI Codex CLI flows and profile-based auth.", - "droid": "Use when you need a lightweight terminal agent focused on fast coding and command execution loops.", - "openclaw": "Use when you want an Open Claw style coding agent but routed through OmniRoute policies.", - "cline": "Use when you configure coding agents inside editors and want guided setup with OmniRoute models.", - "kilo": "Use when your workflow depends on Kilo Code commands and fast iterative edits.", - "cursor": "Use when coding in Cursor and you need custom OpenAI-compatible models through OmniRoute.", - "continue": "Use when running Continue in IDEs and you need portable JSON-based provider configuration.", - "opencode": "Use when you prefer terminal-native agent runs and scripted automation via OpenCode.", - "kiro": "Use when integrating Kiro and controlling model routing centrally from OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", - "antigravity": "Use when Antigravity/Kiro traffic must be intercepted through MITM and routed to OmniRoute.", - "copilot": "Use when you want Copilot chat style UX while enforcing OmniRoute keys and routing rules.", - "amp": "Use when you want Amp shorthand workflows but still need OmniRoute alias and routing rules enforcement.", - "hermes": "Use when you need a lightweight terminal-native AI assistant for quick tasks.", + "claude": "Claude Codeతో పటిష్ఠమైన ప్రణాళికా వర్క్ఫ్లోలు మరియు అనేక ఫైళ్లతో కూడిన దీర్ఘకాలిక రీఫ్యాక్టరింగ్ కావాలనుకున్నప్పుడు ఉపయోగించండి.", + "codex": "మీ బృందం OpenAI Codex CLI ఫ్లోలు మరియు ప్రొఫైల్-ఆధారిత ప్రామాణీకరణను ప్రామాణికంగా ఉపయోగిస్తున్నప్పుడు ఉపయోగించండి.", + "droid": "వేగవంతమైన కోడింగ్ మరియు కమాండ్ అమలు లూప్లపై దృష్టి పెట్టే తేలికపాటి టెర్మినల్ ఏజెంట్ అవసరమైనప్పుడు ఉపయోగించండి.", + "openclaw": "Open Claw శైలి కోడింగ్ ఏజెంట్ను OmniRoute విధానాల ద్వారా రూట్ చేసి ఉపయోగించాలనుకున్నప్పుడు ఉపయోగించండి.", + "cline": "ఎడిటర్లలో కోడింగ్ ఏజెంట్లను కాన్ఫిగర్ చేస్తూ, OmniRoute మోడళ్లతో మార్గదర్శిత సెటప్ కావాలనుకున్నప్పుడు ఉపయోగించండి.", + "kilo": "మీ వర్క్ఫ్లో Kilo Code కమాండ్లు మరియు వేగవంతమైన పునరావృత సవరణలపై ఆధారపడినప్పుడు ఉపయోగించండి.", + "cursor": "Cursorలో కోడింగ్ చేస్తున్నప్పుడు, OmniRoute ద్వారా అనుకూల OpenAI-సరిపోలిక మోడళ్లు అవసరమైతే ఉపయోగించండి.", + "continue": "IDEలలో Continueను అమలు చేస్తున్నప్పుడు, పోర్టబుల్ JSON-ఆధారిత ప్రొవైడర్ కాన్ఫిగరేషన్ అవసరమైతే ఉపయోగించండి.", + "opencode": "OpenCode ద్వారా టెర్మినల్-నేటివ్ ఏజెంట్ అమలులు మరియు స్క్రిప్ట్ చేసిన ఆటోమేషన్ను ఇష్టపడినప్పుడు ఉపయోగించండి.", + "kiro": "Kiroను సమీకరిస్తూ, OmniRoute నుంచి మోడల్ రూటింగ్ను కేంద్రీకృతంగా నియంత్రించాలనుకున్నప్పుడు ఉపయోగించండి.", + "windsurf": "Codeium/Windsurf మోడళ్లను OmniRoute ద్వారా రూట్ చేసే AI-ప్రాధాన్య IDE కావాలనుకున్నప్పుడు ఉపయోగించండి.", + "antigravity": "Antigravity/Kiro ట్రాఫిక్ను MITM ద్వారా అడ్డగించి OmniRouteకు రూట్ చేయాల్సినప్పుడు ఉపయోగించండి.", + "copilot": "OmniRoute కీలు మరియు రూటింగ్ నియమాలను అమలు చేస్తూనే Copilot చాట్ శైలి UX కావాలనుకున్నప్పుడు ఉపయోగించండి.", + "amp": "Amp సంక్షిప్త వర్క్ఫ్లోలు కావాలనుకున్నప్పటికీ, OmniRoute అలియాస్ మరియు రూటింగ్ నియమాల అమలు అవసరమైనప్పుడు ఉపయోగించండి.", + "hermes": "త్వరిత పనుల కోసం తేలికపాటి టెర్మినల్-నేటివ్ AI సహాయకుడు అవసరమైనప్పుడు ఉపయోగించండి.", "hermes-agent": "మీకు OmniRoute ద్వారా రూట్ చేయబడిన డిఫాల్ట్, డెలిగేషన్, విజన్ మరియు ఆక్సిలరీ మోడళ్లతో Hermes Agent (Nousresearch ద్వారా) అవసరమైనప్పుడు ఉపయోగించండి.", - "custom": "Use for custom tool implementations or generic OpenAI-compatible configurations." + "custom": "అనుకూల టూల్ అమలులు లేదా సాధారణ OpenAI-సరిపోలిక కాన్ఫిగరేషన్ల కోసం ఉపయోగించండి." }, "toolDescriptions": { - "antigravity": "Google Antigravity IDE with MITM", + "antigravity": "MITMతో Google Antigravity IDE", "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "కస్టమ్ ప్రొవైడర్ సపోర్ట్‌తో xAI Grok Build TUI కోడింగ్ ఏజెంట్", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Factory Droid AI సహాయకుడు", + "openclaw": "Open Claw AI సహాయకుడు", + "cline": "Cline AI కోడింగ్ సహాయక CLI", + "kilo": "Kilo Code AI సహాయక CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "continue": "Continue AI సహాయకుడు", + "opencode": "OpenCode AI కోడింగ్ ఏజెంట్ (టెర్మినల్)", + "kiro": "Amazon Kiro — AI ఆధారిత IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp కోడింగ్ సహాయక CLI", + "hermes": "Hermes AI టెర్మినల్ సహాయకం", "hermes-agent": "Hermes Agent (Nousresearch ద్వారా) - మల్టీ-మోడల్ సపోర్ట్‌తో కూడిన అధునాతన టెర్మినల్ AI (డెలిగేషన్, విజన్, కంప్రెషన్ మొదలైనవి)", - "custom": "Generic OpenAI-compatible CLI or SDK configuration generator", + "custom": "సాధారణ OpenAI-అనుకూల CLI లేదా SDK కాన్ఫిగరేషన్ జనరేటర్", "aider": "OpenAI-అనుకూల బేస్ URLతో Aider AI పెయిర్-ప్రోగ్రామింగ్ CLI", "forge": "కస్టమ్ ప్రొవైడర్‌తో ForgeCode కోడింగ్ ఏజెంట్ CLI", "cursor-cli": "హెడ్‌లెస్ ఏజెంట్ మోడ్‌లో Cursor Agent CLI", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter అటానమస్ కోడింగ్ ఏజెంట్ CLI", "omp": "Oh My Pi టెర్మినల్ కోడింగ్ ఏజెంట్", "letta": "పర్సిస్టెంట్ మెమరీ మరియు టూల్ వినియోగంతో Letta CLI ఏజెంట్", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI-అనుకూల ప్రొవైడర్ మద్దతుతో స్వీయ-మెరుగుదల కలిగిన RLM కోడింగ్ హార్నెస్", "warp": "కస్టమ్ ప్రొవైడర్ సపోర్ట్‌తో Warp AI టెర్మినల్", "agent-deck": "Agent Deck మల్టీ-ఏజెంట్ ఆర్కెస్ట్రేటర్", "5dive": "5dive — స్వీయ-హోస్టెడ్ కోడింగ్ ఏజెంట్ల సముదాయం; ఒక auth ప్రొఫైల్ అన్నింటినీ OmniRoute వైపు మళ్లిస్తుంది" @@ -2958,134 +2958,134 @@ "guides": { "cursor": { "notes": { - "0": "Requires Cursor Pro account to use this feature.", - "1": "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings." + "0": "ఈ ఫీచర్ను ఉపయోగించడానికి Cursor Pro ఖాతా అవసరం.", + "1": "Cursor అభ్యర్థనలను దాని స్వంత సర్వర్ ద్వారా పంపుతుంది, కాబట్టి స్థానిక ఎండ్పాయింట్కు మద్దతు లేదు. దయచేసి సెట్టింగ్లలో Cloud Endpointను ప్రారంభించండి." }, "steps": { "1": { - "title": "Open Settings", - "desc": "Go to Settings -> Models" + "title": "సెట్టింగ్లను తెరవండి", + "desc": "Settings -> Modelsకు వెళ్లండి" }, "2": { - "title": "Enable OpenAI API", - "desc": "Enable \"OpenAI API key\" option" + "title": "OpenAI APIని ప్రారంభించండి", + "desc": "\"OpenAI API key\" ఎంపికను ప్రారంభించండి" }, "3": { - "title": "Base URL" + "title": "బేస్ URL" }, "4": { - "title": "API Key" + "title": "API కీ" }, "5": { - "title": "Add Custom Model", - "desc": "Click \"View All Model\" -> \"Add Custom Model\"" + "title": "అనుకూల మోడల్ను జోడించండి", + "desc": "\"View All Model\" -> \"Add Custom Model\"పై క్లిక్ చేయండి" }, "6": { - "title": "Select Model" + "title": "మోడల్ను ఎంచుకోండి" } } }, "continue": { "steps": { "1": { - "title": "Open Config", - "desc": "Open Continue configuration file" + "title": "కాన్ఫిగరేషన్ను తెరవండి", + "desc": "Continue కాన్ఫిగరేషన్ ఫైల్ను తెరవండి" }, "2": { - "title": "API Key" + "title": "API కీ" }, "3": { - "title": "Select Model" + "title": "మోడల్ను ఎంచుకోండి" }, "4": { - "title": "Add Model Config", - "desc": "Add the following configuration to your models array:" + "title": "మోడల్ కాన్ఫిగరేషన్ను జోడించండి", + "desc": "మీ models అర్రేకు కింది కాన్ఫిగరేషన్ను జోడించండి:" } }, "notes": { - "0": "Continue uses JSON config file." + "0": "Continue JSON కాన్ఫిగరేషన్ ఫైల్ను ఉపయోగిస్తుంది." } }, "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCodeను ఇన్స్టాల్ చేయండి", + "desc": "npm ద్వారా ఇన్స్టాల్ చేయండి: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API కీ" }, "3": { - "title": "Set Base URL", + "title": "బేస్ URLను సెట్ చేయండి", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "మోడల్ను ఎంచుకోండి" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "థింకింగ్ వేరియంట్ను ఉపయోగించండి", + "desc": "థింకింగ్ మోడల్ల కోసం, --variant high/low/maxతో అమలు చేయండి (దిగువ ఉదాహరణ కమాండ్ను చూడండి)." } }, "notes": { - "0": "OpenCode requires API key configuration.", - "1": "Set the base URL to your OmniRoute endpoint." + "0": "OpenCodeకు API కీ కాన్ఫిగరేషన్ అవసరం.", + "1": "బేస్ URLను మీ OmniRoute ఎండ్పాయింట్కు సెట్ చేయండి." } }, "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro సెట్టింగ్లను తెరవండి", + "desc": "Settings → AI Providerకు వెళ్లండి" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "బేస్ URL", + "desc": "మీ OmniRoute ఎండ్పాయింట్ URLను పేస్ట్ చేయండి" }, "3": { - "title": "API Key" + "title": "API కీ" }, "4": { - "title": "Select Model" + "title": "మోడల్ను ఎంచుకోండి" } }, "notes": { - "0": "Kiro requires Amazon account." + "0": "Kiroకు Amazon ఖాతా అవసరం." } }, "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Open AI సెట్టింగ్లు", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "అనుకూల ప్రొవైడర్ను జోడించండి", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "బేస్ URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API కీ", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "మోడల్ను ఎంచుకోండి", + "desc": "డ్రాప్డౌన్ నుండి మోడల్ను ఎంచుకోండి" } } } }, - "autoConfiguredTab": "Auto-Configured", - "toolCategoriesDesc": "Configure AI coding assistants to route through OmniRoute", - "allToolsTab": "All Tools", - "guidedClientsTab": "Guided Clients", - "mitmClientsTab": "MITM Clients", + "autoConfiguredTab": "స్వయంచాలకంగా కాన్ఫిగర్ చేయబడింది", + "toolCategoriesDesc": "OmniRoute ద్వారా రూట్ అయ్యేలా AI కోడింగ్ సహాయకాలను కాన్ఫిగర్ చేయండి", + "allToolsTab": "అన్ని సాధనాలు", + "guidedClientsTab": "మార్గదర్శిత క్లయింట్లు", + "mitmClientsTab": "MITM క్లయింట్లు", "customCliTab": "అనుకూల CLI", - "toolCategories": "Tool Categories", - "visibleToolsCount": "{count} tools available", + "toolCategories": "సాధనాల వర్గాలు", + "visibleToolsCount": "{count} సాధనాలు అందుబాటులో ఉన్నాయి", "customCliBuilderTitle": "OpenAI-అనుకూల CLI బిల్డర్", "customCliBuilderDescription": "OpenAI-అనుకూల బేస్ URL, API కీ మరియు మోడల్ IDని ఆమోదించే ఏదైనా CLI లేదా SDK కోసం env vars మరియు JSON స్నిప్పెట్‌లను రూపొందించండి.", "customCliNoModels": "మోడల్ సెలెక్టర్‌లను పాపులేట్ చేయడానికి కనీసం ఒక ప్రొవైడర్‌ని కనెక్ట్ చేయండి.", @@ -3203,75 +3203,75 @@ "cliproxyapiVersion": "సంవత్సరం" }, "combos": { - "title": "Combos", - "description": "Create model combos with weighted routing and fallback support", + "title": "కాంబోలు", + "description": "వెయిటెడ్ రూటింగ్ మరియు ఫాల్బ్యాక్ మద్దతుతో మోడల్ కాంబోలను సృష్టించండి", "autoCatalogTitle": "ఆటో-రూటింగ్ కేటలాగ్", "autoCatalogTemplateCount": "{count} టెంప్లేట్‌లు", "autoCatalogDescription": "కనెక్ట్ చేయబడిన ప్రొవైడర్ల నుండి అంతర్నిర్మిత ఆటో/* కాంబోలు డైనమిక్‌గా పరిష్కరించబడతాయి. ఈ IDలలో దేనినైనా మోడల్ ఫీల్డ్‌గా ఉపయోగించండి — సెటప్ అవసరం లేదు.", "autoCatalogExpand": "ఆటో-రూటింగ్ కేటలాగ్‌ని విస్తరించండి", "autoCatalogCollapse": "ఆటో-రూటింగ్ కేటలాగ్‌ను కుదించు", - "createCombo": "Create Combo", - "editCombo": "Edit Combo", - "deleteCombo": "Delete Combo", - "noModels": "No models", - "noModelsYet": "No models added yet", - "addModel": "Add Model", - "addModelToCombo": "Add Model to Combo", - "routingStrategy": "Routing Strategy", - "maxRetries": "Max Retries", - "timeout": "Timeout (ms)", - "healthcheck": "Healthcheck", - "priority": "Priority", - "fallback": "Fallback", + "createCombo": "కాంబోను సృష్టించండి", + "editCombo": "కాంబోను సవరించండి", + "deleteCombo": "కాంబోను తొలగించండి", + "noModels": "మోడళ్లు లేవు", + "noModelsYet": "ఇంకా మోడళ్లు జోడించబడలేదు", + "addModel": "మోడల్ను జోడించండి", + "addModelToCombo": "కాంబోకు మోడల్ను జోడించండి", + "routingStrategy": "రూటింగ్ వ్యూహం", + "maxRetries": "గరిష్ఠ పునఃప్రయత్నాలు", + "timeout": "కాలపరిమితి (ms)", + "healthcheck": "ఆరోగ్య తనిఖీ", + "priority": "ప్రాధాన్యత", + "fallback": "ఫాల్బ్యాక్", "roundRobin": "Round Robin", - "random": "Random", - "leastLatency": "Least Latency", - "comboName": "Combo Name", + "random": "యాదృచ్ఛికం", + "leastLatency": "అతి తక్కువ లేటెన్సీ", + "comboName": "కాంబో పేరు", "comboNamePlaceholder": "my-combo", "comboDescription": "వివరణ", "comboDescriptionPlaceholder": "ఈ కాంబోను వివరించే ఐచ్ఛిక గమనిక", - "deleteConfirm": "Delete this combo?", - "noCombosYet": "No combos yet", - "comboCreated": "Combo created successfully", - "comboUpdated": "Combo updated successfully", - "comboDeleted": "Combo deleted", - "failedCreate": "Failed to create combo", - "failedUpdate": "Failed to update combo", - "errorCreating": "Error creating combo", - "errorUpdating": "Error updating combo", - "errorDeleting": "Error deleting combo", - "testFailed": "Test request failed", - "failedToggle": "Failed to toggle combo", - "testResults": "Test Results — {name}", - "resolvedBy": "Resolved by:", - "more": "+{count} more", - "reqs": "reqs", - "success": "success", - "proxyConfigured": "Proxy configured", - "copyComboName": "Copy combo name", - "enableCombo": "Enable combo", - "disableCombo": "Disable combo", - "testCombo": "Test combo", - "duplicate": "Duplicate", - "proxyConfig": "Proxy configuration", - "nameRequired": "Name is required", - "nameInvalid": "Only letters, numbers, -, _, / and . allowed", - "nameHint": "Letters, numbers, -, _, / and . allowed", - "priorityDesc": "Sequential fallback: tries model 1 first, then 2, etc.", - "weightedDesc": "Distributes traffic by weight percentage with fallback", - "roundRobinDesc": "Circular distribution: each request goes to the next model in rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", - "randomDesc": "Uniform random selection, then fallback to remaining models", - "leastUsedDesc": "Picks the model with fewest requests, balancing load over time", - "costOptimizedDesc": "Routes to the cheapest model first based on pricing", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "deleteConfirm": "ఈ కాంబోను తొలగించాలా?", + "noCombosYet": "ఇంకా కాంబోలు లేవు", + "comboCreated": "కాంబో విజయవంతంగా సృష్టించబడింది", + "comboUpdated": "కాంబో విజయవంతంగా నవీకరించబడింది", + "comboDeleted": "కాంబో తొలగించబడింది", + "failedCreate": "కాంబోను సృష్టించడం విఫలమైంది", + "failedUpdate": "కాంబోను నవీకరించడం విఫలమైంది", + "errorCreating": "కాంబోను సృష్టించడంలో లోపం", + "errorUpdating": "కాంబోను నవీకరించడంలో లోపం", + "errorDeleting": "కాంబోను తొలగించడంలో లోపం", + "testFailed": "పరీక్ష అభ్యర్థన విఫలమైంది", + "failedToggle": "కాంబో స్థితిని మార్చడం విఫలమైంది", + "testResults": "పరీక్ష ఫలితాలు — {name}", + "resolvedBy": "పరిష్కరించినది:", + "more": "మరో {count}", + "reqs": "అభ్యర్థనలు", + "success": "విజయం", + "proxyConfigured": "ప్రాక్సీ కాన్ఫిగర్ చేయబడింది", + "copyComboName": "కాంబో పేరును కాపీ చేయండి", + "enableCombo": "కాంబోను ప్రారంభించండి", + "disableCombo": "కాంబోను నిలిపివేయండి", + "testCombo": "కాంబోను పరీక్షించండి", + "duplicate": "నకలు చేయండి", + "proxyConfig": "ప్రాక్సీ కాన్ఫిగరేషన్", + "nameRequired": "పేరు తప్పనిసరి", + "nameInvalid": "అక్షరాలు, సంఖ్యలు, -, _, / మరియు . మాత్రమే అనుమతించబడతాయి", + "nameHint": "అక్షరాలు, సంఖ్యలు, -, _, / మరియు . అనుమతించబడతాయి", + "priorityDesc": "క్రమానుగత ఫాల్బ్యాక్: ముందుగా మోడల్ 1ను, ఆపై 2ను, ఇలా ప్రయత్నిస్తుంది.", + "weightedDesc": "ఫాల్బ్యాక్తో ట్రాఫిక్ను వెయిట్ శాతం ప్రకారం పంపిణీ చేస్తుంది", + "roundRobinDesc": "చక్రీయ పంపిణీ: ప్రతి అభ్యర్థన రొటేషన్లోని తదుపరి మోడల్కు వెళ్తుంది", + "contextRelay": "కాంటెక్స్ట్ రిలే", + "contextRelayDesc": "ఖాతాలు మారినప్పుడు హ్యాండాఫ్ సారాంశాలతో సెషన్ కొనసాగింపును కాపాడుతుంది", + "randomDesc": "ఏకరీతి యాదృచ్ఛిక ఎంపిక, ఆపై మిగిలిన మోడల్లకు ఫాల్బ్యాక్", + "leastUsedDesc": "అతి తక్కువ అభ్యర్థనలు ఉన్న మోడల్ను ఎంచుకుని, కాలక్రమేణా లోడ్ను సమతుల్యం చేస్తుంది", + "costOptimizedDesc": "ధర ఆధారంగా ముందుగా అత్యంత చవకైన మోడల్కు రూట్ చేస్తుంది", + "cacheOptimizedDesc": "మళ్లీ ఉపయోగించగల ప్రతి ప్రాంప్ట్ ప్రిఫిక్స్ను స్థిరంగా అదే ప్రొవైడర్ ఖాతాకు రూట్ చేస్తుంది", "resetAware": "రీసెట్-అవేర్ RR", "resetAwareDesc": "5గం మరియు వారపు రీసెట్‌లకు వ్యతిరేకంగా మిగిలిన కోటాను బ్యాలెన్స్ చేస్తుంది, ఆపై రౌండ్-రాబిన్‌లు సారూప్య స్కోర్‌లు", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "కోటా-వెయిటెడ్", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "స్ట్రిక్ట్ రాండమ్", + "strictRandomDesc": "షఫుల్ డెక్ — మళ్లీ షఫుల్ చేయడానికి ముందు ప్రతి మోడల్ను ఒక్కసారి ఉపయోగిస్తుంది", "fusion": "ఫ్యూజన్", "fusionDesc": "ప్రాంప్ట్‌ను సమాంతరంగా ప్రతి ప్యానెల్ మోడల్‌కు పంపుతుంది, ఆపై జడ్జ్ మోడల్ ఒక తుది సమాధానాన్ని సంశ్లేషిస్తుంది", "fusionJudgeModel": "జడ్జ్ మోడల్", @@ -3282,27 +3282,27 @@ "fusionStragglerGraceMsHelp": "కోరం చేరుకున్న తర్వాత నెమ్మదిగా ఉన్న ప్యానెల్ మోడళ్ల కోసం ఎంత సమయం వేచి ఉండాలి (డిఫాల్ట్ 8000).", "fusionPanelHardTimeoutMs": "ప్యానెల్ హార్డ్ టైమ్‌అవుట్ (ms)", "fusionPanelHardTimeoutMsHelp": "ఒక నిలిచిపోయిన మోడల్ మొత్తం ప్యానెల్‌ను నిలిపివేయకుండా ఉండేందుకు సంపూర్ణ పరిమితి (డిఫాల్ట్ 90000).", - "models": "Models", - "autoBalance": "Auto-balance", - "advancedSettings": "Advanced Settings", - "retryDelay": "Retry Delay (ms)", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", - "advancedHint": "Leave empty to use global defaults. These override per-provider settings.", + "models": "మోడల్లు", + "autoBalance": "స్వయంచాలక సమతుల్యం", + "advancedSettings": "అధునాతన సెట్టింగ్లు", + "retryDelay": "పునఃప్రయత్న ఆలస్యం (ms)", + "concurrencyPerModel": "ఏకకాలికత / మోడల్", + "queueTimeout": "క్యూ గడువు ముగింపు (ms)", + "contextRelayHandoffThreshold": "హ్యాండాఫ్ థ్రెషోల్డ్", + "contextRelayHandoffThresholdHelp": "కోటా వినియోగం ఈ థ్రెషోల్డ్కు చేరుకున్నప్పుడు, సక్రియ ఖాతా కోటా పూర్తిగా అయిపోవడానికి ముందు OmniRoute నిర్మిత హ్యాండాఫ్ సారాంశాన్ని రూపొందిస్తుంది.", + "contextRelayMaxMessages": "సారాంశం కోసం గరిష్ఠ సందేశాలు", + "contextRelayMaxMessagesHelp": "ఇటీవలి చరిత్రలో ఎంత భాగాన్ని రిలే సారాంశంలోకి సంక్షిప్తం చేయాలో పరిమితం చేస్తుంది.", + "contextRelaySummaryModel": "సారాంశ మోడల్", + "contextRelaySummaryModelHelp": "హ్యాండాఫ్ సారాంశాన్ని రూపొందించడానికి మాత్రమే ఉపయోగించే ఐచ్ఛిక ప్రత్యామ్నాయ మోడల్. సక్రియ కాంబో మోడల్ను తిరిగి ఉపయోగించడానికి ఖాళీగా వదిలివేయండి.", + "contextRelayProviderNote": "ప్రస్తుతం Context Relay, Codex ఖాతా రొటేషన్ కోసం హ్యాండాఫ్లను రూపొందిస్తుంది. అత్యుత్తమ కొనసాగింపు కోసం దాన్ని ఒకే ప్రొవైడర్కు చెందిన అనేక ఖాతాలతో జత చేయండి.", + "advancedHint": "గ్లోబల్ డిఫాల్ట్లను ఉపయోగించడానికి ఖాళీగా వదిలివేయండి. ఇవి ప్రతి ప్రొవైడర్ సెట్టింగ్లను ఓవర్రైడ్ చేస్తాయి.", "failoverBeforeRetry": "మళ్లీ ప్రయత్నించే ముందు వైఫల్యం", "maxSetRetries": "గరిష్ట సెట్ పునఃప్రయత్నాలు", "setRetryDelayMs": "మళ్లీ ప్రయత్నించండి ఆలస్యాన్ని సెట్ చేయండి (మిసె)", - "moveUp": "Move up", - "moveDown": "Move down", - "removeModel": "Remove", - "saving": "Saving...", + "moveUp": "పైకి తరలించు", + "moveDown": "కిందికి తరలించు", + "removeModel": "తొలగించు", + "saving": "సేవ్ చేస్తోంది...", "liveNoProviders": "ఇంకా ఏ ప్రొవైడర్‌లు గమనించబడలేదు.", "liveFleetDataHint": "ఫ్లీట్ డేటా లైవ్ కాంబో ఈవెంట్‌ల ద్వారా వస్తుంది.", "liveActiveCount": "యాక్టివ్ ({count})", @@ -3342,43 +3342,43 @@ "playgroundEmptyHint": "రూటింగ్ మార్గాన్ని చూడటానికి ఒక కాంబోను ఎంచుకుని, Simulate Routeని క్లిక్ చేయండి.", "playgroundNoCombosYet": "ఇంకా ఏ కాంబోలు కాన్ఫిగర్ చేయబడలేదు.", "playgroundCreateFirst": "ముందుగా ఒకదాన్ని సృష్టించండి", - "weighted": "Weighted", - "leastUsed": "Least-Used", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "weighted": "వెయిటెడ్", + "leastUsed": "అతి తక్కువగా ఉపయోగించబడినది", + "costOpt": "ఖర్చు-ఆప్టిమైజ్డ్", + "strategyGuideTitle": "ఈ వ్యూహాన్ని ఎలా ఉపయోగించాలి", + "strategyGuideWhen": "ఎప్పుడు ఉపయోగించాలి", + "strategyGuideAvoid": "ఎప్పుడు నివారించాలి", + "strategyGuideExample": "ఉదాహరణ", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "మీకు ఒక ప్రాధాన్య మోడల్ ఉండి, అది విఫలమైనప్పుడు మాత్రమే ఫాల్బ్యాక్ కావాలి.", + "avoid": "మీరు అభ్యర్థనలను మోడళ్ల మధ్య పంపిణీ చేయాలి.", + "example": "అంతరాయాల సమయంలో తక్కువ ఖర్చుతో కూడిన బ్యాకప్ ఉన్న ప్రధాన కోడింగ్ మోడల్." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "మీకు మోడళ్ల మధ్య నియంత్రిత ట్రాఫిక్ విభజన అవసరం.", + "avoid": "మీరు కాలక్రమేణా ఖచ్చితమైన వెయిట్లను నిర్వహించలేరు.", + "example": "80% స్థిరమైన మోడల్ + 20% కానరీ మోడల్ రోల్అవుట్." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "మీకు ఊహించదగిన, సమానమైన పంపిణీ కావాలి.", + "avoid": "లేటెన్సీ లేదా ఖర్చు పరంగా మోడళ్ల మధ్య చాలా వ్యత్యాసం ఉంది.", + "example": "త్రూపుట్ను విస్తరించడానికి అనేక ఖాతాల్లో ఒకే మోడల్." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "కనిష్ఠ సెటప్తో సరళమైన పంపిణీ కావాలి.", + "avoid": "మీకు కచ్చితమైన ట్రాఫిక్ హామీలు అవసరం.", + "example": "సమానమైన మోడళ్లతో వేగవంతమైన ప్రోటోటైపింగ్." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "ప్రత్యక్ష డిమాండ్ ఆధారంగా అనుకూలంగా మారే బ్యాలెన్సింగ్ కావాలి.", + "avoid": "వినియోగ బ్యాలెన్సింగ్ ప్రయోజనం పొందడానికి ట్రాఫిక్ చాలా తక్కువగా ఉంది.", + "example": "ఒక మోడల్ తరచుగా ఓవర్లోడ్ అయ్యే మిశ్రమ వర్క్లోడ్లు." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "ఖర్చు తగ్గింపే మీ అత్యున్నత ప్రాధాన్యం.", + "avoid": "ధరల డేటా అందుబాటులో లేదు లేదా పాతది.", + "example": "తక్కువ ఖర్చుకు ప్రాధాన్యం ఇచ్చే బ్యాక్గ్రౌండ్ లేదా బ్యాచ్ జాబ్లు." }, "reset-aware": { "when": "మీరు కోటా టెలిమెట్రీ మరియు విభిన్న రీసెట్ విండోలతో బహుళ ఖాతాలకు వెళ్లవచ్చు.", @@ -3386,104 +3386,104 @@ "example": "తర్వాత 80% ఖాతా రీసెట్ చేయడం కంటే రేపు 60% వీక్లీ ఖాతా రీసెట్‌ని ఇష్టపడండి." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "ప్రతి మోడల్ను మళ్లీ ఉపయోగించే ముందు ఒక్కోసారి ఉపయోగిస్తూ, పూర్తిగా సమానమైన పంపిణీ కావాలనుకున్నప్పుడు ఉపయోగించండి.", + "avoid": "మోడళ్ల నాణ్యత లేదా లేటెన్సీ భిన్నంగా ఉండి, క్రమం ముఖ్యమైనప్పుడు నివారించండి.", + "example": "ఉదాహరణ: వినియోగాన్ని సమానంగా పంపిణీ చేయడానికి ఒకే మోడల్కు చెందిన అనేక ఖాతాలు." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Power-of-Two-Choices అల్గోరిథమ్ను ఉపయోగించి తక్కువ-లేటెన్సీ ఎంపిక కావాలనుకున్నప్పుడు ఉపయోగించండి.", + "avoid": "2 లేదా అంతకంటే తక్కువ మోడళ్లు ఉన్న చిన్న కాంబోల కోసం నివారించండి — రౌండ్-రాబిన్తో పోలిస్తే ఎలాంటి ప్రయోజనం లేదు.", + "example": "ఉదాహరణ: 4+ సమానమైన మోడల్ ఎండ్పాయింట్లలో అధిక-నిర్వహణ సామర్థ్యంతో ఇన్ఫరెన్స్." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "పని చేస్తున్న సందర్భాన్ని కోల్పోకుండా ఖాతా మార్పును తట్టుకుని దీర్ఘ సెషన్లు కొనసాగాల్సినప్పుడు ఉపయోగించండి.", + "avoid": "ఖాతా మార్పు అరుదుగా జరిగేటప్పుడు లేదా అదనపు సారాంశ అభ్యర్థనలు వద్దనుకున్నప్పుడు ఉపయోగించవద్దు.", + "example": "ఉదాహరణ: కోటా పూర్తయ్యే దశలో బహుళ ఖాతాల మధ్య మారే Codex సెషన్లు." }, "fill-first": { - "when": "Use when you want to fully exhaust one provider's quota before moving to the next.", - "avoid": "Avoid when you need request-level load balancing across providers.", - "example": "Example: Use all $200 Deepgram credits before falling back to Groq." + "when": "తదుపరి ప్రొవైడర్కు మారే ముందు ఒక ప్రొవైడర్ కోటాను పూర్తిగా వినియోగించాలనుకున్నప్పుడు ఉపయోగించండి.", + "avoid": "ప్రొవైడర్లలో అభ్యర్థన-స్థాయి లోడ్ బ్యాలెన్సింగ్ అవసరమైనప్పుడు ఉపయోగించవద్దు.", + "example": "ఉదాహరణ: Groqకు మారే ముందు మొత్తం $200 Deepgram క్రెడిట్లను ఉపయోగించండి." }, "auto": { - "when": "Use when you need multi-factor scoring routing based on cost, latency, and quality.", - "avoid": "Avoid when you need strict priority ordering or historical persistence.", - "example": "Example: Balance requests across models with different strengths." + "when": "ఖర్చు, ఆలస్యం మరియు నాణ్యత ఆధారంగా బహుళ-కారకాల స్కోరింగ్ రూటింగ్ అవసరమైనప్పుడు ఉపయోగించండి.", + "avoid": "ఖచ్చితమైన ప్రాధాన్యతా క్రమం లేదా చారిత్రక స్థిరత్వం అవసరమైనప్పుడు ఉపయోగించవద్దు.", + "example": "ఉదాహరణ: విభిన్న సామర్థ్యాలు కలిగిన మోడళ్లలో అభ్యర్థనలను సమతుల్యం చేయండి." }, "lkgp": { - "when": "Use when you want to route based on historical success rates and performance.", - "avoid": "Avoid when historical data is limited or unreliable.", - "example": "Example: Route to models with a good track record on specific tasks." + "when": "చారిత్రక విజయ రేట్లు మరియు పనితీరు ఆధారంగా రూట్ చేయాలనుకున్నప్పుడు ఉపయోగించండి.", + "avoid": "చారిత్రక డేటా పరిమితంగా లేదా నమ్మదగనిదిగా ఉన్నప్పుడు ఉపయోగించవద్దు.", + "example": "ఉదాహరణ: నిర్దిష్ట పనుల్లో మంచి పనితీరు చరిత్ర కలిగిన మోడళ్లకు రూట్ చేయండి." }, "context-optimized": { - "when": "Use when you need to optimize context window usage across models.", - "avoid": "Avoid when models have similar context lengths or tasks are simple.", - "example": "Example: Distribute long conversations across models with larger context windows." + "when": "మోడళ్లలో కాంటెక్స్ట్ విండో వినియోగాన్ని ఆప్టిమైజ్ చేయాల్సినప్పుడు ఉపయోగించండి.", + "avoid": "మోడళ్లకు సమానమైన కాంటెక్స్ట్ నిడివులు ఉన్నప్పుడు లేదా పనులు సరళంగా ఉన్నప్పుడు ఉపయోగించవద్దు.", + "example": "ఉదాహరణ: పెద్ద కాంటెక్స్ట్ విండోలు కలిగిన మోడళ్లలో సుదీర్ఘ సంభాషణలను పంపిణీ చేయండి." } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "అభ్యర్థన విఫలమైనట్లు నిర్ధారించే ముందు ఎన్నిసార్లు మళ్లీ ప్రయత్నించాలి.", + "retryDelay": "పునఃప్రయత్నాల మధ్య ప్రారంభ నిరీక్షణ సమయం. అధిక విలువలు ఆకస్మిక ఒత్తిడిని తగ్గిస్తాయి.", + "timeout": "నిలిపివేయడానికి ముందు గరిష్ఠ అభ్యర్థన వ్యవధి.", + "healthcheck": "రూటింగ్ నిర్ణయాల నుండి సరిగా పనిచేయని మోడళ్లు/ప్రొవైడర్లను మినహాయిస్తుంది.", + "concurrencyPerModel": "రౌండ్-రాబిన్లో ఒక్కో మోడల్కు అనుమతించబడే గరిష్ఠ ఏకకాల అభ్యర్థనలు.", + "queueTimeout": "సమయం ముగిసే ముందు ఒక అభ్యర్థన క్యూలో ఎంతసేపు వేచి ఉండవచ్చు.", "failoverBeforeRetry": "ప్రారంభించబడినప్పుడు, ఏదైనా అప్‌స్ట్రీమ్ లోపం తదుపరి కాంబో లక్ష్యానికి తక్షణ వైఫల్యాన్ని ప్రేరేపిస్తుంది, అన్ని పునఃప్రయత్నాలు మరియు ఫాల్‌బ్యాక్ URLలను దాటవేస్తుంది.", "maxSetRetries": "ప్రతి లక్ష్యం విఫలమైనప్పుడు సెట్ చేసిన పూర్తి లక్ష్యాన్ని మళ్లీ ప్రయత్నించడానికి ఎన్ని సార్లు. 0 = సెట్-స్థాయి పునఃప్రయత్నం లేదు.", "setRetryDelayMs": "సెట్-స్థాయి పునఃప్రయత్నాల మధ్య ఆలస్యం, తాత్కాలిక సమస్యలను పరిష్కరించడానికి సమయం ఇస్తుంది.", "disableSessionStickiness": "మొదటి-సందేశం హ్యాష్ ద్వారా మొత్తం సంభాషణను ఒకే కనెక్షన్‌కు పిన్ చేయడానికి బదులుగా ప్రతి రిక్వెస్ట్‌కు వేరొక కనెక్షన్‌కు రొటేట్ చేయండి. గ్లోబల్ డిఫాల్ట్‌ను ఓవర్‌రైడ్ చేస్తుంది. మల్టీ-టర్న్ చాట్‌ల కోసం ప్రాంప్ట్-కాష్ హిట్‌లను సంరక్షించడానికి Inherit లో ఉంచండి." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "త్వరిత టెంప్లేట్లు", + "templatesDescription": "ప్రారంభ ప్రొఫైల్ను వర్తింపజేసి, ఆపై మోడళ్లు మరియు కాన్ఫిగ్ను సర్దుబాటు చేయండి.", + "templateApply": "టెంప్లేట్ను వర్తింపజేయండి", + "templateHighAvailability": "అధిక లభ్యత", + "templateHighAvailabilityDesc": "హెల్త్ చెక్లు మరియు సురక్షిత పునఃప్రయత్నాలతో ప్రాధాన్యతా రూటింగ్.", + "templateCostSaver": "ఖర్చు ఆదా", + "templateCostSaverDesc": "బడ్జెట్కు ప్రాధాన్యమిచ్చే వర్క్లోడ్ల కోసం ఖర్చు-ఆప్టిమైజ్డ్ రూటింగ్.", + "templateBalanced": "సమతుల్య లోడ్", + "templateBalancedDesc": "కాలక్రమంలో డిమాండ్ను విస్తరించేందుకు అతి తక్కువగా ఉపయోగించిన రూటింగ్.", + "usageGuideHide": "దాచు", + "usageGuideDontShowAgain": "మళ్లీ చూపవద్దు", + "usageGuideShow": "మార్గదర్శిని చూపు", + "quickTestTitle": "కాంబో ధృవీకరణకు సిద్ధంగా ఉంది", + "quickTestDescription": "ఫాల్బ్యాక్ మరియు ఆలస్య ప్రవర్తనను నిర్ధారించడానికి ఇప్పుడే పరీక్షను అమలు చేయండి.", + "testNow": "ఇప్పుడే పరీక్షించండి", + "pricingCoverage": "ధరల కవరేజ్", + "pricingCoverageHint": "అన్ని కాంబో మోడళ్లకు ధరలు ఉన్నప్పుడు ఖర్చు-ఆప్టిమైజ్డ్ ఉత్తమంగా పనిచేస్తుంది.", + "pricingAvailable": "ధరలు అందుబాటులో ఉన్నాయి", + "pricingMissing": "ధర సమాచారం లేదు", + "pricingAvailableShort": "ధర నిర్ణయించబడినవి", + "pricingMissingShort": "ధర-లేనివి", "fallbackOnlyOnQuotaExhaustion": "కేవలం క్వోటా ముగిసినప్పుడు మాత్రమే ముందుకు సాగండి", "fallbackOnlyOnQuotaExhaustionShort": "కోటా-మాత్రం బ్యాకప్", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", - "readinessCheckPricing": "Pricing data is available", - "readinessCheckPricingOptional": "Pricing rule not required", - "saveBlockedTitle": "Save is blocked until the following items are fixed:", - "saveBlockName": "Define a combo name.", - "saveBlockModels": "Add at least one model.", - "saveBlockWeighted": "Set weights to 100% (current: {total}%).", - "saveBlockPricing": "Add pricing for at least one model or choose a different strategy.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "warningRoundRobinSingleModel": "రౌండ్-రాబిన్ కనీసం 2 మోడళ్లతో అత్యంత ఉపయోగకరంగా ఉంటుంది.", + "warningCostOptimizedPartialPricing": "{total} మోడళ్లలో {priced} మోడళ్లకు మాత్రమే ధర సమాచారం ఉంది. రూటింగ్ పాక్షికంగా వ్యయాన్ని పరిగణనలోకి తీసుకోవచ్చు.", + "warningCostOptimizedNoPricing": "ఈ కాంబోకు ధర డేటా కనుగొనబడలేదు. వ్యయ-ఆప్టిమైజ్డ్ వ్యూహం అనూహ్యంగా రూట్ చేయవచ్చు.", + "filterAll": "అన్నీ", + "filterIntelligent": "తెలివైనవి", + "filterDeterministic": "నిర్ణీతమైనవి", + "filterEmptyTitle": "ఈ వ్యూహ ఫిల్టర్కు సరిపోలే కాంబోలు లేవు.", + "filterEmptyIntelligentDescription": "తెలివైన రూటింగ్ డ్యాష్బోర్డ్ను నింపడానికి auto లేదా LKGP కాంబోను సృష్టించండి.", + "filterEmptyDeterministicDescription": "ప్రస్తుతం auto మరియు LKGP కాంబోలు మాత్రమే ఉన్నాయి. తిరిగి అన్నీ ఎంచుకోండి లేదా నిర్ణీత కాంబోను సృష్టించండి.", + "readinessTitle": "సేవ్ చేయడానికి సిద్ధంగా ఉన్నారా?", + "readinessDescription": "ఈ కాంబోను సృష్టించే లేదా నవీకరించే ముందు చెక్లిస్ట్ను సమీక్షించండి.", + "readinessCheckName": "కాంబో పేరు చెల్లుబాటు అవుతుంది", + "readinessCheckModels": "కనీసం ఒక మోడల్ ఎంపిక చేయబడింది", + "readinessCheckWeights": "వెయిటెడ్ మొత్తం 100%", + "readinessCheckWeightsOptional": "వెయిట్ నియమం అవసరం లేదు", + "readinessCheckPricing": "ధర డేటా అందుబాటులో ఉంది", + "readinessCheckPricingOptional": "ధర నియమం అవసరం లేదు", + "saveBlockedTitle": "కింది అంశాలను పరిష్కరించే వరకు సేవ్ చేయడం నిరోధించబడుతుంది:", + "saveBlockName": "కాంబో పేరును నిర్వచించండి.", + "saveBlockModels": "కనీసం ఒక మోడల్ను జోడించండి.", + "saveBlockWeighted": "వెయిట్లను 100%కి సెట్ చేయండి (ప్రస్తుతం: {total}%).", + "saveBlockPricing": "కనీసం ఒక మోడల్కు ధరను జోడించండి లేదా వేరే వ్యూహాన్ని ఎంచుకోండి.", + "recommendationsLabel": "సిఫార్సు చేసిన సెటప్", + "applyRecommendations": "సిఫార్సులను వర్తింపజేయండి", + "recommendationsUpdated": "{strategy} కోసం సిఫార్సులు నవీకరించబడ్డాయి.", + "recommendationsApplied": "ఈ కాంబోకు సిఫార్సులు వర్తింపజేయబడ్డాయి.", + "intelligentPanelTitle": "తెలివైన రూటింగ్ డ్యాష్బోర్డ్", + "intelligentPanelDesc": "ఈ auto-routing కాంబో కోసం రియల్-టైమ్ స్కోరింగ్ మరియు ఆరోగ్య స్థితి.", "configOnlyStatus": "కాన్ఫిగరేషన్ వీక్షణ", "configOnlyHint": "ఈ ప్యానెల్ రూటింగ్ ఇన్‌పుట్‌లను మాత్రమే చూపుతుంది. లైవ్ బ్రేకర్ స్థితి Health పేజీలో అందుబాటులో ఉంది.", "routingInputs": "రూటింగ్ ఇన్‌పుట్‌లు", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "తెలియని ప్రొవైడర్ ప్రిఫిక్స్.", "builderDynamicAccountShort": "డైనమిక్ ఖాతా", "builderNeedValidName": "కొనసాగడానికి ముందు చెల్లుబాటు అయ్యే కాంబో పేరును నిర్వచించండి.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "స్థితి అవలోకనం", + "normalOperation": "సాధారణ కార్యకలాపం", + "allProvidersHealthy": "ప్రొవైడర్లు ఆరోగ్యకరమైన రూటింగ్ పరిస్థితులను నివేదిస్తున్నారు.", + "incidentMode": "సంఘటన మోడ్", + "highCircuitBreakerRate": "అధిక సర్క్యూట్ బ్రేకర్ ట్రిప్ రేటు గుర్తించబడింది.", + "activeModePack": "సక్రియ మోడ్ ప్యాక్", + "modePackUpdated": "మోడ్ ప్యాక్ {pack}కు నవీకరించబడింది.", + "modePackHint": "కాంబోను మళ్లీ నిర్మించకుండా రూటింగ్ ఇంజిన్ను నిర్దిష్ట దిశగా మొగ్గు చూపించడానికి ప్రీసెట్లను మార్చండి.", + "providerScores": "ప్రొవైడర్ స్కోర్లు", + "allProvidersEvaluated": "అభ్యర్థి పూల్ కాన్ఫిగర్ చేయబడలేదు. రన్టైమ్లో అన్ని సక్రియ ప్రొవైడర్లు మూల్యాంకనం చేయబడతారు.", + "excludedProviders": "మినహాయించిన ప్రొవైడర్లు", + "excludedProvidersHint": "OPEN సర్క్యూట్ బ్రేకర్ ఉన్న ప్రొవైడర్లు రూటింగ్ నుండి తాత్కాలికంగా మినహాయించబడతారు.", + "noExcludedProviders": "ప్రస్తుతం ఏ ప్రొవైడర్లూ మినహాయించబడలేదు.", + "cooldownMinutes": "కూల్డౌన్: {minutes}m", + "builderIntelligentTitle": "ఇంటెలిజెంట్ రూటింగ్ కాన్ఫిగరేషన్", + "builderIntelligentDesc": "ఈ ఆటో-రూటింగ్ కాంబో కోసం బహుళ-కారకాల స్కోరింగ్ ఇంజిన్ను కాన్ఫిగర్ చేయండి.", + "candidatePoolLabel": "అభ్యర్థి పూల్", + "candidatePoolHint": "ఈ ఇంజిన్ ఏ ప్రొవైడర్లను మూల్యాంకనం చేయాలో ఎంచుకోండి. అన్ని సక్రియ ప్రొవైడర్లను ఉపయోగించడానికి ఖాళీగా వదిలేయండి.", + "candidatePoolEmpty": "ఇంకా సక్రియ ప్రొవైడర్లు అందుబాటులో లేరు.", + "candidatePoolAllProviders": "అన్ని ప్రొవైడర్లు", + "modePackLabel": "మోడ్ ప్యాక్", + "routerStrategyLabel": "రౌటర్ వ్యూహం", + "strategyRules": "నియమాలు (6-కారకాల స్కోరింగ్)", + "explorationRateLabel": "అన్వేషణ రేటు", + "explorationRateHint": "అభ్యర్థనల్లో {percent}% అనుకూలం కాని ప్రొవైడర్లను అన్వేషించవచ్చు.", + "budgetCapLabel": "బడ్జెట్ పరిమితి (USD / అభ్యర్థన)", + "budgetCapPlaceholder": "పరిమితి లేదు", + "advancedWeightsTitle": "అధునాతనం: స్కోరింగ్ వెయిట్లు", "nestedComboFlatten": "నెస్టెడ్ కాంబోలను ఫ్లాటెన్ చేయండి", "nestedComboExecute": "నెస్టెడ్ కాంబోలను టార్గెట్‌లుగా అమలు చేయండి", "effectiveRoutingShare": "సమర్థవంతమైన రూటింగ్ వాటా (weight ÷ total)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "కోటా", + "weightHealth": "ఆరోగ్యం", + "weightCostInv": "ఖర్చు", + "weightLatencyInv": "జాప్యం", + "weightTaskFit": "టాస్క్ అనుకూలత", + "weightStability": "స్థిరత్వం", + "weightTierPriority": "టియర్", + "weightCacheAffinity": "క్యాష్ హిట్ అనుబంధం", "weightSessionAvailability": "సెషన్ అందుబాటులో ఉంది", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "ఇంటెలిజెంట్ రూటింగ్ కాన్ఫిగరేషన్", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "ఫెయిల్-సేఫ్ బేస్లైన్", + "description": "ఒక ప్రాథమిక మోడల్ను ఉపయోగించి, ఫాల్బ్యాక్ చైన్ను చిన్నదిగా మరియు విశ్వసనీయంగా ఉంచండి.", + "tip1": "అత్యంత విశ్వసనీయమైన మీ మోడల్ను మొదట ఉంచండి.", + "tip2": "సమాన నాణ్యత కలిగిన 1-2 బ్యాకప్ మోడళ్లను ఉంచండి.", + "tip3": "తాత్కాలిక ప్రొవైడర్ వైఫల్యాలను తట్టుకోవడానికి సురక్షిత రీట్రైలను ఉపయోగించండి." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "నియంత్రిత ట్రాఫిక్ విభజన", + "description": "క్యానరీ రోల్అవుట్లకు మరియు మోడళ్ల మధ్య క్రమానుగత మైగ్రేషన్కు చాలా అనుకూలం.", + "tip1": "90/10 వంటి పరిమిత విభజనతో ప్రారంభించండి.", + "tip2": "మొత్తాన్ని 100% వద్ద ఉంచి, మార్పుల తర్వాత స్వయంచాలకంగా సమతుల్యం చేయండి.", + "tip3": "క్యానరీ వెయిట్ను పెంచే ముందు విజయ రేటు మరియు జాప్యాన్ని పర్యవేక్షించండి." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "ఊహించదగిన లోడ్ భాగస్వామ్యం", + "description": "మోడళ్లు సమానంగా ఉన్నప్పుడు మరియు సజావైన పంపిణీ అవసరమైనప్పుడు ఇది ఉత్తమం.", + "tip1": "కనీసం 2 మోడళ్లను ఉపయోగించండి.", + "tip2": "ఒక్కసారిగా అధిక లోడ్ పడకుండా సమకాలికత పరిమితులను సెట్ చేయండి.", + "tip3": "సిస్టమ్ పూర్తిగా నిండినప్పుడు త్వరగా విఫలమయ్యేలా క్యూ గడువు ముగింపు సమయాన్ని ఉపయోగించండి." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "తక్కువ సెటప్తో వేగవంతమైన పంపిణీ", + "description": "కఠినమైన హామీలు అవసరం లేకుండా సరళమైన పంపిణీ కావాల్సినప్పుడు ఉపయోగించండి.", + "tip1": "ఒకే విధమైన జాప్య ప్రొఫైల్లున్న మోడళ్లను ఉపయోగించండి.", + "tip2": "యాదృచ్ఛిక వైఫల్యాలను తట్టుకోవడానికి పునఃప్రయత్నాలను ప్రారంభించి ఉంచండి.", + "tip3": "కఠినమైన SLAల కోసం కాకుండా ప్రయోగాల కోసం దీన్ని ప్రాధాన్యంగా ఉపయోగించండి." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "అనుకూల సంతులనం", + "description": "కాలక్రమేణా హాట్స్పాట్లను తగ్గించడానికి తక్కువగా ఉపయోగించిన మోడళ్లకు రూట్ చేస్తుంది.", + "tip1": "నిరంతర ట్రాఫిక్లో మెరుగ్గా పనిచేస్తుంది.", + "tip2": "సురక్షితమైన సంతులనం కోసం ఆరోగ్య తనిఖీలతో కలిపి ఉపయోగించండి.", + "tip3": "పంపిణీ ప్రయోజనాలను ధృవీకరించడానికి ప్రతి మోడల్ వినియోగాన్ని ట్రాక్ చేయండి." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "బడ్జెట్కు ప్రాధాన్యమిచ్చే రూటింగ్", + "description": "ధరల మెటాడేటా అందుబాటులో ఉన్నప్పుడు తక్కువ ఖర్చు గల మోడళ్లకు రూట్ చేస్తుంది.", + "tip1": "ఎంచుకున్న అన్ని మోడళ్లకు ధరల సమాచారం అందుబాటులో ఉందని నిర్ధారించుకోండి.", + "tip2": "క్లిష్టమైన ప్రాంప్ట్ల కోసం నాణ్యమైన ఫాల్బ్యాక్ను ఉంచండి.", + "tip3": "ఖర్చే ప్రధాన KPIగా ఉండే బ్యాచ్/బ్యాక్గ్రౌండ్ జాబ్ల కోసం ఉపయోగించండి." }, "reset-aware": { "title": "ఖాతా భ్రమణాన్ని రీసెట్ చేయండి", @@ -3597,155 +3597,155 @@ "tip3": "టై బ్యాండ్‌ను చిన్నగా ఉంచండి, తద్వారా సమానమైన ఖాతాలు ఇప్పటికీ చాలా చక్కగా తిరుగుతాయి." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "షఫుల్ డెక్ పంపిణీ", + "description": "మళ్లీ షఫుల్ చేయడానికి ముందు ప్రతి చక్రంలో ఒక్కో మోడల్ సరిగ్గా ఒకసారి ఉపయోగించబడుతుంది.", + "tip1": "అర్థవంతమైన పంపిణీ కోసం కనీసం 2 మోడళ్లను ఉపయోగించండి.", + "tip2": "సమాన పనితీరు గల మోడళ్లతో ఉత్తమంగా పనిచేస్తుంది.", + "tip3": "బహుళ API ఖాతాల మధ్య లోడ్ బ్యాలెన్సింగ్కు అనువైనది." }, "fill-first": { - "description": "Exhaust provider quotas sequentially before falling back.", - "tip1": "Use for quota-based routing with clear fallback chains.", - "tip2": "Set quotas accurately to avoid premature fallback.", - "tip3": "Works best with providers offering free tiers or credit buckets.", - "title": "Quota Exhaustion" + "description": "ఫాల్బ్యాక్కు వెళ్లే ముందు ప్రొవైడర్ కోటాలను వరుసగా పూర్తిగా వినియోగిస్తుంది.", + "tip1": "స్పష్టమైన ఫాల్బ్యాక్ గొలుసులతో కోటా-ఆధారిత రూటింగ్ కోసం ఉపయోగించండి.", + "tip2": "ముందస్తు ఫాల్బ్యాక్ను నివారించడానికి కోటాలను ఖచ్చితంగా సెట్ చేయండి.", + "tip3": "ఉచిత టియర్లు లేదా క్రెడిట్ బకెట్లను అందించే ప్రొవైడర్లతో ఉత్తమంగా పనిచేస్తుంది.", + "title": "కోటా పూర్తిగా వినియోగించబడటం" }, "auto": { - "description": "Route based on real-time scoring for cost, latency, quality, and health.", - "tip1": "Let the engine balance multiple factors automatically.", - "tip2": "Monitor which factors drive routing decisions in logs.", - "tip3": "Use for complex workloads where no single factor dominates.", - "title": "Multi-Factor Optimization" + "description": "ఖర్చు, జాప్యం, నాణ్యత మరియు ఆరోగ్యానికి సంబంధించిన రియల్-టైమ్ స్కోరింగ్ ఆధారంగా రూట్ చేయండి.", + "tip1": "బహుళ అంశాలను ఇంజిన్ స్వయంచాలకంగా సమతుల్యం చేయనివ్వండి.", + "tip2": "లాగ్లలో రూటింగ్ నిర్ణయాలను ఏ అంశాలు ప్రభావితం చేస్తున్నాయో పర్యవేక్షించండి.", + "tip3": "ఏ ఒక్క అంశమూ ఆధిపత్యం వహించని సంక్లిష్ట వర్క్లోడ్ల కోసం ఉపయోగించండి.", + "title": "బహుళ-అంశాల ఆప్టిమైజేషన్" }, "lkgp": { - "description": "Route based on historical performance and success patterns.", - "tip1": "Requires sufficient request history for accurate predictions.", - "tip2": "Good for workloads with consistent model performance patterns.", - "tip3": "Monitor prediction accuracy and adjust weights as needed.", - "title": "History-Based Routing" + "description": "చారిత్రక పనితీరు మరియు విజయవంతమైన నమూనాల ఆధారంగా రూట్ చేయండి.", + "tip1": "ఖచ్చితమైన అంచనాల కోసం తగినంత అభ్యర్థన చరిత్ర అవసరం.", + "tip2": "స్థిరమైన మోడల్ పనితీరు నమూనాలున్న వర్క్లోడ్లకు అనుకూలం.", + "tip3": "అంచనాల ఖచ్చితత్వాన్ని పర్యవేక్షించి, అవసరమైన విధంగా వెయిట్లను సర్దుబాటు చేయండి.", + "title": "చరిత్ర-ఆధారిత రూటింగ్" }, "context-optimized": { - "description": "Optimize routing based on context window usage and token efficiency.", - "tip1": "Route long conversations to models with larger context windows.", - "tip2": "Monitor context utilization to avoid token waste.", - "tip3": "Best for conversational AI requiring extensive context retention.", - "title": "Context Optimization" + "description": "కాంటెక్స్ట్ విండో వినియోగం మరియు టోకెన్ సామర్థ్యం ఆధారంగా రూటింగ్ను ఆప్టిమైజ్ చేయండి.", + "tip1": "సుదీర్ఘ సంభాషణలను పెద్ద కాంటెక్స్ట్ విండోలు గల మోడళ్లకు రూట్ చేయండి.", + "tip2": "టోకెన్ వృథాను నివారించడానికి కాంటెక్స్ట్ వినియోగాన్ని పర్యవేక్షించండి.", + "tip3": "విస్తృతమైన కాంటెక్స్ట్ నిలుపుదల అవసరమైన సంభాషణాత్మక AIకి ఉత్తమం.", + "title": "కాంటెక్స్ట్ ఆప్టిమైజేషన్" }, "context-relay": { - "description": "Best when account rotation is expected and the next account must inherit a simplified task summary.", - "tip1": "Use with providers rotating accounts for the same model family.", - "tip2": "Set handoff threshold below hard quota cutoffs for summary generation time.", - "tip3": "Only set a dedicated summary model if the primary is too expensive or unstable.", - "title": "Session Continuity Priority" + "description": "ఖాతా రొటేషన్ జరగవచ్చని భావించినప్పుడు మరియు తదుపరి ఖాతా సరళీకృత టాస్క్ సారాంశాన్ని స్వీకరించాల్సినప్పుడు ఉత్తమం.", + "tip1": "ఒకే మోడల్ ఫ్యామిలీ కోసం ఖాతాలను రొటేట్ చేసే ప్రొవైడర్లతో ఉపయోగించండి.", + "tip2": "సారాంశాన్ని రూపొందించడానికి సమయం ఉండేలా హార్డ్ కోటా కటాఫ్ల కంటే హ్యాండాఫ్ థ్రెషోల్డ్ను తక్కువగా సెట్ చేయండి.", + "tip3": "ప్రైమరీ మోడల్ చాలా ఖరీదైనది లేదా అస్థిరమైనది అయితే మాత్రమే ప్రత్యేక సారాంశ మోడల్ను సెట్ చేయండి.", + "title": "సెషన్ కొనసాగింపు ప్రాధాన్యత" }, "p2c": { - "description": "Route to the provider with the lowest current load based on real-time metrics.", - "tip1": "Monitor provider health metrics for accurate load assessment.", - "tip2": "Works best with homogeneous provider pools.", - "tip3": "Adjust sensitivity to avoid oscillation during traffic spikes.", - "title": "Power of Two Choices" + "description": "రియల్-టైమ్ మెట్రిక్స్ ఆధారంగా ప్రస్తుతం అత్యల్ప లోడ్ ఉన్న ప్రొవైడర్కు రూట్ చేయండి.", + "tip1": "లోడ్ను ఖచ్చితంగా అంచనా వేయడానికి ప్రొవైడర్ హెల్త్ మెట్రిక్స్ను పర్యవేక్షించండి.", + "tip2": "ఒకే రకమైన ప్రొవైడర్ పూల్స్తో అత్యుత్తమంగా పనిచేస్తుంది.", + "tip3": "ట్రాఫిక్ స్పైక్స్ సమయంలో ఊగిసలాటను నివారించడానికి సెన్సిటివిటీని సర్దుబాటు చేయండి.", + "title": "రెండు ఎంపికల శక్తి" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", - "auto": "Intelligent Auto", - "autoDesc": "Self-healing smart routing pool with multi-factor scoring", - "lkgp": "LKGP Mode", - "lkgpDesc": "Prioritizes the last provider that successfully completed a request", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "templateFreeStack": "ఉచిత స్టాక్ ($0)", + "templateFreeStackDesc": "అన్ని ఉచిత ప్రొవైడర్లలో రౌండ్-రాబిన్: Kiro (Claude), Qoder (5 మోడళ్లు), Qwen (4 మోడళ్లు). సున్నా ఖర్చు, కోడింగ్ ఎప్పటికీ ఆగదు.", + "auto": "తెలివైన ఆటో", + "autoDesc": "బహుళ-కారక స్కోరింగ్తో స్వీయ-పునరుద్ధరణ స్మార్ట్ రూటింగ్ పూల్", + "lkgp": "LKGP మోడ్", + "lkgpDesc": "ఒక అభ్యర్థనను చివరిగా విజయవంతంగా పూర్తి చేసిన ప్రొవైడర్కు ప్రాధాన్యత ఇస్తుంది", + "wizardGuideTitle": "కాంబోలతో ప్రారంభించడం", + "wizardGuideDesc": "AI ట్రాఫిక్ను తెలివిగా రూట్ చేయడానికి మోడల్ కాంబోలను సృష్టించండి", + "wizardGuideHint": "లేదా పైన ఉన్న + కాంబోను సృష్టించండి క్లిక్ చేయండి", + "createFirstCombo": "మీ మొదటి కాంబోను సృష్టించండి", + "wizardStep1Title": "మీ కాంబోకు పేరు పెట్టండి", + "wizardStep1Desc": "రూటింగ్ నియమాల్లో గుర్తించడానికి మీ కాంబోకు ఒక ప్రత్యేకమైన పేరు ఇవ్వండి", + "wizardStep2Title": "మోడళ్లను జోడించండి", + "wizardStep2Desc": "AI మోడళ్లను ఎంచుకుని, వాటి ఫాల్బ్యాక్ ప్రాధాన్యత క్రమంలో అమర్చండి", + "wizardStep3Title": "వ్యూహాన్ని ఎంచుకోండి", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "సమీక్షించి సేవ్ చేయండి", + "wizardStep4Desc": "మీ కాన్ఫిగరేషన్ను సమీక్షించి, కాంబోను యాక్టివేట్ చేయండి", + "usageGuideInvokeTitle": "ఈ కాంబోను ఎలా కాల్ చేయాలి", + "usageGuideInvokeDesc": "కాంబో యొక్క ఖచ్చితమైన పేరును మోడల్గా పంపండి, ఉదా. model: \"my-combo\" (లేదా combo/my-combo).", + "usageGuideInvokeAutoNote": "auto మరియు auto/* అనేవి మీ కాంబోలను ఉపయోగించని ప్రత్యేక జీరో-కాన్ఫిగ్ రౌటర్ (ఒక కాంబోకు నిజంగానే auto అని పేరు పెట్టి ఉంటే తప్ప).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto అనేది నిజమైన చెల్లింపు OpenRouter ఉత్పత్తి (Auto Best Available), OmniRoute అలియాస్ కాదు — Settings → Routing → Hide paid models ద్వారా దాన్ని మినహాయించండి.", + "emailVisibilityStateOn": "ఆన్", + "emailVisibilityStateOff": "ఆఫ్", + "reorderHandle": "క్రమాన్ని మార్చడానికి డ్రాగ్ చేయండి", + "failedReorder": "మోడళ్ల క్రమాన్ని మార్చడం విఫలమైంది", + "builderFlowTitle": "కాంబో బిల్డర్ ఫ్లో", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "ప్రాథమిక అంశాలు", + "description": "పేరు మరియు ప్రారంభ టెంప్లేట్" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "దశలు", + "description": "ప్రొవైడర్, మోడల్ మరియు ఖాతా ఎంపిక" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "వ్యూహం", + "description": "రూటింగ్ ప్రవర్తన మరియు అధునాతన సెట్టింగ్లు" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "స్మార్ట్ రూటింగ్", + "description": "ఆటో-రూటింగ్ అభ్యర్థుల సమూహం, ప్రీసెట్లు మరియు స్కోరింగ్" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "సమీక్ష", + "description": "సేవ్ చేయడానికి ముందు తుది ధ్రువీకరణ" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", - "builderDuplicateExact": "This exact provider/model/account step is already in the combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", - "builderStagesDescription": "Complete each stage in order to define combos, build steps, select routing strategy, and review results.", - "builderStepsDescription": "Build each combo step in order: provider, model, then account. This allows reusing the same provider and model across different accounts.", - "selectProvider": "Select Provider", - "selectProviderPlaceholder": "Select a provider", - "selectModel": "Select Model", - "selectModelPlaceholder": "Select a provider first", - "selectAccount": "Select Account", - "selectComboToReference": "Select combo to reference", - "comboReference": "Combo Reference", - "addComboReference": "Add Combo Reference", - "addStepBeforeContinue": "Please add at least one step before proceeding to the next stage.", - "previewNextStep": "Preview next step", - "autoSelectAccount": "Automatically select account at runtime", - "modePackBalanced": "Balanced", - "modePackBudget": "Budget", - "modePackPerformance": "Performance", - "modePackCustom": "Custom", - "browseLegacyCatalog": "Browse legacy combo catalog", - "agentFeaturesTitle": "Agent Features", - "agentFeaturesDescription": "Enable advanced features for agents using this combo", + "builderStageVisited": "దశ పూర్తయింది", + "builderStageCurrent": "ప్రస్తుత దశ", + "builderStagePending": "పెండింగ్లో ఉంది", + "builderStageLocked": "లాక్ చేయబడింది — ముందుగా మునుపటి దశను పూర్తి చేయండి", + "builderTitle": "కాంబోను రూపొందించండి", + "builderBrowseCatalog": "కేటలాగ్ను బ్రౌజ్ చేయండి", + "builderProvider": "ప్రొవైడర్", + "builderLoadingProviders": "ప్రొవైడర్లు లోడ్ అవుతున్నాయి...", + "builderSelectProvider": "ప్రొవైడర్ను ఎంచుకోండి", + "builderModel": "మోడల్", + "builderSelectModel": "మోడల్ను ఎంచుకోండి", + "builderProviderFirst": "ముందుగా ప్రొవైడర్ను ఎంచుకోండి", + "builderAccount": "ఖాతా", + "builderPreview": "ప్రివ్యూ", + "builderAddStep": "దశను జోడించండి", + "builderDuplicateExact": "ఇదే ప్రొవైడర్/మోడల్/ఖాతా దశ ఇప్పటికే కాంబోలో ఉంది.", + "builderComboRef": "కాంబో సూచన", + "builderAddComboRef": "కాంబో సూచనను జోడించండి", + "builderComboRefStep": "కాంబో సూచనను జోడించండి", + "builderPinnedAccount": "పిన్ చేసిన ఖాతా", + "builderLegacyEntry": "లెగసీ ఎంట్రీ", + "reviewName": "పేరు", + "reviewStrategy": "వ్యూహం", + "reviewSteps": "దశలు", + "reviewAccounts": "ఖాతాలు", + "reviewProviders": "ప్రొవైడర్లు", + "reviewComboRefs": "కాంబో సూచనలు", + "reviewAdvanced": "అధునాతన సెట్టింగ్లు", + "reviewAgentFlags": "ఏజెంట్ ఫ్లాగ్లు", + "reviewSequence": "మోడల్ క్రమం", + "reviewNoSteps": "దశలు ఏవీ కాన్ఫిగర్ చేయబడలేదు", + "builderStagesDescription": "కాంబోలను నిర్వచించడానికి, దశలను రూపొందించడానికి, రూటింగ్ వ్యూహాన్ని ఎంచుకోవడానికి మరియు ఫలితాలను సమీక్షించడానికి ప్రతి దశను క్రమంగా పూర్తి చేయండి.", + "builderStepsDescription": "ప్రతి కాంబో దశను ఈ క్రమంలో రూపొందించండి: ప్రొవైడర్, మోడల్, ఆపై ఖాతా. ఇది ఒకే ప్రొవైడర్ మరియు మోడల్ను వేర్వేరు ఖాతాలలో మళ్లీ ఉపయోగించడానికి వీలు కల్పిస్తుంది.", + "selectProvider": "ప్రొవైడర్ను ఎంచుకోండి", + "selectProviderPlaceholder": "ఒక ప్రొవైడర్ను ఎంచుకోండి", + "selectModel": "మోడల్ను ఎంచుకోండి", + "selectModelPlaceholder": "ముందుగా ఒక ప్రొవైడర్ను ఎంచుకోండి", + "selectAccount": "ఖాతాను ఎంచుకోండి", + "selectComboToReference": "సూచించాల్సిన కాంబోను ఎంచుకోండి", + "comboReference": "కాంబో సూచన", + "addComboReference": "కాంబో సూచనను జోడించండి", + "addStepBeforeContinue": "తదుపరి దశకు వెళ్లే ముందు కనీసం ఒక దశను జోడించండి.", + "previewNextStep": "తదుపరి దశను ప్రివ్యూ చేయండి", + "autoSelectAccount": "రన్టైమ్లో ఖాతాను స్వయంచాలకంగా ఎంచుకోండి", + "modePackBalanced": "సమతుల్యమైనది", + "modePackBudget": "బడ్జెట్", + "modePackPerformance": "పనితీరు", + "modePackCustom": "అనుకూలం", + "browseLegacyCatalog": "లెగసీ కాంబో కేటలాగ్ను బ్రౌజ్ చేయండి", + "agentFeaturesTitle": "ఏజెంట్ ఫీచర్లు", + "agentFeaturesDescription": "ఈ కాంబోను ఉపయోగించే ఏజెంట్ల కోసం అధునాతన ఫీచర్లను ప్రారంభించండి", "responseValidationTitle": "రెస్పాన్స్ ధ్రువీకరణ", "responseValidationHelp": "200 OK బాడీ ఈ తనిఖీలలో విఫలమైనప్పుడు (అసిస్టెంట్ కంటెంట్) తదుపరి టార్గెట్‌కు ఫెయిల్‌ఓవర్ చేయండి.", "responseValidationForbidden": "నిషేధించబడిన సబ్‌స్ట్రింగ్‌లు (లైనుకు ఒకటి)", @@ -3753,13 +3753,13 @@ "responseValidationMinLength": "కనిష్ట కంటెంట్ పొడవు (అక్షరాలు)", "responseValidationJsonPaths": "JSON-path తనిఖీలు", "responseValidationAddCheck": "+ తనిఖీని జోడించండి", - "agentFeaturesSystemMessageOverride": "Override system message", - "agentFeaturesSystemMessagePlaceholder": "You are an expert assistant...", - "agentFeaturesSystemMessageHint": "System message override for agents", + "agentFeaturesSystemMessageOverride": "సిస్టమ్ సందేశాన్ని ఓవర్రైడ్ చేయండి", + "agentFeaturesSystemMessagePlaceholder": "మీరు నిపుణులైన సహాయకులు...", + "agentFeaturesSystemMessageHint": "ఏజెంట్ల కోసం సిస్టమ్ సందేశ ఓవర్రైడ్", "agentFeaturesToolFilterRegex": "/regex-pattern/", - "agentFeaturesToolFilterHint": "Tool filter regex for agents", - "agentFeaturesContextCacheHint": "Enable in-context cache for agent tools", - "agentFeaturesContextCacheProtection": "Protect cache from agent tool mutations", + "agentFeaturesToolFilterHint": "ఏజెంట్ల కోసం టూల్ ఫిల్టర్ రెగ్యులర్ ఎక్స్ప్రెషన్", + "agentFeaturesContextCacheHint": "ఏజెంట్ టూల్స్ కోసం ఇన్-కాంటెక్స్ట్ క్యాష్ను ప్రారంభించండి", + "agentFeaturesContextCacheProtection": "ఏజెంట్ టూల్ మార్పుల నుండి క్యాష్ను రక్షించండి", "agentFeaturesContextLength": "సందర్భ నిడివి", "agentFeaturesContextLengthPlaceholder": "ఉదా 128000", "agentFeaturesContextLengthHint": "/v1/మోడల్స్‌లో ఈ కాంబో కోసం సందర్భ విండోను నిర్వచిస్తుంది.", @@ -3788,40 +3788,40 @@ "duplicateAutoComboTitle": "{name} నుండి స్థిర కంబో సృష్టించండి" }, "costs": { - "title": "Costs", - "pageDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "overview": "Overview", - "budget": "Budget", - "totalCost": "Total Cost", - "breakdown": "Cost Breakdown", - "noData": "No cost data", - "byModel": "By Model", - "byProvider": "By Provider", - "range7d": "7 Days", - "range30d": "30 Days", - "range90d": "90 Days", - "range180d": "180 Days", - "range365d": "365 Days", - "rangeAll": "All Time", - "spend30d": "Spend 30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", - "overviewTitle": "Cost Overview", - "spend7d": "Spend 7D", - "avgCostPerRequest": "Avg Cost / Request", - "noCostDataDescription": "Start making requests to see cost data appear here. Costs are tracked automatically for all providers.", - "spendToday": "Spend Today", - "overviewLoadFailed": "Failed to load cost overview", - "overviewDescription": "Real-time spending breakdown across all connected providers and models", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", - "noCostDataTitle": "No cost data yet", - "topModels": "Top Models", - "requestsInWindow": "Requests in Window", + "title": "ఖర్చులు", + "pageDescription": "అన్ని ప్రొవైడర్లలో ఖర్చులను ట్రాక్ చేయండి, ధోరణులను విశ్లేషించండి మరియు మీ AI బడ్జెట్ను నిర్వహించండి", + "overview": "అవలోకనం", + "budget": "బడ్జెట్", + "totalCost": "మొత్తం ఖర్చు", + "breakdown": "ఖర్చుల విభజన", + "noData": "ఖర్చు డేటా లేదు", + "byModel": "మోడల్ వారీగా", + "byProvider": "ప్రొవైడర్ వారీగా", + "range7d": "7 రోజులు", + "range30d": "30 రోజులు", + "range90d": "90 రోజులు", + "range180d": "180 రోజులు", + "range365d": "365 రోజులు", + "rangeAll": "మొత్తం కాలం", + "spend30d": "30 రోజుల ఖర్చు", + "activeModels": "సక్రియ మోడల్లు", + "flatRateEstimateNotice": "స్థిర-రేటు సబ్స్క్రిప్షన్ల కోసం టోకెన్-ధర అంచనాలను కలిగి ఉంటుంది, బిల్ చేసిన ఖర్చును కాదు.", + "flatRateEstimateForecast": "అంచనాలో స్థిర-రేటు అంచనాలు ఉన్నాయి.", + "selectedWindow": "ఎంచుకున్న కాలవ్యవధి", + "activeProviders": "సక్రియ ప్రొవైడర్లు", + "overviewTitle": "ఖర్చు అవలోకనం", + "spend7d": "7 రోజుల ఖర్చు", + "avgCostPerRequest": "అభ్యర్థనకు సగటు ఖర్చు", + "noCostDataDescription": "ఖర్చు డేటా ఇక్కడ కనిపించడానికి అభ్యర్థనలు చేయడం ప్రారంభించండి. అన్ని ప్రొవైడర్ల ఖర్చులు స్వయంచాలకంగా ట్రాక్ చేయబడతాయి.", + "spendToday": "ఈరోజు ఖర్చు", + "overviewLoadFailed": "ఖర్చు అవలోకనాన్ని లోడ్ చేయడం విఫలమైంది", + "overviewDescription": "కనెక్ట్ చేసిన అన్ని ప్రొవైడర్లు మరియు మోడల్లలో నిజ-సమయ ఖర్చు విభజన", + "providerShare": "ప్రొవైడర్ వాటా", + "topProviders": "అగ్ర ప్రొవైడర్లు", + "costTrend": "ఖర్చు ధోరణి", + "noCostDataTitle": "ఇంకా ఖర్చు డేటా లేదు", + "topModels": "అగ్ర మోడల్లు", + "requestsInWindow": "కాలవ్యవధిలోని అభ్యర్థనలు", "tokenUsage": "టోకెన్ వినియోగం", "totalTokens": "మొత్తం టోకెన్లు", "inputTokens": "ఇన్‌పుట్ టోకెన్‌లు", @@ -3881,139 +3881,139 @@ "showingTopCostRows": "సరిపోలే {total} వరుసల్లో {shown} చూపిస్తోంది (టాప్ 50)." }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", - "available": "Available Endpoints", + "title": "API ఎండ్పాయింట్", + "subtitle": "చాలా SDKలు మరియు సాధనాలతో OpenAI-అనుకూల endpointను ఉపయోగించండి.", + "testEndpoint": "endpointను పరీక్షించండి →", + "advancedProtocols": "అధునాతన ప్రోటోకాల్లు", + "available": "అందుబాటులో ఉన్న Endpointలు", "cloudProxy": "Cloud Proxy", - "disableConfirm": "Are you sure you want to disable cloud proxy?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", - "registeredKeys": "Registered Keys", + "disableConfirm": "మీరు cloud proxyని నిలిపివేయాలనుకుంటున్నారని ఖచ్చితంగా అనుకుంటున్నారా?", + "baseUrl": "బేస్ URL", + "apiKeyLabel": "API కీ", + "registeredKeys": "నమోదిత కీలు", "chatCompletions": "Chat Completions", - "responses": "Responses", - "listModels": "List Models", - "usingCloudProxy": "Using Cloud Proxy", - "usingLocalServer": "Using Local Server", - "machineId": "Machine ID: {id}...", - "disableCloud": "Disable Cloud", - "enableCloud": "Enable Cloud", - "modelsAcrossEndpoints": "{models} models across {endpoints} endpoints", - "loadingModels": "Loading available models...", - "chatDesc": "Streaming & non-streaming chat with all providers", - "embeddings": "Embeddings", - "embeddingsDesc": "Text embeddings for search & RAG pipelines", - "imageGeneration": "Image Generation", - "imageDesc": "Generate images from text prompts", + "responses": "ప్రతిస్పందనలు", + "listModels": "మోడల్లను జాబితా చేయండి", + "usingCloudProxy": "Cloud Proxyని ఉపయోగిస్తోంది", + "usingLocalServer": "Local Serverను ఉపయోగిస్తోంది", + "machineId": "మెషిన్ ID: {id}...", + "disableCloud": "Cloudను నిలిపివేయండి", + "enableCloud": "Cloudను ప్రారంభించండి", + "modelsAcrossEndpoints": "{endpoints} endpointలలో {models} మోడల్లు", + "loadingModels": "అందుబాటులో ఉన్న మోడల్లను లోడ్ చేస్తోంది...", + "chatDesc": "అన్ని ప్రొవైడర్లతో స్ట్రీమింగ్ & నాన్-స్ట్రీమింగ్ చాట్", + "embeddings": "ఎంబెడ్డింగ్లు", + "embeddingsDesc": "శోధన & RAG పైప్లైన్ల కోసం టెక్స్ట్ ఎంబెడ్డింగ్లు", + "imageGeneration": "చిత్ర సృష్టి", + "imageDesc": "టెక్స్ట్ ప్రాంప్ట్ల నుండి చిత్రాలను రూపొందించండి", "rerank": "Rerank", - "rerankDesc": "Rerank documents by relevance to a query", - "audioTranscription": "Audio Transcription", - "audioTranscriptionDesc": "Transcribe audio files to text (Whisper)", - "textToSpeech": "Text to Speech", - "textToSpeechDesc": "Convert text to natural-sounding speech", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", - "moderations": "Moderations", - "moderationsDesc": "Content moderation and safety classification", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", - "categoryCore": "Core APIs", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", - "categoryUtility": "Utility & Management", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", - "enableCloudTitle": "Enable Cloud Proxy", - "whatYouGet": "What you will get", - "cloudBenefitAccess": "Access your API from anywhere in the world", - "cloudBenefitShare": "Share endpoint with your team easily", - "cloudBenefitPorts": "No need to open ports or configure firewall", - "cloudBenefitEdge": "Fast global edge network", - "cloudSessionNote": "Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted.", - "cloudUnstableNote": "Cloud is currently unstable with Claude Code OAuth in some cases.", - "cloudConnected": "Cloud Proxy connected!", - "connectingToCloud": "Connecting to cloud...", - "verifyingConnection": "Verifying connection...", - "connecting": "Connecting...", - "verifying": "Verifying...", - "connected": "Connected!", - "disableCloudTitle": "Disable Cloud Proxy", - "disableWarning": "All auth sessions will be deleted from cloud.", - "syncingData": "Syncing latest data...", - "disablingCloud": "Disabling cloud...", - "syncing": "Syncing...", - "disabling": "Disabling...", - "cloudConnectedVerified": "Cloud Proxy connected and verified!", - "connectedVerificationPending": "Connected — verification pending", - "connectedVerificationPendingWithError": "Connected — verification pending: {error}", - "cloudDisabledSuccess": "Cloud disabled successfully", - "syncedSuccess": "Synced successfully", - "failedDisable": "Failed to disable cloud", - "failedEnable": "Failed to enable cloud", - "cloudRequestTimeout": "Cloud request timeout", - "cloudRequestFailed": "Cloud request failed", - "cloudWorkerUnreachable": "Could not reach cloud worker. Make sure the cloud service is running (npm run dev in /cloud).", - "connectionFailed": "Connection failed", - "syncFailed": "Failed to sync cloud data", + "rerankDesc": "క్వెరీకి సంబంధించిన ప్రాసంగికత ఆధారంగా డాక్యుమెంట్లను పునఃర్యాంక్ చేయండి", + "audioTranscription": "ఆడియో లిప్యంతరీకరణ", + "audioTranscriptionDesc": "ఆడియో ఫైల్లను టెక్స్ట్గా లిప్యంతరీకరించండి (Whisper)", + "textToSpeech": "టెక్స్ట్ నుండి ప్రసంగం", + "textToSpeechDesc": "టెక్స్ట్ను సహజంగా వినిపించే ప్రసంగంగా మార్చండి", + "musicGeneration": "సంగీత సృష్టి", + "musicDesc": "ComfyUI (Stable Audio, MusicGen) ద్వారా సంగీతం మరియు ఆడియో ట్రాక్లను రూపొందించండి", + "moderations": "మోడరేషన్లు", + "moderationsDesc": "కంటెంట్ మోడరేషన్ మరియు భద్రతా వర్గీకరణ", + "responsesDesc": "Codex మరియు అధునాతన ఏజెంటిక్ వర్క్ఫ్లోల కోసం OpenAI Responses API", + "listModelsDesc": "కనెక్ట్ చేసిన అన్ని ప్రొవైడర్లలో అందుబాటులో ఉన్న అన్ని మోడల్లను జాబితా చేయండి", + "settingsApiDesc": "API ద్వారా OmniRoute కాన్ఫిగరేషన్ను చదవండి మరియు సవరించండి", + "settingsApi": "సెట్టింగ్ల API", + "categoryCore": "కోర్ APIలు", + "categoryMedia": "మీడియా & మల్టీ-మోడల్", + "categorySearch": "శోధన & ఆవిష్కరణ", + "categoryUtility": "యుటిలిటీ & నిర్వహణ", + "webSearch": "వెబ్ శోధన", + "webSearchDesc": "ఆటోమేటిక్ ఫెయిల్ఓవర్ మరియు క్యాషింగ్తో బహుళ ప్రొవైడర్లలో ఏకీకృత వెబ్ శోధన", + "searchProvider": "శోధన ప్రొవైడర్", + "searchProviderDesc": "ఈ ప్రొవైడర్ POST /v1/search ద్వారా వెబ్ శోధన కోసం ఉపయోగించబడుతుంది. మోడల్ కాన్ఫిగరేషన్ అవసరం లేదు — API కీ కనెక్ట్ చేసిన వెంటనే శోధన ప్రొవైడర్లు ఉపయోగించడానికి సిద్ధంగా ఉంటాయి.", + "enableCloudTitle": "క్లౌడ్ ప్రాక్సీని ప్రారంభించండి", + "whatYouGet": "మీకు లభించేవి", + "cloudBenefitAccess": "ప్రపంచంలో ఎక్కడి నుండైనా మీ APIని యాక్సెస్ చేయండి", + "cloudBenefitShare": "మీ బృందంతో ఎండ్పాయింట్ను సులభంగా పంచుకోండి", + "cloudBenefitPorts": "పోర్ట్లను తెరవడం లేదా ఫైర్వాల్ను కాన్ఫిగర్ చేయడం అవసరం లేదు", + "cloudBenefitEdge": "వేగవంతమైన గ్లోబల్ ఎడ్జ్ నెట్వర్క్", + "cloudSessionNote": "క్లౌడ్ మీ ప్రమాణీకరణ సెషన్ను 1 రోజు పాటు ఉంచుతుంది. ఉపయోగించకపోతే, అది స్వయంచాలకంగా తొలగించబడుతుంది.", + "cloudUnstableNote": "కొన్ని సందర్భాల్లో Claude Code OAuthతో క్లౌడ్ ప్రస్తుతం అస్థిరంగా ఉంది.", + "cloudConnected": "క్లౌడ్ ప్రాక్సీ కనెక్ట్ అయింది!", + "connectingToCloud": "క్లౌడ్కు కనెక్ట్ అవుతోంది...", + "verifyingConnection": "కనెక్షన్ను ధృవీకరిస్తోంది...", + "connecting": "కనెక్ట్ అవుతోంది...", + "verifying": "ధృవీకరిస్తోంది...", + "connected": "కనెక్ట్ అయింది!", + "disableCloudTitle": "క్లౌడ్ ప్రాక్సీని నిలిపివేయండి", + "disableWarning": "అన్ని ప్రమాణీకరణ సెషన్లు క్లౌడ్ నుండి తొలగించబడతాయి.", + "syncingData": "తాజా డేటాను సమకాలీకరిస్తోంది...", + "disablingCloud": "క్లౌడ్ను నిలిపివేస్తోంది...", + "syncing": "సమకాలీకరిస్తోంది...", + "disabling": "నిలిపివేస్తోంది...", + "cloudConnectedVerified": "Cloud Proxy కనెక్ట్ చేయబడి, ధృవీకరించబడింది!", + "connectedVerificationPending": "కనెక్ట్ చేయబడింది — ధృవీకరణ పెండింగ్లో ఉంది", + "connectedVerificationPendingWithError": "కనెక్ట్ చేయబడింది — ధృవీకరణ పెండింగ్లో ఉంది: {error}", + "cloudDisabledSuccess": "క్లౌడ్ విజయవంతంగా నిలిపివేయబడింది", + "syncedSuccess": "విజయవంతంగా సమకాలీకరించబడింది", + "failedDisable": "క్లౌడ్ను నిలిపివేయడం విఫలమైంది", + "failedEnable": "క్లౌడ్ను ప్రారంభించడం విఫలమైంది", + "cloudRequestTimeout": "క్లౌడ్ అభ్యర్థన సమయం ముగిసింది", + "cloudRequestFailed": "క్లౌడ్ అభ్యర్థన విఫలమైంది", + "cloudWorkerUnreachable": "క్లౌడ్ వర్కర్ను చేరుకోలేకపోయాము. క్లౌడ్ సేవ రన్ అవుతోందని నిర్ధారించుకోండి (/cloudలో npm run dev).", + "connectionFailed": "కనెక్షన్ విఫలమైంది", + "syncFailed": "క్లౌడ్ డేటాను సమకాలీకరించడం విఫలమైంది", "cloudflaredTitle": "Cloudflare Quick Tunnel", - "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredDescription": "ఈ ఎండ్పాయింట్ కోసం Cloudflare Quick Tunnelను సృష్టించండి.", + "cloudflaredUrlNotice": "తాత్కాలిక Cloudflare Quick Tunnelను సృష్టిస్తుంది. ప్రతి పునఃప్రారంభం తర్వాత URL మారుతుంది.", + "cloudflaredEnable": "Tunnelను ప్రారంభించండి", + "cloudflaredInstallAndEnable": "ఇన్స్టాల్ చేసి ప్రారంభించండి", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "రన్ అవుతోంది", + "cloudflaredStarting": "ప్రారంభమవుతోంది", + "cloudflaredStoppedState": "ఆగిపోయింది", + "cloudflaredNotInstalled": "ఇన్స్టాల్ చేయబడలేదు", + "cloudflaredUnsupported": "మద్దతు లేదు", + "cloudflaredError": "లోపం", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", - "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after every restart.", - "cloudflaredUnsupportedNote": "This platform is not supported for managed installs. Install cloudflared manually or point CLOUDFLARED_BIN to an existing binary.", + "cloudflaredTemporaryNote": "Quick Tunnel URLలు తాత్కాలికమైనవి, ప్రతి పునఃప్రారంభం తర్వాత మారుతాయి.", + "cloudflaredUnsupportedNote": "నిర్వహిత ఇన్స్టాలేషన్లకు ఈ ప్లాట్ఫారమ్ మద్దతు ఇవ్వదు. cloudflaredను మాన్యువల్గా ఇన్స్టాల్ చేయండి లేదా CLOUDFLARED_BINను ఇప్పటికే ఉన్న బైనరీకి పాయింట్ చేయండి.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", - "providerModelsTitle": "{provider} — Models", - "noModelsForProvider": "No models available for this provider.", + "cloudflaredLastError": "చివరి లోపం: {error}", + "providerModelsTitle": "{provider} — మోడళ్లు", + "noModelsForProvider": "ఈ ప్రొవైడర్కు మోడళ్లు అందుబాటులో లేవు.", "chat": "Chat", - "embedding": "Embedding", - "image": "Image", - "custom": "custom", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "embedding": "ఎంబెడింగ్", + "image": "చిత్రం", + "custom": "అనుకూలం", + "modelsCount": "{count, plural, one {# మోడల్} other {# మోడళ్లు}}", + "sectionTitle": "ఇంటిగ్రేషన్ ఉపరితలం", + "sectionDescription": "OpenAI-అనుకూల APIలు మరియు కార్యాచరణ ప్రోటోకాల్ ఎండ్పాయింట్లు", "tabApis": "APIలు", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "ప్రోటోకాల్లు", + "tabsAria": "ఎండ్పాయింట్ విభాగాలు", + "protocolsTitle": "ప్రోటోకాల్లు", + "protocolsDescription": "MCP మరియు A2A అనేవి ప్రత్యేక పర్యవేక్షణ సామర్థ్యం మరియు నియంత్రణలతో కూడిన ప్రథమ-శ్రేణి ఎండ్పాయింట్లు.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "stdio ద్వారా Model Context Protocol", + "a2aCardTitle": "A2A సర్వర్", + "a2aCardDescription": "Agent2Agent JSON-RPC ఎండ్పాయింట్", + "protocolToolsLabel": "సాధనాలు", + "protocolTasksLabel": "టాస్క్లు", + "protocolActiveStreamsLabel": "యాక్టివ్ స్ట్రీమ్లు", + "protocolLastActivity": "చివరి యాక్టివిటీ", + "quickStart": "త్వరిత ప్రారంభం", + "openMcpDashboard": "MCP నిర్వహణను తెరవండి", + "openA2aDashboard": "A2A నిర్వహణను తెరవండి", + "mcpQuickStartTitle": "MCP త్వరిత ప్రారంభం", + "mcpQuickStartStep1": "`omniroute --mcp` ద్వారా MCP సర్వర్ను అమలు చేయండి.", + "mcpQuickStartStep2": "stdio ట్రాన్స్పోర్ట్ ద్వారా కనెక్ట్ అయ్యేలా మీ MCP క్లయింట్ను కాన్ఫిగర్ చేయండి.", + "mcpQuickStartStep3": "`omniroute_get_health` మరియు `omniroute_list_combos` వంటి సాధనాలను అమలు చేయండి.", + "a2aQuickStartTitle": "A2A త్వరిత ప్రారంభం", + "a2aQuickStartStep1": "`/.well-known/agent.json` వద్ద ఏజెంట్ కార్డ్ను కనుగొనండి.", + "a2aQuickStartStep2": "`message/send` లేదా `message/stream` ఉపయోగించి `POST /a2a`కు JSON-RPC అభ్యర్థనలను పంపండి.", + "a2aQuickStartStep3": "`tasks/get` మరియు `tasks/cancel` ఉపయోగించి టాస్క్లను ట్రాక్ చేసి నియంత్రించండి.", + "completionsLegacy": "కంప్లీషన్లు (లెగసీ)", + "completionsLegacyDesc": "లెగసీ OpenAI టెక్స్ట్ కంప్లీషన్లు — ప్రాంప్ట్ స్ట్రింగ్ మరియు మెసేజ్ల అరే ఫార్మాట్ రెండింటినీ అంగీకరిస్తాయి", "messagesApi": "సందేశాలు", "messagesApiDesc": "క్లాడ్-అనుకూల ప్రొవైడర్ల కోసం స్థానిక ఆంత్రోపిక్ సందేశాల API ఫార్మాట్", "imageEdits": "చిత్ర సవరణలు", @@ -4022,41 +4022,41 @@ "batchApiDesc": "పెద్ద బ్యాచ్‌ల అభ్యర్థనలను అసమకాలికంగా ప్రాసెస్ చేయండి (OpenAI-అనుకూలమైనది)", "filesApi": "ఫైల్స్ API", "filesApiDesc": "బ్యాచ్ ప్రాసెసింగ్ కోసం ఫైల్‌లను అప్‌లోడ్ చేయండి మరియు నిర్వహించండి", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "వీడియో జనరేషన్", + "videoDesc": "ComfyUI మరియు Stable Video Diffusion వంటి AI మోడళ్లను ఉపయోగించి వీడియోలను రూపొందించండి.", + "tailscaleRequestFailed": "Tailscale స్థితిని లోడ్ చేయడంలో విఫలమైంది", + "tailscaleEnableFailed": "Tailscale Funnelను ప్రారంభించడంలో విఫలమైంది", + "tailscaleWaitingForLogin": "తెరిచిన బ్రౌజర్ ట్యాబ్లో Tailscale లాగిన్ను పూర్తి చేయండి. OmniRoute స్వయంచాలకంగా మళ్లీ ప్రయత్నిస్తుంది.", + "tailscaleLoginTimedOut": "Tailscale లాగిన్ కోసం వేచి ఉండే సమయం ముగిసింది", + "tailscaleWaitingForFunnel": "తెరిచిన బ్రౌజర్ ట్యాబ్లో ఈ పరికరం కోసం Funnelను ప్రారంభించండి. OmniRoute పోలింగ్ను కొనసాగిస్తుంది.", + "tailscaleFunnelTimedOut": "Tailscale Funnel ప్రారంభం కావడానికి వేచి ఉండే సమయం ముగిసింది", + "tailscaleStarted": "Tailscale Funnel ప్రారంభించబడింది", + "tailscaleDisableFailed": "Tailscale Funnelను నిలిపివేయడంలో విఫలమైంది", + "tailscaleStopped": "Tailscale Funnel నిలిపివేయబడింది", + "tailscaleInstallFailed": "Tailscaleను ఇన్స్టాల్ చేయడంలో విఫలమైంది", + "tailscaleInstallProgress": "పని జరుగుతోంది...", + "tailscaleInstalled": "Tailscale విజయవంతంగా ఇన్స్టాల్ చేయబడింది", + "tailscaleRunning": "అమలులో ఉంది", + "tailscaleNeedsLogin": "లాగిన్ అవసరం", + "tailscaleStoppedState": "ఆపివేయబడింది", + "tailscaleNotInstalled": "ఇన్స్టాల్ చేయబడలేదు", + "tailscaleUnsupported": "మద్దతు లేదు", + "tailscaleError": "లోపం", + "tailscaleDisable": "Funnelను ఆపండి", + "tailscaleInstallAndEnable": "ఇన్స్టాల్ చేసి ప్రారంభించండి", + "tailscaleLoginAndEnable": "లాగిన్ చేసి ప్రారంభించండి", + "tailscaleEnable": "Funnelను ప్రారంభించండి", + "tailscaleUrlNotice": "మీ Tailscale .ts.net చిరునామాను ఉపయోగిస్తుంది. మొదటిసారి ఉపయోగించేటప్పుడు లాగిన్ మరియు Funnel ఆమోదం అవసరం కావచ్చు.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", - "tailscaleSudoLabel": "Sudo Password (required on macOS/Linux)", + "tailscaleNeedsLoginHint": "ఈ మెషీన్ను Tailscaleతో ప్రమాణీకరించి, ఆపై Funnelను ప్రారంభించండి.", + "tailscaleBinaryPath": "బైనరీ: {path}", + "tailscaleLastError": "చివరి లోపం: {error}", + "tailscaleInstallTitle": "Tailscaleను ఇన్స్టాల్ చేయండి", + "tailscaleInstallIntro": "ఈ మెషీన్లో Tailscaleను ఇన్స్టాల్ చేసి, Funnelను ప్రారంభించడానికి OmniRouteను సిద్ధం చేస్తుంది.", + "tailscaleInstallPasswordHint": "macOS మరియు Linuxలో, ప్యాకేజీ ఇన్స్టాలేషన్ మరియు డీమన్ ప్రారంభం కోసం sudo అవసరం కావచ్చు.", + "tailscaleSudoPlaceholder": "ఐచ్ఛిక sudo పాస్వర్డ్", + "tailscaleInstalling": "ఇన్స్టాల్ అవుతోంది", + "tailscaleSudoLabel": "Sudo పాస్వర్డ్ (macOS/Linuxలో అవసరం)", "ngrokTitle": "ngrok సొరంగం", "ngrokRunning": "నడుస్తోంది", "ngrokStarting": "ప్రారంభిస్తోంది", @@ -4108,7 +4108,7 @@ "all": "అన్నీ", "more": "+{count} మరిన్ని", "showInternalTooltip": "అంతర్గత రూట్‌లను చూపించండి లేదా దాచండి (డిఫాల్ట్‌గా దాచబడింది)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "బేరర్ ప్రమాణీకరణ", "requestBody": "రిక్వెస్ట్ బాడీ", "close": "మూసివేయి", "tryIt": "ప్రయత్నించండి", @@ -4144,9 +4144,9 @@ "tierPublic": "పబ్లిక్", "hideInternal": "అంతర్గతమైనవి దాచు", "showInternal": "అంతర్గతమైనవి చూపించు", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "అనుకూల సిస్టమ్ ప్రాంప్ట్", + "customSystemPromptDescription": "ప్రతి మోడల్ అభ్యర్థనలో ఒక అనుకూల సిస్టమ్ ప్రాంప్ట్ను చొప్పించండి", + "customSystemPromptPlaceholder": "ఉదా. ఎల్లప్పుడూ సముద్రపు దొంగలా మాట్లాడండి...", "obsidianEnterToken": "దయచేసి Obsidian API టోకెన్‌ను నమోదు చేయండి", "obsidianConnectFailed": "కనెక్ట్ చేయడం విఫలమైంది", "obsidianConnectionFailed": "కనెక్షన్ విఫలమైంది", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "టోకెన్ కాన్ఫిగర్ చేయబడింది. Notion టూల్స్ MCP ద్వారా అందుబాటులో ఉన్నాయి." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "ఎండ్పాయింట్ ప్రాక్సీ", + "tabApiEndpoints": "API ఎండ్పాయింట్లు", + "apiEndpointsTitle": "API ఎండ్పాయింట్లు", + "apiEndpointsDescription": "ఇతర అప్లికేషన్లు మరియు సేవలు ఉపయోగించగల బ్యాకెండ్ API ఎండ్పాయింట్లు. ఈ విభాగం అందుబాటులో ఉన్న అన్ని REST APIలను డాక్యుమెంటేషన్ మరియు పరీక్షా సామర్థ్యాలతో జాబితా చేస్తుంది.", + "comingSoon": "త్వరలో అందుబాటులోకి వస్తుంది", + "plannedFeatures": "ప్రణాళికలో ఉన్న ఫీచర్లు", + "featureRestApi": "ఇంటరాక్టివ్ డాక్యుమెంటేషన్తో REST API ఎండ్పాయింట్ కేటలాగ్", + "featureWebhooks": "Webhook కాన్ఫిగరేషన్ మరియు ఈవెంట్ సబ్స్క్రిప్షన్లు", + "featureSwagger": "OpenAPI / Swagger స్పెక్ స్వయంచాలక ఉత్పత్తి", + "featureAuth": "ప్రతి ఎండ్పాయింట్కు API కీ మరియు OAuth స్కోప్ నిర్వహణ" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP డ్యాష్బోర్డ్ లోడ్ అవుతోంది...", + "activate": "ప్రారంభించండి", + "deactivate": "నిష్క్రియం చేయండి", + "confirmSwitchCombo": "\"{combo}\" కాంబోను {action} చేయాలా?", + "switchComboFailed": "కాంబో స్థితిని మార్చడం విఫలమైంది.", + "switchComboSuccess": "\"{combo}\" కాంబో నవీకరించబడింది.", + "confirmApplyProfile": "స్థిరత్వ ప్రొఫైల్ \"{profile}\"ను వర్తింపజేయాలా?", + "applyProfileFailed": "స్థిరత్వ ప్రొఫైల్ను వర్తింపజేయడం విఫలమైంది.", + "applyProfileSuccess": "ప్రొఫైల్ \"{profile}\" వర్తింపజేయబడింది.", + "confirmResetBreakers": "అన్ని సర్క్యూట్ బ్రేకర్లను రీసెట్ చేయాలా?", + "resetBreakersFailed": "సర్క్యూట్ బ్రేకర్లను రీసెట్ చేయడం విఫలమైంది.", + "resetBreakersSuccess": "సర్క్యూట్ బ్రేకర్లు రీసెట్ చేయబడ్డాయి.", + "processStatus": "ప్రాసెస్ స్థితి", "online": "Online", "offline": "Offline", "disableLabel": "{label} నిలిపివేయి", @@ -4237,119 +4237,119 @@ "mcpStep2": "stdio ట్రాన్స్‌పోర్ట్ ద్వారా కనెక్ట్ కావడానికి మీ MCP క్లయింట్‌ను కాన్ఫిగర్ చేయండి.", "mcpStep3": "{code1} మరియు {code2} వంటి టూల్స్‌ను ఇన్వోక్ చేయండి.", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "సెషన్ అప్టైమ్", + "lastHeartbeat": "చివరి హార్ట్బీట్", + "activity24h": "కార్యాచరణ (24గం.)", + "totalCalls": "మొత్తం కాల్లు", + "successRate": "విజయ రేటు", + "avgLatency": "సగటు లేటెన్సీ", + "topTools": "అగ్ర సాధనాలు", + "noToolCalls24h": "గత 24 గంటల్లో సాధన కాల్లు లేవు.", + "runtimeDetails": "రన్టైమ్ వివరాలు", + "transport": "రవాణా", + "scopesEnforced": "అమలు చేయబడిన స్కోప్లు", + "yes": "అవును", + "no": "కాదు", + "lastCall": "చివరి కాల్", + "heartbeatPath": "హార్ట్బీట్ పాత్", + "operationalControls": "కార్యాచరణ నియంత్రణలు", + "switchCombo": "కాంబోను మార్చు", + "inactive": "నిష్క్రియం", + "active": "సక్రియం", + "activateCombo": "కాంబోను సక్రియం చేయి", + "deactivateCombo": "కాంబోను నిష్క్రియం చేయి", + "applyResilienceProfile": "స్థిరత్వ ప్రొఫైల్ను వర్తింపజేయి", + "profileAggressive": "తీవ్రమైన", + "profileBalanced": "సమతుల్యమైన", + "profileConservative": "సంప్రదాయబద్ధమైన", + "applyProfile": "ప్రొఫైల్ను వర్తింపజేయి", + "resetCircuitBreakers": "సర్క్యూట్ బ్రేకర్లను రీసెట్ చేయి", + "resetCircuitBreakersHelp": "ప్రొవైడర్ల ప్రస్తుత బ్రేకర్ స్థితి మరియు వైఫల్య కౌంటర్లను క్లియర్ చేస్తుంది.", + "resetAllBreakers": "అన్ని బ్రేకర్లను రీసెట్ చేయి", + "toolsAndScopes": "సాధనాలు మరియు స్కోప్లు", + "tableTool": "సాధనం", + "tableScopes": "స్కోప్లు", + "tablePhase": "దశ", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "ఆడిట్ లాగ్", + "auditSummary": "కాల్స్: {total} | {totalPages}లో {page}వ పేజీ", + "allTools": "అన్ని టూల్స్", + "allResults": "అన్ని ఫలితాలు", + "success": "విజయం", + "failure": "వైఫల్యం", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "ఆడిట్ నమోదులు లోడ్ అవుతున్నాయి...", + "noAuditEntriesForFilters": "ప్రస్తుత ఫిల్టర్లకు ఆడిట్ నమోదులు ఏవీ కనుగొనబడలేదు.", + "tableTimestamp": "సమయ ముద్ర", + "tableDuration": "వ్యవధి", + "tableResult": "ఫలితం", + "tableApiKey": "API కీ", + "failed": "విఫలమైంది", + "previous": "మునుపటి", + "next": "తదుపరి", + "apiKeyId": "Api కీ ID", + "offset": "ఆఫ్సెట్", + "limit": "పరిమితి", + "tool": "టూల్" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A డ్యాష్బోర్డ్ లోడ్ అవుతోంది...", + "confirmCancelTask": "టాస్క్ {taskId}ను రద్దు చేయాలా?", + "cancelTaskFailed": "టాస్క్ను రద్దు చేయడం విఫలమైంది.", + "cancelTaskSuccess": "టాస్క్ {taskId} రద్దు చేయబడింది.", + "smokeSendFailed": "message/send స్మోక్ టెస్ట్ విఫలమైంది.", + "smokeSendSuccessWithTask": "message/send సఫలమైంది (టాస్క్ {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream స్మోక్ టెస్ట్ విఫలమైంది.", + "smokeStreamSuccessWithTask": "message/stream సఫలమైంది (టాస్క్ {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "టాస్క్ ID లేకుండానే message/stream పూర్తయింది.", + "health": "స్థితి", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "మొత్తం టాస్క్లు", + "activeStreams": "యాక్టివ్ స్ట్రీమ్లు", + "lastTask": "చివరి టాస్క్", + "taskStateOverview": "టాస్క్ స్థితి అవలోకనం", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "సమర్పించబడింది", + "working": "పని చేస్తోంది", + "completed": "పూర్తయింది", + "failed": "విఫలమైంది", + "cancelled": "రద్దు చేయబడింది" }, - "agentCard": "Agent card", + "agentCard": "ఏజెంట్ కార్డ్", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "వెర్షన్", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "సామర్థ్యాలు", + "agentCardNotAvailable": "ఏజెంట్ కార్డ్ అందుబాటులో లేదు.", + "quickValidation": "త్వరిత ధృవీకరణ", + "quickValidationDescription": "ప్రత్యక్ష `/a2a` ఎండ్పాయింట్ ద్వారా స్మోక్ కాల్లను అమలు చేస్తుంది.", + "runMessageSend": "message/send అమలు చేయండి", + "runMessageStream": "message/stream అమలు చేయండి", + "taskManagement": "టాస్క్ నిర్వహణ", + "taskSummary": "{total} టాస్క్లు | {totalPages}లో {page}వ పేజీ", + "allStates": "అన్నీ", + "allSkills": "అన్ని నైపుణ్యాలు", + "loadingTasks": "టాస్క్లు లోడ్ అవుతున్నాయి...", + "noTasksForFilters": "ప్రస్తుత ఫిల్టర్లకు టాస్క్లు ఏవీ కనుగొనబడలేదు.", + "tableTask": "టాస్క్", + "tableSkill": "నైపుణ్యం", + "tableState": "స్థితి", + "tableUpdated": "నవీకరించబడింది", + "tableActions": "చర్యలు", + "view": "వీక్షించండి", + "cancel": "రద్దు చేయండి", + "previous": "మునుపటి", + "next": "తదుపరి", + "taskDetail": "టాస్క్ వివరాలు", + "close": "మూసివేయండి", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "ఈవెంట్లు", + "artifacts": "ఆర్టిఫ్యాక్ట్లు", + "tablePhase": "పట్టిక దశ", + "offset": "ఆఫ్సెట్", + "limit": "పరిమితి", + "skill": "నైపుణ్యం", "rpcEndpoint": "POST / a2a", "rpcMethodSend": "సందేశం/పంపు", "rpcMethodStream": "సందేశం/ప్రవాహం", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "చర్యలు", + "addMemory": "మెమరీని జోడించండి", + "allTypes": "అన్ని రకాలు", "cancel": "రద్దు చేయి", "checkHealth": "ఆరోగ్యాన్ని తనిఖీ చేయండి", "checkingHealth": "తనిఖీ చేస్తోంది...", @@ -4382,13 +4382,13 @@ "howWorksToggle": "ఇది ఎలా పనిచేస్తుంది", "howWorksContent": "1. ఆటోమేటిక్ ఎక్స్‌ట్రాక్షన్: ప్రతి ప్రతిస్పందన ముగింపులో, వాస్తవాలు మరియు ఎపిసోడ్‌లు స్వయంచాలకంగా గుర్తించబడతాయి మరియు సేవ్ చేయబడతాయి.\n2. రిట్రీవల్: ప్రతి ప్రతిస్పందనకు ముందు, అత్యంత సంబంధిత మెమరీలు FTS5 (ఖచ్చితమైన), వెక్టర్ (సెమాంటిక్) లేదా హైబ్రిడ్ RRF ద్వారా శోధించబడతాయి.\n3. ఇంజెక్షన్: ప్రతిస్పందన నాణ్యతను మెరుగుపరచడానికి సంబంధిత మెమరీలు అసిస్టెంట్ సందర్భంలోకి ఇంజెక్ట్ చేయబడతాయి.\n4. మేనేజ్‌మెంట్: పాత మెమరీలను వీక్షించడానికి, సవరించడానికి, ఎగుమతి చేయడానికి మరియు కుదించడానికి ఈ పేజీని ఉపయోగించండి." }, - "content": "Content", + "content": "కంటెంట్", "contentPlaceholder": "గుర్తుంచుకోవలసిన విలువ లేదా JSON కంటెంట్", - "created": "Created", - "delete": "Delete", + "created": "సృష్టించబడింది", + "delete": "తొలగించండి", "deleteConfirmDesc": "ఈ చర్యను రద్దు చేయలేము. మెమరీ శాశ్వతంగా తీసివేయబడుతుంది.", "deleteConfirmTitle": "మెమరీని తొలగించాలా?", - "description": "View and manage stored memory entries", + "description": "నిల్వ చేసిన మెమరీ నమోదులను వీక్షించి నిర్వహించండి", "editMemory": "మెమరీని సవరించండి", "editModal": { "title": "మెమరీని సవరించండి", @@ -4444,20 +4444,20 @@ "configureCta": "కాన్ఫిగర్ చేయండి", "vectorStoreInstallHint": "వెక్టర్ శోధనను ప్రారంభించడానికి: npm install sqlite-vec (స్థానిక Node.js అవసరం, WASM కాదు), ఆపై పునఃప్రారంభించండి." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "ఎపిసోడిక్", + "export": "ఎగుమతి", + "factual": "వాస్తవిక", "healthUnknown": "ఆరోగ్యం తెలియదు", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "హిట్ రేట్", + "import": "దిగుమతి", "importError": "ఫైల్‌ను దిగుమతి చేయడం విఫలమైంది", "importResult": "{imported} దిగుమతి చేయబడ్డాయి, {skipped} దాటవేయబడ్డాయి", - "key": "Key", + "key": "కీ", "keyPlaceholder": "ఉదా user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "మెమరీలు", "next": "తదుపరి", - "noMemories": "No memories found", + "noMemories": "మెమరీలు ఏవీ కనుగొనబడలేదు", "pageInfo": "{totalPages}లో {page} ({total} మొత్తం)", "pipelineError": "పైప్‌లైన్ లోపం", "pipelineOk": "పైప్‌లైన్ సరే ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "పరివ్యూను పొందడం విఫలమైంది" }, "previous": "మునుపటి", - "procedural": "Procedural", + "procedural": "ప్రక్రియాత్మక", "qdrant": { "title": "Qdrant (వెక్టర్ స్టోర్ టైర్ 2)", "description": "స్కేలబుల్ సెమాంటిక్ శోధన కోసం ఐచ్ఛిక Qdrant ఇంటిగ్రేషన్", @@ -4534,8 +4534,8 @@ }, "save": "సేవ్ చేయండి", "saving": "సేవ్ చేస్తోంది...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "మెమరీలను శోధించండి...", + "semantic": "సెమాంటిక్", "summarize": { "title": "పాత మెమరీలను కుదించండి", "noCandidates": "కుదించడానికి అర్హత ఉన్న మెమరీలు ఏవీ లేవు (నిబంధన: >30 రోజుల పాతవి).", @@ -4547,8 +4547,8 @@ "playground": "ప్లేగ్రౌండ్", "engine": "ఇంజిన్" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "మెమరీ నిర్వహణ", + "tokensUsed": "ఉపయోగించిన టోకెన్లు", "tooltip": { "totalEntries": "ఈ API కీ కోసం నిల్వ చేయబడిన మొత్తం జ్ఞాపకాలు", "tokensUsed": "యాక్టివ్ జ్ఞాపకాల ద్వారా ఆక్రమించబడిన అంచనా వేసిన మొత్తం టోకెన్లు", @@ -4558,15 +4558,15 @@ "procedural": "అసిస్టెంట్ అనుసరించాల్సిన విధానాలు, వర్క్‌ఫ్లోలు మరియు సూచనలు", "semantic": "భావనలు, ప్రాధాన్యతలు మరియు డొమైన్ పరిజ్ఞానం" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "మొత్తం నమోదులు", + "type": "రకం", "memoryEnabled": "మెమరీ ప్రారంభించబడింది" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "నైపుణ్యాలు", + "description": "AI నైపుణ్యాలను నిర్వహించండి మరియు పర్యవేక్షించండి", + "skillsTab": "నైపుణ్యాలు", + "executionsTab": "అమలులు", "selectSkillToInspect": "పరిశీలించడానికి ఎడమ వైపున ఉన్న నైపుణ్యాన్ని ఎంచుకోండి.", "schemaTab": "స్కీమా", "handlerTab": "హ్యాండ్లర్", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "పరీక్షను రన్ చేయండి (ప్లేస్‌హోల్డర్)", "setModeAria": "మోడ్‌ను {mode} కి సెట్ చేయండి", "uninstallSkill": "నైపుణ్యాన్ని అన్‌ఇన్‌స్టాల్ చేయండి", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "శాండ్బాక్స్", + "loading": "నైపుణ్యాలు లోడ్ అవుతున్నాయి...", + "noSkills": "నైపుణ్యాలు ఏవీ కనుగొనబడలేదు", + "noExecutions": "అమలులు ఏవీ కనుగొనబడలేదు", + "enabled": "ప్రారంభించబడింది", + "disabled": "నిలిపివేయబడింది", "delete": "తొలగించు", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "వెర్షన్", + "tableDescription": "వివరణ", + "skill": "నైపుణ్యం", + "status": "స్థితి", + "duration": "వ్యవధి", + "time": "సమయం", + "sandboxConfig": "శాండ్బాక్స్ కాన్ఫిగరేషన్", + "cpuLimit": "CPU పరిమితి", + "cpuLimitDesc": "ఒక్కో నైపుణ్యానికి గరిష్ఠ అమలు సమయం", + "memoryLimit": "మెమరీ పరిమితి", + "memoryLimitDesc": "గరిష్ఠ మెమరీ కేటాయింపు", + "timeout": "గడువు సమయం", + "timeoutDesc": "ప్రతిస్పందన కోసం గరిష్ఠ నిరీక్షణ సమయం", + "networkAccess": "నెట్వర్క్ యాక్సెస్", + "networkAccessDesc": "అవుట్బౌండ్ నెట్వర్క్ అభ్యర్థనలను అనుమతించండి", + "mode": "మోడ్", "q": "Q", "filterSkillsPlaceholder": "పేరు, వివరణ లేదా ట్యాగ్ ద్వారా నైపుణ్యాలను ఫిల్టర్ చేయండి", "allModes": "అన్ని మోడ్‌లు", @@ -4623,7 +4623,7 @@ "searchMarketplacePlaceholder": "నైపుణ్యాలను శోధించండి...", "searchMarketplace": "మార్కెట్‌ప్లేస్‌ను శోధించండి", "marketplaceEmpty": "మార్కెట్‌ప్లేస్‌లో ఎటువంటి నైపుణ్యాలు కనుగొనబడలేదు", - "marketplaceError": "Search failed", + "marketplaceError": "శోధన విఫలమైంది", "installingFromMarketplace": "మార్కెట్‌ప్లేస్ నుండి ఇన్‌స్టాల్ అవుతోంది...", "popularSkills": "ప్రసిద్ధ నైపుణ్యాలు", "skillsMarketplace": "నైపుణ్యాల మార్కెట్ ప్లేస్", @@ -4642,90 +4642,90 @@ "installSkill": "నైపుణ్యాన్ని ఇన్స్టాల్ చేయండి" }, "health": { - "title": "System Health", - "description": "Real-time monitoring of your OmniRoute instance", - "healthy": "Healthy", - "degraded": "Degraded", - "down": "Down", - "uptime": "Uptime", - "memory": "Memory", - "memoryRss": "Memory (RSS)", - "heap": "Heap", + "title": "సిస్టమ్ ఆరోగ్యం", + "description": "మీ OmniRoute ఇన్స్టాన్స్ యొక్క రియల్-టైమ్ పర్యవేక్షణ", + "healthy": "ఆరోగ్యకరం", + "degraded": "పనితీరు క్షీణించింది", + "down": "నిలిచిపోయింది", + "uptime": "అప్టైమ్", + "memory": "మెమరీ", + "memoryRss": "మెమరీ (RSS)", + "heap": "హీప్", "cpu": "CPU", - "database": "Database", - "version": "Version", - "lastCheck": "Last Check", - "providerHealth": "Provider Health", - "systemMetrics": "System Metrics", - "tokenHealth": "Token Health", - "refreshAll": "Refresh All", - "checkNow": "Check Now", - "loadingHealth": "Loading health data...", - "failedToLoad": "Failed to load health data: {error}", - "retry": "Retry", - "allOperational": "All systems operational", - "issuesDetected": "System issues detected", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", - "updatedAt": "Updated {time}", - "latency": "Latency", + "database": "డేటాబేస్", + "version": "వెర్షన్", + "lastCheck": "చివరి తనిఖీ", + "providerHealth": "ప్రొవైడర్ ఆరోగ్యం", + "systemMetrics": "సిస్టమ్ మెట్రిక్స్", + "tokenHealth": "టోకెన్ ఆరోగ్యం", + "refreshAll": "అన్నింటినీ రిఫ్రెష్ చేయండి", + "checkNow": "ఇప్పుడే తనిఖీ చేయండి", + "loadingHealth": "ఆరోగ్య డేటా లోడ్ అవుతోంది...", + "failedToLoad": "ఆరోగ్య డేటాను లోడ్ చేయడం విఫలమైంది: {error}", + "retry": "మళ్లీ ప్రయత్నించండి", + "allOperational": "అన్ని సిస్టమ్లు సక్రమంగా పనిచేస్తున్నాయి", + "issuesDetected": "సిస్టమ్ సమస్యలు గుర్తించబడ్డాయి", + "healthVerdictReady": "OmniRoute సిద్ధంగా ఉంది", + "healthVerdictActionRequired": "పూర్తి కార్యాచరణను పునరుద్ధరించడానికి చర్య అవసరం", + "healthVerdictCoolingDown": "ఇటీవలి మార్పుల తర్వాత కూల్డౌన్లో ఉంది", + "healthSubtitle": "సిస్టమ్ ఆరోగ్య తనిఖీ", + "advancedDiagnosticsTitle": "అధునాతన విశ్లేషణలు", + "hide": "దాచు", + "show": "చూపించు", + "updatedAt": "{time}కి నవీకరించబడింది", + "latency": "లేటెన్సీ", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", "millisecondsShort": "{value}ms", "notAvailable": "—", - "totalRequests": "Total requests", - "noDataYet": "No data yet", - "promptCache": "Prompt Cache", - "entries": "Entries", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "signatureCache": "Signature Cache", - "signatureDefaults": "Defaults", - "signatureTool": "Tool", - "signatureFamily": "Family", - "signatureSession": "Session", - "recovering": "Recovering", - "noCBData": "No circuit breaker data available. Make some requests first.", - "providerHealthStatusAria": "Provider health status", - "issuesLabel": "Issues Detected", - "operational": "Operational", - "providers": "Providers", - "configuredProvidersLabel": "Configured in dashboard", - "configuredProvidersHint": "Providers with credentials saved in /dashboard/providers, regardless of runtime state.", - "activeProviders": "{count} active", - "activeProvidersHint": "Configured providers currently enabled for routing requests.", - "monitoredProviders": "{count} monitored", - "monitoredProvidersHint": "Providers currently tracked by circuit-breaker health monitors.", - "healthyCount": "{count} healthy", + "totalRequests": "మొత్తం అభ్యర్థనలు", + "noDataYet": "ఇంకా డేటా లేదు", + "promptCache": "ప్రాంప్ట్ క్యాష్", + "entries": "ఎంట్రీలు", + "hitRate": "హిట్ రేట్", + "hitsMisses": "హిట్లు / మిస్లు", + "signatureCache": "సిగ్నేచర్ క్యాష్", + "signatureDefaults": "డిఫాల్ట్లు", + "signatureTool": "టూల్", + "signatureFamily": "ఫ్యామిలీ", + "signatureSession": "సెషన్", + "recovering": "పునరుద్ధరిస్తోంది", + "noCBData": "సర్క్యూట్ బ్రేకర్ డేటా అందుబాటులో లేదు. ముందుగా కొన్ని అభ్యర్థనలు చేయండి.", + "providerHealthStatusAria": "ప్రొవైడర్ ఆరోగ్య స్థితి", + "issuesLabel": "సమస్యలు గుర్తించబడ్డాయి", + "operational": "కార్యాచరణలో ఉంది", + "providers": "ప్రొవైడర్లు", + "configuredProvidersLabel": "డ్యాష్బోర్డ్లో కాన్ఫిగర్ చేయబడ్డాయి", + "configuredProvidersHint": "రన్టైమ్ స్థితితో సంబంధం లేకుండా /dashboard/providersలో క్రెడెన్షియల్స్ సేవ్ చేయబడిన ప్రొవైడర్లు.", + "activeProviders": "{count} యాక్టివ్", + "activeProvidersHint": "రూటింగ్ అభ్యర్థనల కోసం ప్రస్తుతం ప్రారంభించబడిన కాన్ఫిగర్ చేసిన ప్రొవైడర్లు.", + "monitoredProviders": "{count} పర్యవేక్షణలో ఉన్నాయి", + "monitoredProvidersHint": "ప్రస్తుతం సర్క్యూట్-బ్రేకర్ ఆరోగ్య మానిటర్ల ద్వారా ట్రాక్ చేయబడుతున్న ప్రొవైడర్లు.", + "healthyCount": "{count} ఆరోగ్యకరంగా ఉన్నాయి", "nodeVersion": "Node {version}", - "failures": "{count} failure", - "failuresPlural": "{count} failures", - "lastFailure": "Last", - "rateLimitStatus": "Rate Limit Status", - "activeLimiters": "{count} active limiter", - "activeLimitersPlural": "{count} active limiters", - "queued": "Queued", - "queuedCount": "{count} queued", - "running": "running", - "runningCount": "{count} running", + "failures": "{count} వైఫల్యం", + "failuresPlural": "{count} వైఫల్యాలు", + "lastFailure": "చివరిది", + "rateLimitStatus": "రేట్ పరిమితి స్థితి", + "activeLimiters": "{count} యాక్టివ్ లిమిటర్", + "activeLimitersPlural": "{count} యాక్టివ్ లిమిటర్లు", + "queued": "క్యూలో ఉన్నాయి", + "queuedCount": "{count} క్యూలో ఉన్నాయి", + "running": "రన్ అవుతున్నాయి", + "runningCount": "{count} రన్ అవుతున్నాయి", "ok": "OK", - "activeLockouts": "Active Lockouts", - "resetConfirm": "Reset all circuit breakers to healthy state? This will clear all failure counts and restore all providers to operational status.", - "resetAllTitle": "Reset all circuit breakers to healthy state", - "resetting": "Resetting...", - "resetAll": "Reset All", - "until": "Until {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "activeLockouts": "యాక్టివ్ లాకౌట్లు", + "resetConfirm": "అన్ని సర్క్యూట్ బ్రేకర్లను ఆరోగ్యకరమైన స్థితికి రీసెట్ చేయాలా? ఇది అన్ని వైఫల్య గణనలను క్లియర్ చేసి, ప్రొవైడర్లందరినీ కార్యాచరణ స్థితికి పునరుద్ధరిస్తుంది.", + "resetAllTitle": "అన్ని సర్క్యూట్ బ్రేకర్లను ఆరోగ్యకరమైన స్థితికి రీసెట్ చేయండి", + "resetting": "రీసెట్ చేస్తోంది...", + "resetAll": "అన్నింటినీ రీసెట్ చేయండి", + "until": "{time} వరకు", + "limitExhausted": "పరిమితి ముగిసింది", + "learnedFromHeaders": "హెడర్ల నుండి తెలుసుకున్నది", + "remainingOfLimit": "{limit}లో {remaining} మిగిలి ఉన్నాయి", + "throttleStatus": "థ్రాటిల్: {value}", + "lastHeaderUpdate": "హెడర్ నవీకరణ: {age}", "databaseHealth": "డేటాబేస్ ఆరోగ్యం", "databaseHealthDescription": "పాత కోటా/డొమైన్ వరుసలు మరియు విరిగిన కాంబో సూచనలను నిర్ధారించండి మరియు రిపేర్ చేయండి.", "status": "స్థితి", @@ -4851,65 +4851,65 @@ "noTargets": "లక్ష్య మార్గాలు ఏవీ కాన్ఫిగర్ చేయబడలేదు." }, "limits": { - "title": "Limits & Quotas", - "rateLimit": "Rate Limit", - "remaining": "Remaining", - "requestsPerMinute": "Requests/min", - "tokensPerMinute": "Tokens/min", - "dailyLimit": "Daily Limit" + "title": "పరిమితులు & కోటాలు", + "rateLimit": "రేట్ పరిమితి", + "remaining": "మిగిలినవి", + "requestsPerMinute": "అభ్యర్థనలు/నిమి", + "tokensPerMinute": "టోకెన్లు/నిమి", + "dailyLimit": "రోజువారీ పరిమితి" }, "logs": { - "title": "Logs", - "requestLogs": "Request Logs", - "proxyLogs": "Proxy Logs", - "auditLog": "Audit Log", + "title": "లాగ్లు", + "requestLogs": "అభ్యర్థన లాగ్లు", + "proxyLogs": "ప్రాక్సీ లాగ్లు", + "auditLog": "ఆడిట్ లాగ్", "console": "Console", - "auditLogDesc": "Administrative actions and security events", - "loading": "Loading...", - "refresh": "Refresh", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", - "showing": "Showing {count} entries (offset {offset})", - "search": "Search", - "timestamp": "Timestamp", - "action": "Action", - "actor": "Actor", - "target": "Target", - "details": "Details", - "ipAddress": "IP Address", + "auditLogDesc": "పరిపాలనా చర్యలు మరియు భద్రతా ఈవెంట్లు", + "loading": "లోడ్ అవుతోంది...", + "refresh": "రిఫ్రెష్", + "filterByAction": "చర్య ఆధారంగా ఫిల్టర్ చేయండి...", + "filterByActor": "చర్య చేసిన వ్యక్తి ఆధారంగా ఫిల్టర్ చేయండి...", + "filterEntriesAria": "ఆడిట్ లాగ్ ఎంట్రీలను ఫిల్టర్ చేయండి", + "filterByActionTypeAria": "చర్య రకం ఆధారంగా ఫిల్టర్ చేయండి", + "filterByActorAria": "చర్య చేసిన వ్యక్తి ఆధారంగా ఫిల్టర్ చేయండి", + "refreshAuditLogAria": "ఆడిట్ లాగ్ను రిఫ్రెష్ చేయండి", + "tableAria": "ఆడిట్ లాగ్ ఎంట్రీలు", + "failedFetchAuditLog": "ఆడిట్ లాగ్ను పొందడం విఫలమైంది", + "showing": "{count} ఎంట్రీలను చూపుతోంది (ఆఫ్సెట్ {offset})", + "search": "శోధించండి", + "timestamp": "సమయ ముద్ర", + "action": "చర్య", + "actor": "చర్య చేసిన వ్యక్తి", + "target": "లక్ష్యం", + "details": "వివరాలు", + "ipAddress": "IP చిరునామా", "notAvailable": "—", - "noEntries": "No audit log entries found", - "previous": "Previous", - "next": "Next", - "providerWarningTitle": "Provider Warnings", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", - "providerWarningDesc": "Some providers returned warnings during request processing", + "noEntries": "ఆడిట్ లాగ్ ఎంట్రీలు ఏవీ కనుగొనబడలేదు", + "previous": "మునుపటి", + "next": "తదుపరి", + "providerWarningTitle": "ప్రొవైడర్ హెచ్చరికలు", + "viewDetails": "వివరాలను చూడండి", + "eventMetadata": "ఈవెంట్ మెటాడేటా", + "eventPayload": "ఈవెంట్ పేలోడ్", + "requestId": "అభ్యర్థన Id", + "providerWarningDesc": "అభ్యర్థనను ప్రాసెస్ చేస్తున్నప్పుడు కొంతమంది ప్రొవైడర్లు హెచ్చరికలను అందించారు", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", - "auditModalSubtitle": "Event details and metadata", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "offset": "ఆఫ్సెట్", + "limit": "పరిమితి", + "status": "స్థితి", + "resourceType": "వనరు రకం", + "totalEntries": "మొత్తం నమోదులు", + "tab": "ట్యాబ్", + "auditModalSubtitle": "ఈవెంట్ వివరాలు మరియు మెటాడేటా", + "close": "మూసివేయి", + "runningRequests": "సక్రియ అభ్యర్థనలు", + "runningRequestsDesc": "ప్రస్తుతం అమలవుతున్న అప్స్ట్రీమ్ అభ్యర్థనల రియల్-టైమ్ వీక్షణ", "clearAll": "అన్నీ క్లియర్ చేయండి", "confirmClearActiveRequests": "అన్ని సక్రియ అభ్యర్థనలను క్లియర్ చేయాలా?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "మోడల్", + "provider": "ప్రొవైడర్", + "account": "ఖాతా", + "elapsed": "గడిచిన సమయం", "activeStage": "దశ", "activeStageUnknown": "ఇంకా అప్‌స్ట్రీమ్‌కు పంపబడలేదు", "activeStageRegistered": "నమోదైంది", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "రేట్ లిమిట్ స్లాట్ పొందబడింది", "activeStageSendingToProvider": "అప్‌స్ట్రీమ్‌కు పంపుతోంది", "activeStageProviderResponseStarted": "అప్‌స్ట్రీమ్ ప్రతిస్పందన ప్రారంభమైంది", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "సంఖ్య", + "payloads": "పేలోడ్లు", + "viewPayloads": "వీక్షించు", + "activeCount": "{count} సక్రియంగా ఉన్నాయి", + "clientPayload": "క్లయింట్ అభ్యర్థన పేలోడ్", + "upstreamPayload": "అప్స్ట్రీమ్ ప్రొవైడర్ పేలోడ్", + "upstreamNotSentYet": "ఇంకా అప్స్ట్రీమ్కు పంపబడలేదు", + "runningRequestDetailMeta": "ఖాతా: {account} — గడిచిన సమయం: {elapsed}", + "export": "ఎగుమతి చేయి", + "exporting": "ఎగుమతి చేస్తోంది...", + "exportFailed": "ఎగుమతి విఫలమైంది", "cleanHistoryButton": "చరిత్రను క్లియర్ చేయి", "cleanHistoryTitle": "లాగ్ చరిత్రను క్లియర్ చేయాలా?", "cleanHistoryMessage": "ఇది DATA_DIR/call_logs కింద ఉన్న అన్ని అభ్యర్థన లాగ్ వరుసలను, లెగసీ వివరాల వరుసలను మరియు స్థానిక ఆర్టిఫ్యాక్ట్ ఫైల్‌లను శాశ్వతంగా క్లియర్ చేస్తుంది. క్లీనప్ తర్వాత లైవ్ పేజీ రిఫ్రెష్ అవుతుంది.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} లాగ్ ఎంట్రీలు, {deletedArtifacts} ఆర్టిఫ్యాక్ట్‌లు మరియు {deletedDetailedLogs} లెగసీ వివరాల వరుసలు క్లియర్ చేయబడ్డాయి.", "cleanHistoryEmpty": "అభ్యర్థన లాగ్ చరిత్ర ఏదీ కనుగొనబడలేదు.", "cleanHistoryFailed": "లాగ్ చరిత్రను క్లీన్ చేయడం విఫలమైంది.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "సమయ పరిధి", + "lastNHours": "గత {hours}", + "defaultRange": "డిఫాల్ట్", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "లాగ్లను పొందడంలో విఫలమైంది", + "copyFailed": "లాగ్ నమోదును కాపీ చేయడంలో విఫలమైంది", + "copyLogEntry": "లాగ్ నమోదును కాపీ చేయి", "filterByLevel": "లాగ్ స్థాయి ఆధారంగా ఫిల్టర్ చేయండి", "searchPlaceholder": "లాగ్‌లను శోధించండి…", "searchAria": "లాగ్ ఎంట్రీలను శోధించండి", @@ -4964,49 +4964,49 @@ "tokens": "టోకెన్లు" }, "onboarding": { - "welcome": "Welcome", + "welcome": "స్వాగతం", "tiers": "శ్రేణులు", - "security": "Security", + "security": "భద్రత", "test": "Test", - "ready": "Ready!", - "setPassword": "Set Password", - "addProvider": "Add your first provider", - "getStarted": "Get Started", - "skip": "Skip", - "skipWizard": "Skip wizard entirely", - "skipPassword": "Skip password setup", - "skipAndContinue": "Skip & Continue", - "passwordLabel": "Password", - "confirmPassword": "Confirm Password", - "enterPassword": "Enter password", - "confirmPasswordPlaceholder": "Confirm password", - "passwordsMismatch": "Passwords do not match", - "setupComplete": "Setup Complete!", - "goToDashboard": "Go to Dashboard →", - "welcomeDesc": "OmniRoute is your local AI API proxy. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "multiProvider": "Multi-Provider", - "usageTracking": "Usage Tracking", - "securityDesc": "Set a password to protect your dashboard, or skip for now.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", - "providerDesc": "Connect your first AI provider. You can add more later.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", - "apiKeyRequired": "API Key (required)", - "customUrlOptional": "Custom URL (optional)", - "testDesc": "Let's verify your provider connection works.", - "runTest": "Run Connection Test", - "testingConnection": "Testing connection...", - "connectionSuccessful": "Connection successful! Your provider is ready.", - "noProviderFound": "No provider found. You can add one from the dashboard later.", - "testFailed": "Test failed, but you can configure this later.", - "couldNotTest": "Could not test right now. You can test from the dashboard.", - "doneDesc": "You're all set! Your OmniRoute instance is configured and ready to proxy AI requests.", - "yourEndpoint": "Your endpoint:", - "continue": "Continue", - "retry": "Retry", - "failedSetPassword": "Failed to set password. Try again.", - "failedAddProvider": "Failed to add provider. Try again.", - "connectionError": "Connection error. Please try again.", - "provider": "Provider", + "ready": "సిద్ధం!", + "setPassword": "పాస్వర్డ్ను సెట్ చేయి", + "addProvider": "మీ మొదటి ప్రొవైడర్ను జోడించండి", + "getStarted": "ప్రారంభించండి", + "skip": "దాటవేయి", + "skipWizard": "విజార్డ్ను పూర్తిగా దాటవేయి", + "skipPassword": "పాస్వర్డ్ సెటప్ను దాటవేయండి", + "skipAndContinue": "దాటవేసి కొనసాగండి", + "passwordLabel": "పాస్వర్డ్", + "confirmPassword": "పాస్వర్డ్ను నిర్ధారించండి", + "enterPassword": "పాస్వర్డ్ను నమోదు చేయండి", + "confirmPasswordPlaceholder": "పాస్వర్డ్ను నిర్ధారించండి", + "passwordsMismatch": "పాస్వర్డ్లు సరిపోలడం లేదు", + "setupComplete": "సెటప్ పూర్తయింది!", + "goToDashboard": "డ్యాష్బోర్డ్కు వెళ్లండి →", + "welcomeDesc": "OmniRoute మీ స్థానిక AI API ప్రాక్సీ. ఇది లోడ్ బ్యాలెన్సింగ్, ఫెయిల్ఓవర్ మరియు వినియోగ ట్రాకింగ్తో అభ్యర్థనలను బహుళ AI ప్రొవైడర్లకు రూట్ చేస్తుంది.", + "multiProvider": "బహుళ ప్రొవైడర్లు", + "usageTracking": "వినియోగ ట్రాకింగ్", + "securityDesc": "మీ డ్యాష్బోర్డ్ను రక్షించడానికి పాస్వర్డ్ను సెట్ చేయండి లేదా ప్రస్తుతానికి దాటవేయండి.", + "securityDescSkipWarning": "⚠️ పాస్వర్డ్ లేకుండా, సెటప్ సమయంలో మీరు ప్రొవైడర్లను జోడించలేరు. పాస్వర్డ్ను సెట్ చేసిన తర్వాత డ్యాష్బోర్డ్ నుండి వాటిని జోడించవచ్చు.", + "providerDesc": "మీ మొదటి AI ప్రొవైడర్ను కనెక్ట్ చేయండి. తర్వాత మరిన్ని జోడించవచ్చు.", + "providerRequiresPassword": "ప్రొవైడర్లను జోడించడానికి మీరు ముందుగా పాస్వర్డ్ను సెట్ చేయాలి. దయచేసి భద్రతా దశకు తిరిగి వెళ్లి పాస్వర్డ్ను సెట్ చేయండి లేదా తర్వాత డ్యాష్బోర్డ్ నుండి ప్రొవైడర్లను జోడించండి.", + "apiKeyRequired": "API కీ (తప్పనిసరి)", + "customUrlOptional": "అనుకూల URL (ఐచ్ఛికం)", + "testDesc": "మీ ప్రొవైడర్ కనెక్షన్ పనిచేస్తుందో లేదో ధృవీకరిద్దాం.", + "runTest": "కనెక్షన్ పరీక్షను అమలు చేయండి", + "testingConnection": "కనెక్షన్ను పరీక్షిస్తోంది...", + "connectionSuccessful": "కనెక్షన్ విజయవంతమైంది! మీ ప్రొవైడర్ సిద్ధంగా ఉంది.", + "noProviderFound": "ప్రొవైడర్ కనుగొనబడలేదు. తర్వాత డ్యాష్బోర్డ్ నుండి ఒకదాన్ని జోడించవచ్చు.", + "testFailed": "పరీక్ష విఫలమైంది, కానీ మీరు దీన్ని తర్వాత కాన్ఫిగర్ చేయవచ్చు.", + "couldNotTest": "ప్రస్తుతం పరీక్షించలేకపోయాము. మీరు డ్యాష్బోర్డ్ నుండి పరీక్షించవచ్చు.", + "doneDesc": "అంతా సిద్ధమైంది! మీ OmniRoute ఇన్స్టాన్స్ కాన్ఫిగర్ చేయబడింది మరియు AI అభ్యర్థనలను ప్రాక్సీ చేయడానికి సిద్ధంగా ఉంది.", + "yourEndpoint": "మీ ఎండ్పాయింట్:", + "continue": "కొనసాగండి", + "retry": "మళ్లీ ప్రయత్నించండి", + "failedSetPassword": "పాస్వర్డ్ను సెట్ చేయడం విఫలమైంది. మళ్లీ ప్రయత్నించండి.", + "failedAddProvider": "ప్రొవైడర్ను జోడించడం విఫలమైంది. మళ్లీ ప్రయత్నించండి.", + "connectionError": "కనెక్షన్ లోపం. దయచేసి మళ్లీ ప్రయత్నించండి.", + "provider": "ప్రొవైడర్", "apiKeyHelp": "API కీ అనేది AI సేవల కోసం పాస్‌వర్డ్. మీ ప్రొవైడర్ వెబ్‌సైట్ నుండి ఒకదాన్ని పొందండి (ఉదా., platform.openai.com, console.anthropic.com).", "tier": { "subtitle": "OmniRoute ప్రొవైడర్‌లను మూడు శ్రేణులుగా నిర్వహిస్తుంది కాబట్టి రౌటింగ్ ముందుగా అత్యంత విశ్వసనీయమైన, తక్కువ-ధర మార్గాన్ని ఇష్టపడుతుంది.", @@ -5049,12 +5049,12 @@ } }, "providers": { - "title": "Providers", + "title": "ప్రొవైడర్లు", "Account Deactivated": "ఖాతా నిష్క్రియం చేయబడింది", "allProviders": "అందరు ప్రొవైడర్లు", "audioProviders": "ఆడియో ప్రొవైడర్లు", "showFreeOnly": "ఉచితం మాత్రమే", - "addProvider": "Add Provider", + "addProvider": "ప్రొవైడర్ను జోడించండి", "addFirstProvider": "మీ మొదటి ప్రొవైడర్‌ని జోడించండి", "addFirstProviderDesc": "OmniRoute ద్వారా రూటింగ్ అభ్యర్థనలను ప్రారంభించడానికి AI ప్రొవైడర్‌ను కనెక్ట్ చేయండి. మీరు ఉచిత ప్రొవైడర్లు, API కీలు లేదా OAuth ఖాతాలను ఉపయోగించవచ్చు.", "learnMore": "మరింత తెలుసుకోండి", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "ఇంపోర్ట్ అవుతోంది…", "importFromFileImport": "{count} ప్రొవైడర్లను ఇంపోర్ట్ చేయండి", "importFromFileResult": "{success} ప్రొవైడర్లు ఇంపోర్ట్ చేయబడ్డాయి ({failed} విఫలమయ్యాయి)", + "importFromFileDownloadTemplate": "CSV టెంప్లేట్ను డౌన్లోడ్ చేయండి", + "importFromFileMoreErrors": "మరో +{count}", + "importFromFileSchemaHint": "CSV కాలమ్లు స్థానానుసారంగా ఉంటాయి: provider, name, apiKey, baseUrl (ఐచ్ఛికం), priority (ఐచ్ఛికం). provider కాలమ్లో ఇప్పటికే ఉన్న నిర్వహిత ప్రొవైడర్ ID లేదా ఇప్పటికే నమోదు చేసిన OpenAI/Anthropic-అనుకూల నోడ్ ID ఉండాలి — ఈ దిగుమతి కొత్త ఎండ్పాయింట్ నోడ్లను సృష్టించదు.", "adaptaTutorial": { "title": "Adapta Webని ఎలా కనెక్ట్ చేయాలి", "introPrefix": "Adapta Clerk ద్వారా ప్రామాణీకరిస్తుంది. టోకెన్", @@ -5103,31 +5106,31 @@ "tipPrefix": "ఈ", "tipSuffix": "కుకీ దీర్ఘకాలికమైనది, సాధారణంగా నెలల తరబడి ఉంటుంది. మీరు సైన్ అవుట్ చేసినా లేదా Adapta సెషన్‌ను చెల్లనిదిగా చేసినా మాత్రమే మీరు దీన్ని పునరుద్ధరించాల్సి ఉంటుంది." }, - "editProvider": "Edit Provider", - "deleteProvider": "Delete Provider", - "noProviders": "No providers configured", - "modelAvailability": "Model Availability", - "accounts": "Accounts", - "newAccount": "New Account", - "deleteConfirm": "Are you sure you want to delete this provider?", - "testing": "Testing...", - "testConnection": "Test Connection", - "testSuccess": "Connection successful", - "testFailed": "Connection failed", - "available": "Available", - "cooldown": "Cooldown", - "unavailable": "Unavailable", - "unknown": "Unknown", + "editProvider": "ప్రొవైడర్ను సవరించండి", + "deleteProvider": "ప్రొవైడర్ను తొలగించండి", + "noProviders": "ప్రొవైడర్లు ఏవీ కాన్ఫిగర్ చేయబడలేదు", + "modelAvailability": "మోడల్ లభ్యత", + "accounts": "ఖాతాలు", + "newAccount": "కొత్త ఖాతా", + "deleteConfirm": "మీరు ఖచ్చితంగా ఈ ప్రొవైడర్ను తొలగించాలనుకుంటున్నారా?", + "testing": "పరీక్షిస్తోంది...", + "testConnection": "కనెక్షన్ను పరీక్షించండి", + "testSuccess": "కనెక్షన్ విజయవంతమైంది", + "testFailed": "కనెక్షన్ విఫలమైంది", + "available": "అందుబాటులో ఉంది", + "cooldown": "విరామ వ్యవధి", + "unavailable": "అందుబాటులో లేదు", + "unknown": "తెలియదు", "oauthLabel": "OAuth", - "compatibleLabel": "Compatible", + "compatibleLabel": "అనుకూలమైనది", "chat": "Chat", "responses": "Responses", "messages": "Messages", - "oauthProviders": "OAuth Providers", - "freeProviders": "Free Providers", - "apiKeyProviders": "API Key Providers", - "compatibleProviders": "API Key Compatible Providers", - "testAll": "Test All", + "oauthProviders": "OAuth ప్రొవైడర్లు", + "freeProviders": "ఉచిత ప్రొవైడర్లు", + "apiKeyProviders": "API Key ప్రొవైడర్లు", + "compatibleProviders": "API Key అనుకూల ప్రొవైడర్లు", + "testAll": "అన్నింటినీ పరీక్షించండి", "reorderByAvailability": "మళ్లీ క్రమం చేయండి", "reorderByAvailabilityTitle": "లభ్యత ఆధారంగా కనెక్షన్‌లను మళ్లీ క్రమం చేయండి", "reorderByAvailabilityError": "లభ్యత ఆధారంగా కనెక్షన్‌లను మళ్లీ క్రమం చేయడంలో విఫలమైంది", @@ -5135,10 +5138,10 @@ "distributing": "పంపిణీ చేస్తోంది...", "selectedCount": "{count, plural, one {# ఎంపిక చేయబడింది} other {# ఎంపిక చేయబడ్డాయి}}", "accountsCount": "{count, plural, one {# ఖాతా} other {# ఖాతాలు}}", - "testAllOAuth": "Test all OAuth connections", - "testAllFree": "Test all Free connections", - "testAllApiKey": "Test all API Key connections", - "testAllCompatible": "Test all Compatible connections", + "testAllOAuth": "అన్ని OAuth కనెక్షన్లను పరీక్షించండి", + "testAllFree": "అన్ని ఉచిత కనెక్షన్లను పరీక్షించండి", + "testAllApiKey": "అన్ని API Key కనెక్షన్లను పరీక్షించండి", + "testAllCompatible": "అన్ని అనుకూల కనెక్షన్లను పరీక్షించండి", "testAllModels": "అన్ని మోడళ్లను పరీక్షించండి", "testAllModelsConfirm": "కనిపించే అన్ని మోడళ్లను పరీక్షించాలా? ఆటో-హైడ్ ప్రారంభించబడి ఉంటే విఫలమైన మోడళ్లు దాచబడతాయి.", "testingAllModels": "{done}/{total} పరీక్షిస్తోంది...", @@ -5154,9 +5157,9 @@ "filterByVisibility": "దృశ్యత ఆధారంగా ఫిల్టర్ చేయండి", "autoHideFailed": "విఫలమైన మోడళ్లను ఆటోమేటిక్‌గా దాచండి", "autoHideFailedHint": "ప్రారంభించినప్పుడు, Test all అనేది /v1/models వంటి పబ్లిక్ కేటలాగ్‌ల నుండి తాత్కాలికం కాని వైఫల్యాలను దాచిపెడుతుంది. సింగిల్-మోడల్ పరీక్షలు ఎప్పటికీ ఆటోమేటిక్‌గా దాచబడవు.", - "connected": "{count} Connected", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", + "connected": "{count} కనెక్ట్ అయ్యాయి", + "errorCount": "{count} లోపం ({code})", + "errorCountNoCode": "{count} లోపం", "testAllCompleted": "{total} మోడళ్లు పరీక్షించబడ్డాయి: {ok} OK, {failed} విఫలమయ్యాయి", "modelAutoHidden": "మోడల్ {model} ఆటోమేటిక్‌గా దాచబడింది (పరీక్ష విఫలమైంది)", "filterAll": "అన్నీ", @@ -5164,9 +5167,9 @@ "filterHidden": "దాచినవి మాత్రమే", "modelsHiddenCount": "{count} దాచబడ్డాయి", "warningCount": "{count} హెచ్చరిక", - "noConnections": "No connections", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "noConnections": "కనెక్షన్లు లేవు", + "expiredBadge": "గడువు ముగిసింది", + "expiringSoonBadge": "త్వరలో గడువు ముగుస్తుంది", "freeTier": "ఉచిత టైర్", "freeTierAvailable": "ఉచిత టైర్ అందుబాటులో ఉంది", "hasFreeTooltip": "ఉచిత శ్రేణి అందుబాటులో ఉంది", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "ఈ ప్రొవైడర్ నిలిపివేయబడింది", "riskNotice": { "title": "కొనసాగడానికి ముందు", - "detailsTitle": "Usage caveats", + "detailsTitle": "వినియోగ పరిమితులు", "tooltip": "వినియోగ హెచ్చరికలు ఉన్న ప్రొవైడర్ — వివరాల కోసం క్లిక్ చేయండి", "oauth": "ఈ ప్రొవైడర్ మీ అధికారిక ప్రోడక్ట్ సెషన్/OAuthని ఉపయోగిస్తుంది, ఇది ప్రాక్సీ/రూటర్ వినియోగానికి అనుమతించబడలేదు. మేము తీవ్రమైన అటానమస్ ఏజెంట్ వినియోగాన్ని (OpenCloud-శైలి, సుదీర్ఘ బహుళ-దశల ఫ్లోలు, పెద్ద బ్యాచ్‌లు) సిఫార్సు చేయము — అప్‌స్ట్రీమ్ ఖాతాను పరిమితం చేయడం లేదా నిషేధించడం ద్వారా ప్రతిస్పందించవచ్చు. మీ స్వంత పూచీకత్తుపై ఉపయోగించండి.", "webCookie": "ఈ ప్రొవైడర్ మీ వెబ్ సెషన్ కుకీల ద్వారా ప్రామాణీకరిస్తుంది. అప్‌స్ట్రీమ్ సేవ ఎప్పుడైనా సెషన్‌ను చెల్లనిదిగా చేయవచ్చు, దీని వలన మీరు మళ్లీ లాగిన్ అవ్వాల్సి ఉంటుంది. ఎక్కువసేపు పర్యవేక్షణ లేని ఆపరేషన్ల కోసం సిఫార్సు చేయబడదు. మీ స్వంత పూచీకత్తుపై ఉపయోగించండి.", @@ -5188,95 +5191,95 @@ "cancel": "రద్దు చేయండి" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} కనెక్షన్(లు) ఫ్లాగ్ చేయబడ్డాయి — ఇటీవలి వైఫల్యాలు గరిష్ఠంగా {maxFailures}{lastFailureSuffix}. కనెక్షన్ స్థితిని చూడటానికి క్లిక్ చేయండి.", + "lastFailureSuffix": "(చివరి వైఫల్యం {time})", + "ariaLabel": "కనెక్షన్ స్థితి వివరాలను చూడండి, {count} హెచ్చరిక(లు)" }, - "disabled": "Disabled", - "enableProvider": "Enable provider", - "disableProvider": "Disable provider", - "testResults": "Test Results", - "noCompatibleYet": "No compatible providers added yet", - "compatibleHint": "Use the buttons above to add OpenAI or Anthropic compatible endpoints", - "addOpenAICompatible": "Add OpenAI Compatible", - "addAnthropicCompatible": "Add Anthropic Compatible", - "addNewProvider": "Add New Provider", - "backToProviders": "Back to Providers", - "configureNewProvider": "Configure a new AI provider to use with your applications.", - "providerLabel": "Provider", - "selectProvider": "Select a provider", - "selectedProvider": "Selected provider", - "authMethod": "Authentication Method", - "apiKeyLabel": "API Key", - "apiKeyRequired": "API Key is required", - "selectProviderRequired": "Please select a provider", - "enterApiKey": "Enter your API key", - "apiKeySecure": "Your API key will be encrypted and stored securely.", - "oauth2Connect": "Connect with OAuth2", + "disabled": "నిలిపివేయబడింది", + "enableProvider": "ప్రొవైడర్ను ప్రారంభించండి", + "disableProvider": "ప్రొవైడర్ను నిలిపివేయండి", + "testResults": "పరీక్ష ఫలితాలు", + "noCompatibleYet": "అనుకూల ప్రొవైడర్లు ఇంకా జోడించబడలేదు", + "compatibleHint": "OpenAI లేదా Anthropic అనుకూల ఎండ్పాయింట్లను జోడించడానికి పైన ఉన్న బటన్లను ఉపయోగించండి", + "addOpenAICompatible": "OpenAI అనుకూల ప్రొవైడర్ను జోడించండి", + "addAnthropicCompatible": "Anthropic అనుకూల ప్రొవైడర్ను జోడించండి", + "addNewProvider": "కొత్త ప్రొవైడర్ను జోడించండి", + "backToProviders": "ప్రొవైడర్లకు తిరిగి వెళ్లండి", + "configureNewProvider": "మీ అప్లికేషన్లతో ఉపయోగించడానికి కొత్త AI ప్రొవైడర్ను కాన్ఫిగర్ చేయండి.", + "providerLabel": "ప్రొవైడర్", + "selectProvider": "ప్రొవైడర్ను ఎంచుకోండి", + "selectedProvider": "ఎంచుకున్న ప్రొవైడర్", + "authMethod": "ప్రమాణీకరణ పద్ధతి", + "apiKeyLabel": "API కీ", + "apiKeyRequired": "API కీ అవసరం", + "selectProviderRequired": "దయచేసి ప్రొవైడర్ను ఎంచుకోండి", + "enterApiKey": "మీ API కీని నమోదు చేయండి", + "apiKeySecure": "మీ API కీ ఎన్క్రిప్ట్ చేయబడి సురక్షితంగా నిల్వ చేయబడుతుంది.", + "oauth2Connect": "OAuth2తో కనెక్ట్ చేయండి", "oauth2Label": "OAuth2", - "oauth2Desc": "Connect your account using OAuth2 authentication.", - "displayName": "Display Name", - "displayNamePlaceholder": "e.g., Production API, Dev Environment", - "displayNameHint": "Optional. A friendly name to identify this configuration.", - "active": "Active", - "activeDescription": "Enable this provider for use in your applications", - "cancel": "Cancel", - "createProvider": "Create Provider", - "failedCreate": "Failed to create provider", - "errorOccurred": "An error occurred. Please try again.", - "modelStatus": "Model Status", - "showConfiguredOnly": "Configured only", - "allModelsOperational": "All models operational", - "modelsWithIssues": "{count} model(s) with issues", - "allModelsNormal": "All models are responding normally.", - "cooldownCleared": "Cooldown cleared for {model}", - "failedClearCooldown": "Failed to clear cooldown", - "loadingAvailability": "Loading model availability...", - "clearCooldown": "Clear", - "clearing": "Clearing...", - "until": "Until {time}", - "providerTestFailed": "Provider test failed", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "oauth2Desc": "OAuth2 ప్రమాణీకరణను ఉపయోగించి మీ ఖాతాను కనెక్ట్ చేయండి.", + "displayName": "ప్రదర్శన పేరు", + "displayNamePlaceholder": "ఉదా., ప్రొడక్షన్ API, డెవ్ ఎన్విరాన్మెంట్", + "displayNameHint": "ఐచ్ఛికం. ఈ కాన్ఫిగరేషన్ను గుర్తించడానికి సులభమైన పేరు.", + "active": "సక్రియం", + "activeDescription": "మీ అప్లికేషన్లలో ఉపయోగించడానికి ఈ ప్రొవైడర్ను ప్రారంభించండి", + "cancel": "రద్దు చేయండి", + "createProvider": "ప్రొవైడర్ను సృష్టించండి", + "failedCreate": "ప్రొవైడర్ను సృష్టించడం విఫలమైంది", + "errorOccurred": "లోపం సంభవించింది. దయచేసి మళ్లీ ప్రయత్నించండి.", + "modelStatus": "మోడల్ స్థితి", + "showConfiguredOnly": "కాన్ఫిగర్ చేసినవి మాత్రమే", + "allModelsOperational": "అన్ని మోడల్లు పనిచేస్తున్నాయి", + "modelsWithIssues": "{count} మోడల్(లు)లో సమస్యలు ఉన్నాయి", + "allModelsNormal": "అన్ని మోడల్లు సాధారణంగా స్పందిస్తున్నాయి.", + "cooldownCleared": "{model} కోసం కూల్డౌన్ క్లియర్ చేయబడింది", + "failedClearCooldown": "కూల్డౌన్ను క్లియర్ చేయడం విఫలమైంది", + "loadingAvailability": "మోడల్ లభ్యతను లోడ్ చేస్తోంది...", + "clearCooldown": "క్లియర్ చేయండి", + "clearing": "క్లియర్ చేస్తోంది...", + "until": "{time} వరకు", + "providerTestFailed": "ప్రొవైడర్ పరీక్ష విఫలమైంది", + "providerTestTimeout": "ప్రొవైడర్ పరీక్ష సమయం ముగిసింది — ఒకేసారి పరీక్షించడానికి చాలా ఎక్కువ కనెక్షన్లు ఉన్నాయి", "modeTest": "{mode} Test", - "passedCount": "{count} passed", - "failedCount": "{count} failed", - "testedCount": "{count} tested", + "passedCount": "{count} ఉత్తీర్ణమయ్యాయి", + "failedCount": "{count} విఫలమయ్యాయి", + "testedCount": "{count} పరీక్షించబడ్డాయి", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", - "noActiveConnectionsInGroup": "No active connections found for this group.", - "allTestsPassed": "All {total} tests passed", - "testSummary": "{passed}/{total} passed, {failed} failed", - "nameLabel": "Name", + "errorShort": "లోపం", + "noActiveConnectionsInGroup": "ఈ సమూహానికి సక్రియ కనెక్షన్లు ఏవీ కనుగొనబడలేదు.", + "allTestsPassed": "మొత్తం {total} పరీక్షలు విజయవంతమయ్యాయి", + "testSummary": "{passed}/{total} విజయవంతమయ్యాయి, {failed} విఫలమయ్యాయి", + "nameLabel": "పేరు", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", - "apiTypeLabel": "API Type", - "prefixHint": "Required. Unique prefix for model names.", - "nameHint": "Required. A friendly label for this node.", - "baseUrlHint": "Required. Provider API base URL.", + "baseUrlLabel": "బేస్ URL", + "apiTypeLabel": "API రకం", + "prefixHint": "తప్పనిసరి. మోడల్ పేర్ల కోసం ప్రత్యేక ఉపసర్గ.", + "nameHint": "తప్పనిసరి. ఈ నోడ్కు సులభంగా గుర్తించగల లేబుల్.", + "baseUrlHint": "తప్పనిసరి. ప్రొవైడర్ API బేస్ URL.", "iconUrlLabel": "ఐకాన్ URL", "iconUrlHint": "ఐచ్ఛికం. ఈ ప్రొవైడర్ ఐకాన్‌గా చూపబడే చిత్రం URL.", "iconUrlInvalid": "చెల్లని ఐకాన్ URL. http(s):// లేదా data:image/*;base64 URL ఉపయోగించండి.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "రోజువారీ కోటా రీసెట్ సమయ మండలం", + "dailyQuotaResetTimezoneHint": "అప్స్ట్రీమ్ X-RateLimit-Resetను అందించనప్పుడు ఉపయోగించే ఐచ్ఛిక IANA సమయ మండలం. స్వల్ప కూల్డౌన్ను కొనసాగించడానికి ఖాళీగా ఉంచండి.", + "dailyQuotaResetHourLabel": "రోజువారీ కోటా రీసెట్ గంట", + "dailyQuotaResetHourHint": "పైన ఉన్న సమయ మండలంలో స్థానిక గంట 0-23. ఖాళీగా ఉంటే నోడ్-స్థాయి గడియారం ఉండదు.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", - "validateConnection": "Validate Connection", - "validating": "Validating...", - "connectionValid": "Connection is valid!", - "connectionFailed": "Connection failed. Check URL and key.", - "testKeyLabel": "Test API Key", - "testKeyPlaceholder": "sk-... (for validation only)", - "providerNotFound": "Provider not found", - "deleteConnectionConfirm": "Delete this connection?", + "validateConnection": "కనెక్షన్ను ధృవీకరించండి", + "validating": "ధృవీకరిస్తోంది...", + "connectionValid": "కనెక్షన్ చెల్లుబాటు అవుతోంది!", + "connectionFailed": "కనెక్షన్ విఫలమైంది. URL మరియు కీని తనిఖీ చేయండి.", + "testKeyLabel": "API కీని పరీక్షించండి", + "testKeyPlaceholder": "sk-... (ధృవీకరణ కోసం మాత్రమే)", + "providerNotFound": "ప్రొవైడర్ కనుగొనబడలేదు", + "deleteConnectionConfirm": "ఈ కనెక్షన్ను తొలగించాలా?", "deleteConnectionConfirmNamed": "మీరు {name} ని తొలగించాలనుకుంటున్నారా? ఈ చర్యను వెనక్కి తీసుకోలేరు.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "ఎంచుకున్నవాటిని తొలగించండి ({count})", + "batchDeleteConfirm": "{count} కనెక్షన్(ల)ను తొలగించాలా? ఈ చర్యను రద్దు చేయడం సాధ్యం కాదు.", + "batchDeleteSuccess": "{count} కనెక్షన్(లు) తొలగించబడ్డాయి", "batchActivateSelected": "యాక్టివేట్ చేయండి", "batchDeactivateSelected": "డీయాక్టివేట్ చేయండి", "batchRetestSelected": "మళ్లీ పరీక్షించండి", @@ -5292,32 +5295,32 @@ "filterError": "లోపం", "filterBanned": "నిషేధించబడింది", "filterCreditsExhausted": "క్రెడిట్‌లు అయిపోయాయి", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "ఖాతాలను శోధించండి…", "noFilteredConnections": "ప్రస్తుత ఫిల్టర్‌కు ఏ కనెక్షన్‌లు సరిపోలడం లేదు.", - "failedSetAlias": "Failed to set alias", + "failedSetAlias": "మారుపేరును సెట్ చేయడం విఫలమైంది", "setAliasSuccess": "అలియాస్ {alias} సెట్ చేయబడింది", "deleteAliasSuccess": "అలియాస్ {alias} తొలగించబడింది", - "failedSaveConnection": "Failed to save connection", - "failedSaveConnectionRetry": "Failed to save connection. Please try again.", - "failedRetestConnection": "Failed to retest connection", - "deleteCompatibleNodeConfirm": "Delete this {type} Compatible node?", - "anthropicCompatibleDetails": "Anthropic Compatible Details", - "openaiCompatibleDetails": "OpenAI Compatible Details", + "failedSaveConnection": "కనెక్షన్ను సేవ్ చేయడం విఫలమైంది", + "failedSaveConnectionRetry": "కనెక్షన్ను సేవ్ చేయడం విఫలమైంది. దయచేసి మళ్లీ ప్రయత్నించండి.", + "failedRetestConnection": "కనెక్షన్ను మళ్లీ పరీక్షించడం విఫలమైంది", + "deleteCompatibleNodeConfirm": "ఈ {type} Compatible నోడ్ను తొలగించాలా?", + "anthropicCompatibleDetails": "Anthropic Compatible వివరాలు", + "openaiCompatibleDetails": "OpenAI Compatible వివరాలు", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "ఎంబెడ్డింగ్లు", + "audioTranscriptions": "ఆడియో లిప్యంతరీకరణలు", + "audioSpeech": "ఆడియో ప్రసంగం", + "imagesGenerations": "చిత్రాల సృష్టి", "chatCompletions": "Chat Completions", - "importingModels": "Importing...", - "importFromModels": "Import from /models", - "modelsImported": "{count} models imported", - "allModelsAlreadyImported": "All models already imported", - "noNewModelsToImport": "No new models to import — all models are already in the registry or custom models list", - "skippingExistingModels": "Skipping {count} existing models", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "importingModels": "దిగుమతి చేస్తోంది...", + "importFromModels": "/models నుండి దిగుమతి చేయండి", + "modelsImported": "{count} మోడళ్లు దిగుమతి చేయబడ్డాయి", + "allModelsAlreadyImported": "అన్ని మోడళ్లు ఇప్పటికే దిగుమతి చేయబడ్డాయి", + "noNewModelsToImport": "దిగుమతి చేయడానికి కొత్త మోడళ్లు లేవు — అన్ని మోడళ్లు ఇప్పటికే రిజిస్ట్రీ లేదా అనుకూల మోడళ్ల జాబితాలో ఉన్నాయి", + "skippingExistingModels": "ఇప్పటికే ఉన్న {count} మోడళ్లను దాటవేస్తోంది", + "autoSync": "ఆటో-సింక్", + "autoSyncShort": "సింక్ చేయండి", "autoFetchModels": "ఆటో-ఫెచ్ అప్‌స్ట్రీమ్ మోడల్స్", "autoFetchModelsTooltip": "అవసరమైనప్పుడు అప్‌స్ట్రీమ్ మోడల్స్‌ను పొందండి మరియు కాష్ చేయండి", "autoFetchModelsEnabled": "అప్‌స్ట్రీమ్ మోడల్ ఆటో-ఫెచ్ ప్రారంభించబడింది", @@ -5329,52 +5332,52 @@ "resetToUpstreamDefaults": "అప్‌స్ట్రీమ్ డిఫాల్ట్స్‌ను పునరుద్ధరించండి", "resetToUpstreamDefaultsSuccess": "అప్‌స్ట్రీమ్ మోడల్ డిఫాల్ట్స్ పునరుద్ధరించబడ్డాయి", "resetToUpstreamDefaultsFailed": "అప్‌స్ట్రీమ్ మోడల్ డిఫాల్ట్స్‌ను పునరుద్ధరించడంలో విఫలమైంది", - "autoSyncTooltip": "Automatically refresh model list every 24h (configurable via MODEL_SYNC_INTERVAL_HOURS)", - "autoSyncEnabled": "Auto-sync enabled — models will refresh periodically", - "autoSyncDisabled": "Auto-sync disabled", - "autoSyncToggleFailed": "Failed to toggle auto-sync", - "autoSyncPartialFailure": "Auto-sync updated for some connections, but not all", - "clearAllModels": "Clear All Models", - "clearAllModelsConfirm": "Are you sure you want to remove all models for this provider? This cannot be undone.", - "clearAllModelsSuccess": "All models cleared", - "clearAllModelsFailed": "Failed to clear models", - "addConnectionToImport": "Add a connection to enable importing.", - "noModelsConfigured": "No models configured", - "connectionCount": "{count} connection(s)", - "fetchingModels": "Fetching available models...", - "failedFetchModels": "Failed to fetch models", + "autoSyncTooltip": "ప్రతి 24 గంటలకు మోడళ్ల జాబితాను స్వయంచాలకంగా తాజా పరచండి (MODEL_SYNC_INTERVAL_HOURS ద్వారా కాన్ఫిగర్ చేయవచ్చు)", + "autoSyncEnabled": "ఆటో-సింక్ ప్రారంభించబడింది — మోడళ్లు క్రమానుగతంగా తాజా పరచబడతాయి", + "autoSyncDisabled": "ఆటో-సింక్ నిలిపివేయబడింది", + "autoSyncToggleFailed": "ఆటో-సింక్ను మార్చడం విఫలమైంది", + "autoSyncPartialFailure": "కొన్ని కనెక్షన్ల కోసం ఆటో-సింక్ నవీకరించబడింది, కానీ అన్నింటికీ కాదు", + "clearAllModels": "అన్ని మోడళ్లను తొలగించండి", + "clearAllModelsConfirm": "ఈ ప్రొవైడర్కు సంబంధించిన అన్ని మోడళ్లను తొలగించాలని మీరు ఖచ్చితంగా అనుకుంటున్నారా? దీన్ని రద్దు చేయడం సాధ్యం కాదు.", + "clearAllModelsSuccess": "అన్ని మోడళ్లు తొలగించబడ్డాయి", + "clearAllModelsFailed": "మోడళ్లను తొలగించడం విఫలమైంది", + "addConnectionToImport": "దిగుమతిని ప్రారంభించడానికి ఒక కనెక్షన్ను జోడించండి.", + "noModelsConfigured": "మోడళ్లు ఏవీ కాన్ఫిగర్ చేయబడలేదు", + "connectionCount": "{count} కనెక్షన్(లు)", + "fetchingModels": "అందుబాటులో ఉన్న మోడళ్లను పొందుతోంది...", + "failedFetchModels": "మోడళ్లను పొందడం విఫలమైంది", "noFreeModelsFound": "ఈ ప్రొవైడర్ కోసం ఉచిత మోడళ్లు ఏవీ కనుగొనబడలేదు — ఏదీ దిగుమతి చేయబడలేదు.", "fetchModelsSuccess": "{count} కొత్త మోడళ్లు కనుగొనబడ్డాయి", "fetchModelsFailed": "మోడల్‌లను ఆటో-ఫెచ్ చేయడం సాధ్యపడలేదు (మీరు సెట్టింగ్‌ల నుండి మళ్లీ ప్రయత్నించవచ్చు)", - "noModelsFound": "No models found", - "importFailed": "Import failed", - "noNewModelsAdded": "No new models were added.", + "noModelsFound": "మోడళ్లు ఏవీ కనుగొనబడలేదు", + "importFailed": "దిగుమతి విఫలమైంది", + "noNewModelsAdded": "కొత్త మోడళ్లు ఏవీ జోడించబడలేదు.", "adding": "Adding...", - "close": "Close", - "importingModelsTitle": "Importing Models", - "copyModel": "Copy model", - "filterModels": "Filter models...", + "close": "మూసివేయండి", + "importingModelsTitle": "మోడళ్లను దిగుమతి చేస్తోంది", + "copyModel": "మోడల్ను కాపీ చేయండి", + "filterModels": "మోడళ్లను ఫిల్టర్ చేయండి...", "testAllRateLimited": "రేట్ పరిమితి ముగిసింది, ముందుగానే ఆపివేయబడింది", "hideFailedAuto": "విఫలమైన మోడల్‌లను ఆటో-హైడ్ చేయండి", - "selectAllModels": "Select all", + "selectAllModels": "అన్నింటినీ ఎంచుకోండి", "hideAllModels": "అన్నీ దాచండి", - "modelsActive": "Active", - "showModel": "Show model", - "hideModel": "Hide model", - "removeModel": "Remove model", - "rateLimitProtected": "Protected", - "rateLimitUnprotected": "Unprotected", + "modelsActive": "సక్రియం", + "showModel": "మోడల్ను చూపండి", + "hideModel": "మోడల్ను దాచండి", + "removeModel": "మోడల్ను తొలగించండి", + "rateLimitProtected": "రక్షితమైనది", + "rateLimitUnprotected": "రక్షణ లేనిది", "providerQuotaShort": "కోటా", "hideConnectionFromProviderQuota": "ప్రొవైడర్ కోటా నుండి ఈ ఖాతాను దాచండి", "showConnectionInProviderQuota": "ప్రొవైడర్ కోటాలో ఈ ఖాతాను చూపించండి", "quotaVisibilityUpdateFailed": "ప్రొవైడర్ కోటా విజిబిలిటీని అప్‌డేట్ చేయడం విఫలమైంది", - "enableRateLimitProtection": "Click to enable rate limit protection", - "disableRateLimitProtection": "Click to disable rate limit protection", + "enableRateLimitProtection": "రేట్ లిమిట్ రక్షణను ప్రారంభించడానికి క్లిక్ చేయండి", + "disableRateLimitProtection": "రేట్ లిమిట్ రక్షణను నిలిపివేయడానికి క్లిక్ చేయండి", "testAllProgress": "{done}/{total} పరీక్షించబడ్డాయి", "testAllFailedHidden": "{count} విఫలమైన మోడల్‌లు దాచబడ్డాయి", "testAllDone": "అన్ని మోడల్‌లు పరీక్షించబడ్డాయి", - "productionKey": "Production Key", - "enterNewApiKey": "Enter new API key", + "productionKey": "ప్రొడక్షన్ కీ", + "enterNewApiKey": "కొత్త API కీని నమోదు చేయండి", "codexApplyModalTitle": "స్థానిక కోడెక్స్‌కు వర్తించండి", "codexApplyTargetLabel": "లక్ష్య మార్గం", "codexApplyBackupLabel": "బ్యాకప్‌లు", @@ -5386,77 +5389,77 @@ "bulkAddFormatHint": "పంక్తికి ఒక కీ. ఫార్మాట్: పేరు|apiKey లేదా కేవలం apiKey (ఇండెక్స్ ద్వారా స్వయంచాలకంగా పేరు పెట్టబడింది).", "bulkValidateKeys": "సేవ్ చేయడానికి ముందు ప్రతి కీని ధృవీకరించండి (నెమ్మదిగా)", "bulkAddAllKeys": "అన్ని కీలను జోడించండి", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", - "optional": "Optional", + "bulkAddedCount": "{count, plural, one {# కీ జోడించబడింది} other {# కీలు జోడించబడ్డాయి}}", + "bulkFailedCount": "{count, plural, one {# విఫలమైంది} other {# విఫలమయ్యాయి}}", + "optional": "ఐచ్ఛికం", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", "compatibleDefaultModelLabel": "డిఫాల్ట్ మోడల్", "compatibleDefaultModelHint": "మీ అనుకూల ఎండ్‌పాయింట్ ఆశించిన విధంగానే మోడల్ IDని ఖచ్చితంగా నమోదు చేయండి. ఈ మోడల్ కనెక్షన్ డిఫాల్ట్‌గా సేవ్ చేయబడుతుంది.", - "failedImportModels": "Failed to import models", - "noModelsReturnedFromEndpoint": "No models returned from /models endpoint.", - "importingModelsProgress": "Importing {current} of {total} models...", - "foundModelsStartingImport": "Found {count} models. Starting import...", - "importingModelById": "Importing {modelId}...", - "importSuccessCount": "Successfully imported {count, plural, one {# model} other {# models}}!", - "noNewModelsAddedExisting": "No new models were added (all already exist).", - "importDoneCount": "✓ Done! {count, plural, one {# model imported.} other {# models imported.}}", - "unexpectedErrorOccurred": "An unexpected error occurred", + "failedImportModels": "మోడల్లను దిగుమతి చేయడం విఫలమైంది", + "noModelsReturnedFromEndpoint": "/models ఎండ్పాయింట్ నుండి ఎలాంటి మోడల్లు తిరిగి రాలేదు.", + "importingModelsProgress": "{total} మోడల్లలో {current}వ మోడల్ను దిగుమతి చేస్తోంది...", + "foundModelsStartingImport": "{count} మోడల్లు కనుగొనబడ్డాయి. దిగుమతిని ప్రారంభిస్తోంది...", + "importingModelById": "{modelId}ను దిగుమతి చేస్తోంది...", + "importSuccessCount": "{count, plural, one {# మోడల్ విజయవంతంగా దిగుమతి చేయబడింది} other {# మోడల్లు విజయవంతంగా దిగుమతి చేయబడ్డాయి}}!", + "noNewModelsAddedExisting": "కొత్త మోడల్లు ఏవీ జోడించబడలేదు (అన్నీ ఇప్పటికే ఉన్నాయి).", + "importDoneCount": "✓ పూర్తయింది! {count, plural, one {# మోడల్ దిగుమతి చేయబడింది.} other {# మోడల్లు దిగుమతి చేయబడ్డాయి.}}", + "unexpectedErrorOccurred": "ఊహించని లోపం సంభవించింది", "getApiKey": "API కీ పొందండి", "getApiKeyDescription": "API కీ కోసం నమోదు చేసుకోండి లేదా సైన్ అప్ చేయండి", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# కనెక్షన్} other {# కనెక్షన్లు}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", - "add": "Add", - "edit": "Edit", - "delete": "Delete", + "add": "జోడించు", + "edit": "సవరించు", + "delete": "తొలగించు", "anthropic": "Anthropic", "openai": "OpenAI", - "singleConnectionPerCompatible": "Only one connection is allowed per compatible node. Add another node if you need more connections.", - "connections": "Connections", - "providerProxyTitleConfigured": "Provider proxy: {host}", - "configured": "configured", - "providerProxyConfigureHint": "Configure proxy for all connections of this provider", - "providerProxy": "Provider Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", - "noConnectionsYet": "No connections yet", - "addFirstConnectionHint": "Add your first connection to get started", - "addConnection": "Add Connection", - "availableModels": "Available Models", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", - "pageAutoRefresh": "Page will refresh automatically...", - "statusDisabled": "disabled", - "statusConnected": "connected", - "statusRuntimeIssue": "runtime issue", - "statusAuthFailed": "auth failed", - "statusRateLimited": "rate limited", - "statusNetworkIssue": "network issue", - "statusTestUnsupported": "test unsupported", - "statusUnavailable": "unavailable", - "statusFailed": "failed", - "statusError": "error", - "oauthAccount": "OAuth Account", - "errorTypeRuntime": "Local runtime", - "errorTypeUpstreamAuth": "Upstream auth", - "errorTypeMissingCredential": "Missing credential", - "errorTypeRefreshFailed": "Refresh failed", - "errorTypeTokenExpired": "Token expired", - "errorTypeRateLimited": "Rate limited", - "errorTypeUpstreamUnavailable": "Upstream unavailable", - "errorTypeNetworkError": "Network error", - "errorTypeTestUnsupported": "Test unsupported", - "errorTypeUpstreamError": "Upstream error", + "singleConnectionPerCompatible": "అనుకూలమైన ప్రతి నోడ్కు ఒక కనెక్షన్ మాత్రమే అనుమతించబడుతుంది. మరిన్ని కనెక్షన్లు అవసరమైతే మరొక నోడ్ను జోడించండి.", + "connections": "కనెక్షన్లు", + "providerProxyTitleConfigured": "ప్రొవైడర్ ప్రాక్సీ: {host}", + "configured": "కాన్ఫిగర్ చేయబడింది", + "providerProxyConfigureHint": "ఈ ప్రొవైడర్కు చెందిన అన్ని కనెక్షన్ల కోసం ప్రాక్సీని కాన్ఫిగర్ చేయండి", + "providerProxy": "ప్రొవైడర్ ప్రాక్సీ", + "repairEnv": "envను మరమ్మతు చేయి", + "repairEnvWorking": "మరమ్మతు చేస్తోంది...", + "repairEnvHint": "ఇప్పటికే ఉన్న విలువలను ఓవర్రైట్ చేయకుండా, లేని OAuth డిఫాల్ట్లను .envలో పునరుద్ధరించండి.", + "repairEnvSuccess": "OAuth డిఫాల్ట్లు పునరుద్ధరించబడ్డాయి", + "repairEnvFailed": ".envను మరమ్మతు చేయడం విఫలమైంది", + "noConnectionsYet": "ఇంకా కనెక్షన్లు లేవు", + "addFirstConnectionHint": "ప్రారంభించడానికి మీ మొదటి కనెక్షన్ను జోడించండి", + "addConnection": "కనెక్షన్ను జోడించు", + "availableModels": "అందుబాటులో ఉన్న మోడల్లు", + "builtInModels": "అంతర్నిర్మిత మోడల్లు", + "builtInModelsHint": "ఈ ప్రొవైడర్ కోసం రిజిస్ట్రీ మోడల్లు. అనుకూలత ఎంపికలను సెట్ చేయడానికి పెన్సిల్ను ఉపయోగించండి.", + "pageAutoRefresh": "పేజీ స్వయంచాలకంగా రిఫ్రెష్ అవుతుంది...", + "statusDisabled": "నిలిపివేయబడింది", + "statusConnected": "కనెక్ట్ చేయబడింది", + "statusRuntimeIssue": "రన్టైమ్ సమస్య", + "statusAuthFailed": "ప్రామాణీకరణ విఫలమైంది", + "statusRateLimited": "రేటు పరిమితం చేయబడింది", + "statusNetworkIssue": "నెట్వర్క్ సమస్య", + "statusTestUnsupported": "పరీక్షకు మద్దతు లేదు", + "statusUnavailable": "అందుబాటులో లేదు", + "statusFailed": "విఫలమైంది", + "statusError": "లోపం", + "oauthAccount": "OAuth ఖాతా", + "errorTypeRuntime": "స్థానిక రన్టైమ్", + "errorTypeUpstreamAuth": "అప్స్ట్రీమ్ ప్రమాణీకరణ", + "errorTypeMissingCredential": "క్రెడెన్షియల్ లేదు", + "errorTypeRefreshFailed": "రిఫ్రెష్ విఫలమైంది", + "errorTypeTokenExpired": "టోకెన్ గడువు ముగిసింది", + "errorTypeRateLimited": "రేట్ పరిమితం చేయబడింది", + "errorTypeUpstreamUnavailable": "అప్స్ట్రీమ్ అందుబాటులో లేదు", + "errorTypeNetworkError": "నెట్వర్క్ లోపం", + "errorTypeTestUnsupported": "పరీక్షకు మద్దతు లేదు", + "errorTypeUpstreamError": "అప్స్ట్రీమ్ లోపం", "errorTypeCreditsExhausted": "క్రెడిట్‌లు లేవు", "errorTypeBanned": "403 నిషేధించబడింది", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", - "proxySourceKey": "Key", + "proxySourceGlobal": "గ్లోబల్", + "proxySourceProvider": "ప్రొవైడర్", + "proxySourceKey": "కీ", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "ప్రాక్సీ ఆన్", "proxyOff": "డైరెక్ట్ (ప్రాక్సీని బైపాస్ చేయండి)", @@ -5468,31 +5471,31 @@ "perKeyProxyDisabledTitle": "ఈ ప్రొవైడర్ కోసం కీ వారీ ప్రాక్సీ కేటాయింపు నిలిపివేయబడింది", "autoPriority": "Auto: {priority}", "proxy": "Proxy", - "retestAuthentication": "Retest authentication", - "retest": "Retest", - "disableConnection": "Disable connection", - "enableConnection": "Enable connection", - "reauthenticateConnection": "Re-authenticate this connection", - "proxyConfig": "Proxy config", - "aliasExistsAlert": "Alias \"{alias}\" already exists. Please use a different model or edit existing alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter supports any model. Add models and create aliases for quick access.", - "modelIdFromOpenRouter": "Model ID (from OpenRouter)", + "retestAuthentication": "ప్రమాణీకరణను మళ్లీ పరీక్షించండి", + "retest": "మళ్లీ పరీక్షించండి", + "disableConnection": "కనెక్షన్ను నిలిపివేయండి", + "enableConnection": "కనెక్షన్ను ప్రారంభించండి", + "reauthenticateConnection": "ఈ కనెక్షన్ను మళ్లీ ప్రమాణీకరించండి", + "proxyConfig": "ప్రాక్సీ కాన్ఫిగరేషన్", + "aliasExistsAlert": "\"{alias}\" అనే మారుపేరు ఇప్పటికే ఉంది. దయచేసి వేరే మోడల్ను ఉపయోగించండి లేదా ఇప్పటికే ఉన్న మారుపేరును సవరించండి.", + "aliasInputPlaceholder": "మారుపేరు", + "clickToSetAlias": "మారుపేరును సెట్ చేయడానికి క్లిక్ చేయండి", + "clickToEditAlias": "మారుపేరు: {alias} (సవరించడానికి క్లిక్ చేయండి)", + "openRouterAnyModelHint": "OpenRouter ఏ మోడల్కైనా మద్దతు ఇస్తుంది. త్వరిత యాక్సెస్ కోసం మోడళ్లను జోడించి మారుపేర్లను సృష్టించండి.", + "modelIdFromOpenRouter": "మోడల్ ID (OpenRouter నుండి)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", - "customModels": "Custom Models", - "customModelsHint": "Add model IDs not in the default list. These will be available for routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "customModels": "అనుకూల మోడళ్లు", + "customModelsHint": "డిఫాల్ట్ జాబితాలో లేని మోడల్ IDలను జోడించండి. ఇవి రూటింగ్ కోసం అందుబాటులో ఉంటాయి.", + "normalizeToolCallIdLabel": "టూల్ కాల్ IDలను 9 అక్షరాలకు సాధారణీకరించండి (ఉదా. Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responses డెవలపర్ పాత్రను అలాగే ఉంచండి (systemకు మ్యాప్ చేయవద్దు)", + "compatAdjustmentsTitle": "అనుకూలత", + "compatButtonLabel": "అనుకూలత", + "compatToolIdShort": "టూల్ ID 9", + "compatDeveloperShort": "డెవలపర్ పాత్ర", + "compatDoNotPreserveDeveloper": "డెవలపర్ పాత్రను అలాగే ఉంచవద్దు", + "compatBadgeNoPreserve": "అలాగే ఉంచవద్దు", + "compatProtocolLabel": "క్లయింట్ అభ్యర్థన ప్రోటోకాల్", + "compatProtocolHint": "OmniRoute ఈ అభ్యర్థన ఆకృతిని (OpenAI Chat, Responses API లేదా Anthropic Messages) గుర్తించినప్పుడు ఈ ఎంపికలు వర్తిస్తాయి.", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,84 +5537,84 @@ "interceptFetchHint": "స్థానిక web_fetch టూల్ కాల్‌లను OmniRoute యొక్క /v1/web/fetch కి రీరైట్ చేయండి.", "interceptionLoadError": "ఇంటర్‌సెప్షన్ సెట్టింగ్‌లను లోడ్ చేయడం విఫలమైంది: {error}", "interceptionSaveError": "ఇంటర్‌సెప్షన్ సెట్టింగ్‌లను సేవ్ చేయడం విఫలమైంది: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", - "perModelQuotaLabel": "Per-Model Quota", - "perModelQuotaDescription": "When enabled, 429/404 errors only lock the specific model, not the entire connection. Use for providers with per-model rate limits (e.g., ModelScope).", + "ccAliasSectionTitle": "Claude Codeలో బహిర్గతం చేయి (claude/…)", + "ccAliasSectionHint": "ఈ ప్రొవైడర్ మోడళ్లను claude/<provider>/<model> మిర్రర్ IDల కింద ప్రకటించండి, తద్వారా Claude Code గేట్వే మోడల్ డిస్కవరీ వాటిని జాబితా చేయగలదు. డిఫాల్ట్గా ఆఫ్లో ఉంటుంది — దీన్ని ప్రారంభిస్తే క్లయింట్లందరికీ కేటలాగ్ ఎంట్రీలు రెట్టింపు అవుతాయి.", + "ccAliasProviderLevelLabel": "ప్రొవైడర్ డిఫాల్ట్", + "ccAliasModelOverridesLabel": "ఒక్కో మోడల్కు ఓవర్రైడ్లు", + "ccAliasModelOverrideAriaLabel": "{modelId} కోసం ఓవర్రైడ్", + "ccAliasStateInherit": "వారసత్వంగా పొందు", + "ccAliasStateOn": "ఆన్", + "ccAliasStateOff": "ఆఫ్", + "ccAliasAddModelPlaceholder": "మోడల్ ID (ఉదా. gpt-4o)", + "ccAliasAddModelButton": "ఓవర్రైడ్ను జోడించు", + "ccAliasLoadError": "డిస్కవరీ-అలియాస్ సెట్టింగ్లను లోడ్ చేయడం విఫలమైంది: {error}", + "ccAliasSaveError": "డిస్కవరీ-అలియాస్ సెట్టింగ్ను సేవ్ చేయడం విఫలమైంది: {error}", + "compatUpstreamHeadersLabel": "అదనపు అప్స్ట్రీమ్ హెడర్లు", + "compatUpstreamHeadersHint": "అధిక-అధికార సెట్టింగ్ — ప్రొవైడర్ API క్రెడెన్షియల్స్ను సవరించడానికి ఉన్నదే దీనికీ నమ్మక స్థాయి; విశ్వసనీయ అడ్మిన్లు మాత్రమే దీన్ని ఉపయోగించాలి. ప్రొవైడర్ API కీ నుండి OmniRoute ప్రమాణీకరణను జోడించిన తర్వాత ఇవి విలీనం చేయబడతాయి. కస్టమ్ హెడర్ పేరు ఇప్పటికే ఉన్న హెడర్ పేరుతో ఒకేలా ఉంటే (ఉదా. Authorization), మీ విలువ స్వయంచాలకంగా రూపొందించిన హెడర్ను పూర్తిగా భర్తీ చేస్తుంది (Bearer టోకెన్తో సహా) — అప్స్ట్రీమ్కు మీరు టైప్ చేసినది మాత్రమే కనిపిస్తుంది, సెట్టింగ్లలోని కీ కనిపించదు. తప్పుగా కాన్ఫిగర్ చేస్తే 401 లోపం రావచ్చు లేదా అప్స్ట్రీమ్ ప్రమాణీకరణ పనిచేయకపోవచ్చు. ఒక్కో హెడర్కు ఒక్కో వరుస (ఉదా. కొన్ని గేట్వేల కోసం అదనపు Authentication). ప్రివ్యూ చూడటానికి విలువపై హోవర్ చేయండి లేదా ఫోకస్ చేయండి. ఫోకస్ తొలగినప్పుడు, బయట క్లిక్ చేసినప్పుడు లేదా ఈ ప్యానెల్ను మూసివేసినప్పుడు సేవ్ అవుతుంది.", + "compatUpstreamHeaderName": "హెడర్ పేరు", + "compatUpstreamHeaderValue": "విలువ", + "compatUpstreamAddRow": "హెడర్ను జోడించు", + "compatUpstreamRemoveRow": "వరుసను తొలగించు", + "compatBadgeUpstreamHeaders": "హెడర్లు", + "perModelQuotaLabel": "ఒక్కో మోడల్కు కోటా", + "perModelQuotaDescription": "దీన్ని ప్రారంభించినప్పుడు, 429/404 లోపాలు మొత్తం కనెక్షన్ను కాకుండా నిర్దిష్ట మోడల్ను మాత్రమే లాక్ చేస్తాయి. ఒక్కో మోడల్కు వేర్వేరు రేట్ పరిమితులు ఉన్న ప్రొవైడర్ల కోసం దీన్ని ఉపయోగించండి (ఉదా., ModelScope).", "importFreeModelsOnlyLabel": "ఉచిత మోడల్‌లను మాత్రమే ఇంపోర్ట్ చేయండి", "importFreeModelsOnlyHint": "ఎనేబుల్ చేసినప్పుడు, ఈ ప్రొవైడర్ యొక్క ఉచిత మోడల్‌లు మాత్రమే ఇంపోర్ట్ చేయబడతాయి. చెల్లింపు మోడల్‌లు దాటవేయబడతాయి.", - "perModelQuotaToggle": "Per-Model Quota Toggle", - "modelId": "Model ID", - "customModelPlaceholder": "e.g. gpt-4.5-turbo", - "loading": "Loading...", - "removeCustomModel": "Remove custom model", - "noCustomModels": "No custom models added yet.", - "allSuggestedAliasesExist": "All suggested aliases already exist. Please choose a different model or remove conflicting aliases.", - "failedSaveCustomModel": "Failed to save custom model", - "modelAddedSuccess": "Model {modelId} added successfully", - "failedAddModelTryAgain": "Failed to add model. Please try again.", - "failedSaveImportedModel": "Failed to save imported model to custom database", - "failedImportModelsTryAgain": "Failed to import models. Please try again.", - "failedRemoveModelFromDatabase": "Failed to remove model from database", - "modelRemovedSuccess": "Model removed successfully", - "failedDeleteModelTryAgain": "Failed to delete model. Please try again.", - "compatibleModelsDescription": "Add {type}-compatible models manually or import them from the /models endpoint.", + "perModelQuotaToggle": "ఒక్కో మోడల్ కోటా టాగుల్", + "modelId": "మోడల్ ID", + "customModelPlaceholder": "ఉదా. gpt-4.5-turbo", + "loading": "లోడ్ అవుతోంది...", + "removeCustomModel": "కస్టమ్ మోడల్ను తొలగించు", + "noCustomModels": "ఇంకా కస్టమ్ మోడళ్లు ఏవీ జోడించబడలేదు.", + "allSuggestedAliasesExist": "సూచించిన అలియాస్లన్నీ ఇప్పటికే ఉన్నాయి. దయచేసి వేరే మోడల్ను ఎంచుకోండి లేదా విరుద్ధమైన అలియాస్లను తొలగించండి.", + "failedSaveCustomModel": "కస్టమ్ మోడల్ను సేవ్ చేయడం విఫలమైంది", + "modelAddedSuccess": "మోడల్ {modelId} విజయవంతంగా జోడించబడింది", + "failedAddModelTryAgain": "మోడల్ను జోడించడం విఫలమైంది. దయచేసి మళ్లీ ప్రయత్నించండి.", + "failedSaveImportedModel": "దిగుమతి చేసిన మోడల్ను కస్టమ్ డేటాబేస్లో సేవ్ చేయడం విఫలమైంది", + "failedImportModelsTryAgain": "మోడళ్లను దిగుమతి చేయడం విఫలమైంది. దయచేసి మళ్లీ ప్రయత్నించండి.", + "failedRemoveModelFromDatabase": "డేటాబేస్ నుండి మోడల్ను తొలగించడం విఫలమైంది", + "modelRemovedSuccess": "మోడల్ విజయవంతంగా తొలగించబడింది", + "failedDeleteModelTryAgain": "మోడల్ను తొలగించడం విఫలమైంది. దయచేసి మళ్లీ ప్రయత్నించండి.", + "compatibleModelsDescription": "{type}-అనుకూల మోడళ్లను మాన్యువల్గా జోడించండి లేదా /models ఎండ్పాయింట్ నుండి వాటిని దిగుమతి చేయండి.", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API key validation failed. Please check your key and try again.", - "addProviderApiKeyTitle": "Add {provider} API Key", - "checking": "Checking...", - "check": "Check", - "valid": "Valid", - "invalid": "Invalid", - "creating": "Creating...", - "validationChecksAnthropicCompatible": "Validation checks {provider} by verifying the API key.", - "validationChecksOpenAiCompatible": "Validation checks {provider} via /models on your base URL.", - "priorityLabel": "Priority", - "saving": "Saving...", - "save": "Save", - "editConnection": "Edit Connection", - "accountName": "Account name", + "apiKeyValidationFailed": "API కీ ధ్రువీకరణ విఫలమైంది. దయచేసి మీ కీని తనిఖీ చేసి మళ్లీ ప్రయత్నించండి.", + "addProviderApiKeyTitle": "{provider} API కీని జోడించు", + "checking": "తనిఖీ చేస్తోంది...", + "check": "తనిఖీ చేయండి", + "valid": "చెల్లుబాటు అవుతుంది", + "invalid": "చెల్లదు", + "creating": "సృష్టిస్తోంది...", + "validationChecksAnthropicCompatible": "API కీని ధృవీకరించడం ద్వారా {provider}ను తనిఖీ చేస్తుంది.", + "validationChecksOpenAiCompatible": "మీ బేస్ URLలోని /models ద్వారా {provider}ను తనిఖీ చేస్తుంది.", + "priorityLabel": "ప్రాధాన్యత", + "saving": "సేవ్ చేస్తోంది...", + "save": "సేవ్ చేయండి", + "editConnection": "కనెక్షన్ను సవరించండి", + "accountName": "ఖాతా పేరు", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "ఆరోగ్య తనిఖీ (నిమి)", "healthCheckHint": "Proactive token refresh interval. 0 = disabled.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", - "failedTestConnection": "Failed to test connection", - "failed": "Failed", - "leaveBlankKeepCurrentApiKey": "Leave blank to keep the current API key.", - "editCompatibleTitle": "Edit {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", - "apiKeyForCheck": "API Key (for Check)", + "deselectAllModels": "అన్నింటి ఎంపికను తీసివేయండి", + "modelsActiveCount": "{active}/{total} సక్రియంగా ఉన్నాయి", + "noModelsMatch": "\"{filter}\"కు సరిపోలే మోడళ్లు లేవు", + "groupLabel": "పర్యావరణం", + "groupPlaceholder": "ఉదా. eKaizen, వ్యక్తిగతం", + "failedTestConnection": "కనెక్షన్ను పరీక్షించడం విఫలమైంది", + "failed": "విఫలమైంది", + "leaveBlankKeepCurrentApiKey": "ప్రస్తుత API కీని ఉంచడానికి ఖాళీగా వదలండి.", + "editCompatibleTitle": "{type} అనుకూలతను సవరించండి", + "compatibleBaseUrlHint": "మీ {type}-అనుకూల API యొక్క రూట్ URL. అనుకూల ఎండ్పాయింట్ పాత్ల కోసం అధునాతన సెట్టింగ్లను ఉపయోగించండి.", + "apiKeyForCheck": "API కీ (తనిఖీ కోసం)", "testModelIdLabel": "మోడల్ ID (ఐచ్ఛికం)", "testModelIdPlaceholder": "ఉదా. my-model-id", "testModelIdHint": "ప్రొవైడర్‌కు /models ఎండ్‌పాయింట్ లేకపోతే, బదులుగా /chat/completions ద్వారా ధృవీకరించడానికి మోడల్ IDని నమోదు చేయండి.", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "{type} అనుకూలం (ప్రొడ్)", + "tokenRefreshed": "టోకెన్ విజయవంతంగా రిఫ్రెష్ చేయబడింది", + "tokenRefreshFailed": "టోకెన్ రిఫ్రెష్ విఫలమైంది", "cursorSessionUnchanged": "సెషన్ ఇప్పటికే ప్రస్తుతమైంది", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "ప్రమాణీకరణను వర్తింపజేయండి", + "exportCodexAuthFile": "ప్రమాణీకరణను ఎగుమతి చేయండి", "applyClaudeAuthLocal": "ప్రమాణాన్ని వర్తింపజేయండి", "exportClaudeAuthFile": "ఎగుమతి ప్రమాణం", "importClaudeAuth": "ధృవీకరణను దిగుమతి చేయండి", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} విఫలమైంది", "codexImportBulkZipExtracting": "జిప్‌ని సంగ్రహిస్తోంది…", "codexImportBulkZipError": "జిప్‌ని సంగ్రహించడంలో విఫలమైంది", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "అధునాతన సెట్టింగ్లు", + "chatPathLabel": "చాట్ ఎండ్పాయింట్ పాత్", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "ప్రామాణికం కాని APIలు గల ప్రొవైడర్ల కోసం అనుకూల చాట్ పాత్ (ఉదా. /v4/chat/completions)", + "modelsPathLabel": "మోడళ్ల ఎండ్పాయింట్ పాత్", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "ధృవీకరణ కోసం అనుకూల మోడళ్ల పాత్ (ఉదా. /v4/models)", "clientIdentityLabel": "క్లయింట్ గుర్తింపు", "clientIdentityHint": "ఐచ్ఛికం. క్లయింట్ ఫింగర్‌ప్రింట్ హెడర్‌లను (ఉదా. User-Agent) జోడిస్తుంది, ఇది ఆశించే అనుకూల గేట్‌వేల కోసం తెలిసిన CLIకి సరిపోలుతుంది.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "నిష్క్రియం చేయబడింది (మాన్యువల్)", + "statusBanned": "నిషేధించబడింది / శాండ్బాక్స్ ఉల్లంఘన", + "statusCreditsExhausted": "తగినంత బ్యాలెన్స్ లేదు / కోటా అయిపోయింది", + "showEmails": "అన్ని ఇమెయిల్లను చూపించండి", + "hideEmails": "అన్ని ఇమెయిల్లను దాచండి", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "మరొక API కీని జోడించండి లేదా అనేక కీలను పేస్ట్ చేయండి", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "అగ్రిగేటర్లు గేట్వేలు", "enterpriseCloud": "ఎంటర్‌ప్రైజ్ & క్లౌడ్", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API ఫార్మాట్ లేబుల్", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API ప్రాంతం చైనా", + "apiRegionHint": "API ప్రాంత సూచన", + "apiRegionInternational": "API ప్రాంతం అంతర్జాతీయం", + "apiRegionLabel": "API ప్రాంత లేబుల్", + "apikey": "API కీ", + "audio": "ఆడియో", + "audioProvidersHeading": "ఆడియో ప్రొవైడర్ల శీర్షిక", "cloudAgentProviders": "క్లౌడ్ ఏజెంట్ ప్రొవైడర్లు", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "ఆడియో సంక్షిప్త లేబుల్", + "azureOpenAiBaseUrlHint": "Azure Open AI బేస్ URL సూచన", + "bailianBaseUrlHint": "Bailian బేస్ URL సూచన", + "claudeWebCookieHint": "claude.ai తెరవండి → DevTools → Application → Cookies → claude.aiకు వెళ్లి, 'sessionKey' విలువను కాపీ చేయండి. Cloudflare కోసం cf_clearance, __cf_bm, _cfuvid కూడా అవసరం.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web కుకీ సూచన", + "blackboxWebCookiePlaceholder": "Blackbox Web కుకీ ప్లేస్హోల్డర్", "t3ChatWebCookieHint": "t3.chat → DevTools → అప్లికేషన్ → స్థానిక నిల్వ → https://t3.chat తెరవండి, 'convex-session-id'ని కాపీ చేయండి. తర్వాత DevTools → నెట్‌వర్క్‌ని తెరవండి, ఏదైనా చాట్ అభ్యర్థన నుండి పూర్తి కుకీ హెడర్‌ను కాపీ చేయండి. దిగువ ఫీల్డ్‌లలో రెండు విలువలను అతికించండి.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web కుకీ సూచన", "blockClaudeExtraUsageDescription": "సక్రియమైనప్పుడు, OmniRoute ఈ Claude కనెక్షన్‌ను అందుబాటులో లేనట్లుగా గుర్తిస్తుంది, ఉపయోగం API క్యూలో ఉన్న అదనపు ఉపయోగాన్ని నివేదించిన వెంటనే, కాబట్టి ఫాల్బ్యాక్ మరో కనెక్షన్‌కు మారుతుంది, పేమెంట్-అన్-యూ-గో అదనపు బిల్లింగ్ కొనసాగించకుండా.", "blockClaudeExtraUsageLabel": "అతిరిక్త క్లాడ్ వినియోగాన్ని అడ్డుకోండి", "disableCoolingDescription": "తాత్కాలిక కూల్‌డౌన్‌ను దాటవేయండి, తద్వారా రికవర్ చేయగల ఎర్రర్‌ల తర్వాత కూడా ఈ కనెక్షన్ అర్హత కలిగి ఉంటుంది (banned/expired వంటి టెర్మినల్ స్థితులు ఇప్పటికీ వర్తిస్తాయి).", "disableCoolingLabel": "ఈ కనెక్షన్ కోసం కూల్‌డౌన్‌ను నిలిపివేయండి", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 కీ జోడించబడింది} other {# కీలు జోడించబడ్డాయి}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 నకలు దాటవేయబడింది} other {# నకళ్లు దాటవేయబడ్డాయి}}", + "bulkPasteHint": "ఒక్కో పంక్తిలో ఒక API కీని పేస్ట్ చేయండి. ఖాళీ పంక్తులు విస్మరించబడతాయి మరియు నకలు కీలు దాటవేయబడతాయి.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "దాచిన Claude థింకింగ్ స్ట్రీమ్లు అవసరమయ్యే CC Compatible అప్స్ట్రీమ్ల కోసం redact-thinking బీటా హెడర్ను జోడిస్తుంది.", + "ccCompatibleRedactThinkingLabel": "redact-thinking బీటాను ప్రారంభించండి", + "ccCompatibleSummarizeThinkingDescription": "మద్దతు ఉన్న Claude మోడల్లు కనిపించే థింకింగ్ డెల్టాలను స్ట్రీమ్ చేసేలా CC Compatible థింకింగ్ అభ్యర్థనలకు `display: \"summarized\"`ను జోడిస్తుంది.", + "ccCompatibleSummarizeThinkingLabel": "సంగ్రహించిన థింకింగ్ ప్రదర్శనను ప్రారంభించండి", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "అందుబాటులో ఉన్నప్పుడు Codex అభ్యర్థనల కోసం ప్రాధాన్యత సేవా స్థాయిని ఉపయోగించండి.", + "codexFastServiceTierLabel": "Codex వేగవంతమైన సేవా స్థాయి", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Compatible అప్స్ట్రీమ్ హెడర్ పేరు ప్లేస్హోల్డర్", + "compatUpstreamHeaderValuePlaceholder": "Compatible అప్స్ట్రీమ్ హెడర్ విలువ ప్లేస్హోల్డర్", + "compatible": "అనుకూలమైనది", + "configuredCount": "కాన్ఫిగర్ చేసిన సంఖ్య", + "consoleApiKeyOracleHint": "కన్సోల్ API కీ Oracle సూచన", + "consoleApiKeyOracleLabel": "కన్సోల్ API కీ Oracle లేబుల్", + "consoleApiKeyOraclePlaceholder": "కన్సోల్ API కీ Oracle ప్లేస్హోల్డర్", + "newApiUserIdLabel": "New-API వినియోగదారు ID", + "newApiUserIdPlaceholder": "ఉదా. 12345", + "newApiUserIdHint": "కోటా బ్యాలెన్స్ను పొందడానికి కన్సోల్ API కీతో కలిపి ఉపయోగించే AgentRouter New-Api-User హెడర్ విలువ.", "newApiAggregatorToggleLabel": "అగ్రిగేటర్ గేట్వే", "newApiAggregatorToggleHint": "New-API / One-API / Sub2API సమీకర్త నోడ్స్ కోసం బ్యాలెన్స్ గుర్తింపు ప్రారంభించండి. డాష్‌బోర్డ్ బ్యాలెన్స్ బ్యాడ్జ్‌ను చూపిస్తుంది మరియు క్వోటా-ప్రీఫ్లైట్ రూటింగ్ ఖర్చైన ఖాతాలను దాటిస్తుంది.", "newApiAggregatorConsoleApiKeyHint": "అగ్రిగేటర్ యొక్క /api/user/self ఎండ్‌పాయింట్ కోసం సిస్టమ్ యాక్సెస్ టోకెన్. రౌటింగ్ API కీ కాదు.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "New-API / One-API / Sub2API సమ్మేళనానికి అనుకూలమైన నోడ్స్ కోసం బ్యాలెన్స్ గుర్తింపు ప్రారంభించండి", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "కస్టమ్ యూజర్ ఏజెంట్ సూచన", + "customUserAgentLabel": "కస్టమ్ యూజర్ ఏజెంట్ లేబుల్", + "databricksBaseUrlHint": "Databricks బేస్ URL సూచన", + "defaultThinkingStrengthHint": "అభ్యర్థనలో రీజనింగ్ ప్రయత్న స్థాయి పేర్కొననప్పుడు ఉపయోగించబడుతుంది.", + "defaultThinkingStrengthLabel": "డిఫాల్ట్ ఆలోచనా సామర్థ్యం", + "deleteAllExtraApiKeys": "అన్నింటినీ తొలగించు", + "excludedModelsHint": "మినహాయించిన మోడళ్ల సూచన", + "excludedModelsLabel": "మినహాయించిన మోడళ్ల లేబుల్", + "excludedModelsPlaceholder": "మినహాయించిన మోడళ్ల ప్లేస్హోల్డర్", + "expirationBannerExpired": "గడువు బ్యానర్ గడువు ముగిసింది", + "expirationBannerExpiredDesc": "గడువు బ్యానర్ గడువు ముగిసిన వివరణ", + "expirationBannerExpiringSoon": "గడువు బ్యానర్ త్వరలో ముగియనుంది", + "expirationBannerExpiringSoonDesc": "గడువు బ్యానర్ త్వరలో ముగియనున్న వివరణ", + "extraApiKeyMasked": "కీ {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "అదనపు API కీల సూచన", + "extraApiKeysLabel": "అదనపు API కీల లేబుల్", + "apiKeyHealthLabel": "API కీ స్థితి", + "apiKeyStatusActive": "సక్రియం", + "apiKeyStatusWarning": "హెచ్చరిక ({count} వైఫల్యాలు)", + "apiKeyStatusInvalid": "చెల్లదు", + "primaryKey": "ప్రాథమిక కీ", + "apiKeyInvalidAlert": "కనెక్షన్లలో ప్రామాణీకరణ వైఫల్యాల కారణంగా {count} API కీ(లు) చెల్లనివిగా గుర్తించబడ్డాయి: {connections}. రొటేషన్లో అవి దాటవేయబడతాయి. సమీక్షించడానికి క్లిక్ చేయండి.", + "apiKeyInvalidAlertTitle": "API కీ స్థితి హెచ్చరిక", + "apiKeyWarningAlert": "కనెక్షన్లలో అధిక వైఫల్య రేటు కారణంగా {count} API కీ(లు) హెచ్చరిక స్థితిలో ఉన్నాయి: {connections}. రొటేషన్ సమస్యలను నివారించడానికి సమీక్షించండి.", + "apiKeyWarningAlertTitle": "API కీ హెచ్చరిక", + "googlePseInfo": "Google Pse సమాచారం", "antigravityProjectIdHint": "యాంటీగ్రావిటీ క్లౌడ్ కోడ్ అభ్యర్థనల కోసం ఐచ్ఛిక ఓవర్‌రైడ్. Google OAuth సమయంలో కనుగొనబడిన ప్రాజెక్ట్‌ను ఉపయోగించడానికి ఖాళీగా ఉంచండి.", "antigravityClientProfileLabel": "క్లయింట్ ప్రొఫైల్", "antigravityClientProfileHint": "APIకి OmniRoute ఏ Antigravity క్లయింట్ గుర్తింపును ప్రదర్శించాలో ఎంచుకోండి.", @@ -5865,47 +5868,47 @@ "tierFast": "ఫాస్ట్", "antigravityProjectIdLabel": "Google క్లౌడ్ ప్రాజెక్ట్ ID", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok వెబ్ కుకీ ప్లేస్హోల్డర్", + "herokuBaseUrlHint": "Heroku బేస్ URL సూచన", + "hideEmail": "ఇమెయిల్ను దాచు", + "imageProviders": "చిత్ర ప్రొవైడర్లు", "videoProviders": "వీడియో జనరేషన్", "embeddingRerankProviders": "ఎంబెడ్డింగ్‌లు & రీర్యాంక్", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "చిత్రాల సంక్షిప్త లేబుల్", + "llmProviders": "LLM ప్రొవైడర్లు", + "localProviderApiKeyOptionalHint": "స్థానిక ప్రొవైడర్ API కీ ఐచ్ఛిక సూచన", + "localProviderBaseUrlHint": "స్థానిక ప్రొవైడర్ బేస్ URL సూచన", + "localProviders": "స్థానిక ప్రొవైడర్లు", + "maxConcurrentWholeNumberError": "గరిష్ఠ సమాంతర విలువ పూర్ణ సంఖ్యగా ఉండాలి", "m365TierLabel": "Copilot శ్రేణి", "m365TierHint": "ఈ కనెక్షన్ ఏ Microsoft 365 Copilot సర్ఫేస్‌ను ఉపయోగిస్తుందో ఎంచుకోండి. Individual అనేది డిఫాల్ట్ వినియోగదారు BizChat; Education మరియు Enterprise (work) వాటి టెనెంట్ సర్ఫేస్‌లను ఎంచుకుంటాయి.", "m365TierIndividualOption": "Individual (డిఫాల్ట్)", - "m365TierEduOption": "Education", - "m365TierEnterpriseOption": "Enterprise / Work", + "m365TierEduOption": "విద్య", + "m365TierEnterpriseOption": "ఎంటర్ప్రైజ్ / పని", "tierOverrideLabel": "శ్రేణి ఓవర్‌రైడ్", "tierOverrideAuto": "ఆటో (రూటింగ్ నిర్ణయిస్తుంది)", "tierOverrideFree": "ఉచితం", "tierOverrideCheap": "చౌకైనది", "tierOverridePremium": "ప్రీమియం", "tierOverrideHelpText": "మోడల్ ధరల నుండి OmniRoute దానిని అంచనా వేయడానికి బదులుగా, ఈ ప్రొవైడర్‌ను రూటింగ్ శ్రేణికి పిన్ చేయండి.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark వెబ్ కుకీ సూచన", + "museSparkWebCookiePlaceholder": "Muse Spark వెబ్ కుకీ ప్లేస్హోల్డర్", + "oauth": "OAuth", + "openCliTools": "CLI సాధనాలను తెరవండి", + "openSettings": "సెట్టింగ్లను తెరవండి", + "openaiResponsesStoreDescription": "అనుకూల Responses API అభ్యర్థనలు నిల్వ చేసిన ప్రతిస్పందన స్థితిని సంరక్షించడానికి అనుమతించండి.", + "openaiResponsesStoreLabel": "OpenAI Responses నిల్వ", + "perplexitySearchSharedKeyInfo": "Perplexity Search భాగస్వామ్య కీ సమాచారం", + "perplexityWebCookieHint": "Perplexity Web కుకీ సూచన", + "perplexityWebCookiePlaceholder": "Perplexity Web కుకీ ప్లేస్హోల్డర్", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "రేట్ పరిమితి ఓవర్‌రైడ్‌లు", "rateLimitOverridesMaxConcurrentHint": "ఈ కనెక్షన్ కోసం గరిష్ట ఏకకాల అభ్యర్థనల ఓవర్‌రైడ్. ఖాతా-స్థాయి పరిమితిని ఓవర్‌రైడ్ చేస్తుంది.", "rateLimitOverridesMaxConcurrentLabel": "గరిష్ట ఏకకాల అభ్యర్థనలు (రేట్ పరిమితి)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "రేట్-లిమిట్ స్లాట్ కోసం ఒక అభ్యర్థన విఫలమయ్యే ముందు వేచి ఉండగల గరిష్ఠ సమయం (ms). ఇది ఈ కనెక్షన్కు మాత్రమే గ్లోబల్ Resilience సెట్టింగ్ను భర్తీ చేస్తుంది.", + "rateLimitOverridesMaxWaitMsLabel": "గరిష్ఠ క్యూ నిరీక్షణ (ms)", "rateLimitOverridesMinTimeHint": "అభ్యర్థనల మధ్య కనీస సమయం (ms). డిఫాల్ట్ రేట్ లిమిటర్ ఆలస్యాన్ని ఓవర్‌రైడ్ చేస్తుంది.", "rateLimitOverridesMinTimeLabel": "కనీస విరామం (ms)", "rateLimitOverridesRpdHint": "ఈ కనెక్షన్ కోసం రోజుకు గరిష్ట అభ్యర్థనలు. ప్రొవైడర్ డిఫాల్ట్‌ను భర్తీ చేస్తుంది.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (టోకెన్‌లు/రోజు)", "rateLimitOverridesTpmHint": "ఈ కనెక్షన్ కోసం నిమిషానికి గరిష్ట టోకెన్‌లు. ప్రొవైడర్ డిఫాల్ట్‌ను ఓవర్‌రైడ్ చేస్తుంది.", "rateLimitOverridesTpmLabel": "TPM (టోకెన్‌లు/నిమిషం)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", - "searchProviders": "Search Providers", + "refreshOauthTokenTitle": "OAuth టోకెన్ను రిఫ్రెష్ చేయండి", + "regionHint": "ప్రాంత సూచన", + "regionLabel": "ప్రాంత లేబుల్", + "removeThisKey": "ఈ కీని తొలగించండి", + "routingTagsHint": "రూటింగ్ ట్యాగ్ల సూచన", + "routingTagsLabel": "రూటింగ్ ట్యాగ్ల లేబుల్", + "routingTagsPlaceholder": "రూటింగ్ ట్యాగ్ల ప్లేస్హోల్డర్", + "search": "శోధన", + "searchEngineIdHint": "శోధన ఇంజిన్ ID సూచన", + "searchEngineIdLabel": "శోధన ఇంజిన్ ID లేబుల్", + "searchEngineIdRequired": "శోధన ఇంజిన్ ID అవసరం", + "searchProvider": "శోధన ప్రొవైడర్", + "searchProviderDesc": "శోధన ప్రొవైడర్ వివరణ", + "searchProviders": "శోధన ప్రొవైడర్లు", "searchByModel": "మోడల్ ద్వారా శోధించండి…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "శోధన ప్రొవైడర్ల శీర్షిక", + "searxngBaseUrlHint": "Searxng బేస్ URL సూచన", + "searxngInfo": "Searxng సమాచారం", + "sessionCookieLabel": "సెషన్ కుకీ లేబుల్", + "showEmail": "ఇమెయిల్ను చూపించండి", + "snowflakeBaseUrlHint": "Snowflake బేస్ URL సూచన", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "ట్యాగ్ సమూహ సూచన", + "tagGroupLabel": "ట్యాగ్ సమూహ లేబుల్", + "tagGroupPlaceholder": "ట్యాగ్ సమూహ ప్లేస్హోల్డర్", + "testModel": "మోడల్ను పరీక్షించండి", + "testingModel": "మోడల్ను పరీక్షిస్తోంది", "modelTestQuotaTooltip": "కోటా ముగిసింది — రేపు పునరుద్ధరించబడుతుంది లేదా టాప్-అప్ అవసరం", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "టోకెన్ గడువు ముగిసిన బ్యాడ్జ్", + "tokenExpiredTitle": "టోకెన్ గడువు ముగిసింది", + "tokenExpiresSoonTitle": "టోకెన్ గడువు త్వరలో ముగుస్తుంది", + "tokenShort": "సంక్షిప్త టోకెన్", + "totalKeysRotating": "{count, plural, one {1 కీ రొటేట్ అవుతోంది} other {# కీలు రొటేట్ అవుతున్నాయి}}", + "unhideModel": "మోడల్ను మళ్లీ చూపించు", + "upstreamProxyProviders": "అప్స్ట్రీమ్ ప్రాక్సీ ప్రొవైడర్లు", "validationModelIdHint": "API కీని ధృవీకరించడానికి ఉపయోగించే మోడల్. ప్రొవైడర్ యొక్క మొదటి అందుబాటులో ఉన్న మోడల్‌ను ఉపయోగించడానికి ఖాళీగా ఉంచండి.", "validationModelIdLabel": "ధృవీకరణ మోడల్", "validationModelIdPlaceholder": "ఉదా. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "మీ Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) లేదా OAuth access_tokenను అతికించండి", + "webCookieProviders": "వెబ్ కుకీ ప్రొవైడర్లు", + "weeklyShort": "వారపు స్వల్ప పరిమితి", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo బేస్ URL సూచన", "globalCodexServiceMode": "గ్లోబల్ Codex సర్వీస్ మోడ్", "connect": "కనెక్ట్ చేయండి", "manualApiKey": "మాన్యువల్ API కీ", @@ -5975,9 +5978,9 @@ "zedImportDescription": "OS కీచైన్‌లో Zed IDE నిల్వ చేసిన AI ప్రొవైడర్ ఆధారాలను (OpenAI, Anthropic, Google, Mistral, xAI) కనుగొని, వాటిని కనెక్షన్‌లుగా దిగుమతి చేయండి. ఈ మెషీన్‌లో Zed IDE ఇన్‌స్టాల్ చేయబడి ఉండాలి.", "zedImportButton": "Zed నుండి దిగుమతి చేసుకోండి", "zedImportFailed": "Zed దిగుమతి విఫలమైంది", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed దిగుమతి సూచన", + "zedImportNetworkError": "Zed దిగుమతి నెట్వర్క్ లోపం", + "zedImportNone": "Zed దిగుమతులు ఏవీ లేవు", "zedImportSuccess": "{providers} ప్రొవైడర్(లు) కోసం Zed నుండి {credentials} క్రెడెన్షియల్(లు) దిగుమతి చేసుకున్నారు", "zedImporting": "ఆమోదిస్తున్న…", "zedNoCredentials": "కీచైన్‌లో Zed ఆధారాలు ఏవీ కనుగొనబడలేదు", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5 తో సహా 40+ మోడల్‌ల కోసం డిస్కౌంట్ పొందిన API ప్రాక్సీ. https://freeaiapikey.com/dashboard వద్ద మీ API కీని పొందండి. బేస్ URL: https://freeaiapikey.com/v1.", "freemodel-dev": "https://freemodel.dev వద్ద $300 ఉచిత API క్రెడిట్‌లను పొందండి — చెల్లింపు సమాచారం అవసరం లేదు. OpenAI-అనుకూల ఎండ్‌పాయింట్. GPT-5.4 మరియు GPT-5.5 మోడల్‌లు అందుబాటులో ఉన్నాయి.", "friendliai": "సర్వర్‌లెస్ ఇన్ఫరెన్స్ కోసం ఉచిత టైర్ — క్రెడిట్ కార్డ్ అవసరం లేదు", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio ద్వారా ఉచిత స్థాయి; ఒక్కో మోడల్ కోటాలు ఇకపై ప్రచురించబడవు (AI Studioలోని కోటా పేజీని తనిఖీ చేయండి) — క్రెడిట్ కార్డ్ అవసరం లేదు.", "gigachat": "API కీతో GigaChat (Sber) ని కనెక్ట్ చేయండి.", "gitlab": "పబ్లిక్ Code Suggestions API కోసం GitLab వ్యక్తిగత యాక్సెస్ టోకెన్. gitlab.com ని ఉపయోగించనప్పుడు సెల్ఫ్-హోస్టెడ్ బేస్ URLని కాన్ఫిగర్ చేయండి.", "gitlawb-gmi": "Gitlawb Opengateway డ్యాష్‌బోర్డ్ నుండి మీ API కీని పొందండి.", @@ -6184,7 +6187,7 @@ "glm-cn": "API కీతో GLM Coding (China) ని కనెక్ట్ చేయండి.", "glmt": "ఎక్కువ టోకెన్ బడ్జెట్, థింకింగ్ ఎనేబుల్ చేయబడిన మరియు ఎక్కువ టైమ్‌అవుట్‌తో కూడిన ప్రీసెట్ GLM ప్రొఫైల్.", "getgoapi": "API కీతో GoAPI ని కనెక్ట్ చేయండి.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "ఉచిత ప్లాన్: ఒక్కో మోడల్కు పరిమితులు (ఒక్కో చాట్ మోడల్కు రోజుకు 200K టోకెన్లు; RPM/RPD కోసం console.groq.com/docs/rate-limits చూడండి) — ఖాతాలో చెల్లింపు పద్ధతి లేదు.", "haiper": "haiper.ai/haiper-api వద్ద API కీని పొందండి", "heroku": "API కీతో Heroku AI ని కనెక్ట్ చేయండి.", "hcnsec": "api.hcnsec.cn వద్ద API కీని పొందండి", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.ai వద్ద API కీని సృష్టించండి, ఆపై దానిని ఇక్కడ Bearer టోకెన్‌గా పేస్ట్ చేయండి. https://router.requesty.ai/v1 వద్ద లైవ్ /v1/models కేటలాగ్‌తో OpenAI-అనుకూల ఎండ్‌పాయింట్ ఉంది.", "runwayml": "Runway వీడియో జనరేషన్ టాస్క్-ఆధారితమైనది. OmniRoute అనేది టెక్స్ట్-టు-వీడియో లేదా ఇమేజ్-టు-వీడియో జాబ్‌లను సమర్పిస్తుంది, /v1/tasks/[id] ని పోల్ చేస్తుంది మరియు పూర్తయిన వీడియో అవుట్‌పుట్‌లను తిరిగి OpenAI-వంటి /v1/videos/generations ప్రతిస్పందనగా సాధారణీకరిస్తుంది.", "sambanova": "సైన్అప్ చేసినప్పుడు $5 ఉచిత క్రెడిట్‌లు (30 రోజుల చెల్లుబాటు), క్రెడిట్ కార్డ్ అవసరం లేదు", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.ccలో API కీని సృష్టించి, దాన్ని ఇక్కడ Bearer టోకెన్గా అతికించండి. OpenAI-అనుకూల బేస్ URL: https://seekai.cc/v1.", "sap": "మోడల్ డిస్కవరీ AI_API_URL లో /v2/lm/scenarios/foundation-models/models ని ఉపయోగిస్తుంది. చాట్ అభ్యర్థనలు deploymentUrl/chat/completions ని ఉపయోగిస్తాయి మరియు AI-Resource-Group అవసరం.", "sarvam": "Sarvam AI OpenAI-తో అనుకూలంగా ఉంది /v1. OmniRoute /v1/modelsని ప్రోబ్ చేస్తుంది మరియు చాట్ ట్రాఫిక్‌ను /v1/chat/completionsకి రూట్ చేస్తుంది. మోడల్స్ ఇండిక్ భాషల కోసం ట్యూన్ చేయబడ్డాయి.", "scaleway": "కొత్త ఖాతాల కోసం 1M ఉచిత టోకెన్‌లు — EU/GDPR కంప్లైంట్ (పారిస్), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "ఇప్పటికే ఉన్న OAuth ఫ్లోతో Claude Codeని కనెక్ట్ చేయండి.", "cline": "ఇప్పటికే ఉన్న OAuth ఫ్లోతో Clineని కనెక్ట్ చేయండి.", "cursor": "ఇప్పటికే ఉన్న OAuth ఫ్లోతో Cursor IDEని కనెక్ట్ చేయండి.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "cursor.com/dashboard/api నుండి వినియోగదారు API కీ (crsr_...)తో Cursorను కనెక్ట్ చేయండి; IDE సెషన్ అవసరం లేదు.", "github": "ఇప్పటికే ఉన్న OAuth ఫ్లోతో GitHub Copilotని కనెక్ట్ చేయండి.", "gitlab-duo": "ai_features + read_user స్కోప్‌లతో కూడిన OAuth అప్లికేషన్. ఈ OmniRoute ఇన్‌స్టాన్స్‌లో GITLAB_DUO_OAUTH_CLIENT_ID మరియు ఐచ్ఛికంగా GITLAB_DUO_OAUTH_CLIENT_SECRETని కాన్ఫిగర్ చేయండి.", "kilocode": "ఇప్పటికే ఉన్న OAuth ఫ్లోతో Kilo Codeని కనెక్ట్ చేయండి.", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "ప్రొవైడర్ స్వంత డొమైన్ నుండి అవసరమైన ఆధారాలను కాపీ చేయండి. కుక్కీల కోసం, కుకీ హెడర్ విలువను మాత్రమే కాపీ చేసి, కుకీని విస్మరించండి:.", "webSessionGuideStep3Manual": "మాన్యువల్ మార్గం: బ్రౌజర్ డెవలపర్ టూల్స్‌ను తెరవండి (F12 → నెట్‌వర్క్), పేజీని రిఫ్రెష్ చేయండి, ఒక ప్రామాణిక అభ్యర్థనను తెరవండి, మరియు అభ్యర్థన హెడ్డర్ల నుండి కుకీ హెడ్డర్ విలువను కాపీ చేయండి — కుకీ: ప్రిఫిక్స్‌ను మిస్సు చేయండి.", "webSessionGuideStep4": "దీన్ని ఇక్కడ అతికించండి మరియు కనెక్షన్‌ని తనిఖీ చేయండి. ఇది పని చేయడం ఆపివేస్తే, మళ్లీ సైన్ ఇన్ చేసి, దాన్ని తాజా విలువతో భర్తీ చేయండి.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har ఫైల్ను దిగుమతి చేయండి", + "harImportButtonBusy": "దిగుమతి చేస్తోంది…", + "harImportButtonHint": "కనీసం ఒక చాట్ సందేశాన్ని పంపిన తర్వాత DevTools Network ట్యాబ్ నుండి ఎగుమతి చేయండి.", + "harImportStatusValid": "దిగుమతి చేయబడింది — సుమారు {minutes}ని. వరకు చెల్లుబాటు అవుతుంది.", + "harImportStatusExpiringSoon": "దిగుమతి చేయబడింది — ఇంకా సుమారు {minutes}ని. మాత్రమే చెల్లుబాటు అవుతుంది.", + "harImportStatusExpired": "దిగుమతి చేయబడింది, కానీ ఈ టోకెన్ ఇప్పటికే {minutes}ని. క్రితం గడువు ముగిసింది — తాజా HARను ఎగుమతి చేయండి.", + "harImportStatusUnknownExpiry": "దిగుమతి చేయబడింది. దాని గడువు ముగింపు సమయాన్ని చదవలేకపోయాం.", + "harImportErrorNotJson": "ఆ ఫైల్ చెల్లుబాటు అయ్యే JSON కాదు — అది నిజంగా .har ఎగుమతేనా?", + "harImportErrorNoEntries": "ఈ HARలో రికార్డ్ చేసిన నెట్వర్క్ ఎంట్రీలు లేవు.", + "harImportErrorNoChathubUrl": "ఈ HARలో Copilot చాట్ కనెక్షన్ కనుగొనబడలేదు. ఎగుమతి చేసే ముందు m365.cloud.microsoftలో కనీసం ఒక చాట్ సందేశాన్ని పంపండి.", + "harImportErrorUnparsableUrl": "చాట్ కనెక్షన్ కనుగొనబడింది, కానీ దాని URLను చదవలేకపోయాం.", + "harImportErrorMissingFields": "చాట్ కనెక్షన్ కనుగొనబడింది, కానీ అందులో టోకెన్ లేదు.", + "harImportErrorReadFailed": "ఆ ఫైల్ను చదవలేకపోయాం.", + "harImportErrorUnknown": "ఆ HAR ఫైల్ నుండి ఆధార వివరాలను వెలికితీయలేకపోయాం.", "webSessionSecurityHint": "దీన్ని పాస్‌వర్డ్ లాగా పరిగణించండి: ఇది గడువు ముగిసే వరకు లేదా ఉపసంహరించబడే వరకు మీ సైన్ ఇన్ చేసిన వెబ్ ఖాతాను యాక్సెస్ చేయవచ్చు.", "webNoAuthGuideTitle": "ఆధారాలు అవసరం లేదు", "webNoAuthGuideBody": "{provider}కి API కీ లేదా కుక్కీ అవసరం లేదు. దాని ఉచిత వెబ్ ఎండ్ పాయింట్‌ని ఉపయోగించడానికి కనెక్షన్‌ని సేవ్ చేయండి.", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "కమాండ్ కోడ్ ఆథ్ కాలం ముగిసింది", "commandCodeConnected": "కమాండ్ కోడ్ కనెక్ట్ అయ్యింది", "commandCodeConnectionAdded": "కమాండ్ కోడ్ కనెక్షన్ జోడించబడింది", + "clearConnectionCooldown": "కూల్డౌన్ను తొలగించండి", + "clearConnectionCooldownInProgress": "తొలగిస్తోంది…", + "clearConnectionCooldownTitle": "కూల్డౌన్ను ఇప్పుడే తొలగించండి — అప్స్ట్రీమ్లో కోటా ఇప్పటికే రిఫ్రెష్ అయినప్పుడు ఉపయోగించండి", "commandCodeLinkExpired": "కమాండ్ కోడ్ లింక్ కాలం ముగిసింది", "commandCodeOpeningStudio": "కమాండ్ కోడ్ స్టూడియోని తెరవడం…", "commandCodePopupBlocked": "పాప్‌అప్‌ అడ్డుకోబడింది. దయచేసి పాప్‌అప్‌లను అనుమతించండి మరియు Command Code Connectని మళ్లీ ప్రయత్నించండి.", "commandCodeStartFailed": "Command Code auth ప్రారంభించడంలో విఫలమైంది", "connectionDeleted": "కనెక్షన్ తొలగించబడింది", "connectionFallback": "కనెక్షన్", + "connectionCooldownCleared": "కూల్డౌన్ తొలగించబడింది — కనెక్షన్ మళ్లీ రూటింగ్లో చేరింది", "coolingConnectionsDescription": "ఈ కనెక్షన్లు చివరి అభ్యర్థన తర్వాత చల్లబడుతున్నాయి. టైమర్ అయిపోయే వరకు OmniRoute వాటిని దాటవేస్తుంది — చేతితో ఆపాల్సిన అవసరం లేదు.", "coolingConnectionsTitle": "ప్రస్తుతం కూలింగ్ ({count})", + "failedClearConnectionCooldown": "కూల్డౌన్ను తొలగించడం విఫలమైంది", "failedDeleteAlias": "అలియాస్‌ను తొలగించడంలో విఫలమైంది", "failedDeleteConnection": "కనెక్షన్ తొలగించడంలో విఫలమైంది", "failedDistributeProxies": "ప్రాక్సీలను పంపిణీ చేయడంలో విఫలమైంది.", @@ -6470,21 +6478,16 @@ "savedModelEndpointSettings": "సేవ్ చేసిన మోడల్ ఎండ్‌పాయింట్ సెట్టింగ్స్", "searchByModelAria": "మోడల్ ద్వారా శోధించండి", "selectSupportedEndpoint": "కమిషన్ చేయబడిన కనెక్ట్ చేయబడిన ఎండ్‌పాయింట్‌లలో కనీసం ఒకటి ఎంచుకోండి", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { - "title": "Settings", - "general": "General", - "security": "Security", - "appearance": "Appearance", - "routing": "Routing", - "cache": "Cache", - "resilience": "Resilience", + "title": "సెట్టింగ్లు", + "general": "సాధారణం", + "security": "భద్రత", + "appearance": "రూపురేఖలు", + "routing": "రూటింగ్", + "cache": "క్యాష్", + "resilience": "స్థితిస్థాపకత", "description": "వివరణ", "enable": "ప్రారంభించు", "disable": "నిలిపివేయి", @@ -6551,25 +6554,25 @@ "routingOpStatusSeparator": " ·", "resilienceSettingsIntro": "ప్రొవైడర్లు విఫలమైనప్పుడు ఆటోమేటిక్ రీట్రీ, కూల్‌డౌన్ మరియు ఫాల్‌బ్యాక్.", "aiSettingsIntro": "ఆలోచన బడ్జెట్, మోడల్ ప్రవర్తన మరియు కుదింపు కోసం AI-నిర్దిష్ట సెట్టింగ్‌లు.", - "systemPrompt": "System Prompt", - "thinkingBudget": "Thinking Budget", + "systemPrompt": "సిస్టమ్ ప్రాంప్ట్", + "thinkingBudget": "ఆలోచనా బడ్జెట్", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP ప్రాక్సీ", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "ప్రాక్సీ విభాగాలు", + "requestBodyLimitTitle": "అభ్యర్థన బాడీ పరిమితి", + "requestBodyLimitDescription": "అభ్యర్థన బాడీని పార్స్ చేయడానికి ముందు ఆమోదించే గరిష్ఠ API పేలోడ్ పరిమాణం. ప్రత్యేక అప్లోడ్ రూట్లు కనీసం వాటి అంతర్నిర్మిత 100 MB పరిమితిని కొనసాగిస్తాయి.", + "requestBodyLimitInputLabel": "MBలో అభ్యర్థన బాడీ పరిమితి", + "requestBodyLimitEmptyError": "MBలో పరిమితిని నమోదు చేయండి", + "requestBodyLimitWholeNumberError": "పూర్ణ సంఖ్యను ఉపయోగించండి", + "requestBodyLimitMinimumError": "కనిష్ఠం {min} MB", + "requestBodyLimitMaximumError": "గరిష్ఠం {max} MB", + "requestBodyLimitLoadFailed": "అభ్యర్థన పరిమితి సెట్టింగ్లను లోడ్ చేయడం విఫలమైంది", + "requestBodyLimitSaveSuccess": "అభ్యర్థన బాడీ పరిమితి సేవ్ చేయబడింది", + "requestBodyLimitSaveFailed": "అభ్యర్థన బాడీ పరిమితిని సేవ్ చేయడం విఫలమైంది", + "requestBodyLimitSaving": "సేవ్ చేస్తోంది...", + "requestBodyLimitSave": "సేవ్ చేయండి", + "requestBodyLimitCurrent": "ప్రస్తుతం: {value}", "cacheConfigLoadFailed": "కాష్ సెట్టింగ్స్ లోడ్ చేయడంలో విఫలమైంది", "cacheConfigSaveSuccess": "కాష్ సెట్టింగ్స్ సేవ్ చేయబడ్డాయి", "cacheConfigSaveFailed": "కాష్ సెట్టింగ్స్ సేవ్ చేయడంలో విఫలమైంది", @@ -6583,69 +6586,69 @@ "modelCatalogCacheTtlSave": "సేవ్", "modelCatalogCacheTtlCurrent": "ప్రస్తుత: {value} మి.సె.", "mitmProxy": "MITM ప్రాక్సీ", - "pricing": "Pricing", - "storage": "Storage", - "policies": "Policies", - "ipFilter": "IP Filter", - "comboDefaults": "Combo Defaults", - "fallbackChains": "Fallback Chains", - "changePassword": "Change Password", - "enablePassword": "Enable Password", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "pricing": "ధర నిర్ణయం", + "storage": "నిల్వ", + "policies": "విధానాలు", + "ipFilter": "IP ఫిల్టర్", + "comboDefaults": "కాంబో డిఫాల్ట్లు", + "fallbackChains": "ఫాల్బ్యాక్ చైన్లు", + "changePassword": "పాస్వర్డ్ను మార్చండి", + "enablePassword": "పాస్వర్డ్ను ప్రారంభించండి", + "darkMode": "డార్క్ మోడ్", + "lightMode": "లైట్ మోడ్", + "memoryTitle": "మెమరీ", + "memoryDesc": "సెషన్ల మధ్య కొనసాగే సంభాషణాత్మక మెమరీ", + "memoryEnabled": "మెమరీని ప్రారంభించండి", + "memoryEnabledDesc": "ప్రారంభించినప్పుడు, OmniRoute సంబంధిత గత సందర్భాన్ని చేర్చుతుంది.", "memoryTokenCostWarning": "గమనిక: మెమరీ ఎనేబుల్ చేయబడితే, OmniRoute ప్రతి చాట్ అభ్యర్థనలోకి తిరిగి పొందిన సందర్భం యొక్క {tokens} టోకెన్‌ల వరకు ఇంజెక్ట్ చేస్తుంది — ఇది టోకెన్ వినియోగాన్ని మరియు ఖర్చును పెంచుతుంది. నిర్దిష్ట అభ్యర్థన కోసం ఇంజెక్షన్‌ను దాటవేయడానికి, \"x-omniroute-no-memory: true\" హెడర్‌ను పంపండి.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", - "justNow": "Just now", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", - "providers": "Providers", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", - "systemTheme": "System Theme", - "debugToggle": "Enable Debug Mode", + "maxTokens": "గరిష్ఠ టోకెన్లు", + "retentionDays": "నిలుపుదల", + "recent": "ఇటీవలి", + "recentDesc": "కాలక్రమ విండో", + "semantic": "సెమాంటిక్", + "semanticDesc": "వెక్టర్ శోధన", + "hybrid": "హైబ్రిడ్", + "hybridDesc": "ఇటీవలి + అర్థసంబంధిత", + "skillsTitle": "నైపుణ్యాలు", + "skillsDesc": "మోడల్ల కోసం సాధనాలు", + "skillsEnabled": "నైపుణ్యాలను ప్రారంభించండి", + "skillsEnabledDesc": "ఏజెంట్లు ఫంక్షన్లను అమలు చేయడానికి అనుమతిస్తుంది.", + "skillsComingSoon": "నైపుణ్యాల మార్కెట్ప్లేస్ త్వరలో అందుబాటులోకి వస్తుంది.", + "memorySkillsTitle": "మెమరీ & నైపుణ్యాలు", + "memorySkillsDesc": "నిరంతర సందర్భం & సామర్థ్యాలు", + "modelsDevTitle": "మోడల్ డేటాబేస్", + "modelsDevDesc": "models.dev నుండి ధరలు, సామర్థ్యాలు & స్పెసిఫికేషన్లను స్వయంచాలకంగా సమకాలీకరించండి", + "modelsDevEnabled": "models.dev సమకాలీకరణను ప్రారంభించండి", + "modelsDevEnabledDesc": "ఓపెన్-సోర్స్ models.dev డేటాబేస్ నుండి మోడల్ ధరలు, సామర్థ్యాలు మరియు స్పెసిఫికేషన్లను పొందండి", + "modelsDevInterval": "సమకాలీకరణ విరామం", + "syncNow": "ఇప్పుడే సమకాలీకరించండి", + "syncing": "సమకాలీకరిస్తోంది...", + "lastSync": "చివరి సమకాలీకరణ", + "never": "ఎప్పుడూ లేదు", + "justNow": "ఇప్పుడే", + "modelsDevStats": "సమకాలీకరణ గణాంకాలు", + "modelsDevStatsDesc": "ప్రస్తుత models.dev డేటా కవరేజ్", + "providers": "ప్రొవైడర్లు", + "modelsWithPricing": "ధరలు కలిగిన మోడల్లు", + "capabilities": "సామర్థ్యాలు", + "lastSyncCount": "చివరి సమకాలీకరణ సంఖ్య", + "lastSyncFull": "చివరి పూర్తి సమకాలీకరణ", + "modelsDevInfo": "ఇది ఎలా పనిచేస్తుంది", + "modelsDevInfoDesc": "models.dev అనేది SST/OpenCode బృందం నిర్వహించే AI మోడల్ స్పెసిఫికేషన్ల ఓపెన్-సోర్స్ డేటాబేస్. ఇది 100+ ప్రొవైడర్లలోని 4,000+ మోడల్లకు ధరలు, సామర్థ్యాలు, సందర్భ పరిమితులు మరియు మోడాలిటీలను అందిస్తుంది.", + "modelsDevInfoResolution": "ధర నిర్ణయ ప్రాధాన్యత క్రమం (అత్యధిక ప్రాధాన్యత మొదట):", + "modelsDevInfoOrder": "వినియోగదారు ఓవర్రైడ్ → models.dev → LiteLLM → హార్డ్కోడ్ చేసిన డిఫాల్ట్", + "systemTheme": "సిస్టమ్ థీమ్", + "debugToggle": "డీబగ్ మోడ్ను ప్రారంభించండి", "logToolSourcesToggle": "టూల్ మూలాలను లాగ్ చేయండి", "logToolSourcesDescription": "టూల్ కౌంట్ మరియు MCP/హోస్ట్ చేయబడిన/క్లయింట్ మూలాల విభజనను సంగ్రహిస్తూ ప్రతి అభ్యర్థనకు ఒక విశ్లేషణ లాగ్ లైన్‌ను జారీ చేయండి.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "సమాచారాన్ని హోమ్ పేజీకి పిన్ చేయండి", "homePinnedSectionsDesc": "హోమ్ పేజీ ఎగువన ఏ విభాగాలను పిన్ చేయాలో ఎంచుకోండి.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "ప్రొవైడర్ కోటా పరిమితులు", + "homeProviderQuotaLimitsDesc": "ప్రొవైడర్ కోటా స్థితి కంటైనర్ను (అన్నింటినీ రిఫ్రెష్ చేయి బటన్తో) హోమ్ పేజీ ఎగువన పిన్ చేయండి.", + "homeQuickStart": "త్వరిత ప్రారంభం", + "homeQuickStartDesc": "హోమ్ పేజీలో త్వరిత ప్రారంభ ప్యానెల్ను చూపండి.", + "homeProviderTopology": "ప్రొవైడర్ టోపాలజీ", + "homeProviderTopologyDesc": "హోమ్ పేజీలో ప్రొవైడర్ టోపాలజీని చూపండి.", "accountEmailVisibility": "ఖాతా ఇమెయిల్ దృశ్యమానత", "accountEmailVisibilityDesc": "ప్రొవైడర్లు, కాంబోలు, లాగ్‌లు, కోటా మరియు ప్లేగ్రౌండ్ స్క్రీన్‌లలో పూర్తి ఖాతా ఇమెయిల్‌లను చూపించండి. డిఫాల్ట్‌గా వాటిని దాచడానికి దీనిని ఆఫ్ చేయండి.", "comboConfigMode": "కాంబో కాన్ఫిగరేషన్ మోడ్", @@ -6661,89 +6664,89 @@ "providerQuotaAutoRefreshInterval": "రిఫ్రెష్ విరామం", "providerQuotaAutoRefreshIntervalDesc": "కోటా వీక్షణ ఎంత తరచుగా రిఫ్రెష్ కావాలి, సెకన్లలో.", "seconds": "సెకన్లు", - "sidebarVisibilityToggle": "Show Sidebar Items", - "enableCache": "Enable Cache", - "cacheTTL": "Cache TTL", - "maxCacheSize": "Max Cache Size", - "clearCache": "Clear Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", - "cacheHits": "Cache Hits", - "cacheMisses": "Cache Misses", - "hitRate": "Hit Rate", - "cacheEntries": "Cache Entries", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "sidebarVisibilityToggle": "సైడ్బార్ అంశాలను చూపండి", + "enableCache": "క్యాష్ను ప్రారంభించండి", + "cacheTTL": "క్యాష్ TTL", + "maxCacheSize": "గరిష్ఠ క్యాష్ పరిమాణం", + "clearCache": "క్యాష్ను క్లియర్ చేయండి", + "cacheCleared": "క్యాష్ విజయవంతంగా క్లియర్ చేయబడింది", + "clearCacheFailed": "క్యాష్ను క్లియర్ చేయడం విఫలమైంది", + "cacheHits": "క్యాష్ హిట్లు", + "cacheMisses": "క్యాష్ మిస్లు", + "hitRate": "హిట్ రేటు", + "cacheEntries": "క్యాష్ ఎంట్రీలు", + "cacheSettings": "క్యాష్ సెట్టింగ్లు", + "semanticCache": "సెమాంటిక్ క్యాష్", + "maxEntries": "గరిష్ఠ ఎంట్రీలు", + "ttlMinutes": "TTL (నిమిషాలు)", + "promptCache": "ప్రాంప్ట్ క్యాష్", + "strategy": "వ్యూహం", + "preserveClientCache": "క్లయింట్ క్యాష్ను అలాగే ఉంచండి", + "enabled": "ప్రారంభించబడింది", "loading": "Loading...", - "saving": "Saving...", - "save": "Save", - "circuitBreaker": "Circuit Breaker", - "retryPolicy": "Retry Policy", - "maxRetries": "Max Retries", - "retryDelay": "Retry Delay", - "timeoutMs": "Timeout (ms)", - "enableSystemPrompt": "Enable System Prompt", - "systemPromptText": "System Prompt Text", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "saving": "సేవ్ చేస్తోంది...", + "save": "సేవ్ చేయండి", + "circuitBreaker": "సర్క్యూట్ బ్రేకర్", + "retryPolicy": "మళ్లీ ప్రయత్నించే విధానం", + "maxRetries": "గరిష్ఠ పునఃప్రయత్నాలు", + "retryDelay": "పునఃప్రయత్న ఆలస్యం", + "timeoutMs": "సమయ పరిమితి (ms)", + "enableSystemPrompt": "సిస్టమ్ ప్రాంప్ట్ను ప్రారంభించండి", + "systemPromptText": "సిస్టమ్ ప్రాంప్ట్ టెక్స్ట్", + "autoDisableBannedAccounts": "నిషేధించబడిన ఖాతాలను స్వయంచాలకంగా నిలిపివేయండి", + "autoDisableDescription": "నిర్దిష్ట తుది నిషేధ సంకేతాలను (ఉదా. HTTP 403 'verify your account') అందించినప్పుడు ప్రొవైడర్ కనెక్షన్లను శాశ్వతంగా నిష్క్రియంగా గుర్తించండి. దీనివల్ల అవి కాంబో రొటేషన్ నుండి తొలగించబడతాయి.", + "autoDisableThreshold": "నిషేధ పరిమితి", + "autoDisableThresholdDesc": "శాశ్వత నిష్క్రియీకరణకు ముందు అవసరమైన వరుస నిషేధ సంకేతాల సంఖ్య.", + "autoDisableBannedScope": "స్వయంచాలక నిలిపివేతను వీటికి వర్తింపజేయండి", + "autoDisableBannedScopeDesc": "నిషేధం తర్వాత OmniRoute మళ్లీ ప్రయత్నిస్తూనే ఉంటే, లాగిన్ సీట్లను (చెల్లింపు సబ్స్క్రిప్షన్లు మరియు ఉచిత ఖాతాలు) అప్స్ట్రీమ్ లాక్ చేయవచ్చు. చెల్లింపు ప్రీపెయిడ్ API కీలకు ఆ ప్రమాదం లేదు — తదుపరి కీని fill-first ఉపయోగించగలిగేలా వాటిని పూల్లో ఉంచండి.", + "autoDisableBannedScopeAll": "అన్ని కనెక్షన్లు", + "autoDisableBannedScopeAllDesc": "ప్రీపెయిడ్ API కీలతో సహా శాశ్వత నిషేధ సంకేతాన్ని అందించే ప్రతి కనెక్షన్ను నిష్క్రియం చేయండి.", + "autoDisableBannedScopeSubscription": "లాగిన్ / సబ్స్క్రిప్షన్ ఖాతాలు మాత్రమే", + "autoDisableBannedScopeSubscriptionDesc": "OAuth, కుకీ, సెషన్ మరియు వెబ్-లాగిన్ సీట్లను (చెల్లింపు లేదా ఉచితం) నిష్క్రియం చేయండి. రూటింగ్ ప్రత్యామ్నాయానికి మారగలిగేలా ప్రీపెయిడ్ API కీలు సక్రియంగానే ఉంటాయి.", "customBannedSignals": "నిషేధించబడిన కీలకపదాలు", "customBannedSignalsDesc": "శాశ్వత ఖాతా నిషేధ గుర్తింపును ప్రేరేపించే అదనపు కీలకపదాలు. అంతర్నిర్మిత కీలకపదాలు ఎల్లప్పుడూ వర్తిస్తాయి.", "customBannedSignalsPlaceholder": "ఉదా. api key revoked", "noCustomBannedSignals": "అనుకూల కీలకపదాలు లేవు. అంతర్నిర్మిత కీలకపదాలు మాత్రమే సక్రియంగా ఉన్నాయి.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "స్థితిస్థాపకత నిర్మాణం", "resilienceStructureDesc": "ఈ పేజీ ప్రవర్తనను మాత్రమే కాన్ఫిగర్ చేస్తుంది. లైవ్ బ్రేకర్ స్థితి ఆరోగ్యం పేజీలో చూపబడింది. కాంబో-నిర్దిష్ట పునఃప్రయత్నం మరియు రౌండ్-రాబిన్ స్లాట్ నియంత్రణ కాంబో సెట్టింగ్‌లలో ఉంటాయి.", - "enableThinking": "Enable Thinking", - "maxThinkingTokens": "Max Thinking Tokens", - "enableProxy": "Enable Proxy", + "enableThinking": "థింకింగ్ను ప్రారంభించండి", + "maxThinkingTokens": "గరిష్ఠ థింకింగ్ టోకెన్లు", + "enableProxy": "ప్రాక్సీని ప్రారంభించండి", "perKeyProxyEnabled": "కీ-వారీగా ప్రాక్సీ కేటాయింపును ఎనేబుల్ చేయండి", "perKeyProxyEnabledDesc": "ఎనేబుల్ చేసినప్పుడు, ప్రతి ప్రొవైడర్ కనెక్షన్ దాని స్వంత ప్రాక్సీ కేటాయింపును ఉపయోగించవచ్చు", - "proxyUrl": "Proxy URL", - "pricingRates": "Pricing Rates Format", - "currentPricing": "Current Pricing Overview", - "loadingPricing": "Loading pricing data...", - "noPricing": "No pricing data available", - "input": "Input", - "output": "Output", - "cached": "Cached", + "proxyUrl": "ప్రాక్సీ URL", + "pricingRates": "ధరల రేట్ల ఫార్మాట్", + "currentPricing": "ప్రస్తుత ధరల అవలోకనం", + "loadingPricing": "ధరల డేటా లోడ్ అవుతోంది...", + "noPricing": "ధరల డేటా అందుబాటులో లేదు", + "input": "ఇన్పుట్", + "output": "అవుట్పుట్", + "cached": "క్యాష్ చేయబడినవి", "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "customPricing": "Custom Pricing", - "databaseSize": "Database Size", - "backupDb": "Backup Database", - "restoreDb": "Restore Database", - "exportData": "Export Data", - "importData": "Import Data", - "clearData": "Clear All Data", - "clearDataConfirm": "This will permanently delete all data. Are you sure?", - "enableRequestLogs": "Enable Request Logs", - "logRetention": "Log Retention", - "ipWhitelist": "IP Whitelist", - "ipBlacklist": "IP Blacklist", - "addIP": "Add IP", - "savedSuccessfully": "Settings saved successfully", + "cacheCreation": "క్యాష్ సృష్టి", + "customPricing": "అనుకూల ధరలు", + "databaseSize": "డేటాబేస్ పరిమాణం", + "backupDb": "డేటాబేస్ను బ్యాకప్ చేయండి", + "restoreDb": "డేటాబేస్ను పునరుద్ధరించండి", + "exportData": "డేటాను ఎగుమతి చేయండి", + "importData": "డేటాను దిగుమతి చేయండి", + "clearData": "మొత్తం డేటాను తొలగించండి", + "clearDataConfirm": "ఇది మొత్తం డేటాను శాశ్వతంగా తొలగిస్తుంది. మీరు ఖచ్చితంగా కొనసాగాలనుకుంటున్నారా?", + "enableRequestLogs": "అభ్యర్థన లాగ్లను ప్రారంభించండి", + "logRetention": "లాగ్ నిల్వ వ్యవధి", + "ipWhitelist": "IP అనుమతి జాబితా", + "ipBlacklist": "IP నిరోధ జాబితా", + "addIP": "IPని జోడించండి", + "savedSuccessfully": "సెట్టింగ్లు విజయవంతంగా సేవ్ చేయబడ్డాయి", "ai": "AI", - "advanced": "Advanced", - "localMode": "Local Mode — All data stored on your machine", - "settingsSectionsAria": "Settings sections", - "switchThemes": "Switch between light and dark themes", - "themeSelectionAria": "Theme selection", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", + "advanced": "అధునాతన", + "localMode": "స్థానిక మోడ్ — మొత్తం డేటా మీ మెషీన్లో నిల్వ చేయబడుతుంది", + "settingsSectionsAria": "సెట్టింగ్ల విభాగాలు", + "switchThemes": "లైట్ మరియు డార్క్ థీమ్ల మధ్య మారండి", + "themeSelectionAria": "థీమ్ ఎంపిక", + "themeLight": "లైట్", + "themeDark": "డార్క్", + "themeSystem": "సిస్టమ్", "endpointTunnelVisibility": "ఎండ్‌పాయింట్ టన్నెల్ దృశ్యమానత", "endpointTunnelVisibilityDesc": "టన్నెల్ స్థితిని మార్చకుండా ఎండ్‌పాయింట్ పేజీ నుండి సొరంగం నియంత్రణలను దాచండి.", "showCloudflareTunnel": "క్లౌడ్‌ఫ్లేర్ క్విక్ టన్నెల్", @@ -6752,47 +6755,47 @@ "showTailscaleFunnelDesc": "ఎండ్‌పాయింట్ పేజీలో టెయిల్‌స్కేల్ ఫన్నెల్ నియంత్రణలను చూపండి.", "showNgrokTunnel": "ngrok సొరంగం", "showNgrokTunnelDesc": "ఎండ్‌పాయింట్ పేజీలో ngrok టన్నెల్ నియంత్రణలను చూపండి.", - "sidebarVisibility": "Hide sidebar items", - "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter without disabling any features", - "sidebarVisibilityHint": "Any sidebar section is hidden automatically when all of its entries are hidden", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", - "hideHealthLogs": "Hide Health Check Logs", - "hideHealthLogsDesc": "When ON, suppress [HealthCheck] messages in server console", - "themeAccent": "Theme color", - "themeAccentDesc": "Choose a preset color or create your own theme with one color", - "themeCreate": "Create theme", - "themeCustom": "Custom theme", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "sidebarVisibility": "సైడ్బార్ అంశాలను దాచండి", + "sidebarVisibilityDesc": "ఏ ఫీచర్నూ నిలిపివేయకుండా దృశ్యపరమైన రద్దీని తగ్గించడానికి ఏదైనా సైడ్బార్ నావిగేషన్ అంశాన్ని దాచండి", + "sidebarVisibilityHint": "ఒక సైడ్బార్ విభాగంలోని అన్ని అంశాలు దాచబడినప్పుడు, ఆ విభాగం స్వయంచాలకంగా దాచబడుతుంది", + "presetAll": "అన్నీ", + "presetAllDesc": "అన్నింటినీ చూపించండి", + "presetEssentials": "అత్యవసరమైనవి", + "presetEssentialsDesc": "ప్రారంభకుల మార్గం - అధునాతన సాధనాలను శోధించవచ్చు", + "presetMinimal": "కనిష్ఠ", + "presetMinimalDesc": "ప్రధాన పేజీలు మాత్రమే", + "presetDeveloper": "డెవలపర్", + "presetDeveloperDesc": "డెవలప్మెంట్ & ప్రాక్సీ సాధనాలు", + "presetAdmin": "అడ్మిన్", + "presetAdminDesc": "పర్యవేక్షణ & ఆడిట్", + "settingsSidebarTitle": "సైడ్బార్ అనుకూలీకరణ", + "settingsSidebarDesc": "ఏ సైడ్బార్ అంశాలను చూపించాలో ఎంచుకోండి. Essentialsలో అధునాతన సాధనాలను శోధించవచ్చు.", + "hideHealthLogs": "హెల్త్ చెక్ లాగ్లను దాచు", + "hideHealthLogsDesc": "ONలో ఉన్నప్పుడు, సర్వర్ కన్సోల్లోని [HealthCheck] సందేశాలను అణచివేస్తుంది", + "themeAccent": "థీమ్ రంగు", + "themeAccentDesc": "ముందే అమర్చిన రంగును ఎంచుకోండి లేదా ఒక రంగుతో మీ స్వంత థీమ్ను సృష్టించండి", + "themeCreate": "థీమ్ను సృష్టించు", + "themeCustom": "అనుకూల థీమ్", + "themeBlue": "నీలం", + "themeRed": "ఎరుపు", + "themeGreen": "ఆకుపచ్చ", + "themeViolet": "ఊదా", + "themeOrange": "నారింజ", + "themeCyan": "సయాన్", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "అప్లికేషన్ పేరు మరియు లోగోను అనుకూలీకరించండి", + "appName": "అప్లికేషన్ పేరు", + "appNameDesc": "సైడ్బార్ మరియు బ్రౌజర్ ట్యాబ్లో చూపబడే పేరు", + "customLogo": "అనుకూల లోగో URL", + "customLogoDesc": "మీ అనుకూల లోగో చిత్రానికి URL", + "uploadLogo": "లోగోను అప్లోడ్ చేయండి", + "resetLogo": "డిఫాల్ట్కు రీసెట్ చేయండి", + "logoPreview": "మునుజూపు", + "customFavicon": "బ్రౌజర్ ఫేవికాన్", + "customFaviconDesc": "మీ అనుకూల ఫేవికాన్కు URL (బ్రౌజర్ ట్యాబ్లో చూపబడుతుంది)", + "uploadFavicon": "ఫేవికాన్ను అప్లోడ్ చేయండి", + "resetFavicon": "ఫేవికాన్ను రీసెట్ చేయండి", + "faviconPreview": "ఫేవికాన్ మునుజూపు", "logoFileTooLarge": "లోగో ఫైల్ 500KB కంటే తక్కువ ఉండాలి", "faviconFileTooLarge": "ఫావికాన్ ఫైల్ 50KB కంటే తక్కువ ఉండాలి", "invalidLogoFileType": "చెల్లని ఫైల్ రకం. దయచేసి PNG, JPG, SVG, GIF లేదా WebPని అప్‌లోడ్ చేయండి.", @@ -6800,15 +6803,15 @@ "failedToReadFile": "ఫైల్‌ను చదవడం విఫలమైంది", "startOnLogin": "లాగిన్ అయినప్పుడు ప్రారంభించండి", "startOnLoginDesc": "సిస్టమ్ స్టార్టప్‌లో OmniRouteని స్వయంచాలకంగా ప్రారంభించండి మరియు బ్యాక్‌గ్రౌండ్ ట్రేలో నిశ్శబ్దంగా రన్ చేయండి.", - "flushCache": "Flush Cache", - "flushing": "Flushing…", - "size": "Size", - "hits": "Hits", - "evictions": "Evictions", - "loadingCacheStats": "Loading cache stats…", - "globalProxy": "Global Proxy", - "globalProxyDesc": "Configure a global outbound proxy for all API calls. Individual providers, combos, and keys can override this.", - "noGlobalProxy": "No global proxy configured", + "flushCache": "క్యాష్ను ఖాళీ చేయండి", + "flushing": "ఖాళీ చేస్తోంది…", + "size": "పరిమాణం", + "hits": "హిట్లు", + "evictions": "తొలగింపులు", + "loadingCacheStats": "క్యాష్ గణాంకాలు లోడ్ అవుతున్నాయి…", + "globalProxy": "గ్లోబల్ ప్రాక్సీ", + "globalProxyDesc": "అన్ని API కాల్ల కోసం గ్లోబల్ అవుట్బౌండ్ ప్రాక్సీని కాన్ఫిగర్ చేయండి. వ్యక్తిగత ప్రొవైడర్లు, కాంబోలు మరియు కీలు దీనిని ఓవర్రైడ్ చేయగలవు.", + "noGlobalProxy": "గ్లోబల్ ప్రాక్సీ కాన్ఫిగర్ చేయబడలేదు", "proxyPool": "ప్రాక్సీ పూల్", "freePool": "ఉచిత పూల్", "proxyDocumentation": "ప్రాక్సీ డాక్యుమెంటేషన్", @@ -6896,21 +6899,21 @@ "refreshInterval": "రీఫ్రెష్ ఇంటర్వల్", "ruleModeDescription": "నియమ మోడ్ వివరణ" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "బల్క్ హెల్త్చెక్", + "bulkHealthcheckDesc": "పని చేసే ప్రాక్సీలను గుర్తించడానికి కాన్ఫిగర్ చేసిన అన్ని ప్రాక్సీలను లక్ష్య URLతో పరీక్షించండి.", + "healthcheckTesting": "పరీక్షిస్తోంది...", + "healthcheckAll": "అన్నింటి హెల్త్చెక్", + "healthcheckFailed": "హెల్త్చెక్ను అమలు చేయడం విఫలమైంది", + "healthcheckTestingAll": "అన్ని ప్రాక్సీలను సమాంతరంగా పరీక్షిస్తోంది...", + "healthcheckTotal": "మొత్తం", + "healthcheckWorking": "పనిచేస్తున్నవి", + "healthcheckFailedLabel": "విఫలమైనవి", + "healthcheckStatus": "స్థితి", + "healthcheckProxyUrl": "ప్రాక్సీ URL", + "healthcheckLatency": "లేటెన్సీ", "proxyDocumentationScopeTitle": "ప్రాక్సీ స్కోప్ రిజల్యూషన్", "proxyDocumentationScopeDescBefore": "OmniRoute అవుట్‌బౌండ్ ప్రాక్సీని ప్రాధాన్యతా క్రమంలో పరిష్కరిస్తుంది:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "కాంబో → ఖాతా → ప్రొవైడర్ → గ్లోబల్", "proxyDocumentationScopeDescAfter": ". అత్యంత నిర్దిష్టమైన స్కోప్ గెలుస్తుంది.", "proxyDocumentationAddTitle": "అనుకూల ప్రాక్సీని జోడించడం", "proxyDocumentationAddDescBefore": "దీనికి వెళ్ళండి", @@ -6966,22 +6969,22 @@ "proxyFreePoolLoadMore": "మరిన్ని లోడ్ చేయండి", "close": "మూసివేయి", "cancel": "రద్దు చేయి", - "globalLabel": "Global", - "configure": "Configure", - "globalSystemPrompt": "Global System Prompt", - "saved": "Saved", + "globalLabel": "గ్లోబల్", + "configure": "కాన్ఫిగర్ చేయండి", + "globalSystemPrompt": "గ్లోబల్ సిస్టమ్ ప్రాంప్ట్", + "saved": "సేవ్ చేయబడింది", "beforePromptLabel": "ప్రాంప్ట్‌కు ముందు", "beforePromptDesc": "ఏజెంట్/ప్రొవైడర్ సిస్టమ్ సూచనలకు ముందు చొప్పించబడింది", "beforePromptPlaceholder": "ఏజెంట్/ప్రొవైడర్ ప్రాంప్ట్‌కు ముందు సూచనలు చొప్పించబడ్డాయి...", "afterPromptLabel": "ప్రాంప్ట్ తర్వాత", "afterPromptDesc": "ఏజెంట్/ప్రొవైడర్ సిస్టమ్ సూచనల తర్వాత చొప్పించబడింది", "afterPromptPlaceholder": "ఏజెంట్/ప్రొవైడర్ ప్రాంప్ట్ తర్వాత సూచనలు చొప్పించబడ్డాయి...", - "chars": "{count} chars", - "thinkingBudgetTitle": "Thinking Budget", + "chars": "{count} అక్షరాలు", + "thinkingBudgetTitle": "థింకింగ్ బడ్జెట్", "thinkingBudgetDesc": "Control AI reasoning token usage across all requests", "thinkingBudgetIndependenceHint": "సంకోచన, మార్గనిర్దేశం, మరియు టోకెన్-సరిహద్దు లక్షణాలు ప్రతి మోడ్‌లో పనిచేస్తున్నాయి. ఆటో అంటే \"ఆటో-చెప్పే ఆలోచన\" కాదు — ఇది క్లయింట్ తర్కం ఫీల్డ్స్‌ను తొలగిస్తుంది.", - "passthrough": "Passthrough", - "passthroughDesc": "No changes — client controls thinking budget", + "passthrough": "పాస్త్రూ", + "passthroughDesc": "మార్పులు లేవు — థింకింగ్ బడ్జెట్ను క్లయింట్ నియంత్రిస్తుంది", "thinkingModePassthrough": "పాస్‌త్రూ", "thinkingModePassthroughDesc": "క్లయింట్ కారణాలను మార్చకండి (ప్రయత్నం, సారాంశం, ఆలోచన బ్లాక్లు). కోడెక్స్/డెస్క్‌టాప్ దృశ్య ఆలోచనకు అవసరం. డిఫాల్ట్.", "thinkingModeAuto": "ఆటో (స్ట్రిప్)", @@ -6991,36 +6994,36 @@ "thinkingModeAdaptive": "అనుకూలమైన", "thinkingModeAdaptiveDesc": "సందేశాల సంఖ్య, సాధనాలు, మరియు ప్రాంప్ట్ పొడవు ఉపయోగించి ప్రాథమిక శ్రమ నుండి ఆలోచన బడ్జెట్‌ను స్కేల్ చేయండి.", "auto": "Auto Combo", - "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "custom": "Custom", - "customDesc": "Set a fixed token budget for all requests", - "adaptive": "Adaptive", - "adaptiveDesc": "Scale budget based on request complexity", - "effortNone": "None (0 tokens)", - "effortLow": "Low (1K tokens)", - "effortMedium": "Medium (10K tokens)", - "effortHigh": "High (128K tokens)", - "tokenBudget": "Token Budget", - "tokens": "tokens", - "baseEffortLevel": "Base Effort Level", + "autoDesc": "స్వీయ-పునరుద్ధరణ స్మార్ట్ రూటింగ్ పూల్ (పనితీరు కోసం ఆప్టిమైజ్ చేయబడింది)", + "custom": "అనుకూలం", + "customDesc": "అన్ని అభ్యర్థనలకు స్థిరమైన టోకెన్ బడ్జెట్ను సెట్ చేయండి", + "adaptive": "అనుకూలనీయమైనది", + "adaptiveDesc": "అభ్యర్థన సంక్లిష్టత ఆధారంగా బడ్జెట్ను సర్దుబాటు చేయండి", + "effortNone": "ఏదీ లేదు (0 టోకెన్లు)", + "effortLow": "తక్కువ (1K టోకెన్లు)", + "effortMedium": "మధ్యస్థం (10K టోకెన్లు)", + "effortHigh": "అధికం (128K టోకెన్లు)", + "tokenBudget": "టోకెన్ బడ్జెట్", + "tokens": "టోకెన్లు", + "baseEffortLevel": "ప్రాథమిక ప్రయత్న స్థాయి", "adaptiveHint": "Adaptive mode scales from this base level based on message count, tool usage, and prompt length.", - "requireLogin": "Require login", - "requireLoginDesc": "When ON, dashboard requires password. When OFF, access without login.", - "currentPassword": "Current Password", - "enterCurrentPassword": "Enter current password", - "newPassword": "New Password", - "enterNewPassword": "Enter new password", - "confirmPassword": "Confirm New Password", - "confirmPasswordPlaceholder": "Confirm new password", - "passwordsNoMatch": "Passwords do not match", - "passwordUpdated": "Password updated successfully", - "failedUpdatePassword": "Failed to update password", - "errorOccurred": "An error occurred", - "updatePassword": "Update Password", - "setPassword": "Set Password", - "apiEndpointProtection": "API Endpoint Protection", - "requireAuthModels": "Require API key for /models", - "requireAuthModelsDesc": "When ON, the /v1/models endpoint returns 404 for unauthenticated requests. Prevents model discovery by unauthorized users.", + "requireLogin": "లాగిన్ అవసరం", + "requireLoginDesc": "ONలో ఉన్నప్పుడు, డాష్బోర్డ్కు పాస్వర్డ్ అవసరం. OFFలో ఉన్నప్పుడు, లాగిన్ లేకుండా యాక్సెస్ చేయవచ్చు.", + "currentPassword": "ప్రస్తుత పాస్వర్డ్", + "enterCurrentPassword": "ప్రస్తుత పాస్వర్డ్ను నమోదు చేయండి", + "newPassword": "కొత్త పాస్వర్డ్", + "enterNewPassword": "కొత్త పాస్వర్డ్ను నమోదు చేయండి", + "confirmPassword": "కొత్త పాస్వర్డ్ను నిర్ధారించండి", + "confirmPasswordPlaceholder": "కొత్త పాస్వర్డ్ను నిర్ధారించండి", + "passwordsNoMatch": "పాస్వర్డ్లు సరిపోలడం లేదు", + "passwordUpdated": "పాస్వర్డ్ విజయవంతంగా నవీకరించబడింది", + "failedUpdatePassword": "పాస్వర్డ్ను నవీకరించడం విఫలమైంది", + "errorOccurred": "ఒక లోపం సంభవించింది", + "updatePassword": "పాస్వర్డ్ను నవీకరించండి", + "setPassword": "పాస్వర్డ్ను సెట్ చేయండి", + "apiEndpointProtection": "API ఎండ్పాయింట్ రక్షణ", + "requireAuthModels": "/models కోసం API కీని తప్పనిసరి చేయండి", + "requireAuthModelsDesc": "ఇది ఆన్లో ఉన్నప్పుడు, ప్రమాణీకరించని అభ్యర్థనలకు /v1/models ఎండ్పాయింట్ 404ను అందిస్తుంది. ఇది అనధికార వినియోగదారులు మోడళ్లను కనుగొనకుండా నిరోధిస్తుంది.", "authModelHeading": "క్రియాశీల అధికార నమూనా", "authModelClient": "క్లయింట్ API ముగింపు పాయింట్‌లకు (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) బేరర్ API కీ అవసరం.", "authModelManagement": "నిర్వహణ ముగింపు పాయింట్లకు (/డ్యాష్‌బోర్డ్, /api/*) డాష్‌బోర్డ్ సెషన్ లేదా మేనేజ్‌మెంట్ క్రెడెన్షియల్ అవసరం.", @@ -7029,16 +7032,16 @@ "bruteForceProtectionDesc": "అదే IP నుండి పదేపదే వైఫల్యాల తర్వాత /api/auth/login థ్రోటిల్ మరియు లాక్ చేయండి.", "corsAllowedOrigins": "CORS అనుమతించిన మూలాలు", "corsAllowedOriginsDesc": "ఈ సర్వర్‌కు కాల్ చేయడానికి అనుమతించబడిన కామాతో వేరు చేయబడిన బ్రౌజర్ మూలాల జాబితా. ఖాళీ జాబితా = బ్రౌజర్ CORS యాక్సెస్ లేదు (సర్వర్-టు-సర్వర్ ఇప్పటికీ పనిచేస్తుంది). అభివృద్ధి కోసం మాత్రమే CORS_ALLOW_ALL=true env varని ఉపయోగించండి.", - "blockedProviders": "Blocked Providers", - "blockedProvidersDesc": "Hide specific providers from the /v1/models response. Blocked providers will not appear in model listings.", - "providersBlocked": "{count} provider(s) blocked from /models", - "blockProviderTitle": "Block {provider}", - "unblockProviderTitle": "Unblock {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "blockedProviders": "బ్లాక్ చేసిన ప్రొవైడర్లు", + "blockedProvidersDesc": "/v1/models ప్రతిస్పందన నుండి నిర్దిష్ట ప్రొవైడర్లను దాచండి. బ్లాక్ చేసిన ప్రొవైడర్లు మోడల్ జాబితాల్లో కనిపించరు.", + "providersBlocked": "/models నుండి {count} ప్రొవైడర్(లు) బ్లాక్ చేయబడ్డారు", + "blockProviderTitle": "{provider}ను బ్లాక్ చేయండి", + "unblockProviderTitle": "{provider}పై బ్లాక్ను తొలగించండి", + "cliFingerprint": "CLI ఫింగర్ప్రింట్ సరిపోలిక", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "CLI ఫింగర్ప్రింట్ సక్రియంగా ఉన్న {count} ప్రొవైడర్(లు)", + "enableFingerprintTitle": "{provider} కోసం ఫింగర్ప్రింట్ను ప్రారంభించండి", + "disableFingerprintTitle": "{provider} కోసం ఫింగర్ప్రింట్ను నిలిపివేయండి", "systemTransforms": "సిస్టమ్-బ్లాక్ ట్రాన్స్‌ఫార్మ్ పైప్‌లైన్", "systemTransformsDesc": "ఫార్వార్డ్ చేయడానికి ముందు రిక్వెస్ట్ బాడీకి వర్తింపజేయబడిన ట్రాన్స్‌ఫార్మ్‌ల పైప్‌లైన్‌ని ఒక్కో ప్రొవైడర్ ఆర్డర్ చేసారు. ఏదైనా ప్రొవైడర్ IDకి మద్దతు ఇస్తుంది.", "systemTransformsAddProvider": "ప్రొవైడర్‌ని జోడించండి", @@ -7049,29 +7052,29 @@ "systemTransformsOpMoveUp": "పైకి కదలండి", "systemTransformsOpMoveDown": "క్రిందికి తరలించు", "systemTransformsOpDelete": "ఆప్ ను తొలగించండి", - "routingStrategy": "Routing Strategy", - "routingAdvancedGuideTitle": "Advanced routing guidance", + "routingStrategy": "రూటింగ్ వ్యూహం", + "routingAdvancedGuideTitle": "అధునాతన రూటింగ్ మార్గదర్శకత్వం", "routingAdvancedGuideHint1": "Use Fill First for predictable priority, Round Robin for fairness, and P2C for latency resilience.", "routingAdvancedGuideHint2": "If providers vary in quality/cost, start with Cost Opt for background work and Least Used for balanced wear.", - "fillFirst": "Fill First", - "fillFirstDesc": "Use accounts in priority order", + "fillFirst": "మొదటిదాన్ని పూర్తిగా వినియోగించండి", + "fillFirstDesc": "ఖాతాలను ప్రాధాన్యత క్రమంలో ఉపయోగించండి", "roundRobin": "Round Robin", - "roundRobinDesc": "Cycle through all accounts", + "roundRobinDesc": "అన్ని ఖాతాలను వరుసగా చక్రీయంగా ఉపయోగించండి", "p2c": "P2C", - "p2cDesc": "Pick 2 random, use the healthier one", - "random": "Random", - "randomDesc": "Random account each request", - "leastUsed": "Least Used", - "leastUsedDesc": "Pick least recently used account", - "costOpt": "Cost Opt", - "costOptDesc": "Prefer cheapest available account", + "p2cDesc": "యాదృచ్ఛికంగా 2 ఖాతాలను ఎంచుకుని, మెరుగైన స్థితిలో ఉన్నదాన్ని ఉపయోగించండి", + "random": "యాదృచ్ఛికం", + "randomDesc": "ప్రతి అభ్యర్థనకు ఒక యాదృచ్ఛిక ఖాతా", + "leastUsed": "అతి తక్కువగా ఉపయోగించినది", + "leastUsedDesc": "ఇటీవల అతి తక్కువగా ఉపయోగించిన ఖాతాను ఎంచుకోండి", + "costOpt": "ఖర్చు ఆప్టిమైజేషన్", + "costOptDesc": "అందుబాటులో ఉన్న అత్యంత చవకైన ఖాతాకు ప్రాధాన్యత ఇవ్వండి", "resetAware": "రీసెట్-అవేర్ RR", "resetAwareDesc": "ఆరోగ్యకరమైన మిగిలిన కోటా మరియు సమీప రీసెట్‌లతో ఖాతాలకు ప్రాధాన్యత ఇవ్వండి", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "కోటా ఆధారిత వెయిటింగ్", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "ఖచ్చితమైన యాదృచ్ఛిక ఎంపిక", + "strictRandomDesc": "డెక్ను షఫుల్ చేయండి — మళ్లీ షఫుల్ చేయడానికి ముందు ప్రతి ఖాతాను ఒక్కసారి ఉపయోగిస్తుంది", + "stickyLimit": "స్థిర పరిమితి", "stickyLimitDesc": "Calls per account before switching", "routingStrategyTitle": "రూటింగ్ వ్యూహం", "routingStrategySubtitle": "9router కు సరిపోల్చండి: ఖాతా రౌండ్-రాబిన్, స్టిక్కీ పరిమితులు మరియు కాంబో రొటేషన్", @@ -7089,225 +7092,225 @@ "providerAccountRoutingDesc": "ఈ ప్రొవైడర్ కోసం గ్లోబల్ ఖాతా వ్యూహాన్ని భర్తీ చేయండి (9router పారిటీ).", "providerRoutingStrategy": "ఖాతా వ్యూహం", "providerRoutingInheritGlobal": "గ్లోబల్ డిఫాల్ట్‌ను వారసత్వంగా పొందండి", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", - "modelAliases": "Model Aliases", - "modelAliasesTitle": "Model Aliases", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", - "addCustomAlias": "Add Custom Alias", - "deprecatedModelId": "Deprecated model ID", - "newModelId": "New model ID", - "customAliases": "Custom Aliases", - "builtInAliases": "Built-in Aliases", - "backgroundDegradationTitle": "Background Task Degradation", - "backgroundDegradationDesc": "Auto-detect background tasks (titles, summaries) and route to cheaper models", - "enableDegradation": "Enable Background Degradation", - "enableDegradationHint": "When enabled, background tasks like title generation and summarization are routed to cheaper models automatically", - "tasksDetected": "Tasks detected", - "degradationMap": "Model Degradation Map", - "premiumModel": "Premium model", - "cheapModel": "Cheap model", - "detectionPatterns": "Detection Patterns", - "newPattern": "e.g. \"generate a title\"", + "quotaPreflightTitle": "కోటా ముందస్తు తనిఖీ పరిమితి", + "quotaPreflightSubtitle": "అప్స్ట్రీమ్కు అభ్యర్థనను పంపే ముందు కోటా అయిపోయిన ఖాతాలను దాటవేయండి", + "quotaPreflightEnable": "కోటా ముందస్తు తనిఖీని ప్రారంభించండి", + "quotaPreflightEnableDesc": "ప్రతి అభ్యర్థనకు ముందు, ఖాతాలో మిగిలి ఉన్న కోటాను (5గం / వారపు / నెలవారీ విండోలు) తనిఖీ చేయండి. కటాఫ్కు సమానంగా లేదా అంతకంటే తక్కువగా ఉన్న ఖాతాలు అప్స్ట్రీమ్ కాల్ చేయకుండానే దాటవేయబడతాయి. Provider Quota పేజీలో సెట్ చేసిన ప్రతి-విండో కటాఫ్లకే ఇక్కడి డిఫాల్ట్ కంటే ఎల్లప్పుడూ ప్రాధాన్యం ఉంటుంది.", + "quotaPreflightCutoff": "గ్లోబల్ కటాఫ్ (మిగిలి ఉండాల్సిన కనిష్ఠ %)", + "quotaPreflightCutoffDesc": "స్వంత కటాఫ్ లేని ప్రతి విండోలో, ఖాతా మిగిలిన కోటా ఈ శాతానికి లేదా అంతకంటే తక్కువకు పడిపోయినప్పుడు దాన్ని ఉపయోగించడం ఆపివేయండి. ఇది Provider Quota పేజీలోని మిగిలిన-% బార్లకు సరిపోలుతుంది.", + "quotaPreflightWindowsHint": "Provider Quota పేజీలోని Cutoff మోడల్లో సెట్ చేసిన స్వంత ప్రతి-విండో లేదా ప్రతి-ప్రొవైడర్ కటాఫ్ ఉన్న విండోలపై ఈ డిఫాల్ట్ ప్రభావం ఉండదు.", + "quotaPreflightLoadFailed": "కోటా ప్రీఫ్లైట్ సెట్టింగ్లను లోడ్ చేయడం సాధ్యపడలేదు.", + "modelAliases": "మోడల్ మారుపేర్లు", + "modelAliasesTitle": "మోడల్ మారుపేర్లు", + "modelAliasesDesc": "ఖచ్చితమైన సరిపోలికలు లేదా వైల్డ్కార్డ్ నమూనాలను ఉపయోగించి మోడల్ పేర్లను రీమ్యాప్ చేయండి.", + "addCustomAlias": "అనుకూల మారుపేరును జోడించండి", + "deprecatedModelId": "ఉపయోగం నిలిపివేయబడిన మోడల్ ID", + "newModelId": "కొత్త మోడల్ ID", + "customAliases": "అనుకూల మారుపేర్లు", + "builtInAliases": "అంతర్నిర్మిత మారుపేర్లు", + "backgroundDegradationTitle": "నేపథ్య టాస్క్ డీగ్రడేషన్", + "backgroundDegradationDesc": "నేపథ్య టాస్క్లను (శీర్షికలు, సారాంశాలు) స్వయంచాలకంగా గుర్తించి తక్కువ ఖర్చు మోడల్లకు రూట్ చేయండి", + "enableDegradation": "నేపథ్య డీగ్రడేషన్ను ప్రారంభించండి", + "enableDegradationHint": "ప్రారంభించినప్పుడు, శీర్షిక సృష్టి మరియు సారాంశీకరణ వంటి నేపథ్య టాస్క్లు స్వయంచాలకంగా తక్కువ ఖర్చు మోడల్లకు రూట్ చేయబడతాయి", + "tasksDetected": "గుర్తించిన టాస్క్లు", + "degradationMap": "మోడల్ డీగ్రడేషన్ మ్యాప్", + "premiumModel": "ప్రీమియం మోడల్", + "cheapModel": "తక్కువ ఖర్చు మోడల్", + "detectionPatterns": "గుర్తింపు నమూనాలు", + "newPattern": "ఉదా. \"ఒక శీర్షికను రూపొందించండి\"", "aliasPatternPlaceholder": "claude-sonnet-*", "aliasTargetPlaceholder": "claude-sonnet-4-20250514", - "pattern": "Pattern", - "targetModel": "Target Model", - "add": "+ Add", - "session": "Session", - "sessionDetailsAria": "Session details", + "pattern": "నమూనా", + "targetModel": "లక్ష్య మోడల్", + "add": "+ జోడించండి", + "session": "సెషన్", + "sessionDetailsAria": "సెషన్ వివరాలు", "status": "Status", - "authenticated": "Authenticated", - "guest": "Guest", - "loginTime": "Login Time", - "sessionAge": "Session Age", - "browser": "Browser", - "clearLocalData": "Clear Local Data", - "logout": "Logout", - "clearLocalDataConfirm": "Clear all local data? This will reset your preferences.", - "unknown": "Unknown", - "systemActor": "system", - "ipAccessControl": "IP Access Control", - "ipAccessControlDesc": "Block or allow specific IP addresses", - "ipModeDisabled": "Disabled", - "ipModeBlacklist": "Blacklist", - "ipModeWhitelist": "Whitelist", - "ipModeWhitelistPriority": "WL Priority", - "addIpAddress": "Add IP Address", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", - "block": "+ Block", - "allow": "+ Allow", - "blocked": "Blocked ({count})", - "allowed": "Allowed ({count})", - "temporaryBans": "Temporary Bans ({count})", - "minLeft": "{min}m left", - "auditLog": "Audit Log", - "searchAuditLogs": "Search audit logs...", - "failedLoadAuditLog": "Failed to load audit log", - "noAuditEvents": "No audit events found", - "action": "Action", - "actor": "Actor", - "details": "Details", - "time": "Time", - "fallbackChainsTitle": "Fallback Chains", - "fallbackChainsDesc": "Define provider fallback order per model", - "addChain": "+ Add Chain", - "modelName": "Model Name", + "authenticated": "ప్రమాణీకరించబడింది", + "guest": "అతిథి", + "loginTime": "లాగిన్ సమయం", + "sessionAge": "సెషన్ వయస్సు", + "browser": "బ్రౌజర్", + "clearLocalData": "స్థానిక డేటాను క్లియర్ చేయండి", + "logout": "లాగ్ అవుట్", + "clearLocalDataConfirm": "స్థానిక డేటా మొత్తాన్ని క్లియర్ చేయాలా? ఇది మీ ప్రాధాన్యతలను రీసెట్ చేస్తుంది.", + "unknown": "తెలియదు", + "systemActor": "సిస్టమ్", + "ipAccessControl": "IP యాక్సెస్ నియంత్రణ", + "ipAccessControlDesc": "నిర్దిష్ట IP చిరునామాలను బ్లాక్ చేయండి లేదా అనుమతించండి", + "ipModeDisabled": "నిలిపివేయబడింది", + "ipModeBlacklist": "బ్లాక్లిస్ట్", + "ipModeWhitelist": "వైట్లిస్ట్", + "ipModeWhitelistPriority": "WL ప్రాధాన్యత", + "addIpAddress": "IP చిరునామాను జోడించండి", + "ipAddressPlaceholder": "192.168.1.0/24 లేదా 10.0.*.*", + "block": "+ బ్లాక్ చేయండి", + "allow": "+ అనుమతించండి", + "blocked": "బ్లాక్ చేయబడినవి ({count})", + "allowed": "అనుమతించబడినవి ({count})", + "temporaryBans": "తాత్కాలిక నిషేధాలు ({count})", + "minLeft": "{min}ని మిగిలి ఉంది", + "auditLog": "ఆడిట్ లాగ్", + "searchAuditLogs": "ఆడిట్ లాగ్లను శోధించండి...", + "failedLoadAuditLog": "ఆడిట్ లాగ్ను లోడ్ చేయడం విఫలమైంది", + "noAuditEvents": "ఆడిట్ ఈవెంట్లు ఏవీ కనుగొనబడలేదు", + "action": "చర్య", + "actor": "చర్య చేసిన వ్యక్తి", + "details": "వివరాలు", + "time": "సమయం", + "fallbackChainsTitle": "ఫాల్బ్యాక్ చైన్లు", + "fallbackChainsDesc": "ప్రతి మోడల్కు ప్రొవైడర్ ఫాల్బ్యాక్ క్రమాన్ని నిర్వచించండి", + "addChain": "+ చైన్ను జోడించండి", + "modelName": "మోడల్ పేరు", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "Providers (comma-separated, in priority order)", + "providersCommaSeparated": "ప్రొవైడర్లు (కామాలతో వేరు చేసి, ప్రాధాన్యత క్రమంలో)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", - "createChain": "Create Chain", - "noFallbackChains": "No Fallback Chains", - "noFallbackChainsDesc": "Create a chain to define provider fallback order for a model.", - "loadingFallbackChains": "Loading fallback chains...", - "deleteChainConfirm": "Delete fallback chain for \"{model}\"?", - "chainCreated": "Chain created for {model}", - "chainDeleted": "Chain deleted for {model}", - "failedCreateChain": "Failed to create chain", - "failedDeleteChain": "Failed to delete chain", - "deleteChain": "Delete chain", - "fillModelAndProviders": "Please fill model name and providers", - "addAtLeastOneProvider": "Add at least one provider", - "comboDefaultsTitle": "Combo Defaults", - "comboDefaultsGuideTitle": "How to tune combo defaults", - "comboDefaultsGuideHint1": "Keep retries low in low-latency flows; increase timeout only for long generation tasks.", - "comboDefaultsGuideHint2": "Use provider overrides when one provider needs different timeout/retry behavior than global defaults.", - "globalComboConfig": "Global combo configuration", + "createChain": "చైన్ను సృష్టించండి", + "noFallbackChains": "ఫాల్బ్యాక్ చైన్లు లేవు", + "noFallbackChainsDesc": "ఒక మోడల్ కోసం ప్రొవైడర్ ఫాల్బ్యాక్ క్రమాన్ని నిర్వచించడానికి చైన్ను సృష్టించండి.", + "loadingFallbackChains": "ఫాల్బ్యాక్ చైన్లు లోడ్ అవుతున్నాయి...", + "deleteChainConfirm": "\"{model}\" కోసం ఫాల్బ్యాక్ చైన్ను తొలగించాలా?", + "chainCreated": "{model} కోసం చైన్ సృష్టించబడింది", + "chainDeleted": "{model} కోసం చైన్ తొలగించబడింది", + "failedCreateChain": "చైన్ను సృష్టించడం విఫలమైంది", + "failedDeleteChain": "చైన్ను తొలగించడం విఫలమైంది", + "deleteChain": "చైన్ను తొలగించండి", + "fillModelAndProviders": "దయచేసి మోడల్ పేరు మరియు ప్రొవైడర్లను పూరించండి", + "addAtLeastOneProvider": "కనీసం ఒక ప్రొవైడర్ను జోడించండి", + "comboDefaultsTitle": "కాంబో డిఫాల్ట్లు", + "comboDefaultsGuideTitle": "కాంబో డిఫాల్ట్లను ఎలా సర్దుబాటు చేయాలి", + "comboDefaultsGuideHint1": "తక్కువ లేటెన్సీ ప్రవాహాల్లో పునఃప్రయత్నాలను తక్కువగా ఉంచండి; దీర్ఘ జనరేషన్ టాస్క్ల కోసం మాత్రమే టైమ్అవుట్ను పెంచండి.", + "comboDefaultsGuideHint2": "ఒక ప్రొవైడర్కు గ్లోబల్ డిఫాల్ట్ల కంటే భిన్నమైన టైమ్అవుట్/రీట్రై ప్రవర్తన అవసరమైనప్పుడు ప్రొవైడర్ ఓవర్రైడ్లను ఉపయోగించండి.", + "globalComboConfig": "గ్లోబల్ కాంబో కాన్ఫిగరేషన్", "moveUp": "పైకి తరలించండి", "moveDown": "కిందికి తరలించండి", "allProvidersAdded": "అన్ని ప్రొవైడర్‌లు జోడించబడ్డాయి", "noProvidersFound": "ప్రొవైడర్‌లు ఏవీ కనుగొనబడలేదు", - "defaultStrategy": "Default Strategy", + "defaultStrategy": "డిఫాల్ట్ వ్యూహం", "defaultStrategyDesc": "Applied to new combos without explicit strategy", - "comboStrategyAria": "Combo strategy", - "priority": "Priority", - "weighted": "Weighted", - "contextRelay": "Context Relay", - "contextRelayDesc": "Priority-style routing with automatic context handoffs when account rotation happens", - "maxRetriesLabel": "Max Retries", - "retryDelayLabel": "Retry Delay (ms)", - "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", - "healthCheckDesc": "Pre-check provider availability", - "trackMetrics": "Track Metrics", - "trackMetricsDesc": "Record per-combo request metrics", - "providerOverrides": "Provider Overrides", - "providerOverridesDesc": "Override timeout and retries per provider. Provider settings override global defaults.", - "providerMaxRetriesAria": "{provider} max retries", - "providerTimeoutAria": "{provider} timeout ms", - "removeProviderOverrideAria": "Remove {provider} override", + "comboStrategyAria": "కాంబో వ్యూహం", + "priority": "ప్రాధాన్యత", + "weighted": "బరువు ఆధారితం", + "contextRelay": "కాంటెక్స్ట్ రిలే", + "contextRelayDesc": "ఖాతా రొటేషన్ జరిగినప్పుడు ఆటోమేటిక్ కాంటెక్స్ట్ హ్యాండాఫ్లతో ప్రాధాన్యత-శైలి రూటింగ్", + "maxRetriesLabel": "గరిష్ఠ రీట్రైలు", + "retryDelayLabel": "రీట్రై ఆలస్యం (ms)", + "timeoutLabel": "టైమ్అవుట్ (ms)", + "healthCheck": "హెల్త్ చెక్", + "healthCheckDesc": "ప్రొవైడర్ లభ్యతను ముందుగా తనిఖీ చేయండి", + "trackMetrics": "మెట్రిక్లను ట్రాక్ చేయండి", + "trackMetricsDesc": "ప్రతి కాంబోకు అభ్యర్థన మెట్రిక్లను నమోదు చేయండి", + "providerOverrides": "ప్రొవైడర్ ఓవర్రైడ్లు", + "providerOverridesDesc": "ప్రతి ప్రొవైడర్కు టైమ్అవుట్ మరియు రీట్రైలను ఓవర్రైడ్ చేయండి. ప్రొవైడర్ సెట్టింగ్లు గ్లోబల్ డిఫాల్ట్లను ఓవర్రైడ్ చేస్తాయి.", + "providerMaxRetriesAria": "{provider} గరిష్ఠ రీట్రైలు", + "providerTimeoutAria": "{provider} టైమ్అవుట్ ms", + "removeProviderOverrideAria": "{provider} ఓవర్రైడ్ను తొలగించండి", "selectProviderPlaceholder": "ప్రొవైడర్‌ను ఎంచుకోండి...", "searchProviderPlaceholder": "ప్రొవైడర్‌లను శోధించండి...", "searchProviderAria": "ప్రొవైడర్‌లను శోధించండి", - "newProviderNamePlaceholder": "e.g. google, openai...", - "newProviderNameAria": "New provider name", - "retries": "retries", + "newProviderNamePlaceholder": "ఉదా. google, openai...", + "newProviderNameAria": "కొత్త ప్రొవైడర్ పేరు", + "retries": "రీట్రైలు", "ms": "ms", - "saveComboDefaults": "Save Combo Defaults", - "maxNestingDepth": "Max Nesting Depth", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", + "saveComboDefaults": "కాంబో డిఫాల్ట్లను సేవ్ చేయండి", + "maxNestingDepth": "గరిష్ఠ నెస్టింగ్ లోతు", + "concurrencyPerModel": "కన్కరెన్సీ / మోడల్", + "queueTimeout": "క్యూ టైమ్అవుట్ (ms)", "queueDepth": "క్యూ లోతు", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", - "providerProfiles": "Provider Profiles", - "providerProfilesDesc": "Separate resilience settings for OAuth (session-based) and API Key (metered) providers. OAuth providers have stricter thresholds due to lower rate limits.", - "oauthProviders": "OAuth Providers", - "apiKeyProviders": "API Key Providers", - "transientCooldown": "Transient Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", - "cbThreshold": "CB Threshold", - "cbResetTime": "CB Reset Time", - "rateLimiting": "Rate Limiting", - "rateLimitingDesc": "API Key providers are automatically rate-limited with safe defaults. Limits are learned from response headers and adapt over time.", - "defaultSafetyNet": "Default Safety Net", + "contextRelayHandoffThreshold": "హ్యాండాఫ్ థ్రెషోల్డ్", + "contextRelayMaxMessages": "సారాంశం కోసం గరిష్ఠ సందేశాలు", + "contextRelaySummaryModel": "సారాంశ మోడల్", + "contextRelayProviderNote": "కాంటెక్స్ట్ రిలే ప్రస్తుతం Codex ఖాతాల కోసం హ్యాండాఫ్లను రూపొందిస్తుంది మరియు కొత్త లేదా కాన్ఫిగర్ చేయని కాంబోల కోసం ఈ విలువలను గ్లోబల్ డిఫాల్ట్లుగా ఉపయోగిస్తుంది.", + "providerProfiles": "ప్రొవైడర్ ప్రొఫైల్లు", + "providerProfilesDesc": "OAuth (సెషన్-ఆధారిత) మరియు API Key (వినియోగ-ఆధారిత) ప్రొవైడర్ల కోసం వేర్వేరు స్థితిస్థాపకత సెట్టింగ్లు. తక్కువ రేట్ లిమిట్ల కారణంగా OAuth ప్రొవైడర్లకు మరింత కఠినమైన థ్రెషోల్డ్లు ఉంటాయి.", + "oauthProviders": "OAuth ప్రొవైడర్లు", + "apiKeyProviders": "API Key ప్రొవైడర్లు", + "transientCooldown": "తాత్కాలిక కూల్డౌన్", + "rateLimitCooldown": "రేట్ లిమిట్ కూల్డౌన్", + "maxBackoffLevel": "గరిష్ఠ బ్యాక్ఆఫ్ స్థాయి", + "cbThreshold": "CB థ్రెషోల్డ్", + "cbResetTime": "CB రీసెట్ సమయం", + "rateLimiting": "రేట్ పరిమితి", + "rateLimitingDesc": "API Key ప్రొవైడర్లకు సురక్షితమైన డిఫాల్ట్లతో స్వయంచాలకంగా రేట్ పరిమితి విధించబడుతుంది. ప్రతిస్పందన హెడర్ల నుండి పరిమితులు నేర్చుకోబడతాయి మరియు కాలక్రమేణా సర్దుబాటు అవుతాయి.", + "defaultSafetyNet": "డిఫాల్ట్ భద్రతా వలయం", "rpm": "RPM", - "minGap": "Min Gap", - "maxConcurrent": "Max Concurrent", - "activeLimiters": "Active Limiters", - "noActiveLimiters": "No active rate limiters yet.", - "reservoir": "Reservoir", - "running": "Running", - "queued": "Queued", - "circuitBreakers": "Circuit Breakers", - "breakerStateClosed": "Closed", - "breakerStateOpen": "Open", - "breakerStateHalfOpen": "Half-Open", - "tripped": "{count} tripped", - "healthy": "{count} healthy", - "resetAll": "Reset All", - "noCircuitBreakers": "No circuit breakers active yet. They are created automatically when requests flow through the combo pipeline.", - "failures": "{count} failure(s)", - "policiesLocked": "Policies & Locked Identifiers", - "allOperational": "All systems operational — no lockouts or tripped breakers", - "loadingPolicies": "Loading policies...", - "lockedIdentifiers": "Locked Identifiers", - "unlockedIdentifier": "Unlocked: {identifier}", - "sinceDate": "since {date}", - "forceUnlock": "Force Unlock", - "unlocking": "Unlocking...", - "failedUnlock": "Failed to unlock", - "failedLoadWithStatus": "Failed to load: {status}", - "failedLoadResilience": "Failed to load resilience status", - "saveFailed": "Save failed", - "resetFailed": "Reset failed", - "loadingResilience": "Loading resilience status...", - "retry": "Retry", + "minGap": "కనిష్ఠ విరామం", + "maxConcurrent": "గరిష్ఠ సమకాలీన అభ్యర్థనలు", + "activeLimiters": "సక్రియ రేట్ లిమిటర్లు", + "noActiveLimiters": "ఇంకా సక్రియ రేట్ లిమిటర్లు లేవు.", + "reservoir": "రిజర్వాయర్", + "running": "అమలవుతోంది", + "queued": "క్యూలో ఉన్నాయి", + "circuitBreakers": "సర్క్యూట్ బ్రేకర్లు", + "breakerStateClosed": "మూసివేయబడినవి", + "breakerStateOpen": "తెరిచి ఉన్నవి", + "breakerStateHalfOpen": "పాక్షికంగా తెరిచి ఉన్నవి", + "tripped": "{count} ట్రిప్ అయ్యాయి", + "healthy": "{count} సక్రమంగా ఉన్నాయి", + "resetAll": "అన్నింటినీ రీసెట్ చేయండి", + "noCircuitBreakers": "ఇంకా సక్రియ సర్క్యూట్ బ్రేకర్లు లేవు. కాంబో పైప్లైన్ ద్వారా అభ్యర్థనలు ప్రవహించినప్పుడు అవి స్వయంచాలకంగా సృష్టించబడతాయి.", + "failures": "{count} వైఫల్యం(లు)", + "policiesLocked": "విధానాలు & లాక్ చేయబడిన ఐడెంటిఫయర్లు", + "allOperational": "అన్ని సిస్టమ్లు సక్రమంగా పనిచేస్తున్నాయి — లాకౌట్లు లేదా ట్రిప్ అయిన బ్రేకర్లు లేవు", + "loadingPolicies": "విధానాలు లోడ్ అవుతున్నాయి...", + "lockedIdentifiers": "లాక్ చేయబడిన ఐడెంటిఫయర్లు", + "unlockedIdentifier": "అన్లాక్ చేయబడింది: {identifier}", + "sinceDate": "{date} నుండి", + "forceUnlock": "బలవంతంగా అన్లాక్ చేయండి", + "unlocking": "అన్లాక్ చేస్తోంది...", + "failedUnlock": "అన్లాక్ చేయడం విఫలమైంది", + "failedLoadWithStatus": "లోడ్ చేయడం విఫలమైంది: {status}", + "failedLoadResilience": "రెసిలియెన్స్ స్థితిని లోడ్ చేయడం విఫలమైంది", + "saveFailed": "సేవ్ చేయడం విఫలమైంది", + "resetFailed": "రీసెట్ చేయడం విఫలమైంది", + "loadingResilience": "రెసిలియెన్స్ స్థితి లోడ్ అవుతోంది...", + "retry": "మళ్లీ ప్రయత్నించండి", "systemStorage": "System & Storage", - "allDataLocal": "All data stored locally on your machine", - "databasePath": "Database Path", + "allDataLocal": "మొత్తం డేటా మీ మెషీన్లో స్థానికంగా నిల్వ చేయబడుతుంది", + "databasePath": "డేటాబేస్ పాత్", "export": "ఎగుమతి", - "exportDatabase": "Export Database", - "exportAll": "Export All (.tar.gz)", - "importDatabase": "Import Database", - "confirmDbImport": "Confirm Database Import", - "confirmDbImportDesc": "This will replace all current data with the content from {file}. A backup will be created automatically before the import.", - "yesImport": "Yes, Import", - "lastBackup": "Last Backup", - "noBackupYet": "No backup yet", - "backupNow": "Backup Now", - "backupRestore": "Backup & Restore", - "viewBackups": "View Backups", - "hide": "Hide", - "backupRetentionDesc": "Database snapshots are created automatically before restore and every 15 minutes when data changes. Retention: 24 hourly + 30 daily backups with smart rotation.", - "loadingBackups": "Loading backups...", - "noBackupsYet": "No backups available yet. Backups will be created automatically when data changes.", - "backupsAvailable": "{count} backup(s) available", - "refresh": "Refresh", - "confirm": "Confirm?", - "yes": "Yes", - "no": "No", - "restore": "Restore", - "invalidFileType": "Invalid file type. Only .sqlite files are accepted.", - "exportFailed": "Export failed", - "exportFailedWithError": "Export failed: {error}", - "fullExportFailedWithError": "Full export failed: {error}", - "backupCreated": "Backup created: {file}", - "restoreSuccess": "Restored! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "importSuccess": "Database imported! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "minutesAgo": "{count}m ago", - "hoursAgo": "{count}h ago", - "daysAgo": "{count}d ago", - "backupReasonManual": "manual", - "backupReasonPreRestore": "pre-restore", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", - "noChangesSinceBackup": "No changes since last backup", - "backupFailed": "Backup failed", - "restoreFailed": "Restore failed", - "importFailed": "Import failed", - "errorDuringRestore": "An error occurred during restore", - "errorDuringImport": "An error occurred during import", - "modelPricing": "Model Pricing", - "modelPricingDesc": "Configure cost rates per model • All rates in $/1M tokens", + "exportDatabase": "డేటాబేస్ను ఎగుమతి చేయండి", + "exportAll": "అన్నింటినీ ఎగుమతి చేయండి (.tar.gz)", + "importDatabase": "డేటాబేస్ను దిగుమతి చేయండి", + "confirmDbImport": "డేటాబేస్ దిగుమతిని నిర్ధారించండి", + "confirmDbImportDesc": "ఇది ప్రస్తుత డేటా మొత్తాన్ని {file} లోని కంటెంట్తో భర్తీ చేస్తుంది. దిగుమతికి ముందు స్వయంచాలకంగా బ్యాకప్ సృష్టించబడుతుంది.", + "yesImport": "అవును, దిగుమతి చేయండి", + "lastBackup": "చివరి బ్యాకప్", + "noBackupYet": "ఇంకా బ్యాకప్ లేదు", + "backupNow": "ఇప్పుడే బ్యాకప్ చేయండి", + "backupRestore": "బ్యాకప్ & పునరుద్ధరణ", + "viewBackups": "బ్యాకప్లను చూడండి", + "hide": "దాచు", + "backupRetentionDesc": "పునరుద్ధరణకు ముందు, అలాగే డేటా మారినప్పుడు ప్రతి 15 నిమిషాలకు డేటాబేస్ స్నాప్షాట్లు స్వయంచాలకంగా సృష్టించబడతాయి. నిల్వ విధానం: స్మార్ట్ రొటేషన్తో గంటవారీగా 24 + రోజువారీగా 30 బ్యాకప్లు.", + "loadingBackups": "బ్యాకప్లు లోడ్ అవుతున్నాయి...", + "noBackupsYet": "ఇంకా బ్యాకప్లు అందుబాటులో లేవు. డేటా మారినప్పుడు బ్యాకప్లు స్వయంచాలకంగా సృష్టించబడతాయి.", + "backupsAvailable": "{count} బ్యాకప్(లు) అందుబాటులో ఉన్నాయి", + "refresh": "రిఫ్రెష్ చేయండి", + "confirm": "నిర్ధారించాలా?", + "yes": "అవును", + "no": "కాదు", + "restore": "పునరుద్ధరించండి", + "invalidFileType": "చెల్లని ఫైల్ రకం. .sqlite ఫైల్లు మాత్రమే ఆమోదించబడతాయి.", + "exportFailed": "ఎగుమతి విఫలమైంది", + "exportFailedWithError": "ఎగుమతి విఫలమైంది: {error}", + "fullExportFailedWithError": "పూర్తి ఎగుమతి విఫలమైంది: {error}", + "backupCreated": "బ్యాకప్ సృష్టించబడింది: {file}", + "restoreSuccess": "పునరుద్ధరించబడింది! {connections} కనెక్షన్లు, {nodes} నోడ్లు, {combos} కాంబోలు, {apiKeys} API కీలు.", + "importSuccess": "డేటాబేస్ దిగుమతి చేయబడింది! {connections} కనెక్షన్లు, {nodes} నోడ్లు, {combos} కాంబోలు, {apiKeys} API కీలు.", + "minutesAgo": "{count}ని క్రితం", + "hoursAgo": "{count}గం క్రితం", + "daysAgo": "{count}రోజుల క్రితం", + "backupReasonManual": "మాన్యువల్", + "backupReasonPreRestore": "పునరుద్ధరణకు ముందు", + "connectionsCount": "{count, plural, one {# కనెక్షన్} other {# కనెక్షన్లు}}", + "noChangesSinceBackup": "చివరి బ్యాకప్ నుంచి మార్పులు లేవు", + "backupFailed": "బ్యాకప్ విఫలమైంది", + "restoreFailed": "పునరుద్ధరణ విఫలమైంది", + "importFailed": "దిగుమతి విఫలమైంది", + "errorDuringRestore": "పునరుద్ధరణ సమయంలో లోపం సంభవించింది", + "errorDuringImport": "దిగుమతి సమయంలో లోపం సంభవించింది", + "modelPricing": "మోడల్ ధరలు", + "modelPricingDesc": "ప్రతి మోడల్కు ఖర్చు రేట్లను కాన్ఫిగర్ చేయండి • అన్ని రేట్లు $/1M టోకెన్లలో ఉంటాయి", "pricingCoverage": "కవరేజ్", "pricingAuth": "ప్రామాణీకరణ", "pricingSort": "క్రమబద్ధీకరించండి", @@ -7329,7 +7332,7 @@ "configured": "కాన్ఫిగర్ చేయబడింది", "none": "ఏదీ లేదు", "modelOverrideValuePlaceholder": "సంఖ్యా విలువ", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "ఆంగ్ల కామాలతో వేరు చేసినవి, ఉదా. low, medium, high", "addKeyValue": "కీ విలువను జోడించండి", "noModelOverrides": "ఈ మోడల్ కోసం ఎటువంటి ఓవర్‌రైడ్‌లు కాన్ఫిగర్ చేయబడలేదు.", "modelOverrideLoadFailed": "మోడల్ ఓవర్‌రైడ్‌లను లోడ్ చేయడం విఫలమైంది", @@ -7337,66 +7340,66 @@ "modelOverrideRemoved": "మోడల్ ఓవర్‌రైడ్ తీసివేయబడింది", "modelOverrideSaveFailed": "మోడల్ ఓవర్‌రైడ్‌ను సేవ్ చేయడం విఫలమైంది", "modelOverrideRemoveFailed": "మోడల్ ఓవర్‌రైడ్‌ను తీసివేయడం విఫలమైంది", - "registry": "Registry", - "priced": "Priced", - "searchProvidersModels": "Search providers or models...", - "showAll": "Show All", - "noProvidersMatch": "No providers match your search.", - "howPricingWorks": "How Pricing Works", - "cacheWrite": "Cache Write", - "unsaved": "unsaved", + "registry": "రిజిస్ట్రీ", + "priced": "ధర నిర్ణయించబడింది", + "searchProvidersModels": "ప్రొవైడర్లు లేదా మోడళ్లను శోధించండి...", + "showAll": "అన్నీ చూపించు", + "noProvidersMatch": "మీ శోధనకు సరిపోలే ప్రొవైడర్లు లేరు.", + "howPricingWorks": "ధర నిర్ణయం ఎలా పనిచేస్తుంది", + "cacheWrite": "క్యాష్ రైట్", + "unsaved": "సేవ్ చేయలేదు", "resetDefaults": "డిఫాల్ట్‌లను పునఃసెట్టు", - "saveProvider": "Save Provider", + "saveProvider": "ప్రొవైడర్ను సేవ్ చేయండి", "model": "Model", - "models": "models", - "moreProviders": "{count} more providers", - "withPricing": "with pricing configured", - "policiesCircuitBreakers": "Policies & Circuit Breakers", - "activeIssuesDetected": "Active issues detected", - "off": "Off", - "resetPricingConfirm": "Reset all pricing for {provider} to defaults?", - "pricingDescInput": "Input: tokens sent to the model", - "pricingDescOutput": "Output: tokens generated", - "pricingDescCached": "Cached: reused input (~50% of input rate)", - "pricingDescReasoning": "Reasoning: thinking tokens (falls back to Output)", - "pricingDescCacheWrite": "Cache Write: creating cache entries (falls back to Input)", - "pricingDescFormula": "Cost = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.", - "pricingSettingsTitle": "Pricing Settings", - "totalModels": "Total Models", - "active": "Active", - "costCalculation": "Cost Calculation", - "costCalculationDesc": "Costs are calculated based on token usage and pricing rates configured for each model.", - "pricingFormat": "Pricing Format", - "pricingFormatDesc": "All rates are in $/1M tokens (dollars per million tokens).", - "tokenTypes": "Token Types", - "inputTokenDesc": "Standard prompt tokens", - "outputTokenDesc": "Completion/response tokens", - "cachedTokenDesc": "Cached input tokens (typically 50% of input rate)", - "reasoningTokenDesc": "Special reasoning/thinking tokens (fallback to output rate)", - "cacheCreationTokenDesc": "Tokens used to create cache entries (fallback to input rate)", - "customPricingNote": "You can override default pricing for specific models. Custom overrides take priority over auto-detected pricing.", - "editPricing": "Edit Pricing", - "viewFullDetails": "View Full Details", - "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "models": "మోడళ్లు", + "moreProviders": "మరో {count} ప్రొవైడర్లు", + "withPricing": "ధరలు కాన్ఫిగర్ చేయబడినవి", + "policiesCircuitBreakers": "విధానాలు & సర్క్యూట్ బ్రేకర్లు", + "activeIssuesDetected": "యాక్టివ్ సమస్యలు గుర్తించబడ్డాయి", + "off": "ఆఫ్", + "resetPricingConfirm": "{provider} కోసం అన్ని ధరలను డిఫాల్ట్లకు రీసెట్ చేయాలా?", + "pricingDescInput": "ఇన్పుట్: మోడల్కు పంపిన టోకెన్లు", + "pricingDescOutput": "అవుట్పుట్: రూపొందించిన టోకెన్లు", + "pricingDescCached": "క్యాష్ చేయబడినవి: మళ్లీ ఉపయోగించిన ఇన్పుట్ (ఇన్పుట్ రేటులో సుమారు 50%)", + "pricingDescReasoning": "రీజనింగ్: ఆలోచనా టోకెన్లు (అవుట్పుట్ను ఫాల్బ్యాక్గా ఉపయోగిస్తుంది)", + "pricingDescCacheWrite": "క్యాష్ రైట్: క్యాష్ ఎంట్రీలను సృష్టించడం (ఇన్పుట్ను ఫాల్బ్యాక్గా ఉపయోగిస్తుంది)", + "pricingDescFormula": "ఖర్చు = (ఇన్పుట్ × ఇన్పుట్_రేట్) + (అవుట్పుట్ × అవుట్పుట్_రేట్) + (క్యాష్ చేయబడినవి × క్యాష్డ్_రేట్), ప్రతి మిలియన్ టోకెన్లకు.", + "pricingSettingsTitle": "ధర సెట్టింగ్లు", + "totalModels": "మొత్తం మోడళ్లు", + "active": "యాక్టివ్", + "costCalculation": "ఖర్చు గణన", + "costCalculationDesc": "ప్రతి మోడల్కు కాన్ఫిగర్ చేసిన టోకెన్ వినియోగం మరియు ధర రేట్ల ఆధారంగా ఖర్చులు లెక్కించబడతాయి.", + "pricingFormat": "ధర ఫార్మాట్", + "pricingFormatDesc": "అన్ని రేట్లు $/1M టోకెన్లలో ఉంటాయి (ప్రతి మిలియన్ టోకెన్లకు డాలర్లు).", + "tokenTypes": "టోకెన్ రకాలు", + "inputTokenDesc": "ప్రామాణిక ప్రాంప్ట్ టోకెన్లు", + "outputTokenDesc": "పూర్తి/ప్రతిస్పందన టోకెన్లు", + "cachedTokenDesc": "క్యాష్ చేసిన ఇన్పుట్ టోకెన్లు (సాధారణంగా ఇన్పుట్ రేటులో 50%)", + "reasoningTokenDesc": "ప్రత్యేక రీజనింగ్/ఆలోచనా టోకెన్లు (అవుట్పుట్ రేటును ఫాల్బ్యాక్గా ఉపయోగిస్తాయి)", + "cacheCreationTokenDesc": "క్యాష్ ఎంట్రీలను సృష్టించడానికి ఉపయోగించే టోకెన్లు (ఇన్పుట్ రేటును ఫాల్బ్యాక్గా ఉపయోగిస్తాయి)", + "customPricingNote": "నిర్దిష్ట మోడళ్ల కోసం మీరు డిఫాల్ట్ ధరలను ఓవర్రైడ్ చేయవచ్చు. కస్టమ్ ఓవర్రైడ్లకు ఆటోమేటిక్గా గుర్తించిన ధరల కంటే ప్రాధాన్యత ఉంటుంది.", + "editPricing": "ధరలను సవరించండి", + "viewFullDetails": "పూర్తి వివరాలను చూడండి", + "themeCoral": "కోరల్", + "adaptiveVolumeRouting": "అనుకూల వాల్యూమ్ రూటింగ్", + "adaptiveVolumeRoutingDesc": "పేలోడ్ వాల్యూమ్ మరియు త్రూపుట్ ఒత్తిడి ఆధారంగా కనెక్షన్లను డైనమిక్గా స్కేల్ చేయండి.", + "lkgpToggleTitle": "చివరిగా విజయవంతమైన ప్రొవైడర్ (LKGP)", + "lkgpToggleDesc": "ప్రారంభించినప్పుడు, చివరిగా విజయవంతమైన ప్రతిస్పందనను అందించిన ప్రొవైడర్ను రౌటర్ గుర్తుంచుకుని, తదుపరి అభ్యర్థనల్లో ముందుగా దానినే ప్రయత్నిస్తుంది.", "echoRequestedModelTitle": "ప్రతిస్పందనలలో అభ్యర్థించిన మోడల్ పేరును ఎకో చేయండి", "echoRequestedModelDesc": "ప్రారంభించినప్పుడు, ప్రతిస్పందన `model` ఫీల్డ్ అప్‌స్ట్రీమ్ మోడల్ పేరుకు బదులుగా క్లయింట్ అభ్యర్థించిన అలియాస్ లేదా కాంబో పేరును చూపుతుంది. అభ్యర్థనతో మోడల్ సరిపోలని ప్రతిస్పందనను తిరస్కరించే ఖచ్చితమైన క్లయింట్‌లను (ఉదా. Claude Desktop) ఇది పరిష్కరిస్తుంది.", "webSearchRouteTitle": "వెబ్ శోధన రూటింగ్", "webSearchRouteDesc": "అభ్యర్థనలో స్థానిక web_search సాధనం ఉన్నప్పుడు, డిఫాల్ట్‌కు బదులుగా మొత్తం అభ్యర్థనను ఈ మోడల్‌కు రూట్ చేయండి — Anthropic యొక్క web_search సర్వర్ సాధనాన్ని అమలు చేయని ప్రొవైడర్‌లకు ఇది ఉపయోగపడుతుంది. నిలిపివేయడానికి ఖాళీగా ఉంచండి.", "webSearchRoutePlaceholder": "మోడల్‌ను శోధించండి లేదా ఎంచుకోండి…", "paidModelPatternWarning": "ఈ నమూనా చెల్లింపు మోడళ్లకు మాత్రమే సరిపోలుతుంది — చెల్లింపు మోడళ్లను ప్రారంభించండి లేదా నమూనాను సర్దుబాటు చేయండి.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP క్యాష్ను క్లియర్ చేయి", + "lkgpCacheCleared": "LKGP క్యాష్ విజయవంతంగా క్లియర్ చేయబడింది", + "lkgpCacheClearFailed": "LKGP క్యాష్ను క్లియర్ చేయడం విఫలమైంది", + "days": "రోజులు", + "lkgp": "LKGP మోడ్", + "lkgpDesc": "చివరిగా విజయవంతమైన ప్రొవైడర్ (ఊహించదగిన స్థితిస్థాపకత)", + "maintenance": "నిర్వహణ", + "purgeExpiredLogs": "గడువు ముగిసిన లాగ్లను తొలగించు", + "purgeLogsFailed": "లాగ్లను తొలగించడం విఫలమైంది", "logsDeleted": "{count, plural, =0 {గడువు ముగిసిన లాగ్‌లు ఏవీ తొలగించబడలేదు} one {# గడువు ముగిసిన లాగ్ తొలగించబడింది} other {# గడువు ముగిసిన లాగ్‌లు తొలగించబడ్డాయి}}", "resetUsageData": "వినియోగ డేటాను రీసెట్ చేయండి", "resetUsageDataDesc": "మీరు ఎంత మునుపటి వరకు వినియోగం, అభ్యర్థన లాగ్‌లు మరియు విశ్లేషణల డేటాను తొలగించాలనుకుంటున్నారో ఎంచుకోండి. ప్రొవైడర్ కాన్ఫిగరేషన్, కనెక్షన్‌లు, API కీలు, కాంబోలు మరియు సెట్టింగ్‌లు భద్రపరచబడతాయి. ఈ చర్యను రద్దు చేయడం సాధ్యం కాదు.", @@ -7413,63 +7416,63 @@ "resetUsageFailed": "వినియోగ డేటాను రీసెట్ చేయడం విఫలమైంది", "reset": "రీసెట్ చేయండి", "resetting": "రీసెట్ చేస్తోంది...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", - "pricingSourceLiteLLM": "LiteLLM (Community)", - "clearSyncedPricingConfirm": "Clear all synced pricing data? Provider defaults will be used instead.", - "clearSyncedPricingFailed": "Failed to clear synced pricing", - "pricingSourceUser": "User Override", - "pageDescription": "Manage application settings, model aliases, pricing, and routing rules", - "pricingSyncStatus": "Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", - "pricingLoadFailed": "Failed to load pricing data", - "pricingSyncDescription": "Automatically sync model pricing from external sources to keep cost calculations accurate", - "clearSyncedPricingSuccess": "Synced pricing data cleared", - "clearSyncedPricingFailedWithReason": "Failed to clear pricing: {reason}", - "pricingSourceDefault": "Built-in Default", - "pricingSyncSuccess": "Pricing synced successfully", - "enableSyncError": "Failed to toggle pricing sync", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "contextOpt": "సందర్భానికి అనుకూలీకరించబడింది", + "contextOptDesc": "సందర్భ విండో అవసరాలు మరియు సంభాషణ పొడవు ఆధారంగా రూట్ చేస్తుంది", + "cacheOpt": "క్యాష్కు అనుకూలీకరించబడింది", + "cacheOptDesc": "అదే పునర్వినియోగ ప్రాంప్ట్ ప్రిఫిక్స్ను అదే ప్రొవైడర్ ఖాతాలో ఉంచుతుంది", + "priorityDesc": "క్రమానుగత ఫాల్బ్యాక్ — మొదట ప్రొవైడర్ 1ను, ఆపై ప్రొవైడర్ 2ను, తదితరంగా ప్రయత్నిస్తుంది", + "weightedDesc": "ప్రొవైడర్ల మధ్య శాతపు వెయిట్ల ప్రకారం ట్రాఫిక్ను పంపిణీ చేస్తుంది", + "modelRoutingTitle": "మోడల్ రూటింగ్ నియమాలు", + "modelRoutingDesc": "గ్లోబ్ నమూనాలను ఉపయోగించి మోడళ్లను నిర్దిష్ట కాంబోలకు స్వయంచాలకంగా రూట్ చేస్తుంది", + "addRule": "నియమాన్ని జోడించు", + "routeToCombo": "కాంబోకు రూట్ చేయి", + "selectCombo": "కాంబోను ఎంచుకోండి...", + "priorityHint": "ఎక్కువ విలువ = ముందుగా తనిఖీ చేయబడుతుంది. నిర్దిష్ట నమూనాల కోసం 10+ ఉపయోగించండి.", + "patternHint": "ఏవైనా అక్షరాల కోసం *, ఒక్క అక్షరం కోసం ? ఉపయోగించండి. అక్షరాల కేస్ను పరిగణించదు.", + "noRoutingRules": "రూటింగ్ నియమాలు ఏవీ కాన్ఫిగర్ చేయబడలేదు. డిఫాల్ట్గా అభ్యర్థనలు గ్లోబల్ కాంబోను ఉపయోగిస్తాయి.", + "routingRuleHint": "అభ్యర్థనలను స్వయంచాలకంగా రూట్ చేయడానికి claude-opus* -> frontier-combo వంటి నియమాన్ని జోడించండి.", + "deleteRoutingRule": "ఈ మోడల్ రూటింగ్ నియమాన్ని తొలగించాలా?", + "exactMatchMode": "ఖచ్చితమైన సరిపోలిక", + "wildcardPatternMode": "వైల్డ్కార్డ్ నమూనా", + "exactMatchModeDesc": "వాడుకలో లేని లేదా పేరు మార్చబడిన మోడల్ IDల కోసం ఖచ్చితమైన అలియాస్లను ఉపయోగించండి.", + "wildcardPatternModeDesc": "మోడళ్ల సమూహాన్ని ఒకే లక్ష్యానికి మ్యాప్ చేయాల్సి ఉన్నప్పుడు * మరియు ?తో వైల్డ్కార్డ్ అలియాస్లను ఉపయోగించండి.", + "noExactAliasesConfigured": "ఖచ్చిత-సరిపోలిక అలియాస్లు ఏవీ కాన్ఫిగర్ చేయబడలేదు.", + "wildcardRulesTitle": "వైల్డ్కార్డ్ నియమాలు", + "noWildcardAliasesConfigured": "వైల్డ్కార్డ్ అలియాస్లు ఏవీ కాన్ఫిగర్ చేయబడలేదు.", + "overview": "అవలోకనం", + "unknownError": "తెలియని లోపం", + "pricingSourceLiteLLM": "LiteLLM (కమ్యూనిటీ)", + "clearSyncedPricingConfirm": "సింక్ చేసిన మొత్తం ధరల డేటాను క్లియర్ చేయాలా? బదులుగా ప్రొవైడర్ డిఫాల్ట్లు ఉపయోగించబడతాయి.", + "clearSyncedPricingFailed": "సింక్ చేసిన ధరలను క్లియర్ చేయడం విఫలమైంది", + "pricingSourceUser": "వినియోగదారు ఓవర్రైడ్", + "pageDescription": "అప్లికేషన్ సెట్టింగ్లు, మోడల్ మారుపేర్లు, ధరలు మరియు రూటింగ్ నియమాలను నిర్వహించండి", + "pricingSyncStatus": "సింక్ స్థితి", + "whitelist": "అనుమతి జాబితా", + "syncDisabled": "సింక్ నిలిపివేయబడింది", + "pricingLoadFailed": "ధరల డేటాను లోడ్ చేయడం విఫలమైంది", + "pricingSyncDescription": "ఖర్చు లెక్కింపులను ఖచ్చితంగా ఉంచడానికి బాహ్య మూలాల నుండి మోడల్ ధరలను స్వయంచాలకంగా సింక్ చేయండి", + "clearSyncedPricingSuccess": "సింక్ చేసిన ధరల డేటా తొలగించబడింది", + "clearSyncedPricingFailedWithReason": "ధరలను తొలగించడం విఫలమైంది: {reason}", + "pricingSourceDefault": "అంతర్నిర్మిత డిఫాల్ట్", + "pricingSyncSuccess": "ధరలు విజయవంతంగా సింక్ అయ్యాయి", + "enableSyncError": "ధరల సింక్ను టోగుల్ చేయడం విఫలమైంది", + "syncEnabled": "సింక్ ప్రారంభించబడింది", + "blacklist": "నిషేధిత జాబితా", "pricingSourceModelsDev": "Models.dev", - "syncedModels": "Synced Models", - "budget": "Budget", - "pricingSyncTitle": "Pricing Sync", - "pricingResetFailedWithReason": "Failed to reset pricing: {reason}", - "tab": "Tab", - "pricingSavedProvider": "Pricing saved for {provider}", - "pricingSyncFailed": "Pricing sync failed", - "pricingSaveFailedWithReason": "Failed to save pricing: {reason}", - "pricingResetProvider": "Pricing reset for {provider}", - "nextSync": "Next Sync", - "pricingSyncFailedWithReason": "Pricing sync failed: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "syncedModels": "సింక్ చేసిన మోడళ్లు", + "budget": "బడ్జెట్", + "pricingSyncTitle": "ధరల సింక్", + "pricingResetFailedWithReason": "ధరలను రీసెట్ చేయడం విఫలమైంది: {reason}", + "tab": "ట్యాబ్", + "pricingSavedProvider": "{provider} కోసం ధరలు సేవ్ చేయబడ్డాయి", + "pricingSyncFailed": "ధరల సింక్ విఫలమైంది", + "pricingSaveFailedWithReason": "ధరలను సేవ్ చేయడం విఫలమైంది: {reason}", + "pricingResetProvider": "{provider} కోసం ధరలు రీసెట్ చేయబడ్డాయి", + "nextSync": "తదుపరి సింక్", + "pricingSyncFailedWithReason": "ధరల సింక్ విఫలమైంది: {reason}", + "clearSyncedPricing": "సింక్ చేసిన ధరలను తొలగించండి", + "compressionTitle": "ప్రాంప్ట్ కుదింపు", + "compressionDesc": "ప్రొవైడర్లకు పంపే ముందు ప్రాంప్ట్లను కుదించడం ద్వారా టోకెన్ వినియోగాన్ని తగ్గించండి", "compressionGuidanceFullGuideLink": "పూర్తి కంప్రెషన్ గైడ్", "compressionGuidanceShow": "వివరాలు", "compressionGuidanceHide": "వివరాలను దాచండి", @@ -7485,13 +7488,13 @@ "tokenSaverInputCompressionDesc": "కోడ్, URLలు మరియు ఉద్దేశాన్ని భద్రపరుస్తూనే అర్హత ఉన్న చాట్ హిస్టరీని తిరిగి రాయండి.", "tokenSaverFineTunePrefix": "ప్రతి ఇంజిన్‌ను ఇక్కడ ఫైన్-ట్యూన్ చేయండి", "tokenSaverFineTuneSuffix": "లేదా ప్రతి అభ్యర్థనకు ఇంజిన్‌లను ఇక్కడ కలపండి", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", + "compressionMode": "కుదింపు మోడ్", + "compressionModeOff": "ఆఫ్", + "compressionModeOffDesc": "ఎటువంటి కుదింపు వర్తించదు", + "compressionModeLite": "లైట్", + "compressionModeLiteDesc": "ఖాళీ స్థలాలు మరియు ఖాళీ పంక్తుల తగ్గింపు", + "compressionModeStandard": "ప్రామాణికం (Caveman)", + "compressionModeStandardDesc": "30+ నమూనాలతో నియమ-ఆధారిత కుదింపు; కోడ్ బ్లాక్లు మరియు URLsను యథాతథంగా ఉంచుతుంది", "compressionModeAggressive": "దూకుడు", "compressionModeAggressiveDesc": "గరిష్ట పొదుపు కోసం సారాంశం + సాధనం ఫలితం కుదింపు + ప్రగతిశీల వృద్ధాప్యం", "compressionModeUltra": "అల్ట్రా", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "ప్రతి వృద్ధాప్య శ్రేణిలో ఉంచబడిన ఇటీవలి సందేశాల సంఖ్య (అధిక = మరింత సంరక్షించబడినది)", "compressionToolStrategies": "సాధన ఫలితాల వ్యూహాలు", "compressionToolStrategiesDesc": "విభిన్న సాధన ఫలితాల రకాల కోసం కుదింపు వ్యూహాలను టోగుల్ చేయండి", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "సాధారణ సెట్టింగ్లు", + "compressionAutoTrigger": "ఆటో-ట్రిగర్ పరిమితి", + "compressionCacheTTL": "క్యాష్ TTL", + "compressionPreserveSystem": "సిస్టమ్ ప్రాంప్ట్ను యథాతథంగా ఉంచండి", "compressionPreserveSystemAlways": "ఎల్లప్పుడూ", "compressionPreserveSystemWhenNoCache": "కాష్ లేనప్పుడు", "compressionPreserveSystemNever": "ఎప్పుడూ వద్దు", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "సేవ్ చేయబడింది", "compressionExclusionsCount": "{count, plural, one {# మినహాయింపు} other {# మినహాయింపులు}} కాన్ఫిగర్ చేయబడింది", "compressionExclusionsEmpty": "ఎలాంటి మినహాయింపులు కాన్ఫిగర్ చేయబడలేదు — ప్రతి మోడల్/ఎండ్‌పాయింట్ కంప్రెషన్‌కు అర్హత కలిగి ఉంది (డిఫాల్ట్ ప్రవర్తన).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman ఇంజిన్ కాన్ఫిగరేషన్", + "compressionCavemanConfigDesc": "నియమ-ఆధారిత కంప్రెషన్ ఇంజిన్ను మెరుగ్గా సర్దుబాటు చేయండి", "compressionCavemanPanelHint": "దీని ఆన్/ఆఫ్ మరియు స్థాయి ప్యానెల్‌లో సెట్ చేయబడతాయి:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "సందేశ పాత్రలను కంప్రెస్ చేయండి", + "compressionRoleUser": "వినియోగదారు", + "compressionRoleAssistant": "సహాయకుడు", + "compressionRoleSystem": "సిస్టమ్", + "compressionMinLength": "కనిష్ఠ సందేశ నిడివి", + "compressionSkipRules": "కంప్రెషన్ నియమాలను దాటవేయండి", + "compressionSkipRulesDesc": "కంప్రెషన్ సమయంలో నియమాలను దాటవేయడానికి వాటిపై క్లిక్ చేయండి", + "compressionPreservePatterns": "నమూనాలను యథాతథంగా ఉంచండి", + "compressionPreservePatternsDesc": "ఎప్పటికీ కంప్రెస్ చేయని Regex నమూనాలు (పంక్తికి ఒకటి)", + "compressionLogTitle": "కంప్రెషన్ లాగ్", + "compressionLogEmpty": "ఇంకా కంప్రెస్ చేసిన అభ్యర్థనలు లేవు. కంప్రెషన్ ప్రారంభించబడి అభ్యర్థనలు ప్రాసెస్ చేయబడినప్పుడు కంప్రెషన్ గణాంకాలు ఇక్కడ కనిపిస్తాయి.", "minutes": "నిమిషాలు", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "కమాండ్-అవగాహనతో కూడిన టూల్ అవుట్పుట్ ఫిల్టరింగ్", + "compressionModeCodexResponses": "Responses టూల్ అవుట్పుట్", + "compressionModeCodexResponsesDesc": "అర్హత కలిగిన shell, patch, search, build మరియు JSON అవుట్పుట్ల కోసం పరిమిత కంప్రెషన్", + "compressionModeStacked": "స్టాక్డ్", + "compressionModeStackedDesc": "RTK టూల్-అవుట్పుట్ ఫిల్టరింగ్ తర్వాత Caveman సందేశ కంప్రెషన్", + "qdrantTitle": "Qdrant (వెక్టర్ మెమరీ)", + "qdrantDesc": "ఐచ్ఛికం. వేగవంతమైన రిట్రీవల్ కోసం బాహ్య వెక్టర్ డేటాబేస్లో సెమాంటిక్ మెమరీలను ఇండెక్స్ చేస్తుంది.", + "qdrantStatusActive": "సక్రియం", + "qdrantStatusError": "లోపం", + "qdrantStatusDisabled": "నిలిపివేయబడింది", + "qdrantEnable": "Qdrantను ప్రారంభించండి", + "qdrantEnableDesc": "ప్రారంభించినప్పుడు, మెమరీలను రిట్రీవ్ చేయడానికి సెమాంటిక్/హైబ్రిడ్ వ్యూహం Qdrantను ఉపయోగించగలదు.", + "qdrantTesting": "పరీక్షిస్తోంది...", + "qdrantTestConnection": "కనెక్షన్ను పరీక్షించండి", + "qdrantSaved": "కాన్ఫిగరేషన్ సేవ్ చేయబడింది", + "qdrantSaveError": "కాన్ఫిగరేషన్ను సేవ్ చేయడం విఫలమైంది", + "qdrantHostHint": "పోర్ట్ లేకుండా. ఉదాహరణ: 127.0.0.1 లేదా http://qdrant", + "qdrantPort": "పోర్ట్", + "qdrantPortHint": "Qdrant డిఫాల్ట్: 6333", + "qdrantCollectionHint": "మెమరీ పాయింట్లు నిల్వ చేయబడే స్థానం.", + "qdrantEmbeddingModel": "ఎంబెడింగ్ మోడల్", + "qdrantHelpTitle": "త్వరిత సెటప్ సహాయం", + "qdrantHelpQuickTitle": "త్వరిత సెటప్ (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. హోస్ట్: Qdrant IP/URL, పోర్ట్: 6333, కలెక్షన్: omniroute_memory.", + "qdrantHelpStep2": "2. nvidia/llama-nemotron-embed-vl-1b-v2:free ఉపయోగిస్తుంటే, కలెక్షన్ డైమెన్షన్ 2048ను ఉపయోగించండి.", + "qdrantHelpStep3": "3. మోడల్ ఫీల్డ్: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. సేవ్ చేసి, కనెక్షన్ను పరీక్షించి, ఆపై శోధనను పరీక్షించండి.", + "qdrantEmbeddingQuickSelect": "కనుగొన్న మోడళ్ల నుండి త్వరగా ఎంచుకోండి...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "ఫార్మాట్: provider/model. ప్రొవైడర్ క్రెడెన్షియల్ తప్పనిసరిగా కాన్ఫిగర్ చేయాలి.", + "qdrantApiKeyPlaceholderKeep": "(ప్రస్తుత కీని అలాగే ఉంచడానికి ఖాళీగా వదిలేయండి)", + "qdrantApiKeyPlaceholderOptional": "(ఉపయోగించకపోతే ఖాళీగా వదిలేయండి)", + "qdrantSaveHint": "చిట్కా: host/port/collection/modelను సవరించి, సేవ్ క్లిక్ చేయండి. API కీ ఐచ్ఛికం.", + "qdrantSearchTestTitle": "శోధన పరీక్ష", + "qdrantSearchTestDesc": "ఎంబెడింగ్ను రూపొందించి Qdrantలో శోధిస్తుంది.", + "qdrantSearchPlaceholder": "ఉదాహరణ: వినియోగదారు ప్రాధాన్యతలు, చరిత్ర మొదలైనవి", + "qdrantNoResults": "ఫలితాలు లేవు (లేదా Qdrant కాన్ఫిగర్ చేయబడలేదు).", + "qdrantCleanupTitle": "నిల్వ వ్యవధి మరియు శుభ్రపరచడం", + "qdrantCleanupDesc": "దీని ఆధారంగా గడువు ముగిసిన మరియు పాత పాయింట్లను తొలగిస్తుంది", + "searching": "శోధిస్తోంది...", + "cleaning": "శుభ్రపరుస్తోంది...", + "cleanNow": "ఇప్పుడే శుభ్రపరచండి", "optional": "ఐచ్ఛికం", "current": "ప్రస్తుత", "remove": "తొలగించు", @@ -7600,19 +7603,19 @@ "resilienceScope": "పరిధి:", "resilienceTrigger": "ట్రిగ్గర్:", "resilienceEffect": "ప్రభావం:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "అభ్యర్థన క్యూ & రేటు", + "resilienceAutoEnableApiKeyProviders": "API-key ప్రొవైడర్ల కోసం స్వయంచాలకంగా ప్రారంభించండి", + "resilienceRequestsPerMinute": "నిమిషానికి అభ్యర్థనలు", + "resilienceMinTimeBetweenRequests": "అభ్యర్థనల మధ్య కనిష్ఠ సమయం", + "resilienceConcurrentRequests": "ఏకకాల అభ్యర్థనలు", + "resilienceConnectionScopeConcurrentRequests": "కనెక్షన్/కోటా పరిధికి ఏకకాల అభ్యర్థనలు", + "resilienceGlobalConcurrentRequests": "గ్లోబల్ ఏకకాల అప్స్ట్రీమ్ అభ్యర్థనలు (0 = నిలిపివేయబడింది)", "resilienceMaxQueueWaitTime": "గరిష్ట క్యూ నిరీక్షణ సమయం", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "ప్రాథమిక కూల్డౌన్", + "resilienceUseUpstreamRetryHints": "అప్స్ట్రీమ్ రీట్రై సూచనలను ఉపయోగించండి", + "resilienceDefaultPerProvider": "డిఫాల్ట్ (ప్రతి ప్రొవైడర్కు)", + "resilienceAlwaysOn": "ఎల్లప్పుడూ ఆన్", + "resilienceAlwaysOff": "ఎల్లప్పుడూ ఆఫ్", "routingRemoveEntry": "ఎంట్రీని తీసివేయండి", "routingNeedlesSubstrings": "సూదులు (సరిపోలడానికి సబ్‌స్ట్రింగ్‌లు)", "routingCaseSensitive": "కేస్ సెన్సిటివ్", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "సంగ్రహించిన వివరణ అసలు అభ్యర్థనలోకి తిరిగి ఇంజెక్ట్ చేయడానికి ముందు విజన్ మోడల్‌కు పంపబడుతుంది.", "visionBridgeTimeoutMs": "గడువు ముగిసింది (మిసె)", "visionBridgeMaxImagesPerRequest": "ప్రతి అభ్యర్థనకు గరిష్ట చిత్రాలు", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "గరిష్ఠ బ్యాక్ఆఫ్ దశలు", + "resilienceProviderBreakerTitle": "ప్రతి ప్రొవైడర్కు సర్క్యూట్ బ్రేకర్", + "resilienceFailureThreshold": "వైఫల్య పరిమితి", + "resilienceDegradationThreshold": "క్షీణత పరిమితి", "resilienceResetTimeout": "గడువు ముగిసింది", "resilienceFailureThresholdLabel": "వైఫల్యం థ్రెషోల్డ్", "resilienceResetTimeoutLabel": "గడువు ముగిసింది", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "కనెక్షన్ కూల్డౌన్", "resilienceUseUpstreamRetryHintsLabel": "అప్‌స్ట్రీమ్ మళ్లీ ప్రయత్నించే సూచనలను ఉపయోగించండి", "resilienceUseUpstream429BreakerLabel": "అప్‌స్ట్రీమ్ 429 సూచనలను ఉపయోగించండి (బ్రేకర్)", "resilienceMaxBackoffStepsLabel": "గరిష్ట బ్యాక్‌ఆఫ్ దశలు", "resilienceYes": "అవును", "resilienceNo": "నం", - "resilienceDefault": "Default", + "resilienceDefault": "డిఫాల్ట్", "storageDatabaseBackupRetention": "డేటాబేస్ బ్యాకప్ నిలుపుదల", "storageDatabaseBackups": "డేటాబేస్ బ్యాకప్‌లు", "storageBackupRetentionDescription": "ఆటోమేటిక్ SQLite బ్యాకప్‌లు ఇందులో నిల్వ చేయబడతాయి", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "లెగసీ JSON విజయవంతంగా దిగుమతి చేయబడింది!", "jsonImportFailed": "JSON దిగుమతి చేయడం విఫలమైంది", "jsonImportError": "JSON దిగుమతి సమయంలో లోపం ఏర్పడింది", + "jsonImportAuthRequired": "పాత JSON కాన్ఫిగరేషన్ను దిగుమతి చేయడానికి ప్రామాణీకరణ అవసరం. దయచేసి ముందుగా సైన్ ఇన్ చేయండి లేదా సెటప్ను పూర్తి చేయండి.", + "databaseSettingsAuthRequiredTitle": "ప్రామాణీకరణ అవసరం", + "databaseSettingsAuthRequiredBody": "డేటాబేస్ సెట్టింగ్లు మరియు JSON దిగుమతి ప్రామాణీకరించబడిన అడ్మిన్కు మాత్రమే అందుబాటులో ఉంటాయి. వాటిని వీక్షించడానికి మరియు సవరించడానికి సైన్ ఇన్ చేయండి లేదా సెటప్ను పూర్తి చేయండి.", + "databaseSettingsAuthRequiredCta": "సైన్ ఇన్", "storagePurgeData": "డేటాను ప్రక్షాళన చేయండి", "storagePurgeDataDesc": "రిటెన్షన్ తనిఖీలను వర్తింపజేయకుండా వెంటనే అన్ని రికార్డులను తొలగించండి. జాగ్రత్తగా ఉపయోగించండి.", "storageRetentionCleanup": "రిటెన్షన్ సెట్టింగ్‌లు", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "మోడ్: {mode}", "compressionAdaptiveOff": "అడాప్టివ్ కాంటెక్స్ట్ బడ్జెట్: ఆఫ్ (లెగసీ ఆటో-ట్రిగ్గర్)", "compressionAdaptiveTarget": "అడాప్టివ్ ({mode}, పాలసీ: {policy}) — టార్గెట్ ≈ {target, number} టోకెన్‌లు ({contextLimit, number}-టోకెన్ విండో కోసం)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "అనుకూల సందర్భ బడ్జెట్", + "compressionAdaptiveModeOff": "ఆఫ్ (పాత ఆటో-ట్రిగ్గర్)", + "compressionAdaptiveModeFloor": "కనిష్ఠ పరిమితి (ఎల్లప్పుడూ సరిపోవడాన్ని నిర్ధారిస్తుంది)", + "compressionAdaptiveModeReplace": "ఆటో-ట్రిగ్గర్ను భర్తీ చేయండి", + "compressionAdaptivePolicy": "బడ్జెట్ విధానం", + "compressionAdaptivePolicyReserve": "అవుట్పుట్ కోసం రిజర్వ్ చేయండి", + "compressionAdaptivePolicyPercentage": "విండో శాతం", + "compressionAdaptivePolicyAbsolute": "నిర్దిష్ట టోకెన్ బడ్జెట్", "compressionOutputStylesDescription": "ప్రొవైడర్ అవుట్‌పుట్‌ను తిరిగి రాయకుండా రెస్పాన్స్-షేపింగ్ సూచనలను ఇంజెక్ట్ చేయండి. స్వేచ్ఛగా కలపండి.", "mcpAccessibilityDescription": "MCP టూల్ అవుట్‌పుట్‌లను స్కోప్ చేస్తుంది (ప్రత్యేక స్టోర్).", "compressionStylesTileSummary": "{tokens, number} టోకెన్‌లు ఆదా చేయబడ్డాయి · {runs, plural, one {# రన్ స్టైల్ చేయబడింది} other {# రన్‌లు స్టైల్ చేయబడ్డాయి}}", @@ -7866,8 +7873,8 @@ "description": "కమాండ్-అవుట్‌పుట్ ఫిల్టరింగ్." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses టూల్ అవుట్పుట్", + "description": "మద్దతు ఉన్న Responses టూల్ అవుట్పుట్ల కోసం సురక్షిత కంప్రెషన్." }, "headroom": { "label": "హెడ్‌రూమ్", @@ -7908,12 +7915,12 @@ "description": "YAGNI లాడర్: చిన్న పని మార్పు, అభ్యర్థించని అబ్‌స్ట్రాక్షన్‌లు లేవు." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (బద్ధకస్తుడైన సీనియర్ డెవలపర్)", + "description": "బద్ధకస్తుడైన సీనియర్ డెవలపర్ క్రమశిక్షణ: YAGNI నిచ్చెనను ఎక్కండి, మూల కారణాన్ని పరిష్కరించండి, పనిచేసే అతి చిన్న diffను ఉపయోగించండి." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "నాకు ADHD ఉంది (చర్య-ముందు)", + "description": "చర్య-ముందు అవుట్పుట్: తదుపరి చర్యను ముందుగా చూపించండి, దశలకు సంఖ్యలు ఇవ్వండి, ఒక స్పష్టమైన తదుపరి దశను ఇవ్వండి, ఉపోద్ఘాతం వద్దు." }, "terse-cjk": { "label": "సంక్షిప్త CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI ఫాల్‌బ్యాక్", "cliproxyapiEnableFallback": "CLIProxyAPI ఫాల్‌బ్యాక్‌ని ప్రారంభించండి", "cliproxyapiUrl": "CLIProxyAPI URL", + "headroomProxyTitle": "Headroom ప్రాక్సీ", + "headroomProxyDesc": "ఐచ్ఛిక Headroom టోకెన్-సేవర్ ప్రాక్సీ URL. ఖాళీగా ఉంటే HEADROOM_URL లేదా http://localhost:8787 ఉపయోగించబడుతుంది.", + "headroomProxyUrl": "Headroom URL", + "headroomProxyUrlHint": "లూప్బ్యాక్ URLలను ఈ పేజీ నుండి ప్రారంభించవచ్చు. బాహ్య URLలు కేవలం తనిఖీ చేయబడతాయి.", + "headroomProxySave": "సేవ్ చేయండి", + "headroomProxyStart": "ప్రారంభించండి", + "headroomProxyStop": "ఆపండి", + "headroomProxyExternalHint": "ఈ URL లూప్బ్యాక్ కాదు, కాబట్టి OmniRoute స్థానిక CLIని ప్రారంభించదు.", "cliproxyapiStatus": "CLIProxyAPI స్థితి", "cliproxyapiNotDetected": "గుర్తించబడలేదు", "cliproxyapiImportAuthTitle": "CLIProxyAPI నుండి ఖాతాలను దిగుమతి చేయండి", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "ప్రపంచవ్యాప్తంగా ఇంజెక్ట్ service_tier=OpenAI కోడెక్స్ అభ్యర్థనలకు ప్రాధాన్యత.", "codexFastTierHint": "ప్రారంభించబడినప్పుడు, OmniRoute ఇప్పటికే టైర్‌ను పేర్కొనని కనెక్షన్‌ల కోసం అవుట్‌బౌండ్ కోడెక్స్ అభ్యర్థనలకు service_tier=ప్రాధాన్యతను జోడిస్తుంది. ప్రాధాన్యతా స్థాయికి OpenAI ఎంటర్‌ప్రైజ్ API కీ లేదా ChatGPT-auth కోడెక్స్ పాత్ అవసరం; ఇతర కీలక రకాలు OpenAI నుండి టైర్-సంబంధిత ఎర్రర్‌ను అందుకుంటాయి. కోడెక్స్ ప్రొవైడర్ పేజీలోని ప్రతి-కనెక్షన్ సెట్టింగ్‌లు ప్రాధాన్యతనిస్తాయి.", "codexFastTierSaveError": "కోడెక్స్ ఫాస్ట్ టైర్ సెట్టింగ్‌ని అప్‌డేట్ చేయడంలో విఫలమైంది", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex కోటా ఆటో-పింగ్", + "codexAutoPingDesc": "ప్రతి కనెక్షన్కు ఎంపిక చేసుకోవచ్చు: Codex సెషన్ విండో రీసెట్ అయిన వెంటనే ఒక చిన్న అభ్యర్థనను పంపుతుంది, తద్వారా మీకు అవసరమైనప్పుడు అది కోల్డ్గా ఉండదు.", + "codexAutoPingWarning": "ప్రతి పింగ్కు కొద్దిపాటి వాస్తవ Codex కోటా వినియోగించబడుతుంది. డిఫాల్ట్గా ఆఫ్లో ఉంటుంది — మీరు చురుకుగా ఆధారపడే కనెక్షన్లకు మాత్రమే ప్రారంభించండి.", + "codexAutoPingSaveError": "Codex ఆటో-పింగ్ సెట్టింగ్ను నవీకరించడం విఫలమైంది", + "codexAutoPingToggleAria": "{connection} కోసం Codex కోటా ఆటో-పింగ్ను టాగుల్ చేయండి", "codexFastTierTierLabel": "సర్వీస్ టైర్", "codexFastTierTierPriority": "ప్రాధాన్యత", "codexFastTierTierFlex": "ఫ్లెక్స్", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "గ్లోబల్ తనిఖీ విరామం", "resilienceCredentialHealthEveryMinutes": "ప్రతి {minutes} నిమి", "resilienceCredentialHealthHint": "0 నేపథ్య స్కాన్‌ను ఆపుతుంది (గరిష్ఠం 1440 నిమి = 24 గం). స్వంత ఆరోగ్య తనిఖీ విలువ ఉన్న కనెక్షన్లు ఈ గ్లోబల్ డిఫాల్ట్‌ను విస్మరిస్తాయి; ఒక కనెక్షన్‌పై 0 గ్లోబల్ స్కాన్ ఆన్‌లో ఉన్నా దాన్ని మినహాయిస్తుంది.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "{provider} కోసం ఎల్లప్పుడూ ప్రారంభించబడి ఉంటుంది — OAuth ఖాతా భద్రతకు ఇది అవసరం; దీన్ని ఆఫ్ చేయలేరు.", + "forcedFingerprintBadge": "అవసరం", "sessionAffinityTitle": "సెషన్ అఫినిటీ", "sessionAffinityDesc": "ఏదైనా ప్రొవైడర్ కోసం, ఇన్ని సెకన్ల పాటు ఒకే ఖాతాలో ఒక సంభాషణను ఉంచుతుంది. 0 దీనిని నిలిపివేస్తుంది.", "sessionAffinityTtl": "అఫినిటీ TTL (సెకన్లు)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "కూల్‌డౌన్ పెరగడం ఆగిపోయే ముందు గరిష్ట బ్యాక్‌ఆఫ్ దశల సంఖ్య. చాలా కాన్గ్రిగేషన్‌లలో Max Cooldown పరిమితి మొదట చేరుకుంటుంది, దీనివల్ల Max Cooldown పెంచినప్పుడు ఇది భద్రతా పరిమితిగా మారుతుంది.", "disableSessionStickiness": "సెషన్ స్టిక్కీనెస్‌ను నిలిపివేయండి", "disableSessionStickinessDesc": "రౌండ్-రాబిన్ మరియు యాదృచ్ఛిక కాంబోలు మొదటి-సందేశం హ్యాష్ ద్వారా మొత్తం సంభాషణను ఒకే కనెక్షన్‌కు పిన్ చేయడానికి బదులుగా ప్రతి అభ్యర్థనపై వేరే కనెక్షన్‌కు మారుతాయి. మల్టీ-టర్న్ చాట్‌ల కోసం ప్రాంప్ట్-క్యాచీ హిట్‌లను అలాగే ఉంచడానికి దీనిని నిలిపివేయండి. ప్రతి కాంబో ఓవర్‌రైడ్‌లు ప్రాధాన్యతను కలిగి ఉంటాయి.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "ప్రాంప్ట్-క్యాష్ లోకాలిటీ రూటింగ్", + "promptCacheAffinityDesc": "హెల్త్ మరియు కోటా ఫెయిల్ఓవర్ను కొనసాగిస్తూనే, సరిపోలే ప్రాంప్ట్-క్యాష్ కీల కోసం అదే ప్రొవైడర్ ఖాతాకు ప్రాధాన్యం ఇవ్వండి.", + "reasoningTokenBuffer": "రీజనింగ్ టోకెన్ బఫర్", + "reasoningTokenBufferDesc": "తెలిసిన అవుట్పుట్ పరిమితిలో పూర్తి బఫర్ సరిపోయినప్పుడు మాత్రమే, తెలిసిన రీజనింగ్ మోడల్లకు max_tokens హెడ్రూమ్ను జోడించడానికి కాంబో రూటింగ్ను అనుమతించండి.", + "zeroLatencyOptimizations": "జీరో-లేటెన్సీ ఆప్టిమైజేషన్లు", + "zeroLatencyOptimizationsDesc": "హెడ్జింగ్, ప్రిడిక్టివ్ TTFT స్కిప్లు మరియు ప్రోయాక్టివ్ ఫాల్బ్యాక్ కంప్రెషన్ను ప్రారంభించండి. ఈ లేటెన్సీ ఫీచర్లు లక్ష్యాలతో పోటీపడకుండా లేదా ఫాల్బ్యాక్ అభ్యర్థనలను కంప్రెస్ చేయకుండా నిరోధించడానికి ఆఫ్లో ఉంచండి.", "credentialRedaction": "క్రెడెన్షియల్ రెడాక్షన్", "credentialRedactionDesc": "ప్రొవైడర్‌లకు పంపిన సందర్భం నుండి మరియు ప్రతిస్పందనల నుండి API కీలు, టోకెన్‌లు మరియు రహస్యాలను తొలగించండి.", "enableCredentialRedaction": "క్రెడెన్షియల్ రెడాక్షన్‌ను ప్రారంభించండి", "enableCredentialRedactionDesc": "సందేశాలు, టూల్ కాల్‌లు మరియు ప్రతిస్పందనల నుండి API కీలు, టోకెన్‌లు, ప్రైవేట్ కీలు మరియు JWTలను తొలగిస్తుంది.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "ఆటోమేటిక్ సింక్ నిలిపివేయబడింది", + "pricingAutoSyncEnabled": "స్వయంచాలక సమకాలీకరణ ప్రారంభించబడింది", "modalityBridgeIntro": "బహుళమాధ్యమ కంటెంట్ టెక్స్ట్-మాత్రమే మోడళ్లకు చేరకముందే దాన్ని టెక్స్ట్‌గా మార్చండి. విజన్, ఆడియో మరియు వీడియో బ్రిడ్జ్‌లు అందుబాటులో ఉన్నాయి మరియు కాన్ఫిగర్ చేయవచ్చు.", "modalityBridgeVisionTab": "దృష్టి", "modalityBridgeAudioTab": "ఆడియో", @@ -8346,7 +8361,7 @@ "routingCcBridgeName": "క్లాడ్-కోడ్ బ్రిడ్జ్", "routingCcBridgeDescription": "API కీలు ఉపయోగించి రీలే ఎండ్‌పాయింట్లు (anthropic-compatible-cc-*).", "routingCustomProviderDescription": "కస్టమ్ ప్రొవైడర్.", - "routingUnknownOpKind": "Unknown op kind: {kind}", + "routingUnknownOpKind": "తెలియని op రకం: {kind}", "routingInvalidJson": "చెల్లని JSON: {error}", "routingConfigMustBeObject": "కాన్ఫిగరేషన్ ఒక JSON వస్తువు కావాలి", "routingEnabledMustBeBoolean": "`enabled` నిజం లేదా అబద్ధం కావాలి", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "ఆరోగ్యం", "cliproxyapiPort": "పోర్ట్", "qdrantHost": "హోస్ట్", - "qdrantCollection": "సేకరణ", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "సేకరణ" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "RTK ఇంజిన్", + "description": "టూల్ అవుట్పుట్, టెర్మినల్ లాగ్లు మరియు బిల్డ్ ఫలితాల కోసం కమాండ్-అవగాహనతో కూడిన కంప్రెషన్.", + "enabled": "ప్రారంభించబడింది", + "intensity": "తీవ్రత", + "intensityMinimal": "కనిష్ఠం", + "intensityStandard": "ప్రామాణికం", + "intensityAggressive": "దూకుడు", + "toolResults": "టూల్ ఫలితాలు", + "assistantMessages": "అసిస్టెంట్ సందేశాలు", + "codeBlocks": "కోడ్ బ్లాక్లు", "filterCatalog": "ఫిల్టర్ కేటలాగ్", "filterCatalogDesc": "వర్గం వారీగా అవుట్‌పుట్ ఫిల్టర్‌లు అందుబాటులో ఉన్నాయి", "guidedConfig": "ఆకృతీకరణ", "guidedConfigDesc": "RTK మీ టెర్మినల్ అవుట్‌పుట్‌ని ఎలా ఫిల్టర్ చేస్తుందో సర్దుబాటు చేయండి", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "గరిష్ఠ పంక్తులు", + "maxChars": "గరిష్ఠ అక్షరాలు", "deduplicateThreshold": "డూప్లికేట్ థ్రెషోల్డ్", "customFilters": "కస్టమ్ ఫిల్టర్లు", "detectedType": "గుర్తించబడిన రకం", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "వైఫల్యాలు", "rawOutputAlways": "ఎల్లప్పుడూ", "rawOutputMaxBytes": "ముడి అవుట్‌పుట్ గరిష్ట బైట్‌లు", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "ఫిల్టర్ పరీక్ష", + "pasteOutput": "ఫిల్టరింగ్ను పరీక్షించడానికి టూల్ అవుట్పుట్ను అతికించండి...", "presetHigh": "దూకుడు", "presetLow": "కాంతి", "presetMaxChars": "గరిష్ట అవుట్‌పుట్ అక్షరాలు", "presetMaxLines": "గరిష్ట అవుట్‌పుట్ లైన్‌లు", "presetMedium": "ప్రామాణికం", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "అమలు చేయండి", + "result": "ఫలితం", + "previewEmpty": "RTK అవుట్పుట్ను ప్రివ్యూ చేయడానికి ఒక నమూనాను అమలు చేయండి.", + "detected": "గుర్తించబడింది", "masterSwitchOffAlert": "Token Saver మాస్టర్ స్విచ్ ఆఫ్ చేయబడింది — మీరు దీనిని Endpoint పేజీ నుండి ఆన్ చేసే వరకు ఈ సెట్టింగ్‌లు అభ్యర్థనలపై ప్రభావం చూపవు.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "ఫిల్టర్ చేసిన టోకెన్లు", + "filtersActive": "సక్రియ ఫిల్టర్లు", + "requests": "అభ్యర్థనలు", + "avgSavings": "సగటు ఆదా", "simpleMode": "సింపుల్", "advancedMode": "అధునాతనమైనది", "searchFilters": "ఫిల్టర్‌లను వెతకండి...", @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "కంప్రెషన్ కాంబోలు", + "description": "విభిన్న రూటింగ్ సందర్భాల కోసం ఇంజిన్లను ఎలా కలపాలో నిర్వచించండి.", + "createCombo": "కంప్రెషన్ కాంబోను సృష్టించండి", + "editCombo": "సవరించండి", + "deleteCombo": "తొలగించండి", + "deleteConfirm": "ఈ కంప్రెషన్ కాంబోను తొలగించాలా?", + "pipeline": "పైప్లైన్", + "addStep": "దశను జోడించండి", + "removeStep": "తీసివేయండి", + "name": "పేరు", + "descriptionField": "వివరణ", + "languagePacks": "భాషా ప్యాక్లు", + "outputMode": "అవుట్పుట్ మోడ్", + "assignToRouting": "రూటింగ్ కాంబోలకు కేటాయించండి", + "noAssignments": "అందుబాటులో రూటింగ్ కలయికలు లేవు", + "default": "డిఫాల్ట్", + "setAsDefault": "డిఫాల్ట్గా సెట్ చేయండి", + "save": "సేవ్ చేయండి", + "cancel": "రద్దు చేయండి", + "enabled": "ప్రారంభించబడింది", "loading": "లోడ్ అవుతోంది…", "hubTitle": "కంప్రెషన్ హబ్", "hubDescription": "గ్లోబల్‌గా ఏ కంప్రెషన్ ప్రొఫైల్ రన్ అవ్వాలో ఎంచుకోండి.", @@ -8661,6 +8668,8 @@ "contextEditingNote": "ప్రస్తుతం Claude (Anthropic) కి మాత్రమే అందుబాటులో ఉంది. ఇది ఒక డెలిగేటెడ్ మోడ్: ప్రొవైడర్ సర్వర్-సైడ్‌లో పాత టూల్-యూజ్ బ్లాక్‌లను క్లియర్ చేస్తుంది — మేము మెసేజ్‌ను తిరిగి రాయము. ఇది ఇతర ప్రొవైడర్‌లపై ప్రభావం చూపదు.", "namedCombos": "నేమ్డ్ కాంబోలు", "namedCombosDescription": "విభిన్న పైప్‌లైన్‌లను సేవ్ చేయండి మరియు వాటిని నిర్దిష్ట రూటింగ్ కాంబోలకు కేటాయించండి.", + "activeProfileMasterSwitchOffWarning": "మాస్టర్ \"Prompt Compression\" స్విచ్ను ఆన్ చేసే వరకు దిగువనున్న యాక్టివ్ ప్రొఫైల్ అమలు కాదు.", + "activeProfileMasterSwitchOffCta": "Settingsలో దీన్ని ఆన్ చేయండి", "comboNamePlaceholder": "కాంబో పేరు", "descriptionPlaceholder": "వివరణ", "nameRequired": "సేవ్ చేయడానికి ముందు కాంబో పేరును నమోదు చేయండి.", @@ -8674,9 +8683,7 @@ "languagePacksList": "భాషా ప్యాక్‌లు: {packs}", "dragToReorder": "దశను క్రమబద్ధీకరించడానికి డ్రాగ్ చేయండి", "engine": "ఇంజిన్", - "intensity": "తీవ్రత", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "తీవ్రత" }, "compressionStudio": { "noRun": "ఎటువంటి కంప్రెషన్ రన్ అందుబాటులో లేదు.", @@ -8705,7 +8712,7 @@ "run": "రన్ చేయండి", "laneRejected": "తిరస్కరించబడింది: {reason}", "error": "లోపం", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "కలిపిన పైప్లైన్ ప్రివ్యూ విఫలమైంది: {reason}", "combinedFlow": "కంబైన్డ్ ఫ్లో", "eachLayer": "ప్రతి లేయర్ విడివిడిగా", "diff": "వ్యత్యాసం", @@ -8780,27 +8787,27 @@ }, "enableTitle": "ఇంజిన్‌ను ఎనేబుల్ చేయండి", "enableDescription": "స్టాక్‌లో చివరిగా రన్ అవుతుంది (RTK/Caveman వచనాన్ని క్లీన్ చేసిన తర్వాత, OmniGlyph మిగిలిన భాగాన్ని చిత్రాలుగా మారుస్తుంది) మరియు omniglyph మోడ్ ద్వారా స్వతంత్రంగా కూడా రన్ అవుతుంది. ఇది ప్రివ్యూ మరియు ఎండ్-టు-ఎండ్ ధ్రువీకరణ పూర్తయ్యే వరకు డిఫాల్ట్‌గా ఆఫ్‌లోనే ఉంటుంది.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "కంప్రెషన్ ప్రొఫైల్", + "profileDescription": "ప్రొఫైల్ గరిష్ఠ పరిమితి మాత్రమే, కనిష్ఠ పరిమితి కాదు: మరింత కఠినమైన ప్రొఫైల్ను ఒక్కో దశ ఓవర్రైడ్తో సడలించలేరు. ఈ కోడ్బేస్పై కొలిచిన ప్రకారం: coding-safe లేదా balancedతో, ఇంకా హిస్టరీ పేరుకుపోని సెషన్ ఏదీ కంప్రెస్ చేయదు, ఎందుకంటే రెండూ కనిష్ఠ అక్షరాల థ్రెషోల్డ్ను పెంచి, సిస్టమ్ ప్రాంప్ట్, టూల్ స్కీమాలు మరియు టూల్ ఫలితాలను యథాతథంగా ఉంచుతాయి.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "దూకుడు (డిఫాల్ట్)", + "description": "ప్రచురించిన రసీదుల్లో కొలిచిన పాలసీ. సిస్టమ్ ప్రాంప్ట్, టూల్ డాక్యుమెంటేషన్ మరియు సాంద్రమైన హిస్టరీని ఇమేజ్ చేస్తుంది." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "సమతుల్యం", + "description": "లైవ్ స్థితిని యథాతథంగా ఉంచి, చివరి 8 మలుపులను రక్షిస్తుంది; పాత ముగిసిన హిస్టరీని మాత్రమే సంక్షిప్తం చేస్తుంది." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "కోడింగ్కు సురక్షితం", + "description": "అధికార సమాచారం, టూల్ స్కీమాలు మరియు లైవ్ టూల్ అవుట్పుట్ను యథాతథంగా ఉంచి, చివరి 12 మలుపులను రక్షిస్తుంది. సెషన్లో హిస్టరీ పేరుకుపోయే వరకు ఏదీ కంప్రెస్ చేయదు." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "పాస్త్రూ", + "description": "మార్పులు చేయకుండా రూట్ చేస్తుంది. ఇంజిన్ను దాటవేసి, అభ్యర్థనను యథాతథంగా ఫార్వర్డ్ చేస్తుంది." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph కంప్రెషన్ ప్రొఫైల్ను ఎంచుకోండి", "saved": "సేవ్ చేయబడింది.", "saveFailed": "సేవ్ చేయడం సాధ్యపడలేదు.", "enableAria": "OmniGlyph ఇంజిన్‌ను ఎనేబుల్ చేయండి", @@ -8901,38 +8908,38 @@ "save": "సేవ్ చేయండి" }, "contextCaveman": { - "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "title": "Caveman ఇంజిన్", + "description": "నియమాల ఆధారిత సందేశ కంప్రెషన్, భాషా ప్యాక్లు, విశ్లేషణలు మరియు అవుట్పుట్ మోడ్ నియంత్రణలు.", "advancedConfig": "అధునాతన కాన్ఫిగరేషన్", "advancedConfigDesc": "ఫైన్-ట్యూన్ కంప్రెషన్ ప్రవర్తన", "aggressiveSettings": "దూకుడు సెట్టింగ్‌లు", "aggressiveSettingsDesc": "సంభావ్య నాణ్యత ట్రేడ్-ఆఫ్‌లతో గరిష్ట కుదింపు", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "అభ్యర్థనలు", + "tokensSaved": "ఆదా చేసిన టోకెన్లు", + "savingsPercent": "ఆదా %", + "avgLatency": "సగటు లేటెన్సీ", + "languagePacks": "భాషా ప్యాక్లు", + "languagePacksDesc": "నిర్దిష్ట భాషల కోసం కంప్రెషన్ నియమాలను ప్రారంభించండి.", "labelAutoTrigger": "సందర్భం మించిపోయినప్పుడు స్వయంచాలకంగా కుదించండి", "labelCompressionRate": "కుదింపు బలం", "labelMaxTokens": "ప్రతి సందేశానికి లక్ష్య టోకెన్లు", "labelMinLength": "కనిష్ట సందేశం పొడవు", "labelMinSavings": "సేవ్ చేయడానికి కనీస టోకెన్లు", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "ప్రారంభించబడింది", + "autoDetect": "భాషను స్వయంచాలకంగా గుర్తించండి", + "rulesCount": "{count} నియమాలు", "inputCompressionTitle": "ఇన్‌పుట్ కంప్రెషన్", "inputCompressionDesc": "చాట్ హిస్టరీని తక్కువ పదాలతో తిరిగి రాయండి. ఇన్‌పుట్ టోకెన్‌లను ~50% తగ్గిస్తుంది.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "కంప్రెషన్ విశ్లేషణలు", + "noAnalytics": "ఇంకా కంప్రెషన్ విశ్లేషణలు లేవు.", "masterDisabledWarning": "Token Saver మాస్టర్ స్విచ్ OFF లో ఉంది — మీరు దీన్ని Compression Settings నుండి ఆన్ చేసే వరకు లేదా ఇక్కడ మార్చే వరకు ఈ సెట్టింగ్‌లు అభ్యర్థనలపై ప్రభావం చూపవు.", "outputMode": "అవుట్‌పుట్ మోడ్", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "అవుట్పుట్ మోడ్", "quickSettings": "త్వరిత సెట్టింగ్‌లు", "quickSettingsDesc": "ప్రారంభించడానికి ప్రాథమిక కుదింపు సెట్టింగ్‌లు", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "స్వయంచాలక స్పష్టత బైపాస్", + "bypassConditions": "బైపాస్ షరతులు", "bypassConditionsList": "భద్రత, తిరుగులేని, స్పష్టీకరణ, ఆర్డర్-సెన్సిటివ్", "simpleMode": "సింపుల్", "advancedMode": "అధునాతనమైనది", @@ -8944,52 +8951,52 @@ "ultraSettings": "అల్ట్రా సెట్టింగ్‌లు", "ultraSettingsDesc": "SLM-శక్తితో కూడిన సెమాంటిక్ కంప్రెషన్", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "క్లుప్తంగా స్పందించండి. సాంకేతిక పదాలు, కోడ్, లోపాలు, URLs మరియు ఐడెంటిఫైయర్లను యథాతథంగా ఉంచండి.", + "full": "అతి సంక్షిప్తంగా, కుదింపుగా స్పందించండి. మొత్తం సాంకేతిక సారాన్ని పరిరక్షించండి.", + "ultra": "సాధారణ సాంకేతిక సంక్షిప్తాలతో అతి క్లుప్తంగా స్పందించండి. ఖచ్చితమైన చిహ్నాలను అలాగే ఉంచండి." } }, "translator": { - "title": "Translator", - "metaTitle": "Translator Playground | OmniRoute", - "metaDescription": "Debug, test, and visualize API format translations between providers", - "playgroundTitle": "Translator Playground", - "playground": "Playground", - "realtime": "Real-Time Translation Activity", + "title": "అనువాదకం", + "metaTitle": "అనువాదక ప్లేగ్రౌండ్ | OmniRoute", + "metaDescription": "ప్రొవైడర్ల మధ్య API ఫార్మాట్ అనువాదాలను డీబగ్ చేయండి, పరీక్షించండి, విజువలైజ్ చేయండి", + "playgroundTitle": "అనువాదక ప్లేగ్రౌండ్", + "playground": "ప్లేగ్రౌండ్", + "realtime": "రియల్-టైమ్ అనువాద కార్యకలాపం", "chatTester": "Chat Tester", - "testBench": "Test Bench", - "liveMonitor": "Live Monitor", - "modeDescriptionPlayground": "Paste any API request body and see how OmniRoute translates it between provider formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", - "modeDescriptionChatTester": "Send real chat requests through OmniRoute and inspect the full round-trip: input, translated request, provider response, and translated output.", - "modeDescriptionTestBench": "Run predefined scenarios and compare compatibility across providers and models.", - "modeDescriptionLiveMonitor": "Watch translation events in real time as requests flow through OmniRoute.", - "modeDescriptionFallback": "Debug, test, and visualize how OmniRoute translates API requests between providers.", - "recentTranslations": "Recent Translations", - "noTranslations": "No translations yet", - "source": "Source", - "target": "Target", - "time": "Time", + "testBench": "టెస్ట్ బెంచ్", + "liveMonitor": "లైవ్ మానిటర్", + "modeDescriptionPlayground": "ఏదైనా API రిక్వెస్ట్ బాడీని పేస్ట్ చేసి, ప్రొవైడర్ ఫార్మాట్ల మధ్య OmniRoute దాన్ని ఎలా అనువదిస్తుందో చూడండి (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", + "modeDescriptionChatTester": "OmniRoute ద్వారా నిజమైన చాట్ రిక్వెస్ట్లను పంపి, పూర్తి రౌండ్-ట్రిప్ను పరిశీలించండి: ఇన్పుట్, అనువదించిన రిక్వెస్ట్, ప్రొవైడర్ రెస్పాన్స్, అనువదించిన అవుట్పుట్.", + "modeDescriptionTestBench": "ముందే నిర్వచించిన సందర్భాలను అమలు చేసి, ప్రొవైడర్లు మరియు మోడళ్ల మధ్య అనుకూలతను పోల్చండి.", + "modeDescriptionLiveMonitor": "రిక్వెస్ట్లు OmniRoute ద్వారా ప్రవహిస్తున్నప్పుడు అనువాద ఈవెంట్లను రియల్ టైమ్లో చూడండి.", + "modeDescriptionFallback": "ప్రొవైడర్ల మధ్య API రిక్వెస్ట్లను OmniRoute ఎలా అనువదిస్తుందో డీబగ్ చేయండి, పరీక్షించండి, విజువలైజ్ చేయండి.", + "recentTranslations": "ఇటీవలి అనువాదాలు", + "noTranslations": "ఇంకా అనువాదాలు లేవు", + "source": "మూలం", + "target": "లక్ష్యం", + "time": "సమయం", "model": "Model", "status": "Status", - "latency": "Latency", - "totalTranslations": "Total Translations", - "successful": "Successful", - "errors": "Errors", - "avgLatency": "Avg Latency", + "latency": "జాప్యం", + "totalTranslations": "మొత్తం అనువాదాలు", + "successful": "విజయవంతమైనవి", + "errors": "లోపాలు", + "avgLatency": "సగటు జాప్యం", "millisecondsShort": "{value}ms", "notAvailableSymbol": "—", - "liveAutoRefreshing": "Live — Auto-refreshing", - "paused": "Paused", - "eventsAppearHint": "Translation events appear here as requests flow through OmniRoute. Use any of these methods to generate events:", + "liveAutoRefreshing": "లైవ్ — ఆటో-రిఫ్రెష్ అవుతోంది", + "paused": "పాజ్ చేయబడింది", + "eventsAppearHint": "రిక్వెస్ట్లు OmniRoute ద్వారా ప్రవహిస్తున్నప్పుడు అనువాద ఈవెంట్లు ఇక్కడ కనిపిస్తాయి. ఈవెంట్లను రూపొందించడానికి వీటిలో ఏదైనా పద్ధతిని ఉపయోగించండి:", "chatTesterTab": "Chat Tester", "testBenchTab": "Test Bench", - "externalApiCalls": "External API calls", - "ideCliIntegrations": "IDE/CLI integrations", - "inMemoryNote": "Note: Events are stored in-memory and reset when the server restarts.", + "externalApiCalls": "బాహ్య API కాల్స్", + "ideCliIntegrations": "IDE/CLI ఇంటిగ్రేషన్లు", + "inMemoryNote": "గమనిక: ఈవెంట్లు ఇన్-మెమరీలో నిల్వ చేయబడతాయి, సర్వర్ రీస్టార్ట్ అయినప్పుడు రీసెట్ అవుతాయి.", "ok": "OK", "errorShort": "ERR", - "formatConverter": "Format Converter", - "formatConverterDescription": "Paste or type a JSON request body. The translator will auto-detect the source format and convert it to the target format. Use this to debug how OmniRoute translates requests between formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", + "formatConverter": "ఫార్మాట్ కన్వర్టర్", + "formatConverterDescription": "JSON రిక్వెస్ట్ బాడీని పేస్ట్ చేయండి లేదా టైప్ చేయండి. అనువాదకం మూల ఫార్మాట్ను ఆటో-డిటెక్ట్ చేసి, లక్ష్య ఫార్మాట్కు మారుస్తుంది. ఫార్మాట్ల మధ్య OmniRoute రిక్వెస్ట్లను ఎలా అనువదిస్తుందో డీబగ్ చేయడానికి దీన్ని ఉపయోగించండి (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (ఇంటర్మీడియట్) → {target}", "translationPathDirect": "{source} → {target} (ప్రత్యక్ష అనువాదకుడు)", "translationPathPassthrough": "అదే ఫార్మాట్ — అనువాదం అవసరం లేదు", @@ -9012,79 +9019,79 @@ "featureDirectPathsDesc": "కొన్ని ఫార్మాట్ జంటలు (క్లాడ్→జెమిని) ప్రత్యక్ష అనువాదకులను కలిగి ఉంటాయి, ఇవి OpenAI హబ్‌ను దాటవేసి, మరింత ఖచ్చితమైన అవుట్‌పుట్‌ను ఉత్పత్తి చేస్తాయి.", "featureImageMapping": "చిత్ర పరిమాణం మ్యాపింగ్", "featureImageMappingDesc": "API ఫార్మాట్‌ల మధ్య ఇమేజ్ డైమెన్షన్ కన్వెన్షన్‌లను అనువదిస్తుంది (ఉదా., OpenAI వివరాల స్థాయిలు → జెమిని కొలతలు).", - "input": "Input", - "output": "Output", + "input": "ఇన్పుట్", + "output": "అవుట్పుట్", "auto": "Auto", - "swapFormats": "Swap formats", - "translateAction": "Translate", - "clear": "Clear", - "inputPlaceholder": "Paste a request body here or select a template below...", - "exampleTemplates": "Example Templates", - "exampleTemplatesHint": "— Click to load", - "templateLoadHint": "Template loads the request in {format} format. Change Source Format to load in a different format.", - "compatibilityTester": "Compatibility Tester", - "compatibilityReport": "Compatibility Report", - "testBenchDescription": "Run predefined scenarios (Simple Chat, Tool Calling, etc.) to verify translation and provider compatibility. Select a source format and target provider, then run all tests to see a compatibility percentage. Use this to find which features work across providers.", - "targetProvider": "Target Provider", - "runAllTests": "Run All Tests", - "runTest": "Run Test", - "reRun": "Re-run", - "running": "Running...", - "passed": "passed", - "failed": "failed", - "passedIconLabel": "✅ Passed", - "chunks": "chunks", - "scenarioSimpleChat": "Simple Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "swapFormats": "ఫార్మాట్లను మార్చండి", + "translateAction": "అనువదించండి", + "clear": "క్లియర్ చేయండి", + "inputPlaceholder": "రిక్వెస్ట్ బాడీని ఇక్కడ పేస్ట్ చేయండి లేదా దిగువన టెంప్లేట్ను ఎంచుకోండి...", + "exampleTemplates": "ఉదాహరణ టెంప్లేట్లు", + "exampleTemplatesHint": "— లోడ్ చేయడానికి క్లిక్ చేయండి", + "templateLoadHint": "టెంప్లేట్ అభ్యర్థనను {format} ఫార్మాట్లో లోడ్ చేస్తుంది. వేరే ఫార్మాట్లో లోడ్ చేయడానికి మూల ఫార్మాట్ను మార్చండి.", + "compatibilityTester": "అనుకూలత పరీక్షకం", + "compatibilityReport": "అనుకూలత నివేదిక", + "testBenchDescription": "అనువాదం మరియు ప్రొవైడర్ అనుకూలతను ధృవీకరించడానికి ముందే నిర్వచించిన సందర్భాలను (సాధారణ చాట్, టూల్ కాలింగ్ మొదలైనవి) అమలు చేయండి. ఒక మూల ఫార్మాట్ మరియు లక్ష్య ప్రొవైడర్ను ఎంచుకుని, అనుకూలత శాతాన్ని చూడటానికి అన్ని పరీక్షలను అమలు చేయండి. ప్రొవైడర్ల మధ్య ఏ ఫీచర్లు పనిచేస్తాయో తెలుసుకోవడానికి దీన్ని ఉపయోగించండి.", + "targetProvider": "లక్ష్య ప్రొవైడర్", + "runAllTests": "అన్ని పరీక్షలను అమలు చేయండి", + "runTest": "పరీక్షను అమలు చేయండి", + "reRun": "మళ్లీ అమలు చేయండి", + "running": "అమలవుతోంది...", + "passed": "ఉత్తీర్ణమైంది", + "failed": "విఫలమైంది", + "passedIconLabel": "✅ ఉత్తీర్ణమైంది", + "chunks": "భాగాలు", + "scenarioSimpleChat": "సాధారణ చాట్", + "scenarioToolCalling": "టూల్ కాలింగ్", + "scenarioMultiTurn": "బహుళ-దశల సంభాషణ", "scenarioThinking": "Thinking", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "సిస్టమ్ ప్రాంప్ట్", + "scenarioStreaming": "స్ట్రీమింగ్", "templateNames": { - "simple-chat": "Simple Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "సాధారణ చాట్", + "tool-calling": "టూల్ కాలింగ్", + "multi-turn": "బహుళ-దశల సంభాషణ", "thinking": "Thinking", - "system-prompt": "System Prompt", - "streaming": "Streaming", + "system-prompt": "సిస్టమ్ ప్రాంప్ట్", + "streaming": "స్ట్రీమింగ్", "vision": "విజన్", "schema-coercion": "స్కీమా బలవంతం" }, "templateDescriptions": { - "simple-chat": "Basic text message", - "tool-calling": "Function/tool invocation", - "multi-turn": "Conversation with history", - "thinking": "Extended thinking / reasoning", - "system-prompt": "Complex system instructions", - "streaming": "SSE streaming request", + "simple-chat": "ప్రాథమిక టెక్స్ట్ సందేశం", + "tool-calling": "ఫంక్షన్/టూల్ అమలు", + "multi-turn": "చరిత్రతో కూడిన సంభాషణ", + "thinking": "విస్తృత ఆలోచన / తార్కిక విశ్లేషణ", + "system-prompt": "సంక్లిష్టమైన సిస్టమ్ సూచనలు", + "streaming": "SSE స్ట్రీమింగ్ అభ్యర్థన", "vision": "చిత్రం ఇన్‌పుట్‌తో మల్టీమోడల్ అభ్యర్థన", "schema-coercion": "నిర్మాణాత్మక-అవుట్‌పుట్ / JSON స్కీమా అమలు" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful assistant.", - "userGreeting": "Hello! How are you today?" + "system": "మీరు సహాయకరమైన అసిస్టెంట్.", + "userGreeting": "హలో! ఈ రోజు మీరు ఎలా ఉన్నారు?" }, "toolCalling": { - "userWeather": "What's the weather in São Paulo?", - "toolDescription": "Get current weather for a location", - "cityNameDescription": "City name" + "userWeather": "São Pauloలో వాతావరణం ఎలా ఉంది?", + "toolDescription": "ఒక ప్రదేశానికి ప్రస్తుత వాతావరణాన్ని పొందండి", + "cityNameDescription": "నగరం పేరు" }, "multiTurn": { - "system": "You are a coding assistant.", - "userInitial": "Write a function to sort an array in Python.", - "assistantExample": "Here's a simple sort function: ```python\ndef sort_array(arr): return sorted(arr)\n```", - "userFollowUp": "Now make it sort in descending order." + "system": "మీరు కోడింగ్ అసిస్టెంట్.", + "userInitial": "Pythonలో ఒక అర్రేను క్రమబద్ధీకరించడానికి ఒక ఫంక్షన్ను రాయండి.", + "assistantExample": "ఇదిగో ఒక సరళమైన క్రమబద్ధీకరణ ఫంక్షన్: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userFollowUp": "ఇప్పుడు అది అవరోహణ క్రమంలో క్రమబద్ధీకరించేలా చేయండి." }, "thinking": { - "question": "What is the sum of the first 100 prime numbers?" + "question": "మొదటి 100 ప్రధాన సంఖ్యల మొత్తం ఎంత?" }, "systemPrompt": { - "systemInstruction": "You are a senior software engineer specializing in distributed systems. Answer questions concisely using industry best practices. Always provide code examples when relevant. Format your responses using markdown.", - "question": "How do I implement a circuit breaker pattern?" + "systemInstruction": "మీరు పంపిణీ వ్యవస్థల్లో నైపుణ్యం కలిగిన సీనియర్ సాఫ్ట్వేర్ ఇంజనీర్. పరిశ్రమలోని ఉత్తమ పద్ధతులను ఉపయోగిస్తూ ప్రశ్నలకు సంక్షిప్తంగా సమాధానం ఇవ్వండి. సందర్భోచితంగా ఉన్నప్పుడు ఎల్లప్పుడూ కోడ్ ఉదాహరణలను అందించండి. మీ సమాధానాలను markdown ఉపయోగించి ఫార్మాట్ చేయండి.", + "question": "సర్క్యూట్ బ్రేకర్ నమూనాను ఎలా అమలు చేయాలి?" }, "streaming": { - "prompt": "Tell me a short story about a robot learning to paint." + "prompt": "చిత్రలేఖనం నేర్చుకుంటున్న ఒక రోబోట్ గురించి చిన్న కథ చెప్పండి." }, "vision": { "system": "మీరు చిత్రాలను ఖచ్చితంగా వివరించే సహాయకుడు.", @@ -9097,12 +9104,12 @@ "cityDescription": "ప్రశ్నించాల్సిన నగరం, ఉదా. 'టోక్యో' లేదా 'న్యూయార్క్'." } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", - "noTemplateForFormat": "No template for this format", - "translationFailed": "Translation failed: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "openaiCompatibleLabel": "OpenAI అనుకూలం", + "anthropicCompatibleLabel": "Anthropic అనుకూలం", + "noTemplateForFormat": "ఈ ఫార్మాట్కు టెంప్లేట్ లేదు", + "translationFailed": "అనువాదం విఫలమైంది: {error}", + "pipelineDebugger": "పైప్లైన్ డీబగ్గర్", + "translationPipeline": "అనువాద పైప్లైన్", "loading": "లోడ్ అవుతోంది…", "compressionOriginal": "ఒరిజినల్", "compressionCompressed": "కంప్రెస్ చేయబడింది", @@ -9111,44 +9118,44 @@ "pipelineStepsAria": "పైప్‌లైన్ దశలు", "copyIntermediateJson": "మధ్యంతర JSONని కాపీ చేయండి", "copyOutputJson": "అవుట్‌పుట్ JSONని కాపీ చేయండి", - "pipelineVisualization": "Pipeline visualization", - "pipelineVisualizationHint": "Send a message to see how your request flows through detection → translation → provider call.", - "chatTesterDescription": "Send messages as a specific client format and inspect each step of the translation pipeline.", - "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response", - "clickStepToInspect": "Click any step to inspect the data at that stage.", - "clientFormat": "Client Format", - "provider": "Provider", - "modelPlaceholder": "Select or type a model name...", - "sendMessageToSeePipeline": "Send a message to see the translation pipeline", - "chatMessageHintPrefix": "Your message will be formatted as a", - "chatMessageHintSuffix": "request, translated through the pipeline, and sent to the selected provider.", - "youWithFormat": "You ({format})", - "assistant": "Assistant", - "typeMessage": "Type a message...", - "send": "Send", - "clientRequest": "Client Request", - "clientRequestDescription": "The request body as your client would send it", - "formatDetected": "Format Detected", - "formatDetectedDescription": "OmniRoute auto-detects the API format from the request structure", - "openaiIntermediate": "OpenAI Intermediate", - "openaiIntermediateDescription": "All formats are first normalized to OpenAI format (the universal bridge)", - "providerFormat": "Provider Format", - "providerFormatDescription": "OpenAI format is translated to the provider's native format", - "providerResponse": "Provider Response", - "providerResponseRawDescription": "The raw response from the provider API", - "providerResponseSseDescription": "The raw SSE stream from the provider API", - "unexpectedError": "An unexpected error occurred", - "error": "Error", - "errorMessage": "Error: {message}", - "requestFailed": "Request failed", - "noTextExtracted": "(No text extracted)", + "pipelineVisualization": "పైప్లైన్ దృశ్యీకరణ", + "pipelineVisualizationHint": "గుర్తింపు → అనువాదం → ప్రొవైడర్ కాల్ ద్వారా మీ అభ్యర్థన ఎలా ప్రవహిస్తుందో చూడటానికి ఒక సందేశాన్ని పంపండి.", + "chatTesterDescription": "నిర్దిష్ట క్లయింట్ ఫార్మాట్లో సందేశాలను పంపి, అనువాద పైప్లైన్లోని ప్రతి దశను పరిశీలించండి.", + "chatTesterFlow": "క్లయింట్ అభ్యర్థన → ఫార్మాట్ గుర్తింపు → OpenAI మధ్యంతర రూపం → ప్రొవైడర్ ఫార్మాట్ → ప్రతిస్పందన", + "clickStepToInspect": "ఆ దశలోని డేటాను పరిశీలించడానికి ఏదైనా దశపై క్లిక్ చేయండి.", + "clientFormat": "క్లయింట్ ఫార్మాట్", + "provider": "ప్రొవైడర్", + "modelPlaceholder": "మోడల్ పేరును ఎంచుకోండి లేదా టైప్ చేయండి...", + "sendMessageToSeePipeline": "అనువాద పైప్లైన్ను చూడటానికి ఒక సందేశాన్ని పంపండి", + "chatMessageHintPrefix": "మీ సందేశం ఈ విధంగా ఫార్మాట్ చేయబడుతుంది:", + "chatMessageHintSuffix": "అభ్యర్థనగా రూపొందించబడి, పైప్లైన్ ద్వారా అనువదించబడి, ఎంచుకున్న ప్రొవైడర్కు పంపబడుతుంది.", + "youWithFormat": "మీరు ({format})", + "assistant": "సహాయకుడు", + "typeMessage": "సందేశాన్ని టైప్ చేయండి...", + "send": "పంపండి", + "clientRequest": "క్లయింట్ అభ్యర్థన", + "clientRequestDescription": "మీ క్లయింట్ పంపే విధంగా అభ్యర్థన బాడీ", + "formatDetected": "గుర్తించబడిన ఫార్మాట్", + "formatDetectedDescription": "అభ్యర్థన నిర్మాణం నుండి API ఫార్మాట్ను OmniRoute స్వయంచాలకంగా గుర్తిస్తుంది", + "openaiIntermediate": "OpenAI మధ్యంతర రూపం", + "openaiIntermediateDescription": "అన్ని ఫార్మాట్లు మొదట OpenAI ఫార్మాట్కు (సార్వత్రిక వారధి) సాధారణీకరించబడతాయి", + "providerFormat": "ప్రొవైడర్ ఫార్మాట్", + "providerFormatDescription": "OpenAI ఫార్మాట్ ప్రొవైడర్ యొక్క స్థానిక ఫార్మాట్కు అనువదించబడుతుంది", + "providerResponse": "ప్రొవైడర్ ప్రతిస్పందన", + "providerResponseRawDescription": "ప్రొవైడర్ API నుండి ముడి ప్రతిస్పందన", + "providerResponseSseDescription": "ప్రొవైడర్ API నుండి ముడి SSE స్ట్రీమ్", + "unexpectedError": "ఊహించని లోపం సంభవించింది", + "error": "లోపం", + "errorMessage": "లోపం: {message}", + "requestFailed": "అభ్యర్థన విఫలమైంది", + "noTextExtracted": "(టెక్స్ట్ ఏదీ సంగ్రహించబడలేదు)", "liveMonitorMemoryNote": "ఈవెంట్‌లు మెమరీలో నిల్వ చేయబడతాయి మరియు పునఃప్రారంభించినప్పుడు పోతాయి.", "liveMonitorMemoryCapNote": "గరిష్టంగా 200 ఈవెంట్‌లు ఉంచబడ్డాయి.", "eventSourcesLabel": "ఈవెంట్ మూలాలు:", "eventSourceTranslatorPage": "• అనువాదకుని పేజీ (చాట్ టెస్టర్, టెస్ట్ బెంచ్)", "eventSourceMainPipeline": "• ప్రధాన అభ్యర్థన పైప్‌లైన్ (CLI/IDE/API ట్రాఫిక్)", - "liveMonitorDescriptionPrefix": "Shows translation events as API calls flow through OmniRoute. Events come from the in-memory buffer (resets on restart). Use", - "liveMonitorDescriptionSuffix": ", or external API calls to generate events.", + "liveMonitorDescriptionPrefix": "OmniRoute ద్వారా API కాల్లు ప్రవహిస్తున్నప్పుడు అనువాద ఈవెంట్లను చూపుతుంది. ఈవెంట్లు ఇన్-మెమరీ బఫర్ నుండి వస్తాయి (పునఃప్రారంభించినప్పుడు రీసెట్ అవుతుంది). ఉపయోగించండి", + "liveMonitorDescriptionSuffix": ", లేదా ఈవెంట్లను రూపొందించడానికి బాహ్య API కాల్లను ఉపయోగించండి.", "streamTransformer": "స్ట్రీమ్ ట్రాన్స్ఫార్మర్", "modeDescriptionStreamTransformer": "ప్రతిస్పందనల ట్రాన్స్‌ఫార్మర్ ద్వారా చాట్ పూర్తిల SSE స్ట్రీమ్‌లను అమలు చేయండి.", "streamTransformerTitle": "ప్రతిస్పందనలు స్ట్రీమ్ ట్రాన్స్‌ఫార్మర్", @@ -9181,7 +9188,7 @@ "conceptHeadline": "మీ యాప్ ఒక API యొక్క \"భాష\"ను మాట్లాడుతుంది. మరొక ప్రొవైడర్‌ను ఉపయోగించడానికి ట్రాన్స్‌లేటర్ దానిని మారుస్తుంది.", "conceptDiagramAppLabel": "మీ యాప్", "conceptDiagramSourceLabel": "సోర్స్ ఫార్మాట్", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (హబ్)", "conceptDiagramTargetLabel": "టార్గెట్ ప్రొవైడర్", "conceptDiagramExampleApp": "ఉదా. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9259,7 +9266,7 @@ "streamTransformFailed": "స్ట్రీమ్‌ను మార్చడం విఫలమైంది" }, "usage": { - "title": "Usage", + "title": "వినియోగం", "grokExtraUsageCredits": "అదనపు వినియోగ క్రెడిట్స్", "grokAutoTopUp": "ఆటో టాప్-అప్", "grokAutoTopUpUnavailable": "అందుబాటులో లేదు", @@ -9277,66 +9284,66 @@ "kiloPassRemaining": "మిగిలినది", "kiloPassRenews": "{count} రోజుల్లో పునరుద్ధరించబడుతుంది", "kiloPassUsageLabel": "ఈ నెల వినియోగం", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "అదనపు వినియోగ క్రెడిట్లు", + "kimiExtraUsage": "అదనపు వినియోగం", + "kimiExtraUsageEnabled": "ప్రారంభించబడింది", + "kimiExtraUsageDisabled": "నిలిపివేయబడింది", + "kimiExtraUsageFrozen": "స్తంభింపజేయబడింది", + "kimiExtraUsageUnavailable": "అందుబాటులో లేదు", + "kimiMonthlyUsed": "ఈ నెల ఉపయోగించినది", + "kimiMonthlyLimit": "నెలవారీ పరిమితి", + "kimiMonthlyLimitUnlimited": "అపరిమితం", + "kimiAdditionalCredits": "అదనపు క్రెడిట్లు", + "loggerTab": "లాగర్", "proxyTab": "Proxy", - "budgetManagement": "Budget Management", - "budgetSaved": "Budget limits saved", - "budgetSaveFailed": "Failed to save budget", - "loadingBudgetData": "Loading budget data...", - "noApiKeysTitle": "No API Keys", - "noApiKeysDescription": "Add API keys first to set up budget limits.", - "apiKey": "API Key", - "todaysSpend": "Today's Spend", - "thisMonth": "This Month", - "setLimits": "Set Limits", - "dailyLimitUsd": "Daily Limit (USD)", - "monthlyLimitUsd": "Monthly Limit (USD)", - "warningThresholdPercent": "Warning Threshold (%)", - "dailyLimitPlaceholder": "e.g. 5.00", - "monthlyLimitPlaceholder": "e.g. 50.00", + "budgetManagement": "బడ్జెట్ నిర్వహణ", + "budgetSaved": "బడ్జెట్ పరిమితులు సేవ్ చేయబడ్డాయి", + "budgetSaveFailed": "బడ్జెట్ను సేవ్ చేయడం విఫలమైంది", + "loadingBudgetData": "బడ్జెట్ డేటా లోడ్ అవుతోంది...", + "noApiKeysTitle": "API కీలు లేవు", + "noApiKeysDescription": "బడ్జెట్ పరిమితులను సెటప్ చేయడానికి ముందుగా API కీలను జోడించండి.", + "apiKey": "API కీ", + "todaysSpend": "ఈరోజు ఖర్చు", + "thisMonth": "ఈ నెల", + "setLimits": "పరిమితులను సెట్ చేయండి", + "dailyLimitUsd": "రోజువారీ పరిమితి (USD)", + "monthlyLimitUsd": "నెలవారీ పరిమితి (USD)", + "warningThresholdPercent": "హెచ్చరిక పరిమితి (%)", + "dailyLimitPlaceholder": "ఉదా. 5.00", + "monthlyLimitPlaceholder": "ఉదా. 50.00", "warningThresholdPlaceholder": "80", - "saveLimits": "Save Limits", - "budgetOk": "Budget OK — {remaining} remaining", - "budgetExceeded": "Budget exceeded — requests may be blocked", + "saveLimits": "పరిమితులను సేవ్ చేయండి", + "budgetOk": "బడ్జెట్ సరిగ్గా ఉంది — {remaining} మిగిలి ఉంది", + "budgetExceeded": "బడ్జెట్ మించిపోయింది — అభ్యర్థనలు నిరోధించబడవచ్చు", "totalRequests": "Total requests", - "noDataYet": "No data yet", - "latency": "Latency", + "noDataYet": "ఇంకా డేటా లేదు", + "latency": "జాప్యం", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", - "systemHealth": "System Health", - "entries": "Entries", - "activeCount": "{count} active", - "openCircuitBreakersDetected": "Open circuit breakers detected", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "circuitBreakers": "Circuit Breakers", - "lockedIPs": "Locked IPs", - "lockoutsAutoRefreshHint": "Per-model rate limit locks • Auto-refresh 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", - "timeLeft": "{time} left", - "howItWorks": "How It Works", - "howItWorksSubtitle": "Learn how evaluations validate your LLM responses", - "define": "Define", - "defineStepDescription": "Create test cases with input prompts and expected output criteria using strategies like contains, regex, or exact match.", - "run": "Run", - "runStepDescription": "Execute test cases against your LLM endpoints through OmniRoute. Each case is sent as a real API request.", - "evaluate": "Evaluate", - "evaluateStepDescription": "Responses are compared against expected criteria. See pass/fail for each case with latency metrics and detailed feedback.", + "promptCache": "ప్రాంప్ట్ క్యాష్", + "systemHealth": "సిస్టమ్ ఆరోగ్యం", + "entries": "ఎంట్రీలు", + "activeCount": "{count} సక్రియంగా ఉన్నాయి", + "openCircuitBreakersDetected": "ఓపెన్ సర్క్యూట్ బ్రేకర్లు గుర్తించబడ్డాయి", + "hitRate": "హిట్ రేటు", + "hitsMisses": "హిట్లు / మిస్లు", + "circuitBreakers": "సర్క్యూట్ బ్రేకర్లు", + "lockedIPs": "లాక్ చేయబడిన IPలు", + "lockoutsAutoRefreshHint": "ప్రతి మోడల్కు రేట్ లిమిట్ లాక్లు • ప్రతి 10 సెకన్లకు ఆటో-రిఫ్రెష్", + "lockedCount": "{count, plural, one {# లాక్ చేయబడింది} other {# లాక్ చేయబడ్డాయి}}", + "timeLeft": "{time} మిగిలి ఉంది", + "howItWorks": "ఇది ఎలా పనిచేస్తుంది", + "howItWorksSubtitle": "మూల్యాంకనాలు మీ LLM ప్రతిస్పందనలను ఎలా ధ్రువీకరిస్తాయో తెలుసుకోండి", + "define": "నిర్వచించండి", + "defineStepDescription": "contains, regex లేదా exact match వంటి వ్యూహాలను ఉపయోగించి ఇన్పుట్ ప్రాంప్ట్లు మరియు ఆశించిన అవుట్పుట్ ప్రమాణాలతో పరీక్ష కేసులను సృష్టించండి.", + "run": "అమలు చేయండి", + "runStepDescription": "OmniRoute ద్వారా మీ LLM ఎండ్పాయింట్లపై పరీక్ష కేసులను అమలు చేయండి. ప్రతి కేసు నిజమైన API అభ్యర్థనగా పంపబడుతుంది.", + "evaluate": "మూల్యాంకనం చేయండి", + "evaluateStepDescription": "ప్రతిస్పందనలు ఆశించిన ప్రమాణాలతో పోల్చబడతాయి. లేటెన్సీ మెట్రిక్లు మరియు వివరణాత్మక ఫీడ్బ్యాక్తో ప్రతి కేసు యొక్క ఉత్తీర్ణత/వైఫల్యాన్ని చూడండి.", "evalsStrategyContainsLabel": "కలిగి ఉంది", "evalsStrategyExactLabel": "ఖచ్చితమైన సరిపోలిక", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "రెగ్యులర్ ఎక్స్ప్రెషన్", "evalsStrategyCustomLabel": "అనుకూల లాజిక్", "evalsStrategyContainsDescription": "LLM అవుట్‌పుట్ ఆశించిన సబ్‌స్ట్రింగ్‌ను కలిగి ఉందో లేదో తనిఖీ చేస్తుంది.", "evalsStrategyExactDescription": "LLM అవుట్‌పుట్ ఆశించిన విలువతో ఖచ్చితంగా సరిపోలుతుందో లేదో తనిఖీ చేస్తుంది.", @@ -9347,126 +9354,126 @@ "historyColumnPassRate": "పాస్ రేట్", "historyColumnAvgLatencyMs": "సగటు లేటెన్సీ", "historyColumnCreatedAt": "అమలు చేయబడింది", - "evalSuites": "Evaluation Suites", - "evalSuitesHint": "Click a suite to view test cases, then run to evaluate your LLM endpoints", - "evalsLoading": "Loading eval suites...", - "noEvalSuitesFound": "No Eval Suites Found", - "noEvalSuitesDescription": "Eval suites can be defined via the API or in code. They test model outputs against expected results using strategies like contains, regex, exact match, and custom functions.", - "columnCase": "Case", + "evalSuites": "మూల్యాంకన సూట్లు", + "evalSuitesHint": "పరీక్ష కేసులను వీక్షించడానికి ఒక సూట్పై క్లిక్ చేసి, ఆపై మీ LLM ఎండ్పాయింట్లను మూల్యాంకనం చేయడానికి అమలు చేయండి", + "evalsLoading": "మూల్యాంకన సూట్లు లోడ్ అవుతున్నాయి...", + "noEvalSuitesFound": "మూల్యాంకన సూట్లు ఏవీ కనుగొనబడలేదు", + "noEvalSuitesDescription": "మూల్యాంకన సూట్లను API ద్వారా లేదా కోడ్లో నిర్వచించవచ్చు. అవి contains, regex, exact match మరియు కస్టమ్ ఫంక్షన్ల వంటి వ్యూహాలను ఉపయోగించి మోడల్ అవుట్పుట్లను ఆశించిన ఫలితాలతో పోల్చి పరీక్షిస్తాయి.", + "columnCase": "కేసు", "columnStatus": "Status", - "columnLatency": "Latency", - "columnDetails": "Details", + "columnLatency": "లేటెన్సీ", + "columnDetails": "వివరాలు", "columnModel": "Model", - "columnStrategy": "Strategy", - "columnExpected": "Expected", - "statsSuites": "Suites", - "statsTestCases": "Test Cases", - "statsModels": "Models", - "statsCoverage": "Coverage", - "statsStrategiesCount": "{count} strategies", - "evaluationStrategies": "Evaluation Strategies", - "modelsUnderTest": "Models Under Test", - "searchSuitesPlaceholder": "Search suites...", + "columnStrategy": "వ్యూహం", + "columnExpected": "ఆశించినది", + "statsSuites": "సూట్లు", + "statsTestCases": "పరీక్ష కేసులు", + "statsModels": "మోడల్లు", + "statsCoverage": "కవరేజ్", + "statsStrategiesCount": "{count} వ్యూహాలు", + "evaluationStrategies": "మూల్యాంకన వ్యూహాలు", + "modelsUnderTest": "పరీక్షలో ఉన్న మోడల్లు", + "searchSuitesPlaceholder": "సూట్లను శోధించండి...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", - "runEval": "Run Eval", + "casesCount": "{count, plural, one {# కేసు} other {# కేసులు}}", + "runEval": "మూల్యాంకనాన్ని అమలు చేయండి", "runAllSuites": "అన్నీ అమలు చేయండి", "runAllRunning": "అన్నీ నడుస్తోంది...", "runAllProgress": "నడుస్తోంది {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# సూట్ విఫలమైంది} other {# సూట్లు విఫలమయ్యాయి}}", "runAllCompleted": "{suites} సూట్‌లను అమలు చేసారు — {passed} ఉత్తీర్ణులయ్యారు, {failed} విఫలమైంది", "runAllCompletedWithFailures": "{completed} సూట్‌లను అమలు చేసింది; {failedSuites} పూర్తి చేయడంలో విఫలమైంది", - "runningProgress": "Running {current}/{total}...", - "passRate": "pass rate", - "summaryBreakdown": "{passed} passed · {failed} failed · {total} total", - "passedIconLabel": "✅ Passed", - "failedIconLabel": "❌ Failed", + "runningProgress": "{current}/{total} అమలవుతోంది...", + "passRate": "ఉత్తీర్ణత రేటు", + "summaryBreakdown": "{passed} ఉత్తీర్ణం · {failed} విఫలం · మొత్తం {total}", + "passedIconLabel": "✅ ఉత్తీర్ణం", + "failedIconLabel": "❌ విఫలం", "resultPassed": "ఉత్తీర్ణులయ్యారు", "resultFailed": "విఫలమైంది", "expandResult": "ఫలితాల వివరాలను విస్తరించండి", "collapseResult": "ఫలిత వివరాలను కుదించు", - "detailsContains": "Contains: \"{term}\"", + "detailsContains": "దీనిని కలిగి ఉంది: \"{term}\"", "detailsRegex": "Regex: {pattern}", - "detailsExpected": "Expected: \"{expected}\"", + "detailsExpected": "ఆశించినది: \"{expected}\"", "expectedOutputLabel": "ఆశించిన అవుట్‌పుట్", - "noResultsYet": "No results yet", - "testCasesCount": "Test Cases ({count})", - "noTestCasesDefined": "No test cases defined", - "runEvalHint": "Click \"Run Eval\" to execute all cases against your LLM endpoint. Each test sends a real request through OmniRoute.", - "notifyNoTestCases": "No test cases defined for this suite", - "notifyAllCasesPassed": "All {total} cases passed ✅", - "notifySomeCasesFailed": "{passed}/{total} passed, {failed} failed", - "notifyEvalRunFailed": "Eval run failed", - "notifyEvalTitle": "Eval: {name}", - "modelEvals": "Model Evaluations", - "evalsHeroDescription": "Test and validate your LLM endpoints by running predefined evaluation suites. Each suite contains test cases that send real prompts through OmniRoute and compare responses against expected criteria — helping you detect regressions, compare models, and ensure response quality across providers.", - "qualityValidation": "Quality Validation", - "modelComparison": "Model Comparison", - "regressionDetection": "Regression Detection", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", - "noLockouts": "No models currently locked", - "activeSessions": "Active Sessions", - "noSessions": "No active sessions", - "sessionsHint": "Sessions appear as requests flow through the proxy", - "sessionsTrackedHint": "Tracked via request fingerprinting • Auto-refresh 5s", - "session": "Session", - "age": "Age", - "requests": "Requests", - "connection": "Connection", + "noResultsYet": "ఇంకా ఫలితాలు లేవు", + "testCasesCount": "పరీక్ష సందర్భాలు ({count})", + "noTestCasesDefined": "పరీక్ష సందర్భాలు నిర్వచించబడలేదు", + "runEvalHint": "మీ LLM ఎండ్పాయింట్పై అన్ని సందర్భాలను అమలు చేయడానికి \"Evalని అమలు చేయి\"ని క్లిక్ చేయండి. ప్రతి పరీక్ష OmniRoute ద్వారా నిజమైన అభ్యర్థనను పంపుతుంది.", + "notifyNoTestCases": "ఈ సూట్ కోసం పరీక్ష సందర్భాలు నిర్వచించబడలేదు", + "notifyAllCasesPassed": "మొత్తం {total} సందర్భాలు ఉత్తీర్ణమయ్యాయి ✅", + "notifySomeCasesFailed": "{passed}/{total} ఉత్తీర్ణం, {failed} విఫలం", + "notifyEvalRunFailed": "Eval అమలు విఫలమైంది", + "notifyEvalTitle": "మూల్యాంకనం: {name}", + "modelEvals": "మోడల్ మూల్యాంకనాలు", + "evalsHeroDescription": "ముందే నిర్వచించిన మూల్యాంకన సూట్లను అమలు చేయడం ద్వారా మీ LLM ఎండ్పాయింట్లను పరీక్షించి, ధృవీకరించండి. ప్రతి సూట్లో OmniRoute ద్వారా నిజమైన ప్రాంప్ట్లను పంపి, ప్రతిస్పందనలను ఆశించిన ప్రమాణాలతో పోల్చే పరీక్ష సందర్భాలు ఉంటాయి — ఇవి రిగ్రెషన్లను గుర్తించడానికి, మోడల్లను పోల్చడానికి, ప్రొవైడర్లన్నింటిలో ప్రతిస్పందన నాణ్యతను నిర్ధారించడానికి సహాయపడతాయి.", + "qualityValidation": "నాణ్యత ధృవీకరణ", + "modelComparison": "మోడల్ పోలిక", + "regressionDetection": "రిగ్రెషన్ గుర్తింపు", + "latencyBenchmarks": "లేటెన్సీ బెంచ్మార్క్లు", + "modelLockouts": "మోడల్ లాకౌట్లు", + "noLockouts": "ప్రస్తుతం లాక్ చేయబడిన మోడల్లు లేవు", + "activeSessions": "సక్రియ సెషన్లు", + "noSessions": "సక్రియ సెషన్లు లేవు", + "sessionsHint": "ప్రాక్సీ ద్వారా అభ్యర్థనలు ప్రవహించినప్పుడు సెషన్లు కనిపిస్తాయి", + "sessionsTrackedHint": "అభ్యర్థన ఫింగర్ప్రింటింగ్ ద్వారా ట్రాక్ చేయబడుతుంది • ప్రతి 5 సెకన్లకు స్వయంచాలక రిఫ్రెష్", + "session": "సెషన్", + "age": "వ్యవధి", + "requests": "అభ్యర్థనలు", + "connection": "కనెక్షన్", "durationMillisecondsShort": "{value}ms", "durationSecondsShort": "{value}s", "durationMinutesShort": "{value}m", "durationHoursShort": "{value}h", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "Provider Limits", - "noProviders": "No Providers Connected", - "connectProvidersForQuota": "Connect to providers with OAuth to track your API quota limits and usage.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", - "filteredFromCount": "(filtered from {count})", - "autoRefresh": "Auto-refresh", - "refreshAll": "Refresh All", - "loadingQuotas": "Loading...", + "providerLimits": "ప్రొవైడర్ పరిమితులు", + "noProviders": "ప్రొవైడర్లు ఏవీ కనెక్ట్ కాలేదు", + "connectProvidersForQuota": "మీ API కోటా పరిమితులు మరియు వినియోగాన్ని ట్రాక్ చేయడానికి OAuthతో ప్రొవైడర్లకు కనెక్ట్ అవ్వండి.", + "accountsCount": "{count, plural, one {# ఖాతా} other {# ఖాతాలు}}", + "filteredFromCount": "({count} నుండి ఫిల్టర్ చేయబడింది)", + "autoRefresh": "స్వయంచాలక రిఫ్రెష్", + "refreshAll": "అన్నింటినీ రిఫ్రెష్ చేయి", + "loadingQuotas": "లోడ్ అవుతోంది...", "showMoreQuotas": "ఇంకా {count} చూపించు", "showLessQuotas": "తక్కువ చూపించు", "hideQuotaRow": "ఈ కోటా అడ్డు వరుసను దాచు", "showQuotaRow": "ఈ కోటా అడ్డు వరుసను చూపించు", "hiddenQuotaRowsLabel": "దాచబడింది:", "quotaVisibilityUpdateFailed": "కోటా దృశ్యమానతను నవీకరించడం విఫలమైంది", - "account": "Account", - "modelQuotas": "Model Quotas", - "lastUsed": "Last Refreshed", - "actions": "Actions", - "refreshQuota": "Refresh quota", - "today": "Today", - "tomorrow": "Tomorrow", + "account": "ఖాతా", + "modelQuotas": "మోడల్ కోటాలు", + "lastUsed": "చివరిగా రిఫ్రెష్ చేసిన సమయం", + "actions": "చర్యలు", + "refreshQuota": "కోటాను రిఫ్రెష్ చేయండి", + "today": "ఈ రోజు", + "tomorrow": "రేపు", "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "inDuration": "{duration}లో", "notApplicable": "N/A", - "rawPlanWithValue": "Raw plan: {plan}", - "noPlanFromProvider": "No plan from provider", + "rawPlanWithValue": "ముడి ప్లాన్: {plan}", + "noPlanFromProvider": "ప్రొవైడర్ నుండి ప్లాన్ లేదు", "tokenExpiresIn": "టోకెన్ {time}లో గడువు ముగుస్తుంది", "tokenExpired": "టోకెన్ గడువు ముగిసింది", - "noQuotaData": "No quota data", + "noQuotaData": "కోటా డేటా లేదు", "cardExpand": "విస్తరించు", "cardCollapse": "కుదించు", "moreQuotas": "+{count} మరిన్ని", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", - "noQuotaDataAvailable": "No quota data available", - "noAccountsForTierFilter": "No accounts found for tier filter", - "tierAll": "All", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "ungrouped": "సమూహీకరించనివి", + "viewFlat": "ఫ్లాట్", + "viewByEnvironment": "ఎన్విరాన్మెంట్ వారీగా", + "noQuotaDataAvailable": "కోటా డేటా అందుబాటులో లేదు", + "noAccountsForTierFilter": "టియర్ ఫిల్టర్కు సరిపోలే ఖాతాలు కనుగొనబడలేదు", + "tierAll": "అన్నీ", + "tierEnterprise": "ఎంటర్ప్రైజ్", + "tierTeam": "టీమ్", + "tierBusiness": "బిజినెస్", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", + "tierFree": "ఉచితం", "tierLite": "లైట్", - "tierUnknown": "Unknown", + "tierUnknown": "తెలియదు", "statTotal": "మొత్తం", "statCritical": "క్లిష్టమైనది", "statAlert": "అలర్ట్", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "క్రెడిట్‌ను రీడీమ్ చేయండి", "resetCreditRedeemed": "రీసెట్ రీడీమ్ చేయబడింది", "resetCreditRedeemFailed": "రీసెట్ క్రెడిట్‌ను రీడీమ్ చేయడం విఫలమైంది", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "సూట్ను సేవ్ చేయడం విఫలమైంది", "clone": "క్లోన్", "exportSuite": "ఎగుమతి చేయండి", "importSuite": "దిగుమతి", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "చెల్లని ఎవాల్ సూట్ JSON", "suiteBuilderCloneSuffix": "కాపీ", "suiteBuilderImportedSuite": "దిగుమతి చేసుకున్న సూట్", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "స్కోర్కార్డ్", + "evalApiKey": "API కీ", + "scorecardPassRate": "ఉత్తీర్ణత రేటు", + "targetTypeModel": "మోడల్", + "actualOutputLabel": "వాస్తవ అవుట్పుట్", + "evalTargetHint": "మూల్యాంకనం చేయడానికి మోడల్ లేదా కాంబోను ఎంచుకోండి.", + "suiteBuilderDeleted": "సూట్ విజయవంతంగా తొలగించబడింది", + "suiteBuilderCaseCardHint": "ఇన్పుట్ ప్రాంప్ట్ మరియు ఆశించిన అవుట్పుట్ ప్రమాణాలను నిర్వచించండి.", + "nextResetUtc": "తదుపరి రీసెట్ (UTC)", + "scorecardHint": "అన్ని మూల్యాంకన సూట్లలో సమగ్ర ఉత్తీర్ణత రేట్లు.", + "suiteLatestRunsHint": "ఈ సూట్కు సంబంధించిన అత్యంత ఇటీవలి మూల్యాంకన రన్లు.", + "saving": "సేవ్ అవుతోంది", + "suiteBuilderCaseModelLabel": "మోడల్ (ఐచ్ఛికం)", + "evalControlsTitle": "మూల్యాంకన నియంత్రణలు", + "suiteBuilderEditTitle": "మూల్యాంకన సూట్ను సవరించండి", + "suiteBuilderCaseStrategyLabel": "ధృవీకరణ వ్యూహం", + "notifySelectDifferentCompareTarget": "పోలిక కోసం దయచేసి వేరొక లక్ష్యాన్ని ఎంచుకోండి", + "recentRunsHint": "ఇటీవలి మూల్యాంకన అమలులను చూపుతోంది. వివరణాత్మక ఫలితాలను చూడటానికి ఒక అమలుపై క్లిక్ చేయండి.", + "evalCompareHint": "ఐచ్ఛికంగా ఫలితాలను రెండవ లక్ష్యంతో పోల్చండి.", + "suiteBuilderCaseInvalid": "ఈ కేసులో ధృవీకరణ లోపాలు ఉన్నాయి. సేవ్ చేయడానికి ముందు దయచేసి వాటిని సరిచేయండి.", + "historyEmpty": "ఇంకా మూల్యాంకన చరిత్ర లేదు", + "suiteBuilderUpdated": "సూట్ విజయవంతంగా నవీకరించబడింది", + "resetInterval": "విరామాన్ని రీసెట్ చేయండి", + "suiteBuilderCreateTitle": "మూల్యాంకన సూట్ను సృష్టించండి", + "activePeriodSpend": "సక్రియ వ్యవధి ఖర్చు", + "evalApiKeyHint": "మూల్యాంకన అభ్యర్థనల కోసం ఉపయోగించాల్సిన API కీని ఎంచుకోండి.", + "evalCompareOptional": "పోల్చండి (ఐచ్ఛికం)", + "suiteBuilderDeleteFailed": "సూట్ను తొలగించడం విఫలమైంది", + "suiteBuilderCaseSystemPromptPlaceholder": "ఐచ్ఛిక సిస్టమ్ సూచనలు...", + "scorecardCases": "కేసులు", + "runCompletedWithScore": "మూల్యాంకనం పూర్తయింది — {score}% ఉత్తీర్ణత రేటు", + "suiteBuilderCustomBadge": "అనుకూలం", + "targetSuiteDefaults": "సూట్ డిఫాల్ట్లు", + "suiteBuilderDeleteConfirm": "మీరు ఖచ్చితంగా ఈ సూట్ను తొలగించాలనుకుంటున్నారా? ఈ చర్యను రద్దు చేయడం సాధ్యం కాదు.", + "suiteBuilderNameLabel": "సూట్ పేరు", + "scorecardSuites": "సూట్లు", + "evalCompareTarget": "పోలిక లక్ష్యం", + "suiteBuilderCaseModelPlaceholder": "ఉదా. gpt-4o-mini", + "evalControlsHint": "మీ మూల్యాంకన లక్ష్యాన్ని మరియు API కీని కాన్ఫిగర్ చేసి, మోడల్ నాణ్యతను ధృవీకరించడానికి సూట్లను అమలు చేయండి.", + "recentRunsTitle": "ఇటీవలి అమలులు", + "suiteBuilderCaseSystemPromptLabel": "సిస్టమ్ ప్రాంప్ట్", + "suiteBuilderCaseExpectedPlaceholder": "ఉదా. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "ఉదా డెఫ్ ఫైబొనాక్సీ", "suiteBuilderCaseExpectedPlaceholderExact": "ఖచ్చితమైన ఊహించిన ప్రతిస్పందనను అతికించండి", "suiteBuilderCaseExpectedPlaceholderRegex": "ఉదా ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "స్లాష్‌లను చుట్టకుండా JavaScript సాధారణ వ్యక్తీకరణను ఉపయోగించండి.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "ఉదా. కోడింగ్ నాణ్యత సూట్", + "suiteBuilderAddCase": "కేసును జోడించండి", + "cancel": "రద్దు చేయండి", + "evalTarget": "లక్ష్యం", + "suiteBuilderCaseNameLabel": "కేసు పేరు", + "weeklyLimitUsd": "వారపు పరిమితి (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "ఉదా. Pythonలో fibonacci ఫంక్షన్ను వ్రాయండి", + "suiteBuilderNameRequired": "సూట్ పేరు తప్పనిసరి", + "suiteBuilderCaseUserPromptLabel": "వినియోగదారు ప్రాంప్ట్", + "daily": "రోజువారీ", + "resultErrorLabel": "లోపం", + "suiteBuilderBuiltInBadge": "అంతర్నిర్మితం", + "suiteBuilderCaseCardTitle": "పరీక్ష కేసు", "suiteBuilderDuplicateCase": "నకిలీ", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "ఉదా. 50.00", + "suiteBuilderCaseTagsHint": "పరీక్ష సందర్భాలను నిర్వహించడానికి కామాలతో వేరు చేసిన ట్యాగ్లు.", + "notifyEvalRunFailedWithReason": "మూల్యాంకనం విఫలమైంది: {reason}", + "weekly": "వారానికొకసారి", + "runEvalRunning": "మూల్యాంకనం జరుగుతోంది...", + "delete": "తొలగించు", + "resetTimeUtc": "రీసెట్ సమయం (UTC)", + "evalApiKeyAuto": "స్వయంచాలకం (డిఫాల్ట్ను ఉపయోగించు)", + "suiteBuilderDescriptionPlaceholder": "ఈ సూట్ ఏమి పరీక్షిస్తుందో తెలిపే ఐచ్ఛిక వివరణ...", + "targetComparisonTitle": "లక్ష్య పోలిక", + "save": "సేవ్ చేయి", + "suiteBuilderCreated": "సూట్ విజయవంతంగా సృష్టించబడింది", + "suiteLatestRuns": "తాజా రన్లు", + "suiteBuilderCaseExpectedLabel": "ఆశించిన విలువ", + "historyLatency": "జాప్యం", + "suiteBuilderCaseTagsPlaceholder": "ఉదా. coding, python", + "targetTypeCombo": "కాంబో", + "scorecardPassed": "ఉత్తీర్ణమైంది", + "suiteBuilderCaseTagsLabel": "ట్యాగ్లు", + "suiteBuilderNewSuite": "కొత్త సూట్", + "notifyEvalLoadFailed": "మూల్యాంకన డేటాను లోడ్ చేయడం విఫలమైంది", + "notConfigured": "కాన్ఫిగర్ చేయబడలేదు", + "suiteBuilderCaseNamePlaceholder": "ఉదా. Python fibonacci పరీక్ష", + "intervalLabel": "విరామం", + "suiteBuilderCreateAction": "సూట్ను సృష్టించు", + "suiteBuilderCasesHint": "ప్రతి సందర్భం ఒక ప్రాంప్ట్ను పంపి, ప్రతిస్పందనను ధృవీకరిస్తుంది.", + "suiteBuilderUpdatedAt": "నవీకరించబడింది", + "errorBadge": "లోపం", + "suiteBuilderCasesTitle": "పరీక్ష సందర్భాలు", + "edit": "సవరించు", + "monthly": "నెలకొకసారి", + "suiteBuilderCasesRequired": "కనీసం ఒక పరీక్ష సందర్భం అవసరం", + "weeklyLimitSummary": "వారపు బడ్జెట్ పరిమితి సారాంశం", + "suiteBuilderDescriptionLabel": "వివరణ", + "targetComparisonHint": "లక్ష్యాల మధ్య మూల్యాంకన ఫలితాల పక్కపక్కన పోలిక.", + "compareCompletedWithScore": "పోలిక పూర్తయింది — {score}% ఉత్తీర్ణత రేటు", + "staleQuotaTooltip": "చివరి రిఫ్రెష్ విఫలమైంది — కాష్ చేసిన డేటా చూపబడుతోంది", "quotaThresholdLabel": "నిమి మిగిలింది", "quotaCutoffsColumnHelp": "మిగిలిన కోటా ఈ శాతానికి లేదా అంతకంటే తక్కువకు పడిపోయినప్పుడు అభ్యర్థనలను ఆపివేయండి.", "quotaCutoffsButtonDefault": "డిఫాల్ట్", @@ -9704,70 +9711,70 @@ "providerQuotaHomeHint": "కనెక్ట్ చేయబడిన ఖాతాల ప్రత్యక్ష స్థితి" }, "modals": { - "waitingAuth": "Waiting for Authorization", - "verificationUrl": "Verification URL", - "yourCode": "Your Code", - "remoteAccess": "Remote access:", - "connectedSuccess": "Connected Successfully!", - "connectionFailed": "Connection Failed", - "chooseAuthMethod": "Choose your authentication method:", + "waitingAuth": "అధికార అనుమతి కోసం వేచి ఉంది", + "verificationUrl": "ధృవీకరణ URL", + "yourCode": "మీ కోడ్", + "remoteAccess": "రిమోట్ యాక్సెస్:", + "connectedSuccess": "విజయవంతంగా కనెక్ట్ అయింది!", + "connectionFailed": "కనెక్షన్ విఫలమైంది", + "chooseAuthMethod": "మీ ప్రామాణీకరణ పద్ధతిని ఎంచుకోండి:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", - "importToken": "Import Token", - "pasteToken": "Paste refresh token from Kiro IDE.", + "googleAccount": "Google ఖాతా", + "githubAccount": "GitHub ఖాతా", + "importToken": "టోకెన్ను దిగుమతి చేయండి", + "pasteToken": "Kiro IDE నుండి రిఫ్రెష్ టోకెన్ను అతికించండి.", "awsRegion": "AWS Region", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCache": "Reading from AWS SSO cache", - "readingFromCursor": "Reading from Cursor IDE database", - "initializing": "Initializing...", - "pricingConfig": "Pricing Configuration", - "loadingPricing": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "noPricingData": "No pricing data available", - "noModelsFound": "No models found" + "autoDetecting": "టోకెన్లను స్వయంచాలకంగా గుర్తిస్తోంది...", + "readingFromCache": "AWS SSO క్యాష్ నుండి చదువుతోంది", + "readingFromCursor": "Cursor IDE డేటాబేస్ నుండి చదువుతోంది", + "initializing": "ప్రారంభిస్తోంది...", + "pricingConfig": "ధరల కాన్ఫిగరేషన్", + "loadingPricing": "ధరల డేటాను లోడ్ చేస్తోంది...", + "pricingRatesFormat": "ధరల రేట్ల ఫార్మాట్", + "noPricingData": "ధరల డేటా అందుబాటులో లేదు", + "noModelsFound": "మోడల్లు ఏవీ కనుగొనబడలేదు" }, "loggers": { - "allProviders": "All Providers", - "allModels": "All Models", - "allAccounts": "All Accounts", - "allApiKeys": "All API Keys", - "allTypes": "All Types", - "allLevels": "All Levels", + "allProviders": "అన్ని ప్రొవైడర్లు", + "allModels": "అన్ని మోడల్లు", + "allAccounts": "అన్ని ఖాతాలు", + "allApiKeys": "అన్ని API కీలు", + "allTypes": "అన్ని రకాలు", + "allLevels": "అన్ని స్థాయులు", "modelAZ": "Model A-Z", "modelZA": "Model Z-A", - "loadingLogs": "Loading logs...", - "loadingProxyLogs": "Loading proxy logs...", - "noLogEntries": "No log entries found", - "noPayloadData": "No payload data available for this log entry.", - "proxyEvent": "Proxy Event", + "loadingLogs": "లాగ్లను లోడ్ చేస్తోంది...", + "loadingProxyLogs": "ప్రాక్సీ లాగ్లను లోడ్ చేస్తోంది...", + "noLogEntries": "లాగ్ ఎంట్రీలు ఏవీ కనుగొనబడలేదు", + "noPayloadData": "ఈ లాగ్ ఎంట్రీకి పేలోడ్ డేటా అందుబాటులో లేదు.", + "proxyEvent": "ప్రాక్సీ ఈవెంట్", "proxy": "Proxy", - "level": "Level", - "directNative": "Direct (native)", - "combo": "Combo", + "level": "స్థాయి", + "directNative": "నేరుగా (స్థానికం)", + "combo": "కాంబో", "inputTokens": "I:", "outputTokens": "O:" }, "stats": { - "usageOverview": "Usage Overview", - "outputTokens": "Output Tokens", - "totalCost": "Total Cost", - "usageByModel": "Usage by Model", - "usageByAccount": "Usage by Account", - "failedToLoad": "Failed to load usage statistics.", - "tokenHealth": "Token Health", - "totalOAuth": "Total OAuth", - "healthy": "Healthy", - "warning": "Warning", - "errored": "Errored", - "lastCheck": "Last check", - "noData": "No data", - "share": "Share", - "unableToLoad": "Unable to load system metrics", - "product": "Product", - "resources": "Resources", - "company": "Company", + "usageOverview": "వినియోగ అవలోకనం", + "outputTokens": "అవుట్పుట్ టోకెన్లు", + "totalCost": "మొత్తం ఖర్చు", + "usageByModel": "మోడల్ వారీగా వినియోగం", + "usageByAccount": "ఖాతా వారీగా వినియోగం", + "failedToLoad": "వినియోగ గణాంకాలను లోడ్ చేయడం విఫలమైంది.", + "tokenHealth": "టోకెన్ స్థితి", + "totalOAuth": "మొత్తం OAuth", + "healthy": "ఆరోగ్యంగా ఉంది", + "warning": "హెచ్చరిక", + "errored": "లోపం సంభవించింది", + "lastCheck": "చివరి తనిఖీ", + "noData": "డేటా లేదు", + "share": "షేర్ చేయండి", + "unableToLoad": "సిస్టమ్ మెట్రిక్లను లోడ్ చేయడం సాధ్యం కాలేదు", + "product": "ఉత్పత్తి", + "resources": "వనరులు", + "company": "కంపెనీ", "tokenHealthTooltips": { "allHealthy": "అన్ని టోకెన్లు ఆరోగ్యంగా ఉన్నాయి", "needsAttention": "కొన్ని టోకెన్లు శ్రద్ధ అవసరం", @@ -9812,70 +9819,70 @@ "noAccountUsage": "ఇంకా ఖాతా-సంబంధిత వినియోగం నమోదు చేయబడలేదు. ఇక్కడ డేటా చూడటానికి OAuth ఖాతాలను ఉపయోగించి అభ్యర్థనలు చేయండి." }, "auth": { - "welcome": "Welcome", - "signIn": "Sign in", - "enterPassword": "Enter your password to continue", - "password": "Password", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", - "unifiedAiApiProxyDesc": "Route requests to multiple AI providers through a single endpoint. Load balancing, failover, and usage tracking built in.", - "passwordNotEnabled": "Password protection is not enabled", - "loading": "Loading...", - "invalidPassword": "Invalid password", - "errorOccurredRetry": "An error occurred. Please try again.", - "configureInstance": "Let's get your OmniRoute instance configured", - "runOnboardingWizard": "Run the onboarding wizard to set up your password and connect your first AI provider.", - "startOnboarding": "Start Onboarding", - "secureYourInstance": "Secure Your Instance", - "setPasswordDescription": "Set a password to protect your dashboard and secure your API endpoints from unauthorized access.", - "configurePassword": "Configure Password", - "continue": "Continue", - "windowWillClose": "This window will close automatically...", - "closeTabNow": "You can close this tab now.", - "copyUrlManual": "Please copy the URL from the address bar and paste it in the application.", - "accessDeniedDescription": "You don't have permission to access this resource. Check your API key or contact the administrator.", - "goToDashboard": "Go to Dashboard", - "featureMultiProviderTitle": "Multi-Provider", - "featureMultiProviderDesc": "OpenAI, Anthropic, Google, and more", - "featureLoadBalancingTitle": "Load Balancing", - "featureLoadBalancingDesc": "Distribute requests intelligently", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Monitor costs and tokens", - "resetPassword": "Reset Password", - "resetDescription": "Choose a method to recover access to your dashboard", - "stopServer": "Stop the OmniRoute server", - "processing": "Processing...", - "pleaseWait": "Please wait while we complete the authorization.", - "authSuccess": "Authorization Successful!", - "copyUrl": "Copy This URL", - "accessDenied": "Access Denied", - "methodCliTitle": "Method 1: CLI Reset", - "methodCliDescription": "Run the following command on the server where OmniRoute is running:", - "methodCliHint": "This will prompt you to set a new password. The server must be stopped first.", - "methodManualTitle": "Method 2: Manual Reset", - "methodManualDescription": "Delete the password from the database and set a new one on startup:", - "setPasswordInYour": "Set a new password in your", - "fileLabelSuffix": "file:", + "welcome": "స్వాగతం", + "signIn": "సైన్ ఇన్ చేయండి", + "enterPassword": "కొనసాగించడానికి మీ పాస్వర్డ్ను నమోదు చేయండి", + "password": "పాస్వర్డ్", + "unifiedProxy": "ఏకీకృత AI API ప్రాక్సీ", + "unifiedAiApiProxy": "ఏకీకృత AI API ప్రాక్సీ", + "unifiedAiApiProxyDesc": "ఒకే ఎండ్పాయింట్ ద్వారా బహుళ AI ప్రొవైడర్లకు అభ్యర్థనలను రూట్ చేయండి. లోడ్ బ్యాలెన్సింగ్, ఫెయిల్ఓవర్ మరియు వినియోగ ట్రాకింగ్ అంతర్నిర్మితంగా ఉన్నాయి.", + "passwordNotEnabled": "పాస్వర్డ్ రక్షణ ప్రారంభించబడలేదు", + "loading": "లోడ్ అవుతోంది...", + "invalidPassword": "చెల్లని పాస్వర్డ్", + "errorOccurredRetry": "లోపం సంభవించింది. దయచేసి మళ్లీ ప్రయత్నించండి.", + "configureInstance": "మీ OmniRoute ఇన్స్టాన్స్ను కాన్ఫిగర్ చేద్దాం", + "runOnboardingWizard": "మీ పాస్వర్డ్ను సెటప్ చేయడానికి మరియు మీ మొదటి AI ప్రొవైడర్ను కనెక్ట్ చేయడానికి ఆన్బోర్డింగ్ విజార్డ్ను అమలు చేయండి.", + "startOnboarding": "ఆన్బోర్డింగ్ను ప్రారంభించండి", + "secureYourInstance": "మీ ఇన్స్టాన్స్ను సురక్షితం చేయండి", + "setPasswordDescription": "మీ డాష్బోర్డ్ను రక్షించడానికి మరియు అనధికార యాక్సెస్ నుండి మీ API ఎండ్పాయింట్లను సురక్షితం చేయడానికి పాస్వర్డ్ను సెట్ చేయండి.", + "configurePassword": "పాస్వర్డ్ను కాన్ఫిగర్ చేయండి", + "continue": "కొనసాగించండి", + "windowWillClose": "ఈ విండో స్వయంచాలకంగా మూసివేయబడుతుంది...", + "closeTabNow": "మీరు ఇప్పుడు ఈ ట్యాబ్ను మూసివేయవచ్చు.", + "copyUrlManual": "దయచేసి అడ్రస్ బార్ నుండి URLను కాపీ చేసి, అప్లికేషన్లో పేస్ట్ చేయండి.", + "accessDeniedDescription": "ఈ వనరును యాక్సెస్ చేయడానికి మీకు అనుమతి లేదు. మీ API కీని తనిఖీ చేయండి లేదా అడ్మినిస్ట్రేటర్ను సంప్రదించండి.", + "goToDashboard": "డాష్బోర్డ్కు వెళ్లండి", + "featureMultiProviderTitle": "బహుళ-ప్రొవైడర్", + "featureMultiProviderDesc": "OpenAI, Anthropic, Google మరియు మరిన్ని", + "featureLoadBalancingTitle": "లోడ్ బ్యాలెన్సింగ్", + "featureLoadBalancingDesc": "అభ్యర్థనలను తెలివిగా పంపిణీ చేయండి", + "featureUsageTrackingTitle": "వినియోగ ట్రాకింగ్", + "featureUsageTrackingDesc": "ఖర్చులు మరియు టోకెన్లను పర్యవేక్షించండి", + "resetPassword": "పాస్వర్డ్ను రీసెట్ చేయండి", + "resetDescription": "మీ డ్యాష్బోర్డ్కు యాక్సెస్ను పునరుద్ధరించడానికి ఒక పద్ధతిని ఎంచుకోండి", + "stopServer": "OmniRoute సర్వర్ను ఆపివేయండి", + "processing": "ప్రాసెస్ చేస్తోంది...", + "pleaseWait": "మేము అధికారీకరణను పూర్తి చేసే వరకు దయచేసి వేచి ఉండండి.", + "authSuccess": "అధికారీకరణ విజయవంతమైంది!", + "copyUrl": "ఈ URLను కాపీ చేయండి", + "accessDenied": "యాక్సెస్ నిరాకరించబడింది", + "methodCliTitle": "పద్ధతి 1: CLI రీసెట్", + "methodCliDescription": "OmniRoute నడుస్తున్న సర్వర్లో కింది కమాండ్ను అమలు చేయండి:", + "methodCliHint": "ఇది కొత్త పాస్వర్డ్ను సెట్ చేయమని మిమ్మల్ని అడుగుతుంది. ముందుగా సర్వర్ను ఆపివేయాలి.", + "methodManualTitle": "పద్ధతి 2: మాన్యువల్ రీసెట్", + "methodManualDescription": "డేటాబేస్ నుండి పాస్వర్డ్ను తొలగించి, ప్రారంభ సమయంలో కొత్తదాన్ని సెట్ చేయండి:", + "setPasswordInYour": "మీ", + "fileLabelSuffix": "ఫైల్లో కొత్త పాస్వర్డ్ను సెట్ చేయండి:", "newPasswordPlaceholder": "your_new_password", - "deleteSettingsFile": "Delete", - "orRemovePasswordHashField": "or remove the passwordHash field", - "restartServerWithNewPassword": "Restart the server - it will use the new password", - "backToLogin": "Back to Login", - "forgotPassword": "Forgot password?", + "deleteSettingsFile": "తొలగించండి", + "orRemovePasswordHashField": "లేదా passwordHash ఫీల్డ్ను తొలగించండి", + "restartServerWithNewPassword": "సర్వర్ను పునఃప్రారంభించండి - అది కొత్త పాస్వర్డ్ను ఉపయోగిస్తుంది", + "backToLogin": "లాగిన్కు తిరిగి వెళ్లండి", + "forgotPassword": "పాస్వర్డ్ మర్చిపోయారా?", "continueWithOidc": "OIDCతో కొనసాగండి", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", - "Authorization": "Authorization", + "defaultPasswordHint": "డిఫాల్ట్ పాస్వర్డ్: CHANGEME (INITIAL_PASSWORD సెట్ చేయకపోతే)", + "Authorization": "అధికారీకరణ", "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "అధికారీకరణ కోసం వేచి ఉంది...", + "waitingForGoogleAuthorization": "Google అధికారీకరణ కోసం వేచి ఉంది...", + "waitingForOpenAIAuthorization": "OpenAI అధికారీకరణ కోసం వేచి ఉంది...", + "waitingForAntigravityAuthorization": "Antigravity అధికారీకరణ కోసం వేచి ఉంది...", + "waitingForQoderAuthorization": "Qoder అధికారీకరణ కోసం వేచి ఉంది...", + "exchangingCodeForTokens": "కోడ్ను టోకెన్ల కోసం మార్పిడి చేస్తోంది...", + "nodeIncompatibleTitle": "అనుకూలంగా లేని Node.js వెర్షన్", + "nodeIncompatibleDesc": "మీరు Node.js {version}ను అమలు చేస్తున్నారు, ఇది OmniRoute మద్దతిచ్చే సురక్షిత రన్టైమ్ విధాన పరిధికి వెలుపల ఉంది. ప్యాచ్ చేయబడిన Node.js 20.x లేదా 22.x LTS విడుదలను ఉపయోగించండి.", + "nodeIncompatibleFixLabel": "పరిష్కారం: ప్యాచ్ చేయబడిన Node.js 22 LTS విడుదలను ఇన్స్టాల్ చేయండి", + "nodeIncompatibleHint": "OmniRouteకు Node.js 22.22.2+ (22.x LTS) లేదా 24.0.0+ (24.x LTS) అవసరం. Node 24 LTS సిఫార్సు చేయబడింది.", "resetViaAppDataTitle": "యాప్ డేటా ద్వారా పునఃసెట్టింగ్", "resetViaAppDataDescription": "మీ పాస్వర్డ్ను పునఃసెట్ చేయడానికి యాప్ డేటా డైరెక్టరీ నుండి సెట్టింగ్స్ ఫైల్‌ను తొలగించండి:", "quitDesktopApp": "OmniRoute డెస్క్‌టాప్ యాప్‌ను పూర్తిగా మూసివేయండి", @@ -9930,72 +9937,72 @@ }, "landing": { "brandName": "OmniRoute", - "navigateHome": "Navigate to home", - "toggleMenu": "Toggle menu", - "featuresLink": "Features", - "docsLink": "Docs", + "navigateHome": "హోమ్కు వెళ్లండి", + "toggleMenu": "మెనూను టాగుల్ చేయండి", + "featuresLink": "ఫీచర్లు", + "docsLink": "డాక్యుమెంటేషన్", "github": "GitHub", - "versionLive": "v1.0 is now live", - "oneEndpoint": "One Endpoint for", - "allProviders": "All AI Providers", - "heroDescription": "AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.", - "getStarted": "Get Started", - "viewOnGithub": "View on GitHub", - "powerfulFeatures": "Powerful Features", - "featuresSubtitle": "Everything you need to manage your AI infrastructure in one place, built for scale.", - "featureUnifiedEndpointTitle": "Unified Endpoint", - "featureUnifiedEndpointDesc": "Access all providers via a single standard API URL.", - "featureEasySetupTitle": "Easy Setup", - "featureEasySetupDesc": "Get up and running in minutes with npx command.", - "featureModelFallbackTitle": "Model Fallback", - "featureModelFallbackDesc": "Automatically switch providers on failure or high latency.", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Detailed analytics and cost monitoring across all models.", - "featureOAuthApiKeysTitle": "OAuth & API Keys", - "featureOAuthApiKeysDesc": "Securely manage credentials in one vault.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncDesc": "Sync your configurations across devices instantly.", - "featureCliSupportTitle": "CLI Support", - "featureCliSupportDesc": "Works with Claude Code, Codex, Cline, Cursor, and more.", - "featureDashboardTitle": "Dashboard", - "featureDashboardDesc": "Visual dashboard for real-time traffic analysis.", - "howItWorks": "How OmniRoute Works", - "howItWorksDescription": "Data flows seamlessly from your application through our intelligent routing layer to the best provider for the job.", - "howItWorksStep1Title": "1. CLI & SDKs", - "howItWorksStep1Description": "Your requests start from your favorite tools or our unified SDK. Just change the base URL.", - "howItWorksStep2Title": "2. OmniRoute Hub", - "howItWorksStep2Description": "Our engine analyzes the prompt, checks provider health, and routes for lowest latency or cost.", - "howItWorksStep3Title": "3. AI Providers", - "howItWorksStep3Description": "The request is fulfilled by OpenAI, Anthropic, Gemini, or others instantly.", - "getStartedIn30Seconds": "Get Started in 30 Seconds", - "getStartedDescription": "Install OmniRoute, configure your providers via web dashboard, and start routing AI requests.", - "installOmniRoute": "Install OmniRoute", - "installStepDescription": "Run npx command to start the server instantly", - "openDashboard": "Open Dashboard", - "openDashboardStepDescription": "Configure providers and API keys via web interface", - "routeRequests": "Route Requests", - "routeRequestsStepDescription": "Point your CLI tools to {endpoint}", - "terminal": "terminal", - "copy": "Copy", - "copied": "✓ Copied", - "startingOmniRoute": "Starting OmniRoute...", - "serverRunningOnLabel": "Server running on", - "dashboardLabel": "Dashboard", - "readyToRoute": "Ready to route! ✓", - "configureProvidersNote": "📝 Configure providers in dashboard or use environment variables", - "dataLocation": "Data Location:", + "versionLive": "v1.0 ఇప్పుడు అందుబాటులో ఉంది", + "oneEndpoint": "వీటికోసం ఒకే ఎండ్పాయింట్", + "allProviders": "అన్ని AI ప్రొవైడర్లు", + "heroDescription": "వెబ్ డ్యాష్బోర్డ్తో కూడిన AI ఎండ్పాయింట్ ప్రాక్సీ — CLIProxyAPI యొక్క JavaScript పోర్ట్. Claude Code, OpenAI Codex, Cline, RooCode మరియు ఇతర CLI సాధనాలతో సజావుగా పనిచేస్తుంది.", + "getStarted": "ప్రారంభించండి", + "viewOnGithub": "GitHubలో చూడండి", + "powerfulFeatures": "శక్తివంతమైన ఫీచర్లు", + "featuresSubtitle": "మీ AI మౌలిక సదుపాయాలను ఒకే చోట నిర్వహించడానికి అవసరమైన ప్రతిదీ, విస్తృత స్థాయికి అనుగుణంగా రూపొందించబడింది.", + "featureUnifiedEndpointTitle": "ఏకీకృత ఎండ్పాయింట్", + "featureUnifiedEndpointDesc": "ఒకే ప్రామాణిక API URL ద్వారా అన్ని ప్రొవైడర్లను యాక్సెస్ చేయండి.", + "featureEasySetupTitle": "సులభమైన సెటప్", + "featureEasySetupDesc": "npx కమాండ్తో నిమిషాల్లో ప్రారంభించండి.", + "featureModelFallbackTitle": "మోడల్ ఫాల్బ్యాక్", + "featureModelFallbackDesc": "వైఫల్యం లేదా అధిక లేటెన్సీ ఏర్పడినప్పుడు ప్రొవైడర్లను స్వయంచాలకంగా మార్చండి.", + "featureUsageTrackingTitle": "వినియోగ ట్రాకింగ్", + "featureUsageTrackingDesc": "అన్ని మోడళ్లకు సంబంధించిన వివరణాత్మక విశ్లేషణలు మరియు వ్యయ పర్యవేక్షణ.", + "featureOAuthApiKeysTitle": "OAuth & API కీలు", + "featureOAuthApiKeysDesc": "ఒకే వాల్ట్లో క్రెడెన్షియల్స్ను సురక్షితంగా నిర్వహించండి.", + "featureCloudSyncTitle": "క్లౌడ్ సింక్", + "featureCloudSyncDesc": "మీ కాన్ఫిగరేషన్లను అన్ని పరికరాల్లో తక్షణమే సింక్ చేయండి.", + "featureCliSupportTitle": "CLI మద్దతు", + "featureCliSupportDesc": "Claude Code, Codex, Cline, Cursor మరియు మరిన్ని సాధనాలతో పనిచేస్తుంది.", + "featureDashboardTitle": "డ్యాష్బోర్డ్", + "featureDashboardDesc": "రియల్-టైమ్ ట్రాఫిక్ విశ్లేషణ కోసం విజువల్ డ్యాష్బోర్డ్.", + "howItWorks": "OmniRoute ఎలా పనిచేస్తుంది", + "howItWorksDescription": "మీ అప్లికేషన్ నుండి మా తెలివైన రూటింగ్ లేయర్ ద్వారా పనికి అత్యుత్తమమైన ప్రొవైడర్కు డేటా సజావుగా ప్రవహిస్తుంది.", + "howItWorksStep1Title": "1. CLI & SDKలు", + "howItWorksStep1Description": "మీ అభ్యర్థనలు మీకు ఇష్టమైన సాధనాలు లేదా మా ఏకీకృత SDK నుండి ప్రారంభమవుతాయి. కేవలం బేస్ URLను మార్చండి.", + "howItWorksStep2Title": "2. OmniRoute హబ్", + "howItWorksStep2Description": "మా ఇంజిన్ ప్రాంప్ట్ను విశ్లేషించి, ప్రొవైడర్ స్థితిని తనిఖీ చేసి, అత్యల్ప లేటెన్సీ లేదా వ్యయం కోసం రూట్ చేస్తుంది.", + "howItWorksStep3Title": "3. AI ప్రొవైడర్లు", + "howItWorksStep3Description": "అభ్యర్థనను OpenAI, Anthropic, Gemini లేదా ఇతర ప్రొవైడర్లు తక్షణమే నెరవేరుస్తారు.", + "getStartedIn30Seconds": "30 సెకన్లలో ప్రారంభించండి", + "getStartedDescription": "OmniRouteను ఇన్స్టాల్ చేసి, వెబ్ డ్యాష్బోర్డ్ ద్వారా మీ ప్రొవైడర్లను కాన్ఫిగర్ చేసి, AI అభ్యర్థనలను రూట్ చేయడం ప్రారంభించండి.", + "installOmniRoute": "OmniRouteను ఇన్స్టాల్ చేయండి", + "installStepDescription": "సర్వర్ను తక్షణమే ప్రారంభించడానికి npx కమాండ్ను అమలు చేయండి", + "openDashboard": "డ్యాష్బోర్డ్ను తెరవండి", + "openDashboardStepDescription": "వెబ్ ఇంటర్ఫేస్ ద్వారా ప్రొవైడర్లు మరియు API కీలను కాన్ఫిగర్ చేయండి", + "routeRequests": "అభ్యర్థనలను రూట్ చేయండి", + "routeRequestsStepDescription": "మీ CLI సాధనాలను {endpoint}కు మళ్లించండి", + "terminal": "టెర్మినల్", + "copy": "కాపీ చేయండి", + "copied": "✓ కాపీ చేయబడింది", + "startingOmniRoute": "OmniRoute ప్రారంభమవుతోంది...", + "serverRunningOnLabel": "సర్వర్ అమలవుతున్న చిరునామా", + "dashboardLabel": "డాష్బోర్డ్", + "readyToRoute": "రూట్ చేయడానికి సిద్ధం! ✓", + "configureProvidersNote": "📝 డాష్బోర్డ్లో ప్రొవైడర్లను కాన్ఫిగర్ చేయండి లేదా ఎన్విరాన్మెంట్ వేరియబుల్స్ను ఉపయోగించండి", + "dataLocation": "డేటా స్థానం:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", - "product": "Product", - "dashboardLink": "Dashboard", - "changelog": "Changelog", - "resources": "Resources", - "documentation": "Documentation", + "product": "ఉత్పత్తి", + "dashboardLink": "డాష్బోర్డ్", + "changelog": "మార్పుల చిట్టా", + "resources": "వనరులు", + "documentation": "డాక్యుమెంటేషన్", "npm": "NPM", - "legal": "Legal", - "mitLicense": "MIT License", - "footerTagline": "The unified endpoint for AI generation. Connect, route, and manage your AI providers with ease.", - "copyright": "© {year} OmniRoute. All rights reserved.", + "legal": "చట్టపరమైన సమాచారం", + "mitLicense": "MIT లైసెన్స్", + "footerTagline": "AI జనరేషన్ కోసం ఏకీకృత ఎండ్పాయింట్. మీ AI ప్రొవైడర్లను సులభంగా కనెక్ట్ చేయండి, రూట్ చేయండి మరియు నిర్వహించండి.", + "copyright": "© {year} OmniRoute. అన్ని హక్కులు ప్రత్యేకించబడ్డాయి.", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", "flowToolCline": "Cline", @@ -10004,11 +10011,11 @@ "flowProviderAnthropic": "Anthropic", "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", - "interactiveDiagram": "Interactive diagram visible on desktop", - "ctaTitle": "Ready to Simplify Your AI Infrastructure?", - "ctaDescription": "Join developers who are streamlining their AI integrations with OmniRoute. Open source and free to start.", - "startFree": "Start Free", - "readDocumentation": "Read Documentation", + "interactiveDiagram": "డెస్క్టాప్లో ఇంటరాక్టివ్ డయాగ్రామ్ కనిపిస్తుంది", + "ctaTitle": "మీ AI ఇన్ఫ్రాస్ట్రక్చర్ను సరళీకరించడానికి సిద్ధంగా ఉన్నారా?", + "ctaDescription": "OmniRouteతో తమ AI ఇంటిగ్రేషన్లను క్రమబద్ధీకరిస్తున్న డెవలపర్లతో చేరండి. ఇది ఓపెన్ సోర్స్ మరియు ఉచితంగా ప్రారంభించవచ్చు.", + "startFree": "ఉచితంగా ప్రారంభించండి", + "readDocumentation": "డాక్యుమెంటేషన్ చదవండి", "company": "కంపెనీ", "pricing": "ధరలు", "apiReference": "API సూచిక", @@ -10023,45 +10030,45 @@ "communityDiscussions": "సమాజ చర్చలు" }, "docs": { - "title": "Documentation", - "quickStart": "Quick Start", + "title": "డాక్యుమెంటేషన్", + "quickStart": "త్వరిత ప్రారంభం", "deploymentGuides": "విస్తరణ మార్గదర్శకాలు", - "features": "Features", - "supportedProviders": "Supported Providers", - "supportedProvidersToc": "Providers", - "commonUseCases": "Common Use Cases", - "clientCompatibility": "Client Compatibility", - "protocolsToc": "Protocols", - "apiReference": "API Reference", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", - "method": "Method", - "path": "Path", - "notes": "Notes", - "modelPrefixes": "Model Prefixes", - "prefix": "Prefix", - "troubleshooting": "Troubleshooting", - "supportsChat": "Supports both chat and responses endpoints.", - "oauthAutoRefresh": "OAuth connection with automatic token refresh.", - "fullStreaming": "Full streaming support for all models.", - "docsLabel": "Docs", + "features": "ఫీచర్లు", + "supportedProviders": "మద్దతు ఉన్న ప్రొవైడర్లు", + "supportedProvidersToc": "ప్రొవైడర్లు", + "commonUseCases": "సాధారణ వినియోగ సందర్భాలు", + "clientCompatibility": "క్లయింట్ అనుకూలత", + "protocolsToc": "ప్రోటోకాల్లు", + "apiReference": "API రిఫరెన్స్", + "managementApiReference": "మేనేజ్మెంట్ API రిఫరెన్స్", + "managementApiDescription": "ప్రాక్సీ రిజిస్ట్రీ, స్కోప్ కేటాయింపులు మరియు లెగసీ ప్రాక్సీ మైగ్రేషన్ కోసం ఆటోమేషన్ ఎండ్పాయింట్లు.", + "method": "పద్ధతి", + "path": "పాత్", + "notes": "గమనికలు", + "modelPrefixes": "మోడల్ ప్రిఫిక్స్లు", + "prefix": "ప్రిఫిక్స్", + "troubleshooting": "సమస్య పరిష్కారం", + "supportsChat": "చాట్ మరియు రెస్పాన్సెస్ ఎండ్పాయింట్లు రెండింటికీ మద్దతు ఇస్తుంది.", + "oauthAutoRefresh": "ఆటోమేటిక్ టోకెన్ రిఫ్రెష్తో OAuth కనెక్షన్.", + "fullStreaming": "అన్ని మోడళ్లకు పూర్తి స్ట్రీమింగ్ మద్దతు.", + "docsLabel": "డాక్యుమెంటేషన్", "docsHeroDescription": "AI gateway for multi-provider LLMs. One endpoint for OpenAI, Anthropic, Gemini, DeepSeek, GitHub Copilot, Claude Code, Cursor, and 100+ more providers.", - "openDashboard": "Open Dashboard", - "endpointPage": "Endpoint Page", + "openDashboard": "డ్యాష్బోర్డ్ను తెరవండి", + "endpointPage": "ఎండ్పాయింట్ పేజీ", "github": "GitHub", - "reportIssue": "Report Issue", - "onThisPage": "On this page", - "documentationVersion": "Documentation - v{version}", - "quickStartStep1Title": "1. Install and run", - "quickStartStep1Prefix": "Run", - "quickStartStep1Middle": "or clone from GitHub and run", - "quickStartStep2Title": "2. Create API key", - "quickStartStep2Text": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "quickStartStep3Title": "3. Connect providers", - "quickStartStep3Text": "Add provider accounts via OAuth login, API key, or free-tier auto-connect.", - "quickStartStep4Title": "4. Set client base URL", - "quickStartStep4Prefix": "Point your IDE or API client to", - "quickStartStep4Suffix": "Use provider prefix, for example", + "reportIssue": "సమస్యను నివేదించండి", + "onThisPage": "ఈ పేజీలో", + "documentationVersion": "డాక్యుమెంటేషన్ - v{version}", + "quickStartStep1Title": "1. ఇన్స్టాల్ చేసి అమలు చేయండి", + "quickStartStep1Prefix": "అమలు చేయండి", + "quickStartStep1Middle": "లేదా GitHub నుండి క్లోన్ చేసి అమలు చేయండి", + "quickStartStep2Title": "2. API కీని సృష్టించండి", + "quickStartStep2Text": "Endpoint -> Registered Keysకు వెళ్లండి. ప్రతి ఎన్విరాన్మెంట్కు ఒక కీని రూపొందించండి.", + "quickStartStep3Title": "3. ప్రొవైడర్లను కనెక్ట్ చేయండి", + "quickStartStep3Text": "OAuth లాగిన్, API కీ లేదా ఫ్రీ-టియర్ ఆటో-కనెక్ట్ ద్వారా ప్రొవైడర్ ఖాతాలను జోడించండి.", + "quickStartStep4Title": "4. క్లయింట్ బేస్ URLను సెట్ చేయండి", + "quickStartStep4Prefix": "మీ IDE లేదా API క్లయింట్ను దీనికి మళ్లించండి", + "quickStartStep4Suffix": "ప్రొవైడర్ ప్రిఫిక్స్ను ఉపయోగించండి, ఉదాహరణకు", "deploySetupTitle": "సెటప్ గైడ్", "deploySetupText": "OmniRoute కోసం దశల వారీ ఇన్‌స్టాలేషన్, ఎన్విరాన్‌మెంట్ కాన్ఫిగరేషన్ మరియు ఫస్ట్-రన్ వాక్‌త్రూ.", "deployElectronTitle": "ఎలక్ట్రాన్ డెస్క్‌టాప్", @@ -10075,161 +10082,161 @@ "deployPwaTitle": "PWA", "deployPwaText": "Android, iOS మరియు డెస్క్‌టాప్ బ్రౌజర్‌లలో ప్రోగ్రెసివ్ వెబ్ యాప్‌గా OmniRouteని ఇన్‌స్టాల్ చేయండి.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", - "featureRoutingTitle": "Multi-Provider Routing", - "featureRoutingText": "Route requests to 30+ AI providers through a single OpenAI-compatible endpoint. Supports chat, responses, audio, and image APIs.", - "featureCombosTitle": "Combos and Balancing", - "featureCombosText": "Create model combos with fallback chains and balancing strategies: round-robin, priority, random, least-used, and cost-optimized.", - "featureUsageTitle": "Usage and Cost Tracking", - "featureUsageText": "Real-time token counting, cost calculation per provider/model, and detailed usage breakdown by API key and account.", - "featureAnalyticsTitle": "Analytics Dashboard", - "featureAnalyticsText": "Visual analytics with charts for requests, tokens, errors, latency, costs, and model popularity over time.", - "featureHealthTitle": "Health Monitoring", - "featureHealthText": "Live health checks, provider status, circuit breaker states, and automatic rate limit detection with exponential backoff.", - "featureCliTitle": "CLI Tools", - "featureCliText": "Manage IDE configurations, export/import backups, discover codex profiles, and configure settings from the dashboard.", - "featureSecurityTitle": "Security and Policies", - "featureSecurityText": "API key authentication, IP filtering, prompt injection guard, domain policies, session management, and audit logging.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncText": "Sync your configuration to Cloudflare Workers for remote access with encrypted credentials and automatic failover.", - "providersAcrossConnectionTypes": "{count} providers across three connection types.", - "manageProviders": "Manage Providers", - "providersCount": "{count} providers", - "providerTypeFree": "Free Tier", + "deployTermuxText": "Termux ద్వారా Androidలో OmniRouteను హెడ్లెస్గా అమలు చేయండి. మీ మొబైల్ బ్రౌజర్ నుండి డ్యాష్బోర్డ్ను యాక్సెస్ చేయండి.", + "featureRoutingTitle": "బహుళ-ప్రొవైడర్ రూటింగ్", + "featureRoutingText": "ఒకే OpenAI-అనుకూల ఎండ్పాయింట్ ద్వారా అభ్యర్థనలను 30+ AI ప్రొవైడర్లకు రూట్ చేయండి. చాట్, రెస్పాన్సెస్, ఆడియో మరియు ఇమేజ్ APIలకు మద్దతు ఇస్తుంది.", + "featureCombosTitle": "కాంబోలు మరియు బ్యాలెన్సింగ్", + "featureCombosText": "ఫాల్బ్యాక్ చైన్లు మరియు బ్యాలెన్సింగ్ వ్యూహాలతో మోడల్ కాంబోలను సృష్టించండి: రౌండ్-రాబిన్, ప్రాధాన్యత, యాదృచ్ఛికం, అత్యల్ప వినియోగం మరియు ఖర్చు-ఆప్టిమైజ్డ్.", + "featureUsageTitle": "వినియోగం మరియు ఖర్చు ట్రాకింగ్", + "featureUsageText": "రియల్-టైమ్ టోకెన్ లెక్కింపు, ప్రతి ప్రొవైడర్/మోడల్కు ఖర్చు గణన మరియు API కీ, ఖాతా వారీగా వివరణాత్మక వినియోగ విభజన.", + "featureAnalyticsTitle": "అనలిటిక్స్ డ్యాష్బోర్డ్", + "featureAnalyticsText": "కాలక్రమేణా అభ్యర్థనలు, టోకెన్లు, లోపాలు, లేటెన్సీ, ఖర్చులు మరియు మోడల్ ప్రజాదరణకు సంబంధించిన చార్ట్లతో విజువల్ అనలిటిక్స్.", + "featureHealthTitle": "హెల్త్ మానిటరింగ్", + "featureHealthText": "లైవ్ హెల్త్ చెక్లు, ప్రొవైడర్ స్థితి, సర్క్యూట్ బ్రేకర్ స్థితులు మరియు ఎక్స్పోనెన్షియల్ బ్యాక్ఆఫ్తో ఆటోమేటిక్ రేట్ లిమిట్ గుర్తింపు.", + "featureCliTitle": "CLI సాధనాలు", + "featureCliText": "IDE కాన్ఫిగరేషన్లను నిర్వహించండి, బ్యాకప్లను ఎక్స్పోర్ట్/ఇంపోర్ట్ చేయండి, codex ప్రొఫైల్లను కనుగొనండి మరియు డ్యాష్బోర్డ్ నుండి సెట్టింగ్లను కాన్ఫిగర్ చేయండి.", + "featureSecurityTitle": "భద్రత మరియు విధానాలు", + "featureSecurityText": "API కీ ప్రమాణీకరణ, IP ఫిల్టరింగ్, ప్రాంప్ట్ ఇంజెక్షన్ గార్డ్, డొమైన్ విధానాలు, సెషన్ నిర్వహణ మరియు ఆడిట్ లాగింగ్.", + "featureCloudSyncTitle": "క్లౌడ్ సింక్", + "featureCloudSyncText": "ఎన్క్రిప్ట్ చేసిన క్రెడెన్షియల్స్ మరియు ఆటోమేటిక్ ఫెయిల్ఓవర్తో రిమోట్ యాక్సెస్ కోసం మీ కాన్ఫిగరేషన్ను Cloudflare Workersకు సింక్ చేయండి.", + "providersAcrossConnectionTypes": "మూడు కనెక్షన్ రకాలలో {count} ప్రొవైడర్లు.", + "manageProviders": "ప్రొవైడర్లను నిర్వహించండి", + "providersCount": "{count} ప్రొవైడర్లు", + "providerTypeFree": "ఉచిత శ్రేణి", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", - "useCaseSingleEndpointTitle": "Single endpoint for many providers", - "useCaseSingleEndpointText": "Point clients to one base URL and route by model prefix (for example: gh/, cc/, kr/, openai/).", - "useCaseFallbackTitle": "Fallback and model switching with combos", - "useCaseFallbackText": "Create combo models in Dashboard and keep client config stable while providers rotate internally.", - "useCaseUsageVisibilityTitle": "Usage, cost and debug visibility", - "useCaseUsageVisibilityText": "Track tokens and cost by provider, account, and API key in Usage and Analytics tabs.", + "providerTypeApiKey": "API కీ", + "useCaseSingleEndpointTitle": "అనేక ప్రొవైడర్ల కోసం ఒకే ఎండ్పాయింట్", + "useCaseSingleEndpointText": "క్లయింట్లను ఒకే బేస్ URLకు మళ్లించి, మోడల్ ప్రిఫిక్స్ ఆధారంగా రూట్ చేయండి (ఉదాహరణకు: gh/, cc/, kr/, openai/).", + "useCaseFallbackTitle": "కాంబోలతో ఫాల్బ్యాక్ మరియు మోడల్ మార్పిడి", + "useCaseFallbackText": "Dashboardలో కాంబో మోడళ్లను సృష్టించి, ప్రొవైడర్లు అంతర్గతంగా మారుతున్నప్పటికీ క్లయింట్ కాన్ఫిగరేషన్ను స్థిరంగా ఉంచండి.", + "useCaseUsageVisibilityTitle": "వినియోగం, ఖర్చు మరియు డీబగ్ వివరాలు", + "useCaseUsageVisibilityText": "Usage మరియు Analytics ట్యాబ్లలో ప్రొవైడర్, ఖాతా మరియు API కీ వారీగా టోకెన్లు, ఖర్చును ట్రాక్ చేయండి.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", - "modelRecommendationLabel": "Model recommendation: explicit prefix", - "clientCodexTitle": "Codex / GitHub Copilot Models", - "clientCodexBullet1": "Use model IDs with", - "clientCodexBullet2": "Codex-family models auto-route to", - "clientCodexBullet3": "Non-Codex models continue on", + "baseUrlLabel": "బేస్ URL", + "chatEndpointLabel": "చాట్ ఎండ్పాయింట్", + "modelRecommendationLabel": "మోడల్ సిఫార్సు: స్పష్టమైన ప్రిఫిక్స్", + "clientCodexTitle": "Codex / GitHub Copilot మోడళ్లు", + "clientCodexBullet1": "మోడల్ IDలను దీనితో ఉపయోగించండి", + "clientCodexBullet2": "Codex-కుటుంబ మోడళ్లు స్వయంచాలకంగా దీనికి రూట్ అవుతాయి", + "clientCodexBullet3": "Codex కాని మోడళ్లు దీనిపైనే కొనసాగుతాయి", "clientCursorTitle": "Cursor IDE", - "clientCursorBullet1": "Use", - "clientCursorBullet1Suffix": "prefix for Cursor models.", - "clientCursorBullet2": "OAuth connection - login from the Providers page.", + "clientCursorBullet1": "దీనిని ఉపయోగించండి", + "clientCursorBullet1Suffix": "Cursor మోడళ్ల కోసం ప్రిఫిక్స్.", + "clientCursorBullet2": "OAuth కనెక్షన్ — Providers పేజీ నుండి లాగిన్ చేయండి.", "clientClaudeTitle": "Claude Code / Antigravity", - "clientClaudeBullet1Prefix": "Use", - "clientClaudeBullet1Middle": "(Claude) or", - "clientClaudeBullet1Suffix": "(Antigravity) prefix.", + "clientClaudeBullet1Prefix": "దీనిని ఉపయోగించండి", + "clientClaudeBullet1Middle": "(Claude) లేదా", + "clientClaudeBullet1Suffix": "(Antigravity) ప్రిఫిక్స్.", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "Use OmniRoute as an OpenAI-compatible base URL and keep explicit provider prefixes for deterministic routing.", - "clientWindsurfBullet2": "Point models to `/v1/chat/completions` for general traffic and preserve `/v1/responses` for Codex-style flows.", - "clientWindsurfBullet3": "Use Dashboard -> CLI Tools for a ready-made Windsurf configuration guide.", + "clientWindsurfBullet1": "OmniRouteను OpenAI-అనుకూల బేస్ URLగా ఉపయోగించి, నిర్దిష్ట రూటింగ్ కోసం స్పష్టమైన ప్రొవైడర్ ప్రిఫిక్స్లను ఉంచండి.", + "clientWindsurfBullet2": "సాధారణ ట్రాఫిక్ కోసం మోడళ్లను `/v1/chat/completions`కు మళ్లించి, Codex-శైలి ఫ్లోల కోసం `/v1/responses`ను అలాగే ఉంచండి.", + "clientWindsurfBullet3": "సిద్ధంగా ఉన్న Windsurf కాన్ఫిగరేషన్ మార్గదర్శిని కోసం Dashboard -> CLI Toolsను ఉపయోగించండి.", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline works best with explicit provider/model prefixes so the router never has to guess the backend.", - "clientClineBullet2": "Use `/v1/chat/completions` for general models and reuse the same OmniRoute base URL across different accounts.", - "clientClineBullet3": "Use the Providers dashboard to validate OAuth/API key before debugging Cline runtime issues.", + "clientClineBullet1": "స్పష్టమైన ప్రొవైడర్/మోడల్ ప్రిఫిక్స్లతో Cline ఉత్తమంగా పనిచేస్తుంది, తద్వారా రూటర్ బ్యాకెండ్ను ఊహించాల్సిన అవసరం ఉండదు.", + "clientClineBullet2": "సాధారణ మోడళ్ల కోసం `/v1/chat/completions`ను ఉపయోగించి, వేర్వేరు ఖాతాల్లో అదే OmniRoute బేస్ URLను తిరిగి ఉపయోగించండి.", + "clientClineBullet3": "Cline రన్టైమ్ సమస్యలను డీబగ్ చేయడానికి ముందు OAuth/API కీని ధృవీకరించేందుకు Providers డ్యాష్బోర్డ్ను ఉపయోగించండి.", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "Use OmniRoute as a stable base URL while rotating accounts or provider combos underneath.", - "clientKimiBullet2": "Prefer prefixed models in coding flows so fallback and audit trail remain explicit.", - "clientKimiBullet3": "Use `/v1/responses` when you want native Responses-style routing for tool-using clients.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "clientKimiBullet1": "అంతర్గతంగా ఖాతాలు లేదా ప్రొవైడర్ కాంబోలను మారుస్తూనే, OmniRouteను స్థిరమైన బేస్ URLగా ఉపయోగించండి.", + "clientKimiBullet2": "ఫాల్బ్యాక్ మరియు ఆడిట్ ట్రయల్ స్పష్టంగా ఉండేలా కోడింగ్ ఫ్లోలలో ప్రిఫిక్స్గల మోడళ్లకు ప్రాధాన్యం ఇవ్వండి.", + "clientKimiBullet3": "టూల్స్ను ఉపయోగించే క్లయింట్ల కోసం స్థానిక Responses-శైలి రూటింగ్ కావాలనుకున్నప్పుడు `/v1/responses`ను ఉపయోగించండి.", + "protocolsTitle": "ప్రోటోకాల్లు: MCP & A2A", + "protocolsDescription": "OpenAI-అనుకూల APIలతో పాటు OmniRoute రెండు కార్యాచరణ ప్రోటోకాల్లను అందిస్తుంది: టూల్ అమలు కోసం MCP మరియు ఏజెంట్-టు-ఏజెంట్ వర్క్ఫ్లోల కోసం A2A.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "ఆడిట్ విజిబిలిటీతో OmniRoute టూల్స్ను కనుగొని కాల్ చేయడానికి క్లయింట్లను అనుమతించేందుకు stdio ద్వారా MCPని ఉపయోగించండి.", + "protocolMcpStep1": "`omniroute --mcp`తో MCP ట్రాన్స్పోర్ట్ను ప్రారంభించండి.", + "protocolMcpStep2": "మీ MCP క్లయింట్ను stdio ట్రాన్స్పోర్ట్కు మళ్లించండి.", + "protocolMcpStep3": "కనెక్టివిటీని ధృవీకరించడానికి `omniroute_get_health` మరియు `omniroute_list_combos`లను కాల్ చేయండి.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", - "endpointChatNote": "OpenAI-compatible chat endpoint (default).", - "endpointResponsesNote": "Responses API endpoint (Codex, o-series).", - "endpointModelsNote": "Model catalog for all connected providers.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", - "endpointSpeechNote": "Text-to-speech generation (ElevenLabs, OpenAI TTS).", - "endpointEmbeddingsNote": "Text embedding generation (OpenAI, Cohere, Voyage).", - "endpointImagesNote": "Image generation (NanoBanana).", - "endpointRewriteChatNote": "Rewrite helper for clients without /v1.", - "endpointRewriteResponsesNote": "Rewrite helper for Responses without /v1.", - "endpointRewriteModelsNote": "Rewrite helper for model discovery without /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", - "modelPrefixesDescriptionStart": "Use the provider prefix before the model name to route to a specific provider. Example:", - "modelPrefixesDescriptionEnd": "routes to GitHub Copilot.", - "provider": "Provider", - "type": "Type", - "troubleshootingModelRouting": "If the client fails with model routing, use explicit provider/model (for example: gh/gpt-5.1-codex).", - "troubleshootingAmbiguousModels": "If you receive ambiguous model errors, pick a provider prefix instead of a bare model ID.", - "troubleshootingCodexFamily": "For GitHub Codex-family models, keep model as gh/codex-model; router selects /responses automatically.", - "troubleshootingTestConnection": "Use Dashboard > Providers > Test Connection before testing from IDEs or external clients.", - "troubleshootingCircuitBreaker": "If a provider shows circuit breaker open, wait for the cooldown or check Health page for details.", - "troubleshootingOAuth": "For OAuth providers, re-authenticate if tokens expire. Check the provider card status indicator.", - "endpointCompletionsNote": "Legacy completions endpoint for text generation.", - "endpointModerationsNote": "Content moderation and safety classification.", - "endpointRerankNote": "Document reranking for retrieval-augmented generation (Cohere, Jina).", - "endpointSearchNote": "Web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity).", - "endpointSearchAnalyticsNote": "Analytics and metrics for search requests.", - "endpointVideoNote": "Video generation (ComfyUI, SD WebUI workflows).", - "endpointMusicNote": "Music generation via ComfyUI workflows.", - "endpointMessagesNote": "Anthropic-native messages endpoint.", - "endpointCountTokensNote": "Count tokens for a given message payload.", - "endpointFilesNote": "File upload for multimodal inputs.", - "endpointBatchesNote": "Batch processing for bulk API requests.", - "endpointWsNote": "WebSocket endpoint for real-time streaming.", - "mgmtProvidersListNote": "List all registered provider connections.", - "mgmtProvidersCreateNote": "Create a new provider connection.", - "mgmtProvidersUpdateNote": "Update an existing provider connection.", - "mgmtProvidersDeleteNote": "Delete a provider connection.", - "mgmtProvidersTestNote": "Test connectivity and authentication for a provider.", - "mgmtProvidersModelsNote": "List available models for a specific provider.", - "mgmtSettingsGetNote": "Retrieve current application settings.", - "mgmtSettingsUpdateNote": "Update application settings.", - "mgmtPayloadRulesGetNote": "Get payload transformation rules.", - "mgmtPayloadRulesUpdateNote": "Update payload transformation rules.", - "mcpToolsTitle": "MCP Tools", - "mcpToolsDescription": "OmniRoute exposes {count} tools via Model Context Protocol for agent orchestration.", - "mcpToolsCount": "{count} tools", - "mcpToolsToc": "MCP Tools", - "mcpToolsRoutingTitle": "Routing & Discovery", - "mcpToolsRoutingDesc": "Health checks, combo management, quota monitoring, cost reporting, and model catalog access.", - "mcpToolsOperationsTitle": "Operations & Strategy", - "mcpToolsOperationsDesc": "Route simulation, budget guards, strategy switching, resilience profiles, and provider metrics.", - "mcpToolsCacheTitle": "Cache Management", - "mcpToolsCacheDesc": "View cache statistics and flush semantic or signature caches.", + "protocolA2aDesc": "టాస్క్లను సమకాలికంగా లేదా SSE స్ట్రీమింగ్ ద్వారా సమర్పించడానికి A2A JSON-RPCని ఉపయోగించండి.", + "protocolA2aStep1": "ఏజెంట్ను కనుగొనడానికి `/.well-known/agent.json`ను చదవండి.", + "protocolA2aStep2": "`POST /a2a`కు `message/send` లేదా `message/stream` అభ్యర్థనలను పంపండి.", + "protocolA2aStep3": "`tasks/get` మరియు `tasks/cancel`తో టాస్క్ జీవితచక్రాన్ని నిర్వహించండి.", + "protocolTroubleshootingTitle": "ప్రోటోకాల్ సమస్యల పరిష్కారం", + "protocolTroubleshooting1": "MCP స్థితి ఆఫ్లైన్లో ఉంటే, stdio ప్రాసెస్ నడుస్తోందని మరియు హార్ట్బీట్ ఫైల్ అప్డేట్ అవుతోందని ధృవీకరించండి.", + "protocolTroubleshooting2": "A2A టాస్క్లు `working`లోనే ఉండిపోతే, `/api/a2a/tasks/:id`ను పరిశీలించి, తుది స్థితి కోసం ఈవెంట్లను స్ట్రీమ్ చేయండి.", + "protocolTroubleshooting3": "కార్యాచరణ నియంత్రణలు మరియు ఆడిట్ దృశ్యమానత కోసం `/dashboard/mcp` మరియు `/dashboard/a2a`లను ఉపయోగించండి.", + "endpointChatNote": "OpenAI-అనుకూల చాట్ ఎండ్పాయింట్ (డిఫాల్ట్).", + "endpointResponsesNote": "Responses API ఎండ్పాయింట్ (Codex, o-series).", + "endpointModelsNote": "కనెక్ట్ చేయబడిన అన్ని ప్రొవైడర్ల మోడల్ కేటలాగ్.", + "endpointAudioNote": "ఆడియో ట్రాన్స్క్రిప్షన్ (Deepgram, AssemblyAI).", + "endpointSpeechNote": "టెక్స్ట్-టు-స్పీచ్ జనరేషన్ (ElevenLabs, OpenAI TTS).", + "endpointEmbeddingsNote": "టెక్స్ట్ ఎంబెడ్డింగ్ జనరేషన్ (OpenAI, Cohere, Voyage).", + "endpointImagesNote": "చిత్ర సృష్టి (NanoBanana).", + "endpointRewriteChatNote": "/v1 లేని క్లయింట్ల కోసం రీరైట్ సహాయకం.", + "endpointRewriteResponsesNote": "/v1 లేని Responses కోసం రీరైట్ సహాయకం.", + "endpointRewriteModelsNote": "/v1 లేని మోడల్ డిస్కవరీ కోసం రీరైట్ సహాయకం.", + "mgmtProxiesListNote": "సేవ్ చేసిన ప్రాక్సీ రిజిస్ట్రీ అంశాలను జాబితా చేయండి (పేజినేషన్కు మద్దతు ఉంది).", + "mgmtProxiesCreateNote": "రిజిస్ట్రీలో మళ్లీ ఉపయోగించగల ప్రాక్సీ అంశాన్ని సృష్టించండి.", + "mgmtProxiesHealthNote": "ప్రాక్సీ లాగ్ల నుండి సేవ్ చేసిన ప్రతి ప్రాక్సీకి 24గం./రోలింగ్ హెల్త్ మెట్రిక్లను పొందండి.", + "mgmtProxiesBulkAssignNote": "ఒకే అభ్యర్థనలో అనేక స్కోప్ IDలకు ఒక ప్రాక్సీని కేటాయించండి లేదా తొలగించండి.", + "mgmtAssignmentsListNote": "scope, scope_id లేదా proxy_id ఆధారంగా ప్రాక్సీ కేటాయింపులను జాబితా చేయండి.", + "mgmtAssignmentsUpdateNote": "global/provider/account/combo స్కోప్కు ప్రాక్సీని కేటాయించండి లేదా తొలగించండి.", + "mgmtLegacyMigrationNote": "లెగసీ proxyConfig మ్యాప్లను రిజిస్ట్రీ కేటాయింపుల్లోకి దిగుమతి చేయండి.", + "modelPrefixesDescriptionStart": "నిర్దిష్ట ప్రొవైడర్కు రూట్ చేయడానికి మోడల్ పేరుకు ముందు ప్రొవైడర్ ప్రిఫిక్స్ను ఉపయోగించండి. ఉదాహరణ:", + "modelPrefixesDescriptionEnd": "GitHub Copilotకు రూట్ చేస్తుంది.", + "provider": "ప్రొవైడర్", + "type": "రకం", + "troubleshootingModelRouting": "మోడల్ రూటింగ్తో క్లయింట్ విఫలమైతే, స్పష్టమైన provider/modelను ఉపయోగించండి (ఉదాహరణకు: gh/gpt-5.1-codex).", + "troubleshootingAmbiguousModels": "అస్పష్టమైన మోడల్ లోపాలు వస్తే, కేవలం మోడల్ IDకు బదులుగా ప్రొవైడర్ ప్రిఫిక్స్ను ఎంచుకోండి.", + "troubleshootingCodexFamily": "GitHub Codex-కుటుంబ మోడల్ల కోసం, మోడల్ను gh/codex-modelగానే ఉంచండి; రౌటర్ స్వయంచాలకంగా /responsesను ఎంచుకుంటుంది.", + "troubleshootingTestConnection": "IDEలు లేదా బాహ్య క్లయింట్ల నుండి పరీక్షించే ముందు Dashboard > Providers > Test Connectionను ఉపయోగించండి.", + "troubleshootingCircuitBreaker": "ఒక ప్రొవైడర్లో సర్క్యూట్ బ్రేకర్ తెరిచి ఉన్నట్లు కనిపిస్తే, కూల్డౌన్ పూర్తయ్యే వరకు వేచి ఉండండి లేదా వివరాల కోసం Health పేజీని తనిఖీ చేయండి.", + "troubleshootingOAuth": "OAuth ప్రొవైడర్లకు టోకెన్ల గడువు ముగిస్తే, మళ్లీ ప్రామాణీకరించండి. ప్రొవైడర్ కార్డ్ స్థితి సూచికను తనిఖీ చేయండి.", + "endpointCompletionsNote": "టెక్స్ట్ జనరేషన్ కోసం లెగసీ కంప్లీషన్స్ ఎండ్పాయింట్.", + "endpointModerationsNote": "కంటెంట్ మోడరేషన్ మరియు భద్రతా వర్గీకరణ.", + "endpointRerankNote": "రిట్రీవల్-ఆగ్మెంటెడ్ జనరేషన్ కోసం డాక్యుమెంట్ రీర్యాంకింగ్ (Cohere, Jina).", + "endpointSearchNote": "5 ప్రొవైడర్లతో వెబ్ శోధన (Serper, Brave, Exa, Tavily, Perplexity).", + "endpointSearchAnalyticsNote": "శోధన అభ్యర్థనల కోసం విశ్లేషణలు మరియు మెట్రిక్లు.", + "endpointVideoNote": "వీడియో జనరేషన్ (ComfyUI, SD WebUI వర్క్ఫ్లోలు).", + "endpointMusicNote": "ComfyUI వర్క్ఫ్లోల ద్వారా సంగీత జనరేషన్.", + "endpointMessagesNote": "Anthropic-నేటివ్ సందేశాల ఎండ్పాయింట్.", + "endpointCountTokensNote": "ఇచ్చిన సందేశ పేలోడ్లోని టోకెన్లను లెక్కించండి.", + "endpointFilesNote": "మల్టీమోడల్ ఇన్పుట్ల కోసం ఫైల్ అప్లోడ్.", + "endpointBatchesNote": "పెద్ద మొత్తంలోని API అభ్యర్థనల కోసం బ్యాచ్ ప్రాసెసింగ్.", + "endpointWsNote": "రియల్-టైమ్ స్ట్రీమింగ్ కోసం WebSocket ఎండ్పాయింట్.", + "mgmtProvidersListNote": "నమోదైన అన్ని ప్రొవైడర్ కనెక్షన్లను జాబితా చేయండి.", + "mgmtProvidersCreateNote": "కొత్త ప్రొవైడర్ కనెక్షన్ను సృష్టించండి.", + "mgmtProvidersUpdateNote": "ఇప్పటికే ఉన్న ప్రొవైడర్ కనెక్షన్ను నవీకరించండి.", + "mgmtProvidersDeleteNote": "ప్రొవైడర్ కనెక్షన్ను తొలగించండి.", + "mgmtProvidersTestNote": "ప్రొవైడర్ కోసం కనెక్టివిటీ మరియు ప్రామాణీకరణను పరీక్షించండి.", + "mgmtProvidersModelsNote": "నిర్దిష్ట ప్రొవైడర్ కోసం అందుబాటులో ఉన్న మోడల్లను జాబితా చేయండి.", + "mgmtSettingsGetNote": "ప్రస్తుత అప్లికేషన్ సెట్టింగ్లను పొందండి.", + "mgmtSettingsUpdateNote": "అప్లికేషన్ సెట్టింగ్లను నవీకరించండి.", + "mgmtPayloadRulesGetNote": "పేలోడ్ పరివర్తన నియమాలను పొందండి.", + "mgmtPayloadRulesUpdateNote": "పేలోడ్ పరివర్తన నియమాలను నవీకరించండి.", + "mcpToolsTitle": "MCP సాధనాలు", + "mcpToolsDescription": "ఏజెంట్ ఆర్కెస్ట్రేషన్ కోసం Model Context Protocol ద్వారా OmniRoute {count} సాధనాలను అందుబాటులో ఉంచుతుంది.", + "mcpToolsCount": "{count} సాధనాలు", + "mcpToolsToc": "MCP సాధనాలు", + "mcpToolsRoutingTitle": "రూటింగ్ & అన్వేషణ", + "mcpToolsRoutingDesc": "స్థితి తనిఖీలు, కాంబో నిర్వహణ, కోటా పర్యవేక్షణ, ఖర్చు నివేదన మరియు మోడల్ కేటలాగ్ యాక్సెస్.", + "mcpToolsOperationsTitle": "కార్యకలాపాలు & వ్యూహం", + "mcpToolsOperationsDesc": "రూట్ సిమ్యులేషన్, బడ్జెట్ రక్షణలు, వ్యూహ మార్పిడి, స్థితిస్థాపకత ప్రొఫైల్లు మరియు ప్రొవైడర్ మెట్రిక్లు.", + "mcpToolsCacheTitle": "క్యాష్ నిర్వహణ", + "mcpToolsCacheDesc": "క్యాష్ గణాంకాలను వీక్షించండి మరియు సెమాంటిక్ లేదా సిగ్నేచర్ క్యాష్లను ఖాళీ చేయండి.", "mcpToolsCompressionTitle": "కంప్రెషన్ ఇంజన్లు", "mcpToolsCompressionDesc": "RTK/Brotli కంప్రెషన్, స్వాప్ ఇంజిన్‌లను కాన్ఫిగర్ చేయండి మరియు కాంబో ద్వారా కంప్రెషన్ అనలిటిక్స్‌ను తనిఖీ చేయండి.", "mcpToolsOneProxyTitle": "1ప్రాక్సీ / టన్నెల్స్", "mcpToolsOneProxyDesc": "అవుట్‌బౌండ్ ప్రాక్సీలను నిర్వహించండి, నివాస IPలను తిప్పండి మరియు ప్రాక్సీ ఆరోగ్యాన్ని తనిఖీ చేయండి.", - "mcpToolsMemoryTitle": "Memory", - "mcpToolsMemoryDesc": "Search, add, and clear persistent conversational memory entries.", - "mcpToolsSkillsTitle": "Skills", - "mcpToolsSkillsDesc": "List, enable, execute, and monitor custom skill executions.", - "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "Automatically create optimized combos based on your connected providers, usage patterns, and model capabilities.", - "featureSearchTitle": "Web Search", - "featureSearchText": "Integrated web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity) including analytics and cost tracking.", - "featureMemoryTitle": "Memory System", - "featureMemoryText": "Persistent conversational memory with extraction, injection, retrieval, and summarization across sessions.", - "featureSkillsTitle": "Skills Framework", - "featureSkillsText": "Extensible skill system with built-in and custom skills, sandbox execution, request interception, and context injection.", - "featureAcpTitle": "Agent Communication", - "featureAcpText": "Agent Communication Protocol (ACP) registry for managing agent-to-agent workflows and tool orchestration.", - "protocolAcpTitle": "ACP (Agent Communication)", - "protocolAcpDesc": "Register and manage agents via the ACP registry for inter-agent communication and tool sharing.", - "protocolAcpStep1": "Navigate to Dashboard → Agents to view registered ACP agents.", - "protocolAcpStep2": "Register new agents with capabilities and endpoint configuration.", - "protocolAcpStep3": "Use CLI Tools to configure agent communication channels.", + "mcpToolsMemoryTitle": "మెమరీ", + "mcpToolsMemoryDesc": "శాశ్వత సంభాషణ మెమరీ ఎంట్రీలను శోధించండి, జోడించండి మరియు తొలగించండి.", + "mcpToolsSkillsTitle": "నైపుణ్యాలు", + "mcpToolsSkillsDesc": "అనుకూల నైపుణ్య అమలులను జాబితా చేయండి, ప్రారంభించండి, అమలు చేయండి మరియు పర్యవేక్షించండి.", + "featureAutoComboTitle": "ఆటో-కాంబో", + "featureAutoComboText": "మీ కనెక్ట్ చేసిన ప్రొవైడర్లు, వినియోగ విధానాలు మరియు మోడల్ సామర్థ్యాల ఆధారంగా ఆప్టిమైజ్ చేసిన కాంబోలను స్వయంచాలకంగా సృష్టించండి.", + "featureSearchTitle": "వెబ్ శోధన", + "featureSearchText": "విశ్లేషణలు మరియు ఖర్చు ట్రాకింగ్తో సహా 5 ప్రొవైడర్లతో (Serper, Brave, Exa, Tavily, Perplexity) సమీకృత వెబ్ శోధన.", + "featureMemoryTitle": "మెమరీ వ్యవస్థ", + "featureMemoryText": "సెషన్ల అంతటా సంగ్రహణ, చొప్పింపు, తిరిగి పొందడం మరియు సారాంశీకరణతో కూడిన శాశ్వత సంభాషణ మెమరీ.", + "featureSkillsTitle": "నైపుణ్యాల ఫ్రేమ్వర్క్", + "featureSkillsText": "అంతర్నిర్మిత మరియు అనుకూల నైపుణ్యాలు, శాండ్బాక్స్ అమలు, అభ్యర్థన అంతరాయనం మరియు సందర్భ చొప్పింపుతో కూడిన విస్తరించదగిన నైపుణ్య వ్యవస్థ.", + "featureAcpTitle": "ఏజెంట్ కమ్యూనికేషన్", + "featureAcpText": "ఏజెంట్ల మధ్య వర్క్ఫ్లోలు మరియు టూల్ ఆర్కెస్ట్రేషన్ను నిర్వహించడానికి ఏజెంట్ కమ్యూనికేషన్ ప్రోటోకాల్ (ACP) రిజిస్ట్రీ.", + "protocolAcpTitle": "ACP (ఏజెంట్ కమ్యూనికేషన్)", + "protocolAcpDesc": "ఏజెంట్ల మధ్య కమ్యూనికేషన్ మరియు టూల్ షేరింగ్ కోసం ACP రిజిస్ట్రీ ద్వారా ఏజెంట్లను నమోదు చేసి నిర్వహించండి.", + "protocolAcpStep1": "నమోదు చేసిన ACP ఏజెంట్లను చూడటానికి Dashboard → Agentsకు వెళ్లండి.", + "protocolAcpStep2": "సామర్థ్యాలు మరియు ఎండ్పాయింట్ కాన్ఫిగరేషన్తో కొత్త ఏజెంట్లను నమోదు చేయండి.", + "protocolAcpStep3": "ఏజెంట్ కమ్యూనికేషన్ ఛానెల్లను కాన్ఫిగర్ చేయడానికి CLI Toolsను ఉపయోగించండి.", "metadataTitleTemplate": "%s — OmniRoute డాక్స్", "metadataDefaultTitle": "ఒమ్నిరూట్ డాక్యుమెంటేషన్", "metadataDescription": "OmniRoute AI గేట్వే కోసం సమగ్ర డాక్యుమెంటేషన్ — సెటప్, API, కంప్రెషన్, డిప్లాయ్‌మెంట్, మరియు మరింత.", @@ -10276,95 +10283,95 @@ } }, "legal": { - "privacyPolicy": "Privacy Policy", - "termsOfService": "Terms of Service", - "providerConfigurations": "Provider configurations", - "apiKeys": "API keys", - "usageLogs": "Usage logs", - "applicationSettings": "Application settings", - "viewExportAnalytics": "View and export usage analytics", - "clearHistory": "Clear usage history at any time", - "configureRetention": "Configure log retention policies", - "backupRestore": "Back up and restore your database", - "privacyMetadataTitle": "Privacy Policy | OmniRoute", - "privacyMetadataDescription": "Privacy policy for the OmniRoute AI API proxy router.", - "termsMetadataTitle": "Terms of Service | OmniRoute", - "termsMetadataDescription": "Terms of service for the OmniRoute AI API proxy router.", - "backToHome": "Back to home", - "lastUpdated": "Last updated: {date}", - "policyLastUpdatedDate": "February 13, 2026", + "privacyPolicy": "గోప్యతా విధానం", + "termsOfService": "సేవా నిబంధనలు", + "providerConfigurations": "ప్రొవైడర్ కాన్ఫిగరేషన్లు", + "apiKeys": "API కీలు", + "usageLogs": "వినియోగ లాగ్లు", + "applicationSettings": "అప్లికేషన్ సెట్టింగ్లు", + "viewExportAnalytics": "వినియోగ విశ్లేషణలను వీక్షించి ఎగుమతి చేయండి", + "clearHistory": "వినియోగ చరిత్రను ఎప్పుడైనా తొలగించండి", + "configureRetention": "లాగ్ నిల్వ విధానాలను కాన్ఫిగర్ చేయండి", + "backupRestore": "మీ డేటాబేస్ను బ్యాకప్ చేసి పునరుద్ధరించండి", + "privacyMetadataTitle": "గోప్యతా విధానం | OmniRoute", + "privacyMetadataDescription": "OmniRoute AI API ప్రాక్సీ రౌటర్కు సంబంధించిన గోప్యతా విధానం.", + "termsMetadataTitle": "సేవా నిబంధనలు | OmniRoute", + "termsMetadataDescription": "OmniRoute AI API ప్రాక్సీ రౌటర్కు సంబంధించిన సేవా నిబంధనలు.", + "backToHome": "హోమ్కు తిరిగి వెళ్లండి", + "lastUpdated": "చివరిగా నవీకరించబడింది: {date}", + "policyLastUpdatedDate": "ఫిబ్రవరి 13, 2026", "listSeparator": "-", - "questionsVisit": "Questions? Visit our", - "githubRepository": "GitHub repository", - "privacySection1Title": "1. Local-First Architecture", - "privacySection1Text": "OmniRoute is designed as a local-first application. All data processing and storage occurs entirely on your machine. There is no centralized server collecting your information.", - "privacySection2Title": "2. Data We Store", - "privacyDataStoredIn": "The following data is stored locally in", - "privacyDataProviderConfigurationsDesc": "connection URLs, provider types, and priority settings", - "privacyDataApiKeysDesc": "encrypted and stored locally for authenticating with AI providers", - "privacyDataUsageLogsDesc": "request counts, token usage, model names, timestamps, and response times", - "privacyDataApplicationSettingsDesc": "theme preferences, routing strategy, and combo configurations", - "privacySection3Title": "3. No Telemetry", - "privacySection3Text": "OmniRoute does not collect telemetry, analytics, or crash reports. No data is sent to us or any third party. Your usage patterns, API calls, and configurations remain entirely private.", - "privacySection4Title": "4. Third-Party AI Providers", - "privacySection4Text": "When you make API calls through OmniRoute, your requests are forwarded to the AI providers you have configured (for example: OpenAI, Anthropic, Google). These providers have their own privacy policies that govern how they handle your data. Please review:", - "privacyOpenAiPolicy": "OpenAI Privacy Policy", - "privacyAnthropicPolicy": "Anthropic Privacy Policy", - "privacyGooglePolicy": "Google Privacy Policy", - "privacySection5Title": "5. Cloud Sync (Optional)", - "privacySection5Text": "If you enable the optional cloud sync feature, provider configurations and API keys may be transmitted to a configured cloud endpoint. This feature is disabled by default and requires explicit opt-in.", - "privacySection6Title": "6. Logging", - "privacyLoggingIntro": "Request logs can be configured through the dashboard settings. You can:", - "privacySection7Title": "7. Your Rights", - "privacySection7TextStart": "Since all data is stored locally, you have full control. You can delete your data at any time by removing the", - "privacySection7TextEnd": "directory or using the database backup and restore features in the dashboard.", - "termsSection1Title": "1. Overview", - "termsSection1Text": "OmniRoute is a local-first AI API proxy router that operates entirely on your machine. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "termsSection2Title": "2. User Responsibilities", - "termsResponsibilityApiKeys": "You are solely responsible for managing your own API keys and credentials for third-party AI providers (OpenAI, Anthropic, Google, etc.).", - "termsResponsibilityCompliance": "You must comply with the terms of service of each AI provider whose API you access through OmniRoute.", - "termsResponsibilitySecurity": "You are responsible for the security of your local OmniRoute installation, including setting a password and restricting network access.", - "termsSection3Title": "3. How It Works", - "termsSection3Text": "OmniRoute acts as an intermediary proxy. API calls sent to OmniRoute are translated and forwarded to your configured AI providers. OmniRoute does not modify the content of your requests or responses beyond the necessary protocol translation.", - "termsSection4Title": "4. Data Handling", - "termsDataStoredLocally": "All data is stored locally on your machine in a SQLite database.", - "termsNoTransmission": "OmniRoute does not transmit any data to external servers unless you explicitly enable cloud sync features.", - "termsDataLocationText": "Usage logs, API keys, and configuration are stored in", - "termsSection5Title": "5. Disclaimer", - "termsSection5Text": "OmniRoute is provided \"as is\" without warranty of any kind. We are not responsible for any costs incurred through API usage, service disruptions, or data loss. Always maintain backups of your configuration.", - "termsSection6Title": "6. Open Source", - "termsSection6Text": "OmniRoute is open-source software. You are free to inspect, modify, and distribute it under the terms of its license." + "questionsVisit": "ప్రశ్నలు ఉన్నాయా? మా", + "githubRepository": "GitHub రిపాజిటరీని సందర్శించండి", + "privacySection1Title": "1. లోకల్-ఫస్ట్ ఆర్కిటెక్చర్", + "privacySection1Text": "OmniRoute లోకల్-ఫస్ట్ అప్లికేషన్గా రూపొందించబడింది. మొత్తం డేటా ప్రాసెసింగ్ మరియు నిల్వ పూర్తిగా మీ మెషీన్లోనే జరుగుతాయి. మీ సమాచారాన్ని సేకరించే కేంద్రీకృత సర్వర్ ఏదీ లేదు.", + "privacySection2Title": "2. మేము నిల్వ చేసే డేటా", + "privacyDataStoredIn": "కింది డేటా స్థానికంగా ఇందులో నిల్వ చేయబడుతుంది", + "privacyDataProviderConfigurationsDesc": "కనెక్షన్ URLలు, ప్రొవైడర్ రకాలు మరియు ప్రాధాన్యత సెట్టింగ్లు", + "privacyDataApiKeysDesc": "AI ప్రొవైడర్లతో ప్రమాణీకరణ కోసం ఎన్క్రిప్ట్ చేసి స్థానికంగా నిల్వ చేయబడతాయి", + "privacyDataUsageLogsDesc": "రిక్వెస్ట్ల సంఖ్య, టోకెన్ వినియోగం, మోడల్ పేర్లు, టైమ్స్టాంప్లు మరియు ప్రతిస్పందన సమయాలు", + "privacyDataApplicationSettingsDesc": "థీమ్ ప్రాధాన్యతలు, రౌటింగ్ వ్యూహం మరియు కాంబో కాన్ఫిగరేషన్లు", + "privacySection3Title": "3. టెలిమెట్రీ లేదు", + "privacySection3Text": "OmniRoute టెలిమెట్రీ, అనలిటిక్స్ లేదా క్రాష్ రిపోర్ట్లను సేకరించదు. మాకు లేదా మరే మూడవ పక్షానికీ ఎలాంటి డేటా పంపబడదు. మీ వినియోగ విధానాలు, API కాల్లు మరియు కాన్ఫిగరేషన్లు పూర్తిగా గోప్యంగా ఉంటాయి.", + "privacySection4Title": "4. మూడవ పక్ష AI ప్రొవైడర్లు", + "privacySection4Text": "మీరు OmniRoute ద్వారా API కాల్లు చేసినప్పుడు, మీ రిక్వెస్ట్లు మీరు కాన్ఫిగర్ చేసిన AI ప్రొవైడర్లకు ఫార్వర్డ్ చేయబడతాయి (ఉదాహరణకు: OpenAI, Anthropic, Google). ఈ ప్రొవైడర్లు మీ డేటాను ఎలా నిర్వహిస్తారో నియంత్రించే వారి స్వంత గోప్యతా విధానాలను కలిగి ఉంటారు. దయచేసి వీటిని సమీక్షించండి:", + "privacyOpenAiPolicy": "OpenAI గోప్యతా విధానం", + "privacyAnthropicPolicy": "Anthropic గోప్యతా విధానం", + "privacyGooglePolicy": "Google గోప్యతా విధానం", + "privacySection5Title": "5. క్లౌడ్ సింక్ (ఐచ్ఛికం)", + "privacySection5Text": "మీరు ఐచ్ఛిక క్లౌడ్ సింక్ ఫీచర్ను ప్రారంభిస్తే, ప్రొవైడర్ కాన్ఫిగరేషన్లు మరియు API కీలు కాన్ఫిగర్ చేసిన క్లౌడ్ ఎండ్పాయింట్కు ప్రసారం చేయబడవచ్చు. ఈ ఫీచర్ డిఫాల్ట్గా నిలిపివేయబడి ఉంటుంది మరియు దీన్ని స్పష్టంగా ఎంచుకుని ప్రారంభించాలి.", + "privacySection6Title": "6. లాగింగ్", + "privacyLoggingIntro": "డ్యాష్బోర్డ్ సెట్టింగ్ల ద్వారా అభ్యర్థన లాగ్లను కాన్ఫిగర్ చేయవచ్చు. మీరు వీటిని చేయవచ్చు:", + "privacySection7Title": "7. మీ హక్కులు", + "privacySection7TextStart": "డేటా అంతా స్థానికంగా నిల్వ చేయబడుతుంది కాబట్టి, దానిపై మీకు పూర్తి నియంత్రణ ఉంటుంది. మీరు ఏ సమయంలోనైనా ఈ క్రింది దాన్ని తొలగించడం ద్వారా మీ డేటాను తొలగించవచ్చు:", + "privacySection7TextEnd": "డైరెక్టరీ లేదా డ్యాష్బోర్డ్లోని డేటాబేస్ బ్యాకప్ మరియు పునరుద్ధరణ ఫీచర్లను ఉపయోగించడం ద్వారా.", + "termsSection1Title": "1. అవలోకనం", + "termsSection1Text": "OmniRoute అనేది పూర్తిగా మీ మెషీన్లో పనిచేసే, స్థానిక వినియోగానికి ప్రాధాన్యమిచ్చే AI API ప్రాక్సీ రౌటర్. ఇది లోడ్ బ్యాలెన్సింగ్, ఫెయిల్ఓవర్ మరియు వినియోగ ట్రాకింగ్తో అభ్యర్థనలను అనేక AI ప్రొవైడర్లకు రూట్ చేస్తుంది.", + "termsSection2Title": "2. వినియోగదారు బాధ్యతలు", + "termsResponsibilityApiKeys": "మూడవ పక్ష AI ప్రొవైడర్ల (OpenAI, Anthropic, Google మొదలైనవి) కోసం మీ స్వంత API కీలు మరియు ఆధారాలను నిర్వహించే పూర్తి బాధ్యత మీదే.", + "termsResponsibilityCompliance": "OmniRoute ద్వారా మీరు APIని యాక్సెస్ చేసే ప్రతి AI ప్రొవైడర్ సేవా నిబంధనలను తప్పనిసరిగా పాటించాలి.", + "termsResponsibilitySecurity": "పాస్వర్డ్ను సెట్ చేయడం మరియు నెట్వర్క్ యాక్సెస్ను పరిమితం చేయడంతో సహా, మీ స్థానిక OmniRoute ఇన్స్టాలేషన్ భద్రతకు మీరే బాధ్యత వహించాలి.", + "termsSection3Title": "3. ఇది ఎలా పనిచేస్తుంది", + "termsSection3Text": "OmniRoute మధ్యవర్తి ప్రాక్సీగా పనిచేస్తుంది. OmniRouteకు పంపిన API కాల్లు అనువదించబడి, మీరు కాన్ఫిగర్ చేసిన AI ప్రొవైడర్లకు ఫార్వర్డ్ చేయబడతాయి. అవసరమైన ప్రోటోకాల్ అనువాదం మినహా, మీ అభ్యర్థనలు లేదా ప్రతిస్పందనల కంటెంట్ను OmniRoute సవరించదు.", + "termsSection4Title": "4. డేటా నిర్వహణ", + "termsDataStoredLocally": "డేటా అంతా మీ మెషీన్లోని SQLite డేటాబేస్లో స్థానికంగా నిల్వ చేయబడుతుంది.", + "termsNoTransmission": "మీరు క్లౌడ్ సింక్ ఫీచర్లను స్పష్టంగా ప్రారంభించకపోతే, OmniRoute ఎటువంటి డేటానూ బాహ్య సర్వర్లకు ప్రసారం చేయదు.", + "termsDataLocationText": "వినియోగ లాగ్లు, API కీలు మరియు కాన్ఫిగరేషన్ ఇందులో నిల్వ చేయబడతాయి:", + "termsSection5Title": "5. బాధ్యత నిరాకరణ", + "termsSection5Text": "OmniRoute ఎటువంటి వారంటీ లేకుండా \"ఉన్నది ఉన్నట్లుగా\" అందించబడుతుంది. API వినియోగం వల్ల కలిగే ఖర్చులు, సేవా అంతరాయాలు లేదా డేటా నష్టానికి మేము బాధ్యత వహించము. మీ కాన్ఫిగరేషన్ బ్యాకప్లను ఎల్లప్పుడూ నిర్వహించండి.", + "termsSection6Title": "6. ఓపెన్ సోర్స్", + "termsSection6Text": "OmniRoute ఓపెన్ సోర్స్ సాఫ్ట్వేర్. దాని లైసెన్స్ నిబంధనల ప్రకారం దాన్ని పరిశీలించడానికి, సవరించడానికి మరియు పంపిణీ చేయడానికి మీకు స్వేచ్ఛ ఉంది." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI ఏజెంట్లు", + "description": "మీ సిస్టమ్లో ఇన్స్టాల్ చేసిన CLI ఏజెంట్లను కనుగొనండి. స్వయంచాలక గుర్తింపు కోసం అనుకూల ఏజెంట్లను జోడించండి.", + "refresh": "రిఫ్రెష్ చేయండి", + "installed": "ఇన్స్టాల్ చేయబడింది", + "notFound": "కనుగొనబడలేదు", + "builtIn": "అంతర్నిర్మితం", + "custom": "అనుకూలం", + "remove": "తొలగించండి", + "addCustomAgent": "అనుకూల ఏజెంట్ను జోడించండి", + "addCustomAgentDesc": "గుర్తింపు కోసం ఏదైనా CLI సాధనాన్ని నమోదు చేయండి. రిఫ్రెష్ చేసినప్పుడు అది స్వయంచాలకంగా స్కాన్ చేయబడుతుంది.", + "agentName": "ఏజెంట్ పేరు", + "binaryName": "బైనరీ పేరు", + "versionCommand": "వెర్షన్ కమాండ్", + "spawnArgs": "స్పాన్ ఆర్గ్యుమెంట్లు", + "addAgent": "ఏజెంట్ను జోడించండి", + "scanning": "CLI ఏజెంట్ల కోసం సిస్టమ్ను స్కాన్ చేస్తోంది...", + "opencodeIntegration": "OpenCode సమీకరణ", + "opencodeDetected": "opencode {version} గుర్తించబడింది", + "opencodeDesc": "మీ OmniRoute బేస్ URL మరియు అందుబాటులో ఉన్న అన్ని మోడళ్లతో ఉపయోగించడానికి సిద్ధంగా ఉన్న {configFile}ను రూపొందించండి — దాన్ని మీ ప్రాజెక్ట్ రూట్లో ఉంచి {command}ను అమలు చేయండి.", + "downloadConfig": "{file}ను డౌన్లోడ్ చేయండి", + "downloaded": "డౌన్లోడ్ అయింది!", + "setupGuideTitle": "సెటప్ మార్గదర్శిని", + "openCliTools": "CLI సాధనాలను తెరవండి", + "setupGuideDetectCliTitle": "ఇన్స్టాల్ చేసిన CLIలను గుర్తించండి", + "setupGuideDetectCliDesc": "CLIని ఇన్స్టాల్ చేసిన లేదా అప్డేట్ చేసిన తర్వాత Refreshపై క్లిక్ చేయండి, తద్వారా OmniRoute బైనరీలు మరియు వెర్షన్లను మళ్లీ స్కాన్ చేయగలదు.", + "setupGuideCustomAgentTitle": "అనుకూల బైనరీని నమోదు చేయండి", + "setupGuideCustomAgentDesc": "మీ CLI అంతర్నిర్మిత జాబితాలో లేనప్పుడు Add Custom Agentను ఉపయోగించండి. బైనరీ పేరు మరియు వెర్షన్ కమాండ్ను అందించండి.", + "setupGuideCommandMissingTitle": "'command not found' లోపాన్ని పరిష్కరించండి", + "setupGuideCommandMissingDesc": "CLI కమాండ్ PATHలో ఉందని నిర్ధారించుకోండి, కొత్త టెర్మినల్ సెషన్ను తెరిచి, Refreshను మళ్లీ అమలు చేయండి.", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10446,7 +10453,7 @@ "connected": "కనెక్ట్ చేయబడింది", "notConnected": "కనెక్ట్ చేయబడలేదు", "configure": "కాన్ఫిగర్ చేయండి", - "settingsTitle": "Cloud Agent Settings", + "settingsTitle": "క్లౌడ్ ఏజెంట్ సెట్టింగ్లు", "settingsDesc": "క్లౌడ్ ఏజెంట్ల కోసం స్థానిక ప్రాధాన్యతలను కాన్ఫిగర్ చేయండి.", "settingEnableAgents": "క్లౌడ్ ఏజెంట్లను ప్రారంభించండి", "settingEnableAgentsDesc": "స్వయంప్రతిపత్త కోడింగ్ ఏజెంట్లను ఆర్కెస్ట్రేట్ చేయడానికి OmniRouteని అనుమతించండి.", @@ -10491,148 +10498,148 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "సరళమైన చాట్", + "streaming": "స్ట్రీమింగ్", + "system-prompt": "సిస్టమ్ ప్రాంప్ట్", + "thinking": "ఆలోచన", + "tool-calling": "సాధన కాలింగ్", + "multi-turn": "బహుళ-దశల సంభాషణ", "vision": "విజన్", "schema-coercion": "స్కీమా బలవంతం" }, "templateDescriptions": { - "simple-chat": "Basic chat template with system message", - "streaming": "Template for streaming responses", - "system-prompt": "Template with custom system prompt", - "thinking": "Template with reasoning/thinking budget", - "tool-calling": "Template for tool/function calling", - "multi-turn": "Template for multi-turn conversations", + "simple-chat": "సిస్టమ్ సందేశంతో ప్రాథమిక చాట్ టెంప్లేట్", + "streaming": "స్ట్రీమింగ్ ప్రతిస్పందనల కోసం టెంప్లేట్", + "system-prompt": "అనుకూల సిస్టమ్ ప్రాంప్ట్తో టెంప్లేట్", + "thinking": "రీజనింగ్/ఆలోచన బడ్జెట్తో టెంప్లేట్", + "tool-calling": "సాధనం/ఫంక్షన్ కాలింగ్ కోసం టెంప్లేట్", + "multi-turn": "బహుళ-దశల సంభాషణల కోసం టెంప్లేట్", "vision": "చిత్రం ఇన్‌పుట్‌తో మల్టీమోడల్ టెంప్లేట్", "schema-coercion": "నిర్మాణాత్మక-అవుట్‌పుట్ / JSON స్కీమా అమలు" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful AI assistant.", - "userGreeting": "Hello! How can I help you today?" + "system": "మీరు సహాయకరమైన AI సహాయకులు.", + "userGreeting": "నమస్కారం! ఈ రోజు నేను మీకు ఎలా సహాయం చేయగలను?" }, "streaming": { - "prompt": "Write a story about" + "prompt": "దీని గురించి ఒక కథ రాయండి" }, "systemPrompt": { - "question": "What is the meaning of life?", - "systemInstruction": "Provide a thoughtful, philosophical answer." + "question": "జీవితం యొక్క అర్థం ఏమిటి?", + "systemInstruction": "ఆలోచనాత్మకమైన, తాత్విక సమాధానాన్ని అందించండి." }, "thinking": { - "question": "Explain quantum computing" + "question": "క్వాంటం కంప్యూటింగ్ను వివరించండి" }, "toolCalling": { - "cityNameDescription": "The name of the city to get weather for", - "toolDescription": "Get current weather for a location", - "userWeather": "What's the weather in Tokyo?" + "cityNameDescription": "వాతావరణ సమాచారం పొందాల్సిన నగరం పేరు", + "toolDescription": "ఒక ప్రదేశానికి ప్రస్తుత వాతావరణ సమాచారాన్ని పొందండి", + "userWeather": "Tokyoలో వాతావరణం ఎలా ఉంది?" }, "multiTurn": { - "system": "You are a helpful assistant.", - "assistantExample": "I'd be happy to help you with that.", - "userInitial": "I need help with", - "userFollowUp": "Can you elaborate on that?" + "system": "మీరు సహాయకరమైన సహాయకులు.", + "assistantExample": "ఆ విషయంలో మీకు సహాయం చేయడానికి నేను సంతోషిస్తాను.", + "userInitial": "నాకు దీనితో సహాయం కావాలి", + "userFollowUp": "దాని గురించి మరింత వివరించగలరా?" } }, "cache": { - "title": "Cache Management", - "description": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "refresh": "Refresh", - "clearAll": "Clear Semantic Cache", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "title": "క్యాష్ నిర్వహణ", + "description": "ప్రొవైడర్ ప్రాంప్ట్ క్యాష్ సామర్థ్యాన్ని మరియు స్థానిక సెమాంటిక్ ప్రతిస్పందన పునర్వినియోగాన్ని పర్యవేక్షించండి.", + "refresh": "రిఫ్రెష్ చేయండి", + "clearAll": "సెమాంటిక్ క్యాష్ను క్లియర్ చేయండి", + "memoryEntries": "మెమరీ ఎంట్రీలు", + "memoryEntriesSub": "ఇన్-మెమరీ LRU", + "dbEntries": "DB ఎంట్రీలు", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "క్యాష్ హిట్లు", + "cacheHitsSub": "మొత్తం {total}లో", + "tokensSaved": "ఆదా చేసిన టోకెన్లు", + "tokensSavedSub": "హిట్ల ఆధారంగా అంచనా వేయబడింది", + "hitRate": "హిట్ రేటు", + "performance": "క్యాష్ పనితీరు", + "autoRefresh": "ప్రతి {seconds}sకు ఆటోమేటిక్గా రిఫ్రెష్ అవుతుంది", + "hits": "హిట్లు", + "misses": "మిస్లు", + "total": "మొత్తం", + "behavior": "క్యాష్ ప్రవర్తన", + "behaviorDeterministic": "temperature=0 ఉన్న నాన్-స్ట్రీమింగ్ అభ్యర్థనలు మాత్రమే క్యాష్ చేయబడతాయి.", + "behaviorBypass": "{header} హెడర్తో బైపాస్ చేయండి.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", - "clearSuccess": "Semantic cache cleared. {count} entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "behaviorTtl": "డిఫాల్ట్ TTL: 30 నిమిషాలు. {envVar} ద్వారా కాన్ఫిగర్ చేయండి.", + "idempotency": "ఐడెంపొటెన్సీ లేయర్", + "activeDedupKeys": "యాక్టివ్ డీడప్ కీలు", + "dedupWindow": "డీడప్ విండో", + "clearSuccess": "సెమాంటిక్ క్యాష్ క్లియర్ చేయబడింది. {count} ఎంట్రీలు తొలగించబడ్డాయి.", + "clearError": "క్యాష్ను క్లియర్ చేయడం విఫలమైంది.", + "unavailable": "క్యాష్ అందుబాటులో లేదు", + "unavailableDesc": "క్యాష్ గణాంకాలను పొందలేకపోయాము. సర్వర్ రన్ అవుతోందని నిర్ధారించుకోండి.", "loadingCacheAria": "కాష్ లోడ్ అవుతోంది", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", - "cachedTokens": "Cache Read Tokens", - "cacheCreationTokens": "Cache Write Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", - "cachedTokensRead": "Read from cache", - "cacheCreationWrite": "Written to cache", - "cacheReuseRatio": "Cache Reuse Ratio", - "cacheReuseRatioDesc": "Cache read tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "promptCache": "ప్రాంప్ట్ క్యాష్ (ప్రొవైడర్ వైపు)", + "semanticCache": "సెమాంటిక్ క్యాష్", + "promptCacheSectionDesc": "వినియోగ చరిత్ర నుండి ప్రొవైడర్ వైపు ప్రాంప్ట్ క్యాషింగ్ కార్యకలాపాన్ని చూపిస్తుంది, తద్వారా క్యాష్ నియంత్రణ ఎక్కడ యాక్టివ్గా ఉందో మరియు మీరు ఎంత ఇన్పుట్ పునర్వినియోగాన్ని పొందుతున్నారో చూడవచ్చు.", + "promptTrendDesc": "గత 24 గంటల్లో గంటవారీ అభ్యర్థనల పరిమాణం, క్యాష్ కవరేజ్ మరియు క్యాష్ రీడ్ పరిమాణం.", + "cachedRequests": "క్యాష్ చేసిన అభ్యర్థనలు", + "cachedRequests24h": "క్యాష్ చేసిన అభ్యర్థనలు (24గం)", + "cacheHitRate": "క్యాష్ హిట్ రేటు", + "cacheRate": "క్యాష్ రేటు", + "cacheRateDesc": "మొత్తం అభ్యర్థనల్లో", + "cachedTokens": "క్యాష్ రీడ్ టోకెన్లు", + "cacheCreationTokens": "క్యాష్ రైట్ టోకెన్లు", + "cacheMetrics": "ప్రాంప్ట్ క్యాష్ మెట్రిక్లు", + "withCacheControl": "క్యాష్ నియంత్రణతో", + "cachedTokensRead": "క్యాష్ నుండి చదివినవి", + "cacheCreationWrite": "క్యాష్కు వ్రాసినవి", + "cacheReuseRatio": "క్యాష్ పునర్వినియోగ నిష్పత్తి", + "cacheReuseRatioDesc": "క్యాష్ రీడ్ టోకెన్లు / మొత్తం ఇన్పుట్ టోకెన్లు", + "estCostSaved": "అంచనా ఆదా అయిన ఖర్చు", + "lastUpdated": "చివరిగా నవీకరించబడింది", + "hoursTracked": "ట్రాక్ చేసిన గంటలు", + "busiestHour": "అత్యంత రద్దీ గంట", + "peakCacheRate": "గరిష్ఠ క్యాష్ రేటు", + "trendHour": "గంట", + "activityVolume": "కార్యాచరణ", + "requestsShort": "అభ్యర్థనలు", + "inputShort": "ఇన్పుట్", + "cachedShort": "క్యాష్ చేసినవి", + "writeShort": "వ్రాసినవి", + "resetting": "రీసెట్ చేస్తోంది...", + "resetMetrics": "మెట్రిక్లను రీసెట్ చేయండి", + "byProvider": "ప్రొవైడర్ వారీ విభజన", + "providerCacheRateDesc": "ప్రతి ప్రొవైడర్ మొత్తం ఇన్పుట్ టోకెన్లు, క్యాష్ రీడ్ టోకెన్లు మరియు క్యాష్ రైట్ టోకెన్లను చూపుతుంది, తద్వారా మీరు ముడి మొత్తాలతో పునర్వినియోగ నిష్పత్తిని ధృవీకరించవచ్చు.", "provider": "Provider", - "requests": "Requests", - "inputTokens": "Total Input Tokens", - "cachedTokensCol": "Cache Read", - "cacheCreation": "Cache Write", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "requests": "అభ్యర్థనలు", + "inputTokens": "మొత్తం ఇన్పుట్ టోకెన్లు", + "cachedTokensCol": "క్యాష్ రీడ్", + "cacheCreation": "క్యాష్ రైట్", + "trend24h": "క్యాష్ ధోరణి (24గం)", + "peakCached": "గరిష్ఠంగా క్యాష్ చేసినవి", + "cached": "క్యాష్ చేసినవి", + "overview": "అవలోకనం", "tableProvider": "ప్రొవైడర్", "tableModel": "మోడల్", "performanceTitle": "పనితీరు", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoute యొక్క స్వంత నిర్దిష్ట ప్రతిస్పందన క్యాష్. దీన్ని ప్రారంభించినప్పుడు, పునరావృతమయ్యే నాన్-స్ట్రీమింగ్ temperature=0 అభ్యర్థనలను అప్స్ట్రీమ్ ప్రొవైడర్ను సంప్రదించకుండానే స్థానికంగా అందించవచ్చు.", + "semanticCacheDisabledDesc": "సెమాంటిక్ క్యాష్ నిలిపివేయబడింది. మీరు Settingsలో దాన్ని తిరిగి ప్రారంభించే వరకు OmniRoute స్థానిక ప్రతిస్పందన పునర్వినియోగాన్ని దాటవేస్తుంది.", + "semanticEntriesDesc": "ప్రస్తుతం SQLiteలో నిల్వ చేసిన స్థిరమైన సెమాంటిక్ క్యాష్ రికార్డులు. ప్రొవైడర్ వైపు ప్రాంప్ట్ క్యాష్ కార్యకలాపం ఇక్కడ జాబితా చేయబడదు.", + "searchEntries": "ఎంట్రీలను శోధించండి...", + "search": "శోధించండి", + "loading": "లోడ్ అవుతోంది...", + "entriesLoadError": "సెమాంటిక్ క్యాష్ ఎంట్రీలను లోడ్ చేయడం విఫలమైంది.", + "noEntries": "క్యాష్ ఎంట్రీలు ఏవీ కనుగొనబడలేదు", + "noPromptCacheData": "ప్రొవైడర్ వైపు ప్రాంప్ట్ క్యాష్ కార్యకలాపం ఇంకా నమోదు కాలేదు.", + "noTrendData": "గత 24 గంటల్లో ఎలాంటి ప్రాంప్ట్ క్యాష్ కార్యకలాపం నమోదు కాలేదు.", + "signature": "సంతకం", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "సృష్టించబడింది", + "expires": "గడువు ముగుస్తుంది", + "actions": "చర్యలు", + "deduplicatedRequests": "నకిలీలు తొలగించిన అభ్యర్థనలు", + "savedCalls": "ఆదా చేసిన API కాల్లు", + "totalProcessed": "ప్రాసెస్ చేసిన మొత్తం అభ్యర్థనలు", + "disabled": "నిలిపివేయబడింది", + "totalRequests": "మొత్తం అభ్యర్థనలు", "reasoningCache": "రీజనింగ్ రీప్లే", "reasoningCacheDesc": "మల్టీ-టర్న్ టూల్ కాలింగ్ ఫ్లోల కోసం మోడల్ థింకింగ్‌ను భద్రపరుస్తుంది", "reasoningEntries": "యాక్టివ్ ఎంట్రీలు", @@ -10669,56 +10676,56 @@ "minutesAgo": "{minutes}నిమి. క్రితం", "hoursAgo": "{hours}గం. క్రితం", "daysAgo": "{days}రోజుల క్రితం", - "entries": "Entries" + "entries": "నమోదులు" }, "proxyConfigModal": { - "levelGlobal": "Global", - "levelProvider": "Provider", - "levelCombo": "Combo", - "levelKey": "Key", - "levelDirect": "Direct (no proxy)", - "titleGlobal": "Global Proxy Configuration", - "titleLevel": "{level} Proxy — {label}", - "loading": "Loading proxy configuration...", - "inheritingFrom": "Inheriting from", - "source": "Source", - "savedProxy": "Saved Proxy", - "custom": "Custom", - "selectSavedProxyPlaceholder": "Select saved proxy...", - "proxyType": "Proxy Type", - "host": "Host", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", - "port": "Port", - "authOptional": "Authentication (optional)", - "username": "Username", - "usernamePlaceholder": "Username", - "password": "Password", - "passwordPlaceholder": "Password", - "connected": "Connected", + "levelGlobal": "గ్లోబల్", + "levelProvider": "ప్రొవైడర్", + "levelCombo": "కాంబో", + "levelKey": "కీ", + "levelDirect": "నేరుగా (ప్రాక్సీ లేకుండా)", + "titleGlobal": "గ్లోబల్ ప్రాక్సీ కాన్ఫిగరేషన్", + "titleLevel": "{level} ప్రాక్సీ — {label}", + "loading": "ప్రాక్సీ కాన్ఫిగరేషన్ లోడ్ అవుతోంది...", + "inheritingFrom": "దీని నుండి పొందుతోంది", + "source": "మూలం", + "savedProxy": "సేవ్ చేసిన ప్రాక్సీ", + "custom": "అనుకూలం", + "selectSavedProxyPlaceholder": "సేవ్ చేసిన ప్రాక్సీని ఎంచుకోండి...", + "proxyType": "ప్రాక్సీ రకం", + "host": "హోస్ట్", + "hostPlaceholder": "1.2.3.4 లేదా proxy.example.com", + "port": "పోర్ట్", + "authOptional": "ప్రమాణీకరణ (ఐచ్ఛికం)", + "username": "వినియోగదారు పేరు", + "usernamePlaceholder": "వినియోగదారు పేరు", + "password": "పాస్వర్డ్", + "passwordPlaceholder": "పాస్వర్డ్", + "connected": "కనెక్ట్ అయింది", "ip": "IP:", - "connectionFailed": "Connection failed", - "testConnection": "Test connection", - "clear": "Clear", - "cancel": "Cancel", - "save": "Save", - "errorSelectSavedProxy": "Please select a saved proxy first.", - "errorSelectProxyFirst": "Please select a proxy first.", - "errorProxyNotFound": "Selected proxy not found.", - "errorClearSavedProxy": "Failed to clear saved proxy", - "errorSaveProxy": "Failed to save proxy configuration", - "errorClearProxy": "Failed to clear proxy configuration", - "errorSocks5Hidden": "SOCKS5 is configured but hidden because NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false." + "connectionFailed": "కనెక్షన్ విఫలమైంది", + "testConnection": "కనెక్షన్ను పరీక్షించండి", + "clear": "తొలగించండి", + "cancel": "రద్దు చేయండి", + "save": "సేవ్ చేయండి", + "errorSelectSavedProxy": "దయచేసి ముందుగా సేవ్ చేసిన ప్రాక్సీని ఎంచుకోండి.", + "errorSelectProxyFirst": "దయచేసి ముందుగా ఒక ప్రాక్సీని ఎంచుకోండి.", + "errorProxyNotFound": "ఎంచుకున్న ప్రాక్సీ కనుగొనబడలేదు.", + "errorClearSavedProxy": "సేవ్ చేసిన ప్రాక్సీని తొలగించడం విఫలమైంది", + "errorSaveProxy": "ప్రాక్సీ కాన్ఫిగరేషన్ను సేవ్ చేయడం విఫలమైంది", + "errorClearProxy": "ప్రాక్సీ కాన్ఫిగరేషన్ను క్లియర్ చేయడం విఫలమైంది", + "errorSocks5Hidden": "SOCKS5 కాన్ఫిగర్ చేయబడింది, కానీ NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false కావడంతో దాచబడింది." }, "oauthModal": { - "title": "Connect {providerName}", - "waiting": "Waiting for authorization", - "completeAuthInPopup": "Complete authorization in popup.", + "title": "{providerName}ను కనెక్ట్ చేయండి", + "waiting": "అధికారీకరణ కోసం వేచి ఉంది", + "completeAuthInPopup": "పాప్అప్లో అధికారీకరణను పూర్తి చేయండి.", "popupClosedHint": "If the popup closed without redirecting back (e.g. Qoder), this dialog will auto-switch to manual URL entry mode.", - "popupBlocked": "Popup blocked? Enter URL manually", - "deviceCodeVisitUrl": "Visit the URL below and enter code:", - "deviceCodeVerificationUrl": "Verification URL", - "deviceCodeYourCode": "Your code", - "deviceCodeWaiting": "Waiting for authorization...", + "popupBlocked": "పాప్అప్ బ్లాక్ అయిందా? URLను మాన్యువల్గా నమోదు చేయండి", + "deviceCodeVisitUrl": "దిగువ URLను సందర్శించి, కోడ్ను నమోదు చేయండి:", + "deviceCodeVerificationUrl": "ధృవీకరణ URL", + "deviceCodeYourCode": "మీ కోడ్", + "deviceCodeWaiting": "అధికారీకరణ కోసం వేచి ఉంది...", "googleLoopbackTitle": "ఈ చిరునామా నుండి Google సైన్-ఇన్ పూర్తి చేయడం సాధ్యం కాదు", "googleLoopbackWhatHappens": "గూగుల్ అనుమతి కోడ్‌ను కేవలం {redirectUri} బ్రౌజర్ ద్వారా సంతృప్తి పొందినప్పుడు మాత్రమే విడుదల చేస్తుంది. ఇక్కడ ఆ చిరునామా ఈ కంప్యూటర్‌ను సూచిస్తుంది, OmniRoute సర్వర్‌ను కాదు — కాబట్టి అనుమతి స్క్రీన్ తిరిగి దారితీసే బదులు నిలిచిపోతుంది, మరియు కాపీ చేయడానికి ఎలాంటి కాల్‌బ్యాక్ URL లేదు.", "googleLoopbackRecommended": "సిఫార్సు చేయబడింది — మీ స్వంత కంప్యూటర్‌లో ఇది నడపండి, తరువాత ఫలితాన్ని కింద పేస్ట్ చేయండి:", @@ -10726,7 +10733,7 @@ "googleLoopbackTunnelLabel": "లేదా SSH ద్వారా డాష్‌బోర్డ్ పోర్ట్‌ను ముందుకు పంపించి, టన్నెల్ ద్వారా OmniRouteని పునఃలోడ్ చేయండి:", "googleLoopbackTunnelNote": "{userPlaceholder}ని మీ SSH యూజర్ నామంతో మార్చండి, టెర్మినల్ తెరిచి ఉంచండి, తరువాత {localUrl}ని తెరిచి అక్కడ నుండి మళ్లీ కనెక్ట్ అవ్వండి.", "googleLoopbackHeadlessAlt": "పూర్తిగా హెడ్‌లెస్ ఉపయోగానికి స్థానిక కాల్‌బ్యాక్ లేకుండా, మీ స్వంత Google OAuth క్రెడెన్షియల్స్‌ను కాన్ఫిగర్ చేయండి మరియు ఒక ప్రజా బేస్ URL.", - "remoteAccessInfo": "Remote access: Since you're accessing OmniRoute remotely, after authorization you'll see an error page (localhost not found). This is normal — just copy the full URL from your browser address bar and paste it below.", + "remoteAccessInfo": "రిమోట్ యాక్సెస్: మీరు OmniRouteను రిమోట్గా యాక్సెస్ చేస్తున్నందున, అధికారీకరణ తర్వాత మీకు ఒక ఎర్రర్ పేజీ (localhost కనుగొనబడలేదు) కనిపిస్తుంది. ఇది సాధారణమే — మీ బ్రౌజర్ అడ్రస్ బార్ నుండి పూర్తి URLను కాపీ చేసి, దిగువన అతికించండి.", "loopbackMismatchTitle": "ఈ చిరునామా నుండి సైన్-ఇన్ పూర్తి చేయలేరు", "loopbackMismatchWhatHappened": "ఏం జరుగుతోంది", "loopbackMismatchExplanation": "మీరు లాగిన్‌ను ఆమోదించిన తర్వాత, {providerName} ఎప్పుడూ బ్రౌజర్‌ను {redirectUri} కు తిరిగి పంపుతుంది. ఆ చిరునామా ఈ బ్రౌజర్‌ను నడుపుతున్న కంప్యూటర్‌ను సూచిస్తుంది, OmniRoute సర్వర్‌ను కాదు — కాబట్టి ఆథరైజేషన్ కోడ్ OmniRoute కు చేరదు మరియు ప్రొవైడర్ ఎటువంటి పొరపాటు చూపించకుండా సైన్-ఇన్‌ను విఫలమవుతుంది.", @@ -10736,17 +10743,17 @@ "loopbackMismatchStep2": "ఈ బ్రౌజర్‌లో, టన్నెల్ ద్వారా OmniRouteని మళ్లీ తెరవండి:", "loopbackMismatchStep3": "తర్వాత కొత్త టాబ్ నుండి {providerName} ను మళ్లీ కనెక్ట్ చేయండి. కallback ఇప్పుడు సర్వర్ కు చేరుకుంటుంది మరియు లాగిన్ సాధారణంగా పూర్తవుతుంది.", "loopbackMismatchAlternative": "SSH యాక్సెస్ లేదు? ఈ ప్రొవైడర్ టోకెన్ దిగుమతి ట్యాబ్‌ను అందిస్తే, టోకెన్‌తో కనెక్ట్ అవ్వండి — ఆ మార్గం లూప్‌బ్యాక్ కాల్‌బ్యాక్‌ను ఉపయోగించదు.", - "step1OpenUrl": "Step 1: Open this URL in your browser", - "copy": "Copy", - "step2PasteCallback": "Step 2: Paste callback URL or authorization code here", - "step2Hint": "After authorization, paste the full callback URL. For Claude Code and Cline, you can also paste the authentication code directly, e.g. code#state.", - "connect": "Connect", - "cancel": "Cancel", - "success": "Connection successful!", - "successMessage": "Your {providerName} account has been connected.", - "done": "Done", - "error": "Connection failed", - "tryAgain": "Try again", + "step1OpenUrl": "దశ 1: ఈ URLను మీ బ్రౌజర్లో తెరవండి", + "copy": "కాపీ చేయండి", + "step2PasteCallback": "దశ 2: కాల్బ్యాక్ URL లేదా అధికారీకరణ కోడ్ను ఇక్కడ అతికించండి", + "step2Hint": "అధికారీకరణ తర్వాత, పూర్తి కాల్బ్యాక్ URLను అతికించండి. Claude Code మరియు Cline కోసం, మీరు ప్రామాణీకరణ కోడ్ను కూడా నేరుగా అతికించవచ్చు, ఉదా. code#state.", + "connect": "కనెక్ట్ చేయండి", + "cancel": "రద్దు చేయండి", + "success": "కనెక్షన్ విజయవంతమైంది!", + "successMessage": "మీ {providerName} ఖాతా కనెక్ట్ చేయబడింది.", + "done": "పూర్తయింది", + "error": "కనెక్షన్ విఫలమైంది", + "tryAgain": "మళ్లీ ప్రయత్నించండి", "errorSessionIncomplete": "OAuth సెషన్ అసంపూర్ణం (రీడైరెక్ట్ URI లేదా కోడ్ వేరిఫైయర్ మిస్సింగ్). కనెక్షన్‌ను పునఃప్రారంభించి మళ్లీ ప్రయత్నించండి.", "errorExchangeFailed": "మార్పిడి విఫలమైంది", "errorGoogleRedirectMismatch": "redirect_uri_mismatch: డిఫాల్ట్ Google OAuth క్రెడెన్షియల్స్ కేవలం localhost పై మాత్రమే పనిచేస్తాయి. దూరంలో ఉపయోగించడానికి, మీ స్వంత OAuth క్రెడెన్షియల్స్‌ను పర్యావరణ చొరవల ద్వారా కాన్ఫిగర్ చేయండి: ANTIGRAVITY_OAUTH_CLIENT_ID మరియు ANTIGRAVITY_OAUTH_CLIENT_SECRET. 'ఒక దూర సర్వర్‌పై OAuth' అనే README విభాగాన్ని చూడండి.", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "ఒక ధృవీకరించిన Devin సెషన్ నుండి ఉన్న Devin API కీని పేస్ట్ చేయండి. కీ ఎగుమతి అందుబాటులో ఉండడం మరియు దశలు Devin వెర్షన్ మరియు ఖాతా ప్రకారం మారవచ్చు.", "devinPasteDescription": "మీ WINDSURF_API_KEYని అందించండి (ఇది `devin auth login` ద్వారా లేదా Windsurf IDEలో \"Windsurf: Provide Auth Token\" ఆదేశం ద్వారా పొందవచ్చు).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "Grok బిల్డ్ auth.json", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "API కీ / టోకెన్", "saving": "సేవ్ చేస్తున్నది…", @@ -10785,107 +10792,107 @@ }, "cursorAuthModal": { "title": "Connect Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCursor": "Reading from Cursor IDE or cursor-agent", - "tokensAutoDetected": "Tokens successfully auto-detected from Cursor IDE!", + "tabLogin": "Cursorతో లాగిన్ చేయండి", + "tabImport": "టోకెన్ను దిగుమతి చేయండి", + "loginDescription": "Cursor బ్రౌజర్ లాగిన్ను తెరుస్తుంది. Dockerలో పనిచేస్తుంది — మీ హోస్ట్ బ్రౌజర్లో ఆమోదించి, ఆపై ఇక్కడికి తిరిగి రండి.", + "loginWithCursor": "Cursorతో లాగిన్ చేయండి", + "startingLogin": "ప్రారంభిస్తోంది…", + "waitingApproval": "Cursor లాగిన్ ఆమోదం కోసం వేచి ఉంది…", + "openUrlHint": "బ్రౌజర్ తెరవకపోతే:", + "openLoginLink": "లాగిన్ పేజీని తెరవండి", + "cancelLogin": "లాగిన్ను రద్దు చేయండి", + "autoDetecting": "టోకెన్లను స్వయంచాలకంగా గుర్తిస్తోంది...", + "readingFromCursor": "Cursor IDE లేదా cursor-agent నుండి చదువుతోంది", + "tokensAutoDetected": "Cursor IDE నుండి టోకెన్లు విజయవంతంగా స్వయంచాలకంగా గుర్తించబడ్డాయి!", "cursorNotDetected": "Cursor IDE not detected. Please manually paste your token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Dockerలో అమలు చేస్తున్నారా? Cursorతో లాగిన్ చేయడాన్ని ఎంచుకోండి. IDE స్వీయ-దిగుమతి మరియు cursor-agent సాధారణంగా కంటైనర్లో అందుబాటులో ఉండవు. docs/providers/CURSOR-DOCKER.md చూడండి.", + "accessToken": "యాక్సెస్ టోకెన్", + "refreshToken": "రిఫ్రెష్ టోకెన్", + "refreshTokenPlaceholder": "ఐచ్ఛికం — ఆటోమేటిక్ టోకెన్ రిఫ్రెష్ను ప్రారంభిస్తుంది", "required": "*", - "accessTokenPlaceholder": "Access token will auto-populate...", - "machineId": "Machine ID", - "optional": "(optional)", - "machineIdPlaceholder": "Machine ID will auto-populate...", - "importing": "Importing...", - "importToken": "Import Token", - "cancel": "Cancel", - "errorAutoDetect": "Unable to auto-detect tokens", - "errorAutoDetectFailed": "Auto-detect tokens failed", - "errorEnterToken": "Please enter access token", - "errorImportFailed": "Import failed", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "accessTokenPlaceholder": "యాక్సెస్ టోకెన్ స్వయంచాలకంగా నమోదు అవుతుంది...", + "machineId": "మెషిన్ ID", + "optional": "(ఐచ్ఛికం)", + "machineIdPlaceholder": "మెషిన్ ID స్వయంచాలకంగా నమోదు అవుతుంది...", + "importing": "దిగుమతి చేస్తోంది...", + "importToken": "టోకెన్ను దిగుమతి చేయండి", + "cancel": "రద్దు చేయండి", + "errorAutoDetect": "టోకెన్లను స్వయంచాలకంగా గుర్తించడం సాధ్యం కాలేదు", + "errorAutoDetectFailed": "టోకెన్ల స్వయంచాలక గుర్తింపు విఫలమైంది", + "errorEnterToken": "దయచేసి యాక్సెస్ టోకెన్ను నమోదు చేయండి", + "errorImportFailed": "దిగుమతి విఫలమైంది", + "errorLoginStart": "Cursor లాగిన్ను ప్రారంభించడం విఫలమైంది", + "errorLoginPoll": "Cursor లాగిన్ విఫలమైంది", + "errorLoginTimeout": "Cursor లాగిన్ సమయం ముగిసింది — మళ్లీ ప్రయత్నించండి" }, "pricingModal": { - "title": "Pricing Configuration", - "loading": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "ratesDescription": "All rates are in dollars per million tokens ($/1M tokens). Example: Input rate of 2.50 means $2.50 per 1,000,000 input tokens.", - "model": "Model", - "input": "Input", - "output": "Output", - "cached": "Cached", - "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "noPricingData": "No pricing data available", - "resetToDefaults": "Reset to defaults", - "cancel": "Cancel", - "saving": "Saving...", - "saveChanges": "Save changes", - "resetConfirm": "Reset all pricing to defaults? This cannot be undone.", - "errorSaveFailed": "Failed to save pricing", - "errorResetFailed": "Failed to reset pricing" + "title": "ధరల కాన్ఫిగరేషన్", + "loading": "ధరల డేటాను లోడ్ చేస్తోంది...", + "pricingRatesFormat": "ధరల రేట్ల ఫార్మాట్", + "ratesDescription": "అన్ని రేట్లు మిలియన్ టోకెన్లకు డాలర్లలో ($/1M టోకెన్లు) ఉంటాయి. ఉదాహరణ: ఇన్పుట్ రేటు 2.50 అంటే 1,000,000 ఇన్పుట్ టోకెన్లకు $2.50.", + "model": "మోడల్", + "input": "ఇన్పుట్", + "output": "అవుట్పుట్", + "cached": "క్యాష్ చేయబడినవి", + "reasoning": "రీజనింగ్", + "cacheCreation": "క్యాష్ సృష్టి", + "noPricingData": "ధరల డేటా అందుబాటులో లేదు", + "resetToDefaults": "డిఫాల్ట్లకు రీసెట్ చేయండి", + "cancel": "రద్దు చేయండి", + "saving": "సేవ్ చేస్తోంది...", + "saveChanges": "మార్పులను సేవ్ చేయండి", + "resetConfirm": "అన్ని ధరలను డిఫాల్ట్లకు రీసెట్ చేయాలా? దీన్ని రద్దు చేయడం సాధ్యం కాదు.", + "errorSaveFailed": "ధరలను సేవ్ చేయడం విఫలమైంది", + "errorResetFailed": "ధరలను రీసెట్ చేయడం విఫలమైంది" }, "proxyRegistry": { "selectAllProxies": "అన్ని ప్రాక్సీలను ఎంచుకోండి", "selectProxy": "{name}ని ఎంచుకోండి", - "title": "Proxy Registry", - "description": "Store reusable proxies and track assignments.", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", - "loading": "Loading proxies...", - "noProxies": "No saved proxies yet.", - "tableName": "Name", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", - "tableHealth": "Health (24h)", - "tableUsage": "Usage", - "tableActions": "Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", - "modalCreateTitle": "Create Proxy", - "modalEditTitle": "Edit Proxy", - "labelName": "Name", - "labelType": "Type", + "title": "ప్రాక్సీ రిజిస్ట్రీ", + "description": "పునర్వినియోగ ప్రాక్సీలను నిల్వ చేసి, కేటాయింపులను ట్రాక్ చేయండి.", + "importLegacy": "లెగసీని దిగుమతి చేయండి", + "bulkAssign": "బల్క్గా కేటాయించండి", + "addProxy": "ప్రాక్సీని జోడించండి", + "loading": "ప్రాక్సీలు లోడ్ అవుతున్నాయి...", + "noProxies": "ఇంకా సేవ్ చేసిన ప్రాక్సీలు లేవు.", + "tableName": "పేరు", + "tableEndpoint": "ఎండ్పాయింట్", + "tableStatus": "స్థితి", + "tableHealth": "ఆరోగ్యం (24గం)", + "tableUsage": "వినియోగం", + "tableActions": "చర్యలు", + "test": "పరీక్షించండి", + "edit": "సవరించండి", + "delete": "తొలగించండి", + "modalCreateTitle": "ప్రాక్సీని సృష్టించండి", + "modalEditTitle": "ప్రాక్సీని సవరించండి", + "labelName": "పేరు", + "labelType": "రకం", "labelFamily": "IP ఫ్యామిలీ", "familyAuto": "ఆటో (డ్యూయల్-స్టాక్)", "familyIpv4": "IPv4 మాత్రమే", "familyIpv6": "IPv6 మాత్రమే", "familyHint": "ఎగ్రెస్ అడ్రస్ ఫ్యామిలీ. ఆటో డ్యూయల్-స్టాక్‌ను ఉంచుతుంది; IPv4/IPv6 ఈ ప్రాక్సీని ఆ ఫ్యామిలీకి పిన్ చేస్తుంది (IPv6-మాత్రమే ప్రాక్సీ కింద v4 లీక్‌ను నివారిస్తుంది).", - "labelHost": "Host", - "labelPort": "Port", - "labelUsername": "Username", - "labelPassword": "Password", - "labelRegion": "Region", - "labelStatus": "Status", - "labelNotes": "Notes", - "usernamePlaceholderEdit": "Leave blank to keep current username", - "passwordPlaceholderEdit": "Leave blank to keep current password", - "statusActive": "Active", - "statusInactive": "Inactive", - "cancel": "Cancel", - "save": "Save", - "bulkModalTitle": "Bulk Proxy Assignment", - "bulkLabelScope": "Scope", - "bulkLabelProxy": "Proxy", - "bulkClearAssignment": "(Clear assignment)", - "bulkLabelScopeIds": "Scope IDs (comma or newline separated)", + "labelHost": "హోస్ట్", + "labelPort": "పోర్ట్", + "labelUsername": "వినియోగదారు పేరు", + "labelPassword": "పాస్వర్డ్", + "labelRegion": "ప్రాంతం", + "labelStatus": "స్థితి", + "labelNotes": "గమనికలు", + "usernamePlaceholderEdit": "ప్రస్తుత వినియోగదారు పేరును అలాగే ఉంచడానికి ఖాళీగా వదిలేయండి", + "passwordPlaceholderEdit": "ప్రస్తుత పాస్వర్డ్ను అలాగే ఉంచడానికి ఖాళీగా వదిలేయండి", + "statusActive": "సక్రియం", + "statusInactive": "నిష్క్రియం", + "cancel": "రద్దు చేయండి", + "save": "సేవ్ చేయండి", + "bulkModalTitle": "బల్క్ ప్రాక్సీ కేటాయింపు", + "bulkLabelScope": "పరిధి", + "bulkLabelProxy": "ప్రాక్సీ", + "bulkClearAssignment": "(కేటాయింపును తొలగించండి)", + "bulkLabelScopeIds": "పరిధి IDలు (కామా లేదా కొత్త పంక్తితో వేరు చేయబడినవి)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", - "bulkApply": "Apply", + "bulkApply": "వర్తింపజేయండి", "labelScope": "పరిధి", "labelProxy": "ప్రాక్సీ", "scopeGlobal": "గ్లోబల్", @@ -10897,22 +10904,22 @@ "bulkImportErrorInvalidPort": "చెల్లని PORT (తప్పక 1-65535 అయి ఉండాలి)", "bulkImportErrorInvalidType": "చెల్లని TYPE (http, https లేదా socks5ని ఉపయోగించండి)", "bulkImportErrorInvalidStatus": "చెల్లని స్థితి (సక్రియ లేదా క్రియారహితంగా ఉపయోగించండి)", - "errorLoadFailed": "Failed to load proxy registry", - "errorNameHostRequired": "Name and host are required", - "errorSaveFailed": "Failed to save proxy", - "errorDeleteFailed": "Failed to delete proxy", - "errorForceDeleteConfirm": "This proxy is still assigned. Force delete and remove all assignments?", - "errorMigrateFailed": "Failed to migrate legacy proxy config", - "errorBulkFailed": "Failed to execute bulk assignment", + "errorLoadFailed": "ప్రాక్సీ రిజిస్ట్రీని లోడ్ చేయడం విఫలమైంది", + "errorNameHostRequired": "పేరు మరియు హోస్ట్ తప్పనిసరి", + "errorSaveFailed": "ప్రాక్సీని సేవ్ చేయడం విఫలమైంది", + "errorDeleteFailed": "ప్రాక్సీని తొలగించడం విఫలమైంది", + "errorForceDeleteConfirm": "ఈ ప్రాక్సీ ఇప్పటికీ కేటాయించబడి ఉంది. బలవంతంగా తొలగించి అన్ని కేటాయింపులను తీసివేయాలా?", + "errorMigrateFailed": "పాత ప్రాక్సీ కాన్ఫిగ్ను మైగ్రేట్ చేయడం విఫలమైంది", + "errorBulkFailed": "బల్క్ కేటాయింపును అమలు చేయడం విఫలమైంది", "success": "✓", "failure": "✗", - "failed": "Failed", - "successRate": "{rate}% success", - "avgLatency": "{latency}ms average", - "assignmentsCount": "{count} assignments", + "failed": "విఫలమైంది", + "successRate": "{rate}% విజయవంతం", + "avgLatency": "సగటు {latency}ms", + "assignmentsCount": "{count} కేటాయింపులు", "noData": "—", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency}మి.సె.", "testFailure": "✗ {error}", "repair": "రిపేర్ చేయండి", "relayAuthMissing": "అథెంటికేషన్ లేదు", @@ -10961,9 +10968,9 @@ "strategyLatency": "లేటెన్సీ-ఆప్టిమైజ్డ్", "poolMembersLabel": "పూల్ సభ్యులు ({count})", "poolNoMembers": "ఈ పూల్‌లో ఇంకా ప్రాక్సీలు లేవు.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{connections, plural, one {# కనెక్షన్} other {# కనెక్షన్లు}} ఉపయోగించిన {exits, plural, one {# ఎగ్జిట్} other {# ఎగ్జిట్లు}} · ఒక ఎగ్జిట్లో గరిష్ఠంగా {max} · గత {hours} గం.", + "poolEgressObservationEmpty": "గత {hours} గంటల్లో ట్రాఫిక్ ఏదీ గమనించబడలేదు", + "poolEgressObservationHint": "ఈ విండో వ్యవధిలో ప్రాక్సీ లాగ్ నుంచి లెక్కించబడినవి: ఈ పూల్ సభ్యుల కోసం గమనించిన విభిన్న ఎగ్రెస్ IPలు మరియు వాటిని ఉపయోగించిన OmniRoute కనెక్షన్లు. \"ఒకే ఎగ్జిట్లో\" అంటే ఒకే సమయంలో అని కాకుండా, విండో వ్యవధిలో అని అర్థం. ఒక్కో IPకి వర్తించే 429 లాకౌట్ అదే ప్రొవైడర్ ఫ్యామిలీకి చెందిన కనెక్షన్లను మాత్రమే తాత్కాలికంగా నిలిపివేస్తుంది.", "poolRemove": "తొలగించు", "poolRemoveFailed": "పూల్ నుండి ప్రాక్సీని తొలగించడం విఫలమైంది", "poolAddLabel": "ప్రాక్సీని జోడించండి", @@ -10973,96 +10980,96 @@ "poolSaveFailed": "పూల్ అసైన్‌మెంట్‌ను సేవ్ చేయడం విఫలమైంది" }, "playground": { - "title": "Model Playground", - "description": "Test any model directly from the dashboard. Select provider, model, and endpoint type, then send a request to see the raw response.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", - "accountKey": "Account / Key", - "autoAccounts": "Auto ({count} accounts)", - "noAccounts": "No accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", - "attachImages": "Attach Images (Vision)", + "title": "మోడల్ ప్లేగ్రౌండ్", + "description": "డ్యాష్బోర్డ్ నుంచే ఏ మోడల్నైనా పరీక్షించండి. ప్రొవైడర్, మోడల్ మరియు ఎండ్పాయింట్ రకాన్ని ఎంచుకుని, ముడి ప్రతిస్పందనను చూడటానికి అభ్యర్థనను పంపండి.", + "endpoint": "ఎండ్పాయింట్", + "provider": "ప్రొవైడర్", + "model": "మోడల్", + "accountKey": "ఖాతా / కీ", + "autoAccounts": "ఆటో ({count} ఖాతాలు)", + "noAccounts": "ఖాతాలు లేవు", + "send": "పంపు", + "cancel": "రద్దు చేయి", + "audioFile": "ఆడియో ఫైల్", + "attachImages": "చిత్రాలను జోడించండి (విజన్)", "multipartFormData": "multipart/form-data", - "upToImages": "Up to 4 images", - "selectAudioFile": "Select audio file for transcription (mp3, wav, m4a, ogg, flac…)", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", - "resetToDefault": "Reset to default", - "downloadAudio": "Download audio", - "copyText": "Copy text", - "transcriptionHint": "Transcription uses multipart/form-data. Upload the audio file above — the JSON below controls extra parameters (model, language).", - "imagesGenerated": "Generated {count} images", - "generatedImage": "Generated image {index}", - "save": "Save", + "upToImages": "గరిష్ఠంగా 4 చిత్రాలు", + "selectAudioFile": "ట్రాన్స్క్రిప్షన్ కోసం ఆడియో ఫైల్ను ఎంచుకోండి (mp3, wav, m4a, ogg, flac…)", + "clearAll": "అన్నింటినీ క్లియర్ చేయి", + "request": "అభ్యర్థన", + "response": "ప్రతిస్పందన", + "transcription": "ట్రాన్స్క్రిప్షన్", + "copy": "కాపీ చేయి", + "resetToDefault": "డిఫాల్ట్కు రీసెట్ చేయి", + "downloadAudio": "ఆడియోను డౌన్లోడ్ చేయి", + "copyText": "టెక్స్ట్ను కాపీ చేయి", + "transcriptionHint": "ట్రాన్స్క్రిప్షన్ multipart/form-dataను ఉపయోగిస్తుంది. పైన ఆడియో ఫైల్ను అప్లోడ్ చేయండి — దిగువనున్న JSON అదనపు పారామీటర్లను (మోడల్, భాష) నియంత్రిస్తుంది.", + "imagesGenerated": "{count} చిత్రాలు రూపొందించబడ్డాయి", + "generatedImage": "రూపొందించిన చిత్రం {index}", + "save": "సేవ్ చేయి", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", + "chat": "చాట్ పూర్తీకరణలు", + "responses": "ప్రతిస్పందనలు", "completions": "కంప్లీషన్స్", - "images": "Image generation", - "embeddings": "Embeddings", - "speech": "Text-to-speech", - "transcription": "Audio transcription", - "video": "Video generation", - "music": "Music generation", + "images": "చిత్ర సృష్టి", + "embeddings": "ఎంబెడ్డింగ్లు", + "speech": "వచనం నుండి మాటకు", + "transcription": "ఆడియో లిప్యంతరీకరణ", + "video": "వీడియో సృష్టి", + "music": "సంగీత సృష్టి", "moderations": "మోడరేషన్స్", - "rerank": "Rerank", - "search": "Web search", + "rerank": "పునఃర్యాంకింగ్", + "search": "వెబ్ శోధన", "webFetch": "వెబ్ ఫెచ్" }, "conversationalChat": "సంభాషణ చాట్", "clearChat": "చాట్‌ని క్లియర్ చేయండి", "typeMessagePlaceholder": "సందేశాన్ని టైప్ చేయండి... (కొత్త లైన్ కోసం Shift+Enter)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "చాట్", + "tabCompare": "పోల్చండి", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "రూపొందించండి", + "configPane": "కాన్ఫిగరేషన్", + "systemPrompt": "సిస్టమ్ ప్రాంప్ట్", + "systemPromptPlaceholder": "మీరు సహాయకరమైన అసిస్టెంట్.", + "modelPlaceholder": "ఉదా. openai/gpt-4o", + "endpointLabel": "ఎండ్పాయింట్", + "parametersLabel": "పారామీటర్లు", + "collapseConfig": "కాన్ఫిగరేషన్ పేన్ను కుదించండి", + "expandConfig": "కాన్ఫిగరేషన్ పేన్ను విస్తరించండి", + "temperature": "ఉష్ణోగ్రత", + "maxTokens": "గరిష్ఠ టోకెన్లు", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "ఉనికి పెనాల్టీ", + "frequencyPenalty": "ఫ్రీక్వెన్సీ పెనాల్టీ", "reasoningLabel": "రీజనింగ్", "thinking": "ఆలోచన", "effort": "ప్రయత్నం", "effortDefault": "డిఫాల్ట్", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "యాదృచ్ఛికం (ఖాళీగా వదలండి)", + "presetsLabel": "ప్రీసెట్లు", + "loadPreset": "ప్రీసెట్ను లోడ్ చేయండి", + "savePreset": "ప్రీసెట్ను సేవ్ చేయండి", + "noPresets": "ప్రీసెట్లు లేవు", + "presetNamePlaceholder": "ప్రీసెట్ పేరు", + "savingPreset": "సేవ్ చేస్తోంది…", + "nameRequired": "పేరు అవసరం", + "failedToSavePreset": "ప్రీసెట్ను సేవ్ చేయడం విఫలమైంది", + "improvePrompt": "ప్రాంప్ట్ను మెరుగుపరచండి", + "improvingPrompt": "మెరుగుపరుస్తోంది…", + "improvePromptTitle": "AIతో మీ ప్రాంప్ట్ను మెరుగుపరచండి", + "setModelFirst": "ముందుగా ఒక మోడల్ను సెట్ చేయండి", "setModelInConfigFirst": "ముందుగా కాన్ఫిగ్ పేన్‌లో ఒక మోడల్‌ను సెట్ చేయండి.", "improvePromptFailed": "ప్రాంప్ట్‌ను మెరుగుపరచడం విఫలమైంది.", "improvePromptAria": "AI ఉపయోగించి ప్రాంప్ట్‌ను మెరుగుపరచండి", "confirmImprovePrompt": "ప్రాంప్ట్‌ను మెరుగుపరచడాన్ని నిర్ధారించండి", "improvePromptDescription": "ఇది మెరుగైన సంస్కరణను రూపొందించడానికి మీ ప్రస్తుత సిస్టమ్ ప్రాంప్ట్‌ను కి పంపుతుంది.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "ఇది Configలో కాన్ఫిగర్ చేసిన మోడల్ కోటాను వినియోగిస్తుంది.", + "improveConfirm": "మెరుగుపరచు", + "exportCode": "కోడ్ను ఎగుమతి చేయి", + "exportCodeTitle": "కోడ్ను ఎగుమతి చేయి", "exportShort": "ఎగుమతి", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "ఎగుమతి చేయడానికి playground స్థితి అందుబాటులో లేదు.", "closeExportModal": "ఎగుమతి మోడల్‌ను మూసివేయి", "close": "మూసివేయి", "exportRealKeyWarning": "భద్రతా హెచ్చరిక: ఎగుమతి నిరోధించబడింది — అవుట్‌పుట్‌లో అసలైన API కీ కనుగొనబడింది. దయచేసి మీ API కీని రీసెట్ చేసి, మళ్లీ ప్రయత్నించండి.", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language} కోడ్‌ను కాపీ చేయి", "loadingPresets": "లోడ్ అవుతోంది…", "loadPresetPlaceholder": "ప్రీసెట్‌ను లోడ్ చేయి…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "కాపీ చేయి", + "copiedCode": "కాపీ అయింది!", + "addModel": "+ మోడల్ను జోడించు", + "runAll": "అన్నింటినీ అమలు చేయి", + "cancelAll": "అన్నింటినీ రద్దు చేయి", + "maxColumnsReached": "గరిష్ఠంగా {max} నిలువు వరుసలు", + "modelPlaceholderCompare": "మోడల్ (Cmd+K)…", "noModel": "ఏ మోడల్ లేదు", "statusLabel": "స్థితి: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "ప్రతిస్పందన కోసం వేచి చూస్తోంది…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "క్లయింట్ వైపు అంచనా", + "tokensLabel": "టోకెన్లు", + "costLabel": "ఖర్చు", + "costEstimated": "(అంచనా)", "ttftTitle": "మొదటి టోకెన్ సమయం (క్లయింట్-సైడ్ అంచనా)", "tpsTitle": "సెకనుకు టోకెన్లు (క్లయింట్-సైడ్ అంచనా)", "tokenCountsTitle": "ప్రాంప్ట్ టోకెన్లు ↑ / పూర్తి టోకెన్లు ↓", "estimatedCostTitle": "అంచనా వేసిన ఖర్చు (ఖచ్చితత్వానికి హామీ లేదు)", - "toolsLabel": "Tools", + "toolsLabel": "సాధనాలు", "toolsCount": "సాధనాలు ({count})", - "addTool": "Add tool", + "addTool": "సాధనాన్ని జోడించు", "editTool": "{name} సాధనాన్ని సవరించు", "removeTool": "{name} సాధనాన్ని తీసివేయి", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "ఫంక్షన్ పేరు", "toolNameRequiredPlaceholder": "ఫంక్షన్ పేరు *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "వివరణ (ఐచ్ఛికం)", "toolParamsLabel": "పారామీటర్లు (JSON స్కీమా)", "toolParamsJsonSchema": "పారామీటర్ల కోసం JSON స్కీమా", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "పారామీటర్లు చెల్లుబాటు అయ్యే JSON అయి ఉండాలి", + "structuredOutputLabel": "నిర్మిత అవుట్పుట్", + "enableJsonMode": "JSON మోడ్ను ప్రారంభించు", + "disableJsonMode": "JSON మోడ్ను నిలిపివేయి", + "invalidJson": "చెల్లని JSON", "jsonMode": "JSON మోడ్", "jsonModeDescription": "response_format: json_schema ను బలవంతం చేస్తుంది", "schemaName": "స్కీమా పేరు", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} నిలువు వరుసలు", "addModelToCompare": "పోల్చడానికి ఒక మోడల్ నిలువు వరుసను జోడించండి", "modelsSimultaneously": "ఒకేసారి {max} మోడల్‌ల వరకు", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "అమలవుతోంది…", + "runLabel": "అమలు చేయి", + "enterToolResult": "సాధనం ఫలితాన్ని నమోదు చేయండి…", "build": { "step1Label": "దేనిని పరీక్షించాలి?", "step2Label": "కాన్ఫిగర్ చేయండి", @@ -11250,73 +11257,73 @@ "stop": "ఆపు" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "రికార్డింగ్ అవుతోంది", + "paused": "పాజ్ చేయబడింది", + "pipelineLogsOn": "పైప్లైన్ లాగ్లు ఆన్లో ఉన్నాయి", + "pipelineLogsOff": "పైప్లైన్ లాగ్లు ఆఫ్లో ఉన్నాయి", + "updatingPipelineLogs": "పైప్లైన్ లాగ్లు నవీకరించబడుతున్నాయి...", + "updatePipelineFailed": "పైప్లైన్ లాగింగ్ను నవీకరించడం విఫలమైంది", + "capturePipeline": "కొత్త అభ్యర్థనల కోసం పైప్లైన్ పేలోడ్లను క్యాప్చర్ చేయి", + "searchPlaceholder": "మోడళ్లు, ప్రొవైడర్లు, ఖాతాలు, API కీలు, కాంబోలను వెతకండి...", + "allProviders": "అన్ని ప్రొవైడర్లు", + "allModels": "అన్ని మోడళ్లు", + "allAccounts": "అన్ని ఖాతాలు", + "allApiKeys": "అన్ని API కీలు", + "total": "మొత్తం", + "ok": "విజయం", + "err": "లోపం", + "combo": "కాంబో", + "keys": "కీలు", + "shown": "చూపబడినవి", + "sortNewest": "సరికొత్తవి", + "sortOldest": "అత్యంత పాతవి", + "sortTokensDesc": "టోకెన్లు ↓", + "sortTokensAsc": "టోకెన్లు ↑", + "sortDurationDesc": "వ్యవధి ↓", + "sortDurationAsc": "వ్యవధి ↑", + "sortStatusDesc": "స్థితి ↓", + "sortStatusAsc": "స్థితి ↑", + "sortModelAsc": "మోడల్ A-Z", + "sortModelDesc": "మోడల్ Z-A", + "sortLogs": "లాగ్లను క్రమబద్ధీకరించండి", + "refresh": "రిఫ్రెష్ చేయండి", + "columnsLabel": "నిలువు వరుసలు", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semantic": "సెమాంటిక్", + "upstream": "అప్స్ట్రీమ్", + "semanticCacheHit": "సెమాంటిక్ క్యాష్ హిట్ (OmniRoute ద్వారా అందించబడింది)", + "upstreamResponse": "అప్స్ట్రీమ్ ప్రొవైడర్ ప్రతిస్పందన", + "noApiKey": "API కీ లేదు", + "requestedRoutedTitle": "{requested} అభ్యర్థించబడింది, {routed}గా రూట్ చేయబడింది", "statusFilters": { - "all": "All", - "error": "Error", - "success": "Success", - "combo": "Combo" + "all": "అన్నీ", + "error": "లోపం", + "success": "విజయం", + "combo": "కాంబో" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "స్థితి", + "cacheSource": "క్యాష్ మూలం", + "model": "మోడల్", + "requested": "అభ్యర్థించబడింది", + "provider": "ప్రొవైడర్", + "protocol": "అభ్యర్థన ప్రోటోకాల్", + "account": "ఖాతా", + "apiKey": "API కీ", + "combo": "కాంబో", + "tokens": "టోకెన్లు", "compressed": "కుదింపు", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "వ్యవధి", + "time": "సమయం", + "conversation": "సంభాషణ", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "లాగ్లు లోడ్ అవుతున్నాయి...", + "noLogs": "ఇంకా లాగ్లు లేవు. వాటిని ఇక్కడ చూడటానికి కొన్ని API కాల్లు చేయండి.", + "noMatchingLogs": "ప్రస్తుత ఫిల్టర్లకు సరిపోలే లాగ్లు లేవు.", + "callLogsInfo": "కాల్ లాగ్లు JSON ఫైల్లుగా {dataDir}లో కూడా సేవ్ చేయబడతాయి మరియు {retentionDays}, {maxEntries} ఆధారంగా రొటేట్ చేయబడతాయి.", "loadMore": "మరిన్ని లోడ్ చేయండి", "loadingMore": "మరిన్ని లోడ్ అవుతున్నాయి...", "correlationId": "సంబంధిత ID", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "ఈ లాగ్ ఎంట్రీకి సంబంధించి వివరమైన పేమెంట్ ఆర్టిఫాక్ట్ అందుబాటులో లేదు.", "payloadCorrupt": "వివరమైన పేమెంట్ ఆర్టిఫాక్ట్‌ను పార్స్ చేయలేకపోయింది.", - "notAvailable": "N/A", + "notAvailable": "వర్తించదు", "semanticCache": "సెమాంటిక్ (OmniRoute)", "upstreamCache": "అప్‌స్ట్రీమ్ (ప్రొవైడర్)", "ariaLabel": "అభ్యర్థన లాగ్ వివరాలు", @@ -11417,59 +11424,59 @@ "correlationId": "సంబంధం ID", "correlationIdValue": "సంబంధిత ID: {id}", "detailedPayloadInfo": "కొత్త అభ్యర్థనల కోసం నాలుగు దశల క్లయింట్/ప్రొవైడర్ పేమెంట్ వీక్షణను కావాలంటే, మొదట వివరణాత్మక లాగింగ్‌ను ప్రారంభించండి.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "అన్నింటినీ కాపీ చేయండి", + "copiedAll": "అన్నీ కాపీ చేయబడ్డాయి" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "అన్నీ", + "filterErrors": "లోపాలు", + "filterSuccess": "విజయవంతం", + "filterTimeout": "సమయం ముగిసింది", + "colStatus": "స్థితి", + "colProxy": "ప్రాక్సీ", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", + "colType": "రకం", + "colLevel": "స్థాయి", + "colProvider": "ప్రొవైడర్", + "colTarget": "లక్ష్యం", + "colLatency": "జాప్యం", + "colClientIp": "క్లయింట్ IP", + "colTime": "సమయం", + "recording": "రికార్డింగ్", + "paused": "పాజ్ చేయబడింది", + "searchPlaceholder": "హోస్ట్, ప్రొవైడర్, లక్ష్యం, IP కోసం వెతకండి...", + "allTypes": "అన్ని రకాలు", + "allLevels": "అన్ని స్థాయిలు", + "allProviders": "అన్ని ప్రొవైడర్లు", + "total": "మొత్తం", + "ok": "సరే", "err": "ERR", "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "direct": "ప్రత్యక్షం", + "newest": "సరికొత్తవి", + "oldest": "పాతవి", + "latencyDesc": "విలంబం ↓", + "latencyAsc": "విలంబం ↑", + "refresh": "రిఫ్రెష్ చేయండి", + "columns": "నిలువు వరుసలు", + "loadingProxyLogs": "ప్రాక్సీ లాగ్లు లోడ్ అవుతున్నాయి...", + "noProxyLogs": "ఇంకా ప్రాక్సీ లాగ్లు లేవు. వాటిని ఇక్కడ చూడటానికి ప్రాక్సీలను కాన్ఫిగర్ చేసి API కాల్లు చేయండి.", + "noMatchingLogs": "ప్రస్తుత ఫిల్టర్లకు సరిపోలే లాగ్లు లేవు.", + "tlsFingerprint": "Chrome 124 TLS ఫింగర్ప్రింట్", "colPublicIp": "పబ్లిక్ IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "ప్రసంగం", + "search": "శోధన", + "images": "చిత్రాలు", + "chat": "చాట్", + "music": "సంగీతం", + "responses": "ప్రతిస్పందనలు", + "rerank": "పునఃర్యాంకింగ్", + "video": "వీడియో", + "embeddings": "ఎంబెడ్డింగ్లు", + "transcription": "లిప్యంతరీకరణ" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "రన్టైమ్", + "description": "రియల్టైమ్ పరిశీలనీయత — 3-స్థాయి స్థితిస్థాపకత + సెషన్లు + కోటా హెచ్చరికలు", + "pause": "పాజ్ చేయండి", + "resume": "కొనసాగించండి", + "refreshNow": "ఇప్పుడే రిఫ్రెష్ చేయండి", + "kpiSessions": "సెషన్లు", + "kpiCircuits": "సర్క్యూట్లు", + "kpiCooldowns": "కూల్డౌన్లు", + "kpiLockouts": "లాకౌట్లు", + "hintStickyBound": "{count} స్టికీ-బౌండ్", + "hintRecovering": "{count} కోలుకుంటున్నాయి", + "hintAllHealthy": "అన్నీ ఆరోగ్యంగా ఉన్నాయి", + "hintOpen": "తెరిచి ఉంది", + "hintConnsCooling": "కనెక్షన్లు కూల్డౌన్లో ఉన్నాయి", + "hintModelsBlocked": "మోడళ్లు బ్లాక్ చేయబడ్డాయి", + "resilienceTitle": "3-స్థాయి స్థితిస్థాపకత", + "resilienceSubtitle": "డాక్యుమెంట్ చేసిన స్థితిస్థాపకత నమూనాను ప్రతిబింబిస్తుంది", + "providersHealthy": "{percent}% ప్రొవైడర్లు ఆరోగ్యంగా ఉన్నారు", + "layer": "స్థాయి {n}", + "layer1Title": "ప్రొవైడర్ సర్క్యూట్ బ్రేకర్లు", + "layer1Desc": "అప్స్ట్రీమ్ స్థాయిలో విఫలమవుతున్న ప్రొవైడర్లకు ట్రాఫిక్ను నిలిపివేయండి", + "layer2Title": "కనెక్షన్ కూల్డౌన్లు", + "layer2Desc": "సమస్యాత్మకమైన ఒక ఖాతా/కీని దాటవేయండి; ఇతర కనెక్షన్లు సేవలు అందిస్తూనే ఉంటాయి", + "layer3Title": "మోడల్ లాకౌట్లు", + "layer3Desc": "ప్రతి మోడల్కు రేట్-లిమిట్ లాక్లు; అదే కనెక్షన్ ఇతర మోడళ్లకు సేవలు అందిస్తూనే ఉంటుంది", + "badgeAffectedOf": "మొత్తం {total}లో {affected} ప్రభావితమయ్యాయి", + "badgeCooling": "{count} కూల్డౌన్లో ఉన్నాయి", + "badgeLocked": "{count} లాక్ చేయబడ్డాయి", + "emptyCircuits": "ఇంకా ఏ సర్క్యూట్ బ్రేకర్లూ సక్రియంగా లేవు", + "emptyCooldowns": "సక్రియ కనెక్షన్ కూల్డౌన్లు లేవు", + "emptyLockouts": "మోడల్ లాకౌట్లు లేవు", + "moreCooldowns": "మరో +{count} కూల్డౌన్లు", + "moreLockouts": "మరో +{count} లాకౌట్లు", + "feedTitle": "లైవ్ ఫీడ్", + "feedSubtitle": "చివరి {count} ఈవెంట్లు", + "feedFilterAll": "అన్నీ", + "feedFilterCircuits": "సర్క్యూట్లు", + "feedFilterCooldowns": "కూల్డౌన్లు", + "feedFilterLockouts": "లాకౌట్లు", + "feedFilterSessions": "సెషన్లు", + "feedFilterQuotas": "కోటాలు", + "feedClear": "క్లియర్ చేయండి", + "feedEmptyWaiting": "ఈవెంట్ల కోసం వేచి ఉంది... (ప్రతి 5 సెకన్లకు పోల్ చేయబడుతుంది)", + "feedEmptyFiltered": "ఈ ఫిల్టర్కు సరిపోలే ఈవెంట్లు లేవు", + "sessionsTitle": "సక్రియ సెషన్లు", + "sessionsSubtitle": "స్టికీ-బౌండ్ అభ్యర్థన ఫింగర్ప్రింట్లు (లైవ్)", + "sessionsActive": "{count} సక్రియంగా ఉన్నాయి", + "sessionsEmptyTitle": "సక్రియ సెషన్లు లేవు", + "sessionsEmptyHint": "ప్రాక్సీ ద్వారా అభ్యర్థనలు ప్రవహిస్తున్నప్పుడు సెషన్లు కనిపిస్తాయి", + "tblSession": "సెషన్", + "tblAge": "వ్యవధి", + "tblIdle": "నిష్క్రియ", + "tblReqs": "అభ్యర్థనలు", + "tblBoundTo": "దీనికి అనుసంధానించబడింది", + "topApiKeys": "అగ్ర API కీలు", + "quotaMonitorsTitle": "కోటా మానిటర్లు", + "quotaMonitorsSubtitle": "ప్రతి ఖాతా విండోకు ప్రత్యక్ష కోటా స్థితి", + "openQuota": "కోటాను తెరవండి", + "allQuotasHealthy": "అన్ని కోటాలు సక్రమంగా ఉన్నాయి", + "statusExhausted": "అయిపోయింది", + "statusAlerting": "హెచ్చరికలో ఉంది", + "statusError": "లోపం", + "moreSuffix": "మరో {count}" }, "quotaShare": { "weightPercent": "వెయిట్ %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "కోటా భాగస్వామ్యం", + "description": "% పరిమితులతో ప్రొవైడర్ కోటాలను API కీల మధ్య పంచుకోండి", + "newPool": "కొత్త పూల్", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "కాన్ఫిగరేషన్ localStorageలో సేవ్ చేయబడింది (ఇంకా సర్వర్లో భద్రపరచబడలేదు). ప్రతి అభ్యర్థనకు పరిమితిని అమలు చేసే వ్యవస్థ ఇంకా ప్రాక్సీ పైప్లైన్కు అనుసంధానించబడలేదు. ఈ స్క్రీన్ కోటా విభజనను రూపొందించి, దృశ్యరూపంలో చూడటానికి మిమ్మల్ని అనుమతిస్తుంది; DBలో భద్రపరచడం మరియు అప్స్ట్రీమ్ కాల్లను అడ్డుకోవడం వంటి వాస్తవ అమలు భవిష్యత్ సంస్కరణలో అందుబాటులోకి వస్తుంది.", + "kpiActivePools": "సక్రియ పూల్లు", + "kpiKeysAllocated": "కేటాయించిన కీలు", + "kpiAvgUnallocated": "కేటాయించని సగటు", + "kpiProvidersWithQuota": "కోటా ఉన్న ప్రొవైడర్లు", + "emptyTitle": "ఏ పూల్లూ కాన్ఫిగర్ చేయబడలేదు", + "emptyDescription": "% కేటాయింపులతో ప్రొవైడర్ కోటా విండోను పంచుకోవడానికి API కీలను కేటాయించే పూల్ను సృష్టించండి.", + "loading": "లోడ్ అవుతోంది…", + "removePool": "పూల్ను తొలగించండి", + "removeConfirm": "ఈ పూల్ను తొలగించాలా?", + "pool": "పూల్", + "used": "వినియోగించబడింది", + "allocationsCount": "కేటాయింపులు ({count})", + "allocatedFree": "{allocated}% కేటాయించబడింది · {free}% ఖాళీ", + "noAllocations": "ఇంకా ఏ కీలూ కేటాయించబడలేదు", + "capLabel": "పరిమితి {value}", + "notTrackedYet": "(ఇంకా ట్రాక్ చేయబడలేదు)", + "policy": "విధానం", "apiKeyColumn": "API కీ", "weightColumn": "వెయిట్", "fairShareShort": "సమానమైన", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "కఠినం", + "policySoft": "సడలింపు", + "policyBurst": "బర్స్ట్", + "policyHardHint": "కీ తన కేటాయింపును పూర్తిగా వినియోగించినప్పుడు నిరోధించండి", + "policySoftHint": "పరిమితి మించి వినియోగాన్ని అనుమతించి, హెచ్చరిక మాత్రమే ఇవ్వండి", + "policyBurstHint": "ఖాళీ పూల్లోకి బర్స్ట్ను అనుమతించండి", + "editAllocations": "కేటాయింపులను సవరించండి", + "newPoolTitle": "కొత్త కోటా పూల్", + "providerConnection": "ప్రొవైడర్ కనెక్షన్ (ఖాతా)", + "selectConnection": "కనెక్షన్ను ఎంచుకోండి…", + "noEligibleConnections": "కోటా డేటా ఉన్న కనెక్షన్లు లేవు. ముందుగా /dashboard/quota నుండి రిఫ్రెష్ చేయండి.", + "quotaWindow": "కోటా విండో", + "selectWindow": "విండోను ఎంచుకోండి…", + "alreadyUsedSuffix": "(ఇప్పటికే ఉపయోగించబడింది)", + "windowReset": "రీసెట్", + "duplicatePoolError": "ఈ కనెక్షన్ + విండో కోసం ఇప్పటికే ఒక పూల్ ఉంది", + "cancel": "రద్దు చేయి", + "createPool": "పూల్ను సృష్టించు", + "editTitle": "కేటాయింపులను సవరించు", + "noKeysAdded": "కీలు ఏవీ కేటాయించబడలేదు. దిగువన ఒకదాన్ని జోడించండి.", + "totalLabel": "మొత్తం: {percent}%", + "totalExceeded": "⚠ 100% మించిపోయింది", + "addKey": "+ కీని జోడించండి…", + "equalSplit": "సమానంగా విభజించు", + "save": "కేటాయింపులను సేవ్ చేయి", "betaPreviewLabel": "బీటా — UI ప్రివ్యూ.", "betaConfigSavedPrefix": "కాన్ఫిగరేషన్ సేవ్ చేయబడింది", "betaConfigSavedSuffix": "(సర్వర్‌లో ఇంకా కొనసాగలేదు). ప్రతి అభ్యర్థన క్యాప్ ఎన్‌ఫోర్స్‌మెంట్ ఇంకా ప్రాక్సీ పైప్‌లైన్‌లోకి వైర్ చేయబడలేదు. ఈ స్క్రీన్ కోటా విభజనను రూపొందించడానికి మరియు దృశ్యమానం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది; DB పట్టుదల మరియు అప్‌స్ట్రీమ్ కాల్ ఇంటర్‌సెప్షన్‌తో నిజమైన అమలు భవిష్యత్తులో పునరావృతమవుతుంది.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "ఈ గ్రూప్‌లో ఇంకా పూల్స్ ఉన్నాయి — ముందుగా వాటిని తిరిగి కేటాయించండి లేదా తొలగించండి.", "ungroupedTitle": "గ్రూప్ చేయనివి", "ungroupedHint": "ఈ పూల్స్ ఏ తెలిసిన గ్రూప్‌కు కేటాయించబడలేదు. పూల్‌ను నిజమైన గ్రూప్‌లోకి తరలించడానికి దాన్ని ఎడిట్ చేయండి.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "ఈ పూల్ను తొలగించడం సాధ్యం కాలేదు.", + "dismiss": "మూసివేయి" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "ప్లగిన్లు", + "description": "OmniRoute కార్యాచరణను విస్తరించడానికి ప్లగిన్లను ఇన్స్టాల్ చేసి నిర్వహించండి", + "loading": "ప్లగిన్లు లోడ్ అవుతున్నాయి...", + "scanning": "స్కాన్ అవుతోంది...", + "scanForPlugins": "ప్లగిన్ల కోసం స్కాన్ చేయి", + "noPlugins": "ప్లగిన్లు ఏవీ ఇన్స్టాల్ చేయబడలేదు", + "noPluginsDescription": "ప్లగిన్ డైరెక్టరీలను ~/.omniroute/plugins/లో ఉంచి, స్కాన్ క్లిక్ చేయండి.", + "activate": "యాక్టివేట్ చేయి", + "deactivate": "డియాక్టివేట్ చేయి", + "uninstall": "అన్ఇన్స్టాల్ చేయి", + "uninstallConfirm": "\"{name}\" ప్లగిన్ను అన్ఇన్స్టాల్ చేయాలా?", + "pluginScanComplete": "ప్లగిన్ స్కాన్ పూర్తయింది", + "pluginScanFailed": "ప్లగిన్ స్కాన్ విఫలమైంది", + "activated": "{name} యాక్టివేట్ చేయబడింది", + "deactivated": "{name} డియాక్టివేట్ చేయబడింది", + "activateFailed": "{name}ను యాక్టివేట్ చేయడం విఫలమైంది", + "deactivateFailed": "{name}ను డియాక్టివేట్ చేయడం విఫలమైంది", + "uninstalled": "{name} అన్ఇన్స్టాల్ చేయబడింది", + "uninstallFailed": "{name}ను అన్ఇన్స్టాల్ చేయడం విఫలమైంది", + "configure": "కాన్ఫిగర్ చేయండి: {name}", + "configurePlugin": "కాన్ఫిగర్ చేయండి", + "noConfigSettings": "ఈ ప్లగిన్లో కాన్ఫిగర్ చేయగల సెట్టింగ్లు లేవు.", + "saving": "సేవ్ చేస్తోంది...", + "saveConfiguration": "కాన్ఫిగరేషన్ను సేవ్ చేయండి", + "configurationSaved": "కాన్ఫిగరేషన్ సేవ్ చేయబడింది", + "saveConfigurationFailed": "కాన్ఫిగరేషన్ను సేవ్ చేయడం విఫలమైంది", + "pluginNotFound": "ప్లగిన్ కనుగొనబడలేదు", + "version": "వెర్షన్", + "author": "రచయిత", + "description_label": "వివరణ", + "status": "స్థితి", + "enabled": "ప్రారంభించబడింది", + "disabled": "నిలిపివేయబడింది", "installedTab": "ఇన్‌స్టాల్ చేయబడింది", "marketplaceTab": "మార్కెట్‌ప్లేస్", "marketplaceUrlLabel": "కస్టమ్ మార్కెట్‌ప్లేస్ URL", @@ -11729,7 +11736,7 @@ "verified": "ధృవీకరించబడింది", "install": "ఇన్‌స్టాల్ చేయండి", "installedFromMarketplace": "ప్లగిన్ {name} ఇన్‌స్టాల్ చేయబడింది!", - "hooks": "Hooks" + "hooks": "హుక్స్" }, "quotaPlans": { "title": "ప్లాన్‌లు & కోటాలు", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP ఏజెంట్లు", "phrase": "ఎగ్జిక్యూషన్ బ్యాకెండ్‌గా OmniRoute సృష్టించే CLIలు (రివర్స్ ఫ్లో)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "చాలా మంది వినియోగదారులు దీన్ని పట్టించుకోనవసరం లేదు — ఇంటిగ్రేషన్కు అవసరమైనప్పుడు మాత్రమే ఉపయోగించండి.", "flow": "క్లయింట్ → OmniRoute → spawn CLI (stdio/ACP) → రెస్పాన్స్", "seeOther": "చూడండి →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "Omni ద్వారా బ్యాకెండ్‌గా ఉపయోగించబడే CLI", "desc": "రివర్స్ ఎగ్జిక్యూషన్", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → CLIని ప్రారంభించు → ప్రతిస్పందన", "examples": "ఉదాహరణకు: claude, codex (ACP)" } }, @@ -12246,7 +12253,7 @@ "pageSubtitle": "OmniRoute వైపు సూచించే కోడ్ టూల్స్", "searchPlaceholder": "CLIని శోధించండి…", "filterDetectionLabel": "గుర్తింపు", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "బేస్ URL", "detectionAll": "అన్నీ", "detectionInstalled": "ఇన్‌స్టాల్ చేయబడింది", "detectionNotFound": "కనుగొనబడలేదు", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "వెబ్‌హుక్స్", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "వెబ్హుక్ ఎండ్పాయింట్లను నమోదు చేయండి, జాబితా చేయండి, పరీక్షించండి మరియు తొలగించండి. ఈవెంట్ సబ్స్క్రిప్షన్లను (request.completed, request.failed, quota.exceeded మొదలైనవి) కాన్ఫిగర్ చేయండి మరియు డెలివరీ పునఃప్రయత్నాలను నిర్వహించండి." }, "omni-mcp": { "name": "MCP సర్వర్", @@ -12390,47 +12397,47 @@ "description": "కోర్ OpenAI-compatible ఇన్‌ఫరెన్స్ ఎండ్‌పాయింట్‌లు: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank, మరియు Responses API. AI ఏజెంట్ల కోసం ప్రాథమిక ఇంటిగ్రేషన్ సర్ఫేస్." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: సర్వ్", "description": "CLI నుండి OmniRoute సర్వర్‌ను ప్రారంభించండి, ఆపండి మరియు పునఃప్రారంభించండి. డెమోన్ మోడ్, పోర్ట్ కాన్ఫిగరేషన్, ఆటో-రికవరీ, సిస్టమ్ ట్రే ఇంటిగ్రేషన్ మరియు డ్యాష్‌బోర్డ్ ఓపెన్ షార్ట్‌కట్‌ను నిర్వహించండి." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: ఆరోగ్యం", "description": "CLI నుండి సర్వర్ ఆరోగ్యం, కాంపోనెంట్ స్థితి మరియు లైవ్ మెట్రిక్‌లను తనిఖీ చేయండి. సర్క్యూట్ బ్రేకర్లు మరియు ప్రొవైడర్ స్థితి యొక్క రియల్-టైమ్ డ్యాష్‌బోర్డ్ కోసం `health`, `health components`, మరియు `health watch`లను రన్ చేయండి." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: ప్రొవైడర్లు", "description": "CLI నుండి ప్రొవైడర్ కనెక్షన్‌లను నిర్వహించండి: అందుబాటులో ఉన్న/కాన్ఫిగర్ చేయబడిన ప్రొవైడర్‌లను జాబితా చేయండి, జోడించండి, పరీక్షించండి, test-all, ధృవీకరించండి, API కీలను రొటేట్ చేయండి మరియు ప్రొవైడర్ వారీ మెట్రిక్‌లను వీక్షించండి." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: API కీలు", "description": "CLI నుండి OmniRoute API కీలను సృష్టించండి, జాబితా చేయండి, రొటేట్ చేయండి మరియు రద్దు చేయండి. ప్రొవైడర్ ప్రామాణీకరణ కోసం OAuth ఫ్లోలను నిర్వహించండి మరియు కీ స్కోప్‌లు మరియు గడువు ముగింపును పరిశీలించండి." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: మోడళ్లు", "description": "అందుబాటులో ఉన్న AI మోడల్‌లను క్వెరీ చేయండి, మోడల్ మారుపేర్లను జాబితా చేయండి మరియు CLI నుండి పూర్తి మోడల్ కేటలాగ్‌ను బ్రౌజ్ చేయండి. ప్రొవైడర్ ద్వారా ఫిల్టర్ చేయండి, సామర్థ్యం ద్వారా శోధించండి మరియు మోడల్ పేరు వేరియంట్‌లను పరిష్కరించండి." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: చాట్", "description": "CLI నుండి చాట్ కంప్లీషన్‌లను పంపండి, ప్రతిస్పందనలను స్ట్రీమ్ చేయండి మరియు ఇంటరాక్టివ్ REPL సెషన్‌ను ప్రారంభించండి. అన్ని OmniRoute ప్రొవైడర్‌లు, కాంబో రూటింగ్ మరియు సిస్టమ్ ప్రాంప్ట్ కాన్ఫిగరేషన్‌కు మద్దతు ఇస్తుంది." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: రూటింగ్ & కాంబోలు", "description": "CLI నుండి రూటింగ్ కాంబోలను సృష్టించండి, జాబితా చేయండి, అప్‌డేట్ చేయండి మరియు తొలగించండి. రూటింగ్ వ్యూహాలను పరీక్షించండి, కాంబో మెట్రిక్‌లను పరిశీలించండి మరియు ఫాల్‌బ్యాక్ చైన్‌లను ఇంటరాక్టివ్‌గా కాన్ఫిగర్ చేయండి." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: స్థితిస్థాపకత & కోటాలు", "description": "CLI నుండి సర్క్యూట్-బ్రేకర్ స్థితులు, కనెక్షన్ కూల్‌డౌన్‌లు, కోటా పరిమితులు మరియు బ్యాక్‌ఆఫ్ స్థాయిలను పరిశీలించండి మరియు నిర్వహించండి. నిలిచిపోయిన ప్రొవైడర్‌లను రీసెట్ చేయండి మరియు రెసిలియెన్స్ థ్రెషోల్డ్‌లను కాన్ఫిగర్ చేయండి." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: కంప్రెషన్", "description": "CLI నుండి ప్రాంప్ట్ కంప్రెషన్‌ను కాన్ఫిగర్ చేయండి మరియు పరీక్షించండి. RTK ఫిల్టర్‌లు, Caveman నియమాలు, స్టాక్డ్ కంప్రెషన్ మోడ్‌లను నిర్వహించండి మరియు నిజమైన ప్రాంప్ట్‌లతో కంప్రెషన్ అవుట్‌పుట్‌ను ప్రివ్యూ చేయండి." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: సందర్భాలు & సెషన్లు", "description": "CLI నుండి కాంటెక్స్ట్ ఇంజనీరింగ్ కాన్ఫిగరేషన్‌లు, RTK ఫిల్టర్ సెట్‌లు మరియు సంభాషణ సెషన్‌లను నిర్వహించండి. context-relay సెట్టింగ్‌లను వర్తింపజేయండి మరియు యాక్టివ్ కాంటెక్స్ట్ పైప్‌లైన్‌లను పరిశీలించండి." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: ఖర్చు & వినియోగం", "description": "CLI నుండి ఖర్చు వివరాలు, టోకెన్ వినియోగం మరియు కాల్ లాగ్‌లను వీక్షించండి. ప్రొవైడర్, మోడల్ లేదా తేదీ పరిధి ద్వారా ఫిల్టర్ చేయండి. వినియోగ నివేదికలను ఎగుమతి చేయండి మరియు కనెక్షన్ వారీ ఖర్చును పరిశీలించండి." }, "cli-mcp": { @@ -12474,7 +12481,7 @@ "description": "ఇన్‌స్టాల్ చేయబడిన CLI కోడింగ్ టూల్స్‌ను (Claude Code, Codex, Cursor, Copilot, Cline మరియు మరిన్ని) గుర్తించండి, సరిపోలే ఏజెంట్ స్కిల్స్ కోసం GitHubలో శోధించండి మరియు OmniRoute యొక్క అంతర్నిర్మిత APIల ద్వారా గుర్తించబడిన టూల్స్‌కు వాటిని ఇన్‌స్టాల్ చేయండి." }, "config-codex-cli": { - "name": "Config: Codex CLI", + "name": "కాన్ఫిగ్: Codex CLI", "description": "OmniRouteను OpenAI-అనుకూల బ్యాకెండ్‌గా ఉపయోగించడానికి ఏదైనా మెషీన్‌లో (Linux, macOS, Windows) OpenAI Codex CLIని కాన్ఫిగర్ చేయడానికి దశలవారీ ఏజెంట్ వర్క్‌ఫ్లో. OS మరియు shellను గుర్తిస్తుంది, config.toml మరియు 7 పేరున్న ప్రొఫైల్‌లను వ్రాస్తుంది, ఎన్విరాన్‌మెంట్ వేరియబుల్స్‌ను సెట్ చేస్తుంది మరియు సెటప్‌ను ధృవీకరిస్తుంది." }, "omni-github-skills": { @@ -12497,7 +12504,7 @@ }, "comparison": { "colAgent": "ఏజెంట్ స్కిల్స్", - "colOmni": "Omni Skills", + "colOmni": "Omni స్కిల్స్", "whatIs": { "label": "ఇది ఏమిటి", "agent": "బాహ్య ఏజెంట్‌కు OmniRouteను ఆపరేట్ చేయడం నేర్పించే మెషిన్-రీడబుల్ SKILL.md", @@ -12589,14 +12596,14 @@ "typeApikey": "API కీ", "sortTypeFirst": "సులభమైనవి మొదట", "sortTypeFirstHelp": "సైన్ అప్ శ్రమ ఆధారంగా సమూహపరచండి (సైన్ అప్ అవసరం లేదు → OAuth లాగిన్ → API కీ), ప్రతి సమూహంలో నాణ్యత క్రమాన్ని అలాగే ఉంచండి", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "అత్యంత విశ్వసనీయమైనవి ముందు", + "sortByReliabilityHelp": "ఎంచుకున్న వ్యవధిలో విజయవంతమైన కాల్ల వాటా ఆధారంగా ప్రొవైడర్లను క్రమబద్ధీకరించండి. రేటును నిర్ధారించడానికి సరిపడా కాల్లు లేని ప్రొవైడర్లు, కొలవబడిన వాటి దిగువన తమ స్కోర్ క్రమాన్ని కొనసాగిస్తాయి.", "typeLegend": "సైన్ అప్ అవసరం లేదు = జీరో సెటప్ · OAuth లాగిన్ = మీ స్వంత ఖాతాతో సైన్ ఇన్ చేయండి · API కీ = మీ స్వంత కీని లేదా ఆ ప్రొవైడర్ ఉచిత శ్రేణిని ఉపయోగించండి", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "విశ్వసనీయత", + "colReliabilityHelp": "గత 24 గంటల్లో ఈ ప్రొవైడర్ వాస్తవంగా సమాధానమిచ్చిన కాల్ల వాటా. డ్యాష్ ఉంటే, రేటును నిర్ధారించడానికి ఇది చాలా తక్కువ ట్రాఫిక్ను నిర్వహించిందని అర్థం.", + "reliabilitySample": "గత {hours} గంటల్లో {requests} కాల్లలో {successes} విజయవంతమయ్యాయి", + "reliabilityTooFew": "గత {hours} గంటల్లో కేవలం {requests} కాల్లు మాత్రమే — రేటును నిర్ధారించడానికి ఇవి సరిపోవు", + "reliabilityNoTraffic": "గత 24 గంటల్లో కాల్లేవీ నమోదుకాలేదు" }, "discovery": { "title": "ప్రొవైడర్ డిస్కవరీ", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar మద్దతుదారు", + "description": "ప్రత్యక్ష OmniRoute Radar మద్దతుదారు ఫీడ్ను ధృవీకరించారు", + "criteria": "సంతకం చేసిన ప్రత్యక్ష Radar మద్దతుదారు ఫీడ్ను ధృవీకరించండి." }, "first-token": { "name": "మొదటి టోకెన్", @@ -12948,8 +12955,8 @@ "description": "ప్రతి అనుకూలత నోడ్ కోసం బహుళ కనెక్షన్‌లను అనుమతించండి." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "కాంటెక్స్ట్ విండో తనిఖీలను నిలిపివేయండి", + "description": "నేరుగా చేసే సింగిల్-మోడల్ అభ్యర్థనల కోసం OmniRoute యొక్క స్థానిక కాంటెక్స్ట్-విండో మరియు గరిష్ఠ-ఇన్పుట్-టోకెన్ తనిఖీని దాటవేయండి. అప్స్ట్రీమ్ ప్రొవైడర్లు ఇప్పటికీ తమ వాస్తవ పరిమితులను అమలు చేస్తాయి. ప్రాంప్ట్ కంప్రెషన్ మరియు అవుట్పుట్-టోకెన్ పరిమితులు సక్రియంగానే ఉంటాయి." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "క్లయింట్‌లకు ఫార్వార్డ్ చేయడానికి ముందు Responses API పాస్‌త్రూ స్ట్రీమ్‌ల నుండి అంతర్గత వ్యాఖ్యాన-దశ (commentary-phase) అవుట్‌పుట్ అంశాలను తీసివేయండి. ముడి అప్‌స్ట్రీమ్ వ్యాఖ్యానాన్ని స్వీకరించడానికి ఈ ఫ్లాగ్‌ను నిలిపివేయండి." @@ -12985,7 +12992,7 @@ "description": "బైట్లు ఇప్పటికే క్లయింట్‌కు చేరిన తర్వాత కూడా ప్రతిస్పందనను మళ్లీ అభ్యర్థించడానికి మరియు దానిని జత చేయడానికి స్ట్రీమ్ రికవరీని అనుమతించండి." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "మధ్య-స్ట్రీమ్ కొనసాగింపును టూల్-కాల్కు సురక్షితంగా చేయండి: టూల్ కాల్ పంపిన తర్వాత (ఇంకా ప్రోగ్రెస్లో ఉన్నా లేదా ఇప్పటికే పూర్తయినా) కట్ అయిన స్ట్రీమ్ను ఎప్పుడూ పునఃప్రారంభించవద్దు; అలాగే మొత్తం రీట్రై బడ్జెట్ను ఉపయోగించకుండా, ఒక ఖాళీ కొనసాగింపు తర్వాత ఆపివేయండి." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "స్ట్రీమ్ ఉపయోగకరమైన ఏ ఫ్రేమ్‌నూ పంపకముందే మూసుకుపోయి, అదే కనెక్షన్‌పై పరిమిత పునఃప్రయత్నం కూడా అయిపోతే, ఒకసారి సోదర కనెక్షన్‌కు ఫెయిల్‌ఓవర్ చేయండి. ఉపయోగించదగిన సోదర కనెక్షన్ లేకపోతే అసలు early-EOF లోపం తిరిగి ఇవ్వబడుతుంది. ఆఫ్: పునఃప్రయత్నం తర్వాత early-EOF తుది ఫలితంగానే ఉంటుంది." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "స్కిల్స్ శాండ్‌బాక్స్‌లో నెట్‌వర్క్ యాక్సెస్‌ను ప్రారంభించండి." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "సర్వర్ యాజమాన్యంలోని టూల్ లూప్", + "description": "మోడల్ క్లయింట్ ఉపయోగించగల ప్రతిస్పందనను అందించే వరకు నాన్-స్ట్రీమింగ్, సర్వర్ యాజమాన్యంలోని టూల్ కాల్లను కొనసాగించండి." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After మూలాధారం", + "description": "సమీకృత 429/503 అందుబాటులో-లేని ప్రతిస్పందనల్లో, నిర్దిష్టమైన భవిష్యత్ రీట్రై సమయం తెలియనప్పుడు కృత్రిమ 1sను పంపకుండా Retry-Afterను వదిలివేయండి, error.retry_after_provenanceను జోడించండి, అలాగే కాంబో డ్రెయిన్ పాత్లలో వచన రూపంలోని రీట్రై సూచనలను చదవండి." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "రక్షిత-ప్రాధాన్యత ఇన్ఫ్రా నిలిపివేతలను 502గా చూపించండి", + "description": "కోటా మాత్రమే ఉన్న ఫాల్బ్యాక్ ప్రాధాన్యత లక్ష్యం, కోటా కారణం కాదని నిరూపితమైన కారణంతో కాంబోను ఆపినప్పుడు 503కి బదులుగా 502తో సమాధానం ఇవ్వండి: తెరిచి ఉన్న ప్రొవైడర్ సర్క్యూట్ బ్రేకర్ లేదా అంచనా ఆధారిత లేటెన్సీ స్కిప్." } } }, @@ -13171,7 +13182,7 @@ "segmentHint": "ప్రతి విభాగం = ఒక ఉచిత పూల్ · పూల్-డూప్లికేట్ తీసివేసినది, నిజాయితీ గల లెక్కింపు (ఎక్కువ చేసి చూపిన రేట్-పరిమితి గరిష్టాలు లేవు).", "boost": "ఒకేసారి $10 OpenRouter టాప్-అప్‌తో నెలకు మరో ~{tokens} అన్‌లాక్ చేయండి (రోజుకు 50 → 1000 అభ్యర్థనలు)", "uncapped": "శాశ్వతంగా ఉచితం, ప్రచురించిన పరిమితి లేదు (రేట్-పరిమితం చేయబడింది) — నిజమైన యాక్సెస్, హెడ్‌లైన్‌లో లెక్కించబడదు:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "ప్రాంతీయ గుర్తింపు తనిఖీ వెనుక నెలకు అదనంగా ~{tokens} (ఉదా. ప్రధాన భూభాగ చైనా నిజ-పేరు ధృవీకరణ) — ఇది వాస్తవ కోటా, ప్రధాన గణాంకంలో లెక్కించబడదు:", "tosRestricted": "{count, plural, one {# మోడల్} other {# మోడల్స్}} ToS-పరిమితం చేయబడినట్లుగా ఫ్లాగ్ చేయబడ్డాయి — మీరే నిర్ణయించుకోండి", "provider": "ప్రొవైడర్", "model": "మోడల్", @@ -13270,80 +13281,80 @@ "viewFullHistory": "GitHubలో పూర్తి చరిత్రను చూడండి" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "రీజనింగ్ రూటింగ్ విధానాలు", + "apiKeyTitle": "ఈ API కీ కోసం రీజనింగ్ రూటింగ్", + "subtitle": "క్లయింట్ మద్దతు అవసరం లేకుండానే మోడల్లను మరియు రీజనింగ్ ఎఫర్ట్ను మళ్లించండి. ఏ నియమమూ సరిపోలనప్పుడు అభ్యర్థనలు మారవు.", + "loadError": "రీజనింగ్ నియమాలను లోడ్ చేయడం సాధ్యపడలేదు.", + "saveError": "నియమం చెల్లదు లేదా దాన్ని సేవ్ చేయడం సాధ్యపడలేదు.", + "saved": "రీజనింగ్ నియమం సేవ్ చేయబడింది.", + "deleteConfirm": "ఈ రీజనింగ్ నియమాన్ని తొలగించాలా?", + "deleteError": "రీజనింగ్ నియమాన్ని తొలగించడం సాధ్యపడలేదు.", + "empty": "సరిపోలే రీజనింగ్ నియమాలేవీ కాన్ఫిగర్ చేయబడలేదు.", + "all": "అన్నీ", + "any": "ఏదైనా", + "enabled": "ప్రారంభించబడింది", + "disabled": "నిలిపివేయబడింది", + "filterSearch": "నియమాలను శోధించండి", + "filterScope": "పరిధి ఆధారంగా ఫిల్టర్ చేయండి", + "filterStatus": "స్థితి ఆధారంగా ఫిల్టర్ చేయండి", + "allModels": "అన్ని మోడళ్లు", + "keepModel": "మోడల్ను అలాగే ఉంచు", + "otherModel": "ఇతర మోడల్", + "combo": "కాంబో", + "priorityShort": "ప్రాధాన్యత {value}", + "toggleAria": "{name}ను ప్రారంభించు", + "edit": "సవరించు", + "delete": "తొలగించు", + "name": "పేరు", + "description": "వివరణ", + "scopeLabel": "పరిధి", + "apiKey": "API కీ", + "sourceCombo": "మూల కాంబో", + "connection": "కనెక్షన్", + "sourceModel": "మూల మోడల్ లేదా వైల్డ్కార్డ్", + "sourceModelOptional": "ఖాళీగా ఉంటే = అన్ని మోడళ్లు", + "sourceModelExample": "ఉదా. gpt-5*", + "sourceEffort": "మూల ప్రయత్న స్థాయి", + "missing": "పేర్కొనబడలేదు", + "signalOnly": "విచ్ఛిన్నం కాని రీజనింగ్ సంకేతం", + "requestTags": "అభ్యర్థన ట్యాగ్లు", + "requestTagsExample": "కోడింగ్, అంతర్గత", + "tagMode": "ట్యాగ్ సరిపోలిక", + "effortMode": "ప్రయత్న మోడ్", + "targetEffort": "లక్ష్య ప్రయత్న స్థాయి", + "routingTarget": "రూటింగ్ లక్ష్యం", + "targetModel": "లక్ష్య మోడల్", + "targetCombo": "లక్ష్య కాంబో", + "budgetAction": "ఆలోచన బడ్జెట్", + "budgetTokens": "బడ్జెట్ టోకెన్లు", + "priority": "ప్రాధాన్యత", + "saveChanges": "మార్పులను సేవ్ చేయి", + "add": "నియమాన్ని జోడించు", + "cancel": "రద్దు చేయి", + "simulateTitle": "నియమాన్ని అనుకరించు", + "model": "మోడల్", + "effort": "ప్రయత్న స్థాయి", + "transport": "రవాణా", + "simulate": "అప్స్ట్రీమ్ లేకుండా అనుకరించు", + "extendedComboWarning": "రూటింగ్ సమయంలో ప్రతి కాంబో లక్ష్యానికి Max/Ultra విడిగా ధృవీకరించబడుతుంది.", + "extendedUnknownWarning": "Max/Ultra మద్దతును ధృవీకరించడానికి లక్ష్య మోడల్ను నమోదు చేయండి.", + "extendedUnsupportedWarning": "Max/Ultraకు తగిన Codex GPT-5.6 మోడల్లు మాత్రమే మద్దతు ఇస్తాయని తెలిసింది. తెలియని అనుకూల మోడల్లను సర్వర్ హెచ్చరికతో అంగీకరిస్తుంది.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "గ్లోబల్", + "apiKey": "API కీ", + "combo": "కాంబో", + "model": "మోడల్", + "connection": "కనెక్షన్" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "క్లయింట్ నుండి వారసత్వంగా పొందు", + "default": "డిఫాల్ట్ను ఉపయోగించు", + "force": "బలవంతంగా అమలు చేయు" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "అలాగే ఉంచు", + "remove": "తొలగించు", + "set": "స్థిర విలువను సెట్ చేయు" } }, "chaosConfig": { @@ -13425,91 +13436,91 @@ "tierCommunity": "సమాజం (30-రోజుల ఆలస్యం)", "activateTitle": "రాడార్ యాక్టివేట్ చేయండి", "activateDescription": "రాడార్ ఉచిత మోడల్ కాటలాగ్‌ను సమాజం ద్వారా సేకరించిన మేధస్సుతో సమృద్ధి చేస్తుంది — నవీకరించిన మోడల్ అందుబాటులో, క్వోటాలు, మరియు సెటప్ గైడ్లు.", + "accessScaleTitle": "సక్రియం చేసే ముందు Radar యాక్సెస్ను అర్థం చేసుకోండి", + "accessScaleIntro": "మీరు సమ్మతించే వరకు Radar నెట్వర్క్లో ఎలాంటి చర్యా చేపట్టదు. ఈ నియమాలను సమీక్షించిన తర్వాత Community యాక్సెస్ను ఎంచుకోండి లేదా వ్యక్తిగత supporter కీని సక్రియం చేయండి.", + "accessCommunityRule": "Community — కీ అవసరం లేదు: 30 రోజుల ఆలస్యంతో పూర్తి కేటలాగ్.", + "accessSingleUseRule": "Star + follow — GitHub OAuth రెండింటినీ ధృవీకరించిన తర్వాత, మీ GitHub ఖాతాకు లైవ్ కేటలాగ్ను ఒకసారి చదివే యాక్సెస్ లభిస్తుంది; ఆ తర్వాత యాక్సెస్ తిరిగి Community స్థాయికి మారుతుంది. ఆ ఖాతాకు ఈ ఒక్కసారి లభించే యాక్సెస్ను మళ్లీ జారీ చేయడం సాధ్యం కాదు.", + "accessContributorRule": "Contributors — విలీనం చేసిన PRలు, commits మరియు lines వారపు ర్యాంకింగ్ క్రమాన్ని మాత్రమే నిర్ణయిస్తాయి. Top 10కు 365 రోజులు; 11–100 ర్యాంకులకు 90 రోజులు లభిస్తాయి; PRల సంఖ్యతో సంబంధం లేకుండా Top 100 వెలుపల ఉన్న contributorsకు ఎలాంటి యాక్సెస్ మంజూరు కాదు. ర్యాంకింగ్ నుండి బయటకు వెళ్లినా ఇప్పటికే మంజూరైన వ్యవధి ఎప్పటికీ తగ్గదు.", + "accessSupporterRule": "Supporters — ఒకసారి చేసే కొనుగోళ్లు ఆటోమేటిక్ పునరుద్ధరణ లేకుండా 6 నెలలు, 1 సంవత్సరం లేదా జీవితకాల యాక్సెస్ను మంజూరు చేస్తాయి. కొనుగోళ్లు, విరాళాలు, contributor వ్యవధులు మరియు మాన్యువల్గా మంజూరు చేసిన వ్యవధులు కలుస్తాయి; జీవితకాల యాక్సెస్ ఎల్లప్పుడూ ప్రాధాన్యం పొందుతుంది.", + "accessUseTitle": "వ్యక్తిగత వినియోగం, పునరుద్ధరణ మరియు సమీక్ష", + "accessInstallationRule": "వ్యక్తిగత లైసెన్స్ — ఒక సమయంలో ఒక సక్రియ ఇన్స్టాలేషన్లో మాత్రమే కీని ఉపయోగించండి. OmniRoute హార్డ్వేర్ వేలిముద్రను సేకరించదు. పునరుద్ధరణ ప్రక్రియ, పోయిన కీ గడువు తేదీని రీసెట్ చేయకుండా దాన్ని రద్దు చేసి కొత్త కీతో భర్తీ చేస్తుంది.", + "accessAbuseRule": "దుర్వినియోగ సమీక్ష — 24 గంటల్లో 4వ విభిన్న IP కేవలం మాన్యువల్ సమీక్ష ఫ్లాగ్ను సృష్టిస్తుంది; ఇది కీని ఆటోమేటిక్గా ఎప్పటికీ బ్లాక్ చేయదు లేదా రద్దు చేయదు.", + "accessOffersRule": "లైవ్ ఆఫర్లు మాన్యువల్గా ఎంపిక చేయబడతాయి; అవి మారవచ్చు లేదా గడువు ముగియవచ్చు.", + "privacyTitle": "Radar ఏమి ఇచ్చిపుచ్చుకుంటుంది", + "privacyDownloadsRule": "డౌన్లోడ్లు — మీ ఇన్స్టాలేషన్ క్రిప్టోగ్రాఫిక్గా సంతకం చేసిన కేటలాగ్ మరియు referral metadataను స్వీకరిస్తుంది; చెల్లుబాటు అయ్యే లైవ్ కీ, సంతకం చేసిన ఆఫర్లు మరియు Intelను కూడా అన్లాక్ చేస్తుంది.", + "privacySendsRule": "పంపేవి — server-side sync, supporter కీని Bearer tokenగా పంపుతుంది మరియు HTTPS infrastructure కనెక్షన్ IPని స్వీకరిస్తుంది. Feed-request accounting ఈ రెండు విలువల్లో దేనినీ ముడి రూపంలో నిల్వ చేయదు: దుర్వినియోగ సమీక్ష కోసం ఇది key hashes, aggregate usage మరియు ప్రతిరోజూ మారే truncated IP HMACను ఉంచుతుంది.", + "privacyNeverRule": "ఎప్పటికీ సేకరించనివి — prompts, responses, conversations, provider credentials, model traffic, uptime, latency మరియు local provider configuration ఎప్పటికీ Radarకు పంపబడవు.", "activateButton": "యాక్టివేట్ చేయండి", "activating": "యాక్టివేట్ అవుతోంది...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", + "keySectionTitle": "ఇప్పటికే supporter కీ ఉందా?", + "keyInvalidFormatError": "చెల్లని కీ ఫార్మాట్. అది \"omr_\"తో ప్రారంభమై, ఆ తర్వాత 40 hex అక్షరాలు ఉండాలి.", + "activateWithKeyButton": "supporter యాక్సెస్ను సక్రియం చేయండి", + "changeKeyButton": "కీని మార్చండి", + "claimSectionTitle": "ఇంకా supporter కీ లేదా?", + "contributorButton": "నేను contributorను", + "contributorHint": "GitHub OAuth ప్రస్తుత వారపు ర్యాంకింగ్ను తనిఖీ చేస్తుంది: Top 10కు 365 రోజులు, 11–100 ర్యాంకులకు 90 రోజులు లభిస్తాయి. PRల సంఖ్య మాత్రమే Top 100 వెలుపల యాక్సెస్ను ఎప్పటికీ మంజూరు చేయదు.", + "supporterButton": "ప్రాజెక్ట్కు మద్దతు ఇవ్వండి", "supporterHint": "Support OmniRoute to get a supporter key with the live catalog and extra perks.", "colProvider": "ప్రొవైడర్", "colModel": "మోడల్", "colQuota": "క్వోటా", + "colLimits": "రేట్ పరిమితులు", + "trainsOnPrompts": "promptsపై శిక్షణ పొందుతుంది", + "trainsOnPromptsHelp": "మీరు పంపే promptsపై శిక్షణ కోసం వాటిని ఉపయోగించవచ్చని ఈ provider నిబంధనలు పేర్కొంటున్నాయి. ఈ badge లేని మోడల్లు అలా చేయవని పేర్కొంటాయి లేదా దాని గురించి డాక్యుమెంట్ చేయవు — ప్రకటన లేకపోవడం హామీ కాదు.", + "limitsUnknownHelp": "Radar feed నివేదించిన పరిమితులు మాత్రమే; ఈ ఎంట్రీకి ప్రచురించిన పరిమితులు లేవు", + "contextUnknownHelp": "ఈ ఎంట్రీకి context window తెలియదు", + "capabilityUnknownHelp": "ఫీడ్ ద్వారా సామర్థ్యం నివేదించబడలేదు", "colContext": "సందర్భం", "colCapabilities": "సామర్థ్యాలు", "colTos": "ToS ప్రమాదం", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "కొత్త", "setupGuide": "సెటప్ గైడ్", "disabledByFeed": "రాడార్ ఫీడ్ ద్వారా అచ్ఛుతమైంది", "capTools": "సాధనాలు", "capVision": "దృష్టి", "capThinking": "ఆలోచన", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "కేటలాగ్", + "freeCreditsTab": "ఉచిత క్రెడిట్లు", + "freeCreditsSubtitle": "Radar ట్రాక్ చేసే ప్రొవైడర్ల రిఫరల్ లింక్లు — వాటిని ఉపయోగించడం వల్ల మీకు అదనపు ఖర్చు ఉండదు మరియు OmniRouteకు మద్దతు అందించడంలో సహాయపడుతుంది.", + "fixedLinksEmpty": "ఇంకా రిఫరల్ లింక్లు అందుబాటులో లేవు. అప్డేట్ల కోసం తనిఖీ చేయడానికి Radarను సింక్ చేయండి.", + "requiredActionLabel": "చేయాల్సినది:", + "claimButton": "క్రెడిట్లను క్లెయిమ్ చేయండి", + "campaignsTitle": "పరిమిత-కాల ప్రచారాలు", + "campaignsEmpty": "ప్రస్తుతం యాక్టివ్ ప్రచారాలు లేవు — తర్వాత మళ్లీ తనిఖీ చేయండి.", + "campaignsUpsellCommunity": "పరిమిత-కాల ప్రచారాలు మద్దతుదారులకు లభించే అదనపు సౌలభ్యం. ఈ పేజీలోని స్థిర లింక్లలో ఉన్నవన్నీ అందరికీ ఉచితంగానే ఉంటాయి.", + "campaignsValidUntil": "{date} వరకు చెల్లుబాటు అవుతుంది", + "colActions": "చర్యలు", + "localBadge": "లోకల్", + "editModel": "సవరించు", + "saveModel": "సేవ్ చేయి", + "cancelEdit": "రద్దు చేయి", + "resetModel": "లోకల్ మార్పులను రీసెట్ చేయి", + "hideModel": "దాచు", + "restoreModel": "పునరుద్ధరించు", + "hiddenModelsTitle": "దాచిన మోడల్లు", + "modelDisplayName": "లోకల్ ప్రదర్శన పేరు", + "modelEnabled": "లోకల్గా ప్రారంభించబడింది", + "localStateSaveFailed": "లోకల్ Radar సెట్టింగ్లను సేవ్ చేయడం విఫలమైంది", + "guidedCombos": "మార్గనిర్దేశిత కాంబోలు", + "offers": "ఆఫర్లు", + "intel": "సమాచారం" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar మార్గనిర్దేశిత కాంబోలు", + "subtitle": "Radar ఎంపిక చేసిన సమానమైన ఉచిత మోడల్ల నుండి ప్రాధాన్యతా ఫాల్బ్యాక్లను సృష్టించండి.", + "backToRadar": "Radarకు తిరిగి వెళ్లండి", + "loading": "కాంబో సూచనలు లోడ్ అవుతున్నాయి...", + "familyLabel": "మోడల్ కుటుంబం", + "modelsLabel": "ప్రాధాన్యతా క్రమం", + "strategyReason": "ప్రాధాన్యత ముందుగా అత్యధిక పునరావృత ఉచిత బడ్జెట్ను ఉపయోగిస్తుంది, ఆపై యాక్టివ్ ప్రొవైడర్లలో ఫాల్బ్యాక్ అవుతుంది.", + "generateButton": "కాంబోను రూపొందించండి", + "generating": "రూపొందిస్తోంది...", + "alreadyCreated": "ఇప్పటికే సృష్టించబడింది", + "created": "కాంబో సృష్టించబడింది", + "noSuggestions": "ప్రస్తుతం అర్హత ఉన్న ఏ మోడల్ కుటుంబానికీ కనీసం ఇద్దరు ప్రొవైడర్లతో యాక్టివ్ కనెక్షన్లు లేవు.", + "catalogRequired": "ఎంపిక చేసిన మోడల్ కుటుంబాలను లోడ్ చేయడానికి ముందుగా Radar కేటలాగ్ను సింక్ చేయండి.", + "loadFailed": "Radar కాంబో సూచనలను లోడ్ చేయడం విఫలమైంది.", + "createFailed": "కాంబోను సృష్టించడం విఫలమైంది. మీ ప్రొవైడర్ కనెక్షన్లను సమీక్షించి, మళ్లీ ప్రయత్నించండి." }, "radarSetupPage": { "title": "ప్రొవైడర్ సెటప్", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "కనెక్షన్ స్థితిస్థాపకత", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "మీ కనెక్షన్లు స్వయంచాలకంగా పునరుద్ధరించబడతాయి", + "reassuranceDetail": "సాధారణంగా ఎలాంటి చర్య అవసరం లేదు. వైఫల్యాల తర్వాత OmniRoute తాత్కాలికంగా కనెక్షన్కు విరామం ఇచ్చి, ఆపై దాన్ని సురక్షితంగా మళ్లీ ప్రయత్నిస్తుంది.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "అభ్యర్థనలను పంపవచ్చు", + "coolingDown": "త్వరలో మళ్లీ ప్రయత్నిస్తోంది", + "lockedOut": "మీ శ్రద్ధ అవసరం" }, "table": { "status": "స్థితి", @@ -13598,7 +13609,7 @@ "remaining": "మిగిలినవి", "noLockouts": "క్రియాశీల లాక్‌అవుట్‌లు లేవు", "provider": "ప్రొవైడర్", - "id": "ID", + "id": "ఐడి", "authType": "ప్రామాణీకరణ రకం", "priority": "ప్రాధాన్యత", "isActive": "క్రియాశీలం", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "ప్రయోజనాలు అవసరమైన సామర్థ్యాలు (దృష్టి, సాధనాలు, నిర్మిత అవుట్‌పుట్, సందర్భం విండో) లేని లక్ష్య మోడల్ ముందు పంపిణీకి అభ్యర్థనలను తిరస్కరించండి. కాంబో-లేయర్ అనుకూలత ఫిల్టర్‌ను దాటించే ప్రత్యక్ష సింగిల్-ప్రొవైడర్ అభ్యర్థనలను రక్షిస్తుంది.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "నేరుగా పంపే సింగిల్-మోడల్ అభ్యర్థనల కోసం OmniRoute యొక్క స్థానిక కాంటెక్స్ట్-విండో మరియు గరిష్ఠ-ఇన్పుట్-టోకెన్ తనిఖీని దాటవేయండి. అప్స్ట్రీమ్ ప్రొవైడర్లు ఇప్పటికీ వారి వాస్తవ పరిమితులను అమలు చేస్తారు. ప్రాంప్ట్ కంప్రెషన్ మరియు అవుట్పుట్-టోకెన్ పరిమితులు సక్రియంగానే ఉంటాయి.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "శోధన గణాంకాలు మరియు ఇటీవలి శోధనలు ఇప్పటికీ సక్రియ కనెక్షన్ ఉన్న ప్రొవైడర్లను మాత్రమే లెక్కిస్తాయి (duckduckgo-free వంటి కీ అవసరం లేని ప్రొవైడర్లు ఎల్లప్పుడూ లెక్కించబడతారు). ఆఫ్లో ఉంచితే, ప్రొవైడర్ ID ఉన్న ప్రతి నిల్వ చేసిన శోధన వరుస అలాగే ఉంటుంది.", "publicSystem": { "notFound": { "title": "పేజీ కనుగొనబడలేదు", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "నిర్వహణ సమాచారం", "service": "సేవా", "unknown": "అజ్ఞాత", - "notAvailable": "n/a", + "notAvailable": "వర్తించదు", "providersTracked": "ప్రొవైడర్లు ట్రాక్ చేయబడ్డారు", "circuitBreakerState": "ప్రొవైడర్ సర్క్యూట్ బ్రేకర్ స్థితి", "lastUpdate": "చివరి నవీకరణ: {timestamp}", @@ -13853,7 +13864,7 @@ "authorizeImportant": "ముఖ్యమైనది: మీరు మొదట trae.aiలో బ్రౌజర్‌లో లాగిన్ అయి ఉండాలి. అధికారం పేజీ కేవలం ఒక ఉన్న సెషన్‌ను నిర్ధారిస్తుంది — ఇది మీకు లాగిన్ చేయలదు. మీరు \"లాగిన్ విఫలమైంది\" అని చూస్తే, \"Open solo.trae.ai\" పై క్లిక్ చేయండి, లాగిన్ అవ్వండి, తరువాత ఇక్కడ తిరిగి రండి.", "waitingForAuthorization": "trae.ai కోసం ఎదురుచూస్తున్నాం…", "authorizeWithBrowser": "బ్రౌజర్‌తో ఆమోదించండి", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.aiని తెరవండి", "orPasteManually": "లేదా ఒక టోకెన్‌ను చేతితో పేస్ట్ చేయండి", "manualInstructions": "solo.trae.ai లో సైన్ ఇన్ అవ్వండి, DevTools → Network ను తెరవండి, ఏదైనా చాట్ సందేశాన్ని పంపండి, మరియు Authorization: Cloud-IDE-JWT {tokenPlaceholder} అభ్యర్థన శీర్షిక నుండి JWT ను కాపీ చేయండి. JWT జీవితకాలం ~14 రోజులు. ఐచ్ఛిక గుర్తింపు ఫీల్డ్స్ అదే అభ్యర్థన శరీరంలో common_params నుండి వస్తాయి.", "accessTokenLabel": "అక్సెస్ టోకెన్ (క్లౌడ్-ఐడీఈ-జేడబ్ల్యూటీ)", @@ -13967,7 +13978,7 @@ "runners": "రన్నర్స్", "tasks": "పనులు", "colName": "పేరు", - "colClis": "CLIs", + "colClis": "CLIలు", "colStatus": "స్థితి", "colTask": "పని", "colMode": "మోడ్", @@ -14070,11 +14081,11 @@ "actionApprove": "ప్రణాళికను ఆమోదించండి", "actionCancel": "రద్దు చేయండి", "actionSeeInGraph": "గ్రాఫ్‌లో చూడండి", + "actionRepeat": "పునరావృతం చేయండి", "actionDone": "చర్య వర్తింపజేయబడింది", "actionFailed": "చర్య విఫలమైంది: {error}", "detailFailed": "వివరాలను లోడ్ చేయడంలో విఫలమైంది: {error}", "mirroredInA2A": "A2Aలో ప్రతిబింబించబడింది", - "actionRepeat": "పునరావృతం చేయండి", "repeatConfirm": "నిర్ధారించడానికి మళ్లీ క్లిక్ చేయండి", "repeatDone": "కొత్త రన్ సృష్టించబడింది", "repeatUnavailable": "అసలు ఇన్‌పుట్ అందుబాటులో లేదు" @@ -14088,57 +14099,57 @@ "networkError": "నెట్‌వర్క్ లోపం — ప్రొవైడర్ ఎక్స్‌పోజర్ సెటింగ్‌ను నవీకరించలేకపోయింది" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "మద్దతుదారుల ఆఫర్లు", + "subtitle": "Radar నుండి అధికారిక తగ్గింపులు, క్రెడిట్లు, ట్రయల్లు మరియు సమీక్షించిన భాగస్వామి ప్రయోజనాలు.", + "backToRadar": "Radarకు తిరిగి వెళ్లండి", + "loading": "ఆఫర్లు లోడ్ అవుతున్నాయి...", + "refresh": "ఆఫర్లను రిఫ్రెష్ చేయండి", + "refreshing": "రిఫ్రెష్ అవుతోంది...", + "loadFailed": "మేము ఆఫర్లను రిఫ్రెష్ చేయలేకపోయాము. చివరిగా ధృవీకరించిన స్థానిక క్యాష్ అలాగే ఉంచబడింది.", + "empty": "ప్రస్తుతం సక్రియ ఆఫర్లు ఏవీ అందుబాటులో లేవు.", + "keyRequiredTitle": "మద్దతుదారు కీ అవసరం", + "keyRequiredDescription": "ఆఫర్లు ప్రత్యక్ష Radar ప్రయోజనం. Radar స్క్రీన్లో ఇప్పటికే ఉన్న మద్దతుదారు కీని జోడించండి, మీ కంట్రిబ్యూటర్ స్థితిని ధృవీకరించండి లేదా ఒక కీని పొందడానికి ప్రాజెక్ట్కు మద్దతు ఇవ్వండి.", + "contributorButton": "నేను కంట్రిబ్యూటర్ను", + "supporterButton": "ప్రాజెక్ట్కు మద్దతు ఇవ్వండి", + "partnerBadge": "భాగస్వామి", + "officialBadge": "అధికారికం", + "conditionsLabel": "షరతులు:", + "validUntil": "{date} వరకు చెల్లుబాటు అవుతుంది", + "noExpiry": "గడువు ముగింపు ప్రకటించబడలేదు", + "openOffer": "ఆఫర్ను చూడండి", + "trialDays": "{days, plural, one {# రోజు} other {# రోజులు}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Radar ఇంటెల్", + "subtitle": "Radar యాజమాన్యంలోని ELO ర్యాంకింగ్లు మరియు వాస్తవాధారిత కాటలాగ్ మార్పులు.", + "backToRadar": "Radarకు తిరిగి వెళ్లండి", + "loading": "ఇంటెల్ లోడ్ అవుతోంది...", + "refresh": "ఇంటెల్ను రిఫ్రెష్ చేయండి", + "syncing": "రిఫ్రెష్ అవుతోంది...", + "loadFailed": "Intelను రిఫ్రెష్ చేయలేకపోయాము. చివరిగా ధృవీకరించిన స్థానిక క్యాష్ అలాగే ఉంచబడింది.", + "empty": "ధృవీకరించిన Intel స్నాప్షాట్ ఇంకా అందుబాటులో లేదు.", + "supporterBadge": "రాడార్ మద్దతుదారు", + "methodology": "పద్ధతి", + "eloMethod": "ELO, ప్రారంభ విలువ {initial}, K={factor}", + "freshness": "కేటలాగ్ తాజాదనం", + "ageDays": "{days, plural, one {# రోజు పాతది} other {# రోజుల పాతది}}", + "trend": "కేటలాగ్ ధోరణి", + "modelDelta": "{current} మోడళ్లు, +{added} / -{removed}", + "ranking": "మోడల్ ర్యాంకింగ్", + "noRankings": "ధృవీకరించిన పోలికలు ఇంకా అందుబాటులో లేవు.", + "model": "మోడల్", + "category": "వర్గం", + "rating": "రేటింగ్", + "matches": "మ్యాచ్లు", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "తాజా", + "aging": "పాతబడుతోంది", + "stale": "కాలం చెల్లినది" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "పెరుగుతోంది", + "stable": "స్థిరంగా ఉంది", + "shrinking": "తగ్గుతోంది" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "అనువర్తన ప్రదాత యొక్క సందర్భం కిటికీని మించు కోరింపు" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference ఒక OmniRoute ఓపెన్ సోర్స్ మిత్రుడు", + "description": "ఒకే OpenAI-అనుకూల ఎండ్పాయింట్ వెనుక డజన్ల కొద్దీ అత్యాధునిక మోడళ్లను తిరిగి విక్రయించే, ఖర్చు ఆధారంగా ర్యాంక్ చేసిన గేట్వే — ప్రతి అభ్యర్థనను అర్హత కలిగిన అత్యంత చౌక ప్రొవైడర్కు రూట్ చేస్తుంది, జాబితా ధరను ఎప్పుడూ మించదు.", + "cta": "API కీని పొందండి", + "partnerLinkNote": "భాగస్వామి లింక్", + "dismissAriaLabel": "మూసివేయి" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models కేటలాగ్లో ఆలోచనా స్థాయి వేరియంట్ల (ఉదా. -low, -medium, -high) సృష్టిని నిలిపివేయండి." } diff --git a/src/i18n/messages/th.json b/src/i18n/messages/th.json index 9ad2fe5e89..8d512b93d4 100644 --- a/src/i18n/messages/th.json +++ b/src/i18n/messages/th.json @@ -31,7 +31,7 @@ "active": "ใช้งานอยู่", "inactive": "ไม่ได้ใช้งาน", "noData": "ไม่มีข้อมูล", - "nothingHere": "Nothing here yet", + "nothingHere": "ยังไม่มีอะไรที่นี่", "configure": "กำหนดค่า", "manualConfig": "กำหนดค่าด้วยตนเอง", "manage": "จัดการ", @@ -47,7 +47,7 @@ "time": "เวลา", "details": "รายละเอียด", "created": "สร้างแล้ว", - "lastUsed": "Last Refreshed", + "lastUsed": "รีเฟรชล่าสุด", "loadMore": "โหลดเพิ่มเติม", "noResults": "ไม่พบผลลัพธ์", "reloadPage": "โหลดหน้าซ้ำ", @@ -70,8 +70,8 @@ "note": "หมายเหตุ", "free": "ฟรี", "skipToContent": "ข้ามไปที่เนื้อหา", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", + "maintenanceServerIssues": "เซิร์ฟเวอร์กำลังประสบปัญหา คุณลักษณะบางอย่างอาจไม่พร้อมใช้งาน", + "maintenanceServerUnreachable": "ไม่สามารถเชื่อมต่อเซิร์ฟเวอร์ได้ กำลังเชื่อมต่อใหม่...", "accept": "ยอมรับ", "accountId": "รหัสบัญชี", "alias": "นามแฝง", @@ -150,9 +150,9 @@ "Failed to reset pricing": "ไม่สามารถรีเซ็ตราคาได้", "apikey": "คีย์ API", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "ไปที่แดชบอร์ด", + "checkSystemStatus": "ตรวจสอบสถานะระบบ", + "selectModel": "เลือกโมเดล", "addModel": "เพิ่มโมเดล", "effortNone": "ไม่มี", "effortLow": "ต่ำ", @@ -164,10 +164,10 @@ "reasoningEffort": "ระดับการใช้เหตุผล", "wireApi": "Wire API", "modelAliases": "นามแฝงโมเดล", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "คอมโบ", + "noModelsFound": "ไม่พบโมเดล", + "clear": "ล้าง", + "done": "เสร็จสิ้น", "selectAll": "เลือกทั้งหมด", "unselectAll": "ยกเลิกการเลือกทั้งหมด", "visibleModels": "ที่แสดง", @@ -184,519 +184,519 @@ "selectAllProviders": "ตรวจสอบผู้ให้บริการทั้งหมด", "clearProviderSelection": "ยกเลิกการเลือกผู้ให้บริการ", "providersSelectedCount": "ตรวจสอบผู้ให้บริการ {count} ราย", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "เกิดข้อผิดพลาด", + "comboDeleted": "ลบคอมโบแล้ว", + "hide": "ซ่อน", + "creating": "กำลังสร้าง", + "comboCreated": "สร้างคอมโบแล้ว", + "swapFormats": "สลับรูปแบบ", + "daysAgo": "วันที่ผ่านมา", + "retries": "จำนวนครั้งที่ลองใหม่", + "errorDuringRestore": "เกิดข้อผิดพลาดระหว่างการกู้คืน", + "eventsAppearHint": "คำแนะนำเกี่ยวกับการแสดงเหตุการณ์", + "noLockouts": "ไม่มีการล็อก", + "webSearchDesc": "คำอธิบายการค้นหาเว็บ", + "audioProvidersHeading": "หัวข้อผู้ให้บริการเสียง", "cloudAgentProviders": "ผู้ให้บริการตัวแทนระบบคลาวด์", - "minutesAgo": "Minutes Ago", + "minutesAgo": "นาทีที่ผ่านมา", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "กำลังรีเฟรชอัตโนมัติแบบสด", + "webSearch": "การค้นหาเว็บ", + "anthropicPrefixPlaceholder": "ตัวยึดตำแหน่งคำนำหน้า Anthropic", + "addModelToCombo": "เพิ่มโมเดลไปยังคอมโบ", + "failedToLoad": "โหลดไม่สำเร็จ", + "categoryMedia": "หมวดหมู่สื่อ", + "enableCloud": "เปิดใช้งานคลาวด์", + "expirationBannerExpiringSoon": "แบนเนอร์แจ้งว่าใกล้หมดอายุ", + "retry": "ลองใหม่", + "embeddings": "เวกเตอร์ฝังตัว", + "errorCount": "จำนวนข้อผิดพลาด", + "backupReasonManual": "เหตุผลในการสำรองข้อมูล: ดำเนินการด้วยตนเอง", + "safeSearchModerate": "การค้นหาปลอดภัยระดับปานกลาง", + "activeLimiters": "ตัวจำกัดที่ใช้งานอยู่", + "a2aCardTitle": "ชื่อการ์ด A2A", + "cloudWorkerUnreachable": "ไม่สามารถเข้าถึง Cloud Worker ได้", + "testFailed": "การทดสอบล้มเหลว", + "compatibleBaseUrlHint": "คำแนะนำ Base URL ที่เข้ากันได้", + "usageTracking": "การติดตามการใช้งาน", + "disableCloudTitle": "ชื่อเรื่องการปิดใช้งาน Cloud", + "noConnections": "ไม่มีการเชื่อมต่อ", + "providerHealth": "สถานะผู้ให้บริการ", + "confirmDbImport": "ยืนยันการนำเข้าฐานข้อมูล", + "notAvailableSymbol": "สัญลักษณ์ไม่พร้อมใช้งาน", + "backupsAvailable": "ข้อมูลสำรองที่พร้อมใช้งาน", + "providerAuto": "เลือกผู้ให้บริการอัตโนมัติ", + "newProviderNamePlaceholder": "ตัวยึดตำแหน่งชื่อผู้ให้บริการใหม่", + "a2aQuickStartStep2": "ขั้นตอนที่ 2 ของการเริ่มต้นใช้งาน A2A อย่างรวดเร็ว", + "ok": "ตกลง", + "available": "พร้อมใช้งาน", + "noBackupYet": "ยังไม่มีข้อมูลสำรอง", + "more": "เพิ่มเติม", + "noCompatibleYet": "ยังไม่มีรายการที่เข้ากันได้", + "multiProvider": "หลายผู้ให้บริการ", + "repairEnvHint": "คำแนะนำในการซ่อมแซม Env", + "disablingCloud": "กำลังปิดใช้งาน Cloud", + "testBench": "ชุดทดสอบ", + "valid": "ถูกต้อง", + "cloudBenefitShare": "แชร์ประโยชน์ของ Cloud", + "mcpCardTitle": "ชื่อการ์ด MCP", + "disableConfirm": "ยืนยันการปิดใช้งาน", + "filters": "ตัวกรอง", + "expirationBannerExpiredDesc": "คำอธิบายแบนเนอร์การหมดอายุเมื่อหมดอายุแล้ว", + "saveComboDefaults": "บันทึกค่าเริ่มต้นของ Combo", + "cloudConnectedVerified": "เชื่อมต่อและยืนยัน Cloud แล้ว", + "uptime": "ระยะเวลาทำงาน", + "compatibleProdPlaceholder": "ตัวยึดตำแหน่ง Compatible Prod", + "fallbackChainsTitle": "ชื่อเรื่องเชนสำรอง", + "oauthLabel": "ป้ายกำกับ OAuth", + "a2aCardDescription": "คำอธิบายการ์ด A2A", + "okShort": "ตกลง", + "maintenance": "การบำรุงรักษา", + "formatConverter": "ตัวแปลงรูปแบบ", + "zedImportNetworkError": "ข้อผิดพลาดเครือข่ายในการนำเข้า Zed", + "apiKeyLabel": "ป้ายกำกับคีย์ API", + "noModelsForProvider": "ไม่มีโมเดลสำหรับผู้ให้บริการ", + "mcpCardDescription": "คำอธิบายการ์ด MCP", + "apiTypeLabel": "ป้ายกำกับประเภท API", + "configuredProvidersLabel": "ป้ายกำกับผู้ให้บริการที่กำหนดค่าแล้ว", + "maxRetriesLabel": "ป้ายกำกับจำนวนครั้งสูงสุดในการลองใหม่", + "title": "ชื่อเรื่อง", + "output": "ผลลัพธ์", + "prefixHint": "คำแนะนำคำนำหน้า", + "skipWizard": "ข้ามตัวช่วยตั้งค่า", + "failedCount": "จำนวนที่ล้มเหลว", + "confirmDbImportDesc": "คำอธิบายการยืนยันการนำเข้าฐานข้อมูล", + "entries": "รายการ", + "until": "จนถึง", + "disableCombo": "ปิดใช้งาน Combo", + "liveMonitorDescriptionPrefix": "คำนำหน้าคำอธิบายการตรวจสอบแบบเรียลไทม์", + "runningCount": "จำนวนที่กำลังทำงาน", + "noActiveConnectionsInGroup": "ไม่มีการเชื่อมต่อที่ใช้งานอยู่ในกลุ่ม", + "savedSuccessfully": "บันทึกสำเร็จแล้ว", + "systemStorage": "พื้นที่จัดเก็บข้อมูลของระบบ", + "videoDesc": "คำอธิบายวิดีโอ", + "maxResults": "จำนวนผลลัพธ์สูงสุด", + "timeRangeMonth": "ช่วงเวลาหนึ่งเดือน", + "testSummary": "สรุปผลการทดสอบ", + "failedSetPassword": "ตั้งรหัสผ่านไม่สำเร็จ", + "audio": "เสียง", + "restore": "กู้คืน", + "disableWarning": "ปิดใช้งานคำเตือน", + "moderationsDesc": "คำอธิบายการตรวจสอบเนื้อหา", + "providerHealthStatusAria": "ARIA สำหรับสถานะความพร้อมใช้งานของผู้ให้บริการ", + "modelNamePlaceholder": "ข้อความตัวอย่างสำหรับชื่อโมเดล", + "mcpQuickStartStep2": "ขั้นตอนที่ 2 ของการเริ่มต้นใช้งาน MCP อย่างรวดเร็ว", + "quickStart": "เริ่มต้นใช้งานอย่างรวดเร็ว", + "fullExportFailedWithError": "การส่งออกทั้งหมดล้มเหลวโดยมีข้อผิดพลาด", + "loadingBackups": "กำลังโหลดข้อมูลสำรอง", + "anthropicBaseUrlPlaceholder": "ข้อความตัวอย่างสำหรับ URL ฐานของ Anthropic", + "description": "คำอธิบาย", + "noProviderFound": "ไม่พบผู้ให้บริการ", + "auto": "อัตโนมัติ", + "protocolsDescription": "คำอธิบายโปรโตคอล", + "cloudSessionNote": "หมายเหตุเกี่ยวกับเซสชันคลาวด์", + "advancedSettings": "การตั้งค่าขั้นสูง", + "defaultStrategy": "กลยุทธ์เริ่มต้น", + "purgeExpiredLogs": "ล้างบันทึกที่หมดอายุ", + "justNow": "เมื่อสักครู่", + "providerTestFailed": "การทดสอบผู้ให้บริการล้มเหลว", + "openaiBaseUrlPlaceholder": "ตัวอย่าง URL ฐานของ OpenAI", + "image": "รูปภาพ", + "failedCreateChain": "สร้างเชนไม่สำเร็จ", + "importDatabase": "นำเข้าฐานข้อมูล", + "allDataLocal": "ข้อมูลทั้งหมดอยู่ในเครื่อง", + "sectionTitle": "ชื่อส่วน", + "failedToggle": "สลับสถานะไม่สำเร็จ", + "editCombo": "แก้ไขคอมโบ", + "testResults": "ผลการทดสอบ", + "searchQuery": "คำค้นหา", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "ทำสำเนา", + "createCombo": "สร้างคอมโบ", + "searchTypeWeb": "ประเภทการค้นหา: เว็บ", + "addChain": "เพิ่มเชน", + "prefixLabel": "ป้ายกำกับคำนำหน้า", + "listModelsDesc": "คำอธิบายรายการโมเดล", + "databaseSize": "ขนาดฐานข้อมูล", + "chainCreated": "สร้างเชนแล้ว", + "providerTestTimeout": "การทดสอบผู้ให้บริการหมดเวลา", + "routingStrategy": "กลยุทธ์การกำหนดเส้นทาง", + "translateAction": "การดำเนินการแปล", + "exportFailed": "ส่งออกไม่สำเร็จ", + "connectedVerificationPending": "เชื่อมต่อแล้ว กำลังรอการยืนยัน", + "a2aQuickStartTitle": "เริ่มต้นใช้งาน A2A อย่างรวดเร็ว", + "couldNotTest": "ไม่สามารถทดสอบได้", + "testAllCompatible": "ทดสอบทั้งหมดที่เข้ากันได้", + "anthropicCompatibleName": "ชื่อที่เข้ากันได้กับ Anthropic", + "disabling": "กำลังปิดใช้งาน", + "failedEnable": "เปิดใช้งานไม่สำเร็จ", + "categoryUtility": "หมวดหมู่ยูทิลิตี", + "customUrlOptional": "URL กำหนดเอง (ไม่บังคับ)", + "localProviders": "ผู้ให้บริการภายในเครื่อง", + "comboNamePlaceholder": "ตัวอย่างชื่อคอมโบ", + "memoryRss": "หน่วยความจำ RSS", + "disableProvider": "ปิดใช้งานผู้ให้บริการ", + "welcomeDesc": "คำอธิบายการต้อนรับ", + "nameLabel": "ป้ายกำกับชื่อ", + "allOperational": "ระบบทั้งหมดทำงานปกติ", + "backupNow": "สำรองข้อมูลตอนนี้", + "providerMaxRetriesAria": "ARIA จำนวนครั้งสูงสุดในการลองใหม่ของผู้ให้บริการ", + "textToSpeechDesc": "คำอธิบายการแปลงข้อความเป็นเสียงพูด", + "machineId": "รหัสเครื่อง", + "globalProxy": "พร็อกซีส่วนกลาง", + "hitsMisses": "จำนวนครั้งที่พบและไม่พบ", + "testDesc": "คำอธิบายการทดสอบ", + "chatDesc": "คำอธิบายการแชต", + "importSuccess": "นำเข้าสำเร็จ", + "chat": "แชต", + "a2aQuickStartStep1": "ขั้นตอนที่ 1 ของการเริ่มต้นใช้งาน A2A อย่างรวดเร็ว", + "importFailed": "นำเข้าไม่สำเร็จ", + "inputPlaceholder": "ข้อความตัวอย่างในช่องป้อนข้อมูล", + "providerModelsTitle": "ชื่อโมเดลของผู้ให้บริการ", + "lastBackup": "การสำรองข้อมูลล่าสุด", + "yourEndpoint": "เอนด์พอยต์ของคุณ", + "autoDisableThresholdDesc": "คำอธิบายเกณฑ์การปิดใช้งานอัตโนมัติ", + "rerankDesc": "คำอธิบายการจัดอันดับใหม่", + "modelsPathPlaceholder": "ข้อความตัวอย่างสำหรับพาธของโมเดล", + "noCombosYet": "ยังไม่มีชุดค่าผสม", + "connectedVerificationPendingWithError": "เชื่อมต่อแล้ว กำลังรอการตรวจสอบพร้อมข้อผิดพลาด", + "comboDefaultsGuideHint1": "คำแนะนำที่ 1 สำหรับค่าเริ่มต้นของชุดค่าผสม", + "enableCloudTitle": "เปิดใช้งานคลาวด์", + "configuredProvidersHint": "คำแนะนำเกี่ยวกับผู้ให้บริการที่กำหนดค่าแล้ว", + "paused": "หยุดชั่วคราว", + "llmProviders": "ผู้ให้บริการ LLM", + "enableCombo": "เปิดใช้งานชุดค่าผสม", + "removeProviderOverrideAria": "ARIA ลบการแทนที่ค่าของผู้ให้บริการ", + "nodeVersion": "เวอร์ชัน Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "ส่งออกไม่สำเร็จพร้อมข้อผิดพลาด", + "proxyConfigured": "กำหนดค่าพร็อกซีแล้ว", + "concurrencyPerModel": "จำนวนงานพร้อมกันต่อโมเดล", + "protocolTasksLabel": "ป้ายกำกับงานของโปรโตคอล", + "oauthProviders": "ผู้ให้บริการ OAuth", + "lockedCount": "จำนวนที่ล็อก", + "deleteChainConfirm": "ยืนยันการลบเชน", + "recentTranslations": "คำแปลล่าสุด", + "zedImportButton": "ปุ่มนำเข้า Zed", + "responsesDesc": "คำอธิบายการตอบกลับ", + "testedCount": "จำนวนที่ทดสอบแล้ว", + "providersCommaSeparatedPlaceholder": "ข้อความตัวอย่างสำหรับผู้ให้บริการที่คั่นด้วยจุลภาค", + "signatureDefaults": "ค่าเริ่มต้นของลายเซ็น", + "errorCreating": "เกิดข้อผิดพลาดขณะสร้าง", + "timeRangeYear": "ช่วงเวลาหนึ่งปี", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "ปิดใช้งาน Cloud สำเร็จแล้ว", + "deleteConfirm": "ยืนยันการลบ", + "check": "ตรวจสอบ", + "safeSearch": "การค้นหาที่ปลอดภัย", + "protocolLastActivity": "กิจกรรมล่าสุดของโปรโตคอล", + "openMcpDashboard": "เปิดแดชบอร์ด Mcp", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "ป้ายกำกับพาธแชต", + "retryDelay": "ระยะเวลาก่อนลองใหม่", + "errorUpdating": "เกิดข้อผิดพลาดขณะอัปเดต", + "ideCliIntegrations": "การผสานรวม IDE และ CLI", + "imageGeneration": "การสร้างรูปภาพ", + "apiKeyRequired": "จำเป็นต้องใช้คีย์ API", + "resetAllTitle": "หัวข้อรีเซ็ตทั้งหมด", + "connectionError": "ข้อผิดพลาดในการเชื่อมต่อ", + "modelName": "ชื่อโมเดล", + "apiKeyForCheck": "คีย์ API สำหรับการตรวจสอบ", + "cloudRequestTimeout": "คำขอ Cloud หมดเวลา", + "showConfiguredOnly": "แสดงเฉพาะรายการที่กำหนดค่าแล้ว", "showFreeOnly": "ฟรีเท่านั้น", "addFirstProvider": "เพิ่มผู้ให้บริการรายแรกของคุณ", "addFirstProviderDesc": "เชื่อมต่อผู้ให้บริการ AI เพื่อเริ่มคำขอกำหนดเส้นทางผ่าน OmniRoute คุณสามารถใช้ผู้ให้บริการฟรี, คีย์ API หรือบัญชี OAuth ได้", "learnMore": "เรียนรู้เพิ่มเติม", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "รวมโดเมน", + "promptCache": "แคชพรอมต์", + "cloudConnected": "เชื่อมต่อ Cloud แล้ว", + "deleteChain": "ลบเชน", + "chatPathPlaceholder": "ข้อความตัวอย่างพาธแชต", + "databasePath": "พาธฐานข้อมูล", + "usingLocalServer": "กำลังใช้เซิร์ฟเวอร์ภายในเครื่อง", + "globalComboConfig": "การกำหนดค่าคอมโบส่วนกลาง", + "backupFailed": "การสำรองข้อมูลล้มเหลว", + "tabProtocols": "แท็บโปรโตคอล", + "continue": "ดำเนินการต่อ", + "categorySearch": "ค้นหาหมวดหมู่", + "rateLimitStatus": "สถานะขีดจำกัดอัตรา", + "repairEnvSuccess": "ซ่อมแซมสภาพแวดล้อมสำเร็จ", + "nameRequired": "จำเป็นต้องระบุชื่อ", + "country": "ประเทศ", + "trackMetricsDesc": "คำอธิบายการติดตามเมตริก", + "durationSecondsShort": "ระยะเวลาแบบย่อ (วินาที)", + "formatConverterDescription": "คำอธิบายตัวแปลงรูปแบบ", + "cloudBenefitAccess": "การเข้าถึงสิทธิประโยชน์ของคลาวด์", + "maxRetries": "จำนวนครั้งที่ลองใหม่สูงสุด", + "queueTimeout": "ระยะหมดเวลาของคิว", "queueDepth": "ความลึกของคิว", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "เพิ่มผู้ให้บริการ", + "realtime": "เรียลไทม์", + "totalTranslations": "คำแปลทั้งหมด", + "protocolActiveStreamsLabel": "ป้ายกำกับสตรีมที่ใช้งานอยู่ของโปรโตคอล", + "repairEnv": "ซ่อมแซมสภาพแวดล้อม", + "modelsCount": "จำนวนโมเดล", + "viewBackups": "ดูข้อมูลสำรอง", + "responsesApi": "Responses API", + "copyComboName": "คัดลอกชื่อชุดค่าผสม", + "failures": "ความล้มเหลว", + "failedUpdate": "อัปเดตไม่สำเร็จ", + "imageDesc": "คำอธิบายรูปภาพ", + "failedCreate": "สร้างไม่สำเร็จ", + "remainingOfLimit": "เหลือจากขีดจำกัด", + "protocolsTitle": "โปรโตคอล", + "expirationBannerExpiringSoonDesc": "คำอธิบายแบนเนอร์การหมดอายุที่ใกล้จะหมดอายุ", + "source": "แหล่งที่มา", + "failed": "ล้มเหลว", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "ขั้นตอนที่ 1 ของการเริ่มต้นใช้งาน Mcp อย่างรวดเร็ว", + "runTest": "เรียกใช้การทดสอบ", + "loadingFallbackChains": "กำลังโหลดสายโซ่สำรอง", + "healthy": "ปกติ", + "version": "เวอร์ชัน", + "saveBlockWeighted": "บันทึกบล็อกแบบถ่วงน้ำหนัก", + "zedImportNone": "ไม่มีรายการนำเข้าจาก Zed", + "noBackupsYet": "ยังไม่มีข้อมูลสำรอง", + "noGlobalProxy": "ไม่มีพร็อกซีส่วนกลาง", + "noModels": "ไม่มีโมเดล", + "stickyLimit": "ขีดจำกัดแบบคงที่", + "passedCount": "จำนวนที่ผ่าน", + "zedImportFailed": "นำเข้าจาก Zed ไม่สำเร็จ", + "saving": "กำลังบันทึก", + "testAll": "ทดสอบทั้งหมด", + "globalProxyDesc": "คำอธิบายพร็อกซีส่วนกลาง", + "latencyP99": "เวลาแฝง P99", + "connectingToCloud": "กำลังเชื่อมต่อกับคลาวด์", + "responses": "การตอบกลับ", + "errorDeleting": "เกิดข้อผิดพลาดขณะลบ", + "openaiPrefixPlaceholder": "ข้อความตัวอย่างสำหรับคำนำหน้า Openai", + "enterPassword": "ป้อนรหัสผ่าน", + "openA2aDashboard": "เปิดแดชบอร์ด A2A", + "enableProvider": "เปิดใช้งานผู้ให้บริการ", + "modeTest": "ทดสอบโหมด", + "failedDeleteChain": "ลบเชนไม่สำเร็จ", + "providerDesc": "คำอธิบายผู้ให้บริการ", + "templateLoadHint": "คำแนะนำการโหลดเทมเพลต", + "lastFailure": "ความล้มเหลวล่าสุด", + "moveDown": "เลื่อนลง", + "providerLabel": "ป้ายกำกับผู้ให้บริการ", + "clearCacheFailed": "ล้างแคชไม่สำเร็จ", + "imagesGenerations": "การสร้างรูปภาพ", + "repairEnvWorking": "กำลังซ่อมแซมสภาพแวดล้อมการทำงาน", + "millisecondsShort": "มิลลิวินาที", + "globalLabel": "ป้ายกำกับส่วนกลาง", + "failuresPlural": "ความล้มเหลว", + "completionsLegacyDesc": "คำอธิบาย Completions แบบเดิม", + "searchProviders": "ค้นหาผู้ให้บริการ", + "chatPathHint": "คำแนะนำพาธแชต", + "defaultStrategyDesc": "คำอธิบายกลยุทธ์เริ่มต้น", + "latencyP95": "เวลาแฝง P95", + "textToSpeech": "แปลงข้อความเป็นเสียงพูด", + "searchType": "ประเภทการค้นหา", + "messages": "ข้อความ", + "aggregatorsGateways": "ตัวรวบรวมและเกตเวย์", + "comboStrategyAria": "กลยุทธ์แบบผสม Aria", + "input": "อินพุต", + "testingConnection": "กำลังทดสอบการเชื่อมต่อ", + "excludeDomains": "ยกเว้นโดเมน", + "webCookieProviders": "ผู้ให้บริการคุกกี้เว็บ", + "allTestsPassed": "ผ่านการทดสอบทั้งหมดแล้ว", + "openaiCompatibleName": "ชื่อที่เข้ากันได้กับ Openai", + "warningCostOptimizedPartialPricing": "คำเตือนเกี่ยวกับการกำหนดราคาบางส่วนที่ปรับต้นทุนให้เหมาะสม", + "comboDefaultsGuideTitle": "ชื่อคู่มือค่าเริ่มต้นแบบผสม", + "hoursAgo": "ชั่วโมงที่แล้ว", + "notAvailable": "ไม่พร้อมใช้งาน", + "skipAndContinue": "ข้ามและดำเนินการต่อ", + "moderations": "การตรวจสอบเนื้อหา", + "proxyConfig": "การกำหนดค่าพร็อกซี", + "upstreamProxyProviders": "ผู้ให้บริการพร็อกซีต้นทาง", + "exportAll": "ส่งออกทั้งหมด", + "queuedCount": "จำนวนที่อยู่ในคิว", + "resetAll": "รีเซ็ตทั้งหมด", + "noTranslations": "ไม่มีคำแปล", + "avgLatency": "เวลาแฝงเฉลี่ย", + "throttleStatus": "สถานะการจำกัดอัตรา", + "backupRetentionDesc": "คำอธิบายการเก็บรักษาข้อมูลสำรอง", + "noCBData": "ไม่มีข้อมูล Cb", + "chainDeleted": "ลบเชนแล้ว", + "timeLeft": "เวลาที่เหลือ", + "expirationBannerExpired": "แบนเนอร์การหมดอายุ: หมดอายุแล้ว", + "language": "ภาษา", + "invalidFileType": "ประเภทไฟล์ไม่ถูกต้อง", + "monitoredProviders": "ผู้ให้บริการที่ได้รับการตรวจสอบ", + "errors": "ข้อผิดพลาด", + "heap": "ฮีป", + "chatCompletions": "การเติมข้อความแชทให้สมบูรณ์", + "exampleTemplatesHint": "คำแนะนำสำหรับเทมเพลตตัวอย่าง", + "retryDelayLabel": "ป้ายกำกับการหน่วงเวลาก่อนลองใหม่", + "audioTranscription": "การถอดเสียงจากไฟล์เสียง", + "fallbackChainsDesc": "คำอธิบายเชนสำรอง", + "exampleTemplates": "เทมเพลตตัวอย่าง", + "connectionsCount": "จำนวนการเชื่อมต่อ", + "modelsPathLabel": "ป้ายกำกับพาธของโมเดล", + "activeProvidersHint": "คำแนะนำเกี่ยวกับผู้ให้บริการที่ใช้งานอยู่", + "activeLockouts": "การล็อกที่ใช้งานอยู่", + "invalid": "ไม่ถูกต้อง", + "skipPassword": "ข้ามรหัสผ่าน", + "moveUp": "เลื่อนขึ้น", + "timeRange": "ช่วงเวลา", + "stickyLimitDesc": "คำอธิบายขีดจำกัดแบบคงที่", + "cloudBenefitEdge": "ขอบเขตสิทธิประโยชน์ของคลาวด์", + "custom": "กำหนดเอง", + "verifying": "กำลังตรวจสอบ", + "baseUrlLabel": "ป้ายกำกับ URL ฐาน", + "setPassword": "ตั้งรหัสผ่าน", + "safeSearchStrict": "การค้นหาปลอดภัยแบบเข้มงวด", + "noChangesSinceBackup": "ไม่มีการเปลี่ยนแปลงนับจากการสำรองข้อมูล", + "modelsPathHint": "คำแนะนำพาธของโมเดล", + "audioTranscriptions": "การถอดเสียง", + "testCombo": "ทดสอบคอมโบ", + "mcpQuickStartTitle": "ชื่อเรื่องคู่มือเริ่มต้นใช้งาน MCP อย่างรวดเร็ว", + "comboUpdated": "อัปเดตคอมโบแล้ว", + "weighted": "ถ่วงน้ำหนัก", + "providers": "ผู้ให้บริการ", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "คำอธิบายเมื่อไม่มีเชนสำรอง", + "yesImport": "ใช่ นำเข้า", + "lockoutsAutoRefreshHint": "คำแนะนำการรีเฟรชอัตโนมัติสำหรับการล็อกบัญชี", + "tabApis": "แท็บ API", + "sectionDescription": "คำอธิบายส่วน", + "filter": "ตัวกรอง", + "purgeLogsFailed": "ล้างบันทึกไม่สำเร็จ", + "latency": "เวลาแฝง", + "testAllOAuth": "ทดสอบ OAuth ทั้งหมด", + "mcpQuickStartStep3": "ขั้นตอนที่ 3 ของคู่มือเริ่มต้นใช้งาน MCP อย่างรวดเร็ว", + "repairEnvFailed": "ซ่อมแซม Env ไม่สำเร็จ", + "zedImportHint": "คำแนะนำการนำเข้าจาก Zed", + "modelsAcrossEndpoints": "โมเดลในทุกเอนด์พอยต์", + "autoDisableBannedAccounts": "ปิดใช้งานบัญชีที่ถูกแบนโดยอัตโนมัติ", + "securityDesc": "คำอธิบายความปลอดภัย", + "listModels": "แสดงรายการโมเดล", + "backupRestore": "สำรองและกู้คืน", + "target": "เป้าหมาย", + "zedImportSuccess": "นำเข้าจาก Zed สำเร็จ", + "lastHeaderUpdate": "อัปเดตส่วนหัวล่าสุด", + "categoryCore": "หมวดหมู่หลัก", + "noFallbackChains": "ไม่มีเชนสำรอง", + "noSearchProviders": "ไม่มีผู้ให้บริการค้นหา", + "autoBalance": "ปรับสมดุลอัตโนมัติ", + "noModelsYet": "ยังไม่มีโมเดล", + "signatureFamily": "ตระกูลลายเซ็น", + "externalApiCalls": "การเรียกใช้ API ภายนอก", + "providerOverridesDesc": "คำอธิบายการแทนที่ผู้ให้บริการ", + "signatureTool": "เครื่องมือลายเซ็น", + "connectionFailed": "การเชื่อมต่อล้มเหลว", + "activeLimitersPlural": "ตัวจำกัดที่ใช้งานอยู่หลายรายการ", + "doneDesc": "คำอธิบายเมื่อเสร็จสิ้น", + "down": "ไม่พร้อมใช้งาน", + "noDataYet": "ยังไม่มีข้อมูล", + "activeProviders": "ผู้ให้บริการที่ใช้งานอยู่", + "nameInvalid": "ชื่อไม่ถูกต้อง", + "skip": "ข้าม", + "createChain": "สร้างเชน", + "audioSpeech": "เสียงพูด", + "cacheCleared": "ล้างแคชแล้ว", + "searchTypeNews": "ประเภทการค้นหา: ข่าว", + "durationMillisecondsShort": "มิลลิวินาที", + "addOpenAICompatible": "เพิ่มผู้ให้บริการที่เข้ากันได้กับ Open AI", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "อยู่ในคิว", + "domainPlaceholder": "ตัวยึดตำแหน่งโดเมน", + "durationMinutesShort": "นาที", + "verifyingConnection": "กำลังตรวจสอบการเชื่อมต่อ", + "imageProviders": "ผู้ให้บริการรูปภาพ", + "protocolToolsLabel": "เครื่องมือโปรโตคอล", + "queryPlaceholder": "ตัวยึดตำแหน่งคำค้นหา", + "videoGeneration": "การสร้างวิดีโอ", + "timeRangeWeek": "สัปดาห์ที่ผ่านมา", + "limitExhausted": "ถึงขีดจำกัดแล้ว", + "failedDisable": "ปิดใช้งานไม่สำเร็จ", + "inMemoryNote": "หมายเหตุเกี่ยวกับหน่วยความจำภายใน", + "compatibleHint": "คำแนะนำเกี่ยวกับความเข้ากันได้", + "errorShort": "ข้อผิดพลาด", + "advancedHint": "คำแนะนำขั้นสูง", + "restoreFailed": "กู้คืนไม่สำเร็จ", + "searchProvidersHeading": "ผู้ให้บริการค้นหา", + "comboName": "ชื่อชุดผสม", + "autoDisableDescription": "คำอธิบายการปิดใช้งานอัตโนมัติ", + "embeddingsDesc": "คำอธิบาย Embeddings", + "operational": "ทำงานเป็นปกติ", + "testAllApiKey": "ทดสอบ API Key ทั้งหมด", + "backupCreated": "สร้างข้อมูลสำรองแล้ว", + "errorDuringImport": "เกิดข้อผิดพลาดระหว่างการนำเข้า", + "comboDefaultsGuideHint2": "คำแนะนำเกี่ยวกับค่าเริ่มต้นของคอมโบ 2", + "connecting": "กำลังเชื่อมต่อ", + "fillModelAndProviders": "กรอกโมเดลและผู้ให้บริการ", + "syncing": "กำลังซิงค์", + "resetConfirm": "ยืนยันการรีเซ็ต", + "trackMetrics": "ติดตามเมตริก", + "successful": "สำเร็จ", + "recovering": "กำลังกู้คืน", + "autoDisableThreshold": "เกณฑ์การปิดใช้งานอัตโนมัติ", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "กำลังซิงค์ข้อมูล", + "cloudBenefitPorts": "พอร์ตสำหรับสิทธิประโยชน์ของคลาวด์", + "compatibleProviders": "ผู้ให้บริการที่เข้ากันได้", "freeTierProviders": "ผู้ให้บริการระดับฟรี", "freeTierLabel": "มีเทียร์ฟรี", "freeTierProvidersDesc": "ผู้ให้บริการแบบฟรีเทียร์ — บางรายจำเป็นต้องลงทะเบียนคีย์ API ส่วนผู้ให้บริการรายอื่นไม่ต้องการข้อมูลรับรองเลย", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "ล้างแคช", + "reqs": "คำขอ", + "addAnthropicCompatible": "เพิ่มผู้ให้บริการที่เข้ากันได้กับ Anthropic", + "apiKeyProviders": "ผู้ให้บริการคีย์ API", + "tabsAria": "ARIA ของแท็บ", + "resetting": "กำลังรีเซ็ต", + "millisecondsAbbr": "มิลลิวินาที", + "backupReasonPreRestore": "เหตุผลในการสำรองข้อมูลก่อนกู้คืน", + "disableCloud": "ปิดใช้งานคลาวด์", + "newProviderNameAria": "ARIA ของชื่อผู้ให้บริการใหม่", + "passwordsMismatch": "รหัสผ่านไม่ตรงกัน", + "a2aQuickStartStep3": "ขั้นตอนที่ 3 ของการเริ่มต้นใช้งาน A2A อย่างรวดเร็ว", + "liveMonitorDescriptionSuffix": "คำต่อท้ายคำอธิบายการตรวจสอบแบบสด", + "failedAddProvider": "เพิ่มผู้ให้บริการไม่สำเร็จ", + "addAtLeastOneProvider": "เพิ่มผู้ให้บริการอย่างน้อยหนึ่งราย", + "reasonSeparator": "ตัวคั่นเหตุผล", + "zedImporting": "Zed กำลังนำเข้า", + "confirmPasswordPlaceholder": "ตัวยึดตำแหน่งสำหรับยืนยันรหัสผ่าน", + "whatYouGet": "สิ่งที่คุณจะได้รับ", + "signatureSession": "เซสชันลายเซ็น", + "errorCountNoCode": "จำนวนข้อผิดพลาดที่ไม่มีรหัส", + "testing": "กำลังทดสอบ", + "providersCommaSeparated": "ผู้ให้บริการที่คั่นด้วยจุลภาค", + "exportDatabase": "ส่งออกฐานข้อมูล", + "hitRate": "อัตราการพบข้อมูลในแคช", + "completionsLegacy": "Completions แบบเดิม", + "removeModel": "ลบโมเดล", + "timeRangeDay": "ช่วงเวลา: วัน", + "cloudRequestFailed": "คำขอไปยังคลาวด์ล้มเหลว", + "updatedAt": "อัปเดตเมื่อ", + "monitoredProvidersHint": "คำแนะนำเกี่ยวกับผู้ให้บริการที่ตรวจสอบ", + "connectionSuccessful": "เชื่อมต่อสำเร็จ", + "latencyP50": "เวลาแฝง P50", + "logsDeleted": "ลบล็อกแล้ว", + "chatTester": "เครื่องมือทดสอบแชต", + "safeSearchOff": "ปิดการค้นหาปลอดภัย", + "nameHint": "คำแนะนำเกี่ยวกับชื่อ", + "debugToggle": "สวิตช์ดีบัก", + "embedding": "การฝังเวกเตอร์", + "issuesLabel": "ป้ายกำกับปัญหา", + "optionAny": "ตัวเลือกใดก็ได้", + "maxNestingDepth": "ความลึกสูงสุดของการซ้อน", + "rerank": "จัดอันดับใหม่", + "checking": "กำลังตรวจสอบ", + "getStarted": "เริ่มต้นใช้งาน", + "restoreSuccess": "กู้คืนสำเร็จ", + "issuesDetected": "ตรวจพบปัญหา", + "signatureCache": "แคชลายเซ็น", + "modelLockouts": "การระงับโมเดล", + "usingCloudProxy": "กำลังใช้พร็อกซีคลาวด์", + "loadingHealth": "กำลังโหลดสถานะระบบ", + "providerOverrides": "การตั้งค่าแทนที่ของผู้ให้บริการ", + "audioTranscriptionDesc": "คำอธิบายการถอดเสียงจากไฟล์เสียง", + "learnedFromHeaders": "เรียนรู้จากส่วนหัว", + "totalRequests": "คำขอทั้งหมด", + "cloudUnstableNote": "หมายเหตุเกี่ยวกับความไม่เสถียรของคลาวด์", "gamificationAdmin": "ผู้ดูแลระบบ Gamification", "monitorAnomaliesAndHealth": "ตรวจสอบความผิดปกติและสุขภาพของระบบ", "flaggedAnomalies": "ความผิดปกติที่ถูกตั้งค่าสถานะ", @@ -704,7 +704,7 @@ "apiKey": "คีย์ API", "xpLastHour": "ประสบการณ์ (1ชม.)", "zScore": "Z-คะแนน", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "น่าสงสัย", "tokensCommunityServers": "เซิร์ฟเวอร์ชุมชน", "tokensServerNamePlaceholder": "ชื่อเซิร์ฟเวอร์", "tokensApiKeyPlaceholder": "คีย์เอพีไอ", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "กำลังโหลดเพิ่มเติม...", "recommended": "แนะนำ", "understand": "ฉันเข้าใจแล้ว", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "การประมวลผลแบบกลุ่ม", + "batchConceptSubtitle": "ประมวลผลคำขอหลายพันรายการแบบอะซิงโครนัสด้วยค่าใช้จ่ายประมาณ 50% (ภายในกรอบเวลา 24 ชม.) เหมาะสำหรับการประเมินผล การจำแนกประเภท และการฝังเวกเตอร์", + "batchConceptHowItWorks": "วิธีการทำงาน", + "batchConceptBenefit50pct": "ส่วนลด 50% สำหรับโทเค็นอินพุตและเอาต์พุต", + "batchConceptAsync24h": "ทำงานแบบอะซิงโครนัส โดยดำเนินการเสร็จสิ้นภายใน 24 ชม.", + "batchConceptUseCases": "เหมาะที่สุดสำหรับการจำแนกประเภทจำนวนมาก การประเมินผล และการฝังเวกเตอร์", + "batchHeaderSubtitle": "เรียกใช้คำขอจำนวนมากเป็นงานเดียว", + "batchStep1": "1 · อัปโหลด JSONL", + "batchStep1Desc": "เพิ่มคำขอ", + "batchStep2": "2 · สร้างแบตช์", + "batchStep2Desc": "เรียกใช้งาน", + "batchStep3": "3 · รับผลลัพธ์", + "batchStep3Desc": "ดาวน์โหลดผลลัพธ์", + "filesConceptTitle": "ไฟล์แบตช์", + "filesConceptSubtitle": "ไฟล์ JSONL ที่แบตช์ใช้: คำขออินพุต ผลลัพธ์ และข้อผิดพลาด", + "filesConceptInput": "อินพุต — JSONL ของคุณ โดยมีหนึ่งคำขอต่อบรรทัด", + "filesConceptOutput": "เอาต์พุต — ผลลัพธ์จากคำขอที่เสร็จสมบูรณ์", + "filesConceptError": "ข้อผิดพลาด — คำขอที่ล้มเหลว", + "filesConceptRetention": "ระยะเวลาเก็บรักษา: ค่าเริ่มต้น 30 วัน (29 วันสำหรับ Anthropic)", + "wizardTitle": "แบตช์ใหม่", + "wizardClose": "ปิด", + "wizardNext": "ถัดไป", + "wizardBack": "ย้อนกลับ", + "wizardCancel": "ยกเลิก", + "wizardCreate": "สร้างแบตช์", + "wizardCreating": "กำลังสร้าง…", + "wizardStep1Destination": "ปลายทาง", + "wizardStep2Input": "อินพุต", + "wizardStep3Validate": "ตรวจสอบความถูกต้อง", + "wizardStep4Cost": "ค่าใช้จ่ายและสร้าง", + "wizardProviderLabel": "ผู้ให้บริการ", + "wizardEndpointLabel": "เอนด์พอยต์", + "wizardModelLabel": "โมเดล", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (เราจะแปลงให้)", + "wizardDropOrPick": "วางไฟล์หรือคลิกเพื่อเลือก", + "wizardCsvMappingTitle": "จับคู่คอลัมน์ CSV → ฟิลด์คำขอ", + "wizardCsvMappingAddField": "เพิ่มฟิลด์", "wizardCsvNoColumns": "ตรวจไม่พบคอลัมน์ในส่วนหัว CSV.", "wizardCsvIgnoreColumn": "— ละเว้น —", "wizardCsvCustomIdMapped": "แมป custom_id แล้ว", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "แยกวิเคราะห์แล้ว {count} แถว", "wizardCsvRowsSkipped": "ข้ามแล้ว {count} แถว", "wizardCsvRowError": "แถว {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "ทุกบรรทัดถูกต้อง", "wizardValidating": "กำลังตรวจสอบ…", "wizardValidationParseFailed": "การตรวจสอบล้มเหลว — ไม่สามารถแยกวิเคราะห์เนื้อหาได้", "wizardValidationSummary": "{lines} บรรทัด · {ids} custom_ids ที่ไม่ซ้ำกัน", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "ตรวจพบ custom_ids ที่ซ้ำกัน:", "wizardValidationFirstErrors": "ข้อผิดพลาด ({count} รายการแรก):", "wizardValidationLine": "บรรทัด {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "ข้อผิดพลาดในการตรวจสอบ", + "wizardValidationPreview": "ตัวอย่าง (5 คำขอแรก)", + "wizardValidationSamplingNote": "ไฟล์มีขนาดใหญ่ — ตรวจสอบความถูกต้องด้วยการสุ่มตัวอย่าง (1,000 บรรทัดแรก + 100 บรรทัดสุดท้าย) การตรวจสอบแบบเต็มจะทำงานบนเซิร์ฟเวอร์", + "wizardCostSync": "ค่าใช้จ่ายแบบซิงค์", + "wizardCostBatch": "ค่าใช้จ่ายแบบแบตช์ (-50%)", + "wizardCostSavings": "ประหยัด", + "wizardCostEstimatedNotice": "ค่าใช้จ่ายโดยประมาณ — ยอดเรียกเก็บเงินจริงอาจแตกต่างกัน", + "wizardErrorUpload": "อัปโหลดไฟล์ไม่สำเร็จ โปรดลองอีกครั้ง", + "wizardErrorCreate": "สร้างแบตช์ไม่สำเร็จ โปรดลองอีกครั้ง", + "wizardEmptyProviders": "เชื่อมต่อผู้ให้บริการที่รองรับแบตช์ (OpenAI, Anthropic หรือ Gemini) เพื่อสร้างแบตช์", + "uploadModalTitle": "อัปโหลดไฟล์แบตช์", + "uploadModalDropOrPick": "วางไฟล์ .jsonl หรือคลิกเพื่อเลือกไฟล์", + "uploadModalUpload": "อัปโหลด", + "uploadModalCancel": "ยกเลิก", + "uploadModalError": "อัปโหลดไม่สำเร็จ โปรดลองอีกครั้ง", + "uploadModalSuccess": "อัปโหลดแล้ว", + "uploadModalSizeLimit": "สูงสุด 512 MB", + "batchListNewButton": "แบตช์ใหม่", + "batchListAutoRefresh": "รีเฟรชอัตโนมัติทุก 30 วินาที", + "batchListCostColumn": "ค่าใช้จ่าย", + "batchActionCancel": "ยกเลิก", + "batchActionDownloadOutput": "ดาวน์โหลดผลลัพธ์", + "batchActionDownloadErrors": "ดาวน์โหลดข้อผิดพลาด", + "batchActionRetry": "ลองรายการที่ล้มเหลวอีกครั้ง", + "batchActionRetryConfirm": "ลองคำขอที่ล้มเหลว {n} รายการอีกครั้งหรือไม่ ค่าใช้จ่ายสุดท้ายขึ้นอยู่กับจำนวนโทเค็นที่ใช้จริง", + "expirationBadgeCritical": "วิกฤต", + "expirationBadgeWarning": "เร็ว ๆ นี้", + "expirationBadgeNormal": "รอดำเนินการ", + "expirationBadgeExpired": "หมดอายุแล้ว", + "filesListUploadButton": "อัปโหลด", + "filesListUsedByColumn": "ใช้โดย", + "filesListUsedByNone": "ไม่มี", + "filesListUsedByRoleInput": "อินพุต", + "filesListUsedByRoleOutput": "เอาต์พุต", + "filesListUsedByRoleError": "ข้อผิดพลาด", + "filesListSizeColumn": "ขนาด", + "batchListProgressPartial": "(บางส่วน)", + "batchListProviderColumn": "ผู้ให้บริการ", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", - "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListProviderOther": "อื่น ๆ", + "batchListTitle": "แบตช์", + "batchListCount": "{count} แบตช์", + "batchListRemovingCompleted": "กำลังนำออก…", + "batchListRemoveCompleted": "นำออกเสร็จแล้ว", + "batchListTableStatus": "สถานะ", + "batchListTableId": "รหัส", + "batchListTableEndpoint": "ปลายทาง", + "batchListTableModel": "โมเดล", + "batchListTableProgress": "ความคืบหน้า", + "batchListTableCreated": "สร้างเมื่อ", + "batchListTableExpires": "หมดอายุ", + "batchListLoading": "กำลังโหลด…", + "batchListEmpty": "ไม่พบแบตช์", + "batchListValidating": "กำลังตรวจสอบความถูกต้อง…", + "batchStatusAll": "ทุกสถานะ", + "batchStatusInProgress": "กำลังดำเนินการ", + "batchStatusValidating": "กำลังตรวจสอบความถูกต้อง", + "batchStatusFinalizing": "กำลังดำเนินการขั้นสุดท้าย", + "batchStatusCompleted": "เสร็จสมบูรณ์", + "batchStatusFailed": "ล้มเหลว", + "batchStatusCancelled": "ยกเลิกแล้ว", + "batchStatusCancelling": "กำลังยกเลิก", + "batchStatusExpired": "หมดอายุแล้ว", + "batchStatusCompletedWithFailures": "เสร็จสมบูรณ์โดยมีบางรายการล้มเหลว", + "batchStatusInProgressWithFailures": "กำลังดำเนินการ (มีบางรายการล้มเหลว)", + "batchStatusFinalizingWithFailures": "กำลังดำเนินการขั้นสุดท้าย (มีบางรายการล้มเหลว)", + "batchStatusCancelledWithFailures": "ยกเลิกแล้วโดยมีบางรายการล้มเหลว", + "batchStatusExpiredWithFailures": "หมดอายุแล้ว (ดำเนินการบางส่วน)", + "wizardCostEstimating": "กำลังประเมินค่าใช้จ่าย…", + "wizardCostRequests": "คำขอ", + "wizardCostInputTok": "โทเค็นอินพุต", + "wizardCostOutputTok": "โทเค็นเอาต์พุต", + "wizardCostWindow": "กรอบเวลา", + "wizardDestinationSelectProvider": "เลือกผู้ให้บริการ…", + "wizardDestinationSelectModel": "เลือกโมเดล…", + "wizardDestinationConnectProvider": "เชื่อมต่อผู้ให้บริการ", + "batchListBatchCreated": "สร้างแบตช์ {id} แล้ว — กำลังรีเฟรชรายการ…", + "batchListBatchCreatedDismiss": "ปิด", + "batchListRefreshing": "กำลังรีเฟรช…", + "batchListRefresh": "รีเฟรช", + "uploadFileModalRemove": "นำออก", + "uploadFileModalUploading": "กำลังอัปโหลด…", + "wizardInputReading": "กำลังอ่านไฟล์…", + "wizardInputReady": "พร้อม", + "wizardInputLargeFileLabel": "ไฟล์ขนาดใหญ่ — กำลังตรวจสอบความถูกต้องด้วยการสุ่มตัวอย่าง", + "wizardInputCsvJsonlReady": "สร้าง JSONL แล้ว — พร้อมตรวจสอบความถูกต้อง", + "wizardInputLargeFileWarning": "ตรวจพบไฟล์ขนาดใหญ่ — การตรวจสอบความถูกต้องจะใช้การสุ่มตัวอย่าง (5 MB แรก + 100 KB สุดท้าย) การตรวจสอบแบบเต็มจะดำเนินการฝั่งเซิร์ฟเวอร์", + "wizardCostWindow24h": "กรอบเวลาดำเนินการให้เสร็จภายใน 24 ชม.", + "wizardValidationFieldsOk": "ฟิลด์ที่จำเป็นถูกต้อง", + "filesListDelete": "ลบ", + "filesListDownload": "ดาวน์โหลด", + "batchDetailActionCancel": "ยกเลิกชุดงาน", + "batchDetailActionRetry": "ลองส่งคำขอที่ล้มเหลวอีกครั้ง", + "batchDetailCancelling": "กำลังยกเลิก…", + "batchDetailRetrying": "กำลังเตรียมลองใหม่…", + "batchDetailCancelConfirm": "ยกเลิกชุดงานนี้หรือไม่? คำขอที่กำลังดำเนินการจะหยุดลง", + "batchActionCancelError": "ยกเลิกชุดงานไม่สำเร็จ โปรดลองอีกครั้ง", + "batchActionRetryError": "ลองส่งคำขอที่ล้มเหลวอีกครั้งไม่สำเร็จ โปรดลองอีกครั้ง", + "batchConceptRetentionNote": "ไฟล์ผลลัพธ์และไฟล์ข้อผิดพลาดจะถูกเก็บไว้เป็นเวลา 30 วัน (Anthropic: 29 วัน)", "batchFilesSizeColumn": "ขนาด", "toggleNoAuthProvider": "สลับผู้ให้บริการที่ไม่มีการรับรองตัวตน", "loadingModels": "กำลังโหลดโมเดล…", @@ -988,14 +988,14 @@ "disabled": "ปิดใช้งาน", "featureFlagOmnirouteEmergencyFallbackDescription": "กำหนดเส้นทางคำขอที่งบประมาณหมดไปยังผู้ให้บริการ/โมเดลสำรองฟรีในกรณีฉุกเฉิน", "featureFlagArenaEloSyncEnabledDescription": "เปิดใช้งานการซิงค์ ELO ของลีดเดอร์บอร์ด Arena AI เป็นระยะสำหรับการจัดอันดับความฉลาดของโมเดล", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "สร้างและแทรกข้อมูลสรุปการสนทนาเมื่อการกำหนดเส้นทางแบบคอมโบสลับโมเดล ปิดใช้งานเพื่อให้การสลับโมเดลทำงานแยกจากกัน และป้องกันคำขอส่งต่องานเบื้องหลังสำหรับคอมโบทั้งหมดทั้งที่มีอยู่และที่จะสร้างในอนาคต", "featureFlagExposeCcDiscoveryAliasesDescription": "โฆษณา claude/<provider>/<model> mirror ids บน /v1/models เพื่อให้รายการการค้นหาโมเดลของ Claude Code แสดงโมเดลที่ไม่ใช่ Claude เตือน: จะทำให้มีรายการในแคตตาล็อกซ้ำสำหรับลูกค้าทุกคนเมื่อเปิดใช้งานทั่วโลก.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "สวิตช์หลักสำหรับนามแฝงเกตเวย์ no-think/<provider>/<model> เมื่อเปิด (ค่าเริ่มต้น): /v1/models จะแสดงตัวแปรแบบไม่ใช้การคิดสำหรับ Claude ทุกรุ่นที่รองรับการคิดและเข้าเกณฑ์ และรหัส no-think/ ที่ส่งมากับคำขอจะถูกแปลงกลับเป็นโมเดลจริงโดยระงับการให้เหตุผล เมื่อปิด: จะไม่มีการแสดงตัวแปรใด ๆ และรหัส no-think/ จะถูกปฏิบัติเช่นเดียวกับรหัสโมเดลอื่นที่ไม่รู้จัก ทั้งนี้ การเลือกเข้าร่วมหรือไม่เข้าร่วมด้วย ModelSpec.noThinkingAlias สำหรับแต่ละโมเดลยังคงมีผลขณะเปิดใช้งานตัวเลือกนี้", "featureFlagChatVirtualLanesEnabledDescription": "เปิดใช้เลนรับเข้าเสมือนแบบปรับตัวต่อเทนแนนต์สำหรับการส่งไปยังผู้ให้บริการ (#9654): การพุ่งสูงของเทนแนนต์หนึ่งจะไม่ทำให้อีกเทนแนนต์ได้รับ 503 อีกต่อไป ตัวแปรสภาพแวดล้อม OMNIROUTE_CHAT_VIRTUAL_LANES มีผลเหนือการตั้งค่าแดชบอร์ดนี้ การเปลี่ยนแปลงมีผลเมื่อรีสตาร์ทเซิร์ฟเวอร์", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "หน้าผู้ให้บริการในแดชบอร์ด: แสดงป้าย ฟรี เฉพาะสัญญาณที่ผู้ให้บริการรองรับเท่านั้น — เลิกใช้การอนุมานจากชื่อที่แสดง ฟิลด์ฟรีที่ไม่ใช่ค่าบูลีน และคำต่อท้าย :free สำหรับผู้ให้บริการที่ลงทะเบียนแต่ไม่มีระดับใช้งานฟรีที่ระบุไว้ในเอกสาร เมื่อปิด จะยังคงใช้กฎการแสดงป้ายแบบเดิม", + "featureFlagProxySkipRecentlyFailedDescription": "พูลพร็อกซีและการหมุนเวียนต่อบัญชีของ opencode จะหยุดนำพร็อกซีที่เพิ่งล้มเหลว (ปฏิเสธการตรวจสอบ TCP หรือได้รับ 429 ผ่านพร็อกซีนั้น) กลับมาให้บริการซ้ำเป็นระยะเวลาต่อโปรเซส ซึ่งจะเพิ่มเป็นสองเท่าทุกครั้งที่เกิดซ้ำจนถึงขีดจำกัด โดยจะไม่มีการบันทึกสถานะพร็อกซี และหากตัวเลือกทั้งหมดถูกพักไว้ การเลือกจะไม่เปลี่ยนแปลง ปิดไว้โดยค่าเริ่มต้น: ลำดับการเลือกจะเป็นการหมุนเวียนแบบปกติทุกประการ", + "featureFlagProxyPoolEgressObservationDescription": "แสดงใต้พูลพร็อกซีในแดชบอร์ดว่ามี IP ขาออกที่ตรวจพบกี่รายการซึ่งให้บริการสมาชิกของพูลในช่วง 24 h ที่ผ่านมา มีการเชื่อมต่อผ่าน IP เหล่านั้นกี่ครั้ง และจำนวนสูงสุดที่พบหลัง IP เดียว ข้อมูลนี้เป็นแบบอ่านอย่างเดียว คำนวณจากบันทึกพร็อกซี และไม่เคยนำไปใช้กำหนดเส้นทาง ปิดไว้โดยค่าเริ่มต้น: ตัวแก้ไขพูลจะไม่เปลี่ยนแปลง และเส้นทางการสังเกตการณ์จะตอบกลับเป็น null", + "featureFlagProxyHealthBlockedResetsStreakDescription": "ในการกวาดตรวจสุขภาพพร็อกซี ให้การตรวจสอบที่ถูกเป้าหมายปฏิเสธ (401/403/429: พร็อกซีส่งต่อสำเร็จ แต่ปลายทางปฏิเสธ IP ขาออกนี้) รีเซ็ตจำนวนความล้มเหลวต่อเนื่องของพร็อกซีได้เช่นเดียวกับการตรวจสอบที่ได้รับการให้บริการ ปิดไว้โดยค่าเริ่มต้น: การปฏิเสธจะยังคงเป็นกลางและคงจำนวนความล้มเหลวต่อเนื่องไว้ 5xx ยังคงถือว่าไม่สามารถสรุปผลได้ในทั้งสองกรณี และการปฏิเสธจะไม่ลบ ปิดใช้งาน หรือเปิดใช้งานพร็อกซีอีกครั้ง", "sidebar": { "home": "บ้าน", "dashboard": "แดชบอร์ด", @@ -1011,12 +1011,12 @@ "media": "สื่อ", "settings": "การตั้งค่า", "translator": "นักแปล", - "playground": "Playground", - "searchTools": "Search Tools", + "playground": "พื้นที่ทดลอง", + "searchTools": "ค้นหาเครื่องมือ", "agents": "เอเจนต์", "cloudAgents": "ตัวแทนคลาวด์", - "memory": "Memory", - "skills": "Skills", + "memory": "หน่วยความจำ", + "skills": "ทักษะ", "omniSkills": "OmniSkills", "agentSkills": "ทักษะตัวแทน", "chaosConfig": "โหมด Chaos", @@ -1063,56 +1063,56 @@ "themeBlue": "สีฟ้า", "themeRed": "สีแดง", "themeGreen": "สีเขียว", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "themeViolet": "ม่วง", + "themeOrange": "ส้ม", + "themeCyan": "ฟ้าอมเขียว", "cliToolsShort": "เครื่องมือ", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "งานแบบชุด", + "themeSystem": "ระบบธีม", + "whitelabelingDesc": "คำอธิบายการปรับแบรนด์", + "switchThemes": "สลับธีม", + "themeAccentDesc": "คำอธิบายสีเน้นของธีม", + "uploadFavicon": "อัปโหลด Favicon", + "themeDark": "ธีมมืด", + "customLogoDesc": "คำอธิบายโลโก้แบบกำหนดเอง", + "sidebarVisibilityToggle": "ปุ่มสลับการแสดงแถบด้านข้าง", + "themeAccent": "สีเน้นของธีม", + "resetFavicon": "รีเซ็ต Favicon", + "whitelabeling": "การปรับแบรนด์", + "darkMode": "โหมดมืด", + "uploadLogo": "อัปโหลดโลโก้", + "themeLight": "ธีมสว่าง", + "appName": "ชื่อแอป", + "appNameDesc": "คำอธิบายชื่อแอป", + "resetLogo": "รีเซ็ตโลโก้", + "customFavicon": "Favicon แบบกำหนดเอง", + "hideHealthLogs": "ซ่อนบันทึกสถานะระบบ", + "customLogo": "โลโก้แบบกำหนดเอง", + "appearance": "รูปลักษณ์", + "themeSelectionAria": "ป้ายกำกับ ARIA สำหรับการเลือกธีม", + "themeCreate": "สร้างธีม", + "customFaviconDesc": "คำอธิบายไอคอนเว็บไซต์แบบกำหนดเอง", + "logoPreview": "ตัวอย่างโลโก้", + "themeCustom": "ธีมแบบกำหนดเอง", + "hideHealthLogsDesc": "คำอธิบายการซ่อนบันทึกสถานะระบบ", + "faviconPreview": "ตัวอย่างไอคอนเว็บไซต์", + "changelog": "บันทึกการเปลี่ยนแปลง", + "contextSection": "บริบทและแคช", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "ชุดเอนจิน", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "สูงสุด", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "การตั้งค่าการบีบอัด", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "สตูดิโอชุดผสม", "combosLiveSubtitle": "Cascade การกำหนดเส้นทางแบบสด", "compressionStudio": "Compression Studio", "compressionExclusions": "การยกเว้น", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Cascade ของเอนจินแบบสด", "compressionExclusionsSubtitle": "การข้ามแบบจำลอง/จุดสิ้นสุด", "chaosConfigSubtitle": "การประมวลผลแบบขนานหลายโมเดล", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "การกำหนดเส้นทาง", + "protocolsSection": "โปรโตคอล", + "agentsAiSection": "เอเจนต์และ AI", + "cacheContextSection": "แคชและบริบท", + "analyticsSection": "การวิเคราะห์", + "costsSection": "ค่าใช้จ่าย", + "monitoringSection": "การเฝ้าติดตาม", + "auditSecuritySection": "การตรวจสอบและความปลอดภัย", + "devtoolsSection": "เครื่องมือสำหรับนักพัฒนา", + "configurationSection": "การกำหนดค่า", + "aiFeaturesSection": "ฟีเจอร์ AI", "mcp": "MCP", "a2a": "A2A", "plugins": "ปลั๊กอิน", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "ปลายทาง API", + "batchFiles": "ไฟล์", + "analyticsEvals": "การประเมินผล", + "analyticsSearch": "ค้นหา", + "analyticsUtilization": "การใช้งาน", + "analyticsComboHealth": "สถานะของคอมโบ", + "analyticsCompression": "การบีบอัด", + "costsBudget": "งบประมาณ", "costsFreeTiers": "งบประมาณระดับฟรี", "costsFreeTiersSubtitle": "โควตาโทเค็นฟรีรายเดือน", "freeProviderRankings": "การจัดอันดับผู้ให้บริการฟรี", "freeProviderRankingsSubtitle": "ผู้ให้บริการฟรีที่ดีที่สุดจัดอันดับตามคะแนน ELO ของโมเดล", "radar": "แคตตาล็อกเรดาร์", "radarSubtitle": "แคตตาล็อกโมเดลฟรีที่เสริมด้วยข้อมูลจากชุมชน", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "การแชร์โควตา", + "costsPricing": "การกำหนดราคา", + "logsProxy": "บันทึกของพร็อกซี", + "logsConsole": "คอนโซล", + "logsActivity": "กิจกรรม", + "auditMcp": "การตรวจสอบ MCP", "auditA2a": "การตรวจสอบ A2A", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "รูปลักษณ์", + "settingsAi": "การตั้งค่า AI", + "settingsSecurity": "ความปลอดภัย", "settingsAccessTokens": "โทเค็นการเข้าถึง", "settingsFeatureFlags": "คุณลักษณะธง", "settingsCache": "แคช", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "การให้สิทธิ์", + "settingsRouting": "การกำหนดเส้นทาง", + "settingsResilience": "ความยืดหยุ่น", "modelLockout": "การล็อกโมเดล", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "ขั้นสูง", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "โควตาของผู้ให้บริการ", + "providerQuota": "โควตาของผู้ให้บริการ", + "runtime": "รันไทม์", + "consoleLogs": "บันทึกของคอนโซล", + "logsTimeline": "ไทม์ไลน์", "logsTimelineSubtitle": "ไทม์ไลน์คำขอภาพ", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "บทสนทนา", + "conversationsSubtitle": "บทสนทนาแบบเอเจนต์หลายรอบ", + "globalRouting": "การกำหนดเส้นทางส่วนกลาง", + "mitmProxy": "พร็อกซี MITM", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "ฟีเจอร์แบบเอเจนต์", + "otherFeaturesSection": "ฟีเจอร์อื่น ๆ", + "compressionContextGroup": "บริบทการบีบอัด", + "gamificationGroup": "การใช้กลไกเกม", + "toolsGroup": "เครื่องมือ", + "integrationsGroup": "การผสานการทำงาน", + "proxyGroup": "พร็อกซี", + "costsParametersGroup": "พารามิเตอร์ค่าใช้จ่าย", + "auditGroup": "การตรวจสอบ", + "batchGroup": "แบตช์", + "homeSubtitle": "ภาพรวมแดชบอร์ด", + "providersSubtitle": "จัดการผู้ให้บริการ AI", + "quotaTrackerSubtitle": "ติดตามขีดจำกัดการใช้งาน", + "providerQuotaSubtitle": "ติดตามขีดจำกัดการใช้งานของผู้ให้บริการ", + "runtimeSubtitle": "ความยืดหยุ่นและเซสชันแบบเรียลไทม์", + "contextCombosSubtitle": "รวมเอนจินการบีบอัด", + "cliToolsSubtitle": "กำหนดค่ารันไทม์ CLI", + "agentsSubtitle": "จัดการเอเจนต์ภายในเครื่อง", + "cloudAgentsSubtitle": "จัดการเอเจนต์บนคลาวด์", + "apiEndpointsSubtitle": "เปิดใช้งานเอนด์พอยต์แบบกำหนดเอง", + "proxySubtitle": "การตั้งค่าพร็อกซี HTTP", + "mitmProxySubtitle": "การสกัดกั้นแบบ MITM", + "oneProxySubtitle": "เกตเวย์พร็อกซีสาธารณะ", + "leaderboard": "กระดานผู้นำ", + "profile": "โปรไฟล์", + "tokens": "โทเค็น", + "gamificationAdmin": "ผู้ดูแลระบบเกมมิฟิเคชัน", + "leaderboardSubtitle": "อันดับและความสำเร็จ", + "profileSubtitle": "บัญชีและการตั้งค่า", + "tokensSubtitle": "การใช้โทเค็นและงบประมาณ", + "gamificationAdminSubtitle": "การตรวจสอบความผิดปกติและการป้องกันการโกง", + "usageSubtitle": "สถิติทราฟฟิกและการใช้งาน", + "analyticsComboHealthSubtitle": "ความน่าเชื่อถือของเป้าหมายแบบคอมโบ", + "analyticsUtilizationSubtitle": "การใช้งานผู้ให้บริการ", + "costsSubtitle": "รายละเอียดค่าใช้จ่าย", + "cacheSubtitle": "อัตราการใช้แคชสำเร็จ", + "analyticsCompressionSubtitle": "สถิติการประหยัดโทเค็น", + "analyticsSearchSubtitle": "การวิเคราะห์เครื่องมือค้นหา", + "analyticsEvalsSubtitle": "ผลลัพธ์ชุดการประเมิน", "providerStats": "สถิติผู้ให้บริการ", "providerStatsSubtitle": "เมตริกเวลาแฝงและประสิทธิภาพ", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "บันทึกแอปพลิเคชัน", + "logsProxySubtitle": "บันทึกทราฟฟิกพร็อกซี", + "consoleLogsSubtitle": "เอาต์พุตคอนโซล", + "logsActivitySubtitle": "บันทึกกิจกรรมของผู้ใช้", + "healthSubtitle": "การตรวจสอบสถานะระบบ", + "costsPricingSubtitle": "กฎการกำหนดราคาต่อโมเดล", + "costsBudgetSubtitle": "ขีดจำกัดงบประมาณ", + "costsQuotaShareSubtitle": "แชร์โควตาของผู้ให้บริการระหว่างคีย์", + "auditLogSubtitle": "การตรวจสอบการให้สิทธิ์", + "auditMcpSubtitle": "การตรวจสอบเซิร์ฟเวอร์ MCP", + "auditA2aSubtitle": "การตรวจสอบโปรโตคอล A2A", + "translatorSubtitle": "การแปลงรูปแบบ", + "playgroundSubtitle": "ทดสอบพรอมต์แบบสด", + "searchToolsSubtitle": "รีจิสทรีเครื่องมือค้นหา", + "memorySubtitle": "หน่วยความจำถาวรของเอเจนต์", + "omniSkillsSubtitle": "รีจิสทรีสกิลของ Sandbox", + "agentSkillsSubtitle": "รีจิสทรีสกิลของ A2A", + "mcpSubtitle": "การควบคุมเซิร์ฟเวอร์ MCP", + "a2aSubtitle": "เซิร์ฟเวอร์โปรโตคอล A2A", "pluginsSubtitle": "มาร์เก็ตเพลสปลั๊กอินและการติดตั้ง", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "ไฟล์สื่อที่แคชไว้", + "batchFilesSubtitle": "ไฟล์อินพุต/เอาต์พุตแบบแบตช์", + "settingsSubtitle": "การตั้งค่าทั้งหมด", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "ธีมและเค้าโครง", + "settingsAiSubtitle": "ค่าเริ่มต้นของพฤติกรรม AI", + "globalRoutingSubtitle": "กฎการกำหนดเส้นทางส่วนกลาง", + "settingsResilienceSubtitle": "การลองใหม่และเซอร์กิตเบรกเกอร์", + "settingsAdvancedSubtitle": "ตัวเลือกสำหรับผู้ใช้ขั้นสูง", + "settingsSecuritySubtitle": "การยืนยันตัวตนและการเข้ารหัส", "settingsAccessTokensSubtitle": "โทเค็น CLI แบบกำหนดขอบเขตสำหรับโหมดระยะไกล", "settingsFeatureFlagsSubtitle": "สลับความสามารถของระบบ", "settingsCacheSubtitle": "แคตตาล็อกโมเดลและการแคชการตอบสนอง", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "แถบด้านข้าง", + "settingsSidebarSubtitle": "ปรับแต่งเค้าโครงแถบด้านข้าง", "settingsAuthzSubtitle": "คลังเส้นทางและนโยบายบายพาส", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "เอกสารประกอบ", + "issuesSubtitle": "รายงานข้อบกพร่อง", + "changelogSubtitle": "บันทึกประจำรุ่น", "costsQuotaPlans": "แผนและโควตา", "costsQuotaPlansSubtitle": "กำหนดค่าแผนตามผู้ให้บริการ", "activity": "กิจกรรม", @@ -1278,8 +1278,8 @@ "agentBridge": "Agent Bridge", "agentBridgeSubtitle": "ดักจับทราฟฟิกของ IDE agent", "trafficInspector": "ตัวตรวจสอบทราฟฟิก", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "ตรวจสอบทราฟฟิกคำขอและการตอบกลับจากแอปของคุณ", + "trafficInspectorPurpose": "ดูอย่างละเอียดว่าแอปพลิเคชันของคุณส่งอะไรไปยังและได้รับอะไรจากผู้ให้บริการ AI ใช้งานได้กับไคลเอนต์ที่เข้ากันได้กับ OpenAI ทุกรายการ", "cliCode": "โค้ด CLI", "cliCodeSubtitle": "เครื่องมือโค้ดที่ชี้ไปยัง OmniRoute", "cliAgents": "เอเจนต์ CLI", @@ -1345,7 +1345,7 @@ "refresh": "รีเฟรช", "loading": "กำลังโหลดเว็บฮุค...", "never": "ไม่เคย", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {ไม่มีความล้มเหลว} one {ล้มเหลว # ครั้ง} other {ล้มเหลว # ครั้ง}}", "testWebhook": "ส่งแบบทดสอบ", "testSuccess": "ส่งเว็บฮุคทดสอบเรียบร้อยแล้ว", "testFailed": "การทดสอบเว็บฮุคล้มเหลว", @@ -1429,13 +1429,13 @@ "secretKeyHint": "ใช้สำหรับลงลายมือชื่อในส่วนหัวของเพย์โหลดเพื่อการตรวจสอบสิทธิ์" }, "discord": { - "webhookUrl": "Discord Webhook URL", + "webhookUrl": "URL ของเว็บฮุก Discord", "webhookUrlPlaceholder": "https://discord.com/api/webhooks/...", "webhookUrlHint": "URL ของ Webhook ที่คัดลอกมาจากตั้งค่าการเชื่อมต่อช่องทาง Discord ของคุณ", "tutorial": "วิธีสร้าง Discord webhook:" }, "slack": { - "webhookUrl": "Slack Webhook URL", + "webhookUrl": "URL ของเว็บฮุก Slack", "webhookUrlPlaceholder": "https://hooks.slack.com/services/...", "webhookUrlHint": "URL ของ Webhook ที่คัดลอกมาจากตั้งค่าการเชื่อมต่อ Slack Incoming Webhooks ของคุณ", "tutorial": "วิธีสร้าง Slack webhook:" @@ -1564,12 +1564,12 @@ }, "themesPage": { "title": "ธีมส์", - "description": "Choose a preset theme or create your own with a single color", + "description": "เลือกธีมที่กำหนดไว้ล่วงหน้าหรือสร้างธีมของคุณเองด้วยสีเดียว", "presetColors": "สียอดนิยม", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", + "customTheme": "ธีมที่กำหนดเอง", + "customThemeDesc": "คลิกสร้างธีมแล้วเลือกหนึ่งสี", "createTheme": "สร้างธีม", - "activePreset": "Active theme" + "activePreset": "ธีมที่ใช้งานอยู่" }, "header": { "logout": "ออกจากระบบ", @@ -1591,63 +1591,63 @@ "cliToolsDescription": "กำหนดค่าเครื่องมือ CLI", "home": "บ้าน", "homeDescription": "ยินดีต้อนรับสู่ OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "endpoint": "เอนด์พอยต์", + "endpointDescription": "จัดการปลายทางพร็อกซี, MCP, A2A และปลายทาง API", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "การจัดการเซิร์ฟเวอร์และเครื่องมือของ Model Context Protocol", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", + "a2aDescription": "งานและการสังเกตการณ์ของโปรโตคอล Agent-to-Agent", "settings": "การตั้งค่า", "settingsDescription": "จัดการการตั้งค่าของคุณ", "openaiCompatible": "รองรับ OpenAI", "anthropicCompatible": "เข้ากันได้กับมานุษยวิทยา", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", + "media": "สื่อ", + "mediaDescription": "สร้างรูปภาพ วิดีโอ และเพลง", "themes": "ธีมส์", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "themesDescription": "เลือกธีมสีสำหรับแผงแดชบอร์ดทั้งหมด", + "costsDescription": "ติดตามค่าใช้จ่าย วิเคราะห์แนวโน้ม และจัดการงบประมาณ AI ของคุณในทุกผู้ให้บริการ", + "cacheDescription": "ตรวจสอบประสิทธิภาพแคชพรอมต์ของผู้ให้บริการและการนำการตอบกลับเชิงความหมายในระบบกลับมาใช้ใหม่", + "limitsDescription": "กำหนดขีดจำกัดอัตราและโควตาต่อคีย์ API และผู้ให้บริการ", + "runtimeDescription": "การสังเกตการณ์รันไทม์แบบสด — เซอร์กิตเบรกเกอร์ ระยะพัก การล็อกโมเดล เซสชัน และการแจ้งเตือนโควตา", + "apiManagerDescription": "จัดการคีย์ API และการควบคุมการเข้าถึงสำหรับอินสแตนซ์ OmniRoute ของคุณ", + "batchDescription": "ประมวลผลคำขอปริมาณมากแบบอะซิงโครนัสด้วยการเรียก API เป็นชุด", + "contextCavemanDescription": "การบีบอัดข้อความตามกฎ ชุดภาษา การวิเคราะห์ และการควบคุมโหมดเอาต์พุต", + "contextRtkDescription": "การบีบอัดที่เข้าใจคำสั่งสำหรับเอาต์พุตของเครื่องมือ บันทึกเทอร์มินัล และผลลัพธ์การบิลด์", + "contextCombosDescription": "กำหนดวิธีผสานเอนจินสำหรับสถานการณ์การกำหนดเส้นทางต่าง ๆ", + "changelogDescription": "ติดตามฟีเจอร์ล่าสุดของแพลตฟอร์มและประกาศต่าง ๆ", + "agentsDescription": "จัดการและกำหนดค่าเครื่องมือเอเจนต์ AI: Codex, Devin, Jules และเอเจนต์แบบกำหนดเอง", + "cloudAgentsDescription": "ประสานงานเอเจนต์ AI บนคลาวด์ พร้อมการติดตามงานแบบสดและการอนุมัติแผน", + "memoryDescription": "หน่วยความจำการสนทนาแบบถาวร พร้อมการค้นหาเชิงความหมายและการทำดัชนีข้อความแบบเต็มด้วย FTS5", + "skillsDescription": "ติดตั้งและจัดการทักษะแซนด์บ็อกซ์สำหรับการดำเนินการพรอมต์และเครื่องมือโดยอัตโนมัติ", + "agentSkillsDescription": "แค็ตตาล็อกทักษะที่พร้อมใช้งานกับเอเจนต์ พร้อมคัดลอก URL ในคลิกเดียวสำหรับการผสานรวมไคลเอนต์ AI", + "translatorDescription": "แปลและทดสอบพรอมต์ข้ามรูปแบบ API: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "ทดสอบพรอมต์แบบโต้ตอบ พร้อมการตอบกลับสดจากผู้ให้บริการและการตรวจสอบรูปแบบ", + "searchToolsDescription": "การวิเคราะห์การค้นหา การแจกแจงตามผู้ให้บริการ อัตราการใช้แคชสำเร็จ และการติดตามต้นทุน", + "logsDescription": "บันทึกคำขอแบบเรียลไทม์ ร่องรอยข้อผิดพลาด และตัวตรวจสอบเหตุการณ์แบบสตรีม", + "auditDescription": "บันทึกการตรวจสอบเพื่อการปฏิบัติตามข้อกำหนดสำหรับการใช้งานคีย์ API การเรียกเครื่องมือ MCP และเหตุการณ์ด้านนโยบาย", + "webhooksDescription": "กำหนดค่าปลายทางเว็บฮุกเพื่อรับการแจ้งเตือนเหตุการณ์แบบเรียลไทม์", + "healthDescription": "ภาพรวมสถานะระบบ: ผู้ให้บริการ เซอร์กิตเบรกเกอร์ ขีดจำกัดอัตรา และฐานข้อมูล", + "proxyDescription": "กำหนดค่าพร็อกซีต้นทางสำหรับการเชื่อมต่อขาออกไปยังผู้ให้บริการ", + "apiEndpointsDescription": "จัดการการกำหนดค่าปลายทาง API แบบกำหนดเองและการเขียนทับการกำหนดเส้นทาง", + "batchFilesDescription": "เรียกดูและจัดการไฟล์เอาต์พุตและผลลัพธ์ของงานแบบแบตช์", + "analyticsEvalsDescription": "ผลการประเมินโมเดลและเกณฑ์มาตรฐานประสิทธิภาพ", + "analyticsSearchDescription": "การวิเคราะห์คำค้นหา อัตราการใช้แคชสำเร็จ และการติดตามต้นทุน", + "analyticsUtilizationDescription": "เมตริกการใช้งานผู้ให้บริการและการวางแผนความจุ", + "analyticsComboHealthDescription": "สถานะและประสิทธิภาพแบบเรียลไทม์ของการกำหนดค่าการกำหนดเส้นทางแบบผสม", + "analyticsCompressionDescription": "การวิเคราะห์การบีบอัดบริบทและจำนวนโทเค็นที่ประหยัดได้", + "costsBudgetDescription": "ขีดจำกัดงบประมาณและการแจ้งเตือนค่าใช้จ่ายต่อคีย์ API และผู้ให้บริการ", + "costsPricingDescription": "การกำหนดราคาที่กำหนดเองสำหรับการคำนวณต้นทุนโทเค็น", + "logsProxyDescription": "บันทึกคำขอพร็อกซีต้นทางและการตรวจสอบทราฟฟิก", + "logsConsoleDescription": "เอาต์พุตคอนโซลของแอปพลิเคชันและบันทึกการดีบัก", + "logsActivityDescription": "บันทึกการตรวจสอบการดำเนินการของผู้ใช้และเหตุการณ์ของระบบ", + "auditMcpDescription": "บันทึกการตรวจสอบการเรียกใช้เครื่องมือ MCP และระเบียนการปฏิบัติตามข้อกำหนด", "auditA2a": "การตรวจสอบ A2A", "auditA2aDescription": "เส้นทางการตรวจสอบการปฏิบัติงานของ A2A การเปลี่ยนสถานะ และบันทึกการเรียกใช้ทักษะ", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "ธีม การสร้างแบรนด์ และการปรับแต่งรูปลักษณ์", + "settingsAiDescription": "ลักษณะการทำงานของ AI งบประมาณการคิด การมองเห็น และการตั้งค่าหน่วยความจำ", "settingsCacheDescription": "TTL สำหรับรายการแคชของแคตตาล็อกโมเดล", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "การตั้งค่าการยืนยันตัวตน การให้สิทธิ์ และการควบคุมการเข้าถึง", "featureFlags": "คุณลักษณะธง", "featureFlagsDescription": "ความสามารถของระบบควบคุมและคุณสมบัติการทดลอง", "featureFlagsActive": "{count} ใช้งานอยู่", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "ไม่มีธงที่ตรงกับการค้นหาของคุณ", "featureFlagsSaved": "อัปเดตธงแล้ว", "featureFlagsError": "อัปเดตแฟล็กไม่สำเร็จ", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "กฎการกำหนดเส้นทาง นามแฝงโมเดล ค่าเริ่มต้นของคอมโบ และการตั้งค่าการลดระดับ", + "settingsResilienceDescription": "การกำหนดค่าเซอร์กิตเบรกเกอร์ การลองใหม่ และการใช้ตัวเลือกสำรอง", + "settingsAdvancedDescription": "กฎเพย์โหลดขั้นสูง ขีดจำกัดคำขอ และการตั้งค่า Proxy API", + "mitmProxyDescription": "กำหนดค่าพร็อกซี MITM สำหรับการตรวจสอบทราฟฟิกและการดีบัก", + "oneProxyDescription": "กำหนดค่า 1Proxy สำหรับการเชื่อมต่อพร็อกซีแบบลูกโซ่ขั้นสูง", "omniSkillsDescription": "ติดตั้งและจัดการทักษะแซนด์บ็อกซ์สำหรับการดำเนินการพรอมต์และเครื่องมือโดยอัตโนมัติ" }, "cloudSyncStatus": { @@ -1743,18 +1743,18 @@ "cache": "แคช", "changelog": "บันทึกการเปลี่ยนแปลง", "chaos": "Chaos", - "cloudAgents": "Cloud Agents", - "live": "Live", - "studio": "Studio", - "aggressive": "Aggressive", + "cloudAgents": "เอเจนต์บนคลาวด์", + "live": "สด", + "studio": "สตูดิโอ", + "aggressive": "เชิงรุก", "caveman": "Caveman", "ccr": "CCR", - "headroom": "Headroom", + "headroom": "พื้นที่สำรอง", "lite": "Lite", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", "rtk": "RTK", - "sessionDedup": "Session Dedup", + "sessionDedup": "การขจัดรายการซ้ำของเซสชัน", "ultra": "Ultra", "budget": "งบประมาณ", "pricing": "ราคา", @@ -1762,7 +1762,7 @@ "discovery": "การค้นพบ", "freeProviderRankings": "อันดับผู้ให้บริการฟรี", "radar": "Radar", - "setup": "Setup", + "setup": "ตั้งค่า", "freeTiers": "แพ็กเกจฟรี", "gamification": "เกมมิฟิเคชัน", "leaderboard": "กระดานผู้นำ", @@ -1772,13 +1772,13 @@ "providerStats": "สถิติผู้ให้บริการ", "new": "ใหม่", "quota": "โควตา", - "relay": "Relay", + "relay": "รีเลย์", "searchTools": "เครื่องมือค้นหา", "security": "ความปลอดภัย", "sidebar": "แถบด้านข้าง", "tokens": "โทเค็น", "tools": "เครื่องมือ", - "agentBridge": "Agent Bridge", + "agentBridge": "บริดจ์เอเจนต์", "trafficInspector": "ตัวตรวจสอบทราฟฟิก", "usage": "การใช้งาน", "orchestration": "ออร์เคสเตรชัน" @@ -1812,7 +1812,7 @@ "reportIssue": "รายงานปัญหา", "activeError": "{active} ใช้งานอยู่ · ข้อผิดพลาด {errors}", "topologyLegendActive": "ใช้งานอยู่", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "ล่าสุด", "topologyLegendError": "เกิดข้อผิดพลาด", "oauthLabel": "OAuth", "apiKeyLabel": "คีย์ API", @@ -1826,11 +1826,11 @@ "updateStarted": "เริ่มการอัพเดต...", "reloadingPageAutomatically": "กำลังโหลดหน้าซ้ำโดยอัตโนมัติ...", "providerTopology": "โทโพโลยีของผู้ให้บริการ", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "คำขอล่าสุด", + "recentRequestsEmpty": "ยังไม่มีคำขอ", + "recentRequestsModel": "โมเดล", + "recentRequestsTokens": "ขาเข้า / ขาออก", + "recentRequestsWhen": "เวลา", "downloadDmg": "ดาวน์โหลด DMG (macOS)", "downloadDmgDescription": "มีเวอร์ชันใหม่ของแอปเดสก์ท็อป OmniRoute พร้อมใช้งาน กรุณาดาวน์โหลดและติดตั้งตัวติดตั้ง macOS DMG เพื่อทำการอัปเดต (ปัจจุบัน: v{version}).", "downloadExe": "ดาวน์โหลด EXE (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "หมายเหตุการปล่อย", "readMore": "อ่านเพิ่มเติม", "noAuthLabel": "ไม่มีการตรวจสอบสิทธิ์", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "เตรียมพร้อมสำหรับการกำหนดเส้นทาง", + "readinessTitle": "ส่งคำขอแรกของคุณ", + "readinessSubtitle": "เพียงสี่ขั้นตอนสั้น ๆ โดย OmniRoute จะตรวจสอบความพร้อมให้คุณในแต่ละขั้นตอน", + "readinessStep1": "เชื่อมต่อผู้ให้บริการ", + "readinessStep2": "กำหนดค่าการยืนยันตัวตนของเอ็นด์พอยต์", + "readinessStep3": "คัดลอกเอ็นด์พอยต์ของคุณ", + "readinessStep4": "ส่งคำขอทดสอบ", + "readinessContinue": "ดำเนินการตั้งค่าต่อ", + "readinessDismiss": "ปิดไว้ก่อน" }, "analytics": { "title": "การวิเคราะห์", @@ -1967,7 +1967,7 @@ "period7D": "7 วัน", "period30D": "30 วัน", "period90D": "90 วัน", - "periodYTD": "YTD", + "periodYTD": "ตั้งแต่ต้นปีถึงปัจจุบัน", "periodAll": "ทั้งหมด", "totalTokens": "โทเค็นทั้งหมด", "inputTokens": "โทเค็นขาเข้า", @@ -2005,8 +2005,8 @@ "modelStatusError": "เกิดข้อผิดพลาด", "comboHealth": "สุขภาพคอมโบ", "comboHealthDescription": "โควต้าระดับคอมโบ การกระจายการใช้งาน และตัวชั่งวัดประสิทธิภาพ", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "การวิเคราะห์การบีบอัด", + "compressionAnalyticsDescription": "การวิเคราะห์การบีบอัด — จำนวนโทเค็นที่ประหยัดได้ การแจกแจงตามโหมด และสถิติผู้ให้บริการ", "autoRoutingTotalAutoRequests": "คำขออัตโนมัติทั้งหมด", "autoRoutingAvgSelectionScore": "คะแนนการเลือกเฉลี่ย", "autoRoutingExplorationRate": "อัตราการสำรวจ", @@ -2210,7 +2210,7 @@ "combo": "คอมโบ", "routeStep": "ขั้นตอน", "tokens": "โทเค็น", - "notAvailable": "n/a", + "notAvailable": "ไม่มีข้อมูล", "routeTokenCounts": "{input} เข้า · {output} ออก", "routeEvidence": "หลักฐาน", "routeFactors": "ปัจจัยการกำหนดเส้นทาง", @@ -2258,9 +2258,9 @@ "fullAccess": "การเข้าถึงแบบเต็ม", "keyManagement": "การจัดการคีย์ API", "keyManagementDesc": "สร้างและจัดการคีย์ API สำหรับการตรวจสอบคำขอไปยังปลายทางของคุณ", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "แอปของคุณส่งคำขอผ่านคีย์ API ไปยัง OmniRoute", + "requestFlowYourApp": "แอปของคุณ", + "requestFlowApiKey": "คีย์ API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "คีย์ทั้งหมด", "restricted": "ถูกจำกัด", @@ -2301,34 +2301,34 @@ "keyCreatedNote": "คัดลอกและจัดเก็บคีย์นี้ทันที ซึ่งจะไม่แสดงอีก", "done": "เสร็จแล้ว", "savePermissions": "บันทึกสิทธิ์", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "endpointRestrictions": "เอ็นด์พอยต์ที่อนุญาต", + "allEndpointsAllowed": "คีย์นี้สามารถเข้าถึงเอ็นด์พอยต์ API ทั้งหมดได้", + "endpointsRestricted": "{count, plural, one {จำกัดไว้ที่ # เอ็นด์พอยต์} other {จำกัดไว้ที่ # เอ็นด์พอยต์}}", + "autoResolve": "แก้ไขอัตโนมัติ", + "autoResolveDesc": "แก้ไขชื่อโมเดลที่กำกวมไปยังผู้ให้บริการดั้งเดิมโดยอัตโนมัติสำหรับคีย์ API นี้", "streamDefaultMode": "ความเข้ากันได้ของค่าเริ่มต้นสตรีม", "streamDefaultModeDesc": "ควบคุมแฟล็ก `stream` ที่ละเว้นสำหรับคีย์นี้ โหมด JSON จะส่งคืนการตอบกลับแบบไม่สตรีม เว้นแต่ไคลเอนต์จะร้องขอ SSE อย่างชัดเจน.", "streamDefaultLegacy": "เวอร์ชันเก่า", "streamDefaultJson": "เข้ากันได้กับ JSON", "streamDefaultBadge": "ค่าเริ่มต้นสตรีม JSON", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", + "keyActive": "คีย์เปิดใช้งานอยู่", + "keyActiveDesc": "เปิดหรือปิดใช้งานคีย์ API นี้ คีย์ที่ปิดใช้งานจะถูกปฏิเสธทันทีด้วย 403", + "accessSchedule": "กำหนดเวลาการเข้าถึง", + "accessScheduleDesc": "จำกัดการเข้าถึงเฉพาะชั่วโมงและวันในสัปดาห์ที่กำหนด", + "scheduleFrom": "ตั้งแต่", + "scheduleUntil": "จนถึง", + "scheduleDays": "วัน", + "scheduleTimezone": "เขตเวลา", + "scheduleTimezoneHint": "ใช้ชื่อเขตเวลาตาม IANA เช่น America/New_York, Europe/Berlin", + "scheduleActive": "กำหนดเวลา", + "disabled": "ปิดใช้งาน", + "daySun": "อา.", + "dayMon": "จ.", + "dayTue": "อ.", + "dayWed": "พ.", + "dayThu": "พฤ.", + "dayFri": "ศ.", + "daySat": "ส.", "allowAll": "อนุญาตทั้งหมด", "restrict": "จำกัด", "allowAllInfo": "กุญแจนี้เข้าได้ทุกรุ่น", @@ -2353,7 +2353,7 @@ "failedUpdatePermissionsRetry": "ไม่สามารถอัปเดตการอนุญาต โปรดลองอีกครั้ง", "unknownProvider": "ไม่ทราบ", "copyMaskedKey": "คัดลอกคีย์ที่ปกปิด", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyOnlyAvailableAtCreation": "คีย์แบบเต็มจะใช้ได้เฉพาะตอนสร้างเท่านั้น — โปรดคัดลอกเมื่อคุณสร้างคีย์เป็นครั้งแรก", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# อุปกรณ์} other {# อุปกรณ์}}", "devicesTooltip": "{count, plural, one {# อุปกรณ์ IP/User-Agent ที่ไม่ซ้ำกันที่พบด้วยคีย์นี้ (30 นาทีล่าสุด)} other {# อุปกรณ์ IP/User-Agent ที่ไม่ซ้ำกันที่พบด้วยคีย์นี้ (30 นาทีล่าสุด)}}", @@ -2382,8 +2382,8 @@ "allowedCombos": "คอมโบที่อนุญาต", "allCombosAllowed": "คีย์นี้สามารถใช้คอมโบใดก็ได้.", "restrictedComboCount": "จำกัดไว้ที่ {count, plural, one {# คอมโบ} other {# คอมโบ}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {รายการที่จัดเก็บไว้ # รายการไม่ได้อยู่ในรายการแบบผสมนี้ (เช่น กฎการกำหนดเส้นทาง) และจะถูกเก็บไว้ตามที่บันทึก} other {รายการที่จัดเก็บไว้ # รายการไม่ได้อยู่ในรายการแบบผสมนี้ (เช่น กฎการกำหนดเส้นทาง) และจะถูกเก็บไว้ตามที่บันทึก}}", + "preservedComboRuleHint": "เก็บไว้ตามที่จัดเก็บ รายการนี้ไม่ใช่ตัวเลือกแบบผสมในรายการด้านบน จึงสามารถเปลี่ยนแปลงได้ผ่าน API เท่านั้น", "apiManagerCustomRateLimits": "ขีดจำกัดอัตราที่กำหนดเอง", "apiManagerCustomRateLimitsDesc": "แทนที่ขีดจำกัดเริ่มต้นส่วนกลาง เว้นว่างไว้เพื่อใช้ค่าเริ่มต้น", "apiManagerRateLimitRequestsPlaceholder": "คำขอ", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "อนุญาตให้คีย์นี้ละเว้นนโยบายการตัดยอดของผู้ให้บริการ/บัญชีต้นทางระหว่างการกำหนดเส้นทาง โควตา USD ของคีย์ API ยังคงมีผลบังคับใช้", "quotaPill": "โควตา", "quotaModeOnly": "เฉพาะ qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "สิทธิ์เช่าแบบเอกสิทธิ์", + "exclusiveLeaseNoticeTitle": "สิทธิ์เช่าแบบเอกสิทธิ์", + "exclusiveLeaseNoticeDesc": "คีย์ API นี้มีสิทธิ์เช่าแบบเอกสิทธิ์สำหรับการกำหนดเส้นทางผ่านการเชื่อมต่อเฉพาะ", + "allConnections": "การเชื่อมต่อทั้งหมด", + "onlySelectedConnections": "เฉพาะการเชื่อมต่อที่เลือก", + "selectAtLeastOneConnection": "เลือกการเชื่อมต่ออย่างน้อยหนึ่งรายการ หรือเลือกการเชื่อมต่อทั้งหมด", + "allConnectionsDesc": "คีย์นี้สามารถใช้การเชื่อมต่อใดก็ได้ที่เปิดใช้งานอยู่", + "restrictedToConnections": "จำกัดไว้ที่ {count, plural, one {# การเชื่อมต่อ} other {# การเชื่อมต่อ}}" }, "auditLog": { "title": "บันทึกการตรวจสอบ", @@ -2457,16 +2457,16 @@ "model": "Model", "prompt": "Prompt", "generate": "สร้าง", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "กำลังสร้าง...", + "loadingModels": "กำลังโหลดโมเดลที่พร้อมใช้งาน...", + "noModels": "ไม่มีโมเดลที่พร้อมใช้งาน โปรดกำหนดค่าผู้ให้บริการที่รองรับสื่อก่อน", + "error": "การสร้างล้มเหลว", + "result": "ผลลัพธ์", + "imageDescription": "สร้างรูปภาพจากพรอมต์ข้อความโดยใช้ OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI และอื่นๆ", + "videoDescription": "สร้างวิดีโอด้วย AnimateDiff, Stable Video Diffusion ผ่าน ComfyUI หรือ SD WebUI", + "musicDescription": "แต่งเพลงโดยใช้ Stable Audio Open หรือ MusicGen ผ่าน ComfyUI", "kinds": { - "embedding": "Embedding", + "embedding": "การฝังข้อมูล", "image": "รูปภาพ", "imageToText": "รูปภาพเป็นข้อความ", "tts": "ข้อความเป็นเสียงพูด", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "โมเดลแปลงเสียงเป็นข้อความของ OpenRouter ใช้การเชื่อมต่อ OpenRouter ที่คุณกำหนดไว้ ไม่มีการรับรองความถูกต้องแยกต่างหากที่จำเป็น." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "คำค้นหา", + "searchResults": "ผลการค้นหา", + "cachedResult": "แคชแล้ว", + "searchCost": "ค่าใช้จ่าย", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "การทดสอบการค้นหาขั้นสูงพร้อมเปรียบเทียบผู้ให้บริการ", + "compareProviders": "เปรียบเทียบผู้ให้บริการ", + "rerankResults": "จัดอันดับผลลัพธ์ใหม่", + "searchHistory": "ประวัติการค้นหา", + "urlOverlap": "URL ที่ซ้ำกัน", + "noSearchProviders": "ยังไม่ได้กำหนดค่าผู้ให้บริการค้นหา เพิ่มผู้ให้บริการในการตั้งค่า", + "noRerankModels": "ไม่มีโมเดลจัดอันดับใหม่ที่พร้อมใช้งาน", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "ผู้ให้บริการ", + "searchType": "ประเภทการค้นหา", + "maxResults": "จำนวนผลลัพธ์สูงสุด", + "filters": "ตัวกรอง", + "country": "ประเทศ", + "language": "ภาษา", + "timeRange": "ช่วงเวลา", + "includeDomains": "รวมโดเมน", + "excludeDomains": "ยกเว้นโดเมน", + "safeSearch": "การค้นหาปลอดภัย", + "safeSearchOff": "ปิด", + "safeSearchModerate": "ปานกลาง", + "safeSearchStrict": "เข้มงวด", + "queryPlaceholder": "ป้อนคำค้นหา...", + "providerAuto": "อัตโนมัติ (ถูกที่สุด)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "ข่าว", + "optionAny": "ใดก็ได้", + "timeRangeDay": "วันที่ผ่านมา", + "timeRangeWeek": "สัปดาห์ที่ผ่านมา", + "timeRangeMonth": "เดือนที่ผ่านมา", + "timeRangeYear": "ปีที่ผ่านมา", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "คำขอหมดเวลา ({seconds} วินาที)", + "networkError": "ข้อผิดพลาดของเครือข่าย", + "formatted": "จัดรูปแบบแล้ว", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "ไม่พบในแคช", + "cacheHit": "พบในแคช", + "latency": "เวลาแฝง", + "cost": "ค่าใช้จ่าย", + "results": "ผลลัพธ์", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "โมเดลจัดอันดับใหม่", + "positionDelta": "การเปลี่ยนแปลงของตำแหน่ง", + "emptyState": "ส่งคำค้นหาเพื่อดูผลลัพธ์", "copy": "คัดลอก", "resetToDefault": "รีเซ็ตเป็นค่าเริ่มต้น", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "ค้นหา", + "tabScrape": "ดึงข้อมูล", + "tabCompare": "เปรียบเทียบ", + "modalitiesGuide": "คู่มือรูปแบบการทำงาน", + "searchConceptTitle": "ค้นหา", + "searchConceptDesc": "ค้นหา = ดึงรายการผลลัพธ์จากเว็บ (ชื่อเรื่อง, URL, ข้อความตัวอย่าง, คะแนนความเกี่ยวข้อง)", + "scrapeConceptTitle": "ดึงข้อมูล", + "scrapeConceptDesc": "ดึงข้อมูล = แยกเนื้อหาทั้งหมดจาก URL (markdown, ข้อความ หรือ HTML)", + "compareConceptTitle": "เปรียบเทียบ", + "compareConceptDesc": "เปรียบเทียบ = เรียกใช้คำค้นหาเดียวกันกับผู้ให้บริการ N รายแบบเคียงข้างกัน เพื่อเปรียบเทียบเวลาแฝง ค่าใช้จ่าย และความซ้ำซ้อนของผลลัพธ์", + "rerankConceptTitle": "จัดอันดับใหม่", + "rerankConceptDesc": "จัดอันดับใหม่ = เรียงลำดับผลลัพธ์ใหม่ผ่าน LLM เพื่อเพิ่มความเกี่ยวข้องตามคำค้นหา", + "autoConceptTitle": "อัตโนมัติ (ถูกที่สุด)", + "autoConceptDesc": "อัตโนมัติ (ถูกที่สุด) = เลือกผู้ให้บริการที่พร้อมใช้งานและมีข้อมูลประจำตัวที่กำหนดค่าไว้ซึ่งมีราคาถูกที่สุดโดยอัตโนมัติ", + "providerCatalogTitle": "แค็ตตาล็อกผู้ให้บริการ", + "kindSearch": "ค้นหา", + "kindFetch": "ดึงข้อมูล/ดึงเนื้อหา", + "statusConfigured": "กำหนดค่าแล้ว", + "statusMissing": "ไม่มีข้อมูลรับรอง", + "statusRateLimited": "ถูกจำกัดอัตราการใช้งาน", + "configureProvider": "กำหนดค่าในผู้ให้บริการ", + "loadingProviders": "กำลังโหลดผู้ให้บริการ…", + "failedToLoadProviders": "โหลดผู้ให้บริการไม่สำเร็จ", + "costPerQuery": "ค่าใช้จ่าย/คำขอ", + "freeQuota": "โควตาฟรี/เดือน", + "scrapeUrl": "URL ที่จะดึงข้อมูล", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "จำเป็นต้องระบุ URL", "scrapeUrlInvalid": "URL ไม่ถูกต้อง — ต้องเริ่มต้นด้วย http:// หรือ https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "ดึงข้อมูล", + "scrapeExtracting": "กำลังดึงข้อมูล…", + "scrapeFullPage": "ทั้งหน้า", + "scrapeFormat": "รูปแบบ", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "ข้อความ", + "scrapePreview": "ดูตัวอย่าง", + "scrapeRaw": "ข้อมูลดิบ", + "scrapeContentTruncated": "(ถูกตัดทอน โปรดดูข้อมูลดิบ)", + "scrapeMetadata": "ข้อมูลเมตา", + "scrapeProvider": "ผู้ให้บริการ", + "scrapeSize": "ขนาด", "scrapeEmptyState": "ป้อน URL เพื่อดึงข้อมูลเนื้อหา", "scrapeProvidersAvailable": "ผู้ให้บริการที่พร้อมใช้งาน: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "เปรียบเทียบ", + "compareRunning": "กำลังเปรียบเทียบ…", + "autoProvider": "อัตโนมัติ (ถูกที่สุด)", + "configuredStatus": "กำหนดค่าแล้ว", + "rateLimitedStatus": "ถูกจำกัดอัตราการใช้งาน", + "noCredential": "ไม่มีข้อมูลรับรอง", + "searchTypeLabel": "ประเภท", + "rerankModelLabel": "โมเดลจัดอันดับใหม่", + "noneOption": "ไม่มี", + "size": "ขนาด", "configurationPane": "บานหน้าต่างการกำหนดค่า", "configuration": "การกำหนดค่า", "status": "สถานะ", @@ -2681,7 +2681,7 @@ "ttsSample": "สวัสดี นี่คือการทดสอบการแปลงข้อความเป็นคำพูด", "video": "วิดีโอ", "videoSample": "ภาพไทม์แลปส์ของกลุ่มเมฆเหนือเทือกเขา", - "webFetch": "Web Fetch", + "webFetch": "ดึงข้อมูลเว็บ", "webSearchSample": "OmniRoute AI gateway คืออะไร?", "noActiveProviderDescription": "ไม่มีผู้ให้บริการการค้นหาที่เปิดใช้งาน กำหนดค่าได้ใน Providers", "configureProviders": "กำหนดค่าผู้ให้บริการ", @@ -2743,7 +2743,7 @@ "effortExtraHigh": "สูงพิเศษ", "effortMax": "สูงสุด", "effortUltra": "อัลตรา", - "wireApi": "Wire API", + "wireApi": "เชื่อมต่อ API", "modelAliases": "นามแฝงโมเดล", "addModel": "เพิ่มโมเดล", "routeModelPlaceholder": "กำหนดเส้นทาง {model} ไปยัง...", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. เพิ่ม", "antigravityStep2Suffix": "ไปยังไฟล์โฮสต์ของคุณเป็น 127.0.0.1", "antigravityStep3": "3. เปิด Antigravity และคำขอจะถูกส่งผ่านพรอกซี", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} จะส่งคำขอไปยังปลายทางของผู้ให้บริการ โดย MITM จะดักจับและเปลี่ยนเส้นทางคำขอไปยัง OmniRoute", + "mitmStep1": "1. เริ่ม MITM เพื่อส่งคำขอผ่าน OmniRoute", + "mitmStep2Prefix": "2. เพิ่ม", + "mitmStep2Suffix": "ลงในไฟล์ hosts โดยกำหนดเป็น 127.0.0.1", + "mitmStep3": "3. เปิด {toolName} แล้วคำขอจะถูกส่งผ่านพร็อกซี", "sudoPasswordRequiredTitle": "ต้องใช้รหัสผ่าน Sudo", "sudoPasswordHint": "ต้องใช้รหัสผ่านผู้ดูแลระบบเพื่อแก้ไขไฟล์โฮสต์และการตั้งค่าพร็อกซีระบบ", "enterSudoPassword": "ป้อนรหัสผ่าน sudo", @@ -2908,7 +2908,7 @@ "continue": "ใช้เมื่อเรียกใช้ดำเนินการต่อใน IDE และคุณต้องกำหนดค่าผู้ให้บริการที่ใช้ JSON แบบพกพา", "opencode": "ใช้เมื่อคุณต้องการเรียกใช้ Terminal-Native Agent และใช้สคริปต์อัตโนมัติผ่าน OpenCode", "kiro": "ใช้เมื่อรวม Kiro และควบคุมการกำหนดเส้นทางโมเดลจากส่วนกลางจาก OmniRoute", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "ใช้เมื่อคุณต้องการ IDE ที่เน้น AI เป็นหลัก โดยใช้โมเดล Codeium/Windsurf ที่กำหนดเส้นทางผ่าน OmniRoute", "antigravity": "ใช้เมื่อต้องสกัดกั้นการรับส่งข้อมูล Antigravity/Kiro ผ่าน MITM และกำหนดเส้นทางไปยัง OmniRoute", "copilot": "ใช้เมื่อคุณต้องการ UX รูปแบบการแชทของ Copilot ในขณะที่บังคับใช้คีย์ OmniRoute และกฎการกำหนดเส้นทาง", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2928,11 +2928,11 @@ "qwen": "Qwen Code CLI", "cursor": "ตัวแก้ไขรหัสเคอร์เซอร์ AI", "continue": "ดำเนินการต่อผู้ช่วย AI", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "เอเจนต์เขียนโค้ด AI OpenCode (เทอร์มินัล)", + "kiro": "Amazon Kiro — IDE ที่ขับเคลื่อนด้วย AI", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "CLI ผู้ช่วยเขียนโค้ด Sourcegraph Amp", "hermes": "ผู้ช่วยเทอร์มินัล Hermes AI", "hermes-agent": "Hermes Agent (โดย Nousresearch) - AI บนเทอร์มินัลขั้นสูงที่รองรับหลายโมเดล (การมอบหมายงาน, การมองเห็น, การบีบอัด ฯลฯ)", "custom": "ตัวสร้างการกำหนดค่า CLI หรือ SDK ที่เข้ากันได้กับ OpenAI ทั่วไป", @@ -2950,7 +2950,7 @@ "interpreter": "CLI เอเจนต์เขียนโค้ดอัตโนมัติ Open Interpreter", "omp": "เอเจนต์เขียนโค้ดบนเทอร์มินัล Oh My Pi", "letta": "เอเจนต์ Letta CLI พร้อมหน่วยความจำถาวรและการใช้เครื่องมือ", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — ระบบควบคุมการเขียนโค้ด RLM ที่พัฒนาตนเองได้ พร้อมรองรับผู้ให้บริการที่เข้ากันได้กับ OpenAI", "warp": "เทอร์มินัล Warp AI ที่รองรับผู้ให้บริการแบบกำหนดเอง", "agent-deck": "ตัวประสานงานหลายเอเจนต์ Agent Deck", "5dive": "5dive — ฟลีตเอเจนต์เขียนโค้ดที่โฮสต์เอง; โปรไฟล์ auth เดียวชี้ทั้งหมดไปที่ OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "ติดตั้ง OpenCode", + "desc": "ติดตั้งผ่าน npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "คีย์ API" }, "3": { - "title": "Set Base URL", + "title": "ตั้งค่า URL ฐาน", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "เลือกโมเดล" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "ใช้รูปแบบ Thinking", + "desc": "สำหรับโมเดลที่ใช้การคิด ให้เรียกใช้ด้วย --variant high/low/max (ดูตัวอย่างคำสั่งด้านล่าง)" } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "เปิดการตั้งค่า Kiro", + "desc": "ไปที่ การตั้งค่า → ผู้ให้บริการ AI" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "URL ฐาน", + "desc": "วาง URL ปลายทาง OmniRoute ของคุณ" }, "3": { - "title": "API Key" + "title": "คีย์ API" }, "4": { - "title": "Select Model" + "title": "เลือกโมเดล" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "เปิดการตั้งค่า AI", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "เพิ่มผู้ให้บริการแบบกำหนดเอง", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "URL ฐาน", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "คีย์ API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "เลือกโมเดล", + "desc": "เลือกโมเดลจากเมนูแบบเลื่อนลง" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "CLI แบบกำหนดเอง", - "toolCategories": "Tool Categories", + "toolCategories": "หมวดหมู่เครื่องมือ", "visibleToolsCount": "มีเครื่องมือ {count} รายการ", "customCliBuilderTitle": "เครื่องมือสร้าง CLI ที่เข้ากันได้กับ OpenAI", "customCliBuilderDescription": "สร้าง env vars และข้อมูลโค้ด JSON สำหรับ CLI หรือ SDK ใดๆ ที่ยอมรับ URL พื้นฐาน, คีย์ API และรหัสโมเดลที่เข้ากันได้กับ OpenAI", @@ -3132,11 +3132,11 @@ "hermesRoleTtsAudioTagsDesc": "การสร้างแท็กเสียง TTS", "hermesRoleTriageSpecifier": "ตัวระบุการจัดลำดับความสำคัญ", "hermesRoleTriageSpecifierDesc": "ข้อกำหนดการจัดการปัญหาและการขอการเปลี่ยนแปลง", - "hermesRoleKanbanDecomposer": "Kanban Decomposer", + "hermesRoleKanbanDecomposer": "ตัวแยกงานแบบ Kanban", "hermesRoleKanbanDecomposerDesc": "การแยกย่อยงานใน Kanban", "hermesRoleProfileDescriber": "โปรไฟล์คำอธิบาย", "hermesRoleProfileDescriberDesc": "คำอธิบายโปรไฟล์ผู้ใช้", - "hermesRoleGoalJudge": "Goal Judge", + "hermesRoleGoalJudge": "ตัวประเมินเป้าหมาย", "hermesRoleGoalJudgeDesc": "การตัดสินการบรรลุเป้าหมาย", "hermesRoleCurator": "ผู้ดูแล", "hermesRoleCuratorDesc": "การจัดการทักษะและความจำ", @@ -3260,18 +3260,18 @@ "priorityDesc": "ทางเลือกสำรองตามลำดับ: ลองใช้โมเดล 1 ก่อน จากนั้นจึงใช้ 2 เป็นต้น", "weightedDesc": "กระจายการรับส่งข้อมูลตามเปอร์เซ็นต์น้ำหนักพร้อมทางเลือกสำรอง", "roundRobinDesc": "การกระจายแบบวงกลม: แต่ละคำขอจะส่งไปยังโมเดลถัดไปที่หมุนเวียนกัน", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "การส่งต่อบริบท", + "contextRelayDesc": "รักษาความต่อเนื่องของเซสชันด้วยสรุปการส่งต่องานเมื่อมีการสลับบัญชี", "randomDesc": "การเลือกแบบสุ่มแบบสม่ำเสมอ จากนั้นจึงย้อนกลับไปยังโมเดลที่เหลือ", "leastUsedDesc": "เลือกโมเดลที่มีคำขอน้อยที่สุด โดยจะปรับสมดุลการโหลดเมื่อเวลาผ่านไป", "costOptimizedDesc": "กำหนดเส้นทางไปยังรุ่นที่ถูกที่สุดก่อนตามราคา", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "กำหนดเส้นทางคำนำหน้าพรอมต์ที่ใช้ซ้ำแต่ละรายการไปยังบัญชีผู้ให้บริการเดิมอย่างสม่ำเสมอ", "resetAware": "รีเซ็ต-Aware RR", "resetAwareDesc": "ปรับโควต้าที่เหลือให้สมดุลกับการรีเซ็ต 5 ชม. และการรีเซ็ตรายสัปดาห์ จากนั้นจึงทำคะแนนแบบ Round-Robins ที่คล้ายกัน", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "ถ่วงน้ำหนักตามโควตา", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "สุ่มอย่างเคร่งครัด", + "strictRandomDesc": "สับสำรับ — ใช้แต่ละโมเดลหนึ่งครั้งก่อนสับใหม่", "fusion": "การผสาน", "fusionDesc": "ส่ง prompt ไปยังทุกโมเดลในพาเนลแบบขนาน จากนั้นโมเดลผู้ตัดสินจะสังเคราะห์คำตอบสุดท้ายขึ้นมาหนึ่งคำตอบ", "fusionJudgeModel": "โมเดลผู้ตัดสิน", @@ -3288,13 +3288,13 @@ "retryDelay": "ความล่าช้าในการลองอีกครั้ง (มิลลิวินาที)", "concurrencyPerModel": "เห็นพ้องต้องกัน / รุ่น", "queueTimeout": "คิวหมดเวลา (มิลลิวินาที)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "เกณฑ์การส่งต่องาน", + "contextRelayHandoffThresholdHelp": "เมื่อการใช้โควตาถึงเกณฑ์นี้ OmniRoute จะสร้างสรุปการส่งต่องานแบบมีโครงสร้างก่อนที่โควตาของบัญชีที่ใช้งานอยู่จะหมดลง", + "contextRelayMaxMessages": "จำนวนข้อความสูงสุดสำหรับสรุป", + "contextRelayMaxMessagesHelp": "จำกัดปริมาณประวัติล่าสุดที่จะย่อรวมไว้ในสรุปการส่งต่อ", + "contextRelaySummaryModel": "โมเดลสำหรับสรุป", + "contextRelaySummaryModelHelp": "โมเดลทดแทนที่เลือกใช้ได้ โดยใช้เฉพาะสำหรับสร้างสรุปการส่งต่องานเท่านั้น เว้นว่างไว้เพื่อใช้โมเดลคอมโบที่กำลังใช้งานอยู่", + "contextRelayProviderNote": "ขณะนี้ Context Relay สร้างการส่งต่อสำหรับการหมุนเวียนบัญชี Codex จับคู่กับหลายบัญชีจากผู้ให้บริการรายเดียวกันเพื่อความต่อเนื่องที่ดีที่สุด", "advancedHint": "เว้นว่างไว้เพื่อใช้ค่าเริ่มต้นสากล เหล่านี้จะแทนที่การตั้งค่าต่อผู้ให้บริการ", "failoverBeforeRetry": "เฟลโอเวอร์ก่อนที่จะลองอีกครั้ง", "maxSetRetries": "ลองตั้งค่าสูงสุดใหม่", @@ -3345,40 +3345,40 @@ "weighted": "ถ่วงน้ำหนัก", "leastUsed": "ใช้น้อยที่สุด", "costOpt": "ต้นทุน-การเลือก", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "strategyGuideTitle": "วิธีใช้กลยุทธ์นี้", + "strategyGuideWhen": "ควรใช้เมื่อ", + "strategyGuideAvoid": "หลีกเลี่ยงเมื่อ", + "strategyGuideExample": "ตัวอย่าง", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "คุณมีโมเดลที่ต้องการใช้เป็นหลักเพียงโมเดลเดียว และต้องการใช้โมเดลสำรองเฉพาะเมื่อเกิดข้อผิดพลาด", + "avoid": "คุณต้องกระจายคำขอไปยังหลายโมเดล", + "example": "โมเดลเขียนโค้ดหลัก พร้อมโมเดลสำรองที่มีต้นทุนต่ำกว่าสำหรับกรณีระบบขัดข้อง" }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "คุณต้องควบคุมสัดส่วนทราฟฟิกระหว่างโมเดล", + "avoid": "คุณไม่สามารถดูแลค่าน้ำหนักให้แม่นยำได้อย่างต่อเนื่อง", + "example": "เปิดตัวโดยใช้โมเดลเสถียร 80% + โมเดลคานารี 20%" }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "คุณต้องการการกระจายที่สม่ำเสมอและคาดการณ์ได้", + "avoid": "โมเดลมีเวลาแฝงหรือต้นทุนแตกต่างกันมากเกินไป", + "example": "ใช้โมเดลเดียวกันในหลายบัญชีเพื่อกระจายปริมาณงาน" }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "คุณต้องการการกระจายแบบเรียบง่ายและตั้งค่าให้น้อยที่สุด", + "avoid": "คุณต้องการการรับประกันทราฟฟิกอย่างเคร่งครัด", + "example": "การสร้างต้นแบบอย่างรวดเร็วด้วยโมเดลที่เทียบเท่ากัน" }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "คุณต้องการการปรับสมดุลแบบไดนามิกตามความต้องการแบบเรียลไทม์", + "avoid": "ทราฟฟิกต่ำเกินกว่าจะได้ประโยชน์จากการปรับสมดุลตามการใช้งาน", + "example": "เวิร์กโหลดแบบผสมที่โมเดลหนึ่งมักทำงานหนักเกินไป" }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "การลดต้นทุนคือสิ่งสำคัญที่สุดของคุณ", + "avoid": "ข้อมูลราคาขาดหายไปหรือล้าสมัย", + "example": "งานเบื้องหลังหรืองานแบบแบตช์ที่ให้ความสำคัญกับต้นทุนต่ำ" }, "reset-aware": { "when": "คุณกำหนดเส้นทางข้ามหลายบัญชีด้วยการวัดและส่งข้อมูลทางไกลโควต้าและหน้าต่างการรีเซ็ตที่แตกต่างกัน", @@ -3386,19 +3386,19 @@ "example": "ต้องการให้บัญชีรายสัปดาห์ 60% รีเซ็ตในวันพรุ่งนี้ มากกว่าบัญชี 80% ที่จะรีเซ็ตในภายหลัง" }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "ใช้เมื่อคุณต้องการกระจายอย่างเท่าเทียมกันอย่างสมบูรณ์ โดยแต่ละโมเดลจะถูกใช้หนึ่งครั้งก่อนเริ่มวนซ้ำ", + "avoid": "หลีกเลี่ยงเมื่อโมเดลมีคุณภาพหรือเวลาแฝงแตกต่างกัน และลำดับมีความสำคัญ", + "example": "ตัวอย่าง: หลายบัญชีของโมเดลเดียวกันเพื่อกระจายการใช้งานอย่างเท่าเทียมกัน" }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "ใช้เมื่อคุณต้องการเลือกโมเดลที่มีเวลาแฝงต่ำด้วยอัลกอริทึม Power-of-Two-Choices", + "avoid": "หลีกเลี่ยงสำหรับชุดผสมขนาดเล็กที่มีไม่เกิน 2 โมเดล เพราะไม่มีข้อได้เปรียบเหนือการวนแบบรอบต่อรอบ", + "example": "ตัวอย่าง: การอนุมานที่มีปริมาณงานสูงผ่านเอนด์พอยต์โมเดลที่เทียบเท่ากันตั้งแต่ 4 จุดขึ้นไป" }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "ใช้เมื่อเซสชันที่ยาวนานต้องรองรับการหมุนเวียนบัญชีโดยไม่สูญเสียบริบทการทำงาน", + "avoid": "หลีกเลี่ยงเมื่อแทบไม่มีการสลับบัญชี หรือเมื่อคุณไม่ต้องการคำขอสรุปเพิ่มเติม", + "example": "ตัวอย่าง: เซสชัน Codex ที่หมุนเวียนผ่านหลายบัญชีเมื่อใกล้ใช้โควตาหมด" }, "fill-first": { "when": "ใช้เมื่อคุณต้องการใช้โควต้าของผู้ให้บริการรายหนึ่งจนหมดก่อนที่จะย้ายไปยังรายถัดไป", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "จำนวนครั้งที่พยายามใหม่ก่อนกำหนดให้คำขอล้มเหลว", + "retryDelay": "ระยะเวลารอเริ่มต้นระหว่างการลองใหม่ ค่าที่สูงขึ้นช่วยลดแรงกดดันจากคำขอจำนวนมากในช่วงเวลาสั้นๆ", + "timeout": "ระยะเวลาสูงสุดของคำขอก่อนยกเลิก", + "healthcheck": "ข้ามโมเดล/ผู้ให้บริการที่ไม่พร้อมใช้งานในการตัดสินใจกำหนดเส้นทาง", + "concurrencyPerModel": "จำนวนคำขอพร้อมกันสูงสุดที่อนุญาตต่อโมเดลในการวนแบบรอบต่อรอบ", + "queueTimeout": "ระยะเวลาที่คำขอสามารถรอในคิวได้ก่อนหมดเวลา", "failoverBeforeRetry": "เมื่อเปิดใช้งาน ข้อผิดพลาดอัปสตรีมจะทริกเกอร์การเฟลโอเวอร์ทันทีไปยังเป้าหมายคอมโบถัดไป โดยข้ามการลองใหม่ทั้งหมดและ URL สำรอง", "maxSetRetries": "จำนวนครั้งในการลองเป้าหมายทั้งหมดที่ตั้งไว้อีกครั้งเมื่อทุกเป้าหมายล้มเหลว 0 = ไม่มีการลองใหม่ในระดับที่กำหนด", "setRetryDelayMs": "ความล่าช้าระหว่างการพยายามลองใหม่ในระดับที่กำหนด ทำให้มีเวลาแก้ไขปัญหาชั่วคราว", "disableSessionStickiness": "สลับไปยังการเชื่อมต่ออื่นในทุกๆ คำขอ แทนที่จะตรึงการสนทนาทั้งหมดไว้กับการเชื่อมต่อเดียวด้วยแฮชของข้อความแรก ซึ่งจะเขียนทับค่าเริ่มต้นส่วนกลาง ปล่อยไว้ที่ 'สืบทอด' (Inherit) เพื่อรักษาฮิตของแคชพรอมต์สำหรับการแชทแบบหลายเทิร์น" }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "เทมเพลตด่วน", + "templatesDescription": "ใช้โปรไฟล์เริ่มต้น แล้วปรับโมเดลและการกำหนดค่า", + "templateApply": "ใช้เทมเพลต", + "templateHighAvailability": "ความพร้อมใช้งานสูง", + "templateHighAvailabilityDesc": "กำหนดเส้นทางตามลำดับความสำคัญ พร้อมการตรวจสอบสถานะและการลองใหม่อย่างปลอดภัย", + "templateCostSaver": "ประหยัดค่าใช้จ่าย", + "templateCostSaverDesc": "การกำหนดเส้นทางที่ปรับให้คุ้มค่าที่สุดสำหรับเวิร์กโหลดที่ให้ความสำคัญกับงบประมาณ", + "templateBalanced": "กระจายโหลดอย่างสมดุล", + "templateBalancedDesc": "กำหนดเส้นทางไปยังโมเดลที่ถูกใช้งานน้อยที่สุด เพื่อกระจายความต้องการในระยะยาว", + "usageGuideHide": "ซ่อน", + "usageGuideDontShowAgain": "ไม่ต้องแสดงอีก", + "usageGuideShow": "แสดงคำแนะนำ", + "quickTestTitle": "คอมโบพร้อมสำหรับการตรวจสอบ", + "quickTestDescription": "เรียกใช้การทดสอบตอนนี้เพื่อยืนยันการทำงานของเส้นทางสำรองและเวลาแฝง", + "testNow": "ทดสอบตอนนี้", + "pricingCoverage": "ความครอบคลุมของข้อมูลราคา", + "pricingCoverageHint": "การปรับให้คุ้มค่าที่สุดทำงานได้ดีที่สุดเมื่อโมเดลทั้งหมดในคอมโบมีข้อมูลราคา", + "pricingAvailable": "มีข้อมูลราคา", + "pricingMissing": "ไม่มีข้อมูลราคา", + "pricingAvailableShort": "มีราคา", + "pricingMissingShort": "ไม่มีราคา", "fallbackOnlyOnQuotaExhaustion": "เฉพาะเมื่อโควต้าหมดเท่านั้น", "fallbackOnlyOnQuotaExhaustionShort": "การสำรองข้อมูลเฉพาะโควต้า", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "warningRoundRobinSingleModel": "การวนเลือกแบบ Round-robin มีประโยชน์สูงสุดเมื่อมีโมเดลอย่างน้อย 2 รายการ", + "warningCostOptimizedPartialPricing": "มีโมเดลที่มีข้อมูลราคาเพียง {priced} จาก {total} รายการ การกำหนดเส้นทางอาจพิจารณาต้นทุนได้เพียงบางส่วน", + "warningCostOptimizedNoPricing": "ไม่พบข้อมูลราคาสำหรับคอมโบนี้ การปรับให้คุ้มค่าที่สุดอาจกำหนดเส้นทางโดยไม่เป็นไปตามที่คาดไว้", + "filterAll": "ทั้งหมด", + "filterIntelligent": "อัจฉริยะ", + "filterDeterministic": "กำหนดแน่นอน", + "filterEmptyTitle": "ไม่มีคอมโบที่ตรงกับตัวกรองกลยุทธ์นี้", + "filterEmptyIntelligentDescription": "สร้างคอมโบ auto หรือ LKGP เพื่อแสดงข้อมูลในแดชบอร์ดการกำหนดเส้นทางอัจฉริยะ", + "filterEmptyDeterministicDescription": "ขณะนี้มีเพียงคอมโบ auto และ LKGP โปรดสลับกลับไปที่ทั้งหมด หรือสร้างคอมโบแบบกำหนดแน่นอน", "readinessTitle": "พร้อมที่จะบันทึกแล้วหรือยัง?", "readinessDescription": "ตรวจสอบรายการตรวจสอบก่อนที่จะสร้างหรืออัปเดตคำสั่งผสมนี้", "readinessCheckName": "ชื่อคำสั่งผสมถูกต้อง", @@ -3478,12 +3478,12 @@ "saveBlockModels": "เพิ่มอย่างน้อยหนึ่งรุ่น", "saveBlockWeighted": "ตั้งค่าน้ำหนักเป็น 100% (ปัจจุบัน: {total}%)", "saveBlockPricing": "เพิ่มราคาสำหรับรุ่นอย่างน้อยหนึ่งรุ่นหรือเลือกกลยุทธ์อื่น", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "การตั้งค่าที่แนะนำ", + "applyRecommendations": "ใช้คำแนะนำ", + "recommendationsUpdated": "อัปเดตคำแนะนำสำหรับ {strategy} แล้ว", + "recommendationsApplied": "ใช้คำแนะนำกับคอมโบนี้แล้ว", + "intelligentPanelTitle": "แดชบอร์ดการกำหนดเส้นทางอัจฉริยะ", + "intelligentPanelDesc": "คะแนนแบบเรียลไทม์และสถานะความพร้อมใช้งานของคอมโบกำหนดเส้นทางอัตโนมัตินี้", "configOnlyStatus": "มุมมองการกำหนดค่า", "configOnlyHint": "แผงนี้แสดงเฉพาะอินพุตการกำหนดเส้นทางเท่านั้น สถานะเบรกเกอร์แบบเรียลไทม์สามารถดูได้ที่หน้าสถานะการทำงาน (Health)", "routingInputs": "อินพุตการกำหนดเส้นทาง", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "ไม่รู้จักคำนำหน้าผู้ให้บริการ", "builderDynamicAccountShort": "บัญชีแบบไดนามิก", "builderNeedValidName": "กำหนดชื่อคอมโบที่ถูกต้องก่อนดำเนินการต่อ", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "ภาพรวมสถานะ", + "normalOperation": "การทำงานปกติ", + "allProvidersHealthy": "ผู้ให้บริการรายงานว่าสภาวะการกำหนดเส้นทางเป็นปกติ", + "incidentMode": "โหมดเหตุขัดข้อง", + "highCircuitBreakerRate": "ตรวจพบอัตราการตัดวงจรของเซอร์กิตเบรกเกอร์สูง", + "activeModePack": "ชุดโหมดที่ใช้งานอยู่", + "modePackUpdated": "อัปเดตชุดโหมดเป็น {pack} แล้ว", + "modePackHint": "สลับค่าที่ตั้งไว้ล่วงหน้าเพื่อปรับแนวโน้มของกลไกการกำหนดเส้นทางโดยไม่ต้องสร้างคอมโบใหม่", + "providerScores": "คะแนนผู้ให้บริการ", + "allProvidersEvaluated": "ยังไม่ได้กำหนดพูลตัวเลือก ระบบจะประเมินผู้ให้บริการที่ใช้งานอยู่ทั้งหมดขณะรันไทม์", + "excludedProviders": "ผู้ให้บริการที่ถูกยกเว้น", + "excludedProvidersHint": "ผู้ให้บริการที่มีตัวตัดวงจรสถานะ OPEN จะถูกยกเว้นจากการกำหนดเส้นทางชั่วคราว", + "noExcludedProviders": "ขณะนี้ไม่มีผู้ให้บริการที่ถูกยกเว้น", + "cooldownMinutes": "ช่วงพัก: {minutes}m", + "builderIntelligentTitle": "การกำหนดค่าการกำหนดเส้นทางอัจฉริยะ", + "builderIntelligentDesc": "กำหนดค่ากลไกการให้คะแนนแบบหลายปัจจัยสำหรับคอมโบการกำหนดเส้นทางอัตโนมัตินี้", + "candidatePoolLabel": "พูลตัวเลือก", + "candidatePoolHint": "เลือกผู้ให้บริการที่ต้องการให้กลไกนี้ประเมิน เว้นว่างไว้เพื่อใช้ผู้ให้บริการที่ใช้งานอยู่ทั้งหมด", + "candidatePoolEmpty": "ยังไม่มีผู้ให้บริการที่ใช้งานอยู่", + "candidatePoolAllProviders": "ผู้ให้บริการทั้งหมด", + "modePackLabel": "ชุดโหมด", + "routerStrategyLabel": "กลยุทธ์เราเตอร์", + "strategyRules": "กฎ (การให้คะแนน 6 ปัจจัย)", + "explorationRateLabel": "อัตราการสำรวจ", + "explorationRateHint": "คำขอจำนวน {percent}% สามารถสำรวจผู้ให้บริการที่ไม่เหมาะสมที่สุดได้", + "budgetCapLabel": "เพดานงบประมาณ (USD / คำขอ)", + "budgetCapPlaceholder": "ไม่จำกัด", + "advancedWeightsTitle": "ขั้นสูง: น้ำหนักการให้คะแนน", "nestedComboFlatten": "ยุบรวมคอมโบที่ซ้อนกัน", "nestedComboExecute": "รันคอมโบที่ซ้อนกันเป็นเป้าหมาย", "effectiveRoutingShare": "ส่วนแบ่งการกำหนดเส้นทางที่มีผลจริง (น้ำหนัก ÷ ทั้งหมด)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "โควตา", + "weightHealth": "สถานะการทำงาน", + "weightCostInv": "ต้นทุน", + "weightLatencyInv": "เวลาแฝง", + "weightTaskFit": "ความเหมาะสมกับงาน", + "weightStability": "ความเสถียร", + "weightTierPriority": "ระดับ", + "weightCacheAffinity": "ความสัมพันธ์กับการพบข้อมูลในแคช", "weightSessionAvailability": "ความพร้อมใช้งานของเซสชัน", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "การกำหนดค่าการกำหนดเส้นทางอัจฉริยะ", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "ค่าพื้นฐานเพื่อความปลอดภัย", + "description": "ใช้โมเดลหลักหนึ่งโมเดลและรักษาลำดับการสำรองให้สั้นและเชื่อถือได้", + "tip1": "วางโมเดลที่เชื่อถือได้มากที่สุดไว้เป็นลำดับแรก", + "tip2": "เก็บโมเดลสำรอง 1-2 โมเดลที่มีคุณภาพใกล้เคียงกัน", + "tip3": "ใช้การลองใหม่ที่ปลอดภัยเพื่อรองรับความล้มเหลวชั่วคราวของผู้ให้บริการ" }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "การแบ่งทราฟฟิกแบบควบคุม", + "description": "เหมาะอย่างยิ่งสำหรับการทยอยเปิดใช้งานแบบ Canary และการย้ายระหว่างโมเดลอย่างค่อยเป็นค่อยไป", + "tip1": "เริ่มต้นด้วยการแบ่งแบบระมัดระวัง เช่น 90/10", + "tip2": "รักษาผลรวมไว้ที่ 100% และปรับสมดุลอัตโนมัติหลังการเปลี่ยนแปลง", + "tip3": "ตรวจสอบอัตราความสำเร็จและเวลาแฝงก่อนเพิ่มน้ำหนักของ Canary" }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "การกระจายโหลดที่คาดการณ์ได้", + "description": "เหมาะที่สุดเมื่อโมเดลมีประสิทธิภาพเทียบเท่ากันและคุณต้องการการกระจายที่ราบรื่น", + "tip1": "ใช้โมเดลอย่างน้อย 2 โมเดล", + "tip2": "กำหนดขีดจำกัดการทำงานพร้อมกันเพื่อหลีกเลี่ยงโอเวอร์โหลดจากโหลดที่พุ่งสูงฉับพลัน", + "tip3": "ใช้ระยะหมดเวลาของคิวเพื่อให้ล้มเหลวอย่างรวดเร็วเมื่อระบบอิ่มตัว" }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "กระจายอย่างรวดเร็วโดยตั้งค่าเพียงเล็กน้อย", + "description": "ใช้เมื่อคุณต้องการการกระจายแบบง่ายโดยไม่มีการรับประกันที่เข้มงวด", + "tip1": "ใช้โมเดลที่มีรูปแบบเวลาแฝงใกล้เคียงกัน", + "tip2": "เปิดใช้งานการลองใหม่ไว้เพื่อรองรับความล้มเหลวแบบสุ่ม", + "tip3": "เหมาะสำหรับการทดลองมากกว่า SLA ที่เข้มงวด" }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "การปรับสมดุลแบบปรับตัว", + "description": "กำหนดเส้นทางไปยังโมเดลที่ถูกใช้งานน้อยกว่าเพื่อลดจุดที่มีโหลดสูงเมื่อเวลาผ่านไป", + "tip1": "ทำงานได้ดีกว่าภายใต้ทราฟฟิกที่ต่อเนื่อง", + "tip2": "ใช้ร่วมกับการตรวจสอบสถานะเพื่อการปรับสมดุลที่ปลอดภัยยิ่งขึ้น", + "tip3": "ติดตามการใช้งานของแต่ละโมเดลเพื่อตรวจสอบประโยชน์จากการกระจาย" }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "การกำหนดเส้นทางโดยให้งบประมาณมาก่อน", + "description": "กำหนดเส้นทางไปยังโมเดลที่มีต้นทุนต่ำกว่าเมื่อมีข้อมูลเมตาด้านราคา", + "tip1": "ตรวจสอบให้แน่ใจว่ามีข้อมูลราคาครบถ้วนสำหรับโมเดลที่เลือกทั้งหมด", + "tip2": "เตรียมโมเดลสำรองที่มีคุณภาพไว้สำหรับพรอมต์ที่ยาก", + "tip3": "ใช้สำหรับงานแบบแบตช์/เบื้องหลังซึ่งมีต้นทุนเป็น KPI หลัก" }, "reset-aware": { "title": "รีเซ็ตการหมุนเวียนบัญชีที่ทราบ", @@ -3597,11 +3597,11 @@ "tip3": "รักษาแถบผูกให้เล็กเพื่อให้บัญชีที่เทียบเท่ายังคงหมุนเวียนอย่างยุติธรรม" }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "การกระจายแบบสับสำรับ", + "description": "แต่ละโมเดลจะถูกใช้เพียงหนึ่งครั้งต่อรอบก่อนสับใหม่", + "tip1": "ใช้โมเดลอย่างน้อย 2 โมเดลเพื่อให้การกระจายมีประสิทธิผล", + "tip2": "ทำงานได้ดีที่สุดกับโมเดลที่มีประสิทธิภาพเทียบเท่ากัน", + "tip3": "เหมาะอย่างยิ่งสำหรับการปรับสมดุลโหลดระหว่างบัญชี API หลายบัญชี" }, "fill-first": { "description": "โควต้าผู้ให้บริการไอเสียตามลำดับก่อนถอยกลับ", @@ -3646,86 +3646,86 @@ "title": "พลังแห่งสองทางเลือก" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "สแต็กฟรี ($0)", + "templateFreeStackDesc": "กระจายแบบ Round-robin ระหว่างผู้ให้บริการฟรีทั้งหมด: Kiro (Claude), Qoder (5 โมเดล), Qwen (4 โมเดล) ไม่มีค่าใช้จ่ายและเขียนโค้ดได้อย่างต่อเนื่อง", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "โหมด LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "เริ่มต้นใช้งาน Combo", + "wizardGuideDesc": "สร้าง Combo ของโมเดลเพื่อกำหนดเส้นทางทราฟฟิก AI อย่างชาญฉลาด", + "wizardGuideHint": "หรือคลิก + Create Combo ด้านบน", + "createFirstCombo": "สร้าง Combo แรกของคุณ", + "wizardStep1Title": "ตั้งชื่อ Combo ของคุณ", + "wizardStep1Desc": "ตั้งชื่อที่ไม่ซ้ำให้ Combo เพื่อใช้ระบุในกฎการกำหนดเส้นทาง", + "wizardStep2Title": "เพิ่มโมเดล", + "wizardStep2Desc": "เลือกโมเดล AI และจัดลำดับความสำคัญในการใช้โมเดลสำรอง", + "wizardStep3Title": "เลือกกลยุทธ์", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "ตรวจสอบและบันทึก", + "wizardStep4Desc": "ตรวจสอบการกำหนดค่าของคุณและเปิดใช้งาน Combo", + "usageGuideInvokeTitle": "วิธีเรียกใช้คอมโบนี้", + "usageGuideInvokeDesc": "ส่งชื่อคอมโบที่ตรงกันทุกประการเป็นโมเดล เช่น model: \"my-combo\" (หรือ combo/my-combo)", + "usageGuideInvokeAutoNote": "auto และ auto/* เป็นเราเตอร์แบบไม่ต้องกำหนดค่าแยกต่างหาก ซึ่งจะไม่ใช้คอมโบของคุณ (เว้นแต่จะมีคอมโบที่ใช้ชื่อว่า auto จริง ๆ)", + "usageGuideInvokeOpenrouterNote": "openrouter/auto เป็นผลิตภัณฑ์ OpenRouter แบบชำระเงินจริง (Auto Best Available) ไม่ใช่นามแฝงของ OmniRoute — ซ่อนได้ที่ การตั้งค่า → การกำหนดเส้นทาง → ซ่อนโมเดลแบบชำระเงิน", + "emailVisibilityStateOn": "เปิด", + "emailVisibilityStateOff": "ปิด", + "reorderHandle": "ลากเพื่อจัดลำดับใหม่", + "failedReorder": "จัดลำดับโมเดลใหม่ไม่สำเร็จ", + "builderFlowTitle": "ขั้นตอนการสร้างคอมโบ", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "ข้อมูลพื้นฐาน", + "description": "ชื่อและเทมเพลตเริ่มต้น" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "ขั้นตอน", + "description": "การเลือกผู้ให้บริการ โมเดล และบัญชี" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "กลยุทธ์", + "description": "พฤติกรรมการกำหนดเส้นทางและการตั้งค่าขั้นสูง" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "การกำหนดเส้นทางอัจฉริยะ", + "description": "กลุ่มตัวเลือกสำหรับการกำหนดเส้นทางอัตโนมัติ ค่าที่ตั้งไว้ และการให้คะแนน" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "ตรวจสอบ", + "description": "การตรวจสอบความถูกต้องขั้นสุดท้ายก่อนบันทึก" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "ขั้นตอนเสร็จสมบูรณ์", + "builderStageCurrent": "ขั้นตอนปัจจุบัน", + "builderStagePending": "รอดำเนินการ", + "builderStageLocked": "ล็อกอยู่ — โปรดทำขั้นตอนก่อนหน้าให้เสร็จก่อน", + "builderTitle": "สร้างคอมโบ", + "builderBrowseCatalog": "เรียกดูแค็ตตาล็อก", + "builderProvider": "ผู้ให้บริการ", + "builderLoadingProviders": "กำลังโหลดผู้ให้บริการ...", + "builderSelectProvider": "เลือกผู้ให้บริการ", + "builderModel": "โมเดล", + "builderSelectModel": "เลือกโมเดล", + "builderProviderFirst": "เลือกผู้ให้บริการก่อน", + "builderAccount": "บัญชี", + "builderPreview": "ตัวอย่าง", + "builderAddStep": "เพิ่มขั้นตอน", "builderDuplicateExact": "ขั้นตอนผู้ให้บริการ/รุ่น/บัญชีที่แน่นอนนี้มีอยู่ในคำสั่งผสมแล้ว", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "การอ้างอิงคอมโบ", + "builderAddComboRef": "เพิ่มการอ้างอิงคอมโบ", + "builderComboRefStep": "เพิ่มการอ้างอิงคอมโบ", + "builderPinnedAccount": "บัญชีที่ปักหมุด", + "builderLegacyEntry": "รายการแบบเดิม", + "reviewName": "ชื่อ", + "reviewStrategy": "กลยุทธ์", + "reviewSteps": "ขั้นตอน", + "reviewAccounts": "บัญชี", + "reviewProviders": "ผู้ให้บริการ", + "reviewComboRefs": "การอ้างอิงคอมโบ", + "reviewAdvanced": "การตั้งค่าขั้นสูง", + "reviewAgentFlags": "แฟล็กเอเจนต์", + "reviewSequence": "ลำดับโมเดล", + "reviewNoSteps": "ยังไม่ได้กำหนดค่าขั้นตอน", "builderStagesDescription": "ทำแต่ละขั้นตอนให้เสร็จสิ้นเพื่อกำหนดคอมโบ สร้างขั้นตอน เลือกกลยุทธ์การกำหนดเส้นทาง และตรวจสอบผลลัพธ์", "builderStepsDescription": "สร้างแต่ละขั้นตอนคอมโบตามลำดับ: ผู้ให้บริการ โมเดล และบัญชี ซึ่งช่วยให้สามารถนำผู้ให้บริการและโมเดลเดียวกันมาใช้ซ้ำในบัญชีต่างๆ ได้", "selectProvider": "เลือกผู้ให้บริการ", @@ -3800,27 +3800,27 @@ "range7d": "7 วัน", "range30d": "30 วัน", "range90d": "90 วัน", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 วัน", + "range365d": "365 วัน", "rangeAll": "ตลอดเวลา", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "โมเดลที่ใช้งานอยู่", + "flatRateEstimateNotice": "รวมค่าใช้จ่ายโดยประมาณตามราคาโทเค็นสำหรับการสมัครสมาชิกแบบเหมาจ่าย ไม่ใช่ค่าใช้จ่ายที่เรียกเก็บจริง", + "flatRateEstimateForecast": "การคาดการณ์รวมค่าใช้จ่ายโดยประมาณแบบเหมาจ่าย", + "selectedWindow": "ช่วงเวลาที่เลือก", + "activeProviders": "ผู้ให้บริการที่ใช้งานอยู่", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "ค่าใช้จ่ายวันนี้", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "สัดส่วนผู้ให้บริการ", + "topProviders": "ผู้ให้บริการอันดับต้น", + "costTrend": "แนวโน้มค่าใช้จ่าย", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "โมเดลอันดับต้น", "requestsInWindow": "Requests In Window", "tokenUsage": "การใช้โทเค็น", "totalTokens": "โทเค็นทั้งหมด", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "จุดสิ้นสุด API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "ใช้เอนด์พอยต์ที่เข้ากันได้กับ OpenAI กับ SDK และเครื่องมือส่วนใหญ่", + "testEndpoint": "ทดสอบเอนด์พอยต์ →", + "advancedProtocols": "โปรโตคอลขั้นสูง", "available": "จุดสิ้นสุดที่มีอยู่", "cloudProxy": "พร็อกซีคลาวด์", "disableConfirm": "คุณแน่ใจหรือไม่ว่าต้องการปิดใช้งานพร็อกซีระบบคลาวด์", @@ -3900,7 +3900,7 @@ "disableCloud": "ปิดการใช้งานคลาวด์", "enableCloud": "เปิดใช้งานคลาวด์", "modelsAcrossEndpoints": "{models} โมเดลข้ามจุดสิ้นสุด {endpoints}", - "loadingModels": "Loading available models...", + "loadingModels": "กำลังโหลดโมเดลที่พร้อมใช้งาน...", "chatDesc": "การแชทแบบสตรีมมิงและไม่สตรีมกับผู้ให้บริการทั้งหมด", "embeddings": "การฝัง", "embeddingsDesc": "การฝังข้อความสำหรับการค้นหาและไปป์ไลน์ RAG", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "ถอดเสียงไฟล์เสียงเป็นข้อความ (กระซิบ)", "textToSpeech": "ข้อความเป็นคำพูด", "textToSpeechDesc": "แปลงข้อความเป็นคำพูดที่ฟังดูเป็นธรรมชาติ", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "การสร้างเพลง", + "musicDesc": "สร้างเพลงและแทร็กเสียงผ่าน ComfyUI (Stable Audio, MusicGen)", "moderations": "การกลั่นกรอง", "moderationsDesc": "การกลั่นกรองเนื้อหาและการจำแนกความปลอดภัย", "responsesDesc": "OpenAI Responses API สำหรับ Codex และเวิร์กโฟลว์เอเจนต์ขั้นสูง", "listModelsDesc": "แสดงรายการโมเดลที่ใช้ได้ทั้งหมดจากผู้ให้บริการที่เชื่อมต่อ", "settingsApiDesc": "อ่านและแก้ไขการกำหนดค่า OmniRoute ผ่าน API", - "settingsApi": "Settings API", + "settingsApi": "API การตั้งค่า", "categoryCore": "API หลัก", "categoryMedia": "สื่อและมัลติโมดอล", - "categorySearch": "Search & Discovery", + "categorySearch": "การค้นหาและการค้นพบ", "categoryUtility": "ยูทิลิตี้และการจัดการ", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "การค้นหาเว็บ", + "webSearchDesc": "การค้นหาเว็บแบบรวมจากผู้ให้บริการหลายราย พร้อมการสลับไปใช้ระบบสำรองและการแคชโดยอัตโนมัติ", + "searchProvider": "ผู้ให้บริการค้นหา", + "searchProviderDesc": "ผู้ให้บริการนี้ใช้สำหรับการค้นหาเว็บผ่าน POST /v1/search โดยไม่จำเป็นต้องกำหนดค่าโมเดล — ผู้ให้บริการค้นหาพร้อมใช้งานทันทีเมื่อเชื่อมต่อคีย์ API แล้ว", "enableCloudTitle": "เปิดใช้งานพร็อกซีคลาวด์", "whatYouGet": "สิ่งที่คุณจะได้รับ", "cloudBenefitAccess": "เข้าถึง API ของคุณได้จากทุกที่ในโลก", @@ -3963,57 +3963,57 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "เปิดใช้งาน Tunnel", + "cloudflaredInstallAndEnable": "ติดตั้งและเปิดใช้งาน", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "กำลังทำงาน", + "cloudflaredStarting": "กำลังเริ่มต้น", + "cloudflaredStoppedState": "หยุดทำงานแล้ว", + "cloudflaredNotInstalled": "ยังไม่ได้ติดตั้ง", + "cloudflaredUnsupported": "ไม่รองรับ", + "cloudflaredError": "ข้อผิดพลาด", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "ข้อผิดพลาดล่าสุด: {error}", "providerModelsTitle": "{provider} — โมเดล", "noModelsForProvider": "ไม่มีรุ่นสำหรับผู้ให้บริการรายนี้", "chat": "แชท", "embedding": "การฝัง", "image": "รูปภาพ", "custom": "กำหนดเอง", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {# โมเดล} other {# โมเดล}}", + "sectionTitle": "ส่วนติดต่อการผสานรวม", + "sectionDescription": "API ที่เข้ากันได้กับ OpenAI และปลายทางโปรโตคอลสำหรับการดำเนินงาน", "tabApis": "API", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "โปรโตคอล", + "tabsAria": "ส่วนของปลายทาง", + "protocolsTitle": "โปรโตคอล", + "protocolsDescription": "MCP และ A2A เป็นปลายทางหลักที่มีระบบสังเกตการณ์และการควบคุมเฉพาะ", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "Model Context Protocol ผ่าน stdio", + "a2aCardTitle": "เซิร์ฟเวอร์ A2A", + "a2aCardDescription": "ปลายทาง Agent2Agent JSON-RPC", + "protocolToolsLabel": "เครื่องมือ", + "protocolTasksLabel": "งาน", + "protocolActiveStreamsLabel": "สตรีมที่ใช้งานอยู่", + "protocolLastActivity": "กิจกรรมล่าสุด", + "quickStart": "เริ่มต้นใช้งานอย่างรวดเร็ว", + "openMcpDashboard": "เปิดการจัดการ MCP", + "openA2aDashboard": "เปิดการจัดการ A2A", + "mcpQuickStartTitle": "เริ่มต้นใช้งาน MCP อย่างรวดเร็ว", + "mcpQuickStartStep1": "เรียกใช้เซิร์ฟเวอร์ MCP ผ่าน `omniroute --mcp`", + "mcpQuickStartStep2": "กำหนดค่าไคลเอนต์ MCP ให้เชื่อมต่อผ่านการรับส่งข้อมูลแบบ stdio", + "mcpQuickStartStep3": "เรียกใช้เครื่องมือ เช่น `omniroute_get_health` และ `omniroute_list_combos`", + "a2aQuickStartTitle": "เริ่มต้นใช้งาน A2A อย่างรวดเร็ว", + "a2aQuickStartStep1": "ค้นหาการ์ดเอเจนต์ได้ที่ `/.well-known/agent.json`", + "a2aQuickStartStep2": "ส่งคำขอ JSON-RPC ไปยัง `POST /a2a` โดยใช้ `message/send` หรือ `message/stream`", + "a2aQuickStartStep3": "ติดตามและควบคุมงานโดยใช้ `tasks/get` และ `tasks/cancel`", + "completionsLegacy": "การเติมข้อความให้สมบูรณ์ (แบบเดิม)", + "completionsLegacyDesc": "การเติมข้อความ OpenAI แบบเดิมให้สมบูรณ์ — รองรับทั้งสตริงพรอมต์และรูปแบบอาร์เรย์ข้อความ", "messagesApi": "ข้อความ", "messagesApiDesc": "รูปแบบ Native Anthropic Messages API สำหรับผู้ให้บริการที่เข้ากันได้กับ Claude", "imageEdits": "การแก้ไขภาพ", @@ -4022,40 +4022,40 @@ "batchApiDesc": "ประมวลผลคำขอจำนวนมากแบบอะซิงโครนัส (เข้ากันได้กับ OpenAI)", "filesApi": "ไฟล์ API", "filesApiDesc": "อัปโหลดและจัดการไฟล์สำหรับการประมวลผลเป็นชุด", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "การสร้างวิดีโอ", + "videoDesc": "สร้างวิดีโอโดยใช้โมเดล AI เช่น ComfyUI และ Stable Video Diffusion", + "tailscaleRequestFailed": "โหลดสถานะ Tailscale ไม่สำเร็จ", + "tailscaleEnableFailed": "เปิดใช้งาน Tailscale Funnel ไม่สำเร็จ", + "tailscaleWaitingForLogin": "เข้าสู่ระบบ Tailscale ให้เสร็จสมบูรณ์ในแท็บเบราว์เซอร์ที่เปิดขึ้น OmniRoute จะลองอีกครั้งโดยอัตโนมัติ", + "tailscaleLoginTimedOut": "หมดเวลารอการเข้าสู่ระบบ Tailscale", + "tailscaleWaitingForFunnel": "เปิดใช้งาน Funnel สำหรับอุปกรณ์นี้ในแท็บเบราว์เซอร์ที่เปิดขึ้น OmniRoute จะตรวจสอบสถานะต่อไป", + "tailscaleFunnelTimedOut": "หมดเวลารอการเปิดใช้งาน Tailscale Funnel", + "tailscaleStarted": "เปิดใช้งาน Tailscale Funnel แล้ว", + "tailscaleDisableFailed": "ปิดใช้งาน Tailscale Funnel ไม่สำเร็จ", + "tailscaleStopped": "ปิดใช้งาน Tailscale Funnel แล้ว", + "tailscaleInstallFailed": "ติดตั้ง Tailscale ไม่สำเร็จ", + "tailscaleInstallProgress": "กำลังดำเนินการ...", + "tailscaleInstalled": "ติดตั้ง Tailscale สำเร็จแล้ว", + "tailscaleRunning": "กำลังทำงาน", + "tailscaleNeedsLogin": "ต้องเข้าสู่ระบบ", + "tailscaleStoppedState": "หยุดทำงานแล้ว", + "tailscaleNotInstalled": "ยังไม่ได้ติดตั้ง", + "tailscaleUnsupported": "ไม่รองรับ", + "tailscaleError": "ข้อผิดพลาด", + "tailscaleDisable": "หยุด Funnel", + "tailscaleInstallAndEnable": "ติดตั้งและเปิดใช้งาน", + "tailscaleLoginAndEnable": "เข้าสู่ระบบและเปิดใช้งาน", + "tailscaleEnable": "เปิดใช้งาน Funnel", + "tailscaleUrlNotice": "ใช้ที่อยู่ .ts.net ของ Tailscale คุณ อาจต้องเข้าสู่ระบบและอนุมัติ Funnel ในการใช้งานครั้งแรก", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "ยืนยันตัวตนของเครื่องนี้กับ Tailscale แล้วเปิดใช้งาน Funnel", + "tailscaleBinaryPath": "ไฟล์ไบนารี: {path}", + "tailscaleLastError": "ข้อผิดพลาดล่าสุด: {error}", + "tailscaleInstallTitle": "ติดตั้ง Tailscale", + "tailscaleInstallIntro": "ติดตั้ง Tailscale บนเครื่องนี้และเตรียม OmniRoute ให้พร้อมสำหรับการเปิดใช้งาน Funnel", + "tailscaleInstallPasswordHint": "บน macOS และ Linux อาจต้องใช้ sudo เพื่อติดตั้งแพ็กเกจและเริ่มต้นดีมอน", + "tailscaleSudoPlaceholder": "รหัสผ่าน sudo (ไม่บังคับ)", + "tailscaleInstalling": "กำลังติดตั้ง", "tailscaleSudoLabel": "รหัสผ่าน Sudo (จำเป็นบน macOS/Linux)", "ngrokTitle": "อุโมงค์งรก", "ngrokRunning": "วิ่ง", @@ -4089,9 +4089,9 @@ "statusRunning": "กำลังทำงาน", "tunnels": "ทันเนล", "activeTunnelCount": "ใช้งานอยู่ {active} / {total}", - "badgeLocal": "LOCAL", - "badgeProtected": "PROTECTED", - "badgeInternal": "INTERNAL", + "badgeLocal": "ภายในเครื่อง", + "badgeProtected": "ได้รับการป้องกัน", + "badgeInternal": "ภายใน", "catalogLoadFailed": "การขอแค็ตตาล็อก API ล้มเหลวด้วย HTTP {status}", "catalogLoadFailedGeneric": "โหลดแค็ตตาล็อก API ล้มเหลว", "apiKeysLoadFailed": "โหลดคีย์ API ล้มเหลว ({status})", @@ -4108,7 +4108,7 @@ "all": "ทั้งหมด", "more": "อีก +{count}", "showInternalTooltip": "แสดงหรือซ่อนเส้นทางภายใน (ซ่อนไว้โดยค่าเริ่มต้น)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "การยืนยันตัวตนแบบ Bearer", "requestBody": "เนื้อหาคำขอ", "close": "ปิด", "tryIt": "ลองใช้งาน", @@ -4118,7 +4118,7 @@ "enterManually": "ป้อนด้วยตนเอง", "pasteApiKey": "วางคีย์ API ของคุณที่นี่", "noActiveApiKeys": "ไม่พบคีย์ API ที่ใช้งานอยู่ สลับไปที่การป้อนข้อมูลด้วยตนเองเพื่อวางคีย์", - "requestBodyJson": "Request Body (JSON)", + "requestBodyJson": "เนื้อหาคำขอ (JSON)", "sending": "กำลังส่ง...", "sendRequest": "ส่งคำขอ", "dataSchemas": "สกีมาข้อมูล", @@ -4128,7 +4128,7 @@ "vscodeAliasDescriptionLoading": "กำลังโหลดคีย์ CLI จะแสดง URL ตัวแทนจนกว่าจะมีคีย์พร้อมใช้งาน", "vscodeAliasDescriptionPlaceholder": "กำลังแสดง URL ตัวแทน สร้างหรือเปิดใช้งานคีย์ API ในเครื่องมือ CLI เพื่อแทนที่ TOKEN", "vscodeAliasManage": "เครื่องมือ CLI", - "vscodeAliasBaseLabel": "VS Code base", + "vscodeAliasBaseLabel": "ฐาน VS Code", "vscodeAliasModelsLabel": "โมเดล VS Code", "vscodeAliasChatLabel": "แชท VS Code", "localServer": "เซิร์ฟเวอร์ท้องถิ่น", @@ -4139,14 +4139,14 @@ "badgeInternalTooltip": "นี่คือปลายทางระบบภายใน", "tierAll": "ทั้งหมด", "tierAuth": "ผ่านการตรวจสอบสิทธิ์แล้ว", - "tierLoopback": "Loopback", + "tierLoopback": "ลูปแบ็ก", "tierAlwaysProtected": "ได้รับการป้องกันเสมอ", "tierPublic": "สาธารณะ", "hideInternal": "ซ่อนระบบภายใน", "showInternal": "แสดงระบบภายใน", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "พรอมต์ระบบแบบกำหนดเอง", + "customSystemPromptDescription": "แทรกพรอมต์ระบบแบบกำหนดเองลงในทุกคำขอไปยังโมเดล", + "customSystemPromptPlaceholder": "เช่น ตอบด้วยสำนวนโจรสลัดเสมอ...", "obsidianEnterToken": "โปรดป้อนโทเค็น Obsidian API", "obsidianConnectFailed": "เชื่อมต่อล้มเหลว", "obsidianConnectionFailed": "การเชื่อมต่อล้มเหลว", @@ -4176,7 +4176,7 @@ "obsidianDisable": "ปิดใช้งาน", "obsidianConfigureMobile": "กำหนดค่า Obsidian บนมือถือ", "obsidianMobileInstructions": "ใน Obsidian บนมือถือ: การตั้งค่า → ซิงค์ → WebDAV → ป้อนข้อมูลต่อไปนี้:", - "obsidianWebdavUrl": "WebDAV URL", + "obsidianWebdavUrl": "URL ของ WebDAV", "obsidianUsername": "ชื่อผู้ใช้", "obsidianPassword": "รหัสผ่าน", "obsidianTailscaleHint": "ใช้ Tailscale IP ของคุณแทน localhost หากเชื่อมต่อจากมือถือ อุปกรณ์ทั้งสองเครื่องต้องอยู่ในเครือข่าย Tailscale เดียวกัน", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "กำหนดค่าโทเค็นแล้ว เครื่องมือ Notion สามารถใช้งานได้ผ่าน MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "พร็อกซีปลายทาง", + "tabApiEndpoints": "ปลายทาง API", + "apiEndpointsTitle": "ปลายทาง API", + "apiEndpointsDescription": "ปลายทาง API ของแบ็กเอนด์ที่แอปพลิเคชันและบริการอื่นสามารถเรียกใช้ได้ ส่วนนี้จะแสดง REST API ที่พร้อมใช้งานทั้งหมด พร้อมเอกสารประกอบและความสามารถในการทดสอบ", + "comingSoon": "เร็ว ๆ นี้", + "plannedFeatures": "ฟีเจอร์ที่วางแผนไว้", + "featureRestApi": "แคตตาล็อก REST API endpoint พร้อมเอกสารแบบโต้ตอบ", + "featureWebhooks": "การกำหนดค่า Webhook และการสมัครรับเหตุการณ์", + "featureSwagger": "การสร้างข้อกำหนด OpenAPI / Swagger โดยอัตโนมัติ", + "featureAuth": "การจัดการ API key และขอบเขต OAuth สำหรับแต่ละ endpoint" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "กำลังโหลดแดชบอร์ด MCP...", + "activate": "เปิดใช้งาน", + "deactivate": "ปิดใช้งาน", + "confirmSwitchCombo": "ยืนยันการ{action}คอมโบ \"{combo}\" หรือไม่", + "switchComboFailed": "ไม่สามารถเปลี่ยนสถานะคอมโบได้", + "switchComboSuccess": "อัปเดตคอมโบ \"{combo}\" แล้ว", + "confirmApplyProfile": "ใช้โปรไฟล์ความยืดหยุ่น \"{profile}\" หรือไม่", + "applyProfileFailed": "ไม่สามารถใช้โปรไฟล์ความยืดหยุ่นได้", + "applyProfileSuccess": "ใช้โปรไฟล์ \"{profile}\" แล้ว", + "confirmResetBreakers": "รีเซ็ต circuit breaker ทั้งหมดหรือไม่", + "resetBreakersFailed": "ไม่สามารถรีเซ็ต circuit breaker ได้", + "resetBreakersSuccess": "รีเซ็ต circuit breaker แล้ว", + "processStatus": "สถานะกระบวนการ", "online": "Online", "offline": "Offline", "disableLabel": "ปิดใช้งาน {label}", @@ -4237,119 +4237,119 @@ "mcpStep2": "กำหนดค่าไคลเอนต์ MCP ของคุณเพื่อเชื่อมต่อผ่านการรับส่งข้อมูล stdio", "mcpStep3": "เรียกใช้เครื่องมือ เช่น {code1} และ {code2}", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "ระยะเวลาทำงานของเซสชัน", + "lastHeartbeat": "Heartbeat ล่าสุด", + "activity24h": "กิจกรรม (24 ชม.)", + "totalCalls": "จำนวนการเรียกทั้งหมด", + "successRate": "อัตราความสำเร็จ", + "avgLatency": "เวลาแฝงเฉลี่ย", + "topTools": "เครื่องมือที่ใช้มากที่สุด", + "noToolCalls24h": "ไม่มีการเรียกใช้เครื่องมือในช่วง 24 ชั่วโมงที่ผ่านมา", + "runtimeDetails": "รายละเอียดรันไทม์", + "transport": "การรับส่งข้อมูล", + "scopesEnforced": "บังคับใช้ขอบเขต", + "yes": "ใช่", + "no": "ไม่", + "lastCall": "การเรียกครั้งล่าสุด", + "heartbeatPath": "พาธ Heartbeat", + "operationalControls": "การควบคุมการทำงาน", + "switchCombo": "สลับคอมโบ", + "inactive": "ไม่ได้ใช้งาน", + "active": "ใช้งานอยู่", + "activateCombo": "เปิดใช้งานคอมโบ", + "deactivateCombo": "ปิดใช้งานคอมโบ", + "applyResilienceProfile": "ใช้โปรไฟล์ความทนทาน", + "profileAggressive": "เชิงรุก", + "profileBalanced": "สมดุล", + "profileConservative": "ระมัดระวัง", + "applyProfile": "ใช้โปรไฟล์", + "resetCircuitBreakers": "รีเซ็ตเซอร์กิตเบรกเกอร์", + "resetCircuitBreakersHelp": "ล้างสถานะเบรกเกอร์และตัวนับความล้มเหลวปัจจุบันสำหรับผู้ให้บริการ", + "resetAllBreakers": "รีเซ็ตเบรกเกอร์ทั้งหมด", + "toolsAndScopes": "เครื่องมือและขอบเขต", + "tableTool": "เครื่องมือ", + "tableScopes": "ขอบเขต", + "tablePhase": "ระยะ", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "บันทึกการตรวจสอบ", + "auditSummary": "การเรียก: {total} | หน้า {page} จาก {totalPages}", + "allTools": "เครื่องมือทั้งหมด", + "allResults": "ผลลัพธ์ทั้งหมด", + "success": "สำเร็จ", + "failure": "ล้มเหลว", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", + "loadingAuditEntries": "กำลังโหลดรายการบันทึกการตรวจสอบ...", + "noAuditEntriesForFilters": "ไม่พบรายการบันทึกการตรวจสอบสำหรับตัวกรองปัจจุบัน", + "tableTimestamp": "ประทับเวลา", + "tableDuration": "ระยะเวลา", "tableResult": "ผลลัพธ์", "tableApiKey": "คีย์เอพีไอ", "failed": "ล้มเหลว", "previous": "ก่อนหน้า", "next": "ต่อไป", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "apiKeyId": "รหัสคีย์ API", + "offset": "ออฟเซ็ต", + "limit": "ขีดจำกัด", + "tool": "เครื่องมือ" }, "a2aDashboard": { "loading": "กำลังโหลดแดชบอร์ด A2A...", "confirmCancelTask": "ยกเลิกงาน {taskId}?", "cancelTaskFailed": "ยกเลิกงานไม่สำเร็จ", "cancelTaskSuccess": "งาน {taskId} ถูกยกเลิก", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "smokeSendFailed": "การทดสอบเบื้องต้นของ message/send ล้มเหลว", + "smokeSendSuccessWithTask": "message/send ทำงานปกติ (งาน {taskId})", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "การทดสอบเบื้องต้นของ message/stream ล้มเหลว", + "smokeStreamSuccessWithTask": "message/stream ทำงานปกติ (งาน {taskId}{stateSuffix})", + "smokeStreamNoTaskId": "message/stream เสร็จสิ้นโดยไม่มีรหัสงาน", + "health": "สถานะระบบ", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "งานทั้งหมด", + "activeStreams": "สตรีมที่ใช้งานอยู่", + "lastTask": "งานล่าสุด", + "taskStateOverview": "ภาพรวมสถานะงาน", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", + "submitted": "ส่งแล้ว", + "working": "กำลังทำงาน", + "completed": "เสร็จสมบูรณ์", "failed": "ล้มเหลว", - "cancelled": "cancelled" + "cancelled": "ยกเลิกแล้ว" }, - "agentCard": "Agent card", + "agentCard": "การ์ดเอเจนต์", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "เวอร์ชัน", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", + "capabilities": "ความสามารถ", + "agentCardNotAvailable": "ไม่มีการ์ดเอเจนต์", + "quickValidation": "การตรวจสอบอย่างรวดเร็ว", + "quickValidationDescription": "ดำเนินการเรียกทดสอบเบื้องต้นผ่านปลายทาง `/a2a` ที่ใช้งานจริง", + "runMessageSend": "เรียกใช้ message/send", + "runMessageStream": "เรียกใช้ message/stream", + "taskManagement": "การจัดการงาน", + "taskSummary": "{total} งาน | หน้า {page} จาก {totalPages}", + "allStates": "ทั้งหมด", + "allSkills": "ทักษะทั้งหมด", + "loadingTasks": "กำลังโหลดงาน...", + "noTasksForFilters": "ไม่พบงานสำหรับตัวกรองปัจจุบัน", + "tableTask": "งาน", + "tableSkill": "ทักษะ", + "tableState": "สถานะ", + "tableUpdated": "อัปเดตเมื่อ", + "tableActions": "การดำเนินการ", + "view": "ดู", + "cancel": "ยกเลิก", "previous": "ก่อนหน้า", "next": "ต่อไป", - "taskDetail": "Task detail", - "close": "Close", + "taskDetail": "รายละเอียดงาน", + "close": "ปิด", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "เหตุการณ์", + "artifacts": "อาร์ติแฟกต์", + "tablePhase": "เฟสของตาราง", + "offset": "ออฟเซ็ต", + "limit": "ขีดจำกัด", + "skill": "ทักษะ", "rpcEndpoint": "โพสต์ /a2a", "rpcMethodSend": "ข้อความ/ส่ง", "rpcMethodStream": "ข้อความ/สตรีม", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "การดำเนินการ", + "addMemory": "เพิ่มหน่วยความจำ", + "allTypes": "ทุกประเภท", "cancel": "ยกเลิก", "checkHealth": "ตรวจสุขภาพ", "checkingHealth": "กำลังตรวจสอบ...", @@ -4382,13 +4382,13 @@ "howWorksToggle": "วิธีการทำงาน", "howWorksContent": "1. การแยกข้อมูลอัตโนมัติ: เมื่อสิ้นสุดการตอบกลับแต่ละครั้ง ข้อเท็จจริงและเหตุการณ์จะถูกตรวจจับและบันทึกโดยอัตโนมัติ.\n2. การดึงข้อมูล: ก่อนการตอบกลับแต่ละครั้ง ความจำที่เกี่ยวข้องมากที่สุดจะถูกค้นหาผ่าน FTS5 (ตรงตัว), เวกเตอร์ (เชิงความหมาย) หรือ RRF แบบไฮบริด.\n3. การแทรกข้อมูล: ความจำที่เกี่ยวข้องจะถูกแทรกลงในบริบทของผู้ช่วยเพื่อปรับปรุงคุณภาพการตอบกลับ.\n4. การจัดการ: ใช้หน้านี้เพื่อดู แก้ไข ส่งออก และบีบอัดความจำเก่า." }, - "content": "Content", + "content": "เนื้อหา", "contentPlaceholder": "ค่าหรือเนื้อหา JSON ที่ต้องจดจำ", - "created": "Created", - "delete": "Delete", + "created": "สร้างเมื่อ", + "delete": "ลบ", "deleteConfirmDesc": "การดำเนินการนี้ไม่สามารถยกเลิกได้. ความจำจะถูกลบออกอย่างถาวร.", "deleteConfirmTitle": "ลบความจำหรือไม่?", - "description": "View and manage stored memory entries", + "description": "ดูและจัดการรายการหน่วยความจำที่จัดเก็บไว้", "editMemory": "แก้ไขความจำ", "editModal": { "title": "แก้ไขความจำ", @@ -4433,7 +4433,7 @@ "reindexFailed": "เริ่มการสร้างดัชนีใหม่ไม่สำเร็จ", "keywordLabel": "คีย์เวิร์ด (FTS5)", "keywordReason": "การค้นหาด้วยคีย์เวิร์ดพร้อมใช้งานเสมอ", - "embeddingLabel": "Embedding", + "embeddingLabel": "การฝังเวกเตอร์", "vectorStoreLabel": "ที่จัดเก็บเวกเตอร์", "qdrantLabel": "Qdrant", "rerankLabel": "การจัดอันดับใหม่", @@ -4444,20 +4444,20 @@ "configureCta": "กำหนดค่า", "vectorStoreInstallHint": "หากต้องการเปิดใช้งานการค้นหาแบบเวกเตอร์: npm install sqlite-vec (ต้องใช้ Node.js แบบเนทีฟ ไม่ใช่ WASM) จากนั้นรีสตาร์ท" }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "เชิงเหตุการณ์", + "export": "ส่งออก", + "factual": "เชิงข้อเท็จจริง", "healthUnknown": "สุขภาพไม่ทราบ", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "อัตราการค้นพบ", + "import": "นำเข้า", "importError": "นำเข้าไฟล์ไม่สำเร็จ", "importResult": "นำเข้าแล้ว {imported} รายการ, ข้าม {skipped} รายการ", - "key": "Key", + "key": "คีย์", "keyPlaceholder": "เช่น user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "หน่วยความจำ", "next": "ถัดไป", - "noMemories": "No memories found", + "noMemories": "ไม่พบหน่วยความจำ", "pageInfo": "หน้า {page} จาก {totalPages} (รวม {total})", "pipelineError": "ข้อผิดพลาดไปป์ไลน์", "pipelineOk": "ไปป์ไลน์ตกลง ({latencyMs}ms)", @@ -4474,7 +4474,7 @@ "simulate": "จำลอง", "resultsTitle": "{count} ผลลัพธ์", "resolutionTitle": "การประมวลผลการค้นหา", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "การฝังข้อมูล", "resolutionStore": "ที่จัดเก็บเวกเตอร์", "resolutionStrategy": "กลยุทธ์ที่ใช้", "rerankApplied": "ใช้การจัดอันดับใหม่", @@ -4485,7 +4485,7 @@ "errorFetch": "ดึงข้อมูลตัวอย่างไม่สำเร็จ" }, "previous": "ก่อนหน้า", - "procedural": "Procedural", + "procedural": "เชิงกระบวนการ", "qdrant": { "title": "Qdrant (ที่จัดเก็บเวกเตอร์ Tier 2)", "description": "การผสานรวม Qdrant เสริมสำหรับการค้นหาเชิงความหมายที่ปรับขนาดได้", @@ -4534,8 +4534,8 @@ }, "save": "บันทึก", "saving": "กำลังบันทึก...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "ค้นหาหน่วยความจำ...", + "semantic": "เชิงความหมาย", "summarize": { "title": "บีบอัดความจำเก่า", "noCandidates": "ไม่มีความจำที่เข้าเกณฑ์การบีบอัด (เกณฑ์: เก่ากว่า 30 วัน).", @@ -4544,11 +4544,11 @@ }, "tabs": { "memories": "ความจำ", - "playground": "Playground", + "playground": "พื้นที่ทดลอง", "engine": "เอนจิน" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "การจัดการหน่วยความจำ", + "tokensUsed": "โทเค็นที่ใช้", "tooltip": { "totalEntries": "ความทรงจำทั้งหมดที่จัดเก็บไว้สำหรับคีย์ API นี้", "tokensUsed": "โทเค็นทั้งหมดโดยประมาณที่ใช้โดยความทรงจำที่ใช้งานอยู่", @@ -4558,15 +4558,15 @@ "procedural": "ขั้นตอน เวิร์กโฟลว์ และคำแนะนำที่ผู้ช่วยควรปฏิบัติตาม", "semantic": "แนวคิด ค่ากำหนด และความรู้เฉพาะโดเมน" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "รายการทั้งหมด", + "type": "ประเภท", "memoryEnabled": "เปิดใช้งานความทรงจำแล้ว" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "ทักษะ", + "description": "จัดการและตรวจสอบทักษะ AI", + "skillsTab": "ทักษะ", + "executionsTab": "การดำเนินการ", "selectSkillToInspect": "เลือกทักษะทางด้านซ้ายเพื่อตรวจสอบ", "schemaTab": "สกีมา", "handlerTab": "ตัวจัดการ", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "เรียกใช้การทดสอบ (ตัวยึดตำแหน่ง)", "setModeAria": "ตั้งค่าโหมด {mode}", "uninstallSkill": "ถอนการติดตั้งทักษะ", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "แซนด์บ็อกซ์", + "loading": "กำลังโหลดทักษะ...", + "noSkills": "ไม่พบทักษะ", + "noExecutions": "ไม่พบการดำเนินการ", + "enabled": "เปิดใช้งาน", + "disabled": "ปิดใช้งาน", "delete": "ลบ", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "เวอร์ชัน", + "tableDescription": "คำอธิบาย", + "skill": "ทักษะ", + "status": "สถานะ", + "duration": "ระยะเวลา", + "time": "เวลา", + "sandboxConfig": "การกำหนดค่าแซนด์บ็อกซ์", + "cpuLimit": "ขีดจำกัด CPU", + "cpuLimitDesc": "เวลาดำเนินการสูงสุดต่อทักษะ", + "memoryLimit": "ขีดจำกัดหน่วยความจำ", + "memoryLimitDesc": "การจัดสรรหน่วยความจำสูงสุด", + "timeout": "หมดเวลา", + "timeoutDesc": "เวลารอสูงสุดสำหรับการตอบกลับ", + "networkAccess": "การเข้าถึงเครือข่าย", + "networkAccessDesc": "อนุญาตคำขอเครือข่ายขาออก", + "mode": "โหมด", "q": "Q", "filterSkillsPlaceholder": "กรองทักษะตามชื่อ คำอธิบาย หรือแท็ก", "allModes": "ทุกโหมด", @@ -4665,13 +4665,13 @@ "retry": "ลองอีกครั้ง", "allOperational": "ใช้งานได้ทุกระบบ", "issuesDetected": "ตรวจพบปัญหาของระบบ", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute พร้อมใช้งาน", + "healthVerdictActionRequired": "ต้องดำเนินการเพื่อให้ระบบกลับมาทำงานได้เต็มรูปแบบ", + "healthVerdictCoolingDown": "กำลังพักหลังจากการเปลี่ยนแปลงล่าสุด", + "healthSubtitle": "การตรวจสอบสถานะระบบ", + "advancedDiagnosticsTitle": "การวินิจฉัยขั้นสูง", + "hide": "ซ่อน", + "show": "แสดง", "updatedAt": "อัปเดต {time}", "latency": "เวลาแฝง", "latencyP50": "หน้า 50", @@ -4698,9 +4698,9 @@ "providers": "ผู้ให้บริการ", "configuredProvidersLabel": "กำหนดค่าในแดชบอร์ด", "configuredProvidersHint": "ผู้ให้บริการที่มีข้อมูลรับรองบันทึกไว้ใน /dashboard/providers โดยไม่คำนึงถึงสถานะรันไทม์", - "activeProviders": "{count} active", + "activeProviders": "ใช้งานอยู่ {count} รายการ", "activeProvidersHint": "ผู้ให้บริการที่กำหนดค่าไว้เปิดใช้งานอยู่สำหรับการร้องขอการกำหนดเส้นทาง", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "เฝ้าติดตาม {count} รายการ", "monitoredProvidersHint": "ผู้ให้บริการในปัจจุบันได้รับการติดตามโดยเครื่องตรวจสุขภาพของเซอร์กิตเบรกเกอร์", "healthyCount": "{count} สุขภาพแข็งแรง", "nodeVersion": "โหนด {version}", @@ -4721,11 +4721,11 @@ "resetting": "กำลังรีเซ็ต...", "resetAll": "รีเซ็ตทั้งหมด", "until": "จนถึง {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "ใช้หมดแล้ว", + "learnedFromHeaders": "เรียนรู้จากส่วนหัว", + "remainingOfLimit": "เหลือ {remaining}/{limit}", + "throttleStatus": "การจำกัดอัตรา: {value}", + "lastHeaderUpdate": "อัปเดตส่วนหัว: {age}", "databaseHealth": "สุขภาพฐานข้อมูล", "databaseHealthDescription": "วินิจฉัยและซ่อมแซมแถวโควตา/โดเมนที่ค้างอยู่และการอ้างอิงคอมโบที่เสียหาย.", "status": "สถานะ", @@ -4888,28 +4888,28 @@ "previous": "ก่อนหน้า", "next": "ถัดไป", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "ดูรายละเอียด", + "eventMetadata": "ข้อมูลเมตาของเหตุการณ์", + "eventPayload": "เพย์โหลดของเหตุการณ์", + "requestId": "รหัสคำขอ", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "ออฟเซ็ต", + "limit": "ขีดจำกัด", + "status": "สถานะ", + "resourceType": "ประเภททรัพยากร", + "totalEntries": "จำนวนรายการทั้งหมด", + "tab": "แท็บ", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "ปิด", + "runningRequests": "คำขอที่กำลังใช้งาน", + "runningRequestsDesc": "มุมมองแบบเรียลไทม์ของคำขอต้นทางที่กำลังทำงาน", "clearAll": "ล้างทั้งหมด", "confirmClearActiveRequests": "ล้างคำขอที่ทำงานอยู่ทั้งหมดใช่ไหม", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "โมเดล", + "provider": "ผู้ให้บริการ", + "account": "บัญชี", + "elapsed": "เวลาที่ผ่านไป", "activeStage": "ขั้นตอน", "activeStageUnknown": "ยังไม่ได้ส่งไปยังอัปสตรีม", "activeStageRegistered": "ลงทะเบียนแล้ว", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "ได้รับสล็อต rate limit แล้ว", "activeStageSendingToProvider": "กำลังส่งไปยังอัปสตรีม", "activeStageProviderResponseStarted": "การตอบกลับจากอัปสตรีมเริ่มต้นแล้ว", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "จำนวน", + "payloads": "เพย์โหลด", + "viewPayloads": "ดู", + "activeCount": "ใช้งานอยู่ {count} รายการ", + "clientPayload": "เพย์โหลดคำขอของไคลเอนต์", + "upstreamPayload": "เพย์โหลดของผู้ให้บริการต้นทาง", + "upstreamNotSentYet": "ยังไม่ได้ส่งไปยังต้นทาง", + "runningRequestDetailMeta": "บัญชี: {account} — เวลาที่ผ่านไป: {elapsed}", + "export": "ส่งออก", + "exporting": "กำลังส่งออก...", + "exportFailed": "ส่งออกไม่สำเร็จ", "cleanHistoryButton": "ล้างประวัติ", "cleanHistoryTitle": "ล้างประวัติบันทึกหรือไม่?", "cleanHistoryMessage": "การดำเนินการนี้จะล้างแถวบันทึกคำขอ แถวรายละเอียดเดิม และไฟล์อาร์ทิแฟกต์ในเครื่องทั้งหมดภายใต้ DATA_DIR/call_logs อย่างถาวร หน้าปัจจุบันจะรีเฟรชหลังจากการล้างข้อมูล", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "ล้างรายการบันทึก {deleted} รายการ, อาร์ทิแฟกต์ {deletedArtifacts} รายการ และแถวรายละเอียดเดิม {deletedDetailedLogs} แถวแล้ว", "cleanHistoryEmpty": "ไม่พบประวัติบันทึกคำขอ", "cleanHistoryFailed": "ล้างประวัติบันทึกไม่สำเร็จ", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "ช่วงเวลา", + "lastNHours": "{hours} ล่าสุด", + "defaultRange": "ค่าเริ่มต้น", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "ดึงบันทึกไม่สำเร็จ", + "copyFailed": "คัดลอกรายการบันทึกไม่สำเร็จ", + "copyLogEntry": "คัดลอกรายการบันทึก", "filterByLevel": "กรองตามระดับบันทึก", "searchPlaceholder": "ค้นหาบันทึก…", "searchAria": "ค้นหารายการบันทึก", @@ -4987,9 +4987,9 @@ "multiProvider": "ผู้ให้บริการหลายราย", "usageTracking": "การติดตามการใช้งาน", "securityDesc": "ตั้งรหัสผ่านเพื่อปกป้องแดชบอร์ดของคุณ หรือข้ามไปก่อน", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ หากไม่มีรหัสผ่าน คุณจะไม่สามารถเพิ่มผู้ให้บริการระหว่างการตั้งค่าได้ คุณสามารถเพิ่มได้ภายหลังจากแดชบอร์ดหลังจากตั้งรหัสผ่านแล้ว", "providerDesc": "เชื่อมต่อผู้ให้บริการ AI รายแรกของคุณ คุณสามารถเพิ่มมากขึ้นในภายหลัง", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "คุณต้องตั้งรหัสผ่านก่อนจึงจะเพิ่มผู้ให้บริการได้ โปรดย้อนกลับไปยังขั้นตอนความปลอดภัยและตั้งรหัสผ่าน หรือเพิ่มผู้ให้บริการภายหลังจากแดชบอร์ด", "apiKeyRequired": "คีย์ API (จำเป็น)", "customUrlOptional": "URL ที่กำหนดเอง (ไม่บังคับ)", "testDesc": "มาตรวจสอบการเชื่อมต่อผู้ให้บริการของคุณใช้งานได้", @@ -5065,7 +5065,7 @@ "importFromFileSelectHint": "เลือกแล้ว {count} จาก {total}", "importFromFileColProvider": "ผู้ให้บริการ", "importFromFileColName": "ชื่อ", - "importFromFileColBaseUrl": "Base URL", + "importFromFileColBaseUrl": "URL ฐาน", "importFromFileErrorLine": "แถว {line}: {reason}", "importErrorMissingProvider": "ไม่มีข้อมูลผู้ให้บริการ", "importErrorMissingName": "ไม่มีข้อมูลชื่อ", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "กำลังนำเข้า…", "importFromFileImport": "นำเข้าผู้ให้บริการ {count} ราย", "importFromFileResult": "นำเข้าผู้ให้บริการสำเร็จ {success} ราย (ล้มเหลว {failed} ราย)", + "importFromFileDownloadTemplate": "ดาวน์โหลดเทมเพลต CSV", + "importFromFileMoreErrors": "อีก +{count} รายการ", + "importFromFileSchemaHint": "คอลัมน์ CSV เรียงตามตำแหน่งดังนี้: provider, name, apiKey, baseUrl (ไม่บังคับ), priority (ไม่บังคับ) คอลัมน์ provider ต้องเป็น ID ของผู้ให้บริการที่มีการจัดการอยู่แล้ว หรือ ID โหนดที่เข้ากันได้กับ OpenAI/Anthropic และลงทะเบียนไว้แล้ว — การนำเข้านี้จะไม่สร้างโหนดปลายทางใหม่", "adaptaTutorial": { "title": "วิธีเชื่อมต่อ Adapta Web", "introPrefix": "Adapta ยืนยันตัวตนผ่าน Clerk โทเค็น", @@ -5165,8 +5168,8 @@ "modelsHiddenCount": "ซ่อนอยู่ {count} รายการ", "warningCount": "{count} คำเตือน", "noConnections": "ไม่มีการเชื่อมต่อ", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "หมดอายุแล้ว", + "expiringSoonBadge": "ใกล้หมดอายุ", "freeTier": "ฟรีเทียร์", "freeTierAvailable": "มีเทียร์ฟรี", "hasFreeTooltip": "มีระดับใช้งานฟรี", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "ผู้ให้บริการรายนี้เลิกใช้แล้ว", "riskNotice": { "title": "ก่อนดำเนินการต่อ", - "detailsTitle": "Usage caveats", + "detailsTitle": "ข้อควรระวังในการใช้งาน", "tooltip": "ผู้ให้บริการที่มีข้อควรระวังในการใช้งาน — คลิกเพื่อดูรายละเอียด", "oauth": "ผู้ให้บริการรายนี้ใช้เซสชันผลิตภัณฑ์อย่างเป็นทางการ/OAuth ของคุณ ซึ่งไม่ได้รับอนุญาตให้ใช้กับพร็อกซี/เราเตอร์ เราไม่แนะนำให้ใช้งานเอเจนต์อัตโนมัติอย่างหนักหน่วง (เช่น สไตล์ OpenCloud, โฟลว์หลายขั้นตอนที่ยาวนาน, การประมวลผลแบบกลุ่มขนาดใหญ่) — ต้นทางอาจตอบสนองโดยการจำกัดหรือแบนบัญชี ใช้งานโดยยอมรับความเสี่ยงด้วยตนเอง", "webCookie": "ผู้ให้บริการรายนี้ยืนยันตัวตนผ่านคุกกี้เซสชันเว็บของคุณ บริการต้นทางอาจทำให้เซสชันหมดอายุเมื่อใดก็ได้ ซึ่งจะทำให้คุณต้องเข้าสู่ระบบใหม่อีกครั้ง ไม่แนะนำสำหรับการทำงานระยะยาวที่ไม่มีการเฝ้าดูแล ใช้งานโดยยอมรับความเสี่ยงด้วยตนเอง", @@ -5188,9 +5191,9 @@ "cancel": "ยกเลิก" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "มีการตั้งค่าสถานะการเชื่อมต่อ {count} รายการ — พบความล้มเหลวล่าสุดสูงสุด {maxFailures} ครั้ง{lastFailureSuffix} คลิกเพื่อดูสถานะการเชื่อมต่อ", + "lastFailureSuffix": "(ล้มเหลวล่าสุดเมื่อ {time})", + "ariaLabel": "ดูรายละเอียดสถานะการเชื่อมต่อ มีคำเตือน {count} รายการ" }, "disabled": "ปิดการใช้งาน", "enableProvider": "เปิดใช้งานผู้ให้บริการ", @@ -5225,7 +5228,7 @@ "failedCreate": "ไม่สามารถสร้างผู้ให้บริการได้", "errorOccurred": "เกิดข้อผิดพลาด โปรดลองอีกครั้ง", "modelStatus": "สถานะโมเดล", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "เฉพาะที่กำหนดค่าไว้", "allModelsOperational": "ใช้งานได้ทุกรุ่น", "modelsWithIssues": "{count} โมเดลที่มีปัญหา", "allModelsNormal": "ทุกรุ่นตอบสนองได้ปกติ", @@ -5236,7 +5239,7 @@ "clearing": "กำลังล้างข้อมูล...", "until": "จนถึง {time}", "providerTestFailed": "การทดสอบผู้ให้บริการล้มเหลว", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "การทดสอบผู้ให้บริการหมดเวลา — มีการเชื่อมต่อที่ต้องทดสอบพร้อมกันมากเกินไป", "modeTest": "{mode} ทดสอบ", "passedCount": "{count} ผ่านไป", "failedCount": "{count} ล้มเหลว", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL ไอคอน", "iconUrlHint": "ไม่บังคับ URL รูปภาพที่จะแสดงเป็นไอคอนของผู้ให้บริการรายนี้", "iconUrlInvalid": "URL ไอคอนไม่ถูกต้อง ใช้ http(s):// หรือ data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "เขตเวลาสำหรับรีเซ็ตโควต้ารายวัน", + "dailyQuotaResetTimezoneHint": "เขตเวลา IANA ซึ่งไม่บังคับ ใช้เมื่อต้นทางไม่ได้ระบุ X-RateLimit-Reset เว้นว่างไว้เพื่อใช้ช่วงพักสั้น ๆ ต่อไป", + "dailyQuotaResetHourLabel": "ชั่วโมงที่รีเซ็ตโควต้ารายวัน", + "dailyQuotaResetHourHint": "ชั่วโมงท้องถิ่น 0-23 ในเขตเวลาด้านบน เว้นว่างหมายถึงไม่มีนาฬิการะดับโหนด", "anthropicPrefixPlaceholder": "ac-ผลิตภัณฑ์", "openaiPrefixPlaceholder": "oc-ผลิตภัณฑ์", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "ไม่พบผู้ให้บริการ", "deleteConnectionConfirm": "ลบการเชื่อมต่อนี้ใช่ไหม", "deleteConnectionConfirmNamed": "คุณแน่ใจหรือไม่ว่าต้องการลบ {name}? การกระทำนี้ไม่สามารถย้อนกลับได้", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "ลบรายการที่เลือก ({count})", + "batchDeleteConfirm": "ลบการเชื่อมต่อ {count} รายการหรือไม่ การดำเนินการนี้ไม่สามารถย้อนกลับได้", + "batchDeleteSuccess": "ลบการเชื่อมต่อแล้ว {count} รายการ", "batchActivateSelected": "เปิดใช้งาน", "batchDeactivateSelected": "ปิดใช้งาน", "batchRetestSelected": "ทดสอบซ้ำ", @@ -5292,7 +5295,7 @@ "filterError": "ข้อผิดพลาด", "filterBanned": "ถูกแบน", "filterCreditsExhausted": "เครดิตหมด", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "ค้นหาบัญชี…", "noFilteredConnections": "ไม่มีการเชื่อมต่อที่ตรงกับตัวกรองปัจจุบัน", "failedSetAlias": "ไม่สามารถตั้งชื่อแทนได้", "setAliasSuccess": "ตั้งค่านามแฝง {alias} แล้ว", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "รายละเอียดที่เข้ากันได้กับ OpenAI", "messagesApi": "API ข้อความ", "responsesApi": "API การตอบสนอง", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "การฝังเวกเตอร์", + "audioTranscriptions": "การถอดเสียงจากเสียง", + "audioSpeech": "การสังเคราะห์เสียงพูด", + "imagesGenerations": "การสร้างรูปภาพ", "chatCompletions": "เสร็จสิ้นการแชท", "importingModels": "กำลังนำเข้า...", "importFromModels": "นำเข้าจาก /models", - "modelsImported": "{count} models imported", + "modelsImported": "นำเข้าโมเดลแล้ว {count} รายการ", "allModelsAlreadyImported": "นำเข้าโมเดลทั้งหมดแล้ว", "noNewModelsToImport": "ไม่มีโมเดลใหม่ที่จะนำเข้า — โมเดลทั้งหมดมีอยู่แล้วในรีจิสทรีหรือรายการโมเดลที่กำหนดเอง", "skippingExistingModels": "ข้าม {count} โมเดลที่มีอยู่", @@ -5350,13 +5353,13 @@ "importFailed": "การนำเข้าล้มเหลว", "noNewModelsAdded": "ไม่มีการเพิ่มโมเดลใหม่", "adding": "กำลังเพิ่ม...", - "close": "Close", + "close": "ปิด", "importingModelsTitle": "การนำเข้าโมเดล", "copyModel": "คัดลอกโมเดล", "filterModels": "กรองโมเดล…", "testAllRateLimited": "ถึงขีดจำกัดอัตราการใช้งานแล้ว หยุดทำงานก่อนกำหนด", "hideFailedAuto": "ซ่อนโมเดลที่ล้มเหลวโดยอัตโนมัติ", - "selectAllModels": "Select all", + "selectAllModels": "เลือกทั้งหมด", "hideAllModels": "ซ่อนทั้งหมด", "modelsActive": "ใช้งานอยู่", "showModel": "แสดงโมเดล", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "หนึ่งคีย์ต่อบรรทัด รูปแบบ: name|apiKey หรือเพียง apiKey (ตั้งชื่ออัตโนมัติตามดัชนี)", "bulkValidateKeys": "ตรวจสอบแต่ละคีย์ก่อนบันทึก (ช้ากว่า)", "bulkAddAllKeys": "เพิ่มคีย์ทั้งหมด", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {เพิ่มคีย์แล้ว # รายการ} other {เพิ่มคีย์แล้ว # รายการ}}", + "bulkFailedCount": "{count, plural, one {ล้มเหลว # รายการ} other {ล้มเหลว # รายการ}}", "optional": "ไม่จำเป็น", "anthropicCompatibleName": "เข้ากันได้กับมานุษยวิทยา", "openaiCompatibleName": "รองรับ OpenAI", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "เกิดข้อผิดพลาดที่ไม่คาดคิด", "getApiKey": "รับคีย์ API", "getApiKeyDescription": "ลงทะเบียนหรือสมัครสมาชิกเพื่อรับ API key", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# การเชื่อมต่อ} other {# การเชื่อมต่อ}}", "messagesPath": "ข้อความ", "responsesPath": "การตอบสนอง", "chatCompletionsPath": "แชท/เสร็จสิ้น", @@ -5419,17 +5422,17 @@ "configured": "กำหนดค่าแล้ว", "providerProxyConfigureHint": "กำหนดค่าพร็อกซีสำหรับการเชื่อมต่อทั้งหมดของผู้ให้บริการรายนี้", "providerProxy": "พร็อกซีของผู้ให้บริการ", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "ซ่อมแซม env", + "repairEnvWorking": "กำลังซ่อมแซม...", + "repairEnvHint": "กู้คืนค่าเริ่มต้น OAuth ที่หายไปลงใน .env โดยไม่เขียนทับค่าที่มีอยู่", + "repairEnvSuccess": "กู้คืนค่าเริ่มต้น OAuth แล้ว", + "repairEnvFailed": "ซ่อมแซม .env ไม่สำเร็จ", "noConnectionsYet": "ยังไม่มีการเชื่อมต่อ", "addFirstConnectionHint": "เพิ่มการเชื่อมต่อครั้งแรกของคุณเพื่อเริ่มต้น", "addConnection": "เพิ่มการเชื่อมต่อ", "availableModels": "รุ่นที่มีจำหน่าย", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "โมเดลในตัว", + "builtInModelsHint": "โมเดลในรีจิสทรีสำหรับผู้ให้บริการรายนี้ ใช้ไอคอนดินสอเพื่อตั้งค่าตัวเลือกความเข้ากันได้", "pageAutoRefresh": "หน้าจะรีเฟรชอัตโนมัติ...", "statusDisabled": "ปิดการใช้งาน", "statusConnected": "เชื่อมต่อแล้ว", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "ตรวจสอบการเชื่อมต่อนี้อีกครั้ง", "proxyConfig": "การกำหนดค่าพร็อกซี", "aliasExistsAlert": "มีนามแฝง \"{alias}\" อยู่แล้ว โปรดใช้โมเดลอื่นหรือแก้ไขนามแฝงที่มีอยู่", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "ชื่อแฝง", + "clickToSetAlias": "คลิกเพื่อตั้งชื่อแฝง", + "clickToEditAlias": "ชื่อแฝง: {alias} (คลิกเพื่อแก้ไข)", "openRouterAnyModelHint": "OpenRouter รองรับทุกรุ่น เพิ่มโมเดลและสร้างนามแฝงเพื่อการเข้าถึงที่รวดเร็ว", "modelIdFromOpenRouter": "รหัสรุ่น (จาก OpenRouter)", "openRouterModelPlaceholder": "มานุษยวิทยา / Claude-3-opus", "customModels": "โมเดลที่กำหนดเอง", "customModelsHint": "เพิ่มรหัสรุ่นที่ไม่ได้อยู่ในรายการเริ่มต้น สิ่งเหล่านี้จะพร้อมใช้งานสำหรับการกำหนดเส้นทาง", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "ปรับ ID การเรียกใช้เครื่องมือให้เป็น 9 อักขระ (เช่น Mistral)", + "preserveDeveloperRoleLabel": "คงบทบาท developer ของ OpenAI Responses ไว้ (ไม่แมปเป็น system)", + "compatAdjustmentsTitle": "ความเข้ากันได้", + "compatButtonLabel": "ความเข้ากันได้", + "compatToolIdShort": "ID เครื่องมือ 9 อักขระ", + "compatDeveloperShort": "บทบาท developer", + "compatDoNotPreserveDeveloper": "ไม่คงบทบาท developer ไว้", + "compatBadgeNoPreserve": "ไม่คงไว้", + "compatProtocolLabel": "โปรโตคอลคำขอของไคลเอนต์", + "compatProtocolHint": "ตัวเลือกเหล่านี้จะมีผลเมื่อ OmniRoute ตรวจพบรูปแบบคำขอนี้ (OpenAI Chat, Responses API หรือ Anthropic Messages)", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5513,7 +5516,7 @@ "paramFiltersSectionTitle": "ตัวกรองพารามิเตอร์", "paramFiltersSectionHint": "ตัดออกหรือเพิ่มพารามิเตอร์คำขอกลับเข้าไปใหม่ก่อนส่งไปยังผู้ให้บริการนี้ ใช้เพื่อหลีกเลี่ยงข้อผิดพลาด 400 จากผู้ให้บริการที่ปฏิเสธพารามิเตอร์บางตัว (เช่น NVIDIA NIM ปฏิเสธ thinking)", "paramFiltersBlockedLabel": "พารามิเตอร์ที่ถูกบล็อก", - "paramFiltersBlockedHint": "These params are stripped from outgoing requests (denylist).", + "paramFiltersBlockedHint": "พารามิเตอร์เหล่านี้จะถูกนำออกจากคำขอขาออก (รายการปฏิเสธ)", "paramFiltersAllowedLabel": "พารามิเตอร์ที่อนุญาต", "paramFiltersAllowedHint": "พารามิเตอร์เหล่านี้จะถูกเพิ่มกลับเข้าไปใหม่หลังจากตัดรายการปฏิเสธออกแล้ว (เฉพาะในกรณีที่ไคลเอนต์ส่งมาเท่านั้น)", "paramFiltersAutoLearnLabel": "เรียนรู้อัตโนมัติจากข้อผิดพลาด 400", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "เขียนทับการเรียกใช้เครื่องมือ web_fetch ดั้งเดิมไปยัง /v1/web/fetch ของ OmniRoute", "interceptionLoadError": "โหลดการตั้งค่าการสกัดกั้นล้มเหลว: {error}", "interceptionSaveError": "บันทึกการตั้งค่าการสกัดกั้นล้มเหลว: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "แสดงใน Claude Code (claude/…)", + "ccAliasSectionHint": "ประกาศโมเดลของผู้ให้บริการรายนี้ภายใต้ ID มิเรอร์ claude/<provider>/<model> เพื่อให้การค้นหาโมเดลของเกตเวย์ Claude Code แสดงโมเดลเหล่านั้นได้ ค่าเริ่มต้นคือปิด — การเปิดใช้งานจะเพิ่มรายการในแค็ตตาล็อกเป็นสองเท่าสำหรับไคลเอนต์ทั้งหมด", + "ccAliasProviderLevelLabel": "ค่าเริ่มต้นของผู้ให้บริการ", + "ccAliasModelOverridesLabel": "การแทนที่สำหรับแต่ละโมเดล", + "ccAliasModelOverrideAriaLabel": "การแทนที่สำหรับ {modelId}", + "ccAliasStateInherit": "รับค่าที่สืบทอดมา", + "ccAliasStateOn": "เปิด", + "ccAliasStateOff": "ปิด", + "ccAliasAddModelPlaceholder": "ID โมเดล (เช่น gpt-4o)", + "ccAliasAddModelButton": "เพิ่มการแทนที่", + "ccAliasLoadError": "โหลดการตั้งค่านามแฝงสำหรับการค้นหาไม่สำเร็จ: {error}", + "ccAliasSaveError": "บันทึกการตั้งค่า discovery-alias ไม่สำเร็จ: {error}", + "compatUpstreamHeadersLabel": "ส่วนหัวต้นทางเพิ่มเติม", + "compatUpstreamHeadersHint": "การตั้งค่าที่มีสิทธิ์ระดับสูง — มีระดับความน่าเชื่อถือเทียบเท่ากับการแก้ไขข้อมูลรับรอง API ของผู้ให้บริการ จึงควรใช้โดยผู้ดูแลระบบที่เชื่อถือได้เท่านั้น โดยจะผสานหลังจาก OmniRoute เพิ่มข้อมูลยืนยันตัวตนจากคีย์ API ของผู้ให้บริการ หากส่วนหัวที่กำหนดเองใช้ชื่อเดียวกับส่วนหัวที่มีอยู่ (เช่น Authorization) ค่าของคุณจะแทนที่ส่วนหัวที่สร้างโดยอัตโนมัติทั้งหมด (รวมถึงโทเค็น Bearer) — ต้นทางจะเห็นเฉพาะค่าที่คุณป้อน ไม่ใช่คีย์จากการตั้งค่า การกำหนดค่าผิดพลาดอาจทำให้เกิดข้อผิดพลาด 401 หรือทำให้การยืนยันตัวตนกับต้นทางใช้งานไม่ได้ หนึ่งแถวต่อหนึ่งส่วนหัว (เช่น Authentication เพิ่มเติมสำหรับเกตเวย์บางแห่ง) วางเมาส์เหนือหรือโฟกัสที่ค่าเพื่อดูตัวอย่าง ระบบจะบันทึกเมื่อออกจากโฟกัส คลิกภายนอก หรือปิดแผงนี้", + "compatUpstreamHeaderName": "ชื่อส่วนหัว", + "compatUpstreamHeaderValue": "ค่า", + "compatUpstreamAddRow": "เพิ่มส่วนหัว", + "compatUpstreamRemoveRow": "ลบแถว", + "compatBadgeUpstreamHeaders": "ส่วนหัว", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "นำเข้าเฉพาะโมเดลฟรี", @@ -5592,26 +5595,26 @@ "email": "อีเมล", "healthCheckMinutes": "ตรวจสุขภาพ (ขั้นต่ำ)", "healthCheckHint": "ช่วงเวลาการรีเฟรชโทเค็นเชิงรุก 0 = ปิดการใช้งาน", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "ยกเลิกการเลือกทั้งหมด", + "modelsActiveCount": "เปิดใช้งาน {active}/{total} รายการ", + "noModelsMatch": "ไม่มีโมเดลที่ตรงกับ \"{filter}\"", + "groupLabel": "สภาพแวดล้อม", + "groupPlaceholder": "เช่น eKaizen, ส่วนบุคคล", "failedTestConnection": "ทดสอบการเชื่อมต่อไม่สำเร็จ", "failed": "ล้มเหลว", "leaveBlankKeepCurrentApiKey": "เว้นว่างไว้เพื่อเก็บคีย์ API ปัจจุบันไว้", "editCompatibleTitle": "แก้ไข {type} เข้ากันได้", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "URL รากของ API ที่เข้ากันได้กับ {type} ของคุณ ใช้การตั้งค่าขั้นสูงสำหรับพาธปลายทางที่กำหนดเอง", "apiKeyForCheck": "คีย์ API (สำหรับการตรวจสอบ)", "testModelIdLabel": "ID โมเดล (ไม่บังคับ)", "testModelIdPlaceholder": "เช่น my-model-id", "testModelIdHint": "หากผู้ให้บริการไม่มีปลายทาง /models ให้ป้อน ID โมเดลเพื่อตรวจสอบความถูกต้องผ่าน /chat/completions แทน", "compatibleProdPlaceholder": "{type} เข้ากันได้ (ผลิตภัณฑ์)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "รีเฟรชโทเค็นสำเร็จแล้ว", + "tokenRefreshFailed": "รีเฟรชโทเค็นไม่สำเร็จ", "cursorSessionUnchanged": "เซสชันปัจจุบันอยู่แล้ว", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "ใช้การยืนยันตัวตน", + "exportCodexAuthFile": "ส่งออกข้อมูลยืนยันตัวตน", "applyClaudeAuthLocal": "ใช้การรับรองความถูกต้อง", "exportClaudeAuthFile": "รับรองการส่งออก", "importClaudeAuth": "นำเข้าการรับรองความถูกต้อง", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} ล้มเหลว", "codexImportBulkZipExtracting": "กำลังแตกไฟล์ ZIP...", "codexImportBulkZipError": "ไม่สามารถแยก ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "การตั้งค่าขั้นสูง", + "chatPathLabel": "พาธปลายทางแชต", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "พาธแชตที่กำหนดเองสำหรับผู้ให้บริการที่ใช้ API ซึ่งไม่เป็นไปตามมาตรฐาน (เช่น /v4/chat/completions)", + "modelsPathLabel": "พาธปลายทางโมเดล", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "พาธโมเดลที่กำหนดเองสำหรับการตรวจสอบความถูกต้อง (เช่น /v4/models)", "clientIdentityLabel": "ข้อมูลประจำตัวของไคลเอนต์", "clientIdentityHint": "ไม่บังคับ เพิ่มส่วนหัวลายนิ้วมือของไคลเอนต์ (เช่น User-Agent) ที่ตรงกับ CLI ที่รู้จักสำหรับเกตเวย์ที่เข้ากันได้ซึ่งต้องการส่วนหัวนี้", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "ปิดใช้งาน (ด้วยตนเอง)", + "statusBanned": "ถูกแบน / ละเมิดข้อกำหนดของแซนด์บ็อกซ์", + "statusCreditsExhausted": "ยอดคงเหลือไม่เพียงพอ / โควตาหมด", + "showEmails": "แสดงอีเมลทั้งหมด", + "hideEmails": "ซ่อนอีเมลทั้งหมด", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "เพิ่มคีย์ API อื่นหรือวางหลายคีย์", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "เกตเวย์ตัวรวบรวม", "enterpriseCloud": "องค์กรและคลาวด์", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "ป้ายกำกับรูปแบบ API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "จีน", + "apiRegionHint": "คำแนะนำเกี่ยวกับภูมิภาค API", + "apiRegionInternational": "นานาชาติ", + "apiRegionLabel": "ป้ายกำกับภูมิภาค API", + "apikey": "คีย์ API", + "audio": "เสียง", + "audioProvidersHeading": "หัวข้อผู้ให้บริการเสียง", "cloudAgentProviders": "ผู้ให้บริการตัวแทนระบบคลาวด์", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "ป้ายกำกับแบบสั้นสำหรับเสียง", + "azureOpenAiBaseUrlHint": "คำแนะนำ Base URL ของ Azure OpenAI", + "bailianBaseUrlHint": "คำแนะนำ Base URL ของ Bailian", + "claudeWebCookieHint": "เปิด claude.ai → DevTools → Application → Cookies → claude.ai แล้วคัดลอกค่าของ 'sessionKey' นอกจากนี้ ยังต้องใช้ cf_clearance, __cf_bm และ _cfuvid สำหรับ Cloudflare", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "คำแนะนำคุกกี้เว็บ Blackbox", + "blackboxWebCookiePlaceholder": "ตัวยึดตำแหน่งคุกกี้เว็บ Blackbox", "t3ChatWebCookieHint": "เปิด t3.chat → DevTools → Application → Local Storage → https://t3.chat คัดลอก 'convex-session-id' จากนั้นเปิด DevTools → Network คัดลอกส่วนหัวคุกกี้แบบเต็มจากคำขอแชท วางทั้งสองค่าในช่องด้านล่าง", "t3ChatWebCookiePlaceholder": "นูน-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "คำแนะนำคุกกี้เว็บ Grok", "blockClaudeExtraUsageDescription": "เมื่อเปิดใช้งาน OmniRoute จะทำเครื่องหมายการเชื่อมต่อ Claude นี้ว่าไม่สามารถใช้งานได้ทันทีที่ API การใช้งานรายงานการใช้งานพิเศษที่รออยู่ ดังนั้นการสำรองข้อมูลจะเปลี่ยนไปยังการเชื่อมต่ออื่นแทนที่จะดำเนินการต่อในระบบการเรียกเก็บเงินพิเศษแบบจ่ายตามการใช้งาน", "blockClaudeExtraUsageLabel": "บล็อกการใช้งาน Claude ที่เกินความจำเป็น", "disableCoolingDescription": "ข้ามคูลดาวน์ชั่วคราวเพื่อให้การเชื่อมต่อนี้ยังคงมีสิทธิ์ใช้งานได้แม้หลังจากเกิดข้อผิดพลาดที่กู้คืนได้ (สถานะสิ้นสุด เช่น ถูกแบน/หมดอายุ ยังคงมีผลอยู่)", "disableCoolingLabel": "ปิดใช้งานคูลดาวน์สำหรับการเชื่อมต่อนี้", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {เพิ่มคีย์แล้ว 1 คีย์} other {เพิ่มคีย์แล้ว # คีย์}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {ข้ามคีย์ที่ซ้ำ 1 คีย์} other {ข้ามคีย์ที่ซ้ำ # คีย์}}", + "bulkPasteHint": "วาง API key หนึ่งคีย์ต่อบรรทัด ระบบจะละเว้นบรรทัดว่างและข้ามคีย์ที่ซ้ำกัน", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "เพิ่มเฮดเดอร์เบต้า redact-thinking สำหรับอัปสตรีมที่เข้ากันได้กับ CC ซึ่งต้องใช้สตรีมการคิดของ Claude แบบซ่อน", + "ccCompatibleRedactThinkingLabel": "เปิดใช้ redact-thinking รุ่นเบต้า", + "ccCompatibleSummarizeThinkingDescription": "เพิ่ม `display: \"summarized\"` ไปยังคำขอการคิดที่เข้ากันได้กับ CC เพื่อให้โมเดล Claude ที่รองรับสามารถสตรีมส่วนต่างของกระบวนการคิดที่มองเห็นได้", + "ccCompatibleSummarizeThinkingLabel": "เปิดใช้การแสดงกระบวนการคิดแบบสรุป", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "ใช้ระดับบริการแบบมีลำดับความสำคัญสำหรับคำขอ Codex เมื่อพร้อมใช้งาน", + "codexFastServiceTierLabel": "ระดับบริการแบบรวดเร็วของ Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "ตัวยึดตำแหน่งชื่อเฮดเดอร์อัปสตรีมที่เข้ากันได้", + "compatUpstreamHeaderValuePlaceholder": "ตัวยึดตำแหน่งค่าเฮดเดอร์อัปสตรีมที่เข้ากันได้", + "compatible": "เข้ากันได้", + "configuredCount": "จำนวนที่กำหนดค่าแล้ว", + "consoleApiKeyOracleHint": "คำแนะนำ Console API Key ของ Oracle", + "consoleApiKeyOracleLabel": "ป้ายกำกับ Console API Key ของ Oracle", + "consoleApiKeyOraclePlaceholder": "ตัวยึดตำแหน่ง Console API Key ของ Oracle", "newApiUserIdLabel": "รหัสผู้ใช้ New-API", "newApiUserIdPlaceholder": "เช่น 12345", "newApiUserIdHint": "ค่าส่วนหัว New-Api-User ของ AgentRouter ใช้ร่วมกับคีย์ API ของคอนโซลเพื่อดึงยอดคงเหลือโควตา", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "เปิดใช้งานการตรวจจับยอดคงเหลือสำหรับโหนดที่เข้ากันได้กับ New-API / One-API / Sub2API aggregator", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "คำแนะนำ User Agent แบบกำหนดเอง", + "customUserAgentLabel": "ป้ายกำกับ User Agent แบบกำหนดเอง", + "databricksBaseUrlHint": "คำแนะนำ Base URL ของ Databricks", + "defaultThinkingStrengthHint": "ใช้เมื่อคำขอไม่ได้ระบุระดับความเข้มข้นในการให้เหตุผล", + "defaultThinkingStrengthLabel": "ระดับความเข้มข้นในการคิดเริ่มต้น", + "deleteAllExtraApiKeys": "ลบทั้งหมด", + "excludedModelsHint": "คำแนะนำโมเดลที่ยกเว้น", + "excludedModelsLabel": "ป้ายกำกับโมเดลที่ยกเว้น", + "excludedModelsPlaceholder": "ตัวยึดตำแหน่งโมเดลที่ยกเว้น", + "expirationBannerExpired": "หมดอายุแล้ว", + "expirationBannerExpiredDesc": "หมดอายุแล้ว", + "expirationBannerExpiringSoon": "ใกล้หมดอายุ", + "expirationBannerExpiringSoonDesc": "กำลังจะหมดอายุในเร็ว ๆ นี้", + "extraApiKeyMasked": "คีย์ {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "คำแนะนำ API key เพิ่มเติม", + "extraApiKeysLabel": "ป้ายกำกับ API key เพิ่มเติม", + "apiKeyHealthLabel": "สถานะของ API Key", + "apiKeyStatusActive": "ใช้งานอยู่", + "apiKeyStatusWarning": "คำเตือน ({count} ครั้งที่ล้มเหลว)", + "apiKeyStatusInvalid": "ไม่ถูกต้อง", + "primaryKey": "คีย์หลัก", + "apiKeyInvalidAlert": "คีย์ API จำนวน {count} คีย์ถูกทำเครื่องหมายว่าไม่ถูกต้อง เนื่องจากการยืนยันตัวตนล้มเหลวในการเชื่อมต่อ: {connections} คีย์เหล่านี้จะถูกข้ามในการหมุนเวียน คลิกเพื่อตรวจสอบ", + "apiKeyInvalidAlertTitle": "การแจ้งเตือนสถานะคีย์ API", + "apiKeyWarningAlert": "คีย์ API จำนวน {count} คีย์อยู่ในสถานะคำเตือน เนื่องจากมีอัตราความล้มเหลวสูงในการเชื่อมต่อ: {connections} โปรดตรวจสอบเพื่อป้องกันปัญหาในการหมุนเวียน", + "apiKeyWarningAlertTitle": "คำเตือนเกี่ยวกับคีย์ API", + "googlePseInfo": "ข้อมูล Google Pse", "antigravityProjectIdHint": "การแทนที่ทางเลือกสำหรับคำขอ Antigravity Cloud Code เว้นว่างไว้เพื่อใช้โปรเจ็กต์ที่ค้นพบระหว่าง Google OAuth", "antigravityClientProfileLabel": "โปรไฟล์ไคลเอนต์", "antigravityClientProfileHint": "เลือกตัวตนไคลเอนต์ Antigravity ที่ OmniRoute จะแสดงต่อ API", @@ -5865,18 +5868,18 @@ "tierFast": "เร็ว", "antigravityProjectIdLabel": "รหัสโครงการ Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "ตัวยึดตำแหน่งคุกกี้เว็บ Grok", + "herokuBaseUrlHint": "คำแนะนำ URL ฐานของ Heroku", + "hideEmail": "ซ่อนอีเมล", + "imageProviders": "ผู้ให้บริการรูปภาพ", "videoProviders": "การสร้างวิดีโอ", "embeddingRerankProviders": "การฝังและการจัดอันดับใหม่", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "ป้ายชื่อแบบสั้นสำหรับรูปภาพ", + "llmProviders": "ผู้ให้บริการ LLM", + "localProviderApiKeyOptionalHint": "คำแนะนำคีย์ API ของผู้ให้บริการภายในเครื่อง (ไม่บังคับ)", + "localProviderBaseUrlHint": "คำแนะนำ URL ฐานของผู้ให้บริการภายในเครื่อง", + "localProviders": "ผู้ให้บริการภายในเครื่อง", + "maxConcurrentWholeNumberError": "ข้อผิดพลาด: จำนวนการทำงานพร้อมกันสูงสุดต้องเป็นจำนวนเต็ม", "m365TierLabel": "ระดับ Copilot", "m365TierHint": "เลือกอินเทอร์เฟซ Microsoft 365 Copilot ที่การเชื่อมต่อนี้ใช้ Individual คือ BizChat สำหรับผู้บริโภคทั่วไปที่เป็นค่าเริ่มต้น ส่วน Education และ Enterprise (งาน) จะเลือกใช้ตามอินเทอร์เฟซของเทแนนท์ของตน", "m365TierIndividualOption": "ส่วนบุคคล (ค่าเริ่มต้น)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "ราคาประหยัด", "tierOverridePremium": "พรีเมียม", "tierOverrideHelpText": "ปักหมุดผู้ให้บริการนี้ไว้กับระดับการกำหนดเส้นทาง แทนที่จะปล่อยให้ OmniRoute คาดเดาจากราคาของโมเดล", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "คำแนะนำคุกกี้เว็บ Muse Spark", + "museSparkWebCookiePlaceholder": "ตัวยึดตำแหน่งคุกกี้เว็บ Muse Spark", + "oauth": "OAuth", + "openCliTools": "เปิดเครื่องมือ CLI", + "openSettings": "เปิดการตั้งค่า", + "openaiResponsesStoreDescription": "อนุญาตให้คำขอ Responses API ที่เข้ากันได้เก็บรักษาสถานะการตอบกลับที่จัดเก็บไว้", + "openaiResponsesStoreLabel": "ที่เก็บ OpenAI Responses", + "perplexitySearchSharedKeyInfo": "ข้อมูลคีย์ที่ใช้ร่วมกันสำหรับ Perplexity Search", + "perplexityWebCookieHint": "คำแนะนำคุกกี้เว็บ Perplexity", + "perplexityWebCookiePlaceholder": "ตัวยึดตำแหน่งคุกกี้เว็บ Perplexity", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "การเขียนทับการจำกัดอัตรา", "rateLimitOverridesMaxConcurrentHint": "การเขียนทับจำนวนคำขอพร้อมกันสูงสุดสำหรับการเชื่อมต่อนี้ ซึ่งจะเขียนทับขีดจำกัดในระดับบัญชี", "rateLimitOverridesMaxConcurrentLabel": "จำนวนพร้อมกันสูงสุด (การจำกัดอัตรา)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "ระยะเวลาสูงสุด (ms) ที่คำขอสามารถรอช่องโควตาอัตราการใช้งานก่อนที่จะล้มเหลว โดยจะแทนที่การตั้งค่า Resilience ส่วนกลางสำหรับการเชื่อมต่อนี้เท่านั้น", + "rateLimitOverridesMaxWaitMsLabel": "เวลารอคิวสูงสุด (ms)", "rateLimitOverridesMinTimeHint": "เวลาขั้นต่ำ (มิลลิวินาที) ระหว่างคำขอ ซึ่งจะเขียนทับการหน่วงเวลาของตัวจำกัดอัตราเริ่มต้น", "rateLimitOverridesMinTimeLabel": "ช่วงเวลาขั้นต่ำ (มิลลิวินาที)", "rateLimitOverridesRpdHint": "จำนวนคำขอสูงสุดต่อวันสำหรับการเชื่อมต่อนี้ แทนที่ค่าเริ่มต้นของผู้ให้บริการ", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (โทเค็น/วัน)", "rateLimitOverridesTpmHint": "จำนวนโทเค็นสูงสุดต่อนาทีสำหรับการเชื่อมต่อนี้ ซึ่งจะเขียนทับค่าเริ่มต้นของผู้ให้บริการ", "rateLimitOverridesTpmLabel": "TPM (โทเค็น/นาที)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "รีเฟรชโทเค็น OAuth", + "regionHint": "คำแนะนำเกี่ยวกับภูมิภาค", + "regionLabel": "ภูมิภาค", + "removeThisKey": "นำคีย์นี้ออก", + "routingTagsHint": "คำแนะนำเกี่ยวกับแท็กการกำหนดเส้นทาง", + "routingTagsLabel": "แท็กการกำหนดเส้นทาง", + "routingTagsPlaceholder": "ตัวยึดตำแหน่งแท็กการกำหนดเส้นทาง", + "search": "ค้นหา", + "searchEngineIdHint": "คำแนะนำสำหรับรหัสเครื่องมือค้นหา", + "searchEngineIdLabel": "รหัสเครื่องมือค้นหา", + "searchEngineIdRequired": "ต้องระบุรหัสเครื่องมือค้นหา", + "searchProvider": "ผู้ให้บริการค้นหา", + "searchProviderDesc": "คำอธิบายผู้ให้บริการค้นหา", "searchProviders": "ค้นหาผู้ให้บริการ...", "searchByModel": "ค้นหาตามโมเดล…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "ผู้ให้บริการค้นหา", + "searxngBaseUrlHint": "คำแนะนำสำหรับ URL ฐานของ Searxng", + "searxngInfo": "ข้อมูล Searxng", + "sessionCookieLabel": "คุกกี้เซสชัน", + "showEmail": "แสดงอีเมล", + "snowflakeBaseUrlHint": "คำแนะนำสำหรับ URL ฐานของ Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "คำแนะนำสำหรับกลุ่มแท็ก", + "tagGroupLabel": "กลุ่มแท็ก", + "tagGroupPlaceholder": "กลุ่มแท็ก", + "testModel": "ทดสอบโมเดล", + "testingModel": "กำลังทดสอบโมเดล", "modelTestQuotaTooltip": "โควต้าหมดแล้ว — จะรีเซ็ตในวันพรุ่งนี้หรือจำเป็นต้องเติมเงิน", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "โทเค็นหมดอายุแล้ว", + "tokenExpiredTitle": "โทเค็นหมดอายุแล้ว", + "tokenExpiresSoonTitle": "โทเค็นใกล้หมดอายุ", + "tokenShort": "โทเค็น", + "totalKeysRotating": "{count, plural, one {กำลังหมุนเวียน 1 คีย์} other {กำลังหมุนเวียน # คีย์}}", + "unhideModel": "เลิกซ่อนโมเดล", + "upstreamProxyProviders": "ผู้ให้บริการพร็อกซีต้นทาง", "validationModelIdHint": "โมเดลที่ใช้ตรวจสอบคีย์ API เว้นว่างไว้เพื่อใช้โมเดลแรกที่พร้อมใช้งานของผู้ให้บริการ", "validationModelIdLabel": "โมเดลสำหรับตรวจสอบ", "validationModelIdPlaceholder": "เช่น meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "วาง Service Account JSON ของคุณ ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) หรือ OAuth access_token", + "webCookieProviders": "ผู้ให้บริการคุกกี้เว็บ", + "weeklyShort": "รายสัปดาห์", + "xiaomiMimoBaseUrlHint": "คำแนะนำสำหรับ URL ฐานของ Xiaomi Mimo", "globalCodexServiceMode": "โหมดบริการ Codex ทั่วโลก", "connect": "เชื่อมต่อ", "manualApiKey": "คีย์ API แบบระบุเอง", @@ -5975,9 +5978,9 @@ "zedImportDescription": "ค้นหาข้อมูลประจำตัวของผู้ให้บริการ AI (OpenAI, Anthropic, Google, Mistral, xAI) ที่จัดเก็บโดย Zed IDE ในพวงกุญแจของระบบปฏิบัติการ (OS keychain) และนำเข้ามาเป็นรายการเชื่อมต่อ ต้องติดตั้ง Zed IDE บนเครื่องนี้", "zedImportButton": "นำเข้าจาก Zed", "zedImportFailed": "การนำเข้า Zed ล้มเหลว", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "คำแนะนำในการนำเข้าจาก Zed", + "zedImportNetworkError": "เกิดข้อผิดพลาดของเครือข่ายขณะนำเข้าจาก Zed", + "zedImportNone": "ไม่มีข้อมูลนำเข้าจาก Zed", "zedImportSuccess": "นำเข้า {credentials} ข้อมูลรับรองจาก Zed สำหรับผู้ให้บริการ {providers}", "zedImporting": "กำลังนำเข้า…", "zedNoCredentials": "ไม่พบข้อมูลประจำตัวของ Zed ในพวงกุญแจ", @@ -6175,7 +6178,7 @@ "freeaiapikey": "พร็อกซี API ราคาพิเศษสำหรับโมเดลมากกว่า 40 โมเดล รวมถึง GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5 รับคีย์ API ของคุณได้ที่ https://freeaiapikey.com/dashboard URL ฐาน: https://freeaiapikey.com/v1", "freemodel-dev": "รับเครดิต API ฟรี $300 ที่ https://freemodel.dev — ไม่ต้องใช้ข้อมูลการชำระเงิน ปลายทางที่เข้ากันได้กับ OpenAI มีโมเดล GPT-5.4 และ GPT-5.5 ให้บริการ", "friendliai": "ระดับการใช้งานฟรีสำหรับการอนุมานแบบ Serverless — ไม่ต้องใช้บัตรเครดิต", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "แพ็กเกจฟรีผ่าน Google AI Studio โดยไม่มีการเผยแพร่โควตาแยกตามโมเดลแล้ว (ตรวจสอบหน้าโควตาใน AI Studio) — ไม่ต้องใช้บัตรเครดิต", "gigachat": "เชื่อมต่อ GigaChat (Sber) ด้วยคีย์ API", "gitlab": "โทเค็นการเข้าถึงส่วนตัวของ GitLab สำหรับ Code Suggestions API สาธารณะ กำหนดค่า URL ฐานแบบโฮสต์เองเมื่อไม่ได้ใช้งาน gitlab.com", "gitlawb-gmi": "รับคีย์ API ของคุณจากแดชบอร์ด Gitlawb Opengateway", @@ -6184,7 +6187,7 @@ "glm-cn": "เชื่อมต่อ GLM Coding (China) ด้วยคีย์ API", "glmt": "โปรไฟล์ GLM ที่ตั้งค่าไว้ล่วงหน้าพร้อมงบประมาณโทเค็นที่สูงขึ้น เปิดใช้งานการคิด และหมดเวลาการทำงานที่นานขึ้น", "getgoapi": "เชื่อมต่อ GoAPI ด้วยคีย์ API", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "แพ็กเกจฟรี: จำกัดการใช้งานแยกตามโมเดล (200K โทเค็น/วันต่อโมเดลแชต โปรดดู RPM/RPD ที่ console.groq.com/docs/rate-limits) — ไม่มีวิธีการชำระเงินที่บันทึกไว้", "haiper": "รับคีย์ API ได้ที่ haiper.ai/haiper-api", "heroku": "เชื่อมต่อ Heroku AI ด้วยคีย์ API", "hcnsec": "รับ API key ได้ที่ api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "สร้างคีย์ API ที่ https://app.requesty.ai จากนั้นวางที่นี่เป็นโทเค็น Bearer ปลายทางที่เข้ากันได้กับ OpenAI อยู่ที่ https://router.requesty.ai/v1 พร้อมแคตตาล็อก /v1/models แบบสด", "runwayml": "การสร้างวิดีโอของ Runway เป็นแบบอิงตามงาน OmniRoute จะส่งงาน text-to-video หรือ image-to-video ดึงข้อมูลสถานะ /v1/tasks/[id] เป็นระยะ และปรับเอาต์พุตวิดีโอที่เสร็จสมบูรณ์ให้อยู่ในรูปแบบการตอบกลับ /v1/videos/generations ที่คล้ายกับ OpenAI", "sambanova": "เครดิตฟรี $5 เมื่อลงทะเบียน (มีอายุ 30 วัน) ไม่ต้องใช้บัตรเครดิต", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "สร้างคีย์ API ที่ https://seekai.cc แล้ววางที่นี่ในรูปแบบ Bearer token URL ฐานที่เข้ากันได้กับ OpenAI: https://seekai.cc/v1", "sap": "การค้นหาโมเดลใช้ /v2/lm/scenarios/foundation-models/models บน AI_API_URL คำขอแชทใช้ deploymentUrl/chat/completions และต้องระบุ AI-Resource-Group", "sarvam": "Sarvam AI เข้ากันได้กับ OpenAI ที่ /v1. OmniRoute ตรวจสอบ /v1/models และจัดเส้นทางการสนทนาไปยัง /v1/chat/completions. โมเดลได้รับการปรับแต่งสำหรับภาษาอินดิก.", "scaleway": "โทเค็นฟรี 1M สำหรับบัญชีใหม่ — สอดคล้องตาม EU/GDPR (ปารีส), Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "เชื่อมต่อ Claude Code ด้วยโฟลว์ OAuth ที่มีอยู่", "cline": "เชื่อมต่อ Cline ด้วยโฟลว์ OAuth ที่มีอยู่", "cursor": "เชื่อมต่อ Cursor IDE ด้วยโฟลว์ OAuth ที่มีอยู่", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "เชื่อมต่อ Cursor ด้วยคีย์ API ของผู้ใช้ (crsr_...) จาก cursor.com/dashboard/api โดยไม่ต้องใช้เซสชัน IDE", "github": "เชื่อมต่อ GitHub Copilot ด้วยโฟลว์ OAuth ที่มีอยู่", "gitlab-duo": "แอปพลิเคชัน OAuth ที่มีขอบเขต ai_features + read_user กำหนดค่า GITLAB_DUO_OAUTH_CLIENT_ID และ GITLAB_DUO_OAUTH_CLIENT_SECRET (ไม่บังคับ) บนอินสแตนซ์ OmniRoute นี้", "kilocode": "เชื่อมต่อ Kilo Code ด้วยโฟลว์ OAuth ที่มีอยู่", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "คัดลอกข้อมูลรับรองที่จำเป็นจากโดเมนของผู้ให้บริการเอง สำหรับคุกกี้ ให้คัดลอกเฉพาะค่าส่วนหัวของคุกกี้และละเว้น Cookie:", "webSessionGuideStep3Manual": "เส้นทางแบบแมนนวล: เปิดเครื่องมือพัฒนาเบราว์เซอร์ (F12 → Network), รีเฟรชหน้า, เปิดคำขอที่ได้รับการตรวจสอบสิทธิ์, และคัดลอกค่า Cookie header จาก Request Headers — ไม่รวมคำนำหน้า Cookie:", "webSessionGuideStep4": "วางที่นี่และตรวจสอบการเชื่อมต่อ หากหยุดทำงาน ให้ลงชื่อเข้าใช้อีกครั้งและแทนที่ด้วยค่าใหม่", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "นำเข้าไฟล์ .har", + "harImportButtonBusy": "กำลังนำเข้า…", + "harImportButtonHint": "ส่งออกจากแท็บ Network ของ DevTools หลังจากส่งข้อความแชตอย่างน้อยหนึ่งข้อความ", + "harImportStatusValid": "นำเข้าแล้ว — ใช้ได้ประมาณ {minutes} นาที", + "harImportStatusExpiringSoon": "นำเข้าแล้ว — ใช้ได้อีกเพียงประมาณ {minutes} นาที", + "harImportStatusExpired": "นำเข้าแล้ว แต่โทเค็นนี้หมดอายุไปแล้ว ({minutes} นาทีที่แล้ว) — โปรดส่งออก HAR ใหม่", + "harImportStatusUnknownExpiry": "นำเข้าแล้ว แต่ไม่สามารถอ่านเวลาหมดอายุได้", + "harImportErrorNotJson": "ไฟล์นั้นไม่ใช่ JSON ที่ถูกต้อง — แน่ใจหรือว่าเป็นไฟล์ส่งออก .har?", + "harImportErrorNoEntries": "HAR นี้ไม่มีรายการเครือข่ายที่บันทึกไว้", + "harImportErrorNoChathubUrl": "ไม่พบการเชื่อมต่อแชต Copilot ใน HAR นี้ โปรดส่งข้อความแชตอย่างน้อยหนึ่งข้อความใน m365.cloud.microsoft ก่อนส่งออก", + "harImportErrorUnparsableUrl": "พบการเชื่อมต่อแชต แต่ไม่สามารถอ่าน URL ได้", + "harImportErrorMissingFields": "พบการเชื่อมต่อแชต แต่ไม่มีโทเค็นอยู่ในนั้น", + "harImportErrorReadFailed": "ไม่สามารถอ่านไฟล์นั้นได้", + "harImportErrorUnknown": "ไม่สามารถดึงข้อมูลรับรองจากไฟล์ HAR นั้นได้", "webSessionSecurityHint": "ปฏิบัติต่อสิ่งนี้เหมือนเป็นรหัสผ่าน: มันอาจเข้าถึงบัญชีเว็บที่คุณลงชื่อเข้าใช้จนกว่ามันจะหมดอายุหรือถูกเพิกถอน", "webNoAuthGuideTitle": "ไม่จำเป็นต้องมีหนังสือรับรอง", "webNoAuthGuideBody": "{provider} ไม่จำเป็นต้องมีคีย์ API หรือคุกกี้ บันทึกการเชื่อมต่อเพื่อใช้จุดสิ้นสุดเว็บฟรี", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "รหัสคำสั่งหมดอายุ", "commandCodeConnected": "คำสั่งรหัสเชื่อมต่อแล้ว", "commandCodeConnectionAdded": "เพิ่มการเชื่อมต่อรหัสคำสั่ง", + "clearConnectionCooldown": "ล้างช่วงพักการใช้งาน", + "clearConnectionCooldownInProgress": "กำลังล้าง…", + "clearConnectionCooldownTitle": "ล้างช่วงพักการใช้งานทันที — ใช้เมื่อโควตาได้รับการรีเฟรชจากระบบต้นทางแล้ว", "commandCodeLinkExpired": "ลิงก์รหัสคำสั่งหมดอายุ", "commandCodeOpeningStudio": "กำลังเปิด Command Code Studio…", "commandCodePopupBlocked": "ป๊อปอัพถูกบล็อก กรุณาอนุญาตป๊อปอัพและลองใช้ Command Code Connect อีกครั้ง.", "commandCodeStartFailed": "ไม่สามารถเริ่มคำสั่ง Code auth ได้", "connectionDeleted": "การเชื่อมต่อถูกลบแล้ว", "connectionFallback": "การเชื่อมต่อ", + "connectionCooldownCleared": "ล้างช่วงพักการใช้งานแล้ว — การเชื่อมต่อกลับเข้าร่วมการกำหนดเส้นทางอีกครั้ง", "coolingConnectionsDescription": "การเชื่อมต่อเหล่านี้กำลังพักหลังคำขอล่าสุด OmniRoute จะข้ามไปจนกว่าตัวจับเวลาจะหมด — ไม่ต้องปิดด้วยมือ", "coolingConnectionsTitle": "กำลังทำความเย็นอยู่ ({count})", + "failedClearConnectionCooldown": "ล้างช่วงพักการใช้งานไม่สำเร็จ", "failedDeleteAlias": "ไม่สามารถลบชื่อเล่นได้", "failedDeleteConnection": "ไม่สามารถลบการเชื่อมต่อได้", "failedDistributeProxies": "ไม่สามารถแจกจ่ายพร็อกซี่ได้。", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "การตั้งค่า endpoint ของโมเดลที่บันทึกไว้", "searchByModelAria": "ค้นหาตามรุ่น", "selectSupportedEndpoint": "เลือกจุดสิ้นสุดที่รองรับอย่างน้อยหนึ่งจุด", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "การตั้งค่า", @@ -6554,22 +6557,22 @@ "systemPrompt": "พร้อมท์ระบบ", "thinkingBudget": "คิดงบประมาณ", "proxy": "หนังสือมอบฉันทะ", - "httpProxy": "HTTP Proxy", + "httpProxy": "พร็อกซี HTTP", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "ส่วนพร็อกซี", + "requestBodyLimitTitle": "ขีดจำกัดเนื้อหาคำขอ", + "requestBodyLimitDescription": "ขนาดเพย์โหลด API สูงสุดที่ยอมรับก่อนแยกวิเคราะห์เนื้อหาคำขอ เส้นทางอัปโหลดเฉพาะจะยังคงใช้ขีดจำกัดในตัวอย่างน้อย 100 MB", + "requestBodyLimitInputLabel": "ขีดจำกัดเนื้อหาคำขอเป็น MB", + "requestBodyLimitEmptyError": "ป้อนขีดจำกัดเป็น MB", + "requestBodyLimitWholeNumberError": "ใช้จำนวนเต็ม", + "requestBodyLimitMinimumError": "ค่าต่ำสุดคือ {min} MB", + "requestBodyLimitMaximumError": "ค่าสูงสุดคือ {max} MB", + "requestBodyLimitLoadFailed": "โหลดการตั้งค่าขีดจำกัดคำขอไม่สำเร็จ", + "requestBodyLimitSaveSuccess": "บันทึกขีดจำกัดเนื้อหาคำขอแล้ว", + "requestBodyLimitSaveFailed": "บันทึกขีดจำกัดเนื้อหาคำขอไม่สำเร็จ", + "requestBodyLimitSaving": "กำลังบันทึก...", + "requestBodyLimitSave": "บันทึก", + "requestBodyLimitCurrent": "ปัจจุบัน: {value}", "cacheConfigLoadFailed": "ไม่สามารถโหลดการตั้งค่าความจำได้", "cacheConfigSaveSuccess": "บันทึกการตั้งค่าแคชแล้ว", "cacheConfigSaveFailed": "ไม่สามารถบันทึกการตั้งค่าความจำได้", @@ -6593,59 +6596,59 @@ "enablePassword": "เปิดใช้งานรหัสผ่าน", "darkMode": "โหมดมืด", "lightMode": "โหมดแสง", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "หน่วยความจำ", + "memoryDesc": "หน่วยความจำการสนทนาแบบถาวรข้ามเซสชัน", + "memoryEnabled": "เปิดใช้งานหน่วยความจำ", + "memoryEnabledDesc": "เมื่อเปิดใช้งาน OmniRoute จะแทรกบริบทที่เกี่ยวข้องจากการสนทนาก่อนหน้า", "memoryTokenCostWarning": "ข้อควรทราบ: เมื่อเปิดใช้งานหน่วยความจำ OmniRoute จะแทรกบริบทที่ดึงมาสูงสุด {tokens} โทเค็นลงในทุกคำขอแชท — ซึ่งจะเพิ่มการใช้โทเค็นและค่าใช้จ่าย หากต้องการข้ามการแทรกสำหรับคำขอเฉพาะ ให้ส่งส่วนหัว \"x-omniroute-no-memory: true\"", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "จำนวนโทเค็นสูงสุด", + "retentionDays": "การเก็บรักษา", + "recent": "ล่าสุด", + "recentDesc": "ช่วงเวลาตามลำดับเวลา", + "semantic": "เชิงความหมาย", + "semanticDesc": "การค้นหาแบบเวกเตอร์", + "hybrid": "แบบผสม", + "hybridDesc": "ล่าสุด + เชิงความหมาย", + "skillsTitle": "ทักษะ", + "skillsDesc": "เครื่องมือสำหรับโมเดล", + "skillsEnabled": "เปิดใช้งานทักษะ", + "skillsEnabledDesc": "อนุญาตให้เอเจนต์เรียกใช้ฟังก์ชัน", + "skillsComingSoon": "มาร์เก็ตเพลสสำหรับทักษะจะเปิดให้บริการเร็ว ๆ นี้", + "memorySkillsTitle": "หน่วยความจำและทักษะ", + "memorySkillsDesc": "บริบทและความสามารถแบบถาวร", + "modelsDevTitle": "ฐานข้อมูลโมเดล", + "modelsDevDesc": "ซิงค์ราคา ความสามารถ และข้อมูลจำเพาะจาก models.dev โดยอัตโนมัติ", + "modelsDevEnabled": "เปิดใช้งานการซิงค์ models.dev", + "modelsDevEnabledDesc": "ดึงข้อมูลราคา ความสามารถ และข้อมูลจำเพาะของโมเดลจากฐานข้อมูลโอเพนซอร์ส models.dev", + "modelsDevInterval": "ช่วงเวลาการซิงค์", + "syncNow": "ซิงค์ตอนนี้", + "syncing": "กำลังซิงค์...", + "lastSync": "ซิงค์ล่าสุด", + "never": "ไม่เคย", "justNow": "แค่ตอนนี้", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "สถิติการซิงค์", + "modelsDevStatsDesc": "ความครอบคลุมของข้อมูล models.dev ในปัจจุบัน", "providers": "ผู้ให้บริการ", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "โมเดลที่มีข้อมูลราคา", + "capabilities": "ความสามารถ", + "lastSyncCount": "จำนวนในการซิงค์ล่าสุด", + "lastSyncFull": "การซิงค์แบบเต็มล่าสุด", + "modelsDevInfo": "วิธีการทำงาน", + "modelsDevInfoDesc": "models.dev เป็นฐานข้อมูลโอเพนซอร์สสำหรับข้อมูลจำเพาะของโมเดล AI ซึ่งดูแลโดยทีม SST/OpenCode โดยให้ข้อมูลราคา ความสามารถ ขีดจำกัดบริบท และรูปแบบข้อมูลสำหรับโมเดลมากกว่า 4,000 รายการจากผู้ให้บริการมากกว่า 100 ราย", + "modelsDevInfoResolution": "ลำดับการเลือกใช้ข้อมูลราคา (เรียงจากลำดับความสำคัญสูงสุด):", + "modelsDevInfoOrder": "ค่าที่ผู้ใช้กำหนดเอง → models.dev → LiteLLM → ค่าเริ่มต้นที่กำหนดไว้ตายตัว", "systemTheme": "ธีมของระบบ", - "debugToggle": "Enable Debug Mode", + "debugToggle": "เปิดใช้งานโหมดดีบัก", "logToolSourcesToggle": "บันทึก Log แหล่งที่มาของเครื่องมือ", "logToolSourcesDescription": "สร้างบรรทัดบันทึกการวินิจฉัยต่อคำขอเพื่อสรุปจำนวนเครื่องมือและการแจกแจงแหล่งที่มา MCP/hosted/client", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "ปักหมุดข้อมูลไว้ที่หน้าหลัก", "homePinnedSectionsDesc": "เลือกส่วนที่ต้องการปักหมุดไว้ที่ด้านบนของหน้าแรก", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "ขีดจำกัดโควตาของผู้ให้บริการ", + "homeProviderQuotaLimitsDesc": "ตรึงคอนเทนเนอร์สถานะโควตาของ Provider (พร้อมปุ่ม Refresh All) ไว้ที่ด้านบนของหน้า Home", + "homeQuickStart": "เริ่มต้นใช้งานอย่างรวดเร็ว", + "homeQuickStartDesc": "แสดงแผงเริ่มต้นใช้งานอย่างรวดเร็วบนหน้า Home", + "homeProviderTopology": "โทโพโลยีของ Provider", + "homeProviderTopologyDesc": "แสดงโทโพโลยีของ Provider บนหน้า Home", "accountEmailVisibility": "การแสดงอีเมลบัญชี", "accountEmailVisibilityDesc": "แสดงอีเมลบัญชีแบบเต็มในหน้าผู้ให้บริการ, คอมโบ, บันทึก, โควตา และเพลย์กราวด์ ปิดตัวเลือกนี้เพื่อซ่อนอีเมลตามค่าเริ่มต้น", "comboConfigMode": "โหมดการกำหนดค่าคอมโบ", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "ช่วงเวลารีเฟรช", "providerQuotaAutoRefreshIntervalDesc": "ความถี่ในการรีเฟรชมุมมองโควตา เป็นวินาที", "seconds": "วินาที", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "แสดงรายการในแถบด้านข้าง", "enableCache": "เปิดใช้งานแคช", "cacheTTL": "แคช TTL", "maxCacheSize": "ขนาดแคชสูงสุด", "clearCache": "ล้างแคช", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "ล้างแคชเรียบร้อยแล้ว", + "clearCacheFailed": "ล้างแคชไม่สำเร็จ", "cacheHits": "การเข้าชมแคช", "cacheMisses": "แคชพลาด", "hitRate": "อัตราการเข้าชม", "cacheEntries": "รายการแคช", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "การตั้งค่าแคช", + "semanticCache": "แคชเชิงความหมาย", + "maxEntries": "จำนวนรายการสูงสุด", + "ttlMinutes": "TTL (นาที)", "promptCache": "แคชพร้อมท์", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "กลยุทธ์", + "preserveClientCache": "คงแคชของไคลเอนต์ไว้", + "enabled": "เปิดใช้งาน", "loading": "Loading...", "saving": "กำลังบันทึก...", - "save": "Save", + "save": "บันทึก", "circuitBreaker": "เบรกเกอร์", "retryPolicy": "นโยบายการลองอีกครั้ง", "maxRetries": "ลองใหม่สูงสุด", @@ -6690,21 +6693,21 @@ "timeoutMs": "หมดเวลา (มิลลิวินาที)", "enableSystemPrompt": "เปิดใช้งานพร้อมท์ระบบ", "systemPromptText": "ข้อความแจ้งของระบบ", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "ปิดใช้งานบัญชีที่ถูกแบนโดยอัตโนมัติ", + "autoDisableDescription": "ทำเครื่องหมายการเชื่อมต่อ Provider ว่าปิดใช้งานอย่างถาวร หากได้รับสัญญาณการแบนขั้นสุดท้ายที่ระบุ (เช่น HTTP 403 'verify your account') ซึ่งจะนำการเชื่อมต่อเหล่านั้นออกจากการหมุนเวียนแบบคอมโบ", + "autoDisableThreshold": "เกณฑ์การแบน", + "autoDisableThresholdDesc": "จำนวนสัญญาณการแบนต่อเนื่องที่ต้องได้รับก่อนปิดใช้งานอย่างถาวร", + "autoDisableBannedScope": "ใช้การปิดใช้งานอัตโนมัติกับ", + "autoDisableBannedScopeDesc": "ที่นั่งสำหรับการเข้าสู่ระบบ (การสมัครสมาชิกแบบชำระเงินและบัญชีฟรี) อาจถูกต้นทางล็อกได้ หาก OmniRoute พยายามซ้ำต่อไปหลังจากถูกแบน คีย์ API แบบเติมเงินที่ชำระเงินไม่มีความเสี่ยงดังกล่าว — ให้คงไว้ในพูลเพื่อให้ fill-first ใช้คีย์ถัดไปได้", + "autoDisableBannedScopeAll": "การเชื่อมต่อทั้งหมด", + "autoDisableBannedScopeAllDesc": "ปิดใช้งานทุกการเชื่อมต่อที่ส่งคืนสัญญาณการแบนถาวร รวมถึงคีย์ API แบบเติมเงิน", + "autoDisableBannedScopeSubscription": "เฉพาะบัญชีเข้าสู่ระบบ / บัญชีสมัครสมาชิก", + "autoDisableBannedScopeSubscriptionDesc": "ปิดใช้งานที่นั่ง OAuth, คุกกี้, เซสชัน และการเข้าสู่ระบบผ่านเว็บ (แบบชำระเงินหรือฟรี) คีย์ API แบบเติมเงินจะยังคงใช้งานได้ เพื่อให้การกำหนดเส้นทางสลับไปใช้เส้นทางสำรองได้", "customBannedSignals": "คีย์เวิร์ดที่ถูกแบน", "customBannedSignalsDesc": "คีย์เวิร์ดเพิ่มเติมที่ทริกเกอร์การตรวจจับการแบนบัญชีถาวร คีย์เวิร์ดในตัวจะมีผลเสมอ", "customBannedSignalsPlaceholder": "เช่น api key revoked", "noCustomBannedSignals": "ไม่มีคีย์เวิร์ดที่กำหนดเอง มีเพียงคีย์เวิร์ดในตัวเท่านั้นที่ใช้งานอยู่", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "โครงสร้างความยืดหยุ่น", "resilienceStructureDesc": "หน้านี้กำหนดค่าการทำงานเท่านั้น สถานะเบรกเกอร์สดจะแสดงอยู่ในหน้าสุขภาพ การลองซ้ำเฉพาะคอมโบและการควบคุมสล็อตแบบวนซ้ำยังคงอยู่ในการตั้งค่าคอมโบ", "enableThinking": "เปิดใช้งานการคิด", "maxThinkingTokens": "โทเค็นการคิดสูงสุด", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "แสดงส่วนควบคุม Tailscale Funnel บนหน้าปลายทาง", "showNgrokTunnel": "อุโมงค์งรก", "showNgrokTunnelDesc": "แสดงการควบคุม ngrok Tunnel บนหน้า Endpoint", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "ซ่อนรายการในแถบด้านข้าง", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "ทั้งหมด", + "presetAllDesc": "แสดงทุกอย่าง", + "presetEssentials": "รายการจำเป็น", + "presetEssentialsDesc": "เส้นทางสำหรับผู้เริ่มต้น - เครื่องมือขั้นสูงยังคงค้นหาได้", + "presetMinimal": "น้อยที่สุด", + "presetMinimalDesc": "เฉพาะหน้าหลัก", + "presetDeveloper": "นักพัฒนา", + "presetDeveloperDesc": "เครื่องมือสำหรับนักพัฒนาและพร็อกซี", + "presetAdmin": "ผู้ดูแลระบบ", + "presetAdminDesc": "การตรวจสอบและการตรวจประเมิน", + "settingsSidebarTitle": "การปรับแต่งแถบด้านข้าง", + "settingsSidebarDesc": "เลือกรายการในแถบด้านข้างที่ต้องการแสดง โหมดรายการจำเป็นยังคงให้ค้นหาเครื่องมือขั้นสูงได้", "hideHealthLogs": "ซ่อนบันทึกการตรวจสุขภาพ", "hideHealthLogsDesc": "เมื่อเปิด ให้ระงับข้อความ [HealthCheck] ในคอนโซลเซิร์ฟเวอร์", "themeAccent": "สีธีม", @@ -6780,19 +6783,19 @@ "themeOrange": "ส้ม", "themeCyan": "ไซแอน", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "ปรับแต่งชื่อและโลโก้ของแอปพลิเคชัน", + "appName": "ชื่อแอปพลิเคชัน", + "appNameDesc": "ชื่อที่แสดงในแถบด้านข้างและแท็บเบราว์เซอร์", + "customLogo": "URL โลโก้ที่กำหนดเอง", + "customLogoDesc": "URL ของรูปภาพโลโก้ที่กำหนดเอง", + "uploadLogo": "อัปโหลดโลโก้", + "resetLogo": "รีเซ็ตเป็นค่าเริ่มต้น", + "logoPreview": "ตัวอย่าง", + "customFavicon": "ไอคอนเว็บไซต์ในเบราว์เซอร์", + "customFaviconDesc": "URL ของไอคอนเว็บไซต์ที่กำหนดเอง (แสดงในแท็บเบราว์เซอร์)", + "uploadFavicon": "อัปโหลดไอคอนเว็บไซต์", + "resetFavicon": "รีเซ็ตไอคอนเว็บไซต์", + "faviconPreview": "ตัวอย่างไอคอนเว็บไซต์", "logoFileTooLarge": "ไฟล์โลโก้ต้องมีขนาดน้อยกว่า 500KB", "faviconFileTooLarge": "ไฟล์ Favicon ต้องมีขนาดน้อยกว่า 50KB", "invalidLogoFileType": "ประเภทไฟล์ไม่ถูกต้อง โปรดอัปโหลด PNG, JPG, SVG, GIF หรือ WebP", @@ -6896,21 +6899,21 @@ "refreshInterval": "ช่วงเวลาการรีเฟรช", "ruleModeDescription": "คำอธิบายโหมดกฎ" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "ตรวจสอบสถานะพร้อมกันทั้งหมด", + "bulkHealthcheckDesc": "ทดสอบพร็อกซีที่กำหนดค่าทั้งหมดกับ URL เป้าหมาย เพื่อค้นหาพร็อกซีที่ใช้งานได้", + "healthcheckTesting": "กำลังทดสอบ...", + "healthcheckAll": "ตรวจสอบสถานะทั้งหมด", + "healthcheckFailed": "เรียกใช้การตรวจสอบสถานะไม่สำเร็จ", + "healthcheckTestingAll": "กำลังทดสอบพร็อกซีทั้งหมดพร้อมกัน...", + "healthcheckTotal": "ทั้งหมด", + "healthcheckWorking": "ใช้งานได้", + "healthcheckFailedLabel": "ล้มเหลว", + "healthcheckStatus": "สถานะ", + "healthcheckProxyUrl": "URL พร็อกซี", + "healthcheckLatency": "เวลาแฝง", "proxyDocumentationScopeTitle": "การหาขอบเขตพร็อกซี", "proxyDocumentationScopeDescBefore": "OmniRoute จะหาพร็อกซีขาออกตามลำดับความสำคัญดังนี้:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "คอมโบ → บัญชี → ผู้ให้บริการ → ส่วนกลาง", "proxyDocumentationScopeDescAfter": ". ขอบเขตที่เฉพาะเจาะจงที่สุดจะมีผลก่อน", "proxyDocumentationAddTitle": "การเพิ่มพร็อกซีแบบกำหนดเอง", "proxyDocumentationAddDescBefore": "ไปที่", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} ผู้ให้บริการถูกบล็อกจาก /models", "blockProviderTitle": "บล็อก {provider}", "unblockProviderTitle": "เลิกบล็อก {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "การจับคู่ลายนิ้วมือ CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "ผู้ให้บริการ {count} รายที่เปิดใช้ลายนิ้วมือ CLI", + "enableFingerprintTitle": "เปิดใช้ลายนิ้วมือสำหรับ {provider}", + "disableFingerprintTitle": "ปิดใช้ลายนิ้วมือสำหรับ {provider}", "systemTransforms": "ไปป์ไลน์การแปลงบล็อกระบบ", "systemTransformsDesc": "ไปป์ไลน์ของการแปลงที่สั่งต่อผู้ให้บริการที่นำไปใช้กับเนื้อหาคำขอก่อนที่จะส่งต่อ รองรับ ID ผู้ให้บริการใด ๆ", "systemTransformsAddProvider": "เพิ่มผู้ให้บริการ", @@ -7067,10 +7070,10 @@ "costOptDesc": "ต้องการบัญชีที่ถูกที่สุด", "resetAware": "รีเซ็ต-Aware RR", "resetAwareDesc": "ต้องการบัญชีที่มีโควต้าคงเหลือที่ดีและมีการรีเซ็ตที่ใกล้กว่า", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "ถ่วงน้ำหนักตามโควตา", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", + "strictRandom": "สุ่มอย่างเคร่งครัด", + "strictRandomDesc": "สับสำรับ — ใช้แต่ละบัญชีหนึ่งครั้งก่อนสับใหม่", "stickyLimit": "ขีด จำกัด เหนียว", "stickyLimitDesc": "โทรต่อบัญชีก่อนที่จะเปลี่ยน", "routingStrategyTitle": "กลยุทธ์การกำหนดเส้นทาง", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "เขียนทับกลยุทธ์บัญชีส่วนกลางสำหรับผู้ให้บริการรายนี้ (เทียบเท่า 9router)", "providerRoutingStrategy": "กลยุทธ์บัญชี", "providerRoutingInheritGlobal": "สืบทอดค่าเริ่มต้นส่วนกลาง", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "เกณฑ์ตัดโควตาก่อนส่งคำขอ", + "quotaPreflightSubtitle": "ข้ามบัญชีที่โควตาหมดก่อนส่งคำขอไปยังต้นทาง", + "quotaPreflightEnable": "เปิดใช้การตรวจสอบโควตาก่อนส่งคำขอ", + "quotaPreflightEnableDesc": "ก่อนส่งคำขอแต่ละครั้ง ให้ตรวจสอบโควตาคงเหลือของบัญชี (ช่วงเวลา 5 ชม. / รายสัปดาห์ / รายเดือน) ระบบจะข้ามบัญชีที่มีโควตาเท่ากับหรือต่ำกว่าเกณฑ์ตัดโดยไม่เรียกไปยังต้นทาง เกณฑ์ตัดของแต่ละช่วงเวลาที่ตั้งค่าไว้ในหน้าโควตาผู้ให้บริการจะมีผลเหนือกว่าค่าเริ่มต้นที่นี่เสมอ", + "quotaPreflightCutoff": "เกณฑ์ตัดส่วนกลาง (โควตาคงเหลือขั้นต่ำ %)", + "quotaPreflightCutoffDesc": "หยุดใช้บัญชีเมื่อโควตาคงเหลือลดลงถึงเปอร์เซ็นต์นี้หรือต่ำกว่า สำหรับทุกช่วงเวลาที่ไม่ได้กำหนดเกณฑ์ตัดของตนเอง ค่านี้ตรงกับแถบเปอร์เซ็นต์โควตาคงเหลือในหน้าโควตาผู้ให้บริการ", + "quotaPreflightWindowsHint": "หน้าต่างที่กำหนดเกณฑ์ตัดแยกตามหน้าต่างหรือผู้ให้บริการไว้เอง (ตั้งค่าในหน้าต่างเกณฑ์ตัดบนหน้าจอโควตาผู้ให้บริการ) จะไม่ได้รับผลกระทบจากค่าเริ่มต้นนี้", + "quotaPreflightLoadFailed": "ไม่สามารถโหลดการตั้งค่าการตรวจสอบโควตาล่วงหน้าได้", "modelAliases": "นามแฝงของโมเดล", "modelAliasesTitle": "นามแฝงโมเดล", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "แมปชื่อโมเดลใหม่โดยใช้การจับคู่แบบตรงทั้งหมดหรือรูปแบบไวลด์การ์ด", "addCustomAlias": "เพิ่มนามแฝงที่กำหนดเอง", "deprecatedModelId": "ID โมเดลที่เลิกใช้", "newModelId": "ID โมเดลใหม่", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "กลยุทธ์คอมโบ", "priority": "ลำดับความสำคัญ", "weighted": "ถ่วงน้ำหนัก", - "contextRelay": "Context Relay", + "contextRelay": "การส่งต่อบริบท", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "ลองใหม่สูงสุด", "retryDelayLabel": "ความล่าช้าในการลองอีกครั้ง (มิลลิวินาที)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "เห็นพ้องต้องกัน / รุ่น", "queueTimeout": "คิวหมดเวลา (มิลลิวินาที)", "queueDepth": "ความลึกของคิว", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "เกณฑ์การส่งมอบ", + "contextRelayMaxMessages": "จำนวนข้อความสูงสุดสำหรับสรุป", + "contextRelaySummaryModel": "โมเดลสำหรับสรุป", + "contextRelayProviderNote": "ขณะนี้การส่งต่อบริบทจะสร้างการส่งมอบสำหรับบัญชี Codex และใช้ค่าเหล่านี้เป็นค่าเริ่มต้นส่วนกลางสำหรับคอมโบใหม่หรือคอมโบที่ยังไม่ได้กำหนดค่า", "providerProfiles": "โปรไฟล์ผู้ให้บริการ", "providerProfilesDesc": "แยกการตั้งค่าความยืดหยุ่นสำหรับผู้ให้บริการ OAuth (ตามเซสชัน) และคีย์ API (แบบมิเตอร์) ผู้ให้บริการ OAuth มีเกณฑ์ที่เข้มงวดมากขึ้นเนื่องจากมีขีดจำกัดอัตราที่ต่ำกว่า", "oauthProviders": "ผู้ให้บริการ OAuth", @@ -7299,7 +7302,7 @@ "daysAgo": "{count}d ที่แล้ว", "backupReasonManual": "คู่มือ", "backupReasonPreRestore": "คืนค่าล่วงหน้า", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# การเชื่อมต่อ} other {# การเชื่อมต่อ}}", "noChangesSinceBackup": "ไม่มีการเปลี่ยนแปลงตั้งแต่การสำรองข้อมูลครั้งล่าสุด", "backupFailed": "การสำรองข้อมูลล้มเหลว", "restoreFailed": "การคืนค่าล้มเหลว", @@ -7329,7 +7332,7 @@ "configured": "กำหนดค่าแล้ว", "none": "ไม่มี", "modelOverrideValuePlaceholder": "ค่าตัวเลข", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "คั่นด้วยเครื่องหมายจุลภาคภาษาอังกฤษ เช่น low, medium, high", "addKeyValue": "เพิ่มคีย์-ค่า", "noModelOverrides": "ไม่มีการกำหนดค่าการเขียนทับสำหรับโมเดลนี้", "modelOverrideLoadFailed": "โหลดการเขียนทับโมเดลล้มเหลว", @@ -7378,25 +7381,25 @@ "editPricing": "แก้ไขราคา", "viewFullDetails": "ดูรายละเอียดทั้งหมด", "themeCoral": "คอรัล", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "การกำหนดเส้นทางตามปริมาณแบบปรับตัว", + "adaptiveVolumeRoutingDesc": "ปรับจำนวนการเชื่อมต่อแบบไดนามิกตามปริมาณเพย์โหลดและแรงกดดันด้านอัตราการประมวลผล", + "lkgpToggleTitle": "ผู้ให้บริการล่าสุดที่ใช้งานได้ดี (LKGP)", + "lkgpToggleDesc": "เมื่อเปิดใช้งาน เราเตอร์จะจดจำว่าผู้ให้บริการรายใดส่งการตอบกลับสำเร็จล่าสุด และจะลองใช้ผู้ให้บริการรายนั้นก่อนสำหรับคำขอถัดไป", "echoRequestedModelTitle": "สะท้อนชื่อโมเดลที่ร้องขอในคำตอบกลับ", "echoRequestedModelDesc": "เมื่อเปิดใช้งาน ฟิลด์ `model` ในการตอบกลับจะแสดงชื่อนามแฝงหรือชื่อคอมโบที่ไคลเอนต์ร้องขอ แทนที่จะเป็นชื่อโมเดลต้นน้ำ ช่วยแก้ไขปัญหาสำหรับไคลเอนต์ที่เข้มงวด (เช่น Claude Desktop) ที่ปฏิเสธการตอบกลับที่โมเดลไม่ตรงกับคำขอ", "webSearchRouteTitle": "การกำหนดเส้นทางการค้นหาเว็บ", "webSearchRouteDesc": "เมื่อคำขอมีเครื่องมือ web_search แบบเนทีฟ ให้กำหนดเส้นทางคำขอทั้งหมดไปยังโมเดลนี้แทนค่าเริ่มต้น — มีประโยชน์สำหรับผู้ให้บริการที่ไม่ได้ใช้เครื่องมือเซิร์ฟเวอร์ web_search ของ Anthropic ปล่อยว่างไว้เพื่อปิดใช้งาน", "webSearchRoutePlaceholder": "ค้นหาหรือเลือกโมเดล…", "paidModelPatternWarning": "รูปแบบนี้ตรงกับโมเดลแบบชำระเงินเท่านั้น — เปิดใช้งานโมเดลแบบชำระเงินหรือปรับเปลี่ยนรูปแบบ", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "ล้างแคช LKGP", + "lkgpCacheCleared": "ล้างแคช LKGP สำเร็จแล้ว", + "lkgpCacheClearFailed": "ล้างแคช LKGP ไม่สำเร็จ", + "days": "วัน", + "lkgp": "โหมด LKGP", + "lkgpDesc": "ผู้ให้บริการล่าสุดที่ใช้งานได้ดี (ความยืดหยุ่นที่คาดการณ์ได้)", + "maintenance": "การบำรุงรักษา", + "purgeExpiredLogs": "ล้างบันทึกที่หมดอายุ", + "purgeLogsFailed": "ล้างบันทึกไม่สำเร็จ", "logsDeleted": "{count, plural, =0 {ไม่มีบันทึกที่หมดอายุถูกล้าง} one {ล้างบันทึกที่หมดอายุแล้ว # รายการ} other {ล้างบันทึกที่หมดอายุแล้ว # รายการ}}", "resetUsageData": "รีเซ็ตข้อมูลการใช้งาน", "resetUsageDataDesc": "เลือกช่วงเวลาย้อนหลังที่คุณต้องการลบข้อมูลการใช้งาน บันทึกคำขอ และข้อมูลการวิเคราะห์ การกำหนดค่าผู้ให้บริการ การเชื่อมต่อ คีย์ API คอมโบ และการตั้งค่าต่างๆ จะยังคงอยู่ การดำเนินการนี้ไม่สามารถย้อนกลับได้", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "รีเซ็ตข้อมูลการใช้งานไม่สำเร็จ", "reset": "รีเซ็ต", "resetting": "กำลังรีเซ็ต...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "ปรับให้เหมาะกับบริบท", + "contextOptDesc": "กำหนดเส้นทางตามข้อกำหนดของหน้าต่างบริบทและความยาวของบทสนทนา", + "cacheOpt": "ปรับให้เหมาะกับแคช", + "cacheOptDesc": "เก็บคำนำหน้าพรอมต์ที่นำกลับมาใช้ซ้ำได้ไว้ในบัญชีผู้ให้บริการเดิม", + "priorityDesc": "การสลับสำรองตามลำดับ โดยลองผู้ให้บริการ 1 ก่อน จากนั้นจึงลองผู้ให้บริการ 2 และดำเนินต่อไปตามลำดับ", + "weightedDesc": "กระจายทราฟฟิกตามน้ำหนักเปอร์เซ็นต์ระหว่างผู้ให้บริการ", + "modelRoutingTitle": "กฎการกำหนดเส้นทางโมเดล", + "modelRoutingDesc": "กำหนดเส้นทางโมเดลไปยังคอมโบที่ระบุโดยอัตโนมัติด้วยรูปแบบ glob", + "addRule": "เพิ่มกฎ", + "routeToCombo": "กำหนดเส้นทางไปยังคอมโบ", + "selectCombo": "เลือกคอมโบ...", + "priorityHint": "ค่ายิ่งสูงจะยิ่งได้รับการตรวจสอบก่อน ใช้ 10+ สำหรับรูปแบบที่เฉพาะเจาะจง", + "patternHint": "ใช้ * แทนอักขระจำนวนเท่าใดก็ได้ และ ? แทนอักขระหนึ่งตัว โดยไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่", + "noRoutingRules": "ยังไม่ได้กำหนดค่ากฎการกำหนดเส้นทาง คำขอจะใช้คอมโบส่วนกลางเป็นค่าเริ่มต้น", + "routingRuleHint": "เพิ่มกฎ เช่น claude-opus* -> frontier-combo เพื่อกำหนดเส้นทางคำขอโดยอัตโนมัติ", + "deleteRoutingRule": "ลบกฎการกำหนดเส้นทางโมเดลนี้หรือไม่", + "exactMatchMode": "การจับคู่แบบตรงทั้งหมด", + "wildcardPatternMode": "รูปแบบไวลด์การ์ด", + "exactMatchModeDesc": "ใช้นามแฝงแบบตรงกันทุกประการสำหรับ ID โมเดลที่เลิกใช้หรือเปลี่ยนชื่อแล้ว", + "wildcardPatternModeDesc": "ใช้นามแฝงแบบไวลด์การ์ดที่มี * และ ? เมื่อกลุ่มโมเดลควรถูกแมปไปยังเป้าหมายเดียวกัน", + "noExactAliasesConfigured": "ยังไม่ได้กำหนดค่านามแฝงแบบตรงกันทุกประการ", + "wildcardRulesTitle": "กฎไวลด์การ์ด", + "noWildcardAliasesConfigured": "ยังไม่ได้กำหนดค่านามแฝงแบบไวลด์การ์ด", + "overview": "ภาพรวม", + "unknownError": "ข้อผิดพลาดที่ไม่ทราบสาเหตุ", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "รายการที่อนุญาต", + "syncDisabled": "ปิดใช้งานการซิงค์", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "เปิดใช้งานการซิงค์", + "blacklist": "รายการที่บล็อก", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "โมเดลที่ซิงค์แล้ว", + "budget": "งบประมาณ", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "ไม่สามารถรีเซ็ตราคา: {reason}", - "tab": "Tab", + "tab": "แท็บ", "pricingSavedProvider": "ราคาที่บันทึกไว้สำหรับ {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "ไม่สามารถบันทึกราคา: {reason}", "pricingResetProvider": "รีเซ็ตราคาสำหรับ {provider}", - "nextSync": "Next Sync", + "nextSync": "การซิงค์ครั้งถัดไป", "pricingSyncFailedWithReason": "การซิงค์ราคาล้มเหลว: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "ล้างราคาที่ซิงค์แล้ว", + "compressionTitle": "การบีบอัดพรอมต์", + "compressionDesc": "ลดการใช้โทเค็นด้วยการบีบอัดพรอมต์ก่อนส่งไปยังผู้ให้บริการ", "compressionGuidanceFullGuideLink": "คู่มือการบีบอัดฉบับเต็ม", "compressionGuidanceShow": "รายละเอียด", "compressionGuidanceHide": "ซ่อนรายละเอียด", @@ -7485,16 +7488,16 @@ "tokenSaverInputCompressionDesc": "เขียนประวัติการแชทที่มีสิทธิ์ใหม่ในขณะที่ยังคงรักษาโค้ด URL และเจตนาไว้", "tokenSaverFineTunePrefix": "ปรับแต่งแต่ละเอนจินใน", "tokenSaverFineTuneSuffix": "หรือรวมเอนจินต่อคำขอใน", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", - "compressionModeUltra": "Ultra", + "compressionMode": "โหมดการบีบอัด", + "compressionModeOff": "ปิด", + "compressionModeOffDesc": "ไม่มีการบีบอัด", + "compressionModeLite": "แบบเบา", + "compressionModeLiteDesc": "ลดช่องว่างและบรรทัดว่าง", + "compressionModeStandard": "มาตรฐาน (Caveman)", + "compressionModeStandardDesc": "การบีบอัดตามกฎด้วยรูปแบบมากกว่า 30 รูปแบบ โดยคงบล็อกโค้ดและ URL ไว้", + "compressionModeAggressive": "เข้มข้น", + "compressionModeAggressiveDesc": "การสรุป + การบีบอัดผลลัพธ์จากเครื่องมือ + การลดทอนแบบค่อยเป็นค่อยไป เพื่อประหยัดสูงสุด", + "compressionModeUltra": "สูงสุด", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "การกำหนดค่าเครื่องยนต์เชิงรุก", "compressionAggressiveConfigDesc": "ปรับแต่งการสรุป การบีบอัดเครื่องมือ และขีดจำกัดอายุ", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "จำนวนข้อความล่าสุดที่เก็บไว้ในแต่ละระดับอายุ (สูงกว่า = เก็บรักษาไว้มากกว่า)", "compressionToolStrategies": "กลยุทธ์ผลลัพธ์ของเครื่องมือ", "compressionToolStrategiesDesc": "สลับกลยุทธ์การบีบอัดสำหรับผลลัพธ์เครื่องมือประเภทต่างๆ", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "การตั้งค่าทั่วไป", + "compressionAutoTrigger": "เกณฑ์การเรียกใช้โดยอัตโนมัติ", + "compressionCacheTTL": "TTL ของแคช", + "compressionPreserveSystem": "คงพรอมต์ระบบไว้", "compressionPreserveSystemAlways": "เสมอ", "compressionPreserveSystemWhenNoCache": "เมื่อไม่มีแคช", "compressionPreserveSystemNever": "ไม่เคย", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "บันทึกแล้ว", "compressionExclusionsCount": "กำหนด {count, plural, one {# การยกเว้น} other {# การยกเว้น}}", "compressionExclusionsEmpty": "ยังไม่มีการกำหนดการยกเว้น — โมเดล/จุดสิ้นสุดทุกตัวมีสิทธิ์ได้รับการบีบอัด (พฤติกรรมเริ่มต้น)", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "การกำหนดค่าเอนจิน Caveman", + "compressionCavemanConfigDesc": "ปรับแต่งเอนจินการบีบอัดตามกฎอย่างละเอียด", "compressionCavemanPanelHint": "การเปิด/ปิดและระดับของมันถูกตั้งค่าในแผงควบคุม:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "บีบอัดบทบาทของข้อความ", + "compressionRoleUser": "ผู้ใช้", + "compressionRoleAssistant": "ผู้ช่วย", + "compressionRoleSystem": "ระบบ", + "compressionMinLength": "ความยาวข้อความขั้นต่ำ", + "compressionSkipRules": "กฎการข้ามการบีบอัด", + "compressionSkipRulesDesc": "คลิกกฎเพื่อข้ามกฎเหล่านั้นระหว่างการบีบอัด", + "compressionPreservePatterns": "รูปแบบที่คงไว้", + "compressionPreservePatternsDesc": "รูปแบบ Regex ที่จะไม่ถูกบีบอัด (หนึ่งรายการต่อบรรทัด)", + "compressionLogTitle": "บันทึกการบีบอัด", + "compressionLogEmpty": "ยังไม่มีคำขอที่ถูกบีบอัด สถิติการบีบอัดจะแสดงที่นี่เมื่อมีการประมวลผลคำขอโดยเปิดใช้งานการบีบอัด", "minutes": "นาที", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "การกรองเอาต์พุตของเครื่องมือโดยรับรู้คำสั่ง", + "compressionModeCodexResponses": "เอาต์พุตของเครื่องมือ Responses", + "compressionModeCodexResponsesDesc": "การบีบอัดแบบระมัดระวังสำหรับเอาต์พุตของเชลล์ แพตช์ การค้นหา การบิลด์ และ JSON ที่เข้าเกณฑ์", + "compressionModeStacked": "แบบซ้อน", + "compressionModeStackedDesc": "การกรองเอาต์พุตของเครื่องมือด้วย RTK ตามด้วยการบีบอัดข้อความด้วย Caveman", + "qdrantTitle": "Qdrant (หน่วยความจำเวกเตอร์)", + "qdrantDesc": "ไม่บังคับ จัดทำดัชนีหน่วยความจำเชิงความหมายในฐานข้อมูลเวกเตอร์ภายนอกเพื่อให้เรียกคืนได้รวดเร็วยิ่งขึ้น", + "qdrantStatusActive": "ใช้งานอยู่", + "qdrantStatusError": "ข้อผิดพลาด", + "qdrantStatusDisabled": "ปิดใช้งาน", + "qdrantEnable": "เปิดใช้งาน Qdrant", + "qdrantEnableDesc": "เมื่อเปิดใช้งาน กลยุทธ์เชิงความหมาย/แบบไฮบริดจะสามารถใช้ Qdrant เพื่อเรียกคืนหน่วยความจำได้", + "qdrantTesting": "กำลังทดสอบ...", + "qdrantTestConnection": "ทดสอบการเชื่อมต่อ", + "qdrantSaved": "บันทึกการกำหนดค่าแล้ว", + "qdrantSaveError": "บันทึกการกำหนดค่าไม่สำเร็จ", + "qdrantHostHint": "ไม่ต้องระบุพอร์ต ตัวอย่าง: 127.0.0.1 หรือ http://qdrant", + "qdrantPort": "พอร์ต", + "qdrantPortHint": "ค่าเริ่มต้นของ Qdrant: 6333", + "qdrantCollectionHint": "ตำแหน่งที่ใช้จัดเก็บพอยต์หน่วยความจำ", + "qdrantEmbeddingModel": "โมเดล Embedding", + "qdrantHelpTitle": "ความช่วยเหลือในการตั้งค่าด่วน", + "qdrantHelpQuickTitle": "การตั้งค่าด่วน (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. โฮสต์: IP/URL ของ Qdrant, พอร์ต: 6333, คอลเลกชัน: omniroute_memory", + "qdrantHelpStep2": "2. หากใช้ nvidia/llama-nemotron-embed-vl-1b-v2:free ให้กำหนดมิติของคอลเลกชันเป็น 2048", + "qdrantHelpStep3": "3. ช่องโมเดล: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free", + "qdrantHelpStep4": "4. บันทึก ทดสอบการเชื่อมต่อ แล้วทดสอบการค้นหา", + "qdrantEmbeddingQuickSelect": "เลือกอย่างรวดเร็วจากโมเดลที่ค้นพบ...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "รูปแบบ: provider/model ต้องกำหนดค่าข้อมูลรับรองของผู้ให้บริการไว้แล้ว", + "qdrantApiKeyPlaceholderKeep": "(เว้นว่างไว้เพื่อคงคีย์ปัจจุบัน)", + "qdrantApiKeyPlaceholderOptional": "(เว้นว่างไว้หากไม่ได้ใช้)", + "qdrantSaveHint": "เคล็ดลับ: แก้ไขโฮสต์/พอร์ต/คอลเลกชัน/โมเดล แล้วคลิกบันทึก API key เป็นตัวเลือกเสริม", + "qdrantSearchTestTitle": "ทดสอบการค้นหา", + "qdrantSearchTestDesc": "สร้าง embedding และค้นหาใน Qdrant", + "qdrantSearchPlaceholder": "ตัวอย่าง: ค่ากำหนดของผู้ใช้ ประวัติ ฯลฯ", + "qdrantNoResults": "ไม่พบผลลัพธ์ (หรือยังไม่ได้กำหนดค่า Qdrant)", + "qdrantCleanupTitle": "การเก็บรักษาและการล้างข้อมูล", + "qdrantCleanupDesc": "ลบจุดที่หมดอายุและเก่าโดยอิงตาม", + "searching": "กำลังค้นหา...", + "cleaning": "กำลังล้างข้อมูล...", + "cleanNow": "ล้างตอนนี้", "optional": "ไม่จำเป็น", "current": "ปัจจุบัน", "remove": "ลบ", @@ -7600,19 +7603,19 @@ "resilienceScope": "ขอบเขต:", "resilienceTrigger": "ทริกเกอร์:", "resilienceEffect": "ผล:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "คิวคำขอและอัตราการส่ง", + "resilienceAutoEnableApiKeyProviders": "เปิดใช้งานอัตโนมัติสำหรับผู้ให้บริการที่ใช้ API key", + "resilienceRequestsPerMinute": "จำนวนคำขอต่อนาที", + "resilienceMinTimeBetweenRequests": "ระยะเวลาขั้นต่ำระหว่างคำขอ", + "resilienceConcurrentRequests": "คำขอพร้อมกัน", + "resilienceConnectionScopeConcurrentRequests": "จำนวนคำขอพร้อมกันต่อการเชื่อมต่อ/ขอบเขตโควตา", + "resilienceGlobalConcurrentRequests": "จำนวนคำขอพร้อมกันไปยังต้นทางทั้งหมด (0 = ปิดใช้งาน)", "resilienceMaxQueueWaitTime": "เวลารอคิวสูงสุด", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "ระยะพักพื้นฐาน", + "resilienceUseUpstreamRetryHints": "ใช้คำแนะนำการลองใหม่จากต้นทาง", + "resilienceDefaultPerProvider": "ค่าเริ่มต้น (ต่อผู้ให้บริการ)", + "resilienceAlwaysOn": "เปิดตลอดเวลา", + "resilienceAlwaysOff": "ปิดตลอดเวลา", "routingRemoveEntry": "ลบรายการ", "routingNeedlesSubstrings": "เข็ม (สายย่อยเพื่อให้ตรงกัน)", "routingCaseSensitive": "คำนึงถึงขนาดตัวพิมพ์", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "ส่งไปยังโมเดลการมองเห็น (vision model) ก่อนที่คำอธิบายที่แยกออกมาจะถูกแทรกกลับเข้าไปในคำขอเดิม", "visionBridgeTimeoutMs": "หมดเวลา (มิลลิวินาที)", "visionBridgeMaxImagesPerRequest": "รูปภาพสูงสุดต่อคำขอ", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "จำนวนขั้นการหน่วงเวลาสูงสุด", + "resilienceProviderBreakerTitle": "เซอร์กิตเบรกเกอร์ตามผู้ให้บริการ", + "resilienceFailureThreshold": "เกณฑ์จำนวนความล้มเหลว", + "resilienceDegradationThreshold": "เกณฑ์การลดประสิทธิภาพ", "resilienceResetTimeout": "รีเซ็ตการหมดเวลา", "resilienceFailureThresholdLabel": "เกณฑ์ความล้มเหลว", "resilienceResetTimeoutLabel": "รีเซ็ตการหมดเวลา", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "ระยะพักการเชื่อมต่อ", "resilienceUseUpstreamRetryHintsLabel": "ใช้คำแนะนำในการลองอัปสตรีมอีกครั้ง", "resilienceUseUpstream429BreakerLabel": "ใช้คำแนะนำอัปสตรีม 429 (เบรกเกอร์)", "resilienceMaxBackoffStepsLabel": "ขั้นตอนการถอยหลังสูงสุด", "resilienceYes": "ใช่", "resilienceNo": "ไม่", - "resilienceDefault": "Default", + "resilienceDefault": "ค่าเริ่มต้น", "storageDatabaseBackupRetention": "การเก็บรักษาการสำรองฐานข้อมูล", "storageDatabaseBackups": "การสำรองข้อมูลฐานข้อมูล", "storageBackupRetentionDescription": "การสำรองข้อมูล SQLite อัตโนมัติจะถูกจัดเก็บไว้ใน", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "นำเข้า JSON แบบเก่าสำเร็จแล้ว!", "jsonImportFailed": "นำเข้า JSON ล้มเหลว", "jsonImportError": "เกิดข้อผิดพลาดระหว่างการนำเข้า JSON", + "jsonImportAuthRequired": "ต้องยืนยันตัวตนเพื่อนำเข้าการกำหนดค่า JSON แบบเดิม โปรดลงชื่อเข้าใช้หรือตั้งค่าให้เสร็จสิ้นก่อน", + "databaseSettingsAuthRequiredTitle": "ต้องยืนยันตัวตน", + "databaseSettingsAuthRequiredBody": "การตั้งค่าฐานข้อมูลและการนำเข้า JSON ใช้ได้เฉพาะผู้ดูแลระบบที่ยืนยันตัวตนแล้วเท่านั้น ลงชื่อเข้าใช้หรือตั้งค่าให้เสร็จสิ้นเพื่อดูและแก้ไข", + "databaseSettingsAuthRequiredCta": "ลงชื่อเข้าใช้", "storagePurgeData": "ล้างข้อมูล", "storagePurgeDataDesc": "ลบระเบียนทั้งหมดทันทีโดยไม่ต้องใช้การตรวจสอบการเก็บรักษาข้อมูล โปรดใช้ด้วยความระมัดระวัง", "storageRetentionCleanup": "ตั้งค่าการเก็บรักษาข้อมูล", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "โหมด: {mode}", "compressionAdaptiveOff": "งบประมาณบริบทแบบปรับตัว: ปิด (การทริกเกอร์อัตโนมัติแบบเก่า)", "compressionAdaptiveTarget": "แบบปรับตัว ({mode}, นโยบาย: {policy}) — เป้าหมาย ≈ {target, number} โทเค็น (สำหรับหน้าต่าง {contextLimit, number} โทเค็น)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "งบประมาณบริบทแบบปรับเปลี่ยนได้", + "compressionAdaptiveModeOff": "ปิด (ทริกเกอร์อัตโนมัติแบบเดิม)", + "compressionAdaptiveModeFloor": "ค่าขั้นต่ำ (รับประกันว่าใส่ได้เสมอ)", + "compressionAdaptiveModeReplace": "แทนที่ทริกเกอร์อัตโนมัติ", + "compressionAdaptivePolicy": "นโยบายงบประมาณ", + "compressionAdaptivePolicyReserve": "สำรองไว้สำหรับเอาต์พุต", + "compressionAdaptivePolicyPercentage": "เปอร์เซ็นต์ของหน้าต่าง", + "compressionAdaptivePolicyAbsolute": "งบประมาณโทเค็นแบบค่าสัมบูรณ์", "compressionOutputStylesDescription": "แทรกคำสั่งกำหนดรูปแบบการตอบกลับโดยไม่ต้องเขียนผลลัพธ์ของผู้ให้บริการใหม่ สามารถผสมผสานได้อย่างอิสระ", "mcpAccessibilityDescription": "กำหนดขอบเขตผลลัพธ์เครื่องมือ MCP (แยกพื้นที่จัดเก็บ)", "compressionStylesTileSummary": "{tokens, number} โทเค็นที่ประหยัดได้ · {runs, plural, one {จัดรูปแบบแล้ว # ครั้ง} other {จัดรูปแบบแล้ว # ครั้ง}}", @@ -7844,9 +7851,9 @@ "minimal": "น้อยที่สุด", "standard": "มาตรฐาน", "aggressive": "เชิงรุก", - "lite": "Lite", - "full": "Full", - "ultra": "Ultra" + "lite": "เบา", + "full": "เต็มรูปแบบ", + "ultra": "อัลตรา" }, "compressionEngine": { "session-dedup": { @@ -7858,7 +7865,7 @@ "description": "ตัวทำเครื่องหมายการดึงข้อมูลตามที่อยู่เนื้อหา" }, "lite": { - "label": "Lite", + "label": "เบา", "description": "การล้างช่องว่างและรูปแบบ" }, "rtk": { @@ -7866,8 +7873,8 @@ "description": "การกรองผลลัพธ์ของคำสั่ง" }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "เอาต์พุตเครื่องมือ Responses", + "description": "บีบอัดเอาต์พุตของเครื่องมือ Responses ที่รองรับอย่างระมัดระวัง" }, "headroom": { "label": "พื้นที่สำรอง", @@ -7878,7 +7885,7 @@ "description": "การให้คะแนนประโยคแบบดึงข้อมูลเปรียบเทียบกับคำค้นหาล่าสุดของผู้ใช้" }, "caveman": { - "label": "Caveman", + "label": "มนุษย์ถ้ำ", "description": "การบีบอัดข้อความตามกฎ" }, "aggressive": { @@ -7890,7 +7897,7 @@ "description": "การตัดแต่งเชิงความหมาย (ONNX)" }, "ultra": { - "label": "Ultra", + "label": "อัลตรา", "description": "การตัดแต่งโทเค็นแบบฮิวริสติกพร้อม SLM ทางเลือก" }, "omniglyph": { @@ -7908,12 +7915,12 @@ "description": "บันได YAGNI: การเปลี่ยนแปลงที่เล็กที่สุดที่ใช้งานได้จริง โดยไม่มีการสร้าง Abstraction ที่ไม่ได้ร้องขอ" }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "หางม้า (นักพัฒนาอาวุโสสายขี้เกียจ)", + "description": "วินัยแบบนักพัฒนาอาวุโสสายขี้เกียจ: ไต่ระดับ YAGNI แก้ที่ต้นเหตุ และใช้ส่วนต่างที่เล็กที่สุดซึ่งทำงานได้" }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "ฉันมี ADHD (ลงมือก่อน)", + "description": "เอาต์พุตแบบลงมือก่อน: เริ่มด้วยสิ่งที่ต้องทำถัดไป ลำดับขั้นตอนด้วยตัวเลข ระบุขั้นตอนถัดไปที่ชัดเจนเพียงหนึ่งข้อ และไม่มีเกริ่นนำ" }, "terse-cjk": { "label": "CJK แบบกระชับ (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI ทางเลือก", "cliproxyapiEnableFallback": "เปิดใช้งานทางเลือกสำรอง CLIProxyAPI", "cliproxyapiUrl": "URL ของ CLIProxyAPI", + "headroomProxyTitle": "พร็อกซี Headroom", + "headroomProxyDesc": "URL ของพร็อกซีประหยัดโทเค็น Headroom ซึ่งเป็นตัวเลือก หากเว้นว่างจะใช้ HEADROOM_URL หรือ http://localhost:8787", + "headroomProxyUrl": "URL ของ Headroom", + "headroomProxyUrlHint": "สามารถเริ่ม URL แบบลูปแบ็กได้จากหน้านี้ ส่วน URL ภายนอกจะถูกตรวจสอบเท่านั้น", + "headroomProxySave": "บันทึก", + "headroomProxyStart": "เริ่ม", + "headroomProxyStop": "หยุด", + "headroomProxyExternalHint": "URL นี้ไม่ใช่ลูปแบ็ก ดังนั้น OmniRoute จะไม่เปิด CLI ภายในเครื่อง", "cliproxyapiStatus": "สถานะ CLIProxyAPI", "cliproxyapiNotDetected": "ตรวจไม่พบ", "cliproxyapiImportAuthTitle": "นำเข้าบัญชีจาก CLIProxyAPI", @@ -7989,14 +8004,14 @@ "codexFastTierDesc": "ฉีด service_tier=priority ทั่วโลกสำหรับคำขอ OpenAI Codex", "codexFastTierHint": "เมื่อเปิดใช้งาน OmniRoute จะเพิ่ม service_tier=priority ไปยังคำขอ Codex ขาออกสำหรับการเชื่อมต่อที่ไม่ได้ระบุระดับ ระดับความสำคัญต้องใช้คีย์ OpenAI Enterprise API หรือเส้นทาง ChatGPT-auth Codex คีย์ประเภทอื่นๆ จะได้รับข้อผิดพลาดเกี่ยวกับระดับจาก OpenAI การตั้งค่าต่อการเชื่อมต่อในหน้าผู้ให้บริการ Codex จะมีความสำคัญ", "codexFastTierSaveError": "ไม่สามารถอัปเดตการตั้งค่า Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "การปิงโควตา Codex อัตโนมัติ", + "codexAutoPingDesc": "เลือกเปิดใช้เป็นรายจุดเชื่อมต่อ: ส่งคำขอขนาดเล็กทันทีหลังจากหน้าต่างเซสชัน Codex รีเซ็ต เพื่อให้พร้อมใช้งานเมื่อคุณต้องการ", + "codexAutoPingWarning": "ใช้โควตา Codex จริงเล็กน้อยในการปิงทุกครั้ง ค่าเริ่มต้นคือปิด — เปิดใช้เฉพาะกับจุดเชื่อมต่อที่คุณใช้งานเป็นประจำเท่านั้น", + "codexAutoPingSaveError": "อัปเดตการตั้งค่าการปิงอัตโนมัติของ Codex ไม่สำเร็จ", + "codexAutoPingToggleAria": "สลับการปิงโควตา Codex อัตโนมัติสำหรับ {connection}", "codexFastTierTierLabel": "ระดับบริการ", "codexFastTierTierPriority": "ลำดับความสำคัญ", - "codexFastTierTierFlex": "Flex", + "codexFastTierTierFlex": "ยืดหยุ่น", "codexFastTierTierDefault": "ค่าเริ่มต้น", "codexFastTierModelsLabel": "โมเดลระดับ Fast", "codexFastTierModelsHint": "เฉพาะโมเดลที่เลือกไว้เท่านั้นที่จะได้รับ service_tier เมื่อเปิดใช้งาน Fast Tier", @@ -8022,7 +8037,7 @@ "LOCAL_ONLY": "เฉพาะภายในเครื่อง", "ALWAYS_PROTECTED": "ได้รับการปกป้องเสมอ", "MANAGEMENT": "การจัดการ", - "CLIENT_API": "Client API", + "CLIENT_API": "API ไคลเอนต์", "PUBLIC": "สาธารณะ" }, "bypass": { @@ -8129,9 +8144,9 @@ "resilienceCredentialHealthInterval": "ช่วงตรวจส่วนกลาง", "resilienceCredentialHealthEveryMinutes": "ทุก {minutes} นาที", "resilienceCredentialHealthHint": "0 ปิดการกวาดพื้นหลัง (สูงสุด 1440 นาที = 24 ชม.) การเชื่อมต่อที่มีค่าการตรวจสุขภาพของตัวเองจะไม่ใช้ค่าเริ่มต้นส่วนกลางนี้ ค่า 0 บนการเชื่อมต่อหนึ่งรายการจะตัดออกแม้การกวาดส่วนกลางเปิดอยู่", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", - "sessionAffinityTitle": "Session affinity", + "forcedFingerprintTitle": "เปิดใช้งานเสมอสำหรับ {provider} — จำเป็นต่อความปลอดภัยของบัญชี OAuth และไม่สามารถปิดได้", + "forcedFingerprintBadge": "จำเป็น", + "sessionAffinityTitle": "การผูกเซสชัน", "sessionAffinityDesc": "คงการสนทนาหนึ่งๆ ให้อยู่ในบัญชีเดิมเป็นเวลาตามจำนวนวินาทีนี้ สำหรับผู้ให้บริการใดๆ การตั้งค่าเป็น 0 จะเป็นการปิดใช้งาน", "sessionAffinityTtl": "TTL ของ Affinity (วินาที)", "resetAwareQuotaCacheTitle": "รีเซ็ตแคชโควต้าที่รับรู้", @@ -8165,9 +8180,9 @@ "cloudflareRelayModalTitle": "ปรับใช้ Cloudflare Worker Relay", "cloudflareRelayWarning": "ปรับใช้ Cloudflare Worker ที่ทำหน้าที่เป็นพร็อกซีคำขอ LLM ผ่านเครือข่าย Edge ของ Cloudflare — ซ่อน IP ของโฮสต์ไว้เบื้องหลังที่อยู่ Cloudflare แบบไดนามิก Worker จะบังคับใช้รหัสลับการตรวจสอบสิทธิ์แบบใช้ครั้งเดียว เพื่อไม่ให้ URL workers.dev สาธารณะถูกนำไปใช้ซ้ำเป็น Open Relay", "cloudflareRelayTokenHowto": "สร้างโทเค็น API ภายใต้ My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit", - "cloudflareRelayAccountIdLabel": "Cloudflare Account ID", + "cloudflareRelayAccountIdLabel": "รหัสบัญชี Cloudflare", "cloudflareRelayAccountIdHint": "ดูได้ที่ด้านขวาของหน้าภาพรวมแดชบอร์ด Cloudflare", - "cloudflareRelayApiTokenLabel": "Cloudflare API Token", + "cloudflareRelayApiTokenLabel": "โทเค็น API ของ Cloudflare", "cloudflareRelayApiTokenHint": "ต้องใช้สิทธิ์ 'Workers Scripts: Edit' โทเค็นนี้จะใช้เฉพาะตอนปรับใช้เท่านั้นและจะไม่มีการจัดเก็บไว้", "cloudflareRelayProjectNameLabel": "ชื่อ Worker", "cloudflareRelayFreeTierNote": "แพ็กเกจฟรี: 100,000 คำขอ/วัน ต่อบัญชี Cloudflare", @@ -8187,33 +8202,33 @@ "removeErrorCode": "ลบ {code}", "addErrorCode": "เพิ่มรหัสข้อผิดพลาด...", "suggestions": "คำแนะนำ:", - "modelLockoutMaxCooldownHint": "≥ Base Cooldown — 3,600,000ms", + "modelLockoutMaxCooldownHint": "≥ คูลดาวน์พื้นฐาน — 3,600,000ms", "modelLockoutEnabled": "เปิดใช้งานการล็อกโมเดล", "modelLockoutEnabledDescription": "เมื่อเปิดใช้งาน โมเดลที่ล้มเหลวด้วยรหัสข้อผิดพลาดที่กำหนดค่าไว้จะถูกล็อกชั่วคราวเพื่อป้องกันการวนซ้ำการลองใหม่", "modelLockoutErrorCodes": "รหัสข้อผิดพลาด", "modelLockoutErrorCodesDescription": "รหัสสถานะ HTTP ที่ทริกเกอร์การล็อกโมเดล พิมพ์รหัสแล้วคลิกเพิ่ม หรือเลือกจากคำแนะนำ", - "modelLockoutBaseCooldown": "Base Cooldown (ms)", + "modelLockoutBaseCooldown": "คูลดาวน์พื้นฐาน (ms)", "modelLockoutBaseCooldownDescription": "ระยะเวลาคูลดาวน์เริ่มต้นเป็นมิลลิวินาที ก่อนที่จะสามารถลองใช้โมเดลใหม่อีกครั้ง", - "modelLockoutMaxCooldown": "Max Cooldown (ms)", + "modelLockoutMaxCooldown": "คูลดาวน์สูงสุด (ms)", "modelLockoutMaxCooldownDescription": "ระยะเวลาคูลดาวน์สูงสุดในหน่วยมิลลิวินาที ป้องกันการล็อกที่ยาวนานเกินไป", - "modelLockoutExponentialBackoff": "Exponential Backoff", + "modelLockoutExponentialBackoff": "การหน่วงเวลาแบบเอ็กซ์โพเนนเชียล", "modelLockoutExponentialBackoffDescription": "เมื่อเปิดใช้งาน ความล้มเหลวติดต่อกันแต่ละครั้งจะเพิ่มระยะเวลาคูลดาวน์แบบเอ็กซ์โพเนนเชียล", "modelLockoutMaxBackoffSteps": "จำนวนขั้นตอน Backoff สูงสุด", "modelLockoutMaxBackoffStepsDescription": "จำนวนขั้นตอน backoff สูงสุดก่อนที่ระยะเวลาคูลดาวน์จะหยุดเพิ่มขึ้น ในการกำหนดค่าส่วนใหญ่จะถึงขีดจำกัด Max Cooldown ก่อน ทำให้ค่านี้เป็นเพดานความปลอดภัยเมื่อมีการเพิ่ม Max Cooldown", "disableSessionStickiness": "ปิดใช้งาน Session Stickiness", "disableSessionStickinessDesc": "คอมโบแบบ Round-robin และแบบสุ่มจะสลับไปยังการเชื่อมต่ออื่นในทุกคำขอ แทนที่จะตรึงการสนทนาทั้งหมดไว้กับการเชื่อมต่อเดียวตามแฮชของข้อความแรก ปิดไว้เพื่อรักษา prompt-cache hits สำหรับการแชทแบบหลายรอบ การแทนที่ระดับคอมโบจะมีผลเหนือกว่า", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "การกำหนดเส้นทางตามตำแหน่งแคชพรอมต์", + "promptCacheAffinityDesc": "เลือกใช้บัญชีผู้ให้บริการเดิมสำหรับคีย์แคชพรอมต์ที่ตรงกัน โดยยังคงรองรับการสลับเมื่อสถานะไม่พร้อมใช้งานหรือโควตาไม่เพียงพอ", + "reasoningTokenBuffer": "บัฟเฟอร์โทเค็นการให้เหตุผล", + "reasoningTokenBufferDesc": "อนุญาตให้การกำหนดเส้นทางแบบผสมเพิ่มพื้นที่สำรองของ max_tokens เฉพาะสำหรับโมเดลการให้เหตุผลที่รู้จัก เมื่อบัฟเฟอร์ทั้งหมดอยู่ภายในขีดจำกัดเอาต์พุตที่ทราบ", + "zeroLatencyOptimizations": "การเพิ่มประสิทธิภาพแบบไร้เวลาแฝง", + "zeroLatencyOptimizationsDesc": "เลือกใช้การส่งคำขอสำรองแบบแข่งขัน การข้ามตามการคาดการณ์ TTFT และการบีบอัดคำขอสำรองเชิงรุก ปิดไว้เพื่อป้องกันไม่ให้ฟีเจอร์ลดเวลาแฝงเหล่านี้แข่งกันส่งไปยังเป้าหมายหรือบีบอัดคำขอสำรอง", "credentialRedaction": "การปกปิดข้อมูลรับรอง", "credentialRedactionDesc": "ปกปิดคีย์ API, โทเค็น และข้อมูลลับจากบริบทที่ส่งไปยังผู้ให้บริการและจากการตอบกลับ", "enableCredentialRedaction": "เปิดใช้งานการปกปิดข้อมูลรับรอง", "enableCredentialRedactionDesc": "ล้างคีย์ API, โทเค็น, ไพรเวตคีย์ และ JWT ออกจากข้อความ, การเรียกใช้เครื่องมือ และการตอบกลับ", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "ปิดใช้งานการซิงค์อัตโนมัติ", + "pricingAutoSyncEnabled": "เปิดใช้งานการซิงค์อัตโนมัติ", "modalityBridgeIntro": "แปลงเนื้อหาแบบหลายสื่อเป็นข้อความก่อนส่งถึงโมเดลที่รองรับเฉพาะข้อความ สะพานสำหรับภาพ เสียง และวิดีโอพร้อมใช้งานและกำหนดค่าได้", "modalityBridgeVisionTab": "วิสัยทัศน์", "modalityBridgeAudioTab": "เสียง", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "สุขภาพ", "cliproxyapiPort": "พอร์ต", "qdrantHost": "โฮสต์", - "qdrantCollection": "การรวบรวม", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "การรวบรวม" }, "contextRtk": { "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "description": "การบีบอัดที่รับรู้คำสั่งสำหรับเอาต์พุตของเครื่องมือ บันทึกเทอร์มินัล และผลลัพธ์การบิลด์", + "enabled": "เปิดใช้งาน", + "intensity": "ระดับความเข้มข้น", + "intensityMinimal": "น้อยที่สุด", + "intensityStandard": "มาตรฐาน", + "intensityAggressive": "เข้มข้น", + "toolResults": "ผลลัพธ์ของเครื่องมือ", + "assistantMessages": "ข้อความของผู้ช่วย", + "codeBlocks": "บล็อกโค้ด", "filterCatalog": "แคตตาล็อกตัวกรอง", "filterCatalogDesc": "ตัวกรองผลลัพธ์ที่มีอยู่ตามหมวดหมู่", "guidedConfig": "การกำหนดค่า", "guidedConfigDesc": "ปรับวิธีที่ RTK กรองเอาต์พุตเทอร์มินัลของคุณ", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "จำนวนบรรทัดสูงสุด", + "maxChars": "จำนวนอักขระสูงสุด", "deduplicateThreshold": "เกณฑ์ที่ซ้ำกัน", "customFilters": "ตัวกรองแบบกำหนดเอง", "detectedType": "ประเภทที่ตรวจพบ", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "ความล้มเหลว", "rawOutputAlways": "เสมอ", "rawOutputMaxBytes": "ไบต์เอาต์พุตดิบสูงสุด", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "การทดสอบตัวกรอง", + "pasteOutput": "วางเอาต์พุตของเครื่องมือเพื่อทดสอบการกรอง...", "presetHigh": "ก้าวร้าว", "presetLow": "เบา", "presetMaxChars": "อักขระเอาท์พุตสูงสุด", "presetMaxLines": "เส้นเอาต์พุตสูงสุด", "presetMedium": "มาตรฐาน", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "เรียกใช้", + "result": "ผลลัพธ์", + "previewEmpty": "เรียกใช้ตัวอย่างเพื่อดูตัวอย่างเอาต์พุต RTK", + "detected": "ตรวจพบ", "masterSwitchOffAlert": "สวิตช์หลักของ Token Saver ปิดอยู่ — การตั้งค่าเหล่านี้จะไม่มีผลกับคำขอจนกว่าคุณจะเปิดใช้งานจากหน้า Endpoint", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "โทเค็นที่กรองออก", + "filtersActive": "ตัวกรองที่ทำงานอยู่", + "requests": "คำขอ", + "avgSavings": "การประหยัดโดยเฉลี่ย", "simpleMode": "เรียบง่าย", "advancedMode": "ขั้นสูง", "searchFilters": "ตัวกรองการค้นหา...", @@ -8481,7 +8488,7 @@ "savings": "ส่วนที่ประหยัดได้", "original": "ต้นฉบับ", "compressed": "บีบอัดแล้ว", - "diff": "Diff", + "diff": "ความแตกต่าง", "last7Days": "7 วันที่ผ่านมา", "noDataYet": "ยังไม่มีข้อมูล", "runs": "การรัน", @@ -8499,7 +8506,7 @@ "description": "การบีบอัดข้อมูลแบบตารางของอาร์เรย์ JSON ที่เป็นเนื้อเดียวกันแบบไม่สูญเสียข้อมูล พร้อมตัวระบุจำนวนแถวที่ชัดเจน" }, "session-dedup": { - "name": "Session Dedup", + "name": "การขจัดข้อมูลซ้ำในเซสชัน", "description": "การลบข้อมูลบล็อกที่ซ้ำกันข้ามเทิร์นพร้อมมาร์กเกอร์เนื้อหาที่กู้คืนได้" }, "ccr": { @@ -8515,11 +8522,11 @@ "description": "การลดช่องว่าง ผลลัพธ์ของเครื่องมือ และ URL รูปภาพอย่างรวดเร็ว" }, "aggressive": { - "name": "Aggressive", + "name": "เข้มข้น", "description": "การสรุปย่อ การบีบอัดผลลัพธ์ของเครื่องมือ และการลดความสำคัญตามอายุแบบต่อเนื่อง" }, "ultra": { - "name": "Ultra", + "name": "สูงสุด", "description": "การตัดแต่งโทเค็นตามหลักฮิวริสติกพร้อมการทำงานสำรองด้วย SLM ในเครื่อง (ไม่บังคับ)" } }, @@ -8601,9 +8608,9 @@ "bert-base": "BERT-base (710 MB, ความแม่นยำสูงกว่า)" }, "intensity": { - "lite": "Lite", - "full": "Full", - "ultra": "Ultra" + "lite": "เบา", + "full": "เต็มรูปแบบ", + "ultra": "อัลตรา" } }, "modeOptions": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "ชุดผสมการบีบอัด", + "description": "กำหนดวิธีผสานเอนจินสำหรับสถานการณ์การกำหนดเส้นทางต่างๆ", + "createCombo": "สร้างชุดผสมการบีบอัด", + "editCombo": "แก้ไข", + "deleteCombo": "ลบ", + "deleteConfirm": "ลบชุดผสมการบีบอัดนี้หรือไม่", + "pipeline": "ไปป์ไลน์", + "addStep": "เพิ่มขั้นตอน", + "removeStep": "นำออก", + "name": "ชื่อ", + "descriptionField": "คำอธิบาย", + "languagePacks": "แพ็กภาษา", + "outputMode": "โหมดเอาต์พุต", + "assignToRouting": "กำหนดให้กับชุดผสมการกำหนดเส้นทาง", + "noAssignments": "ไม่มีชุดผสมการกำหนดเส้นทางที่พร้อมใช้งาน", + "default": "ค่าเริ่มต้น", + "setAsDefault": "ตั้งเป็นค่าเริ่มต้น", + "save": "บันทึก", + "cancel": "ยกเลิก", + "enabled": "เปิดใช้งาน", "loading": "กำลังโหลด…", "hubTitle": "ศูนย์กลางการบีบอัด", "hubDescription": "เลือกโปรไฟล์การบีบอัดที่จะทำงานทั่วโลก", @@ -8661,22 +8668,22 @@ "contextEditingNote": "ปัจจุบันใช้งานได้สำหรับ Claude (Anthropic) เท่านั้น ซึ่งเป็นโหมดที่มอบหมายให้ผู้ให้บริการล้างบล็อกการใช้เครื่องมือเก่าที่ฝั่งเซิร์ฟเวอร์ — เราจะไม่เขียนข้อความใหม่ และไม่มีผลต่อผู้ให้บริการรายอื่น", "namedCombos": "คอมโบที่ตั้งชื่อไว้", "namedCombosDescription": "บันทึกไปป์ไลน์ที่แตกต่างกันและกำหนดให้กับคอมโบการกำหนดเส้นทางเฉพาะ", + "activeProfileMasterSwitchOffWarning": "โปรไฟล์ที่ใช้งานอยู่ด้านล่างจะไม่ทำงานจนกว่าจะเปิดสวิตช์หลัก \"การบีบอัดพรอมต์\"", + "activeProfileMasterSwitchOffCta": "เปิดสวิตช์ในการตั้งค่า", "comboNamePlaceholder": "ชื่อคอมโบ", "descriptionPlaceholder": "คำอธิบาย", "nameRequired": "ป้อนชื่อคอมโบก่อนบันทึก", "pipelineRequired": "เพิ่มขั้นตอนไปป์ไลน์อย่างน้อยหนึ่งขั้นตอนก่อนบันทึก", "saveComboFailed": "บันทึกคอมโบไม่สำเร็จ (HTTP {status})", "deleteNamedConfirm": "ลบคอมโบ “{name}” หรือไม่?", - "intensityLite": "Lite", - "intensityFull": "Full", - "intensityUltra": "Ultra", + "intensityLite": "เบา", + "intensityFull": "เต็มรูปแบบ", + "intensityUltra": "อัลตรา", "active": "ใช้งานอยู่", "languagePacksList": "แพ็กภาษา: {packs}", "dragToReorder": "ลากเพื่อจัดลำดับขั้นตอนใหม่", "engine": "เอนจิน", - "intensity": "ความเข้ม", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "ความเข้ม" }, "compressionStudio": { "noRun": "ไม่มีการรันการบีบอัดที่พร้อมใช้งาน", @@ -8705,7 +8712,7 @@ "run": "รัน", "laneRejected": "ถูกปฏิเสธ: {reason}", "error": "ข้อผิดพลาด", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "ดูตัวอย่างไปป์ไลน์แบบรวมไม่สำเร็จ: {reason}", "combinedFlow": "โฟลว์รวม", "eachLayer": "แต่ละเลเยอร์แยกกัน", "diff": "ความต่าง", @@ -8714,7 +8721,7 @@ "input": "อินพุต", "output": "เอาต์พุต", "tokenCount": "{count, number} โทเค็น", - "tokenShort": "tok", + "tokenShort": "โทเค็น", "provider": "ผู้ให้บริการ", "judgeModel": "โมเดลผู้ตัดสิน", "judgeModelPlaceholder": "เช่น claude-haiku", @@ -8780,27 +8787,27 @@ }, "enableTitle": "เปิดใช้งานเอนจิน", "enableDescription": "ทำงานเป็นลำดับสุดท้ายในสแตก (หลังจาก RTK/Caveman คลีนข้อความ และ OmniGlyph แปลงส่วนที่เหลือเป็นรูปภาพ) และยังทำงานแบบสแตนด์อโลนผ่านโหมด omniglyph นี่เป็นเวอร์ชันพรีวิวและจะยังคงปิดใช้งานไว้เป็นค่าเริ่มต้นจนกว่าการตรวจสอบความถูกต้องแบบครบวงจร (end-to-end) จะเสร็จสิ้น", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "โปรไฟล์การบีบอัด", + "profileDescription": "โปรไฟล์เป็นขีดจำกัดบน ไม่ใช่ขีดจำกัดล่าง กล่าวคือ โปรไฟล์ที่เข้มงวดกว่าจะไม่สามารถผ่อนคลายได้ด้วยการกำหนดค่าแทนในแต่ละขั้นตอน จากการวัดบนโค้ดเบสนี้: เมื่อใช้แบบปลอดภัยสำหรับการเขียนโค้ดหรือแบบสมดุล เซสชันที่ยังไม่มีประวัติสะสมจะไม่บีบอัดสิ่งใด เนื่องจากทั้งสองแบบจะเพิ่มเกณฑ์จำนวนอักขระขั้นต่ำ และคงพรอมต์ระบบ สคีมาเครื่องมือ และผลลัพธ์จากเครื่องมือไว้ในรูปแบบเดิม", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "เชิงรุก (ค่าเริ่มต้น)", + "description": "นโยบายที่ใช้วัดผลลัพธ์ที่เผยแพร่ โดยแปลงพรอมต์ระบบ เอกสารประกอบเครื่องมือ และประวัติที่มีเนื้อหาหนาแน่นเป็นรูปภาพ" }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "สมดุล", + "description": "คงสถานะปัจจุบันไว้ในรูปแบบเดิมและปกป้อง 8 รอบการสนทนาล่าสุด โดยยุบเฉพาะประวัติเก่าที่ปิดแล้ว" }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "ปลอดภัยสำหรับการเขียนโค้ด", + "description": "คงสิทธิ์ควบคุม สคีมาเครื่องมือ และเอาต์พุตปัจจุบันจากเครื่องมือไว้ในรูปแบบเดิม พร้อมปกป้อง 12 รอบการสนทนาล่าสุด โดยจะไม่บีบอัดสิ่งใดจนกว่าเซสชันจะมีประวัติสะสม" }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "ส่งผ่าน", + "description": "กำหนดเส้นทางโดยไม่แปลงข้อมูล ระบบจะข้ามเอนจินและส่งต่อคำขอโดยไม่มีการแก้ไข" } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "เลือกโปรไฟล์การบีบอัด OmniGlyph", "saved": "บันทึกแล้ว", "saveFailed": "ไม่สามารถบันทึกได้", "enableAria": "เปิดใช้งานเอนจิน OmniGlyph", @@ -8873,7 +8880,7 @@ "providerExposureHint": "เมื่อเปิดใช้งาน โมเดลที่พบจะปรากฏในตัวเลือกผู้ให้บริการทั่วทั้ง OmniRoute", "providerExposureUpdateFailed": "อัปเดตล้มเหลว (HTTP {status})", "providerExposureNetworkFailed": "ข้อผิดพลาดของเครือข่าย — ไม่สามารถอัปเดตการตั้งค่าการเปิดเผยผู้ให้บริการได้", - "webUi": "9Router Web UI", + "webUi": "เว็บ UI ของ 9Router", "openNewTab": "เปิดในแท็บใหม่", "filterLogs": "กรองบันทึก…", "resume": "ดำเนินการต่อ", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "การบีบอัดข้อความตามกฎ ชุดภาษา การวิเคราะห์ และการควบคุมโหมดเอาต์พุต", "advancedConfig": "การกำหนดค่าขั้นสูง", "advancedConfigDesc": "ปรับแต่งลักษณะการบีบอัด", "aggressiveSettings": "การตั้งค่าเชิงรุก", "aggressiveSettingsDesc": "การบีบอัดสูงสุดพร้อมการแลกเปลี่ยนคุณภาพที่อาจเกิดขึ้น", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "คำขอ", + "tokensSaved": "โทเค็นที่ประหยัดได้", + "savingsPercent": "ประหยัดได้ %", + "avgLatency": "เวลาแฝงเฉลี่ย", + "languagePacks": "ชุดภาษา", + "languagePacksDesc": "เปิดใช้กฎการบีบอัดสำหรับภาษาที่ระบุ", "labelAutoTrigger": "บีบอัดอัตโนมัติเมื่อมีบริบทเกินขอบเขต", "labelCompressionRate": "แรงอัด", "labelMaxTokens": "โทเค็นเป้าหมายต่อข้อความ", "labelMinLength": "ความยาวข้อความขั้นต่ำ", "labelMinSavings": "โทเค็นขั้นต่ำที่จะบันทึก", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "เปิดใช้งาน", + "autoDetect": "ตรวจหาภาษาอัตโนมัติ", + "rulesCount": "{count} กฎ", "inputCompressionTitle": "การบีบอัดอินพุต", "inputCompressionDesc": "เขียนประวัติการแชทใหม่ด้วยคำที่สั้นลง ช่วยลดโทเค็นอินพุตลงประมาณ 50%", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "การวิเคราะห์การบีบอัด", + "noAnalytics": "ยังไม่มีข้อมูลวิเคราะห์การบีบอัด", "masterDisabledWarning": "สวิตช์หลักของ Token Saver ปิดอยู่ — การตั้งค่าเหล่านี้จะไม่มีผลกับคำขอจนกว่าคุณจะเปิดใช้งานจากการตั้งค่าการบีบอัดหรือเปลี่ยนที่นี่", "outputMode": "โหมดเอาท์พุต", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "โหมดเอาต์พุต", "quickSettings": "การตั้งค่าด่วน", "quickSettingsDesc": "การตั้งค่าการบีบอัดพื้นฐานเพื่อเริ่มต้น", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "ข้ามอัตโนมัติเมื่อเนื้อหาชัดเจน", + "bypassConditions": "เงื่อนไขการข้าม", "bypassConditionsList": "การรักษาความปลอดภัย ย้อนกลับไม่ได้ การชี้แจง ละเอียดอ่อนต่อคำสั่งซื้อ", "simpleMode": "เรียบง่าย", "advancedMode": "ขั้นสูง", @@ -8944,9 +8951,9 @@ "ultraSettings": "การตั้งค่าอัลตร้า", "ultraSettingsDesc": "การบีบอัดความหมายที่ขับเคลื่อนด้วย SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "ตอบอย่างกระชับ คงคำศัพท์ทางเทคนิค โค้ด ข้อผิดพลาด URL และตัวระบุไว้", + "full": "ตอบให้สั้นและกะทัดรัด คงสาระสำคัญทางเทคนิคทั้งหมดไว้", + "ultra": "ตอบให้สั้นที่สุดโดยใช้คำย่อทางเทคนิคทั่วไป คงสัญลักษณ์ต่าง ๆ ไว้ตามต้นฉบับ" } }, "translator": { @@ -9181,12 +9188,12 @@ "conceptHeadline": "แอปของคุณพูด \"ภาษา\" ของ API หนึ่ง ตัวแปลจะแปลงภาษานั้นเพื่อให้สามารถใช้กับผู้ให้บริการรายอื่นได้", "conceptDiagramAppLabel": "แอปของคุณ", "conceptDiagramSourceLabel": "รูปแบบต้นทาง", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (ศูนย์กลาง)", "conceptDiagramTargetLabel": "ผู้ให้บริการปลายทาง", "conceptDiagramExampleApp": "เช่น Anthropic SDK", "conceptDiagramExampleSource": "claude", "conceptDiagramExampleTarget": "Gemini", - "conceptHowItWorksToggle": "How it works", + "conceptHowItWorksToggle": "วิธีการทำงาน", "conceptHowItWorksBody": "แอปของคุณจะส่งคำขอในรูปแบบของตัวเอง ตัวแปลภาษาจะตรวจหารูปแบบ แปลงข้อมูลผ่าน OpenAI ในฐานะฮับกลาง (หรือแปลงโดยตรงเมื่อมีตัวแปลโดยตรงพร้อมใช้งาน) ส่งไปยังผู้ให้บริการที่เลือก และส่งคืนการตอบกลับที่แปลงกลับเป็นรูปแบบของแอปของคุณ", "tabTranslate": "แปล", "tabMonitor": "ติดตามการทำงาน", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "วางคำขอ JSON ระบบจะตรวจหารูปแบบโดยอัตโนมัติ", "advancedPipelineTitle": "ไพป์ไลน์กลางของ OpenAI", "advancedPipelineSubtitle": "แสดงภาพแต่ละขั้นตอนการแปล (hub-and-spoke)", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "ตัวแปลงสตรีม (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "แปลง Chat Completions SSE เป็น Responses API", "advancedTestBenchTitle": "Test Bench (8 สถานการณ์)", "advancedTestBenchSubtitle": "รันทุกสถานการณ์และรายงานผลผ่าน/ไม่ผ่าน + % ความเข้ากันได้", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "คงเหลือ", "kiloPassRenews": "ต่ออายุในอีก {count} วัน", "kiloPassUsageLabel": "การใช้งานเดือนนี้", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "เครดิตการใช้งานเพิ่มเติม", + "kimiExtraUsage": "การใช้งานเพิ่มเติม", + "kimiExtraUsageEnabled": "เปิดใช้งาน", + "kimiExtraUsageDisabled": "ปิดใช้งาน", + "kimiExtraUsageFrozen": "ระงับ", + "kimiExtraUsageUnavailable": "ไม่พร้อมใช้งาน", + "kimiMonthlyUsed": "ใช้ไปในเดือนนี้", + "kimiMonthlyLimit": "ขีดจำกัดรายเดือน", + "kimiMonthlyLimitUnlimited": "ไม่จำกัด", + "kimiAdditionalCredits": "เครดิตเพิ่มเติม", "loggerTab": "คนตัดไม้", "proxyTab": "หนังสือมอบฉันทะ", "budgetManagement": "การจัดการงบประมาณ", @@ -9324,7 +9331,7 @@ "circuitBreakers": "เซอร์กิตเบรกเกอร์", "lockedIPs": "IP ที่ถูกล็อค", "lockoutsAutoRefreshHint": "การล็อคขีดจำกัดอัตราต่อรุ่น • รีเฟรชอัตโนมัติ 10 วินาที", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# รายการถูกล็อก} other {# รายการถูกล็อก}}", "timeLeft": "{time} เหลือแล้ว", "howItWorks": "มันทำงานอย่างไร", "howItWorksSubtitle": "เรียนรู้ว่าการประเมินผลตรวจสอบการตอบสนอง LLM ของคุณอย่างไร", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "คำตอบจะถูกเปรียบเทียบกับเกณฑ์ที่คาดหวัง ดูผ่าน/ไม่ผ่านสำหรับแต่ละกรณีพร้อมตัววัดเวลาแฝงและข้อเสนอแนะโดยละเอียด", "evalsStrategyContainsLabel": "ประกอบด้วย", "evalsStrategyExactLabel": "ตรงกันทุกประการ", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "นิพจน์ทั่วไป", "evalsStrategyCustomLabel": "ลอจิกที่กำหนดเอง", "evalsStrategyContainsDescription": "ตรวจสอบว่าเอาต์พุตของ LLM มีสตริงย่อยที่คาดหวังหรือไม่", "evalsStrategyExactDescription": "ตรวจสอบว่าเอาต์พุตของ LLM ตรงกับค่าที่คาดหวังทุกประการหรือไม่", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "รุ่นภายใต้การทดสอบ", "searchSuitesPlaceholder": "ค้นหาห้องชุด...", "passSuffix": "ผ่าน", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# กรณี} other {# กรณี}}", "runEval": "วิ่งเอวาล", "runAllSuites": "วิ่งทั้งหมด", "runAllRunning": "วิ่งทั้งหมด...", "runAllProgress": "กำลังรัน {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# ชุดล้มเหลว} other {# ชุดล้มเหลว}}", "runAllCompleted": "เรียกใช้ชุดโปรแกรม {suites} — {passed} ผ่าน {failed} ล้มเหลว", "runAllCompletedWithFailures": "รัน {completed} ห้องชุด; {failedSuites} ล้มเหลวในการดำเนินการให้เสร็จสิ้น", "runningProgress": "กำลังรัน {current}/{total}...", @@ -9423,7 +9430,7 @@ "providerLimits": "ข้อจำกัดของผู้ให้บริการ", "noProviders": "ไม่มีผู้ให้บริการที่เชื่อมต่อ", "connectProvidersForQuota": "เชื่อมต่อกับผู้ให้บริการด้วย OAuth เพื่อติดตามขีดจำกัดโควต้า API และการใช้งานของคุณ", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# บัญชี} other {# บัญชี}}", "filteredFromCount": "(กรองจาก {count})", "autoRefresh": "รีเฟรชอัตโนมัติ", "refreshAll": "รีเฟรชทั้งหมด", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "ไม่สามารถอัปเดตการแสดงผลโควตาได้", "account": "บัญชี", "modelQuotas": "โควต้าโมเดล", - "lastUsed": "Last Refreshed", + "lastUsed": "รีเฟรชล่าสุด", "actions": "การดำเนินการ", "refreshQuota": "รีเฟรชโควต้า", "today": "วันนี้", @@ -9452,9 +9459,9 @@ "cardExpand": "ขยาย", "cardCollapse": "ยุบ", "moreQuotas": "+อีก {count} รายการ", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", + "ungrouped": "ไม่ได้จัดกลุ่ม", + "viewFlat": "แบบแบน", + "viewByEnvironment": "ตามสภาพแวดล้อม", "noQuotaDataAvailable": "ไม่มีข้อมูลโควต้า", "noAccountsForTierFilter": "ไม่พบบัญชีสำหรับตัวกรองระดับ", "tierAll": "ทั้งหมด", @@ -9475,8 +9482,8 @@ "filterTierLabel": "ระดับ", "purchaseAll": "ทั้งหมด", "purchaseOauthSub": "การสมัครสมาชิก", - "purchaseOauthFree": "OAuth Free", - "purchaseApiKey": "API Key", + "purchaseOauthFree": "ไม่ใช้ OAuth", + "purchaseApiKey": "คีย์ API", "creditsLabel": "เครดิต", "creditBalanceHint": "ยอดคงเหลือ", "unlimitedLabel": "ไม่จำกัด", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "แลกรับเครดิต", "resetCreditRedeemed": "แลกรับการรีเซ็ตแล้ว", "resetCreditRedeemFailed": "แลกรับเครดิตรีเซ็ตไม่สำเร็จ", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "บันทึกชุดไม่สำเร็จ", "clone": "โคลน", "exportSuite": "ส่งออก", "importSuite": "นำเข้า", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "JSON ของชุด eval ไม่ถูกต้อง", "suiteBuilderCloneSuffix": "คัดลอก", "suiteBuilderImportedSuite": "ชุดนำเข้า", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "ตารางคะแนน", + "evalApiKey": "คีย์ API", + "scorecardPassRate": "อัตราการผ่าน", + "targetTypeModel": "โมเดล", + "actualOutputLabel": "ผลลัพธ์จริง", + "evalTargetHint": "เลือกโมเดลหรือชุดผสมที่จะประเมิน", + "suiteBuilderDeleted": "ลบชุดสำเร็จแล้ว", + "suiteBuilderCaseCardHint": "กำหนดพรอมต์อินพุตและเกณฑ์ผลลัพธ์ที่คาดหวัง", + "nextResetUtc": "รีเซ็ตครั้งถัดไป (UTC)", + "scorecardHint": "อัตราการผ่านรวมจากชุดการประเมินทั้งหมด", + "suiteLatestRunsHint": "การเรียกใช้การประเมินล่าสุดสำหรับชุดนี้", + "saving": "กำลังบันทึก", + "suiteBuilderCaseModelLabel": "โมเดล (ไม่บังคับ)", + "evalControlsTitle": "การควบคุมการประเมิน", + "suiteBuilderEditTitle": "แก้ไขชุดการประเมิน", + "suiteBuilderCaseStrategyLabel": "กลยุทธ์การตรวจสอบความถูกต้อง", + "notifySelectDifferentCompareTarget": "โปรดเลือกเป้าหมายอื่นสำหรับการเปรียบเทียบ", + "recentRunsHint": "กำลังแสดงการเรียกใช้การประเมินล่าสุด คลิกการเรียกใช้เพื่อดูผลลัพธ์โดยละเอียด", + "evalCompareHint": "สามารถเปรียบเทียบผลลัพธ์กับเป้าหมายที่สองได้หากต้องการ", + "suiteBuilderCaseInvalid": "กรณีนี้มีข้อผิดพลาดในการตรวจสอบความถูกต้อง โปรดแก้ไขก่อนบันทึก", + "historyEmpty": "ยังไม่มีประวัติการประเมิน", + "suiteBuilderUpdated": "อัปเดตชุดสำเร็จแล้ว", + "resetInterval": "ช่วงเวลาการรีเซ็ต", + "suiteBuilderCreateTitle": "สร้างชุดการประเมิน", + "activePeriodSpend": "ยอดใช้จ่ายในช่วงเวลาปัจจุบัน", + "evalApiKeyHint": "เลือกคีย์ API ที่จะใช้สำหรับคำขอประเมิน", + "evalCompareOptional": "เปรียบเทียบ (ไม่บังคับ)", + "suiteBuilderDeleteFailed": "ลบชุดการทดสอบไม่สำเร็จ", + "suiteBuilderCaseSystemPromptPlaceholder": "คำสั่งระบบเพิ่มเติม...", + "scorecardCases": "กรณีทดสอบ", + "runCompletedWithScore": "ประเมินเสร็จสิ้น — อัตราการผ่าน {score}%", + "suiteBuilderCustomBadge": "กำหนดเอง", + "targetSuiteDefaults": "ค่าเริ่มต้นของชุดการทดสอบ", + "suiteBuilderDeleteConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบชุดการทดสอบนี้ การดำเนินการนี้ไม่สามารถย้อนกลับได้", + "suiteBuilderNameLabel": "ชื่อชุดการทดสอบ", + "scorecardSuites": "ชุดการทดสอบ", + "evalCompareTarget": "เป้าหมายสำหรับเปรียบเทียบ", + "suiteBuilderCaseModelPlaceholder": "เช่น gpt-4o-mini", + "evalControlsHint": "กำหนดค่าเป้าหมายการประเมินและคีย์ API จากนั้นเรียกใช้ชุดการทดสอบเพื่อตรวจสอบคุณภาพของโมเดล", + "recentRunsTitle": "การเรียกใช้ล่าสุด", + "suiteBuilderCaseSystemPromptLabel": "พรอมต์ระบบ", + "suiteBuilderCaseExpectedPlaceholder": "เช่น def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "เช่น ฟีโบนัชชีแน่นอน", "suiteBuilderCaseExpectedPlaceholderExact": "วางคำตอบที่คาดหวังไว้ทุกประการ", "suiteBuilderCaseExpectedPlaceholderRegex": "เช่น ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "ใช้นิพจน์ทั่วไปของ JavaScript โดยไม่มีเครื่องหมายทับ", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "เช่น ชุดทดสอบคุณภาพโค้ด", + "suiteBuilderAddCase": "เพิ่มกรณีทดสอบ", + "cancel": "ยกเลิก", + "evalTarget": "เป้าหมาย", + "suiteBuilderCaseNameLabel": "ชื่อกรณีทดสอบ", + "weeklyLimitUsd": "ขีดจำกัดรายสัปดาห์ (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "เช่น เขียนฟังก์ชัน fibonacci ด้วย Python", + "suiteBuilderNameRequired": "จำเป็นต้องระบุชื่อชุดการทดสอบ", + "suiteBuilderCaseUserPromptLabel": "พรอมต์ผู้ใช้", + "daily": "รายวัน", + "resultErrorLabel": "ข้อผิดพลาด", + "suiteBuilderBuiltInBadge": "มีมาให้ในระบบ", + "suiteBuilderCaseCardTitle": "กรณีทดสอบ", "suiteBuilderDuplicateCase": "ทำซ้ำ", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "เช่น 50.00", + "suiteBuilderCaseTagsHint": "แท็กที่คั่นด้วยจุลภาคสำหรับจัดระเบียบกรณีทดสอบ", + "notifyEvalRunFailedWithReason": "การประเมินล้มเหลว: {reason}", + "weekly": "รายสัปดาห์", + "runEvalRunning": "กำลังดำเนินการประเมิน...", + "delete": "ลบ", + "resetTimeUtc": "เวลารีเซ็ต (UTC)", + "evalApiKeyAuto": "อัตโนมัติ (ใช้ค่าเริ่มต้น)", + "suiteBuilderDescriptionPlaceholder": "คำอธิบายเพิ่มเติมเกี่ยวกับสิ่งที่ชุดการทดสอบนี้ใช้ทดสอบ...", + "targetComparisonTitle": "การเปรียบเทียบเป้าหมาย", + "save": "บันทึก", + "suiteBuilderCreated": "สร้างชุดการทดสอบสำเร็จ", + "suiteLatestRuns": "การรันล่าสุด", + "suiteBuilderCaseExpectedLabel": "ค่าที่คาดหวัง", + "historyLatency": "เวลาแฝง", + "suiteBuilderCaseTagsPlaceholder": "เช่น coding, python", + "targetTypeCombo": "คอมโบ", + "scorecardPassed": "ผ่าน", + "suiteBuilderCaseTagsLabel": "แท็ก", + "suiteBuilderNewSuite": "ชุดทดสอบใหม่", + "notifyEvalLoadFailed": "โหลดข้อมูลการประเมินไม่สำเร็จ", + "notConfigured": "ยังไม่ได้กำหนดค่า", + "suiteBuilderCaseNamePlaceholder": "เช่น การทดสอบฟีโบนัชชีด้วย Python", + "intervalLabel": "ช่วงเวลา", + "suiteBuilderCreateAction": "สร้างชุดทดสอบ", + "suiteBuilderCasesHint": "แต่ละกรณีจะส่งพรอมต์และตรวจสอบความถูกต้องของคำตอบ", + "suiteBuilderUpdatedAt": "อัปเดตแล้ว", + "errorBadge": "ข้อผิดพลาด", + "suiteBuilderCasesTitle": "กรณีทดสอบ", + "edit": "แก้ไข", + "monthly": "รายเดือน", + "suiteBuilderCasesRequired": "ต้องมีกรณีทดสอบอย่างน้อยหนึ่งกรณี", + "weeklyLimitSummary": "สรุปขีดจำกัดงบประมาณรายสัปดาห์", + "suiteBuilderDescriptionLabel": "คำอธิบาย", + "targetComparisonHint": "การเปรียบเทียบผลการประเมินระหว่างเป้าหมายแบบเคียงข้างกัน", + "compareCompletedWithScore": "การเปรียบเทียบเสร็จสมบูรณ์ — อัตราการผ่าน {score}%", + "staleQuotaTooltip": "การรีเฟรชครั้งล่าสุดล้มเหลว — กำลังแสดงข้อมูลที่แคชไว้", "quotaThresholdLabel": "มินออกไปแล้ว", "quotaCutoffsColumnHelp": "หยุดคำขอเมื่อโควต้าที่เหลืออยู่เหลือเป็นเปอร์เซ็นต์นี้หรือต่ำกว่า", "quotaCutoffsButtonDefault": "ค่าเริ่มต้น", @@ -9863,7 +9870,7 @@ "backToLogin": "กลับไปที่เข้าสู่ระบบ", "forgotPassword": "ลืมรหัสผ่าน?", "continueWithOidc": "ดำเนินการต่อด้วย OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "รหัสผ่านเริ่มต้น: CHANGEME (เว้นแต่จะตั้งค่า INITIAL_PASSWORD ไว้)", "Authorization": "การอนุญาต", "Content-Disposition": "การจัดการเนื้อหา", "waitingForAuthorization": "กำลังรอการอนุญาต...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "กำลังรอการอนุญาตต้านแรงโน้มถ่วง...", "waitingForQoderAuthorization": "กำลังรอการอนุญาตจาก Qoder...", "exchangingCodeForTokens": "การเปลี่ยนรหัสเป็นโทเค็น...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "เวอร์ชัน Node.js ไม่เข้ากัน", + "nodeIncompatibleDesc": "คุณกำลังใช้ Node.js {version} ซึ่งอยู่นอกนโยบายรันไทม์ที่ปลอดภัยที่ OmniRoute รองรับ โปรดใช้ Node.js รุ่น LTS 20.x หรือ 22.x ที่ได้รับแพตช์แล้ว", + "nodeIncompatibleFixLabel": "วิธีแก้ไข: ติดตั้ง Node.js 22 LTS รุ่นที่ได้รับแพตช์แล้ว", + "nodeIncompatibleHint": "OmniRoute ต้องใช้ Node.js 22.22.2+ (22.x LTS) หรือ 24.0.0+ (24.x LTS) แนะนำให้ใช้ Node 24 LTS", "resetViaAppDataTitle": "รีเซ็ตผ่านข้อมูลแอป", "resetViaAppDataDescription": "ลบไฟล์การตั้งค่าจากไดเรกทอรีข้อมูลแอปเพื่อรีเซ็ตรหัสผ่านของคุณ:", "quitDesktopApp": "ออกจากแอปเดสก์ท็อป OmniRoute อย่างสมบูรณ์", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "ผู้ให้บริการ", "commonUseCases": "กรณีการใช้งานทั่วไป", "clientCompatibility": "ความเข้ากันได้ของไคลเอ็นต์", - "protocolsToc": "Protocols", + "protocolsToc": "โปรโตคอล", "apiReference": "การอ้างอิง API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "เอกสารอ้างอิง Management API", + "managementApiDescription": "เอนด์พอยต์สำหรับทำงานอัตโนมัติในการจัดการรีจิสทรีพร็อกซี การกำหนดขอบเขต และการย้ายพร็อกซีแบบเดิม", "method": "วิธีการ", "path": "เส้นทาง", "notes": "หมายเหตุ", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "กปภ", "deployPwaText": "ติดตั้ง OmniRoute เป็น Progressive Web App บนเบราว์เซอร์ Android, iOS และเดสก์ท็อป", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "เรียกใช้ OmniRoute แบบ headless บน Android ผ่าน Termux และเข้าถึงแดชบอร์ดจากเบราว์เซอร์บนมือถือของคุณ", "featureRoutingTitle": "การกำหนดเส้นทางผู้ให้บริการหลายราย", "featureRoutingText": "กำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI กว่า 30 รายผ่านจุดสิ้นสุดที่เข้ากันได้กับ OpenAI จุดเดียว รองรับ API การแชท การตอบกลับ เสียง และรูปภาพ", "featureCombosTitle": "คอมโบและการปรับสมดุล", @@ -10132,22 +10139,22 @@ "clientKimiBullet1": "ใช้ OmniRoute เป็น URL ฐานที่มั่นคงขณะหมุนเวียนบัญชีหรือคอมโบผู้ให้บริการด้านล่าง", "clientKimiBullet2": "ต้องการโมเดลที่นำหน้าในโฟลว์การเขียนโค้ด ดังนั้นทางเลือกสำรองและเส้นทางการตรวจสอบจึงยังคงชัดเจน", "clientKimiBullet3": "ใช้ `/v1/responses` เมื่อคุณต้องการการกำหนดเส้นทางสไตล์ Responses ดั้งเดิมสำหรับไคลเอ็นต์ที่ใช้เครื่องมือ", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "โปรโตคอล: MCP และ A2A", + "protocolsDescription": "นอกเหนือจาก API ที่เข้ากันได้กับ OpenAI แล้ว OmniRoute ยังมีโปรโตคอลการทำงานสองแบบ ได้แก่ MCP สำหรับการเรียกใช้เครื่องมือ และ A2A สำหรับเวิร์กโฟลว์ระหว่างเอเจนต์", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "ใช้ MCP ผ่าน stdio เพื่อให้ไคลเอนต์ค้นหาและเรียกใช้เครื่องมือ OmniRoute พร้อมตรวจสอบย้อนหลังได้", + "protocolMcpStep1": "เริ่มการรับส่งข้อมูล MCP ด้วย `omniroute --mcp`", + "protocolMcpStep2": "กำหนดให้ไคลเอนต์ MCP ของคุณใช้การรับส่งข้อมูลผ่าน stdio", + "protocolMcpStep3": "เรียกใช้ `omniroute_get_health` และ `omniroute_list_combos` เพื่อตรวจสอบการเชื่อมต่อ", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "ใช้ A2A JSON-RPC เพื่อส่งงานแบบซิงโครนัสหรือผ่านการสตรีม SSE", + "protocolA2aStep1": "อ่าน `/.well-known/agent.json` เพื่อค้นหาเอเจนต์", + "protocolA2aStep2": "ส่งคำขอ `message/send` หรือ `message/stream` ไปยัง `POST /a2a`", + "protocolA2aStep3": "จัดการวงจรชีวิตของงานด้วย `tasks/get` และ `tasks/cancel`", + "protocolTroubleshootingTitle": "การแก้ไขปัญหาโปรโตคอล", + "protocolTroubleshooting1": "หากสถานะ MCP เป็นออฟไลน์ ให้ตรวจสอบว่าโปรเซส stdio กำลังทำงานและไฟล์ heartbeat ได้รับการอัปเดตอยู่", + "protocolTroubleshooting2": "หากงาน A2A ค้างอยู่ในสถานะ `working` ให้ตรวจสอบ `/api/a2a/tasks/:id` และเหตุการณ์ในสตรีมเพื่อดูสถานะสิ้นสุด", + "protocolTroubleshooting3": "ใช้ `/dashboard/mcp` และ `/dashboard/a2a` สำหรับการควบคุมการทำงานและการตรวจสอบย้อนหลัง", "endpointChatNote": "จุดสิ้นสุดการแชทที่เข้ากันได้กับ OpenAI (ค่าเริ่มต้น)", "endpointResponsesNote": "จุดสิ้นสุด API การตอบกลับ (Codex, o-series)", "endpointModelsNote": "แค็ตตาล็อกโมเดลสำหรับผู้ให้บริการที่เชื่อมต่อทั้งหมด", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "เขียนตัวช่วยใหม่สำหรับลูกค้าที่ไม่มี /v1", "endpointRewriteResponsesNote": "เขียนตัวช่วยใหม่สำหรับการตอบกลับโดยไม่มี /v1", "endpointRewriteModelsNote": "เขียนตัวช่วยใหม่สำหรับการค้นหาโมเดลโดยไม่มี /v1", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "แสดงรายการพร็อกซีที่บันทึกไว้ในรีจิสทรี (รองรับการแบ่งหน้า)", + "mgmtProxiesCreateNote": "สร้างรายการพร็อกซีที่นำกลับมาใช้ซ้ำได้ในรีจิสทรี", + "mgmtProxiesHealthNote": "ดูเมตริกสถานะการทำงานในช่วง 24 ชั่วโมง/แบบต่อเนื่องของพร็อกซีแต่ละรายการที่บันทึกไว้จากบันทึกพร็อกซี", + "mgmtProxiesBulkAssignNote": "กำหนดหรือล้างพร็อกซีหนึ่งรายการสำหรับ ID ขอบเขตหลายรายการในคำขอเดียว", + "mgmtAssignmentsListNote": "แสดงรายการการกำหนดพร็อกซีตามขอบเขต, scope_id หรือ proxy_id", + "mgmtAssignmentsUpdateNote": "กำหนดหรือล้างพร็อกซีสำหรับขอบเขตส่วนกลาง/ผู้ให้บริการ/บัญชี/คอมโบ", + "mgmtLegacyMigrationNote": "นำเข้าแมป proxyConfig แบบเดิมไปยังการกำหนดในรีจิสทรี", "modelPrefixesDescriptionStart": "ใช้คำนำหน้าผู้ให้บริการก่อนชื่อรุ่นเพื่อกำหนดเส้นทางไปยังผู้ให้บริการเฉพาะ ตัวอย่าง:", "modelPrefixesDescriptionEnd": "เส้นทางไปยัง GitHub Copilot", "provider": "ผู้ให้บริการ", @@ -10251,9 +10258,9 @@ "nonTechUsersSubtitle": "เริ่มต้นได้อย่างรวดเร็ว — ไม่ต้องมีพื้นฐานทางเทคนิค", "techUsersTitle": "สำหรับผู้ใช้เทคโนโลยี", "techUsersSubtitle": "เจาะลึกสถาปัตยกรรม, APIs, และส่วนภายใน", - "apiExplorerMetadataTitle": "API Explorer — OmniRoute Docs", + "apiExplorerMetadataTitle": "API Explorer — เอกสาร OmniRoute", "apiExplorerMetadataDescription": "เครื่องมือสำรวจ API แบบโต้ตอบ — ลองใช้จุดสิ้นสุด OmniRoute แบบสดพร้อมการตอบสนองแบบเรียลไทม์", - "apiExplorerTitle": "API Explorer", + "apiExplorerTitle": "เครื่องมือสำรวจ API", "apiExplorerDescription": "ลองใช้จุดสิ้นสุด OmniRoute แบบสด เลือกจุดสิ้นสุด กำหนดค่าคำขอของคุณ และดูการตอบสนองแบบเรียลไทม์", "apiExplorerSseStarted": "เริ่มการสตรีม SSE — ตรวจสอบเทอร์มินัล/devtools สำหรับผลลัพธ์แบบเรียลไทม์.", "apiExplorerError": "ข้อผิดพลาด: {message}", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute เป็นซอฟต์แวร์โอเพ่นซอร์ส คุณมีอิสระที่จะตรวจสอบ แก้ไข และแจกจ่ายภายใต้เงื่อนไขของใบอนุญาต" }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "เอเจนต์ CLI", + "description": "ค้นหาเอเจนต์ CLI ที่ติดตั้งในระบบของคุณ เพิ่มเอเจนต์แบบกำหนดเองเพื่อให้ตรวจหาโดยอัตโนมัติ", + "refresh": "รีเฟรช", + "installed": "ติดตั้งแล้ว", + "notFound": "ไม่พบ", + "builtIn": "มีมาให้ในตัว", + "custom": "กำหนดเอง", + "remove": "นำออก", + "addCustomAgent": "เพิ่มเอเจนต์แบบกำหนดเอง", + "addCustomAgentDesc": "ลงทะเบียนเครื่องมือ CLI ใดก็ได้เพื่อให้ระบบตรวจหา ระบบจะสแกนโดยอัตโนมัติเมื่อรีเฟรช", + "agentName": "ชื่อเอเจนต์", + "binaryName": "ชื่อไบนารี", + "versionCommand": "คำสั่งตรวจสอบเวอร์ชัน", + "spawnArgs": "อาร์กิวเมนต์สำหรับเริ่มโปรเซส", + "addAgent": "เพิ่มเอเจนต์", + "scanning": "กำลังสแกนระบบเพื่อค้นหาเอเจนต์ CLI...", + "opencodeIntegration": "การผสานรวม OpenCode", + "opencodeDetected": "ตรวจพบ opencode {version}", + "opencodeDesc": "สร้าง {configFile} ที่พร้อมใช้งาน พร้อม URL ฐานของ OmniRoute และโมเดลที่พร้อมใช้งานทั้งหมดของคุณ — วางไฟล์ไว้ในรูทโปรเจกต์แล้วเรียกใช้ {command}", + "downloadConfig": "ดาวน์โหลด {file}", + "downloaded": "ดาวน์โหลดแล้ว!", + "setupGuideTitle": "คู่มือการตั้งค่า", + "openCliTools": "เปิดเครื่องมือ CLI", + "setupGuideDetectCliTitle": "ตรวจหา CLI ที่ติดตั้งไว้", + "setupGuideDetectCliDesc": "คลิกรีเฟรชหลังจากติดตั้งหรืออัปเดต CLI เพื่อให้ OmniRoute สแกนไบนารีและเวอร์ชันอีกครั้ง", + "setupGuideCustomAgentTitle": "ลงทะเบียนไบนารีแบบกำหนดเอง", + "setupGuideCustomAgentDesc": "ใช้เพิ่มเอเจนต์แบบกำหนดเองเมื่อ CLI ของคุณไม่อยู่ในรายการที่มีมาให้ ระบุชื่อไบนารีและคำสั่งตรวจสอบเวอร์ชัน", + "setupGuideCommandMissingTitle": "แก้ไขปัญหา 'ไม่พบคำสั่ง'", + "setupGuideCommandMissingDesc": "ตรวจสอบว่าคำสั่ง CLI มีอยู่ใน PATH เปิดเซสชันเทอร์มินัลใหม่ แล้วเรียกใช้รีเฟรชอีกครั้ง", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "การจัดการแคช", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "รีเฟรช", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "รายการในหน่วยความจำ", + "memoryEntriesSub": "LRU ในหน่วยความจำ", + "dbEntries": "รายการในฐานข้อมูล", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "แคชที่พบ", + "cacheHitsSub": "จากทั้งหมด {total} รายการ", + "tokensSaved": "โทเค็นที่ประหยัดได้", + "tokensSavedSub": "ค่าประมาณจากแคชที่พบ", + "hitRate": "อัตราการพบแคช", + "performance": "ประสิทธิภาพของแคช", + "autoRefresh": "รีเฟรชอัตโนมัติทุก {seconds} วินาที", + "hits": "พบแคช", + "misses": "ไม่พบแคช", + "total": "ทั้งหมด", + "behavior": "ลักษณะการทำงานของแคช", + "behaviorDeterministic": "จะแคชเฉพาะคำขอแบบไม่สตรีมที่มี temperature=0 เท่านั้น", + "behaviorBypass": "ข้ามแคชด้วยส่วนหัว {header}", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "TTL เริ่มต้น: 30 นาที กำหนดค่าผ่าน {envVar}", + "idempotency": "เลเยอร์การทำงานแบบ Idempotency", + "activeDedupKeys": "คีย์ขจัดรายการซ้ำที่ใช้งานอยู่", + "dedupWindow": "ช่วงเวลาขจัดรายการซ้ำ", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "ล้างแคชไม่สำเร็จ", + "unavailable": "แคชไม่พร้อมใช้งาน", + "unavailableDesc": "ไม่สามารถดึงสถิติแคชได้ โปรดตรวจสอบว่าเซิร์ฟเวอร์กำลังทำงานอยู่", "loadingCacheAria": "กำลังโหลดแคช", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "แคชพรอมต์ (ฝั่งผู้ให้บริการ)", + "semanticCache": "แคชเชิงความหมาย", + "promptCacheSectionDesc": "แสดงกิจกรรมการแคชพรอมต์ฝั่งผู้ให้บริการจากประวัติการใช้งาน เพื่อให้คุณเห็นว่าการควบคุมแคชทำงานอยู่ที่ใด และมีการนำอินพุตกลับมาใช้ซ้ำมากเพียงใด", + "promptTrendDesc": "ปริมาณคำขอรายชั่วโมง ความครอบคลุมของแคช และปริมาณการอ่านแคชในช่วง 24 ชั่วโมงที่ผ่านมา", + "cachedRequests": "คำขอที่แคชไว้", + "cachedRequests24h": "คำขอที่แคชไว้ (24 ชม.)", + "cacheHitRate": "อัตราการใช้แคชสำเร็จ", + "cacheRate": "อัตราการใช้แคช", + "cacheRateDesc": "จากคำขอทั้งหมด", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "เมตริกแคชพรอมต์", + "withCacheControl": "พร้อมการควบคุมแคช", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "อัตราส่วนการนำแคชกลับมาใช้", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "ค่าใช้จ่ายที่ประหยัดได้โดยประมาณ", + "lastUpdated": "อัปเดตล่าสุด", + "hoursTracked": "ชั่วโมงที่ติดตาม", + "busiestHour": "ชั่วโมงที่มีการใช้งานสูงสุด", + "peakCacheRate": "อัตราการใช้แคชสูงสุด", + "trendHour": "ชั่วโมง", + "activityVolume": "กิจกรรม", + "requestsShort": "คำขอ", + "inputShort": "อินพุต", + "cachedShort": "แคชแล้ว", + "writeShort": "เขียน", + "resetting": "กำลังรีเซ็ต...", + "resetMetrics": "รีเซ็ตเมตริก", + "byProvider": "รายละเอียดแยกตามผู้ให้บริการ", + "providerCacheRateDesc": "ผู้ให้บริการแต่ละรายจะแสดงจำนวนโทเค็นอินพุตทั้งหมด โทเค็นที่อ่านจากแคช และโทเค็นที่เขียนลงแคช เพื่อให้คุณตรวจสอบอัตราส่วนการนำกลับมาใช้เทียบกับยอดรวมดิบได้", "provider": "Provider", - "requests": "Requests", + "requests": "คำขอ", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "แนวโน้มแคช (24 ชม.)", + "peakCached": "แคชสูงสุด", + "cached": "แคชแล้ว", + "overview": "ภาพรวม", "tableProvider": "ผู้ให้บริการ", "tableModel": "โมเดล", "performanceTitle": "ประสิทธิภาพ", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "แคชการตอบกลับแบบกำหนดผลลัพธ์ได้ของ OmniRoute เอง เมื่อเปิดใช้งาน คำขอที่ไม่ใช่แบบสตรีมซึ่งส่งซ้ำและมี temperature=0 สามารถตอบกลับจากระบบภายในได้โดยไม่ต้องเรียกใช้ผู้ให้บริการต้นทาง", + "semanticCacheDisabledDesc": "แคชเชิงความหมายถูกปิดใช้งาน OmniRoute จะข้ามการนำการตอบกลับภายในกลับมาใช้จนกว่าคุณจะเปิดใช้งานอีกครั้งในการตั้งค่า", + "semanticEntriesDesc": "ระเบียนแคชเชิงความหมายที่จัดเก็บถาวรอยู่ใน SQLite ขณะนี้ กิจกรรมแคชพรอมต์ฝั่งผู้ให้บริการจะไม่แสดงอยู่ที่นี่", + "searchEntries": "ค้นหารายการ...", + "search": "ค้นหา", + "loading": "กำลังโหลด...", + "entriesLoadError": "โหลดรายการแคชเชิงความหมายไม่สำเร็จ", + "noEntries": "ไม่พบรายการแคช", + "noPromptCacheData": "ยังไม่มีการบันทึกกิจกรรมแคชพรอมต์ฝั่งผู้ให้บริการ", + "noTrendData": "ยังไม่มีการบันทึกกิจกรรมแคชพรอมต์ในช่วง 24 ชั่วโมงที่ผ่านมา", + "signature": "ลายเซ็น", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "สร้างเมื่อ", + "expires": "หมดอายุ", + "actions": "การดำเนินการ", + "deduplicatedRequests": "คำขอที่ขจัดรายการซ้ำแล้ว", + "savedCalls": "การเรียก API ที่ประหยัดได้", + "totalProcessed": "คำขอทั้งหมดที่ประมวลผลแล้ว", + "disabled": "ปิดใช้งาน", + "totalRequests": "คำขอทั้งหมด", "reasoningCache": "เล่นซ้ำการใช้เหตุผล", "reasoningCacheDesc": "รักษาการคิดแบบจำลองสำหรับโฟลว์การเรียกเครื่องมือแบบหลายเลี้ยว", "reasoningEntries": "รายการที่ใช้งานอยู่", @@ -10650,13 +10657,13 @@ "reasoningDetail": "เนื้อหาการให้เหตุผล", "reasoningBehavior": "พฤติกรรม", "reasoningBehaviorCapture": "รวบรวมเหตุผล _เนื้อหาจากการตอบกลับแบบสตรีม", - "reasoningBehaviorReplay": "Re-injects on next turn when client omits it", + "reasoningBehaviorReplay": "แทรกซ้ำในรอบถัดไปเมื่อไคลเอนต์ไม่ได้ส่งมา", "reasoningBehaviorFallback": "เน้นหน่วยความจำเป็นหลักพร้อมทางเลือก SQLite สำหรับการกู้คืนข้อขัดข้อง", "reasoningBehaviorTtl": "TTL: 2 ชั่วโมง | Max entries: 2,000 (memory)", - "reasoningBehaviorModels": "Supported: DeepSeek, Kimi, Qwen-Thinking, GLM", + "reasoningBehaviorModels": "รองรับ: DeepSeek, Kimi, Qwen-Thinking, GLM", "reasoningClearAll": "ล้างแคชการใช้เหตุผล", - "reasoningClearSuccess": "Cleared {count} reasoning cache entries", - "reasoningClearError": "Failed to clear reasoning cache", + "reasoningClearSuccess": "ล้างรายการแคชการให้เหตุผลแล้ว {count} รายการ", + "reasoningClearError": "ล้างแคชการให้เหตุผลไม่สำเร็จ", "reasoningNoData": "No reasoning entries cached yet. รายการจะปรากฏขึ้นเมื่อคิดแบบจำลองโดยใช้การเรียกเครื่องมือ", "cachePerformanceRetry": "ลองอีกครั้ง", "cachePerformanceHitRate": "อัตราการเข้าชม", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes} นาทีที่แล้ว", "hoursAgo": "{hours} ชั่วโมงที่แล้ว", "daysAgo": "{days} วันที่แล้ว", - "entries": "Entries" + "entries": "รายการ" }, "proxyConfigModal": { "levelGlobal": "ทั่วโลก", @@ -10677,9 +10684,9 @@ "levelCombo": "คอมโบ", "levelKey": "คีย์", "levelDirect": "โดยตรง (ไม่มีพร็อกซี)", - "titleGlobal": "Global Proxy Configuration", - "titleLevel": "{level} Proxy — {label}", - "loading": "Loading proxy configuration...", + "titleGlobal": "การกำหนดค่าพร็อกซีส่วนกลาง", + "titleLevel": "พร็อกซี {level} — {label}", + "loading": "กำลังโหลดการกำหนดค่าพร็อกซี...", "inheritingFrom": "สืบทอดมาจาก", "source": "แหล่งที่มา", "savedProxy": "พร็อกซีที่บันทึกไว้", @@ -10769,7 +10776,7 @@ "devinDesktopPasteDescription": "วางคีย์ API ของ Devin ที่มีอยู่จากเซสชัน Devin ที่ได้รับการตรวจสอบสิทธิ์ ค่าคีย์ที่สามารถส่งออกได้และขั้นตอนจะแตกต่างกันไปตามเวอร์ชันและบัญชีของ Devin.", "devinPasteDescription": "กรุณาให้ WINDSURF_API_KEY ของคุณ (ที่ได้รับจาก `devin auth login` หรือจากคำสั่ง \"Windsurf: Provide Auth Token\" ใน Windsurf IDE)", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json ของ Grok Build", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "คีย์ API / โทเค็น", "saving": "กำลังบันทึก…", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "เชื่อมต่อเคอร์เซอร์ IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "เข้าสู่ระบบด้วย Cursor", + "tabImport": "นำเข้าโทเค็น", + "loginDescription": "เปิดหน้าเข้าสู่ระบบของ Cursor ในเบราว์เซอร์ ใช้งานได้ใน Docker — อนุมัติในเบราว์เซอร์บนโฮสต์ของคุณ แล้วกลับมาที่นี่", + "loginWithCursor": "เข้าสู่ระบบด้วย Cursor", + "startingLogin": "กำลังเริ่มต้น…", + "waitingApproval": "กำลังรอการอนุมัติการเข้าสู่ระบบ Cursor…", + "openUrlHint": "หากเบราว์เซอร์ไม่เปิด:", + "openLoginLink": "เปิดหน้าเข้าสู่ระบบ", + "cancelLogin": "ยกเลิกการเข้าสู่ระบบ", "autoDetecting": "กำลังตรวจจับโทเค็นอัตโนมัติ...", "readingFromCursor": "อ่านจากเคอร์เซอร์ IDE หรือเคอร์เซอร์เอเจนต์", "tokensAutoDetected": "โทเค็นตรวจพบอัตโนมัติสำเร็จจาก Cursor IDE!", "cursorNotDetected": "ตรวจไม่พบเคอร์เซอร์ IDE โปรดวางโทเค็นของคุณด้วยตนเอง", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "กำลังใช้งานใน Docker อยู่หรือไม่ แนะนำให้ใช้เข้าสู่ระบบด้วย Cursor โดยปกติการนำเข้าอัตโนมัติจาก IDE และ cursor-agent จะไม่พร้อมใช้งานภายในคอนเทนเนอร์ โปรดดู docs/providers/CURSOR-DOCKER.md", "accessToken": "โทเค็นการเข้าถึง", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "รีเฟรชโทเค็น", + "refreshTokenPlaceholder": "ไม่บังคับ — เปิดใช้การรีเฟรชโทเค็นอัตโนมัติ", "required": "*", "accessTokenPlaceholder": "โทเค็นการเข้าถึงจะเติมข้อมูลอัตโนมัติ...", "machineId": "หมายเลขเครื่อง", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "โทเค็นการตรวจจับอัตโนมัติล้มเหลว", "errorEnterToken": "กรุณาใส่โทเค็นการเข้าถึง", "errorImportFailed": "การนำเข้าล้มเหลว", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "เริ่มการเข้าสู่ระบบ Cursor ไม่สำเร็จ", + "errorLoginPoll": "การเข้าสู่ระบบ Cursor ล้มเหลว", + "errorLoginTimeout": "การเข้าสู่ระบบ Cursor หมดเวลา — โปรดลองอีกครั้ง" }, "pricingModal": { "title": "การกำหนดค่าราคา", @@ -10843,9 +10850,9 @@ "selectProxy": "เลือก {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "นำเข้ารูปแบบเดิม", + "bulkAssign": "กำหนดแบบกลุ่ม", + "addProxy": "เพิ่มพร็อกซี", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "ทดสอบ", + "edit": "แก้ไข", + "delete": "ลบ", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "ล้มเหลว", "successRate": "ความสำเร็จ {rate}%", "avgLatency": "เฉลี่ย {latency} มิลลิวินาที", "assignmentsCount": "{count} งาน", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} มิลลิวินาที", "testFailure": "✗ {error}", "repair": "ซ่อมแซม", "relayAuthMissing": "ไม่มีข้อมูลการตรวจสอบสิทธิ์", @@ -10947,23 +10954,23 @@ "managePool": "จัดการพูล", "poolTitle": "พูลพร็อกซีและการหมุนเวียน", "poolDescription": "แนบพร็อกซีหลายตัวเข้ากับขอบเขตและหมุนเวียน IP ขาออกระหว่างพร็อกซีเหล่านั้น ขอบเขตที่มีพร็อกซีเพียงตัวเดียวจะทำงานเหมือนกับการกำหนดค่าทั่วไปทุกประการ", - "poolScopeIdLabel": "Scope ID", - "poolScopeIdPlaceholder": "provider id / connection id / combo id", + "poolScopeIdLabel": "รหัสขอบเขต", + "poolScopeIdPlaceholder": "รหัสผู้ให้บริการ / รหัสการเชื่อมต่อ / รหัสชุดผสม", "poolScopeIdRequired": "จำเป็นต้องมี Scope ID สำหรับขอบเขต provider, account หรือ combo", "poolLoad": "โหลดพูล", "poolLoadFailed": "โหลดพูลพร็อกซีไม่สำเร็จ", "poolStrategyLabel": "กลยุทธ์การหมุนเวียน", "poolStrategyHint": "round-robin จะวนสลับสมาชิกตามลำดับ; random จะสุ่มเลือกอย่างเท่าเทียมกัน; sticky จะยึดสมาชิกเดิมไว้ตามช่วงเวลาที่กำหนด; latency-optimized จะเลือกสมาชิกที่เร็วที่สุดโดยอิงจากบันทึก", "poolStrategyFailed": "อัปเดตกลยุทธ์การหมุนเวียนไม่สำเร็จ", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "วนรอบ", "strategyRandom": "สุ่ม", - "strategySticky": "Sticky", + "strategySticky": "คงเส้นทางเดิม", "strategyLatency": "ปรับตามเวลาแฝงให้เหมาะสม", "poolMembersLabel": "สมาชิกในพูล ({count})", "poolNoMembers": "ยังไม่มีพร็อกซีในพูลนี้", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "ใช้ทางออก {exits, plural, one {# รายการ} other {# รายการ}} โดยการเชื่อมต่อ {connections, plural, one {# รายการ} other {# รายการ}} · สูงสุด {max} รายการในทางออกเดียว · {hours} ชม. ที่ผ่านมา", + "poolEgressObservationEmpty": "ไม่พบทราฟฟิกในช่วง {hours} ชม. ที่ผ่านมา", + "poolEgressObservationHint": "นับจากบันทึกพร็อกซีในช่วงเวลาที่กำหนด: IP ขาออกที่ไม่ซ้ำกันซึ่งตรวจพบสำหรับสมาชิกของพูลนี้ และการเชื่อมต่อ OmniRoute ที่ใช้ IP เหล่านั้น \"ในทางออกเดียว\" หมายถึงตลอดช่วงเวลาที่กำหนด ไม่ใช่ในเวลาเดียวกัน การล็อกเอาต์ 429 ต่อ IP จะหยุดชั่วคราวเฉพาะการเชื่อมต่อของตระกูลผู้ให้บริการเดียวกันเท่านั้น", "poolRemove": "ลบออก", "poolRemoveFailed": "ลบพร็อกซีออกจากพูลไม่สำเร็จ", "poolAddLabel": "เพิ่มพร็อกซี", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "เอนด์พอยต์", + "provider": "ผู้ให้บริการ", + "model": "โมเดล", "accountKey": "Account Key", "autoAccounts": "อัตโนมัติ ({count} บัญชี)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "ส่ง", + "cancel": "ยกเลิก", + "audioFile": "ไฟล์เสียง", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "ล้างทั้งหมด", + "request": "คำขอ", + "response": "การตอบกลับ", + "transcription": "การถอดเสียง", + "copy": "คัดลอก", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "สร้างภาพแล้ว {count} ภาพ", "generatedImage": "รูปภาพที่สร้าง {index}", - "save": "Save", + "save": "บันทึก", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "การตอบกลับ", "completions": "การเติมเต็มข้อความ", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "เวกเตอร์ฝังตัว", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "การตรวจสอบเนื้อหา", - "rerank": "Rerank", + "rerank": "จัดอันดับใหม่", "search": "Search", "webFetch": "ดึงข้อมูลเว็บ" }, "conversationalChat": "สนทนาสนทนา", - "clearChat": "Clear chat", + "clearChat": "ล้างแชต", "typeMessagePlaceholder": "พิมพ์ข้อความ... (Shift+Enter ขึ้นบรรทัดใหม่)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "แชต", + "tabCompare": "เปรียบเทียบ", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "สร้าง", + "configPane": "การกำหนดค่า", + "systemPrompt": "พรอมต์ระบบ", + "systemPromptPlaceholder": "คุณคือผู้ช่วยที่พร้อมให้ความช่วยเหลือ", + "modelPlaceholder": "เช่น openai/gpt-4o", + "endpointLabel": "เอนด์พอยต์", + "parametersLabel": "พารามิเตอร์", + "collapseConfig": "ยุบแผงการกำหนดค่า", + "expandConfig": "ขยายแผงการกำหนดค่า", + "temperature": "อุณหภูมิ", + "maxTokens": "โทเค็นสูงสุด", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "ค่าปรับการปรากฏซ้ำ", + "frequencyPenalty": "ค่าปรับความถี่", "reasoningLabel": "การให้เหตุผล", "thinking": "การคิด", "effort": "ความพยายาม", "effortDefault": "ค่าเริ่มต้น", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "สุ่ม (เว้นว่างไว้)", + "presetsLabel": "ค่าที่ตั้งไว้ล่วงหน้า", + "loadPreset": "โหลดค่าที่ตั้งไว้ล่วงหน้า", + "savePreset": "บันทึกค่าที่ตั้งไว้ล่วงหน้า", + "noPresets": "ไม่มีค่าที่ตั้งไว้ล่วงหน้า", + "presetNamePlaceholder": "ชื่อค่าที่ตั้งไว้ล่วงหน้า", + "savingPreset": "กำลังบันทึก…", + "nameRequired": "จำเป็นต้องระบุชื่อ", + "failedToSavePreset": "บันทึกค่าที่ตั้งไว้ล่วงหน้าไม่สำเร็จ", + "improvePrompt": "ปรับปรุงพรอมต์", + "improvingPrompt": "กำลังปรับปรุง…", + "improvePromptTitle": "ปรับปรุงพรอมต์ของคุณด้วย AI", + "setModelFirst": "ตั้งค่าโมเดลก่อน", "setModelInConfigFirst": "ตั้งค่าโมเดลในแผงการกำหนดค่าก่อน", "improvePromptFailed": "ปรับปรุงพรอมต์ไม่สำเร็จ", "improvePromptAria": "ปรับปรุงพรอมต์โดยใช้ AI", "confirmImprovePrompt": "ยืนยันการปรับปรุงพรอมต์", "improvePromptDescription": "การดำเนินการนี้จะส่งพรอมต์ระบบปัจจุบันของคุณไปยัง เพื่อสร้างเวอร์ชันที่ปรับปรุงแล้ว", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "การดำเนินการนี้จะใช้โควตาจากโมเดลที่กำหนดค่าไว้ใน Config", + "improveConfirm": "ปรับปรุง", + "exportCode": "ส่งออกโค้ด", + "exportCodeTitle": "ส่งออกโค้ด", "exportShort": "ส่งออก", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "ไม่มีสถานะของ Playground ที่พร้อมให้ส่งออก", "closeExportModal": "ปิดหน้าต่างส่งออก", "close": "ปิด", "exportRealKeyWarning": "คำเตือนความปลอดภัย: การส่งออกถูกบล็อก — ตรวจพบคีย์ API จริงในเอาต์พุต โปรดรีเซ็ตคีย์ API ของคุณแล้วลองอีกครั้ง", @@ -11071,13 +11078,13 @@ "copyLangCode": "คัดลอกโค้ด {language}", "loadingPresets": "กำลังโหลด…", "loadPresetPlaceholder": "โหลดพรีเซ็ต…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "คัดลอก", + "copiedCode": "คัดลอกแล้ว!", + "addModel": "+ เพิ่มโมเดล", + "runAll": "เรียกใช้ทั้งหมด", + "cancelAll": "ยกเลิกทั้งหมด", + "maxColumnsReached": "สูงสุด {max} คอลัมน์", + "modelPlaceholderCompare": "โมเดล (Cmd+K)…", "noModel": "ไม่มีโมเดล", "statusLabel": "สถานะ: {status}", "status": { @@ -11095,37 +11102,37 @@ "waitingForResponse": "กำลังรอการตอบกลับ…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "ค่าประมาณฝั่งไคลเอนต์", + "tokensLabel": "โทเค็น", + "costLabel": "ค่าใช้จ่าย", + "costEstimated": "(โดยประมาณ)", "ttftTitle": "เวลาจนถึงโทเค็นแรก (การประมาณการฝั่งไคลเอนต์)", "tpsTitle": "โทเค็นต่อวินาที (การประมาณการฝั่งไคลเอนต์)", "tokenCountsTitle": "โทเค็นพรอมต์ ↑ / โทเค็นการเติมเต็ม ↓", "estimatedCostTitle": "ค่าใช้จ่ายโดยประมาณ (ไม่รับประกันความถูกต้อง)", - "toolsLabel": "Tools", + "toolsLabel": "เครื่องมือ", "toolsCount": "เครื่องมือ ({count})", - "addTool": "Add tool", + "addTool": "เพิ่มเครื่องมือ", "editTool": "แก้ไขเครื่องมือ {name}", "removeTool": "ลบเครื่องมือ {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "ชื่อฟังก์ชัน", "toolNameRequiredPlaceholder": "ชื่อฟังก์ชัน *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "คำอธิบาย (ไม่บังคับ)", "toolParamsLabel": "พารามิเตอร์ (JSON schema)", "toolParamsJsonSchema": "JSON schema สำหรับพารามิเตอร์", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "พารามิเตอร์ต้องเป็น JSON ที่ถูกต้อง", + "structuredOutputLabel": "เอาต์พุตแบบมีโครงสร้าง", + "enableJsonMode": "เปิดใช้งานโหมด JSON", + "disableJsonMode": "ปิดใช้งานโหมด JSON", + "invalidJson": "JSON ไม่ถูกต้อง", "jsonMode": "โหมด JSON", "jsonModeDescription": "บังคับใช้ response_format: json_schema", "schemaName": "ชื่อ Schema", - "jsonSchema": "JSON schema", + "jsonSchema": "สคีมา JSON", "jsonSchemaEditor": "เครื่องมือแก้ไข JSON schema", "schemaValidated": "ตรวจสอบ Schema แล้ว", "validateSchema": "ตรวจสอบความถูกต้องของ Schema", - "seed": "Seed", + "seed": "ซีด", "stopSequences": "ลำดับการหยุด", "stopSequencesPlaceholder": "เช่น \"\\n\\n\" หรือ \"END\"", "autoProvider": "อัตโนมัติ", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} คอลัมน์", "addModelToCompare": "เพิ่มคอลัมน์โมเดลเพื่อเปรียบเทียบ", "modelsSimultaneously": "สูงสุด {max} โมเดลพร้อมกัน", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "กำลังเรียกใช้…", + "runLabel": "เรียกใช้", + "enterToolResult": "ป้อนผลลัพธ์ของเครื่องมือ…", "build": { "step1Label": "ต้องการทดสอบอะไร?", "step2Label": "กำหนดค่า", @@ -11221,7 +11228,7 @@ "noAudioUrl": "การตอบกลับไม่มี URL ของเสียง: {response}", "music": "ดนตรี", "embeddingSample": "OmniRoute กำหนดเส้นทางคำขอ AI ไปยังผู้ให้บริการหลายราย", - "embedding": "Embedding", + "embedding": "เวกเตอร์ฝังตัว", "imageSample": "เมืองแห่งอนาคตยามพระอาทิตย์ตกดิน แสงสีแบบภาพยนตร์", "image": "รูปภาพ", "ttsSample": "สวัสดีจาก OmniRoute นี่คือการทดสอบการแปลงข้อความเป็นเสียง", @@ -11237,7 +11244,7 @@ "searchResultFallback": "ผลลัพธ์ {number}", "noKeysFound": "ไม่พบคีย์ API เพิ่มคีย์ได้ในส่วนคีย์", "exampleLabel": "ตัวอย่าง", - "latency": "{ms}ms", + "latency": "{ms} มิลลิวินาที", "statsLine": "{ms}ms · {tokensIn} เข้า / {tokensOut} ออก โทเค็น", "defaultKey": "(ค่าเริ่มต้น)", "clear": "ล้าง", @@ -11250,73 +11257,73 @@ "stop": "หยุด" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "กำลังบันทึก", + "paused": "หยุดชั่วคราว", + "pipelineLogsOn": "เปิดบันทึกไปป์ไลน์", + "pipelineLogsOff": "ปิดบันทึกไปป์ไลน์", + "updatingPipelineLogs": "กำลังอัปเดตบันทึกไปป์ไลน์...", + "updatePipelineFailed": "อัปเดตการบันทึกไปป์ไลน์ไม่สำเร็จ", + "capturePipeline": "บันทึกเพย์โหลดของไปป์ไลน์สำหรับคำขอใหม่", + "searchPlaceholder": "ค้นหาโมเดล ผู้ให้บริการ บัญชี คีย์ API และคอมโบ...", + "allProviders": "ผู้ให้บริการทั้งหมด", + "allModels": "โมเดลทั้งหมด", + "allAccounts": "บัญชีทั้งหมด", + "allApiKeys": "คีย์ API ทั้งหมด", + "total": "ทั้งหมด", + "ok": "สำเร็จ", + "err": "ข้อผิดพลาด", + "combo": "คอมโบ", + "keys": "คีย์", + "shown": "ที่แสดง", + "sortNewest": "ใหม่ที่สุด", + "sortOldest": "เก่าที่สุด", + "sortTokensDesc": "โทเค็น ↓", + "sortTokensAsc": "โทเค็น ↑", + "sortDurationDesc": "ระยะเวลา ↓", + "sortDurationAsc": "ระยะเวลา ↑", + "sortStatusDesc": "สถานะ ↓", + "sortStatusAsc": "สถานะ ↑", + "sortModelAsc": "โมเดล A-Z", + "sortModelDesc": "โมเดล Z-A", + "sortLogs": "เรียงลำดับบันทึก", + "refresh": "รีเฟรช", + "columnsLabel": "คอลัมน์", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semantic": "เชิงความหมาย", + "upstream": "ต้นทาง", + "semanticCacheHit": "พบแคชเชิงความหมาย (ให้บริการโดย OmniRoute)", + "upstreamResponse": "การตอบกลับจากผู้ให้บริการต้นทาง", + "noApiKey": "ไม่มีคีย์ API", + "requestedRoutedTitle": "ขอใช้ {requested} แต่กำหนดเส้นทางเป็น {routed}", "statusFilters": { - "all": "All", + "all": "ทั้งหมด", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "สำเร็จ", + "combo": "ชุดค่าผสม" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "สถานะ", + "cacheSource": "แหล่งที่มาของแคช", + "model": "โมเดล", + "requested": "ที่ร้องขอ", + "provider": "ผู้ให้บริการ", + "protocol": "โปรโตคอลคำขอ", + "account": "บัญชี", + "apiKey": "คีย์ API", + "combo": "ชุดค่าผสม", + "tokens": "โทเค็น", "compressed": "การบีบอัด", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "ระยะเวลา", + "time": "เวลา", + "conversation": "การสนทนา", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "กำลังโหลดบันทึก...", + "noLogs": "ยังไม่มีบันทึก ลองเรียกใช้ API แล้วบันทึกจะแสดงที่นี่", + "noMatchingLogs": "ไม่มีบันทึกที่ตรงกับตัวกรองปัจจุบัน", + "callLogsInfo": "บันทึกการเรียกใช้จะถูกบันทึกเป็นไฟล์ JSON ไว้ที่ {dataDir} และหมุนเวียนตาม {retentionDays} และ {maxEntries} ด้วย", "loadMore": "โหลดเพิ่มเติม", "loadingMore": "กำลังโหลดเพิ่มเติม...", "correlationId": "รหัสการเชื่อมโยง", @@ -11417,59 +11424,59 @@ "correlationId": "รหัสความสัมพันธ์", "correlationIdValue": "รหัสความสัมพันธ์: {id}", "detailedPayloadInfo": "โปรดเปิดใช้งานการบันทึกข้อมูลอย่างละเอียดก่อนหากคุณต้องการดูข้อมูลการส่งข้อมูลของไคลเอนต์/ผู้ให้บริการแบบสี่ขั้นตอนสำหรับคำขอใหม่", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "คัดลอกทั้งหมด", + "copiedAll": "คัดลอกทั้งหมดแล้ว" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "ทั้งหมด", + "filterErrors": "ข้อผิดพลาด", + "filterSuccess": "สำเร็จ", + "filterTimeout": "หมดเวลา", + "colStatus": "สถานะ", + "colProxy": "พร็อกซี", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "ประเภท", + "colLevel": "ระดับ", + "colProvider": "ผู้ให้บริการ", + "colTarget": "เป้าหมาย", + "colLatency": "เวลาแฝง", + "colClientIp": "IP ไคลเอนต์", + "colTime": "เวลา", + "recording": "กำลังบันทึก", + "paused": "หยุดชั่วคราว", + "searchPlaceholder": "ค้นหาโฮสต์ ผู้ให้บริการ เป้าหมาย IP...", + "allTypes": "ทุกประเภท", + "allLevels": "ทุกระดับ", + "allProviders": "ผู้ให้บริการทั้งหมด", + "total": "ทั้งหมด", + "ok": "ตกลง", + "err": "ข้อผิดพลาด", + "timeoutShort": "หมดเวลา", + "direct": "โดยตรง", + "newest": "ใหม่ล่าสุด", + "oldest": "เก่าที่สุด", + "latencyDesc": "เวลาแฝง ↓", + "latencyAsc": "เวลาแฝง ↑", + "refresh": "รีเฟรช", + "columns": "คอลัมน์", + "loadingProxyLogs": "กำลังโหลดบันทึกพร็อกซี...", + "noProxyLogs": "ยังไม่มีบันทึกพร็อกซี โปรดกำหนดค่าพร็อกซีและเรียกใช้ API เพื่อดูบันทึกที่นี่", + "noMatchingLogs": "ไม่มีบันทึกที่ตรงกับตัวกรองปัจจุบัน", + "tlsFingerprint": "ลายนิ้วมือ TLS ของ Chrome 124", "colPublicIp": "IP สาธารณะ" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "เสียงพูด", + "search": "ค้นหา", + "images": "รูปภาพ", + "chat": "แชต", + "music": "เพลง", + "responses": "การตอบกลับ", + "rerank": "จัดอันดับใหม่", + "video": "วิดีโอ", + "embeddings": "เวกเตอร์ฝังตัว", + "transcription": "การถอดเสียง" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "รันไทม์", + "description": "การสังเกตการณ์แบบเรียลไทม์ — ความยืดหยุ่น 3 ชั้น + เซสชัน + การแจ้งเตือนโควตา", + "pause": "หยุดชั่วคราว", + "resume": "ดำเนินการต่อ", + "refreshNow": "รีเฟรชตอนนี้", + "kpiSessions": "เซสชัน", + "kpiCircuits": "วงจรตัดการทำงาน", + "kpiCooldowns": "ช่วงพักการเชื่อมต่อ", + "kpiLockouts": "การล็อก", + "hintStickyBound": "ผูกแบบคงที่ {count} รายการ", + "hintRecovering": "กำลังกู้คืน {count} รายการ", + "hintAllHealthy": "ทั้งหมดทำงานปกติ", + "hintOpen": "เปิดอยู่", + "hintConnsCooling": "การเชื่อมต่ออยู่ในช่วงพัก", + "hintModelsBlocked": "โมเดลถูกบล็อก", + "resilienceTitle": "ความยืดหยุ่น 3 ชั้น", + "resilienceSubtitle": "สอดคล้องกับโมเดลความยืดหยุ่นที่ระบุไว้ในเอกสาร", + "providersHealthy": "ผู้ให้บริการทำงานปกติ {percent}%", + "layer": "ชั้นที่ {n}", + "layer1Title": "วงจรตัดการทำงานของผู้ให้บริการ", + "layer1Desc": "หยุดส่งทราฟฟิกไปยังผู้ให้บริการที่ล้มเหลวในระดับต้นทาง", + "layer2Title": "ช่วงพักการเชื่อมต่อ", + "layer2Desc": "ข้ามบัญชี/คีย์ที่มีปัญหาหนึ่งรายการ โดยการเชื่อมต่ออื่นยังคงให้บริการต่อไป", + "layer3Title": "การล็อกโมเดล", + "layer3Desc": "การล็อกตามขีดจำกัดอัตราสำหรับแต่ละโมเดล โดยการเชื่อมต่อเดิมยังคงให้บริการโมเดลอื่นได้", + "badgeAffectedOf": "ได้รับผลกระทบ {affected} จาก {total} รายการ", + "badgeCooling": "อยู่ในช่วงพัก {count} รายการ", + "badgeLocked": "ถูกล็อก {count} รายการ", + "emptyCircuits": "ยังไม่มีวงจรตัดการทำงานที่เปิดใช้งาน", + "emptyCooldowns": "ไม่มีช่วงพักการเชื่อมต่อที่เปิดใช้งาน", + "emptyLockouts": "ไม่มีการล็อกโมเดล", + "moreCooldowns": "ช่วงพักเพิ่มเติมอีก +{count} รายการ", + "moreLockouts": "การล็อกเพิ่มเติมอีก +{count} รายการ", + "feedTitle": "ฟีดสด", + "feedSubtitle": "เหตุการณ์ {count} รายการล่าสุด", + "feedFilterAll": "ทั้งหมด", + "feedFilterCircuits": "วงจร", + "feedFilterCooldowns": "ช่วงพัก", + "feedFilterLockouts": "การล็อก", + "feedFilterSessions": "เซสชัน", + "feedFilterQuotas": "โควตา", + "feedClear": "ล้าง", + "feedEmptyWaiting": "กำลังรอเหตุการณ์... (ตรวจสอบทุก 5 วินาที)", + "feedEmptyFiltered": "ไม่มีเหตุการณ์ที่ตรงกับตัวกรองนี้", + "sessionsTitle": "เซสชันที่ใช้งานอยู่", + "sessionsSubtitle": "ลายนิ้วมือคำขอที่ผูกแบบคงที่ (สด)", + "sessionsActive": "ใช้งานอยู่ {count} รายการ", + "sessionsEmptyTitle": "ไม่มีเซสชันที่ใช้งานอยู่", + "sessionsEmptyHint": "เซสชันจะปรากฏเมื่อคำขอไหลผ่านพร็อกซี", + "tblSession": "เซสชัน", + "tblAge": "อายุ", + "tblIdle": "ไม่ได้ใช้งาน", + "tblReqs": "คำขอ", + "tblBoundTo": "ผูกกับ", + "topApiKeys": "คีย์ API อันดับต้น ๆ", + "quotaMonitorsTitle": "ตัวตรวจสอบโควตา", + "quotaMonitorsSubtitle": "สถานะโควตาสดตามช่วงเวลาของแต่ละบัญชี", + "openQuota": "เปิดโควตา", + "allQuotasHealthy": "โควตาทั้งหมดเป็นปกติ", + "statusExhausted": "หมดแล้ว", + "statusAlerting": "กำลังแจ้งเตือน", + "statusError": "ข้อผิดพลาด", + "moreSuffix": "อีก +{count} รายการ" }, "quotaShare": { "weightPercent": "น้ำหนัก %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "การแชร์โควตา", + "description": "แชร์โควตาของผู้ให้บริการระหว่างคีย์ API โดยกำหนดขีดจำกัดเป็น %", + "newPool": "พูลใหม่", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "การกำหนดค่าถูกบันทึกไว้ใน localStorage (ยังไม่ได้จัดเก็บถาวรบนเซิร์ฟเวอร์) การบังคับใช้เพดานต่อคำขอยังไม่ได้เชื่อมเข้ากับไปป์ไลน์ของพร็อกซี หน้าจอนี้ช่วยให้คุณออกแบบและแสดงภาพการแบ่งโควตา ส่วนการบังคับใช้จริงจะเพิ่มเข้ามาในการพัฒนาในอนาคต พร้อมการจัดเก็บถาวรใน DB และการสกัดกั้นการเรียกไปยังต้นทาง", + "kpiActivePools": "พูลที่ใช้งานอยู่", + "kpiKeysAllocated": "คีย์ที่จัดสรรแล้ว", + "kpiAvgUnallocated": "เฉลี่ยที่ยังไม่ได้จัดสรร", + "kpiProvidersWithQuota": "ผู้ให้บริการที่มีโควตา", + "emptyTitle": "ยังไม่ได้กำหนดค่าพูล", + "emptyDescription": "สร้างพูลเพื่อกำหนดคีย์ API ให้แชร์ช่วงโควตาของผู้ให้บริการโดยจัดสรรเป็น %", + "loading": "กำลังโหลด…", + "removePool": "ลบพูล", + "removeConfirm": "ลบพูลนี้หรือไม่?", + "pool": "พูล", + "used": "ใช้แล้ว", + "allocationsCount": "การจัดสรร ({count})", + "allocatedFree": "จัดสรรแล้ว {allocated}% · ว่าง {free}%", + "noAllocations": "ยังไม่มีคีย์ที่ได้รับการจัดสรร", + "capLabel": "ขีดจำกัด {value}", + "notTrackedYet": "(ยังไม่ได้ติดตาม)", + "policy": "นโยบาย", "apiKeyColumn": "คีย์ API", "weightColumn": "น้ำหนัก", "fairShareShort": "เป็นธรรม", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "เข้มงวด", + "policySoft": "ยืดหยุ่น", + "policyBurst": "ใช้ส่วนเกินชั่วคราว", + "policyHardHint": "บล็อกเมื่อคีย์ใช้โควตาที่จัดสรรหมด", + "policySoftHint": "อนุญาตให้ใช้เกินและแจ้งเตือนเท่านั้น", + "policyBurstHint": "อนุญาตให้ใช้ส่วนที่ว่างของพูลชั่วคราว", + "editAllocations": "แก้ไขการจัดสรร", + "newPoolTitle": "พูลโควตาใหม่", + "providerConnection": "การเชื่อมต่อผู้ให้บริการ (บัญชี)", + "selectConnection": "เลือกการเชื่อมต่อ…", + "noEligibleConnections": "ไม่มีการเชื่อมต่อที่มีข้อมูลโควตา โปรดรีเฟรชจาก /dashboard/quota ก่อน", + "quotaWindow": "ช่วงเวลาโควตา", + "selectWindow": "เลือกช่วงเวลา…", + "alreadyUsedSuffix": "(ใช้แล้ว)", + "windowReset": "รีเซ็ต", + "duplicatePoolError": "มีพูลสำหรับการเชื่อมต่อและช่วงเวลานี้อยู่แล้ว", + "cancel": "ยกเลิก", + "createPool": "สร้างพูล", + "editTitle": "แก้ไขการจัดสรร", + "noKeysAdded": "ไม่มีคีย์ที่ได้รับการจัดสรร เพิ่มคีย์ด้านล่าง", + "totalLabel": "รวม: {percent}%", + "totalExceeded": "⚠ เกิน 100%", + "addKey": "+ เพิ่มคีย์…", + "equalSplit": "แบ่งเท่า ๆ กัน", + "save": "บันทึกการจัดสรร", "betaPreviewLabel": "เบต้า — การแสดงตัวอย่าง UI", "betaConfigSavedPrefix": "การกำหนดค่าถูกบันทึกไว้ใน", "betaConfigSavedSuffix": "(ยังไม่ได้อยู่บนเซิร์ฟเวอร์) Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", @@ -11668,10 +11675,10 @@ "endpointsHint": "เรียกใช้โมเดลเสมือนเหล่านี้ด้วยคีย์ที่จัดสรรไว้ — การกำหนดเส้นทาง + โควตาจะถูกจัดการตามกลุ่ม", "previewForKey": "ตัวอย่างสำหรับคีย์", "previewKeyNone": "(เอนด์พอยต์ทั้งหมด)", - "endpointsBaseUrl": "Base URL", + "endpointsBaseUrl": "URL พื้นฐาน", "endpointsCollapse": "ยุบ", "endpointsExpand": "ขยาย", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "เนทีฟของ Anthropic", "endpointsResponsesNote": "การตอบกลับของ OpenAI — codex/github", "endpointsWsNote": "WebSocket — codex เท่านั้น", "betaText": "Quota Share ทำงานได้ตามปกติ แต่อาจพบข้อผิดพลาดได้ หากพบปัญหา โปรดรายงาน", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "กลุ่มนี้ยังมีพูลอยู่ — โปรดมอบหมายใหม่หรือลบพูลเหล่านั้นออกก่อน", "ungroupedTitle": "ไม่ได้จัดกลุ่ม", "ungroupedHint": "พูลเหล่านี้ไม่ได้ถูกมอบหมายให้กับกลุ่มที่รู้จัก แก้ไขพูลเพื่อย้ายไปยังกลุ่มจริง", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "ไม่สามารถลบพูลนี้ได้", + "dismiss": "ปิด" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "ปลั๊กอิน", + "description": "ติดตั้งและจัดการปลั๊กอินเพื่อขยายความสามารถของ OmniRoute", + "loading": "กำลังโหลดปลั๊กอิน...", + "scanning": "กำลังสแกน...", + "scanForPlugins": "สแกนหาปลั๊กอิน", + "noPlugins": "ยังไม่ได้ติดตั้งปลั๊กอิน", + "noPluginsDescription": "วางไดเรกทอรีปลั๊กอินไว้ใน ~/.omniroute/plugins/ แล้วคลิกสแกน", + "activate": "เปิดใช้งาน", + "deactivate": "ปิดใช้งาน", + "uninstall": "ถอนการติดตั้ง", + "uninstallConfirm": "ถอนการติดตั้งปลั๊กอิน \"{name}\" หรือไม่", + "pluginScanComplete": "สแกนปลั๊กอินเสร็จสมบูรณ์", + "pluginScanFailed": "สแกนปลั๊กอินไม่สำเร็จ", + "activated": "เปิดใช้งาน {name} แล้ว", + "deactivated": "ปิดใช้งาน {name} แล้ว", + "activateFailed": "ไม่สามารถเปิดใช้งาน {name} ได้", + "deactivateFailed": "ไม่สามารถปิดใช้งาน {name} ได้", + "uninstalled": "ถอนการติดตั้ง {name} แล้ว", + "uninstallFailed": "ไม่สามารถถอนการติดตั้ง {name} ได้", + "configure": "กำหนดค่า: {name}", + "configurePlugin": "กำหนดค่า", + "noConfigSettings": "ปลั๊กอินนี้ไม่มีการตั้งค่าที่กำหนดค่าได้", + "saving": "กำลังบันทึก...", + "saveConfiguration": "บันทึกการกำหนดค่า", + "configurationSaved": "บันทึกการกำหนดค่าแล้ว", + "saveConfigurationFailed": "ไม่สามารถบันทึกการกำหนดค่าได้", + "pluginNotFound": "ไม่พบปลั๊กอิน", + "version": "เวอร์ชัน", + "author": "ผู้เขียน", + "description_label": "คำอธิบาย", + "status": "สถานะ", + "enabled": "เปิดใช้งาน", + "disabled": "ปิดใช้งาน", "installedTab": "ติดตั้งแล้ว", "marketplaceTab": "มาร์เก็ตเพลส", "marketplaceUrlLabel": "URL มาร์เก็ตเพลสแบบกำหนดเอง", @@ -11729,7 +11736,7 @@ "verified": "ยืนยันแล้ว", "install": "ติดตั้ง", "installedFromMarketplace": "ติดตั้งปลั๊กอิน {name} แล้ว!", - "hooks": "Hooks" + "hooks": "ฮุก" }, "quotaPlans": { "title": "แผนและโควตา", @@ -11758,7 +11765,7 @@ "useCatalogButton": "ใช้แค็ตตาล็อก", "saveOverrideButton": "บันทึกการเขียนทับ", "revertToCatalogButton": "ย้อนกลับเป็นแค็ตตาล็อก", - "unknownProviderNotice": "Select a provider on the left to configure its quota plan.", + "unknownProviderNotice": "เลือกผู้ให้บริการทางด้านซ้ายเพื่อกำหนดค่าแผนโควตา", "catalogTitle": "แค็ตตาล็อกที่รู้จัก", "catalogDescription": "ตรวจพบแผนโดยอัตโนมัติสำหรับผู้ให้บริการต่อไปนี้:" }, @@ -12040,7 +12047,7 @@ "agentBridgeModeDesc": "ดักจับทราฟฟิกจาก IDE agent ทั้งหมดที่เชื่อมต่ออยู่", "customHostsMode": "โฮสต์ที่กำหนดเอง", "customHostsModeDesc": "เพิ่มโฮสต์ที่ต้องการดักจับ", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "พร็อกซี HTTP", "httpProxyModeDesc": "ใช้ตัวแปรสภาพแวดล้อม HTTP_PROXY", "systemWideMode": "ทั้งระบบ", "systemWideModeDesc": "ดักจับทราฟฟิกทั้งหมดของระบบ (ขั้นสูง)", @@ -12051,13 +12058,13 @@ "profileCustom": "กำหนดเอง", "profileAll": "ทั้งหมด", "filterHost": "กรองโฮสต์…", - "filterAgent": "Agent", + "filterAgent": "เอเจนต์", "filterStatus": "สถานะ", "pauseBtn": "หยุดชั่วคราว", "resumeBtn": "ทำงานต่อ", "clearBtn": "ล้าง", "exportHar": "ส่งออก .har", - "recordSession": "REC", + "recordSession": "บันทึก", "stopSession": "หยุด", "liveBadge": "สด", "offlineBadge": "ออฟไลน์", @@ -12165,7 +12172,7 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "โค้ด CLI", "phrase": "เครื่องมือโค้ดที่คุณชี้ไปยัง OmniRoute", "flow": "คุณ → CLI Code → OmniRoute → ผู้ให้บริการ", "seeOther": "ดู →" @@ -12179,7 +12186,7 @@ "acp": { "title": "เอเจนต์ ACP", "phrase": "CLI ที่ OmniRoute สร้างขึ้นเป็นแบ็กเอนด์การประมวลผล (โฟลว์ย้อนกลับ)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "ผู้ใช้ส่วนใหญ่ไม่จำเป็นต้องสนใจตัวเลือกนี้ — ใช้เฉพาะเมื่อการผสานรวมต้องการเท่านั้น", "flow": "ไคลเอนต์ → OmniRoute → สร้าง CLI (stdio/ACP) → การตอบกลับ", "seeOther": "ดู →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI ที่ถูกใช้งานเป็นแบ็กเอนด์โดย Omni", "desc": "การทำงานแบบย้อนกลับ", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → เรียกใช้ CLI → การตอบกลับ", "examples": "เช่น: claude, codex (ACP)" } }, @@ -12233,8 +12240,8 @@ "category": "ประเภท", "detectionStatus": "การตรวจหา", "configStatus": "การตั้งค่า", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "URL ฐาน", + "apiKeyLabel": "คีย์ API", "modelMappingLabel": "การจับคู่โมเดล", "noActiveProviders": "ไม่มีผู้ให้บริการที่เปิดใช้งาน.", "noActiveProvidersDesc": "ไปที่หน้าผู้ให้บริการเพื่อเชื่อมต่ออย่างน้อย 1 ผู้ให้บริการก่อนที่จะตั้งค่า CLI.", @@ -12246,7 +12253,7 @@ "pageSubtitle": "เครื่องมือโค้ดที่ชี้ไปยัง OmniRoute", "searchPlaceholder": "ค้นหา CLI…", "filterDetectionLabel": "การตรวจหา", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "URL ฐาน", "detectionAll": "ทั้งหมด", "detectionInstalled": "ติดตั้งแล้ว", "detectionNotFound": "ไม่พบ", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "เว็บฮุค", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "ลงทะเบียน แสดงรายการ ทดสอบ และลบปลายทาง webhook กำหนดค่าการสมัครรับเหตุการณ์ (request.completed, request.failed, quota.exceeded ฯลฯ) และจัดการการลองส่งใหม่" }, "omni-mcp": { "name": "เซิร์ฟเวอร์ MCP", @@ -12390,47 +12397,47 @@ "description": "ปลายทางการอนุมานหลักที่เข้ากันได้กับ OpenAI: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank และ Responses API ซึ่งเป็นส่วนการผสานรวมหลักสำหรับเอเจนต์ AI" }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: ให้บริการ", "description": "เริ่ม, หยุด และรีสตาร์ทเซิร์ฟเวอร์ OmniRoute จาก CLI จัดการโหมดดีมอน (daemon mode), การกำหนดค่าพอร์ต, การกู้คืนอัตโนมัติ, การผสานรวมกับถาดระบบ (system tray) และทางลัดสำหรับเปิดแดชบอร์ด" }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: สถานะระบบ", "description": "ตรวจสอบสถานะความสมบูรณ์ของเซิร์ฟเวอร์, สถานะส่วนประกอบ และเมตริกสดจาก CLI เรียกใช้ `health`, `health components` และ `health watch` สำหรับแดชบอร์ดแบบเรียลไทม์ของเซอร์กิตเบรกเกอร์และสถานะผู้ให้บริการ" }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: ผู้ให้บริการ", "description": "จัดการการเชื่อมต่อผู้ให้บริการจาก CLI: แสดงรายการผู้ให้บริการที่มีอยู่/ที่กำหนดค่าไว้, เพิ่ม, ทดสอบ, ทดสอบทั้งหมด (test-all), ตรวจสอบความถูกต้อง (validate), หมุนเวียนคีย์ API และดูเมตริกของแต่ละผู้ให้บริการ" }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: คีย์ API", "description": "สร้าง, แสดงรายการ, หมุนเวียน และเพิกถอนคีย์ API ของ OmniRoute จาก CLI จัดการโฟลว์ OAuth สำหรับการตรวจสอบสิทธิ์ผู้ให้บริการ และตรวจสอบขอบเขตและวันหมดอายุของคีย์" }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: โมเดล", "description": "ค้นหาโมเดล AI ที่มีอยู่, แสดงรายการนามแฝงของโมเดล และเรียกดูแค็ตตาล็อกโมเดลทั้งหมดจาก CLI กรองตามผู้ให้บริการ, ค้นหาตามความสามารถ และแก้ไขชื่อรุ่นย่อยของโมเดล" }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: แชต", "description": "ส่ง chat completions, สตรีมการตอบกลับ และเริ่มเซสชัน REPL แบบโต้ตอบจาก CLI รองรับผู้ให้บริการ OmniRoute ทั้งหมด, การกำหนดเส้นทางแบบคอมโบ และการกำหนดค่าพรอมต์ระบบ" }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: การกำหนดเส้นทางและชุดผสม", "description": "สร้าง, แสดงรายการ, อัปเดต และลบการกำหนดเส้นทางแบบคอมโบจาก CLI ทดสอบกลยุทธ์การกำหนดเส้นทาง, ตรวจสอบเมตริกของคอมโบ และกำหนดค่าเชนสำรอง (fallback chains) แบบโต้ตอบ" }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: ความยืดหยุ่นและโควตา", "description": "ตรวจสอบและจัดการสถานะเซอร์กิตเบรกเกอร์, คูลดาวน์การเชื่อมต่อ, ขีดจำกัดโควตา และระดับการหน่วงเวลา (backoff levels) จาก CLI รีเซ็ตผู้ให้บริการที่ค้างอยู่ และกำหนดค่าเกณฑ์ความยืดหยุ่น (resilience thresholds)" }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: การบีบอัด", "description": "กำหนดค่าและทดสอบการบีบอัดพรอมต์จาก CLI จัดการตัวกรอง RTK, กฎ Caveman, โหมดการบีบอัดแบบซ้อนกัน (stacked compression) และดูตัวอย่างผลลัพธ์การบีบอัดด้วยพรอมต์จริง" }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: บริบทและเซสชัน", "description": "จัดการการกำหนดค่าวิศวกรรมบริบท (context engineering), ชุดตัวกรอง RTK และเซสชันการสนทนาจาก CLI ใช้การตั้งค่าการส่งต่อบริบท (context-relay) และตรวจสอบไปป์ไลน์บริบทที่ใช้งานอยู่" }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: ค่าใช้จ่ายและการใช้งาน", "description": "ดูรายละเอียดค่าใช้จ่าย, การใช้งานโทเค็น และบันทึกการเรียกใช้งานจาก CLI กรองตามผู้ให้บริการ, โมเดล หรือช่วงวันที่ ส่งออกรายงานการใช้งาน และตรวจสอบการใช้จ่ายต่อการเชื่อมต่อ" }, "cli-mcp": { @@ -12442,7 +12449,7 @@ "description": "โต้ตอบกับเซิร์ฟเวอร์ OmniRoute A2A จาก CLI ส่งงาน, ตรวจสอบประวัติการทำงานของทักษะ และทดสอบโปรโตคอล agent-to-agent JSON-RPC 2.0 แบบโต้ตอบ" }, "cli-tunnel": { - "name": "CLI: Tunnels", + "name": "CLI: ทันเนล", "description": "เริ่มและหยุดการเชื่อมต่ออุโมงค์ (ngrok, Cloudflare, กำหนดเอง) จาก CLI ตรวจสอบ URL ของอุโมงค์ที่ใช้งานอยู่, กำหนดค่าการตรวจสอบสิทธิ์ และทดสอบการเข้าถึงจากภายนอก" }, "cli-backup-sync": { @@ -12458,7 +12465,7 @@ "description": "ส่งและตรวจสอบความคืบหน้าของงานการอนุมานแบบกลุ่ม (batch inference) จาก CLI อัปโหลดและจัดการไฟล์สำหรับการประมวลผลแบบกลุ่ม, ดึงผลลัพธ์ และรวมไปป์ไลน์แบบกลุ่มเข้ากับเวิร์กโฟลว์ CI/CD" }, "cli-eval": { - "name": "CLI: Evals", + "name": "CLI: การประเมิน", "description": "สร้างและรันชุดการประเมินผล, ดูความคืบหน้าของเกณฑ์มาตรฐานแบบสด, ดูการ์ดคะแนน, เปรียบเทียบประสิทธิภาพของโมเดล และรวมการรันการประเมินผลเข้ากับเวิร์กโฟลว์ CI จาก CLI" }, "cli-plugins-skills": { @@ -12470,7 +12477,7 @@ "description": "รันการตั้งค่าเริ่มต้น, กำหนดค่าการตั้งค่า CLI ทั่วโลก, จัดการตัวแปรสภาพแวดล้อม, ตรวจสอบการอัปเดต และกำหนดค่าการเริ่มต้นอัตโนมัติผ่านคำสั่งตั้งค่าและกำหนดค่าของ CLI" }, "cli-skill-collector": { - "name": "CLI: Agent Skill Collector", + "name": "CLI: ตัวรวบรวมทักษะเอเจนต์", "description": "ตรวจหาเครื่องมือเขียนโค้ด CLI ที่ติดตั้งไว้ (Claude Code, Codex, Cursor, Copilot, Cline และอื่นๆ), ค้นหา GitHub เพื่อหาทักษะของเอเจนต์ที่ตรงกัน และติดตั้งไปยังเครื่องมือที่ตรวจพบผ่าน API ในตัวของ OmniRoute" }, "config-codex-cli": { @@ -12497,7 +12504,7 @@ }, "comparison": { "colAgent": "ทักษะของเอเจนต์", - "colOmni": "Omni Skills", + "colOmni": "ทักษะ Omni", "whatIs": { "label": "คืออะไร", "agent": "SKILL.md ที่เครื่องสามารถอ่านได้ ซึ่งสอนเอเจนต์ภายนอกให้ใช้งาน OmniRoute", @@ -12535,7 +12542,7 @@ "categoryConfig": "คอนฟิก", "filterAll": "ทั้งหมด", "coverageLabel": "ความครอบคลุม", - "mcpUrl": "MCP URL", + "mcpUrl": "URL ของ MCP", "a2aLink": "A2A", "mcpPrompt": "เพิ่มปลายทาง MCP นี้ไปยังเอเจนต์ของคุณเพื่อมอบเครื่องมือ OmniRoute 37 รายการให้แก่เอเจนต์", "a2aPrompt": "ลงทะเบียน Agent Card นี้กับ orchestrator ของคุณเพื่อเปิดใช้งานการมอบหมายงานแบบ A2A", @@ -12589,14 +12596,14 @@ "typeApikey": "คีย์ API", "sortTypeFirst": "ง่ายที่สุดก่อน", "sortTypeFirstHelp": "จัดกลุ่มตามความยากง่ายในการลงทะเบียน (ไม่ต้องลงทะเบียน → เข้าสู่ระบบด้วย OAuth → คีย์ API) โดยยังคงเรียงลำดับตามคุณภาพภายในแต่ละกลุ่ม", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "เชื่อถือได้มากที่สุดก่อน", + "sortByReliabilityHelp": "จัดลำดับผู้ให้บริการตามสัดส่วนการเรียกที่สำเร็จในช่วงเวลาที่เลือก ผู้ให้บริการที่มีจำนวนการเรียกน้อยเกินกว่าจะระบุอัตราได้ จะยังคงเรียงตามคะแนนเดิมและอยู่ถัดจากผู้ให้บริการที่มีข้อมูลวัดผล", "typeLegend": "ไม่ต้องลงทะเบียน = ไม่ต้องตั้งค่า · เข้าสู่ระบบด้วย OAuth = ลงชื่อเข้าใช้ด้วยบัญชีของคุณเอง · คีย์ API = ใช้คีย์ของคุณเองหรือระดับใช้งานฟรีของผู้ให้บริการนั้น", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "ความน่าเชื่อถือ", + "colReliabilityHelp": "สัดส่วนการเรียกที่ผู้ให้บริการรายนี้ตอบกลับจริงในช่วง 24 ชั่วโมงที่ผ่านมา เครื่องหมายขีดหมายถึงมีปริมาณการใช้งานน้อยเกินกว่าจะระบุอัตราได้", + "reliabilitySample": "การเรียกสำเร็จ {successes} จาก {requests} ครั้งในช่วง {hours} ชั่วโมงที่ผ่านมา", + "reliabilityTooFew": "มีการเรียกเพียง {requests} ครั้งในช่วง {hours} ชม.ที่ผ่านมา — น้อยเกินกว่าจะระบุอัตราได้", + "reliabilityNoTraffic": "ไม่มีการเรียกที่บันทึกไว้ในช่วง 24 ชม.ที่ผ่านมา" }, "discovery": { "title": "การค้นหาผู้ให้บริการ", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "ผู้สนับสนุน Radar", + "description": "ยืนยันฟีดสดจากผู้สนับสนุน OmniRoute Radar แล้ว", + "criteria": "ยืนยันฟีดสดที่ลงนามจากผู้สนับสนุน Radar" }, "first-token": { "name": "โทเค็นแรก", @@ -12948,8 +12955,8 @@ "description": "อนุญาตการเชื่อมต่อหลายรายการสำหรับแต่ละโหนดความเข้ากันได้" }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "ปิดใช้งานการตรวจสอบหน้าต่างบริบท", + "description": "ข้ามการตรวจสอบหน้าต่างบริบทและจำนวนโทเค็นอินพุตสูงสุดภายใน OmniRoute สำหรับคำขอโดยตรงไปยังโมเดลเดียว ผู้ให้บริการต้นทางยังคงบังคับใช้ขีดจำกัดจริงของตน การบีบอัดพรอมต์และเพดานโทเค็นเอาต์พุตยังคงทำงานอยู่" }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "ลบรายการเอาต์พุตช่วงแสดงความคิดเห็นภายในออกจากสตรีมส่งผ่าน Responses API ก่อนส่งต่อไปยังไคลเอนต์ ปิดใช้งานแฟล็กนี้เพื่อรับความคิดเห็นต้นทางแบบดิบ" @@ -12985,7 +12992,7 @@ "description": "อนุญาตให้การกู้คืนสตรีมขอรับการตอบกลับอีกครั้งและต่อข้อมูลเข้าด้วยกันหลังจากที่ไบต์ไปถึงไคลเอนต์แล้ว" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "ทำให้การดำเนินการต่อกลางสตรีมปลอดภัยสำหรับการเรียกใช้เครื่องมือ: ห้ามดำเนินการต่อจากสตรีมที่ถูกตัดหลังจากส่งการเรียกใช้เครื่องมือแล้ว (ไม่ว่าจะยังดำเนินการอยู่หรือเสร็จสิ้นแล้ว) และหยุดหลังจากการดำเนินการต่อที่ว่างเปล่าหนึ่งครั้ง แทนที่จะใช้โควตาการลองใหม่ทั้งหมด" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "สลับไปยังการเชื่อมต่อพี่น้องหนึ่งครั้งเมื่อสตรีมปิดก่อนส่งเฟรมที่มีประโยชน์ใด ๆ และการลองใหม่แบบจำกัดบนการเชื่อมต่อเดิมถูกใช้ไปแล้ว หากไม่มีการเชื่อมต่อพี่น้องที่ใช้งานได้ ระบบจะส่งคืนข้อผิดพลาด early-EOF เดิม ปิด: early-EOF ยังคงเป็นผลสิ้นสุดหลังการลองใหม่" @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "เปิดใช้งานการเข้าถึงเครือข่ายใน skills sandbox" }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "ลูปเครื่องมือที่เซิร์ฟเวอร์เป็นผู้ควบคุม", + "description": "ดำเนินการเรียกเครื่องมือแบบไม่สตรีมที่เซิร์ฟเวอร์เป็นผู้ควบคุมต่อไป จนกว่าโมเดลจะส่งคืนการตอบกลับที่ไคลเอนต์ใช้งานได้" + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "ที่มาของ Retry-After", + "description": "สำหรับการตอบกลับข้อผิดพลาด 429/503 แบบรวมที่ระบุว่าไม่พร้อมใช้งาน ให้ละเว้น Retry-After เมื่อไม่ทราบเวลาลองใหม่ในอนาคตที่แน่ชัด แทนการส่งค่าที่สร้างขึ้นเป็น 1 วินาที เพิ่ม error.retry_after_provenance และอ่านข้อความบอกใบ้เกี่ยวกับการลองใหม่ในเส้นทางระบายคอมโบ" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "การหยุดโครงสร้างพื้นฐานตามลำดับความสำคัญที่มีการป้องกันเป็น 502", + "description": "ตอบกลับด้วย 502 แทน 503 เมื่อเป้าหมายตามลำดับความสำคัญที่ใช้โควตาเป็นทางเลือกสำรองเท่านั้นหยุดคอมโบด้วยสาเหตุที่พิสูจน์ได้ว่าไม่เกี่ยวกับโควตา ได้แก่ เซอร์กิตเบรกเกอร์ของผู้ให้บริการที่เปิดอยู่ หรือการข้ามตามการคาดการณ์เวลาแฝง" } } }, @@ -13171,7 +13182,7 @@ "segmentHint": "แต่ละส่วน = หนึ่งพูลฟรี · ลดข้อมูลซ้ำในพูล, นับตามจริง (ไม่มีการเพิ่มเพดานจำกัดอัตราการใช้งานเกินจริง)", "boost": "ปลดล็อกเพิ่มอีกประมาณ ~{tokens}/เดือน ด้วยการเติมเงิน OpenRouter $10 ครั้งเดียว (50 → 1000 คำขอ/วัน)", "uncapped": "ฟรีถาวร ไม่มีขีดจำกัดที่เผยแพร่ (จำกัดอัตราการใช้งาน) — เข้าถึงได้จริง ไม่นับรวมในหัวข้อหลัก:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "เพิ่มอีกประมาณ {tokens}/เดือน โดยต้องผ่านการตรวจสอบตัวตนตามภูมิภาค (เช่น การยืนยันชื่อจริงในจีนแผ่นดินใหญ่) — เป็นโควตาจริง แต่ไม่รวมอยู่ในตัวเลขพาดหัว:", "tosRestricted": "{count, plural, one {# โมเดล} other {# โมเดล}} ถูกทำเครื่องหมายว่าจำกัดตามข้อกำหนดการให้บริการ — คุณเป็นผู้ตัดสินใจ", "provider": "ผู้ให้บริการ", "model": "โมเดล", @@ -13270,80 +13281,80 @@ "viewFullHistory": "ดูประวัติทั้งหมดบน GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "นโยบายการกำหนดเส้นทางการใช้เหตุผล", + "apiKeyTitle": "การกำหนดเส้นทางการใช้เหตุผลสำหรับคีย์ API นี้", + "subtitle": "กำหนดเส้นทางโมเดลและระดับความพยายามในการใช้เหตุผลใหม่โดยไม่ต้องให้ไคลเอนต์รองรับ คำขอจะไม่เปลี่ยนแปลงเมื่อไม่ตรงกับกฎใด", + "loadError": "ไม่สามารถโหลดกฎการใช้เหตุผลได้", + "saveError": "กฎไม่ถูกต้องหรือไม่สามารถบันทึกได้", + "saved": "บันทึกกฎการใช้เหตุผลแล้ว", + "deleteConfirm": "ลบกฎการใช้เหตุผลนี้หรือไม่", + "deleteError": "ไม่สามารถลบกฎการใช้เหตุผลได้", + "empty": "ยังไม่ได้กำหนดค่ากฎการใช้เหตุผลที่ตรงกัน", + "all": "ทั้งหมด", + "any": "อย่างใดอย่างหนึ่ง", + "enabled": "เปิดใช้งาน", + "disabled": "ปิดใช้งาน", + "filterSearch": "ค้นหากฎ", + "filterScope": "กรองตามขอบเขต", + "filterStatus": "กรองตามสถานะ", + "allModels": "ทุกโมเดล", + "keepModel": "คงโมเดลเดิม", + "otherModel": "โมเดลอื่น", + "combo": "ผสมผสาน", + "priorityShort": "ลำดับความสำคัญ {value}", + "toggleAria": "เปิดใช้งาน {name}", + "edit": "แก้ไข", + "delete": "ลบ", + "name": "ชื่อ", + "description": "คำอธิบาย", + "scopeLabel": "ขอบเขต", + "apiKey": "คีย์ API", + "sourceCombo": "ชุดค่าต้นทาง", + "connection": "การเชื่อมต่อ", + "sourceModel": "โมเดลต้นทางหรือไวลด์การ์ด", + "sourceModelOptional": "เว้นว่าง = ทุกโมเดล", + "sourceModelExample": "เช่น gpt-5*", + "sourceEffort": "ระดับความพยายามต้นทาง", + "missing": "ไม่ได้ระบุ", + "signalOnly": "สัญญาณการใช้เหตุผลแบบไม่เป็นระดับขั้น", + "requestTags": "แท็กคำขอ", + "requestTagsExample": "การเขียนโค้ด, ภายใน", + "tagMode": "การจับคู่แท็ก", + "effortMode": "โหมดความพยายาม", + "targetEffort": "ระดับความพยายามเป้าหมาย", + "routingTarget": "เป้าหมายการกำหนดเส้นทาง", + "targetModel": "โมเดลเป้าหมาย", + "targetCombo": "ชุดค่าเป้าหมาย", + "budgetAction": "งบประมาณการคิด", + "budgetTokens": "โทเค็นที่จัดสรร", + "priority": "ลำดับความสำคัญ", + "saveChanges": "บันทึกการเปลี่ยนแปลง", + "add": "เพิ่มกฎ", + "cancel": "ยกเลิก", + "simulateTitle": "จำลองกฎ", + "model": "โมเดล", + "effort": "ระดับความพยายาม", + "transport": "การรับส่งข้อมูล", + "simulate": "จำลองโดยไม่ใช้ต้นทาง", + "extendedComboWarning": "Max/Ultra จะได้รับการตรวจสอบแยกกันสำหรับเป้าหมายแต่ละชุดค่าระหว่างการกำหนดเส้นทาง", + "extendedUnknownWarning": "ป้อนโมเดลเป้าหมายเพื่อตรวจสอบการรองรับ Max/Ultra", + "extendedUnsupportedWarning": "ทราบว่ามีเพียงโมเดล Codex GPT-5.6 ที่เหมาะสมเท่านั้นที่รองรับ Max/Ultra เซิร์ฟเวอร์จะยอมรับโมเดลแบบกำหนดเองที่ไม่รู้จักพร้อมคำเตือน", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "ส่วนกลาง", + "apiKey": "คีย์ API", + "combo": "ชุดค่า", + "model": "โมเดล", + "connection": "การเชื่อมต่อ" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "สืบทอดจากไคลเอนต์", + "default": "ใช้ค่าเริ่มต้น", + "force": "บังคับใช้" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "คงไว้", + "remove": "นำออก", + "set": "ตั้งค่าคงที่" } }, "chaosConfig": { @@ -13425,91 +13436,91 @@ "tierCommunity": "ชุมชน (ล่าช้า 30 วัน)", "activateTitle": "เปิดใช้งานเรดาร์", "activateDescription": "เรดาร์เสริมแคตตาล็อกโมเดลฟรีด้วยข้อมูลจากชุมชน — อัปเดตความพร้อมใช้งานของโมเดล โควต้า และคู่มือการตั้งค่า", + "accessScaleTitle": "ทำความเข้าใจการเข้าถึง Radar ก่อนเปิดใช้งาน", + "accessScaleIntro": "Radar จะไม่เชื่อมต่อเครือข่ายจนกว่าคุณจะยินยอม เลือกการเข้าถึงแบบ Community หรือเปิดใช้งานคีย์ผู้สนับสนุนส่วนบุคคลหลังจากตรวจสอบกฎเหล่านี้แล้ว", + "accessCommunityRule": "Community — ไม่ต้องใช้คีย์: แค็ตตาล็อกฉบับสมบูรณ์ที่ล่าช้า 30 วัน", + "accessSingleUseRule": "ติดดาว + ติดตาม — หลังจาก GitHub OAuth ยืนยันทั้งสองรายการแล้ว บัญชี GitHub ของคุณจะได้รับสิทธิ์อ่านแค็ตตาล็อกแบบสดหนึ่งครั้ง จากนั้นสิทธิ์จะกลับไปเป็นแบบ Community โดยไม่สามารถออกสิทธิ์แบบครั้งเดียวนี้ให้บัญชีดังกล่าวได้อีก", + "accessContributorRule": "ผู้มีส่วนร่วม — PR ที่ผสานแล้ว คอมมิต และจำนวนบรรทัด ใช้เพื่อจัดอันดับประจำสัปดาห์เท่านั้น 10 อันดับแรกได้รับ 365 วัน อันดับ 11–100 ได้รับ 90 วัน ส่วนผู้มีส่วนร่วมที่อยู่นอก 100 อันดับแรกจะไม่ได้รับสิทธิ์ ไม่ว่าจะมีจำนวน PR เท่าใดก็ตาม การหลุดจากอันดับจะไม่ลดระยะเวลาที่ได้รับไปแล้ว", + "accessSupporterRule": "ผู้สนับสนุน — การซื้อแบบครั้งเดียวมอบสิทธิ์ 6 เดือน 1 ปี หรือตลอดชีพ โดยไม่มีการต่ออายุอัตโนมัติ การซื้อ การบริจาค ระยะเวลาจากการเป็นผู้มีส่วนร่วม และสิทธิ์ที่มอบให้ด้วยตนเองจะสะสมรวมกัน โดยสิทธิ์ตลอดชีพมีผลเหนือกว่าเสมอ", + "accessUseTitle": "การใช้งานส่วนบุคคล การกู้คืน และการตรวจสอบ", + "accessInstallationRule": "สิทธิ์ใช้งานส่วนบุคคล — ใช้คีย์กับการติดตั้งที่ใช้งานอยู่ได้ครั้งละหนึ่งแห่ง OmniRoute ไม่ทำลายนิ้วมือฮาร์ดแวร์ การกู้คืนจะเพิกถอนและแทนที่คีย์ที่สูญหายโดยไม่รีเซ็ตวันหมดอายุ", + "accessAbuseRule": "การตรวจสอบการใช้งานในทางที่ผิด — IP ที่แตกต่างกันรายการที่ 4 ภายใน 24 ชั่วโมงจะสร้างเพียงธงสำหรับการตรวจสอบด้วยตนเองเท่านั้น และจะไม่บล็อกหรือเพิกถอนคีย์โดยอัตโนมัติ", + "accessOffersRule": "ข้อเสนอแบบสดได้รับการคัดสรรด้วยตนเอง และอาจเปลี่ยนแปลงหรือหมดอายุได้", + "privacyTitle": "ข้อมูลที่ Radar แลกเปลี่ยน", + "privacyDownloadsRule": "การดาวน์โหลด — การติดตั้งของคุณจะได้รับแค็ตตาล็อกและข้อมูลเมตาการแนะนำที่ลงนามด้วยการเข้ารหัส คีย์แบบสดที่ถูกต้องจะปลดล็อกข้อเสนอและ Intel ที่มีลายเซ็นด้วย", + "privacySendsRule": "ข้อมูลที่ส่ง — การซิงค์ฝั่งเซิร์ฟเวอร์จะส่งคีย์ผู้สนับสนุนในรูปแบบ Bearer token และโครงสร้างพื้นฐาน HTTPS จะได้รับ IP ของการเชื่อมต่อ การบันทึกคำขอฟีดจะไม่จัดเก็บค่าทั้งสองแบบข้อมูลดิบ แต่จะเก็บแฮชของคีย์ การใช้งานโดยรวม และ HMAC ของ IP แบบตัดทอนซึ่งหมุนเวียนรายวันเพื่อใช้ตรวจสอบการใช้งานในทางที่ผิด", + "privacyNeverRule": "ข้อมูลที่ไม่เก็บรวบรวม — พรอมต์ คำตอบ การสนทนา ข้อมูลประจำตัวของผู้ให้บริการ ทราฟฟิกของโมเดล เวลาทำงาน เวลาแฝง และการกำหนดค่าผู้ให้บริการภายในเครื่อง จะไม่ถูกส่งไปยัง Radar", "activateButton": "เปิดใช้งาน", "activating": "กำลังเปิดใช้งาน...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", + "keySectionTitle": "มีคีย์ผู้สนับสนุนอยู่แล้วใช่ไหม", + "keyInvalidFormatError": "รูปแบบคีย์ไม่ถูกต้อง ต้องขึ้นต้นด้วย \"omr_\" ตามด้วยอักขระฐานสิบหก 40 ตัว", + "activateWithKeyButton": "เปิดใช้งานผู้สนับสนุน", + "changeKeyButton": "เปลี่ยนคีย์", + "claimSectionTitle": "ยังไม่มีคีย์ผู้สนับสนุนใช่ไหม", + "contributorButton": "ฉันเป็นผู้มีส่วนร่วม", + "contributorHint": "GitHub OAuth จะตรวจสอบอันดับประจำสัปดาห์ปัจจุบัน: 10 อันดับแรกได้รับ 365 วัน และอันดับ 11–100 ได้รับ 90 วัน จำนวน PR เพียงอย่างเดียวจะไม่มอบสิทธิ์ให้ผู้ที่อยู่นอก 100 อันดับแรก", + "supporterButton": "สนับสนุนโปรเจกต์", "supporterHint": "Support OmniRoute to get a supporter key with the live catalog and extra perks.", "colProvider": "ผู้ให้บริการ", "colModel": "โมเดล", "colQuota": "โควต้า", + "colLimits": "ขีดจำกัดอัตราการใช้งาน", + "trainsOnPrompts": "ฝึกโมเดลด้วยพรอมต์", + "trainsOnPromptsHelp": "ข้อกำหนดของผู้ให้บริการรายนี้ระบุว่าอาจนำพรอมต์ที่คุณส่งไปใช้ฝึกโมเดล โมเดลที่ไม่มีป้ายนี้ระบุว่าจะไม่นำไปใช้ หรือไม่ได้ระบุข้อมูลนี้ไว้ — การไม่มีข้อความระบุไม่ได้เป็นการรับประกัน", + "limitsUnknownHelp": "ขีดจำกัดที่รายงานโดยฟีด Radar เท่านั้น ไม่มีขีดจำกัดที่เผยแพร่สำหรับรายการนี้", + "contextUnknownHelp": "ไม่ทราบขนาดหน้าต่างบริบทสำหรับรายการนี้", + "capabilityUnknownHelp": "ฟีดไม่ได้รายงานความสามารถนี้", "colContext": "บริบท", "colCapabilities": "ความสามารถ", "colTos": "ความเสี่ยงของ ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "ใหม่", "setupGuide": "คู่มือการตั้งค่า", "disabledByFeed": "ถูกปิดใช้งานโดยฟีดเรดาร์", "capTools": "เครื่องมือ", "capVision": "วิสัยทัศน์", "capThinking": "การคิด", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "แค็ตตาล็อก", + "freeCreditsTab": "เครดิตฟรี", + "freeCreditsSubtitle": "ลิงก์แนะนำจากผู้ให้บริการที่ Radar ติดตาม — การใช้งานไม่มีค่าใช้จ่ายเพิ่มเติมสำหรับคุณและช่วยสนับสนุน OmniRoute", + "fixedLinksEmpty": "ยังไม่มีลิงก์แนะนำ ซิงค์ Radar เพื่อตรวจสอบอัปเดต", + "requiredActionLabel": "สิ่งที่ต้องทำ:", + "claimButton": "รับเครดิตฟรี", + "campaignsTitle": "แคมเปญระยะเวลาจำกัด", + "campaignsEmpty": "ขณะนี้ไม่มีแคมเปญที่ใช้งานอยู่ — โปรดกลับมาตรวจสอบภายหลัง", + "campaignsUpsellCommunity": "แคมเปญระยะเวลาจำกัดเป็นสิทธิพิเศษสำหรับผู้สนับสนุน ส่วนลิงก์ถาวรทั้งหมดในหน้านี้ยังคงใช้ฟรีสำหรับทุกคน", + "campaignsValidUntil": "ใช้ได้จนถึง {date}", + "colActions": "การดำเนินการ", + "localBadge": "ภายในเครื่อง", + "editModel": "แก้ไข", + "saveModel": "บันทึก", + "cancelEdit": "ยกเลิก", + "resetModel": "รีเซ็ตการเปลี่ยนแปลงภายในเครื่อง", + "hideModel": "ซ่อน", + "restoreModel": "คืนค่า", + "hiddenModelsTitle": "โมเดลที่ซ่อนอยู่", + "modelDisplayName": "ชื่อที่แสดงภายในเครื่อง", + "modelEnabled": "เปิดใช้งานภายในเครื่อง", + "localStateSaveFailed": "บันทึกการตั้งค่า Radar ภายในเครื่องไม่สำเร็จ", + "guidedCombos": "ชุดค่าผสมแบบแนะนำ", + "offers": "ข้อเสนอ", + "intel": "ข้อมูลเชิงลึก" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "ชุดค่าผสมที่ Radar แนะนำ", + "subtitle": "สร้างลำดับสำรองตามความสำคัญจากโมเดลฟรีที่เทียบเท่ากันซึ่งคัดสรรโดย Radar", + "backToRadar": "กลับไปที่ Radar", + "loading": "กำลังโหลดคำแนะนำชุดค่าผสม...", + "familyLabel": "ตระกูลโมเดล", + "modelsLabel": "ลำดับความสำคัญ", + "strategyReason": "ลำดับความสำคัญจะใช้งบประมาณฟรีแบบต่อเนื่องที่มากที่สุดก่อน แล้วจึงสลับไปใช้ผู้ให้บริการรายอื่นที่ใช้งานอยู่เป็นลำดับสำรอง", + "generateButton": "สร้างชุดค่าผสม", + "generating": "กำลังสร้าง...", + "alreadyCreated": "สร้างไว้แล้ว", + "created": "สร้างชุดค่าผสมแล้ว", + "noSuggestions": "ขณะนี้ไม่มีตระกูลโมเดลที่เข้าเกณฑ์ซึ่งมีการเชื่อมต่อที่ใช้งานอยู่กับผู้ให้บริการอย่างน้อยสองราย", + "catalogRequired": "ซิงค์แค็ตตาล็อก Radar ก่อนเพื่อโหลดตระกูลโมเดลที่คัดสรรไว้", + "loadFailed": "โหลดคำแนะนำชุดค่าผสมของ Radar ไม่สำเร็จ", + "createFailed": "สร้างชุดค่าผสมไม่สำเร็จ โปรดตรวจสอบการเชื่อมต่อผู้ให้บริการของคุณแล้วลองอีกครั้ง" }, "radarSetupPage": { "title": "การตั้งค่าผู้ให้บริการ", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "ความยืดหยุ่นของการเชื่อมต่อ", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "การเชื่อมต่อของคุณจะกู้คืนโดยอัตโนมัติ", + "reassuranceDetail": "โดยปกติแล้วไม่จำเป็นต้องดำเนินการใด ๆ OmniRoute จะพักการเชื่อมต่อชั่วคราวหลังเกิดความล้มเหลว แล้วจึงลองเชื่อมต่ออีกครั้งอย่างปลอดภัย", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "ส่งคำขอได้", + "coolingDown": "จะลองอีกครั้งในเร็ว ๆ นี้", + "lockedOut": "ต้องการให้คุณตรวจสอบ" }, "table": { "status": "สถานะ", @@ -13598,7 +13609,7 @@ "remaining": "คงเหลือ", "noLockouts": "ไม่มีการล็อกเอาต์ที่ใช้งานอยู่", "provider": "ผู้ให้บริการ", - "id": "ID", + "id": "รหัส", "authType": "ประเภทการยืนยันตัวตน", "priority": "ลำดับความสำคัญ", "isActive": "ใช้งานอยู่", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "ปฏิเสธคำขอก่อนการส่งเมื่อโมเดลเป้าหมายขาดความสามารถที่จำเป็น (วิสัยทัศน์, เครื่องมือ, ผลลัพธ์ที่มีโครงสร้าง, หน้าต่างบริบท) ป้องกันคำขอจากผู้ให้บริการเดียวที่ข้ามตัวกรองความเข้ากันได้ของเลเยอร์รวม", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "ข้ามการตรวจสอบหน้าต่างบริบทและโทเค็นอินพุตสูงสุดภายในเครื่องของ OmniRoute สำหรับคำขอโดยตรงที่ใช้โมเดลเดียว ผู้ให้บริการต้นทางยังคงบังคับใช้ขีดจำกัดจริงของตน การบีบอัดพรอมต์และขีดจำกัดโทเค็นเอาต์พุตยังคงทำงานอยู่", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "สถิติการค้นหาและการค้นหาล่าสุดจะนับเฉพาะผู้ให้บริการที่ยังมีการเชื่อมต่ออยู่ (ผู้ให้บริการที่ไม่ต้องใช้คีย์ เช่น duckduckgo-free จะถูกนับเสมอ) เมื่อปิด ระบบจะเก็บข้อมูลการค้นหาทุกรายการที่มี ID ผู้ให้บริการไว้", "publicSystem": { "notFound": { "title": "ไม่พบหน้า", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "ข้อมูลการบำรุงรักษา", "service": "บริการ", "unknown": "ไม่ทราบ", - "notAvailable": "n/a", + "notAvailable": "ไม่มี", "providersTracked": "ผู้ให้บริการที่ติดตาม", "circuitBreakerState": "สถานะวงจรตัดของผู้ให้บริการ", "lastUpdate": "อัปเดตล่าสุด: {timestamp}", @@ -13856,7 +13867,7 @@ "openSoloTrae": "เปิด solo.trae.ai", "orPasteManually": "หรือวางโทเค็นด้วยตนเอง", "manualInstructions": "ลงชื่อเข้าใช้ solo.trae.ai, เปิด DevTools → Network, ส่งข้อความแชทใด ๆ, และคัดลอก JWT จาก Authorization: Cloud-IDE-JWT {tokenPlaceholder} ในส่วนหัวของคำขอ. อายุการใช้งานของ JWT ประมาณ ~14 วัน. ฟิลด์ระบุตัวตนที่ไม่บังคับมาจาก common_params ในเนื้อหาคำขอเดียวกัน.", - "accessTokenLabel": "Access Token (Cloud-IDE-JWT)", + "accessTokenLabel": "โทเค็นการเข้าถึง (Cloud-IDE-JWT)", "webId": "รหัสเว็บ", "optional": "ไม่บังคับ", "bizUserId": "รหัสผู้ใช้ธุรกิจ", @@ -13956,9 +13967,9 @@ "metadata": { "compressionTitle": "การบีบอัด", "compressionDescription": "กำหนดการตั้งค่าการบีบอัดบริบทเพื่อลดการใช้โทเค็นและค่าใช้จ่าย", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — รีเลย์พร็อกซี", "relayDescription": "จุดสิ้นสุดพร็อกซีรีเลย์แบบไม่มีเซิร์ฟเวอร์สำหรับโครงสร้างพื้นฐาน AI ของคุณ", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "ตัวตรวจสอบทราฟฟิก — OmniRoute", "trafficInspectorDescription": "ตรวจสอบการเรียก LLM + แก้ไขปัญหาการรับส่งข้อมูล HTTPS ของแอปพลิเคชันใด ๆ" }, "conductor": { @@ -13967,7 +13978,7 @@ "runners": "นักวิ่ง", "tasks": "งาน", "colName": "ชื่อ", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "สถานะ", "colTask": "งาน", "colMode": "โหมด", @@ -14070,11 +14081,11 @@ "actionApprove": "อนุมัติแผน", "actionCancel": "ยกเลิก", "actionSeeInGraph": "ดูในกราฟ", + "actionRepeat": "ทำซ้ำ", "actionDone": "ดำเนินการเรียบร้อยแล้ว", "actionFailed": "การดำเนินการล้มเหลว: {error}", "detailFailed": "โหลดรายละเอียดไม่สำเร็จ: {error}", "mirroredInA2A": "สะท้อนใน A2A", - "actionRepeat": "ทำซ้ำ", "repeatConfirm": "คลิกอีกครั้งเพื่อยืนยัน", "repeatDone": "สร้างการรันใหม่แล้ว", "repeatUnavailable": "ไม่มีข้อมูลนำเข้าต้นฉบับ" @@ -14088,57 +14099,57 @@ "networkError": "ข้อผิดพลาดของเครือข่าย — ไม่สามารถอัปเดตการตั้งค่าการเปิดเผยผู้ให้บริการได้" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "ข้อเสนอสำหรับผู้สนับสนุน", + "subtitle": "ส่วนลด เครดิต ช่วงทดลองใช้ฟรีอย่างเป็นทางการ และสิทธิประโยชน์จากพาร์ทเนอร์ที่ผ่านการตรวจสอบจาก Radar", + "backToRadar": "กลับไปที่ Radar", + "loading": "กำลังโหลดข้อเสนอ...", + "refresh": "รีเฟรชข้อเสนอ", + "refreshing": "กำลังรีเฟรช...", + "loadFailed": "เราไม่สามารถรีเฟรชข้อเสนอได้ โดยยังคงเก็บแคชในเครื่องล่าสุดที่ผ่านการตรวจสอบไว้", + "empty": "ขณะนี้ไม่มีข้อเสนอที่ใช้งานได้", + "keyRequiredTitle": "ต้องใช้คีย์ผู้สนับสนุน", + "keyRequiredDescription": "ข้อเสนอเป็นสิทธิประโยชน์แบบเรียลไทม์ของ Radar เพิ่มคีย์ผู้สนับสนุนที่มีอยู่ในหน้าจอ Radar ยืนยันสถานะผู้มีส่วนร่วมของคุณ หรือสนับสนุนโปรเจกต์เพื่อรับคีย์", + "contributorButton": "ฉันเป็นผู้มีส่วนร่วม", + "supporterButton": "สนับสนุนโปรเจกต์", + "partnerBadge": "พาร์ทเนอร์", + "officialBadge": "อย่างเป็นทางการ", + "conditionsLabel": "เงื่อนไข:", + "validUntil": "ใช้ได้ถึงวันที่ {date}", + "noExpiry": "ยังไม่มีการประกาศวันหมดอายุ", + "openOffer": "ดูข้อเสนอ", + "trialDays": "{days, plural, one {# วัน} other {# วัน}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "ข้อมูลเชิงลึกจาก Radar", + "subtitle": "การจัดอันดับ ELO ที่ Radar เป็นผู้ดูแลและความเคลื่อนไหวของแค็ตตาล็อกตามข้อเท็จจริง", + "backToRadar": "กลับไปที่ Radar", + "loading": "กำลังโหลดข้อมูลเชิงลึก...", + "refresh": "รีเฟรชข้อมูลเชิงลึก", + "syncing": "กำลังรีเฟรช...", + "loadFailed": "เราไม่สามารถรีเฟรชข้อมูลเชิงลึกได้ โดยยังคงเก็บแคชในเครื่องล่าสุดที่ผ่านการตรวจสอบไว้", + "empty": "ยังไม่มีสแนปช็อตข้อมูลเชิงลึกที่ผ่านการตรวจสอบ", + "supporterBadge": "ผู้สนับสนุน Radar", + "methodology": "ระเบียบวิธี", + "eloMethod": "ELO, ค่าเริ่มต้น {initial}, K={factor}", + "freshness": "ความใหม่ของแค็ตตาล็อก", + "ageDays": "{days, plural, one {อายุ # วัน} other {อายุ # วัน}}", + "trend": "แนวโน้มของแค็ตตาล็อก", + "modelDelta": "{current} โมเดล, +{added} / -{removed}", + "ranking": "อันดับโมเดล", + "noRankings": "ยังไม่มีข้อมูลการเปรียบเทียบที่ได้รับการยืนยัน", + "model": "โมเดล", + "category": "หมวดหมู่", + "rating": "คะแนน", + "matches": "การแข่งขัน", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "ใหม่", + "aging": "เริ่มเก่า", + "stale": "ล้าสมัย" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "เพิ่มขึ้น", + "stable": "คงที่", + "shrinking": "ลดลง" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "คำขอเกินขอบเขตบริบทของผู้ให้บริการ" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference เป็นเพื่อนโอเพนซอร์สของ OmniRoute", + "description": "เกตเวย์ที่จัดอันดับตามต้นทุน ซึ่งจำหน่ายโมเดลแนวหน้าหลายสิบรายการผ่านปลายทางเดียวที่เข้ากันได้กับ OpenAI โดยกำหนดเส้นทางคำขอแต่ละรายการไปยังผู้ให้บริการที่มีสิทธิ์และราคาถูกที่สุด และไม่เกินราคาปลีก", + "cta": "รับ API Key", + "partnerLinkNote": "ลิงก์พาร์ทเนอร์", + "dismissAriaLabel": "ปิด" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "ปิดใช้งานการสร้างตัวแปรระดับการคิด (เช่น -low, -medium, -high) ในแค็ตตาล็อก /v1/models" } diff --git a/src/i18n/messages/tr.json b/src/i18n/messages/tr.json index a2c1a7125b..8eef16e513 100644 --- a/src/i18n/messages/tr.json +++ b/src/i18n/messages/tr.json @@ -31,7 +31,7 @@ "active": "Aktif", "inactive": "Etkin değil", "noData": "Veri yok", - "nothingHere": "Nothing here yet", + "nothingHere": "Henüz burada hiçbir şey yok", "configure": "Yapılandır", "manualConfig": "Manuel yapılandırma", "manage": "Yönet", @@ -47,7 +47,7 @@ "time": "Zaman", "details": "Ayrıntılar", "created": "Oluşturuldu", - "lastUsed": "Last Refreshed", + "lastUsed": "Son Yenilenme", "loadMore": "Daha Fazla Yükle", "noResults": "Sonuç bulunamadı", "reloadPage": "Sayfayı Yeniden Yükle", @@ -83,13 +83,13 @@ "content-length": "İçerik Uzunluğu", "cookie": "Çerez", "file": "Dosya", - "host": "Host", + "host": "Ana Makine", "id": "ID", "import": "İçe Aktar", "limit": "Sınır", "offset": "Ofset", "open": "Aç", - "origin": "Origin", + "origin": "Kaynak", "promptTokens": "İstem Jetonları", "completionTokens": "Tamamlama Jetonları", "totalTokens": "Toplam Jetonlar", @@ -113,8 +113,8 @@ "hex": "Hex", "range": "Aralık", "component": "Bileşen", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", + "redirect_uri": "Yönlendirme URI'si", + "idempotency-key": "İdempotans Anahtarı", "error_description": "Hata Açıklaması", "code": "Kod", "compatible": "Uyumlu", @@ -150,9 +150,9 @@ "Failed to reset pricing": "Fiyatlandırma sıfırlanamadı", "apikey": "API Anahtarı", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "Kontrol Paneline Git", + "checkSystemStatus": "Sistem Durumunu Kontrol Et", + "selectModel": "Model Seç", "addModel": "Model ekle", "effortNone": "Hiçbiri", "effortLow": "Düşük", @@ -164,10 +164,10 @@ "reasoningEffort": "Akıl yürütme çabası", "wireApi": "Wire API", "modelAliases": "Model takma adları", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "Kombinasyonlar", + "noModelsFound": "Model bulunamadı", + "clear": "Temizle", + "done": "Bitti", "selectAll": "Tümünü seç", "unselectAll": "Seçimi kaldır", "visibleModels": "görünür", @@ -184,519 +184,519 @@ "selectAllProviders": "Tüm sağlayıcıları kontrol et", "clearProviderSelection": "Sağlayıcıların işaretini kaldırın", "providersSelectedCount": "{count} sağlayıcı kontrol edildi", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "Bir Hata Oluştu", + "comboDeleted": "Kombinasyon Silindi", + "hide": "Gizle", + "creating": "Oluşturuluyor", + "comboCreated": "Kombinasyon Oluşturuldu", + "swapFormats": "Biçimleri Değiştir", + "daysAgo": "Gün Önce", + "retries": "Yeniden Denemeler", + "errorDuringRestore": "Geri Yükleme Sırasında Hata", + "eventsAppearHint": "Etkinliklerin Görünmesiyle İlgili İpucu", + "noLockouts": "Kilitlenme Yok", + "webSearchDesc": "Web Araması Açıklaması", + "audioProvidersHeading": "Ses Sağlayıcıları Başlığı", "cloudAgentProviders": "Bulut Aracısı Sağlayıcıları", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Dakika Önce", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "Canlı Otomatik Yenileme", + "webSearch": "Web Araması", + "anthropicPrefixPlaceholder": "Anthropic Önek Yer Tutucusu", + "addModelToCombo": "Kombinasyona Model Ekle", + "failedToLoad": "Yüklenemedi", + "categoryMedia": "Medya Kategorisi", + "enableCloud": "Bulutu Etkinleştir", + "expirationBannerExpiringSoon": "Süre Dolumu Yaklaşıyor Afişi", + "retry": "Yeniden Dene", + "embeddings": "Yerleştirmeler", + "errorCount": "Hata Sayısı", + "backupReasonManual": "Yedekleme Nedeni: Manuel", + "safeSearchModerate": "Güvenli Arama: Orta", + "activeLimiters": "Etkin Sınırlayıcılar", + "a2aCardTitle": "A2A Kart Başlığı", + "cloudWorkerUnreachable": "Bulut Çalışanına Ulaşılamıyor", + "testFailed": "Test Başarısız Oldu", + "compatibleBaseUrlHint": "Uyumlu Temel URL İpucu", + "usageTracking": "Kullanım Takibi", + "disableCloudTitle": "Bulutu Devre Dışı Bırak", + "noConnections": "Bağlantı Yok", + "providerHealth": "Sağlayıcı Durumu", + "confirmDbImport": "Veritabanı İçe Aktarımını Onayla", + "notAvailableSymbol": "Kullanılamıyor Sembolü", + "backupsAvailable": "Yedeklemeler Mevcut", + "providerAuto": "Otomatik Sağlayıcı", + "newProviderNamePlaceholder": "Yeni Sağlayıcı Adı Yer Tutucusu", + "a2aQuickStartStep2": "A2A Hızlı Başlangıç 2. Adım", + "ok": "Tamam", + "available": "Mevcut", + "noBackupYet": "Henüz Yedekleme Yok", + "more": "Daha Fazla", + "noCompatibleYet": "Henüz Uyumlu Seçenek Yok", + "multiProvider": "Çoklu Sağlayıcı", + "repairEnvHint": "Ortamı Onarma İpucu", + "disablingCloud": "Bulut Devre Dışı Bırakılıyor", + "testBench": "Test Tezgâhı", + "valid": "Geçerli", + "cloudBenefitShare": "Bulut Avantajı Paylaşımı", + "mcpCardTitle": "MCP Kart Başlığı", + "disableConfirm": "Devre Dışı Bırakmayı Onayla", + "filters": "Filtreler", + "expirationBannerExpiredDesc": "Süre Sonu Banner'ı Açıklaması", + "saveComboDefaults": "Kombinasyon Varsayılanlarını Kaydet", + "cloudConnectedVerified": "Bulut Bağlantısı Doğrulandı", + "uptime": "Çalışma Süresi", + "compatibleProdPlaceholder": "Uyumlu Üretim Yer Tutucusu", + "fallbackChainsTitle": "Yedek Zincirleri Başlığı", + "oauthLabel": "OAuth Etiketi", + "a2aCardDescription": "A2A Kart Açıklaması", + "okShort": "Tamam, Kısa", + "maintenance": "Bakım", + "formatConverter": "Biçim Dönüştürücü", + "zedImportNetworkError": "Zed İçe Aktarma Ağ Hatası", + "apiKeyLabel": "API Anahtarı Etiketi", + "noModelsForProvider": "Sağlayıcı İçin Model Yok", + "mcpCardDescription": "MCP Kartı Açıklaması", + "apiTypeLabel": "API Türü Etiketi", + "configuredProvidersLabel": "Yapılandırılmış Sağlayıcılar Etiketi", + "maxRetriesLabel": "Maksimum Yeniden Deneme Etiketi", + "title": "Başlık", + "output": "Çıktı", + "prefixHint": "Önek İpucu", + "skipWizard": "Sihirbazı Atla", + "failedCount": "Başarısız Sayısı", + "confirmDbImportDesc": "Veritabanı İçe Aktarma Onayı Açıklaması", + "entries": "Kayıtlar", + "until": "Bitiş", + "disableCombo": "Kombinasyonu Devre Dışı Bırak", + "liveMonitorDescriptionPrefix": "Canlı İzleme Açıklaması Öneki", + "runningCount": "Çalışan Sayısı", + "noActiveConnectionsInGroup": "Grupta Etkin Bağlantı Yok", + "savedSuccessfully": "Başarıyla Kaydedildi", + "systemStorage": "Sistem Depolama Alanı", + "videoDesc": "Video Açıklaması", + "maxResults": "Maksimum Sonuç Sayısı", + "timeRangeMonth": "Zaman Aralığı: Ay", + "testSummary": "Test Özeti", + "failedSetPassword": "Parola Ayarlanamadı", + "audio": "Ses", + "restore": "Geri Yükle", + "disableWarning": "Devre Dışı Bırakma Uyarısı", + "moderationsDesc": "Moderasyonlar Açıklaması", + "providerHealthStatusAria": "Sağlayıcı Sağlık Durumu ARIA Etiketi", + "modelNamePlaceholder": "Model Adı Yer Tutucusu", + "mcpQuickStartStep2": "MCP Hızlı Başlangıç 2. Adım", + "quickStart": "Hızlı Başlangıç", + "fullExportFailedWithError": "Tam Dışa Aktarma Hatayla Başarısız Oldu", + "loadingBackups": "Yedekler Yükleniyor", + "anthropicBaseUrlPlaceholder": "Anthropic Temel URL Yer Tutucusu", + "description": "Açıklama", + "noProviderFound": "Sağlayıcı Bulunamadı", + "auto": "Otomatik", + "protocolsDescription": "Protokol Açıklaması", + "cloudSessionNote": "Bulut Oturumu Notu", + "advancedSettings": "Gelişmiş Ayarlar", + "defaultStrategy": "Varsayılan Strateji", + "purgeExpiredLogs": "Süresi Dolmuş Günlükleri Temizle", + "justNow": "Az Önce", + "providerTestFailed": "Sağlayıcı Testi Başarısız Oldu", + "openaiBaseUrlPlaceholder": "Openai Temel URL Yer Tutucusu", + "image": "Görsel", + "failedCreateChain": "Zincir Oluşturulamadı", + "importDatabase": "Veritabanını İçe Aktar", + "allDataLocal": "Tüm Veriler Yerel", + "sectionTitle": "Bölüm Başlığı", + "failedToggle": "Değiştirme Başarısız Oldu", + "editCombo": "Kombinasyonu Düzenle", + "testResults": "Test Sonuçları", + "searchQuery": "Arama Sorgusu", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "Çoğalt", + "createCombo": "Kombinasyon Oluştur", + "searchTypeWeb": "Arama Türü: Web", + "addChain": "Zincir Ekle", + "prefixLabel": "Önek Etiketi", + "listModelsDesc": "Model Listesi Açıklaması", + "databaseSize": "Veritabanı Boyutu", + "chainCreated": "Zincir Oluşturuldu", + "providerTestTimeout": "Sağlayıcı Testi Zaman Aşımına Uğradı", + "routingStrategy": "Yönlendirme Stratejisi", + "translateAction": "Çevir", + "exportFailed": "Dışa Aktarma Başarısız Oldu", + "connectedVerificationPending": "Bağlandı, Doğrulama Bekleniyor", + "a2aQuickStartTitle": "A2A Hızlı Başlangıç Başlığı", + "couldNotTest": "Test Edilemedi", + "testAllCompatible": "Tüm Uyumlu Olanları Test Et", + "anthropicCompatibleName": "Anthropic Uyumlu Adı", + "disabling": "Devre Dışı Bırakılıyor", + "failedEnable": "Etkinleştirme Başarısız Oldu", + "categoryUtility": "Yardımcı Program Kategorisi", + "customUrlOptional": "Özel URL İsteğe Bağlı", + "localProviders": "Yerel Sağlayıcılar", + "comboNamePlaceholder": "Kombinasyon Adı Yer Tutucusu", + "memoryRss": "Bellek RSS", + "disableProvider": "Sağlayıcıyı Devre Dışı Bırak", + "welcomeDesc": "Karşılama Açıklaması", + "nameLabel": "Ad Etiketi", + "allOperational": "Tümü Çalışıyor", + "backupNow": "Şimdi Yedekle", + "providerMaxRetriesAria": "Sağlayıcı Maksimum Yeniden Deneme Sayısı ARIA", + "textToSpeechDesc": "Metinden Sese Açıklaması", + "machineId": "Makine Kimliği", + "globalProxy": "Genel Proxy", + "hitsMisses": "İsabetler ve Iskalamalar", + "testDesc": "Test Açıklaması", + "chatDesc": "Sohbet Açıklaması", + "importSuccess": "İçe Aktarma Başarılı", + "chat": "Sohbet", + "a2aQuickStartStep1": "A2A Hızlı Başlangıç Adımı 1", + "importFailed": "İçe Aktarma Başarısız", + "inputPlaceholder": "Giriş Yer Tutucusu", + "providerModelsTitle": "Sağlayıcı Modelleri Başlığı", + "lastBackup": "Son Yedekleme", + "yourEndpoint": "Uç Noktanız", + "autoDisableThresholdDesc": "Otomatik Devre Dışı Bırakma Eşiği Açıklaması", + "rerankDesc": "Yeniden Sıralama Açıklaması", + "modelsPathPlaceholder": "Model Yolu Yer Tutucusu", + "noCombosYet": "Henüz Kombinasyon Yok", + "connectedVerificationPendingWithError": "Bağlandı, Hata Nedeniyle Doğrulama Bekleniyor", + "comboDefaultsGuideHint1": "Kombinasyon Varsayılanları Kılavuzu İpucu 1", + "enableCloudTitle": "Bulutu Etkinleştir Başlığı", + "configuredProvidersHint": "Yapılandırılmış Sağlayıcılar İpucu", + "paused": "Duraklatıldı", + "llmProviders": "LLM Sağlayıcıları", + "enableCombo": "Kombinasyonu Etkinleştir", + "removeProviderOverrideAria": "Sağlayıcı Geçersiz Kılmasını Kaldır ARIA", + "nodeVersion": "Node Sürümü", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Hata Nedeniyle Dışa Aktarma Başarısız", + "proxyConfigured": "Proxy Yapılandırıldı", + "concurrencyPerModel": "Model Başına Eşzamanlılık", + "protocolTasksLabel": "Protokol Görevleri Etiketi", + "oauthProviders": "OAuth Sağlayıcıları", + "lockedCount": "Kilitli Sayısı", + "deleteChainConfirm": "Zinciri Silme Onayı", + "recentTranslations": "Son Çeviriler", + "zedImportButton": "Zed İçe Aktarma Düğmesi", + "responsesDesc": "Yanıtlar Açıklaması", + "testedCount": "Test Edilenlerin Sayısı", + "providersCommaSeparatedPlaceholder": "Virgülle Ayrılmış Sağlayıcılar Yer Tutucusu", + "signatureDefaults": "İmza Varsayılanları", + "errorCreating": "Oluşturma Hatası", + "timeRangeYear": "Zaman Aralığı: Yıl", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Bulut Başarıyla Devre Dışı Bırakıldı", + "deleteConfirm": "Silme Onayı", + "check": "Kontrol Et", + "safeSearch": "Güvenli Arama", + "protocolLastActivity": "Protokol Son Etkinliği", + "openMcpDashboard": "MCP Panosunu Aç", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Sohbet Yolu Etiketi", + "retryDelay": "Yeniden Deneme Gecikmesi", + "errorUpdating": "Güncelleme Hatası", + "ideCliIntegrations": "IDE ve CLI Entegrasyonları", + "imageGeneration": "Görsel Oluşturma", + "apiKeyRequired": "API Anahtarı Gerekli", + "resetAllTitle": "Tümünü Sıfırla Başlığı", + "connectionError": "Bağlantı Hatası", + "modelName": "Model Adı", + "apiKeyForCheck": "Kontrol İçin API Anahtarı", + "cloudRequestTimeout": "Bulut İsteği Zaman Aşımı", + "showConfiguredOnly": "Yalnızca Yapılandırılmış Olanları Göster", "showFreeOnly": "Yalnızca ücretsiz", "addFirstProvider": "İlk sağlayıcınızı ekleyin", "addFirstProviderDesc": "OmniRoute aracılığıyla istekleri yönlendirmeye başlamak için bir yapay zeka sağlayıcısına bağlanın. Ücretsiz sağlayıcıları, API anahtarlarını veya OAuth hesaplarını kullanabilirsiniz.", "learnMore": "Daha fazla bilgi edinin", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Alan Adlarını Dahil Et", + "promptCache": "İstem Önbelleği", + "cloudConnected": "Buluta Bağlandı", + "deleteChain": "Zinciri Sil", + "chatPathPlaceholder": "Sohbet Yolu Yer Tutucusu", + "databasePath": "Veritabanı Yolu", + "usingLocalServer": "Yerel Sunucu Kullanılıyor", + "globalComboConfig": "Genel Birleşik Yapılandırma", + "backupFailed": "Yedekleme Başarısız Oldu", + "tabProtocols": "Protokoller Sekmesi", + "continue": "Devam Et", + "categorySearch": "Kategori Arama", + "rateLimitStatus": "Hız Sınırı Durumu", + "repairEnvSuccess": "Ortam Onarıldı", + "nameRequired": "Ad Gerekli", + "country": "Ülke", + "trackMetricsDesc": "Metrik Takibi Açıklaması", + "durationSecondsShort": "Süre (sn.)", + "formatConverterDescription": "Biçim Dönüştürücü Açıklaması", + "cloudBenefitAccess": "Bulut Erişimi Avantajı", + "maxRetries": "Maksimum Yeniden Deneme Sayısı", + "queueTimeout": "Kuyruk Zaman Aşımı", "queueDepth": "Kuyruk Derinliği", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Sağlayıcı Ekle", + "realtime": "Gerçek Zamanlı", + "totalTranslations": "Toplam Çeviri", + "protocolActiveStreamsLabel": "Protokol Etkin Akışları Etiketi", + "repairEnv": "Ortamı Onar", + "modelsCount": "Model Sayısı", + "viewBackups": "Yedekleri Görüntüle", + "responsesApi": "Responses API", + "copyComboName": "Kombinasyon Adını Kopyala", + "failures": "Başarısızlıklar", + "failedUpdate": "Güncelleme Başarısız Oldu", + "imageDesc": "Görsel Açıklaması", + "failedCreate": "Oluşturma Başarısız Oldu", + "remainingOfLimit": "Limitten Kalan", + "protocolsTitle": "Protokoller Başlığı", + "expirationBannerExpiringSoonDesc": "Süre Sonu Uyarısı Yakında Dolacak Açıklaması", + "source": "Kaynak", + "failed": "Başarısız", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "MCP Hızlı Başlangıç 1. Adım", + "runTest": "Testi Çalıştır", + "loadingFallbackChains": "Yedek Zincirleri Yükleniyor", + "healthy": "Sağlıklı", + "version": "Sürüm", + "saveBlockWeighted": "Ağırlıklı Bloğu Kaydet", + "zedImportNone": "Zed İçe Aktarma Yok", + "noBackupsYet": "Henüz Yedek Yok", + "noGlobalProxy": "Global Proxy Yok", + "noModels": "Model Yok", + "stickyLimit": "Kalıcı Limit", + "passedCount": "Başarılı Sayısı", + "zedImportFailed": "Zed İçe Aktarma Başarısız Oldu", + "saving": "Kaydediliyor", + "testAll": "Tümünü Test Et", + "globalProxyDesc": "Genel Proxy Açıklaması", + "latencyP99": "Gecikme P99", + "connectingToCloud": "Buluta Bağlanılıyor", + "responses": "Yanıtlar", + "errorDeleting": "Silme Hatası", + "openaiPrefixPlaceholder": "Openai Önek Yer Tutucusu", + "enterPassword": "Parolayı Girin", + "openA2aDashboard": "A2A Panosunu Aç", + "enableProvider": "Sağlayıcıyı Etkinleştir", + "modeTest": "Test Modu", + "failedDeleteChain": "Zincir Silinemedi", + "providerDesc": "Sağlayıcı Açıklaması", + "templateLoadHint": "Şablon Yükleme İpucu", + "lastFailure": "Son Hata", + "moveDown": "Aşağı Taşı", + "providerLabel": "Sağlayıcı Etiketi", + "clearCacheFailed": "Önbellek Temizlenemedi", + "imagesGenerations": "Görsel Oluşturmaları", + "repairEnvWorking": "Ortam Onarımı Sürüyor", + "millisecondsShort": "ms", + "globalLabel": "Genel Etiket", + "failuresPlural": "Hatalar", + "completionsLegacyDesc": "Eski Tamamlama Açıklaması", + "searchProviders": "Sağlayıcılarda Ara", + "chatPathHint": "Sohbet Yolu İpucu", + "defaultStrategyDesc": "Varsayılan Strateji Açıklaması", + "latencyP95": "Gecikme P95", + "textToSpeech": "Metinden Sese", + "searchType": "Arama Türü", + "messages": "Mesajlar", + "aggregatorsGateways": "Toplayıcılar ve Ağ Geçitleri", + "comboStrategyAria": "Aria Birleşik Stratejisi", + "input": "Girdi", + "testingConnection": "Bağlantı Test Ediliyor", + "excludeDomains": "Alan Adlarını Hariç Tut", + "webCookieProviders": "Web Çerezi Sağlayıcıları", + "allTestsPassed": "Tüm Testler Başarılı", + "openaiCompatibleName": "OpenAI Uyumlu Ad", + "warningCostOptimizedPartialPricing": "Uyarı: Maliyet İçin Optimize Edilmiş Kısmi Fiyatlandırma", + "comboDefaultsGuideTitle": "Kombinasyon Varsayılanları Kılavuzu Başlığı", + "hoursAgo": "Saat Önce", + "notAvailable": "Kullanılamıyor", + "skipAndContinue": "Atla ve Devam Et", + "moderations": "Moderasyonlar", + "proxyConfig": "Proxy Yapılandırması", + "upstreamProxyProviders": "Üst Proxy Sağlayıcıları", + "exportAll": "Tümünü Dışa Aktar", + "queuedCount": "Kuyruğa Alınanların Sayısı", + "resetAll": "Tümünü Sıfırla", + "noTranslations": "Çeviri Yok", + "avgLatency": "Ort. Gecikme", + "throttleStatus": "Kısıtlama Durumu", + "backupRetentionDesc": "Yedek Saklama Açıklaması", + "noCBData": "Devre Kesici Verisi Yok", + "chainDeleted": "Zincir Silindi", + "timeLeft": "Kalan Süre", + "expirationBannerExpired": "Süre Sonu Afişinin Süresi Doldu", + "language": "Dil", + "invalidFileType": "Geçersiz Dosya Türü", + "monitoredProviders": "İzlenen Sağlayıcılar", + "errors": "Hatalar", + "heap": "Yığın Bellek", + "chatCompletions": "Sohbet Tamamlamaları", + "exampleTemplatesHint": "Örnek Şablonlar İpucu", + "retryDelayLabel": "Yeniden Deneme Gecikmesi Etiketi", + "audioTranscription": "Ses Transkripsiyonu", + "fallbackChainsDesc": "Yedek Zincirler Açıklaması", + "exampleTemplates": "Örnek Şablonlar", + "connectionsCount": "Bağlantı Sayısı", + "modelsPathLabel": "Model Yolu Etiketi", + "activeProvidersHint": "Etkin Sağlayıcılar İpucu", + "activeLockouts": "Etkin Kilitlemeler", + "invalid": "Geçersiz", + "skipPassword": "Parolayı Atla", + "moveUp": "Yukarı Taşı", + "timeRange": "Zaman Aralığı", + "stickyLimitDesc": "Sabit Sınır Açıklaması", + "cloudBenefitEdge": "Bulut Avantajı Uç Noktası", + "custom": "Özel", + "verifying": "Doğrulanıyor", + "baseUrlLabel": "Temel URL Etiketi", + "setPassword": "Parola Belirle", + "safeSearchStrict": "Güvenli Arama: Katı", + "noChangesSinceBackup": "Yedeklemeden Bu Yana Değişiklik Yok", + "modelsPathHint": "Model Yolu İpucu", + "audioTranscriptions": "Ses Transkripsiyonları", + "testCombo": "Kombinasyonu Test Et", + "mcpQuickStartTitle": "Mcp Hızlı Başlangıç Başlığı", + "comboUpdated": "Kombinasyon Güncellendi", + "weighted": "Ağırlıklı", + "providers": "Sağlayıcılar", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Yedek Zinciri Yok Açıklaması", + "yesImport": "Evet, İçe Aktar", + "lockoutsAutoRefreshHint": "Kilitlemeleri Otomatik Yenileme İpucu", + "tabApis": "API'ler Sekmesi", + "sectionDescription": "Bölüm Açıklaması", + "filter": "Filtrele", + "purgeLogsFailed": "Günlükler Temizlenemedi", + "latency": "Gecikme", + "testAllOAuth": "Tüm OAuth Bağlantılarını Test Et", + "mcpQuickStartStep3": "Mcp Hızlı Başlangıç 3. Adım", + "repairEnvFailed": "Ortam Onarılamadı", + "zedImportHint": "Zed İçe Aktarma İpucu", + "modelsAcrossEndpoints": "Uç Noktalardaki Modeller", + "autoDisableBannedAccounts": "Engellenen Hesapları Otomatik Devre Dışı Bırak", + "securityDesc": "Güvenlik Açıklaması", + "listModels": "Modelleri Listele", + "backupRestore": "Yedekleme ve Geri Yükleme", + "target": "Hedef", + "zedImportSuccess": "Zed Başarıyla İçe Aktarıldı", + "lastHeaderUpdate": "Son Üstbilgi Güncellemesi", + "categoryCore": "Temel Kategorisi", + "noFallbackChains": "Yedek Zinciri Yok", + "noSearchProviders": "Arama Sağlayıcısı Yok", + "autoBalance": "Otomatik dengeleme", + "noModelsYet": "Henüz model yok", + "signatureFamily": "İmza ailesi", + "externalApiCalls": "Harici API çağrıları", + "providerOverridesDesc": "Sağlayıcı geçersiz kılmaları açıklaması", + "signatureTool": "İmza aracı", + "connectionFailed": "Bağlantı başarısız", + "activeLimitersPlural": "Etkin sınırlayıcılar çoğul", + "doneDesc": "Tamamlandı açıklaması", + "down": "Kapalı", + "noDataYet": "Henüz veri yok", + "activeProviders": "Etkin sağlayıcılar", + "nameInvalid": "Ad geçersiz", + "skip": "Atla", + "createChain": "Zincir oluştur", + "audioSpeech": "Sesli konuşma", + "cacheCleared": "Önbellek temizlendi", + "searchTypeNews": "Arama türü haberler", + "durationMillisecondsShort": "Süre milisaniye kısa", + "addOpenAICompatible": "Open Ai uyumlu ekle", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "queued": "Kuyruğa alındı", + "domainPlaceholder": "Alan adı yer tutucusu", + "durationMinutesShort": "Süre dakika kısa", + "verifyingConnection": "Bağlantı doğrulanıyor", + "imageProviders": "Görsel sağlayıcıları", + "protocolToolsLabel": "Protokol araçları etiketi", + "queryPlaceholder": "Sorgu yer tutucusu", + "videoGeneration": "Video oluşturma", + "timeRangeWeek": "Zaman aralığı hafta", + "limitExhausted": "Limit tükendi", + "failedDisable": "Devre dışı bırakma başarısız", + "inMemoryNote": "Bellek içi not", + "compatibleHint": "Uyumluluk ipucu", + "errorShort": "Kısa hata", + "advancedHint": "Gelişmiş ipucu", + "restoreFailed": "Geri yükleme başarısız", + "searchProvidersHeading": "Arama sağlayıcıları başlığı", + "comboName": "Kombinasyon adı", + "autoDisableDescription": "Otomatik devre dışı bırakma açıklaması", + "embeddingsDesc": "Gömme modelleri açıklaması", + "operational": "Çalışır Durumda", + "testAllApiKey": "Tüm API Anahtarlarını Test Et", + "backupCreated": "Yedek Oluşturuldu", + "errorDuringImport": "İçe Aktarma Sırasında Hata", + "comboDefaultsGuideHint2": "Kombinasyon Varsayılanları Kılavuzu İpucu 2", + "connecting": "Bağlanıyor", + "fillModelAndProviders": "Model ve Sağlayıcıları Doldurun", + "syncing": "Senkronize Ediliyor", + "resetConfirm": "Sıfırlamayı Onayla", + "trackMetrics": "Metrikleri İzle", + "successful": "Başarılı", + "recovering": "Kurtarılıyor", + "autoDisableThreshold": "Otomatik Devre Dışı Bırakma Eşiği", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Veriler Senkronize Ediliyor", + "cloudBenefitPorts": "Bulut Avantajı Bağlantı Noktaları", + "compatibleProviders": "Uyumlu Sağlayıcılar", "freeTierProviders": "Ücretsiz Katman Sağlayıcıları", "freeTierLabel": "Ücretsiz katman mevcut", "freeTierProvidersDesc": "Ücretsiz katmanlara sahip sağlayıcılar; bazıları API anahtarı kaydı gerektirir, diğerleri ise hiçbir kimlik bilgilerine ihtiyaç duymaz.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Önbelleği Temizle", + "reqs": "İstekler", + "addAnthropicCompatible": "Anthropic Uyumlu Sağlayıcı Ekle", + "apiKeyProviders": "API Anahtarı Sağlayıcıları", + "tabsAria": "Sekmeler İçin ARIA", + "resetting": "Sıfırlanıyor", + "millisecondsAbbr": "ms", + "backupReasonPreRestore": "Geri Yükleme Öncesi Yedekleme Nedeni", + "disableCloud": "Bulutu Devre Dışı Bırak", + "newProviderNameAria": "Yeni Sağlayıcı Adı İçin ARIA", + "passwordsMismatch": "Parolalar Eşleşmiyor", + "a2aQuickStartStep3": "A2A Hızlı Başlangıç 3. Adım", + "liveMonitorDescriptionSuffix": "Canlı İzleme Açıklaması Son Eki", + "failedAddProvider": "Sağlayıcı Eklenemedi", + "addAtLeastOneProvider": "En Az Bir Sağlayıcı Ekleyin", + "reasonSeparator": "Neden Ayırıcı", + "zedImporting": "Zed İçe Aktarılıyor", + "confirmPasswordPlaceholder": "Parolayı Onaylayın", + "whatYouGet": "Elde Edecekleriniz", + "signatureSession": "İmza Oturumu", + "errorCountNoCode": "Kodsuz Hata Sayısı", + "testing": "Test Ediliyor", + "providersCommaSeparated": "Virgülle Ayrılmış Sağlayıcılar", + "exportDatabase": "Veritabanını Dışa Aktar", + "hitRate": "İsabet Oranı", + "completionsLegacy": "Eski Tamamlamalar", + "removeModel": "Modeli Kaldır", + "timeRangeDay": "Zaman Aralığı: Gün", + "cloudRequestFailed": "Bulut İsteği Başarısız Oldu", + "updatedAt": "Güncellenme Zamanı", + "monitoredProvidersHint": "İzlenen Sağlayıcılar İçin İpucu", + "connectionSuccessful": "Bağlantı Başarılı", + "latencyP50": "Gecikme P50", + "logsDeleted": "Günlükler Silindi", + "chatTester": "Sohbet Test Aracı", + "safeSearchOff": "Güvenli Arama Kapalı", + "nameHint": "Ad İpucu", + "debugToggle": "Hata Ayıklama Anahtarı", + "embedding": "Gömme", + "issuesLabel": "Sorunlar Etiketi", + "optionAny": "Herhangi Biri Seçeneği", + "maxNestingDepth": "Maksimum İç İçe Geçme Derinliği", + "rerank": "Yeniden Sıralama", + "checking": "Kontrol Ediliyor", + "getStarted": "Başlayın", + "restoreSuccess": "Geri Yükleme Başarılı", + "issuesDetected": "Sorunlar Tespit Edildi", + "signatureCache": "İmza Önbelleği", + "modelLockouts": "Model Kilitlenmeleri", + "usingCloudProxy": "Bulut Proxy'si Kullanılıyor", + "loadingHealth": "Sistem Durumu Yükleniyor", + "providerOverrides": "Sağlayıcı Geçersiz Kılmaları", + "audioTranscriptionDesc": "Ses Transkripsiyonu Açıklaması", + "learnedFromHeaders": "Başlıklardan Öğrenildi", + "totalRequests": "Toplam İstek", + "cloudUnstableNote": "Bulut Kararsızlığı Notu", "gamificationAdmin": "Oyunlaştırma Yöneticisi", "monitorAnomaliesAndHealth": "Anormallikleri ve sistem sağlığını izleyin", "flaggedAnomalies": "İşaretlenen Anormallikler", @@ -704,7 +704,7 @@ "apiKey": "API Anahtarı", "xpLastHour": "Deneyim (1 saat)", "zScore": "Z-Skoru", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Şüpheli", "tokensCommunityServers": "Topluluk Sunucuları", "tokensServerNamePlaceholder": "Sunucu adı", "tokensApiKeyPlaceholder": "API anahtarı", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Daha fazlası yükleniyor…", "recommended": "Önerilen", "understand": "Anladım", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", + "batchConceptTitle": "Toplu işleme", + "batchConceptSubtitle": "Binlerce isteği maliyetin yaklaşık %50'siyle eşzamansız olarak işleyin (24 saatlik zaman aralığı). Değerlendirmeler, sınıflandırma ve gömmeler için idealdir.", + "batchConceptHowItWorks": "Nasıl çalışır?", + "batchConceptBenefit50pct": "Girdi + çıktı tokenlarında %50 indirim", + "batchConceptAsync24h": "24 saatlik tamamlanma süresiyle eşzamansız", + "batchConceptUseCases": "Toplu sınıflandırma, değerlendirmeler ve gömmeler için idealdir", + "batchHeaderSubtitle": "Birçok isteği tek bir iş olarak çalıştırın", + "batchStep1": "1 · JSONL yükleyin", + "batchStep1Desc": "İstek ekleyin", + "batchStep2": "2 · Toplu işlem oluşturun", + "batchStep2Desc": "İşi çalıştırın", + "batchStep3": "3 · Sonuçları alın", + "batchStep3Desc": "Çıktıyı indirin", + "filesConceptTitle": "Toplu işlem dosyaları", + "filesConceptSubtitle": "Toplu işlemlerde kullanılan JSONL dosyaları: giriş istekleri, sonuçlar ve hatalar.", + "filesConceptInput": "Giriş — her satırda bir istek bulunan JSONL dosyanız", + "filesConceptOutput": "Çıktı — tamamlanan isteklerin sonuçları", + "filesConceptError": "Hatalar — başarısız olan istekler", + "filesConceptRetention": "Saklama süresi: varsayılan olarak 30 gün (Anthropic'te 29 gün)", + "wizardTitle": "Yeni toplu işlem", + "wizardClose": "Kapat", + "wizardNext": "İleri", + "wizardBack": "Geri", + "wizardCancel": "İptal", + "wizardCreate": "Toplu işlem oluştur", + "wizardCreating": "Oluşturuluyor…", + "wizardStep1Destination": "Hedef", + "wizardStep2Input": "Giriş", + "wizardStep3Validate": "Doğrula", + "wizardStep4Cost": "Maliyet ve oluşturma", + "wizardProviderLabel": "Sağlayıcı", + "wizardEndpointLabel": "Uç nokta", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (dönüştüreceğiz)", + "wizardDropOrPick": "Bir dosyayı buraya bırakın veya seçmek için tıklayın", + "wizardCsvMappingTitle": "CSV sütunlarını → istek alanlarıyla eşleştirin", + "wizardCsvMappingAddField": "Alan ekle", "wizardCsvNoColumns": "CSV başlığında hiçbir sütun algılanmadı.", "wizardCsvIgnoreColumn": "— yoksay —", "wizardCsvCustomIdMapped": "custom_id eşlendi", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} satır ayrıştırıldı", "wizardCsvRowsSkipped": "{count} satır atlandı", "wizardCsvRowError": "Satır {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Tüm satırlar geçerli", "wizardValidating": "Doğrulanıyor…", "wizardValidationParseFailed": "Doğrulama başarısız — içerik ayrıştırılamadı.", "wizardValidationSummary": "{lines} satır · {ids} benzersiz custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Yinelenen custom_ids tespit edildi:", "wizardValidationFirstErrors": "Hatalar (ilk {count}):", "wizardValidationLine": "Satır {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Doğrulama hataları", + "wizardValidationPreview": "Önizleme (ilk 5 istek)", + "wizardValidationSamplingNote": "Dosya büyük — örnekleme yoluyla doğrulandı (ilk 1000 + son 100 satır). Tam doğrulama sunucu tarafında çalışır.", + "wizardCostSync": "Senkron maliyet", + "wizardCostBatch": "Toplu işlem maliyeti (-%50)", + "wizardCostSavings": "Tasarruf", + "wizardCostEstimatedNotice": "Tahmini maliyet — gerçek faturalandırma farklılık gösterebilir.", + "wizardErrorUpload": "Dosya yüklenemedi. Tekrar deneyin.", + "wizardErrorCreate": "Toplu işlem oluşturulamadı. Tekrar deneyin.", + "wizardEmptyProviders": "Toplu işlem oluşturmak için toplu işlem desteği olan bir sağlayıcıyı (OpenAI, Anthropic veya Gemini) bağlayın.", + "uploadModalTitle": "Toplu işlem dosyası yükle", + "uploadModalDropOrPick": "Bir .jsonl dosyasını buraya bırakın veya seçmek için tıklayın", + "uploadModalUpload": "Yükle", + "uploadModalCancel": "İptal", + "uploadModalError": "Yükleme başarısız oldu. Tekrar deneyin.", + "uploadModalSuccess": "Yüklendi", + "uploadModalSizeLimit": "Maks. 512 MB", + "batchListNewButton": "Yeni toplu işlem", + "batchListAutoRefresh": "Her 30 sn.'de otomatik yenile", + "batchListCostColumn": "Maliyet", + "batchActionCancel": "İptal", + "batchActionDownloadOutput": "Çıktıyı indir", + "batchActionDownloadErrors": "Hataları indir", + "batchActionRetry": "Başarısız olanları yeniden dene", + "batchActionRetryConfirm": "Başarısız olan {n} istek yeniden denensin mi? Nihai maliyet, kullanılan gerçek token sayısına bağlıdır.", + "expirationBadgeCritical": "Kritik", + "expirationBadgeWarning": "Yakında", + "expirationBadgeNormal": "Bekliyor", + "expirationBadgeExpired": "Süresi doldu", + "filesListUploadButton": "Yükleme", + "filesListUsedByColumn": "Kullanan", + "filesListUsedByNone": "Yok", + "filesListUsedByRoleInput": "girdi", + "filesListUsedByRoleOutput": "çıktı", + "filesListUsedByRoleError": "hata", + "filesListSizeColumn": "Boyut", + "batchListProgressPartial": "(kısmi)", + "batchListProviderColumn": "Sağlayıcı", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", - "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListProviderOther": "Diğer", + "batchListTitle": "Toplu işlemler", + "batchListCount": "{count} toplu işlem", + "batchListRemovingCompleted": "Kaldırılıyor…", + "batchListRemoveCompleted": "Tamamlananları kaldır", + "batchListTableStatus": "Durum", + "batchListTableId": "Kimlik", + "batchListTableEndpoint": "Uç nokta", "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableProgress": "İlerleme", + "batchListTableCreated": "Oluşturulma", + "batchListTableExpires": "Bitiş", + "batchListLoading": "Yükleniyor…", + "batchListEmpty": "Toplu işlemler bulunamadı", + "batchListValidating": "Doğrulanıyor…", + "batchStatusAll": "Tüm durumlar", + "batchStatusInProgress": "Devam ediyor", + "batchStatusValidating": "Doğrulanıyor", + "batchStatusFinalizing": "Sonlandırılıyor", + "batchStatusCompleted": "Tamamlandı", + "batchStatusFailed": "Başarısız", + "batchStatusCancelled": "İptal edildi", + "batchStatusCancelling": "İptal ediliyor", + "batchStatusExpired": "Süresi doldu", + "batchStatusCompletedWithFailures": "hatalarla tamamlandı", + "batchStatusInProgressWithFailures": "devam ediyor (hatalarla)", + "batchStatusFinalizingWithFailures": "sonlandırılıyor (hatalarla)", + "batchStatusCancelledWithFailures": "hatalarla iptal edildi", + "batchStatusExpiredWithFailures": "süresi doldu (kısmi)", + "wizardCostEstimating": "Maliyet tahmin ediliyor…", + "wizardCostRequests": "İstekler", + "wizardCostInputTok": "girdi jetonu", + "wizardCostOutputTok": "çıktı jetonu", + "wizardCostWindow": "Zaman aralığı", + "wizardDestinationSelectProvider": "Bir sağlayıcı seçin…", + "wizardDestinationSelectModel": "Bir model seçin…", + "wizardDestinationConnectProvider": "Bir sağlayıcı bağlayın", + "batchListBatchCreated": "{id} toplu işlemi oluşturuldu — liste yenileniyor…", + "batchListBatchCreatedDismiss": "Kapat", + "batchListRefreshing": "Yenileniyor…", + "batchListRefresh": "Yenile", + "uploadFileModalRemove": "Kaldır", + "uploadFileModalUploading": "Yükleniyor…", + "wizardInputReading": "Dosya okunuyor…", + "wizardInputReady": "Hazır", + "wizardInputLargeFileLabel": "Büyük dosya — örneklemle doğrulanıyor", + "wizardInputCsvJsonlReady": "JSONL oluşturuldu — doğrulamaya hazır.", + "wizardInputLargeFileWarning": "Büyük dosya algılandı — doğrulama örnekleme yoluyla gerçekleştirilir (ilk 5 MB + son 100 KB). Tam doğrulama sunucu tarafında yapılır.", + "wizardCostWindow24h": "24 saatlik tamamlanma süresi", + "wizardValidationFieldsOk": "zorunlu alanlar geçerli", + "filesListDelete": "Sil", + "filesListDownload": "İndir", + "batchDetailActionCancel": "Toplu işi iptal et", + "batchDetailActionRetry": "Başarısız istekleri yeniden dene", + "batchDetailCancelling": "İptal ediliyor…", + "batchDetailRetrying": "Yeniden deneme hazırlanıyor…", + "batchDetailCancelConfirm": "Bu toplu iş iptal edilsin mi? Devam eden istekler durdurulacak.", + "batchActionCancelError": "Toplu iş iptal edilemedi. Tekrar deneyin.", + "batchActionRetryError": "Başarısız istekler yeniden denenemedi. Tekrar deneyin.", + "batchConceptRetentionNote": "Sonuç ve hata dosyaları 30 gün boyunca saklanır (Anthropic: 29 gün)", "batchFilesSizeColumn": "Boyut", "toggleNoAuthProvider": "Kimlik doğrulama gerektirmeyen sağlayıcıyı aç/kapat", "loadingModels": "Modeller yükleniyor…", @@ -988,14 +988,14 @@ "disabled": "Devre dışı", "featureFlagOmnirouteEmergencyFallbackDescription": "Bütçesi tükenmiş istekleri acil durum ücretsiz yedek sağlayıcıya/modele yönlendirin.", "featureFlagArenaEloSyncEnabledDescription": "Model zekası sıralamaları için periyodik Arena AI liderlik tablosu ELO senkronizasyonunu etkinleştirin.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Kombinasyon yönlendirmesi model değiştirdiğinde konuşma özetleri oluşturup ekleyin. Model değişikliklerini birbirinden bağımsız ele almak ve mevcut ve gelecekteki tüm kombinasyonlar için arka plandaki devir isteklerini önlemek üzere devre dışı bırakın.", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models üzerinde claude/<provider>/<model> ayna kimliklerini tanıtın, böylece Claude Code geçidi model keşfi, Claude olmayan modelleri listeler. Uyarı: Küresel olarak etkinleştirildiğinde tüm istemciler için katalog girişlerini iki katına çıkarır.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> ağ geçidi takma adları için ana anahtar. Açık (varsayılan): /v1/models, uygun olan ve düşünme yeteneğine sahip her Claude modeli için düşünmeyen bir varyant sunar ve istekte gönderilen bir no-think/ kimliği, muhakeme devre dışı bırakılarak gerçek modele çözümlenir. Kapalı: hiçbir varyant sunulmaz ve bir no-think/ kimliği, diğer bilinmeyen model kimlikleri gibi değerlendirilir. Bu seçenek açıkken model bazındaki ModelSpec.noThinkingAlias katılım/ayrılma ayarı geçerliliğini korur.", "featureFlagChatVirtualLanesEnabledDescription": "Sağlayıcı gönderimi için kiracı başına uyarlanabilir sanal kabul şeritlerini etkinleştirin (#9654): bir kiracının ani yükü artık diğerinde 503 hatasına neden olmaz. OMNIROUTE_CHAT_VIRTUAL_LANES ortam değişkeni bu panel ayarına göre önceliklidir; değişiklikler sunucu yeniden başlatıldığında geçerli olur.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Kontrol paneli sağlayıcı sayfaları: Ücretsiz rozetini yalnızca sağlayıcının dikkate aldığı sinyallerde gösterir — belgelenmiş bir ücretsiz katmanı olmayan kayıtlı sağlayıcılarda görünen ad sezgisini, boole olmayan ücretsiz alanlarını ve :free son eklerini kullanmaz. Kapalı olduğunda geçmiş rozet kuralını korur.", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy havuzları ve opencode'un hesap başına rotasyonu, henüz başarısız olmuş bir proxy'nin (reddedilen TCP yoklaması veya proxy üzerinden alınan 429 yanıtı) süreç başına belirlenen ve her tekrarda üst sınıra kadar iki katına çıkan bir süre boyunca yeniden kullanılmasını engeller. Proxy durumuna hiçbir şey yazılmaz; tüm adaylar kenara ayrıldığında seçim değişmeden kalır. Varsayılan olarak kapalıdır: seçim sırası normal rotasyonla tamamen aynıdır.", + "featureFlagProxyPoolEgressObservationDescription": "Kontrol panelinde bir proxy havuzunun altında, son 24 saatte üyelerine kaç farklı gözlemlenen çıkış IP'sinin hizmet verdiğini, bunları kaç bağlantının kullandığını ve tek bir IP'nin arkasında en fazla kaç bağlantı görüldüğünü gösterir. Salt okunurdur, proxy günlüğünden hesaplanır ve yönlendirme için asla kullanılmaz. Varsayılan olarak kapalıdır: havuz düzenleyicisi değişmeden kalır ve gözlem rotası null yanıtını verir.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Proxy sağlık taramasında, hedefin reddettiği bir yoklamanın (401/403/429: proxy isteği iletti, hedef bu çıkış IP'sini reddetti) proxy'nin ardışık başarısızlık serisini, başarılı bir yoklamada olduğu gibi sıfırlamasını sağlar. Varsayılan olarak kapalıdır: bir ret nötr kalır ve seriyi korur. 5xx her iki durumda da sonuçsuz kalır ve bir ret hiçbir zaman proxy'yi kaldırmaz, devre dışı bırakmaz veya yeniden etkinleştirmez.", "sidebar": { "home": "Ana Sayfa", "dashboard": "Kontrol Paneli", @@ -1005,7 +1005,7 @@ "analytics": "Analizler", "costs": "Maliyetler", "health": "Sağlık", - "proxy": "Proxy", + "proxy": "Vekil Sunucu", "limits": "Limitler ve Kotalar", "cliTools": "CLI Araçları", "media": "Medya", @@ -1015,8 +1015,8 @@ "searchTools": "Arama Araçları", "agents": "Ajanlar", "cloudAgents": "Bulut Aracıları", - "memory": "Memory", - "skills": "Skills", + "memory": "Bellek", + "skills": "Beceriler", "omniSkills": "OmniSkills", "agentSkills": "Temsilci Becerileri", "chaosConfig": "Kaos Modu", @@ -1069,50 +1069,50 @@ "cliToolsShort": "Araçlar", "cache": "Cache", "cacheShort": "Cache", - "batch": "Batch Jobs", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "batch": "Toplu İşler", + "themeSystem": "Tema Sistemi", + "whitelabelingDesc": "Beyaz Etiketleme Açıklaması", + "switchThemes": "Tema Değiştir", + "themeAccentDesc": "Tema Vurgu Rengi Açıklaması", + "uploadFavicon": "Favicon Yükle", + "themeDark": "Koyu Tema", + "customLogoDesc": "Özel Logo Açıklaması", + "sidebarVisibilityToggle": "Kenar Çubuğu Görünürlük Anahtarı", + "themeAccent": "Tema Vurgu Rengi", + "resetFavicon": "Favicon'u Sıfırla", + "whitelabeling": "Beyaz Etiketleme", + "darkMode": "Koyu Mod", + "uploadLogo": "Logo Yükle", + "themeLight": "Açık Tema", + "appName": "Uygulama Adı", + "appNameDesc": "Uygulama Adı Açıklaması", + "resetLogo": "Logoyu Sıfırla", + "customFavicon": "Özel Favicon", + "hideHealthLogs": "Sağlık Günlüklerini Gizle", + "customLogo": "Özel Logo", + "appearance": "Görünüm", + "themeSelectionAria": "Tema Seçimi Aria", + "themeCreate": "Tema Oluştur", + "customFaviconDesc": "Özel Favicon Açıklaması", + "logoPreview": "Logo Önizlemesi", + "themeCustom": "Özel Tema", + "hideHealthLogsDesc": "Sağlık Günlüklerini Gizleme Açıklaması", + "faviconPreview": "Favicon Önizlemesi", + "changelog": "Değişiklik Günlüğü", + "contextSection": "Bağlam ve Önbellek", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "Motor Kombinasyonları", "contextLite": "Lite", "contextAggressive": "Aggressive", "contextUltra": "Ultra", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Sıkıştırma Ayarları", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", + "combosLive": "Kombinasyon Stüdyosu", "combosLiveSubtitle": "Canlı yönlendirme kaskadı", "compressionStudio": "Compression Studio", "compressionExclusions": "Hariç Tutmalar", @@ -1128,145 +1128,145 @@ "compressionStudioSubtitle": "Canlı motor kaskadı", "compressionExclusionsSubtitle": "Model/endpoint başlatma dışlama", "chaosConfigSubtitle": "Çoklu model paralel yürütme", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "routingSection": "Yönlendirme", + "protocolsSection": "Protokoller", + "agentsAiSection": "Ajanlar ve Yapay Zekâ", + "cacheContextSection": "Önbellek ve Bağlam", + "analyticsSection": "Analizler", + "costsSection": "Maliyetler", + "monitoringSection": "İzleme", + "auditSecuritySection": "Denetim ve Güvenlik", + "devtoolsSection": "Geliştirici Araçları", + "configurationSection": "Yapılandırma", + "aiFeaturesSection": "Yapay Zekâ Özellikleri", "mcp": "MCP", "a2a": "A2A", "plugins": "Eklentiler", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", + "apiEndpoints": "API Uç Noktaları", + "batchFiles": "Dosyalar", + "analyticsEvals": "Değerlendirmeler", + "analyticsSearch": "Arama", + "analyticsUtilization": "Kullanım", + "analyticsComboHealth": "Kombinasyon Sağlığı", + "analyticsCompression": "Sıkıştırma", + "costsBudget": "Bütçe", "costsFreeTiers": "Ücretsiz Katman Bütçesi", "costsFreeTiersSubtitle": "Aylık ücretsiz token hakları", "freeProviderRankings": "Ücretsiz Sağlayıcı Sıralamaları", "freeProviderRankingsSubtitle": "Model ELO puanlarına göre sıralanmış en iyi ücretsiz sağlayıcılar", "radar": "Radar Kataloğu", "radarSubtitle": "Topluluk zenginleştirilmiş ücretsiz model kataloğu", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "Kota Paylaşımı", + "costsPricing": "Fiyatlandırma", + "logsProxy": "Proxy Günlükleri", + "logsConsole": "Konsol", + "logsActivity": "Etkinlik", + "auditMcp": "MCP Denetimi", "auditA2a": "A2A Denetimi", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", + "settingsAppearance": "Görünüm", + "settingsAi": "Yapay Zekâ Ayarları", + "settingsSecurity": "Güvenlik", "settingsAccessTokens": "Erişim Tokenları", "settingsFeatureFlags": "Özellik Bayrakları", "settingsCache": "Önbellek", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", + "settingsAuthz": "Yetkilendirme", + "settingsRouting": "Yönlendirme", + "settingsResilience": "Dayanıklılık", "modelLockout": "Model Kilitleme", - "settingsAdvanced": "Advanced", + "settingsAdvanced": "Gelişmiş", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "Sağlayıcı Kotası", + "providerQuota": "Sağlayıcı Kotası", + "runtime": "Çalışma Zamanı", + "consoleLogs": "Konsol Günlükleri", + "logsTimeline": "Zaman Çizelgesi", "logsTimelineSubtitle": "Görsel istek zaman çizelgesi", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "Konuşmalar", + "conversationsSubtitle": "Çok turlu otonom aracı konuşmaları", + "globalRouting": "Genel Yönlendirme", + "mitmProxy": "MITM Vekil Sunucusu", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", + "agenticFeaturesSection": "Otonom Aracı Özellikleri", + "otherFeaturesSection": "Diğer Özellikler", + "compressionContextGroup": "Bağlam Sıkıştırma", + "gamificationGroup": "Oyunlaştırma", + "toolsGroup": "Araçlar", + "integrationsGroup": "Entegrasyonlar", + "proxyGroup": "Vekil Sunucu", + "costsParametersGroup": "Maliyet Parametreleri", + "auditGroup": "Denetim", + "batchGroup": "Toplu İşlem", + "homeSubtitle": "Pano genel görünümü", + "providersSubtitle": "Yapay zekâ sağlayıcılarını yönetin", + "quotaTrackerSubtitle": "Kullanım sınırlarını izleyin", + "providerQuotaSubtitle": "Sağlayıcı kullanım sınırlarını izleyin", + "runtimeSubtitle": "Gerçek zamanlı dayanıklılık ve oturumlar", + "contextCombosSubtitle": "Sıkıştırma motorlarını birleştir", + "cliToolsSubtitle": "CLI çalışma ortamlarını yapılandır", + "agentsSubtitle": "Yerel ajanları yönet", + "cloudAgentsSubtitle": "Bulut tabanlı ajanları yönet", + "apiEndpointsSubtitle": "Özel uç noktaları kullanıma aç", + "proxySubtitle": "HTTP proxy ayarları", + "mitmProxySubtitle": "MITM müdahalesi", + "oneProxySubtitle": "Genel proxy ağ geçidi", + "leaderboard": "Liderlik tablosu", + "profile": "Profil", + "tokens": "Tokenlar", + "gamificationAdmin": "Oyunlaştırma Yönetimi", + "leaderboardSubtitle": "Sıralamalar ve başarımlar", + "profileSubtitle": "Hesap ve tercihler", + "tokensSubtitle": "Token kullanımı ve bütçeler", + "gamificationAdminSubtitle": "Anomali izleme ve hile önleme", + "usageSubtitle": "Trafik ve kullanım istatistikleri", + "analyticsComboHealthSubtitle": "Kombinasyon hedefi güvenilirliği", + "analyticsUtilizationSubtitle": "Sağlayıcı kullanımı", + "costsSubtitle": "Harcama dağılımı", + "cacheSubtitle": "Önbellek isabet oranları", + "analyticsCompressionSubtitle": "Token tasarrufu istatistikleri", + "analyticsSearchSubtitle": "Arama aracı analizleri", + "analyticsEvalsSubtitle": "Değerlendirme paketi sonuçları", "providerStats": "Sağlayıcı İstatistikleri", "providerStatsSubtitle": "Gecikme ve performans metrikleri", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", + "logsSubtitle": "Uygulama günlükleri", + "logsProxySubtitle": "Proxy trafik günlükleri", + "consoleLogsSubtitle": "Konsol çıktısı", + "logsActivitySubtitle": "Kullanıcı etkinlik günlüğü", + "healthSubtitle": "Sistem durum denetimi", + "costsPricingSubtitle": "Model bazında fiyatlandırma kuralları", + "costsBudgetSubtitle": "Bütçe sınırları", + "costsQuotaShareSubtitle": "Sağlayıcı kotalarını anahtarlar arasında paylaş", + "auditLogSubtitle": "Yetkilendirme denetimi", + "auditMcpSubtitle": "MCP sunucusu denetimi", + "auditA2aSubtitle": "A2A protokolü denetimi", + "translatorSubtitle": "Biçim dönüştürme", + "playgroundSubtitle": "İstemleri canlı olarak test et", + "searchToolsSubtitle": "Arama aracı kayıt defteri", + "memorySubtitle": "Kalıcı ajan belleği", + "omniSkillsSubtitle": "Sandbox beceri kaydı", + "agentSkillsSubtitle": "A2A beceri kaydı", + "mcpSubtitle": "MCP sunucu kontrolleri", + "a2aSubtitle": "A2A protokol sunucusu", "pluginsSubtitle": "Eklenti mağazası ve kurulumlar", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "mediaSubtitle": "Önbelleğe alınmış medya dosyaları", + "batchFilesSubtitle": "Toplu giriş/çıkış dosyaları", + "settingsSubtitle": "Tüm ayarlar", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", + "settingsAppearanceSubtitle": "Tema ve düzen", + "settingsAiSubtitle": "Varsayılan AI davranışları", + "globalRoutingSubtitle": "Genel yönlendirme kuralları", + "settingsResilienceSubtitle": "Yeniden denemeler ve devre kesiciler", + "settingsAdvancedSubtitle": "İleri düzey kullanıcı seçenekleri", + "settingsSecuritySubtitle": "Kimlik doğrulama ve şifreleme", "settingsAccessTokensSubtitle": "Uzak mod için kapsamlandırılmış CLI tokenları", "settingsFeatureFlagsSubtitle": "Sistem yeteneklerini değiştir", "settingsCacheSubtitle": "Model kataloğu ve yanıt önbellekleme", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", + "settingsSidebar": "Kenar çubuğu", + "settingsSidebarSubtitle": "Kenar çubuğu düzenini özelleştir", "settingsAuthzSubtitle": "Rota envanteri ve bypass politikası", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", + "docsSubtitle": "Belgeler", + "issuesSubtitle": "Hata bildir", + "changelogSubtitle": "Sürüm notları", "costsQuotaPlans": "Planlar ve Kotalar", "costsQuotaPlansSubtitle": "Sağlayıcıya göre planları yapılandırın", "activity": "Etkinlik", @@ -1278,8 +1278,8 @@ "agentBridge": "Ajan Köprüsü", "agentBridgeSubtitle": "IDE ajan trafiğini yakalayın", "trafficInspector": "Trafik Denetleyicisi", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Uygulamalarınızın istek ve yanıt trafiğini inceleyin", + "trafficInspectorPurpose": "Uygulamanızın AI sağlayıcılarına tam olarak ne gönderdiğini ve onlardan ne aldığını görün. OpenAI uyumlu tüm istemcilerle çalışır.", "cliCode": "CLI Kodu", "cliCodeSubtitle": "OmniRoute'a yönlendiren kod araçları", "cliAgents": "CLI Ajanları", @@ -1345,7 +1345,7 @@ "refresh": "Yenile", "loading": "Web kancaları yükleniyor...", "never": "Asla", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {hata yok} one {# hata} other {# hata}}", "testWebhook": "Testi Gönder", "testSuccess": "Web kancasını test etme başarıyla gönderildi.", "testFailed": "Web kancasını test etme başarısız oldu.", @@ -1378,54 +1378,54 @@ "step3": "Uç noktanın aldığından emin olmak için bir test yükü göndererek yapılandırmayı doğrulayın.", "step4": "Webhook gizli anahtarını kullanarak X-Webhook-Signature HMAC-SHA256 üst bilgisini doğrulayın ve uç noktanızı güvenli hale getirin.", "title": "Webhook'lar Nasıl Çalışır", - "customOnly": "Only applicable for custom endpoint integrations.", - "hmacRecipeTitle": "HMAC Verification Recipe", - "hmacRecipe": "To verify webhook payloads in Node.js, compute the HMAC-SHA256 of the raw request body using your secret key. Compare it to the X-Webhook-Signature header using timingSafeEqual.", - "timeoutNote": "Webhook deliveries have a timeout of 10 seconds.", - "retryNote": "Failed deliveries are retried up to 5 times with exponential backoff.", - "docsLink": "Read the full Webhooks developer guide", - "hmacRecipePython": "Python HMAC verification: hmac.new(secret, body, hashlib.sha256).hexdigest()", - "hmacRecipeBash": "Bash HMAC verification: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" + "customOnly": "Yalnızca özel uç nokta entegrasyonları için geçerlidir.", + "hmacRecipeTitle": "HMAC Doğrulama Tarifi", + "hmacRecipe": "Node.js'de webhook yüklerini doğrulamak için gizli anahtarınızı kullanarak ham istek gövdesinin HMAC-SHA256 değerini hesaplayın. timingSafeEqual kullanarak bunu X-Webhook-Signature üstbilgisiyle karşılaştırın.", + "timeoutNote": "Webhook teslimatlarının zaman aşımı süresi 10 saniyedir.", + "retryNote": "Başarısız teslimatlar, üstel geri çekilme yöntemiyle en fazla 5 kez yeniden denenir.", + "docsLink": "Webhooks geliştirici kılavuzunun tamamını okuyun", + "hmacRecipePython": "Python HMAC doğrulaması: hmac.new(secret, body, hashlib.sha256).hexdigest()", + "hmacRecipeBash": "Bash HMAC doğrulaması: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\"" }, "deliveries": { - "title": "Delivery Logs", - "loadFailed": "Failed to load webhook delivery logs.", - "empty": "No deliveries recorded yet. Trigger an event or send a test payload.", - "status": "Status", - "event": "Event", - "latency": "Latency", - "at": "Sent At" + "title": "Teslimat Günlükleri", + "loadFailed": "Webhook teslimat günlükleri yüklenemedi.", + "empty": "Henüz kaydedilmiş teslimat yok. Bir etkinlik tetikleyin veya test yükü gönderin.", + "status": "Durum", + "event": "Etkinlik", + "latency": "Gecikme", + "at": "Gönderilme Zamanı" }, "kinds": { - "comingSoon": "Coming Soon", + "comingSoon": "Çok Yakında", "slack": "Slack", - "slackDesc": "Post system events directly into a Slack channel", + "slackDesc": "Sistem etkinliklerini doğrudan bir Slack kanalında paylaşın", "telegram": "Telegram", - "telegramDesc": "Send event messages using a Telegram bot", + "telegramDesc": "Bir Telegram botu kullanarak etkinlik mesajları gönderin", "discord": "Discord", - "discordDesc": "Deliver real-time updates directly to a Discord server", - "custom": "Custom Webhook", - "customDesc": "Deliver system event payloads to any HTTPS endpoint", - "email": "Email Notification", - "emailDesc": "Receive summary updates via email", + "discordDesc": "Gerçek zamanlı güncellemeleri doğrudan bir Discord sunucusuna iletin", + "custom": "Özel Webhook", + "customDesc": "Sistem etkinliği yüklerini herhangi bir HTTPS uç noktasına iletin", + "email": "E-posta Bildirimi", + "emailDesc": "Özet güncellemelerini e-posta yoluyla alın", "pagerduty": "PagerDuty", - "pagerdutyDesc": "Trigger alerts on PagerDuty for critical system issues", + "pagerdutyDesc": "Kritik sistem sorunları için PagerDuty üzerinde uyarıları tetikleyin", "teams": "Microsoft Teams", - "teamsDesc": "Forward system notifications to Microsoft Teams channels" + "teamsDesc": "Sistem bildirimlerini Microsoft Teams kanallarına yönlendirin" }, - "testPayloadSent": "Test Payload Sent", - "testResponse": "Test Response", + "testPayloadSent": "Test Yükü Gönderildi", + "testResponse": "Test Yanıtı", "validateUrl": { - "checking": "Checking URL...", - "ok": "URL is valid", - "blockedPrivate": "URL is a blocked private address", - "invalidUrl": "Invalid URL format" + "checking": "URL kontrol ediliyor...", + "ok": "URL geçerli", + "blockedPrivate": "URL, engellenmiş bir özel adres", + "invalidUrl": "Geçersiz URL biçimi" }, "custom": { - "endpointUrl": "Endpoint URL", + "endpointUrl": "Uç Nokta URL'si", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", - "secretKey": "Secret Key", - "secretKeyPlaceholder": "Enter secret key or leave blank to auto-generate", + "secretKey": "Gizli Anahtar", + "secretKeyPlaceholder": "Gizli anahtarı girin veya otomatik oluşturulması için boş bırakın", "secretKeyHint": "Kimlik doğrulama için payload üst bilgisini imzalamak amacıyla kullanılır." }, "discord": { @@ -1605,49 +1605,49 @@ "mediaDescription": "Görüntüler, videolar ve müzik oluşturun", "themes": "Temalar", "themesDescription": "Kontrol panelinin tamamı için bir renk teması seçin", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "costsDescription": "Tüm sağlayıcılardaki harcamaları takip edin, eğilimleri analiz edin ve AI bütçenizi yönetin", + "cacheDescription": "Sağlayıcı istem önbelleği verimliliğini ve yerel anlamsal yanıtların yeniden kullanımını izleyin.", + "limitsDescription": "API anahtarı ve sağlayıcı başına hız sınırlarını ve kotaları yapılandırın", + "runtimeDescription": "Canlı çalışma zamanı gözlemlenebilirliği — devre kesiciler, bekleme süreleri, model kilitlemeleri, oturumlar ve kota uyarıları", + "apiManagerDescription": "OmniRoute örneğiniz için API anahtarlarını ve erişim denetimini yönetin", + "batchDescription": "Toplu API çağrılarıyla büyük hacimli istekleri eşzamansız olarak işleyin", + "contextCavemanDescription": "Kural tabanlı mesaj sıkıştırma, dil paketleri, analizler ve çıktı modu denetimleri.", + "contextRtkDescription": "Araç çıktısı, terminal günlükleri ve derleme sonuçları için komut duyarlı sıkıştırma.", + "contextCombosDescription": "Farklı yönlendirme senaryoları için motorların nasıl birleştirileceğini tanımlayın.", + "changelogDescription": "En yeni platform özelliklerinden ve duyurularından haberdar olun.", + "agentsDescription": "AI ajan araçlarını yönetin ve yapılandırın: Codex, Devin, Jules ve özel ajanlar", + "cloudAgentsDescription": "Canlı görev takibi ve plan onayıyla bulut tabanlı AI ajanlarını yönetin", + "memoryDescription": "Anlamsal arama ve FTS5 tam metin indeksleme özellikli kalıcı konuşma belleği", + "skillsDescription": "Otomatik istem ve araç yürütme için korumalı alan becerilerini yükleyin ve yönetin", + "agentSkillsDescription": "AI istemcisi entegrasyonu için tek tıkla URL kopyalama özellikli, ajanlara hazır beceri kataloğu", + "translatorDescription": "İstemleri API biçimleri arasında dönüştürün ve test edin: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "İstemleri canlı sağlayıcı yanıtları ve biçim incelemesiyle etkileşimli olarak test edin", + "searchToolsDescription": "Arama analitiği, sağlayıcı dağılımı, önbellek isabet oranları ve maliyet takibi", + "logsDescription": "Gerçek zamanlı istek günlükleri, hata izleri ve akış olayı inceleyicisi", + "auditDescription": "API anahtarı kullanımı, MCP araç çağrıları ve politika olayları için uyumluluk denetim izi", + "webhooksDescription": "Gerçek zamanlı olay bildirimlerini almak için webhook uç noktalarını yapılandırın", + "healthDescription": "Sistem sağlığına genel bakış: sağlayıcılar, devre kesiciler, hız sınırları ve veritabanı", + "proxyDescription": "Giden sağlayıcı bağlantıları için üst akış proxy ayarlarını yapılandırın", + "apiEndpointsDescription": "Özel API uç noktası yapılandırmalarını ve yönlendirme geçersiz kılmalarını yönetin", + "batchFilesDescription": "Toplu iş çıktı dosyalarına ve sonuçlarına göz atın ve bunları yönetin", + "analyticsEvalsDescription": "Model değerlendirme sonuçları ve performans karşılaştırmaları", + "analyticsSearchDescription": "Arama sorgusu analitiği, önbellek isabet oranları ve maliyet takibi", + "analyticsUtilizationDescription": "Sağlayıcı kullanım metrikleri ve kapasite planlaması", + "analyticsComboHealthDescription": "Birleşik yönlendirme yapılandırmalarının gerçek zamanlı sağlığı ve performansı", + "analyticsCompressionDescription": "Bağlam sıkıştırma analitiği ve token tasarrufları", + "costsBudgetDescription": "API anahtarı ve sağlayıcı başına bütçe sınırları ve harcama uyarıları", + "costsPricingDescription": "Token maliyeti hesaplamaları için özel fiyatlandırma yapılandırması", + "logsProxyDescription": "Üst akış proxy istek günlükleri ve trafik incelemesi", + "logsConsoleDescription": "Uygulama konsolu çıktısı ve hata ayıklama günlükleri", + "logsActivityDescription": "Kullanıcı eylemleri ve sistem olayları için denetim izi", + "auditMcpDescription": "MCP araç çağırma denetim izi ve uyumluluk kayıtları", "auditA2a": "A2A Denetimi", "auditA2aDescription": "A2A görev yürütme denetim takibi, durum geçişleri ve beceri çağırma kayıtları", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "Tema, marka kimliği ve görsel özelleştirme", + "settingsAiDescription": "AI davranışları, düşünme bütçeleri, görsel algılama ve bellek ayarları", "settingsCacheDescription": "Model kataloğu önbellek girdileri için TTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "Kimlik doğrulama, yetkilendirme ve erişim denetimi ayarları", "featureFlags": "Özellik Bayrakları", "featureFlagsDescription": "Kontrol sistemi yetenekleri ve deneysel özellikler", "featureFlagsActive": "{count} aktif", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "Aramanızla eşleşen bayrak yok", "featureFlagsSaved": "Bayrak güncellendi", "featureFlagsError": "Bayrak güncellenemedi", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "Yönlendirme kuralları, model diğer adları, birleşik yönlendirme varsayılanları ve performans düşürme ayarları", + "settingsResilienceDescription": "Devre kesici, yeniden deneme ve geri dönüş yapılandırması", + "settingsAdvancedDescription": "Gelişmiş yük kuralları, istek sınırları ve proxy API ayarları", + "mitmProxyDescription": "Trafik incelemesi ve hata ayıklama için MITM proxy ayarlarını yapılandırın", + "oneProxyDescription": "Gelişmiş proxy zincirleme için 1Proxy ayarlarını yapılandırın", "omniSkillsDescription": "Otomatik istem ve araç yürütme için korumalı alan becerilerini yükleyin ve yönetin" }, "cloudSyncStatus": { @@ -1762,7 +1762,7 @@ "discovery": "Keşif", "freeProviderRankings": "Ücretsiz Sağlayıcı Sıralamaları", "radar": "Radar", - "setup": "Setup", + "setup": "Kurulum", "freeTiers": "Ücretsiz Katmanlar", "gamification": "Oyunlaştırma", "leaderboard": "Liderlik Tablosu", @@ -1812,7 +1812,7 @@ "reportIssue": "Sorunu bildir", "activeError": "{active} aktif · {errors} hata", "topologyLegendActive": "Aktif", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Son", "topologyLegendError": "Hata", "oauthLabel": "OAuth", "apiKeyLabel": "API Anahtarı", @@ -1826,11 +1826,11 @@ "updateStarted": "Güncelleme başladı...", "reloadingPageAutomatically": "Sayfa otomatik olarak yeniden yükleniyor...", "providerTopology": "Sağlayıcı Topolojisi", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Son İstekler", + "recentRequestsEmpty": "Henüz istek yok.", + "recentRequestsModel": "Model", + "recentRequestsTokens": "Giriş / Çıkış", + "recentRequestsWhen": "Zaman", "downloadDmg": "DMG İndir (macOS)", "downloadDmgDescription": "OmniRoute masaüstü uygulamasının yeni bir sürümü mevcut. Lütfen güncellemek için macOS DMG yükleyicisini indirin ve kurun (mevcut: v{version}).", "downloadExe": "EXE İndir (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "Sürüm Notları", "readMore": "Daha Fazla Oku", "noAuthLabel": "Yetkisiz", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Yönlendirmeye hazırlanın", + "readinessTitle": "İlk isteğinizi gönderin", + "readinessSubtitle": "Dört küçük adım. Siz ilerledikçe OmniRoute hazır olup olmadığınızı kontrol eder.", + "readinessStep1": "Bir sağlayıcı bağlayın", + "readinessStep2": "Uç nokta kimlik doğrulamasını yapılandırın", + "readinessStep3": "Uç noktanızı kopyalayın", + "readinessStep4": "Bir test isteği gönderin", + "readinessContinue": "Kuruluma devam edin", + "readinessDismiss": "Şimdilik kapat" }, "analytics": { "title": "Analitik", @@ -2005,8 +2005,8 @@ "modelStatusError": "Hata", "comboHealth": "Kombo Sağlığı", "comboHealthDescription": "Kombo düzeyinde kota, kullanım dağılımı ve performans metrikleri", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Sıkıştırma Analizleri", + "compressionAnalyticsDescription": "Sıkıştırma analizleri — token tasarrufu, mod dağılımı ve sağlayıcı istatistikleri.", "autoRoutingTotalAutoRequests": "Toplam Otomatik İstekler", "autoRoutingAvgSelectionScore": "Ortalama Seçim Puanı", "autoRoutingExplorationRate": "Keşif Oranı", @@ -2094,7 +2094,7 @@ "comboHealthExecutionTargetsDescription": "Yapılandırılmış kombo hedefleri için adım düzeyinde çalışma zamanı metrikleri ve kota görünürlüğü.", "comboHealthRequestShort": "{count} ist", "comboHealthQuotaScope": "Kota kapsamı: {scope}", - "comboHealthTrendValue": "Trend: {trend}", + "comboHealthTrendValue": "Eğilim: {trend}", "comboHealthFetchFailed": "Kombo sağlık verileri alınamadı", "unknownError": "Bilinmeyen hata", "comboHealthIntro": "Kombo bazında kota baskısını, dengesiz model kullanımını ve teslimat performansını izleyin.", @@ -2210,7 +2210,7 @@ "combo": "Kombo", "routeStep": "Adım", "tokens": "Tokenlar", - "notAvailable": "n/a", + "notAvailable": "yok", "routeTokenCounts": "{input} girdi · {output} çıktı", "routeEvidence": "Kanıt", "routeFactors": "Yönlendirme faktörleri", @@ -2258,9 +2258,9 @@ "fullAccess": "Tam Erişim", "keyManagement": "API Anahtar Yönetimi", "keyManagementDesc": "Uç noktanıza yönelik isteklerin kimliğini doğrulamak için API anahtarları oluşturun ve yönetin", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Uygulamanız, bir API anahtarı aracılığıyla OmniRoute'a istek gönderir", + "requestFlowYourApp": "Uygulamanız", + "requestFlowApiKey": "API anahtarı", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Toplam Anahtar", "restricted": "Kısıtlı", @@ -2301,9 +2301,9 @@ "keyCreatedNote": "Bu anahtarı şimdi kopyalayıp saklayın; bir daha gösterilmeyecek.", "done": "Bitti", "savePermissions": "İzinleri Kaydet", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", + "endpointRestrictions": "İzin Verilen Uç Noktalar", + "allEndpointsAllowed": "Bu anahtar tüm API uç noktalarına erişebilir.", + "endpointsRestricted": "{count, plural, one {# uç noktayla} other {# uç noktayla}} sınırlı.", "autoResolve": "Otomatik Çözümle", "autoResolveDesc": "Bu API anahtarı için belirsiz model adlarını kaynak sağlayıcıya otomatik olarak çözümleyin.", "streamDefaultMode": "Akış Varsayılan Uyumluluğu", @@ -2382,8 +2382,8 @@ "allowedCombos": "İzin Verilen Kombinasyonlar", "allCombosAllowed": "Bu anahtar herhangi bir kombinasyonu kullanabilir.", "restrictedComboCount": "{count, plural, one {# kombinasyon} other {# kombinasyon}} ile sınırlandırıldı.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# kayıtlı girdi} other {# kayıtlı girdi}} bu birleşik seçim listesinde değil (örneğin yönlendirme kuralları) ve kaydedildiği şekilde korunacak.", + "preservedComboRuleHint": "Kaydedildiği şekilde korundu. Bu girdi yukarıdaki listede bir birleşik seçim olmadığından yalnızca API üzerinden değiştirilebilir.", "apiManagerCustomRateLimits": "Özel Fiyat Limitleri", "apiManagerCustomRateLimitsDesc": "Genel varsayılan sınırları geçersiz kılın. Varsayılanları kullanmak için boş bırakın.", "apiManagerRateLimitRequestsPlaceholder": "İstekler", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Bu anahtarın yönlendirme sırasında üst sağlayıcı/hesap sınır politikasını yoksaymasına izin verir. API anahtarı USD kotaları geçerliliğini korur.", "quotaPill": "KOTA", "quotaModeOnly": "yalnızca-qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Özel Kiralama", + "exclusiveLeaseNoticeTitle": "Özel Kiralama", + "exclusiveLeaseNoticeDesc": "Bu API anahtarı, tahsis edilmiş bağlantı yönlendirmesi için özel kiralama izinlerine sahiptir.", + "allConnections": "Tüm bağlantılar", + "onlySelectedConnections": "Yalnızca seçili bağlantılar", + "selectAtLeastOneConnection": "En az bir bağlantı seçin veya Tüm bağlantılar'ı seçin.", + "allConnectionsDesc": "Bu anahtar herhangi bir etkin bağlantıyı kullanabilir.", + "restrictedToConnections": "{count, plural, one {# bağlantıyla} other {# bağlantıyla}} sınırlandırıldı." }, "auditLog": { "title": "Denetim Günlüğü", @@ -2593,60 +2593,60 @@ "emptyState": "Sonuçları görmek için bir arama sorgusu gönderin", "copy": "Kopyala", "resetToDefault": "Varsayılana sıfırla", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Arama", + "tabScrape": "İçerik çıkarma", + "tabCompare": "Karşılaştırma", + "modalitiesGuide": "Yöntemler kılavuzu", + "searchConceptTitle": "Arama", + "searchConceptDesc": "Arama = web sonuçlarının bir listesini getirir (başlık, URL, alıntı, alaka düzeyi puanı)", + "scrapeConceptTitle": "İçerik çıkarma", + "scrapeConceptDesc": "İçerik çıkarma = bir URL'nin tüm içeriğini çıkarır (markdown, metin veya HTML)", + "compareConceptTitle": "Karşılaştırma", + "compareConceptDesc": "Karşılaştırma = gecikme süresini, maliyeti ve sonuç örtüşmesini karşılaştırmak için aynı sorguyu N sağlayıcıda yan yana çalıştırır", + "rerankConceptTitle": "Yeniden sıralama", + "rerankConceptDesc": "Yeniden sıralama = sorguya göre alaka düzeyini iyileştirmek için sonuçları LLM aracılığıyla yeniden sıralar", + "autoConceptTitle": "Otomatik (en ucuz)", + "autoConceptDesc": "Otomatik (en ucuz) = yapılandırılmış kimlik bilgilerine sahip mevcut en ucuz sağlayıcıyı otomatik olarak seçer", + "providerCatalogTitle": "Sağlayıcı Kataloğu", + "kindSearch": "Arama", + "kindFetch": "Getirme/İçerik çıkarma", + "statusConfigured": "Yapılandırıldı", + "statusMissing": "Kimlik bilgisi yok", + "statusRateLimited": "Hız sınırına ulaşıldı", + "configureProvider": "Sağlayıcılar bölümünde yapılandırın", + "loadingProviders": "Sağlayıcılar yükleniyor…", + "failedToLoadProviders": "Sağlayıcılar yüklenemedi", + "costPerQuery": "Maliyet/sorgu", + "freeQuota": "Ücretsiz kota/ay", + "scrapeUrl": "İçeriği çıkarılacak URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL gerekli", "scrapeUrlInvalid": "Geçersiz URL — http:// veya https:// ile başlamalıdır", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Çıkar", + "scrapeExtracting": "Çıkarılıyor…", + "scrapeFullPage": "Tam sayfa", + "scrapeFormat": "Biçim", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Metin", + "scrapePreview": "Önizleme", + "scrapeRaw": "Ham", + "scrapeContentTruncated": "(kısaltıldı, ham hâlini görüntüle)", + "scrapeMetadata": "Meta Veriler", + "scrapeProvider": "Sağlayıcı", + "scrapeSize": "Boyut", "scrapeEmptyState": "İçeriğini çıkarmak için bir URL girin", "scrapeProvidersAvailable": "Kullanılabilir sağlayıcılar: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Karşılaştır", + "compareRunning": "Karşılaştırılıyor…", + "autoProvider": "Otomatik (en ucuz)", + "configuredStatus": "Yapılandırıldı", + "rateLimitedStatus": "Hız sınırına ulaşıldı", + "noCredential": "Kimlik bilgisi yok", + "searchTypeLabel": "Tür", + "rerankModelLabel": "Yeniden sıralama modeli", + "noneOption": "Yok", + "size": "Boyut", "configurationPane": "Yapılandırma bölmesi", "configuration": "Yapılandırma", "status": "Durum", @@ -2743,7 +2743,7 @@ "effortExtraHigh": "Ekstra yüksek", "effortMax": "Maks", "effortUltra": "Ultra", - "wireApi": "Wire API", + "wireApi": "API'yi Bağla", "modelAliases": "Model takma adları", "addModel": "Model ekle", "routeModelPlaceholder": "{model} modelini şuraya yönlendir...", @@ -2908,7 +2908,7 @@ "continue": "IDE'lerde Continue çalıştırırken taşınabilir, JSON tabanlı sağlayıcı yapılandırmasına ihtiyaç duyduğunuzda kullanın.", "opencode": "Terminal yerel ajan çalıştırmaları ve OpenCode ile betik tabanlı otomasyon tercih ettiğinizde kullanın.", "kiro": "Kiro'yu entegre ederken model yönlendirmesini OmniRoute üzerinden merkezi olarak yönetmek istediğinizde kullanın.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "OmniRoute üzerinden yönlendirilen Codeium/Windsurf modellerine sahip, yapay zekâ odaklı bir IDE kullanmak istediğinizde tercih edin.", "antigravity": "Antigravity/Kiro trafiğinin MITM üzerinden yakalanıp OmniRoute'a yönlendirilmesi gerektiğinde kullanın.", "copilot": "OmniRoute anahtarları ve yönlendirme kuralları uygulanırken Copilot sohbet tarzı bir UX istediğinizde kullanın.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2932,7 +2932,7 @@ "kiro": "Amazon Kiro - AI destekli IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", + "amp": "Sourcegraph Amp kodlama asistanı CLI'si", "hermes": "Hermes AI Terminal Asistanı", "hermes-agent": "Hermes Agent (Nousresearch tarafından) - Çoklu model desteğine sahip gelişmiş terminal yapay zekası (delegasyon, görme, sıkıştırma vb.)", "custom": "Genel OpenAI uyumlu CLI veya SDK yapılandırma oluşturucu", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter otonom kodlama aracısı CLI'sı", "omp": "Oh My Pi terminal kodlama aracısı", "letta": "Kalıcı bellek ve araç kullanımına sahip Letta CLI aracısı", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI uyumlu sağlayıcı desteğine sahip, kendini geliştiren RLM kodlama altyapısı", "warp": "Özel sağlayıcı desteğine sahip Warp AI terminali", "agent-deck": "Agent Deck çoklu aracı orkestratörü", "5dive": "5dive — kendi sunucunuzda çalışan kodlama aracıları filosu; tek bir auth profili hepsini OmniRoute'a yönlendirir" @@ -3023,8 +3023,8 @@ "title": "Modeli Seçin" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Düşünme Varyantını Kullan", + "desc": "Düşünme modellerini --variant high/low/max ile çalıştırın (aşağıdaki örnek komuta bakın)." } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Yapay Zekâ Ayarlarını Aç", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Özel Sağlayıcı Ekle", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Temel URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API Anahtarı", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Model Seç", + "desc": "Açılır listeden bir model seçin" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Özel CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Araç Kategorileri", "visibleToolsCount": "{count} araç mevcut", "customCliBuilderTitle": "OpenAI uyumlu CLI oluşturucu", "customCliBuilderDescription": "OpenAI uyumlu bir temel URL, API anahtarı ve model kimliğini kabul eden herhangi bir CLI veya SDK için env değişkenleri ve JSON parçacıkları oluşturun.", @@ -3186,7 +3186,7 @@ "cliproxyapiHealthy": "Sağlıklı", "cliproxyapiInstall": "Kurulum", "cliproxyapiNotInstalledValue": "Yüklenmedi", - "cliproxyapiPort": "Port", + "cliproxyapiPort": "Bağlantı Noktası", "cliproxyapiRequestFailed": "İstek başarısız oldu", "cliproxyapiRestart": "Yeniden Başlat", "cliproxyapiStart": "Başla", @@ -3260,15 +3260,15 @@ "priorityDesc": "Sıralı yedekleme: önce model 1, sonra model 2, ardından diğerleri denenir.", "weightedDesc": "Trafiği ağırlık yüzdelerine göre dağıtır ve hata durumunda yedek modele düşer.", "roundRobinDesc": "Döngüsel dağıtım: her istek sıradaki modele yönlendirilir.", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Bağlam Aktarımı", + "contextRelayDesc": "Hesaplar değiştirildiğinde devir özetleriyle oturum sürekliliğini korur", "randomDesc": "Eşit olasılıklı rastgele seçim yapar, ardından kalan modellere yedeklenir.", "leastUsedDesc": "En az istek alan modeli seçerek yükü zaman içinde dengeler.", "costOptimizedDesc": "Fiyatlandırmaya göre önce en ucuz modele yönlendirir.", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Yeniden kullanılabilir her istem önekini tutarlı biçimde aynı sağlayıcı hesabına yönlendirir", "resetAware": "Sıfırlamaya Duyarlı RR", "resetAwareDesc": "Kalan kotayı 5 saatlik ve haftalık sıfırlamalara karşı dengeler, ardından benzer puanları bir kez eşleştirme", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kota Ağırlıklı", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "Kesin Rastgele", "strictRandomDesc": "Karıştırma destesi: yeniden karıştırmadan önce her modeli bir kez kullanır.", @@ -3276,7 +3276,7 @@ "fusionDesc": "İstemi tüm panel modellerine paralel olarak dağıtır, ardından bir hakem model tek bir nihai yanıt sentezler", "fusionJudgeModel": "Hakem model", "fusionJudgeModelHelp": "Panel yanıtlarını tek bir nihai yanıtta sentezleyen model. İlk panel modelini kullanmak için boş bırakın.", - "fusionMinPanel": "Min panel", + "fusionMinPanel": "Minimum panel", "fusionMinPanelHelp": "Gecikenlere ek süre tanınmadan önce gereken başarılı panel yanıtı sayısı (varsayılan 2).", "fusionStragglerGraceMs": "Gecikenler için ek süre (ms)", "fusionStragglerGraceMsHelp": "Çoğunluk sağlandıktan sonra yavaş panel modelleri için ne kadar bekleneceği (varsayılan 8000).", @@ -3288,13 +3288,13 @@ "retryDelay": "Yeniden Deneme Gecikmesi (ms)", "concurrencyPerModel": "Eşzamanlılık / Model", "queueTimeout": "Kuyruk Zaman Aşımı (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Devir Eşiği", + "contextRelayHandoffThresholdHelp": "Kota kullanımı bu eşiğe ulaştığında OmniRoute, etkin hesabın kotası tükenmeden önce yapılandırılmış bir devir özeti oluşturur.", + "contextRelayMaxMessages": "Özet İçin Maksimum Mesaj Sayısı", + "contextRelayMaxMessagesHelp": "Yakın geçmişin ne kadarının aktarım özetinde yoğunlaştırılacağını sınırlar.", + "contextRelaySummaryModel": "Özet Modeli", + "contextRelaySummaryModelHelp": "Yalnızca devir özetini oluşturmak için kullanılan isteğe bağlı geçersiz kılma modeli. Etkin kombinasyon modelini yeniden kullanmak için boş bırakın.", + "contextRelayProviderNote": "Context Relay şu anda Codex hesap rotasyonu için devir özetleri oluşturur. En iyi devamlılık için aynı sağlayıcıya ait birden fazla hesapla eşleştirin.", "advancedHint": "Genel varsayılanları kullanmak için boş bırakın. Bunlar, sağlayıcı başına ayarları geçersiz kılar.", "failoverBeforeRetry": "Yeniden Denemeden Önce Yük Devretme", "maxSetRetries": "Maksimum Set Yeniden Deneme Sayısı", @@ -3386,19 +3386,19 @@ "example": "Daha sonra yapılacak %80'lik hesap sıfırlama yerine, haftalık %60'lık hesabın yarın sıfırlanmasını tercih edin." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Tamamen eşit dağılım istediğinizde kullanın — tekrara geçmeden önce her model bir kez kullanılır.", + "avoid": "Modellerin kalite veya gecikme değerleri farklıysa ve sıralama önemliyse kullanmayın.", + "example": "Örnek: Kullanımı eşit şekilde dağıtmak için aynı modele ait birden fazla hesap." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Power-of-Two-Choices algoritmasını kullanarak düşük gecikmeli seçim istediğinizde kullanın.", + "avoid": "2 veya daha az model içeren küçük kombinasyonlarda kullanmayın — sıralı seçim yöntemine göre bir avantaj sağlamaz.", + "example": "Örnek: 4 veya daha fazla eşdeğer model uç noktası arasında yüksek iş hacimli çıkarım." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Uzun oturumların çalışma bağlamını kaybetmeden hesap rotasyonundan sağ çıkması gerektiğinde kullanın.", + "avoid": "Hesap geçişi nadirse veya ek özetleme istekleri istemiyorsanız kullanmayın.", + "example": "Örnek: Kota tükenmek üzereyken birden fazla hesap arasında rotasyon yapan Codex oturumları." }, "fill-first": { "when": "Bir sonrakine geçmeden önce bir sağlayıcının kotasını tamamen tüketmek istediğinizde kullanın.", @@ -3459,12 +3459,12 @@ "warningRoundRobinSingleModel": "Round-robin en az 2 modelle en iyi sonucu verir.", "warningCostOptimizedPartialPricing": "{total} modelin yalnızca {priced} tanesinde fiyat bilgisi var. Yönlendirme kısmen maliyet odaklı olabilir.", "warningCostOptimizedNoPricing": "Bu kombo için fiyatlandırma verisi bulunamadı. Maliyet odaklı yönlendirme beklenmedik davranabilir.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterAll": "Tümü", + "filterIntelligent": "Akıllı", + "filterDeterministic": "Deterministik", + "filterEmptyTitle": "Bu strateji filtresiyle eşleşen kombinasyon yok.", + "filterEmptyIntelligentDescription": "Akıllı yönlendirme panosunu doldurmak için bir auto veya LKGP kombinasyonu oluşturun.", + "filterEmptyDeterministicDescription": "Şu anda yalnızca auto ve LKGP kombinasyonları mevcut. Tümü'ne geri dönün veya deterministik bir kombinasyon oluşturun.", "readinessTitle": "Kaydetmeye hazır mısınız?", "readinessDescription": "Bu komboyu oluşturmadan veya güncellemeden önce kontrol listesini gözden geçirin.", "readinessCheckName": "Kombo adı geçerli", @@ -3482,8 +3482,8 @@ "applyRecommendations": "Önerileri Uygula", "recommendationsUpdated": "{strategy} için öneriler güncellendi.", "recommendationsApplied": "Öneriler bu komboya uygulandı.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "intelligentPanelTitle": "Akıllı Yönlendirme Panosu", + "intelligentPanelDesc": "Bu otomatik yönlendirme kombinasyonu için gerçek zamanlı puanlama ve sistem durumu.", "configOnlyStatus": "Yapılandırma Görünümü", "configOnlyHint": "Bu panel yalnızca yönlendirme girdilerini gösterir. Canlı devre kesici durumu Sağlık sayfasında mevcuttur.", "routingInputs": "Yönlendirme Girdileri", @@ -3505,47 +3505,47 @@ "manualModelUnknownProvider": "Bilinmeyen sağlayıcı öneki.", "builderDynamicAccountShort": "Dinamik hesap", "builderNeedValidName": "Devam etmeden önce geçerli bir kombo adı tanımlayın.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Durum Özeti", + "normalOperation": "Normal Çalışma", + "allProvidersHealthy": "Sağlayıcılar, yönlendirme koşullarının sağlıklı olduğunu bildiriyor.", + "incidentMode": "Olay Modu", + "highCircuitBreakerRate": "Yüksek devre kesici tetiklenme oranı algılandı.", + "activeModePack": "Etkin Mod Paketi", + "modePackUpdated": "Mod paketi {pack} olarak güncellendi.", + "modePackHint": "Kombinasyonu yeniden oluşturmadan yönlendirme motorunun eğilimini değiştirmek için ön ayarlar arasında geçiş yapın.", + "providerScores": "Sağlayıcı Puanları", + "allProvidersEvaluated": "Yapılandırılmış aday havuzu yok. Tüm etkin sağlayıcılar çalışma zamanında değerlendirilir.", + "excludedProviders": "Hariç Tutulan Sağlayıcılar", + "excludedProvidersHint": "Devre kesicisi OPEN durumunda olan sağlayıcılar geçici olarak yönlendirme dışında tutulur.", + "noExcludedProviders": "Şu anda hariç tutulan sağlayıcı yok.", + "cooldownMinutes": "Bekleme süresi: {minutes} dk.", + "builderIntelligentTitle": "Akıllı Yönlendirme Yapılandırması", + "builderIntelligentDesc": "Bu otomatik yönlendirme kombinasyonu için çok faktörlü puanlama motorunu yapılandırın.", + "candidatePoolLabel": "Aday Havuzu", + "candidatePoolHint": "Bu motorun hangi sağlayıcıları değerlendireceğini seçin. Tüm etkin sağlayıcıları kullanmak için boş bırakın.", + "candidatePoolEmpty": "Henüz etkin sağlayıcı yok.", + "candidatePoolAllProviders": "Tüm sağlayıcılar", + "modePackLabel": "Mod Paketi", + "routerStrategyLabel": "Yönlendirici Stratejisi", + "strategyRules": "Kurallar (6 Faktörlü Puanlama)", + "explorationRateLabel": "Keşif Oranı", + "explorationRateHint": "İsteklerin %{percent} kadarı optimal olmayan sağlayıcıları keşfedebilir.", + "budgetCapLabel": "Bütçe Sınırı (USD / istek)", + "budgetCapPlaceholder": "Sınır yok", + "advancedWeightsTitle": "Gelişmiş: Puanlama Ağırlıkları", "nestedComboFlatten": "İç içe komboları düzleştir", "nestedComboExecute": "İç içe komboları hedef olarak çalıştır", "effectiveRoutingShare": "Geçerli yönlendirme payı (ağırlık ÷ toplam)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Kota", + "weightHealth": "Sağlık", + "weightCostInv": "Maliyet", + "weightLatencyInv": "Gecikme", + "weightTaskFit": "Göreve Uygunluk", + "weightStability": "Kararlılık", + "weightTierPriority": "Katman", + "weightCacheAffinity": "Önbellek İsabeti Yakınlığı", "weightSessionAvailability": "Oturum Uygunluğu", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Akıllı Yönlendirme Yapılandırması", "strategyRecommendations": { "priority": { "title": "Güvenli temel strateji", @@ -3597,11 +3597,11 @@ "tip3": "Eşdeğer hesapların adil bir şekilde dönmeye devam etmesi için kravat bandını küçük tutun." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Deste karıştırma dağılımı", + "description": "Her model, yeniden karıştırmadan önce her döngüde tam olarak bir kez kullanılır.", + "tip1": "Anlamlı bir dağılım için en az 2 model kullanın.", + "tip2": "Eşdeğer performansa sahip modellerle en iyi şekilde çalışır.", + "tip3": "Birden fazla API hesabı arasında yük dengeleme için idealdir." }, "fill-first": { "description": "Geri çekilmeden önce sağlayıcı kotalarını sırayla tüketin.", @@ -3650,82 +3650,82 @@ "templateFreeStackDesc": "Tüm ücretsiz sağlayıcılarda round-robin: Kiro (Claude), Qoder (5 model), Qwen (4 model). Sıfır maliyet, kodlama kesintisiz.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "LKGP Modu", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "wizardGuideTitle": "Komboları Kullanmaya Başlama", + "wizardGuideDesc": "AI trafiğini akıllıca yönlendirmek için model komboları oluşturun", + "wizardGuideHint": "veya yukarıdaki + Kombo Oluştur seçeneğine tıklayın", + "createFirstCombo": "İlk Kombonuzu Oluşturun", + "wizardStep1Title": "Kombonuzu Adlandırın", + "wizardStep1Desc": "Yönlendirme kurallarında tanımlayabilmek için kombonuza benzersiz bir ad verin", + "wizardStep2Title": "Modeller Ekleyin", + "wizardStep2Desc": "AI modellerini seçin ve geri dönüş önceliği sıralarını düzenleyin", + "wizardStep3Title": "Strateji Seçin", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "İnceleyin ve Kaydedin", + "wizardStep4Desc": "Yapılandırmanızı inceleyin ve komboyu etkinleştirin", + "usageGuideInvokeTitle": "Bu kombo nasıl çağrılır?", + "usageGuideInvokeDesc": "Model olarak kombonun tam adını gönderin; ör. model: \"my-combo\" (veya combo/my-combo).", + "usageGuideInvokeAutoNote": "auto ve auto/*, kombolarınızı kullanmayan ayrı bir sıfır yapılandırmalı yönlendiricidir (bir kombonun adı tam olarak auto olmadığı sürece).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto gerçek bir ücretli OpenRouter ürünüdür (Otomatik En İyi Kullanılabilir), bir OmniRoute takma adı değildir — Ayarlar → Yönlendirme → Ücretli modelleri gizle yoluyla hariç tutun.", + "emailVisibilityStateOn": "Açık", + "emailVisibilityStateOff": "Kapalı", + "reorderHandle": "Yeniden sıralamak için sürükleyin", + "failedReorder": "Modeller yeniden sıralanamadı", + "builderFlowTitle": "Kombinasyon Oluşturucu Akışı", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Temel Bilgiler", + "description": "Ad ve başlangıç şablonu" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Adımlar", + "description": "Sağlayıcı, model ve hesap seçimi" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Strateji", + "description": "Yönlendirme davranışı ve gelişmiş ayarlar" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Akıllı Yönlendirme", + "description": "Otomatik yönlendirme aday havuzu, ön ayarlar ve puanlama" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Gözden Geçir", + "description": "Kaydetmeden önce son doğrulama" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", + "builderStageVisited": "Aşama tamamlandı", + "builderStageCurrent": "Geçerli aşama", + "builderStagePending": "Beklemede", + "builderStageLocked": "Kilitli — önce önceki aşamayı tamamlayın", + "builderTitle": "Kombinasyon Oluştur", + "builderBrowseCatalog": "Kataloğa göz at", + "builderProvider": "Sağlayıcı", + "builderLoadingProviders": "Sağlayıcılar yükleniyor...", + "builderSelectProvider": "Sağlayıcı seçin", "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderSelectModel": "Model seçin", + "builderProviderFirst": "Önce sağlayıcıyı seçin", + "builderAccount": "Hesap", + "builderPreview": "Önizleme", + "builderAddStep": "Adım ekle", "builderDuplicateExact": "Bu tam sağlayıcı/model/hesap adımı zaten kombinasyonda yer alıyor.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Kombinasyon Referansı", + "builderAddComboRef": "Kombinasyon referansı ekle", + "builderComboRefStep": "Kombinasyon referansı ekle", + "builderPinnedAccount": "Sabitlenmiş Hesap", + "builderLegacyEntry": "Eski kayıt", + "reviewName": "Ad", + "reviewStrategy": "Strateji", + "reviewSteps": "Adımlar", + "reviewAccounts": "Hesaplar", + "reviewProviders": "Sağlayıcılar", + "reviewComboRefs": "Kombinasyon Referansları", + "reviewAdvanced": "Gelişmiş Ayarlar", + "reviewAgentFlags": "Aracı Bayrakları", + "reviewSequence": "Model Sıralaması", + "reviewNoSteps": "Yapılandırılmış adım yok", "builderStagesDescription": "Kombinasyonları tanımlamak, adımları oluşturmak, yönlendirme stratejisini seçmek ve sonuçları incelemek için her aşamayı tamamlayın.", "builderStepsDescription": "Her birleşik adımı sırayla oluşturun: sağlayıcı, model ve ardından hesap. Bu, aynı sağlayıcının ve modelin farklı hesaplarda yeniden kullanılmasına olanak tanır.", "selectProvider": "Sağlayıcı Seçin", @@ -3800,27 +3800,27 @@ "range7d": "7 Gün", "range30d": "30 Gün", "range90d": "90 Gün", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 Gün", + "range365d": "365 Gün", "rangeAll": "Tüm Zamanlar", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Etkin Modeller", + "flatRateEstimateNotice": "Sabit ücretli abonelikler için token fiyatı tahminlerini içerir; faturalandırılan maliyeti içermez.", + "flatRateEstimateForecast": "Projeksiyon, sabit ücret tahminlerini içerir.", + "selectedWindow": "Seçili Dönem", + "activeProviders": "Etkin Sağlayıcılar", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Bugünkü Harcama", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Sağlayıcı Payı", + "topProviders": "En İyi Sağlayıcılar", + "costTrend": "Maliyet Eğilimi", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "En İyi Modeller", "requestsInWindow": "Requests In Window", "tokenUsage": "Jeton Kullanımı", "totalTokens": "Toplam Jetonlar", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API Uç Noktası", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Çoğu SDK ve araçla OpenAI uyumlu uç noktayı kullanın.", + "testEndpoint": "Uç noktayı test et →", + "advancedProtocols": "Gelişmiş protokoller", "available": "Kullanılabilir Uç Noktalar", "cloudProxy": "Cloud Proxy", "disableConfirm": "Bulut proxy'sini devre dışı bırakmak istediğinizden emin misiniz?", @@ -3912,8 +3912,8 @@ "audioTranscriptionDesc": "Ses dosyalarını metne dönüştürün (Whisper)", "textToSpeech": "Metinden Konuşma", "textToSpeechDesc": "Metni doğal sesli konuşmaya dönüştürün", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Müzik Oluşturma", + "musicDesc": "ComfyUI (Stable Audio, MusicGen) aracılığıyla müzik ve ses parçaları oluşturun", "moderations": "Moderasyonlar", "moderationsDesc": "İçerik denetimi ve güvenlik sınıflandırması", "responsesDesc": "Codex ve gelişmiş aracılı iş akışları için OpenAI Responses API'si", @@ -3963,29 +3963,29 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Tüneli Etkinleştir", + "cloudflaredInstallAndEnable": "Yükle ve Etkinleştir", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Çalışıyor", + "cloudflaredStarting": "Başlatılıyor", + "cloudflaredStoppedState": "Durduruldu", + "cloudflaredNotInstalled": "Yüklü değil", + "cloudflaredUnsupported": "Desteklenmiyor", + "cloudflaredError": "Hata", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Son hata: {error}", "providerModelsTitle": "{provider} — Modeller", "noModelsForProvider": "Bu sağlayıcı için kullanılabilir model yok.", "chat": "Chat", - "embedding": "Embedding", + "embedding": "Gömme", "image": "Görsel", "custom": "Özel", - "modelsCount": "{count, plural, one {# model} other {# models}}", + "modelsCount": "{count, plural, one {# model} other {# model}}", "sectionTitle": "Entegrasyon Yüzeyi", "sectionDescription": "OpenAI uyumlu API'ler ve operasyonel protokol uç noktaları", "tabApis": "API'ler", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Büyük istek gruplarını eşzamansız olarak işleyin (OpenAI uyumlu)", "filesApi": "Dosyalar API'sı", "filesApiDesc": "Toplu işleme için dosyaları yükleyin ve yönetin", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Video Oluşturma", + "videoDesc": "ComfyUI ve Stable Video Diffusion gibi yapay zekâ modellerini kullanarak videolar oluşturun.", + "tailscaleRequestFailed": "Tailscale durumu yüklenemedi", + "tailscaleEnableFailed": "Tailscale Funnel etkinleştirilemedi", + "tailscaleWaitingForLogin": "Açılan tarayıcı sekmesinde Tailscale oturum açma işlemini tamamlayın. OmniRoute otomatik olarak yeniden deneyecektir.", + "tailscaleLoginTimedOut": "Tailscale oturumunun açılması beklenirken zaman aşımına uğradı", + "tailscaleWaitingForFunnel": "Açılan tarayıcı sekmesinde bu cihaz için Funnel'ı etkinleştirin. OmniRoute yoklamaya devam edecek.", + "tailscaleFunnelTimedOut": "Tailscale Funnel'ın etkinleştirilmesi beklenirken zaman aşımına uğradı", + "tailscaleStarted": "Tailscale Funnel etkinleştirildi", + "tailscaleDisableFailed": "Tailscale Funnel devre dışı bırakılamadı", + "tailscaleStopped": "Tailscale Funnel devre dışı bırakıldı", + "tailscaleInstallFailed": "Tailscale yüklenemedi", + "tailscaleInstallProgress": "İşlem sürüyor...", + "tailscaleInstalled": "Tailscale başarıyla yüklendi", + "tailscaleRunning": "Çalışıyor", + "tailscaleNeedsLogin": "Oturum Açılması Gerekiyor", + "tailscaleStoppedState": "Durduruldu", + "tailscaleNotInstalled": "Yüklü değil", + "tailscaleUnsupported": "Desteklenmiyor", + "tailscaleError": "Hata", + "tailscaleDisable": "Funnel'ı Durdur", + "tailscaleInstallAndEnable": "Yükle ve Etkinleştir", + "tailscaleLoginAndEnable": "Oturum Aç ve Etkinleştir", + "tailscaleEnable": "Funnel'ı Etkinleştir", + "tailscaleUrlNotice": "Tailscale .ts.net adresinizi kullanır. İlk kullanımda oturum açmanız ve Funnel onayı vermeniz gerekebilir.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Bu makinenin Tailscale kimlik doğrulamasını yapın, ardından Funnel'ı etkinleştirin.", + "tailscaleBinaryPath": "İkili dosya: {path}", + "tailscaleLastError": "Son hata: {error}", + "tailscaleInstallTitle": "Tailscale'i Yükle", + "tailscaleInstallIntro": "Tailscale'i bu makineye yükler ve OmniRoute'u Funnel'ı etkinleştirmeye hazırlar.", + "tailscaleInstallPasswordHint": "macOS ve Linux'ta paket kurulumu ve arka plan programının başlatılması için sudo gerekebilir.", + "tailscaleSudoPlaceholder": "İsteğe bağlı sudo parolası", + "tailscaleInstalling": "Yükleniyor", "tailscaleSudoLabel": "Sudo Şifresi (macOS/Linux'ta gereklidir)", "ngrokTitle": "Ngrok Tüneli", "ngrokRunning": "Koşu", @@ -4139,14 +4139,14 @@ "badgeInternalTooltip": "Bu dahili bir sistem uç noktasıdır", "tierAll": "Tümü", "tierAuth": "Kimliği Doğrulanmış", - "tierLoopback": "Loopback", + "tierLoopback": "Geri döngü", "tierAlwaysProtected": "Her Zaman Korumalı", "tierPublic": "Genel", "hideInternal": "Dahili Olanları Gizle", "showInternal": "Dahili Olanları Göster", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Özel Sistem İstemi", + "customSystemPromptDescription": "Her model isteğine özel bir sistem istemi ekle", + "customSystemPromptPlaceholder": "ör. Her zaman korsan ağzıyla yanıt ver...", "obsidianEnterToken": "Lütfen bir Obsidian API belirteci girin", "obsidianConnectFailed": "Bağlantı kurulamadı", "obsidianConnectionFailed": "Bağlantı başarısız", @@ -4246,7 +4246,7 @@ "topTools": "En çok kullanılan araçlar", "noToolCalls24h": "Son 24 saatte araç çağrısı yapılmadı.", "runtimeDetails": "Çalışma zamanı ayrıntıları", - "transport": "Transport", + "transport": "Aktarım", "scopesEnforced": "Kapsam zorlaması", "yes": "Evet", "no": "Hayır", @@ -4287,10 +4287,10 @@ "failed": "başarısız", "previous": "Önceki", "next": "Sonraki", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "apiKeyId": "API Anahtarı Kimliği", + "offset": "Başlangıç", + "limit": "Sınır", + "tool": "Araç" }, "a2aDashboard": { "loading": "A2A kontrol paneli yükleniyor...", @@ -4346,10 +4346,10 @@ "metadata": "Meta veriler", "events": "Etkinlikler", "artifacts": "Çıktılar", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "tablePhase": "Tablo Aşaması", + "offset": "Ofset", + "limit": "Sınır", + "skill": "Yetenek", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "mesaj/gönder", "rpcMethodStream": "mesaj/akış", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Eylemler", + "addMemory": "Bellek Ekle", + "allTypes": "Tüm Türler", "cancel": "İptal", "checkHealth": "Sağlığı kontrol edin", "checkingHealth": "Kontrol ediliyor…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Nasıl çalışır", "howWorksContent": "1. Otomatik çıkarma: Her yanıtın sonunda, gerçekler ve bölümler otomatik olarak algılanır ve kaydedilir.\n2. Geri getirme: Her yanıttan önce, en alakalı bellekler FTS5 (tam eşleşme), vektör (anlamsal) veya hibrit RRF aracılığıyla aranır.\n3. Enjeksiyon: Yanıt kalitesini artırmak için alakalı bellekler asistan bağlamına enjekte edilir.\n4. Yönetim: Eski bellekleri görüntülemek, düzenlemek, dışa aktarmak ve sıkıştırmak için bu sayfayı kullanın." }, - "content": "Content", + "content": "İçerik", "contentPlaceholder": "Hatırlanması gereken değer veya JSON içeriği", - "created": "Created", - "delete": "Delete", + "created": "Oluşturulma", + "delete": "Sil", "deleteConfirmDesc": "Bu işlem geri alınamaz. Bellek kalıcı olarak silinecektir.", "deleteConfirmTitle": "Bellek silinsin mi?", - "description": "View and manage stored memory entries", + "description": "Saklanan bellek kayıtlarını görüntüleyin ve yönetin", "editMemory": "Belleği düzenle", "editModal": { "title": "Belleği Düzenle", @@ -4433,7 +4433,7 @@ "reindexFailed": "Yeniden dizine ekleme başlatılamadı", "keywordLabel": "Anahtar kelime (FTS5)", "keywordReason": "Anahtar kelime araması her zaman kullanılabilir", - "embeddingLabel": "Embedding", + "embeddingLabel": "Gömme", "vectorStoreLabel": "Vektör Deposu", "qdrantLabel": "Qdrant", "rerankLabel": "Yeniden Sıralama", @@ -4444,20 +4444,20 @@ "configureCta": "Yapılandır", "vectorStoreInstallHint": "Vektör aramasını etkinleştirmek için: npm install sqlite-vec (WASM değil, yerel Node.js gerektirir), ardından yeniden başlatın." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Epizodik", + "export": "Dışa Aktar", + "factual": "Olgusal", "healthUnknown": "Sağlığı bilinmiyor", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "İsabet Oranı", + "import": "İçe Aktar", "importError": "Dosya içe aktarılamadı", "importResult": "{imported} içe aktarıldı, {skipped} atlandı", - "key": "Key", + "key": "Anahtar", "keyPlaceholder": "örneğin user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Bellek Kayıtları", "next": "Sonraki", - "noMemories": "No memories found", + "noMemories": "Bellek kaydı bulunamadı", "pageInfo": "{totalPages} sayfanın {page} sayfası ({total} toplam)", "pipelineError": "Boru hattı hatası", "pipelineOk": "İşlem Hattı Tamam ({latencyMs}ms)", @@ -4474,7 +4474,7 @@ "simulate": "Simüle et", "resultsTitle": "{count} sonuç", "resolutionTitle": "Arama çözümlemesi", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Gömme", "resolutionStore": "Vektör deposu", "resolutionStrategy": "Kullanılan strateji", "rerankApplied": "Uygulanan yeniden sıralama", @@ -4485,7 +4485,7 @@ "errorFetch": "Önizleme alınamadı" }, "previous": "Önceki", - "procedural": "Procedural", + "procedural": "Prosedürel", "qdrant": { "title": "Qdrant (Vektör Deposu Seviye 2)", "description": "Ölçeklenebilir anlamsal arama için isteğe bağlı Qdrant entegrasyonu", @@ -4504,7 +4504,7 @@ "healthError": "Bağlantı hatası", "saved": "Ayarlar kaydedildi", "saveError": "Kaydedilemedi", - "portLabel": "Port", + "portLabel": "Bağlantı Noktası", "embeddingModelLabel": "Embedding Modeli", "optional": "isteğe bağlı", "apiKeyKeepPlaceholder": "Mevcut anahtarı korumak için boş bırakın", @@ -4534,8 +4534,8 @@ }, "save": "Kaydet", "saving": "Kaydediliyor...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Bellek kayıtlarında ara...", + "semantic": "Semantik", "summarize": { "title": "Eski bellekleri sıkıştır", "noCandidates": "Sıkıştırmaya uygun bellek yok (kriter: >30 günlük).", @@ -4547,8 +4547,8 @@ "playground": "Oyun Alanı", "engine": "Motor" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Bellek Yönetimi", + "tokensUsed": "Kullanılan Tokenlar", "tooltip": { "totalEntries": "Bu API anahtarı için saklanan toplam bellek", "tokensUsed": "Aktif bellekler tarafından kaplanan tahmini toplam token sayısı", @@ -4558,15 +4558,15 @@ "procedural": "Asistanın izlemesi gereken prosedürler, iş akışları ve talimatlar", "semantic": "Kavramlar, tercihler ve alan bilgisi" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Toplam Kayıt", + "type": "Tür", "memoryEnabled": "Bellek etkinleştirildi" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Yetenekler", + "description": "Yapay zekâ yeteneklerini yönetin ve izleyin", + "skillsTab": "Yetenekler", + "executionsTab": "Yürütmeler", "selectSkillToInspect": "İncelemek için soldan bir yetenek seçin.", "schemaTab": "Şema", "handlerTab": "İşleyici", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Testi çalıştır (yer tutucu)", "setModeAria": "Modu {mode} olarak ayarla", "uninstallSkill": "Yeteneği kaldır", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Korumalı Alan", + "loading": "Yetenekler yükleniyor...", + "noSkills": "Yetenek bulunamadı", + "noExecutions": "Yürütme bulunamadı", + "enabled": "Etkin", + "disabled": "Devre dışı", "delete": "Sil", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "Sürüm", + "tableDescription": "Açıklama", + "skill": "Yetenek", + "status": "Durum", + "duration": "Süre", + "time": "Zaman", + "sandboxConfig": "Korumalı Alan Yapılandırması", + "cpuLimit": "CPU Sınırı", + "cpuLimitDesc": "Yetenek başına maksimum yürütme süresi", + "memoryLimit": "Bellek Sınırı", + "memoryLimitDesc": "Maksimum bellek tahsisi", + "timeout": "Zaman Aşımı", + "timeoutDesc": "Yanıt için maksimum bekleme süresi", + "networkAccess": "Ağ Erişimi", + "networkAccessDesc": "Giden ağ isteklerine izin ver", + "mode": "Mod", "q": "Q", "filterSkillsPlaceholder": "Becerileri ada, açıklamaya veya etikete göre filtreleyin", "allModes": "Tüm modlar", @@ -4665,13 +4665,13 @@ "retry": "Yeniden dene", "allOperational": "Tüm sistemler çalışır durumda", "issuesDetected": "Sistem sorunları algılandı", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute hazır", + "healthVerdictActionRequired": "Tam işleyişi geri yüklemek için işlem gerekli", + "healthVerdictCoolingDown": "Son değişikliklerden sonra bekleme sürecinde", + "healthSubtitle": "Sistem sağlık kontrolü", + "advancedDiagnosticsTitle": "Gelişmiş tanılama", + "hide": "Gizle", + "show": "Göster", "updatedAt": "Güncellendi {time}", "latency": "Gecikme", "latencyP50": "p50", @@ -4721,11 +4721,11 @@ "resetting": "Sıfırlanıyor...", "resetAll": "Tümünü Sıfırla", "until": "{time} saatine kadar", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Tükendi", + "learnedFromHeaders": "Üstbilgilerden öğrenildi", + "remainingOfLimit": "{remaining}/{limit} kaldı", + "throttleStatus": "Hız sınırlaması: {value}", + "lastHeaderUpdate": "Üstbilgi güncellemesi: {age}", "databaseHealth": "Veritabanı Sağlığı", "databaseHealthDescription": "Eski kota/alan adı satırlarını ve bozuk kombo referanslarını teşhis edin ve onarın.", "status": "Durum", @@ -4758,14 +4758,14 @@ "providerHealthMatrixDescription": "Devre kesiciler, bekleme süreleri, kilitlemeler ve günlüklerden alınan sağlayıcı × hesap × model durumları.", "healthMatrixRange": "Sağlık matrisi aralığı", "providerFilter": "Sağlayıcı filtresi", - "onlyIssues": "Only issues", - "refresh": "Refresh", - "accounts": "Accounts", - "models": "Models", - "issues": "Issues", - "loadingProviderHealthMatrix": "Loading provider health matrix...", - "failedProviderHealthMatrix": "Failed to load Provider Health Matrix: {error}", - "noProvidersMatchedFilters": "No providers matched the current filters.", + "onlyIssues": "Yalnızca sorunlar", + "refresh": "Yenile", + "accounts": "Hesaplar", + "models": "Modeller", + "issues": "Sorunlar", + "loadingProviderHealthMatrix": "Sağlayıcı sağlık matrisi yükleniyor...", + "failedProviderHealthMatrix": "Sağlayıcı Sağlık Matrisi yüklenemedi: {error}", + "noProvidersMatchedFilters": "Geçerli filtrelerle eşleşen sağlayıcı bulunamadı.", "modelPillSummary": "{requests} istek · {successRate} başarı · {latency} ort.", "modelLockoutSummary": "{reason} · {duration} kaldı", "locked": "kilitli", @@ -4888,28 +4888,28 @@ "previous": "Önceki", "next": "Sonraki", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Ayrıntıları Görüntüle", + "eventMetadata": "Olay Meta Verileri", + "eventPayload": "Olay Yükü", + "requestId": "İstek Kimliği", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "Ofset", + "limit": "Sınır", + "status": "Durum", + "resourceType": "Kaynak Türü", + "totalEntries": "Toplam Kayıt", + "tab": "Sekme", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Kapat", + "runningRequests": "Etkin İstekler", + "runningRequestsDesc": "Şu anda çalışmakta olan üst sağlayıcı isteklerinin gerçek zamanlı görünümü", "clearAll": "Tümünü Temizle", "confirmClearActiveRequests": "Tüm etkin istekler temizlensin mi?", "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "provider": "Sağlayıcı", + "account": "Hesap", + "elapsed": "Geçen Süre", "activeStage": "Aşama", "activeStageUnknown": "Henüz upstream'e gönderilmedi", "activeStageRegistered": "Kayıtlı", @@ -4919,38 +4919,38 @@ "activeStageRateLimitSlotAcquired": "Hız sınırı yuvası alındı", "activeStageSendingToProvider": "Upstream'e gönderiliyor", "activeStageProviderResponseStarted": "Upstream yanıtı başladı", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Sayı", + "payloads": "Yükler", + "viewPayloads": "Görüntüle", + "activeCount": "{count} etkin", + "clientPayload": "İstemci İstek Yükü", + "upstreamPayload": "Üst Sağlayıcı Yükü", + "upstreamNotSentYet": "Henüz üst sağlayıcıya gönderilmedi", + "runningRequestDetailMeta": "Hesap: {account} — Geçen süre: {elapsed}", + "export": "Dışa Aktar", + "exporting": "Dışa aktarılıyor...", + "exportFailed": "Dışa aktarma başarısız oldu", "cleanHistoryButton": "Geçmişi temizle", "cleanHistoryTitle": "Günlük geçmişi temizlensin mi?", "cleanHistoryMessage": "Bu işlem; DATA_DIR/call_logs altındaki tüm istek günlüğü satırlarını, eski ayrıntı satırlarını ve yerel artefakt dosyalarını kalıcı olarak temizler. Temizlikten sonra canlı sayfa yenilenecektir.", "cleanHistoryConfirm": "Geçmişi temizle", "cleanHistoryCancel": "İptal", "cleanHistorySuccess": "{deleted} günlük girdisi, {deletedArtifacts} artefakt ve {deletedDetailedLogs} eski ayrıntı satırı temizlendi.", - "cleanHistoryEmpty": "No request log history was found.", - "cleanHistoryFailed": "Failed to clean log history.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "cleanHistoryEmpty": "İstek günlüğü geçmişi bulunamadı.", + "cleanHistoryFailed": "Günlük geçmişi temizlenemedi.", + "timeRange": "Zaman Aralığı", + "lastNHours": "Son {hours}", + "defaultRange": "varsayılan", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", - "filterByLevel": "Filter by log level", - "searchPlaceholder": "Search logs…", - "searchAria": "Search log entries", - "disableAutoScroll": "Disable auto-scroll", - "enableAutoScroll": "Enable auto-scroll", - "autoScroll": "Auto-scroll", + "fetchFailed": "Günlükler alınamadı", + "copyFailed": "Günlük kaydı kopyalanamadı", + "copyLogEntry": "Günlük kaydını kopyala", + "filterByLevel": "Günlük düzeyine göre filtrele", + "searchPlaceholder": "Günlüklerde ara…", + "searchAria": "Günlük kayıtlarında ara", + "disableAutoScroll": "Otomatik kaydırmayı devre dışı bırak", + "enableAutoScroll": "Otomatik kaydırmayı etkinleştir", + "autoScroll": "Otomatik kaydırma", "entryCount": "{count, plural, one {# kayıt} other {# kayıt}}", "lastHour": "Son 1 saat", "updatedAt": "Güncellendi {time}", @@ -4987,9 +4987,9 @@ "multiProvider": "Çoklu Sağlayıcı", "usageTracking": "Kullanım Takibi", "securityDesc": "Kontrol panelini korumak için bir şifre belirle veya şimdilik atla.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Parola olmadan kurulum sırasında sağlayıcı ekleyemezsiniz. Parola belirledikten sonra sağlayıcıları kontrol panelinden ekleyebilirsiniz.", "providerDesc": "İlk AI sağlayıcını bağla. Daha sonra daha fazlasını ekleyebilirsin.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Sağlayıcı eklemek için önce bir parola belirlemeniz gerekir. Lütfen güvenlik adımına geri dönüp bir parola belirleyin veya sağlayıcıları daha sonra kontrol panelinden ekleyin.", "apiKeyRequired": "API Anahtarı (gerekli)", "customUrlOptional": "Özel URL (isteğe bağlı)", "testDesc": "Sağlayıcı bağlantının çalıştığını doğrulayalım.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "İçe aktarılıyor…", "importFromFileImport": "{count} sağlayıcıyı içe aktar", "importFromFileResult": "{success} sağlayıcı içe aktarıldı ({failed} başarısız)", + "importFromFileDownloadTemplate": "CSV şablonunu indir", + "importFromFileMoreErrors": "+{count} tane daha", + "importFromFileSchemaHint": "CSV sütunları konuma dayalıdır: provider, name, apiKey, baseUrl (isteğe bağlı), priority (isteğe bağlı). provider sütunu, mevcut bir yönetilen sağlayıcı kimliği veya önceden kaydedilmiş OpenAI/Anthropic uyumlu bir düğüm kimliği olmalıdır. Bu içe aktarma işlemi yeni uç nokta düğümleri oluşturmaz.", "adaptaTutorial": { "title": "Adapta Web'e nasıl bağlanılır", "introPrefix": "Adapta, Clerk aracılığıyla kimlik doğrulaması yapar. Token", @@ -5165,20 +5168,20 @@ "modelsHiddenCount": "{count} gizli", "warningCount": "{count} Uyarı", "noConnections": "Bağlantı yok", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "expiredBadge": "Süresi Dolmuş", + "expiringSoonBadge": "Süresi Yakında Dolacak", "freeTier": "Ücretsiz Katman", "freeTierAvailable": "Ücretsiz katman mevcut", "hasFreeTooltip": "Ücretsiz katman mevcut", "noAuthLabel": "Kimlik Doğrulama Yok", "noAuthProviders": "Kimlik Doğrulamasız Sağlayıcılar", - "upstreamProxyLabel": "Upstream Proxy", + "upstreamProxyLabel": "Yukarı Akış Proxy'si", "freeAggregated": "Ücretsiz katmanı olan tüm sağlayıcılar (kendi yerel kategorilerinde de gösterilir)", "deprecated": "Kullanımdan kaldırıldı", "deprecatedProvider": "Bu sağlayıcı kullanımdan kaldırıldı", "riskNotice": { "title": "Devam etmeden önce", - "detailsTitle": "Usage caveats", + "detailsTitle": "Kullanım uyarıları", "tooltip": "Kullanım uyarıları olan sağlayıcı — ayrıntılar için tıklayın", "oauth": "Bu sağlayıcı, proxy/yönlendirici kullanımı için yetkilendirilmemiş resmi ürün oturumunuzu/OAuth'unuzu kullanır. Yoğun otonom ajan kullanımını (OpenCloud tarzı, uzun çok adımlı akışlar, büyük toplu işlemler) önermiyoruz — üst sağlayıcı hesabı kısıtlayarak veya yasaklayarak tepki verebilir. Kullanım riski size aittir.", "webCookie": "Bu sağlayıcı, web oturumu çerezleriniz aracılığıyla kimlik doğrulaması yapar. Üst servis oturumu istediği zaman geçersiz kılabilir ve tekrar giriş yapmanızı gerektirebilir. Uzun süreli gözetimsiz işlemler için önerilmez. Kullanım riski size aittir.", @@ -5188,9 +5191,9 @@ "cancel": "İptal" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} bağlantı işaretlendi — yakın zamanda en fazla {maxFailures} hata oluştu{lastFailureSuffix}. Bağlantı durumunu görüntülemek için tıklayın.", + "lastFailureSuffix": "(son hata {time})", + "ariaLabel": "Bağlantı durumu ayrıntılarını görüntüle, {count} uyarı" }, "disabled": "Devre dışı", "enableProvider": "Sağlayıcıyı etkinleştir", @@ -5225,7 +5228,7 @@ "failedCreate": "Sağlayıcı oluşturulamadı", "errorOccurred": "Bir hata oluştu. Lütfen tekrar deneyin.", "modelStatus": "Model Durumu", - "showConfiguredOnly": "Configured only", + "showConfiguredOnly": "Yalnızca yapılandırılanlar", "allModelsOperational": "Tüm modeller çalışır durumda", "modelsWithIssues": "{count} modelde sorun var", "allModelsNormal": "Tüm modeller normal şekilde yanıt veriyor.", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "Simge URL'si", "iconUrlHint": "İsteğe bağlı. Bu sağlayıcının simgesi olarak gösterilen görsel URL'si.", "iconUrlInvalid": "Geçersiz simge URL'si. http(s):// veya data:image/*;base64 URL'si kullanın.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Günlük kota sıfırlama saat dilimi", + "dailyQuotaResetTimezoneHint": "Yukarı akış X-RateLimit-Reset değerini sağlamadığında kullanılan isteğe bağlı IANA saat dilimi. Kısa bir bekleme süresini korumak için boş bırakın.", + "dailyQuotaResetHourLabel": "Günlük kota sıfırlama saati", + "dailyQuotaResetHourHint": "Yukarıdaki saat diliminde 0-23 arası yerel saat. Boş bırakılırsa düğüm düzeyinde saat kullanılmaz.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Sağlayıcı bulunamadı", "deleteConnectionConfirm": "Bu bağlantı silinsin mi?", "deleteConnectionConfirmNamed": "{name} öğesini silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Seçilenleri Sil ({count})", + "batchDeleteConfirm": "{count} bağlantı silinsin mi? Bu işlem geri alınamaz.", + "batchDeleteSuccess": "{count} bağlantı silindi", "batchActivateSelected": "Etkinleştir", "batchDeactivateSelected": "Devre dışı bırak", "batchRetestSelected": "Yeniden test et", @@ -5292,7 +5295,7 @@ "filterError": "Hata", "filterBanned": "Yasaklandı", "filterCreditsExhausted": "Krediler tükendi", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Hesaplarda ara…", "noFilteredConnections": "Mevcut filtreyle eşleşen bağlantı yok.", "failedSetAlias": "Takma ad ayarlanamadı", "setAliasSuccess": "{alias} takma adı ayarlandı", @@ -5305,14 +5308,14 @@ "openaiCompatibleDetails": "OpenAI Uyumlu Ayrıntılar", "messagesApi": "Mesajlar API'si", "responsesApi": "Yanıtlar API'si", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "Gömmeler", + "audioTranscriptions": "Ses Transkripsiyonları", + "audioSpeech": "Sesli Konuşma", + "imagesGenerations": "Görsel Oluşturma", "chatCompletions": "Sohbet Tamamlamaları", "importingModels": "İçe aktarılıyor...", "importFromModels": "/models'ten içe aktar", - "modelsImported": "{count} models imported", + "modelsImported": "{count} model içe aktarıldı", "allModelsAlreadyImported": "Tüm modeller zaten içe aktarıldı", "noNewModelsToImport": "İçe aktarılacak yeni model yok — tüm modeller zaten kayıt defterinde veya özel modeller listesinde", "skippingExistingModels": "{count} mevcut model atlanıyor", @@ -5340,7 +5343,7 @@ "clearAllModelsFailed": "Modeller temizlenemedi", "addConnectionToImport": "İçe aktarmayı etkinleştirmek için bir bağlantı ekleyin.", "noModelsConfigured": "Yapılandırılmış model yok", - "connectionCount": "{count} connection(s)", + "connectionCount": "{count} bağlantı", "fetchingModels": "Mevcut modeller getiriliyor...", "failedFetchModels": "Modeller getirilemedi", "noFreeModelsFound": "Bu sağlayıcı için ücretsiz model bulunamadı — hiçbir şey içe aktarılmadı.", @@ -5350,13 +5353,13 @@ "importFailed": "İçe aktarma başarısız oldu", "noNewModelsAdded": "Yeni model eklenmedi.", "adding": "Ekleniyor...", - "close": "Close", + "close": "Kapat", "importingModelsTitle": "Modelleri İçe Aktarma", "copyModel": "Modeli kopyala", "filterModels": "Modelleri filtrele…", "testAllRateLimited": "İstek sınırına ulaşıldı, erken durduruldu", "hideFailedAuto": "Başarısız modelleri otomatik gizle", - "selectAllModels": "Select all", + "selectAllModels": "Tümünü seç", "hideAllModels": "Tümünü gizle", "modelsActive": "etkin", "showModel": "Modeli göster", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Her satıra bir anahtar. Format: name|apiKey veya sadece apiKey (dizine göre otomatik olarak adlandırılır).", "bulkValidateKeys": "Kaydetmeden önce her anahtarı doğrulayın (daha yavaş)", "bulkAddAllKeys": "Tüm Anahtarları Ekle", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {# anahtar eklendi} other {# anahtar eklendi}}", + "bulkFailedCount": "{count, plural, one {# başarısız} other {# başarısız}}", "optional": "İsteğe bağlı", "anthropicCompatibleName": "Anthropic Uyumlu", "openaiCompatibleName": "OpenAI Uyumlu", @@ -5419,11 +5422,11 @@ "configured": "yapılandırıldı", "providerProxyConfigureHint": "Bu sağlayıcının tüm bağlantıları için proxy'yi yapılandırın", "providerProxy": "Sağlayıcı Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "env dosyasını onar", + "repairEnvWorking": "Onarılıyor...", + "repairEnvHint": "Mevcut değerlerin üzerine yazmadan eksik OAuth varsayılanlarını .env dosyasına geri yükleyin.", + "repairEnvSuccess": "OAuth varsayılanları geri yüklendi", + "repairEnvFailed": ".env onarılamadı", "noConnectionsYet": "Henüz bağlantı yok", "addFirstConnectionHint": "Başlamak için ilk bağlantınızı ekleyin", "addConnection": "Bağlantı Ekle", @@ -5475,9 +5478,9 @@ "reauthenticateConnection": "Bu bağlantıyı yeniden kimlik doğrula", "proxyConfig": "Proxy ayarları", "aliasExistsAlert": "\"{alias}\" takma adı zaten mevcut. Lütfen farklı bir model kullanın veya mevcut takma adı düzenleyin.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "takma ad", + "clickToSetAlias": "Takma ad belirlemek için tıklayın", + "clickToEditAlias": "Takma ad: {alias} (düzenlemek için tıklayın)", "openRouterAnyModelHint": "OpenRouter her modeli destekler. Hızlı erişim için modeller ekleyin ve takma adlar oluşturun.", "modelIdFromOpenRouter": "Model Kimliği (OpenRouter'dan)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", @@ -5534,18 +5537,18 @@ "interceptFetchHint": "Yerel web_fetch araç çağrılarını OmniRoute'un /v1/web/fetch uç noktasına yeniden yazar.", "interceptionLoadError": "Yakalama ayarları yüklenemedi: {error}", "interceptionSaveError": "Yakalama ayarları kaydedilemedi: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", + "ccAliasSectionTitle": "Claude Code'da göster (claude/…)", + "ccAliasSectionHint": "Bu sağlayıcının modellerini claude/<provider>/<model> yansıtma kimlikleri altında duyurarak Claude Code'un ağ geçidi model keşfinde listelenmelerini sağlayın. Varsayılan olarak kapalıdır — etkinleştirilmesi tüm istemciler için katalog girdilerini iki katına çıkarır.", + "ccAliasProviderLevelLabel": "Sağlayıcı varsayılanı", + "ccAliasModelOverridesLabel": "Modele özgü geçersiz kılmalar", + "ccAliasModelOverrideAriaLabel": "{modelId} için geçersiz kılma", + "ccAliasStateInherit": "Devral", + "ccAliasStateOn": "Açık", + "ccAliasStateOff": "Kapalı", + "ccAliasAddModelPlaceholder": "Model kimliği (ör. gpt-4o)", + "ccAliasAddModelButton": "Geçersiz kılma ekle", + "ccAliasLoadError": "Keşif takma adı ayarları yüklenemedi: {error}", + "ccAliasSaveError": "Keşif takma adı ayarı kaydedilemedi: {error}", "compatUpstreamHeadersLabel": "Ek yukarı akış başlıkları", "compatUpstreamHeadersHint": "Yüksek ayrıcalıklı ayar: sağlayıcı API kimlik bilgilerini düzenlemekle aynı güven düzeyine sahiptir; yalnızca güvenilir yöneticiler kullanmalıdır. OmniRoute, sağlayıcı API anahtarından kimlik doğrulama başlığını ekledikten sonra bu başlıklar birleştirilir. Özel bir başlık mevcut bir başlıkla aynı adı kullanıyorsa (ör. Authorization), verdiğiniz değer otomatik oluşturulan başlığın (Bearer token dahil) tamamının yerini alır; yukarı akış yalnızca sizin yazdığınız değeri görür. Hatalı yapılandırma 401 hatalarına veya bozuk yukarı akış kimlik doğrulamasına yol açabilir. Her başlık için bir satır kullanın (ör. bazı geçitler için ek Authentication başlığı). Önizlemek için değerin üzerine gelin veya odaklayın. Bu panelde bulanıklaştırma, dışarı tıklama veya paneli kapatma sırasında otomatik kaydedilir.", "compatUpstreamHeaderName": "Başlık adı", @@ -5592,9 +5595,9 @@ "email": "E-posta", "healthCheckMinutes": "Sağlık Kontrolü (dk)", "healthCheckHint": "Proaktif jeton yenileme aralığı. 0 = devre dışı.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", + "deselectAllModels": "Tüm seçimleri kaldır", + "modelsActiveCount": "{active}/{total} etkin", + "noModelsMatch": "\"{filter}\" ile eşleşen model yok", "groupLabel": "Ortam", "groupPlaceholder": "örneğin eKaizen, Kişisel", "failedTestConnection": "Bağlantı testi başarısız oldu", @@ -5610,8 +5613,8 @@ "tokenRefreshed": "Jeton başarıyla yenilendi", "tokenRefreshFailed": "Jeton yenileme başarısız oldu", "cursorSessionUnchanged": "Oturum zaten geçerli", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Kimlik doğrulamayı uygula", + "exportCodexAuthFile": "Kimlik doğrulamayı dışa aktar", "applyClaudeAuthLocal": "Kimlik doğrulamayı uygula", "exportClaudeAuthFile": "Dışa aktarma kimlik doğrulaması", "importClaudeAuth": "İçe aktarma kimlik doğrulaması", @@ -5745,58 +5748,58 @@ "modelsPathHint": "Doğrulama için özel model yolu (ör. /v4/models)", "clientIdentityLabel": "İstemci Kimliği", "clientIdentityHint": "İsteğe bağlı. Bunu bekleyen uyumlu ağ geçitleri için bilinen bir CLI ile eşleşen istemci parmak izi başlıklarını (örn. User-Agent) ekler.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Devre dışı bırakıldı (Manuel)", + "statusBanned": "Yasaklandı / Korumalı Alan İhlali", + "statusCreditsExhausted": "Yetersiz Bakiye / Kota Tükendi", + "showEmails": "Tüm e-posta adreslerini göster", + "hideEmails": "Tüm e-posta adreslerini gizle", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Başka bir API anahtarı ekleyin veya birden fazla anahtar yapıştırın", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Toplayıcı Ağ Geçitleri", "enterpriseCloud": "Kurumsal ve Bulut", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API Biçimi Etiketi", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API Bölgesi: Çin", + "apiRegionHint": "API Bölgesi İpucu", + "apiRegionInternational": "API Bölgesi: Uluslararası", + "apiRegionLabel": "API Bölgesi Etiketi", + "apikey": "API anahtarı", + "audio": "Ses", + "audioProvidersHeading": "Ses Sağlayıcıları Başlığı", "cloudAgentProviders": "Bulut Aracısı Sağlayıcıları", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Kısa Ses Etiketi", + "azureOpenAiBaseUrlHint": "Azure Open AI Temel URL İpucu", + "bailianBaseUrlHint": "Bailian Temel URL İpucu", + "claudeWebCookieHint": "claude.ai'i açın → DevTools → Application → Cookies → claude.ai yolunu izleyin ve 'sessionKey' değerini kopyalayın. Cloudflare için ayrıca cf_clearance, __cf_bm ve _cfuvid gereklidir.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web Çerez İpucu", + "blackboxWebCookiePlaceholder": "Blackbox Web Çerez Yer Tutucusu", "t3ChatWebCookieHint": "t3.chat → DevTools → Uygulama → Yerel Depolama → https://t3.chat'i açın, 'convex-session-id'yi kopyalayın. Ardından DevTools → Ağ'ı açın ve herhangi bir sohbet isteğindeki Çerez başlığının tamamını kopyalayın. Her iki değeri de aşağıdaki alanlara yapıştırın.", "t3ChatWebCookiePlaceholder": "dışbükey-oturum-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web Çerez İpucu", "blockClaudeExtraUsageDescription": "Etkinleştirildiğinde, OmniRoute bu Claude bağlantısını, kullanım API'si kuyrukta ek kullanım bildirdiği anda kullanılamaz olarak işaretler, böylece yedek bağlantıya geçilir ve ödeyerek kullanım ek faturalandırmasına devam edilmez.", "blockClaudeExtraUsageLabel": "Ekstra Claude kullanımını engelleyin", "disableCoolingDescription": "Geçici bekleme süresini atlayın; böylece bu bağlantı kurtarılabilir hatalardan sonra bile uygun kalmaya devam eder (yasaklandı/süresi doldu gibi nihai durumlar yine de geçerlidir).", "disableCoolingLabel": "Bu bağlantı için bekleme süresini devre dışı bırak", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 anahtar eklendi} other {# anahtar eklendi}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 yinelenen atlandı} other {# yinelenen atlandı}}", + "bulkPasteHint": "Her satıra bir API anahtarı yapıştırın. Boş satırlar yok sayılır ve yinelenen anahtarlar atlanır.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Gizli Claude düşünme akışları gerektiren CC Compatible üst servisleri için redact-thinking beta üst bilgisini ekler.", + "ccCompatibleRedactThinkingLabel": "redact-thinking betasını etkinleştir", + "ccCompatibleSummarizeThinkingDescription": "Desteklenen Claude modellerinin görünür düşünme farklarını akış halinde iletebilmesi için CC Compatible düşünme isteklerine `display: \"summarized\"` ekler.", + "ccCompatibleSummarizeThinkingLabel": "Özetlenmiş düşünme gösterimini etkinleştir", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Kullanılabilir olduğunda Codex istekleri için öncelikli hizmet katmanını kullanır.", + "codexFastServiceTierLabel": "Codex hızlı hizmet katmanı", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Uyumlu Üst Servis Üst Bilgisi Adı Yer Tutucusu", + "compatUpstreamHeaderValuePlaceholder": "Uyumlu Üst Servis Üst Bilgisi Değeri Yer Tutucusu", + "compatible": "Uyumlu", + "configuredCount": "Yapılandırılan Sayı", + "consoleApiKeyOracleHint": "Konsol API Anahtarı Oracle İpucu", + "consoleApiKeyOracleLabel": "Konsol API Anahtarı Oracle Etiketi", + "consoleApiKeyOraclePlaceholder": "Konsol API Anahtarı Oracle Yer Tutucusu", "newApiUserIdLabel": "New-API Kullanıcı Kimliği", "newApiUserIdPlaceholder": "örn. 12345", "newApiUserIdHint": "AgentRouter'ın New-Api-User başlık değeri, kota bakiyesini almak için konsol API anahtarıyla birlikte kullanılır.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Yeni-API / Tek-API / Sub2API toplayıcı uyumlu düğümler için denge tespiti etkinleştir", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Özel User Agent İpucu", + "customUserAgentLabel": "Özel User Agent Etiketi", + "databricksBaseUrlHint": "Databricks Temel URL İpucu", + "defaultThinkingStrengthHint": "Bir istekte akıl yürütme çabası belirtilmediğinde kullanılır.", + "defaultThinkingStrengthLabel": "Varsayılan düşünme gücü", + "deleteAllExtraApiKeys": "Tümünü sil", + "excludedModelsHint": "Hariç Tutulan Modeller İpucu", + "excludedModelsLabel": "Hariç Tutulan Modeller Etiketi", + "excludedModelsPlaceholder": "Hariç Tutulan Modeller Yer Tutucusu", + "expirationBannerExpired": "Süre Sonu Başlığı: Süresi Doldu", + "expirationBannerExpiredDesc": "Süre Sonu Başlığı Süresi Doldu Açıklaması", + "expirationBannerExpiringSoon": "Süre Sonu Başlığı: Süresi Yakında Dolacak", + "expirationBannerExpiringSoonDesc": "Süre Sonu Başlığı Süresi Yakında Dolacak Açıklaması", + "extraApiKeyMasked": "Anahtar {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Ek API Anahtarları İpucu", + "extraApiKeysLabel": "Ek API Anahtarları Etiketi", + "apiKeyHealthLabel": "API Anahtarı Durumu", + "apiKeyStatusActive": "Etkin", + "apiKeyStatusWarning": "Uyarı ({count} başarısızlık)", + "apiKeyStatusInvalid": "Geçersiz", + "primaryKey": "Birincil Anahtar", + "apiKeyInvalidAlert": "{connections} bağlantılarındaki kimlik doğrulama hataları nedeniyle {count} API anahtarı geçersiz olarak işaretlendi. Bu anahtarlar rotasyonda atlanacak. İncelemek için tıklayın.", + "apiKeyInvalidAlertTitle": "API Anahtarı Durum Uyarısı", + "apiKeyWarningAlert": "{connections} bağlantılarındaki yüksek hata oranı nedeniyle {count} API anahtarı uyarı durumunda. Rotasyon sorunlarını önlemek için inceleyin.", + "apiKeyWarningAlertTitle": "API Anahtarı Uyarısı", + "googlePseInfo": "Google Pse Bilgisi", "antigravityProjectIdHint": "Yerçekimine Karşı Bulut Kodu istekleri için isteğe bağlı geçersiz kılma. Google OAuth sırasında keşfedilen projeyi kullanmak için boş bırakın.", "antigravityClientProfileLabel": "İstemci profili", "antigravityClientProfileHint": "OmniRoute'un API'ye hangi Antigravity istemci kimliğini sunacağını seçin.", @@ -5865,18 +5868,18 @@ "tierFast": "Hızlı", "antigravityProjectIdLabel": "Google Cloud Proje Kimliği", "antigravityProjectIdPlaceholder": "benim-gcp-proje-kimliğim", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok Web Çerezi Yer Tutucusu", + "herokuBaseUrlHint": "Heroku Temel URL İpucu", + "hideEmail": "E-postayı Gizle", + "imageProviders": "Görsel Sağlayıcıları", "videoProviders": "Video Oluşturma", "embeddingRerankProviders": "Yerleştirmeler ve Yeniden Sıralama", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Görseller Kısa Etiketi", + "llmProviders": "LLM Sağlayıcıları", + "localProviderApiKeyOptionalHint": "Yerel Sağlayıcı API Anahtarı İsteğe Bağlı İpucu", + "localProviderBaseUrlHint": "Yerel Sağlayıcı Temel URL İpucu", + "localProviders": "Yerel Sağlayıcılar", + "maxConcurrentWholeNumberError": "Maksimum Eşzamanlılık Tam Sayı Olmalıdır Hatası", "m365TierLabel": "Copilot katmanı", "m365TierHint": "Bu bağlantının hangi Microsoft 365 Copilot yüzeyini kullanacağını seçin. Bireysel, varsayılan tüketici BizChat'idir; Eğitim ve Kurumsal (iş) kendi kiracı yüzeylerini tercih eder.", "m365TierIndividualOption": "Bireysel (varsayılan)", @@ -5888,24 +5891,24 @@ "tierOverrideCheap": "Ucuz", "tierOverridePremium": "Premium", "tierOverrideHelpText": "OmniRoute'un model fiyatlandırmasından çıkarmasına izin vermek yerine bu sağlayıcıyı bir yönlendirme katmanına sabitleyin.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark Web Çerezi İpucu", + "museSparkWebCookiePlaceholder": "Muse Spark Web Çerezi Yer Tutucusu", + "oauth": "OAuth", + "openCliTools": "CLI Araçlarını Aç", + "openSettings": "Ayarları Aç", + "openaiResponsesStoreDescription": "Uyumlu Responses API isteklerinin depolanan yanıt durumunu korumasına izin verin.", + "openaiResponsesStoreLabel": "OpenAI Responses deposu", + "perplexitySearchSharedKeyInfo": "Perplexity Search Paylaşılan Anahtar Bilgisi", + "perplexityWebCookieHint": "Perplexity Web Çerezi İpucu", + "perplexityWebCookiePlaceholder": "Perplexity Web Çerezi Yer Tutucusu", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Hız Sınırı Geçersiz Kılmaları", "rateLimitOverridesMaxConcurrentHint": "Bu bağlantı için maksimum eşzamanlı istek geçersiz kılma değeri. Hesap düzeyindeki sınırı geçersiz kılar.", "rateLimitOverridesMaxConcurrentLabel": "Maksimum Eşzamanlı (Hız Sınırı)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Bir isteğin başarısız olmadan önce hız sınırı yuvası için bekleyebileceği maksimum süre (ms). Yalnızca bu bağlantı için genel Dayanıklılık ayarını geçersiz kılar.", + "rateLimitOverridesMaxWaitMsLabel": "Maksimum Kuyruk Bekleme Süresi (ms)", "rateLimitOverridesMinTimeHint": "İstekler arasındaki minimum süre (ms). Varsayılan hız sınırlayıcı gecikmesini geçersiz kılar.", "rateLimitOverridesMinTimeLabel": "Min. Aralık (ms)", "rateLimitOverridesRpdHint": "Bu bağlantı için günlük maksimum istek sayısı. Sağlayıcı varsayılanını geçersiz kılar.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Token/gün)", "rateLimitOverridesTpmHint": "Bu bağlantı için dakika başına maksimum token sayısı. Sağlayıcı varsayılanını geçersiz kılar.", "rateLimitOverridesTpmLabel": "TPM (Token/dak)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "OAuth Belirtecini Yenile Başlığı", + "regionHint": "Bölge İpucu", + "regionLabel": "Bölge Etiketi", + "removeThisKey": "Bu Anahtarı Kaldır", + "routingTagsHint": "Yönlendirme Etiketleri İpucu", + "routingTagsLabel": "Yönlendirme Etiketleri Etiketi", + "routingTagsPlaceholder": "Yönlendirme Etiketleri Yer Tutucusu", + "search": "Ara", + "searchEngineIdHint": "Arama Motoru Kimliği İpucu", + "searchEngineIdLabel": "Arama Motoru Kimliği Etiketi", + "searchEngineIdRequired": "Arama Motoru Kimliği Gerekli", + "searchProvider": "Arama Sağlayıcısı", + "searchProviderDesc": "Arama Sağlayıcısı Açıklaması", "searchProviders": "Sağlayıcı ara...", "searchByModel": "Modele göre ara…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Arama Sağlayıcıları Başlığı", + "searxngBaseUrlHint": "Searxng Temel URL İpucu", + "searxngInfo": "Searxng Bilgisi", + "sessionCookieLabel": "Oturum Çerezi Etiketi", + "showEmail": "E-postayı Göster", + "snowflakeBaseUrlHint": "Snowflake Temel URL İpucu", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Etiket Grubu İpucu", + "tagGroupLabel": "Etiket Grubu Etiketi", + "tagGroupPlaceholder": "Etiket Grubu Yer Tutucusu", + "testModel": "Modeli Test Et", + "testingModel": "Model Test Ediliyor", "modelTestQuotaTooltip": "Kota doldu — yarın sıfırlanacak veya yenileme gerekiyor", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Jetonun Süresi Doldu Rozeti", + "tokenExpiredTitle": "Jetonun Süresi Doldu Başlığı", + "tokenExpiresSoonTitle": "Jetonun Süresi Yakında Dolacak Başlığı", + "tokenShort": "Kısa Jeton", + "totalKeysRotating": "{count, plural, one {1 anahtar dönüşümlü kullanılıyor} other {# anahtar dönüşümlü kullanılıyor}}", + "unhideModel": "Modeli Göster", + "upstreamProxyProviders": "Üst Akış Proxy Sağlayıcıları", "validationModelIdHint": "API anahtarını doğrulamak için kullanılan model. Sağlayıcının ilk kullanılabilir modelini kullanmak için boş bırakın.", "validationModelIdLabel": "Doğrulama modeli", "validationModelIdPlaceholder": "ör. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Service Account JSON'unuzu ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) veya bir OAuth access_token yapıştırın", + "webCookieProviders": "Web Çerezi Sağlayıcıları", + "weeklyShort": "Haftalık Kısa", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Temel URL İpucu", "globalCodexServiceMode": "Genel Codex hizmet modu", "connect": "Bağlan", "manualApiKey": "Manuel API anahtarı", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Zed IDE tarafından işletim sistemi anahtar zincirinde saklanan yapay zeka sağlayıcı kimlik bilgilerini (OpenAI, Anthropic, Google, Mistral, xAI) keşfedin ve bunları bağlantı olarak içe aktarın. Zed IDE bu makinede yüklü olmalıdır.", "zedImportButton": "Zed'den İçe Aktar", "zedImportFailed": "Zed içe aktarma başarısız oldu", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed İçe Aktarma İpucu", + "zedImportNetworkError": "Zed İçe Aktarma Ağ Hatası", + "zedImportNone": "İçe Aktarılacak Zed Verisi Yok", "zedImportSuccess": "{providers} sağlayıcı(ları) için Zed'den {credentials} kimlik bilgisi(lerini) içe aktarıldı", "zedImporting": "İçe Aktarılıyor…", "zedNoCredentials": "Anahtar zincirinde hiçbir Zed kimlik bilgisi bulunamadı", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "kayıt {number}", "claudeImportParseError": "ayrıştırma hatası", "claudeImportNoValidEntries": "İçe aktarılacak geçerli kayıt yok", - "webFetch": "Web Fetch", + "webFetch": "Web'den Getir", "webFetchTooltip": "Web URL'lerinden içerik çıkaran sağlayıcılar (HTML → Markdown, kazıma, ekran görüntüsü)", "webFetchProvidersHeading": "Web Fetch Sağlayıcıları", "compatibleProvidersDesc": "Barındırdığınız veya yapılandırdığınız OpenAI uyumlu ve Anthropic uyumlu uç noktalar. Herhangi bir OpenAI SDK'sını kendi URL'nize yönlendirin ve istekleri buraya iletin.", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5 dahil 40'tan fazla model için indirimli API proxy'si. API anahtarınızı https://freeaiapikey.com/dashboard adresinden alın. Temel URL: https://freeaiapikey.com/v1.", "freemodel-dev": "https://freemodel.dev adresinden 300$ ücretsiz API kredisi alın — ödeme bilgisi gerekmez. OpenAI uyumlu uç nokta. GPT-5.4 ve GPT-5.5 modelleri mevcuttur.", "friendliai": "Sunucusuz çıkarım için ücretsiz katman — kredi kartı gerekmez", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio üzerinden ücretsiz katman; model başına kotalar artık yayımlanmıyor (AI Studio'daki kota sayfasını kontrol edin) — kredi kartı gerekmez.", "gigachat": "GigaChat'i (Sber) bir API anahtarı ile bağlayın.", "gitlab": "Genel Code Suggestions API'si için GitLab kişisel erişim belirteci. gitlab.com kullanmadığınızda barındırılan bir temel URL yapılandırın.", "gitlawb-gmi": "API anahtarınızı Gitlawb Opengateway panelinden alın.", @@ -6184,7 +6187,7 @@ "glm-cn": "GLM Coding'i (Çin) bir API anahtarı ile bağlayın.", "glmt": "Daha yüksek token bütçesi, düşünme etkinleştirilmiş ve daha uzun zaman aşımına sahip önceden ayarlanmış GLM profili.", "getgoapi": "GoAPI'yi bir API anahtarı ile bağlayın.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Ücretsiz plan: model başına sınırlar (sohbet modeli başına günde 200 bin jeton; RPM/RPD için console.groq.com/docs/rate-limits adresine bakın) — kayıtlı ödeme yöntemi gerekmez.", "haiper": "API anahtarını haiper.ai/haiper-api adresinden alın", "heroku": "Heroku AI'ı bir API anahtarı ile bağlayın.", "hcnsec": "API anahtarını api.hcnsec.cn adresinden alın", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.ai adresinde bir API anahtarı oluşturun, ardından buraya Bearer token olarak yapıştırın. OpenAI uyumlu uç nokta, canlı bir /v1/models kataloğu ile birlikte https://router.requesty.ai/v1 adresindedir.", "runwayml": "Runway video üretimi görev tabanlıdır. OmniRoute, metinden videoya veya görselden videoya işleri gönderir, /v1/tasks/[id] uç noktasını sorgular ve tamamlanan video çıktılarını OpenAI benzeri /v1/videos/generations yanıtına normalleştirir.", "sambanova": "Kayıt olunduğunda $5 ücretsiz kredi (30 gün geçerli), kredi kartı gerekmez", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.cc adresinde bir API anahtarı oluşturun, ardından buraya Bearer jetonu olarak yapıştırın. OpenAI uyumlu temel URL: https://seekai.cc/v1.", "sap": "Model keşfi, AI_API_URL üzerindeki /v2/lm/scenarios/foundation-models/models yolunu kullanır. Sohbet istekleri deploymentUrl/chat/completions yolunu kullanır ve AI-Resource-Group gerektirir.", "sarvam": "Sarvam AI, OpenAI ile uyumludur ve /v1 üzerinde çalışır. OmniRoute, /v1/models'ı sorgular ve sohbet trafiğini /v1/chat/completions'a yönlendirir. Modeller, Hint dilleri için ayarlanmıştır.", "scaleway": "Yeni hesaplar için 1M ücretsiz token — AB/GDPR uyumlu (Paris), Qwen3 235B & Llama 70B", @@ -6309,12 +6312,12 @@ "claude": "Mevcut OAuth akışıyla Claude Code'u bağlayın.", "cline": "Mevcut OAuth akışıyla Cline'ı bağlayın.", "cursor": "Mevcut OAuth akışıyla Cursor IDE'yi bağlayın.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Cursor'ı cursor.com/dashboard/api adresinden alınan bir kullanıcı API anahtarıyla (crsr_...) bağlayın; IDE oturumu gerekmez.", "github": "Mevcut OAuth akışıyla GitHub Copilot'ı bağlayın.", "gitlab-duo": "ai_features + read_user kapsamlarına sahip OAuth uygulaması. Bu OmniRoute örneğinde GITLAB_DUO_OAUTH_CLIENT_ID ve isteğe bağlı olarak GITLAB_DUO_OAUTH_CLIENT_SECRET yapılandırın.", "kilocode": "Mevcut OAuth akışıyla Kilo Code'u bağlayın.", "kimi-coding": "Mevcut OAuth akışıyla Kimi Coding'i bağlayın.", - "kiro": "Free tier: 50 credits/month (~25K–100K tokens). ⚠️ Kiro ToS prohibits third-party proxy/harness use.", + "kiro": "Ücretsiz katman: ayda 50 kredi (~25 bin–100 bin jeton). ⚠️ Kiro Kullanım Koşulları, üçüncü taraf proxy/çalıştırma düzeneği kullanımını yasaklar.", "codex": "Mevcut OAuth akışı ile OpenAI Codex'i bağlayın.", "qwen": "Mevcut OAuth akışı ile Qwen Code'u bağlayın.", "github-models": "github.com/settings/tokens adresinde 'models: read' kapsamına sahip bir GitHub PAT oluşturun" @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "Gerekli kimlik bilgilerini sağlayıcının kendi alanından kopyalayın. Çerezler için yalnızca Cookie başlık değerini kopyalayın ve Cookie:'yi çıkartın.", "webSessionGuideStep3Manual": "Manuel yol: tarayıcı geliştirici araçlarını açın (F12 → Ağ), sayfayı yenileyin, kimlik doğrulamalı bir isteği açın ve İstek Başlıkları'ndan Cookie başlık değerini kopyalayın — Cookie: ön ekini atlayın.", "webSessionGuideStep4": "Buraya yapıştırın ve bağlantıyı kontrol edin. Çalışmayı durdurursa tekrar oturum açın ve yeni bir değerle değiştirin.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har dosyasını içe aktar", + "harImportButtonBusy": "İçe aktarılıyor…", + "harImportButtonHint": "En az bir sohbet mesajı gönderdikten sonra DevTools Network sekmesinden dışa aktarın.", + "harImportStatusValid": "İçe aktarıldı — yaklaşık {minutes} dk boyunca geçerli.", + "harImportStatusExpiringSoon": "İçe aktarıldı — yalnızca yaklaşık {minutes} dk daha geçerli.", + "harImportStatusExpired": "İçe aktarıldı, ancak bu tokenın süresi zaten dolmuş ({minutes} dk önce) — yeni bir HAR dışa aktarın.", + "harImportStatusUnknownExpiry": "İçe aktarıldı. Son kullanma süresi okunamadı.", + "harImportErrorNotJson": "Bu dosya geçerli bir JSON değil — gerçekten bir .har dışa aktarımı mı?", + "harImportErrorNoEntries": "Bu HAR'da kaydedilmiş ağ girdisi yok.", + "harImportErrorNoChathubUrl": "Bu HAR'da Copilot sohbet bağlantısı bulunamadı. Dışa aktarmadan önce m365.cloud.microsoft içinde en az bir sohbet mesajı gönderin.", + "harImportErrorUnparsableUrl": "Sohbet bağlantısı bulundu, ancak URL'si okunamadı.", + "harImportErrorMissingFields": "Sohbet bağlantısı bulundu, ancak token eksikti.", + "harImportErrorReadFailed": "Bu dosya okunamadı.", + "harImportErrorUnknown": "Bu HAR dosyasından kimlik bilgisi çıkarılamadı.", "webSessionSecurityHint": "Buna bir şifre gibi davranın: Süresi dolana veya iptal edilene kadar oturum açmış olduğunuz web hesabınıza erişebilir.", "webNoAuthGuideTitle": "Kimlik bilgisi gerekmez", "webNoAuthGuideBody": "{provider} bir API anahtarına veya çereze ihtiyaç duymaz. Ücretsiz web uç noktasını kullanmak için bağlantıyı kaydedin.", @@ -6421,7 +6424,7 @@ "codexServiceModeUpdated": "Codex hizmet modu güncellendi", "codexServiceTierActive": "Codex {tier} hizmet katmanı aktiftir", "codexTierFastLabel": "Hızlı", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Esnek", "commandCodeApplyFailed": "Command Code auth uygulaması başarısız oldu", "commandCodeApplyingApproval": "Tarayıcı onaylandı, uygulanıyor…", "commandCodeApplyingKey": "Tarayıcı onaylı anahtar uygulanıyor…", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Komut Kodu yetkilendirmesi süresi doldu", "commandCodeConnected": "Komut Kodu bağlı", "commandCodeConnectionAdded": "Komut Kodu bağlantısı eklendi", + "clearConnectionCooldown": "Bekleme süresini temizle", + "clearConnectionCooldownInProgress": "Temizleniyor…", + "clearConnectionCooldownTitle": "Bekleme süresini şimdi temizleyin — kota üst sağlayıcıda zaten yenilendiyse kullanın", "commandCodeLinkExpired": "Komut Kodu bağlantısı süresi doldu", "commandCodeOpeningStudio": "Komut Kodu Stüdyosu Açılıyor…", "commandCodePopupBlocked": "Açılır pencereler engellendi. Lütfen açılır pencerelere izin verin ve Command Code Connect'i tekrar deneyin.", "commandCodeStartFailed": "Command Code auth başlatılamadı", "connectionDeleted": "Bağlantı silindi", "connectionFallback": "bağlantı", + "connectionCooldownCleared": "Bekleme süresi temizlendi — bağlantı yeniden yönlendirmeye katıldı", "coolingConnectionsDescription": "Bu bağlantılar son istekten sonra soğuyor. OmniRoute zamanlayıcı bitene kadar onları atlayacak — elle kapatmaya gerek yok.", "coolingConnectionsTitle": "Şu anda soğutma ({count})", + "failedClearConnectionCooldown": "Bekleme süresi temizlenemedi", "failedDeleteAlias": "Alias silinemedi", "failedDeleteConnection": "Bağlantı silinemedi", "failedDistributeProxies": "Proxy'leri dağıtma başarısız oldu.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Kaydedilmiş model uç noktası ayarları", "searchByModelAria": "Model ile ara", "selectSupportedEndpoint": "En az bir desteklenen uç noktayı seçin", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "Ayarlar", @@ -6554,22 +6557,22 @@ "systemPrompt": "Sistem İstemi", "thinkingBudget": "Düşünme Bütçesi", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP Vekil Sunucusu", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Proxy bölümleri", + "requestBodyLimitTitle": "İstek Gövdesi Sınırı", + "requestBodyLimitDescription": "Bir istek gövdesi ayrıştırılmadan önce kabul edilen maksimum API yükü boyutu. Özel yükleme rotaları, en az kendi yerleşik 100 MB sınırını korur.", + "requestBodyLimitInputLabel": "MB cinsinden istek gövdesi sınırı", + "requestBodyLimitEmptyError": "MB cinsinden bir sınır girin", + "requestBodyLimitWholeNumberError": "Tam sayı kullanın", + "requestBodyLimitMinimumError": "Minimum {min} MB'dir", + "requestBodyLimitMaximumError": "Maksimum {max} MB'dir", + "requestBodyLimitLoadFailed": "İstek sınırı ayarları yüklenemedi", + "requestBodyLimitSaveSuccess": "İstek gövdesi sınırı kaydedildi", + "requestBodyLimitSaveFailed": "İstek gövdesi sınırı kaydedilemedi", + "requestBodyLimitSaving": "Kaydediliyor...", + "requestBodyLimitSave": "Kaydet", + "requestBodyLimitCurrent": "Mevcut: {value}", "cacheConfigLoadFailed": "Önbellek ayarları yüklenemedi", "cacheConfigSaveSuccess": "Önbellek ayarları kaydedildi", "cacheConfigSaveFailed": "Önbellek ayarlarını kaydetme başarısız oldu", @@ -6593,59 +6596,59 @@ "enablePassword": "Şifreyi Etkinleştir", "darkMode": "Karanlık Mod", "lightMode": "Açık Mod", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Bellek", + "memoryDesc": "Oturumlar arasında kalıcı konuşma belleği", + "memoryEnabled": "Belleği Etkinleştir", + "memoryEnabledDesc": "Etkinleştirildiğinde OmniRoute, geçmişteki ilgili bağlamı ekler.", "memoryTokenCostWarning": "Bilginize: bellek etkinken OmniRoute, her sohbet isteğine geri çağrılan bağlamdan en fazla {tokens} belirteç ekler — bu, belirteç kullanımını ve maliyeti artırır. Belirli bir istek için eklemeyi atlamak için \"x-omniroute-no-memory: true\" üstbilgisini gönderin.", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Maksimum Token Sayısı", + "retentionDays": "Saklama", + "recent": "Yakın Geçmiş", + "recentDesc": "Kronolojik pencere", + "semantic": "Semantik", + "semanticDesc": "Vektör araması", + "hybrid": "Hibrit", + "hybridDesc": "Yakın Geçmiş + Semantik", + "skillsTitle": "Beceriler", + "skillsDesc": "Modeller için araçlar", + "skillsEnabled": "Becerileri Etkinleştir", + "skillsEnabledDesc": "Aracıların işlevleri tetiklemesine olanak tanır.", + "skillsComingSoon": "Beceri pazarı yakında geliyor.", + "memorySkillsTitle": "Bellek ve Beceriler", + "memorySkillsDesc": "Kalıcı bağlam ve yetenekler", + "modelsDevTitle": "Model Veritabanı", + "modelsDevDesc": "Fiyatlandırmayı, yetenekleri ve teknik özellikleri models.dev üzerinden otomatik olarak eşitleyin", + "modelsDevEnabled": "models.dev Eşitlemesini Etkinleştir", + "modelsDevEnabledDesc": "Model fiyatlandırmasını, yeteneklerini ve teknik özelliklerini açık kaynaklı models.dev veritabanından alın", + "modelsDevInterval": "Eşitleme Aralığı", + "syncNow": "Şimdi Eşitle", + "syncing": "Eşitleniyor...", + "lastSync": "Son eşitleme", + "never": "Hiçbir zaman", "justNow": "az önce", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Eşitleme İstatistikleri", + "modelsDevStatsDesc": "Mevcut models.dev veri kapsamı", "providers": "Sağlayıcılar", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Fiyatlandırma Bilgisi Olan Modeller", + "capabilities": "Yetenekler", + "lastSyncCount": "Son Eşitleme Sayısı", + "lastSyncFull": "Son tam eşitleme", + "modelsDevInfo": "Nasıl Çalışır?", + "modelsDevInfoDesc": "models.dev, SST/OpenCode ekibi tarafından sürdürülen açık kaynaklı bir yapay zekâ modeli özellikleri veritabanıdır. 100'den fazla sağlayıcıdaki 4.000'den fazla model için fiyatlandırma, yetenekler, bağlam sınırları ve modaliteler sunar.", + "modelsDevInfoResolution": "Fiyatlandırma çözümleme sırası (önceliği en yüksek olandan başlayarak):", + "modelsDevInfoOrder": "Kullanıcı Geçersiz Kılması → models.dev → LiteLLM → Sabit Kodlanmış Varsayılan", "systemTheme": "Sistem Teması", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Hata Ayıklama Modunu Etkinleştir", "logToolSourcesToggle": "Araç Kaynaklarını Günlüğe Kaydet", "logToolSourcesDescription": "İstek başına araç sayısını ve MCP/barındırılan/istemci kaynak dağılımını özetleyen bir tanılama günlüğü satırı oluşturun.", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "Bilgileri Ana Sayfaya Sabitle", "homePinnedSectionsDesc": "Ana sayfanın üst kısmına hangi bölümlerin sabitleneceğini seçin.", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "Sağlayıcı Kota Sınırları", + "homeProviderQuotaLimitsDesc": "Sağlayıcı Kota durumu kapsayıcısını (Tümünü Yenile düğmesiyle birlikte) Ana sayfanın üst kısmına sabitleyin.", + "homeQuickStart": "Hızlı Başlangıç", + "homeQuickStartDesc": "Hızlı Başlangıç panelini Ana sayfada gösterin.", + "homeProviderTopology": "Sağlayıcı Topolojisi", + "homeProviderTopologyDesc": "Sağlayıcı Topolojisini Ana sayfada gösterin.", "accountEmailVisibility": "Hesap e-posta görünürlüğü", "accountEmailVisibilityDesc": "Sağlayıcılar, kombolar, günlükler, kota ve oyun alanı ekranlarında tam hesap e-postalarını gösterin. Varsayılan olarak bunları maskelemek için bunu kapatın.", "comboConfigMode": "Kombo yapılandırma modu", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Yenileme aralığı", "providerQuotaAutoRefreshIntervalDesc": "Kota görünümünün saniye cinsinden ne sıklıkla yenileneceği.", "seconds": "saniye", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Kenar Çubuğu Öğelerini Göster", "enableCache": "Önbelleği Etkinleştir", "cacheTTL": "Önbellek TTL", "maxCacheSize": "Maksimum Önbellek Boyutu", "clearCache": "Önbelleği Temizle", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Önbellek başarıyla temizlendi", + "clearCacheFailed": "Önbellek temizlenemedi", "cacheHits": "Önbellek İsabetleri", "cacheMisses": "Önbellek Iskalamaları", "hitRate": "İsabet Oranı", "cacheEntries": "Önbellek Girişleri", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Önbellek Ayarları", + "semanticCache": "Anlamsal Önbellek", + "maxEntries": "Maksimum Kayıt Sayısı", + "ttlMinutes": "TTL (dakika)", "promptCache": "İstem Önbelleği", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Strateji", + "preserveClientCache": "İstemci Önbelleğini Koru", + "enabled": "Etkin", "loading": "Loading...", "saving": "Kaydediliyor...", - "save": "Save", + "save": "Kaydet", "circuitBreaker": "Devre Kesici", "retryPolicy": "Yeniden Deneme Politikası", "maxRetries": "Maksimum Yeniden Deneme Sayısı", @@ -6690,21 +6693,21 @@ "timeoutMs": "Zaman Aşımı (ms)", "enableSystemPrompt": "Sistem İstemini Etkinleştir", "systemPromptText": "Sistem İstemi Metni", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedAccounts": "Yasaklanan Hesapları Otomatik Olarak Devre Dışı Bırak", + "autoDisableDescription": "Belirli kesin yasak sinyalleri (ör. HTTP 403 'verify your account') döndüren sağlayıcı bağlantılarını kalıcı olarak devre dışı şeklinde işaretleyin. Bu işlem, onları birleşik rotasyondan çıkarır.", + "autoDisableThreshold": "Yasak Eşiği", + "autoDisableThresholdDesc": "Kalıcı olarak devre dışı bırakma öncesinde gereken art arda yasak sinyali sayısı.", + "autoDisableBannedScope": "Otomatik devre dışı bırakmayı şunlara uygula", + "autoDisableBannedScopeDesc": "OmniRoute bir yasaktan sonra yeniden denemeye devam ederse giriş hesapları (ücretli abonelikler ve ücretsiz hesaplar) üst sağlayıcı tarafından kilitlenebilir. Ücretli ön ödemeli API anahtarlarında bu risk yoktur — önce doldurma işleminin sonraki anahtarı kullanabilmesi için bunları havuzda bırakın.", + "autoDisableBannedScopeAll": "Tüm bağlantılar", + "autoDisableBannedScopeAllDesc": "Ön ödemeli API anahtarları dâhil, kalıcı yasak sinyali döndüren tüm bağlantıları devre dışı bırakın.", + "autoDisableBannedScopeSubscription": "Yalnızca giriş / abonelik hesapları", + "autoDisableBannedScopeSubscriptionDesc": "OAuth, çerez, oturum ve web girişi hesaplarını (ücretli veya ücretsiz) devre dışı bırakın. Yönlendirmenin yedek bağlantıya geçebilmesi için ön ödemeli API anahtarları etkin kalır.", "customBannedSignals": "Yasaklı Anahtar Kelimeler", "customBannedSignalsDesc": "Kalıcı hesap engelleme algılamasını tetikleyen ek anahtar kelimeler. Yerleşik anahtar kelimeler her zaman geçerlidir.", "customBannedSignalsPlaceholder": "örn. api key revoked", "noCustomBannedSignals": "Özel anahtar kelime yok. Yalnızca yerleşik anahtar kelimeler etkindir.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Dayanıklılık Yapısı", "resilienceStructureDesc": "Bu sayfa yalnızca davranışı yapılandırır. Canlı kesici durumu Sağlık sayfasında gösterilir. Komboya özgü yeniden deneme ve hepsini bir kez deneme slot kontrolü, kombo ayarlarında kalır.", "enableThinking": "Düşünmeyi Etkinleştir", "maxThinkingTokens": "Maksimum Düşünme Jetonları", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Uç Nokta sayfasında Tailscale Huni kontrollerini gösterin.", "showNgrokTunnel": "Ngrok Tüneli", "showNgrokTunnelDesc": "Uç Nokta sayfasında ngrok Tüneli kontrollerini gösterin.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Kenar çubuğu öğelerini gizle", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", + "presetAll": "Tümü", + "presetAllDesc": "Her şeyi göster", + "presetEssentials": "Temel Öğeler", + "presetEssentialsDesc": "Başlangıç yolu - Gelişmiş araçlar aranabilir kalır", "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetMinimalDesc": "Yalnızca temel sayfalar", + "presetDeveloper": "Geliştirici", + "presetDeveloperDesc": "Geliştirici ve proxy araçları", + "presetAdmin": "Yönetici", + "presetAdminDesc": "İzleme ve denetim", + "settingsSidebarTitle": "Kenar Çubuğu Özelleştirme", + "settingsSidebarDesc": "Gösterilecek kenar çubuğu öğelerini seçin. Temel modda Gelişmiş araçlar aranabilir durumda kalır.", "hideHealthLogs": "Sağlık Kontrolü Günlüklerini Gizle", "hideHealthLogsDesc": "Açıkken, sunucu konsolundaki [HealthCheck] mesajlarını gizler.", "themeAccent": "Tema rengi", @@ -6780,19 +6783,19 @@ "themeOrange": "Turuncu", "themeCyan": "Camgöbeği", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Uygulama adını ve logosunu özelleştirin", + "appName": "Uygulama Adı", + "appNameDesc": "Kenar çubuğunda ve tarayıcı sekmesinde gösterilen ad", + "customLogo": "Özel Logo URL'si", + "customLogoDesc": "Özel logo görselinizin URL'si", + "uploadLogo": "Logo Yükle", + "resetLogo": "Varsayılana Sıfırla", + "logoPreview": "Önizleme", + "customFavicon": "Tarayıcı Favicon'u", + "customFaviconDesc": "Özel favicon'unuzun URL'si (tarayıcı sekmesinde gösterilir)", + "uploadFavicon": "Favicon Yükle", + "resetFavicon": "Favicon'u Sıfırla", + "faviconPreview": "Favicon Önizlemesi", "logoFileTooLarge": "Logo dosyası 500KB'tan küçük olmalıdır", "faviconFileTooLarge": "Favicon dosyası 50KB'tan küçük olmalıdır", "invalidLogoFileType": "Geçersiz dosya türü. Lütfen PNG, JPG, SVG, GIF veya WebP yükleyin.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Yenileme Aralığı", "ruleModeDescription": "Kural Modu Açıklaması" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "Toplu Durum Denetimi", + "bulkHealthcheckDesc": "Hangilerinin çalıştığını belirlemek için yapılandırılmış tüm proxy'leri hedef bir URL'ye karşı test edin.", + "healthcheckTesting": "Test ediliyor...", + "healthcheckAll": "Tümünde Durum Denetimi Yap", + "healthcheckFailed": "Durum denetimi çalıştırılamadı", + "healthcheckTestingAll": "Tüm proxy'ler paralel olarak test ediliyor...", + "healthcheckTotal": "Toplam", + "healthcheckWorking": "Çalışıyor", + "healthcheckFailedLabel": "Başarısız", + "healthcheckStatus": "Durum", + "healthcheckProxyUrl": "Proxy URL'si", + "healthcheckLatency": "Gecikme", "proxyDocumentationScopeTitle": "Proxy kapsam çözümlemesi", "proxyDocumentationScopeDescBefore": "OmniRoute, giden proxy'yi öncelik sırasına göre çözümler:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "kombinasyon → hesap → sağlayıcı → genel", "proxyDocumentationScopeDescAfter": ". En özel kapsam kazanır.", "proxyDocumentationAddTitle": "Özel proxy ekleme", "proxyDocumentationAddDescBefore": "Şu sekmeye gidin:", @@ -6945,7 +6948,7 @@ "proxyFreePoolAddSelected": "Seçilenleri havuza ekle", "proxyFreePoolAddVisible": "Görünen tümünü havuza ekle", "proxyFreePoolSource": "Kaynak", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Ana Makine:Bağlantı Noktası", "proxyFreePoolType": "Tür", "proxyFreePoolCountry": "Ülke", "proxyFreePoolQuality": "Kalite", @@ -7067,7 +7070,7 @@ "costOptDesc": "Mevcut en uygun maliyetli hesabı tercih edin", "resetAware": "Sıfırlamaya Duyarlı RR", "resetAwareDesc": "Kalan kotası sağlıklı olan ve sıfırlamaya daha yakın olan hesapları tercih edin", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Kota Ağırlıklı", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "Katı Rastgele", "strictRandomDesc": "Karıştırma destesi — yeniden karıştırmadan önce her hesabı bir kez kullanır", @@ -7075,7 +7078,7 @@ "stickyLimitDesc": "Geçişten önce hesap başına çağrı sayısı", "routingStrategyTitle": "Yönlendirme Stratejisi", "routingStrategySubtitle": "9router ile eşleş: hesap round-robin, yapışkan limitler ve kombo rotasyonu", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Döngüsel Dağıtım", "accountRoundRobinDesc": "Yükü dağıtmak için hesaplar arasında geçiş yapın", "comboRoundRobin": "Kombo Round Robin", "comboRoundRobinDesc": "Her zaman ilkiyle başlamak yerine kombo hedefleri arasında geçiş yapın", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Bu sağlayıcı için genel hesap stratejisini geçersiz kıl (9router uyumluluğu).", "providerRoutingStrategy": "Hesap stratejisi", "providerRoutingInheritGlobal": "Genel varsayılanı devral", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Kota Ön Kontrol Eşiği", + "quotaPreflightSubtitle": "İsteği üst sunucuya göndermeden önce kotası tükenmiş hesapları atlayın", + "quotaPreflightEnable": "Kota ön kontrolünü etkinleştir", + "quotaPreflightEnableDesc": "Her istekten önce hesabın kalan kotasını (5 saatlik / haftalık / aylık dönemler) kontrol edin. Eşik değerinde veya altında olan hesaplar, üst sunucuya çağrı yapılmadan atlanır. Sağlayıcı Kotası sayfasında dönem bazında belirlenen eşikler her zaman buradaki varsayılan değerden önceliklidir.", + "quotaPreflightCutoff": "Genel eşik (min. kalan %)", + "quotaPreflightCutoffDesc": "Kalan kotası bu yüzdeye veya altına düştüğünde, kendine ait eşiği olmayan tüm dönemler için hesabı kullanmayı bırakın. Sağlayıcı Kotası sayfasındaki kalan yüzde çubuklarıyla eşleşir.", + "quotaPreflightWindowsHint": "Kendine ait dönem veya sağlayıcı bazlı eşiği olan dönemler (Sağlayıcı Kotası sayfasındaki Eşik penceresinden ayarlanır) bu varsayılandan etkilenmez.", + "quotaPreflightLoadFailed": "Kota ön kontrol ayarları yüklenemedi.", "modelAliases": "Model Takma Adları", "modelAliasesTitle": "Model Takma Adları", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Tam eşleşmeleri veya joker karakter kalıplarını kullanarak model adlarını yeniden eşleyin.", "addCustomAlias": "Özel Takma Ad Ekle", "deprecatedModelId": "Kullanımdan kaldırılan model kimliği", "newModelId": "Yeni model kimliği", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Kombinasyon stratejisi", "priority": "Öncelik", "weighted": "Ağırlıklı", - "contextRelay": "Context Relay", + "contextRelay": "Bağlam Aktarımı", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Maksimum Yeniden Deneme Sayısı", "retryDelayLabel": "Yeniden Deneme Gecikmesi (ms)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Model Başına Eşzamanlılık", "queueTimeout": "Kuyruk Zaman Aşımı (ms)", "queueDepth": "Kuyruk Derinliği", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Devir Eşiği", + "contextRelayMaxMessages": "Özet İçin Maksimum Mesaj Sayısı", + "contextRelaySummaryModel": "Özet Modeli", + "contextRelayProviderNote": "Bağlam Aktarımı şu anda Codex hesapları için devirler oluşturur ve bu değerleri yeni veya yapılandırılmamış kombinasyonlar için genel varsayılanlar olarak kullanır.", "providerProfiles": "Sağlayıcı Profilleri", "providerProfilesDesc": "OAuth (oturum tabanlı) ve API Anahtarı (kotalı) sağlayıcılar için ayrı dayanıklılık ayarları. OAuth sağlayıcılarında hız limitleri daha düşük olduğundan eşikler daha sıkıdır.", "oauthProviders": "OAuth Sağlayıcıları", @@ -7329,7 +7332,7 @@ "configured": "yapılandırıldı", "none": "Yok", "modelOverrideValuePlaceholder": "Sayısal değer", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "İngilizce, virgülle ayrılmış; ör. low, medium, high", "addKeyValue": "Anahtar değer ekle", "noModelOverrides": "Bu model için yapılandırılmış geçersiz kılma yok.", "modelOverrideLoadFailed": "Model geçersiz kılmaları yüklenemedi", @@ -7378,25 +7381,25 @@ "editPricing": "Fiyatlandırmayı Düzenle", "viewFullDetails": "Tüm Ayrıntıları Görüntüle", "themeCoral": "Mercan", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Uyarlanabilir Hacim Yönlendirmesi", + "adaptiveVolumeRoutingDesc": "Bağlantıları yük hacmine ve işleme kapasitesi baskısına göre dinamik olarak ölçeklendirin.", + "lkgpToggleTitle": "Son Bilinen İyi Sağlayıcı (LKGP)", + "lkgpToggleDesc": "Etkinleştirildiğinde yönlendirici, başarılı bir yanıtı en son hangi sağlayıcının sunduğunu hatırlar ve sonraki isteklerde önce onu dener.", "echoRequestedModelTitle": "Yanıtlarda istenen model adını yansıt", "echoRequestedModelDesc": "Etkinleştirildiğinde, yanıt `model` alanı yukarı akış model adı yerine istemcinin talep ettiği takma adı veya kombo adını yansıtır. Modeli istekle eşleşmeyen yanıtları reddeden katı istemcileri (örn. Claude Desktop) düzeltir.", "webSearchRouteTitle": "Web araması yönlendirme", "webSearchRouteDesc": "Bir istek yerel bir web_search aracı içerdiğinde, tüm isteği varsayılan yerine bu modele yönlendirin — Anthropic'in web_search sunucu aracını uygulamayan sağlayıcılar için kullanışlıdır. Devre dışı bırakmak için boş bırakın.", "webSearchRoutePlaceholder": "Bir model arayın veya seçin…", "paidModelPatternWarning": "Bu desen yalnızca ücretli modellerle eşleşir — ücretli modelleri etkinleştirin veya deseni ayarlayın.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP Önbelleğini Temizle", + "lkgpCacheCleared": "LKGP önbelleği başarıyla temizlendi", + "lkgpCacheClearFailed": "LKGP önbelleği temizlenemedi", + "days": "Gün", + "lkgp": "LKGP Modu", + "lkgpDesc": "Son Bilinen İyi Sağlayıcı (Öngörülebilir dayanıklılık)", + "maintenance": "Bakım", + "purgeExpiredLogs": "Süresi Dolmuş Günlükleri Temizle", + "purgeLogsFailed": "Günlükler temizlenemedi", "logsDeleted": "{count, plural, =0 {Süresi dolmuş günlük temizlenmedi} one {# süresi dolmuş günlük temizlendi} other {# süresi dolmuş günlük temizlendi}}", "resetUsageData": "Kullanım Verilerini Sıfırla", "resetUsageDataDesc": "Kullanım, istek günlükleri ve analiz verilerini ne kadar geriye dönük silmek istediğinizi seçin. Sağlayıcı yapılandırması, bağlantılar, API anahtarları, kombolar ve ayarlar korunur. Bu işlem geri alınamaz.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Kullanım verileri sıfırlanamadı", "reset": "Sıfırla", "resetting": "Sıfırlanıyor...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Bağlam İçin Optimize Edilmiş", + "contextOptDesc": "Bağlam penceresi gereksinimlerine ve konuşma uzunluğuna göre yönlendirir", + "cacheOpt": "Önbellek İçin Optimize Edilmiş", + "cacheOptDesc": "Yeniden kullanılabilir aynı istem ön ekini aynı sağlayıcı hesabında tutar", + "priorityDesc": "Sıralı geri dönüş - önce 1. sağlayıcıyı, ardından 2. sağlayıcıyı ve bu şekilde devam ederek diğerlerini dener", + "weightedDesc": "Trafiği, sağlayıcılar arasında yüzde ağırlıklarına göre dağıtır", + "modelRoutingTitle": "Model Yönlendirme Kuralları", + "modelRoutingDesc": "Glob kalıplarını kullanarak modelleri otomatik olarak belirli kombinasyonlara yönlendirin", + "addRule": "Kural Ekle", + "routeToCombo": "Kombinasyona Yönlendir", + "selectCombo": "Kombinasyon seçin...", + "priorityHint": "Daha yüksek değer = daha önce kontrol edilir. Belirli kalıplar için 10+ kullanın.", + "patternHint": "Herhangi bir karakter dizisi için *, tek bir karakter için ? kullanın. Büyük/küçük harfe duyarlı değildir.", + "noRoutingRules": "Yapılandırılmış yönlendirme kuralı yok. İstekler varsayılan olarak genel kombinasyonu kullanır.", + "routingRuleHint": "İstekleri otomatik olarak yönlendirmek için claude-opus* -> frontier-combo gibi bir kural ekleyin.", + "deleteRoutingRule": "Bu model yönlendirme kuralı silinsin mi?", + "exactMatchMode": "Tam Eşleşme", + "wildcardPatternMode": "Joker Karakter Kalıbı", + "exactMatchModeDesc": "Kullanımdan kaldırılmış veya yeniden adlandırılmış model kimlikleri için tam eşleşen takma adlar kullanın.", + "wildcardPatternModeDesc": "Bir model ailesinin tek bir hedefle eşleştirilmesi gerektiğinde * ve ? içeren joker karakterli takma adlar kullanın.", + "noExactAliasesConfigured": "Yapılandırılmış tam eşleşen takma ad yok.", + "wildcardRulesTitle": "Joker Karakter Kuralları", + "noWildcardAliasesConfigured": "Yapılandırılmış joker karakter takma adı yok.", + "overview": "Genel Bakış", + "unknownError": "Bilinmeyen Hata", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "İzin Listesi", + "syncDisabled": "Senkronizasyon Devre Dışı", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Senkronizasyon Etkin", + "blacklist": "Engelleme Listesi", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Senkronize Edilen Modeller", + "budget": "Bütçe", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Fiyatlandırma sıfırlanamadı: {reason}", - "tab": "Tab", + "tab": "Sekme", "pricingSavedProvider": "{provider} için fiyatlandırma kaydedildi", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Fiyatlandırma kaydedilemedi: {reason}", "pricingResetProvider": "{provider} için fiyatlandırma sıfırlandı", - "nextSync": "Next Sync", + "nextSync": "Sonraki Senkronizasyon", "pricingSyncFailedWithReason": "Fiyatlandırma senkronizasyonu başarısız oldu: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Senkronize Edilen Fiyatlandırmayı Temizle", + "compressionTitle": "İstem Sıkıştırma", + "compressionDesc": "Sağlayıcılara göndermeden önce istemleri sıkıştırarak token kullanımını azaltın", "compressionGuidanceFullGuideLink": "Tam sıkıştırma kılavuzu", "compressionGuidanceShow": "Ayrıntılar", "compressionGuidanceHide": "Ayrıntıları gizle", @@ -7485,15 +7488,15 @@ "tokenSaverInputCompressionDesc": "Kodu, URL'leri ve amacı korurken uygun sohbet geçmişini yeniden yazın.", "tokenSaverFineTunePrefix": "Her motora şurada ince ayar yapın", "tokenSaverFineTuneSuffix": "veya istek başına motorları şurada birleştirin", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", + "compressionMode": "Sıkıştırma Modu", + "compressionModeOff": "Kapalı", + "compressionModeOffDesc": "Sıkıştırma uygulanmaz", + "compressionModeLite": "Hafif", + "compressionModeLiteDesc": "Boşluk ve boş satır azaltma", + "compressionModeStandard": "Standart (Caveman)", + "compressionModeStandardDesc": "30'dan fazla kalıpla kural tabanlı sıkıştırma; kod bloklarını ve URL'leri korur", + "compressionModeAggressive": "Agresif", + "compressionModeAggressiveDesc": "Maksimum tasarruf için özetleme + araç sonucu sıkıştırma + aşamalı eskime", "compressionModeUltra": "Ultra", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Agresif Motor Yapılandırması", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Her eskime katmanında saklanan son iletilerin sayısı (daha yüksek = daha fazla korunmuş)", "compressionToolStrategies": "Araç Sonuç Stratejileri", "compressionToolStrategiesDesc": "Farklı araç sonuç türleri için sıkıştırma stratejilerini değiştirin", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Genel Ayarlar", + "compressionAutoTrigger": "Otomatik Tetikleme Eşiği", + "compressionCacheTTL": "Önbellek TTL'si", + "compressionPreserveSystem": "Sistem İstemini Koru", "compressionPreserveSystemAlways": "Her zaman", "compressionPreserveSystemWhenNoCache": "Önbellek olmadığında", "compressionPreserveSystemNever": "Asla", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "Kaydedildi", "compressionExclusionsCount": "{count, plural, one {# dışlama} other {# dışlama}} yapılandırıldı", "compressionExclusionsEmpty": "Hiçbir hariç tutma yapılandırılmamış — her model/son nokta sıkıştırma için uygundur (varsayılan davranış).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman Motoru Yapılandırması", + "compressionCavemanConfigDesc": "Kural tabanlı sıkıştırma motoruna ince ayar yapın", "compressionCavemanPanelHint": "Açık/kapalı durumu ve seviyesi panelden ayarlanır:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Mesaj Rollerini Sıkıştır", + "compressionRoleUser": "Kullanıcı", + "compressionRoleAssistant": "Asistan", + "compressionRoleSystem": "Sistem", + "compressionMinLength": "Minimum Mesaj Uzunluğu", + "compressionSkipRules": "Sıkıştırma Kurallarını Atla", + "compressionSkipRulesDesc": "Sıkıştırma sırasında atlamak istediğiniz kurallara tıklayın", + "compressionPreservePatterns": "Korunacak Kalıplar", + "compressionPreservePatternsDesc": "Asla sıkıştırılmayan regex kalıpları (her satıra bir tane)", + "compressionLogTitle": "Sıkıştırma Günlüğü", + "compressionLogEmpty": "Henüz sıkıştırılmış istek yok. Sıkıştırma etkinleştirilmiş istekler işlendiğinde sıkıştırma istatistikleri burada görünecektir.", "minutes": "dakika", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "Komut farkındalıklı araç çıktısı filtreleme", + "compressionModeCodexResponses": "Responses araç çıktısı", + "compressionModeCodexResponsesDesc": "Uygun kabuk, yama, arama, derleme ve JSON çıktıları için ölçülü sıkıştırma", + "compressionModeStacked": "Yığınlı", + "compressionModeStackedDesc": "RTK araç çıktısı filtrelemesinin ardından Caveman mesaj sıkıştırması", + "qdrantTitle": "Qdrant (Vektör belleği)", + "qdrantDesc": "İsteğe bağlıdır. Daha hızlı erişim için anlamsal anıları harici bir vektör veritabanında dizine ekler.", + "qdrantStatusActive": "Etkin", + "qdrantStatusError": "Hata", + "qdrantStatusDisabled": "Devre dışı", + "qdrantEnable": "Qdrant'ı etkinleştir", + "qdrantEnableDesc": "Etkinleştirildiğinde anlamsal/hibrit strateji, anıları almak için Qdrant'ı kullanabilir.", + "qdrantTesting": "Test ediliyor...", + "qdrantTestConnection": "Bağlantıyı test et", + "qdrantSaved": "Yapılandırma kaydedildi", + "qdrantSaveError": "Yapılandırma kaydedilemedi", + "qdrantHostHint": "Bağlantı noktası olmadan. Örnek: 127.0.0.1 veya http://qdrant", + "qdrantPort": "Bağlantı noktası", + "qdrantPortHint": "Qdrant varsayılanı: 6333", + "qdrantCollectionHint": "Bellek noktalarının depolanacağı yer.", + "qdrantEmbeddingModel": "Gömme modeli", + "qdrantHelpTitle": "Hızlı kurulum yardımı", + "qdrantHelpQuickTitle": "Hızlı kurulum (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Ana makine: Qdrant IP/URL'si, Bağlantı noktası: 6333, Koleksiyon: omniroute_memory.", + "qdrantHelpStep2": "2. nvidia/llama-nemotron-embed-vl-1b-v2:free kullanıyorsanız koleksiyon boyutu olarak 2048 kullanın.", + "qdrantHelpStep3": "3. Model alanı: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Kaydedin, bağlantıyı test edin, ardından aramayı test edin.", + "qdrantEmbeddingQuickSelect": "Keşfedilen modellerden hızlı seçim yapın...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Biçim: provider/model. Sağlayıcı kimlik bilgileri yapılandırılmış olmalıdır.", + "qdrantApiKeyPlaceholderKeep": "(mevcut anahtarı korumak için boş bırakın)", + "qdrantApiKeyPlaceholderOptional": "(kullanılmıyorsa boş bırakın)", + "qdrantSaveHint": "İpucu: Ana makineyi/bağlantı noktasını/koleksiyonu/modeli düzenleyip Kaydet'e tıklayın. API anahtarı isteğe bağlıdır.", + "qdrantSearchTestTitle": "Arama testi", + "qdrantSearchTestDesc": "Gömme oluşturur ve Qdrant'ta arama yapar.", + "qdrantSearchPlaceholder": "Örnek: kullanıcı tercihleri, geçmiş vb.", + "qdrantNoResults": "Sonuç yok (veya Qdrant yapılandırılmamış).", + "qdrantCleanupTitle": "Saklama ve temizleme", + "qdrantCleanupDesc": "Süresi dolmuş ve eski noktaları şuna göre kaldırır:", + "searching": "Aranıyor...", + "cleaning": "Temizleniyor...", + "cleanNow": "Şimdi temizle", "optional": "İsteğe bağlı", "current": "Mevcut", "remove": "Kaldır", @@ -7600,19 +7603,19 @@ "resilienceScope": "Kapsam:", "resilienceTrigger": "Tetikleyici:", "resilienceEffect": "Etki:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "İstek Kuyruğu ve Hız", + "resilienceAutoEnableApiKeyProviders": "API anahtarı sağlayıcıları için otomatik etkinleştir", + "resilienceRequestsPerMinute": "Dakika başına istek", + "resilienceMinTimeBetweenRequests": "İstekler arasındaki minimum süre", + "resilienceConcurrentRequests": "Eşzamanlı istekler", + "resilienceConnectionScopeConcurrentRequests": "Bağlantı/kota kapsamı başına eşzamanlı istekler", + "resilienceGlobalConcurrentRequests": "Genel eşzamanlı yukarı akış istekleri (0 = devre dışı)", "resilienceMaxQueueWaitTime": "Maksimum kuyruk bekleme süresi", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Temel bekleme süresi", + "resilienceUseUpstreamRetryHints": "Yukarı akış yeniden deneme ipuçlarını kullan", + "resilienceDefaultPerProvider": "Varsayılan (sağlayıcı başına)", + "resilienceAlwaysOn": "Her zaman açık", + "resilienceAlwaysOff": "Her zaman kapalı", "routingRemoveEntry": "Girişi kaldır", "routingNeedlesSubstrings": "İğneler (eşleşecek alt dizeler)", "routingCaseSensitive": "Büyük/küçük harfe duyarlı", @@ -7669,7 +7672,7 @@ "routingAntigravitySignatureDesc": "OmniRoute'un yalnızca depolanan Gemini düşünce imzalarını mı yeniden kullanacağını yoksa Antigravity uyumlu araç çağırma akışlarında doğrulanmış istemci tarafından sağlanan imzaları mı kabul edeceğini kontrol edin.", "routingAntigravitySignatureEnabledLabel": "Etkin", "routingAntigravitySignatureEnabledDesc": "Mevcut davranış. İstemci tarafından sağlanan imzaları yoksayın ve depolanan OmniRoute akışını kullanmaya devam edin.", - "routingAntigravitySignatureBypassLabel": "Bypass", + "routingAntigravitySignatureBypassLabel": "Atla", "routingAntigravitySignatureBypassDesc": "Hafif bir doğrulamadan sonra istemci tarafından sağlanan imzaları kabul edin ve geçersiz olduğunda depolanan imzaya geri dönün.", "routingAntigravitySignatureBypassStrictLabel": "Sıkı Bypass", "routingAntigravitySignatureBypassStrictDesc": "İstemci tarafından sağlanan bir imzayı kabul etmeden önce tam protobuf doğrulaması gerektirin.", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "Ayıklanan açıklama orijinal isteğe geri eklenmeden önce görsel modeline gönderilir.", "visionBridgeTimeoutMs": "Zaman aşımı (ms)", "visionBridgeMaxImagesPerRequest": "İstek Başına Maksimum Görüntü", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Maksimum geri çekilme adımı", + "resilienceProviderBreakerTitle": "Sağlayıcı Başına Devre Kesici", + "resilienceFailureThreshold": "Hata eşiği", + "resilienceDegradationThreshold": "Bozulma eşiği", "resilienceResetTimeout": "Zaman aşımını sıfırla", "resilienceFailureThresholdLabel": "Arıza eşiği", "resilienceResetTimeoutLabel": "Zaman aşımını sıfırla", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Bağlantı Bekleme Süresi", "resilienceUseUpstreamRetryHintsLabel": "Yukarı akış yeniden deneme ipuçlarını kullanma", "resilienceUseUpstream429BreakerLabel": "Yukarı akış 429 ipucunu kullanın (kırıcı)", "resilienceMaxBackoffStepsLabel": "Maksimum geri çekilme adımları", "resilienceYes": "Evet", "resilienceNo": "Hayır", - "resilienceDefault": "Default", + "resilienceDefault": "Varsayılan", "storageDatabaseBackupRetention": "Veritabanı yedekleme saklama", "storageDatabaseBackups": "Veritabanı yedekleri", "storageBackupRetentionDescription": "Otomatik SQLite yedekleri şurada saklanır", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "Eski JSON başarıyla içe aktarıldı!", "jsonImportFailed": "JSON içe aktarılamadı", "jsonImportError": "JSON içe aktarma sırasında hata oluştu", + "jsonImportAuthRequired": "Eski bir JSON yapılandırmasını içe aktarmak için kimlik doğrulaması gereklidir. Lütfen önce oturum açın veya kurulumu tamamlayın.", + "databaseSettingsAuthRequiredTitle": "Kimlik doğrulaması gerekli", + "databaseSettingsAuthRequiredBody": "Veritabanı ayarları ve JSON içe aktarma yalnızca kimliği doğrulanmış bir yönetici tarafından kullanılabilir. Bunları görüntülemek ve düzenlemek için oturum açın veya kurulumu tamamlayın.", + "databaseSettingsAuthRequiredCta": "Oturum aç", "storagePurgeData": "Verileri Temizle", "storagePurgeDataDesc": "Saklama kontrollerini uygulamadan tüm kayıtları hemen silin. Dikkatli kullanın.", "storageRetentionCleanup": "Saklama Ayarları", @@ -7828,24 +7835,24 @@ "compressionDerivedMode": "mod: {mode}", "compressionAdaptiveOff": "Uyarlanabilir bağlam bütçesi: kapalı (eski otomatik tetikleyici)", "compressionAdaptiveTarget": "Uyarlanabilir ({mode}, politika: {policy}) — hedef ≈ {target, number} token ({contextLimit, number} tokenlık bir pencere için)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Uyarlanabilir bağlam bütçesi", + "compressionAdaptiveModeOff": "Kapalı (eski otomatik tetikleme)", + "compressionAdaptiveModeFloor": "Alt sınır (her zaman sığmasını garanti et)", + "compressionAdaptiveModeReplace": "Otomatik tetiklemeyi değiştir", + "compressionAdaptivePolicy": "Bütçe politikası", + "compressionAdaptivePolicyReserve": "Çıktı için ayır", + "compressionAdaptivePolicyPercentage": "Pencere yüzdesi", + "compressionAdaptivePolicyAbsolute": "Mutlak belirteç bütçesi", "compressionOutputStylesDescription": "Sağlayıcı çıktısını yeniden yazmadan yanıt şekillendirme talimatları ekleyin. Serbestçe birleştirin.", "mcpAccessibilityDescription": "MCP araç çıktılarını kapsama alır (ayrı depo).", "compressionStylesTileSummary": "{tokens, number} token tasarruf edildi · {runs, plural, one {# çalıştırma stillendirildi} other {# çalıştırma stillendirildi}}", "compressionStylesTileEmpty": "Henüz stillendirilmiş çalıştırma yok.", "compressionLevel": { - "minimal": "Minimal", + "minimal": "Asgari", "standard": "Standart", "aggressive": "Agresif", - "lite": "Lite", - "full": "Full", + "lite": "Hafif", + "full": "Tam", "ultra": "Ultra" }, "compressionEngine": { @@ -7866,8 +7873,8 @@ "description": "Komut çıktısı filtreleme." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses Araç Çıktısı", + "description": "Desteklenen Responses araç çıktıları için ölçülü sıkıştırma." }, "headroom": { "label": "Pay", @@ -7878,7 +7885,7 @@ "description": "Son kullanıcı sorgusuna göre çıkarımsal cümle puanlaması." }, "caveman": { - "label": "Caveman", + "label": "Mağara Adamı", "description": "Kural tabanlı düz yazı sıkıştırma." }, "aggressive": { @@ -7908,12 +7915,12 @@ "description": "YAGNI merdiveni: çalışan en küçük değişiklik, talep edilmeyen soyutlamalar yok." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "At Kuyruğu (tembel kıdemli geliştirici)", + "description": "Tembel kıdemli geliştirici disiplini: YAGNI merdivenini tırman, kök nedeni düzelt, çalışan en küçük değişikliği yap." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "DEHB'im var (önce eylem)", + "description": "Önce eylem odaklı çıktı: ilk olarak sonraki eylem, numaralandırılmış adımlar, tek bir somut sonraki adım, giriş yok." }, "terse-cjk": { "label": "Kısa ve öz CJK (文言)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI Geri Dönüşü", "cliproxyapiEnableFallback": "CLIProxyAPI Geri Dönüşünü Etkinleştir", "cliproxyapiUrl": "CLIProxyAPI URL'si", + "headroomProxyTitle": "Headroom proxy'si", + "headroomProxyDesc": "İsteğe bağlı Headroom token tasarrufu proxy'sinin URL'si. Boş bırakılırsa HEADROOM_URL veya http://localhost:8787 kullanılır.", + "headroomProxyUrl": "Headroom URL'si", + "headroomProxyUrlHint": "Geri döngü URL'leri bu sayfadan başlatılabilir. Harici URL'ler yalnızca yoklanır.", + "headroomProxySave": "Kaydet", + "headroomProxyStart": "Başlat", + "headroomProxyStop": "Durdur", + "headroomProxyExternalHint": "Bu URL geri döngü adresi değil, dolayısıyla OmniRoute yerel CLI'yi başlatmayacak.", "cliproxyapiStatus": "CLIProxyAPI Durumu", "cliproxyapiNotDetected": "Algılanmadı", "cliproxyapiImportAuthTitle": "Hesapları CLIProxyAPI'den aktar", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "OpenAI Codex istekleri için global olarak service_tier=priority'yi enjekte edin.", "codexFastTierHint": "Etkinleştirildiğinde OmniRoute, halihazırda bir katman belirtmemiş bağlantılar için giden Codex isteklerine service_tier=priority ekler. Öncelik katmanı, bir OpenAI Enterprise API anahtarı veya ChatGPT-auth Codex yolunu gerektirir; diğer anahtar türleri OpenAI'den katmanla ilgili bir hata alacaktır. Codex sağlayıcı sayfasındaki bağlantı başına ayarlar önceliklidir.", "codexFastTierSaveError": "Codex Hızlı Katman ayarı güncellenemedi", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex Kota Otomatik Pingi", + "codexAutoPingDesc": "Bağlantı başına isteğe bağlıdır: Bir Codex oturum penceresi sıfırlandıktan hemen sonra küçük bir istek gönderir; böylece ihtiyacınız olduğunda soğuk durumda olmaz.", + "codexAutoPingWarning": "Her pingde az miktarda gerçek Codex kotası tüketir. Varsayılan olarak kapalıdır — yalnızca etkin olarak güvendiğiniz bağlantılar için etkinleştirin.", + "codexAutoPingSaveError": "Codex Otomatik Ping ayarı güncellenemedi", + "codexAutoPingToggleAria": "{connection} için Codex kota otomatik pingini aç veya kapat", "codexFastTierTierLabel": "Hizmet katmanı", "codexFastTierTierPriority": "Öncelik", "codexFastTierTierFlex": "Flex", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "Bekleme süresinin artması durmadan önceki maksimum geri çekilme adımı sayısı. Çoğu yapılandırmada önce Maksimum Bekleme Süresi sınırına ulaşılır, bu da bunu Maksimum Bekleme Süresi yükseltildiğinde bir güvenlik tavanı haline getirir.", "disableSessionStickiness": "Oturum yapışkanlığını devre dışı bırak", "disableSessionStickinessDesc": "Round-robin ve rastgele kombinasyonlar, tüm bir konuşmayı ilk mesaj karmasıyla tek bir bağlantıya sabitlemek yerine her istekte farklı bir bağlantıya döner. Çok turlu sohbetlerde prompt-cache isabetlerini korumak için kapalı bırakın. Kombinasyon bazlı geçersiz kılmalar önceliklidir.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "İstem önbelleği yerelliğine göre yönlendirme", + "promptCacheAffinityDesc": "Sağlık ve kota yük devretmesini korurken eşleşen istem önbelleği anahtarları için aynı sağlayıcı hesabını tercih et.", + "reasoningTokenBuffer": "Akıl yürütme token tamponu", + "reasoningTokenBufferDesc": "Kombine yönlendirmenin yalnızca bilinen akıl yürütme modelleri için ve tam tampon bilinen bir çıktı sınırına sığdığında max_tokens ek payı eklemesine izin ver.", + "zeroLatencyOptimizations": "Sıfır gecikme optimizasyonları", + "zeroLatencyOptimizationsDesc": "Hedging, öngörülü TTFT atlamaları ve proaktif geri dönüş sıkıştırmasını etkinleştirin. Bu gecikme özelliklerinin hedeflerle yarışmasını veya geri dönüş isteklerini sıkıştırmasını önlemek için kapalı bırakın.", "credentialRedaction": "Kimlik Bilgisi Karartma", "credentialRedactionDesc": "Sağlayıcılara gönderilen bağlamdan ve yanıtlardan API anahtarlarını, belirteçleri ve sırları karartın.", "enableCredentialRedaction": "Kimlik bilgisi karartmayı etkinleştir", "enableCredentialRedactionDesc": "Mesajlardan, araç çağrılarından ve yanıtlardan API anahtarlarını, belirteçleri, özel anahtarları ve JWT'leri temizler.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Otomatik Eşitleme Devre Dışı", + "pricingAutoSyncEnabled": "Otomatik Eşitleme Etkin", "modalityBridgeIntro": "Çok modlu içeriği yalnızca metin işleyen modellere ulaşmadan önce metne dönüştürün. Görüntü, ses ve video köprüleri kullanılabilir ve yapılandırılabilir.", "modalityBridgeVisionTab": "Görüş", "modalityBridgeAudioTab": "Ses", @@ -8362,35 +8377,27 @@ "cliproxyapiUnknown": "Bilinmiyor", "cliproxyapiVersion": "Sürüm", "cliproxyapiHealth": "Sağlık", - "cliproxyapiPort": "Port", + "cliproxyapiPort": "Bağlantı Noktası", "qdrantHost": "Ana Bilgisayar", - "qdrantCollection": "Koleksiyon", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Koleksiyon" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", + "title": "RTK Motoru", + "description": "Araç çıktıları, terminal günlükleri ve derleme sonuçları için komutları algılayan sıkıştırma.", + "enabled": "Etkin", + "intensity": "Yoğunluk", "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "intensityStandard": "Standart", + "intensityAggressive": "Agresif", + "toolResults": "Araç sonuçları", + "assistantMessages": "Asistan mesajları", + "codeBlocks": "Kod blokları", "filterCatalog": "Kataloğu Filtrele", "filterCatalogDesc": "Kategoriye göre mevcut çıkış filtreleri", "guidedConfig": "Yapılandırma", "guidedConfigDesc": "RTK'nın terminal çıkışınızı nasıl filtreleyeceğini ayarlayın", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "Maksimum satır", + "maxChars": "Maksimum karakter", "deduplicateThreshold": "Tekilleştirme eşiği", "customFilters": "Özel filtreler", "detectedType": "Algılanan tür", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "Başarısızlıklar", "rawOutputAlways": "Her zaman", "rawOutputMaxBytes": "Ham çıktı maksimum bayt sayısı", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "Filtre Testi", + "pasteOutput": "Filtrelemeyi test etmek için araç çıktısını yapıştırın...", "presetHigh": "Agresif", "presetLow": "Işık", "presetMaxChars": "Maksimum çıktı karakterleri", "presetMaxLines": "Maksimum çıkış hatları", "presetMedium": "Standart", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "Çalıştır", + "result": "Sonuç", + "previewEmpty": "RTK çıktısını önizlemek için bir örnek çalıştırın.", + "detected": "Algılanan", "masterSwitchOffAlert": "Token Saver ana şalteri KAPALI — Endpoint sayfasından açana kadar bu ayarlar istekleri etkilemeyecektir.", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "Filtrelenen tokenlar", + "filtersActive": "Etkin filtreler", + "requests": "İstekler", + "avgSavings": "Ortalama tasarruf", "simpleMode": "Basit", "advancedMode": "Gelişmiş", "searchFilters": "Arama filtreleri...", @@ -8433,7 +8440,7 @@ "discoverSamples": "{count} örnek tarandı", "discoverHits": "Örnekler genelinde {hits}×", "learnHeading": "Bir komut için filtre öğren", - "learnCommandPlaceholder": "e.g. npm install", + "learnCommandPlaceholder": "örn. npm install", "learnButton": "Filtre öner", "learnEmpty": "Henüz öneri yok. Çalıştırdığınız bir komutu yazın ve tarayın.", "learnSamplesUsed": "Eşleşen {count} örnekten öğrenildi", @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "Sıkıştırma Kombinasyonları", + "description": "Farklı yönlendirme senaryoları için motorların nasıl birleştirileceğini tanımlayın.", + "createCombo": "Sıkıştırma Kombinasyonu Oluştur", + "editCombo": "Düzenle", + "deleteCombo": "Sil", + "deleteConfirm": "Bu sıkıştırma kombinasyonu silinsin mi?", + "pipeline": "İşlem Hattı", + "addStep": "Adım Ekle", + "removeStep": "Kaldır", + "name": "Ad", + "descriptionField": "Açıklama", + "languagePacks": "Dil Paketleri", + "outputMode": "Çıktı Modu", + "assignToRouting": "Yönlendirme Kombinasyonlarına Ata", + "noAssignments": "Kullanılabilir yönlendirme kombinasyonu yok", + "default": "Varsayılan", + "setAsDefault": "Varsayılan Olarak Ayarla", + "save": "Kaydet", + "cancel": "İptal", + "enabled": "Etkin", "loading": "Yükleniyor…", "hubTitle": "Sıkıştırma Merkezi", "hubDescription": "Küresel olarak hangi sıkıştırma profilinin çalışacağını seçin.", @@ -8661,22 +8668,22 @@ "contextEditingNote": "Şu anda yalnızca Claude (Anthropic) için kullanılabilir. Devredilmiş bir moddur: sağlayıcı eski araç kullanımı bloklarını sunucu tarafında temizler — mesajı yeniden yazmayız. Diğer sağlayıcıları etkilemez.", "namedCombos": "Adlandırılmış kombinasyonlar", "namedCombosDescription": "Farklı boru hatlarını kaydedin ve bunları belirli yönlendirme kombinasyonlarına atayın.", + "activeProfileMasterSwitchOffWarning": "Aşağıdaki etkin profil, ana \"İstem Sıkıştırma\" anahtarı açılana kadar çalışmaz.", + "activeProfileMasterSwitchOffCta": "Ayarlardan açın", "comboNamePlaceholder": "Kombinasyon adı", "descriptionPlaceholder": "Açıklama", "nameRequired": "Kaydetmeden önce bir kombinasyon adı girin.", "pipelineRequired": "Kaydetmeden önce en az bir boru hattı adımı ekleyin.", "saveComboFailed": "Kombinasyon kaydedilemedi (HTTP {status}).", "deleteNamedConfirm": "“{name}” kombinasyonu silinsin mi?", - "intensityLite": "Lite", + "intensityLite": "Hafif", "intensityFull": "Tam", "intensityUltra": "Ultra", "active": "Etkin", "languagePacksList": "Dil paketleri: {packs}", "dragToReorder": "Adımı yeniden sıralamak için sürükleyin", "engine": "Motor", - "intensity": "Yoğunluk", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Yoğunluk" }, "compressionStudio": { "noRun": "Kullanılabilir sıkıştırma çalışması yok.", @@ -8705,7 +8712,7 @@ "run": "Çalıştır", "laneRejected": "reddedildi: {reason}", "error": "hata", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Birleşik işlem hattı önizlemesi başarısız oldu: {reason}", "combinedFlow": "Birleşik akış", "eachLayer": "Her katman ayrı ayrı", "diff": "Fark", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Motoru etkinleştir", "enableDescription": "Yığında en son çalışır (RTK/Caveman metni temizledikten sonra OmniGlyph geri kalanını görüntülere dönüştürür) ve ayrıca omniglyph modu aracılığıyla bağımsız olarak çalışır. Bu bir önizlemedir ve uçtan uca doğrulama tamamlanana kadar varsayılan olarak kapalı kalır.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Sıkıştırma profili", + "profileDescription": "Profil bir alt sınır değil, üst sınırdır: Daha katı bir profil, adım bazında geçersiz kılma ile yeniden gevşetilemez. Bu kod tabanında yapılan ölçümlere göre: Kodlama güvenli veya dengeli profilde, henüz geçmiş biriktirmemiş bir oturum hiçbir şeyi sıkıştırmaz; çünkü her ikisi de minimum karakter eşiğini yükseltir ve sistem istemini, araç şemalarını ve araç sonuçlarını özgün hâliyle korur.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Agresif (varsayılan)", + "description": "Yayımlanan makbuzların ölçtüğü politika. Sistem istemini, araç belgelerini ve yoğun geçmişi görüntüler." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Dengeli", + "description": "Canlı durumu özgün hâliyle korur ve son 8 etkileşimi muhafaza eder; yalnızca daha eski, kapanmış geçmişi daraltır." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Kodlama güvenli", + "description": "Yetkilendirmeyi, araç şemalarını ve canlı araç çıktısını özgün hâliyle koruyarak son 12 etkileşimi muhafaza eder. Oturum geçmiş biriktirene kadar hiçbir şeyi sıkıştırmaz." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Doğrudan aktarım", + "description": "Dönüştürmeden yönlendirir. Motor atlanır ve istek değiştirilmeden iletilir." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph sıkıştırma profilini seçin", "saved": "Kaydedildi.", "saveFailed": "Kaydedilemedi.", "enableAria": "OmniGlyph motorunu etkinleştir", @@ -8816,7 +8823,7 @@ "stateError": "Hata", "stateNotInstalled": "Yüklü değil", "stateUnknown": "Bilinmiyor", - "port": "port {port}", + "port": "{port} numaralı bağlantı noktası", "externalBadge": "Harici olarak yönetiliyor", "externalTitle": "Harici 9Router algılandı", "externalDescription": "OmniRoute, {host}:{port} adresinde 9Router buldu. Yaşam döngüsü, günlükleri, güncellemeleri ve servis anahtarı harici kurulum tarafından yönetilmeye devam eder.", @@ -8851,7 +8858,7 @@ "install9RouterDescription": "9Router'ı npm aracılığıyla indirir ve kurar. Yaklaşık 500 MB disk alanı gerektirir.", "version": "Sürüm", "versionHint": "“latest” veya belirli bir sürüm girin (örneğin, 1.2.3).", - "servicePort": "Port", + "servicePort": "Bağlantı Noktası", "servicePortHint": "OmniRoute ve 9Router farklı portlar kullanmalıdır. Varsayılan 9Router portu 20130'dur.", "installationFailed": "Kurulum başarısız oldu (HTTP {status})", "installationSucceeded": "9Router başarıyla kuruldu. Başlatılıyor…", @@ -8901,38 +8908,38 @@ "save": "Kaydet" }, "contextCaveman": { - "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "title": "Caveman Motoru", + "description": "Kural tabanlı mesaj sıkıştırma, dil paketleri, analizler ve çıktı modu denetimleri.", "advancedConfig": "Gelişmiş Yapılandırma", "advancedConfigDesc": "Sıkıştırma davranışında ince ayar yapın", "aggressiveSettings": "Agresif Ayarlar", "aggressiveSettingsDesc": "Potansiyel kalite ödünleşimleriyle maksimum sıkıştırma", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "İstekler", + "tokensSaved": "Tasarruf edilen tokenlar", + "savingsPercent": "Tasarruf %", + "avgLatency": "Ort. gecikme", + "languagePacks": "Dil Paketleri", + "languagePacksDesc": "Belirli diller için sıkıştırma kurallarını etkinleştirin.", "labelAutoTrigger": "Bağlam aşıldığında otomatik sıkıştır", "labelCompressionRate": "Sıkıştırma gücü", "labelMaxTokens": "Mesaj başına belirteçleri hedefleyin", "labelMinLength": "Minimum mesaj uzunluğu", "labelMinSavings": "Kaydedilecek minimum belirteçler", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Etkin", + "autoDetect": "Dili otomatik algıla", + "rulesCount": "{count} kural", "inputCompressionTitle": "Girdi sıkıştırma", "inputCompressionDesc": "Sohbet geçmişini daha kısa ifadelerle yeniden yazar. Girdi token'larını ~%50 oranında azaltır.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Sıkıştırma Analitiği", + "noAnalytics": "Henüz sıkıştırma analitiği yok.", "masterDisabledWarning": "Token Saver ana anahtarı KAPALI — Sıkıştırma Ayarları'ndan açana veya buradan değiştirene kadar bu ayarlar istekleri etkilemeyecektir.", "outputMode": "Çıkış Modu", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Çıktı Modu", "quickSettings": "Hızlı Ayarlar", "quickSettingsDesc": "Başlamak için temel sıkıştırma ayarları", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Otomatik Netlik Baypası", + "bypassConditions": "Baypas koşulları", "bypassConditionsList": "güvenlik, geri döndürülemez, açıklama, düzene duyarlı", "simpleMode": "Basit", "advancedMode": "Gelişmiş", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ultra Ayarlar", "ultraSettingsDesc": "SLM destekli anlamsal sıkıştırma", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Kısa yanıt ver. Teknik terimleri, kodu, hataları, URL'leri ve tanımlayıcıları koru.", + "full": "Kısa ve öz yanıt ver. Tüm teknik içeriği koru.", + "ultra": "Yaygın teknik kısaltmalarla son derece kısa yanıt ver. Sembolleri aynen koru." } }, "translator": { @@ -9181,7 +9188,7 @@ "conceptHeadline": "Uygulamanız bir API'nin \"dilini\" konuşur. Çevirici, başka bir sağlayıcıyı kullanması için bunu dönüştürür.", "conceptDiagramAppLabel": "Uygulamanız", "conceptDiagramSourceLabel": "Kaynak formatı", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (merkez)", "conceptDiagramTargetLabel": "Hedef sağlayıcı", "conceptDiagramExampleApp": "ör. Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "Bir JSON isteği yapıştırın; biçim otomatik olarak algılanır.", "advancedPipelineTitle": "OpenAI ara işlem hattı", "advancedPipelineSubtitle": "Her çeviri adımını görselleştirin (hub-and-spoke).", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "Akış Dönüştürücü (Chat → Responses SSE)", "advancedStreamTransformSubtitle": "Chat Completions SSE'yi Responses API'ye dönüştürür.", "advancedTestBenchTitle": "Test Tezgahı (8 senaryo)", "advancedTestBenchSubtitle": "Tüm senaryoları çalıştırır ve başarılı/başarısız durumunu + uyumluluk yüzdesini raporlar.", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Kalan", "kiloPassRenews": "{count} gün içinde yenilenir", "kiloPassUsageLabel": "Bu ayın kullanımı", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Ek Kullanım Kredileri", + "kimiExtraUsage": "Ek Kullanım", + "kimiExtraUsageEnabled": "Etkin", + "kimiExtraUsageDisabled": "Devre Dışı", + "kimiExtraUsageFrozen": "Dondurulmuş", + "kimiExtraUsageUnavailable": "Kullanılamıyor", + "kimiMonthlyUsed": "Bu ay kullanılan", + "kimiMonthlyLimit": "Aylık limit", + "kimiMonthlyLimitUnlimited": "Sınırsız", + "kimiAdditionalCredits": "Ek Krediler", "loggerTab": "Günlükler", "proxyTab": "Proxy", "budgetManagement": "Bütçe Yönetimi", @@ -9336,7 +9343,7 @@ "evaluateStepDescription": "Yanıtlar beklenen ölçütlerle karşılaştırılır. Her senaryonun başarılı/başarısız sonucu, gecikme metrikleri ve ayrıntılı geri bildirimle gösterilir.", "evalsStrategyContainsLabel": "İçerir", "evalsStrategyExactLabel": "Tam Eşleşme", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Düzenli İfade", "evalsStrategyCustomLabel": "Özel Mantık", "evalsStrategyContainsDescription": "LLM çıktısının beklenen alt dizeyi içerip içermediğini kontrol eder.", "evalsStrategyExactDescription": "LLM çıktısının beklenen değerle tam olarak eşleşip eşleşmediğini kontrol eder.", @@ -9373,7 +9380,7 @@ "runAllSuites": "Tümünü Çalıştır", "runAllRunning": "Hepsini çalıştırıyorum...", "runAllProgress": "{current}/{total} çalıştırılıyor: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# paket başarısız oldu} other {# paket başarısız oldu}}", "runAllCompleted": "{suites} paketlerini çalıştırdı — {passed} başarılı oldu, {failed} başarısız oldu", "runAllCompletedWithFailures": "{completed} süit çalıştırdı; {failedSuites} tamamlanamadı", "runningProgress": "Çalışıyor {current}/{total}...", @@ -9436,7 +9443,7 @@ "quotaVisibilityUpdateFailed": "Kota görünürlüğü güncellenemedi", "account": "Hesap", "modelQuotas": "Model Kotaları", - "lastUsed": "Last Refreshed", + "lastUsed": "Son Yenileme", "actions": "Eylemler", "refreshQuota": "Kotayı yenile", "today": "Bugün", @@ -9465,7 +9472,7 @@ "tierPro": "Profesyonel", "tierPlus": "Artı", "tierFree": "Ücretsiz", - "tierLite": "Lite", + "tierLite": "Hafif", "tierUnknown": "Bilinmiyor", "statTotal": "Toplam", "statCritical": "Kritik", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Krediyi kullan", "resetCreditRedeemed": "Sıfırlama kullanıldı", "resetCreditRedeemFailed": "Sıfırlama kredisi kullanılamadı", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Paket kaydedilemedi", "clone": "Klon", "exportSuite": "İhracat", "importSuite": "İthalat", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Geçersiz değerlendirme paketi JSON", "suiteBuilderCloneSuffix": "kopyala", "suiteBuilderImportedSuite": "İçe Aktarılan Paket", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", + "scorecardTitle": "Puan Kartı", + "evalApiKey": "API Anahtarı", + "scorecardPassRate": "Başarı Oranı", "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "actualOutputLabel": "Gerçek Çıktı", + "evalTargetHint": "Değerlendirmek için bir model veya kombinasyon seçin.", + "suiteBuilderDeleted": "Paket başarıyla silindi", + "suiteBuilderCaseCardHint": "Girdi istemini ve beklenen çıktı ölçütlerini tanımlayın.", + "nextResetUtc": "Sonraki sıfırlama (UTC)", + "scorecardHint": "Tüm değerlendirme paketlerindeki toplu başarı oranları.", + "suiteLatestRunsHint": "Bu paket için en son değerlendirme çalıştırmaları.", + "saving": "Kaydediliyor", + "suiteBuilderCaseModelLabel": "Model (isteğe bağlı)", + "evalControlsTitle": "Değerlendirme Kontrolleri", + "suiteBuilderEditTitle": "Değerlendirme Paketini Düzenle", + "suiteBuilderCaseStrategyLabel": "Doğrulama Stratejisi", + "notifySelectDifferentCompareTarget": "Lütfen karşılaştırma için farklı bir hedef seçin", + "recentRunsHint": "En son değerlendirme çalıştırmaları gösteriliyor. Ayrıntılı sonuçları görmek için bir çalıştırmaya tıklayın.", + "evalCompareHint": "İsteğe bağlı olarak sonuçları ikinci bir hedefle karşılaştırın.", + "suiteBuilderCaseInvalid": "Bu senaryoda doğrulama hataları var. Lütfen kaydetmeden önce bunları düzeltin.", + "historyEmpty": "Henüz değerlendirme geçmişi yok", + "suiteBuilderUpdated": "Paket başarıyla güncellendi", + "resetInterval": "Sıfırlama Aralığı", + "suiteBuilderCreateTitle": "Değerlendirme Paketi Oluştur", + "activePeriodSpend": "Etkin Dönem Harcaması", + "evalApiKeyHint": "Değerlendirme istekleri için kullanılacak API anahtarını seçin.", + "evalCompareOptional": "Karşılaştır (isteğe bağlı)", + "suiteBuilderDeleteFailed": "Paket silinemedi", + "suiteBuilderCaseSystemPromptPlaceholder": "İsteğe bağlı sistem talimatları...", + "scorecardCases": "Senaryolar", + "runCompletedWithScore": "Değerlendirme tamamlandı — %{score} başarı oranı", + "suiteBuilderCustomBadge": "Özel", + "targetSuiteDefaults": "Paket varsayılanları", + "suiteBuilderDeleteConfirm": "Bu paketi silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "suiteBuilderNameLabel": "Paket Adı", + "scorecardSuites": "Paketler", + "evalCompareTarget": "Karşılaştırma Hedefi", + "suiteBuilderCaseModelPlaceholder": "örn. gpt-4o-mini", + "evalControlsHint": "Değerlendirme hedefinizi ve API anahtarınızı yapılandırın, ardından model kalitesini doğrulamak için paketleri çalıştırın.", + "recentRunsTitle": "Son Çalıştırmalar", + "suiteBuilderCaseSystemPromptLabel": "Sistem İstemi", + "suiteBuilderCaseExpectedPlaceholder": "örn. def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "örneğin def fibonacci", "suiteBuilderCaseExpectedPlaceholderExact": "Beklenen yanıtı tam olarak yapıştırın", "suiteBuilderCaseExpectedPlaceholderRegex": "örneğin ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Eğik çizgileri kaydırmadan bir JavaScript normal ifadesi kullanın.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "örn. Kodlama Kalitesi Paketi", + "suiteBuilderAddCase": "Senaryo Ekle", + "cancel": "İptal", + "evalTarget": "Hedef", + "suiteBuilderCaseNameLabel": "Senaryo Adı", + "weeklyLimitUsd": "Haftalık Limit (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "örn. Python'da bir fibonacci fonksiyonu yaz", + "suiteBuilderNameRequired": "Paket adı gereklidir", + "suiteBuilderCaseUserPromptLabel": "Kullanıcı İstemi", + "daily": "Günlük", + "resultErrorLabel": "Hata", + "suiteBuilderBuiltInBadge": "Yerleşik", + "suiteBuilderCaseCardTitle": "Test Senaryosu", "suiteBuilderDuplicateCase": "Çoğalt", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "örn. 50.00", + "suiteBuilderCaseTagsHint": "Test senaryolarını düzenlemek için virgülle ayrılmış etiketler.", + "notifyEvalRunFailedWithReason": "Değerlendirme başarısız oldu: {reason}", + "weekly": "Haftalık", + "runEvalRunning": "Değerlendirme çalıştırılıyor...", + "delete": "Sil", + "resetTimeUtc": "Sıfırlama Zamanı (UTC)", + "evalApiKeyAuto": "Otomatik (varsayılanı kullan)", + "suiteBuilderDescriptionPlaceholder": "Bu paketin neyi test ettiğine ilişkin isteğe bağlı açıklama...", + "targetComparisonTitle": "Hedef Karşılaştırma", + "save": "Kaydet", + "suiteBuilderCreated": "Paket başarıyla oluşturuldu", + "suiteLatestRuns": "Son Çalıştırmalar", + "suiteBuilderCaseExpectedLabel": "Beklenen Değer", + "historyLatency": "Gecikme", + "suiteBuilderCaseTagsPlaceholder": "örn. kodlama, python", + "targetTypeCombo": "Kombinasyon", + "scorecardPassed": "Başarılı", + "suiteBuilderCaseTagsLabel": "Etiketler", + "suiteBuilderNewSuite": "Yeni Paket", + "notifyEvalLoadFailed": "Değerlendirme verileri yüklenemedi", + "notConfigured": "Yapılandırılmadı", + "suiteBuilderCaseNamePlaceholder": "örn. Python fibonacci testi", + "intervalLabel": "Aralık", + "suiteBuilderCreateAction": "Paket Oluştur", + "suiteBuilderCasesHint": "Her senaryo bir istem gönderir ve yanıtı doğrular.", + "suiteBuilderUpdatedAt": "Güncellendi", + "errorBadge": "Hata", + "suiteBuilderCasesTitle": "Test Senaryoları", + "edit": "Düzenle", + "monthly": "Aylık", + "suiteBuilderCasesRequired": "En az bir test senaryosu gereklidir", + "weeklyLimitSummary": "Haftalık bütçe sınırı özeti", + "suiteBuilderDescriptionLabel": "Açıklama", + "targetComparisonHint": "Hedefler arasındaki değerlendirme sonuçlarının yan yana karşılaştırması.", + "compareCompletedWithScore": "Karşılaştırma tamamlandı — %{score} başarı oranı", + "staleQuotaTooltip": "Son yenileme başarısız oldu — önbelleğe alınmış veriler gösteriliyor", "quotaThresholdLabel": "Dakika kaldı", "quotaCutoffsColumnHelp": "Kalan kota bu yüzdeye veya altına düştüğünde istekleri durdurun.", "quotaCutoffsButtonDefault": "Varsayılan", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Sistem metrikleri", "memory": "Hafıza", - "memoryShort": "mem", + "memoryShort": "bellek", "uptime": "Çalışma Süresi", "ariaLabel": "Sistem izleme", "title": "Sistem İzleyici", @@ -9864,7 +9871,7 @@ "forgotPassword": "Şifrenizi mi unuttunuz?", "continueWithOidc": "OIDC ile devam et", "defaultPasswordHint": "Varsayılan şifre: CHANGEME (INITIAL_PASSWORD ayarlanmadığı sürece)", - "Authorization": "Authorization", + "Authorization": "Yetkilendirme", "Content-Disposition": "Content-Disposition", "waitingForAuthorization": "Yetkilendirme bekleniyor...", "waitingForGoogleAuthorization": "Google yetkilendirmesi bekleniyor...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Antigravity yetkilendirmesi bekleniyor...", "waitingForQoderAuthorization": "Qoder yetkilendirmesi bekleniyor...", "exchangingCodeForTokens": "Kod jetonlarla değiştiriliyor...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Uyumsuz Node.js Sürümü", + "nodeIncompatibleDesc": "Kullandığınız Node.js {version} sürümü, OmniRoute'un desteklenen güvenli çalışma zamanı politikasının dışındadır. Yama uygulanmış bir Node.js 20.x veya 22.x LTS sürümü kullanın.", + "nodeIncompatibleFixLabel": "Düzeltme: Yama uygulanmış bir Node.js 22 LTS sürümü yükleyin", + "nodeIncompatibleHint": "OmniRoute, Node.js 22.22.2+ (22.x LTS) veya 24.0.0+ (24.x LTS) gerektirir. Node 24 LTS önerilir.", "resetViaAppDataTitle": "Uygulama Verileri ile Sıfırla", "resetViaAppDataDescription": "Şifrenizi sıfırlamak için ayar dosyasını uygulama veri dizininden silin:", "quitDesktopApp": "OmniRoute masaüstü uygulamasını tamamen kapatın", @@ -10075,7 +10082,7 @@ "deployPwaTitle": "PWA", "deployPwaText": "OmniRoute'u Android, iOS ve masaüstü tarayıcılara Progresif Web Uygulaması olarak yükleyin.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "OmniRoute'u Termux aracılığıyla Android'de başsız olarak çalıştırın. Kontrol paneline mobil tarayıcınızdan erişin.", "featureRoutingTitle": "Çoklu Sağlayıcı Yönlendirme", "featureRoutingText": "İstekleri tek bir OpenAI uyumlu uç nokta üzerinden 30+ AI sağlayıcısına yönlendirin. Chat, Responses, ses ve görsel API'lerini destekler.", "featureCombosTitle": "Kombinasyonlar ve Dengeleme", @@ -10094,7 +10101,7 @@ "featureCloudSyncText": "Şifrelenmiş kimlik bilgileri ve otomatik yük devretme ile uzaktan erişim için yapılandırmanızı Cloudflare Workers ile senkronize edin.", "providersAcrossConnectionTypes": "Üç bağlantı türünde toplam {count} sağlayıcı.", "manageProviders": "Sağlayıcıları Yönet", - "providersCount": "{count} providers", + "providersCount": "{count} sağlayıcı", "providerTypeFree": "Ücretsiz Katman", "providerTypeOAuth": "OAuth", "providerTypeApiKey": "API Anahtarı", @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Önbellek Yönetimi", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Yenile", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Bellek Kayıtları", + "memoryEntriesSub": "Bellek içi LRU", + "dbEntries": "Veritabanı Kayıtları", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Önbellek İsabetleri", + "cacheHitsSub": "toplam {total} içinden", + "tokensSaved": "Tasarruf Edilen Token'lar", + "tokensSavedSub": "İsabetlere göre tahmin", + "hitRate": "İsabet Oranı", + "performance": "Önbellek Performansı", + "autoRefresh": "Her {seconds} sn.de bir otomatik yenilenir", + "hits": "İsabetler", + "misses": "Iskalar", + "total": "Toplam", + "behavior": "Önbellek Davranışı", + "behaviorDeterministic": "Yalnızca temperature=0 olan akışsız istekler önbelleğe alınır.", + "behaviorBypass": "{header} üst bilgisiyle atlayın.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "Varsayılan TTL: 30 dakika. {envVar} aracılığıyla yapılandırın.", + "idempotency": "İdempotans Katmanı", + "activeDedupKeys": "Etkin Tekilleştirme Anahtarları", + "dedupWindow": "Tekilleştirme Aralığı", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Önbellek temizlenemedi.", + "unavailable": "Önbellek kullanılamıyor", + "unavailableDesc": "Önbellek istatistikleri alınamadı. Sunucunun çalıştığından emin olun.", "loadingCacheAria": "Önbellek yükleniyor", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "İstem Önbelleği (Sağlayıcı Tarafında)", + "semanticCache": "Anlamsal Önbellek", + "promptCacheSectionDesc": "Önbellek denetiminin nerede etkin olduğunu ve girdilerin ne kadar yeniden kullanıldığını görebilmeniz için kullanım geçmişindeki sağlayıcı taraflı istem önbelleğe alma etkinliğini gösterir.", + "promptTrendDesc": "Son 24 saatteki saatlik istek hacmi, önbellek kapsamı ve önbellekten okuma hacmi.", + "cachedRequests": "Önbelleğe Alınmış İstekler", + "cachedRequests24h": "Önbelleğe Alınmış İstekler (24 sa.)", + "cacheHitRate": "Önbellek İsabet Oranı", + "cacheRate": "Önbellek Oranı", + "cacheRateDesc": "toplam isteklerin", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "İstem Önbelleği Metrikleri", + "withCacheControl": "Önbellek Denetimli", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Önbelleği Yeniden Kullanma Oranı", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Tahm. Maliyet Tasarrufu", + "lastUpdated": "Son güncelleme", + "hoursTracked": "saat izlendi", + "busiestHour": "En Yoğun Saat", + "peakCacheRate": "En Yüksek Önbellek Oranı", + "trendHour": "Saat", + "activityVolume": "Etkinlik", + "requestsShort": "istek", + "inputShort": "Girdi", + "cachedShort": "Önbellekte", + "writeShort": "Yazma", + "resetting": "Sıfırlanıyor...", + "resetMetrics": "Metrikleri Sıfırla", + "byProvider": "Sağlayıcıya Göre Dağılım", + "providerCacheRateDesc": "Her sağlayıcı; yeniden kullanım oranını ham toplamlarla doğrulayabilmeniz için toplam girdi belirteçlerini, önbellekten okunan belirteçleri ve önbelleğe yazılan belirteçleri gösterir.", "provider": "Provider", - "requests": "Requests", + "requests": "İstekler", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Önbellek Eğilimi (24 sa.)", + "peakCached": "En yüksek önbelleğe alınan", + "cached": "Önbelleğe alınan", + "overview": "Genel Bakış", "tableProvider": "Sağlayıcı", "tableModel": "Model", "performanceTitle": "Performans", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoute'un kendi deterministik yanıt önbelleği. Etkinleştirildiğinde, tekrarlanan ve akış kullanmayan temperature=0 istekleri üst sağlayıcıya gönderilmeden yerel olarak yanıtlanabilir.", + "semanticCacheDisabledDesc": "Semantik önbellek devre dışı. Ayarlar'dan yeniden etkinleştirene kadar OmniRoute yerel yanıtların yeniden kullanımını atlayacak.", + "semanticEntriesDesc": "Şu anda SQLite'ta depolanan kalıcı semantik önbellek kayıtları. Sağlayıcı tarafındaki istem önbelleği etkinlikleri burada listelenmez.", + "searchEntries": "Kayıtlarda ara...", + "search": "Ara", + "loading": "Yükleniyor...", + "entriesLoadError": "Semantik önbellek kayıtları yüklenemedi.", + "noEntries": "Önbellek kaydı bulunamadı", + "noPromptCacheData": "Henüz sağlayıcı tarafında herhangi bir istem önbelleği etkinliği kaydedilmedi.", + "noTrendData": "Son 24 saat içinde herhangi bir istem önbelleği etkinliği kaydedilmedi.", + "signature": "İmza", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Oluşturulma", + "expires": "Geçerlilik Sonu", + "actions": "İşlemler", + "deduplicatedRequests": "Tekilleştirilen İstekler", + "savedCalls": "Tasarruf Edilen API Çağrıları", + "totalProcessed": "İşlenen Toplam İstek", + "disabled": "Devre Dışı", + "totalRequests": "Toplam İstek", "reasoningCache": "Muhakeme Tekrarı", "reasoningCacheDesc": "Çok turlu takım çağırma akışları için model düşüncesini korur", "reasoningEntries": "Aktif Girişler", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes} dk önce", "hoursAgo": "{hours} sa önce", "daysAgo": "{days} gün önce", - "entries": "Entries" + "entries": "Kayıtlar" }, "proxyConfigModal": { "levelGlobal": "Küresel", @@ -10776,7 +10783,7 @@ "saveConnection": "Bağlantıyı Kaydet", "gheDescription": "GitHub Enterprise örneğinizin temel URL'sini girin (örneğin, https://ghe.yourcompany.com).", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "GitHub Enterprise URL'si", "gheUrlRequired": "GitHub Enterprise URL'si gereklidir", "gitlabDuoSetupTitle": "GitLab Duo OAuth kurulumu", "gitlabDuoSetupMessage": "GitLab Duo OAuth yapılandırılmamış. {applicationsUrl} adresinde bir OAuth uygulaması kaydedin, yönlendirme URI'sı {redirectUri} ve kapsamlar \"{scopes}\" ile birlikte, ardından {clientIdEnv} (ve isteğe bağlı olarak {clientSecretEnv}) ayarlayın ve yeniden başlatın.", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "İmleç IDE'sini bağlayın", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Cursor ile giriş yap", + "tabImport": "Token'ı içe aktar", + "loginDescription": "Cursor'ın tarayıcı girişini açar. Docker'da çalışır — ana makinenizin tarayıcısında onaylayın, ardından buraya dönün.", + "loginWithCursor": "Cursor ile giriş yap", + "startingLogin": "Başlatılıyor…", + "waitingApproval": "Cursor giriş onayı bekleniyor…", + "openUrlHint": "Tarayıcı açılmadıysa:", + "openLoginLink": "Giriş sayfasını aç", + "cancelLogin": "Girişi iptal et", "autoDetecting": "Belirteçler otomatik olarak algılanıyor...", "readingFromCursor": "İmleç IDE'sinden veya imleç aracısından okuma", "tokensAutoDetected": "Belirteçler Cursor IDE'den başarıyla otomatik olarak algılandı!", "cursorNotDetected": "İmleç IDE'si algılanmadı. Lütfen jetonunuzu manuel olarak yapıştırın.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Docker'da mı çalışıyor? Cursor ile giriş yap seçeneğini tercih edin. IDE'den otomatik içe aktarma ve cursor-agent genellikle container içinde kullanılamaz. Bkz. docs/providers/CURSOR-DOCKER.md.", "accessToken": "Erişim Jetonu", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Yenileme Tokeni", + "refreshTokenPlaceholder": "İsteğe bağlı — otomatik token yenilemeyi etkinleştirir", "required": "*", "accessTokenPlaceholder": "Erişim belirteci otomatik olarak doldurulacak...", "machineId": "Makine Kimliği", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Belirteçlerin otomatik algılanması başarısız oldu", "errorEnterToken": "Lütfen erişim belirtecini girin", "errorImportFailed": "İçe aktarma başarısız oldu", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Cursor oturumu başlatılamadı", + "errorLoginPoll": "Cursor oturum açma işlemi başarısız oldu", + "errorLoginTimeout": "Cursor oturum açma işlemi zaman aşımına uğradı — tekrar deneyin" }, "pricingModal": { "title": "Fiyatlandırma Yapılandırması", @@ -10843,9 +10850,9 @@ "selectProxy": "{name} seç", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Eski Verileri İçe Aktar", + "bulkAssign": "Toplu Ata", + "addProxy": "Proxy Ekle", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Test Et", + "edit": "Düzenle", + "delete": "Sil", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10887,8 +10894,8 @@ "bulkScopeIdsPlaceholder": "sağlayıcı-openai,sağlayıcı-antropik", "bulkApply": "Uygula", "labelScope": "Kapsam", - "labelProxy": "Proxy", - "scopeGlobal": "global", + "labelProxy": "Vekil Sunucu", + "scopeGlobal": "genel", "scopeProvider": "sağlayıcı", "scopeAccount": "hesap", "scopeCombo": "kombo", @@ -10906,13 +10913,13 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Başarısız", "successRate": "%{rate} başarı", "avgLatency": "{latency}ms ortalama", "assignmentsCount": "{count} atama", "noData": "No Data", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ms", "testFailure": "✗ {error}", "repair": "Onar", "relayAuthMissing": "kimlik doğrulaması eksik", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Rotasyon stratejisi", "poolStrategyHint": "round-robin üyeleri sırayla döndürür; random tekdüze şekilde seçer; sticky bir üyeyi bir zaman penceresi boyunca tutar; latency-optimized günlüklere göre en hızlı olanı seçer.", "poolStrategyFailed": "Rotasyon stratejisi güncellenemedi", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Dönüşümlü", "strategyRandom": "Rastgele", "strategySticky": "Yapışkan", "strategyLatency": "Gecikme optimizasyonlu", "poolMembersLabel": "Havuz üyeleri ({count})", "poolNoMembers": "Bu havuzda henüz proxy yok.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{connections, plural, one {# bağlantı} other {# bağlantı}} tarafından kullanılan {exits, plural, one {# çıkış} other {# çıkış}} · tek bir çıkışta en fazla {max} · son {hours} sa.", + "poolEgressObservationEmpty": "Son {hours} sa. içinde trafik gözlemlenmedi", + "poolEgressObservationHint": "Pencere boyunca proxy günlüğünden hesaplanır: Bu havuzun üyeleri için gözlemlenen farklı çıkış IP'leri ve bunları kullanan OmniRoute bağlantıları. \"Tek bir çıkışta\", aynı anda değil, pencere boyunca anlamına gelir. IP başına 429 kilitlemesi yalnızca aynı sağlayıcı ailesinin bağlantılarını duraklatır.", "poolRemove": "Kaldır", "poolRemoveFailed": "Proxy havuzdan kaldırılamadı", "poolAddLabel": "Proxy ekle", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", + "endpoint": "Uç Nokta", + "provider": "Sağlayıcı", "model": "Model", "accountKey": "Account Key", "autoAccounts": "Otomatik ({count} hesap)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Gönder", + "cancel": "İptal", + "audioFile": "Ses Dosyası", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Tümünü Temizle", + "request": "İstek", + "response": "Yanıt", + "transcription": "Transkripsiyon", + "copy": "Kopyala", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "{count} resim oluşturuldu", "generatedImage": "Oluşturulan resim {index}", - "save": "Save", + "save": "Kaydet", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Yanıtlar", "completions": "Tamamlamalar", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Gömmeler", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Denetlemeler", - "rerank": "Rerank", + "rerank": "Yeniden Sırala", "search": "Search", "webFetch": "Web getirme" }, "conversationalChat": "Konuşmalı Sohbet", "clearChat": "Sohbeti temizle", "typeMessagePlaceholder": "Bir mesaj yazın... (Yeni satır için Shift+Enter)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Sohbet", + "tabCompare": "Karşılaştır", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Oluştur", + "configPane": "Yapılandırma", + "systemPrompt": "Sistem istemi", + "systemPromptPlaceholder": "Yardımsever bir asistansınız.", + "modelPlaceholder": "örn. openai/gpt-4o", + "endpointLabel": "Uç nokta", + "parametersLabel": "Parametreler", + "collapseConfig": "Yapılandırma panelini daralt", + "expandConfig": "Yapılandırma panelini genişlet", + "temperature": "Sıcaklık", + "maxTokens": "Maksimum token sayısı", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Varlık cezası", + "frequencyPenalty": "Sıklık cezası", "reasoningLabel": "Akıl yürütme", "thinking": "Düşünme", "effort": "Çaba", "effortDefault": "Varsayılan", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Rastgele (boş bırakın)", + "presetsLabel": "Ön ayarlar", + "loadPreset": "Ön ayarı yükle", + "savePreset": "Ön ayarı kaydet", + "noPresets": "Ön ayar yok", + "presetNamePlaceholder": "Ön ayar adı", + "savingPreset": "Kaydediliyor…", + "nameRequired": "Ad gerekli", + "failedToSavePreset": "Ön ayar kaydedilemedi", + "improvePrompt": "İstemi iyileştir", + "improvingPrompt": "İyileştiriliyor…", + "improvePromptTitle": "İsteminizi yapay zekâyla iyileştirin", + "setModelFirst": "Önce bir model belirleyin", "setModelInConfigFirst": "Öncelikle Yapılandırma panelinde bir model ayarlayın.", "improvePromptFailed": "İstemi iyileştirme başarısız oldu.", "improvePromptAria": "Yapay zeka kullanarak istemi iyileştir", "confirmImprovePrompt": "İstemi iyileştirmeyi onayla", "improvePromptDescription": "Bu işlem, iyileştirilmiş bir sürüm oluşturmak için mevcut sistem isteminizi modeline gönderecektir.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Bu işlem, Yapılandırma bölümünde ayarlanan modelin kotasını kullanır.", + "improveConfirm": "İyileştir", + "exportCode": "Kodu dışa aktar", + "exportCodeTitle": "Kodu Dışa Aktar", "exportShort": "Dışa aktar", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Dışa aktarılabilecek bir playground durumu yok.", "closeExportModal": "Dışa aktarma penceresini kapat", "close": "Kapat", "exportRealKeyWarning": "Güvenlik uyarısı: dışa aktarma engellendi — çıktıda gerçek bir API anahtarı tespit edildi. Lütfen API anahtarınızı sıfırlayıp tekrar deneyin.", @@ -11071,12 +11078,12 @@ "copyLangCode": "{language} kodunu kopyala", "loadingPresets": "Yükleniyor…", "loadPresetPlaceholder": "Hazır ayarı yükle…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", + "copyCode": "Kopyala", + "copiedCode": "Kopyalandı!", + "addModel": "+ Model ekle", + "runAll": "Tümünü çalıştır", + "cancelAll": "Tümünü iptal et", + "maxColumnsReached": "En fazla {max} sütun", "modelPlaceholderCompare": "Model (Cmd+K)…", "noModel": "Model yok", "statusLabel": "Durum: {status}", @@ -11095,29 +11102,29 @@ "waitingForResponse": "Yanıt bekleniyor…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "istemci tarafı tahmini", + "tokensLabel": "Tokenlar", + "costLabel": "Maliyet", + "costEstimated": "(tahmini)", "ttftTitle": "İlk tokene kadar geçen süre (istemci tarafı tahmini)", "tpsTitle": "Saniye başına token (istemci tarafı tahmini)", "tokenCountsTitle": "İstem tokenları ↑ / Tamamlama tokenları ↓", "estimatedCostTitle": "Tahmini maliyet (doğruluğu garanti edilmez)", - "toolsLabel": "Tools", + "toolsLabel": "Araçlar", "toolsCount": "Araçlar ({count})", - "addTool": "Add tool", + "addTool": "Araç ekle", "editTool": "{name} aracını düzenle", "removeTool": "{name} aracını kaldır", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Fonksiyon adı", "toolNameRequiredPlaceholder": "Fonksiyon adı *", - "toolDescPlaceholder": "Description (optional)", - "toolParamsLabel": "Parameters (JSON schema)", + "toolDescPlaceholder": "Açıklama (isteğe bağlı)", + "toolParamsLabel": "Parametreler (JSON şeması)", "toolParamsJsonSchema": "Parametreler için JSON şeması", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Parametreler geçerli JSON olmalıdır", + "structuredOutputLabel": "Yapılandırılmış Çıktı", + "enableJsonMode": "JSON modunu etkinleştir", + "disableJsonMode": "JSON modunu devre dışı bırak", + "invalidJson": "Geçersiz JSON", "jsonMode": "JSON modu", "jsonModeDescription": "response_format: json_schema olmasını zorunlu kılar", "schemaName": "Şema adı", @@ -11125,7 +11132,7 @@ "jsonSchemaEditor": "JSON şeması düzenleyici", "schemaValidated": "Şema doğrulandı", "validateSchema": "Şemayı doğrula", - "seed": "Seed", + "seed": "Tohum", "stopSequences": "Durdurma dizileri", "stopSequencesPlaceholder": "örn. \"\\n\\n\" veya \"END\"", "autoProvider": "Otomatik", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} sütun", "addModelToCompare": "Karşılaştırmak için bir model sütunu ekleyin", "modelsSimultaneously": "Aynı anda en fazla {max} model", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Çalışıyor…", + "runLabel": "Çalıştır", + "enterToolResult": "Araç sonucunu girin…", "build": { "step1Label": "Ne test edilecek?", "step2Label": "Yapılandır", @@ -11186,7 +11193,7 @@ "speed": "Hız", "input": "Girdi", "url": "URL", - "format": "Format", + "format": "Biçim", "depth": "Derinlik", "copyCurl": "cURL Kopyala", "copied": "Kopyalandı!", @@ -11198,7 +11205,7 @@ "tunnel": "Tünel", "send": "Gönder", "selectKey": "Anahtar seçin", - "testLabel": "Test", + "testLabel": "Test et", "expandTest": "Testi genişlet", "collapseTest": "Testi daralt", "revealKey": "Anahtarı göster", @@ -11221,7 +11228,7 @@ "noAudioUrl": "Yanıt bir ses URL'si içermiyordu: {response}", "music": "Müzik", "embeddingSample": "OmniRoute, yapay zeka isteklerini birden fazla sağlayıcı arasında yönlendirir.", - "embedding": "Embedding", + "embedding": "Gömme", "imageSample": "Gün batımında fütüristik bir şehir, sinematik aydınlatma", "image": "Görsel", "ttsSample": "OmniRoute'tan merhaba. Bu bir metinden sese dönüştürme testidir.", @@ -11250,73 +11257,73 @@ "stop": "Durdur" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", + "recording": "Kaydediliyor", + "paused": "Duraklatıldı", + "pipelineLogsOn": "İşlem hattı günlükleri açık", + "pipelineLogsOff": "İşlem hattı günlükleri kapalı", + "updatingPipelineLogs": "İşlem hattı günlükleri güncelleniyor...", + "updatePipelineFailed": "İşlem hattı günlük kaydı güncellenemedi", + "capturePipeline": "Yeni istekler için işlem hattı yüklerini yakala", + "searchPlaceholder": "Modelleri, sağlayıcıları, hesapları, API anahtarlarını ve kombinasyonları ara...", + "allProviders": "Tüm sağlayıcılar", + "allModels": "Tüm modeller", + "allAccounts": "Tüm hesaplar", + "allApiKeys": "Tüm API anahtarları", + "total": "Toplam", + "ok": "Başarılı", + "err": "Hata", + "combo": "Kombinasyon", + "keys": "Anahtarlar", + "shown": "Gösterilen", + "sortNewest": "En yeni", + "sortOldest": "En eski", + "sortTokensDesc": "Tokenlar ↓", + "sortTokensAsc": "Tokenlar ↑", + "sortDurationDesc": "Süre ↓", + "sortDurationAsc": "Süre ↑", + "sortStatusDesc": "Durum ↓", + "sortStatusAsc": "Durum ↑", "sortModelAsc": "Model A-Z", "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "sortLogs": "Günlükleri sırala", + "refresh": "Yenile", + "columnsLabel": "Sütunlar", "cacheSem": "SEM", "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "semantic": "Semantik", + "upstream": "Üst sağlayıcı", + "semanticCacheHit": "Semantik önbellek isabeti (OmniRoute tarafından sunuldu)", + "upstreamResponse": "Üst sağlayıcı yanıtı", + "noApiKey": "API anahtarı yok", + "requestedRoutedTitle": "İstenen: {requested}, yönlendirilen: {routed}", "statusFilters": { - "all": "All", + "all": "Tümü", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Başarılı", + "combo": "Kombinasyon" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", + "status": "Durum", + "cacheSource": "Önbellek Kaynağı", "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "requested": "İstenen", + "provider": "Sağlayıcı", + "protocol": "İstek Protokolü", + "account": "Hesap", + "apiKey": "API Anahtarı", + "combo": "Kombinasyon", + "tokens": "Tokenlar", "compressed": "Sıkıştırma", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Süre", + "time": "Zaman", + "conversation": "Konuşma", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Günlükler yükleniyor...", + "noLogs": "Henüz günlük yok. Burada görmek için birkaç API çağrısı yapın.", + "noMatchingLogs": "Mevcut filtrelerle eşleşen günlük yok.", + "callLogsInfo": "Çağrı günlükleri ayrıca JSON dosyaları olarak {dataDir} konumuna kaydedilir ve {retentionDays} ile {maxEntries} değerlerine göre döndürülür.", "loadMore": "Daha Fazla Yükle", "loadingMore": "Daha fazla yükleniyor...", "correlationId": "Korelasyon Kimliği", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Bu günlük girişi için ayrıntılı yük nesnesi artık mevcut değil.", "payloadCorrupt": "Ayrıntılı yük nesnesi ayrıştırılamadı.", - "notAvailable": "N/A", + "notAvailable": "Yok", "semanticCache": "Anlamsal (OmniRoute)", "upstreamCache": "Yukarı Akış (Sağlayıcı)", "ariaLabel": "İstek günlüğü ayrıntısı", @@ -11417,59 +11424,59 @@ "correlationId": "Korelasyon Kimliği", "correlationIdValue": "Korelasyon Kimliği: {id}", "detailedPayloadInfo": "Yeni istekler için dört aşamalı istemci/sağlayıcı yük görünümünü istiyorsanız önce ayrıntılı günlüğü etkinleştirin.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Tümünü kopyala", + "copiedAll": "Tümü kopyalandı" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "Tümü", + "filterErrors": "Hatalar", + "filterSuccess": "Başarılı", + "filterTimeout": "Zaman aşımı", + "colStatus": "Durum", + "colProxy": "Vekil sunucu", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "Tür", + "colLevel": "Seviye", + "colProvider": "Sağlayıcı", + "colTarget": "Hedef", + "colLatency": "Gecikme", + "colClientIp": "İstemci IP'si", + "colTime": "Zaman", + "recording": "Kaydediliyor", + "paused": "Duraklatıldı", + "searchPlaceholder": "Ana makine, sağlayıcı, hedef, IP ara...", + "allTypes": "Tüm Türler", + "allLevels": "Tüm Seviyeler", + "allProviders": "Tüm Sağlayıcılar", + "total": "toplam", + "ok": "Tamam", + "err": "HATA", + "timeoutShort": "ZAM", + "direct": "doğrudan", + "newest": "En yeni", + "oldest": "En eski", + "latencyDesc": "Gecikme ↓", + "latencyAsc": "Gecikme ↑", + "refresh": "Yenile", + "columns": "Sütunlar", + "loadingProxyLogs": "Proxy günlükleri yükleniyor...", + "noProxyLogs": "Henüz proxy günlüğü yok. Burada görüntülemek için proxy'leri yapılandırın ve API çağrıları yapın.", + "noMatchingLogs": "Geçerli filtrelerle eşleşen günlük yok.", + "tlsFingerprint": "Chrome 124 TLS Parmak İzi", "colPublicIp": "Genel IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", + "speech": "Konuşma", + "search": "Arama", + "images": "Görseller", + "chat": "Sohbet", + "music": "Müzik", + "responses": "Yanıtlar", + "rerank": "Yeniden Sıralama", "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "embeddings": "Yerleştirmeler", + "transcription": "Transkripsiyon" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Çalışma Zamanı", + "description": "Gerçek zamanlı gözlemlenebilirlik — 3 katmanlı dayanıklılık + oturumlar + kota uyarıları", + "pause": "Duraklat", + "resume": "Devam Et", + "refreshNow": "Şimdi yenile", + "kpiSessions": "Oturumlar", + "kpiCircuits": "Devreler", + "kpiCooldowns": "Bekleme Süreleri", + "kpiLockouts": "Kilitlemeler", + "hintStickyBound": "{count} sabit bağlı", + "hintRecovering": "{count} kurtarılıyor", + "hintAllHealthy": "tümü sağlıklı", + "hintOpen": "açık", + "hintConnsCooling": "bağlantı soğuma sürecinde", + "hintModelsBlocked": "modeller engellendi", + "resilienceTitle": "3 Katmanlı Dayanıklılık", + "resilienceSubtitle": "Belgelenmiş dayanıklılık modelini yansıtır", + "providersHealthy": "sağlayıcıların %{percent}'i sağlıklı", + "layer": "Katman {n}", + "layer1Title": "Sağlayıcı Devre Kesicileri", + "layer1Desc": "Üst kaynak düzeyinde başarısız olan sağlayıcılara giden trafiği durdurun", + "layer2Title": "Bağlantı Bekleme Süreleri", + "layer2Desc": "Sorunlu bir hesabı/anahtarı atlayın; diğer bağlantılar hizmet vermeye devam eder", + "layer3Title": "Model Kilitlemeleri", + "layer3Desc": "Model başına hız sınırı kilitleri; aynı bağlantı diğer modellere hizmet vermeye devam eder", + "badgeAffectedOf": "{total} öğeden {affected} tanesi etkilendi", + "badgeCooling": "{count} tanesi beklemede", + "badgeLocked": "{count} tanesi kilitli", + "emptyCircuits": "Henüz etkin devre kesici yok", + "emptyCooldowns": "Etkin bağlantı bekleme süresi yok", + "emptyLockouts": "Model kilitlemesi yok", + "moreCooldowns": "+{count} bekleme süresi daha", + "moreLockouts": "+{count} kilitleme daha", + "feedTitle": "Canlı Akış", + "feedSubtitle": "Son {count} olay", + "feedFilterAll": "Tümü", + "feedFilterCircuits": "Devreler", + "feedFilterCooldowns": "Bekleme Süreleri", + "feedFilterLockouts": "Kilitlemeler", + "feedFilterSessions": "Oturumlar", + "feedFilterQuotas": "Kotalar", + "feedClear": "Temizle", + "feedEmptyWaiting": "Olaylar bekleniyor... (her 5 sn.'de bir sorgulanır)", + "feedEmptyFiltered": "Bu filtreyle eşleşen olay yok", + "sessionsTitle": "Etkin Oturumlar", + "sessionsSubtitle": "Yapışkan olarak bağlanmış istek parmak izleri (canlı)", + "sessionsActive": "{count} etkin", + "sessionsEmptyTitle": "Etkin oturum yok", + "sessionsEmptyHint": "İstekler proxy üzerinden aktıkça oturumlar görünür", + "tblSession": "Oturum", + "tblAge": "Yaş", + "tblIdle": "Boşta", + "tblReqs": "İstekler", + "tblBoundTo": "Bağlı olduğu hedef", + "topApiKeys": "En çok kullanılan API anahtarları", + "quotaMonitorsTitle": "Kota İzleyicileri", + "quotaMonitorsSubtitle": "Hesap penceresi başına canlı kota durumu", + "openQuota": "Kotayı Aç", + "allQuotasHealthy": "Tüm kotalar sağlıklı", + "statusExhausted": "TÜKENDİ", + "statusAlerting": "UYARI VERİLİYOR", + "statusError": "HATA", + "moreSuffix": "+{count} tane daha" }, "quotaShare": { "weightPercent": "Ağırlık %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Kota Paylaşımı", + "description": "Sağlayıcı kotalarını API anahtarları arasında % sınırlarıyla paylaşın", + "newPool": "Yeni havuz", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Yapılandırma localStorage'a kaydedilir (henüz sunucuda kalıcı olarak saklanmamaktadır). İstek başına sınır uygulaması henüz proxy işlem hattına bağlanmamıştır. Bu ekran, kota dağılımını tasarlamanızı ve görselleştirmenizi sağlar; gerçek uygulama, veritabanında kalıcı depolama ve yukarı akış çağrılarının yakalanmasıyla gelecek bir sürümde kullanıma sunulacaktır.", + "kpiActivePools": "Etkin havuzlar", + "kpiKeysAllocated": "Tahsis edilen anahtarlar", + "kpiAvgUnallocated": "Ort. tahsis edilmemiş", + "kpiProvidersWithQuota": "Kotalı sağlayıcılar", + "emptyTitle": "Yapılandırılmış havuz yok", + "emptyDescription": "API anahtarlarını bir sağlayıcının kota aralığını % tahsislerle paylaşacak şekilde atamak için bir havuz oluşturun.", + "loading": "Yükleniyor…", + "removePool": "Havuzu kaldır", + "removeConfirm": "Bu havuz kaldırılsın mı?", + "pool": "Havuz", + "used": "kullanıldı", + "allocationsCount": "Tahsisler ({count})", + "allocatedFree": "%{allocated} tahsis edildi · %{free} boş", + "noAllocations": "Henüz anahtar tahsis edilmedi", + "capLabel": "sınır {value}", + "notTrackedYet": "(henüz izlenmiyor)", + "policy": "Politika", "apiKeyColumn": "API Anahtarı", "weightColumn": "Ağırlık", "fairShareShort": "adil", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "katı", + "policySoft": "esnek", + "policyBurst": "ani artış", + "policyHardHint": "Anahtar tahsisini tükettiğinde engelle", + "policySoftHint": "Aşıma izin ver, yalnızca uyar", + "policyBurstHint": "Boş havuza doğru ani artışa izin ver", + "editAllocations": "Tahsisleri düzenle", + "newPoolTitle": "Yeni kota havuzu", + "providerConnection": "Sağlayıcı bağlantısı (hesap)", + "selectConnection": "Bir bağlantı seçin…", + "noEligibleConnections": "Kota verilerine sahip bağlantı yok. Önce /dashboard/quota üzerinden yenileyin.", + "quotaWindow": "Kota aralığı", + "selectWindow": "Bir aralık seçin…", + "alreadyUsedSuffix": "(zaten kullanılıyor)", + "windowReset": "Sıfırla", + "duplicatePoolError": "Bu bağlantı + pencere için zaten bir havuz mevcut", + "cancel": "İptal", + "createPool": "Havuz oluştur", + "editTitle": "Tahsisleri düzenle", + "noKeysAdded": "Tahsis edilmiş anahtar yok. Aşağıdan bir tane ekleyin.", + "totalLabel": "Toplam: %{percent}", + "totalExceeded": "⚠ %100'ü aşıyor", + "addKey": "+ Anahtar ekle…", + "equalSplit": "Eşit dağıt", + "save": "Tahsisleri kaydet", "betaPreviewLabel": "Beta — Kullanıcı arayüzü önizlemesi.", "betaConfigSavedPrefix": "Yapılandırma şuraya kaydedilir:", "betaConfigSavedSuffix": "(henüz sunucuda kalıcı değil). İstek başına sınır uygulaması henüz proxy kanalına bağlanmamıştır. Bu ekran kota paylaşımını tasarlamanıza ve görselleştirmenize olanak tanır; Gerçek uygulama, DB kalıcılığı ve yukarı yönlü çağrı müdahalesi ile gelecekteki bir yinelemede gerçekleşecektir.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "Bu grupta hâlâ havuzlar var — önce bunları yeniden atayın veya silin.", "ungroupedTitle": "Gruplanmamış", "ungroupedHint": "Bu havuzlar bilinen bir gruba atanmamış. Gerçek bir gruba taşımak için bir havuzu düzenleyin.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Bu havuz kaldırılamadı.", + "dismiss": "Kapat" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Eklentiler", + "description": "OmniRoute işlevselliğini genişleten eklentileri yükleyin ve yönetin", + "loading": "Eklentiler yükleniyor...", + "scanning": "Taranıyor...", + "scanForPlugins": "Eklentileri Tara", + "noPlugins": "Yüklü eklenti yok", + "noPluginsDescription": "Eklenti dizinlerini ~/.omniroute/plugins/ içine yerleştirin ve Tara'ya tıklayın.", + "activate": "Etkinleştir", + "deactivate": "Devre dışı bırak", + "uninstall": "Kaldır", + "uninstallConfirm": "\"{name}\" eklentisi kaldırılsın mı?", + "pluginScanComplete": "Eklenti taraması tamamlandı", + "pluginScanFailed": "Eklenti taraması başarısız oldu", + "activated": "{name} etkinleştirildi", + "deactivated": "{name} devre dışı bırakıldı", + "activateFailed": "{name} etkinleştirilemedi", + "deactivateFailed": "{name} devre dışı bırakılamadı", + "uninstalled": "{name} kaldırıldı", + "uninstallFailed": "{name} kaldırılamadı", + "configure": "Yapılandır: {name}", + "configurePlugin": "Yapılandır", + "noConfigSettings": "Bu eklentinin yapılandırılabilir ayarı yok.", + "saving": "Kaydediliyor...", + "saveConfiguration": "Yapılandırmayı Kaydet", + "configurationSaved": "Yapılandırma kaydedildi", + "saveConfigurationFailed": "Yapılandırma kaydedilemedi", + "pluginNotFound": "Eklenti bulunamadı", + "version": "Sürüm", + "author": "Yazar", + "description_label": "Açıklama", + "status": "Durum", + "enabled": "Etkin", + "disabled": "Devre dışı", "installedTab": "Yüklü", "marketplaceTab": "Pazaryeri", "marketplaceUrlLabel": "Özel Pazaryeri URL'si", @@ -11729,7 +11736,7 @@ "verified": "Doğrulanmış", "install": "Yükle", "installedFromMarketplace": "{name} eklentisi yüklendi!", - "hooks": "Hooks" + "hooks": "Hook'lar" }, "quotaPlans": { "title": "Planlar ve Kotalar", @@ -11741,7 +11748,7 @@ "dimensionLabel": "Boyutlar", "addDimension": "Boyut ekle", "removeDimension": "Kaldır", - "limitLabel": "Limit", + "limitLabel": "Sınır", "unitOptions": { "percent": "%", "requests": "istekler", @@ -11855,7 +11862,7 @@ "statusDnsOff": "DNS kapalı", "statusSetupRequired": "Kurulum gerekiyor", "statusInvestigating": "İnceleniyor", - "serverPort": "Port", + "serverPort": "Bağlantı noktası", "serverConns": "Bağlantılar", "serverIntercepted": "Araya Girilen", "serverLastStarted": "Son başlatılma", @@ -12040,7 +12047,7 @@ "agentBridgeModeDesc": "Bağlı tüm IDE agent'larından gelen trafiği yakalayın", "customHostsMode": "Özel Hostlar", "customHostsModeDesc": "Araya girilecek belirli hostları ekleyin", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "HTTP Vekil Sunucusu", "httpProxyModeDesc": "HTTP_PROXY ortam değişkenini kullanın", "systemWideMode": "Sistem genelinde", "systemWideModeDesc": "Tüm sistem trafiğini yakalayın (gelişmiş)", @@ -12051,7 +12058,7 @@ "profileCustom": "Özel", "profileAll": "Tümü", "filterHost": "Host filtrele…", - "filterAgent": "Agent", + "filterAgent": "Ajan", "filterStatus": "Durum", "pauseBtn": "Duraklat", "resumeBtn": "Devam Et", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP Ajanları", "phrase": "OmniRoute'un yürütme arka ucu olarak başlattığı CLI'lar (ters akış)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Çoğu kullanıcı bunu göz ardı edebilir — yalnızca bir entegrasyon gerektirdiğinde kullanın.", "flow": "İstemci → OmniRoute → CLI başlat (stdio/ACP) → yanıt", "seeOther": "Gör →" } @@ -12291,7 +12298,7 @@ "addAgent": "Ajan ekle", "agentName": "Ad", "agentNamePlaceholder": "örn.: Ajanım", - "binaryName": "Binary", + "binaryName": "İkili dosya", "binaryNamePlaceholder": "örn.: myagent", "versionCommand": "Sürüm komutu", "versionCommandPlaceholder": "örn.: myagent --version", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhook'lar", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Webhook uç noktalarını kaydedin, listeleyin, test edin ve kaldırın. Olay aboneliklerini (request.completed, request.failed, quota.exceeded vb.) yapılandırın ve teslimat yeniden denemelerini yönetin." }, "omni-mcp": { "name": "MCP Sunucusu", @@ -12390,47 +12397,47 @@ "description": "Temel OpenAI uyumlu çıkarım uç noktaları: sohbet tamamlamaları, yerleştirmeler, görseller, ses (TTS/STT), denetlemeler, yeniden sıralama ve Responses API. Yapay zeka temsilcileri için birincil entegrasyon yüzeyi." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: Sunma", "description": "OmniRoute sunucusunu CLI'dan başlatın, durdurun ve yeniden başlatın. Arka plan programı (daemon) modunu, bağlantı noktası yapılandırmasını, otomatik kurtarmayı, sistem tepsisi entegrasyonunu ve kontrol paneli açma kısayolunu yönetin." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: Sistem Durumu", "description": "CLI'dan sunucu sağlığını, bileşen durumunu ve canlı metrikleri kontrol edin. Devre kesicilerin ve sağlayıcı durumunun gerçek zamanlı paneli için `health`, `health components` ve `health watch` komutlarını çalıştırın." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: Sağlayıcılar", "description": "CLI'dan sağlayıcı bağlantılarını yönetin: kullanılabilir/yapılandırılmış sağlayıcıları listeleyin, ekleyin, test edin, tümünü test edin, doğrulayın, API anahtarlarını döndürün ve sağlayıcı başına metrikleri görüntüleyin." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: API Anahtarları", "description": "CLI'dan OmniRoute API anahtarlarını oluşturun, listeleyin, döndürün ve iptal edin. Sağlayıcı kimlik doğrulaması için OAuth akışlarını yönetin ve anahtar kapsamları ile son kullanma tarihlerini inceleyin." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: Modeller", "description": "CLI'dan kullanılabilir yapay zeka modellerini sorgulayın, model takma adlarını listeleyin ve tam model kataloğuna göz atın. Sağlayıcıya göre filtreleyin, yeteneğe göre arayın ve model adı varyantlarını çözümleyin." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Sohbet", "description": "CLI'dan sohbet tamamlamaları gönderin, yanıtları akışla alın ve etkileşimli bir REPL oturumu başlatın. Tüm OmniRoute sağlayıcılarını, kombo yönlendirmeyi ve sistem istemi yapılandırmasını destekler." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: Yönlendirme ve Kombinasyonlar", "description": "CLI'dan yönlendirme kombolarını oluşturun, listeleyin, güncelleyin ve silin. Yönlendirme stratejilerini test edin, kombo metriklerini inceleyin ve geri dönüş zincirlerini etkileşimli olarak yapılandırın." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: Dayanıklılık ve Kotalar", "description": "CLI'dan devre kesici durumlarını, bağlantı bekleme sürelerini, kota sınırlarını ve geri çekilme (backoff) seviyelerini inceleyin ve yönetin. Takılı kalan sağlayıcıları sıfırlayın ve dayanıklılık eşiklerini yapılandırın." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: Sıkıştırma", "description": "CLI'dan istem sıkıştırmayı yapılandırın ve test edin. RTK filtrelerini, Caveman kurallarını, yığılmış sıkıştırma modlarını yönetin ve gerçek istemlerle sıkıştırma çıktısını önizleyin." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: Bağlamlar ve Oturumlar", "description": "CLI'dan bağlam mühendisliği yapılandırmalarını, RTK filtre setlerini ve konuşma oturumlarını yönetin. Bağlam aktarma ayarlarını uygulayın ve aktif bağlam işlem hatlarını inceleyin." }, "cli-cost-usage": { - "name": "CLI: Cost & Usage", + "name": "CLI: Maliyet ve Kullanım", "description": "CLI'dan maliyet dökümlerini, jeton kullanımını ve çağrı günlüklerini görüntüleyin. Sağlayıcıya, modele veya tarih aralığına göre filtreleyin. Kullanım raporlarını dışa aktarın ve bağlantı başına harcamaları inceleyin." }, "cli-mcp": { @@ -12589,14 +12596,14 @@ "typeApikey": "API Anahtarı", "sortTypeFirst": "Önce en kolay", "sortTypeFirstHelp": "Kayıt zahmetine göre gruplandır (Kayıt Gerekmez → OAuth ile Giriş → API Anahtarı), her grup içinde kalite sıralamasını koru", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Önce en güvenilirler", + "sortByReliabilityHelp": "Sağlayıcıları, seçilen zaman aralığında başarılı olan çağrıların oranına göre sıralayın. Oran belirtmek için çok az çağrı alan sağlayıcılar, ölçülenlerin altında puan sıralarını korur.", "typeLegend": "Kayıt Gerekmez = sıfır kurulum · OAuth ile Giriş = kendi hesabınızla giriş yapın · API Anahtarı = kendi anahtarınızı veya sağlayıcının ücretsiz katmanını kullanın", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Güvenilirlik", + "colReliabilityHelp": "Bu sağlayıcının son 24 saat içinde gerçekten yanıtladığı çağrıların oranı. Kısa çizgi, oran belirtmek için çok az trafik işlediği anlamına gelir.", + "reliabilitySample": "Son {hours} saatte {requests} çağrıdan {successes} tanesi başarılı oldu", + "reliabilityTooFew": "Son {hours} saatte yalnızca {requests} çağrı — oran belirtmek için çok az", + "reliabilityNoTraffic": "Son 24 saatte kaydedilmiş çağrı yok" }, "discovery": { "title": "Sağlayıcı Keşfi", @@ -12640,8 +12647,8 @@ "custom": "Özel", "noSavedProxies": "Kayıtlı proxy yok — Ayarlar → Proxy menüsünden bir tane ekleyin", "directConnection": "Doğrudan (proxy yok)", - "host": "Host", - "port": "Port", + "host": "Ana makine", + "port": "Bağlantı noktası", "usernameOptional": "Kullanıcı adı (isteğe bağlı)", "passwordOptional": "Şifre (isteğe bağlı)", "cancel": "İptal", @@ -12658,7 +12665,7 @@ "add": "Ekle", "manualApiKey": "Manuel API anahtarı kullanın", "createDahlTokenFailed": "Dahl token oluşturulamadı", - "providerProxy": "Proxy", + "providerProxy": "Vekil sunucu", "providerProxyConfigureHint": "Proxy'yi yapılandırın", "providerProxyTitleConfigured": "Proxy yapılandırıldı: {host}" }, @@ -12712,16 +12719,16 @@ }, "categories": { "usage": "Kullanım", - "sharing": "Sharing", + "sharing": "Paylaşım", "contribution": "Katkı", "streak": "Seri", "rare": "Nadir başarımlar" }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar Destekçisi", + "description": "Canlı bir OmniRoute Radar destekçi akışı doğrulandı", + "criteria": "İmzalı, canlı bir Radar destekçi akışını doğrulayın." }, "first-token": { "name": "İlk Token", @@ -12948,8 +12955,8 @@ "description": "Her uyumluluk düğümü için birden fazla bağlantıya izin verin." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Bağlam Penceresi Denetimlerini Devre Dışı Bırak", + "description": "Doğrudan tek modelli istekler için OmniRoute'un yerel bağlam penceresi ve maksimum giriş belirteci denetimini atlayın. Üst sağlayıcılar gerçek sınırlarını uygulamaya devam eder. İstem sıkıştırma ve çıkış belirteci üst sınırları etkin kalır." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "İstemcilere iletmeden önce Responses API doğrudan geçiş akışlarından dahili yorum aşaması çıktı öğelerini kaldırın. Ham kaynak yorumlarını almak için bu bayrağı devre dışı bırakın." @@ -12985,7 +12992,7 @@ "description": "Baytlar istemciye ulaştıktan sonra akış kurtarmanın yanıtı tekrar istemesine ve birleştirmesine izin verin." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Akış ortasında devam etmeyi araç çağrıları açısından güvenli hâle getirin: Bir araç çağrısı gönderildikten sonra (hâlâ devam ediyor veya tamamlanmış olsa bile) kesilmiş bir akışı asla sürdürmeyin ve tüm yeniden deneme bütçesini kullanmak yerine tek bir boş devamdan sonra durun." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Akış herhangi bir yararlı çerçeve göndermeden kapandığında ve aynı bağlantıdaki sınırlı yeniden deneme tükendiğinde bir kez kardeş bağlantıya geçiş yapın. Kullanılabilir kardeş bağlantı yoksa özgün early-EOF hatası döndürülür. Kapalı: early-EOF yeniden denemeden sonra nihai kalır." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Yetenekler korumalı alanında (skills sandbox) ağ erişimini etkinleştirin." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Sunucu Tarafından Yönetilen Araç Döngüsü", + "description": "Model, istemcinin kullanabileceği bir yanıt döndürene kadar sunucu tarafından yönetilen akışsız araç çağrılarına devam edin." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After Kaynağı", + "description": "Toplanan 429/503 kullanılamıyor yanıtlarında, gelecekteki somut bir yeniden deneme zamanı bilinmiyorsa yapay bir 1 sn değeri göndermek yerine Retry-After başlığını atlayın, error.retry_after_provenance alanını ekleyin ve combo tükenme yollarındaki düz metin yeniden deneme ipuçlarını okuyun." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Korumalı Öncelikli Altyapı Durdurmaları 502 Olarak", + "description": "Yalnızca kota durumunda yedeğe geçen öncelikli bir hedef, kota olmadığı kanıtlanabilen bir nedenle (açık bir sağlayıcı devre kesicisi veya tahmine dayalı gecikme atlaması) combo'yu durdurduğunda 503 yerine 502 yanıtı verin." } } }, @@ -13047,7 +13058,7 @@ }, "comboControl": { "title": "Kombo Kontrol Merkezi", - "unavailable": "Combo Control Center unavailable", + "unavailable": "Combo Control Center kullanılamıyor", "backToCombos": "Combo'lara Geri Dön", "loadFailed": "Combo kontrol merkezi yüklenemedi", "state": { @@ -13171,7 +13182,7 @@ "segmentHint": "Her segment = bir ücretsiz havuz · havuzdan tekilleştirilmiş, dürüst sayım (şişirilmiş istek sınırı tavanları yok).", "boost": "Tek seferlik 10 $'lık OpenRouter bakiye yüklemesi ile ayda yaklaşık ~{tokens} daha fazlasının kilidini açın (50 → 1000 istek/gün)", "uncapped": "Kalıcı olarak ücretsiz, yayınlanmış bir sınır yok (istek sınırlı) — gerçek erişim, başlıkta sayılmaz:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "Bölgesel kimlik kontrolünün (ör. Çin ana karası gerçek ad doğrulaması) arkasında ayda yaklaşık {tokens} daha fazla — gerçek kota, başlıktaki miktara dahil değildir:", "tosRestricted": "{count, plural, one {# model} other {# model}} Hizmet Şartları kısıtlamalı olarak işaretlendi — karar sizin", "provider": "Sağlayıcı", "model": "Model", @@ -13270,80 +13281,80 @@ "viewFullHistory": "Tüm geçmişi GitHub'da görüntüleyin" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", + "title": "Akıl yürütme yönlendirme politikaları", + "apiKeyTitle": "Bu API anahtarı için akıl yürütme yönlendirmesi", + "subtitle": "İstemci desteği gerektirmeden modelleri ve akıl yürütme çabasını yeniden yönlendirin. Hiçbir kural eşleşmediğinde istekler değişmeden kalır.", + "loadError": "Akıl yürütme kuralları yüklenemedi.", + "saveError": "Kural geçersiz veya kaydedilemedi.", + "saved": "Akıl yürütme kuralı kaydedildi.", + "deleteConfirm": "Bu akıl yürütme kuralı silinsin mi?", + "deleteError": "Akıl yürütme kuralı silinemedi.", + "empty": "Eşleşen akıl yürütme kuralı yapılandırılmamış.", + "all": "Tümü", + "any": "Herhangi biri", + "enabled": "Etkin", + "disabled": "Devre dışı", + "filterSearch": "Kurallarda ara", + "filterScope": "Kapsama göre filtrele", + "filterStatus": "Duruma göre filtrele", + "allModels": "tüm modeller", + "keepModel": "Modeli koru", + "otherModel": "Diğer model", + "combo": "Kombinasyon", + "priorityShort": "öncelik {value}", + "toggleAria": "{name} etkinleştir", + "edit": "Düzenle", + "delete": "Sil", + "name": "Ad", + "description": "Açıklama", + "scopeLabel": "Kapsam", + "apiKey": "API anahtarı", + "sourceCombo": "Kaynak kombinasyon", + "connection": "Bağlantı", + "sourceModel": "Kaynak model veya joker karakter", + "sourceModelOptional": "Boş = tüm modeller", + "sourceModelExample": "ör. gpt-5*", + "sourceEffort": "Kaynak efor", + "missing": "Belirtilmedi", + "signalOnly": "Kesikli olmayan akıl yürütme sinyali", + "requestTags": "İstek etiketleri", + "requestTagsExample": "kodlama, dahili", + "tagMode": "Etiket eşleştirme", + "effortMode": "Efor modu", + "targetEffort": "Hedef efor", + "routingTarget": "Yönlendirme hedefi", + "targetModel": "Hedef model", + "targetCombo": "Hedef kombinasyon", + "budgetAction": "Düşünme bütçesi", + "budgetTokens": "Bütçe token'ları", + "priority": "Öncelik", + "saveChanges": "Değişiklikleri kaydet", + "add": "Kural ekle", + "cancel": "İptal", + "simulateTitle": "Kuralı simüle et", "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "effort": "Efor", + "transport": "Aktarım", + "simulate": "Üst sağlayıcı olmadan simüle et", + "extendedComboWarning": "Max/Ultra, yönlendirme sırasında her kombinasyon hedefi için ayrı ayrı doğrulanır.", + "extendedUnknownWarning": "Max/Ultra desteğini doğrulamak için bir hedef model girin.", + "extendedUnsupportedWarning": "Max/Ultra desteğinin yalnızca uygun Codex GPT-5.6 modellerinde bulunduğu bilinmektedir. Bilinmeyen özel modeller sunucu tarafından bir uyarıyla kabul edilir.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", + "global": "Genel", + "apiKey": "API anahtarı", + "combo": "Kombinasyon", "model": "Model", - "connection": "Connection" + "connection": "Bağlantı" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "İstemciden devral", + "default": "Varsayılanı kullan", + "force": "Zorla" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Koru", + "remove": "Kaldır", + "set": "Sabit değer belirle" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "Canlı (gerçek zamanlı)", "tierCommunity": "Topluluk (30 günlük gecikme)", "activateTitle": "Radar'ı etkinleştir", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Community erişimiyle canlı erişimi karşılaştırın, kurulumunuzun hangi verileri aktardığını anlayın ve ardından Radar'ı nasıl etkinleştireceğinizi seçin.", + "accessScaleTitle": "Etkinleştirmeden önce Radar erişimini anlayın", + "accessScaleIntro": "Siz katılmayı seçene kadar Radar hiçbir ağ etkinliği gerçekleştirmez. Bu kuralları inceledikten sonra Community erişimini seçin veya kişisel destekçi anahtarınızı etkinleştirin.", + "accessCommunityRule": "Community — anahtar gerekmez: 30 günlük gecikmeyle eksiksiz katalog.", + "accessSingleUseRule": "Yıldız + takip — GitHub OAuth her ikisini de doğruladıktan sonra GitHub hesabınız canlı kataloğa bir kez erişim kazanır; ardından erişim Community düzeyine döner. Bu tek seferlik erişim söz konusu hesap için yeniden verilemez.", + "accessContributorRule": "Katkıda bulunanlar — birleştirilmiş PR'lar, commit'ler ve satırlar yalnızca haftalık sıralamayı belirler. İlk 10'a girenler 365 gün, 11–100. sıralardakiler 90 gün erişim kazanır; ilk 100 dışında kalan katkıda bulunanlara PR sayısından bağımsız olarak erişim verilmez. Sıralamadan çıkmak, daha önce verilmiş süreyi hiçbir zaman kısaltmaz.", + "accessSupporterRule": "Destekçiler — tek seferlik satın alımlar, otomatik yenileme olmadan 6 aylık, 1 yıllık veya ömür boyu erişim sağlar. Satın alımlar, bağışlar, katkıda bulunma dönemleri ve manuel olarak verilen süreler birikir; ömür boyu erişim her zaman önceliklidir.", + "accessUseTitle": "Kişisel kullanım, kurtarma ve inceleme", + "accessInstallationRule": "Kişisel lisans — anahtarı aynı anda yalnızca bir etkin kurulumda kullanın. OmniRoute donanım parmak izi oluşturmaz. Kurtarma işlemi, kayıp bir anahtarı iptal edip son kullanma tarihini sıfırlamadan yenisiyle değiştirir.", + "accessAbuseRule": "Kötüye kullanım incelemesi — 24 saat içinde 4. farklı IP yalnızca manuel inceleme işareti oluşturur; bir anahtarı hiçbir zaman otomatik olarak engellemez veya iptal etmez.", + "accessOffersRule": "Canlı teklifler manuel olarak seçilir ve değişebilir ya da süreleri dolabilir.", + "privacyTitle": "Radar hangi verileri aktarır?", + "privacyDownloadsRule": "İndirilenler — kurulumunuz kriptografik olarak imzalanmış katalog ve yönlendirme meta verilerini alır; geçerli bir canlı erişim anahtarı ayrıca imzalanmış tekliflerin ve Intel'in kilidini açar.", + "privacySendsRule": "Gönderilenler — sunucu tarafı eşitleme, destekçi anahtarını Bearer token olarak gönderir ve HTTPS altyapısı bağlantı IP'sini alır. Akış isteği ölçümleri bu değerlerin hiçbirini ham hâliyle saklamaz; yalnızca anahtar karmalarını, toplu kullanım verilerini ve kötüye kullanım incelemesi için her gün değişen, kısaltılmış bir IP HMAC'sini tutar.", + "privacyNeverRule": "Asla toplanmayanlar — istemler, yanıtlar, konuşmalar, sağlayıcı kimlik bilgileri, model trafiği, çalışma süresi, gecikme ve yerel sağlayıcı yapılandırması hiçbir zaman Radar'a gönderilmez.", + "activateButton": "Community'yi etkinleştir", "activating": "Etkinleştiriliyor...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "Zaten bir destekçi anahtarınız var mı?", + "keyInvalidFormatError": "Geçersiz anahtar biçimi. Anahtar \"omr_\" ile başlamalı ve ardından 40 onaltılık karakter gelmelidir.", + "activateWithKeyButton": "Destekçi erişimini etkinleştir", + "changeKeyButton": "Anahtarı değiştir", + "claimSectionTitle": "Henüz bir destekçi anahtarınız yok mu?", + "contributorButton": "Katkıda bulunan biriyim", + "contributorHint": "GitHub OAuth mevcut haftalık sıralamayı kontrol eder: İlk 10'a girenler 365 gün, 11–100. sıralardakiler ise 90 gün erişim kazanır. PR sayısı tek başına ilk 100 dışında erişim sağlamaz.", + "supporterButton": "Projeyi destekle", + "supporterHint": "Tek seferlik 6 aylık, 1 yıllık ve ömür boyu seçeneklerde otomatik yenileme yoktur; uygun süreler birikir ve ömür boyu erişim önceliklidir.", "colProvider": "Sağlayıcı", "colModel": "Model", "colQuota": "Kota", + "colLimits": "Hız sınırları", + "trainsOnPrompts": "İstemlerle eğitilir", + "trainsOnPromptsHelp": "Bu sağlayıcının koşulları, gönderdiğiniz istemleri eğitim amacıyla kullanabileceğini belirtir. Bu rozeti taşımayan modeller ya bunu yapmadıklarını belirtir ya da bu konuda bilgi sunmaz — herhangi bir açıklamanın bulunmaması garanti değildir.", + "limitsUnknownHelp": "Sınırlar yalnızca Radar akışı tarafından bildirilmiştir; bu kayıt için yayımlanmış sınır bulunmuyor", + "contextUnknownHelp": "Bu kayıt için bağlam penceresi bilinmiyor", + "capabilityUnknownHelp": "Özellik akış tarafından bildirilmedi", "colContext": "Bağlam", "colCapabilities": "Yetenekler", "colTos": "ToS Riski", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "yeni", "setupGuide": "Kurulum kılavuzu", "disabledByFeed": "Radar akışı tarafından devre dışı bırakıldı", "capTools": "Araçlar", "capVision": "Vizyon", "capThinking": "Düşünme", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Katalog", + "freeCreditsTab": "Ücretsiz krediler", + "freeCreditsSubtitle": "Radar tarafından izlenen sağlayıcıların referans bağlantıları — bunları kullanmak size ek maliyet getirmez ve OmniRoute'u desteklemeye yardımcı olur.", + "fixedLinksEmpty": "Henüz referans bağlantısı yok. Güncellemeleri kontrol etmek için Radar'ı senkronize edin.", + "requiredActionLabel": "Yapılacaklar:", + "claimButton": "Kredileri alın", + "campaignsTitle": "Sınırlı süreli kampanyalar", + "campaignsEmpty": "Şu anda etkin kampanya yok — daha sonra tekrar kontrol edin.", + "campaignsUpsellCommunity": "Sınırlı süreli kampanyalar, destekçilere özel bir avantajdır. Bu sayfadaki sabit bağlantılarda yer alan her şey herkes için ücretsiz kalır.", + "campaignsValidUntil": "{date} tarihine kadar geçerli", + "colActions": "İşlemler", + "localBadge": "yerel", + "editModel": "Düzenle", + "saveModel": "Kaydet", + "cancelEdit": "İptal", + "resetModel": "Yerel değişiklikleri sıfırla", + "hideModel": "Gizle", + "restoreModel": "Geri yükle", + "hiddenModelsTitle": "Gizli modeller", + "modelDisplayName": "Yerel görünen ad", + "modelEnabled": "Yerel olarak etkin", + "localStateSaveFailed": "Yerel Radar ayarları kaydedilemedi", + "guidedCombos": "Rehberli kombinasyonlar", + "offers": "Teklifler", + "intel": "Bilgiler" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar rehberli kombinasyonları", + "subtitle": "Radar tarafından seçilen eşdeğer ücretsiz modellerden öncelikli yedekler oluşturun.", + "backToRadar": "Radar'a dön", + "loading": "Kombinasyon önerileri yükleniyor...", + "familyLabel": "Model ailesi", + "modelsLabel": "Öncelik sırası", + "strategyReason": "Önceliklendirme önce en büyük yinelenen ücretsiz bütçeyi kullanır, ardından etkin sağlayıcılardaki yedeklere geçer.", + "generateButton": "Kombinasyon oluştur", + "generating": "Oluşturuluyor...", + "alreadyCreated": "Zaten oluşturuldu", + "created": "Kombinasyon oluşturuldu", + "noSuggestions": "Uygun model ailelerinden hiçbirinin şu anda en az iki sağlayıcıyla etkin bağlantısı yok.", + "catalogRequired": "Seçilmiş model ailelerini yüklemek için önce Radar kataloğunu eşitleyin.", + "loadFailed": "Radar kombinasyon önerileri yüklenemedi.", + "createFailed": "Kombinasyon oluşturulamadı. Sağlayıcı bağlantılarınızı gözden geçirip tekrar deneyin." }, "radarSetupPage": { "title": "Sağlayıcı Kurulumu", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "Bağlantı Dayanıklılığı", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Bağlantılarınız otomatik olarak düzelir", + "reassuranceDetail": "Genellikle herhangi bir işlem yapmanız gerekmez. OmniRoute, hatalardan sonra bağlantıyı geçici olarak dinlendirir ve ardından güvenli bir şekilde yeniden dener.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "İstekler gönderilebilir", + "coolingDown": "Yakında yeniden denenecek", + "lockedOut": "İlgilenmeniz gerekiyor" }, "table": { "status": "Durum", @@ -13598,7 +13609,7 @@ "remaining": "Kalan", "noLockouts": "Aktif kilit yok", "provider": "Sağlayıcı", - "id": "ID", + "id": "Kimlik", "authType": "Kimlik Doğrulama Türü", "priority": "Öncelik", "isActive": "Etkin", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Hedef model gerekli yeteneklere (görüş, araçlar, yapılandırılmış çıktı, bağlam penceresi) sahip olmadığında, gönderimden önce istekleri reddedin. Kombinasyon katmanı uyumluluk filtresini atlayan doğrudan tek sağlayıcı isteklerini korur.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Doğrudan tek modelli istekler için OmniRoute'un yerel bağlam penceresi ve maksimum giriş tokeni denetimini atlayın. Üst sağlayıcılar kendi gerçek sınırlarını uygulamaya devam eder. İstem sıkıştırma ve çıkış tokeni sınırları etkin kalır.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Arama istatistikleri ve son aramalar yalnızca hâlâ etkin bağlantısı olan sağlayıcıları hesaba katar (duckduckgo-free gibi anahtarsız sağlayıcılar her zaman hesaba katılır). Kapalı seçeneği, sağlayıcı kimliği olan tüm saklanan arama satırlarını korur.", "publicSystem": { "notFound": { "title": "Sayfa bulunamadı", @@ -13853,7 +13864,7 @@ "authorizeImportant": "Önemli: önce bu tarayıcıda trae.ai hesabınıza giriş yapmış olmalısınız. Yetkilendirme sayfası yalnızca mevcut bir oturumu onaylar — sizi giriş yaptıramaz. \"Giriş Başarısız\" mesajını görüyorsanız, \"solo.trae.ai'yi Aç\" seçeneğine tıklayın, giriş yapın ve ardından buraya geri dönün.", "waitingForAuthorization": "trae.ai için bekleniyor…", "authorizeWithBrowser": "Tarayıcı ile Yetkilendir", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai'yi aç", "orPasteManually": "veya bir jetonu manuel olarak yapıştırın", "manualInstructions": "solo.trae.ai hesabınıza giriş yapın, Geliştirici Araçları → Ağ'ı açın, herhangi bir sohbet mesajı gönderin ve Authorization: Cloud-IDE-JWT {tokenPlaceholder} istek başlığından JWT'yi kopyalayın. JWT ömrü ~14 gündür. Opsiyonel kimlik alanları, aynı istek gövdesindeki common_params içinden gelir.", "accessTokenLabel": "Erişim Jetonu (Cloud-IDE-JWT)", @@ -13876,7 +13887,7 @@ } }, "providerTest": { - "dialogLabel": "Test {provider}", + "dialogLabel": "{provider} sağlayıcısını test et", "deprecated": "kullanımdan kaldırılmış", "risk": "risk", "close": "Kapat", @@ -13886,7 +13897,7 @@ "clearConversation": "Sohbeti Temizle", "clear": "Temizle", "tabs": { - "test": "Test", + "test": "Test et", "logs": "Kayıtlar" }, "loadingLogs": "Günlükler yükleniyor…", @@ -13917,7 +13928,7 @@ "time": "Zaman", "latency": "Gecikme", "clientIp": "İstemci IP", - "proxy": "Proxy", + "proxy": "Vekil Sunucu", "direct": "Doğrudan", "type": "Türü", "level": "Seviye", @@ -14070,11 +14081,11 @@ "actionApprove": "Planı onayla", "actionCancel": "İptal et", "actionSeeInGraph": "Grafikte gör", + "actionRepeat": "Tekrarla", "actionDone": "İşlem uygulandı", "actionFailed": "İşlem başarısız: {error}", "detailFailed": "Ayrıntılar yüklenemedi: {error}", "mirroredInA2A": "A2A'da yansıtıldı", - "actionRepeat": "Tekrarla", "repeatConfirm": "Onaylamak için tekrar tıklayın", "repeatDone": "Yeni çalıştırma oluşturuldu", "repeatUnavailable": "Orijinal girdi kullanılamıyor" @@ -14088,57 +14099,57 @@ "networkError": "Ağ hatası — sağlayıcı maruziyet ayarı güncellenemedi" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Destekçi teklifleri", + "subtitle": "Radar'dan resmî indirimler, krediler, deneme fırsatları ve incelenmiş iş ortağı avantajları.", + "backToRadar": "Radar'a dön", + "loading": "Teklifler yükleniyor...", + "refresh": "Teklifleri yenile", + "refreshing": "Yenileniyor...", + "loadFailed": "Teklifleri yenileyemedik. Son doğrulanmış yerel önbellek korunuyor.", + "empty": "Şu anda etkin teklif bulunmuyor.", + "keyRequiredTitle": "Destekçi anahtarı gerekli", + "keyRequiredDescription": "Teklifler, canlı bir Radar avantajıdır. Radar ekranında mevcut bir destekçi anahtarı ekleyin, katkıda bulunan durumunuzu doğrulayın veya bir anahtar edinmek için projeyi destekleyin.", + "contributorButton": "Katkıda bulunanım", + "supporterButton": "Projeyi destekle", + "partnerBadge": "İş ortağı", + "officialBadge": "Resmî", + "conditionsLabel": "Koşullar:", + "validUntil": "{date} tarihine kadar geçerli", + "noExpiry": "Duyurulmuş bir sona erme tarihi yok", + "openOffer": "Teklifi görüntüle", + "trialDays": "{days, plural, one {# gün} other {# gün}}" }, "radarIntelPage": { "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", + "subtitle": "Radar'a ait ELO sıralamaları ve doğrulanmış katalog değişimleri.", + "backToRadar": "Radar'a dön", + "loading": "Intel yükleniyor...", + "refresh": "Intel'i yenile", + "syncing": "Yenileniyor...", + "loadFailed": "Intel yenilenemedi. Son doğrulanmış yerel önbellek korunuyor.", + "empty": "Henüz doğrulanmış bir Intel anlık görüntüsü mevcut değil.", + "supporterBadge": "Radar Destekçisi", + "methodology": "Metodoloji", + "eloMethod": "ELO, başlangıç {initial}, K={factor}", + "freshness": "Katalog güncelliği", + "ageDays": "{days, plural, one {# günlük} other {# günlük}}", + "trend": "Katalog eğilimi", + "modelDelta": "{current} model, +{added} / -{removed}", + "ranking": "Model sıralaması", + "noRankings": "Henüz doğrulanmış bir karşılaştırma mevcut değil.", "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "category": "Kategori", + "rating": "Puan", + "matches": "Karşılaşmalar", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Güncel", + "aging": "Eskimekte", + "stale": "Güncelliğini yitirmiş" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Büyüyor", + "stable": "Sabit", + "shrinking": "Küçülüyor" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Talep sağlayıcı bağlam penceresini aşıyor" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference, bir OmniRoute Açık Kaynak Dostu'dur", + "description": "Düzinelerce öncü modeli OpenAI uyumlu tek bir uç nokta üzerinden yeniden sunan, maliyete göre sıralanmış bir ağ geçidi — her isteği liste fiyatını asla aşmadan uygun olan en ucuz sağlayıcıya yönlendirir.", + "cta": "API Anahtarı Al", + "partnerLinkNote": "İş ortağı bağlantısı", + "dismissAriaLabel": "Kapat" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models kataloğunda düşünme düzeyi varyantlarının (ör. -low, -medium, -high) oluşturulmasını devre dışı bırakın." } diff --git a/src/i18n/messages/uk-UA.json b/src/i18n/messages/uk-UA.json index 601254f7a2..5b95cd89dd 100644 --- a/src/i18n/messages/uk-UA.json +++ b/src/i18n/messages/uk-UA.json @@ -190,7 +190,7 @@ "creating": "Створення", "comboCreated": "Комбінацію створено", "swapFormats": "Поміняти формати", - "daysAgo": "Days Ago", + "daysAgo": "Днів тому", "retries": "Повтори", "errorDuringRestore": "Помилка під час відновлення", "eventsAppearHint": "Події з'являться тут", @@ -198,7 +198,7 @@ "webSearchDesc": "Пошук в Інтернеті", "audioProvidersHeading": "Аудіопровайдери", "cloudAgentProviders": "Постачальники хмарних агентів", - "minutesAgo": "Minutes Ago", + "minutesAgo": "Хвилин тому", "a": "A", "liveAutoRefreshing": "Наживо · автооновлення", "webSearch": "Веб-пошук", @@ -214,489 +214,489 @@ "backupReasonManual": "Ручне резервне копіювання", "safeSearchModerate": "Помірний", "activeLimiters": "Активні обмежувачі", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "a2aCardTitle": "Заголовок картки A2A", + "cloudWorkerUnreachable": "Хмарний воркер недоступний", + "testFailed": "Тест не пройдено", + "compatibleBaseUrlHint": "Підказка щодо сумісної базової URL-адреси", + "usageTracking": "Відстеження використання", + "disableCloudTitle": "Заголовок вимкнення хмари", + "noConnections": "Немає підключень", + "providerHealth": "Стан провайдера", + "confirmDbImport": "Підтвердження імпорту БД", + "notAvailableSymbol": "Символ недоступності", + "backupsAvailable": "Доступні резервні копії", + "providerAuto": "Автоматичний вибір провайдера", + "newProviderNamePlaceholder": "Заповнювач назви нового провайдера", + "a2aQuickStartStep2": "Крок 2 швидкого старту A2A", + "ok": "Гаразд", + "available": "Доступно", + "noBackupYet": "Резервних копій ще немає", + "more": "Більше", + "noCompatibleYet": "Сумісних варіантів ще немає", + "multiProvider": "Кілька провайдерів", + "repairEnvHint": "Підказка щодо відновлення середовища", + "disablingCloud": "Вимкнення хмари", + "testBench": "Випробувальний стенд", + "valid": "Дійсне", + "cloudBenefitShare": "Перевага хмари: спільний доступ", + "mcpCardTitle": "Заголовок картки MCP", + "disableConfirm": "Підтвердити вимкнення", + "filters": "Фільтри", + "expirationBannerExpiredDesc": "Опис банера про завершення терміну дії", + "saveComboDefaults": "Зберегти типові значення комбінації", + "cloudConnectedVerified": "Підключення до хмари перевірено", + "uptime": "Час безвідмовної роботи", + "compatibleProdPlaceholder": "Заповнювач сумісного робочого середовища", + "fallbackChainsTitle": "Заголовок ланцюжків резервного перемикання", + "oauthLabel": "Мітка OAuth", + "a2aCardDescription": "Опис картки A2A", + "okShort": "Гаразд, коротко", + "maintenance": "Технічне обслуговування", + "formatConverter": "Конвертер форматів", + "zedImportNetworkError": "Помилка мережі під час імпорту Zed", + "apiKeyLabel": "Мітка ключа API", + "noModelsForProvider": "Немає моделей для провайдера", + "mcpCardDescription": "Опис картки MCP", + "apiTypeLabel": "Мітка типу API", + "configuredProvidersLabel": "Мітка налаштованих провайдерів", + "maxRetriesLabel": "Мітка максимальної кількості повторних спроб", + "title": "Заголовок", + "output": "Вивід", + "prefixHint": "Підказка для префікса", + "skipWizard": "Пропустити майстер налаштування", + "failedCount": "Кількість невдалих", + "confirmDbImportDesc": "Опис підтвердження імпорту БД", + "entries": "Записи", + "until": "До", + "disableCombo": "Вимкнути комбінацію", + "liveMonitorDescriptionPrefix": "Префікс опису моніторингу в реальному часі", + "runningCount": "Кількість запущених", + "noActiveConnectionsInGroup": "У групі немає активних з’єднань", + "savedSuccessfully": "Успішно збережено", + "systemStorage": "Системне сховище", + "videoDesc": "Опис відео", + "maxResults": "Максимальна кількість результатів", + "timeRangeMonth": "Часовий діапазон: місяць", + "testSummary": "Підсумок тестування", + "failedSetPassword": "Не вдалося встановити пароль", + "audio": "Аудіо", + "restore": "Відновити", + "disableWarning": "Попередження про вимкнення", + "moderationsDesc": "Опис модерацій", + "providerHealthStatusAria": "ARIA-мітка стану справності провайдера", + "modelNamePlaceholder": "Заповнювач назви моделі", + "mcpQuickStartStep2": "Крок 2 швидкого початку роботи з MCP", + "quickStart": "Швидкий початок", + "fullExportFailedWithError": "Не вдалося виконати повний експорт через помилку", + "loadingBackups": "Завантаження резервних копій", + "anthropicBaseUrlPlaceholder": "Заповнювач базової URL-адреси Anthropic", + "description": "Опис", + "noProviderFound": "Постачальника не знайдено", + "auto": "Автоматично", + "protocolsDescription": "Опис протоколів", + "cloudSessionNote": "Примітка про хмарний сеанс", + "advancedSettings": "Розширені налаштування", + "defaultStrategy": "Стратегія за замовчуванням", + "purgeExpiredLogs": "Очистити прострочені журнали", + "justNow": "Щойно", + "providerTestFailed": "Не вдалося перевірити постачальника", + "openaiBaseUrlPlaceholder": "Заповнювач базової URL-адреси Openai", + "image": "Зображення", + "failedCreateChain": "Не вдалося створити ланцюжок", + "importDatabase": "Імпортувати базу даних", + "allDataLocal": "Усі дані зберігаються локально", + "sectionTitle": "Заголовок розділу", + "failedToggle": "Не вдалося перемкнути", + "editCombo": "Редагувати комбінацію", + "testResults": "Результати перевірки", + "searchQuery": "Пошуковий запит", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "Дублювати", + "createCombo": "Створити комбінацію", + "searchTypeWeb": "Тип пошуку: веб", + "addChain": "Додати ланцюжок", + "prefixLabel": "Мітка префікса", + "listModelsDesc": "Опис списку моделей", + "databaseSize": "Розмір бази даних", + "chainCreated": "Ланцюжок створено", + "providerTestTimeout": "Час очікування перевірки постачальника вичерпано", + "routingStrategy": "Стратегія маршрутизації", + "translateAction": "Перекласти", + "exportFailed": "Не вдалося експортувати", + "connectedVerificationPending": "Підключено, очікується перевірка", + "a2aQuickStartTitle": "Заголовок швидкого старту A2A", + "couldNotTest": "Не вдалося перевірити", + "testAllCompatible": "Перевірити всі сумісні", + "anthropicCompatibleName": "Назва сумісного з Anthropic постачальника", + "disabling": "Вимкнення", + "failedEnable": "Не вдалося ввімкнути", + "categoryUtility": "Категорія «Службові»", + "customUrlOptional": "Власна URL-адреса (необов’язково)", + "localProviders": "Локальні провайдери", + "comboNamePlaceholder": "Заповнювач назви комбінації", + "memoryRss": "Резидентна пам’ять (RSS)", + "disableProvider": "Вимкнути провайдера", + "welcomeDesc": "Опис привітання", + "nameLabel": "Мітка назви", + "allOperational": "Усі системи працюють", + "backupNow": "Створити резервну копію зараз", + "providerMaxRetriesAria": "ARIA-мітка максимальної кількості повторних спроб провайдера", + "textToSpeechDesc": "Опис перетворення тексту на мовлення", + "machineId": "Ідентифікатор машини", + "globalProxy": "Глобальний проксі", + "hitsMisses": "Влучання та промахи", + "testDesc": "Опис тесту", + "chatDesc": "Опис чату", + "importSuccess": "Імпорт виконано успішно", + "chat": "Чат", + "a2aQuickStartStep1": "Крок 1 швидкого старту A2A", + "importFailed": "Не вдалося імпортувати", + "inputPlaceholder": "Заповнювач поля введення", + "providerModelsTitle": "Назва розділу моделей провайдера", + "lastBackup": "Остання резервна копія", + "yourEndpoint": "Ваша кінцева точка", + "autoDisableThresholdDesc": "Опис порога автоматичного вимкнення", + "rerankDesc": "Опис повторного ранжування", + "modelsPathPlaceholder": "Заповнювач шляху до моделей", + "noCombosYet": "Комбінацій ще немає", + "connectedVerificationPendingWithError": "Підключено, очікується перевірка з помилкою", + "comboDefaultsGuideHint1": "Підказка 1 посібника зі стандартних параметрів комбінації", + "enableCloudTitle": "Назва розділу ввімкнення хмари", + "configuredProvidersHint": "Підказка щодо налаштованих провайдерів", + "paused": "Призупинено", + "llmProviders": "Провайдери LLM", + "enableCombo": "Увімкнути комбінацію", + "removeProviderOverrideAria": "ARIA-мітка видалення перевизначення провайдера", + "nodeVersion": "Версія Node", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "Не вдалося експортувати через помилку", + "proxyConfigured": "Проксі налаштовано", + "concurrencyPerModel": "Паралельність для кожної моделі", + "protocolTasksLabel": "Мітка завдань протоколу", + "oauthProviders": "Провайдери OAuth", + "lockedCount": "Кількість заблокованих", + "deleteChainConfirm": "Підтвердження видалення ланцюжка", + "recentTranslations": "Нещодавні переклади", + "zedImportButton": "Кнопка імпорту Zed", + "responsesDesc": "Опис відповідей", + "testedCount": "Кількість протестованих", + "providersCommaSeparatedPlaceholder": "Заповнювач для провайдерів, розділених комами", + "signatureDefaults": "Типові значення підпису", + "errorCreating": "Помилка під час створення", + "timeRangeYear": "Часовий діапазон: рік", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", + "cloudDisabledSuccess": "Хмару успішно вимкнено", + "deleteConfirm": "Підтвердження видалення", + "check": "Перевірити", + "safeSearch": "Безпечний пошук", + "protocolLastActivity": "Остання активність протоколу", + "openMcpDashboard": "Відкрити панель керування MCP", "testBenchTab": "Test Bench Tab", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "chatPathLabel": "Мітка шляху чату", + "retryDelay": "Затримка повторної спроби", + "errorUpdating": "Помилка під час оновлення", + "ideCliIntegrations": "Інтеграції з IDE та CLI", + "imageGeneration": "Генерація зображень", + "apiKeyRequired": "Потрібен ключ API", + "resetAllTitle": "Заголовок скидання всіх налаштувань", + "connectionError": "Помилка підключення", + "modelName": "Назва моделі", + "apiKeyForCheck": "Ключ API для перевірки", + "cloudRequestTimeout": "Час очікування хмарного запиту", + "showConfiguredOnly": "Показувати лише налаштовані", "showFreeOnly": "Тільки безкоштовно", "addFirstProvider": "Додайте свого першого постачальника", "addFirstProviderDesc": "Підключіть постачальника AI, щоб розпочати маршрутизацію запитів через OmniRoute. Ви можете використовувати безкоштовні постачальники, ключі API або облікові записи OAuth.", "learnMore": "Дізнайтесь більше", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "Включити домени", + "promptCache": "Кеш промптів", + "cloudConnected": "Хмару підключено", + "deleteChain": "Видалити ланцюжок", + "chatPathPlaceholder": "Заповнювач шляху чату", + "databasePath": "Шлях до бази даних", + "usingLocalServer": "Використовується локальний сервер", + "globalComboConfig": "Глобальна конфігурація комбінацій", + "backupFailed": "Не вдалося створити резервну копію", + "tabProtocols": "Протоколи вкладок", + "continue": "Продовжити", + "categorySearch": "Пошук категорій", + "rateLimitStatus": "Стан обмеження частоти запитів", + "repairEnvSuccess": "Середовище успішно відновлено", + "nameRequired": "Ім’я обов’язкове", + "country": "Країна", + "trackMetricsDesc": "Опис відстеження метрик", + "durationSecondsShort": "Тривалість у секундах (скорочено)", + "formatConverterDescription": "Опис конвертера форматів", + "cloudBenefitAccess": "Доступ до переваг хмари", + "maxRetries": "Максимальна кількість повторних спроб", + "queueTimeout": "Час очікування черги", "queueDepth": "Глибина черги", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "Додати провайдера", + "realtime": "У реальному часі", + "totalTranslations": "Усього перекладів", + "protocolActiveStreamsLabel": "Позначка активних потоків протоколу", + "repairEnv": "Відновити середовище", + "modelsCount": "Кількість моделей", + "viewBackups": "Переглянути резервні копії", + "responsesApi": "API відповідей", + "copyComboName": "Копіювати назву комбінації", + "failures": "Невдачі", + "failedUpdate": "Не вдалося оновити", + "imageDesc": "Опис зображення", + "failedCreate": "Не вдалося створити", + "remainingOfLimit": "Залишок від ліміту", + "protocolsTitle": "Назва протоколів", + "expirationBannerExpiringSoonDesc": "Опис банера про завершення терміну дії найближчим часом", + "source": "Джерело", + "failed": "Не вдалося", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "Крок 1 швидкого старту MCP", + "runTest": "Запустити тест", + "loadingFallbackChains": "Завантаження ланцюжків резервування", + "healthy": "Справний", + "version": "Версія", + "saveBlockWeighted": "Зберегти зважений блок", + "zedImportNone": "Немає імпорту Zed", + "noBackupsYet": "Резервних копій ще немає", + "noGlobalProxy": "Немає глобального проксі", + "noModels": "Немає моделей", + "stickyLimit": "Ліміт закріплення", + "passedCount": "Кількість успішних перевірок", + "zedImportFailed": "Не вдалося імпортувати з Zed", + "saving": "Збереження", + "testAll": "Перевірити все", + "globalProxyDesc": "Опис глобального проксі", + "latencyP99": "Затримка P99", + "connectingToCloud": "Підключення до хмари", + "responses": "Відповіді", + "errorDeleting": "Помилка видалення", + "openaiPrefixPlaceholder": "Заповнювач префікса Openai", + "enterPassword": "Введіть пароль", + "openA2aDashboard": "Відкрити панель A2A", + "enableProvider": "Увімкнути провайдера", + "modeTest": "Тестовий режим", + "failedDeleteChain": "Не вдалося видалити ланцюжок", + "providerDesc": "Опис провайдера", + "templateLoadHint": "Підказка щодо завантаження шаблону", + "lastFailure": "Останній збій", + "moveDown": "Перемістити вниз", + "providerLabel": "Мітка провайдера", + "clearCacheFailed": "Не вдалося очистити кеш", + "imagesGenerations": "Генерування зображень", + "repairEnvWorking": "Відновлення робочого середовища", + "millisecondsShort": "мс", + "globalLabel": "Глобальна мітка", + "failuresPlural": "Збої", + "completionsLegacyDesc": "Опис застарілих доповнень", + "searchProviders": "Пошук провайдерів", + "chatPathHint": "Підказка щодо шляху чату", + "defaultStrategyDesc": "Опис стратегії за замовчуванням", + "latencyP95": "Затримка P95", + "textToSpeech": "Перетворення тексту на мовлення", + "searchType": "Тип пошуку", + "messages": "Повідомлення", + "aggregatorsGateways": "Агрегатори та шлюзи", + "comboStrategyAria": "Комбінована стратегія Aria", + "input": "Вхідні дані", + "testingConnection": "Перевірка підключення", + "excludeDomains": "Виключити домени", + "webCookieProviders": "Провайдери веб-файлів cookie", + "allTestsPassed": "Усі тести пройдено", + "openaiCompatibleName": "Назва, сумісна з OpenAI", + "warningCostOptimizedPartialPricing": "Попередження: часткове ціноутворення з оптимізацією витрат", + "comboDefaultsGuideTitle": "Назва посібника зі стандартних налаштувань комбінацій", + "hoursAgo": "Годин тому", + "notAvailable": "Недоступно", + "skipAndContinue": "Пропустити й продовжити", + "moderations": "Модерації", + "proxyConfig": "Конфігурація проксі", + "upstreamProxyProviders": "Провайдери висхідних проксі", + "exportAll": "Експортувати все", + "queuedCount": "Кількість у черзі", + "resetAll": "Скинути все", + "noTranslations": "Перекладів немає", + "avgLatency": "Середня затримка", + "throttleStatus": "Стан обмеження частоти", + "backupRetentionDesc": "Опис терміну зберігання резервних копій", + "noCBData": "Дані Cb відсутні", + "chainDeleted": "Ланцюжок видалено", + "timeLeft": "Залишилося часу", + "expirationBannerExpired": "Термін дії банера минув", + "language": "Мова", + "invalidFileType": "Недійсний тип файлу", + "monitoredProviders": "Провайдери під моніторингом", + "errors": "Помилки", + "heap": "Купа", + "chatCompletions": "Завершення чатів", + "exampleTemplatesHint": "Підказка щодо шаблонів прикладів", + "retryDelayLabel": "Мітка затримки повторної спроби", + "audioTranscription": "Транскрибування аудіо", + "fallbackChainsDesc": "Опис резервних ланцюжків", + "exampleTemplates": "Шаблони прикладів", + "connectionsCount": "Кількість з’єднань", + "modelsPathLabel": "Мітка шляху до моделей", + "activeProvidersHint": "Підказка щодо активних провайдерів", + "activeLockouts": "Активні блокування", + "invalid": "Недійсне значення", + "skipPassword": "Пропустити пароль", + "moveUp": "Перемістити вгору", + "timeRange": "Часовий діапазон", + "stickyLimitDesc": "Опис закріпленого ліміту", + "cloudBenefitEdge": "Перевага хмари: периферійні обчислення", + "custom": "Власний", + "verifying": "Перевірка", + "baseUrlLabel": "Мітка базової URL-адреси", + "setPassword": "Установити пароль", + "safeSearchStrict": "Суворий безпечний пошук", + "noChangesSinceBackup": "Немає змін із моменту резервного копіювання", + "modelsPathHint": "Підказка щодо шляху до моделей", + "audioTranscriptions": "Транскрибування аудіо", + "testCombo": "Перевірити комбінацію", + "mcpQuickStartTitle": "Короткий посібник із початку роботи з MCP", + "comboUpdated": "Комбінацію оновлено", + "weighted": "Зважений", + "providers": "Провайдери", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", + "noFallbackChainsDesc": "Опис відсутності ланцюжків резервного перемикання", + "yesImport": "Так, імпортувати", + "lockoutsAutoRefreshHint": "Підказка щодо автоматичного оновлення блокувань", + "tabApis": "Вкладка API", + "sectionDescription": "Опис розділу", + "filter": "Фільтр", + "purgeLogsFailed": "Не вдалося очистити журнали", + "latency": "Затримка", + "testAllOAuth": "Перевірити всі OAuth", + "mcpQuickStartStep3": "Крок 3 короткого посібника з MCP", + "repairEnvFailed": "Не вдалося відновити env", + "zedImportHint": "Підказка щодо імпорту Zed", + "modelsAcrossEndpoints": "Моделі в різних кінцевих точках", + "autoDisableBannedAccounts": "Автоматично вимикати заблоковані облікові записи", + "securityDesc": "Опис безпеки", + "listModels": "Список моделей", + "backupRestore": "Резервне копіювання та відновлення", + "target": "Ціль", + "zedImportSuccess": "Імпорт Zed успішно виконано", + "lastHeaderUpdate": "Останнє оновлення заголовка", + "categoryCore": "Категорія «Основне»", + "noFallbackChains": "Немає ланцюжків резервного перемикання", + "noSearchProviders": "Немає пошукових провайдерів", + "autoBalance": "Автоматичне балансування", + "noModelsYet": "Моделей ще немає", + "signatureFamily": "Сімейство підписів", + "externalApiCalls": "Зовнішні виклики API", + "providerOverridesDesc": "Опис перевизначень провайдера", + "signatureTool": "Інструмент підпису", + "connectionFailed": "Не вдалося підключитися", + "activeLimitersPlural": "Активні обмежувачі, множина", + "doneDesc": "Опис завершення", + "down": "Не працює", + "noDataYet": "Даних ще немає", + "activeProviders": "Активні провайдери", + "nameInvalid": "Недійсна назва", + "skip": "Пропустити", + "createChain": "Створити ланцюжок", + "audioSpeech": "Озвучення аудіо", + "cacheCleared": "Кеш очищено", + "searchTypeNews": "Тип пошуку: новини", + "durationMillisecondsShort": "Тривалість у мілісекундах, скорочено", + "addOpenAICompatible": "Додати сумісний з Open Ai", "chatTesterTab": "Chat Tester Tab", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", + "queued": "У черзі", + "domainPlaceholder": "Заповнювач домену", + "durationMinutesShort": "Тривалість у хвилинах, скорочено", + "verifyingConnection": "Перевірка підключення", + "imageProviders": "Провайдери зображень", + "protocolToolsLabel": "Мітка інструментів протоколу", + "queryPlaceholder": "Заповнювач запиту", + "videoGeneration": "Генерування відео", + "timeRangeWeek": "Діапазон часу: тиждень", + "limitExhausted": "Ліміт вичерпано", + "failedDisable": "Не вдалося вимкнути", + "inMemoryNote": "Примітка щодо зберігання в пам’яті", + "compatibleHint": "Підказка щодо сумісності", + "errorShort": "Короткий опис помилки", + "advancedHint": "Розширена підказка", + "restoreFailed": "Не вдалося відновити", + "searchProvidersHeading": "Заголовок провайдерів пошуку", + "comboName": "Назва комбінації", + "autoDisableDescription": "Опис автоматичного вимкнення", "embeddingsDesc": "Векторні представлення для семантичного пошуку", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "operational": "Працює", + "testAllApiKey": "Перевірити всі API-ключі", + "backupCreated": "Резервну копію створено", + "errorDuringImport": "Помилка під час імпорту", + "comboDefaultsGuideHint2": "Підказка 2 посібника зі стандартних налаштувань комбінацій", + "connecting": "Підключення", + "fillModelAndProviders": "Заповніть модель і постачальників", + "syncing": "Синхронізація", + "resetConfirm": "Підтвердьте скидання", + "trackMetrics": "Відстежувати метрики", + "successful": "Успішно", + "recovering": "Відновлення", + "autoDisableThreshold": "Поріг автоматичного вимкнення", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "Синхронізація даних", + "cloudBenefitPorts": "Переваги хмарних портів", + "compatibleProviders": "Сумісні постачальники", "freeTierProviders": "Безкоштовні постачальники рівня", "freeTierLabel": "Доступний безкоштовний рівень", "freeTierProvidersDesc": "Постачальники з безкоштовними рівнями — деякі вимагають реєстрації ключа API, інші взагалі не потребують облікових даних.", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "Очистити кеш", + "reqs": "Запити", + "addAnthropicCompatible": "Додати сумісного з Anthropic постачальника", + "apiKeyProviders": "Постачальники API-ключів", + "tabsAria": "ARIA-мітка вкладок", + "resetting": "Скидання", + "millisecondsAbbr": "мс", + "backupReasonPreRestore": "Причина створення резервної копії перед відновленням", + "disableCloud": "Вимкнути хмару", + "newProviderNameAria": "ARIA-мітка назви нового постачальника", + "passwordsMismatch": "Паролі не збігаються", + "a2aQuickStartStep3": "Крок 3 швидкого старту A2A", + "liveMonitorDescriptionSuffix": "Суфікс опису моніторингу в реальному часі", + "failedAddProvider": "Не вдалося додати постачальника", + "addAtLeastOneProvider": "Додайте принаймні одного постачальника", + "reasonSeparator": "Роздільник причин", + "zedImporting": "Імпорт із Zed", + "confirmPasswordPlaceholder": "Підтвердьте пароль", + "whatYouGet": "Що ви отримаєте", + "signatureSession": "Підпис сеансу", + "errorCountNoCode": "Кількість помилок без коду", + "testing": "Тестування", + "providersCommaSeparated": "Постачальники, розділені комами", + "exportDatabase": "Експортувати базу даних", + "hitRate": "Частота влучань", + "completionsLegacy": "Застарілі завершення", + "removeModel": "Видалити модель", + "timeRangeDay": "Діапазон часу: день", + "cloudRequestFailed": "Помилка хмарного запиту", + "updatedAt": "Оновлено о", + "monitoredProvidersHint": "Підказка щодо відстежуваних провайдерів", + "connectionSuccessful": "З’єднання успішне", + "latencyP50": "Затримка P50", + "logsDeleted": "Журнали видалено", + "chatTester": "Тестер чату", + "safeSearchOff": "Безпечний пошук вимкнено", + "nameHint": "Підказка щодо назви", + "debugToggle": "Перемикач налагодження", + "embedding": "Вбудовування", + "issuesLabel": "Мітка проблем", + "optionAny": "Будь-який варіант", + "maxNestingDepth": "Максимальна глибина вкладеності", + "rerank": "Повторне ранжування", + "checking": "Перевірка", + "getStarted": "Розпочати", + "restoreSuccess": "Відновлення успішне", + "issuesDetected": "Виявлено проблеми", + "signatureCache": "Кеш сигнатур", + "modelLockouts": "Блокування моделей", + "usingCloudProxy": "Використовується хмарний проксі", + "loadingHealth": "Завантаження стану працездатності", + "providerOverrides": "Перевизначення провайдерів", + "audioTranscriptionDesc": "Опис транскрибування аудіо", + "learnedFromHeaders": "Вивчено із заголовків", + "totalRequests": "Усього запитів", + "cloudUnstableNote": "Примітка про нестабільність хмари", "gamificationAdmin": "Адміністратор Gamification", "monitorAnomaliesAndHealth": "Відстежуйте аномалії та стан системи", "flaggedAnomalies": "Позначені аномалії", @@ -704,7 +704,7 @@ "apiKey": "Ключ API", "xpLastHour": "XP (1 год)", "zScore": "Z-оцінка", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "Підозріле", "tokensCommunityServers": "Сервери спільноти", "tokensServerNamePlaceholder": "Ім'я сервера", "tokensApiKeyPlaceholder": "Ключ API", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "Завантаження більше…", "recommended": "Рекомендовано", "understand": "Я розумію", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "Пакетна обробка", + "batchConceptSubtitle": "Асинхронно обробляйте тисячі запитів приблизно за 50% вартості (у межах 24 годин). Ідеально підходить для оцінювання, класифікації та вбудовувань.", + "batchConceptHowItWorks": "Як це працює", + "batchConceptBenefit50pct": "Знижка 50% на вхідні та вихідні токени", + "batchConceptAsync24h": "Асинхронне виконання з завершенням у межах 24 годин", + "batchConceptUseCases": "Найкраще підходить для масової класифікації, оцінювання та вбудовувань", + "batchHeaderSubtitle": "Виконуйте багато запитів як одне завдання", + "batchStep1": "1 · Завантажити JSONL", + "batchStep1Desc": "Додати запити", + "batchStep2": "2 · Створити пакет", + "batchStep2Desc": "Запустити завдання", + "batchStep3": "3 · Отримати результати", + "batchStep3Desc": "Завантажити результат", + "filesConceptTitle": "Файли пакетів", + "filesConceptSubtitle": "JSONL-файли, що використовуються пакетами: вхідні запити, результати та помилки.", + "filesConceptInput": "Вхідні дані — ваш JSONL з одним запитом у кожному рядку", + "filesConceptOutput": "Вихідні дані — результати виконаних запитів", + "filesConceptError": "Помилки — запити, які не вдалося виконати", + "filesConceptRetention": "Термін зберігання: 30 днів за замовчуванням (29 днів в Anthropic)", + "wizardTitle": "Новий пакет", + "wizardClose": "Закрити", + "wizardNext": "Далі", + "wizardBack": "Назад", + "wizardCancel": "Скасувати", + "wizardCreate": "Створити пакет", + "wizardCreating": "Створення…", + "wizardStep1Destination": "Призначення", + "wizardStep2Input": "Вхідні дані", + "wizardStep3Validate": "Перевірити", + "wizardStep4Cost": "Вартість і створення", + "wizardProviderLabel": "Провайдер", + "wizardEndpointLabel": "Кінцева точка", + "wizardModelLabel": "Модель", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (ми конвертуємо)", + "wizardDropOrPick": "Перетягніть файл сюди або натисніть, щоб вибрати", + "wizardCsvMappingTitle": "Зіставити стовпці CSV → поля запиту", + "wizardCsvMappingAddField": "Додати поле", "wizardCsvNoColumns": "У заголовку CSV не виявлено стовпців.", "wizardCsvIgnoreColumn": "— ігнорувати —", "wizardCsvCustomIdMapped": "custom_id зіставлено", @@ -847,7 +847,7 @@ "wizardCsvRowsParsed": "{count} рядків розібрано", "wizardCsvRowsSkipped": "{count} рядків пропущено", "wizardCsvRowError": "Рядок {row}: {reason}", - "wizardValidationOk": "All lines valid", + "wizardValidationOk": "Усі рядки дійсні", "wizardValidating": "Перевірка…", "wizardValidationParseFailed": "Помилка перевірки — не вдалося розібрати вміст.", "wizardValidationSummary": "{lines} рядків · {ids} унікальних custom_ids", @@ -855,105 +855,105 @@ "wizardValidationDuplicateIds": "Виявлено дублікати custom_ids:", "wizardValidationFirstErrors": "Помилки (перші {count}):", "wizardValidationLine": "Рядок {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationErrors": "Помилки перевірки", + "wizardValidationPreview": "Попередній перегляд (перші 5 запитів)", + "wizardValidationSamplingNote": "Файл великий — перевірено за вибіркою (перші 1000 + останні 100 рядків). Повна перевірка виконується на сервері.", + "wizardCostSync": "Вартість синхронної обробки", + "wizardCostBatch": "Вартість пакетної обробки (-50%)", + "wizardCostSavings": "Економія", + "wizardCostEstimatedNotice": "Орієнтовна вартість — фактична сума може відрізнятися.", + "wizardErrorUpload": "Не вдалося завантажити файл. Спробуйте ще раз.", + "wizardErrorCreate": "Не вдалося створити пакет. Спробуйте ще раз.", + "wizardEmptyProviders": "Підключіть провайдера з підтримкою пакетної обробки (OpenAI, Anthropic або Gemini), щоб створити пакет.", + "uploadModalTitle": "Завантажити файл пакета", + "uploadModalDropOrPick": "Перетягніть файл .jsonl сюди або натисніть, щоб вибрати", + "uploadModalUpload": "Завантажити", + "uploadModalCancel": "Скасувати", + "uploadModalError": "Не вдалося завантажити. Спробуйте ще раз.", + "uploadModalSuccess": "Завантажено", + "uploadModalSizeLimit": "Макс. 512 МБ", + "batchListNewButton": "Новий пакет", + "batchListAutoRefresh": "Автооновлення кожні 30 с", + "batchListCostColumn": "Вартість", + "batchActionCancel": "Скасувати", + "batchActionDownloadOutput": "Завантажити результат", + "batchActionDownloadErrors": "Завантажити помилки", + "batchActionRetry": "Повторити невдалі", + "batchActionRetryConfirm": "Повторити {n} невдалих запитів? Остаточна вартість залежить від фактично використаних токенів.", + "expirationBadgeCritical": "Критично", + "expirationBadgeWarning": "Незабаром", + "expirationBadgeNormal": "Очікує", + "expirationBadgeExpired": "Термін дії минув", + "filesListUploadButton": "Завантажити", + "filesListUsedByColumn": "Використовується в", + "filesListUsedByNone": "Немає", + "filesListUsedByRoleInput": "вхідні дані", + "filesListUsedByRoleOutput": "вихідні дані", + "filesListUsedByRoleError": "помилка", + "filesListSizeColumn": "Розмір", + "batchListProgressPartial": "(частково)", + "batchListProviderColumn": "Провайдер", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "Інше", + "batchListTitle": "Пакети", + "batchListCount": "Пакетів: {count}", + "batchListRemovingCompleted": "Видалення…", + "batchListRemoveCompleted": "Видалити завершені", + "batchListTableStatus": "Статус", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "Кінцева точка", + "batchListTableModel": "Модель", + "batchListTableProgress": "Прогрес", + "batchListTableCreated": "Створено", + "batchListTableExpires": "Термін дії закінчується", + "batchListLoading": "Завантаження…", + "batchListEmpty": "Пакетів не знайдено", + "batchListValidating": "Перевірка…", + "batchStatusAll": "Усі статуси", + "batchStatusInProgress": "Виконується", + "batchStatusValidating": "Перевіряється", + "batchStatusFinalizing": "Завершується", + "batchStatusCompleted": "Завершено", + "batchStatusFailed": "Не вдалося", + "batchStatusCancelled": "Скасовано", + "batchStatusCancelling": "Скасовується", + "batchStatusExpired": "Термін дії минув", + "batchStatusCompletedWithFailures": "завершено з помилками", + "batchStatusInProgressWithFailures": "виконується (з помилками)", + "batchStatusFinalizingWithFailures": "завершується (з помилками)", + "batchStatusCancelledWithFailures": "скасовано з помилками", + "batchStatusExpiredWithFailures": "термін дії минув (частково)", + "wizardCostEstimating": "Оцінювання вартості…", + "wizardCostRequests": "Запити", + "wizardCostInputTok": "вхідні токени", + "wizardCostOutputTok": "вихідні токени", + "wizardCostWindow": "Період", + "wizardDestinationSelectProvider": "Виберіть провайдера…", + "wizardDestinationSelectModel": "Виберіть модель…", + "wizardDestinationConnectProvider": "Підключити провайдера", + "batchListBatchCreated": "Пакет {id} створено — оновлення списку…", + "batchListBatchCreatedDismiss": "Закрити", + "batchListRefreshing": "Оновлення…", + "batchListRefresh": "Оновити", + "uploadFileModalRemove": "Видалити", + "uploadFileModalUploading": "Передавання…", + "wizardInputReading": "Читання файлу…", + "wizardInputReady": "Готово", + "wizardInputLargeFileLabel": "Великий файл — вибіркова перевірка", + "wizardInputCsvJsonlReady": "JSONL згенеровано — готово до перевірки.", + "wizardInputLargeFileWarning": "Виявлено великий файл — перевірка виконується вибірково (перші 5 МБ + останні 100 КБ). Повна перевірка виконується на сервері.", + "wizardCostWindow24h": "24-годинний період виконання", + "wizardValidationFieldsOk": "обов’язкові поля коректні", + "filesListDelete": "Видалити", + "filesListDownload": "Завантажити", + "batchDetailActionCancel": "Скасувати пакет", + "batchDetailActionRetry": "Повторити невдалі запити", + "batchDetailCancelling": "Скасування…", + "batchDetailRetrying": "Підготовка повторної спроби…", + "batchDetailCancelConfirm": "Скасувати цей пакет? Запити, що виконуються, буде зупинено.", + "batchActionCancelError": "Не вдалося скасувати пакет. Спробуйте ще раз.", + "batchActionRetryError": "Не вдалося повторити невдалі запити. Спробуйте ще раз.", + "batchConceptRetentionNote": "Файли результатів і помилок зберігаються протягом 30 днів (Anthropic: 29 днів)", "batchFilesSizeColumn": "Розмір", "toggleNoAuthProvider": "Перемкнути постачальника без авторизації", "loadingModels": "Завантаження моделей…", @@ -988,14 +988,14 @@ "disabled": "Вимкнено", "featureFlagOmnirouteEmergencyFallbackDescription": "Перенаправляти запити з вичерпаним бюджетом на резервного безкоштовного провайдера/модель.", "featureFlagArenaEloSyncEnabledDescription": "Увімкнути періодичну синхронізацію ELO з таблиці лідерів Arena AI для рейтингу інтелекту моделей.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "Створюйте та додавайте підсумки розмов, коли комбінована маршрутизація перемикає моделі. Вимкніть, щоб обробляти перемикання моделей незалежно та запобігти фоновим запитам передавання контексту для всіх наявних і майбутніх комбінацій.", "featureFlagExposeCcDiscoveryAliasesDescription": "Рекламуйте claude/<provider>/<model> mirror ids на /v1/models, щоб модель виявлення Claude Code gateway перераховувала не Claude моделі. Увага: подвоює записи каталогу для всіх клієнтів, коли увімкнено глобально.", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "Головний перемикач для псевдонімів шлюзу no-think/<provider>/<model>. Увімкнено (за замовчуванням): /v1/models оголошує варіант без міркувань для кожної сумісної моделі Claude із підтримкою міркувань, а ідентифікатор no-think/, надісланий у запиті, зіставляється зі справжньою моделлю з вимкненими міркуваннями. Вимкнено: варіанти не оголошуються, а ідентифікатор no-think/ обробляється як будь-який інший невідомий ідентифікатор моделі. Налаштування ModelSpec.noThinkingAlias для окремих моделей усе ще застосовується, доки цей перемикач увімкнено.", "featureFlagChatVirtualLanesEnabledDescription": "Увімкніть адаптивні віртуальні смуги допуску для кожного тенанта під час надсилання провайдерам (#9654): сплеск навантаження одного тенанта більше не викликає 503 в іншого. Змінна середовища OMNIROUTE_CHAT_VIRTUAL_LANES має пріоритет над цим налаштуванням у панелі; зміни набувають чинності після перезапуску сервера.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Сторінки провайдерів на панелі керування: показувати позначку «Безкоштовно» лише за ознаками, які враховує провайдер. Це скасовує евристику на основі відображуваного імені, небулеві поля безкоштовності та суфікси :free для зареєстрованих провайдерів без документально підтвердженого безкоштовного рівня. Якщо вимкнено, використовується попереднє правило відображення позначки.", + "featureFlagProxySkipRecentlyFailedDescription": "Пули проксі та ротація opencode для кожного облікового запису тимчасово припиняють повторно використовувати проксі, який щойно дав збій (відхилена перевірка TCP або отримана через нього відповідь 429), на період у межах процесу, що подвоюється після кожного повторного збою, аж до встановленої межі. Статус проксі не записується; якщо всі кандидати відкладені, вибір залишається незмінним. За замовчуванням вимкнено: порядок вибору точно відповідає звичайній ротації.", + "featureFlagProxyPoolEgressObservationDescription": "Показувати на інформаційній панелі під пулом проксі, скільки спостережуваних вихідних IP-адрес обслуговували його учасників протягом останніх 24 год, скільки з’єднань їх використовували та найбільшу кількість з’єднань через одну IP-адресу. Лише для читання, обчислюється з журналу проксі та ніколи не використовується для маршрутизації. За замовчуванням вимкнено: редактор пулу залишається без змін, а маршрут спостереження повертає null.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Під час перевірки працездатності проксі дозволити перевірці, яку відхилила ціль (401/403/429: проксі передав запит, а місце призначення відхилило цю вихідну IP-адресу), скидати лічильник послідовних збоїв проксі, як у разі успішно обслугованої перевірки. За замовчуванням вимкнено: відмова залишається нейтральною та не скидає лічильник. Відповідь 5xx в обох випадках залишається невизначеною, а відмова ніколи не призводить до видалення, вимкнення чи повторної активації проксі.", "sidebar": { "home": "додому", "dashboard": "Приладова панель", @@ -1105,9 +1105,9 @@ "contextCombos": "Комбінації двигунів", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "Ультра", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "Налаштування стиснення", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", @@ -1180,17 +1180,17 @@ "providerQuota": "Квоти провайдерів", "runtime": "Середовище виконання", "consoleLogs": "Логи консолі", - "logsTimeline": "Timeline", + "logsTimeline": "Хронологія", "logsTimelineSubtitle": "Візуальний графік запитів", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", + "conversations": "Розмови", + "conversationsSubtitle": "Багатоходові агентні розмови", "globalRouting": "Глобальна маршрутизація", "mitmProxy": "MITM-проксі", "oneProxy": "1Proxy", "agenticFeaturesSection": "Агентні функції", "otherFeaturesSection": "Інші функції", "compressionContextGroup": "Стиснення контексту", - "gamificationGroup": "Gamification", + "gamificationGroup": "Гейміфікація", "toolsGroup": "Інструменти", "integrationsGroup": "Інтеграції", "proxyGroup": "Проксі", @@ -1213,11 +1213,11 @@ "leaderboard": "Рейтинг", "profile": "Профіль", "tokens": "Токени", - "gamificationAdmin": "__MISSING__:Gamification Admin", + "gamificationAdmin": "Адміністрування гейміфікації", "leaderboardSubtitle": "Рейтинги та досягнення", "profileSubtitle": "Акаунт і налаштування", "tokensSubtitle": "Використання токенів і бюджети", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", + "gamificationAdminSubtitle": "Моніторинг аномалій і протидія шахрайству", "usageSubtitle": "Статистика трафіку та використання", "analyticsComboHealthSubtitle": "Надійність маршрутів комбінацій", "analyticsUtilizationSubtitle": "Завантаженість провайдерів", @@ -1275,11 +1275,11 @@ "systemGroup": "Система", "costsOverview": "Огляд", "costsOverviewSubtitle": "Консолідований аналіз витрат", - "agentBridge": "Agent Bridge", + "agentBridge": "Міст агентів", "agentBridgeSubtitle": "Перехоплення трафіку агента IDE", "trafficInspector": "Інспектор трафіку", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "Переглядайте трафік запитів і відповідей із ваших застосунків", + "trafficInspectorPurpose": "Переглядайте, що саме ваш застосунок надсилає постачальникам ШІ та отримує від них. Працює з будь-яким клієнтом, сумісним з OpenAI.", "cliCode": "Код CLI", "cliCodeSubtitle": "Інструменти коду, що вказують на OmniRoute", "cliAgents": "Агенти CLI", @@ -1345,7 +1345,7 @@ "refresh": "Оновити", "loading": "Завантаження вебхуків...", "never": "Ніколи", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {немає помилок} one {# помилка} other {# помилок}}", "testWebhook": "Надіслати тест", "testSuccess": "Тестовий вебхук успішно надіслано.", "testFailed": "Не вдалося перевірити вебхук.", @@ -1755,14 +1755,14 @@ "omniglyph": "OmniGlyph", "rtk": "RTK", "sessionDedup": "Дедуплікація сесій", - "ultra": "Ultra", + "ultra": "Ультра", "budget": "Бюджет", "pricing": "Тарифи", "quotaShare": "Частка квоти", "discovery": "Дослідження", "freeProviderRankings": "Рейтинги безкоштовних провайдерів", - "radar": "Radar", - "setup": "Setup", + "radar": "Радар", + "setup": "Налаштування", "freeTiers": "Безкоштовні тарифи", "gamification": "Гейміфікація", "leaderboard": "Таблиця лідерів", @@ -1778,7 +1778,7 @@ "sidebar": "Бічна панель", "tokens": "Токени", "tools": "Інструменти", - "agentBridge": "Agent Bridge", + "agentBridge": "Міст агентів", "trafficInspector": "Інспектор трафіку", "usage": "Використання", "orchestration": "Оркестрація" @@ -1812,7 +1812,7 @@ "reportIssue": "Повідомити про проблему", "activeError": "{active} активний · {errors} помилка", "topologyLegendActive": "Активний", - "topologyLegendRecent": "__MISSING__:Recent", + "topologyLegendRecent": "Нещодавні", "topologyLegendError": "Помилка", "oauthLabel": "OAuth", "apiKeyLabel": "Ключ API", @@ -1826,11 +1826,11 @@ "updateStarted": "Оновлення розпочато...", "reloadingPageAutomatically": "Автоматичне перезавантаження сторінки...", "providerTopology": "Топологія провайдера", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "Нещодавні запити", + "recentRequestsEmpty": "Запитів ще немає.", + "recentRequestsModel": "Модель", + "recentRequestsTokens": "Вхід / вихід", + "recentRequestsWhen": "Коли", "downloadDmg": "Завантажити DMG (macOS)", "downloadDmgDescription": "Доступна нова версія настільного додатку OmniRoute. Будь ласка, завантажте та встановіть установник DMG для macOS, щоб оновити (поточна: v{version}).", "downloadExe": "Завантажити EXE (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "Примітки до випуску", "readMore": "Читати далі", "noAuthLabel": "Без автентифікації", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "Підготуйтеся до маршрутизації", + "readinessTitle": "Надішліть свій перший запит", + "readinessSubtitle": "Чотири прості кроки. OmniRoute перевірятиме готовність у процесі.", + "readinessStep1": "Підключіть провайдера", + "readinessStep2": "Налаштуйте автентифікацію кінцевої точки", + "readinessStep3": "Скопіюйте свою кінцеву точку", + "readinessStep4": "Надішліть тестовий запит", + "readinessContinue": "Продовжити налаштування", + "readinessDismiss": "Поки що відхилити" }, "analytics": { "title": "Аналітика", @@ -2005,12 +2005,12 @@ "modelStatusError": "Помилка", "comboHealth": "Здоров'я комбінації", "comboHealthDescription": "Квота на рівні комбінації, розподіл використання та метрики продуктивності", - "compressionAnalyticsTitle": "Compression Analytics", - "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.", + "compressionAnalyticsTitle": "Аналітика стиснення", + "compressionAnalyticsDescription": "Аналітика стиснення — економія токенів, розподіл за режимами та статистика провайдерів.", "autoRoutingTotalAutoRequests": "Загальна кількість автоматичних запитів", "autoRoutingAvgSelectionScore": "Середня оцінка вибору", "autoRoutingExplorationRate": "Швидкість розвідки", - "autoRoutingLkgpHitRate": "LKGP Hit Rate", + "autoRoutingLkgpHitRate": "Частота влучань LKGP", "autoRoutingRequestsByVariant": "Запити за варіантами", "autoRoutingTopRoutedProviders": "Найпопулярніші постачальники", "comboHealthWorstQuotaLeft": "Залишилася найгірша квота", @@ -2258,9 +2258,9 @@ "fullAccess": "Повний доступ", "keyManagement": "Керування ключами API", "keyManagementDesc": "Створюйте та керуйте ключами API для автентифікації запитів до кінцевої точки", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "Ваш застосунок надсилає запити до OmniRoute за допомогою ключа API", + "requestFlowYourApp": "Ваш застосунок", + "requestFlowApiKey": "Ключ API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Всього ключів", "restricted": "Обмежений", @@ -2303,7 +2303,7 @@ "savePermissions": "Зберегти дозволи", "endpointRestrictions": "Обмеження ендпоінтів", "allEndpointsAllowed": "Дозволено всі ендпоінти", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", + "endpointsRestricted": "Обмежено до {count} кінцевої точк{count, plural, one {и} other {ок}}.", "autoResolve": "Автоматичне визначення", "autoResolveDesc": "Автоматично визначати неоднозначні імена моделей до рідного провайдера для цього API-ключа.", "streamDefaultMode": "Сумісність потокового передавання за замовчуванням", @@ -2382,8 +2382,8 @@ "allowedCombos": "Дозволені комбінації", "allCombosAllowed": "Цей ключ може використовувати будь-яку комбінацію.", "restrictedComboCount": "Обмежено до {count, plural, one {# комбінації} few {# комбінацій} many {# комбінацій} other {# комбінацій}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {#} other {#}} — кількість збережених записів, яких немає в цьому списку комбінацій (наприклад, правил маршрутизації) і які буде залишено без змін.", + "preservedComboRuleHint": "Залишено без змін. Цей запис не є комбінацією з наведеного вище списку, тому його можна змінити лише через API.", "apiManagerCustomRateLimits": "Спеціальні ліміти ставок", "apiManagerCustomRateLimitsDesc": "Перевизначити глобальні обмеження за умовчанням. Залиште пустим, щоб використовувати значення за умовчанням.", "apiManagerRateLimitRequestsPlaceholder": "Запити", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "Дозволяє цьому ключу ігнорувати політику обмежень висхідного провайдера/акаунта під час маршрутизації. Квоти API-ключа в USD все одно застосовуються.", "quotaPill": "КВОТА", "quotaModeOnly": "Лише qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "Ексклюзивна оренда", + "exclusiveLeaseNoticeTitle": "Ексклюзивна оренда", + "exclusiveLeaseNoticeDesc": "Цей ключ API має дозволи ексклюзивної оренди для маршрутизації через виділені з’єднання.", + "allConnections": "Усі з’єднання", + "onlySelectedConnections": "Лише вибрані з’єднання", + "selectAtLeastOneConnection": "Виберіть принаймні одне з’єднання або варіант «Усі з’єднання».", + "allConnectionsDesc": "Цей ключ може використовувати будь-яке активне з’єднання.", + "restrictedToConnections": "Обмежено до {count, plural, one {# з’єднання} other {# з’єднань}}." }, "auditLog": { "title": "Журнал аудиту", @@ -2457,14 +2457,14 @@ "model": "Model", "prompt": "Prompt", "generate": "Згенерувати", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generating": "Генерування...", + "loadingModels": "Завантаження доступних моделей...", + "noModels": "Немає доступних моделей. Спочатку налаштуйте провайдерів із підтримкою медіафункцій.", + "error": "Не вдалося згенерувати", + "result": "Результат", + "imageDescription": "Генеруйте зображення з текстових запитів за допомогою OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI та інших сервісів.", + "videoDescription": "Створюйте відео за допомогою AnimateDiff, Stable Video Diffusion через ComfyUI або SD WebUI.", + "musicDescription": "Створюйте музику за допомогою Stable Audio Open або MusicGen через ComfyUI.", "kinds": { "embedding": "Вбудовування", "image": "Зображення", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "Моделі перетворення мови в текст OpenRouter використовують ваше налаштоване з'єднання OpenRouter. Окремі облікові дані не потрібні." }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "Пошуковий запит", + "searchResults": "Результати пошуку", + "cachedResult": "Кешовано", + "searchCost": "Вартість", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "Розширене тестування пошуку з порівнянням провайдерів", + "compareProviders": "Порівняти провайдерів", + "rerankResults": "Переранжувати результати", + "searchHistory": "Історія пошуку", + "urlOverlap": "Перетин URL-адрес", + "noSearchProviders": "Провайдерів пошуку не налаштовано. Додайте провайдерів у налаштуваннях.", + "noRerankModels": "Немає доступної моделі переранжування", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "Провайдер", + "searchType": "Тип пошуку", + "maxResults": "Максимальна кількість результатів", + "filters": "Фільтри", + "country": "Країна", + "language": "Мова", + "timeRange": "Період часу", + "includeDomains": "Включити домени", + "excludeDomains": "Виключити домени", + "safeSearch": "Безпечний пошук", + "safeSearchOff": "Вимкнено", + "safeSearchModerate": "Помірний", + "safeSearchStrict": "Суворий", + "queryPlaceholder": "Введіть пошуковий запит...", + "providerAuto": "авто (найдешевший)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "новини", + "optionAny": "будь-який", + "timeRangeDay": "Минула доба", + "timeRangeWeek": "Минулий тиждень", + "timeRangeMonth": "Минулий місяць", + "timeRangeYear": "Минулий рік", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "Час очікування запиту минув ({seconds} с)", + "networkError": "Помилка мережі", + "formatted": "Відформатовано", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "немає в кеші", + "cacheHit": "знайдено в кеші", + "latency": "Затримка", + "cost": "Вартість", + "results": "Результати", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "Модель повторного ранжування", + "positionDelta": "Зміна позиції", + "emptyState": "Надішліть пошуковий запит, щоб переглянути результати", "copy": "Копія", "resetToDefault": "Скинути до замовчування", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "Пошук", + "tabScrape": "Збирання даних", + "tabCompare": "Порівняння", + "modalitiesGuide": "Посібник із модальностей", + "searchConceptTitle": "Пошук", + "searchConceptDesc": "Пошук = отримує список результатів з інтернету (заголовок, URL, фрагмент, оцінка релевантності)", + "scrapeConceptTitle": "Збирання даних", + "scrapeConceptDesc": "Збирання даних = витягує повний вміст URL (markdown, текст або HTML)", + "compareConceptTitle": "Порівняння", + "compareConceptDesc": "Порівняння = виконує той самий запит паралельно в N провайдерів, щоб порівняти затримку, вартість і збіг результатів", + "rerankConceptTitle": "Переранжування", + "rerankConceptDesc": "Переранжування = змінює порядок результатів за допомогою LLM, щоб підвищити релевантність відповідно до запиту", + "autoConceptTitle": "Авто (найдешевший)", + "autoConceptDesc": "Авто (найдешевший) = автоматично вибирає найдешевшого доступного провайдера з налаштованими обліковими даними", + "providerCatalogTitle": "Каталог провайдерів", + "kindSearch": "Пошук", + "kindFetch": "Отримання/скрейпінг", + "statusConfigured": "Налаштовано", + "statusMissing": "Немає облікових даних", + "statusRateLimited": "Ліміт запитів вичерпано", + "configureProvider": "Налаштувати в розділі «Провайдери»", + "loadingProviders": "Завантаження провайдерів…", + "failedToLoadProviders": "Не вдалося завантажити провайдерів", + "costPerQuery": "Вартість/запит", + "freeQuota": "Безкоштовна квота/міс.", + "scrapeUrl": "URL для скрейпінгу", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL-адреса обов'язкова", "scrapeUrlInvalid": "Недійсна URL-адреса — вона має починатися з http:// або https://", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "Видобути", + "scrapeExtracting": "Видобування…", + "scrapeFullPage": "Уся сторінка", + "scrapeFormat": "Формат", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "Текст", + "scrapePreview": "Попередній перегляд", + "scrapeRaw": "Без обробки", + "scrapeContentTruncated": "(обрізано, переглянути без обробки)", + "scrapeMetadata": "Метадані", + "scrapeProvider": "Провайдер", + "scrapeSize": "Розмір", "scrapeEmptyState": "Введіть URL-адресу, щоб вилучити її вміст", "scrapeProvidersAvailable": "Доступні провайдери: Firecrawl, Jina Reader, Tavily, TinyFish.", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "Порівняти", + "compareRunning": "Порівняння…", + "autoProvider": "Авто (найдешевший)", + "configuredStatus": "Налаштовано", + "rateLimitedStatus": "Ліміт запитів вичерпано", + "noCredential": "Немає облікових даних", + "searchTypeLabel": "Тип", + "rerankModelLabel": "Модель переранжування", + "noneOption": "Немає", + "size": "Розмір", "configurationPane": "Панель конфігурації", "configuration": "Конфігурація", "status": "Статус", @@ -2752,7 +2752,7 @@ "configured": "Налаштовано", "notConfigured": "Не налаштовано", "notInstalled": "Не встановлено", - "custom": "Custom", + "custom": "Власний", "unknown": "Невідомий", "lastSavedAt": "Востаннє збережено: {date}", "never": "Ніколи", @@ -2818,11 +2818,11 @@ "antigravityStep2Prefix": "2. Додайте", "antigravityStep2Suffix": "у ваш файл hosts як 127.0.0.1.", "antigravityStep3": "3. Відкрийте Антигравітацію, і запити будуть надсилатися через проксі.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", + "mitmHowWorksDesc": "{toolName} надсилає запити до кінцевої точки свого провайдера. MITM перехоплює та перенаправляє їх до OmniRoute.", + "mitmStep1": "1. Запустіть MITM, щоб маршрутизувати запити через OmniRoute.", + "mitmStep2Prefix": "2. Додайте", + "mitmStep2Suffix": "до вашого файлу hosts як 127.0.0.1.", + "mitmStep3": "3. Відкрийте {toolName}, і запити передаватимуться через проксі.", "sudoPasswordRequiredTitle": "Потрібен пароль Sudo", "sudoPasswordHint": "Пароль адміністратора потрібен для зміни параметрів файлу хостів і проксі-сервера системи.", "enterSudoPassword": "Введіть пароль sudo", @@ -2908,7 +2908,7 @@ "continue": "Використовуйте під час запуску Продовжити в IDE і вам потрібна портативна конфігурація постачальника на основі JSON.", "opencode": "Використовуйте, якщо ви віддаєте перевагу запуску агента на терміналі та автоматизації за сценарієм через OpenCode.", "kiro": "Використовуйте під час інтеграції Kiro та централізованого керування маршрутизацією моделі з OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", + "windsurf": "Використовуйте, якщо вам потрібне IDE, орієнтоване на ШІ, з моделями Codeium/Windsurf, маршрутизованими через OmniRoute.", "antigravity": "Використовуйте, коли трафік Antigravity/Kiro потрібно перехопити через MITM і направити на OmniRoute.", "copilot": "Використовуйте, коли вам потрібен UX у стилі чату Copilot із застосуванням ключів OmniRoute і правил маршрутизації.", "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.", @@ -2921,19 +2921,19 @@ "claude": "Антропний код Клода CLI", "codex": "OpenAI Codex CLI", "grok-build": "TUI-агент для кодування xAI Grok Build із підтримкою користувацьких провайдерів", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", + "droid": "ШІ-помічник Factory Droid", + "openclaw": "ШІ-помічник Open Claw", + "cline": "CLI ШІ-помічника для програмування Cline", "kilo": "Кіло Код AI Assistant CLI", "qwen": "CLI Qwen Code", "cursor": "Редактор коду Cursor AI", "continue": "Продовжити AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "opencode": "ШІ-агент для програмування OpenCode (термінал)", + "kiro": "Amazon Kiro — IDE на базі ШІ", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "CLI помічника з програмування Sourcegraph Amp", + "hermes": "Термінальний ШІ-помічник Hermes", "hermes-agent": "Hermes Agent (від Nousresearch) — просунутий термінальний AI з підтримкою мультимоделей (делегування, vision, стиснення тощо)", "custom": "Generic OpenAI-сумісний CLI або SDK генератор конфігурації", "aider": "CLI для парного програмування з ШІ Aider з OpenAI-сумісною базовою URL-адресою", @@ -2950,7 +2950,7 @@ "interpreter": "CLI автономного агента для кодування Open Interpreter", "omp": "Термінальний агент для кодування Oh My Pi", "letta": "CLI-агент Letta з постійною пам'яттю та використанням інструментів", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — самовдосконалюваний RLM-інструментарій для програмування з підтримкою провайдерів, сумісних з OpenAI", "warp": "ШІ-термінал Warp із підтримкою користувацьких провайдерів", "agent-deck": "Мультиагентний оркестратор Agent Deck", "5dive": "5dive — самостійно розміщений флот агентів для коду; один auth-профіль спрямовує їх усіх на OmniRoute" @@ -3009,22 +3009,22 @@ "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "Установити OpenCode", + "desc": "Установіть через npm: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "Ключ API" }, "3": { - "title": "Set Base URL", + "title": "Указати базову URL-адресу", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "Вибрати модель" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "Використовувати варіант із міркуванням", + "desc": "Для моделей із міркуванням запускайте з параметром --variant high/low/max (приклад команди наведено нижче)." } }, "notes": { @@ -3035,18 +3035,18 @@ "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Відкрити налаштування Kiro", + "desc": "Перейдіть до Налаштування → Провайдер ШІ" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "Базова URL-адреса", + "desc": "Вставте URL-адресу кінцевої точки OmniRoute" }, "3": { - "title": "API Key" + "title": "Ключ API" }, "4": { - "title": "Select Model" + "title": "Вибрати модель" } }, "notes": { @@ -3056,24 +3056,24 @@ "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "Відкрити налаштування ШІ", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "Додати власного провайдера", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "Базова URL-адреса", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "Ключ API", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "Вибрати модель", + "desc": "Виберіть модель із розкривного списку" } } } @@ -3084,7 +3084,7 @@ "guidedClientsTab": "Guided Clients Tab", "mitmClientsTab": "Mitm Clients Tab", "customCliTab": "Спеціальний CLI", - "toolCategories": "Tool Categories", + "toolCategories": "Категорії інструментів", "visibleToolsCount": "Доступні інструменти: {count}", "customCliBuilderTitle": "Конструктор CLI, сумісний з OpenAI", "customCliBuilderDescription": "Генеруйте змінні env і фрагменти JSON для будь-якого CLI або SDK, які приймають сумісну з OpenAI базову URL-адресу, ключ API та ідентифікатор моделі.", @@ -3220,7 +3220,7 @@ "routingStrategy": "Стратегія маршрутизації", "maxRetries": "Макс. повторних спроб", "timeout": "Час очікування (мс)", - "healthcheck": "Healthcheck", + "healthcheck": "Перевірка працездатності", "priority": "Пріоритет", "fallback": "Запасний варіант", "roundRobin": "Кругова система", @@ -3260,18 +3260,18 @@ "priorityDesc": "Послідовний резерв: спочатку пробує модель 1, потім 2 тощо.", "weightedDesc": "Розподіляє трафік за ваговим відсотком із резервним варіантом", "roundRobinDesc": "Циркулярний розподіл: кожен запит переходить до наступної моделі по черзі", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", + "contextRelay": "Ретрансляція контексту", + "contextRelayDesc": "Зберігає безперервність сеансу за допомогою підсумків для передавання контексту під час перемикання облікових записів", "randomDesc": "Рівномірний випадковий вибір, а потім повернення до інших моделей", "leastUsedDesc": "Вибирає модель із найменшою кількістю запитів, балансуючи навантаження за часом", "costOptimizedDesc": "Маршрути до найдешевшої моделі на основі ціни", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "cacheOptimizedDesc": "Послідовно спрямовує кожен повторно використовуваний префікс запиту до того самого облікового запису провайдера", + "resetAware": "RR з урахуванням скидання", "resetAwareDesc": "Балансує квоту, що залишилася, із 5-годинним і щотижневим скиданням, а потім циклічними роботами з подібними результатами", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Зважування за квотою", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "Суворо випадковий", + "strictRandomDesc": "Перетасована колода — кожна модель використовується один раз перед повторним перетасуванням", "fusion": "Злиття", "fusionDesc": "Розсилає запит усім моделям панелі паралельно, після чого модель-суддя синтезує одну остаточну відповідь", "fusionJudgeModel": "Модель-суддя", @@ -3288,13 +3288,13 @@ "retryDelay": "Затримка повтору (мс)", "concurrencyPerModel": "Одночасність / Модель", "queueTimeout": "Час очікування черги (мс)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", + "contextRelayHandoffThreshold": "Поріг передавання контексту", + "contextRelayHandoffThresholdHelp": "Коли використання квоти досягає цього порогу, OmniRoute створює структурований підсумок для передавання контексту до вичерпання ресурсів активного облікового запису.", + "contextRelayMaxMessages": "Максимальна кількість повідомлень для підсумку", + "contextRelayMaxMessagesHelp": "Обмежує обсяг нещодавньої історії, що стискається в підсумок ретрансляції.", + "contextRelaySummaryModel": "Модель для підсумку", + "contextRelaySummaryModelHelp": "Необов’язкова перевизначена модель, що використовується лише для створення підсумку передавання контексту. Залиште поле порожнім, щоб повторно використати активну модель комбінації.", + "contextRelayProviderNote": "Наразі ретрансляція контексту створює підсумки передавання для перемикання між обліковими записами Codex. Для найкращої безперервності використовуйте її з кількома обліковими записами того самого провайдера.", "advancedHint": "Залиште пустим, щоб використовувати глобальні параметри за умовчанням. Вони замінюють налаштування кожного постачальника.", "failoverBeforeRetry": "Відмова перед повторною спробою", "maxSetRetries": "Максимальна кількість повторних спроб", @@ -3344,41 +3344,41 @@ "playgroundCreateFirst": "Спочатку створіть одне", "weighted": "Зважений", "leastUsed": "Найменш використовуваний", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "costOpt": "Оптимізація вартості", + "strategyGuideTitle": "Як використовувати цю стратегію", + "strategyGuideWhen": "Коли використовувати", + "strategyGuideAvoid": "Коли не використовувати", + "strategyGuideExample": "Приклад", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "У вас є одна пріоритетна модель, і ви хочете використовувати резервну лише в разі збою.", + "avoid": "Вам потрібно розподіляти запити між моделями.", + "example": "Основна модель для програмування з дешевшою резервною моделлю на випадок збоїв." }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "Вам потрібен контрольований розподіл трафіку між моделями.", + "avoid": "Ви не можете постійно підтримувати точність вагових коефіцієнтів.", + "example": "Розгортання: 80% — стабільна модель, 20% — канаркова модель." }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "Вам потрібен передбачуваний і рівномірний розподіл.", + "avoid": "Моделі надто відрізняються за затримкою або вартістю.", + "example": "Однакова модель у кількох облікових записах для розподілу пропускної здатності." }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "Вам потрібен простий розподіл із мінімальним налаштуванням.", + "avoid": "Вам потрібні суворі гарантії розподілу трафіку.", + "example": "Швидке прототипування з рівноцінними моделями." }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "Вам потрібне адаптивне балансування на основі поточного попиту.", + "avoid": "Обсяг трафіку надто низький, щоб отримати переваги від балансування використання.", + "example": "Змішані робочі навантаження, за яких одна модель часто перевантажується." }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "Зниження вартості є вашим головним пріоритетом.", + "avoid": "Дані про ціни відсутні або застарілі.", + "example": "Фонові або пакетні завдання, для яких нижча вартість є пріоритетною." }, "reset-aware": { "when": "Ви маршрутизуєте між кількома обліковими записами за допомогою квотної телеметрії та різних вікон скидання.", @@ -3386,19 +3386,19 @@ "example": "Віддавайте перевагу щотижневому скиданню облікових записів на 60% завтра, ніж оновленню на 80% пізніше." }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "Використовуйте, коли потрібен ідеально рівномірний розподіл — кожна модель використовується один раз перед повторенням.", + "avoid": "Не використовуйте, коли моделі відрізняються за якістю чи затримкою і порядок має значення.", + "example": "Приклад: кілька облікових записів однієї моделі для рівномірного розподілу використання." }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "Використовуйте, коли потрібен вибір із низькою затримкою за алгоритмом Power-of-Two-Choices.", + "avoid": "Не використовуйте для невеликих комбінацій із 2 або меншою кількістю моделей — це не має переваг над циклічним розподілом.", + "example": "Приклад: високопродуктивний інференс через 4+ рівноцінні кінцеві точки моделей." }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "Використовуйте, коли тривалі сеанси мають витримувати ротацію облікових записів без втрати робочого контексту.", + "avoid": "Не використовуйте, якщо перемикання облікових записів відбувається рідко або якщо ви не хочете надсилати додаткові запити на узагальнення.", + "example": "Приклад: сеанси Codex, які перемикаються між кількома обліковими записами, коли квота майже вичерпана." }, "fill-first": { "when": "Використовуйте, коли ви хочете повністю вичерпати квоту одного постачальника перед переходом до наступного.", @@ -3422,49 +3422,49 @@ } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "Кількість повторних спроб перед остаточною невдачею запиту.", + "retryDelay": "Початкова затримка між повторними спробами. Вищі значення зменшують пікове навантаження.", + "timeout": "Максимальна тривалість запиту до його переривання.", + "healthcheck": "Виключає несправні моделі та провайдерів із рішень щодо маршрутизації.", + "concurrencyPerModel": "Максимальна кількість одночасних запитів на модель за циклічного розподілу.", + "queueTimeout": "Максимальний час очікування запиту в черзі до завершення за тайм-аутом.", "failoverBeforeRetry": "Якщо ввімкнено, будь-яка помилка висхідного потоку запускає негайне перемикання після відмови до наступної комбінованої цілі, пропускаючи всі повторні спроби та резервні URL-адреси.", "maxSetRetries": "Кількість разів, щоб повторити повний набір цілей, коли кожна ціль не вдається. 0 = немає повторної спроби встановленого рівня.", "setRetryDelayMs": "Затримка між повторними спробами встановленого рівня, що дає час для вирішення тимчасових проблем.", "disableSessionStickiness": "Перемикатися на інше підключення при кожному запиті замість прив'язки всієї розмови до одного підключення за хешем першого повідомлення. Перевизначає глобальне значення за замовчуванням. Залиште «Inherit», щоб зберегти влучання в кеш промптів для багатокрокових чатів." }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", + "templatesTitle": "Швидкі шаблони", + "templatesDescription": "Застосуйте початковий профіль, а потім налаштуйте моделі та конфігурацію.", + "templateApply": "Застосувати шаблон", + "templateHighAvailability": "Висока доступність", + "templateHighAvailabilityDesc": "Пріоритетна маршрутизація з перевірками стану та безпечними повторними спробами.", + "templateCostSaver": "Економія коштів", + "templateCostSaverDesc": "Маршрутизація з оптимізацією витрат для завдань із пріоритетом бюджету.", + "templateBalanced": "Збалансоване навантаження", + "templateBalancedDesc": "Маршрутизація до найменш використовуваних моделей для розподілу попиту в часі.", "usageGuideHide": "Приховати", "usageGuideDontShowAgain": "Більше не показувати", "usageGuideShow": "Показати інструкцію", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "quickTestTitle": "Комбінація готова до перевірки", + "quickTestDescription": "Запустіть тест зараз, щоб перевірити резервне перемикання та затримку.", + "testNow": "Тестувати зараз", + "pricingCoverage": "Наявність цін", + "pricingCoverageHint": "Оптимізація витрат працює найкраще, коли для всіх моделей комбінації вказано ціни.", + "pricingAvailable": "Ціна доступна", + "pricingMissing": "Ціна відсутня", + "pricingAvailableShort": "із ціною", + "pricingMissingShort": "без ціни", "fallbackOnlyOnQuotaExhaustion": "Тільки просуватися при вичерпанні квоти", "fallbackOnlyOnQuotaExhaustionShort": "резервування лише для квоти", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", + "warningRoundRobinSingleModel": "Циклічний розподіл найкорисніший за наявності принаймні 2 моделей.", + "warningCostOptimizedPartialPricing": "Ціни вказано лише для {priced} із {total} моделей. Маршрутизація може лише частково враховувати витрати.", + "warningCostOptimizedNoPricing": "Для цієї комбінації не знайдено даних про ціни. Оптимізація витрат може призвести до неочікуваної маршрутизації.", "filterAll": "Усі", "filterIntelligent": "Інтелектуальні", "filterDeterministic": "Детерміновані", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", + "filterEmptyTitle": "Жодна комбінація не відповідає цьому фільтру стратегій.", + "filterEmptyIntelligentDescription": "Створіть комбінацію auto або LKGP, щоб заповнити інформаційну панель інтелектуальної маршрутизації.", + "filterEmptyDeterministicDescription": "Наразі існують лише комбінації auto та LKGP. Поверніться до варіанта «Усі» або створіть детерміновану комбінацію.", "readinessTitle": "Готові економити?", "readinessDescription": "Перегляньте контрольний список, перш ніж створювати або оновлювати цю комбінацію.", "readinessCheckName": "Ім'я комбінованого тексту дійсне", @@ -3478,12 +3478,12 @@ "saveBlockModels": "Додайте хоча б одну модель.", "saveBlockWeighted": "Встановити ваги на 100% (поточний: {total}%).", "saveBlockPricing": "Додайте ціну принаймні на одну модель або виберіть іншу стратегію.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "recommendationsLabel": "Рекомендовані налаштування", + "applyRecommendations": "Застосувати рекомендації", + "recommendationsUpdated": "Рекомендації для {strategy} оновлено.", + "recommendationsApplied": "Рекомендації застосовано до цієї комбінації.", + "intelligentPanelTitle": "Панель інтелектуальної маршрутизації", + "intelligentPanelDesc": "Оцінювання в реальному часі та стан працездатності цієї комбінації автоматичної маршрутизації.", "configOnlyStatus": "Перегляд конфігурації", "configOnlyHint": "Ця панель показує лише вхідні дані маршрутизації. Стан запобіжника в реальному часі доступний на сторінці Стан системи.", "routingInputs": "Параметри маршрутизації", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "Невідомий префікс провайдера.", "builderDynamicAccountShort": "Динамічний акаунт", "builderNeedValidName": "Введіть коректну назву комбо перед продовженням.", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "Огляд стану", + "normalOperation": "Нормальна робота", + "allProvidersHealthy": "Провайдери повідомляють про належні умови маршрутизації.", + "incidentMode": "Режим інциденту", + "highCircuitBreakerRate": "Виявлено високу частоту спрацювання автоматичного вимикача.", + "activeModePack": "Активний пакет режимів", + "modePackUpdated": "Пакет режимів оновлено до {pack}.", + "modePackHint": "Перемикайте пресети, щоб змінити пріоритети механізму маршрутизації без повторного створення комбінації.", + "providerScores": "Оцінки провайдерів", + "allProvidersEvaluated": "Пул кандидатів не налаштовано. Усі активні провайдери оцінюються під час виконання.", + "excludedProviders": "Виключені провайдери", + "excludedProvidersHint": "Провайдери з автоматичним вимикачем у стані OPEN тимчасово виключаються з маршрутизації.", + "noExcludedProviders": "Наразі немає виключених провайдерів.", + "cooldownMinutes": "Період відновлення: {minutes} хв", + "builderIntelligentTitle": "Конфігурація інтелектуальної маршрутизації", + "builderIntelligentDesc": "Налаштуйте багатофакторний механізм оцінювання для цієї комбінації автоматичної маршрутизації.", + "candidatePoolLabel": "Пул кандидатів", + "candidatePoolHint": "Виберіть провайдерів, яких має оцінювати цей механізм. Залиште поле порожнім, щоб використовувати всіх активних провайдерів.", + "candidatePoolEmpty": "Активних провайдерів поки немає.", + "candidatePoolAllProviders": "Усі провайдери", + "modePackLabel": "Пакет режимів", + "routerStrategyLabel": "Стратегія маршрутизатора", + "strategyRules": "Правила (6-факторне оцінювання)", + "explorationRateLabel": "Частота дослідження", + "explorationRateHint": "{percent}% запитів можуть спрямовуватися до неоптимальних провайдерів для дослідження.", + "budgetCapLabel": "Ліміт бюджету (USD / запит)", + "budgetCapPlaceholder": "Без обмежень", + "advancedWeightsTitle": "Розширені налаштування: ваги оцінювання", "nestedComboFlatten": "Розгорнути вкладені комбо", "nestedComboExecute": "Виконувати вкладені комбо як цілі", "effectiveRoutingShare": "Ефективна частка маршрутизації (вага ÷ загалом)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "Квота", + "weightHealth": "Працездатність", + "weightCostInv": "Вартість", + "weightLatencyInv": "Затримка", + "weightTaskFit": "Відповідність завданню", + "weightStability": "Стабільність", + "weightTierPriority": "Рівень", + "weightCacheAffinity": "Пріоритет попадання в кеш", "weightSessionAvailability": "Доступність сесії", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "Конфігурація інтелектуальної маршрутизації", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "Безпечний базовий варіант", + "description": "Використовуйте одну основну модель, а ланцюжок резервних моделей зробіть коротким і надійним.", + "tip1": "Поставте найнадійнішу модель першою.", + "tip2": "Залиште 1–2 резервні моделі зі схожою якістю.", + "tip3": "Використовуйте безпечні повторні спроби, щоб компенсувати тимчасові збої провайдера." }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "Керований розподіл трафіку", + "description": "Чудово підходить для канаркового розгортання та поступової міграції між моделями.", + "tip1": "Почніть із консервативного розподілу, наприклад 90/10.", + "tip2": "Підтримуйте загальну суму на рівні 100% і автоматично балансуйте її після змін.", + "tip3": "Стежте за успішністю та затримкою, перш ніж збільшувати частку канаркової моделі." }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "Передбачуваний розподіл навантаження", + "description": "Найкраще підходить, коли моделі рівноцінні й потрібен плавний розподіл.", + "tip1": "Використовуйте щонайменше 2 моделі.", + "tip2": "Установіть обмеження паралельності, щоб уникнути перевантаження через сплески.", + "tip3": "Використовуйте тайм-аут черги для швидкої відмови в разі перевантаження." }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "Швидкий розподіл із мінімальним налаштуванням", + "description": "Використовуйте, коли потрібен простий розподіл без суворих гарантій.", + "tip1": "Використовуйте моделі зі схожими профілями затримки.", + "tip2": "Залиште повторні спроби ввімкненими, щоб компенсувати випадкові невдачі.", + "tip3": "Віддавайте перевагу цьому варіанту для експериментів, а не для суворих SLA." }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "Адаптивне балансування", + "description": "Спрямовує запити до менш використовуваних моделей, щоб із часом зменшувати локальні перевантаження.", + "tip1": "Краще працює за безперервного трафіку.", + "tip2": "Поєднуйте з перевірками працездатності для безпечнішого балансування.", + "tip3": "Відстежуйте використання кожної моделі, щоб оцінити покращення розподілу." }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "Маршрутизація з пріоритетом бюджету", + "description": "Спрямовує запити до дешевших моделей, коли доступні метадані про ціни.", + "tip1": "Переконайтеся, що дані про ціни доступні для всіх вибраних моделей.", + "tip2": "Залиште якісну резервну модель для складних промптів.", + "tip3": "Використовуйте для пакетних або фонових завдань, де вартість є основним KPI." }, "reset-aware": { "title": "Ротація облікового запису з урахуванням скидання", @@ -3597,11 +3597,11 @@ "tip3": "Тримайте зв’язок невеликим, щоб еквівалентні рахунки все одно справедливо чергувалися." }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "Розподіл за перетасованою колодою", + "description": "Кожна модель використовується рівно один раз за цикл перед повторним перетасуванням.", + "tip1": "Для змістовного розподілу використовуйте щонайменше 2 моделі.", + "tip2": "Найкраще працює з моделями еквівалентної продуктивності.", + "tip3": "Ідеально підходить для балансування навантаження між кількома обліковими записами API." }, "fill-first": { "description": "Послідовно вичерпайте квоти постачальника, перш ніж відступити.", @@ -3646,11 +3646,11 @@ "title": "Сила двох виборів" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", + "templateFreeStack": "Безкоштовний стек ($0)", + "templateFreeStackDesc": "Циклічний розподіл між усіма безкоштовними провайдерами: Kiro (Claude), Qoder (5 моделей), Qwen (4 моделі). Нульова вартість, кодування ніколи не зупиняється.", "auto": "Auto Combo", "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "lkgp": "LKGP Mode", + "lkgp": "Режим LKGP", "lkgpDesc": "Last Known Good Provider (Predictable resilience)", "wizardGuideTitle": "Початок роботи з Комбо", "wizardGuideDesc": "Створіть комбінації моделей для розумної маршрутизації AI-трафіку", @@ -3664,68 +3664,68 @@ "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", "wizardStep4Title": "Перевірте та збережіть", "wizardStep4Desc": "Перегляньте конфігурацію та активуйте комбо", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "usageGuideInvokeTitle": "Як викликати цю комбінацію", + "usageGuideInvokeDesc": "Передайте точну назву комбінації як модель, наприклад model: \"my-combo\" (або combo/my-combo).", + "usageGuideInvokeAutoNote": "auto та auto/* — це окремий маршрутизатор із нульовим налаштуванням, який не використовує ваші комбінації (якщо тільки комбінація буквально не має назву auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto — це справжній платний продукт OpenRouter (Auto Best Available), а не псевдонім OmniRoute — виключіть його через Налаштування → Маршрутизація → Приховати платні моделі.", + "emailVisibilityStateOn": "Увімкнено", + "emailVisibilityStateOff": "Вимкнено", + "reorderHandle": "Перетягніть, щоб змінити порядок", + "failedReorder": "Не вдалося змінити порядок моделей", + "builderFlowTitle": "Процес створення комбінації", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "Основи", + "description": "Назва та початковий шаблон" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "Кроки", + "description": "Вибір провайдера, моделі та облікового запису" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "Стратегія", + "description": "Поведінка маршрутизації та розширені налаштування" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "Розумна маршрутизація", + "description": "Пул кандидатів для автоматичної маршрутизації, пресети та оцінювання" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "Перевірка", + "description": "Остаточна перевірка перед збереженням" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", + "builderStageVisited": "Етап завершено", + "builderStageCurrent": "Поточний етап", + "builderStagePending": "Очікує", + "builderStageLocked": "Заблоковано — спочатку завершіть попередній етап", + "builderTitle": "Створити комбінацію", + "builderBrowseCatalog": "Переглянути каталог", + "builderProvider": "Провайдер", + "builderLoadingProviders": "Завантаження провайдерів...", + "builderSelectProvider": "Виберіть провайдера", + "builderModel": "Модель", + "builderSelectModel": "Виберіть модель", + "builderProviderFirst": "Спочатку виберіть провайдера", + "builderAccount": "Обліковий запис", + "builderPreview": "Попередній перегляд", + "builderAddStep": "Додати крок", "builderDuplicateExact": "Цей точний крок постачальника/моделі/облікового запису вже є в комбінації.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", + "builderComboRef": "Посилання на комбінацію", + "builderAddComboRef": "Додати посилання на комбінацію", + "builderComboRefStep": "Додати посилання на комбінацію", + "builderPinnedAccount": "Закріплений обліковий запис", + "builderLegacyEntry": "Застарілий запис", + "reviewName": "Назва", + "reviewStrategy": "Стратегія", + "reviewSteps": "Кроки", + "reviewAccounts": "Облікові записи", + "reviewProviders": "Провайдери", + "reviewComboRefs": "Посилання на комбінації", + "reviewAdvanced": "Розширені налаштування", + "reviewAgentFlags": "Прапорці агента", + "reviewSequence": "Послідовність моделей", + "reviewNoSteps": "Кроки не налаштовано", "builderStagesDescription": "Пройдіть кожен етап, щоб визначити комбінації, побудувати кроки, вибрати стратегію маршрутизації та переглянути результати.", "builderStepsDescription": "Створюйте кожен комбінований крок у порядку: постачальник, модель, потім обліковий запис. Це дозволяє повторно використовувати того самого постачальника та модель для різних облікових записів.", "selectProvider": "Виберіть Постачальник", @@ -3734,7 +3734,7 @@ "selectModelPlaceholder": "Спочатку виберіть постачальника", "selectAccount": "Виберіть обліковий запис", "selectComboToReference": "Виберіть комбо для посилання", - "comboReference": "Combo Reference", + "comboReference": "Посилання на комбінацію", "addComboReference": "Додати комбіноване посилання", "addStepBeforeContinue": "Будь ласка, додайте принаймні один крок, перш ніж перейти до наступного етапу.", "previewNextStep": "Попередній перегляд наступного кроку", @@ -3742,7 +3742,7 @@ "modePackBalanced": "Збалансований", "modePackBudget": "Бюджет", "modePackPerformance": "Продуктивність", - "modePackCustom": "Custom", + "modePackCustom": "Власний", "browseLegacyCatalog": "Перегляньте застарілий комбінований каталог", "agentFeaturesTitle": "Особливості агента", "agentFeaturesDescription": "Увімкніть розширені функції для агентів, які використовують цю комбінацію", @@ -3800,27 +3800,27 @@ "range7d": "7 днів", "range30d": "30 днів", "range90d": "90 днів", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 днів", + "range365d": "365 днів", "rangeAll": "Весь час", "spend30d": "Spend30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", + "activeModels": "Активні моделі", + "flatRateEstimateNotice": "Включає оцінки вартості токенів для підписок із фіксованою оплатою, а не фактичну суму рахунку.", + "flatRateEstimateForecast": "Прогноз включає оцінки для підписок із фіксованою оплатою.", + "selectedWindow": "Вибраний період", + "activeProviders": "Активні провайдери", "overviewTitle": "Overview Title", "spend7d": "Spend7D", "avgCostPerRequest": "Avg Cost Per Request", "noCostDataDescription": "No Cost Data Description", - "spendToday": "Spend Today", + "spendToday": "Витрати сьогодні", "overviewLoadFailed": "Overview Load Failed", "overviewDescription": "Overview Description", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", + "providerShare": "Частка провайдера", + "topProviders": "Провідні провайдери", + "costTrend": "Динаміка витрат", "noCostDataTitle": "No Cost Data Title", - "topModels": "Top Models", + "topModels": "Провідні моделі", "requestsInWindow": "Requests In Window", "tokenUsage": "Використання маркера", "totalTokens": "Загальна кількість токенів", @@ -3863,7 +3863,7 @@ "groupAccount": "Обліковий запис", "groupServiceTier": "Рівень сервісу", "serviceTierFast": "Швидкий", - "serviceTierFlex": "Flex", + "serviceTierFlex": "Гнучкий режим", "serviceTierStandard": "Стандартний", "serviceTierBreakdownTitle": "Рівень сервісу", "serviceTierBreakdownSubtitle": "Розподіл Fast / Flex / Standard", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "Кінцева точка API", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "Використовуйте OpenAI-сумісну кінцеву точку з більшістю SDK та інструментів.", + "testEndpoint": "Перевірити кінцеву точку →", + "advancedProtocols": "Розширені протоколи", "available": "Доступні кінцеві точки", "cloudProxy": "Хмарний проксі", "disableConfirm": "Ви впевнені, що бажаєте вимкнути хмарний проксі?", @@ -3900,7 +3900,7 @@ "disableCloud": "Вимкнути хмару", "enableCloud": "Увімкнути хмару", "modelsAcrossEndpoints": "{models} моделей через {endpoints} кінцевих точок", - "loadingModels": "Loading available models...", + "loadingModels": "Завантаження доступних моделей...", "chatDesc": "Потоковий і непотоковий чат з усіма провайдерами", "embeddings": "Вбудовування", "embeddingsDesc": "Вбудовування тексту для конвеєрів пошуку та RAG", @@ -3912,22 +3912,22 @@ "audioTranscriptionDesc": "Транскрибувати аудіофайли в текст (Whisper)", "textToSpeech": "Перетворення тексту в мовлення", "textToSpeechDesc": "Перетворення тексту на природне мовлення", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", + "musicGeneration": "Генерування музики", + "musicDesc": "Генеруйте музику й аудіодоріжки за допомогою ComfyUI (Stable Audio, MusicGen)", "moderations": "Модерації", "moderationsDesc": "Модерація контенту та класифікація безпеки", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", + "responsesDesc": "OpenAI Responses API для Codex і розширених агентних робочих процесів", + "listModelsDesc": "Переглянути всі доступні моделі від усіх підключених провайдерів", + "settingsApiDesc": "Читати та змінювати конфігурацію OmniRoute через API", + "settingsApi": "API налаштувань", "categoryCore": "Основні API", "categoryMedia": "Медіа та мультимодальність", - "categorySearch": "Search & Discovery", + "categorySearch": "Пошук і виявлення", "categoryUtility": "Утиліти та управління", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", + "webSearch": "Вебпошук", + "webSearchDesc": "Уніфікований вебпошук через кількох провайдерів з автоматичним перемиканням у разі збою та кешуванням", + "searchProvider": "Провайдер пошуку", + "searchProviderDesc": "Цей провайдер використовується для вебпошуку через POST /v1/search. Налаштування моделі не потрібне — провайдери пошуку готові до використання після підключення ключа API.", "enableCloudTitle": "Увімкнути Cloud Proxy", "whatYouGet": "Що ви отримаєте", "cloudBenefitAccess": "Отримайте доступ до свого API з будь-якої точки світу", @@ -3963,57 +3963,57 @@ "cloudflaredTitle": "Cloudflare Quick Tunnel", "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.", "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredEnable": "Увімкнути тунель", + "cloudflaredInstallAndEnable": "Установити й увімкнути", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "Працює", + "cloudflaredStarting": "Запускається", + "cloudflaredStoppedState": "Зупинено", + "cloudflaredNotInstalled": "Не встановлено", + "cloudflaredUnsupported": "Не підтримується", + "cloudflaredError": "Помилка", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.", "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", + "cloudflaredLastError": "Остання помилка: {error}", "providerModelsTitle": "{provider} — Моделі", "noModelsForProvider": "Для цього постачальника немає доступних моделей.", "chat": "Чат", "embedding": "Вбудовування", "image": "Зображення", "custom": "звичай", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "modelsCount": "{count, plural, one {# модель} few {# моделі} many {# моделей} other {# моделі}}", + "sectionTitle": "Поверхня інтеграції", + "sectionDescription": "API, сумісні з OpenAI, та кінцеві точки операційних протоколів", "tabApis": "APIи", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "Протоколи", + "tabsAria": "Розділи кінцевих точок", + "protocolsTitle": "Протоколи", + "protocolsDescription": "MCP і A2A є повноцінними кінцевими точками зі спеціалізованими засобами спостережуваності та керування.", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "Model Context Protocol через stdio", + "a2aCardTitle": "Сервер A2A", + "a2aCardDescription": "Кінцева точка Agent2Agent JSON-RPC", + "protocolToolsLabel": "Інструменти", + "protocolTasksLabel": "Завдання", + "protocolActiveStreamsLabel": "Активні потоки", + "protocolLastActivity": "Остання активність", + "quickStart": "Швидкий початок", + "openMcpDashboard": "Відкрити керування MCP", + "openA2aDashboard": "Відкрити керування A2A", + "mcpQuickStartTitle": "Швидкий початок роботи з MCP", + "mcpQuickStartStep1": "Запустіть сервер MCP за допомогою `omniroute --mcp`.", + "mcpQuickStartStep2": "Налаштуйте клієнт MCP для підключення через транспорт stdio.", + "mcpQuickStartStep3": "Викликайте такі інструменти, як `omniroute_get_health` і `omniroute_list_combos`.", + "a2aQuickStartTitle": "Швидкий початок роботи з A2A", + "a2aQuickStartStep1": "Знайдіть картку агента за адресою `/.well-known/agent.json`.", + "a2aQuickStartStep2": "Надсилайте запити JSON-RPC до `POST /a2a` за допомогою `message/send` або `message/stream`.", + "a2aQuickStartStep3": "Відстежуйте завдання та керуйте ними за допомогою `tasks/get` і `tasks/cancel`.", + "completionsLegacy": "Доповнення (застарілі)", + "completionsLegacyDesc": "Застарілі текстові доповнення OpenAI — приймають як рядок запиту, так і формат масиву повідомлень", "messagesApi": "Повідомлення", "messagesApiDesc": "Формат Native Anthropic Messages API для Claude-сумісних постачальників", "imageEdits": "Редагування зображень", @@ -4022,40 +4022,40 @@ "batchApiDesc": "Асинхронна обробка великих пакетів запитів (сумісний з OpenAI)", "filesApi": "API файлів", "filesApiDesc": "Завантажуйте та керуйте файлами для пакетної обробки", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "Генерування відео", + "videoDesc": "Генеруйте відео за допомогою моделей ШІ, як-от ComfyUI і Stable Video Diffusion.", + "tailscaleRequestFailed": "Не вдалося завантажити стан Tailscale", + "tailscaleEnableFailed": "Не вдалося ввімкнути Tailscale Funnel", + "tailscaleWaitingForLogin": "Завершіть вхід у Tailscale у відкритій вкладці браузера. OmniRoute автоматично повторить спробу.", + "tailscaleLoginTimedOut": "Час очікування входу в Tailscale вичерпано", + "tailscaleWaitingForFunnel": "Увімкніть Funnel для цього пристрою у відкритій вкладці браузера. OmniRoute продовжить опитування.", + "tailscaleFunnelTimedOut": "Час очікування ввімкнення Tailscale Funnel вичерпано", + "tailscaleStarted": "Tailscale Funnel увімкнено", + "tailscaleDisableFailed": "Не вдалося вимкнути Tailscale Funnel", + "tailscaleStopped": "Tailscale Funnel вимкнено", + "tailscaleInstallFailed": "Не вдалося встановити Tailscale", + "tailscaleInstallProgress": "Виконується...", + "tailscaleInstalled": "Tailscale успішно встановлено", + "tailscaleRunning": "Працює", + "tailscaleNeedsLogin": "Потрібен вхід", + "tailscaleStoppedState": "Зупинено", + "tailscaleNotInstalled": "Не встановлено", + "tailscaleUnsupported": "Не підтримується", + "tailscaleError": "Помилка", + "tailscaleDisable": "Зупинити Funnel", + "tailscaleInstallAndEnable": "Встановити й увімкнути", + "tailscaleLoginAndEnable": "Увійти й увімкнути", + "tailscaleEnable": "Увімкнути Funnel", + "tailscaleUrlNotice": "Використовує вашу адресу Tailscale .ts.net. Під час першого використання може знадобитися вхід і схвалення Funnel.", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", + "tailscaleNeedsLoginHint": "Автентифікуйте цей комп’ютер у Tailscale, а потім увімкніть Funnel.", + "tailscaleBinaryPath": "Виконуваний файл: {path}", + "tailscaleLastError": "Остання помилка: {error}", + "tailscaleInstallTitle": "Встановити Tailscale", + "tailscaleInstallIntro": "Встановлює Tailscale на цей комп’ютер і готує OmniRoute до ввімкнення Funnel.", + "tailscaleInstallPasswordHint": "У macOS і Linux для встановлення пакета та запуску демона може знадобитися sudo.", + "tailscaleSudoPlaceholder": "Необов’язковий пароль sudo", + "tailscaleInstalling": "Встановлення", "tailscaleSudoLabel": "Пароль Sudo (потрібний для macOS/Linux)", "ngrokTitle": "тунель нгрок", "ngrokRunning": "Біг", @@ -4108,7 +4108,7 @@ "all": "Усі", "more": "+{count} ще", "showInternalTooltip": "Показати або приховати внутрішні маршрути (приховані за замовчуванням)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Bearer-автентифікація", "requestBody": "Тіло запиту", "close": "Закрити", "tryIt": "Спробувати", @@ -4132,7 +4132,7 @@ "vscodeAliasModelsLabel": "Моделі VS Code", "vscodeAliasChatLabel": "Чат VS Code", "localServer": "Локальний сервер", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "Хмарний OmniRoute", "copyUrl": "Копіювати URL", "badgeLoopbackTooltip": "Цей ендпоінт доступний лише локально (loopback)", "badgeAlwaysProtectedTooltip": "Цей ендпоінт завжди захищений і потребує авторизації", @@ -4144,9 +4144,9 @@ "tierPublic": "Публічні", "hideInternal": "Приховати внутрішні", "showInternal": "Показати внутрішні", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "Власна системна підказка", + "customSystemPromptDescription": "Додавати власну системну підказку до кожного запиту до моделі", + "customSystemPromptPlaceholder": "Наприклад, завжди відповідай як пірат...", "obsidianEnterToken": "Будь ласка, введіть токен API Obsidian", "obsidianConnectFailed": "Не вдалося підключитися", "obsidianConnectionFailed": "Помилка підключення", @@ -4195,29 +4195,29 @@ "notionTokenConfigured": "Токен налаштовано. Інструменти Notion доступні через MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "Проксі кінцевої точки", + "tabApiEndpoints": "Кінцеві точки API", + "apiEndpointsTitle": "Кінцеві точки API", + "apiEndpointsDescription": "Кінцеві точки серверного API, які можуть використовувати інші застосунки та служби. У цьому розділі буде наведено список усіх доступних REST API з документацією та можливостями тестування.", + "comingSoon": "Незабаром", + "plannedFeatures": "Заплановані функції", + "featureRestApi": "Каталог кінцевих точок REST API з інтерактивною документацією", + "featureWebhooks": "Налаштування вебхуків і підписок на події", + "featureSwagger": "Автоматичне створення специфікації OpenAPI / Swagger", + "featureAuth": "Керування ключами API та областями доступу OAuth для кожної кінцевої точки" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", + "loading": "Завантаження панелі керування MCP...", + "activate": "активувати", + "deactivate": "деактивувати", + "confirmSwitchCombo": "Підтвердити дію «{action}» для комбінації «{combo}»?", + "switchComboFailed": "Не вдалося змінити стан комбінації.", + "switchComboSuccess": "Комбінацію «{combo}» оновлено.", + "confirmApplyProfile": "Застосувати профіль стійкості «{profile}»?", + "applyProfileFailed": "Не вдалося застосувати профіль стійкості.", + "applyProfileSuccess": "Профіль «{profile}» застосовано.", + "confirmResetBreakers": "Скинути всі автоматичні вимикачі?", + "resetBreakersFailed": "Не вдалося скинути автоматичні вимикачі.", "resetBreakersSuccess": "Скидання автоматичних вимикачів.", "processStatus": "Статус процесу", "online": "Онлайн", @@ -4243,113 +4243,113 @@ "totalCalls": "Всього дзвінків", "successRate": "Коефіцієнт успішності", "avgLatency": "Середня затримка", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "topTools": "Найпопулярніші інструменти", + "noToolCalls24h": "За останні 24 години викликів інструментів не було.", + "runtimeDetails": "Відомості про середовище виконання", + "transport": "Транспорт", + "scopesEnforced": "Області доступу застосовуються", + "yes": "так", + "no": "ні", + "lastCall": "Останній виклик", + "heartbeatPath": "Шлях перевірки працездатності", + "operationalControls": "Керування роботою", + "switchCombo": "Перемкнути комбінацію", + "inactive": "неактивна", + "active": "активна", + "activateCombo": "Активувати комбінацію", + "deactivateCombo": "Деактивувати комбінацію", + "applyResilienceProfile": "Застосувати профіль стійкості", + "profileAggressive": "агресивний", + "profileBalanced": "збалансований", + "profileConservative": "консервативний", + "applyProfile": "Застосувати профіль", + "resetCircuitBreakers": "Скинути автоматичні вимикачі", + "resetCircuitBreakersHelp": "Очищає поточний стан автоматичних вимикачів і лічильники збоїв для провайдерів.", + "resetAllBreakers": "Скинути всі автоматичні вимикачі", + "toolsAndScopes": "Інструменти та області доступу", + "tableTool": "Інструмент", + "tableScopes": "Області доступу", + "tablePhase": "Етап", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "Журнал аудиту", + "auditSummary": "Виклики: {total} | сторінка {page} з {totalPages}", + "allTools": "Усі інструменти", + "allResults": "Усі результати", + "success": "Успішно", + "failure": "Помилка", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "Завантаження записів аудиту...", + "noAuditEntriesForFilters": "Для поточних фільтрів записів аудиту не знайдено.", + "tableTimestamp": "Часова позначка", + "tableDuration": "Тривалість", + "tableResult": "Результат", + "tableApiKey": "Ключ API", + "failed": "помилка", + "previous": "Попередня", + "next": "Наступна", + "apiKeyId": "Ідентифікатор ключа API", + "offset": "Зміщення", + "limit": "Ліміт", + "tool": "Інструмент" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "Завантаження панелі A2A...", + "confirmCancelTask": "Скасувати завдання {taskId}?", + "cancelTaskFailed": "Не вдалося скасувати завдання.", + "cancelTaskSuccess": "Завдання {taskId} скасовано.", + "smokeSendFailed": "Не вдалося виконати димовий тест message/send.", + "smokeSendSuccessWithTask": "message/send виконано успішно (завдання {taskId}).", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "Не вдалося виконати димовий тест message/stream.", + "smokeStreamSuccessWithTask": "message/stream виконано успішно (завдання {taskId}{stateSuffix}).", + "smokeStreamNoTaskId": "message/stream завершено без ідентифікатора завдання.", + "health": "Стан", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "Усього завдань", + "activeStreams": "Активні потоки", + "lastTask": "Останнє завдання", + "taskStateOverview": "Огляд станів завдань", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "надіслано", + "working": "виконується", + "completed": "завершено", + "failed": "помилка", + "cancelled": "скасовано" }, - "agentCard": "Agent card", + "agentCard": "Картка агента", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "Версія", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "Можливості", + "agentCardNotAvailable": "Картка агента недоступна.", + "quickValidation": "Швидка перевірка", + "quickValidationDescription": "Виконує тестові виклики через активну кінцеву точку `/a2a`.", + "runMessageSend": "Виконати message/send", + "runMessageStream": "Виконати message/stream", + "taskManagement": "Керування завданнями", + "taskSummary": "{total} завдань | сторінка {page} із {totalPages}", + "allStates": "усі", + "allSkills": "усі навички", + "loadingTasks": "Завантаження завдань...", + "noTasksForFilters": "Завдань за поточними фільтрами не знайдено.", + "tableTask": "Завдання", + "tableSkill": "Навичка", + "tableState": "Стан", + "tableUpdated": "Оновлено", + "tableActions": "Дії", + "view": "Переглянути", + "cancel": "Скасувати", + "previous": "Назад", + "next": "Далі", + "taskDetail": "Відомості про завдання", + "close": "Закрити", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "Події", + "artifacts": "Артефакти", + "tablePhase": "Фаза таблиці", + "offset": "Зміщення", + "limit": "Ліміт", + "skill": "Навичка", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "повідомлення/відправити", "rpcMethodStream": "повідомлення/потік", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "Дії", + "addMemory": "Додати пам’ять", + "allTypes": "Усі типи", "cancel": "Скасувати", "checkHealth": "Перевір здоров'я", "checkingHealth": "Перевірка…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "Як це працює", "howWorksContent": "1. Автоматичне вилучення: наприкінці кожної відповіді факти та епізоди виявляються та зберігаються автоматично.\n2. Пошук: перед кожною відповіддю здійснюється пошук найбільш релевантних спогадів за допомогою FTS5 (точний), векторного (семантичний) або гібридного RRF.\n3. Впровадження: релевантні спогади додаються в контекст асистента для покращення якості відповідей.\n4. Керування: використовуйте цю сторінку для перегляду, редагування, експорту та стиснення старих спогадів." }, - "content": "Content", + "content": "Вміст", "contentPlaceholder": "Значення або вміст JSON, який слід запам’ятати", - "created": "Created", - "delete": "Delete", + "created": "Створено", + "delete": "Видалити", "deleteConfirmDesc": "Цю дію неможливо скасувати. Спогад буде видалено назавжди.", "deleteConfirmTitle": "Видалити спогад?", - "description": "View and manage stored memory entries", + "description": "Перегляд і керування збереженими записами пам’яті", "editMemory": "Редагувати спогад", "editModal": { "title": "Редагувати спогад", @@ -4444,20 +4444,20 @@ "configureCta": "Налаштувати", "vectorStoreInstallHint": "Щоб увімкнути векторний пошук: виконайте npm install sqlite-vec (потрібен native Node.js, не WASM), а потім перезапустіть." }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "Епізодична", + "export": "Експортувати", + "factual": "Фактологічна", "healthUnknown": "Стан здоров'я невідомий", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "Частка влучань", + "import": "Імпортувати", "importError": "Не вдалося імпортувати файл", "importResult": "{imported} імпортовано, {skipped} пропущено", - "key": "Key", + "key": "Ключ", "keyPlaceholder": "напр. user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "Спогади", "next": "Далі", - "noMemories": "No memories found", + "noMemories": "Спогадів не знайдено", "pageInfo": "Сторінка {page} з {totalPages} (усього {total})", "pipelineError": "Помилка трубопроводу", "pipelineOk": "Конвеєр OK ({latencyMs}ms)", @@ -4469,7 +4469,7 @@ "strategyLabel": "Стратегія", "strategyExact": "Точний (FTS5)", "strategySemantic": "Семантичний (векторний)", - "strategyHybrid": "Hybrid (RRF)", + "strategyHybrid": "Гібридний (RRF)", "budgetLabel": "Бюджет (токени)", "simulate": "Симулювати", "resultsTitle": "{count} результат(ів)", @@ -4485,7 +4485,7 @@ "errorFetch": "Не вдалося завантажити попередній перегляд" }, "previous": "Попередній", - "procedural": "Procedural", + "procedural": "Процедурна", "qdrant": { "title": "Qdrant (Векторне сховище рівня 2)", "description": "Додаткова інтеграція Qdrant для масштабованого семантичного пошуку", @@ -4534,8 +4534,8 @@ }, "save": "зберегти", "saving": "Збереження...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "Шукати спогади...", + "semantic": "Семантична", "summarize": { "title": "Стиснути старі спогади", "noCandidates": "Немає спогадів, які підлягають стисненню (критерій: вік >30 днів).", @@ -4547,8 +4547,8 @@ "playground": "Пісочниця", "engine": "Рушій" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "Керування пам’яттю", + "tokensUsed": "Використано токенів", "tooltip": { "totalEntries": "Всього спогадів, збережених для цього API-ключа", "tokensUsed": "Оціночна загальна кількість токенів, зайнятих активними спогадами", @@ -4558,15 +4558,15 @@ "procedural": "Процедури, робочі процеси та інструкції, яких повинен дотримуватися асистент", "semantic": "Концепції, уподобання та знання предметної області" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "Усього записів", + "type": "Тип", "memoryEnabled": "Пам'ять увімкнено" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "Навички", + "description": "Керування та моніторинг навичок ШІ", + "skillsTab": "Навички", + "executionsTab": "Виконання", "selectSkillToInspect": "Виберіть навичку ліворуч для перегляду.", "schemaTab": "Схема", "handlerTab": "Обробник", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "Запустити тест (заповнювач)", "setModeAria": "Встановити режим {mode}", "uninstallSkill": "Видалити навичку", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "Пісочниця", + "loading": "Завантаження навичок...", + "noSkills": "Навичок не знайдено", + "noExecutions": "Виконань не знайдено", + "enabled": "Увімкнено", + "disabled": "Вимкнено", "delete": "Видалити", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "Версія", + "tableDescription": "Опис", + "skill": "Навичка", + "status": "Стан", + "duration": "Тривалість", + "time": "Час", + "sandboxConfig": "Конфігурація пісочниці", + "cpuLimit": "Обмеження ЦП", + "cpuLimitDesc": "Максимальний час виконання для кожної навички", + "memoryLimit": "Обмеження пам’яті", + "memoryLimitDesc": "Максимальний обсяг виділеної пам’яті", + "timeout": "Час очікування", + "timeoutDesc": "Максимальний час очікування відповіді", + "networkAccess": "Доступ до мережі", + "networkAccessDesc": "Дозволити вихідні мережеві запити", + "mode": "Режим", "q": "Q", "filterSkillsPlaceholder": "Фільтруйте навички за назвою, описом або тегом", "allModes": "Всі режими", @@ -4665,13 +4665,13 @@ "retry": "Повторіть спробу", "allOperational": "Всі системи в робочому стані", "issuesDetected": "Виявлено системні проблеми", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute готовий до роботи", + "healthVerdictActionRequired": "Потрібна дія для відновлення повноцінної роботи", + "healthVerdictCoolingDown": "Період стабілізації після нещодавніх змін", + "healthSubtitle": "Перевірка стану системи", + "advancedDiagnosticsTitle": "Розширена діагностика", + "hide": "Приховати", + "show": "Показати", "updatedAt": "Оновлено {time}", "latency": "Затримка", "latencyP50": "стор.50", @@ -4698,9 +4698,9 @@ "providers": "Провайдери", "configuredProvidersLabel": "Налаштовано на інформаційній панелі", "configuredProvidersHint": "Постачальники з обліковими даними, збереженими в /dashboard/providers, незалежно від стану виконання.", - "activeProviders": "{count} active", + "activeProviders": "Активні: {count}", "activeProvidersHint": "Налаштовані постачальники наразі ввімкнено для запитів маршрутизації.", - "monitoredProviders": "{count} monitored", + "monitoredProviders": "Відстежуються: {count}", "monitoredProvidersHint": "Постачальники наразі відстежуються моніторами справності автоматичних вимикачів.", "healthyCount": "{count} здоровий", "nodeVersion": "Вузол {version}", @@ -4721,11 +4721,11 @@ "resetting": "Скидання...", "resetAll": "Скинути все", "until": "До {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "limitExhausted": "Вичерпано", + "learnedFromHeaders": "Отримано із заголовків", + "remainingOfLimit": "Залишилося {remaining} із {limit}", + "throttleStatus": "Обмеження частоти: {value}", + "lastHeaderUpdate": "Оновлення заголовка: {age}", "databaseHealth": "Справність бази даних", "databaseHealthDescription": "Діагностувати та відновити застарілі рядки квот/доменів і пошкоджені посилання на комбінації.", "status": "Статус", @@ -4888,28 +4888,28 @@ "previous": "Попередній", "next": "Далі", "providerWarningTitle": "Provider Warning Title", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", + "viewDetails": "Переглянути подробиці", + "eventMetadata": "Метадані події", + "eventPayload": "Дані події", + "requestId": "Ідентифікатор запиту", "providerWarningDesc": "Provider Warning Desc", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", + "offset": "Зміщення", + "limit": "Ліміт", + "status": "Статус", + "resourceType": "Тип ресурсу", + "totalEntries": "Усього записів", + "tab": "Вкладка", "auditModalSubtitle": "Audit Modal Subtitle", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "close": "Закрити", + "runningRequests": "Активні запити", + "runningRequestsDesc": "Перегляд поточних вихідних запитів у реальному часі", "clearAll": "Очистити все", "confirmClearActiveRequests": "Очистити всі активні запити?", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "Модель", + "provider": "Провайдер", + "account": "Обліковий запис", + "elapsed": "Минуло", "activeStage": "Етап", "activeStageUnknown": "Ще не надіслано до провайдера", "activeStageRegistered": "Зареєстровано", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "Слот обмеження швидкості отримано", "activeStageSendingToProvider": "Надсилання до провайдера", "activeStageProviderResponseStarted": "Відповідь провайдера почала надходити", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "Кількість", + "payloads": "Корисні навантаження", + "viewPayloads": "Переглянути", + "activeCount": "Активних: {count}", + "clientPayload": "Корисне навантаження запиту клієнта", + "upstreamPayload": "Корисне навантаження висхідного провайдера", + "upstreamNotSentYet": "Ще не надіслано висхідному провайдеру", + "runningRequestDetailMeta": "Обліковий запис: {account} — Минуло: {elapsed}", + "export": "Експортувати", + "exporting": "Експортування...", + "exportFailed": "Не вдалося експортувати", "cleanHistoryButton": "Очистити історію", "cleanHistoryTitle": "Очистити історію логів?", "cleanHistoryMessage": "Це назавжди очистить усі рядки журналів запитів, застарілі рядки деталей та локальні файли артефактів у DATA_DIR/call_logs. Сторінка оновиться після очищення.", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "Очищено {deleted} записів логів, {deletedArtifacts} артефактів та {deletedDetailedLogs} застарілих рядків деталей.", "cleanHistoryEmpty": "Історію логів запитів не знайдено.", "cleanHistoryFailed": "Не вдалося очистити історію логів.", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "Діапазон часу", + "lastNHours": "Останні {hours}", + "defaultRange": "за замовчуванням", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "Не вдалося отримати журнали", + "copyFailed": "Не вдалося скопіювати запис журналу", + "copyLogEntry": "Копіювати запис журналу", "filterByLevel": "Фільтрувати за рівнем логування", "searchPlaceholder": "Пошук у логах…", "searchAria": "Пошук записів логів", @@ -4987,9 +4987,9 @@ "multiProvider": "Багатопровайдер", "usageTracking": "Відстеження використання", "securityDesc": "Встановіть пароль, щоб захистити свою інформаційну панель, або пропустіть наразі.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ Без пароля ви не зможете додати провайдерів під час налаштування. Їх можна буде додати пізніше з панелі керування після встановлення пароля.", "providerDesc": "Підключіть свого першого постачальника AI. Ви можете додати більше пізніше.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "Щоб додати провайдерів, спочатку потрібно встановити пароль. Поверніться до кроку безпеки та встановіть пароль або додайте провайдерів пізніше з панелі керування.", "apiKeyRequired": "Ключ API (обов'язково)", "customUrlOptional": "Спеціальна URL-адреса (необов'язково)", "testDesc": "Давайте перевіримо, чи працює підключення до вашого провайдера.", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "Імпортування…", "importFromFileImport": "Імпортувати {count} провайдерів", "importFromFileResult": "Імпортовано {success} провайдерів (не вдалося: {failed})", + "importFromFileDownloadTemplate": "Завантажити шаблон CSV", + "importFromFileMoreErrors": "Ще +{count}", + "importFromFileSchemaHint": "Стовпці CSV є позиційними: provider, name, apiKey, baseUrl (необов’язково), priority (необов’язково). Стовпець provider має містити ідентифікатор наявного керованого провайдера або вже зареєстрований ідентифікатор вузла, сумісного з OpenAI/Anthropic. Цей імпорт не створює нових вузлів кінцевих точок.", "adaptaTutorial": { "title": "Як підключити Adapta Web", "introPrefix": "Adapta автентифікується через Clerk. Токен", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "Цей постачальник більше не підтримується", "riskNotice": { "title": "Перед тим, як продовжити", - "detailsTitle": "Usage caveats", + "detailsTitle": "Застереження щодо використання", "tooltip": "Провайдер із застереженнями щодо використання — натисніть для подробиць", "oauth": "Цей провайдер використовує вашу офіційну продуктову сесію/OAuth, які не авторизовані для використання у проксі/маршрутизаторі. Ми не рекомендуємо інтенсивне автономне використання агентами (стиль OpenCloud, довгі багатокрокові потоки, великі пакети) — провайдер може у відповідь обмежити або заблокувати акаунт. Використовуйте на власний ризик.", "webCookie": "Цей провайдер автентифікується через cookie вашої веб-сесії. Сервіс може в будь-який момент анулювати сесію, що вимагатиме повторного входу. Не рекомендовано для довгих автоматизованих операцій. Використовуйте на власний ризик.", @@ -5188,9 +5191,9 @@ "cancel": "Скасувати" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "Позначено підключень: {count} — до {maxFailures} нещодавніх помилок{lastFailureSuffix}. Натисніть, щоб переглянути стан підключень.", + "lastFailureSuffix": "(остання помилка {time})", + "ariaLabel": "Переглянути відомості про стан підключень, попереджень: {count}" }, "disabled": "Вимкнено", "enableProvider": "Увімкнути провайдера", @@ -5236,7 +5239,7 @@ "clearing": "Очищення...", "until": "До {time}", "providerTestFailed": "Тест постачальника не вдався", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "providerTestTimeout": "Час очікування перевірки провайдера минув — забагато підключень для одночасної перевірки", "modeTest": "Тест {mode}", "passedCount": "{count} пройдено", "failedCount": "{count} не вдалося", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "URL-адреса іконки", "iconUrlHint": "Необов'язково. URL-адреса зображення, що відображається як іконка цього провайдера.", "iconUrlInvalid": "Недійсне URL-адреса значка. Використовуйте http(s):// або data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Часовий пояс скидання добової квоти", + "dailyQuotaResetTimezoneHint": "Необов’язковий часовий пояс IANA, який використовується, коли висхідний сервіс не надає X-RateLimit-Reset. Залиште порожнім, щоб зберегти короткий період очікування.", + "dailyQuotaResetHourLabel": "Година скидання добової квоти", + "dailyQuotaResetHourHint": "Місцева година від 0 до 23 у вказаному вище часовому поясі. Порожнє значення означає відсутність годинника на рівні вузла.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5274,9 +5277,9 @@ "providerNotFound": "Постачальник не знайдено", "deleteConnectionConfirm": "Видалити це підключення?", "deleteConnectionConfirmNamed": "Ви впевнені, що хочете видалити {name}? Цю дію не можна скасувати.", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "Видалити вибрані ({count})", + "batchDeleteConfirm": "Видалити підключення ({count})? Цю дію неможливо скасувати.", + "batchDeleteSuccess": "Видалено підключень: {count}", "batchActivateSelected": "Активувати", "batchDeactivateSelected": "Деактивувати", "batchRetestSelected": "Повторно протестувати", @@ -5292,7 +5295,7 @@ "filterError": "Помилка", "filterBanned": "Заблоковано", "filterCreditsExhausted": "Кредити вичерпано", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Пошук облікових записів…", "noFilteredConnections": "Жодне підключення не відповідає поточному фільтру.", "failedSetAlias": "Не вдалося встановити псевдонім", "setAliasSuccess": "Псевдонім {alias} встановлено", @@ -5306,13 +5309,13 @@ "messagesApi": "API повідомлень", "responsesApi": "API відповідей", "embeddings": "Вбудовування", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "audioTranscriptions": "Транскрибування аудіо", + "audioSpeech": "Синтез мовлення", + "imagesGenerations": "Генерація зображень", "chatCompletions": "Завершення чату", "importingModels": "Імпорт...", "importFromModels": "Імпортувати з /models", - "modelsImported": "{count} models imported", + "modelsImported": "Імпортовано моделей: {count}", "allModelsAlreadyImported": "Усі моделі вже імпортовано", "noNewModelsToImport": "Немає нових моделей для імпорту — усі моделі вже є в реєстрі або списку користувацьких моделей", "skippingExistingModels": "Пропуск {count} наявних моделей", @@ -5350,13 +5353,13 @@ "importFailed": "Помилка імпорту", "noNewModelsAdded": "Нові моделі не додано.", "adding": "Додавання...", - "close": "Close", + "close": "Закрити", "importingModelsTitle": "Імпорт моделей", "copyModel": "Копія моделі", "filterModels": "Фільтрувати моделі…", "testAllRateLimited": "Досягнуто ліміту запитів, зупинено достроково", "hideFailedAuto": "Автоматично приховувати моделі з помилками", - "selectAllModels": "Select all", + "selectAllModels": "Вибрати все", "hideAllModels": "Приховати все", "modelsActive": "активні", "showModel": "Показати модель", @@ -5386,8 +5389,8 @@ "bulkAddFormatHint": "Один ключ на рядок. Формат: ім’я|apiKey або просто apiKey (автоматична назва за індексом).", "bulkValidateKeys": "Перевірте кожен ключ перед збереженням (повільніше)", "bulkAddAllKeys": "Додати всі ключі", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", + "bulkAddedCount": "{count, plural, one {Додано # ключ} few {Додано # ключі} many {Додано # ключів} other {Додано # ключа}}", + "bulkFailedCount": "{count, plural, one {# помилка} few {# помилки} many {# помилок} other {# помилки}}", "optional": "Додатково", "anthropicCompatibleName": "Антропна сумісність", "openaiCompatibleName": "Сумісність з OpenAI", @@ -5404,7 +5407,7 @@ "unexpectedErrorOccurred": "Сталася неочікувана помилка", "getApiKey": "Отримати API ключ", "getApiKeyDescription": "Зареєструйтеся або підпишіться на API-ключ", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# підключення} few {# підключення} many {# підключень} other {# підключення}}", "messagesPath": "повідомлення", "responsesPath": "відповіді", "chatCompletionsPath": "чат/завершення", @@ -5419,17 +5422,17 @@ "configured": "налаштовано", "providerProxyConfigureHint": "Налаштувати проксі для всіх підключень цього провайдера", "providerProxy": "Проксі-сервер постачальника", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", + "repairEnv": "Відновити .env", + "repairEnvWorking": "Відновлення...", + "repairEnvHint": "Відновити відсутні стандартні значення OAuth у .env, не перезаписуючи наявні значення.", + "repairEnvSuccess": "Стандартні значення OAuth відновлено", + "repairEnvFailed": "Не вдалося відновити .env", "noConnectionsYet": "Підключень ще немає", "addFirstConnectionHint": "Щоб почати, додайте своє перше підключення", "addConnection": "Додати підключення", "availableModels": "Доступні моделі", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", + "builtInModels": "Вбудовані моделі", + "builtInModelsHint": "Моделі цього постачальника з реєстру. Скористайтеся олівцем, щоб налаштувати параметри сумісності.", "pageAutoRefresh": "Сторінка оновиться автоматично...", "statusDisabled": "вимкнено", "statusConnected": "підключений", @@ -5475,24 +5478,24 @@ "reauthenticateConnection": "Повторно автентифікуйте це підключення", "proxyConfig": "Конфігурація проксі", "aliasExistsAlert": "Псевдонім \"{alias}\" вже існує. Використовуйте іншу модель або відредагуйте існуючий псевдонім.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "назва псевдоніма", + "clickToSetAlias": "Натисніть, щоб установити псевдонім", + "clickToEditAlias": "Псевдонім: {alias} (натисніть, щоб змінити)", "openRouterAnyModelHint": "OpenRouter підтримує будь-яку модель. Додайте моделі та створіть псевдоніми для швидкого доступу.", "modelIdFromOpenRouter": "ID моделі (з OpenRouter)", "openRouterModelPlaceholder": "антропний/claude-3-opus", "customModels": "Спеціальні моделі", "customModelsHint": "Додайте ідентифікатори моделей, яких немає в списку за замовчуванням. Вони будуть доступні для маршрутизації.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "normalizeToolCallIdLabel": "Нормалізувати ідентифікатори викликів інструментів до 9 символів (наприклад, Mistral)", + "preserveDeveloperRoleLabel": "Зберігати роль developer у OpenAI Responses (не зіставляти із system)", + "compatAdjustmentsTitle": "Сумісність", + "compatButtonLabel": "Сумісність", + "compatToolIdShort": "Ідентифікатор інструмента — 9 символів", + "compatDeveloperShort": "Роль developer", + "compatDoNotPreserveDeveloper": "Не зберігати роль developer", + "compatBadgeNoPreserve": "Не зберігати", + "compatProtocolLabel": "Протокол запиту клієнта", + "compatProtocolHint": "Ці параметри застосовуються, коли OmniRoute виявляє таку структуру запиту (OpenAI Chat, Responses API або Anthropic Messages).", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,25 +5537,25 @@ "interceptFetchHint": "Перенаправляти виклики нативного інструмента web_fetch на /v1/web/fetch в OmniRoute.", "interceptionLoadError": "Не вдалося завантажити налаштування перехоплення: {error}", "interceptionSaveError": "Не вдалося зберегти налаштування перехоплення: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", + "ccAliasSectionTitle": "Показувати в Claude Code (claude/…)", + "ccAliasSectionHint": "Публікувати моделі цього постачальника під дзеркальними ідентифікаторами claude/<provider>/<model>, щоб засіб виявлення моделей шлюзу Claude Code міг додати їх до списку. За замовчуванням вимкнено — увімкнення подвоює кількість записів у каталозі для всіх клієнтів.", + "ccAliasProviderLevelLabel": "За замовчуванням постачальника", + "ccAliasModelOverridesLabel": "Перевизначення для окремих моделей", + "ccAliasModelOverrideAriaLabel": "Перевизначення для {modelId}", + "ccAliasStateInherit": "Успадковувати", + "ccAliasStateOn": "Увімкнено", + "ccAliasStateOff": "Вимкнено", + "ccAliasAddModelPlaceholder": "Ідентифікатор моделі (наприклад, gpt-4o)", + "ccAliasAddModelButton": "Додати перевизначення", + "ccAliasLoadError": "Не вдалося завантажити налаштування псевдонімів виявлення: {error}", + "ccAliasSaveError": "Не вдалося зберегти налаштування псевдоніма виявлення: {error}", + "compatUpstreamHeadersLabel": "Додаткові заголовки висхідного сервера", + "compatUpstreamHeadersHint": "Налаштування з високим рівнем привілеїв — має такий самий рівень довіри, як і редагування облікових даних API постачальника; використовувати його мають лише довірені адміністратори. Об’єднується після того, як OmniRoute додає автентифікацію з ключа API постачальника. Якщо власний заголовок має таку саму назву, як уже наявний (наприклад, Authorization), ваше значення повністю замінить автоматично створений заголовок (разом із токеном Bearer) — висхідний сервер бачитиме лише введене вами значення, а не ключ із налаштувань. Неправильна конфігурація може спричинити помилку 401 або порушити автентифікацію на висхідному сервері. Один рядок на заголовок (наприклад, додаткова Authentication для деяких шлюзів). Наведіть вказівник або установіть фокус на значенні, щоб переглянути його. Зберігається після втрати фокуса, натискання поза полем або закриття цієї панелі.", + "compatUpstreamHeaderName": "Назва заголовка", + "compatUpstreamHeaderValue": "Значення", + "compatUpstreamAddRow": "Додати заголовок", + "compatUpstreamRemoveRow": "Видалити рядок", + "compatBadgeUpstreamHeaders": "Заголовки", "perModelQuotaLabel": "Per Model Quota Label", "perModelQuotaDescription": "Per Model Quota Description", "importFreeModelsOnlyLabel": "Імпортувати лише безкоштовні моделі", @@ -5592,26 +5595,26 @@ "email": "Електронна пошта", "healthCheckMinutes": "Перевірка стану (хв.)", "healthCheckHint": "Проактивний інтервал оновлення маркера. 0 = вимкнено.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", + "deselectAllModels": "Зняти вибір з усіх", + "modelsActiveCount": "Активні: {active}/{total}", + "noModelsMatch": "Жодна модель не відповідає фільтру «{filter}»", + "groupLabel": "Середовище", + "groupPlaceholder": "наприклад, eKaizen, особисте", "failedTestConnection": "Не вдалося перевірити з’єднання", "failed": "Не вдалося", "leaveBlankKeepCurrentApiKey": "Залиште поле порожнім, щоб зберегти поточний ключ API.", "editCompatibleTitle": "Редагувати {type} Сумісний", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", + "compatibleBaseUrlHint": "Коренева URL-адреса вашого API, сумісного з {type}. Використовуйте розширені налаштування для власних шляхів кінцевих точок.", "apiKeyForCheck": "Ключ API (для перевірки)", "testModelIdLabel": "ID моделі (необов'язково)", "testModelIdPlaceholder": "наприклад, my-model-id", "testModelIdHint": "Якщо у провайдера відсутній ендпоінт /models, введіть ID моделі для перевірки через /chat/completions.", "compatibleProdPlaceholder": "{type} Сумісність (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "tokenRefreshed": "Токен успішно оновлено", + "tokenRefreshFailed": "Не вдалося оновити токен", "cursorSessionUnchanged": "Сесія вже активна", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "Застосувати автентифікацію", + "exportCodexAuthFile": "Експортувати дані автентифікації", "applyClaudeAuthLocal": "Застосувати авторизацію", "exportClaudeAuthFile": "Аутентифікація експорту", "importClaudeAuth": "Аутентифікація імпорту", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} не вдалося", "codexImportBulkZipExtracting": "Розпакування ZIP…", "codexImportBulkZipError": "Не вдалося розпакувати ZIP", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "Розширені налаштування", + "chatPathLabel": "Шлях кінцевої точки чату", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "Власний шлях чату для провайдерів із нестандартними API (наприклад, /v4/chat/completions)", + "modelsPathLabel": "Шлях кінцевої точки моделей", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "Власний шлях до моделей для перевірки (наприклад, /v4/models)", "clientIdentityLabel": "Ідентифікація клієнта", "clientIdentityHint": "Необов'язково. Додає заголовки цифрового відбитка клієнта (наприклад, User-Agent), що відповідають відомому CLI, для сумісних шлюзів, які їх очікують.", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", + "statusDeactivated": "Деактивовано (вручну)", + "statusBanned": "Заблоковано / порушення правил пісочниці", + "statusCreditsExhausted": "Недостатній баланс / квоту вичерпано", + "showEmails": "Показати всі електронні адреси", + "hideEmails": "Приховати всі електронні адреси", "a": "A", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "Додайте інший ключ API або вставте кілька ключів", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "Шлюзи агрегаторів", "enterpriseCloud": "Підприємство та хмара", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "Мітка формату API", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "Регіон API: Китай", + "apiRegionHint": "Підказка щодо регіону API", + "apiRegionInternational": "Регіон API: міжнародний", + "apiRegionLabel": "Мітка регіону API", + "apikey": "Ключ API", + "audio": "Аудіо", + "audioProvidersHeading": "Заголовок провайдерів аудіо", "cloudAgentProviders": "Постачальники хмарних агентів", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "Коротка мітка аудіо", + "azureOpenAiBaseUrlHint": "Підказка щодо базової URL-адреси Azure Open AI", + "bailianBaseUrlHint": "Підказка щодо базової URL-адреси Bailian", + "claudeWebCookieHint": "Відкрийте claude.ai → DevTools → Application → Cookies → claude.ai і скопіюйте значення 'sessionKey'. Для Cloudflare також потрібні cf_clearance, __cf_bm, _cfuvid.", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Підказка щодо файлу cookie Blackbox Web", + "blackboxWebCookiePlaceholder": "Заповнювач файлу cookie Blackbox Web", "t3ChatWebCookieHint": "Відкрийте t3.chat → DevTools → Application → Local Storage → https://t3.chat, скопіюйте 'convex-session-id'. Потім відкрийте DevTools → Network, скопіюйте повний заголовок Cookie з будь-якого запиту чату. Вставте обидва значення в поля нижче.", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Підказка щодо файлу cookie Grok Web", "blockClaudeExtraUsageDescription": "Коли увімкнено, OmniRoute позначає це з'єднання Claude як недоступне, щойно API використання повідомляє про чергу додаткового використання, тому резервне з'єднання перемикається на інше з'єднання замість продовження на оплату за фактом додаткового рахунку.", "blockClaudeExtraUsageLabel": "Блокувати додаткове використання Claude", "disableCoolingDescription": "Пропускати тимчасовий період очікування, щоб це підключення залишалося доступним навіть після відновлюваних помилок (термінальні стани, як-от banned/expired, все одно застосовуються).", "disableCoolingLabel": "Вимкнути період очікування для цього підключення", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {Додано 1 ключ} other {Додано # ключів}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {Пропущено 1 дублікат} other {Пропущено # дублікатів}}", + "bulkPasteHint": "Вставте по одному API-ключу в кожному рядку. Порожні рядки ігноруються, а дублікати ключів пропускаються.", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "Додає бета-заголовок redact-thinking для сумісних із CC висхідних провайдерів, яким потрібні приховані потоки міркувань Claude.", + "ccCompatibleRedactThinkingLabel": "Увімкнути бета-функцію redact-thinking", + "ccCompatibleSummarizeThinkingDescription": "Додає `display: \"summarized\"` до запитів міркування, сумісних із CC, щоб підтримувані моделі Claude передавали видимі фрагменти міркувань у потоковому режимі.", + "ccCompatibleSummarizeThinkingLabel": "Увімкнути відображення підсумованих міркувань", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,16 +5811,16 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "Використовувати пріоритетний рівень обслуговування для запитів Codex, коли він доступний.", + "codexFastServiceTierLabel": "Швидкий рівень обслуговування Codex", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", + "compatUpstreamHeaderNamePlaceholder": "Заповнювач назви заголовка сумісного висхідного провайдера", + "compatUpstreamHeaderValuePlaceholder": "Заповнювач значення заголовка сумісного висхідного провайдера", "compatible": "Сумісні", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", + "configuredCount": "Кількість налаштованих", + "consoleApiKeyOracleHint": "Підказка щодо API-ключа консолі Oracle", + "consoleApiKeyOracleLabel": "API-ключ консолі Oracle", + "consoleApiKeyOraclePlaceholder": "Заповнювач API-ключа консолі Oracle", "newApiUserIdLabel": "ID користувача New-API", "newApiUserIdPlaceholder": "напр. 12345", "newApiUserIdHint": "Значення заголовка New-Api-User AgentRouter, використовується разом із ключем API консолі для отримання балансу квоти.", @@ -5830,32 +5833,32 @@ "featureFlagNewApiAggregatorBalanceDescription": "Увімкніть виявлення балансу для сумісних вузлів New-API / One-API / Sub2API агрегатора", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "Підказка щодо власного User-Agent", + "customUserAgentLabel": "Власний User-Agent", + "databricksBaseUrlHint": "Підказка щодо базової URL-адреси Databricks", + "defaultThinkingStrengthHint": "Використовується, коли в запиті не вказано рівень інтенсивності міркувань.", + "defaultThinkingStrengthLabel": "Стандартна інтенсивність міркувань", + "deleteAllExtraApiKeys": "Видалити все", + "excludedModelsHint": "Підказка щодо виключених моделей", + "excludedModelsLabel": "Виключені моделі", + "excludedModelsPlaceholder": "Заповнювач виключених моделей", + "expirationBannerExpired": "Термін дії минув", + "expirationBannerExpiredDesc": "Опис завершення терміну дії", + "expirationBannerExpiringSoon": "Термін дії незабаром завершиться", + "expirationBannerExpiringSoonDesc": "Опис наближення завершення терміну дії", + "extraApiKeyMasked": "Ключ {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "Підказка щодо додаткових API-ключів", + "extraApiKeysLabel": "Додаткові API-ключі", + "apiKeyHealthLabel": "Стан API-ключа", + "apiKeyStatusActive": "Активний", + "apiKeyStatusWarning": "Попередження ({count} помилок)", + "apiKeyStatusInvalid": "Недійсний", + "primaryKey": "Основний ключ", + "apiKeyInvalidAlert": "Ключі API ({count}) позначено як недійсні через помилки автентифікації в підключеннях: {connections}. Їх буде пропущено під час ротації. Натисніть, щоб переглянути.", + "apiKeyInvalidAlertTitle": "Сповіщення про стан ключів API", + "apiKeyWarningAlert": "Ключі API ({count}) мають стан попередження через підвищену частоту помилок у підключеннях: {connections}. Перевірте їх, щоб запобігти проблемам із ротацією.", + "apiKeyWarningAlertTitle": "Попередження щодо ключів API", + "googlePseInfo": "Інформація про Google Pse", "antigravityProjectIdHint": "Додаткове перевизначення для запитів на код Antigravity Cloud. Залиште поле порожнім, щоб використовувати проект, виявлений під час Google OAuth.", "antigravityClientProfileLabel": "Профіль клієнта", "antigravityClientProfileHint": "Виберіть, яку клієнтську ідентичність Antigravity OmniRoute представляє API.", @@ -5865,47 +5868,47 @@ "tierFast": "Швидкий", "antigravityProjectIdLabel": "Ідентифікатор проекту Google Cloud", "antigravityProjectIdPlaceholder": "мій-gcp-ідентифікатор-проекту", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Заповнювач файлу cookie Grok Web", + "herokuBaseUrlHint": "Підказка щодо базової URL-адреси Heroku", + "hideEmail": "Приховати електронну адресу", + "imageProviders": "Провайдери зображень", "videoProviders": "Генерація відео", "embeddingRerankProviders": "Вбудовування та зміна рейтингу", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "Зображення", + "llmProviders": "Провайдери LLM", + "localProviderApiKeyOptionalHint": "Підказка щодо необов’язкового ключа API локального провайдера", + "localProviderBaseUrlHint": "Підказка щодо базової URL-адреси локального провайдера", + "localProviders": "Локальні провайдери", + "maxConcurrentWholeNumberError": "Максимальна кількість одночасних запитів має бути цілим числом", "m365TierLabel": "Рівень Copilot", "m365TierHint": "Виберіть, яку поверхню Microsoft 365 Copilot використовує це підключення. Individual — це стандартний споживчий BizChat; Education та Enterprise (робочий) підключаються до поверхонь своїх тенантів.", "m365TierIndividualOption": "Individual (за замовчуванням)", - "m365TierEduOption": "Education", - "m365TierEnterpriseOption": "Enterprise / Work", + "m365TierEduOption": "Освіта", + "m365TierEnterpriseOption": "Підприємство / робота", "tierOverrideLabel": "Перевизначення рівня", "tierOverrideAuto": "Авто (визначається маршрутизацією)", "tierOverrideFree": "Безкоштовний", "tierOverrideCheap": "Дешевий", "tierOverridePremium": "Преміум", "tierOverrideHelpText": "Закріпити цього провайдера за рівнем маршрутизації замість того, щоб дозволити OmniRoute визначати його на основі цін на моделі.", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Підказка щодо файлу cookie Muse Spark Web", + "museSparkWebCookiePlaceholder": "Заповнювач файлу cookie Muse Spark Web", + "oauth": "OAuth", + "openCliTools": "Відкрити інструменти CLI", + "openSettings": "Відкрити налаштування", + "openaiResponsesStoreDescription": "Дозволити сумісним запитам Responses API зберігати стан збережених відповідей.", + "openaiResponsesStoreLabel": "Сховище OpenAI Responses", + "perplexitySearchSharedKeyInfo": "Інформація про спільний ключ Perplexity Search", + "perplexityWebCookieHint": "Підказка щодо файлу cookie Perplexity Web", + "perplexityWebCookiePlaceholder": "Заповнювач файлу cookie Perplexity Web", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "Перевизначення лімітів запитів", "rateLimitOverridesMaxConcurrentHint": "Перевизначення максимальної кількості одночасних запитів для цього підключення. Перевизначає обмеження на рівні облікового запису.", "rateLimitOverridesMaxConcurrentLabel": "Макс. одночасних (ліміт запитів)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "Максимальний час (мс), протягом якого запит може очікувати на доступний слот обмеження частоти, перш ніж завершитися помилкою. Перевизначає глобальне налаштування Resilience лише для цього підключення.", + "rateLimitOverridesMaxWaitMsLabel": "Макс. очікування в черзі (мс)", "rateLimitOverridesMinTimeHint": "Мінімальний час (мс) між запитами. Перевизначає стандартну затримку обмежувача частоти запитів.", "rateLimitOverridesMinTimeLabel": "Мін. інтервал (мс)", "rateLimitOverridesRpdHint": "Максимальна кількість запитів на день для цього з’єднання. Перевизначає стандартне значення постачальника.", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (Токенів/день)", "rateLimitOverridesTpmHint": "Максимальна кількість токенів на хвилину для цього підключення. Перевизначає типове значення провайдера.", "rateLimitOverridesTpmLabel": "TPM (Токенів/хв)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", + "refreshOauthTokenTitle": "Оновити токен OAuth", + "regionHint": "Підказка щодо регіону", + "regionLabel": "Регіон", + "removeThisKey": "Видалити цей ключ", + "routingTagsHint": "Підказка щодо тегів маршрутизації", + "routingTagsLabel": "Теги маршрутизації", + "routingTagsPlaceholder": "Заповнювач тегів маршрутизації", + "search": "Пошук", + "searchEngineIdHint": "Підказка щодо ідентифікатора пошукової системи", + "searchEngineIdLabel": "Мітка ідентифікатора пошукової системи", + "searchEngineIdRequired": "Ідентифікатор пошукової системи обов’язковий", + "searchProvider": "Постачальник пошуку", + "searchProviderDesc": "Опис постачальника пошуку", "searchProviders": "Пошук постачальників...", "searchByModel": "Пошук за моделлю…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "Заголовок постачальників пошуку", + "searxngBaseUrlHint": "Підказка щодо базової URL-адреси Searxng", + "searxngInfo": "Інформація про Searxng", + "sessionCookieLabel": "Мітка файлу cookie сеансу", + "showEmail": "Показувати електронну адресу", + "snowflakeBaseUrlHint": "Підказка щодо базової URL-адреси Snowflake", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "Підказка щодо групи тегів", + "tagGroupLabel": "Мітка групи тегів", + "tagGroupPlaceholder": "Заповнювач групи тегів", + "testModel": "Протестувати модель", + "testingModel": "Тестування моделі", "modelTestQuotaTooltip": "Квота вичерпана — скидання завтра або потрібне поповнення", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "Позначка простроченого токена", + "tokenExpiredTitle": "Заголовок про прострочений токен", + "tokenExpiresSoonTitle": "Заголовок про те, що термін дії токена незабаром закінчиться", + "tokenShort": "Короткий токен", + "totalKeysRotating": "{count, plural, one {1 ключ у ротації} other {# ключів у ротації}}", + "unhideModel": "Показати приховану модель", + "upstreamProxyProviders": "Постачальники проксі-сервісів вищого рівня", "validationModelIdHint": "Модель, яка використовується для перевірки ключа API. Залиште порожнім, щоб використовувати першу доступну модель провайдера.", "validationModelIdLabel": "Модель для перевірки", "validationModelIdPlaceholder": "напр. meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "Вставте JSON облікового запису служби ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) або OAuth access_token", + "webCookieProviders": "Постачальники вебфайлів cookie", + "weeklyShort": "Тиж.", + "xiaomiMimoBaseUrlHint": "Підказка щодо базової URL-адреси Xiaomi Mimo", "globalCodexServiceMode": "Глобальний режим служби Codex", "connect": "Підключити", "manualApiKey": "Ключ API вручну", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Знайти облікові дані провайдерів ШІ (OpenAI, Anthropic, Google, Mistral, xAI), збережені Zed IDE у зв'язці ключів ОС, та імпортувати їх як підключення. Zed IDE має бути встановлено на цьому комп'ютері.", "zedImportButton": "Імпорт з Zed", "zedImportFailed": "Не вдалося імпортувати Zed", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Підказка щодо імпорту Zed", + "zedImportNetworkError": "Помилка мережі під час імпорту Zed", + "zedImportNone": "Немає імпортованих даних Zed", "zedImportSuccess": "Імпортовано {credentials} облікові дані з Zed для {providers} постачальників", "zedImporting": "Імпортування…", "zedNoCredentials": "У зв'язці ключів не знайдено облікових даних Zed", @@ -6175,7 +6178,7 @@ "freeaiapikey": "API-проксі зі знижкою для понад 40 моделей, включаючи GPT-5, Claude Opus 4.6, Claude Sonnet 4.6, Qwen 3.5. Отримайте свій API-ключ на https://freeaiapikey.com/dashboard. Базова URL-адреса: https://freeaiapikey.com/v1.", "freemodel-dev": "Отримайте $300 безкоштовних API-кредитів на https://freemodel.dev — платіжна інформація не потрібна. Сумісна з OpenAI кінцева точка. Доступні моделі GPT-5.4 та GPT-5.5.", "friendliai": "Безкоштовний тариф для безсерверного виведення — кредитна картка не потрібна", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Безкоштовний рівень через Google AI Studio; квоти для окремих моделей більше не публікуються (перевірте сторінку квот в AI Studio) — кредитна картка не потрібна.", "gigachat": "Підключіть GigaChat (Сбер) за допомогою API-ключа.", "gitlab": "Особистий токен доступу GitLab для публічного API Code Suggestions. Налаштуйте власну базову URL-адресу, якщо не використовуєте gitlab.com.", "gitlawb-gmi": "Отримайте свій API-ключ на панелі керування Gitlawb Opengateway.", @@ -6184,7 +6187,7 @@ "glm-cn": "Підключіть GLM Coding (Китай) за допомогою API-ключа.", "glmt": "Попередньо встановлений профіль GLM із більшим бюджетом токенів, увімкненим мисленням та довшим таймаутом.", "getgoapi": "Підключіть GoAPI за допомогою API-ключа.", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "Безкоштовний план: обмеження для окремих моделей (200 тис. токенів на день для кожної моделі чату; див. console.groq.com/docs/rate-limits щодо RPM/RPD) — без зазначеного способу оплати.", "haiper": "Отримайте API-ключ на haiper.ai/haiper-api", "heroku": "Підключіть Heroku AI за допомогою API-ключа.", "hcnsec": "Отримайте API-ключ на api.hcnsec.cn", @@ -6252,7 +6255,7 @@ "requesty": "Створіть API-ключ на https://app.requesty.ai, а потім вставте його сюди як Bearer-токен. OpenAI-сумісна кінцева точка на https://router.requesty.ai/v1, з живим каталогом /v1/models.", "runwayml": "Генерація відео в Runway базується на завданнях. OmniRoute надсилає завдання text-to-video або image-to-video, опитує /v1/tasks/[id] та нормалізує готові відеофайли назад у відповідь типу OpenAI /v1/videos/generations.", "sambanova": "$5 безкоштовних кредитів при реєстрації (дійсні 30 днів), кредитна картка не потрібна", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Створіть ключ API на https://seekai.cc, а потім вставте його сюди як токен Bearer. Сумісна з OpenAI базова URL-адреса: https://seekai.cc/v1.", "sap": "Виявлення моделей використовує /v2/lm/scenarios/foundation-models/models на AI_API_URL. Запити чату використовують deploymentUrl/chat/completions та потребують AI-Resource-Group.", "sarvam": "Sarvam AI сумісний з OpenAI на /v1. OmniRoute перевіряє /v1/models і маршрутизує чат-трафік на /v1/chat/completions. Моделі налаштовані для індійських мов.", "scaleway": "1 млн безкоштовних токенів для нових акаунтів — сумісно з EU/GDPR (Париж), Qwen3 235B та Llama 70B", @@ -6277,53 +6280,53 @@ "upstage": "Підключіть Upstage за допомогою API-ключа.", "v0-vercel": "Підключіть v0 (Vercel) за допомогою API-ключа.", "venice": "Підключіть Venice.ai за допомогою API-ключа.", - "vercel-ai-gateway": "Connect Vercel AI Gateway with an API key.", - "vertex": "Provide Service Account JSON or OAuth access_token", - "vertex-partner": "Provide the same Service Account JSON used for Vertex AI partner models.", - "volcengine": "Connect Volcengine with an API key.", - "voyage-ai": "Bearer API key for Voyage AI embeddings and rerank APIs.", - "wafer": "API key from https://wafer.ai", - "wandb": "Connect Weights & Biases Inference with an API key.", + "vercel-ai-gateway": "Підключіть Vercel AI Gateway за допомогою ключа API.", + "vertex": "Надайте JSON облікового запису служби або OAuth access_token", + "vertex-partner": "Надайте той самий JSON облікового запису служби, який використовується для партнерських моделей Vertex AI.", + "volcengine": "Підключіть Volcengine за допомогою ключа API.", + "voyage-ai": "Ключ API типу Bearer для API векторних представлень і повторного ранжування Voyage AI.", + "wafer": "Ключ API із https://wafer.ai", + "wandb": "Підключіть Weights & Biases Inference за допомогою ключа API.", "writer": "Writer Palmyra є сумісним з OpenAI за адресою https://api.writer.com/v1. palmyra-x5 пропонує контекстне вікно на 1M-токенів.", - "x5lab": "X5Lab exposes an OpenAI-compatible chat completions endpoint at https://api.x5lab.dev/v1/chat/completions, plus a live /v1/models catalog. OmniRoute uses the OpenAI protocol and lists models via passthrough.", - "xai": "Connect xAI (Grok) with an API key.", - "xiaomi-mimo": "Connect Xiaomi MiMo with an API key.", - "yi": "Get API key at platform.lingyiwanwu.com", - "zai": "API key from https://open.bigmodel.cn/usercenter/apikeys", - "zenmux": "ZenMux exposes an OpenAI-compatible chat completions endpoint at /api/v1/chat/completions, plus Anthropic Messages (/api/anthropic/v1/messages) and Google Gemini (/api/vertex-ai) protocol surfaces. OmniRoute uses the OpenAI protocol.", - "galadriel": "Connect Galadriel with an API key.", - "predibase": "$25 free trial credits (30-day validity)", - "chenzk": "OpenAI-compatible gateway with a live model catalog at chenzk.top.", + "x5lab": "X5Lab надає сумісну з OpenAI кінцеву точку для завершення чатів за адресою https://api.x5lab.dev/v1/chat/completions, а також актуальний каталог /v1/models. OmniRoute використовує протокол OpenAI та відображає моделі шляхом наскрізного передавання.", + "xai": "Підключіть xAI (Grok) за допомогою ключа API.", + "xiaomi-mimo": "Підключіть Xiaomi MiMo за допомогою ключа API.", + "yi": "Отримайте ключ API на platform.lingyiwanwu.com", + "zai": "Ключ API з https://open.bigmodel.cn/usercenter/apikeys", + "zenmux": "ZenMux надає сумісну з OpenAI кінцеву точку завершення чатів за адресою /api/v1/chat/completions, а також інтерфейси протоколів Anthropic Messages (/api/anthropic/v1/messages) і Google Gemini (/api/vertex-ai). OmniRoute використовує протокол OpenAI.", + "galadriel": "Підключіть Galadriel за допомогою ключа API.", + "predibase": "$25 безкоштовних кредитів на пробний період (дійсні 30 днів)", + "chenzk": "Сумісний з OpenAI шлюз із актуальним каталогом моделей на chenzk.top.", "magnific": "Generate images with Magnific's Mystic API.", - "freetheai": "Free OpenAI-compatible gateway with passthrough model support.", + "freetheai": "Безкоштовний сумісний з OpenAI шлюз із підтримкою наскрізної передачі моделей.", "g4f-gemini": "Віддалений шлюз g4f.space до Gemini. Для анонімного доступу потрібні proof-of-work-кредити з g4f.dev/chat або API-ключ учасника з g4f.dev/members.html; ліміти змінюються.", "g4f-groq": "Віддалений шлюз g4f.space до Groq. Для анонімного доступу потрібні proof-of-work-кредити з g4f.dev/chat або API-ключ учасника з g4f.dev/members.html; ліміти змінюються.", "g4f-nvidia": "Віддалений шлюз g4f.space до NVIDIA NIM. Для анонімного доступу потрібні proof-of-work-кредити з g4f.dev/chat або API-ключ учасника з g4f.dev/members.html; ліміти змінюються.", "g4f-ollama": "Віддалений шлюз g4f.space до Ollama. Для анонімного доступу потрібні proof-of-work-кредити з g4f.dev/chat або API-ключ учасника з g4f.dev/members.html; ліміти змінюються.", "g4f-pollinations": "Віддалений шлюз g4f.space до Pollinations. Для анонімного доступу потрібні proof-of-work-кредити з g4f.dev/chat або API-ключ учасника з g4f.dev/members.html; ліміти змінюються.", - "mixedbread": "Create embeddings with the Mixedbread API.", - "segmind": "Generate images and videos with Segmind's hosted models.", - "amazon-q": "Uses the same AWS Builder ID or imported refresh-token flow as Kiro, but keeps Amazon Q connections separate.", - "antigravity": "Connect Antigravity with the existing OAuth flow.", - "agy": "Import your Antigravity CLI (`agy`) login (paste/upload its token file), auto-detect a local CLI login, or sign in with Google. Shares the Antigravity backend (incl. Claude models).", - "claude": "Connect Claude Code with the existing OAuth flow.", - "cline": "Connect Cline with the existing OAuth flow.", - "cursor": "Connect Cursor IDE with the existing OAuth flow.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", - "github": "Connect GitHub Copilot with the existing OAuth flow.", - "gitlab-duo": "OAuth application with ai_features + read_user scopes. Configure GITLAB_DUO_OAUTH_CLIENT_ID and optionally GITLAB_DUO_OAUTH_CLIENT_SECRET on this OmniRoute instance.", - "kilocode": "Connect Kilo Code with the existing OAuth flow.", - "kimi-coding": "Connect Kimi Coding with the existing OAuth flow.", - "kiro": "Free tier: 50 credits/month (~25K–100K tokens). ⚠️ Kiro ToS prohibits third-party proxy/harness use.", - "codex": "Connect OpenAI Codex with the existing OAuth flow.", - "qwen": "Connect Qwen Code with the existing OAuth flow.", + "mixedbread": "Створюйте векторні представлення за допомогою API Mixedbread.", + "segmind": "Створюйте зображення та відео за допомогою розміщених моделей Segmind.", + "amazon-q": "Використовує той самий AWS Builder ID або процес з імпортованим токеном оновлення, що й Kiro, але зберігає підключення Amazon Q окремо.", + "antigravity": "Підключіть Antigravity за допомогою наявного процесу OAuth.", + "agy": "Імпортуйте дані входу Antigravity CLI (`agy`) (вставте або завантажте файл токена), автоматично виявіть локальний вхід через CLI або ввійдіть за допомогою Google. Використовує спільний серверний компонент Antigravity (зокрема моделі Claude).", + "claude": "Підключіть Claude Code за допомогою наявного процесу OAuth.", + "cline": "Підключіть Cline за допомогою наявного процесу OAuth.", + "cursor": "Підключіть Cursor IDE за допомогою наявного процесу OAuth.", + "cursor-api": "Підключіть Cursor за допомогою користувацького ключа API (crsr_...) із cursor.com/dashboard/api; сеанс IDE не потрібен.", + "github": "Підключіть GitHub Copilot за допомогою наявного процесу OAuth.", + "gitlab-duo": "Застосунок OAuth з областями доступу ai_features + read_user. Налаштуйте GITLAB_DUO_OAUTH_CLIENT_ID і, за потреби, GITLAB_DUO_OAUTH_CLIENT_SECRET у цьому екземплярі OmniRoute.", + "kilocode": "Підключіть Kilo Code за допомогою наявного процесу OAuth.", + "kimi-coding": "Підключіть Kimi Coding за допомогою наявного процесу OAuth.", + "kiro": "Безкоштовний рівень: 50 кредитів на місяць (~25K–100K токенів). ⚠️ Умови використання Kiro забороняють використання зі сторонніми проксі або оболонками.", + "codex": "Підключіть OpenAI Codex за допомогою наявного процесу OAuth.", + "qwen": "Підключіть Qwen Code за допомогою наявного процесу OAuth.", "github-models": "Створіть GitHub PAT з областю видимості 'models: read' на github.com/settings/tokens" }, "passthroughModelsDescription": "{provider} приймає власні ідентифікатори моделі постачальника. Імпортуйте з /models або додайте власні ідентифікатори для маршрутизації.", "bedrockModelsDescription": "Моделі Amazon Bedrock залежать від регіону AWS. Імпортуйте з /models або додайте ідентифікатори моделі Bedrock, активовані у вибраному регіоні.", "bedrockModelPlaceholder": "антропічний.claude-sonnet-4-6", "addProviderSessionCookieTitle": "Додайте {provider} cookie сесії", - "openWebProviderSite": "Open {host}", + "openWebProviderSite": "Відкрити {host}", "addProviderWebTokenTitle": "Додайте веб-маркер {provider}", "addProviderConnectionTitle": "Додайте підключення {provider}", "webTokenCredentialLabel": "Маркер веб-сесії", @@ -6342,27 +6345,27 @@ "webSessionGuideStep3": "Скопіюйте необхідні облікові дані з власного домену постачальника. Для файлів cookie скопіюйте лише значення заголовка Cookie і пропустіть Cookie:.", "webSessionGuideStep3Manual": "Ручний шлях: відкрийте інструменти розробника браузера (F12 → Мережа), оновіть сторінку, відкрийте автентифікований запит і скопіюйте значення заголовка Cookie з заголовків запиту — пропустіть префікс Cookie:.", "webSessionGuideStep4": "Вставте його сюди та перевірте з’єднання. Якщо він перестане працювати, увійдіть ще раз і замініть його новим значенням.", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "Імпортувати файл .har", + "harImportButtonBusy": "Імпортування…", + "harImportButtonHint": "Експортуйте з вкладки Network у DevTools після надсилання принаймні одного повідомлення в чаті.", + "harImportStatusValid": "Імпортовано — дійсний ще приблизно {minutes} хв.", + "harImportStatusExpiringSoon": "Імпортовано — залишилося лише приблизно {minutes} хв. дії.", + "harImportStatusExpired": "Імпортовано, але термін дії цього токена вже минув ({minutes} хв. тому) — експортуйте новий HAR.", + "harImportStatusUnknownExpiry": "Імпортовано. Не вдалося визначити термін дії.", + "harImportErrorNotJson": "Цей файл не є дійсним JSON — це справді експорт .har?", + "harImportErrorNoEntries": "У цьому HAR немає записаних мережевих запитів.", + "harImportErrorNoChathubUrl": "У цьому HAR не знайдено підключення до чату Copilot. Надішліть принаймні одне повідомлення в чаті на m365.cloud.microsoft перед експортуванням.", + "harImportErrorUnparsableUrl": "Підключення до чату знайдено, але не вдалося прочитати його URL-адресу.", + "harImportErrorMissingFields": "Підключення до чату знайдено, але в ньому відсутній токен.", + "harImportErrorReadFailed": "Не вдалося прочитати цей файл.", + "harImportErrorUnknown": "Не вдалося видобути облікові дані з цього файлу HAR.", "webSessionSecurityHint": "Розглядайте це як пароль: він може отримати доступ до вашого веб-облікового запису, у який ви ввійшли, доки його термін дії не закінчиться або його не буде відкликано.", "webNoAuthGuideTitle": "Облікові дані не потрібні", "webNoAuthGuideBody": "{provider} не потребує ключа API або файлу cookie. Збережіть підключення, щоб використовувати його безкоштовну веб-кінцеву точку.", "webSessionCredentialValidationFailed": "Помилка перевірки облікових даних сеансу. Увійдіть знову, скопіюйте нові облікові дані та повторіть спробу.", "checkCookie": "Перевірте cookie", "checkWebToken": "Чек жетона", - "huggingchatLabel": "HuggingChat (Free)", + "huggingchatLabel": "HuggingChat (безкоштовно)", "huggingchatDesc": "Безкоштовний чат LLM через huggingface.co/chat", "poeWebLabel": "Poe Web", "poeWebDesc": "Багатомодельний чат через poe.com", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "Термін дії коду команди auth закінчився", "commandCodeConnected": "Команда Код підключено", "commandCodeConnectionAdded": "Додано з'єднання командного коду", + "clearConnectionCooldown": "Скинути період очікування", + "clearConnectionCooldownInProgress": "Скидання…", + "clearConnectionCooldownTitle": "Скинути період очікування зараз — використовуйте, якщо квоту вже оновлено на стороні постачальника", "commandCodeLinkExpired": "Посилання на код команди більше не дійсне", "commandCodeOpeningStudio": "Відкриття Command Code Studio…", "commandCodePopupBlocked": "Вікно спливаючого вмісту заблоковано. Будь ласка, дозволте спливаючі вікна та спробуйте знову Command Code Connect.", "commandCodeStartFailed": "Не вдалося запустити команду Code auth", "connectionDeleted": "З'єднання видалено", "connectionFallback": "з'єднання", + "connectionCooldownCleared": "Період очікування скинуто — з’єднання знову додано до маршрутизації", "coolingConnectionsDescription": "Ці з'єднання остигають після останнього запиту. OmniRoute пропустить їх, поки не скінчиться таймер — вимикати вручну не потрібно.", "coolingConnectionsTitle": "Наразі охолодження ({count})", + "failedClearConnectionCooldown": "Не вдалося скинути період очікування", "failedDeleteAlias": "Не вдалося видалити псевдонім", "failedDeleteConnection": "Не вдалося видалити з'єднання", "failedDistributeProxies": "Не вдалося розподілити проксі.", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "Налаштування кінцевої точки збереженої моделі", "searchByModelAria": "Пошук за моделлю", "selectSupportedEndpoint": "Виберіть принаймні одну підтримувану точку доступу", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "Налаштування", @@ -6527,7 +6530,7 @@ "routingSummarizeDropParagraphContains": "видалити абзаци, що містять: {items}", "routingSummarizeDropParagraphStartsWith": "видалити абзаци, що починаються з: {items}", "routingSummarizeReplaceText": "замінити \"{match}\" → \"{replacement}\"", - "routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"", + "routingSummarizeReplaceRegex": "регулярний вираз /{pattern}/{flags} → \"{replacement}\"", "routingSummarizeDropBlockContains": "видалити блоки, що містять: {items}", "routingSummarizePrependSystemBlock": "додати блок на початок: \"{text}\"", "routingSummarizeAppendSystemBlock": "додати блок у кінець: \"{text}\"", @@ -6554,22 +6557,22 @@ "systemPrompt": "Системна підказка", "thinkingBudget": "Мислення про бюджет", "proxy": "Проксі", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP-проксі", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "Розділи проксі", + "requestBodyLimitTitle": "Обмеження розміру тіла запиту", + "requestBodyLimitDescription": "Максимальний розмір корисного навантаження API, який приймається до розбору тіла запиту. Для спеціалізованих маршрутів завантаження зберігається щонайменше вбудоване обмеження у 100 МБ.", + "requestBodyLimitInputLabel": "Обмеження розміру тіла запиту в МБ", + "requestBodyLimitEmptyError": "Введіть обмеження в МБ", + "requestBodyLimitWholeNumberError": "Використовуйте ціле число", + "requestBodyLimitMinimumError": "Мінімум — {min} МБ", + "requestBodyLimitMaximumError": "Максимум — {max} МБ", + "requestBodyLimitLoadFailed": "Не вдалося завантажити налаштування обмеження запиту", + "requestBodyLimitSaveSuccess": "Обмеження розміру тіла запиту збережено", + "requestBodyLimitSaveFailed": "Не вдалося зберегти обмеження розміру тіла запиту", + "requestBodyLimitSaving": "Збереження...", + "requestBodyLimitSave": "Зберегти", + "requestBodyLimitCurrent": "Поточне значення: {value}", "cacheConfigLoadFailed": "Не вдалося завантажити налаштування кешу", "cacheConfigSaveSuccess": "Налаштування кешу збережено", "cacheConfigSaveFailed": "Не вдалося зберегти налаштування кешу", @@ -6593,49 +6596,49 @@ "enablePassword": "Увімкнути пароль", "darkMode": "Темний режим", "lightMode": "Світловий режим", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "memoryTitle": "Пам’ять", + "memoryDesc": "Постійна міжсеансова пам’ять розмов", + "memoryEnabled": "Увімкнути пам’ять", + "memoryEnabledDesc": "Якщо ввімкнено, OmniRoute додаватиме релевантний контекст із минулих розмов.", "memoryTokenCostWarning": "Зверніть увагу: з увімкненою пам'яттю OmniRoute додає до {tokens} токенів отриманого контексту в кожен запит чату — це збільшує використання токенів та вартість. Щоб пропустити додавання для конкретного запиту, надішліть заголовок \"x-omniroute-no-memory: true\".", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", + "maxTokens": "Максимальна кількість токенів", + "retentionDays": "Термін зберігання", + "recent": "Нещодавні", + "recentDesc": "Хронологічне вікно", + "semantic": "Семантичний пошук", + "semanticDesc": "Векторний пошук", + "hybrid": "Гібридний", + "hybridDesc": "Нещодавні + семантичні", + "skillsTitle": "Навички", + "skillsDesc": "Інструменти для моделей", + "skillsEnabled": "Увімкнути навички", + "skillsEnabledDesc": "Дозволяє агентам запускати функції.", + "skillsComingSoon": "Маркетплейс навичок незабаром стане доступним.", + "memorySkillsTitle": "Пам’ять і навички", + "memorySkillsDesc": "Постійний контекст і можливості", + "modelsDevTitle": "База даних моделей", + "modelsDevDesc": "Автоматично синхронізувати ціни, можливості та характеристики з models.dev", + "modelsDevEnabled": "Увімкнути синхронізацію з models.dev", + "modelsDevEnabledDesc": "Отримувати ціни, можливості та характеристики моделей із відкритої бази даних models.dev", + "modelsDevInterval": "Інтервал синхронізації", + "syncNow": "Синхронізувати зараз", + "syncing": "Синхронізація...", + "lastSync": "Остання синхронізація", + "never": "Ніколи", "justNow": "тільки зараз", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", + "modelsDevStats": "Статистика синхронізації", + "modelsDevStatsDesc": "Поточне покриття даними models.dev", "providers": "Провайдери", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", + "modelsWithPricing": "Моделі з інформацією про ціни", + "capabilities": "Можливості", + "lastSyncCount": "Кількість під час останньої синхронізації", + "lastSyncFull": "Остання повна синхронізація", + "modelsDevInfo": "Як це працює", + "modelsDevInfoDesc": "models.dev — це база даних специфікацій моделей ШІ із відкритим кодом, яку підтримує команда SST/OpenCode. Вона містить інформацію про ціни, можливості, обмеження контексту та модальності для понад 4 000 моделей від понад 100 постачальників.", + "modelsDevInfoResolution": "Порядок визначення цін (спочатку найвищий пріоритет):", + "modelsDevInfoOrder": "Перевизначення користувачем → models.dev → LiteLLM → Жорстко задане значення за замовчуванням", "systemTheme": "Тема системи", - "debugToggle": "Enable Debug Mode", + "debugToggle": "Увімкнути режим налагодження", "logToolSourcesToggle": "Логувати джерела інструментів", "logToolSourcesDescription": "Виводити діагностичний рядок логу для кожного запиту із підсумком кількості інструментів та розподілом джерел MCP/hosted/client.", "homePinProviderQuotaToHome": "Закріпити інформацію на головній сторінці", @@ -6661,28 +6664,28 @@ "providerQuotaAutoRefreshInterval": "Інтервал оновлення", "providerQuotaAutoRefreshIntervalDesc": "Як часто має оновлюватися перегляд квот, у секундах.", "seconds": "секунд", - "sidebarVisibilityToggle": "Show Sidebar Items", + "sidebarVisibilityToggle": "Показувати елементи бічної панелі", "enableCache": "Увімкнути кеш", "cacheTTL": "Кеш TTL", "maxCacheSize": "Максимальний розмір кешу", "clearCache": "Очистити кеш", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", + "cacheCleared": "Кеш успішно очищено", + "clearCacheFailed": "Не вдалося очистити кеш", "cacheHits": "Звернення до кешу", "cacheMisses": "Промахи кешу", "hitRate": "Рейтинг попадань", "cacheEntries": "Записи кешу", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", + "cacheSettings": "Налаштування кешу", + "semanticCache": "Семантичний кеш", + "maxEntries": "Максимальна кількість записів", + "ttlMinutes": "Час життя (у хвилинах)", "promptCache": "Кеш підказок", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "strategy": "Стратегія", + "preserveClientCache": "Зберігати кеш клієнта", + "enabled": "Увімкнено", "loading": "Loading...", "saving": "Збереження...", - "save": "Save", + "save": "Зберегти", "circuitBreaker": "Автоматичний вимикач", "retryPolicy": "Політика повторних спроб", "maxRetries": "Макс. повторних спроб", @@ -6690,21 +6693,21 @@ "timeoutMs": "Час очікування (мс)", "enableSystemPrompt": "Увімкнути системну підказку", "systemPromptText": "Текст системної підказки", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", - "customBannedSignals": "Banned Keywords", + "autoDisableBannedAccounts": "Автоматично вимикати заблоковані облікові записи", + "autoDisableDescription": "Назавжди позначати підключення до провайдерів як деактивовані, якщо вони повертають певні остаточні сигнали блокування (наприклад, HTTP 403 «підтвердьте свій обліковий запис»). Це вилучає їх із ротації комбінацій.", + "autoDisableThreshold": "Поріг блокування", + "autoDisableThresholdDesc": "Кількість послідовних сигналів блокування, необхідна для остаточної деактивації.", + "autoDisableBannedScope": "Застосовувати автоматичне вимкнення до", + "autoDisableBannedScopeDesc": "Облікові записи для входу (платні підписки та безкоштовні облікові записи) можуть бути заблоковані зовнішнім сервісом, якщо OmniRoute продовжуватиме повторні спроби після блокування. Платні передплачені API-ключі не мають такого ризику — залиште їх у пулі, щоб fill-first міг використати наступний ключ.", + "autoDisableBannedScopeAll": "Усі підключення", + "autoDisableBannedScopeAllDesc": "Деактивувати кожне підключення, яке повертає сигнал остаточного блокування, включно з передплаченими API-ключами.", + "autoDisableBannedScopeSubscription": "Лише облікові записи для входу / підписки", + "autoDisableBannedScopeSubscriptionDesc": "Деактивувати облікові записи OAuth, cookie, сеансів і вебвходу (платні чи безкоштовні). Передплачені API-ключі залишаються активними, щоб маршрутизація могла перемикатися на резервні.", + "customBannedSignals": "Ключові слова блокування", "customBannedSignalsDesc": "Додаткові ключові слова, які запускають виявлення постійного блокування акаунта. Вбудовані ключові слова застосовуються завжди.", "customBannedSignalsPlaceholder": "наприклад, api key revoked", "noCustomBannedSignals": "Немає власних ключових слів. Активні лише вбудовані ключові слова.", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "Структура відмовостійкості", "resilienceStructureDesc": "Ця сторінка лише налаштовує поведінку. Стан живого вимикача відображається на сторінці «Справочинність». Повторна спроба комбінованого вибору та циклічний контроль слотів залишаються в налаштуваннях комбо.", "enableThinking": "Увімкнути мислення", "maxThinkingTokens": "Макс жетонів мислення", @@ -6752,21 +6755,21 @@ "showTailscaleFunnelDesc": "Показати елементи керування воронкою Tailscale на сторінці кінцевої точки.", "showNgrokTunnel": "тунель нгрок", "showNgrokTunnelDesc": "Показати елементи керування тунелем ngrok на сторінці кінцевої точки.", - "sidebarVisibility": "Hide sidebar items", + "sidebarVisibility": "Приховати елементи бічної панелі", "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.", "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "Усі", + "presetAllDesc": "Показувати все", + "presetEssentials": "Основне", + "presetEssentialsDesc": "Шлях для початківців — розширені інструменти залишаються доступними через пошук", + "presetMinimal": "Мінімально", + "presetMinimalDesc": "Лише основні сторінки", + "presetDeveloper": "Розробник", + "presetDeveloperDesc": "Інструменти розробника та проксі", + "presetAdmin": "Адміністратор", + "presetAdminDesc": "Моніторинг і аудит", + "settingsSidebarTitle": "Налаштування бічної панелі", + "settingsSidebarDesc": "Виберіть, які елементи показувати на бічній панелі. У режимі «Основне» розширені інструменти залишаються доступними через пошук.", "hideHealthLogs": "Приховати журнали перевірки справності", "hideHealthLogsDesc": "Коли ввімкнено, блокувати повідомлення [HealthCheck] на консолі сервера", "themeAccent": "Колір теми", @@ -6780,19 +6783,19 @@ "themeOrange": "Помаранчевий", "themeCyan": "Ціан", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "Налаштуйте назву та логотип застосунку", + "appName": "Назва застосунку", + "appNameDesc": "Відображувана назва на бічній панелі та вкладці браузера", + "customLogo": "URL власного логотипа", + "customLogoDesc": "URL зображення вашого логотипа", + "uploadLogo": "Завантажити логотип", + "resetLogo": "Відновити стандартні налаштування", + "logoPreview": "Попередній перегляд", + "customFavicon": "Фавікон браузера", + "customFaviconDesc": "URL вашого фавікона (відображається на вкладці браузера)", + "uploadFavicon": "Завантажити фавікон", + "resetFavicon": "Скинути фавікон", + "faviconPreview": "Попередній перегляд фавікона", "logoFileTooLarge": "Файл логотипу має бути меншим за 500 КБ", "faviconFileTooLarge": "Файл фавіконки має бути меншим за 50 КБ", "invalidLogoFileType": "Недійсний тип файлу. Будь ласка, завантажте PNG, JPG, SVG, GIF або WebP.", @@ -6896,21 +6899,21 @@ "refreshInterval": "Інтервал оновлення", "ruleModeDescription": "Опис Режиму Правил" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "Масова перевірка стану", + "bulkHealthcheckDesc": "Перевірте всі налаштовані проксі-сервери за цільовою URL-адресою, щоб з’ясувати, які з них працюють.", + "healthcheckTesting": "Перевірка...", + "healthcheckAll": "Перевірити стан усіх", + "healthcheckFailed": "Не вдалося виконати перевірку стану", + "healthcheckTestingAll": "Паралельна перевірка всіх проксі-серверів...", + "healthcheckTotal": "Усього", + "healthcheckWorking": "Працюють", + "healthcheckFailedLabel": "Не працюють", + "healthcheckStatus": "Стан", + "healthcheckProxyUrl": "URL-адреса проксі", + "healthcheckLatency": "Затримка", "proxyDocumentationScopeTitle": "Визначення області дії проксі", "proxyDocumentationScopeDescBefore": "OmniRoute визначає вихідний проксі в порядку пріоритету:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "комбінація → обліковий запис → провайдер → глобально", "proxyDocumentationScopeDescAfter": ". Перемагає найбільш специфічна область дії.", "proxyDocumentationAddTitle": "Додавання власного проксі", "proxyDocumentationAddDescBefore": "Перейдіть на", @@ -6992,7 +6995,7 @@ "thinkingModeAdaptiveDesc": "Масштабуйте бюджет на роздуми з базовими зусиллями, використовуючи кількість повідомлень, інструменти та довжину запиту.", "auto": "Авто", "autoDesc": "Видаліть усі конфігурації мислення — дозвольте постачальнику вирішувати", - "custom": "Custom", + "custom": "Власне значення", "customDesc": "Встановіть фіксований бюджет токенів для всіх запитів", "adaptive": "Адаптивний", "adaptiveDesc": "Масштабуйте бюджет на основі складності запиту", @@ -7018,7 +7021,7 @@ "errorOccurred": "Сталася помилка", "updatePassword": "Оновити пароль", "setPassword": "Встановити пароль", - "apiEndpointProtection": "API Endpoint Protection", + "apiEndpointProtection": "Захист кінцевої точки API", "requireAuthModels": "Вимагати ключ API для /models", "requireAuthModelsDesc": "Якщо ON, кінцева точка /v1/models повертає 404 для неавтентифікованих запитів. Запобігає виявленню моделі неавторизованими користувачами.", "authModelHeading": "Активна модель авторизації", @@ -7034,11 +7037,11 @@ "providersBlocked": "{count} постачальник(ів) заблоковано для /models", "blockProviderTitle": "Заблокувати {provider}", "unblockProviderTitle": "Розблокувати {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "cliFingerprint": "Зіставлення відбитків CLI", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "Провайдерів з активним відбитком CLI: {count}", + "enableFingerprintTitle": "Увімкнути відбиток для {provider}", + "disableFingerprintTitle": "Вимкнути відбиток для {provider}", "systemTransforms": "Системний блок Transform Pipeline", "systemTransformsDesc": "Упорядкований постачальником конвеєр перетворень, застосованих до тіла запиту перед пересиланням. Підтримує будь-який ID провайдера.", "systemTransformsAddProvider": "Додати провайдера", @@ -7065,19 +7068,19 @@ "leastUsedDesc": "Виберіть нещодавно використовуваний обліковий запис", "costOpt": "Вартість Opt", "costOptDesc": "Віддайте перевагу найдешевшому доступному обліковому запису", - "resetAware": "Reset-Aware RR", + "resetAware": "RR з урахуванням скидання", "resetAwareDesc": "Віддавайте перевагу обліковим записам із достатньою квотою, що залишилася, і найближчими скиданнями", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Зважування за квотою", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "Суворо випадковий вибір", + "strictRandomDesc": "Перетасована колода — кожен обліковий запис використовується один раз перед повторним перемішуванням", + "stickyLimit": "Ліміт закріплення", "stickyLimitDesc": "Дзвінки на обліковий запис перед переходом", "routingStrategyTitle": "Стратегія маршрутизації", "routingStrategySubtitle": "Відповідність 9router: циклічний перебір акаунтів, липкі ліміти та комбінована ротація", - "accountRoundRobin": "Round Robin", + "accountRoundRobin": "Циклічний перебір", "accountRoundRobinDesc": "Циклічний перебір акаунтів для розподілу навантаження", - "comboRoundRobin": "Combo Round Robin", + "comboRoundRobin": "Циклічний перебір комбінацій", "comboRoundRobinDesc": "Циклічний перебір цілей комбо замість постійного старту з першої", "comboStickyLimit": "Ліміт прив'язки комбо", "comboStickyLimitDesc": "Запитів на ціль комбо перед перемиканням", @@ -7089,17 +7092,17 @@ "providerAccountRoutingDesc": "Перевизначити глобальну стратегію акаунтів для цього провайдера (паритет 9router).", "providerRoutingStrategy": "Стратегія акаунтів", "providerRoutingInheritGlobal": "Успадкувати глобальне значення за замовчуванням", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Порогове значення попередньої перевірки квоти", + "quotaPreflightSubtitle": "Пропускати облікові записи з вичерпаною квотою перед надсиланням запиту до висхідного сервера", + "quotaPreflightEnable": "Увімкнути попередню перевірку квоти", + "quotaPreflightEnableDesc": "Перед кожним запитом перевіряти залишок квоти облікового запису (за 5 год / тиждень / місяць). Облікові записи, що досягли порогового значення або опустилися нижче нього, пропускаються без звернення до висхідного сервера. Порогові значення для окремих періодів, установлені на сторінці «Квота провайдера», завжди мають пріоритет над цим стандартним значенням.", + "quotaPreflightCutoff": "Глобальне порогове значення (мін. залишок у %)", + "quotaPreflightCutoffDesc": "Припинити використовувати обліковий запис, коли залишок його квоти знизиться до цього відсотка або нижче, для кожного періоду без власного порогового значення. Відповідає індикаторам залишку у відсотках на сторінці «Квота провайдера».", + "quotaPreflightWindowsHint": "Це стандартне значення не впливає на періоди з власним пороговим значенням для періоду або провайдера, установленим у модальному вікні «Порогове значення» на сторінці «Квота провайдера».", + "quotaPreflightLoadFailed": "Не вдалося завантажити налаштування попередньої перевірки квоти.", "modelAliases": "Псевдоніми моделі", "modelAliasesTitle": "Псевдоніми моделей", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", + "modelAliasesDesc": "Перепризначайте назви моделей за допомогою точних збігів або шаблонів із символами підстановки.", "addCustomAlias": "Додати власний псевдонім", "deprecatedModelId": "Застарілий ID моделі", "newModelId": "Новий ID моделі", @@ -7188,7 +7191,7 @@ "comboStrategyAria": "Комбінована стратегія", "priority": "Пріоритет", "weighted": "Зважений", - "contextRelay": "Context Relay", + "contextRelay": "Передавання контексту", "contextRelayDesc": "Hands off context between providers with automatic summarization", "maxRetriesLabel": "Макс. повторних спроб", "retryDelayLabel": "Затримка повтору (мс)", @@ -7214,10 +7217,10 @@ "concurrencyPerModel": "Одночасність / Модель", "queueTimeout": "Час очікування черги (мс)", "queueDepth": "Глибина черги", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", + "contextRelayHandoffThreshold": "Порогове значення передавання", + "contextRelayMaxMessages": "Максимальна кількість повідомлень для підсумку", + "contextRelaySummaryModel": "Модель для підсумку", + "contextRelayProviderNote": "Передавання контексту наразі створює передачі для облікових записів Codex і використовує ці значення як глобальні стандартні параметри для нових або неналаштованих комбінацій.", "providerProfiles": "Профілі постачальників", "providerProfilesDesc": "Окремі параметри стійкості для постачальників OAuth (на основі сеансу) і ключа API (з вимірюванням). Постачальники OAuth мають суворіші порогові значення через нижчі обмеження швидкості.", "oauthProviders": "Постачальники OAuth", @@ -7299,7 +7302,7 @@ "daysAgo": "{count} дн. тому", "backupReasonManual": "посібник", "backupReasonPreRestore": "попереднє відновлення", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", + "connectionsCount": "{count, plural, one {# з’єднання} few {# з’єднання} many {# з’єднань} other {# з’єднання}}", "noChangesSinceBackup": "Жодних змін з часу останнього резервного копіювання", "backupFailed": "Помилка резервного копіювання", "restoreFailed": "Не вдалося відновити", @@ -7329,7 +7332,7 @@ "configured": "налаштовано", "none": "Немає", "modelOverrideValuePlaceholder": "Числове значення", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Англійською, через кому, наприклад: low, medium, high", "addKeyValue": "Додати ключ-значення", "noModelOverrides": "Для цієї моделі не налаштовано перевизначень.", "modelOverrideLoadFailed": "Не вдалося завантажити перевизначення моделі", @@ -7378,25 +7381,25 @@ "editPricing": "Редагувати ціни", "viewFullDetails": "Переглянути повну інформацію", "themeCoral": "Корал", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "Адаптивна маршрутизація за обсягом", + "adaptiveVolumeRoutingDesc": "Динамічно масштабує з’єднання залежно від обсягу корисного навантаження та навантаження на пропускну здатність.", + "lkgpToggleTitle": "Останній відомий справний провайдер (LKGP)", + "lkgpToggleDesc": "Якщо ввімкнено, маршрутизатор запам’ятовує, який провайдер останнім надав успішну відповідь, і спочатку звертається до нього під час наступних запитів.", "echoRequestedModelTitle": "Повертати запитану назву моделі у відповідях", "echoRequestedModelDesc": "Якщо увімкнено, поле `model` у відповіді містить псевдонім або комбіновану назву, яку запитав клієнт, замість назви вихідної моделі. Виправляє роботу з суворими клієнтами (наприклад, Claude Desktop), які відхиляють відповідь, якщо модель не збігається із запитом.", "webSearchRouteTitle": "Маршрутизація вебпошуку", "webSearchRouteDesc": "Коли запит містить вбудований інструмент web_search, спрямовувати весь запит на цю модель замість стандартної — корисно для провайдерів, які не підтримують серверний інструмент web_search від Anthropic. Залиште порожнім, щоб вимкнути.", "webSearchRoutePlaceholder": "Знайдіть або виберіть модель…", "paidModelPatternWarning": "Цей шаблон відповідає лише платним моделям — увімкніть платні моделі або змініть шаблон.", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "Очистити кеш LKGP", + "lkgpCacheCleared": "Кеш LKGP успішно очищено", + "lkgpCacheClearFailed": "Не вдалося очистити кеш LKGP", + "days": "Дні", + "lkgp": "Режим LKGP", + "lkgpDesc": "Останній відомий справний провайдер (передбачувана відмовостійкість)", + "maintenance": "Обслуговування", + "purgeExpiredLogs": "Видалити прострочені журнали", + "purgeLogsFailed": "Не вдалося видалити журнали", "logsDeleted": "{count, plural, =0 {Немає очищених застарілих журналів} one {Очищено # застарілий журнал} few {Очищено # застарілі журнали} many {Очищено # застарілих журналів} other {Очищено # застарілих журналів}}", "resetUsageData": "Скинути дані про використання", "resetUsageDataDesc": "Виберіть, за який період ви хочете видалити дані про використання, журнали запитів та аналітику. Налаштування провайдерів, підключення, API-ключі, комбінації та параметри буде збережено. Цю дію не можна скасувати.", @@ -7413,39 +7416,39 @@ "resetUsageFailed": "Не вдалося скинути дані про використання", "reset": "Скинути", "resetting": "Скидання...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", + "contextOpt": "Оптимізація за контекстом", + "contextOptDesc": "Маршрутизує на основі вимог до контекстного вікна та довжини розмови", + "cacheOpt": "Оптимізація кешу", + "cacheOptDesc": "Зберігає той самий повторно використовуваний префікс запиту в тому самому обліковому записі провайдера", + "priorityDesc": "Послідовне резервування — спочатку звертається до провайдера 1, потім до провайдера 2 і так далі", + "weightedDesc": "Розподіляє трафік між провайдерами відповідно до вагових коефіцієнтів у відсотках", + "modelRoutingTitle": "Правила маршрутизації моделей", + "modelRoutingDesc": "Автоматично спрямовує моделі до певних комбінацій за допомогою glob-шаблонів", + "addRule": "Додати правило", + "routeToCombo": "Спрямувати до комбінації", + "selectCombo": "Виберіть комбінацію...", + "priorityHint": "Що вище значення, то раніше виконується перевірка. Для конкретних шаблонів використовуйте 10 або більше.", + "patternHint": "Використовуйте * для будь-якої кількості символів, а ? — для одного символу. Регістр не враховується.", + "noRoutingRules": "Правила маршрутизації не налаштовано. За замовчуванням запити використовують глобальну комбінацію.", + "routingRuleHint": "Додайте правило на кшталт claude-opus* -> frontier-combo, щоб автоматично маршрутизувати запити.", + "deleteRoutingRule": "Видалити це правило маршрутизації моделі?", + "exactMatchMode": "Точний збіг", + "wildcardPatternMode": "Шаблон із символами підстановки", + "exactMatchModeDesc": "Використовуйте точні псевдоніми для застарілих або перейменованих ідентифікаторів моделей.", + "wildcardPatternModeDesc": "Використовуйте псевдоніми із символами підстановки * і ?, коли сімейство моделей має відповідати одній цільовій моделі.", + "noExactAliasesConfigured": "Псевдоніми з точним збігом не налаштовано.", + "wildcardRulesTitle": "Правила із символами підстановки", + "noWildcardAliasesConfigured": "Псевдоніми із символами підстановки не налаштовано.", + "overview": "Огляд", + "unknownError": "Невідома помилка", "pricingSourceLiteLLM": "Pricing Source Lite Llm", "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm", "clearSyncedPricingFailed": "Clear Synced Pricing Failed", "pricingSourceUser": "Pricing Source User", "pageDescription": "Page Description", "pricingSyncStatus": "Pricing Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", + "whitelist": "Білий список", + "syncDisabled": "Синхронізацію вимкнено", "pricingLoadFailed": "Pricing Load Failed", "pricingSyncDescription": "Pricing Sync Description", "clearSyncedPricingSuccess": "Clear Synced Pricing Success", @@ -7453,23 +7456,23 @@ "pricingSourceDefault": "Pricing Source Default", "pricingSyncSuccess": "Pricing Sync Success", "enableSyncError": "Enable Sync Error", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "syncEnabled": "Синхронізацію ввімкнено", + "blacklist": "Чорний список", "pricingSourceModelsDev": "Pricing Source Models Dev", - "syncedModels": "Synced Models", - "budget": "Budget", + "syncedModels": "Синхронізовані моделі", + "budget": "Бюджет", "pricingSyncTitle": "Pricing Sync Title", "pricingResetFailedWithReason": "Не вдалося скинути ціни: {reason}", - "tab": "Tab", + "tab": "Вкладка", "pricingSavedProvider": "Ціни збережено для {provider}", "pricingSyncFailed": "Pricing Sync Failed", "pricingSaveFailedWithReason": "Не вдалося зберегти ціни: {reason}", "pricingResetProvider": "Скидання цін для {provider}", - "nextSync": "Next Sync", + "nextSync": "Наступна синхронізація", "pricingSyncFailedWithReason": "Помилка синхронізації цін: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "clearSyncedPricing": "Очистити синхронізовані ціни", + "compressionTitle": "Стиснення запитів", + "compressionDesc": "Зменшуйте використання токенів, стискаючи запити перед надсиланням постачальникам", "compressionGuidanceFullGuideLink": "Повний посібник із стиснення", "compressionGuidanceShow": "Деталі", "compressionGuidanceHide": "Приховати деталі", @@ -7485,16 +7488,16 @@ "tokenSaverInputCompressionDesc": "Переписувати відповідну історію чату, зберігаючи код, URL-адреси та намір.", "tokenSaverFineTunePrefix": "Тонко налаштовуйте кожен рушій на", "tokenSaverFineTuneSuffix": "або комбінуйте рушії для кожного запиту на", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", - "compressionModeAggressive": "Aggressive", - "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings", - "compressionModeUltra": "Ultra", + "compressionMode": "Режим стиснення", + "compressionModeOff": "Вимкнено", + "compressionModeOffDesc": "Стиснення не застосовується", + "compressionModeLite": "Легкий", + "compressionModeLiteDesc": "Скорочення пробілів і порожніх рядків", + "compressionModeStandard": "Стандартний (Caveman)", + "compressionModeStandardDesc": "Стиснення на основі правил із понад 30 шаблонами зі збереженням блоків коду та URL-адрес", + "compressionModeAggressive": "Агресивний", + "compressionModeAggressiveDesc": "Узагальнення + стиснення результатів інструментів + поступове старіння для максимальної економії", + "compressionModeUltra": "Ультра", "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication", "compressionAggressiveConfig": "Агресивна конфігурація двигуна", "compressionAggressiveConfigDesc": "Точне налаштування підсумовування, стиснення інструменту та пороги старіння", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "Кількість останніх повідомлень, що зберігаються на кожному рівні старіння (вище = більше збережене)", "compressionToolStrategies": "Інструмент Стратегії результату", "compressionToolStrategiesDesc": "Перемикайте стратегії стиснення для різних типів результатів інструментів", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "Загальні налаштування", + "compressionAutoTrigger": "Поріг автозапуску", + "compressionCacheTTL": "TTL кешу", + "compressionPreserveSystem": "Зберігати системний запит", "compressionPreserveSystemAlways": "Завжди", "compressionPreserveSystemWhenNoCache": "Коли немає кешу", "compressionPreserveSystemNever": "Ніколи", @@ -7532,87 +7535,87 @@ "compressionExclusionsSaved": "Збережено", "compressionExclusionsCount": "Налаштовано {count, plural, one {# виключення} other {# виключень}}", "compressionExclusionsEmpty": "Не налаштовано виключень — кожна модель/кінцева точка підлягає стисненню (поведінка за замовчуванням).", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Конфігурація рушія Caveman", + "compressionCavemanConfigDesc": "Точне налаштування рушія стиснення на основі правил", "compressionCavemanPanelHint": "Його стан увімкнення/вимкнення та рівень налаштовуються на панелі:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "Стискати ролі повідомлень", + "compressionRoleUser": "Користувач", + "compressionRoleAssistant": "Асистент", + "compressionRoleSystem": "Система", + "compressionMinLength": "Мінімальна довжина повідомлення", + "compressionSkipRules": "Правила пропуску стиснення", + "compressionSkipRulesDesc": "Натисніть правила, щоб пропускати їх під час стиснення", + "compressionPreservePatterns": "Збережені шаблони", + "compressionPreservePatternsDesc": "Регулярні вирази, які ніколи не стискаються (по одному на рядок)", + "compressionLogTitle": "Журнал стиснення", + "compressionLogEmpty": "Стиснених запитів ще немає. Статистика стиснення з’явиться тут після обробки запитів із увімкненим стисненням.", "minutes": "хвилин", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "Фільтрування результатів інструментів з урахуванням команд", + "compressionModeCodexResponses": "Вивід інструмента відповідей", + "compressionModeCodexResponsesDesc": "Консервативне стиснення відповідних виводів оболонки, виправлень, пошуку, збірки та JSON", + "compressionModeStacked": "Послідовне", + "compressionModeStackedDesc": "Фільтрування виводу інструментів RTK із подальшим стисненням повідомлень Caveman", + "qdrantTitle": "Qdrant (векторна пам’ять)", + "qdrantDesc": "Необов’язково. Індексує семантичні спогади в зовнішній векторній базі даних для швидшого отримання.", + "qdrantStatusActive": "Активно", + "qdrantStatusError": "Помилка", + "qdrantStatusDisabled": "Вимкнено", + "qdrantEnable": "Увімкнути Qdrant", + "qdrantEnableDesc": "Якщо ввімкнено, семантична/гібридна стратегія може використовувати Qdrant для отримання спогадів.", + "qdrantTesting": "Тестування...", + "qdrantTestConnection": "Перевірити з’єднання", + "qdrantSaved": "Конфігурацію збережено", + "qdrantSaveError": "Не вдалося зберегти конфігурацію", + "qdrantHostHint": "Без порту. Приклад: 127.0.0.1 або http://qdrant", + "qdrantPort": "Порт", + "qdrantPortHint": "Типове значення Qdrant: 6333", + "qdrantCollectionHint": "Місце зберігання точок пам’яті.", + "qdrantEmbeddingModel": "Модель вбудовування", + "qdrantHelpTitle": "Довідка зі швидкого налаштування", + "qdrantHelpQuickTitle": "Швидке налаштування (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. Хост: IP/URL Qdrant, порт: 6333, колекція: omniroute_memory.", + "qdrantHelpStep2": "2. Якщо використовується nvidia/llama-nemotron-embed-vl-1b-v2:free, задайте розмірність колекції 2048.", + "qdrantHelpStep3": "3. Поле моделі: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", + "qdrantHelpStep4": "4. Збережіть, перевірте з’єднання, а потім протестуйте пошук.", + "qdrantEmbeddingQuickSelect": "Швидкий вибір серед виявлених моделей...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "Формат: provider/model. Облікові дані постачальника мають бути налаштовані.", + "qdrantApiKeyPlaceholderKeep": "(залиште порожнім, щоб зберегти поточний ключ)", + "qdrantApiKeyPlaceholderOptional": "(залиште порожнім, якщо не використовується)", + "qdrantSaveHint": "Порада: відредагуйте хост/порт/колекцію/модель і натисніть «Зберегти». Ключ API необов’язковий.", + "qdrantSearchTestTitle": "Тестування пошуку", + "qdrantSearchTestDesc": "Створює векторне представлення та виконує пошук у Qdrant.", + "qdrantSearchPlaceholder": "Приклад: уподобання користувача, історія тощо", + "qdrantNoResults": "Результатів немає (або Qdrant не налаштовано).", + "qdrantCleanupTitle": "Зберігання й очищення", + "qdrantCleanupDesc": "Видаляє прострочені та старі точки на основі", + "searching": "Пошук...", + "cleaning": "Очищення...", + "cleanNow": "Очистити зараз", "optional": "Додатково", "current": "поточний", "remove": "видалити", "search": "Пошук", - "oneproxyTitle": "1proxy Free Proxy Marketplace", + "oneproxyTitle": "1proxy — безкоштовний маркетплейс проксі", "oneproxyTotalProxies": "Всього проксі", "oneproxyAvgQuality": "Середня якість", "resilienceScope": "Сфера застосування:", "resilienceTrigger": "Тригер:", "resilienceEffect": "Ефект:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "Черга запитів і ліміти", + "resilienceAutoEnableApiKeyProviders": "Автоматично вмикати для провайдерів із ключами API", + "resilienceRequestsPerMinute": "Запитів за хвилину", + "resilienceMinTimeBetweenRequests": "Мінімальний час між запитами", + "resilienceConcurrentRequests": "Одночасні запити", + "resilienceConnectionScopeConcurrentRequests": "Одночасні запити на підключення/область квоти", + "resilienceGlobalConcurrentRequests": "Глобальна кількість одночасних висхідних запитів (0 = вимкнено)", "resilienceMaxQueueWaitTime": "Максимальний час очікування в черзі", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "Базовий період очікування", + "resilienceUseUpstreamRetryHints": "Використовувати підказки висхідного сервера щодо повторних спроб", + "resilienceDefaultPerProvider": "За замовчуванням (для кожного провайдера)", + "resilienceAlwaysOn": "Завжди ввімкнено", + "resilienceAlwaysOff": "Завжди вимкнено", "routingRemoveEntry": "Видалити запис", "routingNeedlesSubstrings": "Голки (підрядки для відповідності)", "routingCaseSensitive": "Чутливий до регістру", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "Надсилається до vision-моделі перед тим, як отриманий опис вставляється назад до оригінального запиту.", "visionBridgeTimeoutMs": "Час очікування (мс)", "visionBridgeMaxImagesPerRequest": "Максимальна кількість зображень на запит", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "Максимальна кількість кроків затримки", + "resilienceProviderBreakerTitle": "Запобіжник для кожного провайдера", + "resilienceFailureThreshold": "Поріг помилок", + "resilienceDegradationThreshold": "Поріг деградації", "resilienceResetTimeout": "Скинути час очікування", "resilienceFailureThresholdLabel": "Поріг відмови", "resilienceResetTimeoutLabel": "Скинути час очікування", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "Період очікування підключення", "resilienceUseUpstreamRetryHintsLabel": "Використовуйте підказки щодо повторної спроби", "resilienceUseUpstream429BreakerLabel": "Використовуйте підказки 429 вгору (розрив)", "resilienceMaxBackoffStepsLabel": "Максимальний крок відступу", "resilienceYes": "так", "resilienceNo": "немає", - "resilienceDefault": "Default", + "resilienceDefault": "За замовчуванням", "storageDatabaseBackupRetention": "Зберігання резервної копії бази даних", "storageDatabaseBackups": "Резервні копії бази даних", "storageBackupRetentionDescription": "Автоматичні резервні копії SQLite зберігаються в", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "Застарілий JSON успішно імпортовано!", "jsonImportFailed": "Не вдалося імпортувати JSON", "jsonImportError": "Помилка під час імпорту JSON", + "jsonImportAuthRequired": "Для імпорту застарілої конфігурації JSON потрібна автентифікація. Спочатку ввійдіть або завершіть налаштування.", + "databaseSettingsAuthRequiredTitle": "Потрібна автентифікація", + "databaseSettingsAuthRequiredBody": "Налаштування бази даних та імпорт JSON доступні лише автентифікованому адміністратору. Увійдіть або завершіть налаштування, щоб переглядати й редагувати їх.", + "databaseSettingsAuthRequiredCta": "Увійти", "storagePurgeData": "Очистити дані", "storagePurgeDataDesc": "Негайно видалити всі записи без перевірки терміну зберігання. Використовуйте з обережністю.", "storageRetentionCleanup": "Налаштування зберігання", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "режим: {mode}", "compressionAdaptiveOff": "Адаптивний бюджет контексту: вимкнено (застарілий автотригер)", "compressionAdaptiveTarget": "Адаптивний ({mode}, політика: {policy}) — ціль ≈ {target, number} токенів (для вікна в {contextLimit, number} токенів)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "Адаптивний бюджет контексту", + "compressionAdaptiveModeOff": "Вимкнено (застарілий автозапуск)", + "compressionAdaptiveModeFloor": "Мінімум (завжди гарантувати вміщення)", + "compressionAdaptiveModeReplace": "Замінити автозапуск", + "compressionAdaptivePolicy": "Політика бюджету", + "compressionAdaptivePolicyReserve": "Резерв для виведення", + "compressionAdaptivePolicyPercentage": "Відсоток вікна", + "compressionAdaptivePolicyAbsolute": "Абсолютний бюджет токенів", "compressionOutputStylesDescription": "Впроваджуйте інструкції формування відповіді без перезапису виводу провайдера. Вільно комбінуйте.", "mcpAccessibilityDescription": "Обмежує область виводу інструментів MCP (окреме сховище).", "compressionStylesTileSummary": "{tokens, number} токенів збережено · {runs, plural, one {# стилізований запуск} few {# стилізовані запуски} many {# стилізованих запусків} other {# стилізованих запусків}}", @@ -7866,23 +7873,23 @@ "description": "Фільтрація виводу команд." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Виведення інструменту Responses", + "description": "Консервативне стиснення для підтримуваних результатів інструменту Responses." }, "headroom": { - "label": "Headroom", + "label": "Запас", "description": "Ущільнення табличного JSON." }, "relevance": { - "label": "Relevance", + "label": "Релевантність", "description": "Екстрактивна оцінка речень відносно останнього запиту користувача." }, "caveman": { - "label": "Caveman", + "label": "Печерна людина", "description": "Стиснення прози на основі правил." }, "aggressive": { - "label": "Aggressive", + "label": "Агресивний", "description": "Підсумовування та старіння старих реплік." }, "llmlingua": { @@ -7890,7 +7897,7 @@ "description": "Семантичне відсікання (ONNX)." }, "ultra": { - "label": "Ultra", + "label": "Ультра", "description": "Евристичне відсікання токенів з необов'язковою SLM." }, "omniglyph": { @@ -7908,12 +7915,12 @@ "description": "Драбина YAGNI: найменша робоча зміна, жодних незапитуваних абстракцій." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Кінський хвіст (лінивий старший розробник)", + "description": "Дисципліна лінивого старшого розробника: підіймайтеся драбиною YAGNI, усувайте першопричину, робіть найменшу робочу зміну." }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "У мене РДУГ (спочатку дія)", + "description": "Виведення за принципом «спочатку дія»: починайте з наступної дії, нумеруйте кроки, указуйте один конкретний наступний крок, без вступу." }, "terse-cjk": { "label": "Стисла CJK (文言)", @@ -7924,13 +7931,21 @@ "resilienceEnableServerSideWait": "Увімкнути очікування на стороні сервера", "resilienceMaximumRetries": "Максимальна кількість повторів", "resilienceMaximumWaitPerRetry": "Максимальний час очікування на повторну спробу", - "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace", + "memorySkillsSkillsmpMarketplace": "Маркетплейс SkillsMP", "memorySkillsFailedToSave": "Не вдалося зберегти", "memorySkillsApiKey": "Ключ API", "memorySkillsActiveSkillsProvider": "Постачальник активних навичок", "cliproxyapiFallback": "Запасний варіант CLIProxyAPI", "cliproxyapiEnableFallback": "Увімкнути резервний варіант CLIProxyAPI", "cliproxyapiUrl": "URL-адреса CLIProxyAPI", + "headroomProxyTitle": "Проксі Headroom", + "headroomProxyDesc": "URL необов’язкового проксі Headroom для заощадження токенів. Якщо поле порожнє, використовується HEADROOM_URL або http://localhost:8787.", + "headroomProxyUrl": "URL Headroom", + "headroomProxyUrlHint": "URL-адреси зворотного зв’язку можна запускати з цієї сторінки. Зовнішні URL-адреси лише перевіряються.", + "headroomProxySave": "Зберегти", + "headroomProxyStart": "Запустити", + "headroomProxyStop": "Зупинити", + "headroomProxyExternalHint": "Ця URL-адреса не є адресою зворотного зв’язку, тому OmniRoute не запускатиме локальний CLI.", "cliproxyapiStatus": "Статус CLIProxyAPI", "cliproxyapiNotDetected": "Не виявлено", "cliproxyapiImportAuthTitle": "Імпорт облікових записів із CLIProxyAPI", @@ -7985,15 +8000,15 @@ "responsesStateModePreserve": "Зберігати", "responsesStateHint": "«Авто» вилучає previous_response_id, якщо з'єднання явно не вмикає сховище OpenAI Responses. «Вилучати» є найбезпечнішим для клієнтів без збереження стану, таких як VS Code Custom Endpoint; у такому разі контекст залежить від надсилання повної історії клієнтом.", "responsesStateSaveError": "Не вдалося оновити налаштування стану Responses", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Швидкий тариф Codex", "codexFastTierDesc": "Глобально ввести service_tier=пріоритет для запитів OpenAI Codex.", "codexFastTierHint": "Якщо ввімкнено, OmniRoute додає service_tier=priority до вихідних запитів Codex для підключень, у яких ще не вказано рівень. Пріоритетний рівень потребує ключа OpenAI Enterprise API або шляху ChatGPT-auth Codex; інші типи ключів отримають від OpenAI повідомлення про помилку рівня. Налаштування кожного підключення на сторінці постачальника Codex мають перевагу.", "codexFastTierSaveError": "Не вдалося оновити налаштування Codex Fast Tier", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Автоматичний пінг квоти Codex", + "codexAutoPingDesc": "Вмикається окремо для кожного з’єднання: надсилає крихітний запит одразу після скидання вікна сеансу Codex, щоб він не був «холодним», коли знадобиться.", + "codexAutoPingWarning": "Кожен пінг витрачає невелику частину реальної квоти Codex. Типово вимкнено — вмикайте лише для з’єднань, на які ви активно покладаєтеся.", + "codexAutoPingSaveError": "Не вдалося оновити налаштування автоматичного пінгу Codex", + "codexAutoPingToggleAria": "Увімкнути або вимкнути автоматичний пінг квоти Codex для {connection}", "codexFastTierTierLabel": "Рівень сервісу", "codexFastTierTierPriority": "Пріоритет", "codexFastTierTierFlex": "Flex", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "Глобальний інтервал перевірки", "resilienceCredentialHealthEveryMinutes": "Кожні {minutes} хв", "resilienceCredentialHealthHint": "0 вимикає фонове сканування (макс. 1440 хв = 24 год). Підключення з власним значенням перевірки стану ігнорують цей глобальний параметр; 0 у конкретного підключення виключає його навіть коли глобальне сканування увімкнено.", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "Завжди ввімкнено для {provider} — необхідно для безпеки облікового запису OAuth; вимкнути неможливо.", + "forcedFingerprintBadge": "Обов’язково", "sessionAffinityTitle": "Прив'язка сесії", "sessionAffinityDesc": "Утримує одну розмову на одному обліковому записі протягом цієї кількості секунд для будь-якого провайдера. 0 вимикає це.", "sessionAffinityTtl": "TTL прив'язки (секунди)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "Максимальна кількість кроків затримки перед тим, як період охолодження припинить зростати. У більшості конфігурацій спочатку досягається ліміт Max Cooldown, що робить це безпечною межею на випадок збільшення Max Cooldown.", "disableSessionStickiness": "Вимкнути закріплення сесій", "disableSessionStickinessDesc": "Комбінації Round-robin та random перемикаються на інше з'єднання при кожному запиті замість закріплення всієї розмови за одним з'єднанням за хешем першого повідомлення. Залиште вимкненим, щоб зберегти влучання в кеш підказок (prompt-cache) для багатокрокових чатів. Перевизначення для конкретних комбінацій мають пріоритет.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "Маршрутизація з урахуванням локальності кешу промптів", + "promptCacheAffinityDesc": "Віддавати перевагу тому самому обліковому запису провайдера для відповідних ключів кешу промптів, зберігаючи перемикання в разі проблем зі станом або квотою.", + "reasoningTokenBuffer": "Буфер токенів міркування", + "reasoningTokenBufferDesc": "Дозволити комбінованій маршрутизації додавати резерв max_tokens лише для відомих моделей міркування, коли весь буфер уміщується у відоме обмеження виведення.", + "zeroLatencyOptimizations": "Оптимізації з нульовою затримкою", + "zeroLatencyOptimizationsDesc": "Увімкніть хеджування, прогнозовані пропуски TTFT і проактивне стиснення резервних запитів. Залиште вимкненим, щоб ці функції зниження затримки не створювали перегонів між цільовими сервісами та не стискали резервні запити.", "credentialRedaction": "Вилучення облікових даних", "credentialRedactionDesc": "Вилучати API-ключі, токени та секрети з контексту, що надсилається провайдерам, та з відповідей.", "enableCredentialRedaction": "Увімкнути вилучення облікових даних", "enableCredentialRedactionDesc": "Очищає API-ключі, токени, приватні ключі та JWT з повідомлень, викликів інструментів та відповідей.", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "Автоматичну синхронізацію вимкнено", + "pricingAutoSyncEnabled": "Автоматичну синхронізацію ввімкнено", "modalityBridgeIntro": "Перетворюйте мультимодальний вміст на текст до його передавання моделям, що працюють лише з текстом. Мости для зображень, аудіо та відео доступні й налаштовуються.", "modalityBridgeVisionTab": "Візія", "modalityBridgeAudioTab": "Аудіо", @@ -8364,15 +8379,7 @@ "cliproxyapiHealth": "Здоров'я", "cliproxyapiPort": "Порт", "qdrantHost": "Хост", - "qdrantCollection": "Колекція", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "Колекція" }, "contextRtk": { "title": "Двигун RTK", @@ -8456,7 +8463,7 @@ "tomlTestPassed": "Пройдено", "tomlTestFailed": "Не пройдено", "tomlImportError": "Не вдалося обробити файл RTK TOML.", - "tomlFileReadError": "Could not read the selected TOML file." + "tomlFileReadError": "Не вдалося прочитати вибраний файл TOML." }, "compressionEngineConfig": { "loading": "Завантаження…", @@ -8511,15 +8518,15 @@ "description": "ONNX-based semantic token classification. Compresses prose only; code blocks and preserved constructs are protected. Продовжує роботу без стиснення у разі помилок моделі або воркера." }, "lite": { - "name": "Lite", + "name": "Легкий", "description": "Швидке скорочення пробілів, результатів інструментів та URL-адрес зображень." }, "aggressive": { - "name": "Aggressive", + "name": "Агресивний", "description": "Резюмування, стиснення результатів інструментів та прогресивне старіння." }, "ultra": { - "name": "Ultra", + "name": "Ультра", "description": "Евристичне скорочення токенів з додатковим резервним використанням локальної SLM." } }, @@ -8601,9 +8608,9 @@ "bert-base": "BERT-base (710 МБ, вища точність)" }, "intensity": { - "lite": "Lite", - "full": "Full", - "ultra": "Ultra" + "lite": "Легкий", + "full": "Повний", + "ultra": "Ультра" } }, "modeOptions": { @@ -8661,6 +8668,8 @@ "contextEditingNote": "Наразі доступно лише для Claude (Anthropic). Це делегований режим: провайдер очищає старі блоки використання інструментів на стороні сервера — ми не переписуємо повідомлення. Це не впливає на інших провайдерів.", "namedCombos": "Іменовані комбінації", "namedCombosDescription": "Зберігайте різні конвеєри та призначайте їх конкретним комбінаціям маршрутизації.", + "activeProfileMasterSwitchOffWarning": "Активний профіль нижче не працюватиме, доки не буде ввімкнено головний перемикач «Стиснення промптів».", + "activeProfileMasterSwitchOffCta": "Увімкнути в налаштуваннях", "comboNamePlaceholder": "Назва комбінації", "descriptionPlaceholder": "Опис", "nameRequired": "Введіть назву комбінації перед збереженням.", @@ -8674,9 +8683,7 @@ "languagePacksList": "Мовні пакети: {packs}", "dragToReorder": "Перетягніть, щоб змінити порядок кроків", "engine": "Рушій", - "intensity": "Інтенсивність", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "Інтенсивність" }, "compressionStudio": { "noRun": "Немає доступних запусків стиснення.", @@ -8685,16 +8692,16 @@ "canvas": "Полотно", "waterfall": "Водоспад", "replayDone": "Відтворення завершено", - "pauseReplay": "Pause replay", - "playReplay": "Play replay", - "pause": "Pause", - "replay": "Replay", - "resetReplay": "Reset replay", - "stepProgress": "step {current}/{total}", - "inlineView": "Inline", - "splitComingSoon": "Split view (coming soon)", - "inputPlaceholder": "Paste a prompt, tool output, or context…", - "activeCombined": "Active in the combined flow", + "pauseReplay": "Призупинити відтворення", + "playReplay": "Запустити відтворення", + "pause": "Пауза", + "replay": "Відтворити", + "resetReplay": "Скинути відтворення", + "stepProgress": "крок {current}/{total}", + "inlineView": "Вбудований режим", + "splitComingSoon": "Розділений перегляд (незабаром)", + "inputPlaceholder": "Вставте промпт, результат інструмента або контекст…", + "activeCombined": "Активний у комбінованому потоці", "requiresOnnx": "потребує моделі ONNX", "verifyFidelity": "Перевірити точність (відхилити будь-який шар, що пошкоджує вміст)", "fuzzyDedup": "Неточне дедуплікування (майже дублікат → CCR)", @@ -8705,7 +8712,7 @@ "run": "Запустити", "laneRejected": "відхилено: {reason}", "error": "помилка", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "Не вдалося переглянути комбінований конвеєр: {reason}", "combinedFlow": "Комбінований потік", "eachLayer": "Кожен шар окремо", "diff": "Різниця", @@ -8780,27 +8787,27 @@ }, "enableTitle": "Увімкнути рушій", "enableDescription": "Запускається останнім у стеку (після того, як RTK/Caveman очищає текст, а OmniGlyph конвертує решту в зображення), а також працює автономно в режимі omniglyph. Це попередня версія, яка залишається вимкненою за замовчуванням до завершення наскрізної перевірки.", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "Профіль стиснення", + "profileDescription": "Профіль задає верхню, а не нижню межу: суворіший профіль не можна послабити перевизначенням на рівні окремого кроку. Виміряно на цій кодовій базі: у режимі «Безпечний для коду» або «Збалансований» сеанс, у якому ще не накопичилася історія, нічого не стискає, оскільки обидва режими підвищують мінімальний поріг кількості символів і зберігають системний промпт, схеми інструментів і результати інструментів у початковому вигляді.", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "Агресивний (за замовчуванням)", + "description": "Політика, яку оцінювали в опублікованих звітах. Перетворює на зображення системний промпт, документацію інструментів і насичену історію." }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "Збалансований", + "description": "Зберігає поточний стан у початковому вигляді та захищає останні 8 ходів; згортає лише давнішу завершену історію." }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "Безпечний для коду", + "description": "Зберігає інструкції вищого рівня, схеми інструментів і поточний результат інструментів у початковому вигляді, захищаючи останні 12 ходів. Нічого не стискає, доки в сеансі не накопичиться історія." }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "Без змін", + "description": "Маршрутизує без перетворень. Рушій пропускається, а запит пересилається без змін." } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "Виберіть профіль стиснення OmniGlyph", "saved": "Збережено.", "saveFailed": "Не вдалося зберегти.", "enableAria": "Увімкнути рушій OmniGlyph", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "Стиснення повідомлень на основі правил, мовні пакети, аналітика та керування режимом виведення.", "advancedConfig": "Розширена конфігурація", "advancedConfigDesc": "Точне налаштування стиснення", "aggressiveSettings": "Агресивні налаштування", "aggressiveSettingsDesc": "Максимальне стиснення з потенційними компромісами щодо якості", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "Запити", + "tokensSaved": "Заощаджено токенів", + "savingsPercent": "Заощадження, %", + "avgLatency": "Середня затримка", + "languagePacks": "Мовні пакети", + "languagePacksDesc": "Увімкніть правила стиснення для певних мов.", "labelAutoTrigger": "Автоматичне стиснення, коли контекст перевищує", "labelCompressionRate": "Міцність на стиск", "labelMaxTokens": "Цільові маркери на повідомлення", "labelMinLength": "Мінімальна довжина повідомлення", "labelMinSavings": "Мінімальна кількість токенів для збереження", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "Увімкнено", + "autoDetect": "Автовизначення мови", + "rulesCount": "{count} правил", "inputCompressionTitle": "Стиснення входу", "inputCompressionDesc": "Переписує історію чату коротшими формулюваннями. Зменшує вхідні токени приблизно на 50%.", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "Аналітика стиснення", + "noAnalytics": "Даних аналітики стиснення ще немає.", "masterDisabledWarning": "Головний перемикач Token Saver вимкнено — ці налаштування не впливатимуть на запити, доки ви не увімкнете його в Compression Settings або не зміните тут.", "outputMode": "Режим виведення", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "Режим виведення", "quickSettings": "Швидкі налаштування", "quickSettingsDesc": "Основні налаштування стиснення для початку", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "Автоматичний обхід Clarity", + "bypassConditions": "Умови обходу", "bypassConditionsList": "безпека, безповоротний, уточнення, чутливий до порядку", "simpleMode": "просто", "advancedMode": "Просунутий", @@ -8944,9 +8951,9 @@ "ultraSettings": "Ультра налаштування", "ultraSettingsDesc": "Семантичне стиснення на основі SLM", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "Відповідайте стисло. Зберігайте технічні терміни, код, помилки, URL-адреси та ідентифікатори.", + "full": "Відповідайте лаконічно й компактно. Зберігайте всю технічну суть.", + "ultra": "Відповідайте максимально стисло, використовуючи загальноприйняті технічні скорочення. Зберігайте точні символи." } }, "translator": { @@ -8993,7 +9000,7 @@ "translationPathHubSpoke": "{source} → OpenAI (середній) → {target}", "translationPathDirect": "{source} → {target} (прямий перекладач)", "translationPathPassthrough": "Той же формат — переклад не потрібен", - "openaiIntermediatePanel": "OpenAI Intermediate", + "openaiIntermediatePanel": "OpenAI Проміжний", "autoFeaturesTitle": "Що OmniRoute робить автоматично", "autoFeaturesCount": "8 особливостей", "featureReasoningCache": "Кеш міркувань", @@ -9130,7 +9137,7 @@ "clientRequestDescription": "Тіло запиту, як його надіслав би ваш клієнт", "formatDetected": "Виявлено формат", "formatDetectedDescription": "OmniRoute автоматично визначає формат API зі структури запиту", - "openaiIntermediate": "OpenAI Intermediate", + "openaiIntermediate": "OpenAI Проміжний", "openaiIntermediateDescription": "Усі формати спочатку нормалізуються до формату OpenAI (універсальний міст)", "providerFormat": "Формат постачальника", "providerFormatDescription": "Формат OpenAI перекладається на рідний формат постачальника", @@ -9157,7 +9164,7 @@ "loadToolSample": "Завантажити зразок виклику інструменту", "transformToResponses": "Перетворення на відповіді", "rawChatSseInput": "Необроблені завершення чату SSE", - "transformedResponsesSse": "Transformed Responses API SSE", + "transformedResponsesSse": "Перетворений SSE Responses API", "noResultsYet": "Результатів ще немає", "transformedEvents": "Трансформовані події", "uniqueEventTypes": "Унікальні типи подій", @@ -9277,16 +9284,16 @@ "kiloPassRemaining": "Залишилось", "kiloPassRenews": "Оновлюється через {count} дн.", "kiloPassUsageLabel": "Використання в цьому місяці", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", + "kimiExtraUsageCredits": "Додаткові кредити на використання", + "kimiExtraUsage": "Додаткове використання", + "kimiExtraUsageEnabled": "Увімкнено", + "kimiExtraUsageDisabled": "Вимкнено", + "kimiExtraUsageFrozen": "Заморожено", + "kimiExtraUsageUnavailable": "Недоступно", + "kimiMonthlyUsed": "Використано цього місяця", + "kimiMonthlyLimit": "Місячний ліміт", + "kimiMonthlyLimitUnlimited": "Без обмежень", + "kimiAdditionalCredits": "Додаткові кредити", "loggerTab": "Лісоруб", "proxyTab": "Проксі", "budgetManagement": "Управління бюджетом", @@ -9324,7 +9331,7 @@ "circuitBreakers": "Автоматичні вимикачі", "lockedIPs": "Заблоковані IP-адреси", "lockoutsAutoRefreshHint": "Блокування обмеження швидкості для кожної моделі • Автоматичне оновлення 10 с", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", + "lockedCount": "{count, plural, one {# заблоковано} other {# заблоковано}}", "timeLeft": "Залишилося {time}", "howItWorks": "Як це працює", "howItWorksSubtitle": "Дізнайтеся, як оцінки підтверджують ваші відповіді LLM", @@ -9368,12 +9375,12 @@ "modelsUnderTest": "Тестуються моделі", "searchSuitesPlaceholder": "Пошук комплектів...", "passSuffix": "пропуск", - "casesCount": "{count, plural, one {# case} other {# cases}}", + "casesCount": "{count, plural, one {# випадок} other {# випадків}}", "runEval": "Запустіть Eval", "runAllSuites": "Запустити все", "runAllRunning": "Виконується все...", "runAllProgress": "Виконується {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# набір не пройдено} other {# наборів не пройдено}}", "runAllCompleted": "Виконано {suites} пакетів — {passed} пройдено, {failed} не виконано", "runAllCompletedWithFailures": "Запустив {completed} пакетів; {failedSuites} не вдалося виконати", "runningProgress": "Виконується {current}/{total}...", @@ -9423,7 +9430,7 @@ "providerLimits": "Обмеження постачальника", "noProviders": "Немає підключених постачальників", "connectProvidersForQuota": "Підключайтеся до постачальників за допомогою OAuth, щоб відстежувати обмеження квоти та використання API.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "accountsCount": "{count, plural, one {# обліковий запис} other {# облікових записів}}", "filteredFromCount": "(відфільтровано з {count})", "autoRefresh": "Автооновлення", "refreshAll": "Оновити все", @@ -9465,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Плюс", "tierFree": "безкоштовно", - "tierLite": "Lite", + "tierLite": "Полегшений", "tierUnknown": "Невідомий", "statTotal": "Усього", "statCritical": "Критично", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "Використати кредит", "resetCreditRedeemed": "Скидання використано", "resetCreditRedeemFailed": "Не вдалося використати кредит на скидання", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "Не вдалося зберегти набір", "clone": "Клон", "exportSuite": "Експорт", "importSuite": "Імпорт", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "Недійсний JSON набору оцінок", "suiteBuilderCloneSuffix": "копія", "suiteBuilderImportedSuite": "Імпортна Люкс", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", + "scorecardTitle": "Таблиця оцінок", + "evalApiKey": "Ключ API", + "scorecardPassRate": "Частка успішних проходжень", + "targetTypeModel": "Модель", + "actualOutputLabel": "Фактичний результат", + "evalTargetHint": "Виберіть модель або комбінацію для оцінювання.", + "suiteBuilderDeleted": "Набір успішно видалено", + "suiteBuilderCaseCardHint": "Визначте вхідний запит і критерії очікуваного результату.", "nextResetUtc": "Наступне скидання (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardHint": "Сукупні показники успішності для всіх наборів оцінювання.", + "suiteLatestRunsHint": "Останні запуски оцінювання для цього набору.", + "saving": "Збереження", + "suiteBuilderCaseModelLabel": "Модель (необов’язково)", + "evalControlsTitle": "Параметри оцінювання", + "suiteBuilderEditTitle": "Редагувати набір оцінювання", + "suiteBuilderCaseStrategyLabel": "Стратегія перевірки", + "notifySelectDifferentCompareTarget": "Виберіть іншу ціль для порівняння", + "recentRunsHint": "Показано останні запуски оцінювання. Натисніть на запуск, щоб переглянути докладні результати.", + "evalCompareHint": "За бажанням порівняйте результати з другою ціллю.", + "suiteBuilderCaseInvalid": "Цей тестовий випадок містить помилки перевірки. Виправте їх перед збереженням.", + "historyEmpty": "Історії оцінювань ще немає", + "suiteBuilderUpdated": "Набір успішно оновлено", + "resetInterval": "Інтервал скидання", + "suiteBuilderCreateTitle": "Створити набір оцінювання", + "activePeriodSpend": "Витрати за активний період", + "evalApiKeyHint": "Виберіть API-ключ для запитів оцінювання.", + "evalCompareOptional": "Порівняти (необов’язково)", + "suiteBuilderDeleteFailed": "Не вдалося видалити набір", + "suiteBuilderCaseSystemPromptPlaceholder": "Необов’язкові системні інструкції...", + "scorecardCases": "Тестові випадки", + "runCompletedWithScore": "Оцінювання завершено — показник успішності: {score}%", + "suiteBuilderCustomBadge": "Власний", + "targetSuiteDefaults": "Типові налаштування набору", + "suiteBuilderDeleteConfirm": "Ви впевнені, що хочете видалити цей набір? Цю дію неможливо скасувати.", + "suiteBuilderNameLabel": "Назва набору", + "scorecardSuites": "Набори", + "evalCompareTarget": "Ціль для порівняння", + "suiteBuilderCaseModelPlaceholder": "напр., gpt-4o-mini", + "evalControlsHint": "Налаштуйте ціль оцінювання та API-ключ, а потім запустіть набори, щоб перевірити якість моделі.", + "recentRunsTitle": "Останні запуски", + "suiteBuilderCaseSystemPromptLabel": "Системний запит", + "suiteBuilderCaseExpectedPlaceholder": "напр., def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "напр. визначення фібоначчі", "suiteBuilderCaseExpectedPlaceholderExact": "Вставте точну очікувану відповідь", "suiteBuilderCaseExpectedPlaceholderRegex": "напр. ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "Використовуйте регулярний вираз JavaScript без похилих рис.", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "напр., набір оцінювання якості коду", + "suiteBuilderAddCase": "Додати тестовий випадок", + "cancel": "Скасувати", + "evalTarget": "Ціль", + "suiteBuilderCaseNameLabel": "Назва сценарію", + "weeklyLimitUsd": "Тижневий ліміт (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "напр., Напишіть функцію Фібоначчі мовою Python", + "suiteBuilderNameRequired": "Назва набору є обов’язковою", + "suiteBuilderCaseUserPromptLabel": "Запит користувача", + "daily": "Щодня", + "resultErrorLabel": "Помилка", + "suiteBuilderBuiltInBadge": "Вбудований", + "suiteBuilderCaseCardTitle": "Тестовий сценарій", "suiteBuilderDuplicateCase": "дублікат", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "напр., 50.00", + "suiteBuilderCaseTagsHint": "Теги, розділені комами, для впорядкування тестових сценаріїв.", + "notifyEvalRunFailedWithReason": "Не вдалося виконати оцінювання: {reason}", + "weekly": "Щотижня", + "runEvalRunning": "Виконується оцінювання...", + "delete": "Видалити", + "resetTimeUtc": "Час скидання (UTC)", + "evalApiKeyAuto": "Автоматично (використовувати значення за замовчуванням)", + "suiteBuilderDescriptionPlaceholder": "Необов’язковий опис того, що перевіряє цей набір...", + "targetComparisonTitle": "Порівняння цілей", + "save": "Зберегти", + "suiteBuilderCreated": "Набір успішно створено", + "suiteLatestRuns": "Останні запуски", + "suiteBuilderCaseExpectedLabel": "Очікуване значення", + "historyLatency": "Затримка", + "suiteBuilderCaseTagsPlaceholder": "напр., програмування, python", + "targetTypeCombo": "Комбінований", + "scorecardPassed": "Пройдено", + "suiteBuilderCaseTagsLabel": "Теги", + "suiteBuilderNewSuite": "Новий набір", + "notifyEvalLoadFailed": "Не вдалося завантажити дані оцінювання", + "notConfigured": "Не налаштовано", + "suiteBuilderCaseNamePlaceholder": "напр., Тест функції Фібоначчі на Python", + "intervalLabel": "Інтервал", + "suiteBuilderCreateAction": "Створити набір", + "suiteBuilderCasesHint": "Кожен сценарій надсилає запит і перевіряє відповідь.", + "suiteBuilderUpdatedAt": "Оновлено", + "errorBadge": "Помилка", + "suiteBuilderCasesTitle": "Тестові сценарії", + "edit": "Редагувати", + "monthly": "Щомісяця", + "suiteBuilderCasesRequired": "Потрібен принаймні один тестовий випадок", + "weeklyLimitSummary": "Підсумок тижневого ліміту бюджету", + "suiteBuilderDescriptionLabel": "Опис", + "targetComparisonHint": "Паралельне порівняння результатів оцінювання між цільовими об’єктами.", + "compareCompletedWithScore": "Порівняння завершено — частка успішних результатів: {score}%", + "staleQuotaTooltip": "Останнє оновлення не вдалося — показано кешовані дані", "quotaThresholdLabel": "Залишилося хв", "quotaCutoffsColumnHelp": "Зупинити запити, коли залишок квоти зменшиться до цього відсотка або нижче.", "quotaCutoffsButtonDefault": "За замовчуванням", @@ -9622,7 +9629,7 @@ "accountActivated": "Обліковий запис активовано", "accountDeactivated": "Обліковий запис деактивовано", "toggleActiveFailed": "Не вдалося оновити статус облікового запису", - "quotaCutoffsTitle": "Quota cutoffs for {name} ({provider})", + "quotaCutoffsTitle": "Порогові значення квоти для {name} ({provider})", "quotaCutoffsExplainer": "Override the minimum remaining quota percentage where this account stops being selected for each quota window. Залиште поле порожнім, щоб успадкувати постачальника за замовчуванням.", "quotaCutoffsDefaultHint": "Мінімальна кількість за умовчанням, що залишилася: {default}%", "quotaCutoffsResetAll": "Скинути все", @@ -9777,7 +9784,7 @@ "systemMonitor": { "metricsAriaLabel": "Системні метрики", "memory": "Пам'ять", - "memoryShort": "mem", + "memoryShort": "пам’ять", "uptime": "Час безвідмовної роботи", "ariaLabel": "Моніторинг системи", "title": "Монітор системи", @@ -9816,8 +9823,8 @@ "signIn": "Увійдіть", "enterPassword": "Введіть свій пароль, щоб продовжити", "password": "Пароль", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", + "unifiedProxy": "Уніфікований проксі-сервер AI API", + "unifiedAiApiProxy": "Уніфікований проксі-сервер AI API", "unifiedAiApiProxyDesc": "Направляйте запити до кількох постачальників штучного інтелекту через одну кінцеву точку. Вбудоване балансування навантаження, відновлення після відмови та відстеження використання.", "passwordNotEnabled": "Захист паролем не ввімкнено", "loading": "Завантаження...", @@ -9863,7 +9870,7 @@ "backToLogin": "Назад до входу", "forgotPassword": "Забули пароль?", "continueWithOidc": "Продовжити з OIDC", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", + "defaultPasswordHint": "Пароль за замовчуванням: CHANGEME (якщо не було задано INITIAL_PASSWORD)", "Authorization": "Авторизація", "Content-Disposition": "Зміст-диспозиція", "waitingForAuthorization": "Очікування авторизації...", @@ -9872,10 +9879,10 @@ "waitingForAntigravityAuthorization": "Очікування авторизації Antigravity...", "waitingForQoderAuthorization": "Очікування авторизації Qoder...", "exchangingCodeForTokens": "Обмін коду на токени...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "nodeIncompatibleTitle": "Несумісна версія Node.js", + "nodeIncompatibleDesc": "Ви використовуєте Node.js {version}, що не відповідає політиці OmniRoute щодо підтримуваного безпечного середовища виконання. Використовуйте виправлений LTS-випуск Node.js 20.x або 22.x.", + "nodeIncompatibleFixLabel": "Виправлення: установіть виправлений LTS-випуск Node.js 22", + "nodeIncompatibleHint": "Для OmniRoute потрібна Node.js 22.22.2+ (22.x LTS) або 24.0.0+ (24.x LTS). Рекомендовано Node 24 LTS.", "resetViaAppDataTitle": "Скинути через дані програми", "resetViaAppDataDescription": "Видаліть файл налаштувань з каталогу даних програми, щоб скинути свій пароль:", "quitDesktopApp": "Повністю вийти з настільного додатку OmniRoute", @@ -10031,10 +10038,10 @@ "supportedProvidersToc": "Провайдери", "commonUseCases": "Загальні випадки використання", "clientCompatibility": "Сумісність клієнта", - "protocolsToc": "Protocols", + "protocolsToc": "Протоколи", "apiReference": "Довідник API", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", + "managementApiReference": "Довідник Management API", + "managementApiDescription": "Кінцеві точки автоматизації для реєстру проксі-серверів, призначення областей і міграції застарілих проксі-серверів.", "method": "метод", "path": "шлях", "notes": "Примітки", @@ -10063,19 +10070,19 @@ "quickStartStep4Prefix": "Наведіть свій клієнт IDE або API на", "quickStartStep4Suffix": "Використовуйте, наприклад, префікс провайдера", "deploySetupTitle": "Посібник із налаштування", - "deploySetupText": "Step-by-step installation, environment configuration, and first-run walkthrough for OmniRoute.", + "deploySetupText": "Покрокове встановлення, налаштування середовища та інструкція з першого запуску OmniRoute.", "deployElectronTitle": "Електронний робочий стіл", - "deployElectronText": "Run OmniRoute as a native desktop application on Windows, macOS, and Linux.", + "deployElectronText": "Запускайте OmniRoute як нативний настільний застосунок у Windows, macOS і Linux.", "deployDockerTitle": "Докер", "deployDockerText": "Контейнерне розгортання з Docker Compose; готові до виробництва стеки та Kubernetes.", "deployVmTitle": "Віртуальна машина", "deployVmText": "Саморозміщення на будь-якій віртуальній машині Linux. Includes systemd unit, log rotation, and backup tooling.", "deployFlyTitle": "Fly.io", - "deployFlyText": "Deploy to Fly.io edge runtime with one fly.toml and a single deploy command.", + "deployFlyText": "Розгорніть у середовищі виконання Fly.io edge за допомогою одного файлу fly.toml і єдиної команди розгортання.", "deployPwaTitle": "PWA", - "deployPwaText": "Install OmniRoute as a Progressive Web App on Android, iOS, and desktop browsers.", + "deployPwaText": "Установіть OmniRoute як прогресивний вебзастосунок на Android, iOS і в настільних браузерах.", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", + "deployTermuxText": "Запускайте OmniRoute на Android без графічного інтерфейсу через Termux. Отримуйте доступ до панелі керування з мобільного браузера.", "featureRoutingTitle": "Маршрутизація з кількома провайдерами", "featureRoutingText": "Направляйте запити до 30+ постачальників штучного інтелекту через єдину кінцеву точку, сумісну з OpenAI. Підтримує чат, відповіді, аудіо та API зображень.", "featureCombosTitle": "Комбо і балансування", @@ -10121,33 +10128,33 @@ "clientClaudeBullet1Middle": "(Клод) або", "clientClaudeBullet1Suffix": "(Антигравітація) префікс.", "clientWindsurfTitle": "Віндсерфінг", - "clientWindsurfBullet1": "Use OmniRoute as an OpenAI-compatible base URL and keep explicit provider prefixes for deterministic routing.", - "clientWindsurfBullet2": "Point models to `/v1/chat/completions` for general traffic and preserve `/v1/responses` for Codex-style flows.", + "clientWindsurfBullet1": "Використовуйте OmniRoute як сумісну з OpenAI базову URL-адресу та зберігайте явні префікси провайдерів для детермінованої маршрутизації.", + "clientWindsurfBullet2": "Спрямовуйте моделі на `/v1/chat/completions` для загального трафіку та зберігайте `/v1/responses` для потоків у стилі Codex.", "clientWindsurfBullet3": "Використовуйте Інформаційну панель -> Інструменти CLI, щоб отримати готовий посібник з налаштування Windsurf.", "clientClineTitle": "Клайн", - "clientClineBullet1": "Cline works best with explicit provider/model prefixes so the router never has to guess the backend.", - "clientClineBullet2": "Use `/v1/chat/completions` for general models and reuse the same OmniRoute base URL across different accounts.", - "clientClineBullet3": "Use the Providers dashboard to validate OAuth/API key before debugging Cline runtime issues.", + "clientClineBullet1": "Cline найкраще працює з явними префіксами провайдера/моделі, щоб маршрутизатору ніколи не доводилося вгадувати серверну систему.", + "clientClineBullet2": "Використовуйте `/v1/chat/completions` для моделей загального призначення та повторно використовуйте ту саму базову URL-адресу OmniRoute для різних облікових записів.", + "clientClineBullet3": "Скористайтеся панеллю керування Providers, щоб перевірити OAuth/API key перед налагодженням проблем середовища виконання Cline.", "clientKimiTitle": "Кодування Кімі", "clientKimiBullet1": "Використовуйте OmniRoute як стабільну базову URL-адресу під час ротації облікових записів або комбінацій провайдерів.", "clientKimiBullet2": "Віддавайте перевагу префіксованим моделям у потоках кодування, щоб резервний і контрольний слід залишався явним.", "clientKimiBullet3": "Використовуйте `/v1/responses`, якщо вам потрібна власна маршрутизація у стилі відповідей для клієнтів, що використовують інструменти.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "protocolsTitle": "Протоколи: MCP і A2A", + "protocolsDescription": "На додаток до сумісних з OpenAI API, OmniRoute надає два операційні протоколи: MCP для виконання інструментів і A2A для робочих процесів між агентами.", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "Використовуйте MCP через stdio, щоб клієнти могли виявляти та викликати інструменти OmniRoute із можливістю аудиту.", + "protocolMcpStep1": "Запустіть транспорт MCP за допомогою `omniroute --mcp`.", + "protocolMcpStep2": "Налаштуйте свій клієнт MCP на використання транспорту stdio.", + "protocolMcpStep3": "Викличте `omniroute_get_health` і `omniroute_list_combos`, щоб перевірити з’єднання.", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", + "protocolA2aDesc": "Використовуйте A2A JSON-RPC для синхронного надсилання завдань або через потокове передавання SSE.", + "protocolA2aStep1": "Перегляньте `/.well-known/agent.json` для виявлення агента.", + "protocolA2aStep2": "Надсилайте запити `message/send` або `message/stream` до `POST /a2a`.", + "protocolA2aStep3": "Керуйте життєвим циклом завдань за допомогою `tasks/get` і `tasks/cancel`.", + "protocolTroubleshootingTitle": "Усунення несправностей протоколу", + "protocolTroubleshooting1": "Якщо статус MCP — офлайн, переконайтеся, що процес stdio запущено, а файл сигналів активності оновлюється.", + "protocolTroubleshooting2": "Якщо завдання A2A залишаються у стані `working`, перевірте `/api/a2a/tasks/:id` і потокові події на наявність кінцевого стану.", + "protocolTroubleshooting3": "Використовуйте `/dashboard/mcp` і `/dashboard/a2a` для оперативного керування та перегляду аудиту.", "endpointChatNote": "Кінцева точка чату, сумісна з OpenAI (за замовчуванням).", "endpointResponsesNote": "Кінцева точка API відповідей (Codex, o-series).", "endpointModelsNote": "Каталог моделей для всіх підключених провайдерів.", @@ -10158,13 +10165,13 @@ "endpointRewriteChatNote": "Помічник перезапису для клієнтів без /v1.", "endpointRewriteResponsesNote": "Переписати помічник для відповідей без /v1.", "endpointRewriteModelsNote": "Переписати помічник для виявлення моделі без /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", + "mgmtProxiesListNote": "Переглянути збережені елементи реєстру проксі (підтримується пагінація).", + "mgmtProxiesCreateNote": "Створити багаторазово використовуваний елемент проксі в реєстрі.", + "mgmtProxiesHealthNote": "Отримати метрики справності за 24 години або ковзний період для кожного збереженого проксі з журналів проксі.", + "mgmtProxiesBulkAssignNote": "Призначити або вилучити один проксі для багатьох ідентифікаторів областей одним запитом.", + "mgmtAssignmentsListNote": "Переглянути призначення проксі за областю, scope_id або proxy_id.", + "mgmtAssignmentsUpdateNote": "Призначити або вилучити проксі для глобальної області, постачальника, облікового запису чи комбінації.", + "mgmtLegacyMigrationNote": "Імпортувати застарілі мапи proxyConfig у призначення реєстру.", "modelPrefixesDescriptionStart": "Використовуйте префікс постачальника перед назвою моделі, щоб маршрутизувати до певного постачальника. приклад:", "modelPrefixesDescriptionEnd": "маршрути до GitHub Copilot.", "provider": "Провайдер", @@ -10198,25 +10205,25 @@ "mgmtPayloadRulesGetNote": "Отримати правила перетворення корисного навантаження.", "mgmtPayloadRulesUpdateNote": "Оновити правила перетворення корисного навантаження.", "mcpToolsTitle": "Інструменти MCP", - "mcpToolsDescription": "OmniRoute exposes {count} tools via Model Context Protocol for agent orchestration.", + "mcpToolsDescription": "OmniRoute надає {count} інструментів через Model Context Protocol для оркестрації агентів.", "mcpToolsCount": "інструменти {count}", "mcpToolsToc": "Інструменти MCP", "mcpToolsRoutingTitle": "Маршрутизація та виявлення", - "mcpToolsRoutingDesc": "Health checks, combo management, quota monitoring, cost reporting, and model catalog access.", + "mcpToolsRoutingDesc": "Перевірки справності, керування комбінаціями, моніторинг квот, звітування про витрати та доступ до каталогу моделей.", "mcpToolsOperationsTitle": "Операції та стратегія", - "mcpToolsOperationsDesc": "Route simulation, budget guards, strategy switching, resilience profiles, and provider metrics.", + "mcpToolsOperationsDesc": "Симуляція маршрутизації, обмеження бюджету, перемикання стратегій, профілі стійкості та метрики постачальників.", "mcpToolsCacheTitle": "Керування кешем", - "mcpToolsCacheDesc": "View cache statistics and flush semantic or signature caches.", + "mcpToolsCacheDesc": "Переглядати статистику кешу та очищати семантичні кеші або кеші сигнатур.", "mcpToolsCompressionTitle": "Компресійні двигуни", - "mcpToolsCompressionDesc": "Configure RTK/Brotli compression, swap engines, and inspect compression analytics by combo.", + "mcpToolsCompressionDesc": "Налаштовувати стиснення RTK/Brotli, змінювати рушії та переглядати аналітику стиснення за комбінаціями.", "mcpToolsOneProxyTitle": "1Проксі / Тунелі", - "mcpToolsOneProxyDesc": "Manage outbound proxies, rotate residential IPs, and inspect proxy health.", + "mcpToolsOneProxyDesc": "Керувати вихідними проксі, виконувати ротацію резидентських IP-адрес і перевіряти справність проксі.", "mcpToolsMemoryTitle": "Пам'ять", - "mcpToolsMemoryDesc": "Search, add, and clear persistent conversational memory entries.", + "mcpToolsMemoryDesc": "Шукати, додавати й очищати записи постійної пам’яті розмов.", "mcpToolsSkillsTitle": "Навички", - "mcpToolsSkillsDesc": "List, enable, execute, and monitor custom skill executions.", + "mcpToolsSkillsDesc": "Переглядати, вмикати, виконувати й відстежувати виконання користувацьких навичок.", "featureAutoComboTitle": "Авто-комбо", - "featureAutoComboText": "Automatically create optimized combos based on your connected providers, usage patterns, and model capabilities.", + "featureAutoComboText": "Автоматично створювати оптимізовані комбінації на основі підключених постачальників, шаблонів використання та можливостей моделей.", "featureSearchTitle": "Пошук в Інтернеті", "featureSearchText": "Інтегрований веб-пошук із 5 постачальниками (Serper, Brave, Exa, Tavily, Perplexity), включаючи аналітику та відстеження витрат.", "featureMemoryTitle": "Система пам'яті", @@ -10225,7 +10232,7 @@ "featureSkillsText": "Розширювана система навичок із вбудованими та користувальницькими навичками, виконанням ізольованого середовища, перехопленням запитів і впровадженням контексту.", "featureAcpTitle": "Зв'язок агента", "featureAcpText": "Реєстр Agent Communication Protocol (ACP) для керування робочими процесами між агентами та оркестровки інструментів.", - "protocolAcpTitle": "ACP (Agent Communication)", + "protocolAcpTitle": "ACP (комунікація агентів)", "protocolAcpDesc": "Реєструйте агентів і керуйте ними через реєстр ACP для спілкування між агентами та спільного використання інструментів.", "protocolAcpStep1": "Перейдіть до Інформаційної панелі → Агенти, щоб переглянути зареєстрованих агентів ACP.", "protocolAcpStep2": "Зареєструйте нових агентів із можливостями та конфігурацією кінцевої точки.", @@ -10336,35 +10343,35 @@ "termsSection6Text": "OmniRoute — це програмне забезпечення з відкритим кодом. Ви можете вільно перевіряти, змінювати та поширювати його відповідно до умов його ліцензії." }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI-агенти", + "description": "Виявляйте встановлені у вашій системі CLI-агенти. Додавайте користувацькі агенти для автоматичного виявлення.", + "refresh": "Оновити", + "installed": "Встановлено", + "notFound": "Не знайдено", + "builtIn": "Вбудований", + "custom": "Користувацький", + "remove": "Видалити", + "addCustomAgent": "Додати користувацького агента", + "addCustomAgentDesc": "Зареєструйте будь-який інструмент CLI для виявлення. Він автоматично скануватиметься під час оновлення.", + "agentName": "Назва агента", + "binaryName": "Назва виконуваного файлу", + "versionCommand": "Команда версії", + "spawnArgs": "Аргументи запуску", + "addAgent": "Додати агента", + "scanning": "Сканування системи на наявність CLI-агентів...", + "opencodeIntegration": "Інтеграція з OpenCode", + "opencodeDetected": "Виявлено opencode {version}", + "opencodeDesc": "Згенеруйте готовий до використання файл {configFile} із базовою URL-адресою OmniRoute та всіма доступними моделями — помістіть його в кореневий каталог проєкту й виконайте {command}.", + "downloadConfig": "Завантажити {file}", + "downloaded": "Завантажено!", + "setupGuideTitle": "Посібник із налаштування", + "openCliTools": "Відкрити інструменти CLI", + "setupGuideDetectCliTitle": "Виявити встановлені CLI", + "setupGuideDetectCliDesc": "Після встановлення або оновлення CLI натисніть «Оновити», щоб OmniRoute повторно просканував виконувані файли та версії.", + "setupGuideCustomAgentTitle": "Зареєструвати власний виконуваний файл", + "setupGuideCustomAgentDesc": "Скористайтеся «Додати власного агента», якщо вашого CLI немає у вбудованому списку. Укажіть назву виконуваного файла та команду версії.", + "setupGuideCommandMissingTitle": "Виправити помилку «command not found»", + "setupGuideCommandMissingDesc": "Переконайтеся, що команда CLI доступна в PATH, відкрийте новий сеанс термінала та повторно натисніть «Оновити».", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10538,101 +10545,101 @@ } }, "cache": { - "title": "Cache Management", + "title": "Керування кешем", "description": "Monitor and manage semantic response cache, hit rates, and token savings.", - "refresh": "Refresh", + "refresh": "Оновити", "clearAll": "Clear All", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "memoryEntries": "Записи в пам’яті", + "memoryEntriesSub": "LRU у пам’яті", + "dbEntries": "Записи в базі даних", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "Влучання в кеш", + "cacheHitsSub": "із {total} загалом", + "tokensSaved": "Заощаджено токенів", + "tokensSavedSub": "Оцінка на основі влучань", + "hitRate": "Частка влучань", + "performance": "Продуктивність кешу", + "autoRefresh": "Автоматично оновлюється кожні {seconds} с", + "hits": "Влучання", + "misses": "Промахи", + "total": "Усього", + "behavior": "Поведінка кешу", + "behaviorDeterministic": "Кешуються лише непотокові запити з temperature=0.", + "behaviorBypass": "Обхід за допомогою заголовка {header}.", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", + "behaviorTtl": "TTL за замовчуванням: 30 хвилин. Налаштування через {envVar}.", + "idempotency": "Рівень ідемпотентності", + "activeDedupKeys": "Активні ключі дедуплікації", + "dedupWindow": "Вікно дедуплікації", "clearSuccess": "Cache cleared. {count} expired entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "clearError": "Не вдалося очистити кеш.", + "unavailable": "Кеш недоступний", + "unavailableDesc": "Не вдалося отримати статистику кешу. Переконайтеся, що сервер запущено.", "loadingCacheAria": "Завантаження кешу", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", + "promptCache": "Кешування промптів (на стороні провайдера)", + "semanticCache": "Семантичний кеш", + "promptCacheSectionDesc": "Показує активність кешування промптів на стороні провайдера з історії використання, щоб ви могли бачити, де активне керування кешем і який обсяг вхідних даних використовується повторно.", + "promptTrendDesc": "Погодинна кількість запитів, охоплення кешем і обсяг читання з кешу за останні 24 години.", + "cachedRequests": "Кешовані запити", + "cachedRequests24h": "Кешовані запити (24 год)", + "cacheHitRate": "Частка влучань у кеш", + "cacheRate": "Рівень кешування", + "cacheRateDesc": "від загальної кількості запитів", "cachedTokens": "Cached Tokens", "cacheCreationTokens": "Cache Creation Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", + "cacheMetrics": "Показники кешування промптів", + "withCacheControl": "З керуванням кешем", "cachedTokensRead": "Cached Tokens (Read)", "cacheCreationWrite": "Cache Creation (Write)", - "cacheReuseRatio": "Cache Reuse Ratio", + "cacheReuseRatio": "Коефіцієнт повторного використання кешу", "cacheReuseRatioDesc": "Cached tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "estCostSaved": "Орієнт. заощаджено", + "lastUpdated": "Останнє оновлення", + "hoursTracked": "годин відстежено", + "busiestHour": "Найактивніша година", + "peakCacheRate": "Піковий рівень кешування", + "trendHour": "Година", + "activityVolume": "Активність", + "requestsShort": "запитів", + "inputShort": "Вхідні", + "cachedShort": "Кешовано", + "writeShort": "Запис", + "resetting": "Скидання...", + "resetMetrics": "Скинути показники", + "byProvider": "Розподіл за провайдерами", + "providerCacheRateDesc": "Кожен провайдер показує загальну кількість вхідних токенів, токенів читання з кешу й токенів запису в кеш, щоб ви могли звірити коефіцієнт повторного використання з необробленими підсумковими даними.", "provider": "Provider", - "requests": "Requests", + "requests": "Запити", "inputTokens": "Input Tokens", "cachedTokensCol": "Cached", "cacheCreation": "Creation", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "trend24h": "Динаміка кешування (24 год)", + "peakCached": "Пікове кешування", + "cached": "Кешовано", + "overview": "Огляд", "tableProvider": "Провайдер", "tableModel": "Модель", "performanceTitle": "Продуктивність", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "Власний детермінований кеш відповідей OmniRoute. Коли його ввімкнено, повторні непотокові запити з temperature=0 можуть оброблятися локально без звернення до зовнішнього провайдера.", + "semanticCacheDisabledDesc": "Семантичний кеш вимкнено. OmniRoute не використовуватиме локальні відповіді повторно, доки ви не ввімкнете його знову в налаштуваннях.", + "semanticEntriesDesc": "Збережені записи семантичного кешу, які наразі містяться в SQLite. Активність кешування промптів на стороні провайдера тут не відображається.", + "searchEntries": "Пошук записів...", + "search": "Пошук", + "loading": "Завантаження...", + "entriesLoadError": "Не вдалося завантажити записи семантичного кешу.", + "noEntries": "Записів кешу не знайдено", + "noPromptCacheData": "Активності кешу промптів на стороні провайдера ще не зафіксовано.", + "noTrendData": "За останні 24 години активності кешу промптів не зафіксовано.", + "signature": "Підпис", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "Створено", + "expires": "Термін дії", + "actions": "Дії", + "deduplicatedRequests": "Дедупліковані запити", + "savedCalls": "Заощаджені виклики API", + "totalProcessed": "Усього оброблено запитів", + "disabled": "Вимкнено", + "totalRequests": "Усього запитів", "reasoningCache": "Міркування Повторення", "reasoningCacheDesc": "Зберігає модель мислення для потоків виклику багатооборотного інструменту", "reasoningEntries": "Активні записи", @@ -10669,7 +10676,7 @@ "minutesAgo": "{minutes} хв тому", "hoursAgo": "{hours} год тому", "daysAgo": "{days} дн тому", - "entries": "Entries" + "entries": "Записи" }, "proxyConfigModal": { "levelGlobal": "Глобальний", @@ -10683,7 +10690,7 @@ "inheritingFrom": "Успадкування від", "source": "Джерело", "savedProxy": "Збережений проксі", - "custom": "Custom", + "custom": "Власний", "selectSavedProxyPlaceholder": "Виберіть збережений проксі...", "proxyType": "Тип проксі", "host": "Хост", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Підключіть Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Увійти через Cursor", + "tabImport": "Імпортувати токен", + "loginDescription": "Відкриває сторінку входу Cursor у браузері. Працює в Docker — підтвердьте в браузері хоста, а потім поверніться сюди.", + "loginWithCursor": "Увійти через Cursor", + "startingLogin": "Запуск…", + "waitingApproval": "Очікування підтвердження входу в Cursor…", + "openUrlHint": "Якщо браузер не відкрився:", + "openLoginLink": "Відкрити сторінку входу", + "cancelLogin": "Скасувати вхід", "autoDetecting": "Автоматичне визначення токенів...", "readingFromCursor": "Читання з Cursor IDE або cursor-agent", "tokensAutoDetected": "Маркери успішно автоматично виявлені в Cursor IDE!", "cursorNotDetected": "Курсор IDE не виявлено. Вставте маркер вручну.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Працюєте в Docker? Радимо скористатися входом через Cursor. Автоімпорт з IDE та cursor-agent зазвичай недоступні всередині контейнера. Див. docs/providers/CURSOR-DOCKER.md.", "accessToken": "Маркер доступу", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Токен оновлення", + "refreshTokenPlaceholder": "Необов’язково — дає змогу автоматично оновлювати токен", "required": "*", "accessTokenPlaceholder": "Маркер доступу буде заповнено автоматично...", "machineId": "ID машини", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "Помилка автоматичного визначення маркерів", "errorEnterToken": "Будь ласка, введіть маркер доступу", "errorImportFailed": "Помилка імпорту", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Не вдалося розпочати вхід через Cursor", + "errorLoginPoll": "Не вдалося ввійти через Cursor", + "errorLoginTimeout": "Час очікування входу через Cursor минув — спробуйте ще раз" }, "pricingModal": { "title": "Конфігурація ціни", @@ -10843,9 +10850,9 @@ "selectProxy": "Вибрати {name}", "title": "Title", "description": "Description", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", + "importLegacy": "Імпортувати застарілі дані", + "bulkAssign": "Масове призначення", + "addProxy": "Додати проксі", "loading": "Loading", "noProxies": "No Proxies", "tableName": "Table Name", @@ -10854,9 +10861,9 @@ "tableHealth": "Table Health", "tableUsage": "Table Usage", "tableActions": "Table Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", + "test": "Тест", + "edit": "Редагувати", + "delete": "Видалити", "modalCreateTitle": "Modal Create Title", "modalEditTitle": "Modal Edit Title", "labelName": "Label Name", @@ -10906,7 +10913,7 @@ "errorBulkFailed": "Error Bulk Failed", "success": "✓", "failure": "✗", - "failed": "Failed", + "failed": "Не вдалося", "successRate": "{rate}% успіху", "avgLatency": "{latency} мс в середньому", "assignmentsCount": "{count} завдань", @@ -10942,7 +10949,7 @@ "batchSelectedCount": "{count} вибрано", "batchDeleteSelected": "Видалити {count} вибраних", "batchActivateSelected": "Увімкнути {count} вибраних", - "testPassed": "✓ OK", + "testPassed": "✓ Гаразд", "close": "Закрити", "managePool": "Керувати пулом", "poolTitle": "Пул проксі та ротація", @@ -10955,15 +10962,15 @@ "poolStrategyLabel": "Стратегія ротації", "poolStrategyHint": "round-robin перебирає учасників по черзі; random вибирає рівномірно; sticky утримує одного учасника протягом вікна; latency-optimized вибирає найшвидшого на основі журналів.", "poolStrategyFailed": "Не вдалося оновити стратегію ротації", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Циклічний розподіл", "strategyRandom": "Випадковий", - "strategySticky": "Sticky", + "strategySticky": "Закріплений", "strategyLatency": "Оптимізований за затримкою", "poolMembersLabel": "Учасники пулу ({count})", "poolNoMembers": "У цьому пулі ще немає проксі.", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "Використано {exits, plural, one {# вихід} few {# виходи} many {# виходів} other {# виходу}} для {connections, plural, one {# з’єднання} few {# з’єднань} many {# з’єднань} other {# з’єднання}} · до {max} на одному виході · за останні {hours} год", + "poolEgressObservationEmpty": "За останні {hours} год трафіку не виявлено", + "poolEgressObservationHint": "Підраховано за журналом проксі протягом цього періоду: унікальні вихідні IP-адреси, виявлені для учасників цього пулу, і з’єднання OmniRoute, які їх використовували. «На одному виході» означає протягом цього періоду, а не одночасно. Блокування 429 для окремої IP-адреси призупиняє лише з’єднання тієї самої родини постачальників.", "poolRemove": "Видалити", "poolRemoveFailed": "Не вдалося видалити проксі з пулу", "poolAddLabel": "Додати проксі", @@ -10975,94 +10982,94 @@ "playground": { "title": "Title", "description": "Description", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", + "endpoint": "Кінцева точка", + "provider": "Провайдер", + "model": "Модель", "accountKey": "Account Key", "autoAccounts": "Автоматично ({count} облікових записів)", "noAccounts": "No Accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", + "send": "Надіслати", + "cancel": "Скасувати", + "audioFile": "Аудіофайл", "attachImages": "Attach Images", "multipartFormData": "Multipart Form Data", "upToImages": "Up To Images", "selectAudioFile": "Select Audio File", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", + "clearAll": "Очистити все", + "request": "Запит", + "response": "Відповідь", + "transcription": "Транскрипція", + "copy": "Копіювати", "resetToDefault": "Reset To Default", "downloadAudio": "Download Audio", "copyText": "Copy Text", "transcriptionHint": "Transcription Hint", "imagesGenerated": "Згенеровано {count} зображень", "generatedImage": "Створене зображення {index}", - "save": "Save", + "save": "Зберегти", "endpointOptions": { "chat": "Chat", - "responses": "Responses", + "responses": "Відповіді", "completions": "Доповнення", "images": "Images", - "embeddings": "Embeddings", + "embeddings": "Вбудовування", "speech": "Speech", "transcription": "Transcription", "video": "Video", "music": "Music", "moderations": "Модерація", - "rerank": "Rerank", + "rerank": "Переранжування", "search": "Search", "webFetch": "Отримання веб-даних" }, "conversationalChat": "Розмовний чат", "clearChat": "Очистити чат", "typeMessagePlaceholder": "Введіть повідомлення... (Shift+Enter для нового рядка)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "Чат", + "tabCompare": "Порівняти", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "Збірка", + "configPane": "Конфігурація", + "systemPrompt": "Системна підказка", + "systemPromptPlaceholder": "Ви — корисний асистент.", + "modelPlaceholder": "напр. openai/gpt-4o", + "endpointLabel": "Кінцева точка", + "parametersLabel": "Параметри", + "collapseConfig": "Згорнути панель конфігурації", + "expandConfig": "Розгорнути панель конфігурації", + "temperature": "Температура", + "maxTokens": "Максимальна кількість токенів", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "Штраф за наявність", + "frequencyPenalty": "Штраф за частоту", "reasoningLabel": "Міркування", "thinking": "Міркування", "effort": "Зусилля", "effortDefault": "За замовчуванням", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "Випадково (залиште порожнім)", + "presetsLabel": "Пресети", + "loadPreset": "Завантажити пресет", + "savePreset": "Зберегти пресет", + "noPresets": "Немає пресетів", + "presetNamePlaceholder": "Назва пресету", + "savingPreset": "Збереження…", + "nameRequired": "Назва обов’язкова", + "failedToSavePreset": "Не вдалося зберегти пресет", + "improvePrompt": "Покращити промпт", + "improvingPrompt": "Покращення…", + "improvePromptTitle": "Покращте свій промпт за допомогою ШІ", + "setModelFirst": "Спочатку виберіть модель", "setModelInConfigFirst": "Спочатку виберіть модель на панелі конфігурації.", "improvePromptFailed": "Не вдалося покращити промпт.", "improvePromptAria": "Покращити промпт за допомогою ШІ", "confirmImprovePrompt": "Підтвердити покращення промпту", "improvePromptDescription": "Це надішле ваш поточний системний промпт до , щоб згенерувати покращену версію.", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "Це використає квоту моделі, налаштованої в Config.", + "improveConfirm": "Покращити", + "exportCode": "Експортувати код", + "exportCodeTitle": "Експортувати код", "exportShort": "Експорт", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "Немає стану пісочниці, доступного для експорту.", "closeExportModal": "Закрити модальне вікно експорту", "close": "Закрити", "exportRealKeyWarning": "Попередження системи безпеки: експорт заблоковано — у вихідних даних виявлено справжній ключ API. Будь ласка, скиньте свій ключ API та спробуйте знову.", @@ -11071,13 +11078,13 @@ "copyLangCode": "Копіювати код {language}", "loadingPresets": "Завантаження…", "loadPresetPlaceholder": "Завантажити пресет…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "Копіювати", + "copiedCode": "Скопійовано!", + "addModel": "+ Додати модель", + "runAll": "Запустити все", + "cancelAll": "Скасувати все", + "maxColumnsReached": "Максимум стовпців: {max}", + "modelPlaceholderCompare": "Модель (Cmd+K)…", "noModel": "Немає моделі", "statusLabel": "Статус: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "Очікування відповіді…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "оцінка на боці клієнта", + "tokensLabel": "Токени", + "costLabel": "Вартість", + "costEstimated": "(орієнтовно)", "ttftTitle": "Час до першого токена (оцінка на стороні клієнта)", "tpsTitle": "Токенів за секунду (оцінка на стороні клієнта)", "tokenCountsTitle": "Токени промпту ↑ / Токени завершення ↓", "estimatedCostTitle": "Орієнтовна вартість (точність не гарантується)", - "toolsLabel": "Tools", + "toolsLabel": "Інструменти", "toolsCount": "Інструменти ({count})", - "addTool": "Add tool", + "addTool": "Додати інструмент", "editTool": "Редагувати інструмент {name}", "removeTool": "Видалити інструмент {name}", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "Назва функції", "toolNameRequiredPlaceholder": "Назва функції *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "Опис (необов’язково)", "toolParamsLabel": "Параметри (схема JSON)", "toolParamsJsonSchema": "Схема JSON для параметрів", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "Параметри мають бути дійсним JSON", + "structuredOutputLabel": "Структурований вивід", + "enableJsonMode": "Увімкнути режим JSON", + "disableJsonMode": "Вимкнути режим JSON", + "invalidJson": "Недійсний JSON", "jsonMode": "Режим JSON", "jsonModeDescription": "Примусово встановлює response_format: json_schema", "schemaName": "Назва схеми", @@ -11125,7 +11132,7 @@ "jsonSchemaEditor": "Редактор схеми JSON", "schemaValidated": "Схему перевірено", "validateSchema": "Перевірити схему", - "seed": "Seed", + "seed": "Початкове значення", "stopSequences": "Послідовності зупинки", "stopSequencesPlaceholder": "наприклад, \"\\n\\n\" або \"END\"", "autoProvider": "Авто", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} стовпців", "addModelToCompare": "Додати стовпець моделі для порівняння", "modelsSimultaneously": "До {max} моделей одночасно", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "Виконується…", + "runLabel": "Запустити", + "enterToolResult": "Введіть результат інструмента…", "build": { "step1Label": "Що протестувати?", "step2Label": "Налаштувати", @@ -11250,73 +11257,73 @@ "stop": "Зупинити" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", - "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "recording": "Записування", + "paused": "Призупинено", + "pipelineLogsOn": "Журналювання конвеєра ввімкнено", + "pipelineLogsOff": "Журналювання конвеєра вимкнено", + "updatingPipelineLogs": "Оновлення журналювання конвеєра...", + "updatePipelineFailed": "Не вдалося оновити журналювання конвеєра", + "capturePipeline": "Зберігати дані конвеєра для нових запитів", + "searchPlaceholder": "Пошук моделей, провайдерів, облікових записів, ключів API, комбінацій...", + "allProviders": "Усі провайдери", + "allModels": "Усі моделі", + "allAccounts": "Усі облікові записи", + "allApiKeys": "Усі ключі API", + "total": "Усього", + "ok": "Успішно", + "err": "Помилка", + "combo": "Комбінація", + "keys": "Ключі", + "shown": "Показано", + "sortNewest": "Найновіші", + "sortOldest": "Найстаріші", + "sortTokensDesc": "Токени ↓", + "sortTokensAsc": "Токени ↑", + "sortDurationDesc": "Тривалість ↓", + "sortDurationAsc": "Тривалість ↑", + "sortStatusDesc": "Статус ↓", + "sortStatusAsc": "Статус ↑", + "sortModelAsc": "Модель А–Я", + "sortModelDesc": "Модель Я–А", + "sortLogs": "Сортувати журнали", + "refresh": "Оновити", + "columnsLabel": "Стовпці", + "cacheSem": "СЕМ", + "cacheUp": "АП", + "semantic": "Семантичний", + "upstream": "Вихідний", + "semanticCacheHit": "Збіг у семантичному кеші (обслуговано OmniRoute)", + "upstreamResponse": "Відповідь вихідного провайдера", + "noApiKey": "Немає ключа API", + "requestedRoutedTitle": "Запитано {requested}, спрямовано як {routed}", "statusFilters": { - "all": "All", + "all": "Усі", "error": "Errors", - "success": "Success", - "combo": "Combo" + "success": "Успішно", + "combo": "Комбінація" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "Статус", + "cacheSource": "Джерело кешу", + "model": "Модель", + "requested": "Запитано", + "provider": "Провайдер", + "protocol": "Протокол запиту", + "account": "Обліковий запис", + "apiKey": "Ключ API", + "combo": "Комбінація", + "tokens": "Токени", "compressed": "Компресія", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "Тривалість", + "time": "Час", + "conversation": "Розмова", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "Завантаження журналів...", + "noLogs": "Журналів поки немає. Зробіть кілька викликів API, щоб побачити їх тут.", + "noMatchingLogs": "Немає журналів, що відповідають поточним фільтрам.", + "callLogsInfo": "Журнали викликів також зберігаються як файли JSON у {dataDir} і ротуються відповідно до {retentionDays} та {maxEntries}.", "loadMore": "Завантажити ще", "loadingMore": "Завантаження...", "correlationId": "Ідентифікатор кореляції", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "Детальний артефакт корисного навантаження більше недоступний для цього запису журналу.", "payloadCorrupt": "Не вдалося розібрати детальний артефакт корисного навантаження.", - "notAvailable": "N/A", + "notAvailable": "Н/Д", "semanticCache": "Семантичний (OmniRoute)", "upstreamCache": "Верхній рівень (Постачальник)", "ariaLabel": "Деталі журналу запитів", @@ -11417,59 +11424,59 @@ "correlationId": "Ідентифікатор кореляції", "correlationIdValue": "Ідентифікатор кореляції: {id}", "detailedPayloadInfo": "Спочатку увімкніть детальне ведення журналів, якщо ви хочете перегляд чотирьохетапного навантаження клієнта/постачальника для нових запитів.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Копіювати все", + "copiedAll": "Усе скопійовано" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "Усі", + "filterErrors": "Помилки", + "filterSuccess": "Успішні", + "filterTimeout": "Час очікування минув", + "colStatus": "Статус", + "colProxy": "Проксі", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "Тип", + "colLevel": "Рівень", + "colProvider": "Провайдер", + "colTarget": "Ціль", + "colLatency": "Затримка", + "colClientIp": "IP клієнта", + "colTime": "Час", + "recording": "Запис", + "paused": "Призупинено", + "searchPlaceholder": "Пошук за хостом, провайдером, ціллю, IP...", + "allTypes": "Усі типи", + "allLevels": "Усі рівні", + "allProviders": "Усі провайдери", + "total": "усього", + "ok": "Гаразд", + "err": "ПОМИЛКА", + "timeoutShort": "ТАЙМ-АУТ", + "direct": "напряму", + "newest": "Найновіші", + "oldest": "Найстаріші", + "latencyDesc": "Затримка ↓", + "latencyAsc": "Затримка ↑", + "refresh": "Оновити", + "columns": "Стовпці", + "loadingProxyLogs": "Завантаження журналів проксі...", + "noProxyLogs": "Журналів проксі ще немає. Налаштуйте проксі та виконайте виклики API, щоб побачити їх тут.", + "noMatchingLogs": "Немає журналів, що відповідають поточним фільтрам.", + "tlsFingerprint": "Відбиток TLS Chrome 124", "colPublicIp": "Публічна IP-адреса" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", + "speech": "Мовлення", + "search": "Пошук", + "images": "Зображення", + "chat": "Чат", + "music": "Музика", + "responses": "Відповіді", + "rerank": "Переранжування", + "video": "Відео", "embeddings": "Вбудовування", - "transcription": "Transcription" + "transcription": "Транскрипція" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "Середовище виконання", + "description": "Спостережуваність у реальному часі — 3-рівнева відмовостійкість + сеанси + сповіщення про квоти", + "pause": "Призупинити", + "resume": "Відновити", + "refreshNow": "Оновити зараз", + "kpiSessions": "Сеанси", + "kpiCircuits": "Запобіжники", + "kpiCooldowns": "Періоди очікування", + "kpiLockouts": "Блокування", + "hintStickyBound": "{count} із закріпленням", + "hintRecovering": "{count} відновлюються", + "hintAllHealthy": "усі справні", + "hintOpen": "відкрито", + "hintConnsCooling": "з’єднання на паузі", + "hintModelsBlocked": "моделі заблоковано", + "resilienceTitle": "3-рівнева відмовостійкість", + "resilienceSubtitle": "Відтворює задокументовану модель відмовостійкості", + "providersHealthy": "{percent}% провайдерів справні", + "layer": "Рівень {n}", + "layer1Title": "Запобіжники провайдерів", + "layer1Desc": "Зупиняють трафік до провайдерів, у яких виникають збої на рівні висхідного сервісу", + "layer2Title": "Періоди очікування з’єднань", + "layer2Desc": "Пропускають один несправний обліковий запис або ключ; інші з’єднання продовжують обслуговування", + "layer3Title": "Блокування моделей", + "layer3Desc": "Блокування через обмеження частоти запитів для окремих моделей; те саме з’єднання й надалі обслуговує інші моделі", + "badgeAffectedOf": "зачеплено {affected} із {total}", + "badgeCooling": "{count} на паузі", + "badgeLocked": "{count} заблоковано", + "emptyCircuits": "Активних запобіжників поки немає", + "emptyCooldowns": "Немає активних періодів очікування з’єднань", + "emptyLockouts": "Немає блокувань моделей", + "moreCooldowns": "+ще {count} періодів очікування", + "moreLockouts": "+ще {count} блокувань", + "feedTitle": "Стрічка наживо", + "feedSubtitle": "Останні {count} подій", + "feedFilterAll": "Усі", + "feedFilterCircuits": "Запобіжники", + "feedFilterCooldowns": "Періоди очікування", + "feedFilterLockouts": "Блокування", + "feedFilterSessions": "Сеанси", + "feedFilterQuotas": "Квоти", + "feedClear": "Очистити", + "feedEmptyWaiting": "Очікування подій... (опитування кожні 5 с)", + "feedEmptyFiltered": "Немає подій, що відповідають цьому фільтру", + "sessionsTitle": "Активні сеанси", + "sessionsSubtitle": "Закріплені відбитки запитів (наживо)", + "sessionsActive": "Активних: {count}", + "sessionsEmptyTitle": "Немає активних сеансів", + "sessionsEmptyHint": "Сеанси з’являються в міру проходження запитів через проксі", + "tblSession": "Сеанс", + "tblAge": "Вік", + "tblIdle": "Бездіяльність", + "tblReqs": "Запити", + "tblBoundTo": "Прив’язано до", + "topApiKeys": "Найактивніші ключі API", + "quotaMonitorsTitle": "Монітори квот", + "quotaMonitorsSubtitle": "Поточний стан квоти для кожного вікна облікового запису", + "openQuota": "Відкрити квоту", + "allQuotasHealthy": "Усі квоти в нормі", + "statusExhausted": "ВИЧЕРПАНО", + "statusAlerting": "ПОПЕРЕДЖЕННЯ", + "statusError": "ПОМИЛКА", + "moreSuffix": "Ще +{count}" }, "quotaShare": { "weightPercent": "Вага %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "Спільне використання квот", + "description": "Розподіляйте квоти провайдерів між ключами API за допомогою відсоткових лімітів", + "newPool": "Новий пул", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "Конфігурація зберігається в localStorage (ще не зберігається на сервері). Обмеження ліміту для кожного запиту ще не підключено до конвеєра проксі. На цьому екрані можна спроєктувати й візуалізувати розподіл квоти; фактичне застосування обмежень буде реалізовано в майбутній ітерації зі збереженням у БД та перехопленням вихідних викликів.", + "kpiActivePools": "Активні пули", + "kpiKeysAllocated": "Розподілені ключі", + "kpiAvgUnallocated": "Середній нерозподілений обсяг", + "kpiProvidersWithQuota": "Провайдери з квотою", + "emptyTitle": "Пули не налаштовано", + "emptyDescription": "Створіть пул, щоб призначити ключі API для спільного використання вікна квоти провайдера з відсотковим розподілом.", + "loading": "Завантаження…", + "removePool": "Видалити пул", + "removeConfirm": "Видалити цей пул?", + "pool": "Пул", + "used": "використано", + "allocationsCount": "Розподіли ({count})", + "allocatedFree": "розподілено {allocated}% · вільно {free}%", + "noAllocations": "Ключі ще не розподілено", + "capLabel": "ліміт {value}", + "notTrackedYet": "(ще не відстежується)", + "policy": "Політика", "apiKeyColumn": "Ключ API", "weightColumn": "Вага", "fairShareShort": "справедливий", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "жорстка", + "policySoft": "м’яка", + "policyBurst": "пікова", + "policyHardHint": "Блокувати, коли ключ вичерпує виділену квоту", + "policySoftHint": "Дозволити перевищення, лише сповіщати", + "policyBurstHint": "Дозволити пікове використання вільного пулу", + "editAllocations": "Редагувати розподіли", + "newPoolTitle": "Новий пул квот", + "providerConnection": "Підключення провайдера (обліковий запис)", + "selectConnection": "Виберіть підключення…", + "noEligibleConnections": "Немає підключень із даними про квоти. Спочатку оновіть дані на /dashboard/quota.", + "quotaWindow": "Період квоти", + "selectWindow": "Виберіть період…", + "alreadyUsedSuffix": "(уже використовується)", + "windowReset": "Скидання", + "duplicatePoolError": "Пул для цього підключення та періоду вже існує", + "cancel": "Скасувати", + "createPool": "Створити пул", + "editTitle": "Редагувати розподіли", + "noKeysAdded": "Ключі не розподілено. Додайте ключ нижче.", + "totalLabel": "Усього: {percent}%", + "totalExceeded": "⚠ перевищує 100%", + "addKey": "+ Додати ключ…", + "equalSplit": "Розподілити порівну", + "save": "Зберегти розподіли", "betaPreviewLabel": "Бета — попередній перегляд інтерфейсу користувача.", "betaConfigSavedPrefix": "Конфігурація збережена в", "betaConfigSavedSuffix": "(ще не зберігається на сервері). Застосування обмеження на запит ще не підключено до проксі-каналу. Цей екран дозволяє спроектувати та візуалізувати розподіл квот; реальне застосування буде досягнуто в майбутній ітерації з постійністю БД і перехопленням викликів.", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "Базова URL-адреса", "endpointsCollapse": "Згорнути", "endpointsExpand": "Розгорнути", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Нативний Anthropic", "endpointsResponsesNote": "Відповіді OpenAI — codex/github", "endpointsWsNote": "WebSocket — тільки codex", "betaText": "Розподіл квот працює, але можливі помилки. Знайшли одну? Будь ласка, повідомте про неї.", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "Ця група все ще має пули — спочатку перепризначте або видаліть їх.", "ungroupedTitle": "Без групи", "ungroupedHint": "Ці пули не призначені до жодної відомої групи. Відредагуйте пул, щоб перемістити його в реальну групу.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Не вдалося видалити цей пул.", + "dismiss": "Закрити" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "Плагіни", + "description": "Установлюйте плагіни для розширення функціональності OmniRoute і керуйте ними", + "loading": "Завантаження плагінів...", + "scanning": "Сканування...", + "scanForPlugins": "Сканувати плагіни", + "noPlugins": "Плагіни не встановлено", + "noPluginsDescription": "Розмістіть каталоги плагінів у ~/.omniroute/plugins/ і натисніть «Сканувати».", + "activate": "Активувати", + "deactivate": "Деактивувати", + "uninstall": "Видалити", + "uninstallConfirm": "Видалити плагін «{name}»?", + "pluginScanComplete": "Сканування плагінів завершено", + "pluginScanFailed": "Не вдалося просканувати плагіни", + "activated": "{name} активовано", + "deactivated": "{name} деактивовано", + "activateFailed": "Не вдалося активувати {name}", + "deactivateFailed": "Не вдалося деактивувати {name}", + "uninstalled": "{name} видалено", + "uninstallFailed": "Не вдалося видалити {name}", + "configure": "Налаштувати: {name}", + "configurePlugin": "Налаштувати", + "noConfigSettings": "Цей плагін не має параметрів для налаштування.", + "saving": "Збереження...", + "saveConfiguration": "Зберегти конфігурацію", + "configurationSaved": "Конфігурацію збережено", + "saveConfigurationFailed": "Не вдалося зберегти конфігурацію", + "pluginNotFound": "Плагін не знайдено", + "version": "Версія", + "author": "Автор", + "description_label": "Опис", + "status": "Стан", + "enabled": "Увімкнено", + "disabled": "Вимкнено", "installedTab": "Встановлено", "marketplaceTab": "Маркетплейс", "marketplaceUrlLabel": "Спеціальна URL-адреса маркетплейсу", @@ -11729,7 +11736,7 @@ "verified": "Перевірено", "install": "Встановити", "installedFromMarketplace": "Плагін {name} встановлено!", - "hooks": "Hooks" + "hooks": "Хуки" }, "quotaPlans": { "title": "Тарифні плани та квоти", @@ -12057,7 +12064,7 @@ "resumeBtn": "Відновити", "clearBtn": "Очистити", "exportHar": "Експортувати .har", - "recordSession": "REC", + "recordSession": "ЗАПИС", "stopSession": "Зупинити", "liveBadge": "наживо", "offlineBadge": "офлайн", @@ -12165,21 +12172,21 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "Код CLI", "phrase": "Інструменти для коду, які ви спрямовуєте на OmniRoute", "flow": "Ви → CLI Code → OmniRoute → Провайдер", "seeOther": "Переглянути →" }, "agent": { - "title": "CLI Agents", + "title": "Агенти CLI", "phrase": "Автономні CLI-агенти широкого призначення, які ви спрямовуєте на OmniRoute", "flow": "Ви → CLI Agent → OmniRoute → Провайдер", "seeOther": "Переглянути →" }, "acp": { - "title": "ACP Agents", + "title": "Агенти ACP", "phrase": "CLI, які OmniRoute запускає як бекенд виконання (зворотний потік)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "Більшість користувачів можуть це ігнорувати — використовуйте лише тоді, коли цього вимагає інтеграція.", "flow": "Клієнт → OmniRoute → запуск CLI (stdio/ACP) → відповідь", "seeOther": "Див. →" } @@ -12234,7 +12241,7 @@ "detectionStatus": "Виявлення", "configStatus": "Налаштування", "baseUrlLabel": "Базова URL-адреса", - "apiKeyLabel": "API Key", + "apiKeyLabel": "Ключ API", "modelMappingLabel": "Мапінг моделей", "noActiveProviders": "Немає активних провайдерів.", "noActiveProvidersDesc": "Перейдіть до розділу «Провайдери», щоб підключити принаймні 1 провайдера перед налаштуванням CLI.", @@ -12347,7 +12354,7 @@ }, "omni-context-rtk": { "name": "Контекст та RTK", - "description": "Configure RTK filters, context engineering rules, and context relay settings. Test compression with real prompt samples and manage context transformation pipelines." + "description": "Налаштовуйте фільтри RTK, правила конструювання контексту та параметри передавання контексту. Тестуйте стиснення на реальних прикладах запитів і керуйте конвеєрами перетворення контексту." }, "omni-resilience": { "name": "Відмовостійкість та моніторинг", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Вебхуки", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "Реєструйте, переглядайте, тестуйте та видаляйте кінцеві точки вебхуків. Налаштовуйте підписки на події (request.completed, request.failed, quota.exceeded тощо) і керуйте повторними спробами доставки." }, "omni-mcp": { "name": "Сервер MCP", @@ -12390,43 +12397,43 @@ "description": "Основні сумісні з OpenAI кінцеві точки інференсу: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank та Responses API. Головний інтерфейс інтеграції для AI-агентів." }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: запуск сервера", "description": "Запускайте, зупиняйте та перезапускайте сервер OmniRoute з CLI. Керуйте режимом демона, конфігурацією портів, автовідновленням, інтеграцією з системним треєм та комбінацією клавіш для відкриття панелі керування." }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: стан системи", "description": "Перевіряйте працездатність сервера, статус компонентів та метрики в реальному часі з CLI. Запускайте `health`, `health components` та `health watch` для перегляду панелі запобіжників та статусу провайдерів у реальному часі." }, "cli-providers": { - "name": "CLI: Providers", + "name": "CLI: провайдери", "description": "Керуйте підключеннями провайдерів з CLI: переглядайте список доступних/налаштованих провайдерів, додавайте, тестуйте, тестуйте всі, перевіряйте, ротуйте API-ключі та переглядайте метрики для кожного провайдера." }, "cli-keys": { - "name": "CLI: API Keys", + "name": "CLI: ключі API", "description": "Створюйте, переглядайте, ротуйте та відкликайте API-ключі OmniRoute з CLI. Керуйте процесами OAuth для автентифікації провайдерів та перевіряйте області дії та термін дії ключів." }, "cli-models": { - "name": "CLI: Models", + "name": "CLI: моделі", "description": "Запитуйте доступні моделі ШІ, переглядайте список псевдонімів моделей та повний каталог моделей з CLI. Фільтруйте за провайдером, шукайте за можливостями та зіставляйте варіанти назв моделей." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: чат", "description": "Надсилайте відповіді чату (chat completions), отримуйте відповіді потоком та запускайте інтерактивну сесію REPL з CLI. Підтримує всіх провайдерів OmniRoute, комбіновану маршрутизацію та налаштування системного промпту." }, "cli-routing": { - "name": "CLI: Routing & Combos", + "name": "CLI: маршрутизація та комбінації", "description": "Створюйте, переглядайте, оновлюйте та видаляйте комбінації маршрутизації з CLI. Тестуйте стратегії маршрутизації, перевіряйте метрики комбінацій та інтерактивно налаштовуйте ланцюжки резервних варіантів (fallback)." }, "cli-resilience": { - "name": "CLI: Resilience & Quotas", + "name": "CLI: відмовостійкість і квоти", "description": "Перевіряйте та керуйте станами запобіжників, періодами охолодження з'єднань, лімітами квот та рівнями відкату з CLI. Скидайте завислі провайдери та налаштовуйте пороги відмовостійкості." }, "cli-compression": { - "name": "CLI: Compression", + "name": "CLI: стиснення", "description": "Налаштовуйте та тестуйте стиснення промптів з CLI. Керуйте RTK-фільтрами, правилами Caveman, режимами каскадного стиснення та переглядайте результат стиснення на реальних промптах." }, "cli-contexts": { - "name": "CLI: Contexts & Sessions", + "name": "CLI: контексти та сеанси", "description": "Керуйте конфігураціями контекстної інженерії, наборами фільтрів RTK та сесіями розмов через CLI. Застосовуйте налаштування ретрансляції контексту та інспектуйте активні конвеєри контексту." }, "cli-cost-usage": { @@ -12497,71 +12504,71 @@ }, "comparison": { "colAgent": "Навички агентів", - "colOmni": "Omni Skills", + "colOmni": "Навички Omni", "whatIs": { "label": "Що це таке", "agent": "Машинозчитуваний файл SKILL.md, який навчає зовнішнього агента керувати OmniRoute", "omni": "Виконувані інструменти, які OmniRoute додає як інструменти до запитів LLM" }, "direction": { - "label": "Direction", - "agent": "Outbound — external agent learns to control OmniRoute", - "omni": "Inbound — OmniRoute gives tools to models passing through it" + "label": "Напрямок", + "agent": "Вихідний — зовнішній агент навчається керувати OmniRoute", + "omni": "Вхідний — OmniRoute надає інструменти моделям, що проходять через нього" }, "executor": { - "label": "Executor", - "agent": "External agent (reads markdown → acts via API/CLI)", - "omni": "OmniRoute itself (intercepts tool_calls, Docker sandbox)" + "label": "Виконавець", + "agent": "Зовнішній агент (читає markdown → діє через API/CLI)", + "omni": "Сам OmniRoute (перехоплює tool_calls, пісочниця Docker)" }, "storage": { - "label": "Storage", - "agent": "Dynamic catalog (/api/agent-skills) → SKILL.md on GitHub", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "label": "Сховище", + "agent": "Динамічний каталог (/api/agent-skills) → SKILL.md на GitHub", + "omni": "SQLite (SkillsMP / skills.sh / локальне)" }, "tagline": { - "label": "Tagline", - "agent": "Teach your agent to use OmniRoute", - "omni": "Give executable tools to OmniRoute models" + "label": "Слоган", + "agent": "Навчіть свого агента використовувати OmniRoute", + "omni": "Надайте виконувані інструменти моделям OmniRoute" } } }, "filters": { - "category": "Category", - "area": "Area", - "searchPlaceholder": "Search skills…" + "category": "Категорія", + "area": "Область", + "searchPlaceholder": "Пошук навичок…" }, "categoryApi": "API", "categoryCli": "CLI", - "categoryConfig": "Config", - "filterAll": "All", - "coverageLabel": "Coverage", - "mcpUrl": "MCP URL", + "categoryConfig": "Конфігурація", + "filterAll": "Усі", + "coverageLabel": "Покриття", + "mcpUrl": "URL MCP", "a2aLink": "A2A", - "mcpPrompt": "Add this MCP endpoint to your agent to give it 37 OmniRoute tools.", - "a2aPrompt": "Register this Agent Card with your orchestrator to enable A2A task delegation.", - "refresh": "Refresh", - "copyUrl": "Copy URL", - "viewOnGithub": "View on GitHub", - "previewLoading": "Loading skill documentation…", - "previewError": "Failed to load skill documentation.", - "previewEmpty": "Select a skill to preview its documentation.", - "generateButton": "Generate missing skills", + "mcpPrompt": "Додайте цю кінцеву точку MCP до свого агента, щоб надати йому 37 інструментів OmniRoute.", + "a2aPrompt": "Зареєструйте цю картку агента у своєму оркестраторі, щоб увімкнути делегування завдань A2A.", + "refresh": "Оновити", + "copyUrl": "Копіювати URL", + "viewOnGithub": "Переглянути на GitHub", + "previewLoading": "Завантаження документації навички…", + "previewError": "Не вдалося завантажити документацію навички.", + "previewEmpty": "Виберіть навичку, щоб переглянути її документацію.", + "generateButton": "Згенерувати відсутні навички", "coverageBar": { - "complete": "Complete", - "partial": "Partial" + "complete": "Повні", + "partial": "Часткові" }, - "noSkillsFound": "No skills found matching your filters.", - "regenerateConfirm": "This will regenerate all missing SKILL.md files. Continue?", - "regenerateRunning": "Regenerating skills…", - "regenerateSuccess": "Skills regenerated successfully.", - "regenerateError": "Failed to regenerate skills." + "noSkillsFound": "Навичок, що відповідають вашим фільтрам, не знайдено.", + "regenerateConfirm": "Усі відсутні файли SKILL.md буде згенеровано повторно. Продовжити?", + "regenerateRunning": "Повторне генерування навичок…", + "regenerateSuccess": "Навички успішно згенеровано повторно.", + "regenerateError": "Не вдалося повторно згенерувати навички." }, "freeProviderRankingsPage": { - "title": "Free Provider Rankings", - "subtitle": "Best free providers ranked by model ELO scores from Arena AI leaderboards", - "loading": "Loading rankings...", - "errorLoading": "Failed to load rankings", - "emptyState": "No rankings available yet. Arena ELO data syncs on startup (daily) — check back shortly, or trigger a manual sync. Disable Arena ELO Sync in Feature Flags or set ARENA_ELO_SYNC_ENABLED=false to opt out.", + "title": "Рейтинг безкоштовних провайдерів", + "subtitle": "Найкращі безкоштовні провайдери, упорядковані за показниками ELO моделей із таблиць лідерів Arena AI", + "loading": "Завантаження рейтингу...", + "errorLoading": "Не вдалося завантажити рейтинг", + "emptyState": "Рейтингів поки немає. Дані Arena ELO синхронізуються під час запуску (щодня) — перевірте трохи згодом або запустіть синхронізацію вручну. Щоб відмовитися, вимкніть синхронізацію Arena ELO у прапорцях функцій або встановіть ARENA_ELO_SYNC_ENABLED=false.", "bestModel": "Найкращі", "allCategories": "Усі категорії", "categoryDefault": "За замовчуванням", @@ -12589,14 +12596,14 @@ "typeApikey": "Ключ API", "sortTypeFirst": "Спочатку найпростіші", "sortTypeFirstHelp": "Групувати за зусиллями для реєстрації (Без реєстрації → Вхід через OAuth → Ключ API), зберігаючи порядок якості всередині кожної групи", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "Спочатку найнадійніші", + "sortByReliabilityHelp": "Упорядкувати провайдерів за часткою успішних викликів у вибраному часовому проміжку. Провайдери із замалою кількістю викликів для визначення показника зберігають порядок за оцінкою нижче тих, для яких показник виміряно.", "typeLegend": "Без реєстрації = нульове налаштування · Вхід через OAuth = увійдіть за допомогою власного облікового запису · Ключ API = використовуйте власний ключ або безкоштовний тарифний план цього провайдера", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "Надійність", + "colReliabilityHelp": "Частка викликів, на які цей провайдер фактично відповів за останні 24 години. Тире означає, що він обробив замало трафіку для визначення показника.", + "reliabilitySample": "За останні {hours} год успішно виконано {successes} із {requests} викликів", + "reliabilityTooFew": "За останні {hours} год було лише {requests} викликів — замало для визначення показника", + "reliabilityNoTraffic": "За останні 24 год викликів не зафіксовано" }, "discovery": { "title": "Виявлення провайдерів", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Спонсор Radar", + "description": "Перевірено активний канал даних спонсора OmniRoute Radar", + "criteria": "Перевірити підписаний активний канал даних спонсора Radar." }, "first-token": { "name": "Перший токен", @@ -12948,8 +12955,8 @@ "description": "Дозволити кілька з'єднань для кожного вузла сумісності." }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "Вимкнути перевірки контекстного вікна", + "description": "Пропускати локальну перевірку контекстного вікна та максимальної кількості вхідних токенів у OmniRoute для прямих запитів до однієї моделі. Провайдери вищого рівня все одно застосовують свої фактичні обмеження. Стиснення запиту й обмеження вихідних токенів залишаються активними." }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "Вилучати внутрішні елементи виводу фази коментарів із наскрізних потоків Responses API перед їх пересиланням клієнтам. Вимкніть цей прапорець, щоб отримувати необроблені коментарі з вихідного сервера." @@ -12985,7 +12992,7 @@ "description": "Дозволити відновленню потоку повторно запитувати відповідь і зшивати її після того, як байти вже дійшли до клієнта." }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "Зробити продовження посеред потоку безпечним для викликів інструментів: ніколи не відновлювати перерваний потік після надсилання виклику інструмента (який усе ще виконується або вже завершився) і зупинятися після одного порожнього продовження замість використання всього бюджету повторних спроб." }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "Одноразово перемкнутися на сусіднє підключення, якщо потік закрився, не надіславши жодного корисного фрейму, а обмежену повторну спробу на тому самому підключенні вичерпано. Якщо придатного сусіднього підключення немає, повертається початкова помилка early-EOF. Вимкнено: early-EOF залишається остаточним після повторної спроби." @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "Увімкнути доступ до мережі в пісочниці навичок." }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "Серверний цикл викликів інструментів", + "description": "Продовжувати непотокові серверні виклики інструментів, доки модель не поверне придатну для використання клієнтом відповідь." + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Походження Retry-After", + "description": "У зведених відповідях 429/503 про недоступність не додавати Retry-After, якщо конкретний майбутній час повторної спроби невідомий, замість надсилання штучного значення 1 с; додати error.retry_after_provenance і зчитувати текстові підказки щодо повторної спроби на шляхах спорожнення комбінацій." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "Зупинки інфраструктури із захищеним пріоритетом як 502", + "description": "Повертати відповідь 502 замість 503, коли пріоритетна ціль із резервним перемиканням лише в разі вичерпання квоти зупиняє комбінацію з причини, яка доведено не пов’язана з квотою: розімкнений автоматичний вимикач провайдера або пропуск через прогнозовану затримку." } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "Стан комбо", "callLogs": "Журнали викликів", "costs": "Витрати", - "playground": "Playground", + "playground": "Пісочниця", "nestedCombo": "Вкладене комбо", "modelTarget": "Цільова модель", "weight": "Вага {value}%", @@ -13171,7 +13182,7 @@ "segmentHint": "Кожен сегмент = один безкоштовний пул · дедуплікований пул, чесний підрахунок (без завищених лімітів частоти запитів).", "boost": "Розблокуйте ще ~{tokens}/міс за допомогою одноразового поповнення OpenRouter на $10 (50 → 1000 зап./день)", "uncapped": "Постійно безкоштовно, без опублікованого ліміту (з обмеженням частоти) — реальний доступ, не враховується в заголовку:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "Ще ~{tokens}/міс. після регіональної перевірки особи (наприклад, перевірки справжнього імені в материковому Китаї) — реальна квота, не врахована в загальному показнику:", "tosRestricted": "{count, plural, one {# модель позначена як обмежена ToS — рішення за вами} few {# моделі позначені як обмежені ToS — рішення за вами} many {# моделей позначено як обмежені ToS — рішення за вами} other {# моделі позначено як обмежені ToS — рішення за вами}}", "provider": "Провайдер", "model": "Модель", @@ -13270,80 +13281,80 @@ "viewFullHistory": "Переглянути повну історію на GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "Політики маршрутизації міркувань", + "apiKeyTitle": "Маршрутизація міркувань для цього ключа API", + "subtitle": "Перенаправляйте моделі та рівень зусиль на міркування без необхідності підтримки з боку клієнта. Запити залишаються незмінними, якщо жодне правило не збігається.", + "loadError": "Не вдалося завантажити правила міркувань.", + "saveError": "Правило недійсне або його не вдалося зберегти.", + "saved": "Правило міркувань збережено.", + "deleteConfirm": "Видалити це правило міркувань?", + "deleteError": "Не вдалося видалити правило міркувань.", + "empty": "Не налаштовано відповідних правил міркувань.", + "all": "Усі", + "any": "Будь-який", + "enabled": "Увімкнено", + "disabled": "Вимкнено", + "filterSearch": "Пошук правил", + "filterScope": "Фільтрувати за областю дії", + "filterStatus": "Фільтрувати за статусом", + "allModels": "усі моделі", + "keepModel": "Залишити модель", + "otherModel": "Інша модель", + "combo": "Комбінація", + "priorityShort": "пріоритет {value}", + "toggleAria": "Увімкнути {name}", + "edit": "Редагувати", + "delete": "Видалити", + "name": "Назва", + "description": "Опис", + "scopeLabel": "Область дії", + "apiKey": "Ключ API", + "sourceCombo": "Вихідна комбінація", + "connection": "Підключення", + "sourceModel": "Вихідна модель або шаблон", + "sourceModelOptional": "Порожньо = усі моделі", + "sourceModelExample": "наприклад, gpt-5*", + "sourceEffort": "Вихідний рівень зусиль", + "missing": "Не вказано", + "signalOnly": "Недискретний сигнал міркування", + "requestTags": "Теги запиту", + "requestTagsExample": "програмування, внутрішнє", + "tagMode": "Зіставлення тегів", + "effortMode": "Режим зусиль", + "targetEffort": "Цільове зусилля", + "routingTarget": "Ціль маршрутизації", + "targetModel": "Цільова модель", + "targetCombo": "Цільова комбінація", + "budgetAction": "Бюджет міркувань", + "budgetTokens": "Токени бюджету", + "priority": "Пріоритет", + "saveChanges": "Зберегти зміни", + "add": "Додати правило", + "cancel": "Скасувати", + "simulateTitle": "Симулювати правило", + "model": "Модель", + "effort": "Зусилля", + "transport": "Транспорт", + "simulate": "Симулювати без висхідного сервера", + "extendedComboWarning": "Max/Ultra перевіряється окремо для кожної цільової комбінації під час маршрутизації.", + "extendedUnknownWarning": "Введіть цільову модель, щоб перевірити підтримку Max/Ultra.", + "extendedUnsupportedWarning": "Достеменно відомо, що Max/Ultra підтримується лише відповідними моделями Codex GPT-5.6. Невідомі користувацькі моделі приймаються сервером із попередженням.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "Глобально", + "apiKey": "Ключ API", + "combo": "Комбінація", + "model": "Модель", + "connection": "Підключення" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Успадкувати від клієнта", + "default": "Використовувати стандартне значення", + "force": "Примусово застосувати" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Зберегти", + "remove": "Видалити", + "set": "Установити фіксоване значення" } }, "chaosConfig": { @@ -13425,91 +13436,91 @@ "tierCommunity": "Спільнота (з затримкою 30 днів)", "activateTitle": "Активувати Радар", "activateDescription": "Радар збагачує безкоштовний каталог моделей інтелектом, отриманим від спільноти — оновлена доступність моделей, квоти та посібники з налаштування.", + "accessScaleTitle": "Ознайомтеся з умовами доступу до Radar перед активацією", + "accessScaleIntro": "Radar не взаємодіє з мережею, доки ви не надасте згоду. Виберіть доступ Community або активуйте особистий ключ прихильника після ознайомлення з цими правилами.", + "accessCommunityRule": "Community — ключ не потрібен: повний каталог із 30-денною затримкою.", + "accessSingleUseRule": "Зірка + підписка — після того як GitHub OAuth підтвердить обидві дії, ваш обліковий запис GitHub отримає одноразовий доступ до актуального каталогу; потім доступ повернеться до рівня Community. Цей одноразовий доступ не можна повторно надати цьому обліковому запису.", + "accessContributorRule": "Учасники — об’єднані PR, коміти та рядки коду впливають лише на порядок у щотижневому рейтингу. Учасники з першої десятки отримують 365 днів, учасники на місцях 11–100 — 90 днів, а учасники поза першою сотнею не отримують доступу незалежно від кількості PR. Вибуття з рейтингу ніколи не скорочує вже наданий термін.", + "accessSupporterRule": "Прихильники — одноразові покупки надають доступ на 6 місяців, 1 рік або довічно без автоматичного поновлення. Покупки, пожертви, періоди за внесок у проєкт і надані вручну терміни сумуються; довічний доступ завжди має перевагу.", + "accessUseTitle": "Особисте використання, відновлення та перевірка", + "accessInstallationRule": "Особиста ліцензія — використовуйте ключ лише в одній активній інсталяції одночасно. OmniRoute не створює цифрових відбитків обладнання. Відновлення анулює та замінює втрачений ключ без скидання терміну його дії.", + "accessAbuseRule": "Перевірка зловживань — 4-та окрема IP-адреса протягом 24 годин лише створює позначку для ручної перевірки; це ніколи не блокує та не анулює ключ автоматично.", + "accessOffersRule": "Актуальні пропозиції добираються вручну та можуть змінюватися або втрачати чинність.", + "privacyTitle": "Якими даними обмінюється Radar", + "privacyDownloadsRule": "Завантаження — ваша інсталяція отримує каталог і реферальні метадані з криптографічним підписом; дійсний активний ключ також відкриває доступ до підписаних пропозицій та Intel.", + "privacySendsRule": "Надсилання — серверна синхронізація надсилає ключ прихильника як Bearer-токен, а інфраструктура HTTPS отримує IP-адресу з’єднання. Під час обліку запитів до стрічки жодне з цих значень не зберігається у вихідному вигляді: зберігаються хеші ключів, агреговані дані про використання та щоденно змінюваний скорочений HMAC IP-адреси для перевірки зловживань.", + "privacyNeverRule": "Ніколи не збираються — запити, відповіді, розмови, облікові дані провайдерів, трафік моделей, час безперебійної роботи, затримка та локальна конфігурація провайдерів ніколи не надсилаються до Radar.", "activateButton": "Активувати", "activating": "Активація...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", + "keySectionTitle": "Уже маєте ключ прихильника?", + "keyInvalidFormatError": "Недійсний формат ключа. Він має починатися з \"omr_\", після чого повинні йти 40 шістнадцяткових символів.", + "activateWithKeyButton": "Активувати підтримку", + "changeKeyButton": "Змінити ключ", + "claimSectionTitle": "Ще не маєте ключа прихильника?", + "contributorButton": "Я контриб’ютор", + "contributorHint": "GitHub OAuth перевіряє поточний щотижневий рейтинг: перші 10 отримують 365 днів, а учасники на місцях 11–100 — 90 днів. Сама лише кількість PR ніколи не надає доступу поза межами першої сотні.", + "supporterButton": "Підтримати проєкт", "supporterHint": "Support OmniRoute to get a supporter key with the live catalog and extra perks.", "colProvider": "Постачальник", "colModel": "Модель", "colQuota": "Квота", + "colLimits": "Обмеження частоти запитів", + "trainsOnPrompts": "Навчається на запитах", + "trainsOnPromptsHelp": "В умовах цього провайдера зазначено, що він може навчати моделі на надісланих вами запитах. Щодо моделей без цієї позначки або зазначено, що вони цього не роблять, або це не задокументовано — відсутність такого твердження не є гарантією.", + "limitsUnknownHelp": "Обмеження наведено лише за даними стрічки Radar; для цього запису немає опублікованих обмежень", + "contextUnknownHelp": "Розмір контекстного вікна для цього запису невідомий", + "capabilityUnknownHelp": "Стрічка не містить даних про цю можливість", "colContext": "Контекст", "colCapabilities": "Можливості", "colTos": "Ризик ToS", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "новий", "setupGuide": "Посібник з налаштування", "disabledByFeed": "Вимкнено через фід Радар", "capTools": "Інструменти", "capVision": "Візія", "capThinking": "Мислення", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "Каталог", + "freeCreditsTab": "Безкоштовні кредити", + "freeCreditsSubtitle": "Реферальні посилання від провайдерів, яких відстежує Radar, — їх використання нічого не коштує вам додатково й допомагає підтримувати OmniRoute.", + "fixedLinksEmpty": "Реферальних посилань поки немає. Синхронізуйте Radar, щоб перевірити наявність оновлень.", + "requiredActionLabel": "Що робити:", + "claimButton": "Отримати кредити", + "campaignsTitle": "Тимчасові кампанії", + "campaignsEmpty": "Зараз немає активних кампаній — перевірте пізніше.", + "campaignsUpsellCommunity": "Тимчасові кампанії — додаткова перевага для прихильників. Усі постійні посилання на цій сторінці залишаються безкоштовними для всіх.", + "campaignsValidUntil": "Дійсно до {date}", + "colActions": "Дії", + "localBadge": "локально", + "editModel": "Редагувати", + "saveModel": "Зберегти", + "cancelEdit": "Скасувати", + "resetModel": "Скинути локальні зміни", + "hideModel": "Приховати", + "restoreModel": "Відновити", + "hiddenModelsTitle": "Приховані моделі", + "modelDisplayName": "Локальна відображувана назва", + "modelEnabled": "Увімкнено локально", + "localStateSaveFailed": "Не вдалося зберегти локальні налаштування Radar", + "guidedCombos": "Комбінації з підказками", + "offers": "Пропозиції", + "intel": "Аналітика" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Комбінації під керуванням Radar", + "subtitle": "Створюйте пріоритетні резервні маршрути з рівноцінних безкоштовних моделей, відібраних Radar.", + "backToRadar": "Назад до Radar", + "loading": "Завантаження пропозицій комбінацій...", + "familyLabel": "Сімейство моделей", + "modelsLabel": "Порядок пріоритетності", + "strategyReason": "Спочатку використовується найбільший регулярний безкоштовний бюджет, а потім запити спрямовуються до інших активних провайдерів.", + "generateButton": "Створити комбінацію", + "generating": "Створення...", + "alreadyCreated": "Уже створено", + "created": "Комбінацію створено", + "noSuggestions": "Наразі жодне відповідне сімейство моделей не має активних підключень щонайменше до двох провайдерів.", + "catalogRequired": "Спочатку синхронізуйте каталог Radar, щоб завантажити відібрані сімейства моделей.", + "loadFailed": "Не вдалося завантажити пропозиції комбінацій Radar.", + "createFailed": "Не вдалося створити комбінацію. Перевірте підключення до провайдерів і повторіть спробу." }, "radarSetupPage": { "title": "Налаштування постачальника", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "Стійкість З'єднання", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "Ваші підключення відновлюються автоматично", + "reassuranceDetail": "Зазвичай жодних дій не потрібно. Після збоїв OmniRoute тимчасово призупиняє підключення, а потім безпечно повторює спробу.", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "Запити можна надсилати", + "coolingDown": "Незабаром буде повторна спроба", + "lockedOut": "Потребує вашої уваги" }, "table": { "status": "Статус", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "Відхиляйте запити перед відправкою, коли цільова модель не має необхідних можливостей (зір, інструменти, структурований вихід, контекстне вікно). Захищає прямі запити від одного постачальника, які обходять фільтр сумісності комбінаційного шару.", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "Пропускати локальну перевірку контекстного вікна та максимальної кількості вхідних токенів OmniRoute для прямих запитів до однієї моделі. Провайдери вище за ланцюжком усе одно застосовують свої фактичні обмеження. Стиснення запитів і ліміти вихідних токенів залишаються активними.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Статистика пошуку та нещодавні пошуки враховують лише провайдерів, які все ще мають активне підключення (провайдери без ключів, як-от duckduckgo-free, враховуються завжди). Якщо вимкнено, зберігаються всі залишені записи пошуку з ідентифікатором провайдера.", "publicSystem": { "notFound": { "title": "Сторінку не знайдено", @@ -13958,7 +13969,7 @@ "compressionDescription": "Налаштуйте параметри стиснення контексту, щоб зменшити використання токенів та витрати.", "relayTitle": "OmniRoute — Релейні Проксі", "relayDescription": "Безсерверні релейні проксі-ендпоїнти для вашої інфраструктури ШІ", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Інспектор трафіку — OmniRoute", "trafficInspectorDescription": "Моніторинг викликів LLM + налагодження HTTPS-трафіку будь-якого застосунку" }, "conductor": { @@ -14070,11 +14081,11 @@ "actionApprove": "Затвердити план", "actionCancel": "Скасувати", "actionSeeInGraph": "Переглянути на графі", + "actionRepeat": "Повторити", "actionDone": "Дію виконано", "actionFailed": "Дія не виконана: {error}", "detailFailed": "Не вдалося завантажити деталі: {error}", "mirroredInA2A": "Відображено в A2A", - "actionRepeat": "Повторити", "repeatConfirm": "Натисніть ще раз, щоб підтвердити", "repeatDone": "Створено новий запуск", "repeatUnavailable": "Початкові вхідні дані недоступні" @@ -14088,57 +14099,57 @@ "networkError": "Помилка мережі — не вдалося оновити налаштування експозиції провайдера" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Пропозиції для прихильників", + "subtitle": "Офіційні знижки, кредити, пробні періоди та перевірені партнерські переваги від Radar.", + "backToRadar": "Назад до Radar", + "loading": "Завантаження пропозицій...", + "refresh": "Оновити пропозиції", + "refreshing": "Оновлення...", + "loadFailed": "Не вдалося оновити пропозиції. Збережено останній перевірений локальний кеш.", + "empty": "Наразі немає активних пропозицій.", + "keyRequiredTitle": "Потрібен ключ прихильника", + "keyRequiredDescription": "Пропозиції — це активна перевага Radar. Додайте наявний ключ прихильника на екрані Radar, підтвердьте свій статус учасника або підтримайте проєкт, щоб отримати його.", + "contributorButton": "Я учасник", + "supporterButton": "Підтримати проєкт", + "partnerBadge": "Партнер", + "officialBadge": "Офіційний", + "conditionsLabel": "Умови:", + "validUntil": "Дійсно до {date}", + "noExpiry": "Термін дії не оголошено", + "openOffer": "Переглянути пропозицію", + "trialDays": "{days, plural, one {# день} other {# днів}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Аналітика Radar", + "subtitle": "Власні рейтинги ELO Radar і фактичні зміни в каталозі.", + "backToRadar": "Назад до Radar", + "loading": "Завантаження аналітики...", + "refresh": "Оновити аналітику", + "syncing": "Оновлення...", + "loadFailed": "Не вдалося оновити аналітику. Останній перевірений локальний кеш збережено.", + "empty": "Перевірений знімок аналітики поки недоступний.", + "supporterBadge": "Прихильник Radar", + "methodology": "Методологія", + "eloMethod": "ELO, початкове значення {initial}, K={factor}", + "freshness": "Актуальність каталогу", + "ageDays": "{days, plural, one {# день тому} other {# днів тому}}", + "trend": "Тенденція каталогу", + "modelDelta": "{current} моделей, +{added} / -{removed}", + "ranking": "Рейтинг моделей", + "noRankings": "Підтверджених порівнянь поки немає.", + "model": "Модель", + "category": "Категорія", + "rating": "Рейтинг", + "matches": "Матчі", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "Свіжі", + "aging": "Втрачають актуальність", + "stale": "Застарілі" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "Зростає", + "stable": "Стабільний", + "shrinking": "Скорочується" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "Запит перевищує контекстне вікно постачальника" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference — друг відкритого коду OmniRoute", + "description": "Шлюз із ранжуванням за вартістю, який надає десятки передових моделей через єдину кінцеву точку, сумісну з OpenAI, — кожен запит спрямовується до найдешевшого відповідного провайдера за ціною, що ніколи не перевищує прейскурантну.", + "cta": "Отримати ключ API", + "partnerLinkNote": "Партнерське посилання", + "dismissAriaLabel": "Відхилити" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Вимкнути створення варіантів рівня міркування (наприклад, -low, -medium, -high) у каталозі /v1/models." } diff --git a/src/i18n/messages/ur.json b/src/i18n/messages/ur.json index 3f782246af..af87e321f1 100644 --- a/src/i18n/messages/ur.json +++ b/src/i18n/messages/ur.json @@ -1,15 +1,15 @@ { "common": { - "save": "Save", - "cancel": "Cancel", - "delete": "Delete", - "loading": "Loading...", + "save": "محفوظ کریں", + "cancel": "منسوخ کریں", + "delete": "حذف کریں", + "loading": "لوڈ ہو رہا ہے...", "selectOption": "ایک آپشن منتخب کریں", - "error": "An error occurred", - "success": "Success", - "confirm": "Are you sure?", - "refresh": "Refresh", - "close": "Close", + "error": "ایک خرابی پیش آ گئی", + "success": "کامیابی", + "confirm": "کیا آپ کو یقین ہے؟", + "refresh": "تازہ کریں", + "close": "بند کریں", "previousPage": "پچھلا صفحہ", "nextPage": "اگلا صفحہ", "capsLockOn": "Caps Lock آن ہے", @@ -17,142 +17,142 @@ "toggleColumns": "کالمز کو ٹوگل کریں", "confirmTitle": "تصدیق کریں", "confirmAction": "تصدیق کریں", - "add": "Add", - "edit": "Edit", - "search": "Search", - "back": "Back", - "next": "Next", - "submit": "Submit", - "reset": "Reset", - "copy": "Copy", - "copied": "Copied!", - "enabled": "Enabled", - "disabled": "Disabled", - "active": "Active", - "inactive": "Inactive", - "noData": "No data available", - "nothingHere": "Nothing here yet", - "configure": "Configure", + "add": "شامل کریں", + "edit": "ترمیم کریں", + "search": "تلاش کریں", + "back": "واپس", + "next": "اگلا", + "submit": "جمع کرائیں", + "reset": "دوبارہ ترتیب دیں", + "copy": "کاپی کریں", + "copied": "کاپی ہو گیا!", + "enabled": "فعال", + "disabled": "غیر فعال", + "active": "فعال", + "inactive": "غیر فعال", + "noData": "کوئی ڈیٹا دستیاب نہیں", + "nothingHere": "ابھی یہاں کچھ نہیں ہے", + "configure": "ترتیب دیں", "manualConfig": "دستی کنفیگ", - "manage": "Manage", - "name": "Name", - "actions": "Actions", - "status": "Status", - "type": "Type", + "manage": "انتظام کریں", + "name": "نام", + "actions": "اقدامات", + "status": "حالت", + "type": "قسم", "model": "Model", - "models": "models", - "provider": "Provider", + "models": "ماڈلز", + "provider": "فراہم کنندہ", "unknownProvider": "نامعلوم فراہم کنندہ", - "account": "Account", - "time": "Time", - "details": "Details", - "created": "Created", - "lastUsed": "Last Refreshed", - "loadMore": "Load More", - "noResults": "No results found", - "reloadPage": "Reload Page", - "connected": "Connected", - "disconnected": "Disconnected", - "notConfigured": "Not configured", - "testConnection": "Test Connection", - "enable": "Enable", - "disable": "Disable", - "columns": "Columns", - "newest": "Newest", - "oldest": "Oldest", - "all": "All", - "none": "None", - "yes": "Yes", - "no": "No", + "account": "اکاؤنٹ", + "time": "وقت", + "details": "تفصیلات", + "created": "تخلیق کیا گیا", + "lastUsed": "آخری بار تازہ کیا گیا", + "loadMore": "مزید لوڈ کریں", + "noResults": "کوئی نتائج نہیں ملے", + "reloadPage": "صفحہ دوبارہ لوڈ کریں", + "connected": "منسلک", + "disconnected": "غیر منسلک", + "notConfigured": "ترتیب نہیں دیا گیا", + "testConnection": "کنکشن کی جانچ کریں", + "enable": "فعال کریں", + "disable": "غیرفعال کریں", + "columns": "کالم", + "newest": "تازہ ترین", + "oldest": "قدیم ترین", + "all": "سبھی", + "none": "کوئی نہیں", + "yes": "ہاں", + "no": "نہیں", "on": "آن", "off": "آف", - "warning": "Warning", - "note": "Note", - "free": "Free", - "skipToContent": "Skip to content", - "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.", - "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...", - "accept": "Accept", - "accountId": "Account ID", + "warning": "انتباہ", + "note": "نوٹ", + "free": "مفت", + "skipToContent": "مواد پر جائیں", + "maintenanceServerIssues": "سرور کو مسائل کا سامنا ہے۔ کچھ خصوصیات دستیاب نہیں ہو سکتیں۔", + "maintenanceServerUnreachable": "سرور ناقابلِ رسائی ہے۔ دوبارہ منسلک ہو رہا ہے...", + "accept": "قبول کریں", + "accountId": "اکاؤنٹ ID", "alias": "Alias", - "apiKeyId": "API Key ID", - "apiKeyName": "API Key Name", - "apiKeySecret": "API Key Secret", - "authorization": "Authorization", - "content-type": "Content Type", - "content-length": "Content Length", + "apiKeyId": "API کلید ID", + "apiKeyName": "API کلید کا نام", + "apiKeySecret": "API کلید کا راز", + "authorization": "اجازت دہی", + "content-type": "مواد کی قسم", + "content-length": "مواد کی لمبائی", "cookie": "Cookie", - "file": "File", - "host": "Host", + "file": "فائل", + "host": "میزبان", "id": "ID", - "import": "Import", + "import": "درآمد کریں", "limit": "Limit", "offset": "Offset", - "open": "Open", - "origin": "Origin", - "promptTokens": "Prompt Tokens", - "completionTokens": "Completion Tokens", - "totalTokens": "Total Tokens", - "rawModel": "Raw Model", - "scope": "Scope", - "skill": "Skill", - "sortBy": "Sort By", - "sortOrder": "Sort Order", - "tab": "Tab", + "open": "کھولیں", + "origin": "ماخذ", + "promptTokens": "پرامپٹ ٹوکنز", + "completionTokens": "تکمیلی ٹوکنز", + "totalTokens": "کل ٹوکنز", + "rawModel": "خام ماڈل", + "scope": "دائرۂ کار", + "skill": "مہارت", + "sortBy": "ترتیب کی بنیاد", + "sortOrder": "ترتیب کی سمت", + "tab": "ٹیب", "text": "Text", - "textarea": "Textarea", - "tool": "Tool", - "toolId": "Tool ID", + "textarea": "متنی خانہ", + "tool": "ٹول", + "toolId": "ٹول آئی ڈی", "web": "Web", - "whereUsed": "Where Used", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "resolve": "Resolve", - "force": "Force", + "whereUsed": "استعمال کی جگہ", + "whitelist": "اجازت یافتہ فہرست", + "blacklist": "ممنوعہ فہرست", + "resolve": "حل کریں", + "force": "لازمی", "base64url": "Base64 URL", "hex": "Hex", - "range": "Range", - "component": "Component", - "redirect_uri": "Redirect URI", - "idempotency-key": "Idempotency Key", - "error_description": "Error Description", - "code": "Code", - "compatible": "Compatible", - "chat-completions": "Chat Completions", + "range": "حد", + "component": "جزو", + "redirect_uri": "ری ڈائریکٹ URI", + "idempotency-key": "آئیڈیم پوٹینسی کلید", + "error_description": "خرابی کی تفصیل", + "code": "کوڈ", + "compatible": "مطابقت پذیر", + "chat-completions": "چیٹ کی تکمیلات", "oauth": "OAuth", - "auth_token": "Auth Token", - "crypto": "Crypto", - "hours": "Hours", + "auth_token": "توثیقی ٹوکن", + "crypto": "کرپٹو", + "hours": "گھنٹے", "selfsigned": "Self-signed", - "proxy_id": "Proxy ID", - "proxyId": "Proxy ID", - "connectionId": "Connection ID", - "resolveConnectionId": "Resolve Connection ID", - "resolve_connection_id": "Resolve Connection ID", - "scope_id": "Scope ID", - "scopeId": "Scope ID", - "jwtSecret": "JWT Secret", + "proxy_id": "پراکسی آئی ڈی", + "proxyId": "پراکسی آئی ڈی", + "connectionId": "کنکشن آئی ڈی", + "resolveConnectionId": "کنکشن آئی ڈی حل کریں", + "resolve_connection_id": "کنکشن آئی ڈی حل کریں", + "scope_id": "دائرۂ کار کی آئی ڈی", + "scopeId": "دائرۂ کار کی آئی ڈی", + "jwtSecret": "JWT سیکرٹ", "keytar": "Keytar", "better-sqlite3": "better-sqlite3", "undici": "undici", "builder-id": "Builder ID", - "musicDesc": "Music Description", - "musicGeneration": "Music Generation", + "musicDesc": "موسیقی کی تفصیل", + "musicGeneration": "موسیقی کی تخلیق", "idc": "IDC", - "cloud-status-changed": "Cloud status changed", - "where_used": "Where Used", - "windowMs": "Window (ms)", + "cloud-status-changed": "کلاؤڈ کی حیثیت تبدیل ہو گئی", + "where_used": "استعمال کی جگہ", + "windowMs": "ونڈو (ms)", "social-github": "GitHub", "social-google": "Google", - "TOOL_ALLOWLIST": "Tool Allowlist", - "TOOL_DENYLIST": "Tool Denylist", - "Failed to save pricing": "Failed to save pricing", - "Failed to reset pricing": "Failed to reset pricing", - "apikey": "API Key", + "TOOL_ALLOWLIST": "ٹول کی اجازت یافتہ فہرست", + "TOOL_DENYLIST": "ٹول کی ممنوعہ فہرست", + "Failed to save pricing": "قیمت محفوظ کرنے میں ناکامی", + "Failed to reset pricing": "قیمت دوبارہ ترتیب دینے میں ناکامی", + "apikey": "API کلید", "http": "HTTP", - "goToDashboard": "Go to Dashboard", - "checkSystemStatus": "Check System Status", - "selectModel": "Select Model", + "goToDashboard": "ڈیش بورڈ پر جائیں", + "checkSystemStatus": "سسٹم کی حیثیت چیک کریں", + "selectModel": "ماڈل منتخب کریں", "addModel": "ماڈل شامل کریں", "effortNone": "کوئی نہیں", "effortLow": "کم", @@ -162,12 +162,12 @@ "effortMax": "زیادہ سے زیادہ", "effortUltra": "الٹرا", "reasoningEffort": "استدلال کی کوشش", - "wireApi": "Wire API", + "wireApi": "API منسلک کریں", "modelAliases": "ماڈل کے عرفی نام", - "combos": "Combos", - "noModelsFound": "No models found", - "clear": "Clear", - "done": "Done", + "combos": "کمبوز", + "noModelsFound": "کوئی ماڈل نہیں ملا", + "clear": "صاف کریں", + "done": "مکمل", "selectAll": "سب منتخب کریں", "unselectAll": "انتخاب ہٹائیں", "visibleModels": "نظر آنے والے", @@ -184,527 +184,527 @@ "selectAllProviders": "تمام فراہم کنندگان کی جانچ کریں", "clearProviderSelection": "پرووائیڈرز کو انچیک کریں", "providersSelectedCount": "{count} فراہم کنندگان کی جانچ کی گئی", - "errorOccurred": "Error Occurred", - "comboDeleted": "Combo Deleted", - "hide": "Hide", - "creating": "Creating", - "comboCreated": "Combo Created", - "swapFormats": "Swap Formats", - "daysAgo": "Days Ago", - "retries": "Retries", - "errorDuringRestore": "Error During Restore", - "eventsAppearHint": "Events Appear Hint", - "noLockouts": "No Lockouts", - "webSearchDesc": "Web Search Desc", - "audioProvidersHeading": "Audio Providers Heading", + "errorOccurred": "خرابی پیش آگئی", + "comboDeleted": "کمبو حذف کر دیا گیا", + "hide": "چھپائیں", + "creating": "بنایا جا رہا ہے", + "comboCreated": "کمبو بنا دیا گیا", + "swapFormats": "فارمیٹس تبدیل کریں", + "daysAgo": "دن پہلے", + "retries": "دوبارہ کوششیں", + "errorDuringRestore": "بحالی کے دوران خرابی", + "eventsAppearHint": "ایونٹس ظاہر ہونے کا اشارہ", + "noLockouts": "کوئی لاک آؤٹ نہیں", + "webSearchDesc": "ویب تلاش کی تفصیل", + "audioProvidersHeading": "آڈیو فراہم کنندگان", "cloudAgentProviders": "کلاؤڈ ایجنٹ فراہم کرنے والے", - "minutesAgo": "Minutes Ago", + "minutesAgo": "منٹ پہلے", "a": "A", - "liveAutoRefreshing": "Live Auto Refreshing", - "webSearch": "Web Search", - "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder", - "addModelToCombo": "Add Model To Combo", - "failedToLoad": "Failed To Load", - "categoryMedia": "Category Media", - "enableCloud": "Enable Cloud", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "retry": "Retry", - "embeddings": "Embeddings", - "errorCount": "Error Count", - "backupReasonManual": "Backup Reason Manual", - "safeSearchModerate": "Safe Search Moderate", - "activeLimiters": "Active Limiters", - "a2aCardTitle": "A2A Card Title", - "cloudWorkerUnreachable": "Cloud Worker Unreachable", - "testFailed": "Test Failed", - "compatibleBaseUrlHint": "Compatible Base Url Hint", - "usageTracking": "Usage Tracking", - "disableCloudTitle": "Disable Cloud Title", - "noConnections": "No Connections", - "providerHealth": "Provider Health", - "confirmDbImport": "Confirm Db Import", - "notAvailableSymbol": "Not Available Symbol", - "backupsAvailable": "Backups Available", - "providerAuto": "Provider Auto", - "newProviderNamePlaceholder": "New Provider Name Placeholder", - "a2aQuickStartStep2": "A2A Quick Start Step2", - "ok": "Ok", - "available": "Available", - "noBackupYet": "No Backup Yet", - "more": "More", - "noCompatibleYet": "No Compatible Yet", - "multiProvider": "Multi Provider", - "repairEnvHint": "Repair Env Hint", - "disablingCloud": "Disabling Cloud", - "testBench": "Test Bench", - "valid": "Valid", - "cloudBenefitShare": "Cloud Benefit Share", - "mcpCardTitle": "Mcp Card Title", - "disableConfirm": "Disable Confirm", - "filters": "Filters", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "saveComboDefaults": "Save Combo Defaults", - "cloudConnectedVerified": "Cloud Connected Verified", - "uptime": "Uptime", - "compatibleProdPlaceholder": "Compatible Prod Placeholder", - "fallbackChainsTitle": "Fallback Chains Title", - "oauthLabel": "Oauth Label", - "a2aCardDescription": "A2A Card Description", - "okShort": "Ok Short", - "maintenance": "Maintenance", - "formatConverter": "Format Converter", - "zedImportNetworkError": "Zed Import Network Error", - "apiKeyLabel": "Api Key Label", - "noModelsForProvider": "No Models For Provider", - "mcpCardDescription": "Mcp Card Description", - "apiTypeLabel": "Api Type Label", - "configuredProvidersLabel": "Configured Providers Label", - "maxRetriesLabel": "Max Retries Label", - "title": "Title", - "output": "Output", - "prefixHint": "Prefix Hint", - "skipWizard": "Skip Wizard", - "failedCount": "Failed Count", - "confirmDbImportDesc": "Confirm Db Import Desc", - "entries": "Entries", - "until": "Until", - "disableCombo": "Disable Combo", - "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix", - "runningCount": "Running Count", - "noActiveConnectionsInGroup": "No Active Connections In Group", - "savedSuccessfully": "Saved Successfully", - "systemStorage": "System Storage", - "videoDesc": "Video Desc", - "maxResults": "Max Results", - "timeRangeMonth": "Time Range Month", - "testSummary": "Test Summary", - "failedSetPassword": "Failed Set Password", - "audio": "Audio", - "restore": "Restore", - "disableWarning": "Disable Warning", - "moderationsDesc": "Moderations Desc", - "providerHealthStatusAria": "Provider Health Status Aria", - "modelNamePlaceholder": "Model Name Placeholder", - "mcpQuickStartStep2": "Mcp Quick Start Step2", - "quickStart": "Quick Start", - "fullExportFailedWithError": "Full Export Failed With Error", - "loadingBackups": "Loading Backups", - "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder", - "description": "Description", - "noProviderFound": "No Provider Found", - "auto": "Auto", - "protocolsDescription": "Protocols Description", - "cloudSessionNote": "Cloud Session Note", - "advancedSettings": "Advanced Settings", - "defaultStrategy": "Default Strategy", - "purgeExpiredLogs": "Purge Expired Logs", - "justNow": "Just Now", - "providerTestFailed": "Provider Test Failed", - "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder", - "image": "Image", - "failedCreateChain": "Failed Create Chain", - "importDatabase": "Import Database", - "allDataLocal": "All Data Local", - "sectionTitle": "Section Title", - "failedToggle": "Failed Toggle", - "editCombo": "Edit Combo", - "testResults": "Test Results", - "searchQuery": "Search Query", + "liveAutoRefreshing": "لائیو خودکار ریفریش جاری ہے", + "webSearch": "ویب تلاش", + "anthropicPrefixPlaceholder": "Anthropic سابقے کا پلیس ہولڈر", + "addModelToCombo": "کمبو میں ماڈل شامل کریں", + "failedToLoad": "لوڈ کرنے میں ناکامی", + "categoryMedia": "میڈیا زمرہ", + "enableCloud": "کلاؤڈ فعال کریں", + "expirationBannerExpiringSoon": "میعاد جلد ختم ہونے کا بینر", + "retry": "دوبارہ کوشش کریں", + "embeddings": "ایمبیڈنگز", + "errorCount": "خرابیوں کی تعداد", + "backupReasonManual": "بیک اپ کی وجہ: دستی", + "safeSearchModerate": "محفوظ تلاش: معتدل", + "activeLimiters": "فعال حد مقرر کنندگان", + "a2aCardTitle": "A2A کارڈ کا عنوان", + "cloudWorkerUnreachable": "کلاؤڈ ورکر ناقابل رسائی ہے", + "testFailed": "ٹیسٹ ناکام ہوگیا", + "compatibleBaseUrlHint": "ہم آہنگ Base URL کا اشارہ", + "usageTracking": "استعمال کی نگرانی", + "disableCloudTitle": "کلاؤڈ کو غیر فعال کرنے کا عنوان", + "noConnections": "کوئی کنکشن نہیں", + "providerHealth": "فراہم کنندہ کی صحت", + "confirmDbImport": "Db درآمد کی تصدیق کریں", + "notAvailableSymbol": "دستیاب نہ ہونے کی علامت", + "backupsAvailable": "دستیاب بیک اپس", + "providerAuto": "خودکار فراہم کنندہ", + "newProviderNamePlaceholder": "نئے فراہم کنندہ کے نام کی جگہ دار عبارت", + "a2aQuickStartStep2": "A2A فوری آغاز مرحلہ 2", + "ok": "ٹھیک ہے", + "available": "دستیاب", + "noBackupYet": "ابھی تک کوئی بیک اپ نہیں", + "more": "مزید", + "noCompatibleYet": "ابھی تک کوئی مطابقت پذیر نہیں", + "multiProvider": "متعدد فراہم کنندگان", + "repairEnvHint": "Env کی مرمت کا اشارہ", + "disablingCloud": "کلاؤڈ کو غیر فعال کیا جا رہا ہے", + "testBench": "ٹیسٹ بینچ", + "valid": "درست", + "cloudBenefitShare": "کلاؤڈ کے فائدے کا اشتراک", + "mcpCardTitle": "Mcp کارڈ کا عنوان", + "disableConfirm": "غیر فعال کرنے کی تصدیق کریں", + "filters": "فلٹرز", + "expirationBannerExpiredDesc": "میعاد ختم ہونے والے بینر کی تفصیل", + "saveComboDefaults": "کومبو کی طے شدہ ترتیبات محفوظ کریں", + "cloudConnectedVerified": "کلاؤڈ منسلک اور تصدیق شدہ ہے", + "uptime": "فعال رہنے کا دورانیہ", + "compatibleProdPlaceholder": "مطابقت پذیر Prod کی جگہ دار عبارت", + "fallbackChainsTitle": "فال بیک چینز کا عنوان", + "oauthLabel": "Oauth لیبل", + "a2aCardDescription": "A2A کارڈ کی تفصیل", + "okShort": "ٹھیک", + "maintenance": "دیکھ بھال", + "formatConverter": "فارمیٹ کنورٹر", + "zedImportNetworkError": "Zed درآمد میں نیٹ ورک کی خرابی", + "apiKeyLabel": "Api کلید کا لیبل", + "noModelsForProvider": "فراہم کنندہ کے لیے کوئی ماڈل نہیں", + "mcpCardDescription": "Mcp کارڈ کی تفصیل", + "apiTypeLabel": "Api قسم کا لیبل", + "configuredProvidersLabel": "تشکیل شدہ فراہم کنندگان کا لیبل", + "maxRetriesLabel": "زیادہ سے زیادہ دوبارہ کوششوں کا لیبل", + "title": "عنوان", + "output": "آؤٹ پٹ", + "prefixHint": "سابقے کا اشارہ", + "skipWizard": "وزرڈ کو چھوڑیں", + "failedCount": "ناکام تعداد", + "confirmDbImportDesc": "ڈیٹا بیس درآمد کی تصدیق کی تفصیل", + "entries": "اندراجات", + "until": "تک", + "disableCombo": "کمبو غیر فعال کریں", + "liveMonitorDescriptionPrefix": "لائیو مانیٹر کی تفصیل کا سابقہ", + "runningCount": "زیرِ عمل تعداد", + "noActiveConnectionsInGroup": "گروپ میں کوئی فعال کنکشن نہیں", + "savedSuccessfully": "کامیابی سے محفوظ ہو گیا", + "systemStorage": "سسٹم اسٹوریج", + "videoDesc": "ویڈیو کی تفصیل", + "maxResults": "زیادہ سے زیادہ نتائج", + "timeRangeMonth": "وقت کی حد: مہینہ", + "testSummary": "ٹیسٹ کا خلاصہ", + "failedSetPassword": "پاس ورڈ سیٹ نہیں ہو سکا", + "audio": "آڈیو", + "restore": "بحال کریں", + "disableWarning": "انتباہ غیر فعال کریں", + "moderationsDesc": "ماڈریشنز کی تفصیل", + "providerHealthStatusAria": "فراہم کنندہ کی صحت کی حالت کا ARIA", + "modelNamePlaceholder": "ماڈل کے نام کی پلیس ہولڈر عبارت", + "mcpQuickStartStep2": "MCP فوری آغاز کا مرحلہ 2", + "quickStart": "فوری آغاز", + "fullExportFailedWithError": "خرابی کے باعث مکمل برآمد ناکام ہو گئی", + "loadingBackups": "بیک اپس لوڈ ہو رہے ہیں", + "anthropicBaseUrlPlaceholder": "Anthropic بنیادی URL کی پلیس ہولڈر عبارت", + "description": "تفصیل", + "noProviderFound": "کوئی فراہم کنندہ نہیں ملا", + "auto": "خودکار", + "protocolsDescription": "پروٹوکولز کی تفصیل", + "cloudSessionNote": "کلاؤڈ سیشن کا نوٹ", + "advancedSettings": "اعلیٰ ترتیبات", + "defaultStrategy": "طے شدہ حکمتِ عملی", + "purgeExpiredLogs": "میعاد ختم شدہ لاگز حذف کریں", + "justNow": "ابھی ابھی", + "providerTestFailed": "فراہم کنندہ کا ٹیسٹ ناکام ہوگیا", + "openaiBaseUrlPlaceholder": "Openai بیس URL پلیس ہولڈر", + "image": "تصویر", + "failedCreateChain": "چین بنانے میں ناکامی", + "importDatabase": "ڈیٹابیس درآمد کریں", + "allDataLocal": "تمام ڈیٹا مقامی ہے", + "sectionTitle": "سیکشن کا عنوان", + "failedToggle": "ٹوگل کرنے میں ناکامی", + "editCombo": "کومبو میں ترمیم کریں", + "testResults": "ٹیسٹ کے نتائج", + "searchQuery": "تلاش کا استفسار", "addCcCompatible": "Add Cc Compatible", - "duplicate": "Duplicate", - "createCombo": "Create Combo", - "searchTypeWeb": "Search Type Web", - "addChain": "Add Chain", - "prefixLabel": "Prefix Label", - "listModelsDesc": "List Models Desc", - "databaseSize": "Database Size", - "chainCreated": "Chain Created", - "providerTestTimeout": "Provider Test Timeout", - "routingStrategy": "Routing Strategy", - "translateAction": "Translate Action", - "exportFailed": "Export Failed", - "connectedVerificationPending": "Connected Verification Pending", - "a2aQuickStartTitle": "A2A Quick Start Title", - "couldNotTest": "Could Not Test", - "testAllCompatible": "Test All Compatible", - "anthropicCompatibleName": "Anthropic Compatible Name", - "disabling": "Disabling", - "failedEnable": "Failed Enable", - "categoryUtility": "Category Utility", - "customUrlOptional": "Custom Url Optional", - "localProviders": "Local Providers", - "comboNamePlaceholder": "Combo Name Placeholder", - "memoryRss": "Memory Rss", - "disableProvider": "Disable Provider", - "welcomeDesc": "Welcome Desc", - "nameLabel": "Name Label", - "allOperational": "All Operational", - "backupNow": "Backup Now", - "providerMaxRetriesAria": "Provider Max Retries Aria", - "textToSpeechDesc": "Text To Speech Desc", - "machineId": "Machine Id", - "globalProxy": "Global Proxy", - "hitsMisses": "Hits Misses", - "testDesc": "Test Desc", - "chatDesc": "Chat Desc", - "importSuccess": "Import Success", - "chat": "Chat", - "a2aQuickStartStep1": "A2A Quick Start Step1", - "importFailed": "Import Failed", - "inputPlaceholder": "Input Placeholder", - "providerModelsTitle": "Provider Models Title", - "lastBackup": "Last Backup", - "yourEndpoint": "Your Endpoint", - "autoDisableThresholdDesc": "Auto Disable Threshold Desc", - "rerankDesc": "Rerank Desc", - "modelsPathPlaceholder": "Models Path Placeholder", - "noCombosYet": "No Combos Yet", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", - "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1", - "enableCloudTitle": "Enable Cloud Title", - "configuredProvidersHint": "Configured Providers Hint", - "paused": "Paused", - "llmProviders": "Llm Providers", - "enableCombo": "Enable Combo", - "removeProviderOverrideAria": "Remove Provider Override Aria", - "nodeVersion": "Node Version", + "duplicate": "نقل بنائیں", + "createCombo": "کومبو بنائیں", + "searchTypeWeb": "تلاش کی قسم: ویب", + "addChain": "چین شامل کریں", + "prefixLabel": "سابقے کا لیبل", + "listModelsDesc": "ماڈلز کی فہرست کی تفصیل", + "databaseSize": "ڈیٹابیس کا حجم", + "chainCreated": "چین بن گئی", + "providerTestTimeout": "فراہم کنندہ کے ٹیسٹ کا وقت ختم ہوگیا", + "routingStrategy": "روٹنگ کی حکمت عملی", + "translateAction": "ترجمے کی کارروائی", + "exportFailed": "برآمد ناکام ہوگئی", + "connectedVerificationPending": "منسلک ہے، توثیق زیرِ التوا ہے", + "a2aQuickStartTitle": "A2A فوری آغاز کا عنوان", + "couldNotTest": "ٹیسٹ نہیں کیا جا سکا", + "testAllCompatible": "تمام ہم آہنگ کا ٹیسٹ کریں", + "anthropicCompatibleName": "Anthropic سے ہم آہنگ نام", + "disabling": "غیر فعال کیا جا رہا ہے", + "failedEnable": "فعال کرنے میں ناکامی", + "categoryUtility": "زمرہ: افادیتی", + "customUrlOptional": "حسبِ ضرورت URL (اختیاری)", + "localProviders": "مقامی فراہم کنندگان", + "comboNamePlaceholder": "کومبو نام کا پلیس ہولڈر", + "memoryRss": "میموری RSS", + "disableProvider": "فراہم کنندہ کو غیر فعال کریں", + "welcomeDesc": "خوش آمدید کی تفصیل", + "nameLabel": "نام کا لیبل", + "allOperational": "سب فعال ہیں", + "backupNow": "ابھی بیک اپ لیں", + "providerMaxRetriesAria": "فراہم کنندہ کی زیادہ سے زیادہ دوبارہ کوششوں کا ARIA", + "textToSpeechDesc": "متن سے آواز کی تفصیل", + "machineId": "مشین آئی ڈی", + "globalProxy": "عالمی پراکسی", + "hitsMisses": "کامیابیاں اور ناکامیاں", + "testDesc": "ٹیسٹ کی تفصیل", + "chatDesc": "چیٹ کی تفصیل", + "importSuccess": "درآمد کامیاب رہی", + "chat": "چیٹ", + "a2aQuickStartStep1": "A2A فوری آغاز کا مرحلہ 1", + "importFailed": "درآمد ناکام ہو گئی", + "inputPlaceholder": "ان پٹ پلیس ہولڈر", + "providerModelsTitle": "فراہم کنندہ کے ماڈلز کا عنوان", + "lastBackup": "آخری بیک اپ", + "yourEndpoint": "آپ کا اینڈ پوائنٹ", + "autoDisableThresholdDesc": "خودکار طور پر غیر فعال کرنے کی حد کی تفصیل", + "rerankDesc": "دوبارہ درجہ بندی کی تفصیل", + "modelsPathPlaceholder": "ماڈلز کے پاتھ کا پلیس ہولڈر", + "noCombosYet": "ابھی تک کوئی کومبو نہیں", + "connectedVerificationPendingWithError": "منسلک ہے، خرابی کے باعث تصدیق زیرِ التوا ہے", + "comboDefaultsGuideHint1": "کومبو کی طے شدہ ترتیبات کے رہنما کا اشارہ 1", + "enableCloudTitle": "کلاؤڈ فعال کریں کا عنوان", + "configuredProvidersHint": "تشکیل شدہ فراہم کنندگان کا اشارہ", + "paused": "موقوف", + "llmProviders": "LLM فراہم کنندگان", + "enableCombo": "کومبو فعال کریں", + "removeProviderOverrideAria": "فراہم کنندہ کی اوور رائیڈ ہٹانے کا ARIA", + "nodeVersion": "Node ورژن", "openai": "Openai", - "exportFailedWithError": "Export Failed With Error", - "proxyConfigured": "Proxy Configured", - "concurrencyPerModel": "Concurrency Per Model", - "protocolTasksLabel": "Protocol Tasks Label", - "oauthProviders": "Oauth Providers", - "lockedCount": "Locked Count", - "deleteChainConfirm": "Delete Chain Confirm", - "recentTranslations": "Recent Translations", - "zedImportButton": "Zed Import Button", - "responsesDesc": "Responses Desc", - "testedCount": "Tested Count", - "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder", - "signatureDefaults": "Signature Defaults", - "errorCreating": "Error Creating", - "timeRangeYear": "Time Range Year", + "exportFailedWithError": "خرابی کے باعث برآمد ناکام ہو گئی", + "proxyConfigured": "پراکسی تشکیل شدہ ہے", + "concurrencyPerModel": "فی ماڈل ہم وقتی عمل", + "protocolTasksLabel": "پروٹوکول ٹاسکس کا لیبل", + "oauthProviders": "OAuth فراہم کنندگان", + "lockedCount": "مقفل تعداد", + "deleteChainConfirm": "چین حذف کرنے کی تصدیق", + "recentTranslations": "حالیہ تراجم", + "zedImportButton": "Zed درآمد بٹن", + "responsesDesc": "جوابات کی تفصیل", + "testedCount": "جانچی گئی تعداد", + "providersCommaSeparatedPlaceholder": "فراہم کنندگان کے لیے کاما سے جدا پلیس ہولڈر", + "signatureDefaults": "دستخط کی طے شدہ قدریں", + "errorCreating": "تخلیق کرنے میں خرابی", + "timeRangeYear": "وقت کی حد: سال", "compatibleLabel": "Compatible Label", - "cloudDisabledSuccess": "Cloud Disabled Success", - "deleteConfirm": "Delete Confirm", - "check": "Check", - "safeSearch": "Safe Search", - "protocolLastActivity": "Protocol Last Activity", - "openMcpDashboard": "Open Mcp Dashboard", - "testBenchTab": "Test Bench", - "chatPathLabel": "Chat Path Label", - "retryDelay": "Retry Delay", - "errorUpdating": "Error Updating", - "ideCliIntegrations": "Ide Cli Integrations", - "imageGeneration": "Image Generation", - "apiKeyRequired": "Api Key Required", - "resetAllTitle": "Reset All Title", - "connectionError": "Connection Error", - "modelName": "Model Name", - "apiKeyForCheck": "Api Key For Check", - "cloudRequestTimeout": "Cloud Request Timeout", - "showConfiguredOnly": "Show Configured Only", + "cloudDisabledSuccess": "کلاؤڈ کامیابی سے غیر فعال کر دیا گیا", + "deleteConfirm": "حذف کرنے کی تصدیق کریں", + "check": "جانچ کریں", + "safeSearch": "محفوظ تلاش", + "protocolLastActivity": "پروٹوکول کی آخری سرگرمی", + "openMcpDashboard": "Mcp ڈیش بورڈ کھولیں", + "testBenchTab": "ٹیسٹ بینچ", + "chatPathLabel": "چیٹ پاتھ کا لیبل", + "retryDelay": "دوبارہ کوشش میں تاخیر", + "errorUpdating": "اپ ڈیٹ کرنے میں خرابی", + "ideCliIntegrations": "IDE اور CLI انضمامات", + "imageGeneration": "تصویر بنانا", + "apiKeyRequired": "API کلید درکار ہے", + "resetAllTitle": "سب کچھ ری سیٹ کریں", + "connectionError": "کنکشن کی خرابی", + "modelName": "ماڈل کا نام", + "apiKeyForCheck": "جانچ کے لیے API کلید", + "cloudRequestTimeout": "کلاؤڈ درخواست کا وقت ختم ہو گیا", + "showConfiguredOnly": "صرف کنفیگر شدہ دکھائیں", "showFreeOnly": "صرف مفت", "addFirstProvider": "اپنا پہلا فراہم کنندہ شامل کریں۔", "addFirstProviderDesc": "OmniRoute کے ذریعے درخواستوں کی روٹنگ شروع کرنے کے لیے AI فراہم کنندہ سے رابطہ کریں۔ آپ مفت فراہم کنندگان، API کیز، یا OAuth اکاؤنٹس استعمال کر سکتے ہیں۔", "learnMore": "مزید جانیں", - "includeDomains": "Include Domains", - "promptCache": "Prompt Cache", - "cloudConnected": "Cloud Connected", - "deleteChain": "Delete Chain", - "chatPathPlaceholder": "Chat Path Placeholder", - "databasePath": "Database Path", - "usingLocalServer": "Using Local Server", - "globalComboConfig": "Global Combo Config", - "backupFailed": "Backup Failed", - "tabProtocols": "Tab Protocols", - "continue": "Continue", - "categorySearch": "Category Search", - "rateLimitStatus": "Rate Limit Status", - "repairEnvSuccess": "Repair Env Success", - "nameRequired": "Name Required", - "country": "Country", - "trackMetricsDesc": "Track Metrics Desc", - "durationSecondsShort": "Duration Seconds Short", - "formatConverterDescription": "Format Converter Description", - "cloudBenefitAccess": "Cloud Benefit Access", - "maxRetries": "Max Retries", - "queueTimeout": "Queue Timeout", + "includeDomains": "ڈومینز شامل کریں", + "promptCache": "پرامپٹ کیش", + "cloudConnected": "کلاؤڈ منسلک ہے", + "deleteChain": "چین حذف کریں", + "chatPathPlaceholder": "چیٹ پاتھ کا پلیس ہولڈر", + "databasePath": "ڈیٹابیس پاتھ", + "usingLocalServer": "مقامی سرور استعمال ہو رہا ہے", + "globalComboConfig": "عالمی کومبو کنفیگریشن", + "backupFailed": "بیک اپ ناکام ہو گیا", + "tabProtocols": "پروٹوکولز ٹیب", + "continue": "جاری رکھیں", + "categorySearch": "زمرہ تلاش کریں", + "rateLimitStatus": "شرح کی حد کی حیثیت", + "repairEnvSuccess": "ماحول کامیابی سے درست کر دیا گیا", + "nameRequired": "نام درکار ہے", + "country": "ملک", + "trackMetricsDesc": "میٹرکس ٹریک کرنے کی تفصیل", + "durationSecondsShort": "دورانیہ، سیکنڈ (مختصر)", + "formatConverterDescription": "فارمیٹ کنورٹر کی تفصیل", + "cloudBenefitAccess": "کلاؤڈ فوائد تک رسائی", + "maxRetries": "زیادہ سے زیادہ دوبارہ کوششیں", + "queueTimeout": "قطار کا ٹائم آؤٹ", "queueDepth": "قطار کی گہرائی", - "addProvider": "Add Provider", - "realtime": "Realtime", - "totalTranslations": "Total Translations", - "protocolActiveStreamsLabel": "Protocol Active Streams Label", - "repairEnv": "Repair Env", - "modelsCount": "Models Count", - "viewBackups": "View Backups", - "responsesApi": "Responses Api", - "copyComboName": "Copy Combo Name", - "failures": "Failures", - "failedUpdate": "Failed Update", - "imageDesc": "Image Desc", - "failedCreate": "Failed Create", - "remainingOfLimit": "Remaining Of Limit", - "protocolsTitle": "Protocols Title", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "source": "Source", - "failed": "Failed", + "addProvider": "فراہم کنندہ شامل کریں", + "realtime": "ریئل ٹائم", + "totalTranslations": "کل تراجم", + "protocolActiveStreamsLabel": "پروٹوکول کے فعال اسٹریمز کا لیبل", + "repairEnv": "ماحولیاتی متغیرات کی مرمت کریں", + "modelsCount": "ماڈلز کی تعداد", + "viewBackups": "بیک اپس دیکھیں", + "responsesApi": "Responses API", + "copyComboName": "کومبو کا نام کاپی کریں", + "failures": "ناکامیاں", + "failedUpdate": "اپ ڈیٹ ناکام", + "imageDesc": "تصویر کی تفصیل", + "failedCreate": "تخلیق ناکام", + "remainingOfLimit": "حد میں سے باقی", + "protocolsTitle": "پروٹوکولز کا عنوان", + "expirationBannerExpiringSoonDesc": "میعاد جلد ختم ہونے کی اطلاع کی تفصیل", + "source": "ماخذ", + "failed": "ناکام", "apiKeyMgmt": "Api Key Mgmt", - "mcpQuickStartStep1": "Mcp Quick Start Step1", - "runTest": "Run Test", - "loadingFallbackChains": "Loading Fallback Chains", - "healthy": "Healthy", - "version": "Version", - "saveBlockWeighted": "Save Block Weighted", - "zedImportNone": "Zed Import None", - "noBackupsYet": "No Backups Yet", - "noGlobalProxy": "No Global Proxy", - "noModels": "No Models", - "stickyLimit": "Sticky Limit", - "passedCount": "Passed Count", - "zedImportFailed": "Zed Import Failed", - "saving": "Saving", - "testAll": "Test All", - "globalProxyDesc": "Global Proxy Desc", - "latencyP99": "Latency P99", - "connectingToCloud": "Connecting To Cloud", - "responses": "Responses", - "errorDeleting": "Error Deleting", - "openaiPrefixPlaceholder": "Openai Prefix Placeholder", - "enterPassword": "Enter Password", - "openA2aDashboard": "Open A2A Dashboard", - "enableProvider": "Enable Provider", - "modeTest": "Mode Test", - "failedDeleteChain": "Failed Delete Chain", - "providerDesc": "Provider Desc", - "templateLoadHint": "Template Load Hint", - "lastFailure": "Last Failure", - "moveDown": "Move Down", - "providerLabel": "Provider Label", - "clearCacheFailed": "Clear Cache Failed", - "imagesGenerations": "Images Generations", - "repairEnvWorking": "Repair Env Working", - "millisecondsShort": "Milliseconds Short", - "globalLabel": "Global Label", - "failuresPlural": "Failures Plural", - "completionsLegacyDesc": "Completions Legacy Desc", - "searchProviders": "Search Providers", - "chatPathHint": "Chat Path Hint", - "defaultStrategyDesc": "Default Strategy Desc", - "latencyP95": "Latency P95", - "textToSpeech": "Text To Speech", - "searchType": "Search Type", - "messages": "Messages", - "aggregatorsGateways": "Aggregators Gateways", - "comboStrategyAria": "Combo Strategy Aria", - "input": "Input", - "testingConnection": "Testing Connection", - "excludeDomains": "Exclude Domains", - "webCookieProviders": "Web Cookie Providers", - "allTestsPassed": "All Tests Passed", - "openaiCompatibleName": "Openai Compatible Name", - "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing", - "comboDefaultsGuideTitle": "Combo Defaults Guide Title", - "hoursAgo": "Hours Ago", - "notAvailable": "Not Available", - "skipAndContinue": "Skip And Continue", - "moderations": "Moderations", - "proxyConfig": "Proxy Config", - "upstreamProxyProviders": "Upstream Proxy Providers", - "exportAll": "Export All", - "queuedCount": "Queued Count", - "resetAll": "Reset All", - "noTranslations": "No Translations", - "avgLatency": "Avg Latency", - "throttleStatus": "Throttle Status", - "backupRetentionDesc": "Backup Retention Desc", - "noCBData": "No Cb Data", - "chainDeleted": "Chain Deleted", - "timeLeft": "Time Left", - "expirationBannerExpired": "Expiration Banner Expired", - "language": "Language", - "invalidFileType": "Invalid File Type", - "monitoredProviders": "Monitored Providers", - "errors": "Errors", - "heap": "Heap", - "chatCompletions": "Chat Completions", - "exampleTemplatesHint": "Example Templates Hint", - "retryDelayLabel": "Retry Delay Label", - "audioTranscription": "Audio Transcription", - "fallbackChainsDesc": "Fallback Chains Desc", - "exampleTemplates": "Example Templates", - "connectionsCount": "Connections Count", - "modelsPathLabel": "Models Path Label", - "activeProvidersHint": "Active Providers Hint", - "activeLockouts": "Active Lockouts", - "invalid": "Invalid", - "skipPassword": "Skip Password", - "moveUp": "Move Up", - "timeRange": "Time Range", - "stickyLimitDesc": "Sticky Limit Desc", - "cloudBenefitEdge": "Cloud Benefit Edge", - "custom": "Custom", - "verifying": "Verifying", - "baseUrlLabel": "Base Url Label", - "setPassword": "Set Password", - "safeSearchStrict": "Safe Search Strict", - "noChangesSinceBackup": "No Changes Since Backup", - "modelsPathHint": "Models Path Hint", - "audioTranscriptions": "Audio Transcriptions", - "testCombo": "Test Combo", - "mcpQuickStartTitle": "Mcp Quick Start Title", - "comboUpdated": "Combo Updated", - "weighted": "Weighted", - "providers": "Providers", + "mcpQuickStartStep1": "MCP فوری آغاز، مرحلہ 1", + "runTest": "ٹیسٹ چلائیں", + "loadingFallbackChains": "فال بیک چینز لوڈ ہو رہی ہیں", + "healthy": "صحتمند", + "version": "ورژن", + "saveBlockWeighted": "وزنی بلاک محفوظ کریں", + "zedImportNone": "Zed درآمد: کوئی نہیں", + "noBackupsYet": "ابھی تک کوئی بیک اپ نہیں", + "noGlobalProxy": "کوئی گلوبل پراکسی نہیں", + "noModels": "کوئی ماڈل نہیں", + "stickyLimit": "مستقل حد", + "passedCount": "کامیاب تعداد", + "zedImportFailed": "Zed درآمد ناکام", + "saving": "محفوظ ہو رہا ہے", + "testAll": "سب کی جانچ کریں", + "globalProxyDesc": "گلوبل پراکسی کی تفصیل", + "latencyP99": "تاخیر P99", + "connectingToCloud": "کلاؤڈ سے منسلک ہو رہا ہے", + "responses": "جوابات", + "errorDeleting": "حذف کرنے میں خرابی", + "openaiPrefixPlaceholder": "Openai سابقے کی عارضی عبارت", + "enterPassword": "پاس ورڈ درج کریں", + "openA2aDashboard": "A2A ڈیش بورڈ کھولیں", + "enableProvider": "فراہم کنندہ فعال کریں", + "modeTest": "ٹیسٹ موڈ", + "failedDeleteChain": "چین حذف کرنے میں ناکامی", + "providerDesc": "فراہم کنندہ کی تفصیل", + "templateLoadHint": "ٹیمپلیٹ لوڈ کرنے کا اشارہ", + "lastFailure": "آخری ناکامی", + "moveDown": "نیچے منتقل کریں", + "providerLabel": "فراہم کنندہ کا لیبل", + "clearCacheFailed": "کیش صاف کرنے میں ناکامی", + "imagesGenerations": "تصاویر کی تخلیق", + "repairEnvWorking": "ماحول کی مرمت جاری ہے", + "millisecondsShort": "ملی سیکنڈ", + "globalLabel": "عالمی لیبل", + "failuresPlural": "ناکامیاں", + "completionsLegacyDesc": "لیگیسی تکمیلات کی تفصیل", + "searchProviders": "فراہم کنندگان تلاش کریں", + "chatPathHint": "چیٹ پاتھ کا اشارہ", + "defaultStrategyDesc": "طے شدہ حکمت عملی کی تفصیل", + "latencyP95": "تاخیر P95", + "textToSpeech": "متن سے آواز", + "searchType": "تلاش کی قسم", + "messages": "پیغامات", + "aggregatorsGateways": "ایگریگیٹرز اور گیٹ ویز", + "comboStrategyAria": "مشترکہ حکمت عملی Aria", + "input": "ان پٹ", + "testingConnection": "کنکشن کی جانچ ہو رہی ہے", + "excludeDomains": "ڈومینز خارج کریں", + "webCookieProviders": "ویب کوکی فراہم کنندگان", + "allTestsPassed": "تمام ٹیسٹ کامیاب ہوئے", + "openaiCompatibleName": "Openai سے ہم آہنگ نام", + "warningCostOptimizedPartialPricing": "انتباہ: لاگت کے لحاظ سے بہتر بنائی گئی جزوی قیمت بندی", + "comboDefaultsGuideTitle": "مشترکہ طے شدہ ترتیبات کی رہنما کا عنوان", + "hoursAgo": "گھنٹے پہلے", + "notAvailable": "دستیاب نہیں", + "skipAndContinue": "چھوڑیں اور جاری رکھیں", + "moderations": "مواد کی نگرانی", + "proxyConfig": "پراکسی کنفیگریشن", + "upstreamProxyProviders": "اپ اسٹریم پراکسی فراہم کنندگان", + "exportAll": "سب برآمد کریں", + "queuedCount": "قطار میں موجود تعداد", + "resetAll": "سب ری سیٹ کریں", + "noTranslations": "کوئی ترجمہ نہیں", + "avgLatency": "اوسط تاخیر", + "throttleStatus": "تھروٹل کی حیثیت", + "backupRetentionDesc": "بیک اپ برقرار رکھنے کی تفصیل", + "noCBData": "کوئی Cb ڈیٹا نہیں", + "chainDeleted": "چین حذف کر دی گئی", + "timeLeft": "باقی وقت", + "expirationBannerExpired": "میعاد ختم ہونے کا بینر ختم ہو چکا ہے", + "language": "زبان", + "invalidFileType": "فائل کی قسم نامعتبر ہے", + "monitoredProviders": "زیر نگرانی فراہم کنندگان", + "errors": "خرابیاں", + "heap": "ہیپ", + "chatCompletions": "چیٹ کی تکمیلیں", + "exampleTemplatesHint": "مثالی ٹیمپلیٹس کا اشارہ", + "retryDelayLabel": "دوبارہ کوشش میں تاخیر کا لیبل", + "audioTranscription": "آڈیو کی تحریری نقل", + "fallbackChainsDesc": "فال بیک چینز کی تفصیل", + "exampleTemplates": "مثالی ٹیمپلیٹس", + "connectionsCount": "کنکشنز کی تعداد", + "modelsPathLabel": "ماڈلز کے پاتھ کا لیبل", + "activeProvidersHint": "فعال فراہم کنندگان کا اشارہ", + "activeLockouts": "فعال لاک آؤٹس", + "invalid": "نامعتبر", + "skipPassword": "پاس ورڈ چھوڑیں", + "moveUp": "اوپر منتقل کریں", + "timeRange": "وقت کی حد", + "stickyLimitDesc": "اسٹکی حد کی تفصیل", + "cloudBenefitEdge": "کلاؤڈ بینیفٹ ایج", + "custom": "حسبِ ضرورت", + "verifying": "تصدیق جاری ہے", + "baseUrlLabel": "بنیادی URL کا لیبل", + "setPassword": "پاس ورڈ مقرر کریں", + "safeSearchStrict": "محفوظ تلاش سخت", + "noChangesSinceBackup": "بیک اپ کے بعد کوئی تبدیلی نہیں", + "modelsPathHint": "ماڈلز کے راستے کا اشارہ", + "audioTranscriptions": "آڈیو کی نقل نویسی", + "testCombo": "کمبو کی جانچ کریں", + "mcpQuickStartTitle": "Mcp فوری آغاز کا عنوان", + "comboUpdated": "کمبو اپ ڈیٹ ہو گیا", + "weighted": "وزنی", + "providers": "فراہم کنندگان", "ccCompatibleLabel": "Cc Compatible Label", - "noFallbackChainsDesc": "No Fallback Chains Desc", - "yesImport": "Yes Import", - "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint", - "tabApis": "Tab Apis", - "sectionDescription": "Section Description", - "filter": "Filter", - "purgeLogsFailed": "Purge Logs Failed", - "latency": "Latency", - "testAllOAuth": "Test All O Auth", - "mcpQuickStartStep3": "Mcp Quick Start Step3", - "repairEnvFailed": "Repair Env Failed", - "zedImportHint": "Zed Import Hint", - "modelsAcrossEndpoints": "Models Across Endpoints", - "autoDisableBannedAccounts": "Auto Disable Banned Accounts", - "securityDesc": "Security Desc", - "listModels": "List Models", - "backupRestore": "Backup Restore", - "target": "Target", - "zedImportSuccess": "Zed Import Success", - "lastHeaderUpdate": "Last Header Update", - "categoryCore": "Category Core", - "noFallbackChains": "No Fallback Chains", - "noSearchProviders": "No Search Providers", - "autoBalance": "Auto Balance", - "noModelsYet": "No Models Yet", - "signatureFamily": "Signature Family", - "externalApiCalls": "External Api Calls", - "providerOverridesDesc": "Provider Overrides Desc", - "signatureTool": "Signature Tool", - "connectionFailed": "Connection Failed", - "activeLimitersPlural": "Active Limiters Plural", - "doneDesc": "Done Desc", - "down": "Down", - "noDataYet": "No Data Yet", - "activeProviders": "Active Providers", - "nameInvalid": "Name Invalid", - "skip": "Skip", - "createChain": "Create Chain", - "audioSpeech": "Audio Speech", - "cacheCleared": "Cache Cleared", - "searchTypeNews": "Search Type News", - "durationMillisecondsShort": "Duration Milliseconds Short", - "addOpenAICompatible": "Add Open Ai Compatible", - "chatTesterTab": "Chat Tester", - "queued": "Queued", - "domainPlaceholder": "Domain Placeholder", - "durationMinutesShort": "Duration Minutes Short", - "verifyingConnection": "Verifying Connection", - "imageProviders": "Image Providers", - "protocolToolsLabel": "Protocol Tools Label", - "queryPlaceholder": "Query Placeholder", - "videoGeneration": "Video Generation", - "timeRangeWeek": "Time Range Week", - "limitExhausted": "Limit Exhausted", - "failedDisable": "Failed Disable", - "inMemoryNote": "In Memory Note", - "compatibleHint": "Compatible Hint", - "errorShort": "Error Short", - "advancedHint": "Advanced Hint", - "restoreFailed": "Restore Failed", - "searchProvidersHeading": "Search Providers Heading", - "comboName": "Combo Name", - "autoDisableDescription": "Auto Disable Description", - "embeddingsDesc": "Embeddings Desc", - "operational": "Operational", - "testAllApiKey": "Test All Api Key", - "backupCreated": "Backup Created", - "errorDuringImport": "Error During Import", - "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2", - "connecting": "Connecting", - "fillModelAndProviders": "Fill Model And Providers", - "syncing": "Syncing", - "resetConfirm": "Reset Confirm", - "trackMetrics": "Track Metrics", - "successful": "Successful", - "recovering": "Recovering", - "autoDisableThreshold": "Auto Disable Threshold", + "noFallbackChainsDesc": "کوئی فال بیک چین موجود نہیں ہے", + "yesImport": "ہاں، درآمد کریں", + "lockoutsAutoRefreshHint": "لاک آؤٹس کی خودکار تازہ کاری کا اشارہ", + "tabApis": "APIs ٹیب", + "sectionDescription": "حصے کی تفصیل", + "filter": "فلٹر", + "purgeLogsFailed": "لاگز صاف کرنے میں ناکامی", + "latency": "تاخیر", + "testAllOAuth": "تمام O Auth کی جانچ کریں", + "mcpQuickStartStep3": "Mcp فوری آغاز مرحلہ 3", + "repairEnvFailed": "Env کی مرمت ناکام ہو گئی", + "zedImportHint": "Zed درآمد کا اشارہ", + "modelsAcrossEndpoints": "اینڈ پوائنٹس پر ماڈلز", + "autoDisableBannedAccounts": "پابندی زدہ اکاؤنٹس کو خودکار طور پر غیر فعال کریں", + "securityDesc": "سیکیورٹی کی تفصیل", + "listModels": "ماڈلز کی فہرست بنائیں", + "backupRestore": "بیک اپ بحال کریں", + "target": "ہدف", + "zedImportSuccess": "Zed کامیابی سے درآمد ہو گیا", + "lastHeaderUpdate": "آخری ہیڈر اپ ڈیٹ", + "categoryCore": "بنیادی زمرہ", + "noFallbackChains": "کوئی فال بیک چین نہیں", + "noSearchProviders": "کوئی تلاش فراہم کنندہ نہیں", + "autoBalance": "خودکار توازن", + "noModelsYet": "ابھی تک کوئی ماڈل نہیں", + "signatureFamily": "دستخطی خاندان", + "externalApiCalls": "بیرونی API کالز", + "providerOverridesDesc": "فراہم کنندہ اوور رائیڈز کی تفصیل", + "signatureTool": "دستخطی ٹول", + "connectionFailed": "کنکشن ناکام ہو گیا", + "activeLimitersPlural": "فعال محدود کنندگان", + "doneDesc": "تفصیل مکمل", + "down": "نیچے", + "noDataYet": "ابھی تک کوئی ڈیٹا نہیں", + "activeProviders": "فعال فراہم کنندگان", + "nameInvalid": "نام نامعتبر ہے", + "skip": "چھوڑ دیں", + "createChain": "چین بنائیں", + "audioSpeech": "آڈیو اسپیچ", + "cacheCleared": "کیش صاف کر دیا گیا", + "searchTypeNews": "تلاش کی قسم: خبریں", + "durationMillisecondsShort": "دورانیہ (ملی سیکنڈ)", + "addOpenAICompatible": "Open Ai سے ہم آہنگ شامل کریں", + "chatTesterTab": "چیٹ ٹیسٹر", + "queued": "قطار میں", + "domainPlaceholder": "ڈومین کا پلیس ہولڈر", + "durationMinutesShort": "دورانیہ (منٹ)", + "verifyingConnection": "کنکشن کی توثیق ہو رہی ہے", + "imageProviders": "تصویری فراہم کنندگان", + "protocolToolsLabel": "پروٹوکول ٹولز کا لیبل", + "queryPlaceholder": "استفسار کا پلیس ہولڈر", + "videoGeneration": "ویڈیو جنریشن", + "timeRangeWeek": "مدت: ہفتہ", + "limitExhausted": "حد ختم ہو گئی", + "failedDisable": "غیر فعال کرنا ناکام رہا", + "inMemoryNote": "ان میموری نوٹ", + "compatibleHint": "مطابقت سے متعلق اشارہ", + "errorShort": "مختصر خرابی", + "advancedHint": "اعلیٰ اختیارات سے متعلق اشارہ", + "restoreFailed": "بحالی ناکام رہی", + "searchProvidersHeading": "تلاش کے فراہم کنندگان", + "comboName": "کومبو کا نام", + "autoDisableDescription": "خودکار طور پر غیر فعال کرنے کی تفصیل", + "embeddingsDesc": "ایمبیڈنگز کی تفصیل", + "operational": "فعال", + "testAllApiKey": "تمام API کلیدوں کی جانچ کریں", + "backupCreated": "بیک اپ بنا دیا گیا", + "errorDuringImport": "درآمد کے دوران خرابی", + "comboDefaultsGuideHint2": "کومبو کی طے شدہ ترتیبات کی رہنمائی کا اشارہ 2", + "connecting": "کنیکٹ ہو رہا ہے", + "fillModelAndProviders": "ماڈل اور فراہم کنندگان درج کریں", + "syncing": "ہم وقت سازی جاری ہے", + "resetConfirm": "ری سیٹ کی تصدیق", + "trackMetrics": "میٹرکس ٹریک کریں", + "successful": "کامیاب", + "recovering": "بحالی جاری ہے", + "autoDisableThreshold": "خودکار طور پر غیر فعال کرنے کی حد", "anthropic": "Anthropic", - "syncingData": "Syncing Data", - "cloudBenefitPorts": "Cloud Benefit Ports", - "compatibleProviders": "Compatible Providers", + "syncingData": "ڈیٹا کی ہم وقت سازی جاری ہے", + "cloudBenefitPorts": "کلاؤڈ بینیفٹ پورٹس", + "compatibleProviders": "مطابقت پذیر فراہم کنندگان", "freeTierProviders": "مفت درجے فراہم کرنے والے", "freeTierLabel": "مفت درجے دستیاب ہے۔", "freeTierProvidersDesc": "مفت درجات والے فراہم کنندگان — کچھ کو API کلیدی سائن اپ کی ضرورت ہوتی ہے، دوسروں کو بالکل بھی اسناد کی ضرورت نہیں ہوتی ہے۔", - "clearCache": "Clear Cache", - "reqs": "Reqs", - "addAnthropicCompatible": "Add Anthropic Compatible", - "apiKeyProviders": "Api Key Providers", - "tabsAria": "Tabs Aria", - "resetting": "Resetting", - "millisecondsAbbr": "Milliseconds Abbr", - "backupReasonPreRestore": "Backup Reason Pre Restore", - "disableCloud": "Disable Cloud", - "newProviderNameAria": "New Provider Name Aria", - "passwordsMismatch": "Passwords Mismatch", - "a2aQuickStartStep3": "A2A Quick Start Step3", - "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix", - "failedAddProvider": "Failed Add Provider", - "addAtLeastOneProvider": "Add At Least One Provider", - "reasonSeparator": "Reason Separator", - "zedImporting": "Zed Importing", - "confirmPasswordPlaceholder": "Confirm Password Placeholder", - "whatYouGet": "What You Get", - "signatureSession": "Signature Session", - "errorCountNoCode": "Error Count No Code", - "testing": "Testing", - "providersCommaSeparated": "Providers Comma Separated", - "exportDatabase": "Export Database", - "hitRate": "Hit Rate", - "completionsLegacy": "Completions Legacy", - "removeModel": "Remove Model", - "timeRangeDay": "Time Range Day", - "cloudRequestFailed": "Cloud Request Failed", - "updatedAt": "Updated At", - "monitoredProvidersHint": "Monitored Providers Hint", - "connectionSuccessful": "Connection Successful", - "latencyP50": "Latency P50", - "logsDeleted": "Logs Deleted", - "chatTester": "Chat Tester", - "safeSearchOff": "Safe Search Off", - "nameHint": "Name Hint", - "debugToggle": "Debug Toggle", - "embedding": "Embedding", - "issuesLabel": "Issues Label", - "optionAny": "Option Any", - "maxNestingDepth": "Max Nesting Depth", - "rerank": "Rerank", - "checking": "Checking", - "getStarted": "Get Started", - "restoreSuccess": "Restore Success", - "issuesDetected": "Issues Detected", - "signatureCache": "Signature Cache", - "modelLockouts": "Model Lockouts", - "usingCloudProxy": "Using Cloud Proxy", - "loadingHealth": "Loading Health", - "providerOverrides": "Provider Overrides", - "audioTranscriptionDesc": "Audio Transcription Desc", - "learnedFromHeaders": "Learned From Headers", - "totalRequests": "Total Requests", - "cloudUnstableNote": "Cloud Unstable Note", + "clearCache": "کیش صاف کریں", + "reqs": "درخواستیں", + "addAnthropicCompatible": "Anthropic سے مطابقت پذیر فراہم کنندہ شامل کریں", + "apiKeyProviders": "API کلید کے فراہم کنندگان", + "tabsAria": "ٹیبز کا ARIA", + "resetting": "ری سیٹ کیا جا رہا ہے", + "millisecondsAbbr": "ملی سیکنڈ کا مخفف", + "backupReasonPreRestore": "بحالی سے پہلے بیک اپ کی وجہ", + "disableCloud": "کلاؤڈ غیر فعال کریں", + "newProviderNameAria": "نئے فراہم کنندہ کے نام کا ARIA", + "passwordsMismatch": "پاس ورڈز مماثل نہیں ہیں", + "a2aQuickStartStep3": "A2A فوری آغاز کا مرحلہ 3", + "liveMonitorDescriptionSuffix": "لائیو مانیٹر کی تفصیل کا لاحقہ", + "failedAddProvider": "فراہم کنندہ شامل کرنے میں ناکامی", + "addAtLeastOneProvider": "کم از کم ایک فراہم کنندہ شامل کریں", + "reasonSeparator": "وجہ کا جداکار", + "zedImporting": "Zed درآمد کر رہا ہے", + "confirmPasswordPlaceholder": "پاس ورڈ کی تصدیق کریں", + "whatYouGet": "آپ کو کیا ملتا ہے", + "signatureSession": "دستخطی سیشن", + "errorCountNoCode": "کوڈ کے بغیر خرابیوں کی تعداد", + "testing": "جانچ جاری ہے", + "providersCommaSeparated": "کوما سے جدا کردہ فراہم کنندگان", + "exportDatabase": "ڈیٹابیس برآمد کریں", + "hitRate": "ہٹ ریٹ", + "completionsLegacy": "تکمیلات (لیگیسی)", + "removeModel": "ماڈل ہٹائیں", + "timeRangeDay": "وقت کی حد: دن", + "cloudRequestFailed": "کلاؤڈ درخواست ناکام ہو گئی", + "updatedAt": "اپ ڈیٹ کا وقت", + "monitoredProvidersHint": "مانیٹر کیے گئے فراہم کنندگان کا اشارہ", + "connectionSuccessful": "کنکشن کامیاب رہا", + "latencyP50": "لیٹنسی P50", + "logsDeleted": "لاگز حذف کر دیے گئے", + "chatTester": "چیٹ ٹیسٹر", + "safeSearchOff": "محفوظ تلاش بند ہے", + "nameHint": "نام کا اشارہ", + "debugToggle": "ڈیبگ ٹوگل", + "embedding": "ایمبیڈنگ", + "issuesLabel": "مسائل کا لیبل", + "optionAny": "کوئی بھی اختیار", + "maxNestingDepth": "نیسٹنگ کی زیادہ سے زیادہ گہرائی", + "rerank": "دوبارہ درجہ بندی", + "checking": "جانچ جاری ہے", + "getStarted": "شروع کریں", + "restoreSuccess": "بحالی کامیاب رہی", + "issuesDetected": "مسائل کا پتا چلا", + "signatureCache": "دستخط کیش", + "modelLockouts": "ماڈل لاک آؤٹس", + "usingCloudProxy": "Cloud Proxy استعمال ہو رہا ہے", + "loadingHealth": "صحت کی صورتحال لوڈ ہو رہی ہے", + "providerOverrides": "فراہم کنندہ اوور رائیڈز", + "audioTranscriptionDesc": "آڈیو ٹرانسکرپشن کی تفصیل", + "learnedFromHeaders": "ہیڈرز سے سیکھا گیا", + "totalRequests": "کل درخواستیں", + "cloudUnstableNote": "Cloud کے غیر مستحکم ہونے کا نوٹ", "gamificationAdmin": "گیمیفیکیشن ایڈمن", "monitorAnomaliesAndHealth": "بے ضابطگیوں اور نظام کی صحت کی نگرانی کریں۔", "flaggedAnomalies": "نشان زد بے ضابطگیوں", "noAnomaliesDetected": "کوئی بے ضابطگیوں کا پتہ نہیں چلا", "apiKey": "API کلید", - "xpLastHour": "XP (1h)", + "xpLastHour": "XP (1 گھنٹہ)", "zScore": "زیڈ سکور", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "مشکوک", "tokensCommunityServers": "کمیونٹی سرورز", "tokensServerNamePlaceholder": "سرور کا نام", "tokensApiKeyPlaceholder": "API کلید", @@ -801,44 +801,44 @@ "batchPageLoadingMore": "مزید لوڈ ہو رہا ہے…", "recommended": "تجویز کردہ", "understand": "میں سمجھ گیا", - "batchConceptTitle": "Batch processing", - "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.", - "batchConceptHowItWorks": "How it works", - "batchConceptBenefit50pct": "50% discount on input + output tokens", - "batchConceptAsync24h": "Async with a 24h completion window", - "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", - "filesConceptTitle": "Batch files", - "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.", - "filesConceptInput": "Input — your JSONL with one request per line", - "filesConceptOutput": "Output — results from completed requests", - "filesConceptError": "Errors — requests that failed", - "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)", - "wizardTitle": "New batch", - "wizardClose": "Close", - "wizardNext": "Next", - "wizardBack": "Back", - "wizardCancel": "Cancel", - "wizardCreate": "Create batch", - "wizardCreating": "Creating…", - "wizardStep1Destination": "Destination", - "wizardStep2Input": "Input", - "wizardStep3Validate": "Validate", - "wizardStep4Cost": "Cost & create", - "wizardProviderLabel": "Provider", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "batchConceptTitle": "بیچ پروسیسنگ", + "batchConceptSubtitle": "تقریباً 50% لاگت پر ہزاروں درخواستوں کو غیر ہم وقت طور پر پراسیس کریں (24 گھنٹے کی مدت)۔ جائزوں، درجہ بندی اور ایمبیڈنگز کے لیے مثالی۔", + "batchConceptHowItWorks": "یہ کیسے کام کرتا ہے", + "batchConceptBenefit50pct": "ان پٹ + آؤٹ پٹ ٹوکنز پر 50% رعایت", + "batchConceptAsync24h": "24 گھنٹے کی تکمیل کی مدت کے ساتھ غیر ہم وقت", + "batchConceptUseCases": "بڑے پیمانے پر درجہ بندی، جائزوں اور ایمبیڈنگز کے لیے بہترین", + "batchHeaderSubtitle": "متعدد درخواستوں کو ایک جاب کے طور پر چلائیں", + "batchStep1": "1 · JSONL اپ لوڈ کریں", + "batchStep1Desc": "درخواستیں شامل کریں", + "batchStep2": "2 · بیچ بنائیں", + "batchStep2Desc": "جاب چلائیں", + "batchStep3": "3 · نتائج حاصل کریں", + "batchStep3Desc": "آؤٹ پٹ ڈاؤن لوڈ کریں", + "filesConceptTitle": "بیچ فائلیں", + "filesConceptSubtitle": "بیچز کے زیرِ استعمال JSONL فائلیں: اِن پٹ درخواستیں، نتائج، اور خرابیاں۔", + "filesConceptInput": "اِن پٹ — آپ کی JSONL، ہر سطر میں ایک درخواست کے ساتھ", + "filesConceptOutput": "آؤٹ پٹ — مکمل شدہ درخواستوں کے نتائج", + "filesConceptError": "خرابیاں — ناکام ہونے والی درخواستیں", + "filesConceptRetention": "محفوظ رکھنے کی مدت: بطورِ ڈیفالٹ 30 دن (Anthropic پر 29 دن)", + "wizardTitle": "نیا بیچ", + "wizardClose": "بند کریں", + "wizardNext": "اگلا", + "wizardBack": "واپس", + "wizardCancel": "منسوخ کریں", + "wizardCreate": "بیچ بنائیں", + "wizardCreating": "بنایا جا رہا ہے…", + "wizardStep1Destination": "منزل", + "wizardStep2Input": "اِن پٹ", + "wizardStep3Validate": "توثیق کریں", + "wizardStep4Cost": "لاگت اور تخلیق", + "wizardProviderLabel": "فراہم کنندہ", + "wizardEndpointLabel": "اینڈ پوائنٹ", + "wizardModelLabel": "ماڈل", "wizardInputKindJsonl": "JSONL", - "wizardInputKindCsv": "CSV (we'll convert)", - "wizardDropOrPick": "Drop a file or click to pick", - "wizardCsvMappingTitle": "Map CSV columns → request fields", - "wizardCsvMappingAddField": "Add field", + "wizardInputKindCsv": "CSV (ہم اسے تبدیل کر دیں گے)", + "wizardDropOrPick": "فائل یہاں چھوڑیں یا منتخب کرنے کے لیے کلک کریں", + "wizardCsvMappingTitle": "CSV کالمز → درخواست کے فیلڈز سے میپ کریں", + "wizardCsvMappingAddField": "فیلڈ شامل کریں", "wizardCsvNoColumns": "CSV ہیڈر میں کوئی کالم نہیں ملا۔", "wizardCsvIgnoreColumn": "— نظر انداز کریں —", "wizardCsvCustomIdMapped": "custom_id میپ کیا گیا", @@ -846,114 +846,114 @@ "wizardCsvApplyMapping": "میپنگ لاگو کریں", "wizardCsvRowsParsed": "{count} قطاروں کا تجزیہ کیا گیا", "wizardCsvRowsSkipped": "{count} قطاریں چھوڑ دی گئیں", - "wizardCsvRowError": "Row {row}: {reason}", - "wizardValidationOk": "All lines valid", - "wizardValidating": "Validating…", - "wizardValidationParseFailed": "Validation failed — could not parse content.", - "wizardValidationSummary": "{lines} lines · {ids} unique custom_ids", + "wizardCsvRowError": "قطار {row}: {reason}", + "wizardValidationOk": "تمام سطریں درست ہیں", + "wizardValidating": "توثیق جاری ہے…", + "wizardValidationParseFailed": "توثیق ناکام — مواد پارس نہیں کیا جا سکا۔", + "wizardValidationSummary": "{lines} سطریں · {ids} منفرد custom_ids", "wizardValidationErrorCount": "{count, plural, one {# غلطی ملی} other {# غلطیاں ملیں}}", - "wizardValidationDuplicateIds": "Duplicate custom_ids detected:", - "wizardValidationFirstErrors": "Errors (first {count}):", - "wizardValidationLine": "Line {line}", - "wizardValidationErrors": "Validation errors", - "wizardValidationPreview": "Preview (first 5 requests)", - "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.", - "wizardCostSync": "Sync cost", - "wizardCostBatch": "Batch cost (-50%)", - "wizardCostSavings": "Savings", - "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.", - "wizardErrorUpload": "Failed to upload file. Try again.", - "wizardErrorCreate": "Failed to create batch. Try again.", - "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.", - "uploadModalTitle": "Upload batch file", - "uploadModalDropOrPick": "Drop a .jsonl file or click to pick", - "uploadModalUpload": "Upload", - "uploadModalCancel": "Cancel", - "uploadModalError": "Upload failed. Try again.", - "uploadModalSuccess": "Uploaded", - "uploadModalSizeLimit": "Max 512 MB", - "batchListNewButton": "New batch", - "batchListAutoRefresh": "Auto-refresh 30s", - "batchListCostColumn": "Cost", - "batchActionCancel": "Cancel", - "batchActionDownloadOutput": "Download output", - "batchActionDownloadErrors": "Download errors", - "batchActionRetry": "Retry failed", - "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.", - "expirationBadgeCritical": "Critical", - "expirationBadgeWarning": "Soon", - "expirationBadgeNormal": "Pending", - "expirationBadgeExpired": "Expired", - "filesListUploadButton": "Upload", - "filesListUsedByColumn": "Used by", - "filesListUsedByNone": "None", - "filesListUsedByRoleInput": "input", - "filesListUsedByRoleOutput": "output", - "filesListUsedByRoleError": "error", - "filesListSizeColumn": "Size", - "batchListProgressPartial": "(partial)", - "batchListProviderColumn": "Provider", + "wizardValidationDuplicateIds": "نقل شدہ custom_ids کا پتا چلا:", + "wizardValidationFirstErrors": "خرابیاں (پہلی {count}):", + "wizardValidationLine": "سطر {line}", + "wizardValidationErrors": "توثیقی خرابیاں", + "wizardValidationPreview": "پیش منظر (پہلی 5 درخواستیں)", + "wizardValidationSamplingNote": "فائل بڑی ہے — نمونہ لے کر توثیق کی گئی ہے (پہلی 1000 + آخری 100 سطریں)۔ مکمل توثیق سرور کی جانب سے چلتی ہے۔", + "wizardCostSync": "سنک لاگت", + "wizardCostBatch": "بیچ لاگت (-50%)", + "wizardCostSavings": "بچت", + "wizardCostEstimatedNotice": "تخمینی لاگت — اصل بل مختلف ہو سکتا ہے۔", + "wizardErrorUpload": "فائل اپ لوڈ نہیں ہو سکی۔ دوبارہ کوشش کریں۔", + "wizardErrorCreate": "بیچ نہیں بنایا جا سکا۔ دوبارہ کوشش کریں۔", + "wizardEmptyProviders": "بیچ بنانے کے لیے بیچ سپورٹ والا کوئی فراہم کنندہ (OpenAI، Anthropic، یا Gemini) منسلک کریں۔", + "uploadModalTitle": "بیچ فائل اپ لوڈ کریں", + "uploadModalDropOrPick": ".jsonl فائل یہاں چھوڑیں یا منتخب کرنے کے لیے کلک کریں", + "uploadModalUpload": "اپ لوڈ کریں", + "uploadModalCancel": "منسوخ کریں", + "uploadModalError": "اپ لوڈ ناکام ہو گیا۔ دوبارہ کوشش کریں۔", + "uploadModalSuccess": "اپ لوڈ ہو گیا", + "uploadModalSizeLimit": "زیادہ سے زیادہ 512 MB", + "batchListNewButton": "نیا بیچ", + "batchListAutoRefresh": "ہر 30 سیکنڈ بعد خودکار ریفریش", + "batchListCostColumn": "لاگت", + "batchActionCancel": "منسوخ کریں", + "batchActionDownloadOutput": "آؤٹ پٹ ڈاؤن لوڈ کریں", + "batchActionDownloadErrors": "خرابیاں ڈاؤن لوڈ کریں", + "batchActionRetry": "ناکام درخواستیں دوبارہ آزمائیں", + "batchActionRetryConfirm": "{n} ناکام درخواستیں دوبارہ آزمائیں؟ حتمی لاگت استعمال ہونے والے اصل ٹوکنز پر منحصر ہے۔", + "expirationBadgeCritical": "انتہائی اہم", + "expirationBadgeWarning": "جلد", + "expirationBadgeNormal": "زیرِ التوا", + "expirationBadgeExpired": "میعاد ختم", + "filesListUploadButton": "اپ لوڈ", + "filesListUsedByColumn": "استعمال کنندہ", + "filesListUsedByNone": "کوئی نہیں", + "filesListUsedByRoleInput": "ان پٹ", + "filesListUsedByRoleOutput": "آؤٹ پٹ", + "filesListUsedByRoleError": "خرابی", + "filesListSizeColumn": "سائز", + "batchListProgressPartial": "(جزوی)", + "batchListProviderColumn": "فراہم کنندہ", "batchListProviderUnknown": "—", - "batchListProviderOther": "Other", - "batchListTitle": "Batches", - "batchListCount": "{count} batches", - "batchListRemovingCompleted": "Removing…", - "batchListRemoveCompleted": "Remove completed", - "batchListTableStatus": "Status", + "batchListProviderOther": "دیگر", + "batchListTitle": "بیچز", + "batchListCount": "{count} بیچز", + "batchListRemovingCompleted": "ہٹایا جا رہا ہے…", + "batchListRemoveCompleted": "مکمل شدہ ہٹائیں", + "batchListTableStatus": "حالت", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", - "batchListTableModel": "Model", - "batchListTableProgress": "Progress", - "batchListTableCreated": "Created", - "batchListTableExpires": "Expires", - "batchListLoading": "Loading…", - "batchListEmpty": "No batches found", - "batchListValidating": "Validating…", - "batchStatusAll": "All statuses", - "batchStatusInProgress": "In progress", - "batchStatusValidating": "Validating", - "batchStatusFinalizing": "Finalizing", - "batchStatusCompleted": "Completed", - "batchStatusFailed": "Failed", - "batchStatusCancelled": "Cancelled", - "batchStatusCancelling": "Cancelling", - "batchStatusExpired": "Expired", - "batchStatusCompletedWithFailures": "completed with failures", - "batchStatusInProgressWithFailures": "in progress (with failures)", - "batchStatusFinalizingWithFailures": "finalizing (with failures)", - "batchStatusCancelledWithFailures": "cancelled with failures", - "batchStatusExpiredWithFailures": "expired (partial)", - "wizardCostEstimating": "Estimating cost…", - "wizardCostRequests": "Requests", - "wizardCostInputTok": "input tok", - "wizardCostOutputTok": "output tok", - "wizardCostWindow": "Window", - "wizardDestinationSelectProvider": "Select a provider…", - "wizardDestinationSelectModel": "Select a model…", - "wizardDestinationConnectProvider": "Connect a provider", - "batchListBatchCreated": "Batch {id} created — refreshing list…", - "batchListBatchCreatedDismiss": "Dismiss", - "batchListRefreshing": "Refreshing…", - "batchListRefresh": "Refresh", - "uploadFileModalRemove": "Remove", - "uploadFileModalUploading": "Uploading…", - "wizardInputReading": "Reading file…", - "wizardInputReady": "Ready", - "wizardInputLargeFileLabel": "Large file — sampling validation", - "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.", - "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.", - "wizardCostWindow24h": "24h completion window", - "wizardValidationFieldsOk": "required fields valid", - "filesListDelete": "Delete", - "filesListDownload": "Download", - "batchDetailActionCancel": "Cancel batch", - "batchDetailActionRetry": "Retry failed requests", - "batchDetailCancelling": "Cancelling…", - "batchDetailRetrying": "Preparing retry…", - "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.", - "batchActionCancelError": "Failed to cancel batch. Try again.", - "batchActionRetryError": "Failed to retry failed requests. Try again.", - "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)", + "batchListTableEndpoint": "اینڈ پوائنٹ", + "batchListTableModel": "ماڈل", + "batchListTableProgress": "پیش رفت", + "batchListTableCreated": "تخلیق کیا گیا", + "batchListTableExpires": "میعاد ختم ہونے کا وقت", + "batchListLoading": "لوڈ ہو رہا ہے…", + "batchListEmpty": "کوئی بیچ نہیں ملا", + "batchListValidating": "توثیق ہو رہی ہے…", + "batchStatusAll": "تمام حالتیں", + "batchStatusInProgress": "جاری ہے", + "batchStatusValidating": "توثیق ہو رہی ہے", + "batchStatusFinalizing": "حتمی شکل دی جا رہی ہے", + "batchStatusCompleted": "مکمل", + "batchStatusFailed": "ناکام", + "batchStatusCancelled": "منسوخ", + "batchStatusCancelling": "منسوخ کیا جا رہا ہے", + "batchStatusExpired": "میعاد ختم", + "batchStatusCompletedWithFailures": "ناکامیوں کے ساتھ مکمل", + "batchStatusInProgressWithFailures": "جاری ہے (ناکامیوں کے ساتھ)", + "batchStatusFinalizingWithFailures": "حتمی شکل دی جا رہی ہے (ناکامیوں کے ساتھ)", + "batchStatusCancelledWithFailures": "ناکامیوں کے ساتھ منسوخ", + "batchStatusExpiredWithFailures": "میعاد ختم (جزوی)", + "wizardCostEstimating": "لاگت کا تخمینہ لگایا جا رہا ہے…", + "wizardCostRequests": "درخواستیں", + "wizardCostInputTok": "اِن پٹ ٹوکنز", + "wizardCostOutputTok": "آؤٹ پٹ ٹوکنز", + "wizardCostWindow": "ونڈو", + "wizardDestinationSelectProvider": "فراہم کنندہ منتخب کریں…", + "wizardDestinationSelectModel": "ماڈل منتخب کریں…", + "wizardDestinationConnectProvider": "فراہم کنندہ منسلک کریں", + "batchListBatchCreated": "بیچ {id} تخلیق ہو گیا — فہرست تازہ کی جا رہی ہے…", + "batchListBatchCreatedDismiss": "بند کریں", + "batchListRefreshing": "تازہ کیا جا رہا ہے…", + "batchListRefresh": "تازہ کریں", + "uploadFileModalRemove": "ہٹائیں", + "uploadFileModalUploading": "اپ لوڈ ہو رہا ہے…", + "wizardInputReading": "فائل پڑھی جا رہی ہے…", + "wizardInputReady": "تیار", + "wizardInputLargeFileLabel": "بڑی فائل — نمونے کی توثیق ہو رہی ہے", + "wizardInputCsvJsonlReady": "JSONL تیار ہو گیا — توثیق کے لیے تیار ہے۔", + "wizardInputLargeFileWarning": "بڑی فائل کا پتا چلا — توثیق نمونے لے کر کی جاتی ہے (ابتدائی 5 MB + آخری 100 KB)۔ مکمل توثیق سرور کی جانب سے ہوتی ہے۔", + "wizardCostWindow24h": "تکمیل کے لیے 24 گھنٹے کی مہلت", + "wizardValidationFieldsOk": "مطلوبہ فیلڈز درست ہیں", + "filesListDelete": "حذف کریں", + "filesListDownload": "ڈاؤن لوڈ کریں", + "batchDetailActionCancel": "بیچ منسوخ کریں", + "batchDetailActionRetry": "ناکام درخواستوں کی دوبارہ کوشش کریں", + "batchDetailCancelling": "منسوخ کیا جا رہا ہے…", + "batchDetailRetrying": "دوبارہ کوشش کی تیاری ہو رہی ہے…", + "batchDetailCancelConfirm": "یہ بیچ منسوخ کریں؟ زیرِ عمل درخواستیں رک جائیں گی۔", + "batchActionCancelError": "بیچ منسوخ نہیں ہو سکا۔ دوبارہ کوشش کریں۔", + "batchActionRetryError": "ناکام درخواستوں کی دوبارہ کوشش نہیں ہو سکی۔ دوبارہ کوشش کریں۔", + "batchConceptRetentionNote": "نتائج اور خرابی کی فائلیں 30 دن تک محفوظ رکھی جاتی ہیں (Anthropic: 29 دن)", "batchFilesSizeColumn": "سائز", "toggleNoAuthProvider": "نو-اتھ فراہم کنندہ کو تبدیل کریں", "loadingModels": "ماڈلز لوڈ ہو رہے ہیں…", @@ -985,50 +985,50 @@ "batchFilePreviewTruncated": "پہلی {shown} لائنیں دکھا رہے ہیں ({total} کل لائنیں)", "batchFileDownloadFull": "مکمل فائل ڈاؤن لوڈ کریں" }, - "disabled": "Disabled", - "featureFlagOmnirouteEmergencyFallbackDescription": "Route budget-exhausted requests to the emergency free fallback provider/model.", - "featureFlagArenaEloSyncEnabledDescription": "Enable periodic Arena AI leaderboard ELO sync for model intelligence rankings.", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "disabled": "غیر فعال", + "featureFlagOmnirouteEmergencyFallbackDescription": "بجٹ ختم ہونے والی درخواستوں کو ہنگامی مفت متبادل provider/model کی طرف بھیجیں۔", + "featureFlagArenaEloSyncEnabledDescription": "ماڈل انٹیلی جنس درجہ بندی کے لیے Arena AI لیڈربورڈ ELO کی وقتاً فوقتاً ہم وقت سازی فعال کریں۔", + "featureFlagUniversalContextHandoffEnabledDescription": "جب کومبو روٹنگ ماڈلز تبدیل کرے تو گفتگو کے خلاصے بنائیں اور شامل کریں۔ ماڈل کی تبدیلیوں کو الگ الگ سمجھنے اور تمام موجودہ و آئندہ کومبوز کے لیے پس منظر کی حوالگی کی درخواستوں کو روکنے کے لیے اسے غیر فعال کریں۔", "featureFlagExposeCcDiscoveryAliasesDescription": "/v1/models پر claude/<provider>/<model> آئینہ شناختوں کا اشتہار دیں تاکہ Claude Code گیٹ وے ماڈل کی دریافت غیر-Claude ماڈلز کی فہرست بنائے۔ انتباہ: جب عالمی طور پر فعال ہو تو تمام کلائنٹس کے لیے کیٹلاگ کی اندراجات دوگنا کرتا ہے۔", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> گیٹ وے عرفیات کے لیے مرکزی سوئچ۔ فعال (ڈیفالٹ): /v1/models ہر اہل، سوچنے کی صلاحیت رکھنے والے Claude ماڈل کے لیے بغیر سوچ والا متبادل ظاہر کرتا ہے، اور درخواست میں بھیجی گئی no-think/ id کو استدلال دبانے کے ساتھ حقیقی ماڈل میں واپس حل کیا جاتا ہے۔ غیر فعال: کوئی متبادل ظاہر نہیں کیا جاتا اور no-think/ id کو کسی بھی دوسری نامعلوم ماڈل id کی طرح سمجھا جاتا ہے۔ اس کے فعال ہونے کے دوران فی ماڈل ModelSpec.noThinkingAlias کی شمولیت/عدم شمولیت پھر بھی لاگو رہتی ہے۔", "featureFlagChatVirtualLanesEnabledDescription": "پرووائیڈر بھیجنے کے لیے فی ٹیننٹ انکولی ورچوئل ایڈمیشن لین فعال کریں (#9654): ایک ٹیننٹ کا اچانک بوجھ اب دوسرے ٹیننٹ کو 503 نہیں دیتا۔ OMNIROUTE_CHAT_VIRTUAL_LANES ماحولیاتی متغیر اس ڈیش بورڈ سیٹنگ پر فوقیت رکھتا ہے؛ تبدیلیاں سرور دوبارہ شروع ہونے پر اثر انداز ہوتی ہیں۔", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "ڈیش بورڈ کے فراہم کنندہ صفحات: مفت بیج صرف ان سگنلز پر دکھائیں جنہیں فراہم کنندہ تسلیم کرتا ہے — یہ ڈسپلے نام پر مبنی اندازے، غیر بولین مفت فیلڈز، اور دستاویزی مفت درجے کے بغیر رجسٹرڈ فراہم کنندگان پر :free لاحقوں کو نظر انداز کرتا ہے۔ غیر فعال کرنے پر تاریخی بیج کا اصول برقرار رہتا ہے۔", + "featureFlagProxySkipRecentlyFailedDescription": "پراکسی پولز اور opencode کی فی اکاؤنٹ روٹیشن کسی ایسی پراکسی کو دوبارہ پیش کرنے سے عارضی طور پر روکتی ہے جو ابھی ناکام ہوئی ہو (TCP پروب مسترد ہوا ہو، یا اس کے ذریعے 429 موصول ہوا ہو)۔ یہ فی پروسیس مدت ہر بار ناکامی دہرائے جانے پر دگنی ہوتی ہے، ایک مقررہ حد تک۔ پراکسی کا کوئی اسٹیٹس نہیں لکھا جاتا؛ تمام امیدواروں کو ایک طرف رکھ دیے جانے کی صورت میں انتخاب میں کوئی تبدیلی نہیں آتی۔ بطور ڈیفالٹ بند: انتخاب کی ترتیب بالکل سادہ روٹیشن کے مطابق رہتی ہے۔", + "featureFlagProxyPoolEgressObservationDescription": "ڈیش بورڈ میں کسی پراکسی پول کے تحت دکھائیں کہ گزشتہ 24 گھنٹوں کے دوران کتنے مشاہدہ شدہ ایگریس IPs نے اس کے اراکین کو سروس فراہم کی، کتنے کنکشنز نے انہیں استعمال کیا، اور ایک IP کے پیچھے زیادہ سے زیادہ کتنے دیکھے گئے۔ صرف پڑھنے کے لیے، پراکسی لاگ سے شمار شدہ، اور روٹنگ کے لیے کبھی استعمال نہیں ہوتا۔ بطور ڈیفالٹ بند: پول ایڈیٹر میں کوئی تبدیلی نہیں ہوتی اور مشاہدے کا روٹ null واپس کرتا ہے۔", + "featureFlagProxyHealthBlockedResetsStreakDescription": "پراکسی ہیلتھ سویپ میں، ہدف کی جانب سے مسترد کردہ پروب (401/403/429: پراکسی نے اسے آگے پہنچایا، مگر منزل نے اس ایگریس IP کو مسترد کر دیا) کو پراکسی کی مسلسل ناکامیوں کا سلسلہ اسی طرح ری سیٹ کرنے دیں جیسے کامیابی سے پیش کیا گیا پروب کرتا ہے۔ بطور ڈیفالٹ بند: مسترد ہونا غیر جانب دار رہتا ہے اور سلسلے کو برقرار رکھتا ہے۔ 5xx دونوں صورتوں میں غیر فیصلہ کن رہتا ہے، اور مسترد ہونا کبھی بھی کسی پراکسی کو ہٹاتا، غیر فعال کرتا یا دوبارہ فعال نہیں کرتا۔", "sidebar": { - "home": "Home", - "dashboard": "Dashboard", - "providers": "Providers", - "combos": "Combos", - "usage": "Usage", - "analytics": "Analytics", - "costs": "Costs", - "health": "Health", + "home": "ہوم", + "dashboard": "ڈیش بورڈ", + "providers": "فراہم کنندگان", + "combos": "کومبوز", + "usage": "استعمال", + "analytics": "تجزیات", + "costs": "اخراجات", + "health": "صحت", "proxy": "پراکسی", "limits": "Limits & Quotas", - "cliTools": "CLI Tools", - "media": "Media", - "settings": "Settings", - "translator": "Translator", - "playground": "Playground", - "searchTools": "Search Tools", - "agents": "Agents", + "cliTools": "CLI ٹولز", + "media": "میڈیا", + "settings": "ترتیبات", + "translator": "مترجم", + "playground": "پلے گراؤنڈ", + "searchTools": "تلاش کے ٹولز", + "agents": "ایجنٹس", "cloudAgents": "کلاؤڈ ایجنٹس", - "memory": "Memory", - "skills": "Skills", + "memory": "میموری", + "skills": "مہارتیں", "omniSkills": "اومنی سکلز", "agentSkills": "ایجنٹ کی مہارت", - "chaosConfig": "Chaos Mode", - "docs": "Docs", - "issues": "Issues", - "endpoints": "Endpoints", + "chaosConfig": "کیاؤس موڈ", + "docs": "دستاویزات", + "issues": "مسائل", + "endpoints": "اینڈ پوائنٹس", "endpointsSubtitle": "آپ کے AI کنکشن کے URLs", - "apiManager": "API Keys", + "apiManager": "API کلیدیں", "apiManagerSubtitle": "API کیز اور رسائی کا نظم کریں۔", "embeddedServices": "ایمبیڈڈ سروسز", "embeddedServicesSubtitle": "مقامی پراکسی سروسز کا انتظام کریں", - "logs": "Logs", + "logs": "لاگز", "webhooks": "ویب ہکس", "webhooksSubtitle": "واقعات کی اطلاع حاصل کریں۔", "logExport": "لاگ برآمد", @@ -1037,239 +1037,239 @@ "batchSubtitle": "متعدد درخواستوں پر کارروائی کریں۔", "contextCavemanSubtitle": "فوری کمپریشن", "contextRtkSubtitle": "آؤٹ پٹ فلٹرنگ", - "auditLog": "Audit Log", - "shutdown": "Shutdown", - "restart": "Restart", - "shutdownConfirm": "Shut down OmniRoute?", - "restartConfirm": "Restart OmniRoute?", + "auditLog": "آڈٹ لاگ", + "shutdown": "بند کریں", + "restart": "دوبارہ شروع کریں", + "shutdownConfirm": "OmniRoute کو بند کریں؟", + "restartConfirm": "OmniRoute کو دوبارہ شروع کریں؟", "version": "v{version}", "debug": "Debug", - "system": "System", - "help": "Help", + "system": "سسٹم", + "help": "مدد", "primarySection": "Main", "cliSection": "CLI", "debugSection": "Debug", "systemSection": "System", "helpSection": "Help", - "serverDisconnected": "Server Disconnected", - "serverDisconnectedMsg": "The proxy server has been stopped or is restarting.", - "expandSidebar": "Expand sidebar", - "collapseSidebar": "Collapse sidebar", - "themes": "Themes", - "presetColors": "Popular colors", - "createTheme": "Create theme", - "chooseColor": "Pick one color", - "themeCoral": "Coral", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", - "cliToolsShort": "Tools", + "serverDisconnected": "سرور منقطع ہو گیا", + "serverDisconnectedMsg": "پراکسی سرور روک دیا گیا ہے یا دوبارہ شروع ہو رہا ہے۔", + "expandSidebar": "سائیڈ بار پھیلائیں", + "collapseSidebar": "سائیڈ بار سمیٹیں", + "themes": "تھیمز", + "presetColors": "مقبول رنگ", + "createTheme": "تھیم بنائیں", + "chooseColor": "ایک رنگ منتخب کریں", + "themeCoral": "مرجانی", + "themeBlue": "نیلا", + "themeRed": "سرخ", + "themeGreen": "سبز", + "themeViolet": "بنفشی", + "themeOrange": "نارنجی", + "themeCyan": "فیروزی", + "cliToolsShort": "ٹولز", "cache": "Cache", "cacheShort": "Cache", "batch": "Batch Testing", - "themeSystem": "Theme System", - "whitelabelingDesc": "Whitelabeling Desc", - "switchThemes": "Switch Themes", - "themeAccentDesc": "Theme Accent Desc", - "uploadFavicon": "Upload Favicon", - "themeDark": "Theme Dark", - "customLogoDesc": "Custom Logo Desc", - "sidebarVisibilityToggle": "Sidebar Visibility Toggle", - "themeAccent": "Theme Accent", - "resetFavicon": "Reset Favicon", - "whitelabeling": "Whitelabeling", - "darkMode": "Dark Mode", - "uploadLogo": "Upload Logo", - "themeLight": "Theme Light", - "appName": "App Name", - "appNameDesc": "App Name Desc", - "resetLogo": "Reset Logo", - "customFavicon": "Custom Favicon", - "hideHealthLogs": "Hide Health Logs", - "customLogo": "Custom Logo", - "appearance": "Appearance", - "themeSelectionAria": "Theme Selection Aria", - "themeCreate": "Theme Create", - "customFaviconDesc": "Custom Favicon Desc", - "logoPreview": "Logo Preview", - "themeCustom": "Theme Custom", - "hideHealthLogsDesc": "Hide Health Logs Desc", - "faviconPreview": "Favicon Preview", - "changelog": "Changelog", - "contextSection": "Context & Cache", + "themeSystem": "تھیم سسٹم", + "whitelabelingDesc": "وائٹ لیبلنگ کی تفصیل", + "switchThemes": "تھیمز تبدیل کریں", + "themeAccentDesc": "تھیم کے نمایاں رنگ کی تفصیل", + "uploadFavicon": "فیوی آئیکن اپ لوڈ کریں", + "themeDark": "گہری تھیم", + "customLogoDesc": "حسبِ ضرورت لوگو کی تفصیل", + "sidebarVisibilityToggle": "سائیڈ بار کی مرئیت کا ٹوگل", + "themeAccent": "تھیم کا نمایاں رنگ", + "resetFavicon": "فیوی آئیکن ری سیٹ کریں", + "whitelabeling": "وائٹ لیبلنگ", + "darkMode": "ڈارک موڈ", + "uploadLogo": "لوگو اپ لوڈ کریں", + "themeLight": "روشن تھیم", + "appName": "ایپ کا نام", + "appNameDesc": "ایپ کے نام کی تفصیل", + "resetLogo": "لوگو ری سیٹ کریں", + "customFavicon": "حسبِ منشا فیویکن", + "hideHealthLogs": "ہیلتھ لاگز چھپائیں", + "customLogo": "حسبِ منشا لوگو", + "appearance": "ظاہری شکل", + "themeSelectionAria": "تھیم کے انتخاب کا Aria", + "themeCreate": "تھیم بنائیں", + "customFaviconDesc": "حسبِ منشا فیویکن کی تفصیل", + "logoPreview": "لوگو کا پیش منظر", + "themeCustom": "حسبِ منشا تھیم", + "hideHealthLogsDesc": "ہیلتھ لاگز چھپانے کی تفصیل", + "faviconPreview": "فیویکن کا پیش منظر", + "changelog": "تبدیلیوں کی فہرست", + "contextSection": "سیاق و سباق اور کیش", "contextCaveman": "Caveman", "contextRtk": "RTK", - "contextCombos": "Engine Combos", + "contextCombos": "انجن کے امتزاج", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "انتہائی", "contextOmniglyph": "OmniGlyph", - "contextSettings": "Compression Settings", + "contextSettings": "کمپریشن کی ترتیبات", "contextHeadroom": "Headroom", "contextSessionDedup": "Session Dedup", "contextCcr": "CCR", "contextLlmlingua": "LLMLingua", - "combosLive": "Combo Studio", - "combosLiveSubtitle": "Live routing cascade", + "combosLive": "امتزاج اسٹوڈیو", + "combosLiveSubtitle": "لائیو روٹنگ کی سَلسِلہ وار ترتیب", "compressionStudio": "Compression Studio", "compressionExclusions": "استثنائات", - "contextSettingsSubtitle": "Global defaults", - "contextHeadroomSubtitle": "Tabular compaction", - "contextSessionDedupSubtitle": "Cross-turn deduplication", - "contextCcrSubtitle": "Retrieve markers", - "contextLlmlinguaSubtitle": "Semantic pruning", - "contextLiteSubtitle": "Fast whitespace cleanup", - "contextAggressiveSubtitle": "Summary and aging", - "contextUltraSubtitle": "Heuristic pruning", - "contextOmniglyphSubtitle": "Context as images", - "compressionStudioSubtitle": "Live engine cascade", + "contextSettingsSubtitle": "عالمی ڈیفالٹس", + "contextHeadroomSubtitle": "جدولی اختصار", + "contextSessionDedupSubtitle": "مختلف ٹرنز میں ڈی ڈپلیکیشن", + "contextCcrSubtitle": "مارکرز بازیافت کریں", + "contextLlmlinguaSubtitle": "معنوی چھانٹی", + "contextLiteSubtitle": "فوری وائٹ اسپیس صفائی", + "contextAggressiveSubtitle": "خلاصہ اور فرسودگی", + "contextUltraSubtitle": "قیاسی چھانٹی", + "contextOmniglyphSubtitle": "سیاق و سباق بطور تصاویر", + "compressionStudioSubtitle": "لائیو انجن کی سَلسِلہ وار ترتیب", "compressionExclusionsSubtitle": "فی ماڈل/اینڈپوائنٹ بائی پاس", - "chaosConfigSubtitle": "Multi-model parallel execution", - "routingSection": "Routing", - "protocolsSection": "Protocols", - "agentsAiSection": "Agents & AI", - "cacheContextSection": "Cache & Context", - "analyticsSection": "Analytics", - "costsSection": "Costs", - "monitoringSection": "Monitoring", - "auditSecuritySection": "Audit & Security", - "devtoolsSection": "Dev Tools", - "configurationSection": "Configuration", - "aiFeaturesSection": "AI Features", + "chaosConfigSubtitle": "متعدد ماڈلز کا متوازی نفاذ", + "routingSection": "روٹنگ", + "protocolsSection": "پروٹوکولز", + "agentsAiSection": "ایجنٹس اور AI", + "cacheContextSection": "کیش اور سیاق و سباق", + "analyticsSection": "تجزیات", + "costsSection": "اخراجات", + "monitoringSection": "نگرانی", + "auditSecuritySection": "آڈٹ اور سیکیورٹی", + "devtoolsSection": "ڈیولپر ٹولز", + "configurationSection": "کنفیگریشن", + "aiFeaturesSection": "AI خصوصیات", "mcp": "MCP", "a2a": "A2A", - "plugins": "Plugins", - "apiEndpoints": "API Endpoints", - "batchFiles": "Files", - "analyticsEvals": "Evals", - "analyticsSearch": "Search", - "analyticsUtilization": "Utilization", - "analyticsComboHealth": "Combo Health", - "analyticsCompression": "Compression", - "costsBudget": "Budget", - "costsFreeTiers": "Free-Tier Budget", - "costsFreeTiersSubtitle": "Monthly free-token allowances", - "freeProviderRankings": "Free Provider Rankings", - "freeProviderRankingsSubtitle": "Best free providers ranked by model ELO scores", + "plugins": "پلگ اِنز", + "apiEndpoints": "API اینڈ پوائنٹس", + "batchFiles": "فائلیں", + "analyticsEvals": "جائزے", + "analyticsSearch": "تلاش", + "analyticsUtilization": "استعمال", + "analyticsComboHealth": "کمبو کی صحت", + "analyticsCompression": "کمپریشن", + "costsBudget": "بجٹ", + "costsFreeTiers": "مفت درجے کا بجٹ", + "costsFreeTiersSubtitle": "ماہانہ مفت ٹوکن الاؤنسز", + "freeProviderRankings": "مفت فراہم کنندگان کی درجہ بندی", + "freeProviderRankingsSubtitle": "ماڈل ELO اسکورز کے لحاظ سے بہترین مفت فراہم کنندگان کی درجہ بندی", "radar": "ریڈار کیٹلاگ", "radarSubtitle": "کمیونٹی سے بھرپور مفت ماڈل کیٹلاگ", - "costsQuotaShare": "Quota Sharing", - "costsPricing": "Pricing", - "logsProxy": "Proxy Logs", - "logsConsole": "Console", - "logsActivity": "Activity", - "auditMcp": "MCP Audit", + "costsQuotaShare": "کوٹے کا اشتراک", + "costsPricing": "قیمتیں", + "logsProxy": "پراکسی لاگز", + "logsConsole": "کنسول", + "logsActivity": "سرگرمی", + "auditMcp": "MCP آڈٹ", "auditA2a": "A2A آڈٹ", "settingsGeneral": "General", - "settingsAppearance": "Appearance", - "settingsAi": "AI Settings", - "settingsSecurity": "Security", - "settingsAccessTokens": "Access Tokens", + "settingsAppearance": "ظاہری شکل", + "settingsAi": "AI کی ترتیبات", + "settingsSecurity": "سیکیورٹی", + "settingsAccessTokens": "رسائی ٹوکنز", "settingsFeatureFlags": "نمایاں جھنڈے", "settingsCache": "کیچ کریں", - "settingsAuthz": "Authz", - "settingsRouting": "Routing", - "settingsResilience": "Resilience", - "modelLockout": "Model Lockout", - "settingsAdvanced": "Advanced", + "settingsAuthz": "اجازت دہی", + "settingsRouting": "روٹنگ", + "settingsResilience": "لچک پذیری", + "modelLockout": "ماڈل لاک آؤٹ", + "settingsAdvanced": "اعلیٰ ترتیبات", "omniProxySection": "OmniProxy", - "quotaTracker": "Provider Quota", - "providerQuota": "Provider Quota", - "runtime": "Runtime", - "consoleLogs": "Console Logs", - "logsTimeline": "Timeline", + "quotaTracker": "فراہم کنندہ کا کوٹا", + "providerQuota": "فراہم کنندہ کا کوٹا", + "runtime": "رن ٹائم", + "consoleLogs": "کنسول لاگز", + "logsTimeline": "ٹائم لائن", "logsTimelineSubtitle": "بصری درخواست کا وقت لائن", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", - "globalRouting": "Global Routing", - "mitmProxy": "MITM Proxy", + "conversations": "گفتگوئیں", + "conversationsSubtitle": "کثیر مرحلہ ایجنٹک گفتگوئیں", + "globalRouting": "عالمی روٹنگ", + "mitmProxy": "MITM پراکسی", "oneProxy": "1Proxy", - "agenticFeaturesSection": "Agentic Features", - "otherFeaturesSection": "Other Features", - "compressionContextGroup": "Compression Context", - "gamificationGroup": "Gamification", - "toolsGroup": "Tools", - "integrationsGroup": "Integrations", - "proxyGroup": "Proxy", - "costsParametersGroup": "Costs Parameters", - "auditGroup": "Audit", - "batchGroup": "Batch", - "homeSubtitle": "Dashboard overview", - "providersSubtitle": "Manage AI providers", - "quotaTrackerSubtitle": "Track usage limits", - "providerQuotaSubtitle": "Track provider usage limits", - "runtimeSubtitle": "Realtime resilience & sessions", - "contextCombosSubtitle": "Combine compression engines", - "cliToolsSubtitle": "Configure CLI runtimes", - "agentsSubtitle": "Manage local agents", - "cloudAgentsSubtitle": "Manage cloud-based agents", - "apiEndpointsSubtitle": "Expose custom endpoints", - "proxySubtitle": "HTTP proxy settings", - "mitmProxySubtitle": "MITM interception", - "oneProxySubtitle": "Public proxy gateway", - "leaderboard": "Leaderboard", - "profile": "Profile", - "tokens": "Tokens", - "gamificationAdmin": "__MISSING__:Gamification Admin", - "leaderboardSubtitle": "Rankings and achievements", - "profileSubtitle": "Account and preferences", - "tokensSubtitle": "Token usage and budgets", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", - "usageSubtitle": "Traffic and usage stats", - "analyticsComboHealthSubtitle": "Combo target reliability", - "analyticsUtilizationSubtitle": "Provider utilization", - "costsSubtitle": "Spend breakdown", - "cacheSubtitle": "Cache hit rates", - "analyticsCompressionSubtitle": "Token savings stats", - "analyticsSearchSubtitle": "Search tool analytics", - "analyticsEvalsSubtitle": "Eval suite results", - "providerStats": "Provider Stats", - "providerStatsSubtitle": "Latency and performance metrics", - "logsSubtitle": "Application logs", - "logsProxySubtitle": "Proxy traffic logs", - "consoleLogsSubtitle": "Console output", - "logsActivitySubtitle": "User activity log", - "healthSubtitle": "System health check", - "costsPricingSubtitle": "Per-model pricing rules", - "costsBudgetSubtitle": "Budget limits", - "costsQuotaShareSubtitle": "Share provider quotas across keys", - "auditLogSubtitle": "Authorization audit", - "auditMcpSubtitle": "MCP server audit", - "auditA2aSubtitle": "A2A protocol audit", - "translatorSubtitle": "Format conversion", - "playgroundSubtitle": "Test prompts live", - "searchToolsSubtitle": "Search tool registry", - "memorySubtitle": "Persistent agent memory", - "omniSkillsSubtitle": "Sandbox skill registry", - "agentSkillsSubtitle": "A2A skill registry", - "mcpSubtitle": "MCP server controls", - "a2aSubtitle": "A2A protocol server", - "pluginsSubtitle": "Plugin marketplace & installs", - "mediaSubtitle": "Cached media files", - "batchFilesSubtitle": "Batch input/output files", - "settingsSubtitle": "All settings", + "agenticFeaturesSection": "ایجنٹک خصوصیات", + "otherFeaturesSection": "دیگر خصوصیات", + "compressionContextGroup": "سیاق کا کمپریشن", + "gamificationGroup": "گیمیفیکیشن", + "toolsGroup": "ٹولز", + "integrationsGroup": "انٹیگریشنز", + "proxyGroup": "پراکسی", + "costsParametersGroup": "لاگت کے پیرامیٹرز", + "auditGroup": "آڈٹ", + "batchGroup": "بیچ", + "homeSubtitle": "ڈیش بورڈ کا جائزہ", + "providersSubtitle": "AI فراہم کنندگان کا نظم کریں", + "quotaTrackerSubtitle": "استعمال کی حدود ٹریک کریں", + "providerQuotaSubtitle": "فراہم کنندہ کے استعمال کی حدود ٹریک کریں", + "runtimeSubtitle": "ریئل ٹائم لچک اور سیشنز", + "contextCombosSubtitle": "کمپریشن انجنز یکجا کریں", + "cliToolsSubtitle": "CLI رن ٹائمز ترتیب دیں", + "agentsSubtitle": "مقامی ایجنٹس کا نظم کریں", + "cloudAgentsSubtitle": "کلاؤڈ پر مبنی ایجنٹس کا نظم کریں", + "apiEndpointsSubtitle": "حسبِ ضرورت اینڈ پوائنٹس ظاہر کریں", + "proxySubtitle": "HTTP پراکسی کی ترتیبات", + "mitmProxySubtitle": "MITM انٹرسیپشن", + "oneProxySubtitle": "عوامی پراکسی گیٹ وے", + "leaderboard": "لیڈر بورڈ", + "profile": "پروفائل", + "tokens": "ٹوکنز", + "gamificationAdmin": "گیمیفیکیشن ایڈمن", + "leaderboardSubtitle": "درجہ بندیاں اور کامیابیاں", + "profileSubtitle": "اکاؤنٹ اور ترجیحات", + "tokensSubtitle": "ٹوکن کا استعمال اور بجٹس", + "gamificationAdminSubtitle": "بے قاعدگیوں کی نگرانی اور دھوکا دہی کی روک تھام", + "usageSubtitle": "ٹریفک اور استعمال کے اعداد و شمار", + "analyticsComboHealthSubtitle": "کومبو ہدف کی قابلِ اعتمادیت", + "analyticsUtilizationSubtitle": "فراہم کنندہ کا استعمال", + "costsSubtitle": "اخراجات کی تفصیل", + "cacheSubtitle": "کیش ہٹ کی شرحیں", + "analyticsCompressionSubtitle": "ٹوکن کی بچت کے اعداد و شمار", + "analyticsSearchSubtitle": "سرچ ٹول کے تجزیات", + "analyticsEvalsSubtitle": "جائزہ سوٹ کے نتائج", + "providerStats": "فراہم کنندہ کے اعداد و شمار", + "providerStatsSubtitle": "تاخیر اور کارکردگی کے پیمانے", + "logsSubtitle": "ایپلیکیشن لاگز", + "logsProxySubtitle": "پراکسی ٹریفک لاگز", + "consoleLogsSubtitle": "کنسول آؤٹ پٹ", + "logsActivitySubtitle": "صارف کی سرگرمی کا لاگ", + "healthSubtitle": "سسٹم کی صحت کی جانچ", + "costsPricingSubtitle": "ہر ماڈل کے لیے قیمت کے قواعد", + "costsBudgetSubtitle": "بجٹ کی حدود", + "costsQuotaShareSubtitle": "فراہم کنندہ کے کوٹے تمام کیز میں شیئر کریں", + "auditLogSubtitle": "اجازت دہی کا آڈٹ", + "auditMcpSubtitle": "MCP سرور آڈٹ", + "auditA2aSubtitle": "A2A پروٹوکول آڈٹ", + "translatorSubtitle": "فارمیٹ کی تبدیلی", + "playgroundSubtitle": "پرامپٹس کی براہِ راست جانچ کریں", + "searchToolsSubtitle": "سرچ ٹول رجسٹری", + "memorySubtitle": "ایجنٹ کی مستقل میموری", + "omniSkillsSubtitle": "سینڈ باکس اسکل رجسٹری", + "agentSkillsSubtitle": "A2A اسکل رجسٹری", + "mcpSubtitle": "MCP سرور کنٹرولز", + "a2aSubtitle": "A2A پروٹوکول سرور", + "pluginsSubtitle": "پلگ اِن مارکیٹ پلیس اور انسٹالیشنز", + "mediaSubtitle": "کیش شدہ میڈیا فائلیں", + "batchFilesSubtitle": "بیچ اِن پٹ/آؤٹ پٹ فائلیں", + "settingsSubtitle": "تمام ترتیبات", "settingsGeneralSubtitle": "App basics", - "settingsAppearanceSubtitle": "Theme and layout", - "settingsAiSubtitle": "AI behavior defaults", - "globalRoutingSubtitle": "Global routing rules", - "settingsResilienceSubtitle": "Retries and breakers", - "settingsAdvancedSubtitle": "Power user options", - "settingsSecuritySubtitle": "Auth and encryption", - "settingsAccessTokensSubtitle": "Scoped CLI tokens for remote mode", + "settingsAppearanceSubtitle": "تھیم اور لے آؤٹ", + "settingsAiSubtitle": "AI رویّے کی طے شدہ ترتیبات", + "globalRoutingSubtitle": "عالمی روٹنگ کے قواعد", + "settingsResilienceSubtitle": "دوبارہ کوششیں اور بریکرز", + "settingsAdvancedSubtitle": "ماہر صارف کے اختیارات", + "settingsSecuritySubtitle": "تصدیق اور خفیہ کاری", + "settingsAccessTokensSubtitle": "ریموٹ موڈ کے لیے محدود دائرۂ کار والے CLI ٹوکنز", "settingsFeatureFlagsSubtitle": "سسٹم کی صلاحیتوں کو ٹوگل کریں۔", "settingsCacheSubtitle": "ماڈل کیٹلاگ اور جواب کی کیشنگ", - "settingsSidebar": "Sidebar", - "settingsSidebarSubtitle": "Customize sidebar layout", - "settingsAuthzSubtitle": "Route inventory and bypass policy", - "docsSubtitle": "Documentation", - "issuesSubtitle": "Report a bug", - "changelogSubtitle": "Release notes", - "costsQuotaPlans": "Plans & Quotas", - "costsQuotaPlansSubtitle": "Configure plans by provider", - "activity": "Activity", + "settingsSidebar": "سائیڈ بار", + "settingsSidebarSubtitle": "سائیڈ بار کی ترتیب حسبِ منشا بنائیں", + "settingsAuthzSubtitle": "روٹس کی فہرست اور بائی پاس پالیسی", + "docsSubtitle": "دستاویزات", + "issuesSubtitle": "بگ کی اطلاع دیں", + "changelogSubtitle": "ریلیز نوٹس", + "costsQuotaPlans": "پلانز اور کوٹے", + "costsQuotaPlansSubtitle": "فراہم کنندہ کے لحاظ سے پلانز ترتیب دیں", + "activity": "سرگرمی", "activitySubtitle": "حالیہ واقعات کی دوستانہ فیڈ", "logsGroup": "لاگز", "systemGroup": "سسٹم", @@ -1278,8 +1278,8 @@ "agentBridge": "ایجنٹ برج", "agentBridgeSubtitle": "IDE ایجنٹ ٹریفک کو روکیں", "trafficInspector": "ٹریفک انسپکٹر", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "اپنی ایپس کی درخواست اور جواب کی ٹریفک کا معائنہ کریں", + "trafficInspectorPurpose": "دیکھیں کہ آپ کی ایپلیکیشن AI فراہم کنندگان کو کیا بھیجتی ہے اور ان سے کیا وصول کرتی ہے۔ کسی بھی OpenAI-مطابقت پذیر کلائنٹ کے ساتھ کام کرتا ہے۔", "cliCode": "CLI کوڈ", "cliCodeSubtitle": "کوڈ ٹولز جو OmniRoute کی طرف اشارہ کرتے ہیں", "cliAgents": "CLI ایجنٹس", @@ -1345,7 +1345,7 @@ "refresh": "ریفریش کریں۔", "loading": "ویب ہکس لوڈ ہو رہا ہے...", "never": "کبھی نہیں", - "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}", + "failureCount": "{count, plural, =0 {کوئی ناکامی نہیں} one {# ناکامی} other {# ناکامیاں}}", "testWebhook": "ٹیسٹ بھیجیں۔", "testSuccess": "ٹیسٹ ویب ہک کامیابی کے ساتھ بھیج دیا گیا۔", "testFailed": "ٹیسٹ ویب ہک ناکام ہو گیا۔", @@ -1563,91 +1563,91 @@ "mcpMetricTopTool": "بہترین ٹول" }, "themesPage": { - "title": "Themes", - "description": "Choose a preset theme or create your own with a single color", - "presetColors": "Popular colors", - "customTheme": "Custom theme", - "customThemeDesc": "Click create theme and pick one color", - "createTheme": "Create theme", - "activePreset": "Active theme" + "title": "تھیمز", + "description": "پہلے سے تیار تھیم منتخب کریں یا ایک ہی رنگ سے اپنی تھیم بنائیں", + "presetColors": "مقبول رنگ", + "customTheme": "حسبِ منشا تھیم", + "customThemeDesc": "تھیم بنائیں پر کلک کریں اور ایک رنگ منتخب کریں", + "createTheme": "تھیم بنائیں", + "activePreset": "فعال تھیم" }, "header": { - "logout": "Logout", + "logout": "لاگ آؤٹ", "quickNavigation": "فوری نیویگیشن", "quickNavigationTitle": "فوری نیویگیشن (⌘K / Ctrl+K)", "openQuickNavigation": "فوری نیویگیشن کھولیں", "switchToLightMode": "لائٹ موڈ پر سوئچ کریں", "switchToDarkMode": "ڈارک موڈ پر سوئچ کریں", - "language": "Language", - "providers": "Providers", - "providerDescription": "Manage your AI provider connections", - "combos": "Combos", - "comboDescription": "Model combos with fallback", - "usage": "Usage & Analytics", - "usageDescription": "Monitor your API usage, token consumption, and request logs", - "analytics": "Analytics", - "analyticsDescription": "Charts, trends, and evaluation insights", - "cliTools": "CLI Tools", - "cliToolsDescription": "Configure CLI tools", - "home": "Home", - "homeDescription": "Welcome to OmniRoute", - "endpoint": "Endpoints", - "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints", + "language": "زبان", + "providers": "فراہم کنندگان", + "providerDescription": "اپنے AI فراہم کنندگان کے کنکشنز کا نظم کریں", + "combos": "امتزاجات", + "comboDescription": "فال بیک کے ساتھ ماڈل امتزاجات", + "usage": "استعمال اور تجزیات", + "usageDescription": "اپنے API کے استعمال، ٹوکن کی کھپت اور درخواست کے لاگز کی نگرانی کریں", + "analytics": "تجزیات", + "analyticsDescription": "چارٹس، رجحانات اور تشخیصی بصیرتیں", + "cliTools": "CLI ٹولز", + "cliToolsDescription": "CLI ٹولز کی تشکیل کریں", + "home": "مرکزی صفحہ", + "homeDescription": "OmniRoute میں خوش آمدید", + "endpoint": "اینڈ پوائنٹس", + "endpointDescription": "پراکسی اینڈ پوائنٹس، MCP، A2A، اور API اینڈ پوائنٹس کا نظم کریں", "mcp": "MCP", - "mcpDescription": "Model Context Protocol server management and tools", + "mcpDescription": "Model Context Protocol سرور کا نظم اور ٹولز", "a2a": "A2A", - "a2aDescription": "Agent-to-Agent protocol tasks and observability", - "settings": "Settings", - "settingsDescription": "Manage your preferences", - "openaiCompatible": "OpenAI Compatible", - "anthropicCompatible": "Anthropic Compatible", - "media": "Media", - "mediaDescription": "Generate images, videos, and music", - "themes": "Themes", - "themesDescription": "Choose a color theme for the whole dashboard panel", - "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "limitsDescription": "Configure rate limits and quotas per API key and provider", - "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts", - "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance", - "batchDescription": "Process large volumes of requests asynchronously with batched API calls", - "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.", - "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.", - "contextCombosDescription": "Define how engines are combined for different routing scenarios.", - "changelogDescription": "Stay up to date with the latest platform features and announcements.", - "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents", - "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval", - "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing", - "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution", - "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration", - "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini", - "playgroundDescription": "Test prompts interactively with live provider responses and format inspection", - "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking", - "logsDescription": "Real-time request logs, error traces, and streaming event inspector", - "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events", - "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications", - "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database", - "proxyDescription": "Configure upstream proxy settings for outbound provider connections", - "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides", - "batchFilesDescription": "Browse and manage batch job output files and results", - "analyticsEvalsDescription": "Model evaluation results and performance benchmarks", - "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking", - "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning", - "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations", - "analyticsCompressionDescription": "Context compression analytics and token savings", - "costsBudgetDescription": "Budget limits and spending alerts per API key and provider", - "costsPricingDescription": "Custom pricing configuration for token cost calculations", - "logsProxyDescription": "Upstream proxy request logs and traffic inspection", - "logsConsoleDescription": "Application console output and debug logs", - "logsActivityDescription": "Audit trail of user actions and system events", - "auditMcpDescription": "MCP tool invocation audit trail and compliance records", + "a2aDescription": "Agent-to-Agent پروٹوکول کے ٹاسکس اور مشاہدہ پذیری", + "settings": "ترتیبات", + "settingsDescription": "اپنی ترجیحات کا نظم کریں", + "openaiCompatible": "OpenAI سے ہم آہنگ", + "anthropicCompatible": "Anthropic سے ہم آہنگ", + "media": "میڈیا", + "mediaDescription": "تصاویر، ویڈیوز، اور موسیقی بنائیں", + "themes": "تھیمز", + "themesDescription": "پورے ڈیش بورڈ پینل کے لیے رنگین تھیم منتخب کریں", + "costsDescription": "تمام فراہم کنندگان پر اخراجات ٹریک کریں، رجحانات کا تجزیہ کریں، اور اپنے AI بجٹ کا نظم کریں", + "cacheDescription": "فراہم کنندہ کے پرامپٹ کیش کی کارکردگی اور مقامی معنوی جوابات کے دوبارہ استعمال کی نگرانی کریں۔", + "limitsDescription": "ہر API کلید اور فراہم کنندہ کے لیے شرح کی حدود اور کوٹے تشکیل دیں", + "runtimeDescription": "لائیو رن ٹائم مشاہدہ پذیری — سرکٹ بریکرز، کول ڈاؤنز، ماڈل لاک آؤٹس، سیشنز اور کوٹا انتباہات", + "apiManagerDescription": "اپنی OmniRoute انسٹینس کے لیے API کلیدوں اور رسائی کے کنٹرول کا نظم کریں", + "batchDescription": "بیچ شدہ API کالز کے ذریعے بڑی تعداد میں درخواستوں کو غیر ہم وقت طور پر پراسیس کریں", + "contextCavemanDescription": "قواعد پر مبنی پیغام کمپریشن، زبان کے پیک، تجزیات، اور آؤٹ پٹ موڈ کے کنٹرولز۔", + "contextRtkDescription": "ٹول آؤٹ پٹ، ٹرمینل لاگز، اور بلڈ نتائج کے لیے کمانڈ سے آگاہ کمپریشن۔", + "contextCombosDescription": "مختلف روٹنگ منظرناموں کے لیے انجنوں کو یکجا کرنے کا طریقہ متعین کریں۔", + "changelogDescription": "پلیٹ فارم کی تازہ ترین خصوصیات اور اعلانات سے باخبر رہیں۔", + "agentsDescription": "AI ایجنٹ ٹولز کا نظم اور تشکیل کریں: Codex، Devin، Jules، اور حسب ضرورت ایجنٹس", + "cloudAgentsDescription": "لائیو ٹاسک ٹریکنگ اور منصوبے کی منظوری کے ساتھ کلاؤڈ پر مبنی AI ایجنٹس کو منظم کریں", + "memoryDescription": "معنوی تلاش اور FTS5 مکمل متن اشاریہ سازی کے ساتھ مستقل مکالماتی میموری", + "skillsDescription": "خودکار پرامپٹ اور ٹول پر عمل درآمد کے لیے سینڈ باکس مہارتیں انسٹال کریں اور ان کا نظم کریں", + "agentSkillsDescription": "AI کلائنٹ انضمام کے لیے ایک کلک URL کاپی کے ساتھ ایجنٹ کے لیے تیار مہارتوں کا کیٹلاگ", + "translatorDescription": "API فارمیٹس میں پرامپٹس کا ترجمہ اور ٹیسٹ کریں: OpenAI ↔ Claude ↔ Gemini", + "playgroundDescription": "فراہم کنندہ کے لائیو جوابات اور فارمیٹ کے معائنے کے ساتھ پرامپٹس کو تعاملی طور پر ٹیسٹ کریں", + "searchToolsDescription": "تلاش کے تجزیات، فراہم کنندگان کی تفصیل، کیش ہٹ کی شرحیں، اور لاگت کی ٹریکنگ", + "logsDescription": "ریئل ٹائم درخواست لاگز، خرابی کے ٹریسز، اور اسٹریمنگ ایونٹ انسپکٹر", + "auditDescription": "API کلید کے استعمال، MCP ٹول کالز، اور پالیسی ایونٹس کی تعمیلی آڈٹ ٹریل", + "webhooksDescription": "ریئل ٹائم ایونٹ اطلاعات موصول کرنے کے لیے ویب ہُک اینڈ پوائنٹس تشکیل دیں", + "healthDescription": "سسٹم کی صحت کا جائزہ: فراہم کنندگان، سرکٹ بریکرز، شرح کی حدود، اور ڈیٹابیس", + "proxyDescription": "آؤٹ باؤنڈ فراہم کنندہ کنکشنز کے لیے اَپ اسٹریم پراکسی ترتیبات تشکیل دیں", + "apiEndpointsDescription": "حسب ضرورت API اینڈ پوائنٹ کی تشکیلات اور روٹنگ اوور رائیڈز کا نظم کریں", + "batchFilesDescription": "بیچ جاب کی آؤٹ پٹ فائلیں اور نتائج براؤز اور منظم کریں", + "analyticsEvalsDescription": "ماڈل کی جانچ کے نتائج اور کارکردگی کے معیارات", + "analyticsSearchDescription": "تلاش کے استفسارات کے تجزیات، کیش ہِٹ کی شرحیں، اور لاگت کی نگرانی", + "analyticsUtilizationDescription": "فراہم کنندہ کے استعمال کی پیمائشیں اور گنجائش کی منصوبہ بندی", + "analyticsComboHealthDescription": "کومبو روٹنگ کنفیگریشنز کی حقیقی وقت میں صحت اور کارکردگی", + "analyticsCompressionDescription": "کانٹیکسٹ کمپریشن کے تجزیات اور ٹوکن کی بچت", + "costsBudgetDescription": "ہر API کلید اور فراہم کنندہ کے لیے بجٹ کی حدود اور اخراجات کے انتباہات", + "costsPricingDescription": "ٹوکن لاگت کے حساب کے لیے حسبِ ضرورت قیمتوں کی کنفیگریشن", + "logsProxyDescription": "اپ اسٹریم پراکسی درخواستوں کے لاگز اور ٹریفک کا معائنہ", + "logsConsoleDescription": "ایپلیکیشن کنسول آؤٹ پٹ اور ڈیبگ لاگز", + "logsActivityDescription": "صارف کی کارروائیوں اور سسٹم ایونٹس کا آڈٹ ٹریل", + "auditMcpDescription": "MCP ٹول کے استعمال کا آڈٹ ٹریل اور تعمیل کے ریکارڈز", "auditA2a": "A2A آڈٹ", "auditA2aDescription": "A2A ٹاسک ایگزیکیوشن آڈٹ ٹریل، اسٹیٹ ٹرانزیشن، اور ہنر کی درخواست کے ریکارڈ", "settingsGeneralDescription": "Storage, database, and general instance configuration", - "settingsAppearanceDescription": "Theme, branding, and visual customization", - "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings", + "settingsAppearanceDescription": "تھیم، برانڈنگ، اور بصری تخصیص", + "settingsAiDescription": "AI رویے، سوچنے کے بجٹ، وژن، اور میموری کی ترتیبات", "settingsCacheDescription": "ماڈل کیٹلاگ کیش کی اندراجات کے لیے TTL", - "settingsSecurityDescription": "Authentication, authorization, and access control settings", + "settingsSecurityDescription": "توثیق، اجازت، اور رسائی کے کنٹرول کی ترتیبات", "featureFlags": "نمایاں جھنڈے", "featureFlagsDescription": "کنٹرول سسٹم کی صلاحیتیں اور تجرباتی خصوصیات", "featureFlagsActive": "{count} فعال", @@ -1671,11 +1671,11 @@ "featureFlagsNoResults": "کوئی جھنڈا آپ کی تلاش سے مماثل نہیں ہے۔", "featureFlagsSaved": "پرچم کو اپ ڈیٹ کر دیا گیا۔", "featureFlagsError": "پرچم کو اپ ڈیٹ کرنے میں ناکام", - "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings", - "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration", - "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings", - "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging", - "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining", + "settingsRoutingDescription": "روٹنگ کے قواعد، ماڈل عرف، کومبو ڈیفالٹس، اور تنزلی کی ترتیبات", + "settingsResilienceDescription": "سرکٹ بریکر، دوبارہ کوشش، اور فال بیک کی کنفیگریشن", + "settingsAdvancedDescription": "اعلیٰ درجے کے پے لوڈ قواعد، درخواست کی حدود، اور پراکسی API کی ترتیبات", + "mitmProxyDescription": "ٹریفک کے معائنے اور ڈیبگنگ کے لیے MITM پراکسی کی ترتیبات کنفیگر کریں", + "oneProxyDescription": "اعلیٰ درجے کی پراکسی چیننگ کے لیے 1Proxy کی ترتیبات کنفیگر کریں", "omniSkillsDescription": "خودکار پرامپٹ اور ٹول کے نفاذ کے لیے سینڈ باکس اسکلز انسٹال اور منظم کریں" }, "cloudSyncStatus": { @@ -1762,7 +1762,7 @@ "discovery": "دریافت", "freeProviderRankings": "مفت فراہم کنندگان کی درجہ بندی", "radar": "Radar", - "setup": "Setup", + "setup": "سیٹ اپ", "freeTiers": "مفت ٹیئرز", "gamification": "گیمیفیکیشن", "leaderboard": "لیڈر بورڈ", @@ -1784,53 +1784,53 @@ "orchestration": "آرکسٹریشن" }, "home": { - "quickStart": "Quick Start", - "quickStartDesc": "Get up and running in 4 steps. Connect providers, route models, monitor everything.", - "fullDocs": "Full Docs", - "step1Title": "1. Create API key", + "quickStart": "فوری آغاز", + "quickStartDesc": "4 مراحل میں سیٹ اپ مکمل کریں۔ فراہم کنندگان منسلک کریں، ماڈلز روٹ کریں، اور ہر چیز کی نگرانی کریں۔", + "fullDocs": "مکمل دستاویزات", + "step1Title": "1. API کلید بنائیں", "step1Desc": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "step2Title": "2. Connect providers", - "step2Desc": "Add accounts in Providers. Supports OAuth, API Key, and free tiers.", - "step3Title": "3. Point your client", - "step3Desc": "Set base URL to {url} in your IDE or API client.", - "step4Title": "4. Monitor & optimize", - "step4Desc": "Track tokens, cost and errors in Request Logs and Analytics.", - "providersOverview": "Providers Overview", - "configuredOf": "{configured} configured of {total} available providers", - "noModelsAvailable": "No models available for this provider.", + "step2Title": "2. فراہم کنندگان منسلک کریں", + "step2Desc": "فراہم کنندگان میں اکاؤنٹس شامل کریں۔ OAuth، API Key، اور مفت درجات کی معاونت موجود ہے۔", + "step3Title": "3. اپنے کلائنٹ کو مربوط کریں", + "step3Desc": "اپنے IDE یا API کلائنٹ میں بنیادی URL کو {url} پر سیٹ کریں۔", + "step4Title": "4. نگرانی اور بہتری کریں", + "step4Desc": "درخواست کے لاگز اور تجزیات میں ٹوکنز، لاگت، اور خرابیوں کی نگرانی کریں۔", + "providersOverview": "فراہم کنندگان کا جائزہ", + "configuredOf": "{total} دستیاب فراہم کنندگان میں سے {configured} ترتیب دیے گئے", + "noModelsAvailable": "اس فراہم کنندہ کے لیے کوئی ماڈل دستیاب نہیں ہے۔", "noProvidersConfigured": "ابھی تک کوئی فراہم کنندہ کنفیگر نہیں ہوا۔", "addProvider": "ایک فراہم کنندہ شامل کریں۔", - "configureFirst": "Configure a connection first in {providers}", - "configureProvider": "Configure Provider", - "modelAvailable": "{count} model available", - "modelsAvailable": "{count} models available", - "connectionsActive": "{count} connection active", - "connectionsActivePlural": "{count} connections active", - "copyModelName": "Copy model name", - "documentation": "Documentation", - "healthMonitor": "Health Monitor", - "reportIssue": "Report issue", - "activeError": "{active} active · {errors} error", - "topologyLegendActive": "__MISSING__:Active", - "topologyLegendRecent": "__MISSING__:Recent", - "topologyLegendError": "__MISSING__:Error", + "configureFirst": "پہلے {providers} میں کنکشن ترتیب دیں", + "configureProvider": "فراہم کنندہ ترتیب دیں", + "modelAvailable": "{count} ماڈل دستیاب ہے", + "modelsAvailable": "{count} ماڈلز دستیاب ہیں", + "connectionsActive": "{count} کنکشن فعال ہے", + "connectionsActivePlural": "{count} کنکشنز فعال ہیں", + "copyModelName": "ماڈل کا نام کاپی کریں", + "documentation": "دستاویزات", + "healthMonitor": "صحت کی نگرانی", + "reportIssue": "مسئلہ رپورٹ کریں", + "activeError": "{active} فعال · {errors} خرابی", + "topologyLegendActive": "فعال", + "topologyLegendRecent": "حالیہ", + "topologyLegendError": "خرابی", "oauthLabel": "OAuth", - "apiKeyLabel": "API Key", - "requestsShort": "{count} reqs", - "providerModelsTitle": "{provider} - Models", - "copiedModel": "Copied: {model}", + "apiKeyLabel": "API کلید", + "requestsShort": "{count} درخواستیں", + "providerModelsTitle": "{provider} - ماڈلز", + "copiedModel": "کاپی ہو گیا: {model}", "aliasLabel": "alias", - "updateNow": "Update Now", - "updating": "Updating...", - "updateAvailableDesc": "A new version is available. Click to update.", - "updateStarted": "Update started...", + "updateNow": "ابھی اپ ڈیٹ کریں", + "updating": "اپ ڈیٹ ہو رہا ہے...", + "updateAvailableDesc": "ایک نیا ورژن دستیاب ہے۔ اپ ڈیٹ کرنے کے لیے کلک کریں۔", + "updateStarted": "اپ ڈیٹ شروع ہو گیا...", "reloadingPageAutomatically": "صفحہ خودکار طور پر دوبارہ لوڈ ہو رہا ہے...", "providerTopology": "فراہم کنندہ ٹوپولوجی", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "حالیہ درخواستیں", + "recentRequestsEmpty": "ابھی تک کوئی درخواست نہیں۔", + "recentRequestsModel": "ماڈل", + "recentRequestsTokens": "ان پٹ / آؤٹ پٹ", + "recentRequestsWhen": "وقت", "downloadDmg": "DMG ڈاؤن لوڈ کریں (macOS)", "downloadDmgDescription": "OmniRoute ڈیسک ٹاپ ایپ کا نیا ورژن دستیاب ہے۔ براہ کرم اپ ڈیٹ کرنے کے لیے macOS DMG انسٹالر ڈاؤن لوڈ اور انسٹال کریں (موجودہ: v{version})۔", "downloadExe": "EXE ڈاؤن لوڈ کریں (ونڈوز)", @@ -1888,18 +1888,18 @@ "releaseNotes": "ریلیز نوٹس", "readMore": "مزید پڑھیں", "noAuthLabel": "کوئی تصدیق نہیں", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "روٹنگ کے لیے تیار ہو جائیں", + "readinessTitle": "اپنی پہلی درخواست بھیجیں", + "readinessSubtitle": "چار مختصر مراحل۔ آگے بڑھتے ہوئے OmniRoute تیاری کی جانچ کرتا ہے۔", + "readinessStep1": "فراہم کنندہ سے جڑیں", + "readinessStep2": "اینڈ پوائنٹ کی توثیق ترتیب دیں", + "readinessStep3": "اپنا اینڈ پوائنٹ کاپی کریں", + "readinessStep4": "آزمائشی درخواست بھیجیں", + "readinessContinue": "سیٹ اپ جاری رکھیں", + "readinessDismiss": "فی الحال نظر انداز کریں" }, "analytics": { - "title": "Analytics", + "title": "تجزیات", "usageAnalyticsTitle": "استعمال کے تجزیات", "diversityScoreTitle": "فراہم کنندہ تنوع", "diversityScoreDesc": "حالیہ ٹریفک ونڈو کے لیے فراہم کنندہ کے ارتکاز کا اسنیپ شاٹ۔", @@ -1990,21 +1990,21 @@ "highlightsDiversity": "تنوع", "highlightsFallbackRate": "فال بیک کی شرح", "customRange": "کسٹم", - "overviewDescription": "Monitor your API usage patterns, token consumption, costs, and activity trends across all providers and models.", - "evalsDescription": "Run evaluation suites to test and validate your LLM endpoints. Compare model quality, detect regressions, and benchmark latency.", - "overview": "Overview", - "evals": "Evals", + "overviewDescription": "تمام فراہم کنندگان اور ماڈلز میں اپنے API کے استعمال کے انداز، ٹوکن کی کھپت، اخراجات اور سرگرمی کے رجحانات کی نگرانی کریں۔", + "evalsDescription": "اپنے LLM اینڈ پوائنٹس کو جانچنے اور ان کی توثیق کرنے کے لیے جائزہ مجموعے چلائیں۔ ماڈلز کے معیار کا موازنہ کریں، تنزلیوں کا پتہ لگائیں اور تاخیر کی بینچ مارکنگ کریں۔", + "overview": "جائزہ", + "evals": "جائزے", "search": "تلاش کریں", - "utilization": "Utilization", + "utilization": "استعمال", "routeTrace": "روٹ ٹریس", "sectionsAria": "تجزیاتی سیکشنز", - "utilizationDescription": "Provider quota usage trends and rate limit tracking", - "modelStatus": "Model Status", - "modelStatusCooldown": "Cooldown", - "modelStatusUnavailable": "Unavailable", - "modelStatusError": "Error", - "comboHealth": "Combo Health", - "comboHealthDescription": "Combo-level quota, usage distribution, and performance metrics", + "utilizationDescription": "فراہم کنندہ کوٹے کے استعمال کے رجحانات اور شرح کی حد کی نگرانی", + "modelStatus": "ماڈل کی حیثیت", + "modelStatusCooldown": "وقفۂ بحالی", + "modelStatusUnavailable": "دستیاب نہیں", + "modelStatusError": "خرابی", + "comboHealth": "کامبو کی صحت", + "comboHealthDescription": "کامبو کی سطح کا کوٹہ، استعمال کی تقسیم اور کارکردگی کے پیمانے", "compressionAnalyticsTitle": "Compression", "compressionAnalyticsDescription": "Compression analytics - token savings, mode breakdown, and provider stats.", "autoRoutingTotalAutoRequests": "کل آٹو درخواستیں۔", @@ -2092,7 +2092,7 @@ "comboHealthPerformance": "کارکردگی", "comboHealthPerformanceDescription": "روٹڈ کمبو ٹریفک کے لیے قابل اعتماد ہونا اور تھرو پٹ۔", "comboHealthExecutionTargetsDescription": "ساختی کمبو اہداف کے لیے مرحلہ وار رن ٹائم میٹرکس اور کوٹہ کی نمائش۔", - "comboHealthRequestShort": "{count} req", + "comboHealthRequestShort": "{count} درخواستیں", "comboHealthQuotaScope": "کوٹہ کا دائرہ کار: {scope}", "comboHealthTrendValue": "رجحان: {trend}", "comboHealthFetchFailed": "کمبو کی صحت کا ڈیٹا حاصل کرنے میں ناکامی", @@ -2210,7 +2210,7 @@ "combo": "کمبو", "routeStep": "مرحلہ", "tokens": "ٹوکنز", - "notAvailable": "n/a", + "notAvailable": "لاگو نہیں", "routeTokenCounts": "{input} ان · {output} آؤٹ", "routeEvidence": "شواہد", "routeFactors": "راؤٹنگ کے عوامل", @@ -2237,55 +2237,55 @@ "freeTierAvailable": "مفت سطح دستیاب ہے" }, "apiManager": { - "title": "API Keys", - "createKey": "Create API Key", - "key": "Key", - "revokeKey": "Revoke Key", - "revokeConfirm": "Are you sure you want to revoke this API key?", - "noKeys": "No API keys yet", - "noKeysDesc": "Create your first API key to authenticate requests to your endpoint", - "keyLabel": "Key Label", - "permissions": "Permissions", - "expiresAt": "Expires", - "never": "Never", - "revoke": "Revoke", - "showKey": "Show Key", - "hideKey": "Hide Key", - "copyKey": "Copy API Key", - "allModels": "All models", - "selectedModels": "Selected Models", - "readOnly": "Read Only", - "fullAccess": "Full Access", - "keyManagement": "API Key Management", - "keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "title": "API کلیدیں", + "createKey": "API کلید بنائیں", + "key": "کلید", + "revokeKey": "کلید منسوخ کریں", + "revokeConfirm": "کیا آپ واقعی اس API کلید کو منسوخ کرنا چاہتے ہیں؟", + "noKeys": "ابھی کوئی API کلید نہیں ہے", + "noKeysDesc": "اپنے اینڈ پوائنٹ پر درخواستوں کی توثیق کے لیے اپنی پہلی API کلید بنائیں", + "keyLabel": "کلید کا لیبل", + "permissions": "اجازتیں", + "expiresAt": "میعاد ختم ہونے کی تاریخ", + "never": "کبھی نہیں", + "revoke": "منسوخ کریں", + "showKey": "کلید دکھائیں", + "hideKey": "کلید چھپائیں", + "copyKey": "API کلید کاپی کریں", + "allModels": "تمام ماڈلز", + "selectedModels": "منتخب کردہ ماڈلز", + "readOnly": "صرف پڑھنے کی اجازت", + "fullAccess": "مکمل رسائی", + "keyManagement": "API کلیدوں کا انتظام", + "keyManagementDesc": "اپنے اینڈ پوائنٹ پر درخواستوں کی توثیق کے لیے API کلیدیں بنائیں اور ان کا نظم کریں", + "requestFlowAria": "آپ کی ایپ API کلید کے ذریعے OmniRoute کو درخواستیں بھیجتی ہے", + "requestFlowYourApp": "آپ کی ایپ", + "requestFlowApiKey": "API کلید", "requestFlowOmniRoute": "OmniRoute", - "totalKeys": "Total Keys", - "restricted": "Restricted", - "totalRequests": "Total Requests", - "modelsAvailable": "Models Available", - "registeredKeys": "Registered Keys", - "keysRegistered": "{count} keys registered", - "keyRegistered": "{count} key registered", - "keysSecurityNote": "Each key isolates usage tracking and can be revoked independently. Keys are masked after creation for security.", - "createFirstKey": "Create Your First Key", - "name": "Name", - "usage": "Usage", - "created": "Created", - "actions": "Actions", - "reqs": "reqs", - "neverUsed": "Never used", - "deleteConfirm": "Delete this API key?", - "usageTips": "Usage Tips", - "tipAuth": "Use API keys in the Authorization header as Bearer YOUR_KEY", - "tipSecure": "Keys are only shown once during creation — store them securely", - "tipSeparate": "Create separate keys for different clients or environments", - "tipRestrict": "Restrict keys to specific models for better security and cost control", - "keyName": "Key Name", + "totalKeys": "کل کلیدیں", + "restricted": "محدود", + "totalRequests": "کل درخواستیں", + "modelsAvailable": "دستیاب ماڈلز", + "registeredKeys": "رجسٹرڈ کلیدیں", + "keysRegistered": "{count} کلیدیں رجسٹرڈ ہیں", + "keyRegistered": "{count} کلید رجسٹرڈ ہے", + "keysSecurityNote": "ہر کلید استعمال کی نگرانی کو الگ رکھتی ہے اور اسے آزادانہ طور پر منسوخ کیا جا سکتا ہے۔ سیکیورٹی کے لیے کلیدیں تخلیق کے بعد مخفی کر دی جاتی ہیں۔", + "createFirstKey": "اپنی پہلی کلید بنائیں", + "name": "نام", + "usage": "استعمال", + "created": "تخلیق کی تاریخ", + "actions": "اقدامات", + "reqs": "درخواستیں", + "neverUsed": "کبھی استعمال نہیں ہوئی", + "deleteConfirm": "کیا یہ API کلید حذف کر دی جائے؟", + "usageTips": "استعمال کی تجاویز", + "tipAuth": "API کلیدوں کو Authorization ہیڈر میں Bearer YOUR_KEY کے طور پر استعمال کریں", + "tipSecure": "کلیدیں تخلیق کے دوران صرف ایک بار دکھائی جاتی ہیں — انہیں محفوظ طریقے سے ذخیرہ کریں", + "tipSeparate": "مختلف کلائنٹس یا ماحول کے لیے الگ کلیدیں بنائیں", + "tipRestrict": "بہتر سیکیورٹی اور لاگت پر کنٹرول کے لیے کلیدوں کو مخصوص ماڈلز تک محدود کریں", + "keyName": "کلید کا نام", "keyNamePlaceholder": "e.g., Production Key, Development Key", - "keyNameDesc": "Choose a descriptive name to identify this key's purpose", + "keyNameDesc": "اس کلید کے مقصد کی شناخت کے لیے ایک وضاحتی نام منتخب کریں", "managementAccessDesc": "اس API کلید کو OmniRoute کنفیگریشن منظم کرنے کی اجازت دیں۔", "selfServiceVisibility": "سیلف سروس مرئیت", "selfServiceVisibilityDesc": "کنٹرول کریں کہ یہ کلید اپنے استعمال اور مشترکہ upstream کوٹہ کے بارے میں کیا دیکھ سکتی ہے۔", @@ -2296,83 +2296,83 @@ "localUsageCommand": "مقامی استعمال کی کمانڈ کی اجازت دیں", "localUsageCommandDesc": "اس API کلید کو اپ اسٹریم فراہم کنندہ کو کال کیے بغیر کیش شدہ استعمال اور کوٹہ کی معلومات حاصل کرنے کے لیے @@om-usage استعمال کرنے کی اجازت دیتا ہے۔", "localUsageCommandBadge": "استعمال کی کمانڈ", - "keyCreated": "API Key Created", - "keyCreatedSuccess": "Key created successfully!", - "keyCreatedNote": "Copy and store this key now — it won't be shown again.", - "done": "Done", - "savePermissions": "Save Permissions", - "endpointRestrictions": "Allowed Endpoints", - "allEndpointsAllowed": "This key can access all API endpoints.", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", - "autoResolve": "Auto-Resolve", - "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.", + "keyCreated": "API کلید بن گئی", + "keyCreatedSuccess": "کلید کامیابی سے بن گئی!", + "keyCreatedNote": "اس کلید کو ابھی کاپی اور محفوظ کریں — یہ دوبارہ نہیں دکھائی جائے گی۔", + "done": "مکمل", + "savePermissions": "اجازتیں محفوظ کریں", + "endpointRestrictions": "اجازت یافتہ اینڈ پوائنٹس", + "allEndpointsAllowed": "یہ کلید تمام API اینڈ پوائنٹس تک رسائی حاصل کر سکتی ہے۔", + "endpointsRestricted": "{count} اینڈ پوائنٹ{count, plural, one {} other {s}} تک محدود۔", + "autoResolve": "خودکار حل", + "autoResolveDesc": "اس API کلید کے لیے مبہم ماڈل ناموں کو خودکار طور پر مقامی فراہم کنندہ سے منسلک کریں۔", "streamDefaultMode": "سٹریم ڈیفالٹ مطابقت", "streamDefaultModeDesc": "اس کلید کے لیے خارج کردہ `stream` فلیگز کو کنٹرول کرتا ہے۔ JSON موڈ نان سٹریمنگ جوابات واپس کرتا ہے جب تک کہ کلائنٹ واضح طور پر SSE کی درخواست نہ کرے۔", "streamDefaultLegacy": "لیگیسی", "streamDefaultJson": "JSON مطابقت پذیر", "streamDefaultBadge": "JSON اسٹریم ڈیفالٹ", - "keyActive": "Key Active", - "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.", - "accessSchedule": "Access Schedule", - "accessScheduleDesc": "Restrict access to specific hours and days of the week.", - "scheduleFrom": "From", - "scheduleUntil": "Until", - "scheduleDays": "Days", - "scheduleTimezone": "Timezone", - "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin", - "scheduleActive": "Schedule", - "disabled": "Disabled", - "daySun": "Sun", - "dayMon": "Mon", - "dayTue": "Tue", - "dayWed": "Wed", - "dayThu": "Thu", - "dayFri": "Fri", - "daySat": "Sat", - "allowAll": "Allow All", - "restrict": "Restrict", - "allowAllInfo": "This key can access all available models.", - "restrictInfo": "This key can access {selected} of {total} models.", - "selected": "{count} selected", - "all": "All", - "clear": "Clear", - "searchModels": "Search models by name or provider...", - "noModelsFound": "No models found", - "keyNameRequired": "Key name is required", - "keyNameTooLong": "Key name must be {max} characters or less", - "keyNameInvalid": "Key name can only contain letters, numbers, spaces, hyphens, and underscores", - "invalidKeyName": "Invalid key name", - "failedCreateKey": "Failed to create key", - "failedCreateKeyRetry": "Failed to create key. Please try again.", - "invalidKeyId": "Invalid key ID", - "failedDeleteKey": "Failed to delete key", - "failedDeleteKeyRetry": "Failed to delete key. Please try again.", - "invalidModelsSelection": "Invalid models selection", - "cannotSelectMoreThanModels": "Cannot select more than {max} models", - "failedUpdatePermissions": "Failed to update permissions", - "failedUpdatePermissionsRetry": "Failed to update permissions. Please try again.", - "unknownProvider": "unknown", - "copyMaskedKey": "Copy masked key", - "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key", + "keyActive": "کلید فعال ہے", + "keyActiveDesc": "اس API کلید کو فعال یا غیر فعال کریں۔ غیر فعال کلیدیں فوراً 403 کے ساتھ مسترد کر دی جاتی ہیں۔", + "accessSchedule": "رسائی کا شیڈول", + "accessScheduleDesc": "رسائی کو ہفتے کے مخصوص اوقات اور دنوں تک محدود کریں۔", + "scheduleFrom": "سے", + "scheduleUntil": "تک", + "scheduleDays": "دن", + "scheduleTimezone": "ٹائم زون", + "scheduleTimezoneHint": "IANA ٹائم زون کے نام استعمال کریں، مثلاً America/New_York، Europe/Berlin", + "scheduleActive": "شیڈول", + "disabled": "غیر فعال", + "daySun": "اتوار", + "dayMon": "پیر", + "dayTue": "منگل", + "dayWed": "بدھ", + "dayThu": "جمعرات", + "dayFri": "جمعہ", + "daySat": "ہفتہ", + "allowAll": "سب کو اجازت دیں", + "restrict": "محدود کریں", + "allowAllInfo": "یہ کلید تمام دستیاب ماڈلز تک رسائی حاصل کر سکتی ہے۔", + "restrictInfo": "یہ کلید {total} میں سے {selected} ماڈلز تک رسائی حاصل کر سکتی ہے۔", + "selected": "{count} منتخب", + "all": "سبھی", + "clear": "صاف کریں", + "searchModels": "نام یا فراہم کنندہ کے لحاظ سے ماڈلز تلاش کریں...", + "noModelsFound": "کوئی ماڈل نہیں ملا", + "keyNameRequired": "کلید کا نام درکار ہے", + "keyNameTooLong": "کلید کا نام {max} حروف یا اس سے کم ہونا چاہیے", + "keyNameInvalid": "کلید کے نام میں صرف حروف، اعداد، اسپیس، ہائفن اور انڈراسکور شامل ہو سکتے ہیں", + "invalidKeyName": "کلید کا نام درست نہیں ہے", + "failedCreateKey": "کلید بنانے میں ناکامی ہوئی", + "failedCreateKeyRetry": "کلید بنانے میں ناکامی ہوئی۔ براہِ کرم دوبارہ کوشش کریں۔", + "invalidKeyId": "کلید کی ID درست نہیں ہے", + "failedDeleteKey": "کلید حذف کرنے میں ناکامی ہوئی", + "failedDeleteKeyRetry": "کلید حذف کرنے میں ناکامی ہوئی۔ براہِ کرم دوبارہ کوشش کریں۔", + "invalidModelsSelection": "ماڈلز کا انتخاب درست نہیں ہے", + "cannotSelectMoreThanModels": "{max} سے زیادہ ماڈلز منتخب نہیں کیے جا سکتے", + "failedUpdatePermissions": "اجازتیں اپ ڈیٹ کرنے میں ناکامی ہوئی", + "failedUpdatePermissionsRetry": "اجازتیں اپ ڈیٹ کرنے میں ناکامی ہوئی۔ براہِ کرم دوبارہ کوشش کریں۔", + "unknownProvider": "نامعلوم", + "copyMaskedKey": "چھپی ہوئی کلید کاپی کریں", + "keyOnlyAvailableAtCreation": "مکمل کلید صرف تخلیق کے وقت دستیاب ہوتی ہے — پہلی بار کلید بناتے وقت اسے کاپی کر لیں", "modelsCount": "{count, plural, one {# model} other {# models}}", "devicesCount": "{count, plural, one {# ڈیوائس} other {# ڈیوائسز}}", "devicesTooltip": "{count, plural, one {# منفرد IP/User-Agent ڈیوائس اس کلید کے ساتھ دیکھی گئی (آخری 30 منٹ)} other {# منفرد IP/User-Agent ڈیوائسز اس کلید کے ساتھ دیکھی گئیں (آخری 30 منٹ)}}", - "lastUsedOn": "Last: {date}", + "lastUsedOn": "آخری: {date}", "viewCostsFor": "{name} کے لیے اخراجات دیکھیں", - "editPermissions": "Edit permissions", - "deleteKey": "Delete key", + "editPermissions": "اجازتوں میں ترمیم کریں", + "deleteKey": "کلید حذف کریں", "regenerateKey": "کلید کو دوبارہ تخلیق کریں۔", "regenerateConfirm": "کیا آپ واقعی اس API کلید کو دوبارہ تخلیق کرنا چاہتے ہیں؟ پرانی کلید فوری طور پر باطل ہو جائے گی۔", "failedRegenerateKey": "API کلید کو دوبارہ بنانے میں ناکام", "failedRegenerateKeyRetry": "API کلید کو دوبارہ بنانے میں ناکام۔ براہ کرم دوبارہ کوشش کریں۔", - "model": "{count} model", - "models": "{count} models", - "permissionsTitle": "Permissions: {name}", - "allowAllDesc": "This key can access all available models.", + "model": "{count} ماڈل", + "models": "{count} ماڈلز", + "permissionsTitle": "اجازتیں: {name}", + "allowAllDesc": "یہ کلید تمام دستیاب ماڈلز تک رسائی حاصل کر سکتی ہے۔", "restrictLoading": "ماڈل کیٹلاگ لوڈ ہو رہا ہے…", "restrictCatalogUnavailable": "ماڈل کیٹلاگ دستیاب نہیں ہے؛ اس کلید پر {selectedCount} منتخب ماڈل کی پابندیاں ہیں۔", - "restrictDesc": "This key can access {selectedCount} of {totalModels} models.", - "selectedCount": "{count} selected", + "restrictDesc": "یہ کلید {totalModels} میں سے {selectedCount} ماڈلز تک رسائی حاصل کر سکتی ہے۔", + "selectedCount": "{count} منتخب", "maxActiveSessions": "زیادہ سے زیادہ فعال سیشنز", "maxActiveSessionsDescription": "0 = لامحدود۔ جب یہ کلید ہم وقتی اسٹیکی سیشنز سے تجاوز کر جائے تو 429 واپس کریں۔", "throttleDelay": "تھروٹل تاخیر", @@ -2382,8 +2382,8 @@ "allowedCombos": "اجازت یافتہ کمبوز", "allCombosAllowed": "یہ کلید کوئی بھی کمبو استعمال کر سکتی ہے۔", "restrictedComboCount": "{count, plural, one {# کمبو} other {# کمبوز}} تک محدود۔", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "{count, plural, one {# محفوظ اندراج} other {# محفوظ اندراجات}} اس کومبو فہرست میں موجود نہیں ہیں (مثلاً روٹنگ کے اصول) اور انہیں محفوظ شدہ حالت میں برقرار رکھا جائے گا۔", + "preservedComboRuleHint": "محفوظ شدہ حالت میں برقرار رکھا گیا۔ یہ اندراج اوپر دی گئی فہرست میں کومبو نہیں ہے، اس لیے اسے صرف API کے ذریعے تبدیل کیا جا سکتا ہے۔", "apiManagerCustomRateLimits": "حسب ضرورت شرح کی حدیں", "apiManagerCustomRateLimitsDesc": "عالمی ڈیفالٹ حدود کو اوور رائیڈ کریں۔ ڈیفالٹس استعمال کرنے کے لیے خالی چھوڑ دیں۔", "apiManagerRateLimitRequestsPlaceholder": "درخواستیں", @@ -2420,51 +2420,51 @@ "bypassProviderQuotaDescription": "یہ اس کی (key) کو روٹنگ کے دوران اپ اسٹریم فراہم کنندہ/اکاؤنٹ کی حد کی پالیسی کو نظرانداز کرنے کی اجازت دیتا ہے۔ API key کے USD کوٹہ اب بھی لاگو ہوں گے۔", "quotaPill": "کوٹہ", "quotaModeOnly": "صرف qtSd", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "خصوصی لیز", + "exclusiveLeaseNoticeTitle": "خصوصی لیز", + "exclusiveLeaseNoticeDesc": "اس API کلید کو مختص کنکشن روٹنگ کے لیے خصوصی لیز کی اجازتیں حاصل ہیں۔", + "allConnections": "تمام کنکشنز", + "onlySelectedConnections": "صرف منتخب کنکشنز", + "selectAtLeastOneConnection": "کم از کم ایک کنکشن منتخب کریں یا تمام کنکشنز کا انتخاب کریں۔", + "allConnectionsDesc": "یہ کلید کوئی بھی فعال کنکشن استعمال کر سکتی ہے۔", + "restrictedToConnections": "{count, plural, one {# کنکشن} other {# کنکشنز}} تک محدود۔" }, "auditLog": { - "title": "Audit Log", - "searchPlaceholder": "Search actions...", - "action": "Action", - "actor": "Actor", - "target": "Target", - "ipAddress": "IP Address", - "timestamp": "Timestamp", - "noEntries": "No audit entries found", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", + "title": "آڈٹ لاگ", + "searchPlaceholder": "کارروائیاں تلاش کریں...", + "action": "کارروائی", + "actor": "کارروائی کرنے والا", + "target": "ہدف", + "ipAddress": "IP پتہ", + "timestamp": "وقت کی مہر", + "noEntries": "کوئی آڈٹ اندراج نہیں ملا", + "filterByAction": "کارروائی کے لحاظ سے فلٹر کریں...", + "filterByActor": "کارروائی کرنے والے کے لحاظ سے فلٹر کریں...", + "filterEntriesAria": "آڈٹ لاگ کے اندراجات فلٹر کریں", + "filterByActionTypeAria": "کارروائی کی قسم کے لحاظ سے فلٹر کریں", + "filterByActorAria": "کارروائی کرنے والے کے لحاظ سے فلٹر کریں", + "refreshAuditLogAria": "آڈٹ لاگ تازہ کریں", + "tableAria": "آڈٹ لاگ کے اندراجات", + "failedFetchAuditLog": "آڈٹ لاگ حاصل کرنے میں ناکامی", "notAvailable": "—", - "description": "Administrative actions and security events", - "showing": "Showing {count} entries (offset {offset})", - "previous": "Previous" + "description": "انتظامی کارروائیاں اور سکیورٹی کے واقعات", + "showing": "{count} اندراجات دکھائے جا رہے ہیں (آف سیٹ {offset})", + "previous": "پچھلا" }, "media": { - "title": "Media Playground", - "subtitle": "Generate images, videos, and music", + "title": "میڈیا پلے گراؤنڈ", + "subtitle": "تصاویر، ویڈیوز اور موسیقی بنائیں", "model": "Model", "prompt": "Prompt", - "generate": "Generate", - "generating": "Generating...", - "loadingModels": "Loading available models...", - "noModels": "No models available. Configure providers with media capabilities first.", - "error": "Generation Failed", - "result": "Result", - "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.", - "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.", - "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.", + "generate": "بنائیں", + "generating": "بنایا جا رہا ہے...", + "loadingModels": "دستیاب ماڈلز لوڈ کیے جا رہے ہیں...", + "noModels": "کوئی ماڈل دستیاب نہیں۔ پہلے میڈیا کی صلاحیتوں والے فراہم کنندگان کو ترتیب دیں۔", + "error": "تخلیق ناکام ہو گئی", + "result": "نتیجہ", + "imageDescription": "OpenAI، xAI، Together، Hyperbolic، SD WebUI، ComfyUI اور دیگر کا استعمال کرتے ہوئے متنی ہدایات سے تصاویر بنائیں۔", + "videoDescription": "ComfyUI یا SD WebUI کے ذریعے AnimateDiff اور Stable Video Diffusion کے ساتھ ویڈیوز بنائیں۔", + "musicDescription": "ComfyUI کے ذریعے Stable Audio Open یا MusicGen کا استعمال کرتے ہوئے موسیقی ترتیب دیں۔", "kinds": { "embedding": "ایمبیڈنگ", "image": "تصویر", @@ -2542,111 +2542,111 @@ "openrouterSttDescription": "OpenRouter تقریر سے متن ماڈل آپ کے ترتیب دیے گئے OpenRouter کنکشن کا استعمال کرتے ہیں۔ کوئی علیحدہ اسناد کی ضرورت نہیں ہے۔" }, "search": { - "searchQuery": "Search Query", - "searchResults": "Search Results", - "cachedResult": "Cached", - "searchCost": "Cost", + "searchQuery": "تلاش کا استفسار", + "searchResults": "تلاش کے نتائج", + "cachedResult": "کیش شدہ", + "searchCost": "لاگت", "searchTools": "Search Tools", - "searchToolsDesc": "Advanced search testing with provider comparison", - "compareProviders": "Compare Providers", - "rerankResults": "Rerank Results", - "searchHistory": "Search History", - "urlOverlap": "URL Overlap", - "noSearchProviders": "No search providers configured. Add providers in Settings.", - "noRerankModels": "No rerank model available", + "searchToolsDesc": "فراہم کنندگان کے تقابل کے ساتھ جدید تلاش کی جانچ", + "compareProviders": "فراہم کنندگان کا موازنہ کریں", + "rerankResults": "نتائج کی دوبارہ درجہ بندی کریں", + "searchHistory": "تلاش کی سرگزشت", + "urlOverlap": "URL کا اشتراک", + "noSearchProviders": "تلاش کا کوئی فراہم کنندہ ترتیب نہیں دیا گیا۔ Settings میں فراہم کنندگان شامل کریں۔", + "noRerankModels": "دوبارہ درجہ بندی کا کوئی ماڈل دستیاب نہیں", "webSearch": "Web Search", - "provider": "Provider", - "searchType": "Search Type", - "maxResults": "Max Results", - "filters": "Filters", - "country": "Country", - "language": "Language", - "timeRange": "Time Range", - "includeDomains": "Include Domains", - "excludeDomains": "Exclude Domains", - "safeSearch": "Safe Search", - "safeSearchOff": "Off", - "safeSearchModerate": "Moderate", - "safeSearchStrict": "Strict", - "queryPlaceholder": "Enter search query...", - "providerAuto": "auto (cheapest)", + "provider": "فراہم کنندہ", + "searchType": "تلاش کی قسم", + "maxResults": "زیادہ سے زیادہ نتائج", + "filters": "فلٹرز", + "country": "ملک", + "language": "زبان", + "timeRange": "مدت", + "includeDomains": "ڈومینز شامل کریں", + "excludeDomains": "ڈومینز خارج کریں", + "safeSearch": "محفوظ تلاش", + "safeSearchOff": "بند", + "safeSearchModerate": "معتدل", + "safeSearchStrict": "سخت", + "queryPlaceholder": "تلاش کا استفسار درج کریں...", + "providerAuto": "خودکار (سب سے سستا)", "searchTypeWeb": "web", - "searchTypeNews": "news", - "optionAny": "any", - "timeRangeDay": "Past day", - "timeRangeWeek": "Past week", - "timeRangeMonth": "Past month", - "timeRangeYear": "Past year", + "searchTypeNews": "خبریں", + "optionAny": "کوئی بھی", + "timeRangeDay": "گزشتہ دن", + "timeRangeWeek": "گزشتہ ہفتہ", + "timeRangeMonth": "گزشتہ ماہ", + "timeRangeYear": "گزشتہ سال", "domainPlaceholder": "example.com", - "requestTimedOut": "Request timed out ({seconds}s)", - "networkError": "Network error", - "formatted": "Formatted", + "requestTimedOut": "درخواست کا وقت ختم ہو گیا ({seconds}s)", + "networkError": "نیٹ ورک کی خرابی", + "formatted": "فارمیٹ شدہ", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", - "latency": "Latency", - "cost": "Cost", - "results": "Results", + "cacheMiss": "کیش موجود نہیں", + "cacheHit": "کیش موجود ہے", + "latency": "تاخیر", + "cost": "لاگت", + "results": "نتائج", "rerank": "Rerank", - "rerankModel": "Rerank Model", - "positionDelta": "Position Change", - "emptyState": "Send a search query to see results", + "rerankModel": "دوبارہ درجہ بندی کا ماڈل", + "positionDelta": "پوزیشن میں تبدیلی", + "emptyState": "نتائج دیکھنے کے لیے تلاش کا استفسار بھیجیں", "copy": "کاپی", "resetToDefault": "ڈیفالٹ پر ری سیٹ کریں۔", - "tabSearch": "Search", - "tabScrape": "Scrape", - "tabCompare": "Compare", - "modalitiesGuide": "Modalities guide", - "searchConceptTitle": "Search", - "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)", - "scrapeConceptTitle": "Scrape", - "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)", - "compareConceptTitle": "Compare", - "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap", - "rerankConceptTitle": "Rerank", - "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query", - "autoConceptTitle": "Auto (cheapest)", - "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials", - "providerCatalogTitle": "Provider Catalog", - "kindSearch": "Search", - "kindFetch": "Fetch/Scrape", - "statusConfigured": "Configured", - "statusMissing": "No credential", - "statusRateLimited": "Rate limited", - "configureProvider": "Configure in Providers", - "loadingProviders": "Loading providers…", - "failedToLoadProviders": "Failed to load providers", - "costPerQuery": "Cost/query", - "freeQuota": "Free quota/mo", - "scrapeUrl": "URL to scrape", + "tabSearch": "تلاش", + "tabScrape": "مواد اخذ کریں", + "tabCompare": "موازنہ", + "modalitiesGuide": "طریقوں کی رہنمائی", + "searchConceptTitle": "تلاش", + "searchConceptDesc": "تلاش = ویب نتائج کی فہرست حاصل کرتی ہے (عنوان، URL، اقتباس، مطابقت کا اسکور)", + "scrapeConceptTitle": "مواد اخذ کریں", + "scrapeConceptDesc": "مواد اخذ کرنا = کسی URL کا مکمل مواد نکالتا ہے (markdown، متن یا HTML)", + "compareConceptTitle": "موازنہ", + "compareConceptDesc": "موازنہ = تاخیر، لاگت اور نتائج کے باہمی اشتراک کا موازنہ کرنے کے لیے ایک ہی استفسار کو N فراہم کنندگان پر ساتھ ساتھ چلاتا ہے", + "rerankConceptTitle": "دوبارہ درجہ بندی", + "rerankConceptDesc": "دوبارہ درجہ بندی = استفسار کی بنیاد پر مطابقت بہتر بنانے کے لیے LLM کے ذریعے نتائج کو ازسرِنو ترتیب دیتی ہے", + "autoConceptTitle": "خودکار (سب سے سستا)", + "autoConceptDesc": "خودکار (سب سے سستا) = ترتیب دی گئی اسناد کے ساتھ دستیاب سب سے سستا فراہم کنندہ خودکار طور پر منتخب کرتا ہے", + "providerCatalogTitle": "فراہم کنندگان کی فہرست", + "kindSearch": "تلاش", + "kindFetch": "حاصل کریں/مواد اخذ کریں", + "statusConfigured": "ترتیب شدہ", + "statusMissing": "کوئی سند نہیں", + "statusRateLimited": "شرح محدود ہے", + "configureProvider": "فراہم کنندگان میں ترتیب دیں", + "loadingProviders": "فراہم کنندگان لوڈ ہو رہے ہیں…", + "failedToLoadProviders": "فراہم کنندگان لوڈ نہیں ہو سکے", + "costPerQuery": "لاگت/استفسار", + "freeQuota": "مفت ماہانہ کوٹہ", + "scrapeUrl": "مواد اخذ کرنے کے لیے URL", "scrapeUrlPlaceholder": "https://example.com", "scrapeUrlRequired": "URL درکار ہے", "scrapeUrlInvalid": "غیر درست URL — اس کا آغاز http:// یا https:// سے ہونا چاہیے", - "scrapeExtract": "Extract", - "scrapeExtracting": "Extracting…", - "scrapeFullPage": "Full page", - "scrapeFormat": "Format", + "scrapeExtract": "اخذ کریں", + "scrapeExtracting": "اخذ کیا جا رہا ہے…", + "scrapeFullPage": "مکمل صفحہ", + "scrapeFormat": "فارمیٹ", "formatMarkdown": "Markdown", "formatHtml": "HTML", - "formatText": "Text", - "scrapePreview": "Preview", - "scrapeRaw": "Raw", - "scrapeContentTruncated": "(truncated, view raw)", - "scrapeMetadata": "Metadata", - "scrapeProvider": "Provider", - "scrapeSize": "Size", + "formatText": "متن", + "scrapePreview": "پیش منظر", + "scrapeRaw": "خام", + "scrapeContentTruncated": "(مختصر کیا گیا، خام دیکھیں)", + "scrapeMetadata": "میٹا ڈیٹا", + "scrapeProvider": "فراہم کنندہ", + "scrapeSize": "حجم", "scrapeEmptyState": "اس کا مواد نکالنے کے لیے ایک URL درج کریں", "scrapeProvidersAvailable": "دستیاب فراہم کنندگان: Firecrawl، Jina Reader، Tavily، TinyFish۔", - "compareRun": "Compare", - "compareRunning": "Comparing…", - "autoProvider": "Auto (cheapest)", - "configuredStatus": "Configured", - "rateLimitedStatus": "Rate limited", - "noCredential": "No credential", - "searchTypeLabel": "Type", - "rerankModelLabel": "Rerank model", - "noneOption": "None", - "size": "Size", + "compareRun": "موازنہ کریں", + "compareRunning": "موازنہ جاری ہے…", + "autoProvider": "خودکار (سب سے سستا)", + "configuredStatus": "ترتیب شدہ", + "rateLimitedStatus": "شرح محدود ہے", + "noCredential": "کوئی سند نہیں", + "searchTypeLabel": "قسم", + "rerankModelLabel": "دوبارہ درجہ بندی کا ماڈل", + "noneOption": "کوئی نہیں", + "size": "حجم", "configurationPane": "ترتیب کا پینل", "configuration": "ترتیب", "status": "حالت", @@ -2701,7 +2701,7 @@ "compareEmptyDescription": "نتائج تاخیر، لاگت، اور URL اوورلیپ کے ساتھ شانہ بشانہ دکھائے جائیں گے" }, "cliTools": { - "title": "CLI Tools", + "title": "CLI ٹولز", "classifierCompatTitle": "خودکار اجازت کے کلاسیفائر کی مطابقت", "classifierCompatDescription": "Claude Code کے --permission-mode auto سیکیورٹی کلاسیفائر کو ایک مصنوعی اجازت کے جواب کے ساتھ شارٹ سرکٹ کریں تاکہ فال بیک راستے بند ہونے پر ناکام نہ ہوں۔ ڈیفالٹ طور پر بند ہے۔", "classifierCompatCycle": "سائیکل: بند → خودکار → ہمیشہ", @@ -2727,14 +2727,14 @@ "codexProfilesDescription": "ماڈل کی دریافت کے بعد ~/.codex/*.config.toml کو دوبارہ تیار کریں۔", "claudeProfiles": "Claude Code پروفائلز", "claudeProfilesDescription": "ماڈل کی دریافت کے بعد ہر ~/.claude/profiles/…/settings.json کو دوبارہ تیار کریں۔", - "noActiveProviders": "No active providers", - "noActiveProvidersDesc": "Please add and connect providers first to configure CLI tools.", - "mapModels": "Map Models", - "testConnection": "Test Connection", - "connectionStatus": "Connection Status", - "configureEndpoint": "Configure Endpoint", - "instructions": "Instructions", - "modelMapping": "Model Mapping", + "noActiveProviders": "کوئی فعال فراہم کنندہ نہیں", + "noActiveProvidersDesc": "CLI ٹولز کو ترتیب دینے کے لیے براہِ کرم پہلے فراہم کنندگان شامل کریں اور منسلک کریں۔", + "mapModels": "ماڈلز میپ کریں", + "testConnection": "کنکشن کی جانچ کریں", + "connectionStatus": "کنکشن کی حالت", + "configureEndpoint": "اینڈ پوائنٹ ترتیب دیں", + "instructions": "ہدایات", + "modelMapping": "ماڈل میپنگ", "reasoningEffort": "{model} کے لیے استدلال کی کوشش", "effortNone": "کوئی نہیں", "effortLow": "کم", @@ -2747,62 +2747,62 @@ "modelAliases": "ماڈل کے عرفی نام", "addModel": "ماڈل شامل کریں", "routeModelPlaceholder": "{model} کو روٹ کریں...", - "baseUrl": "Base URL", - "apiKey": "API Key", - "configured": "Configured", - "notConfigured": "Not configured", - "notInstalled": "Not installed", - "custom": "Custom", - "unknown": "Unknown", - "lastSavedAt": "Last saved: {date}", - "never": "Never", - "justNow": "just now", - "minutesAgoShort": "{count}m ago", - "hoursAgoShort": "{count}h ago", - "daysAgoShort": "{count}d ago", - "monthsAgoShort": "{count}mo ago", - "yearsAgoShort": "{count}y ago", - "runtimeCheckFailed": "Runtime check failed", + "baseUrl": "بنیادی URL", + "apiKey": "API کلید", + "configured": "ترتیب شدہ", + "notConfigured": "ترتیب نہیں دیا گیا", + "notInstalled": "انسٹال نہیں ہے", + "custom": "حسبِ ضرورت", + "unknown": "نامعلوم", + "lastSavedAt": "آخری بار محفوظ کیا گیا: {date}", + "never": "کبھی نہیں", + "justNow": "ابھی ابھی", + "minutesAgoShort": "{count} منٹ پہلے", + "hoursAgoShort": "{count} گھنٹے پہلے", + "daysAgoShort": "{count} دن پہلے", + "monthsAgoShort": "{count} ماہ پہلے", + "yearsAgoShort": "{count} سال پہلے", + "runtimeCheckFailed": "رن ٹائم کی جانچ ناکام ہو گئی", "yourApiKeyPlaceholder": "your-api-key", "modelPlaceholder": "provider/model-id", - "configurationSaved": "Configuration saved successfully.", - "failedToSave": "Failed to save configuration.", - "noApiKeysCreateOne": "No API keys - Create one in Keys page", - "defaultOmnirouteKey": "sk_omniroute (default)", - "selectModel": "Select Model", - "selectModelForAlias": "Select model for {alias}", - "selectModelForTool": "Select Model for {tool}", - "select": "Select", - "clear": "Clear", - "comingSoon": "Coming soon", - "checkingRuntime": "Checking runtime status...", - "guideOnlyIntegration": "Guide-only integration (no local runtime required)", - "cliRuntimeDetected": "CLI runtime detected and ready", - "cliFoundNotRunnable": "CLI found but not runnable{reason}", - "cliRuntimeNotDetected": "CLI runtime not detected", - "binary": "Binary", - "configPath": "Config path", - "configPathShort": "Config", - "failedCheckRuntimeStatus": "Failed to check runtime status.", - "copy": "Copy", - "copied": "Copied", - "copyConfig": "Copy Config", - "saveConfig": "Save Config", - "selectionSaved": "Selection saved", - "guide": "Guide", - "detected": "Detected", - "notReady": "Not ready", - "active": "Active", - "inactive": "Inactive", + "configurationSaved": "کنفیگریشن کامیابی سے محفوظ ہو گئی۔", + "failedToSave": "کنفیگریشن محفوظ نہیں ہو سکی۔", + "noApiKeysCreateOne": "کوئی API کلید نہیں — Keys صفحے پر ایک بنائیں", + "defaultOmnirouteKey": "sk_omniroute (طے شدہ)", + "selectModel": "ماڈل منتخب کریں", + "selectModelForAlias": "{alias} کے لیے ماڈل منتخب کریں", + "selectModelForTool": "{tool} کے لیے ماڈل منتخب کریں", + "select": "منتخب کریں", + "clear": "صاف کریں", + "comingSoon": "جلد آ رہا ہے", + "checkingRuntime": "رن ٹائم کی حالت جانچی جا رہی ہے...", + "guideOnlyIntegration": "صرف رہنمائی پر مبنی انضمام (مقامی رن ٹائم درکار نہیں)", + "cliRuntimeDetected": "CLI رن ٹائم کا پتا چل گیا اور تیار ہے", + "cliFoundNotRunnable": "CLI مل گیا لیکن چلانے کے قابل نہیں{reason}", + "cliRuntimeNotDetected": "CLI رن ٹائم کا پتا نہیں چلا", + "binary": "بائنری", + "configPath": "کنفیگ کا راستہ", + "configPathShort": "کنفیگ", + "failedCheckRuntimeStatus": "رن ٹائم کی حالت جانچنے میں ناکامی۔", + "copy": "کاپی کریں", + "copied": "کاپی ہو گیا", + "copyConfig": "کنفیگ کاپی کریں", + "saveConfig": "کنفیگ محفوظ کریں", + "selectionSaved": "انتخاب محفوظ ہو گیا", + "guide": "رہنما", + "detected": "پتا چل گیا", + "notReady": "تیار نہیں", + "active": "فعال", + "inactive": "غیرفعال", "startMitm": "Start MITM", "stopMitm": "Stop MITM", - "mitmStarted": "MITM started successfully!", - "mitmStopped": "MITM stopped successfully!", - "failedStart": "Failed to start MITM", - "failedStop": "Failed to stop MITM", - "saveMappings": "Save Mappings", - "mappingsSaved": "Mappings saved!", - "failedSaveMappings": "Failed to save mappings", + "mitmStarted": "MITM کامیابی سے شروع ہو گیا!", + "mitmStopped": "MITM کامیابی سے رک گیا!", + "failedStart": "MITM شروع نہیں ہو سکا", + "failedStop": "MITM روکا نہیں جا سکا", + "saveMappings": "میپنگز محفوظ کریں", + "mappingsSaved": "میپنگز محفوظ ہو گئیں!", + "failedSaveMappings": "میپنگز محفوظ کرنے میں ناکامی", "reasoningEffortDefault": "ڈیفالٹ", "reasoningEffortHint": "ڈیفالٹ ایجنٹ کی طرف سے بھیجی گئی استدلال کی کوشش کو برقرار رکھتا ہے", "reasoningEffortTier": { @@ -2812,130 +2812,130 @@ "high": "زیادہ", "xhigh": "ایکس ہائی" }, - "howItWorks": "How it works:", - "antigravityHowWorksDesc": "Antigravity sends requests to Google's endpoint. MITM intercepts and redirects them to OmniRoute.", - "antigravityStep1": "1. Start MITM to route requests through OmniRoute.", - "antigravityStep2Prefix": "2. Add", - "antigravityStep2Suffix": "to your hosts file as 127.0.0.1.", - "antigravityStep3": "3. Open Antigravity and requests will be proxied.", - "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.", - "mitmStep1": "1. Start MITM to route requests through OmniRoute.", - "mitmStep2Prefix": "2. Add", - "mitmStep2Suffix": "to your hosts file as 127.0.0.1.", - "mitmStep3": "3. Open {toolName} and requests will be proxied.", - "sudoPasswordRequiredTitle": "Sudo Password Required", - "sudoPasswordHint": "Administrator password is required to modify hosts file and system proxy settings.", - "enterSudoPassword": "Enter sudo password", - "sudoPasswordRequiredError": "Sudo password is required.", - "cancel": "Cancel", - "confirm": "Confirm", - "settingsApplied": "Settings applied successfully!", - "failedApplySettings": "Failed to apply settings", - "settingsReset": "Settings reset successfully!", - "failedResetSettings": "Failed to reset settings", - "backupRestored": "Backup restored!", - "failedRestore": "Failed to restore", - "checkingCli": "Checking {tool} CLI...", - "cliNotRunnable": "{tool} CLI installed but not runnable", - "cliNotInstalled": "{tool} CLI not installed", - "cliNotDetected": "{tool} CLI not detected", - "cliDetectedReady": "{tool} CLI detected and ready", - "cliFoundFailedHealthcheck": "{tool} CLI was found but failed runtime healthcheck{reason}.", - "installCliPrompt": "Please install {tool} CLI to use this feature.", - "installCodexPrompt": "Please install Codex CLI to use auto-apply feature.", - "hide": "Hide", - "howToInstall": "How to Install", - "installationGuide": "Installation Guide", + "howItWorks": "یہ کیسے کام کرتا ہے:", + "antigravityHowWorksDesc": "Antigravity، Google کے اینڈ پوائنٹ پر درخواستیں بھیجتا ہے۔ MITM انہیں روک کر OmniRoute کی طرف ری ڈائریکٹ کرتا ہے۔", + "antigravityStep1": "1. درخواستوں کو OmniRoute کے ذریعے روٹ کرنے کے لیے MITM شروع کریں۔", + "antigravityStep2Prefix": "2. شامل کریں", + "antigravityStep2Suffix": "کو اپنی hosts فائل میں بطور 127.0.0.1۔", + "antigravityStep3": "3. Antigravity کھولیں اور درخواستیں پراکسی کے ذریعے بھیجی جائیں گی۔", + "mitmHowWorksDesc": "{toolName} اپنے provider اینڈ پوائنٹ پر درخواستیں بھیجتا ہے۔ MITM انہیں روک کر OmniRoute کی طرف ری ڈائریکٹ کرتا ہے۔", + "mitmStep1": "1. درخواستوں کو OmniRoute کے ذریعے روٹ کرنے کے لیے MITM شروع کریں۔", + "mitmStep2Prefix": "2. شامل کریں", + "mitmStep2Suffix": "کو اپنی hosts فائل میں بطور 127.0.0.1۔", + "mitmStep3": "3. {toolName} کھولیں اور درخواستیں پراکسی کے ذریعے بھیجی جائیں گی۔", + "sudoPasswordRequiredTitle": "Sudo پاس ورڈ درکار ہے", + "sudoPasswordHint": "hosts فائل اور سسٹم پراکسی کی ترتیبات میں ترمیم کرنے کے لیے ایڈمنسٹریٹر پاس ورڈ درکار ہے۔", + "enterSudoPassword": "sudo پاس ورڈ درج کریں", + "sudoPasswordRequiredError": "Sudo پاس ورڈ درکار ہے۔", + "cancel": "منسوخ کریں", + "confirm": "تصدیق کریں", + "settingsApplied": "ترتیبات کامیابی سے لاگو ہو گئیں!", + "failedApplySettings": "ترتیبات لاگو کرنے میں ناکامی", + "settingsReset": "ترتیبات کامیابی سے ری سیٹ ہو گئیں!", + "failedResetSettings": "ترتیبات ری سیٹ کرنے میں ناکامی", + "backupRestored": "بیک اپ بحال ہو گیا!", + "failedRestore": "بحال کرنے میں ناکامی", + "checkingCli": "{tool} CLI کی جانچ کی جا رہی ہے...", + "cliNotRunnable": "{tool} CLI انسٹال ہے لیکن چلنے کے قابل نہیں", + "cliNotInstalled": "{tool} CLI انسٹال نہیں ہے", + "cliNotDetected": "{tool} CLI کا پتا نہیں چلا", + "cliDetectedReady": "{tool} CLI کا پتا چل گیا اور تیار ہے", + "cliFoundFailedHealthcheck": "{tool} CLI مل گیا تھا لیکن رن ٹائم صحت کی جانچ ناکام ہو گئی{reason}۔", + "installCliPrompt": "اس خصوصیت کو استعمال کرنے کے لیے براہِ کرم {tool} CLI انسٹال کریں۔", + "installCodexPrompt": "خودکار اطلاق کی خصوصیت استعمال کرنے کے لیے براہِ کرم Codex CLI انسٹال کریں۔", + "hide": "چھپائیں", + "howToInstall": "انسٹال کرنے کا طریقہ", + "installationGuide": "انسٹالیشن گائیڈ", "platforms": "macOS / Linux / Windows:", - "afterInstallationRun": "After installation, run", - "toVerify": "to verify.", - "current": "Current", + "afterInstallationRun": "انسٹالیشن کے بعد، چلائیں", + "toVerify": "تصدیق کرنے کے لیے۔", + "current": "موجودہ", "baseUrlPlaceholder": "https://.../v1", - "resetToDefault": "Reset to default", + "resetToDefault": "ڈیفالٹ پر ری سیٹ کریں", "providerModelPlaceholder": "provider/model-id", - "apply": "Apply", - "reset": "Reset", - "manualConfig": "Manual Config", - "backups": "Backups", - "configBackups": "Config Backups", - "noBackupsYet": "No backups yet. Backups are created automatically before each Apply or Reset.", - "restore": "Restore", - "backupRestoredReloading": "Backup restored! Reloading status...", - "failedRestoreBackup": "Failed to restore backup", - "applied": "Applied!", - "failed": "Failed", - "resetDone": "Reset!", - "omnirouteConfiguredOpenAiCompatible": "OmniRoute is configured as OpenAI-compatible provider", - "provider": "Provider", + "apply": "لاگو کریں", + "reset": "ری سیٹ کریں", + "manualConfig": "دستی کنفیگریشن", + "backups": "بیک اپس", + "configBackups": "کنفیگریشن بیک اپس", + "noBackupsYet": "ابھی تک کوئی بیک اپ نہیں ہے۔ ہر بار لاگو کرنے یا ری سیٹ کرنے سے پہلے بیک اپ خودکار طور پر بنائے جاتے ہیں۔", + "restore": "بحال کریں", + "backupRestoredReloading": "بیک اپ بحال ہو گیا! اسٹیٹس دوبارہ لوڈ ہو رہا ہے...", + "failedRestoreBackup": "بیک اپ بحال کرنے میں ناکامی", + "applied": "لاگو ہو گیا!", + "failed": "ناکام", + "resetDone": "ری سیٹ ہو گیا!", + "omnirouteConfiguredOpenAiCompatible": "OmniRoute کو OpenAI سے مطابقت رکھنے والے پرووائیڈر کے طور پر کنفیگر کیا گیا ہے", + "provider": "پرووائیڈر", "model": "Model", - "providers": "Providers", - "auth": "Auth", - "noApiKeysAvailable": "No API keys available", - "usingDefaultOmniroute": "Using default: sk_omniroute", - "updateConfig": "Update Config", - "applyConfig": "Apply Config", - "noBackupsAvailable": "No backups available.", - "profileSaved": "Profile \"{name}\" saved!", - "failedSaveProfile": "Failed to save profile", - "profileActivated": "Profile activated!", - "failedActivateProfile": "Failed to activate profile", - "profiles": "Profiles", - "savedProfiles": "Saved Profiles", - "noProfilesYet": "No profiles saved yet. Save current config as a profile below.", - "activate": "Activate", - "deleteProfile": "Delete profile", - "profileNamePlaceholder": "Profile name (e.g. Personal Account)", - "saveCurrent": "Save Current", - "codexAuthNotePrefix": "Codex uses", - "codexAuthNoteMiddle": "with", - "codexAuthNoteSuffix": "Click \"Apply\" to auto-configure.", - "claudeManualConfiguration": "Claude CLI - Manual Configuration", - "codexManualConfiguration": "Codex CLI - Manual Configuration", - "droidManualConfiguration": "Factory Droid - Manual Configuration", - "openClawManualConfiguration": "Open Claw - Manual Configuration", - "clineManualConfiguration": "Cline Manual Configuration", - "kiloManualConfiguration": "Kilo Code Manual Configuration", - "whenToUseLabel": "When to use", - "openToolDocs": "Open tool docs", + "providers": "پرووائیڈرز", + "auth": "تصدیق", + "noApiKeysAvailable": "کوئی API کلید دستیاب نہیں", + "usingDefaultOmniroute": "ڈیفالٹ استعمال ہو رہا ہے: sk_omniroute", + "updateConfig": "کنفیگریشن اپ ڈیٹ کریں", + "applyConfig": "کنفیگریشن لاگو کریں", + "noBackupsAvailable": "کوئی بیک اپ دستیاب نہیں۔", + "profileSaved": "پروفائل \"{name}\" محفوظ ہو گیا!", + "failedSaveProfile": "پروفائل محفوظ کرنے میں ناکامی", + "profileActivated": "پروفائل فعال ہو گیا!", + "failedActivateProfile": "پروفائل فعال کرنے میں ناکامی", + "profiles": "پروفائلز", + "savedProfiles": "محفوظ کردہ پروفائلز", + "noProfilesYet": "ابھی تک کوئی پروفائل محفوظ نہیں کیا گیا۔ ذیل میں موجودہ کنفیگریشن کو بطور پروفائل محفوظ کریں۔", + "activate": "فعال کریں", + "deleteProfile": "پروفائل حذف کریں", + "profileNamePlaceholder": "پروفائل کا نام (مثلاً ذاتی اکاؤنٹ)", + "saveCurrent": "موجودہ کو محفوظ کریں", + "codexAuthNotePrefix": "Codex استعمال کرتا ہے", + "codexAuthNoteMiddle": "کے ساتھ", + "codexAuthNoteSuffix": "خودکار کنفیگریشن کے لیے \"لاگو کریں\" پر کلک کریں۔", + "claudeManualConfiguration": "Claude CLI - دستی کنفیگریشن", + "codexManualConfiguration": "Codex CLI - دستی کنفیگریشن", + "droidManualConfiguration": "Factory Droid - دستی کنفیگریشن", + "openClawManualConfiguration": "Open Claw - دستی کنفیگریشن", + "clineManualConfiguration": "Cline کی دستی کنفیگریشن", + "kiloManualConfiguration": "Kilo Code کی دستی کنفیگریشن", + "whenToUseLabel": "کب استعمال کریں", + "openToolDocs": "ٹول کی دستاویزات کھولیں", "toolUseCases": { - "claude": "Use when you want strong planning workflows and long multi-file refactors with Claude Code.", - "codex": "Use when your team is standardized on OpenAI Codex CLI flows and profile-based auth.", - "droid": "Use when you need a lightweight terminal agent focused on fast coding and command execution loops.", - "openclaw": "Use when you want an Open Claw style coding agent but routed through OmniRoute policies.", - "cline": "Use when you configure coding agents inside editors and want guided setup with OmniRoute models.", - "kilo": "Use when your workflow depends on Kilo Code commands and fast iterative edits.", - "cursor": "Use when coding in Cursor and you need custom OpenAI-compatible models through OmniRoute.", - "continue": "Use when running Continue in IDEs and you need portable JSON-based provider configuration.", - "opencode": "Use when you prefer terminal-native agent runs and scripted automation via OpenCode.", - "kiro": "Use when integrating Kiro and controlling model routing centrally from OmniRoute.", - "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.", - "antigravity": "Use when Antigravity/Kiro traffic must be intercepted through MITM and routed to OmniRoute.", - "copilot": "Use when you want Copilot chat style UX while enforcing OmniRoute keys and routing rules.", - "amp": "Use when you want Amp shorthand workflows but still need OmniRoute alias and routing rules enforcement.", - "hermes": "Use when you need a lightweight terminal-native AI assistant for quick tasks.", + "claude": "اس وقت استعمال کریں جب آپ Claude Code کے ساتھ مضبوط منصوبہ بندی کے ورک فلوز اور متعدد فائلوں پر مشتمل طویل ری فیکٹرنگ چاہتے ہوں۔", + "codex": "اس وقت استعمال کریں جب آپ کی ٹیم OpenAI Codex CLI فلوز اور پروفائل پر مبنی توثیق کو بطور معیار استعمال کرتی ہو۔", + "droid": "اس وقت استعمال کریں جب آپ کو تیز رفتار کوڈنگ اور کمانڈ پر عمل درآمد کے چکروں پر مرکوز ایک ہلکا پھلکا ٹرمینل ایجنٹ درکار ہو۔", + "openclaw": "اس وقت استعمال کریں جب آپ Open Claw طرز کا کوڈنگ ایجنٹ چاہتے ہوں، لیکن اسے OmniRoute کی پالیسیوں کے ذریعے روٹ کرنا ہو۔", + "cline": "اس وقت استعمال کریں جب آپ ایڈیٹرز کے اندر کوڈنگ ایجنٹس کنفیگر کرتے ہوں اور OmniRoute ماڈلز کے ساتھ رہنمائی پر مبنی سیٹ اپ چاہتے ہوں۔", + "kilo": "اس وقت استعمال کریں جب آپ کا ورک فلو Kilo Code کمانڈز اور تیز تکراری ترامیم پر منحصر ہو۔", + "cursor": "اس وقت استعمال کریں جب آپ Cursor میں کوڈنگ کر رہے ہوں اور OmniRoute کے ذریعے حسبِ ضرورت OpenAI-compatible ماڈلز درکار ہوں۔", + "continue": "اس وقت استعمال کریں جب آپ IDEs میں Continue چلا رہے ہوں اور آپ کو قابلِ منتقلی JSON پر مبنی پرووائیڈر کنفیگریشن درکار ہو۔", + "opencode": "اس وقت استعمال کریں جب آپ ٹرمینل میں براہِ راست ایجنٹ چلانے اور OpenCode کے ذریعے اسکرپٹ شدہ آٹومیشن کو ترجیح دیتے ہوں۔", + "kiro": "اس وقت استعمال کریں جب آپ Kiro کو انٹیگریٹ کر رہے ہوں اور OmniRoute سے ماڈل روٹنگ کو مرکزی طور پر کنٹرول کرنا چاہتے ہوں۔", + "windsurf": "اس وقت استعمال کریں جب آپ AI کو ترجیح دینے والا IDE چاہتے ہوں، جس میں Codeium/Windsurf ماڈلز کو OmniRoute کے ذریعے روٹ کیا گیا ہو۔", + "antigravity": "اس وقت استعمال کریں جب Antigravity/Kiro ٹریفک کو MITM کے ذریعے انٹرسیپٹ کرکے OmniRoute کی طرف روٹ کرنا ضروری ہو۔", + "copilot": "اس وقت استعمال کریں جب آپ Copilot چیٹ طرز کا صارف تجربہ چاہتے ہوں، جبکہ OmniRoute کیز اور روٹنگ کے قواعد بھی نافذ کرنا چاہتے ہوں۔", + "amp": "اس وقت استعمال کریں جب آپ Amp کے مختصر ورک فلوز چاہتے ہوں، لیکن پھر بھی OmniRoute کے عرفی نام اور روٹنگ کے قواعد کا نفاذ درکار ہو۔", + "hermes": "اس وقت استعمال کریں جب آپ کو فوری کاموں کے لیے ہلکا پھلکا، ٹرمینل میں براہِ راست چلنے والا AI اسسٹنٹ درکار ہو۔", "hermes-agent": "تب استعمال کریں جب آپ کو Hermes Agent (از Nousresearch) کی ضرورت ہو جس میں ڈیفالٹ، ڈیلیگیشن، ویژن اور معاون ماڈلز OmniRoute کے ذریعے روٹ کیے گئے ہوں۔", - "custom": "Use for custom tool implementations or generic OpenAI-compatible configurations." + "custom": "حسبِ ضرورت ٹول کے نفاذ یا عمومی OpenAI-compatible کنفیگریشنز کے لیے استعمال کریں۔" }, "toolDescriptions": { - "antigravity": "Google Antigravity IDE with MITM", + "antigravity": "MITM کے ساتھ Google Antigravity IDE", "claude": "Anthropic Claude Code CLI", "codex": "OpenAI Codex CLI", "grok-build": "کسٹم پرووائیڈر سپورٹ کے ساتھ xAI Grok Build TUI کوڈنگ ایجنٹ", - "droid": "Factory Droid AI Assistant", - "openclaw": "Open Claw AI Assistant", - "cline": "Cline AI Coding Assistant CLI", - "kilo": "Kilo Code AI Assistant CLI", + "droid": "Factory Droid AI اسسٹنٹ", + "openclaw": "Open Claw AI اسسٹنٹ", + "cline": "Cline AI کوڈنگ اسسٹنٹ CLI", + "kilo": "Kilo Code AI اسسٹنٹ CLI", "qwen": "Qwen Code CLI", "cursor": "Cursor AI Code Editor", - "continue": "Continue AI Assistant", - "opencode": "OpenCode AI coding agent (Terminal)", - "kiro": "Amazon Kiro — AI-powered IDE", + "continue": "Continue AI اسسٹنٹ", + "opencode": "OpenCode AI کوڈنگ ایجنٹ (ٹرمینل)", + "kiro": "Amazon Kiro — AI سے تقویت یافتہ IDE", "windsurf": "Windsurf AI Code Editor", "copilot": "GitHub Copilot AI Assistant", - "amp": "Sourcegraph Amp coding assistant CLI", - "hermes": "Hermes AI Terminal Assistant", + "amp": "Sourcegraph Amp کوڈنگ اسسٹنٹ CLI", + "hermes": "Hermes AI ٹرمینل اسسٹنٹ", "hermes-agent": "Hermes Agent (از Nousresearch) - ملٹی ماڈل سپورٹ (ڈیلیگیشن، ویژن، کمپریشن، وغیرہ) کے ساتھ جدید ٹرمینل AI", - "custom": "Generic OpenAI-compatible CLI or SDK configuration generator", + "custom": "عمومی OpenAI-compatible CLI یا SDK کنفیگریشن جنریٹر", "aider": "OpenAI سے مطابقت رکھنے والے بیس URL کے ساتھ Aider AI پیئر پروگرامنگ CLI", "forge": "کسٹم پرووائیڈر کے ساتھ ForgeCode کوڈنگ ایجنٹ CLI", "cursor-cli": "ہیڈ لیس ایجنٹ موڈ میں Cursor Agent CLI", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter خود مختار کوڈنگ ایجنٹ CLI", "omp": "Oh My Pi ٹرمینل کوڈنگ ایجنٹ", "letta": "مستقل میموری اور ٹول کے استعمال کے ساتھ Letta CLI ایجنٹ", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — OpenAI-compatible پرووائیڈر سپورٹ کے ساتھ خود کو بہتر بنانے والا RLM کوڈنگ ہارنس", "warp": "کسٹم پرووائیڈر سپورٹ کے ساتھ Warp AI ٹرمینل", "agent-deck": "Agent Deck ملٹی ایجنٹ آرکیسٹریٹر", "5dive": "5dive — خود میزبان کوڈنگ ایجنٹس کا بیڑا؛ ایک auth پروفائل ان سب کو OmniRoute کی طرف بھیجتی ہے" @@ -2958,134 +2958,134 @@ "guides": { "cursor": { "notes": { - "0": "Requires Cursor Pro account to use this feature.", - "1": "Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings." + "0": "اس خصوصیت کو استعمال کرنے کے لیے Cursor Pro اکاؤنٹ درکار ہے۔", + "1": "Cursor درخواستوں کو اپنے سرور کے ذریعے روٹ کرتا ہے، اس لیے مقامی اینڈ پوائنٹ معاون نہیں ہے۔ براہِ کرم Settings میں Cloud Endpoint فعال کریں۔" }, "steps": { "1": { - "title": "Open Settings", - "desc": "Go to Settings -> Models" + "title": "Settings کھولیں", + "desc": "Settings -> Models پر جائیں" }, "2": { - "title": "Enable OpenAI API", - "desc": "Enable \"OpenAI API key\" option" + "title": "OpenAI API فعال کریں", + "desc": "\"OpenAI API key\" کا آپشن فعال کریں" }, "3": { - "title": "Base URL" + "title": "بنیادی URL" }, "4": { - "title": "API Key" + "title": "API کلید" }, "5": { - "title": "Add Custom Model", - "desc": "Click \"View All Model\" -> \"Add Custom Model\"" + "title": "حسبِ ضرورت ماڈل شامل کریں", + "desc": "\"تمام ماڈلز دیکھیں\" پر کلک کریں → \"حسبِ ضرورت ماڈل شامل کریں\"" }, "6": { - "title": "Select Model" + "title": "ماڈل منتخب کریں" } } }, "continue": { "steps": { "1": { - "title": "Open Config", - "desc": "Open Continue configuration file" + "title": "کنفیگریشن کھولیں", + "desc": "Continue کی کنفیگریشن فائل کھولیں" }, "2": { - "title": "API Key" + "title": "API کلید" }, "3": { - "title": "Select Model" + "title": "ماڈل منتخب کریں" }, "4": { - "title": "Add Model Config", - "desc": "Add the following configuration to your models array:" + "title": "ماڈل کنفیگریشن شامل کریں", + "desc": "اپنی models array میں درج ذیل کنفیگریشن شامل کریں:" } }, "notes": { - "0": "Continue uses JSON config file." + "0": "Continue، JSON کنفیگریشن فائل استعمال کرتا ہے۔" } }, "opencode": { "steps": { "1": { - "title": "Install OpenCode", - "desc": "Install via npm: npm install -g opencode-ai" + "title": "OpenCode انسٹال کریں", + "desc": "npm کے ذریعے انسٹال کریں: npm install -g opencode-ai" }, "2": { - "title": "API Key" + "title": "API کلید" }, "3": { - "title": "Set Base URL", + "title": "بنیادی URL سیٹ کریں", "desc": "opencode config set baseUrl {baseUrl}" }, "4": { - "title": "Select Model" + "title": "ماڈل منتخب کریں" }, "5": { - "title": "Use Thinking Variant", - "desc": "For thinking models, run with --variant high/low/max (example command below)." + "title": "تھنکنگ ویریئنٹ استعمال کریں", + "desc": "تھنکنگ ماڈلز کے لیے --variant high/low/max کے ساتھ چلائیں (ذیل میں مثالی کمانڈ دیکھیں)۔" } }, "notes": { - "0": "OpenCode requires API key configuration.", - "1": "Set the base URL to your OmniRoute endpoint." + "0": "OpenCode کے لیے API کلید کی کنفیگریشن درکار ہے۔", + "1": "بنیادی URL کو اپنے OmniRoute اینڈ پوائنٹ پر سیٹ کریں۔" } }, "kiro": { "steps": { "1": { - "title": "Open Kiro Settings", - "desc": "Go to Settings → AI Provider" + "title": "Kiro کی ترتیبات کھولیں", + "desc": "ترتیبات → AI فراہم کنندہ پر جائیں" }, "2": { - "title": "Base URL", - "desc": "Paste your OmniRoute endpoint URL" + "title": "بنیادی URL", + "desc": "اپنے OmniRoute اینڈ پوائنٹ کا URL پیسٹ کریں" }, "3": { - "title": "API Key" + "title": "API کلید" }, "4": { - "title": "Select Model" + "title": "ماڈل منتخب کریں" } }, "notes": { - "0": "Kiro requires Amazon account." + "0": "Kiro کے لیے Amazon اکاؤنٹ درکار ہے۔" } }, "windsurf": { "steps": { "1": { - "title": "Open AI Settings", + "title": "AI کی ترتیبات کھولیں", "desc": "Click the AI Settings icon in Windsurf or go to Settings" }, "2": { - "title": "Add Custom Provider", + "title": "حسبِ ضرورت فراہم کنندہ شامل کریں", "desc": "Select \"Add custom provider\" (OpenAI-compatible)" }, "3": { - "title": "Base URL", + "title": "بنیادی URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API کلید", "desc": "Select your OmniRoute API key" }, "5": { - "title": "Select Model", - "desc": "Choose a model from the dropdown" + "title": "ماڈل منتخب کریں", + "desc": "ڈراپ ڈاؤن سے ایک ماڈل منتخب کریں" } } } }, - "autoConfiguredTab": "Auto-Configured", - "toolCategoriesDesc": "Configure AI coding assistants to route through OmniRoute", - "allToolsTab": "All Tools", - "guidedClientsTab": "Guided Clients", - "mitmClientsTab": "MITM Clients", + "autoConfiguredTab": "خودکار طور پر کنفیگر شدہ", + "toolCategoriesDesc": "AI کوڈنگ معاونین کو OmniRoute کے ذریعے روٹ کرنے کے لیے کنفیگر کریں", + "allToolsTab": "تمام ٹولز", + "guidedClientsTab": "رہنمائی والے کلائنٹس", + "mitmClientsTab": "MITM کلائنٹس", "customCliTab": "حسب ضرورت CLI", - "toolCategories": "Tool Categories", - "visibleToolsCount": "{count} tools available", + "toolCategories": "ٹول کے زمرے", + "visibleToolsCount": "{count} ٹولز دستیاب ہیں", "customCliBuilderTitle": "OpenAI سے مطابقت رکھنے والا CLI بلڈر", "customCliBuilderDescription": "کسی بھی CLI یا SDK کے لیے env vars اور JSON کے ٹکڑوں کو تخلیق کریں جو OpenAI سے مطابقت رکھنے والے بیس URL، API کلید، اور ماڈل ID کو قبول کرتا ہے۔", "customCliNoModels": "ماڈل سلیکٹرز کو آباد کرنے کے لیے کم از کم ایک فراہم کنندہ سے رابطہ کریں۔", @@ -3203,75 +3203,75 @@ "cliproxyapiVersion": "ورژن" }, "combos": { - "title": "Combos", - "description": "Create model combos with weighted routing and fallback support", + "title": "کمبوز", + "description": "وزنی روٹنگ اور فال بیک سپورٹ کے ساتھ ماڈل کمبوز بنائیں", "autoCatalogTitle": "آٹو روٹنگ کیٹلاگ", "autoCatalogTemplateCount": "{count} ٹیمپلیٹس", "autoCatalogDescription": "بلٹ ان آٹو/* کومبوز مربوط فراہم کنندگان سے متحرک طور پر حل ہوئے۔ ان میں سے کسی بھی ID کو بطور ماڈل فیلڈ استعمال کریں — کسی سیٹ اپ کی ضرورت نہیں۔", "autoCatalogExpand": "آٹو روٹنگ کیٹلاگ کو پھیلائیں۔", "autoCatalogCollapse": "آٹو روٹنگ کیٹلاگ کو سکیڑیں۔", - "createCombo": "Create Combo", - "editCombo": "Edit Combo", - "deleteCombo": "Delete Combo", - "noModels": "No models", - "noModelsYet": "No models added yet", - "addModel": "Add Model", - "addModelToCombo": "Add Model to Combo", - "routingStrategy": "Routing Strategy", - "maxRetries": "Max Retries", - "timeout": "Timeout (ms)", - "healthcheck": "Healthcheck", - "priority": "Priority", - "fallback": "Fallback", + "createCombo": "کمبو بنائیں", + "editCombo": "کمبو میں ترمیم کریں", + "deleteCombo": "کمبو حذف کریں", + "noModels": "کوئی ماڈل نہیں", + "noModelsYet": "ابھی تک کوئی ماڈل شامل نہیں کیا گیا", + "addModel": "ماڈل شامل کریں", + "addModelToCombo": "کمبو میں ماڈل شامل کریں", + "routingStrategy": "روٹنگ کی حکمتِ عملی", + "maxRetries": "دوبارہ کوششوں کی زیادہ سے زیادہ تعداد", + "timeout": "ٹائم آؤٹ (ms)", + "healthcheck": "صحت کی جانچ", + "priority": "ترجیح", + "fallback": "فال بیک", "roundRobin": "Round Robin", - "random": "Random", - "leastLatency": "Least Latency", - "comboName": "Combo Name", + "random": "بے ترتیب", + "leastLatency": "کم ترین تاخیر", + "comboName": "کمبو کا نام", "comboNamePlaceholder": "my-combo", "comboDescription": "تفصیل", "comboDescriptionPlaceholder": "اس کومبو کی وضاحت کرنے والا اختیاری نوٹ", - "deleteConfirm": "Delete this combo?", - "noCombosYet": "No combos yet", - "comboCreated": "Combo created successfully", - "comboUpdated": "Combo updated successfully", - "comboDeleted": "Combo deleted", - "failedCreate": "Failed to create combo", - "failedUpdate": "Failed to update combo", - "errorCreating": "Error creating combo", - "errorUpdating": "Error updating combo", - "errorDeleting": "Error deleting combo", - "testFailed": "Test request failed", - "failedToggle": "Failed to toggle combo", - "testResults": "Test Results — {name}", - "resolvedBy": "Resolved by:", - "more": "+{count} more", - "reqs": "reqs", - "success": "success", - "proxyConfigured": "Proxy configured", - "copyComboName": "Copy combo name", - "enableCombo": "Enable combo", - "disableCombo": "Disable combo", - "testCombo": "Test combo", - "duplicate": "Duplicate", - "proxyConfig": "Proxy configuration", - "nameRequired": "Name is required", - "nameInvalid": "Only letters, numbers, -, _, / and . allowed", - "nameHint": "Letters, numbers, -, _, / and . allowed", - "priorityDesc": "Sequential fallback: tries model 1 first, then 2, etc.", - "weightedDesc": "Distributes traffic by weight percentage with fallback", - "roundRobinDesc": "Circular distribution: each request goes to the next model in rotation", - "contextRelay": "Context Relay", - "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate", - "randomDesc": "Uniform random selection, then fallback to remaining models", - "leastUsedDesc": "Picks the model with fewest requests, balancing load over time", - "costOptimizedDesc": "Routes to the cheapest model first based on pricing", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", - "resetAware": "Reset-Aware RR", + "deleteConfirm": "یہ کمبو حذف کریں؟", + "noCombosYet": "ابھی تک کوئی کمبو نہیں", + "comboCreated": "کمبو کامیابی سے بنا دیا گیا", + "comboUpdated": "کمبو کامیابی سے اپ ڈیٹ ہو گیا", + "comboDeleted": "کمبو حذف کر دیا گیا", + "failedCreate": "کمبو بنانے میں ناکامی", + "failedUpdate": "کمبو اپ ڈیٹ کرنے میں ناکامی", + "errorCreating": "کمبو بناتے وقت خرابی", + "errorUpdating": "کمبو اپ ڈیٹ کرتے وقت خرابی", + "errorDeleting": "کمبو حذف کرتے وقت خرابی", + "testFailed": "آزمائشی درخواست ناکام ہو گئی", + "failedToggle": "کمبو کو ٹوگل کرنے میں ناکامی", + "testResults": "ٹیسٹ کے نتائج — {name}", + "resolvedBy": "حل کنندہ:", + "more": "+{count} مزید", + "reqs": "درخواستیں", + "success": "کامیاب", + "proxyConfigured": "پراکسی کنفیگر ہو گئی", + "copyComboName": "کمبو کا نام کاپی کریں", + "enableCombo": "کومبو فعال کریں", + "disableCombo": "کومبو غیر فعال کریں", + "testCombo": "کومبو کی جانچ کریں", + "duplicate": "نقل بنائیں", + "proxyConfig": "پراکسی کی تشکیل", + "nameRequired": "نام درکار ہے", + "nameInvalid": "صرف حروف، اعداد، -, _, / اور . کی اجازت ہے", + "nameHint": "حروف، اعداد، -, _, / اور . کی اجازت ہے", + "priorityDesc": "ترتیبی متبادل: پہلے ماڈل 1، پھر 2، اور اسی طرح آزماتا ہے۔", + "weightedDesc": "متبادل کے ساتھ وزن کے فیصد کے لحاظ سے ٹریفک تقسیم کرتا ہے", + "roundRobinDesc": "دوری تقسیم: ہر درخواست باری کے مطابق اگلے ماڈل کو بھیجی جاتی ہے", + "contextRelay": "سیاق و سباق کی منتقلی", + "contextRelayDesc": "اکاؤنٹس کی تبدیلی کے وقت منتقلی کے خلاصوں کے ذریعے سیشن کا تسلسل برقرار رکھتا ہے", + "randomDesc": "یکساں بے ترتیب انتخاب، پھر باقی ماڈلز کو بطور متبادل آزماتا ہے", + "leastUsedDesc": "وقت کے ساتھ بوجھ کو متوازن کرتے ہوئے سب سے کم درخواستوں والا ماڈل منتخب کرتا ہے", + "costOptimizedDesc": "قیمتوں کی بنیاد پر پہلے سب سے سستے ماڈل کو درخواست بھیجتا ہے", + "cacheOptimizedDesc": "ہر دوبارہ قابلِ استعمال پرامپٹ سابقے کو مستقل طور پر اسی فراہم کنندہ کے اکاؤنٹ تک پہنچاتا ہے", + "resetAware": "ری سیٹ سے باخبر RR", "resetAwareDesc": "بقیہ کوٹہ کو 5h اور ہفتہ وار ری سیٹ کے مقابلے میں بیلنس کریں، پھر راؤنڈ روبنز ملتے جلتے اسکورز", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "کوٹے کے لحاظ سے وزن شدہ", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling", + "strictRandom": "سخت بے ترتیب", + "strictRandomDesc": "شفل ڈیک — دوبارہ شفل کرنے سے پہلے ہر ماڈل کو ایک بار استعمال کرتا ہے", "fusion": "فیوژن", "fusionDesc": "پرامپٹ کو متوازی طور پر ہر پینل ماڈل کو بھیجتا ہے، پھر ایک جج ماڈل ایک حتمی جواب تیار کرتا ہے", "fusionJudgeModel": "جج ماڈل", @@ -3282,27 +3282,27 @@ "fusionStragglerGraceMsHelp": "کورم پورا ہونے کے بعد سست پینل ماڈلز کا کتنی دیر انتظار کرنا ہے (ڈیفالٹ 8000)۔", "fusionPanelHardTimeoutMs": "پینل ہارڈ ٹائم آؤٹ (ms)", "fusionPanelHardTimeoutMsHelp": "حتمی حد تاکہ ایک رکا ہوا ماڈل پورے پینل کو معطل نہ کر سکے (ڈیفالٹ 90000)۔", - "models": "Models", - "autoBalance": "Auto-balance", - "advancedSettings": "Advanced Settings", - "retryDelay": "Retry Delay (ms)", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.", - "contextRelaySummaryModel": "Summary Model", - "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.", - "advancedHint": "Leave empty to use global defaults. These override per-provider settings.", + "models": "ماڈلز", + "autoBalance": "خودکار توازن", + "advancedSettings": "اعلیٰ ترتیبات", + "retryDelay": "دوبارہ کوشش میں تاخیر (ms)", + "concurrencyPerModel": "ہم وقتی / ماڈل", + "queueTimeout": "قطار کا وقت ختم ہونے کی حد (ms)", + "contextRelayHandoffThreshold": "منتقلی کی حد", + "contextRelayHandoffThresholdHelp": "جب کوٹے کا استعمال اس حد تک پہنچ جاتا ہے تو فعال اکاؤنٹ ختم ہونے سے پہلے OmniRoute ایک منظم منتقلی خلاصہ تیار کرتا ہے۔", + "contextRelayMaxMessages": "خلاصے کے لیے زیادہ سے زیادہ پیغامات", + "contextRelayMaxMessagesHelp": "اس بات کو محدود کرتا ہے کہ حالیہ تاریخ کا کتنا حصہ منتقلی خلاصے میں مختصر کیا جائے۔", + "contextRelaySummaryModel": "خلاصے کا ماڈل", + "contextRelaySummaryModelHelp": "اختیاری متبادل ماڈل جو صرف منتقلی خلاصہ تیار کرنے کے لیے استعمال ہوتا ہے۔ فعال کومبو ماڈل کو دوبارہ استعمال کرنے کے لیے اسے خالی چھوڑ دیں۔", + "contextRelayProviderNote": "سیاق و سباق کی منتقلی فی الحال Codex اکاؤنٹس کی تبدیلی کے لیے منتقلیاں تیار کرتی ہے۔ بہترین تسلسل کے لیے اسے ایک ہی فراہم کنندہ کے متعدد اکاؤنٹس کے ساتھ استعمال کریں۔", + "advancedHint": "عالمی طے شدہ اقدار استعمال کرنے کے لیے خالی چھوڑ دیں۔ یہ فی فراہم کنندہ ترتیبات کو نظرانداز کرتی ہیں۔", "failoverBeforeRetry": "دوبارہ کوشش کرنے سے پہلے فیل اوور", "maxSetRetries": "زیادہ سے زیادہ سیٹ دوبارہ کوششیں", "setRetryDelayMs": "دوبارہ کوشش میں تاخیر (ms) سیٹ کریں", - "moveUp": "Move up", - "moveDown": "Move down", - "removeModel": "Remove", - "saving": "Saving...", + "moveUp": "اوپر منتقل کریں", + "moveDown": "نیچے منتقل کریں", + "removeModel": "ہٹائیں", + "saving": "محفوظ کیا جا رہا ہے...", "liveNoProviders": "ابھی تک کوئی فراہم کنندگان نہیں دیکھے گئے۔", "liveFleetDataHint": "فلیٹ ڈیٹا لائیو کومبو ایونٹس کے ذریعے موصول ہوتا ہے۔", "liveActiveCount": "فعال ({count})", @@ -3342,43 +3342,43 @@ "playgroundEmptyHint": "ایک کومبو منتخب کریں اور روٹنگ کا راستہ دیکھنے کے لیے روٹ سمولیٹ کریں پر کلک کریں۔", "playgroundNoCombosYet": "ابھی تک کوئی کومبوز کنفیگر نہیں کیے گئے۔", "playgroundCreateFirst": "پہلے ایک بنائیں", - "weighted": "Weighted", - "leastUsed": "Least-Used", - "costOpt": "Cost-Opt", - "strategyGuideTitle": "How to use this strategy", - "strategyGuideWhen": "When to use", - "strategyGuideAvoid": "Avoid when", - "strategyGuideExample": "Example", + "weighted": "وزن شدہ", + "leastUsed": "سب سے کم استعمال شدہ", + "costOpt": "لاگت کے لحاظ سے بہتر", + "strategyGuideTitle": "اس حکمتِ عملی کو کیسے استعمال کریں", + "strategyGuideWhen": "کب استعمال کریں", + "strategyGuideAvoid": "کب گریز کریں", + "strategyGuideExample": "مثال", "strategyGuide": { "priority": { - "when": "You have one preferred model and only want fallback on failure.", - "avoid": "You need request distribution across models.", - "example": "Primary coding model with cheaper backup for outages." + "when": "آپ کا ایک ترجیحی ماڈل ہے اور آپ صرف ناکامی کی صورت میں متبادل استعمال کرنا چاہتے ہیں۔", + "avoid": "آپ کو درخواستیں مختلف ماڈلز میں تقسیم کرنے کی ضرورت ہے۔", + "example": "بنیادی کوڈنگ ماڈل، سروس کی بندش کے لیے کم لاگت والے متبادل کے ساتھ۔" }, "weighted": { - "when": "You need controlled traffic split across models.", - "avoid": "You cannot maintain accurate weights over time.", - "example": "80% stable model + 20% canary model rollout." + "when": "آپ کو مختلف ماڈلز کے درمیان ٹریفک کی تقسیم کو کنٹرول کرنے کی ضرورت ہے۔", + "avoid": "آپ وقت کے ساتھ درست اوزان برقرار نہیں رکھ سکتے۔", + "example": "80% مستحکم ماڈل + 20% کینری ماڈل رول آؤٹ۔" }, "round-robin": { - "when": "You want predictable and even distribution.", - "avoid": "Models differ too much in latency or cost.", - "example": "Same model on multiple accounts to spread throughput." + "when": "آپ قابلِ پیش گوئی اور یکساں تقسیم چاہتے ہیں۔", + "avoid": "ماڈلز تاخیر یا لاگت کے لحاظ سے بہت زیادہ مختلف ہیں۔", + "example": "تھروپٹ تقسیم کرنے کے لیے متعدد اکاؤنٹس پر ایک ہی ماڈل۔" }, "random": { - "when": "You want simple distribution with minimal setup.", - "avoid": "You need strict traffic guarantees.", - "example": "Quick prototyping with equivalent models." + "when": "آپ کم سے کم سیٹ اپ کے ساتھ سادہ تقسیم چاہتے ہیں۔", + "avoid": "آپ کو ٹریفک کی سخت ضمانتیں درکار ہیں۔", + "example": "یکساں ماڈلز کے ساتھ فوری پروٹوٹائپنگ۔" }, "least-used": { - "when": "You want adaptive balancing based on live demand.", - "avoid": "Traffic is too low to benefit from usage balancing.", - "example": "Mixed workloads where one model often gets overloaded." + "when": "آپ لائیو طلب کی بنیاد پر موافق توازن چاہتے ہیں۔", + "avoid": "استعمال کے توازن سے فائدہ اٹھانے کے لیے ٹریفک بہت کم ہے۔", + "example": "مخلوط ورک لوڈز، جہاں ایک ماڈل اکثر اوور لوڈ ہو جاتا ہے۔" }, "cost-optimized": { - "when": "Cost reduction is your top priority.", - "avoid": "Pricing data is missing or outdated.", - "example": "Background or batch jobs where lower cost is preferred." + "when": "لاگت میں کمی آپ کی اولین ترجیح ہے۔", + "avoid": "قیمتوں کا ڈیٹا غائب یا متروک ہے۔", + "example": "پسِ منظر یا بیچ جابز، جہاں کم لاگت کو ترجیح دی جاتی ہے۔" }, "reset-aware": { "when": "آپ کوٹہ ٹیلی میٹری اور مختلف ری سیٹ ونڈوز کے ساتھ متعدد اکاؤنٹس میں روٹ کرتے ہیں۔", @@ -3386,104 +3386,104 @@ "example": "کل 60% ہفتہ وار اکاؤنٹ کو بعد میں دوبارہ ترتیب دینے والے 80% اکاؤنٹ پر ترجیح دیں۔" }, "strict-random": { - "when": "Use when you want perfectly even spread — each model used once before repeating.", - "avoid": "Avoid when models have different quality or latency and order matters.", - "example": "Example: Multiple accounts of the same model to distribute usage evenly." + "when": "اس وقت استعمال کریں جب آپ بالکل یکساں تقسیم چاہتے ہوں — دہرانے سے پہلے ہر ماڈل ایک بار استعمال ہو۔", + "avoid": "اس وقت گریز کریں جب ماڈلز کا معیار یا تاخیر مختلف ہو اور ترتیب اہم ہو۔", + "example": "مثال: استعمال کو یکساں طور پر تقسیم کرنے کے لیے ایک ہی ماڈل کے متعدد اکاؤنٹس۔" }, "p2c": { - "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.", - "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.", - "example": "Example: High-throughput inference across 4+ equivalent model endpoints." + "when": "اس وقت استعمال کریں جب آپ Power-of-Two-Choices الگورتھم کے ذریعے کم تاخیر والا انتخاب چاہتے ہوں۔", + "avoid": "2 یا اس سے کم ماڈلز والے چھوٹے مجموعوں کے لیے گریز کریں — راؤنڈ رابن کے مقابلے میں کوئی فائدہ نہیں۔", + "example": "مثال: 4+ مساوی ماڈل اینڈ پوائنٹس پر ہائی تھروپٹ انفرنس۔" }, "context-relay": { - "when": "Use when long sessions must survive account rotation without losing the working context.", - "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.", - "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion." + "when": "اس وقت استعمال کریں جب طویل سیشنز کو مؤثر سیاق و سباق کھوئے بغیر اکاؤنٹ روٹیشن کے دوران برقرار رہنا ضروری ہو۔", + "avoid": "اس وقت گریز کریں جب اکاؤنٹ تبدیل کرنا شاذ و نادر ہو یا آپ اضافی خلاصہ سازی کی درخواستیں نہ چاہتے ہوں۔", + "example": "مثال: Codex سیشنز جو کوٹا تقریباً ختم ہونے پر متعدد اکاؤنٹس کے درمیان روٹیٹ ہوتے ہیں۔" }, "fill-first": { - "when": "Use when you want to fully exhaust one provider's quota before moving to the next.", - "avoid": "Avoid when you need request-level load balancing across providers.", - "example": "Example: Use all $200 Deepgram credits before falling back to Groq." + "when": "اس وقت استعمال کریں جب آپ اگلے فراہم کنندہ پر جانے سے پہلے ایک فراہم کنندہ کا کوٹا مکمل طور پر استعمال کرنا چاہتے ہوں۔", + "avoid": "اس وقت گریز کریں جب آپ کو فراہم کنندگان کے درمیان درخواست کی سطح پر لوڈ بیلنسنگ درکار ہو۔", + "example": "مثال: Groq کو متبادل کے طور پر استعمال کرنے سے پہلے تمام $200 Deepgram کریڈٹس استعمال کریں۔" }, "auto": { - "when": "Use when you need multi-factor scoring routing based on cost, latency, and quality.", - "avoid": "Avoid when you need strict priority ordering or historical persistence.", - "example": "Example: Balance requests across models with different strengths." + "when": "اس وقت استعمال کریں جب آپ کو لاگت، تاخیر اور معیار کی بنیاد پر کثیر عنصری اسکورنگ روٹنگ درکار ہو۔", + "avoid": "اس وقت گریز کریں جب آپ کو سخت ترجیحی ترتیب یا تاریخی تسلسل درکار ہو۔", + "example": "مثال: مختلف صلاحیتوں والے ماڈلز میں درخواستوں کو متوازن کریں۔" }, "lkgp": { - "when": "Use when you want to route based on historical success rates and performance.", - "avoid": "Avoid when historical data is limited or unreliable.", - "example": "Example: Route to models with a good track record on specific tasks." + "when": "اس وقت استعمال کریں جب آپ تاریخی کامیابی کی شرحوں اور کارکردگی کی بنیاد پر روٹنگ کرنا چاہتے ہوں۔", + "avoid": "جب تاریخی ڈیٹا محدود یا ناقابلِ اعتماد ہو تو استعمال نہ کریں۔", + "example": "مثال: مخصوص کاموں کے لیے اچھا سابقہ رکھنے والے ماڈلز کی طرف روٹ کریں۔" }, "context-optimized": { - "when": "Use when you need to optimize context window usage across models.", - "avoid": "Avoid when models have similar context lengths or tasks are simple.", - "example": "Example: Distribute long conversations across models with larger context windows." + "when": "جب آپ کو مختلف ماڈلز میں کانٹیکسٹ ونڈو کے استعمال کو بہتر بنانا ہو تو استعمال کریں۔", + "avoid": "جب ماڈلز کی کانٹیکسٹ لمبائیاں یکساں ہوں یا کام سادہ ہوں تو استعمال نہ کریں۔", + "example": "مثال: طویل گفتگوؤں کو بڑی کانٹیکسٹ ونڈوز والے ماڈلز میں تقسیم کریں۔" } }, "advancedHelp": { - "maxRetries": "How many retries are attempted before failing a request.", - "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.", - "timeout": "Maximum request duration before aborting.", - "healthcheck": "Skips unhealthy models/providers from routing decisions.", - "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.", - "queueTimeout": "How long a request can wait in queue before timing out.", + "maxRetries": "درخواست ناکام قرار دینے سے پہلے کتنی بار دوبارہ کوشش کی جاتی ہے۔", + "retryDelay": "دوبارہ کوششوں کے درمیان ابتدائی انتظار۔ زیادہ قدریں اچانک دباؤ کو کم کرتی ہیں۔", + "timeout": "منسوخ کرنے سے پہلے درخواست کی زیادہ سے زیادہ مدت۔", + "healthcheck": "روٹنگ کے فیصلوں میں غیر صحت مند ماڈلز/فراہم کنندگان کو نظر انداز کرتا ہے۔", + "concurrencyPerModel": "راؤنڈ رابن میں فی ماڈل بیک وقت اجازت یافتہ درخواستوں کی زیادہ سے زیادہ تعداد۔", + "queueTimeout": "ٹائم آؤٹ ہونے سے پہلے کوئی درخواست قطار میں کتنی دیر انتظار کر سکتی ہے۔", "failoverBeforeRetry": "فعال ہونے پر، کوئی بھی اپ اسٹریم خرابی اگلے کومبو ہدف پر فوری ناکامی کو متحرک کرتی ہے، تمام دوبارہ کوششوں اور فال بیک URLs کو چھوڑ کر۔", "maxSetRetries": "جب ہر ٹارگٹ ناکام ہوجاتا ہے تو مکمل ٹارگٹ سیٹ پر دوبارہ کوشش کرنے کی تعداد۔ 0 = کوئی سیٹ لیول دوبارہ کوشش نہیں۔", "setRetryDelayMs": "سیٹ لیول کی دوبارہ کوشش کی کوششوں کے درمیان تاخیر، عارضی مسائل کو حل کرنے کا وقت دیتا ہے۔", "disableSessionStickiness": "پہلے پیغام کے ہیش کے ذریعے پوری گفتگو کو ایک کنکشن پر پن کرنے کے بجائے ہر درخواست پر ایک مختلف کنکشن پر روٹیٹ کریں۔ یہ گلوبل ڈیفالٹ کو اوور رائیڈ کرتا ہے۔ ملٹی ٹرن چیٹس کے لیے پرامپٹ کیش ہٹس کو برقرار رکھنے کے لیے اسے Inherit پر چھوڑیں۔" }, - "templatesTitle": "Quick templates", - "templatesDescription": "Apply a starting profile, then adjust models and config.", - "templateApply": "Apply template", - "templateHighAvailability": "High availability", - "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.", - "templateCostSaver": "Cost saver", - "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.", - "templateBalanced": "Balanced load", - "templateBalancedDesc": "Least-used routing to spread demand over time.", - "usageGuideHide": "Hide", - "usageGuideDontShowAgain": "Don't show again", - "usageGuideShow": "Show guide", - "quickTestTitle": "Combo ready to validate", - "quickTestDescription": "Run a test now to confirm fallback and latency behavior.", - "testNow": "Test now", - "pricingCoverage": "Pricing coverage", - "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.", - "pricingAvailable": "Pricing available", - "pricingMissing": "No pricing", - "pricingAvailableShort": "priced", - "pricingMissingShort": "no-price", + "templatesTitle": "فوری ٹیمپلیٹس", + "templatesDescription": "ابتدائی پروفائل لاگو کریں، پھر ماڈلز اور کنفیگریشن کو ایڈجسٹ کریں۔", + "templateApply": "ٹیمپلیٹ لاگو کریں", + "templateHighAvailability": "اعلیٰ دستیابی", + "templateHighAvailabilityDesc": "ہیلتھ چیکس اور محفوظ دوبارہ کوششوں کے ساتھ ترجیحی روٹنگ۔", + "templateCostSaver": "لاگت میں بچت", + "templateCostSaverDesc": "بجٹ کو ترجیح دینے والے ورک لوڈز کے لیے لاگت کے لحاظ سے موزوں روٹنگ۔", + "templateBalanced": "متوازن لوڈ", + "templateBalancedDesc": "وقت کے ساتھ طلب تقسیم کرنے کے لیے کم ترین استعمال والے ماڈل کی طرف روٹنگ۔", + "usageGuideHide": "چھپائیں", + "usageGuideDontShowAgain": "دوبارہ نہ دکھائیں", + "usageGuideShow": "رہنما دکھائیں", + "quickTestTitle": "کومبو توثیق کے لیے تیار ہے", + "quickTestDescription": "فال بیک اور لیٹنسی کے رویے کی تصدیق کے لیے ابھی ٹیسٹ چلائیں۔", + "testNow": "ابھی ٹیسٹ کریں", + "pricingCoverage": "قیمتوں کی کوریج", + "pricingCoverageHint": "لاگت کے لحاظ سے موزوں طریقہ اس وقت بہترین کام کرتا ہے جب کومبو کے تمام ماڈلز کی قیمتیں دستیاب ہوں۔", + "pricingAvailable": "قیمت دستیاب ہے", + "pricingMissing": "قیمت دستیاب نہیں", + "pricingAvailableShort": "قیمت موجود", + "pricingMissingShort": "بلا قیمت", "fallbackOnlyOnQuotaExhaustion": "صرف کوٹہ ختم ہونے پر آگے بڑھیں", "fallbackOnlyOnQuotaExhaustionShort": "کوٹہ صرف متبادل", - "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.", - "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.", - "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.", - "filterAll": "All", - "filterIntelligent": "Intelligent", - "filterDeterministic": "Deterministic", - "filterEmptyTitle": "No combos match this strategy filter.", - "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.", - "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.", - "readinessTitle": "Ready to save?", - "readinessDescription": "Review the checklist before creating or updating this combo.", - "readinessCheckName": "Combo name is valid", - "readinessCheckModels": "At least one model is selected", - "readinessCheckWeights": "Weighted total is 100%", - "readinessCheckWeightsOptional": "Weight rule not required", - "readinessCheckPricing": "Pricing data is available", - "readinessCheckPricingOptional": "Pricing rule not required", - "saveBlockedTitle": "Save is blocked until the following items are fixed:", - "saveBlockName": "Define a combo name.", - "saveBlockModels": "Add at least one model.", - "saveBlockWeighted": "Set weights to 100% (current: {total}%).", - "saveBlockPricing": "Add pricing for at least one model or choose a different strategy.", - "recommendationsLabel": "Recommended setup", - "applyRecommendations": "Apply recommendations", - "recommendationsUpdated": "Recommendations updated for {strategy}.", - "recommendationsApplied": "Recommendations applied to this combo.", - "intelligentPanelTitle": "Intelligent Routing Dashboard", - "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.", + "warningRoundRobinSingleModel": "راؤنڈ رابن کم از کم 2 ماڈلز کے ساتھ سب سے زیادہ مفید ہے۔", + "warningCostOptimizedPartialPricing": "{total} میں سے صرف {priced} ماڈلز کی قیمتیں دستیاب ہیں۔ روٹنگ جزوی طور پر لاگت سے آگاہ ہو سکتی ہے۔", + "warningCostOptimizedNoPricing": "اس کومبو کے لیے قیمتوں کا کوئی ڈیٹا نہیں ملا۔ لاگت کے لحاظ سے موزوں روٹنگ غیر متوقع انداز میں کام کر سکتی ہے۔", + "filterAll": "سبھی", + "filterIntelligent": "ذہین", + "filterDeterministic": "قطعی", + "filterEmptyTitle": "کوئی کومبو اس حکمتِ عملی کے فلٹر سے مطابقت نہیں رکھتا۔", + "filterEmptyIntelligentDescription": "ذہین روٹنگ ڈیش بورڈ کو پُر کرنے کے لیے auto یا LKGP کومبو بنائیں۔", + "filterEmptyDeterministicDescription": "فی الحال صرف auto اور LKGP کومبو موجود ہیں۔ واپس All پر جائیں یا ایک deterministic کومبو بنائیں۔", + "readinessTitle": "محفوظ کرنے کے لیے تیار ہیں؟", + "readinessDescription": "اس کومبو کو بنانے یا اپ ڈیٹ کرنے سے پہلے چیک لسٹ کا جائزہ لیں۔", + "readinessCheckName": "کومبو کا نام درست ہے", + "readinessCheckModels": "کم از کم ایک ماڈل منتخب ہے", + "readinessCheckWeights": "وزن کا مجموعہ 100% ہے", + "readinessCheckWeightsOptional": "وزن کا اصول درکار نہیں", + "readinessCheckPricing": "قیمتوں کا ڈیٹا دستیاب ہے", + "readinessCheckPricingOptional": "قیمت کا اصول درکار نہیں", + "saveBlockedTitle": "جب تک درج ذیل مسائل حل نہیں کیے جاتے، محفوظ کرنا ممکن نہیں:", + "saveBlockName": "کومبو کا نام متعین کریں۔", + "saveBlockModels": "کم از کم ایک ماڈل شامل کریں۔", + "saveBlockWeighted": "وزن 100% پر سیٹ کریں (موجودہ: {total}%)۔", + "saveBlockPricing": "کم از کم ایک ماڈل کے لیے قیمت شامل کریں یا کوئی مختلف حکمتِ عملی منتخب کریں۔", + "recommendationsLabel": "تجویز کردہ سیٹ اپ", + "applyRecommendations": "تجاویز لاگو کریں", + "recommendationsUpdated": "{strategy} کے لیے تجاویز اپ ڈیٹ کر دی گئی ہیں۔", + "recommendationsApplied": "اس کومبو پر تجاویز لاگو کر دی گئی ہیں۔", + "intelligentPanelTitle": "ذہین روٹنگ ڈیش بورڈ", + "intelligentPanelDesc": "اس auto-routing کومبو کے لیے ریئل ٹائم اسکورنگ اور صحت کی حالت۔", "configOnlyStatus": "کنفیگریشن ویو", "configOnlyHint": "یہ پینل صرف روٹنگ ان پٹس دکھاتا ہے۔ لائیو بریکر کی حالت Health صفحے پر دستیاب ہے۔", "routingInputs": "روٹنگ ان پٹس", @@ -3505,89 +3505,89 @@ "manualModelUnknownProvider": "نامعلوم فراہم کنندہ کا پریفکس۔", "builderDynamicAccountShort": "ڈائنامک اکاؤنٹ", "builderNeedValidName": "آگے بڑھنے سے پہلے ایک درست کومبو نام کی وضاحت کریں۔", - "statusOverview": "Status Overview", - "normalOperation": "Normal Operation", - "allProvidersHealthy": "Providers are reporting healthy routing conditions.", - "incidentMode": "Incident Mode", - "highCircuitBreakerRate": "High circuit breaker trip rate detected.", - "activeModePack": "Active Mode Pack", - "modePackUpdated": "Mode pack updated to {pack}.", - "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.", - "providerScores": "Provider Scores", - "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.", - "excludedProviders": "Excluded Providers", - "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.", - "noExcludedProviders": "No providers are currently excluded.", - "cooldownMinutes": "Cooldown: {minutes}m", - "builderIntelligentTitle": "Intelligent Routing Configuration", - "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.", - "candidatePoolLabel": "Candidate Pool", - "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.", - "candidatePoolEmpty": "No active providers available yet.", - "candidatePoolAllProviders": "All providers", - "modePackLabel": "Mode Pack", - "routerStrategyLabel": "Router Strategy", - "strategyRules": "Rules (6-Factor Scoring)", - "explorationRateLabel": "Exploration Rate", - "explorationRateHint": "{percent}% of requests can explore non-optimal providers.", - "budgetCapLabel": "Budget Cap (USD / request)", - "budgetCapPlaceholder": "No limit", - "advancedWeightsTitle": "Advanced: Scoring Weights", + "statusOverview": "حالت کا جائزہ", + "normalOperation": "معمول کے مطابق کام", + "allProvidersHealthy": "فراہم کنندگان روٹنگ کے حالات صحت مند ہونے کی اطلاع دے رہے ہیں۔", + "incidentMode": "واقعہ موڈ", + "highCircuitBreakerRate": "سرکٹ بریکر کے ٹرپ ہونے کی بلند شرح کا پتا چلا ہے۔", + "activeModePack": "فعال موڈ پیک", + "modePackUpdated": "موڈ پیک کو {pack} پر اپ ڈیٹ کر دیا گیا ہے۔", + "modePackHint": "کومبو دوبارہ بنائے بغیر روٹنگ انجن کا رجحان تبدیل کرنے کے لیے پری سیٹس تبدیل کریں۔", + "providerScores": "فراہم کنندگان کے اسکورز", + "allProvidersEvaluated": "کوئی امیدوار پول ترتیب نہیں دیا گیا۔ رن ٹائم پر تمام فعال فراہم کنندگان کا جائزہ لیا جاتا ہے۔", + "excludedProviders": "خارج کردہ فراہم کنندگان", + "excludedProvidersHint": "OPEN سرکٹ بریکر والے فراہم کنندگان کو عارضی طور پر روٹنگ سے خارج کر دیا جاتا ہے۔", + "noExcludedProviders": "فی الحال کوئی فراہم کنندہ خارج نہیں ہے۔", + "cooldownMinutes": "کول ڈاؤن: {minutes} منٹ", + "builderIntelligentTitle": "ذہین روٹنگ کی ترتیب", + "builderIntelligentDesc": "اس auto-routing کومبو کے لیے کثیر العوامل اسکورنگ انجن ترتیب دیں۔", + "candidatePoolLabel": "امیدوار پول", + "candidatePoolHint": "منتخب کریں کہ اس انجن کو کن فراہم کنندگان کا جائزہ لینا چاہیے۔ تمام فعال فراہم کنندگان استعمال کرنے کے لیے اسے خالی چھوڑ دیں۔", + "candidatePoolEmpty": "ابھی تک کوئی فعال فراہم کنندہ دستیاب نہیں ہے۔", + "candidatePoolAllProviders": "تمام فراہم کنندگان", + "modePackLabel": "موڈ پیک", + "routerStrategyLabel": "راؤٹر کی حکمتِ عملی", + "strategyRules": "قواعد (6 عوامل پر مبنی اسکورنگ)", + "explorationRateLabel": "تجرباتی شرح", + "explorationRateHint": "درخواستوں میں سے {percent}% غیر موزوں فراہم کنندگان کو آزما سکتی ہیں۔", + "budgetCapLabel": "بجٹ کی حد (USD / درخواست)", + "budgetCapPlaceholder": "کوئی حد نہیں", + "advancedWeightsTitle": "اعلیٰ اختیارات: اسکورنگ کے اوزان", "nestedComboFlatten": "نیسٹڈ کومبوز کو فلیٹن کریں", "nestedComboExecute": "نیسٹڈ کومبوز کو اہداف کے طور پر چلائیں", "effectiveRoutingShare": "مؤثر روٹنگ شیئر (وزن ÷ کل)", - "weightQuota": "Quota", - "weightHealth": "Health", - "weightCostInv": "Cost", - "weightLatencyInv": "Latency", - "weightTaskFit": "Task Fit", - "weightStability": "Stability", - "weightTierPriority": "Tier", - "weightCacheAffinity": "Cache Hit Affinity", + "weightQuota": "کوٹہ", + "weightHealth": "صحت", + "weightCostInv": "لاگت", + "weightLatencyInv": "تاخیر", + "weightTaskFit": "کام سے مطابقت", + "weightStability": "استحکام", + "weightTierPriority": "درجہ", + "weightCacheAffinity": "کیش ہٹ سے وابستگی", "weightSessionAvailability": "سیشن کی دستیابی", - "reviewIntelligentTitle": "Intelligent Routing Config", + "reviewIntelligentTitle": "ذہین روٹنگ کی کنفیگریشن", "strategyRecommendations": { "priority": { - "title": "Fail-safe baseline", - "description": "Use one primary model and keep fallback chain short and reliable.", - "tip1": "Put your most reliable model first.", - "tip2": "Keep 1-2 backup models with similar quality.", - "tip3": "Use safe retries to absorb transient provider failures." + "title": "محفوظ بنیادی ترتیب", + "description": "ایک بنیادی ماڈل استعمال کریں اور فال بیک سلسلے کو مختصر اور قابلِ اعتماد رکھیں۔", + "tip1": "اپنے سب سے قابلِ اعتماد ماڈل کو پہلے رکھیں۔", + "tip2": "یکساں معیار کے 1-2 بیک اپ ماڈلز رکھیں۔", + "tip3": "فراہم کنندہ کی عارضی ناکامیوں سے نمٹنے کے لیے محفوظ دوبارہ کوششیں استعمال کریں۔" }, "weighted": { - "title": "Controlled traffic split", - "description": "Great for canary rollouts and gradual migration between models.", - "tip1": "Start with conservative split like 90/10.", - "tip2": "Keep the total at 100% and auto-balance after changes.", - "tip3": "Monitor success and latency before increasing canary weight." + "title": "ٹریفک کی کنٹرول شدہ تقسیم", + "description": "کینری رول آؤٹس اور ماڈلز کے درمیان بتدریج منتقلی کے لیے بہترین ہے۔", + "tip1": "90/10 جیسی محتاط تقسیم سے آغاز کریں۔", + "tip2": "مجموعہ 100% پر رکھیں اور تبدیلیوں کے بعد خودکار طور پر توازن قائم کریں۔", + "tip3": "کینری کا وزن بڑھانے سے پہلے کامیابی اور تاخیر کی نگرانی کریں۔" }, "round-robin": { - "title": "Predictable load sharing", - "description": "Best when models are equivalent and you need smooth distribution.", - "tip1": "Use at least 2 models.", - "tip2": "Set concurrency limits to avoid burst overload.", - "tip3": "Use queue timeout to fail fast under saturation." + "title": "قابلِ پیش گوئی لوڈ شیئرنگ", + "description": "اس وقت بہترین ہے جب ماڈلز مساوی ہوں اور آپ کو ہموار تقسیم درکار ہو۔", + "tip1": "کم از کم 2 ماڈلز استعمال کریں۔", + "tip2": "اچانک حد سے زیادہ بوجھ سے بچنے کے لیے ہم وقتی کی حدود مقرر کریں۔", + "tip3": "انتہائی بوجھ کی صورت میں فوری ناکامی کے لیے قطار کی مہلت مقرر کریں۔" }, "random": { - "title": "Quick spread with low setup", - "description": "Use when you need simple distribution without strict guarantees.", - "tip1": "Use models with similar latency profiles.", - "tip2": "Keep retries enabled to absorb random misses.", - "tip3": "Prefer this for experimentation, not strict SLAs." + "title": "کم سیٹ اپ کے ساتھ فوری تقسیم", + "description": "اس وقت استعمال کریں جب سخت ضمانتوں کے بغیر سادہ تقسیم درکار ہو۔", + "tip1": "یکساں تاخیر کے پروفائل والے ماڈلز استعمال کریں۔", + "tip2": "بے ترتیب ناکامیوں سے نمٹنے کے لیے دوبارہ کوششیں فعال رکھیں۔", + "tip3": "سخت SLAs کے بجائے تجربات کے لیے اسے ترجیح دیں۔" }, "least-used": { - "title": "Adaptive balancing", - "description": "Routes to less-used models to reduce hotspots over time.", - "tip1": "Works better under continuous traffic.", - "tip2": "Combine with health checks for safer balancing.", - "tip3": "Track per-model usage to validate distribution gains." + "title": "حسبِ ضرورت توازن", + "description": "وقت کے ساتھ زیادہ بوجھ والے مقامات کو کم کرنے کے لیے درخواستوں کو کم استعمال شدہ ماڈلز کی طرف بھیجتا ہے۔", + "tip1": "مسلسل ٹریفک میں بہتر کام کرتا ہے۔", + "tip2": "زیادہ محفوظ توازن کے لیے ہیلتھ چیکس کے ساتھ یکجا کریں۔", + "tip3": "تقسیم میں بہتری کی توثیق کے لیے ہر ماڈل کے استعمال کو ٹریک کریں۔" }, "cost-optimized": { - "title": "Budget-first routing", - "description": "Routes to lower-cost models when pricing metadata is available.", - "tip1": "Ensure pricing coverage for all selected models.", - "tip2": "Keep a quality fallback for hard prompts.", - "tip3": "Use for batch/background jobs where cost is the main KPI." + "title": "بجٹ کو ترجیح دینے والی روٹنگ", + "description": "قیمتوں کا میٹا ڈیٹا دستیاب ہونے پر کم لاگت والے ماڈلز کی طرف روٹ کرتا ہے۔", + "tip1": "تمام منتخب ماڈلز کے لیے قیمتوں کی مکمل کوریج یقینی بنائیں۔", + "tip2": "مشکل پرامپٹس کے لیے معیاری فال بیک برقرار رکھیں۔", + "tip3": "ایسی بیچ/بیک گراؤنڈ جابز کے لیے استعمال کریں جہاں لاگت بنیادی KPI ہو۔" }, "reset-aware": { "title": "باخبر اکاؤنٹ کی گردش کو دوبارہ ترتیب دیں۔", @@ -3597,155 +3597,155 @@ "tip3": "ٹائی بینڈ کو چھوٹا رکھیں تاکہ مساوی اکاؤنٹس اب بھی مناسب طریقے سے گھومیں۔" }, "strict-random": { - "title": "Shuffle deck distribution", - "description": "Each model is used exactly once per cycle before reshuffling.", - "tip1": "Use at least 2 models for meaningful distribution.", - "tip2": "Works best with equivalent-performance models.", - "tip3": "Ideal for load balancing across multiple API accounts." + "title": "شفل ڈیک تقسیم", + "description": "دوبارہ شفل ہونے سے پہلے ہر سائیکل میں ہر ماڈل بالکل ایک بار استعمال ہوتا ہے۔", + "tip1": "بامعنی تقسیم کے لیے کم از کم 2 ماڈلز استعمال کریں۔", + "tip2": "یکساں کارکردگی والے ماڈلز کے ساتھ بہترین کام کرتا ہے۔", + "tip3": "متعدد API اکاؤنٹس میں لوڈ بیلنسنگ کے لیے مثالی ہے۔" }, "fill-first": { - "description": "Exhaust provider quotas sequentially before falling back.", - "tip1": "Use for quota-based routing with clear fallback chains.", - "tip2": "Set quotas accurately to avoid premature fallback.", - "tip3": "Works best with providers offering free tiers or credit buckets.", - "title": "Quota Exhaustion" + "description": "فال بیک سے پہلے فراہم کنندہ کے کوٹے ترتیب وار مکمل طور پر استعمال کریں۔", + "tip1": "واضح فال بیک چینز کے ساتھ کوٹے پر مبنی روٹنگ کے لیے استعمال کریں۔", + "tip2": "قبل از وقت فال بیک سے بچنے کے لیے کوٹے درست طور پر مقرر کریں۔", + "tip3": "مفت ٹیئرز یا کریڈٹ بکٹس پیش کرنے والے فراہم کنندگان کے ساتھ بہترین کام کرتا ہے۔", + "title": "کوٹے کا خاتمہ" }, "auto": { - "description": "Route based on real-time scoring for cost, latency, quality, and health.", - "tip1": "Let the engine balance multiple factors automatically.", - "tip2": "Monitor which factors drive routing decisions in logs.", - "tip3": "Use for complex workloads where no single factor dominates.", - "title": "Multi-Factor Optimization" + "description": "لاگت، تاخیر، معیار اور صحت کی ریئل ٹائم اسکورنگ کی بنیاد پر روٹ کریں۔", + "tip1": "انجن کو متعدد عوامل میں خودکار طور پر توازن قائم کرنے دیں۔", + "tip2": "لاگز میں نگرانی کریں کہ کون سے عوامل روٹنگ کے فیصلوں پر اثر انداز ہوتے ہیں۔", + "tip3": "ایسے پیچیدہ ورک لوڈز کے لیے استعمال کریں جہاں کوئی ایک عامل غالب نہ ہو۔", + "title": "کثیر عاملی بہتری" }, "lkgp": { - "description": "Route based on historical performance and success patterns.", - "tip1": "Requires sufficient request history for accurate predictions.", - "tip2": "Good for workloads with consistent model performance patterns.", - "tip3": "Monitor prediction accuracy and adjust weights as needed.", - "title": "History-Based Routing" + "description": "تاریخی کارکردگی اور کامیابی کے نمونوں کی بنیاد پر روٹ کریں۔", + "tip1": "درست پیش گوئیوں کے لیے درخواستوں کی کافی تاریخ درکار ہے۔", + "tip2": "ماڈل کی کارکردگی کے مستقل نمونوں والے ورک لوڈز کے لیے موزوں ہے۔", + "tip3": "پیش گوئی کی درستگی کی نگرانی کریں اور ضرورت کے مطابق وزن ایڈجسٹ کریں۔", + "title": "تاریخ پر مبنی روٹنگ" }, "context-optimized": { - "description": "Optimize routing based on context window usage and token efficiency.", - "tip1": "Route long conversations to models with larger context windows.", - "tip2": "Monitor context utilization to avoid token waste.", - "tip3": "Best for conversational AI requiring extensive context retention.", - "title": "Context Optimization" + "description": "کانٹیکسٹ ونڈو کے استعمال اور ٹوکن کی کارکردگی کی بنیاد پر روٹنگ کو بہتر بنائیں۔", + "tip1": "طویل گفتگوؤں کو بڑی کانٹیکسٹ ونڈوز والے ماڈلز کی طرف روٹ کریں۔", + "tip2": "ٹوکن کے ضیاع سے بچنے کے لیے کانٹیکسٹ کے استعمال کی نگرانی کریں۔", + "tip3": "وسیع کانٹیکسٹ برقرار رکھنے والی مکالماتی AI کے لیے بہترین ہے۔", + "title": "کانٹیکسٹ کی بہتری" }, "context-relay": { - "description": "Best when account rotation is expected and the next account must inherit a simplified task summary.", - "tip1": "Use with providers rotating accounts for the same model family.", - "tip2": "Set handoff threshold below hard quota cutoffs for summary generation time.", - "tip3": "Only set a dedicated summary model if the primary is too expensive or unstable.", - "title": "Session Continuity Priority" + "description": "اس وقت بہترین ہے جب اکاؤنٹ کی تبدیلی متوقع ہو اور اگلے اکاؤنٹ کو کام کا ایک آسان خلاصہ وراثت میں ملنا ضروری ہو۔", + "tip1": "ایک ہی ماڈل فیملی کے لیے اکاؤنٹس تبدیل کرنے والے فراہم کنندگان کے ساتھ استعمال کریں۔", + "tip2": "خلاصہ تیار کرنے کے وقت کے لیے ہینڈ آف کی حد کو کوٹے کی قطعی حد سے کم مقرر کریں۔", + "tip3": "صرف اسی صورت میں مخصوص خلاصہ ماڈل مقرر کریں جب بنیادی ماڈل بہت مہنگا یا غیر مستحکم ہو۔", + "title": "سیشن کے تسلسل کی ترجیح" }, "p2c": { - "description": "Route to the provider with the lowest current load based on real-time metrics.", - "tip1": "Monitor provider health metrics for accurate load assessment.", - "tip2": "Works best with homogeneous provider pools.", - "tip3": "Adjust sensitivity to avoid oscillation during traffic spikes.", - "title": "Power of Two Choices" + "description": "ریئل ٹائم میٹرکس کی بنیاد پر اس فراہم کنندہ کی طرف روٹ کریں جس پر موجودہ لوڈ سب سے کم ہو۔", + "tip1": "لوڈ کے درست جائزے کے لیے فراہم کنندہ کے ہیلتھ میٹرکس کی نگرانی کریں۔", + "tip2": "یکساں نوعیت کے فراہم کنندہ پولز کے ساتھ بہترین کام کرتا ہے۔", + "tip3": "ٹریفک میں اچانک اضافے کے دوران ارتعاش سے بچنے کے لیے حساسیت کو ایڈجسٹ کریں۔", + "title": "دو انتخاب کی طاقت" } }, - "templateFreeStack": "Free Stack ($0)", - "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.", - "auto": "Intelligent Auto", - "autoDesc": "Self-healing smart routing pool with multi-factor scoring", - "lkgp": "LKGP Mode", - "lkgpDesc": "Prioritizes the last provider that successfully completed a request", - "wizardGuideTitle": "Getting Started with Combos", - "wizardGuideDesc": "Create model combos to route AI traffic intelligently", - "wizardGuideHint": "or click + Create Combo above", - "createFirstCombo": "Create Your First Combo", - "wizardStep1Title": "Name Your Combo", - "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules", - "wizardStep2Title": "Add Models", - "wizardStep2Desc": "Select AI models and arrange their fallback priority order", - "wizardStep3Title": "Choose Strategy", + "templateFreeStack": "مفت اسٹیک ($0)", + "templateFreeStackDesc": "تمام مفت فراہم کنندگان میں باری باری تقسیم: Kiro (Claude)، Qoder (5 ماڈلز)، Qwen (4 ماڈلز)۔ کوئی لاگت نہیں، کوڈنگ کبھی نہیں رکتی۔", + "auto": "ذہین خودکار", + "autoDesc": "کثیر عنصری اسکورنگ کے ساتھ خود بحال ہونے والا اسمارٹ روٹنگ پول", + "lkgp": "LKGP موڈ", + "lkgpDesc": "اس آخری فراہم کنندہ کو ترجیح دیتا ہے جس نے کامیابی سے درخواست مکمل کی ہو", + "wizardGuideTitle": "کومبوز کے ساتھ شروعات", + "wizardGuideDesc": "AI ٹریفک کو ذہانت سے روٹ کرنے کے لیے ماڈل کومبوز بنائیں", + "wizardGuideHint": "یا اوپر + کومبو بنائیں پر کلک کریں", + "createFirstCombo": "اپنا پہلا کومبو بنائیں", + "wizardStep1Title": "اپنے کومبو کا نام رکھیں", + "wizardStep1Desc": "روٹنگ قواعد میں شناخت کے لیے اپنے کومبو کو ایک منفرد نام دیں", + "wizardStep2Title": "ماڈلز شامل کریں", + "wizardStep2Desc": "AI ماڈلز منتخب کریں اور ان کی فال بیک ترجیحی ترتیب مرتب کریں", + "wizardStep3Title": "حکمتِ عملی منتخب کریں", "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available", - "wizardStep4Title": "Review & Save", - "wizardStep4Desc": "Review your configuration and activate the combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", - "emailVisibilityStateOn": "On", - "emailVisibilityStateOff": "Off", - "reorderHandle": "Drag to reorder", - "failedReorder": "Failed to reorder models", - "builderFlowTitle": "Combo Builder Flow", + "wizardStep4Title": "جائزہ لیں اور محفوظ کریں", + "wizardStep4Desc": "اپنی کنفیگریشن کا جائزہ لیں اور کومبو فعال کریں", + "usageGuideInvokeTitle": "اس کومبو کو کال کرنے کا طریقہ", + "usageGuideInvokeDesc": "ماڈل کے طور پر کومبو کا عین نام بھیجیں، مثلاً model: \"my-combo\" (یا combo/my-combo)۔", + "usageGuideInvokeAutoNote": "auto اور auto/* ایک علیحدہ زیرو کنفیگ راؤٹر ہیں جو آپ کے کومبوز استعمال نہیں کرتے (جب تک کسی کومبو کا نام واقعی auto نہ ہو)۔", + "usageGuideInvokeOpenrouterNote": "openrouter/auto ایک حقیقی بامعاوضہ OpenRouter پروڈکٹ (Auto Best Available) ہے، OmniRoute کا عرف نہیں — اسے Settings → Routing → Hide paid models کے ذریعے خارج کریں۔", + "emailVisibilityStateOn": "چالو", + "emailVisibilityStateOff": "بند", + "reorderHandle": "ترتیب بدلنے کے لیے گھسیٹیں", + "failedReorder": "ماڈلز کی ترتیب بدلنے میں ناکامی", + "builderFlowTitle": "کومبو بلڈر فلو", "builderStage": { "basics": { - "label": "Basics", - "description": "Name and starting template" + "label": "بنیادی امور", + "description": "نام اور ابتدائی ٹیمپلیٹ" }, "steps": { - "label": "Steps", - "description": "Provider, model, and account selection" + "label": "مراحل", + "description": "فراہم کنندہ، ماڈل، اور اکاؤنٹ کا انتخاب" }, "strategy": { - "label": "Strategy", - "description": "Routing behavior and advanced settings" + "label": "حکمتِ عملی", + "description": "روٹنگ کا طرزِ عمل اور اعلیٰ ترتیبات" }, "intelligent": { - "label": "Smart Routing", - "description": "Auto-routing candidate pool, presets, and scoring" + "label": "اسمارٹ روٹنگ", + "description": "خودکار روٹنگ کا امیدوار پول، پری سیٹس، اور اسکورنگ" }, "review": { - "label": "Review", - "description": "Final validation before saving" + "label": "جائزہ", + "description": "محفوظ کرنے سے پہلے حتمی توثیق" } }, - "builderStageVisited": "Stage completed", - "builderStageCurrent": "Current stage", - "builderStagePending": "Pending", - "builderStageLocked": "Locked — complete previous stage first", - "builderTitle": "Build a Combo", - "builderBrowseCatalog": "Browse catalog", - "builderProvider": "Provider", - "builderLoadingProviders": "Loading providers...", - "builderSelectProvider": "Select provider", - "builderModel": "Model", - "builderSelectModel": "Select model", - "builderProviderFirst": "Pick provider first", - "builderAccount": "Account", - "builderPreview": "Preview", - "builderAddStep": "Add step", - "builderDuplicateExact": "This exact provider/model/account step is already in the combo.", - "builderComboRef": "Combo Ref", - "builderAddComboRef": "Add combo reference", - "builderComboRefStep": "Add combo reference", - "builderPinnedAccount": "Pinned Account", - "builderLegacyEntry": "Legacy entry", - "reviewName": "Name", - "reviewStrategy": "Strategy", - "reviewSteps": "Steps", - "reviewAccounts": "Accounts", - "reviewProviders": "Providers", - "reviewComboRefs": "Combo References", - "reviewAdvanced": "Advanced Settings", - "reviewAgentFlags": "Agent Flags", - "reviewSequence": "Model Sequence", - "reviewNoSteps": "No steps configured", - "builderStagesDescription": "Complete each stage in order to define combos, build steps, select routing strategy, and review results.", - "builderStepsDescription": "Build each combo step in order: provider, model, then account. This allows reusing the same provider and model across different accounts.", - "selectProvider": "Select Provider", - "selectProviderPlaceholder": "Select a provider", - "selectModel": "Select Model", - "selectModelPlaceholder": "Select a provider first", - "selectAccount": "Select Account", - "selectComboToReference": "Select combo to reference", - "comboReference": "Combo Reference", - "addComboReference": "Add Combo Reference", - "addStepBeforeContinue": "Please add at least one step before proceeding to the next stage.", - "previewNextStep": "Preview next step", - "autoSelectAccount": "Automatically select account at runtime", - "modePackBalanced": "Balanced", - "modePackBudget": "Budget", - "modePackPerformance": "Performance", - "modePackCustom": "Custom", - "browseLegacyCatalog": "Browse legacy combo catalog", - "agentFeaturesTitle": "Agent Features", - "agentFeaturesDescription": "Enable advanced features for agents using this combo", + "builderStageVisited": "مرحلہ مکمل ہو گیا", + "builderStageCurrent": "موجودہ مرحلہ", + "builderStagePending": "زیرِ التوا", + "builderStageLocked": "مقفل — پہلے پچھلا مرحلہ مکمل کریں", + "builderTitle": "کومبو بنائیں", + "builderBrowseCatalog": "کیٹلاگ براؤز کریں", + "builderProvider": "فراہم کنندہ", + "builderLoadingProviders": "فراہم کنندگان لوڈ ہو رہے ہیں...", + "builderSelectProvider": "فراہم کنندہ منتخب کریں", + "builderModel": "ماڈل", + "builderSelectModel": "ماڈل منتخب کریں", + "builderProviderFirst": "پہلے فراہم کنندہ منتخب کریں", + "builderAccount": "اکاؤنٹ", + "builderPreview": "پیش منظر", + "builderAddStep": "مرحلہ شامل کریں", + "builderDuplicateExact": "فراہم کنندہ/ماڈل/اکاؤنٹ کا بالکل یہی مرحلہ پہلے ہی کومبو میں موجود ہے۔", + "builderComboRef": "کومبو حوالہ", + "builderAddComboRef": "کومبو حوالہ شامل کریں", + "builderComboRefStep": "کومبو حوالہ شامل کریں", + "builderPinnedAccount": "پن کیا گیا اکاؤنٹ", + "builderLegacyEntry": "پرانا اندراج", + "reviewName": "نام", + "reviewStrategy": "حکمتِ عملی", + "reviewSteps": "مراحل", + "reviewAccounts": "اکاؤنٹس", + "reviewProviders": "فراہم کنندگان", + "reviewComboRefs": "کومبو حوالہ جات", + "reviewAdvanced": "اعلیٰ ترتیبات", + "reviewAgentFlags": "ایجنٹ فلیگز", + "reviewSequence": "ماڈل کی ترتیب", + "reviewNoSteps": "کوئی مرحلہ ترتیب نہیں دیا گیا", + "builderStagesDescription": "کومبو کی وضاحت، مراحل کی تشکیل، روٹنگ کی حکمتِ عملی کے انتخاب اور نتائج کے جائزے کے لیے ہر مرحلہ بالترتیب مکمل کریں۔", + "builderStepsDescription": "کومبو کا ہر مرحلہ اس ترتیب سے بنائیں: فراہم کنندہ، ماڈل، پھر اکاؤنٹ۔ اس سے مختلف اکاؤنٹس میں ایک ہی فراہم کنندہ اور ماڈل دوبارہ استعمال کیے جا سکتے ہیں۔", + "selectProvider": "فراہم کنندہ منتخب کریں", + "selectProviderPlaceholder": "ایک فراہم کنندہ منتخب کریں", + "selectModel": "ماڈل منتخب کریں", + "selectModelPlaceholder": "پہلے ایک فراہم کنندہ منتخب کریں", + "selectAccount": "اکاؤنٹ منتخب کریں", + "selectComboToReference": "حوالہ دینے کے لیے کومبو منتخب کریں", + "comboReference": "کومبو حوالہ", + "addComboReference": "کومبو حوالہ شامل کریں", + "addStepBeforeContinue": "اگلے مرحلے پر جانے سے پہلے کم از کم ایک مرحلہ شامل کریں۔", + "previewNextStep": "اگلے مرحلے کا پیش منظر", + "autoSelectAccount": "رن ٹائم پر اکاؤنٹ خودکار طور پر منتخب کریں", + "modePackBalanced": "متوازن", + "modePackBudget": "بجٹ", + "modePackPerformance": "کارکردگی", + "modePackCustom": "حسبِ ضرورت", + "browseLegacyCatalog": "پرانا کومبو کیٹلاگ براؤز کریں", + "agentFeaturesTitle": "ایجنٹ کی خصوصیات", + "agentFeaturesDescription": "اس کومبو کو استعمال کرنے والے ایجنٹس کے لیے جدید خصوصیات فعال کریں", "responseValidationTitle": "جواب کی توثیق", "responseValidationHelp": "جب 200 OK باڈی ان جانچوں میں ناکام ہو جائے (معاون کا مواد) تو اگلے ہدف پر فیل اوور کریں۔", "responseValidationForbidden": "ممنوعہ ذیلی سٹرنگز (فی سطر ایک)", @@ -3753,13 +3753,13 @@ "responseValidationMinLength": "مواد کی کم از کم لمبائی (حروف)", "responseValidationJsonPaths": "JSON-path کی جانچیں", "responseValidationAddCheck": "+ جانچ شامل کریں", - "agentFeaturesSystemMessageOverride": "Override system message", - "agentFeaturesSystemMessagePlaceholder": "You are an expert assistant...", - "agentFeaturesSystemMessageHint": "System message override for agents", + "agentFeaturesSystemMessageOverride": "سسٹم پیغام کو اوور رائیڈ کریں", + "agentFeaturesSystemMessagePlaceholder": "آپ ایک ماہر معاون ہیں...", + "agentFeaturesSystemMessageHint": "ایجنٹس کے لیے سسٹم پیغام کا اوور رائیڈ", "agentFeaturesToolFilterRegex": "/regex-pattern/", - "agentFeaturesToolFilterHint": "Tool filter regex for agents", - "agentFeaturesContextCacheHint": "Enable in-context cache for agent tools", - "agentFeaturesContextCacheProtection": "Protect cache from agent tool mutations", + "agentFeaturesToolFilterHint": "ایجنٹس کے لیے ٹول فلٹر ریجیکس", + "agentFeaturesContextCacheHint": "ایجنٹ ٹولز کے لیے اِن کانٹیکسٹ کیش فعال کریں", + "agentFeaturesContextCacheProtection": "کیش کو ایجنٹ ٹولز کی تبدیلیوں سے محفوظ رکھیں", "agentFeaturesContextLength": "سیاق و سباق کی لمبائی", "agentFeaturesContextLengthPlaceholder": "جیسے 128000", "agentFeaturesContextLengthHint": "/v1/models میں اس کومبو کے لیے سیاق و سباق کی ونڈو کی وضاحت کرتا ہے۔", @@ -3788,40 +3788,40 @@ "duplicateAutoComboTitle": "{name} سے ایک جامد کمبو بنائیں" }, "costs": { - "title": "Costs", - "pageDescription": "Track spending, analyze trends, and manage your AI budget across all providers", - "overview": "Overview", - "budget": "Budget", - "totalCost": "Total Cost", - "breakdown": "Cost Breakdown", - "noData": "No cost data", - "byModel": "By Model", - "byProvider": "By Provider", - "range7d": "7 Days", - "range30d": "30 Days", - "range90d": "90 Days", - "range180d": "180 Days", - "range365d": "365 Days", - "rangeAll": "All Time", - "spend30d": "Spend 30D", - "activeModels": "Active Models", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", - "selectedWindow": "Selected Window", - "activeProviders": "Active Providers", - "overviewTitle": "Cost Overview", - "spend7d": "Spend 7D", - "avgCostPerRequest": "Avg Cost / Request", - "noCostDataDescription": "Start making requests to see cost data appear here. Costs are tracked automatically for all providers.", - "spendToday": "Spend Today", - "overviewLoadFailed": "Failed to load cost overview", - "overviewDescription": "Real-time spending breakdown across all connected providers and models", - "providerShare": "Provider Share", - "topProviders": "Top Providers", - "costTrend": "Cost Trend", - "noCostDataTitle": "No cost data yet", - "topModels": "Top Models", - "requestsInWindow": "Requests in Window", + "title": "اخراجات", + "pageDescription": "تمام فراہم کنندگان پر اخراجات ٹریک کریں، رجحانات کا تجزیہ کریں، اور اپنے AI بجٹ کا انتظام کریں", + "overview": "جائزہ", + "budget": "بجٹ", + "totalCost": "کل لاگت", + "breakdown": "لاگت کی تفصیل", + "noData": "لاگت کا کوئی ڈیٹا نہیں", + "byModel": "ماڈل کے لحاظ سے", + "byProvider": "فراہم کنندہ کے لحاظ سے", + "range7d": "7 دن", + "range30d": "30 دن", + "range90d": "90 دن", + "range180d": "180 دن", + "range365d": "365 دن", + "rangeAll": "تمام مدت", + "spend30d": "30 دن کا خرچ", + "activeModels": "فعال ماڈلز", + "flatRateEstimateNotice": "فلیٹ ریٹ سبسکرپشنز کے لیے ٹوکن قیمت کے تخمینے شامل ہیں، بل کی گئی لاگت نہیں۔", + "flatRateEstimateForecast": "پیش گوئی میں فلیٹ ریٹ تخمینے شامل ہیں۔", + "selectedWindow": "منتخب مدت", + "activeProviders": "فعال فراہم کنندگان", + "overviewTitle": "لاگت کا جائزہ", + "spend7d": "7 دن کا خرچ", + "avgCostPerRequest": "اوسط لاگت / درخواست", + "noCostDataDescription": "لاگت کا ڈیٹا یہاں ظاہر کرنے کے لیے درخواستیں کرنا شروع کریں۔ تمام فراہم کنندگان کی لاگت خودکار طور پر ٹریک کی جاتی ہے۔", + "spendToday": "آج کا خرچ", + "overviewLoadFailed": "لاگت کا جائزہ لوڈ نہیں ہو سکا", + "overviewDescription": "تمام منسلک فراہم کنندگان اور ماڈلز کے اخراجات کی ریئل ٹائم تفصیل", + "providerShare": "فراہم کنندہ کا حصہ", + "topProviders": "سرفہرست فراہم کنندگان", + "costTrend": "لاگت کا رجحان", + "noCostDataTitle": "ابھی تک لاگت کا کوئی ڈیٹا نہیں ہے", + "topModels": "سرفہرست ماڈلز", + "requestsInWindow": "وقت کی مدت میں درخواستیں", "tokenUsage": "ٹوکن کا استعمال", "totalTokens": "کل ٹوکن", "inputTokens": "ان پٹ ٹوکنز", @@ -3881,139 +3881,139 @@ "showingTopCostRows": "مطابق {total} قطاروں میں سے {shown} دکھائی جا رہی ہیں (سرفہرست 50)۔" }, "endpoint": { - "title": "API Endpoint", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", - "available": "Available Endpoints", + "title": "API اینڈپوائنٹ", + "subtitle": "زیادہ تر SDKs اور ٹولز کے ساتھ OpenAI سے ہم آہنگ اینڈپوائنٹ استعمال کریں۔", + "testEndpoint": "اینڈپوائنٹ آزمائیں →", + "advancedProtocols": "جدید پروٹوکولز", + "available": "دستیاب اینڈپوائنٹس", "cloudProxy": "Cloud Proxy", - "disableConfirm": "Are you sure you want to disable cloud proxy?", - "baseUrl": "Base URL", - "apiKeyLabel": "API Key", - "registeredKeys": "Registered Keys", + "disableConfirm": "کیا آپ واقعی کلاؤڈ پراکسی کو غیر فعال کرنا چاہتے ہیں؟", + "baseUrl": "بنیادی URL", + "apiKeyLabel": "API کلید", + "registeredKeys": "رجسٹرڈ کلیدیں", "chatCompletions": "Chat Completions", - "responses": "Responses", - "listModels": "List Models", - "usingCloudProxy": "Using Cloud Proxy", - "usingLocalServer": "Using Local Server", - "machineId": "Machine ID: {id}...", - "disableCloud": "Disable Cloud", - "enableCloud": "Enable Cloud", - "modelsAcrossEndpoints": "{models} models across {endpoints} endpoints", - "loadingModels": "Loading available models...", - "chatDesc": "Streaming & non-streaming chat with all providers", - "embeddings": "Embeddings", - "embeddingsDesc": "Text embeddings for search & RAG pipelines", - "imageGeneration": "Image Generation", - "imageDesc": "Generate images from text prompts", + "responses": "جوابات", + "listModels": "ماڈلز کی فہرست", + "usingCloudProxy": "کلاؤڈ پراکسی استعمال ہو رہی ہے", + "usingLocalServer": "مقامی سرور استعمال ہو رہا ہے", + "machineId": "مشین ID: {id}...", + "disableCloud": "کلاؤڈ غیر فعال کریں", + "enableCloud": "کلاؤڈ فعال کریں", + "modelsAcrossEndpoints": "{endpoints} اینڈپوائنٹس پر {models} ماڈلز", + "loadingModels": "دستیاب ماڈلز لوڈ ہو رہے ہیں...", + "chatDesc": "تمام فراہم کنندگان کے ساتھ اسٹریمنگ اور نان اسٹریمنگ چیٹ", + "embeddings": "ایمبیڈنگز", + "embeddingsDesc": "تلاش اور RAG پائپ لائنز کے لیے ٹیکسٹ ایمبیڈنگز", + "imageGeneration": "تصویر سازی", + "imageDesc": "متنی پرامپٹس سے تصاویر بنائیں", "rerank": "Rerank", - "rerankDesc": "Rerank documents by relevance to a query", - "audioTranscription": "Audio Transcription", - "audioTranscriptionDesc": "Transcribe audio files to text (Whisper)", - "textToSpeech": "Text to Speech", - "textToSpeechDesc": "Convert text to natural-sounding speech", - "musicGeneration": "Music Generation", - "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)", - "moderations": "Moderations", - "moderationsDesc": "Content moderation and safety classification", - "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows", - "listModelsDesc": "List all available models across all connected providers", - "settingsApiDesc": "Read and modify OmniRoute configuration via API", - "settingsApi": "Settings API", - "categoryCore": "Core APIs", - "categoryMedia": "Media & Multi-Modal", - "categorySearch": "Search & Discovery", - "categoryUtility": "Utility & Management", - "webSearch": "Web Search", - "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching", - "searchProvider": "Search Provider", - "searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.", - "enableCloudTitle": "Enable Cloud Proxy", - "whatYouGet": "What you will get", - "cloudBenefitAccess": "Access your API from anywhere in the world", - "cloudBenefitShare": "Share endpoint with your team easily", - "cloudBenefitPorts": "No need to open ports or configure firewall", - "cloudBenefitEdge": "Fast global edge network", - "cloudSessionNote": "Cloud will keep your auth session for 1 day. If not used, it will be automatically deleted.", - "cloudUnstableNote": "Cloud is currently unstable with Claude Code OAuth in some cases.", - "cloudConnected": "Cloud Proxy connected!", - "connectingToCloud": "Connecting to cloud...", - "verifyingConnection": "Verifying connection...", - "connecting": "Connecting...", - "verifying": "Verifying...", - "connected": "Connected!", - "disableCloudTitle": "Disable Cloud Proxy", - "disableWarning": "All auth sessions will be deleted from cloud.", - "syncingData": "Syncing latest data...", - "disablingCloud": "Disabling cloud...", - "syncing": "Syncing...", - "disabling": "Disabling...", - "cloudConnectedVerified": "Cloud Proxy connected and verified!", - "connectedVerificationPending": "Connected — verification pending", - "connectedVerificationPendingWithError": "Connected — verification pending: {error}", - "cloudDisabledSuccess": "Cloud disabled successfully", - "syncedSuccess": "Synced successfully", - "failedDisable": "Failed to disable cloud", - "failedEnable": "Failed to enable cloud", - "cloudRequestTimeout": "Cloud request timeout", - "cloudRequestFailed": "Cloud request failed", - "cloudWorkerUnreachable": "Could not reach cloud worker. Make sure the cloud service is running (npm run dev in /cloud).", - "connectionFailed": "Connection failed", - "syncFailed": "Failed to sync cloud data", + "rerankDesc": "استفسار سے مطابقت کے لحاظ سے دستاویزات کی دوبارہ درجہ بندی کریں", + "audioTranscription": "آڈیو کی نقل نویسی", + "audioTranscriptionDesc": "آڈیو فائلوں کو متن میں نقل کریں (Whisper)", + "textToSpeech": "متن سے آواز", + "textToSpeechDesc": "متن کو قدرتی انداز کی آواز میں تبدیل کریں", + "musicGeneration": "موسیقی سازی", + "musicDesc": "ComfyUI کے ذریعے موسیقی اور آڈیو ٹریکس بنائیں (Stable Audio, MusicGen)", + "moderations": "اعتدال", + "moderationsDesc": "مواد کی نگرانی اور حفاظتی درجہ بندی", + "responsesDesc": "Codex اور جدید ایجنٹ پر مبنی ورک فلو کے لیے OpenAI Responses API", + "listModelsDesc": "تمام منسلک فراہم کنندگان پر دستیاب تمام ماڈلز کی فہرست دکھائیں", + "settingsApiDesc": "API کے ذریعے OmniRoute کی کنفیگریشن پڑھیں اور اس میں ترمیم کریں", + "settingsApi": "ترتیبات API", + "categoryCore": "بنیادی APIs", + "categoryMedia": "میڈیا اور ملٹی موڈل", + "categorySearch": "تلاش اور دریافت", + "categoryUtility": "افادیتی اور انتظامی", + "webSearch": "ویب تلاش", + "webSearchDesc": "خودکار فیل اوور اور کیشنگ کے ساتھ متعدد فراہم کنندگان پر یکجا ویب تلاش", + "searchProvider": "تلاش کا فراہم کنندہ", + "searchProviderDesc": "یہ فراہم کنندہ POST /v1/search کے ذریعے ویب تلاش کے لیے استعمال ہوتا ہے۔ کسی ماڈل کی کنفیگریشن درکار نہیں — API کلید منسلک ہوتے ہی تلاش کے فراہم کنندگان استعمال کے لیے تیار ہو جاتے ہیں۔", + "enableCloudTitle": "Cloud Proxy فعال کریں", + "whatYouGet": "آپ کو کیا ملے گا", + "cloudBenefitAccess": "دنیا میں کہیں سے بھی اپنے API تک رسائی حاصل کریں", + "cloudBenefitShare": "اپنی ٹیم کے ساتھ اینڈ پوائنٹ آسانی سے شیئر کریں", + "cloudBenefitPorts": "پورٹس کھولنے یا فائر وال کنفیگر کرنے کی ضرورت نہیں", + "cloudBenefitEdge": "تیز عالمی ایج نیٹ ورک", + "cloudSessionNote": "Cloud آپ کا تصدیقی سیشن 1 دن تک برقرار رکھے گا۔ اگر اسے استعمال نہ کیا گیا تو یہ خودکار طور پر حذف ہو جائے گا۔", + "cloudUnstableNote": "Cloud فی الحال بعض صورتوں میں Claude Code OAuth کے ساتھ غیر مستحکم ہے۔", + "cloudConnected": "Cloud Proxy منسلک ہو گیا!", + "connectingToCloud": "Cloud سے منسلک ہو رہا ہے...", + "verifyingConnection": "کنکشن کی تصدیق ہو رہی ہے...", + "connecting": "منسلک ہو رہا ہے...", + "verifying": "تصدیق ہو رہی ہے...", + "connected": "منسلک ہو گیا!", + "disableCloudTitle": "Cloud Proxy غیر فعال کریں", + "disableWarning": "تمام تصدیقی سیشنز Cloud سے حذف کر دیے جائیں گے۔", + "syncingData": "تازہ ترین ڈیٹا مطابقت پذیر ہو رہا ہے...", + "disablingCloud": "Cloud غیر فعال ہو رہا ہے...", + "syncing": "مطابقت پذیری ہو رہی ہے...", + "disabling": "غیر فعال ہو رہا ہے...", + "cloudConnectedVerified": "Cloud Proxy منسلک اور تصدیق شدہ ہے!", + "connectedVerificationPending": "منسلک ہے — تصدیق زیر التوا ہے", + "connectedVerificationPendingWithError": "منسلک ہے — تصدیق زیر التوا ہے: {error}", + "cloudDisabledSuccess": "Cloud کامیابی سے غیر فعال کر دیا گیا", + "syncedSuccess": "کامیابی سے مطابقت پذیر ہو گیا", + "failedDisable": "Cloud کو غیر فعال کرنے میں ناکامی", + "failedEnable": "کلاؤڈ فعال کرنے میں ناکامی", + "cloudRequestTimeout": "کلاؤڈ کی درخواست کا وقت ختم ہو گیا", + "cloudRequestFailed": "کلاؤڈ کی درخواست ناکام ہو گئی", + "cloudWorkerUnreachable": "کلاؤڈ ورکر تک رسائی ممکن نہیں ہوئی۔ یقینی بنائیں کہ کلاؤڈ سروس چل رہی ہے (npm run dev in /cloud)۔", + "connectionFailed": "کنکشن ناکام ہو گیا", + "syncFailed": "کلاؤڈ ڈیٹا کی مطابقت پذیری ناکام ہو گئی", "cloudflaredTitle": "Cloudflare Quick Tunnel", - "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart.", - "cloudflaredEnable": "Enable Tunnel", - "cloudflaredInstallAndEnable": "Install & Enable", + "cloudflaredDescription": "اس اینڈ پوائنٹ کے لیے ایک Cloudflare Quick Tunnel بنائیں۔", + "cloudflaredUrlNotice": "ایک عارضی Cloudflare Quick Tunnel بناتا ہے۔ ہر بار دوبارہ شروع کرنے کے بعد URL تبدیل ہو جاتا ہے۔", + "cloudflaredEnable": "ٹنل فعال کریں", + "cloudflaredInstallAndEnable": "انسٹال اور فعال کریں", "cloudflaredDisable": "Stop Tunnel", - "cloudflaredRunning": "Running", - "cloudflaredStarting": "Starting", - "cloudflaredStoppedState": "Stopped", - "cloudflaredNotInstalled": "Not installed", - "cloudflaredUnsupported": "Unsupported", - "cloudflaredError": "Error", + "cloudflaredRunning": "چل رہا ہے", + "cloudflaredStarting": "شروع ہو رہا ہے", + "cloudflaredStoppedState": "رکا ہوا ہے", + "cloudflaredNotInstalled": "انسٹال نہیں ہے", + "cloudflaredUnsupported": "غیر معاون", + "cloudflaredError": "خرابی", "cloudflaredStarted": "Cloudflare tunnel started", "cloudflaredStopped": "Cloudflare tunnel stopped", "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel", - "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after every restart.", - "cloudflaredUnsupportedNote": "This platform is not supported for managed installs. Install cloudflared manually or point CLOUDFLARED_BIN to an existing binary.", + "cloudflaredTemporaryNote": "Quick Tunnel کے URLs عارضی ہوتے ہیں اور ہر بار دوبارہ شروع کرنے کے بعد تبدیل ہو جائیں گے۔", + "cloudflaredUnsupportedNote": "یہ پلیٹ فارم منظم انسٹالیشنز کے لیے معاون نہیں ہے۔ cloudflared کو دستی طور پر انسٹال کریں یا CLOUDFLARED_BIN کو کسی موجودہ بائنری کی طرف متعین کریں۔", "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.", - "cloudflaredLastError": "Last error: {error}", - "providerModelsTitle": "{provider} — Models", - "noModelsForProvider": "No models available for this provider.", + "cloudflaredLastError": "آخری خرابی: {error}", + "providerModelsTitle": "{provider} — ماڈلز", + "noModelsForProvider": "اس فراہم کنندہ کے لیے کوئی ماڈل دستیاب نہیں ہے۔", "chat": "Chat", - "embedding": "Embedding", - "image": "Image", - "custom": "custom", - "modelsCount": "{count, plural, one {# model} other {# models}}", - "sectionTitle": "Integration Surface", - "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints", + "embedding": "ایمبیڈنگ", + "image": "تصویر", + "custom": "حسبِ ضرورت", + "modelsCount": "{count, plural, one {# ماڈل} other {# ماڈلز}}", + "sectionTitle": "انضمام کی سطح", + "sectionDescription": "OpenAI سے مطابقت رکھنے والی APIs اور آپریشنل پروٹوکول اینڈ پوائنٹس", "tabApis": "ای پی آئیز", - "tabProtocols": "Protocols", - "tabsAria": "Endpoint sections", - "protocolsTitle": "Protocols", - "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.", + "tabProtocols": "پروٹوکولز", + "tabsAria": "اینڈ پوائنٹ کے حصے", + "protocolsTitle": "پروٹوکولز", + "protocolsDescription": "MCP اور A2A مخصوص مشاہدہ پذیری اور کنٹرولز کے ساتھ اولین درجے کے اینڈ پوائنٹس ہیں۔", "mcpCardTitle": "MCP Server", - "mcpCardDescription": "Model Context Protocol over stdio", - "a2aCardTitle": "A2A Server", - "a2aCardDescription": "Agent2Agent JSON-RPC endpoint", - "protocolToolsLabel": "Tools", - "protocolTasksLabel": "Tasks", - "protocolActiveStreamsLabel": "Active streams", - "protocolLastActivity": "Last activity", - "quickStart": "Quick Start", - "openMcpDashboard": "Open MCP management", - "openA2aDashboard": "Open A2A management", - "mcpQuickStartTitle": "MCP Quick Start", - "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.", - "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.", - "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.", - "a2aQuickStartTitle": "A2A Quick Start", - "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.", - "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.", - "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.", - "completionsLegacy": "Completions (Legacy)", - "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format", + "mcpCardDescription": "stdio کے ذریعے Model Context Protocol", + "a2aCardTitle": "A2A سرور", + "a2aCardDescription": "Agent2Agent JSON-RPC اینڈ پوائنٹ", + "protocolToolsLabel": "ٹولز", + "protocolTasksLabel": "ٹاسکس", + "protocolActiveStreamsLabel": "فعال اسٹریمز", + "protocolLastActivity": "آخری سرگرمی", + "quickStart": "فوری آغاز", + "openMcpDashboard": "MCP مینجمنٹ کھولیں", + "openA2aDashboard": "A2A مینجمنٹ کھولیں", + "mcpQuickStartTitle": "MCP فوری آغاز", + "mcpQuickStartStep1": "MCP سرور کو `omniroute --mcp` کے ذریعے چلائیں۔", + "mcpQuickStartStep2": "اپنے MCP کلائنٹ کو stdio ٹرانسپورٹ کے ذریعے منسلک ہونے کے لیے ترتیب دیں۔", + "mcpQuickStartStep3": "`omniroute_get_health` اور `omniroute_list_combos` جیسے ٹولز استعمال کریں۔", + "a2aQuickStartTitle": "A2A فوری آغاز", + "a2aQuickStartStep1": "ایجنٹ کارڈ کو `/.well-known/agent.json` پر دریافت کریں۔", + "a2aQuickStartStep2": "`message/send` یا `message/stream` استعمال کرتے ہوئے `POST /a2a` کو JSON-RPC درخواستیں بھیجیں۔", + "a2aQuickStartStep3": "`tasks/get` اور `tasks/cancel` استعمال کرتے ہوئے ٹاسکس کو ٹریک اور کنٹرول کریں۔", + "completionsLegacy": "تکمیلات (لیگیسی)", + "completionsLegacyDesc": "لیگیسی OpenAI متنی تکمیلات — پرامپٹ اسٹرنگ اور پیغامات کی اَرے، دونوں فارمیٹس قبول کرتی ہیں", "messagesApi": "پیغامات", "messagesApiDesc": "کلاڈ کے موافق فراہم کنندگان کے لیے مقامی انتھروپک پیغامات API فارمیٹ", "imageEdits": "تصویری ترامیم", @@ -4022,41 +4022,41 @@ "batchApiDesc": "درخواستوں کے بڑے بیچوں کو متضاد طور پر پروسیس کریں (اوپن اے آئی کے موافق)", "filesApi": "فائلز API", "filesApiDesc": "بیچ پروسیسنگ کے لیے فائلیں اپ لوڈ اور ان کا نظم کریں۔", - "videoGeneration": "Video Generation", - "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.", - "tailscaleRequestFailed": "Failed to load Tailscale status", - "tailscaleEnableFailed": "Failed to enable Tailscale Funnel", - "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.", - "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login", - "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.", - "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled", - "tailscaleStarted": "Tailscale Funnel enabled", - "tailscaleDisableFailed": "Failed to disable Tailscale Funnel", - "tailscaleStopped": "Tailscale Funnel disabled", - "tailscaleInstallFailed": "Failed to install Tailscale", - "tailscaleInstallProgress": "Working...", - "tailscaleInstalled": "Tailscale installed successfully", - "tailscaleRunning": "Running", - "tailscaleNeedsLogin": "Needs Login", - "tailscaleStoppedState": "Stopped", - "tailscaleNotInstalled": "Not installed", - "tailscaleUnsupported": "Unsupported", - "tailscaleError": "Error", - "tailscaleDisable": "Stop Funnel", - "tailscaleInstallAndEnable": "Install & Enable", - "tailscaleLoginAndEnable": "Login & Enable", - "tailscaleEnable": "Enable Funnel", - "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.", + "videoGeneration": "ویڈیو جنریشن", + "videoDesc": "ComfyUI اور Stable Video Diffusion جیسے AI ماڈلز استعمال کرتے ہوئے ویڈیوز بنائیں۔", + "tailscaleRequestFailed": "Tailscale کی حیثیت لوڈ کرنے میں ناکامی", + "tailscaleEnableFailed": "Tailscale Funnel فعال کرنے میں ناکامی", + "tailscaleWaitingForLogin": "کھولے گئے براؤزر ٹیب میں Tailscale لاگ اِن مکمل کریں۔ OmniRoute خودکار طور پر دوبارہ کوشش کرے گا۔", + "tailscaleLoginTimedOut": "Tailscale لاگ اِن کے انتظار کا وقت ختم ہو گیا", + "tailscaleWaitingForFunnel": "کھولے گئے براؤزر ٹیب میں اس ڈیوائس کے لیے Funnel فعال کریں۔ OmniRoute جانچ جاری رکھے گا۔", + "tailscaleFunnelTimedOut": "Tailscale Funnel کے فعال ہونے کے انتظار کا وقت ختم ہو گیا", + "tailscaleStarted": "Tailscale Funnel فعال ہو گیا", + "tailscaleDisableFailed": "Tailscale Funnel غیر فعال کرنے میں ناکامی", + "tailscaleStopped": "Tailscale Funnel غیر فعال ہو گیا", + "tailscaleInstallFailed": "Tailscale انسٹال کرنے میں ناکامی", + "tailscaleInstallProgress": "کام جاری ہے...", + "tailscaleInstalled": "Tailscale کامیابی سے انسٹال ہو گیا", + "tailscaleRunning": "چل رہا ہے", + "tailscaleNeedsLogin": "لاگ اِن درکار ہے", + "tailscaleStoppedState": "رکا ہوا ہے", + "tailscaleNotInstalled": "انسٹال نہیں ہے", + "tailscaleUnsupported": "غیر معاون", + "tailscaleError": "خرابی", + "tailscaleDisable": "Funnel روکیں", + "tailscaleInstallAndEnable": "انسٹال اور فعال کریں", + "tailscaleLoginAndEnable": "لاگ اِن اور فعال کریں", + "tailscaleEnable": "Funnel فعال کریں", + "tailscaleUrlNotice": "آپ کا Tailscale .ts.net ایڈریس استعمال کرتا ہے۔ پہلی بار استعمال پر لاگ اِن اور Funnel کی منظوری درکار ہو سکتی ہے۔", "tailscaleTitle": "Tailscale Funnel", - "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.", - "tailscaleBinaryPath": "Binary: {path}", - "tailscaleLastError": "Last error: {error}", - "tailscaleInstallTitle": "Install Tailscale", - "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.", - "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.", - "tailscaleSudoPlaceholder": "Optional sudo password", - "tailscaleInstalling": "Installing", - "tailscaleSudoLabel": "Sudo Password (required on macOS/Linux)", + "tailscaleNeedsLoginHint": "اس مشین کی Tailscale کے ساتھ توثیق کریں، پھر Funnel فعال کریں۔", + "tailscaleBinaryPath": "بائنری: {path}", + "tailscaleLastError": "آخری خرابی: {error}", + "tailscaleInstallTitle": "Tailscale انسٹال کریں", + "tailscaleInstallIntro": "اس مشین پر Tailscale انسٹال کرتا ہے اور Funnel فعال کرنے کے لیے OmniRoute تیار کرتا ہے۔", + "tailscaleInstallPasswordHint": "macOS اور Linux پر پیکیج انسٹال کرنے اور ڈیمون شروع کرنے کے لیے sudo درکار ہو سکتا ہے۔", + "tailscaleSudoPlaceholder": "اختیاری sudo پاس ورڈ", + "tailscaleInstalling": "انسٹال ہو رہا ہے", + "tailscaleSudoLabel": "Sudo پاس ورڈ (macOS/Linux پر درکار ہے)", "ngrokTitle": "ngrok ٹنل", "ngrokRunning": "چل رہا ہے۔", "ngrokStarting": "شروع ہو رہا ہے۔", @@ -4108,7 +4108,7 @@ "all": "تمام", "more": "+{count} مزید", "showInternalTooltip": "اندرونی روٹس دکھائیں یا چھپائیں (طے شدہ طور پر پوشیدہ)", - "bearerAuth": "Bearer Auth", + "bearerAuth": "Bearer توثیق", "requestBody": "درخواست کی باڈی", "close": "بند کریں", "tryIt": "آزمائیں", @@ -4127,7 +4127,7 @@ "vscodeAliasDescriptionError": "پلیس ہولڈر URLs دکھائے جا رہے ہیں کیونکہ اس سیشن میں CLI کلیدیں لوڈ نہیں کی جا سکیں۔", "vscodeAliasDescriptionLoading": "CLI کلیدیں لوڈ ہو رہی ہیں۔ کلید دستیاب ہونے تک پلیس ہولڈر URLs دکھائے جاتے ہیں۔", "vscodeAliasDescriptionPlaceholder": "پلیس ہولڈر URLs دکھائے جا رہے ہیں۔ TOKEN کو تبدیل کرنے کے لیے CLI Tools میں API کلید بنائیں یا فعال کریں۔", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI ٹولز", "vscodeAliasBaseLabel": "VS Code بیس", "vscodeAliasModelsLabel": "VS Code ماڈلز", "vscodeAliasChatLabel": "VS Code چیٹ", @@ -4144,9 +4144,9 @@ "tierPublic": "عوامی", "hideInternal": "اندرونی چھپائیں", "showInternal": "اندرونی دکھائیں", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "حسبِ ضرورت سسٹم پرامپٹ", + "customSystemPromptDescription": "ہر ماڈل کی درخواست میں حسبِ ضرورت سسٹم پرامپٹ شامل کریں", + "customSystemPromptPlaceholder": "مثلاً ہمیشہ قزاقوں کے انداز میں جواب دیں...", "obsidianEnterToken": "براہ کرم Obsidian API ٹوکن درج کریں", "obsidianConnectFailed": "منسلک ہونے میں ناکام", "obsidianConnectionFailed": "کنکشن ناکام ہو گیا", @@ -4195,31 +4195,31 @@ "notionTokenConfigured": "ٹوکین ترتیب دیا گیا ہے۔ نوٹیشن کے ٹولز MCP کے ذریعے دستیاب ہیں۔" }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", - "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.", - "comingSoon": "Coming Soon", - "plannedFeatures": "Planned Features", - "featureRestApi": "REST API endpoint catalog with interactive documentation", - "featureWebhooks": "Webhook configuration and event subscriptions", - "featureSwagger": "OpenAPI / Swagger spec auto-generation", - "featureAuth": "API key and OAuth scope management per endpoint" + "tabProxy": "اینڈ پوائنٹ پراکسی", + "tabApiEndpoints": "API اینڈ پوائنٹس", + "apiEndpointsTitle": "API اینڈ پوائنٹس", + "apiEndpointsDescription": "بیک اینڈ API اینڈ پوائنٹس جنہیں دیگر ایپلیکیشنز اور سروسز استعمال کر سکتی ہیں۔ اس حصے میں تمام دستیاب REST APIs کو دستاویزات اور جانچ کی سہولیات کے ساتھ درج کیا جائے گا۔", + "comingSoon": "جلد آ رہا ہے", + "plannedFeatures": "منصوبہ بند خصوصیات", + "featureRestApi": "انٹرایکٹو دستاویزات کے ساتھ REST API اینڈ پوائنٹ کیٹلاگ", + "featureWebhooks": "Webhook کی ترتیب اور ایونٹ سبسکرپشنز", + "featureSwagger": "OpenAPI / Swagger تفصیلات کی خودکار تخلیق", + "featureAuth": "ہر اینڈ پوائنٹ کے لیے API کلید اور OAuth اسکوپ کا نظم" }, "mcpDashboard": { - "loading": "Loading MCP dashboard...", - "activate": "activate", - "deactivate": "deactivate", - "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?", - "switchComboFailed": "Failed to switch combo state.", - "switchComboSuccess": "Combo \"{combo}\" updated.", - "confirmApplyProfile": "Apply resilience profile \"{profile}\"?", - "applyProfileFailed": "Failed to apply resilience profile.", - "applyProfileSuccess": "Profile \"{profile}\" applied.", - "confirmResetBreakers": "Reset all circuit breakers?", - "resetBreakersFailed": "Failed to reset circuit breakers.", - "resetBreakersSuccess": "Circuit breakers reset.", - "processStatus": "Process status", + "loading": "MCP ڈیش بورڈ لوڈ ہو رہا ہے...", + "activate": "فعال کریں", + "deactivate": "غیر فعال کریں", + "confirmSwitchCombo": "کیا آپ واقعی کومبو \"{combo}\" کو {action} کرنا چاہتے ہیں؟", + "switchComboFailed": "کومبو کی حالت تبدیل کرنے میں ناکامی۔", + "switchComboSuccess": "کومبو \"{combo}\" اپ ڈیٹ کر دیا گیا۔", + "confirmApplyProfile": "ریزِیلیئنس پروفائل \"{profile}\" لاگو کریں؟", + "applyProfileFailed": "ریزِیلیئنس پروفائل لاگو کرنے میں ناکامی۔", + "applyProfileSuccess": "پروفائل \"{profile}\" لاگو کر دیا گیا۔", + "confirmResetBreakers": "تمام سرکٹ بریکرز ری سیٹ کریں؟", + "resetBreakersFailed": "سرکٹ بریکرز ری سیٹ کرنے میں ناکامی۔", + "resetBreakersSuccess": "سرکٹ بریکرز ری سیٹ کر دیے گئے۔", + "processStatus": "پراسیس کی حالت", "online": "Online", "offline": "Offline", "disableLabel": "{label} غیر فعال کریں", @@ -4237,119 +4237,119 @@ "mcpStep2": "اپنے MCP کلائنٹ کو stdio ٹرانسپورٹ پر منسلک کرنے کے لیے کنفیگر کریں۔", "mcpStep3": "{code1} اور {code2} جیسے ٹولز کو کال کریں۔", "pid": "PID", - "sessionUptime": "Session uptime", - "lastHeartbeat": "Last heartbeat", - "activity24h": "Activity (24h)", - "totalCalls": "Total calls", - "successRate": "Success rate", - "avgLatency": "Avg latency", - "topTools": "Top tools", - "noToolCalls24h": "No tool calls in the last 24 hours.", - "runtimeDetails": "Runtime details", - "transport": "Transport", - "scopesEnforced": "Scopes enforced", - "yes": "yes", - "no": "no", - "lastCall": "Last call", - "heartbeatPath": "Heartbeat path", - "operationalControls": "Operational controls", - "switchCombo": "Switch combo", - "inactive": "inactive", - "active": "active", - "activateCombo": "Activate combo", - "deactivateCombo": "Deactivate combo", - "applyResilienceProfile": "Apply resilience profile", - "profileAggressive": "aggressive", - "profileBalanced": "balanced", - "profileConservative": "conservative", - "applyProfile": "Apply profile", - "resetCircuitBreakers": "Reset circuit breakers", - "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.", - "resetAllBreakers": "Reset all breakers", - "toolsAndScopes": "Tools and scopes", - "tableTool": "Tool", - "tableScopes": "Scopes", - "tablePhase": "Phase", + "sessionUptime": "سیشن اپ ٹائم", + "lastHeartbeat": "آخری ہارٹ بیٹ", + "activity24h": "سرگرمی (24 گھنٹے)", + "totalCalls": "کل کالز", + "successRate": "کامیابی کی شرح", + "avgLatency": "اوسط تاخیر", + "topTools": "سرفہرست ٹولز", + "noToolCalls24h": "گزشتہ 24 گھنٹوں میں کوئی ٹول کال نہیں ہوئی۔", + "runtimeDetails": "رن ٹائم کی تفصیلات", + "transport": "ٹرانسپورٹ", + "scopesEnforced": "نافذ کردہ اسکوپس", + "yes": "ہاں", + "no": "نہیں", + "lastCall": "آخری کال", + "heartbeatPath": "ہارٹ بیٹ پاتھ", + "operationalControls": "آپریشنل کنٹرولز", + "switchCombo": "کومبو سوئچ کریں", + "inactive": "غیر فعال", + "active": "فعال", + "activateCombo": "کومبو فعال کریں", + "deactivateCombo": "کومبو غیر فعال کریں", + "applyResilienceProfile": "لچک پذیری پروفائل لاگو کریں", + "profileAggressive": "جارحانہ", + "profileBalanced": "متوازن", + "profileConservative": "محتاط", + "applyProfile": "پروفائل لاگو کریں", + "resetCircuitBreakers": "سرکٹ بریکرز ری سیٹ کریں", + "resetCircuitBreakersHelp": "فراہم کنندگان کے لیے موجودہ بریکر اسٹیٹ اور ناکامی کے کاؤنٹرز صاف کرتا ہے۔", + "resetAllBreakers": "تمام بریکرز ری سیٹ کریں", + "toolsAndScopes": "ٹولز اور اسکوپس", + "tableTool": "ٹول", + "tableScopes": "اسکوپس", + "tablePhase": "مرحلہ", "tableAudit": "Audit", - "auditLog": "Audit log", - "auditSummary": "Calls: {total} | page {page} of {totalPages}", - "allTools": "All tools", - "allResults": "All results", - "success": "Success", - "failure": "Failure", + "auditLog": "آڈٹ لاگ", + "auditSummary": "کالز: {total} | صفحہ {page} از {totalPages}", + "allTools": "تمام ٹولز", + "allResults": "تمام نتائج", + "success": "کامیابی", + "failure": "ناکامی", "apiKeyIdPlaceholder": "apiKeyId", - "loadingAuditEntries": "Loading audit entries...", - "noAuditEntriesForFilters": "No audit entries found for current filters.", - "tableTimestamp": "Timestamp", - "tableDuration": "Duration", - "tableResult": "Result", - "tableApiKey": "API key", - "failed": "failed", - "previous": "Previous", - "next": "Next", - "apiKeyId": "Api Key Id", - "offset": "Offset", - "limit": "Limit", - "tool": "Tool" + "loadingAuditEntries": "آڈٹ اندراجات لوڈ ہو رہے ہیں...", + "noAuditEntriesForFilters": "موجودہ فلٹرز کے لیے کوئی آڈٹ اندراج نہیں ملا۔", + "tableTimestamp": "وقت کی مہر", + "tableDuration": "دورانیہ", + "tableResult": "نتیجہ", + "tableApiKey": "API کلید", + "failed": "ناکام", + "previous": "پچھلا", + "next": "اگلا", + "apiKeyId": "API کلید کی ID", + "offset": "آف سیٹ", + "limit": "حد", + "tool": "ٹول" }, "a2aDashboard": { - "loading": "Loading A2A dashboard...", - "confirmCancelTask": "Cancel task {taskId}?", - "cancelTaskFailed": "Failed to cancel task.", - "cancelTaskSuccess": "Task {taskId} cancelled.", - "smokeSendFailed": "message/send smoke test failed.", - "smokeSendSuccessWithTask": "message/send ok (task {taskId}).", + "loading": "A2A ڈیش بورڈ لوڈ ہو رہا ہے...", + "confirmCancelTask": "ٹاسک {taskId} منسوخ کریں؟", + "cancelTaskFailed": "ٹاسک منسوخ کرنے میں ناکامی ہوئی۔", + "cancelTaskSuccess": "ٹاسک {taskId} منسوخ کر دیا گیا۔", + "smokeSendFailed": "message/send سموک ٹیسٹ ناکام ہو گیا۔", + "smokeSendSuccessWithTask": "message/send کامیاب رہا (ٹاسک {taskId})۔", "smokeSendSuccess": "message/send ok.", - "smokeStreamFailed": "message/stream smoke test failed.", - "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).", - "smokeStreamNoTaskId": "message/stream finished without task id.", - "health": "Health", + "smokeStreamFailed": "message/stream سموک ٹیسٹ ناکام ہو گیا۔", + "smokeStreamSuccessWithTask": "message/stream کامیاب رہا (ٹاسک {taskId}{stateSuffix})۔", + "smokeStreamNoTaskId": "message/stream ٹاسک ID کے بغیر مکمل ہو گیا۔", + "health": "صحت", "ok": "ok", - "totalTasks": "Total tasks", - "activeStreams": "Active streams", - "lastTask": "Last task", - "taskStateOverview": "Task state overview", + "totalTasks": "کل ٹاسکس", + "activeStreams": "فعال اسٹریمز", + "lastTask": "آخری ٹاسک", + "taskStateOverview": "ٹاسک کی حالت کا جائزہ", "state": { - "submitted": "submitted", - "working": "working", - "completed": "completed", - "failed": "failed", - "cancelled": "cancelled" + "submitted": "جمع شدہ", + "working": "زیرِ عمل", + "completed": "مکمل شدہ", + "failed": "ناکام", + "cancelled": "منسوخ شدہ" }, - "agentCard": "Agent card", + "agentCard": "ایجنٹ کارڈ", "agentCardPath": "/.well-known/agent.json", - "version": "Version", + "version": "ورژن", "url": "URL", - "capabilities": "Capabilities", - "agentCardNotAvailable": "Agent card not available.", - "quickValidation": "Quick validation", - "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.", - "runMessageSend": "Run message/send", - "runMessageStream": "Run message/stream", - "taskManagement": "Task management", - "taskSummary": "{total} tasks | page {page} of {totalPages}", - "allStates": "all", - "allSkills": "all skills", - "loadingTasks": "Loading tasks...", - "noTasksForFilters": "No tasks found for current filters.", - "tableTask": "Task", - "tableSkill": "Skill", - "tableState": "State", - "tableUpdated": "Updated", - "tableActions": "Actions", - "view": "View", - "cancel": "Cancel", - "previous": "Previous", - "next": "Next", - "taskDetail": "Task detail", - "close": "Close", + "capabilities": "صلاحیتیں", + "agentCardNotAvailable": "ایجنٹ کارڈ دستیاب نہیں ہے۔", + "quickValidation": "فوری توثیق", + "quickValidationDescription": "لائیو `/a2a` اینڈ پوائنٹ کے ذریعے سموک کالز چلاتا ہے۔", + "runMessageSend": "message/send چلائیں", + "runMessageStream": "message/stream چلائیں", + "taskManagement": "ٹاسک کا انتظام", + "taskSummary": "{total} ٹاسکس | صفحہ {page} از {totalPages}", + "allStates": "سبھی", + "allSkills": "تمام مہارتیں", + "loadingTasks": "کام لوڈ ہو رہے ہیں...", + "noTasksForFilters": "موجودہ فلٹرز کے لیے کوئی کام نہیں ملا۔", + "tableTask": "کام", + "tableSkill": "مہارت", + "tableState": "حالت", + "tableUpdated": "اپ ڈیٹ شدہ", + "tableActions": "اقدامات", + "view": "دیکھیں", + "cancel": "منسوخ کریں", + "previous": "پچھلا", + "next": "اگلا", + "taskDetail": "کام کی تفصیل", + "close": "بند کریں", "metadata": "Metadata", - "events": "Events", - "artifacts": "Artifacts", - "tablePhase": "Table Phase", - "offset": "Offset", - "limit": "Limit", - "skill": "Skill", + "events": "واقعات", + "artifacts": "نمونے", + "tablePhase": "ٹیبل مرحلہ", + "offset": "آف سیٹ", + "limit": "حد", + "skill": "مہارت", "rpcEndpoint": "پوسٹ /a2a", "rpcMethodSend": "پیغام / بھیجیں۔", "rpcMethodStream": "پیغام/ سلسلہ", @@ -4369,9 +4369,9 @@ }, "memory": { "a": "A", - "actions": "Actions", - "addMemory": "Add Memory", - "allTypes": "All Types", + "actions": "اقدامات", + "addMemory": "میموری شامل کریں", + "allTypes": "تمام اقسام", "cancel": "منسوخ کریں۔", "checkHealth": "صحت کی جانچ کریں۔", "checkingHealth": "چیک کیا جا رہا ہے…", @@ -4382,13 +4382,13 @@ "howWorksToggle": "یہ کیسے کام کرتا ہے", "howWorksContent": "1. خودکار اخراج: ہر جواب کے آخر میں، حقائق اور واقعات کا پتہ لگایا جاتا ہے اور خود بخود محفوظ کیا جاتا ہے۔\n2. بازیافت: ہر جواب سے پہلے، FTS5 (عین مطابق)، ویکٹر (معنوی)، یا ہائبرڈ RRF کے ذریعے سب سے زیادہ متعلقہ یادداشتیں تلاش کی جاتی ہیں۔\n3. انجیکشن: جواب کے معیار کو بہتر بنانے کے لیے متعلقہ یادداشتوں کو اسسٹنٹ کے سیاق و سباق میں شامل کیا جاتا ہے۔\n4. انتظام: پرانی یادداشتوں کو دیکھنے، ترمیم کرنے، برآمد کرنے اور کمپیکٹ کرنے کے لیے اس صفحے کا استعمال کریں۔" }, - "content": "Content", + "content": "مواد", "contentPlaceholder": "یاد رکھنے کے لیے قدر یا JSON مواد", - "created": "Created", - "delete": "Delete", + "created": "تخلیق کی تاریخ", + "delete": "حذف کریں", "deleteConfirmDesc": "اس عمل کو واپس نہیں لیا جا سکتا۔ یادداشت مستقل طور پر حذف کر دی جائے گی۔", "deleteConfirmTitle": "یادداشت حذف کریں؟", - "description": "View and manage stored memory entries", + "description": "محفوظ شدہ میموری اندراجات دیکھیں اور ان کا نظم کریں", "editMemory": "یادداشت میں ترمیم کریں", "editModal": { "title": "یادداشت میں ترمیم کریں", @@ -4444,20 +4444,20 @@ "configureCta": "کنفیگر کریں", "vectorStoreInstallHint": "ویکٹر سرچ کو فعال کرنے کے لیے: npm install sqlite-vec (نیٹیو Node.js کی ضرورت ہے، WASM کی نہیں)، پھر دوبارہ شروع کریں۔" }, - "episodic": "Episodic", - "export": "Export", - "factual": "Factual", + "episodic": "واقعاتی", + "export": "برآمد کریں", + "factual": "حقائق پر مبنی", "healthUnknown": "صحت نامعلوم", - "hitRate": "Hit Rate", - "import": "Import", + "hitRate": "کامیابی کی شرح", + "import": "درآمد کریں", "importError": "فائل امپورٹ کرنے میں ناکامی", "importResult": "{imported} امپورٹ کیے گئے، {skipped} نظر انداز کیے گئے", - "key": "Key", + "key": "کلید", "keyPlaceholder": "جیسے user.preferences.theme", "loading": "Loading memories...", - "memories": "Memories", + "memories": "میموریز", "next": "اگلا", - "noMemories": "No memories found", + "noMemories": "کوئی میموری نہیں ملی", "pageInfo": "صفحہ {page} از {totalPages} ({total} کل)", "pipelineError": "پائپ لائن کی خرابی۔", "pipelineOk": "پائپ لائن ٹھیک ہے ({latencyMs}ms)", @@ -4485,7 +4485,7 @@ "errorFetch": "پیش نظارہ حاصل کرنے میں ناکامی" }, "previous": "پچھلا", - "procedural": "Procedural", + "procedural": "طریقۂ کار سے متعلق", "qdrant": { "title": "Qdrant (ویکٹر اسٹور ٹیئر 2)", "description": "اسکیل ایبل سیمنٹک سرچ کے لیے اختیاری Qdrant انٹیگریشن", @@ -4534,8 +4534,8 @@ }, "save": "محفوظ کریں۔", "saving": "محفوظ ہو رہا ہے...", - "search": "Search memories...", - "semantic": "Semantic", + "search": "یادداشتیں تلاش کریں...", + "semantic": "معنوی", "summarize": { "title": "پرانی یادداشتوں کو مختصر کریں", "noCandidates": "کوئی یادداشتیں مختصر کرنے کے اہل نہیں ہیں (معیار: 30 دن سے زیادہ پرانی)۔", @@ -4547,8 +4547,8 @@ "playground": "پلے گراؤنڈ", "engine": "انجن" }, - "title": "Memory Management", - "tokensUsed": "Tokens Used", + "title": "یادداشت کا انتظام", + "tokensUsed": "استعمال شدہ ٹوکنز", "tooltip": { "totalEntries": "اس API key کے لیے محفوظ کردہ کل یادیں", "tokensUsed": "فعال یادوں کے زیر استعمال کل ٹوکنز کا تخمینہ", @@ -4558,15 +4558,15 @@ "procedural": "طریقہ کار، ورک فلو، اور ہدایات جن پر اسسٹنٹ کو عمل کرنا چاہیے", "semantic": "تصورات، ترجیحات، اور ڈومین کا علم" }, - "totalEntries": "Total Entries", - "type": "Type", + "totalEntries": "کل اندراجات", + "type": "قسم", "memoryEnabled": "یادداشت فعال ہے" }, "skills": { - "title": "Skills", - "description": "Manage and monitor AI skills", - "skillsTab": "Skills", - "executionsTab": "Executions", + "title": "مہارتیں", + "description": "AI مہارتوں کا نظم و نسق اور نگرانی کریں", + "skillsTab": "مہارتیں", + "executionsTab": "عمل درآمد", "selectSkillToInspect": "معائنہ کرنے کے لیے بائیں جانب سے ایک مہارت منتخب کریں۔", "schemaTab": "اسکیما", "handlerTab": "ہینڈلر", @@ -4577,29 +4577,29 @@ "runTestPlaceholder": "ٹیسٹ چلائیں (پلیس ہولڈر)", "setModeAria": "موڈ {mode} سیٹ کریں", "uninstallSkill": "مہارت کو غیر انسٹال کریں", - "sandboxTab": "Sandbox", - "loading": "Loading skills...", - "noSkills": "No skills found", - "noExecutions": "No executions found", - "enabled": "Enabled", - "disabled": "Disabled", + "sandboxTab": "سینڈ باکس", + "loading": "مہارتیں لوڈ ہو رہی ہیں...", + "noSkills": "کوئی مہارت نہیں ملی", + "noExecutions": "کوئی عمل درآمد نہیں ملا", + "enabled": "فعال", + "disabled": "غیر فعال", "delete": "حذف کریں", - "version": "Version", - "tableDescription": "Description", - "skill": "Skill", - "status": "Status", - "duration": "Duration", - "time": "Time", - "sandboxConfig": "Sandbox Configuration", - "cpuLimit": "CPU Limit", - "cpuLimitDesc": "Maximum execution time per skill", - "memoryLimit": "Memory Limit", - "memoryLimitDesc": "Maximum memory allocation", - "timeout": "Timeout", - "timeoutDesc": "Maximum wait time for response", - "networkAccess": "Network Access", - "networkAccessDesc": "Allow outbound network requests", - "mode": "Mode", + "version": "ورژن", + "tableDescription": "تفصیل", + "skill": "مہارت", + "status": "حالت", + "duration": "دورانیہ", + "time": "وقت", + "sandboxConfig": "سینڈ باکس کی ترتیب", + "cpuLimit": "CPU کی حد", + "cpuLimitDesc": "فی مہارت عمل درآمد کا زیادہ سے زیادہ وقت", + "memoryLimit": "میموری کی حد", + "memoryLimitDesc": "میموری مختص کرنے کی زیادہ سے زیادہ حد", + "timeout": "ٹائم آؤٹ", + "timeoutDesc": "جواب کے انتظار کا زیادہ سے زیادہ وقت", + "networkAccess": "نیٹ ورک تک رسائی", + "networkAccessDesc": "بیرونی نیٹ ورک کی درخواستوں کی اجازت دیں", + "mode": "موڈ", "q": "Q", "filterSkillsPlaceholder": "نام، تفصیل، یا ٹیگ کے لحاظ سے مہارت کو فلٹر کریں۔", "allModes": "تمام موڈز", @@ -4642,90 +4642,90 @@ "installSkill": "مہارت کو انسٹال کریں۔" }, "health": { - "title": "System Health", - "description": "Real-time monitoring of your OmniRoute instance", - "healthy": "Healthy", - "degraded": "Degraded", - "down": "Down", - "uptime": "Uptime", - "memory": "Memory", - "memoryRss": "Memory (RSS)", - "heap": "Heap", + "title": "سسٹم کی صحت", + "description": "آپ کے OmniRoute انسٹینس کی حقیقی وقت میں نگرانی", + "healthy": "صحت مند", + "degraded": "متاثرہ", + "down": "بند", + "uptime": "فعال رہنے کا دورانیہ", + "memory": "میموری", + "memoryRss": "میموری (RSS)", + "heap": "ہیپ", "cpu": "CPU", - "database": "Database", - "version": "Version", - "lastCheck": "Last Check", - "providerHealth": "Provider Health", - "systemMetrics": "System Metrics", - "tokenHealth": "Token Health", - "refreshAll": "Refresh All", - "checkNow": "Check Now", - "loadingHealth": "Loading health data...", - "failedToLoad": "Failed to load health data: {error}", - "retry": "Retry", - "allOperational": "All systems operational", - "issuesDetected": "System issues detected", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", - "updatedAt": "Updated {time}", - "latency": "Latency", + "database": "ڈیٹابیس", + "version": "ورژن", + "lastCheck": "آخری جانچ", + "providerHealth": "فراہم کنندہ کی صحت", + "systemMetrics": "سسٹم میٹرکس", + "tokenHealth": "ٹوکن کی صحت", + "refreshAll": "سب تازہ کریں", + "checkNow": "ابھی جانچیں", + "loadingHealth": "صحت کا ڈیٹا لوڈ ہو رہا ہے...", + "failedToLoad": "صحت کا ڈیٹا لوڈ کرنے میں ناکامی: {error}", + "retry": "دوبارہ کوشش کریں", + "allOperational": "تمام سسٹمز فعال ہیں", + "issuesDetected": "سسٹم کے مسائل کا پتا چلا ہے", + "healthVerdictReady": "OmniRoute تیار ہے", + "healthVerdictActionRequired": "مکمل فعالیت بحال کرنے کے لیے کارروائی درکار ہے", + "healthVerdictCoolingDown": "حالیہ تبدیلیوں کے بعد وقفۂ سکون جاری ہے", + "healthSubtitle": "سسٹم کی صحت کی جانچ", + "advancedDiagnosticsTitle": "اعلیٰ تشخیصی معلومات", + "hide": "چھپائیں", + "show": "دکھائیں", + "updatedAt": "{time} کو اپ ڈیٹ کیا گیا", + "latency": "تاخیر", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", "millisecondsShort": "{value}ms", "notAvailable": "—", - "totalRequests": "Total requests", - "noDataYet": "No data yet", - "promptCache": "Prompt Cache", - "entries": "Entries", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "signatureCache": "Signature Cache", - "signatureDefaults": "Defaults", - "signatureTool": "Tool", - "signatureFamily": "Family", - "signatureSession": "Session", - "recovering": "Recovering", - "noCBData": "No circuit breaker data available. Make some requests first.", - "providerHealthStatusAria": "Provider health status", - "issuesLabel": "Issues Detected", - "operational": "Operational", - "providers": "Providers", - "configuredProvidersLabel": "Configured in dashboard", - "configuredProvidersHint": "Providers with credentials saved in /dashboard/providers, regardless of runtime state.", - "activeProviders": "{count} active", - "activeProvidersHint": "Configured providers currently enabled for routing requests.", - "monitoredProviders": "{count} monitored", - "monitoredProvidersHint": "Providers currently tracked by circuit-breaker health monitors.", - "healthyCount": "{count} healthy", + "totalRequests": "کل درخواستیں", + "noDataYet": "ابھی تک کوئی ڈیٹا نہیں", + "promptCache": "پرامپٹ کیش", + "entries": "اندراجات", + "hitRate": "ہٹ کی شرح", + "hitsMisses": "ہٹس / مِسز", + "signatureCache": "دستخطی کیش", + "signatureDefaults": "طے شدہ اقدار", + "signatureTool": "ٹول", + "signatureFamily": "فیملی", + "signatureSession": "سیشن", + "recovering": "بحال ہو رہا ہے", + "noCBData": "سرکٹ بریکر کا کوئی ڈیٹا دستیاب نہیں۔ پہلے کچھ درخواستیں کریں۔", + "providerHealthStatusAria": "فراہم کنندہ کی صحت کی حالت", + "issuesLabel": "مسائل کا پتا چلا", + "operational": "فعال", + "providers": "فراہم کنندگان", + "configuredProvidersLabel": "ڈیش بورڈ میں ترتیب شدہ", + "configuredProvidersHint": "وہ فراہم کنندگان جن کی اسناد /dashboard/providers میں محفوظ ہیں، چاہے ان کی رن ٹائم حالت کچھ بھی ہو۔", + "activeProviders": "{count} فعال", + "activeProvidersHint": "وہ ترتیب شدہ فراہم کنندگان جو فی الحال روٹنگ درخواستوں کے لیے فعال ہیں۔", + "monitoredProviders": "{count} زیرِ نگرانی", + "monitoredProvidersHint": "وہ فراہم کنندگان جن کی فی الحال سرکٹ بریکر صحت مانیٹرز کے ذریعے نگرانی کی جا رہی ہے۔", + "healthyCount": "{count} صحت مند", "nodeVersion": "Node {version}", - "failures": "{count} failure", - "failuresPlural": "{count} failures", - "lastFailure": "Last", - "rateLimitStatus": "Rate Limit Status", - "activeLimiters": "{count} active limiter", - "activeLimitersPlural": "{count} active limiters", - "queued": "Queued", - "queuedCount": "{count} queued", - "running": "running", - "runningCount": "{count} running", + "failures": "{count} ناکامی", + "failuresPlural": "{count} ناکامیاں", + "lastFailure": "آخری", + "rateLimitStatus": "شرح کی حد کی حالت", + "activeLimiters": "{count} فعال حد کنندہ", + "activeLimitersPlural": "{count} فعال حد کنندگان", + "queued": "قطار میں", + "queuedCount": "{count} قطار میں", + "running": "چل رہا ہے", + "runningCount": "{count} چل رہے ہیں", "ok": "OK", - "activeLockouts": "Active Lockouts", - "resetConfirm": "Reset all circuit breakers to healthy state? This will clear all failure counts and restore all providers to operational status.", - "resetAllTitle": "Reset all circuit breakers to healthy state", - "resetting": "Resetting...", - "resetAll": "Reset All", - "until": "Until {time}", - "limitExhausted": "Exhausted", - "learnedFromHeaders": "Learned from headers", - "remainingOfLimit": "{remaining}/{limit} remaining", - "throttleStatus": "Throttle: {value}", - "lastHeaderUpdate": "Header update: {age}", + "activeLockouts": "فعال لاک آؤٹس", + "resetConfirm": "تمام سرکٹ بریکرز کو صحت مند حالت میں ری سیٹ کریں؟ اس سے ناکامیوں کی تمام تعداد صاف ہو جائے گی اور تمام فراہم کنندگان دوبارہ فعال حالت میں آ جائیں گے۔", + "resetAllTitle": "تمام سرکٹ بریکرز کو صحت مند حالت میں ری سیٹ کریں", + "resetting": "ری سیٹ ہو رہا ہے...", + "resetAll": "سبھی کو ری سیٹ کریں", + "until": "{time} تک", + "limitExhausted": "ختم شدہ", + "learnedFromHeaders": "ہیڈرز سے اخذ کردہ", + "remainingOfLimit": "{remaining}/{limit} باقی", + "throttleStatus": "تھروٹل: {value}", + "lastHeaderUpdate": "ہیڈر اپ ڈیٹ: {age}", "databaseHealth": "ڈیٹا بیس ہیلتھ", "databaseHealthDescription": "پرانی کوٹہ/ڈومین قطاروں اور ٹوٹی ہوئی کمبو حوالوں کی تشخیص اور مرمت کریں۔", "status": "حالت", @@ -4851,65 +4851,65 @@ "noTargets": "کوئی ہدف والے راستے کنفیگر نہیں ہیں۔" }, "limits": { - "title": "Limits & Quotas", - "rateLimit": "Rate Limit", - "remaining": "Remaining", - "requestsPerMinute": "Requests/min", - "tokensPerMinute": "Tokens/min", - "dailyLimit": "Daily Limit" + "title": "حدود اور کوٹے", + "rateLimit": "شرح کی حد", + "remaining": "باقی", + "requestsPerMinute": "درخواستیں/منٹ", + "tokensPerMinute": "ٹوکنز/منٹ", + "dailyLimit": "یومیہ حد" }, "logs": { - "title": "Logs", - "requestLogs": "Request Logs", - "proxyLogs": "Proxy Logs", - "auditLog": "Audit Log", + "title": "لاگز", + "requestLogs": "درخواست کے لاگز", + "proxyLogs": "پراکسی لاگز", + "auditLog": "آڈٹ لاگ", "console": "Console", - "auditLogDesc": "Administrative actions and security events", - "loading": "Loading...", - "refresh": "Refresh", - "filterByAction": "Filter by action...", - "filterByActor": "Filter by actor...", - "filterEntriesAria": "Filter audit log entries", - "filterByActionTypeAria": "Filter by action type", - "filterByActorAria": "Filter by actor", - "refreshAuditLogAria": "Refresh audit log", - "tableAria": "Audit log entries", - "failedFetchAuditLog": "Failed to fetch audit log", - "showing": "Showing {count} entries (offset {offset})", - "search": "Search", - "timestamp": "Timestamp", - "action": "Action", - "actor": "Actor", - "target": "Target", - "details": "Details", - "ipAddress": "IP Address", + "auditLogDesc": "انتظامی کارروائیاں اور سیکیورٹی واقعات", + "loading": "لوڈ ہو رہا ہے...", + "refresh": "تازہ کریں", + "filterByAction": "کارروائی کے لحاظ سے فلٹر کریں...", + "filterByActor": "کارروائی کرنے والے کے لحاظ سے فلٹر کریں...", + "filterEntriesAria": "آڈٹ لاگ اندراجات فلٹر کریں", + "filterByActionTypeAria": "کارروائی کی قسم کے لحاظ سے فلٹر کریں", + "filterByActorAria": "کارروائی کرنے والے کے لحاظ سے فلٹر کریں", + "refreshAuditLogAria": "آڈٹ لاگ تازہ کریں", + "tableAria": "آڈٹ لاگ اندراجات", + "failedFetchAuditLog": "آڈٹ لاگ حاصل کرنے میں ناکامی", + "showing": "{count} اندراجات دکھائے جا رہے ہیں (آف سیٹ {offset})", + "search": "تلاش کریں", + "timestamp": "وقت کی مہر", + "action": "کارروائی", + "actor": "کارروائی کرنے والا", + "target": "ہدف", + "details": "تفصیلات", + "ipAddress": "IP ایڈریس", "notAvailable": "—", - "noEntries": "No audit log entries found", - "previous": "Previous", - "next": "Next", - "providerWarningTitle": "Provider Warnings", - "viewDetails": "View Details", - "eventMetadata": "Event Metadata", - "eventPayload": "Event Payload", - "requestId": "Request Id", - "providerWarningDesc": "Some providers returned warnings during request processing", + "noEntries": "کوئی آڈٹ لاگ اندراج نہیں ملا", + "previous": "پچھلا", + "next": "اگلا", + "providerWarningTitle": "Provider انتباہات", + "viewDetails": "تفصیلات دیکھیں", + "eventMetadata": "واقعے کا میٹا ڈیٹا", + "eventPayload": "واقعے کا پے لوڈ", + "requestId": "درخواست کی شناخت", + "providerWarningDesc": "درخواست پر کارروائی کے دوران بعض providers نے انتباہات واپس کیے", "a": "A", - "offset": "Offset", - "limit": "Limit", - "status": "Status", - "resourceType": "Resource Type", - "totalEntries": "Total Entries", - "tab": "Tab", - "auditModalSubtitle": "Event details and metadata", - "close": "Close", - "runningRequests": "Active Requests", - "runningRequestsDesc": "Real-time view of currently running upstream requests", + "offset": "آف سیٹ", + "limit": "حد", + "status": "حالت", + "resourceType": "وسیلے کی قسم", + "totalEntries": "کل اندراجات", + "tab": "ٹیب", + "auditModalSubtitle": "واقعے کی تفصیلات اور میٹا ڈیٹا", + "close": "بند کریں", + "runningRequests": "فعال درخواستیں", + "runningRequestsDesc": "اس وقت جاری upstream درخواستوں کا حقیقی وقت کا منظر", "clearAll": "تمام صاف کریں۔", "confirmClearActiveRequests": "تمام فعال درخواستوں کو صاف کریں؟", - "model": "Model", - "provider": "Provider", - "account": "Account", - "elapsed": "Elapsed", + "model": "ماڈل", + "provider": "فراہم کنندہ", + "account": "اکاؤنٹ", + "elapsed": "گزرا ہوا وقت", "activeStage": "مرحلہ", "activeStageUnknown": "ابھی تک اپ اسٹریم کو نہیں بھیجا گیا", "activeStageRegistered": "رجسٹرڈ", @@ -4919,17 +4919,17 @@ "activeStageRateLimitSlotAcquired": "ریٹ لمیٹ سلاٹ حاصل کر لی گئی", "activeStageSendingToProvider": "اپ اسٹریم کو بھیجا جا رہا ہے", "activeStageProviderResponseStarted": "اپ اسٹریم کا جواب شروع ہو گیا", - "count": "Count", - "payloads": "Payloads", - "viewPayloads": "View", - "activeCount": "{count} active", - "clientPayload": "Client Request Payload", - "upstreamPayload": "Upstream Provider Payload", - "upstreamNotSentYet": "Not sent to upstream yet", - "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}", - "export": "Export", - "exporting": "Exporting...", - "exportFailed": "Export failed", + "count": "تعداد", + "payloads": "پے لوڈز", + "viewPayloads": "دیکھیں", + "activeCount": "{count} فعال", + "clientPayload": "کلائنٹ کی درخواست کا پے لوڈ", + "upstreamPayload": "اپ اسٹریم فراہم کنندہ کا پے لوڈ", + "upstreamNotSentYet": "ابھی تک اپ اسٹریم کو نہیں بھیجا گیا", + "runningRequestDetailMeta": "اکاؤنٹ: {account} — گزرا ہوا وقت: {elapsed}", + "export": "برآمد کریں", + "exporting": "برآمد کیا جا رہا ہے...", + "exportFailed": "برآمد ناکام ہو گئی", "cleanHistoryButton": "ہسٹری صاف کریں", "cleanHistoryTitle": "لاگ ہسٹری صاف کریں؟", "cleanHistoryMessage": "یہ مستقل طور پر DATA_DIR/call_logs کے تحت تمام درخواست لاگ کی قطاریں، پرانی تفصیلی قطاریں، اور مقامی آرٹفیکٹ فائلیں صاف کر دے گا۔ صفائی کے بعد لائیو پیج ریفریش ہو جائے گا۔", @@ -4938,13 +4938,13 @@ "cleanHistorySuccess": "{deleted} لاگ اندراجات، {deletedArtifacts} آرٹفیکٹس، اور {deletedDetailedLogs} پرانی تفصیلی قطاریں صاف کر دی گئیں۔", "cleanHistoryEmpty": "درخواست لاگ کی کوئی ہسٹری نہیں ملی۔", "cleanHistoryFailed": "لاگ ہسٹری صاف کرنے میں ناکامی ہوئی۔", - "timeRange": "Time Range", - "lastNHours": "Last {hours}", - "defaultRange": "default", + "timeRange": "وقت کی حد", + "lastNHours": "گزشتہ {hours}", + "defaultRange": "طے شدہ", "consoleViewer": { - "fetchFailed": "Failed to fetch logs", - "copyFailed": "Failed to copy log entry", - "copyLogEntry": "Copy log entry", + "fetchFailed": "لاگز حاصل کرنے میں ناکامی", + "copyFailed": "لاگ اندراج نقل کرنے میں ناکامی", + "copyLogEntry": "لاگ اندراج نقل کریں", "filterByLevel": "لاگ لیول کے لحاظ سے فلٹر کریں", "searchPlaceholder": "لاگز تلاش کریں…", "searchAria": "لاگ اندراجات تلاش کریں", @@ -4964,49 +4964,49 @@ "tokens": "ٹوکنز" }, "onboarding": { - "welcome": "Welcome", + "welcome": "خوش آمدید", "tiers": "ٹیرز", - "security": "Security", + "security": "سیکیورٹی", "test": "Test", - "ready": "Ready!", - "setPassword": "Set Password", - "addProvider": "Add your first provider", - "getStarted": "Get Started", - "skip": "Skip", - "skipWizard": "Skip wizard entirely", - "skipPassword": "Skip password setup", - "skipAndContinue": "Skip & Continue", - "passwordLabel": "Password", - "confirmPassword": "Confirm Password", - "enterPassword": "Enter password", - "confirmPasswordPlaceholder": "Confirm password", - "passwordsMismatch": "Passwords do not match", - "setupComplete": "Setup Complete!", - "goToDashboard": "Go to Dashboard →", - "welcomeDesc": "OmniRoute is your local AI API proxy. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "multiProvider": "Multi-Provider", - "usageTracking": "Usage Tracking", - "securityDesc": "Set a password to protect your dashboard, or skip for now.", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", - "providerDesc": "Connect your first AI provider. You can add more later.", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", - "apiKeyRequired": "API Key (required)", - "customUrlOptional": "Custom URL (optional)", - "testDesc": "Let's verify your provider connection works.", - "runTest": "Run Connection Test", - "testingConnection": "Testing connection...", - "connectionSuccessful": "Connection successful! Your provider is ready.", - "noProviderFound": "No provider found. You can add one from the dashboard later.", - "testFailed": "Test failed, but you can configure this later.", - "couldNotTest": "Could not test right now. You can test from the dashboard.", - "doneDesc": "You're all set! Your OmniRoute instance is configured and ready to proxy AI requests.", - "yourEndpoint": "Your endpoint:", - "continue": "Continue", - "retry": "Retry", - "failedSetPassword": "Failed to set password. Try again.", - "failedAddProvider": "Failed to add provider. Try again.", - "connectionError": "Connection error. Please try again.", - "provider": "Provider", + "ready": "تیار!", + "setPassword": "پاس ورڈ مقرر کریں", + "addProvider": "اپنا پہلا فراہم کنندہ شامل کریں", + "getStarted": "شروع کریں", + "skip": "چھوڑ دیں", + "skipWizard": "وزرڈ مکمل طور پر چھوڑ دیں", + "skipPassword": "پاس ورڈ سیٹ اپ چھوڑ دیں", + "skipAndContinue": "چھوڑیں اور جاری رکھیں", + "passwordLabel": "پاس ورڈ", + "confirmPassword": "پاس ورڈ کی تصدیق کریں", + "enterPassword": "پاس ورڈ درج کریں", + "confirmPasswordPlaceholder": "پاس ورڈ کی تصدیق کریں", + "passwordsMismatch": "پاس ورڈز مماثل نہیں ہیں", + "setupComplete": "سیٹ اپ مکمل ہو گیا!", + "goToDashboard": "ڈیش بورڈ پر جائیں →", + "welcomeDesc": "OmniRoute آپ کا مقامی AI API پراکسی ہے۔ یہ لوڈ بیلنسنگ، فیل اوور اور استعمال کی ٹریکنگ کے ساتھ درخواستوں کو متعدد AI فراہم کنندگان تک پہنچاتا ہے۔", + "multiProvider": "متعدد فراہم کنندگان", + "usageTracking": "استعمال کی ٹریکنگ", + "securityDesc": "اپنے ڈیش بورڈ کی حفاظت کے لیے پاس ورڈ مقرر کریں، یا فی الحال اسے چھوڑ دیں۔", + "securityDescSkipWarning": "⚠️ پاس ورڈ کے بغیر، آپ سیٹ اپ کے دوران فراہم کنندگان شامل نہیں کر سکیں گے۔ پاس ورڈ مقرر کرنے کے بعد آپ انہیں ڈیش بورڈ سے شامل کر سکتے ہیں۔", + "providerDesc": "اپنے پہلے AI فراہم کنندہ کو منسلک کریں۔ آپ بعد میں مزید شامل کر سکتے ہیں۔", + "providerRequiresPassword": "فراہم کنندگان شامل کرنے کے لیے پہلے پاس ورڈ مقرر کرنا ضروری ہے۔ براہِ کرم سیکیورٹی کے مرحلے پر واپس جا کر پاس ورڈ مقرر کریں، یا بعد میں ڈیش بورڈ سے فراہم کنندگان شامل کریں۔", + "apiKeyRequired": "API Key (درکار)", + "customUrlOptional": "حسبِ ضرورت URL (اختیاری)", + "testDesc": "آئیے تصدیق کریں کہ آپ کے فراہم کنندہ کا کنکشن کام کر رہا ہے۔", + "runTest": "کنکشن ٹیسٹ چلائیں", + "testingConnection": "کنکشن کی جانچ ہو رہی ہے...", + "connectionSuccessful": "کنکشن کامیاب رہا! آپ کا فراہم کنندہ تیار ہے۔", + "noProviderFound": "کوئی فراہم کنندہ نہیں ملا۔ آپ بعد میں ڈیش بورڈ سے ایک شامل کر سکتے ہیں۔", + "testFailed": "ٹیسٹ ناکام رہا، لیکن آپ اسے بعد میں ترتیب دے سکتے ہیں۔", + "couldNotTest": "اس وقت ٹیسٹ نہیں کیا جا سکا۔ آپ ڈیش بورڈ سے ٹیسٹ کر سکتے ہیں۔", + "doneDesc": "سب کچھ تیار ہے! آپ کا OmniRoute انسٹینس ترتیب دیا جا چکا ہے اور AI درخواستوں کو پراکسی کرنے کے لیے تیار ہے۔", + "yourEndpoint": "آپ کا اینڈ پوائنٹ:", + "continue": "جاری رکھیں", + "retry": "دوبارہ کوشش کریں", + "failedSetPassword": "پاس ورڈ مقرر نہیں کیا جا سکا۔ دوبارہ کوشش کریں۔", + "failedAddProvider": "فراہم کنندہ شامل نہیں کیا جا سکا۔ دوبارہ کوشش کریں۔", + "connectionError": "کنکشن میں خرابی۔ براہِ کرم دوبارہ کوشش کریں۔", + "provider": "فراہم کنندہ", "apiKeyHelp": "ایک API کلید AI خدمات کے لیے ایک پاس ورڈ ہے۔ اپنے فراہم کنندہ کی ویب سائٹ سے ایک حاصل کریں (جیسے، platform.openai.com، console.anthropic.com)۔", "tier": { "subtitle": "OmniRoute فراہم کنندگان کو تین درجوں میں منظم کرتا ہے لہذا روٹنگ سب سے زیادہ قابل اعتماد، سب سے کم لاگت والے راستے کو ترجیح دیتی ہے۔", @@ -5049,12 +5049,12 @@ } }, "providers": { - "title": "Providers", + "title": "فراہم کنندگان", "Account Deactivated": "اکاؤنٹ غیر فعال کر دیا گیا", "allProviders": "تمام فراہم کنندگان", "audioProviders": "آڈیو فراہم کرنے والے", "showFreeOnly": "صرف مفت", - "addProvider": "Add Provider", + "addProvider": "فراہم کنندہ شامل کریں", "addFirstProvider": "اپنا پہلا فراہم کنندہ شامل کریں۔", "addFirstProviderDesc": "OmniRoute کے ذریعے درخواستوں کی روٹنگ شروع کرنے کے لیے AI فراہم کنندہ سے رابطہ کریں۔ آپ مفت فراہم کنندگان، API کیز، یا OAuth اکاؤنٹس استعمال کر سکتے ہیں۔", "learnMore": "مزید جانیں", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "امپورٹ ہو رہا ہے…", "importFromFileImport": "{count} فراہم کنندگان امپورٹ کریں", "importFromFileResult": "{success} فراہم کنندگان امپورٹ ہو گئے ({failed} ناکام رہے)", + "importFromFileDownloadTemplate": "CSV ٹیمپلیٹ ڈاؤن لوڈ کریں", + "importFromFileMoreErrors": "+{count} مزید", + "importFromFileSchemaHint": "CSV کالمز کی ترتیب مقرر ہے: provider, name, apiKey, baseUrl (اختیاری), priority (اختیاری)۔ provider کالم میں موجودہ منظم فراہم کنندہ کی id یا پہلے سے رجسٹر شدہ OpenAI/Anthropic سے مطابقت رکھنے والے نوڈ کی id ہونی چاہیے — یہ درآمد نئے اینڈ پوائنٹ نوڈز تخلیق نہیں کرتی۔", "adaptaTutorial": { "title": "Adapta Web کو کیسے کنیکٹ کریں", "introPrefix": "Adapta کی توثیق Clerk کے ذریعے ہوتی ہے۔ ٹوکن", @@ -5103,31 +5106,31 @@ "tipPrefix": "یہ", "tipSuffix": "کوکی طویل مدتی ہوتی ہے، عام طور پر مہینوں کے لیے۔ آپ کو اسے صرف اس صورت میں تجدید کرنے کی ضرورت ہے اگر آپ سائن آؤٹ کرتے ہیں یا Adapta سیشن کو باطل کر دیتا ہے۔" }, - "editProvider": "Edit Provider", - "deleteProvider": "Delete Provider", - "noProviders": "No providers configured", - "modelAvailability": "Model Availability", - "accounts": "Accounts", - "newAccount": "New Account", - "deleteConfirm": "Are you sure you want to delete this provider?", - "testing": "Testing...", - "testConnection": "Test Connection", - "testSuccess": "Connection successful", - "testFailed": "Connection failed", - "available": "Available", - "cooldown": "Cooldown", - "unavailable": "Unavailable", - "unknown": "Unknown", + "editProvider": "فراہم کنندہ میں ترمیم کریں", + "deleteProvider": "فراہم کنندہ حذف کریں", + "noProviders": "کوئی فراہم کنندہ ترتیب نہیں دیا گیا", + "modelAvailability": "ماڈل کی دستیابی", + "accounts": "اکاؤنٹس", + "newAccount": "نیا اکاؤنٹ", + "deleteConfirm": "کیا آپ واقعی اس فراہم کنندہ کو حذف کرنا چاہتے ہیں؟", + "testing": "جانچ ہو رہی ہے...", + "testConnection": "کنکشن کی جانچ کریں", + "testSuccess": "کنکشن کامیاب رہا", + "testFailed": "کنکشن ناکام رہا", + "available": "دستیاب", + "cooldown": "وقفۂ بحالی", + "unavailable": "غیر دستیاب", + "unknown": "نامعلوم", "oauthLabel": "OAuth", - "compatibleLabel": "Compatible", + "compatibleLabel": "مطابقت پذیر", "chat": "Chat", "responses": "Responses", "messages": "Messages", - "oauthProviders": "OAuth Providers", - "freeProviders": "Free Providers", - "apiKeyProviders": "API Key Providers", - "compatibleProviders": "API Key Compatible Providers", - "testAll": "Test All", + "oauthProviders": "OAuth فراہم کنندگان", + "freeProviders": "مفت فراہم کنندگان", + "apiKeyProviders": "API Key فراہم کنندگان", + "compatibleProviders": "API Key سے مطابقت رکھنے والے فراہم کنندگان", + "testAll": "سب کی جانچ کریں", "reorderByAvailability": "دوبارہ ترتیب دیں", "reorderByAvailabilityTitle": "دستیابی کے مطابق کنکشنز کو دوبارہ ترتیب دیں", "reorderByAvailabilityError": "دستیابی کے مطابق کنکشنز کو دوبارہ ترتیب دینے میں ناکامی", @@ -5135,10 +5138,10 @@ "distributing": "تقسیم کیا جا رہا ہے...", "selectedCount": "{count, plural, one {# منتخب شدہ} other {# منتخب شدہ}}", "accountsCount": "{count, plural, one {# اکاؤنٹ} other {# اکاؤنٹس}}", - "testAllOAuth": "Test all OAuth connections", - "testAllFree": "Test all Free connections", - "testAllApiKey": "Test all API Key connections", - "testAllCompatible": "Test all Compatible connections", + "testAllOAuth": "تمام OAuth کنکشنز کی جانچ کریں", + "testAllFree": "تمام مفت کنکشنز کی جانچ کریں", + "testAllApiKey": "تمام API Key کنکشنز کی جانچ کریں", + "testAllCompatible": "تمام مطابقت پذیر کنکشنز کی جانچ کریں", "testAllModels": "تمام ماڈلز ٹیسٹ کریں", "testAllModelsConfirm": "تمام نظر آنے والے ماڈلز ٹیسٹ کریں؟ اگر خودکار طور پر چھپانا فعال ہے تو ناکام ماڈلز چھپ جائیں گے۔", "testingAllModels": "ٹیسٹ کیا جا رہا ہے {done}/{total}...", @@ -5154,9 +5157,9 @@ "filterByVisibility": "نمایانی کے لحاظ سے فلٹر کریں", "autoHideFailed": "ناکام ماڈلز کو خودکار طور پر چھپائیں", "autoHideFailedHint": "فعال ہونے پر، Test all عوامی کیٹلاگ جیسے /v1/models سے غیر عارضی ناکامیوں کو چھپا دیتا ہے۔ سنگل ماڈل ٹیسٹ کبھی بھی خودکار طور پر نہیں چھپتے۔", - "connected": "{count} Connected", - "errorCount": "{count} Error ({code})", - "errorCountNoCode": "{count} Error", + "connected": "{count} منسلک", + "errorCount": "{count} خرابی ({code})", + "errorCountNoCode": "{count} خرابی", "testAllCompleted": "{total} ماڈلز کا ٹیسٹ کیا گیا: {ok} ٹھیک، {failed} ناکام", "modelAutoHidden": "ماڈل {model} خودکار طور پر چھپا دیا گیا (ٹیسٹ ناکام رہا)", "filterAll": "سب", @@ -5164,9 +5167,9 @@ "filterHidden": "صرف پوشیدہ", "modelsHiddenCount": "{count} پوشیدہ", "warningCount": "{count} وارننگ", - "noConnections": "No connections", - "expiredBadge": "Expired", - "expiringSoonBadge": "Expiring Soon", + "noConnections": "کوئی کنکشن نہیں", + "expiredBadge": "میعاد ختم", + "expiringSoonBadge": "میعاد جلد ختم ہونے والی ہے", "freeTier": "مفت درجے", "freeTierAvailable": "مفت درجے دستیاب ہے۔", "hasFreeTooltip": "مفت ٹیئر دستیاب ہے", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "اس فراہم کنندہ کو فرسودہ کر دیا گیا ہے۔", "riskNotice": { "title": "جاری رکھنے سے پہلے", - "detailsTitle": "Usage caveats", + "detailsTitle": "استعمال کی احتیاطیں", "tooltip": "استعمال کے انتباہات والا فراہم کنندہ — تفصیلات کے لیے کلک کریں", "oauth": "یہ فراہم کنندہ آپ کے آفیشل پروڈکٹ سیشن/OAuth کا استعمال کرتا ہے، جو پراکسی/راؤٹر کے استعمال کے لیے مجاز نہیں ہے۔ ہم خود مختار ایجنٹ کے زیادہ استعمال (OpenCloud طرز، طویل کثیر مرحلہ جاتی فلو، بڑے بیچز) کی سفارش نہیں کرتے ہیں — اپ اسٹریم اکاؤنٹ کو محدود یا بین کر کے ردعمل ظاہر کر سکتا ہے۔ اپنے خطرے پر استعمال کریں۔", "webCookie": "یہ فراہم کنندہ آپ کے ویب سیشن کوکیز کے ذریعے توثیق کرتا ہے۔ اپ اسٹریم سروس کسی بھی وقت سیشن کو باطل کر سکتی ہے، جس کے لیے آپ کو دوبارہ لاگ ان کرنے کی ضرورت ہوگی۔ طویل غیر حاضر کارروائیوں کے لیے تجویز نہیں کی جاتی ہے۔ اپنے خطرے پر استعمال کریں۔", @@ -5188,95 +5191,95 @@ "cancel": "منسوخ کریں" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "{count} کنکشن نشان زد — حالیہ ناکامیاں زیادہ سے زیادہ {maxFailures}{lastFailureSuffix}۔ کنکشن کی حالت دیکھنے کے لیے کلک کریں۔", + "lastFailureSuffix": "(آخری ناکامی {time})", + "ariaLabel": "کنکشن کی حالت کی تفصیلات دیکھیں، {count} انتباہ" }, - "disabled": "Disabled", - "enableProvider": "Enable provider", - "disableProvider": "Disable provider", - "testResults": "Test Results", - "noCompatibleYet": "No compatible providers added yet", - "compatibleHint": "Use the buttons above to add OpenAI or Anthropic compatible endpoints", - "addOpenAICompatible": "Add OpenAI Compatible", - "addAnthropicCompatible": "Add Anthropic Compatible", - "addNewProvider": "Add New Provider", - "backToProviders": "Back to Providers", - "configureNewProvider": "Configure a new AI provider to use with your applications.", - "providerLabel": "Provider", - "selectProvider": "Select a provider", - "selectedProvider": "Selected provider", - "authMethod": "Authentication Method", - "apiKeyLabel": "API Key", - "apiKeyRequired": "API Key is required", - "selectProviderRequired": "Please select a provider", - "enterApiKey": "Enter your API key", - "apiKeySecure": "Your API key will be encrypted and stored securely.", - "oauth2Connect": "Connect with OAuth2", + "disabled": "غیر فعال", + "enableProvider": "فراہم کنندہ فعال کریں", + "disableProvider": "فراہم کنندہ غیر فعال کریں", + "testResults": "جانچ کے نتائج", + "noCompatibleYet": "ابھی تک کوئی مطابقت پذیر فراہم کنندہ شامل نہیں کیا گیا", + "compatibleHint": "OpenAI یا Anthropic سے مطابقت رکھنے والے اینڈ پوائنٹس شامل کرنے کے لیے اوپر موجود بٹن استعمال کریں", + "addOpenAICompatible": "OpenAI سے مطابقت رکھنے والا شامل کریں", + "addAnthropicCompatible": "Anthropic سے مطابقت رکھنے والا شامل کریں", + "addNewProvider": "نیا فراہم کنندہ شامل کریں", + "backToProviders": "فراہم کنندگان پر واپس جائیں", + "configureNewProvider": "اپنی ایپلیکیشنز کے ساتھ استعمال کے لیے ایک نیا AI فراہم کنندہ ترتیب دیں۔", + "providerLabel": "فراہم کنندہ", + "selectProvider": "فراہم کنندہ منتخب کریں", + "selectedProvider": "منتخب فراہم کنندہ", + "authMethod": "توثیق کا طریقہ", + "apiKeyLabel": "API کلید", + "apiKeyRequired": "API Key درکار ہے", + "selectProviderRequired": "براہ کرم فراہم کنندہ منتخب کریں", + "enterApiKey": "اپنی API key درج کریں", + "apiKeySecure": "آپ کی API کلید کو خفیہ کر کے محفوظ طریقے سے ذخیرہ کیا جائے گا۔", + "oauth2Connect": "OAuth2 کے ذریعے مربوط کریں", "oauth2Label": "OAuth2", - "oauth2Desc": "Connect your account using OAuth2 authentication.", - "displayName": "Display Name", - "displayNamePlaceholder": "e.g., Production API, Dev Environment", - "displayNameHint": "Optional. A friendly name to identify this configuration.", - "active": "Active", - "activeDescription": "Enable this provider for use in your applications", - "cancel": "Cancel", - "createProvider": "Create Provider", - "failedCreate": "Failed to create provider", - "errorOccurred": "An error occurred. Please try again.", - "modelStatus": "Model Status", - "showConfiguredOnly": "Configured only", - "allModelsOperational": "All models operational", - "modelsWithIssues": "{count} model(s) with issues", - "allModelsNormal": "All models are responding normally.", - "cooldownCleared": "Cooldown cleared for {model}", - "failedClearCooldown": "Failed to clear cooldown", - "loadingAvailability": "Loading model availability...", - "clearCooldown": "Clear", - "clearing": "Clearing...", - "until": "Until {time}", - "providerTestFailed": "Provider test failed", - "providerTestTimeout": "Provider test timed out — too many connections to test at once", + "oauth2Desc": "OAuth2 توثیق کا استعمال کرتے ہوئے اپنا اکاؤنٹ مربوط کریں۔", + "displayName": "ظاہری نام", + "displayNamePlaceholder": "مثلاً، Production API، Dev Environment", + "displayNameHint": "اختیاری۔ اس کنفیگریشن کی شناخت کے لیے ایک آسان نام۔", + "active": "فعال", + "activeDescription": "اپنی ایپلیکیشنز میں استعمال کے لیے اس فراہم کنندہ کو فعال کریں", + "cancel": "منسوخ کریں", + "createProvider": "فراہم کنندہ بنائیں", + "failedCreate": "فراہم کنندہ بنانے میں ناکامی", + "errorOccurred": "ایک خرابی پیش آگئی۔ براہ کرم دوبارہ کوشش کریں۔", + "modelStatus": "ماڈل کی حیثیت", + "showConfiguredOnly": "صرف کنفیگر کردہ", + "allModelsOperational": "تمام ماڈلز فعال ہیں", + "modelsWithIssues": "{count} ماڈل میں مسائل ہیں", + "allModelsNormal": "تمام ماڈلز معمول کے مطابق جواب دے رہے ہیں۔", + "cooldownCleared": "{model} کے لیے کول ڈاؤن ختم کر دیا گیا", + "failedClearCooldown": "کول ڈاؤن ختم کرنے میں ناکامی", + "loadingAvailability": "ماڈل کی دستیابی لوڈ کی جا رہی ہے...", + "clearCooldown": "صاف کریں", + "clearing": "صاف کیا جا رہا ہے...", + "until": "{time} تک", + "providerTestFailed": "فراہم کنندہ کا ٹیسٹ ناکام ہوگیا", + "providerTestTimeout": "فراہم کنندہ کے ٹیسٹ کا وقت ختم ہوگیا — ایک ساتھ ٹیسٹ کرنے کے لیے بہت زیادہ کنکشنز ہیں", "modeTest": "{mode} Test", - "passedCount": "{count} passed", - "failedCount": "{count} failed", - "testedCount": "{count} tested", + "passedCount": "{count} کامیاب", + "failedCount": "{count} ناکام", + "testedCount": "{count} ٹیسٹ کیے گئے", "millisecondsAbbr": "{value}ms", "okShort": "OK", - "errorShort": "ERROR", - "noActiveConnectionsInGroup": "No active connections found for this group.", - "allTestsPassed": "All {total} tests passed", - "testSummary": "{passed}/{total} passed, {failed} failed", - "nameLabel": "Name", + "errorShort": "خرابی", + "noActiveConnectionsInGroup": "اس گروپ کے لیے کوئی فعال کنکشن نہیں ملا۔", + "allTestsPassed": "تمام {total} ٹیسٹ کامیاب ہوئے", + "testSummary": "{passed}/{total} کامیاب، {failed} ناکام", + "nameLabel": "نام", "prefixLabel": "Prefix", - "baseUrlLabel": "Base URL", - "apiTypeLabel": "API Type", - "prefixHint": "Required. Unique prefix for model names.", - "nameHint": "Required. A friendly label for this node.", - "baseUrlHint": "Required. Provider API base URL.", + "baseUrlLabel": "بنیادی URL", + "apiTypeLabel": "API کی قسم", + "prefixHint": "لازمی۔ ماڈل کے ناموں کے لیے منفرد سابقہ۔", + "nameHint": "لازمی۔ اس نوڈ کے لیے ایک آسان لیبل۔", + "baseUrlHint": "لازمی۔ فراہم کنندہ کی API کا بنیادی URL۔", "iconUrlLabel": "آئیکن URL", "iconUrlHint": "اختیاری۔ تصویر کا URL جو اس فراہم کنندہ کے آئیکن کے طور پر دکھایا گیا ہے۔", "iconUrlInvalid": "غلط آئیکن یو آر ایل۔ http(s):// یا data:image/*;base64 یو آر ایل استعمال کریں۔", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "یومیہ کوٹے کی ری سیٹ ٹائم زون", + "dailyQuotaResetTimezoneHint": "اختیاری IANA ٹائم زون، جو اس وقت استعمال ہوتا ہے جب اپ اسٹریم X-RateLimit-Reset فراہم نہ کرے۔ مختصر کول ڈاؤن برقرار رکھنے کے لیے اسے خالی چھوڑ دیں۔", + "dailyQuotaResetHourLabel": "روزانہ کوٹہ ری سیٹ ہونے کا گھنٹہ", + "dailyQuotaResetHourHint": "اوپر دیے گئے ٹائم زون میں مقامی گھنٹہ 0-23۔ خالی رکھنے کا مطلب ہے کہ نوڈ کی سطح پر کوئی گھڑی نہیں۔", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", - "validateConnection": "Validate Connection", - "validating": "Validating...", - "connectionValid": "Connection is valid!", - "connectionFailed": "Connection failed. Check URL and key.", - "testKeyLabel": "Test API Key", - "testKeyPlaceholder": "sk-... (for validation only)", - "providerNotFound": "Provider not found", - "deleteConnectionConfirm": "Delete this connection?", + "validateConnection": "کنکشن کی توثیق کریں", + "validating": "توثیق کی جا رہی ہے...", + "connectionValid": "کنکشن درست ہے!", + "connectionFailed": "کنکشن ناکام ہو گیا۔ URL اور کلید چیک کریں۔", + "testKeyLabel": "API کلید کی جانچ کریں", + "testKeyPlaceholder": "sk-... (صرف توثیق کے لیے)", + "providerNotFound": "فراہم کنندہ نہیں ملا", + "deleteConnectionConfirm": "یہ کنکشن حذف کریں؟", "deleteConnectionConfirmNamed": "کیا آپ واقعی {name} کو حذف کرنا چاہتے ہیں؟ یہ عمل واپس نہیں لیا جا سکتا۔", - "batchDeleteSelected": "Delete Selected ({count})", - "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.", - "batchDeleteSuccess": "Deleted {count} connection(s)", + "batchDeleteSelected": "منتخب کردہ حذف کریں ({count})", + "batchDeleteConfirm": "{count} کنکشن حذف کریں؟ اس عمل کو واپس نہیں لیا جا سکتا۔", + "batchDeleteSuccess": "{count} کنکشن حذف کر دیے گئے", "batchActivateSelected": "فعال کریں", "batchDeactivateSelected": "غیر فعال کریں", "batchRetestSelected": "دوبارہ ٹیسٹ کریں", @@ -5292,32 +5295,32 @@ "filterError": "خرابی", "filterBanned": "پابندی شدہ", "filterCreditsExhausted": "کریڈٹ ختم", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "اکاؤنٹس تلاش کریں…", "noFilteredConnections": "کوئی بھی کنکشن موجودہ فلٹر سے مماثل نہیں ہے۔", - "failedSetAlias": "Failed to set alias", + "failedSetAlias": "عرف مقرر کرنے میں ناکامی", "setAliasSuccess": "Alias {alias} سیٹ ہو گیا", "deleteAliasSuccess": "Alias {alias} حذف کر دیا گیا", - "failedSaveConnection": "Failed to save connection", - "failedSaveConnectionRetry": "Failed to save connection. Please try again.", - "failedRetestConnection": "Failed to retest connection", - "deleteCompatibleNodeConfirm": "Delete this {type} Compatible node?", - "anthropicCompatibleDetails": "Anthropic Compatible Details", - "openaiCompatibleDetails": "OpenAI Compatible Details", + "failedSaveConnection": "کنکشن محفوظ کرنے میں ناکامی", + "failedSaveConnectionRetry": "کنکشن محفوظ کرنے میں ناکامی۔ براہ کرم دوبارہ کوشش کریں۔", + "failedRetestConnection": "کنکشن کی دوبارہ جانچ میں ناکامی", + "deleteCompatibleNodeConfirm": "یہ {type} ہم آہنگ نوڈ حذف کریں؟", + "anthropicCompatibleDetails": "Anthropic سے ہم آہنگ کنکشن کی تفصیلات", + "openaiCompatibleDetails": "OpenAI سے ہم آہنگ کنکشن کی تفصیلات", "messagesApi": "Messages API", "responsesApi": "Responses API", - "embeddings": "Embeddings", - "audioTranscriptions": "Audio Transcriptions", - "audioSpeech": "Audio Speech", - "imagesGenerations": "Images Generations", + "embeddings": "ایمبیڈنگز", + "audioTranscriptions": "آڈیو ٹرانسکرپشنز", + "audioSpeech": "آڈیو اسپیچ", + "imagesGenerations": "تصاویر کی تخلیق", "chatCompletions": "Chat Completions", - "importingModels": "Importing...", - "importFromModels": "Import from /models", - "modelsImported": "{count} models imported", - "allModelsAlreadyImported": "All models already imported", - "noNewModelsToImport": "No new models to import — all models are already in the registry or custom models list", - "skippingExistingModels": "Skipping {count} existing models", - "autoSync": "Auto-Sync", - "autoSyncShort": "Sync", + "importingModels": "درآمد کیا جا رہا ہے...", + "importFromModels": "/models سے درآمد کریں", + "modelsImported": "{count} ماڈلز درآمد کر لیے گئے", + "allModelsAlreadyImported": "تمام ماڈلز پہلے ہی درآمد کیے جا چکے ہیں", + "noNewModelsToImport": "درآمد کرنے کے لیے کوئی نیا ماڈل نہیں — تمام ماڈلز پہلے ہی رجسٹری یا حسبِ ضرورت ماڈلز کی فہرست میں موجود ہیں", + "skippingExistingModels": "پہلے سے موجود {count} ماڈلز چھوڑے جا رہے ہیں", + "autoSync": "خودکار مطابقت پذیری", + "autoSyncShort": "مطابقت پذیری", "autoFetchModels": "خودکار طور پر اپ اسٹریم ماڈلز حاصل کریں", "autoFetchModelsTooltip": "جب ضرورت ہو تو اوپر کے ماڈلز کو حاصل کریں اور کیش کریں", "autoFetchModelsEnabled": "اپ اسٹریم ماڈل خودکار حاصل کرنا فعال ہے", @@ -5329,52 +5332,52 @@ "resetToUpstreamDefaults": "اپ اسٹریم ڈیفالٹس بحال کریں", "resetToUpstreamDefaultsSuccess": "اپ اسٹریم ماڈل کے ڈیفالٹس بحال کر دیے گئے ہیں", "resetToUpstreamDefaultsFailed": "اپ اسٹریم ماڈل کے ڈیفالٹس کو بحال کرنے میں ناکامی", - "autoSyncTooltip": "Automatically refresh model list every 24h (configurable via MODEL_SYNC_INTERVAL_HOURS)", - "autoSyncEnabled": "Auto-sync enabled — models will refresh periodically", - "autoSyncDisabled": "Auto-sync disabled", - "autoSyncToggleFailed": "Failed to toggle auto-sync", - "autoSyncPartialFailure": "Auto-sync updated for some connections, but not all", - "clearAllModels": "Clear All Models", - "clearAllModelsConfirm": "Are you sure you want to remove all models for this provider? This cannot be undone.", - "clearAllModelsSuccess": "All models cleared", - "clearAllModelsFailed": "Failed to clear models", - "addConnectionToImport": "Add a connection to enable importing.", - "noModelsConfigured": "No models configured", - "connectionCount": "{count} connection(s)", - "fetchingModels": "Fetching available models...", - "failedFetchModels": "Failed to fetch models", + "autoSyncTooltip": "ہر 24 گھنٹے بعد ماڈلز کی فہرست خودکار طور پر تازہ کریں (MODEL_SYNC_INTERVAL_HOURS کے ذریعے قابلِ ترتیب)", + "autoSyncEnabled": "خودکار مطابقت پذیری فعال ہے — ماڈلز وقتاً فوقتاً تازہ ہوتے رہیں گے", + "autoSyncDisabled": "خودکار مطابقت پذیری غیر فعال ہے", + "autoSyncToggleFailed": "خودکار مطابقت پذیری تبدیل کرنے میں ناکامی", + "autoSyncPartialFailure": "کچھ کنکشنز کے لیے خودکار مطابقت پذیری اپ ڈیٹ ہو گئی، مگر سب کے لیے نہیں", + "clearAllModels": "تمام ماڈلز صاف کریں", + "clearAllModelsConfirm": "کیا آپ واقعی اس فراہم کنندہ کے تمام ماڈلز ہٹانا چاہتے ہیں؟ اس عمل کو واپس نہیں لیا جا سکتا۔", + "clearAllModelsSuccess": "تمام ماڈلز صاف کر دیے گئے", + "clearAllModelsFailed": "ماڈلز صاف کرنے میں ناکامی", + "addConnectionToImport": "درآمد کو فعال کرنے کے لیے ایک کنکشن شامل کریں۔", + "noModelsConfigured": "کوئی ماڈل ترتیب نہیں دیا گیا", + "connectionCount": "{count} کنکشن", + "fetchingModels": "دستیاب ماڈلز حاصل کیے جا رہے ہیں...", + "failedFetchModels": "ماڈلز حاصل کرنے میں ناکامی", "noFreeModelsFound": "اس فراہم کنندہ کے لیے کوئی مفت ماڈل نہیں ملا — کچھ بھی درآمد نہیں کیا گیا۔", "fetchModelsSuccess": "{count} نئے ماڈلز ملے", "fetchModelsFailed": "ماڈلز خودکار طور پر حاصل نہیں کیے جا سکے (آپ ترتیبات سے دوبارہ کوشش کر سکتے ہیں)", - "noModelsFound": "No models found", - "importFailed": "Import failed", - "noNewModelsAdded": "No new models were added.", + "noModelsFound": "کوئی ماڈل نہیں ملا", + "importFailed": "درآمد ناکام ہو گئی", + "noNewModelsAdded": "کوئی نیا ماڈل شامل نہیں کیا گیا۔", "adding": "Adding...", - "close": "Close", - "importingModelsTitle": "Importing Models", - "copyModel": "Copy model", - "filterModels": "Filter models...", + "close": "بند کریں", + "importingModelsTitle": "ماڈلز درآمد کیے جا رہے ہیں", + "copyModel": "ماڈل نقل کریں", + "filterModels": "ماڈلز فلٹر کریں...", "testAllRateLimited": "شرح کی حد پوری ہو گئی، جلد روک دیا گیا", "hideFailedAuto": "ناکام ماڈلز کو خودکار طور پر چھپائیں", - "selectAllModels": "Select all", + "selectAllModels": "سب منتخب کریں", "hideAllModels": "سبھی چھپائیں", - "modelsActive": "Active", - "showModel": "Show model", - "hideModel": "Hide model", - "removeModel": "Remove model", - "rateLimitProtected": "Protected", - "rateLimitUnprotected": "Unprotected", + "modelsActive": "فعال", + "showModel": "ماڈل دکھائیں", + "hideModel": "ماڈل چھپائیں", + "removeModel": "ماڈل ہٹائیں", + "rateLimitProtected": "محفوظ", + "rateLimitUnprotected": "غیر محفوظ", "providerQuotaShort": "کوٹہ", "hideConnectionFromProviderQuota": "اس اکاؤنٹ کو فراہم کنندہ کے کوٹہ سے چھپائیں", "showConnectionInProviderQuota": "اس اکاؤنٹ کو فراہم کنندہ کے کوٹہ میں دکھائیں", "quotaVisibilityUpdateFailed": "فراہم کنندہ کے کوٹہ کی مرئیت کو اپ ڈیٹ کرنے میں ناکامی", - "enableRateLimitProtection": "Click to enable rate limit protection", - "disableRateLimitProtection": "Click to disable rate limit protection", + "enableRateLimitProtection": "ریٹ لمٹ تحفظ فعال کرنے کے لیے کلک کریں", + "disableRateLimitProtection": "ریٹ لمٹ تحفظ غیر فعال کرنے کے لیے کلک کریں", "testAllProgress": "جانچ شدہ {done}/{total}", "testAllFailedHidden": "{count} ناکام ماڈلز چھپا دیے گئے", "testAllDone": "تمام ماڈلز کی جانچ ہو گئی", - "productionKey": "Production Key", - "enterNewApiKey": "Enter new API key", + "productionKey": "پروڈکشن کلید", + "enterNewApiKey": "نئی API کلید درج کریں", "codexApplyModalTitle": "لوکل کوڈیکس پر اپلائی کریں۔", "codexApplyTargetLabel": "ہدف کا راستہ", "codexApplyBackupLabel": "بیک اپس", @@ -5386,77 +5389,77 @@ "bulkAddFormatHint": "فی لائن ایک کلید۔ فارمیٹ: نام|apiKey یا صرف apiKey (انڈیکس کے ذریعہ خودکار نام)۔", "bulkValidateKeys": "محفوظ کرنے سے پہلے ہر کلید کی توثیق کریں (آہستہ)", "bulkAddAllKeys": "تمام چابیاں شامل کریں۔", - "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}", - "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}", - "optional": "Optional", + "bulkAddedCount": "{count, plural, one {# کلید شامل کی گئی} other {# کلیدیں شامل کی گئیں}}", + "bulkFailedCount": "{count, plural, one {# ناکام} other {# ناکام}}", + "optional": "اختیاری", "anthropicCompatibleName": "Anthropic Compatible", "openaiCompatibleName": "OpenAI Compatible", "compatibleDefaultModelLabel": "ڈیفالٹ ماڈل", "compatibleDefaultModelHint": "ماڈل ID بالکل اسی طرح درج کریں جس طرح آپ کا ہم آہنگ اینڈ پوائنٹ توقع کرتا ہے۔ یہ ماڈل کنکشن کے ڈیفالٹ کے طور پر محفوظ ہو جائے گا۔", - "failedImportModels": "Failed to import models", - "noModelsReturnedFromEndpoint": "No models returned from /models endpoint.", - "importingModelsProgress": "Importing {current} of {total} models...", - "foundModelsStartingImport": "Found {count} models. Starting import...", - "importingModelById": "Importing {modelId}...", - "importSuccessCount": "Successfully imported {count, plural, one {# model} other {# models}}!", - "noNewModelsAddedExisting": "No new models were added (all already exist).", - "importDoneCount": "✓ Done! {count, plural, one {# model imported.} other {# models imported.}}", - "unexpectedErrorOccurred": "An unexpected error occurred", + "failedImportModels": "ماڈلز درآمد کرنے میں ناکامی", + "noModelsReturnedFromEndpoint": "/models endpoint سے کوئی ماڈل موصول نہیں ہوا۔", + "importingModelsProgress": "{total} میں سے {current} ماڈلز درآمد کیے جا رہے ہیں...", + "foundModelsStartingImport": "{count} ماڈلز ملے۔ درآمد شروع کی جا رہی ہے...", + "importingModelById": "{modelId} درآمد کیا جا رہا ہے...", + "importSuccessCount": "{count, plural, one {# ماڈل کامیابی سے درآمد ہو گیا!} other {# ماڈلز کامیابی سے درآمد ہو گئے!}}", + "noNewModelsAddedExisting": "کوئی نیا ماڈل شامل نہیں کیا گیا (سب پہلے سے موجود ہیں)۔", + "importDoneCount": "✓ مکمل! {count, plural, one {# ماڈل درآمد ہو گیا۔} other {# ماڈلز درآمد ہو گئے۔}}", + "unexpectedErrorOccurred": "ایک غیر متوقع خرابی پیش آ گئی", "getApiKey": "API کی چابی حاصل کریں", "getApiKeyDescription": "API کی چابی کے لیے رجسٹر یا سائن اپ کریں", - "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}", + "connectionCountLabel": "{count, plural, one {# کنکشن} other {# کنکشنز}}", "messagesPath": "messages", "responsesPath": "responses", "chatCompletionsPath": "chat/completions", - "add": "Add", - "edit": "Edit", - "delete": "Delete", + "add": "شامل کریں", + "edit": "ترمیم کریں", + "delete": "حذف کریں", "anthropic": "Anthropic", "openai": "OpenAI", - "singleConnectionPerCompatible": "Only one connection is allowed per compatible node. Add another node if you need more connections.", - "connections": "Connections", - "providerProxyTitleConfigured": "Provider proxy: {host}", - "configured": "configured", - "providerProxyConfigureHint": "Configure proxy for all connections of this provider", - "providerProxy": "Provider Proxy", - "repairEnv": "Repair env", - "repairEnvWorking": "Repairing...", - "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.", - "repairEnvSuccess": "OAuth defaults restored", - "repairEnvFailed": "Failed to repair .env", - "noConnectionsYet": "No connections yet", - "addFirstConnectionHint": "Add your first connection to get started", - "addConnection": "Add Connection", - "availableModels": "Available Models", - "builtInModels": "Built-in models", - "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.", - "pageAutoRefresh": "Page will refresh automatically...", - "statusDisabled": "disabled", - "statusConnected": "connected", - "statusRuntimeIssue": "runtime issue", - "statusAuthFailed": "auth failed", - "statusRateLimited": "rate limited", - "statusNetworkIssue": "network issue", - "statusTestUnsupported": "test unsupported", - "statusUnavailable": "unavailable", - "statusFailed": "failed", - "statusError": "error", - "oauthAccount": "OAuth Account", - "errorTypeRuntime": "Local runtime", - "errorTypeUpstreamAuth": "Upstream auth", - "errorTypeMissingCredential": "Missing credential", - "errorTypeRefreshFailed": "Refresh failed", - "errorTypeTokenExpired": "Token expired", - "errorTypeRateLimited": "Rate limited", - "errorTypeUpstreamUnavailable": "Upstream unavailable", - "errorTypeNetworkError": "Network error", - "errorTypeTestUnsupported": "Test unsupported", - "errorTypeUpstreamError": "Upstream error", + "singleConnectionPerCompatible": "ہر مطابقت پذیر نوڈ کے لیے صرف ایک کنکشن کی اجازت ہے۔ اگر آپ کو مزید کنکشنز درکار ہوں تو ایک اور نوڈ شامل کریں۔", + "connections": "کنکشنز", + "providerProxyTitleConfigured": "فراہم کنندہ پراکسی: {host}", + "configured": "ترتیب شدہ", + "providerProxyConfigureHint": "اس فراہم کنندہ کے تمام کنکشنز کے لیے پراکسی ترتیب دیں", + "providerProxy": "فراہم کنندہ پراکسی", + "repairEnv": "env کی مرمت کریں", + "repairEnvWorking": "مرمت جاری ہے...", + "repairEnvHint": "موجودہ اقدار کو اوور رائٹ کیے بغیر گمشدہ OAuth ڈیفالٹس کو .env میں بحال کریں۔", + "repairEnvSuccess": "OAuth ڈیفالٹس بحال ہو گئے", + "repairEnvFailed": ".env کی مرمت ناکام ہو گئی", + "noConnectionsYet": "ابھی تک کوئی کنکشن نہیں ہے", + "addFirstConnectionHint": "شروع کرنے کے لیے اپنا پہلا کنکشن شامل کریں", + "addConnection": "کنکشن شامل کریں", + "availableModels": "دستیاب ماڈلز", + "builtInModels": "بلٹ اِن ماڈلز", + "builtInModelsHint": "اس فراہم کنندہ کے لیے رجسٹری ماڈلز۔ مطابقت کے اختیارات مقرر کرنے کے لیے پنسل استعمال کریں۔", + "pageAutoRefresh": "صفحہ خودکار طور پر ریفریش ہو جائے گا...", + "statusDisabled": "غیر فعال", + "statusConnected": "منسلک", + "statusRuntimeIssue": "رن ٹائم کا مسئلہ", + "statusAuthFailed": "توثیق ناکام", + "statusRateLimited": "شرح محدود", + "statusNetworkIssue": "نیٹ ورک کا مسئلہ", + "statusTestUnsupported": "ٹیسٹ غیر معاون", + "statusUnavailable": "دستیاب نہیں", + "statusFailed": "ناکام", + "statusError": "خرابی", + "oauthAccount": "OAuth اکاؤنٹ", + "errorTypeRuntime": "مقامی رن ٹائم", + "errorTypeUpstreamAuth": "اپ اسٹریم توثیق", + "errorTypeMissingCredential": "سند موجود نہیں", + "errorTypeRefreshFailed": "ریفریش ناکام", + "errorTypeTokenExpired": "ٹوکن کی میعاد ختم ہو گئی", + "errorTypeRateLimited": "شرح محدود", + "errorTypeUpstreamUnavailable": "اپ اسٹریم دستیاب نہیں", + "errorTypeNetworkError": "نیٹ ورک کی خرابی", + "errorTypeTestUnsupported": "ٹیسٹ غیر معاون", + "errorTypeUpstreamError": "اپ اسٹریم خرابی", "errorTypeCreditsExhausted": "کوئی کریڈٹ نہیں", "errorTypeBanned": "403 ممنوع", - "proxySourceGlobal": "Global", - "proxySourceProvider": "Provider", - "proxySourceKey": "Key", + "proxySourceGlobal": "عالمی", + "proxySourceProvider": "فراہم کنندہ", + "proxySourceKey": "کلید", "proxyConfiguredBySource": "Proxy ({source}): {host}", "proxyOn": "پراکسی آن", "proxyOff": "براہ راست (پراکسی بائی پاس کریں)", @@ -5468,31 +5471,31 @@ "perKeyProxyDisabledTitle": "اس فراہم کنندہ کے لیے فی کلید پراکسی تفویض غیر فعال ہے", "autoPriority": "Auto: {priority}", "proxy": "Proxy", - "retestAuthentication": "Retest authentication", - "retest": "Retest", - "disableConnection": "Disable connection", - "enableConnection": "Enable connection", - "reauthenticateConnection": "Re-authenticate this connection", - "proxyConfig": "Proxy config", - "aliasExistsAlert": "Alias \"{alias}\" already exists. Please use a different model or edit existing alias.", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", - "openRouterAnyModelHint": "OpenRouter supports any model. Add models and create aliases for quick access.", - "modelIdFromOpenRouter": "Model ID (from OpenRouter)", + "retestAuthentication": "توثیق دوبارہ جانچیں", + "retest": "دوبارہ جانچیں", + "disableConnection": "کنکشن غیر فعال کریں", + "enableConnection": "کنکشن فعال کریں", + "reauthenticateConnection": "اس کنکشن کی دوبارہ توثیق کریں", + "proxyConfig": "پراکسی کنفیگریشن", + "aliasExistsAlert": "عرف \"{alias}\" پہلے سے موجود ہے۔ براہِ کرم کوئی مختلف ماڈل استعمال کریں یا موجودہ عرف میں ترمیم کریں۔", + "aliasInputPlaceholder": "عرف کا نام", + "clickToSetAlias": "عرف مقرر کرنے کے لیے کلک کریں", + "clickToEditAlias": "عرف: {alias} (ترمیم کے لیے کلک کریں)", + "openRouterAnyModelHint": "OpenRouter کسی بھی ماڈل کو سپورٹ کرتا ہے۔ فوری رسائی کے لیے ماڈلز شامل کریں اور عرف بنائیں۔", + "modelIdFromOpenRouter": "ماڈل ID (OpenRouter سے)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", - "customModels": "Custom Models", - "customModelsHint": "Add model IDs not in the default list. These will be available for routing.", - "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)", - "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)", - "compatAdjustmentsTitle": "Compatibility", - "compatButtonLabel": "Compatibility", - "compatToolIdShort": "Tool ID 9", - "compatDeveloperShort": "Developer role", - "compatDoNotPreserveDeveloper": "Do not preserve developer role", - "compatBadgeNoPreserve": "No preserve", - "compatProtocolLabel": "Client request protocol", - "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).", + "customModels": "حسبِ ضرورت ماڈلز", + "customModelsHint": "وہ ماڈل IDs شامل کریں جو ڈیفالٹ فہرست میں نہیں ہیں۔ یہ روٹنگ کے لیے دستیاب ہوں گے۔", + "normalizeToolCallIdLabel": "ٹول کال IDs کو 9 حروف پر معیاری بنائیں (مثلاً Mistral)", + "preserveDeveloperRoleLabel": "OpenAI Responses کا developer کردار برقرار رکھیں (اسے system سے میپ نہ کریں)", + "compatAdjustmentsTitle": "مطابقت", + "compatButtonLabel": "مطابقت", + "compatToolIdShort": "ٹول ID 9", + "compatDeveloperShort": "Developer کردار", + "compatDoNotPreserveDeveloper": "Developer کردار برقرار نہ رکھیں", + "compatBadgeNoPreserve": "برقرار نہ رکھیں", + "compatProtocolLabel": "کلائنٹ درخواست پروٹوکول", + "compatProtocolHint": "یہ اختیارات اس وقت لاگو ہوتے ہیں جب OmniRoute اس درخواست کی ساخت (OpenAI Chat، Responses API، یا Anthropic Messages) کا پتہ لگاتا ہے۔", "compatProtocolOpenAI": "OpenAI Chat Completions", "compatProtocolOpenAIResponses": "OpenAI Responses API", "compatProtocolClaude": "Anthropic Messages", @@ -5534,84 +5537,84 @@ "interceptFetchHint": "نیٹو web_fetch ٹول کالز کو OmniRoute کے /v1/web/fetch پر دوبارہ لکھیں۔", "interceptionLoadError": "انٹرسیپشن کی ترتیبات لوڈ کرنے میں ناکامی: {error}", "interceptionSaveError": "انٹرسیپشن کی ترتیبات محفوظ کرنے میں ناکامی: {error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", - "compatUpstreamHeadersLabel": "Extra upstream headers", - "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.", - "compatUpstreamHeaderName": "Header name", - "compatUpstreamHeaderValue": "Value", - "compatUpstreamAddRow": "Add header", - "compatUpstreamRemoveRow": "Remove row", - "compatBadgeUpstreamHeaders": "Headers", - "perModelQuotaLabel": "Per-Model Quota", - "perModelQuotaDescription": "When enabled, 429/404 errors only lock the specific model, not the entire connection. Use for providers with per-model rate limits (e.g., ModelScope).", + "ccAliasSectionTitle": "Claude Code (claude/…) میں ظاہر کریں", + "ccAliasSectionHint": "اس فراہم کنندہ کے ماڈلز کو claude/<provider>/<model> مرر IDs کے تحت مشتہر کریں تاکہ Claude Code کی گیٹ وے ماڈل دریافت انہیں فہرست میں شامل کر سکے۔ ڈیفالٹ طور پر بند — اسے فعال کرنے سے تمام کلائنٹس کے لیے کیٹلاگ اندراجات دگنے ہو جاتے ہیں۔", + "ccAliasProviderLevelLabel": "فراہم کنندہ کا ڈیفالٹ", + "ccAliasModelOverridesLabel": "فی ماڈل اوور رائیڈز", + "ccAliasModelOverrideAriaLabel": "{modelId} کے لیے اوور رائیڈ", + "ccAliasStateInherit": "وراثت میں لیں", + "ccAliasStateOn": "فعال", + "ccAliasStateOff": "غیر فعال", + "ccAliasAddModelPlaceholder": "ماڈل ID (مثلاً gpt-4o)", + "ccAliasAddModelButton": "اوور رائیڈ شامل کریں", + "ccAliasLoadError": "دریافت-عرف کی ترتیبات لوڈ کرنے میں ناکامی: {error}", + "ccAliasSaveError": "ڈسکوری-الیاس کی ترتیب محفوظ کرنے میں ناکامی: {error}", + "compatUpstreamHeadersLabel": "اضافی اپ اسٹریم ہیڈرز", + "compatUpstreamHeadersHint": "اعلیٰ اختیارات والی ترتیب — اس کا اعتماد کا درجہ فراہم کنندہ کی API اسناد میں ترمیم کے برابر ہے؛ اسے صرف قابلِ اعتماد منتظمین استعمال کریں۔ OmniRoute کے فراہم کنندہ کی API کلید سے تصدیق شامل کرنے کے بعد انہیں ضم کیا جاتا ہے۔ اگر کسی حسبِ ضرورت ہیڈر کا نام پہلے سے موجود ہیڈر کے نام جیسا ہو (مثلاً Authorization)، تو آپ کی قدر خودکار طور پر بنائے گئے ہیڈر (بشمول Bearer ٹوکن) کو مکمل طور پر بدل دیتی ہے — اپ اسٹریم کو صرف وہی نظر آتا ہے جو آپ نے درج کیا، ترتیبات میں موجود کلید نہیں۔ غلط ترتیب 401 خرابی یا اپ اسٹریم تصدیق میں تعطل کا باعث بن سکتی ہے۔ ہر ہیڈر کے لیے ایک قطار استعمال کریں (مثلاً بعض گیٹ ویز کے لیے اضافی Authentication)۔ پیش منظر دیکھنے کے لیے قدر پر ماؤس لے جائیں یا اسے فوکس کریں۔ فوکس ختم ہونے، باہر کلک کرنے یا اس پینل کو بند کرنے پر محفوظ ہو جاتا ہے۔", + "compatUpstreamHeaderName": "ہیڈر کا نام", + "compatUpstreamHeaderValue": "قدر", + "compatUpstreamAddRow": "ہیڈر شامل کریں", + "compatUpstreamRemoveRow": "قطار ہٹائیں", + "compatBadgeUpstreamHeaders": "ہیڈرز", + "perModelQuotaLabel": "فی ماڈل کوٹہ", + "perModelQuotaDescription": "فعال ہونے پر، 429/404 خرابیاں پورے کنکشن کے بجائے صرف مخصوص ماڈل کو مقفل کرتی ہیں۔ فی ماڈل شرح کی حدود والے فراہم کنندگان (مثلاً ModelScope) کے لیے استعمال کریں۔", "importFreeModelsOnlyLabel": "صرف مفت ماڈلز امپورٹ کریں", "importFreeModelsOnlyHint": "فعال ہونے پر، صرف اس فراہم کنندہ کے مفت ماڈلز امپورٹ کیے جاتے ہیں۔ ادا شدہ ماڈلز کو چھوڑ دیا جاتا ہے۔", - "perModelQuotaToggle": "Per-Model Quota Toggle", - "modelId": "Model ID", - "customModelPlaceholder": "e.g. gpt-4.5-turbo", - "loading": "Loading...", - "removeCustomModel": "Remove custom model", - "noCustomModels": "No custom models added yet.", - "allSuggestedAliasesExist": "All suggested aliases already exist. Please choose a different model or remove conflicting aliases.", - "failedSaveCustomModel": "Failed to save custom model", - "modelAddedSuccess": "Model {modelId} added successfully", - "failedAddModelTryAgain": "Failed to add model. Please try again.", - "failedSaveImportedModel": "Failed to save imported model to custom database", - "failedImportModelsTryAgain": "Failed to import models. Please try again.", - "failedRemoveModelFromDatabase": "Failed to remove model from database", - "modelRemovedSuccess": "Model removed successfully", - "failedDeleteModelTryAgain": "Failed to delete model. Please try again.", - "compatibleModelsDescription": "Add {type}-compatible models manually or import them from the /models endpoint.", + "perModelQuotaToggle": "فی ماڈل کوٹہ ٹوگل", + "modelId": "ماڈل ID", + "customModelPlaceholder": "مثلاً gpt-4.5-turbo", + "loading": "لوڈ ہو رہا ہے...", + "removeCustomModel": "حسبِ ضرورت ماڈل ہٹائیں", + "noCustomModels": "ابھی تک کوئی حسبِ ضرورت ماڈل شامل نہیں کیا گیا۔", + "allSuggestedAliasesExist": "تمام تجویز کردہ عرف پہلے سے موجود ہیں۔ براہِ کرم کوئی مختلف ماڈل منتخب کریں یا متصادم عرف ہٹا دیں۔", + "failedSaveCustomModel": "حسبِ ضرورت ماڈل محفوظ کرنے میں ناکامی", + "modelAddedSuccess": "ماڈل {modelId} کامیابی سے شامل کر دیا گیا", + "failedAddModelTryAgain": "ماڈل شامل کرنے میں ناکامی۔ براہِ کرم دوبارہ کوشش کریں۔", + "failedSaveImportedModel": "درآمد شدہ ماڈل کو حسبِ ضرورت ڈیٹابیس میں محفوظ کرنے میں ناکامی", + "failedImportModelsTryAgain": "ماڈلز درآمد کرنے میں ناکامی۔ براہِ کرم دوبارہ کوشش کریں۔", + "failedRemoveModelFromDatabase": "ڈیٹابیس سے ماڈل ہٹانے میں ناکامی", + "modelRemovedSuccess": "ماڈل کامیابی سے ہٹا دیا گیا", + "failedDeleteModelTryAgain": "ماڈل حذف کرنے میں ناکامی۔ براہِ کرم دوبارہ کوشش کریں۔", + "compatibleModelsDescription": "{type} سے مطابقت رکھنے والے ماڈلز دستی طور پر شامل کریں یا انہیں /models اینڈ پوائنٹ سے درآمد کریں۔", "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229", "openaiCompatibleModelPlaceholder": "gpt-4o", - "apiKeyValidationFailed": "API key validation failed. Please check your key and try again.", - "addProviderApiKeyTitle": "Add {provider} API Key", - "checking": "Checking...", - "check": "Check", - "valid": "Valid", - "invalid": "Invalid", - "creating": "Creating...", - "validationChecksAnthropicCompatible": "Validation checks {provider} by verifying the API key.", - "validationChecksOpenAiCompatible": "Validation checks {provider} via /models on your base URL.", - "priorityLabel": "Priority", - "saving": "Saving...", - "save": "Save", - "editConnection": "Edit Connection", - "accountName": "Account name", + "apiKeyValidationFailed": "API کلید کی توثیق ناکام ہو گئی۔ براہِ کرم اپنی کلید جانچیں اور دوبارہ کوشش کریں۔", + "addProviderApiKeyTitle": "{provider} کی API کلید شامل کریں", + "checking": "جانچ جاری ہے...", + "check": "جانچیں", + "valid": "درست", + "invalid": "غلط", + "creating": "بنایا جا رہا ہے...", + "validationChecksAnthropicCompatible": "توثیق API کلید کی تصدیق کر کے {provider} کو جانچتی ہے۔", + "validationChecksOpenAiCompatible": "توثیق آپ کے بنیادی URL پر /models کے ذریعے {provider} کو جانچتی ہے۔", + "priorityLabel": "ترجیح", + "saving": "محفوظ ہو رہا ہے...", + "save": "محفوظ کریں", + "editConnection": "کنکشن میں ترمیم کریں", + "accountName": "اکاؤنٹ کا نام", "email": "Email", - "healthCheckMinutes": "Health Check (min)", + "healthCheckMinutes": "صحت کی جانچ (منٹ)", "healthCheckHint": "Proactive token refresh interval. 0 = disabled.", - "deselectAllModels": "Deselect all", - "modelsActiveCount": "{active}/{total} active", - "noModelsMatch": "No models match \"{filter}\"", - "groupLabel": "Environment", - "groupPlaceholder": "e.g. eKaizen, Personal", - "failedTestConnection": "Failed to test connection", - "failed": "Failed", - "leaveBlankKeepCurrentApiKey": "Leave blank to keep the current API key.", - "editCompatibleTitle": "Edit {type} Compatible", - "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.", - "apiKeyForCheck": "API Key (for Check)", + "deselectAllModels": "سب کا انتخاب ختم کریں", + "modelsActiveCount": "{active}/{total} فعال", + "noModelsMatch": "کوئی ماڈل \"{filter}\" سے مماثل نہیں", + "groupLabel": "ماحول", + "groupPlaceholder": "مثلاً eKaizen، ذاتی", + "failedTestConnection": "کنکشن کی جانچ ناکام رہی", + "failed": "ناکام", + "leaveBlankKeepCurrentApiKey": "موجودہ API کلید برقرار رکھنے کے لیے خالی چھوڑ دیں۔", + "editCompatibleTitle": "{type} سے ہم آہنگ میں ترمیم کریں", + "compatibleBaseUrlHint": "آپ کے {type} سے ہم آہنگ API کا بنیادی URL۔ حسبِ ضرورت اینڈ پوائنٹ پاتھز کے لیے اعلیٰ ترتیبات استعمال کریں۔", + "apiKeyForCheck": "API کلید (جانچ کے لیے)", "testModelIdLabel": "ماڈل ID (اختیاری)", "testModelIdPlaceholder": "مثلاً my-model-id", "testModelIdHint": "اگر فراہم کنندہ کے پاس /models اینڈ پوائنٹ نہیں ہے، تو اس کے بجائے /chat/completions کے ذریعے توثیق کرنے کے لیے ماڈل ID درج کریں۔", - "compatibleProdPlaceholder": "{type} Compatible (Prod)", - "tokenRefreshed": "Token refreshed successfully", - "tokenRefreshFailed": "Token refresh failed", + "compatibleProdPlaceholder": "{type} سے ہم آہنگ (پروڈکشن)", + "tokenRefreshed": "ٹوکن کامیابی سے ریفریش ہو گیا", + "tokenRefreshFailed": "ٹوکن ریفریش ناکام رہا", "cursorSessionUnchanged": "سیشن پہلے ہی موجود ہے", - "applyCodexAuthLocal": "Apply auth", - "exportCodexAuthFile": "Export auth", + "applyCodexAuthLocal": "توثیق لاگو کریں", + "exportCodexAuthFile": "توثیق برآمد کریں", "applyClaudeAuthLocal": "تصدیق کا اطلاق کریں۔", "exportClaudeAuthFile": "تصدیق برآمد کریں۔", "importClaudeAuth": "توثیق درآمد کریں۔", @@ -5736,67 +5739,67 @@ "codexImportBulkFailed": "{count} ناکام ہوگیا۔", "codexImportBulkZipExtracting": "زپ نکال رہا ہے…", "codexImportBulkZipError": "زپ نکالنے میں ناکام", - "advancedSettings": "Advanced Settings", - "chatPathLabel": "Chat Endpoint Path", + "advancedSettings": "اعلیٰ ترتیبات", + "chatPathLabel": "چیٹ اینڈ پوائنٹ پاتھ", "chatPathPlaceholder": "/chat/completions", - "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)", - "modelsPathLabel": "Models Endpoint Path", + "chatPathHint": "غیر معیاری APIs والے فراہم کنندگان کے لیے حسبِ ضرورت چیٹ پاتھ (مثلاً /v4/chat/completions)", + "modelsPathLabel": "ماڈلز اینڈ پوائنٹ پاتھ", "modelsPathPlaceholder": "/models", - "modelsPathHint": "Custom models path for validation (e.g. /v4/models)", + "modelsPathHint": "توثیق کے لیے حسبِ ضرورت ماڈلز پاتھ (مثلاً /v4/models)", "clientIdentityLabel": "کلائنٹ کی شناخت", "clientIdentityHint": "اختیاری۔ کلائنٹ فنگر پرنٹ ہیڈرز (مثلاً User-Agent) شامل کرتا ہے جو ایک معروف CLI سے مماثل ہوتے ہیں، ان ہم آہنگ گیٹ ویز کے لیے جو اس کی توقع رکھتے ہیں۔", - "statusDeactivated": "Deactivated (Manual)", - "statusBanned": "Banned / Sandbox Violation", - "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted", - "showEmails": "Show all emails", - "hideEmails": "Hide all emails", - "a": "A", + "statusDeactivated": "غیر فعال (دستی)", + "statusBanned": "پابندی عائد / سینڈ باکس کی خلاف ورزی", + "statusCreditsExhausted": "ناکافی بیلنس / کوٹا ختم ہو گیا", + "showEmails": "تمام ای میلز دکھائیں", + "hideEmails": "تمام ای میلز چھپائیں", + "a": "اے", "accountConcurrencyCapHint": "Account Concurrency Cap Hint", "accountConcurrencyCapLabel": "Account Concurrency Cap Label", "accountIdHint": "Account Id Hint", "accountIdLabel": "Account Id Label", "accountIdPlaceholder": "Account Id Placeholder", - "addAnotherApiKey": "Add another API key or paste multiple keys", + "addAnotherApiKey": "ایک اور API کلید شامل کریں یا متعدد کلیدیں پیسٹ کریں", "addCcCompatible": "Add Cc Compatible", - "aggregatorsGateways": "Aggregators Gateways", + "aggregatorsGateways": "ایگریگیٹرز گیٹ ویز", "enterpriseCloud": "انٹرپرائز اور کلاؤڈ", - "apiFormatLabel": "Api Format Label", + "apiFormatLabel": "API فارمیٹ کا لیبل", "apiKeyOptionalHint": "Api Key Optional Hint", "apiKeyOptionalLabel": "Api Key Optional Label", - "apiRegionChina": "Api Region China", - "apiRegionHint": "Api Region Hint", - "apiRegionInternational": "Api Region International", - "apiRegionLabel": "Api Region Label", - "apikey": "Apikey", - "audio": "Audio", - "audioProvidersHeading": "Audio Providers Heading", + "apiRegionChina": "API خطہ چین", + "apiRegionHint": "API خطے کا اشارہ", + "apiRegionInternational": "API خطہ بین الاقوامی", + "apiRegionLabel": "API خطے کا لیبل", + "apikey": "API کلید", + "audio": "آڈیو", + "audioProvidersHeading": "آڈیو فراہم کنندگان کی سرخی", "cloudAgentProviders": "کلاؤڈ ایجنٹ فراہم کرنے والے", - "audioShortLabel": "Audio Short Label", - "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint", - "bailianBaseUrlHint": "Bailian Base Url Hint", - "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.", + "audioShortLabel": "آڈیو کا مختصر لیبل", + "azureOpenAiBaseUrlHint": "Azure Open AI بنیادی URL کا اشارہ", + "bailianBaseUrlHint": "Bailian بنیادی URL کا اشارہ", + "claudeWebCookieHint": "claude.ai کھولیں → DevTools → Application → Cookies → claude.ai، اور 'sessionKey' کی قدر کاپی کریں۔ Cloudflare کے لیے cf_clearance، __cf_bm، _cfuvid بھی درکار ہیں۔", "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...", - "blackboxWebCookieHint": "Blackbox Web Cookie Hint", - "blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder", + "blackboxWebCookieHint": "Blackbox Web کوکی کا اشارہ", + "blackboxWebCookiePlaceholder": "Blackbox Web کوکی کا پلیس ہولڈر", "t3ChatWebCookieHint": "t3.chat → DevTools → Application → Local Storage → https://t3.chat کھولیں، 'convex-session-id' کاپی کریں۔ پھر DevTools → نیٹ ورک کھولیں، کسی بھی چیٹ کی درخواست سے مکمل کوکی ہیڈر کاپی کریں۔ دونوں اقدار کو نیچے دیئے گئے فیلڈز میں چسپاں کریں۔", "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...", - "grokWebCookieHint": "Grok Web Cookie Hint", + "grokWebCookieHint": "Grok Web کوکی کا اشارہ", "blockClaudeExtraUsageDescription": "جب فعال ہو تو، OmniRoute اس Claude کنکشن کو غیر دستیاب نشان دیتا ہے جیسے ہی استعمال API قطار میں اضافی استعمال کی رپورٹ کرتی ہے، تاکہ متبادل کسی دوسرے کنکشن پر سوئچ ہو جائے بجائے اس کے کہ پی-ایز-یو اضافی بلنگ پر جاری رہے۔", "blockClaudeExtraUsageLabel": "اضافی کلود کے استعمال کو بلاک کریں", "disableCoolingDescription": "عارضی کول ڈاؤن کو چھوڑیں تاکہ یہ کنکشن قابلِ بحالی غلطیوں کے بعد بھی اہل رہے (حتمی حالتیں جیسے banned/expired اب بھی لاگو ہوں گی)۔", "disableCoolingLabel": "اس کنکشن کے لیے کول ڈاؤن غیر فعال کریں", - "bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}", - "bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}", - "bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.", + "bulkPasteAdded": "{count, plural, one {1 کلید شامل کی گئی} other {# کلیدیں شامل کی گئیں}}", + "bulkPasteDuplicatesIgnored": "{count, plural, one {1 نقل نظر انداز کی گئی} other {# نقول نظر انداز کی گئیں}}", + "bulkPasteHint": "ہر سطر میں ایک API کلید چسپاں کریں۔ خالی سطروں کو نظر انداز کیا جاتا ہے اور نقلی کلیدیں چھوڑ دی جاتی ہیں۔", "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint", "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder", "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint", "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description", "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label", - "ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.", - "ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta", - "ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.", - "ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display", + "ccCompatibleRedactThinkingDescription": "ایسے CC Compatible اپ اسٹریمز کے لیے redact-thinking بیٹا ہیڈر شامل کرتا ہے جنہیں پوشیدہ Claude سوچ کے اسٹریمز درکار ہوتے ہیں۔", + "ccCompatibleRedactThinkingLabel": "redact-thinking بیٹا فعال کریں", + "ccCompatibleSummarizeThinkingDescription": "CC Compatible سوچ کی درخواستوں میں `display: \"summarized\"` شامل کرتا ہے تاکہ معاونت یافتہ Claude ماڈلز قابلِ مشاہدہ سوچ کے ڈیلٹاز اسٹریم کر سکیں۔", + "ccCompatibleSummarizeThinkingLabel": "خلاصہ شدہ سوچ کا ڈسپلے فعال کریں", "ccCompatibleDetailsTitle": "Cc Compatible Details Title", "ccCompatibleLabel": "Cc Compatible Label", "ccCompatibleModelsDescription": "Cc Compatible Models Description", @@ -5808,19 +5811,19 @@ "claudeExtraUsageShort": "Claude Extra Usage Short", "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title", "codex5hToggleTitle": "Codex5H Toggle Title", - "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.", - "codexFastServiceTierLabel": "Codex fast service tier", + "codexFastServiceTierDescription": "دستیاب ہونے پر Codex درخواستوں کے لیے ترجیحی سروس ٹائر استعمال کریں۔", + "codexFastServiceTierLabel": "Codex تیز سروس ٹائر", "codexWeeklyToggleTitle": "Codex Weekly Toggle Title", - "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder", - "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder", - "compatible": "Compatible", - "configuredCount": "Configured Count", - "consoleApiKeyOracleHint": "Console Api Key Oracle Hint", - "consoleApiKeyOracleLabel": "Console Api Key Oracle Label", - "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder", - "newApiUserIdLabel": "New-API User ID", - "newApiUserIdPlaceholder": "e.g. 12345", - "newApiUserIdHint": "AgentRouter New-Api-User header value, used together with the console API key to fetch quota balance.", + "compatUpstreamHeaderNamePlaceholder": "Compat اپ اسٹریم ہیڈر کے نام کا پلیس ہولڈر", + "compatUpstreamHeaderValuePlaceholder": "Compat اپ اسٹریم ہیڈر کی قدر کا پلیس ہولڈر", + "compatible": "ہم آہنگ", + "configuredCount": "ترتیب شدہ تعداد", + "consoleApiKeyOracleHint": "کنسول API کلید Oracle کا اشارہ", + "consoleApiKeyOracleLabel": "کنسول API کلید Oracle کا لیبل", + "consoleApiKeyOraclePlaceholder": "کنسول API کلید Oracle کا پلیس ہولڈر", + "newApiUserIdLabel": "New-API صارف ID", + "newApiUserIdPlaceholder": "مثلاً 12345", + "newApiUserIdHint": "AgentRouter New-Api-User ہیڈر کی قدر، جو کوٹہ بیلنس حاصل کرنے کے لیے کنسول API کلید کے ساتھ استعمال ہوتی ہے۔", "newApiAggregatorToggleLabel": "ایگریگیٹر گیٹ وے", "newApiAggregatorToggleHint": "نئے-API / ایک-API / سب2API ایگریگیٹر نوڈز کے لیے بیلنس کی شناخت کو فعال کریں۔ ڈیش بورڈ بیلنس بیج دکھائے گا اور کوٹہ-پری فلائٹ روٹنگ ختم شدہ اکاؤنٹس کو چھوڑ دے گی۔", "newApiAggregatorConsoleApiKeyHint": "ایگریگیٹر کے /api/user/self اینڈپوائنٹ کے لیے سسٹم ایکسیس ٹوکن۔ روٹنگ API کلید نہیں۔", @@ -5830,82 +5833,82 @@ "featureFlagNewApiAggregatorBalanceDescription": "نئے-API / ایک-API / سب2API ایگریگیٹر ہم آہنگ نوڈز کے لیے بیلنس کی شناخت فعال کریں", "cpaModeDisabledTitle": "Cpa Mode Disabled Title", "cpaModeEnabledTitle": "Cpa Mode Enabled Title", - "customUserAgentHint": "Custom User Agent Hint", - "customUserAgentLabel": "Custom User Agent Label", - "databricksBaseUrlHint": "Databricks Base Url Hint", - "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.", - "defaultThinkingStrengthLabel": "Default thinking strength", - "deleteAllExtraApiKeys": "Delete all", - "excludedModelsHint": "Excluded Models Hint", - "excludedModelsLabel": "Excluded Models Label", - "excludedModelsPlaceholder": "Excluded Models Placeholder", - "expirationBannerExpired": "Expiration Banner Expired", - "expirationBannerExpiredDesc": "Expiration Banner Expired Desc", - "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon", - "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc", - "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}", - "extraApiKeysHint": "Extra Api Keys Hint", - "extraApiKeysLabel": "Extra Api Keys Label", - "apiKeyHealthLabel": "API Key Health", - "apiKeyStatusActive": "Active", - "apiKeyStatusWarning": "Warning ({count} failures)", - "apiKeyStatusInvalid": "Invalid", - "primaryKey": "Primary Key", - "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.", - "apiKeyInvalidAlertTitle": "API Key Health Alert", - "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.", - "apiKeyWarningAlertTitle": "API Key Warning", - "googlePseInfo": "Google Pse Info", + "customUserAgentHint": "حسبِ ضرورت User Agent کا اشارہ", + "customUserAgentLabel": "حسبِ ضرورت User Agent کا لیبل", + "databricksBaseUrlHint": "Databricks بنیادی URL کا اشارہ", + "defaultThinkingStrengthHint": "اس وقت استعمال ہوتا ہے جب درخواست میں استدلال کی کوشش متعین نہ ہو۔", + "defaultThinkingStrengthLabel": "سوچ کی طے شدہ شدت", + "deleteAllExtraApiKeys": "سب حذف کریں", + "excludedModelsHint": "خارج کردہ ماڈلز کا اشارہ", + "excludedModelsLabel": "خارج کردہ ماڈلز کا لیبل", + "excludedModelsPlaceholder": "خارج کردہ ماڈلز کا پلیس ہولڈر", + "expirationBannerExpired": "میعاد ختم ہونے کا بینر: میعاد ختم ہو گئی", + "expirationBannerExpiredDesc": "میعاد ختم ہونے کے بینر کی تفصیل", + "expirationBannerExpiringSoon": "میعاد ختم ہونے کا بینر: میعاد جلد ختم ہو رہی ہے", + "expirationBannerExpiringSoonDesc": "میعاد جلد ختم ہونے کے بینر کی تفصیل", + "extraApiKeyMasked": "کلید {index}: {prefix}••••{suffix}", + "extraApiKeysHint": "اضافی API کلیدوں کا اشارہ", + "extraApiKeysLabel": "اضافی API کلیدوں کا لیبل", + "apiKeyHealthLabel": "API کلید کی صحت", + "apiKeyStatusActive": "فعال", + "apiKeyStatusWarning": "تنبیہ ({count} ناکامیاں)", + "apiKeyStatusInvalid": "غیر معتبر", + "primaryKey": "بنیادی کلید", + "apiKeyInvalidAlert": "تصدیقی ناکامیوں کی وجہ سے {count} API کلید(یں) ان کنکشنز میں غیر معتبر نشان زد کی گئی ہیں: {connections}۔ انہیں روٹیشن میں نظر انداز کر دیا جائے گا۔ جائزہ لینے کے لیے کلک کریں۔", + "apiKeyInvalidAlertTitle": "API کلید کی صحت کا انتباہ", + "apiKeyWarningAlert": "ان کنکشنز میں ناکامی کی بلند شرح کے باعث {count} API کلید(یں) تنبیہی حالت میں ہیں: {connections}۔ روٹیشن کے مسائل سے بچنے کے لیے جائزہ لیں۔", + "apiKeyWarningAlertTitle": "API کلید کی تنبیہ", + "googlePseInfo": "Google Pse کی معلومات", "antigravityProjectIdHint": "اینٹی گریوٹی کلاؤڈ کوڈ کی درخواستوں کے لیے اختیاری اوور رائڈ۔ Google OAuth کے دوران دریافت ہونے والے پروجیکٹ کو استعمال کرنے کے لیے خالی چھوڑ دیں۔", "antigravityClientProfileLabel": "کلائنٹ پروفائل", "antigravityClientProfileHint": "منتخب کریں کہ OmniRoute، API کو کون سی Antigravity کلائنٹ شناخت پیش کرے۔", "antigravityClientProfileIde": "IDE", "antigravityClientProfileCli": "Harness / CLI", "codexFastTierActiveChip": "Codex Fast ٹیئر فعال ہے", - "tierFast": "Fast", + "tierFast": "تیز", "antigravityProjectIdLabel": "گوگل کلاؤڈ پروجیکٹ ID", "antigravityProjectIdPlaceholder": "my-gcp-project-id", - "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder", - "herokuBaseUrlHint": "Heroku Base Url Hint", - "hideEmail": "Hide Email", - "imageProviders": "Image Providers", + "grokWebCookiePlaceholder": "Grok ویب کوکی کی مثال", + "herokuBaseUrlHint": "Heroku بنیادی URL کا اشارہ", + "hideEmail": "ای میل چھپائیں", + "imageProviders": "تصویری فراہم کنندگان", "videoProviders": "ویڈیو جنریشن", "embeddingRerankProviders": "ایمبیڈنگز اور رینک", - "imagesShortLabel": "Images Short Label", - "llmProviders": "Llm Providers", - "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint", - "localProviderBaseUrlHint": "Local Provider Base Url Hint", - "localProviders": "Local Providers", - "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error", + "imagesShortLabel": "تصاویر کا مختصر لیبل", + "llmProviders": "LLM فراہم کنندگان", + "localProviderApiKeyOptionalHint": "مقامی فراہم کنندہ کی اختیاری API کلید کا اشارہ", + "localProviderBaseUrlHint": "مقامی فراہم کنندہ کے بنیادی URL کا اشارہ", + "localProviders": "مقامی فراہم کنندگان", + "maxConcurrentWholeNumberError": "زیادہ سے زیادہ بیک وقت تعداد لازماً صحیح عدد ہونی چاہیے", "m365TierLabel": "Copilot ٹیئر", "m365TierHint": "منتخب کریں کہ یہ کنکشن کون سی Microsoft 365 Copilot سرفیس استعمال کرتا ہے۔ Individual پہلے سے طے شدہ صارف BizChat ہے؛ Education اور Enterprise (work) اپنی ٹیننٹ سرفیسز کا انتخاب کرتے ہیں۔", "m365TierIndividualOption": "Individual (پہلے سے طے شدہ)", - "m365TierEduOption": "Education", - "m365TierEnterpriseOption": "Enterprise / Work", + "m365TierEduOption": "تعلیم", + "m365TierEnterpriseOption": "انٹرپرائز / کام", "tierOverrideLabel": "ٹیئر اوور رائیڈ", "tierOverrideAuto": "خودکار (روٹنگ فیصلہ کرتی ہے)", "tierOverrideFree": "مفت", "tierOverrideCheap": "سستا", "tierOverridePremium": "پریمیم", "tierOverrideHelpText": "اس فراہم کنندہ کو ماڈل کی قیمتوں سے OmniRoute کے ذریعے اخذ کرنے دینے کے بجائے ایک روٹنگ ٹیئر پر پن کریں۔", - "museSparkWebCookieHint": "Muse Spark Web Cookie Hint", - "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder", - "oauth": "Oauth", - "openCliTools": "Open Cli Tools", - "openSettings": "Open Settings", - "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.", - "openaiResponsesStoreLabel": "OpenAI Responses store", - "perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info", - "perplexityWebCookieHint": "Perplexity Web Cookie Hint", - "perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder", + "museSparkWebCookieHint": "Muse Spark ویب کوکی کا اشارہ", + "museSparkWebCookiePlaceholder": "Muse Spark ویب کوکی کی مثال", + "oauth": "OAuth", + "openCliTools": "CLI ٹولز کھولیں", + "openSettings": "ترتیبات کھولیں", + "openaiResponsesStoreDescription": "مطابقت پذیر Responses API درخواستوں کو محفوظ شدہ جوابی حالت برقرار رکھنے کی اجازت دیں۔", + "openaiResponsesStoreLabel": "OpenAI Responses اسٹور", + "perplexitySearchSharedKeyInfo": "Perplexity Search مشترکہ کلید کی معلومات", + "perplexityWebCookieHint": "Perplexity ویب کوکی کا اشارہ", + "perplexityWebCookiePlaceholder": "Perplexity ویب کوکی کی مثال", "personalAccessTokenLabel": "Personal Access Token Label", "qoderPatHint": "Qoder Pat Hint", "qoderPatPlaceholder": "Qoder Pat Placeholder", "rateLimitOverridesSection": "ریٹ لمٹ اوور رائیڈز", "rateLimitOverridesMaxConcurrentHint": "اس کنکشن کے لیے زیادہ سے زیادہ ہم وقتی درخواستوں کا اوور رائیڈ۔ اکاؤنٹ کی سطح کی حد کو اوور رائیڈ کرتا ہے۔", "rateLimitOverridesMaxConcurrentLabel": "زیادہ سے زیادہ ہم وقتی (ریٹ لمٹ)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "زیادہ سے زیادہ وقت (ms) جس تک کوئی درخواست ناکام ہونے سے پہلے شرح کی حد کی جگہ کا انتظار کر سکتی ہے۔ یہ صرف اس کنکشن کے لیے عالمی Resilience ترتیب کو اوور رائیڈ کرتا ہے۔", + "rateLimitOverridesMaxWaitMsLabel": "قطار میں انتظار کی زیادہ سے زیادہ مدت (ms)", "rateLimitOverridesMinTimeHint": "درخواستوں کے درمیان کم از کم وقت (ms)۔ پہلے سے طے شدہ ریٹ لمیٹر تاخیر کو اوور رائیڈ کرتا ہے۔", "rateLimitOverridesMinTimeLabel": "کم از کم وقفہ (ms)", "rateLimitOverridesRpdHint": "اس کنکشن کے لیے یومیہ زیادہ سے زیادہ درخواستیں۔ فراہم کنندہ کے ڈیفالٹ کو اوور رائڈ کرتا ہے۔", @@ -5916,54 +5919,54 @@ "rateLimitOverridesTpdLabel": "TPD (ٹوکنز/دن)", "rateLimitOverridesTpmHint": "اس کنکشن کے لیے فی منٹ زیادہ سے زیادہ ٹوکنز۔ فراہم کنندہ کے پہلے سے طے شدہ کو اوور رائیڈ کرتا ہے۔", "rateLimitOverridesTpmLabel": "TPM (ٹوکنز/منٹ)", - "refreshOauthTokenTitle": "Refresh Oauth Token Title", - "regionHint": "Region Hint", - "regionLabel": "Region Label", - "removeThisKey": "Remove This Key", - "routingTagsHint": "Routing Tags Hint", - "routingTagsLabel": "Routing Tags Label", - "routingTagsPlaceholder": "Routing Tags Placeholder", - "search": "Search", - "searchEngineIdHint": "Search Engine Id Hint", - "searchEngineIdLabel": "Search Engine Id Label", - "searchEngineIdRequired": "Search Engine Id Required", - "searchProvider": "Search Provider", - "searchProviderDesc": "Search Provider Desc", - "searchProviders": "Search Providers", + "refreshOauthTokenTitle": "OAuth ٹوکن ریفریش کرنے کا عنوان", + "regionHint": "علاقے کا اشارہ", + "regionLabel": "علاقے کا لیبل", + "removeThisKey": "یہ کلید ہٹائیں", + "routingTagsHint": "روٹنگ ٹیگز کا اشارہ", + "routingTagsLabel": "روٹنگ ٹیگز کا لیبل", + "routingTagsPlaceholder": "روٹنگ ٹیگز کی مثال", + "search": "تلاش", + "searchEngineIdHint": "سرچ انجن آئی ڈی کا اشارہ", + "searchEngineIdLabel": "سرچ انجن آئی ڈی کا لیبل", + "searchEngineIdRequired": "سرچ انجن آئی ڈی درکار ہے", + "searchProvider": "تلاش کا فراہم کنندہ", + "searchProviderDesc": "تلاش کے فراہم کنندہ کی تفصیل", + "searchProviders": "تلاش کے فراہم کنندگان", "searchByModel": "ماڈل کے لحاظ سے تلاش کریں…", - "searchProvidersHeading": "Search Providers Heading", - "searxngBaseUrlHint": "Searxng Base Url Hint", - "searxngInfo": "Searxng Info", - "sessionCookieLabel": "Session Cookie Label", - "showEmail": "Show Email", - "snowflakeBaseUrlHint": "Snowflake Base Url Hint", + "searchProvidersHeading": "تلاش کے فراہم کنندگان", + "searxngBaseUrlHint": "Searxng بنیادی URL کا اشارہ", + "searxngInfo": "Searxng کی معلومات", + "sessionCookieLabel": "سیشن کوکی کا لیبل", + "showEmail": "ای میل دکھائیں", + "snowflakeBaseUrlHint": "Snowflake بنیادی URL کا اشارہ", "supportedEndpointAudio": "Supported Endpoint Audio", "supportedEndpointChat": "Supported Endpoint Chat", "supportedEndpointEmbeddings": "Supported Endpoint Embeddings", "supportedEndpointImages": "Supported Endpoint Images", "supportedEndpointsLabel": "Supported Endpoints Label", - "tagGroupHint": "Tag Group Hint", - "tagGroupLabel": "Tag Group Label", - "tagGroupPlaceholder": "Tag Group Placeholder", - "testModel": "Test Model", - "testingModel": "Testing Model", + "tagGroupHint": "ٹیگ گروپ کا اشارہ", + "tagGroupLabel": "ٹیگ گروپ کا لیبل", + "tagGroupPlaceholder": "ٹیگ گروپ کی مثال", + "testModel": "ماڈل کی جانچ کریں", + "testingModel": "ماڈل کی جانچ جاری ہے", "modelTestQuotaTooltip": "کوٹہ ختم ہو گیا — کل دوبارہ شروع ہوگا یا ٹاپ اپ کی ضرورت ہے", "toggleOffShort": "Toggle Off Short", "toggleOnShort": "Toggle On Short", - "tokenExpiredBadge": "Token Expired Badge", - "tokenExpiredTitle": "Token Expired Title", - "tokenExpiresSoonTitle": "Token Expires Soon Title", - "tokenShort": "Token Short", - "totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}", - "unhideModel": "Unhide Model", - "upstreamProxyProviders": "Upstream Proxy Providers", + "tokenExpiredBadge": "ٹوکن کی میعاد ختم", + "tokenExpiredTitle": "ٹوکن کی میعاد ختم ہو گئی ہے", + "tokenExpiresSoonTitle": "ٹوکن کی میعاد جلد ختم ہو جائے گی", + "tokenShort": "مختصر ٹوکن", + "totalKeysRotating": "{count, plural, one {1 کلید تبدیل ہو رہی ہے} other {# کلیدیں تبدیل ہو رہی ہیں}}", + "unhideModel": "ماڈل دوبارہ دکھائیں", + "upstreamProxyProviders": "اپ اسٹریم پراکسی فراہم کنندگان", "validationModelIdHint": "API کلید کی توثیق کے لیے استعمال ہونے والا ماڈل۔ فراہم کنندہ کا پہلا دستیاب ماڈل استعمال کرنے کے لیے خالی چھوڑ دیں۔", "validationModelIdLabel": "توثیقی ماڈل", "validationModelIdPlaceholder": "مثلاً meta-llama/llama-3.1-8b-instruct", - "vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token", - "webCookieProviders": "Web Cookie Providers", - "weeklyShort": "Weekly Short", - "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint", + "vertexServiceAccountPlaceholder": "اپنے Service Account کا JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) یا OAuth access_token پیسٹ کریں", + "webCookieProviders": "ویب کوکی فراہم کنندگان", + "weeklyShort": "ہفتہ وار مختصر", + "xiaomiMimoBaseUrlHint": "Xiaomi Mimo بنیادی URL کا اشارہ", "globalCodexServiceMode": "گلوبل Codex سروس موڈ", "connect": "کنیکٹ کریں", "manualApiKey": "دستی API کلید", @@ -5975,9 +5978,9 @@ "zedImportDescription": "Zed IDE کی جانب سے OS کیچین میں محفوظ کردہ AI فراہم کنندہ کی اسناد (OpenAI، Anthropic، Google، Mistral، xAI) دریافت کریں اور انہیں کنکشنز کے طور پر درآمد کریں۔ اس مشین پر Zed IDE کا انسٹال ہونا ضروری ہے۔", "zedImportButton": "Zed سے درآمد کریں", "zedImportFailed": "Zed درآمد ناکام ہوگئی", - "zedImportHint": "Zed Import Hint", - "zedImportNetworkError": "Zed Import Network Error", - "zedImportNone": "Zed Import None", + "zedImportHint": "Zed درآمد کا اشارہ", + "zedImportNetworkError": "Zed درآمد میں نیٹ ورک کی خرابی", + "zedImportNone": "Zed درآمد میں کچھ نہیں", "zedImportSuccess": "{providers} فراہم کنندہ(وں) کے لیے Zed سے {credentials} سند(یں) درآمد کی گئیں", "zedImporting": "درآمد کر رہا ہے…", "zedNoCredentials": "کیچین میں Zed کی کوئی اسناد نہیں ملیں", @@ -6032,7 +6035,7 @@ "claudeImportEntryName": "اندراج {number}", "claudeImportParseError": "تجزیہ کی خرابی", "claudeImportNoValidEntries": "درآمد کرنے کے لیے کوئی درست اندراجات نہیں ہیں", - "webFetch": "Web Fetch", + "webFetch": "ویب سے حاصل کریں", "webFetchTooltip": "وہ فراہم کنندگان جو ویب URLs سے مواد نکالتے ہیں (HTML → Markdown، اسکریپ، اسکرین شاٹ)", "webFetchProvidersHeading": "Web Fetch فراہم کنندگان", "compatibleProvidersDesc": "OpenAI-مطابق اور Anthropic-مطابق اینڈ پوائنٹس جن کی آپ میزبانی یا تشکیل کرتے ہیں۔ کسی بھی OpenAI SDK کو اپنے URL کی طرف اشارہ کریں اور درخواستوں کو یہاں روٹ کریں۔", @@ -6175,7 +6178,7 @@ "freeaiapikey": "GPT-5، Claude Opus 4.6، Claude Sonnet 4.6، Qwen 3.5 سمیت 40+ ماڈلز کے لیے رعایتی API پراکسی۔ اپنی API کی https://freeaiapikey.com/dashboard پر حاصل کریں۔ بیس URL: https://freeaiapikey.com/v1۔", "freemodel-dev": "https://freemodel.dev پر $300 کے مفت API کریڈٹس حاصل کریں — ادائیگی کی معلومات درکار نہیں۔ OpenAI-compatible اینڈ پوائنٹ۔ GPT-5.4 اور GPT-5.5 ماڈلز دستیاب ہیں۔", "friendliai": "سرور لیس انفیرنس کے لیے مفت ٹیر — کسی کریڈٹ کارڈ کی ضرورت نہیں", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "Google AI Studio کے ذریعے مفت درجہ؛ ہر ماڈل کے کوٹے اب شائع نہیں کیے جاتے (AI Studio میں کوٹے کا صفحہ دیکھیں) — کریڈٹ کارڈ درکار نہیں۔", "gigachat": "GigaChat (Sber) کو ایک API کی کے ساتھ منسلک کریں۔", "gitlab": "عوامی Code Suggestions API کے لیے GitLab پرسنل ایکسیس ٹوکن۔ جب gitlab.com استعمال نہ کر رہے ہوں تو ایک سیلف ہوسٹڈ بیس URL کنفیگر کریں۔", "gitlawb-gmi": "Gitlawb Opengateway ڈیش بورڈ سے اپنی API کی حاصل کریں۔", @@ -6184,7 +6187,7 @@ "glm-cn": "GLM Coding (China) کو ایک API کی کے ساتھ منسلک کریں۔", "glmt": "زیادہ ٹوکن بجٹ، تھنکنگ فعال، اور طویل ٹائم آؤٹ کے ساتھ پہلے سے سیٹ کردہ GLM پروفائل۔", "getgoapi": "GoAPI کو ایک API کی کے ساتھ منسلک کریں۔", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "مفت پلان: ہر ماڈل کی الگ حد (فی چیٹ ماڈل 200K ٹوکنز/دن؛ RPM/RPD کے لیے console.groq.com/docs/rate-limits دیکھیں) — فائل میں ادائیگی کا کوئی طریقہ موجود نہیں۔", "haiper": "haiper.ai/haiper-api پر API کی حاصل کریں", "heroku": "Heroku AI کو ایک API کی کے ساتھ منسلک کریں۔", "hcnsec": "api.hcnsec.cn پر API کی حاصل کریں", @@ -6252,7 +6255,7 @@ "requesty": "https://app.requesty.ai پر ایک API key بنائیں، پھر اسے یہاں Bearer ٹوکن کے طور پر پیسٹ کریں۔ OpenAI سے ہم آہنگ اینڈ پوائنٹ https://router.requesty.ai/v1 پر ہے، جس میں ایک لائیو /v1/models کیٹلاگ موجود ہے۔", "runwayml": "Runway ویڈیو جنریشن ٹاسک پر مبنی ہے۔ OmniRoute، text-to-video یا image-to-video جابز جمع کراتا ہے، /v1/tasks/[id] کو پول کرتا ہے، اور مکمل شدہ ویڈیو آؤٹ پٹس کو واپس OpenAI جیسے /v1/videos/generations ریسپانس میں نارملائز کرتا ہے۔", "sambanova": "سائن اپ کرنے پر $5 مفت کریڈٹس (30 دن کی میعاد)، کسی کریڈٹ کارڈ کی ضرورت نہیں ہے", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "https://seekai.cc پر ایک API کلید بنائیں، پھر اسے یہاں Bearer ٹوکن کے طور پر پیسٹ کریں۔ OpenAI سے ہم آہنگ بنیادی URL: https://seekai.cc/v1۔", "sap": "ماڈل کی دریافت AI_API_URL پر /v2/lm/scenarios/foundation-models/models کا استعمال کرتی ہے۔ چیٹ کی درخواستیں deploymentUrl/chat/completions کا استعمال کرتی ہیں اور ان کے لیے AI-Resource-Group درکار ہوتا ہے۔", "sarvam": "Sarvam AI OpenAI کے ساتھ ہم آہنگ ہے /v1 پر۔ OmniRoute /v1/models کی جانچ کرتا ہے اور چیٹ ٹریفک کو /v1/chat/completions پر بھیجتا ہے۔ ماڈلز کو انڈک زبانوں کے لیے ترتیب دیا گیا ہے۔", "scaleway": "نئے اکاؤنٹس کے لیے 1M مفت ٹوکنز — EU/GDPR کے مطابق (پیرس)، Qwen3 235B اور Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "Claude Code کو موجودہ OAuth فلو کے ساتھ منسلک کریں۔", "cline": "Cline کو موجودہ OAuth فلو کے ساتھ منسلک کریں۔", "cursor": "Cursor IDE کو موجودہ OAuth فلو کے ساتھ منسلک کریں۔", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "cursor.com/dashboard/api سے صارف API کلید (crsr_...) کے ذریعے Cursor کو منسلک کریں؛ IDE سیشن درکار نہیں۔", "github": "GitHub Copilot کو موجودہ OAuth فلو کے ساتھ منسلک کریں۔", "gitlab-duo": "ai_features + read_user اسکوپس کے ساتھ OAuth ایپلیکیشن۔ اس OmniRoute انسٹنس پر GITLAB_DUO_OAUTH_CLIENT_ID اور اختیاری طور پر GITLAB_DUO_OAUTH_CLIENT_SECRET کنفیگر کریں۔", "kilocode": "Kilo Code کو موجودہ OAuth فلو کے ساتھ منسلک کریں۔", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "فراہم کنندہ کے اپنے ڈومین سے مطلوبہ اسناد کاپی کریں۔ کوکیز کے لیے، صرف کوکی ہیڈر کی قدر کاپی کریں اور کوکی کو چھوڑ دیں:۔", "webSessionGuideStep3Manual": "ہاتھ سے راستہ: براؤزر کے ڈویلپر ٹولز کھولیں (F12 → نیٹ ورک)، صفحہ کو تازہ کریں، ایک تصدیق شدہ درخواست کھولیں، اور درخواست کے ہیڈرز سے کوکی ہیڈر کی قیمت کاپی کریں — کوکی: پیشوند کو چھوڑ دیں۔", "webSessionGuideStep4": "اسے یہاں چسپاں کریں اور کنکشن چیک کریں۔ اگر یہ کام کرنا بند کر دیتا ہے، تو دوبارہ سائن ان کریں اور اسے نئی قدر سے تبدیل کریں۔", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": ".har فائل درآمد کریں", + "harImportButtonBusy": "درآمد ہو رہی ہے…", + "harImportButtonHint": "کم از کم ایک چیٹ پیغام بھیجنے کے بعد DevTools کے Network ٹیب سے برآمد کریں۔", + "harImportStatusValid": "درآمد ہو گیا — تقریباً {minutes} منٹ تک مؤثر۔", + "harImportStatusExpiringSoon": "درآمد ہو گیا — صرف مزید تقریباً {minutes} منٹ تک مؤثر۔", + "harImportStatusExpired": "درآمد ہو گیا، لیکن یہ ٹوکن {minutes} منٹ پہلے ہی زائد المیعاد ہو چکا ہے — ایک تازہ HAR برآمد کریں۔", + "harImportStatusUnknownExpiry": "درآمد ہو گیا۔ اس کی میعاد ختم ہونے کا وقت پڑھا نہیں جا سکا۔", + "harImportErrorNotJson": "یہ فائل درست JSON نہیں ہے — کیا یہ واقعی .har برآمد ہے؟", + "harImportErrorNoEntries": "اس HAR میں کوئی نیٹ ورک اندراج ریکارڈ نہیں ہے۔", + "harImportErrorNoChathubUrl": "اس HAR میں Copilot چیٹ کنکشن نہیں ملا۔ برآمد کرنے سے پہلے m365.cloud.microsoft میں کم از کم ایک چیٹ پیغام بھیجیں۔", + "harImportErrorUnparsableUrl": "چیٹ کنکشن مل گیا، لیکن اس کا URL پڑھا نہیں جا سکا۔", + "harImportErrorMissingFields": "چیٹ کنکشن مل گیا، لیکن اس میں ٹوکن موجود نہیں تھا۔", + "harImportErrorReadFailed": "اس فائل کو پڑھا نہیں جا سکا۔", + "harImportErrorUnknown": "اس HAR فائل سے اسناد اخذ نہیں کی جا سکیں۔", "webSessionSecurityHint": "اس کے ساتھ پاس ورڈ کی طرح سلوک کریں: یہ آپ کے سائن ان کردہ ویب اکاؤنٹ تک رسائی حاصل کر سکتا ہے جب تک کہ اس کی میعاد ختم نہ ہو جائے یا اسے منسوخ نہ کر دیا جائے۔", "webNoAuthGuideTitle": "کسی سند کی ضرورت نہیں۔", "webNoAuthGuideBody": "{provider} کو API کلید یا کوکی کی ضرورت نہیں ہے۔ اس کے مفت ویب اینڈ پوائنٹ کو استعمال کرنے کے لیے کنکشن کو محفوظ کریں۔", @@ -6364,15 +6367,15 @@ "checkWebToken": "ٹوکن چیک کریں۔", "huggingchatLabel": "HuggingChat (مفت)", "huggingchatDesc": "huggingface.co/chat کے ذریعے مفت LLM چیٹ", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Poe ویب", "poeWebDesc": "poe.com کے ذریعے ملٹی ماڈل چیٹ", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Venice ویب", "veniceWebDesc": "پرائیویسی پر مرکوز AI چیٹ", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel ویب", "v0VercelWebDesc": "v0.dev کے ذریعے AI کوڈ جنریشن", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi ویب", "kimiWebDesc": "www.kimi.com کے ذریعے Moonshot AI کنزیومر چیٹ (بین الاقوامی، Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola ویب", "doubaoWebDesc": "dola.com کے ذریعے ByteDance AI چیٹ", "overrideBaseUrlAdvanced": "ایڈوانسڈ: بیس URL کو اوور رائیڈ کریں", "overrideBaseUrlHint": "ایڈوانسڈ: اس بلٹ ان پرووائیڈر کو کسٹم اینڈ پوائنٹ پر بھیجیں۔ ڈیفالٹ استعمال کرنے کے لیے خالی چھوڑ دیں۔", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "کمانڈ کوڈ کی توثیق ختم ہو گئی", "commandCodeConnected": "کمانڈ کوڈ جڑا ہوا ہے", "commandCodeConnectionAdded": "کمانڈ کوڈ کنکشن شامل کیا گیا", + "clearConnectionCooldown": "وقفہ ختم کریں", + "clearConnectionCooldownInProgress": "ختم کیا جا رہا ہے…", + "clearConnectionCooldownTitle": "وقفہ ابھی ختم کریں — جب اپ اسٹریم کوٹا پہلے ہی ریفریش ہو چکا ہو تو استعمال کریں", "commandCodeLinkExpired": "کمانڈ کوڈ کا لنک ختم ہو گیا ہے", "commandCodeOpeningStudio": "کمانڈ کوڈ اسٹوڈیو کھولنا…", "commandCodePopupBlocked": "پاپ اپ بلاک کر دیا گیا ہے۔ براہ کرم پاپ اپس کی اجازت دیں اور دوبارہ Command Code Connect کو آزمائیں۔", "commandCodeStartFailed": "کمانڈ کوڈ کی توثیق شروع کرنے میں ناکامی", "connectionDeleted": "کنکشن حذف کر دیا گیا", "connectionFallback": "کنکشن", + "connectionCooldownCleared": "وقفہ ختم کر دیا گیا — کنکشن دوبارہ روٹنگ میں شامل ہو گیا", "coolingConnectionsDescription": "یہ کنکشن آخری درخواست کے بعد ٹھنڈے ہو رہے ہیں۔ ٹائمر ختم ہونے تک OmniRoute انہیں چھوڑ دے گا — ہاتھ سے بند کرنے کی ضرورت نہیں۔", "coolingConnectionsTitle": "فی الحال ٹھنڈا کر رہا ہے ({count})", + "failedClearConnectionCooldown": "وقفہ ختم کرنے میں ناکامی", "failedDeleteAlias": "ایلیاس کو حذف کرنے میں ناکامی", "failedDeleteConnection": "کنکشن کو حذف کرنے میں ناکامی", "failedDistributeProxies": "پراکسیز تقسیم کرنے میں ناکامی۔", @@ -6470,21 +6478,16 @@ "savedModelEndpointSettings": "محفوظ شدہ ماڈل اینڈپوائنٹ کی ترتیبات", "searchByModelAria": "ماڈل کے ذریعے تلاش کریں", "selectSupportedEndpoint": "کم از کم ایک سپورٹ کردہ اینڈپوائنٹ منتخب کریں", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { - "title": "Settings", - "general": "General", - "security": "Security", - "appearance": "Appearance", - "routing": "Routing", - "cache": "Cache", - "resilience": "Resilience", + "title": "ترتیبات", + "general": "عمومی", + "security": "سیکیورٹی", + "appearance": "ظاہری شکل", + "routing": "روٹنگ", + "cache": "کیش", + "resilience": "لچک پذیری", "description": "تفصیل", "enable": "فعال کریں", "disable": "غیر فعال کریں", @@ -6551,25 +6554,25 @@ "routingOpStatusSeparator": " ·", "resilienceSettingsIntro": "فراہم کنندگان کے ناکام ہونے پر خودکار دوبارہ کوشش، کولڈاؤن، اور فال بیک۔", "aiSettingsIntro": "سوچنے کے بجٹ، ماڈل رویے، اور کمپریشن کے لیے AI مخصوص ترتیبات۔", - "systemPrompt": "System Prompt", - "thinkingBudget": "Thinking Budget", + "systemPrompt": "سسٹم پرامپٹ", + "thinkingBudget": "سوچنے کا بجٹ", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "HTTP پراکسی", "1proxy": "1proxy", - "proxySubTabsAria": "Proxy sections", - "requestBodyLimitTitle": "Request Body Limit", - "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.", - "requestBodyLimitInputLabel": "Request body limit in MB", - "requestBodyLimitEmptyError": "Enter a limit in MB", - "requestBodyLimitWholeNumberError": "Use a whole number", - "requestBodyLimitMinimumError": "Minimum is {min} MB", - "requestBodyLimitMaximumError": "Maximum is {max} MB", - "requestBodyLimitLoadFailed": "Failed to load request limit settings", - "requestBodyLimitSaveSuccess": "Request body limit saved", - "requestBodyLimitSaveFailed": "Failed to save request body limit", - "requestBodyLimitSaving": "Saving...", - "requestBodyLimitSave": "Save", - "requestBodyLimitCurrent": "Current: {value}", + "proxySubTabsAria": "پراکسی سیکشنز", + "requestBodyLimitTitle": "درخواست کی باڈی کی حد", + "requestBodyLimitDescription": "درخواست کی باڈی پارس ہونے سے پہلے قابلِ قبول API پے لوڈ کا زیادہ سے زیادہ سائز۔ مخصوص اپ لوڈ روٹس میں کم از کم ان کی پہلے سے طے شدہ 100 MB کی حد برقرار رہتی ہے۔", + "requestBodyLimitInputLabel": "درخواست کی باڈی کی حد MB میں", + "requestBodyLimitEmptyError": "MB میں حد درج کریں", + "requestBodyLimitWholeNumberError": "صحیح عدد استعمال کریں", + "requestBodyLimitMinimumError": "کم از کم حد {min} MB ہے", + "requestBodyLimitMaximumError": "زیادہ سے زیادہ حد {max} MB ہے", + "requestBodyLimitLoadFailed": "درخواست کی حد کی ترتیبات لوڈ نہیں ہو سکیں", + "requestBodyLimitSaveSuccess": "درخواست کی باڈی کی حد محفوظ ہو گئی", + "requestBodyLimitSaveFailed": "درخواست کی باڈی کی حد محفوظ نہیں ہو سکی", + "requestBodyLimitSaving": "محفوظ کیا جا رہا ہے...", + "requestBodyLimitSave": "محفوظ کریں", + "requestBodyLimitCurrent": "موجودہ: {value}", "cacheConfigLoadFailed": "کیچ سیٹنگز لوڈ کرنے میں ناکامی ہوئی", "cacheConfigSaveSuccess": "کیچ سیٹنگز محفوظ کر لی گئیں", "cacheConfigSaveFailed": "کیچ سیٹنگز محفوظ کرنے میں ناکامی", @@ -6583,69 +6586,69 @@ "modelCatalogCacheTtlSave": "محفوظ کریں", "modelCatalogCacheTtlCurrent": "موجودہ: {value} ملی سیکنڈ", "mitmProxy": "MITM پراکسی", - "pricing": "Pricing", - "storage": "Storage", - "policies": "Policies", - "ipFilter": "IP Filter", - "comboDefaults": "Combo Defaults", - "fallbackChains": "Fallback Chains", - "changePassword": "Change Password", - "enablePassword": "Enable Password", - "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "memoryTitle": "Memory", - "memoryDesc": "Persistent cross-session conversational memory", - "memoryEnabled": "Enable Memory", - "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.", + "pricing": "قیمتوں کا تعین", + "storage": "اسٹوریج", + "policies": "پالیسیاں", + "ipFilter": "IP فلٹر", + "comboDefaults": "کومبو کی طے شدہ ترتیبات", + "fallbackChains": "متبادل چینز", + "changePassword": "پاس ورڈ تبدیل کریں", + "enablePassword": "پاس ورڈ فعال کریں", + "darkMode": "ڈارک موڈ", + "lightMode": "لائٹ موڈ", + "memoryTitle": "میموری", + "memoryDesc": "مختلف سیشنز کے درمیان برقرار رہنے والی مکالماتی میموری", + "memoryEnabled": "میموری فعال کریں", + "memoryEnabledDesc": "فعال ہونے پر، OmniRoute ماضی کا متعلقہ سیاق و سباق شامل کرے گا۔", "memoryTokenCostWarning": "توجہ فرمائیں: میموری فعال ہونے کے ساتھ، OmniRoute ہر چیٹ کی درخواست میں حاصل کردہ سیاق و سباق کے {tokens} ٹوکنز تک داخل کرتا ہے — اس سے ٹوکن کا استعمال اور لاگت بڑھ جاتی ہے۔ کسی مخصوص درخواست کے لیے انجیکشن کو چھوڑنے کے لیے، \"x-omniroute-no-memory: true\" ہیڈر بھیجیں۔", - "maxTokens": "Max Tokens", - "retentionDays": "Retention", - "recent": "Recent", - "recentDesc": "Chronological window", - "semantic": "Semantic", - "semanticDesc": "Vector search", - "hybrid": "Hybrid", - "hybridDesc": "Recent + Semantic", - "skillsTitle": "Skills", - "skillsDesc": "Tools for models", - "skillsEnabled": "Enable Skills", - "skillsEnabledDesc": "Allows agents to trigger functions.", - "skillsComingSoon": "Skills marketplace coming soon.", - "memorySkillsTitle": "Memory & Skills", - "memorySkillsDesc": "Persistent context & capabilities", - "modelsDevTitle": "Model Database", - "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev", - "modelsDevEnabled": "Enable models.dev Sync", - "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database", - "modelsDevInterval": "Sync Interval", - "syncNow": "Sync Now", - "syncing": "Syncing...", - "lastSync": "Last sync", - "never": "Never", - "justNow": "Just now", - "modelsDevStats": "Sync Statistics", - "modelsDevStatsDesc": "Current models.dev data coverage", - "providers": "Providers", - "modelsWithPricing": "Models with Pricing", - "capabilities": "Capabilities", - "lastSyncCount": "Last Sync Count", - "lastSyncFull": "Last full sync", - "modelsDevInfo": "How It Works", - "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.", - "modelsDevInfoResolution": "Pricing resolution order (highest priority first):", - "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default", - "systemTheme": "System Theme", - "debugToggle": "Enable Debug Mode", + "maxTokens": "زیادہ سے زیادہ ٹوکنز", + "retentionDays": "برقرار رکھنے کی مدت", + "recent": "حالیہ", + "recentDesc": "ترتیبِ وقت کے مطابق ونڈو", + "semantic": "معنوی", + "semanticDesc": "ویکٹر تلاش", + "hybrid": "ہائبرڈ", + "hybridDesc": "حالیہ + معنوی", + "skillsTitle": "مہارتیں", + "skillsDesc": "ماڈلز کے لیے ٹولز", + "skillsEnabled": "اسکلز فعال کریں", + "skillsEnabledDesc": "ایجنٹس کو فنکشنز متحرک کرنے کی اجازت دیتا ہے۔", + "skillsComingSoon": "اسکلز مارکیٹ پلیس جلد آ رہی ہے۔", + "memorySkillsTitle": "میموری اور اسکلز", + "memorySkillsDesc": "مستقل سیاق و سباق اور صلاحیتیں", + "modelsDevTitle": "ماڈل ڈیٹابیس", + "modelsDevDesc": "models.dev سے قیمتوں، صلاحیتوں اور خصوصیات کو خودکار طور پر ہم وقت کریں", + "modelsDevEnabled": "models.dev ہم وقتی فعال کریں", + "modelsDevEnabledDesc": "اوپن سورس models.dev ڈیٹابیس سے ماڈل کی قیمتیں، صلاحیتیں اور خصوصیات حاصل کریں", + "modelsDevInterval": "ہم وقتی کا وقفہ", + "syncNow": "ابھی ہم وقت کریں", + "syncing": "ہم وقت کیا جا رہا ہے...", + "lastSync": "آخری ہم وقتی", + "never": "کبھی نہیں", + "justNow": "ابھی ابھی", + "modelsDevStats": "ہم وقتی کے اعداد و شمار", + "modelsDevStatsDesc": "موجودہ models.dev ڈیٹا کوریج", + "providers": "فراہم کنندگان", + "modelsWithPricing": "قیمتوں والے ماڈلز", + "capabilities": "صلاحیتیں", + "lastSyncCount": "آخری ہم وقتی کی تعداد", + "lastSyncFull": "آخری مکمل ہم وقتی", + "modelsDevInfo": "یہ کیسے کام کرتا ہے", + "modelsDevInfoDesc": "models.dev، SST/OpenCode ٹیم کے زیر انتظام AI ماڈل کی خصوصیات کا ایک اوپن سورس ڈیٹابیس ہے۔ یہ 100+ فراہم کنندگان کے 4,000+ ماڈلز کے لیے قیمتیں، صلاحیتیں، سیاق کی حدود اور طریقۂ کار فراہم کرتا ہے۔", + "modelsDevInfoResolution": "قیمت کے تعین کی ترتیب (سب سے زیادہ ترجیح پہلے):", + "modelsDevInfoOrder": "صارف کی اوور رائیڈ → models.dev → LiteLLM → ہارڈ کوڈ شدہ ڈیفالٹ", + "systemTheme": "سسٹم تھیم", + "debugToggle": "ڈیبگ موڈ فعال کریں", "logToolSourcesToggle": "ٹول کے ذرائع لاگ کریں", "logToolSourcesDescription": "ہر درخواست پر ایک تشخیصی لاگ لائن جاری کریں جو ٹول کی تعداد اور MCP/hosted/client کے ذرائع کی تفصیل کا خلاصہ پیش کرے۔", - "homePinProviderQuotaToHome": "Pin Information to Home Page", + "homePinProviderQuotaToHome": "معلومات کو ہوم پیج پر پن کریں", "homePinnedSectionsDesc": "منتخب کریں کہ ہوم پیج کے اوپری حصے میں کن حصوں کو پن کرنا ہے۔", - "homeProviderQuotaLimits": "Provider Quota Limits", - "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.", - "homeQuickStart": "Quick Start", - "homeQuickStartDesc": "Show the Quick Start panel on the Home page.", - "homeProviderTopology": "Provider Topology", - "homeProviderTopologyDesc": "Show the Provider Topology on the Home page.", + "homeProviderQuotaLimits": "فراہم کنندہ کے کوٹے کی حدود", + "homeProviderQuotaLimitsDesc": "فراہم کنندہ کے کوٹے کی حیثیت کا کنٹینر (Refresh All بٹن کے ساتھ) ہوم پیج کے اوپر پن کریں۔", + "homeQuickStart": "فوری آغاز", + "homeQuickStartDesc": "ہوم پیج پر فوری آغاز کا پینل دکھائیں۔", + "homeProviderTopology": "فراہم کنندگان کی ٹوپولوجی", + "homeProviderTopologyDesc": "ہوم پیج پر فراہم کنندگان کی ٹوپولوجی دکھائیں۔", "accountEmailVisibility": "اکاؤنٹ ای میل کی نمائش", "accountEmailVisibilityDesc": "پرووائیڈرز، کمبوز، لاگز، کوٹہ، اور پلے گراؤنڈ اسکرینز پر مکمل اکاؤنٹ ای میلز دکھائیں۔ انہیں پہلے سے طے شدہ طور پر چھپانے کے لیے اسے بند کریں۔", "comboConfigMode": "کمبو کنفیگریشن موڈ", @@ -6661,89 +6664,89 @@ "providerQuotaAutoRefreshInterval": "ریفریش کا وقفہ", "providerQuotaAutoRefreshIntervalDesc": "کوٹہ ویو کو کتنی بار ریفریش ہونا چاہیے، سیکنڈز میں۔", "seconds": "سیکنڈز", - "sidebarVisibilityToggle": "Show Sidebar Items", - "enableCache": "Enable Cache", - "cacheTTL": "Cache TTL", - "maxCacheSize": "Max Cache Size", - "clearCache": "Clear Cache", - "cacheCleared": "Cache cleared successfully", - "clearCacheFailed": "Failed to clear cache", - "cacheHits": "Cache Hits", - "cacheMisses": "Cache Misses", - "hitRate": "Hit Rate", - "cacheEntries": "Cache Entries", - "cacheSettings": "Cache Settings", - "semanticCache": "Semantic Cache", - "maxEntries": "Max Entries", - "ttlMinutes": "TTL (minutes)", - "promptCache": "Prompt Cache", - "strategy": "Strategy", - "preserveClientCache": "Preserve Client Cache", - "enabled": "Enabled", + "sidebarVisibilityToggle": "سائیڈ بار آئٹمز دکھائیں", + "enableCache": "کیش فعال کریں", + "cacheTTL": "کیش TTL", + "maxCacheSize": "کیش کا زیادہ سے زیادہ سائز", + "clearCache": "کیش صاف کریں", + "cacheCleared": "کیش کامیابی سے صاف کر دیا گیا", + "clearCacheFailed": "کیش صاف کرنے میں ناکامی", + "cacheHits": "کیش ہٹس", + "cacheMisses": "کیش مِسز", + "hitRate": "ہٹ ریٹ", + "cacheEntries": "کیش اندراجات", + "cacheSettings": "کیش کی ترتیبات", + "semanticCache": "سیمنٹک کیش", + "maxEntries": "زیادہ سے زیادہ اندراجات", + "ttlMinutes": "TTL (منٹ)", + "promptCache": "پرامپٹ کیش", + "strategy": "حکمتِ عملی", + "preserveClientCache": "کلائنٹ کیش برقرار رکھیں", + "enabled": "فعال", "loading": "Loading...", - "saving": "Saving...", - "save": "Save", - "circuitBreaker": "Circuit Breaker", - "retryPolicy": "Retry Policy", - "maxRetries": "Max Retries", - "retryDelay": "Retry Delay", - "timeoutMs": "Timeout (ms)", - "enableSystemPrompt": "Enable System Prompt", - "systemPromptText": "System Prompt Text", - "autoDisableBannedAccounts": "Auto-Disable Banned Accounts", - "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.", - "autoDisableThreshold": "Ban Threshold", - "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "saving": "محفوظ کیا جا رہا ہے...", + "save": "محفوظ کریں", + "circuitBreaker": "سرکٹ بریکر", + "retryPolicy": "دوبارہ کوشش کی پالیسی", + "maxRetries": "دوبارہ کوششوں کی زیادہ سے زیادہ تعداد", + "retryDelay": "دوبارہ کوشش میں تاخیر", + "timeoutMs": "ٹائم آؤٹ (ms)", + "enableSystemPrompt": "سسٹم پرامپٹ فعال کریں", + "systemPromptText": "سسٹم پرامپٹ کا متن", + "autoDisableBannedAccounts": "پابندی زدہ اکاؤنٹس خودکار طور پر غیر فعال کریں", + "autoDisableDescription": "اگر پرووائیڈر کنکشنز مخصوص حتمی پابندی کے سگنلز واپس کریں (مثلاً HTTP 403 'اپنے اکاؤنٹ کی تصدیق کریں') تو انہیں مستقل طور پر غیر فعال نشان زد کریں۔ اس سے وہ کومبو روٹیشن سے ہٹا دیے جائیں گے۔", + "autoDisableThreshold": "پابندی کی حد", + "autoDisableThresholdDesc": "مستقل غیر فعالیت سے پہلے درکار مسلسل پابندی کے سگنلز۔", + "autoDisableBannedScope": "خودکار غیر فعالیت کا اطلاق کریں", + "autoDisableBannedScopeDesc": "اگر پابندی کے بعد OmniRoute دوبارہ کوششیں جاری رکھے تو اپ اسٹریم لاگ اِن سیٹس (بامعاوضہ سبسکرپشنز اور مفت اکاؤنٹس) کو لاک کر سکتا ہے۔ بامعاوضہ پری پیڈ API keys کو یہ خطرہ نہیں ہوتا—انہیں پول میں رہنے دیں تاکہ fill-first اگلی key استعمال کر سکے۔", + "autoDisableBannedScopeAll": "تمام کنکشنز", + "autoDisableBannedScopeAllDesc": "پری پیڈ API keys سمیت، مستقل پابندی کا سگنل واپس کرنے والے ہر کنکشن کو غیر فعال کریں۔", + "autoDisableBannedScopeSubscription": "صرف لاگ اِن / سبسکرپشن اکاؤنٹس", + "autoDisableBannedScopeSubscriptionDesc": "OAuth، کوکی، سیشن، اور ویب لاگ اِن سیٹس (بامعاوضہ یا مفت) کو غیر فعال کریں۔ پری پیڈ API keys فعال رہیں تاکہ روٹنگ فیل اوور کر سکے۔", "customBannedSignals": "ممنوعہ الفاظ", "customBannedSignalsDesc": "اضافی الفاظ جو مستقل اکاؤنٹ پر پابندی کی شناخت کو متحرک کرتے ہیں۔ پہلے سے موجود الفاظ ہمیشہ لاگو ہوتے ہیں۔", "customBannedSignalsPlaceholder": "مثال کے طور پر api key revoked", "noCustomBannedSignals": "کوئی حسب ضرورت الفاظ نہیں ہیں۔ صرف پہلے سے موجود الفاظ فعال ہیں۔", - "resilienceStructureTitle": "Resilience Structure", + "resilienceStructureTitle": "لچک پذیری کا ڈھانچہ", "resilienceStructureDesc": "یہ صفحہ صرف رویے کو ترتیب دیتا ہے۔ صحت کے صفحہ پر لائیو بریکر اسٹیٹ دکھایا گیا ہے۔ کومبو مخصوص دوبارہ کوشش اور راؤنڈ رابن سلاٹ کنٹرول کومبو سیٹنگز پر رہتا ہے۔", - "enableThinking": "Enable Thinking", - "maxThinkingTokens": "Max Thinking Tokens", - "enableProxy": "Enable Proxy", + "enableThinking": "سوچنے کا عمل فعال کریں", + "maxThinkingTokens": "سوچنے کے ٹوکنز کی زیادہ سے زیادہ تعداد", + "enableProxy": "پراکسی فعال کریں", "perKeyProxyEnabled": "فی کلید پراکسی تفویض فعال کریں", "perKeyProxyEnabledDesc": "فعال ہونے پر، ہر پرووائیڈر کنکشن اپنی پراکسی تفویض استعمال کر سکتا ہے", - "proxyUrl": "Proxy URL", - "pricingRates": "Pricing Rates Format", - "currentPricing": "Current Pricing Overview", - "loadingPricing": "Loading pricing data...", - "noPricing": "No pricing data available", - "input": "Input", - "output": "Output", - "cached": "Cached", + "proxyUrl": "پراکسی URL", + "pricingRates": "قیمتوں کی شرحوں کا فارمیٹ", + "currentPricing": "موجودہ قیمتوں کا جائزہ", + "loadingPricing": "قیمتوں کا ڈیٹا لوڈ ہو رہا ہے...", + "noPricing": "قیمتوں کا کوئی ڈیٹا دستیاب نہیں", + "input": "اِن پٹ", + "output": "آؤٹ پٹ", + "cached": "کیش شدہ", "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "customPricing": "Custom Pricing", - "databaseSize": "Database Size", - "backupDb": "Backup Database", - "restoreDb": "Restore Database", - "exportData": "Export Data", - "importData": "Import Data", - "clearData": "Clear All Data", - "clearDataConfirm": "This will permanently delete all data. Are you sure?", - "enableRequestLogs": "Enable Request Logs", - "logRetention": "Log Retention", - "ipWhitelist": "IP Whitelist", - "ipBlacklist": "IP Blacklist", - "addIP": "Add IP", - "savedSuccessfully": "Settings saved successfully", + "cacheCreation": "کیش کی تخلیق", + "customPricing": "حسبِ ضرورت قیمت بندی", + "databaseSize": "ڈیٹابیس کا حجم", + "backupDb": "ڈیٹابیس کا بیک اپ لیں", + "restoreDb": "ڈیٹابیس بحال کریں", + "exportData": "ڈیٹا برآمد کریں", + "importData": "ڈیٹا درآمد کریں", + "clearData": "تمام ڈیٹا صاف کریں", + "clearDataConfirm": "اس سے تمام ڈیٹا مستقل طور پر حذف ہو جائے گا۔ کیا آپ کو یقین ہے؟", + "enableRequestLogs": "درخواست کے لاگز فعال کریں", + "logRetention": "لاگ محفوظ رکھنے کی مدت", + "ipWhitelist": "IP وائٹ لسٹ", + "ipBlacklist": "IP بلیک لسٹ", + "addIP": "IP شامل کریں", + "savedSuccessfully": "ترتیبات کامیابی سے محفوظ ہو گئیں", "ai": "AI", - "advanced": "Advanced", - "localMode": "Local Mode — All data stored on your machine", - "settingsSectionsAria": "Settings sections", - "switchThemes": "Switch between light and dark themes", - "themeSelectionAria": "Theme selection", - "themeLight": "Light", - "themeDark": "Dark", - "themeSystem": "System", + "advanced": "اعلیٰ اختیارات", + "localMode": "مقامی موڈ — تمام ڈیٹا آپ کی مشین پر محفوظ ہے", + "settingsSectionsAria": "ترتیبات کے حصے", + "switchThemes": "روشن اور تاریک تھیمز کے درمیان تبدیل کریں", + "themeSelectionAria": "تھیم کا انتخاب", + "themeLight": "روشن", + "themeDark": "تاریک", + "themeSystem": "سسٹم", "endpointTunnelVisibility": "اختتامی سرنگ کی مرئیت", "endpointTunnelVisibilityDesc": "سرنگ کی حالت کو تبدیل کیے بغیر اینڈ پوائنٹ پیج سے سرنگ کنٹرولز چھپائیں۔", "showCloudflareTunnel": "Cloudflare کوئیک ٹنل", @@ -6752,47 +6755,47 @@ "showTailscaleFunnelDesc": "اختتامی صفحہ پر ٹیل اسکیل فنل کنٹرولز دکھائیں۔", "showNgrokTunnel": "ngrok ٹنل", "showNgrokTunnelDesc": "اینڈ پوائنٹ پیج پر اینگروک ٹنل کنٹرولز دکھائیں۔", - "sidebarVisibility": "Hide sidebar items", - "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter without disabling any features", - "sidebarVisibilityHint": "Any sidebar section is hidden automatically when all of its entries are hidden", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", - "hideHealthLogs": "Hide Health Check Logs", - "hideHealthLogsDesc": "When ON, suppress [HealthCheck] messages in server console", - "themeAccent": "Theme color", - "themeAccentDesc": "Choose a preset color or create your own theme with one color", - "themeCreate": "Create theme", - "themeCustom": "Custom theme", - "themeBlue": "Blue", - "themeRed": "Red", - "themeGreen": "Green", - "themeViolet": "Violet", - "themeOrange": "Orange", - "themeCyan": "Cyan", + "sidebarVisibility": "سائیڈ بار آئٹمز چھپائیں", + "sidebarVisibilityDesc": "خصوصیات کو غیر فعال کیے بغیر بصری بے ترتیبی کم کرنے کے لیے سائیڈ بار کی کوئی بھی نیویگیشن انٹری چھپائیں", + "sidebarVisibilityHint": "جب کسی سائیڈ بار حصے کی تمام انٹریز چھپی ہوں تو وہ خودکار طور پر چھپ جاتا ہے", + "presetAll": "سبھی", + "presetAllDesc": "سب کچھ دکھائیں", + "presetEssentials": "ضروریات", + "presetEssentialsDesc": "ابتدائی راستہ - اعلیٰ ٹولز تلاش کیے جا سکتے ہیں", + "presetMinimal": "کم سے کم", + "presetMinimalDesc": "صرف بنیادی صفحات", + "presetDeveloper": "ڈیولپر", + "presetDeveloperDesc": "ڈیولپمنٹ اور پراکسی ٹولز", + "presetAdmin": "منتظم", + "presetAdminDesc": "نگرانی اور آڈٹ", + "settingsSidebarTitle": "سائیڈبار کی تخصیص", + "settingsSidebarDesc": "منتخب کریں کہ سائیڈبار میں کون سے آئٹمز دکھانے ہیں۔ ضروری آئٹمز، جدید ٹولز کو تلاش کے قابل رکھتے ہیں۔", + "hideHealthLogs": "ہیلتھ چیک لاگز چھپائیں", + "hideHealthLogsDesc": "فعال ہونے پر، سرور کنسول میں [HealthCheck] پیغامات کو روک دیں", + "themeAccent": "تھیم کا رنگ", + "themeAccentDesc": "پہلے سے طے شدہ رنگ منتخب کریں یا ایک رنگ سے اپنی تھیم بنائیں", + "themeCreate": "تھیم بنائیں", + "themeCustom": "حسبِ ضرورت تھیم", + "themeBlue": "نیلا", + "themeRed": "سرخ", + "themeGreen": "سبز", + "themeViolet": "بنفشی", + "themeOrange": "نارنجی", + "themeCyan": "فیروزی", "whitelabeling": "Branding", - "whitelabelingDesc": "Customize the application name and logo", - "appName": "Application Name", - "appNameDesc": "Display name shown in sidebar and browser tab", - "customLogo": "Custom Logo URL", - "customLogoDesc": "URL to your custom logo image", - "uploadLogo": "Upload Logo", - "resetLogo": "Reset to Default", - "logoPreview": "Preview", - "customFavicon": "Browser Favicon", - "customFaviconDesc": "URL to your custom favicon (shown in browser tab)", - "uploadFavicon": "Upload Favicon", - "resetFavicon": "Reset Favicon", - "faviconPreview": "Favicon Preview", + "whitelabelingDesc": "ایپلیکیشن کے نام اور لوگو کو حسبِ ضرورت بنائیں", + "appName": "ایپلیکیشن کا نام", + "appNameDesc": "سائیڈبار اور براؤزر ٹیب میں دکھایا جانے والا نام", + "customLogo": "حسبِ ضرورت لوگو کا URL", + "customLogoDesc": "آپ کے حسبِ ضرورت لوگو کی تصویر کا URL", + "uploadLogo": "لوگو اپ لوڈ کریں", + "resetLogo": "ڈیفالٹ پر ری سیٹ کریں", + "logoPreview": "پیش منظر", + "customFavicon": "براؤزر فیوی آئیکن", + "customFaviconDesc": "آپ کے حسبِ ضرورت فیوی آئیکن کا URL (براؤزر ٹیب میں دکھایا جاتا ہے)", + "uploadFavicon": "فیوی آئیکن اپ لوڈ کریں", + "resetFavicon": "فیوی آئیکن ری سیٹ کریں", + "faviconPreview": "فیوی آئیکن کا پیش منظر", "logoFileTooLarge": "لوگو فائل 500KB سے کم ہونی چاہیے", "faviconFileTooLarge": "فیو آئیکن فائل 50KB سے کم ہونی چاہیے", "invalidLogoFileType": "فائل کی قسم غلط ہے۔ براہ کرم PNG، JPG، SVG، GIF، یا WebP اپ لوڈ کریں۔", @@ -6800,15 +6803,15 @@ "failedToReadFile": "فائل پڑھنے میں ناکامی", "startOnLogin": "لاگ ان پر شروع کریں", "startOnLoginDesc": "سسٹم اسٹارٹ اپ پر خود بخود OmniRoute لانچ کریں اور پس منظر کی ٹرے میں خاموشی سے چلائیں۔", - "flushCache": "Flush Cache", - "flushing": "Flushing…", - "size": "Size", - "hits": "Hits", - "evictions": "Evictions", - "loadingCacheStats": "Loading cache stats…", - "globalProxy": "Global Proxy", - "globalProxyDesc": "Configure a global outbound proxy for all API calls. Individual providers, combos, and keys can override this.", - "noGlobalProxy": "No global proxy configured", + "flushCache": "کیش صاف کریں", + "flushing": "صاف کیا جا رہا ہے…", + "size": "حجم", + "hits": "ہٹس", + "evictions": "اخراج", + "loadingCacheStats": "کیش کے اعدادوشمار لوڈ ہو رہے ہیں…", + "globalProxy": "عالمی پراکسی", + "globalProxyDesc": "تمام API کالز کے لیے ایک عالمی آؤٹ باؤنڈ پراکسی ترتیب دیں۔ انفرادی فراہم کنندگان، کومبوز اور کلیدیں اسے اوور رائیڈ کر سکتی ہیں۔", + "noGlobalProxy": "کوئی عالمی پراکسی ترتیب نہیں دی گئی", "proxyPool": "پراکسی پول", "freePool": "مفت پول", "proxyDocumentation": "پراکسی دستاویزات", @@ -6896,21 +6899,21 @@ "refreshInterval": "تازہ کاری کا وقفہ", "ruleModeDescription": "قواعد وضع کی وضاحت" }, - "bulkHealthcheck": "Bulk Healthcheck", - "bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.", - "healthcheckTesting": "Testing...", - "healthcheckAll": "Healthcheck All", - "healthcheckFailed": "Failed to run healthcheck", - "healthcheckTestingAll": "Testing all proxies in parallel...", - "healthcheckTotal": "Total", - "healthcheckWorking": "Working", - "healthcheckFailedLabel": "Failed", - "healthcheckStatus": "Status", - "healthcheckProxyUrl": "Proxy URL", - "healthcheckLatency": "Latency", + "bulkHealthcheck": "اجتماعی ہیلتھ چیک", + "bulkHealthcheckDesc": "تمام ترتیب شدہ پراکسیز کو ہدف URL کے مقابل جانچیں تاکہ معلوم ہو سکے کہ کون سی کام کرتی ہیں۔", + "healthcheckTesting": "جانچ جاری ہے...", + "healthcheckAll": "سب کی صحت جانچیں", + "healthcheckFailed": "صحت کی جانچ چلانے میں ناکامی", + "healthcheckTestingAll": "تمام پراکسیز کی متوازی جانچ جاری ہے...", + "healthcheckTotal": "کل", + "healthcheckWorking": "فعال", + "healthcheckFailedLabel": "ناکام", + "healthcheckStatus": "حالت", + "healthcheckProxyUrl": "پراکسی URL", + "healthcheckLatency": "تاخیر", "proxyDocumentationScopeTitle": "پروکسی اسکوپ ریزولوشن", "proxyDocumentationScopeDescBefore": "OmniRoute آؤٹ باؤنڈ پروکسی کو ترجیحی ترتیب میں حل کرتا ہے:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "کومبو → اکاؤنٹ → فراہم کنندہ → عالمی", "proxyDocumentationScopeDescAfter": "۔ سب سے مخصوص اسکوپ غالب رہتا ہے۔", "proxyDocumentationAddTitle": "حسب ضرورت پروکسی شامل کرنا", "proxyDocumentationAddDescBefore": "پر جائیں", @@ -6966,22 +6969,22 @@ "proxyFreePoolLoadMore": "مزید لوڈ کریں", "close": "بند کریں", "cancel": "منسوخ کریں", - "globalLabel": "Global", - "configure": "Configure", - "globalSystemPrompt": "Global System Prompt", - "saved": "Saved", + "globalLabel": "عالمی", + "configure": "ترتیب دیں", + "globalSystemPrompt": "عالمی سسٹم پرامپٹ", + "saved": "محفوظ ہو گیا", "beforePromptLabel": "پرامپٹ سے پہلے", "beforePromptDesc": "ایجنٹ/فراہم کنندہ کی سسٹم ہدایات سے پہلے شامل کیا گیا", "beforePromptPlaceholder": "ایجنٹ/فراہم کنندہ کے پرامپٹ سے پہلے ہدایات داخل کی گئیں...", "afterPromptLabel": "پرامپٹ کے بعد", "afterPromptDesc": "ایجنٹ/فراہم کنندہ کی سسٹم ہدایات کے بعد شامل کیا گیا", "afterPromptPlaceholder": "ایجنٹ/فراہم کنندہ کے پرامپٹ کے بعد ہدایات داخل کی گئیں...", - "chars": "{count} chars", - "thinkingBudgetTitle": "Thinking Budget", + "chars": "{count} حروف", + "thinkingBudgetTitle": "سوچنے کا بجٹ", "thinkingBudgetDesc": "Control AI reasoning token usage across all requests", "thinkingBudgetIndependenceHint": "کمپریشن، روٹنگ، اور ٹوکن-حد کی خصوصیات ہر موڈ میں کام کرتی رہتی ہیں۔ آٹو کا مطلب \"آٹو-شو سوچ\" نہیں ہے — یہ کلائنٹ کی سوچ کے شعبوں کو ہٹا دیتا ہے۔", - "passthrough": "Passthrough", - "passthroughDesc": "No changes — client controls thinking budget", + "passthrough": "بلا تبدیلی منتقلی", + "passthroughDesc": "کوئی تبدیلی نہیں — کلائنٹ سوچنے کے بجٹ کو کنٹرول کرتا ہے", "thinkingModePassthrough": "پاس تھرو", "thinkingModePassthroughDesc": "کلائنٹ کی وجہ کو بغیر تبدیلی کے چھوڑیں (محنت، خلاصہ، سوچنے کے بلاکس)۔ Codex/Desktop کے نظر آنے والے خیالات کے لیے ضروری۔ ڈیفالٹ۔", "thinkingModeAuto": "خودکار (اسٹرپ)", @@ -6991,36 +6994,36 @@ "thinkingModeAdaptive": "ایڈاپٹو", "thinkingModeAdaptiveDesc": "پیغام کی تعداد، ٹولز، اور پرامپٹ کی لمبائی کا استعمال کرتے ہوئے بنیادی کوشش سے بجٹ کی پیمائش کریں۔", "auto": "Auto Combo", - "autoDesc": "Self-healing smart routing pool (Performance optimized)", - "custom": "Custom", - "customDesc": "Set a fixed token budget for all requests", - "adaptive": "Adaptive", - "adaptiveDesc": "Scale budget based on request complexity", - "effortNone": "None (0 tokens)", - "effortLow": "Low (1K tokens)", - "effortMedium": "Medium (10K tokens)", - "effortHigh": "High (128K tokens)", - "tokenBudget": "Token Budget", - "tokens": "tokens", - "baseEffortLevel": "Base Effort Level", + "autoDesc": "خودکار بحالی والا اسمارٹ روٹنگ پول (کارکردگی کے لیے بہتر بنایا گیا)", + "custom": "حسبِ ضرورت", + "customDesc": "تمام درخواستوں کے لیے ٹوکنز کا مقررہ بجٹ طے کریں", + "adaptive": "موافقت پذیر", + "adaptiveDesc": "درخواست کی پیچیدگی کی بنیاد پر بجٹ کو ایڈجسٹ کریں", + "effortNone": "کوئی نہیں (0 ٹوکنز)", + "effortLow": "کم (1K ٹوکنز)", + "effortMedium": "درمیانہ (10K ٹوکنز)", + "effortHigh": "زیادہ (128K ٹوکنز)", + "tokenBudget": "ٹوکن بجٹ", + "tokens": "ٹوکنز", + "baseEffortLevel": "بنیادی محنت کی سطح", "adaptiveHint": "Adaptive mode scales from this base level based on message count, tool usage, and prompt length.", - "requireLogin": "Require login", - "requireLoginDesc": "When ON, dashboard requires password. When OFF, access without login.", - "currentPassword": "Current Password", - "enterCurrentPassword": "Enter current password", - "newPassword": "New Password", - "enterNewPassword": "Enter new password", - "confirmPassword": "Confirm New Password", - "confirmPasswordPlaceholder": "Confirm new password", - "passwordsNoMatch": "Passwords do not match", - "passwordUpdated": "Password updated successfully", - "failedUpdatePassword": "Failed to update password", - "errorOccurred": "An error occurred", - "updatePassword": "Update Password", - "setPassword": "Set Password", - "apiEndpointProtection": "API Endpoint Protection", - "requireAuthModels": "Require API key for /models", - "requireAuthModelsDesc": "When ON, the /v1/models endpoint returns 404 for unauthenticated requests. Prevents model discovery by unauthorized users.", + "requireLogin": "لاگ اِن لازمی کریں", + "requireLoginDesc": "آن ہونے پر، ڈیش بورڈ کے لیے پاس ورڈ درکار ہوگا۔ آف ہونے پر، لاگ اِن کے بغیر رسائی ممکن ہوگی۔", + "currentPassword": "موجودہ پاس ورڈ", + "enterCurrentPassword": "موجودہ پاس ورڈ درج کریں", + "newPassword": "نیا پاس ورڈ", + "enterNewPassword": "نیا پاس ورڈ درج کریں", + "confirmPassword": "نئے پاس ورڈ کی تصدیق کریں", + "confirmPasswordPlaceholder": "نئے پاس ورڈ کی تصدیق کریں", + "passwordsNoMatch": "پاس ورڈز مماثل نہیں ہیں", + "passwordUpdated": "پاس ورڈ کامیابی سے اپ ڈیٹ ہو گیا", + "failedUpdatePassword": "پاس ورڈ اپ ڈیٹ کرنے میں ناکامی ہوئی", + "errorOccurred": "ایک خرابی پیش آ گئی", + "updatePassword": "پاس ورڈ اپ ڈیٹ کریں", + "setPassword": "پاس ورڈ مقرر کریں", + "apiEndpointProtection": "API اینڈ پوائنٹ کا تحفظ", + "requireAuthModels": "/models کے لیے API کلید درکار کریں", + "requireAuthModelsDesc": "آن ہونے پر، /v1/models اینڈ پوائنٹ غیر مصدقہ درخواستوں کے لیے 404 واپس کرتا ہے۔ یہ غیر مجاز صارفین کو ماڈلز دریافت کرنے سے روکتا ہے۔", "authModelHeading": "فعال اجازت ماڈل", "authModelClient": "کلائنٹ API اینڈ پوائنٹ (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) کو ایک Bearer API کلید کی ضرورت ہوتی ہے۔", "authModelManagement": "مینجمنٹ اینڈ پوائنٹس (/ڈیش بورڈ، /api/*) کو ڈیش بورڈ سیشن یا انتظامی اسناد کی ضرورت ہوتی ہے۔", @@ -7029,16 +7032,16 @@ "bruteForceProtectionDesc": "ایک ہی IP سے بار بار ناکامی کے بعد تھروٹل اور لاک /api/auth/login۔", "corsAllowedOrigins": "CORS کی اجازت ہے۔", "corsAllowedOriginsDesc": "اس سرور کو کال کرنے کی اجازت براؤزر کی اصل کی کوما سے الگ کردہ فہرست۔ خالی فہرست = کوئی براؤزر CORS رسائی نہیں (سرور سے سرور اب بھی کام کرتا ہے)۔ CORS_ALLOW_ALL=true env var صرف ترقی کے لیے استعمال کریں۔", - "blockedProviders": "Blocked Providers", - "blockedProvidersDesc": "Hide specific providers from the /v1/models response. Blocked providers will not appear in model listings.", - "providersBlocked": "{count} provider(s) blocked from /models", - "blockProviderTitle": "Block {provider}", - "unblockProviderTitle": "Unblock {provider}", - "cliFingerprint": "CLI Fingerprint Matching", + "blockedProviders": "مسدود فراہم کنندگان", + "blockedProvidersDesc": "/v1/models کے جواب سے مخصوص فراہم کنندگان کو چھپائیں۔ مسدود فراہم کنندگان ماڈل فہرستوں میں ظاہر نہیں ہوں گے۔", + "providersBlocked": "{count} فراہم کنندہ/فراہم کنندگان /models سے مسدود ہیں", + "blockProviderTitle": "{provider} کو مسدود کریں", + "unblockProviderTitle": "{provider} سے پابندی ہٹائیں", + "cliFingerprint": "CLI فنگر پرنٹ کی مماثلت", "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.", - "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active", - "enableFingerprintTitle": "Enable fingerprint for {provider}", - "disableFingerprintTitle": "Disable fingerprint for {provider}", + "cliFingerprintEnabled": "{count} فراہم کنندہ/فراہم کنندگان کے لیے CLI فنگر پرنٹ فعال ہے", + "enableFingerprintTitle": "{provider} کے لیے فنگر پرنٹ فعال کریں", + "disableFingerprintTitle": "{provider} کے لیے فنگر پرنٹ غیر فعال کریں", "systemTransforms": "سسٹم بلاک ٹرانسفارم پائپ لائن", "systemTransformsDesc": "فی فراہم کنندہ نے فارورڈ کرنے سے پہلے درخواست کے باڈی پر لاگو ٹرانسفارمز کی پائپ لائن کا آرڈر دیا۔ کسی بھی فراہم کنندہ کی شناخت کی حمایت کرتا ہے۔", "systemTransformsAddProvider": "فراہم کنندہ شامل کریں۔", @@ -7049,29 +7052,29 @@ "systemTransformsOpMoveUp": "اوپر بڑھیں۔", "systemTransformsOpMoveDown": "نیچے کی طرف بڑھیں۔", "systemTransformsOpDelete": "آپشن کو حذف کریں۔", - "routingStrategy": "Routing Strategy", - "routingAdvancedGuideTitle": "Advanced routing guidance", + "routingStrategy": "روٹنگ کی حکمت عملی", + "routingAdvancedGuideTitle": "روٹنگ کی جدید رہنمائی", "routingAdvancedGuideHint1": "Use Fill First for predictable priority, Round Robin for fairness, and P2C for latency resilience.", "routingAdvancedGuideHint2": "If providers vary in quality/cost, start with Cost Opt for background work and Least Used for balanced wear.", - "fillFirst": "Fill First", - "fillFirstDesc": "Use accounts in priority order", + "fillFirst": "پہلے مکمل کریں", + "fillFirstDesc": "اکاؤنٹس کو ترجیحی ترتیب میں استعمال کریں", "roundRobin": "Round Robin", - "roundRobinDesc": "Cycle through all accounts", + "roundRobinDesc": "تمام اکاؤنٹس کو باری باری استعمال کریں", "p2c": "P2C", - "p2cDesc": "Pick 2 random, use the healthier one", - "random": "Random", - "randomDesc": "Random account each request", - "leastUsed": "Least Used", - "leastUsedDesc": "Pick least recently used account", - "costOpt": "Cost Opt", - "costOptDesc": "Prefer cheapest available account", - "resetAware": "Reset-Aware RR", + "p2cDesc": "2 اکاؤنٹس بے ترتیب منتخب کریں، زیادہ صحت مند اکاؤنٹ استعمال کریں", + "random": "بے ترتیب", + "randomDesc": "ہر درخواست کے لیے بے ترتیب اکاؤنٹ", + "leastUsed": "سب سے کم استعمال شدہ", + "leastUsedDesc": "حال ہی میں سب سے کم استعمال ہونے والا اکاؤنٹ منتخب کریں", + "costOpt": "لاگت کی بہتری", + "costOptDesc": "دستیاب سستے ترین اکاؤنٹ کو ترجیح دیں", + "resetAware": "ری سیٹ سے آگاہ راؤنڈ رابن", "resetAwareDesc": "صحت مند بقایا کوٹہ اور قریب تر ری سیٹ والے اکاؤنٹس کو ترجیح دیں۔", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "کوٹے کے لحاظ سے وزن یافتہ", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", - "strictRandom": "Strict Random", - "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling", - "stickyLimit": "Sticky Limit", + "strictRandom": "سخت بے ترتیب", + "strictRandomDesc": "شفل ڈیک — دوبارہ شفل کرنے سے پہلے ہر اکاؤنٹ کو ایک بار استعمال کرتا ہے", + "stickyLimit": "مستقل حد", "stickyLimitDesc": "Calls per account before switching", "routingStrategyTitle": "روٹنگ کی حکمت عملی", "routingStrategySubtitle": "9router سے مطابقت: اکاؤنٹ راؤنڈ رابن، اسٹکی لِمٹس، اور کومبو روٹیشن", @@ -7089,225 +7092,225 @@ "providerAccountRoutingDesc": "اس فراہم کنندہ کے لیے عالمی اکاؤنٹ کی حکمت عملی کو اوور رائیڈ کریں (9router برابری)۔", "providerRoutingStrategy": "اکاؤنٹ کی حکمت عملی", "providerRoutingInheritGlobal": "گلوبل ڈیفالٹ اپنائیں", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", - "modelAliases": "Model Aliases", - "modelAliasesTitle": "Model Aliases", - "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.", - "addCustomAlias": "Add Custom Alias", - "deprecatedModelId": "Deprecated model ID", - "newModelId": "New model ID", - "customAliases": "Custom Aliases", - "builtInAliases": "Built-in Aliases", - "backgroundDegradationTitle": "Background Task Degradation", - "backgroundDegradationDesc": "Auto-detect background tasks (titles, summaries) and route to cheaper models", - "enableDegradation": "Enable Background Degradation", - "enableDegradationHint": "When enabled, background tasks like title generation and summarization are routed to cheaper models automatically", - "tasksDetected": "Tasks detected", - "degradationMap": "Model Degradation Map", - "premiumModel": "Premium model", - "cheapModel": "Cheap model", - "detectionPatterns": "Detection Patterns", - "newPattern": "e.g. \"generate a title\"", + "quotaPreflightTitle": "کوٹے کی پیشگی جانچ کی حد", + "quotaPreflightSubtitle": "درخواست اپ اسٹریم بھیجنے سے پہلے ان اکاؤنٹس کو چھوڑ دیں جن کا کوٹہ ختم ہو چکا ہے", + "quotaPreflightEnable": "کوٹے کی پیشگی جانچ فعال کریں", + "quotaPreflightEnableDesc": "ہر درخواست سے پہلے اکاؤنٹ کا باقی کوٹہ (5 گھنٹے / ہفتہ وار / ماہانہ وقفے) چیک کریں۔ حد کے برابر یا اس سے کم کوٹے والے اکاؤنٹس کو اپ اسٹریم کال کے بغیر چھوڑ دیا جاتا ہے۔ Provider Quota صفحے پر مقرر کردہ ہر وقفے کی حدود کو یہاں موجود ڈیفالٹ پر ہمیشہ ترجیح حاصل ہوتی ہے۔", + "quotaPreflightCutoff": "عالمی حد (کم از کم باقی %)", + "quotaPreflightCutoffDesc": "جب کسی اکاؤنٹ کا باقی کوٹہ اس فیصد یا اس سے کم رہ جائے تو اسے استعمال کرنا بند کر دیں؛ یہ ان تمام ونڈوز پر لاگو ہوگا جن کی اپنی کٹ آف حد مقرر نہیں ہے۔ یہ Provider Quota صفحے پر باقی فیصد کی سلاخوں سے مطابقت رکھتا ہے۔", + "quotaPreflightWindowsHint": "اپنی فی ونڈو یا فی پرووائیڈر کٹ آف حد رکھنے والی ونڈوز (جو Provider Quota صفحے پر Cutoff موڈل میں مقرر کی گئی ہو) اس ڈیفالٹ سے متاثر نہیں ہوں گی۔", + "quotaPreflightLoadFailed": "کوٹہ پری فلائٹ کی ترتیبات لوڈ نہیں کی جا سکیں۔", + "modelAliases": "ماڈل عرفی نام", + "modelAliasesTitle": "ماڈل عرفی نام", + "modelAliasesDesc": "عین مماثلتوں یا وائلڈ کارڈ پیٹرنز کے ذریعے ماڈل کے نام دوبارہ میپ کریں۔", + "addCustomAlias": "حسبِ ضرورت عرفی نام شامل کریں", + "deprecatedModelId": "متروک ماڈل ID", + "newModelId": "نیا ماڈل ID", + "customAliases": "حسبِ ضرورت عرفی نام", + "builtInAliases": "بلٹ اِن عرفی نام", + "backgroundDegradationTitle": "پس منظر کے کاموں کی تخفیف", + "backgroundDegradationDesc": "پس منظر کے کاموں (عنوانات، خلاصوں) کا خودکار طور پر پتہ لگائیں اور انہیں کم قیمت ماڈلز کی طرف روٹ کریں", + "enableDegradation": "پس منظر کی تخفیف فعال کریں", + "enableDegradationHint": "فعال ہونے پر، عنوان بنانے اور خلاصہ تیار کرنے جیسے پس منظر کے کام خودکار طور پر کم قیمت ماڈلز کی طرف روٹ کیے جاتے ہیں", + "tasksDetected": "پتہ لگائے گئے کام", + "degradationMap": "ماڈل تخفیف میپ", + "premiumModel": "پریمیم ماڈل", + "cheapModel": "کم قیمت ماڈل", + "detectionPatterns": "شناختی پیٹرنز", + "newPattern": "مثلاً \"ایک عنوان بنائیں\"", "aliasPatternPlaceholder": "claude-sonnet-*", "aliasTargetPlaceholder": "claude-sonnet-4-20250514", - "pattern": "Pattern", - "targetModel": "Target Model", - "add": "+ Add", - "session": "Session", - "sessionDetailsAria": "Session details", + "pattern": "پیٹرن", + "targetModel": "ہدف ماڈل", + "add": "+ شامل کریں", + "session": "سیشن", + "sessionDetailsAria": "سیشن کی تفصیلات", "status": "Status", - "authenticated": "Authenticated", - "guest": "Guest", - "loginTime": "Login Time", - "sessionAge": "Session Age", - "browser": "Browser", - "clearLocalData": "Clear Local Data", - "logout": "Logout", - "clearLocalDataConfirm": "Clear all local data? This will reset your preferences.", - "unknown": "Unknown", - "systemActor": "system", - "ipAccessControl": "IP Access Control", - "ipAccessControlDesc": "Block or allow specific IP addresses", - "ipModeDisabled": "Disabled", - "ipModeBlacklist": "Blacklist", - "ipModeWhitelist": "Whitelist", - "ipModeWhitelistPriority": "WL Priority", - "addIpAddress": "Add IP Address", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", - "block": "+ Block", - "allow": "+ Allow", - "blocked": "Blocked ({count})", - "allowed": "Allowed ({count})", - "temporaryBans": "Temporary Bans ({count})", - "minLeft": "{min}m left", - "auditLog": "Audit Log", - "searchAuditLogs": "Search audit logs...", - "failedLoadAuditLog": "Failed to load audit log", - "noAuditEvents": "No audit events found", - "action": "Action", - "actor": "Actor", - "details": "Details", - "time": "Time", - "fallbackChainsTitle": "Fallback Chains", - "fallbackChainsDesc": "Define provider fallback order per model", - "addChain": "+ Add Chain", - "modelName": "Model Name", + "authenticated": "تصدیق شدہ", + "guest": "مہمان", + "loginTime": "لاگ اِن کا وقت", + "sessionAge": "سیشن کی مدت", + "browser": "براؤزر", + "clearLocalData": "مقامی ڈیٹا صاف کریں", + "logout": "لاگ آؤٹ", + "clearLocalDataConfirm": "تمام مقامی ڈیٹا صاف کریں؟ اس سے آپ کی ترجیحات ری سیٹ ہو جائیں گی۔", + "unknown": "نامعلوم", + "systemActor": "سسٹم", + "ipAccessControl": "IP رسائی کا کنٹرول", + "ipAccessControlDesc": "مخصوص IP پتے بلاک کریں یا ان کی اجازت دیں", + "ipModeDisabled": "غیر فعال", + "ipModeBlacklist": "بلیک لسٹ", + "ipModeWhitelist": "وائٹ لسٹ", + "ipModeWhitelistPriority": "وائٹ لسٹ کی ترجیح", + "addIpAddress": "IP ایڈریس شامل کریں", + "ipAddressPlaceholder": "192.168.1.0/24 یا 10.0.*.*", + "block": "+ بلاک کریں", + "allow": "+ اجازت دیں", + "blocked": "بلاک شدہ ({count})", + "allowed": "اجازت یافتہ ({count})", + "temporaryBans": "عارضی پابندیاں ({count})", + "minLeft": "{min} منٹ باقی", + "auditLog": "آڈٹ لاگ", + "searchAuditLogs": "آڈٹ لاگز تلاش کریں...", + "failedLoadAuditLog": "آڈٹ لاگ لوڈ کرنے میں ناکامی", + "noAuditEvents": "کوئی آڈٹ واقعہ نہیں ملا", + "action": "کارروائی", + "actor": "کارروائی کنندہ", + "details": "تفصیلات", + "time": "وقت", + "fallbackChainsTitle": "فال بیک چینز", + "fallbackChainsDesc": "ہر ماڈل کے لیے پرووائیڈرز کی فال بیک ترتیب متعین کریں", + "addChain": "+ چین شامل کریں", + "modelName": "ماڈل کا نام", "modelNamePlaceholder": "claude-sonnet-4-20250514", - "providersCommaSeparated": "Providers (comma-separated, in priority order)", + "providersCommaSeparated": "پرووائیڈرز (کوما سے علیحدہ، ترجیحی ترتیب میں)", "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini", - "createChain": "Create Chain", - "noFallbackChains": "No Fallback Chains", - "noFallbackChainsDesc": "Create a chain to define provider fallback order for a model.", - "loadingFallbackChains": "Loading fallback chains...", - "deleteChainConfirm": "Delete fallback chain for \"{model}\"?", - "chainCreated": "Chain created for {model}", - "chainDeleted": "Chain deleted for {model}", - "failedCreateChain": "Failed to create chain", - "failedDeleteChain": "Failed to delete chain", - "deleteChain": "Delete chain", - "fillModelAndProviders": "Please fill model name and providers", - "addAtLeastOneProvider": "Add at least one provider", - "comboDefaultsTitle": "Combo Defaults", - "comboDefaultsGuideTitle": "How to tune combo defaults", - "comboDefaultsGuideHint1": "Keep retries low in low-latency flows; increase timeout only for long generation tasks.", - "comboDefaultsGuideHint2": "Use provider overrides when one provider needs different timeout/retry behavior than global defaults.", - "globalComboConfig": "Global combo configuration", + "createChain": "چین بنائیں", + "noFallbackChains": "کوئی فال بیک چین نہیں", + "noFallbackChainsDesc": "کسی ماڈل کے لیے پرووائیڈرز کی فال بیک ترتیب متعین کرنے کی خاطر ایک چین بنائیں۔", + "loadingFallbackChains": "فال بیک چینز لوڈ ہو رہی ہیں...", + "deleteChainConfirm": "\"{model}\" کے لیے فال بیک چین حذف کریں؟", + "chainCreated": "{model} کے لیے چین بنا دی گئی", + "chainDeleted": "{model} کے لیے چین حذف کر دی گئی", + "failedCreateChain": "چین بنانے میں ناکامی", + "failedDeleteChain": "چین حذف کرنے میں ناکامی", + "deleteChain": "چین حذف کریں", + "fillModelAndProviders": "براہ کرم ماڈل کا نام اور پرووائیڈرز درج کریں", + "addAtLeastOneProvider": "کم از کم ایک پرووائیڈر شامل کریں", + "comboDefaultsTitle": "کومبو ڈیفالٹس", + "comboDefaultsGuideTitle": "کومبو ڈیفالٹس کو کیسے ٹیون کریں", + "comboDefaultsGuideHint1": "کم تاخیر والے فلوز میں دوبارہ کوششوں کی تعداد کم رکھیں؛ صرف طویل جنریشن ٹاسکس کے لیے ٹائم آؤٹ بڑھائیں۔", + "comboDefaultsGuideHint2": "جب کسی ایک پرووائیڈر کو عالمی ڈیفالٹس سے مختلف ٹائم آؤٹ یا دوبارہ کوشش کے طرزِ عمل کی ضرورت ہو تو پرووائیڈر اوور رائیڈز استعمال کریں۔", + "globalComboConfig": "عالمی کومبو کنفیگریشن", "moveUp": "اوپر لے جائیں", "moveDown": "نیچے لے جائیں", "allProvidersAdded": "تمام فراہم کنندگان شامل کر دیے گئے", "noProvidersFound": "کوئی فراہم کنندہ نہیں ملا", - "defaultStrategy": "Default Strategy", + "defaultStrategy": "طے شدہ حکمتِ عملی", "defaultStrategyDesc": "Applied to new combos without explicit strategy", - "comboStrategyAria": "Combo strategy", - "priority": "Priority", - "weighted": "Weighted", - "contextRelay": "Context Relay", - "contextRelayDesc": "Priority-style routing with automatic context handoffs when account rotation happens", - "maxRetriesLabel": "Max Retries", - "retryDelayLabel": "Retry Delay (ms)", - "timeoutLabel": "Timeout (ms)", - "healthCheck": "Health Check", - "healthCheckDesc": "Pre-check provider availability", - "trackMetrics": "Track Metrics", - "trackMetricsDesc": "Record per-combo request metrics", - "providerOverrides": "Provider Overrides", - "providerOverridesDesc": "Override timeout and retries per provider. Provider settings override global defaults.", - "providerMaxRetriesAria": "{provider} max retries", - "providerTimeoutAria": "{provider} timeout ms", - "removeProviderOverrideAria": "Remove {provider} override", + "comboStrategyAria": "کومبو حکمتِ عملی", + "priority": "ترجیح", + "weighted": "وزنی", + "contextRelay": "سیاق کی منتقلی", + "contextRelayDesc": "اکاؤنٹ کی تبدیلی کے وقت خودکار سیاقی منتقلی کے ساتھ ترجیحی طرز کی روٹنگ", + "maxRetriesLabel": "دوبارہ کوششوں کی زیادہ سے زیادہ تعداد", + "retryDelayLabel": "دوبارہ کوشش میں تاخیر (ms)", + "timeoutLabel": "ٹائم آؤٹ (ms)", + "healthCheck": "صحت کی جانچ", + "healthCheckDesc": "فراہم کنندہ کی دستیابی پہلے سے جانچیں", + "trackMetrics": "میٹرکس ٹریک کریں", + "trackMetricsDesc": "ہر کومبو کی درخواست کے میٹرکس ریکارڈ کریں", + "providerOverrides": "فراہم کنندہ کی اوور رائیڈز", + "providerOverridesDesc": "ہر فراہم کنندہ کے لیے ٹائم آؤٹ اور دوبارہ کوششوں کو اوور رائیڈ کریں۔ فراہم کنندہ کی ترتیبات عالمی طے شدہ ترتیبات کو اوور رائیڈ کرتی ہیں۔", + "providerMaxRetriesAria": "{provider} کی زیادہ سے زیادہ دوبارہ کوششیں", + "providerTimeoutAria": "{provider} کا ٹائم آؤٹ ms", + "removeProviderOverrideAria": "{provider} کی اوور رائیڈ ہٹائیں", "selectProviderPlaceholder": "فراہم کنندہ منتخب کریں...", "searchProviderPlaceholder": "فراہم کنندگان تلاش کریں...", "searchProviderAria": "فراہم کنندگان تلاش کریں", - "newProviderNamePlaceholder": "e.g. google, openai...", - "newProviderNameAria": "New provider name", - "retries": "retries", + "newProviderNamePlaceholder": "مثلاً google، openai...", + "newProviderNameAria": "نئے فراہم کنندہ کا نام", + "retries": "دوبارہ کوششیں", "ms": "ms", - "saveComboDefaults": "Save Combo Defaults", - "maxNestingDepth": "Max Nesting Depth", - "concurrencyPerModel": "Concurrency / Model", - "queueTimeout": "Queue Timeout (ms)", + "saveComboDefaults": "کومبو کی طے شدہ ترتیبات محفوظ کریں", + "maxNestingDepth": "نیسٹنگ کی زیادہ سے زیادہ گہرائی", + "concurrencyPerModel": "ہم وقتی / ماڈل", + "queueTimeout": "قطار کا ٹائم آؤٹ (ms)", "queueDepth": "قطار کی گہرائی", - "contextRelayHandoffThreshold": "Handoff Threshold", - "contextRelayMaxMessages": "Max Messages For Summary", - "contextRelaySummaryModel": "Summary Model", - "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.", - "providerProfiles": "Provider Profiles", - "providerProfilesDesc": "Separate resilience settings for OAuth (session-based) and API Key (metered) providers. OAuth providers have stricter thresholds due to lower rate limits.", - "oauthProviders": "OAuth Providers", - "apiKeyProviders": "API Key Providers", - "transientCooldown": "Transient Cooldown", - "rateLimitCooldown": "Rate Limit Cooldown", - "maxBackoffLevel": "Max Backoff Level", - "cbThreshold": "CB Threshold", - "cbResetTime": "CB Reset Time", - "rateLimiting": "Rate Limiting", - "rateLimitingDesc": "API Key providers are automatically rate-limited with safe defaults. Limits are learned from response headers and adapt over time.", - "defaultSafetyNet": "Default Safety Net", + "contextRelayHandoffThreshold": "منتقلی کی حد", + "contextRelayMaxMessages": "خلاصے کے لیے پیغامات کی زیادہ سے زیادہ تعداد", + "contextRelaySummaryModel": "خلاصہ ماڈل", + "contextRelayProviderNote": "سیاق کی منتقلی فی الحال Codex اکاؤنٹس کے لیے ہینڈ آف بناتی ہے اور ان اقدار کو نئے یا غیر ترتیب شدہ کومبوز کے لیے عالمی طے شدہ ترتیبات کے طور پر استعمال کرتی ہے۔", + "providerProfiles": "فراہم کنندہ پروفائلز", + "providerProfilesDesc": "OAuth (سیشن پر مبنی) اور API Key (استعمال کے حساب سے قیمت والے) فراہم کنندگان کے لیے الگ لچک پذیری کی ترتیبات۔ کم شرح کی حدود کی وجہ سے OAuth فراہم کنندگان کے لیے حدیں زیادہ سخت ہیں۔", + "oauthProviders": "OAuth فراہم کنندگان", + "apiKeyProviders": "API Key فراہم کنندگان", + "transientCooldown": "عارضی کول ڈاؤن", + "rateLimitCooldown": "شرح کی حد کا کول ڈاؤن", + "maxBackoffLevel": "بیک آف کی زیادہ سے زیادہ سطح", + "cbThreshold": "CB کی حد", + "cbResetTime": "CB ری سیٹ کا وقت", + "rateLimiting": "شرح کی تحدید", + "rateLimitingDesc": "API Key فراہم کنندگان پر محفوظ طے شدہ ترتیبات کے ساتھ خودکار طور پر شرح کی حد لاگو ہوتی ہے۔ حدود رسپانس ہیڈرز سے سیکھی جاتی ہیں اور وقت کے ساتھ خود کو ڈھالتی ہیں۔", + "defaultSafetyNet": "طے شدہ حفاظتی جال", "rpm": "RPM", - "minGap": "Min Gap", - "maxConcurrent": "Max Concurrent", - "activeLimiters": "Active Limiters", - "noActiveLimiters": "No active rate limiters yet.", - "reservoir": "Reservoir", - "running": "Running", - "queued": "Queued", - "circuitBreakers": "Circuit Breakers", - "breakerStateClosed": "Closed", - "breakerStateOpen": "Open", - "breakerStateHalfOpen": "Half-Open", - "tripped": "{count} tripped", - "healthy": "{count} healthy", - "resetAll": "Reset All", - "noCircuitBreakers": "No circuit breakers active yet. They are created automatically when requests flow through the combo pipeline.", - "failures": "{count} failure(s)", - "policiesLocked": "Policies & Locked Identifiers", - "allOperational": "All systems operational — no lockouts or tripped breakers", - "loadingPolicies": "Loading policies...", - "lockedIdentifiers": "Locked Identifiers", - "unlockedIdentifier": "Unlocked: {identifier}", - "sinceDate": "since {date}", - "forceUnlock": "Force Unlock", - "unlocking": "Unlocking...", - "failedUnlock": "Failed to unlock", - "failedLoadWithStatus": "Failed to load: {status}", - "failedLoadResilience": "Failed to load resilience status", - "saveFailed": "Save failed", - "resetFailed": "Reset failed", - "loadingResilience": "Loading resilience status...", - "retry": "Retry", + "minGap": "کم از کم وقفہ", + "maxConcurrent": "زیادہ سے زیادہ بیک وقت", + "activeLimiters": "فعال شرح محدود کنندگان", + "noActiveLimiters": "ابھی تک کوئی شرح محدود کنندہ فعال نہیں ہے۔", + "reservoir": "ذخیرہ", + "running": "زیرِ عمل", + "queued": "قطار میں", + "circuitBreakers": "سرکٹ بریکرز", + "breakerStateClosed": "بند", + "breakerStateOpen": "کھلا", + "breakerStateHalfOpen": "نیم کھلا", + "tripped": "{count} ٹرپ شدہ", + "healthy": "{count} صحت مند", + "resetAll": "سب کو ری سیٹ کریں", + "noCircuitBreakers": "ابھی تک کوئی سرکٹ بریکر فعال نہیں ہے۔ جب درخواستیں کومبو پائپ لائن سے گزرتی ہیں تو یہ خودکار طور پر بنائے جاتے ہیں۔", + "failures": "{count} ناکامی(اں)", + "policiesLocked": "پالیسیاں اور مقفل شناخت کنندگان", + "allOperational": "تمام نظام فعال ہیں — کوئی لاک آؤٹ یا ٹرپ شدہ بریکر نہیں", + "loadingPolicies": "پالیسیاں لوڈ ہو رہی ہیں...", + "lockedIdentifiers": "مقفل شناخت کنندگان", + "unlockedIdentifier": "غیر مقفل: {identifier}", + "sinceDate": "از {date}", + "forceUnlock": "جبراً غیر مقفل کریں", + "unlocking": "غیر مقفل کیا جا رہا ہے...", + "failedUnlock": "غیر مقفل کرنے میں ناکامی", + "failedLoadWithStatus": "لوڈ کرنے میں ناکامی: {status}", + "failedLoadResilience": "لچک پذیری کی حالت لوڈ کرنے میں ناکامی", + "saveFailed": "محفوظ کرنے میں ناکامی", + "resetFailed": "ری سیٹ کرنے میں ناکامی", + "loadingResilience": "لچک پذیری کی حالت لوڈ ہو رہی ہے...", + "retry": "دوبارہ کوشش کریں", "systemStorage": "System & Storage", - "allDataLocal": "All data stored locally on your machine", - "databasePath": "Database Path", + "allDataLocal": "تمام ڈیٹا آپ کی مشین پر مقامی طور پر محفوظ ہے", + "databasePath": "ڈیٹابیس کا راستہ", "export": "برآمد کریں", - "exportDatabase": "Export Database", - "exportAll": "Export All (.tar.gz)", - "importDatabase": "Import Database", - "confirmDbImport": "Confirm Database Import", - "confirmDbImportDesc": "This will replace all current data with the content from {file}. A backup will be created automatically before the import.", - "yesImport": "Yes, Import", - "lastBackup": "Last Backup", - "noBackupYet": "No backup yet", - "backupNow": "Backup Now", - "backupRestore": "Backup & Restore", - "viewBackups": "View Backups", - "hide": "Hide", - "backupRetentionDesc": "Database snapshots are created automatically before restore and every 15 minutes when data changes. Retention: 24 hourly + 30 daily backups with smart rotation.", - "loadingBackups": "Loading backups...", - "noBackupsYet": "No backups available yet. Backups will be created automatically when data changes.", - "backupsAvailable": "{count} backup(s) available", - "refresh": "Refresh", - "confirm": "Confirm?", - "yes": "Yes", - "no": "No", - "restore": "Restore", - "invalidFileType": "Invalid file type. Only .sqlite files are accepted.", - "exportFailed": "Export failed", - "exportFailedWithError": "Export failed: {error}", - "fullExportFailedWithError": "Full export failed: {error}", - "backupCreated": "Backup created: {file}", - "restoreSuccess": "Restored! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "importSuccess": "Database imported! {connections} connections, {nodes} nodes, {combos} combos, {apiKeys} API keys.", - "minutesAgo": "{count}m ago", - "hoursAgo": "{count}h ago", - "daysAgo": "{count}d ago", - "backupReasonManual": "manual", - "backupReasonPreRestore": "pre-restore", - "connectionsCount": "{count, plural, one {# connection} other {# connections}}", - "noChangesSinceBackup": "No changes since last backup", - "backupFailed": "Backup failed", - "restoreFailed": "Restore failed", - "importFailed": "Import failed", - "errorDuringRestore": "An error occurred during restore", - "errorDuringImport": "An error occurred during import", - "modelPricing": "Model Pricing", - "modelPricingDesc": "Configure cost rates per model • All rates in $/1M tokens", + "exportDatabase": "ڈیٹابیس برآمد کریں", + "exportAll": "سب برآمد کریں (.tar.gz)", + "importDatabase": "ڈیٹابیس درآمد کریں", + "confirmDbImport": "ڈیٹابیس کی درآمد کی تصدیق کریں", + "confirmDbImportDesc": "یہ تمام موجودہ ڈیٹا کو {file} کے مواد سے بدل دے گا۔ درآمد سے پہلے خودکار طور پر ایک بیک اپ بنایا جائے گا۔", + "yesImport": "ہاں، درآمد کریں", + "lastBackup": "آخری بیک اپ", + "noBackupYet": "ابھی تک کوئی بیک اپ نہیں", + "backupNow": "ابھی بیک اپ لیں", + "backupRestore": "بیک اپ اور بحالی", + "viewBackups": "بیک اپس دیکھیں", + "hide": "چھپائیں", + "backupRetentionDesc": "بحالی سے پہلے اور ڈیٹا تبدیل ہونے پر ہر 15 منٹ بعد ڈیٹا بیس اسنیپ شاٹس خودکار طور پر بنائے جاتے ہیں۔ محفوظ رکھنے کی مدت: اسمارٹ روٹیشن کے ساتھ 24 گھنٹہ وار + 30 روزانہ بیک اپس۔", + "loadingBackups": "بیک اپس لوڈ ہو رہے ہیں...", + "noBackupsYet": "ابھی تک کوئی بیک اپ دستیاب نہیں۔ ڈیٹا تبدیل ہونے پر بیک اپس خودکار طور پر بنائے جائیں گے۔", + "backupsAvailable": "{count} بیک اپ دستیاب", + "refresh": "تازہ کریں", + "confirm": "تصدیق کریں؟", + "yes": "ہاں", + "no": "نہیں", + "restore": "بحال کریں", + "invalidFileType": "فائل کی قسم درست نہیں۔ صرف .sqlite فائلیں قبول کی جاتی ہیں۔", + "exportFailed": "ایکسپورٹ ناکام ہو گیا", + "exportFailedWithError": "ایکسپورٹ ناکام ہو گیا: {error}", + "fullExportFailedWithError": "مکمل ایکسپورٹ ناکام ہو گیا: {error}", + "backupCreated": "بیک اپ بنا دیا گیا: {file}", + "restoreSuccess": "بحال ہو گیا! {connections} کنکشنز، {nodes} نوڈز، {combos} کومبوز، {apiKeys} API کیز۔", + "importSuccess": "ڈیٹا بیس امپورٹ ہو گیا! {connections} کنکشنز، {nodes} نوڈز، {combos} کومبوز، {apiKeys} API کیز۔", + "minutesAgo": "{count} منٹ پہلے", + "hoursAgo": "{count} گھنٹے پہلے", + "daysAgo": "{count} دن پہلے", + "backupReasonManual": "دستی", + "backupReasonPreRestore": "بحالی سے پہلے", + "connectionsCount": "{count, plural, one {# کنکشن} other {# کنکشنز}}", + "noChangesSinceBackup": "آخری بیک اپ کے بعد کوئی تبدیلی نہیں ہوئی", + "backupFailed": "بیک اپ ناکام ہو گیا", + "restoreFailed": "بحالی ناکام ہو گئی", + "importFailed": "امپورٹ ناکام ہو گیا", + "errorDuringRestore": "بحالی کے دوران ایک خرابی پیش آئی", + "errorDuringImport": "امپورٹ کے دوران ایک خرابی پیش آئی", + "modelPricing": "ماڈل کی قیمت بندی", + "modelPricingDesc": "ہر ماڈل کے لیے لاگت کی شرحیں ترتیب دیں • تمام شرحیں $/1M ٹوکنز میں ہیں", "pricingCoverage": "کوریج", "pricingAuth": "توثیق", "pricingSort": "ترتیب دیں", @@ -7329,7 +7332,7 @@ "configured": "کنفیگر شدہ", "none": "کوئی نہیں", "modelOverrideValuePlaceholder": "عددی قدر", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "انگریزی میں کوما سے علیحدہ، مثلاً low, medium, high", "addKeyValue": "کی ویلیو شامل کریں", "noModelOverrides": "اس ماڈل کے لیے کوئی اوور رائیڈز کنفیگر نہیں کیے گئے۔", "modelOverrideLoadFailed": "ماڈل اوور رائیڈز لوڈ کرنے میں ناکامی", @@ -7337,66 +7340,66 @@ "modelOverrideRemoved": "ماڈل اوور رائیڈ ہٹا دیا گیا", "modelOverrideSaveFailed": "ماڈل اوور رائیڈ محفوظ کرنے میں ناکامی", "modelOverrideRemoveFailed": "ماڈل اوور رائیڈ ہٹانے میں ناکامی", - "registry": "Registry", - "priced": "Priced", - "searchProvidersModels": "Search providers or models...", - "showAll": "Show All", - "noProvidersMatch": "No providers match your search.", - "howPricingWorks": "How Pricing Works", - "cacheWrite": "Cache Write", - "unsaved": "unsaved", + "registry": "رجسٹری", + "priced": "قیمت مقرر شدہ", + "searchProvidersModels": "فراہم کنندگان یا ماڈلز تلاش کریں...", + "showAll": "سب دکھائیں", + "noProvidersMatch": "کوئی فراہم کنندہ آپ کی تلاش سے مطابقت نہیں رکھتا۔", + "howPricingWorks": "قیمتوں کا تعین کیسے کام کرتا ہے", + "cacheWrite": "کیش رائٹ", + "unsaved": "غیر محفوظ شدہ", "resetDefaults": "ڈیفالٹس کو ری سیٹ کریں", - "saveProvider": "Save Provider", + "saveProvider": "فراہم کنندہ محفوظ کریں", "model": "Model", - "models": "models", - "moreProviders": "{count} more providers", - "withPricing": "with pricing configured", - "policiesCircuitBreakers": "Policies & Circuit Breakers", - "activeIssuesDetected": "Active issues detected", - "off": "Off", - "resetPricingConfirm": "Reset all pricing for {provider} to defaults?", - "pricingDescInput": "Input: tokens sent to the model", - "pricingDescOutput": "Output: tokens generated", - "pricingDescCached": "Cached: reused input (~50% of input rate)", - "pricingDescReasoning": "Reasoning: thinking tokens (falls back to Output)", - "pricingDescCacheWrite": "Cache Write: creating cache entries (falls back to Input)", - "pricingDescFormula": "Cost = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.", - "pricingSettingsTitle": "Pricing Settings", - "totalModels": "Total Models", - "active": "Active", - "costCalculation": "Cost Calculation", - "costCalculationDesc": "Costs are calculated based on token usage and pricing rates configured for each model.", - "pricingFormat": "Pricing Format", - "pricingFormatDesc": "All rates are in $/1M tokens (dollars per million tokens).", - "tokenTypes": "Token Types", - "inputTokenDesc": "Standard prompt tokens", - "outputTokenDesc": "Completion/response tokens", - "cachedTokenDesc": "Cached input tokens (typically 50% of input rate)", - "reasoningTokenDesc": "Special reasoning/thinking tokens (fallback to output rate)", - "cacheCreationTokenDesc": "Tokens used to create cache entries (fallback to input rate)", - "customPricingNote": "You can override default pricing for specific models. Custom overrides take priority over auto-detected pricing.", - "editPricing": "Edit Pricing", - "viewFullDetails": "View Full Details", + "models": "ماڈلز", + "moreProviders": "مزید {count} فراہم کنندگان", + "withPricing": "جن کے لیے قیمتیں ترتیب دی گئی ہیں", + "policiesCircuitBreakers": "پالیسیاں اور سرکٹ بریکرز", + "activeIssuesDetected": "فعال مسائل کا پتا چلا ہے", + "off": "بند", + "resetPricingConfirm": "کیا {provider} کے لیے تمام قیمتیں ڈیفالٹ پر ری سیٹ کر دی جائیں؟", + "pricingDescInput": "ان پٹ: ماڈل کو بھیجے گئے ٹوکنز", + "pricingDescOutput": "آؤٹ پٹ: تیار کردہ ٹوکنز", + "pricingDescCached": "کیش شدہ: دوبارہ استعمال کیا گیا ان پٹ (ان پٹ ریٹ کا تقریباً 50%)", + "pricingDescReasoning": "استدلال: سوچنے کے ٹوکنز (دستیاب نہ ہونے پر آؤٹ پٹ استعمال ہوتا ہے)", + "pricingDescCacheWrite": "کیش رائٹ: کیش اندراجات بنانا (دستیاب نہ ہونے پر ان پٹ استعمال ہوتا ہے)", + "pricingDescFormula": "لاگت = (ان پٹ × ان پٹ_ریٹ) + (آؤٹ پٹ × آؤٹ پٹ_ریٹ) + (کیش شدہ × کیش شدہ_ریٹ)، فی دس لاکھ ٹوکنز۔", + "pricingSettingsTitle": "قیمتوں کی ترتیبات", + "totalModels": "کل ماڈلز", + "active": "فعال", + "costCalculation": "لاگت کا حساب", + "costCalculationDesc": "لاگت کا حساب ٹوکن کے استعمال اور ہر ماڈل کے لیے ترتیب دی گئی قیمتوں کی شرحوں کی بنیاد پر کیا جاتا ہے۔", + "pricingFormat": "قیمتوں کی وضع", + "pricingFormatDesc": "تمام شرحیں $/1M ٹوکنز (فی دس لاکھ ٹوکنز ڈالر) میں ہیں۔", + "tokenTypes": "ٹوکن کی اقسام", + "inputTokenDesc": "معیاری پرامپٹ ٹوکنز", + "outputTokenDesc": "تکمیل/جواب کے ٹوکنز", + "cachedTokenDesc": "کیش شدہ ان پٹ ٹوکنز (عموماً ان پٹ ریٹ کا 50%)", + "reasoningTokenDesc": "خصوصی استدلال/سوچنے کے ٹوکنز (دستیاب نہ ہونے پر آؤٹ پٹ ریٹ استعمال ہوتا ہے)", + "cacheCreationTokenDesc": "کیش اندراجات بنانے کے لیے استعمال ہونے والے ٹوکنز (دستیاب نہ ہونے پر ان پٹ ریٹ استعمال ہوتا ہے)", + "customPricingNote": "آپ مخصوص ماڈلز کے لیے ڈیفالٹ قیمتوں کو اوور رائیڈ کر سکتے ہیں۔ حسبِ ضرورت اوور رائیڈز کو خودکار طور پر شناخت شدہ قیمتوں پر ترجیح حاصل ہوتی ہے۔", + "editPricing": "قیمتوں میں ترمیم کریں", + "viewFullDetails": "مکمل تفصیلات دیکھیں", "themeCoral": "Coral", - "adaptiveVolumeRouting": "Adaptive Volume Routing", - "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.", - "lkgpToggleTitle": "Last Known Good Provider (LKGP)", - "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.", + "adaptiveVolumeRouting": "حجم کے مطابق انکولی روٹنگ", + "adaptiveVolumeRoutingDesc": "پے لوڈ کے حجم اور تھروپٹ کے دباؤ کی بنیاد پر کنکشنز کو متحرک طور پر اسکیل کریں۔", + "lkgpToggleTitle": "آخری معلوم کامیاب فراہم کنندہ (LKGP)", + "lkgpToggleDesc": "فعال ہونے پر، راؤٹر یاد رکھتا ہے کہ آخری کامیاب جواب کس فراہم کنندہ نے دیا تھا اور بعد کی درخواستوں پر پہلے اسی کو آزماتا ہے۔", "echoRequestedModelTitle": "جوابات میں درخواست کردہ ماڈل کا نام ایکو کریں", "echoRequestedModelDesc": "فعال ہونے پر، جواب کا `model` فیلڈ اپ اسٹریم ماڈل کے نام کے بجائے کلائنٹ کی طرف سے درخواست کردہ عرفی نام یا کومبو کا نام ظاہر کرتا ہے۔ یہ ان سخت کلائنٹس (مثلاً Claude Desktop) کو درست کرتا ہے جو ایسے جواب کو مسترد کرتے ہیں جس کا ماڈل درخواست سے مماثل نہیں ہوتا۔", "webSearchRouteTitle": "ویب سرچ روٹنگ", "webSearchRouteDesc": "جب کسی درخواست میں مقامی web_search ٹول شامل ہو، تو ڈیفالٹ کے بجائے پوری درخواست کو اس ماڈل پر روٹ کریں — یہ ان فراہم کنندگان کے لیے مفید ہے جو Anthropic کے web_search سرور ٹول کو نافذ نہیں کرتے ہیں۔ غیر فعال کرنے کے لیے خالی چھوڑ دیں۔", "webSearchRoutePlaceholder": "ماڈل تلاش کریں یا منتخب کریں…", "paidModelPatternWarning": "یہ پیٹرن صرف ادا شدہ ماڈلز سے مماثل ہے — ادا شدہ ماڈلز کو فعال کریں یا پیٹرن کو ایڈجسٹ کریں۔", - "clearLkgpCache": "Clear LKGP Cache", - "lkgpCacheCleared": "LKGP cache cleared successfully", - "lkgpCacheClearFailed": "Failed to clear LKGP cache", - "days": "Days", - "lkgp": "LKGP Mode", - "lkgpDesc": "Last Known Good Provider (Predictable resilience)", - "maintenance": "Maintenance", - "purgeExpiredLogs": "Purge Expired Logs", - "purgeLogsFailed": "Failed to purge logs", + "clearLkgpCache": "LKGP کیش صاف کریں", + "lkgpCacheCleared": "LKGP کیش کامیابی سے صاف کر دیا گیا", + "lkgpCacheClearFailed": "LKGP کیش صاف کرنے میں ناکامی", + "days": "دن", + "lkgp": "LKGP موڈ", + "lkgpDesc": "آخری معلوم اچھا فراہم کنندہ (قابلِ پیش گوئی لچک)", + "maintenance": "دیکھ بھال", + "purgeExpiredLogs": "میعاد ختم شدہ لاگز حذف کریں", + "purgeLogsFailed": "لاگز حذف کرنے میں ناکامی", "logsDeleted": "{count, plural, =0 {کوئی میعاد ختم شدہ لاگ صاف نہیں کیا گیا} one {# میعاد ختم شدہ لاگ صاف کیا گیا} other {# میعاد ختم شدہ لاگز صاف کیے گئے}}", "resetUsageData": "استعمال کا ڈیٹا ری سیٹ کریں", "resetUsageDataDesc": "منتخب کریں کہ آپ کتنا پرانا استعمال، درخواست کے لاگز، اور تجزیاتی ڈیٹا حذف کرنا چاہتے ہیں۔ فراہم کنندہ کی کنفیگریشن، کنکشنز، API کیز، کومبوز، اور ترتیبات محفوظ رہتی ہیں۔ اس عمل کو کالعدم نہیں کیا جا سکتا۔", @@ -7413,63 +7416,63 @@ "resetUsageFailed": "استعمال کا ڈیٹا ری سیٹ کرنے میں ناکامی", "reset": "ری سیٹ کریں", "resetting": "ری سیٹ کیا جا رہا ہے...", - "contextOpt": "Context Optimized", - "contextOptDesc": "Routes based on context window requirements and conversation length", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", - "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on", - "weightedDesc": "Distributes traffic by percentage weights across providers", - "modelRoutingTitle": "Model Routing Rules", - "modelRoutingDesc": "Automatically route models to specific combos using glob patterns", - "addRule": "Add Rule", - "routeToCombo": "Route to Combo", - "selectCombo": "Select combo...", - "priorityHint": "Higher = checked first. Use 10+ for specific patterns.", - "patternHint": "Use * for any chars, ? for single char. Case-insensitive.", - "noRoutingRules": "No routing rules configured. Requests use the global combo by default.", - "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.", - "deleteRoutingRule": "Delete this model routing rule?", - "exactMatchMode": "Exact Match", - "wildcardPatternMode": "Wildcard Pattern", - "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.", - "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.", - "noExactAliasesConfigured": "No exact-match aliases configured.", - "wildcardRulesTitle": "Wildcard Rules", - "noWildcardAliasesConfigured": "No wildcard aliases configured.", - "overview": "Overview", - "unknownError": "Unknown Error", - "pricingSourceLiteLLM": "LiteLLM (Community)", - "clearSyncedPricingConfirm": "Clear all synced pricing data? Provider defaults will be used instead.", - "clearSyncedPricingFailed": "Failed to clear synced pricing", - "pricingSourceUser": "User Override", - "pageDescription": "Manage application settings, model aliases, pricing, and routing rules", - "pricingSyncStatus": "Sync Status", - "whitelist": "Whitelist", - "syncDisabled": "Sync Disabled", - "pricingLoadFailed": "Failed to load pricing data", - "pricingSyncDescription": "Automatically sync model pricing from external sources to keep cost calculations accurate", - "clearSyncedPricingSuccess": "Synced pricing data cleared", - "clearSyncedPricingFailedWithReason": "Failed to clear pricing: {reason}", - "pricingSourceDefault": "Built-in Default", - "pricingSyncSuccess": "Pricing synced successfully", - "enableSyncError": "Failed to toggle pricing sync", - "syncEnabled": "Sync Enabled", - "blacklist": "Blacklist", + "contextOpt": "سیاق کے لیے موزوں", + "contextOptDesc": "سیاقی ونڈو کی ضروریات اور گفتگو کی طوالت کی بنیاد پر روٹس", + "cacheOpt": "کیش کے لیے موزوں", + "cacheOptDesc": "ایک ہی دوبارہ قابلِ استعمال پرامپٹ سابقے کو اسی فراہم کنندہ کے اکاؤنٹ پر برقرار رکھتا ہے", + "priorityDesc": "ترتیبی متبادل — پہلے فراہم کنندہ 1، پھر فراہم کنندہ 2، اور اسی طرح آزماتا ہے", + "weightedDesc": "فراہم کنندگان میں فیصدی اوزان کے مطابق ٹریفک تقسیم کرتا ہے", + "modelRoutingTitle": "ماڈل روٹنگ کے قواعد", + "modelRoutingDesc": "گلوب پیٹرنز استعمال کرتے ہوئے ماڈلز کو خودکار طور پر مخصوص کومبوز کی طرف روٹ کریں", + "addRule": "قاعدہ شامل کریں", + "routeToCombo": "کومبو کی طرف روٹ کریں", + "selectCombo": "کومبو منتخب کریں...", + "priorityHint": "زیادہ قدر = پہلے جانچ۔ مخصوص پیٹرنز کے لیے 10+ استعمال کریں۔", + "patternHint": "کسی بھی حروف کے لیے * اور ایک حرف کے لیے ? استعمال کریں۔ حروف کی حالت سے غیر حساس۔", + "noRoutingRules": "کوئی روٹنگ قواعد ترتیب نہیں دیے گئے۔ درخواستیں بطور ڈیفالٹ عالمی کومبو استعمال کرتی ہیں۔", + "routingRuleHint": "درخواستوں کو خودکار طور پر روٹ کرنے کے لیے claude-opus* -> frontier-combo جیسا قاعدہ شامل کریں۔", + "deleteRoutingRule": "کیا ماڈل روٹنگ کا یہ قاعدہ حذف کرنا ہے؟", + "exactMatchMode": "عین مماثلت", + "wildcardPatternMode": "وائلڈ کارڈ پیٹرن", + "exactMatchModeDesc": "متروک یا تبدیل شدہ ماڈل IDs کے لیے عین عرف استعمال کریں۔", + "wildcardPatternModeDesc": "جب ماڈلز کے ایک خاندان کو ایک ہدف سے میپ کرنا ہو تو * اور ? والے وائلڈ کارڈ عرف استعمال کریں۔", + "noExactAliasesConfigured": "عین مماثلت کا کوئی عرف ترتیب نہیں دیا گیا۔", + "wildcardRulesTitle": "وائلڈ کارڈ قواعد", + "noWildcardAliasesConfigured": "کوئی وائلڈ کارڈ عرف ترتیب نہیں دیا گیا۔", + "overview": "جائزہ", + "unknownError": "نامعلوم خرابی", + "pricingSourceLiteLLM": "LiteLLM (کمیونٹی)", + "clearSyncedPricingConfirm": "کیا تمام مطابقت پذیر قیمتوں کا ڈیٹا صاف کرنا ہے؟ اس کی بجائے فراہم کنندہ کی ڈیفالٹ قدریں استعمال ہوں گی۔", + "clearSyncedPricingFailed": "مطابقت پذیر قیمتیں صاف کرنے میں ناکامی", + "pricingSourceUser": "صارف کی مقرر کردہ قدر", + "pageDescription": "ایپلیکیشن کی ترتیبات، ماڈل عرف، قیمتوں اور روٹنگ قواعد کا نظم کریں", + "pricingSyncStatus": "مطابقت پذیری کی حالت", + "whitelist": "وائٹ لسٹ", + "syncDisabled": "ہم وقت سازی غیر فعال ہے", + "pricingLoadFailed": "قیمتوں کا ڈیٹا لوڈ کرنے میں ناکامی", + "pricingSyncDescription": "لاگت کے حساب کو درست رکھنے کے لیے بیرونی ذرائع سے ماڈل کی قیمتیں خودکار طور پر ہم وقت کریں", + "clearSyncedPricingSuccess": "ہم وقت شدہ قیمتوں کا ڈیٹا صاف کر دیا گیا", + "clearSyncedPricingFailedWithReason": "قیمتیں صاف کرنے میں ناکامی: {reason}", + "pricingSourceDefault": "پہلے سے موجود طے شدہ", + "pricingSyncSuccess": "قیمتیں کامیابی سے ہم وقت ہو گئیں", + "enableSyncError": "قیمتوں کی ہم وقت سازی کو فعال یا غیر فعال کرنے میں ناکامی", + "syncEnabled": "ہم وقت سازی فعال ہے", + "blacklist": "بلیک لسٹ", "pricingSourceModelsDev": "Models.dev", - "syncedModels": "Synced Models", - "budget": "Budget", - "pricingSyncTitle": "Pricing Sync", - "pricingResetFailedWithReason": "Failed to reset pricing: {reason}", - "tab": "Tab", - "pricingSavedProvider": "Pricing saved for {provider}", - "pricingSyncFailed": "Pricing sync failed", - "pricingSaveFailedWithReason": "Failed to save pricing: {reason}", - "pricingResetProvider": "Pricing reset for {provider}", - "nextSync": "Next Sync", - "pricingSyncFailedWithReason": "Pricing sync failed: {reason}", - "clearSyncedPricing": "Clear Synced Pricing", - "compressionTitle": "Prompt Compression", - "compressionDesc": "Reduce token usage by compressing prompts before sending to providers", + "syncedModels": "ہم وقت شدہ ماڈلز", + "budget": "بجٹ", + "pricingSyncTitle": "قیمتوں کی ہم وقت سازی", + "pricingResetFailedWithReason": "قیمتیں دوبارہ ترتیب دینے میں ناکامی: {reason}", + "tab": "ٹیب", + "pricingSavedProvider": "{provider} کے لیے قیمتیں محفوظ کر دی گئیں", + "pricingSyncFailed": "قیمتوں کی ہم وقت سازی ناکام ہو گئی", + "pricingSaveFailedWithReason": "قیمتیں محفوظ کرنے میں ناکامی: {reason}", + "pricingResetProvider": "{provider} کے لیے قیمتیں دوبارہ ترتیب دے دی گئیں", + "nextSync": "اگلی ہم وقت سازی", + "pricingSyncFailedWithReason": "قیمتوں کی ہم وقت سازی ناکام ہو گئی: {reason}", + "clearSyncedPricing": "ہم وقت شدہ قیمتیں صاف کریں", + "compressionTitle": "پرامپٹ کمپریشن", + "compressionDesc": "فراہم کنندگان کو بھیجنے سے پہلے پرامپٹس کو کمپریس کر کے ٹوکن کا استعمال کم کریں", "compressionGuidanceFullGuideLink": "مکمل کمپریشن گائیڈ", "compressionGuidanceShow": "تفصیلات", "compressionGuidanceHide": "تفصیلات چھپائیں", @@ -7485,13 +7488,13 @@ "tokenSaverInputCompressionDesc": "کوڈ، URLs، اور مقصد کو برقرار رکھتے ہوئے اہل چیٹ ہسٹری کو دوبارہ لکھیں۔", "tokenSaverFineTunePrefix": "ہر انجن کو فائن ٹیون کریں برائے", "tokenSaverFineTuneSuffix": "یا فی درخواست انجنوں کو یکجا کریں برائے", - "compressionMode": "Compression Mode", - "compressionModeOff": "Off", - "compressionModeOffDesc": "No compression applied", - "compressionModeLite": "Lite", - "compressionModeLiteDesc": "Whitespace and blank line reduction", - "compressionModeStandard": "Standard (Caveman)", - "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs", + "compressionMode": "کمپریشن موڈ", + "compressionModeOff": "بند", + "compressionModeOffDesc": "کوئی کمپریشن لاگو نہیں", + "compressionModeLite": "ہلکا", + "compressionModeLiteDesc": "خالی جگہوں اور خالی سطروں میں کمی", + "compressionModeStandard": "معیاری (Caveman)", + "compressionModeStandardDesc": "30+ پیٹرنز کے ساتھ قواعد پر مبنی کمپریشن، کوڈ بلاکس اور URLs کو محفوظ رکھتا ہے", "compressionModeAggressive": "جارحانہ", "compressionModeAggressiveDesc": "خلاصہ + ٹول نتیجہ کمپریشن + زیادہ سے زیادہ بچت کے لئے ترقی پسند عمر رسیدہ", "compressionModeUltra": "الٹرا", @@ -7516,10 +7519,10 @@ "compressionAgingThresholdsDesc": "ہر عمر رسیدہ درجے پر رکھے گئے حالیہ پیغامات کی تعداد (اعلی = زیادہ محفوظ)", "compressionToolStrategies": "ٹول کے نتائج کی حکمت عملی", "compressionToolStrategiesDesc": "مختلف ٹول کے نتائج کی اقسام کے لیے کمپریشن کی حکمت عملیوں کو ٹوگل کریں۔", - "compressionGeneral": "General Settings", - "compressionAutoTrigger": "Auto-Trigger Threshold", - "compressionCacheTTL": "Cache TTL", - "compressionPreserveSystem": "Preserve System Prompt", + "compressionGeneral": "عمومی ترتیبات", + "compressionAutoTrigger": "خودکار آغاز کی حد", + "compressionCacheTTL": "کیش TTL", + "compressionPreserveSystem": "سسٹم پرامپٹ محفوظ رکھیں", "compressionPreserveSystemAlways": "ہمیشہ", "compressionPreserveSystemWhenNoCache": "جب کیشے نہ ہو", "compressionPreserveSystemNever": "کبھی نہیں", @@ -7532,64 +7535,64 @@ "compressionExclusionsSaved": "محفوظ شدہ", "compressionExclusionsCount": "{count, plural, one {# خارج} other {# خارجیاں}} ترتیب دی گئی ہیں", "compressionExclusionsEmpty": "کوئی خارج کردہ چیزیں ترتیب نہیں دی گئی ہیں — ہر ماڈل/اینڈپوائنٹ کمپریشن کے لیے اہل ہے (ڈیفالٹ رویہ)۔", - "compressionCavemanConfig": "Caveman Engine Configuration", - "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine", + "compressionCavemanConfig": "Caveman انجن کی ترتیب", + "compressionCavemanConfigDesc": "قواعد پر مبنی کمپریشن انجن کو باریک بینی سے ایڈجسٹ کریں", "compressionCavemanPanelHint": "اس کا آن/آف اور لیول پینل میں سیٹ کیا جاتا ہے:", - "compressionRoles": "Compress Message Roles", - "compressionRoleUser": "User", - "compressionRoleAssistant": "Assistant", - "compressionRoleSystem": "System", - "compressionMinLength": "Minimum Message Length", - "compressionSkipRules": "Skip Compression Rules", - "compressionSkipRulesDesc": "Click rules to skip them during compression", - "compressionPreservePatterns": "Preserve Patterns", - "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)", - "compressionLogTitle": "Compression Log", - "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.", + "compressionRoles": "پیغام کے کرداروں کو کمپریس کریں", + "compressionRoleUser": "صارف", + "compressionRoleAssistant": "معاون", + "compressionRoleSystem": "سسٹم", + "compressionMinLength": "پیغام کی کم از کم لمبائی", + "compressionSkipRules": "کمپریشن کے قواعد نظر انداز کریں", + "compressionSkipRulesDesc": "کمپریشن کے دوران قواعد کو نظر انداز کرنے کے لیے ان پر کلک کریں", + "compressionPreservePatterns": "پیٹرنز محفوظ رکھیں", + "compressionPreservePatternsDesc": "Regex پیٹرنز جنہیں کبھی کمپریس نہیں کیا جاتا (ہر سطر میں ایک)", + "compressionLogTitle": "کمپریشن لاگ", + "compressionLogEmpty": "ابھی تک کوئی درخواست کمپریس نہیں کی گئی۔ کمپریشن فعال ہونے کے ساتھ درخواستوں پر کارروائی کیے جانے پر اعداد و شمار یہاں ظاہر ہوں گے۔", "minutes": "منٹ", "compressionModeRtk": "RTK", - "compressionModeRtkDesc": "Command-aware tool output filtering", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", - "compressionModeStacked": "Stacked", - "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression", - "qdrantTitle": "Qdrant (Vector memory)", - "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.", - "qdrantStatusActive": "Active", - "qdrantStatusError": "Error", - "qdrantStatusDisabled": "Disabled", - "qdrantEnable": "Enable Qdrant", - "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.", - "qdrantTesting": "Testing...", - "qdrantTestConnection": "Test connection", - "qdrantSaved": "Configuration saved", - "qdrantSaveError": "Failed to save configuration", - "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant", - "qdrantPort": "Port", - "qdrantPortHint": "Qdrant default: 6333", - "qdrantCollectionHint": "Where memory points will be stored.", - "qdrantEmbeddingModel": "Embedding model", - "qdrantHelpTitle": "Quick setup help", - "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)", - "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.", - "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.", - "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.", - "qdrantHelpStep4": "4. Save, test connection, then test search.", - "qdrantEmbeddingQuickSelect": "Quick select from discovered models...", + "compressionModeRtkDesc": "کمانڈ سے آگاہ ٹول آؤٹ پٹ فلٹرنگ", + "compressionModeCodexResponses": "Responses ٹول کا آؤٹ پٹ", + "compressionModeCodexResponsesDesc": "اہل shell، patch، search، build، اور JSON آؤٹ پٹس کے لیے محتاط کمپریشن", + "compressionModeStacked": "اسٹیکڈ", + "compressionModeStackedDesc": "RTK ٹول آؤٹ پٹ فلٹرنگ، جس کے بعد Caveman پیغام کمپریشن ہوتا ہے", + "qdrantTitle": "Qdrant (ویکٹر میموری)", + "qdrantDesc": "اختیاری۔ تیز تر بازیافت کے لیے معنوی یادداشتوں کو ایک بیرونی ویکٹر ڈیٹابیس میں انڈیکس کرتا ہے۔", + "qdrantStatusActive": "فعال", + "qdrantStatusError": "خرابی", + "qdrantStatusDisabled": "غیر فعال", + "qdrantEnable": "Qdrant فعال کریں", + "qdrantEnableDesc": "فعال ہونے پر، معنوی/ہائبرڈ حکمتِ عملی یادداشتیں بازیافت کرنے کے لیے Qdrant استعمال کر سکتی ہے۔", + "qdrantTesting": "جانچ جاری ہے...", + "qdrantTestConnection": "کنکشن کی جانچ کریں", + "qdrantSaved": "کنفیگریشن محفوظ ہو گئی", + "qdrantSaveError": "کنفیگریشن محفوظ کرنے میں ناکامی", + "qdrantHostHint": "پورٹ کے بغیر۔ مثال: 127.0.0.1 یا http://qdrant", + "qdrantPort": "پورٹ", + "qdrantPortHint": "Qdrant کا ڈیفالٹ: 6333", + "qdrantCollectionHint": "وہ جگہ جہاں میموری پوائنٹس محفوظ کیے جائیں گے۔", + "qdrantEmbeddingModel": "ایمبیڈنگ ماڈل", + "qdrantHelpTitle": "فوری سیٹ اپ مدد", + "qdrantHelpQuickTitle": "فوری سیٹ اپ (Qdrant + OpenRouter)", + "qdrantHelpStep1": "1. ہوسٹ: Qdrant IP/URL، پورٹ: 6333، کلیکشن: omniroute_memory۔", + "qdrantHelpStep2": "2. اگر nvidia/llama-nemotron-embed-vl-1b-v2:free استعمال کر رہے ہیں، تو کلیکشن ڈائمینشن 2048 رکھیں۔", + "qdrantHelpStep3": "3. ماڈل فیلڈ: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free۔", + "qdrantHelpStep4": "4. محفوظ کریں، کنکشن کی جانچ کریں، پھر تلاش کی جانچ کریں۔", + "qdrantEmbeddingQuickSelect": "دریافت شدہ ماڈلز میں سے فوری انتخاب کریں...", "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small", - "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.", - "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)", - "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)", - "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.", - "qdrantSearchTestTitle": "Search test", - "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.", - "qdrantSearchPlaceholder": "Example: user preferences, history, etc", - "qdrantNoResults": "No results (or Qdrant is not configured).", - "qdrantCleanupTitle": "Retention and cleanup", - "qdrantCleanupDesc": "Removes expired and old points based on", - "searching": "Searching...", - "cleaning": "Cleaning...", - "cleanNow": "Clean now", + "qdrantEmbeddingHint": "فارمیٹ: provider/model۔ پرووائیڈر کی اسناد لازماً تشکیل دی گئی ہوں۔", + "qdrantApiKeyPlaceholderKeep": "(موجودہ کلید برقرار رکھنے کے لیے خالی چھوڑ دیں)", + "qdrantApiKeyPlaceholderOptional": "(اگر استعمال نہ ہو تو خالی چھوڑ دیں)", + "qdrantSaveHint": "مشورہ: host/port/collection/model میں ترمیم کریں اور محفوظ کریں پر کلک کریں۔ API کلید اختیاری ہے۔", + "qdrantSearchTestTitle": "تلاش کی جانچ", + "qdrantSearchTestDesc": "ایمبیڈنگ تیار کرتا ہے اور Qdrant میں تلاش کرتا ہے۔", + "qdrantSearchPlaceholder": "مثال: صارف کی ترجیحات، سرگزشت وغیرہ", + "qdrantNoResults": "کوئی نتائج نہیں (یا Qdrant تشکیل نہیں دیا گیا)۔", + "qdrantCleanupTitle": "برقرار رکھنے اور صفائی کی ترتیبات", + "qdrantCleanupDesc": "اس بنیاد پر میعاد ختم شدہ اور پرانے پوائنٹس ہٹاتا ہے:", + "searching": "تلاش جاری ہے...", + "cleaning": "صفائی جاری ہے...", + "cleanNow": "ابھی صاف کریں", "optional": "اختیاری", "current": "کرنٹ", "remove": "ہٹا دیں۔", @@ -7600,19 +7603,19 @@ "resilienceScope": "دائرہ کار:", "resilienceTrigger": "محرک:", "resilienceEffect": "اثر:", - "resilienceRequestQueueTitle": "Request Queue & Rate", - "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers", - "resilienceRequestsPerMinute": "Requests per minute", - "resilienceMinTimeBetweenRequests": "Minimum time between requests", - "resilienceConcurrentRequests": "Concurrent requests", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceRequestQueueTitle": "درخواستوں کی قطار اور شرح", + "resilienceAutoEnableApiKeyProviders": "API-key پرووائیڈرز کے لیے خودکار طور پر فعال کریں", + "resilienceRequestsPerMinute": "فی منٹ درخواستیں", + "resilienceMinTimeBetweenRequests": "درخواستوں کے درمیان کم از کم وقت", + "resilienceConcurrentRequests": "بیک وقت درخواستیں", + "resilienceConnectionScopeConcurrentRequests": "فی کنکشن/کوٹہ دائرہ بیک وقت درخواستیں", + "resilienceGlobalConcurrentRequests": "عالمی بیک وقت اپ اسٹریم درخواستیں (0 = غیر فعال)", "resilienceMaxQueueWaitTime": "زیادہ سے زیادہ قطار انتظار کا وقت", - "resilienceBaseCooldown": "Base cooldown", - "resilienceUseUpstreamRetryHints": "Use upstream retry hints", - "resilienceDefaultPerProvider": "Default (per provider)", - "resilienceAlwaysOn": "Always on", - "resilienceAlwaysOff": "Always off", + "resilienceBaseCooldown": "بنیادی وقفۂ انتظار", + "resilienceUseUpstreamRetryHints": "اپ اسٹریم کی دوبارہ کوشش کی ہدایات استعمال کریں", + "resilienceDefaultPerProvider": "طے شدہ (فی پرووائیڈر)", + "resilienceAlwaysOn": "ہمیشہ فعال", + "resilienceAlwaysOff": "ہمیشہ غیر فعال", "routingRemoveEntry": "اندراج کو ہٹا دیں۔", "routingNeedlesSubstrings": "سوئیاں (ملانے کے لیے ذیلی تاریں)", "routingCaseSensitive": "کیس حساس", @@ -7700,20 +7703,20 @@ "visionBridgePromptHint": "اصل درخواست میں نکالی گئی تفصیل کو دوبارہ شامل کرنے سے پہلے ویژن ماڈل کو بھیجا گیا۔", "visionBridgeTimeoutMs": "ٹائم آؤٹ (ms)", "visionBridgeMaxImagesPerRequest": "زیادہ سے زیادہ تصاویر فی درخواست", - "resilienceMaxBackoffSteps": "Max backoff steps", - "resilienceProviderBreakerTitle": "Circuit Breaker per Provider", - "resilienceFailureThreshold": "Failure threshold", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceMaxBackoffSteps": "بیک آف کے زیادہ سے زیادہ مراحل", + "resilienceProviderBreakerTitle": "فی پرووائیڈر سرکٹ بریکر", + "resilienceFailureThreshold": "ناکامی کی حد", + "resilienceDegradationThreshold": "تنزلی کی حد", "resilienceResetTimeout": "ٹائم آؤٹ ری سیٹ کریں۔", "resilienceFailureThresholdLabel": "ناکامی کی حد", "resilienceResetTimeoutLabel": "ٹائم آؤٹ ری سیٹ کریں۔", - "resilienceConnectionCooldownTitle": "Connection Cooldown", + "resilienceConnectionCooldownTitle": "کنکشن کا وقفۂ انتظار", "resilienceUseUpstreamRetryHintsLabel": "اپ اسٹریم دوبارہ کوشش کے اشارے استعمال کریں۔", "resilienceUseUpstream429BreakerLabel": "اپ اسٹریم 429 اشارے استعمال کریں (بریکر)", "resilienceMaxBackoffStepsLabel": "زیادہ سے زیادہ بیک آف اقدامات", "resilienceYes": "جی ہاں", "resilienceNo": "نہیں", - "resilienceDefault": "Default", + "resilienceDefault": "طے شدہ", "storageDatabaseBackupRetention": "ڈیٹا بیس کا بیک اپ برقرار رکھنا", "storageDatabaseBackups": "ڈیٹا بیس بیک اپس", "storageBackupRetentionDescription": "خودکار SQLite بیک اپس اس میں محفوظ کیے جاتے ہیں", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "لیگیسی JSON کامیابی سے امپورٹ ہو گیا!", "jsonImportFailed": "JSON امپورٹ کرنے میں ناکامی ہوئی", "jsonImportError": "JSON امپورٹ کے دوران خرابی", + "jsonImportAuthRequired": "پرانی JSON تشکیل درآمد کرنے کے لیے توثیق درکار ہے۔ براہ کرم پہلے سائن اِن کریں یا سیٹ اپ مکمل کریں۔", + "databaseSettingsAuthRequiredTitle": "توثیق درکار ہے", + "databaseSettingsAuthRequiredBody": "ڈیٹابیس کی ترتیبات اور JSON درآمد صرف توثیق شدہ منتظم کے لیے دستیاب ہیں۔ انہیں دیکھنے اور ان میں ترمیم کرنے کے لیے سائن اِن کریں یا سیٹ اپ مکمل کریں۔", + "databaseSettingsAuthRequiredCta": "سائن اِن کریں", "storagePurgeData": "ڈیٹا صاف کریں۔", "storagePurgeDataDesc": "ریٹینشن چیکس لاگو کیے بغیر فوری طور پر تمام ریکارڈز حذف کریں۔ احتیاط کے ساتھ استعمال کریں۔", "storageRetentionCleanup": "ریٹینشن ترتیبات", @@ -7828,14 +7835,14 @@ "compressionDerivedMode": "موڈ: {mode}", "compressionAdaptiveOff": "اڈیپٹیو کانٹیکسٹ بجٹ: بند (لیگیسی آٹو ٹریگر)", "compressionAdaptiveTarget": "اڈیپٹیو ({mode}, پالیسی: {policy}) — ہدف ≈ {target, number} ٹوکنز ({contextLimit, number}-ٹوکن ونڈو کے لیے)", - "compressionAdaptiveMode": "__MISSING__:Adaptive context budget", - "compressionAdaptiveModeOff": "__MISSING__:Off (legacy auto-trigger)", - "compressionAdaptiveModeFloor": "__MISSING__:Floor (always guarantee fit)", - "compressionAdaptiveModeReplace": "__MISSING__:Replace auto-trigger", - "compressionAdaptivePolicy": "__MISSING__:Budget policy", - "compressionAdaptivePolicyReserve": "__MISSING__:Reserve output", - "compressionAdaptivePolicyPercentage": "__MISSING__:Percentage of window", - "compressionAdaptivePolicyAbsolute": "__MISSING__:Absolute token budget", + "compressionAdaptiveMode": "حسبِ ضرورت سیاقی بجٹ", + "compressionAdaptiveModeOff": "بند (روایتی خودکار آغاز)", + "compressionAdaptiveModeFloor": "کم از کم حد (ہمیشہ فِٹ ہونے کی ضمانت)", + "compressionAdaptiveModeReplace": "خودکار آغاز کو تبدیل کریں", + "compressionAdaptivePolicy": "بجٹ پالیسی", + "compressionAdaptivePolicyReserve": "آؤٹ پٹ محفوظ رکھیں", + "compressionAdaptivePolicyPercentage": "ونڈو کا فیصد", + "compressionAdaptivePolicyAbsolute": "مطلق ٹوکن بجٹ", "compressionOutputStylesDescription": "پرووائیڈر آؤٹ پٹ کو دوبارہ لکھے بغیر رسپانس شیپنگ ہدایات شامل کریں۔ آزادانہ طور پر یکجا کریں۔", "mcpAccessibilityDescription": "MCP ٹول آؤٹ پٹس کو اسکوپ کرتا ہے (علیحدہ اسٹور)۔", "compressionStylesTileSummary": "{tokens, number} ٹوکنز محفوظ کیے گئے · {runs, plural, one {# رن اسٹائل کیا گیا} other {# رنز اسٹائل کیے گئے}}", @@ -7866,8 +7873,8 @@ "description": "کمانڈ آؤٹ پٹ فلٹرنگ۔" }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses ٹول آؤٹ پٹ", + "description": "معاونت یافتہ Responses ٹول آؤٹ پٹس کے لیے محتاط کمپریشن۔" }, "headroom": { "label": "ہیڈ روم", @@ -7908,12 +7915,12 @@ "description": "YAGNI سیڑھی: سب سے چھوٹی کام کرنے والی تبدیلی، کوئی غیر مطلوبہ خلاصہ نہیں۔" }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Ponytail (سست سینئر ڈویلپر)", + "description": "سست سینئر ڈویلپر کا نظم: YAGNI کی سیڑھی چڑھیں، بنیادی وجہ درست کریں، کم سے کم قابلِ عمل تبدیلی کریں۔" }, "i-have-adhd": { - "label": "I have ADHD (action-first)", - "description": "Action-first output: next action leads, steps numbered, one concrete next step, no preamble." + "label": "مجھے ADHD ہے (پہلے عمل)", + "description": "پہلے عمل والا آؤٹ پٹ: اگلا عمل پہلے، مراحل نمبر وار، ایک ٹھوس اگلا قدم، کوئی تمہید نہیں۔" }, "terse-cjk": { "label": "مختصر CJK (文言)", @@ -7930,7 +7937,15 @@ "memorySkillsActiveSkillsProvider": "فعال ہنر فراہم کنندہ", "cliproxyapiFallback": "CLIProxyAPI فال بیک", "cliproxyapiEnableFallback": "CLIProxyAPI فال بیک کو فعال کریں۔", - "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiUrl": "CLIProxyAPI یو آر ایل", + "headroomProxyTitle": "Headroom پراکسی", + "headroomProxyDesc": "اختیاری Headroom ٹوکن بچانے والی پراکسی کا URL۔ خالی ہونے پر HEADROOM_URL یا http://localhost:8787 استعمال ہوگا۔", + "headroomProxyUrl": "Headroom یو آر ایل", + "headroomProxyUrlHint": "لوپ بیک URLs کو اس صفحے سے شروع کیا جا سکتا ہے۔ بیرونی URLs کی صرف جانچ کی جاتی ہے۔", + "headroomProxySave": "محفوظ کریں", + "headroomProxyStart": "شروع کریں", + "headroomProxyStop": "روکیں", + "headroomProxyExternalHint": "یہ URL لوپ بیک نہیں ہے، اس لیے OmniRoute مقامی CLI شروع نہیں کرے گا۔", "cliproxyapiStatus": "CLIProxyAPI اسٹیٹس", "cliproxyapiNotDetected": "پتہ نہیں چلا", "cliproxyapiImportAuthTitle": "CLIProxyAPI سے اکاؤنٹس درآمد کریں", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "OpenAI Codex کی درخواستوں کے لیے عالمی سطح پر service_tier=priority انجیکشن کریں۔", "codexFastTierHint": "فعال ہونے پر، OmniRoute service_tier=priority کو آؤٹ باؤنڈ کوڈیکس کی درخواستوں میں ان کنکشنز کے لیے شامل کرتا ہے جو پہلے سے کسی درجے کی وضاحت نہیں کرتے ہیں۔ ترجیحی درجے کے لیے OpenAI Enterprise API کلید یا ChatGPT-auth Codex پاتھ کی ضرورت ہوتی ہے۔ دیگر کلیدی اقسام کو OpenAI سے درجے سے متعلق غلطی موصول ہوگی۔ کوڈیکس فراہم کنندہ صفحہ پر فی کنکشن کی ترتیبات کو فوقیت حاصل ہے۔", "codexFastTierSaveError": "کوڈیکس فاسٹ ٹائر کی ترتیب کو اپ ڈیٹ کرنے میں ناکام", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex کوٹا آٹو پنگ", + "codexAutoPingDesc": "فی کنکشن اختیاری: Codex سیشن ونڈو ری سیٹ ہونے کے فوراً بعد ایک مختصر درخواست بھیجتا ہے تاکہ ضرورت کے وقت یہ کولڈ نہ ہو۔", + "codexAutoPingWarning": "ہر پنگ پر حقیقی Codex کوٹے کی معمولی مقدار استعمال ہوتی ہے۔ بطور ڈیفالٹ بند ہے — صرف ان کنکشنز کے لیے فعال کریں جن پر آپ واقعی انحصار کرتے ہیں۔", + "codexAutoPingSaveError": "Codex آٹو پنگ کی ترتیب اپ ڈیٹ کرنے میں ناکامی", + "codexAutoPingToggleAria": "{connection} کے لیے Codex کوٹا آٹو پنگ ٹوگل کریں", "codexFastTierTierLabel": "سروس ٹیئر", "codexFastTierTierPriority": "ترجیح", "codexFastTierTierFlex": "فلیکس", @@ -8129,8 +8144,8 @@ "resilienceCredentialHealthInterval": "عالمی جانچ وقفہ", "resilienceCredentialHealthEveryMinutes": "ہر {minutes} منٹ", "resilienceCredentialHealthHint": "0 پس منظر اسکین بند کرتا ہے (زیادہ سے زیادہ 1440 منٹ = 24 گھنٹے)۔ اپنی صحت کی جانچ کی قدر والے کنکشن اس عالمی ڈیفالٹ کو نظر انداز کرتے ہیں؛ کسی کنکشن پر 0 اسے عالمی اسکین چالو ہونے پر بھی باہر رکھتا ہے۔", - "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.", - "forcedFingerprintBadge": "Required", + "forcedFingerprintTitle": "{provider} کے لیے ہمیشہ فعال — OAuth اکاؤنٹ کی حفاظت کے لیے ضروری ہے؛ اسے بند نہیں کیا جا سکتا۔", + "forcedFingerprintBadge": "ضروری", "sessionAffinityTitle": "سیشن افینیٹی", "sessionAffinityDesc": "کسی بھی پرووائیڈر کے لیے، اتنے سیکنڈز تک ایک ہی اکاؤنٹ پر ایک گفتگو کو برقرار رکھتا ہے۔ 0 اسے غیر فعال کرتا ہے۔", "sessionAffinityTtl": "افینیٹی TTL (سیکنڈز)", @@ -8202,18 +8217,18 @@ "modelLockoutMaxBackoffStepsDescription": "کول ڈاؤن بڑھنے سے رکنے سے پہلے بیک آف مراحل کی زیادہ سے زیادہ تعداد۔ زیادہ تر کنفیگریشنز میں Max Cooldown کی حد پہلے پہنچ جاتی ہے، جس سے یہ Max Cooldown بڑھائے جانے کی صورت میں ایک حفاظتی حد بن جاتی ہے۔", "disableSessionStickiness": "سیشن اسٹیکنیس کو غیر فعال کریں", "disableSessionStickinessDesc": "راؤنڈ رابن اور رینڈم کمبوز پہلے پیغام کے ہیش کے ذریعے پوری گفتگو کو ایک کنکشن سے منسلک کرنے کے بجائے ہر درخواست پر ایک مختلف کنکشن پر منتقل ہو جاتے ہیں۔ ملٹی ٹرن چیٹس کے لیے پرامپٹ کیش ہٹس کو برقرار رکھنے کے لیے اسے بند رہنے دیں۔ فی کمبو اوور رائیڈز کو ترجیح حاصل ہوگی۔", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", - "reasoningTokenBuffer": "Reasoning token buffer", - "reasoningTokenBufferDesc": "Allow combo routing to add max_tokens headroom only for known reasoning models when the full buffer fits inside a known output cap.", - "zeroLatencyOptimizations": "Zero-latency optimizations", - "zeroLatencyOptimizationsDesc": "Opt in to hedging, predictive TTFT skips, and proactive fallback compression. Leave off to prevent these latency features from racing targets or compressing fallback requests.", + "promptCacheAffinity": "پرامپٹ کیش لوکیلٹی روٹنگ", + "promptCacheAffinityDesc": "صحت اور کوٹا فیل اوور برقرار رکھتے ہوئے مماثل پرامپٹ کیش کلیدوں کے لیے اسی پرووائیڈر اکاؤنٹ کو ترجیح دیں۔", + "reasoningTokenBuffer": "ریزننگ ٹوکن بفر", + "reasoningTokenBufferDesc": "کومبو روٹنگ کو صرف معلوم ریزننگ ماڈلز کے لیے max_tokens ہیڈ روم شامل کرنے دیں، بشرطیکہ مکمل بفر معلوم آؤٹ پٹ حد کے اندر سما سکے۔", + "zeroLatencyOptimizations": "صفر تاخیر کی آپٹیمائزیشنز", + "zeroLatencyOptimizationsDesc": "ہیجنگ، پیش گوئی پر مبنی TTFT اسکیپس، اور پیشگی فال بیک کمپریشن کے لیے آپٹ اِن کریں۔ ان لیٹنسی خصوصیات کو اہداف کے ساتھ دوڑ لگانے یا فال بیک درخواستیں کمپریس کرنے سے روکنے کے لیے اسے بند رکھیں۔", "credentialRedaction": "اسناد کی ریڈیکشن", "credentialRedactionDesc": "فراہم کنندگان کو بھیجے گئے سیاق و سباق اور جوابات سے API کیز، ٹوکنز اور خفیہ معلومات کو سنسر کریں۔", "enableCredentialRedaction": "اسناد کی سنسرشپ کو فعال کریں", "enableCredentialRedactionDesc": "پیغامات، ٹول کالز اور جوابات سے API کیز، ٹوکنز، پرائیویٹ کیز اور JWTs کو صاف کرتا ہے۔", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "خودکار سنک غیر فعال ہے", + "pricingAutoSyncEnabled": "خودکار سنک فعال ہے", "modalityBridgeIntro": "ملٹی موڈل مواد کو صرف ٹیکسٹ ماڈلز تک پہنچنے سے پہلے ٹیکسٹ میں تبدیل کریں۔ وژن، آڈیو اور ویڈیو برج دستیاب اور قابل ترتیب ہیں۔", "modalityBridgeVisionTab": "نظریہ", "modalityBridgeAudioTab": "آڈیو", @@ -8364,33 +8379,25 @@ "cliproxyapiHealth": "صحت", "cliproxyapiPort": "پورٹ", "qdrantHost": "میزبان", - "qdrantCollection": "اجتماع", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "اجتماع" }, "contextRtk": { - "title": "RTK Engine", - "description": "Command-aware compression for tool output, terminal logs and build results.", - "enabled": "Enabled", - "intensity": "Intensity", - "intensityMinimal": "Minimal", - "intensityStandard": "Standard", - "intensityAggressive": "Aggressive", - "toolResults": "Tool results", - "assistantMessages": "Assistant messages", - "codeBlocks": "Code blocks", + "title": "RTK انجن", + "description": "ٹول آؤٹ پٹ، ٹرمینل لاگز اور بلڈ کے نتائج کے لیے کمانڈ سے آگاہ کمپریشن۔", + "enabled": "فعال", + "intensity": "شدت", + "intensityMinimal": "کم سے کم", + "intensityStandard": "معیاری", + "intensityAggressive": "جارحانہ", + "toolResults": "ٹول کے نتائج", + "assistantMessages": "اسسٹنٹ کے پیغامات", + "codeBlocks": "کوڈ بلاکس", "filterCatalog": "فلٹر کیٹلاگ", "filterCatalogDesc": "زمرہ کے لحاظ سے دستیاب آؤٹ پٹ فلٹرز", "guidedConfig": "کنفیگریشن", "guidedConfigDesc": "ایڈجسٹ کریں کہ کس طرح RTK آپ کے ٹرمینل آؤٹ پٹ کو فلٹر کرتا ہے۔", - "maxLines": "Max lines", - "maxChars": "Max chars", + "maxLines": "زیادہ سے زیادہ سطریں", + "maxChars": "زیادہ سے زیادہ حروف", "deduplicateThreshold": "ڈپلیکیٹ حد", "customFilters": "حسب ضرورت فلٹرز", "detectedType": "دریافت شدہ قسم", @@ -8402,22 +8409,22 @@ "rawOutputFailures": "ناکامیاں", "rawOutputAlways": "ہمیشہ", "rawOutputMaxBytes": "خام آؤٹ پٹ زیادہ سے زیادہ بائٹس", - "filterTesting": "Filter Testing", - "pasteOutput": "Paste tool output to test filtering...", + "filterTesting": "فلٹر کی جانچ", + "pasteOutput": "فلٹرنگ کی جانچ کے لیے ٹول آؤٹ پٹ یہاں پیسٹ کریں...", "presetHigh": "جارحانہ", "presetLow": "روشنی", "presetMaxChars": "زیادہ سے زیادہ آؤٹ پٹ حروف", "presetMaxLines": "زیادہ سے زیادہ آؤٹ پٹ لائنز", "presetMedium": "معیاری", - "run": "Run", - "result": "Result", - "previewEmpty": "Run a sample to preview RTK output.", - "detected": "Detected", + "run": "چلائیں", + "result": "نتیجہ", + "previewEmpty": "RTK آؤٹ پٹ کا پیش منظر دیکھنے کے لیے ایک نمونہ چلائیں۔", + "detected": "شناخت شدہ", "masterSwitchOffAlert": "Token Saver کا ماسٹر سوئچ بند ہے — جب تک آپ اسے Endpoint صفحہ سے آن نہیں کرتے، یہ ترتیبات درخواستوں پر اثر انداز نہیں ہوں گی۔", - "tokensFiltered": "Tokens filtered", - "filtersActive": "Filters active", - "requests": "Requests", - "avgSavings": "Avg savings", + "tokensFiltered": "فلٹر کیے گئے ٹوکنز", + "filtersActive": "فعال فلٹرز", + "requests": "درخواستیں", + "avgSavings": "اوسط بچت", "simpleMode": "سادہ", "advancedMode": "اعلی درجے کی", "searchFilters": "فلٹرز تلاش کریں...", @@ -8499,7 +8506,7 @@ "description": "واضح رو-کاؤنٹ مارکرز کے ساتھ ہم جنس JSON ارییز کا لوس لیس ٹیبلر کمپیکشن۔" }, "session-dedup": { - "name": "Session Dedup", + "name": "سیشن ڈی ڈپلیکیشن", "description": "ریکوری کے قابل مواد کے مارکرز کے ساتھ کراس ٹرن بلاک ڈی ڈوپلی کیشن۔" }, "ccr": { @@ -8617,26 +8624,26 @@ } }, "contextCombos": { - "title": "Compression Combos", - "description": "Define how engines are combined for different routing scenarios.", - "createCombo": "Create Compression Combo", - "editCombo": "Edit", - "deleteCombo": "Delete", - "deleteConfirm": "Delete this compression combo?", - "pipeline": "Pipeline", - "addStep": "Add Step", - "removeStep": "Remove", - "name": "Name", - "descriptionField": "Description", - "languagePacks": "Language Packs", - "outputMode": "Output Mode", - "assignToRouting": "Assign to Routing Combos", - "noAssignments": "No routing combos available", - "default": "Default", - "setAsDefault": "Set as Default", - "save": "Save", - "cancel": "Cancel", - "enabled": "Enabled", + "title": "کمپریشن کے مجموعے", + "description": "مختلف روٹنگ منظرناموں کے لیے انجنوں کو یکجا کرنے کا طریقہ متعین کریں۔", + "createCombo": "کمپریشن کا مجموعہ بنائیں", + "editCombo": "ترمیم کریں", + "deleteCombo": "حذف کریں", + "deleteConfirm": "کیا یہ کمپریشن مجموعہ حذف کرنا ہے؟", + "pipeline": "پائپ لائن", + "addStep": "مرحلہ شامل کریں", + "removeStep": "ہٹائیں", + "name": "نام", + "descriptionField": "تفصیل", + "languagePacks": "لینگویج پیکس", + "outputMode": "آؤٹ پٹ موڈ", + "assignToRouting": "روٹنگ کے مجموعوں کو تفویض کریں", + "noAssignments": "کوئی روٹنگ مجموعہ دستیاب نہیں", + "default": "طے شدہ", + "setAsDefault": "بطور ڈیفالٹ سیٹ کریں", + "save": "محفوظ کریں", + "cancel": "منسوخ کریں", + "enabled": "فعال", "loading": "لوڈ ہو رہا ہے…", "hubTitle": "کمپریشن ہب", "hubDescription": "منتخب کریں کہ کون سا کمپریشن پروفائل عالمی سطح پر چلے گا۔", @@ -8661,6 +8668,8 @@ "contextEditingNote": "فی الحال صرف Claude (Anthropic) کے لیے دستیاب ہے۔ یہ ایک سپرد کردہ موڈ ہے: فراہم کنندہ سرور کی طرف پرانے ٹول کے استعمال کے بلاکس کو صاف کرتا ہے — ہم پیغام کو دوبارہ نہیں لکھتے ہیں۔ یہ دوسرے فراہم کنندگان کو متاثر نہیں کرتا ہے۔", "namedCombos": "نامزد کمبوز", "namedCombosDescription": "مختلف پائپ لائنز کو محفوظ کریں اور انہیں مخصوص روٹنگ کمبوز کے لیے تفویض کریں۔", + "activeProfileMasterSwitchOffWarning": "ذیل کا فعال پروفائل اس وقت تک نہیں چلے گا جب تک مرکزی \"Prompt Compression\" سوئچ آن نہ کیا جائے۔", + "activeProfileMasterSwitchOffCta": "اسے Settings میں آن کریں", "comboNamePlaceholder": "کمبو کا نام", "descriptionPlaceholder": "تفصیل", "nameRequired": "محفوظ کرنے سے پہلے کمبو کا نام درج کریں۔", @@ -8674,9 +8683,7 @@ "languagePacksList": "زبان کے پیک: {packs}", "dragToReorder": "مرحلے کو دوبارہ ترتیب دینے کے لیے گھسیٹیں", "engine": "انجن", - "intensity": "شدت", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "شدت" }, "compressionStudio": { "noRun": "کوئی کمپریشن رن دستیاب نہیں ہے۔", @@ -8705,7 +8712,7 @@ "run": "چلائیں", "laneRejected": "مسترد شدہ: {reason}", "error": "خرابی", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "مشترکہ پائپ لائن کے پیش منظر میں ناکامی: {reason}", "combinedFlow": "مشترکہ بہاؤ", "eachLayer": "ہر تہہ الگ سے", "diff": "فرق", @@ -8714,7 +8721,7 @@ "input": "ان پٹ", "output": "آؤٹ پٹ", "tokenCount": "{count, number} ٹوکنز", - "tokenShort": "tok", + "tokenShort": "ٹوکن", "provider": "فراہم کنندہ", "judgeModel": "جج ماڈل", "judgeModelPlaceholder": "مثلاً claude-haiku", @@ -8780,27 +8787,27 @@ }, "enableTitle": "انجن فعال کریں", "enableDescription": "اسٹیک میں سب سے آخر میں چلتا ہے (RTK/Caveman کے متن صاف کرنے کے بعد، OmniGlyph باقی ماندہ کو تصاویر میں تبدیل کرتا ہے) اور omniglyph موڈ کے ذریعے اسٹینڈ الون بھی چلتا ہے۔ یہ ایک پیش نظارہ ہے اور اینڈ ٹو اینڈ توثیق مکمل ہونے تک ڈیفالٹ طور پر بند رہتا ہے۔", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "کمپریشن پروفائل", + "profileDescription": "پروفائل بالائی حد ہے، زیریں حد نہیں: زیادہ سخت پروفائل کو فی مرحلہ اوور رائیڈ کے ذریعے دوبارہ نرم نہیں کیا جا سکتا۔ اس کوڈ بیس پر پیمائش کے مطابق: coding-safe یا balanced کے ساتھ، ایسا سیشن جس میں ابھی ہسٹری جمع نہیں ہوئی، کچھ بھی کمپریس نہیں کرتا، کیونکہ دونوں کم از کم حروف کی حد بڑھاتے ہیں اور سسٹم پرامپٹ، ٹول اسکیماؤں اور ٹول نتائج کو اصل حالت میں رکھتے ہیں۔", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "جارحانہ (ڈیفالٹ)", + "description": "وہ پالیسی جس کی شائع شدہ رسیدوں نے پیمائش کی۔ سسٹم پرامپٹ، ٹول دستاویزات اور گہری ہسٹری کو تصویری شکل دیتی ہے۔" }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "متوازن", + "description": "لائیو حالت کو اصل حالت میں رکھتا ہے اور آخری 8 باریوں کو محفوظ رکھتا ہے؛ صرف پرانی مکمل شدہ ہسٹری کو سمیٹتا ہے۔" }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "کوڈنگ کے لیے محفوظ", + "description": "اختیارات، ٹول اسکیماؤں اور لائیو ٹول آؤٹ پٹ کو اصل حالت میں رکھتے ہوئے آخری 12 باریوں کو محفوظ رکھتا ہے۔ جب تک سیشن میں ہسٹری جمع نہ ہو، کچھ بھی کمپریس نہیں کرتا۔" }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "بلا تبدیلی منتقلی", + "description": "بغیر تبدیلی کے روٹ کرتا ہے۔ انجن کو چھوڑ دیا جاتا ہے اور درخواست کو بغیر چھیڑے آگے بھیج دیا جاتا ہے۔" } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "OmniGlyph کمپریشن پروفائل منتخب کریں", "saved": "محفوظ ہو گیا۔", "saveFailed": "محفوظ نہیں ہو سکا۔", "enableAria": "OmniGlyph انجن فعال کریں", @@ -8885,7 +8892,7 @@ "fallbackRouting": "فال بیک روٹنگ", "fallbackRoutingDescription": "CLIProxyAPI کے ذریعے فراہم کنندہ کی ناکام درخواستوں کو دوبارہ آزمائیں", "enableFallback": "فال بیک فعال کریں", - "cliproxyUrl": "CLIProxyAPI URL", + "cliproxyUrl": "CLIProxyAPI یو آر ایل", "fallbackCodes": "فال بیک اسٹیٹس کوڈز (کوما سے الگ کردہ)", "invalidUrl": "غلط URL — http:// یا https:// سے شروع ہونا ضروری ہے", "saved": "محفوظ ہو گیا", @@ -8902,37 +8909,37 @@ }, "contextCaveman": { "title": "Caveman Engine", - "description": "Rule-based message compression, language packs, analytics and output mode controls.", + "description": "اصولوں پر مبنی پیغام کمپریشن، لینگویج پیکس، تجزیات اور آؤٹ پٹ موڈ کے کنٹرولز۔", "advancedConfig": "اعلی درجے کی ترتیب", "advancedConfigDesc": "ٹھیک ٹیون کمپریشن سلوک", "aggressiveSettings": "جارحانہ ترتیبات", "aggressiveSettingsDesc": "ممکنہ کوالٹی ٹریڈ آف کے ساتھ زیادہ سے زیادہ کمپریشن", - "requests": "Requests", - "tokensSaved": "Tokens saved", - "savingsPercent": "Savings %", - "avgLatency": "Avg latency", - "languagePacks": "Language Packs", - "languagePacksDesc": "Enable compression rules for specific languages.", + "requests": "درخواستیں", + "tokensSaved": "بچائے گئے ٹوکنز", + "savingsPercent": "بچت %", + "avgLatency": "اوسط تاخیر", + "languagePacks": "لینگویج پیکس", + "languagePacksDesc": "مخصوص زبانوں کے لیے کمپریشن کے اصول فعال کریں۔", "labelAutoTrigger": "سیاق و سباق سے زیادہ ہونے پر آٹو کمپریس کریں۔", "labelCompressionRate": "کمپریشن طاقت", "labelMaxTokens": "ہدف ٹوکن فی پیغام", "labelMinLength": "پیغام کی کم از کم لمبائی", "labelMinSavings": "بچانے کے لیے کم از کم ٹوکن", - "enabled": "Enabled", - "autoDetect": "Auto-detect language", - "rulesCount": "{count} rules", + "enabled": "فعال", + "autoDetect": "زبان کا خودکار پتہ لگائیں", + "rulesCount": "{count} اصول", "inputCompressionTitle": "ان پٹ کمپریشن", "inputCompressionDesc": "چیٹ ہسٹری کو مختصر الفاظ کے ساتھ دوبارہ لکھیں۔ ان پٹ ٹوکنز میں تقریباً 50% کمی کرتا ہے۔", - "analyticsTitle": "Compression Analytics", - "noAnalytics": "No compression analytics yet.", + "analyticsTitle": "کمپریشن کے تجزیات", + "noAnalytics": "ابھی تک کمپریشن کے کوئی تجزیات موجود نہیں۔", "masterDisabledWarning": "Token Saver کا ماسٹر سوئچ OFF ہے — یہ ترتیبات درخواستوں پر اس وقت تک اثر انداز نہیں ہوں گی جب تک آپ اسے Compression Settings سے آن نہ کریں یا یہاں تبدیل نہ کریں۔", "outputMode": "آؤٹ پٹ موڈ", "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.", - "outputModeTitle": "Output Mode", + "outputModeTitle": "آؤٹ پٹ موڈ", "quickSettings": "فوری ترتیبات", "quickSettingsDesc": "شروع کرنے کے لیے بنیادی کمپریشن کی ترتیبات", - "autoClarity": "Auto-Clarity Bypass", - "bypassConditions": "Bypass conditions", + "autoClarity": "خودکار وضاحت بائی پاس", + "bypassConditions": "بائی پاس کی شرائط", "bypassConditionsList": "سیکورٹی، ناقابل واپسی، وضاحت، آرڈر حساس", "simpleMode": "سادہ", "advancedMode": "اعلی درجے کی", @@ -8944,59 +8951,59 @@ "ultraSettings": "الٹرا سیٹنگز", "ultraSettingsDesc": "SLM سے چلنے والا سیمنٹک کمپریشن", "preview": { - "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.", - "full": "Respond terse and compact. Preserve all technical substance.", - "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols." + "lite": "مختصر جواب دیں۔ تکنیکی اصطلاحات، کوڈ، خرابیوں، URLs اور شناخت کنندگان کو برقرار رکھیں۔", + "full": "انتہائی مختصر اور جامع جواب دیں۔ تمام تکنیکی مواد برقرار رکھیں۔", + "ultra": "عام تکنیکی مخففات کے ساتھ انتہائی مختصر جواب دیں۔ عین علامات برقرار رکھیں۔" } }, "translator": { - "title": "Translator", - "metaTitle": "Translator Playground | OmniRoute", - "metaDescription": "Debug, test, and visualize API format translations between providers", - "playgroundTitle": "Translator Playground", - "playground": "Playground", - "realtime": "Real-Time Translation Activity", + "title": "مترجم", + "metaTitle": "مترجم پلے گراؤنڈ | OmniRoute", + "metaDescription": "فراہم کنندگان کے درمیان API فارمیٹ کے تراجم کو ڈیبگ، ٹیسٹ اور بصری شکل میں دیکھیں", + "playgroundTitle": "مترجم پلے گراؤنڈ", + "playground": "پلے گراؤنڈ", + "realtime": "ریئل ٹائم ترجمے کی سرگرمی", "chatTester": "Chat Tester", - "testBench": "Test Bench", - "liveMonitor": "Live Monitor", - "modeDescriptionPlayground": "Paste any API request body and see how OmniRoute translates it between provider formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", - "modeDescriptionChatTester": "Send real chat requests through OmniRoute and inspect the full round-trip: input, translated request, provider response, and translated output.", - "modeDescriptionTestBench": "Run predefined scenarios and compare compatibility across providers and models.", - "modeDescriptionLiveMonitor": "Watch translation events in real time as requests flow through OmniRoute.", - "modeDescriptionFallback": "Debug, test, and visualize how OmniRoute translates API requests between providers.", - "recentTranslations": "Recent Translations", - "noTranslations": "No translations yet", - "source": "Source", - "target": "Target", - "time": "Time", + "testBench": "ٹیسٹ بینچ", + "liveMonitor": "لائیو مانیٹر", + "modeDescriptionPlayground": "کوئی بھی API درخواست باڈی پیسٹ کریں اور دیکھیں کہ OmniRoute اسے فراہم کنندگان کے فارمیٹس کے درمیان کیسے تبدیل کرتا ہے (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)", + "modeDescriptionChatTester": "OmniRoute کے ذریعے حقیقی چیٹ درخواستیں بھیجیں اور مکمل راؤنڈ ٹرپ کا جائزہ لیں: ان پٹ، ترجمہ شدہ درخواست، فراہم کنندہ کا جواب، اور ترجمہ شدہ آؤٹ پٹ۔", + "modeDescriptionTestBench": "پہلے سے طے شدہ منظرنامے چلائیں اور فراہم کنندگان اور ماڈلز کے درمیان مطابقت کا موازنہ کریں۔", + "modeDescriptionLiveMonitor": "جب درخواستیں OmniRoute سے گزریں تو ترجمے کے واقعات کو ریئل ٹائم میں دیکھیں۔", + "modeDescriptionFallback": "ڈیبگ، ٹیسٹ اور بصری شکل میں دیکھیں کہ OmniRoute فراہم کنندگان کے درمیان API درخواستوں کا ترجمہ کیسے کرتا ہے۔", + "recentTranslations": "حالیہ تراجم", + "noTranslations": "ابھی تک کوئی ترجمہ نہیں", + "source": "ماخذ", + "target": "ہدف", + "time": "وقت", "model": "Model", "status": "Status", - "latency": "Latency", - "totalTranslations": "Total Translations", - "successful": "Successful", - "errors": "Errors", - "avgLatency": "Avg Latency", + "latency": "تاخیر", + "totalTranslations": "کل تراجم", + "successful": "کامیاب", + "errors": "خرابیاں", + "avgLatency": "اوسط تاخیر", "millisecondsShort": "{value}ms", "notAvailableSymbol": "—", - "liveAutoRefreshing": "Live — Auto-refreshing", - "paused": "Paused", - "eventsAppearHint": "Translation events appear here as requests flow through OmniRoute. Use any of these methods to generate events:", + "liveAutoRefreshing": "لائیو — خودکار طور پر تازہ ہو رہا ہے", + "paused": "موقوف", + "eventsAppearHint": "جب درخواستیں OmniRoute سے گزرتی ہیں تو ترجمے کے واقعات یہاں ظاہر ہوتے ہیں۔ واقعات پیدا کرنے کے لیے ان میں سے کوئی بھی طریقہ استعمال کریں:", "chatTesterTab": "Chat Tester", "testBenchTab": "Test Bench", - "externalApiCalls": "External API calls", - "ideCliIntegrations": "IDE/CLI integrations", - "inMemoryNote": "Note: Events are stored in-memory and reset when the server restarts.", + "externalApiCalls": "بیرونی API کالز", + "ideCliIntegrations": "IDE/CLI انضمامات", + "inMemoryNote": "نوٹ: واقعات اِن میموری محفوظ ہوتے ہیں اور سرور دوبارہ شروع ہونے پر ری سیٹ ہو جاتے ہیں۔", "ok": "OK", "errorShort": "ERR", - "formatConverter": "Format Converter", - "formatConverterDescription": "Paste or type a JSON request body. The translator will auto-detect the source format and convert it to the target format. Use this to debug how OmniRoute translates requests between formats (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", + "formatConverter": "فارمیٹ کنورٹر", + "formatConverterDescription": "JSON درخواست باڈی پیسٹ یا ٹائپ کریں۔ مترجم خودکار طور پر ماخذ فارمیٹ کا پتہ لگائے گا اور اسے ہدف فارمیٹ میں تبدیل کرے گا۔ یہ جانچنے کے لیے اسے استعمال کریں کہ OmniRoute درخواستوں کو فارمیٹس کے درمیان کیسے تبدیل کرتا ہے (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)۔", "translationPathHubSpoke": "{source} → OpenAI (انٹرمیڈیٹ) → {target}", "translationPathDirect": "{source} → {target} (براہ راست مترجم)", "translationPathPassthrough": "ایک ہی شکل — ترجمہ کی ضرورت نہیں۔", "openaiIntermediatePanel": "اوپن اے آئی انٹرمیڈیٹ", "autoFeaturesTitle": "OmniRoute خود بخود کیا کرتا ہے۔", "autoFeaturesCount": "8 خصوصیات", - "featureReasoningCache": "Reasoning Cache", + "featureReasoningCache": "ریزننگ کیش", "featureReasoningCacheDesc": "سوچنے کے موڈ ماڈلز (DeepSeek V4, Kimi K2, Qwen) کے لیے کیش شدہ استدلال_مواد کو دوبارہ انجیکٹ کرتا ہے جب کلائنٹ اسے گفتگو کی سرگزشت سے خارج کر دیتے ہیں۔", "featureSchemaCoercion": "سکیما جبر", "featureSchemaCoercionDesc": "ٹوٹے ہوئے ٹول اسکیموں کو ٹھیک کرتا ہے: اضافی پراپرٹیز غائب کرتا ہے، لمبی تفصیل کو صاف کرتا ہے، نیسٹڈ اشیاء کو معمول بناتا ہے۔", @@ -9012,79 +9019,79 @@ "featureDirectPathsDesc": "کچھ فارمیٹ جوڑے (کلاڈ → جیمنی) میں براہ راست مترجم ہوتے ہیں جو OpenAI مرکز کو نظرانداز کرتے ہوئے زیادہ درست پیداوار پیدا کرتے ہیں۔", "featureImageMapping": "امیج سائز میپنگ", "featureImageMappingDesc": "API فارمیٹس کے درمیان امیج ڈائمینشن کنونشنز کا ترجمہ کرتا ہے (جیسے OpenAI ڈیٹیل لیولز → Gemini dimensions)۔", - "input": "Input", - "output": "Output", + "input": "ان پٹ", + "output": "آؤٹ پٹ", "auto": "Auto", - "swapFormats": "Swap formats", - "translateAction": "Translate", - "clear": "Clear", - "inputPlaceholder": "Paste a request body here or select a template below...", - "exampleTemplates": "Example Templates", - "exampleTemplatesHint": "— Click to load", - "templateLoadHint": "Template loads the request in {format} format. Change Source Format to load in a different format.", - "compatibilityTester": "Compatibility Tester", - "compatibilityReport": "Compatibility Report", - "testBenchDescription": "Run predefined scenarios (Simple Chat, Tool Calling, etc.) to verify translation and provider compatibility. Select a source format and target provider, then run all tests to see a compatibility percentage. Use this to find which features work across providers.", - "targetProvider": "Target Provider", - "runAllTests": "Run All Tests", - "runTest": "Run Test", - "reRun": "Re-run", - "running": "Running...", - "passed": "passed", - "failed": "failed", - "passedIconLabel": "✅ Passed", - "chunks": "chunks", - "scenarioSimpleChat": "Simple Chat", - "scenarioToolCalling": "Tool Calling", - "scenarioMultiTurn": "Multi-turn", + "swapFormats": "فارمیٹس تبدیل کریں", + "translateAction": "ترجمہ کریں", + "clear": "صاف کریں", + "inputPlaceholder": "یہاں درخواست باڈی پیسٹ کریں یا ذیل میں کوئی ٹیمپلیٹ منتخب کریں...", + "exampleTemplates": "مثالی ٹیمپلیٹس", + "exampleTemplatesHint": "— لوڈ کرنے کے لیے کلک کریں", + "templateLoadHint": "ٹیمپلیٹ درخواست کو {format} فارمیٹ میں لوڈ کرتا ہے۔ کسی مختلف فارمیٹ میں لوڈ کرنے کے لیے ماخذ فارمیٹ تبدیل کریں۔", + "compatibilityTester": "مطابقت جانچنے والا", + "compatibilityReport": "مطابقت کی رپورٹ", + "testBenchDescription": "ترجمے اور فراہم کنندہ کی مطابقت کی تصدیق کے لیے پہلے سے طے شدہ منظرنامے (سادہ چیٹ، ٹول کالنگ وغیرہ) چلائیں۔ ماخذ فارمیٹ اور ہدف فراہم کنندہ منتخب کریں، پھر مطابقت کا فیصد دیکھنے کے لیے تمام ٹیسٹ چلائیں۔ اس سے معلوم کریں کہ کون سی خصوصیات مختلف فراہم کنندگان کے ساتھ کام کرتی ہیں۔", + "targetProvider": "ہدف فراہم کنندہ", + "runAllTests": "تمام ٹیسٹ چلائیں", + "runTest": "ٹیسٹ چلائیں", + "reRun": "دوبارہ چلائیں", + "running": "چل رہا ہے...", + "passed": "کامیاب", + "failed": "ناکام", + "passedIconLabel": "✅ کامیاب", + "chunks": "حصے", + "scenarioSimpleChat": "سادہ چیٹ", + "scenarioToolCalling": "ٹول کالنگ", + "scenarioMultiTurn": "کثیر مرحلہ", "scenarioThinking": "Thinking", - "scenarioSystemPrompt": "System Prompt", - "scenarioStreaming": "Streaming", + "scenarioSystemPrompt": "سسٹم پرامپٹ", + "scenarioStreaming": "اسٹریمنگ", "templateNames": { - "simple-chat": "Simple Chat", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "سادہ چیٹ", + "tool-calling": "ٹول کالنگ", + "multi-turn": "کثیر مرحلہ", "thinking": "Thinking", - "system-prompt": "System Prompt", - "streaming": "Streaming", + "system-prompt": "سسٹم پرامپٹ", + "streaming": "اسٹریمنگ", "vision": "وژن", "schema-coercion": "سکیما جبر" }, "templateDescriptions": { - "simple-chat": "Basic text message", - "tool-calling": "Function/tool invocation", - "multi-turn": "Conversation with history", - "thinking": "Extended thinking / reasoning", - "system-prompt": "Complex system instructions", - "streaming": "SSE streaming request", + "simple-chat": "بنیادی متنی پیغام", + "tool-calling": "فنکشن/ٹول کا استعمال", + "multi-turn": "سابقہ گفتگو کے ساتھ بات چیت", + "thinking": "تفصیلی سوچ بچار / استدلال", + "system-prompt": "پیچیدہ سسٹم ہدایات", + "streaming": "SSE اسٹریمنگ درخواست", "vision": "امیج ان پٹ کے ساتھ ملٹی موڈل درخواست", "schema-coercion": "سٹرکچرڈ آؤٹ پٹ / JSON اسکیما انفورسمنٹ" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful assistant.", - "userGreeting": "Hello! How are you today?" + "system": "آپ ایک مددگار معاون ہیں۔", + "userGreeting": "ہیلو! آج آپ کیسے ہیں؟" }, "toolCalling": { - "userWeather": "What's the weather in São Paulo?", - "toolDescription": "Get current weather for a location", - "cityNameDescription": "City name" + "userWeather": "São Paulo میں موسم کیسا ہے؟", + "toolDescription": "کسی مقام کا موجودہ موسم معلوم کریں", + "cityNameDescription": "شہر کا نام" }, "multiTurn": { - "system": "You are a coding assistant.", - "userInitial": "Write a function to sort an array in Python.", - "assistantExample": "Here's a simple sort function: ```python\ndef sort_array(arr): return sorted(arr)\n```", - "userFollowUp": "Now make it sort in descending order." + "system": "آپ ایک کوڈنگ معاون ہیں۔", + "userInitial": "Python میں ایک array کو ترتیب دینے کے لیے function لکھیں۔", + "assistantExample": "یہ ایک سادہ sort function ہے: ```python\ndef sort_array(arr): return sorted(arr)\n```", + "userFollowUp": "اب اسے نزولی ترتیب میں sort کریں۔" }, "thinking": { - "question": "What is the sum of the first 100 prime numbers?" + "question": "پہلے 100 مفرد اعداد کا مجموعہ کیا ہے؟" }, "systemPrompt": { - "systemInstruction": "You are a senior software engineer specializing in distributed systems. Answer questions concisely using industry best practices. Always provide code examples when relevant. Format your responses using markdown.", - "question": "How do I implement a circuit breaker pattern?" + "systemInstruction": "آپ تقسیم شدہ نظاموں میں مہارت رکھنے والے ایک سینئر سافٹ ویئر انجینئر ہیں۔ سوالات کے جواب صنعتی بہترین طریقوں کے مطابق مختصر انداز میں دیں۔ متعلقہ صورت میں ہمیشہ کوڈ کی مثالیں فراہم کریں۔ اپنے جوابات کو markdown کے ذریعے فارمیٹ کریں۔", + "question": "میں سرکٹ بریکر پیٹرن کیسے نافذ کروں؟" }, "streaming": { - "prompt": "Tell me a short story about a robot learning to paint." + "prompt": "مجھے پینٹنگ سیکھنے والے ایک روبوٹ کے بارے میں مختصر کہانی سنائیں۔" }, "vision": { "system": "آپ ایک اسسٹنٹ ہیں جو تصویروں کو درست طریقے سے بیان کرتا ہے۔", @@ -9097,12 +9104,12 @@ "cityDescription": "استفسار کرنے کے لیے شہر، جیسے 'ٹوکیو' یا 'نیو یارک'۔" } }, - "openaiCompatibleLabel": "OpenAI Compatible", - "anthropicCompatibleLabel": "Anthropic Compatible", - "noTemplateForFormat": "No template for this format", - "translationFailed": "Translation failed: {error}", - "pipelineDebugger": "Pipeline Debugger", - "translationPipeline": "Translation Pipeline", + "openaiCompatibleLabel": "OpenAI سے ہم آہنگ", + "anthropicCompatibleLabel": "Anthropic سے ہم آہنگ", + "noTemplateForFormat": "اس فارمیٹ کے لیے کوئی ٹیمپلیٹ نہیں ہے", + "translationFailed": "ترجمہ ناکام ہوگیا: {error}", + "pipelineDebugger": "پائپ لائن ڈیبگر", + "translationPipeline": "ترجمہ پائپ لائن", "loading": "لوڈ ہو رہا ہے…", "compressionOriginal": "اصل", "compressionCompressed": "کمپریس شدہ", @@ -9111,44 +9118,44 @@ "pipelineStepsAria": "پائپ لائن کے مراحل", "copyIntermediateJson": "درمیانی JSON کاپی کریں", "copyOutputJson": "آؤٹ پٹ JSON کاپی کریں", - "pipelineVisualization": "Pipeline visualization", - "pipelineVisualizationHint": "Send a message to see how your request flows through detection → translation → provider call.", - "chatTesterDescription": "Send messages as a specific client format and inspect each step of the translation pipeline.", - "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response", - "clickStepToInspect": "Click any step to inspect the data at that stage.", - "clientFormat": "Client Format", - "provider": "Provider", - "modelPlaceholder": "Select or type a model name...", - "sendMessageToSeePipeline": "Send a message to see the translation pipeline", - "chatMessageHintPrefix": "Your message will be formatted as a", - "chatMessageHintSuffix": "request, translated through the pipeline, and sent to the selected provider.", - "youWithFormat": "You ({format})", - "assistant": "Assistant", - "typeMessage": "Type a message...", - "send": "Send", - "clientRequest": "Client Request", - "clientRequestDescription": "The request body as your client would send it", - "formatDetected": "Format Detected", - "formatDetectedDescription": "OmniRoute auto-detects the API format from the request structure", - "openaiIntermediate": "OpenAI Intermediate", - "openaiIntermediateDescription": "All formats are first normalized to OpenAI format (the universal bridge)", - "providerFormat": "Provider Format", - "providerFormatDescription": "OpenAI format is translated to the provider's native format", - "providerResponse": "Provider Response", - "providerResponseRawDescription": "The raw response from the provider API", - "providerResponseSseDescription": "The raw SSE stream from the provider API", - "unexpectedError": "An unexpected error occurred", - "error": "Error", - "errorMessage": "Error: {message}", - "requestFailed": "Request failed", - "noTextExtracted": "(No text extracted)", + "pipelineVisualization": "پائپ لائن کی بصری نمائندگی", + "pipelineVisualizationHint": "یہ دیکھنے کے لیے پیغام بھیجیں کہ آپ کی درخواست شناخت → ترجمہ → فراہم کنندہ کی کال کے مراحل سے کیسے گزرتی ہے۔", + "chatTesterDescription": "کسی مخصوص کلائنٹ فارمیٹ میں پیغامات بھیجیں اور ترجمہ پائپ لائن کے ہر مرحلے کا معائنہ کریں۔", + "chatTesterFlow": "کلائنٹ کی درخواست → فارمیٹ کی شناخت → OpenAI انٹرمیڈیٹ → فراہم کنندہ کا فارمیٹ → جواب", + "clickStepToInspect": "اس مرحلے کے ڈیٹا کا معائنہ کرنے کے لیے کسی بھی مرحلے پر کلک کریں۔", + "clientFormat": "کلائنٹ فارمیٹ", + "provider": "فراہم کنندہ", + "modelPlaceholder": "ماڈل کا نام منتخب کریں یا ٹائپ کریں...", + "sendMessageToSeePipeline": "ترجمہ پائپ لائن دیکھنے کے لیے پیغام بھیجیں", + "chatMessageHintPrefix": "آپ کا پیغام اس طرح فارمیٹ کیا جائے گا:", + "chatMessageHintSuffix": "درخواست، جس کا پائپ لائن کے ذریعے ترجمہ کرکے اسے منتخب فراہم کنندہ کو بھیجا جائے گا۔", + "youWithFormat": "آپ ({format})", + "assistant": "معاون", + "typeMessage": "پیغام ٹائپ کریں...", + "send": "بھیجیں", + "clientRequest": "کلائنٹ کی درخواست", + "clientRequestDescription": "درخواست کا متن، جیسا آپ کا کلائنٹ اسے بھیجے گا", + "formatDetected": "شناخت شدہ فارمیٹ", + "formatDetectedDescription": "OmniRoute درخواست کی ساخت سے API فارمیٹ کی خودکار طور پر شناخت کرتا ہے", + "openaiIntermediate": "OpenAI انٹرمیڈیٹ", + "openaiIntermediateDescription": "تمام فارمیٹس کو پہلے OpenAI فارمیٹ (عالمگیر رابطے) میں معمول پر لایا جاتا ہے", + "providerFormat": "فراہم کنندہ کا فارمیٹ", + "providerFormatDescription": "OpenAI فارمیٹ کا ترجمہ فراہم کنندہ کے مقامی فارمیٹ میں کیا جاتا ہے", + "providerResponse": "فراہم کنندہ کا جواب", + "providerResponseRawDescription": "فراہم کنندہ API کا خام جواب", + "providerResponseSseDescription": "فراہم کنندہ API کی خام SSE اسٹریم", + "unexpectedError": "ایک غیر متوقع خرابی پیش آگئی", + "error": "خرابی", + "errorMessage": "خرابی: {message}", + "requestFailed": "درخواست ناکام ہوگئی", + "noTextExtracted": "(کوئی متن اخذ نہیں کیا گیا)", "liveMonitorMemoryNote": "واقعات میموری میں محفوظ ہوتے ہیں اور دوبارہ شروع ہونے پر کھو جاتے ہیں۔", "liveMonitorMemoryCapNote": "زیادہ سے زیادہ 200 ایونٹس برقرار ہیں۔", "eventSourcesLabel": "واقعہ کے ذرائع:", "eventSourceTranslatorPage": "• مترجم صفحہ (چیٹ ٹیسٹر، ٹیسٹ بینچ)", "eventSourceMainPipeline": "• مین درخواست پائپ لائن (CLI/IDE/API ٹریفک)", - "liveMonitorDescriptionPrefix": "Shows translation events as API calls flow through OmniRoute. Events come from the in-memory buffer (resets on restart). Use", - "liveMonitorDescriptionSuffix": ", or external API calls to generate events.", + "liveMonitorDescriptionPrefix": "OmniRoute سے API کالز کے گزرنے کے دوران ترجمے کے واقعات دکھاتا ہے۔ واقعات اِن میموری بفر سے آتے ہیں (دوبارہ شروع کرنے پر ری سیٹ ہو جاتا ہے)۔ استعمال کریں", + "liveMonitorDescriptionSuffix": "، یا واقعات تخلیق کرنے کے لیے بیرونی API کالز استعمال کریں۔", "streamTransformer": "سٹریم ٹرانسفارمر", "modeDescriptionStreamTransformer": "رسپانس ٹرانسفارمر کے ذریعے چیٹ کی تکمیل SSE اسٹریمز کو چلائیں۔", "streamTransformerTitle": "جوابات سٹریم ٹرانسفارمر", @@ -9181,7 +9188,7 @@ "conceptHeadline": "آپ کی ایپ ایک API کی \"زبان\" بولتی ہے۔ مترجم اسے دوسرے فراہم کنندہ کو استعمال کرنے کے لیے تبدیل کرتا ہے۔", "conceptDiagramAppLabel": "آپ کی ایپ", "conceptDiagramSourceLabel": "ماخذ فارمیٹ", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (مرکز)", "conceptDiagramTargetLabel": "ہدف فراہم کنندہ", "conceptDiagramExampleApp": "مثلاً Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9219,7 +9226,7 @@ "advancedRawJsonSubtitle": "ایک JSON درخواست پیسٹ کریں؛ فارمیٹ کا خود بخود پتہ چل جاتا ہے۔", "advancedPipelineTitle": "OpenAI درمیانی پائپ لائن", "advancedPipelineSubtitle": "ترجمے کے ہر مرحلے کا بصری جائزہ لیں (hub-and-spoke)۔", - "advancedStreamTransformTitle": "Stream Transformer (Chat → Responses SSE)", + "advancedStreamTransformTitle": "اسٹریم ٹرانسفارمر (چیٹ → Responses SSE)", "advancedStreamTransformSubtitle": "Chat Completions SSE کو Responses API میں تبدیل کرتا ہے۔", "advancedTestBenchTitle": "ٹیسٹ بینچ (8 منظرنامے)", "advancedTestBenchSubtitle": "تمام منظرناموں کو چلاتا ہے اور پاس/فیل + مطابقت کا % رپورٹ کرتا ہے۔", @@ -9259,7 +9266,7 @@ "streamTransformFailed": "اسٹریم کو تبدیل کرنے میں ناکامی" }, "usage": { - "title": "Usage", + "title": "استعمال", "grokExtraUsageCredits": "اضافی استعمال کے کریڈٹس", "grokAutoTopUp": "خودکار ٹاپ اپ", "grokAutoTopUpUnavailable": "دستیاب نہیں", @@ -9277,66 +9284,66 @@ "kiloPassRemaining": "باقی", "kiloPassRenews": "{count} دنوں میں تجدید ہوگی", "kiloPassUsageLabel": "اس مہینے کا استعمال", - "kimiExtraUsageCredits": "Extra Usage Credits", - "kimiExtraUsage": "Extra Usage", - "kimiExtraUsageEnabled": "Enabled", - "kimiExtraUsageDisabled": "Disabled", - "kimiExtraUsageFrozen": "Frozen", - "kimiExtraUsageUnavailable": "Unavailable", - "kimiMonthlyUsed": "Used this month", - "kimiMonthlyLimit": "Monthly limit", - "kimiMonthlyLimitUnlimited": "Unlimited", - "kimiAdditionalCredits": "Additional Credits", - "loggerTab": "Logger", + "kimiExtraUsageCredits": "اضافی استعمال کے کریڈٹس", + "kimiExtraUsage": "اضافی استعمال", + "kimiExtraUsageEnabled": "فعال", + "kimiExtraUsageDisabled": "غیر فعال", + "kimiExtraUsageFrozen": "منجمد", + "kimiExtraUsageUnavailable": "دستیاب نہیں", + "kimiMonthlyUsed": "اس ماہ استعمال شدہ", + "kimiMonthlyLimit": "ماہانہ حد", + "kimiMonthlyLimitUnlimited": "لامحدود", + "kimiAdditionalCredits": "اضافی کریڈٹس", + "loggerTab": "لاگر", "proxyTab": "Proxy", - "budgetManagement": "Budget Management", - "budgetSaved": "Budget limits saved", - "budgetSaveFailed": "Failed to save budget", - "loadingBudgetData": "Loading budget data...", - "noApiKeysTitle": "No API Keys", - "noApiKeysDescription": "Add API keys first to set up budget limits.", - "apiKey": "API Key", - "todaysSpend": "Today's Spend", - "thisMonth": "This Month", - "setLimits": "Set Limits", - "dailyLimitUsd": "Daily Limit (USD)", - "monthlyLimitUsd": "Monthly Limit (USD)", - "warningThresholdPercent": "Warning Threshold (%)", - "dailyLimitPlaceholder": "e.g. 5.00", - "monthlyLimitPlaceholder": "e.g. 50.00", + "budgetManagement": "بجٹ کا انتظام", + "budgetSaved": "بجٹ کی حدود محفوظ کر دی گئیں", + "budgetSaveFailed": "بجٹ محفوظ کرنے میں ناکامی", + "loadingBudgetData": "بجٹ کا ڈیٹا لوڈ ہو رہا ہے...", + "noApiKeysTitle": "کوئی API کلید نہیں", + "noApiKeysDescription": "بجٹ کی حدود مقرر کرنے کے لیے پہلے API کلیدیں شامل کریں۔", + "apiKey": "API کلید", + "todaysSpend": "آج کے اخراجات", + "thisMonth": "اس ماہ", + "setLimits": "حدود مقرر کریں", + "dailyLimitUsd": "یومیہ حد (USD)", + "monthlyLimitUsd": "ماہانہ حد (USD)", + "warningThresholdPercent": "انتباہی حد (%)", + "dailyLimitPlaceholder": "مثلاً 5.00", + "monthlyLimitPlaceholder": "مثلاً 50.00", "warningThresholdPlaceholder": "80", - "saveLimits": "Save Limits", - "budgetOk": "Budget OK — {remaining} remaining", - "budgetExceeded": "Budget exceeded — requests may be blocked", + "saveLimits": "حدود محفوظ کریں", + "budgetOk": "بجٹ درست ہے — {remaining} باقی", + "budgetExceeded": "بجٹ کی حد سے تجاوز ہو گیا — درخواستیں بلاک ہو سکتی ہیں", "totalRequests": "Total requests", - "noDataYet": "No data yet", - "latency": "Latency", + "noDataYet": "ابھی کوئی ڈیٹا نہیں", + "latency": "تاخیر", "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", - "systemHealth": "System Health", - "entries": "Entries", - "activeCount": "{count} active", - "openCircuitBreakersDetected": "Open circuit breakers detected", - "hitRate": "Hit Rate", - "hitsMisses": "Hits / Misses", - "circuitBreakers": "Circuit Breakers", - "lockedIPs": "Locked IPs", - "lockoutsAutoRefreshHint": "Per-model rate limit locks • Auto-refresh 10s", - "lockedCount": "{count, plural, one {# locked} other {# locked}}", - "timeLeft": "{time} left", - "howItWorks": "How It Works", - "howItWorksSubtitle": "Learn how evaluations validate your LLM responses", - "define": "Define", - "defineStepDescription": "Create test cases with input prompts and expected output criteria using strategies like contains, regex, or exact match.", - "run": "Run", - "runStepDescription": "Execute test cases against your LLM endpoints through OmniRoute. Each case is sent as a real API request.", - "evaluate": "Evaluate", - "evaluateStepDescription": "Responses are compared against expected criteria. See pass/fail for each case with latency metrics and detailed feedback.", + "promptCache": "پرامپٹ کیش", + "systemHealth": "سسٹم کی صحت", + "entries": "اندراجات", + "activeCount": "{count} فعال", + "openCircuitBreakersDetected": "کھلے سرکٹ بریکرز کا پتہ چلا ہے", + "hitRate": "ہِٹ ریٹ", + "hitsMisses": "ہِٹس / مِسز", + "circuitBreakers": "سرکٹ بریکرز", + "lockedIPs": "مقفل IPs", + "lockoutsAutoRefreshHint": "فی ماڈل شرح کی حد کے لاکس • خودکار ریفریش 10s", + "lockedCount": "{count, plural, one {# مقفل} other {# مقفل}}", + "timeLeft": "{time} باقی", + "howItWorks": "یہ کیسے کام کرتا ہے", + "howItWorksSubtitle": "جانیں کہ جائزے آپ کے LLM جوابات کی توثیق کیسے کرتے ہیں", + "define": "تعریف کریں", + "defineStepDescription": "ان پٹ پرامپٹس اور متوقع آؤٹ پٹ کے معیارات کے ساتھ ٹیسٹ کیسز بنائیں، جن میں contains، regex، یا exact match جیسی حکمت عملیاں استعمال ہوں۔", + "run": "چلائیں", + "runStepDescription": "OmniRoute کے ذریعے اپنے LLM اینڈ پوائنٹس پر ٹیسٹ کیسز چلائیں۔ ہر کیس ایک حقیقی API درخواست کے طور پر بھیجا جاتا ہے۔", + "evaluate": "جائزہ لیں", + "evaluateStepDescription": "جوابات کا متوقع معیارات سے موازنہ کیا جاتا ہے۔ ہر کیس کے لیے تاخیر کے میٹرکس اور تفصیلی آراء کے ساتھ کامیابی/ناکامی دیکھیں۔", "evalsStrategyContainsLabel": "شامل ہے", "evalsStrategyExactLabel": "عین مطابقت", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "ریجیکس", "evalsStrategyCustomLabel": "کسٹم لاجک", "evalsStrategyContainsDescription": "چیک کرتا ہے کہ آیا LLM آؤٹ پٹ میں متوقع سب اسٹرنگ شامل ہے۔", "evalsStrategyExactDescription": "چیک کرتا ہے کہ آیا LLM آؤٹ پٹ متوقع قدر سے بالکل مطابقت رکھتا ہے۔", @@ -9347,126 +9354,126 @@ "historyColumnPassRate": "پاس کی شرح", "historyColumnAvgLatencyMs": "اوسط تاخیر", "historyColumnCreatedAt": "تعمیل شدہ", - "evalSuites": "Evaluation Suites", - "evalSuitesHint": "Click a suite to view test cases, then run to evaluate your LLM endpoints", - "evalsLoading": "Loading eval suites...", - "noEvalSuitesFound": "No Eval Suites Found", - "noEvalSuitesDescription": "Eval suites can be defined via the API or in code. They test model outputs against expected results using strategies like contains, regex, exact match, and custom functions.", - "columnCase": "Case", + "evalSuites": "جائزہ سوٹس", + "evalSuitesHint": "ٹیسٹ کیسز دیکھنے کے لیے کسی سوٹ پر کلک کریں، پھر اپنے LLM اینڈ پوائنٹس کا جائزہ لینے کے لیے اسے چلائیں", + "evalsLoading": "جائزہ سوٹس لوڈ ہو رہے ہیں...", + "noEvalSuitesFound": "کوئی جائزہ سوٹ نہیں ملا", + "noEvalSuitesDescription": "جائزہ سوٹس کی تعریف API یا کوڈ میں کی جا سکتی ہے۔ یہ contains، regex، exact match، اور حسب ضرورت فنکشنز جیسی حکمت عملیوں کے ذریعے ماڈل آؤٹ پٹس کو متوقع نتائج کے مقابل جانچتے ہیں۔", + "columnCase": "کیس", "columnStatus": "Status", - "columnLatency": "Latency", - "columnDetails": "Details", + "columnLatency": "تاخیر", + "columnDetails": "تفصیلات", "columnModel": "Model", - "columnStrategy": "Strategy", - "columnExpected": "Expected", - "statsSuites": "Suites", - "statsTestCases": "Test Cases", - "statsModels": "Models", - "statsCoverage": "Coverage", - "statsStrategiesCount": "{count} strategies", - "evaluationStrategies": "Evaluation Strategies", - "modelsUnderTest": "Models Under Test", - "searchSuitesPlaceholder": "Search suites...", + "columnStrategy": "حکمت عملی", + "columnExpected": "متوقع", + "statsSuites": "سوٹس", + "statsTestCases": "ٹیسٹ کیسز", + "statsModels": "ماڈلز", + "statsCoverage": "کوریج", + "statsStrategiesCount": "{count} حکمت عملیاں", + "evaluationStrategies": "جائزے کی حکمت عملیاں", + "modelsUnderTest": "زیرِ آزمائش ماڈلز", + "searchSuitesPlaceholder": "سوٹس تلاش کریں...", "passSuffix": "pass", - "casesCount": "{count, plural, one {# case} other {# cases}}", - "runEval": "Run Eval", + "casesCount": "{count, plural, one {# کیس} other {# کیسز}}", + "runEval": "ایویلیو چلائیں", "runAllSuites": "سب چلائیں۔", "runAllRunning": "سب چل رہا ہے...", "runAllProgress": "چل رہا ہے {current}/{total}: {name}", - "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}", + "runAllFailedSuites": "{count, plural, one {# سوٹ ناکام ہوا} other {# سوٹس ناکام ہوئے}}", "runAllCompleted": "{suites} سویٹس چلائے — {passed} پاس ہو گئے، {failed} ناکام ہو گئے", "runAllCompletedWithFailures": "{completed} سویٹس چلائے؛ {failedSuites} مکمل ہونے میں ناکام", - "runningProgress": "Running {current}/{total}...", - "passRate": "pass rate", - "summaryBreakdown": "{passed} passed · {failed} failed · {total} total", - "passedIconLabel": "✅ Passed", - "failedIconLabel": "❌ Failed", + "runningProgress": "چل رہا ہے {current}/{total}...", + "passRate": "کامیابی کی شرح", + "summaryBreakdown": "{passed} کامیاب · {failed} ناکام · کل {total}", + "passedIconLabel": "✅ کامیاب", + "failedIconLabel": "❌ ناکام", "resultPassed": "پاس کیا۔", "resultFailed": "ناکام", "expandResult": "نتائج کی تفصیلات کو پھیلائیں۔", "collapseResult": "نتائج کی تفصیلات کو سکیڑیں۔", - "detailsContains": "Contains: \"{term}\"", + "detailsContains": "شامل ہے: \"{term}\"", "detailsRegex": "Regex: {pattern}", - "detailsExpected": "Expected: \"{expected}\"", + "detailsExpected": "متوقع: \"{expected}\"", "expectedOutputLabel": "متوقع آؤٹ پٹ", - "noResultsYet": "No results yet", - "testCasesCount": "Test Cases ({count})", - "noTestCasesDefined": "No test cases defined", - "runEvalHint": "Click \"Run Eval\" to execute all cases against your LLM endpoint. Each test sends a real request through OmniRoute.", - "notifyNoTestCases": "No test cases defined for this suite", - "notifyAllCasesPassed": "All {total} cases passed ✅", - "notifySomeCasesFailed": "{passed}/{total} passed, {failed} failed", - "notifyEvalRunFailed": "Eval run failed", - "notifyEvalTitle": "Eval: {name}", - "modelEvals": "Model Evaluations", - "evalsHeroDescription": "Test and validate your LLM endpoints by running predefined evaluation suites. Each suite contains test cases that send real prompts through OmniRoute and compare responses against expected criteria — helping you detect regressions, compare models, and ensure response quality across providers.", - "qualityValidation": "Quality Validation", - "modelComparison": "Model Comparison", - "regressionDetection": "Regression Detection", - "latencyBenchmarks": "Latency Benchmarks", - "modelLockouts": "Model Lockouts", - "noLockouts": "No models currently locked", - "activeSessions": "Active Sessions", - "noSessions": "No active sessions", - "sessionsHint": "Sessions appear as requests flow through the proxy", - "sessionsTrackedHint": "Tracked via request fingerprinting • Auto-refresh 5s", - "session": "Session", - "age": "Age", - "requests": "Requests", - "connection": "Connection", + "noResultsYet": "ابھی کوئی نتائج نہیں", + "testCasesCount": "ٹیسٹ کیسز ({count})", + "noTestCasesDefined": "کوئی ٹیسٹ کیس متعین نہیں", + "runEvalHint": "تمام کیسز کو اپنے LLM اینڈ پوائنٹ پر چلانے کے لیے \"ایویلیو چلائیں\" پر کلک کریں۔ ہر ٹیسٹ OmniRoute کے ذریعے ایک حقیقی درخواست بھیجتا ہے۔", + "notifyNoTestCases": "اس سوٹ کے لیے کوئی ٹیسٹ کیس متعین نہیں", + "notifyAllCasesPassed": "تمام {total} کیسز کامیاب ہوئے ✅", + "notifySomeCasesFailed": "{passed}/{total} کامیاب، {failed} ناکام", + "notifyEvalRunFailed": "ایویلیو چلانے میں ناکامی", + "notifyEvalTitle": "ایویلیو: {name}", + "modelEvals": "ماڈل کی جانچیں", + "evalsHeroDescription": "پہلے سے متعین ایویلیو سوٹس چلا کر اپنے LLM اینڈ پوائنٹس کی جانچ اور توثیق کریں۔ ہر سوٹ میں ایسے ٹیسٹ کیسز شامل ہیں جو OmniRoute کے ذریعے حقیقی پرامپٹس بھیجتے ہیں اور جوابات کا متوقع معیار سے موازنہ کرتے ہیں—اس طرح آپ رجعت کا پتا لگا سکتے ہیں، ماڈلز کا موازنہ کر سکتے ہیں، اور مختلف فراہم کنندگان پر جوابات کے معیار کو یقینی بنا سکتے ہیں۔", + "qualityValidation": "معیار کی توثیق", + "modelComparison": "ماڈلز کا موازنہ", + "regressionDetection": "رجعت کی نشاندہی", + "latencyBenchmarks": "تاخیر کے بینچ مارکس", + "modelLockouts": "ماڈل لاک آؤٹس", + "noLockouts": "فی الحال کوئی ماڈل لاک نہیں", + "activeSessions": "فعال سیشنز", + "noSessions": "کوئی فعال سیشن نہیں", + "sessionsHint": "پراکسی سے درخواستیں گزرنے پر سیشنز ظاہر ہوتے ہیں", + "sessionsTrackedHint": "درخواست کی فنگر پرنٹنگ کے ذریعے ٹریک کیا گیا • ہر 5 سیکنڈ بعد خودکار تازہ کاری", + "session": "سیشن", + "age": "عمر", + "requests": "درخواستیں", + "connection": "کنکشن", "durationMillisecondsShort": "{value}ms", "durationSecondsShort": "{value}s", "durationMinutesShort": "{value}m", "durationHoursShort": "{value}h", "reasonSeparator": "-", "notAvailableSymbol": "-", - "providerLimits": "Provider Limits", - "noProviders": "No Providers Connected", - "connectProvidersForQuota": "Connect to providers with OAuth to track your API quota limits and usage.", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", - "filteredFromCount": "(filtered from {count})", - "autoRefresh": "Auto-refresh", - "refreshAll": "Refresh All", - "loadingQuotas": "Loading...", + "providerLimits": "فراہم کنندگان کی حدود", + "noProviders": "کوئی فراہم کنندہ منسلک نہیں", + "connectProvidersForQuota": "اپنی API کوٹا حدود اور استعمال کو ٹریک کرنے کے لیے OAuth کے ذریعے فراہم کنندگان سے منسلک ہوں۔", + "accountsCount": "{count, plural, one {# اکاؤنٹ} other {# اکاؤنٹس}}", + "filteredFromCount": "({count} میں سے فلٹر شدہ)", + "autoRefresh": "خودکار تازہ کاری", + "refreshAll": "سب کو ریفریش کریں", + "loadingQuotas": "لوڈ ہو رہا ہے...", "showMoreQuotas": "{count} مزید دکھائیں", "showLessQuotas": "کم دکھائیں", "hideQuotaRow": "اس کوٹہ کی قطار کو چھپائیں", "showQuotaRow": "اس کوٹہ کی قطار کو دکھائیں", "hiddenQuotaRowsLabel": "چھپا ہوا:", "quotaVisibilityUpdateFailed": "کوٹہ کی نمائش کو اپ ڈیٹ کرنے میں ناکامی", - "account": "Account", - "modelQuotas": "Model Quotas", - "lastUsed": "Last Refreshed", - "actions": "Actions", - "refreshQuota": "Refresh quota", - "today": "Today", - "tomorrow": "Tomorrow", - "dayTimeFormat": "{day}, {time}", - "inDuration": "in {duration}", + "account": "اکاؤنٹ", + "modelQuotas": "ماڈل کوٹاز", + "lastUsed": "آخری بار ریفریش کیا گیا", + "actions": "اقدامات", + "refreshQuota": "کوٹا ریفریش کریں", + "today": "آج", + "tomorrow": "کل", + "dayTimeFormat": "{day}، {time}", + "inDuration": "{duration} میں", "notApplicable": "N/A", - "rawPlanWithValue": "Raw plan: {plan}", - "noPlanFromProvider": "No plan from provider", + "rawPlanWithValue": "خام پلان: {plan}", + "noPlanFromProvider": "فراہم کنندہ کی جانب سے کوئی پلان نہیں", "tokenExpiresIn": "ٹوکن کی میعاد {time} میں ختم ہو جائے گی", "tokenExpired": "ٹوکن کی میعاد ختم ہو گئی", - "noQuotaData": "No quota data", + "noQuotaData": "کوٹے کا کوئی ڈیٹا نہیں", "cardExpand": "پھیلائیں", "cardCollapse": "سکیڑیں", "moreQuotas": "+{count} مزید", - "ungrouped": "Ungrouped", - "viewFlat": "Flat", - "viewByEnvironment": "By Environment", - "noQuotaDataAvailable": "No quota data available", - "noAccountsForTierFilter": "No accounts found for tier filter", - "tierAll": "All", - "tierEnterprise": "Enterprise", - "tierTeam": "Team", - "tierBusiness": "Business", + "ungrouped": "غیر گروپ شدہ", + "viewFlat": "سادہ فہرست", + "viewByEnvironment": "ماحول کے لحاظ سے", + "noQuotaDataAvailable": "کوٹے کا کوئی ڈیٹا دستیاب نہیں", + "noAccountsForTierFilter": "درجے کے فلٹر کے لیے کوئی اکاؤنٹ نہیں ملا", + "tierAll": "سبھی", + "tierEnterprise": "انٹرپرائز", + "tierTeam": "ٹیم", + "tierBusiness": "بزنس", "tierUltra": "Ultra", "tierPro": "Pro", "tierPlus": "Plus", - "tierFree": "Free", + "tierFree": "مفت", "tierLite": "لائٹ", - "tierUnknown": "Unknown", + "tierUnknown": "نامعلوم", "statTotal": "کل", "statCritical": "سنگین", "statAlert": "انتباہ", @@ -9504,7 +9511,7 @@ "confirmRedeemResetCreditButton": "کریڈٹ ریڈیم کریں", "resetCreditRedeemed": "ری سیٹ ریڈیم کر دیا گیا", "resetCreditRedeemFailed": "ری سیٹ کریڈٹ ریڈیم کرنے میں ناکام", - "suiteBuilderSaveFailed": "Failed to save suite", + "suiteBuilderSaveFailed": "سوئٹ محفوظ کرنے میں ناکامی", "clone": "کلون", "exportSuite": "برآمد کریں۔", "importSuite": "درآمد کریں۔", @@ -9515,103 +9522,103 @@ "suiteImportInvalid": "غلط ایول سویٹ JSON", "suiteBuilderCloneSuffix": "کاپی", "suiteBuilderImportedSuite": "امپورٹڈ سویٹ", - "scorecardTitle": "Scorecard", - "evalApiKey": "API Key", - "scorecardPassRate": "Pass Rate", - "targetTypeModel": "Model", - "actualOutputLabel": "Actual Output", - "evalTargetHint": "Select a model or combo to evaluate.", - "suiteBuilderDeleted": "Suite deleted successfully", - "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.", - "nextResetUtc": "Next reset (UTC)", - "scorecardHint": "Aggregated pass rates across all evaluation suites.", - "suiteLatestRunsHint": "Most recent evaluation runs for this suite.", - "saving": "Saving", - "suiteBuilderCaseModelLabel": "Model (optional)", - "evalControlsTitle": "Evaluation Controls", - "suiteBuilderEditTitle": "Edit Eval Suite", - "suiteBuilderCaseStrategyLabel": "Validation Strategy", - "notifySelectDifferentCompareTarget": "Please select a different target for comparison", - "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.", - "evalCompareHint": "Optionally compare results against a second target.", - "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.", - "historyEmpty": "No evaluation history yet", - "suiteBuilderUpdated": "Suite updated successfully", - "resetInterval": "Reset Interval", - "suiteBuilderCreateTitle": "Create Eval Suite", - "activePeriodSpend": "Active Period Spend", - "evalApiKeyHint": "Select which API key to use for evaluation requests.", - "evalCompareOptional": "Compare (optional)", - "suiteBuilderDeleteFailed": "Failed to delete suite", - "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...", - "scorecardCases": "Cases", - "runCompletedWithScore": "Evaluation completed — {score}% pass rate", - "suiteBuilderCustomBadge": "Custom", - "targetSuiteDefaults": "Suite defaults", - "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.", - "suiteBuilderNameLabel": "Suite Name", - "scorecardSuites": "Suites", - "evalCompareTarget": "Compare Target", - "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini", - "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.", - "recentRunsTitle": "Recent Runs", - "suiteBuilderCaseSystemPromptLabel": "System Prompt", - "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci", + "scorecardTitle": "اسکور کارڈ", + "evalApiKey": "API کلید", + "scorecardPassRate": "کامیابی کی شرح", + "targetTypeModel": "ماڈل", + "actualOutputLabel": "اصل آؤٹ پٹ", + "evalTargetHint": "جانچ کے لیے کوئی ماڈل یا کومبو منتخب کریں۔", + "suiteBuilderDeleted": "سوئٹ کامیابی سے حذف کر دی گئی", + "suiteBuilderCaseCardHint": "ان پٹ پرامپٹ اور متوقع آؤٹ پٹ کے معیارات متعین کریں۔", + "nextResetUtc": "اگلا ری سیٹ (UTC)", + "scorecardHint": "تمام جانچ سوئٹس میں مجموعی کامیابی کی شرحیں۔", + "suiteLatestRunsHint": "اس سوئٹ کے لیے حالیہ ترین جانچ کے رنز۔", + "saving": "محفوظ کیا جا رہا ہے", + "suiteBuilderCaseModelLabel": "ماڈل (اختیاری)", + "evalControlsTitle": "جانچ کے کنٹرولز", + "suiteBuilderEditTitle": "ایول سویٹ میں ترمیم کریں", + "suiteBuilderCaseStrategyLabel": "توثیق کی حکمتِ عملی", + "notifySelectDifferentCompareTarget": "براہِ کرم موازنے کے لیے کوئی مختلف ہدف منتخب کریں", + "recentRunsHint": "حالیہ ترین ایویلیوایشن رنز دکھائے جا رہے ہیں۔ تفصیلی نتائج دیکھنے کے لیے کسی رن پر کلک کریں۔", + "evalCompareHint": "اختیاری طور پر نتائج کا دوسرے ہدف سے موازنہ کریں۔", + "suiteBuilderCaseInvalid": "اس کیس میں توثیقی خامیاں ہیں۔ محفوظ کرنے سے پہلے براہِ کرم انہیں درست کریں۔", + "historyEmpty": "ابھی تک ایویلیوایشن کی کوئی سرگزشت نہیں ہے", + "suiteBuilderUpdated": "سویٹ کامیابی سے اپ ڈیٹ ہو گیا", + "resetInterval": "وقفہ ری سیٹ کریں", + "suiteBuilderCreateTitle": "ایول سویٹ بنائیں", + "activePeriodSpend": "فعال مدت کے اخراجات", + "evalApiKeyHint": "منتخب کریں کہ ایویلیوایشن کی درخواستوں کے لیے کون سی API کلید استعمال کرنی ہے۔", + "evalCompareOptional": "موازنہ کریں (اختیاری)", + "suiteBuilderDeleteFailed": "سویٹ حذف کرنے میں ناکامی ہوئی", + "suiteBuilderCaseSystemPromptPlaceholder": "اختیاری سسٹم ہدایات...", + "scorecardCases": "کیسز", + "runCompletedWithScore": "ایویلیوایشن مکمل ہو گئی — کامیابی کی شرح {score}%", + "suiteBuilderCustomBadge": "حسبِ ضرورت", + "targetSuiteDefaults": "سویٹ کی طے شدہ ترتیبات", + "suiteBuilderDeleteConfirm": "کیا آپ واقعی اس سویٹ کو حذف کرنا چاہتے ہیں؟ اس عمل کو واپس نہیں کیا جا سکتا۔", + "suiteBuilderNameLabel": "سویٹ کا نام", + "scorecardSuites": "سویٹس", + "evalCompareTarget": "موازنے کا ہدف", + "suiteBuilderCaseModelPlaceholder": "مثلاً gpt-4o-mini", + "evalControlsHint": "اپنا ایویلیوایشن ہدف اور API کلید ترتیب دیں، پھر ماڈل کے معیار کی توثیق کے لیے سویٹس چلائیں۔", + "recentRunsTitle": "حالیہ رنز", + "suiteBuilderCaseSystemPromptLabel": "سسٹم پرامپٹ", + "suiteBuilderCaseExpectedPlaceholder": "مثلاً def fibonacci", "suiteBuilderCaseExpectedPlaceholderContains": "جیسے ڈیف فبونیکی", "suiteBuilderCaseExpectedPlaceholderExact": "عین متوقع جواب چسپاں کریں۔", "suiteBuilderCaseExpectedPlaceholderRegex": "جیسے ^\\\\s*\\\\{.*\\\\}\\\\s*$", "suiteBuilderCaseExpectedHintRegex": "سلیشوں کو لپیٹے بغیر جاوا اسکرپٹ کا ریگولر ایکسپریشن استعمال کریں۔", - "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite", - "suiteBuilderAddCase": "Add Case", - "cancel": "Cancel", - "evalTarget": "Target", - "suiteBuilderCaseNameLabel": "Case Name", - "weeklyLimitUsd": "Weekly Limit (USD)", - "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python", - "suiteBuilderNameRequired": "Suite name is required", - "suiteBuilderCaseUserPromptLabel": "User Prompt", - "daily": "Daily", - "resultErrorLabel": "Error", - "suiteBuilderBuiltInBadge": "Built-in", - "suiteBuilderCaseCardTitle": "Test Case", + "suiteBuilderNamePlaceholder": "مثلاً کوڈنگ کوالٹی سویٹ", + "suiteBuilderAddCase": "کیس شامل کریں", + "cancel": "منسوخ کریں", + "evalTarget": "ہدف", + "suiteBuilderCaseNameLabel": "کیس کا نام", + "weeklyLimitUsd": "ہفتہ وار حد (USD)", + "suiteBuilderCaseUserPromptPlaceholder": "مثلاً Python میں fibonacci فنکشن لکھیں", + "suiteBuilderNameRequired": "سویٹ کا نام درکار ہے", + "suiteBuilderCaseUserPromptLabel": "صارف کا پرامپٹ", + "daily": "روزانہ", + "resultErrorLabel": "خرابی", + "suiteBuilderBuiltInBadge": "بلٹ اِن", + "suiteBuilderCaseCardTitle": "ٹیسٹ کیس", "suiteBuilderDuplicateCase": "نقل", - "weeklyLimitPlaceholder": "e.g. 50.00", - "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.", - "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}", - "weekly": "Weekly", - "runEvalRunning": "Running evaluation...", - "delete": "Delete", - "resetTimeUtc": "Reset Time (UTC)", - "evalApiKeyAuto": "Auto (use default)", - "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...", - "targetComparisonTitle": "Target Comparison", - "save": "Save", - "suiteBuilderCreated": "Suite created successfully", - "suiteLatestRuns": "Latest Runs", - "suiteBuilderCaseExpectedLabel": "Expected Value", - "historyLatency": "Latency", - "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python", - "targetTypeCombo": "Combo", - "scorecardPassed": "Passed", - "suiteBuilderCaseTagsLabel": "Tags", - "suiteBuilderNewSuite": "New Suite", - "notifyEvalLoadFailed": "Failed to load evaluation data", - "notConfigured": "Not Configured", - "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test", - "intervalLabel": "Interval", - "suiteBuilderCreateAction": "Create Suite", - "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.", - "suiteBuilderUpdatedAt": "Updated", - "errorBadge": "Error", - "suiteBuilderCasesTitle": "Test Cases", - "edit": "Edit", - "monthly": "Monthly", - "suiteBuilderCasesRequired": "At least one test case is required", - "weeklyLimitSummary": "Weekly budget limit summary", - "suiteBuilderDescriptionLabel": "Description", - "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.", - "compareCompletedWithScore": "Comparison completed — {score}% pass rate", - "staleQuotaTooltip": "Last refresh failed — showing cached data", + "weeklyLimitPlaceholder": "مثلاً 50.00", + "suiteBuilderCaseTagsHint": "ٹیسٹ کیسز کو منظم کرنے کے لیے کوما سے جدا کردہ ٹیگز۔", + "notifyEvalRunFailedWithReason": "جانچ ناکام ہوگئی: {reason}", + "weekly": "ہفتہ وار", + "runEvalRunning": "جانچ جاری ہے...", + "delete": "حذف کریں", + "resetTimeUtc": "ری سیٹ کا وقت (UTC)", + "evalApiKeyAuto": "خودکار (ڈیفالٹ استعمال کریں)", + "suiteBuilderDescriptionPlaceholder": "یہ سوٹ کیا جانچتا ہے، اس کی اختیاری تفصیل...", + "targetComparisonTitle": "ہدف کا موازنہ", + "save": "محفوظ کریں", + "suiteBuilderCreated": "سوٹ کامیابی سے بنا دیا گیا", + "suiteLatestRuns": "تازہ ترین رنز", + "suiteBuilderCaseExpectedLabel": "متوقع قدر", + "historyLatency": "تاخیر", + "suiteBuilderCaseTagsPlaceholder": "مثلاً coding، python", + "targetTypeCombo": "مشترکہ", + "scorecardPassed": "کامیاب", + "suiteBuilderCaseTagsLabel": "ٹیگز", + "suiteBuilderNewSuite": "نیا سوٹ", + "notifyEvalLoadFailed": "جانچ کا ڈیٹا لوڈ نہیں ہو سکا", + "notConfigured": "کنفیگر نہیں کیا گیا", + "suiteBuilderCaseNamePlaceholder": "مثلاً Python fibonacci ٹیسٹ", + "intervalLabel": "وقفہ", + "suiteBuilderCreateAction": "سوٹ بنائیں", + "suiteBuilderCasesHint": "ہر کیس ایک پرامپٹ بھیجتا ہے اور جواب کی توثیق کرتا ہے۔", + "suiteBuilderUpdatedAt": "اپ ڈیٹ شدہ", + "errorBadge": "خرابی", + "suiteBuilderCasesTitle": "ٹیسٹ کیسز", + "edit": "ترمیم کریں", + "monthly": "ماہانہ", + "suiteBuilderCasesRequired": "کم از کم ایک ٹیسٹ کیس درکار ہے", + "weeklyLimitSummary": "ہفتہ وار بجٹ کی حد کا خلاصہ", + "suiteBuilderDescriptionLabel": "تفصیل", + "targetComparisonHint": "اہداف کے درمیان جانچ کے نتائج کا پہلو بہ پہلو موازنہ۔", + "compareCompletedWithScore": "موازنہ مکمل ہوگیا — کامیابی کی شرح {score}%", + "staleQuotaTooltip": "آخری ریفریش ناکام ہوگیا — کیش شدہ ڈیٹا دکھایا جا رہا ہے", "quotaThresholdLabel": "منٹ باقی", "quotaCutoffsColumnHelp": "جب باقی کوٹہ اس فیصد یا اس سے کم ہو جائے تو درخواستیں روک دیں۔", "quotaCutoffsButtonDefault": "طے شدہ", @@ -9704,70 +9711,70 @@ "providerQuotaHomeHint": "منسلک اکاؤنٹس میں لائیو اسٹیٹس" }, "modals": { - "waitingAuth": "Waiting for Authorization", - "verificationUrl": "Verification URL", - "yourCode": "Your Code", - "remoteAccess": "Remote access:", - "connectedSuccess": "Connected Successfully!", - "connectionFailed": "Connection Failed", - "chooseAuthMethod": "Choose your authentication method:", + "waitingAuth": "اجازت کا انتظار ہے", + "verificationUrl": "توثیقی URL", + "yourCode": "آپ کا کوڈ", + "remoteAccess": "ریموٹ رسائی:", + "connectedSuccess": "کامیابی سے منسلک ہو گیا!", + "connectionFailed": "کنکشن ناکام ہو گیا", + "chooseAuthMethod": "اپنا توثیقی طریقہ منتخب کریں:", "awsBuilderId": "AWS Builder ID", "awsIamIdentity": "AWS IAM Identity Center", - "googleAccount": "Google Account", - "githubAccount": "GitHub Account", - "importToken": "Import Token", - "pasteToken": "Paste refresh token from Kiro IDE.", + "googleAccount": "Google اکاؤنٹ", + "githubAccount": "GitHub اکاؤنٹ", + "importToken": "ٹوکن درآمد کریں", + "pasteToken": "Kiro IDE سے ریفریش ٹوکن چسپاں کریں۔", "awsRegion": "AWS Region", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCache": "Reading from AWS SSO cache", - "readingFromCursor": "Reading from Cursor IDE database", - "initializing": "Initializing...", - "pricingConfig": "Pricing Configuration", - "loadingPricing": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "noPricingData": "No pricing data available", - "noModelsFound": "No models found" + "autoDetecting": "ٹوکنز کی خودکار شناخت جاری ہے...", + "readingFromCache": "AWS SSO کیش سے پڑھا جا رہا ہے", + "readingFromCursor": "Cursor IDE ڈیٹابیس سے پڑھا جا رہا ہے", + "initializing": "ابتدائی کارروائی جاری ہے...", + "pricingConfig": "قیمتوں کی ترتیب", + "loadingPricing": "قیمتوں کا ڈیٹا لوڈ ہو رہا ہے...", + "pricingRatesFormat": "قیمتوں کی شرحوں کا فارمیٹ", + "noPricingData": "قیمتوں کا کوئی ڈیٹا دستیاب نہیں", + "noModelsFound": "کوئی ماڈل نہیں ملا" }, "loggers": { - "allProviders": "All Providers", - "allModels": "All Models", - "allAccounts": "All Accounts", - "allApiKeys": "All API Keys", - "allTypes": "All Types", - "allLevels": "All Levels", + "allProviders": "تمام فراہم کنندگان", + "allModels": "تمام ماڈلز", + "allAccounts": "تمام اکاؤنٹس", + "allApiKeys": "تمام API کلیدیں", + "allTypes": "تمام اقسام", + "allLevels": "تمام سطحیں", "modelAZ": "Model A-Z", "modelZA": "Model Z-A", - "loadingLogs": "Loading logs...", - "loadingProxyLogs": "Loading proxy logs...", - "noLogEntries": "No log entries found", - "noPayloadData": "No payload data available for this log entry.", - "proxyEvent": "Proxy Event", + "loadingLogs": "لاگز لوڈ ہو رہے ہیں...", + "loadingProxyLogs": "پراکسی لاگز لوڈ ہو رہے ہیں...", + "noLogEntries": "کوئی لاگ اندراج نہیں ملا", + "noPayloadData": "اس لاگ اندراج کے لیے کوئی پے لوڈ ڈیٹا دستیاب نہیں۔", + "proxyEvent": "پراکسی ایونٹ", "proxy": "Proxy", - "level": "Level", - "directNative": "Direct (native)", - "combo": "Combo", + "level": "سطح", + "directNative": "براہِ راست (مقامی)", + "combo": "مجموعہ", "inputTokens": "I:", "outputTokens": "O:" }, "stats": { - "usageOverview": "Usage Overview", - "outputTokens": "Output Tokens", - "totalCost": "Total Cost", - "usageByModel": "Usage by Model", - "usageByAccount": "Usage by Account", - "failedToLoad": "Failed to load usage statistics.", - "tokenHealth": "Token Health", - "totalOAuth": "Total OAuth", - "healthy": "Healthy", - "warning": "Warning", - "errored": "Errored", - "lastCheck": "Last check", - "noData": "No data", - "share": "Share", - "unableToLoad": "Unable to load system metrics", - "product": "Product", - "resources": "Resources", - "company": "Company", + "usageOverview": "استعمال کا جائزہ", + "outputTokens": "آؤٹ پٹ ٹوکنز", + "totalCost": "کل لاگت", + "usageByModel": "ماڈل کے لحاظ سے استعمال", + "usageByAccount": "اکاؤنٹ کے لحاظ سے استعمال", + "failedToLoad": "استعمال کے اعداد و شمار لوڈ نہیں ہو سکے۔", + "tokenHealth": "ٹوکن کی صحت", + "totalOAuth": "کل OAuth", + "healthy": "صحت مند", + "warning": "انتباہ", + "errored": "خرابی کا شکار", + "lastCheck": "آخری جانچ", + "noData": "کوئی ڈیٹا نہیں", + "share": "شیئر کریں", + "unableToLoad": "سسٹم میٹرکس لوڈ نہیں ہو سکے", + "product": "پروڈکٹ", + "resources": "وسائل", + "company": "کمپنی", "tokenHealthTooltips": { "allHealthy": "تمام ٹوکن صحت مند ہیں", "needsAttention": "کچھ ٹوکنز کو توجہ کی ضرورت ہے", @@ -9812,70 +9819,70 @@ "noAccountUsage": "ابھی تک کوئی اکاؤنٹ مخصوص استعمال ریکارڈ نہیں ہوا۔ یہاں ڈیٹا دیکھنے کے لیے OAuth اکاؤنٹس کا استعمال کرتے ہوئے درخواستیں کریں۔" }, "auth": { - "welcome": "Welcome", - "signIn": "Sign in", - "enterPassword": "Enter your password to continue", - "password": "Password", - "unifiedProxy": "Unified AI API Proxy", - "unifiedAiApiProxy": "Unified AI API Proxy", - "unifiedAiApiProxyDesc": "Route requests to multiple AI providers through a single endpoint. Load balancing, failover, and usage tracking built in.", - "passwordNotEnabled": "Password protection is not enabled", - "loading": "Loading...", - "invalidPassword": "Invalid password", - "errorOccurredRetry": "An error occurred. Please try again.", - "configureInstance": "Let's get your OmniRoute instance configured", - "runOnboardingWizard": "Run the onboarding wizard to set up your password and connect your first AI provider.", - "startOnboarding": "Start Onboarding", - "secureYourInstance": "Secure Your Instance", - "setPasswordDescription": "Set a password to protect your dashboard and secure your API endpoints from unauthorized access.", - "configurePassword": "Configure Password", - "continue": "Continue", - "windowWillClose": "This window will close automatically...", - "closeTabNow": "You can close this tab now.", - "copyUrlManual": "Please copy the URL from the address bar and paste it in the application.", - "accessDeniedDescription": "You don't have permission to access this resource. Check your API key or contact the administrator.", - "goToDashboard": "Go to Dashboard", - "featureMultiProviderTitle": "Multi-Provider", - "featureMultiProviderDesc": "OpenAI, Anthropic, Google, and more", - "featureLoadBalancingTitle": "Load Balancing", - "featureLoadBalancingDesc": "Distribute requests intelligently", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Monitor costs and tokens", - "resetPassword": "Reset Password", - "resetDescription": "Choose a method to recover access to your dashboard", - "stopServer": "Stop the OmniRoute server", - "processing": "Processing...", - "pleaseWait": "Please wait while we complete the authorization.", - "authSuccess": "Authorization Successful!", - "copyUrl": "Copy This URL", - "accessDenied": "Access Denied", - "methodCliTitle": "Method 1: CLI Reset", - "methodCliDescription": "Run the following command on the server where OmniRoute is running:", - "methodCliHint": "This will prompt you to set a new password. The server must be stopped first.", - "methodManualTitle": "Method 2: Manual Reset", - "methodManualDescription": "Delete the password from the database and set a new one on startup:", - "setPasswordInYour": "Set a new password in your", - "fileLabelSuffix": "file:", + "welcome": "خوش آمدید", + "signIn": "سائن اِن کریں", + "enterPassword": "جاری رکھنے کے لیے اپنا پاس ورڈ درج کریں", + "password": "پاس ورڈ", + "unifiedProxy": "متحدہ AI API پراکسی", + "unifiedAiApiProxy": "متحدہ AI API پراکسی", + "unifiedAiApiProxyDesc": "ایک ہی اینڈ پوائنٹ کے ذریعے متعدد AI فراہم کنندگان کو درخواستیں بھیجیں۔ لوڈ بیلنسنگ، فیل اوور، اور استعمال کی ٹریکنگ پہلے سے شامل ہیں۔", + "passwordNotEnabled": "پاس ورڈ کا تحفظ فعال نہیں ہے", + "loading": "لوڈ ہو رہا ہے...", + "invalidPassword": "غلط پاس ورڈ", + "errorOccurredRetry": "ایک خرابی پیش آگئی۔ براہ کرم دوبارہ کوشش کریں۔", + "configureInstance": "آئیے آپ کی OmniRoute انسٹینس کو ترتیب دیں", + "runOnboardingWizard": "اپنا پاس ورڈ سیٹ کرنے اور اپنے پہلے AI فراہم کنندہ کو منسلک کرنے کے لیے آن بورڈنگ وزرڈ چلائیں۔", + "startOnboarding": "آن بورڈنگ شروع کریں", + "secureYourInstance": "اپنی انسٹینس محفوظ بنائیں", + "setPasswordDescription": "اپنے ڈیش بورڈ کی حفاظت اور اپنے API اینڈ پوائنٹس کو غیر مجاز رسائی سے محفوظ رکھنے کے لیے پاس ورڈ سیٹ کریں۔", + "configurePassword": "پاس ورڈ ترتیب دیں", + "continue": "جاری رکھیں", + "windowWillClose": "یہ ونڈو خود بخود بند ہو جائے گی...", + "closeTabNow": "اب آپ یہ ٹیب بند کر سکتے ہیں۔", + "copyUrlManual": "براہ کرم ایڈریس بار سے URL کاپی کر کے ایپلیکیشن میں پیسٹ کریں۔", + "accessDeniedDescription": "آپ کو اس وسیلے تک رسائی کی اجازت نہیں ہے۔ اپنی API key چیک کریں یا منتظم سے رابطہ کریں۔", + "goToDashboard": "ڈیش بورڈ پر جائیں", + "featureMultiProviderTitle": "متعدد فراہم کنندگان", + "featureMultiProviderDesc": "OpenAI، Anthropic، Google، اور مزید", + "featureLoadBalancingTitle": "لوڈ بیلنسنگ", + "featureLoadBalancingDesc": "درخواستوں کو ذہانت سے تقسیم کریں", + "featureUsageTrackingTitle": "استعمال کی ٹریکنگ", + "featureUsageTrackingDesc": "اخراجات اور ٹوکنز کی نگرانی کریں", + "resetPassword": "پاس ورڈ ری سیٹ کریں", + "resetDescription": "اپنے ڈیش بورڈ تک رسائی بحال کرنے کے لیے ایک طریقہ منتخب کریں", + "stopServer": "OmniRoute سرور بند کریں", + "processing": "کارروائی جاری ہے...", + "pleaseWait": "براہِ کرم انتظار کریں، ہم اجازت دینے کا عمل مکمل کر رہے ہیں۔", + "authSuccess": "اجازت کامیاب رہی!", + "copyUrl": "یہ URL کاپی کریں", + "accessDenied": "رسائی مسترد کر دی گئی", + "methodCliTitle": "طریقہ 1: CLI کے ذریعے ری سیٹ", + "methodCliDescription": "اس سرور پر درج ذیل کمانڈ چلائیں جہاں OmniRoute چل رہا ہے:", + "methodCliHint": "یہ آپ سے نیا پاس ورڈ مقرر کرنے کو کہے گا۔ پہلے سرور کو بند کرنا ضروری ہے۔", + "methodManualTitle": "طریقہ 2: دستی ری سیٹ", + "methodManualDescription": "ڈیٹا بیس سے پاس ورڈ حذف کریں اور آغاز پر نیا پاس ورڈ مقرر کریں:", + "setPasswordInYour": "اپنی", + "fileLabelSuffix": "فائل میں نیا پاس ورڈ مقرر کریں:", "newPasswordPlaceholder": "your_new_password", - "deleteSettingsFile": "Delete", - "orRemovePasswordHashField": "or remove the passwordHash field", - "restartServerWithNewPassword": "Restart the server - it will use the new password", - "backToLogin": "Back to Login", - "forgotPassword": "Forgot password?", + "deleteSettingsFile": "حذف کریں", + "orRemovePasswordHashField": "یا passwordHash فیلڈ ہٹا دیں", + "restartServerWithNewPassword": "سرور دوبارہ شروع کریں — یہ نیا پاس ورڈ استعمال کرے گا", + "backToLogin": "لاگ اِن پر واپس جائیں", + "forgotPassword": "پاس ورڈ بھول گئے؟", "continueWithOidc": "OIDC کے ساتھ جاری رکھیں", - "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)", - "Authorization": "Authorization", + "defaultPasswordHint": "ڈیفالٹ پاس ورڈ: CHANGEME (جب تک INITIAL_PASSWORD مقرر نہ کیا گیا ہو)", + "Authorization": "اجازت", "Content-Disposition": "Content-Disposition", - "waitingForAuthorization": "Waiting for authorization...", - "waitingForGoogleAuthorization": "Waiting for Google authorization...", - "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...", - "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...", - "waitingForQoderAuthorization": "Waiting for Qoder authorization...", - "exchangingCodeForTokens": "Exchanging code for tokens...", - "nodeIncompatibleTitle": "Incompatible Node.js Version", - "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.", - "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release", - "nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended.", + "waitingForAuthorization": "اجازت کا انتظار ہے...", + "waitingForGoogleAuthorization": "Google کی اجازت کا انتظار ہے...", + "waitingForOpenAIAuthorization": "OpenAI کی اجازت کا انتظار ہے...", + "waitingForAntigravityAuthorization": "Antigravity کی اجازت کا انتظار ہے...", + "waitingForQoderAuthorization": "Qoder کی اجازت کا انتظار ہے...", + "exchangingCodeForTokens": "کوڈ کو ٹوکنز سے تبدیل کیا جا رہا ہے...", + "nodeIncompatibleTitle": "غیر موافق Node.js ورژن", + "nodeIncompatibleDesc": "آپ Node.js {version} چلا رہے ہیں، جو OmniRoute کی معاونت یافتہ محفوظ رَن ٹائم پالیسی کے دائرے سے باہر ہے۔ پیچ شدہ Node.js 20.x یا 22.x LTS ریلیز استعمال کریں۔", + "nodeIncompatibleFixLabel": "حل: پیچ شدہ Node.js 22 LTS ریلیز انسٹال کریں", + "nodeIncompatibleHint": "OmniRoute کے لیے Node.js 22.22.2+ (22.x LTS) یا 24.0.0+ (24.x LTS) درکار ہے۔ Node 24 LTS تجویز کردہ ہے۔", "resetViaAppDataTitle": "ایپ ڈیٹا کے ذریعے ری سیٹ کریں", "resetViaAppDataDescription": "اپلیکیشن ڈیٹا ڈائریکٹری سے سیٹنگز فائل کو حذف کریں تاکہ آپ کا پاس ورڈ ری سیٹ ہو سکے:", "quitDesktopApp": "OmniRoute ڈیسک ٹاپ ایپ کو مکمل طور پر بند کریں", @@ -9930,72 +9937,72 @@ }, "landing": { "brandName": "OmniRoute", - "navigateHome": "Navigate to home", - "toggleMenu": "Toggle menu", - "featuresLink": "Features", - "docsLink": "Docs", + "navigateHome": "ہوم پر جائیں", + "toggleMenu": "مینو کھولیں یا بند کریں", + "featuresLink": "خصوصیات", + "docsLink": "دستاویزات", "github": "GitHub", - "versionLive": "v1.0 is now live", - "oneEndpoint": "One Endpoint for", - "allProviders": "All AI Providers", - "heroDescription": "AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.", - "getStarted": "Get Started", - "viewOnGithub": "View on GitHub", - "powerfulFeatures": "Powerful Features", - "featuresSubtitle": "Everything you need to manage your AI infrastructure in one place, built for scale.", - "featureUnifiedEndpointTitle": "Unified Endpoint", - "featureUnifiedEndpointDesc": "Access all providers via a single standard API URL.", - "featureEasySetupTitle": "Easy Setup", - "featureEasySetupDesc": "Get up and running in minutes with npx command.", - "featureModelFallbackTitle": "Model Fallback", - "featureModelFallbackDesc": "Automatically switch providers on failure or high latency.", - "featureUsageTrackingTitle": "Usage Tracking", - "featureUsageTrackingDesc": "Detailed analytics and cost monitoring across all models.", - "featureOAuthApiKeysTitle": "OAuth & API Keys", - "featureOAuthApiKeysDesc": "Securely manage credentials in one vault.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncDesc": "Sync your configurations across devices instantly.", - "featureCliSupportTitle": "CLI Support", - "featureCliSupportDesc": "Works with Claude Code, Codex, Cline, Cursor, and more.", - "featureDashboardTitle": "Dashboard", - "featureDashboardDesc": "Visual dashboard for real-time traffic analysis.", - "howItWorks": "How OmniRoute Works", - "howItWorksDescription": "Data flows seamlessly from your application through our intelligent routing layer to the best provider for the job.", - "howItWorksStep1Title": "1. CLI & SDKs", - "howItWorksStep1Description": "Your requests start from your favorite tools or our unified SDK. Just change the base URL.", + "versionLive": "v1.0 اب دستیاب ہے", + "oneEndpoint": "ایک اینڈ پوائنٹ،", + "allProviders": "تمام AI فراہم کنندگان کے لیے", + "heroDescription": "ویب ڈیش بورڈ کے ساتھ AI اینڈ پوائنٹ پراکسی — CLIProxyAPI کا JavaScript پورٹ۔ Claude Code، OpenAI Codex، Cline، RooCode اور دیگر CLI ٹولز کے ساتھ بلارکاوٹ کام کرتا ہے۔", + "getStarted": "شروع کریں", + "viewOnGithub": "GitHub پر دیکھیں", + "powerfulFeatures": "طاقتور خصوصیات", + "featuresSubtitle": "اپنے AI انفراسٹرکچر کو ایک ہی جگہ منظم کرنے کے لیے درکار ہر چیز، بڑے پیمانے پر کام کرنے کے لیے تیار۔", + "featureUnifiedEndpointTitle": "متحدہ اینڈ پوائنٹ", + "featureUnifiedEndpointDesc": "ایک معیاری API URL کے ذریعے تمام فراہم کنندگان تک رسائی حاصل کریں۔", + "featureEasySetupTitle": "آسان سیٹ اپ", + "featureEasySetupDesc": "npx کمانڈ کے ساتھ چند منٹوں میں کام شروع کریں۔", + "featureModelFallbackTitle": "ماڈل فال بیک", + "featureModelFallbackDesc": "ناکامی یا زیادہ تاخیر کی صورت میں خودکار طور پر فراہم کنندہ تبدیل کریں۔", + "featureUsageTrackingTitle": "استعمال کی نگرانی", + "featureUsageTrackingDesc": "تمام ماڈلز کے لیے تفصیلی تجزیات اور لاگت کی نگرانی۔", + "featureOAuthApiKeysTitle": "OAuth اور API کیز", + "featureOAuthApiKeysDesc": "تمام اسناد کو ایک محفوظ والٹ میں منظم کریں۔", + "featureCloudSyncTitle": "کلاؤڈ سنک", + "featureCloudSyncDesc": "اپنی کنفیگریشنز کو تمام ڈیوائسز پر فوری طور پر ہم آہنگ کریں۔", + "featureCliSupportTitle": "CLI سپورٹ", + "featureCliSupportDesc": "Claude Code، Codex، Cline، Cursor اور مزید ٹولز کے ساتھ کام کرتا ہے۔", + "featureDashboardTitle": "ڈیش بورڈ", + "featureDashboardDesc": "ریئل ٹائم ٹریفک کے تجزیے کے لیے بصری ڈیش بورڈ۔", + "howItWorks": "OmniRoute کیسے کام کرتا ہے", + "howItWorksDescription": "ڈیٹا آپ کی ایپلیکیشن سے ہماری ذہین روٹنگ تہہ کے ذریعے بلارکاوٹ بہتا ہوا کام کے لیے موزوں ترین فراہم کنندہ تک پہنچتا ہے۔", + "howItWorksStep1Title": "1. CLI اور SDKs", + "howItWorksStep1Description": "آپ کی درخواستیں آپ کے پسندیدہ ٹولز یا ہماری متحدہ SDK سے شروع ہوتی ہیں۔ بس بنیادی URL تبدیل کریں۔", "howItWorksStep2Title": "2. OmniRoute Hub", - "howItWorksStep2Description": "Our engine analyzes the prompt, checks provider health, and routes for lowest latency or cost.", - "howItWorksStep3Title": "3. AI Providers", - "howItWorksStep3Description": "The request is fulfilled by OpenAI, Anthropic, Gemini, or others instantly.", - "getStartedIn30Seconds": "Get Started in 30 Seconds", - "getStartedDescription": "Install OmniRoute, configure your providers via web dashboard, and start routing AI requests.", - "installOmniRoute": "Install OmniRoute", - "installStepDescription": "Run npx command to start the server instantly", - "openDashboard": "Open Dashboard", - "openDashboardStepDescription": "Configure providers and API keys via web interface", - "routeRequests": "Route Requests", - "routeRequestsStepDescription": "Point your CLI tools to {endpoint}", - "terminal": "terminal", - "copy": "Copy", - "copied": "✓ Copied", - "startingOmniRoute": "Starting OmniRoute...", - "serverRunningOnLabel": "Server running on", - "dashboardLabel": "Dashboard", - "readyToRoute": "Ready to route! ✓", - "configureProvidersNote": "📝 Configure providers in dashboard or use environment variables", - "dataLocation": "Data Location:", + "howItWorksStep2Description": "ہمارا انجن پرامپٹ کا تجزیہ کرتا ہے، فراہم کنندہ کی حالت جانچتا ہے، اور کم ترین تاخیر یا لاگت کے مطابق روٹ کرتا ہے۔", + "howItWorksStep3Title": "3. AI فراہم کنندگان", + "howItWorksStep3Description": "درخواست کو OpenAI، Anthropic، Gemini یا دیگر فراہم کنندگان فوری طور پر مکمل کرتے ہیں۔", + "getStartedIn30Seconds": "30 سیکنڈ میں شروع کریں", + "getStartedDescription": "OmniRoute انسٹال کریں، ویب ڈیش بورڈ کے ذریعے اپنے فراہم کنندگان کنفیگر کریں، اور AI درخواستوں کی روٹنگ شروع کریں۔", + "installOmniRoute": "OmniRoute انسٹال کریں", + "installStepDescription": "سرور فوری طور پر شروع کرنے کے لیے npx کمانڈ چلائیں", + "openDashboard": "ڈیش بورڈ کھولیں", + "openDashboardStepDescription": "ویب انٹرفیس کے ذریعے فراہم کنندگان اور API کیز کنفیگر کریں", + "routeRequests": "درخواستیں روٹ کریں", + "routeRequestsStepDescription": "اپنے CLI ٹولز کو {endpoint} کی جانب بھیجیں", + "terminal": "ٹرمینل", + "copy": "کاپی کریں", + "copied": "✓ کاپی ہو گیا", + "startingOmniRoute": "OmniRoute شروع ہو رہا ہے...", + "serverRunningOnLabel": "سرور اس پتے پر چل رہا ہے", + "dashboardLabel": "ڈیش بورڈ", + "readyToRoute": "روٹنگ کے لیے تیار! ✓", + "configureProvidersNote": "📝 ڈیش بورڈ میں فراہم کنندگان کو ترتیب دیں یا ماحولیاتی متغیرات استعمال کریں", + "dataLocation": "ڈیٹا کا مقام:", "dataLocationMacLinux": "macOS/Linux:", "dataLocationWindows": "Windows:", - "product": "Product", - "dashboardLink": "Dashboard", - "changelog": "Changelog", - "resources": "Resources", - "documentation": "Documentation", + "product": "پروڈکٹ", + "dashboardLink": "ڈیش بورڈ", + "changelog": "تبدیلیوں کی فہرست", + "resources": "وسائل", + "documentation": "دستاویزات", "npm": "NPM", - "legal": "Legal", - "mitLicense": "MIT License", - "footerTagline": "The unified endpoint for AI generation. Connect, route, and manage your AI providers with ease.", - "copyright": "© {year} OmniRoute. All rights reserved.", + "legal": "قانونی", + "mitLicense": "MIT لائسنس", + "footerTagline": "AI جنریشن کے لیے متحدہ اینڈ پوائنٹ۔ اپنے AI فراہم کنندگان کو آسانی سے مربوط، روٹ اور منظم کریں۔", + "copyright": "© {year} OmniRoute۔ جملہ حقوق محفوظ ہیں۔", "flowToolClaudeCode": "Claude Code", "flowToolOpenAICodex": "OpenAI Codex", "flowToolCline": "Cline", @@ -10004,11 +10011,11 @@ "flowProviderAnthropic": "Anthropic", "flowProviderGemini": "Gemini", "flowProviderGithubCopilot": "GitHub Copilot", - "interactiveDiagram": "Interactive diagram visible on desktop", - "ctaTitle": "Ready to Simplify Your AI Infrastructure?", - "ctaDescription": "Join developers who are streamlining their AI integrations with OmniRoute. Open source and free to start.", - "startFree": "Start Free", - "readDocumentation": "Read Documentation", + "interactiveDiagram": "انٹرایکٹو خاکہ ڈیسک ٹاپ پر نظر آتا ہے", + "ctaTitle": "اپنے AI انفراسٹرکچر کو آسان بنانے کے لیے تیار ہیں؟", + "ctaDescription": "ان ڈویلپرز میں شامل ہوں جو OmniRoute کے ذریعے اپنے AI انضمامات کو ہموار بنا رہے ہیں۔ یہ اوپن سورس ہے اور آغاز مفت ہے۔", + "startFree": "مفت شروع کریں", + "readDocumentation": "دستاویزات پڑھیں", "company": "کمپنی", "pricing": "قیمتیں", "apiReference": "API حوالہ", @@ -10023,45 +10030,45 @@ "communityDiscussions": "کمیونٹی مباحثے" }, "docs": { - "title": "Documentation", - "quickStart": "Quick Start", + "title": "دستاویزات", + "quickStart": "فوری آغاز", "deploymentGuides": "تعیناتی کے رہنما", - "features": "Features", - "supportedProviders": "Supported Providers", - "supportedProvidersToc": "Providers", - "commonUseCases": "Common Use Cases", - "clientCompatibility": "Client Compatibility", - "protocolsToc": "Protocols", - "apiReference": "API Reference", - "managementApiReference": "Management API Reference", - "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.", - "method": "Method", - "path": "Path", - "notes": "Notes", - "modelPrefixes": "Model Prefixes", - "prefix": "Prefix", - "troubleshooting": "Troubleshooting", - "supportsChat": "Supports both chat and responses endpoints.", - "oauthAutoRefresh": "OAuth connection with automatic token refresh.", - "fullStreaming": "Full streaming support for all models.", - "docsLabel": "Docs", + "features": "خصوصیات", + "supportedProviders": "معاونت یافتہ فراہم کنندگان", + "supportedProvidersToc": "فراہم کنندگان", + "commonUseCases": "عام استعمال کے طریقے", + "clientCompatibility": "کلائنٹ کی مطابقت", + "protocolsToc": "پروٹوکولز", + "apiReference": "API حوالہ", + "managementApiReference": "مینجمنٹ API حوالہ", + "managementApiDescription": "پراکسی رجسٹری، اسکوپ تفویضات اور پرانی پراکسی کی منتقلی کے لیے خودکار اینڈ پوائنٹس۔", + "method": "طریقہ", + "path": "پاتھ", + "notes": "نوٹس", + "modelPrefixes": "ماڈل کے سابقے", + "prefix": "سابقہ", + "troubleshooting": "مسائل کا حل", + "supportsChat": "چیٹ اور ریسپانسز، دونوں اینڈ پوائنٹس کو سپورٹ کرتا ہے۔", + "oauthAutoRefresh": "خودکار ٹوکن ریفریش کے ساتھ OAuth کنکشن۔", + "fullStreaming": "تمام ماڈلز کے لیے مکمل اسٹریمنگ سپورٹ۔", + "docsLabel": "دستاویزات", "docsHeroDescription": "AI gateway for multi-provider LLMs. One endpoint for OpenAI, Anthropic, Gemini, DeepSeek, GitHub Copilot, Claude Code, Cursor, and 100+ more providers.", - "openDashboard": "Open Dashboard", - "endpointPage": "Endpoint Page", + "openDashboard": "ڈیش بورڈ کھولیں", + "endpointPage": "اینڈ پوائنٹ کا صفحہ", "github": "GitHub", - "reportIssue": "Report Issue", - "onThisPage": "On this page", - "documentationVersion": "Documentation - v{version}", - "quickStartStep1Title": "1. Install and run", - "quickStartStep1Prefix": "Run", - "quickStartStep1Middle": "or clone from GitHub and run", - "quickStartStep2Title": "2. Create API key", - "quickStartStep2Text": "Go to Endpoint -> Registered Keys. Generate one key per environment.", - "quickStartStep3Title": "3. Connect providers", - "quickStartStep3Text": "Add provider accounts via OAuth login, API key, or free-tier auto-connect.", - "quickStartStep4Title": "4. Set client base URL", - "quickStartStep4Prefix": "Point your IDE or API client to", - "quickStartStep4Suffix": "Use provider prefix, for example", + "reportIssue": "مسئلہ رپورٹ کریں", + "onThisPage": "اس صفحے پر", + "documentationVersion": "دستاویزات - v{version}", + "quickStartStep1Title": "1. انسٹال کریں اور چلائیں", + "quickStartStep1Prefix": "چلائیں", + "quickStartStep1Middle": "یا GitHub سے کلون کر کے چلائیں", + "quickStartStep2Title": "2. API کلید بنائیں", + "quickStartStep2Text": "Endpoint -> Registered Keys پر جائیں۔ ہر ماحول کے لیے ایک کلید بنائیں۔", + "quickStartStep3Title": "3. فراہم کنندگان کو منسلک کریں", + "quickStartStep3Text": "OAuth لاگ اِن، API کلید، یا مفت درجے کے خودکار کنکشن کے ذریعے فراہم کنندگان کے اکاؤنٹس شامل کریں۔", + "quickStartStep4Title": "4. کلائنٹ کا بنیادی URL سیٹ کریں", + "quickStartStep4Prefix": "اپنے IDE یا API کلائنٹ کو اس جانب پوائنٹ کریں", + "quickStartStep4Suffix": "فراہم کنندہ کا سابقہ استعمال کریں، مثلاً", "deploySetupTitle": "سیٹ اپ گائیڈ", "deploySetupText": "OmniRoute کے لیے مرحلہ وار تنصیب، ماحول کی ترتیب، اور پہلی بار واک تھرو۔", "deployElectronTitle": "الیکٹران ڈیسک ٹاپ", @@ -10075,165 +10082,165 @@ "deployPwaTitle": "پی ڈبلیو اے", "deployPwaText": "OmniRoute کو Android، iOS اور ڈیسک ٹاپ براؤزرز پر بطور پروگریسو ویب ایپ انسٹال کریں۔", "deployTermuxTitle": "Termux (Android)", - "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.", - "featureRoutingTitle": "Multi-Provider Routing", - "featureRoutingText": "Route requests to 30+ AI providers through a single OpenAI-compatible endpoint. Supports chat, responses, audio, and image APIs.", - "featureCombosTitle": "Combos and Balancing", - "featureCombosText": "Create model combos with fallback chains and balancing strategies: round-robin, priority, random, least-used, and cost-optimized.", - "featureUsageTitle": "Usage and Cost Tracking", - "featureUsageText": "Real-time token counting, cost calculation per provider/model, and detailed usage breakdown by API key and account.", - "featureAnalyticsTitle": "Analytics Dashboard", - "featureAnalyticsText": "Visual analytics with charts for requests, tokens, errors, latency, costs, and model popularity over time.", - "featureHealthTitle": "Health Monitoring", - "featureHealthText": "Live health checks, provider status, circuit breaker states, and automatic rate limit detection with exponential backoff.", - "featureCliTitle": "CLI Tools", - "featureCliText": "Manage IDE configurations, export/import backups, discover codex profiles, and configure settings from the dashboard.", - "featureSecurityTitle": "Security and Policies", - "featureSecurityText": "API key authentication, IP filtering, prompt injection guard, domain policies, session management, and audit logging.", - "featureCloudSyncTitle": "Cloud Sync", - "featureCloudSyncText": "Sync your configuration to Cloudflare Workers for remote access with encrypted credentials and automatic failover.", - "providersAcrossConnectionTypes": "{count} providers across three connection types.", - "manageProviders": "Manage Providers", - "providersCount": "{count} providers", - "providerTypeFree": "Free Tier", + "deployTermuxText": "Termux کے ذریعے Android پر OmniRoute کو ہیڈ لیس موڈ میں چلائیں۔ اپنے موبائل براؤزر سے ڈیش بورڈ تک رسائی حاصل کریں۔", + "featureRoutingTitle": "متعدد فراہم کنندگان کی روٹنگ", + "featureRoutingText": "ایک واحد OpenAI سے ہم آہنگ اینڈ پوائنٹ کے ذریعے 30+ AI فراہم کنندگان کو درخواستیں بھیجیں۔ چیٹ، ریسپانسز، آڈیو اور امیج APIs کو سپورٹ کرتا ہے۔", + "featureCombosTitle": "کمبوز اور توازن کاری", + "featureCombosText": "فال بیک چینز اور توازن کی حکمت عملیوں کے ساتھ ماڈل کمبوز بنائیں: راؤنڈ رابن، ترجیح، بے ترتیب، سب سے کم استعمال شدہ، اور لاگت کے لحاظ سے بہتر۔", + "featureUsageTitle": "استعمال اور لاگت کی ٹریکنگ", + "featureUsageText": "ریئل ٹائم ٹوکن گنتی، ہر فراہم کنندہ/ماڈل کے لیے لاگت کا حساب، اور API کلید و اکاؤنٹ کے لحاظ سے استعمال کی تفصیلی تقسیم۔", + "featureAnalyticsTitle": "تجزیاتی ڈیش بورڈ", + "featureAnalyticsText": "وقت کے ساتھ درخواستوں، ٹوکنز، خرابیوں، تاخیر، لاگتوں، اور ماڈلز کی مقبولیت کے لیے چارٹس پر مبنی بصری تجزیات۔", + "featureHealthTitle": "صحت کی نگرانی", + "featureHealthText": "لائیو صحت کی جانچ، فراہم کنندگان کی حیثیت، سرکٹ بریکر کی حالتیں، اور ایکسپونینشل بیک آف کے ساتھ شرح کی حد کی خودکار شناخت۔", + "featureCliTitle": "CLI ٹولز", + "featureCliText": "IDE کنفیگریشنز کا نظم کریں، بیک اپس ایکسپورٹ/امپورٹ کریں، codex پروفائلز دریافت کریں، اور ڈیش بورڈ سے سیٹنگز کنفیگر کریں۔", + "featureSecurityTitle": "سیکیورٹی اور پالیسیاں", + "featureSecurityText": "API کلید کی توثیق، IP فلٹرنگ، پرامپٹ انجیکشن سے تحفظ، ڈومین پالیسیاں، سیشن مینجمنٹ، اور آڈٹ لاگنگ۔", + "featureCloudSyncTitle": "کلاؤڈ مطابقت پذیری", + "featureCloudSyncText": "انکرپٹ شدہ اسناد اور خودکار فیل اوور کے ساتھ دور سے رسائی کے لیے اپنی کنفیگریشن کو Cloudflare Workers سے مطابقت پذیر کریں۔", + "providersAcrossConnectionTypes": "کنکشن کی تین اقسام میں {count} فراہم کنندگان۔", + "manageProviders": "پرووائیڈرز کا نظم کریں", + "providersCount": "{count} پرووائیڈرز", + "providerTypeFree": "مفت درجہ", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", - "useCaseSingleEndpointTitle": "Single endpoint for many providers", - "useCaseSingleEndpointText": "Point clients to one base URL and route by model prefix (for example: gh/, cc/, kr/, openai/).", - "useCaseFallbackTitle": "Fallback and model switching with combos", - "useCaseFallbackText": "Create combo models in Dashboard and keep client config stable while providers rotate internally.", - "useCaseUsageVisibilityTitle": "Usage, cost and debug visibility", - "useCaseUsageVisibilityText": "Track tokens and cost by provider, account, and API key in Usage and Analytics tabs.", + "providerTypeApiKey": "API کلید", + "useCaseSingleEndpointTitle": "متعدد پرووائیڈرز کے لیے ایک اینڈ پوائنٹ", + "useCaseSingleEndpointText": "کلائنٹس کو ایک بنیادی URL کی طرف متوجہ کریں اور ماڈل کے سابقے کے لحاظ سے روٹ کریں (مثلاً: gh/، cc/، kr/، openai/)۔", + "useCaseFallbackTitle": "کومبوز کے ساتھ فال بیک اور ماڈل کی تبدیلی", + "useCaseFallbackText": "Dashboard میں کومبو ماڈلز بنائیں اور پرووائیڈرز کی اندرونی تبدیلی کے دوران کلائنٹ کنفیگریشن کو مستحکم رکھیں۔", + "useCaseUsageVisibilityTitle": "استعمال، لاگت اور ڈیبگ کی مرئیت", + "useCaseUsageVisibilityText": "Usage اور Analytics ٹیبز میں پرووائیڈر، اکاؤنٹ اور API کلید کے لحاظ سے ٹوکنز اور لاگت ٹریک کریں۔", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", - "chatEndpointLabel": "Chat endpoint", - "modelRecommendationLabel": "Model recommendation: explicit prefix", - "clientCodexTitle": "Codex / GitHub Copilot Models", - "clientCodexBullet1": "Use model IDs with", - "clientCodexBullet2": "Codex-family models auto-route to", - "clientCodexBullet3": "Non-Codex models continue on", + "baseUrlLabel": "بنیادی URL", + "chatEndpointLabel": "چیٹ اینڈ پوائنٹ", + "modelRecommendationLabel": "ماڈل کی تجویز: واضح سابقہ", + "clientCodexTitle": "Codex / GitHub Copilot ماڈلز", + "clientCodexBullet1": "ایسی ماڈل IDs استعمال کریں جن کے ساتھ", + "clientCodexBullet2": "Codex فیملی کے ماڈلز خودکار طور پر اس طرف روٹ ہوتے ہیں", + "clientCodexBullet3": "غیر Codex ماڈلز بدستور اس پر چلتے ہیں", "clientCursorTitle": "Cursor IDE", - "clientCursorBullet1": "Use", - "clientCursorBullet1Suffix": "prefix for Cursor models.", - "clientCursorBullet2": "OAuth connection - login from the Providers page.", + "clientCursorBullet1": "استعمال کریں", + "clientCursorBullet1Suffix": "Cursor ماڈلز کے لیے سابقہ استعمال کریں۔", + "clientCursorBullet2": "OAuth کنکشن — Providers صفحے سے لاگ اِن کریں۔", "clientClaudeTitle": "Claude Code / Antigravity", - "clientClaudeBullet1Prefix": "Use", - "clientClaudeBullet1Middle": "(Claude) or", - "clientClaudeBullet1Suffix": "(Antigravity) prefix.", + "clientClaudeBullet1Prefix": "استعمال کریں", + "clientClaudeBullet1Middle": "(Claude) یا", + "clientClaudeBullet1Suffix": "(Antigravity) سابقہ۔", "clientWindsurfTitle": "Windsurf", - "clientWindsurfBullet1": "Use OmniRoute as an OpenAI-compatible base URL and keep explicit provider prefixes for deterministic routing.", - "clientWindsurfBullet2": "Point models to `/v1/chat/completions` for general traffic and preserve `/v1/responses` for Codex-style flows.", - "clientWindsurfBullet3": "Use Dashboard -> CLI Tools for a ready-made Windsurf configuration guide.", + "clientWindsurfBullet1": "OmniRoute کو OpenAI سے ہم آہنگ بنیادی URL کے طور پر استعمال کریں اور متعین روٹنگ کے لیے واضح پرووائیڈر سابقے برقرار رکھیں۔", + "clientWindsurfBullet2": "عمومی ٹریفک کے لیے ماڈلز کو `/v1/chat/completions` کی طرف متوجہ کریں اور Codex طرز کے فلوز کے لیے `/v1/responses` برقرار رکھیں۔", + "clientWindsurfBullet3": "تیار شدہ Windsurf کنفیگریشن گائیڈ کے لیے Dashboard -> CLI Tools استعمال کریں۔", "clientClineTitle": "Cline", - "clientClineBullet1": "Cline works best with explicit provider/model prefixes so the router never has to guess the backend.", - "clientClineBullet2": "Use `/v1/chat/completions` for general models and reuse the same OmniRoute base URL across different accounts.", - "clientClineBullet3": "Use the Providers dashboard to validate OAuth/API key before debugging Cline runtime issues.", + "clientClineBullet1": "Cline واضح پرووائیڈر/ماڈل سابقوں کے ساتھ بہترین کام کرتا ہے، تاکہ راؤٹر کو کبھی بیک اینڈ کا اندازہ نہ لگانا پڑے۔", + "clientClineBullet2": "عمومی ماڈلز کے لیے `/v1/chat/completions` استعمال کریں اور مختلف اکاؤنٹس میں وہی OmniRoute بنیادی URL دوبارہ استعمال کریں۔", + "clientClineBullet3": "Cline کے رن ٹائم مسائل کو ڈیبگ کرنے سے پہلے OAuth/API کلید کی توثیق کے لیے Providers ڈیش بورڈ استعمال کریں۔", "clientKimiTitle": "Kimi Coding", - "clientKimiBullet1": "Use OmniRoute as a stable base URL while rotating accounts or provider combos underneath.", - "clientKimiBullet2": "Prefer prefixed models in coding flows so fallback and audit trail remain explicit.", - "clientKimiBullet3": "Use `/v1/responses` when you want native Responses-style routing for tool-using clients.", - "protocolsTitle": "Protocols: MCP & A2A", - "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.", + "clientKimiBullet1": "اکاؤنٹس یا پرووائیڈر کومبوز کو پسِ پردہ تبدیل کرتے ہوئے OmniRoute کو ایک مستحکم بنیادی URL کے طور پر استعمال کریں۔", + "clientKimiBullet2": "کوڈنگ فلوز میں سابقے والے ماڈلز کو ترجیح دیں تاکہ فال بیک اور آڈٹ ٹریل واضح رہیں۔", + "clientKimiBullet3": "جب آپ ٹولز استعمال کرنے والے کلائنٹس کے لیے مقامی Responses طرز کی روٹنگ چاہتے ہوں تو `/v1/responses` استعمال کریں۔", + "protocolsTitle": "پروٹوکولز: MCP اور A2A", + "protocolsDescription": "OmniRoute، OpenAI سے ہم آہنگ APIs کے علاوہ دو آپریشنل پروٹوکولز فراہم کرتا ہے: ٹولز چلانے کے لیے MCP اور ایجنٹ سے ایجنٹ ورک فلوز کے لیے A2A۔", "protocolMcpTitle": "MCP (Model Context Protocol)", - "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.", - "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.", - "protocolMcpStep2": "Point your MCP client to stdio transport.", - "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.", + "protocolMcpDesc": "کلائنٹس کو آڈٹ کی مرئیت کے ساتھ OmniRoute ٹولز دریافت اور کال کرنے دینے کے لیے stdio پر MCP استعمال کریں۔", + "protocolMcpStep1": "MCP ٹرانسپورٹ کو `omniroute --mcp` کے ساتھ شروع کریں۔", + "protocolMcpStep2": "اپنے MCP کلائنٹ کو stdio ٹرانسپورٹ کی طرف متوجہ کریں۔", + "protocolMcpStep3": "کنیکٹیویٹی کی توثیق کے لیے `omniroute_get_health` اور `omniroute_list_combos` کو کال کریں۔", "protocolA2aTitle": "A2A (Agent2Agent)", - "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.", - "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.", - "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.", - "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.", - "protocolTroubleshootingTitle": "Protocol Troubleshooting", - "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.", - "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.", - "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.", - "endpointChatNote": "OpenAI-compatible chat endpoint (default).", - "endpointResponsesNote": "Responses API endpoint (Codex, o-series).", - "endpointModelsNote": "Model catalog for all connected providers.", - "endpointAudioNote": "Audio transcription (Deepgram, AssemblyAI).", - "endpointSpeechNote": "Text-to-speech generation (ElevenLabs, OpenAI TTS).", - "endpointEmbeddingsNote": "Text embedding generation (OpenAI, Cohere, Voyage).", - "endpointImagesNote": "Image generation (NanoBanana).", - "endpointRewriteChatNote": "Rewrite helper for clients without /v1.", - "endpointRewriteResponsesNote": "Rewrite helper for Responses without /v1.", - "endpointRewriteModelsNote": "Rewrite helper for model discovery without /v1.", - "mgmtProxiesListNote": "List saved proxy registry items (supports pagination).", - "mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.", - "mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.", - "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.", - "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.", - "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.", - "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.", - "modelPrefixesDescriptionStart": "Use the provider prefix before the model name to route to a specific provider. Example:", - "modelPrefixesDescriptionEnd": "routes to GitHub Copilot.", - "provider": "Provider", - "type": "Type", - "troubleshootingModelRouting": "If the client fails with model routing, use explicit provider/model (for example: gh/gpt-5.1-codex).", - "troubleshootingAmbiguousModels": "If you receive ambiguous model errors, pick a provider prefix instead of a bare model ID.", - "troubleshootingCodexFamily": "For GitHub Codex-family models, keep model as gh/codex-model; router selects /responses automatically.", - "troubleshootingTestConnection": "Use Dashboard > Providers > Test Connection before testing from IDEs or external clients.", - "troubleshootingCircuitBreaker": "If a provider shows circuit breaker open, wait for the cooldown or check Health page for details.", - "troubleshootingOAuth": "For OAuth providers, re-authenticate if tokens expire. Check the provider card status indicator.", - "endpointCompletionsNote": "Legacy completions endpoint for text generation.", - "endpointModerationsNote": "Content moderation and safety classification.", - "endpointRerankNote": "Document reranking for retrieval-augmented generation (Cohere, Jina).", - "endpointSearchNote": "Web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity).", - "endpointSearchAnalyticsNote": "Analytics and metrics for search requests.", - "endpointVideoNote": "Video generation (ComfyUI, SD WebUI workflows).", - "endpointMusicNote": "Music generation via ComfyUI workflows.", - "endpointMessagesNote": "Anthropic-native messages endpoint.", - "endpointCountTokensNote": "Count tokens for a given message payload.", - "endpointFilesNote": "File upload for multimodal inputs.", - "endpointBatchesNote": "Batch processing for bulk API requests.", - "endpointWsNote": "WebSocket endpoint for real-time streaming.", - "mgmtProvidersListNote": "List all registered provider connections.", - "mgmtProvidersCreateNote": "Create a new provider connection.", - "mgmtProvidersUpdateNote": "Update an existing provider connection.", - "mgmtProvidersDeleteNote": "Delete a provider connection.", - "mgmtProvidersTestNote": "Test connectivity and authentication for a provider.", - "mgmtProvidersModelsNote": "List available models for a specific provider.", - "mgmtSettingsGetNote": "Retrieve current application settings.", - "mgmtSettingsUpdateNote": "Update application settings.", - "mgmtPayloadRulesGetNote": "Get payload transformation rules.", - "mgmtPayloadRulesUpdateNote": "Update payload transformation rules.", - "mcpToolsTitle": "MCP Tools", - "mcpToolsDescription": "OmniRoute exposes {count} tools via Model Context Protocol for agent orchestration.", - "mcpToolsCount": "{count} tools", - "mcpToolsToc": "MCP Tools", - "mcpToolsRoutingTitle": "Routing & Discovery", - "mcpToolsRoutingDesc": "Health checks, combo management, quota monitoring, cost reporting, and model catalog access.", - "mcpToolsOperationsTitle": "Operations & Strategy", - "mcpToolsOperationsDesc": "Route simulation, budget guards, strategy switching, resilience profiles, and provider metrics.", - "mcpToolsCacheTitle": "Cache Management", - "mcpToolsCacheDesc": "View cache statistics and flush semantic or signature caches.", + "protocolA2aDesc": "ٹاسکس کو ہم وقت یا SSE اسٹریمنگ کے ذریعے جمع کرانے کے لیے A2A JSON-RPC استعمال کریں۔", + "protocolA2aStep1": "ایجنٹ کی دریافت کے لیے `/.well-known/agent.json` پڑھیں۔", + "protocolA2aStep2": "`POST /a2a` پر `message/send` یا `message/stream` درخواستیں بھیجیں۔", + "protocolA2aStep3": "`tasks/get` اور `tasks/cancel` کے ذریعے ٹاسک کے لائف سائیکل کا نظم کریں۔", + "protocolTroubleshootingTitle": "پروٹوکول کی خرابیوں کا ازالہ", + "protocolTroubleshooting1": "اگر MCP اسٹیٹس آف لائن ہو تو تصدیق کریں کہ stdio پراسیس چل رہا ہے اور heartbeat فائل اپ ڈیٹ ہو رہی ہے۔", + "protocolTroubleshooting2": "اگر A2A ٹاسکس `working` میں رہیں تو `/api/a2a/tasks/:id` اور حتمی حالت کے لیے اسٹریم ایونٹس کا معائنہ کریں۔", + "protocolTroubleshooting3": "آپریشنل کنٹرولز اور آڈٹ کی مرئیت کے لیے `/dashboard/mcp` اور `/dashboard/a2a` استعمال کریں۔", + "endpointChatNote": "OpenAI سے ہم آہنگ چیٹ اینڈ پوائنٹ (ڈیفالٹ)۔", + "endpointResponsesNote": "Responses API اینڈ پوائنٹ (Codex، o-series)۔", + "endpointModelsNote": "تمام منسلک پرووائیڈرز کے لیے ماڈل کیٹلاگ۔", + "endpointAudioNote": "آڈیو ٹرانسکرپشن (Deepgram، AssemblyAI)۔", + "endpointSpeechNote": "متن سے آواز کی تیاری (ElevenLabs، OpenAI TTS)۔", + "endpointEmbeddingsNote": "ٹیکسٹ ایمبیڈنگ کی تیاری (OpenAI، Cohere، Voyage)۔", + "endpointImagesNote": "تصویر کی تیاری (NanoBanana)۔", + "endpointRewriteChatNote": "ان کلائنٹس کے لیے ری رائٹ معاون جن میں /v1 موجود نہیں۔", + "endpointRewriteResponsesNote": "ان Responses کے لیے ری رائٹ معاون جن میں /v1 موجود نہیں۔", + "endpointRewriteModelsNote": "ان ماڈل ڈسکوری درخواستوں کے لیے ری رائٹ معاون جن میں /v1 موجود نہیں۔", + "mgmtProxiesListNote": "محفوظ شدہ پراکسی رجسٹری آئٹمز کی فہرست دکھائیں (صفحہ بندی معاون ہے)۔", + "mgmtProxiesCreateNote": "رجسٹری میں دوبارہ قابلِ استعمال پراکسی آئٹم بنائیں۔", + "mgmtProxiesHealthNote": "پراکسی لاگز سے ہر محفوظ شدہ پراکسی کے لیے 24 گھنٹے/رولنگ ہیلتھ میٹرکس حاصل کریں۔", + "mgmtProxiesBulkAssignNote": "ایک درخواست میں متعدد اسکوپ IDs پر ایک پراکسی تفویض کریں یا ہٹائیں۔", + "mgmtAssignmentsListNote": "scope، scope_id، یا proxy_id کے لحاظ سے پراکسی تفویضات کی فہرست دکھائیں۔", + "mgmtAssignmentsUpdateNote": "global/provider/account/combo اسکوپ کے لیے پراکسی تفویض کریں یا ہٹائیں۔", + "mgmtLegacyMigrationNote": "پرانے proxyConfig میپس کو رجسٹری تفویضات میں درآمد کریں۔", + "modelPrefixesDescriptionStart": "کسی مخصوص پرووائیڈر کو روٹ کرنے کے لیے ماڈل کے نام سے پہلے پرووائیڈر کا سابقہ استعمال کریں۔ مثال:", + "modelPrefixesDescriptionEnd": "GitHub Copilot کو روٹ کرتا ہے۔", + "provider": "پرووائیڈر", + "type": "قسم", + "troubleshootingModelRouting": "اگر کلائنٹ ماڈل روٹنگ میں ناکام ہو تو واضح provider/model استعمال کریں (مثال کے طور پر: gh/gpt-5.1-codex)۔", + "troubleshootingAmbiguousModels": "اگر آپ کو مبہم ماڈل کی خرابیاں موصول ہوں تو صرف ماڈل ID کے بجائے پرووائیڈر کا سابقہ منتخب کریں۔", + "troubleshootingCodexFamily": "GitHub Codex فیملی کے ماڈلز کے لیے ماڈل کو gh/codex-model ہی رکھیں؛ راؤٹر خودکار طور پر /responses منتخب کرتا ہے۔", + "troubleshootingTestConnection": "IDEs یا بیرونی کلائنٹس سے ٹیسٹ کرنے سے پہلے Dashboard > Providers > Test Connection استعمال کریں۔", + "troubleshootingCircuitBreaker": "اگر کسی پرووائیڈر کا سرکٹ بریکر کھلا ہوا دکھائی دے تو کول ڈاؤن کا انتظار کریں یا تفصیلات کے لیے Health صفحہ دیکھیں۔", + "troubleshootingOAuth": "OAuth پرووائیڈرز کے لیے ٹوکنز کی میعاد ختم ہونے پر دوبارہ تصدیق کریں۔ پرووائیڈر کارڈ کا اسٹیٹس انڈیکیٹر چیک کریں۔", + "endpointCompletionsNote": "متن کی تیاری کے لیے پرانا completions اینڈ پوائنٹ۔", + "endpointModerationsNote": "مواد کی ماڈریشن اور حفاظتی درجہ بندی۔", + "endpointRerankNote": "ریٹریول سے بہتر بنائی گئی جنریشن کے لیے دستاویزات کی دوبارہ درجہ بندی (Cohere، Jina)۔", + "endpointSearchNote": "5 پرووائیڈرز کے ساتھ ویب تلاش (Serper، Brave، Exa، Tavily، Perplexity)۔", + "endpointSearchAnalyticsNote": "تلاش کی درخواستوں کے لیے تجزیات اور میٹرکس۔", + "endpointVideoNote": "ویڈیو جنریشن (ComfyUI، SD WebUI ورک فلوز)۔", + "endpointMusicNote": "ComfyUI ورک فلوز کے ذریعے موسیقی کی جنریشن۔", + "endpointMessagesNote": "Anthropic کا مقامی پیغامات اینڈ پوائنٹ۔", + "endpointCountTokensNote": "دیے گئے پیغام کے پے لوڈ کے ٹوکنز شمار کریں۔", + "endpointFilesNote": "ملٹی موڈل اِن پٹس کے لیے فائل اپ لوڈ۔", + "endpointBatchesNote": "بڑی تعداد میں API درخواستوں کے لیے بیچ پروسیسنگ۔", + "endpointWsNote": "ریئل ٹائم اسٹریمنگ کے لیے WebSocket اینڈ پوائنٹ۔", + "mgmtProvidersListNote": "تمام رجسٹرڈ پرووائیڈر کنکشنز کی فہرست دکھائیں۔", + "mgmtProvidersCreateNote": "نیا پرووائیڈر کنکشن بنائیں۔", + "mgmtProvidersUpdateNote": "موجودہ پرووائیڈر کنکشن اپ ڈیٹ کریں۔", + "mgmtProvidersDeleteNote": "پرووائیڈر کنکشن حذف کریں۔", + "mgmtProvidersTestNote": "پرووائیڈر کے لیے کنیکٹیویٹی اور توثیق کی جانچ کریں۔", + "mgmtProvidersModelsNote": "کسی مخصوص پرووائیڈر کے لیے دستیاب ماڈلز کی فہرست دکھائیں۔", + "mgmtSettingsGetNote": "ایپلیکیشن کی موجودہ سیٹنگز حاصل کریں۔", + "mgmtSettingsUpdateNote": "ایپلیکیشن کی سیٹنگز اپ ڈیٹ کریں۔", + "mgmtPayloadRulesGetNote": "پے لوڈ کی تبدیلی کے قواعد حاصل کریں۔", + "mgmtPayloadRulesUpdateNote": "پے لوڈ کی تبدیلی کے قواعد اپ ڈیٹ کریں۔", + "mcpToolsTitle": "MCP ٹولز", + "mcpToolsDescription": "OmniRoute ایجنٹ آرکیسٹریشن کے لیے Model Context Protocol کے ذریعے {count} ٹولز فراہم کرتا ہے۔", + "mcpToolsCount": "{count} ٹولز", + "mcpToolsToc": "MCP ٹولز", + "mcpToolsRoutingTitle": "راؤٹنگ اور دریافت", + "mcpToolsRoutingDesc": "ہیلتھ چیکس، کومبو مینجمنٹ، کوٹا مانیٹرنگ، لاگت کی رپورٹنگ، اور ماڈل کیٹلاگ تک رسائی۔", + "mcpToolsOperationsTitle": "آپریشنز اور حکمتِ عملی", + "mcpToolsOperationsDesc": "روٹ سیمولیشن، بجٹ گارڈز، حکمتِ عملی کی تبدیلی، لچک پذیری پروفائلز، اور پرووائیڈر میٹرکس۔", + "mcpToolsCacheTitle": "کیش مینجمنٹ", + "mcpToolsCacheDesc": "کیش کے اعداد و شمار دیکھیں اور سیمینٹک یا سگنیچر کیشز صاف کریں۔", "mcpToolsCompressionTitle": "کمپریشن انجن", "mcpToolsCompressionDesc": "RTK/Brotli کمپریشن کو ترتیب دیں، انجنوں کو تبدیل کریں، اور کومبو کے ذریعے کمپریشن اینالیٹکس کا معائنہ کریں۔", "mcpToolsOneProxyTitle": "1 پراکسی / سرنگیں۔", "mcpToolsOneProxyDesc": "آؤٹ باؤنڈ پراکسیز کا نظم کریں، رہائشی IPs کو گھمائیں، اور پراکسی ہیلتھ کا معائنہ کریں۔", - "mcpToolsMemoryTitle": "Memory", - "mcpToolsMemoryDesc": "Search, add, and clear persistent conversational memory entries.", - "mcpToolsSkillsTitle": "Skills", - "mcpToolsSkillsDesc": "List, enable, execute, and monitor custom skill executions.", - "featureAutoComboTitle": "Auto-Combo", - "featureAutoComboText": "Automatically create optimized combos based on your connected providers, usage patterns, and model capabilities.", - "featureSearchTitle": "Web Search", - "featureSearchText": "Integrated web search with 5 providers (Serper, Brave, Exa, Tavily, Perplexity) including analytics and cost tracking.", - "featureMemoryTitle": "Memory System", - "featureMemoryText": "Persistent conversational memory with extraction, injection, retrieval, and summarization across sessions.", - "featureSkillsTitle": "Skills Framework", - "featureSkillsText": "Extensible skill system with built-in and custom skills, sandbox execution, request interception, and context injection.", - "featureAcpTitle": "Agent Communication", - "featureAcpText": "Agent Communication Protocol (ACP) registry for managing agent-to-agent workflows and tool orchestration.", - "protocolAcpTitle": "ACP (Agent Communication)", - "protocolAcpDesc": "Register and manage agents via the ACP registry for inter-agent communication and tool sharing.", - "protocolAcpStep1": "Navigate to Dashboard → Agents to view registered ACP agents.", - "protocolAcpStep2": "Register new agents with capabilities and endpoint configuration.", - "protocolAcpStep3": "Use CLI Tools to configure agent communication channels.", + "mcpToolsMemoryTitle": "میموری", + "mcpToolsMemoryDesc": "مستقل مکالماتی میموری کے اندراجات تلاش کریں، شامل کریں، اور صاف کریں۔", + "mcpToolsSkillsTitle": "اسکلز", + "mcpToolsSkillsDesc": "حسبِ ضرورت اسکلز کی کارروائیوں کی فہرست دیکھیں، انہیں فعال کریں، چلائیں، اور مانیٹر کریں۔", + "featureAutoComboTitle": "خودکار کومبو", + "featureAutoComboText": "اپنے منسلک پرووائیڈرز، استعمال کے پیٹرنز، اور ماڈل کی صلاحیتوں کی بنیاد پر خودکار طور پر موزوں کومبوز بنائیں۔", + "featureSearchTitle": "ویب تلاش", + "featureSearchText": "5 پرووائیڈرز (Serper، Brave، Exa، Tavily، Perplexity) کے ساتھ مربوط ویب تلاش، بشمول تجزیات اور لاگت کی ٹریکنگ۔", + "featureMemoryTitle": "میموری سسٹم", + "featureMemoryText": "مختلف سیشنز میں اخذ، شمولیت، بازیافت، اور خلاصہ سازی کے ساتھ مستقل مکالماتی میموری۔", + "featureSkillsTitle": "اسکلز فریم ورک", + "featureSkillsText": "بلٹ اِن اور حسبِ ضرورت اسکلز، سینڈ باکس ایگزیکیوشن، درخواستوں کی انٹرسیپشن، اور سیاق و سباق کی شمولیت کے ساتھ قابلِ توسیع اسکل سسٹم۔", + "featureAcpTitle": "ایجنٹ مواصلات", + "featureAcpText": "ایجنٹ سے ایجنٹ کے ورک فلوز اور ٹول آرکیسٹریشن کے انتظام کے لیے ایجنٹ کمیونیکیشن پروٹوکول (ACP) رجسٹری۔", + "protocolAcpTitle": "ACP (ایجنٹ مواصلات)", + "protocolAcpDesc": "ایجنٹس کے باہمی مواصلات اور ٹولز کے اشتراک کے لیے ACP رجسٹری کے ذریعے ایجنٹس کو رجسٹر اور منظم کریں۔", + "protocolAcpStep1": "رجسٹرڈ ACP ایجنٹس دیکھنے کے لیے ڈیش بورڈ → ایجنٹس پر جائیں۔", + "protocolAcpStep2": "صلاحیتوں اور اینڈ پوائنٹ کنفیگریشن کے ساتھ نئے ایجنٹس رجسٹر کریں۔", + "protocolAcpStep3": "ایجنٹ مواصلاتی چینلز کنفیگر کرنے کے لیے CLI ٹولز استعمال کریں۔", "metadataTitleTemplate": "%s — OmniRoute دستاویزات", "metadataDefaultTitle": "OmniRoute دستاویزات", "metadataDescription": "OmniRoute AI گیٹ وے کے لیے جامع دستاویزات — سیٹ اپ، API، کمپریشن، تعیناتی، اور مزید۔", - "layoutNavTitle": "OmniRoute Docs", + "layoutNavTitle": "OmniRoute دستاویزات", "layoutHomeLink": "دستاویزات کا گھر", "layoutDashboardLink": "← ڈیش بورڈ پر واپس جائیں", "homeTitle": "OmniRoute دستاویزات", @@ -10276,95 +10283,95 @@ } }, "legal": { - "privacyPolicy": "Privacy Policy", - "termsOfService": "Terms of Service", - "providerConfigurations": "Provider configurations", - "apiKeys": "API keys", - "usageLogs": "Usage logs", - "applicationSettings": "Application settings", - "viewExportAnalytics": "View and export usage analytics", - "clearHistory": "Clear usage history at any time", - "configureRetention": "Configure log retention policies", - "backupRestore": "Back up and restore your database", - "privacyMetadataTitle": "Privacy Policy | OmniRoute", - "privacyMetadataDescription": "Privacy policy for the OmniRoute AI API proxy router.", - "termsMetadataTitle": "Terms of Service | OmniRoute", - "termsMetadataDescription": "Terms of service for the OmniRoute AI API proxy router.", - "backToHome": "Back to home", - "lastUpdated": "Last updated: {date}", - "policyLastUpdatedDate": "February 13, 2026", + "privacyPolicy": "رازداری کی پالیسی", + "termsOfService": "سروس کی شرائط", + "providerConfigurations": "فراہم کنندگان کی کنفیگریشنز", + "apiKeys": "API کلیدیں", + "usageLogs": "استعمال کے لاگز", + "applicationSettings": "ایپلیکیشن کی ترتیبات", + "viewExportAnalytics": "استعمال کے تجزیات دیکھیں اور برآمد کریں", + "clearHistory": "استعمال کی سرگزشت کسی بھی وقت صاف کریں", + "configureRetention": "لاگ برقرار رکھنے کی پالیسیاں کنفیگر کریں", + "backupRestore": "اپنے ڈیٹابیس کا بیک اپ لیں اور اسے بحال کریں", + "privacyMetadataTitle": "رازداری کی پالیسی | OmniRoute", + "privacyMetadataDescription": "OmniRoute AI API پراکسی راؤٹر کے لیے رازداری کی پالیسی۔", + "termsMetadataTitle": "سروس کی شرائط | OmniRoute", + "termsMetadataDescription": "OmniRoute AI API پراکسی راؤٹر کے لیے سروس کی شرائط۔", + "backToHome": "ہوم پیج پر واپس جائیں", + "lastUpdated": "آخری بار اپ ڈیٹ کیا گیا: {date}", + "policyLastUpdatedDate": "13 فروری، 2026", "listSeparator": "-", - "questionsVisit": "Questions? Visit our", - "githubRepository": "GitHub repository", - "privacySection1Title": "1. Local-First Architecture", - "privacySection1Text": "OmniRoute is designed as a local-first application. All data processing and storage occurs entirely on your machine. There is no centralized server collecting your information.", - "privacySection2Title": "2. Data We Store", - "privacyDataStoredIn": "The following data is stored locally in", - "privacyDataProviderConfigurationsDesc": "connection URLs, provider types, and priority settings", - "privacyDataApiKeysDesc": "encrypted and stored locally for authenticating with AI providers", - "privacyDataUsageLogsDesc": "request counts, token usage, model names, timestamps, and response times", - "privacyDataApplicationSettingsDesc": "theme preferences, routing strategy, and combo configurations", - "privacySection3Title": "3. No Telemetry", - "privacySection3Text": "OmniRoute does not collect telemetry, analytics, or crash reports. No data is sent to us or any third party. Your usage patterns, API calls, and configurations remain entirely private.", - "privacySection4Title": "4. Third-Party AI Providers", - "privacySection4Text": "When you make API calls through OmniRoute, your requests are forwarded to the AI providers you have configured (for example: OpenAI, Anthropic, Google). These providers have their own privacy policies that govern how they handle your data. Please review:", - "privacyOpenAiPolicy": "OpenAI Privacy Policy", - "privacyAnthropicPolicy": "Anthropic Privacy Policy", - "privacyGooglePolicy": "Google Privacy Policy", - "privacySection5Title": "5. Cloud Sync (Optional)", - "privacySection5Text": "If you enable the optional cloud sync feature, provider configurations and API keys may be transmitted to a configured cloud endpoint. This feature is disabled by default and requires explicit opt-in.", - "privacySection6Title": "6. Logging", - "privacyLoggingIntro": "Request logs can be configured through the dashboard settings. You can:", - "privacySection7Title": "7. Your Rights", - "privacySection7TextStart": "Since all data is stored locally, you have full control. You can delete your data at any time by removing the", - "privacySection7TextEnd": "directory or using the database backup and restore features in the dashboard.", - "termsSection1Title": "1. Overview", - "termsSection1Text": "OmniRoute is a local-first AI API proxy router that operates entirely on your machine. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.", - "termsSection2Title": "2. User Responsibilities", - "termsResponsibilityApiKeys": "You are solely responsible for managing your own API keys and credentials for third-party AI providers (OpenAI, Anthropic, Google, etc.).", - "termsResponsibilityCompliance": "You must comply with the terms of service of each AI provider whose API you access through OmniRoute.", - "termsResponsibilitySecurity": "You are responsible for the security of your local OmniRoute installation, including setting a password and restricting network access.", - "termsSection3Title": "3. How It Works", - "termsSection3Text": "OmniRoute acts as an intermediary proxy. API calls sent to OmniRoute are translated and forwarded to your configured AI providers. OmniRoute does not modify the content of your requests or responses beyond the necessary protocol translation.", - "termsSection4Title": "4. Data Handling", - "termsDataStoredLocally": "All data is stored locally on your machine in a SQLite database.", - "termsNoTransmission": "OmniRoute does not transmit any data to external servers unless you explicitly enable cloud sync features.", - "termsDataLocationText": "Usage logs, API keys, and configuration are stored in", - "termsSection5Title": "5. Disclaimer", - "termsSection5Text": "OmniRoute is provided \"as is\" without warranty of any kind. We are not responsible for any costs incurred through API usage, service disruptions, or data loss. Always maintain backups of your configuration.", - "termsSection6Title": "6. Open Source", - "termsSection6Text": "OmniRoute is open-source software. You are free to inspect, modify, and distribute it under the terms of its license." + "questionsVisit": "سوالات ہیں؟ ہماری ملاحظہ کریں", + "githubRepository": "GitHub ریپوزٹری", + "privacySection1Title": "1. لوکل فرسٹ آرکیٹیکچر", + "privacySection1Text": "OmniRoute کو لوکل فرسٹ ایپلیکیشن کے طور پر ڈیزائن کیا گیا ہے۔ تمام ڈیٹا پراسیسنگ اور اسٹوریج مکمل طور پر آپ کی مشین پر ہوتا ہے۔ آپ کی معلومات جمع کرنے والا کوئی مرکزی سرور موجود نہیں ہے۔", + "privacySection2Title": "2. وہ ڈیٹا جو ہم محفوظ کرتے ہیں", + "privacyDataStoredIn": "درج ذیل ڈیٹا مقامی طور پر اس میں محفوظ کیا جاتا ہے", + "privacyDataProviderConfigurationsDesc": "کنکشن URLs، فراہم کنندگان کی اقسام، اور ترجیحی ترتیبات", + "privacyDataApiKeysDesc": "AI فراہم کنندگان کے ساتھ تصدیق کے لیے مرموز کر کے مقامی طور پر محفوظ کیا جاتا ہے", + "privacyDataUsageLogsDesc": "درخواستوں کی تعداد، ٹوکن کا استعمال، ماڈلز کے نام، ٹائم اسٹیمپس، اور جوابی اوقات", + "privacyDataApplicationSettingsDesc": "تھیم کی ترجیحات، روٹنگ کی حکمت عملی، اور کومبو کنفیگریشنز", + "privacySection3Title": "3. کوئی ٹیلی میٹری نہیں", + "privacySection3Text": "OmniRoute ٹیلی میٹری، تجزیاتی ڈیٹا، یا کریش رپورٹس جمع نہیں کرتا۔ کوئی ڈیٹا ہمیں یا کسی تیسرے فریق کو نہیں بھیجا جاتا۔ آپ کے استعمال کے انداز، API کالز، اور کنفیگریشنز مکمل طور پر نجی رہتے ہیں۔", + "privacySection4Title": "4. فریق ثالث کے AI فراہم کنندگان", + "privacySection4Text": "جب آپ OmniRoute کے ذریعے API کالز کرتے ہیں تو آپ کی درخواستیں آپ کے کنفیگر کردہ AI فراہم کنندگان کو بھیج دی جاتی ہیں (مثلاً: OpenAI، Anthropic، Google)۔ ان فراہم کنندگان کی اپنی رازداری کی پالیسیاں ہیں جو یہ طے کرتی ہیں کہ وہ آپ کے ڈیٹا کو کس طرح سنبھالتے ہیں۔ براہ کرم ان کا جائزہ لیں:", + "privacyOpenAiPolicy": "OpenAI کی رازداری کی پالیسی", + "privacyAnthropicPolicy": "Anthropic کی رازداری کی پالیسی", + "privacyGooglePolicy": "Google کی رازداری کی پالیسی", + "privacySection5Title": "5. کلاؤڈ سنک (اختیاری)", + "privacySection5Text": "اگر آپ اختیاری کلاؤڈ سنک فیچر فعال کرتے ہیں، تو فراہم کنندہ کی کنفیگریشنز اور API کلیدیں ایک کنفیگر کردہ کلاؤڈ اینڈ پوائنٹ پر منتقل کی جا سکتی ہیں۔ یہ فیچر بطورِ ڈیفالٹ غیر فعال ہے اور اسے فعال کرنے کے لیے واضح رضامندی درکار ہے۔", + "privacySection6Title": "6. لاگنگ", + "privacyLoggingIntro": "درخواستوں کے لاگز کو ڈیش بورڈ کی ترتیبات کے ذریعے کنفیگر کیا جا سکتا ہے۔ آپ یہ کر سکتے ہیں:", + "privacySection7Title": "7. آپ کے حقوق", + "privacySection7TextStart": "چونکہ تمام ڈیٹا مقامی طور پر محفوظ ہوتا ہے، اس لیے آپ کو مکمل اختیار حاصل ہے۔ آپ کسی بھی وقت درج ذیل کو حذف کر کے اپنا ڈیٹا مٹا سکتے ہیں:", + "privacySection7TextEnd": "ڈائریکٹری، یا ڈیش بورڈ میں ڈیٹابیس بیک اپ اور بحالی کی خصوصیات استعمال کر کے۔", + "termsSection1Title": "1. جائزہ", + "termsSection1Text": "OmniRoute ایک لوکل فرسٹ AI API پراکسی راؤٹر ہے جو مکمل طور پر آپ کی مشین پر چلتا ہے۔ یہ لوڈ بیلنسنگ، فیل اوور اور استعمال کی ٹریکنگ کے ساتھ درخواستوں کو متعدد AI فراہم کنندگان تک پہنچاتا ہے۔", + "termsSection2Title": "2. صارف کی ذمہ داریاں", + "termsResponsibilityApiKeys": "فریقِ ثالث کے AI فراہم کنندگان (OpenAI، Anthropic، Google وغیرہ) کے لیے اپنی API کلیدوں اور اسناد کا انتظام کرنے کے مکمل طور پر آپ خود ذمہ دار ہیں۔", + "termsResponsibilityCompliance": "آپ کو ہر اس AI فراہم کنندہ کی سروس کی شرائط کی پابندی کرنا ہوگی جس کے API تک آپ OmniRoute کے ذریعے رسائی حاصل کرتے ہیں۔", + "termsResponsibilitySecurity": "اپنی مقامی OmniRoute انسٹالیشن کی سیکیورٹی، بشمول پاس ورڈ مقرر کرنا اور نیٹ ورک تک رسائی محدود کرنا، آپ کی ذمہ داری ہے۔", + "termsSection3Title": "3. یہ کیسے کام کرتا ہے", + "termsSection3Text": "OmniRoute ایک درمیانی پراکسی کے طور پر کام کرتا ہے۔ OmniRoute کو بھیجی گئی API کالز کا ترجمہ کیا جاتا ہے اور انہیں آپ کے کنفیگر کردہ AI فراہم کنندگان کو فارورڈ کر دیا جاتا ہے۔ ضروری پروٹوکول ترجمے کے علاوہ OmniRoute آپ کی درخواستوں یا جوابات کے مواد میں کوئی تبدیلی نہیں کرتا۔", + "termsSection4Title": "4. ڈیٹا کا نظم", + "termsDataStoredLocally": "تمام ڈیٹا آپ کی مشین پر ایک SQLite ڈیٹابیس میں مقامی طور پر محفوظ ہوتا ہے۔", + "termsNoTransmission": "OmniRoute کسی بھی ڈیٹا کو بیرونی سرورز پر منتقل نہیں کرتا، جب تک کہ آپ واضح طور پر کلاؤڈ سنک کی خصوصیات فعال نہ کریں۔", + "termsDataLocationText": "استعمال کے لاگز، API کلیدیں اور کنفیگریشن یہاں محفوظ ہوتے ہیں:", + "termsSection5Title": "5. دست برداری", + "termsSection5Text": "OmniRoute کسی بھی قسم کی ضمانت کے بغیر \"جیسا ہے\" فراہم کیا جاتا ہے۔ API کے استعمال سے ہونے والے کسی بھی اخراجات، سروس میں تعطل یا ڈیٹا کے نقصان کے لیے ہم ذمہ دار نہیں ہیں۔ اپنی کنفیگریشن کے بیک اپ ہمیشہ محفوظ رکھیں۔", + "termsSection6Title": "6. اوپن سورس", + "termsSection6Text": "OmniRoute اوپن سورس سافٹ ویئر ہے۔ آپ اس کے لائسنس کی شرائط کے تحت اس کا معائنہ، اس میں ترمیم اور اسے تقسیم کرنے کے لیے آزاد ہیں۔" }, "agents": { - "title": "CLI Agents", - "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.", - "refresh": "Refresh", - "installed": "Installed", - "notFound": "Not Found", - "builtIn": "Built-in", - "custom": "Custom", - "remove": "Remove", - "addCustomAgent": "Add Custom Agent", - "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.", - "agentName": "Agent Name", - "binaryName": "Binary Name", - "versionCommand": "Version Command", - "spawnArgs": "Spawn Args", - "addAgent": "Add Agent", - "scanning": "Scanning system for CLI agents...", - "opencodeIntegration": "OpenCode Integration", - "opencodeDetected": "opencode {version} detected", - "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.", - "downloadConfig": "Download {file}", - "downloaded": "Downloaded!", - "setupGuideTitle": "Setup guide", - "openCliTools": "Open CLI Tools", - "setupGuideDetectCliTitle": "Detect installed CLIs", - "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.", - "setupGuideCustomAgentTitle": "Register custom binary", - "setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.", - "setupGuideCommandMissingTitle": "Fix 'command not found'", - "setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.", + "title": "CLI ایجنٹس", + "description": "اپنے سسٹم پر انسٹال شدہ CLI ایجنٹس دریافت کریں۔ خودکار شناخت کے لیے حسبِ ضرورت ایجنٹس شامل کریں۔", + "refresh": "تازہ کریں", + "installed": "انسٹال شدہ", + "notFound": "نہیں ملا", + "builtIn": "بلٹ اِن", + "custom": "حسبِ ضرورت", + "remove": "ہٹائیں", + "addCustomAgent": "حسبِ ضرورت ایجنٹ شامل کریں", + "addCustomAgentDesc": "شناخت کے لیے کوئی بھی CLI ٹول رجسٹر کریں۔ تازہ کرنے پر اسے خودکار طور پر اسکین کیا جائے گا۔", + "agentName": "ایجنٹ کا نام", + "binaryName": "بائنری نام", + "versionCommand": "ورژن کمانڈ", + "spawnArgs": "اسپان آرگیومنٹس", + "addAgent": "ایجنٹ شامل کریں", + "scanning": "CLI ایجنٹس کے لیے سسٹم اسکین کیا جا رہا ہے...", + "opencodeIntegration": "OpenCode انضمام", + "opencodeDetected": "opencode {version} کا پتا چلا", + "opencodeDesc": "اپنے OmniRoute بیس URL اور تمام دستیاب ماڈلز کے ساتھ استعمال کے لیے تیار {configFile} بنائیں — اسے اپنے پروجیکٹ کی روٹ ڈائریکٹری میں رکھیں اور {command} چلائیں۔", + "downloadConfig": "{file} ڈاؤن لوڈ کریں", + "downloaded": "ڈاؤن لوڈ ہو گیا!", + "setupGuideTitle": "سیٹ اپ گائیڈ", + "openCliTools": "CLI ٹولز کھولیں", + "setupGuideDetectCliTitle": "انسٹال شدہ CLIs کا پتا لگائیں", + "setupGuideDetectCliDesc": "کسی CLI کو انسٹال یا اپ ڈیٹ کرنے کے بعد ریفریش پر کلک کریں تاکہ OmniRoute بائنریز اور ورژنز کو دوبارہ اسکین کر سکے۔", + "setupGuideCustomAgentTitle": "حسبِ ضرورت بائنری رجسٹر کریں", + "setupGuideCustomAgentDesc": "اگر آپ کا CLI پہلے سے موجود فہرست میں شامل نہیں ہے تو حسبِ ضرورت ایجنٹ شامل کریں استعمال کریں۔ بائنری کا نام اور ورژن کمانڈ فراہم کریں۔", + "setupGuideCommandMissingTitle": "'کمانڈ نہیں ملی' کو درست کریں", + "setupGuideCommandMissingDesc": "یقینی بنائیں کہ CLI کمانڈ PATH میں موجود ہے، نیا ٹرمینل سیشن کھولیں، اور ریفریش دوبارہ چلائیں۔", "cliToolsRedirectTitle": "Cli Tools Redirect Title", "cliToolsRedirectDesc": "Cli Tools Redirect Desc", "spawnArgsPlaceholder": "Spawn Args Placeholder", @@ -10491,148 +10498,148 @@ } }, "templateNames": { - "simple-chat": "Simple Chat", - "streaming": "Streaming", - "system-prompt": "System Prompt", - "thinking": "Thinking", - "tool-calling": "Tool Calling", - "multi-turn": "Multi-turn", + "simple-chat": "سادہ چیٹ", + "streaming": "اسٹریمنگ", + "system-prompt": "سسٹم پرامپٹ", + "thinking": "غور و فکر", + "tool-calling": "ٹول کالنگ", + "multi-turn": "کثیر باری گفتگو", "vision": "وژن", "schema-coercion": "سکیما جبر" }, "templateDescriptions": { - "simple-chat": "Basic chat template with system message", - "streaming": "Template for streaming responses", - "system-prompt": "Template with custom system prompt", - "thinking": "Template with reasoning/thinking budget", - "tool-calling": "Template for tool/function calling", - "multi-turn": "Template for multi-turn conversations", + "simple-chat": "سسٹم پیغام کے ساتھ بنیادی چیٹ ٹیمپلیٹ", + "streaming": "اسٹریمنگ جوابات کے لیے ٹیمپلیٹ", + "system-prompt": "حسبِ ضرورت سسٹم پرامپٹ کے ساتھ ٹیمپلیٹ", + "thinking": "استدلال/غور و فکر کے بجٹ کے ساتھ ٹیمپلیٹ", + "tool-calling": "ٹول/فنکشن کالنگ کے لیے ٹیمپلیٹ", + "multi-turn": "کثیر باری گفتگوؤں کے لیے ٹیمپلیٹ", "vision": "امیج ان پٹ کے ساتھ ملٹی موڈل ٹیمپلیٹ", "schema-coercion": "سٹرکچرڈ آؤٹ پٹ / JSON اسکیما انفورسمنٹ" }, "templatePayloads": { "simpleChat": { - "system": "You are a helpful AI assistant.", - "userGreeting": "Hello! How can I help you today?" + "system": "آپ ایک مددگار AI معاون ہیں۔", + "userGreeting": "السلام علیکم! آج میں آپ کی کیسے مدد کر سکتا ہوں؟" }, "streaming": { - "prompt": "Write a story about" + "prompt": "اس موضوع پر ایک کہانی لکھیں:" }, "systemPrompt": { - "question": "What is the meaning of life?", - "systemInstruction": "Provide a thoughtful, philosophical answer." + "question": "زندگی کا مطلب کیا ہے؟", + "systemInstruction": "ایک سوچا سمجھا، فلسفیانہ جواب فراہم کریں۔" }, "thinking": { - "question": "Explain quantum computing" + "question": "کوانٹم کمپیوٹنگ کی وضاحت کریں" }, "toolCalling": { - "cityNameDescription": "The name of the city to get weather for", - "toolDescription": "Get current weather for a location", - "userWeather": "What's the weather in Tokyo?" + "cityNameDescription": "وہ شہر جس کے موسم کی معلومات حاصل کرنی ہیں", + "toolDescription": "کسی مقام کا موجودہ موسم معلوم کریں", + "userWeather": "ٹوکیو میں موسم کیسا ہے؟" }, "multiTurn": { - "system": "You are a helpful assistant.", - "assistantExample": "I'd be happy to help you with that.", - "userInitial": "I need help with", - "userFollowUp": "Can you elaborate on that?" + "system": "آپ ایک مددگار معاون ہیں۔", + "assistantExample": "مجھے اس سلسلے میں آپ کی مدد کر کے خوشی ہوگی۔", + "userInitial": "مجھے اس معاملے میں مدد درکار ہے:", + "userFollowUp": "کیا آپ اس کی مزید وضاحت کر سکتے ہیں؟" } }, "cache": { - "title": "Cache Management", - "description": "Monitor provider prompt cache efficiency and local semantic response reuse.", - "refresh": "Refresh", - "clearAll": "Clear Semantic Cache", - "memoryEntries": "Memory Entries", - "memoryEntriesSub": "In-memory LRU", - "dbEntries": "DB Entries", + "title": "کیش مینجمنٹ", + "description": "فراہم کنندہ کے پرامپٹ کیش کی کارکردگی اور مقامی معنوی جوابات کے دوبارہ استعمال کی نگرانی کریں۔", + "refresh": "تازہ کریں", + "clearAll": "معنوی کیش صاف کریں", + "memoryEntries": "میموری اندراجات", + "memoryEntriesSub": "اِن میموری LRU", + "dbEntries": "ڈیٹابیس اندراجات", "dbEntriesSub": "Persisted (SQLite)", - "cacheHits": "Cache Hits", - "cacheHitsSub": "of {total} total", - "tokensSaved": "Tokens Saved", - "tokensSavedSub": "Estimated from hits", - "hitRate": "Hit Rate", - "performance": "Cache Performance", - "autoRefresh": "Auto-refreshes every {seconds}s", - "hits": "Hits", - "misses": "Misses", - "total": "Total", - "behavior": "Cache Behavior", - "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.", - "behaviorBypass": "Bypass with header {header}.", + "cacheHits": "کیش ہٹس", + "cacheHitsSub": "کل {total} میں سے", + "tokensSaved": "بچائے گئے ٹوکنز", + "tokensSavedSub": "ہٹس سے تخمینہ شدہ", + "hitRate": "ہٹ کی شرح", + "performance": "کیش کی کارکردگی", + "autoRefresh": "ہر {seconds} سیکنڈ میں خودکار طور پر تازہ ہوتا ہے", + "hits": "ہٹس", + "misses": "مِسز", + "total": "کل", + "behavior": "کیش کا طرزِ عمل", + "behaviorDeterministic": "صرف temperature=0 والی نان اسٹریمنگ درخواستیں کیش کی جاتی ہیں۔", + "behaviorBypass": "ہیڈر {header} کے ذریعے بائی پاس کریں۔", "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).", - "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.", - "idempotency": "Idempotency Layer", - "activeDedupKeys": "Active Dedup Keys", - "dedupWindow": "Dedup Window", - "clearSuccess": "Semantic cache cleared. {count} entries removed.", - "clearError": "Failed to clear cache.", - "unavailable": "Cache unavailable", - "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.", + "behaviorTtl": "ڈیفالٹ TTL: 30 منٹ۔ {envVar} کے ذریعے ترتیب دیں۔", + "idempotency": "آئیڈیم پوٹینسی لیئر", + "activeDedupKeys": "فعال ڈی ڈپ کلیدیں", + "dedupWindow": "ڈی ڈپ ونڈو", + "clearSuccess": "معنوی کیش صاف کر دیا گیا۔ {count} اندراجات ہٹا دیے گئے۔", + "clearError": "کیش صاف کرنے میں ناکامی ہوئی۔", + "unavailable": "کیش دستیاب نہیں", + "unavailableDesc": "کیش کے اعداد و شمار حاصل نہیں کیے جا سکے۔ یقینی بنائیں کہ سرور چل رہا ہے۔", "loadingCacheAria": "کیشے لوڈ ہو رہا ہے", - "promptCache": "Prompt Cache (Provider-Side)", - "semanticCache": "Semantic Cache", - "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.", - "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.", - "cachedRequests": "Cached Requests", - "cachedRequests24h": "Cached Requests (24h)", - "cacheHitRate": "Cache Hit Rate", - "cacheRate": "Cache Rate", - "cacheRateDesc": "of total requests", - "cachedTokens": "Cache Read Tokens", - "cacheCreationTokens": "Cache Write Tokens", - "cacheMetrics": "Prompt Cache Metrics", - "withCacheControl": "With Cache Control", - "cachedTokensRead": "Read from cache", - "cacheCreationWrite": "Written to cache", - "cacheReuseRatio": "Cache Reuse Ratio", - "cacheReuseRatioDesc": "Cache read tokens / Total input tokens", - "estCostSaved": "Est. Cost Saved", - "lastUpdated": "Last updated", - "hoursTracked": "hours tracked", - "busiestHour": "Busiest Hour", - "peakCacheRate": "Peak Cache Rate", - "trendHour": "Hour", - "activityVolume": "Activity", - "requestsShort": "reqs", - "inputShort": "In", - "cachedShort": "Cached", - "writeShort": "Write", - "resetting": "Resetting...", - "resetMetrics": "Reset Metrics", - "byProvider": "Breakdown by Provider", - "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.", + "promptCache": "پرامپٹ کیش (فراہم کنندہ کی جانب)", + "semanticCache": "معنوی کیش", + "promptCacheSectionDesc": "استعمال کی سرگزشت سے فراہم کنندہ کی جانب پرامپٹ کیشنگ کی سرگرمی دکھاتا ہے، تاکہ آپ دیکھ سکیں کہ کیش کنٹرول کہاں فعال ہے اور آپ کو اِن پٹ کے دوبارہ استعمال سے کتنا فائدہ ہو رہا ہے۔", + "promptTrendDesc": "گزشتہ 24 گھنٹوں میں فی گھنٹہ درخواستوں کا حجم، کیش کوریج، اور کیش ریڈ کا حجم۔", + "cachedRequests": "کیش شدہ درخواستیں", + "cachedRequests24h": "کیش شدہ درخواستیں (24 گھنٹے)", + "cacheHitRate": "کیش ہٹ کی شرح", + "cacheRate": "کیش کی شرح", + "cacheRateDesc": "کل درخواستوں میں سے", + "cachedTokens": "کیش ریڈ ٹوکنز", + "cacheCreationTokens": "کیش رائٹ ٹوکنز", + "cacheMetrics": "پرامپٹ کیش میٹرکس", + "withCacheControl": "کیش کنٹرول کے ساتھ", + "cachedTokensRead": "کیش سے پڑھا گیا", + "cacheCreationWrite": "کیش میں لکھا گیا", + "cacheReuseRatio": "کیش کے دوبارہ استعمال کا تناسب", + "cacheReuseRatioDesc": "کیش سے پڑھے گئے ٹوکنز / کل اِن پٹ ٹوکنز", + "estCostSaved": "تخمینی لاگت کی بچت", + "lastUpdated": "آخری بار اپ ڈیٹ کیا گیا", + "hoursTracked": "گھنٹوں کا ریکارڈ", + "busiestHour": "مصروف ترین گھنٹہ", + "peakCacheRate": "کیش کی بلند ترین شرح", + "trendHour": "گھنٹہ", + "activityVolume": "سرگرمی", + "requestsShort": "درخواستیں", + "inputShort": "اِن پٹ", + "cachedShort": "کیش شدہ", + "writeShort": "تحریر", + "resetting": "ری سیٹ کیا جا رہا ہے...", + "resetMetrics": "میٹرکس ری سیٹ کریں", + "byProvider": "Provider کے لحاظ سے تفصیل", + "providerCacheRateDesc": "ہر Provider کل اِن پٹ ٹوکنز، کیش سے پڑھے گئے ٹوکنز، اور کیش میں لکھے گئے ٹوکنز ظاہر کرتا ہے تاکہ آپ خام مجموعوں کے مقابلے میں دوبارہ استعمال کے تناسب کی تصدیق کر سکیں۔", "provider": "Provider", - "requests": "Requests", - "inputTokens": "Total Input Tokens", - "cachedTokensCol": "Cache Read", - "cacheCreation": "Cache Write", - "trend24h": "Cache Trend (24h)", - "peakCached": "Peak cached", - "cached": "Cached", - "overview": "Overview", + "requests": "درخواستیں", + "inputTokens": "کل اِن پٹ ٹوکنز", + "cachedTokensCol": "کیش سے پڑھا گیا", + "cacheCreation": "کیش میں لکھا گیا", + "trend24h": "کیش کا رجحان (24 گھنٹے)", + "peakCached": "سب سے زیادہ کیش شدہ", + "cached": "کیش شدہ", + "overview": "جائزہ", "tableProvider": "فراہم کنندہ", "tableModel": "ماڈل", "performanceTitle": "کارکردگی", - "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.", - "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.", - "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.", - "searchEntries": "Search entries...", - "search": "Search", - "loading": "Loading...", - "entriesLoadError": "Failed to load semantic cache entries.", - "noEntries": "No cache entries found", - "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.", - "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.", - "signature": "Signature", + "semanticCacheSectionDesc": "OmniRoute کا اپنا قطعی ریسپانس کیش۔ فعال ہونے پر، بار بار آنے والی نان اسٹریمنگ temperature=0 درخواستیں upstream Provider سے رابطہ کیے بغیر مقامی طور پر فراہم کی جا سکتی ہیں۔", + "semanticCacheDisabledDesc": "سیمینٹک کیش غیر فعال ہے۔ جب تک آپ اسے Settings میں دوبارہ فعال نہیں کرتے، OmniRoute مقامی ریسپانس کے دوبارہ استعمال کو نظر انداز کرے گا۔", + "semanticEntriesDesc": "مستقل طور پر محفوظ کیے گئے سیمینٹک کیش ریکارڈز جو فی الحال SQLite میں محفوظ ہیں۔ Provider کی جانب کی پرامپٹ کیش سرگرمی یہاں درج نہیں ہے۔", + "searchEntries": "اندراجات تلاش کریں...", + "search": "تلاش کریں", + "loading": "لوڈ ہو رہا ہے...", + "entriesLoadError": "سیمینٹک کیش کے اندراجات لوڈ کرنے میں ناکامی ہوئی۔", + "noEntries": "کیش کا کوئی اندراج نہیں ملا", + "noPromptCacheData": "Provider کی جانب کی پرامپٹ کیش سرگرمی ابھی تک ریکارڈ نہیں کی گئی۔", + "noTrendData": "گزشتہ 24 گھنٹوں کے دوران پرامپٹ کیش کی کوئی سرگرمی ریکارڈ نہیں کی گئی۔", + "signature": "دستخط", "model": "Model", - "created": "Created", - "expires": "Expires", - "actions": "Actions", - "deduplicatedRequests": "Deduplicated Requests", - "savedCalls": "Saved API Calls", - "totalProcessed": "Total Requests Processed", - "disabled": "Disabled", - "totalRequests": "Total Requests", + "created": "تخلیق کیا گیا", + "expires": "میعاد ختم ہوتی ہے", + "actions": "اقدامات", + "deduplicatedRequests": "نقل سے پاک کی گئی درخواستیں", + "savedCalls": "محفوظ کردہ API کالز", + "totalProcessed": "پروسیس کی گئی کل درخواستیں", + "disabled": "غیر فعال", + "totalRequests": "کل درخواستیں", "reasoningCache": "ریزننگ ری پلے", "reasoningCacheDesc": "ملٹی ٹرن ٹول کالنگ فلو کے لیے ماڈل سوچ کو محفوظ رکھتا ہے۔", "reasoningEntries": "فعال اندراجات", @@ -10669,56 +10676,56 @@ "minutesAgo": "{minutes}m پہلے", "hoursAgo": "{hours}h پہلے", "daysAgo": "{days}d پہلے", - "entries": "Entries" + "entries": "اندراجات" }, "proxyConfigModal": { - "levelGlobal": "Global", - "levelProvider": "Provider", - "levelCombo": "Combo", - "levelKey": "Key", - "levelDirect": "Direct (no proxy)", - "titleGlobal": "Global Proxy Configuration", - "titleLevel": "{level} Proxy — {label}", - "loading": "Loading proxy configuration...", - "inheritingFrom": "Inheriting from", - "source": "Source", - "savedProxy": "Saved Proxy", - "custom": "Custom", - "selectSavedProxyPlaceholder": "Select saved proxy...", - "proxyType": "Proxy Type", - "host": "Host", - "hostPlaceholder": "1.2.3.4 or proxy.example.com", - "port": "Port", - "authOptional": "Authentication (optional)", - "username": "Username", - "usernamePlaceholder": "Username", - "password": "Password", - "passwordPlaceholder": "Password", - "connected": "Connected", - "ip": "IP:", - "connectionFailed": "Connection failed", - "testConnection": "Test connection", - "clear": "Clear", - "cancel": "Cancel", - "save": "Save", - "errorSelectSavedProxy": "Please select a saved proxy first.", - "errorSelectProxyFirst": "Please select a proxy first.", - "errorProxyNotFound": "Selected proxy not found.", - "errorClearSavedProxy": "Failed to clear saved proxy", - "errorSaveProxy": "Failed to save proxy configuration", - "errorClearProxy": "Failed to clear proxy configuration", - "errorSocks5Hidden": "SOCKS5 is configured but hidden because NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false." + "levelGlobal": "عالمی", + "levelProvider": "فراہم کنندہ", + "levelCombo": "امتزاج", + "levelKey": "کلید", + "levelDirect": "براہِ راست (بغیر پراکسی)", + "titleGlobal": "عالمی پراکسی کنفیگریشن", + "titleLevel": "{level} پراکسی — {label}", + "loading": "پراکسی کنفیگریشن لوڈ ہو رہی ہے...", + "inheritingFrom": "سے اخذ کیا جا رہا ہے", + "source": "ماخذ", + "savedProxy": "محفوظ کردہ پراکسی", + "custom": "حسبِ ضرورت", + "selectSavedProxyPlaceholder": "محفوظ کردہ پراکسی منتخب کریں...", + "proxyType": "پراکسی کی قسم", + "host": "ہوسٹ", + "hostPlaceholder": "1.2.3.4 یا proxy.example.com", + "port": "پورٹ", + "authOptional": "توثیق (اختیاری)", + "username": "صارف نام", + "usernamePlaceholder": "صارف نام", + "password": "پاس ورڈ", + "passwordPlaceholder": "پاس ورڈ", + "connected": "منسلک", + "ip": "آئی پی:", + "connectionFailed": "کنکشن ناکام ہو گیا", + "testConnection": "کنکشن کی جانچ کریں", + "clear": "صاف کریں", + "cancel": "منسوخ کریں", + "save": "محفوظ کریں", + "errorSelectSavedProxy": "براہِ کرم پہلے ایک محفوظ کردہ پراکسی منتخب کریں۔", + "errorSelectProxyFirst": "براہِ کرم پہلے ایک پراکسی منتخب کریں۔", + "errorProxyNotFound": "منتخب کردہ پراکسی نہیں ملی۔", + "errorClearSavedProxy": "محفوظ کردہ پراکسی صاف کرنے میں ناکامی ہوئی", + "errorSaveProxy": "پراکسی کنفیگریشن محفوظ نہیں ہو سکی", + "errorClearProxy": "پراکسی کنفیگریشن صاف نہیں کی جا سکی", + "errorSocks5Hidden": "SOCKS5 کنفیگر کیا گیا ہے لیکن NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false کی وجہ سے پوشیدہ ہے۔" }, "oauthModal": { - "title": "Connect {providerName}", - "waiting": "Waiting for authorization", - "completeAuthInPopup": "Complete authorization in popup.", + "title": "{providerName} سے منسلک کریں", + "waiting": "اجازت کا انتظار ہے", + "completeAuthInPopup": "پاپ اَپ میں اجازت مکمل کریں۔", "popupClosedHint": "If the popup closed without redirecting back (e.g. Qoder), this dialog will auto-switch to manual URL entry mode.", - "popupBlocked": "Popup blocked? Enter URL manually", - "deviceCodeVisitUrl": "Visit the URL below and enter code:", - "deviceCodeVerificationUrl": "Verification URL", - "deviceCodeYourCode": "Your code", - "deviceCodeWaiting": "Waiting for authorization...", + "popupBlocked": "پاپ اَپ بلاک ہو گیا؟ URL دستی طور پر درج کریں", + "deviceCodeVisitUrl": "ذیل میں دیا گیا URL کھولیں اور کوڈ درج کریں:", + "deviceCodeVerificationUrl": "تصدیقی URL", + "deviceCodeYourCode": "آپ کا کوڈ", + "deviceCodeWaiting": "اجازت کا انتظار ہے...", "googleLoopbackTitle": "اس پتے سے Google سائن ان مکمل نہیں ہو سکتا", "googleLoopbackWhatHappens": "گوگل صرف اس وقت اختیار کوڈ جاری کرتا ہے جب {redirectUri} اس براؤزر سے قابل رسائی ہو جو سائن ان کی منظوری دیتا ہے۔ یہاں یہ پتہ اس کمپیوٹر کی طرف اشارہ کرتا ہے، نہ کہ OmniRoute سرور کی طرف — اس لیے رضامندی اسکرین لٹک جاتی ہے بجائے اس کے کہ ری ڈائریکٹ ہو، اور کاپی کرنے کے لیے کوئی کال بیک یو آر ایل نہیں ہے۔", "googleLoopbackRecommended": "مجوزہ — یہ اپنے کمپیوٹر پر چلائیں، پھر نیچے نتیجہ پیسٹ کریں:", @@ -10726,7 +10733,7 @@ "googleLoopbackTunnelLabel": "یا SSH کے ذریعے ڈیش بورڈ پورٹ کو آگے بڑھائیں اور سرنگ کے ذریعے OmniRoute کو دوبارہ لوڈ کریں:", "googleLoopbackTunnelNote": "اپنے SSH صارف نام کے ساتھ {userPlaceholder} کو تبدیل کریں، ٹرمینل کو کھلا رکھیں، پھر {localUrl} کو کھولیں اور وہاں سے دوبارہ جڑیں۔", "googleLoopbackHeadlessAlt": "مکمل ہیڈ لیس استعمال کے لیے بغیر کسی مقامی کال بیک کے، اپنے Google OAuth اسناد ترتیب دیں اور ایک عوامی بنیادی URL شامل کریں۔", - "remoteAccessInfo": "Remote access: Since you're accessing OmniRoute remotely, after authorization you'll see an error page (localhost not found). This is normal — just copy the full URL from your browser address bar and paste it below.", + "remoteAccessInfo": "ریموٹ رسائی: چونکہ آپ OmniRoute تک ریموٹ طور پر رسائی حاصل کر رہے ہیں، اس لیے اجازت دینے کے بعد آپ کو ایک خرابی کا صفحہ دکھائی دے گا (localhost نہیں ملا)۔ یہ معمول کی بات ہے — بس اپنے براؤزر کے ایڈریس بار سے مکمل URL کاپی کریں اور اسے ذیل میں پیسٹ کریں۔", "loopbackMismatchTitle": "اس پتے سے سائن ان مکمل نہیں ہو سکتا", "loopbackMismatchWhatHappened": "کیا ہو رہا ہے", "loopbackMismatchExplanation": "جب آپ لاگ ان کی منظوری دیتے ہیں، {providerName} ہمیشہ براؤزر کو {redirectUri} پر واپس بھیجتا ہے۔ یہ پتہ اس براؤزر کو چلانے والے کمپیوٹر کی طرف اشارہ کرتا ہے، نہ کہ OmniRoute سرور کی طرف — لہذا اختیار کوڈ کبھی OmniRoute تک نہیں پہنچتا اور فراہم کنندہ بغیر کسی غلطی دکھائے سائن ان میں ناکام ہو جاتا ہے۔", @@ -10736,17 +10743,17 @@ "loopbackMismatchStep2": "اس براؤزر میں، ٹنل کے ذریعے OmniRoute دوبارہ کھولیں:", "loopbackMismatchStep3": "پھر نئے ٹیب سے {providerName} دوبارہ جڑیں۔ کال بیک اب سرور تک پہنچتا ہے اور لاگ ان معمول کے مطابق مکمل ہوتا ہے۔", "loopbackMismatchAlternative": "کوئی SSH رسائی نہیں؟ اگر یہ فراہم کنندہ ایک ٹوکن درآمد ٹیب پیش کرتا ہے تو، ایک ٹوکن کے ساتھ جڑیں — یہ راستہ لوپ بیک کال بیک کا استعمال نہیں کرتا۔", - "step1OpenUrl": "Step 1: Open this URL in your browser", - "copy": "Copy", - "step2PasteCallback": "Step 2: Paste callback URL or authorization code here", - "step2Hint": "After authorization, paste the full callback URL. For Claude Code and Cline, you can also paste the authentication code directly, e.g. code#state.", - "connect": "Connect", - "cancel": "Cancel", - "success": "Connection successful!", - "successMessage": "Your {providerName} account has been connected.", - "done": "Done", - "error": "Connection failed", - "tryAgain": "Try again", + "step1OpenUrl": "مرحلہ 1: یہ URL اپنے براؤزر میں کھولیں", + "copy": "کاپی کریں", + "step2PasteCallback": "مرحلہ 2: کال بیک URL یا اجازت کا کوڈ یہاں پیسٹ کریں", + "step2Hint": "اجازت دینے کے بعد مکمل کال بیک URL پیسٹ کریں۔ Claude Code اور Cline کے لیے، آپ تصدیقی کوڈ بھی براہِ راست پیسٹ کر سکتے ہیں، مثلاً code#state۔", + "connect": "منسلک کریں", + "cancel": "منسوخ کریں", + "success": "کنکشن کامیاب ہو گیا!", + "successMessage": "آپ کا {providerName} اکاؤنٹ منسلک ہو گیا ہے۔", + "done": "مکمل", + "error": "کنکشن ناکام ہو گیا", + "tryAgain": "دوبارہ کوشش کریں", "errorSessionIncomplete": "OAuth سیشن مکمل نہیں ہے (ری ڈائریکٹ URI یا کوڈ ویری فائر غائب ہے)۔ کنکشن کو دوبارہ شروع کریں اور دوبارہ کوشش کریں۔", "errorExchangeFailed": "تبادلہ ناکام ہوا", "errorGoogleRedirectMismatch": "redirect_uri_mismatch: ڈیفالٹ Google OAuth اسناد صرف localhost پر کام کرتی ہیں۔ دور دراز کے استعمال کے لیے، اپنے OAuth اسناد کو ماحول کے متغیرات کے ذریعے ترتیب دیں: ANTIGRAVITY_OAUTH_CLIENT_ID اور ANTIGRAVITY_OAUTH_CLIENT_SECRET۔ README کے سیکشن 'OAuth on a Remote Server' کو دیکھیں۔", @@ -10776,7 +10783,7 @@ "saveConnection": "کنکشن محفوظ کریں", "gheDescription": "اپنے GitHub Enterprise انسٹنس کا بنیادی URL درج کریں (جیسے https://ghe.yourcompany.com)۔", "gheUrlPlaceholder": "https://ghe.yourcompany.com", - "gheUrlLabel": "GitHub Enterprise URL", + "gheUrlLabel": "GitHub Enterprise یو آر ایل", "gheUrlRequired": "GitHub Enterprise URL درکار ہے", "gitlabDuoSetupTitle": "GitLab Duo OAuth سیٹ اپ", "gitlabDuoSetupMessage": "GitLab Duo OAuth ترتیب نہیں دیا گیا ہے۔ {applicationsUrl} پر ایک OAuth ایپلیکیشن رجسٹر کریں جس میں ری ڈائریکٹ URI {redirectUri} اور اسکوپس \"{scopes}\" ہوں، پھر {clientIdEnv} (اور اختیاری طور پر {clientSecretEnv}) سیٹ کریں اور دوبارہ شروع کریں۔", @@ -10785,107 +10792,107 @@ }, "cursorAuthModal": { "title": "Connect Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", - "autoDetecting": "Auto-detecting tokens...", - "readingFromCursor": "Reading from Cursor IDE or cursor-agent", - "tokensAutoDetected": "Tokens successfully auto-detected from Cursor IDE!", + "tabLogin": "Cursor کے ذریعے لاگ اِن کریں", + "tabImport": "ٹوکن درآمد کریں", + "loginDescription": "Cursor کا براؤزر لاگ اِن کھولتا ہے۔ Docker میں کام کرتا ہے — اپنے ہوسٹ براؤزر میں منظوری دیں، پھر یہاں واپس آئیں۔", + "loginWithCursor": "Cursor کے ذریعے لاگ اِن کریں", + "startingLogin": "شروع کیا جا رہا ہے…", + "waitingApproval": "Cursor لاگ اِن کی منظوری کا انتظار ہے…", + "openUrlHint": "اگر براؤزر نہیں کھلا:", + "openLoginLink": "لاگ اِن صفحہ کھولیں", + "cancelLogin": "لاگ اِن منسوخ کریں", + "autoDetecting": "ٹوکنز کا خودکار طور پر پتہ لگایا جا رہا ہے...", + "readingFromCursor": "Cursor IDE یا cursor-agent سے پڑھا جا رہا ہے", + "tokensAutoDetected": "Cursor IDE سے ٹوکنز کا کامیابی سے خودکار طور پر پتہ لگا لیا گیا!", "cursorNotDetected": "Cursor IDE not detected. Please manually paste your token.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "dockerImportHint": "Docker میں چلا رہے ہیں؟ Cursor کے ساتھ لاگ اِن کو ترجیح دیں۔ کنٹینر کے اندر IDE سے خودکار درآمد اور cursor-agent عموماً دستیاب نہیں ہوتے۔ docs/providers/CURSOR-DOCKER.md دیکھیں۔", + "accessToken": "رسائی ٹوکن", + "refreshToken": "ریفریش ٹوکن", + "refreshTokenPlaceholder": "اختیاری — ٹوکن کی خودکار تجدید فعال کرتا ہے", "required": "*", - "accessTokenPlaceholder": "Access token will auto-populate...", - "machineId": "Machine ID", - "optional": "(optional)", - "machineIdPlaceholder": "Machine ID will auto-populate...", - "importing": "Importing...", - "importToken": "Import Token", - "cancel": "Cancel", - "errorAutoDetect": "Unable to auto-detect tokens", - "errorAutoDetectFailed": "Auto-detect tokens failed", - "errorEnterToken": "Please enter access token", - "errorImportFailed": "Import failed", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "accessTokenPlaceholder": "رسائی ٹوکن خود بخود درج ہو جائے گا...", + "machineId": "مشین آئی ڈی", + "optional": "(اختیاری)", + "machineIdPlaceholder": "مشین آئی ڈی خود بخود درج ہو جائے گی...", + "importing": "درآمد کیا جا رہا ہے...", + "importToken": "ٹوکن درآمد کریں", + "cancel": "منسوخ کریں", + "errorAutoDetect": "ٹوکنز کا خودکار طور پر پتا نہیں لگایا جا سکا", + "errorAutoDetectFailed": "ٹوکنز کا خودکار طور پر پتا لگانے میں ناکامی", + "errorEnterToken": "براہِ کرم رسائی ٹوکن درج کریں", + "errorImportFailed": "درآمد ناکام ہو گئی", + "errorLoginStart": "Cursor لاگ اِن شروع کرنے میں ناکامی", + "errorLoginPoll": "Cursor لاگ اِن ناکام ہو گیا", + "errorLoginTimeout": "Cursor لاگ اِن کا وقت ختم ہو گیا — دوبارہ کوشش کریں" }, "pricingModal": { - "title": "Pricing Configuration", - "loading": "Loading pricing data...", - "pricingRatesFormat": "Pricing Rates Format", - "ratesDescription": "All rates are in dollars per million tokens ($/1M tokens). Example: Input rate of 2.50 means $2.50 per 1,000,000 input tokens.", - "model": "Model", - "input": "Input", - "output": "Output", - "cached": "Cached", - "reasoning": "Reasoning", - "cacheCreation": "Cache Creation", - "noPricingData": "No pricing data available", - "resetToDefaults": "Reset to defaults", - "cancel": "Cancel", - "saving": "Saving...", - "saveChanges": "Save changes", - "resetConfirm": "Reset all pricing to defaults? This cannot be undone.", - "errorSaveFailed": "Failed to save pricing", - "errorResetFailed": "Failed to reset pricing" + "title": "قیمتوں کی ترتیب", + "loading": "قیمتوں کا ڈیٹا لوڈ ہو رہا ہے...", + "pricingRatesFormat": "قیمتوں کی شرحوں کا فارمیٹ", + "ratesDescription": "تمام شرحیں فی دس لاکھ ٹوکنز ڈالرز میں ہیں ($/1M tokens)۔ مثال: 2.50 کی اِن پٹ شرح کا مطلب فی 1,000,000 اِن پٹ ٹوکنز $2.50 ہے۔", + "model": "ماڈل", + "input": "اِن پٹ", + "output": "آؤٹ پٹ", + "cached": "کیش شدہ", + "reasoning": "استدلال", + "cacheCreation": "کیش کی تخلیق", + "noPricingData": "قیمتوں کا کوئی ڈیٹا دستیاب نہیں", + "resetToDefaults": "ڈیفالٹس پر ری سیٹ کریں", + "cancel": "منسوخ کریں", + "saving": "محفوظ کیا جا رہا ہے...", + "saveChanges": "تبدیلیاں محفوظ کریں", + "resetConfirm": "تمام قیمتوں کو ڈیفالٹس پر ری سیٹ کریں؟ اسے واپس نہیں کیا جا سکتا۔", + "errorSaveFailed": "قیمتیں محفوظ کرنے میں ناکامی", + "errorResetFailed": "قیمتیں ری سیٹ کرنے میں ناکامی" }, "proxyRegistry": { "selectAllProxies": "تمام پراکسیز منتخب کریں", "selectProxy": "{name} منتخب کریں", - "title": "Proxy Registry", - "description": "Store reusable proxies and track assignments.", - "importLegacy": "Import Legacy", - "bulkAssign": "Bulk Assign", - "addProxy": "Add Proxy", - "loading": "Loading proxies...", - "noProxies": "No saved proxies yet.", - "tableName": "Name", - "tableEndpoint": "Endpoint", - "tableStatus": "Status", - "tableHealth": "Health (24h)", - "tableUsage": "Usage", - "tableActions": "Actions", - "test": "Test", - "edit": "Edit", - "delete": "Delete", - "modalCreateTitle": "Create Proxy", - "modalEditTitle": "Edit Proxy", - "labelName": "Name", - "labelType": "Type", + "title": "پراکسی رجسٹری", + "description": "دوبارہ قابلِ استعمال پراکسیز محفوظ کریں اور تفویضات کو ٹریک کریں۔", + "importLegacy": "لیگیسی درآمد کریں", + "bulkAssign": "اجتماعی تفویض", + "addProxy": "پراکسی شامل کریں", + "loading": "پراکسیاں لوڈ ہو رہی ہیں...", + "noProxies": "ابھی تک کوئی محفوظ شدہ پراکسی نہیں ہے۔", + "tableName": "نام", + "tableEndpoint": "اینڈ پوائنٹ", + "tableStatus": "حالت", + "tableHealth": "صحت (24 گھنٹے)", + "tableUsage": "استعمال", + "tableActions": "اقدامات", + "test": "جانچ کریں", + "edit": "ترمیم کریں", + "delete": "حذف کریں", + "modalCreateTitle": "پراکسی بنائیں", + "modalEditTitle": "پراکسی میں ترمیم کریں", + "labelName": "نام", + "labelType": "قسم", "labelFamily": "IP فیملی", "familyAuto": "خودکار (ڈوئل اسٹیک)", "familyIpv4": "صرف IPv4", "familyIpv6": "صرف IPv6", "familyHint": "خارجی ایڈریس فیملی۔ خودکار ڈوئل اسٹیک رکھتا ہے؛ IPv4/IPv6 اس پراکسی کو اس فیملی سے منسلک کرتا ہے (صرف IPv6 پراکسی کے تحت v4 لیک کو روکتا ہے)۔", - "labelHost": "Host", - "labelPort": "Port", - "labelUsername": "Username", - "labelPassword": "Password", - "labelRegion": "Region", - "labelStatus": "Status", - "labelNotes": "Notes", - "usernamePlaceholderEdit": "Leave blank to keep current username", - "passwordPlaceholderEdit": "Leave blank to keep current password", - "statusActive": "Active", - "statusInactive": "Inactive", - "cancel": "Cancel", - "save": "Save", - "bulkModalTitle": "Bulk Proxy Assignment", - "bulkLabelScope": "Scope", - "bulkLabelProxy": "Proxy", - "bulkClearAssignment": "(Clear assignment)", - "bulkLabelScopeIds": "Scope IDs (comma or newline separated)", + "labelHost": "ہوسٹ", + "labelPort": "پورٹ", + "labelUsername": "صارف نام", + "labelPassword": "پاس ورڈ", + "labelRegion": "خطہ", + "labelStatus": "حالت", + "labelNotes": "نوٹس", + "usernamePlaceholderEdit": "موجودہ صارف نام برقرار رکھنے کے لیے خالی چھوڑ دیں", + "passwordPlaceholderEdit": "موجودہ پاس ورڈ برقرار رکھنے کے لیے خالی چھوڑ دیں", + "statusActive": "فعال", + "statusInactive": "غیر فعال", + "cancel": "منسوخ کریں", + "save": "محفوظ کریں", + "bulkModalTitle": "اجتماعی پراکسی تفویض", + "bulkLabelScope": "دائرۂ کار", + "bulkLabelProxy": "پراکسی", + "bulkClearAssignment": "(تفویض ختم کریں)", + "bulkLabelScopeIds": "دائرۂ کار کی IDs (کاما یا نئی سطر سے علیحدہ)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", - "bulkApply": "Apply", + "bulkApply": "لاگو کریں", "labelScope": "دائرہ کار", "labelProxy": "پراکسی", "scopeGlobal": "عالمی", @@ -10897,22 +10904,22 @@ "bulkImportErrorInvalidPort": "غلط PORT (1-65535 ہونا چاہیے)", "bulkImportErrorInvalidType": "غلط TYPE (http، https، یا socks5 استعمال کریں)", "bulkImportErrorInvalidStatus": "غلط STATUS (فعال یا غیر فعال استعمال کریں)", - "errorLoadFailed": "Failed to load proxy registry", - "errorNameHostRequired": "Name and host are required", - "errorSaveFailed": "Failed to save proxy", - "errorDeleteFailed": "Failed to delete proxy", - "errorForceDeleteConfirm": "This proxy is still assigned. Force delete and remove all assignments?", - "errorMigrateFailed": "Failed to migrate legacy proxy config", - "errorBulkFailed": "Failed to execute bulk assignment", + "errorLoadFailed": "پراکسی رجسٹری لوڈ کرنے میں ناکامی", + "errorNameHostRequired": "نام اور ہوسٹ درکار ہیں", + "errorSaveFailed": "پراکسی محفوظ کرنے میں ناکامی", + "errorDeleteFailed": "پراکسی حذف کرنے میں ناکامی", + "errorForceDeleteConfirm": "یہ پراکسی اب بھی تفویض شدہ ہے۔ زبردستی حذف کر کے تمام تفویضات ہٹا دیں؟", + "errorMigrateFailed": "پرانی پراکسی کنفیگریشن منتقل کرنے میں ناکامی", + "errorBulkFailed": "بلک تفویض انجام دینے میں ناکامی", "success": "✓", "failure": "✗", - "failed": "Failed", - "successRate": "{rate}% success", - "avgLatency": "{latency}ms average", - "assignmentsCount": "{count} assignments", + "failed": "ناکام", + "successRate": "{rate}% کامیابی", + "avgLatency": "اوسط {latency}ms", + "assignmentsCount": "{count} تفویضات", "noData": "—", "testSuccess": "✓ {ip}", - "testLatency": "{latency}ms", + "testLatency": "{latency} ملی سیکنڈ", "testFailure": "✗ {error}", "repair": "مرمت کریں", "relayAuthMissing": "تصدیق غائب ہے", @@ -10961,9 +10968,9 @@ "strategyLatency": "لیٹنسی-آپٹمائزڈ", "poolMembersLabel": "پول کے ارکان ({count})", "poolNoMembers": "اس پول میں ابھی تک کوئی پروکسی نہیں ہے۔", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{connections, plural, one {# کنکشن} other {# کنکشنز}} کے زیرِ استعمال {exits, plural, one {# اخراج} other {# اخراج}} · ایک اخراج پر زیادہ سے زیادہ {max} · گزشتہ {hours} گھنٹے", + "poolEgressObservationEmpty": "گزشتہ {hours} گھنٹوں میں کوئی ٹریفک نہیں دیکھی گئی", + "poolEgressObservationHint": "اس دورانیے کے لیے پراکسی لاگ سے شمار کیا گیا: اس پول کے اراکین کے لیے دیکھے گئے منفرد اخراجی IPs، اور انہیں استعمال کرنے والے OmniRoute کنکشنز۔ \"ایک اخراج پر\" سے مراد پورا دورانیہ ہے، ایک ہی وقت نہیں۔ فی IP 429 لاک آؤٹ صرف اسی فراہم کنندہ خاندان کے کنکشنز کو عارضی طور پر روکتا ہے۔", "poolRemove": "ہٹائیں", "poolRemoveFailed": "پول سے پروکسی کو ہٹانے میں ناکامی", "poolAddLabel": "ایک پروکسی شامل کریں", @@ -10973,96 +10980,96 @@ "poolSaveFailed": "پول اسائنمنٹ کو محفوظ کرنے میں ناکامی" }, "playground": { - "title": "Model Playground", - "description": "Test any model directly from the dashboard. Select provider, model, and endpoint type, then send a request to see the raw response.", - "endpoint": "Endpoint", - "provider": "Provider", - "model": "Model", - "accountKey": "Account / Key", - "autoAccounts": "Auto ({count} accounts)", - "noAccounts": "No accounts", - "send": "Send", - "cancel": "Cancel", - "audioFile": "Audio File", - "attachImages": "Attach Images (Vision)", + "title": "ماڈل پلے گراؤنڈ", + "description": "ڈیش بورڈ سے براہِ راست کسی بھی ماڈل کی جانچ کریں۔ فراہم کنندہ، ماڈل اور اینڈ پوائنٹ کی قسم منتخب کریں، پھر خام جواب دیکھنے کے لیے درخواست بھیجیں۔", + "endpoint": "اینڈ پوائنٹ", + "provider": "فراہم کنندہ", + "model": "ماڈل", + "accountKey": "اکاؤنٹ / کلید", + "autoAccounts": "خودکار ({count} اکاؤنٹس)", + "noAccounts": "کوئی اکاؤنٹ نہیں", + "send": "بھیجیں", + "cancel": "منسوخ کریں", + "audioFile": "آڈیو فائل", + "attachImages": "تصاویر منسلک کریں (وژن)", "multipartFormData": "multipart/form-data", - "upToImages": "Up to 4 images", - "selectAudioFile": "Select audio file for transcription (mp3, wav, m4a, ogg, flac…)", - "clearAll": "Clear All", - "request": "Request", - "response": "Response", - "transcription": "Transcription", - "copy": "Copy", - "resetToDefault": "Reset to default", - "downloadAudio": "Download audio", - "copyText": "Copy text", - "transcriptionHint": "Transcription uses multipart/form-data. Upload the audio file above — the JSON below controls extra parameters (model, language).", - "imagesGenerated": "Generated {count} images", - "generatedImage": "Generated image {index}", - "save": "Save", + "upToImages": "زیادہ سے زیادہ 4 تصاویر", + "selectAudioFile": "ٹرانسکرپشن کے لیے آڈیو فائل منتخب کریں (mp3, wav, m4a, ogg, flac…)", + "clearAll": "سب صاف کریں", + "request": "درخواست", + "response": "جواب", + "transcription": "ٹرانسکرپشن", + "copy": "کاپی کریں", + "resetToDefault": "ڈیفالٹ پر ری سیٹ کریں", + "downloadAudio": "آڈیو ڈاؤن لوڈ کریں", + "copyText": "متن کاپی کریں", + "transcriptionHint": "ٹرانسکرپشن multipart/form-data استعمال کرتی ہے۔ اوپر آڈیو فائل اپ لوڈ کریں — نیچے موجود JSON اضافی پیرامیٹرز (model, language) کو کنٹرول کرتا ہے۔", + "imagesGenerated": "{count} تصاویر تیار کی گئیں", + "generatedImage": "تیار کردہ تصویر {index}", + "save": "محفوظ کریں", "endpointOptions": { - "chat": "Chat completions", - "responses": "Responses", + "chat": "چیٹ کی تکمیلات", + "responses": "جوابات", "completions": "تکمیلات", - "images": "Image generation", - "embeddings": "Embeddings", - "speech": "Text-to-speech", - "transcription": "Audio transcription", - "video": "Video generation", - "music": "Music generation", + "images": "تصویر بنانا", + "embeddings": "ایمبیڈنگز", + "speech": "متن سے آواز", + "transcription": "آڈیو کی نقل نویسی", + "video": "ویڈیو بنانا", + "music": "موسیقی بنانا", "moderations": "ماڈریشنز", - "rerank": "Rerank", - "search": "Web search", + "rerank": "دوبارہ درجہ بندی", + "search": "ویب تلاش", "webFetch": "ویب فیچ" }, "conversationalChat": "مکالماتی چیٹ", "clearChat": "چیٹ صاف کریں۔", "typeMessagePlaceholder": "ایک پیغام ٹائپ کریں... (نئی لائن کے لیے Shift+Enter)", - "tabChat": "Chat", - "tabCompare": "Compare", + "tabChat": "چیٹ", + "tabCompare": "موازنہ کریں", "tabApi": "API", - "tabBuild": "Build", - "configPane": "Config", - "systemPrompt": "System prompt", - "systemPromptPlaceholder": "You are a helpful assistant.", - "modelPlaceholder": "e.g. openai/gpt-4o", - "endpointLabel": "Endpoint", - "parametersLabel": "Parameters", - "collapseConfig": "Collapse config pane", - "expandConfig": "Expand config pane", - "temperature": "Temperature", - "maxTokens": "Max tokens", + "tabBuild": "بنائیں", + "configPane": "ترتیبات", + "systemPrompt": "سسٹم پرامپٹ", + "systemPromptPlaceholder": "آپ ایک مددگار معاون ہیں۔", + "modelPlaceholder": "مثلاً openai/gpt-4o", + "endpointLabel": "اینڈ پوائنٹ", + "parametersLabel": "پیرامیٹرز", + "collapseConfig": "ترتیبات کا پین سمیٹیں", + "expandConfig": "ترتیبات کا پین پھیلائیں", + "temperature": "درجۂ حرارت", + "maxTokens": "زیادہ سے زیادہ ٹوکنز", "topP": "Top-p", - "presencePenalty": "Presence penalty", - "frequencyPenalty": "Frequency penalty", + "presencePenalty": "موجودگی کا جرمانہ", + "frequencyPenalty": "تکرار کا جرمانہ", "reasoningLabel": "استدلال", "thinking": "سوچ", "effort": "کوشش", "effortDefault": "ڈیفالٹ", - "seedPlaceholder": "Random (leave empty)", - "presetsLabel": "Presets", - "loadPreset": "Load preset", - "savePreset": "Save preset", - "noPresets": "No presets", - "presetNamePlaceholder": "Preset name", - "savingPreset": "Saving…", - "nameRequired": "Name is required", - "failedToSavePreset": "Failed to save preset", - "improvePrompt": "Improve prompt", - "improvingPrompt": "Improving…", - "improvePromptTitle": "Improve your prompt with AI", - "setModelFirst": "Set a model first", + "seedPlaceholder": "بے ترتیب (خالی چھوڑ دیں)", + "presetsLabel": "پیش سیٹ", + "loadPreset": "پیش سیٹ لوڈ کریں", + "savePreset": "پیش سیٹ محفوظ کریں", + "noPresets": "کوئی پیش سیٹ نہیں", + "presetNamePlaceholder": "پیش سیٹ کا نام", + "savingPreset": "محفوظ کیا جا رہا ہے…", + "nameRequired": "نام درکار ہے", + "failedToSavePreset": "پیش سیٹ محفوظ نہیں ہو سکا", + "improvePrompt": "پرامپٹ بہتر بنائیں", + "improvingPrompt": "بہتر بنایا جا رہا ہے…", + "improvePromptTitle": "AI کے ذریعے اپنا پرامپٹ بہتر بنائیں", + "setModelFirst": "پہلے ایک ماڈل سیٹ کریں", "setModelInConfigFirst": "پہلے کنفیگ پینل میں ایک ماڈل سیٹ کریں۔", "improvePromptFailed": "پراامپٹ کو بہتر بنانا ناکام رہا۔", "improvePromptAria": "AI کا استعمال کرتے ہوئے پرامپٹ کو بہتر بنائیں", "confirmImprovePrompt": "پرامپٹ کو بہتر بنانے کی تصدیق کریں", "improvePromptDescription": "یہ ایک بہتر ورژن تیار کرنے کے لیے آپ کا موجودہ سسٹم پرامپٹ کو بھیجے گا۔", - "improveQuotaWarning": "This will consume quota from the model configured in Config.", - "improveConfirm": "Improve", - "exportCode": "Export code", - "exportCodeTitle": "Export Code", + "improveQuotaWarning": "اس سے Config میں ترتیب دیے گئے ماڈل کا کوٹہ استعمال ہوگا۔", + "improveConfirm": "بہتر بنائیں", + "exportCode": "کوڈ برآمد کریں", + "exportCodeTitle": "کوڈ برآمد کریں", "exportShort": "ایکسپورٹ", - "noStateToExport": "No playground state available to export.", + "noStateToExport": "برآمد کرنے کے لیے کوئی playground حالت دستیاب نہیں ہے۔", "closeExportModal": "ایکسپورٹ ماڈل بند کریں", "close": "بند کریں", "exportRealKeyWarning": "سیکیورٹی وارننگ: ایکسپورٹ بلاک کر دی گئی ہے — آؤٹ پٹ میں ایک حقیقی API کی کا پتہ چلا ہے۔ براہ کرم اپنی API کی کو ری سیٹ کریں اور دوبارہ کوشش کریں۔", @@ -11071,13 +11078,13 @@ "copyLangCode": "{language} کوڈ کاپی کریں", "loadingPresets": "لوڈ ہو رہا ہے…", "loadPresetPlaceholder": "پری سیٹ لوڈ کریں…", - "copyCode": "Copy", - "copiedCode": "Copied!", - "addModel": "+ Add model", - "runAll": "Run all", - "cancelAll": "Cancel all", - "maxColumnsReached": "Maximum {max} columns", - "modelPlaceholderCompare": "Model (Cmd+K)…", + "copyCode": "کاپی کریں", + "copiedCode": "کاپی ہو گیا!", + "addModel": "+ ماڈل شامل کریں", + "runAll": "سب چلائیں", + "cancelAll": "سب منسوخ کریں", + "maxColumnsReached": "زیادہ سے زیادہ {max} کالم", + "modelPlaceholderCompare": "ماڈل (Cmd+K)…", "noModel": "کوئی ماڈل نہیں", "statusLabel": "حالت: {status}", "status": { @@ -11095,29 +11102,29 @@ "waitingForResponse": "جواب کا انتظار ہے…", "ttft": "TTFT", "tps": "TPS", - "metricsDisclaimer": "client-side estimate", - "tokensLabel": "Tokens", - "costLabel": "Cost", - "costEstimated": "(estimated)", + "metricsDisclaimer": "کلائنٹ سائیڈ تخمینہ", + "tokensLabel": "ٹوکنز", + "costLabel": "لاگت", + "costEstimated": "(تخمینی)", "ttftTitle": "پہلے ٹوکن کا وقت (کلائنٹ سائیڈ کا تخمینہ)", "tpsTitle": "ٹوکن فی سیکنڈ (کلائنٹ سائیڈ کا تخمینہ)", "tokenCountsTitle": "پرامپٹ ٹوکنز ↑ / تکمیل کے ٹوکنز ↓", "estimatedCostTitle": "تخمینی لاگت (درست ہونے کی ضمانت نہیں ہے)", - "toolsLabel": "Tools", + "toolsLabel": "ٹولز", "toolsCount": "ٹولز ({count})", - "addTool": "Add tool", + "addTool": "ٹول شامل کریں", "editTool": "ٹول {name} میں ترمیم کریں", "removeTool": "ٹول {name} کو ہٹائیں", - "toolNamePlaceholder": "Function name", + "toolNamePlaceholder": "فنکشن کا نام", "toolNameRequiredPlaceholder": "فنکشن کا نام *", - "toolDescPlaceholder": "Description (optional)", + "toolDescPlaceholder": "تفصیل (اختیاری)", "toolParamsLabel": "پیرامیٹرز (JSON اسکیمہ)", "toolParamsJsonSchema": "پیرامیٹرز کے لیے JSON اسکیمہ", - "toolParamsInvalid": "Parameters must be valid JSON", - "structuredOutputLabel": "Structured Output", - "enableJsonMode": "Enable JSON mode", - "disableJsonMode": "Disable JSON mode", - "invalidJson": "Invalid JSON", + "toolParamsInvalid": "پیرامیٹرز کا درست JSON ہونا ضروری ہے", + "structuredOutputLabel": "ساخت یافتہ آؤٹ پٹ", + "enableJsonMode": "JSON موڈ فعال کریں", + "disableJsonMode": "JSON موڈ غیر فعال کریں", + "invalidJson": "غلط JSON", "jsonMode": "JSON موڈ", "jsonModeDescription": "response_format: json_schema کو لازمی بناتا ہے", "schemaName": "اسکیمہ کا نام", @@ -11154,9 +11161,9 @@ "columnCount": "{count}/{max} کالم", "addModelToCompare": "موازنہ کرنے کے لیے ایک ماڈل کالم شامل کریں", "modelsSimultaneously": "ایک ساتھ {max} ماڈلز تک", - "running": "Running…", - "runLabel": "Run", - "enterToolResult": "Enter tool result…", + "running": "چل رہا ہے…", + "runLabel": "چلائیں", + "enterToolResult": "ٹول کا نتیجہ درج کریں…", "build": { "step1Label": "کیا ٹیسٹ کرنا ہے؟", "step2Label": "ترتیب دیں", @@ -11250,73 +11257,73 @@ "stop": "روکیں" }, "requestLogger": { - "recording": "Recording", - "paused": "Paused", - "pipelineLogsOn": "Pipeline logs on", - "pipelineLogsOff": "Pipeline logs off", - "updatingPipelineLogs": "Updating pipeline logs...", - "updatePipelineFailed": "Failed to update pipeline logging", - "capturePipeline": "Capture pipeline payloads for new requests", - "searchPlaceholder": "Search models, providers, accounts, API keys, combos...", - "allProviders": "All providers", - "allModels": "All models", - "allAccounts": "All accounts", - "allApiKeys": "All API keys", - "total": "Total", - "ok": "Success", - "err": "Error", - "combo": "Combo", - "keys": "Keys", - "shown": "Shown", - "sortNewest": "Newest", - "sortOldest": "Oldest", - "sortTokensDesc": "Tokens ↓", - "sortTokensAsc": "Tokens ↑", - "sortDurationDesc": "Duration ↓", - "sortDurationAsc": "Duration ↑", - "sortStatusDesc": "Status ↓", - "sortStatusAsc": "Status ↑", - "sortModelAsc": "Model A-Z", - "sortModelDesc": "Model Z-A", - "sortLogs": "Sort logs", - "refresh": "Refresh", - "columnsLabel": "Columns", + "recording": "ریکارڈنگ", + "paused": "موقوف", + "pipelineLogsOn": "پائپ لائن لاگز فعال ہیں", + "pipelineLogsOff": "پائپ لائن لاگز غیر فعال ہیں", + "updatingPipelineLogs": "پائپ لائن لاگز اپ ڈیٹ کیے جا رہے ہیں...", + "updatePipelineFailed": "پائپ لائن لاگنگ اپ ڈیٹ کرنے میں ناکامی", + "capturePipeline": "نئی درخواستوں کے لیے پائپ لائن پے لوڈز کیپچر کریں", + "searchPlaceholder": "ماڈلز، فراہم کنندگان، اکاؤنٹس، API کلیدیں، کومبوز تلاش کریں...", + "allProviders": "تمام فراہم کنندگان", + "allModels": "تمام ماڈلز", + "allAccounts": "تمام اکاؤنٹس", + "allApiKeys": "تمام API کلیدیں", + "total": "کل", + "ok": "کامیاب", + "err": "خرابی", + "combo": "کومبو", + "keys": "کلیدیں", + "shown": "دکھائے گئے", + "sortNewest": "تازہ ترین", + "sortOldest": "قدیم ترین", + "sortTokensDesc": "ٹوکنز ↓", + "sortTokensAsc": "ٹوکنز ↑", + "sortDurationDesc": "دورانیہ ↓", + "sortDurationAsc": "دورانیہ ↑", + "sortStatusDesc": "حالت ↓", + "sortStatusAsc": "حالت ↑", + "sortModelAsc": "ماڈل A-Z", + "sortModelDesc": "ماڈل Z-A", + "sortLogs": "لاگز ترتیب دیں", + "refresh": "تازہ کریں", + "columnsLabel": "کالمز", "cacheSem": "SEM", - "cacheUp": "UP", - "semantic": "Semantic", - "upstream": "Upstream", - "semanticCacheHit": "Semantic cache hit (served by OmniRoute)", - "upstreamResponse": "Upstream provider response", - "noApiKey": "No API key", - "requestedRoutedTitle": "Requested {requested}, routed as {routed}", + "cacheUp": "فعال", + "semantic": "معنوی", + "upstream": "اپ اسٹریم", + "semanticCacheHit": "معنوی کیش ہٹ (OmniRoute کی جانب سے فراہم کردہ)", + "upstreamResponse": "اپ اسٹریم فراہم کنندہ کا جواب", + "noApiKey": "کوئی API کلید نہیں", + "requestedRoutedTitle": "درخواست کردہ {requested}، {routed} کے طور پر روٹ کیا گیا", "statusFilters": { - "all": "All", - "error": "Error", - "success": "Success", - "combo": "Combo" + "all": "سبھی", + "error": "خرابی", + "success": "کامیاب", + "combo": "کومبو" }, "columns": { - "status": "Status", - "cacheSource": "Cache Source", - "model": "Model", - "requested": "Requested", - "provider": "Provider", - "protocol": "Request Protocol", - "account": "Account", - "apiKey": "API Key", - "combo": "Combo", - "tokens": "Tokens", + "status": "حالت", + "cacheSource": "کیش کا ماخذ", + "model": "ماڈل", + "requested": "درخواست کردہ", + "provider": "فراہم کنندہ", + "protocol": "درخواست کا پروٹوکول", + "account": "اکاؤنٹ", + "apiKey": "API کلید", + "combo": "کومبو", + "tokens": "ٹوکنز", "compressed": "کمپریشن", "tps": "TPS", - "duration": "Duration", - "time": "Time", - "conversation": "Conversation", + "duration": "دورانیہ", + "time": "وقت", + "conversation": "گفتگو", "ttft": "TTFT" }, - "loadingLogs": "Loading logs...", - "noLogs": "No logs yet. Make some API calls to see them here.", - "noMatchingLogs": "No logs matching current filters.", - "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.", + "loadingLogs": "لاگز لوڈ ہو رہے ہیں...", + "noLogs": "ابھی کوئی لاگز نہیں ہیں۔ انہیں یہاں دیکھنے کے لیے کچھ API کالز کریں۔", + "noMatchingLogs": "موجودہ فلٹرز سے مطابقت رکھنے والے کوئی لاگز نہیں ہیں۔", + "callLogsInfo": "کال لاگز JSON فائلوں کے طور پر {dataDir} میں بھی محفوظ کیے جاتے ہیں اور {retentionDays} اور {maxEntries} کی بنیاد پر روٹیٹ کیے جاتے ہیں۔", "loadMore": "مزید لوڈ کریں", "loadingMore": "مزید لوڈ ہو رہا ہے...", "correlationId": "ہم آہنگی شناختی نمبر", @@ -11367,7 +11374,7 @@ }, "payloadMissing": "اس لاگ اندراج کے لیے تفصیلی پیلوڈ آرٹيفیکٹ اب دستیاب نہیں ہے۔", "payloadCorrupt": "تفصیلی پیلوڈ آرٹفیکٹ کو پارس نہیں کیا جا سکا۔", - "notAvailable": "N/A", + "notAvailable": "دستیاب نہیں", "semanticCache": "سمینٹک (OmniRoute)", "upstreamCache": "اوپر کی طرف (فراہم کنندہ)", "ariaLabel": "درخواست لاگ کی تفصیل", @@ -11415,61 +11422,61 @@ "requestPayloadLegacy": "درخواست پیلوڈ (ورثے)", "noPayload": "اس لاگ اندراج کے لیے کوئی پیلوڈ ڈیٹا دستیاب نہیں ہے۔", "correlationId": "کورلیشن آئی ڈی", - "correlationIdValue": "Correlation ID: {id}", + "correlationIdValue": "کوریلیشن ID: {id}", "detailedPayloadInfo": "پہلے تفصیلی لاگنگ فعال کریں اگر آپ نئے درخواستوں کے لیے چار مرحلوں کے کلائنٹ/فراہم کنندہ پے لوڈ ویو چاہتے ہیں۔", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "سب کاپی کریں", + "copiedAll": "سب کاپی ہو گیا" } }, "proxyLogger": { - "filterAll": "All", - "filterErrors": "Errors", - "filterSuccess": "Success", - "filterTimeout": "Timeout", - "colStatus": "Status", - "colProxy": "Proxy", + "filterAll": "سبھی", + "filterErrors": "خرابیاں", + "filterSuccess": "کامیاب", + "filterTimeout": "وقت ختم", + "colStatus": "حالت", + "colProxy": "پراکسی", "colTls": "TLS", - "colType": "Type", - "colLevel": "Level", - "colProvider": "Provider", - "colTarget": "Target", - "colLatency": "Latency", - "colClientIp": "Client IP", - "colTime": "Time", - "recording": "Recording", - "paused": "Paused", - "searchPlaceholder": "Search host, provider, target, IP...", - "allTypes": "All Types", - "allLevels": "All Levels", - "allProviders": "All Providers", - "total": "total", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", - "direct": "direct", - "newest": "Newest", - "oldest": "Oldest", - "latencyDesc": "Latency ↓", - "latencyAsc": "Latency ↑", - "refresh": "Refresh", - "columns": "Columns", - "loadingProxyLogs": "Loading proxy logs...", - "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.", - "noMatchingLogs": "No logs match the current filters.", - "tlsFingerprint": "Chrome 124 TLS Fingerprint", + "colType": "قسم", + "colLevel": "سطح", + "colProvider": "فراہم کنندہ", + "colTarget": "ہدف", + "colLatency": "تاخیر", + "colClientIp": "کلائنٹ IP", + "colTime": "وقت", + "recording": "ریکارڈنگ جاری", + "paused": "موقوف", + "searchPlaceholder": "ہوسٹ، فراہم کنندہ، ہدف، IP تلاش کریں...", + "allTypes": "تمام اقسام", + "allLevels": "تمام سطحیں", + "allProviders": "تمام فراہم کنندگان", + "total": "کل", + "ok": "ٹھیک", + "err": "خرابی", + "timeoutShort": "وقت ختم", + "direct": "براہِ راست", + "newest": "تازہ ترین", + "oldest": "قدیم ترین", + "latencyDesc": "تاخیر ↓", + "latencyAsc": "تاخیر ↑", + "refresh": "تازہ کریں", + "columns": "کالمز", + "loadingProxyLogs": "پراکسی لاگز لوڈ ہو رہے ہیں...", + "noProxyLogs": "ابھی تک کوئی پراکسی لاگ موجود نہیں۔ انہیں یہاں دیکھنے کے لیے پراکسیز کو کنفیگر کریں اور API کالز کریں۔", + "noMatchingLogs": "موجودہ فلٹرز سے کوئی لاگ مماثل نہیں ہے۔", + "tlsFingerprint": "Chrome 124 TLS فنگر پرنٹ", "colPublicIp": "پبلک IP" }, "endpointOptions": { - "speech": "Speech", - "search": "Search", - "images": "Images", - "chat": "Chat", - "music": "Music", - "responses": "Responses", - "rerank": "Rerank", - "video": "Video", - "embeddings": "Embeddings", - "transcription": "Transcription" + "speech": "تقریر", + "search": "تلاش", + "images": "تصاویر", + "chat": "چیٹ", + "music": "موسیقی", + "responses": "جوابات", + "rerank": "دوبارہ درجہ بندی", + "video": "ویڈیو", + "embeddings": "ایمبیڈنگز", + "transcription": "نقل نویسی" }, "toolDescriptions": { "cline": "Cline", @@ -11480,122 +11487,122 @@ "kilo": "Kilo" }, "runtime": { - "title": "Runtime", - "description": "Realtime observability — 3-layer resilience + sessions + quota alerts", - "pause": "Pause", - "resume": "Resume", - "refreshNow": "Refresh now", - "kpiSessions": "Sessions", - "kpiCircuits": "Circuits", - "kpiCooldowns": "Cooldowns", - "kpiLockouts": "Lockouts", - "hintStickyBound": "{count} sticky-bound", - "hintRecovering": "{count} recovering", - "hintAllHealthy": "all healthy", - "hintOpen": "open", - "hintConnsCooling": "connections cooling", - "hintModelsBlocked": "models blocked", - "resilienceTitle": "3-Layer Resilience", - "resilienceSubtitle": "Mirrors the documented resilience model", - "providersHealthy": "{percent}% providers healthy", - "layer": "Layer {n}", - "layer1Title": "Provider Circuit Breakers", - "layer1Desc": "Stop traffic to providers failing at the upstream level", - "layer2Title": "Connection Cooldowns", - "layer2Desc": "Skip one bad account/key; other connections keep serving", - "layer3Title": "Model Lockouts", - "layer3Desc": "Per-model rate-limit locks; same connection still serves other models", - "badgeAffectedOf": "{affected} of {total} affected", - "badgeCooling": "{count} cooling", - "badgeLocked": "{count} locked", - "emptyCircuits": "No circuit breakers active yet", - "emptyCooldowns": "No connection cooldowns active", - "emptyLockouts": "No model lockouts", - "moreCooldowns": "+{count} more cooldowns", - "moreLockouts": "+{count} more lockouts", - "feedTitle": "Live Feed", - "feedSubtitle": "Last {count} events", - "feedFilterAll": "All", - "feedFilterCircuits": "Circuits", - "feedFilterCooldowns": "Cooldowns", - "feedFilterLockouts": "Lockouts", - "feedFilterSessions": "Sessions", - "feedFilterQuotas": "Quotas", - "feedClear": "Clear", - "feedEmptyWaiting": "Waiting for events... (polled every 5s)", - "feedEmptyFiltered": "No events match this filter", - "sessionsTitle": "Active Sessions", - "sessionsSubtitle": "Sticky-bound request fingerprints (live)", - "sessionsActive": "{count} active", - "sessionsEmptyTitle": "No active sessions", - "sessionsEmptyHint": "Sessions appear as requests flow through the proxy", - "tblSession": "Session", - "tblAge": "Age", - "tblIdle": "Idle", - "tblReqs": "Reqs", - "tblBoundTo": "Bound to", - "topApiKeys": "Top API keys", - "quotaMonitorsTitle": "Quota Monitors", - "quotaMonitorsSubtitle": "Live quota state per account window", - "openQuota": "Open Quota", - "allQuotasHealthy": "All quotas healthy", - "statusExhausted": "EXHAUSTED", - "statusAlerting": "ALERTING", - "statusError": "ERROR", - "moreSuffix": "+{count} more" + "title": "وقتِ اجرا", + "description": "ریئل ٹائم مشاہدہ — 3 سطحی لچک + سیشنز + کوٹا انتباہات", + "pause": "موقوف کریں", + "resume": "دوبارہ شروع کریں", + "refreshNow": "ابھی تازہ کریں", + "kpiSessions": "سیشنز", + "kpiCircuits": "سرکٹس", + "kpiCooldowns": "وقفۂ بحالی", + "kpiLockouts": "لاک آؤٹس", + "hintStickyBound": "{count} اسٹکی سے منسلک", + "hintRecovering": "{count} بحال ہو رہے ہیں", + "hintAllHealthy": "سب صحت مند ہیں", + "hintOpen": "کھلے ہیں", + "hintConnsCooling": "کنکشنز کول ڈاؤن میں ہیں", + "hintModelsBlocked": "ماڈلز مسدود ہیں", + "resilienceTitle": "3-سطحی لچک پذیری", + "resilienceSubtitle": "دستاویزی لچک پذیری کے ماڈل کی عکاسی کرتا ہے", + "providersHealthy": "{percent}% فراہم کنندگان صحت مند ہیں", + "layer": "سطح {n}", + "layer1Title": "فراہم کنندہ سرکٹ بریکرز", + "layer1Desc": "اپ اسٹریم سطح پر ناکام ہونے والے فراہم کنندگان کی جانب ٹریفک روکیں", + "layer2Title": "کنکشن کول ڈاؤنز", + "layer2Desc": "ایک خراب اکاؤنٹ/کلید کو چھوڑ دیں؛ دیگر کنکشنز سروس فراہم کرتے رہیں گے", + "layer3Title": "ماڈل لاک آؤٹس", + "layer3Desc": "فی ماڈل شرح کی حد کے لاکس؛ وہی کنکشن دیگر ماڈلز کو بدستور سروس فراہم کرتا ہے", + "badgeAffectedOf": "{total} میں سے {affected} متاثر ہیں", + "badgeCooling": "{count} کول ڈاؤن میں ہیں", + "badgeLocked": "{count} مقفل ہیں", + "emptyCircuits": "ابھی کوئی سرکٹ بریکر فعال نہیں", + "emptyCooldowns": "کوئی کنکشن کول ڈاؤن فعال نہیں", + "emptyLockouts": "کوئی ماڈل لاک آؤٹ نہیں", + "moreCooldowns": "+{count} مزید کول ڈاؤنز", + "moreLockouts": "+{count} مزید لاک آؤٹس", + "feedTitle": "لائیو فیڈ", + "feedSubtitle": "آخری {count} واقعات", + "feedFilterAll": "سبھی", + "feedFilterCircuits": "سرکٹس", + "feedFilterCooldowns": "کول ڈاؤنز", + "feedFilterLockouts": "لاک آؤٹس", + "feedFilterSessions": "سیشنز", + "feedFilterQuotas": "کوٹے", + "feedClear": "صاف کریں", + "feedEmptyWaiting": "واقعات کا انتظار ہے... (ہر 5 سیکنڈ بعد پول کیا جاتا ہے)", + "feedEmptyFiltered": "کوئی واقعہ اس فلٹر سے مطابقت نہیں رکھتا", + "sessionsTitle": "فعال سیشنز", + "sessionsSubtitle": "اسٹکی سے منسلک درخواست کے فنگر پرنٹس (لائیو)", + "sessionsActive": "{count} فعال", + "sessionsEmptyTitle": "کوئی فعال سیشن نہیں", + "sessionsEmptyHint": "پراکسی سے درخواستیں گزرنے پر سیشنز ظاہر ہوتے ہیں", + "tblSession": "سیشن", + "tblAge": "مدت", + "tblIdle": "غیر فعال", + "tblReqs": "درخواستیں", + "tblBoundTo": "منسلک بہ", + "topApiKeys": "سرفہرست API کلیدیں", + "quotaMonitorsTitle": "کوٹا مانیٹرز", + "quotaMonitorsSubtitle": "ہر اکاؤنٹ ونڈو کے لیے براہِ راست کوٹا کی حالت", + "openQuota": "کوٹا کھولیں", + "allQuotasHealthy": "تمام کوٹے درست ہیں", + "statusExhausted": "ختم شدہ", + "statusAlerting": "انتباہ جاری", + "statusError": "خرابی", + "moreSuffix": "مزید +{count}" }, "quotaShare": { "weightPercent": "وزن %", - "title": "Quota Sharing", - "description": "Share provider quotas across API keys with % limits", - "newPool": "New pool", + "title": "کوٹا شیئرنگ", + "description": "API کلیدوں کے درمیان فراہم کنندہ کے کوٹے کو % حدود کے ساتھ شیئر کریں", + "newPool": "نیا پول", "betaTitle": "Beta — UI preview.", - "betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.", - "kpiActivePools": "Active pools", - "kpiKeysAllocated": "Keys allocated", - "kpiAvgUnallocated": "Avg unallocated", - "kpiProvidersWithQuota": "Providers w/ quota", - "emptyTitle": "No pools configured", - "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.", - "loading": "Loading…", - "removePool": "Remove pool", - "removeConfirm": "Remove this pool?", - "pool": "Pool", - "used": "used", - "allocationsCount": "Allocations ({count})", - "allocatedFree": "{allocated}% allocated · {free}% free", - "noAllocations": "No keys allocated yet", - "capLabel": "cap {value}", - "notTrackedYet": "(not tracked yet)", - "policy": "Policy", + "betaDescription": "کنفیگریشن localStorage میں محفوظ ہے (ابھی سرور پر مستقل طور پر محفوظ نہیں ہوئی)۔ فی درخواست حد کا نفاذ ابھی proxy pipeline سے منسلک نہیں کیا گیا۔ یہ اسکرین آپ کو کوٹے کی تقسیم ڈیزائن کرنے اور دیکھنے دیتی ہے؛ حقیقی نفاذ آئندہ مرحلے میں DB میں مستقل ذخیرے اور اپ اسٹریم کال انٹرسیپشن کے ساتھ شامل ہوگا۔", + "kpiActivePools": "فعال پولز", + "kpiKeysAllocated": "مختص کردہ کلیدیں", + "kpiAvgUnallocated": "اوسط غیر مختص", + "kpiProvidersWithQuota": "کوٹے والے فراہم کنندگان", + "emptyTitle": "کوئی پول کنفیگر نہیں کیا گیا", + "emptyDescription": "فراہم کنندہ کی کوٹا ونڈو کو % تخصیص کے ساتھ شیئر کرنے کے لیے API کلیدیں تفویض کرنے کا پول بنائیں۔", + "loading": "لوڈ ہو رہا ہے…", + "removePool": "پول ہٹائیں", + "removeConfirm": "یہ پول ہٹا دیں؟", + "pool": "پول", + "used": "استعمال شدہ", + "allocationsCount": "تخصیصات ({count})", + "allocatedFree": "{allocated}% مختص · {free}% خالی", + "noAllocations": "ابھی کوئی کلید مختص نہیں کی گئی", + "capLabel": "حد {value}", + "notTrackedYet": "(ابھی ٹریک نہیں کیا گیا)", + "policy": "پالیسی", "apiKeyColumn": "API کلید", "weightColumn": "وزن", "fairShareShort": "منصفانہ", - "policyHard": "hard", - "policySoft": "soft", - "policyBurst": "burst", - "policyHardHint": "Block when key exhausts allocation", - "policySoftHint": "Allow overflow, alert only", - "policyBurstHint": "Allow burst into free pool", - "editAllocations": "Edit allocations", - "newPoolTitle": "New quota pool", - "providerConnection": "Provider connection (account)", - "selectConnection": "Select a connection…", - "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.", - "quotaWindow": "Quota window", - "selectWindow": "Select a window…", - "alreadyUsedSuffix": "(already used)", - "windowReset": "Reset", - "duplicatePoolError": "A pool for this connection + window already exists", - "cancel": "Cancel", - "createPool": "Create pool", - "editTitle": "Edit allocations", - "noKeysAdded": "No keys allocated. Add one below.", - "totalLabel": "Total: {percent}%", - "totalExceeded": "⚠ exceeds 100%", - "addKey": "+ Add key…", - "equalSplit": "Equal split", - "save": "Save allocations", + "policyHard": "سخت", + "policySoft": "نرم", + "policyBurst": "برسٹ", + "policyHardHint": "کلید کی تخصیص ختم ہونے پر بلاک کریں", + "policySoftHint": "حد سے تجاوز کی اجازت دیں، صرف انتباہ جاری کریں", + "policyBurstHint": "فری پول میں اضافی استعمال کی اجازت دیں", + "editAllocations": "مختصات میں ترمیم کریں", + "newPoolTitle": "نیا کوٹا پول", + "providerConnection": "فراہم کنندہ کا کنکشن (اکاؤنٹ)", + "selectConnection": "ایک کنکشن منتخب کریں…", + "noEligibleConnections": "کوٹا ڈیٹا والا کوئی کنکشن نہیں ہے۔ پہلے /dashboard/quota سے ریفریش کریں۔", + "quotaWindow": "کوٹا ونڈو", + "selectWindow": "ایک ونڈو منتخب کریں…", + "alreadyUsedSuffix": "(پہلے ہی استعمال شدہ)", + "windowReset": "ری سیٹ کریں", + "duplicatePoolError": "اس کنکشن + ونڈو کے لیے ایک پول پہلے ہی موجود ہے", + "cancel": "منسوخ کریں", + "createPool": "پول بنائیں", + "editTitle": "مختصات میں ترمیم کریں", + "noKeysAdded": "کوئی کلید مختص نہیں کی گئی۔ ذیل میں ایک شامل کریں۔", + "totalLabel": "کل: {percent}%", + "totalExceeded": "⚠ 100% سے زیادہ ہے", + "addKey": "+ کلید شامل کریں…", + "equalSplit": "برابر تقسیم", + "save": "مختصات محفوظ کریں", "betaPreviewLabel": "بیٹا - UI پیش نظارہ۔", "betaConfigSavedPrefix": "کنفیگریشن میں محفوظ ہے۔", "betaConfigSavedSuffix": "(ابھی تک سرور پر برقرار نہیں ہے)۔ فی درخواست کیپ انفورسمنٹ ابھی تک پراکسی پائپ لائن میں وائرڈ نہیں ہے۔ یہ اسکرین آپ کو کوٹہ کی تقسیم کو ڈیزائن اور تصور کرنے دیتی ہے۔ حقیقی نفاذ DB استقامت اور اپ اسٹریم کال انٹرسیپشن کے ساتھ مستقبل کے اعادہ میں اترے گا۔", @@ -11671,7 +11678,7 @@ "endpointsBaseUrl": "بیس URL", "endpointsCollapse": "سمیٹیں", "endpointsExpand": "پھیلائیں", - "endpointsAnthropicNote": "Anthropic-native", + "endpointsAnthropicNote": "Anthropic-مقامی", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — صرف codex", "betaText": "Quota Share فعال ہے لیکن بگز متوقع ہیں۔ کوئی ملا؟ براہ کرم اس کی اطلاع دیں۔", @@ -11681,43 +11688,43 @@ "deleteGroupHasPools": "اس گروپ میں اب بھی پولز موجود ہیں — پہلے انہیں دوبارہ تفویض کریں یا حذف کریں۔", "ungroupedTitle": "بغیر گروپ کے", "ungroupedHint": "یہ پولز کسی معلوم گروپ کو تفویض نہیں کیے گئے ہیں۔ کسی پول کو حقیقی گروپ میں منتقل کرنے کے لیے اس میں ترمیم کریں۔", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "اس پول کو ہٹایا نہیں جا سکا۔", + "dismiss": "بند کریں" }, "plugins": { - "title": "Plugins", - "description": "Install and manage plugins for extending OmniRoute functionality", - "loading": "Loading plugins...", - "scanning": "Scanning...", - "scanForPlugins": "Scan for Plugins", - "noPlugins": "No plugins installed", - "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.", - "activate": "Activate", - "deactivate": "Deactivate", - "uninstall": "Uninstall", - "uninstallConfirm": "Uninstall plugin \"{name}\"?", - "pluginScanComplete": "Plugin scan complete", - "pluginScanFailed": "Plugin scan failed", - "activated": "{name} activated", - "deactivated": "{name} deactivated", - "activateFailed": "Failed to activate {name}", - "deactivateFailed": "Failed to deactivate {name}", - "uninstalled": "{name} uninstalled", - "uninstallFailed": "Failed to uninstall {name}", - "configure": "Configure: {name}", - "configurePlugin": "Configure", - "noConfigSettings": "This plugin has no configurable settings.", - "saving": "Saving...", - "saveConfiguration": "Save Configuration", - "configurationSaved": "Configuration saved", - "saveConfigurationFailed": "Failed to save configuration", - "pluginNotFound": "Plugin not found", - "version": "Version", - "author": "Author", - "description_label": "Description", - "status": "Status", - "enabled": "Enabled", - "disabled": "Disabled", + "title": "پلگ اِنز", + "description": "OmniRoute کی فعالیت کو وسعت دینے کے لیے پلگ اِنز انسٹال اور منظم کریں", + "loading": "پلگ اِنز لوڈ ہو رہے ہیں...", + "scanning": "اسکین کیا جا رہا ہے...", + "scanForPlugins": "پلگ اِنز کے لیے اسکین کریں", + "noPlugins": "کوئی پلگ اِن انسٹال نہیں ہے", + "noPluginsDescription": "پلگ اِن ڈائریکٹریز ~/.omniroute/plugins/ میں رکھیں اور اسکین پر کلک کریں۔", + "activate": "فعال کریں", + "deactivate": "غیر فعال کریں", + "uninstall": "اَن انسٹال کریں", + "uninstallConfirm": "پلگ اِن \"{name}\" اَن انسٹال کریں؟", + "pluginScanComplete": "پلگ اِن اسکین مکمل ہو گیا", + "pluginScanFailed": "پلگ اِن اسکین ناکام ہو گیا", + "activated": "{name} فعال کر دیا گیا", + "deactivated": "{name} غیر فعال کر دیا گیا", + "activateFailed": "{name} کو فعال کرنے میں ناکامی", + "deactivateFailed": "{name} کو غیر فعال کرنے میں ناکامی", + "uninstalled": "{name} اَن انسٹال کر دیا گیا", + "uninstallFailed": "{name} کو اَن انسٹال کرنے میں ناکامی", + "configure": "ترتیب دیں: {name}", + "configurePlugin": "ترتیب دیں", + "noConfigSettings": "اس پلگ اِن میں قابلِ ترتیب سیٹنگز موجود نہیں ہیں۔", + "saving": "محفوظ کیا جا رہا ہے...", + "saveConfiguration": "کنفیگریشن محفوظ کریں", + "configurationSaved": "کنفیگریشن محفوظ ہو گئی", + "saveConfigurationFailed": "کنفیگریشن محفوظ کرنے میں ناکامی", + "pluginNotFound": "پلگ اِن نہیں ملا", + "version": "ورژن", + "author": "مصنف", + "description_label": "تفصیل", + "status": "حالت", + "enabled": "فعال", + "disabled": "غیر فعال", "installedTab": "انسٹال شدہ", "marketplaceTab": "مارکیٹ پلیس", "marketplaceUrlLabel": "حسب ضرورت مارکیٹ پلیس URL", @@ -11729,7 +11736,7 @@ "verified": "تصدیق شدہ", "install": "انسٹال کریں", "installedFromMarketplace": "پلگ ان {name} انسٹال ہو گیا!", - "hooks": "Hooks" + "hooks": "ہُکس" }, "quotaPlans": { "title": "پلانز اور کوٹہ جات", @@ -11873,7 +11880,7 @@ "regenerating": "دوبارہ تیار کیا جا رہا ہے…", "upstreamCaLabel": "اپ اسٹریم CA سرٹیفکیٹ (کارپوریٹ)", "upstreamCaPlaceholder": "/etc/ssl/certs/corp-ca.pem", - "upstreamCaTest": "Test TLS", + "upstreamCaTest": "TLS کی جانچ کریں", "upstreamCaTestOk": "TLS ٹیسٹ کامیاب رہا", "upstreamCaTestError": "TLS ٹیسٹ ناکام رہا — پاتھ اور CA فائل چیک کریں", "bypassSectionTitle": "بائی پاس فہرست", @@ -12056,8 +12063,8 @@ "pauseBtn": "روکیں", "resumeBtn": "دوبارہ شروع کریں", "clearBtn": "صاف کریں", - "exportHar": "Export .har", - "recordSession": "REC", + "exportHar": ".har برآمد کریں", + "recordSession": "ریکارڈ", "stopSession": "روکیں", "liveBadge": "لائیو", "offlineBadge": "آف لائن", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP ایجنٹس", "phrase": "وہ CLIs جنہیں OmniRoute بطور ایگزیکیوشن بیک اینڈ چلاتا ہے (ریورس فلو)", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "زیادہ تر صارفین اسے نظر انداز کر سکتے ہیں — صرف اس وقت استعمال کریں جب کسی انٹیگریشن کو اس کی ضرورت ہو۔", "flow": "کلائنٹ → OmniRoute → spawn CLI (stdio/ACP) → جواب", "seeOther": "دیکھیں →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "CLI جسے Omni بطور بیک اینڈ استعمال کرتا ہے", "desc": "ریورس ایگزیکیوشن", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → CLI شروع کریں → جواب", "examples": "مثلاً: claude, codex (ACP)" } }, @@ -12233,8 +12240,8 @@ "category": "قسم", "detectionStatus": "شناخت", "configStatus": "کنفیگریشن", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "بنیادی URL", + "apiKeyLabel": "API کلید", "modelMappingLabel": "ماڈل میپنگ", "noActiveProviders": "کوئی فعال پرووائیڈرز نہیں ہیں۔", "noActiveProvidersDesc": "CLI کو کنفیگر کرنے سے پہلے کم از کم 1 پرووائیڈر منسلک کرنے کے لیے Providers پر جائیں۔", @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "ویب ہکس", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "ویب ہُک اینڈ پوائنٹس رجسٹر کریں، ان کی فہرست دیکھیں، جانچ کریں اور ہٹائیں۔ ایونٹ سبسکرپشنز (request.completed, request.failed, quota.exceeded، وغیرہ) ترتیب دیں اور ڈیلیوری کی دوبارہ کوششوں کا نظم کریں۔" }, "omni-mcp": { "name": "MCP سرور", @@ -12390,11 +12397,11 @@ "description": "بنیادی OpenAI کے ساتھ ہم آہنگ انفرنس اینڈ پوائنٹس: چیٹ کمپلیشنز، ایمبیڈنگز، تصاویر، آڈیو (TTS/STT)، ماڈریشنز، ری رینک، اور Responses API۔ AI ایجنٹس کے لیے بنیادی انٹیگریشن سطح۔" }, "cli-serve": { - "name": "CLI: Serve", + "name": "CLI: سَرو", "description": "CLI سے OmniRoute سرور کو اسٹارٹ، اسٹاپ اور ری اسٹارٹ کریں۔ ڈیمن موڈ، پورٹ کنفیگریشن، آٹو ریکوری، سسٹم ٹرے انٹیگریشن، اور ڈیش بورڈ اوپن شارٹ کٹ کا نظم کریں۔" }, "cli-health": { - "name": "CLI: Health", + "name": "CLI: صحت", "description": "CLI سے سرور کی صحت، اجزاء کی حیثیت، اور لائیو میٹرکس چیک کریں۔ سرکٹ بریکرز اور پرووائیڈر کی حیثیت کے ریئل ٹائم ڈیش بورڈ کے لیے `health`، `health components`، اور `health watch` چلائیں۔" }, "cli-providers": { @@ -12589,14 +12596,14 @@ "typeApikey": "API کی", "sortTypeFirst": "سب سے آسان پہلے", "sortTypeFirstHelp": "سائن اپ کی کوشش کے لحاظ سے گروپ کریں (سائن اپ کے بغیر ← OAuth لاگ ان ← API کی)، ہر گروپ کے اندر معیار کی ترتیب کو برقرار رکھتے ہوئے", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "سب سے زیادہ قابلِ اعتماد پہلے", + "sortByReliabilityHelp": "فراہم کنندگان کو منتخب مدت میں کامیاب ہونے والی کالز کے تناسب کے لحاظ سے ترتیب دیں۔ جن فراہم کنندگان کی کالز شرح بتانے کے لیے بہت کم ہوں، وہ ناپے گئے فراہم کنندگان کے نیچے اپنے اسکور کی ترتیب برقرار رکھتے ہیں۔", "typeLegend": "سائن اپ کے بغیر = صفر سیٹ اپ · OAuth لاگ ان = اپنے اکاؤنٹ سے سائن ان کریں · API کی = اپنی کی لائیں یا اس فراہم کنندہ کا فری ٹیئر", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "قابلِ اعتمادیت", + "colReliabilityHelp": "گزشتہ 24 گھنٹوں میں اس فراہم کنندہ کی جانب سے حقیقتاً جواب دی گئی کالز کا تناسب۔ ڈیش کا مطلب ہے کہ شرح بتانے کے لیے اس نے بہت کم ٹریفک سنبھالی۔", + "reliabilitySample": "گزشتہ {hours} گھنٹوں میں {requests} میں سے {successes} کالز کامیاب ہوئیں", + "reliabilityTooFew": "گزشتہ {hours} گھنٹوں میں صرف {requests} کالز — شرح بتانے کے لیے بہت کم", + "reliabilityNoTraffic": "گزشتہ 24 گھنٹوں میں کوئی کال ریکارڈ نہیں ہوئی" }, "discovery": { "title": "فراہم کنندہ کی دریافت", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar معاون", + "description": "لائیو OmniRoute Radar معاون فیڈ کی تصدیق کی گئی", + "criteria": "دستخط شدہ لائیو Radar معاون فیڈ کی تصدیق کریں۔" }, "first-token": { "name": "پہلا ٹوکن", @@ -12848,24 +12855,24 @@ "policies": "پالیسیاں", "runtime": "رن ٹائم", "cli": "CLI", - "health": "Health", - "requiresRestart": "Requires Restart" + "health": "صحت", + "requiresRestart": "دوبارہ شروع کرنا ضروری ہے" }, - "categoryLabel": "Category: {category}", - "caution": "Caution", - "danger": "Danger", - "requiresRestart": "Requires restart", - "source": "Source", + "categoryLabel": "زمرہ: {category}", + "caution": "احتیاط", + "danger": "خطرہ", + "requiresRestart": "دوبارہ شروع کرنا ضروری ہے", + "source": "ماخذ", "ccDiscoveryAliasesEnvWarning": "ماحول کے متغیر (EXPOSE_CC_DISCOVERY_ALIASES) کے ذریعے فعال — یہ نیچے کسی بھی ڈیش بورڈ ٹوگل کو اوور رائیڈ کرتا ہے۔", - "resetFlag": "Reset {label} to default", - "reset": "Reset", - "loadFailed": "Failed to load feature flags", - "updateFailedHttp": "Failed to update flag: HTTP {status}", - "updateFailed": "Failed to update flag", - "restartFailedHttp": "Restart failed: HTTP {status}", - "restartFailed": "Restart failed", - "resetOverridesFailedHttp": "Failed to reset overrides: HTTP {status}", - "resetOverridesFailed": "Failed to reset overrides", + "resetFlag": "{label} کو ڈیفالٹ پر ری سیٹ کریں", + "reset": "ری سیٹ کریں", + "loadFailed": "فیچر فلیگز لوڈ کرنے میں ناکامی", + "updateFailedHttp": "فلیگ اپ ڈیٹ کرنے میں ناکامی: HTTP {status}", + "updateFailed": "فلیگ اپ ڈیٹ کرنے میں ناکامی", + "restartFailedHttp": "دوبارہ شروع کرنے میں ناکامی: HTTP {status}", + "restartFailed": "دوبارہ شروع کرنے میں ناکامی", + "resetOverridesFailedHttp": "اوور رائیڈز ری سیٹ کرنے میں ناکامی: HTTP {status}", + "resetOverridesFailed": "اوور رائیڈز ری سیٹ کرنے میں ناکامی", "restartRequiredCount": "{count, plural, one {# تبدیلی کو} other {# تبدیلیوں کو}} اثر پذیر ہونے کے لیے سرور کو دوبارہ شروع کرنے کی ضرورت ہے۔", "restartRequiredDescription": "یہ فلیگز صرف پروسیس دوبارہ لوڈ ہونے کے بعد لاگو ہوتے ہیں۔ ابھی دوبارہ شروع کریں یا ترمیم جاری رکھیں — زیر التواء فلیگز آپ کی تصدیق تک قطار میں رہیں گے۔", "restartServer": "سرور دوبارہ شروع کریں", @@ -12948,8 +12955,8 @@ "description": "ہر مطابقت پذیر نوڈ کے لیے متعدد کنکشنز کی اجازت دیں۔" }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "سیاقی ونڈو کی جانچیں غیر فعال کریں", + "description": "براہِ راست سنگل ماڈل درخواستوں کے لیے OmniRoute کی مقامی سیاقی ونڈو اور زیادہ سے زیادہ اِن پٹ ٹوکن کی جانچ کو چھوڑ دیں۔ اپ اسٹریم فراہم کنندگان اب بھی اپنی حقیقی حدود نافذ کرتے ہیں۔ پرامپٹ کمپریشن اور آؤٹ پٹ ٹوکن کی حدیں فعال رہتی ہیں۔" }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "کلائنٹس کو فارورڈ کرنے سے پہلے Responses API پاس تھرو اسٹریمز سے اندرونی تبصرہ کے مرحلے (commentary-phase) کے آؤٹ پٹ آئٹمز کو ہٹا دیں۔ خام اپ اسٹریم تبصرہ حاصل کرنے کے لیے اس فلیگ کو غیر فعال کریں۔" @@ -12985,7 +12992,7 @@ "description": "اسٹریم ریکوری کو دوبارہ جواب کی درخواست کرنے اور بائٹس کے پہلے ہی کلائنٹ تک پہنچنے کے بعد اسے جوڑنے کی اجازت دیں۔" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "درمیانی اسٹریم کے تسلسل کو ٹول کال کے لیے محفوظ بنائیں: ٹول کال بھیجے جانے کے بعد کسی منقطع اسٹریم کو کبھی دوبارہ شروع نہ کریں (چاہے وہ اب بھی جاری ہو یا پہلے ہی مکمل ہو چکی ہو)، اور دوبارہ کوشش کا پورا بجٹ استعمال کرنے کے بجائے ایک خالی تسلسل کے بعد رک جائیں۔" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "جب اسٹریم کوئی مفید فریم بھیجنے سے پہلے بند ہو جائے اور اسی کنکشن پر محدود دوبارہ کوشش ختم ہو چکی ہو تو ایک بار کسی ہم رشتہ کنکشن پر فیل اوور کریں۔ قابلِ استعمال ہم رشتہ کنکشن نہ ہونے پر اصل early-EOF خرابی واپس کی جاتی ہے۔ بند: دوبارہ کوشش کے بعد early-EOF حتمی رہتا ہے۔" @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "اسکلز سینڈ باکس میں نیٹ ورک تک رسائی کو فعال کریں۔" }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "سرور کے زیرِ اختیار ٹول لوپ", + "description": "غیر اسٹریمنگ، سرور کے زیرِ اختیار ٹول کالز اس وقت تک جاری رکھیں جب تک ماڈل کلائنٹ کے قابلِ استعمال جواب نہ دے۔" + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After کا ماخذ", + "description": "مجموعی 429/503 عدم دستیابی کے جوابات میں، جب مستقبل میں دوبارہ کوشش کا کوئی ٹھوس وقت معلوم نہ ہو تو مصنوعی 1s بھیجنے کے بجائے Retry-After شامل نہ کریں، error.retry_after_provenance شامل کریں، اور کومبو ڈرین راستوں پر نثری دوبارہ کوشش کے اشارے پڑھیں۔" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "محفوظ ترجیحی انفرا کی بندشیں بطور 502", + "description": "جب صرف کوٹے کے فال بیک والا ترجیحی ہدف کسی ایسی وجہ سے کومبو روک دے جو ثابت شدہ طور پر کوٹے سے متعلق نہ ہو—یعنی کھلا ہوا پرووائیڈر سرکٹ بریکر یا پیش گوئی کی بنیاد پر لیٹنسی اسکیپ—تو 503 کے بجائے 502 جواب دیں۔" } } }, @@ -13047,7 +13058,7 @@ }, "comboControl": { "title": "کمبو کنٹرول سینٹر", - "unavailable": "Combo Control Center unavailable", + "unavailable": "Combo کنٹرول سینٹر دستیاب نہیں", "backToCombos": "کومبوز پر واپس جائیں", "loadFailed": "کومبو کنٹرول سینٹر لوڈ کرنے میں ناکامی", "state": { @@ -13171,7 +13182,7 @@ "segmentHint": "ہر حصہ = ایک مفت پول · پول ڈی ڈپلیکیٹڈ، ایماندارانہ گنتی (بغیر کسی بڑھی ہوئی ریٹ لمٹ کی حد کے)۔", "boost": "ایک بار $10 OpenRouter ٹاپ اپ کے ساتھ مزید ~{tokens}/ماہ ان لاک کریں (50 → 1000 req/day)", "uncapped": "مستقل طور پر مفت، کوئی شائع شدہ حد نہیں (ریٹ لمیٹڈ) — حقیقی رسائی، ہیڈ لائن میں شمار نہیں:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "علاقائی شناختی جانچ (مثلاً مین لینڈ چین میں حقیقی نام کی تصدیق) کے پیچھے مزید ~{tokens}/ماہ — حقیقی کوٹا، سرخی میں شمار نہیں کیا گیا:", "tosRestricted": "{count, plural, one {# ماڈل} other {# ماڈلز}} ToS-محدود کے طور پر نشان زد — آپ فیصلہ کریں", "provider": "فراہم کنندہ", "model": "ماڈل", @@ -13270,80 +13281,80 @@ "viewFullHistory": "GitHub پر مکمل ہسٹری دیکھیں" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "استدلالی روٹنگ کی پالیسیاں", + "apiKeyTitle": "اس API کلید کے لیے استدلالی روٹنگ", + "subtitle": "کلائنٹ کی معاونت درکار کیے بغیر ماڈلز اور استدلال کی کوشش کو دوبارہ روٹ کریں۔ جب کوئی اصول مطابقت نہ رکھے تو درخواستیں بغیر تبدیلی کے رہتی ہیں۔", + "loadError": "استدلال کے قواعد لوڈ نہیں کیے جا سکے۔", + "saveError": "قاعدہ غیر معتبر ہے یا محفوظ نہیں کیا جا سکا۔", + "saved": "استدلال کا قاعدہ محفوظ ہو گیا۔", + "deleteConfirm": "کیا یہ استدلالی قاعدہ حذف کرنا ہے؟", + "deleteError": "استدلال کا قاعدہ حذف نہیں کیا جا سکا۔", + "empty": "کوئی مماثل استدلالی قواعد ترتیب نہیں دیے گئے۔", + "all": "سبھی", + "any": "کوئی بھی", + "enabled": "فعال", + "disabled": "غیر فعال", + "filterSearch": "قواعد تلاش کریں", + "filterScope": "دائرۂ کار کے لحاظ سے فلٹر کریں", + "filterStatus": "حیثیت کے لحاظ سے فلٹر کریں", + "allModels": "تمام ماڈلز", + "keepModel": "ماڈل برقرار رکھیں", + "otherModel": "دوسرا ماڈل", + "combo": "کومبو", + "priorityShort": "ترجیح {value}", + "toggleAria": "{name} کو فعال کریں", + "edit": "ترمیم کریں", + "delete": "حذف کریں", + "name": "نام", + "description": "تفصیل", + "scopeLabel": "دائرۂ کار", + "apiKey": "API کلید", + "sourceCombo": "ماخذ کومبو", + "connection": "کنکشن", + "sourceModel": "ماخذ ماڈل یا وائلڈ کارڈ", + "sourceModelOptional": "خالی = تمام ماڈلز", + "sourceModelExample": "مثلاً gpt-5*", + "sourceEffort": "ماخذ کوشش", + "missing": "متعین نہیں", + "signalOnly": "غیر منفصل استدلالی سگنل", + "requestTags": "درخواست کے ٹیگز", + "requestTagsExample": "کوڈنگ، داخلی", + "tagMode": "ٹیگ کی مماثلت", + "effortMode": "کوشش کا موڈ", + "targetEffort": "ہدفی کوشش", + "routingTarget": "روٹنگ کا ہدف", + "targetModel": "ہدفی ماڈل", + "targetCombo": "ہدف کومبو", + "budgetAction": "تھنکنگ بجٹ", + "budgetTokens": "بجٹ ٹوکنز", + "priority": "ترجیح", + "saveChanges": "تبدیلیاں محفوظ کریں", + "add": "قاعدہ شامل کریں", + "cancel": "منسوخ کریں", + "simulateTitle": "قاعدے کی نقل آزمائیں", + "model": "ماڈل", + "effort": "کوشش", + "transport": "ٹرانسپورٹ", + "simulate": "اپ اسٹریم کے بغیر نقل آزمائیں", + "extendedComboWarning": "روٹنگ کے دوران ہر کومبو ہدف کے لیے Max/Ultra کی الگ سے توثیق کی جاتی ہے۔", + "extendedUnknownWarning": "Max/Ultra سپورٹ کی تصدیق کے لیے ہدف ماڈل درج کریں۔", + "extendedUnsupportedWarning": "صرف موزوں Codex GPT-5.6 ماڈلز کے بارے میں معلوم ہے کہ وہ Max/Ultra کو سپورٹ کرتے ہیں۔ نامعلوم کسٹم ماڈلز کو سرور انتباہ کے ساتھ قبول کرتا ہے۔", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "عالمی", + "apiKey": "API کلید", + "combo": "کومبو", + "model": "ماڈل", + "connection": "کنکشن" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "کلائنٹ سے وراثت میں لیں", + "default": "ڈیفالٹ استعمال کریں", + "force": "لاگو کریں" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "برقرار رکھیں", + "remove": "ہٹائیں", + "set": "مقررہ قدر سیٹ کریں" } }, "chaosConfig": { @@ -13424,92 +13435,92 @@ "tierLive": "براہ راست (حقیقی وقت)", "tierCommunity": "کمیونٹی (30 دن کی تاخیر)", "activateTitle": "ریڈار کو چالو کریں", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "Community اور لائیو رسائی کا موازنہ کریں، سمجھیں کہ آپ کی انسٹالیشن کن چیزوں کا تبادلہ کرتی ہے، پھر Radar کو فعال کرنے کا طریقہ منتخب کریں۔", + "accessScaleTitle": "فعال کرنے سے پہلے Radar کی رسائی کو سمجھیں", + "accessScaleIntro": "آپ کی رضامندی تک Radar نیٹ ورک پر غیر فعال رہتا ہے۔ ان قواعد کا جائزہ لینے کے بعد Community رسائی منتخب کریں یا ذاتی سپورٹر کلید فعال کریں۔", + "accessCommunityRule": "Community — کسی کلید کی ضرورت نہیں: 30 دن کی تاخیر کے ساتھ مکمل کیٹلاگ۔", + "accessSingleUseRule": "اسٹار + فالو — GitHub OAuth کے ذریعے دونوں کی تصدیق کے بعد، آپ کے GitHub اکاؤنٹ کو لائیو کیٹلاگ پڑھنے کی ایک بار رسائی ملتی ہے؛ اس کے بعد رسائی دوبارہ Community پر آ جاتی ہے۔ اس اکاؤنٹ کے لیے یہ یک وقتی رسائی دوبارہ جاری نہیں کی جا سکتی۔", + "accessContributorRule": "کنٹریبیوٹرز — ضم شدہ PRs، commits اور lines صرف ہفتہ وار درجہ بندی کی ترتیب طے کرتے ہیں۔ سرفہرست 10 کو 365 دن، 11–100 رینک والوں کو 90 دن ملتے ہیں؛ سرفہرست 100 سے باہر کے کنٹریبیوٹرز کو PR کی تعداد سے قطع نظر کوئی رسائی نہیں ملتی۔ درجہ بندی سے نکلنے پر پہلے سے دی گئی مدت کبھی کم نہیں ہوتی۔", + "accessSupporterRule": "سپورٹرز — یک وقتی خریداری سے 6 ماہ، 1 سال یا تاحیات مدت ملتی ہے اور کوئی خودکار تجدید نہیں ہوتی۔ خریداریاں، عطیات، کنٹریبیوٹر کی مدتیں اور دستی طور پر دی گئی مدت جمع ہوتی رہتی ہیں؛ تاحیات رسائی ہمیشہ غالب رہتی ہے۔", + "accessUseTitle": "ذاتی استعمال، بازیابی اور جائزہ", + "accessInstallationRule": "ذاتی لائسنس — کلید کو ایک وقت میں صرف ایک فعال انسٹالیشن پر استعمال کریں۔ OmniRoute ہارڈویئر کا فنگر پرنٹ نہیں بناتا۔ بازیابی، گم شدہ کلید کی میعاد ختم ہونے کی تاریخ ری سیٹ کیے بغیر اسے منسوخ کر کے نئی کلید جاری کرتی ہے۔", + "accessAbuseRule": "غلط استعمال کا جائزہ — 24 گھنٹوں میں چوتھا منفرد IP صرف دستی جائزے کا پرچم بناتا ہے؛ یہ کبھی بھی کسی کلید کو خودکار طور پر بلاک یا منسوخ نہیں کرتا۔", + "accessOffersRule": "لائیو آفرز دستی طور پر منتخب کی جاتی ہیں اور تبدیل یا ختم ہو سکتی ہیں۔", + "privacyTitle": "Radar کن چیزوں کا تبادلہ کرتا ہے", + "privacyDownloadsRule": "ڈاؤن لوڈز — آپ کی انسٹالیشن کو کرپٹوگرافی سے دستخط شدہ کیٹلاگ اور ریفرل میٹا ڈیٹا موصول ہوتا ہے؛ ایک درست لائیو کلید دستخط شدہ آفرز اور Intel کو بھی غیر مقفل کرتی ہے۔", + "privacySendsRule": "ارسال — سرور سائیڈ سنک سپورٹر کلید کو Bearer token کے طور پر بھیجتا ہے، اور HTTPS انفراسٹرکچر کو کنکشن IP موصول ہوتا ہے۔ فیڈ درخواستوں کی گنتی میں دونوں میں سے کوئی قدر اپنی اصل شکل میں محفوظ نہیں کی جاتی: اس میں کلید کے ہیشز، مجموعی استعمال، اور غلط استعمال کے جائزے کے لیے روزانہ تبدیل ہونے والا مختصر IP HMAC رکھا جاتا ہے۔", + "privacyNeverRule": "کبھی جمع نہیں کیا جاتا — پرامپٹس، جوابات، گفتگوئیں، پرووائیڈر کی اسناد، ماڈل ٹریفک، اپ ٹائم، لیٹنسی، اور مقامی پرووائیڈر کنفیگریشن کبھی بھی Radar کو نہیں بھیجے جاتے۔", + "activateButton": "Community فعال کریں", "activating": "چالو ہو رہا ہے...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "کیا آپ کے پاس پہلے سے سپورٹر کلید ہے؟", + "keyInvalidFormatError": "کلید کی شکل درست نہیں۔ اسے \"omr_\" سے شروع ہونا چاہیے، جس کے بعد 40 ہیکس حروف ہوں۔", + "activateWithKeyButton": "سپورٹر فعال کریں", + "changeKeyButton": "کلید تبدیل کریں", + "claimSectionTitle": "ابھی تک سپورٹر کلید نہیں ہے؟", + "contributorButton": "میں ایک معاون ہوں", + "contributorHint": "GitHub OAuth موجودہ ہفتہ وار درجہ بندی چیک کرتا ہے: سرفہرست 10 کو 365 دن اور 11–100 درجہ رکھنے والوں کو 90 دن ملتے ہیں۔ صرف PR کی تعداد کبھی بھی سرفہرست 100 سے باہر رسائی نہیں دیتی۔", + "supporterButton": "پروجیکٹ کی معاونت کریں", + "supporterHint": "ایک بار کی 6 ماہ، 1 سال، اور تاحیات مدت کے اختیارات خودکار طور پر تجدید نہیں ہوتے؛ اہل مدتیں جمع ہوتی رہتی ہیں اور تاحیات مدت کو فوقیت حاصل ہوتی ہے۔", "colProvider": "فراہم کنندہ", "colModel": "ماڈل", "colQuota": "کوٹہ", + "colLimits": "شرح کی حدود", + "trainsOnPrompts": "پرامپٹس پر تربیت کرتا ہے", + "trainsOnPromptsHelp": "اس پرووائیڈر کی شرائط کے مطابق، یہ آپ کے بھیجے گئے پرامپٹس پر تربیت کر سکتا ہے۔ اس بیج کے بغیر ماڈلز یا تو بتاتے ہیں کہ وہ ایسا نہیں کرتے، یا اس بارے میں کوئی دستاویز فراہم نہیں کرتے — بیان کی عدم موجودگی کوئی ضمانت نہیں ہے۔", + "limitsUnknownHelp": "حدود صرف Radar فیڈ کی رپورٹ کردہ ہیں؛ اس اندراج کے لیے کوئی شائع شدہ حدود نہیں", + "contextUnknownHelp": "اس اندراج کے لیے کانٹیکسٹ ونڈو نامعلوم ہے", + "capabilityUnknownHelp": "فیڈ نے صلاحیت رپورٹ نہیں کی", "colContext": "سیاق و سباق", "colCapabilities": "صلاحیتیں", "colTos": "ToS خطرہ", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "نیا", "setupGuide": "سیٹ اپ گائیڈ", "disabledByFeed": "ریڈار فیڈ کی وجہ سے غیر فعال", "capTools": "ٹولز", "capVision": "وژن", "capThinking": "سوچنا", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "کیٹلاگ", + "freeCreditsTab": "مفت کریڈٹس", + "freeCreditsSubtitle": "Radar کے ذریعے ٹریک کیے جانے والے پرووائیڈرز کے ریفرل لنکس — انہیں استعمال کرنے پر آپ کو کوئی اضافی لاگت نہیں آتی اور اس سے OmniRoute کی معاونت ہوتی ہے۔", + "fixedLinksEmpty": "ابھی کوئی ریفرل لنکس دستیاب نہیں۔ اپ ڈیٹس چیک کرنے کے لیے Radar کو سنک کریں۔", + "requiredActionLabel": "کیا کرنا ہے:", + "claimButton": "کریڈٹس حاصل کریں", + "campaignsTitle": "محدود مدت کی مہمات", + "campaignsEmpty": "فی الحال کوئی فعال مہم نہیں — بعد میں دوبارہ چیک کریں۔", + "campaignsUpsellCommunity": "محدود مدت کی مہمات سپورٹرز کے لیے ایک اضافی سہولت ہیں۔ اس صفحے پر موجود تمام مستقل لنکس سب کے لیے مفت رہیں گے۔", + "campaignsValidUntil": "{date} تک مؤثر", + "colActions": "اقدامات", + "localBadge": "مقامی", + "editModel": "ترمیم کریں", + "saveModel": "محفوظ کریں", + "cancelEdit": "منسوخ کریں", + "resetModel": "مقامی تبدیلیاں ری سیٹ کریں", + "hideModel": "چھپائیں", + "restoreModel": "بحال کریں", + "hiddenModelsTitle": "پوشیدہ ماڈلز", + "modelDisplayName": "مقامی ڈسپلے نام", + "modelEnabled": "مقامی طور پر فعال", + "localStateSaveFailed": "مقامی Radar ترتیبات محفوظ نہیں ہو سکیں", + "guidedCombos": "رہنمائی شدہ امتزاج", + "offers": "پیشکشیں", + "intel": "معلومات" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar کی رہنمائی والے کومبوز", + "subtitle": "Radar کے منتخب کردہ مساوی مفت ماڈلز سے ترجیحی فال بیکس بنائیں۔", + "backToRadar": "Radar پر واپس جائیں", + "loading": "کومبو کی تجاویز لوڈ ہو رہی ہیں...", + "familyLabel": "ماڈل فیملی", + "modelsLabel": "ترجیحی ترتیب", + "strategyReason": "ترجیح میں پہلے سب سے بڑا بار بار ملنے والا مفت بجٹ استعمال ہوتا ہے، پھر فعال فراہم کنندگان پر فال بیک کیا جاتا ہے۔", + "generateButton": "کومبو بنائیں", + "generating": "بنایا جا رہا ہے...", + "alreadyCreated": "پہلے ہی بنایا جا چکا ہے", + "created": "کومبو بن گیا", + "noSuggestions": "فی الحال کسی اہل ماڈل فیملی کے کم از کم دو فراہم کنندگان سے فعال کنکشنز موجود نہیں ہیں۔", + "catalogRequired": "منتخب کردہ ماڈل فیملیز لوڈ کرنے کے لیے پہلے Radar کیٹلاگ کو مطابقت پذیر کریں۔", + "loadFailed": "Radar کی کومبو تجاویز لوڈ نہیں ہو سکیں۔", + "createFailed": "کومبو نہیں بنایا جا سکا۔ اپنے فراہم کنندہ کنکشنز کا جائزہ لیں اور دوبارہ کوشش کریں۔" }, "radarSetupPage": { "title": "فراہم کنندہ سیٹ اپ", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "کنکشن مضبوطی", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "آپ کے کنکشنز خودکار طور پر بحال ہو جاتے ہیں", + "reassuranceDetail": "عام طور پر کسی کارروائی کی ضرورت نہیں ہوتی۔ ناکامیوں کے بعد OmniRoute کسی کنکشن کو عارضی طور پر روک دیتا ہے، پھر محفوظ طریقے سے اسے دوبارہ آزماتا ہے۔", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "درخواستیں بھیجی جا سکتی ہیں", + "coolingDown": "جلد دوبارہ کوشش کی جائے گی", + "lockedOut": "آپ کی توجہ درکار ہے" }, "table": { "status": "حیثیت", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "جب ہدف ماڈل میں ضروری صلاحیتیں (نظریات، ٹولز، منظم آؤٹ پٹ، سیاق و سباق کی کھڑکی) نہیں ہوتیں تو بھیجنے سے پہلے درخواستوں کو مسترد کریں۔ یہ براہ راست واحد فراہم کنندہ کی درخواستوں کی حفاظت کرتا ہے جو کمبو-لیئر کی ہم آہنگی کے فلٹر کو نظر انداز کرتی ہیں۔", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "براہ راست واحد ماڈل کی درخواستوں کے لیے OmniRoute کی مقامی context-window اور max-input-token جانچ کو نظر انداز کریں۔ اپ اسٹریم فراہم کنندگان بدستور اپنی اصل حدود نافذ کرتے ہیں۔ Prompt compression اور output-token caps فعال رہتے ہیں۔", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "تلاش کے اعداد و شمار اور حالیہ تلاشوں میں صرف ان providers کو شمار کیا جاتا ہے جن کا کنکشن اب بھی فعال ہو (بغیر کلید والے providers، جیسے duckduckgo-free، ہمیشہ شمار ہوتے ہیں)۔ بند کرنے پر provider id والی ہر محفوظ کردہ تلاش کی قطار برقرار رہتی ہے۔", "publicSystem": { "notFound": { "title": "صفحہ نہیں ملا", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "نگہداشت کی معلومات", "service": "سروس", "unknown": "نامعلوم", - "notAvailable": "n/a", + "notAvailable": "دستیاب نہیں", "providersTracked": "مہیا کنندگان کی نگرانی کی گئی", "circuitBreakerState": "پرووائیڈر سرکٹ بریکر کی حالت", "lastUpdate": "آخری اپ ڈیٹ: {timestamp}", @@ -13853,7 +13864,7 @@ "authorizeImportant": "اہم: آپ کو پہلے اس براؤزر میں trae.ai میں لاگ ان ہونا ضروری ہے۔ اجازت دینے والا صفحہ صرف موجودہ سیشن کی تصدیق کرتا ہے — یہ آپ کو لاگ ان نہیں کر سکتا۔ اگر آپ کو \"لاگ ان ناکام\" نظر آتا ہے تو \"solo.trae.ai کھولیں\" پر کلک کریں، لاگ ان کریں، پھر یہاں واپس آئیں۔", "waitingForAuthorization": "trae.ai کا انتظار کر رہے ہیں…", "authorizeWithBrowser": "براؤزر کے ساتھ اجازت دیں", - "openSoloTrae": "Open solo.trae.ai", + "openSoloTrae": "solo.trae.ai کھولیں", "orPasteManually": "یا ٹوکن کو دستی طور پر پیسٹ کریں", "manualInstructions": "solo.trae.ai میں سائن ان کریں، DevTools → Network کھولیں، کوئی بھی چیٹ پیغام بھیجیں، اور Authorization: Cloud-IDE-JWT {tokenPlaceholder} درخواست ہیڈر سے JWT کاپی کریں۔ JWT کی عمر تقریباً 14 دن ہے۔ اختیاری شناختی فیلڈز اسی درخواست کے جسم میں common_params سے آتی ہیں۔", "accessTokenLabel": "ایکسس ٹوکن (Cloud-IDE-JWT)", @@ -14070,11 +14081,11 @@ "actionApprove": "منصوبہ منظور کریں", "actionCancel": "منسوخ کریں", "actionSeeInGraph": "گراف میں دیکھیں", + "actionRepeat": "دہرائیں", "actionDone": "اقدام لاگو ہو گیا", "actionFailed": "اقدام ناکام: {error}", "detailFailed": "تفصیلات لوڈ کرنے میں ناکامی: {error}", "mirroredInA2A": "A2A میں مطابقت شدہ", - "actionRepeat": "دہرائیں", "repeatConfirm": "تصدیق کے لیے دوبارہ کلک کریں", "repeatDone": "نئی رن بنائی گئی", "repeatUnavailable": "اصل ان پٹ دستیاب نہیں ہے" @@ -14088,57 +14099,57 @@ "networkError": "نیٹ ورک کی خرابی — فراہم کنندہ کی نمائش کی ترتیب کو اپ ڈیٹ نہیں کر سکا" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "حامیوں کی پیشکشیں", + "subtitle": "Radar کی جانب سے سرکاری رعایتیں، کریڈٹس، آزمائشی مدتیں اور جائزہ شدہ شراکت دار فوائد۔", + "backToRadar": "Radar پر واپس جائیں", + "loading": "پیشکشیں لوڈ ہو رہی ہیں...", + "refresh": "پیشکشیں ریفریش کریں", + "refreshing": "ریفریش ہو رہا ہے...", + "loadFailed": "ہم پیشکشیں ریفریش نہیں کر سکے۔ آخری تصدیق شدہ مقامی کیش برقرار رکھا گیا ہے۔", + "empty": "اس وقت کوئی فعال پیشکش دستیاب نہیں ہے۔", + "keyRequiredTitle": "ایک حمایتی کلید درکار ہے", + "keyRequiredDescription": "پیشکشیں Radar کا ایک لائیو فائدہ ہیں۔ Radar اسکرین پر موجودہ حمایتی کلید شامل کریں، اپنی شراکت کار کی حیثیت کی تصدیق کریں، یا کلید حاصل کرنے کے لیے پروجیکٹ کی حمایت کریں۔", + "contributorButton": "میں ایک شراکت کار ہوں", + "supporterButton": "پروجیکٹ کی حمایت کریں", + "partnerBadge": "شراکت دار", + "officialBadge": "آفیشل", + "conditionsLabel": "شرائط:", + "validUntil": "{date} تک مؤثر", + "noExpiry": "میعاد ختم ہونے کی کوئی تاریخ اعلان نہیں کی گئی", + "openOffer": "پیشکش دیکھیں", + "trialDays": "{days, plural, one {# دن} other {# دن}}" }, "radarIntelPage": { "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "subtitle": "Radar کی ملکیتی ELO درجہ بندیاں اور کیٹلاگ میں حقائق پر مبنی تبدیلیاں۔", + "backToRadar": "Radar پر واپس جائیں", + "loading": "Intel لوڈ ہو رہا ہے...", + "refresh": "Intel ریفریش کریں", + "syncing": "ریفریش ہو رہا ہے...", + "loadFailed": "ہم Intel ریفریش نہیں کر سکے۔ آخری تصدیق شدہ مقامی کیش محفوظ رکھا گیا ہے۔", + "empty": "ابھی تک کوئی تصدیق شدہ Intel اسنیپ شاٹ دستیاب نہیں ہے۔", + "supporterBadge": "Radar حمایتی", + "methodology": "طریقۂ کار", + "eloMethod": "ELO، ابتدائی {initial}، K={factor}", + "freshness": "کیٹلاگ کی تازگی", + "ageDays": "{days, plural, one {# دن پرانا} other {# دن پرانا}}", + "trend": "کیٹلاگ کا رجحان", + "modelDelta": "{current} ماڈلز، +{added} / -{removed}", + "ranking": "ماڈل کی درجہ بندی", + "noRankings": "ابھی تک کوئی تصدیق شدہ موازنہ دستیاب نہیں ہے۔", + "model": "ماڈل", + "category": "زمرہ", + "rating": "ریٹنگ", + "matches": "مقابلے", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "تازہ", + "aging": "پرانا ہو رہا ہے", + "stale": "فرسودہ" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "بڑھ رہا ہے", + "stable": "مستحکم", + "shrinking": "سکڑ رہا ہے" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "درخواست فراہم کنندہ کے سیاق و سباق کی ونڈو سے تجاوز کر گئی ہے" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference، OmniRoute کا اوپن سورس دوست ہے", + "description": "لاگت کے لحاظ سے درجہ بند ایک گیٹ وے جو درجنوں جدید ترین ماڈلز کو ایک OpenAI سے ہم آہنگ اینڈ پوائنٹ کے ذریعے دوبارہ فروخت کرتا ہے — ہر درخواست کو فہرستی قیمت سے کبھی تجاوز کیے بغیر، سب سے سستے اہل فراہم کنندہ تک روٹ کرتا ہے۔", + "cta": "API کلید حاصل کریں", + "partnerLinkNote": "شراکت دار کا لنک", + "dismissAriaLabel": "مسترد کریں" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models کیٹلاگ میں سوچنے کی سطح کی مختلف صورتوں (مثلاً -low، -medium، -high) کی تخلیق غیر فعال کریں۔" } diff --git a/src/i18n/messages/uz.json b/src/i18n/messages/uz.json index 0242835290..af82ed364a 100644 --- a/src/i18n/messages/uz.json +++ b/src/i18n/messages/uz.json @@ -85,7 +85,7 @@ "file": "Fayl", "host": "Xost", "id": "ID", - "import": "Import", + "import": "Import qilish", "limit": "Cheklov", "offset": "Siljish", "open": "Ochish", @@ -348,7 +348,7 @@ "testDesc": "Sinov tavsifi", "chatDesc": "Chat tavsifi", "importSuccess": "Import muvaffaqiyatli amalga oshirildi", - "chat": "Chat", + "chat": "Suhbat", "a2aQuickStartStep1": "A2A tezkor boshlash — 1-qadam", "importFailed": "Import amalga oshmadi", "inputPlaceholder": "Kiritish maydoni uchun joy tutuvchi", @@ -679,7 +679,7 @@ "safeSearchOff": "Xavfsiz qidiruv oʻchiq", "nameHint": "Nom boʻyicha maslahat", "debugToggle": "Nosozliklarni tuzatish tugmasi", - "embedding": "Embedding", + "embedding": "Vektorli ifoda", "issuesLabel": "Muammolar yorligʻi", "optionAny": "Istalgan variant", "maxNestingDepth": "Maksimal ichki joylashuv chuqurligi", @@ -761,7 +761,7 @@ "tierCoverageSubtitle": "Har bir zaxira darajasi uchun sozlangan provayderlar", "batchDetailCopyId": "ID nusxalash", "batchDetailClose": "Yopish", - "batchDetailEndpoint": "Endpoint", + "batchDetailEndpoint": "Yakuniy nuqta", "batchDetailModel": "Model", "batchDetailWindow": "Kontekst oynasi", "batchDetailCreated": "Yaratilgan", @@ -832,7 +832,7 @@ "wizardStep3Validate": "Tekshirish", "wizardStep4Cost": "Narx va yaratish", "wizardProviderLabel": "Provayder", - "wizardEndpointLabel": "Endpoint", + "wizardEndpointLabel": "Yakuniy nuqta", "wizardModelLabel": "Model", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (biz o‘giramiz)", @@ -901,7 +901,7 @@ "batchListRemoveCompleted": "Olib tashlash yakunlandi", "batchListTableStatus": "Holat", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Yakuniy nuqta", "batchListTableModel": "Model", "batchListTableProgress": "Jarayon", "batchListTableCreated": "Yaratilgan", @@ -992,6 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Claude Code shlyuzidagi modelni aniqlash funksiyasi Claude boʻlmagan modellarni roʻyxatga olishi uchun /v1/models manzilida claude/<provider>/<model> akslantirma identifikatorlarini eʼlon qilish. Ogohlantirish: global miqyosda yoqilganda barcha mijozlar uchun katalog yozuvlari sonini ikki baravar oshiradi.", "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> shlyuz taxalluslari uchun asosiy kalit. Yoqilgan (standart): /v1/models fikrlash imkoniyatiga ega har bir mos Claude modeli uchun fikrlamaydigan variantni eʼlon qiladi va soʻrovda yuborilgan no-think/ identifikatori mulohaza yuritish bostirilgan holda haqiqiy modelga qayta moslanadi. Oʻchirilgan: hech qanday variant eʼlon qilinmaydi va no-think/ identifikatori boshqa nomaʼlum model identifikatorlari kabi qabul qilinadi. Bu sozlama yoqilgan paytda har bir modelga xos ModelSpec.noThinkingAlias orqali yoqish/oʻchirish tanlovi hamon amal qiladi.", "featureFlagChatVirtualLanesEnabledDescription": "Provayderga joʻnatish uchun har bir ijarachiga moslashuvchan virtual qabul yoʻlaklarini yoqish (#9654): endi bir ijarachining keskin soʻrovlar oqimi boshqasida 503 xatosini keltirib chiqarmaydi. OMNIROUTE_CHAT_VIRTUAL_LANES muhit oʻzgaruvchisi boshqaruv panelidagi ushbu sozlamadan ustun turadi; oʻzgarishlar server qayta ishga tushirilganda kuchga kiradi.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Boshqaruv panelidagi provayder sahifalari: Bepul nishonini faqat provayder qo‘llab-quvvatlaydigan signallarda ko‘rsating — hujjatlashtirilgan bepul tarifi bo‘lmagan ro‘yxatdan o‘tgan provayderlar uchun ko‘rsatiladigan nomga asoslangan evristika, mantiqiy bo‘lmagan bepul maydonlar va :free suffikslari hisobga olinmaydi. O‘chirilsa, tarixiy nishon qoidasi saqlanadi.", + "featureFlagProxySkipRecentlyFailedDescription": "Proksi-pullar va opencode’ning har bir hisob bo‘yicha aylantirish mexanizmi hozirgina ishlamay qolgan proksini (TCP tekshiruvini rad etgan yoki u orqali 429 javobi olingan) har bir jarayon uchun takroriy urinish sayin ikki baravar oshib, belgilangan chegaragacha yetadigan muddat davomida qayta taqdim etmaydi. Proksi holati yozib qo‘yilmaydi; barcha nomzodlar chetga surilsa, tanlov o‘zgarmaydi. Standart holatda o‘chiq: tanlash tartibi oddiy aylantirish bilan aynan bir xil.", + "featureFlagProxyPoolEgressObservationDescription": "Boshqaruv panelida proksi-pul ostida so‘nggi 24 soat ichida uning a’zolariga nechta kuzatilgan chiquvchi IP xizmat ko‘rsatgani, ulardan nechta ulanish foydalangani va bitta IP ortida kuzatilgan eng katta sonni ko‘rsating. Faqat o‘qish uchun mo‘ljallangan, proksi jurnalidan hisoblanadi va yo‘naltirish uchun hech qachon ishlatilmaydi. Standart holatda o‘chiq: pul muharriri o‘zgarmaydi va kuzatuv marshruti null javobini qaytaradi.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Proksi holatini tekshirish jarayonida nishon rad etgan tekshiruv (401/403/429: proksi uzatdi, manzil esa ushbu chiquvchi IP’ni rad etdi) xizmat ko‘rsatilgan tekshiruv kabi proksining ketma-ket muvaffaqiyatsizliklar hisoblagichini tiklashiga ruxsat bering. Standart holatda o‘chiq: rad etish neytral bo‘lib qoladi va hisoblagichni saqlaydi. 5xx har ikki holatda ham noaniq bo‘lib qoladi, rad etish esa proksini hech qachon olib tashlamaydi, o‘chirib qo‘ymaydi yoki qayta faollashtirmaydi.", "sidebar": { "home": "Bosh sahifa", "dashboard": "Boshqaruv paneli", @@ -1271,7 +1275,7 @@ "systemGroup": "Tizim", "costsOverview": "Umumiy koʻrinish", "costsOverviewSubtitle": "Umumlashtirilgan xarajatlar tahlili", - "agentBridge": "Agent Bridge", + "agentBridge": "Agent ko‘prigi", "agentBridgeSubtitle": "IDE agenti trafigini tutib olish", "trafficInspector": "Trafik inspektori", "trafficInspectorSubtitle": "Ilovalaringizdan keladigan soʻrov va javob trafigini tekshirish", @@ -1323,7 +1327,7 @@ "name": "Nomi", "namePlaceholder": "Ishlab chiqarish muhitini kuzatish", "unnamedWebhook": "Nomsiz vebhuk", - "url": "Endpoint URL", + "url": "Endpoint URL manzili", "events": "Hodisalar", "allEvents": "Barcha hodisalar", "secret": "Maxfiy kalit", @@ -1712,7 +1716,7 @@ "cliCode": "CLI kodi", "cliAgents": "CLI agentlari", "acpAgents": "ACP agentlari", - "endpoint": "Endpoint", + "endpoint": "Yakuniy nuqta", "apiManager": "API menejeri", "context": "Kontekst", "compression": "Siqish", @@ -1741,7 +1745,7 @@ "chaos": "Xaos", "cloudAgents": "Bulut agentlari", "live": "Jonli", - "studio": "Studio", + "studio": "Studiya", "aggressive": "Tajovuzkor", "caveman": "G‘or odami", "ccr": "CCR", @@ -2203,7 +2207,7 @@ "model": "Model", "account": "Hisob", "connection": "Ulanish", - "combo": "Combo", + "combo": "Kombinatsiya", "routeStep": "Qadam", "tokens": "Tokenlar", "notAvailable": "mavjud emas", @@ -2462,7 +2466,7 @@ "videoDescription": "ComfyUI yoki SD WebUI orqali AnimateDiff, Stable Video Diffusion yordamida videolar yarating.", "musicDescription": "ComfyUI orqali Stable Audio Open yoki MusicGen yordamida musiqa yarating.", "kinds": { - "embedding": "Embedding", + "embedding": "Vektorlashtirish", "image": "Tasvir", "imageToText": "Tasvirdan matnga", "tts": "Matndan nutqqa", @@ -2660,7 +2664,7 @@ "httpError": "Xato {status}", "failed": "Bajarilmadi", "requestFailed": "So‘rov bajarilmadi", - "embedding": "Embedding", + "embedding": "Vektorlashtirish", "embeddingSample": "Salom, dunyo!", "image": "Rasm", "imageSample": "Quyosh botishidagi togʻlar aks etgan sokin manzara", @@ -2713,7 +2717,7 @@ "ccOnboardingTitle": "Shlyuz modellarini aniqlash uchun settings.json", "ccOnboardingCopy": "Nusxalash", "ccOnboardingCopied": "Nusxalandi", - "ccOnboardingKeyPlaceholder": "''", + "ccOnboardingKeyPlaceholder": "''", "ccOnboardingWindowNote": "Claude Code oʻzi tanimaydigan har qanday model identifikatori uchun 200K kontekst oynasini nazarda tutadi. Haqiqiy oynasi boshqacha boʻlgan model uchun avtomatik ixchamlashtirish juda erta ishga tushmasligi uchun uning tagiga CLAUDE_CODE_AUTO_COMPACT_WINDOW parametrini qoʻshing.", "failedSave": "Saqlab boʻlmadi", "profileSyncTitle": "CLI profillarini avtomatik sinxronlash", @@ -3978,7 +3982,7 @@ "providerModelsTitle": "{provider} — Modellar", "noModelsForProvider": "Bu provayder uchun hech qanday model mavjud emas.", "chat": "Chat", - "embedding": "Embedding", + "embedding": "Vektorlashtirish", "image": "Tasvir", "custom": "maxsus", "modelsCount": "{count, plural, one {# ta model} other {# ta model}}", @@ -4123,7 +4127,7 @@ "vscodeAliasDescriptionError": "Bu seansda CLI kalitlarini yuklab boʻlmagani sababli vaqtinchalik URL manzillari koʻrsatilmoqda.", "vscodeAliasDescriptionLoading": "CLI kalitlari yuklanmoqda. Kalit mavjud boʻlguncha vaqtinchalik URL manzillari koʻrsatiladi.", "vscodeAliasDescriptionPlaceholder": "Vaqtinchalik URL manzillari koʻrsatilmoqda. TOKEN oʻrnini almashtirish uchun CLI Tools ichida API kalitini yarating yoki faollashtiring.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "CLI vositalari", "vscodeAliasBaseLabel": "VS Code asosiy URL manzili", "vscodeAliasModelsLabel": "VS Code modellari", "vscodeAliasChatLabel": "VS Code chati", @@ -4429,7 +4433,7 @@ "reindexFailed": "Qayta indekslashni boshlab bo‘lmadi", "keywordLabel": "Kalit so‘z (FTS5)", "keywordReason": "Kalit so‘z bo‘yicha qidiruv har doim mavjud", - "embeddingLabel": "Embedding", + "embeddingLabel": "Vektorlashtirish", "vectorStoreLabel": "Vektorlar ombori", "qdrantLabel": "Qdrant", "rerankLabel": "Qayta saralash", @@ -4470,7 +4474,7 @@ "simulate": "Sinab ko‘rish", "resultsTitle": "{count} ta natija", "resolutionTitle": "Qidiruv yechimi", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Vektorlashtirish", "resolutionStore": "Vektor ombori", "resolutionStrategy": "Qo‘llangan strategiya", "rerankApplied": "Qayta saralash qo‘llandi", @@ -4603,7 +4607,7 @@ "enabledSkills": "Yoqilgan", "totalExecutions": "Bajarilishlar", "successRate": "Muvaffaqiyat darajasi", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Bozor", "applyFilters": "Filtrlarni qo‘llash", "popularDefaultsLabel": "Tanlangan provayder uchun standart ommaboplik holati:", "onMode": "YOQILGAN", @@ -4837,7 +4841,7 @@ "pid": "PID", "lastIntercept": "Oxirgi ushlab qolish", "target": "Maqsad", - "host": "Host", + "host": "Xost", "localPort": "Mahalliy port", "endpoints": "Yakuniy nuqtalar", "enabled": "Yoqilgan", @@ -5499,7 +5503,7 @@ "targetFormatHint": "Yuqori oqimdagi uzatish formatini almashtiring. OpenAI bilan mos provayderlarni (masalan, opencode-go) /v1/messages endpointi orqali yoʻnaltirish uchun 'Anthropic Messages'dan foydalaning.", "targetFormatAuto": "Standart (avtomatik)", "targetFormatGemini": "Gemini", - "targetFormatAntigravity": "Antigravity", + "targetFormatAntigravity": "Antigravitatsiya", "contextWindowOverrideLabel": "Kontekst oynasini qo‘lda belgilash", "contextWindowOverridePlaceholder": "masalan, 131072", "contextWindowOverrideHint": "Provayder noto‘g‘ri ma’lumot berganda ushbu modelning haqiqiy kontekst oynasini (tokenlarda) qo‘lda belgilang. Bu qiymat avtomatik aniqlangan yoki katalogdagi qiymatlardan ustun turadi va kombinatsiyalangan marshrutlashda modelning chiqarib tashlanishiga yo‘l qo‘ymaydi.", @@ -5797,7 +5801,7 @@ "ccCompatibleSummarizeThinkingDescription": "Qo‘llab-quvvatlanadigan Claude modellari ko‘rinadigan fikrlash deltalarini oqim orqali uzatishi uchun CC Compatible fikrlash so‘rovlariga `display: \"summarized\"` qo‘shadi.", "ccCompatibleSummarizeThinkingLabel": "Umumlashtirilgan fikrlash ko‘rinishini yoqish", "ccCompatibleDetailsTitle": "CC-compatible relay tafsilotlari", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "CC bilan mos", "ccCompatibleModelsDescription": "CC-compatible relay’lar modellar ro‘yxatini taqdim etmaydi. Relay qabul qiladigan Claude model ID’larini qo‘shing.", "ccCompatibleNameHint": "Faqat Claude Code uchun mo‘ljallangan ushbu relay’ning ko‘rsatiladigan nomi.", "ccCompatibleNamePlaceholder": "CC Relay Production", @@ -6420,7 +6424,7 @@ "codexServiceModeUpdated": "Codex xizmat rejimi yangilandi", "codexServiceTierActive": "Codex {tier} xizmat darajasi faol", "codexTierFastLabel": "Tez", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Moslashuvchan", "commandCodeApplyFailed": "Command Code autentifikatsiyasini qoʻllab bo'lmadi", "commandCodeApplyingApproval": "Brauzerda tasdiqlandi, qoʻllanmoqda…", "commandCodeApplyingKey": "Brauzerda tasdiqlangan kalit qoʻllanmoqda…", @@ -6474,7 +6478,7 @@ "savedModelEndpointSettings": "Model endpointi sozlamalari saqlandi", "searchByModelAria": "Model boʻyicha qidirish", "selectSupportedEndpoint": "Kamida bitta qoʻllab-quvvatlanadigan endpointni tanlang", - "antigravityClientProfileHarness": "Harness / CLI" + "antigravityClientProfileHarness": "Sinov vositasi / CLI" }, "settings": { "title": "Sozlamalar", @@ -6944,7 +6948,7 @@ "proxyFreePoolAddSelected": "Tanlanganlarni pulga qo‘shish", "proxyFreePoolAddVisible": "Barcha ko‘rinib turganlarini pulga qo‘shish", "proxyFreePoolSource": "Manba", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Xost:Port", "proxyFreePoolType": "Tur", "proxyFreePoolCountry": "Mamlakat", "proxyFreePoolQuality": "Sifat", @@ -7881,7 +7885,7 @@ "description": "Oxirgi foydalanuvchi soʻroviga nisbatan gaplarni ajratib baholash." }, "caveman": { - "label": "Caveman", + "label": "Gʻor odami", "description": "Qoidalarga asoslangan nasriy matnni siqish." }, "aggressive": { @@ -8347,14 +8351,14 @@ "oneproxyClearAllConfirm": "Barcha 1proxy proksilarini tozalaysizmi?", "memorySkillsSkillsmpDescription": "Marketpleysdan ko‘nikmalarni topish va o‘rnatish uchun SkillsMP xizmatiga ulaning.", "memorySkillsActiveProviderDescription": "Ko‘nikmalar sahifasi qidirish va o‘rnatish uchun qaysi provayderdan foydalanishini tanlang.", - "memorySkillsSkillsmpProviderTitle": "SkillsMP Marketplace", + "memorySkillsSkillsmpProviderTitle": "SkillsMP bozori", "memorySkillsSkillsmpProviderDescription": "Autentifikatsiyalangan marketpleys (SkillsMP API kalitingizdan foydalanadi).", - "memorySkillsSkillsshProviderTitle": "skills.sh Directory", + "memorySkillsSkillsshProviderTitle": "skills.sh katalogi", "memorySkillsSkillsshProviderDescription": "Ochiq katalog provayderi (API kaliti talab qilinmaydi).", "routingCcBridgeCatalogName": "Anthropic bilan mos CC ko‘prigi", "routingClaudeProviderName": "Claude (OAuth)", "routingClaudeProviderDescription": "OAuth orqali berilgan tokenlarga ega mahalliy Claude provayderi.", - "routingCcBridgeName": "Claude-Code Bridge", + "routingCcBridgeName": "Claude-Code ko‘prigi", "routingCcBridgeDescription": "API kalitlaridan foydalanadigan retranslyatsiya endpointlari (anthropic-compatible-cc-*).", "routingCustomProviderDescription": "Maxsus provayder.", "routingUnknownOpKind": "Noma’lum operatsiya turi: {kind}", @@ -8378,7 +8382,7 @@ "qdrantCollection": "Toʻplam" }, "contextRtk": { - "title": "RTK Engine", + "title": "RTK mexanizmi", "description": "Vosita chiqishi, terminal jurnallari va yigʻish natijalari uchun buyruqni hisobga oluvchi siqish.", "enabled": "Yoqilgan", "intensity": "Intensivlik", @@ -8904,7 +8908,7 @@ "save": "Saqlash" }, "contextCaveman": { - "title": "Caveman Engine", + "title": "Caveman mexanizmi", "description": "Qoidalarga asoslangan xabarlarni siqish, til paketlari, tahlil va chiqish rejimi boshqaruvlari.", "advancedConfig": "Kengaytirilgan konfiguratsiya", "advancedConfigDesc": "Siqish jarayonini nozik sozlash", @@ -9174,12 +9178,12 @@ "uniqueEndpoints": "Noyob endpointlar", "routeDetails": "Yoʻnalish tafsilotlari", "comboBadge": "Kombinatsiya", - "routeEndpointLabel": "Endpoint", + "routeEndpointLabel": "Yakuniy nuqta", "routeConnectionLabel": "Ulanish", "scenarioVision": "Koʻrish (tasvirni tushunish)", "scenarioSchemaCoercion": "Sxemani majburiy moslashtirish (tuzilmaviy chiqish)", "techniques": "Usullar:", - "friendlyTitle": "Translator", + "friendlyTitle": "Tarjimon", "friendlySubtitle": "Mavjud ilovangizdan istalgan provayder bilan — kodni qayta yozmasdan foydalaning.", "conceptHeadline": "Ilovangiz bitta API «tilida» soʻzlashadi. Translator uni boshqa provayderdan foydalanish uchun oʻzgartiradi.", "conceptDiagramAppLabel": "Ilovangiz", @@ -9339,7 +9343,7 @@ "evaluateStepDescription": "Javoblar kutilgan mezonlar bilan taqqoslanadi. Har bir holat bo‘yicha o‘tgan/o‘tmagan natijani, kechikish ko‘rsatkichlarini va batafsil fikr-mulohazalarni ko‘ring.", "evalsStrategyContainsLabel": "O‘z ichiga oladi", "evalsStrategyExactLabel": "Aniq moslik", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Muntazam ifoda", "evalsStrategyCustomLabel": "Maxsus mantiq", "evalsStrategyContainsDescription": "LLM chiqishi kutilgan quyi satrni o‘z ichiga olishini tekshiradi.", "evalsStrategyExactDescription": "LLM chiqishi kutilgan qiymatga aynan mos kelishini tekshiradi.", @@ -9468,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "Bepul", - "tierLite": "Lite", + "tierLite": "Yengil", "tierUnknown": "Nomaʼlum", "statTotal": "Jami", "statCritical": "Jiddiy", @@ -9966,7 +9970,7 @@ "howItWorksDescription": "Ma’lumotlar ilovangizdan aqlli yo‘naltirish qatlamimiz orqali vazifa uchun eng mos provayderga uzluksiz uzatiladi.", "howItWorksStep1Title": "1. CLI va SDKlar", "howItWorksStep1Description": "Soʻrovlaringiz sevimli vositalaringiz yoki yagona SDKmizdan boshlanadi. Faqat asosiy URLni oʻzgartiring.", - "howItWorksStep2Title": "2. OmniRoute Hub", + "howItWorksStep2Title": "2. OmniRoute markazi", "howItWorksStep2Description": "Mexanizmimiz promptni tahlil qiladi, provayder holatini tekshiradi va eng past kechikish yoki xarajat asosida yoʻnaltiradi.", "howItWorksStep3Title": "3. AI provayderlari", "howItWorksStep3Description": "Soʻrov OpenAI, Anthropic, Gemini yoki boshqalar tomonidan bir zumda bajariladi.", @@ -10256,7 +10260,7 @@ "techUsersSubtitle": "Arxitektura, APIlar va ichki tuzilmani chuqur oʻrganing", "apiExplorerMetadataTitle": "API Explorer — OmniRoute hujjatlari", "apiExplorerMetadataDescription": "Interaktiv API Explorer — OmniRoute soʻrov nuqtalarini real vaqt rejimidagi javoblar bilan jonli sinab koʻring", - "apiExplorerTitle": "API Explorer", + "apiExplorerTitle": "API tadqiqotchisi", "apiExplorerDescription": "OmniRoute soʻrov nuqtalarini jonli sinab koʻring. Soʻrov nuqtasini tanlang, soʻrovingizni sozlang va javobni real vaqt rejimida koʻring.", "apiExplorerSseStarted": "SSE oqimi boshlandi — real vaqt rejimidagi chiqishni terminal/devtools orqali tekshiring.", "apiExplorerError": "Xato: {message}", @@ -10964,21 +10968,21 @@ "strategyLatency": "Kechikish bo‘yicha optimallashtirilgan", "poolMembersLabel": "Pul a’zolari ({count})", "poolNoMembers": "Bu pulda hali proksilar yo‘q.", + "poolEgressObservation": "{connections, plural, one {# ta ulanish} other {# ta ulanish}} tomonidan ishlatilgan {exits, plural, one {# ta chiqish} other {# ta chiqish}} · bitta chiqishda ko‘pi bilan {max} ta · oxirgi {hours} soat", + "poolEgressObservationEmpty": "Oxirgi {hours} soat ichida trafik kuzatilmadi", + "poolEgressObservationHint": "Proksi jurnalidan ushbu vaqt oralig‘i bo‘yicha hisoblangan: bu pul a’zolari uchun kuzatilgan noyob chiquvchi IP manzillar va ulardan foydalangan OmniRoute ulanishlari. «Bitta chiqishda» ayni bir vaqtda emas, balki ushbu vaqt oralig‘ini anglatadi. Har bir IP uchun 429 blokirovkasi faqat bir xil provayder oilasiga mansub ulanishlarni vaqtincha to‘xtatadi.", "poolRemove": "Olib tashlash", "poolRemoveFailed": "Proksini puldan olib tashlab bo‘lmadi", "poolAddLabel": "Proksi qo‘shish", "poolAddMember": "Qo‘shish", "poolAddFailed": "Proksini pulga qo‘shib bo‘lmadi", "poolSelectProxy": "Proksini tanlang…", - "poolSaveFailed": "Pulga biriktirishni saqlab bo‘lmadi", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family." + "poolSaveFailed": "Pulga biriktirishni saqlab bo‘lmadi" }, "playground": { "title": "Model sinov maydoni", "description": "Istalgan modelni bevosita boshqaruv panelidan sinab ko‘ring. Provayder, model va endpoint turini tanlang, so‘ng xom javobni ko‘rish uchun so‘rov yuboring.", - "endpoint": "Endpoint", + "endpoint": "Yakuniy nuqta", "provider": "Provayder", "model": "Model", "accountKey": "Hisob / Kalit", @@ -11021,7 +11025,7 @@ "conversationalChat": "Muloqot chati", "clearChat": "Chatni tozalash", "typeMessagePlaceholder": "Xabar yozing... (yangi qator uchun Shift+Enter)", - "tabChat": "Chat", + "tabChat": "Suhbat", "tabCompare": "Taqqoslash", "tabApi": "API", "tabBuild": "Yaratish", @@ -11128,7 +11132,7 @@ "jsonSchemaEditor": "JSON sxemasi muharriri", "schemaValidated": "Sxema tekshirildi", "validateSchema": "Sxemani tekshirish", - "seed": "Seed", + "seed": "Boshlang‘ich qiymat", "stopSequences": "To‘xtatish ketma-ketliklari", "stopSequencesPlaceholder": "masalan, \"\\n\\n\" yoki \"END\"", "autoProvider": "Avtomatik", @@ -11182,7 +11186,7 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Yakuniy nuqta", "apiKey": "API kaliti", "model": "Model", "voice": "Ovoz", @@ -11210,7 +11214,7 @@ "play": "Ijro etish", "query": "So‘rov", "numResults": "Maksimal natijalar soni", - "prompt": "Prompt", + "prompt": "Ko‘rsatma", "size": "O‘lcham", "duration": "Davomiylik", "question": "Savol", @@ -11285,7 +11289,7 @@ "refresh": "Yangilash", "columnsLabel": "Ustunlar", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "YUQORI", "semantic": "Semantik", "upstream": "Yuqori oqim", "semanticCacheHit": "Semantik kesh mosligi (OmniRoute orqali taqdim etilgan)", @@ -11447,8 +11451,8 @@ "allProviders": "Barcha provayderlar", "total": "jami", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "err": "XATO", + "timeoutShort": "VAQT", "direct": "bevosita", "newest": "Eng yangilari", "oldest": "Eng eskilari", @@ -11466,7 +11470,7 @@ "speech": "Nutq", "search": "Qidiruv", "images": "Tasvirlar", - "chat": "Chat", + "chat": "Suhbat", "music": "Musiqa", "responses": "Javoblar", "rerank": "Qayta tartiblash", @@ -11633,7 +11637,7 @@ "editPoolTitle": "Pulni tahrirlash", "saveChanges": "O‘zgarishlarni saqlash", "wizardStep1Label": "Hisob", - "wizardStep2Label": "Limit", + "wizardStep2Label": "Chegara", "wizardStep3Label": "Kalitlar", "wizardStep1Title": "Provayder ulanishini tanlang", "wizardStep1Subtitle": "Ushbu pul kvotani ulashadigan provayder hisobini tanlang, nom va standart siyosatni belgilang.", @@ -11674,8 +11678,8 @@ "endpointsBaseUrl": "Asosiy URL", "endpointsCollapse": "Yig‘ish", "endpointsExpand": "Yoyish", - "endpointsAnthropicNote": "Anthropic-native", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsAnthropicNote": "Anthropic’ga xos", + "endpointsResponsesNote": "OpenAI javoblari — codex/github", "endpointsWsNote": "WebSocket — faqat codex", "betaText": "Quota Share ishlaydi, ammo xatolar bo‘lishi mumkin. Xato topdingizmi? Iltimos, xabar bering.", "betaReportLink": "Muammo haqida xabar berish", @@ -11744,7 +11748,7 @@ "dimensionLabel": "Oʻlchovlar", "addDimension": "Oʻlchov qoʻshish", "removeDimension": "Olib tashlash", - "limitLabel": "Limit", + "limitLabel": "Chegara", "unitOptions": { "percent": "%", "requests": "soʻrovlar", @@ -12168,7 +12172,7 @@ "cliCommon": { "concept": { "code": { - "title": "CLI Code", + "title": "CLI kodi", "phrase": "OmniRoute’ga yo‘naltiriladigan kod vositalari", "flow": "Siz → CLI Code → OmniRoute → Provayder", "seeOther": "Ko‘rish →" @@ -12220,7 +12224,7 @@ "versionNotFound": "topilmadi", "manualConfig": "Qo‘lda sozlash", "installGuide": "O‘rnatish qo‘llanmasi", - "endpointLabel": "Endpoint", + "endpointLabel": "Yakuniy nuqta", "baseUrlFull": "To‘liq Base URL", "baseUrlPartial": "Qisman Base URL", "refreshDetection": "Aniqlashni yangilash", @@ -12236,8 +12240,8 @@ "category": "Tur", "detectionStatus": "Aniqlash", "configStatus": "Sozlama", - "baseUrlLabel": "Base URL", - "apiKeyLabel": "API Key", + "baseUrlLabel": "Asosiy URL", + "apiKeyLabel": "API kaliti", "modelMappingLabel": "Model moslamasi", "noActiveProviders": "Faol providerlar yo‘q.", "noActiveProvidersDesc": "CLI’ni sozlashdan oldin Providers bo‘limiga o‘tib, kamida 1 ta providerni ulang.", @@ -12249,7 +12253,7 @@ "pageSubtitle": "OmniRoute’ga yo‘naltirilgan kod vositalari", "searchPlaceholder": "CLI’ni qidirish…", "filterDetectionLabel": "Aniqlash", - "filterBaseUrlLabel": "Base URL", + "filterBaseUrlLabel": "Asosiy URL", "detectionAll": "Barchasi", "detectionInstalled": "O‘rnatilgan", "detectionNotFound": "Topilmadi", @@ -12413,7 +12417,7 @@ "description": "CLI orqali mavjud AI modellarini so‘rang, model taxalluslari ro‘yxatini ko‘ring va to‘liq modellar katalogini ko‘zdan kechiring. Provayder bo‘yicha filtrlang, imkoniyat bo‘yicha qidiring va model nomi variantlarini aniqlang." }, "cli-chat": { - "name": "CLI: Chat", + "name": "CLI: Suhbat", "description": "CLI orqali chat javoblarini yaratish so‘rovlarini yuboring, javoblarni oqimda oling va interaktiv REPL seansini boshlang. Barcha OmniRoute provayderlari, kombinatsiyalangan marshrutlash va tizim ko‘rsatmasi konfiguratsiyasini qo‘llab-quvvatlaydi." }, "cli-routing": { @@ -12538,7 +12542,7 @@ "categoryConfig": "Sozlamalar", "filterAll": "Barchasi", "coverageLabel": "Qamrov", - "mcpUrl": "MCP URL", + "mcpUrl": "MCP URL manzili", "a2aLink": "A2A", "mcpPrompt": "Agentingizga 37 ta OmniRoute vositasini taqdim etish uchun ushbu MCP endpointini qo‘shing.", "a2aPrompt": "A2A vazifalarini delegatsiya qilishni yoqish uchun ushbu Agent Card’ni orkestratoringizda ro‘yxatdan o‘tkazing.", @@ -12987,6 +12991,12 @@ "STREAM_RECOVERY_MIDSTREAM_ENABLED": { "description": "Oqimni tiklashga javobni qayta soʻrash va baytlar mijozga allaqachon yetib borgandan keyin uni birlashtirishga ruxsat berish." }, + "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { + "description": "Oqim o‘rtasida davom ettirishni tool-call uchun xavfsiz qiling: tool-call yuborilgandan keyin (u hali bajarilayotgan yoki allaqachon tugagan bo‘lsa ham) uzilgan oqimni hech qachon davom ettirmang va qayta urinishlar limitidan to‘liq foydalanish o‘rniga bitta bo‘sh davom ettirishdan keyin to‘xtang." + }, + "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { + "description": "Oqim birorta ham foydali freym chiqarmasdan yopilsa va ayni ulanish uchun cheklangan qayta urinishlar tugasa, bir marta boshqa teng ulanishga o‘tiladi. Foydalanish mumkin bo‘lgan boshqa ulanish bo‘lmasa, dastlabki erta EOF xatosi qaytariladi. O‘chiq: qayta urinishdan so‘ng erta EOF yakuniy xato bo‘lib qoladi." + }, "MODEL_CATALOG_INCLUDE_NAMES": { "description": "/v1/models javoblariga koʻrsatish uchun qulay nom maydonlarini kiritish. Faqat model IDlarini qabul qiladigan mijozlar uchun buni oʻchiring." }, @@ -13025,18 +13035,12 @@ "description": "Model mijoz foydalanishi mumkin boʻlgan javobni qaytarmaguncha oqimsiz server boshqaruvidagi vosita chaqiruvlarini davom ettiring." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths.", - "label": "__MISSING__:Retry-After Provenance" + "label": "Retry-After kelib chiqishi", + "description": "Birlashtirilgan 429/503 mavjud emas javoblarida, kelajakdagi aniq qayta urinish vaqti noma’lum bo‘lsa, sun’iy 1s yuborish o‘rniga Retry-After’ni tashlab qoldiring, error.retry_after_provenance’ni qo‘shing va combo drain yo‘llaridagi matnli qayta urinish ko‘rsatmalarini o‘qing." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip.", - "label": "__MISSING__:Protected-Priority Infra Stops as 502" - }, - "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." - }, - "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { - "description": "__MISSING__:Fail over once to a sibling connection when a stream closes before emitting any useful frame and the bounded same-connection retry is spent. With no usable sibling, the original early-EOF error is returned. Off: early-EOF stays terminal after the retry." + "label": "Himoyalangan ustuvorlik infratuzilmasi to‘xtashlari 502 sifatida", + "description": "Faqat kvota sababli zaxira variantga o‘tadigan ustuvor maqsad combo’ni kvotaga aloqador emasligi isbotlangan sabab — ochiq provider circuit breaker yoki bashoratli kechikish tufayli o‘tkazib yuborish — bilan to‘xtatsa, 503 o‘rniga 502 javobini bering." } } }, @@ -13115,7 +13119,7 @@ "comboHealth": "Kombinatsiya holati", "callLogs": "Chaqiruv jurnallari", "costs": "Xarajatlar", - "playground": "Playground", + "playground": "Sinov maydoni", "nestedCombo": "Ichki kombinatsiya", "modelTarget": "Model maqsadi", "weight": "{value}% vazn", @@ -13573,9 +13577,9 @@ "timeline": { "title": "Uzilish himoyasi holatlari", "window": "Vaqt oraligʻi", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "1 soat", + "window6h": "6 soat", + "window24h": "24 soat", "empty": "Tanlangan vaqt oraligʻida holat oʻzgarishlari yoʻq", "currentState": "Joriy holat", "state": { @@ -13650,6 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Maqsadli modelda zarur imkoniyatlar (tasvirni koʻrish, vositalar, tuzilmaviy chiqish, kontekst oynasi) boʻlmasa, soʻrovlarni yuborishdan oldin rad eting. Bu kombinatsiya qatlamidagi moslik filtrini chetlab oʻtadigan yagona provayderga yoʻnaltirilgan bevosita soʻrovlarni himoya qiladi.", "featureFlagDisableContextWindowChecksDescription": "Yagona modelga yoʻnaltirilgan bevosita soʻrovlar uchun OmniRoute'ning mahalliy kontekst oynasi va maksimal kirish tokenlari tekshiruvini oʻtkazib yuboring. Yuqori darajadagi provayderlar oʻzlarining amaldagi cheklovlarini baribir qoʻllaydi. Promptni siqish va chiqish tokenlari cheklovlari faol qoladi.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Qidiruv statistikasi va so‘nggi qidiruvlarda faqat faol ulanishga ega provayderlar hisobga olinadi (duckduckgo-free kabi kalitsiz provayderlar har doim hisobga olinadi). O‘chirilgan holatda provayder identifikatoriga ega barcha saqlangan qidiruv qatorlari saqlab qolinadi.", "publicSystem": { "notFound": { "title": "Sahifa topilmadi", @@ -14046,9 +14051,9 @@ "filterSources": "Manbalar", "filterProviders": "Provayderlar", "clearFilters": "Filtrlarni tozalash", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Bulut agenti", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Boshqaruvchi", "sourceStale": "{since}dan beri eskirgan", "sourceOffline": "Oflayn", "sourceCollapse": "Yigʻish", @@ -14115,7 +14120,7 @@ "trialDays": "{days, plural, one {# kun} other {# kun}}" }, "radarIntelPage": { - "title": "Radar Intel", + "title": "Radar maʼlumotlari", "subtitle": "Radar’ga tegishli ELO reytinglari va katalogdagi faktik o‘zgarishlar.", "backToRadar": "Radar sahifasiga qaytish", "loading": "Intel yuklanmoqda...", @@ -14160,10 +14165,5 @@ "partnerLinkNote": "Hamkorlik havolasi", "dismissAriaLabel": "Yopish" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models katalogida fikrlash darajasi variantlarini (masalan, -low, -medium, -high) yaratishni o‘chirib qo‘ying.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "__MISSING__:Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "__MISSING__:Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "/v1/models katalogida fikrlash darajasi variantlarini (masalan, -low, -medium, -high) yaratishni o‘chirib qo‘ying." } diff --git a/src/i18n/messages/vi.json b/src/i18n/messages/vi.json index 426c36546d..f1673cbc48 100644 --- a/src/i18n/messages/vi.json +++ b/src/i18n/messages/vi.json @@ -89,7 +89,7 @@ "limit": "Giới hạn", "offset": "Offset", "open": "Mở", - "origin": "Origin", + "origin": "Nguồn gốc", "promptTokens": "Token của prompt", "completionTokens": "Token hoàn thành", "totalTokens": "Tổng số token", @@ -118,7 +118,7 @@ "error_description": "Mô tả lỗi", "code": "Mã", "compatible": "Tương thích", - "chat-completions": "Chat Completions", + "chat-completions": "Hoàn tất trò chuyện", "oauth": "OAuth", "auth_token": "Token xác thực", "crypto": "Mật mã", @@ -209,7 +209,7 @@ "enableCloud": "Bật đám mây", "expirationBannerExpiringSoon": "Thông báo sắp hết hạn", "retry": "Thử lại", - "embeddings": "Embeddings", + "embeddings": "Nhúng", "errorCount": "Số lượng lỗi", "backupReasonManual": "Lý do sao lưu: Thủ công", "safeSearchModerate": "Tìm kiếm an toàn: Trung bình", @@ -527,7 +527,7 @@ "monitoredProviders": "Nhà cung cấp được giám sát", "errors": "Lỗi", "heap": "Heap", - "chatCompletions": "Chat Completions", + "chatCompletions": "Hoàn tất trò chuyện", "exampleTemplatesHint": "Gợi ý mẫu ví dụ", "retryDelayLabel": "Nhãn độ trễ thử lại", "audioTranscription": "Chuyển âm thanh thành văn bản", @@ -679,7 +679,7 @@ "safeSearchOff": "Tắt tìm kiếm an toàn", "nameHint": "Gợi ý tên", "debugToggle": "Bật/tắt gỡ lỗi", - "embedding": "Embedding", + "embedding": "Nhúng", "issuesLabel": "Nhãn vấn đề", "optionAny": "Bất kỳ", "maxNestingDepth": "Độ sâu lồng ghép tối đa", @@ -761,7 +761,7 @@ "tierCoverageSubtitle": "Nhà cung cấp được định cấu hình cho mỗi tầng dự phòng", "batchDetailCopyId": "Sao chép ID", "batchDetailClose": "Đóng", - "batchDetailEndpoint": "Endpoint", + "batchDetailEndpoint": "Điểm cuối", "batchDetailModel": "Mô hình", "batchDetailWindow": "Khung thời gian", "batchDetailCreated": "Đã tạo", @@ -784,7 +784,7 @@ "batchFileDetailLoadError": "Lỗi khi tải nội dung tập tin", "batchFilesListSearchPlaceholder": "Tìm kiếm theo ID hoặc tên tập tin…", "batchFilesListFilesTable": "Tập tin", - "batchFilesCount": "{count, plural, one {# file} other {# files}}", + "batchFilesCount": "{count, plural, one {# tệp} other {# tệp}}", "batchFilesAllPurposes": "Tất cả mục đích", "batchFilesFilename": "Tên tập tin", "batchFilesPurpose": "Mục đích", @@ -832,7 +832,7 @@ "wizardStep3Validate": "Kiểm tra", "wizardStep4Cost": "Chi phí & tạo", "wizardProviderLabel": "Nhà cung cấp", - "wizardEndpointLabel": "Endpoint", + "wizardEndpointLabel": "Điểm cuối", "wizardModelLabel": "Mô hình", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (chúng tôi sẽ chuyển đổi)", @@ -851,7 +851,7 @@ "wizardValidating": "Đang kiểm tra…", "wizardValidationParseFailed": "Kiểm tra thất bại — không thể phân tích nội dung.", "wizardValidationSummary": "{lines} dòng · {ids} custom_id duy nhất", - "wizardValidationErrorCount": "{count, plural, one {# error} other {# errors}} found", + "wizardValidationErrorCount": "Đã tìm thấy {count, plural, one {# lỗi} other {# lỗi}}", "wizardValidationDuplicateIds": "Phát hiện custom_id trùng lặp:", "wizardValidationFirstErrors": "Các lỗi (hiển thị {count} lỗi đầu):", "wizardValidationLine": "Dòng {line}", @@ -901,7 +901,7 @@ "batchListRemoveCompleted": "Xóa các mục đã hoàn thành", "batchListTableStatus": "Trạng thái", "batchListTableId": "ID", - "batchListTableEndpoint": "Endpoint", + "batchListTableEndpoint": "Điểm cuối", "batchListTableModel": "Mô hình", "batchListTableProgress": "Tiến trình", "batchListTableCreated": "Đã tạo", @@ -987,13 +987,12 @@ }, "disabled": "Đã tắt", "featureFlagOmnirouteEmergencyFallbackDescription": "Định tuyến các yêu cầu đã hết ngân sách đến nhà cung cấp/mô hình dự phòng khẩn cấp miễn phí.", - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Tắt tính năng tạo biến thể cấp độ suy nghĩ (ví dụ: -low, -medium, -high) trong danh mục /v1/models.", "featureFlagArenaEloSyncEnabledDescription": "Bật đồng bộ ELO định kỳ từ bảng xếp hạng Arena AI để xếp hạng năng lực của mô hình.", "featureFlagUniversalContextHandoffEnabledDescription": "Tạo và chèn bản tóm tắt hội thoại khi định tuyến combo chuyển đổi mô hình. Tắt để xử lý các lần chuyển mô hình một cách độc lập và ngăn các yêu cầu bàn giao chạy nền cho mọi combo hiện có và trong tương lai.", "featureFlagExposeCcDiscoveryAliasesDescription": "Quảng bá các id phản chiếu claude/<provider>/<model> trên /v1/models để tính năng khám phá mô hình qua gateway của Claude Code liệt kê được các mô hình không phải Claude. Cảnh báo: khi bật ở phạm vi toàn cục, số mục trong danh mục tăng gấp đôi với mọi client.", "featureFlagNoThinkingAliasEnabledDescription": "Công tắc chính cho các bí danh gateway no-think/<provider>/<model>. Bật (mặc định): /v1/models quảng bá biến thể không suy nghĩ cho mọi mô hình Claude có khả năng suy nghĩ đủ điều kiện, và id no-think/ được gửi trên một yêu cầu sẽ giải quyết lại về mô hình thực với phần lý luận bị triệt tiêu. Tắt: không có biến thể nào được quảng bá và id no-think/ được xử lý như bất kỳ id mô hình không xác định nào khác. Tùy chọn tham gia/từ chối ModelSpec.noThinkingAlias theo từng mô hình vẫn áp dụng khi tính năng này bật.", "featureFlagChatVirtualLanesEnabledDescription": "Bật làn tiếp nhận ảo thích ứng cho từng đối tượng thuê (tenant) để phân phối nhà cung cấp (#9654): một đợt bùng phát của tenant này không còn trả 503 cho tenant khác. Biến môi trường OMNIROUTE_CHAT_VIRTUAL_LANES được ưu tiên hơn cài đặt bảng điều khiển này; các thay đổi có hiệu lực khi khởi động lại máy chủ.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Các trang nhà cung cấp trên bảng điều khiển: chỉ hiển thị huy hiệu Miễn phí đối với các tín hiệu được nhà cung cấp công nhận — loại bỏ phương pháp suy đoán dựa trên tên hiển thị, các trường miễn phí không phải kiểu boolean và hậu tố :free trên các nhà cung cấp đã đăng ký nhưng không có gói miễn phí được ghi rõ trong tài liệu. Khi tắt, quy tắc huy hiệu trước đây vẫn được áp dụng.", "featureFlagProxySkipRecentlyFailedDescription": "Các pool proxy và cơ chế xoay vòng theo tài khoản của opencode ngừng dùng lại một proxy vừa thất bại (thăm dò TCP bị từ chối, hoặc nhận 429 qua proxy đó) trong một khoảng thời gian theo tiến trình, tăng gấp đôi sau mỗi lần lặp lại, tối đa đến một giới hạn. Không ghi trạng thái proxy nào; khi mọi ứng viên đều bị tạm gác, lựa chọn vẫn như cũ. Tắt theo mặc định: thứ tự chọn giữ nguyên xoay vòng thông thường.", "featureFlagProxyPoolEgressObservationDescription": "Hiển thị, bên dưới một nhóm proxy trong bảng điều khiển, số IP đầu ra quan sát được đã phục vụ các thành viên của nhóm trong 24 giờ qua, số kết nối đã dùng chúng và số lớn nhất thấy sau cùng một IP. Chỉ đọc, tính từ nhật ký proxy, không bao giờ dùng để định tuyến. Tắt theo mặc định: trình chỉnh sửa nhóm không đổi và tuyến quan sát trả về null.", "featureFlagProxyHealthBlockedResetsStreakDescription": "Trong lượt kiểm tra sức khỏe proxy, cho phép một lần thăm dò bị đích từ chối (401/403/429: proxy đã chuyển tiếp, đích từ chối IP đầu ra này) đặt lại chuỗi lỗi liên tiếp của proxy, giống như một lần thăm dò được phục vụ. Tắt theo mặc định: lần từ chối vẫn trung lập và giữ nguyên chuỗi. Lỗi 5xx vẫn không kết luận trong mọi trường hợp, và lần từ chối không bao giờ xóa, vô hiệu hóa hay kích hoạt lại proxy.", @@ -1015,7 +1014,7 @@ "playground": "Khu thử nghiệm", "searchTools": "Công cụ tìm kiếm", "agents": "Tác nhân", - "cloudAgents": "Cloud Agents", + "cloudAgents": "Tác nhân đám mây", "memory": "Bộ nhớ", "skills": "Kỹ năng", "omniSkills": "OmniSkills", @@ -1106,7 +1105,7 @@ "contextCombos": "Tổ hợp công cụ", "contextLite": "Lite", "contextAggressive": "Aggressive", - "contextUltra": "Ultra", + "contextUltra": "Cực mạnh", "contextOmniglyph": "OmniGlyph", "contextSettings": "Cài đặt nén", "contextHeadroom": "Headroom", @@ -1170,7 +1169,7 @@ "settingsSecurity": "Bảo mật", "settingsAccessTokens": "Token truy cập", "settingsFeatureFlags": "Cờ tính năng", - "settingsCache": "Cache", + "settingsCache": "Bộ nhớ đệm", "settingsAuthz": "Phân quyền", "settingsRouting": "Định tuyến", "settingsResilience": "Khả năng phục hồi", @@ -1181,12 +1180,12 @@ "providerQuota": "Hạn mức của nhà cung cấp", "runtime": "Thời gian chạy", "consoleLogs": "Nhật ký bảng điều khiển", - "logsTimeline": "Timeline", + "logsTimeline": "Dòng thời gian", "logsTimelineSubtitle": "Dòng thời gian yêu cầu trực quan", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", + "conversations": "Cuộc trò chuyện", + "conversationsSubtitle": "Cuộc trò chuyện tác nhân nhiều lượt", "globalRouting": "Định tuyến toàn cục", - "mitmProxy": "MITM Proxy", + "mitmProxy": "Proxy MITM", "oneProxy": "1Proxy", "agenticFeaturesSection": "Tính năng tác tử", "otherFeaturesSection": "Tính năng khác", @@ -1276,16 +1275,16 @@ "systemGroup": "Hệ thống", "costsOverview": "Tổng quan", "costsOverviewSubtitle": "Phân tích chi phí tổng hợp", - "agentBridge": "Agent Bridge", + "agentBridge": "Cầu nối tác tử", "agentBridgeSubtitle": "Chặn lưu lượng agent IDE", "trafficInspector": "Traffic Inspector", "trafficInspectorSubtitle": "Kiểm tra lưu lượng yêu cầu và phản hồi từ các ứng dụng của bạn", "trafficInspectorPurpose": "Xem chính xác những gì ứng dụng của bạn gửi đến và nhận từ các nhà cung cấp AI. Hoạt động với bất kỳ ứng dụng khách nào tương thích với OpenAI.", "cliCode": "CLI Code", "cliCodeSubtitle": "Các công cụ lập trình trỏ đến OmniRoute", - "cliAgents": "CLI Agents", + "cliAgents": "Tác tử CLI", "cliAgentsSubtitle": "Tác tử CLI tự chủ", - "acpAgents": "ACP Agents", + "acpAgents": "Tác tử ACP", "acpAgentsSubtitle": "Các CLI do OmniRoute khởi chạy", "skipToContent": "Chuyển đến nội dung", "mainNavigation": "Điều hướng chính", @@ -1662,9 +1661,9 @@ "featureFlagsCategoryRuntime": "Thời gian chạy", "featureFlagsCategoryCli": "CLI", "featureFlagsCategoryHealth": "Sức khỏe", - "featureFlagsSourceDb": "DB", - "featureFlagsSourceEnv": "ENV", - "featureFlagsSourceDefault": "DEF", + "featureFlagsSourceDb": "CSDL", + "featureFlagsSourceEnv": "MÔI TRƯỜNG", + "featureFlagsSourceDefault": "MẶC ĐỊNH", "featureFlagsReset": "Đặt lại", "featureFlagsResetAll": "Đặt lại tất cả các ghi đè", "featureFlagsResetAllConfirm": "Bạn có chắc chắn muốn đặt lại tất cả các ghi đè cờ tính năng không? Điều này sẽ khôi phục tất cả các cờ về giá trị ENV hoặc mặc định của chúng.", @@ -1714,9 +1713,9 @@ "edit": "Chỉnh sửa", "apiKeys": "Khóa API", "models": "Mô hình", - "cliCode": "CLI Code", - "cliAgents": "CLI Agents", - "acpAgents": "ACP Agents", + "cliCode": "Mã CLI", + "cliAgents": "Tác tử CLI", + "acpAgents": "Tác tử ACP", "endpoint": "Điểm cuối", "apiManager": "Quản lý API", "context": "Ngữ cảnh", @@ -1741,28 +1740,28 @@ "batch": "Tác vụ hàng loạt", "files": "Tệp", "media": "Đa phương tiện", - "cache": "Cache", + "cache": "Bộ nhớ đệm", "changelog": "Lịch sử thay đổi", "chaos": "Chế độ hỗn loạn", - "cloudAgents": "Cloud Agents", + "cloudAgents": "Tác tử đám mây", "live": "Trực tiếp", "studio": "Studio", - "aggressive": "Aggressive", + "aggressive": "Tích cực", "caveman": "Caveman", "ccr": "CCR", - "headroom": "Headroom", + "headroom": "Dung lượng dự phòng", "lite": "Lite", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", "rtk": "RTK", - "sessionDedup": "Session Dedup", + "sessionDedup": "Khử trùng lặp phiên", "ultra": "Ultra", "budget": "Ngân sách", "pricing": "Định giá", "quotaShare": "Chia sẻ hạn mức", "discovery": "Khám phá", "freeProviderRankings": "Xếp hạng nhà cung cấp miễn phí", - "radar": "Radar", + "radar": "Ra-đa", "setup": "Thiết lập", "freeTiers": "Gói miễn phí", "gamification": "Trò chơi hóa", @@ -1773,14 +1772,14 @@ "providerStats": "Thống kê nhà cung cấp", "new": "Mới", "quota": "Hạn mức", - "relay": "Relay", + "relay": "Chuyển tiếp", "searchTools": "Công cụ tìm kiếm", "security": "Bảo mật", "sidebar": "Thanh bên", "tokens": "Token", "tools": "Công cụ", - "agentBridge": "Agent Bridge", - "trafficInspector": "Traffic Inspector", + "agentBridge": "Cầu nối tác tử", + "trafficInspector": "Trình kiểm tra lưu lượng", "usage": "Mức sử dụng", "orchestration": "Điều phối" }, @@ -1964,11 +1963,11 @@ "rangeCancel": "Hủy", "rangeApply": "Áp dụng", "rangeErrorInvalid": "Thời gian bắt đầu phải trước thời gian kết thúc", - "period1D": "1D", - "period7D": "7D", - "period30D": "30D", - "period90D": "90D", - "periodYTD": "YTD", + "period1D": "1 ngày", + "period7D": "7 ngày", + "period30D": "30 ngày", + "period90D": "90 ngày", + "periodYTD": "Từ đầu năm", "periodAll": "Tất cả", "totalTokens": "Tổng số token", "inputTokens": "Token đầu vào", @@ -2189,7 +2188,7 @@ "routeRuntimeScoreNow": "Điểm runtime hiện tại", "routeWouldSelectNow": "Sẽ chọn ở hiện tại", "routeNoRecomputeCandidates": "Không thể tính lại thứ hạng ứng viên combo cho yêu cầu này.", - "runtime": "Runtime", + "runtime": "Thời gian chạy", "routeTopNow": "Đứng đầu hiện tại", "routeFetchLogsFailed": "Không thể tải nhật ký yêu cầu", "routeExplainFailed": "Không thể giải thích định tuyến", @@ -2208,7 +2207,7 @@ "model": "Mô hình", "account": "Tài khoản", "connection": "Kết nối", - "combo": "Combo", + "combo": "Tổ hợp", "routeStep": "Bước", "tokens": "Token", "notAvailable": "không có", @@ -2261,7 +2260,7 @@ "keyManagementDesc": "Tạo và quản lý khóa API để xác thực các yêu cầu tới endpoint của bạn", "requestFlowAria": "Ứng dụng của bạn gửi yêu cầu qua một API key tới OmniRoute", "requestFlowYourApp": "Ứng dụng của bạn", - "requestFlowApiKey": "API key", + "requestFlowApiKey": "Khóa API", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "Tổng số khóa", "restricted": "Bị hạn chế", @@ -2309,7 +2308,7 @@ "autoResolveDesc": "Tự động phân giải các tên mô hình mơ hồ sang nhà cung cấp gốc cho khóa API này.", "streamDefaultMode": "Khả năng tương thích mặc định khi truyền phát", "streamDefaultModeDesc": "Kiểm soát các cờ `stream` bị bỏ sót cho khóa này. Chế độ JSON trả về các phản hồi không truyền phát trực tuyến trừ khi ứng dụng khách yêu cầu SSE một cách rõ ràng.", - "streamDefaultLegacy": "Legacy", + "streamDefaultLegacy": "Cũ", "streamDefaultJson": "Tương thích JSON", "streamDefaultBadge": "Mặc định truyền phát JSON", "keyActive": "Khóa đang hoạt động", @@ -2382,7 +2381,7 @@ "removeClaudeCodeDefault": "Xóa mặc định Claude Code", "allowedCombos": "Combo được phép", "allCombosAllowed": "Khóa này có thể sử dụng mọi combo.", - "restrictedComboCount": "Restricted to {count, plural, one {# combo} other {# combos}}.", + "restrictedComboCount": "Chỉ giới hạn ở {count, plural, one {# tổ hợp} other {# tổ hợp}}.", "preservedComboRules": "{count, plural, one {# mục đã lưu} other {# mục đã lưu}} không có trong danh sách combo này (ví dụ: quy tắc định tuyến) và sẽ được giữ nguyên như đã lưu.", "preservedComboRuleHint": "Được giữ nguyên như đã lưu. Mục này không phải là combo trong danh sách ở trên, nên chỉ có thể thay đổi thông qua API.", "apiManagerCustomRateLimits": "Giới hạn tốc độ tùy chỉnh", @@ -2467,7 +2466,7 @@ "videoDescription": "Tạo video bằng AnimateDiff, Stable Video Diffusion qua ComfyUI hoặc SD WebUI.", "musicDescription": "Soạn nhạc sử dụng Stable Audio Open hoặc MusicGen qua ComfyUI.", "kinds": { - "embedding": "Embedding", + "embedding": "Nhúng", "image": "Hình ảnh", "imageToText": "Hình ảnh sang văn bản", "tts": "Văn bản sang giọng nói", @@ -2583,8 +2582,8 @@ "networkError": "Lỗi mạng", "formatted": "Đã định dạng", "rawJson": "JSON", - "cacheMiss": "cache miss", - "cacheHit": "cache hit", + "cacheMiss": "trượt bộ nhớ đệm", + "cacheHit": "trúng bộ nhớ đệm", "latency": "Độ trễ", "cost": "Chi phí", "results": "Kết quả", @@ -2665,7 +2664,7 @@ "httpError": "Lỗi {status}", "failed": "Thất bại", "requestFailed": "Yêu cầu thất bại", - "embedding": "Embedding", + "embedding": "Nhúng", "embeddingSample": "Xin chào thế giới!", "image": "Hình ảnh", "imageSample": "Phong cảnh yên bình với núi non lúc hoàng hôn", @@ -2743,8 +2742,8 @@ "effortHigh": "Cao", "effortExtraHigh": "Rất cao", "effortMax": "Tối đa", - "effortUltra": "Ultra", - "wireApi": "Wire API", + "effortUltra": "Siêu cấp", + "wireApi": "API giao tiếp", "modelAliases": "Bí danh mô hình", "addModel": "Thêm mô hình", "routeModelPlaceholder": "Định tuyến {model} tới...", @@ -3157,7 +3156,7 @@ "hermesNotOmniRoute": "{provider} (không qua OmniRoute)", "hermesRemovePendingRole": "Bỏ vai trò này khỏi các thay đổi đang chờ", "hermesApply": "Áp dụng cho Hermes Agent", - "hermesRolesWillUpdate": "{count, plural, one {# role will be updated} other {# roles will be updated}}", + "hermesRolesWillUpdate": "{count, plural, one {# vai trò sẽ được cập nhật} other {# vai trò sẽ được cập nhật}}", "hermesPreviewPath": "Xem trước — sẽ ghi vào ~/.hermes/config.yaml", "hermesSaveDescription": "Lưu mô hình đã chọn cho từng vai trò vào", "copilotConfigGenerator": "Trình tạo cấu hình GitHub Copilot", @@ -3170,15 +3169,15 @@ "loadingModels": "Đang tải mô hình...", "advancedOptions": "Tùy chọn nâng cao", "vision": "Thị giác", - "copilotCopyConfigForModels": "Copy config ({count, plural, one {# model} other {# models}})", + "copilotCopyConfigForModels": "Sao chép cấu hình ({count, plural, one {# mô hình} other {# mô hình}})", "copilotFilterModelsPlaceholder": "Lọc mô hình...", "copilotMaxInputTokens": "Token đầu vào tối đa", "copilotMaxOutputTokens": "Token đầu ra tối đa", "copilotToolCalling": "Gọi công cụ", "copilotPasteInto": "Dán vào:", "copilotReloadInstruction": "Sau đó tải lại VS Code và nhập khóa API khi được yêu cầu.", - "wireApiChatCompletions": "Chat Completions (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiChatCompletions": "Hoàn tất trò chuyện (/chat/completions)", + "wireApiResponses": "API phản hồi (/responses)", "cliproxyapiActionFailed": "Thao tác thất bại", "cliproxyapiActionSucceeded": "Thao tác thành công", "cliproxyapiCheckUpdates": "Kiểm tra bản cập nhật", @@ -3266,10 +3265,10 @@ "randomDesc": "Lựa chọn ngẫu nhiên đồng đều, sau đó dự phòng sang các mô hình còn lại", "leastUsedDesc": "Chọn mô hình có ít yêu cầu nhất, cân bằng tải theo thời gian", "costOptimizedDesc": "Định tuyến đến mô hình có giá thấp nhất trước dựa trên mức giá", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "Định tuyến nhất quán từng tiền tố lời nhắc có thể tái sử dụng đến cùng một tài khoản nhà cung cấp", "resetAware": "RR nhận biết đặt lại", "resetAwareDesc": "Cân bằng hạn ngạch còn lại với các mốc đặt lại sau 5 giờ và hằng tuần, sau đó xoay vòng các mô hình có điểm số tương tự", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Theo trọng số hạn ngạch", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "Ngẫu nhiên nghiêm ngặt", "strictRandomDesc": "Trộn bài — sử dụng mỗi mô hình một lần trước khi trộn lại", @@ -3314,7 +3313,7 @@ "liveDisconnected": "Đã tắt chế độ trực tiếp — WebSocket đã ngắt kết nối. Đang hiển thị trạng thái gần nhất.", "liveSelectCombo": "Chọn combo", "liveSelectComboPlaceholder": "— chọn combo —", - "liveTargetCount": "{count, plural, one {# target} other {# targets}}", + "liveTargetCount": "{count, plural, one {# đích} other {# đích}}", "liveSingle": "Đơn lẻ", "liveFleet": "Toàn cụm", "playgroundStatusAvailable": "Khả dụng", @@ -3544,7 +3543,7 @@ "weightTaskFit": "Độ phù hợp tác vụ", "weightStability": "Độ ổn định", "weightTierPriority": "Phân hạng", - "weightCacheAffinity": "Cache Hit Affinity", + "weightCacheAffinity": "Ưu tiên trúng bộ nhớ đệm", "weightSessionAvailability": "Tình Trạng Phiên", "reviewIntelligentTitle": "Cấu hình định tuyến thông minh", "strategyRecommendations": { @@ -3665,10 +3664,10 @@ "wizardStep3Desc": "Chọn cách phân phối các yêu cầu giữa các mô hình của bạn - hiện có 14 chiến lược", "wizardStep4Title": "Xem lại & Lưu", "wizardStep4Desc": "Xem lại cấu hình của bạn và kích hoạt combo", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", + "usageGuideInvokeTitle": "Cách gọi combo này", + "usageGuideInvokeDesc": "Gửi chính xác tên của combo làm model, ví dụ: model: \"my-combo\" (hoặc combo/my-combo).", + "usageGuideInvokeAutoNote": "auto và auto/* là một bộ định tuyến không cần cấu hình riêng biệt, không sử dụng các combo của bạn (trừ khi có một combo thực sự mang tên auto).", + "usageGuideInvokeOpenrouterNote": "openrouter/auto là một sản phẩm OpenRouter trả phí thực sự (Auto Best Available), không phải bí danh OmniRoute — hãy loại trừ sản phẩm này qua Cài đặt → Định tuyến → Ẩn các model trả phí.", "emailVisibilityStateOn": "Bật", "emailVisibilityStateOff": "Tắt", "reorderHandle": "Kéo để sắp xếp lại", @@ -3771,9 +3770,9 @@ "disableSessionStickiness": "Tắt tính năng liên kết phiên", "sessionStickinessEnabled": "Bật liên kết phiên", "sessionStickinessDisabled": "Tắt liên kết phiên", - "kimiPresetTitle": "Kimi Coding preset", - "kimiPresetDescription": "Kimi K3 as the primary model (Moonshot API), with automatic fallback to your Kimi Code connections (kimi-coding, kimi-web) when configured.", - "kimiPresetCta": "Add preset", + "kimiPresetTitle": "Cấu hình sẵn Kimi Coding", + "kimiPresetDescription": "Kimi K3 làm model chính (Moonshot API), với khả năng tự động chuyển sang các kết nối Kimi Code của bạn (kimi-coding, kimi-web) khi được cấu hình.", + "kimiPresetCta": "Thêm cấu hình sẵn", "intelligentComboCount": "{count, plural, one {# combo thông minh} other {# combo thông minh}}", "providersInScope": "{count, plural, one {# provider trong phạm vi} other {# provider trong phạm vi}}", "savingModePack": "Đang lưu {pack}…", @@ -3781,7 +3780,7 @@ "errorDescription": "Hiện không thể tải dữ liệu combo. Hãy kiểm tra kết nối rồi thử lại.", "errorId": "ID lỗi: {id}", "errorRetry": "Thử lại", - "comboLabel": "Combo", + "comboLabel": "Tổ hợp", "duplicateAutoComboConfirm": "Tạo một tổ hợp tĩnh từ \"{name}\"?", "duplicateAutoComboSnapshotMsg": "Điều này sẽ chụp lại các nhà cung cấp/mô hình đang kết nối hiện tại phù hợp với mẫu này vào một tổ hợp có thể chỉnh sửa.", "duplicateAutoComboFailedPrefix": "Không thể sao chép tổ hợp tự động:", @@ -4085,7 +4084,7 @@ "tabContextSources": "Nguồn ngữ cảnh", "activeEndpoints": "Endpoint đang hoạt động", "activeLocal": "Cục bộ", - "activeCloud": "Cloud", + "activeCloud": "Đám mây", "copyUrlTitle": "Sao chép {url}", "statusRunning": "Đang chạy", "tunnels": "Đường hầm", @@ -4128,19 +4127,19 @@ "vscodeAliasDescriptionError": "Đang hiển thị các URL tạm thời vì không thể tải các khóa CLI trong phiên làm việc này.", "vscodeAliasDescriptionLoading": "Đang tải các khóa CLI. Các URL tạm thời sẽ hiển thị cho đến khi có khóa khả dụng.", "vscodeAliasDescriptionPlaceholder": "Đang hiển thị các URL tạm thời. Hãy tạo hoặc kích hoạt một khóa API trong CLI Tools để thay thế TOKEN.", - "vscodeAliasManage": "CLI Tools", + "vscodeAliasManage": "Công cụ CLI", "vscodeAliasBaseLabel": "URL cơ sở VS Code", "vscodeAliasModelsLabel": "Mô hình VS Code", - "vscodeAliasChatLabel": "VS Code chat", + "vscodeAliasChatLabel": "Trò chuyện trong VS Code", "localServer": "Máy chủ cục bộ", - "cloudOmniroute": "Cloud OmniRoute", + "cloudOmniroute": "OmniRoute trên đám mây", "copyUrl": "Sao chép URL", "badgeLoopbackTooltip": "Endpoint này chỉ có thể truy cập cục bộ (chỉ loopback)", "badgeAlwaysProtectedTooltip": "Endpoint này luôn được bảo vệ và yêu cầu ủy quyền", "badgeInternalTooltip": "Đây là một endpoint hệ thống nội bộ", "tierAll": "Tất cả", "tierAuth": "Đã xác thực", - "tierLoopback": "Loopback", + "tierLoopback": "Vòng lặp nội bộ", "tierAlwaysProtected": "Luôn được bảo vệ", "tierPublic": "Công khai", "hideInternal": "Ẩn nội bộ", @@ -4196,9 +4195,9 @@ "notionTokenConfigured": "Đã cấu hình token. Các công cụ Notion khả dụng qua MCP." }, "endpoints": { - "tabProxy": "Endpoint Proxy", - "tabApiEndpoints": "API Endpoints", - "apiEndpointsTitle": "API Endpoints", + "tabProxy": "Proxy điểm cuối", + "tabApiEndpoints": "Điểm cuối API", + "apiEndpointsTitle": "Điểm cuối API", "apiEndpointsDescription": "Các điểm cuối API phụ trợ mà các ứng dụng và dịch vụ khác có thể sử dụng. Phần này sẽ liệt kê tất cả REST API hiện có, kèm tài liệu hướng dẫn và tính năng kiểm thử.", "comingSoon": "Sắp ra mắt", "plannedFeatures": "Các tính năng dự kiến", @@ -4434,7 +4433,7 @@ "reindexFailed": "Không thể bắt đầu lập chỉ mục lại", "keywordLabel": "Từ khóa (FTS5)", "keywordReason": "Tìm kiếm từ khóa luôn khả dụng", - "embeddingLabel": "Embedding", + "embeddingLabel": "Nhúng", "vectorStoreLabel": "Kho lưu trữ vector", "qdrantLabel": "Qdrant", "rerankLabel": "Xếp hạng lại", @@ -4475,7 +4474,7 @@ "simulate": "Mô phỏng", "resultsTitle": "{count} kết quả", "resolutionTitle": "Xử lý tìm kiếm", - "resolutionEmbedding": "Embedding", + "resolutionEmbedding": "Nhúng", "resolutionStore": "Kho lưu trữ vector", "resolutionStrategy": "Chiến lược đã dùng", "rerankApplied": "Đã áp dụng xếp hạng lại", @@ -4569,8 +4568,8 @@ "skillsTab": "Kỹ năng", "executionsTab": "Lần thực thi", "selectSkillToInspect": "Chọn một skill ở bên trái để kiểm tra.", - "schemaTab": "Schema", - "handlerTab": "Handler", + "schemaTab": "Lược đồ", + "handlerTab": "Trình xử lý", "inputSchema": "Schema đầu vào", "outputSchema": "Schema đầu ra", "handlerCode": "Mã handler", @@ -4651,7 +4650,7 @@ "uptime": "Thời gian hoạt động", "memory": "Bộ nhớ", "memoryRss": "Bộ nhớ (RSS)", - "heap": "Heap", + "heap": "Đống", "cpu": "CPU", "database": "Cơ sở dữ liệu", "version": "Phiên bản", @@ -4682,11 +4681,11 @@ "notAvailable": "—", "totalRequests": "Tổng số yêu cầu", "noDataYet": "Chưa có dữ liệu", - "promptCache": "Prompt Cache", + "promptCache": "Bộ nhớ đệm prompt", "entries": "Bản ghi", "hitRate": "Tỷ lệ hit", "hitsMisses": "Hit / Miss", - "signatureCache": "Signature Cache", + "signatureCache": "Bộ nhớ đệm chữ ký", "signatureDefaults": "Mặc định", "signatureTool": "Công cụ", "signatureFamily": "Họ", @@ -4737,7 +4736,7 @@ "repairBackupCreated": "Đã tạo bản sao lưu trước khi sửa dữ liệu.", "sessionActivity": "Hoạt động phiên", "activeCount": "{count} đang hoạt động", - "requestCount": "{count, plural, one {# request} other {# requests}}", + "requestCount": "{count, plural, one {# yêu cầu} other {# yêu cầu}}", "idleSeconds": "nhàn rỗi {count} giây", "ageSeconds": "đã tồn tại {count} giây", "quotaMonitors": "Trình giám sát hạn ngạch", @@ -4842,7 +4841,7 @@ "pid": "PID", "lastIntercept": "Lần chặn cuối cùng", "target": "Mục tiêu", - "host": "Host", + "host": "Máy chủ", "localPort": "Cổng cục bộ", "endpoints": "Các endpoint", "enabled": "Đã bật", @@ -4895,12 +4894,12 @@ "requestId": "ID yêu cầu", "providerWarningDesc": "Một số nhà cung cấp đã trả về cảnh báo trong quá trình xử lý yêu cầu", "a": "A", - "offset": "Offset", + "offset": "Độ lệch", "limit": "Giới hạn", "status": "Trạng thái", "resourceType": "Loại tài nguyên", "totalEntries": "Tổng số mục", - "tab": "Tab", + "tab": "Thẻ", "auditModalSubtitle": "Chi tiết sự kiện và siêu dữ liệu", "close": "Đóng", "runningRequests": "Yêu cầu đang hoạt động", @@ -4921,7 +4920,7 @@ "activeStageSendingToProvider": "Đang gửi đến hệ thống thượng nguồn", "activeStageProviderResponseStarted": "Đã bắt đầu nhận phản hồi từ hệ thống thượng nguồn", "count": "Số lượng", - "payloads": "Payloads", + "payloads": "Payload", "viewPayloads": "Xem", "activeCount": "{count} đang hoạt động", "clientPayload": "Payload yêu cầu của máy khách", @@ -4952,7 +4951,7 @@ "disableAutoScroll": "Tắt tự động cuộn", "enableAutoScroll": "Bật tự động cuộn", "autoScroll": "Tự động cuộn", - "entryCount": "{count, plural, one {# entry} other {# entries}}", + "entryCount": "{count, plural, one {# mục} other {# mục}}", "lastHour": "1 giờ gần đây", "updatedAt": "Cập nhật lúc {time}", "fileLoggingRequired": "Hãy đảm bảo ứng dụng đang ghi nhật ký vào tập tin (APP_LOG_TO_FILE=true)", @@ -4962,7 +4961,7 @@ }, "compressionLogTitle": "Nhật ký nén", "compressionLogEmpty": "Chưa có yêu cầu nào được nén. Số liệu thống kê nén sẽ xuất hiện ở đây khi các yêu cầu được xử lý với tính năng nén được bật.", - "tokens": "tokens" + "tokens": "token" }, "onboarding": { "welcome": "Chào mừng", @@ -5081,31 +5080,31 @@ "importFromFileMoreErrors": "+{count} nữa", "importFromFileSchemaHint": "Các cột CSV theo vị trí: provider, name, apiKey, baseUrl (tùy chọn), priority (tùy chọn). Cột provider phải là id nhà cung cấp được quản lý hiện có hoặc id nút tương thích OpenAI/Anthropic đã đăng ký — quá trình nhập này không tạo nút endpoint mới.", "adaptaTutorial": { - "title": "How to connect Adapta Web", - "introPrefix": "Adapta authenticates through Clerk. The token", - "introSuffix": "is a long-lived JWT that lets OmniRoute refresh sessions automatically.", - "or": "or", - "step1Title": "Open Adapta chat", - "step1DescPrefix": "Open", - "step1DescSuffix": "and sign in with your Gold or Business account.", - "step2Title": "Open DevTools", - "step2DescPrefix": "Press", - "step2DescSuffix": "to open Developer Tools.", - "step3Title": "Go to Application → Cookies", - "step3DescPrefix": "In the", - "step3DescMiddle": "expand", - "step3DescSuffix": "and click", - "step4Title": "Copy the cookie value for", - "step4DescPrefix": "Find the cookie named", - "step4DescMiddle": "in the list. Click it and copy the content from the", - "step4DescSuffix": "column. It starts with", - "step5Title": "Paste it here and save", - "step5DescPrefix": "Click", - "step5DescMiddle": "paste the", - "step5DescSuffix": "value into the API Key field, then save. OmniRoute will refresh the session automatically.", - "tipLabel": "Tip:", - "tipPrefix": "The", - "tipSuffix": "cookie is long-lived, usually for months. You only need to renew it if you sign out or Adapta invalidates the session." + "title": "Cách kết nối Adapta Web", + "introPrefix": "Adapta xác thực thông qua Clerk. Token", + "introSuffix": "là một JWT dài hạn cho phép OmniRoute tự động làm mới phiên.", + "or": "hoặc", + "step1Title": "Mở cuộc trò chuyện Adapta", + "step1DescPrefix": "Mở", + "step1DescSuffix": "và đăng nhập bằng tài khoản Gold hoặc Business của bạn.", + "step2Title": "Mở DevTools", + "step2DescPrefix": "Nhấn", + "step2DescSuffix": "để mở Công cụ dành cho nhà phát triển.", + "step3Title": "Đi tới Application → Cookies", + "step3DescPrefix": "Trong", + "step3DescMiddle": "mở rộng", + "step3DescSuffix": "và nhấp vào", + "step4Title": "Sao chép giá trị cookie của", + "step4DescPrefix": "Tìm cookie có tên", + "step4DescMiddle": "trong danh sách. Nhấp vào cookie đó và sao chép nội dung từ cột", + "step4DescSuffix": ". Giá trị này bắt đầu bằng", + "step5Title": "Dán vào đây và lưu", + "step5DescPrefix": "Nhấp vào", + "step5DescMiddle": "dán giá trị", + "step5DescSuffix": "vào trường Khóa API, sau đó lưu. OmniRoute sẽ tự động làm mới phiên.", + "tipLabel": "Mẹo:", + "tipPrefix": "Cookie", + "tipSuffix": "có thời hạn dài, thường là nhiều tháng. Bạn chỉ cần gia hạn nếu đăng xuất hoặc Adapta vô hiệu hóa phiên." }, "editProvider": "Chỉnh sửa nhà cung cấp", "deleteProvider": "Xóa nhà cung cấp", @@ -5261,10 +5260,10 @@ "iconUrlLabel": "URL biểu tượng", "iconUrlHint": "Tùy chọn. URL hình ảnh được hiển thị làm biểu tượng của nhà cung cấp này.", "iconUrlInvalid": "URL biểu tượng không hợp lệ. Sử dụng http(s):// hoặc data:image/*;base64 URL.", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "Múi giờ đặt lại hạn ngạch hằng ngày", + "dailyQuotaResetTimezoneHint": "Múi giờ IANA tùy chọn được sử dụng khi hệ thống thượng nguồn không cung cấp X-RateLimit-Reset. Để trống để duy trì thời gian chờ ngắn.", + "dailyQuotaResetHourLabel": "Giờ đặt lại hạn ngạch hằng ngày", + "dailyQuotaResetHourHint": "Giờ địa phương từ 0–23 trong múi giờ ở trên. Để trống nghĩa là không có đồng hồ cấp nút.", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5296,7 +5295,7 @@ "filterError": "Lỗi", "filterBanned": "Bị cấm", "filterCreditsExhausted": "Hết tín dụng", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "Tìm kiếm tài khoản…", "noFilteredConnections": "Không có kết nối nào khớp với bộ lọc hiện tại.", "failedSetAlias": "Không thể đặt bí danh", "setAliasSuccess": "Đã đặt bí danh {alias}", @@ -5805,7 +5804,7 @@ "ccCompatibleLabel": "Tương thích CC", "ccCompatibleModelsDescription": "Các relay tương thích với CC không hiển thị danh sách mô hình. Hãy thêm ID mô hình Claude mà relay của bạn chấp nhận.", "ccCompatibleNameHint": "Tên hiển thị cho relay chỉ dành riêng cho Claude Code này.", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "CC Relay Sản xuất", "ccCompatiblePrefixHint": "Được sử dụng trong các bí danh mô hình như prefix/model-id.", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Chỉ sử dụng nhà cung cấp này cho các relay chỉ phục vụ máy khách Claude Code. OmniRoute sẽ chuyển đổi mọi yêu cầu đến sang định dạng truyền tải tương thích với Claude Code để các relay đó chấp nhận. Nếu bạn chỉ muốn sử dụng Claude Code CLI hoặc không chắc loại relay này có nghĩa là gì, hãy dùng nhà cung cấp tương thích Anthropic thông thường.", @@ -5867,7 +5866,7 @@ "antigravityClientProfileCli": "CLI", "codexFastTierActiveChip": "Gói Codex Fast đang hoạt động", "tierFast": "Nhanh", - "antigravityProjectIdLabel": "Google Cloud Project ID", + "antigravityProjectIdLabel": "ID dự án Google Cloud", "antigravityProjectIdPlaceholder": "my-gcp-project-id", "grokWebCookiePlaceholder": "Gợi ý nhập Grok Web Cookie", "herokuBaseUrlHint": "Gợi ý Heroku Base URL", @@ -6256,7 +6255,7 @@ "requesty": "Tạo khóa API tại https://app.requesty.ai, rồi dán dưới dạng token Bearer. Endpoint tương thích OpenAI tại https://router.requesty.ai/v1, kèm danh mục /v1/models trực tiếp.", "runwayml": "Tạo video Runway hoạt động theo tác vụ. OmniRoute gửi tác vụ chuyển văn bản hoặc hình ảnh thành video, thăm dò /v1/tasks/[id], rồi chuẩn hóa đầu ra hoàn tất về phản hồi /v1/videos/generations kiểu OpenAI.", "sambanova": "5 USD tín dụng miễn phí khi đăng ký (có hiệu lực 30 ngày), không cần thẻ tín dụng", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "Tạo khóa API tại https://seekai.cc, sau đó dán khóa vào đây dưới dạng token Bearer. URL cơ sở tương thích với OpenAI: https://seekai.cc/v1.", "sap": "Khám phá mô hình dùng /v2/lm/scenarios/foundation-models/models trên AI_API_URL. Yêu cầu trò chuyện dùng deploymentUrl/chat/completions và yêu cầu AI-Resource-Group.", "sarvam": "Sarvam AI tương thích OpenAI trên /v1. OmniRoute thăm dò /v1/models và định tuyến trò chuyện tới /v1/chat/completions. Các mô hình được tinh chỉnh cho ngôn ngữ Ấn Độ.", "scaleway": "1 triệu token miễn phí cho tài khoản mới — tuân thủ EU/GDPR (Paris), Qwen3 235B và Llama 70B", @@ -6313,7 +6312,7 @@ "claude": "Kết nối Claude Code bằng luồng OAuth hiện có.", "cline": "Kết nối Cline bằng luồng OAuth hiện có.", "cursor": "Kết nối Cursor IDE bằng luồng OAuth hiện có.", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "Kết nối Cursor bằng khóa API người dùng (crsr_...) từ cursor.com/dashboard/api; không cần phiên IDE.", "github": "Kết nối GitHub Copilot bằng luồng OAuth hiện có.", "gitlab-duo": "Ứng dụng OAuth với phạm vi ai_features + read_user. Cấu hình GITLAB_DUO_OAUTH_CLIENT_ID và tùy chọn GITLAB_DUO_OAUTH_CLIENT_SECRET trên instance OmniRoute này.", "kilocode": "Kết nối Kilo Code bằng luồng OAuth hiện có.", @@ -6389,7 +6388,7 @@ "kimiOfficialSupporterTooltip": "Kimi (Moonshot AI) là người bạn mã nguồn mở sáng lập của OmniRoute", "cheaperInferenceSupporterBadge": "Người bạn mã nguồn mở", "cheaperInferenceSupporterTooltip": "Cheaper Inference hỗ trợ OmniRoute với tư cách là người bạn mã nguồn mở", - "kimiPartnerLinkNote": "Partner link — supports OmniRoute at no extra cost to you", + "kimiPartnerLinkNote": "Liên kết đối tác — hỗ trợ OmniRoute mà bạn không phải trả thêm chi phí", "codexQuotaPools": "Nhóm hạn mức Codex", "codexPoolAvailable": "Khả dụng", "codexPoolPartiallyLimited": "Bị giới hạn một phần", @@ -6425,7 +6424,7 @@ "codexServiceModeUpdated": "Đã cập nhật chế độ dịch vụ Codex", "codexServiceTierActive": "Cấp dịch vụ Codex {tier} đang hoạt động", "codexTierFastLabel": "Nhanh", - "codexTierFlexLabel": "Flex", + "codexTierFlexLabel": "Linh hoạt", "commandCodeApplyFailed": "Không thể áp dụng xác thực Command Code", "commandCodeApplyingApproval": "Trình duyệt đã phê duyệt, đang áp dụng…", "commandCodeApplyingKey": "Đang áp dụng khóa được trình duyệt phê duyệt…", @@ -6433,14 +6432,19 @@ "commandCodeAuthExpired": "Xác thực Command Code đã hết hạn", "commandCodeConnected": "Đã kết nối Command Code", "commandCodeConnectionAdded": "Đã thêm kết nối Command Code", + "clearConnectionCooldown": "Xóa thời gian chờ", + "clearConnectionCooldownInProgress": "Đang xóa…", + "clearConnectionCooldownTitle": "Xóa thời gian chờ ngay — dùng khi hạn mức đã được làm mới ở thượng nguồn", "commandCodeLinkExpired": "Liên kết Command Code đã hết hạn", "commandCodeOpeningStudio": "Đang mở Command Code Studio…", "commandCodePopupBlocked": "Cửa sổ bật lên đã bị chặn. Hãy cho phép cửa sổ bật lên rồi thử lại Command Code Connect.", "commandCodeStartFailed": "Không thể bắt đầu xác thực Command Code", "connectionDeleted": "Đã xóa kết nối", "connectionFallback": "kết nối", + "connectionCooldownCleared": "Đã xóa thời gian chờ — kết nối đã tham gia lại định tuyến", "coolingConnectionsDescription": "Các kết nối này đang nguội sau yêu cầu gần nhất. OmniRoute sẽ bỏ qua chúng đến khi hết giờ — không cần tắt thủ công.", "coolingConnectionsTitle": "Các kết nối đang tạm làm mát ({count})", + "failedClearConnectionCooldown": "Không thể xóa thời gian chờ", "failedDeleteAlias": "Không thể xóa alias", "failedDeleteConnection": "Không thể xóa kết nối", "failedDistributeProxies": "Không thể phân phối proxy.", @@ -6470,16 +6474,11 @@ "providerDetailGlobalFlexActive": "Cấp dịch vụ flex toàn cục của Codex đang hoạt động", "providerDetailGlobalPriorityActive": "Cấp dịch vụ priority toàn cục của Codex đang hoạt động", "proxiesDistributed": "Đã phân phối {assigned} proxy tới {tagLabel}{total} kết nối.", - "rerankEndpoint": "Rerank", + "rerankEndpoint": "Xếp hạng lại", "savedModelEndpointSettings": "Đã lưu cài đặt endpoint mô hình", "searchByModelAria": "Tìm kiếm theo mô hình", "selectSupportedEndpoint": "Chọn ít nhất một endpoint được hỗ trợ", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Xóa thời gian chờ", - "clearConnectionCooldownInProgress": "Đang xóa…", - "clearConnectionCooldownTitle": "Xóa thời gian chờ ngay — dùng khi hạn mức đã được làm mới ở thượng nguồn", - "connectionCooldownCleared": "Đã xóa thời gian chờ — kết nối đã tham gia lại định tuyến", - "failedClearConnectionCooldown": "Không thể xóa thời gian chờ" + "antigravityClientProfileHarness": "Bộ điều khiển / CLI" }, "settings": { "title": "Cài đặt", @@ -6487,7 +6486,7 @@ "security": "Bảo mật", "appearance": "Giao diện", "routing": "Định tuyến", - "cache": "Cache", + "cache": "Bộ nhớ đệm", "resilience": "Khả năng phục hồi", "description": "Mô tả", "enable": "Bật", @@ -6558,7 +6557,7 @@ "systemPrompt": "Prompt hệ thống", "thinkingBudget": "Ngân sách tư duy", "proxy": "Proxy", - "httpProxy": "HTTP Proxy", + "httpProxy": "Proxy HTTP", "1proxy": "1proxy", "proxySubTabsAria": "Các phần proxy", "requestBodyLimitTitle": "Giới hạn phần thân yêu cầu", @@ -6586,7 +6585,7 @@ "modelCatalogCacheTtlSaving": "Đang lưu...", "modelCatalogCacheTtlSave": "Lưu", "modelCatalogCacheTtlCurrent": "Hiện tại: {value} ms", - "mitmProxy": "MITM Proxy", + "mitmProxy": "Proxy MITM", "pricing": "Định giá", "storage": "Lưu trữ", "policies": "Chính sách", @@ -6667,7 +6666,7 @@ "seconds": "giây", "sidebarVisibilityToggle": "Hiển thị các mục trên thanh bên", "enableCache": "Bật cache", - "cacheTTL": "Cache TTL", + "cacheTTL": "TTL bộ nhớ đệm", "maxCacheSize": "Kích thước cache tối đa", "clearCache": "Xóa cache", "cacheCleared": "Đã xóa cache thành công", @@ -6715,7 +6714,7 @@ "enableProxy": "Kích hoạt proxy", "perKeyProxyEnabled": "Kích hoạt gán proxy cho từng khóa", "perKeyProxyEnabledDesc": "Khi được kích hoạt, mỗi kết nối nhà cung cấp có thể sử dụng cài đặt proxy riêng của mình", - "proxyUrl": "Proxy URL", + "proxyUrl": "URL proxy", "pricingRates": "Định dạng mức giá", "currentPricing": "Tổng quan về giá hiện tại", "loadingPricing": "Đang tải dữ liệu giá...", @@ -6750,11 +6749,11 @@ "themeSystem": "Hệ thống", "endpointTunnelVisibility": "Hiển thị đường hầm endpoint", "endpointTunnelVisibilityDesc": "Ẩn các nút điều khiển đường hầm khỏi trang Endpoint mà không làm thay đổi trạng thái đường hầm.", - "showCloudflareTunnel": "Cloudflare Quick Tunnel", + "showCloudflareTunnel": "Đường hầm nhanh Cloudflare", "showCloudflareTunnelDesc": "Hiển thị các nút điều khiển Cloudflare Quick Tunnel trên trang Endpoint.", "showTailscaleFunnel": "Tailscale Funnel", "showTailscaleFunnelDesc": "Hiển thị các nút điều khiển Tailscale Funnel trên trang Endpoint.", - "showNgrokTunnel": "ngrok Tunnel", + "showNgrokTunnel": "Đường hầm ngrok", "showNgrokTunnelDesc": "Hiển thị các nút điều khiển ngrok Tunnel trên trang Endpoint.", "sidebarVisibility": "Ẩn các mục trên thanh bên", "sidebarVisibilityDesc": "Ẩn bất kỳ mục điều hướng nào trên thanh bên để giảm bớt sự lộn xộn về mặt trực quan mà không vô hiệu hóa bất kỳ tính năng nào", @@ -6914,7 +6913,7 @@ "healthcheckLatency": "Độ trễ", "proxyDocumentationScopeTitle": "Thứ tự ưu tiên phạm vi proxy", "proxyDocumentationScopeDescBefore": "OmniRoute xác định proxy gửi đi theo thứ tự ưu tiên:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "tổ hợp → tài khoản → nhà cung cấp → toàn cục", "proxyDocumentationScopeDescAfter": ". Phạm vi cụ thể nhất sẽ được ưu tiên.", "proxyDocumentationAddTitle": "Thêm proxy tùy chỉnh", "proxyDocumentationAddDescBefore": "Đi tới tab", @@ -6949,7 +6948,7 @@ "proxyFreePoolAddSelected": "Thêm các mục đã chọn vào nhóm proxy", "proxyFreePoolAddVisible": "Thêm tất cả các mục đang hiển thị vào nhóm proxy", "proxyFreePoolSource": "Nguồn", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Máy chủ:Cổng", "proxyFreePoolType": "Loại", "proxyFreePoolCountry": "Quốc gia", "proxyFreePoolQuality": "Chất lượng", @@ -7057,7 +7056,7 @@ "routingAdvancedGuideTitle": "Hướng dẫn định tuyến nâng cao", "routingAdvancedGuideHint1": "Chiến lược này được đồng bộ hóa với cả giá trị mặc định của combo mới và định tuyến dự phòng tài khoản toàn cục.", "routingAdvancedGuideHint2": "Sử dụng Fill First để có thứ tự ưu tiên tài khoản dễ dự đoán, kết hợp Round Robin với Sticky Limit cho các lô tài khoản và dùng P2C để chống chịu tốt hơn trước độ trễ.", - "fillFirst": "Fill First", + "fillFirst": "Lấp đầy trước", "fillFirstDesc": "Sử dụng các tài khoản theo thứ tự ưu tiên", "roundRobin": "Round Robin", "roundRobinDesc": "Xoay vòng qua tất cả các tài khoản", @@ -7071,11 +7070,11 @@ "costOptDesc": "Ưu tiên tài khoản khả dụng rẻ nhất", "resetAware": "RR có nhận biết thời điểm đặt lại", "resetAwareDesc": "Ưu tiên các tài khoản có hạn ngạch còn lại ở mức tốt và thời điểm đặt lại sớm hơn", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "Theo trọng số hạn ngạch", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "Ngẫu nhiên nghiêm ngặt", "strictRandomDesc": "Trộn bộ bài — sử dụng mỗi tài khoản một lần trước khi trộn lại", - "stickyLimit": "Sticky Limit", + "stickyLimit": "Giới hạn cố định", "stickyLimitDesc": "Số cuộc gọi trên mỗi tài khoản trước khi chuyển sang tài khoản khác khi cơ chế dự phòng tài khoản toàn cầu sử dụng luân phiên", "routingStrategyTitle": "Chiến lược định tuyến", "routingStrategySubtitle": "Tương ứng với 9router: luân phiên tài khoản, giới hạn cố định và luân phiên combo", @@ -7093,14 +7092,14 @@ "providerAccountRoutingDesc": "Ghi đè chiến lược tài khoản toàn cầu cho nhà cung cấp này (tương thích với 9router).", "providerRoutingStrategy": "Chiến lược tài khoản", "providerRoutingInheritGlobal": "Kế thừa mặc định toàn cầu", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "Ngưỡng kiểm tra trước hạn mức", + "quotaPreflightSubtitle": "Bỏ qua các tài khoản đã hết hạn mức trước khi gửi yêu cầu đến máy chủ thượng nguồn", + "quotaPreflightEnable": "Bật kiểm tra trước hạn mức", + "quotaPreflightEnableDesc": "Trước mỗi yêu cầu, hãy kiểm tra hạn mức còn lại của tài khoản (theo các khoảng 5 giờ / tuần / tháng). Các tài khoản có hạn mức bằng hoặc thấp hơn ngưỡng sẽ bị bỏ qua mà không gọi đến máy chủ thượng nguồn. Ngưỡng theo từng khoảng được đặt trên trang Hạn mức nhà cung cấp luôn được ưu tiên hơn giá trị mặc định tại đây.", + "quotaPreflightCutoff": "Ngưỡng toàn cục (% tối thiểu còn lại)", + "quotaPreflightCutoffDesc": "Ngừng sử dụng tài khoản khi hạn mức còn lại giảm xuống bằng hoặc thấp hơn tỷ lệ phần trăm này, áp dụng cho mọi khoảng chưa có ngưỡng riêng. Khớp với các thanh % còn lại trên trang Hạn mức nhà cung cấp.", + "quotaPreflightWindowsHint": "Các khoảng có ngưỡng riêng theo từng khoảng hoặc từng nhà cung cấp (được đặt trong hộp thoại Ngưỡng trên trang Hạn mức nhà cung cấp) không bị ảnh hưởng bởi giá trị mặc định này.", + "quotaPreflightLoadFailed": "Không thể tải cài đặt kiểm tra trước hạn mức.", "modelAliases": "Bí danh mô hình", "modelAliasesTitle": "Bí danh mô hình", "modelAliasesDesc": "Ánh xạ lại tên mô hình bằng cách khớp chính xác hoặc mẫu ký tự đại diện.", @@ -7192,7 +7191,7 @@ "comboStrategyAria": "Chiến lược tổ hợp", "priority": "Ưu tiên", "weighted": "Có trọng số", - "contextRelay": "Context Relay", + "contextRelay": "Chuyển tiếp ngữ cảnh", "contextRelayDesc": "Định tuyến kiểu ưu tiên với việc tự động chuyển giao ngữ cảnh khi xảy ra xoay vòng tài khoản", "maxRetriesLabel": "Số lần thử lại tối đa", "retryDelayLabel": "Độ trễ thử lại (ms)", @@ -7333,7 +7332,7 @@ "configured": "đã định cấu hình", "none": "Không có", "modelOverrideValuePlaceholder": "Giá trị số", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "Các giá trị tiếng Anh được phân tách bằng dấu phẩy, ví dụ: low, medium, high", "addKeyValue": "Thêm cặp khóa-giá trị", "noModelOverrides": "Không có ghi đè nào được định cấu hình cho mô hình này.", "modelOverrideLoadFailed": "Tải ghi đè mô hình thất bại", @@ -7419,8 +7418,8 @@ "resetting": "Đang đặt lại...", "contextOpt": "Tối ưu hóa ngữ cảnh", "contextOptDesc": "Định tuyến dựa trên yêu cầu cửa sổ ngữ cảnh và độ dài hội thoại", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", + "cacheOpt": "Tối ưu hóa bộ nhớ đệm", + "cacheOptDesc": "Duy trì cùng một tiền tố lời nhắc có thể tái sử dụng trên cùng một tài khoản nhà cung cấp", "priorityDesc": "Dự phòng tuần tự - thử nhà cung cấp 1 trước, sau đó là nhà cung cấp 2, v.v.", "weightedDesc": "Phân phối lưu lượng theo tỷ trọng phần trăm giữa các nhà cung cấp", "modelRoutingTitle": "Quy tắc định tuyến mô hình", @@ -7492,13 +7491,13 @@ "compressionMode": "Chế độ nén", "compressionModeOff": "Tắt", "compressionModeOffDesc": "Không áp dụng nén", - "compressionModeLite": "Lite", + "compressionModeLite": "Nhẹ", "compressionModeLiteDesc": "Giảm khoảng trắng và dòng trống", "compressionModeStandard": "Tiêu chuẩn (Caveman)", "compressionModeStandardDesc": "Nén dựa trên quy tắc với hơn 30 mẫu, giữ lại khối mã và URL", "compressionModeAggressive": "Mạnh", "compressionModeAggressiveDesc": "Tóm tắt + nén kết quả công cụ + lão hóa lũy tiến để tiết kiệm tối đa", - "compressionModeUltra": "Ultra", + "compressionModeUltra": "Siêu cấp", "compressionModeUltraDesc": "Cắt tỉa token theo quy tắc kinh nghiệm, có thể dự phòng bằng SLM cục bộ", "compressionAggressiveConfig": "Cấu hình cơ chế Mạnh", "compressionAggressiveConfigDesc": "Tinh chỉnh tóm tắt, nén công cụ và ngưỡng lão hóa", @@ -7522,7 +7521,7 @@ "compressionToolStrategiesDesc": "Bật/tắt chiến lược nén cho các loại kết quả công cụ khác nhau", "compressionGeneral": "Cài đặt chung", "compressionAutoTrigger": "Ngưỡng tự động kích hoạt", - "compressionCacheTTL": "Cache TTL", + "compressionCacheTTL": "TTL bộ nhớ đệm", "compressionPreserveSystem": "Giữ lại prompt hệ thống", "compressionPreserveSystemAlways": "Luôn luôn", "compressionPreserveSystemWhenNoCache": "Khi không có cache", @@ -7874,11 +7873,11 @@ "description": "Lọc đầu ra của lệnh." }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Đầu ra công cụ Responses", + "description": "Nén thận trọng đối với đầu ra của các công cụ Responses được hỗ trợ." }, "headroom": { - "label": "Headroom", + "label": "Khoảng dự phòng", "description": "Nén gọn JSON dạng bảng." }, "relevance": { @@ -7886,7 +7885,7 @@ "description": "Chấm điểm và trích xuất câu theo truy vấn gần nhất của người dùng." }, "caveman": { - "label": "Caveman", + "label": "Người nguyên thủy", "description": "Nén văn xuôi theo quy tắc." }, "aggressive": { @@ -7916,8 +7915,8 @@ "description": "Theo nguyên tắc YAGNI: thay đổi nhỏ nhất có thể chạy được, không thêm lớp trừu tượng ngoài yêu cầu." }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "Tóc đuôi ngựa (lập trình viên cấp cao lười biếng)", + "description": "Kỷ luật của lập trình viên cấp cao lười biếng: đi theo từng nấc thang YAGNI, khắc phục nguyên nhân gốc rễ, tạo phần thay đổi hoạt động được nhỏ nhất." }, "i-have-adhd": { "label": "Tôi bị ADHD (ưu tiên hành động)", @@ -7939,6 +7938,14 @@ "cliproxyapiFallback": "Dự phòng CLIProxyAPI", "cliproxyapiEnableFallback": "Bật dự phòng CLIProxyAPI", "cliproxyapiUrl": "URL CLIProxyAPI", + "headroomProxyTitle": "Proxy Headroom", + "headroomProxyDesc": "URL của proxy tiết kiệm token Headroom (tùy chọn). Để trống thì dùng HEADROOM_URL hoặc http://localhost:8787.", + "headroomProxyUrl": "URL Headroom", + "headroomProxyUrlHint": "URL loopback có thể khởi chạy từ trang này. URL bên ngoài chỉ được kiểm tra.", + "headroomProxySave": "Lưu", + "headroomProxyStart": "Bắt đầu", + "headroomProxyStop": "Dừng", + "headroomProxyExternalHint": "URL này không phải loopback, nên OmniRoute sẽ không khởi chạy CLI cục bộ.", "cliproxyapiStatus": "Trạng thái CLIProxyAPI", "cliproxyapiNotDetected": "Không phát hiện thấy", "cliproxyapiImportAuthTitle": "Nhập tài khoản từ CLIProxyAPI", @@ -7946,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Nhập tài khoản", "payloadRulesTitle": "Quy tắc payload", "payloadRulesDesc": "Cấu hình việc biến đổi payload yêu cầu theo mô hình và giao thức. Các thay đổi được lưu trong cài đặt và được tải lại nóng vào môi trường chạy ngay sau khi lưu.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "mặc định", "payloadRuleDefaultDesc": "Chỉ áp dụng các tham số khi đường dẫn đích bị thiếu trong payload gửi đi.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "ghi đè", "payloadRuleOverrideDesc": "Buộc ghi đè các giá trị vào payload, thay thế mọi giá trị đã có tại đường dẫn đó.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "bộ lọc", "payloadRuleFilterDesc": "Loại bỏ các tham số bị chặn khỏi payload trước khi gửi yêu cầu đến máy chủ thượng nguồn.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Giống như default, nhưng các giá trị chuỗi sẽ được phân tích cú pháp thành JSON trước nếu có thể. Bí danh nhập cũ default-raw cũng được chấp nhận khi lưu.", @@ -7993,7 +8000,7 @@ "responsesStateModePreserve": "Giữ lại", "responsesStateHint": "Tự động loại bỏ previous_response_id, trừ khi một kết nối bật rõ ràng tính năng lưu trữ OpenAI Responses. Loại bỏ là lựa chọn an toàn nhất cho các ứng dụng khách không trạng thái như VS Code Custom Endpoint; khi đó, ngữ cảnh phụ thuộc vào việc ứng dụng khách gửi toàn bộ lịch sử.", "responsesStateSaveError": "Không thể cập nhật cài đặt trạng thái Responses", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Tầng nhanh Codex", "codexFastTierDesc": "Thêm service_tier=priority trên toàn cục cho các yêu cầu OpenAI Codex.", "codexFastTierHint": "Khi được bật, OmniRoute sẽ thêm service_tier=priority vào các yêu cầu Codex gửi đi của những kết nối chưa chỉ định cấp dịch vụ. Cấp Priority yêu cầu khóa API OpenAI Enterprise hoặc đường dẫn Codex xác thực bằng ChatGPT; các loại khóa khác sẽ nhận được lỗi liên quan đến cấp từ OpenAI. Cài đặt riêng cho từng kết nối trên trang nhà cung cấp Codex được ưu tiên.", "codexFastTierSaveError": "Không thể cập nhật cài đặt Codex Fast Tier", @@ -8009,7 +8016,7 @@ "codexFastTierModelsLabel": "Các mô hình cấp nhanh (Fast-tier)", "codexFastTierModelsHint": "Chỉ các mô hình được chọn mới nhận service_tier khi Fast Tier được bật.", "codexFastTierModelCheckbox": "Bật Fast Tier cho {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Chế độ nhanh Claude", "claudeFastModeDesc": "Cho phép các yêu cầu Claude đã chọn sử dụng Anthropic Fast Mode (speed:\"fast\").", "claudeFastModeHint": "Anthropic không chính thức hỗ trợ Fast Mode cho các ứng dụng khách kiểu SDK. Khi được bật, OmniRoute sẽ chuyển tiếp header X-CPA-Force-Fast-Mode để một bản dựng CLIProxyAPI được ghép nối có thể đăng ký bằng cách giả mạo điểm vào. Chỉ các mô hình Opus được liệt kê mới bị giới hạn bởi bước kiểm tra phía ứng dụng khách của Anthropic. Cấp gói đăng ký, gói Max và số dư tín dụng Fast Mode vẫn được thực thi ở phía máy chủ — Anthropic có thể trả về lỗi out_of_credits ngay cả khi tùy chọn này đang bật.", "claudeFastModeModelsLabel": "Áp dụng cho các mô hình ({count})", @@ -8175,7 +8182,7 @@ "cloudflareRelayTokenHowto": "Tạo token API trong mục Hồ sơ của tôi -> Token API -> Tạo token -> Token tùy chỉnh -> Tài khoản / Workers Scripts / Chỉnh sửa.", "cloudflareRelayAccountIdLabel": "ID tài khoản Cloudflare", "cloudflareRelayAccountIdHint": "Có thể tìm thấy ở phía bên phải trang tổng quan Cloudflare.", - "cloudflareRelayApiTokenLabel": "Cloudflare API Token", + "cloudflareRelayApiTokenLabel": "Token API Cloudflare", "cloudflareRelayApiTokenHint": "Yêu cầu quyền 'Workers Scripts: Edit'. Token chỉ được sử dụng tại thời điểm triển khai và không bao giờ được lưu trữ.", "cloudflareRelayProjectNameLabel": "Tên Worker", "cloudflareRelayFreeTierNote": "Gói miễn phí: 100.000 yêu cầu/ngày cho mỗi tài khoản Cloudflare.", @@ -8210,16 +8217,16 @@ "modelLockoutMaxBackoffStepsDescription": "Số bước tăng thời gian chờ tối đa trước khi thời gian chờ ngừng tăng. Trong hầu hết cấu hình, giới hạn Thời gian chờ tối đa sẽ được đạt đến trước, vì vậy đây là giới hạn an toàn trong trường hợp tăng Thời gian chờ tối đa.", "disableSessionStickiness": "Tắt tính năng gắn kết phiên", "disableSessionStickinessDesc": "Các tổ hợp luân phiên và ngẫu nhiên sẽ chuyển sang một kết nối khác với mỗi yêu cầu, thay vì gắn toàn bộ cuộc trò chuyện với một kết nối dựa trên mã băm của tin nhắn đầu tiên. Hãy để tùy chọn này tắt để duy trì các lần trúng cache prompt cho các cuộc trò chuyện nhiều lượt. Các thiết lập ghi đè theo từng tổ hợp được ưu tiên.", - "promptCacheAffinity": "Prompt-cache locality routing", - "promptCacheAffinityDesc": "Prefer the same provider account for matching prompt-cache keys while preserving health and quota failover.", + "promptCacheAffinity": "Định tuyến theo tính cục bộ của bộ nhớ đệm lời nhắc", + "promptCacheAffinityDesc": "Ưu tiên cùng một tài khoản nhà cung cấp cho các khóa bộ nhớ đệm lời nhắc khớp nhau, đồng thời duy trì khả năng chuyển đổi dự phòng theo tình trạng và hạn mức.", "reasoningTokenBuffer": "Bộ đệm token suy luận", "reasoningTokenBufferDesc": "Cho phép định tuyến combo thêm khoảng dư max_tokens chỉ với các mô hình suy luận đã biết, khi toàn bộ bộ đệm vẫn nằm trong giới hạn đầu ra đã biết.", "zeroLatencyOptimizations": "Tối ưu hóa zero-latency", "zeroLatencyOptimizationsDesc": "Bật hedging, bỏ qua TTFT theo dự đoán và nén dự phòng chủ động. Để tắt nếu bạn không muốn các tính năng độ trễ này chạy đua giữa các đích hoặc nén các yêu cầu dự phòng.", - "credentialRedaction": "Credential Redaction", - "credentialRedactionDesc": "Redact API keys, tokens, and secrets from context sent to providers and from responses.", - "enableCredentialRedaction": "Enable credential redaction", - "enableCredentialRedactionDesc": "Scrubs API keys, tokens, private keys, and JWTs from messages, tool calls, and responses.", + "credentialRedaction": "Ẩn thông tin xác thực", + "credentialRedactionDesc": "Ẩn khóa API, token và thông tin bí mật khỏi ngữ cảnh được gửi đến nhà cung cấp và khỏi các phản hồi.", + "enableCredentialRedaction": "Bật ẩn thông tin xác thực", + "enableCredentialRedactionDesc": "Loại bỏ khóa API, token, khóa riêng tư và JWT khỏi tin nhắn, lệnh gọi công cụ và phản hồi.", "pricingAutoSyncDisabled": "Đã tắt đồng bộ hóa tự động", "pricingAutoSyncEnabled": "Đã bật đồng bộ hóa tự động", "modalityBridgeIntro": "Chuyển nội dung đa phương thức thành văn bản trước khi nội dung đến các mô hình chỉ xử lý văn bản. Các cầu nối thị giác, âm thanh và video đều có sẵn và có thể cấu hình.", @@ -8344,14 +8351,14 @@ "oneproxyClearAllConfirm": "Xóa tất cả proxy 1proxy?", "memorySkillsSkillsmpDescription": "Kết nối với SkillsMP để khám phá và cài đặt kỹ năng từ marketplace.", "memorySkillsActiveProviderDescription": "Chọn nhà cung cấp mà trang Skills sử dụng để tìm kiếm và cài đặt.", - "memorySkillsSkillsmpProviderTitle": "SkillsMP Marketplace", + "memorySkillsSkillsmpProviderTitle": "Chợ SkillsMP", "memorySkillsSkillsmpProviderDescription": "Marketplace có xác thực (sử dụng khóa API SkillsMP của bạn).", "memorySkillsSkillsshProviderTitle": "Thư mục skills.sh", "memorySkillsSkillsshProviderDescription": "Nhà cung cấp thư mục công khai (không cần khóa API).", "routingCcBridgeCatalogName": "Bridge CC tương thích Anthropic", "routingClaudeProviderName": "Claude (OAuth)", "routingClaudeProviderDescription": "Nhà cung cấp Claude gốc với token được cấp qua OAuth.", - "routingCcBridgeName": "Claude-Code Bridge", + "routingCcBridgeName": "Cầu nối Claude-Code", "routingCcBridgeDescription": "Các endpoint relay sử dụng khóa API (anthropic-compatible-cc-*).", "routingCustomProviderDescription": "Nhà cung cấp tùy chỉnh.", "routingUnknownOpKind": "Loại thao tác không xác định: {kind}", @@ -8372,18 +8379,10 @@ "cliproxyapiHealth": "Sức Khỏe", "cliproxyapiPort": "Cổng", "qdrantHost": "Máy chủ", - "qdrantCollection": "Bộ Sưu Tập", - "headroomProxyTitle": "Proxy Headroom", - "headroomProxyDesc": "URL của proxy tiết kiệm token Headroom (tùy chọn). Để trống thì dùng HEADROOM_URL hoặc http://localhost:8787.", - "headroomProxyUrl": "URL Headroom", - "headroomProxyUrlHint": "URL loopback có thể khởi chạy từ trang này. URL bên ngoài chỉ được kiểm tra.", - "headroomProxySave": "Lưu", - "headroomProxyStart": "Bắt đầu", - "headroomProxyStop": "Dừng", - "headroomProxyExternalHint": "URL này không phải loopback, nên OmniRoute sẽ không khởi chạy CLI cục bộ." + "qdrantCollection": "Bộ Sưu Tập" }, "contextRtk": { - "title": "RTK Engine", + "title": "Công cụ RTK", "description": "Nén nhận biết lệnh cho đầu ra của công cụ, nhật ký terminal và kết quả bản dựng.", "enabled": "Đã bật", "intensity": "Cường độ", @@ -8507,7 +8506,7 @@ "description": "Nén không mất dữ liệu các mảng JSON đồng nhất thành dạng bảng kèm dấu mốc số hàng rõ ràng." }, "session-dedup": { - "name": "Session Dedup", + "name": "Khử trùng lặp phiên", "description": "Khử trùng lặp các khối giữa nhiều lượt bằng dấu mốc nội dung có thể khôi phục." }, "ccr": { @@ -8519,15 +8518,15 @@ "description": "Phân loại token theo ngữ nghĩa bằng ONNX. Chỉ nén văn xuôi; khối mã và các cấu trúc cần giữ nguyên được bảo vệ. Khi mô hình hoặc worker lỗi, dữ liệu vẫn được chuyển tiếp nguyên vẹn." }, "lite": { - "name": "Lite", + "name": "Nhẹ", "description": "Giảm nhanh khoảng trắng, kết quả công cụ và URL hình ảnh." }, "aggressive": { - "name": "Aggressive", + "name": "Mạnh", "description": "Tóm tắt, nén kết quả công cụ và làm cũ nội dung theo từng bước." }, "ultra": { - "name": "Ultra", + "name": "Cực mạnh", "description": "Lược bỏ token theo kinh nghiệm, có thể dự phòng bằng SLM cục bộ." } }, @@ -8609,18 +8608,18 @@ "bert-base": "BERT-base (710 MB, độ chính xác cao hơn)" }, "intensity": { - "lite": "Lite", + "lite": "Nhẹ", "full": "Đầy đủ", - "ultra": "Ultra" + "ultra": "Cực mạnh" } }, "modeOptions": { "default": "Mặc định", "off": "Tắt", - "lite": "Lite", - "standard": "Standard", + "lite": "Nhẹ", + "standard": "Tiêu chuẩn", "aggressive": "Mạnh", - "ultra": "Ultra", + "ultra": "Cực mạnh", "responsesToolOutput": "Đầu ra công cụ Responses" } }, @@ -8669,6 +8668,8 @@ "contextEditingNote": "Hiện chỉ khả dụng với Claude (Anthropic). Đây là chế độ ủy quyền: nhà cung cấp xóa các khối sử dụng công cụ cũ ở phía máy chủ — OmniRoute không viết lại tin nhắn. Chế độ này không ảnh hưởng đến các nhà cung cấp khác.", "namedCombos": "Tổ hợp có tên", "namedCombosDescription": "Lưu các quy trình khác nhau và gán chúng cho từng tổ hợp định tuyến cụ thể.", + "activeProfileMasterSwitchOffWarning": "Hồ sơ đang dùng bên dưới sẽ không chạy cho đến khi công tắc tổng \"Nén prompt\" được bật.", + "activeProfileMasterSwitchOffCta": "Bật trong Cài đặt", "comboNamePlaceholder": "Tên tổ hợp", "descriptionPlaceholder": "Mô tả", "nameRequired": "Hãy nhập tên tổ hợp trước khi lưu.", @@ -8682,9 +8683,7 @@ "languagePacksList": "Gói ngôn ngữ: {packs}", "dragToReorder": "Kéo để sắp xếp lại bước", "engine": "Bộ máy", - "intensity": "Cường độ", - "activeProfileMasterSwitchOffWarning": "Hồ sơ đang dùng bên dưới sẽ không chạy cho đến khi công tắc tổng \"Nén prompt\" được bật.", - "activeProfileMasterSwitchOffCta": "Bật trong Cài đặt" + "intensity": "Cường độ" }, "compressionStudio": { "noRun": "Chưa có lượt nén nào.", @@ -8742,7 +8741,7 @@ "compareTab": "So sánh", "encoderComparison": "So sánh encoder A/B — {count} mảng", "encoderWinner": "tốt nhất: {winner}", - "encoder": "encoder", + "encoder": "bộ mã hóa", "bytes": "byte", "tokensCl100k": "token (cl100k)" }, @@ -8866,7 +8865,7 @@ "networkInstallFailed": "Lỗi mạng — không thể kết nối tới endpoint cài đặt", "availableModels": "Các mô hình khả dụng", "modelsLoading": "Đang tải…", - "modelsDiscovered": "{count, plural, one {# model discovered} other {# models discovered}}", + "modelsDiscovered": "{count, plural, one {Đã phát hiện # mô hình} other {Đã phát hiện # mô hình}}", "modelsLoadFailed": "Không thể tải danh sách mô hình", "refreshing": "Đang làm mới…", "refreshNow": "Làm mới ngay", @@ -8995,7 +8994,7 @@ "ideCliIntegrations": "Tích hợp IDE/CLI", "inMemoryNote": "Lưu ý: Các sự kiện được lưu trong bộ nhớ và sẽ được đặt lại khi máy chủ khởi động lại.", "ok": "OK", - "errorShort": "ERR", + "errorShort": "LỖI", "formatConverter": "Bộ chuyển đổi định dạng", "formatConverterDescription": "Dán hoặc nhập phần thân của yêu cầu JSON. Trình dịch sẽ tự động phát hiện định dạng nguồn và chuyển đổi sang định dạng đích. Sử dụng tính năng này để gỡ lỗi cách OmniRoute dịch các yêu cầu giữa các định dạng (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).", "translationPathHubSpoke": "{source} → OpenAI (trung gian) → {target}", @@ -9178,8 +9177,8 @@ "comboRouted": "Combo đã định tuyến", "uniqueEndpoints": "Các endpoint duy nhất", "routeDetails": "Chi tiết định tuyến", - "comboBadge": "Combo", - "routeEndpointLabel": "Endpoint", + "comboBadge": "Kết hợp", + "routeEndpointLabel": "Điểm cuối", "routeConnectionLabel": "Kết nối", "scenarioVision": "Vision (hiểu hình ảnh)", "scenarioSchemaCoercion": "Ép kiểu lược đồ (đầu ra có cấu trúc)", @@ -9189,7 +9188,7 @@ "conceptHeadline": "Ứng dụng của bạn nói \"ngôn ngữ\" của một API. Trình chuyển đổi sẽ chuyển đổi ngôn ngữ đó để sử dụng nhà cung cấp khác.", "conceptDiagramAppLabel": "Ứng dụng của bạn", "conceptDiagramSourceLabel": "Định dạng nguồn", - "conceptDiagramHubLabel": "OpenAI (hub)", + "conceptDiagramHubLabel": "OpenAI (trung tâm)", "conceptDiagramTargetLabel": "Nhà cung cấp đích", "conceptDiagramExampleApp": "Ví dụ: Anthropic SDK", "conceptDiagramExampleSource": "claude", @@ -9295,7 +9294,7 @@ "kimiMonthlyLimit": "Giới hạn hàng tháng", "kimiMonthlyLimitUnlimited": "Không giới hạn", "kimiAdditionalCredits": "Tín dụng bổ sung", - "loggerTab": "Logger", + "loggerTab": "Trình ghi nhật ký", "proxyTab": "Proxy", "budgetManagement": "Quản lý ngân sách", "budgetSaved": "Đã lưu giới hạn ngân sách", @@ -9322,7 +9321,7 @@ "latencyP50": "p50", "latencyP95": "p95", "latencyP99": "p99", - "promptCache": "Prompt Cache", + "promptCache": "Bộ nhớ đệm lời nhắc", "systemHealth": "Tình trạng hệ thống", "entries": "Bản ghi", "activeCount": "{count} đang hoạt động", @@ -9344,7 +9343,7 @@ "evaluateStepDescription": "Các phản hồi được so sánh với các tiêu chí dự kiến. Xem kết quả đạt/không đạt cho từng trường hợp với các số liệu về độ trễ và phản hồi chi tiết.", "evalsStrategyContainsLabel": "Chứa", "evalsStrategyExactLabel": "Khớp chính xác", - "evalsStrategyRegexLabel": "Regex", + "evalsStrategyRegexLabel": "Biểu thức chính quy", "evalsStrategyCustomLabel": "Logic tùy chỉnh", "evalsStrategyContainsDescription": "Kiểm tra xem đầu ra của LLM có chứa chuỗi con dự kiến hay không.", "evalsStrategyExactDescription": "Kiểm tra xem đầu ra của LLM có khớp chính xác với giá trị dự kiến hay không.", @@ -9473,7 +9472,7 @@ "tierPro": "Pro", "tierPlus": "Plus", "tierFree": "Miễn phí", - "tierLite": "Lite", + "tierLite": "Nhẹ", "tierUnknown": "Không xác định", "statTotal": "Tổng cộng", "statCritical": "Nghiêm trọng", @@ -9599,7 +9598,7 @@ "suiteBuilderCaseExpectedLabel": "Giá trị kỳ vọng", "historyLatency": "Độ trễ", "suiteBuilderCaseTagsPlaceholder": "Ví dụ: coding, python", - "targetTypeCombo": "Combo", + "targetTypeCombo": "Kết hợp", "scorecardPassed": "Đã đạt", "suiteBuilderCaseTagsLabel": "Thẻ", "suiteBuilderNewSuite": "Bộ kiểm thử mới", @@ -9644,21 +9643,21 @@ "budgetKpiActiveKeys": "Khóa hoạt động", "budgetPageTitle": "Ngân sách", "budgetPageDescription": "Đặt giới hạn chi tiêu hằng ngày, hằng tuần và hằng tháng cho từng khóa API.", - "budgetTemplateStorageHint": "{count, plural, one {# template} other {# templates}} · edit via localStorage:", + "budgetTemplateStorageHint": "{count, plural, one {# mẫu} other {# mẫu}} · chỉnh sửa qua localStorage:", "budgetAboveLimitShort": "vượt giới hạn ⚠", "budgetOnTrackShort": "đúng tiến độ", "budgetAtOrAboveWarning": "≥ ngưỡng cảnh báo", "budgetTemplates": "Mẫu", "budgetSelectKeysFirst": "Hãy chọn khóa trước khi áp dụng", - "budgetApplyToSelected": "Apply to {count, plural, one {# selected key} other {# selected keys}}", - "budgetSelectedTemplateHint": "{count, plural, one {# selected} other {# selected}} · click a template to apply", + "budgetApplyToSelected": "Áp dụng cho {count, plural, one {# khóa đã chọn} other {# khóa đã chọn}}", + "budgetSelectedTemplateHint": "{count, plural, one {Đã chọn # mục} other {Đã chọn # mục}} · nhấp vào một mẫu để áp dụng", "budgetTemplateMonthlyAmount": "{amount} US$/tháng", "budgetTemplateDailyAmount": "{amount} US$/ngày", "budgetNoKeysSelected": "Chưa chọn khóa nào", - "budgetTemplateApplied": "Applied \"{template}\" to {count, plural, one {# key} other {# keys}}", + "budgetTemplateApplied": "Đã áp dụng \"{template}\" cho {count, plural, one {# khóa} other {# khóa}}", "budgetTemplateApplyFailed": "Không thể áp dụng mẫu", "budgetTemplateNames": { - "tpl-prod": "Production", + "tpl-prod": "Sản xuất", "tpl-dev": "Phát triển", "tpl-ci": "CI" }, @@ -9753,7 +9752,7 @@ "proxy": "Proxy", "level": "Cấp độ", "directNative": "Trực tiếp (gốc)", - "combo": "Combo", + "combo": "Kết hợp", "inputTokens": "I:", "outputTokens": "O:" }, @@ -9864,7 +9863,7 @@ "methodManualDescription": "Xóa mật khẩu khỏi cơ sở dữ liệu và thiết lập mật khẩu mới khi khởi động:", "setPasswordInYour": "Đặt mật khẩu mới trong tệp của bạn", "fileLabelSuffix": "tập tin:", - "newPasswordPlaceholder": "your_new_password", + "newPasswordPlaceholder": "mật_khẩu_mới_của_bạn", "deleteSettingsFile": "Xóa", "orRemovePasswordHashField": "hoặc xóa trường passwordHash", "restartServerWithNewPassword": "Khởi động lại máy chủ - máy chủ sẽ sử dụng mật khẩu mới", @@ -9872,7 +9871,7 @@ "forgotPassword": "Quên mật khẩu?", "continueWithOidc": "Tiếp tục với OIDC", "defaultPasswordHint": "Mật khẩu mặc định: CHANGEME (trừ khi INITIAL_PASSWORD đã được đặt)", - "Authorization": "Authorization", + "Authorization": "Ủy quyền", "Content-Disposition": "Content-Disposition", "waitingForAuthorization": "Đang chờ cấp quyền...", "waitingForGoogleAuthorization": "Đang chờ cấp quyền qua Google...", @@ -9983,7 +9982,7 @@ "openDashboardStepDescription": "Cấu hình các nhà cung cấp và khóa API thông qua giao diện web", "routeRequests": "Định tuyến yêu cầu", "routeRequestsStepDescription": "Trỏ công cụ CLI của bạn tới {endpoint}", - "terminal": "terminal", + "terminal": "thiết bị đầu cuối", "copy": "Sao chép", "copied": "✓ Đã sao chép", "startingOmniRoute": "Đang khởi động OmniRoute...", @@ -10265,7 +10264,7 @@ "apiExplorerDescription": "Dùng thử các endpoint OmniRoute trực tiếp. Chọn một endpoint, cấu hình yêu cầu của bạn và xem phản hồi theo thời gian thực.", "apiExplorerSseStarted": "Luồng SSE đã bắt đầu — hãy kiểm tra terminal/công cụ dành cho nhà phát triển để xem đầu ra theo thời gian thực.", "apiExplorerError": "Lỗi: {message}", - "apiExplorerAuth": "auth", + "apiExplorerAuth": "xác thực", "apiExplorerResponseLabel": "Phản hồi", "apiExplorerSelectEndpoint": "Chọn một endpoint để khám phá", "apiExplorerChooseApi": "Chọn một API từ thanh bên để xem chi tiết và dùng thử trực tiếp", @@ -10424,7 +10423,7 @@ "howToUseStep3": "Tác nhân sẽ tải SKILL.md và tự học API hoặc CLI của OmniRoute — không cần đọc tài liệu thủ công." }, "cloudAgents": { - "title": "Cloud Agents", + "title": "Tác nhân đám mây", "description": "Quản lý các tác nhân lập trình tự chủ (Jules, Devin, Codex Cloud)", "loading": "Đang tải các tác vụ...", "aboutTitle": "Giới thiệu về Tác nhân đám mây", @@ -10682,11 +10681,11 @@ "proxyConfigModal": { "levelGlobal": "Toàn cầu", "levelProvider": "Nhà cung cấp", - "levelCombo": "Combo", + "levelCombo": "Kết hợp", "levelKey": "Khóa", "levelDirect": "Trực tiếp (không dùng proxy)", "titleGlobal": "Cấu hình proxy toàn cầu", - "titleLevel": "{level} Proxy — {label}", + "titleLevel": "Proxy {level} — {label}", "loading": "Đang tải cấu hình proxy...", "inheritingFrom": "Kế thừa từ", "source": "Nguồn", @@ -10768,7 +10767,7 @@ "errorImportAccessToken": "Không thể nhập access token", "errorSessionNotInitialized": "Phiên OAuth chưa được khởi tạo. Hãy khởi động lại luồng kết nối và thử lại.", "errorNoAuthorizationCode": "Không tìm thấy authorization code. Hãy dán callback URL hoặc Authentication Code.", - "tabDeviceCode": "Device Code", + "tabDeviceCode": "Mã thiết bị", "tabBrowserLogin": "Đăng nhập bằng trình duyệt", "tabImportAuthJson": "Nhập auth.json", "tabPasteApiKey": "Dán API Key", @@ -10777,9 +10776,9 @@ "devinDesktopPasteDescription": "Dán khóa API Devin hiện có từ một phiên Devin đã xác thực. Khả năng xuất khóa và các bước thực hiện khác nhau tùy theo phiên bản Devin và tài khoản.", "devinPasteDescription": "Cung cấp WINDSURF_API_KEY của bạn (lấy qua `devin auth login` hoặc qua lệnh \"Windsurf: Provide Auth Token\" trong IDE Windsurf).", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "auth.json của Grok Build", "apiTokenPlaceholder": "ws-...", - "apiKeyTokenLabel": "API Key / Token", + "apiKeyTokenLabel": "Khóa API / Token", "saving": "Đang lưu…", "saveConnection": "Lưu kết nối", "gheDescription": "Nhập URL cơ sở của phiên bản GitHub Enterprise của bạn (ví dụ: https://ghe.yourcompany.com).", @@ -10793,23 +10792,23 @@ }, "cursorAuthModal": { "title": "Kết nối Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "Đăng nhập bằng Cursor", + "tabImport": "Nhập token", + "loginDescription": "Mở trang đăng nhập của Cursor trong trình duyệt. Hoạt động trong Docker — phê duyệt trong trình duyệt trên máy chủ của bạn, sau đó quay lại đây.", + "loginWithCursor": "Đăng nhập bằng Cursor", + "startingLogin": "Đang bắt đầu…", + "waitingApproval": "Đang chờ phê duyệt đăng nhập Cursor…", + "openUrlHint": "Nếu trình duyệt không mở:", + "openLoginLink": "Mở trang đăng nhập", + "cancelLogin": "Hủy đăng nhập", "autoDetecting": "Tự động phát hiện token...", "readingFromCursor": "Đang đọc token từ Cursor IDE hoặc cursor-agent", "tokensAutoDetected": "Đã tự động phát hiện token từ Cursor IDE thành công!", "cursorNotDetected": "Không phát hiện thấy Cursor IDE. Vui lòng dán token của bạn thủ công.", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "Đang chạy trong Docker? Nên Đăng nhập bằng Cursor. Tính năng tự động nhập từ IDE và cursor-agent thường không khả dụng bên trong container. Xem docs/providers/CURSOR-DOCKER.md.", "accessToken": "Token truy cập", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "Token làm mới", + "refreshTokenPlaceholder": "Không bắt buộc — cho phép tự động làm mới token", "required": "*", "accessTokenPlaceholder": "Token truy cập sẽ được tự động điền...", "machineId": "Mã máy", @@ -10822,9 +10821,9 @@ "errorAutoDetectFailed": "Tự động phát hiện token không thành công", "errorEnterToken": "Vui lòng nhập token truy cập", "errorImportFailed": "Nhập thất bại", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "Không thể bắt đầu đăng nhập Cursor", + "errorLoginPoll": "Đăng nhập Cursor không thành công", + "errorLoginTimeout": "Đăng nhập Cursor đã hết thời gian chờ — hãy thử lại" }, "pricingModal": { "title": "Cấu hình giá", @@ -10857,7 +10856,7 @@ "loading": "Đang tải các proxy...", "noProxies": "Chưa có proxy nào được lưu.", "tableName": "Tên", - "tableEndpoint": "Endpoint", + "tableEndpoint": "Điểm cuối", "tableStatus": "Trạng thái", "tableHealth": "Trạng thái hoạt động (24h)", "tableUsage": "Mức sử dụng", @@ -10899,7 +10898,7 @@ "scopeGlobal": "toàn cục", "scopeProvider": "nhà cung cấp", "scopeAccount": "tài khoản", - "scopeCombo": "combo", + "scopeCombo": "kết hợp", "bulkImportErrorMissingName": "Thiếu NAME", "bulkImportErrorMissingHost": "Thiếu HOST", "bulkImportErrorInvalidPort": "PORT không hợp lệ (phải từ 1-65535)", @@ -10963,9 +10962,9 @@ "poolStrategyLabel": "Chiến lược xoay vòng", "poolStrategyHint": "round-robin luân phiên các thành viên theo thứ tự; random chọn ngẫu nhiên đồng đều; sticky giữ một thành viên trong một khoảng thời gian; latency-optimized chọn thành viên nhanh nhất dựa trên nhật ký.", "poolStrategyFailed": "Không thể cập nhật chiến lược xoay vòng", - "strategyRoundRobin": "Round-robin", + "strategyRoundRobin": "Luân phiên", "strategyRandom": "Ngẫu nhiên", - "strategySticky": "Sticky", + "strategySticky": "Cố định", "strategyLatency": "Tối ưu độ trễ (Latency-optimized)", "poolMembersLabel": "Thành viên nhóm proxy ({count})", "poolNoMembers": "Chưa có proxy nào trong nhóm này.", @@ -10983,7 +10982,7 @@ "playground": { "title": "Khu thử nghiệm mô hình", "description": "Thử nghiệm bất kỳ mô hình nào trực tiếp từ bảng điều khiển. Chọn nhà cung cấp, mô hình và loại endpoint, sau đó gửi một yêu cầu để xem phản hồi thô.", - "endpoint": "Endpoint", + "endpoint": "Điểm cuối", "provider": "Nhà cung cấp", "model": "Mô hình", "accountKey": "Tài khoản / Khóa", @@ -11009,11 +11008,11 @@ "generatedImage": "Hình ảnh {index} đã được tạo", "save": "Lưu", "endpointOptions": { - "chat": "Chat completions", + "chat": "Hoàn thành hội thoại", "responses": "Phản hồi", "completions": "Hoàn thành văn bản", "images": "Tạo hình ảnh", - "embeddings": "Embeddings", + "embeddings": "Vector nhúng", "speech": "Chuyển văn bản thành giọng nói", "transcription": "Chuyển âm thanh thành văn bản", "video": "Tạo video", @@ -11034,7 +11033,7 @@ "systemPrompt": "Prompt hệ thống", "systemPromptPlaceholder": "Bạn là một trợ lý hữu ích.", "modelPlaceholder": "Ví dụ: openai/gpt-4o", - "endpointLabel": "Endpoint", + "endpointLabel": "Điểm cuối", "parametersLabel": "Tham số", "collapseConfig": "Thu gọn bảng cấu hình", "expandConfig": "Mở rộng bảng cấu hình", @@ -11044,7 +11043,7 @@ "presencePenalty": "Mức phạt hiện diện", "frequencyPenalty": "Mức phạt tần suất", "reasoningLabel": "Suy luận", - "thinking": "Thinking", + "thinking": "Suy luận", "effort": "Nỗ lực", "effortDefault": "Mặc định", "seedPlaceholder": "Ngẫu nhiên (để trống)", @@ -11133,7 +11132,7 @@ "jsonSchemaEditor": "Trình sửa lược đồ JSON", "schemaValidated": "Lược đồ hợp lệ", "validateSchema": "Kiểm tra lược đồ", - "seed": "Seed", + "seed": "Hạt giống", "stopSequences": "Chuỗi dừng", "stopSequencesPlaceholder": "Ví dụ: \"\\n\\n\" hoặc \"END\"", "autoProvider": "Tự động", @@ -11187,7 +11186,7 @@ } }, "miniPlayground": { - "endpoint": "Endpoint", + "endpoint": "Điểm cuối", "apiKey": "Khóa API", "model": "Mô hình", "voice": "Giọng nói", @@ -11215,7 +11214,7 @@ "play": "Phát", "query": "Truy vấn", "numResults": "Số kết quả tối đa", - "prompt": "Prompt", + "prompt": "Lời nhắc", "size": "Kích thước", "duration": "Thời lượng", "question": "Câu hỏi", @@ -11273,7 +11272,7 @@ "total": "Tổng cộng", "ok": "Thành công", "err": "Lỗi", - "combo": "Combo", + "combo": "Kết hợp", "keys": "Khóa", "shown": "Đang hiển thị", "sortNewest": "Mới nhất", @@ -11290,7 +11289,7 @@ "refresh": "Làm mới", "columnsLabel": "Cột", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "HOẠT ĐỘNG", "semantic": "Ngữ nghĩa", "upstream": "Thượng nguồn", "semanticCacheHit": "Có kết quả khớp trong cache ngữ nghĩa (do OmniRoute phục vụ)", @@ -11301,7 +11300,7 @@ "all": "Tất cả", "error": "Lỗi", "success": "Thành công", - "combo": "Combo" + "combo": "Kết hợp" }, "columns": { "status": "Trạng thái", @@ -11312,7 +11311,7 @@ "protocol": "Giao thức yêu cầu", "account": "Tài khoản", "apiKey": "Khóa API", - "combo": "Combo", + "combo": "Kết hợp", "tokens": "Token", "compressed": "Nén", "tps": "TPS", @@ -11375,12 +11374,12 @@ }, "payloadMissing": "Không còn artifact payload chi tiết cho mục nhật ký này.", "payloadCorrupt": "Không thể phân tích artifact payload chi tiết.", - "notAvailable": "N/A", - "semanticCache": "Semantic (OmniRoute)", - "upstreamCache": "Upstream (Provider)", + "notAvailable": "Không áp dụng", + "semanticCache": "Ngữ nghĩa (OmniRoute)", + "upstreamCache": "Thượng nguồn (Nhà cung cấp)", "ariaLabel": "Chi tiết nhật ký yêu cầu", "completed": "Đã hoàn tất", - "upstreamStatus": "Upstream: {status}", + "upstreamStatus": "Thượng nguồn: {status}", "statusDiscrepancy": "OmniRoute trả về {status} mặc dù provider trả về {provider}", "previousRequest": "Yêu cầu trước", "nextRequest": "Yêu cầu tiếp theo", @@ -11407,7 +11406,7 @@ "rotated": "Đã xoay vòng: {initial} -> {final}", "apiKey": "Khóa API", "noApiKey": "Không có khóa API", - "combo": "Combo", + "combo": "Kết hợp", "error": "Lỗi", "unblockAll": "Bỏ chặn tất cả", "cleared": "Đã xóa", @@ -11425,8 +11424,8 @@ "correlationId": "ID tương quan", "correlationIdValue": "ID tương quan: {id}", "detailedPayloadInfo": "Hãy bật ghi nhật ký chi tiết trước nếu bạn muốn xem giao diện payload client/nhà cung cấp gồm 4 giai đoạn cho các yêu cầu mới.", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "Sao chép tất cả", + "copiedAll": "Đã sao chép tất cả" } }, "proxyLogger": { @@ -11452,8 +11451,8 @@ "allProviders": "Tất cả nhà cung cấp", "total": "tổng cộng", "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "err": "LỖI", + "timeoutShort": "HẾT GIỜ", "direct": "trực tiếp", "newest": "Mới nhất", "oldest": "Cũ nhất", @@ -11676,7 +11675,7 @@ "endpointsHint": "Gọi các mô hình ảo này bằng bất kỳ khóa API nào được phân bổ — việc định tuyến và hạn mức được xử lý theo từng nhóm.", "previewForKey": "Xem trước cho khóa", "previewKeyNone": "(tất cả các endpoint)", - "endpointsBaseUrl": "Base URL", + "endpointsBaseUrl": "URL cơ sở", "endpointsCollapse": "Thu gọn", "endpointsExpand": "Mở rộng", "endpointsAnthropicNote": "Chuẩn Anthropic", @@ -11689,8 +11688,8 @@ "deleteGroupHasPools": "Nhóm này vẫn còn các pool — hãy gán lại hoặc xóa chúng trước.", "ungroupedTitle": "Chưa phân nhóm", "ungroupedHint": "Các pool này chưa được gán cho một nhóm mà hệ thống nhận diện. Hãy chỉnh sửa một pool để chuyển pool đó vào một nhóm hợp lệ.", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "Không thể xóa nhóm này.", + "dismiss": "Đóng" }, "plugins": { "title": "Plugin", @@ -11727,7 +11726,7 @@ "enabled": "Đã bật", "disabled": "Đã tắt", "installedTab": "Đã cài đặt", - "marketplaceTab": "Marketplace", + "marketplaceTab": "Kho ứng dụng", "marketplaceUrlLabel": "URL Marketplace tùy chỉnh", "marketplaceUrlPlaceholder": "Để trống để sử dụng kho plugin chính thức của OmniRoute", "saveMarketplaceUrl": "Lưu & Tải lại", @@ -11737,7 +11736,7 @@ "verified": "Đã xác minh", "install": "Cài đặt", "installedFromMarketplace": "Đã cài đặt plugin {name}!", - "hooks": "Hooks" + "hooks": "Hook" }, "quotaPlans": { "title": "Gói dịch vụ & Hạn ngạch", @@ -11753,7 +11752,7 @@ "unitOptions": { "percent": "%", "requests": "yêu cầu", - "tokens": "tokens", + "tokens": "token", "usd": "USD ($)" }, "windowOptions": { @@ -11779,7 +11778,7 @@ "yesterdayHeader": "Hôm qua", "filterAll": "Tất cả", "filterProviders": "Nhà cung cấp", - "filterCombos": "Combos", + "filterCombos": "Các tổ hợp", "filterApiKeys": "Khóa API", "filterSettings": "Cài đặt", "filterQuota": "Hạn mức", @@ -12041,14 +12040,14 @@ "delete": "Xóa" }, "trafficInspector": { - "title": "Traffic Inspector", + "title": "Trình kiểm tra lưu lượng", "subtitle": "Giám sát các cuộc gọi LLM và gỡ lỗi lưu lượng HTTPS của bất kỳ ứng dụng nào", "captureModesTitle": "Chế độ thu thập", "agentBridgeMode": "AgentBridge", "agentBridgeModeDesc": "Thu thập lưu lượng truy cập từ tất cả tác nhân IDE đã kết nối", "customHostsMode": "Máy chủ tùy chỉnh", "customHostsModeDesc": "Thêm các máy chủ cụ thể để đánh chặn", - "httpProxyMode": "HTTP Proxy", + "httpProxyMode": "Proxy HTTP", "httpProxyModeDesc": "Sử dụng biến môi trường HTTP_PROXY", "systemWideMode": "Toàn hệ thống", "systemWideModeDesc": "Đánh chặn tất cả lưu lượng hệ thống (nâng cao)", @@ -12065,7 +12064,7 @@ "resumeBtn": "Tiếp tục", "clearBtn": "Xóa", "exportHar": "Xuất tệp .har", - "recordSession": "REC", + "recordSession": "GHI", "stopSession": "Dừng", "liveBadge": "trực tiếp", "offlineBadge": "ngoại tuyến", @@ -12073,7 +12072,7 @@ "noRequestsDesc": "Hãy đảm bảo AgentBridge đang chạy hoặc bật một chế độ thu thập khác.", "selectRequest": "Chọn một yêu cầu để kiểm tra.", "tabConversation": "Cuộc trò chuyện", - "tabHeaders": "Headers", + "tabHeaders": "Tiêu đề", "tabRequest": "Yêu cầu", "tabResponse": "Phản hồi", "tabTiming": "Thời gian", @@ -12176,20 +12175,20 @@ "title": "Công cụ viết mã CLI", "phrase": "Các công cụ viết mã mà bạn trỏ tới OmniRoute", "flow": "Bạn → CLI Code → OmniRoute → Nhà cung cấp", - "seeOther": "See →" + "seeOther": "Xem →" }, "agent": { "title": "Các tác nhân CLI", "phrase": "Các tác nhân CLI tự trị đa dụng mà bạn trỏ tới OmniRoute", "flow": "Bạn → CLI Agent → OmniRoute → Nhà cung cấp", - "seeOther": "See →" + "seeOther": "Xem →" }, "acp": { "title": "Các tác nhân ACP", "phrase": "Các CLI mà OmniRoute khởi chạy làm phần phụ trợ thực thi (luồng ngược)", "warning": "Hầu hết người dùng có thể bỏ qua — chỉ dùng khi một tích hợp yêu cầu.", "flow": "Ứng dụng khách → OmniRoute → khởi chạy CLI (stdio/ACP) → phản hồi", - "seeOther": "See →" + "seeOther": "Xem →" } }, "comparison": { @@ -12225,7 +12224,7 @@ "versionNotFound": "không tìm thấy", "manualConfig": "Cấu hình thủ công", "installGuide": "Hướng dẫn cài đặt", - "endpointLabel": "Endpoint", + "endpointLabel": "Điểm cuối", "baseUrlFull": "URL cơ sở đầy đủ", "baseUrlPartial": "URL cơ sở một phần", "refreshDetection": "Làm mới phát hiện", @@ -12250,7 +12249,7 @@ } }, "cliCode": { - "pageTitle": "CLI Code's", + "pageTitle": "Mã của CLI", "pageSubtitle": "Các công cụ lập trình trỏ đến OmniRoute", "searchPlaceholder": "Tìm kiếm CLI…", "filterDetectionLabel": "Phát hiện", @@ -12263,7 +12262,7 @@ "baseUrlPartial": "Một phần" }, "cliAgents": { - "pageTitle": "CLI Agents", + "pageTitle": "Tác nhân CLI", "pageSubtitle": "Các tác nhân CLI tự trị đa mục đích", "refreshDetection": "Làm mới phát hiện", "searchPlaceholder": "Tìm kiếm tác nhân…", @@ -12275,7 +12274,7 @@ "emptyState": "Không tìm thấy tác nhân CLI nào với các bộ lọc hiện tại." }, "acpAgents": { - "pageTitle": "ACP Agents", + "pageTitle": "Tác nhân ACP", "pageSubtitle": "Các CLI mà OmniRoute khởi chạy làm phụ trợ thực thi", "scanning": "Đang phát hiện tác nhân…", "refresh": "Làm mới", @@ -12346,7 +12345,7 @@ "description": "Cấu hình proxy HTTP/HTTPS/SOCKS cho yêu cầu tới nhà cung cấp thượng nguồn. Đặt quy tắc theo nhà cung cấp hoặc toàn cục, kiểm tra kết nối và quản lý xoay vòng proxy." }, "omni-cache": { - "name": "Cache", + "name": "Bộ nhớ đệm", "description": "Quản lý cache phản hồi LLM. Xem số liệu cache, xóa mục, cấu hình chính sách TTL và điều khiển ngưỡng cache theo độ tương đồng ngữ nghĩa." }, "omni-compression": { @@ -12354,7 +12353,7 @@ "description": "Cấu hình RTK cho đầu ra lệnh, Caveman cho văn xuôi và các chế độ nén xếp chồng. Quản lý gói ngôn ngữ, quy tắc tùy chỉnh và kiểm tra nén prompt giúp giảm 60–90% token." }, "omni-context-rtk": { - "name": "Context & RTK", + "name": "Ngữ cảnh & RTK", "description": "Cấu hình bộ lọc RTK, quy tắc kỹ thuật context và cài đặt chuyển tiếp context. Kiểm tra nén bằng mẫu prompt thật và quản lý pipeline biến đổi context." }, "omni-resilience": { @@ -12543,7 +12542,7 @@ "categoryConfig": "Cấu hình", "filterAll": "Tất cả", "coverageLabel": "Độ bao phủ", - "mcpUrl": "MCP URL", + "mcpUrl": "URL MCP", "a2aLink": "A2A", "mcpPrompt": "Thêm endpoint MCP này vào agent để cung cấp 37 công cụ OmniRoute.", "a2aPrompt": "Đăng ký Agent Card này với bộ điều phối để bật khả năng ủy quyền tác vụ A2A.", @@ -12854,7 +12853,7 @@ "security": "Bảo mật", "network": "Mạng", "policies": "Chính sách", - "runtime": "Runtime", + "runtime": "Môi trường chạy", "cli": "CLI", "health": "Tình trạng", "requiresRestart": "Cần khởi động lại" @@ -12874,7 +12873,7 @@ "restartFailed": "Khởi động lại thất bại", "resetOverridesFailedHttp": "Không thể đặt lại ghi đè: HTTP {status}", "resetOverridesFailed": "Không thể đặt lại ghi đè", - "restartRequiredCount": "{count, plural, one {# change requires} other {# changes require}} a server restart to take effect.", + "restartRequiredCount": "{count, plural, one {# thay đổi cần} other {# thay đổi cần}} khởi động lại máy chủ để có hiệu lực.", "restartRequiredDescription": "Các cờ này chỉ được áp dụng sau khi tiến trình tải lại. Có thể khởi động lại ngay hoặc tiếp tục chỉnh sửa — các cờ đang chờ vẫn được giữ cho đến khi bạn xác nhận.", "restartServer": "Khởi động lại máy chủ", "cancel": "Hủy", @@ -13184,7 +13183,7 @@ "boost": "Mở khóa thêm khoảng {tokens}/tháng bằng một lần nạp $10 vào OpenRouter (50 → 1000 yêu cầu/ngày)", "uncapped": "Miễn phí vĩnh viễn, không công bố giới hạn (bị giới hạn tốc độ) — quyền truy cập thực, không tính vào tổng nổi bật:", "gated": "~{tokens}/tháng nữa nằm sau bước xác minh danh tính theo khu vực (ví dụ: xác thực tên thật ở Trung Quốc đại lục) — hạn mức thật, không tính vào con số chính:", - "tosRestricted": "{count, plural, one {# model} other {# models}} flagged as ToS-restricted — you decide", + "tosRestricted": "{count, plural, one {# mô hình} other {# mô hình}} bị đánh dấu là bị hạn chế theo Điều khoản dịch vụ — bạn quyết định", "provider": "Nhà cung cấp", "model": "Mô hình", "modelName": "Tên mô hình", @@ -13282,80 +13281,80 @@ "viewFullHistory": "Xem toàn bộ lịch sử trên GitHub" }, "reasoningRouting": { - "title": "Reasoning routing policies", - "apiKeyTitle": "Reasoning routing for this API key", - "subtitle": "Reroute models and reasoning effort without requiring client support. Requests remain unchanged when no rule matches.", - "loadError": "Reasoning rules could not be loaded.", - "saveError": "The rule is invalid or could not be saved.", - "saved": "Reasoning rule saved.", - "deleteConfirm": "Delete this reasoning rule?", - "deleteError": "The reasoning rule could not be deleted.", - "empty": "No matching reasoning rules configured.", - "all": "All", - "any": "Any", - "enabled": "Enabled", - "disabled": "Disabled", - "filterSearch": "Search rules", - "filterScope": "Filter by scope", - "filterStatus": "Filter by status", - "allModels": "all models", - "keepModel": "Keep model", - "otherModel": "Other model", - "combo": "Combo", - "priorityShort": "priority {value}", - "toggleAria": "Enable {name}", - "edit": "Edit", - "delete": "Delete", - "name": "Name", - "description": "Description", - "scopeLabel": "Scope", - "apiKey": "API key", - "sourceCombo": "Source combo", - "connection": "Connection", - "sourceModel": "Source model or wildcard", - "sourceModelOptional": "Empty = all models", - "sourceModelExample": "e.g. gpt-5*", - "sourceEffort": "Source effort", - "missing": "Not specified", - "signalOnly": "Non-discrete reasoning signal", - "requestTags": "Request tags", - "requestTagsExample": "coding, internal", - "tagMode": "Tag matching", - "effortMode": "Effort mode", - "targetEffort": "Target effort", - "routingTarget": "Routing target", - "targetModel": "Target model", - "targetCombo": "Target combo", - "budgetAction": "Thinking budget", - "budgetTokens": "Budget tokens", - "priority": "Priority", - "saveChanges": "Save changes", - "add": "Add rule", - "cancel": "Cancel", - "simulateTitle": "Simulate rule", - "model": "Model", - "effort": "Effort", - "transport": "Transport", - "simulate": "Simulate without upstream", - "extendedComboWarning": "Max/Ultra is validated separately for every combo target during routing.", - "extendedUnknownWarning": "Enter a target model to verify Max/Ultra support.", - "extendedUnsupportedWarning": "Max/Ultra is only known to be supported by suitable Codex GPT-5.6 models. Unknown custom models are accepted by the server with a warning.", + "title": "Chính sách định tuyến suy luận", + "apiKeyTitle": "Định tuyến suy luận cho khóa API này", + "subtitle": "Định tuyến lại mô hình và mức độ suy luận mà không cần phía máy khách hỗ trợ. Yêu cầu sẽ không thay đổi khi không có quy tắc nào khớp.", + "loadError": "Không thể tải các quy tắc suy luận.", + "saveError": "Quy tắc không hợp lệ hoặc không thể lưu.", + "saved": "Đã lưu quy tắc suy luận.", + "deleteConfirm": "Xóa quy tắc suy luận này?", + "deleteError": "Không thể xóa quy tắc suy luận.", + "empty": "Chưa cấu hình quy tắc suy luận nào khớp.", + "all": "Tất cả", + "any": "Bất kỳ", + "enabled": "Đã bật", + "disabled": "Đã tắt", + "filterSearch": "Tìm kiếm quy tắc", + "filterScope": "Lọc theo phạm vi", + "filterStatus": "Lọc theo trạng thái", + "allModels": "tất cả mô hình", + "keepModel": "Giữ nguyên mô hình", + "otherModel": "Mô hình khác", + "combo": "Tổ hợp", + "priorityShort": "mức ưu tiên {value}", + "toggleAria": "Bật {name}", + "edit": "Chỉnh sửa", + "delete": "Xóa", + "name": "Tên", + "description": "Mô tả", + "scopeLabel": "Phạm vi", + "apiKey": "Khóa API", + "sourceCombo": "Tổ hợp nguồn", + "connection": "Kết nối", + "sourceModel": "Mô hình nguồn hoặc ký tự đại diện", + "sourceModelOptional": "Để trống = tất cả mô hình", + "sourceModelExample": "ví dụ: gpt-5*", + "sourceEffort": "Mức suy luận nguồn", + "missing": "Không được chỉ định", + "signalOnly": "Tín hiệu suy luận không rời rạc", + "requestTags": "Thẻ yêu cầu", + "requestTagsExample": "lập trình, nội bộ", + "tagMode": "Khớp thẻ", + "effortMode": "Chế độ suy luận", + "targetEffort": "Mức suy luận đích", + "routingTarget": "Đích định tuyến", + "targetModel": "Mô hình đích", + "targetCombo": "Tổ hợp đích", + "budgetAction": "Ngân sách suy luận", + "budgetTokens": "Số token ngân sách", + "priority": "Mức ưu tiên", + "saveChanges": "Lưu thay đổi", + "add": "Thêm quy tắc", + "cancel": "Hủy", + "simulateTitle": "Mô phỏng quy tắc", + "model": "Mô hình", + "effort": "Mức suy luận", + "transport": "Phương thức truyền tải", + "simulate": "Mô phỏng mà không dùng upstream", + "extendedComboWarning": "Max/Ultra được xác thực riêng cho từng đích trong tổ hợp khi định tuyến.", + "extendedUnknownWarning": "Nhập mô hình đích để xác minh khả năng hỗ trợ Max/Ultra.", + "extendedUnsupportedWarning": "Max/Ultra chỉ được xác định là được hỗ trợ bởi các mô hình Codex GPT-5.6 phù hợp. Máy chủ vẫn chấp nhận các mô hình tùy chỉnh chưa xác định nhưng sẽ hiển thị cảnh báo.", "scope": { - "global": "Global", - "apiKey": "API key", - "combo": "Combo", - "model": "Model", - "connection": "Connection" + "global": "Toàn cục", + "apiKey": "Khóa API", + "combo": "Tổ hợp", + "model": "Mô hình", + "connection": "Kết nối" }, "mode": { - "inherit": "Inherit client", - "default": "Use default", - "force": "Force" + "inherit": "Kế thừa từ máy khách", + "default": "Dùng mặc định", + "force": "Bắt buộc" }, "budget": { - "preserve": "Preserve", - "remove": "Remove", - "set": "Set fixed value" + "preserve": "Giữ nguyên", + "remove": "Xóa", + "set": "Đặt giá trị cố định" } }, "chaosConfig": { @@ -13364,7 +13363,7 @@ "enableChaos": "Bật Chế độ Chaos", "enableChaosDesc": "Cho phép các khóa API đã bật Chế độ Chaos sử dụng tính năng này", "mode": "Chế độ mặc định", - "modeParallel": "Parallel", + "modeParallel": "Song song", "modeCollaborative": "Cộng tác", "modeParallelDesc": "Tất cả các mô hình chạy đồng thời — cho kết quả nhanh nhất", "modeCollaborativeDesc": "Các mô hình liên kết chuỗi đầu ra — mỗi mô hình thấy kết quả của mô hình trước đó", @@ -13407,8 +13406,8 @@ "foundingFriendTitle": "Kimi (Moonshot AI) là người bạn mã nguồn mở sáng lập của OmniRoute", "description": "Người dùng mới nhận thêm 15% tín dụng API cho lần nạp đầu tiên. Dùng Kimi K3 trong OmniRoute qua Kimi API chính thức.", "cta": "Nhận khóa Kimi API", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "partnerLinkNote": "Liên kết đối tác", + "dismissAriaLabel": "Đóng" }, "vscodeCopilotBanner": { "title": "OmniRoute giờ đây chạy ngay trong VS Code Copilot Chat", @@ -13437,16 +13436,30 @@ "tierCommunity": "Cộng đồng (độ trễ 30 ngày)", "activateTitle": "Kích hoạt Radar", "activateDescription": "So sánh quyền truy cập Cộng đồng và trực tiếp, hiểu những gì bản cài đặt của bạn trao đổi, rồi chọn cách kích hoạt Radar.", + "accessScaleTitle": "Hiểu quyền truy cập Radar trước khi kích hoạt", + "accessScaleIntro": "Radar không trao đổi dữ liệu qua mạng cho đến khi bạn chọn tham gia. Hãy chọn quyền truy cập Cộng đồng hoặc kích hoạt khóa người ủng hộ cá nhân sau khi xem các quy tắc này.", + "accessCommunityRule": "Cộng đồng — không cần khóa: toàn bộ danh mục với độ trễ 30 ngày.", + "accessSingleUseRule": "Star + follow — sau khi GitHub OAuth xác minh cả hai, tài khoản GitHub của bạn được đọc danh mục trực tiếp một lần; sau đó quyền truy cập trở lại Cộng đồng. Quyền truy cập dùng một lần này không thể được cấp lại cho tài khoản đó.", + "accessContributorRule": "Người đóng góp — các PR đã merge, commit và số dòng chỉ dùng để xếp thứ hạng hằng tuần. Top 10 nhận 365 ngày; hạng 11–100 nhận 90 ngày; người đóng góp ngoài Top 100 không nhận quyền truy cập, bất kể số lượng PR. Rời bảng xếp hạng không bao giờ rút ngắn thời gian đã được cấp.", + "accessSupporterRule": "Người ủng hộ — các gói mua một lần cấp 6 tháng, 1 năm hoặc trọn đời, không tự động gia hạn. Thời hạn từ mua hàng, quyên góp, đóng góp và cấp thủ công được cộng dồn; trọn đời luôn được ưu tiên.", + "accessUseTitle": "Sử dụng cá nhân, khôi phục và xem xét", + "accessInstallationRule": "Giấy phép cá nhân — chỉ sử dụng khóa trên một bản cài đặt đang hoạt động tại một thời điểm. OmniRoute không tạo dấu vân phần cứng. Khôi phục sẽ thu hồi và thay thế khóa bị mất mà không đặt lại ngày hết hạn.", + "accessAbuseRule": "Xem xét lạm dụng — IP khác biệt thứ 4 trong 24 giờ chỉ tạo cờ để xem xét thủ công; hệ thống không bao giờ tự động chặn hoặc thu hồi khóa.", + "accessOffersRule": "Các ưu đãi trực tiếp được tuyển chọn thủ công và có thể thay đổi hoặc hết hạn.", + "privacyTitle": "Radar trao đổi những gì", + "privacyDownloadsRule": "Tải xuống — bản cài đặt của bạn nhận danh mục và siêu dữ liệu giới thiệu đã được ký bằng mật mã; khóa truy cập trực tiếp hợp lệ cũng mở khóa các ưu đãi đã ký và Intel.", + "privacySendsRule": "Gửi đi — quá trình đồng bộ phía máy chủ gửi khóa người ủng hộ dưới dạng Bearer token và hạ tầng HTTPS nhận địa chỉ IP kết nối. Việc ghi nhận yêu cầu feed không lưu thô cả hai giá trị: chỉ lưu hash của khóa, số liệu sử dụng tổng hợp và HMAC IP rút gọn luân phiên hằng ngày để xem xét lạm dụng.", + "privacyNeverRule": "Không bao giờ thu thập — lời nhắc, phản hồi, hội thoại, thông tin đăng nhập nhà cung cấp, lưu lượng mô hình, thời gian hoạt động, độ trễ và cấu hình nhà cung cấp cục bộ không bao giờ được gửi đến Radar.", "activateButton": "Kích hoạt Cộng đồng", "activating": "Đang kích hoạt...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", + "keySectionTitle": "Bạn đã có khóa người ủng hộ?", + "keyInvalidFormatError": "Định dạng khóa không hợp lệ. Khóa phải bắt đầu bằng \"omr_\", theo sau là 40 ký tự thập lục phân.", + "activateWithKeyButton": "Kích hoạt quyền người ủng hộ", + "changeKeyButton": "Đổi khóa", + "claimSectionTitle": "Bạn chưa có khóa người ủng hộ?", + "contributorButton": "Tôi là người đóng góp", "contributorHint": "GitHub OAuth kiểm tra bảng xếp hạng hằng tuần hiện tại: Top 10 nhận 365 ngày và hạng 11–100 nhận 90 ngày. Chỉ số lượng PR không bao giờ cấp quyền truy cập nếu nằm ngoài Top 100.", - "supporterButton": "Support the project", + "supporterButton": "Ủng hộ dự án", "supporterHint": "Các lựa chọn mua một lần 6 tháng, 1 năm và trọn đời không tự động gia hạn; các thời hạn đủ điều kiện được cộng dồn và quyền trọn đời luôn được ưu tiên.", "colProvider": "Nhà cung cấp", "colModel": "Mô hình", @@ -13466,62 +13479,48 @@ "capTools": "Công cụ", "capVision": "Tầm nhìn", "capThinking": "Suy nghĩ", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Thông tin chuyên sâu", - "accessScaleTitle": "Hiểu quyền truy cập Radar trước khi kích hoạt", - "accessScaleIntro": "Radar không trao đổi dữ liệu qua mạng cho đến khi bạn chọn tham gia. Hãy chọn quyền truy cập Cộng đồng hoặc kích hoạt khóa người ủng hộ cá nhân sau khi xem các quy tắc này.", - "accessCommunityRule": "Cộng đồng — không cần khóa: toàn bộ danh mục với độ trễ 30 ngày.", - "accessSingleUseRule": "Star + follow — sau khi GitHub OAuth xác minh cả hai, tài khoản GitHub của bạn được đọc danh mục trực tiếp một lần; sau đó quyền truy cập trở lại Cộng đồng. Quyền truy cập dùng một lần này không thể được cấp lại cho tài khoản đó.", - "accessContributorRule": "Người đóng góp — các PR đã merge, commit và số dòng chỉ dùng để xếp thứ hạng hằng tuần. Top 10 nhận 365 ngày; hạng 11–100 nhận 90 ngày; người đóng góp ngoài Top 100 không nhận quyền truy cập, bất kể số lượng PR. Rời bảng xếp hạng không bao giờ rút ngắn thời gian đã được cấp.", - "accessSupporterRule": "Người ủng hộ — các gói mua một lần cấp 6 tháng, 1 năm hoặc trọn đời, không tự động gia hạn. Thời hạn từ mua hàng, quyên góp, đóng góp và cấp thủ công được cộng dồn; trọn đời luôn được ưu tiên.", - "accessUseTitle": "Sử dụng cá nhân, khôi phục và xem xét", - "accessInstallationRule": "Giấy phép cá nhân — chỉ sử dụng khóa trên một bản cài đặt đang hoạt động tại một thời điểm. OmniRoute không tạo dấu vân phần cứng. Khôi phục sẽ thu hồi và thay thế khóa bị mất mà không đặt lại ngày hết hạn.", - "accessAbuseRule": "Xem xét lạm dụng — IP khác biệt thứ 4 trong 24 giờ chỉ tạo cờ để xem xét thủ công; hệ thống không bao giờ tự động chặn hoặc thu hồi khóa.", - "accessOffersRule": "Các ưu đãi trực tiếp được tuyển chọn thủ công và có thể thay đổi hoặc hết hạn.", - "privacyTitle": "Radar trao đổi những gì", - "privacyDownloadsRule": "Tải xuống — bản cài đặt của bạn nhận danh mục và siêu dữ liệu giới thiệu đã được ký bằng mật mã; khóa truy cập trực tiếp hợp lệ cũng mở khóa các ưu đãi đã ký và Intel.", - "privacySendsRule": "Gửi đi — quá trình đồng bộ phía máy chủ gửi khóa người ủng hộ dưới dạng Bearer token và hạ tầng HTTPS nhận địa chỉ IP kết nối. Việc ghi nhận yêu cầu feed không lưu thô cả hai giá trị: chỉ lưu hash của khóa, số liệu sử dụng tổng hợp và HMAC IP rút gọn luân phiên hằng ngày để xem xét lạm dụng.", - "privacyNeverRule": "Không bao giờ thu thập — lời nhắc, phản hồi, hội thoại, thông tin đăng nhập nhà cung cấp, lưu lượng mô hình, thời gian hoạt động, độ trễ và cấu hình nhà cung cấp cục bộ không bao giờ được gửi đến Radar." + "catalogTab": "Danh mục", + "freeCreditsTab": "Tín dụng miễn phí", + "freeCreditsSubtitle": "Liên kết giới thiệu từ các nhà cung cấp được Radar theo dõi — việc sử dụng không khiến bạn tốn thêm chi phí và giúp hỗ trợ OmniRoute.", + "fixedLinksEmpty": "Chưa có liên kết giới thiệu nào. Hãy đồng bộ Radar để kiểm tra bản cập nhật.", + "requiredActionLabel": "Cách thực hiện:", + "claimButton": "Nhận tín dụng", + "campaignsTitle": "Chiến dịch có thời hạn", + "campaignsEmpty": "Hiện không có chiến dịch nào đang diễn ra — hãy quay lại sau.", + "campaignsUpsellCommunity": "Các chiến dịch có thời hạn là quyền lợi bổ sung dành cho người ủng hộ. Tất cả liên kết cố định trên trang này vẫn miễn phí cho mọi người.", + "campaignsValidUntil": "Có hiệu lực đến {date}", + "colActions": "Thao tác", + "localBadge": "cục bộ", + "editModel": "Chỉnh sửa", + "saveModel": "Lưu", + "cancelEdit": "Hủy", + "resetModel": "Đặt lại các thay đổi cục bộ", + "hideModel": "Ẩn", + "restoreModel": "Khôi phục", + "hiddenModelsTitle": "Các mô hình đã ẩn", + "modelDisplayName": "Tên hiển thị cục bộ", + "modelEnabled": "Được bật cục bộ", + "localStateSaveFailed": "Không thể lưu cài đặt Radar cục bộ", + "guidedCombos": "Tổ hợp có hướng dẫn", + "offers": "Ưu đãi", + "intel": "Thông tin chuyên sâu" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Tổ hợp có hướng dẫn của Radar", + "subtitle": "Tạo chuỗi dự phòng ưu tiên từ các mô hình miễn phí tương đương do Radar tuyển chọn.", + "backToRadar": "Quay lại Radar", + "loading": "Đang tải các đề xuất tổ hợp...", + "familyLabel": "Họ mô hình", + "modelsLabel": "Thứ tự ưu tiên", + "strategyReason": "Ưu tiên sử dụng ngân sách miễn phí định kỳ lớn nhất trước, sau đó chuyển sang các nhà cung cấp đang hoạt động khác khi cần.", + "generateButton": "Tạo tổ hợp", + "generating": "Đang tạo...", + "alreadyCreated": "Đã được tạo", + "created": "Đã tạo tổ hợp", + "noSuggestions": "Hiện không có họ mô hình đủ điều kiện nào có kết nối đang hoạt động với ít nhất hai nhà cung cấp.", + "catalogRequired": "Trước tiên, hãy đồng bộ danh mục Radar để tải các họ mô hình được tuyển chọn.", + "loadFailed": "Không thể tải các đề xuất tổ hợp của Radar.", + "createFailed": "Không thể tạo tổ hợp. Hãy kiểm tra các kết nối nhà cung cấp của bạn rồi thử lại." }, "radarSetupPage": { "title": "Thiết lập nhà cung cấp", @@ -13563,11 +13562,11 @@ "connectionId": "Kết Nối", "authType": "Xác Thực", "backoffLevel": "Trì Hoãn", - "cooldown": "Cooldown", + "cooldown": "Thời gian chờ", "lastError": "Lỗi Gần Nhất", "lockouts": "Khóa", "healthy": "Khỏe Mạnh", - "coolingDown": "Cooldown", + "coolingDown": "Thời gian chờ", "circuitOpen": "Mạch Mở", "recovering": "Đang Phục Hồi", "degraded": "Suy Giảm", @@ -13601,7 +13600,7 @@ "detail": { "title": "Chi Tiết Kết Nối", "metadata": "Siêu Dữ Liệu", - "cooldown": "Cooldown", + "cooldown": "Thời gian chờ", "lastError": "Lỗi Gần Nhất", "breaker": "Cầu Dao Mạch", "lockouts": "Khóa Mô Hình", @@ -13655,7 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Từ chối yêu cầu trước khi gửi đi khi mô hình đích thiếu các khả năng bắt buộc (thị giác, công cụ, đầu ra có cấu trúc, cửa sổ ngữ cảnh). Bảo vệ các yêu cầu trực tiếp đến một nhà cung cấp khi chúng bỏ qua bộ lọc tương thích của combo.", "featureFlagDisableContextWindowChecksDescription": "Bỏ qua kiểm tra cục bộ của OmniRoute về cửa sổ ngữ cảnh và giới hạn token đầu vào tối đa cho yêu cầu trực tiếp đến một mô hình đơn lẻ. Nhà cung cấp thượng nguồn vẫn áp dụng các giới hạn thực tế. Tính năng nén prompt và giới hạn token đầu ra vẫn hoạt động.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Thống kê tìm kiếm và các lượt tìm kiếm gần đây chỉ tính những nhà cung cấp vẫn còn kết nối hoạt động (các nhà cung cấp không cần khóa như duckduckgo-free luôn được tính). Khi tắt, mọi hàng tìm kiếm được lưu giữ có ID nhà cung cấp đều được giữ lại.", "publicSystem": { "notFound": { "title": "Không tìm thấy trang", @@ -13819,7 +13818,7 @@ "autoDetecting": "Đang tự động phát hiện token...", "readingCredentials": "Đang đọc thông tin xác thực {providerLabel} từ bộ nhớ đệm AWS SSO", "tokenNotDetected": "Không thể tự động phát hiện token {providerLabel}. Vui lòng dán refresh token theo cách thủ công.", - "refreshToken": "Refresh Token", + "refreshToken": "Mã làm mới", "tokenPlaceholder": "Token sẽ được tự động điền...", "importing": "Đang nhập...", "apiKeyPlaceholder": "Dán khóa API {providerLabel} của bạn...", @@ -13868,14 +13867,14 @@ "openSoloTrae": "Mở solo.trae.ai", "orPasteManually": "hoặc dán token theo cách thủ công", "manualInstructions": "Đăng nhập vào solo.trae.ai, mở DevTools → Network, gửi bất kỳ tin nhắn trò chuyện nào và sao chép JWT từ header yêu cầu Authorization: Cloud-IDE-JWT {tokenPlaceholder}. JWT có thời hạn khoảng 14 ngày. Các trường nhận dạng tùy chọn lấy từ common_params trong cùng phần thân yêu cầu.", - "accessTokenLabel": "Access Token (Cloud-IDE-JWT)", - "webId": "Web ID", + "accessTokenLabel": "Mã truy cập (Cloud-IDE-JWT)", + "webId": "ID web", "optional": "tùy chọn", - "bizUserId": "Biz User ID", - "userUniqueId": "User Unique ID", - "scope": "Scope", - "tenant": "Tenant", - "region": "Region", + "bizUserId": "ID người dùng doanh nghiệp", + "userUniqueId": "ID duy nhất của người dùng", + "scope": "Phạm vi", + "tenant": "Đơn vị thuê", + "region": "Khu vực", "importing": "Đang nhập…", "importToken": "Nhập Token", "cancel": "Hủy" @@ -13929,7 +13928,7 @@ "time": "Thời gian", "latency": "Độ trễ", "clientIp": "IP client", - "proxy": "Proxy", + "proxy": "Máy chủ proxy", "direct": "Trực tiếp", "type": "Loại", "level": "Mức", @@ -13966,11 +13965,11 @@ "pending": "đang chờ" }, "metadata": { - "compressionTitle": "Compression", + "compressionTitle": "Nén", "compressionDescription": "Định cấu hình cài đặt nén ngữ cảnh để giảm mức sử dụng token và chi phí.", - "relayTitle": "OmniRoute — Relay Proxies", + "relayTitle": "OmniRoute — Proxy chuyển tiếp", "relayDescription": "Các endpoint proxy relay serverless cho hạ tầng AI của bạn", - "trafficInspectorTitle": "Traffic Inspector — OmniRoute", + "trafficInspectorTitle": "Trình kiểm tra lưu lượng — OmniRoute", "trafficInspectorDescription": "Theo dõi các lệnh gọi LLM và gỡ lỗi lưu lượng HTTPS của mọi ứng dụng" }, "conductor": { @@ -13979,7 +13978,7 @@ "runners": "Người Chạy", "tasks": "Công Việc", "colName": "Tên", - "colClis": "CLIs", + "colClis": "CLI", "colStatus": "Trạng Thái", "colTask": "Nhiệm vụ", "colMode": "Chế Độ", @@ -14082,11 +14081,11 @@ "actionApprove": "Phê duyệt kế hoạch", "actionCancel": "Hủy", "actionSeeInGraph": "Xem trong sơ đồ", + "actionRepeat": "Lặp lại", "actionDone": "Đã áp dụng hành động", "actionFailed": "Hành động thất bại: {error}", "detailFailed": "Không tải được chi tiết: {error}", "mirroredInA2A": "Được phản chiếu trong A2A", - "actionRepeat": "Lặp lại", "repeatConfirm": "Nhấp lại để xác nhận", "repeatDone": "Đã tạo lượt chạy mới", "repeatUnavailable": "Không có dữ liệu đầu vào gốc" @@ -14100,25 +14099,25 @@ "networkError": "Lỗi mạng — không thể cập nhật cài đặt hiển thị nhà cung cấp" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "Ưu đãi dành cho người ủng hộ", + "subtitle": "Các chương trình giảm giá, tín dụng, dùng thử chính thức và quyền lợi đối tác đã được Radar đánh giá.", + "backToRadar": "Quay lại Radar", + "loading": "Đang tải ưu đãi...", + "refresh": "Làm mới ưu đãi", + "refreshing": "Đang làm mới...", + "loadFailed": "Chúng tôi không thể làm mới ưu đãi. Bộ nhớ đệm cục bộ được xác minh gần nhất vẫn được giữ lại.", + "empty": "Hiện không có ưu đãi nào đang áp dụng.", + "keyRequiredTitle": "Cần có khóa dành cho người ủng hộ", + "keyRequiredDescription": "Ưu đãi là một quyền lợi trực tiếp của Radar. Hãy thêm khóa dành cho người ủng hộ hiện có trên màn hình Radar, xác minh trạng thái người đóng góp của bạn hoặc ủng hộ dự án để nhận khóa.", + "contributorButton": "Tôi là người đóng góp", + "supporterButton": "Ủng hộ dự án", + "partnerBadge": "Đối tác", + "officialBadge": "Chính thức", + "conditionsLabel": "Điều kiện:", + "validUntil": "Có hiệu lực đến {date}", + "noExpiry": "Chưa công bố ngày hết hạn", + "openOffer": "Xem ưu đãi", + "trialDays": "{days, plural, one {# ngày} other {# ngày}}" }, "radarIntelPage": { "title": "Thông tin chuyên sâu Radar", @@ -14165,5 +14164,6 @@ "cta": "Lấy khóa API", "partnerLinkNote": "Liên kết đối tác", "dismissAriaLabel": "Đóng" - } + }, + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Tắt tính năng tạo biến thể cấp độ suy nghĩ (ví dụ: -low, -medium, -high) trong danh mục /v1/models." } diff --git a/src/i18n/messages/yo.json b/src/i18n/messages/yo.json index 9927ae0d18..4f404716f5 100644 --- a/src/i18n/messages/yo.json +++ b/src/i18n/messages/yo.json @@ -702,8 +702,8 @@ "flaggedAnomalies": "Àwọn Ohun Àjèjì Tí A Ṣàmì Sí", "noAnomaliesDetected": "A kò ṣàwárí ohun àjèjì kankan", "apiKey": "Kọ́kọ́rọ́ API", - "xpLastHour": "XP (1h)", - "zScore": "Z-Score", + "xpLastHour": "XP (wákàtí 1)", + "zScore": "Àmì-Z", "suspicious": "Ó Fura", "tokensCommunityServers": "Àwọn Sẹ́fà Àwùjọ", "tokensServerNamePlaceholder": "Orúkọ sẹ́fà", @@ -832,8 +832,8 @@ "wizardStep3Validate": "Fìdí rẹ̀ múlẹ̀", "wizardStep4Cost": "Iye owó & ṣẹ̀dá", "wizardProviderLabel": "Olùpèsè", - "wizardEndpointLabel": "Endpoint", - "wizardModelLabel": "Model", + "wizardEndpointLabel": "Ojú-ọ̀nà ìparí", + "wizardModelLabel": "Àwòṣe", "wizardInputKindJsonl": "JSONL", "wizardInputKindCsv": "CSV (a ó yí i padà)", "wizardDropOrPick": "Ju fáìlì kan síbí tàbí tẹ̀ láti yàn án", @@ -992,6 +992,10 @@ "featureFlagExposeCcDiscoveryAliasesDescription": "Polówó àwọn mirror ids claude/<provider>/<model> lórí /v1/models kí ìṣàwárí àwòṣe gateway Claude Code lè ṣàtòjọ àwọn àwòṣe tí kì í ṣe ti Claude. Ìkìlọ̀: èyí máa sọ iye àwọn àkọsílẹ̀ katalọ́ọ̀gù di ìlọ́po méjì fún gbogbo clients nígbà tí a bá mú un ṣiṣẹ́ kárí ayé.", "featureFlagNoThinkingAliasEnabledDescription": "Yíyí àkọ́kọ́ fún àwọn gateway aliases no-think/<provider>/<model>. Títàn (àìyípadà): /v1/models máa ń polówó ẹ̀dà tí kò ronú fún gbogbo àwòṣe Claude tó lè ronú tí ó sì yẹ, no-think/ id tí a sì fi ránṣẹ́ pẹ̀lú ìbéèrè máa yanjú padà sí àwòṣe gidi pẹ̀lú fífi reasoning pamọ́. Pípa: a kì yóò polówó àwọn ẹ̀dà kankan, a ó sì ṣe no-think/ id bí model id àìmọ̀ mìíràn. Ìforúkọsílẹ̀/ìyọkúrò ModelSpec.noThinkingAlias ti àwòṣe kọ̀ọ̀kan ṣì wúlò nígbà tí èyí bá tàn.", "featureFlagChatVirtualLanesEnabledDescription": "Mú àwọn ọ̀nà ìgbàwọlé aláfojúṣe tí ń mú ara wọn bá ipò mu fún tenant kọ̀ọ̀kan ṣiṣẹ́ fún provider dispatch (#9654): ìrujáde tenant kan kò ní fa 503 fún tenant mìíràn mọ́. env var OMNIROUTE_CHAT_VIRTUAL_LANES ni ó ṣáájú àtúnṣe dashboard yìí; àwọn ìyípadà yóò bẹ̀rẹ̀ sí í ṣiṣẹ́ nígbà tí server bá tún bẹ̀rẹ̀.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Àwọn ojú-ìwé olùpèsè lórí Dashboard: fi báàjì Ọ̀fẹ́ hàn lórí àwọn àmì tí olùpèsè náà fọwọ́ sí nìkan — èyí yọ ọ̀nà ìfojúrí orúkọ ìfihàn, àwọn ààyè ọ̀fẹ́ tí kì í ṣe Boolean àti àwọn ìparí :free kúrò lórí àwọn olùpèsè tí a forúkọsílẹ̀ tí kò ní ipele ọ̀fẹ́ tí a ṣàkọsílẹ̀. Pípa rẹ̀ yóò pa òfin báàjì ìṣáájú mọ́.", + "featureFlagProxySkipRecentlyFailedDescription": "Àwọn àkójọpọ̀ proxy àti yíyí opencode fún àkọọ́lẹ̀ kọ̀ọ̀kan máa ń dáwọ́ lílo proxy kan tí ó ṣẹ̀ṣẹ̀ kùnà dúró (ìdánwò TCP tí a kọ̀, tàbí 429 tí a gbà nípasẹ̀ rẹ̀) fún àkókò kan nínú process kọ̀ọ̀kan, èyí tí yóò di ìlọ́po méjì ní gbogbo ìgbà tí ó tún ṣẹlẹ̀, títí dé òpin tí a yàn. A kì í kọ ipò proxy sílẹ̀; bí a bá fi gbogbo olùdíje sí ẹ̀gbẹ́ kan, yíyan náà kì í yí padà. Ó wà ní pípa ní àkọ́kọ́: bí a ṣe ń yan tẹ̀ lé yíyí lasán náà gan-an.", + "featureFlagProxyPoolEgressObservationDescription": "Ṣàfihàn, lábẹ́ àkójọpọ̀ proxy kan nínú dashboard, iye àwọn IP egress tí a ṣàkíyèsí tí ó ṣiṣẹ́ fún àwọn ọmọ ẹgbẹ́ rẹ̀ láàárín wákàtí 24 tó kọjá, iye àwọn ìsopọ̀ tí ó lò wọ́n àti iye tó pọ̀ jù tí a rí lẹ́yìn IP kan. Fún kíkà nìkan, a ṣírò rẹ̀ láti inú àkọsílẹ̀ proxy, a kò sì lò ó fún routing láé. Ó wà ní pípa ní àkọ́kọ́: olóòtú àkójọpọ̀ náà kò yí padà, ipa-ọ̀nà àkíyèsí sì ń dá null padà.", + "featureFlagProxyHealthBlockedResetsStreakDescription": "Nínú àyẹ̀wò ìlera proxy, jẹ́ kí ìdánwò kan tí ibi àfojúsùn kọ̀ (401/403/429: proxy náà gbé e dé, ibi àfojúsùn sì kọ IP egress yìí) tún iye àwọn ìkùnà tẹ̀léra ti proxy náà bẹ̀rẹ̀, bí ìdánwò tí a ṣiṣẹ́ fún. Ó wà ní pípa ní àkọ́kọ́: ìkọ̀sílẹ̀ kan ṣì jẹ́ aláìdásí, ó sì ń pa iye tẹ̀léra náà mọ́. 5xx ṣì jẹ́ aláìdánilójú lọ́nà méjèèjì, ìkọ̀sílẹ̀ kò sì lè yọ proxy kan kúrò, mú un má ṣiṣẹ́, tàbí tún mú un ṣiṣẹ́ láé.", "sidebar": { "home": "Ilé", "dashboard": "Pátákó Ìṣàkóso", @@ -1096,12 +1100,12 @@ "faviconPreview": "Àwòtẹ́lẹ̀ Favicon", "changelog": "Àkọsílẹ̀ Àwọn Àyípadà", "contextSection": "Àyíká-ọ̀rọ̀ àti Kaṣe", - "contextCaveman": "Caveman", + "contextCaveman": "Ènìyàn ihò", "contextRtk": "RTK", "contextCombos": "Àwọn Àkópọ̀ Ẹ́ńjìnnì", "contextLite": "Lite", "contextAggressive": "Kíkankíkan", - "contextUltra": "Ultra", + "contextUltra": "Gíga jù", "contextOmniglyph": "OmniGlyph", "contextSettings": "Àwọn Ètò Ìfúnpọ̀", "contextHeadroom": "Àlàfo Àfikún", @@ -1314,7 +1318,7 @@ "noResults": "Kò sí àbájáde" }, "webhooks": { - "title": "Webhooks", + "title": "Àwọn Webhook", "description": "Ṣètò àwọn ìpèpadà HTTP fún àwọn ìṣẹ̀lẹ̀ ètò.", "configuredWebhooks": "Àwọn Webhook tí a ti ṣètò", "configuredWebhooksDesc": "Ṣàkóso àwọn ibi ìfiránṣẹ́, àwọn ìṣẹ̀lẹ̀ tí a forúkọ sí, ipò, àti àwọn ìfiránṣẹ́ àdánwò.", @@ -1420,7 +1424,7 @@ "custom": { "endpointUrl": "URL Endpoint", "endpointUrlPlaceholder": "https://api.yourdomain.com/webhook", - "secretKey": "Secret Key", + "secretKey": "Kọ́kọ́rọ́ Àṣírí", "secretKeyPlaceholder": "Tẹ kọ́kọ́rọ̀ àṣírí sílẹ̀ tàbí fi sílẹ̀ ní òfo kí ó lè ṣẹ̀dá fúnra rẹ̀", "secretKeyHint": "A ń lò ó láti fọwọ́ sí àkọlé payload fún ìfàṣẹsí." }, @@ -1746,12 +1750,12 @@ "caveman": "Ènìyàn Ihò", "ccr": "CCR", "headroom": "Àyè Àfikún", - "lite": "Lite", + "lite": "Fúyẹ́", "llmlingua": "LLMLingua", "omniglyph": "OmniGlyph", "rtk": "RTK", "sessionDedup": "Yíyọ Àdáwòkọ Ìgbà", - "ultra": "Ultra", + "ultra": "Gíga Jù", "budget": "Ìnáwó", "pricing": "Ìdíyelé", "quotaShare": "Pípín Ìpín", @@ -2203,7 +2207,7 @@ "model": "Àwòṣe", "account": "Àkọọ́lẹ̀", "connection": "Ìsopọ̀", - "combo": "Combo", + "combo": "Àkópọ̀", "routeStep": "Ìgbésẹ̀", "tokens": "Àwọn token", "notAvailable": "kò sí", @@ -2776,9 +2780,9 @@ "cliRuntimeDetected": "A ti rí runtime CLI, ó sì ti ṣetán", "cliFoundNotRunnable": "A rí CLI ṣùgbọ́n kò lè ṣiṣẹ́{reason}", "cliRuntimeNotDetected": "A kò rí runtime CLI", - "binary": "Binary", + "binary": "Oníméjì", "configPath": "Ọ̀nà Config", - "configPathShort": "Config", + "configPathShort": "Ìṣètò", "failedCheckRuntimeStatus": "Àyẹ̀wò ipò runtime kùnà.", "copy": "Dàkọ", "copied": "A ti dà á kọ", @@ -3172,8 +3176,8 @@ "copilotToolCalling": "Pípè Irinṣẹ́", "copilotPasteInto": "Lẹ̀ mọ́ inú:", "copilotReloadInstruction": "Lẹ́yìn náà, tún VS Code rù kí o sì ṣètò kọ́kọ́rọ́ API nínú ibi ìtẹ̀wọlé.", - "wireApiChatCompletions": "Chat Completions (/chat/completions)", - "wireApiResponses": "Responses API (/responses)", + "wireApiChatCompletions": "Àwọn Ìparí Ìfọ̀rọ̀wérọ̀ (/chat/completions)", + "wireApiResponses": "API Àwọn Ìdáhùn (/responses)", "cliproxyapiActionFailed": "Ìṣe náà kùnà", "cliproxyapiActionSucceeded": "Ìṣe náà ṣàṣeyọrí", "cliproxyapiCheckUpdates": "Ṣàyẹ̀wò Àwọn Ìmúdójúìwọ̀n", @@ -3270,7 +3274,7 @@ "strictRandomDesc": "Dà deck rú — ó máa ń lo model kọ̀ọ̀kan lẹ́ẹ̀kan kí ó tó tún wọn dà rú", "fusion": "Àkópapọ̀", "fusionDesc": "Ó ń fi prompt ránṣẹ́ sí gbogbo panel model lẹ́ẹ̀kan náà, lẹ́yìn náà judge model kan yóò ṣàkópọ̀ wọn sí ìdáhùn ìkẹyìn kan", - "fusionJudgeModel": "Judge model", + "fusionJudgeModel": "Àwòṣe adájọ́", "fusionJudgeModelHelp": "Model tó ń ṣàkópọ̀ àwọn ìdáhùn panel sí ìdáhùn ìkẹyìn kan. Fi sílẹ̀ ní òfo láti lo panel model àkọ́kọ́.", "fusionMinPanel": "Pánẹ́lì tó kéré jù", "fusionMinPanelHelp": "Àwọn ìdáhùn pánẹ́lì tó ṣàṣeyọrí tí a nílò kí àwọn àwòṣe tó ń fàṣẹ́yìn tó gba àkókò àfikún (àìpé 2).", @@ -3832,7 +3836,7 @@ "outOfRequests": "nínú àwọn ìbéèrè {total}", "costByApiKey": "Ìnáwó nípa API Key", "costByAccount": "Ìnáwó nípa Àkọọ́lẹ̀", - "apiKeyName": "API Key", + "apiKeyName": "Kọ́kọ́rọ́ API", "account": "Àkọọ́lẹ̀", "requests": "Àwọn ìbéèrè", "cost": "Ìnáwó", @@ -3853,9 +3857,9 @@ "legacyFreeLabel": "Ti Àtijọ́ / Ọ̀fẹ́", "costExplorerTitle": "Olùṣàwárí Ìnáwó", "costExplorerDescription": "Ṣàwárí ìnáwó nípa provider, àwòṣe, API key, àkọọ́lẹ̀, tàbí ipele iṣẹ́.", - "groupProvider": "Provider", + "groupProvider": "Olùpèsè", "groupModel": "Àwòṣe", - "groupApiKey": "API Key", + "groupApiKey": "Kọ́kọ́rọ́ API", "groupAccount": "Àkọọ́lẹ̀", "groupServiceTier": "Ìpele Iṣẹ́", "serviceTierFast": "Yára", @@ -3978,7 +3982,7 @@ "providerModelsTitle": "{provider} — Àwọn àwòṣe", "noModelsForProvider": "Kò sí àwòṣe kankan fún provider yìí.", "chat": "Ìfọ̀rọ̀wérọ̀", - "embedding": "Embedding", + "embedding": "Ìfisínú", "image": "Àwòrán", "custom": "àdáni", "modelsCount": "{count, plural, one {# àwòṣe} other {# àwòṣe}}", @@ -4014,9 +4018,9 @@ "messagesApiDesc": "Ìgbékalẹ̀ Messages API ìbílẹ̀ Anthropic fún àwọn olupèsè tó bá Claude mu", "imageEdits": "Àwọn Àtúnṣe Àwòrán", "imageEditsDesc": "Ṣàtúnṣe kí o sì yí àwọn àwòrán tó wà tẹ́lẹ̀ padà pẹ̀lú AI (inpainting, outpainting, variations)", - "batchApi": "Batch API", + "batchApi": "API Ìdìpọ̀", "batchApiDesc": "Ṣe àkóso ọ̀pọ̀lọpọ̀ ìbéèrè lọ́nà àìṣiṣẹ́pọ̀ (tó bá OpenAI mu)", - "filesApi": "Files API", + "filesApi": "API Àwọn Fáìlì", "filesApiDesc": "Ṣàgbérù kí o sì ṣàkóso àwọn fáìlì fún ṣíṣe àkójọpọ̀", "videoGeneration": "Ṣíṣẹ̀dá Fídíò", "videoDesc": "Ṣẹ̀dá àwọn fídíò ní lílo àwọn àwòṣe AI bíi ComfyUI àti Stable Video Diffusion.", @@ -4045,7 +4049,7 @@ "tailscaleUrlNotice": "Ó ń lo àdírẹ́sì Tailscale .ts.net rẹ. Ó lè jẹ́ dandan láti wọlé àti láti fọwọ́sí Funnel nígbà lílò àkọ́kọ́.", "tailscaleTitle": "Tailscale Funnel", "tailscaleNeedsLoginHint": "Jẹ́rìí ìdánimọ̀ ẹ̀rọ yìí pẹ̀lú Tailscale, lẹ́yìn náà mú Funnel ṣiṣẹ́.", - "tailscaleBinaryPath": "Binary: {path}", + "tailscaleBinaryPath": "Oníméjì: {path}", "tailscaleLastError": "Àṣìṣe tó ṣẹ̀ṣẹ̀ ṣẹlẹ̀: {error}", "tailscaleInstallTitle": "Fi Tailscale sori ẹrọ", "tailscaleInstallIntro": "Ó máa fi Tailscale sori ẹ̀rọ yìí, yóò sì múra OmniRoute sílẹ̀ láti mú Funnel ṣiṣẹ́.", @@ -4135,7 +4139,7 @@ "badgeInternalTooltip": "Ojú-ọ̀nà inú ètò ni èyí", "tierAll": "Gbogbo rẹ̀", "tierAuth": "Tí a ti fìdí ìdánimọ̀ rẹ̀ múlẹ̀", - "tierLoopback": "Loopback", + "tierLoopback": "Ìpadà-sẹ́yìn", "tierAlwaysProtected": "Ní Ààbò Nígbà Gbogbo", "tierPublic": "Fún Gbogbo Èèyàn", "hideInternal": "Fi Àwọn Ti Inú Ètò Pamọ́", @@ -4343,8 +4347,8 @@ "events": "Àwọn ìṣẹ̀lẹ̀", "artifacts": "Àwọn àbájáde", "tablePhase": "Ìpele Tábìlì", - "offset": "Offset", - "limit": "Limit", + "offset": "Ìṣípò", + "limit": "Òpin", "skill": "Ọgbọ́n", "rpcEndpoint": "POST /a2a", "rpcMethodSend": "message/send", @@ -4388,7 +4392,7 @@ "editMemory": "Ṣàtúnṣe ìrántí", "editModal": { "title": "Ṣàtúnṣe Ìrántí", - "metadataLabel": "Metadata (JSON)", + "metadataLabel": "Mẹ́tàdátà (JSON)", "metadataInvalid": "JSON kò tọ́", "saveFailed": "Kò ṣeé ṣe láti fi ìrántí pamọ́" }, @@ -4429,7 +4433,7 @@ "reindexFailed": "Kùnà láti bẹ̀rẹ̀ ṣíṣe atọ́ka tuntun", "keywordLabel": "Ọ̀rọ̀ pàtàkì (FTS5)", "keywordReason": "Ìṣàwárí ọ̀rọ̀ pàtàkì wà nígbà gbogbo", - "embeddingLabel": "Embedding", + "embeddingLabel": "Ìfìsínú", "vectorStoreLabel": "Ibi Ìpamọ́ Vector", "qdrantLabel": "Qdrant", "rerankLabel": "Ṣètò ipò lẹ́ẹ̀kan sí i", @@ -4646,7 +4650,7 @@ "uptime": "Àkókò Ìṣiṣẹ́", "memory": "Ìrántí", "memoryRss": "Ìrántí (RSS)", - "heap": "Heap", + "heap": "Òkìtì", "cpu": "CPU", "database": "Àkójọ dátà", "version": "Ẹ̀yà", @@ -4798,7 +4802,7 @@ "partialData": "Apá kan tẹlímẹ́tírì nìkan ló wà: {error}" }, "mitm": { - "title": "MITM Proxy", + "title": "Aṣojú MITM", "description": "Proxy aláìfarahàn fún dídá àwọn ìbéèrè oníbàárà dúró àti fífi wọn ránṣẹ́ sí ipa ọ̀nà tó yẹ.", "enable": "Mú MITM Proxy ṣiṣẹ́", "enableDesc": "Bẹ̀rẹ̀ tàbí dá ìlànà dídá ìbéèrè dúró ní agbègbè àti ìyípadà DNS dúró.", @@ -5206,7 +5210,7 @@ "selectProvider": "Yan olupèsè kan", "selectedProvider": "Olùpèsè tí a yàn", "authMethod": "Ọ̀nà Ìjẹ́rìí Ìdánimọ̀", - "apiKeyLabel": "API Key", + "apiKeyLabel": "Kọ́kọ́rọ́ API", "apiKeyRequired": "API Key jẹ́ dandan", "selectProviderRequired": "Jọ̀wọ́ yan olupèsè kan", "enterApiKey": "Tẹ API key rẹ sí i", @@ -5797,10 +5801,10 @@ "ccCompatibleSummarizeThinkingDescription": "Ó máa ń ṣàfikún `display: \"summarized\"` sí àwọn ìbéèrè ìrònú CC Compatible kí àwọn àwòṣe Claude tí ó ṣe àtìlẹ́yìn lè san àwọn àyípadà ìrònú tí a lè rí.", "ccCompatibleSummarizeThinkingLabel": "Mú ìfihàn ìrònú àkótán ṣiṣẹ́", "ccCompatibleDetailsTitle": "Àwọn àlàyé relay tó bá CC mu", - "ccCompatibleLabel": "CC Compatible", + "ccCompatibleLabel": "Ó bá CC mu", "ccCompatibleModelsDescription": "Àwọn relay tó bá CC mu kì í ṣàfihàn àtòjọ àwòṣe. Ṣàfikún àwọn ID àwòṣe Claude tí relay rẹ gbà.", "ccCompatibleNameHint": "Orúkọ ìfihàn fún relay Claude Code-nìkan yìí.", - "ccCompatibleNamePlaceholder": "CC Relay Production", + "ccCompatibleNamePlaceholder": "Ìmújáde CC Relay", "ccCompatiblePrefixHint": "A máa ń lò ó nínú àwọn orúkọ àpèlé àwòṣe bíi prefix/model-id.", "ccCompatiblePrefixPlaceholder": "cc", "ccCompatibleValidationHint": "Lo olùpèsè yìí fún àwọn relay tí ó ń ṣe ìránṣẹ́ fún àwọn oníbàárà Claude Code nìkan. OmniRoute máa ń tún gbogbo ìbéèrè tó wọlé kọ sí ọ̀nà ìgbelewọ̀n tó bá Claude Code mu, kí àwọn relay wọ̀nyẹn lè gbà á. Tí o bá fẹ́ lo Claude Code CLI nìkan, tàbí tí o kò bá dá ọ lójú ohun tí irú relay yìí túmọ̀ sí, lo olùpèsè tó bá Anthropic mu déédé dípò rẹ̀.", @@ -6363,15 +6367,15 @@ "checkWebToken": "Ṣàyẹ̀wò token", "huggingchatLabel": "HuggingChat (Ọ̀fẹ́)", "huggingchatDesc": "Ìjíròrò LLM ọ̀fẹ́ nípasẹ̀ huggingface.co/chat", - "poeWebLabel": "Poe Web", + "poeWebLabel": "Wẹ́ẹ̀bù Poe", "poeWebDesc": "Ìjíròrò onírúurú model nípasẹ̀ poe.com", - "veniceWebLabel": "Venice Web", + "veniceWebLabel": "Wẹ́ẹ̀bù Venice", "veniceWebDesc": "Ìjíròrò AI tó dá lórí àṣírí", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "Wẹ́ẹ̀bù v0 Vercel", "v0VercelWebDesc": "Ṣíṣẹ̀dá code AI nípasẹ̀ v0.dev", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Wẹ́ẹ̀bù Kimi", "kimiWebDesc": "Ìjíròrò oníbàárà Moonshot AI nípasẹ̀ www.kimi.com (àgbáyé, Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Wẹ́ẹ̀bù Dola", "doubaoWebDesc": "Ìjíròrò ByteDance AI nípasẹ̀ dola.com", "overrideBaseUrlAdvanced": "Àgbàga: yí base URL padà", "overrideBaseUrlHint": "Àgbàga: darí provider inú ẹ̀rọ yìí sí endpoint àkànṣe. Fi sílẹ̀ ní òfo láti lo èyí àìyípadà.", @@ -6482,7 +6486,7 @@ "security": "Ààbò", "appearance": "Ìrísí", "routing": "Ìdarí ipa-ọ̀nà", - "cache": "Cache", + "cache": "Ìpamọ́", "resilience": "Ìfaradà", "description": "Àpèjúwe", "enable": "Mú ṣiṣẹ́", @@ -6777,7 +6781,7 @@ "themeGreen": "Àwọ̀ ewé", "themeViolet": "Àwọ̀ violet", "themeOrange": "Ọsàn", - "themeCyan": "Cyan", + "themeCyan": "Sáyánì", "whitelabeling": "Ìdánimọ̀ àmì-ọjà", "whitelabelingDesc": "Ṣe orúkọ àti logo ohun elo náà ní àdáni", "appName": "Orúkọ Ohun Elo", @@ -6909,7 +6913,7 @@ "healthcheckLatency": "Àkókò ìdádúró", "proxyDocumentationScopeTitle": "Ìpinnu àyè iṣẹ́ proxy", "proxyDocumentationScopeDescBefore": "OmniRoute ń yan proxy àbájáde ní ìtòlẹ́sẹẹsẹ ààyò yìí:", - "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeOrder": "àkójọpọ̀ → àkọọ́lẹ̀ → olùpèsè → àgbáyé", "proxyDocumentationScopeDescAfter": ". Àyè iṣẹ́ tó ṣe pàtó jù lọ ni yóò borí.", "proxyDocumentationAddTitle": "Fífi proxy àdáni kún un", "proxyDocumentationAddDescBefore": "Lọ sí taabu", @@ -6931,7 +6935,7 @@ "denoRelayTokenHint": "Token àjọ (tó bẹ̀rẹ̀ pẹ̀lú ddo_) láti console.deno.com → Organization → Settings → Organization Tokens. A máa lò ó lẹ́ẹ̀kan fún àgbékalẹ̀, a kì í sì í tọ́jú rẹ̀ láé.", "denoRelayOrgDomainHint": "Domain àkọ́kọ́ ti àjọ Deno Deploy rẹ (fún àpẹẹrẹ, acme.deno.net). O lè dé ibi relay náà ní https://<app-name>.<org-slug>.deno.net.", "proxyFreePoolFilterProtocol": "Ṣàlẹ̀mọ́ nípa protocol", - "proxyFreePoolProtocol": "Protocol", + "proxyFreePoolProtocol": "Ìlànà ìbánisọ̀rọ̀", "proxyFreePoolCountryPlaceholder": "Orílẹ̀-èdè (fún àpẹẹrẹ, US)", "proxyFreePoolFilterCountry": "Ṣàlẹ̀mọ́ nípa orílẹ̀-èdè", "proxyFreePoolMinQualityPlaceholder": "Didára tó kéré jù", @@ -6944,7 +6948,7 @@ "proxyFreePoolAddSelected": "Fi àwọn tí a yàn kún pool", "proxyFreePoolAddVisible": "Fi gbogbo èyí tó hàn kún pool", "proxyFreePoolSource": "Orísun", - "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolHostPort": "Olùgbàlejò:Pọ́ọ̀tì", "proxyFreePoolType": "Irú", "proxyFreePoolCountry": "Orílẹ̀-èdè", "proxyFreePoolQuality": "Didára", @@ -7052,7 +7056,7 @@ "routingAdvancedGuideTitle": "Ìtọ́sọ́nà ìdarí ọ̀nà onípele-gíga", "routingAdvancedGuideHint1": "Ọgbọ́n yìí ni a múṣiṣẹ́pọ̀ pẹ̀lú àwọn àiyípadà àkọ́kọ́ fún àkójọpọ̀ tuntun àti ìdarí ọ̀nà àfẹ́yìntì àkọọ́lẹ̀ àgbáyé.", "routingAdvancedGuideHint2": "Lo Fill First fún ààyò àkọọ́lẹ̀ tí ó ṣeé sọtẹ́lẹ̀, Round Robin pẹ̀lú Sticky Limit fún àwọn ìdìpọ̀ àkọọ́lẹ̀, àti P2C fún ìfaradà sí ìdádúró.", - "fillFirst": "Fill First", + "fillFirst": "Kún un Kọ́kọ́", "fillFirstDesc": "Lo àwọn àkọọ́lẹ̀ ní ìbámu pẹ̀lú bí a ṣe tò ààyò wọn", "roundRobin": "Round Robin", "roundRobinDesc": "Yí ká gbogbo àwọn àkọọ́lẹ̀", @@ -7139,7 +7143,7 @@ "ipModeWhitelist": "Àtòjọ ìyọ̀ǹda", "ipModeWhitelistPriority": "Àkọ́kọ́ WL", "addIpAddress": "Ṣàfikún Àdírẹ́sì IP", - "ipAddressPlaceholder": "192.168.1.0/24 or 10.0.*.*", + "ipAddressPlaceholder": "192.168.1.0/24 tàbí 10.0.*.*", "block": "+ Dènà", "allow": "+ Gba láàyè", "blocked": "Ti dènà ({count})", @@ -7376,7 +7380,7 @@ "customPricingNote": "O lè yí iye owó àkọ́kọ́ padà fún àwọn àwòṣe kan pàtó. Àwọn ìyípadà àdáni ló máa ní ààyò ju iye owó tí a ṣàwárí laifọwọ́yi lọ.", "editPricing": "Ṣàtúnṣe Iye Owó", "viewFullDetails": "Wo Àlàyé Kíkún", - "themeCoral": "Coral", + "themeCoral": "Kọ́ráì", "adaptiveVolumeRouting": "Ìtọ́sọ́nà Ìwọ̀n Tó Ń Múra Dọ́gba", "adaptiveVolumeRoutingDesc": "Mú iye àwọn àsopọ̀ pọ̀ tàbí dín kù laifọwọ́yi ní ìbámu pẹ̀lú ìwọ̀n payload àti ìfúnpá ìṣàn iṣẹ́.", "lkgpToggleTitle": "Olùpèsè Tó Ṣiṣẹ́ Dáadáa Kẹ́yìn (LKGP)", @@ -7564,7 +7568,7 @@ "qdrantSaved": "A ti fi àtúnṣe pamọ́", "qdrantSaveError": "Kò ṣeé ṣe láti fi àtúnṣe pamọ́", "qdrantHostHint": "Láìsí port. Àpẹẹrẹ: 127.0.0.1 tàbí http://qdrant", - "qdrantPort": "Port", + "qdrantPort": "Pọ́ọ̀tì", "qdrantPortHint": "Àìyípadà Qdrant: 6333", "qdrantCollectionHint": "Ibi tí a ó ti fi àwọn kókó ìrántí pamọ́.", "qdrantEmbeddingModel": "Àwòṣe embedding", @@ -7949,11 +7953,11 @@ "cliproxyapiImportAuthButton": "Ṣàgbéwọlé àwọn àkọọ́lẹ̀", "payloadRulesTitle": "Àwọn Òfin Payload", "payloadRulesDesc": "Ṣètò àwọn ìyípadà payload ìbéèrè gẹ́gẹ́ bí model àti protocol. Àwọn ìyípadà ni a máa ń tọ́jú sínú àwọn ètò, a sì máa ń tún wọn gbé sínú runtime lẹ́sẹ̀kẹsẹ̀ lẹ́yìn fífi wọ́n pamọ́.", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "àìyẹsẹ̀", "payloadRuleDefaultDesc": "Ó máa ń lo àwọn params nìkan nígbà tí ipa-ọ̀nà àfojúsùn kò bá sí nínú payload tí ń jáde.", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "kọ rékọjá", "payloadRuleOverrideDesc": "Ó fi àwọn iye sínú payload lọ́nà tipátipá, ó sì rọ́pò ohunkóhun tó ti wà ní ipa-ọ̀nà yẹn.", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "àsẹ̀", "payloadRuleFilterDesc": "Ó yọ àwọn params tí a dènà kúrò nínú payload kí a tó fi ìbéèrè upstream ránṣẹ́.", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "Ó dàbí default, ṣùgbọ́n a kọ́kọ́ tú àwọn iye ọ̀rọ̀ sí JSON nígbà tí ó bá ṣeé ṣe. Àpèjúwe àtijọ́ fún input, default-raw, tún jẹ́ ìtẹ́wọ́gbà nígbà fífi pamọ́.", @@ -7996,11 +8000,11 @@ "responsesStateModePreserve": "Pa mọ́", "responsesStateHint": "Láìfọwọ́yí máa ń yọ previous_response_id kúrò àyàfi tí ìsopọ̀ kan bá tan ibi ìpamọ́ OpenAI Responses ní tààrà. Yíyọ ọ́ kúrò ló ní ààbò jù fún àwọn client tí kò ní state bíi VS Code Custom Endpoint; nígbà náà, context yóò dá lórí kí client náà fi gbogbo history ránṣẹ́.", "responsesStateSaveError": "Ìmúdójúìwọ̀n ètò ipò Responses kùnà", - "codexFastTierTitle": "Codex Fast Tier", + "codexFastTierTitle": "Ìpele Yíyára Codex", "codexFastTierDesc": "Fi service_tier=priority kún gbogbo ìbéèrè OpenAI Codex káàkiri.", "codexFastTierHint": "Nígbà tí a bá tan án, OmniRoute máa ń fi service_tier=priority kún àwọn ìbéèrè Codex tí a ń rán jáde fún àwọn ìsopọ̀ tí kò tíì sọ tier kan pàtó. Priority tier nílò OpenAI Enterprise API key tàbí ChatGPT-auth Codex path; àwọn irú key mìíràn yóò gba àṣìṣe tó ní í ṣe pẹ̀lú tier láti ọ̀dọ̀ OpenAI. Àwọn ètò ìsopọ̀ kọ̀ọ̀kan lórí ojú-ewé olupèsè Codex ló ní ààyò.", "codexFastTierSaveError": "Ìmúdójúìwọ̀n ètò Codex Fast Tier kùnà", - "codexAutoPingTitle": "Codex Quota Auto-Ping", + "codexAutoPingTitle": "Ìfọwọ́kàn Aládàáṣe fún Ìpín Codex", "codexAutoPingDesc": "Yan láti tan án fún ìsopọ̀ kọ̀ọ̀kan: ó máa ń fi ìbéèrè kékeré kan ránṣẹ́ lẹ́sẹ̀kẹsẹ̀ lẹ́yìn tí fèrèsé session Codex bá tún bẹ̀rẹ̀, kí ó má bàa tutù nígbà tí o bá nílò rẹ̀.", "codexAutoPingWarning": "Ó máa ń lo díẹ̀ lára quota Codex gidi ní gbogbo ping. Ó wà ní pípa láìyípadà — tan án fún àwọn ìsopọ̀ tí o gbára lé gan-an nìkan.", "codexAutoPingSaveError": "Ìmúdójúìwọ̀n ètò Codex Auto-Ping kùnà", @@ -8012,7 +8016,7 @@ "codexFastTierModelsLabel": "Àwọn model Fast-tier", "codexFastTierModelsHint": "Àwọn model tí a sàmì sí nìkan ni yóò gba service_tier nígbà tí Fast Tier bá wà ní títàn.", "codexFastTierModelCheckbox": "Tan Fast Tier fún {model}", - "claudeFastModeTitle": "Claude Fast Mode", + "claudeFastModeTitle": "Ìpo Yíyára Claude", "claudeFastModeDesc": "Fi àwọn ìbéèrè Claude tí a yàn sínú Anthropic Fast Mode (speed:\"fast\").", "claudeFastModeHint": "Anthropic kò ṣe àtìlẹ́yìn Fast Mode lọ́nà òṣìṣẹ́ fún àwọn client ara-SDK. Nígbà tí a bá tan án, OmniRoute máa ń fi header X-CPA-Force-Fast-Mode ránṣẹ́ síwájú kí build CLIProxyAPI tí a so pọ̀ lè yan láti ṣe spoof entrypoint náà. Àwọn model Opus tí a tò sílẹ̀ nìkan ni àyẹ̀wò ẹ̀gbẹ́-client Anthropic kan sí. Subscription tier, Max plan, àti iye credit Fast Mode ṣì jẹ́ ohun tí server ń fipá mú — Anthropic lè dá out_of_credits padà kódà bí toggle náà bá wà ní títàn.", "claudeFastModeModelsLabel": "Ti lò sí àwọn model ({count})", @@ -9173,7 +9177,7 @@ "comboRouted": "Combo tí a darí sí ipa-ọ̀nà", "uniqueEndpoints": "Àwọn ibi ìparí ọ̀tọ̀ọ̀tọ̀", "routeDetails": "Àwọn àlàyé ipa-ọ̀nà", - "comboBadge": "Combo", + "comboBadge": "Àkójọpọ̀", "routeEndpointLabel": "Ibi ìparí", "routeConnectionLabel": "Ìsopọ̀", "scenarioVision": "Ìríran (ìlóye àwòrán)", @@ -9400,7 +9404,7 @@ "notifyAllCasesPassed": "Gbogbo ìṣẹ̀lẹ̀ {total} ló yege ✅", "notifySomeCasesFailed": "{passed}/{total} yege, {failed} kùnà", "notifyEvalRunFailed": "Ṣíṣe Eval kùnà", - "notifyEvalTitle": "Eval: {name}", + "notifyEvalTitle": "Ìdánwò: {name}", "modelEvals": "Àwọn Ìṣàyẹ̀wò Àwòṣe", "evalsHeroDescription": "Dán àwọn endpoint LLM rẹ wò kí o sì fìdí wọn múlẹ̀ nípa ṣíṣe àwọn àkójọpọ̀ ìṣàyẹ̀wò tí a ti ṣètò tẹ́lẹ̀. Àkójọpọ̀ kọ̀ọ̀kan ní àwọn ìṣẹ̀lẹ̀ ìdánwò tí ń fi àwọn ìbéèrè gidi ránṣẹ́ nípasẹ̀ OmniRoute, tí wọ́n sì ń fi àwọn ìdáhùn wé àwọn ààyè ìdíwọ̀n tí a retí — èyí ń ràn ọ́ lọ́wọ́ láti ṣàwárí ìfàsẹ́yìn, fi àwọn àwòṣe wé ara wọn, àti láti rí i dájú pé dídára ìdáhùn wà déédéé láàrín àwọn olùpèsè.", "qualityValidation": "Ìfọwọ́sí Dídára", @@ -9960,7 +9964,7 @@ "featureCloudSyncDesc": "Mú àwọn àtòpọ̀ rẹ dọ́gba láàárín àwọn ẹ̀rọ lẹ́sẹ̀kẹsẹ̀.", "featureCliSupportTitle": "Àtìlẹ́yìn CLI", "featureCliSupportDesc": "Ó ń ṣiṣẹ́ pẹ̀lú Claude Code, Codex, Cline, Cursor, àti àwọn mìíràn.", - "featureDashboardTitle": "Dashboard", + "featureDashboardTitle": "Pátákó ìṣàkóso", "featureDashboardDesc": "Dashboard àwòrán fún ìtúpalẹ̀ traffic ní àkókò gidi.", "howItWorks": "Bí OmniRoute Ṣe Ń Ṣiṣẹ́", "howItWorksDescription": "Data ń ṣàn láìsí ìṣòro láti inú ohun èlò rẹ, gba abala ìdarí ọlọ́gbọ́n wa kọjá, sí ọ̀dọ̀ olùpèsè tó dára jù lọ fún iṣẹ́ náà.", @@ -10039,7 +10043,7 @@ "managementApiReference": "Ìtọ́kasí API Ìṣàkóso", "managementApiDescription": "Àwọn endpoint fún ìṣiṣẹ́ aládàáṣe ti ìforúkọsílẹ̀ proxy, yíyan scope, àti ìṣípadà proxy àtijọ́.", "method": "Ọ̀nà", - "path": "Path", + "path": "Ọ̀nà", "notes": "Àwọn Àkíyèsí", "modelPrefixes": "Àwọn Ìṣáájú Model", "prefix": "Ìṣáájú", @@ -10100,7 +10104,7 @@ "providersCount": "Àwọn provider {count}", "providerTypeFree": "Ìpele Ọ̀fẹ́", "providerTypeOAuth": "OAuth", - "providerTypeApiKey": "API Key", + "providerTypeApiKey": "Kọ́kọ́rọ́ API", "useCaseSingleEndpointTitle": "Endpoint kan ṣoṣo fún ọ̀pọ̀ provider", "useCaseSingleEndpointText": "Darí àwọn client sí base URL kan, kí o sì pín ipa nípasẹ̀ prefix model (fún àpẹẹrẹ: gh/, cc/, kr/, openai/).", "useCaseFallbackTitle": "Ìpadàsẹ́yìn àti yíyí model padà pẹ̀lú àwọn combo", @@ -10108,7 +10112,7 @@ "useCaseUsageVisibilityTitle": "Ìríran sí lílò, iye owó àti ìṣàtúnṣe àṣìṣe", "useCaseUsageVisibilityText": "Tọpinpin àwọn token àti iye owó gẹ́gẹ́ bí provider, account, àti API key nínú àwọn taabu Usage àti Analytics.", "clientCherryStudioTitle": "Cherry Studio", - "baseUrlLabel": "Base URL", + "baseUrlLabel": "URL ìpìlẹ̀", "chatEndpointLabel": "Endpoint ìfọ̀rọ̀wérọ̀", "modelRecommendationLabel": "Àbá model: prefix tí a sọ ní kedere", "clientCodexTitle": "Àwọn Model Codex / GitHub Copilot", @@ -10477,7 +10481,7 @@ "statusCancelled": "Ti fagilé", "repositoryName": "Orúkọ repository", "repositoryUrl": "URL repository", - "branch": "Branch", + "branch": "Ẹ̀ka", "agentDescriptions": { "jules": "Aṣojú ìkọ́kóòdù aládàáṣiṣẹ́ ti Google", "devin": "Onímọ̀ ẹ̀rọ sọfitiwia AI ti Cognition", @@ -10676,7 +10680,7 @@ }, "proxyConfigModal": { "levelGlobal": "Àgbáyé", - "levelProvider": "Provider", + "levelProvider": "Olùpèsè", "levelCombo": "Àpapọ̀", "levelKey": "Kọ́kọ́rọ́", "levelDirect": "Tààrà (láìsí proxy)", @@ -10772,7 +10776,7 @@ "devinDesktopPasteDescription": "Pèsè kọ́kọ́rọ́ API Devin tó ti wà tẹ́lẹ̀ láti inú ìgbà Devin tí a ti fìdí ìdánimọ̀ rẹ̀ múlẹ̀. Wíwà àti àwọn ìgbésẹ̀ fún fífi kọ́kọ́rọ́ jáde yàtọ̀ síra gẹ́gẹ́ bí ẹ̀yà Devin àti àkọọ́lẹ̀.", "devinPasteDescription": "Pèsè WINDSURF_API_KEY rẹ (tí a rí gbà nípasẹ̀ `devin auth login`, tàbí nípasẹ̀ àṣẹ Windsurf IDE \"Windsurf: Provide Auth Token\").", "grokAuthJsonPlaceholder": "{\"https://auth.x.ai::clientId\": {\"key\": \"eyJ...\", \"refresh_token\": \"...\"}}", - "grokAuthJsonLabel": "Grok Build auth.json", + "grokAuthJsonLabel": "Kọ auth.json Grok", "apiTokenPlaceholder": "ws-...", "apiKeyTokenLabel": "Kọ́kọ́rọ́ API / Token", "saving": "Ń fipamọ́…", @@ -10802,8 +10806,8 @@ "tokensAutoDetected": "A ṣàwárí àwọn token láìfọwọ́yí láti Cursor IDE ní àṣeyọrí!", "cursorNotDetected": "A kò rí Cursor IDE. Lẹ access token rẹ (àti refresh token tí ó bá wà).", "dockerImportHint": "Ṣé o ń ṣiṣẹ́ nínú Docker? Ó dára jù láti lo Login with Cursor. IDE auto-import àti cursor-agent kì í sábà sí nínú container. Wo docs/providers/CURSOR-DOCKER.md.", - "accessToken": "Access Token", - "refreshToken": "Refresh Token", + "accessToken": "Tóókì ìwọlé", + "refreshToken": "Tóókì ìsọdọ̀tun", "refreshTokenPlaceholder": "Àṣàyàn — ń mú ìsọdọ̀tun token aládàáṣe ṣiṣẹ́", "required": "*", "accessTokenPlaceholder": "Token ìráyè yóò kún fúnra rẹ̀...", @@ -10852,7 +10856,7 @@ "loading": "Ń ṣàkójọpọ̀ àwọn proxy...", "noProxies": "Kò tíì sí proxy tí a fipamọ́.", "tableName": "Orúkọ", - "tableEndpoint": "Endpoint", + "tableEndpoint": "Ojúami ìparí", "tableStatus": "Ìpò", "tableHealth": "Ìlera (wákàtí 24)", "tableUsage": "Ìlò", @@ -10870,7 +10874,7 @@ "familyIpv6": "IPv6 nìkan", "familyHint": "Ẹbí àdírẹ́sì egress. Àdáṣe ń jẹ́ kí dual-stack wà; IPv4/IPv6 máa so proxy yìí mọ́ ẹbí yẹn (èyí ń dènà jíjò v4 lábẹ́ proxy IPv6-nìkan).", "labelHost": "Olùgbàlejò", - "labelPort": "Port", + "labelPort": "Èbúté", "labelUsername": "Orúkọ aṣàmúlò", "labelPassword": "Ọ̀rọ̀ aṣínà", "labelRegion": "Ẹkùn", @@ -10884,13 +10888,13 @@ "save": "Fipamọ́", "bulkModalTitle": "Ìyànṣí Proxy Ní Ọ̀pọ̀lọpọ̀", "bulkLabelScope": "Ààlà", - "bulkLabelProxy": "Proxy", + "bulkLabelProxy": "Aṣojú", "bulkClearAssignment": "(Pa ìyànṣí rẹ́)", "bulkLabelScopeIds": "Àwọn ID ààlà (tí a fi àmì kọ́mà tàbí ìlà tuntun yà sọ́tọ̀)", "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic", "bulkApply": "Fi sílò", "labelScope": "Ààlà", - "labelProxy": "Proxy", + "labelProxy": "Aṣojú", "scopeGlobal": "gbogbo àgbá", "scopeProvider": "olùpèsè", "scopeAccount": "àkọọ́lẹ̀", @@ -10964,16 +10968,16 @@ "strategyLatency": "Èyí tí a mú kí ó dára jù fún àkókò ìdádúró", "poolMembersLabel": "Àwọn ọmọ ẹgbẹ́ àkójọpọ̀ ({count})", "poolNoMembers": "Kò tíì sí prọ́ṣì kankan nínú àkójọpọ̀ yìí.", + "poolEgressObservation": "{exits, plural, one {# àbájáde} other {# àwọn àbájáde}} tí {connections, plural, one {àsopọ̀ #} other {àwọn àsopọ̀ #}} lò · tó {max} lórí àbájáde kan · ní wákàtí {hours} sẹ́yìn", + "poolEgressObservationEmpty": "A kò rí ìrìnàjò dátà kankan ní wákàtí {hours} sẹ́yìn", + "poolEgressObservationHint": "A kà á láti inú àkọsílẹ̀ proxy láàárín àkókò náà: àwọn IP àbájáde ọ̀tọ̀ọ̀tọ̀ tí a rí fún àwọn ọmọ ẹgbẹ́ pool yìí, àti àwọn àsopọ̀ OmniRoute tí ó lò wọ́n. \"Lórí àbájáde kan\" túmọ̀ sí láàárín àkókò náà, kì í ṣe ní àkókò kan náà. Ìdènà 429 fún IP kọ̀ọ̀kan máa ń dá àwọn àsopọ̀ ti ìdílé provider kan náà dúró fún ìgbà díẹ̀ nìkan.", "poolRemove": "Yọ kúrò", "poolRemoveFailed": "Kò ṣeé ṣe láti yọ prọ́ṣì náà kúrò nínú àkójọpọ̀", "poolAddLabel": "Ṣàfikún prọ́ṣì kan", "poolAddMember": "Ṣàfikún", "poolAddFailed": "Kùnà láti ṣàfikún aṣojú sí àkójọpọ̀ náà", "poolSelectProxy": "Yan aṣojú kan…", - "poolSaveFailed": "Kùnà láti fi ìpín àkójọpọ̀ pamọ́", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family." + "poolSaveFailed": "Kùnà láti fi ìpín àkójọpọ̀ pamọ́" }, "playground": { "title": "Pápá Ìdánwò Àwòṣe", @@ -11285,7 +11289,7 @@ "refresh": "Sọ di tuntun", "columnsLabel": "Àwọn ọ̀wọ̀n", "cacheSem": "SEM", - "cacheUp": "UP", + "cacheUp": "ṢÍṢẸ́", "semantic": "Ìtumọ̀", "upstream": "Orísun òkè", "semanticCacheHit": "A rí i nínú kaṣe ìtumọ̀ (OmniRoute ló pèsè rẹ̀)", @@ -11430,11 +11434,11 @@ "filterSuccess": "Àṣeyọrí", "filterTimeout": "Àkókò ti parí", "colStatus": "Ipò", - "colProxy": "Proxy", + "colProxy": "Aṣojú", "colTls": "TLS", "colType": "Irú", "colLevel": "Ìpele", - "colProvider": "Provider", + "colProvider": "Olùpèsè", "colTarget": "Ibi Àfojúsùn", "colLatency": "Ìdádúró", "colClientIp": "IP Client", @@ -11446,9 +11450,9 @@ "allLevels": "Gbogbo Àwọn Ìpele", "allProviders": "Gbogbo Àwọn Olùpèsè", "total": "àpapọ̀", - "ok": "OK", - "err": "ERR", - "timeoutShort": "TMO", + "ok": "Ó DÁRA", + "err": "ÀṢÌṢE", + "timeoutShort": "ÀKÓKÒ TÁN", "direct": "tààrà", "newest": "Èyí tó tuntun jù", "oldest": "Èyí tó ti pẹ́ jù", @@ -11552,7 +11556,7 @@ "title": "Pípín kótà", "description": "Pín àwọn kótà olùpèsè láàárín àwọn kọ́kọ́rọ́ API pẹ̀lú àwọn ààlà %", "newPool": "Àkójọpọ̀ tuntun", - "betaTitle": "Beta", + "betaTitle": "Bẹ́tà", "betaDescription": "A ti fi àtòjọ ìṣètò pamọ́ sínú localStorage (a kò tíì fi pamọ́ sórí server). A kò tíì so ìmúlò ààlà fún ìbéèrè kọ̀ọ̀kan mọ́ proxy pipeline. Ojú-ìwòye yìí jẹ́ kí o ṣe àpẹrẹ kí o sì rí bí a ṣe pín kótà; ìmúlò gidi yóò dé nínú àtúnṣe ọjọ́ iwájú pẹ̀lú ìfipamọ́ DB àti dídá àwọn ìpè upstream dúró.", "kpiActivePools": "Àwọn àkójọpọ̀ tó ń ṣiṣẹ́", "kpiKeysAllocated": "Àwọn kọ́kọ́rọ́ tí a pín", @@ -11674,8 +11678,8 @@ "endpointsBaseUrl": "URL ìpìlẹ̀", "endpointsCollapse": "Kó jọ", "endpointsExpand": "Fẹ̀ sí i", - "endpointsAnthropicNote": "Anthropic-native", - "endpointsResponsesNote": "OpenAI Responses — codex/github", + "endpointsAnthropicNote": "Anthropic-abínibí", + "endpointsResponsesNote": "Àwọn Ìdáhùn OpenAI — codex/github", "endpointsWsNote": "WebSocket — codex nìkan", "betaText": "Ìpín Ìwọ̀n-ààlà ń ṣiṣẹ́, ṣùgbọ́n a retí àwọn àṣìṣe. Ṣé o rí ọ̀kan? Jọ̀wọ́ fi tó wa létí.", "betaReportLink": "Jábọ̀ ìṣòro kan", @@ -12300,7 +12304,7 @@ "versionCommandPlaceholder": "fún àpẹẹrẹ: myagent --version", "spawnArgs": "Àwọn àríyànjiyàn ìpilẹ̀ṣẹ̀", "spawnArgsPlaceholder": "fún àpẹẹrẹ: --quiet, --json", - "cliCodeRedirectCta": "Open CLI Code" + "cliCodeRedirectCta": "Ṣí Kóòdù CLI" }, "agentSkills": { "catalog": { @@ -12519,7 +12523,7 @@ "storage": { "label": "Ibi ìpamọ́", "agent": "Catalog aláyípadà (/api/agent-skills) → SKILL.md lórí GitHub", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite (SkillsMP / skills.sh / ti agbègbè)" }, "tagline": { "label": "Ọ̀rọ̀ àkànṣe", @@ -12661,7 +12665,7 @@ "add": "Ṣàfikún", "manualApiKey": "Lo kọ́kọ́rọ́ API afọwọ́ṣe", "createDahlTokenFailed": "Ṣíṣẹ̀dá àmì Dahl kùnà", - "providerProxy": "Proxy", + "providerProxy": "Aṣojú", "providerProxyConfigureHint": "Ṣètò proxy", "providerProxyTitleConfigured": "A ti ṣètò proxy: {host}" }, @@ -12987,6 +12991,12 @@ "STREAM_RECOVERY_MIDSTREAM_ENABLED": { "description": "Gba ìmúpadàbọ̀ stream láàyè láti tún béèrè fún ìdáhùn náà kí ó sì so ó pọ̀ lẹ́yìn tí àwọn byte ti dé ọ̀dọ̀ client." }, + "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { + "description": "Mú kí ìtẹ̀síwájú láàárín ṣiṣan jẹ́ àìléwu fún ìpè irinṣẹ́: má ṣe tẹ̀síwájú ṣiṣan tí a gé lẹ́yìn tí a bá ti fi ìpè irinṣẹ́ ránṣẹ́ (yálà ó ṣì ń lọ tàbí ó ti parí), kí o sì dá dúró lẹ́yìn ìtẹ̀síwájú òfo kan dípò lílo gbogbo iye ìgbìyànjú-àtúnṣe." + }, + "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { + "description": "Yí padà lẹ́ẹ̀kan sí ìsopọ̀ mìíràn tó jọra nígbà tí ṣiṣan kan bá ti pa kí ó tó fi férémù tó wúlò kankan jáde, tí àtúnṣègbìyànjú tó ní ààlà lórí ìsopọ̀ kan náà sì ti tán. Bí kò bá sí ìsopọ̀ mìíràn tó ṣeé lò, àṣìṣe early-EOF àkọ́kọ́ ni a ó dá padà. Pípa: early-EOF yóò ṣì jẹ́ ìkẹyìn lẹ́yìn àtúnṣègbìyànjú náà." + }, "MODEL_CATALOG_INCLUDE_NAMES": { "description": "Fi àwọn field orúkọ tó rọrùn láti fi hàn sínú àwọn ìdáhùn /v1/models. Pa èyí fún àwọn client tí wọ́n gba ID àwòṣe nìkan." }, @@ -13025,18 +13035,12 @@ "description": "Tẹ̀síwájú pẹ̀lú àwọn ìpè irinṣẹ́ tí sáfà ń ṣàkóso tí kì í sanwọ́ títí àwòṣe yóò fi dá ìdáhùn tí oníbàárà lè lò padà." }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths.", - "label": "__MISSING__:Retry-After Provenance" + "label": "Ìpilẹ̀ṣẹ̀ Retry-After", + "description": "Lórí àwọn ìdáhùn àpapọ̀ 429/503 pé iṣẹ́ kò sí, má ṣe fi Retry-After kún un nígbà tí a kò mọ àkókò ìgbìyànjú-àtúnṣe ọjọ́ iwájú tó dájú, dípò fífi 1s àròsọ ránṣẹ́; fi error.retry_after_provenance kún un, kí o sì ka àwọn ìtọ́kasí ìgbìyànjú-àtúnṣe inú ọ̀rọ̀ lórí àwọn ọ̀nà ìsọfo combo." }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip.", - "label": "__MISSING__:Protected-Priority Infra Stops as 502" - }, - "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." - }, - "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { - "description": "__MISSING__:Fail over once to a sibling connection when a stream closes before emitting any useful frame and the bounded same-connection retry is spent. With no usable sibling, the original early-EOF error is returned. Off: early-EOF stays terminal after the retry." + "label": "Àwọn Ìdádúró Amáyédẹrùn Tó Ní Ààyò Ààbò Gẹ́gẹ́ Bí 502", + "description": "Dáhùn pẹ̀lú 502 dípò 503 nígbà tí ibi-àfojúsùn tó ní ààyò, tí ìfàsẹ́yìn rẹ̀ jẹ́ fún quota nìkan, bá dá combo dúró nítorí ohun tí a lè fi ẹ̀rí hàn pé kì í ṣe quota: olùdáwọ́lé àyíká olupèsè tó ṣí tàbí fífo ìdádúró asọtẹ́lẹ̀." } } }, @@ -13389,8 +13393,8 @@ "maxTokensDesc": "Àwọn token tó pọ̀ jù fún ìdáhùn awoṣe kọ̀ọ̀kan. Àwọn iye tó ga máa ń náni sí i, wọ́n sì máa ń gba àkókò púpọ̀ sí i.", "providerIdPlaceholder": "ID Olùpèsè (tẹ̀ sílẹ̀ tàbí yan)", "modelIdPlaceholder": "ID Awoṣe (kì í ṣe dandan)", - "on": "ON", - "off": "OFF", + "on": "TAN", + "off": "PA", "availableProviders": "Àwọn olùpèsè tó wà ({count})", "noProviderOverrides": "Kò sí ìṣàtúnṣe — gbogbo àwọn olùpèsè tó ń ṣiṣẹ́ yóò kópa pẹ̀lú àwọn awoṣe àìyípadà wọn", "resetFailed": "Ìtúnpadà kùnà", @@ -13457,8 +13461,8 @@ "contributorHint": "GitHub OAuth ń yẹ ipò ọ̀sẹ̀ lọ́wọ́ wò: Àwọn Top 10 gba ọjọ́ 365, àwọn tó wà ní ipò 11–100 sì gba ọjọ́ 90. Iye PR nìkan kì í fúnni ní àyè láti wọlé ní òde Top 100.", "supporterButton": "Ṣe àtìlẹ́yìn fún iṣẹ́ náà", "supporterHint": "Àwọn àṣàyàn ẹ̀ẹ̀kan ṣoṣo ti oṣù mẹ́fà, ọdún kan àti títí láé kò ní ìtúnṣe aládàáṣe; àwọn àkókò tó yẹ ń kójọpọ̀, àṣàyàn títí láé sì ni ó borí.", - "colProvider": "Provider", - "colModel": "Model", + "colProvider": "Olùpèsè", + "colModel": "Àwòṣe", "colQuota": "Ìpín", "colLimits": "Àwọn ààlà", "trainsOnPrompts": "Ń kọ́ model pẹ̀lú prompts", @@ -13466,7 +13470,7 @@ "limitsUnknownHelp": "Àwọn ààlà tí feed Radar nìkan ròyìn; kò sí ààlà tí a tẹ̀ jáde fún àkọsílẹ̀ yìí", "contextUnknownHelp": "Fèrèsé context jẹ́ àìmọ̀ fún àkọsílẹ̀ yìí", "capabilityUnknownHelp": "Feed kò ròyìn agbára yìí", - "colContext": "Context", + "colContext": "Àyíká", "colCapabilities": "Àwọn agbára", "colTos": "Ewu ToS", "newBadge": "tuntun", @@ -13573,9 +13577,9 @@ "timeline": { "title": "Àwọn Ìyípadà Olùdáwọ́dúró", "window": "Àárín àkókò", - "window1h": "1h", - "window6h": "6h", - "window24h": "24h", + "window1h": "wákàtí 1", + "window6h": "wákàtí 6", + "window24h": "wákàtí 24", "empty": "Kò sí ìyípadà ní àárín àkókò tí a yàn", "currentState": "Ipò Lọ́wọ́lọ́wọ́", "state": { @@ -13605,7 +13609,7 @@ "remaining": "Tó Kù", "noLockouts": "Kò sí ìdènà tó ń ṣiṣẹ́", "provider": "Olùpèsè", - "id": "ID", + "id": "Ìdánimọ̀", "authType": "Irú Ìfàṣẹsí", "priority": "Ààyò", "isActive": "Ń Ṣiṣẹ́", @@ -13650,6 +13654,7 @@ }, "featureFlagCapabilityFilterEnabledDescription": "Kọ àwọn ìbéèrè kí a tó fi wọ́n ránṣẹ́ nígbà tí àwòṣe àfojúsùn kò bá ní àwọn agbára tí a nílò (ìríran, irinṣẹ́, àbájáde tó ní ìṣètò, fèrèsé àyíká-ọ̀rọ̀). Èyí ń dáàbò bo àwọn ìbéèrè olùpèsè-kan tààrà tí ó ré àlẹ̀mọ́ ìbámu combo-layer kọjá.", "featureFlagDisableContextWindowChecksDescription": "Fo àyẹ̀wò fèrèsé àyíká-ọ̀rọ̀ àti iye token ìṣàkóso tó pọ̀jù ti OmniRoute fún àwọn ìbéèrè àwòṣe-kan tààrà. Àwọn olùpèsè upstream ṣì ń fi àwọn ààlà gidi wọn múlẹ̀. Fúnpọ̀ prompt àti àwọn ààlà token àbájáde ṣì ń ṣiṣẹ́.", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "Àwọn ìṣirò ìṣàwárí àti àwọn ìṣàwárí àìpẹ́ yóò ka àwọn olùpèsè tí àsopọ̀ wọn ṣì ń ṣiṣẹ́ nìkan (àwọn olùpèsè tí kò nílò kọ́kọ́rọ́ bíi duckduckgo-free ni a máa ń kà nígbà gbogbo). Pípa yóò pa gbogbo ìlà ìṣàwárí tí a ti fi pamọ́ tí ó ní ID olùpèsè mọ́.", "publicSystem": { "notFound": { "title": "A kò rí ojú-ewé náà", @@ -14046,9 +14051,9 @@ "filterSources": "Àwọn orísun", "filterProviders": "Àwọn olùpèsè", "clearFilters": "Pa àwọn àlẹ̀mọ́ rẹ́", - "sourceCloudAgent": "Cloud Agent", + "sourceCloudAgent": "Aṣojú Awọsanma", "sourceA2A": "A2A", - "sourceConductor": "Conductor", + "sourceConductor": "Olùdarí", "sourceStale": "Kò tíì jẹ́ tuntun láti {since}", "sourceOffline": "Kò sí lórí ayélujára", "sourceCollapse": "Kó jọ", @@ -14132,7 +14137,7 @@ "modelDelta": "Àwọn model {current}, +{added} / -{removed}", "ranking": "Ipò model", "noRankings": "Kò tíì sí ìfiwéra tí a ti fìdí rẹ̀ múlẹ̀.", - "model": "Model", + "model": "Àwòṣe", "category": "Ẹ̀ka", "rating": "Ìwọ̀n", "matches": "Àwọn ìbámu", @@ -14160,10 +14165,5 @@ "partnerLinkNote": "Ọ̀nà asopọ aláṣiṣẹ́pọ̀", "dismissAriaLabel": "Pa á tì" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Mú ṣíṣẹ̀dá àwọn ẹ̀yà ìpele ìrònú (fún àpẹẹrẹ -low, -medium, -high) nínú àkójọ /v1/models ṣiṣẹ́ mọ́.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "__MISSING__:Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "__MISSING__:Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Mú ṣíṣẹ̀dá àwọn ẹ̀yà ìpele ìrònú (fún àpẹẹrẹ -low, -medium, -high) nínú àkójọ /v1/models ṣiṣẹ́ mọ́." } diff --git a/src/i18n/messages/zh-CN.json b/src/i18n/messages/zh-CN.json index 7f363529a8..d1b93cb084 100644 --- a/src/i18n/messages/zh-CN.json +++ b/src/i18n/messages/zh-CN.json @@ -287,7 +287,7 @@ "modelNamePlaceholder": "模型名称", "mcpQuickStartStep2": "MCP 快速开始步骤 2", "quickStart": "快速开始", - "fullExportFailedWithError": "Full Export Failed With Error", + "fullExportFailedWithError": "完整导出失败并出现错误", "loadingBackups": "正在加载备份", "anthropicBaseUrlPlaceholder": "Anthropic 基础 URL", "description": "描述", @@ -359,7 +359,7 @@ "rerankDesc": "重排说明", "modelsPathPlaceholder": "Model 路径", "noCombosYet": "暂无 Combo", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", + "connectedVerificationPendingWithError": "已连接,验证待处理并出现错误", "comboDefaultsGuideHint1": "配置 Combo 默认策略和目标。", "enableCloudTitle": "启用云端", "configuredProvidersHint": "仅显示已配置的 Provider。", @@ -369,7 +369,7 @@ "removeProviderOverrideAria": "移除提供者覆盖", "nodeVersion": "Node 版本", "openai": "OpenAI", - "exportFailedWithError": "Export Failed With Error", + "exportFailedWithError": "导出失败并出现错误", "proxyConfigured": "代理已配置", "concurrencyPerModel": "每个模型并发数", "protocolTasksLabel": "协议任务标签", @@ -704,7 +704,7 @@ "apiKey": "API密钥", "xpLastHour": "XP(1 小时)", "zScore": "Z 分数", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "可疑", "tokensCommunityServers": "社区服务器", "tokensServerNamePlaceholder": "服务器名称", "tokensApiKeyPlaceholder": "API密钥", @@ -807,13 +807,13 @@ "batchConceptBenefit50pct": "输入 + 输出令牌享受 50% 折扣", "batchConceptAsync24h": "异步处理,24 小时完成窗口", "batchConceptUseCases": "最适合批量分类、评估和嵌入", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", + "batchHeaderSubtitle": "将多个请求作为一个作业运行", + "batchStep1": "1 · 上传 JSONL", + "batchStep1Desc": "添加请求", + "batchStep2": "2 · 创建批处理", + "batchStep2Desc": "运行作业", + "batchStep3": "3 · 获取结果", + "batchStep3Desc": "下载输出", "filesConceptTitle": "批处理文件", "filesConceptSubtitle": "批处理使用的 JSONL 文件:输入请求、结果和错误。", "filesConceptInput": "输入 — 每行一个请求的 JSONL", @@ -988,14 +988,14 @@ "disabled": "已禁用", "featureFlagOmnirouteEmergencyFallbackDescription": "将预算耗尽的请求路由到紧急免费备用提供者/模型。", "featureFlagArenaEloSyncEnabledDescription": "启用定期同步 Arena AI 排行榜 ELO,用于模型智能排名。", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "在组合路由切换模型时生成并注入对话摘要。禁用后会独立处理模型切换,并阻止所有现有及未来组合的后台交接请求。", "featureFlagExposeCcDiscoveryAliasesDescription": "在 /v1/models 上发布 claude/<provider>/<model> 镜像 ID,让 Claude Code 网关模型发现能列出非 Claude 模型。警告:全局启用会使所有客户端的目录条目翻倍。", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> 网关别名的总开关。开启(默认):/v1/models 会为每个符合条件且支持思考的 Claude 模型公布一个无思考变体,请求中发送的 no-think/ ID 会解析回实际模型,并抑制推理。关闭:不会公布任何变体,no-think/ ID 会像其他未知模型 ID 一样处理。开启此开关时,每个模型的 ModelSpec.noThinkingAlias 选择启用/停用设置仍然适用。", "featureFlagChatVirtualLanesEnabledDescription": "为提供者调度启用按租户的自适应虚拟准入通道(#9654):一个租户的突发流量不再导致另一个租户收到 503。OMNIROUTE_CHAT_VIRTUAL_LANES 环境变量优先于此仪表板设置;更改在服务器重启后生效。", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "控制面板提供者页面:仅在提供者明确支持的信号上显示“免费”徽章——不再对没有文档说明免费层级的已注册提供者使用显示名称启发式规则、非布尔型免费字段和 :free 后缀。关闭时沿用旧版徽章规则。", + "featureFlagProxySkipRecentlyFailedDescription": "代理池和 opencode 的按账户轮换会在每个进程的一段时间内,停止再次提供刚刚失败的代理(TCP 探测被拒绝,或通过该代理收到 429)。每次重复失败时,该时段都会翻倍,直至达到上限。不会写入代理状态;当所有候选代理都被暂时搁置时,选择保持不变。默认关闭:选择顺序与普通轮换完全相同。", + "featureFlagProxyPoolEgressObservationDescription": "在仪表板的代理池下显示:过去 24 小时内观察到多少个出口 IP 为其成员提供服务、使用这些 IP 的连接数,以及单个 IP 背后观察到的最大数量。此信息为只读,根据代理日志计算,绝不用于路由。默认关闭:代理池编辑器保持不变,观测路由返回 null。", + "featureFlagProxyHealthBlockedResetsStreakDescription": "在代理健康检查中,如果探测被目标拒绝(401/403/429:代理已转发,但目标拒绝了此出口 IP),则像探测成功一样重置代理的连续失败计数。默认关闭:拒绝保持中性,并保留当前连续失败计数。无论如何,5xx 均保持结果不确定,而且拒绝绝不会导致代理被移除、禁用或重新激活。", "sidebar": { "home": "首页", "dashboard": "仪表板", @@ -1182,8 +1182,8 @@ "consoleLogs": "控制台日志", "logsTimeline": "时间线", "logsTimelineSubtitle": "可视化请求时间线", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", + "conversations": "对话", + "conversationsSubtitle": "多轮智能体对话", "globalRouting": "全局路由", "mitmProxy": "MITM 代理", "oneProxy": "1Proxy", @@ -1213,11 +1213,11 @@ "leaderboard": "排行榜", "profile": "个人资料", "tokens": "令牌", - "gamificationAdmin": "__MISSING__:Gamification Admin", + "gamificationAdmin": "游戏化管理", "leaderboardSubtitle": "排名与成就", "profileSubtitle": "账户与偏好", "tokensSubtitle": "令牌使用和预算", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", + "gamificationAdminSubtitle": "异常监控与反作弊", "usageSubtitle": "流量和使用统计", "analyticsComboHealthSubtitle": "组合目标可靠性", "analyticsUtilizationSubtitle": "提供者利用率", @@ -1278,8 +1278,8 @@ "agentBridge": "代理桥接", "agentBridgeSubtitle": "拦截 IDE 代理流量", "trafficInspector": "流量检查器", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "检查来自应用的请求与响应流量", + "trafficInspectorPurpose": "准确查看您的应用向 AI 提供者发送和接收的内容。适用于任何与 OpenAI 兼容的客户端。", "cliCode": "CLI 代码的", "cliCodeSubtitle": "指向 OmniRoute 的代码工具", "cliAgents": "CLI 代理", @@ -1725,7 +1725,7 @@ "costs": "费用", "health": "健康状况", "runtime": "运行时", - "webhooks": "Webhooks", + "webhooks": "Webhook", "home": "首页", "activity": "动态", "agentSkills": "Agent 技能", @@ -1762,7 +1762,7 @@ "discovery": "发现", "freeProviderRankings": "免费服务商排行", "radar": "Radar", - "setup": "Setup", + "setup": "设置", "freeTiers": "免费层级", "gamification": "游戏化", "leaderboard": "排行榜", @@ -1826,11 +1826,11 @@ "updateStarted": "更新已开始...", "reloadingPageAutomatically": "自动重新加载页面...", "providerTopology": "提供者拓扑", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "最近的请求", + "recentRequestsEmpty": "暂无请求。", + "recentRequestsModel": "模型", + "recentRequestsTokens": "输入 / 输出", + "recentRequestsWhen": "时间", "downloadDmg": "下载 DMG (macOS)", "downloadDmgDescription": "OmniRoute 桌面应用程序的新版本可用。请下载并安装 macOS DMG 安装程序以进行更新(当前版本:v{version})。", "downloadExe": "下载 EXE(Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "发布说明", "readMore": "阅读更多", "noAuthLabel": "无认证", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "准备开始路由", + "readinessTitle": "发送你的第一个请求", + "readinessSubtitle": "只需四个小步骤。OmniRoute 会在你操作时检查就绪状态。", + "readinessStep1": "连接提供者", + "readinessStep2": "配置端点身份验证", + "readinessStep3": "复制端点", + "readinessStep4": "发送测试请求", + "readinessContinue": "继续设置", + "readinessDismiss": "暂时忽略" }, "analytics": { "title": "分析", @@ -2258,9 +2258,9 @@ "fullAccess": "完全访问", "keyManagement": "API 密钥管理", "keyManagementDesc": "创建和管理用于访问端点的 API 密钥", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "你的应用通过 API 密钥向 OmniRoute 发送请求", + "requestFlowYourApp": "你的应用", + "requestFlowApiKey": "API 密钥", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "密钥总数", "restricted": "受限", @@ -2303,7 +2303,7 @@ "savePermissions": "保存权限", "endpointRestrictions": "允许的端点", "allEndpointsAllowed": "此密钥可以访问所有 API 端点。", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", + "endpointsRestricted": "仅限用于 {count} 个端点。", "autoResolve": "自动解析", "autoResolveDesc": "为这个 API 密钥自动将有歧义的模型名解析到原生提供者。", "streamDefaultMode": "流默认兼容性", @@ -2382,8 +2382,8 @@ "allowedCombos": "允许的组合", "allCombosAllowed": "此密钥可以使用任何组合。", "restrictedComboCount": "限制为 {count, plural, one {# 个组合} other {# 个组合}}。", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "preservedComboRules": "有 {count, plural, one {# 个已存储条目} other {# 个已存储条目}}不在此组合列表中(例如路由规则),将按已保存的内容保留。", + "preservedComboRuleHint": "按已存储的内容保留。此条目不是上方列表中的组合,因此只能通过 API 进行更改。", "apiManagerCustomRateLimits": "自定义费率限制", "apiManagerCustomRateLimitsDesc": "覆盖全局默认限制。留空以使用默认值。", "apiManagerRateLimitRequestsPlaceholder": "要求", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "允许此密钥在路由期间忽略上游服务商/账户的截止策略。API 密钥的美元配额仍然适用。", "quotaPill": "配额", "quotaModeOnly": "仅配额", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "专属租约", + "exclusiveLeaseNoticeTitle": "专属租约", + "exclusiveLeaseNoticeDesc": "此 API 密钥拥有用于专用连接路由的专属租约权限。", + "allConnections": "所有连接", + "onlySelectedConnections": "仅选定的连接", + "selectAtLeastOneConnection": "请至少选择一个连接,或选择“所有连接”。", + "allConnectionsDesc": "此密钥可以使用任何活跃连接。", + "restrictedToConnections": "仅限用于 {count, plural, one {# 个连接} other {# 个连接}}。" }, "auditLog": { "title": "审核日志", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter 自主编程智能体 CLI", "omp": "Oh My Pi 终端编程智能体", "letta": "具备持久记忆和工具使用能力的 Letta CLI 智能体", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — 支持 OpenAI 兼容提供者的自我改进型 RLM 编码工具框架", "warp": "支持自定义提供者的 Warp AI 终端", "agent-deck": "Agent Deck 多智能体编排器", "5dive": "5dive — 自托管的编码智能体集群;一个认证配置即可将全部指向 OmniRoute" @@ -3268,7 +3268,7 @@ "cacheOptimizedDesc": "将每个可复用提示前缀一致地路由到同一提供者账户", "resetAware": "复位感知RR", "resetAwareDesc": "平衡剩余配额与 5 小时和每周重置,然后对相似分数进行循环赛", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "配额加权", "quotaWeightedDesc": "踢掉没额度的账号,再按剩余额度除以在途请求数加权抽取。已有对话钉在原账号,空了才换。", "strictRandom": "严格随机", "strictRandomDesc": "洗牌池模式:每个模型使用一次后再重新洗牌", @@ -3664,10 +3664,10 @@ "wizardStep3Desc": "选择请求在模型之间的分发方式 — 提供 13 种策略", "wizardStep4Title": "审查并保存", "wizardStep4Desc": "审查您的配置并激活组合", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", + "usageGuideInvokeTitle": "如何调用此组合", + "usageGuideInvokeDesc": "将组合的确切名称作为模型发送,例如 model: \"my-combo\"(或 combo/my-combo)。", + "usageGuideInvokeAutoNote": "auto 和 auto/* 是一个独立的零配置路由器,不会使用你的组合(除非某个组合确实命名为 auto)。", + "usageGuideInvokeOpenrouterNote": "openrouter/auto 是真正的 OpenRouter 付费产品(Auto Best Available),并非 OmniRoute 别名——可通过“设置 → 路由 → 隐藏付费模型”将其排除。", "emailVisibilityStateOn": "开启", "emailVisibilityStateOff": "关闭", "reorderHandle": "拖拽排序", @@ -3805,8 +3805,8 @@ "rangeAll": "全部时间", "spend30d": "30 天支出", "activeModels": "活跃 Model", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", + "flatRateEstimateNotice": "包含固定费率订阅的 Token 价格估算,而非实际计费成本。", + "flatRateEstimateForecast": "预测包含固定费率估算。", "selectedWindow": "已选窗口", "activeProviders": "活跃 Provider", "overviewTitle": "概览", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API 端点", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "可将 OpenAI 兼容端点与大多数 SDK 和工具配合使用。", + "testEndpoint": "测试端点 →", + "advancedProtocols": "高级协议", "available": "可用端点", "cloudProxy": "云代理", "disableConfirm": "确定要禁用云代理吗?", @@ -4176,7 +4176,7 @@ "obsidianDisable": "禁用", "obsidianConfigureMobile": "配置 Obsidian 移动端", "obsidianMobileInstructions": "在 Obsidian 移动端:设置 → 同步 → WebDAV → 输入以下内容:", - "obsidianWebdavUrl": "WebDAV URL", + "obsidianWebdavUrl": "WebDAV 网址", "obsidianUsername": "用户名", "obsidianPassword": "密码", "obsidianTailscaleHint": "如果从移动设备连接,请使用 Tailscale IP 而非 localhost。两台设备必须在同一 Tailscale 网络中。", @@ -4568,7 +4568,7 @@ "skillsTab": "技能", "executionsTab": "执行记录", "selectSkillToInspect": "在左侧选择一个技能来查看。", - "schemaTab": "Schema", + "schemaTab": "架构", "handlerTab": "处理器", "inputSchema": "输入 Schema", "outputSchema": "输出 Schema", @@ -4665,13 +4665,13 @@ "retry": "重试", "allOperational": "所有系统均可运行", "issuesDetected": "检测到系统问题", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute 已就绪", + "healthVerdictActionRequired": "需要采取操作以恢复完整运行", + "healthVerdictCoolingDown": "近期更改后正在冷却", + "healthSubtitle": "系统健康检查", + "advancedDiagnosticsTitle": "高级诊断", + "hide": "隐藏", + "show": "显示", "updatedAt": "更新了 {time}", "latency": "延迟", "latencyP50": "p50", @@ -4987,9 +4987,9 @@ "multiProvider": "多提供者", "usageTracking": "使用情况追踪", "securityDesc": "设置密码以保护您的仪表板,或暂时跳过。", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ 如果未设置密码,你将无法在设置过程中添加提供者。设置密码后,你可以稍后从仪表板添加提供者。", "providerDesc": "连接你的第一个 AI 提供者。你之后还可以继续添加。", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "你需要先设置密码才能添加提供者。请返回安全设置步骤并设置密码,或稍后从仪表板添加提供者。", "apiKeyRequired": "API 密钥(必填)", "customUrlOptional": "自定义 URL(可选)", "testDesc": "让我们验证您的提供者连接是否有效。", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "正在导入…", "importFromFileImport": "导入 {count} 个服务商", "importFromFileResult": "已导入 {success} 个服务商({failed} 个失败)", + "importFromFileDownloadTemplate": "下载 CSV 模板", + "importFromFileMoreErrors": "另有 +{count} 项", + "importFromFileSchemaHint": "CSV 列按位置排列:provider、name、apiKey、baseUrl(可选)、priority(可选)。provider 列必须是现有的托管提供者 ID,或已注册的 OpenAI/Anthropic 兼容节点 ID——此导入操作不会创建新的端点节点。", "adaptaTutorial": { "title": "如何连接 Adapta Web", "introPrefix": "Adapta 通过 Clerk 进行身份验证。该令牌", @@ -5133,8 +5136,8 @@ "reorderByAvailabilityError": "按可用性重新排序连接失败", "distributeProxies": "分配代理", "distributing": "分配中...", - "selectedCount": "{count, plural, one {# selected} other {# selected}}", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "selectedCount": "{count, plural, one {已选择 # 项} other {已选择 # 项}}", + "accountsCount": "{count, plural, one {# 个账户} other {# 个账户}}", "testAllOAuth": "测试所有 OAuth 连接", "testAllFree": "测试所有免费连接", "testAllApiKey": "测试所有 API 密钥连接", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "此提供者已弃用", "riskNotice": { "title": "继续之前", - "detailsTitle": "Usage caveats", + "detailsTitle": "使用注意事项", "tooltip": "该提供者有使用注意事项 —— 点击查看详情", "oauth": "此提供者使用你官方产品的会话 / OAuth,这并未被授权用于代理或路由用途。 不建议进行高强度的自主代理使用(OpenCloud 风格、长链路多步流程、大批量请求)—— 上游可能因此限制甚至封禁账号。 使用风险自负。", "webCookie": "此提供者通过你的网页会话 Cookie 进行鉴权。上游服务可能随时让会话失效,届时你需要重新登录。不建议用于长时间无人值守的操作。 使用风险自负。", @@ -5188,9 +5191,9 @@ "cancel": "取消" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "已标记 {count} 个连接 — 最近最多有 {maxFailures} 次失败{lastFailureSuffix}。点击查看连接健康状况。", + "lastFailureSuffix": "(上次失败时间:{time})", + "ariaLabel": "查看连接健康状况详情,{count} 个警告" }, "disabled": "已禁用", "enableProvider": "启用提供者", @@ -5534,18 +5537,18 @@ "interceptFetchHint": "将原生的 web_fetch 工具调用重写为 OmniRoute 的 /v1/web/fetch。", "interceptionLoadError": "加载拦截设置失败:{error}", "interceptionSaveError": "保存拦截设置失败:{error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", + "ccAliasSectionTitle": "在 Claude Code 中公开(claude/…)", + "ccAliasSectionHint": "使用 claude/<provider>/<model> 镜像 ID 公布此提供者的模型,以便 Claude Code 的网关模型发现功能列出这些模型。默认关闭 — 启用后,所有客户端的目录条目数量将翻倍。", + "ccAliasProviderLevelLabel": "提供者默认设置", + "ccAliasModelOverridesLabel": "按模型覆盖", + "ccAliasModelOverrideAriaLabel": "覆盖 {modelId} 的设置", + "ccAliasStateInherit": "继承", + "ccAliasStateOn": "开启", + "ccAliasStateOff": "关闭", + "ccAliasAddModelPlaceholder": "模型 ID(例如 gpt-4o)", + "ccAliasAddModelButton": "添加覆盖设置", + "ccAliasLoadError": "无法加载发现别名设置:{error}", + "ccAliasSaveError": "无法保存发现别名设置:{error}", "compatUpstreamHeadersLabel": "上游额外请求头", "compatUpstreamHeadersHint": "与修改厂商连接/API 配置同属高权限能力,仅可信管理员应使用。这些头会在 OmniRoute 按厂商 API Key 自动加好鉴权头之后再合并。若「名称」与系统已加的头相同(例如都叫 Authorization),则以你填的值为准,会整段替换自动那条(含 Bearer 令牌),上游请求里不再使用面板里保存的密钥来生成 Authorization。填错可能导致 401,请谨慎。每个请求头单独一行;部分网关需要额外 Authentication 等可在此加。鼠标移入或聚焦「值」可暂时看明文。点空白处、关闭本面板或切走焦点即保存。", "compatUpstreamHeaderName": "请求头名称", @@ -5904,8 +5907,8 @@ "rateLimitOverridesSection": "速率限制覆盖", "rateLimitOverridesMaxConcurrentHint": "此连接的最大并发请求覆盖。覆盖账户级别的上限。", "rateLimitOverridesMaxConcurrentLabel": "最大并发(速率限制)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "请求在失败前等待速率限制可用名额的最长时间(毫秒)。仅对此连接覆盖全局的弹性设置。", + "rateLimitOverridesMaxWaitMsLabel": "最长队列等待时间(毫秒)", "rateLimitOverridesMinTimeHint": "请求之间的最小时间(毫秒)。覆盖默认速率限制器延迟。", "rateLimitOverridesMinTimeLabel": "最小间隔(毫秒)", "rateLimitOverridesRpdHint": "此连接的每天最大请求数。覆盖提供者默认值。", @@ -5978,7 +5981,7 @@ "zedImportHint": "从 Zed 配置中导入 Provider。", "zedImportNetworkError": "Zed 导入网络错误", "zedImportNone": "没有可从 Zed 导入的内容", - "zedImportSuccess": "Imported {credentials} credential(s) from Zed for {providers} provider(s)", + "zedImportSuccess": "已从 Zed 导入 {credentials} 个凭据,适用于 {providers} 个提供者", "zedImporting": "正在从Zed导入", "zedNoCredentials": "在钥匙串中未找到 Zed 凭据", "zedUnsupportedCredentials": "找到 {count} 个钥匙串凭据,但没有与支持的提供者匹配的凭据", @@ -6175,7 +6178,7 @@ "freeaiapikey": "适用于 40+ 种模型的折扣 API 代理,包括 GPT-5、Claude Opus 4.6、Claude Sonnet 4.6、Qwen 3.5。在 https://freeaiapikey.com/dashboard 获取您的 API 密钥。Base URL: https://freeaiapikey.com/v1.", "freemodel-dev": "在 https://freemodel.dev 获取 $300 免费 API 额度 — 无需支付信息。兼容 OpenAI 的端点。提供 GPT-5.4 和 GPT-5.5 模型。", "friendliai": "无服务器推理免费层 — 无需信用卡", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "通过 Google AI Studio 提供免费层级;不再公布各模型的配额(请在 AI Studio 中查看配额页面)— 无需信用卡。", "gigachat": "使用 API 密钥连接 GigaChat (Sber)。", "gitlab": "用于公共 Code Suggestions API 的 GitLab 个人访问令牌。不使用 gitlab.com 时请配置自托管 Base URL。", "gitlawb-gmi": "从 Gitlawb Opengateway 控制面板获取您的 API 密钥。", @@ -6184,7 +6187,7 @@ "glm-cn": "使用 API 密钥连接 GLM Coding (China)。", "glmt": "预设 GLM 配置文件,具有更高的 Token 预算、启用思考功能以及更长的超时时间。", "getgoapi": "使用 API 密钥连接 GoAPI。", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "免费方案:各模型均有上限(每个聊天模型每天 200K 个令牌;有关 RPM/RPD,请参阅 console.groq.com/docs/rate-limits)— 未绑定付款方式。", "haiper": "在 haiper.ai/haiper-api 获取 API 密钥", "heroku": "使用 API 密钥连接 Heroku AI。", "hcnsec": "在 api.hcnsec.cn 获取 API 密钥", @@ -6252,7 +6255,7 @@ "requesty": "在 https://app.requesty.ai 创建 API 密钥,然后将其作为 Bearer 令牌粘贴在此处。兼容 OpenAI 的端点位于 https://router.requesty.ai/v1,并提供实时的 /v1/models 目录。", "runwayml": "Runway 视频生成基于任务。OmniRoute 提交文生视频或图生视频作业,轮询 /v1/tasks/[id],并将完成的视频输出规范化为类似 OpenAI 的 /v1/videos/generations 响应。", "sambanova": "注册即送 $5 免费额度(30 天有效期),无需信用卡", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "在 https://seekai.cc 创建 API 密钥,然后将其作为 Bearer 令牌粘贴到此处。兼容 OpenAI 的基础 URL:https://seekai.cc/v1。", "sap": "模型发现使用 AI_API_URL 上的 /v2/lm/scenarios/foundation-models/models。Chat 请求使用 deploymentUrl/chat/completions 并需要 AI-Resource-Group。", "sarvam": "Sarvam AI 在 /v1 上兼容 OpenAI。OmniRoute 探测 /v1/models 并将聊天流量路由到 /v1/chat/completions。模型针对印度语言进行了优化。", "scaleway": "新账户可获 1M 免费 Token — 符合 EU/GDPR 规范(巴黎),Qwen3 235B & Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "使用现有的 OAuth 流程连接 Claude Code。", "cline": "使用现有的 OAuth 流程连接 Cline。", "cursor": "使用现有的 OAuth 流程连接 Cursor IDE。", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "使用 cursor.com/dashboard/api 中的用户 API 密钥(crsr_...)连接 Cursor;无需 IDE 会话。", "github": "使用现有的 OAuth 流程连接 GitHub Copilot。", "gitlab-duo": "具有 ai_features + read_user 作用域的 OAuth 应用程序。在此 OmniRoute 实例上配置 GITLAB_DUO_OAUTH_CLIENT_ID 以及可选的 GITLAB_DUO_OAUTH_CLIENT_SECRET。", "kilocode": "使用现有的 OAuth 流程连接 Kilo Code。", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "从提供者自己的域复制所需的凭据。对于 cookie,仅复制 Cookie 标头值并省略 Cookie:。", "webSessionGuideStep3Manual": "手动路径:打开浏览器开发者工具 (F12 → 网络),刷新页面,打开一个经过身份验证的请求,然后从请求头中复制 Cookie 头的值 — 省略 Cookie: 前缀。", "webSessionGuideStep4": "将其粘贴到此处并检查连接。如果它停止工作,请重新登录并将其替换为新值。", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "导入 .har 文件", + "harImportButtonBusy": "正在导入…", + "harImportButtonHint": "发送至少一条聊天消息后,从 DevTools 的 Network 标签页导出。", + "harImportStatusValid": "已导入 — 有效期约为 {minutes} 分钟。", + "harImportStatusExpiringSoon": "已导入 — 仅剩约 {minutes} 分钟有效期。", + "harImportStatusExpired": "已导入,但此令牌已于 {minutes} 分钟前过期 — 请导出新的 HAR。", + "harImportStatusUnknownExpiry": "已导入,但无法读取其到期时间。", + "harImportErrorNotJson": "该文件不是有效的 JSON — 它确实是导出的 .har 文件吗?", + "harImportErrorNoEntries": "此 HAR 中没有记录任何网络条目。", + "harImportErrorNoChathubUrl": "在此 HAR 中未找到 Copilot 聊天连接。请先在 m365.cloud.microsoft 中发送至少一条聊天消息,然后再导出。", + "harImportErrorUnparsableUrl": "已找到聊天连接,但无法读取其 URL。", + "harImportErrorMissingFields": "已找到聊天连接,但其中缺少令牌。", + "harImportErrorReadFailed": "无法读取该文件。", + "harImportErrorUnknown": "无法从该 HAR 文件中提取凭据。", "webSessionSecurityHint": "将其视为密码:它可以访问您登录的网络帐户,直到其过期或被撤销。", "webNoAuthGuideTitle": "无需任何凭证", "webNoAuthGuideBody": "{provider} 不需要 API 密钥或 cookie。保存连接以使用其免费 Web 端点。", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "命令代码认证已过期", "commandCodeConnected": "命令代码已连接", "commandCodeConnectionAdded": "命令代码连接已添加", + "clearConnectionCooldown": "清除冷却状态", + "clearConnectionCooldownInProgress": "正在清除…", + "clearConnectionCooldownTitle": "立即清除冷却状态——当上游配额已刷新时使用", "commandCodeLinkExpired": "命令代码链接已过期", "commandCodeOpeningStudio": "正在打开 Command Code Studio…", "commandCodePopupBlocked": "弹出窗口被阻止。请允许弹出窗口,然后再次尝试 Command Code Connect。", "commandCodeStartFailed": "无法启动命令代码 auth", "connectionDeleted": "连接已删除", "connectionFallback": "连接", + "connectionCooldownCleared": "冷却状态已清除——连接已重新加入路由", "coolingConnectionsDescription": "这些连接在上次请求后正在冷却。计时器到期前 OmniRoute 会跳过它们 — 无需手动禁用。", "coolingConnectionsTitle": "当前冷却中 ({count})", + "failedClearConnectionCooldown": "清除冷却状态失败", "failedDeleteAlias": "删除别名失败", "failedDeleteConnection": "无法删除连接", "failedDistributeProxies": "无法分配代理。", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "已保存的模型端点设置", "searchByModelAria": "按型号搜索", "selectSupportedEndpoint": "请选择至少一个支持的端点", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "设置", @@ -6694,12 +6697,12 @@ "autoDisableDescription": "若提供者连接返回特定的永久封禁信号(如 HTTP 403\"请验证您的账户\"),则将其永久标记为停用。这会将其从组合轮换中移除。", "autoDisableThreshold": "封禁阈值", "autoDisableThresholdDesc": "触发永久停用所需的连续封禁信号次数。", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedScope": "自动停用应用于", + "autoDisableBannedScopeDesc": "如果 OmniRoute 在被封禁后持续重试,登录席位(付费订阅和免费账户)可能会被上游锁定。付费预付费 API 密钥没有此风险——请将其保留在池中,以便优先填充策略使用下一个密钥。", + "autoDisableBannedScopeAll": "所有连接", + "autoDisableBannedScopeAllDesc": "停用所有返回永久封禁信号的连接,包括预付费 API 密钥。", + "autoDisableBannedScopeSubscription": "仅登录 / 订阅账户", + "autoDisableBannedScopeSubscriptionDesc": "停用 OAuth、Cookie、会话和网页登录席位(付费或免费)。预付费 API 密钥保持启用,以便路由进行故障转移。", "customBannedSignals": "封禁关键词", "customBannedSignalsDesc": "触发永久封号检测的附加关键词。内置关键词始终生效。", "customBannedSignalsPlaceholder": "例如 api key revoked", @@ -6755,18 +6758,18 @@ "sidebarVisibility": "隐藏侧边栏项目", "sidebarVisibilityDesc": "可以隐藏任意侧边栏导航项,以减少视觉负担,但不会禁用任何功能", "sidebarVisibilityHint": "当某个侧边栏分组中的所有项目都被隐藏时,该分组会自动隐藏", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "全部", + "presetAllDesc": "显示所有内容", + "presetEssentials": "基础", + "presetEssentialsDesc": "新手路径 - 高级工具仍可通过搜索找到", + "presetMinimal": "精简", + "presetMinimalDesc": "仅核心页面", + "presetDeveloper": "开发者", + "presetDeveloperDesc": "开发与代理工具", + "presetAdmin": "管理员", + "presetAdminDesc": "监控与审计", + "settingsSidebarTitle": "侧边栏自定义", + "settingsSidebarDesc": "选择要显示的侧边栏项目。“基础”模式下仍可通过搜索找到高级工具。", "hideHealthLogs": "隐藏健康检查日志", "hideHealthLogsDesc": "开启后,将抑制服务器控制台中的 [HealthCheck] 消息", "themeAccent": "主题颜色", @@ -7067,7 +7070,7 @@ "costOptDesc": "优先选择成本最低的可用账户", "resetAware": "复位感知RR", "resetAwareDesc": "优先选择剩余配额正常且重置时间较近的账户", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "按配额加权", "quotaWeightedDesc": "踢掉没额度的账号,再按剩余额度除以在途请求数加权抽取。已有对话钉在原账号,空了才换。", "strictRandom": "严格随机", "strictRandomDesc": "洗牌池模式:每个账户使用一次后再重新洗牌", @@ -7089,14 +7092,14 @@ "providerAccountRoutingDesc": "覆盖此提供者的全局账户策略(与 9router 保持一致)。", "providerRoutingStrategy": "账户策略", "providerRoutingInheritGlobal": "继承全局默认值", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "配额预检阈值", + "quotaPreflightSubtitle": "在将请求发送到上游之前,跳过配额已耗尽的账户", + "quotaPreflightEnable": "启用配额预检", + "quotaPreflightEnableDesc": "每次请求前,检查账户的剩余配额(5 小时 / 每周 / 每月窗口)。配额等于或低于阈值的账户将被跳过,且不会调用上游。在“提供者配额”页面设置的各窗口阈值始终优先于此处的默认值。", + "quotaPreflightCutoff": "全局截止阈值(最低剩余百分比)", + "quotaPreflightCutoffDesc": "当账户的剩余额度降至此百分比或更低时,停止使用该账户;适用于所有未单独设置截止阈值的窗口。此值与 Provider Quota 页面上的剩余百分比进度条一致。", + "quotaPreflightWindowsHint": "已设置窗口级或提供者级截止阈值的窗口(在 Provider Quota 页面的 Cutoff 弹窗中设置)不受此默认值影响。", + "quotaPreflightLoadFailed": "无法加载额度预检设置。", "modelAliases": "模型别名", "modelAliasesTitle": "模型别名", "modelAliasesDesc": "使用精确匹配或通配符模式重映射模型名称。", @@ -7329,7 +7332,7 @@ "configured": "已配置", "none": "无", "modelOverrideValuePlaceholder": "数字值", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "使用英文逗号分隔,例如 low, medium, high", "addKeyValue": "添加键值", "noModelOverrides": "该模型尚未配置覆盖。", "modelOverrideLoadFailed": "加载模型覆盖失败", @@ -7605,8 +7608,8 @@ "resilienceRequestsPerMinute": "每分钟请求数", "resilienceMinTimeBetweenRequests": "请求之间的最小时间", "resilienceConcurrentRequests": "并发请求数", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceConnectionScopeConcurrentRequests": "每个连接/额度范围的并发请求数", + "resilienceGlobalConcurrentRequests": "全局上游并发请求数(0 = 禁用)", "resilienceMaxQueueWaitTime": "最大队列等待时间", "resilienceBaseCooldown": "基础冷却时间", "resilienceUseUpstreamRetryHints": "使用上游重试提示", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "旧版 JSON 导入成功!", "jsonImportFailed": "导入 JSON 失败", "jsonImportError": "导入 JSON 时出错", + "jsonImportAuthRequired": "导入旧版 JSON 配置需要身份验证。请先登录或完成设置。", + "databaseSettingsAuthRequiredTitle": "需要身份验证", + "databaseSettingsAuthRequiredBody": "数据库设置和 JSON 导入仅对已通过身份验证的管理员开放。请登录或完成设置以查看和编辑这些内容。", + "databaseSettingsAuthRequiredCta": "登录", "storagePurgeData": "清除数据", "storagePurgeDataDesc": "立即删除所有记录,不进行保留检查。请谨慎使用。", "storageRetentionCleanup": "保留设置", @@ -7930,7 +7937,15 @@ "memorySkillsActiveSkillsProvider": "主动技能供应商", "cliproxyapiFallback": "CLIProxyAPI 后备", "cliproxyapiEnableFallback": "启用 CLIProxyAPI 回退", - "cliproxyapiUrl": "CLIProxyAPI URL", + "cliproxyapiUrl": "CLIProxyAPI 网址", + "headroomProxyTitle": "Headroom 代理", + "headroomProxyDesc": "可选 Headroom 令牌节省代理的 URL。留空时使用 HEADROOM_URL 或 http://localhost:8787。", + "headroomProxyUrl": "Headroom 网址", + "headroomProxyUrlHint": "可以从此页面启动回环 URL。外部 URL 仅会被探测。", + "headroomProxySave": "保存", + "headroomProxyStart": "启动", + "headroomProxyStop": "停止", + "headroomProxyExternalHint": "此 URL 不是回环地址,因此 OmniRoute 不会启动本地 CLI。", "cliproxyapiStatus": "CLIProxyAPI 状态", "cliproxyapiNotDetected": "未检测到", "cliproxyapiImportAuthTitle": "从 CLIProxyAPI 导入账户", @@ -8364,15 +8379,7 @@ "cliproxyapiHealth": "健康", "cliproxyapiPort": "端口", "qdrantHost": "主机", - "qdrantCollection": "集合", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "集合" }, "contextRtk": { "title": "命令输出过滤引擎", @@ -8661,6 +8668,8 @@ "contextEditingNote": "目前仅适用于 Claude (Anthropic)。这是一种委托模式:提供者在服务端清除旧的工具使用块 — 我们不会重写消息。这不会影响其他提供者。", "namedCombos": "命名组合", "namedCombosDescription": "保存不同的流水线并将其分配给特定的路由组合。", + "activeProfileMasterSwitchOffWarning": "在主“提示词压缩”开关开启之前,下方的活动配置文件不会运行。", + "activeProfileMasterSwitchOffCta": "在“设置”中开启", "comboNamePlaceholder": "组合名称", "descriptionPlaceholder": "描述", "nameRequired": "保存前请输入组合名称。", @@ -8674,9 +8683,7 @@ "languagePacksList": "语言包:{packs}", "dragToReorder": "拖动以重新排序步骤", "engine": "引擎", - "intensity": "强度", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "强度" }, "compressionStudio": { "noRun": "没有可用的压缩运行记录。", @@ -8705,7 +8712,7 @@ "run": "运行", "laneRejected": "已拒绝: {reason}", "error": "错误", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "组合管线预览失败:{reason}", "combinedFlow": "组合流程", "eachLayer": "单独各层", "diff": "差异", @@ -8714,7 +8721,7 @@ "input": "输入", "output": "输出", "tokenCount": "{count, number} 个 token", - "tokenShort": "tok", + "tokenShort": "词元", "provider": "提供者", "judgeModel": "裁判模型", "judgeModelPlaceholder": "例如 claude-haiku", @@ -8780,27 +8787,27 @@ }, "enableTitle": "启用引擎", "enableDescription": "在堆栈中最后运行(在 RTK/Caveman 清理文本、OmniGlyph 将剩余部分转换为图像之后),也可以通过 omniglyph 模式独立运行。此功能为预览版,在端到端验证完成前默认保持关闭。", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "压缩配置文件", + "profileDescription": "配置文件是上限,而不是下限:更严格的配置文件无法通过单个步骤的覆盖设置重新放宽。基于此代码库的测量结果:使用“编码安全”或“均衡”时,尚未积累历史记录的会话不会压缩任何内容,因为两者都会提高最小字符数阈值,并将系统提示词、工具架构和工具结果保持为原生形式。", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "激进(默认)", + "description": "已发布的回执所衡量的策略。将系统提示词、工具文档和密集历史记录转为图像。" }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "均衡", + "description": "将实时状态保持为原生形式并保护最近 8 轮对话;仅折叠更早的已结束历史记录。" }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "编码安全", + "description": "将权限指令、工具架构和实时工具输出保持为原生形式,并保护最近 12 轮对话。在会话积累历史记录之前不会压缩任何内容。" }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "直通", + "description": "无需转换即可路由。引擎会被跳过,请求将原样转发。" } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "选择 OmniGlyph 压缩配置文件", "saved": "已保存。", "saveFailed": "无法保存。", "enableAria": "启用 OmniGlyph 引擎", @@ -8885,7 +8892,7 @@ "fallbackRouting": "回退路由", "fallbackRoutingDescription": "通过 CLIProxyAPI 重试失败的服务商请求", "enableFallback": "启用回退", - "cliproxyUrl": "CLIProxyAPI URL", + "cliproxyUrl": "CLIProxyAPI 网址", "fallbackCodes": "回退状态码(逗号分隔)", "invalidUrl": "无效的 URL — 必须以 http:// 或 https:// 开头", "saved": "已保存", @@ -10215,7 +10222,7 @@ "mcpToolsMemoryDesc": "搜索、添加和清除持久化对话记忆条目。", "mcpToolsSkillsTitle": "技能", "mcpToolsSkillsDesc": "列出、启用、执行和监控自定义技能执行。", - "featureAutoComboTitle": "Auto-Combo", + "featureAutoComboTitle": "自动组合", "featureAutoComboText": "根据你连接的提供者、使用模式和模型能力,自动创建优化组合。", "featureSearchTitle": "网页搜索", "featureSearchText": "集成 5 个提供者的网页搜索(Serper、Brave、Exa、Tavily、Perplexity),并包含分析和成本跟踪。", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "连接 Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "使用 Cursor 登录", + "tabImport": "导入令牌", + "loginDescription": "打开 Cursor 的浏览器登录页面。支持在 Docker 中使用——在宿主机浏览器中批准,然后返回此处。", + "loginWithCursor": "使用 Cursor 登录", + "startingLogin": "正在启动…", + "waitingApproval": "正在等待批准 Cursor 登录…", + "openUrlHint": "如果浏览器未打开:", + "openLoginLink": "打开登录页面", + "cancelLogin": "取消登录", "autoDetecting": "自动检测令牌中...", "readingFromCursor": "正在从 Cursor IDE 或 cursor-agent 读取", "tokensAutoDetected": "已成功从 Cursor IDE 自动检测到令牌!", "cursorNotDetected": "未检测到 Cursor IDE。请手动粘贴您的令牌。", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "正在 Docker 中运行?建议使用 Cursor 登录。IDE 自动导入和 cursor-agent 通常在容器内不可用。请参阅 docs/providers/CURSOR-DOCKER.md。", "accessToken": "访问令牌", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "刷新令牌", + "refreshTokenPlaceholder": "可选——启用令牌自动刷新", "required": "*", "accessTokenPlaceholder": "访问令牌将自动填充...", "machineId": "机器 ID", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "自动检测令牌失败", "errorEnterToken": "请输入访问令牌", "errorImportFailed": "导入失败", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "无法启动 Cursor 登录", + "errorLoginPoll": "Cursor 登录失败", + "errorLoginTimeout": "Cursor 登录超时——请重试" }, "pricingModal": { "title": "定价配置", @@ -10961,9 +10968,9 @@ "strategyLatency": "延迟优化", "poolMembersLabel": "池成员 ({count})", "poolNoMembers": "此池中尚无代理。", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "{exits, plural, one {# 个出口} other {# 个出口}},由 {connections, plural, one {# 个连接} other {# 个连接}}使用 · 单个出口最多 {max} 个连接 · 过去 {hours} 小时", + "poolEgressObservationEmpty": "过去 {hours} 小时内未观察到流量", + "poolEgressObservationHint": "根据此时间窗口内的代理日志统计:观察到此池成员使用的不同出口 IP,以及使用这些 IP 的 OmniRoute 连接。“单个出口”是指整个时间窗口内,而不是同一时刻。每个 IP 的 429 锁定仅会暂停同一提供者系列的连接。", "poolRemove": "移除", "poolRemoveFailed": "从池中移除代理失败", "poolAddLabel": "添加代理", @@ -11310,7 +11317,7 @@ "tps": "TPS", "duration": "时长", "time": "时间", - "conversation": "Conversation", + "conversation": "对话", "ttft": "TTFT" }, "loadingLogs": "正在加载日志...", @@ -11417,8 +11424,8 @@ "correlationId": "关联 ID", "correlationIdValue": "关联 ID: {id}", "detailedPayloadInfo": "如果您想要新请求的四阶段客户端/提供者负载视图,请先启用详细日志记录。", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "全部复制", + "copiedAll": "已全部复制" } }, "proxyLogger": { @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP 代理", "phrase": "OmniRoute 作为执行后端(反向流)生成的 CLI", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "大多数用户可以忽略此项——仅在集成需要时使用。", "flow": "客户端 → OmniRoute → 生成 CLI (stdio/ACP) → 响应", "seeOther": "查看 →" } @@ -12370,8 +12377,8 @@ "description": "触发系统备份、从备份文件恢复,并管理 SQLite 数据库生命周期。支持导出、导入和增量快照策略。" }, "omni-webhooks": { - "name": "Webhooks", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "name": "Webhook", + "description": "注册、列出、测试和移除 Webhook 端点。配置事件订阅(request.completed、request.failed、quota.exceeded 等)并管理递送重试。" }, "omni-mcp": { "name": "MCP 服务器", @@ -12589,14 +12596,14 @@ "typeApikey": "API 密钥", "sortTypeFirst": "最简优先", "sortTypeFirstHelp": "按注册难度分组(免注册 → OAuth 登录 → API 密钥),并在每个组内保持质量排序", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "最可靠的优先", + "sortByReliabilityHelp": "根据所选时间范围内调用成功率对提供者进行排序。调用次数过少、无法确定成功率的提供者将保留其评分顺序,并排在有统计数据的提供者之后。", "typeLegend": "免注册 = 零设置 · OAuth 登录 = 使用您自己的账户登录 · API 密钥 = 自备密钥或使用该服务商的免费额度", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "可靠性", + "colReliabilityHelp": "过去 24 小时内此提供者实际响应的调用占比。破折号表示其处理的流量过少,无法确定比率。", + "reliabilitySample": "过去 {hours} 小时内,{requests} 次调用中有 {successes} 次成功", + "reliabilityTooFew": "过去 {hours} 小时内仅有 {requests} 次调用——调用次数太少,无法给出成功率", + "reliabilityNoTraffic": "过去 24 小时内未记录任何调用" }, "discovery": { "title": "服务商探索", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar 支持者", + "description": "已验证实时 OmniRoute Radar 支持者源", + "criteria": "验证经过签名的实时 Radar 支持者源。" }, "first-token": { "name": "首个 Token", @@ -12948,8 +12955,8 @@ "description": "允许每个兼容性节点有多个连接。" }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "禁用上下文窗口检查", + "description": "对于直接的单模型请求,跳过 OmniRoute 的本地上下文窗口和最大输入令牌数检查。上游提供者仍会强制执行其实际限制。提示词压缩和输出令牌数上限仍然有效。" }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "在将 Responses API 透传流转发给客户端之前,从中移除内部注释阶段的输出项。禁用此标志以接收原始上游注释。" @@ -12985,7 +12992,7 @@ "description": "允许流恢复在字节已到达客户端后重新请求响应并进行拼接。" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "确保流中途续传的工具调用安全:发送工具调用后(无论仍在进行中还是已完成),绝不恢复被中断的流;若一次续传为空,则停止,而不是耗尽全部重试次数。" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "当流在发出任何有用帧之前关闭,且同一连接上的有限重试已用尽时,故障转移一次到同级连接。若没有可用的同级连接,则返回原始的 early-EOF 错误。关闭:重试后 early-EOF 仍为终止结果。" @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "在技能沙箱中启用网络访问。" }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "服务器托管的工具循环", + "description": "继续执行非流式的服务器托管工具调用,直到模型返回客户端可用的响应。" + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After 来源", + "description": "对于聚合的 429/503 不可用响应,如果无法确定具体的未来重试时间,则省略 Retry-After,而不是发送人为设定的 1 秒;添加 error.retry_after_provenance,并读取组合耗尽路径中的文本重试提示。" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "受保护优先级基础设施停止返回 502", + "description": "当仅配额回退的优先级目标因可证实并非配额的原因(提供者断路器处于打开状态或预测性延迟跳过)而停止组合时,返回 502 而不是 503。" } } }, @@ -13108,7 +13119,7 @@ "comboHealth": "组合健康状况", "callLogs": "调用日志", "costs": "费用", - "playground": "Playground", + "playground": "试验场", "nestedCombo": "嵌套组合", "modelTarget": "模型目标", "weight": "{value}% 权重", @@ -13171,7 +13182,7 @@ "segmentHint": "每个分段 = 一个免费池 · 池去重,真实统计(无虚高的速率限制上限)。", "boost": "一次性充值 $10 OpenRouter 即可每月多解锁约 ~{tokens}(50 → 1000 次请求/天)", "uncapped": "永久免费,无公开上限(受速率限制)— 实际可用,未计入总览:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", + "gated": "通过区域身份验证(例如中国大陆实名认证)后,每月还可获得约 {tokens} 个令牌——这是实际配额,但不计入标题所示额度:", "tosRestricted": "{count, plural, one {# 个模型} other {# 个模型}}被标记为受 ToS 限制 — 由您决定", "provider": "提供者", "model": "模型", @@ -13307,7 +13318,7 @@ "missing": "未指定", "signalOnly": "非离散推理信号", "requestTags": "请求标签", - "requestTagsExample": "coding, internal", + "requestTagsExample": "编程、内部", "tagMode": "标签匹配", "effortMode": "推理模式", "targetEffort": "目标推理", @@ -13424,92 +13435,92 @@ "tierLive": "实时", "tierCommunity": "社区(30天延迟)", "activateTitle": "激活雷达", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "比较社区访问权限和实时访问权限,了解您的安装实例会交换哪些信息,然后选择如何激活 Radar。", + "accessScaleTitle": "激活前了解 Radar 访问权限", + "accessScaleIntro": "在您主动选择加入之前,Radar 不会进行任何网络活动。请在查看这些规则后,选择社区访问权限或激活个人支持者密钥。", + "accessCommunityRule": "社区版——无需密钥:可访问完整目录,但有 30 天延迟。", + "accessSingleUseRule": "加星并关注——GitHub OAuth 验证两项操作后,您的 GitHub 账户将获得一次实时目录读取权限;之后访问权限将恢复为社区版。该账户无法再次获得此一次性访问权限。", + "accessContributorRule": "贡献者——已合并的 PR、提交和代码行数仅用于确定每周排名。前 10 名可获得 365 天;第 11–100 名可获得 90 天;前 100 名之外的贡献者无论 PR 数量多少都不会获得授权。退出排名绝不会缩短已授予的期限。", + "accessSupporterRule": "支持者——一次性购买可获得 6 个月、1 年或终身权限,且不会自动续订。购买、捐赠、贡献者期限和手动授权可累加;终身权限始终优先。", + "accessUseTitle": "个人使用、恢复与审核", + "accessInstallationRule": "个人许可证——同一时间只能在一个活跃安装实例上使用该密钥。OmniRoute 不会采集硬件指纹。恢复操作会撤销并替换丢失的密钥,但不会重置其到期时间。", + "accessAbuseRule": "滥用审核——24 小时内出现第 4 个不同的 IP 只会触发人工审核标记;绝不会自动阻止或撤销密钥。", + "accessOffersRule": "实时优惠由人工策划,可能会变更或过期。", + "privacyTitle": "Radar 会交换哪些信息", + "privacyDownloadsRule": "下载——您的安装实例会接收经过加密签名的目录和推荐元数据;有效的实时密钥还可解锁经过签名的优惠和 Intel。", + "privacySendsRule": "发送——服务器端同步会将支持者密钥作为 Bearer token 发送,HTTPS 基础设施也会接收到连接 IP。源请求统计不会以原始形式存储这两项数据:仅保留密钥哈希、汇总用量,以及用于滥用审核且每日轮换的截断 IP HMAC。", + "privacyNeverRule": "绝不收集——提示词、响应、对话、提供者凭据、模型流量、正常运行时间、延迟和本地提供者配置绝不会发送到 Radar。", + "activateButton": "激活社区版", "activating": "正在激活...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "已经有支持者密钥?", + "keyInvalidFormatError": "密钥格式无效。必须以 \"omr_\" 开头,后跟 40 个十六进制字符。", + "activateWithKeyButton": "激活支持者权限", + "changeKeyButton": "更改密钥", + "claimSectionTitle": "还没有支持者密钥?", + "contributorButton": "我是贡献者", + "contributorHint": "GitHub OAuth 会检查当前每周排名:前 10 名可获得 365 天,第 11–100 名可获得 90 天。仅凭 PR 数量无法让前 100 名之外的贡献者获得访问权限。", + "supporterButton": "支持此项目", + "supporterHint": "一次性的 6 个月、1 年和终身选项不会自动续订;符合条件的期限可累加,且终身权限优先。", "colProvider": "提供者", "colModel": "模型", "colQuota": "配额", + "colLimits": "速率限制", + "trainsOnPrompts": "使用提示词进行训练", + "trainsOnPromptsHelp": "此提供者的条款表明,其可能会使用您发送的提示词进行训练。没有此标记的模型要么声明不会这样做,要么未对此进行说明——未作声明并不构成保证。", + "limitsUnknownHelp": "限制仅由 Radar 数据源报告;此条目没有已发布的限制", + "contextUnknownHelp": "此条目的上下文窗口未知", + "capabilityUnknownHelp": "数据源未报告此能力", "colContext": "上下文", "colCapabilities": "能力", "colTos": "ToS风险", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "新", "setupGuide": "设置指南", "disabledByFeed": "被雷达数据源禁用", "capTools": "工具", "capVision": "视觉", "capThinking": "思考", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "目录", + "freeCreditsTab": "免费额度", + "freeCreditsSubtitle": "来自 Radar 跟踪的提供者的推荐链接——使用这些链接不会产生任何额外费用,同时还能帮助支持 OmniRoute。", + "fixedLinksEmpty": "暂无可用的推荐链接。同步 Radar 以检查更新。", + "requiredActionLabel": "操作步骤:", + "claimButton": "领取额度", + "campaignsTitle": "限时活动", + "campaignsEmpty": "目前没有进行中的活动——请稍后再来查看。", + "campaignsUpsellCommunity": "限时活动是支持者专享福利。此页面上的所有固定链接仍对所有人免费开放。", + "campaignsValidUntil": "有效期至 {date}", + "colActions": "操作", + "localBadge": "本地", + "editModel": "编辑", + "saveModel": "保存", + "cancelEdit": "取消", + "resetModel": "重置本地更改", + "hideModel": "隐藏", + "restoreModel": "恢复", + "hiddenModelsTitle": "已隐藏的模型", + "modelDisplayName": "本地显示名称", + "modelEnabled": "在本地启用", + "localStateSaveFailed": "无法保存本地 Radar 设置", + "guidedCombos": "引导式组合", + "offers": "优惠", + "intel": "情报" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar 引导式组合", + "subtitle": "使用 Radar 精选的同等免费模型创建按优先级排列的回退方案。", + "backToRadar": "返回 Radar", + "loading": "正在加载组合建议...", + "familyLabel": "模型系列", + "modelsLabel": "优先级顺序", + "strategyReason": "优先使用周期性免费额度最大的模型,然后在可用的提供者之间依次回退。", + "generateButton": "生成组合", + "generating": "正在生成...", + "alreadyCreated": "已创建", + "created": "组合已创建", + "noSuggestions": "目前没有任何符合条件的模型系列与至少两个提供者建立有效连接。", + "catalogRequired": "请先同步 Radar 目录以加载精选模型系列。", + "loadFailed": "无法加载 Radar 组合建议。", + "createFailed": "无法创建组合。请检查您的提供者连接,然后重试。" }, "radarSetupPage": { "title": "提供者设置", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "连接韧性", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "您的连接会自动恢复", + "reassuranceDetail": "通常无需执行任何操作。连接失败后,OmniRoute 会暂时停用该连接,之后再安全地重试。", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "可以发送请求", + "coolingDown": "即将重试", + "lockedOut": "需要您处理" }, "table": { "status": "状态", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "在目标模型缺少所需能力(视觉、工具、结构化输出、上下文窗口)时,拒绝调度前的请求。保护绕过组合层兼容性过滤器的直接单一提供者请求。", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "对于直接发送到单个模型的请求,跳过 OmniRoute 本地的上下文窗口和最大输入令牌检查。上游提供者仍会强制执行其实际限制。提示词压缩和输出令牌上限仍然有效。", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "搜索统计信息和最近搜索仅统计仍保持实时连接的提供者(无需密钥的提供者,如 duckduckgo-free,始终会被统计)。关闭时,将保留每一条包含提供者 ID 的搜索记录。", "publicSystem": { "notFound": { "title": "页面未找到", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "维护信息", "service": "服务", "unknown": "未知", - "notAvailable": "n/a", + "notAvailable": "不适用", "providersTracked": "已跟踪的提供者", "circuitBreakerState": "提供者电路断路器状态", "lastUpdate": "最后更新:{timestamp}", @@ -14070,11 +14081,11 @@ "actionApprove": "批准计划", "actionCancel": "取消", "actionSeeInGraph": "在图中查看", + "actionRepeat": "重复", "actionDone": "操作已应用", "actionFailed": "操作失败:{error}", "detailFailed": "加载详情失败:{error}", "mirroredInA2A": "已在 A2A 中镜像", - "actionRepeat": "重复", "repeatConfirm": "再次点击以确认", "repeatDone": "已创建新的运行", "repeatUnavailable": "原始输入不可用" @@ -14088,57 +14099,57 @@ "networkError": "网络错误 — 无法更新提供者曝光设置" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "支持者优惠", + "subtitle": "来自 Radar 的官方折扣、额度、试用和经审核的合作伙伴权益。", + "backToRadar": "返回 Radar", + "loading": "正在加载优惠...", + "refresh": "刷新优惠", + "refreshing": "正在刷新...", + "loadFailed": "无法刷新优惠。已保留最近一次验证的本地缓存。", + "empty": "目前没有可用的有效优惠。", + "keyRequiredTitle": "需要支持者密钥", + "keyRequiredDescription": "优惠是 Radar 的实时权益。请在 Radar 页面添加现有的支持者密钥、验证您的贡献者身份,或支持此项目以获取密钥。", + "contributorButton": "我是贡献者", + "supporterButton": "支持此项目", + "partnerBadge": "合作伙伴", + "officialBadge": "官方", + "conditionsLabel": "条件:", + "validUntil": "有效期至 {date}", + "noExpiry": "未公布到期时间", + "openOffer": "查看优惠", + "trialDays": "{days, plural, one {# 天} other {# 天}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Radar 情报", + "subtitle": "Radar 自有的 ELO 排名和基于事实的目录变动。", + "backToRadar": "返回 Radar", + "loading": "正在加载情报...", + "refresh": "刷新情报", + "syncing": "正在刷新...", + "loadFailed": "无法刷新情报。已保留上次验证的本地缓存。", + "empty": "目前尚无已验证的情报快照。", + "supporterBadge": "Radar 支持者", + "methodology": "方法论", + "eloMethod": "ELO,初始值 {initial},K={factor}", + "freshness": "目录新鲜度", + "ageDays": "{days, plural, one {# 天前} other {# 天前}}", + "trend": "目录趋势", + "modelDelta": "{current} 个模型,+{added} / -{removed}", + "ranking": "模型排名", + "noRankings": "目前尚无已确认的比较结果。", + "model": "模型", + "category": "类别", + "rating": "评分", + "matches": "对局数", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "新鲜", + "aging": "逐渐老化", + "stale": "陈旧" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "增长中", + "stable": "稳定", + "shrinking": "缩减中" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "请求超出提供者上下文窗口" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference 是 OmniRoute 的开源合作伙伴", + "description": "一个按成本排序的网关,通过单一 OpenAI 兼容端点转售数十种前沿模型——将每个请求路由至符合条件且价格最低的提供者,并且绝不高于标价。", + "cta": "获取 API 密钥", + "partnerLinkNote": "合作伙伴链接", + "dismissAriaLabel": "关闭" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "禁止在 /v1/models 目录中生成思考级别变体(例如 -low、-medium、-high)。" } diff --git a/src/i18n/messages/zh-TW.json b/src/i18n/messages/zh-TW.json index 5da99c77fe..4ed7fbecce 100644 --- a/src/i18n/messages/zh-TW.json +++ b/src/i18n/messages/zh-TW.json @@ -287,7 +287,7 @@ "modelNamePlaceholder": "模型名稱", "mcpQuickStartStep2": "MCP 快速開始步驟 2", "quickStart": "快速開始", - "fullExportFailedWithError": "Full Export Failed With Error", + "fullExportFailedWithError": "完整匯出失敗並發生錯誤", "loadingBackups": "正在載入備份", "anthropicBaseUrlPlaceholder": "Anthropic Base URL", "description": "描述", @@ -359,7 +359,7 @@ "rerankDesc": "重排說明", "modelsPathPlaceholder": "Model 路徑", "noCombosYet": "暫無 Combo", - "connectedVerificationPendingWithError": "Connected Verification Pending With Error", + "connectedVerificationPendingWithError": "已連線,驗證待處理並發生錯誤", "comboDefaultsGuideHint1": "設定 Combo 預設策略和目標。", "enableCloudTitle": "啟用雲端", "configuredProvidersHint": "僅顯示已設定的 Provider。", @@ -369,7 +369,7 @@ "removeProviderOverrideAria": "移除提供者覆蓋", "nodeVersion": "Node 版本", "openai": "OpenAI", - "exportFailedWithError": "Export Failed With Error", + "exportFailedWithError": "匯出失敗並發生錯誤", "proxyConfigured": "代理已設定", "concurrencyPerModel": "每個模型併發數", "protocolTasksLabel": "協議任務標籤", @@ -704,7 +704,7 @@ "apiKey": "API金鑰", "xpLastHour": "XP(1 小時)", "zScore": "Z 分數", - "suspicious": "__MISSING__:Suspicious", + "suspicious": "可疑", "tokensCommunityServers": "社群伺服器", "tokensServerNamePlaceholder": "伺服器名稱", "tokensApiKeyPlaceholder": "API金鑰", @@ -807,13 +807,13 @@ "batchConceptBenefit50pct": "輸入 + 輸出權杖享受 50% 折扣", "batchConceptAsync24h": "非同步處理,24 小時完成視窗", "batchConceptUseCases": "最適合批次分類、評估和嵌入", - "batchHeaderSubtitle": "Run many requests as one job", - "batchStep1": "1 · Upload JSONL", - "batchStep1Desc": "Add requests", - "batchStep2": "2 · Create batch", - "batchStep2Desc": "Run job", - "batchStep3": "3 · Get results", - "batchStep3Desc": "Download output", + "batchHeaderSubtitle": "將多個請求作為單一作業執行", + "batchStep1": "1 · 上傳 JSONL", + "batchStep1Desc": "新增請求", + "batchStep2": "2 · 建立批次", + "batchStep2Desc": "執行作業", + "batchStep3": "3 · 取得結果", + "batchStep3Desc": "下載輸出", "filesConceptTitle": "批處理檔案", "filesConceptSubtitle": "批處理使用的 JSONL 檔案:輸入請求、結果和錯誤。", "filesConceptInput": "輸入 — 每行一個請求的 JSONL", @@ -988,14 +988,14 @@ "disabled": "已停用", "featureFlagOmnirouteEmergencyFallbackDescription": "將預算耗盡的請求路由到緊急免費備用提供者/模型。", "featureFlagArenaEloSyncEnabledDescription": "啟用定期 Arena AI 排行榜 ELO 同步,用於模型智慧排名。", - "featureFlagUniversalContextHandoffEnabledDescription": "__MISSING__:Generate and inject conversation summaries when combo routing switches models. Disable to treat model switches independently and prevent background handoff requests for all existing and future combos.", + "featureFlagUniversalContextHandoffEnabledDescription": "當組合路由切換模型時,產生並注入對話摘要。停用後,模型切換將各自獨立處理,並防止所有現有及未來的組合發出背景交接請求。", "featureFlagExposeCcDiscoveryAliasesDescription": "在 /v1/models 上廣告 claude/<provider>/<model> 鏡像 ID,以便 Claude Code 閘道模型發現列出非 Claude 模型。警告:當全域啟用時,會為所有客戶端重複目錄條目。", - "featureFlagNoThinkingAliasEnabledDescription": "__MISSING__:Master switch for the no-think/<provider>/<model> gateway aliases. On (default): /v1/models advertises a no-thinking variant for every eligible thinking-capable Claude model, and a no-think/ id sent on a request resolves back to the real model with reasoning suppressed. Off: no variants are advertised and a no-think/ id is treated like any other unknown model id. The per-model ModelSpec.noThinkingAlias opt-in/opt-out still applies while this is on.", + "featureFlagNoThinkingAliasEnabledDescription": "no-think/<provider>/<model> 閘道別名的主開關。開啟(預設):/v1/models 會為每個符合資格且支援思考的 Claude 模型提供不思考變體,而請求中傳送的 no-think/ ID 會解析回實際模型並抑制推理。關閉:不會提供任何變體,且 no-think/ ID 會像其他未知模型 ID 一樣處理。開啟此選項時,每個模型的 ModelSpec.noThinkingAlias 選擇加入/退出設定仍然適用。", "featureFlagChatVirtualLanesEnabledDescription": "為提供者調度啟用按租戶的自適應虛擬准入通道(#9654):一個租戶的突發流量不再導致另一個租戶收到 503。OMNIROUTE_CHAT_VIRTUAL_LANES 環境變數優先於此儀表板設定;變更在伺服器重新啟動後生效。", - "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "Dashboard provider pages: show the Free badge only on signals the provider honors — drops the display-name heuristic, non-boolean free fields and :free suffixes on registered providers without a documented free tier. Off keeps the historical badge rule.", - "featureFlagProxySkipRecentlyFailedDescription": "__MISSING__:Proxy pools and the per-account rotation of opencode stop re-serving a proxy that just failed (refused TCP probe, or a 429 received through it) for a per-process period that doubles on each repeat, up to a cap. No proxy status is written; with every candidate set aside the choice is unchanged. Off by default: selection order is exactly the plain rotation.", - "featureFlagProxyPoolEgressObservationDescription": "__MISSING__:Show, under a proxy pool in the dashboard, how many observed egress IPs served its members over the last 24 h, how many connections used them and the most seen behind one IP. Read-only, computed from the proxy log, never used for routing. Off by default: the pool editor is unchanged and the observation route answers null.", - "featureFlagProxyHealthBlockedResetsStreakDescription": "__MISSING__:In the proxy health sweep, let a probe the target refused (401/403/429: the proxy relayed, the destination refused this egress IP) reset the consecutive-failure streak of the proxy, like a served probe. Off by default: a refusal stays neutral and keeps the streak. A 5xx stays inconclusive either way, and a refusal never removes, disables or re-activates a proxy.", + "featureFlagFreeBadgeRequiresProviderFreeTierDescription": "儀表板提供者頁面:僅在提供者認可的訊號上顯示「免費」徽章——不再對沒有已記錄免費方案的已註冊提供者使用顯示名稱啟發法、非布林值免費欄位及 :free 後綴。關閉時會沿用過往的徽章規則。", + "featureFlagProxySkipRecentlyFailedDescription": "Proxy 集區以及 opencode 的每帳戶輪替機制,會在每個處理程序的一段期間內,停止再次使用剛失敗的 Proxy(TCP 探測遭拒,或透過該 Proxy 收到 429)。每次重複失敗時,這段期間都會加倍,直到達到上限。不會寫入任何 Proxy 狀態;即使所有候選項目都被暫時擱置,選擇結果仍維持不變。預設關閉:選擇順序與一般輪替完全相同。", + "featureFlagProxyPoolEgressObservationDescription": "在儀表板的 Proxy 集區下方,顯示過去 24 小時內觀察到多少個出口 IP 為其成員提供服務、使用這些 IP 的連線數,以及單一 IP 後方觀察到的最高數量。唯讀,根據 Proxy 記錄計算,絕不會用於路由。預設關閉:集區編輯器維持不變,觀察路由會回傳 null。", + "featureFlagProxyHealthBlockedResetsStreakDescription": "在 Proxy 健康狀態掃描中,讓遭目標拒絕的探測(401/403/429:Proxy 已轉送,但目的地拒絕此出口 IP)能像已提供服務的探測一樣,重設 Proxy 的連續失敗次數。預設關閉:拒絕仍視為中性,並保留目前的連續失敗次數。無論此設定為何,5xx 仍視為無法判定,而且拒絕絕不會移除、停用或重新啟用 Proxy。", "sidebar": { "home": "首頁", "dashboard": "儀表板", @@ -1180,17 +1180,17 @@ "providerQuota": "提供者配額", "runtime": "執行時", "consoleLogs": "控制台日誌", - "logsTimeline": "Timeline", + "logsTimeline": "時間軸", "logsTimelineSubtitle": "視覺請求時間線", - "conversations": "Conversations", - "conversationsSubtitle": "Multi-turn agentic conversations", + "conversations": "對話", + "conversationsSubtitle": "多輪代理式對話", "globalRouting": "全域性路由", "mitmProxy": "MITM 代理", "oneProxy": "1Proxy", "agenticFeaturesSection": "代理功能", "otherFeaturesSection": "其他功能", "compressionContextGroup": "壓縮上下文", - "gamificationGroup": "Gamification", + "gamificationGroup": "遊戲化", "toolsGroup": "工具", "integrationsGroup": "整合", "proxyGroup": "代理", @@ -1213,11 +1213,11 @@ "leaderboard": "排行榜", "profile": "個人資料", "tokens": "權杖", - "gamificationAdmin": "__MISSING__:Gamification Admin", + "gamificationAdmin": "遊戲化管理", "leaderboardSubtitle": "排名與成就", "profileSubtitle": "帳戶與偏好", "tokensSubtitle": "權杖使用和預算", - "gamificationAdminSubtitle": "__MISSING__:Anomaly monitoring and anti-cheat", + "gamificationAdminSubtitle": "異常監控與防作弊", "usageSubtitle": "流量和使用統計", "analyticsComboHealthSubtitle": "組合目標可靠性", "analyticsUtilizationSubtitle": "提供者利用率", @@ -1278,8 +1278,8 @@ "agentBridge": "代理橋接", "agentBridgeSubtitle": "攔截 IDE 代理流量", "trafficInspector": "流量檢查器", - "trafficInspectorSubtitle": "__MISSING__:Inspect request and response traffic from your apps", - "trafficInspectorPurpose": "See exactly what your application sends to and receives from AI providers. Works with any OpenAI-compatible client.", + "trafficInspectorSubtitle": "檢查來自您應用程式的請求與回應流量", + "trafficInspectorPurpose": "精確查看您的應用程式傳送給 AI 提供者及從中接收的內容。適用於任何與 OpenAI 相容的用戶端。", "cliCode": "CLI 程式碼的", "cliCodeSubtitle": "指向 OmniRoute 的程式碼工具", "cliAgents": "CLI 代理", @@ -1713,7 +1713,7 @@ "edit": "編輯", "apiKeys": "API 金鑰", "models": "模型", - "cliCode": "CLI Code", + "cliCode": "CLI 程式碼", "cliAgents": "CLI 代理", "acpAgents": "ACP 代理", "endpoint": "端點", @@ -1762,7 +1762,7 @@ "discovery": "探索", "freeProviderRankings": "免費提供者排名", "radar": "Radar", - "setup": "Setup", + "setup": "設定", "freeTiers": "免費方案", "gamification": "遊戲化", "leaderboard": "排行榜", @@ -1826,11 +1826,11 @@ "updateStarted": "更新已開始...", "reloadingPageAutomatically": "自動重新載入頁面...", "providerTopology": "提供者拓撲", - "recentRequests": "__MISSING__:Recent Requests", - "recentRequestsEmpty": "__MISSING__:No requests yet.", - "recentRequestsModel": "__MISSING__:Model", - "recentRequestsTokens": "__MISSING__:In / Out", - "recentRequestsWhen": "__MISSING__:When", + "recentRequests": "最近的請求", + "recentRequestsEmpty": "尚無請求。", + "recentRequestsModel": "模型", + "recentRequestsTokens": "輸入/輸出", + "recentRequestsWhen": "時間", "downloadDmg": "下載 DMG (macOS)", "downloadDmgDescription": "OmniRoute 桌面應用程式的新版本已經可用。請下載並安裝 macOS DMG 安裝程式以進行更新(目前版本:v{version})。", "downloadExe": "下載 EXE (Windows)", @@ -1888,15 +1888,15 @@ "releaseNotes": "發佈說明", "readMore": "閱讀更多", "noAuthLabel": "無認證", - "readinessEyebrow": "Get ready to route", - "readinessTitle": "Send your first request", - "readinessSubtitle": "Four small steps. OmniRoute checks readiness as you go.", - "readinessStep1": "Connect a provider", - "readinessStep2": "Configure endpoint authentication", - "readinessStep3": "Copy your endpoint", - "readinessStep4": "Send a test request", - "readinessContinue": "Continue setup", - "readinessDismiss": "Dismiss for now" + "readinessEyebrow": "準備開始路由", + "readinessTitle": "傳送您的第一個請求", + "readinessSubtitle": "只需四個小步驟。OmniRoute 會在您進行時檢查就緒狀態。", + "readinessStep1": "連接提供者", + "readinessStep2": "設定端點驗證", + "readinessStep3": "複製您的端點", + "readinessStep4": "傳送測試請求", + "readinessContinue": "繼續設定", + "readinessDismiss": "暫時略過" }, "analytics": { "title": "分析", @@ -2258,9 +2258,9 @@ "fullAccess": "完全訪問", "keyManagement": "API 金鑰管理", "keyManagementDesc": "建立和管理用於訪問端點的 API 金鑰", - "requestFlowAria": "Your app sends requests through an API key to OmniRoute", - "requestFlowYourApp": "Your app", - "requestFlowApiKey": "API key", + "requestFlowAria": "您的應用程式透過 API 金鑰將請求傳送至 OmniRoute", + "requestFlowYourApp": "您的應用程式", + "requestFlowApiKey": "API 金鑰", "requestFlowOmniRoute": "OmniRoute", "totalKeys": "金鑰總數", "restricted": "受限", @@ -2303,7 +2303,7 @@ "savePermissions": "儲存許可權", "endpointRestrictions": "允許的端點", "allEndpointsAllowed": "此金鑰可以訪問所有 API 端點。", - "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.", + "endpointsRestricted": "僅限用於 {count} 個端點。", "autoResolve": "自動解析", "autoResolveDesc": "為這個 API 金鑰自動將有歧義的模型名解析到原生提供者。", "streamDefaultMode": "流預設相容性", @@ -2381,9 +2381,9 @@ "removeClaudeCodeDefault": "移除 Claude Code 預設", "allowedCombos": "允許的組合", "allCombosAllowed": "此金鑰可使用任何組合。", - "restrictedComboCount": "Restricted to {count, plural, one {# combo} other {# combos}}.", - "preservedComboRules": "__MISSING__:{count, plural, one {# stored entry is} other {# stored entries are}} not in this combo list (for example routing rules) and will be kept as saved.", - "preservedComboRuleHint": "__MISSING__:Kept as stored. This entry is not a combo in the list above, so it can only be changed through the API.", + "restrictedComboCount": "僅限用於 {count, plural, one {# 個組合} other {# 個組合}}。", + "preservedComboRules": "{count, plural, one {# 個已儲存的項目} other {# 個已儲存的項目}}不在此組合清單中(例如路由規則),並將依已儲存的內容保留。", + "preservedComboRuleHint": "依已儲存的內容保留。此項目不是上述清單中的組合,因此只能透過 API 變更。", "apiManagerCustomRateLimits": "自定義費率限制", "apiManagerCustomRateLimitsDesc": "覆蓋全域性預設限制。留空以使用預設值。", "apiManagerRateLimitRequestsPlaceholder": "要求", @@ -2420,14 +2420,14 @@ "bypassProviderQuotaDescription": "允許此金鑰在路由期間忽略上游提供者/帳戶的限制政策。API 金鑰的美元配額仍然適用。", "quotaPill": "配額", "quotaModeOnly": "僅配額", - "exclusiveLease": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeTitle": "__MISSING__:Exclusive Lease", - "exclusiveLeaseNoticeDesc": "__MISSING__:This API key has exclusive lease permissions for dedicated connection routing.", - "allConnections": "__MISSING__:All connections", - "onlySelectedConnections": "__MISSING__:Only selected connections", - "selectAtLeastOneConnection": "__MISSING__:Select at least one connection or choose All connections.", - "allConnectionsDesc": "__MISSING__:This key can use any active connection.", - "restrictedToConnections": "__MISSING__:Restricted to {count, plural, one {# connection} other {# connections}}." + "exclusiveLease": "專屬租約", + "exclusiveLeaseNoticeTitle": "專屬租約", + "exclusiveLeaseNoticeDesc": "此 API 金鑰具有專用連線路由的專屬租約權限。", + "allConnections": "所有連線", + "onlySelectedConnections": "僅限選取的連線", + "selectAtLeastOneConnection": "請至少選取一個連線,或選擇「所有連線」。", + "allConnectionsDesc": "此金鑰可使用任何作用中的連線。", + "restrictedToConnections": "僅限使用 {count, plural, one {# 個連線} other {# 個連線}}。" }, "auditLog": { "title": "稽核日誌", @@ -2950,7 +2950,7 @@ "interpreter": "Open Interpreter 自主程式代理 CLI", "omp": "Oh My Pi 終端機程式代理", "letta": "Letta CLI 代理,具備持久記憶與工具使用能力", - "prime-agent": "Prime Agent — self-improving RLM coding harness with OpenAI-compatible provider support", + "prime-agent": "Prime Agent — 支援 OpenAI 相容提供者、可自我改進的 RLM 程式設計框架", "warp": "Warp AI 終端機,支援自訂提供者", "agent-deck": "Agent Deck 多代理協調器", "5dive": "5dive — 自架的編碼代理機群;一個認證設定檔即可將全部指向 OmniRoute" @@ -2971,7 +2971,7 @@ "desc": "開啟 “OpenAI API key” 選項" }, "3": { - "title": "Base URL" + "title": "基礎 URL" }, "4": { "title": "API金鑰" @@ -3039,7 +3039,7 @@ "desc": "前往 Settings → AI Provider" }, "2": { - "title": "Base URL", + "title": "基礎 URL", "desc": "貼上你的 OmniRoute 端點 URL" }, "3": { @@ -3064,11 +3064,11 @@ "desc": "選擇 \"Add custom provider\" (OpenAI 相容)" }, "3": { - "title": "Base URL", + "title": "基礎 URL", "desc": "http://127.0.0.1:20128/v1" }, "4": { - "title": "API Key", + "title": "API 金鑰", "desc": "選擇你的 OmniRoute API 金鑰" }, "5": { @@ -3169,7 +3169,7 @@ "loadingModels": "正在載入模型...", "advancedOptions": "進階選項", "vision": "視覺", - "copilotCopyConfigForModels": "Copy config ({count, plural, one {# model} other {# models}})", + "copilotCopyConfigForModels": "複製設定({count, plural, one {# 個模型} other {# 個模型}})", "copilotFilterModelsPlaceholder": "過濾器型號...", "copilotMaxInputTokens": "最大輸入權杖數", "copilotMaxOutputTokens": "最大輸出代幣", @@ -3265,10 +3265,10 @@ "randomDesc": "均勻隨機選擇,失敗後回退到剩餘模型", "leastUsedDesc": "優先選擇請求數最少的模型,隨時間平衡負載", "costOptimizedDesc": "根據定價優先路由到最便宜的模型", - "cacheOptimizedDesc": "Routes each reusable prompt prefix consistently to the same provider account", + "cacheOptimizedDesc": "將每個可重複使用的提示詞前綴一致地路由至同一個提供者帳戶", "resetAware": "復位感知RR", "resetAwareDesc": "平衡剩餘配額與 5 小時和每週重置,然後對相似分數進行迴圈賽", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "配額加權", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "嚴格隨機", "strictRandomDesc": "洗牌池模式:每個模型使用一次後再重新洗牌", @@ -3322,7 +3322,7 @@ "playgroundStatusError": "錯誤", "playgroundStatusUnknown": "未知", "playgroundNetworkError": "模擬期間發生網路錯誤", - "playgroundTitle": "Combo Playground", + "playgroundTitle": "組合測試場", "playgroundDescription": "模擬請求如何透過您的 combos 進行路由", "playgroundConfiguration": "設定", "playgroundNoCombosConfigured": "未設定任何 combos", @@ -3543,7 +3543,7 @@ "weightTaskFit": "任務適配", "weightStability": "穩定性", "weightTierPriority": "層級", - "weightCacheAffinity": "Cache Hit Affinity", + "weightCacheAffinity": "快取命中親和性", "weightSessionAvailability": "會議可用性", "reviewIntelligentTitle": "智慧路由設定", "strategyRecommendations": { @@ -3664,10 +3664,10 @@ "wizardStep3Desc": "選擇請求在模型之間的分發方式 — 提供 13 種策略", "wizardStep4Title": "審查並儲存", "wizardStep4Desc": "審查您的設定並啟用組合", - "usageGuideInvokeTitle": "How to call this combo", - "usageGuideInvokeDesc": "Send the combo's exact name as the model, e.g. model: \"my-combo\" (or combo/my-combo).", - "usageGuideInvokeAutoNote": "auto and auto/* are a separate zero-config router that does not use your combos (unless a combo is literally named auto).", - "usageGuideInvokeOpenrouterNote": "openrouter/auto is a real paid OpenRouter product (Auto Best Available), not an OmniRoute alias — exclude it via Settings → Routing → Hide paid models.", + "usageGuideInvokeTitle": "如何呼叫此組合", + "usageGuideInvokeDesc": "將組合的確切名稱作為模型傳送,例如 model: \"my-combo\"(或 combo/my-combo)。", + "usageGuideInvokeAutoNote": "auto 和 auto/* 是獨立的零設定路由器,不會使用您的組合(除非某個組合的名稱確實為 auto)。", + "usageGuideInvokeOpenrouterNote": "openrouter/auto 是真正的付費 OpenRouter 產品(Auto Best Available),並非 OmniRoute 別名——可透過「設定 → 路由 → 隱藏付費模型」將其排除。", "emailVisibilityStateOn": "開啟", "emailVisibilityStateOff": "關閉", "reorderHandle": "拖拽排序", @@ -3800,13 +3800,13 @@ "range7d": "7 天", "range30d": "30 天", "range90d": "90 天", - "range180d": "180 Days", - "range365d": "365 Days", + "range180d": "180 天", + "range365d": "365 天", "rangeAll": "全部時間", "spend30d": "30 天支出", "activeModels": "活躍 Model", - "flatRateEstimateNotice": "__MISSING__:Includes token-price estimates for flat-rate subscriptions, not billed cost.", - "flatRateEstimateForecast": "__MISSING__:Projection includes flat-rate estimates.", + "flatRateEstimateNotice": "包含固定費率訂閱的 Token 價格估算,而非實際計費成本。", + "flatRateEstimateForecast": "預測包含固定費率估算。", "selectedWindow": "已選視窗", "activeProviders": "活躍 Provider", "overviewTitle": "概覽", @@ -3882,9 +3882,9 @@ }, "endpoint": { "title": "API 端點", - "subtitle": "Use the OpenAI-compatible endpoint with most SDKs and tools.", - "testEndpoint": "Test endpoint →", - "advancedProtocols": "Advanced protocols", + "subtitle": "搭配大多數 SDK 與工具使用 OpenAI 相容端點。", + "testEndpoint": "測試端點 →", + "advancedProtocols": "進階通訊協定", "available": "可用端點", "cloudProxy": "雲代理", "disableConfirm": "確定要停用雲代理嗎?", @@ -4144,9 +4144,9 @@ "tierPublic": "公開", "hideInternal": "隱藏內部端點", "showInternal": "顯示內部端點", - "customSystemPromptTitle": "Custom System Prompt", - "customSystemPromptDescription": "Inject a custom system prompt into every model request", - "customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...", + "customSystemPromptTitle": "自訂系統提示詞", + "customSystemPromptDescription": "在每個模型請求中注入自訂系統提示詞", + "customSystemPromptPlaceholder": "例如:一律使用海盜口吻回覆……", "obsidianEnterToken": "請輸入 Obsidian API Token", "obsidianConnectFailed": "連線失敗", "obsidianConnectionFailed": "連線失敗", @@ -4160,7 +4160,7 @@ "obsidianNotConnected": "未連線", "obsidianWebdavSync": "WebDAV 同步", "obsidianDescription": "透過路由 AI 模型搜尋、讀取、寫入和管理 Obsidian 筆記", - "obsidianRestToken": "Obsidian Local REST API Token", + "obsidianRestToken": "Obsidian Local REST API 權杖", "obsidianApiKeyPlaceholder": "Obsidian API 金鑰", "obsidianConnect": "連線", "obsidianBaseUrlOptional": "基礎 URL(選填)", @@ -4665,13 +4665,13 @@ "retry": "重試", "allOperational": "所有系統均可執行", "issuesDetected": "檢測到系統問題", - "healthVerdictReady": "OmniRoute is ready", - "healthVerdictActionRequired": "Action required to restore full operation", - "healthVerdictCoolingDown": "Cooling down after recent changes", - "healthSubtitle": "System health check", - "advancedDiagnosticsTitle": "Advanced diagnostics", - "hide": "Hide", - "show": "Show", + "healthVerdictReady": "OmniRoute 已就緒", + "healthVerdictActionRequired": "需要採取動作以恢復完整運作", + "healthVerdictCoolingDown": "近期變更後正在冷卻", + "healthSubtitle": "系統健康狀況檢查", + "advancedDiagnosticsTitle": "進階診斷", + "hide": "隱藏", + "show": "顯示", "updatedAt": "更新了 {time}", "latency": "延遲", "latencyP50": "p50", @@ -4736,7 +4736,7 @@ "repairBackupCreated": "在變更前已建立修復備份。", "sessionActivity": "工作階段活動", "activeCount": "{count} 個作用中", - "requestCount": "{count, plural, one {# request} other {# requests}}", + "requestCount": "{count, plural, one {# 個請求} other {# 個請求}}", "idleSeconds": "閒置 {count} 秒", "ageSeconds": "已存在 {count} 秒", "quotaMonitors": "配額監控", @@ -4951,7 +4951,7 @@ "disableAutoScroll": "停用自動捲動", "enableAutoScroll": "啟用自動捲動", "autoScroll": "自動捲動", - "entryCount": "{count, plural, one {# entry} other {# entries}}", + "entryCount": "{count, plural, one {# 筆項目} other {# 筆項目}}", "lastHour": "過去 1 小時", "updatedAt": "更新於 {time}", "fileLoggingRequired": "確保應用程式正在將日誌寫入檔案(APP_LOG_TO_FILE=true)", @@ -4987,9 +4987,9 @@ "multiProvider": "多提供者", "usageTracking": "使用情況追蹤", "securityDesc": "設定密碼以保護您的儀表板,或暫時跳過。", - "securityDescSkipWarning": "⚠️ Without a password, you won't be able to add providers during setup. You can add them later from the dashboard after setting a password.", + "securityDescSkipWarning": "⚠️ 若未設定密碼,您將無法在設定期間新增提供者。您可以稍後在設定密碼後,從儀表板新增提供者。", "providerDesc": "連線你的第一個 AI 提供者。你之後還可以繼續新增。", - "providerRequiresPassword": "You need to set a password first to add providers. Please go back to the security step and set a password, or add providers later from the dashboard.", + "providerRequiresPassword": "您必須先設定密碼才能新增提供者。請返回安全性步驟並設定密碼,或稍後從儀表板新增提供者。", "apiKeyRequired": "API 金鑰(必填)", "customUrlOptional": "自定義 URL(可選)", "testDesc": "讓我們驗證您的提供者連線是否有效。", @@ -5076,6 +5076,9 @@ "importFromFileImporting": "正在匯入…", "importFromFileImport": "匯入 {count} 個提供者", "importFromFileResult": "已匯入 {success} 個提供者({failed} 個失敗)", + "importFromFileDownloadTemplate": "下載 CSV 範本", + "importFromFileMoreErrors": "另有 {count} 個", + "importFromFileSchemaHint": "CSV 欄位依位置排列:provider、name、apiKey、baseUrl(選填)、priority(選填)。provider 欄位必須是現有的受管理提供者 ID,或已註冊且與 OpenAI/Anthropic 相容的節點 ID;此匯入不會建立新的端點節點。", "adaptaTutorial": { "title": "如何連線 Adapta Web", "introPrefix": "Adapta 透過 Clerk 進行驗證。該令牌", @@ -5133,8 +5136,8 @@ "reorderByAvailabilityError": "依可用性重新排序連線失敗", "distributeProxies": "分配代理", "distributing": "分配中...", - "selectedCount": "{count, plural, one {# selected} other {# selected}}", - "accountsCount": "{count, plural, one {# account} other {# accounts}}", + "selectedCount": "{count, plural, one {已選取 # 個} other {已選取 # 個}}", + "accountsCount": "{count, plural, one {# 個帳戶} other {# 個帳戶}}", "testAllOAuth": "測試所有 OAuth 連線", "testAllFree": "測試所有免費連線", "testAllApiKey": "測試所有 API 金鑰連線", @@ -5178,7 +5181,7 @@ "deprecatedProvider": "此提供者已棄用", "riskNotice": { "title": "繼續之前", - "detailsTitle": "Usage caveats", + "detailsTitle": "用量注意事項", "tooltip": "該提供者有使用注意事項 —— 點選檢視詳情", "oauth": "此提供者使用你官方產品的會話 / OAuth,這並未被授權用於代理或路由用途。 不建議進行高強度的自主代理使用(OpenCloud 風格、長鏈路多步流程、大批次請求)—— 上游可能因此限制甚至封禁帳號。 使用風險自負。", "webCookie": "此提供者通過你的網頁會話 Cookie 進行鑑權。上游服務可能隨時讓會話失效,屆時你需要重新登入。不建議用於長時間無人值守的操作。 使用風險自負。", @@ -5188,9 +5191,9 @@ "cancel": "取消" }, "warningNotice": { - "tooltip": "{count} connection(s) flagged — up to {maxFailures} recent failures{lastFailureSuffix}. Click to view connection health.", - "lastFailureSuffix": " (last failure {time})", - "ariaLabel": "View connection health details, {count} warning(s)" + "tooltip": "已標記 {count} 個連線 — 最近最多發生 {maxFailures} 次失敗{lastFailureSuffix}。按一下以檢視連線健康狀況。", + "lastFailureSuffix": "(上次失敗時間:{time})", + "ariaLabel": "檢視連線健康狀況詳細資料,{count} 個警告" }, "disabled": "已停用", "enableProvider": "啟用提供者", @@ -5257,10 +5260,10 @@ "iconUrlLabel": "圖示網址", "iconUrlHint": "選用。顯示為此提供者圖示的圖片網址。", "iconUrlInvalid": "無效的圖示網址。請使用 http(s):// 或 data:image/*;base64 URL。", - "dailyQuotaResetTimezoneLabel": "Daily quota reset timezone", - "dailyQuotaResetTimezoneHint": "Optional IANA timezone used when the upstream omits X-RateLimit-Reset. Leave empty to keep a short cooldown.", - "dailyQuotaResetHourLabel": "Daily quota reset hour", - "dailyQuotaResetHourHint": "Local hour 0-23 in the timezone above. Empty means no node-level clock.", + "dailyQuotaResetTimezoneLabel": "每日配額重設時區", + "dailyQuotaResetTimezoneHint": "當上游未提供 X-RateLimit-Reset 時使用的選填 IANA 時區。留空則維持短暫冷卻。", + "dailyQuotaResetHourLabel": "每日配額重設小時", + "dailyQuotaResetHourHint": "上述時區中的當地小時(0–23)。留空表示不使用節點層級時鐘。", "anthropicPrefixPlaceholder": "ac-prod", "openaiPrefixPlaceholder": "oc-prod", "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1", @@ -5292,7 +5295,7 @@ "filterError": "錯誤", "filterBanned": "封禁", "filterCreditsExhausted": "額度耗盡", - "accountSearchPlaceholder": "Search accounts…", + "accountSearchPlaceholder": "搜尋帳戶…", "noFilteredConnections": "沒有符合當前篩選條件的連線。", "failedSetAlias": "設定別名失敗", "setAliasSuccess": "別名 {alias} 已設定", @@ -5475,9 +5478,9 @@ "reauthenticateConnection": "重新驗證此連線", "proxyConfig": "代理設定", "aliasExistsAlert": "別名“{alias}”已存在。請使用不同的模型或編輯現有別名。", - "aliasInputPlaceholder": "alias name", - "clickToSetAlias": "Click to set alias", - "clickToEditAlias": "Alias: {alias} (click to edit)", + "aliasInputPlaceholder": "別名", + "clickToSetAlias": "按一下以設定別名", + "clickToEditAlias": "別名:{alias}(按一下以編輯)", "openRouterAnyModelHint": "OpenRouter 支援任意模型。新增模型並建立別名後即可快速訪問。", "modelIdFromOpenRouter": "模型 ID(來自 OpenRouter)", "openRouterModelPlaceholder": "anthropic/claude-3-opus", @@ -5534,18 +5537,18 @@ "interceptFetchHint": "將原生的 web_fetch 工具呼叫重新導向至 OmniRoute 的 /v1/web/fetch。", "interceptionLoadError": "載入攔截設定失敗:{error}", "interceptionSaveError": "儲存攔截設定失敗:{error}", - "ccAliasSectionTitle": "Expose in Claude Code (claude/…)", - "ccAliasSectionHint": "Advertise this provider's models under claude/<provider>/<model> mirror ids so Claude Code's gateway model discovery can list them. Off by default — enabling this doubles catalog entries for all clients.", - "ccAliasProviderLevelLabel": "Provider default", - "ccAliasModelOverridesLabel": "Per-model overrides", - "ccAliasModelOverrideAriaLabel": "Override for {modelId}", - "ccAliasStateInherit": "Inherit", - "ccAliasStateOn": "On", - "ccAliasStateOff": "Off", - "ccAliasAddModelPlaceholder": "Model id (e.g. gpt-4o)", - "ccAliasAddModelButton": "Add override", - "ccAliasLoadError": "Failed to load discovery-alias settings: {error}", - "ccAliasSaveError": "Failed to save discovery-alias setting: {error}", + "ccAliasSectionTitle": "在 Claude Code 中公開(claude/…)", + "ccAliasSectionHint": "以 claude/<provider>/<model> 鏡像 ID 公開此提供者的模型,讓 Claude Code 的閘道模型探索功能可以列出這些模型。預設為關閉;啟用後,所有用戶端的目錄項目數量都會加倍。", + "ccAliasProviderLevelLabel": "提供者預設值", + "ccAliasModelOverridesLabel": "各模型覆寫設定", + "ccAliasModelOverrideAriaLabel": "覆寫 {modelId}", + "ccAliasStateInherit": "繼承", + "ccAliasStateOn": "開啟", + "ccAliasStateOff": "關閉", + "ccAliasAddModelPlaceholder": "模型 ID(例如 gpt-4o)", + "ccAliasAddModelButton": "新增覆寫設定", + "ccAliasLoadError": "無法載入探索別名設定:{error}", + "ccAliasSaveError": "無法儲存探索別名設定:{error}", "compatUpstreamHeadersLabel": "上游額外請求頭", "compatUpstreamHeadersHint": "與修改廠商連線/API 設定同屬高許可權能力,僅可信管理員應使用。這些頭會在 OmniRoute 按廠商 API Key 自動加好鑑權頭之後再合併。若「名稱」與系統已加的頭相同(例如都叫 Authorization),則以你填的值為準,會整段替換自動那條(含 Bearer 權杖),上游請求裡不再使用面板裡儲存的金鑰來生成 Authorization。填錯可能導致 401,請謹慎。每個請求頭單獨一行;部分閘道器需要額外 Authentication 等可在此加。滑鼠移入或聚焦「值」可暫時看明文。點空白處、關閉本面板或切走焦點即儲存。", "compatUpstreamHeaderName": "請求頭名稱", @@ -5754,7 +5757,7 @@ "accountConcurrencyCapHint": "限制此 Account 可同時處理的請求數。", "accountConcurrencyCapLabel": "Account 併發上限", "accountIdHint": "用於區分同一 Provider 下的多個 Account。", - "accountIdLabel": "Account ID", + "accountIdLabel": "帳戶 ID", "accountIdPlaceholder": "Account ID 佔位符", "addAnotherApiKey": "新增另一個 API 金鑰或貼上多個金鑰", "addCcCompatible": "新增 CC 相容", @@ -5904,8 +5907,8 @@ "rateLimitOverridesSection": "速率限制覆蓋", "rateLimitOverridesMaxConcurrentHint": "此連線的最大併發請求覆蓋。覆蓋帳戶級別的上限。", "rateLimitOverridesMaxConcurrentLabel": "最大併發(速率限制)", - "rateLimitOverridesMaxWaitMsHint": "__MISSING__:Maximum time (ms) a request may wait for a rate-limit slot before failing. Overrides the global Resilience setting for this connection only.", - "rateLimitOverridesMaxWaitMsLabel": "__MISSING__:Max Queue Wait (ms)", + "rateLimitOverridesMaxWaitMsHint": "請求在失敗前等待速率限制可用名額的最長時間(毫秒)。僅針對此連線覆寫全域恢復能力設定。", + "rateLimitOverridesMaxWaitMsLabel": "佇列最長等待時間(毫秒)", "rateLimitOverridesMinTimeHint": "請求之間的最小時間(毫秒)。覆蓋預設速率限制器延遲。", "rateLimitOverridesMinTimeLabel": "最小間隔(毫秒)", "rateLimitOverridesRpdHint": "此連線的每天最大請求數。覆蓋提供者預設值。", @@ -5978,7 +5981,7 @@ "zedImportHint": "從 Zed 設定中匯入 Provider。", "zedImportNetworkError": "Zed 匯入網路錯誤", "zedImportNone": "沒有可從 Zed 匯入的內容", - "zedImportSuccess": "Imported {credentials} credential(s) from Zed for {providers} provider(s)", + "zedImportSuccess": "已從 Zed 匯入 {providers} 個提供者的 {credentials} 個憑證", "zedImporting": "正在從Zed導入", "zedNoCredentials": "在鑰匙圈中找不到 Zed 憑證", "zedUnsupportedCredentials": "找到 {count} 個鑰匙圈憑證,但均未匹配支援的提供者", @@ -6175,7 +6178,7 @@ "freeaiapikey": "40+ 種模型的折扣 API 代理,包括 GPT-5、Claude Opus 4.6、Claude Sonnet 4.6、Qwen 3.5。在 https://freeaiapikey.com/dashboard 取得 API 金鑰。基本 URL:https://freeaiapikey.com/v1。", "freemodel-dev": "在 https://freemodel.dev 取得 $300 美元免費 API 額度 — 無需付款資訊。OpenAI 相容端點。提供 GPT-5.4 和 GPT-5.5 模型。", "friendliai": "無伺服器推論的免費方案 — 無需信用卡", - "gemini": "__MISSING__:Free tier through Google AI Studio; per-model quotas are no longer published (check the quota page in AI Studio) — no credit card.", + "gemini": "透過 Google AI Studio 使用免費方案;不再公布各模型的配額(請查看 AI Studio 中的配額頁面)— 無需信用卡。", "gigachat": "使用 API 金鑰連線 GigaChat(Sber)。", "gitlab": "用於公開 Code Suggestions API 的 GitLab 個人存取權杖。不使用 gitlab.com 時,請設定自託管的基本 URL。", "gitlawb-gmi": "從 Gitlawb Opengateway 儀表板取得 API 金鑰。", @@ -6184,7 +6187,7 @@ "glm-cn": "使用 API 金鑰連線 GLM Coding(中國)。", "glmt": "預設 GLM 設定檔,具有較高的 token 預算、啟用思考功能,以及更長的超時時間。", "getgoapi": "使用 API 金鑰連線 GoAPI。", - "groq": "__MISSING__:Free plan: per-model caps (200K tokens/day per chat model; see console.groq.com/docs/rate-limits for RPM/RPD) — no payment method on file.", + "groq": "免費方案:各模型有用量上限(每個聊天模型每日 200K 個權杖;RPM/RPD 請參閱 console.groq.com/docs/rate-limits)— 未綁定付款方式。", "haiper": "在 haiper.ai/haiper-api 取得 API 金鑰", "heroku": "使用 API 金鑰連線 Heroku AI。", "hcnsec": "在 api.hcnsec.cn 取得 API 金鑰", @@ -6252,7 +6255,7 @@ "requesty": "在 https://app.requesty.ai 建立 API 金鑰,然後以 Bearer token 形式貼上。OpenAI 相容端點為 https://router.requesty.ai/v1,附即時 /v1/models 目錄。", "runwayml": "Runway 影片生成為任務導向。OmniRoute 提交文字轉影片或圖片轉影片作業,輪詢 /v1/tasks/[id],並將完成的影片輸出正規化為類似 OpenAI 的 /v1/videos/generations 回應。", "sambanova": "註冊即贈 $5 美元免費額度(30 天有效期),無需信用卡", - "seekai": "Create an API key at https://seekai.cc, then paste it here as a Bearer token. OpenAI-compatible base URL: https://seekai.cc/v1.", + "seekai": "請在 https://seekai.cc 建立 API 金鑰,然後將其作為 Bearer 權杖貼到此處。與 OpenAI 相容的基礎 URL:https://seekai.cc/v1。", "sap": "模型探索使用 AI_API_URL 上的 /v2/lm/scenarios/foundation-models/models。聊天請求使用 deploymentUrl/chat/completions,並需要 AI-Resource-Group。", "sarvam": "使用API Key連接Sarvam AI。", "scaleway": "新帳戶贈送 100 萬免費 tokens — 符合歐盟/GDPR 規範(巴黎),Qwen3 235B 和 Llama 70B", @@ -6309,7 +6312,7 @@ "claude": "使用現有的 OAuth 流程連線 Claude Code。", "cline": "使用現有的 OAuth 流程連線 Cline。", "cursor": "使用現有的 OAuth 流程連線 Cursor IDE。", - "cursor-api": "Connect Cursor with a user API key (crsr_...) from cursor.com/dashboard/api; no IDE session needed.", + "cursor-api": "使用 cursor.com/dashboard/api 中的使用者 API 金鑰(crsr_...)連線至 Cursor;不需要 IDE 工作階段。", "github": "使用現有的 OAuth 流程連線 GitHub Copilot。", "gitlab-duo": "具有 ai_features + read_user 範圍的 OAuth 應用程式。在此 OmniRoute 實例上設定 GITLAB_DUO_OAUTH_CLIENT_ID 和可選的 GITLAB_DUO_OAUTH_CLIENT_SECRET。", "kilocode": "使用現有的 OAuth 流程連線 Kilo Code。", @@ -6342,20 +6345,20 @@ "webSessionGuideStep3": "從提供者自己的域複製所需的憑據。對於 cookie,僅複製 Cookie 標頭值並省略 Cookie:。", "webSessionGuideStep3Manual": "手動路徑:打開瀏覽器開發者工具 (F12 → 網路),刷新頁面,打開一個經過身份驗證的請求,並從請求標頭中複製 Cookie 標頭值 — 省略 Cookie: 前綴。", "webSessionGuideStep4": "將其貼上到此處並檢查連線。如果它停止工作,請重新登入並將其替換為新值。", - "harImportButtonLabel": "Import .har file", - "harImportButtonBusy": "Importing…", - "harImportButtonHint": "Export from DevTools Network tab after sending at least one chat message.", - "harImportStatusValid": "Imported — valid for ~{minutes}m.", - "harImportStatusExpiringSoon": "Imported — valid for only ~{minutes}m more.", - "harImportStatusExpired": "Imported, but this token already expired ({minutes}m ago) — export a fresh HAR.", - "harImportStatusUnknownExpiry": "Imported. Couldn't read its expiry.", - "harImportErrorNotJson": "That file isn't valid JSON — is it really a .har export?", - "harImportErrorNoEntries": "This HAR has no network entries recorded.", - "harImportErrorNoChathubUrl": "No Copilot chat connection found in this HAR. Send at least one chat message in m365.cloud.microsoft before exporting.", - "harImportErrorUnparsableUrl": "Found the chat connection, but couldn't read its URL.", - "harImportErrorMissingFields": "Found the chat connection, but the token was missing from it.", - "harImportErrorReadFailed": "Couldn't read that file.", - "harImportErrorUnknown": "Couldn't extract a credential from that HAR file.", + "harImportButtonLabel": "匯入 .har 檔案", + "harImportButtonBusy": "正在匯入…", + "harImportButtonHint": "傳送至少一則聊天訊息後,從 DevTools 的 Network 分頁匯出。", + "harImportStatusValid": "已匯入 — 約可使用 {minutes} 分鐘。", + "harImportStatusExpiringSoon": "已匯入 — 僅剩約 {minutes} 分鐘有效。", + "harImportStatusExpired": "已匯入,但此權杖已於 {minutes} 分鐘前過期 — 請匯出新的 HAR。", + "harImportStatusUnknownExpiry": "已匯入,但無法讀取其到期時間。", + "harImportErrorNotJson": "該檔案不是有效的 JSON — 確定它是 .har 匯出檔嗎?", + "harImportErrorNoEntries": "此 HAR 未記錄任何網路項目。", + "harImportErrorNoChathubUrl": "在此 HAR 中找不到 Copilot 聊天連線。請先在 m365.cloud.microsoft 傳送至少一則聊天訊息再匯出。", + "harImportErrorUnparsableUrl": "已找到聊天連線,但無法讀取其 URL。", + "harImportErrorMissingFields": "已找到聊天連線,但其中缺少權杖。", + "harImportErrorReadFailed": "無法讀取該檔案。", + "harImportErrorUnknown": "無法從該 HAR 檔案擷取憑證。", "webSessionSecurityHint": "將其視為密碼:它可以訪問您登入的網路帳戶,直到其過期或被撤銷。", "webNoAuthGuideTitle": "無需任何憑證", "webNoAuthGuideBody": "{provider} 不需要 API 金鑰或 cookie。儲存連線以使用其免費 Web 端點。", @@ -6368,11 +6371,11 @@ "poeWebDesc": "通過 poe.com 進行多模型聊天", "veniceWebLabel": "威尼斯網路", "veniceWebDesc": "隱私專注的 AI 聊天", - "v0VercelWebLabel": "v0 Vercel Web", + "v0VercelWebLabel": "v0 Vercel 網頁版", "v0VercelWebDesc": "通過 v0.dev 的 AI 程式碼生成", - "kimiWebLabel": "Kimi Web", + "kimiWebLabel": "Kimi 網頁版", "kimiWebDesc": "通過 www.kimi.com 訪問 Moonshot AI 聊天(國際版,Connect-RPC API)", - "doubaoWebLabel": "Dola Web", + "doubaoWebLabel": "Dola 網頁版", "doubaoWebDesc": "通過 dola.com 訪問字節跳動 AI 聊天", "overrideBaseUrlAdvanced": "進階:覆寫基礎 URL", "overrideBaseUrlHint": "進階:將此內建提供者指向自訂端點。留空以使用預設值。", @@ -6429,14 +6432,19 @@ "commandCodeAuthExpired": "命令碼授權已過期", "commandCodeConnected": "命令碼已連接", "commandCodeConnectionAdded": "命令碼連接已添加", + "clearConnectionCooldown": "清除冷卻", + "clearConnectionCooldownInProgress": "正在清除…", + "clearConnectionCooldownTitle": "立即清除冷卻——當上游配額已重新整理時使用", "commandCodeLinkExpired": "命令碼連結已過期", "commandCodeOpeningStudio": "正在開啟 Command Code Studio…", "commandCodePopupBlocked": "彈出窗口被阻止。請允許彈出窗口並再次嘗試 Command Code Connect。", "commandCodeStartFailed": "無法啟動 Command Code auth", "connectionDeleted": "連線已刪除", "connectionFallback": "連接", + "connectionCooldownCleared": "冷卻已清除——連線已重新加入路由", "coolingConnectionsDescription": "這些連線在上次請求後正在冷卻。計時器到期前 OmniRoute 會跳過它們 — 無需手動停用。", "coolingConnectionsTitle": "目前冷卻中 ({count})", + "failedClearConnectionCooldown": "清除冷卻失敗", "failedDeleteAlias": "無法刪除別名", "failedDeleteConnection": "無法刪除連接", "failedDistributeProxies": "無法分配代理。", @@ -6470,12 +6478,7 @@ "savedModelEndpointSettings": "已儲存的模型端點設定", "searchByModelAria": "按型號搜尋", "selectSupportedEndpoint": "請選擇至少一個受支持的端點", - "antigravityClientProfileHarness": "Harness / CLI", - "clearConnectionCooldown": "Clear cooldown", - "clearConnectionCooldownInProgress": "Clearing…", - "clearConnectionCooldownTitle": "Clear the cooldown now — use when the quota has already refreshed upstream", - "connectionCooldownCleared": "Cooldown cleared — connection rejoined routing", - "failedClearConnectionCooldown": "Failed to clear cooldown" + "antigravityClientProfileHarness": "Harness / CLI" }, "settings": { "title": "設定", @@ -6694,12 +6697,12 @@ "autoDisableDescription": "若提供者連線返回特定的永久封禁訊號(如 HTTP 403\"請驗證您的帳戶\"),則將其永久標記為停用。這會將其從組合輪換中移除。", "autoDisableThreshold": "封禁閾值", "autoDisableThresholdDesc": "觸發永久停用所需的連續封禁訊號次數。", - "autoDisableBannedScope": "Apply auto-disable to", - "autoDisableBannedScopeDesc": "Login seats (paid subscriptions and free accounts) can be locked by the upstream if OmniRoute keeps retrying after a ban. Paid prepaid API keys do not have that risk — leave them in the pool so fill-first can use the next key.", - "autoDisableBannedScopeAll": "All connections", - "autoDisableBannedScopeAllDesc": "Deactivate every connection that returns a permanent ban signal, including prepaid API keys.", - "autoDisableBannedScopeSubscription": "Login / subscription accounts only", - "autoDisableBannedScopeSubscriptionDesc": "Deactivate OAuth, cookie, session, and web-login seats (paid or free). Prepaid API keys stay active so routing can fail over.", + "autoDisableBannedScope": "套用自動停用至", + "autoDisableBannedScopeDesc": "如果 OmniRoute 在遭封鎖後持續重試,登入席位(付費訂閱和免費帳戶)可能會被上游鎖定。付費預付 API 金鑰沒有此風險——請將它們保留在集區中,讓優先填滿策略可以使用下一把金鑰。", + "autoDisableBannedScopeAll": "所有連線", + "autoDisableBannedScopeAllDesc": "停用所有傳回永久封鎖訊號的連線,包括預付 API 金鑰。", + "autoDisableBannedScopeSubscription": "僅限登入/訂閱帳戶", + "autoDisableBannedScopeSubscriptionDesc": "停用 OAuth、Cookie、工作階段和網頁登入席位(付費或免費)。預付 API 金鑰會保持啟用,以便路由可進行容錯移轉。", "customBannedSignals": "禁止關鍵字", "customBannedSignalsDesc": "觸發永久帳戶封鎖偵測的額外關鍵字。內建關鍵字始終適用。", "customBannedSignalsPlaceholder": "例如:api key revoked", @@ -6755,18 +6758,18 @@ "sidebarVisibility": "隱藏側邊欄專案", "sidebarVisibilityDesc": "可以隱藏任意側邊欄導航項,以減少視覺負擔,但不會停用任何功能", "sidebarVisibilityHint": "當某個側邊欄分組中的所有專案都被隱藏時,該分組會自動隱藏", - "presetAll": "All", - "presetAllDesc": "Show everything", - "presetEssentials": "Essentials", - "presetEssentialsDesc": "Beginner path - Advanced tools stay searchable", - "presetMinimal": "Minimal", - "presetMinimalDesc": "Core pages only", - "presetDeveloper": "Developer", - "presetDeveloperDesc": "Dev & proxy tools", - "presetAdmin": "Admin", - "presetAdminDesc": "Monitoring & audit", - "settingsSidebarTitle": "Sidebar Customization", - "settingsSidebarDesc": "Choose which sidebar items to show. Essentials keeps Advanced tools searchable.", + "presetAll": "全部", + "presetAllDesc": "顯示所有項目", + "presetEssentials": "基本項目", + "presetEssentialsDesc": "新手模式——進階工具仍可透過搜尋找到", + "presetMinimal": "最精簡", + "presetMinimalDesc": "僅核心頁面", + "presetDeveloper": "開發人員", + "presetDeveloperDesc": "開發與 Proxy 工具", + "presetAdmin": "管理員", + "presetAdminDesc": "監控與稽核", + "settingsSidebarTitle": "自訂側邊欄", + "settingsSidebarDesc": "選擇要顯示的側邊欄項目。「基本項目」模式仍可透過搜尋找到進階工具。", "hideHealthLogs": "隱藏健康檢查日誌", "hideHealthLogsDesc": "開啟後,將抑制伺服器控制台中的 [HealthCheck] 訊息", "themeAccent": "主題顏色", @@ -7067,7 +7070,7 @@ "costOptDesc": "優先選擇成本最低的可用帳戶", "resetAware": "復位感知RR", "resetAwareDesc": "優先選擇剩餘配額正常且重置時間較近的帳戶", - "quotaWeighted": "Quota-Weighted", + "quotaWeighted": "配額加權", "quotaWeightedDesc": "Skip exhausted accounts, then pick among the rest in proportion to reset-aware leftover.", "strictRandom": "嚴格隨機", "strictRandomDesc": "洗牌池模式:每個帳戶使用一次後再重新洗牌", @@ -7089,14 +7092,14 @@ "providerAccountRoutingDesc": "覆寫此提供者的全域帳號策略(9router 對等)。", "providerRoutingStrategy": "帳號策略", "providerRoutingInheritGlobal": "繼承全域預設", - "quotaPreflightTitle": "Quota Preflight Cutoff", - "quotaPreflightSubtitle": "Skip accounts that are out of quota before sending the request upstream", - "quotaPreflightEnable": "Enable quota preflight", - "quotaPreflightEnableDesc": "Before each request, check the account's remaining quota (5h / weekly / monthly windows). Accounts at or below the cutoff are skipped without an upstream call. Per-window cutoffs set on the Provider Quota page always win over the default here.", - "quotaPreflightCutoff": "Global cutoff (min remaining %)", - "quotaPreflightCutoffDesc": "Stop using an account when its remaining quota drops to this percent or below, for every window without its own cutoff. Matches the remaining-% bars on the Provider Quota page.", - "quotaPreflightWindowsHint": "Windows with their own per-window or per-provider cutoff (set in the Cutoff modal on the Provider Quota page) are unaffected by this default.", - "quotaPreflightLoadFailed": "Unable to load quota preflight settings.", + "quotaPreflightTitle": "配額預檢截止值", + "quotaPreflightSubtitle": "在將請求傳送至上游前,略過配額已用盡的帳戶", + "quotaPreflightEnable": "啟用配額預檢", + "quotaPreflightEnableDesc": "在每次請求前,檢查帳戶的剩餘配額(5 小時/每週/每月時段)。達到或低於截止值的帳戶將被略過,不會呼叫上游。在「提供者配額」頁面設定的各時段截止值,一律優先於此處的預設值。", + "quotaPreflightCutoff": "全域截止值(最低剩餘 %)", + "quotaPreflightCutoffDesc": "對於沒有個別截止值的所有時段,當帳戶的剩餘配額降至此百分比或更低時,停止使用該帳戶。此數值與「提供者配額」頁面上的剩餘百分比長條圖一致。", + "quotaPreflightWindowsHint": "具有各時段或各提供者專屬截止值(在「提供者配額」頁面的「截止值」對話方塊中設定)的時段不受此預設值影響。", + "quotaPreflightLoadFailed": "無法載入配額預檢設定。", "modelAliases": "模型別名", "modelAliasesTitle": "模型別名", "modelAliasesDesc": "使用精確匹配或萬用字元模式重對映模型名稱。", @@ -7329,7 +7332,7 @@ "configured": "已設定", "none": "無", "modelOverrideValuePlaceholder": "數值", - "modelOverrideReasoningEffortsPlaceholder": "English comma-separated, e.g. low, medium, high", + "modelOverrideReasoningEffortsPlaceholder": "以英文逗號分隔,例如 low, medium, high", "addKeyValue": "新增鍵值", "noModelOverrides": "此模型未設定任何覆寫。", "modelOverrideLoadFailed": "載入模型覆寫設定失敗", @@ -7415,8 +7418,8 @@ "resetting": "正在重設⋯", "contextOpt": "上下文最佳化", "contextOptDesc": "根據上下文視窗需求和對話長度進行路由", - "cacheOpt": "Cache Optimized", - "cacheOptDesc": "Keeps the same reusable prompt prefix on the same provider account", + "cacheOpt": "快取最佳化", + "cacheOptDesc": "讓相同的可重複使用提示詞前綴固定使用同一個提供者帳戶", "priorityDesc": "順序回退——先嚐試提供者 1,再嘗試提供者 2,依此類推", "weightedDesc": "按百分比權重在各提供者之間分配流量", "modelRoutingTitle": "模型路由規則", @@ -7475,7 +7478,7 @@ "compressionGuidanceHide": "隱藏詳細資訊", "compressionGuidanceSafeDefault": "安全預設", "compressionGuidanceCacheImpact": "快取影響", - "tokenSaverTitle": "Token Saver", + "tokenSaverTitle": "權杖節省器", "tokenSaverSubtitle": "讓每次請求消耗更少 token。", "tokenSaverToolOutput": "工具輸出", "tokenSaverToolOutputDesc": "在傳送給提供者前清理 git、grep、ls、tree 和日誌輸出。", @@ -7530,7 +7533,7 @@ "compressionExclusionsPlaceholder": "例如claude-opus*", "compressionExclusionsSave": "保存排除規則", "compressionExclusionsSaved": "排除規則已保存。", - "compressionExclusionsCount": "{count, plural, one {# exclusion} other {# exclusions}} configured", + "compressionExclusionsCount": "已設定 {count, plural, one {# 個排除項目} other {# 個排除項目}}", "compressionExclusionsEmpty": "尚未設定排除規則—所有模型和端點均可壓縮。", "compressionCavemanConfig": "Caveman 引擎設定", "compressionCavemanConfigDesc": "微調基於規則的壓縮引擎", @@ -7549,8 +7552,8 @@ "minutes": "分鐘", "compressionModeRtk": "RTK", "compressionModeRtkDesc": "感知命令的工具輸出過濾", - "compressionModeCodexResponses": "Responses tool output", - "compressionModeCodexResponsesDesc": "Conservative compression for eligible shell, patch, search, build, and JSON outputs", + "compressionModeCodexResponses": "Responses 工具輸出", + "compressionModeCodexResponsesDesc": "針對符合條件的 shell、修補、搜尋、建置及 JSON 輸出進行保守壓縮", "compressionModeStacked": "堆疊", "compressionModeStackedDesc": "先進行 RTK 工具輸出過濾,再進行 Caveman 訊息壓縮", "qdrantTitle": "Qdrant(向量記憶體)", @@ -7605,8 +7608,8 @@ "resilienceRequestsPerMinute": "每分鐘請求數", "resilienceMinTimeBetweenRequests": "請求之間的最小時間", "resilienceConcurrentRequests": "併發請求數", - "resilienceConnectionScopeConcurrentRequests": "__MISSING__:Concurrent requests per connection/quota scope", - "resilienceGlobalConcurrentRequests": "__MISSING__:Global concurrent upstream requests (0 = disabled)", + "resilienceConnectionScopeConcurrentRequests": "每個連線/配額範圍的並行請求數", + "resilienceGlobalConcurrentRequests": "全域並行上游請求數(0 = 停用)", "resilienceMaxQueueWaitTime": "最大佇列等待時間", "resilienceBaseCooldown": "基礎冷卻時間", "resilienceUseUpstreamRetryHints": "使用上游重試提示", @@ -7703,7 +7706,7 @@ "resilienceMaxBackoffSteps": "最大退避步數", "resilienceProviderBreakerTitle": "按提供者的斷路器", "resilienceFailureThreshold": "失敗閾值", - "resilienceDegradationThreshold": "Degradation threshold", + "resilienceDegradationThreshold": "降級閾值", "resilienceResetTimeout": "重置超時", "resilienceFailureThresholdLabel": "失敗閾值", "resilienceResetTimeoutLabel": "重置超時", @@ -7745,6 +7748,10 @@ "legacyJsonImportSuccess": "舊版 JSON 匯入成功!", "jsonImportFailed": "匯入 JSON 失敗", "jsonImportError": "JSON 匯入時發生錯誤", + "jsonImportAuthRequired": "匯入舊版 JSON 設定需要驗證身分。請先登入或完成設定。", + "databaseSettingsAuthRequiredTitle": "需要驗證身分", + "databaseSettingsAuthRequiredBody": "資料庫設定和 JSON 匯入功能僅供已驗證身分的管理員使用。請登入或完成設定,以檢視及編輯這些內容。", + "databaseSettingsAuthRequiredCta": "登入", "storagePurgeData": "清除資料", "storagePurgeDataDesc": "立即刪除所有記錄,不套用保留檢查。請謹慎使用。", "storageRetentionCleanup": "保留設定", @@ -7838,7 +7845,7 @@ "compressionAdaptivePolicyAbsolute": "絕對 token 預算", "compressionOutputStylesDescription": "注入回應塑形指令,無需改寫提供者輸出。可自由組合。", "mcpAccessibilityDescription": "限定 MCP 工具輸出範圍(獨立儲存區)。", - "compressionStylesTileSummary": "{tokens, number} tokens saved · {runs, plural, one {# run styled} other {# runs styled}}", + "compressionStylesTileSummary": "已節省 {tokens, number} 個權杖 · {runs, plural, one {# 次執行已套用樣式} other {# 次執行已套用樣式}}", "compressionStylesTileEmpty": "尚無已套用風格的執行。", "compressionLevel": { "minimal": "最小", @@ -7866,8 +7873,8 @@ "description": "命令輸出過濾。" }, "codex-responses": { - "label": "Responses Tool Output", - "description": "Conservative compression for supported Responses tool outputs." + "label": "Responses 工具輸出", + "description": "針對支援的 Responses 工具輸出進行保守壓縮。" }, "headroom": { "label": "精簡", @@ -7908,8 +7915,8 @@ "description": "YAGNI 階梯:最小可行變更,不建立未要求的抽象層。" }, "ponytail": { - "label": "Ponytail (lazy senior dev)", - "description": "Lazy senior-dev discipline: climb the YAGNI ladder, fix root cause, smallest working diff." + "label": "馬尾(懶惰的資深開發者)", + "description": "懶惰資深開發者的紀律:逐步攀登 YAGNI 階梯、修正根本原因,並採用可運作的最小差異。" }, "i-have-adhd": { "label": "我有 ADHD(行動優先)", @@ -7931,6 +7938,14 @@ "cliproxyapiFallback": "CLIProxyAPI 後備", "cliproxyapiEnableFallback": "啟用 CLIProxyAPI 回退", "cliproxyapiUrl": "CLIProxyAPI URL", + "headroomProxyTitle": "Headroom Proxy", + "headroomProxyDesc": "選用 Headroom 權杖節省 Proxy 的 URL。留空時使用 HEADROOM_URL 或 http://localhost:8787。", + "headroomProxyUrl": "Headroom URL", + "headroomProxyUrlHint": "可從此頁面啟動迴送 URL。外部 URL 則只會進行探測。", + "headroomProxySave": "儲存", + "headroomProxyStart": "啟動", + "headroomProxyStop": "停止", + "headroomProxyExternalHint": "此 URL 並非迴送位址,因此 OmniRoute 不會啟動本機 CLI。", "cliproxyapiStatus": "CLIProxyAPI 狀態", "cliproxyapiNotDetected": "未檢測到", "cliproxyapiImportAuthTitle": "從 CLIProxyAPI 匯入帳戶", @@ -7938,11 +7953,11 @@ "cliproxyapiImportAuthButton": "匯入帳戶", "payloadRulesTitle": "負載規則", "payloadRulesDesc": "按模型與協議設定請求 payload 的變更。修改會持久化到設定中,並在儲存後立即熱載入到執行時。", - "payloadRuleDefaultTitle": "default", + "payloadRuleDefaultTitle": "預設", "payloadRuleDefaultDesc": "僅在外發 payload 缺少目標路徑時應用引數。", - "payloadRuleOverrideTitle": "override", + "payloadRuleOverrideTitle": "覆寫", "payloadRuleOverrideDesc": "強制將值寫入 payload,替換該路徑上已存在的任何內容。", - "payloadRuleFilterTitle": "filter", + "payloadRuleFilterTitle": "篩選", "payloadRuleFilterDesc": "在向上游發起請求前,從 payload 中移除被遮蔽的引數。", "payloadRuleDefaultRawTitle": "defaultRaw", "payloadRuleDefaultRawDesc": "與 default 類似,但會先嚐試將字串值解析為 JSON。儲存時也接受舊的輸入別名 default-raw。", @@ -7989,11 +8004,11 @@ "codexFastTierDesc": "為 OpenAI Codex 請求全域性注入 service_tier=priority。", "codexFastTierHint": "啟用後,OmniRoute 會將 service_tier=priority 新增到尚未指定層的連線的出站 Codex 請求中。優先順序需要 OpenAI Enterprise API 金鑰或 ChatGPT-auth Codex 路徑;其他金鑰類型將從 OpenAI 收到與層相關的錯誤。 Codex 提供程式頁面上的每個連線設定優先。", "codexFastTierSaveError": "無法更新 Codex Fast Tier 設定", - "codexAutoPingTitle": "Codex Quota Auto-Ping", - "codexAutoPingDesc": "Opt-in per connection: sends a tiny request right after a Codex session window resets so it isn't cold when you need it.", - "codexAutoPingWarning": "Consumes a small amount of real Codex quota on every ping. Off by default — enable only for connections you actively rely on.", - "codexAutoPingSaveError": "Failed to update Codex Auto-Ping setting", - "codexAutoPingToggleAria": "Toggle Codex quota auto-ping for {connection}", + "codexAutoPingTitle": "Codex 配額自動 Ping", + "codexAutoPingDesc": "可為每個連線選擇啟用:在 Codex 工作階段視窗重設後立即傳送一個極小的請求,避免在您需要使用時處於冷啟動狀態。", + "codexAutoPingWarning": "每次 Ping 都會消耗少量實際 Codex 配額。預設關閉——請只為您經常仰賴的連線啟用。", + "codexAutoPingSaveError": "無法更新 Codex 自動 Ping 設定", + "codexAutoPingToggleAria": "切換 {connection} 的 Codex 配額自動 Ping", "codexFastTierTierLabel": "服務層級", "codexFastTierTierPriority": "優先順序", "codexFastTierTierFlex": "彈性", @@ -8212,8 +8227,8 @@ "credentialRedactionDesc": "從傳送給提供者的上下文和回應中編輯 API 金鑰、令牌和機密。", "enableCredentialRedaction": "啟用憑證遮蔽", "enableCredentialRedactionDesc": "從訊息、工具呼叫和回應中清除 API 金鑰、令牌、私鑰和 JWT。", - "pricingAutoSyncDisabled": "Automatic Sync Disabled", - "pricingAutoSyncEnabled": "Automatic Sync Enabled", + "pricingAutoSyncDisabled": "自動同步已停用", + "pricingAutoSyncEnabled": "自動同步已啟用", "modalityBridgeIntro": "在多模態內容送達純文字模型之前將其轉換為文字。視覺、音訊和影片橋接均可使用及設定。", "modalityBridgeVisionTab": "視覺", "modalityBridgeAudioTab": "音訊", @@ -8364,15 +8379,7 @@ "cliproxyapiHealth": "健康", "cliproxyapiPort": "埠", "qdrantHost": "主機", - "qdrantCollection": "集合", - "headroomProxyTitle": "__MISSING__:Headroom proxy", - "headroomProxyDesc": "__MISSING__:URL of the optional Headroom token-saver proxy. Empty uses HEADROOM_URL or http://localhost:8787.", - "headroomProxyUrl": "__MISSING__:Headroom URL", - "headroomProxyUrlHint": "__MISSING__:Loopback URLs can be started from this page. External URLs are probed only.", - "headroomProxySave": "__MISSING__:Save", - "headroomProxyStart": "__MISSING__:Start", - "headroomProxyStop": "__MISSING__:Stop", - "headroomProxyExternalHint": "__MISSING__:This URL is not loopback, so OmniRoute will not spawn the local CLI." + "qdrantCollection": "集合" }, "contextRtk": { "title": "RTK 引擎", @@ -8499,7 +8506,7 @@ "description": "同質 JSON 陣列的無損表格壓縮,具備明確的行數標記。" }, "session-dedup": { - "name": "Session Dedup", + "name": "工作階段去重", "description": "跨輪次的重複區塊去重,具備可復原的內容標記。" }, "ccr": { @@ -8661,6 +8668,8 @@ "contextEditingNote": "目前僅適用於 Claude(Anthropic)。這是一種委託模式:提供者會在伺服器端清除舊的工具使用區塊 — 我們不會重寫訊息。不影響其他提供者。", "namedCombos": "命名組合", "namedCombosDescription": "儲存不同的管道並將其指派給特定的路由組合。", + "activeProfileMasterSwitchOffWarning": "在開啟主「提示詞壓縮」開關之前,以下啟用中的設定檔不會執行。", + "activeProfileMasterSwitchOffCta": "前往「設定」開啟", "comboNamePlaceholder": "組合名稱", "descriptionPlaceholder": "說明", "nameRequired": "請在儲存前輸入組合名稱。", @@ -8674,9 +8683,7 @@ "languagePacksList": "語言包:{packs}", "dragToReorder": "拖曳以重新排序步驟", "engine": "引擎", - "intensity": "強度", - "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", - "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" + "intensity": "強度" }, "compressionStudio": { "noRun": "無可用的壓縮執行記錄。", @@ -8705,7 +8712,7 @@ "run": "執行", "laneRejected": "已拒絕:{reason}", "error": "錯誤", - "combinedError": "__MISSING__:Combined pipeline preview failed: {reason}", + "combinedError": "合併管線預覽失敗:{reason}", "combinedFlow": "組合流程", "eachLayer": "各圖層分開", "diff": "差異", @@ -8780,27 +8787,27 @@ }, "enableTitle": "啟用引擎", "enableDescription": "在堆疊中最後執行(RTK/Caveman 清理文字後,OmniGlyph 將剩餘部分轉換為圖片),也可透過 omniglyph 模式獨立執行。此為預覽功能,預設為關閉,待端到端驗證完成後才會預設開啟。", - "profileTitle": "Compression profile", - "profileDescription": "The profile is a ceiling, not a floor: a stricter profile cannot be reopened by a per-step override. Measured on this codebase: with coding-safe or balanced, a session that has not accumulated history yet compresses nothing, because both raise the minimum-characters threshold and keep the system prompt, tool schemas and tool results native.", + "profileTitle": "壓縮設定檔", + "profileDescription": "設定檔是上限,而非下限:個別步驟的覆寫無法重新放寬更嚴格的設定檔。根據此程式碼庫的測量結果:使用程式設計安全或平衡模式時,尚未累積歷史記錄的工作階段不會壓縮任何內容,因為兩者都會提高最低字元數門檻,並讓系統提示詞、工具結構描述及工具結果維持原生格式。", "profiles": { "aggressive": { - "label": "Aggressive (default)", - "description": "The policy the published receipts measured. Images the system prompt, tool documentation and dense history." + "label": "積極(預設)", + "description": "已發布收據所測量的原則。將系統提示詞、工具文件及密集歷史記錄映像化。" }, "balanced": { - "label": "Balanced", - "description": "Keeps live state native and protects the last 8 turns; only collapses older closed history." + "label": "平衡", + "description": "讓即時狀態維持原生格式,並保護最近 8 輪對話;僅摺疊較舊且已結束的歷史記錄。" }, "codingSafe": { - "label": "Coding-safe", - "description": "Keeps authority, tool schemas and live tool output native, protecting the last 12 turns. Compresses nothing until the session accumulates history." + "label": "程式設計安全", + "description": "讓權限指令、工具結構描述及即時工具輸出維持原生格式,並保護最近 12 輪對話。在工作階段累積歷史記錄之前,不會壓縮任何內容。" }, "passthrough": { - "label": "Passthrough", - "description": "Routes without transforming. The engine is skipped and the request is forwarded untouched." + "label": "直接傳遞", + "description": "進行路由但不轉換。系統會略過引擎,並原封不動地轉送請求。" } }, - "profileAria": "Select the OmniGlyph compression profile", + "profileAria": "選取 OmniGlyph 壓縮設定檔", "saved": "已儲存。", "saveFailed": "無法儲存。", "enableAria": "啟用 OmniGlyph 引擎", @@ -8858,7 +8865,7 @@ "networkInstallFailed": "網路錯誤 — 無法連線至安裝端點", "availableModels": "可用模型", "modelsLoading": "載入中…", - "modelsDiscovered": "{count, plural, one {# model discovered} other {# models discovered}}", + "modelsDiscovered": "{count, plural, one {探索到 # 個模型} other {探索到 # 個模型}}", "modelsLoadFailed": "載入模型失敗", "refreshing": "重新整理中…", "refreshNow": "立即重新整理", @@ -8873,7 +8880,7 @@ "providerExposureHint": "啟用後,發現的模型會出現在 OmniRoute 各處的提供者選擇器中。", "providerExposureUpdateFailed": "更新失敗(HTTP {status})", "providerExposureNetworkFailed": "網路錯誤 — 無法更新提供者曝光設定", - "webUi": "9Router Web UI", + "webUi": "9Router 網頁介面", "openNewTab": "在新分頁中開啟", "filterLogs": "篩選日誌…", "resume": "繼續", @@ -9250,7 +9257,7 @@ "compressionPreviewButton": "預覽壓縮", "compressionPreviewing": "正在預覽…", "compressionPreviewFailed": "壓縮預覽失敗", - "tokens": "tokens", + "tokens": "權杖", "pauseAutoRefresh": "暫停自動重新整理", "resumeAutoRefresh": "繼續自動重新整理", "live": "即時", @@ -9636,18 +9643,18 @@ "budgetKpiActiveKeys": "活動鍵", "budgetPageTitle": "預算", "budgetPageDescription": "為每個 API 金鑰設定每日、每週和每月的支出限制。", - "budgetTemplateStorageHint": "{count, plural, one {# template} other {# templates}} · edit via localStorage:", + "budgetTemplateStorageHint": "{count, plural, one {# 個範本} other {# 個範本}} · 透過 localStorage 編輯:", "budgetAboveLimitShort": "超出限制 ⚠", "budgetOnTrackShort": "正常範圍", "budgetAtOrAboveWarning": "≥ 警告閾值", "budgetTemplates": "模板", "budgetSelectKeysFirst": "請先選取金鑰再套用", - "budgetApplyToSelected": "Apply to {count, plural, one {# selected key} other {# selected keys}}", - "budgetSelectedTemplateHint": "{count, plural, one {# selected} other {# selected}} · click a template to apply", + "budgetApplyToSelected": "套用至 {count, plural, one {# 個已選取的金鑰} other {# 個已選取的金鑰}}", + "budgetSelectedTemplateHint": "{count, plural, one {已選取 # 個} other {已選取 # 個}} · 按一下範本以套用", "budgetTemplateMonthlyAmount": "${amount}/月", "budgetTemplateDailyAmount": "${amount}/天", "budgetNoKeysSelected": "未選取任何金鑰", - "budgetTemplateApplied": "Applied \"{template}\" to {count, plural, one {# key} other {# keys}}", + "budgetTemplateApplied": "已將「{template}」套用至 {count, plural, one {# 個金鑰} other {# 個金鑰}}", "budgetTemplateApplyFailed": "套用模板失敗", "budgetTemplateNames": { "tpl-prod": "生產", @@ -10785,23 +10792,23 @@ }, "cursorAuthModal": { "title": "連線 Cursor IDE", - "tabLogin": "Login with Cursor", - "tabImport": "Import token", - "loginDescription": "Opens Cursor's browser login. Works in Docker — approve in your host browser, then return here.", - "loginWithCursor": "Login with Cursor", - "startingLogin": "Starting…", - "waitingApproval": "Waiting for Cursor login approval…", - "openUrlHint": "If the browser did not open:", - "openLoginLink": "Open login page", - "cancelLogin": "Cancel login", + "tabLogin": "使用 Cursor 登入", + "tabImport": "匯入權杖", + "loginDescription": "開啟 Cursor 的瀏覽器登入頁面。可在 Docker 中使用——請在主機瀏覽器中核准,然後返回此處。", + "loginWithCursor": "使用 Cursor 登入", + "startingLogin": "正在啟動…", + "waitingApproval": "正在等待核准 Cursor 登入…", + "openUrlHint": "如果瀏覽器未開啟:", + "openLoginLink": "開啟登入頁面", + "cancelLogin": "取消登入", "autoDetecting": "自動檢測權杖中...", "readingFromCursor": "正在從 Cursor IDE 或 cursor-agent 讀取", "tokensAutoDetected": "已成功從 Cursor IDE 自動檢測到權杖!", "cursorNotDetected": "未檢測到 Cursor IDE。請手動貼上您的權杖。", - "dockerImportHint": "Running in Docker? Prefer Login with Cursor. IDE auto-import and cursor-agent are usually unavailable inside the container. See docs/providers/CURSOR-DOCKER.md.", + "dockerImportHint": "在 Docker 中執行?建議使用「使用 Cursor 登入」。IDE 自動匯入和 cursor-agent 通常無法在容器內使用。請參閱 docs/providers/CURSOR-DOCKER.md。", "accessToken": "訪問權杖", - "refreshToken": "Refresh Token", - "refreshTokenPlaceholder": "Optional — enables automatic token refresh", + "refreshToken": "重新整理權杖", + "refreshTokenPlaceholder": "選填——啟用權杖自動重新整理", "required": "*", "accessTokenPlaceholder": "訪問權杖將自動填充...", "machineId": "機器 ID", @@ -10814,9 +10821,9 @@ "errorAutoDetectFailed": "自動檢測權杖失敗", "errorEnterToken": "請輸入訪問權杖", "errorImportFailed": "匯入失敗", - "errorLoginStart": "Failed to start Cursor login", - "errorLoginPoll": "Cursor login failed", - "errorLoginTimeout": "Cursor login timed out — try again" + "errorLoginStart": "無法啟動 Cursor 登入", + "errorLoginPoll": "Cursor 登入失敗", + "errorLoginTimeout": "Cursor 登入逾時——請再試一次" }, "pricingModal": { "title": "定價設定", @@ -10961,9 +10968,9 @@ "strategyLatency": "延遲最佳化", "poolMembersLabel": "池成員({count})", "poolNoMembers": "此池中尚無代理。", - "poolEgressObservation": "__MISSING__:{exits, plural, one {# exit} other {# exits}} used by {connections, plural, one {# connection} other {# connections}} · up to {max} on one exit · last {hours} h", - "poolEgressObservationEmpty": "__MISSING__:No traffic observed in the last {hours} h", - "poolEgressObservationHint": "__MISSING__:Counted from the proxy log over the window: distinct egress IPs observed for the members of this pool, and the OmniRoute connections that used them. \"On one exit\" means over the window, not at the same time. The per-IP 429 lockout only pauses connections of the same provider family.", + "poolEgressObservation": "已使用 {exits, plural, one {# 個出口} other {# 個出口}},由 {connections, plural, one {# 個連線} other {# 個連線}} 使用 · 單一出口最多 {max} 個 · 過去 {hours} 小時", + "poolEgressObservationEmpty": "過去 {hours} 小時內未觀察到流量", + "poolEgressObservationHint": "根據代理伺服器記錄在此時間範圍內計算:觀察到此集區成員使用的不同出口 IP,以及使用這些 IP 的 OmniRoute 連線。「單一出口」是指整個時間範圍內,而非同一時間。每個 IP 的 429 鎖定只會暫停同一提供者系列的連線。", "poolRemove": "移除", "poolRemoveFailed": "從池中移除代理失敗", "poolAddLabel": "新增代理", @@ -11005,13 +11012,13 @@ "responses": "回應", "completions": "補全", "images": "圖片生成", - "embeddings": "Embeddings", + "embeddings": "嵌入", "speech": "文本轉語音", "transcription": "音訊轉錄", "video": "影片生成", "music": "音樂生成", "moderations": "審核", - "rerank": "Rerank", + "rerank": "重新排序", "search": "網頁搜尋", "webFetch": "網頁擷取" }, @@ -11136,9 +11143,9 @@ "regenerate": "重新生成", "startConversation": "開始對話 — 請在下方輸入訊息", "role": { - "system": "system", - "user": "user", - "assistant": "assistant" + "system": "系統", + "user": "使用者", + "assistant": "助理" }, "generating": "正在生成...", "typeMessageWithShortcut": "輸入訊息...(Enter 傳送,Shift+Enter 換行)", @@ -11305,12 +11312,12 @@ "account": "帳戶", "apiKey": "API金鑰", "combo": "組合", - "tokens": "Tokens", + "tokens": "權杖數", "compressed": "壓縮", "tps": "TPS", "duration": "時長", "time": "時間", - "conversation": "Conversation", + "conversation": "對話", "ttft": "TTFT" }, "loadingLogs": "正在載入日誌...", @@ -11417,8 +11424,8 @@ "correlationId": "關聯 ID", "correlationIdValue": "關聯 ID: {id}", "detailedPayloadInfo": "如果您想要新請求的四階段客戶端/提供者有效載荷視圖,請先啟用詳細日誌記錄。", - "copyAll": "Copy all", - "copiedAll": "Copied all" + "copyAll": "全部複製", + "copiedAll": "已全部複製" } }, "proxyLogger": { @@ -11681,8 +11688,8 @@ "deleteGroupHasPools": "該組仍然有池 — 請先重新分配或刪除它們。", "ungroupedTitle": "未分組", "ungroupedHint": "這些池未分配給已知組。編輯一個池以將其移動到真實組中。", - "removeFailed": "Could not remove this pool.", - "dismiss": "Dismiss" + "removeFailed": "無法移除此集區。", + "dismiss": "關閉" }, "plugins": { "title": "外掛", @@ -12179,7 +12186,7 @@ "acp": { "title": "ACP 代理", "phrase": "OmniRoute 作為執行後端(反向流)生成的 CLI", - "warning": "Most users can ignore this — use only when an integration requires it.", + "warning": "大多數使用者可忽略此項目——僅在整合需要時使用。", "flow": "客戶端 → OmniRoute → 生成 CLI (stdio/ACP) → 回應", "seeOther": "檢視 →" } @@ -12203,7 +12210,7 @@ "acp": { "title": "Omni 使用的後端 CLI", "desc": "反向執行", - "flow": "Omni → spawn CLI → resp", + "flow": "Omni → 啟動 CLI → 回應", "examples": "例如:claude,codex (ACP)" } }, @@ -12371,7 +12378,7 @@ }, "omni-webhooks": { "name": "Webhook", - "description": "__MISSING__:Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, request.failed, quota.exceeded, etc.) and manage delivery retries." + "description": "註冊、列出、測試及移除 Webhook 端點。設定事件訂閱(request.completed、request.failed、quota.exceeded 等)並管理傳送重試。" }, "omni-mcp": { "name": "MCP 伺服器", @@ -12516,7 +12523,7 @@ "storage": { "label": "儲存", "agent": "動態目錄 (/api/agent-skills) → GitHub 上的 SKILL.md", - "omni": "SQLite (SkillsMP / skills.sh / local)" + "omni": "SQLite(SkillsMP / skills.sh / 本機)" }, "tagline": { "label": "標語", @@ -12589,14 +12596,14 @@ "typeApikey": "API 金鑰", "sortTypeFirst": "最簡單優先", "sortTypeFirstHelp": "按註冊難度分組(無需註冊 → OAuth 登入 → API 金鑰),在各組內保持品質順序", - "sortByReliability": "__MISSING__:Most reliable first", - "sortByReliabilityHelp": "__MISSING__:Order providers by the share of calls that succeeded in the selected window. Providers with too few calls to state a rate keep their score order, below the measured ones.", + "sortByReliability": "最可靠者優先", + "sortByReliabilityHelp": "依所選時段內呼叫成功的比例排列提供者。呼叫次數太少而無法計算成功率的提供者,會保留其評分順序,並列於已有統計結果的提供者之後。", "typeLegend": "無需註冊 = 零設定 · OAuth 登入 = 使用自己的帳戶登入 · API 金鑰 = 自帶金鑰或使用該提供者的免費方案", - "colReliability": "__MISSING__:Reliability", - "colReliabilityHelp": "__MISSING__:Share of calls this provider actually answered over the last 24 hours. A dash means it served too little traffic to state a rate.", - "reliabilitySample": "__MISSING__:{successes} of {requests} calls succeeded in the last {hours}h", - "reliabilityTooFew": "__MISSING__:Only {requests} calls in the last {hours}h — too few to state a rate", - "reliabilityNoTraffic": "__MISSING__:No calls recorded in the last 24h" + "colReliability": "可靠性", + "colReliabilityHelp": "此提供者在過去 24 小時內實際回應的呼叫比例。破折號表示其處理的流量太少,無法計算成功率。", + "reliabilitySample": "過去 {hours} 小時內,{requests} 次呼叫中有 {successes} 次成功", + "reliabilityTooFew": "過去 {hours} 小時內僅有 {requests} 次呼叫——數量太少,無法計算成功率", + "reliabilityNoTraffic": "過去 24 小時內沒有呼叫記錄" }, "discovery": { "title": "提供者探索", @@ -12719,9 +12726,9 @@ }, "badges": { "radar-supporter": { - "name": "Radar Supporter", - "description": "Verified a live OmniRoute Radar supporter feed", - "criteria": "Verify a signed live Radar supporter feed." + "name": "Radar 支援者", + "description": "已驗證即時 OmniRoute Radar 支援者資料來源", + "criteria": "驗證已簽署的即時 Radar 支持者資訊來源。" }, "first-token": { "name": "第一個代幣", @@ -12866,7 +12873,7 @@ "restartFailed": "重新啟動失敗", "resetOverridesFailedHttp": "重設覆寫失敗:HTTP {status}", "resetOverridesFailed": "重設覆寫失敗", - "restartRequiredCount": "{count, plural, one {# change requires} other {# changes require}} a server restart to take effect.", + "restartRequiredCount": "{count, plural, one {# 項變更需要} other {# 項變更需要}}重新啟動伺服器才能生效。", "restartRequiredDescription": "這些旗標僅在程序重新載入後才生效。立即重新啟動或繼續編輯——待處理的旗標會保留在佇列中,直到您確認。", "restartServer": "重新啟動伺服器", "cancel": "取消", @@ -12948,8 +12955,8 @@ "description": "允許每個相容性節點的多重連線。" }, "DISABLE_CONTEXT_WINDOW_CHECKS": { - "label": "Disable Context Window Checks", - "description": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active." + "label": "停用內容視窗檢查", + "description": "針對直接的單一模型請求,略過 OmniRoute 的本機內容視窗與輸入權杖上限檢查。上游提供者仍會強制執行其實際限制。提示詞壓縮與輸出權杖上限仍然有效。" }, "RESPONSES_PASSTHROUGH_DROP_COMMENTARY": { "description": "在將 Responses API 穿透串流轉發至用戶端之前,移除內部註解階段的輸出項目。停用此旗標以接收原始上游註解。" @@ -12985,7 +12992,7 @@ "description": "允許串流復原在位元組已到達用戶端後再次請求回應並將其拼接。" }, "STREAM_RECOVERY_TOOLCALL_ORDER_FIX": { - "description": "__MISSING__:Make mid-stream continuation tool-call safe: never resume a cut stream after a tool call was sent (still in progress or already finished), and stop after one empty continuation instead of using the whole retry budget." + "description": "確保串流中途接續的工具呼叫安全:傳送工具呼叫後(無論仍在進行中或已完成),絕不恢復遭中斷的串流,並在一次空白接續後停止,而非用盡整個重試額度。" }, "STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED": { "description": "當串流在送出任何有用訊框之前關閉,且同一連線上的有限重試已用盡時,容錯移轉一次到同級連線。若沒有可用的同級連線,則回傳原始的 early-EOF 錯誤。關閉:重試後 early-EOF 仍為終止結果。" @@ -13023,13 +13030,17 @@ "SKILLS_SANDBOX_NETWORK_ENABLED": { "description": "在技能沙盒中啟用網路存取。" }, + "SERVER_OWNED_TOOL_LOOP_ENABLED": { + "label": "伺服器端工具迴圈", + "description": "持續執行由伺服器端管理的非串流工具呼叫,直到模型傳回用戶端可用的回應。" + }, "RETRY_AFTER_PROVENANCE_ENABLED": { - "label": "__MISSING__:Retry-After Provenance", - "description": "__MISSING__:On aggregated 429/503 unavailable responses, omit Retry-After when no concrete future retry time is known instead of sending a synthetic 1s, add error.retry_after_provenance, and read prose retry hints on combo drain paths." + "label": "Retry-After 來源", + "description": "對彙總的 429/503 無法使用回應,若無法得知明確的未來重試時間,則省略 Retry-After,而非傳送虛構的 1 秒;新增 error.retry_after_provenance,並讀取組合排空路徑上的文字重試提示。" }, "PROTECTED_PRIORITY_INFRA_502_ENABLED": { - "label": "__MISSING__:Protected-Priority Infra Stops as 502", - "description": "__MISSING__:Answer 502 instead of 503 when a quota-only-fallback priority target stops the combo for a cause that is provably not quota: an open provider circuit breaker or a predictive latency skip." + "label": "受保護優先級基礎設施停止時回傳 502", + "description": "當僅限配額備援的優先目標因可證明並非配額的原因(提供者斷路器開啟或預測性延遲略過)而停止組合時,回應 502 而非 503。" } } }, @@ -13046,7 +13057,7 @@ } }, "comboControl": { - "title": "Combo Control Center", + "title": "組合控制中心", "unavailable": "Combo Control Center 無法使用", "backToCombos": "返回 Combos", "loadFailed": "載入 Combo Control Center 失敗", @@ -13171,8 +13182,8 @@ "segmentHint": "每個區段 = 一個免費池 · 池間去重、誠實計數(無膨脹的速率限制上限)。", "boost": "一次性 $10 OpenRouter 充值即可解鎖約 {tokens}/月(50 → 1000 請求/天)", "uncapped": "永久免費,無公佈上限(有速率限制)——真實存取,不計入標題數字:", - "gated": "__MISSING__:~{tokens}/mo more behind a regional identity check (e.g. mainland-China real-name verification) — real quota, not counted in the headline:", - "tosRestricted": "{count, plural, one {# model} other {# models}} flagged as ToS-restricted — you decide", + "gated": "在區域身分驗證(例如中國大陸實名認證)後,每月可多獲得約 {tokens}——這是實際配額,但不計入醒目標示的數字:", + "tosRestricted": "有 {count, plural, one {# 個模型} other {# 個模型}}被標示為受服務條款限制——由您決定", "provider": "提供者", "model": "模型", "modelName": "模型名稱", @@ -13307,7 +13318,7 @@ "missing": "未指定", "signalOnly": "非離散思考訊號", "requestTags": "請求標籤", - "requestTagsExample": "coding, internal", + "requestTagsExample": "程式設計、內部使用", "tagMode": "標籤匹配模式", "effortMode": "思考強度模式", "targetEffort": "目標思考強度", @@ -13424,92 +13435,92 @@ "tierLive": "實時", "tierCommunity": "社群(30天延遲)", "activateTitle": "啟用雷達", - "activateDescription": "__MISSING__:Compare Community and live access, understand what your installation exchanges, and then choose how to activate Radar.", - "activateButton": "__MISSING__:Activate Community", + "activateDescription": "比較 Community 與即時存取權、瞭解您的安裝環境會交換哪些資料,然後選擇如何啟用 Radar。", + "accessScaleTitle": "啟用前先瞭解 Radar 存取權", + "accessScaleIntro": "在您選擇加入前,Radar 不會進行任何網路活動。請在檢閱這些規則後,選擇 Community 存取權或啟用個人支持者金鑰。", + "accessCommunityRule": "Community——無需金鑰:可存取延遲 30 天的完整目錄。", + "accessSingleUseRule": "加星號並追蹤——GitHub OAuth 驗證兩者後,您的 GitHub 帳戶將獲得一次即時目錄讀取權;之後存取權將恢復為 Community。此一次性存取權無法再次發放給該帳戶。", + "accessContributorRule": "貢獻者——已合併的 PR、提交與程式碼行數只會用於排列每週排名。前 10 名可獲得 365 天;第 11–100 名可獲得 90 天;前 100 名以外的貢獻者無論 PR 數量多少,都不會獲得存取權。離開排名絕不會縮短已獲得的期限。", + "accessSupporterRule": "支持者——一次性購買可獲得 6 個月、1 年或終身存取權,且不會自動續訂。購買、捐款、貢獻者期限與手動授予的期限可累計;終身存取權永遠優先。", + "accessUseTitle": "個人使用、復原與審查", + "accessInstallationRule": "個人授權——一次只能在一個使用中的安裝環境上使用該金鑰。OmniRoute 不會建立硬體指紋。復原程序會撤銷並替換遺失的金鑰,且不會重設其到期日。", + "accessAbuseRule": "濫用審查——24 小時內出現第 4 個不同的 IP 時,只會建立人工審查標記;絕不會自動封鎖或撤銷金鑰。", + "accessOffersRule": "即時優惠由人工精選,可能會變更或到期。", + "privacyTitle": "Radar 會交換哪些資料", + "privacyDownloadsRule": "下載——您的安裝環境會接收經密碼學簽署的目錄與推薦中繼資料;有效的即時金鑰也會解鎖已簽署的優惠與 Intel。", + "privacySendsRule": "傳送——伺服器端同步會將支持者金鑰作為 Bearer 權杖傳送,HTTPS 基礎架構也會接收到連線 IP。資訊來源請求的計量不會以原始形式儲存這兩項資料:只會保留金鑰雜湊、彙總用量,以及每日輪替且經截短的 IP HMAC,以供濫用審查。", + "privacyNeverRule": "絕不收集——提示詞、回應、對話、提供者憑證、模型流量、運作時間、延遲與本機提供者設定絕不會傳送至 Radar。", + "activateButton": "啟用 Community", "activating": "正在啟用...", - "keySectionTitle": "Already have a supporter key?", - "keyInvalidFormatError": "Invalid key format. It must start with \"omr_\" followed by 40 hex characters.", - "activateWithKeyButton": "Activate supporter", - "changeKeyButton": "Change key", - "claimSectionTitle": "Don't have a supporter key yet?", - "contributorButton": "I'm a contributor", - "contributorHint": "__MISSING__:GitHub OAuth checks the current weekly ranking: Top 10 get 365 days and ranks 11–100 get 90 days. PR count alone never grants access outside the Top 100.", - "supporterButton": "Support the project", - "supporterHint": "__MISSING__:One-time 6-month, 1-year, and lifetime options have no automatic renewal; eligible periods accumulate and lifetime prevails.", + "keySectionTitle": "已經有支持者金鑰了嗎?", + "keyInvalidFormatError": "金鑰格式無效。金鑰必須以「omr_」開頭,後接 40 個十六進位字元。", + "activateWithKeyButton": "啟用支持者存取權", + "changeKeyButton": "變更金鑰", + "claimSectionTitle": "還沒有支持者金鑰嗎?", + "contributorButton": "我是貢獻者", + "contributorHint": "GitHub OAuth 會檢查目前的每週排名:前 10 名可獲得 365 天,第 11–100 名可獲得 90 天。僅憑 PR 數量,前 100 名以外的貢獻者絕不會獲得存取權。", + "supporterButton": "支持此專案", + "supporterHint": "一次性的 6 個月、1 年與終身選項均不會自動續訂;符合資格的期限可累計,且終身存取權優先。", "colProvider": "提供者", "colModel": "模型", "colQuota": "配額", + "colLimits": "速率限制", + "trainsOnPrompts": "使用提示詞進行訓練", + "trainsOnPromptsHelp": "此提供者的條款指出,其可能會使用您傳送的提示詞進行訓練。沒有此徽章的模型可能明確表示不會這麼做,也可能未加以說明——未作聲明並不代表有所保證。", + "limitsUnknownHelp": "僅由 Radar 資料來源回報限制;此項目沒有已公布的限制", + "contextUnknownHelp": "此項目的內容窗口未知", + "capabilityUnknownHelp": "資料來源未回報此功能", "colContext": "上下文", "colCapabilities": "能力", "colTos": "服務條款風險", - "colLimits": "__MISSING__:Rate limits", - "trainsOnPrompts": "__MISSING__:Trains on prompts", - "trainsOnPromptsHelp": "__MISSING__:This provider's terms state it may train on the prompts you send. Models without this badge either state they do not, or do not document it — an absent statement is not a guarantee.", - "limitsUnknownHelp": "__MISSING__:Limits reported by Radar feed only; no published limits for this entry", - "contextUnknownHelp": "__MISSING__:Context window unknown for this entry", - "capabilityUnknownHelp": "__MISSING__:Capability not reported by the feed", "newBadge": "新的", "setupGuide": "設置指南", "disabledByFeed": "被雷達數據源禁用", "capTools": "工具", "capVision": "視覺", "capThinking": "思考", - "catalogTab": "Catalog", - "freeCreditsTab": "Free credits", - "freeCreditsSubtitle": "Referral links from Radar-tracked providers — using them costs you nothing extra and helps support OmniRoute.", - "fixedLinksEmpty": "No referral links available yet. Sync Radar to check for updates.", - "requiredActionLabel": "What to do:", - "claimButton": "Claim credits", - "campaignsTitle": "Limited-time campaigns", - "campaignsEmpty": "No active campaigns right now — check back later.", - "campaignsUpsellCommunity": "Limited-time campaigns are a supporter extra. Everything on this page's fixed links stays free for everyone.", - "campaignsValidUntil": "Valid until {date}", - "colActions": "Actions", - "localBadge": "local", - "editModel": "Edit", - "saveModel": "Save", - "cancelEdit": "Cancel", - "resetModel": "Reset local changes", - "hideModel": "Hide", - "restoreModel": "Restore", - "hiddenModelsTitle": "Hidden models", - "modelDisplayName": "Local display name", - "modelEnabled": "Enabled locally", - "localStateSaveFailed": "Failed to save local Radar settings", - "guidedCombos": "Guided combos", - "offers": "Offers", - "intel": "Intel", - "accessScaleTitle": "__MISSING__:Understand Radar access before activating", - "accessScaleIntro": "__MISSING__:Radar stays network-inert until you opt in. Choose Community access or activate a personal supporter key after reviewing these rules.", - "accessCommunityRule": "__MISSING__:Community — no key required: the complete catalog with a 30-day delay.", - "accessSingleUseRule": "__MISSING__:Star + follow — after GitHub OAuth verifies both, your GitHub account receives one live catalog read; then access returns to Community. This one-time access cannot be reissued for that account.", - "accessContributorRule": "__MISSING__:Contributors — merged PRs, commits, and lines only order the weekly ranking. Top 10 receive 365 days; ranks 11–100 receive 90 days; contributors outside the Top 100 receive no grant regardless of PR count. Leaving the ranking never shortens time already granted.", - "accessSupporterRule": "__MISSING__:Supporters — one-time purchases grant 6 months, 1 year, or lifetime with no automatic renewal. Purchases, donations, contributor periods, and manual grants accumulate; lifetime always prevails.", - "accessUseTitle": "__MISSING__:Personal use, recovery, and review", - "accessInstallationRule": "__MISSING__:Personal license — use the key on one active installation at a time. OmniRoute does not fingerprint hardware. Recovery revokes and replaces a lost key without resetting its expiration.", - "accessAbuseRule": "__MISSING__:Abuse review — the 4th distinct IP in 24 hours creates a manual review flag only; it never blocks or revokes a key automatically.", - "accessOffersRule": "__MISSING__:Live offers are manually curated and may change or expire.", - "privacyTitle": "__MISSING__:What Radar exchanges", - "privacyDownloadsRule": "__MISSING__:Downloads — your installation receives cryptographically signed catalog and referral metadata; a valid live key also unlocks signed offers and Intel.", - "privacySendsRule": "__MISSING__:Sends — server-side sync sends the supporter key as a Bearer token, and the HTTPS infrastructure receives the connection IP. Feed-request accounting stores neither value raw: it keeps key hashes, aggregate usage, and a daily rotating truncated IP HMAC for abuse review.", - "privacyNeverRule": "__MISSING__:Never collected — prompts, responses, conversations, provider credentials, model traffic, uptime, latency, and local provider configuration are never sent to Radar." + "catalogTab": "目錄", + "freeCreditsTab": "免費額度", + "freeCreditsSubtitle": "來自 Radar 追蹤之提供者的推薦連結——使用這些連結不會產生任何額外費用,並有助於支持 OmniRoute。", + "fixedLinksEmpty": "目前尚無可用的推薦連結。請同步 Radar 以檢查更新。", + "requiredActionLabel": "操作方式:", + "claimButton": "領取額度", + "campaignsTitle": "限時活動", + "campaignsEmpty": "目前沒有進行中的活動——請稍後再回來查看。", + "campaignsUpsellCommunity": "限時活動是支持者的額外福利。此頁面上的所有固定連結仍可供所有人免費使用。", + "campaignsValidUntil": "有效期至 {date}", + "colActions": "操作", + "localBadge": "本機", + "editModel": "編輯", + "saveModel": "儲存", + "cancelEdit": "取消", + "resetModel": "重設本機變更", + "hideModel": "隱藏", + "restoreModel": "還原", + "hiddenModelsTitle": "隱藏的模型", + "modelDisplayName": "本機顯示名稱", + "modelEnabled": "已在本機啟用", + "localStateSaveFailed": "無法儲存本機 Radar 設定", + "guidedCombos": "引導式組合", + "offers": "優惠", + "intel": "情報" }, "radarCombosPage": { - "title": "Radar guided combos", - "subtitle": "Create priority fallbacks from equivalent free models curated by Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading combo suggestions...", - "familyLabel": "Model family", - "modelsLabel": "Priority order", - "strategyReason": "Priority uses the largest recurring free budget first, then falls back across active providers.", - "generateButton": "Generate combo", - "generating": "Generating...", - "alreadyCreated": "Already created", - "created": "Combo created", - "noSuggestions": "No eligible model family currently has active connections to at least two providers.", - "catalogRequired": "Sync the Radar catalog first to load curated model families.", - "loadFailed": "Failed to load Radar combo suggestions.", - "createFailed": "Failed to create the combo. Review your provider connections and try again." + "title": "Radar 引導式組合", + "subtitle": "使用 Radar 精選的同等免費模型建立優先備援。", + "backToRadar": "返回 Radar", + "loading": "正在載入組合建議...", + "familyLabel": "模型系列", + "modelsLabel": "優先順序", + "strategyReason": "優先使用最大的定期免費額度,然後在可用的提供者之間進行備援。", + "generateButton": "產生組合", + "generating": "正在產生...", + "alreadyCreated": "已建立", + "created": "組合已建立", + "noSuggestions": "目前沒有任何符合資格的模型系列與至少兩個提供者建立有效連線。", + "catalogRequired": "請先同步 Radar 目錄,以載入精選模型系列。", + "loadFailed": "無法載入 Radar 組合建議。", + "createFailed": "無法建立組合。請檢查您的提供者連線,然後再試一次。" }, "radarSetupPage": { "title": "提供者設置", @@ -13538,12 +13549,12 @@ }, "resilienceConnections": { "title": "連線韌性", - "reassuranceTitle": "Your connections recover automatically", - "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.", + "reassuranceTitle": "您的連線會自動恢復", + "reassuranceDetail": "通常不需要採取任何動作。OmniRoute 會在連線失敗後暫停使用該連線,稍後再安全地重試。", "plainStates": { - "healthy": "Requests can be sent", - "coolingDown": "Trying again soon", - "lockedOut": "Needs your attention" + "healthy": "可以傳送請求", + "coolingDown": "即將重試", + "lockedOut": "需要您處理" }, "table": { "status": "狀態", @@ -13642,8 +13653,8 @@ } }, "featureFlagCapabilityFilterEnabledDescription": "在目標模型缺乏所需功能(視覺、工具、結構化輸出、上下文窗口)時,拒絕發送前的請求。保護繞過組合層兼容性過濾器的直接單一提供者請求。", - "featureFlagDisableContextWindowChecksDescription": "Skip OmniRoute's local context-window and max-input-token check for direct single-model requests. Upstream providers still enforce their actual limits. Prompt compression and output-token caps remain active.", - "featureFlagSearchStatsHideDeletedConnectionsDescription": "Search stats and recent searches only count providers that still have a live connection (keyless providers such as duckduckgo-free always count). Off keeps every retained search row with a provider id.", + "featureFlagDisableContextWindowChecksDescription": "對直接的單一模型請求,略過 OmniRoute 的本機上下文視窗與輸入權杖上限檢查。上游提供者仍會強制執行其實際限制。提示詞壓縮與輸出權杖上限仍會生效。", + "featureFlagSearchStatsHideDeletedConnectionsDescription": "搜尋統計資料與最近的搜尋只會計入仍有有效連線的提供者(不需要金鑰的提供者,例如 duckduckgo-free,則一律會計入)。關閉後,將保留每一筆含有提供者 ID 的搜尋記錄。", "publicSystem": { "notFound": { "title": "找不到頁面", @@ -13699,7 +13710,7 @@ "maintenanceInfo": "維護資訊", "service": "服務", "unknown": "未知", - "notAvailable": "n/a", + "notAvailable": "不適用", "providersTracked": "已追蹤的提供者", "circuitBreakerState": "提供者電路斷路器狀態", "lastUpdate": "最後更新:{timestamp}", @@ -14070,11 +14081,11 @@ "actionApprove": "核准計畫", "actionCancel": "取消", "actionSeeInGraph": "在圖中檢視", + "actionRepeat": "重複", "actionDone": "動作已套用", "actionFailed": "動作失敗:{error}", "detailFailed": "載入詳細資料失敗:{error}", "mirroredInA2A": "已在 A2A 中鏡射", - "actionRepeat": "重複", "repeatConfirm": "再次點擊以確認", "repeatDone": "已建立新的執行", "repeatUnavailable": "原始輸入無法使用" @@ -14088,57 +14099,57 @@ "networkError": "網絡錯誤 — 無法更新提供者曝光設置" }, "radarOffersPage": { - "title": "Supporter offers", - "subtitle": "Official discounts, credits, trials, and reviewed partner benefits from Radar.", - "backToRadar": "Back to Radar", - "loading": "Loading offers...", - "refresh": "Refresh offers", - "refreshing": "Refreshing...", - "loadFailed": "We couldn't refresh offers. The last verified local cache is kept.", - "empty": "No active offers are available right now.", - "keyRequiredTitle": "A supporter key is required", - "keyRequiredDescription": "Offers are a live Radar benefit. Add an existing supporter key on the Radar screen, verify your contributor status, or support the project to obtain one.", - "contributorButton": "I'm a contributor", - "supporterButton": "Support the project", - "partnerBadge": "Partner", - "officialBadge": "Official", - "conditionsLabel": "Conditions:", - "validUntil": "Valid until {date}", - "noExpiry": "No announced expiry", - "openOffer": "View offer", - "trialDays": "{days, plural, one {# day} other {# days}}" + "title": "支持者優惠", + "subtitle": "來自 Radar 的官方折扣、點數、試用方案與經審核的合作夥伴福利。", + "backToRadar": "返回 Radar", + "loading": "正在載入優惠...", + "refresh": "重新整理優惠", + "refreshing": "正在重新整理...", + "loadFailed": "我們無法重新整理優惠。已保留上次驗證的本機快取。", + "empty": "目前沒有可用的有效優惠。", + "keyRequiredTitle": "需要支持者金鑰", + "keyRequiredDescription": "優惠是 Radar 的即時福利。請在 Radar 畫面新增現有的支持者金鑰、驗證您的貢獻者身分,或支持此專案以取得金鑰。", + "contributorButton": "我是貢獻者", + "supporterButton": "支持此專案", + "partnerBadge": "合作夥伴", + "officialBadge": "官方", + "conditionsLabel": "條件:", + "validUntil": "有效期限至 {date}", + "noExpiry": "未公告到期日", + "openOffer": "查看優惠", + "trialDays": "{days, plural, one {# 天} other {# 天}}" }, "radarIntelPage": { - "title": "Radar Intel", - "subtitle": "Radar-owned ELO rankings and factual catalog movement.", - "backToRadar": "Back to Radar", - "loading": "Loading Intel...", - "refresh": "Refresh Intel", - "syncing": "Refreshing...", - "loadFailed": "We could not refresh Intel. The last verified local cache is kept.", - "empty": "No verified Intel snapshot is available yet.", - "supporterBadge": "Radar Supporter", - "methodology": "Methodology", - "eloMethod": "ELO, initial {initial}, K={factor}", - "freshness": "Catalog freshness", - "ageDays": "{days, plural, one {# day old} other {# days old}}", - "trend": "Catalog trend", - "modelDelta": "{current} models, +{added} / -{removed}", - "ranking": "Model ranking", - "noRankings": "No confirmed comparisons are available yet.", - "model": "Model", - "category": "Category", - "rating": "Rating", - "matches": "Matches", + "title": "Radar 情報", + "subtitle": "Radar 自有的 ELO 排名與基於事實的目錄變動資訊。", + "backToRadar": "返回 Radar", + "loading": "正在載入情報...", + "refresh": "重新整理情報", + "syncing": "正在重新整理...", + "loadFailed": "無法重新整理情報。已保留最後驗證的本機快取。", + "empty": "目前尚無可用的已驗證情報快照。", + "supporterBadge": "雷達支持者", + "methodology": "方法論", + "eloMethod": "ELO,初始值 {initial},K={factor}", + "freshness": "目錄新鮮度", + "ageDays": "{days, plural, one {# 天前} other {# 天前}}", + "trend": "目錄趨勢", + "modelDelta": "{current} 個模型,+{added} / -{removed}", + "ranking": "模型排名", + "noRankings": "目前尚無已確認的比較結果。", + "model": "模型", + "category": "類別", + "rating": "評分", + "matches": "對戰次數", "freshnessValues": { - "fresh": "Fresh", - "aging": "Aging", - "stale": "Stale" + "fresh": "最新", + "aging": "逐漸過時", + "stale": "已過時" }, "trendValues": { - "growing": "Growing", - "stable": "Stable", - "shrinking": "Shrinking" + "growing": "成長中", + "stable": "穩定", + "shrinking": "縮減中" } }, "capabilityFilter": { @@ -14148,11 +14159,11 @@ "contextWindowMismatch": "請求超出提供者上下文窗口" }, "cheaperInferenceSponsorBanner": { - "title": "Cheaper Inference is an OmniRoute Open Source Friend", - "description": "A cost-ranked gateway reselling dozens of frontier models behind one OpenAI-compatible endpoint — routing each request to the cheapest eligible provider, never above list price.", - "cta": "Get an API Key", - "partnerLinkNote": "Partner link", - "dismissAriaLabel": "Dismiss" + "title": "Cheaper Inference 是 OmniRoute 的開源夥伴", + "description": "一個按成本排名的閘道,透過單一 OpenAI 相容端點轉售數十種前沿模型——將每個請求路由至符合資格且最便宜的提供者,價格絕不高於定價。", + "cta": "取得 API 金鑰", + "partnerLinkNote": "合作夥伴連結", + "dismissAriaLabel": "關閉" }, - "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "Disable the generation of thinking level variants (e.g. -low, -medium, -high) in the /v1/models catalog." + "featureFlagOmnirouteDisableThinkingLevelVariantsDescription": "停用在 /v1/models 目錄中產生思考層級變體(例如 -low、-medium、-high)。" } diff --git a/tests/unit/i18n-cli-namespaces.test.ts b/tests/unit/i18n-cli-namespaces.test.ts index 0922791050..52ae41a3f3 100644 --- a/tests/unit/i18n-cli-namespaces.test.ts +++ b/tests/unit/i18n-cli-namespaces.test.ts @@ -25,17 +25,18 @@ test("pt-BR has acpAgents namespace", () => { }); // ─── PT-BR page titles ──────────────────────────────────────────────────────── +// PR-4 retranslated the verbatim-English page titles; pt-BR now carries real Portuguese. -test("pt-BR cliCode.pageTitle is 'CLI Code's'", () => { - assert.equal(pt.cliCode.pageTitle, "CLI Code's"); +test("pt-BR cliCode.pageTitle is 'Códigos da CLI'", () => { + assert.equal(pt.cliCode.pageTitle, "Códigos da CLI"); }); -test("pt-BR cliAgents.pageTitle is 'CLI Agents'", () => { - assert.equal(pt.cliAgents.pageTitle, "CLI Agents"); +test("pt-BR cliAgents.pageTitle is 'Agentes de CLI'", () => { + assert.equal(pt.cliAgents.pageTitle, "Agentes de CLI"); }); -test("pt-BR acpAgents.pageTitle is 'ACP Agents'", () => { - assert.equal(pt.acpAgents.pageTitle, "ACP Agents"); +test("pt-BR acpAgents.pageTitle is 'Agentes ACP'", () => { + assert.equal(pt.acpAgents.pageTitle, "Agentes ACP"); }); // ─── PT-BR cliCommon content ────────────────────────────────────────────────── diff --git a/tests/unit/i18n-home-recent-requests-topology-legend.test.ts b/tests/unit/i18n-home-recent-requests-topology-legend.test.ts index 2dd0e7560d..7ae9ccecb6 100644 --- a/tests/unit/i18n-home-recent-requests-topology-legend.test.ts +++ b/tests/unit/i18n-home-recent-requests-topology-legend.test.ts @@ -53,7 +53,21 @@ const COGNATES = new Set([ // "Model" is the correct Croatian and Slovenian word; there is nothing to translate. "hr.home.recentRequestsModel", "sl.home.recentRequestsModel", - // "Model" is also the Uzbek word (plural "modellar"); the catalog uses it consistently. + // PR-4 retranslated every verbatim-English leaf and these came back unchanged: "Model" is + // also the word in Azerbaijani, Czech, Danish, Indonesian, Malay, Dutch, Polish, Romanian, + // Slovak, Turkish and Uzbek; "Recent" is Dutch; "Error" is the Filipino loanword. + "az.home.recentRequestsModel", + "cs.home.recentRequestsModel", + "da.home.recentRequestsModel", + "id.home.recentRequestsModel", + "ms.home.recentRequestsModel", + "nl.home.recentRequestsModel", + "nl.home.topologyLegendRecent", + "phi.home.topologyLegendError", + "pl.home.recentRequestsModel", + "ro.home.recentRequestsModel", + "sk.home.recentRequestsModel", + "tr.home.recentRequestsModel", "uz.home.recentRequestsModel", ]); diff --git a/tests/unit/i18n-sync-ui-keys-retranslate.test.ts b/tests/unit/i18n-sync-ui-keys-retranslate.test.ts new file mode 100644 index 0000000000..28bb5372ea --- /dev/null +++ b/tests/unit/i18n-sync-ui-keys-retranslate.test.ts @@ -0,0 +1,37 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { markIdenticalAsMissing } from "../../scripts/i18n/sync-ui-keys.mjs"; + +// PR-4 of the locale expansion: `sync-ui-keys --retranslate-identical` turns every leaf that +// is still a verbatim copy of the English value (outside `untranslatable-keys.json`) back into +// a `__MISSING__:` placeholder so `--translate-markers` retranslates it. + +test("markIdenticalAsMissing flags English leaves as placeholders and skips the allowlist", () => { + const source = { common: { save: "Save", brand: "OmniRoute" }, x: { y: "Delete" } }; + const merged = { common: { save: "Save", brand: "OmniRoute" }, x: { y: "Excluir" } }; + const n = markIdenticalAsMissing(merged, source, new Set(["common.brand"])); + assert.equal(n, 1); + assert.deepEqual(merged, { + common: { save: "__MISSING__:Save", brand: "OmniRoute" }, + x: { y: "Excluir" }, + }); +}); + +test("markIdenticalAsMissing leaves existing placeholders, translations and empty strings alone", () => { + const source = { a: "Alpha", b: "Beta", c: "", d: { e: "Echo" } }; + const merged = { a: "__MISSING__:Alpha", b: "Bêta", c: "", d: { e: "Echo" } }; + const n = markIdenticalAsMissing(merged, source, new Set()); + assert.equal(n, 1); + assert.equal(merged.a, "__MISSING__:Alpha"); + assert.equal(merged.b, "Bêta"); + assert.equal(merged.c, ""); + assert.equal(merged.d.e, "__MISSING__:Echo"); +}); + +test("markIdenticalAsMissing never counts a leaf whose target is missing or a different shape", () => { + const source = { a: "Alpha", nested: { b: "Bravo" } }; + const merged = { nested: "Bravo" }; + const n = markIdenticalAsMissing(merged, source, new Set()); + assert.equal(n, 0); + assert.deepEqual(merged, { nested: "Bravo" }); +});